From 507381640f8fda1d6a3a666c159529b95859a70c Mon Sep 17 00:00:00 2001 From: Kevin Date: Wed, 24 Nov 2021 19:00:23 +0100 Subject: [PATCH 1/3] Added cert fetcher --- README.md | 4 + package-lock.json | 6951 +++++++++++++++++++++++++++++++++++++++++++- package.json | 6 +- src/certs.json | 2075 ++++++++++++- tool/FetchCerts.js | 86 + 5 files changed, 9083 insertions(+), 39 deletions(-) create mode 100644 tool/FetchCerts.js diff --git a/README.md b/README.md index a08908d..c89f8ad 100644 --- a/README.md +++ b/README.md @@ -283,6 +283,10 @@ Using the npx command that comes with node.js the typescript and webpack binarie project can be used. This is the intended way. The scripts inside package.json use npx to perform the various tasks. +``` +// update certs.json with +npm run fetch +``` ``` // for building a production build use diff --git a/package-lock.json b/package-lock.json index d1683a5..41b7a2c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,8 +1,6847 @@ { "name": "eudgc", - "version": "1.0.3", - "lockfileVersion": 1, + "version": "1.0.6", + "lockfileVersion": 2, "requires": true, + "packages": { + "": { + "version": "1.0.6", + "license": "Apache-2.0", + "dependencies": { + "assert": "^2.0.0", + "base45": "^2.0.1", + "bignumber.js": "^9.0.1", + "browserify-zlib": "^0.2.0", + "cbor-web": "^7.0.5", + "crypto-browserify": "^3.12.0", + "process": "^0.11.10", + "stream-browserify": "^3.0.0", + "util": "^0.12.4" + }, + "devDependencies": { + "@fidm/x509": "^1.2.1", + "@types/bignumber.js": "^5.0.0", + "@types/webpack-env": "^1.16.1", + "axios": "^0.24.0", + "buffer": "^6.0.3", + "install": "^0.13.0", + "ts-loader": "^9.2.3", + "typescript": "^4.3.5", + "webpack": "^5.41.1", + "webpack-cli": "^4.7.2", + "webpack-dev-server": "^3.11.2" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", + "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@fidm/asn1": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@fidm/asn1/-/asn1-1.0.4.tgz", + "integrity": "sha512-esd1jyNvRb2HVaQGq2Gg8Z0kbQPXzV9Tq5Z14KNIov6KfFD6PTaRIO8UpcsYiTNzOqJpmyzWgVTrUwFV3UF4TQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@fidm/x509": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@fidm/x509/-/x509-1.2.1.tgz", + "integrity": "sha512-nwc2iesjyc9hkuzcrMCBXQRn653XuAUKorfWM8PZyJawiy1QzLj4vahwzaI25+pfpwOLvMzbJ0uKpWLDNmo16w==", + "dev": true, + "dependencies": { + "@fidm/asn1": "^1.0.4", + "tweetnacl": "^1.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/bignumber.js": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/bignumber.js/-/bignumber.js-5.0.0.tgz", + "integrity": "sha512-0DH7aPGCClywOFaxxjE6UwpN2kQYe9LwuDQMv+zYA97j5GkOMo8e66LYT+a8JYU7jfmUFRZLa9KycxHDsKXJCA==", + "deprecated": "This is a stub types definition for bignumber.js (https://github.com/MikeMcl/bignumber.js/). bignumber.js provides its own type definitions, so you don't need @types/bignumber.js installed!", + "dev": true, + "dependencies": { + "bignumber.js": "*" + } + }, + "node_modules/@types/eslint": { + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.2.13.tgz", + "integrity": "sha512-LKmQCWAlnVHvvXq4oasNUMTJJb2GwSyTY8+1C7OH5ILR8mPLaljv1jxL1bXW3xB3jFbQxTKxJAvI8PyjB09aBg==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.0.tgz", + "integrity": "sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.48", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz", + "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==", + "dev": true + }, + "node_modules/@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", + "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.0.0.tgz", + "integrity": "sha512-TmCW5HoZ2o2/z2EYi109jLqIaPIi9y/lc2LmDCWzuCi35bcaQ+OtUh6nwBiFK7SOu25FAU5+YKdqFZUwtqGSdg==", + "dev": true + }, + "node_modules/@types/webpack-env": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.16.2.tgz", + "integrity": "sha512-vKx7WNQNZDyJveYcHAm9ZxhqSGLYwoyLhrHjLBOkw3a7cT76sTdjgtwyijhk1MaHyRIuSztcVwrUOO/NEu68Dw==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", + "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", + "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", + "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", + "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", + "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", + "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", + "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", + "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", + "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", + "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", + "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/helper-wasm-section": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-opt": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "@webassemblyjs/wast-printer": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", + "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", + "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-buffer": "1.11.0", + "@webassemblyjs/wasm-gen": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", + "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/helper-wasm-bytecode": "1.11.0", + "@webassemblyjs/ieee754": "1.11.0", + "@webassemblyjs/leb128": "1.11.0", + "@webassemblyjs/utf8": "1.11.0" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", + "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.0", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.4.tgz", + "integrity": "sha512-cs3XLy+UcxiP6bj0A6u7MLLuwdXJ1c3Dtc0RkKg+wiI1g/Ti1om8+/2hc2A2B60NbBNAbMgyBMHvyymWm/j4wQ==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.3.0.tgz", + "integrity": "sha512-ASiVB3t9LOKHs5DyVUcxpraBXDOKubYu/ihHhU+t1UPpxsivg6Od2E2qU4gJCekfEddzRBzHhzA/Acyw/mlK/w==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.5.1.tgz", + "integrity": "sha512-4vSVUiOPJLmr45S8rMGy7WDvpWxfFxfP/Qx/cxZFCfvoypTYpPPL1X8VIZMe0WTA+Jr7blUxwUSEZNkjoMTgSw==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", + "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true, + "peerDependencies": { + "ajv": ">=5.0.0" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/anymatch/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/anymatch/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/assert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "dependencies": { + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz", + "integrity": "sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.4" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base45": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/base45/-/base45-2.0.1.tgz", + "integrity": "sha512-Cr2mmczMfOQSkt9OyzpUpUNWKCurLpYhCjkN+yPXicjEc47gkN9LbklR3c7dUrpcPonjoAyZp7bZQChRRg4G1Q==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/bignumber.js": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" + }, + "node_modules/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserify-zlib/node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/browserslist": { + "version": "4.16.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", + "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "dev": true, + "dependencies": { + "caniuse-lite": "^1.0.30001219", + "colorette": "^1.2.2", + "electron-to-chromium": "^1.3.723", + "escalade": "^3.1.1", + "node-releases": "^1.1.71" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001242", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001242.tgz", + "integrity": "sha512-KvNuZ/duufelMB3w2xtf9gEWCSxJwUgoxOx5b6ScLXC4kPc9xsczUVCPrQU26j5kOsHM4pSUL54tAZt5THQKug==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } + }, + "node_modules/cbor-web": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/cbor-web/-/cbor-web-7.0.5.tgz", + "integrity": "sha512-5Eu4lG6A/8wkFRgV3gbDoYMj1tlYQ/MautPq4aPh5Ha/DFGLQtBPE/fT4kdE0ZPt8BubTV4glBnorsAM68/HJQ==", + "peerDependencies": { + "bignumber.js": "^9.0.1" + }, + "peerDependenciesMeta": { + "bignumber.js": { + "optional": true + } + } + }, + "node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", + "dev": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/chokidar/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chokidar/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", + "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "dependencies": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/default-gateway/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/default-gateway/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/default-gateway/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/default-gateway/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/default-gateway/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "node_modules/dns-packet": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", + "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", + "dev": true, + "dependencies": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "dependencies": { + "buffer-indexof": "^1.0.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.3.768", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.768.tgz", + "integrity": "sha512-I4UMZHhVSK2pwt8jOIxTi3GIuc41NkddtKT/hpuxp9GO5UWJgDKTBa4TACppbVAuKtKbMK6BhQZvT5tFF1bcNA==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz", + "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/es-abstract": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", + "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.10.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.6.0.tgz", + "integrity": "sha512-f8kcHX1ArhllUtb/wVSyvygoKCznIjnxhLxy7TCvIiMdT7fL4ZDTIKaadMe6eLvOXg6Wk02UeoFgUoZ2EKZZUA==", + "dev": true + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/eventsource": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz", + "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==", + "dev": true, + "dependencies": { + "original": "^1.0.0" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extend-shallow/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", + "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/http-parser-js": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz", + "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "dependencies": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/http-proxy-middleware/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/install": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", + "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "dependencies": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dependencies": { + "call-bind": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.9.tgz", + "integrity": "sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-string": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.5.tgz", + "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", + "dependencies": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.2", + "es-abstract": "^1.18.0-next.2", + "foreach": "^2.0.5", + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.0.6", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz", + "integrity": "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "node_modules/killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/loglevel": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/memory-fs/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/memory-fs/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/memory-fs/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "dev": true, + "dependencies": { + "mime-db": "1.48.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mixin-deep/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "dependencies": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "node_modules/nan": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", + "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "dev": true, + "optional": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/node-releases": { + "version": "1.1.73", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", + "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "dependencies": { + "url-parse": "^1.4.3" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "dependencies": { + "retry": "^0.12.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/readdirp/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readdirp/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/readdirp/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readdirp/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.0.tgz", + "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", + "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "dev": true, + "dependencies": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/schema-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.0.tgz", + "integrity": "sha512-tTEaeYkyIhEZ9uWgAjDerWov3T9MgX8dhhy2r0IGeeX4W8ngtGl1++dUve/RUqzuaASSh7shwCDJjEzthxki8w==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.7", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/selfsigned": { + "version": "1.10.11", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz", + "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==", + "dev": true, + "dependencies": { + "node-forge": "^0.10.0" + } + }, + "node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.21", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz", + "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^3.4.0", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sockjs-client": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz", + "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==", + "dev": true, + "dependencies": { + "debug": "^3.2.6", + "eventsource": "^1.0.7", + "faye-websocket": "^0.11.3", + "inherits": "^2.0.4", + "json3": "^3.3.3", + "url-parse": "^1.5.1" + } + }, + "node_modules/sockjs-client/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/sockjs-client/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tapable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", + "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.1.4.tgz", + "integrity": "sha512-C2WkFwstHDhVEmsmlCxrXUtVklS+Ir1A7twrYzrDrQQOIMOaVAYykaoo/Aq1K0QRkMoY2hhvDQY1cm4jnIMFwA==", + "dev": true, + "dependencies": { + "jest-worker": "^27.0.2", + "p-limit": "^3.1.0", + "schema-utils": "^3.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-loader": { + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.2.3.tgz", + "integrity": "sha512-sEyWiU3JMHBL55CIeC4iqJQadI0U70A5af0kvgbNLHVNz2ACztQg0j/9x10bjjIht8WfFYLKfn4L6tkZ+pu+8Q==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "safe-buffer": "^5.1.2", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/watchpack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.2.0.tgz", + "integrity": "sha512-up4YAn/XHgZHIxFBVCdlMiWDj6WaLKpwVeGQk2I5thdYxF/KmF0aaz6TfJZ/hfl1h/XlcDr7k1KH7ThDagpFaA==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webpack": { + "version": "5.42.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.42.1.tgz", + "integrity": "sha512-msikozzXrG2Hdx+dElq0fyNvxPFsaM2dKLc/l+xkMmhO/1qwVJ9K9gY+fi/49MYWcpSP7alnK5Q78Evrd1LiqQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.0", + "@types/estree": "^0.0.48", + "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/wasm-edit": "1.11.0", + "@webassemblyjs/wasm-parser": "1.11.0", + "acorn": "^8.4.1", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.8.0", + "es-module-lexer": "^0.6.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.4", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.0.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.2.0", + "webpack-sources": "^2.3.0" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.7.2.tgz", + "integrity": "sha512-mEoLmnmOIZQNiRl0ebnjzQ74Hk0iKS5SiEEnpq3dRezoyR3yPaeQZCMCe+db4524pj1Pd5ghZXjT41KLzIhSLw==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.0.4", + "@webpack-cli/info": "^1.3.0", + "@webpack-cli/serve": "^1.5.1", + "colorette": "^1.2.1", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "v8-compile-cache": "^2.2.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", + "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", + "dev": true, + "dependencies": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack-dev-server": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", + "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", + "dev": true, + "dependencies": { + "ansi-html-community": "0.0.8", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.8", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "sockjs-client": "^1.5.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 6.11.5" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-dev-server/node_modules/import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "dependencies": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/webpack-dev-server/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-dev-server/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-dev-server/node_modules/resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-dev-server/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "dependencies": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/webpack-dev-server/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/webpack-dev-server/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "dependencies": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.0.tgz", + "integrity": "sha512-WyOdtwSvOML1kbgtXbTDnEW0jkJ7hZr/bDByIwszhWd/4XX1A3XMkrbFMsuH4+/MfLlZCUzlAdg4r7jaGKEIgQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "node_modules/which-typed-array": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", + "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", + "dependencies": { + "available-typed-arrays": "^1.0.2", + "call-bind": "^1.0.0", + "es-abstract": "^1.18.0-next.1", + "foreach": "^2.0.5", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.1", + "is-typed-array": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dev": true, + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, "dependencies": { "@discoveryjs/json-ext": { "version": "0.5.3", @@ -10,6 +6849,22 @@ "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==", "dev": true }, + "@fidm/asn1": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@fidm/asn1/-/asn1-1.0.4.tgz", + "integrity": "sha512-esd1jyNvRb2HVaQGq2Gg8Z0kbQPXzV9Tq5Z14KNIov6KfFD6PTaRIO8UpcsYiTNzOqJpmyzWgVTrUwFV3UF4TQ==", + "dev": true + }, + "@fidm/x509": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@fidm/x509/-/x509-1.2.1.tgz", + "integrity": "sha512-nwc2iesjyc9hkuzcrMCBXQRn653XuAUKorfWM8PZyJawiy1QzLj4vahwzaI25+pfpwOLvMzbJ0uKpWLDNmo16w==", + "dev": true, + "requires": { + "@fidm/asn1": "^1.0.4", + "tweetnacl": "^1.0.1" + } + }, "@types/bignumber.js": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@types/bignumber.js/-/bignumber.js-5.0.0.tgz", @@ -229,7 +7084,8 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.0.4.tgz", "integrity": "sha512-cs3XLy+UcxiP6bj0A6u7MLLuwdXJ1c3Dtc0RkKg+wiI1g/Ti1om8+/2hc2A2B60NbBNAbMgyBMHvyymWm/j4wQ==", - "dev": true + "dev": true, + "requires": {} }, "@webpack-cli/info": { "version": "1.3.0", @@ -244,7 +7100,8 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.5.1.tgz", "integrity": "sha512-4vSVUiOPJLmr45S8rMGy7WDvpWxfFxfP/Qx/cxZFCfvoypTYpPPL1X8VIZMe0WTA+Jr7blUxwUSEZNkjoMTgSw==", - "dev": true + "dev": true, + "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", @@ -290,13 +7147,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true + "dev": true, + "requires": {} }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "requires": {} }, "ansi-colors": { "version": "3.2.4", @@ -304,10 +7163,10 @@ "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", "dev": true }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true }, "ansi-regex": { @@ -561,6 +7420,15 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz", "integrity": "sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA==" }, + "axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.4" + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -623,9 +7491,9 @@ } }, "base45": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/base45/-/base45-3.0.0.tgz", - "integrity": "sha512-SWayzDiUFaga+G3X/oL2XIDbjhdpmBGUqLU6T7zB89aNWYnEcfa36DIWW95rxn0sWAWbwrKcSyqcWw6AApYwsg==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/base45/-/base45-2.0.1.tgz", + "integrity": "sha512-Cr2mmczMfOQSkt9OyzpUpUNWKCurLpYhCjkN+yPXicjEc47gkN9LbklR3c7dUrpcPonjoAyZp7bZQChRRg4G1Q==" }, "base64-js": { "version": "1.5.1", @@ -803,6 +7671,13 @@ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "requires": { "pako": "~1.0.5" + }, + "dependencies": { + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + } } }, "browserslist": { @@ -892,7 +7767,8 @@ "cbor-web": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/cbor-web/-/cbor-web-7.0.5.tgz", - "integrity": "sha512-5Eu4lG6A/8wkFRgV3gbDoYMj1tlYQ/MautPq4aPh5Ha/DFGLQtBPE/fT4kdE0ZPt8BubTV4glBnorsAM68/HJQ==" + "integrity": "sha512-5Eu4lG6A/8wkFRgV3gbDoYMj1tlYQ/MautPq4aPh5Ha/DFGLQtBPE/fT4kdE0ZPt8BubTV4glBnorsAM68/HJQ==", + "requires": {} }, "chalk": { "version": "4.1.1", @@ -2051,9 +8927,9 @@ } }, "follow-redirects": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", - "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz", + "integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA==", "dev": true }, "for-in": { @@ -3472,11 +10348,6 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, "parse-asn1": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", @@ -4553,6 +11424,14 @@ "readable-stream": "^3.5.0" } }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -4599,14 +11478,6 @@ "define-properties": "^1.1.3" } }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -4741,6 +11612,12 @@ "semver": "^7.3.4" } }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -4866,9 +11743,9 @@ } }, "url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", "dev": true, "requires": { "querystringify": "^2.1.1", @@ -5024,12 +11901,12 @@ } }, "webpack-dev-server": { - "version": "3.11.2", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz", - "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==", + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", + "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", "dev": true, "requires": { - "ansi-html": "0.0.7", + "ansi-html-community": "0.0.8", "bonjour": "^3.5.0", "chokidar": "^2.1.8", "compression": "^1.7.4", diff --git a/package.json b/package.json index beece5b..8d750ec 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,9 @@ "version": "1.0.6", "description": "EuDGC (European Digital Green Certificate) handling in Javascript and Typescript", "main": "dist/eudgc.js", + "type": "module", "scripts": { + "fetch": "node tool/FetchCerts.js", "watch": "npx webpack serve --mode=development", "serve": "npx webpack serve --mode=development", "build": "npx webpack --mode=production && cp dist/eudgc.js docs", @@ -23,7 +25,7 @@ "license": "Apache-2.0", "dependencies": { "assert": "^2.0.0", - "base45": "^3.0.0", + "base45": "^2.0.1", "bignumber.js": "^9.0.1", "browserify-zlib": "^0.2.0", "cbor-web": "^7.0.5", @@ -33,8 +35,10 @@ "util": "^0.12.4" }, "devDependencies": { + "@fidm/x509": "^1.2.1", "@types/bignumber.js": "^5.0.0", "@types/webpack-env": "^1.16.1", + "axios": "^0.24.0", "buffer": "^6.0.3", "install": "^0.13.0", "ts-loader": "^9.2.3", diff --git a/src/certs.json b/src/certs.json index 4080d8d..0f8309f 100644 --- a/src/certs.json +++ b/src/certs.json @@ -1 +1,2074 @@ -{"certs":[{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = IBSALUT-CVD-SELLO, serialNumber = Q0719003F, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES-Q0719003F, O = SERVICIO DE SALUD DE LAS ISLAS BALEARES, C = ES","notbefore":1621850400000,"notafter":1684922400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbxlQ/UTz0AxZWF+xQs+w+xveq5Ec\nhe9zf16LnDFYY/K8pZ6l6sb2KlXw8Z/kwopzzbv5LCX1VxLsGO9Rs9OzLg==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = Servicio Extreme\\C3\\B1o de Salud, serialNumber = Q0600413I, OU = SELLO ELECTRONICO, OU = SSII, 2.5.4.97 = VATES-Q0600413I, O = Servicio Extreme\\C3\\B1o de Salud, C = ES","notbefore":1622090580000,"notafter":1685162580000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEManlPIcO9J8UBpHCAbku/KkAfiBr\nGLIre1buTIzhhoncL0YIO+DQ9uPs6UfzPKXzQq791V5I5avhmpQ6j2zFsQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = GERENCIA REGIONAL DE SALUD CASTILLA Y LE\\C3\\93N (SACYL), serialNumber = Q4700608E, OU = SELLO ELECTRONICO, OU = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON, 2.5.4.97 = VATES- Q4700608E, O = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON, C = ES","notbefore":1619782200000,"notafter":1682854200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1Tqtnz\nC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHXDCCBwKgAwIBAgIJDDdEkclPCGsoMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNDMwMTMzMDAwWhcNMjMwNDMwMTMzMDAwWjCCAQYxPDA6BgNVBAMMM0dFUkVOQ0lBIFJFR0lPTkFMIERFIFNBTFVEIENBU1RJTExBIFkgTEXDk04gKFNBQ1lMKTESMBAGA1UEBRMJUTQ3MDA2MDhFMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzE2MDQGA1UECwwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRkwFwYDVQRhDBBWQVRFUy0gUTQ3MDA2MDhFMTYwNAYDVQQKDC1HRVJFTkNJQSBSRUdJT05BTCBERSBTQUxVRCBERSBDQVNUSUxMQSBZIExFT04xCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1TqtnzC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfKOCBKowggSmMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBmgYDVR0RBIGSMIGPpIGMMIGJMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE8MDoGCWCFVAEDBQYCAgwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRgwFgYJYIVUAQMFBgIDDAlRNDcwMDYwOEUwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBR0F5hsHIJ6Y7MLOV4IRJYpbxoKgDAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDSAAwRQIhANiNJAq66hiD/nftp0jcuZQJtkHq0LiGFxpWmKCnCClcAiAVLvoNwAKGUOPPJ88g/UPTytviavcuFfaN9F5Iw0fVhg=="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = Gobierno de La Rioja, serialNumber = S2633001I, OU = SELLO ELECTRONICO, OU = \"DIRECCI\\C3\\93N GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS\", 2.5.4.97 = VATES-S2633001I, O = \"DIRECCION GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS\", C = ES","notbefore":1621580100000,"notafter":1684652100000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqF22rG5bDXpWn/tKy358h2KwYyaS\nKzCZV0HJptUQq7sWxfeDE86HSoebBrpOvpjhZX2/ZkTF/YRlkh0ztnkclw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHVjCCBv2gAwIBAgIJSC0ZeCXmMXCnMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTIxMDg1NTAwWhcNMjMwNTIxMDg1NTAwWjCB+TEdMBsGA1UEAwwUR29iaWVybm8gZGUgTGEgUmlvamExEjAQBgNVBAUTCVMyNjMzMDAxSTEaMBgGA1UECwwRU0VMTE8gRUxFQ1RST05JQ08xQDA+BgNVBAsMN0RJUkVDQ0nDk04gR0VORVJBTCBERSBTQUxVRCBQVUJMSUNBLCBDT05TVU1PIFkgQ1VJREFET1MxGDAWBgNVBGEMD1ZBVEVTLVMyNjMzMDAxSTE/MD0GA1UECgw2RElSRUNDSU9OIEdFTkVSQUwgREUgU0FMVUQgUFVCTElDQSwgQ09OU1VNTyBZIENVSURBRE9TMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKhdtqxuWw16Vp/7Sst+fIdisGMmkiswmVdByabVEKu7FsX3gxPOh0qHmwa6Tr6Y4WV9v2ZExf2EZZIdM7Z5HJejggSzMIIErzAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgaMGA1UdEQSBmzCBmKSBlTCBkjEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xRTBDBglghVQBAwUGAgIMNkRJUkVDQ0lPTiBHRU5FUkFMIERFIFNBTFVEIFBVQkxJQ0EsIENPTlNVTU8gWSBDVUlEQURPUzEYMBYGCWCFVAEDBQYCAwwJUzI2MzMwMDFJMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQU7oukZ17hZNqgXn+9zb1nFVmNAdYwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0cAMEQCIFAVrmKucmULegrWgBKqAHeiiJ6VmRGXBVo5LrvtuXwnAiB0+buKOXmu4gpE5vu2Du0seQ5DdaCsLOS99ZTz6Ea0yw=="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = Secretar\\C3\\ADa General del Servicio Canario de la Salud, serialNumber = Q8555011I, OU = SELLO ELECTRONICO, OU = Secretar\\C3\\ADa General del Servicio Canario de la Salud, 2.5.4.97 = VATES-Q8555011I, O = Servicio Canario de la Salud, C = ES","notbefore":1619781000000,"notafter":1682853000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEblis8RR4Oc4Xqq4RZdhrJ0DnkAvK\n4vY8AamWbFg9T7OG17La8TJYTq3FqJJd5KttTP71GojxRF0REKpF+uwAtw==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = SELLO ELECTRONICO DE LA CIUDAD AUT\\C3\\93NOMA DE MELILLA, serialNumber = S7900010E, OU = SELLO ELECTRONICO, OU = DIRECCI\\C3\\93N GENERAL DE LA SOCIEDAD DE LA INFORMACI\\C3\\93N, 2.5.4.97 = VATES-S7900010E, O = CIUDAD AUT\\C3\\93NOMA DE MELILLA, C = ES","notbefore":1622205900000,"notafter":1685277900000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEe1XUTCn6DkdbSOKlyzczFWQfDvtP\n31uGdjzVCzAkuxorNeEX3F827gnycL/mTzRm8lfDxz64lEUcTww0I7unwA==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = SELLO SAS PARA CERTIFICADO COVID DE LA UE, serialNumber = Q9150013B, OU = SELLO ELECTRONICO, OU = SERVICIO ANDALUZ DE SALUD, 2.5.4.97 = VATES-Q9150013B, O = SERVICIO ANDALUZ DE SALUD, C = ES","notbefore":1621592100000,"notafter":1684664100000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt3OX+XF/LZlHff6ZWiHRqQu4WBrg\nzNZYz4wFJkwkBmk/z0ROsLJ4FlwOLPs2cUEIIV0Pu1cmnngva6+EzQpbAA==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = ES, O = IZENPE S.A., OU = Peer, CN = iCA Izenpe\nValidity","subject":"C = ES, O = EUSKO JAURLARITZA - GOBIERNO VASCO, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES-S4833001C, CN = DIRECCI\\C3\\93N DE SALUD P\\C3\\9ABLICA Y ADICCIONES","notbefore":1622201292000,"notafter":1716895692000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8PO\npQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1Q==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEEjCCA7mgAwIBAgIQA8IozyvkMlFgsO/sU+TnrzAKBggqhkjOPQQDAjBHMQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xDTALBgNVBAsMBFBlZXIxEzARBgNVBAMMCmlDQSBJemVucGUwHhcNMjEwNTI4MTMyODEyWhcNMjQwNTI4MTMyODEyWjCBpDELMAkGA1UEBhMCRVMxKzApBgNVBAoMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08xGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMRgwFgYDVQRhDA9WQVRFUy1TNDgzMzAwMUMxMjAwBgNVBAMMKURJUkVDQ0nDk04gREUgU0FMVUQgUMOaQkxJQ0EgWSBBRElDQ0lPTkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8POpQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1aOCAicwggIjMFoGA1UdEQRTMFGkTzBNMRgwFgYJKwYBBAHzOQAGDAlTNDgzMzAwMUMxMTAvBgkrBgEEAfM5AAUMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08wDgYDVR0PAQH/BAQDAgXgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQWBBRJ5qXgwbq6JnfYaHEo99QEkecqADAfBgNVHSMEGDAWgBRzFw8OFM+MtdUG96YEM8MZfTG+7TCCAR8GA1UdIASCARYwggESMIIBDgYKKwYBBAHzOYFIATCB/zAlBggrBgEFBQcCARYZaHR0cDovL3d3dy5pemVucGUuZXVzL2NwczCB1QYIKwYBBQUHAgIwgcgMgcVLb250c3VsdGEgd3d3Lml6ZW5wZS5ldXMtZW4gYmFsZGludHphayBldGEga29uZGl6aW9hayB6aXVydGFnaXJpYW4gZmlkYXR1IGVkbyBlcmFiaWxpIGF1cnJldGlrIC0gQ29uc3VsdGUgZW4gd3d3Lml6ZW5wZS5ldXMgbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGFudGVzIGRlIHV0aWxpemFyIG8gY29uZmlhciBlbiBlbCBjZXJ0aWZpY2FkbzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsZGVzLml6ZW5wZS5jb20vY2dpLWJpbi9jcmxiY2l6ZW5wZTAKBggqhkjOPQQDAgNHADBEAiBtHbVrpnsLMptmRI5QL4JhOG86pqSBVQXiOUMsIkpcPgIgY/npsrzRMcUHAh7NwvqhnbgWvv1VwbRy3bxD6+o3RGw="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = Servicio C\\C3\\A1ntabro de Salud, serialNumber = Q3900738J, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES-Q3900738J, O = Servicio C\\C3\\A1ntabro de Salud, C = ES","notbefore":1622113080000,"notafter":1685185080000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEj/wPWM6e8JDYxW9673ivEvwlu2JA\nZpsNBrr2sQW5ppku6rcqJUKx7Kbvf2Zx1AJeIS7+PQq2iNcugfD+RC/VfQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = SESCAM Certificado Digital COVID UE, serialNumber = Q4500146H, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES- Q4500146H, O = Servicio de Salud de Castilla-La Mancha, C = ES","notbefore":1621939200000,"notafter":1685011200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDvCuOC6NlQCaL18+CEn4sbjC3NNn\nN4jBAmZo6lrGXbjIfAQ3YWmXc3gqLnSFq84EEV6+2PFy9yyLgq4JmFAfDA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHBzCCBq2gAwIBAgIJUoPmtL83RMWiMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI1MTI0MDAwWhcNMjMwNTI1MTI0MDAwWjCBuDEsMCoGA1UEAwwjU0VTQ0FNIENlcnRpZmljYWRvIERpZ2l0YWwgQ09WSUQgVUUxEjAQBgNVBAUTCVE0NTAwMTQ2SDEaMBgGA1UECwwRU0VMTE8gRUxFQ1RST05JQ08xGTAXBgNVBGEMEFZBVEVTLSBRNDUwMDE0NkgxMDAuBgNVBAoMJ1NlcnZpY2lvIGRlIFNhbHVkIGRlIENhc3RpbGxhLUxhIE1hbmNoYTELMAkGA1UEBhMCRVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQO8K44Lo2VAJovXz4ISfixuMLc02c3iMECZmjqWsZduMh8BDdhaZdzeCoudIWrzgQRXr7Y8XL3LIuCrgmYUB8Mo4IEpDCCBKAwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBTTTGw6vTb+cIcjhzruPZDPy5v3ITB5BggrBgEFBQcBAQRtMGswRAYIKwYBBQUHMAKGOGh0dHA6Ly9jYS5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lYWR0cnVzdC5ldTBjBgNVHRIEXDBagQ5jYUBlYWR0cnVzdC5ldYYWaHR0cDovL3d3dy5lYWR0cnVzdC5ldYYVaHR0cDovL2NhLmVhZHRydXN0LmV1hhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIGUBgNVHREEgYwwgYmkgYYwgYMxLzAtBglghVQBAwUGAgEMIFNFTExPIEVMRUNUUk9OSUNPIERFIE5JVkVMIE1FRElPMTYwNAYJYIVUAQMFBgICDCdTZXJ2aWNpbyBkZSBTYWx1ZCBkZSBDYXN0aWxsYS1MYSBNYW5jaGExGDAWBglghVQBAwUGAgMMCVE0NTAwMTQ2SDCCAZgGA1UdIASCAY8wggGLMAoGCGCFVAEDBQYCMG8GBwQAi+xAAQEwZDBiBggrBgEFBQcCAjBWDFRFdXJvcGVhbiBUZWxlY29tbXVuaWNhdGlvbnMgU3RhbmRhcmRzIEluc3RpdHV0ZS4gZUlEQVMgRXVyb3BlYW4gUmVndWxhdGlvbiBDb21wbGlhbnQwggEKBg4rBgEEAYN1AgEBAILCETCB9zAlBggrBgEFBQcCARYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBzQYIKwYBBQUHAgIwgcAMgb1DZXJ0aWZpY2FkbyBjdWFsaWZpY2FkbyBkZSBzZWxsbyBlbGVjdHLDs25pY28gZGUgQWRtaW5pc3RyYWNpw7NuLCDDs3JnYW5vIG8gZW50aWRhZCBkZSBkZXJlY2hvIHDDumJsaWNvLCBuaXZlbCBNZWRpby9TdXN0YW5jaWFsLiBDb25zdWx0ZSBsYXMgY29uZGljaW9uZXMgZGUgdXNvIGVuIGh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMIHBBggrBgEFBQcBAwSBtDCBsTAVBggrBgEFBQcLAjAJBgcEAIvsSQECMAgGBgQAjkYBATALBgYEAI5GAQMCAQ8wEwYGBACORgEGMAkGBwQAjkYBBgIwbAYGBACORgEFMGIwMBYqaHR0cHM6Ly9lYWR0cnVzdC5ldS9lbi9kb2N1bWVudHMtaW4tZm9yY2UvEwJlbjAuFihodHRwczovL2VhZHRydXN0LmV1L2RvY3VtZW50b3MtdmlnZW50ZXMvEwJlczBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vY3JsLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcmwwHQYDVR0OBBYEFLscJ0BjSAtnCqvC+ftrx00zOR5YMA4GA1UdDwEB/wQEAwIF4DAKBggqhkjOPQQDAgNIADBFAiEAsCVrBVVY0bS808dwSsBk+aHA+/JYgSGO4UpRBQ4SiaUCIDJBWCiAD1T2eZpbJfH+w1hE3g6Io5jg19ndNYDBZ0Y8"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = Inspecci\\C3\\B3n General de Sanidad de la Defensa, serialNumber = S2830001J, OU = SELLO ELECTRONICO, OU = Inspecci\\C3\\B3n General de Sanidad de la Defensa, 2.5.4.97 = VATES-S2830001J, O = Ministerio de Defensa, C = ES","notbefore":1622108340000,"notafter":1685180340000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE62orr7HL0POyQCqmgbbEqfcbcdcT\n4vyfQZEPYfxk69ZRv9T8Iy6nWAyEjF0VxvknfCg/x9uig5HFWrpedW2Epw==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = Consejer\\C3\\ADa de Salud del Principado de Asturias, serialNumber = S3333001J, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES- S3333001J, O = Principado de Asturias, C = ES","notbefore":1621852800000,"notafter":1684924800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUvljql1ZGpwzC92AbO4J751kqnIE\nXaCI8hYUIEArhReqJcx5qClAGSkDFcbrTPV9WuUtmDQ/NpoV+EejqBmlyg==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = Sello Electr\\C3\\B3nico del Servicio Navarro de Salud-Osasunbidea, serialNumber = Q3150004D, OU = SELLO ELECTRONICO, OU = Servicio Navarro de Salud-Osasunbidea, 2.5.4.97 = VATES-Q3150004D, O = Servicio Navarro de Salud-Osasunbidea, C = ES","notbefore":1620977700000,"notafter":1684049700000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4\nB/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgHw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHTDCCBvGgAwIBAgIJfoL0UPrrsbuIMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTE0MDkzNTAwWhcNMjMwNTE0MDkzNTAwWjCB/jFFMEMGA1UEAww8U2VsbG8gRWxlY3Ryw7NuaWNvIGRlbCBTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRIwEAYDVQQFEwlRMzE1MDAwNEQxGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMS4wLAYDVQQLDCVTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRgwFgYDVQRhDA9WQVRFUy1RMzE1MDAwNEQxLjAsBgNVBAoMJVNlcnZpY2lvIE5hdmFycm8gZGUgU2FsdWQtT3Nhc3VuYmlkZWExCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4B/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgH6OCBKIwggSeMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBkgYDVR0RBIGKMIGHpIGEMIGBMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE0MDIGCWCFVAEDBQYCAgwlU2VydmljaW8gTmF2YXJybyBkZSBTYWx1ZC1Pc2FzdW5iaWRlYTEYMBYGCWCFVAEDBQYCAwwJUTMxNTAwMDREMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQUDoSdwvhJkRliLuZyPLYo9xeX1vcwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0kAMEYCIQC5rwYPPmeafyGrOsjX/SeqgFtgrqURrFrnbwC7QvM6MgIhAN4Pl5n+ACj+56aPhHsHRo4xS2ZeXShYFQQpxUCM9R17"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = CEUTA, serialNumber = S6100007A, OU = SELLO ELECTRONICO, OU = CIUDAD AUTONOMA DE CEUTA, 2.5.4.97 = VATES-S6100007A, O = CIUDAD AUTONOMA DE CEUTA, C = ES","notbefore":1620977400000,"notafter":1684049400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgOuoVfBtfKWYpcffhNWfiCf4g4oZ\nBdaPcdrn0HBtkQ/9xYp6FlfFAP1Ze29LaM1emnFxjyQNWV3KeNmoc/vFYA==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = GENERALITAT VALENCIANA, serialNumber = S4611001A, OU = SELLO ELECTRONICO, OU = CONSELLERIA DE SANITAT UNIVERSAL I SALUT P\\C3\\9ABLICA, 2.5.4.97 = VATES-S4611001A, O = GENERALITAT VALENCIANA, C = ES","notbefore":1622192100000,"notafter":1685264100000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV61Sl3v6NzBqyCbqSb8/fBodGle+\nb3RJ7Utk+uExDwbOxzS//2GUTRFKW43ppskyr3G60/xeJCaeN7S9Cvssdg==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = CERT-GENCAT-1S-21, serialNumber = S0811001G, OU = SELLO ELECTRONICO, OU = Departament de Salut, 2.5.4.97 = VATES-S0811001G, O = Departament de Salut de la Generalitat de Catalunya, C = ES","notbefore":1622030400000,"notafter":1685102400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZjrINN6u+ZGfRqaYqgqL+yZZCDl\nu+PKPCkVS/ysPosrontwlhznbPsq5W+d2NyxXeaUAT+lTyRKy1NAxOFqAA==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = DIRECCI\\C3\\93N GENERAL DE SALUD P\\C3\\9ABLICA Y ADICCIONES, serialNumber = S3011001l, OU = SELLO ELECTRONICO, OU = DIRECCION GENERAL INFORMATICA CORPORATIVA, 2.5.4.97 = VATES- S3011001l, O = COMUNIDAD AUTONOMA DE LA REGION DE MURCIA, C = ES","notbefore":1621860600000,"notafter":1684932600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEli8eKthiom9EydKvhg7LHXj/f88/\nZeNUpfEFm6kIAr3K1NCRSv1grJnNiBc9lvggtAjqFHQSGTovtRcGHcVuRA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHTDCCBvOgAwIBAgIJA+zla2386Iy/MAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI0MTQ1MDAwWhcNMjMwNTI0MTQ1MDAwWjCB/DE6MDgGA1UEAwwxRElSRUNDScOTTiBHRU5FUkFMIERFIFNBTFVEIFDDmkJMSUNBIFkgQURJQ0NJT05FUzESMBAGA1UEBRMJUzMwMTEwMDFsMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzEyMDAGA1UECwwpRElSRUNDSU9OIEdFTkVSQUwgSU5GT1JNQVRJQ0EgQ09SUE9SQVRJVkExGTAXBgNVBGEMEFZBVEVTLSBTMzAxMTAwMWwxMjAwBgNVBAoMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJYvHirYYqJvRMnSr4YOyx14/3/PP2XjVKXxBZupCAK9ytTQkUr9YKyZzYgXPZb4ILQI6hR0Ehk6L7UXBh3FbkSjggSmMIIEojAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgZYGA1UdEQSBjjCBi6SBiDCBhTEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xODA2BglghVQBAwUGAgIMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMRgwFgYJYIVUAQMFBgIDDAlTMzAxMTAwMWwwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBQBzqvKX8AY+IVJiHykPj5www64JTAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDRwAwRAIgb52hsDkWShWodg6mznBV4Ut/vr0C2rgRLyV0rzHWq3ECID/elZUrZyPy0V6CdrlZxaCUIQB6jsFkAl2/wFTHC5pU"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19, serialNumber = S2827001E, OU = SELLO ELECTRONICO, OU = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19, 2.5.4.97 = VATES-S2827001E, O = MINISTERIO DE SANIDAD, C = ES","notbefore":991548900000,"notafter":991548900000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3KVI7Sy+id+bprJ8Eh9AHtW+1qeC\n4qoHH1oK7HN87UKH9KxQix0jq0RySb2c+5CN+kbAfsYEvULfHToz2FWzWQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = DEPARTAMENTO DE SANIDAD DEL GOBIERNO DE ARAGON, serialNumber = S5011001D, OU = SELLO ELECTRONICO, OU = DEPARTAMENTO DE SANIDAD, 2.5.4.97 = VATES-S5011001D, O = GOBIERNO DE ARAGON, C = ES","notbefore":989226900000,"notafter":989226900000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDOg7lpxitz9+ytOAKFXxS7F4qc9I\nfKWrj388ETiCbLEQuoYeWEp+4wXPLCF7RRpg6Zxt9iGG93ZAwxl8g05Oag==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = FIRMA CERTIFICADO COVID DIGITAL UE 1, serialNumber = Q2801221I, OU = SELLO ELECTRONICO, OU = DG SISTEMAS DE INFORMACION Y EQUIPAMIENTOS SANITARIOS, 2.5.4.97 = VATES-Q2801221I, O = SERVICIO MADRILE\\C3\\91O DE SALUD, C = ES","notbefore":1622102400000,"notafter":1685174400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhe+kvml2tx/+/wipHR5ttSw1PdmW\nGLpoEqzNiel2mWsZovfSBR+Jzri7NpH8s8RBSnEDc0kQTl2dSiECy9D45Q==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \"European Agency of Digital Trust, S.L.\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\nValidity","subject":"CN = ConselleriadeSanidade.XuntadeGalicia, serialNumber = S1511001H, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES-S1511001H, O = Conseller\\C3\\ADa de Sanidad, C = ES","notbefore":1622205900000,"notafter":1685277900000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeC6+zmnjgdAUmYG4kIPJsMwSFSJc\nlYoKuHKcIQ5PpX4xKyM36Gp2fkKvARbyJYjduU8JzO9nrSILVxjuKRapFw==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 3","notbefore":992073064000,"notafter":992073064000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5EtYbOu+RuUcFAu1NN1rqsuKqNzp\nl0Y6bgg9wNKcmVLzfBO81jH2dcupHtKlp7My5KGjCyBAKvjJUSE/fnDd5g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIIKbUPDyxggQcwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTEwNFoXDTIzMDYwOTA5NTEwNFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABORLWGzrvkblHBQLtTTda6rLiqjc6ZdGOm4IPcDSnJlS83wTvNYx9nXLqR7SpaezMuShowsgQCr4yVEhP35w3eajggESMIIBDjAdBgNVHQ4EFgQUQiz2ueCR4OeY2/dQbISIOzQRh20wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxMDRagQ8yMDIxMTIwNjA5NTEwNFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBADVwHF/3fcmmkQgU+HLb1LGhj4RvsR9NUkrkYHyWROt37d5D3EyqNjNIpWebfDXLnQNpEQDd/2HyaEW70citcb4ad/5RXD/hr3BjVsqnbRHOctv1+Twy9XfDM7OcDgj2tE7slsZ2dKAPEg09dq7MoClXDuTcIkBqEHuZ+dzA8PYDvITLjHtJqMKBj335tRU+Zl8WT0GGXzQw7/lRD4yE8BndK7C6MO7xC4tIUGgHP3P+kImRiPCq+pQbt78XGJBzEgCpBbe8HuXgja5yTk2AGLdCH5GxbSQMjGA4icefROoPO86uNwCekAKGFd46Li5/+JfIi9nJCd2x7PsUzAr15fzwcTks0Hk+7dZqj6gXuJpZFwoCzvY4Z0O1B99L1SCwZNXsCEevqQ5an3LUWUWE+7JhkkGtqeddockt5M8Q7omw8O4gvV9W9Y4Cbvshxy9RroTSU135NBMm3Iu0s2FdsKj3JMaE/xulRCJ4bxaEcKTdrjGaJSPT5ROgPWQj0yD7yw5j0lRGzph3Pu1o5q6J4v+w3cfWVu9Ka1H4wpQY3ip4emVaXpstg0NNPMH+JERLFy8Bg94J0uOCKAVAPMjpr9DW7/r1Ooey4a7pfdGqCb2QxUkuLr1YOQcairnvOpjjEfHbvWmKV4EGpENpI21qY54URKtoYse7tnkVtz9RrsyY"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 2","notbefore":992073005000,"notafter":992073005000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvIs/H8NhtE23q5tR84V9WwbbdGDc\n3hh7mjrXom4PRzjGRuSvfC9OIFLtRzOohsdnbcE62FWN+Fz09ugJcaqhtA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIIX7IVIHG/M4swQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTAwNVoXDTIzMDYwOTA5NTAwNVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLyLPx/DYbRNt6ubUfOFfVsG23Rg3N4Ye5o616JuD0c4xkbkr3wvTiBS7UczqIbHZ23BOthVjfhc9PboCXGqobSjggESMIIBDjAdBgNVHQ4EFgQUvoCTP+xA0/1nmxS2GKtTaxp0TYAwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUwMDVagQ8yMDIxMTIwNjA5NTAwNVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAKT1bQpoLJpJbb3qAbYcQkZKPNQa5aisXFiLlmIBWHzPYI67BWJu/CjDOeHUPgzpcgiDe33t5ZacnccTwMGZYXnZQ8jNwOxAi//7NJkJHEtrMcYQ9pqSeKqnNwTwMetQm1u5rHjAtjMSZdyWMMjDIcX5Z2lXiPgoO548fYKrwbeCloFDk6qWrk/Jc6NKyNgVEhVvkwHLfDloS7Boln2I4eT4VfTAXt50/zEsu4KHIDpDTDMFNg5KTYugOFHOQise6z5oYmnwZB95OKfFGR0xeDR8JN+Kn2TcdiTpin87jhtyHzCScFLlWbHum9y/OKKNgK/2hWRrikyU9zo/OmHwStftOkggBSeDVtwRkCAKZpK9IXWWRNCj/gkRnVDDeg3ehQ9qRykU+BkUiMi2LhLDVUITCZhmRyS94xHP5PoCY5tUanCNxkgjYwvDHMU8hIPL8rsOdHxc7tK6jaavBP7ZbDG1W3bEcYU1oaKWvbYyPBhJPnAVDVH2SLU68gdEcdjMtiOPaH1ImERhQ2cF9KzCsU/svCoOJrEd2lQZ6xFodkicg0XN4sdXKyypdPic+Cvai/033DdiS1i7HH59hO0Z9l6I2gsJHULDMeSnJxTB9Tves79iYSRdBocm+LHfT8uvwRwn6+SmTD7/ttzHm/H/m/k1hsLPZDNMdn+kMuXCiEnn"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 4","notbefore":992073114000,"notafter":992073114000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHTBJY0Z+T5I8EmqQmrbZAr8equIc\nKKE+YriIGw/AKJyw0ZAj1Dd2MRTM3+AEiNARxXIF08a2rhUvFCyyHCJ2DA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIIbOmJZDQoP+owQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTE1NFoXDTIzMDYwOTA5NTE1NFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB0wSWNGfk+SPBJqkJq22QK/HqriHCihPmK4iBsPwCicsNGQI9Q3djEUzN/gBIjQEcVyBdPGtq4VLxQsshwidgyjggESMIIBDjAdBgNVHQ4EFgQUhHOTxbELqlA8J5QtocLrpUvgC48wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxNTRagQ8yMDIxMTIwNjA5NTE1NFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAEa+gpgHss7+IdPOrr4bzlMSavqHqybtRzSH2hVBrbZ9Ov3vVDmIksbUNM3nlVPL5gFAReHEJmXhHxwvoxyCO/NXOS+itmGkYRPHRH57xTa9XIGcwWmAnbwxVy41B/NnOMeAB2TouWWfX/ZYzKiNyFJ7JEIdaQcZ/2+55c5mlEVFMdpeDR2vmB+cgrz6j0iFxoJ1/QQeWkjfD8nr/Auy7zfm0MgQL5wZEI08A9LAKZjFbawHcJx2RWuwWFc8dLBTMxYM0ptrXYNH/dDRpuNXMuqh68Os/aei5kbolHM24bSBycvInYBYyVRTi2ABDdRpItl9BEGqPSkJoYrrB2hZ3roNNugANF1rm1Fx7hlK80QiMoELoM1RyIovlrymQb45USV2+OuEtvZ6BJ85l7q47tbwr0xxHqIL9n82t4My4M0U7cIu5SPv6qv+ubLGnbqJvgoT9Tf3QGrH5j3XDyU0V4YfvfQhcOBLNlduuA2cihdAh+M6MLRbtG9svKsrA4k0PtyB9UCtqufsfDhkjM4LRGjmylclgmDtNH6DixcFxYlK1+fikZSIPnw476WgS8/2biw2m4gAsxEZ5/vg9L/u11i853AOSsh/sFxjp62K3O5mFAvdmLAJmrofOUghoNcAzJdDbSWtHzqQYJ+BWIjoIDiJh0m8Sl5/hVv6Bh6Xtrp/"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 1","notbefore":992072935000,"notafter":992072935000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEExXQauou3f3g77qOsZ0rSPFjoTDi\nKQDhG+Bpf34YyoeFkYMBML890KaqmZL4uezBc8xxg1f170qcZWHILjp4qw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIIM5IkTBngr+AwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NDg1NVoXDTIzMDYwOTA5NDg1NVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBMV0GrqLt394O+6jrGdK0jxY6Ew4ikA4RvgaX9+GMqHhZGDATC/PdCmqpmS+LnswXPMcYNX9e9KnGVhyC46eKujggESMIIBDjAdBgNVHQ4EFgQUX4tTu4HFKg7kh7/7FCeP8+7D5CwwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTQ4NTVagQ8yMDIxMTIwNjA5NDg1NVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAE5HQ1OIeJz3gkH2Wrokpb2nLC/ytoe5t9zkK2LY+UmVvTP59uG1dyIWV5pv2hwYnCiSOOG82YJRfdsts3i/0NHlESPChvyoG/E97tvdjB8doTj4gCCTx1JmRpp2vOQZuQsOB5QeTY7nL3yCHZF7yniFDPQpk2WpE4tY4gxxt08hlhRs4C2iZ8jiN2DcMqJwippu0OdAca9mRFPnVs/tGjBT72QrEnPPXWu1pz1xdIW6sDbC2OhCkAMPC4qehWh00DuhxeYgkJF6cg5NOLT2iiAeEv0/DGdYsy1lM5JxE4BmWaZ9mRuvNvzf3lC6DVFHTr3R7/88RblxfWA/TH7E2TQT40JwhQ0YyhqWYC+W0T2cTW2NICedtIpAv8oECRentxzvceovuQw/BxacZUbs8WEJFW+WKGJvAeyaFrkLrze3U5UH3kurD3tG97E77wbFu31iivDmftrvWv/OSDFWpFiPkEP0pe46eY+x/KGiBZNYj6sxeC21W7CxAftQdgoOAPU91j9otI/0n/7XLV71Y1fnt02nZwDOu7ajLHebpjUtnnDsHojOAr3NQKEy836Xg2E3JtGCWWBKnkvgj1/swYBLaZxE9FEGo3nTst9TpwS8GpgXFoQEoTNSV5UBVCwT2djcZCEmhG4GPCrqeoh1c6bfTRbtORXv2HZqYgv7w6eo"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571146, ST = Berlin\nSubject Public Key Info:","notbefore":1624533207000,"notafter":1687950807000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUdPPsk9xzY1vM1zdjgvHDsRCST55\nY9SJBJUXI5uqGb6ckpT7xQFGbm+WGQuFJ9E0w3Zyyqb9P/bsMJQmJkrpkg==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413462, ST = Berlin\nSubject Public Key Info:","notbefore":991900547000,"notafter":1686470147000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqD56CIMWer5HDRhCpUrq5lZ6F8Wr\nFPy/IDwjgb44oE2BELk1xBbjXvz7kSPpf3jp48wPI7WWLcx/V5K1A6obNA==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382898, ST = Berlin\nSubject Public Key Info:","notbefore":991557982000,"notafter":991903582000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtGEETBc2arnjxxBWO3aDW+rwFgwm\nhqPbxhaUuOEC6kkd3GPhmXPFYKtmFM4IQDj1Cfqu2bIHa6RqF9uEMbtxwQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460071, ST = Berlin\nSubject Public Key Info:","notbefore":1623415964000,"notafter":1686833564000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeL12fn7+nUNW+9T9zJLaiZF18rfz\nL1I735fT+3zuKryR3K2oMIMBDFbrrLVva3UeOEZaz+sUwUKWHMg2HgQttg==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413213, ST = Berlin\nSubject Public Key Info:","notbefore":991900145000,"notafter":1686469745000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtgz2ifmTj/vZbBaz6xlNCdQlw4FQ\nU7v3dUrJYQEigk4Lz8dY1c3pGzYO33TjrgN/Qn+yHaYMHl6+06Gk7AuW6w==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382791, ST = Berlin\nSubject Public Key Info:","notbefore":991557644000,"notafter":991903244000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8nZrLqMlw5EvdfvJXgxb2rXj9OBT\n2UWBqAFLeCoQXuY+YOZJpUtL4wFQHMGPbvyoWvvcfWtrz3ZXHwaaigQG/A==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414054, ST = Berlin\nSubject Public Key Info:","notbefore":991902169000,"notafter":1686471769000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE71N2pH6YyC6gfUHwiEJDzIxwMIW/\nHs+Cgn/gPQbZAkFcyX/LTE2j2gZD8hLs55TErTTKokvHkrEOWtHYkIDhyQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460099, ST = Berlin\nSubject Public Key Info:","notbefore":1623416023000,"notafter":1686833623000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5sqOpW4x66Hmcposox406LFRWyGI\nvH2CA+Di7pgvWYIJLX7soTE36YKx53vPYRUhKtzexJ7nI90MtClg6NsTAw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQUe2TGCUusT53oSAOELC+JzA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MTExNDUzNDNaFw0yMzA2MTUxNDUzNDNaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0NjAwOTkxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABObKjqVuMeuh5nKaLKMeNOixUVshiLx9ggPg4u6YL1mCCS1+7KExN+mCsed7z2EVISrc3sSe5yPdDLQpYOjbEwOjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFKqmc5L/6RNKg3X+s/P8fZ1lpWBZMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAYT6oiZmBaK8W8IkrCyR88Ztv63oJ77kvdbGpeYBQhBefGwyT2w7/7fMTrFTeMG3rXFxPa//5mOmOVyhvEdWD6vIKHABcyu6P/JFAXTZtAdv3wCzGkLPb86u7HdrUqWOLZCXsqnLNokfOwZ4tKkaOHfx+mF6iDAxSjRFvPlPe8SOcrzMBJIPCoiSkB7B0nQr3Bz7QKLh5UHhhyc7mFJbE38n6BxKBwkg6kgFxUHF7Rfm37BAxBZqqBoSuguKefZBIRd9sC46gnr2pxGN5ctUCEt+6+G7l6LSxUOp9rwlgrTY0ptVjk2pSBslHJuvhqS7ZlasV+eeMEH0FjqxVKgQRWHdnfjpvNO4thnZK0tcW/B9Di/UuKjfpKhM+rDIrjXjpsyOESxMbS3OOteIBBZG11ny0zXpx8JX/7Gyem9SohEFReXQh0U0ePqXT0Vsn55jt5JStxAZN1QWZgDaKVbFsYRbwnhP1fIYZcpEcCuk63sRtTbIT0K6jU8grWdbrPY7HQAMqFtLbkJlTSXv5jLh3XBYDWDJg3Dom0TREmo63tv1nC5b/6SQwNNDcxYb2R9jd3nnd/3WdDzN7IYmkLCO3zUf/YtSM+XBVt+0GrMKj/MLdW7rKfSNyjHXCR9gjRGVAbUQz3hEPaimMyVD7FcRPDD9zroA819D50nBRrnxXOWU="},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413639, ST = Berlin\nSubject Public Key Info:","notbefore":991900817000,"notafter":1686470417000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzma5iz5ZBIh1KDZhj9fSnqJoKK9w\neOGB/91w6FpdAUjFEKGDphj/MdGRfVro/gSyHRhpaQghZJXRDECOuSAzqQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382995, ST = Berlin\nSubject Public Key Info:","notbefore":991558470000,"notafter":991904070000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8xghqNrE21susvTQHV9fwN3RWhBI\ndCYBu3laCz66NasqyquT47PJXuOifSUiNY2/qOyDuu0Ae8MKIHeUmN5wdA==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571164, ST = Berlin\nSubject Public Key Info:","notbefore":1624533268000,"notafter":1687950868000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHrXK9pJSpMrEB4xUrXTTnb7RakIR\nzDtNh6ugnjfV513NFsu5rKopJYYDOk/Bfy5MyNug6nD3kSSUUy5yePrgmA==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026383046, ST = Berlin\nSubject Public Key Info:","notbefore":991558662000,"notafter":991904262000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkkxNdS0EZvjP8j17j2k92vHZpX3q\nSNMDbCqBYPvmqzj1jnNEqsAZSp8uppwoShgmQPdUSmC5jvSaI0PiIRUJhg==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413569, ST = Berlin\nSubject Public Key Info:","notbefore":991900719000,"notafter":1686470319000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEOl2NFM+2gkakrrAa7g+F7KOXRziS\n4ydbxiNbm3XTu+L9LP+oSKMLOeJOBcjJA3RqrqAiWfoMriWGd0LRYM6TWQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571377, ST = Berlin\nSubject Public Key Info:","notbefore":1624533875000,"notafter":1687951475000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE65QJlG4NQ1UKM3/5Yf6n9u430S0g\ntEarOF4e+WrILwUamksO2zJfSgAwXJV2ZzzenNRml1iFffdf4V7yxzgLUw==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026523255, ST = Berlin\nSubject Public Key Info:","notbefore":1624003975000,"notafter":1687421575000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzIzHRqk76vDGIUAj3dIo3UVev41t\nak5P5oxO+zaOlsKnxUNbo9yqIcpOo7stI8WLrif4RRaiZoQ0tvahSHH2iw==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413994, ST = Berlin\nSubject Public Key Info:","notbefore":991902075000,"notafter":1686471675000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEM7zYPRk1r4viA/oG6BxLec1shhb0\nJoDGjLAUuPxmGSMw+aCQZUcY5MtUqnVD3x//kviuFZDumf65i0V1o7Gsew==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026383019, ST = Berlin\nSubject Public Key Info:","notbefore":991558564000,"notafter":991904164000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuCgNX5VUmp7/lN7/UDF5kRDz7qvW\nnpgFOKwv1AxJXbSvwJj5ADOP9wGAsocoSJtPr3LbjbmqAqndrgr3831+tg==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413231, ST = Berlin\nSubject Public Key Info:","notbefore":991900212000,"notafter":1686469812000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExfciFuh1jL3LBPzaNAVmmVTL87eJ\n6wVctSg393nUcXxVL1v5vCgp6jWlRdJglVJj8jRG0TfF3OLjDUHAPn2rAw==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414212, ST = Berlin\nSubject Public Key Info:","notbefore":991902618000,"notafter":1686472218000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyxW76RQrbDUSOEHxYksWk5CaGGyg\nxDJJ7A9jRiop+FlpwmPReFTmJNVRMCjE56zKy1oxdi4KXCHI/yJIuw4zWw==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026164195, ST = Berlin\nSubject Public Key Info:","notbefore":989237732000,"notafter":1683807332000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEorGGRfEic2GL5o9XnITdq3nd9d7p\nWDvy6waSkDMI633+wvCluSBV3rWR/QkL3FdfpcL2FOCWaAR5/sXOihpfrw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQUl/a6dCJQYWN7+hvCmQMjDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA1MDcxNDE1MzJaFw0yMzA1MTExNDE1MzJaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjYxNjQxOTUxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKKxhkXxInNhi+aPV5yE3at53fXe6Vg78usGkpAzCOt9/sLwpbkgVd61kf0JC9xXX6XC9hTglmgEef7FzooaX6+jggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFLZUelpTEvjvhoJ0FEt3jzVhmdMtMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAobJq9rpQ7gjNp0cvnJgVytpdrq9Brej3T/Jef4/M1YK+7uk1uGSDiR9+go/49IWiDFWBX5HBa1s+8bHxAUQNvMP7Y3Dje75KFX1a2L2XExjpoKxkwC96L/UvKZK5de3h0fZDGHFQb8nQB7CT4Ygky5iFO8TnRdSoVz33su+OM0d6LejPP+SU21bsg//pzVVuzDXAF2rngBbcYSSjSaZxKKfGAMv9p5pnXbmjeNLPn7u1cBCu20CKbsMu/ARfisW+jR1kAFo5gfOToOd2xetkKTL/p8wC8PdJc9vK5wimEK5p/lgFG3i0DPfDlQ8Zjs0yTV3lbuaIjv4EQgb8GjhmcJOlpO6zTVp7kDLO4vgSnW45HS//pckR7rijMb9QRfn6fLE2KW3l3er1XC+/9f1oZBf394PTKJevOQEPQynWuNbw29WyFElWdFwnPbvup6g4D4a6VcUUtDLYAMX8raSpvgcTu5PjVgTnsTItSgG6rz096it0dQODyswmNUdig8TxYmalJNB0SMLijCpodeUZehOtpNwJ/9U5ejNEn5puwaKjwiVom+OeMOLj5ujsNrhQP6KxlfjBGcz2xV+9dxXgez/izIoo+Q8eaHmXWAbhOH2BOkCceIwihL/2Y28IlBCL2f47YOKpEAU0zffeC96U0XzKYDV0I3jIOuyvySylMuE="},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460044, ST = Berlin\nSubject Public Key Info:","notbefore":1623415885000,"notafter":1686833485000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqXPIlxahww0kgegwTgRNQWpChqH2\nPfXelyd1D77uo8dy08tlDhsE7zpyzWXfZTUAMxPtgw+JTqiaL1FQtvdkyA==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382913, ST = Berlin\nSubject Public Key Info:","notbefore":991558083000,"notafter":991903683000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKPuGAJsDLPU7vw4aDg52nFxuxz3A\nsJtWUmtsY7tQegwCVfll+e5sQJu6y5CZnOD+gKdMKfnjuB719z/tF9qB9g==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413347, ST = Berlin\nSubject Public Key Info:","notbefore":991900392000,"notafter":1686469992000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEszk+l0BVoDOXZg5SKeeNbLUAggqL\nKB2a3NlMXWfxfdcdHsPqqlKWcFTZBzD3/kIyxJi5rlxk1Uk2JsFNEbjt7w==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382843, ST = Berlin\nSubject Public Key Info:","notbefore":991557835000,"notafter":991903435000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUCSPQOg4hIgEJzD2PHFjccnQzSQI\nvYs+gbBuJqHxv7tCAEpyEj5XIfjjfMjNxA+so+AdZyEfwszhKr2A1/nVSQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQfd0Q9ZCbWId/oegtb4m3YzA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDMxMDQzNTVaFw0yMzA2MDcxMDQzNTVaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjYzODI4NDMxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABFAkj0DoOISIBCcw9jxxY3HJ0M0kCL2LPoGwbiah8b+7QgBKchI+VyH443zIzcQPrKPgHWchH8LM4Sq9gNf51UmjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFF8XM8FHgnGkqtzHi2YbiEXf7bISMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAKXt3wMqEK4Xe6l+yRI57QoLigGWQxwDo93Ru+JmMDYzve1wPLHRPiHz48Dnyn1eozTFg31i2RkewivM7V/TKPSPK0iZjgpNhBjQmvNB71tuXLB1PpJgWMcpecMtvi5MAM6fTUIBCspYFwi2WQk8oztyA9qymGkw3y5bGzSYKlY2bX7/rDCpZ9V+lsK3UpAu2EluHXyGwVgUEabHMVDXApkOyq9+2HVKwc5G6S7SGutXPGoLQ0WC7dzRB+L7staDchPOQmKzkxSsdVN2mej6Ud9v1WINiEm/xGoJI6zd2rE0Xuau66YA4+qfeDvwnYshByQt1gV+Yrwp8cQyGiP6tzDpgCgrxjUwQHRInWi4MTd5Cd8GSLV/dwdOee3475uwHzSG1baplRlfpRK76woxjp+st44TLZrQDtgrepaGD9n9elQRPSMBYXMgCsDP1b5hra3xmUTLRKoL2ez/is2CqyNAhkEqoXRC2pLMYNgyj0SW+M3w79Zm/1ubEpuPYVaoT3p2ipK7Q4C7o8Bu/lrFZ6RKLVBWeOBMhJiH/jAKdTfxN9RYgvsFJoIiWX4JV+4LUKGCTSp7LYF2C5lJ3eWvQnSmipsK+t+fG2tU+fstB/isb/Ty+rH32pHfs+15zCHEL/aKC8WUCjOo0GU9GC4GQzN5MqrLJV8eOXwF3nZXa574="},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413541, ST = Berlin\nSubject Public Key Info:","notbefore":991900643000,"notafter":1686470243000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/eGWuKcNV/od7Eh4EJuiqBPv+0yP\n4q+qzhOlNFdkzuuWy6l+hhjVHxdfxp4XDVvOUV2D9wff81/tNfBuc4pCmA==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460123, ST = Berlin\nSubject Public Key Info:","notbefore":1623416094000,"notafter":1686833694000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh4UMl8PsQUsu36Hq7xK+dyGWGrEL\nxsfzVOny20ZnkHhyBYxBUIGoHEYl70bpzjFBJN4WLGtilZD/0aLWE/+ykw==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413860, ST = Berlin\nSubject Public Key Info:","notbefore":991901711000,"notafter":1686471311000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEs77Dr92zb+HOBL9gdfCWOwkna+9D\n3Kdq0HgUqpVByi7kqykRPAFKPZBA771qyoBy0uHFhdYIzNAPzdHj7KrPsA==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413417, ST = Berlin\nSubject Public Key Info:","notbefore":991900474000,"notafter":1686470074000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEopaKkUUE4nCgNpRBE9ugmShuJd90\n7aOocVvFvxPLxiJ5qqQ2pq/GVsq5Vf/0V/b1V3rAoKO8bMvxP4jkTWTxqQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460026, ST = Berlin\nSubject Public Key Info:","notbefore":1623415821000,"notafter":1686833421000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh934IiMCsXp977pDeG7Wi11S+uGG\noem6nSNbtCILcST4+/FqGlLOBJvIZPSh3hTHx2V7V+3Lzqi6R2dahOno/g==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413693, ST = Berlin\nSubject Public Key Info:","notbefore":991900928000,"notafter":1686470528000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyV/EBSORniEE7SMMNmvSWT3dOAuD\nuviDHFv7rvnrcZ2wyfQkIjyYPkrtVrGwiNdwOcbHKreB2eW6li/+fDQPEA==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413897, ST = Berlin\nSubject Public Key Info:","notbefore":991901776000,"notafter":1686471376000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5eOmRsTsPlyUVzKnWK3xYlY04+DO\nffgg07nWx4FTa4mouXQ9nfCxmMHgpuZv2RxbVSzYzewjcmKaknNEYDdCdQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382773, ST = Berlin\nSubject Public Key Info:","notbefore":991557537000,"notafter":991903137000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZM5AMBImcqdKPFM6P5xx0LmZxo8\n1NcnuydrdPUQaaa0NhsRctuX4qB8YSd2pG12ilwSSfEcgju8I7AsFJSAOQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414081, ST = Berlin\nSubject Public Key Info:","notbefore":991902238000,"notafter":1686471838000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaOhuajeY34pPu/12SnuMv2qlG8Er\nMOj7s0eAEM2679YVzsiZWLIp1S1jNWsoIJJTEiLWUtj1mqCsMOR3gA7CBA==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571270, ST = Berlin\nSubject Public Key Info:","notbefore":1624533590000,"notafter":1687951190000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUtMktlZKpvOfwhumIvsvpKMWE1Ly\nMq32RkRCbVM5TBBxHsCUYdXSjbqPK3cZ8tYkCkcYlyluKbQO++HaSsGjSQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026164168, ST = Berlin\nSubject Public Key Info:","notbefore":989237611000,"notafter":1683807211000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsLa/zRhSxxsmrPE/RwPNKXGblvI4\nJrdqfPNYpuPn3TpkExb/vod11MuW7BismmErZcJC+oWuItW1UH+wcXHJcQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382931, ST = Berlin\nSubject Public Key Info:","notbefore":991558189000,"notafter":991903789000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5D4cdY3G91kHagLyAGon0ufC2jqz\nQ17V1wjvYHOLxZSY1evmQVhovIVUS9AU5Z73aeW++2ZyNUFg7L/9Zk1E7g==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026383125, ST = Berlin\nSubject Public Key Info:","notbefore":991558987000,"notafter":991904587000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpobykjScOX2uy+5C/BYBXDRcVUVO\nBDWLUgUaIhP2q0GoF8FBBDYBjx1peWhf4Nd+rtjBivr5WDcFmjMVn+FVzg==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413286, ST = Berlin\nSubject Public Key Info:","notbefore":991900321000,"notafter":1686469921000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgxLpjMDX1/tMRghYLQKMI0nK4UkZ\nuK9pnAAJTC7BeQUaHYFp4pJkC8z/VHcW74CpwTeTRITzs4MZflkN/WHtqQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026383107, ST = Berlin\nSubject Public Key Info:","notbefore":991558868000,"notafter":991904468000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtLZ1N2Y7UQHgRO3yKGyRTsJWdYFG\nDld5kbglFGHrMvZQwa5XoBclH9xTrP3dXcTsgjnml7Hx5YZOnGHhJMrenw==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571313, ST = Berlin\nSubject Public Key Info:","notbefore":1624533720000,"notafter":1687951320000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx4HHLyxeH1wp/aPCCwyRxWVEcfUA\nLP66kgwanudG4b8upvGFMsVXpzg0ohEParVa912A9UBuCkjDM6jFAsgZIQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026317104, ST = Berlin\nSubject Public Key Info:","notbefore":1622025130000,"notafter":1685442730000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJmki+G1pd9DNiLX/eT709p/ZeCd/\nmcjrmRLoTgP6nlDqJxUvZ0rQ64y/Lj2Vk5ehGHtuV/RmyuNXJYxFB58bdA==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414115, ST = Berlin\nSubject Public Key Info:","notbefore":991902338000,"notafter":1686471938000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd+grPnJ58prZvOeLC3vi9P2mnqlv\nvGNfsbT0HmxAVHAoNB73PT149IhGWhNZFSMFRel7vu8vi4wPoaSuIjraPw==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414160, ST = Berlin\nSubject Public Key Info:","notbefore":991902447000,"notafter":1686472047000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPdriVdFsidKrE0nr7S+75iO7+8LO\ntzFp99++4BLqKKMKn/mAXvgkInEN5xqsifTYFWk9KmLcUGbD9dtwQlaA+w==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460008, ST = Berlin\nSubject Public Key Info:","notbefore":1623415750000,"notafter":1686833350000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7f4SNNst1BMsb6Ub0yVCz01aDWB9\nI2/ajVbLyJpTr2pKwSocQpiM0mcy9XX+dMYYlUaQVBOmtoE//fnw8w2vDA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQa3EfpIJxEQWbFKABTToYxzA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MTExNDQ5MTBaFw0yMzA2MTUxNDQ5MTBaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0NjAwMDgxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO3+EjTbLdQTLG+lG9MlQs9NWg1gfSNv2o1Wy8iaU69qSsEqHEKYjNJnMvV1/nTGGJVGkFQTpraBP/358PMNrwyjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFOnH1hRU8J3IP2P3zqqdI/PRssfHMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEABP/zORyij1UypZj4JppvMe5h2warlNHUqqf71W4IGaJKAjcKi2kazMJsyhJH25csxg0MaUT92YZYIRx6Iano+heWPAfvMvymfruJvCH5Mt/6DJuaW+8D1IQa42Qy0m/n2OknEquvui/XEnZEPEqDq4ZVTnM/e2kSM/ieue8Cid7YS7kLOzwcTJkQwq9duc5cwGgaQak6HcNpJtl/C3j8FvsDK2n19JPr7XI2J0RNnMdkB+UH/diOgihRy+WMx9g07bk5xaeoCE8HstlG0XmLKDvuKQhAtd9l869120LzyT6XXhdQ96mLaYli00wPahgLRxKFZmZw8YFjyzFU7MNVXz40OHQpejLUf71MLl+0X9S+VABE5KOpl3IY5smqF1CNCq17bEMzt9jFo/ItqOtq5wnHnBbATpFwYJIX86xHcikkOHLLJZS+Y1a4+y6/Ul3l4Lw8WPaFCOwdGXDQ8gK+sEWkOg4y2yA1+U8XAAsmRcjSpK7hDZL1wfTyjnN6UhD5ry4bCGDdurTCazdyPOoTaj9dtIpL9NiN+Wd5reaaxcNinmQSyufBSdPvdMqAPFa0dq3eeFi598qm2FXcWIpHg/jzv31ZTfcHR1Rc9joEY53ReCHxeHEhsaAeINWOCRj3/G+E4mfe9saz7ppdp+ahb6pMvJxvJXLqqweZ+GznqiE="},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571191, ST = Berlin\nSubject Public Key Info:","notbefore":1624533337000,"notafter":1687950937000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbQZPoqfjpTx8m/wAZZWk3uoDxzfp\niISsNSuZg/+9VN/cSefrEHFRvQwM2AjN6vOjhzVMdjZ14MSRJUMJEu85Lw==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571331, ST = Berlin\nSubject Public Key Info:","notbefore":1624533797000,"notafter":1687951397000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+fBKs9tgAlGoiBIglL4JDLpguDzB\ncXqCuIulrUkBy/wZrJtv7fsirU/YCvcn70rPzMCloqePEoDPCf1wWX8Dpw==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414197, ST = Berlin\nSubject Public Key Info:","notbefore":991902557000,"notafter":1686472157000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE40rFr8baZEDNvONEE+Rxf5ePnZLL\nmqR+5Uwx/S5I2ylMijZyZ4c2kD3OyTHlfTNa1mS09zXnXNJKqZyqi3GGQw==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414133, ST = Berlin\nSubject Public Key Info:","notbefore":991902394000,"notafter":1686471994000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2TqSv2wB9nB0Ev3u5VmckxWzq/L0\nfvl1HVI3ZBXCF+7k55bo0zUABUPBz6/e1PaDxDCIS8+NybrbpUT3w5D3Iw==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571243, ST = Berlin\nSubject Public Key Info:","notbefore":1624533485000,"notafter":1687951085000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDRVIqu7uo4HOgXlXyxYBl2L1arxx\nvDfwfgnYHjgVKQpFEj+hV9YEjSECJS+YrhGr5RXZU7eRzKvfKtRI1POaww==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571119, ST = Berlin\nSubject Public Key Info:","notbefore":1624533144000,"notafter":1687950744000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElGYxcioPZFzAfJHtsB07FzUDpJlc\n6C18W2kcnCGEE1ujahisK6ZvE+UoSGh4ABGNQOX8RypMp4t8bzj7VAqI7w==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571298, ST = Berlin\nSubject Public Key Info:","notbefore":1624533665000,"notafter":1687951265000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6/QS0f7r433yqdq7XKh3OOKhOEig\ng+VVixYEToozbg9QgAqADIZYDe3WEQnO8u8fqdzd2ouVZo54/Gc13gszYA==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382968, ST = Berlin\nSubject Public Key Info:","notbefore":991558373000,"notafter":991903973000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgMhpOktfDD7Vn7Wm+BlHabFbpOs2\nUmCVrtIpcOFpIlr8+2wHP5/VSUZslExSo284fpwuoJ5eKcjDuvlCPjZNhQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQTrNSYxxkgkYkdCLUyN9QuTA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDMxMDUyNTNaFw0yMzA2MDcxMDUyNTNaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjYzODI5NjgxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIDIaTpLXww+1Z+1pvgZR2mxW6TrNlJgla7SKXDhaSJa/PtsBz+f1UlGbJRMUqNvOH6cLqCeXinIw7r5Qj42TYWjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFOUf3iWd2Hum+D068MgwNqU55MGHMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAgNEC7rkQnh/72wrtGhZx/A5dHXieX5Kp4VM6uAS+AnZE/WHsDsg6tOB/8jD6hAAHOAemg0GgUHrpM/A4uwTX/9lJtXF/p+3Eiv54keF2qnv9cZybLmZL6rC7OytA7x3ElhFxfV1SumRqikW5ddb7H/zAeykKTckomWNG2PEDwB3F5HF5L8MGOYmqEI1X+mdI8d7L+4E2z5OXYjB0vh6n+R05MD23LM8EEfN/WkV44toLVAp/tLpln4MmE6sVhXkx2p7LqyRzzOyBI46lccBqGgriWm5rJre9YYO0Il7jAFC1SJNxmTtGxwK9VebxzNeqlVE9lVv/iRSQu+1FwJ5yqUGLjYUbbWTA1U6TV5kgLg7MO3ThBrUVkJDw7f5xewuXfWXueFDW94lS7Er+xsXiHPqsOqDrbDqc+GwcZK5lCKTt/df2W6lWWXR+TFyqI6CEcjFLnzV1t+BuRnyhZcIYcUyNDPUVw7cuh81eN4jORCKXwvThRd3CAFIn8F28/C487aAQDPXTFCL0xpPbbNaN/AqUY5LWGfCuUWrVnVCaOCPfmCijHbKMYjbebybicostdndQl2PfWdCxNSIV2QSTvgiOSYnL8LcV1crE9eoeXN0CYFgj+phNveOwXrA4N8mXIe2uQfW7gKW4vqS0um0fdPeu539Hhpp8sI2LdsEh7EA="},{"issuer":"C = HR, O = AKD d.o.o., CN = Croatia DGC CSCA\nValidity","subject":"C = HR, O = AKD d.o.o., CN = Croatia DGC DS 001","notbefore":1621509466000,"notafter":1684581465000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV\n5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICwDCCAmagAwIBAgIIPR9jkXY7CPEwCgYIKoZIzj0EAwIwPTELMAkGA1UEBhMCSFIxEzARBgNVBAoMCkFLRCBkLm8uby4xGTAXBgNVBAMMEENyb2F0aWEgREdDIENTQ0EwHhcNMjEwNTIwMTMxNzQ2WhcNMjMwNTIwMTMxNzQ1WjA/MQswCQYDVQQGEwJIUjETMBEGA1UECgwKQUtEIGQuby5vLjEbMBkGA1UEAwwSQ3JvYXRpYSBER0MgRFMgMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzaOCAUwwggFIMB8GA1UdIwQYMBaAFDErHKPIgGXhH70EktAlPHyGj1LRMC8GA1UdEgQoMCaBEkNyb2F0aWEuREdDQGRnYy5ocqQQMA4xDDAKBgNVBAcMA0hSVjAvBgNVHREEKDAmgRJDcm9hdGlhLkRHQ0BkZ2MuaHKkEDAOMQwwCgYDVQQHDANIUlYwZwYDVR0fBGAwXjAtoCugKYYnaHR0cDovL2RnYzEuZGdjLmhyL2Nyb2F0aWEtZGdjLWNzY2EuY3JsMC2gK6AphidodHRwOi8vZGdjMi5kZ2MuaHIvY3JvYXRpYS1kZ2MtY3NjYS5jcmwwHQYDVR0OBBYEFB55yLnz+T3ShQFs345mxQEJZb7TMCsGA1UdEAQkMCKADzIwMjEwNTIwMTMxNzQ2WoEPMjAyMTExMTYxMzE3NDZaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiANYlqMzCo7P6/FbwxS88MCB43CIBgfpJDmQ+D120Ov0gIhALJNQbk8HdHnkd31GV88U1N4YghHSZslLY8eZX8wSYR/"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_015","notbefore":1628798400000,"notafter":1691870400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC\n2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwIw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUc4Z21skZZ8Xy07UbGOonQJh/3uYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxMjIyMDAwMFoXDTIzMDgxMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwI6OB4DCB3TAdBgNVHQ4EFgQU8CPvYMvFZX51QjwEsL6RmVrYhCgwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCfhMpfpfaBZQLkBuT1XZJWVfMy/UxqunIhPyjjJejxCnYupYB5LoyUKeuI16+StNTxGNHML7S73SWywDSgFwP0ttoLK1fiGVKtOBfxcvPP6RiuhbgkdXlUboXW3azVLUB0y4ZxnFsp3ZupaTBCpBQNAaC30tEAx0ZEZvOBl3MGRHqfR6SdUc+aMj0bibqm29J8hOZAe051JwGNF+y7O0pLdDkmAg3rdBsHaTNvA6AcyRRV9Wm8vB6bf20JXm3mvVtgdyidUgSTTMJ2BOqvGzDsJma5q7vh4nFZxPDRGp9Ny1WU8MzGUIUilv/UJKDexfqyQdzBOF8jHXCY/gHGXrOQH7MZ6ApdG07+RY8R4AxZ51OJyGQw/KPFdU6XLSaDtyTXptGxl2JPIaik1TtNNR3/pAdDVp67tik7En8QICqEdv+OqzBbxVrFRHmW7bSeiX8aSuk52ypHTAR6MkstVNxd5J0mzPxBqQVWa2LDy4vGkFn+qQ2/tsVpdJJLQwfcix4rEP1kazm6nWqTyyoDEU1MM9i5y/Dv/GkAwMeXPqf9Uy2z/QWyja+me06DI42hf8eLN36uHcMS10MT2/ei2w4i3UULge0NyN2+wmjR6xKJHEu9P+LXci1jik33FbwGZKXVb1uI7Y/iU+NIBOPgHQfEvBuKDDvHC+vh3r9sraXeCA=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_023","notbefore":1634241600000,"notafter":1697313600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgu/WJBn1Q+RCOfQx3NLT5oIGUCHs\nqSRXuu7EZsqfqZN5PvHk6/E++88wvj2fMrfmAptk5tVld2xBH4P4tRs8JQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUbjokPqcsK9BPa9UdWexJeyEqilowDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTAxNDIyMDAwMFoXDTIzMTAxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABILv1iQZ9UPkQjn0MdzS0+aCBlAh7KkkV7ruxGbKn6mTeT7x5OvxPvvPML49nzK35gKbZObVZXdsQR+D+LUbPCWjgeAwgd0wHQYDVR0OBBYEFFmAYyEK7sVvsDvIY+w6fmNz2BT4MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEApMhsApIqDdjtJiC6mOsvI8L9Uwf+gw/dv06vVIwTQ7y+4AgtfZ2HTWeqW7IlXvNYs0m44U4VyL43pnoV167rwBOAMGTrYqT+83Hl5adOtl5ui0RxVHzNdUPiVPL2dV/OgZQKq/TFjm8wuJOxhjGIx2CFVKX2PpcbHAZ/IawdJjhOsisBZpfYuBpKFV8hBj9/SF/EwCrbswB81IrOjNEl9MkG6JrYarO/uztKHv9OIFy5SC6BaKkO4OItM2xx4H1w2cl7Cqt32n94WLxP0HLeAKqUA8/7Ttoa98x04iLElhkg8Fd+aL6Foi1mWlWBRlgHz7iHxZ7zYDmi8NksxnKECSwBm4FpP2Guz7CWY/tsREyGvrzZ2DjYFtNtIOHW15xr7aTPRJ0yD0DYtmZ6l9aYlFVGUgNWypUuNOe3BJh25X2re7nIwSvUWZeAnUFbJ+2YYt9xQfjgSll/DByUG/SfT6EqstPWlbVFVLljs6azzxQyozRB8JYPVG1Kny8WSl3YokIDLVofulJqYpi+ac2DDFCA1L6Mtnfw/go7Rq7uiorduqZi3FL8vKwy0M6S3ckP06pWjpJdOyKaLk1cbHJR4fuzY+PrhvDkKmSSlEzsWCIKe6B//ErN64MJ5xJxc6HnP2KvXV4hf7XbFsNat5ETxb3VdQhVDyHzgbqSpVo9BIM="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_016","notbefore":999460800000,"notafter":999460800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTC\nmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFDw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGjCCAgKgAwIBAgIURQaZ+EBTL+Y6w52qaQUNZ8YBNs8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkwMjIyMDAwMFoXDTIzMDkwMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTCmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFD6OB4DCB3TAdBgNVHQ4EFgQU7OG+JgHJZf/maDGo2iSgWdFzl7EwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCVWdsW/zEmkJ4uRQVoYTxdDHlmS+mbDvEGv3em3wtFVWX/0FZKRRxHZba4wElR7DjEv4A/d6sYPn/9Mp5PhBDS/lofFzUMNYAumH4uls+MT6a9ezZFCtcATKj9pP2hMySfSn2rfQzOR9yXS6I/GcruzehqedBmzxc5uKjbSeyLA7sgsgl/JB2DW5G4tIqjxIY8KytMTkrrlJYaG/vPokpS2ajUNZisBbLHJAGLx4XKnjlLviTBSp3iAsoCh/FFHJxtQJ2pFvmgRmVaQUKpTaAuHH5pPmw4Q8rgXq+qX0vFaPe6LaUCpJkEguY5lxGtHqZGoqoVaKG3/LX9qkuzyJ5ijI//e+Uzah/zCBmW4kK9HLHUVWNyOD9fbVhWHJfXKkNJ0dH5JV3bKD2G/MvM81R5Q41F9PUjOXYoCrDnY2tmBPuXisR4mCulrWyM6Bj0/r8CkMkwMNcr7AoTEfXpa8MxJANVWFARG76IYiQtn8M1dtBxmy+bf4/+n/k6S6Z4w31tTl0YsNWQ6TnlHS2PQ+UiV1zchJcZ5RW2YwlWjLRhJHOzrcv2m1jRIsqPASvRLJjeAs+77ZDyBmBFA3piutllZj5SBDCLzStyIplruJWHhCnhGj90b+fGQUPAhj8XxhRuCnRtXBwWED8hC6dQh8QaiKB7sTrlU9L/8wn5mCGnuQ=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_013","notbefore":994017600000,"notafter":994017600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6\n/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUdvwPgIGxxk3GeLBFSk0RuKP1NnEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcwMTIyMDAwMFoXDTIzMDcwMTIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuKOB4DCB3TAdBgNVHQ4EFgQUK/s/lmhAfvZK1RyuXxMIhJ7oTm4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCwoySNQghvF3QSu/6RtHg1XDV/4eNFFPwl+qmZn1AfODHAfVS42hjsmMLeDOLv0JUg3Xdx8debts/8/ljys1XMy1tODB9y06ZrQ1X1GxtutC4cSacBYWsy06qyI/vn1Q6vwKkNHADNJP2GNxQUlolkXkdgS7q+2tWCxcK8lQE4t2TrrNUi5UN8tlagLkbuGYqnzHnGdZ8AN6NskBhq8j0mcDHxhZ32yBg/+ZmLGdnCqRuZ9fjrH6B3k/n7fHhDG5UPnk+m+LReCRN9Zud4lGzLn3HSS1dqB5V3k3lsszmQKEi9haFljxImcU2aJ+IRepO6T/kXh+bn5ei64sEro3fad70eAOg9C4hkD3krsHMpYdM3TBF704dahPbuusRFqDCD9XrLpYP4e6UD+EdjOg/aqG4i5DEdk9cFJtv+5gp8ExtqUXkIk56jjmShQFwfNgA5SWa6lFWniQCYPxb978BMIqOamOL/6BwnyaazQWFm2Qyl4AzlWot1CrOt3r+aK/i0m1nE028dju2xa3BTKEsxjCAXJ7eOldXkezBPFVGpfrdWssqnbzaWVXtVIfZ/CNMmEk9/cqgS+A6lrZlC5Og28ziRrkQatnL2SIbBXmcJ729H1SHRfAVKu+yXDzHV2fcwcoFBgZUf1g/IS/ImzU4A4sJImfDAvaFY3mcQslcm4Q=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_025","notbefore":1623700800000,"notafter":1686772800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEGSSdtJPZeYWU3QrR2cR4M2Cv6sY\nKuY870qkBKKREtlSel4Cxpfm8EnPZ+OPVVDXxArWdYR0MoLK6Ox9aEIkmw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUEE5lEugsksKBZO8ZFddktB2zEZgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBBkknbST2XmFlN0K0dnEeDNgr+rGCrmPO9KpASikRLZUnpeAsaX5vBJz2fjj1VQ18QK1nWEdDKCyujsfWhCJJujgeAwgd0wHQYDVR0OBBYEFHo8gi1E3sTHBnZB1uyUzxdv5GyzMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAM2QCIIa2/qraMLp/+N3JR3gBVI+zSFird5rWdWPWptnVq+E2MEPwJhz3a288axhZPetnm2vxRHtrzI8OS0tcl0qoDhHmMQAPzYHth6xGoGx9+jfLFMoynA1hcRmILtiitPoOT8SYe9K+ln3sia2xn52Rysy1xLTQZquBmczVAdxAS3B+h2nNw7V0b9ukamul6w9Fp7ifg25pT6mTt5sXD89hTSqTf/fhiTCjRTrBTJuVA9VgKrWUiZHI/vIwKRHoqUvMDDW3RK/QoAqfQWzztKV9yRCpBhv5focv50owbyu1VYpnT0gnl20UZsLwEXt6TusJFvGoiySFCLLanU6gyoHcXudNem8YEosOzxFSR1wvKJws8JJjuaQweQBtu/XRlwti73KZjwltHsehHC3nFsl3VwMf97A2cmre2ueEUcjRFvElh2PfpIIL17Srpu/mvu3hSVHndsUoFVZnZUWz8rVQL0M394Ik9ZBaZXVrIZud1FfuDQzbVKjRTO9mOIv9WZ784MAON+g0p0xKvJ2MZmwe+ZF4FvxRP2fCC9vlMk3As4bccS3IUKsrupIFXar1THfGPL8obpn6ktjVJ4dCT+y2w5JHGtxclhIjdqG5w/PrMPjeGrq8wlALwGjKMTF6gOZ+BtfjNCaG8h8lpt+oKeML7GP/Fe5Adjcovc0DBY8="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_020","notbefore":1626292800000,"notafter":1689364800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECmvd9b56sHucHEi7GBjqapZy6IAZ\n4MFIFg7Acr85jXp/oBSNzFBP9CnkswLR5vwmr836uS9JL5sddzLT4K4+5A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUY7ZCHR/KM3Pu7zkxGX7a6r2xWT8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcxNDIyMDAwMFoXDTIzMDcxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABApr3fW+erB7nBxIuxgY6mqWcuiAGeDBSBYOwHK/OY16f6AUjcxQT/Qp5LMC0eb8Jq/N+rkvSS+bHXcy0+CuPuSjgeAwgd0wHQYDVR0OBBYEFGaKMaCARFztgSv4jjRlAu75x3ILMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEADKs8pzrmE48ZExyNbGa8kV7CjJjCfWGTOEfzxaA6X7gL0kaHVnvPeNq4yQh6CZl0mwrEmdxvuXKRefU+nCg/prbn6CAwC2irDHU5hS48Qvya7JwqNTMOU66phFs3FDuXOpUvm/fe+w6Vy9M0IqbKu7kEWizZ923G5YjrcUgnTuF9xZ0pOd2HjYh9efNOmbeda0JmJEQKxi5+WAGjOTqidDXfh/G+2jB/Ja67kyoZSeMHBEz7IyJ8hBrUWRWV5oEzIRQdMlZ2xPD9S9nS00T09gkl2nhx+U7nTqRPQa+qKMiejQA27+EwDgszkl5hUMTeqB5xA21l2SqBqz4W+v3WBy0ziDNS9Qa5HC1+lZp/7R+33pfGZMOC9iw2+yyC+SC8cFwUB/iuwZ+0096LV0wZshB74ZjU//sUNJIL5/ZWaNGohnIorJ8nbzMFm2rPfU66dOanfQ03IkrtIlbxH2IOAuBsC7Fk1OH6DDMoOJRia7OSAOv1UT696M7R4MtKyWhCiiNajxT2jSJbvpVj5YmS83G7cfbsYHu8x7VGxrwMXyyeyhKPh8D9xXCYdRrkAo5hhd9ETLRI4QeJHPQvw7UOL3Upog+fZmaXBeEetGl1Y8PQG2JHjY0BUGclNvvBApH6jEMWiOMUMjnR+mE8FC2LB5GJScjq1MLjaDqYpj5f2jI="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_024","notbefore":1636927200000,"notafter":1699999200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7B4Il+aYBZk8hs1MI28H4Z4GF2HZ\nCXgX/DSTxvUoCMVze4xp449WJLblSCKXreGdiT0Mycgevo4rWYVGbwtUxg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUQGT66i1j72Yd+CXVZxgaJFhLGKcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTExNDIzMDAwMFoXDTIzMTExNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOweCJfmmAWZPIbNTCNvB+GeBhdh2Ql4F/w0k8b1KAjFc3uMaeOPViS25Ugil63hnYk9DMnIHr6OK1mFRm8LVMajgeAwgd0wHQYDVR0OBBYEFOkihiD6srcZ+6gH9LiQNVc6QwQ8MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAg1Vrsxtjk49QaxQ/LWFLC1WmRTNO/8XeLyASVHjPZXWfvrl9ft+SlKqlhIom7sYbxiYF5+g0qRjwBWMVqfFkYPpJkeuri2awLQo9Hr8oiPNVSHpFi3zjr4gMLEv2buQ6LUbvAT2U6eOW17AiNhT/3XzND8tILs++7JKU675p46YtKNguJhJVPEO+9cMdBdeJUM8d0RRV40AlkY/ThVI6BzqxmiD6jAka4bWJFztR8xkBs3RBxcumGXPIJIpC8cJ9dqnnsBdLJfDlWLfvpn9k03QIU9/XObnw3wLGwFWnxdr6sQMNxJCMpk3U2tT6og6DGylD4OQbGQvqFzm1x+5X11DQIdhQhBbbz+ymVBhVjVTm6D5JsEHYOcXi00aIs5zuDs0AYJhWZW/eimBgkRy2WE/6eH49pBSl80OmNAcxboqZHQS1jmLqZ9yptJ3pbSOXZS1ABgsGOYXCyHTPy5OQA5zHIt+zakgyvcFJm4YcIOD9gKzrpyiB7qJLbzliTHcimuIoMfKfzMi82K2rsFZ18glgRnm0/G1I8Cgnol2qXjkJTJq3BgI46+aA2ad8sMWB+3L7J9dj/nQJrNaZcYZ5IMhyHxeZRxpo9brURgzt9J/Qj2hF5gv2ovJXo+FgjMiLusVpsi3HKcYyUS36dKj+f4ty0kPdUklcdx52ogQ7K44="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_017","notbefore":1632427200000,"notafter":1695499200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/\nMCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUGxW97yNy30SefumeNAP3zZwINLMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkyMzIyMDAwMFoXDTIzMDkyMzIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/MCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxaOB4DCB3TAdBgNVHQ4EFgQU65Kf02Ri58/6NMKPr33J+Wz8lrYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCAD7IAnsIa2VrGdmp7kv5Tj49lhY4FgzphvUB8YcPGPy+EtrAGi+uU1hKT/nbGeB82f92nj12iQUF57gwRSalGAUvlkz4c22L9dt5pla7u54TI08GPOmR5wUs8zixYaZDjAdNr+WbfgbDzqifwlhrjIMbKwCfW22187hxcrQgD4gVc927EyruFmJxxSDNJ33NxFkZ0uXS5TMN9gWLuI+xhcosLeW9SlwscLI9WNqBigzln/nLAHYzBpS+lprHVOa+jJzktlJbATB40BCz9jpGcCDgkUTCNZ5z3pOHas2rVm2aBLcHVttVbps+ynYwyWtSI2jr9oN6GzdyS6JZykxvqGoZO3odhxe61ioVhjyhH+e9mQIvpM7qJ2/mxUFp3ND252wmnGW9FuzbFamH/SGD6LipPVyXK4oW2nxYcN7Fjdc1w/5rHXz3sYfIGORfrumSeRnfIdXglfsQi+T19cA/kwbuGagjGHntN2bnZP/FDvs07PgixNAi357BAAuwpHKMHiwXSjTW4smx4+agRVIlGZ4zuEQXLPpFSwW0ktPeLdr4DRtfL8cRav5Qs5TrG02c3lJP/PQAnpXpbGBImjAmBsat+0m7nuBU7Ix3F/A5HBkSlSHUgvw9Ze3PZUxw5igsMm0eEcd6h3hhxV8HZcS40I53y9l63gr9j1Mas7BfceQ=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_014","notbefore":1626984000000,"notafter":1690056000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZ\nmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGjCCAgKgAwIBAgIULSQWphYP//zk1JQmpv94dIH6cmQwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcyMjIyMDAwMFoXDTIzMDcyMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHqOB4DCB3TAdBgNVHQ4EFgQUZprkhn12tER7SWBEtD8mPNDNmK8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBCJgkoi4nyqPEXv8VCIXzO47sLWS4GOrT4eQ9NjEBuXqkCVWwMiQ+0PPiNi23QWx67ZK6DYUQJUOHAV8VRKZRK6G+UHRWX76hk00+hmW5qL7YT4+Z8RsXj8TA/DbUTXwEeSSinfQYefLoC8J9G7vTYmS4su0CaG0wr0qsSOMKZCM/sh0DUCNtZTpzTspDj/i2TPhTNhthyG2QWFKnTdQruEyT3XC1disruo/H0tohKOAmZhqXocdKFTl6Ycbn21A2Pm/xJRh+W/T19bFF97Z+i5T7CfS4Zrf0VQm4ZNrUv96gwye532d0QQ/6JZCTT7aL9fjEnEzkQdtdYPE0051HI9gRKmW6k++hWFiokhcarvWAsNkN4B4MIzTufRm92hCbzFh5IvsHYaaAUsfEMDsrhFSkuZ1swzimP2AQ38R1O0Brb2pls3sF7SAc3j5LA/bXZNhMJ9iBroc1SV7YC6Vv1DZOHTumSLw2fvwDt358sEicsCgdpzpm4gKTOf62rzqGiNpKWBbZW2mJvuv6WNV5C0/aW7r1nfuJ9+qSd2SUrZUFceE4vpxM2ccgsodHnspbSo7jKTeJ7l14rQn9XvoZY3E+YFcdbJQQeY0nABB83acJw1PVKfVsyt9D3DLwWXEcUcwUGioxVwiHR01VyrB2FBKurrXYEx0PglSI/NZBL/w=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_018","notbefore":1623355200000,"notafter":1686427200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjH\nz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINRw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUW6BjdX2GIko8Yv84sS428c3DH6swDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjHz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINR6OB4DCB3TAdBgNVHQ4EFgQU0ONM/OVD0tP9BuSIGmIZRrPdEnEwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQA7FyRe/36WDJi/2FU5cpnrV8dXpZUHEGzHRZ6vaZIP02S8EdlcDO39+amGmv7HrQbcLAh7tmPhpii7DylowyjvnjBFc8cJtn+ScbMQ34I0yokOvtFJvyfSBOlK5udIyFrDjdsfqr2BNx982X4dK0UYQfGCufppflZOfaqv4Y8A5lBTRXAlXPJBSZ/GMvFAN5mesGhnPD0nFNnpOHGfXG5DkNE3gBRYUyswIY2d7vdhCNiCH82fSW4mzPs/oMQaI3Hw8IiAgUwwpMqXBHs0Fxn8d4WxrpGj07r2WjIOVNk1JV1OHKvHfuVPS1roZ9pNNUkoKHf1h46f1nWczUM5jmVy0Xvvw+ZhvSelRwC7PQ74BUoPgbYzsNP0SvGOnhJQrhOYk3GSIf9EaQxklqVT8WREoCDNxfRmNYdCJzQXr/GZ/Eg1+6RPvYuQWgsB3SYgdVQz/pCRHCZvEjU8vUL2lwW4wgWlw+Q7OrXrpW1JOxl98zRRSpWxRrlE24crzTJ31hM7n8WFSsF1ZNnOoAhy0nRxdeOkpDcEVyoxauuPGHUCNIMmvvPG5psrO417HLJGHf3oLkKadSBK/Nn9u0YCCa9ypN6LRJ9slwxITAsKTrYttjEgNAisYVLojtHcCkAr5JfqL93rFYI9BYS2x/k2QGTlKM9LoUUpzaYDz16rddiaSQ=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_001","notbefore":1623355200000,"notafter":1686427200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjR\nkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUbNtFh5SyNNW36Tj3lSGsVZ1yzJkwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjRkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCqOB4DCB3TAdBgNVHQ4EFgQUkqfVrNfmsMs1UB/NA0C3KVEx3O4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQAhOMLYhWn1iV43jduVRRivgVT1jYwHmouj7nff+S7gVnxiIlX52jc/VmQDl6xOZjBHUBiRTRqjan1tdH1LvBfg1HoZWv3HaC5HbfkMu0nqItE5zbFwtJGsUpHRTSP/wrjqL83o5akkR8Uw/iIYhkLvuEKH3/ZqwZYRwOJ/NyXJnKgRuHvgsL0zbwf5X2EdbqaTtDDGHHCbg68o8CqkQ/guBP0jKHXBFWgboMQB2bruquGqVO2xKIZIU2E3sc3dhNbDYGD3KfgJbdFtnbISvxaIfnCn3anZtQgonSsHc0LWIpgobY+NxXSNfBKzICdI350hhmnHz2NS2VtrF0Xa59kZd/WMPcOzlfKi6aVI/Y+LcpujeO9ujlFGNU6aMxi2s9RWy31tjWxsOmr/sbEKF25YGuTWwvqe/MgXzpbTF0C1lVcARXaBVT8Q18nNbLLK/VLAtzjLYTblFM4zdXA5ZnfCqXDqZZathkyyf8aY/svDELxROVm72F9GnYC/OqnGeCOed+Iscp8ne8HUTgT0iNFiAR1pRz25v047QFE7G7jwo4YTA+ynwCxnVaoK3pkyfIiXstyPxMpu3Q7t90br/mAPDCWDHFpvxqvPcRlMpd3p5JcjiurGreGbivgPdJYGRPbWb/Kwp/99ACqZFA8FaGL7aP+ivAO6cBv6DNF2XXvoww=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_002","notbefore":1623355200000,"notafter":1686427200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g14\n4vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUQporYv8Mt3ziR1r6G4s54HzRVpcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g144vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4qOB4DCB3TAdBgNVHQ4EFgQUxhlqVg/2EyJWoDdVGkyJrsY4CXkwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCbA+2eQnPJWMmh2eIH1gMJhggl5GSmOBFKeXyC4jeYQSDRY97/rsDWRXAYtE4DgZQO1cZcwsM4ybbZ+khmb0iCeO/0oiKIux8FU14B7zFksZFxZpbUSAJGD9lE1xRFnfUIyoPL3lza7lWqZ8lSfLuoqoN4mODkGpPYwWu/GC8sR3ynDt2jhrdBcLnos3k47+4ZRypwDnv9FRU4/9fEnl3Y4iK+hUtq83tI5offQETsXIq+VMmcw6zmeUTaMcHRnnMo4WknrSHbe9x1MOwQmADn7ZjYzMooI4TyM/dzo1IOH8iovgMbJP7zxWqp8zgtqZPpDtp500V9yCBjGCQWgRofrBhUojKj4BkGslCZaHHkRqp0A7WOIejCpCYwNRhom3Hu8oClJ0fGcIEIrdybYISYemClnbSlM+tXt9vATf7oMRZgXSGR/9HrY95naG5U7/+eHRgm3qHAJbbbTDHET7ba+Wiq9rnYScChSH/bMN2yLsuBcpVozokcX6k2l69KVzAsVtKCjPS/ISBWHDiEaVx++RyPB5YfbVX7ykJ4SaWX1ED6DLeszCdcLNb57i1Xu35kb1SGh+CUeALUEqBtJUcEheLixnTxJIHG2xq59a560SsZBdMf8r/qYTz9DqEgBXPSlNeHn5aIG/2u0bLrM3Q9GvBk4zBj3C4zWZJVUTZBNA=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_022","notbefore":1631649600000,"notafter":1694721600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2HtKUYnSxJw/bgED+2LJQMAIjyA\n+I2plnVS50JCXaIALKstac37wB1lUvasfdvbE+nNbCvMkGPdMjLluMfT3g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUHHuaV60Jmxj0/Safb44HGezp2U8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxNDIyMDAwMFoXDTIzMDkxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMdh7SlGJ0sScP24BA/tiyUDACI8gPiNqZZ1UudCQl2iACyrLWnN+8AdZVL2rH3b2xPpzWwrzJBj3TIy5bjH096jgeAwgd0wHQYDVR0OBBYEFG+4PXS0sdtKNozOKQXcYVDA1Hn1MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAkjEVtzPSxFVMTUece3w7PeM4Q2fOn+MnaN60g6AusxnUUZGHErNnmjxVeU6isLYPB9gCHB3b2yZYXHh8IjMsf570yiDhsWBzwRjQc8a6uQoZSrCXFyVuvAGZ/hXWDf9AIKQrbrg/YlsN0qnhs7x3VsGZ62XHCQCBup2wMdW4VOa76YFgskKITmVB8RNE/r7sQn9tRmGW7RFC2f78v7vm8rshqB/6LFtwRe8kcBmRSw5l9pVMKHYLPW81NaEYN1BB3BNH+BH39rg89FPuuLMcO70Ow+1g7ebD+UH4VbgfhSrx9XKP5+FtQWTsatHdVg6vYYNPa9TR9/9e4Q3j3BAfnIdmhsT4DuRy9P+En9WZmg4NNFUVr8adlSKkiZOoJKSQh9TOavF4Ikvd/BD0S1UdjprApN3XauDRqvjKn4itsLc0m0ctUE5e234CLMbdNJM6ExPG+ukAdtK5V9FXwdyvl0+xVIBY9nI43z50KO5ZeyOWnqwRWCPqZ11FLuqFvoEpQPpx3d2Nc/IlQoalLWXtZYPOiEklhqAC7p1Qa+AG2RgsTxyIaMzCANjCDIFMBzcO6EbnHDPR9L5Xy4wqiLeQ06zeU0YR2WF+9DVMDR5j5lUR5QWFCDTK/B8ObjdsZl/Y9Qd7RoQT9wbtAa1+MpCXk7TnoRGG1HSdhi/yee661P0="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_019","notbefore":1623700800000,"notafter":1686772800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEImIFaugzwB5f/VyfQ3KTfTSoukwA\nPVSgHZWrtrc2j4FuAUpw/ObRnA9pBjN/HdUc1zcl9SO/vsCEnHkXhxjz4Q==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUNWO7+/2lmGQGT1cep5petfsOFocwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAxOTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCJiBWroM8AeX/1cn0Nyk300qLpMAD1UoB2Vq7a3No+BbgFKcPzm0ZwPaQYzfx3VHNc3JfUjv77AhJx5F4cY8+GjgeAwgd0wHQYDVR0OBBYEFF6mKwOiAheaIxTCkdVKd8zgd7urMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAu8BaLZXFj9/e2/a59mBrOhY2m5SpcAoayxF3zOkIOt7LNX0QqHuomOyGLHMnAhNALgS2vhDXD0hhs96ZcKaystlMePpYsVRyaYa53GwMrGHiLwFxH5qQNClCcktAP++wCcdQXzTyZOn9/GNdmquW1PNMLPCEfqlnzWawdpITr+CYMXa9R5BEMmdX19F41HcoPRn9/X2uHW/ONmBywTwJ3s0U8F5HF21buZtxVDvX4ey+qINBru4MiGwgRCsklS9kDbl3ODUox0lwhs2VgQzqjALF4xYgsdN2LJezrwAiL8GMRAenmX9eDdgzMGnjKFT6yW8BCrPsyUnM15RAou3BrwIp6oxXHnR8wbeKG7pzZZY1J4zk4yYyihwxguWbUZGksJsNAQoNdNHBZtc8a7Oj5onLyUIetd7ELXxdk8uy7WVFeye5V8qJRhWrFyhWWFscQeY8GktefXiGEh6fxGfRU5R5b0PznxfMiA3olad3s17dr+jzqCM/hcY2FmUTjYrSrAyrhHdmCYIJ3US71If74UeMs6NZnQRRiu3tbAX+TiDOHsEHEIOHldbyQqFfclyiC26fHTqcNfIAxXPmPDQ1jpEmhRjFDlOWHoSnzsGZi/wa1kmSb6+2uHgUP/C/O2oi+yAk8GpwpEi8Sgv+HH/p7z0ympQK8IUOG/4K3/urdto="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_012","notbefore":1623355200000,"notafter":1686427200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQ\nWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5lQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUdhAMHzJmtfI9KC2HeZuteJ8+o3kwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5laOB4DCB3TAdBgNVHQ4EFgQUowemG/S5PIzFStnYia0U6RWU2Z8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBlqQgxVgPA/EwOPMNUY4OJm4vGvxNYc3LU6R5/5q7hRwa04yTuQOwyRzTcMgJ211G79lsFwiprgzN0kixDYRrwa1NflFQS7Ygi64qGa1KZqDziB1SqDYiHXXCkkTTe4H/vkpZkH5U/+8jVUYI73q7MYIskxgHc1OZV1oKMWilU8rSdWzDQHH6WRk2BUuTORIsGpT0U8eBQQUaNhY8V0GDkKLwrqIWEbKC6ylLa0pGNYM8QMHAvV1SurqdwohC4/6ToNzypyYNctOJUTcgCyDpKdfQ+xWRdFDqje3XUdIRByEHAb7o9/F6H9NJoN0gyVF6YyGAYLD6zBfYhpnPXNxDCa7QltXogVi1gJFglsAVrQabTMXsA4/1+IOrdqMv0Ale/jy+0gEWZOHzUquSQTpxVz+Gj2j9ZXLJPzRSHg7O+LjxNON3mz/jl7cL7wjwbKqnMpYBALvedavnDetISU46qo2QwPO3qAwWF+3/17Mcb2a7IkhlHVKxNgGOEpVAZOQE8ritoVZV+B6xbpnNY2J68vZFqYy/BnkgJ+aL/9Uq0AqA+1Ivsjd2P+Clk5qpm0ZnQ8+CzaEiNENBRNE7aDFohgkezqET1gilIkvGoqDiahw/3hbr1BF848++6+ES20vUSxK2Uga4JQ0MGaKaKJyyAwwYO1MJITQosvt1JwtgiwQ=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_021","notbefore":1628971200000,"notafter":1692043200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1PApTQ/nFA6JcYUuo7GgP+gPSKf9\n8BQh88IKHOt/yNS8ZrjxjL+lVY6EH4yyQdbQZGqS9d2Se5dxNwx5C3jxkA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUPUAmrN9wBn+eVuHqMp8b/blfPPMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxNDIyMDAwMFoXDTIzMDgxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNTwKU0P5xQOiXGFLqOxoD/oD0in/fAUIfPCChzrf8jUvGa48Yy/pVWOhB+MskHW0GRqkvXdknuXcTcMeQt48ZCjgeAwgd0wHQYDVR0OBBYEFIRbucEIacei+qS6DFsuclGQo2o7MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAhYhTafMjVKmyAFJhTx703KE211fPRx3YlWid6JeUNDIuYTQfIC0yPlvtaFM4Z9TVioHcTwweEfqNi10sGVNbWmWAk1RZhay01VCzzsCVscNmi2/7n+qAIHZWgLyAOjJZ2jVDidC8MWGQjb/qdpu1zh46AIiVmfUfhyvBfXP7dQKgx+nPrV+HhxwuaVGci/KccFIHoOu0rttjuUfg2HCQCr4CjLKZ+RHXny6zjfD3R9T1scndEkJot2L/f0lIIZez+oTx/Wo8ivNoy9C9T3py6as2AChlz1rXSNPsdJZ9M2pcCk8z1I8fAspOu+uEevXPig20cxBz1kJzHrAmvYPTB9JTwZHqek2wriAQ/7Oy92hWxr/6tnkdPC5aKUz0nEYBvJWWq3qO4O1GBXCBt8VdXklgPHvZCym2Yc1XKMdhtMVNpOOOZV6SoSTjoi6R3Eu2VSMQCd8RKYc7DjLss0FF6y5qYjBqmizjV5MKTxtxKFA62QUF0jI/9DypU1Pk3Vias9RpFkLiHE3UcVdGMbTvAc4hwH/bkOtg0W7lqnGsJTWdc8MbnZ3blVtrXylveHA/IXgERhyI3J0YCg3pWjJbEwnEqltUa0n93o0S6sDv78lt1uKAMre1+JUQ0lNNHldtljV6dvcQ7R+ebs3GEZUyDI20fmhIcNZCtmOehZm5fyM="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_003","notbefore":1631304000000,"notafter":1694376000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5Pw\nahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUaaZNZoiS7up4kcKvogrzW8iwXbIwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5PwahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzKOB4DCB3TAdBgNVHQ4EFgQUPQQuG8z6nMfreGSJOz8MdoIMvFYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCe8I1wV8foZkHBp6MM5QbHFNut+gQ45nTjZEOVF2wzAZz4xa48Knhl9K6JdeBQhedQBzx3jKWEpl9A4ycPbwCwS7+HlpDzC23ZaesAGPhR+VAEyYMUEH8ONbsjKIA+rg/4OIJ5byPYxnZkdrSNH+NQzEn8Pb5ZAW8DQXeJgJ/x3Wg+Ogd0iM8yNd1sMMQiO20C4eBRaOtJZnr8W3xLRYaD5sxVHSWRkkCVELQXAVcugmiL6u9MR4KgxV5qWqi66GqHI4zfbe1H+EQ67bnH17YZ+ye0r+FRi7aacXy7Xtk08zQCqhDFaZDr2H7wTj5NJIuSnZc83gAyV+C4QxrkYIbVqPVJ+bea2RGvXYrcyH9LrZdPDJqylcKOoRpvSJoCoyJ40zu4B1tiludT2HdTwN5wjVLmAvJfPT+ZKnVXOgwabm/95Xs/Y8fOcfaRzH44p4j3e65uZ4U1n/gUnya9iaiNpBqYq0c8czOquRm1CJVf/shRkqmQTw7p8BaMygYs2VrS521LbiEeZALpG+sdoVUQfMRN8Ii2+RrJVu+AWUdz93+u98TRDodTRKfCIJq4/rDo9yepiKSgUjaxvvgDszQLcqHBFzHB9Y/Gv+l8YQzIKK9ZxFVEjEDX++heFPYC7C+LQToZcn9CKZAC6M3D7rRBEZ1ibMpVyEW4YXu9tu8RfA=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_004","notbefore":1631304000000,"notafter":1694376000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+\n1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUIxJMjNw3dr88EcIE+hNISSiImkwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMKOB4DCB3TAdBgNVHQ4EFgQUW8d5IrarC3lBI/Bj5O53KmwrwI0wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCalwjJDDOjgInZboNfXmrdZjrxA7i65O84bWW1rnOSGZwBpdMcdKrNDiizyjklB6tSKuLH0fllMPUCMd2Umz9zTTKJG1usxQ5Yaf9BBW+g8Pwgn/mNRprogPK/VXFdLCOCmxr1/y1FEPgnecD3oBFhm4ojZywwWVrcUoPnRvqIfJLEvzvYais7y9PqkaFqW0TNyvaRq9tBYyFkvZUQuizKK10nmIXLzg6JYnSXR6awtRcZJs1eF53UQynv0dQmVZbMl/JM01y+sard38byiKzQc+v/ANI24zLHWw9iJm2/jlFTch8S2eazMEAe8EvpMqzzSOcIrmgrL/r9CQo00cFFkCGCIZWnHhHEKv+uuEPVilSJC7ijM8p5npt1PwqCCB4HWcdZEY1oCu3zjjOIIRIySZmKoailNEV4iZeAw0D++wkR1+OyywIebkaRVWKk/irrToYuvQYiTDlh1yIh7mmrL0/lULdONjsawOh/s0/vxKSyD+gkMVRzxBax7BhT3DLzj2L7E/Tw5DNL87k7zmlxcHGW8Oa6sIJwKRsTg/76frIf21u99FhfqeWkhfhZ5yTzGiJR6FquZ/tTrlq216MqICXO4QN8/p8OrP9foTS2+3FvWRWxk0pBEVZget0CtMP3PpZ+IC7gwp3wALhWtZwwY/64FUl9ZLZqId8RtbQBEQ=="},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\nValidity","subject":"C = NL, O = Kingdom of the Netherlands, OU = Ministry of Health Welfare and Sport, serialNumber = 1, CN = Health DSC for vaccinations","notbefore":1622464052000,"notafter":1969360052000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsO\nNkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw89w==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDQjCCAuigAwIBAgIUU0JrRUBVL8DEW1z0jx8/+KAChLIwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDI3MzJaFw0zMjA1MjgxNDI3MzJaMIGTMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEkMCIGA1UEAwwbSGVhbHRoIERTQyBmb3IgdmFjY2luYXRpb25zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsONkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw896OCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBRVYJgZWfyzk3JJwB0HVdom7P7AxDArBgNVHRAEJDAigA8yMDIxMDUzMTE0MjczMlqBDzIwMjExMjI3MTQyNzMyWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAMMFkIuctSqsZbVBvE56YEZoxrF6m1n+F/IajFdNsRyeAiAC77Q6e6IOsDkPwq/ajPA5vslzeFETwcqNodsfAcJJEg=="},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\nValidity","subject":"C = NL, O = Kingdom of the Netherlands, OU = Ministry of Health Welfare and Sport, serialNumber = 1, CN = Health DSC for test","notbefore":1622463583000,"notafter":1969359583000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERyOtPhis4M+vOSM+4AoqtBot3s7A\nGrqQOSA2ZY3a25z5e4QlRpExd1S399CADvo5j0Nyqrm/azrhFIsSAc8FIg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDOTCCAuCgAwIBAgIUDWwu6rWJGF0zIQk/aKjdU0TXoQowCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE5NDNaFw0zMjA1MjgxNDE5NDNaMIGLMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEcMBoGA1UEAwwTSGVhbHRoIERTQyBmb3IgdGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEcjrT4YrODPrzkjPuAKKrQaLd7OwBq6kDkgNmWN2tuc+XuEJUaRMXdUt/fQgA76OY9Dcqq5v2s64RSLEgHPBSKjggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUJ6rwxau+2kWqjA+f1f8vUJSkiDkwKwYDVR0QBCQwIoAPMjAyMTA1MzExNDE5NDNagQ8yMDIxMTIyNzE0MTk0M1owDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0cAMEQCIFuevBHjahuLYCe1bOFCmy6V5FSfyJrVo5+hd0GCSDRMAiBdRK619VMnXNGf573r/PG6nVpeJ9aP/qpkmZG3TVGQDg=="},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\nValidity","subject":"C = NL, O = Kingdom of the Netherlands, OU = Ministry of Health Welfare and Sport, serialNumber = 1, CN = Health DSC for recovery","notbefore":1622463240000,"notafter":1969359240000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEiY+AGRWtd8tCUb5PQdEPaCWAZl0D\n/SIOtcDH8R8yrp/JT8MmMxV/wM15WiZf09Eyy3iJXwFT+9YOCyrBA/Cejg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDPTCCAuSgAwIBAgIUSK4bme7ziau/JZkM80IOLM8iauswCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE0MDBaFw0zMjA1MjgxNDE0MDBaMIGPMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEgMB4GA1UEAwwXSGVhbHRoIERTQyBmb3IgcmVjb3ZlcnkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASJj4AZFa13y0JRvk9B0Q9oJYBmXQP9Ig61wMfxHzKun8lPwyYzFX/AzXlaJl/T0TLLeIlfAVP71g4LKsED8J6Oo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANOTEQwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEDMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFO9JANKEcntn4oTJgtch48rqSZMpMCsGA1UdEAQkMCKADzIwMjEwNTMxMTQxNDAwWoEPMjAyMTEyMjcxNDE0MDBaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiA9SzdZR+dN+yQ8+lUKzFCUl7noJ6YzB49zVsdYBsXJbQIgFvifkX+12Ib3SsdCb9TGkzQtD4ZxCLrx1T0ycsNwiUU="},{"issuer":"C = HU, ST = Budapest, L = Budapest, O = EESZT, CN = DGC_CSCA_HU_PRD_20210621_01\nValidity","subject":"C = HU, ST = Budapest, L = Budapest, O = OKFO, CN = DGC_DSC_HU_PRD_20210628_01","notbefore":1624882534000,"notafter":1687954534000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadM\nS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICnDCCAkGgAwIBAgIUa/gUnrKtSo4XzXVTPkV2APtPwXEwCgYIKoZIzj0EAwIwaTELMAkGA1UEBhMCSFUxETAPBgNVBAgMCEJ1ZGFwZXN0MREwDwYDVQQHDAhCdWRhcGVzdDEOMAwGA1UECgwFRUVTWlQxJDAiBgNVBAMMG0RHQ19DU0NBX0hVX1BSRF8yMDIxMDYyMV8wMTAeFw0yMTA2MjgxNDE1MzRaFw0yMzA2MjgxNDE1MzRaMGcxCzAJBgNVBAYTAkhVMREwDwYDVQQIDAhCdWRhcGVzdDERMA8GA1UEBwwIQnVkYXBlc3QxDTALBgNVBAoMBE9LRk8xIzAhBgNVBAMMGkRHQ19EU0NfSFVfUFJEXzIwMjEwNjI4XzAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadMS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/KOByDCBxTAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFLfwN2b/BblsB3wY92Sbxbc7QOmZMB8GA1UdIwQYMBaAFPHcUjbpr2UPGVKQEwKXLMGD4sDTMEEGA1UdHwQ6MDgwNqA0oDKGMGh0dHBzOi8vd3d3LmVlc3p0Lmdvdi5odS9jcmwvZGNjL0NTQ0FfUFJEXzAxLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCxhu4NSIKO9F8jlaxe3EqAIDoPAaF5A9+GPy03W0PpVQIhAL12JyQzJ9f7qnLapDMUSf6HD0+AMNHl9BjHZphNBUlu"},{"issuer":"C = SK, ST = SK, L = Bratislava, O = NCZI, OU = DGCOperations, CN = CSCA_DGC_SK_01\nValidity","subject":"C = SK, L = Bratislava, O = NCZI, OU = DGCOperations, CN = DGC_01","notbefore":999381600000,"notafter":999295200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6qxT6sSK3TDheWFHTBkfveooRhtU\nWqEqrELD9B7aAk7xjPS3MBETtmnWb4nRzBINvFwrLDxQCqTX8Jevp33c4Q==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICVTCCAfqgAwIBAgIUSfAlV5Ro7+hRqRa9kH4Un95XIGQwCgYIKoZIzj0EAwIwbzELMAkGA1UEBhMCU0sxCzAJBgNVBAgMAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMRcwFQYDVQQDDA5DU0NBX0RHQ19TS18wMTAeFw0yMDA5MDIwMDAwMDBaFw0yNDA5MDEwMDAwMDBaMFoxCzAJBgNVBAYTAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMQ8wDQYDVQQDDAZER0NfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATqrFPqxIrdMOF5YUdMGR+96ihGG1RaoSqsQsP0HtoCTvGM9LcwERO2adZvidHMEg28XCssPFAKpNfwl6+nfdzho4GIMIGFMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUj9izCT/z9ccQUX6CeZ0ns8Zu0SMwHwYDVR0jBBgwFoAUm9JYe8TeF7J1Gm8LZ2DfcBXXLHMwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNJADBGAiEA1jDNVMcnPoIOaGxeFRKaRZ8MrwR6xmmv0F0I0l5wKuUCIQDnaar37bg6T8i3rJp6KHQkJqJ1NSnc0Qltw1qghCJC0g=="},{"issuer":"C = LT, O = State Enterprise Centre of Registers, CN = LT_DGC_CSCA_1","subject":"C = LT, ST = Lithuania, O = Ministry of Health of The Republic of Lithuania, CN = LT_DGC_DSC_2","notbefore":1625083201000,"notafter":1688155201000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsIcppmCVhq96vMc4NtW8\nX+yV6O1oC7hfKnewK1/pxfByqlVTPpETDLAjNq9knNQpCs7vGjadCbDAylsQRK7q\nfU3sUUKamh6FgDhFo1dzC4mUHCy3XBL04XJie2eT/a6Wgjrn6NjEFk5M4Jl4N8u/\nRbfaVxqaOjUM0hBfuzfZeL2LT30POqDHj1hcyod1fIbG4vv2Upqxe3OX/WLr+WzS\nPbRkPwxcJjmYeNYODT0rEcd9VSzJpljaK+eDVwxT0wMRnCH2QLxdw8sR+oDYDTZB\naabeHYyZ0CfYzSoBOZT3fVMAbjkVAl8GFyH8tUm4lMQbYEMbl/FkftcZQicaqvRd\nQQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"MIIFBDCCArigAwIBAgIGAXpe76SiMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYzMDIyMDAwMVoXDTIzMDYzMDIyMDAwMVowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCHKaZglYaverzHODbVvF/slejtaAu4Xyp3sCtf6cXwcqpVUz6REwywIzavZJzUKQrO7xo2nQmwwMpbEESu6n1N7FFCmpoehYA4RaNXcwuJlBwst1wS9OFyYntnk/2uloI65+jYxBZOTOCZeDfLv0W32lcamjo1DNIQX7s32Xi9i099Dzqgx49YXMqHdXyGxuL79lKasXtzl/1i6/ls0j20ZD8MXCY5mHjWDg09KxHHfVUsyaZY2ivng1cMU9MDEZwh9kC8XcPLEfqA2A02QWmm3h2MmdAn2M0qATmU931TAG45FQJfBhch/LVJuJTEG2BDG5fxZH7XGUInGqr0XUECAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUPZCkpW9sE+8wWf3UeVmVyI2yuKMwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQAh3n6+6+wrWjfQc0PYua+M5sB7QMU1K0jo3Hs+lwYiMEnIZNbdQgnuNAYHm4cf3Qy1YLt9XkMQdzwRz3kbSUQ4iythOby2GBEgCZ7fr17h/2o7VL9QC+hMUqsBXWYEQ1JuYz/L64X60sbIgt2qLy+oeA4WEVc1Yuz7DQsJG0qZRovVQvRy0cL7RHc6uiraaUxsKX7WFzNf6KlT1C1GeFJzcPSTclYMtHR3UgecUEaEenPciPMmUsJY5AOmZqxvJT62Nit9iuR18SieBNK+rJTrmxF4AV5Q7PE7Dhq5HBZhy7gE0UG1XfvSVSIcJcbMiDLxa+lXCFCVOf7drq2CaaIc6UQ0UXTeVmdbkJPid1/pvGLbIyL4UmOqxpzETcIRJKtvhF3UF1cD86/V/77qtZh0UeoCMGSdarZFvWB4As4PrEuvJB6Sfo1D++dCfQkfFEhQZO7wk1zLUB3Pqip2Io3eLn1oXMPxqtoYYH1vGv3HANhd8hVuO3ujYQgb9InLCnl7qPix5f8QrnRA4q72gpofoBnfGziMAyo9EKBib72waWaIpHi8Aw1XJntpHwld0gOV/cs/BquYdtqJpdW2FpoUvP4SbbxUVyDub+Uu2+Q9LKuIFlG4fqgRCUQ5NbgB5wmTxlYEc0xTb/VNICUtDSga4Fjeznm5l0oc4NoS6G4wzw=="},{"issuer":"C = LT, O = State Enterprise Centre of Registers, CN = LT_DGC_CSCA_1","subject":"C = LT, ST = Lithuania, O = Ministry of Health of The Republic of Lithuania, CN = LT_DGC_DSC_1","notbefore":991849826000,"notafter":991849826000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnhBpxzeGXNlQs7U+j/Av\n1BUZ6CCgMR3bFLT4rRjO8KQ4IpAKqSCQ3j57MJqdumk3AUfHO5zhMZF4Awy0wqV3\noFlyP49/56KKZxGARe5UkyfPjVbl8AZpLmgYoS/Ior53TLrwmT/+zvXynzFYbOi2\nOtCtqanG+9OUhSVRrXEEB+56PpCltE31wemX1behxDuCbE4tuqyTYODFw9Le3dGC\nbHWdjxi5W3XIUNo8j2u2PKue0KS76Xv0zAYItTgChgv7mM55/G109m4MfeU7AHah\n43bJth8K8y+SxG3RYHskmNZ7sfn3w8w7WyW7D3/tKHcMt3hgIh9z3DuWeR1C296J\nyQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"MIIFBDCCArigAwIBAgIGAXni4GKHMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYwNjE5NTAyNloXDTIzMDYwNjE5NTAyNlowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ4Qacc3hlzZULO1Po/wL9QVGeggoDEd2xS0+K0YzvCkOCKQCqkgkN4+ezCanbppNwFHxzuc4TGReAMMtMKld6BZcj+Pf+eiimcRgEXuVJMnz41W5fAGaS5oGKEvyKK+d0y68Jk//s718p8xWGzotjrQrampxvvTlIUlUa1xBAfuej6QpbRN9cHpl9W3ocQ7gmxOLbqsk2DgxcPS3t3Rgmx1nY8YuVt1yFDaPI9rtjyrntCku+l79MwGCLU4AoYL+5jOefxtdPZuDH3lOwB2oeN2ybYfCvMvksRt0WB7JJjWe7H598PMO1sluw9/7Sh3DLd4YCIfc9w7lnkdQtveickCAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUwMNfEDstM4gYK8a8WQno8Qt1IZQwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQANsbkQ7P3OljNurVYmgB4g/76/tLMzbRExCuUltzxJW1zVZb4juuHNkmjIsUupaiYG8F8fQJpeRam2qgaPaPWqTYwn1lm8K+Ab4jE+9F6nyTJfvI2+BzOcGFsTUr+6If2YafJE9UMCeQWGP1kLX5srtQVTvb7fNHHnEvmijdKoqPv8Xcnkl6j53aZjeM6RrpSqrdtneHwquq9OWnjuKVDGZ1bDiIl52wjCQ+GLczPUtHai+qHNmhOibiT+JoT//fDb96vHlf40Y39zyxRFx0kx9zws8CbAPtvJOfWg6OjY50ARZRfixc6uFrCmnHtpzfcO3f+XwPBIBmvTjphZDGRqNjP46wqUv5vfpquIprhNef+jYi3k+719IBn5QuBNq4vJcMYHitK4WJ24TIxemq5YIXQYQct4t90V04Byhz7phox5P2rZJl3VBOSss7bGu64qc5Dh96joLLHFLChqqqDbhq7RI6Gl8Yn0ShUMg3WTbktTQ9dpGzYdH3wbbuMbzvGOYRTqTVGBH8eb9KJbgC0cDDhelHNXUcwn3Vvbdx3Y9KB2y50VTs9ZcawH52o4BuNwx3vO/L3Eq2EnkIZ2mobJDIGbBJUN2ttBim5muQxgEKns/QgNTpEZgBTkFjQ7mB7gIC8SHDDmU5wXe5aA3GN5/Gl5aUc3rHDmnZQKax63jw=="},{"issuer":"C = CY, ST = Nicosia, L = Nicosia, O = Ministry of Health, OU = IT Department, CN = CSCA_EUDCC_CY_01\nValidity","subject":"C = CY, ST = Nicosia, L = Nicosia, O = Ministry of Health, OU = IT Department, CN = DSC_EUDCC_CY_01","notbefore":1624399200000,"notafter":1686734602000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7S/R06707Glu721qJqvxIFzQ2LSb\nq9P2uu6nRKCBLsH5ryP3wXpggL6hGh080F462bGLTuI/hXrxEB2kR2Vjww==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICjzCCAjWgAwIBAgIJAPS0Vbm3L3MTMAoGCCqGSM49BAMCMIGBMQswCQYDVQQGEwJDWTEQMA4GA1UECAwHTmljb3NpYTEQMA4GA1UEBwwHTmljb3NpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRkwFwYDVQQDDBBDU0NBX0VVRENDX0NZXzAxMB4XDTIxMDYyNDExMjMyMloXDTIzMDYxNDExMjMyMlowgYAxCzAJBgNVBAYTAkNZMRAwDgYDVQQIDAdOaWNvc2lhMRAwDgYDVQQHDAdOaWNvc2lhMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxGDAWBgNVBAMMD0RTQ19FVURDQ19DWV8wMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO0v0dOu9Oxpbu9taiar8SBc0Ni0m6vT9rrup0SggS7B+a8j98F6YIC+oRodPNBeOtmxi07iP4V68RAdpEdlY8OjgZQwgZEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2NybC5ldWRjYy5nb3YuY3kvZHNjLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMCsGA1UdEAQkMCKADzIwMjEwNjIzMDAwMDAwWoEPMjAyMzA2MjMwMDAwMDBaMAoGCCqGSM49BAMCA0gAMEUCIQCL2pPCMNugzz3sGPDO02C6oMYvlkj6lfxPbckgmegv6QIgANPWEyptdWnK8y0WpU85VROr4cjobAkRNioquyCln00="},{"issuer":"C = NO, O = Norsk helsenett SF, CN = NO NHN CSCA PROD\nValidity","subject":"C = NO, O = Norwegian Institute of Public Health, CN = DSC HN EU 2","notbefore":991898173000,"notafter":991898773000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErbWQM5hj5SeR23DzCV0TVKrFhfYs\nmNVVSbPFxwyw4ZEfersZ3bp2h+rw2BhbLbzVHZIwWfnhaKZ72+JciUksFQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICLzCCAdWgAwIBAgITWQAAAAMkF9vUXhL/vwAAAAAAAzAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYwNzA5MTYxM1oXDTIzMDYwNzA5MjYxM1owUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEhOIEVVIDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASttZAzmGPlJ5HbcPMJXRNUqsWF9iyY1VVJs8XHDLDhkR96uxndunaH6vDYGFstvNUdkjBZ+eFopnvb4lyJSSwVo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBTjjLs+qOV9Ef2iKzss4qIJTpVymjAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIFoTcS0308Htrwu8gtsc1YX2679u/+UjB6i3iG4BvUGFAiEAirH6ggtWwXqXH94+kfwQ0A5q0pPGCdik4BIlnYmnpMk="},{"issuer":"C = NO, O = Norsk helsenett SF, CN = NO NHN CSCA PROD\nValidity","subject":"C = NO, O = Norwegian Institute of Public Health, CN = DSC AN EU 5","notbefore":1623742241000,"notafter":1686814841000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfBeQBQBjyKpvjsCujqi15xnygRMy\nhjNsEy198LzTYuB+Mje1lxIvPYkfO/PEHQFgA52gn26bHCXE75GWqq6UMw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICLzCCAdWgAwIBAgITWQAAAAY+BhnAubZsywAAAAAABjAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzA0MVoXDTIzMDYxNTA5NDA0MVowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR8F5AFAGPIqm+OwK6OqLXnGfKBEzKGM2wTLX3wvNNi4H4yN7WXEi89iR8788QdAWADnaCfbpscJcTvkZaqrpQzo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRQ+3DSiNYiK7x+Rm48SPxVU66ILzAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIQCpipDAPcRMuFYLkVIA2qxW3bikYzJzNxdvnqzDMMitFAIgFt8q+4FM53rl4bfBzwnQRpXDLaGc4bdKC0wcjBUHKyQ="},{"issuer":"C = NO, O = Norsk helsenett SF, CN = NO NHN CSCA PROD\nValidity","subject":"C = NO, O = Norwegian Institute of Public Health, CN = DSC AN EU 4","notbefore":1623742226000,"notafter":1686814826000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElH46JUamhvfj2ocSTxw9Eq7nVdP9\nOzBOxQ/zaWNXN5ucagla6nruNqfDiZXQMcz4gpZ6pcjtJl+xra2ATzZ9Pw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICMDCCAdWgAwIBAgITWQAAAAVu7yCnw/v4agAAAAAABTAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzAyNloXDTIzMDYxNTA5NDAyNlowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASUfjolRqaG9+PahxJPHD0SrudV0/07ME7FD/NpY1c3m5xqCVrqeu42p8OJldAxzPiClnqlyO0mX7GtrYBPNn0/o4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBSLtW/xwBSwzLlO3mNEzuueB3HOOTAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0kAMEYCIQDhu8xPp4rym01BCIlLAPB4UftU+yrPjxnsEPk+q4Bk4wIhAKVSgCN39hpSqqb5ErHWJdTp6+zJalGHg3Oj990zNYBY"},{"issuer":"C = SI, O = \"NIJZ, National Institute of Public Health of Slovenia\", OU = NIJZ eHealth, CN = Slovenian Digital Covid Certificate CSCA\nValidity","subject":"C = SI, O = \"NIJZ, National Institute of Public Health of Slovenia\", OU = NIJZ eHealth, CN = Slovenian Digital Covid Certificate Signer","notbefore":1622188800000,"notafter":991634013000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEmxEg2iFDaol9DVnrqIY5zkPXrBA\nNQlakmUfrBhogaDC2ZZ7fkQ2IcOJgEF4rQSyb34g5jDw88g7QaIknaLKMw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC6jCCApCgAwIBAgIUJUAGAXpxHsU1S82LcnISggTrZYcwCgYIKoZIzj0EAwIwgZcxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTEwLwYDVQQDDChTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBDU0NBMB4XDTIxMDYwNDA3NTMzM1oXDTIzMDYwNDA3NTMzM1owgZkxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTMwMQYDVQQDDCpTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQSbESDaIUNqiX0NWeuohjnOQ9esEA1CVqSZR+sGGiBoMLZlnt+RDYhw4mAQXitBLJvfiDmMPDzyDtBoiSdosozo4G1MIGyMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUhB9+YwGh9z/Z2AFAekINW9AqzMwwHwYDVR0jBBgwFoAU1u0NkxR1dJeR9jh6pZ04KsvRFV8wMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzArBgNVHRAEJDAigA8yMDIxMDUyODEwMDAwMFqBDzIwMjIwNTI4MTAwMDAwWjAKBggqhkjOPQQDAgNIADBFAiEAgD02EKWZhDUblN1geYhOR8UYvbz1kKcncPzq4Y7SgS0CIEsbjBaDw8vWDqXsbDg7gckdK6SuF16w9Uvr/peExozy"},{"issuer":"CN = Poland DGC RootCSCA 1, O = Ministry of Health, C = PL\nValidity","subject":"CN = Poland Test DGC Service 1, OU = eHealth Centre, O = Ministry of Health, C = PL","notbefore":1622022625000,"notafter":1685094625000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERG4yI/SSv70zEtVjzIrn/CypR1e0\nBZO5u8bIgltZicrg+992n2a7GucxK6zy91xq8F8XH7B0SJU75qkr8Z1d9A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIChjCCAiygAwIBAgIISPHH9eN/DsUwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTAyNVoXDTIzMDUyNjExNTAyNVowZzEiMCAGA1UEAwwZUG9sYW5kIFRlc3QgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAREbjIj9JK/vTMS1WPMiuf8LKlHV7QFk7m7xsiCW1mJyuD733afZrsa5zErrPL3XGrwXxcfsHRIlTvmqSvxnV30o4HeMIHbMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQUJtco+4DwjQXe7tYA2X0svBWc8aowKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTUwMjVagQ8yMDIyMDUyNjExNTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQD0aM2oui9agdjvs3W3CBnJzNj1QTn86txDT8z4f92U/QIgdfA1+c567xA4y/11vguxxe9nDHAtAAEpXe8FkupyFTk="},{"issuer":"CN = Poland DGC RootCSCA 1, O = Ministry of Health, C = PL\nValidity","subject":"CN = Recovery DGC Service 1, OU = eHealth Centre, O = Ministry of Health, C = PL","notbefore":1622022589000,"notafter":1685094589000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdxvWMfuk6CHCbffZWPS6bRgVYglY\ndED1NT1FCfXstUZ81AWmYOh6tbZgOF9OM1lzqdpFD1uOmEZ0A8XXYmkB1A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICgDCCAiagAwIBAgIINrcF73thXScwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNDk0OVoXDTIzMDUyNjExNDk0OVowZDEfMB0GA1UEAwwWUmVjb3ZlcnkgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3G9Yx+6ToIcJt99lY9LptGBViCVh0QPU1PUUJ9ey1RnzUBaZg6Hq1tmA4X04zWXOp2kUPW46YRnQDxddiaQHUo4HbMIHYMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQU88MJtD/tgeFEqpb+Her86lI3G3UwKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTQ5NDlagQ8yMDIyMDUyNjExNDk0OVowCwYDVR0PBAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQDA6URDSMLbEYaFP1V1bfDlZDE5aANs8FcjghZGnadrHwIgbCe6gwSV5PAMwGXMgtbf9ItPzgFxV67mZzvH+avXOck="},{"issuer":"CN = Poland DGC RootCSCA 1, O = Ministry of Health, C = PL\nValidity","subject":"CN = Poland Vaccination DGC Service 1, OU = eHealth Centre, O = Ministry of Health, C = PL","notbefore":1622022790000,"notafter":1685094790000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3N\nVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICiTCCAjCgAwIBAgIIPrgTduwYL84wCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTMxMFoXDTIzMDUyNjExNTMxMFowbjEpMCcGA1UEAwwgUG9sYW5kIFZhY2NpbmF0aW9uIERHQyBTZXJ2aWNlIDExFzAVBgNVBAsMDmVIZWFsdGggQ2VudHJlMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3NVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78qOB2zCB2DAfBgNVHSMEGDAWgBSReaLaaIESwKN0GqS63esPmeyLATAWBgNVHSUEDzANBgsrBgEEAY43j2UBAjBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vcDEuZXpkcm93aWUuZ292LnBsL2NjcDEvY3JsL0RHQ1Jvb3RDU0NBMS5jcmwwHQYDVR0OBBYEFEfkBAHCnTR6Ar66rg0lwacUkD9aMCsGA1UdEAQkMCKADzIwMjEwNTI2MTE1MzEwWoEPMjAyMjA1MjYxMTUzMTBaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiBrwE3IHj2Vjq71fA3jNBz/Hso3xXhVtPXa42JcfDJrvgIgLsib0ZAxm3ERXePd4Nlgvt+lISofEHlIi+CEBpJd5sE="},{"issuer":"C = FI, O = Vaestorekisterikeskus CA, OU = Sosiaali- ja terveydenhuollon palveluvarmenteet, CN = VRK CA for Social Welfare and Health Care Service Providers\nValidity","subject":"C = FI, ST = Finland, L = Helsinki, O = Kansanelakelaitos, OU = Kanta, serialNumber = 1.2.246.556.12.21.2, CN = Todistuspalvelu","notbefore":1624006800000,"notafter":1687114799000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEepKcLfnTZIej9gSNJVmR8sRYMMgz\ntnG9h0ZGWx7D1X1g32V/GtJc55HkoH+vqkbkhKJnvDBJ1JdsbkKKmBJb2Q==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = EE, O = Estonia, OU = Police and Border Guard Board, serialNumber = 01-2020, CN = CSCA_Estonia","subject":"CN = 02-2021_DCC, serialNumber = 02-2021, C = EE, O = Estonia, OU = Health and Welfare Information Systems Centre","notbefore":991993162000,"notafter":1007548762000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNf\nd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEtzCCAm+gAwIBAgIBFjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDBwMQswCQYDVQQGEwJFRTEQMA4GA1UECgwHRXN0b25pYTEmMCQGA1UECwwdUG9saWNlIGFuZCBCb3JkZXIgR3VhcmQgQm9hcmQxEDAOBgNVBAUTBzAxLTIwMjAxFTATBgNVBAMMDENTQ0FfRXN0b25pYTAeFw0yMTA2MDgxMTM5MjJaFw0yMzEyMDUxMTM5MjJaMH8xFDASBgNVBAMWCzAyLTIwMjFfRENDMRAwDgYDVQQFEwcwMi0yMDIxMQswCQYDVQQGEwJFRTEQMA4GA1UEChMHRXN0b25pYTE2MDQGA1UECxMtSGVhbHRoIGFuZCBXZWxmYXJlIEluZm9ybWF0aW9uIFN5c3RlbXMgQ2VudHJlMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNfd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4KOBtzCBtDAdBgNVHQ4EFgQUrz4uJgDuJ+1fAWhBPQpmWJOqvUMwKwYDVR0QBCQwIoAPMjAyMTA2MDgxMTM5MjJagQ8yMDIxMTIwNTExMzkyMlowDgYDVR0PAQH/BAQDAgeAMDUGA1UdHwQuMCwwKqAooCaGJGh0dHBzOi8vd3d3LnBraS5wb2xpdHNlaS5lZS9jc2NhLmNybDAfBgNVHSMEGDAWgBRVq9JvhX7uQOBhSt+YPiu2k2xVvDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIAOCAgEAJ/OIJaw1Hg+yD7TH3YPG7ux6I4Fpx1QC1UPdIouG0HcHm8Lde+cB1IHlHc/C03jvVWnkbeH0mlpHLcStNICIgc8wfhOLS/yDvor/sYSNNX2v9OcJuxWmL6a2b3C5vuQJNr09HrSqv+1MDM/Qj7qRSraO9JSm59StyaoEdZXgK40eNnSxfRD2HFRpqr6aY+FB7ONH53/nCi/PT+fW6LB2hS+VtBUaWt1pShs2W8cahNJ/O6oujquKDhTj8uqdbhV9lug2JJ2/eLxWawEYVGC20HMrg9qwW971mR3UeGZmbJb0KyHr4b1LupC+sN88/A0CwCybS3x2Dla/OvPff7W1BqFyhEzBgDL1jB9iVF57erYGkoPd9oHKTIQdZ84u7JKLvi13xJGAR4KAsryrfP0Wcc29+TQJPZwedaauz96OUpC92hcu21cI5drikSF/Y9U96gGay0AWHM+DafA6NEUiWRMIFC3IaMjMr6FFwz4uq6KTK08YZoN/Dn09eVgrBcXqHR69FSJ00lwduDDamN9JHmy5wuLw22rDaXiymUYAkZZCc1PS2yJG8bIOfzYEAHAbESlJQ671MmudVDRM3PuvVICRp0jXZg/sNzT053rDpk0Z2nxKLcAVzPo0wRgnpih1zVchVTakNbWxwsOPftCSVnZjEhAHvq/GZ3ysssMNRUc="},{"issuer":"C = AT, O = BMSGPK, serialNumber = 001, CN = AT DGC CSCA 1\nValidity","subject":"C = AT, O = BMSGPK, serialNumber = 001001, CN = AT DGC DSC 1","notbefore":991482324000,"notafter":1639662324000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYE24qIKmdcfRWUh2TqklkfZ6nyNB\npX4VHeLMxfFl8rkQ8Zku0bcnH5OZXckkSt+tKs+FGZ9tKJ1VtNDmedlL6w==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIB7zCCAZagAwIBAgIKAXnM+L47fmBcezAKBggqhkjOPQQDAjBEMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQwwCgYDVQQFEwMwMDExFjAUBgNVBAMMDUFUIERHQyBDU0NBIDEwHhcNMjEwNjAyMTM0NTI0WhcNMjMwNjAyMTM0NTI0WjBGMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQ8wDQYDVQQFEwYwMDEwMDExFTATBgNVBAMMDEFUIERHQyBEU0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGBNuKiCpnXH0VlIdk6pJZH2ep8jQaV+FR3izMXxZfK5EPGZLtG3Jx+TmV3JJErfrSrPhRmfbSidVbTQ5nnZS+ujbjBsMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUNs2smrjBhuR5Bqxl6teE1x1o2ycwHwYDVR0jBBgwFoAUHyKsHGUWKbTBmLNjb7/dCZ27e3swGgYDVR0QBBMwEYEPMjAyMTEyMTYxNDQ1MjRaMAoGCCqGSM49BAMCA0cAMEQCIDjXHnyzq3sTisMX1uY8xQ2ZqCRL2xmxtYOPhSZ9ZacYAiAqHUMOC7WNgq4h28n31WLc1mMPAYauWslSEwnXC79AGw=="},{"issuer":"C = BG, O = Ministry of Health, OU = Health Information System, CN = Bulgaria DGC CSCA 1\nValidity","subject":"C = BG, L = Sofia, O = Ministry of Health, OU = Health Information System, CN = DGC DSC 1","notbefore":1622198511000,"notafter":1685270511000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmyxlsE2inBusapxY7LvRiPN0s+ds\nHnakaaa9M/5NDZZTljSZCzeK77fWO9MFRcGCXrTQaXNE3FhkV4+a92hRaw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICpDCCAkugAwIBAgIURXVV/Gq2Irn6g/NqhBUW+K90bQowCgYIKoZIzj0EAwIwbDELMAkGA1UEBhMCQkcxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDEiMCAGA1UECwwZSGVhbHRoIEluZm9ybWF0aW9uIFN5c3RlbTEcMBoGA1UEAwwTQnVsZ2FyaWEgREdDIENTQ0EgMTAeFw0yMTA1MjgxMjQxNTFaFw0yMzA1MjgxMjQxNTFaMHIxCzAJBgNVBAYTAkJHMQ4wDAYDVQQHDAVTb2ZpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMSIwIAYDVQQLDBlIZWFsdGggSW5mb3JtYXRpb24gU3lzdGVtMRIwEAYDVQQDDAlER0MgRFNDIDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASbLGWwTaKcG6xqnFjsu9GI83Sz52wedqRppr0z/k0NllOWNJkLN4rvt9Y70wVFwYJetNBpc0TcWGRXj5r3aFFro4HEMIHBMAwGA1UdEwEB/wQCMAAwLAYDVR0fBCUwIzAhoB+gHYYbaHR0cDovL2NybC5oaXMuYmcvY3NjYTEuY3JsMB8GA1UdIwQYMBaAFFeMHPlme+J4tvwi8r3u4ZCmP7FWMB0GA1UdDgQWBBS+Zk3uynTTHvB0Mb9eAgWF0vA6DDAOBgNVHQ8BAf8EBAMCB4AwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNHADBEAiBjSeBvjP2L5USPCkCAZggp/d4Mw/PUGt17jQdEet7f1AIgFI0GKAKWwdMW+xDfZmN4XAv27Z20ryj6kFY08jdIlo0="},{"issuer":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-CSCA-PROD-20210608, emailAddress = webmaster@llv.li\nValidity","subject":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-DSC-TEST-PROD-20210608, emailAddress = webmaster@llv.li","notbefore":991978920000,"notafter":991978920000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBnFUjr8FpfpVaVFtCUW7Yg6JBk/n\n1TlJKEKpm/rZOvAEzKpwoTCpXpXPP1SPGhvQXzJ+i4dBQHgbdw2SDpcZmQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC8zCCApqgAwIBAgIIP9+ZLHC2FYQwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc0MjAwWhcNMjMwNjA4MDc0MjAwWjCBlDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEmMCQGA1UEAxMdREdDLU5CLURTQy1URVNULVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQGcVSOvwWl+lVpUW0JRbtiDokGT+fVOUkoQqmb+tk68ATMqnChMKlelc8/VI8aG9BfMn6Lh0FAeBt3DZIOlxmZo4HXMIHUMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFKdEjVLpS/bdKCMQdvpMviuko+rEMB8GA1UdIwQYMBaAFPSeeHwW3w57BFMM1pp4NCgcTd+FMA4GA1UdDwEB/wQEAwIHgDA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vY3JsLmxsdi5saS9ER0MtTkItQ1NDQS1QUk9ELTIwMjEwNjA4MB4GCWCGSAGG+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwFgYDVR0lBA8wDQYLKwYBBAGON49lAQEwCgYIKoZIzj0EAwIDRwAwRAIgTvGgYK3ij9bZvyKshoyDlYrQwXR7Btj0JIcpdq6NFqECIHd6ABGRr+NyKJjnlB7ZlYiJDfrERVPyF/q/Esmhv56P"},{"issuer":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-CSCA-PROD-20210608, emailAddress = webmaster@llv.li\nValidity","subject":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-DSC-RECOVERY-PROD-20210608, emailAddress = webmaster@llv.li","notbefore":991979820000,"notafter":991979820000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9B\nnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiAw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC+TCCAp6gAwIBAgIIEVh/vC3chgUwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NzAwWhcNMjMwNjA4MDc1NzAwWjCBmDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEqMCgGA1UEAxMhREdDLU5CLURTQy1SRUNPVkVSWS1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9BnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiA6OB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBT+nyG6/wNEQ0TEblj8ow7u2bNB4DAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQDqBN9eq6TjWFWqhOkU9hvdA5hBacvUjL0Rt3i5dbV8kwIhAKhpBMwxHfoFXS7FwiuXOyj4zxZ60pPvPbxYGawo9OZI"},{"issuer":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-CSCA-PROD-20210608, emailAddress = webmaster@llv.li\nValidity","subject":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-DSC-VACCINATION-PROD-20210608, emailAddress = webmaster@llv.li","notbefore":991979640000,"notafter":991979640000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30f\ntIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC+jCCAqGgAwIBAgIIECN/LlZb7kkwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NDAwWhcNMjMwNjA4MDc1NDAwWjCBmzELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEtMCsGA1UEAxMkREdDLU5CLURTQy1WQUNDSU5BVElPTi1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30ftIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJKOB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQ3BvFcjsG6REaqwESNcZW1BjNTwDAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQECMAoGCCqGSM49BAMCA0cAMEQCIEEnfB5SgmatugluROBG4Q06cVdBulDo4S4vQJXO0lj2AiABMtLp5pBQA/cS9ksKlYkCuj/X2TTnM3yIPhngaEN/7A=="},{"issuer":"CN = CSCA Saude, serialNumber = 001, O = Republica Portuguesa - Portuguese Republic, C = PT\nValidity","subject":"CN = DGC DS, serialNumber = 001, O = Republica Portuguesa - Portuguese Republic, C = PT","notbefore":1621606631000,"notafter":1684678630000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnjK8A8ato900a+wQ1IaxJyaeUGQ5\nlwsYOCRlq47X4DKGe+P3L22utYcGTWtCekBqarcEzzSHH/X+s5aeEQgYYA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICKTCCAc6gAwIBAgIUb724peU13ddK2UiaXfZ8lJA3KpAwCgYIKoZIzj0EAwIwZTETMBEGA1UEAwwKQ1NDQSBTYXVkZTEMMAoGA1UEBRMDMDAxMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vlc2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMB4XDTIxMDUyMTE2MTcxMVoXDTIzMDUyMTE2MTcxMFowYTEPMA0GA1UEAwwGREdDIERTMQwwCgYDVQQFEwMwMDExMzAxBgNVBAoMKlJlcHVibGljYSBQb3J0dWd1ZXNhIC0gUG9ydHVndWVzZSBSZXB1YmxpYzELMAkGA1UEBhMCUFQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASeMrwDxq2j3TRr7BDUhrEnJp5QZDmXCxg4JGWrjtfgMoZ74/cvba61hwZNa0J6QGpqtwTPNIcf9f6zlp4RCBhgo2AwXjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFH4yvG+XLvlf69AVR2efiYzKIWgOMB0GA1UdDgQWBBQlYiuUojmAFDYjAmowakBbgeqeNTAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSQAwRgIhALe/oIGICdSXhdPOH7yFiPAUR/FhjdX+dsCyvU8Am4pLAiEA2HtA78ZO3jLs7BoIgh+xZ5fqaJbCIFMdwVzdJ/hCvWY="},{"issuer":"C = LV, O = VAS Latvijas Valsts radio un telev\\C4\\ABzijas centrs, 2.5.4.97 = NTRLV-40003011203, CN = Digital Green Certificate CSCA\nValidity","subject":"CN = LV DSC 002, O = Nacion\\C4\\81lais vesel\\C4\\ABbas dienests, C = LV","notbefore":1624978495000,"notafter":1688050495000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5/m2YdN8L81Ajoi+2brFJbul628a\nlfXRXU26t7hRYEvvsb74tSVm2Dm9cbuhrgFJ+/wXecdxh0tTSHCkMfB0hQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE4DCCAsigAwIBAgIQIVI8+7pCJKdg21Bf1/kMnDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA2MjkxNjU0NTVaFw0yMzA2MjkxNjU0NTVaME0xEzARBgNVBAMMCkxWIERTQyAwMDIxKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOf5tmHTfC/NQI6Ivtm6xSW7petvGpX10V1Nure4UWBL77G++LUlZtg5vXG7oa4BSfv8F3nHcYdLU0hwpDHwdIWjggFEMIIBQDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMB0GA1UdDgQWBBRJf+oSyT8lY9W8EXkcQkkbATciFzAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQA4+nXE7XWgwDhBUeldjoFgT1kRu6D5LzgFUsrTqicHFjGWXeXQKBnM9Dfx8iZBSY64O7FS/ompqIGxMFFZcBRYUgdaC9KQorL48w4b8WFCSQe0KUhDNqdlACWceq6/0tVtfek1M85bQ+ETU6InqY5sir7cZpyXFRXXXbdHqXjioC/EwfRo1/OB3wBX3/9HWcebIEskw4or2Z5p5BERPi2EQfp5cfv6BpH7tPYt0XJ7vA9WhsLLZGWPfKIU10iBF/DTGW5c2u/3yVCEbF215khpXx187kvXchIln4ZCbIiGkJrJRmnS6XZ++1c0BQpW4tdvUvxhuhqqln7GQPrOZK6HoOwFOjOC/k0oIkgYzJ+8xv7DA2PIXlOjSmkuZIqB4fr3DVKtnAVqWKKxnBMXqgyYlJenTUvp7OpUl+iYKqvSn7WX2F0wZQlYH+Gz1pGDdeyw4+cKZtUND6rFwHC9OxzeXM00wDp+G7O7IFBtwzaVrO/hRFGTG0W6vOv0Shc0lmVj++IzItVQx/SJRl9Lkfz58sQbRE8FphiUw4Wza3ad/eFafjDH3r0gtT/WA8aKUEp5j70kmb5XXIk9UMkk/T7385FRL3Q1ciqyoOVrRhL10wkEO+DDXuaqawXXtTz+3MDWX43TcE4wtQYDfw9i3tiDKkpzyRm43VvWoIDzGPDZ8g=="},{"issuer":"C = LV, O = VAS Latvijas Valsts radio un telev\\C4\\ABzijas centrs, 2.5.4.97 = NTRLV-40003011203, CN = Digital Green Certificate CSCA\nValidity","subject":"CN = LV DSC 001, O = Nacion\\C4\\81lais vesel\\C4\\ABbas dienests, C = LV","notbefore":1622213400000,"notafter":1685285400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPUwE7htr+kD1eVnJBfRf5tx0kA17\nqu4p1wRz3EKPxsJyyIznIqr9+HsnMd7k9ID/f0deqjP8dulzS2cFrVVnFQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE4zCCAsugAwIBAgIQfBNf4Ug47/BgsR84n0s5NDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA1MjgxNjUwMDBaFw0yMzA1MjgxNjUwMDBaME0xEzARBgNVBAMMCkxWIERTQyAwMDExKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD1MBO4ba/pA9XlZyQX0X+bcdJANe6ruKdcEc9xCj8bCcsiM5yKq/fh7JzHe5PSA/39HXqoz/Hbpc0tnBa1VZxWjggFHMIIBQzAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRivdWHr9big4cJkaojQ5INsdnuNDAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCCMrABdfqTT+3ux1VQ5RdqsFgArimneuPxVHSSitIqZ3rPwkS0EsTl5fUm6m5ZqxZreu5ChfGMzC9+/Z4OQfafuvVp0i/T5eD+oiN46g33bdcbxhaBg0i7++xpbRGKM5Wh9LuEW4iUq/wIxJBEJdYFGyvF2eP95mFMadKxcs8+aKdHWEix9CUgJozMEKsAslG81xYlSzVtCmAT5qraC9uz/qGTj/bYfivtMCEdChp7BWp7MP4hD3UG2rW+wxHzD1gYLy7NqqRG3+qPfolNM0SqliZederytEYoszv2zLoUleVGPq33XavqLTfCgPhOqhxPsnH0NLcuJkgSeq5yxg8FWQaRdIR6+BlENzVQ6LYNamsuBRxNZPDurKXL58rt/8dZoeEIn+qO92mo8oVrD4xDOHvjJJIuOqZ2zcODbvV/wBhCXjrTDBiUSe9tpeagE5UKfLN/pyh3TGzMzVyo5Tn30ihqXEIX6IawpZfLJNslZnEbDFi1/2K8b00t78x7pNTSFKyXou8VaabQVPspvuWsoW9D0nyig1ymLcCrSFpnCpf/GEKONRYI6Zi+LYpWzjI81/DzVyC49Gh25ZX6Z0k6ThgDq1J4qmiGU3I1W+VcQ+fNtTsCz9fv2Kdi62U0oYqmt3FAc2Vnt30yoKqgnSfyD4xhZSafHxz2ml0jFS1xzg=="},{"issuer":"C = DK, O = The Danish Health Data Authority, OU = The Danish Health Data Authority, CN = PROD_CSCA_DGC_DK_01, emailAddress = kontakt@sundhedsdata.dk\nValidity","subject":"C = DK, O = The Danish Health Data Authority, OU = The Danish Health Data Authority, CN = PROD_DSC_DGC_DK_01, emailAddress = kontakt@sundhedsdata.dk","notbefore":1621410445000,"notafter":1684568845000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBmdgY/VORsecXxY/0xNNOzoJNRaV\nnMMmHs5jiXrGvaDOy1jzDUOyvR++Jxgf0+YuGyp5/UAY0QIh75b+JQnlHA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICyzCCAnGgAwIBAgIBATAKBggqhkjOPQQDAjCBqTELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEcMBoGA1UEAwwTUFJPRF9DU0NBX0RHQ19ES18wMTEmMCQGCSqGSIb3DQEJARYXa29udGFrdEBzdW5kaGVkc2RhdGEuZGswHhcNMjEwNTE5MDk0NzI1WhcNMjMwNTIwMDk0NzI1WjCBqDELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEbMBkGA1UEAwwSUFJPRF9EU0NfREdDX0RLXzAxMSYwJAYJKoZIhvcNAQkBFhdrb250YWt0QHN1bmRoZWRzZGF0YS5kazBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAZnYGP1TkbHnF8WP9MTTTs6CTUWlZzDJh7OY4l6xr2gzstY8w1Dsr0fvicYH9PmLhsqef1AGNECIe+W/iUJ5RyjgYgwgYUwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBRXm2TEfVc2DPhwR/do67XrHDz4FzAfBgNVHSMEGDAWgBSb8DXRV1S8RJEI55z8etM+2ZXtSjAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMAoGCCqGSM49BAMCA0gAMEUCIB+IJn+8uICEfEnONXufysFrmtYBcTppGomj1Pr8WZF8AiEA0c3LZ3OShcmWfin0kwWzbf39irEMvJlF1idothpb0Eg="},{"issuer":"C = IT, O = Ministero della Salute, CN = Italy DGC CSCA 1\nValidity","subject":"C = IT, O = Ministero della Salute, CN = Italy DGC DSC 1","notbefore":1620800297000,"notafter":1683871919000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/\njbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehojw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEDzCCAfegAwIBAgIURldu5rsfrDeZtDBxrJ+SujMr2IswDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjEwNTEyMDgxODE3WhcNMjMwNTEyMDgxMTU5WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/jbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehoj6OBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFC4bAbCvpArrgZ0E+RrqS8V7TNNIMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAjxTeF7yhKz/3PKZ9+WfgZPaIzZvnO/nmuUartgVd3xuTPNtd5tuYRNS/1B78HNNk7fXiq5hH2q8xHF9yxYxExov2qFrfUMD5HOZzYKHZcjcWFNHvH6jx7qDCtb5PrOgSK5QUQzycR7MgWIFinoWwsWIrA1AJOwfUoi7v1aoWNMK1eHZmR3Y9LQ84qeE2yDk3jqEGjlJVCbgBp7O8emzy2KhWv3JyRZgTmFz7p6eRXDzUYHtJaufveIhkNM/U8p3S7egQegliIFMmufvEyZemD2BMvb97H9PQpuzeMwB8zcFbuZmNl42AFMQ2PhQe27pU0wFsDEqLe0ETb5eR3T9L6zdSrWldw6UuXoYV0/5fvjA55qCjAaLJ0qi16Ca/jt6iKuws/KKh9yr+FqZMnZUH2D2j2i8LBA67Ie0JoZPSojr8cwSTxQBdJFI722uczCj/Rt69Y4sLdV3hNQ2A9hHrXesyQslr0ez3UHHzDRFMVlOXWCayj3LIgvtfTjKrT1J+/3Vu9fvs1+CCJELuC9gtVLxMsdRc/A6/bvW4mAsyY78ROX27Bi8CxPN5IZbtiyjpmdfr2bufDcwhwzdwsdQQDoSiIF1LZqCn7sHBmUhzoPcBJdXFET58EKow0BWcerZzpvsVHcMTE2uuAUr/JUh1SBpoJCiMIRSl+XPoEA2qqYU="},{"issuer":"C = BE, O = eHealth - Belgium, CN = Belgium Covid19 Country Signing CA 01\nValidity","subject":"C = BE, O = eHealth - Belgium, CN = Belgium Covid19 DSC 01","notbefore":1622103167000,"notafter":1685175167000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHo\nznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICLTCCAdOgAwIBAgIIXf7//TpWDVgwCgYIKoZIzj0EAwIwWTELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMS4wLAYDVQQDDCVCZWxnaXVtIENvdmlkMTkgQ291bnRyeSBTaWduaW5nIENBIDAxMB4XDTIxMDUyNzEwMTI0N1oXDTIzMDUyNzEwMTI0N1owSjELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMR8wHQYDVQQDDBZCZWxnaXVtIENvdmlkMTkgRFNDIDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHoznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyKOBkzCBkDAdBgNVHQ4EFgQUr/AjSs5HKJsXQVr617Z6OO2Z9h8wHwYDVR0jBBgwFoAUMc4oJrfby5Fk9eLZSMutpWhvX9UwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NlcnQtYXBwLmJlL3Jldm9rZWRMaXN0L2RnY19jc2NhMDEuY3JsMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiA56koPekERN3iWtlXwuD8rwBgbsTkZj2Yqe8kL2doIbwIhAKYOJyyIeR4Po523PY5rniN4jaaSkgefulusXXKiEthU"},{"issuer":"CN = IS DGC CSCA 1, serialNumber = 1, OU = Directorate of Health, O = Directorate of Health, C = IS\nValidity","subject":"CN = IS-DSC-1, serialNumber = 1, OU = Directorate of Health, O = Directorate of Health, C = IS","notbefore":1623399505000,"notafter":1686471505000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEO42X7C2X5bSDTnfSJwnk4qAjSk2m\n11Cy/mmFqryl7J1MhrZDfy77ky4uS0o1iW181Ev51mAiW0J3i3SeKYeEOw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIBxTCCAWwCAgQRMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA2MTExMDE4MjVaFw0yMzA2MTExMDE4MjVaMGwxETAPBgNVBAMMCElTLURTQy0xMQowCAYDVQQFEwExMR4wHAYDVQQLDBVEaXJlY3RvcmF0ZSBvZiBIZWFsdGgxHjAcBgNVBAoMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDELMAkGA1UEBhMCSVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ7jZfsLZfltINOd9InCeTioCNKTabXULL+aYWqvKXsnUyGtkN/LvuTLi5LSjWJbXzUS/nWYCJbQneLdJ4ph4Q7MAoGCCqGSM49BAMCA0cAMEQCIFH/Cm+epgBJoz2S3eZaSPQLb2+3seJAEe2rgvrTcA4ZAiB6kXpC2VR9kqcv+HpDrbmx4Xq3PgTsQ5HxY1B5vepJ2g=="},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\nValidity","subject":"CN = MLT-DSC-TEST-001, O = Government of Malta, C = MT","notbefore":1624226400000,"notafter":1687384799000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfapP8+QeyFgXVvY41YkQudlUUh7I\nZBBpIdOJ34xYmxCEuHXbVUFqt/JSnbpVsGsd7ZBPUjL2u5Ks9moBMDEPLg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICfjCCAiOgAwIBAgIIejS7d37VXgEwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMTEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR9qk/z5B7IWBdW9jjViRC52VRSHshkEGkh04nfjFibEIS4ddtVQWq38lKdulWwax3tkE9SMva7kqz2agEwMQ8uo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFBR+KFEXuumXgCc5GWe258iqVrnfMHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNjIxMDAwMDAwWoEPMjAyMTEyMjEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDBnG+uLfchypa5wnmHMUi2aWEzWkbjoGgn5WsWmXffcAIhAKMusBaq7xzWVRMreNFvQsitrCaSaqDoQPvQuU72+SjN"},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\nValidity","subject":"CN = MLT-DSC-VACCINATIONS-001, O = Government of Malta, C = MT","notbefore":1624226400000,"notafter":1687384799000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1q1nvgXLGIbibQuYQU+f+Xs+mcbP\nmukAc3KQAyy/5KZH+n5F4bG4V0XIjphX093YxHh1JbHWOzuhKuan9FboyA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIChTCCAiugAwIBAgIIZEwDM+Nt1KMwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAxMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNatZ74FyxiG4m0LmEFPn/l7PpnGz5rpAHNykAMsv+SmR/p+ReGxuFdFyI6YV9Pd2MR4dSWx1js7oSrmp/RW6MijgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUuCrjQfrYEdJhuUeDcYx4JKEFOf4weQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA2MjEwMDAwMDBagQ8yMDIxMTIyMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIgZGBb0sNv06M+s8UpL7ziN/FU4+4AGksrMB2BIIkZDBwCIQDXwcZZQKZFsV55HpRm/AxXSBLXu4vPFR2Lx3rdqy0nFg=="},{"issuer":"C = SE, O = Swedish eHealth Agency, OU = Digital Covid Certificate Services, 2.5.4.97 = 202100-6552, CN = Swedish Digital Covid Certificate CSCA\nValidity","subject":"C = SE, O = Swedish eHealth Agency, 2.5.4.97 = 202100-6552, CN = DCC Signer","notbefore":1624248451000,"notafter":1687321651000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaLOo1IGTspZSdr2BqdAvKjZjHfW/\nZq8VDrI6nEhBlXUr3VCDlzjrXo5v6ix2qF9RCySJsHgZxUrqWQpFQbrbMw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDbzCCAtGgAwIBAgIRAKzjP3XRAzwsEbbfxdhLsK0wCgYIKoZIzj0EAwIwgaIxCzAJBgNVBAYTAlNFMR8wHQYDVQQKDBZTd2VkaXNoIGVIZWFsdGggQWdlbmN5MSswKQYDVQQLDCJEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIFNlcnZpY2VzMRQwEgYDVQRhDAsyMDIxMDAtNjU1MjEvMC0GA1UEAwwmU3dlZGlzaCBEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIENTQ0EwHhcNMjEwNjIxMDYwNzMxWhcNMjMwNjIxMDYyNzMxWjBZMQswCQYDVQQGEwJTRTEfMB0GA1UECgwWU3dlZGlzaCBlSGVhbHRoIEFnZW5jeTEUMBIGA1UEYQwLMjAyMTAwLTY1NTIxEzARBgNVBAMMCkRDQyBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARos6jUgZOyllJ2vYGp0C8qNmMd9b9mrxUOsjqcSEGVdSvdUIOXOOtejm/qLHaoX1ELJImweBnFSupZCkVButszo4IBLjCCASowCQYDVR0TBAIwADArBgNVHSMEJDAigCACTjrfhadUh3CvxKG9ilhNH5em/z3iqGdiDEqCy0uCujApBgNVHQ4EIgQgcumMkPVDerXtTa5yvY0Vp+vbcHWxuiqfF0N9MU0I6hEwDgYDVR0PAQH/BAQDAgOIMD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHBzOi8vZGdjZy5jb3ZpZGJldmlzLnNlL2NzY2EvY3JsL2NzY2EwMS5jcmwwRwYIKwYBBQUHAQEEOzA5MDcGCCsGAQUFBzABhitodHRwczovL2RnY2cuY292aWRiZXZpcy5zZS9jc2NhL29jc3AvY3NjYTAxMCsGA1UdEQQkMCKBIHJlZ2lzdHJhdG9yQGVoYWxzb215bmRpZ2hldGVuLnNlMAoGCCqGSM49BAMCA4GLADCBhwJCAJH08xci9Y2aQQcUJTnA+WIVSblO5K/ncVsYFd+jzM/m1chhh7CD75oN5twgWMl0aPMcjqaylNH/p82zPONaERqmAkEyCrbICfyUiio20CrFRmWS8KWq4LL8dkHapxgqVrG75/3xrmhAdxlH1WoC+Af1I602E6dsaCZw6mmMY0GPOEvGhw=="},{"issuer":"C = CZ, O = MZCR, CN = CZ DSC CSCA 1\nValidity","subject":"C = CZ, O = MZCR, CN = CZ DSC 1","notbefore":989151840000,"notafter":989151840000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3l\nAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKUw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0AzMA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDUwNjE0MjQwMFoXDTIzMDUwNjE0MjQwMFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3lAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKU6NdMFswHQYDVR0OBBYEFDReRuL4VneLcO8YqdVWn2+gpPl9MB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQAZpv8/b4k+QxliHeWKAiJ34OKMEYh8xn1Dc9+55f+h0NLY4ZSelGrf2SrJIt9yhomzjOQUARqiumbuSzZMMPUNzKIRsPSa1NkfRq7y3QehG+cuhKKdLYpWErjRdp97gubCVGLXld7+iuschYCwAztKnyPof94yPgAGkdCEnTNW1z6tc33E/Fnd59nF8/JBZdSTt2uRXxFY8plasmoRzdXYASwTUyXXheZcG+KNYJ5NxYSF3LJeF81ucJ6mWkAk+MwoJXVu7VVZ6pn51JPL+YyArV2FaN8lWs9QYW2XgCuUTm4IC9T/BgVKTstr6eGQiHLOEbyE8NmLond1Bzv27ClLXEBvL9lIqJ5hJFvVWbfpNPvJAjI4z3LA7DuYgQ3ws8mf0iMW+4aOkLCd7dv0HNcUPoHUOTelgcfAzEsZuajUcH3uGwgcs2wEBdW1KfqEP8L7bgwBGC+UGe1yeGM4k7OYOnGP2SMm3Gk+MrYaqW51Fun20bcXkagDxMJh06PpDm4="},{"issuer":"C = CZ, O = MZCR, CN = CZ DSC CSCA 1\nValidity","subject":"C = CZ, O = MZCR, CN = CZ DSC 2","notbefore":1623312378000,"notafter":1686384378000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2k\nYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0A0MA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDYxMDEwMDYxOFoXDTIzMDYxMDEwMDYxOFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2kYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOqNdMFswHQYDVR0OBBYEFAKjMTdShDzGev/eNqlHHzJIHdXVMB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQA3d3iNHRpsKWia1XiF5QQlKUFwcvDdtAlFhfmy99oI+ywmppys7xoeOrIKazIyAyZ3tNImPkcde0ARSvMmAzsr6T/BqxsV78htXzUoILy1z6Y8QZ8+RXcNmR79k9iqudKv5tWZ2S2ticNeo78WV6oB18oV5/hhLlkS/NQC5wZ5LJar+wEF1VaxkvG2GmooaODPgPbRutjStTamSu2Din4SRg8pIWlyCMy0qnzVDMzdYUsjvmC3myxzHevFSTs36hj1aiLxaeAmVTvCi39o6s0EBjyM8Yk2WHJS9k5EkvBcJcEx4z55RkBLKo4PJalQS1hJc62GFM3J3lyyKqecSZBn2xj5bM8UEkI+8ylHsF/D3vrjtu1MaxM9loTogvf8wu4S7DMP/yXBanmr2G4k132JbSX7goclMF2zel7kGAn2B2vUQrGM76Rqb4lkddPWCc+0dossH1zAvbOAo5+raC9xaUU00GC3wR7+30xjJtBw0JbDlSBk3l1xnGnvLehkqV8="},{"issuer":"C = IE, ST = Dublin, L = Dublin, O = Department of Health, OU = eHealth, CN = CSCA_DGC_IE_01\nValidity","subject":"C = IE, ST = Dublin, L = Dublin, O = Department of Health, OU = eHealth, CN = DGC CSR","notbefore":1625053135000,"notafter":1688125135000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZ\nwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8Q==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICmDCCAj+gAwIBAgIJAIFaAnBKVQR3MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNjMwMTMzODU1WhcNMjMwNjMwMTMzODU1WjByMQswCQYDVQQGEwJJRTEPMA0GA1UECAwGRHVibGluMQ8wDQYDVQQHDAZEdWJsaW4xHTAbBgNVBAoMFERlcGFydG1lbnQgb2YgSGVhbHRoMRAwDgYDVQQLDAdlSGVhbHRoMRAwDgYDVQQDDAdER0MgQ1NSMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8aOBtzCBtDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFBgOd1YgJce5VyyJvYhrUDZbtTrZMB8GA1UdIwQYMBaAFFyHtiXkK1RtMZIunZlmC1W5b0xQMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9jZXJ0Lmdvdi5pZS9DUkwvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCICD5ra8JbGVJCDS7k9BeY1D8SlL8dv8eVH8mMXKFJek4AiEA5j7KharjyLlp7GtXvJeS+Ht+0dgaaesqpMNfuPH7TmI="},{"issuer":"C = RO, O = Ministerul Sanatatii, CN = AC Ministerul Sanatatii\nValidity","subject":"C = RO, O = Ministerul Sanatatii, CN = BSC","notbefore":986076000000,"notafter":1782128159000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1Di\nHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5cw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIElDCCAnygAwIBAgIFFhg4IyAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCUk8xHTAbBgNVBAoMFE1pbmlzdGVydWwgU2FuYXRhdGlpMSAwHgYDVQQDDBdBQyBNaW5pc3RlcnVsIFNhbmF0YXRpaTAeFw0yMTA2MTgxMzM1NTlaFw0yNjA2MjIxMzM1NTlaMDoxCzAJBgNVBAYTAlJPMR0wGwYDVQQKDBRNaW5pc3RlcnVsIFNhbmF0YXRpaTEMMAoGA1UEAwwDQlNDMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1DiHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5c6OCAVYwggFSMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUVyznYDPTSIjlI6bI6W+mgQc9JjwwHwYDVR0jBBgwFoAUMuKQDubF6PpGuKuAPWshl3a4SCEwGgYDVR0RBBMwEaQPMA0xCzAJBgNVBAcMAlJPMBoGA1UdEgQTMBGkDzANMQswCQYDVQQHDAJSTzAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vY2Euc3RzaXNwLnJvL2NybC9ER0MuY3JsMDMGA1UdJQQsMCoGDCsGAQQBAI43j2UBAQYMKwYBBAEAjjePZQECBgwrBgEEAQCON49lAQMwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vY2Euc3RzaXNwLnJvOjI1NjAwKwYDVR0QBCQwIoAPMjAyMTA0MDEwMDAwMDBagQ8yMDI2MDcwMTAwMDAwMFowDQYJKoZIhvcNAQELBQADggIBAFLRYkrv2Jp8XNhFJbMUviTLgPsDgcFDQwzdU4RH/KY3vjlIqxI/o40wct9QrN5FqRDTVIYD4Z4vLy8vhigh+DrdWfaBK+SGw11ZwigDem0Unjpqz0aFTotv8hry5n2jY/gf6YpU8pMd3t0dNF5Je5hrY1YLPJdt+BMWAizRwSAaa/OqTDP2blNqebrUTpsiXnxMXRiIHZl596RiSVsiwI/4PhU/HhfbMCg4kO8YUtgTBzWvBGohG0Znyi2bQFhwWEa1jZc2YfsIqWu4hwGz0zWOKMyx5ULZS3qkQ0EIHH2XrOx2ZxEc/5vZT27nTlKW0FCtBWeB36rLy/9dYbm+wjB86gvjYEQLAoFSY5GyCxVHaQE/HK8nFqM0oFq/4u0D7ZN9o6N6i4EfGhSRye0NCld3iaM9JdKmQNoCE9fd9OfMG9HlrQbIZvsjZ3btvtiC/R/LoyvrKz2EVbePZIVj03+GelCI0/jWq+w9YK3JIGhBfMjvCK/QnphOm0otuiuEY+0QYPKIx/c8zU5H4cEWp4NamsIRTpP13Yazh4NVjCNAU+J1rbcwGkJIRXHpL6QqL1WNt9zZSMXvw+vBoBq8yBqeLGlxPr+DFL79xhRBZnpp5mn2vUmR77k1745VwwGVMw/t9K28y5HpLcTp49f3wR0bDC+K0n/8PdcrhOXh+DTP"},{"issuer":"C = GR, CN = grnet.gr\nValidity","subject":"C = GR, CN = grnet.gr","notbefore":1621874125000,"notafter":1684946125000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFP\nen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICBjCCAaygAwIBAgIUKhlB7j/znUbHbqEQfJErud8AyPMwCgYIKoZIzj0EAwIwIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMB4XDTIxMDUyNDE4MzUyNVoXDTIzMDUyNDE4MzUyNVowIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFPen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEaOBwzCBwDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFKfRIrjTBVN2/tmTt8I32yrVl3DRMB8GA1UdIwQYMBaAFHAWm9K/JxbEXkf7XcqhKPGmpDK9MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHBzOi8vY3JsLmRnYy5zZXJ2aWNlcy5nb3YuZ3IvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiBdWbGhPUZmHxMV9eXlVEkLRY+zGdCsKVxgAMk2JYqU8AIhANkXZhiDVPD5IDiEw3Z3r0MdBxx7jy6rQzBj/K4OSgCl"},{"issuer":"CN = IS DGC CSCA 1, serialNumber = 1, OU = Directorate of Health, O = Directorate of Health, C = IS\nValidity","subject":"CN = IS-DSC-testrec-1, serialNumber = 2, OU = Directorate of Health, O = Directorate of Health, C = IS","notbefore":994090248000,"notafter":994090248000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvwlwjQL5cId7nINp/A/b+XNY/Wzg\nX9sIOde8ggZmZjXvIYhDhz7Fvs52ozmdqatDp3yIwPpr6nAMmaNTj0KdZg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIBzTCCAXQCAnBLMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA3MDIxODEwNDhaFw0yMzA3MDIxODEwNDhaMHQxGTAXBgNVBAMMEElTLURTQy10ZXN0cmVjLTExCjAIBgNVBAUTATIxHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABL8JcI0C+XCHe5yDafwP2/lzWP1s4F/bCDnXvIIGZmY17yGIQ4c+xb7OdqM5namrQ6d8iMD6a+pwDJmjU49CnWYwCgYIKoZIzj0EAwIDRwAwRAIgGuvSzxkT7wtN8UW9b8VavzmUbfC1Ojl99ZLu6iNNxbgCIHvbmygVJAEC9/GJgitb+1wQx5fHp/SEcfnkqPOqzFrn"},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\nValidity","subject":"CN = MLT-DSC-RECOVERY-003, O = Government of Malta, C = MT","notbefore":993938400000,"notafter":994024799000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDON\nYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICgTCCAiegAwIBAgIIFwgHF3EO4GkwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDMxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDONYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdaOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBR9uzKFO2DLNzUjBFGi4relF01KBTB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNIADBFAiEA99DvYsvpGT4tqpc0BMSCZeyZ7WMbt8ZM1PpabmhX8+cCIGCtDA+B0wWuPtFcN+xk/jBG5t30dSFLWQB43XkMQLug"},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\nValidity","subject":"CN = MLT-DSC-TEST-002, O = Government of Malta, C = MT","notbefore":993938400000,"notafter":994024799000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4DsoM1rJFjHyQPcX6WKDWZkouBeh\nfQGxqOgwFAYyRKXbrSuL+tkz8sJfo8djfsuQRLDSuZxud0IOsMB9YsTMpg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICfjCCAiOgAwIBAgIIJTfDXWft5tcwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMjEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATgOygzWskWMfJA9xfpYoNZmSi4F6F9AbGo6DAUBjJEpdutK4v62TPywl+jx2N+y5BEsNK5nG53Qg6wwH1ixMymo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFAdYsuwV3Y8H3ArMdIP4+88NQzj6MHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNzAxMDAwMDAwWoEPMjAyMjAxMDEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDKRMYKb/xaog2wAz78sg7nxPSSGvmXDSmGm3OAvywYtwIhAL1aS9k2jC5FGCnXL146W6TNwJOLZXhG0WELPuo1eaPF"},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\nValidity","subject":"CN = MLT-DSC-VACCINATIONS-002, O = Government of Malta, C = MT","notbefore":993938400000,"notafter":994024799000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXj9fU7e4KVYe1VakCDZjYquHzkox\nSHT8D33zeMDfyLbYi/GSVpKQtPwBPZlPx65r2Kb2warIK8BgxSgsQvMIag==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIChTCCAiugAwIBAgIIWGrho8bBjMowCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAyMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABF4/X1O3uClWHtVWpAg2Y2Krh85KMUh0/A9983jA38i22IvxklaSkLT8AT2ZT8eua9im9sGqyCvAYMUoLELzCGqjgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUOLKcvXnMDSbbBkkI/qyub1XWtNUweQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA3MDEwMDAwMDBagQ8yMDIyMDEwMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIhAPh/K0cwTwjugfRAGr47Ntn3O6iy5Dq6vtWdminY7WDrAiA/usc8ejitliKRcw9kWYkRTe5M8QTrGi0d8ISZfbWPzw=="},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\nValidity","subject":"CN = MLT-DSC-RECOVERY-002, O = Government of Malta, C = MT","notbefore":993938400000,"notafter":994024799000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNx\ndEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4Q==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICgjCCAiegAwIBAgIIK+HdvXWkN9YwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDIxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNxdEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4aOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBQpm2iI+XG+uIq9XM2lqhKzZ5i5MDB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNJADBGAiEAvxNjK3WJhVQiCHwFKMfUClW0xa0ikhLAPaHirWYEgKMCIQDWDa7xu71vGhmTaIeKuMywD+f1yfPsaCzeEpr1yUITbA=="},{"issuer":"CN = Poland DGC RootCSCA 1, O = Ministry of Health, C = PL\nValidity","subject":"CN = Poland Test DGC Service 1, OU = eHealth Centre, O = Ministry of Health, C = PL","notbefore":1622022625000,"notafter":1685094625000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERG4yI/SSv70zEtVjzIrn/CypR1e0\nBZO5u8bIgltZicrg+992n2a7GucxK6zy91xq8F8XH7B0SJU75qkr8Z1d9A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIChjCCAiygAwIBAgIISPHH9eN/DsUwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTAyNVoXDTIzMDUyNjExNTAyNVowZzEiMCAGA1UEAwwZUG9sYW5kIFRlc3QgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAREbjIj9JK/vTMS1WPMiuf8LKlHV7QFk7m7xsiCW1mJyuD733afZrsa5zErrPL3XGrwXxcfsHRIlTvmqSvxnV30o4HeMIHbMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQUJtco+4DwjQXe7tYA2X0svBWc8aowKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTUwMjVagQ8yMDIyMDUyNjExNTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQD0aM2oui9agdjvs3W3CBnJzNj1QTn86txDT8z4f92U/QIgdfA1+c567xA4y/11vguxxe9nDHAtAAEpXe8FkupyFTk="},{"issuer":"C = IE, ST = Dublin, L = Dublin, O = Department of Health, OU = eHealth, CN = CSCA_DGC_IE_01\nValidity","subject":"C = IE, O = Department of Health, CN = validateqr.gov.ie 2020135457912391810539600999694555","notbefore":994491081000,"notafter":1687851081000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETPE5ItolrGzLQLPqYxOT+orVmYJu\nsLDsPWLwrK+bbJKBBtXBsrD2Py/osWYr9LF5ffORpzxmBUQmzp7K4uPiIw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICqjCCAlGgAwIBAgIJAIFaAnBKVQR5MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNzA3MDkzMTIxWhcNMjMwNjI3MDkzMTIxWjBrMQswCQYDVQQGEwJJRTEdMBsGA1UEChMURGVwYXJ0bWVudCBvZiBIZWFsdGgxPTA7BgNVBAMTNHZhbGlkYXRlcXIuZ292LmllIDIwMjAxMzU0NTc5MTIzOTE4MTA1Mzk2MDA5OTk2OTQ1NTUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARM8Tki2iWsbMtAs+pjE5P6itWZgm6wsOw9YvCsr5tskoEG1cGysPY/L+ixZiv0sXl985GnPGYFRCbOnsri4+Ijo4HQMIHNMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUT2vp7aj2JBxHrQ1vkpX4bZJoi10wHwYDVR0jBBgwFoAUXIe2JeQrVG0xki6dmWYLVblvTFAwSQYDVR0fBEIwQDA+oDygOoY4aHR0cHM6Ly9nZW4uZGlnaXRhbGNvdmlkY2VydGlmaWNhdGVzLmdvdi5pZS9hcGkvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCIAEEtN5Jh3HP0OTeYkyq0o4eaL0yGZnAbDhUUa0+StGTAiEA5trl/PUTtSwMNUSpc1UAA/viDLCW3FXyfx9cJaheFsQ="},{"issuer":"C = CH, 2.5.4.97 = VATCH-CHE-221.032.573, O = Bundesamt fuer Informatik und Telekommunikation (BIT), OU = Swiss Government PKI, CN = Swiss Government Regulated CA 02\nValidity","subject":"C = CH, ST = Bern, L = K\\C3\\B6niz, businessCategory = Government Entity, 2.5.4.97 = NTRCH-CHE-467.023.568, O = Bundesamt f\\C3\\BCr Gesundheit (BAG), OU = GE-0220-BAG, OU = Taskforce BAG Covid-19, CN = COVID-certificate-CH-21-05","notbefore":1621497871000,"notafter":1716192271000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtk/51stJXU48RqD2lh4I\ndsxFrjlJfmTCrLr3cQNEXkrEoI3OEV8NnotE1RjVmQrqLTT04oxpWlcbMolXtJBt\nu3rOiLNwQvyVEbj/xSc6KT84Tp7GBo1P/kkunY+Vmab6HUCV/oGZYmsdiUP/OnTP\nX6Wy6delDhnrgHIDti73/TSsG7Zl1V6km7+KIkjAkVCEDkkUD7uffd4G+GBZ0B9F\n1KOT0IcFQNvDm0zlROVoGFlmPS8DWlrLHuIdMbB281uiDjcN+kNUt7rUyyj6TFgX\n9WCgEB/5mQBMRaaXK1zeDTaNkmC2S7IWxhMQsMBXJyAdbD9AnQOZc6XRjBauO7gz\n0wIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = SM, ST = SM, L = City of San Marino, O = San Marino Innovation, OU = DGCOperations, CN = CSCA_DGC_SM_01\nValidity","subject":"C = SM, ST = San Marino, L = City of San Marino, O = \"Istituto per la Sicurezza Sociale \", OU = DGCOperations, CN = DSC_CSR_DGC_SM_01, emailAddress = smdcc@iss.sm","notbefore":1623314759000,"notafter":1686386759000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEH2+GOTdCPhSUdDZmaM7hq/hRJkZC\nd3wPyOwB8lS30s4N81r4XFpv1Yev+1bfB4A173DByhZyIKkdnZc/FfaAXQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDBTCCAqugAwIBAgIUeATFyjMaoiT84DKJmiNU72+mkVgwCgYIKoZIzj0EAwIwgYgxCzAJBgNVBAYTAlNNMQswCQYDVQQIDAJTTTEbMBkGA1UEBwwSQ2l0eSBvZiBTYW4gTWFyaW5vMR4wHAYDVQQKDBVTYW4gTWFyaW5vIElubm92YXRpb24xFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxFzAVBgNVBAMMDkNTQ0FfREdDX1NNXzAxMB4XDTIxMDYxMDEwNDU1OVoXDTIzMDYxMDEwNDU1OVowgb0xCzAJBgNVBAYTAlNNMRMwEQYDVQQIDApTYW4gTWFyaW5vMRswGQYDVQQHDBJDaXR5IG9mIFNhbiBNYXJpbm8xKzApBgNVBAoMIklzdGl0dXRvIHBlciBsYSBTaWN1cmV6emEgU29jaWFsZSAxFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxGjAYBgNVBAMMEURTQ19DU1JfREdDX1NNXzAxMRswGQYJKoZIhvcNAQkBFgxzbWRjY0Bpc3Muc20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQfb4Y5N0I+FJR0NmZozuGr+FEmRkJ3fA/I7AHyVLfSzg3zWvhcWm/Vh6/7Vt8HgDXvcMHKFnIgqR2dlz8V9oBdo4G7MIG4MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUXBEgxHdIds6E5XLz7K3xKYM1ZYcwHwYDVR0jBBgwFoAU3R4p+KmXTKHb/B2ZD1s9d0P+tlUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDovL3d3dy5zbWRjYy5zbS9DUkwvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiAqKNSdqhkdyZaMENowSdL1xU3Cq/A/u6PaO90ApEBVfgIhAOaFehZJJsm5o3LAhZ+q3bWBZHbB7nsFbTzvowcNyc2K"},{"issuer":"C = VA, O = STATO CITTA\\E2\\80\\99 DEL VATICANO, OU = DIREZIONE DI SANITA' E IGIENE, CN = CSCA_DGC_VA_01\nValidity","subject":"C = VA, O = STATO CITTA\\E2\\80\\99 DEL VATICANO, OU = DIREZIONE DI SANITA' E IGIENE, CN = DSC_DGC_VA_01","notbefore":1624607220000,"notafter":1687679220000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEI6Q/krjPDaHJ2WsrBzR9sGYnYjFq\nkflAAWhJgXbXt3RuUVfJt4c53N6v9J2BE3kPqCVl9FbYrwqQ0vZ+Ps5e+Q==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICbzCCAhSgAwIBAgIIc/6LARpWk7YwCgYIKoZIzj0EAwIwdDELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFzAVBgNVBAMMDkNTQ0FfREdDX1ZBXzAxMB4XDTIxMDYyNTA5NDcwMFoXDTIzMDYyNTA5NDcwMFowczELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFjAUBgNVBAMMDURTQ19ER0NfVkFfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQjpD+SuM8NocnZaysHNH2wZidiMWqR+UABaEmBdte3dG5RV8m3hznc3q/0nYETeQ+oJWX0VtivCpDS9n4+zl75o4GQMIGNMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFHjsdxdRG2UcVpJ5tq07/6TxOa+jMB8GA1UdIwQYMBaAFL2EdVekv64Aod98sSbpzAqLftAtMAsGA1UdDwQEAwIDuDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCedrxueUJyy8gthgOF7b2Fdv+chSkliDs1z2oOuRagWQIhAJh4vf8YxtkfC3MB+B9y1x2OwC2GRGFCtaF5WaB7K6F5"},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\nValidity","subject":"C = NL, O = Aruba, OU = Ministry of Tourism Public Health and Sports, serialNumber = 1, CN = Health DSC for test","notbefore":996819173000,"notafter":1974867173000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKBG1WklnURluKXTg5+tm6/S7pMFL\nBE8cZ5xNxnCCAL5nvUi6JzSgTjAmOaUNPXVwvA2TYl/GkJNbh4TazMeF3w==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDLDCCAtKgAwIBAgIUHVt+j6ML1RILakWOrokwx1vJhWQwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEyNTNaFw0zMjA3MzEwODEyNTNaMH4xCzAJBgNVBAYTAk5MMQ4wDAYDVQQKDAVBcnViYTE1MDMGA1UECwwsTWluaXN0cnkgb2YgVG91cmlzbSBQdWJsaWMgSGVhbHRoIGFuZCBTcG9ydHMxCjAIBgNVBAUTATExHDAaBgNVBAMME0hlYWx0aCBEU0MgZm9yIHRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQoEbVaSWdRGW4pdODn62br9LukwUsETxxnnE3GcIIAvme9SLonNKBOMCY5pQ09dXC8DZNiX8aQk1uHhNrMx4Xfo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANBQlcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEBMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFFtRlFbRHNsuvQN/xIEwp1U/8DPXMCsGA1UdEAQkMCKADzIwMjEwODAzMDgxMjUzWoEPMjAyMjAzMDEwODEyNTNaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBNaAhthCNLRsfnXOACy3Wc+bkJ/oGxaEnqx8S0y3EkdgIhAKlbCGuSnLbyeUSBQ00N1K+iNzc2JoaP5CNyOGDOFAqg"},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\nValidity","subject":"C = NL, O = Aruba, OU = Ministry of Tourism Public Health and Sports, serialNumber = 1, CN = Health DSC for recovery","notbefore":996819051000,"notafter":1974867051000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf85n2j7jSWalqCH8Dquo5E3uyYIw\nYReoWWAiPkIvnwaaoPUt427OizGvRF35l0wPD6zSkbiQZxWI1DMaf+UeXQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDMDCCAtegAwIBAgIUf+V5qIHrABBVrichazDaEgY0x3EwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEwNTFaFw0zMjA3MzEwODEwNTFaMIGCMQswCQYDVQQGEwJOTDEOMAwGA1UECgwFQXJ1YmExNTAzBgNVBAsMLE1pbmlzdHJ5IG9mIFRvdXJpc20gUHVibGljIEhlYWx0aCBhbmQgU3BvcnRzMQowCAYDVQQFEwExMSAwHgYDVQQDDBdIZWFsdGggRFNDIGZvciByZWNvdmVyeTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH/OZ9o+40lmpagh/A6rqORN7smCMGEXqFlgIj5CL58GmqD1LeNuzosxr0Rd+ZdMDw+s0pG4kGcViNQzGn/lHl2jggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA0FCVzAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQMwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUsGbf7QCnDPzuBPOlOmArt9xBPZYwKwYDVR0QBCQwIoAPMjAyMTA4MDMwODEwNTFagQ8yMDIyMDMwMTA4MTA1MVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0cAMEQCIEg83+MS877WyCurvbC15pDKViLqWrbQvSRD2tjTT6JzAiBKlOFgjK69luoWCDFIFd/TXNVp6vIX9YOU1YZmrlFu4A=="},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\nValidity","subject":"C = NL, O = Aruba, OU = Ministry of Tourism Public Health and Sports, serialNumber = 1, CN = Health DSC for vaccinations","notbefore":996819203000,"notafter":1974867203000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcI1v9r69Swup7ghwGhCA5xoG8Sop\nLiD2DnfkhTydslZQBHc+TuieZ11aHYkD91gmngRXRsGU8Tow/LEoKPkyuQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDNTCCAtugAwIBAgIUECsnQP2ouWaoN8GWtDfzIzOjQsAwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEzMjNaFw0zMjA3MzEwODEzMjNaMIGGMQswCQYDVQQGEwJOTDEOMAwGA1UECgwFQXJ1YmExNTAzBgNVBAsMLE1pbmlzdHJ5IG9mIFRvdXJpc20gUHVibGljIEhlYWx0aCBhbmQgU3BvcnRzMQowCAYDVQQFEwExMSQwIgYDVQQDDBtIZWFsdGggRFNDIGZvciB2YWNjaW5hdGlvbnMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARwjW/2vr1LC6nuCHAaEIDnGgbxKikuIPYOd+SFPJ2yVlAEdz5O6J5nXVodiQP3WCaeBFdGwZTxOjD8sSgo+TK5o4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANBQlcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQECMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFM3bsoRYxPuXAB71DUGiFlVsI2pOMCsGA1UdEAQkMCKADzIwMjEwODAzMDgxMzIzWoEPMjAyMjAzMDEwODEzMjNaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiA4NIHd9nrtJJutNFlPr7hMwLAG5S0Fg8/sDNGgTiO42AIhAO8+HmKyw4rg55MS25dFf5zZYvQ/Gu0ddo97T49wK3qn"},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\nValidity","subject":"C = NL, O = Country of Curacao, OU = Ministry of Health Environment and Nature, serialNumber = 1, CN = Health DSC for recovery","notbefore":996822790000,"notafter":1974870790000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENlKRwpA1S14Zfx6LZuAWm9ExHy86\no7O9ijCq4AmZ1dFu2d2wowdylJzAvbbVsR1RoxfNJPzy5dwu9Nsm0PvsEg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDOzCCAuGgAwIBAgIUExGmExTT4ef8rDmoU1gm1xnsB3swCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTEzMTBaFw0zMjA3MzEwOTEzMTBaMIGMMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEgMB4GA1UEAwwXSGVhbHRoIERTQyBmb3IgcmVjb3ZlcnkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ2UpHCkDVLXhl/Hotm4Bab0TEfLzqjs72KMKrgCZnV0W7Z3bCjB3KUnMC9ttWxHVGjF80k/PLl3C702ybQ++wSo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANDVVcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEDMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFGxsRf1q1IJFSUabsYjk8Zhu4yi4MCsGA1UdEAQkMCKADzIwMjEwODAzMDkxMzEwWoEPMjAyMjAzMDEwOTEzMTBaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiAmvnUyiPPbVM7Ds+gisStbuwGRZ/ujjlfpKU0Kxhon6AIhAM8VBy0s4syzH9gDqrayITXG1r9253IAvNyxoHFhej6P"},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\nValidity","subject":"C = NL, O = Country of Curacao, OU = Ministry of Health Environment and Nature, serialNumber = 1, CN = Health DSC for vaccinations","notbefore":996822910000,"notafter":1974870910000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEawHNq4c7wLusLEYNhn7CBSqk6bdY\n7Phqjt1+Q+CVRHqBFfSRfWG+9dgoEMBdFHY12g4qsO3nnT2P4qhADwIvng==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDPzCCAuWgAwIBAgIUNoYe1qfQWUKjenQM2hZk75Gj67kwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTE1MTBaFw0zMjA3MzEwOTE1MTBaMIGQMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEkMCIGA1UEAwwbSGVhbHRoIERTQyBmb3IgdmFjY2luYXRpb25zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEawHNq4c7wLusLEYNhn7CBSqk6bdY7Phqjt1+Q+CVRHqBFfSRfWG+9dgoEMBdFHY12g4qsO3nnT2P4qhADwIvnqOCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDQ1VXMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBSvCnweDV0fhXiABpn551ECcIPLeDArBgNVHRAEJDAigA8yMDIxMDgwMzA5MTUxMFqBDzIwMjIwMzAxMDkxNTEwWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAOFtWGrE3NItKSKHvNypt0dHo8pfWcGwtWov+UinZkXUAiBYAd6OmxMik1GktF+cph96ldfimOpNnCobSLhpuhrhGQ=="},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\nValidity","subject":"C = NL, O = Country of Curacao, OU = Ministry of Health Environment and Nature, serialNumber = 1, CN = Health DSC for test","notbefore":996822859000,"notafter":1974870859000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPVZAyUlqrJ3XW8kCQu401SKWJ1Gj\nF+LBjT16DUZO0RaRdAPsKx8FUBwqRBtn8dPzIP+EWDX7iUppuG0TNkt3Ug==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDODCCAt2gAwIBAgIUR6VYtf0ovWBCl7FHT35IVzVQ1EIwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTE0MTlaFw0zMjA3MzEwOTE0MTlaMIGIMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEcMBoGA1UEAwwTSGVhbHRoIERTQyBmb3IgdGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD1WQMlJaqyd11vJAkLuNNUilidRoxfiwY09eg1GTtEWkXQD7CsfBVAcKkQbZ/HT8yD/hFg1+4lKabhtEzZLd1KjggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA0NVVzAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUp42ATAZjIq8GuJM8TlU1qEBtzWUwKwYDVR0QBCQwIoAPMjAyMTA4MDMwOTE0MTlagQ8yMDIyMDMwMTA5MTQxOVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0kAMEYCIQD11uNYCNN/3xpgzvNI60u1gF/5aycL7HhApAh2mX8x7AIhANi3q/cTgsLOq53sX8mbZAZolL1LMGhfWHyRkwY7mIVn"},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\nValidity","subject":"C = NL, O = Sint Maarten, OU = Ministry of Public Health Social Development and Labor, serialNumber = 1, CN = Health DSC for recovery","notbefore":996768511000,"notafter":1974816511000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQb+DcAtDpjI4ftm5ICNC5KGz10zJ\nvY682GDCREwLupvC17QzWFvc6S0jbk2NJt2VY5V4svj2FfLGkSWbUqUFnQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDQjCCAuigAwIBAgIURZYaoJKl/Wy6+MSJA+7KBAfLQpEwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODA4MzFaFw0zMjA3MzAxODA4MzFaMIGTMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExIDAeBgNVBAMMF0hlYWx0aCBEU0MgZm9yIHJlY292ZXJ5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQb+DcAtDpjI4ftm5ICNC5KGz10zJvY682GDCREwLupvC17QzWFvc6S0jbk2NJt2VY5V4svj2FfLGkSWbUqUFnaOCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDU1hNMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAzA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBRnd3nKzgJx3I/4ejFn+5GLW5DFMzArBgNVHRAEJDAigA8yMDIxMDgwMjE4MDgzMVqBDzIwMjIwMjI4MTgwODMxWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIgaUm6pa07v+OCyyGzYK8XIuUIl1RF3Yvlzw7otvuvZVoCIQCdKQONn+bW52R3pKdoTb4ssYYYHpizX2UvWUJinjwf7g=="},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\nValidity","subject":"C = NL, O = Sint Maarten, OU = Ministry of Public Health Social Development and Labor, serialNumber = 1, CN = Health DSC for vaccinations","notbefore":996768625000,"notafter":1974816625000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERw+zOjyFNs4ntgwxcvouetTqlBIz\ntiTtJhOi8DesKXv5uX/m1pVAbYium/fhyu0IaBeh3DVOLfLJtPaUEx8eiw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDRjCCAuygAwIBAgIUeS2exS2QVGgMamwCH1rOy8XFhEcwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODEwMjVaFw0zMjA3MzAxODEwMjVaMIGXMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExJDAiBgNVBAMMG0hlYWx0aCBEU0MgZm9yIHZhY2NpbmF0aW9uczBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEcPszo8hTbOJ7YMMXL6LnrU6pQSM7Yk7SYTovA3rCl7+bl/5taVQG2Irpv34crtCGgXodw1Ti3yybT2lBMfHoujggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA1NYTTAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUznY2NjB8NXsMUCHPOlgYek97hZYwKwYDVR0QBCQwIoAPMjAyMTA4MDIxODEwMjVagQ8yMDIyMDIyODE4MTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQDx1fY/jA5stQeKO1mdP5EgJ8iOho81Ob/B/yXfg8XKTQIgSyuSbgQQu0j1fY5gxnFhyW+1M2Si8suaq4As21gBf5o="},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\nValidity","subject":"C = NL, O = Sint Maarten, OU = Ministry of Public Health Social Development and Labor, serialNumber = 1, CN = Health DSC for test","notbefore":996768578000,"notafter":1974816578000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnRYo0qQ5BM+B3lWzaaqBhgTqQ99w\nnzj078WYakRSXv7LyJbz21EGEQkNpe3UOlENX5Q7RdzkrrXFbs7pHfNDpw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDPzCCAuSgAwIBAgIUAc0BMCshHZKc4/+JL2MOXBv10d4wCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODA5MzhaFw0zMjA3MzAxODA5MzhaMIGPMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExHDAaBgNVBAMME0hlYWx0aCBEU0MgZm9yIHRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASdFijSpDkEz4HeVbNpqoGGBOpD33CfOPTvxZhqRFJe/svIlvPbUQYRCQ2l7dQ6UQ1flDtF3OSutcVuzukd80Ono4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANTWE0wFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEBMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFAPQ7CLWYkeVzUr1/A2Qhww+QJc0MCsGA1UdEAQkMCKADzIwMjEwODAyMTgwOTM4WoEPMjAyMjAyMjgxODA5MzhaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNJADBGAiEAnQEMyEA+/j3kz/5N2bYc456EmYIDMlPaWa/8y9CKAhQCIQCz6RYG5r3ZJ3tRmbb4n2EVBGUVjcldIZDh1f2R9veJpQ=="},{"issuer":"O = State enterprise \\\"DIIA\\\", CN = \\\"DIIA\\\". Green Certificate CSCA, serialNumber = UA-43395033-2021, C = UA, L = Kyiv, 2.5.4.97 = NTRUA-43395033\nValidity","subject":"O = State enterprise \\\"DIIA\\\", CN = \\\"DIIA\\\". Green Certificate DSC 2, serialNumber = 22, C = UA, L = Kyiv","notbefore":1629226800000,"notafter":1692298799000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd22zt56DQx1ao5dd4u6jU3KPELJd\ncWfl0+FJ6cVhCb8s0SmQleFtS9m5RQqVzbBr/JnUfqVZjvrPFzwpbgdMeQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEuzCCBGGgAwIBAgIUeQTIILWQh4cEAAAAFgAAACEAAAAwCgYIKoZIzj0EAwIwgZsxIDAeBgNVBAoMF1N0YXRlIGVudGVycHJpc2UgIkRJSUEiMScwJQYDVQQDDB4iRElJQSIuIEdyZWVuIENlcnRpZmljYXRlIENTQ0ExGTAXBgNVBAUTEFVBLTQzMzk1MDMzLTIwMjExCzAJBgNVBAYTAlVBMQ0wCwYDVQQHDARLeWl2MRcwFQYDVQRhDA5OVFJVQS00MzM5NTAzMzAeFw0yMTA4MTcyMTAwMDBaFw0yMzA4MTcyMDU5NTlaMHUxIDAeBgNVBAoMF1N0YXRlIGVudGVycHJpc2UgIkRJSUEiMSgwJgYDVQQDDB8iRElJQSIuIEdyZWVuIENlcnRpZmljYXRlIERTQyAyMQswCQYDVQQFEwIyMjELMAkGA1UEBhMCVUExDTALBgNVBAcMBEt5aXYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3bbO3noNDHVqjl13i7qNTco8Qsl1xZ+XT4UnpxWEJvyzRKZCV4W1L2blFCpXNsGv8mdR+pVmO+s8XPCluB0x5o4ICpjCCAqIwHQYDVR0OBBYEFIjv6MDr8gqaj1GvhYENJ5FvDg+LMB8GA1UdIwQYMBaAFHkEyCC1kIeHDT09MC0K0Ko+YXcCMA4GA1UdDwEB/wQEAwIGwDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMEEGA1UdIAQ6MDgwNgYJKoYkAgEBAQICMCkwJwYIKwYBBQUHAgEWG2h0dHBzOi8vZ3JlZW5jYS5kaWlhLmdvdi51YTAJBgNVHRMEAjAAMFQGCCsGAQUFBwEDBEgwRjAIBgYEAI5GAQEwLQYGBACORgEFMCMwIRYbaHR0cHM6Ly9ncmVlbmNhLmRpaWEuZ292LnVhEwJlbjALBgkqhiQCAQEBAgEwTgYDVR0fBEcwRTBDoEGgP4Y9aHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvZG93bmxvYWQvY3Jscy9DQS03OTA0QzgyMC1GdWxsLmNybDBPBgNVHS4ESDBGMESgQqBAhj5odHRwOi8vZ3JlZW5jYS5kaWlhLmdvdi51YS9kb3dubG9hZC9jcmxzL0NBLTc5MDRDODIwLURlbHRhLmNybDCBiQYIKwYBBQUHAQEEfTB7MDUGCCsGAQUFBzABhilodHRwOi8vZ3JlZW5jYS5kaWlhLmdvdi51YS9zZXJ2aWNlcy9vY3NwLzBCBggrBgEFBQcwAoY2aHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvY2EtY2VydGlmaWNhdGVzL2dyZWVuY2EucDdiMEoGCCsGAQUFBwELBD4wPDA6BggrBgEFBQcwA4YuaHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvc2VydmljZXMvdHNwL2VjZHNhLzAKBggqhkjOPQQDAgNIADBFAiEAzrDXxTuym77Eo9J4GNB/GoZRm9lTVtmUpLCjhzr7t5ICIDdt0waoDoBfm201AGoLjErsage0uxBI3SkncWQaP7nZ"},{"issuer":"C = TR, ST = ANKARA, L = \\C3\\83\\C2\\87ANKAYA, O = T.C. SA\\C3\\84\\C2\\9ELIK BAKANLI\\C3\\84\\C2\\9EI, OU = SA\\C3\\84\\C2\\9ELIK B\\C3\\84\\C2\\B0LG\\C3\\84\\C2\\B0 S\\C3\\84\\C2\\B0STEMLER\\C3\\84\\C2\\B0 GENEL M\\C3\\83\\C2\\9CD\\C3\\83\\C2\\9CRL\\C3\\83\\C2\\9C\\C3\\84\\C2\\9E\\C3\\83\\C2\\9C, CN = healthpassgwprod.saglik.gov.tr\nValidity","subject":"C = TR, ST = ANKARA, L = \\C3\\83\\C2\\87ANKAYA, O = T.C. SA\\C3\\84\\C2\\9ELIK BAKANLI\\C3\\84\\C2\\9EI, OU = SA\\C3\\84\\C2\\9ELIK B\\C3\\84\\C2\\B0LG\\C3\\84\\C2\\B0 S\\C3\\84\\C2\\B0STEMLER\\C3\\84\\C2\\B0 GENEL M\\C3\\83\\C2\\9CD\\C3\\83\\C2\\9CRL\\C3\\83\\C2\\9C\\C3\\84\\C2\\9E\\C3\\83\\C2\\9C, CN = healthpassgwuat.saglik.gov.tr","notbefore":996944525000,"notafter":996944525000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4gGExz9UXm77v21gaWNSjjtigr9V\nIyGL9S92FqnF99YqS/ekrLWvW4N6fmHfUST9VJLJVaB9uP3SX1rXlfq7lg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDZDCCAwqgAwIBAgIJAKh1+Khc/oXwMAkGByqGSM49BAEwgdIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQIDAZBTktBUkExEzARBgNVBAcMCsODwodBTktBWUExJDAiBgNVBAoMG1QuQy4gU0HDhMKeTElLIEJBS0FOTEnDhMKeSTFOMEwGA1UECwxFU0HDhMKeTElLIELDhMKwTEfDhMKwIFPDhMKwU1RFTUxFUsOEwrAgR0VORUwgTcODwpxEw4PCnFJMw4PCnMOEwp7Dg8KcMScwJQYDVQQDDB5oZWFsdGhwYXNzZ3dwcm9kLnNhZ2xpay5nb3YudHIwHhcNMjEwODA0MTkwMjA1WhcNMjMwODA0MTkwMjA1WjCB0TELMAkGA1UEBhMCVFIxDzANBgNVBAgMBkFOS0FSQTETMBEGA1UEBwwKw4PCh0FOS0FZQTEkMCIGA1UECgwbVC5DLiBTQcOEwp5MSUsgQkFLQU5MScOEwp5JMU4wTAYDVQQLDEVTQcOEwp5MSUsgQsOEwrBMR8OEwrAgU8OEwrBTVEVNTEVSw4TCsCBHRU5FTCBNw4PCnETDg8KcUkzDg8Kcw4TCnsODwpwxJjAkBgNVBAMMHWhlYWx0aHBhc3Nnd3VhdC5zYWdsaWsuZ292LnRyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4gGExz9UXm77v21gaWNSjjtigr9VIyGL9S92FqnF99YqS/ekrLWvW4N6fmHfUST9VJLJVaB9uP3SX1rXlfq7lqOByDCBxTAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFCswn+ChTJKoWppyEWvYjIGyDJybMB8GA1UdIwQYMBaAFPbenUPEZ1KYGCZLyK4/nzCJVz+bMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9jcmwuZXhhbXBsZWRvbWFpbi5leGFtcGxlL0NSTC9DU0NBLmNybDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMAkGByqGSM49BAEDSQAwRgIhAMdvZvXW4yhE0096flq4umtUExjaOSOM6bob8cMsriqbAiEAv5b1d/EFA0rM9LYK1jt49+bSOgGxcxgs0jAOYzAjMrU="},{"issuer":"C = MK, ST = North Macedonia, L = Skopje, O = Ministry of Health, CN = zdravstvo.gov.mk, emailAddress = contact@zdravstvo.gov.mk\nValidity","subject":"C = MK, ST = North Macedonia, L = Skopje, O = Ministry of Health, OU = Ministry of Health, CN = zdravstvo.gov.mk","notbefore":1629714122000,"notafter":1661250122000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA144Qzvk4vkmWoGZUPGRe\npcNVPCbXy0tLeaxmuDuTbJIfyO0TwxrQllUOF+pni559+knMmUUk7PqfvU8fsbrN\nXHn4Wh1LzIVZkz/GuiQ44bR3b7k9kcS9vfOx14WiP41zx/vOmQXWaGx+mzC+RD6+\nw5T8hAdRjol6nUHAvstL0MbIylv+Fhi4s1qpmr1rR5liG/KI3uzaMjJvQC6d3R9E\ne+q3ULTJ81+WyVe9sK9hY5Z/KzFrMbnbH2Y1/voIcLc+vjjVCOFJKkXhjz00/wu6\nNalMMN6MC+G9gZMHp69CJPB45hIBiAKfGEI4dq8lCthqi2orRoXmAyf6LxSBL6wZ\nVu+naTXUJMVoXjFNXIyszm1MRQiagaoqOyctY/bg/RQgVSDrjtEN4MeMArSbehog\nEZuYL8GRRrnOEbWb86DEwMAYDbbPFEab3hsyZejJ3bxZdylWNj1V8QPyP2uvOLAF\nGwsvSzw7E34b0RcpEeOoQeKrT8nKPpFOFIQ3gBxyqlw4T+v/iENIxDWoWdvUO2/b\nkidNXecSn3XlzTT7OW8IbJ0M7D9htz/SPd55XP5sU5gF3wnwuWMIq1auj/LXwbRA\nh63OiUG+Bo4ssL7AkMcOpkYl25QZQOXzWykI0/ZZ8Hu/968eoYvMxbQD4EARMGDM\nwdkU5G+nuHniTS52kONbrZUCAwEAAQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIFnDCCA4QCAQEwDQYJKoZIhvcNAQELBQAwgZkxCzAJBgNVBAYTAk1LMRgwFgYDVQQIDA9Ob3J0aCBNYWNlZG9uaWExDzANBgNVBAcMBlNrb3BqZTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMRkwFwYDVQQDDBB6ZHJhdnN0dm8uZ292Lm1rMScwJQYJKoZIhvcNAQkBFhhjb250YWN0QHpkcmF2c3R2by5nb3YubWswHhcNMjEwODIzMTIyMjAyWhcNMjIwODIzMTIyMjAyWjCBjTELMAkGA1UEBhMCTUsxGDAWBgNVBAgMD05vcnRoIE1hY2Vkb25pYTEPMA0GA1UEBwwGU2tvcGplMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEZMBcGA1UEAwwQemRyYXZzdHZvLmdvdi5tazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANeOEM75OL5JlqBmVDxkXqXDVTwm18tLS3msZrg7k2ySH8jtE8Ma0JZVDhfqZ4ueffpJzJlFJOz6n71PH7G6zVx5+FodS8yFWZM/xrokOOG0d2+5PZHEvb3zsdeFoj+Nc8f7zpkF1mhsfpswvkQ+vsOU/IQHUY6Jep1BwL7LS9DGyMpb/hYYuLNaqZq9a0eZYhvyiN7s2jIyb0Aund0fRHvqt1C0yfNflslXvbCvYWOWfysxazG52x9mNf76CHC3Pr441QjhSSpF4Y89NP8LujWpTDDejAvhvYGTB6evQiTweOYSAYgCnxhCOHavJQrYaotqK0aF5gMn+i8UgS+sGVbvp2k11CTFaF4xTVyMrM5tTEUImoGqKjsnLWP24P0UIFUg647RDeDHjAK0m3oaIBGbmC/BkUa5zhG1m/OgxMDAGA22zxRGm94bMmXoyd28WXcpVjY9VfED8j9rrziwBRsLL0s8OxN+G9EXKRHjqEHiq0/Jyj6RThSEN4AccqpcOE/r/4hDSMQ1qFnb1Dtv25InTV3nEp915c00+zlvCGydDOw/Ybc/0j3eeVz+bFOYBd8J8LljCKtWro/y18G0QIetzolBvgaOLLC+wJDHDqZGJduUGUDl81spCNP2WfB7v/evHqGLzMW0A+BAETBgzMHZFORvp7h54k0udpDjW62VAgMBAAEwDQYJKoZIhvcNAQELBQADggIBAFk2Ua3Wvy39IU8ObQL43B21Kufq/Taftx002lJqNEJrkBJOrsqESWR6HecRYzHqifo3Pg45cRVOY6Z7KLBGtw3cg07cb/rS5qZ9fXZEc7eym1HW1A9PDkKoOHdiZ+yqhAx9al2CgDSH/3/TyHFOjZOXpzkfrxdEN9tqBlq+kskXshgDOFiHQFrNLUkd1uvVjS3/f56DQ46DKxpCqE3TS7W4LNntnlT0LxgnfAxOH/p6UmAkpn0dALI5vJB1ebboxfEkRUM3i/ElQzHJgrwJF8uKcCCsQyZOM/8KbI5+emLzZ5e4S9tNksmwevekU3ANPOgHoTKCbvYMg2oZ0J3p9WBxwrGFfFk6wyXl7vyYVTjWiP4HXPwfZglZRfHa0uEfZCRAC2v67iWwkqDogqdy82H4NsVzqU+Nax88xZHQxHxQJI0v6YzzaKygfuEizDv+2ZYZHn/k+S+qXsh5yWg76NrdOPPM8e8X2HSZNWNoS/zmOsRuiOg5nb5X0rxnNPWKSsQZZa2AmQqtp9QrZ75l9Gf7+Og+LJ55cNbCfOcN/lKxmRz5OwbXoCoxiplyd8jBUt2Gtfa8KL+6aRFbuwYajf93ROkx737LFH1VZdcPIOi8TI4q8DD37wKEoY7cQWPyr3YuxggQ36RHKyNgKg+7d5TX+F+KnWiw4lfp2MGQ3VIM"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 7","notbefore":999428589000,"notafter":999428589000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7U8cYsFNOZawVgxC9FBfvNzL05Xe\ntv6jVxj+aii7IkXcXCIiRsruAdrAHCLCtpDgIFzwLsFNwJs5ZFu+8lr6nw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIILKLkHn6rwKAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDkwMjEzMDMwOVoXDTIzMDkwMjEzMDMwOVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO1PHGLBTTmWsFYMQvRQX7zcy9OV3rb+o1cY/moouyJF3FwiIkbK7gHawBwiwraQ4CBc8C7BTcCbOWRbvvJa+p+jggESMIIBDjAdBgNVHQ4EFgQU5MUl/8big5VpHbJE35E0EJ5cuF8wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA5MDIxMzAzMDlagQ8yMDIyMDMwMTEzMDMwOVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAAQI3H/45srCJtEi5+gwT2GCEx6zV65ytEOsct9bUu41U5UDYhYp5rtaIWpguPB2DuHs1zFY7bqwiD7INyDeRIhCrBZuQkrIsBGImE+IcoXJAdri/vUOPToYxpcA3uwqH/1EOhuhSlUz8Czzb7rDY72K1fXQYCKYGNkEBEDrSC66F9bMD4ATtRb97DMZAY5QmTX8MVjSvrd9WoiroQ0YaT3Bt38SYzwY8QV10ovbo+VqkY3d4bK4zTHGFh1If2ttsPAWOLV8mc3bp6CGPm9VxfZY5tMBgVsDNcpY9LKLFGHivmsduvSFfugNsPDELnj8gBMihCtnOTzI9Qugs298tIYg8awef2GkJmdsdQX1IcQJjrw19ukgbjuGDr3EIfmDrjfRcdFdDSvE6xBIWRWa/XnrmdoKvUnuRrCFzcOSfaMBEER5qJ+dQh/08KtKPdRXvNFoyDLfS8eHRRLIkEDtd3HeuKedHclHjn/+JbazIGBYjogqXothsnSK8bDBblJnO8nAFc3AdVk6BbmjitMSQsU0oYhpSg7Ew3HxHYXGCmZ8rHLxzGOC8h/KaEcS3qP7IuyMlwnZdITbeli3qy3UVTA0jd61/HJLDqJMaYX8bvcPpcfqW5mbVV/X64il/jyNURdoKkAYFFYoMNgBz4QY9XKn1dGC1WcE7EFXAjCUMawC"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 5","notbefore":999428418000,"notafter":999428418000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHcMt1ez6jhOR9UBCXlFg//cHD/Jo\nypGzNaG4C/gYl4qQdN+Vns7/idf8DO6Fk5z+Yh+I/vQ4vUQ5bWZSwRwUJg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIIOZExjV2kjGAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDkwMjEzMDAxOFoXDTIzMDkwMjEzMDAxOFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB3DLdXs+o4TkfVAQl5RYP/3Bw/yaMqRszWhuAv4GJeKkHTflZ7O/4nX/AzuhZOc/mIfiP70OL1EOW1mUsEcFCajggESMIIBDjAdBgNVHQ4EFgQUAiIZbrncLuwgAWNZTfPNphbK5EcwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA5MDIxMzAwMThagQ8yMDIyMDMwMTEzMDAxOFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAJrQJUzTWjcyjHZj2Na/4TuSNTolOM2bDlEBoEqUAY3rfx42rM7xJT8giWcKL75arhGgkpzEqtJeQBaq2yE/itDN9dGI35qi/MvIhkx0e94d14QwOkfMF5c9mJFMcXEbb2v5UE4cQq7Obic77cjGlSemS1ieTrjxT4yYu3LOYOcTXQqR5qNeor97zHze3esvAC7VjTFo1wcg3kK8PZV9s25q9IeiNvhzcu3IeMIEtB6sC/E3q2B1KbvkEInr7/uHMRylh4cqfyK8VCewkIDIEReudLbSjKJBAQipDnNSuTswu89vNB1nY7kdRIyISqtgoB5opoadPDEdA6DISea2dvfXs5LohgjN4zkJK8R9h7TQizFaI1PKMVADzP6e25hPA87SVVb2nDGxzlXY2tJRGstvuD6cWvtfhc9fn71VUtIsjG3iF9XJA5xYOijEM8xzqznv8GJltrmv7f/pxTOQuyb4FR5pRzVRFaft0B9igToiEDeZoq8O/jVn09fvDRa2sxeQpXvRcQvd9B1YppLdziHzVyzQ/X6iD0nuQ/8osGZyq81yMrvN1uPpROgfcleo+yatl3VavV7HRG1e1Ur0G0SZ3xmC12RRoA3m3FVSTx7WsQcy/uurcmGpAs5gf9BkcTcodGM4ktPjjpu7UvoKPysSlI0tI3TtXYY0aRICSCYa"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_20","notbefore":1632254400000,"notafter":1695326400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmRk7MSZQCX2u4UIQgVzma1JEo3yA\nSVafls/5nw/V9T6e5EbsK64MM0KhsPH9aK/aElRt1+Rxtd1AsHVvsQJjKw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUFpv5DkvJU5K1vn/H2/M9MQneJrYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkyMTIyMDAwMFoXDTIzMDkyMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjAwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASZGTsxJlAJfa7hQhCBXOZrUkSjfIBJVp+Wz/mfD9X1Pp7kRuwrrgwzQqGw8f1or9oSVG3X5HG13UCwdW+xAmMro4HgMIHdMB0GA1UdDgQWBBTb/Lh313Pu4DiRm9Z5SS83yZeXmDAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAAY2cWLc8Ce7zLl6vxt0kWgpTibXFhgx/Que5ExTAJOpsl6K64MpJCofzPfO7MzxYRtIL+Lj1l1avGKNr8BNpA/+A8KeJQsocJc6RfOMVPt+2Cmpr8DTDeIjNzsmZtXMaRtgDjGV1qMTtCaThdGgzC5KfgL0OylkXDnFyMDRVDCxVxJUC4aMolQmnCVyyqD2bHBm9Oj4+x1UFrx1E3q/1FbQsy/Rji14kS+84c35qAuTkp05kqzxoZZswLQY/bYXJtU6u1SDwo/Geirre9nhm8Ck4Zr+8ARIh31oVyK615s+13A6p2Iux7T00aODsfRHZKh60o7+FcjeQJ3LbNdwBEHN0qc8aPsT5h61ZuAOnpmit80wVR+btu1d8e7Hq2u8AChmIGDcxjwHs7ygfbRDEmSM56ZhQ/a9PGDvri+jnuN3GW2TUajlXogrdMmvVsQN3nssR1E3nxBltyOS6EP88uMdr/ajAOjOT02ISmkaUWfTmrwEJGHeezOPiJGVvqp2Z0UOiwCivGB/PU03cAcu/ms0EXIKZ2qFosrZeJgTfZy2LMFKgQbj5b4iLDWormO2RCGvM3QMfmYd1XwTISCvSlDyEgT2hBRgYnLJ9ipPD8ngRmQXoX+nYbIDi23R/5vlU3qNw1cFAyGamNAsUNgPeRGaqIzB8eEON03DROAKulU4"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_22","notbefore":1004738400000,"notafter":1004738400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ws8GOmbxIZm3jIeG2vN3jsMTvjN\nuC40InFfPoXbMRVFjhOBjro3792wiunoFYiG7TZsgCEi/+IOCUsxa5+H/g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUHZbL5MhK3RIo99XEV0xY6jiBrQkwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwMjIzMDAwMFoXDTIzMTEwMjIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT7CzwY6ZvEhmbeMh4ba83eOwxO+M24LjQicV8+hdsxFUWOE4GOujfv3bCK6egViIbtNmyAISL/4g4JSzFrn4f+o4HgMIHdMB0GA1UdDgQWBBQtDNVIN839gYsiXOJR5IAF+tqWvzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAJdRrpKYXb0KAu7BXEq/45XlLSt4+UB4MamR5d9uZuVL+KkKHy9jiDJ2ydKSoCDJnZZtKdYG8hqqCFKUj/WqkTJGysZo7rWmeHT4/AZPSHsLGtaYtqKVPJOie4nyywdmMt07fJIcqVdGtmHqM9/dhEXVWWJqtDWC1cZ3HdS4Xf8LgPORm2iusGIKO7hJuBn9Z4dtqKlY2VzHY0jlqdFdOFVychusOQyZWdliJ/FsERDj3jj4TEk30w0Pk+V1Th6MogVmiVcv0QnxKG71Nck06JcYLkes6zgmdcY0vapUfmLGHECgMkYwuAR/tB06xAZPVPU9mq653ezbElwXPXNM6qc6TaCEnkUpjrLsjy/vD2naq+PtkZRlrKH+HxV8ZAEbAsg3WDAPG/9xVrWtp8FjmXhq3F6I/LGp3TCh8/q/9UmfDDNldidA95QcsAMJZUjEJNr8JXuegt3aBWUbpz8EbfyHVVS8Bzh9H8s9z/mwXT8X63y85YUzlMGshKdqI/7lESJUunA2U3pIZHixGJMK3MelZeqEBqxd22h7/gmNI9LrK3MBEtBQtnis+YBTyaR4BbDHDOur3eQA7Fy/FoIl5LUHPmbjqD+tJUuojg9+E6jGz18BeJYLtnPHNNF02XtfASwg2WO1+eujIQiyp+6e/xLUv8qxzEUQDi885fvHv//V"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_21","notbefore":1634068800000,"notafter":1697140800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2KIu7zh4VbMsB2Y8H2VRojkDFFA8\nhQwDsYjuAuxqIvqqx0Rjjv0+teHsdtIwdXW5f3BrIp5D5WXbPechk9nR9w==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUaC1i8U4Vp9O89KqNCGnoL/BxXpUwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTAxMjIyMDAwMFoXDTIzMTAxMjIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATYoi7vOHhVsywHZjwfZVGiOQMUUDyFDAOxiO4C7Goi+qrHRGOO/T614ex20jB1dbl/cGsinkPlZds95yGT2dH3o4HgMIHdMB0GA1UdDgQWBBQbSJqpNjLhe5I8/Jl9l7JWE78a0TAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBABSg7TvfutJ43UXAOblrRH4vATAYUUHb542Pnqr87+7IVl68HtYLeBI8kuDgbo+E4D/vLiWJFq7V+9pUQnLvqbIlgESQP2saVFb1DRVzBk6UdAZ98kAfrND5Aom7VPGoZE9UpRBWYJtH+E9vXR/6zr3ikIbLSghS9S23R6PqEp+KD9bd2DUv2URn2VsAncTIwOovN3sCVfbiI7sByCyqzoCOpK+lK4GbTRUDnrnS4thexvi/T+pMmJ7jYUtz83tD+rp6PO5L6Ps8JVhYDNYRyUqrxSNcU6mfKikE6I118eeHCHwCTh4TXsE9wTwJ0oZwzo0RlZo54GuJ3XTH9zJZv4rOm8BZwVFXXKcPR/MKmRTBTK0lsvCb/yFSJjW9h7EOBZCJB6tmrsXEaZJSzSepge4hT3+qO4S2VgeruUpeoZy+X7ytWsMAWL8NMWBxVba9pkwM8zTKluw2dFIaMm3+p26rXyw0Ahg7jDFGyPyCjlORrepgMuqhG1nwg5+INYhqDNx6MOY+paAkHCjacmvDlcx780SrcztES4D5h7tMWH5rpHGQdAmr0Ga8klWp6QaJs+E+RvlfjTCx/jqYHaC1MGjxiUQikOEbcxZH6m+crrtcyMH3Jps1pqCDOYHVgsqOIyqkqdmtLxfdvGzPUn0hKIMC43gkyPX9O5CphGmwJEaR"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_24","notbefore":1639519200000,"notafter":1702591200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEv9oPMoRAqA3JV2+cNikqVChE7Y8W\nxGrVkEm5PV1bFndPkVXnRgpdgznH2H/x/3IcOdv6edXz4iorfKud7oJoYg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUcMofBDuZv7du/lkGLSBUaCPoRdQwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS/2g8yhECoDclXb5w2KSpUKETtjxbEatWQSbk9XVsWd0+RVedGCl2DOcfYf/H/chw52/p51fPiKit8q53ugmhio4HgMIHdMB0GA1UdDgQWBBRRA97mCPpiiEm0TRCs24gbDkkU3jAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIrIAYlDdyvTTVinMgb6JUX15O3zMMieoVig1T58oCLVQFAdMvJAWvi9SKVe7FdIeDLVUDuBtEc8P51rI4Da3Ln+2eNvcO3HMyq/1IFH5llBH3mNIlynTny1G02qYVGAmWvaKNIKeS50Q5c38qBQFLvabIOB2RTVJLAZ1sbRhRnossB+MEmLpn19/UFl23TQqzBgAzRILCmuuSwyoJmLq/jAMAtvOtx32awLv1tRWpdDK0hM7/Nl30ysNEgc8AXhHNpgVS5SmMC41WQWXgMB8ZiP1t6h+nKPmLHRDKnM5H+ukg1Lob5bTdMUibmC64b6yl/PISPqHCojnJRTz/kKXf+E1zn+ybkoYE+608a8RO+4EY7vEsuvGTqTBtJ4m7qDkYLMfXMTQoCg0GbAal7sa7aJVA/vdno3gDGWisu/EzCi0X6C6Gu3nxJuwEp+Il1kD2nIySSfQzBgUoZ4KUHUbvYlvRJBYQKijUItaJkThvUfFE+C+TUH0aqdWBl33zEDilXiaJEYTIyVtRRmPMF/EMK44DGc0DF4tlxeexeXrAXQcG8PmxRVfysxv9JN+53ubchR1SZ4fuPiRFtCliKz8luUmpVKBtbtvPPyxSWacRR2Anfy2KCVQ95eLFJUdMpp7qSTGvcIJKtuoNMKW1eZrvISldQDejMcoFXz+QgtCv08"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_25","notbefore":1630440000000,"notafter":1693512000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEB5mLr8niSSWcqZ3EbDPjFseikZTP\n0rPRJPDW1+hvblECWjmEOsWEiXQ87RUStArNabZ9JMysQccgbb5IJ7bbOw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUPXRtjcQUp7b28v0vmppxnIFeWH4wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgzMTIyMDAwMFoXDTIzMDgzMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQHmYuvyeJJJZypncRsM+MWx6KRlM/Ss9Ek8NbX6G9uUQJaOYQ6xYSJdDztFRK0Cs1ptn0kzKxBxyBtvkgntts7o4HgMIHdMB0GA1UdDgQWBBS8BY4cl2GX44Dn1QTF8A1NVL8unjAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAE7zd0O/XHFUy06u2iTzp11wD8QZiGVEL9SPpI/fB1cdqZKL012FyiiN/wljpgo6b+p9SFvAY2nfod4Rs+by+PXgEdsVkuoU3QWCl0JKDqu/4RPLX350rufJWHSHBIocgBCUjvsgfcpJa2ureQ9iY9e0PVyRqEtTZzlcJWzZQwVYGxEcUnaC7pgmwS9awJ0r52GrnWNIpekSFvJcMsbT+gsfUeQU32lXENVdgsUxfX5VJZ2ooyw7bOzPJYInUwIMs1msLQOhl4scLKZtopaRztSNrQCkN5Y5C8OjEimkCq4ed7yznYhRBI/nN/1ORuniYS6jAilF0R8QBYdZOumjFozYWt6HIOuABikGvec4dp/5xqPhTTKrjygU+UMEl9bV9XtdPdHdbJUP9wV8gV90Fs5mUUlzbZjkfOr6wLxPMR1Acq5t3usakHLLFSSKHmoCwhCiiGGeYRPSjdcryxHW19zfSyHiKOaWlV/Ex99VjgWMZqV/JAl9fdjx4F58d03gp9iQY2+zm2WQnrVTUPrkEYdLoqcVtn4nZbJJnFlPVi2H9LcDN+LkJroXFx/eQQ4BVBQgIQ9pWjPUF6ay8TIpE1/PWhf+EBVet0FA4QqR/gypJI+cNDfgYUTA/2zJ5QpGDQSrUdH+8nBCx5RgtE4/OZBj83edTfcbC5+GPFXC88xZ"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_19","notbefore":1630440000000,"notafter":1693512000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERSQZ3mIam9saggM/z1bCW2+wGPWF\n6yNJN7qrsTLHntxEu2JpPJRPP866gJVIsHmIMqU/Kg/BnQ1bb6icYxpcTg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUF0n80rrBMJH3PxQUQLM+vM20uCgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgzMTIyMDAwMFoXDTIzMDgzMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMTkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARFJBneYhqb2xqCAz/PVsJbb7AY9YXrI0k3uquxMsee3ES7Ymk8lE8/zrqAlUiweYgypT8qD8GdDVtvqJxjGlxOo4HgMIHdMB0GA1UdDgQWBBQZBTK8TIaJS4alif7cZXMDRas7UzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAEqB7XsEFQ1yVxI4+qUO1wYS3j5CY32bvzlbL5TfH04VsS1UJvMnzU1gR5m90bncj4z+sqe4m0cHygP5VncDt/Hjfat4FBu7EfxIlBYTF08iBVClMxbnA64ak9XXibT6QlGDNGnLPK6FaadJosV8pkVUYKhgkIaR/5bz8CzOR1pECkQnpeAjZddHM21YfbGDlawwnMbjLJx6Zi2//RLLlCwmE8lv1VfAyG5fvJOcrx/9QgrIyLO9BmPwMBgxK9BXBv7fePFpYktbmhgpf7oLbUdmREbfweVNodmB7VjN4FiidTbL+m4EFsi0Su/l0YgXdcKCRZgS0OZn3lqR+KuYAsNxw6EbGAub8FuXrw+5BQ+WJ2ECxMN8fmi1yWMj5Lr2oHV3K30m15HTcRWuWZw1gYnfNf0z1NNPUK8LeyMDqJoPG/Oc55zrd+BkCecHQEbaa6sj1cdKwYabXOjCgTLVBxXV0XwHoB2qLjyXVjGoRHO1dwAEgnozfaUWB01Sh9Fe+xuSfHAS8cNaIBCMBCKktly7Rs+8bDTf8SNSuPlWqiXi5DY8a5UEEjj/iVFxmS8jheF4EQAA9j+WEFNyEn6szw5FH0zJO/nYhBS6y24l6aGanes3KcOL53tz1H+pGw58HDiWVhUpTDLWCFk+JGbTu92nRVxA0axLsimfhPR0lVLA"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_23","notbefore":1637704800000,"notafter":1700776800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2U0nHQxTR9PPb0QwY+YS7qJs9XDN\n5a9fc+lCqTltrFE5D8kEZMRFY+qNhMbo5JY4VU473btztC0zWP52tgFH+g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUKCG1aBTkAAn0E/gVD+HRZXrMgBYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEyMzIzMDAwMFoXDTIzMTEyMzIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATZTScdDFNH089vRDBj5hLuomz1cM3lr19z6UKpOW2sUTkPyQRkxEVj6o2ExujkljhVTjvdu3O0LTNY/na2AUf6o4HgMIHdMB0GA1UdDgQWBBQHXz8rvdiW65BcQaIdyRy4gzUNXzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAImn8pvfl1UnkNvTynXjRrI00kIdbn9RsUe8lKMyyOhhfV1Sia2on+Gd5AFk+IMyunMFLBcl18H9BHHfuPMVR2BleZ9u0kSboF6uYennSwqVcpmGwJSnzl/P8jq3gDz1iAXpIQoc+PtHyc0c0BJ0/TrfEx4bBoMXwRz3N3r+zaa67zntv144zbBTInrDQC62ZCO/QIjP3o9rtZnI60YscEWL8ul8TDHQWiMU5hZ+X5hpb+vkMSi+c7bSiIcMFSd9CNnaJIJ1AC1FCH62hT9edCY+EFwS5I3+s1uMW2N+upDCS8aegXYcpVqnLdvwDA3sgnPwn2cOsPuLltHA//OKIF3cOFnMPIKnn3/zM5LilxWZYxy7Lg0uwfoOMV3SnWvxv9aj4wQOxljwiorL/qw71uQHSaAEphKS5MZVS2v2nV4Pj2KG/eOd9axsTy8GvOx8DbNdGxYDnzu1zH8mkWnQZ1TX6gskoJc5U8NTcHseUTj2oUYzLLe3hgawK3gvmiugHCotj1xCJa2+qlBg2ubFYPAiK26FhW94i9b6vRuNbhc7OvRoQahdKoOvPSO/SuTvfSxxGI1XYw76ZZxwx7P5z4hb0StCjeCqTuAhWJMafHzc4jNHWnb11ggF9+9krByzdgNj2dWJqWjg1MSN+/9CjiB961SvvmERhAsXOduh/rDl"},{"issuer":"C = AL, O = NAIS, CN = NAIS Class 3 Certification Authority\nValidity","subject":"C = AL, O = Ministria e Shendetesise dhe Mbrojtjes Sociale, OU = Production, CN = Ministria e Shendetesise dhe Mbrojtjes Sociale","notbefore":1000032867000,"notafter":1000032867000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENFtonAma5ngnltfk78rprtlz8Cue\n6/t2XzvM/OR3wOn/1nD4QDWTP0KjGsFtiJ80Aed5gQ0JbMXUL8M2mQyQPw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIETzCCAzegAwIBAgILQ/9i89Nx5cy6y84wDQYJKoZIhvcNAQELBQAwSzELMAkGA1UEBhMCQUwxDTALBgNVBAoTBE5BSVMxLTArBgNVBAMTJE5BSVMgQ2xhc3MgMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0yMTA5MDkxMjU0MjdaFw0yMjA5MDkxMjU0MjdaMIGUMQswCQYDVQQGEwJBTDE3MDUGA1UECgwuTWluaXN0cmlhIGUgU2hlbmRldGVzaXNlIGRoZSBNYnJvanRqZXMgU29jaWFsZTETMBEGA1UECwwKUHJvZHVjdGlvbjE3MDUGA1UEAwwuTWluaXN0cmlhIGUgU2hlbmRldGVzaXNlIGRoZSBNYnJvanRqZXMgU29jaWFsZTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDRbaJwJmuZ4J5bX5O/K6a7Zc/Arnuv7dl87zPzkd8Dp/9Zw+EA1kz9CoxrBbYifNAHneYENCWzF1C/DNpkMkD+jggGzMIIBrzBmBggrBgEFBQcBAQRaMFgwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmFrc2hpLmdvdi5hbDAwBggrBgEFBQcwAoYkaHR0cDovL2NlcnRzLmFrc2hpLmdvdi5hbC9jbGFzczMuY3J0MA4GA1UdDwEB/wQEAwIGwDAfBgNVHSMEGDAWgBSHJqj72ytRmznQmNb0xjNWR1zYBTAdBgNVHQ4EFgQUomIXCcGEr8gLcxPBp8qNqsAwuywwSwYDVR0gBEQwQjBABgwrBgEEAYKxbAoBAQMwMDAuBggrBgEFBQcCARYiaHR0cDovL3d3dy5ha3NoaS5nb3YuYWwvcmVwb3NpdG9yeTCBpwYDVR0fBIGfMIGcMIGZoIGWoIGThiJodHRwOi8vY3JsLmFrc2hpLmdvdi5hbC9jbGFzczMuY3Jshm1sZGFwOi8vbGRhcC5ha3NoaS5nb3YuYWwvQ049TkFJUyBDbGFzcyAzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5LE89TkFJUyxDPUFMP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q7YmluYXJ5MA0GCSqGSIb3DQEBCwUAA4IBAQAxX1oVSlIui82fALGFk0YQK5UOFN59Bk+dNovoYLH7rewnK3Zu1C8xJivs/ncsvb08J/B14Iw2DlIORCNMmfXaCIEeRwUepPrC0T9gBMFZGf+nOH1YR19YA+24gxSxlsU6t8/lCwMY2HfCUxEKvHqr1jp3lgim8y+IiMsA9ISr7J8YDwue6Zvpr1zPQN+nd4xB1ZuxoM64dCvzaV5mA/D3P7Rqf5c1+rt5EqztjVOiNpFvH+xSEp9veAJxRDG37kHe7brgb7CGLdBQw/pib8kgfDusUMIjuXDN4MzjVUtM3G6s6DfoJ/QIf5CGq2lJ9bdxORh9PICVxVxcUqpwD+r2"},{"issuer":"C = MK, ST = North Macedonia, L = Skopje, O = Ministry of Health, CN = zdravstvo.gov.mk, emailAddress = contact@zdravstvo.gov.mk\nValidity","subject":"C = MK, ST = North Macedonia, L = Skopje, O = Ministry of Health, OU = Ministry of Health, CN = zdravstvo.gov.mk","notbefore":1631704853000,"notafter":1663240853000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAy4Z5U8Qb5fGFqBdFLyUh\nGP4ZlweYKLIA0BUXsuNB1h4EkNmF9tfcGsaDDBwmH5feGWlxaiPmHgpm8ewKbtrN\nusMz9t2YuZz78f9Pdk6Cjhh7A1O7abtmonpEGNbUnmQr1xmp2y33RM+p+kG2YzwW\nhlVStm4OjJNmnuLplbCfLi8MZaqUxRvV8irjTLubqUCsgH1yOOLNnB00OVTog7oq\nDGGD5Lesj/7H7T7pqDH+DNvj1BnFVMDm1DbYGOd0NXZH7gr+Twi3a5Ogtrm6XYG6\n5RuDO2IetJJzmME/FyMBgYntmu97eCDoKy1rdpA8GUMWOk9Mic2MD9d2DLlOjtbP\nUV63KkeuClZYLUN77tl06qUJRD6vSNLCnzxSQzhq/qmr8Bq5t0XCywl1ViaCFknP\ntZBTxszi/GbrzjQQUEwWl7rJKZQQTLifAifc7atDZHRhSzBTJ2IcxEppTllMEss2\nWyk5OzhjILauTGk640q5nbr0mix7yDKW5Us5tzMvgQcd4Cp3E1USGBjKoLs+yT9C\n3skVA5Tjt6k4tc1B1sR+EftWaX3gEtl6XM2S9JZl1YNYyOjXNW5PRy+FmpWuEVBT\nBN8czKnqvi67dCZmgLIkv1ABw00XlWPoH6kAnKFCV9zShC6o9Ef7UX2hHchOLdjZ\nxIJCY4nTu3OfC4rqey3EPGECAwEAAQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIFnDCCA4QCAQEwDQYJKoZIhvcNAQELBQAwgZkxCzAJBgNVBAYTAk1LMRgwFgYDVQQIDA9Ob3J0aCBNYWNlZG9uaWExDzANBgNVBAcMBlNrb3BqZTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMRkwFwYDVQQDDBB6ZHJhdnN0dm8uZ292Lm1rMScwJQYJKoZIhvcNAQkBFhhjb250YWN0QHpkcmF2c3R2by5nb3YubWswHhcNMjEwOTE1MTMyMDUzWhcNMjIwOTE1MTMyMDUzWjCBjTELMAkGA1UEBhMCTUsxGDAWBgNVBAgMD05vcnRoIE1hY2Vkb25pYTEPMA0GA1UEBwwGU2tvcGplMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEZMBcGA1UEAwwQemRyYXZzdHZvLmdvdi5tazCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMuGeVPEG+XxhagXRS8lIRj+GZcHmCiyANAVF7LjQdYeBJDZhfbX3BrGgwwcJh+X3hlpcWoj5h4KZvHsCm7azbrDM/bdmLmc+/H/T3ZOgo4YewNTu2m7ZqJ6RBjW1J5kK9cZqdst90TPqfpBtmM8FoZVUrZuDoyTZp7i6ZWwny4vDGWqlMUb1fIq40y7m6lArIB9cjjizZwdNDlU6IO6Kgxhg+S3rI/+x+0+6agx/gzb49QZxVTA5tQ22BjndDV2R+4K/k8It2uToLa5ul2BuuUbgztiHrSSc5jBPxcjAYGJ7Zrve3gg6Csta3aQPBlDFjpPTInNjA/Xdgy5To7Wz1FetypHrgpWWC1De+7ZdOqlCUQ+r0jSwp88UkM4av6pq/AaubdFwssJdVYmghZJz7WQU8bM4vxm6840EFBMFpe6ySmUEEy4nwIn3O2rQ2R0YUswUydiHMRKaU5ZTBLLNlspOTs4YyC2rkxpOuNKuZ269Jose8gyluVLObczL4EHHeAqdxNVEhgYyqC7Psk/Qt7JFQOU47epOLXNQdbEfhH7Vml94BLZelzNkvSWZdWDWMjo1zVuT0cvhZqVrhFQUwTfHMyp6r4uu3QmZoCyJL9QAcNNF5Vj6B+pAJyhQlfc0oQuqPRH+1F9oR3ITi3Y2cSCQmOJ07tznwuK6nstxDxhAgMBAAEwDQYJKoZIhvcNAQELBQADggIBAJJQwAZS0bnDj2AELabrd3EztNAkbaQUsspJ26gPTDku1n9fB/yWKkoCtFMHiEeNyBhSlsVbdnWOGSX4+ifVqizuDHn59snHBN+xHCAortuHFViMspvDwccdbMo+OQ5SEJhGo3bVRbAlC0tp1h6TOZvsgQvX+ztnCD/2clmAuOaLEEwpMy1lLvUn8fKclP+ulOHki+rd9qETf8jedBttgac/7ekpLm6VMUNCp3f0ETnnP3E4/0lBtodypLusM+Qa6iwM6BujsXNhv+4JG/42LeBIpJvrGKr5eFHMyUT3Nn10ZMpt3Prc60k6O2ZIr8vWq5oeXmCmuJi9zHGZni9f9nPjNyKcS8iRYCdHYyG7HOdHyX6rKvZ0SbaaOW/0Vovf5so+Jsey8Ck7jFuqsIXEdaoJyosGVrRnlA5HWLoPLaijtnghVADGq17M6PqSRWQDWntrzsqb8AyRFm2ksO1JmGHD4x/qxi+UMVOBQ2MQuJQHy4SeMsUOMnZU7ssqpOf3Ar34IQ0usITJ3AC2c8RrES2aBLo/0KkghwIWGo3HZZecNIKZYs3LNA36PliiFo5ihm7FNQMFkQ9rjXndUOwhkOwxchn77aruzWjEqL3p9aZAJKbI1Dt103nvY0m4vPHt/KAlSK/XU3GiqlWZBOuVUb7VVCKclvl78DLgCahA0hnK"},{"issuer":"CN = Faroe Islands Health Authority CSCA v1, O = Gjaldstovan, C = FO\nValidity","subject":"CN = DSC_DGC_FO_345334_TEST_01, O = SJUKRAHUSVERKID, C = FO","notbefore":994595997000,"notafter":994595997000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyOmUr7E52s+yofKQE/TmtLQxLPEp\nZnZMA/OL647R1ZZG+O3tA7F3CfMXmgZZV4OOjuoaAbgHh01F5MdEg1eQpg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICwTCCAmegAwIBAgIUNEcJXMYBcHdOAkMYq/Oxeh8O2hwwCgYIKoZIzj0EAwIwVDEvMC0GA1UEAwwmRmFyb2UgSXNsYW5kcyBIZWFsdGggQXV0aG9yaXR5IENTQ0EgdjExFDASBgNVBAoMC0dqYWxkc3RvdmFuMQswCQYDVQQGEwJGTzAeFw0yMTA3MDgxNDM5NTdaFw0yMzA3MDgxNDM5NTdaMEsxIjAgBgNVBAMMGURTQ19ER0NfRk9fMzQ1MzM0X1RFU1RfMDExGDAWBgNVBAoMD1NKVUtSQUhVU1ZFUktJRDELMAkGA1UEBhMCRk8wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATI6ZSvsTnaz7Kh8pAT9Oa0tDEs8SlmdkwD84vrjtHVlkb47e0DsXcJ8xeaBllXg46O6hoBuAeHTUXkx0SDV5Cmo4IBHjCCARowHwYDVR0jBBgwFoAU7jyBpuYetlF0RODQ9DAz4upqvqEwXAYDVR0gBFUwUzBRBggqgVCBPQIBATBFMEMGCCsGAQUFBwIBFjdodHRwczovL3JlcG9zaXRvcnkuc2FtbGVpa2kuZm8vbGVnYWwtcmVwb3NpdG9yeS9laGVhbHRoMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwuc2FtbGVpa2kuZm8vRmFyb2UtSXNsYW5kcy1IZWFsdGgtQXV0aG9yaXR5LUNTQ0EtdjEuY3JsMB0GA1UdDgQWBBRoTJ4+NjLdr8NB6IGKfB1XhMs0kjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAIFSB54lOmRGpWORORdkNMCupU6c+ujY64AOdb3Sp9rNAiAXlZatIjO4ENXA4H+WJEa4ZUHRAxKFEh//IXBloU0V3w=="},{"issuer":"CN = Faroe Islands Health Authority CSCA v1, O = Gjaldstovan, C = FO\nValidity","subject":"CN = DSC_DGC_FO_345334_VACCINATION_01, O = SJUKRAHUSVERKID, C = FO","notbefore":994596331000,"notafter":994596331000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIp1kjKkjq85G7p7edy5EfNsWF0l4\nXZu5Rz+nL3viEVP/qiZYWwsQ30RXMDwixcFXI2tSzfu82J31dIEGQ3Ceog==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICyTCCAm6gAwIBAgIUJUU4n5bintk3G2D7kThvmJ+NHlwwCgYIKoZIzj0EAwIwVDEvMC0GA1UEAwwmRmFyb2UgSXNsYW5kcyBIZWFsdGggQXV0aG9yaXR5IENTQ0EgdjExFDASBgNVBAoMC0dqYWxkc3RvdmFuMQswCQYDVQQGEwJGTzAeFw0yMTA3MDgxNDQ1MzFaFw0yMzA3MDgxNDQ1MzFaMFIxKTAnBgNVBAMMIERTQ19ER0NfRk9fMzQ1MzM0X1ZBQ0NJTkFUSU9OXzAxMRgwFgYDVQQKDA9TSlVLUkFIVVNWRVJLSUQxCzAJBgNVBAYTAkZPMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIp1kjKkjq85G7p7edy5EfNsWF0l4XZu5Rz+nL3viEVP/qiZYWwsQ30RXMDwixcFXI2tSzfu82J31dIEGQ3CeoqOCAR4wggEaMB8GA1UdIwQYMBaAFO48gabmHrZRdETg0PQwM+Lqar6hMFwGA1UdIARVMFMwUQYIKoFQgT0CAQEwRTBDBggrBgEFBQcCARY3aHR0cHM6Ly9yZXBvc2l0b3J5LnNhbWxlaWtpLmZvL2xlZ2FsLXJlcG9zaXRvcnkvZWhlYWx0aDAWBgNVHSUEDzANBgsrBgEEAY43j2UBAjBSBgNVHR8ESzBJMEegRaBDhkFodHRwOi8vY3JsLnNhbWxlaWtpLmZvL0Zhcm9lLUlzbGFuZHMtSGVhbHRoLUF1dGhvcml0eS1DU0NBLXYxLmNybDAdBgNVHQ4EFgQU784333ONVF7EvtIgnj6nYCOli8QwDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0kAMEYCIQDOLxwWGsaCNVSWy3EpEkSIqNub0Ci4kSOu/O+vvPq64gIhAK5cop6G89f+Z39b52KoyZKcFq3zLCNOdgPg1280oBnN"},{"issuer":"C = MA, OU = Ministry of Health, O = Kingdom of Morocco, CN = CSCA Health MA\nValidity","subject":"C = MA, O = Kingdom of Morocco, OU = Ministry of Health, CN = DSC-MA","notbefore":1631793260000,"notafter":1694865260000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvILEthEWN9hu06zQ9GCUCthQJ9OA\na/0eskYOKbfQZVEf9kNzPEH9qbVrwvr8jhwKL6CKoXAefNLlrBKZ+Mtpzg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDSzCCAvCgAwIBAgITNQAAAASf3f6XNUKvGAAAAAAABDAKBggqhkjOPQQDAjBgMQswCQYDVQQGEwJNQTEbMBkGA1UECxMSTWluaXN0cnkgb2YgSGVhbHRoMRswGQYDVQQKExJLaW5nZG9tIG9mIE1vcm9jY28xFzAVBgNVBAMTDkNTQ0EgSGVhbHRoIE1BMB4XDTIxMDkxNjEzNTQyMFoXDTIzMDkxNjEzNTQyMFowWDELMAkGA1UEBhMCTUExGzAZBgNVBAoTEktpbmdkb20gb2YgTW9yb2NjbzEbMBkGA1UECxMSTWluaXN0cnkgb2YgSGVhbHRoMQ8wDQYDVQQDEwZEU0MtTUEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS8gsS2ERY32G7TrND0YJQK2FAn04Br/R6yRg4pt9BlUR/2Q3M8Qf2ptWvC+vyOHAovoIqhcB580uWsEpn4y2nOo4IBjzCCAYswPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIgvu3EoKquCSH3YEMhdOqaoTo4wQVh/uOCoXE3wgCAWQCAQwwMQYDVR0lBCowKAYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGCisGAQQBgjcKAwwwDgYDVR0PAQH/BAQDAgbAMAwGA1UdEwEB/wQCMAAwPQYJKwYBBAGCNxUKBDAwLjAOBgwrBgEEAQCON49lAQEwDgYMKwYBBAEAjjePZQECMAwGCisGAQQBgjcKAwwwHQYDVR0OBBYEFKda1UHydNCDDid5anJrgzvYRipXMB8GA1UdIwQYMBaAFMKQ1XKb4BABLnDYaZMGbye1kxhEMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9OQk1vcm9jY28ubWEvQ1JMcy9NQS1IZWFsdGguY3JsMEEGCCsGAQUFBwEBBDUwMzAxBggrBgEFBQcwAYYlaHR0cDovL05CTW9yb2Njby5tYS9BSUEvTUEtSGVhbHRoLmNydDAKBggqhkjOPQQDAgNJADBGAiEAozqhzCknO/8+LbUU7EWGoKr9Xx9gx7u/jh4BHN3mt5kCIQDit7cWPpLSCWOr25AHpmdccHK6kGk0mOlAPVIGFnssdQ=="},{"issuer":"C = PA, O = FIRMA ELECTRONICA, CN = AUTORIDAD NACIONAL PARA LA INNOVACION GUBERNAMENTAL\nValidity","subject":"C = PA, ST = Panama, L = Panama, O = AIG, OU = AIG, CN = AIG","notbefore":1631783682000,"notafter":1694855682000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6B5cdgxOlktZr67WAjgdIgoJwG5Z\nSTRBM6yEZb0y3rrlIHQi95rlKO6dFtQxo5rRPZYjvWSbaqVBgvbc0djcxw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDQDCCAiigAwIBAgIUNLMk961tL/NV8V23sWCKJoUwj4kwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UEBhMCUEExGjAYBgNVBAoMEUZJUk1BIEVMRUNUUk9OSUNBMTwwOgYDVQQDDDNBVVRPUklEQUQgTkFDSU9OQUwgUEFSQSBMQSBJTk5PVkFDSU9OIEdVQkVSTkFNRU5UQUwwHhcNMjEwOTE2MTExNDQyWhcNMjMwOTE2MTExNDQyWjBZMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMQ8wDQYDVQQHDAZQYW5hbWExDDAKBgNVBAoMA0FJRzEMMAoGA1UECwwDQUlHMQwwCgYDVQQDDANBSUcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAToHlx2DE6WS1mvrtYCOB0iCgnAbllJNEEzrIRlvTLeuuUgdCL3muUo7p0W1DGjmtE9liO9ZJtqpUGC9tzR2NzHo4G8MIG5MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUhd6zV7FXbysIfctxWIRFj/snGO8wHwYDVR0jBBgwFoAUjQVO+fAPdNAQMNdSugA4+rjnIVQwNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3d3dy5wa2kuZ29iLnBhL2NybHMvY2Fnb2IuY3JsMDAGA1UdJQQpMCcGCysGAQQBjjePZQEBBgsrBgEEAY43j2UBAgYLKwYBBAGON49lAQMwDQYJKoZIhvcNAQELBQADggEBAIJlTzhpBZn/hDvsviHRVpk7W+ICxubhJ7nEOjC6GLECQ22/dWmLo1U98BEv1nZKA1CF2/Uo2vdzryMILJ8tysDjs/7WOa8WH3oZ0f8FVj/vj/9H07xI2bJuQfX3O+SO5LvuMtZzyxBkIVdTn2B7PBsO9AzXPRn8m1W068VTema97toGiqqOn9Yhe6nhgjD4d+AGwmLlHSl/73n+oYzmmznf3JJTwf5Of1t2lH3P3crTyvfLZZHvf6ubQ7JzBcOgRXNgizksh6YNtyZhAjMhHgV6UfOe0ik14IE8xqWkf3k4aq8RS2oSdAeWMQ4rZbPaswKWBWRuNVywheR+xjSaO6o="},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM027614703, ST = Berlin\nSubject Public Key Info:","notbefore":1632287527000,"notafter":1695705127000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErm7fxPeto31KuUPtQl6VxVchANLA\n6NTLFaFJ5bupx2WsBsICmk32sqx46/ZCHCmiFqGyfYv9IxatTrP233n5zw==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM027614776, ST = Berlin\nSubject Public Key Info:","notbefore":1632287862000,"notafter":1695705462000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZftKRdrOhX1qx8KzPyrbXB/V8TYi\n2ZAsEwcr5gkoSkiPWyN+LH0BaRwG6HbqfjpqgdFztwj6PIRisTIQ6LYXKQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM027614837, ST = Berlin\nSubject Public Key Info:","notbefore":1632287972000,"notafter":1695705572000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6JUSmYQDMdlfXO6t5UIh71Hhib6D\nZ7VFVaRHqIiSem6blCKAJ9bSQoEJDjl+zrXVBbnTZYJAtFXt+VBqIzq51A==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM027614916, ST = Berlin\nSubject Public Key Info:","notbefore":1632288070000,"notafter":1695705670000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESb7iWoF0mDYKwlP2EkoD9oJdt0Ew\n3tomFYMPK51gX10VgQPMGAUhwigTTGrSJsT865r6sshKSy20xzsrMZ3buQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQWO/BDTDDPp1gx0FlGiQ0fjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA5MjIwNzIxMTBaFw0yMzA5MjYwNzIxMTBaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjc2MTQ5MTYxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEm+4lqBdJg2CsJT9hJKA/aCXbdBMN7aJhWDDyudYF9dFYEDzBgFIcIoE0xq0ibE/Oua+rLISksttMc7KzGd27mjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IYyaHR0cDovL2NybC5kLXRydXN0Lm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmyGO2h0dHA6Ly9jZG4uZC10cnVzdC1jbG91ZGNybC5uZXQvY3JsL2QtdHJ1c3RfY2FfMi0yXzIwMTkuY3JshmlsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwHQYDVR0OBBYEFOwCwriamcxkm9+fUmESduGmB+17MA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAccEhtO01kInjl2JcqOk0pRJb78yh2+AiT8LhwNgbLiJDnYFLUMZ37tiLtqoAxxczaOKhJiJ6t4/vl5IUdkB0zYgjlL0cdokveOCmaGx4AgHoQ30c1cC4B+Jxvxb2sYbfs1rSgKRZeMmCFxlkxmuY39s5HLnSychPxwCrM59hgYsA8HHhJ3a6Yht4pPT4bJQ0PG6/ayG9J+s/wiU2vGfSr7BR0gwl1qwPkPfTupRF5tHqzSOIFEapYHdxBmx/7PsHqSqjidhMH2y4zvU/AH4HOYsqoMheRBA1pw9O6lYa7BjLj9zefxFeCvAPSvgIlXAWTZDOY7B/RhEpsdbl8MlvXYo1Pu2m/9EAdm1DlPoGeOx+MHi+ZEdszX9z7RFydyw1Eb56xMMkhRZkk9uibVMb5XFPYY2r4LRyk7X6P4IVqM0SVP556LPnc6/6tHhzyG3EBdmGPXLzq5u2y3Ql5R8JoeMTp06I5r+BblvibSRd+iXqwyv7s7Aqst64Z1lEqCjqHyqKwGGUdlVo40Db6hsCyNHu+7ziKeIMApPE/TclCdDOTRb6CU9/4LLqiT2bjPFwbY4C4rnuGbmP9kGHTU7+2TDS+jYPrqiR1SCuGIRtwcXTnVKJV3WkQpmxv8gq8ZIsksrTf4kegpzGdQ4lh6nJxrVlE97IVO0uRiGBs5nhvUg="},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM027614758, ST = Berlin\nSubject Public Key Info:","notbefore":1632287722000,"notafter":1695705322000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExfzglJTFBrKFErvCRkqtHq0U7O7S\nmxzRntsiUENJFzkpxD0rHs+0H6Qb23WUiaDe368iOrWfNk03uOEjviJurg==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = IL, DC = IL, DC = GOV, DC = HEALTH, DC = MOH, ST = Israel, L = Jerusalem, O = Ministry of Health, OU = Digital Health, CN = CSCA-Health-DCG-IL-01\nValidity","subject":"C = IL, ST = Israel, L = Jerusalem, O = Ministry of Health, OU = Digital Health, CN = IL-NB-DSC-01","notbefore":999666960000,"notafter":999666960000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcw+UZUnryP4rqSw+a8xQw4wLHZkc\nu4MDjJP7QeBUEpDt8xh4i4RSIBEJrBkAukSSobRDkwMb0dSCsWwK0rfMgQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGDCCA76gAwIBAgITHQAAAAdFhwvAgMs01AAAAAAABzAKBggqhkjOPQQDAjCB3jELMAkGA1UEBhMCSUwxEjAQBgoJkiaJk/IsZAEZFgJJTDETMBEGCgmSJomT8ixkARkWA0dPVjEWMBQGCgmSJomT8ixkARkWBkhFQUxUSDETMBEGCgmSJomT8ixkARkWA01PSDEPMA0GA1UECBMGSXNyYWVsMRIwEAYDVQQHEwlKZXJ1c2FsZW0xGzAZBgNVBAoTEk1pbmlzdHJ5IG9mIEhlYWx0aDEXMBUGA1UECxMORGlnaXRhbCBIZWFsdGgxHjAcBgNVBAMTFUNTQ0EtSGVhbHRoLURDRy1JTC0wMTAeFw0yMTA5MDUwNzE2MDBaFw0yMzA5MDUwNzE2MDBaMH8xCzAJBgNVBAYTAklMMQ8wDQYDVQQIEwZJc3JhZWwxEjAQBgNVBAcTCUplcnVzYWxlbTEbMBkGA1UEChMSTWluaXN0cnkgb2YgSGVhbHRoMRcwFQYDVQQLEw5EaWdpdGFsIEhlYWx0aDEVMBMGA1UEAxMMSUwtTkItRFNDLTAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcw+UZUnryP4rqSw+a8xQw4wLHZkcu4MDjJP7QeBUEpDt8xh4i4RSIBEJrBkAukSSobRDkwMb0dSCsWwK0rfMgaOCAbcwggGzMD4GCSsGAQQBgjcVBwQxMC8GJysGAQQBgjcVCIHfvEqGsP5shImdOoHa71aE5rZjgR6HqL9hhrfIGwIBZAIBATA6BgNVHSUEMzAxBggrBgEFBQcDAwYLKwYBBAGON49lAQMGCysGAQQBjjePZQEBBgsrBgEEAY43j2UBAjAOBgNVHQ8BAf8EBAMCB4AwSAYJKwYBBAGCNxUKBDswOTAKBggrBgEFBQcDAzANBgsrBgEEAY43j2UBAzANBgsrBgEEAY43j2UBATANBgsrBgEEAY43j2UBAjAdBgNVHQ4EFgQUwT5hHIGSYoKxJeYKXe2rSc9vQCQwHwYDVR0jBBgwFoAUBb9drdvo+jTMbWZX2BWGWxPT3uwwRwYDVR0fBEAwPjA8oDqgOIY2aHR0cDovL2NkcC5oZWFsdGguZ292LmlsL2NybC9DU0NBLUhlYWx0aC1EQ0ctSUwtMDEuY3JsMFIGCCsGAQUFBwEBBEYwRDBCBggrBgEFBQcwAoY2aHR0cDovL3BraS5oZWFsdGguZ292LmlsL3BraS9DU0NBLUhlYWx0aC1EQ0ctSUwtMDEuY3J0MAoGCCqGSM49BAMCA0gAMEUCIQCWjjvyGozH4GMhl6d81s5PolAOAXXipAvnnP6RiLGt4QIgabSTGYvdNpepTEdQ7+F8KMdiBZStUJ1utwJqVN1Ov/M="},{"issuer":"C = CH, 2.5.4.97 = VATCH-CHE-221.032.573, O = Bundesamt fuer Informatik und Telekommunikation (BIT), OU = Swiss Government PKI, CN = Swiss Government Regulated CA 02\nValidity","subject":"C = CH, ST = Bern, L = K\\C3\\B6niz, businessCategory = Government Entity, 2.5.4.97 = NTRCH-CHE-467.023.568, O = Bundesamt f\\C3\\BCr Gesundheit (BAG), OU = GE-0220-BAG, OU = Taskforce BAG Covid-19, CN = CC_EU1201528_21_09","notbefore":1632388377000,"notafter":1727082777000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wSNYJMn6P/DgJDmQKob\nZubHIBOAlIEG7dI+6p4uXZqyw+gXcUXaaTEEn5F9i+OMAz9GdiTlXo6dPr7LNOm0\nyoNWNJMcmW4ePGWKpTm70Ie3YhkAzLiZ2kvTUnAKJj3q49IttvL6gj1pOOGroUyL\nBB44JOvd21GSW2N5LCZU9JlGXmVe/xPirbMFgQx9hgcwPlmzY3OGHGwdosO6aEew\n8fBvgHwyJfqbALRF757EpA/qNfLH+QwinigkIl613yghzslRzoejvyOz4UkKOQm1\n8fAbBF173J/Uur4yLF7voui03QK2we21sLlW8WkS4xKDnlL/rKvnsSyTEFqsC0Jx\njwIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = CH, 2.5.4.97 = VATCH-CHE-221.032.573, O = Bundesamt fuer Informatik und Telekommunikation (BIT), OU = Swiss Government PKI, CN = Swiss Government Regulated CA 02\nValidity","subject":"C = CH, ST = Bern, L = K\\C3\\B6niz, businessCategory = Government Entity, 2.5.4.97 = NTRCH-CHE-467.023.568, O = Bundesamt f\\C3\\BCr Gesundheit (BAG), OU = GE-0220-BAG, OU = Taskforce BAG Covid-19, CN = CC_EU1201529_21_09","notbefore":1632388429000,"notafter":1727082829000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2MyDsFqh2Xhdc6PUbR+0\nalU0hD8tT6BSJpCbigvdZAbz5slDPAIrXvyz2Aac79U6jvyyMHHDbIOL1DxU1/pc\n7shgd/B0btHJogwQQUxyh149GnA8e1i3LLJhu8dtC4LxBPZK91nknkgrKyYU55sJ\niQTnx2VYuF6WDBXFW4Q2EHsN+KIC68uDNousFHdw4Dk9rb4vEHLqsbY/afEZ1HmW\nbrvN+6pPyPFh43ogvYWkVcn5JahOXQqpoePVFUAq0sdqG9DluoSXWqpyNfcTQp3W\nCVldqsyMfAzGwceR/hKohMDXBmxAAbv5h8U05KX1xHgwAWfPPiITtqqIKt0EvFJP\nzwIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = CH, 2.5.4.97 = VATCH-CHE-221.032.573, O = Bundesamt fuer Informatik und Telekommunikation (BIT), OU = Swiss Government PKI, CN = Swiss Government Regulated CA 02\nValidity","subject":"C = CH, ST = Bern, L = K\\C3\\B6niz, businessCategory = Government Entity, 2.5.4.97 = NTRCH-CHE-467.023.568, O = Bundesamt f\\C3\\BCr Gesundheit (BAG), OU = GE-0220-BAG, OU = Taskforce BAG Covid-19, CN = CC_EU1201525_21_09","notbefore":1632388356000,"notafter":1727082756000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0urbzgg7+VIvee9+u7Ti\nW+a+xDKAhqh9CXfPS+Lydi9Y527boI6bbqZxA2qhFVWp4FFzxRYRy6pVfReokpgS\nQvcjoR6YvRNi/HK4c44tLvz5gymhX/80oR43Gr/vOUkvne3c3SD8BN+tZlJScIt7\nMrIm0KNWjGGBoCnswxcn2dYGNoYFvHVN/3exg+oC4oO5QU3rNyFh3PWSHIn3svZA\nAeT3NLLdZ2inGoRyGTY3IYcPk6vj2y69wDxz/rO3kV2SpwHMCkKqcwwsdlOiqS6n\nd6AvOpQYMRRC5mEFbB1J0g7z73YdH+WNzEsa/B25xzDrIWi/sul2INhd3q0OTw2v\nqQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = CH, 2.5.4.97 = VATCH-CHE-221.032.573, O = Bundesamt fuer Informatik und Telekommunikation (BIT), OU = Swiss Government PKI, CN = Swiss Government Regulated CA 02\nValidity","subject":"C = CH, ST = Bern, L = K\\C3\\B6niz, businessCategory = Government Entity, 2.5.4.97 = NTRCH-CHE-467.023.568, O = Bundesamt f\\C3\\BCr Gesundheit (BAG), OU = GE-0220-BAG, OU = Taskforce BAG Covid-19, CN = CC_EU1201507_21_09","notbefore":1632388324000,"notafter":1727082724000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA195RM978uHXQTBanwOqW\n5vt6WBnO8skLa7kiY4q4l8MOgSrIitQvBcnuJFiTazMTjJpdEAblB0E4mZuzvn2p\n1I7SrFL7mwqQFrQ9GXvNp6gwBHYJrMci+J0FshxnWc9EYFFbnmixdSsyla5c4W8b\n/pfasFYWkuCwUCGLrspMrkJ/gsWcj4h0HvlCO9hHsHlLqD/kY0y0VGUAizsah255\nYZhTeB4ag60E93wUHt6HX0q4ngCk05S04aH9eaBF9GIuRhxrI4GEDcYIPB8GasrK\nPIS8ufOMQsSE8uJkPhJGQblDh+fPZb2bnUPX9vUSBPTJD5XgHsPGancWrpzBGttO\n3wIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = CH, 2.5.4.97 = VATCH-CHE-221.032.573, O = Bundesamt fuer Informatik und Telekommunikation (BIT), OU = Swiss Government PKI, CN = Swiss Government Regulated CA 02\nValidity","subject":"C = CH, ST = Bern, L = K\\C3\\B6niz, businessCategory = Government Entity, 2.5.4.97 = NTRCH-CHE-467.023.568, O = Bundesamt f\\C3\\BCr Gesundheit (BAG), OU = GE-0220-BAG, OU = Taskforce BAG Covid-19, CN = CC_CH1200000_21_09","notbefore":1632388133000,"notafter":1727082533000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5G85GgStNuJe4lqs7Jkb\n7/3tBfhNTs0DDuxm0XpJIptqBLFvTLllQqMO8QI/lx1266VlfthTASK2ZpnQC6Id\ns/NEdNrLHuGIRNktd7oaq3Priz7f96TnXiW9qX/WLL55wpXcHSmLyvEfdP7BSdyQ\n9xrzm8bwg8cD638e69lScBeGpG04Z8hOVSQAQOBzAjSGkWPzhkah001vVev9CNcZ\nBiL56iVox6nIJ/sgbzOlvwJDaXnKZOOXRk+xKQA+BDjjBfmvq6KvKoiRoGhvmG3g\ntMFvXPEr+mvBkbHvzswPr6aKpbm4sFzDbbgsSb6zGJcPLhs6aMm0FaIuetyc0lxf\nSQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"MIIH0zCCBbugAwIBAgIQQ+x5JW4dgGnoKqONJn2FVTANBgkqhkiG9w0BAQsFADCBtzELMAkGA1UEBhMCQ0gxHjAcBgNVBGETFVZBVENILUNIRS0yMjEuMDMyLjU3MzE+MDwGA1UEChM1QnVuZGVzYW10IGZ1ZXIgSW5mb3JtYXRpayB1bmQgVGVsZWtvbW11bmlrYXRpb24gKEJJVCkxHTAbBgNVBAsTFFN3aXNzIEdvdmVybm1lbnQgUEtJMSkwJwYDVQQDEyBTd2lzcyBHb3Zlcm5tZW50IFJlZ3VsYXRlZCBDQSAwMjAeFw0yMTA5MjMxMTA4NTNaFw0yNDA5MjMxMTA4NTNaMIHnMQswCQYDVQQGEwJDSDENMAsGA1UECAwEQmVybjEPMA0GA1UEBwwGS8O2bml6MRowGAYDVQQPDBFHb3Zlcm5tZW50IEVudGl0eTEeMBwGA1UEYRMVTlRSQ0gtQ0hFLTQ2Ny4wMjMuNTY4MSgwJgYDVQQKDB9CdW5kZXNhbXQgZsO8ciBHZXN1bmRoZWl0IChCQUcpMRQwEgYDVQQLDAtHRS0wMjIwLUJBRzEfMB0GA1UECwwWVGFza2ZvcmNlIEJBRyBDb3ZpZC0xOTEbMBkGA1UEAwwSQ0NfQ0gxMjAwMDAwXzIxXzA5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5G85GgStNuJe4lqs7Jkb7/3tBfhNTs0DDuxm0XpJIptqBLFvTLllQqMO8QI/lx1266VlfthTASK2ZpnQC6Ids/NEdNrLHuGIRNktd7oaq3Priz7f96TnXiW9qX/WLL55wpXcHSmLyvEfdP7BSdyQ9xrzm8bwg8cD638e69lScBeGpG04Z8hOVSQAQOBzAjSGkWPzhkah001vVev9CNcZBiL56iVox6nIJ/sgbzOlvwJDaXnKZOOXRk+xKQA+BDjjBfmvq6KvKoiRoGhvmG3gtMFvXPEr+mvBkbHvzswPr6aKpbm4sFzDbbgsSb6zGJcPLhs6aMm0FaIuetyc0lxfSQIDAQABo4ICpzCCAqMwKAYDVR0RBCEwH4EdY292aWQtemVydGlmaWthdEBiYWcuYWRtaW4uY2gwDgYDVR0PAQH/BAQDAgeAMIHXBgNVHSAEgc8wgcwwgckGCWCFdAERAwUCDjCBuzBDBggrBgEFBQcCARY3aHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3BzL0NQU18yXzE2Xzc1Nl8xXzE3XzNfNV8wLnBkZjB0BggrBgEFBQcCAjBoDGZUaGlzIGlzIGEgcmVndWxhdGVkIGNlcnRpZmljYXRlIGZvciBsZWdhbCBwZXJzb25zIGFzIGRlZmluZWQgYnkgdGhlIFN3aXNzIGZlZGVyYWwgbGF3IFNSIDk0My4wMyBaZXJ0RVMwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3JsL1JlZ3VsYXRlZENBMDIuY3JsMHcGCCsGAQUFBwEBBGswaTA5BggrBgEFBQcwAoYtaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvYWlhL1JlZ3VsYXRlZENBMDIuY3J0MCwGCCsGAQUFBzABhiBodHRwOi8vd3d3LnBraS5hZG1pbi5jaC9haWEvb2NzcDCBkwYIKwYBBQUHAQMEgYYwgYMwCgYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQQwSwYGBACORgEFMEEwPxY5aHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3BzL1BEUy1TR1BLSV9SZWd1bGF0ZWRfQ0FfMDIucGRmEwJFTjATBgYEAI5GAQYwCQYHBACORgEGAjAfBgNVHSMEGDAWgBQ0C77yFT6kD1cH4kFkizIR0SkLYTAdBgNVHQ4EFgQUBKTr1YcLKJLc5jkBfPBbM+mKOS0wDQYJKoZIhvcNAQELBQADggIBAJI0MROzMyXnSBFe7M2gOYUGo9At0j8KU0O6KoysYxr0JAiFFmlnacMpMRjr+x/P6ZATf/g3vdwB+dI/ti2CKh9lUT9YH3uLS6IBv9ssVlWTaDdw7jWDsi60z1qe8feBWvgHeZn2uCVRow5rUTLJ4vaIuEmvMjGvUYac/lUfxBYxzH6Tleaws4L3ViGzpyuTDbn/UHFxYLHcNhUtS44QuNqCL51f64Sktg4uZPvnQF3n0YsLZq67USgf77LSD9rmtOC159kXr5QkkvQ9u5cVAwBLXvSQwL2OJEDbbyXXhg01FGBefZ2uB82FRGp/YjV/JpPceJ8Apk+dmx6HLobZFXugKaZoyywS9HX+rA8T4FLDKyQ04feAzaJl8y+BD5H5uBgDdfjf2E1o7T0JuyNDeZpwBCfiXhT8A4VspB1gevlnT3hD/3aLHeCb6fbZvOx59VFGm2/h69ae0eoZk8tvZGGNjBj2IcwCw5Kc6xBEjHOJPJiB9/ZOP7nx+v/TV8txhAJA6Jy+5I1NDwq2O1GLQnExrXec8G8e4NiASNng4ne5DzyQm76HPcDag4eUCS+09b7du8x0sWgK9L9wOZQndEGn+ci21YMb+iqT+6C6ArjTRcNJBS8hteEHsWvDjWIhX6mfzhmebHPsNuR60gQLDzD+G8PNNutyLRBR88KTs+W/"},{"issuer":"C = CH, 2.5.4.97 = VATCH-CHE-221.032.573, O = Bundesamt fuer Informatik und Telekommunikation (BIT), OU = Swiss Government PKI, CN = Swiss Government Regulated CA 02\nValidity","subject":"C = CH, ST = Bern, L = K\\C3\\B6niz, businessCategory = Government Entity, 2.5.4.97 = NTRCH-CHE-467.023.568, O = Bundesamt f\\C3\\BCr Gesundheit (BAG), OU = GE-0220-BAG, OU = Taskforce BAG Covid-19, CN = CC_CH1200004_21_09","notbefore":1632388297000,"notafter":1727082697000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAphhhJq5dIl4yUEbliJyc\nkuldKiylWZZfTRQNx/k0xUFU60n9tUR4Ky1AibJHIiN/nIhSZTgwSSuALWinuEri\nI1ROb++TsQODtC3dDFFbNIwq1sVuT1TI7o6nnGTRHxwJckNP5++obdKSZtUfT6LO\nClxFsNoYl2EAzwb8YdcOiWNEB8gj7aY+vPL9BmECb9IRxPwhOxzPYkgLUkvqzt2U\nzV6CFKM5t4LxM4pTICy9vlIViZTcx6FDJ78AuT2C5AbW+ILYmc6/V189uga2/PTy\nEJyABw3gRg2BItkwy1flAjQcNIhKzshorcwGPD9EtuqpWF26DyU/HIQUabptMC6P\nCwIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"2.5.4.97 = NRTAD-U129638U, O = SAAS, CN = DGCG, C = AD\nValidity","subject":"C = AD, ST = Andorra, L = Escaldes-Engordany, O = SAAS, OU = SSII, CN = dsc","notbefore":999683842000,"notafter":999683842000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGvHqf7SYtlvevOyA/no+i1/WcmS0\nbOYP1bgP+pJTjTkBOpQi+f7Ie6415WFl9aoqzMmKRJmE6Ur4H+b9Vba7FA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDNTCCAh2gAwIBAgIUPlH4JERPPj3GoUrvEpBgHChJmOcwDQYJKoZIhvcNAQELBQAwRDEXMBUGA1UEYQwOTlJUQUQtVTEyOTYzOFUxDTALBgNVBAoMBFNBQVMxDTALBgNVBAMMBERHQ0cxCzAJBgNVBAYTAkFEMB4XDTIxMDkwNTExNTcyMloXDTIzMDkwNTExNTcyMlowaDELMAkGA1UEBhMCQUQxEDAOBgNVBAgMB0FuZG9ycmExGzAZBgNVBAcMEkVzY2FsZGVzLUVuZ29yZGFueTENMAsGA1UECgwEU0FBUzENMAsGA1UECwwEU1NJSTEMMAoGA1UEAwwDZHNjMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGvHqf7SYtlvevOyA/no+i1/WcmS0bOYP1bgP+pJTjTkBOpQi+f7Ie6415WFl9aoqzMmKRJmE6Ur4H+b9Vba7FKOBxTCBwjAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFOZE/2bkC1HwzFPPcZQJ82uVyOTTMB8GA1UdIwQYMBaAFGiVtMJNO5SQY5dOAz9JNlmRi90OMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9jcmwuZXhhbXBsZWRvbWFpbi5leGFtcGxlL0NSTC9DU0NBLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMA0GCSqGSIb3DQEBCwUAA4IBAQBB7UNVlexZwtC19yXkui85kfGT0RT0CqfLAvFPXy22Cy0/Al1OWItlWiN7z4RKSfhXel9jBPkowWjm4TH/Z9SS558sa/CQohYUaPlgR2UluMhbDVUsyLicQbqVx571GIA3BLoInJsFnp3Srv+XgP8ic2T72/mXwxnHCg1Jra2X8W0GGaxrUuvf+dxnPhDTeBNVqmYgk6q1vS3Nj3yugkgmg2xXNIWpcFjeC6/FVsTEORxi4SOjjn5Omhb9uZLeq11hXx04fORw9ctzppi5P5TDNDdmqa5iLRVsgS7Z7+Fp7V4QmfiRsVjyX+2QadvREEIbgcw8Y9d1j1qIXrCYwhCE"},{"issuer":"C = MC, O = Principality of Monaco, OU = Foreign Office of Monaco, CN = CSCAPKI_MC\nValidity","subject":"C = MC, O = Principality of Monaco, OU = Ministry of Health and Social Affairs, CN = DSPKI_MC_DGC_1","notbefore":1632116688000,"notafter":1679487589000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/XCqYpwUi4RLldTOqsukogo6l4ZU\nIXO4ZtjkUxEpDToYLFI0uApt1KXSfpsn8EfNGPaWF+YW2B1QKpbCtbtZFg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE6zCCAtOgAwIBAgITEfc5jeKc7JLK6DrtdI7KoEudnzANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJNQzEfMB0GA1UECgwWUHJpbmNpcGFsaXR5IG9mIE1vbmFjbzEhMB8GA1UECwwYRm9yZWlnbiBPZmZpY2Ugb2YgTW9uYWNvMRMwEQYDVQQDDApDU0NBUEtJX01DMB4XDTIxMDkyMDEzMTk0OVoXDTIzMDMyMjEzMTk0OVowdzELMAkGA1UEBhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25hY28xLjAsBgNVBAsMJU1pbmlzdHJ5IG9mIEhlYWx0aCBhbmQgU29jaWFsIEFmZmFpcnMxFzAVBgNVBAMMDkRTUEtJX01DX0RHQ18xMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/XCqYpwUi4RLldTOqsukogo6l4ZUIXO4ZtjkUxEpDToYLFI0uApt1KXSfpsn8EfNGPaWF+YW2B1QKpbCtbtZFqOCAUowggFGMCgGA1UdEQQhMB+CC3d3dy5nb3V2Lm1jpBAwDjEMMAoGA1UEBwwDTUNPMDUGA1UdEgQuMCyGGGh0dHBzOi8vY3NjYS1tY28uZ291di5tY6QQMA4xDDAKBgNVBAcMA01DTzAOBgNVHQ8BAf8EBAMCB4AwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzArBgNVHRAEJDAigA8yMDIxMDkyMDA3NDQ0OFqBDzIwMjIwMzIwMDc0NDQ4WjAdBgNVHQ4EFgQU5DhDGjpYh+dwXciftwec8RGrW00wHwYDVR0jBBgwFoAUMDKcfP59jwLtxRJa4OtXv+iFiSkwMQYDVR0fBCowKDAmoCSgIoYgaHR0cHM6Ly9jc2NhLW1jby5nb3V2Lm1jL01DTy5jcmwwDQYJKoZIhvcNAQELBQADggIBAAnLvzFhQlE4lohlktg0QUnF6DGIA1JEC26QRnJi+1gMXNZok90Q37DPJ54uml8UnCkieGVIpQaDp5jIxMax+t6QmwkgQNoQzjiJJqeKP6xBsEUmGUKURx0g5z7ULem+TdedSIiMEqSrie3YX5Zfea3dzy3zIw2s6cCa67RHj860OqXZHrMtYc7rqoXxkWkqGaSJovxSthmiBWQisTPFMTzFZqm85ojU11A3uY8ReuUrUuvyefVAFENLuz8j2T6CGOIigNxnmyZzm+2TpH+53Dd5S8MlVwuZZ4RHv2g+p/YygOvHceGPIORSeLcqrIW4kgz6HxonBy/vjC6Pj07wFlyFafo3V5KQxPUQZtFQ8blhe7ZrRPyimObcA55Oh20V/HnVewzz3onjEQuotg1QNRJ7gzoJeBunwFXpHrG/mUg3dVeow0pOV0vsQ/QAOCM0p7GVABoHT4O4dOWLNoaWcoQBvPSGbAl5O1YhzOhXRTlyYfxNSUxKavWfpTF1mB1WXyThtatvQ2cP7qlgVYbBjvejyz+RTpK2cgyDFDlcBJaBakCBeuqEJvKvMxX50NqQAVBTfywrQyIyynttQgoxxl5KwkEPJ4BrbP/XIw8KkuGO5C9EKGjaftQNQ25GkdNDQFyMiJU7EhN6Hp/6dsgZXnfG8gacZu4vnIiXphYBigi2"},{"issuer":"C = MC, O = Principality of Monaco, OU = Foreign Office of Monaco, CN = CSCAPKI_MC\nValidity","subject":"C = MC, O = Principality of Monaco, OU = Ministry of Health and Social Affairs, CN = DSPKI_MC_DGC_1","notbefore":1623910440000,"notafter":1671261869000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcrxlv5/uGbsaXM/QMSpvZV2iNtF0\no4QBech6LGpy3OEefbJLf+4iqI19QNWtUXEjlMMytB4+1ESLHdXyki5X2g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE7DCCAtSgAwIBAgIUAJdHETmGhF9czCBAxz36xGrwMPkwDQYJKoZIhvcNAQELBQAwZjELMAkGA1UEBhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25hY28xITAfBgNVBAsMGEZvcmVpZ24gT2ZmaWNlIG9mIE1vbmFjbzETMBEGA1UEAwwKQ1NDQVBLSV9NQzAeFw0yMTA2MTcwODI0MjlaFw0yMjEyMTcwODI0MjlaMHcxCzAJBgNVBAYTAk1DMR8wHQYDVQQKDBZQcmluY2lwYWxpdHkgb2YgTW9uYWNvMS4wLAYDVQQLDCVNaW5pc3RyeSBvZiBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzMRcwFQYDVQQDDA5EU1BLSV9NQ19ER0NfMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHK8Zb+f7hm7GlzP0DEqb2VdojbRdKOEAXnIeixqctzhHn2yS3/uIqiNfUDVrVFxI5TDMrQePtREix3V8pIuV9qjggFKMIIBRjAoBgNVHREEITAfggt3d3cuZ291di5tY6QQMA4xDDAKBgNVBAcMA01DTzA1BgNVHRIELjAshhhodHRwczovL2NzY2EtbWNvLmdvdXYubWOkEDAOMQwwCgYDVQQHDANNQ08wDgYDVR0PAQH/BAQDAgeAMDMGA1UdJQQsMCoGDCsGAQQBAI43j2UBAQYMKwYBBAEAjjePZQECBgwrBgEEAQCON49lAQMwKwYDVR0QBCQwIoAPMjAyMTA2MTcwODE0MDBagQ8yMDIxMTIxNzA4MTQwMFowHQYDVR0OBBYEFCurTSCZX0MwxJXi6a/cJR4zZn9WMB8GA1UdIwQYMBaAFDAynHz+fY8C7cUSWuDrV7/ohYkpMDEGA1UdHwQqMCgwJqAkoCKGIGh0dHBzOi8vY3NjYS1tY28uZ291di5tYy9NQ08uY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQAEaZtWub0CVASIEHG95DCwcFIVdaVZZupOzKuIimUNRH8+9pa9IPekVPLiArnGlmpAg6o4Ac8MVHvCkEiSAA8HVDkABbssmrKm6ZZ4XRDtBokrGlYskUy2B8AQypPKjKXz/vMYnVMNl4kkcehG8+B0KyPrpYMK7VXQuRxe+QC0CaemS2NGLNvr2+vnpfXeJAfM6TpnSPaN7MjAgt/8UyGJP6HLuHbGgbALgcxwqq5CniU3f8zLjIXRKWqhDmE4M8ufu/VFVR18fWoHqeytcOpFTdmN3YLxu9jA573KHyLRLO7g20PlOJYuHtOoG2SzwEa2Ut0ooFAajLnxwVoYuCfYKWubYRRqReFI45EtNtC8Tut8J3SAIk53IH6v1mG4m2QFCGFV7ehu6A+jwsVrg8o+XesHV96EK8jJooEjp2jIIrHHU8LTozrWSECiRsnEWv7e4TP4+3dj/6Yrrzm6DlzCw/y9s6T/Iolp1SKaNsHOHJwwNTJAqzGxP8N8fdnxs1c1iLXXxHJy8AKZC8eNFj09AF8Tvi/IQTOpmMFhRGkCCkrNMf5Zf7vFLtAm+yqOsOOYNhTiyoqX96tKipsxcm+CDIAnhyUgJgxVfEUO547lg3/hdJUvI62/0gisUqXBnYDwMiWlXZHmS+K9lMar0k1NeKb2K5BSox7U3oP+d/RPpg=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_026","notbefore":1639519200000,"notafter":1702591200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuGGqMuc3NK3Y9fI82qbrWAiNKKKK\nYm6nLpibiL+DBRILW2+5cFXZ19HLfbKwtAxyVOsv2N6x2VS8zklYStHGEg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUftzSPzs3lKyxin4HzGAPSInAlHwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLhhqjLnNzSt2PXyPNqm61gIjSiiimJupy6Ym4i/gwUSC1tvuXBV2dfRy32ysLQMclTrL9jesdlUvM5JWErRxhKjgeAwgd0wHQYDVR0OBBYEFJRMukUQrFVGUPhjzucJOPTIs0uEMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAsalnKHPbwm0FnkhrFHCfZt79nvNRML5k/gPI0Ab70inRKqqTETv/T+l0xtSBNbU5cOu2SdymWqaYZDiDdfKhmw1MBJsieP/+Q7yIAHt/RYlhOwMoPcxsTHtrSpW9kRYH77OYX6Ou9davXN7Pd4sv0Itl33FYxoXhHv1lPA2IEf19zCxgqeStforkAqm3jD6tlEc+gfCUnKsqJetIdAeKVYt5qcz/hmCFnl+GgSVswG9SqogySJD1F9Uesvi0k1laWphmU5IkxHymJqy7W57FgayiIrG1cUtuVcPaCxZ9eNWYoM03p6NdVcSr7qkGuglzkgtzxk5ncruJ2+NRUeUEBlwTtzI5QIcW1w0lnOXbLrvx40VyhJhY3ixZcd3+TiHhMxohPTA5ECg35u3q5/xBA0XF9nyiJ66Zr0WUy722QlGzOQyChGLeE/yHsBahNEq1Kc3L4IrqZu/TB54qM6xYKMllli7CCyzYH6NzMYJeHrrjNyeakX0riniPpKvuW08mwReqsuZ8uS05JoR93z5eSxJewvdUlirrBQPZEjA6f/+3fkMT21JJp4nuGDJQSwYXWTlxOI8jwzi0k887yNFIeTgu6PVRqzOGQF7JR/n0VbwKASOAvOnvG8nNWhAhdYyzDfQ71KAcDkx+rRu0mgmdtgbEUA//B++J5sZjHUlb8Ig="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_027","notbefore":1642197600000,"notafter":1705269600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF+/sS02b7zIFGgBu4UwddBeosNhu\n+zvARa+ySKeK2Rd2AJxx1lnnUgfkD0MHlO72kUEwhYdqfRZ7gSgFEgdEkQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUeVVanArVip2h9V4zfLC4CgjqA/MwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDExNDIzMDAwMFoXDTI0MDExNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBfv7EtNm+8yBRoAbuFMHXQXqLDYbvs7wEWvskinitkXdgCccdZZ51IH5A9DB5Tu9pFBMIWHan0We4EoBRIHRJGjgeAwgd0wHQYDVR0OBBYEFPSGVTQu85GTEXtAynAWYMIEdyb0MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAFl1G9mpI4FDpwyx7oXu1bY3IXUrUslXJo0Bmv3ayqQ1jCVXOqz0ZemN5lOIVwUMDynZLngsHmKz+fTR8K3CI6PaSxeDy0Rw/CsyWQgt1CWUR6q296z1DaPMsDGfO7dKDqKTGgoge3K4IPCjtQixVYgylfo6kxBHutIWAIgFV+cXxx+fn3K828SMoS7DkvKtAkvEQAXGGk6pbP3EdAtUJbDSbOufxS0W45a34C6tKiDAOJiXlCZjhtNHyTxSXDDmiyoabxxICNLmKJ5IMEe45pOwwZC5uPr9q0Qc72+jVsF9VeutV/ybocLY8Mi9GRJFKP5HQ/yQY5aYTstbV2V9pSDP8bVgdkzYSbmEVTgJ6W6Io1B9OFrbkeeOQzwugumUDjV4aA7NM4kX1Hh0WRtGnrVqo0Lfy0Rbj10goEb6BidecOUMq9iBuD7OsGIBqCO/p77xBC4TPt2rdaO2hDddFt0KLzesFgNrHJzMRH67MUHTDUaPVq0s3vu18XurOerivE5d7EJWboGelIWLNGkhOV0rza+4slR56wqve4I/A+Qhf7FwPZofZuPk8JvE3gxXQyktH1wzWGYBUUFYIbScJbHMb0hTecaPye0gGcKtQ1Y2VR7JA5NldYZ3cRMcdH4WNqYfu7qKl0NeQ1hqp1+pL7iWsOLG24zr0Yi8/Mm/xE5k="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_029","notbefore":1647295200000,"notafter":1710453600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvPje+J0NfHHDSd2eilS/vlPfvFyg\n2GqaQe5uDcfbRNwXV51JZqQ9bno+FOnw+AFrLd9aOvsqWkvH6ogsKHk26g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUV/o7xkGXd5ZK2x7x5++zZSO6I/0wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMxNDIzMDAwMFoXDTI0MDMxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyOTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLz43vidDXxxw0ndnopUv75T37xcoNhqmkHubg3H20TcF1edSWakPW56PhTp8PgBay3fWjr7KlpLx+qILCh5NuqjgeAwgd0wHQYDVR0OBBYEFNNslXmB1flUg6kCQdJEDjP5T+rhMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAYRbsqQL82TwM6rQ75T0D/ZDzIHz2VP5rGoUBUGMvoqXYBFVZT5DbpjHjmb438xzeMFFUe64JRm5vkvyliwZrDK1WJD9W2A12mzIXx5DDakYh4JUkRUQSmpFynP3zrpr+P0hOZmDjC/UPUbSVRkFAwa8OieTSppv1GkNXTyDK/nZC/5+z0tzSWcg+xnR5ryKSov+oelpM4lGfSbOjJOXlEe/Vum7jt8dOkbCMyXCxKM/GGtOCVFmEUwieDe6vXmxRbkQHWyPclYB+RsNTct7vD+V04mXaO2M/EPdp7uN6r/4gI3e1UiJgQzh6Fntp9pDe9nkAQRjaotmokiakWGILMcJNMjKXTcWGtGECR2jIHCvvH7j/HSZxEQe6TXddnnMzLovH72RFnNQ2ZarK2hXcc+o+Rh8sGDlyZddTTJYzVm5lxQr1BtEMT8eNfc2Xd2VxaFaAp7abyKX0TaY8/WKkab+VgFgGoTf72LV6mUyWSSvm3U6578RCPgf21RVfIuE5J42Aq1eeYkkw0jCF9cVSq1ZQ7oLZzyk/qPI+LXcwgh02eaEwgZaimDb6GTXvNGLiG/UPVMXlVYdLTGBWr4BaIgk+pFwzx+4Zmwj85hHBSNObw6SJBETnK2K8nuD65IzfIevB1j+Mv28l5oBD714/o2ctSVcBYmxwFp0CzjG16Zg="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_031","notbefore":1652558400000,"notafter":1715716800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsdkkXqwhvUOcRao3EMIcLnDwZNiB\n87ofJwLuwqzIlQhOOZ7ndf8f/flfzxzogN7OgekiNNMpPGjOy58MZQ7Kpw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUWplIUjX5w9eTfcPRQLG1AUcIeI0wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDUxNDIyMDAwMFoXDTI0MDUxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLHZJF6sIb1DnEWqNxDCHC5w8GTYgfO6HycC7sKsyJUITjme53X/H/35X88c6IDezoHpIjTTKTxozsufDGUOyqejgeAwgd0wHQYDVR0OBBYEFJ27qMfQU5fnLnX4wi76bSxJ6QboMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAlzY0s3UVOuyqTJGhyBVb3cfkrD4Hyqy0QSrB2shuv5JjGudzjSuGqurDp09Ozyg97+PuNm9F6JqxiZbz+IhmzZX2yyYwBEOKv8KnN57DEIY65qOLn1o6yJEJpNWVhCjqW5MnhND7CGxcvTGF3FHeEB5OfxnSZaC5aDkNauMoI8pUddONpYwrtHiaIsxsYce/k7w3RctO+8ZcYJ/BE1Urc/rpmcV1FWpBC6FzFG1rbu1vXMkfPmKLXFCPZv9Pzu5u9/et2h8TFWS7DyMnWiSBcuJiF635CccYfzlQLeBBeGKFR00IqTOiSVQZPccB6PC7/g6Vlm9ZSrYQwBwraQIXIYRwMpIkOifn4bT3xNLlGp6b0k9xj12HKYR4MSg9GZHj8ctFCqHiajdjG6s5azH7wOAEyvzA047/RSjNyoX5hcLZE+6SIfDjZPDY8ZVE2IF1LBj1TW1mHWOeXnYD2ss3nC6nUXYByEekN+6pn62zlzwv+BnNPCZa+MqUJMvfRa7IC2qCF6VIB4KHhWH8Ev/3JiimdmmnqS9xgb7Go+r8h3iXbmR/wjucS5tuDJSkkEJDG+5VcEzKdxrIrmbTLIlDf84gpcaH2EYFn2a5VsYyybGndNl0Q7qICVJGax3CPZe1gQaVNqhtEDLbfh0iXttV5F+UdxrO2rQ/AH+fOrV0Q0Q="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_032","notbefore":1639519200000,"notafter":1702591200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqqevv+I14Er0ap62pyJsNnWkipxM\nuuogVRR94OSi2ZgIe6ejB5/8Xnw7URRJkYfEaixM6nz6Y6h9xHT4rQOXcg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUAsAQyVk0S89PuVooonmdBhY5tSMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKqnr7/iNeBK9GqetqcibDZ1pIqcTLrqIFUUfeDkotmYCHunowef/F58O1EUSZGHxGosTOp8+mOofcR0+K0Dl3KjgeAwgd0wHQYDVR0OBBYEFNsZf6xdKlAdeMErziNj3zg4kqzNMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAmHRGMyQKn86+JFT66yII52aBFp5199r13R+pMhCpTPdibTDItLAdehLwyZBCW88PpdCu5fUzVZOSbBQJt3ocTQY07AO4E/4bdW/A9vXYCvL2eKgRuu9pgyDeWFFDh5u9us7SMW1WSGC8TBGoQTizjeP6gQ/iznZG19TG9+G5FtoCobzGm/kMGtyX9s988LijLRAc2UBa4mk1E1MLkXGOnbzVHoIhxeFVWgXwBzCwCoO5ta2jF8e2AQggj+6uJCHnoeHwOS9JTxBanFag9LIilMZnFrZ1dyEYQtBzZUf3gfzNziNdYwv8oGbye3qFCS3YAwO/QCBGLAuzMiN6iJTL7+ivw06lpkwbCnREMRcNuBd8nSzzh/AJODVK0Zbm7elKitAfOl9xJ552kSCIpw3DRljsAvidhjP8ylgTKsfVhwb2bK9HEHSgo/MRc3ImWlYun1IipPwAfhp4uQfqcP0T8FLFfSBCK9sLN3F1jby5dcURpfYSi5BQvIgbgiiHpnxjueOStAGoof7ebmfFaehRnc7KoGlCfkAFrbBgRrLMsRbYv2xl47TOh+xPAjdbiZylD3wlzKD0ZDGpAfq6P0ovYoTZGRzzalw4Fuo5RW+S7SlDQCsdkNEKgAmFpGVnLed3YKhmLKJFmljlZXdeZVjul8KshpP6//HW3ceY5GXvXv4="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_030","notbefore":1649966400000,"notafter":1713124800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzuWkpSJGbVsp+E2UNf389FyOI+S1\noE2U48ZdgllNRQo5KJ9TCmLL+U+eRVmId9es+oj3BS/rWfQR1fKhs6TznA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUAj1HEBf1NelaSBuczWgaH5Ch36UwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDQxNDIyMDAwMFoXDTI0MDQxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABM7lpKUiRm1bKfhNlDX9/PRcjiPktaBNlOPGXYJZTUUKOSifUwpiy/lPnkVZiHfXrPqI9wUv61n0EdXyobOk85yjgeAwgd0wHQYDVR0OBBYEFA6IIFDXpLz5r7sQnjnVOJ0MgUafMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAUeglZ3THwmpehcaD5UTX7ZRYeq7cpC0+jkir+N8Y09cA2S39ZF2DZBbE1UaVNDfLCICb4TkW9vHk+YEBjkykz4tSH0tkGUX2acNX3inHIDykff4mkRqwjYRInylc/MD9wrUwtIOslp0gW6CcJta6SMw9wcjaG4/tv5SddMvWUDs5UZyylY8Q4O0rpbxAcQ/wkF1R4S4XZ5KFD7nodJz3ig7b1dF08X47pOYjBmcNBePNq4nf3IS6x63LhWmDfpVc4+75NKwelBrLTErnVhd9EorlUWPHYvhfjalFanUxQmQdlJpcVhAh/BZEyGKb38ECMoHWzat66SDBVHGrM23uliXxDM6sC06ulab/6HWr5DjzUcgwx7UJU5lvGP1Et1b1MJNNd3D1Do7QoWwphwT81BUr5wB9CJSG+iOjRfv9pT85iYcNfpqtit//3H23Duw3K2EwSPGvxpQqSZlwxDCLhLfm49doBeVItCU1qDlncH3ky/D2XgV6ENCMZaQTcyWHeKOzbTMuwINsfc7VfgygaVySmGQjfyNukvx6ywI7Tg4H20gogMStLaj+yPPnsul4N+EOBHsSKCenfwlaTe141+nfKB9eUA1kSApybWY7E4pflmTaDmuHEBYb2sz8nq2lD3DkdiFYe60v45ZOsYwzACyM5L7j3Vu1/my6EQBb074="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_028","notbefore":1644876000000,"notafter":1707948000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDFL/JfC54w5DhacEkzUU1ni7QALe\ne86PYN+pLto0V+CXCRch9j54eDQagr/xGcyP3UBThBUnpqtEG/CtBHvExg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUPtrkrg2WkDHMSTavB6nBxxSKE2kwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIxNDIzMDAwMFoXDTI0MDIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyODBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAxS/yXwueMOQ4WnBJM1FNZ4u0AC3nvOj2DfqS7aNFfglwkXIfY+eHg0GoK/8RnMj91AU4QVJ6arRBvwrQR7xMajgeAwgd0wHQYDVR0OBBYEFEK7//liPw35XcS3wODcluwZM1CNMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAdxpY/iCo8yx9FLLRjfApnDHj6yQJ9yTEtGNRCVcPoUtFQyM3fv1Ep9oRUpTcHYD2Kt857fLENbV+C8lwAYjl+QpFViyGXSDLdyLHN6ua/qQXiKG29bT9nmRZIn3QWUrpagVcPySSpztw7d0/sfAFi05VmuQZ2UUTEhsKiR/+eoM2JOPM/m27xwsKo4g4ffSDEOqb4VCGwtKTBrKg64MHcXC0zWsaouFZNeZEOUOyXCsSjDc0zvvYj4llgC5bafbivgSRLGjO1M21vhQHr2FZDh1lokIbIo/PHGDunxVe6rbnIZMMrrhLzgBwUQP1Ihco1AG6NPFwKAxDEyt/dVPxIu5xDUjDujk2L+yf7c3tcMCXjktS8QG0y46FftIKY4ZTzPE67iWYDtRszqX6eNzkUhANjDs6nQJiSKbQLgQn/kalj/qZDZC9u/Xfpv5LDlhVZraDJ6vOXFMko9PlpOHWelN/UQL0yp4XIKfZNBZPq9lzZP6beujHyz6dMdDczXy9Xo+PZ3rNtci9UYCrpdhljifQaj5Q76cPXpJUCXFsM9JyQ4uXuGA0Q+gCzED87eOjEsKd+NFQQGpMqdEUdzZnc7veoyqOwUiwSGXaWDaWISPNNnKBQ4sAUtLIlQAYiQ/hxQtZu6DBgW2c4I3ecryp/PpJB1+m1Hvzf5TNJgHEeag="},{"issuer":"C = CH, 2.5.4.97 = VATCH-CHE-221.032.573, O = Bundesamt fuer Informatik und Telekommunikation (BIT), OU = Swiss Government PKI, CN = Swiss Government Regulated CA 02\nValidity","subject":"C = CH, ST = Bern, L = K\\C3\\B6niz, businessCategory = Government Entity, 2.5.4.97 = NTRCH-CHE-467.023.568, O = Bundesamt f\\C3\\BCr Gesundheit (BAG), OU = GE-0220-BAG, OU = Taskforce BAG Covid-19, CN = CC_CH01_TestedCertificate_13_10","notbefore":1634186369000,"notafter":1728880769000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwFh8HIBXfjcz7G4uPL7o\noBpVAwoZofGJgWNr8Nstxhe4CQuGGo7Cl6QrZyQDtZovLOpcR1S5c4VIUAhegJY2\nlBEtrIzdR/hcooabkOUyDULsPejaOcii4LtE/25rSKF/6sGyQiCLFb1u4JGlZK7C\nGmJcXE/NYnDQDvJv6K4dhpwGIoeNFhoG2X6fDHjZemO+/BYZZjRh2BuUf/QnSpVY\nl6bhmOuJP2EAHBiSt+2S6Xn7O+j0qF5EK5Tm6tttSOjnmz59isc35GlwloszjRn5\nriUR2t8TYt5UEMYJY2N8iEGIpu9HiJBQyMB1kjzwc7ClwYo4/jB3zWqwZGwhjj5w\ngwIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = CH, 2.5.4.97 = VATCH-CHE-221.032.573, O = Bundesamt fuer Informatik und Telekommunikation (BIT), OU = Swiss Government PKI, CN = Swiss Government Regulated CA 02\nValidity","subject":"C = CH, ST = Bern, L = K\\C3\\B6niz, businessCategory = Government Entity, 2.5.4.97 = NTRCH-CHE-467.023.568, O = Bundesamt f\\C3\\BCr Gesundheit (BAG), OU = GE-0220-BAG, OU = Taskforce BAG Covid-19, CN = CC_CH1200002_21_09","notbefore":1632388202000,"notafter":1727082602000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvJk7BZo+4PHBDZzfie8+\nBPTzwzcBmpTFqP6dP2X6MsXmKX8a1Rww2x7/O4bBkpea+UOWGQJ+ryUDwnK0u0AJ\nHEID7OAg/gHyK0571RIpcMsiP+rZJjg6j9s7EDIogf6cf641hjVyaWuhkvuw0Uye\nX5SRVzFQ+eAkAHXwK50mIkIfIJ4DFDvz2Hv/JDMaeSzz9aP9XuDJYu+JX6nGJ0WF\nmjtjQXmJ39HT4j4q4nsLZh6sHOtiqCVrOfzoOGk6HUxI7nDbqPO+4UwP2o1S82l9\nLgQSABvFwCtox+w1AGKM/bUeyfTrEIoMAIgDiKDL7k3ks7iyiPZauvtvhSS0MeFl\nOQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = CH, 2.5.4.97 = VATCH-CHE-221.032.573, O = Bundesamt fuer Informatik und Telekommunikation (BIT), OU = Swiss Government PKI, CN = Swiss Government Regulated CA 02\nValidity","subject":"C = CH, ST = Bern, L = K\\C3\\B6niz, businessCategory = Government Entity, 2.5.4.97 = NTRCH-CHE-467.023.568, O = Bundesamt f\\C3\\BCr Gesundheit (BAG), OU = GE-0220-BAG, OU = Taskforce BAG Covid-19, CN = CC_CH1200001_21_09","notbefore":1632388176000,"notafter":1727082576000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvCn2NP604m2TFWnyKbIy\nhup78wpXMM62pHod3InusDPPPFXWgVsN0NG1E65jy+W7LDY+Q719jVCC8pusghPL\nmDze1KWwGrGdRyUGmqwFWW5sI0uxKJCsEXMRcKqKpf5NXxJlSo1FIv/ZKKFAnUt1\nIFUzLo5HP7rqCiKlU58uk9N4puECCW3QEUIgm4mwflcR1crqY1Pdd1UxIceRTGcv\nT0q4wN9w1fwko+grpV0N7EK2drSVVdvPYlo2fHCU+hDwTJ6AThTktzRiybznhq4F\nqf3jEyzVFQA5W1VvAoWhMZgAxHRCZXFXex/MtGvOD4Q+ovP3m1EYX0+C/qsaSsHb\n2QIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = CH, 2.5.4.97 = VATCH-CHE-221.032.573, O = Bundesamt fuer Informatik und Telekommunikation (BIT), OU = Swiss Government PKI, CN = Swiss Government Regulated CA 02\nValidity","subject":"C = CH, ST = Bern, L = K\\C3\\B6niz, businessCategory = Government Entity, 2.5.4.97 = NTRCH-CHE-467.023.568, O = Bundesamt f\\C3\\BCr Gesundheit (BAG), OU = GE-0220-BAG, OU = Taskforce BAG Covid-19, CN = CC_CH1200003_21_09","notbefore":1632388240000,"notafter":1727082640000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApU+JIe3bHtVFBRbLLcZ/\nMHfaOB8dKwsWj7nAh8wr3Iv2+te2Kmq3MLDPZFR0q/hAAEg9gY/K1XVh74S3Zf8U\niSm9UJgALVIsxCi96eVpa1GGUtpbQvEg7Uz43PM/vUEkAs8xA/45BtFX1WE2nQ1z\n2PFcI3pOaJl4UHOVTA1LxEwOrAPBhlApcYwp75Gc9+KahxpJzaDR618ooV9MICYY\ng8swv4d99u11mjgwMAZcpiNf9iIa1H4phann+5RuNLbRHebVJgBot95AJ4MrOEEq\nIXg7LpDD9pBofVbV6IB7tuFcIjBIPJhLaUI6nLyg8oxh5NA8fKE9Nc2zbl8po84S\nrQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = CH, 2.5.4.97 = VATCH-CHE-221.032.573, O = Bundesamt fuer Informatik und Telekommunikation (BIT), OU = Swiss Government PKI, CN = Swiss Government Regulated CA 02\nValidity","subject":"C = CH, ST = Bern, L = K\\C3\\B6niz, businessCategory = Government Entity, 2.5.4.97 = NTRCH-CHE-467.023.568, O = Bundesamt f\\C3\\BCr Gesundheit (BAG), OU = GE-0220-BAG, OU = Taskforce BAG Covid-19, CN = CC_CH01_RecoveredCertificate_13_10","notbefore":1634186233000,"notafter":1728880633000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvG8EuhEV3qydjzXibNlK\neBaRiswEivR7Ths756AhlCuY1xd1MC2qtTpledWZpdYaEr2QunzcE4OU7Tzj0Q4I\ny6Ru12yenffGAZVxt31TpwjMioh/hICU9kh5KospkHf4wH6S2+JoK9P3stljHbJd\ndJith9LzyzDQ+ezTVksE4KBD9iKLlvx6kOQE1LSW1lvnm89JqoY+Hlpdy0Gux8uj\nQ+HsPG5CQc4B7DuoYEjmmWSxGIIR3tuym4UjqUpOYYdq2Ee3ahGt4qPV8mhERHwd\nT0XeMgTbKaakfBjdQeH+Imd2IRmVaZUkgxTSXpXSCP/tus8k77BNknCtf54N5o2H\nPwIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = MK, ST = North Macedonia, L = Skopje, O = Ministry of Health, CN = zdravstvo.gov.mk, emailAddress = contact@zdravstvo.gov.mk\nValidity","subject":"C = MK, ST = North Macedonia, L = Skopje, O = \"Ministry of Health, North Macedonia\", OU = \"E-Health, North Macedonia\", CN = zdravstvo.gov.mk, emailAddress = contact@zdravstvo.gov.mk","notbefore":1635402269000,"notafter":1666938269000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA65H+Vak/9kWmQXGYEZEu\nA2hSykjqYu72g//uaBs/Ac0JYV9Zhqwjb6iPf1tATe87vzg7sD5gGOqtabbOYMcV\nW50e3X5Ix4XxKMMoAvtkyDI/TbMK4HqiEY5FVf/JhPZEp4+nSVjwhozn0p7pKSk+\nWKYEjIG/zpceLyikArxxSt5SwYdVMmau+6kdHT4Q0m3btE5ORl+B0exu+KS3xb6W\nRsiU5E8kXyQFBS3zK6DxFqDDVyWhWVt4NfoJt76ZE3zuXPutyPs3AVscJDWB5mkn\n/yM8Fg20WAsZ0O9p3uyyK+MSwFdRmUzK7Gr6dnQhce4oh0HTAFsodFwnDsPCfJxc\nskoIYZW2xWX1W03jpngQWXgA1eJ44/4Ve0u09w5DpwNrgT3SoznZhZ3DPfH38NV3\nfxhm8KuVmNtmKms2ctExY8RftHXMFAQC4jDgutnaJz1zyC95QVkp06drreGLzX4X\nvPYZZdZhh4UYqT/IYXaX2yt09Tu+ueVm1MRlWeuEzlYYApbMceBseE7MuWdCVPwc\nx/QMjp7b4BSnRH+w4XIqs/wS8nXkMyBEdCMbCH3PFKNQOmbmA3Lq6X2eFWhgRud3\nFGyPacS5ADeV/s/aei+UJY/i9tY/NeXCYLtox4PXucUU4gbU9wV7rvLTNvwWIr5g\nga/gu18hrHe6Dag7p9wsU3ECAwEAAQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = GB, O = NHS Digital, CN = England DCC CSCA\nValidity","subject":"C = GB, O = NHS Digital, ST = Jersey, CN = DSC_DCC_GB_JE_02","notbefore":1632916252000,"notafter":1695990052000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEORjyQk/KOoCEJWGfLLyqyEcOqRRr\neyVdSH+ELi4GqqS17W4aYeOl2cvm/5unZwgCQUzB09uxYESXGmBJ3xgsEg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC8TCCApagAwIBAgIEYVCF1jAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM1MDUyWhcNMjMwOTI5MTQyMDUyWjBPMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxDzANBgNVBAgTBkplcnNleTEZMBcGA1UEAwwQRFNDX0RDQ19HQl9KRV8wMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDkY8kJPyjqAhCVhnyy8qshHDqkUa3slXUh/hC4uBqqkte1uGmHjpdnL5v+bp2cIAkFMwdPbsWBElxpgSd8YLBKjggFvMIIBazAOBgNVHQ8BAf8EBAMCB4AweAYDVR0SBHEwb4EPcGtpQG5oc3gubmhzLnVrgkpodHRwczovL3d3dy5uaHN4Lm5ocy51ay9rZXktdG9vbHMtYW5kLWluZm8vcHVibGljLWtleS1pbmZyYXN0cnVjdHVyZXMvY3NjYaQQMA4xDDAKBgNVBAcMA0dCUjByBgNVHR8EazBpMGegZaBjhidodHRwOi8vcGtpLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmyGOGh0dHA6Ly9jb3ZpZC1zdGF0dXMuc2VydmljZS5uaHN4Lm5ocy51ay9DUkwvRU5HX0NTQ0EuY3JsMCsGA1UdEAQkMCKADzIwMjEwOTI5MTM1MDUyWoEPMjAyMjAzMzEwMjIwNTJaMB8GA1UdIwQYMBaAFNouzsP3Ovv4vhBzqMTxiL0r1PHKMB0GA1UdDgQWBBRxHKzMVi9gZ9kvS9PBsjKIxWf96DAKBggqhkjOPQQDBANJADBGAiEA842nlrMUsAYRJhQv4DeltKOnR1kyBBcIiqHBRq+EIiYCIQCeUc6GkrFiI6jhQzgD5/c/A66+AiRSZ1Z3SMNM073D0w=="},{"issuer":"C = GB, O = NHS Digital, CN = England DCC CSCA\nValidity","subject":"C = GB, O = NHS Digital, ST = Guernsey, CN = DSC_DCC_GB_GG_02","notbefore":1632916077000,"notafter":1695989877000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsrcO+nNM8OkcO7IhbRh4D4D++Tgr\n3PyGt9q6vXkSwIY6vctXRXke4WdrRtWbYzB8xGREifNxSgd6Fdik+bg44g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC8jCCApigAwIBAgIEYVCF0zAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0NzU3WhcNMjMwOTI5MTQxNzU3WjBRMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxETAPBgNVBAgTCEd1ZXJuc2V5MRkwFwYDVQQDDBBEU0NfRENDX0dCX0dHXzAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsrcO+nNM8OkcO7IhbRh4D4D++Tgr3PyGt9q6vXkSwIY6vctXRXke4WdrRtWbYzB8xGREifNxSgd6Fdik+bg44qOCAW8wggFrMA4GA1UdDwEB/wQEAwIHgDB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxMzQ3NTdagQ8yMDIyMDMzMTAyMTc1N1owHwYDVR0jBBgwFoAU2i7Ow/c6+/i+EHOoxPGIvSvU8cowHQYDVR0OBBYEFFtQNDLuwfv9Xbg7o8AKPzQnkx4cMAoGCCqGSM49BAMEA0gAMEUCIQDfWA3YY6s4hivruPkv+ro6/0mi4Vm7gY1EED8u39k+LAIgOKfybRclbzyRnz/ucnH18B2r9ZEi6z/7LnmqNZobPPE="},{"issuer":"C = GB, O = NHS Digital, CN = England DCC CSCA\nValidity","subject":"C = GB, O = NHS Digital, ST = Gibraltar, CN = DSC_DCC_GB_GI_02","notbefore":1632916145000,"notafter":1695989945000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUQjAzEd62FL4s5OTPEOo7v0k//MU\nI3L99/10QFBMHH42q30Q8IrtpqgPGjgesWZFWWsoqGdXa1vHEsFGNtZNvw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC8zCCApmgAwIBAgIEYVCF1DAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0OTA1WhcNMjMwOTI5MTQxOTA1WjBSMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxEjAQBgNVBAgTCUdpYnJhbHRhcjEZMBcGA1UEAwwQRFNDX0RDQ19HQl9HSV8wMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABFEIwMxHethS+LOTkzxDqO79JP/zFCNy/ff9dEBQTBx+Nqt9EPCK7aaoDxo4HrFmRVlrKKhnV2tbxxLBRjbWTb+jggFvMIIBazAOBgNVHQ8BAf8EBAMCB4AweAYDVR0SBHEwb4EPcGtpQG5oc3gubmhzLnVrgkpodHRwczovL3d3dy5uaHN4Lm5ocy51ay9rZXktdG9vbHMtYW5kLWluZm8vcHVibGljLWtleS1pbmZyYXN0cnVjdHVyZXMvY3NjYaQQMA4xDDAKBgNVBAcMA0dCUjByBgNVHR8EazBpMGegZaBjhidodHRwOi8vcGtpLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmyGOGh0dHA6Ly9jb3ZpZC1zdGF0dXMuc2VydmljZS5uaHN4Lm5ocy51ay9DUkwvRU5HX0NTQ0EuY3JsMCsGA1UdEAQkMCKADzIwMjEwOTI5MTM0OTA1WoEPMjAyMjAzMzEwMjE5MDVaMB8GA1UdIwQYMBaAFNouzsP3Ovv4vhBzqMTxiL0r1PHKMB0GA1UdDgQWBBQNC2PbP2qgSbcICJOTE8GDDjEkATAKBggqhkjOPQQDBANIADBFAiEAuso4sCzmx6VIh049oGERdy8FXaUqfv34zrWWkI2OUfoCIHQslj1mJT9EloAMzBYnsFd1kCfKbSBRnM2jkn01a9T8"},{"issuer":"C = GB, O = NHS Digital, CN = England DCC CSCA\nValidity","subject":"C = GB, O = NHS Digital, ST = Isle Of Man, CN = DSC_DCC_GB_IM_02","notbefore":1632916198000,"notafter":1695989998000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKrPl/bqJRA4on2AtNgXUOhCwjkr8\nkUkeol8ZMH8d6+ILPJCgc3y4d2AnGcNMIxwk/JWVjD2V0lkxSB2Hh7shtA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC9DCCApugAwIBAgIEYVCF1TAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0OTU4WhcNMjMwOTI5MTQxOTU4WjBUMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxFDASBgNVBAgTC0lzbGUgT2YgTWFuMRkwFwYDVQQDDBBEU0NfRENDX0dCX0lNXzAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKrPl/bqJRA4on2AtNgXUOhCwjkr8kUkeol8ZMH8d6+ILPJCgc3y4d2AnGcNMIxwk/JWVjD2V0lkxSB2Hh7shtKOCAW8wggFrMA4GA1UdDwEB/wQEAwIHgDB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxMzQ5NThagQ8yMDIyMDMzMTAyMTk1OFowHwYDVR0jBBgwFoAU2i7Ow/c6+/i+EHOoxPGIvSvU8cowHQYDVR0OBBYEFFyh/c31dQVmHKwncfKzVmIgj636MAoGCCqGSM49BAMEA0cAMEQCIFpZ4V77QqTvr7ExCp5Agt4ssTmrJTjStHNmIZvU40zmAiAU5Oz3FfvC+zrKARL9h4aDJ8osIvuekXfyOjP2wdxirg=="},{"issuer":"C = GB, O = NHS Digital, CN = England DCC CSCA\nValidity","subject":"C = GB, O = NHS Digital, ST = England & Wales, CN = DSC_DCC_GB_ENG_02","notbefore":1632916032000,"notafter":1695989832000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE17Mn/OPO2RQfYEZM62rPQcvhfRd6\nZTWo1MZnPvSBMCzjuY0ZdmtsXwDHH7wDOVcTs1NSylkb+/EmC1t/7XV0Ow==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC+jCCAqCgAwIBAgIEYVCF0jAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0NzEyWhcNMjMwOTI5MTQxNzEyWjBZMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGDAWBgNVBAgMD0VuZ2xhbmQgJiBXYWxlczEaMBgGA1UEAwwRRFNDX0RDQ19HQl9FTkdfMDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATXsyf8487ZFB9gRkzras9By+F9F3plNajUxmc+9IEwLOO5jRl2a2xfAMcfvAM5VxOzU1LKWRv78SYLW3/tdXQ7o4IBbzCCAWswDgYDVR0PAQH/BAQDAgeAMHgGA1UdEgRxMG+BD3BraUBuaHN4Lm5ocy51a4JKaHR0cHM6Ly93d3cubmhzeC5uaHMudWsva2V5LXRvb2xzLWFuZC1pbmZvL3B1YmxpYy1rZXktaW5mcmFzdHJ1Y3R1cmVzL2NzY2GkEDAOMQwwCgYDVQQHDANHQlIwcgYDVR0fBGswaTBnoGWgY4YnaHR0cDovL3BraS5uaHN4Lm5ocy51ay9DUkwvRU5HX0NTQ0EuY3JshjhodHRwOi8vY292aWQtc3RhdHVzLnNlcnZpY2UubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybDArBgNVHRAEJDAigA8yMDIxMDkyOTEzNDcxMlqBDzIwMjIwMzMxMDIxNzEyWjAfBgNVHSMEGDAWgBTaLs7D9zr7+L4Qc6jE8Yi9K9TxyjAdBgNVHQ4EFgQUcOpem+yb6Ti0xloFxJUhNtmBWbQwCgYIKoZIzj0EAwQDSAAwRQIhAKzGgopNYhDdfMGDBD7uzxXkwYErNfLqrMKCcv8L/JklAiBYV6GgmwXY0coHRshuWHGVEuGfQtYuFUnn3cb6snTgqg=="},{"issuer":"C = GB, O = NHS Scotland, ST = Scotland, CN = Scotland DCC CSCA\nValidity","subject":"C = GB, O = NHS Scotland, ST = Scotland, CN = DSC_PRD_GB_NSS_01","notbefore":1632927905000,"notafter":1696001705000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEr9bj163kKNBLl5bxWhZBlyJv3pHa\n2QMb24OAdXZwJN6xx2CR03VG4DhQmd9wzVuPmw164+T7/sDmoRNOh4QbQQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDKTCCAs6gAwIBAgIEYVGffzAKBggqhkjOPQQDBDBTMQswCQYDVQQGEwJHQjEVMBMGA1UEChMMTkhTIFNjb3RsYW5kMREwDwYDVQQIEwhTY290bGFuZDEaMBgGA1UEAxMRU2NvdGxhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTcwNTA1WhcNMjMwOTI5MTczNTA1WjBTMQswCQYDVQQGEwJHQjEVMBMGA1UEChMMTkhTIFNjb3RsYW5kMREwDwYDVQQIEwhTY290bGFuZDEaMBgGA1UEAwwRRFNDX1BSRF9HQl9OU1NfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASv1uPXreQo0EuXlvFaFkGXIm/ekdrZAxvbg4B1dnAk3rHHYJHTdUbgOFCZ33DNW4+bDXrj5Pv+wOahE06HhBtBo4IBjjCCAYowDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML1NDT19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9TQ09fQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxNzA1MDVagQ8yMDIyMDMzMTA1MzUwNVowHwYDVR0jBBgwFoAUpkyHivaTZHND98x+LTp83mX+1ecwHQYDVR0OBBYEFJdsDfNoq4LpdpKboD1l1QO6vomQMAoGCCqGSM49BAMEA0kAMEYCIQCk2A3NDa/GEeAmLk0H0ryrSXR8XE1ramqYSX9/DCJ9WwIhANDgNfuShBJxUxydkgQtQ1Z348dfpLye7Dsio45DQaT5"},{"issuer":"C = AM, L = Yerevan, O = Armed, OU = DGCOperations, CN = CSCA_DGC_AM_01\nValidity","subject":"C = AM, ST = Some-State, L = Yerevan, O = Armed, CN = DSC_DGC_AM_O1","notbefore":1002430469000,"notafter":1002430469000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGsoQ+d21h6C2haw4Ty4q/38Ux+t5\n1x9qe6EhVH30tsO5cxpvULTb+FFQbkcHcu0V9WbqIyIMaANSYH4ntN1H4A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICRTCCAeqgAwIBAgIUfvIoqYr4oy/CWPFHPFoVgTgAPLUwCgYIKoZIzj0EAwIwYDELMAkGA1UEBhMCQU0xEDAOBgNVBAcMB1llcmV2YW4xDjAMBgNVBAoMBUFybWVkMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMRcwFQYDVQQDDA5DU0NBX0RHQ19BTV8wMTAeFw0yMTEwMDcwNjU0MjlaFw0yMzEwMDcwNjU0MjlaMFwxCzAJBgNVBAYTAkFNMRMwEQYDVQQIDApTb21lLVN0YXRlMRAwDgYDVQQHDAdZZXJldmFuMQ4wDAYDVQQKDAVBcm1lZDEWMBQGA1UEAwwNRFNDX0RHQ19BTV9PMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBrKEPndtYegtoWsOE8uKv9/FMfredcfanuhIVR99LbDuXMab1C02/hRUG5HB3LtFfVm6iMiDGgDUmB+J7TdR+CjgYUwgYIwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBRqxeKvv2wDiKAhCFTKOAz+UVyatDAfBgNVHSMEGDAWgBTTJV9hj0P3rLMweZAdJnUKadCwaDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCW6k0AfZPRXJBATVg9tHajdGcerq93YUnw3BJt++DM1QIhAMhUzyF6wEDAq+wJbTeI2mTc0+qVWbNTzchg870FSU29"},{"issuer":"C = GB, ST = NI, L = Belfast, O = Department of Health, OU = DHCNI, CN = CSCA_DGC_GB_NI_01\nValidity","subject":"C = GB, ST = NI, L = Belfast, O = Department of Health, OU = DHCNI, CN = DSC_DGC_GB_NI_01","notbefore":1626700938000,"notafter":1689772938000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZ+fdcTa4UWA/6PT5V4a0+0j1/s++\n4JQEsW/HvGnxxP7mGfuQDfn/FRdUMGQtTkoCGaky1gpYVZXkkoYu9ZjlUw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICWjCCAf+gAwIBAgIURUEDe5VRVC+xFuvzbQDxI+NcG3EwCgYIKoZIzj0EAwIwdzELMAkGA1UEBhMCR0IxCzAJBgNVBAgMAk5JMRAwDgYDVQQHDAdCZWxmYXN0MR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEOMAwGA1UECwwFREhDTkkxGjAYBgNVBAMMEUNTQ0FfREdDX0dCX05JXzAxMB4XDTIxMDcxOTE1MjIxOFoXDTIzMDcxOTE1MjIxOFowdjELMAkGA1UEBhMCR0IxCzAJBgNVBAgMAk5JMRAwDgYDVQQHDAdCZWxmYXN0MR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEOMAwGA1UECwwFREhDTkkxGTAXBgNVBAMMEERTQ19ER0NfR0JfTklfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARn591xNrhRYD/o9PlXhrT7SPX+z77glASxb8e8afHE/uYZ+5AN+f8VF1QwZC1OSgIZqTLWClhVleSShi71mOVTo2owaDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFK0wrYr+jzkfX//YOKxzXH7hoBxZMB8GA1UdIwQYMBaAFM8DHzf3z6ezJWzZlg9ICbLTTRxnMBYGA1UdJQQPMA0GCysGAQQBjjePZQECMAoGCCqGSM49BAMCA0kAMEYCIQDfC7E6QPDcgPAwNkK/uRJDMnUWOfslHC6CyeCKPcm3SwIhAN4tcL2/7T6HYbfNv+hfFz2mAGWLCa8wmqJcs9YsBNG7"},{"issuer":"C = AL, O = NAIS, CN = NAIS Class 3 Certification Authority\nValidity","subject":"C = AL, O = Ministria e Shendetesise dhe Mbrojtjes Sociale, OU = Production, CN = Ministria e Shendetesise dhe Mbrojtjes Sociale","notbefore":1634724014000,"notafter":1666260014000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkyi6sf8k8/kk2KjTBNiIVFpnIeZc\nj4oUXwV8kk5D6BySdIUx9jSD5BuSiUyXKmIghKHPvpio9M7nYklZCdur0w==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEUDCCAzigAwIBAgIMQwFSlIJziU/M83ZyMA0GCSqGSIb3DQEBCwUAMEsxCzAJBgNVBAYTAkFMMQ0wCwYDVQQKEwROQUlTMS0wKwYDVQQDEyROQUlTIENsYXNzIDMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjExMDIwMTIwMDE0WhcNMjIxMDIwMTIwMDE0WjCBlDELMAkGA1UEBhMCQUwxNzA1BgNVBAoMLk1pbmlzdHJpYSBlIFNoZW5kZXRlc2lzZSBkaGUgTWJyb2p0amVzIFNvY2lhbGUxEzARBgNVBAsMClByb2R1Y3Rpb24xNzA1BgNVBAMMLk1pbmlzdHJpYSBlIFNoZW5kZXRlc2lzZSBkaGUgTWJyb2p0amVzIFNvY2lhbGUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASTKLqx/yTz+STYqNME2IhUWmch5lyPihRfBXySTkPoHJJ0hTH2NIPkG5KJTJcqYiCEoc++mKj0zudiSVkJ26vTo4IBszCCAa8wZgYIKwYBBQUHAQEEWjBYMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5ha3NoaS5nb3YuYWwwMAYIKwYBBQUHMAKGJGh0dHA6Ly9jZXJ0cy5ha3NoaS5nb3YuYWwvY2xhc3MzLmNydDAOBgNVHQ8BAf8EBAMCBsAwHwYDVR0jBBgwFoAUhyao+9srUZs50JjW9MYzVkdc2AUwHQYDVR0OBBYEFGPWnU1pbP9aLGlfxoOY//lobEDxMEsGA1UdIAREMEIwQAYMKwYBBAGCsWwKAQEDMDAwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuYWtzaGkuZ292LmFsL3JlcG9zaXRvcnkwgacGA1UdHwSBnzCBnDCBmaCBlqCBk4YiaHR0cDovL2NybC5ha3NoaS5nb3YuYWwvY2xhc3MzLmNybIZtbGRhcDovL2xkYXAuYWtzaGkuZ292LmFsL0NOPU5BSVMgQ2xhc3MgMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSxPPU5BSVMsQz1BTD9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0O2JpbmFyeTANBgkqhkiG9w0BAQsFAAOCAQEApvfjN0ZeYCl6OH8HmJSG4UcL8KrVB1uqa/b0OPBihreOzVN0MyCRCKqUY+JJBc2S1k8OssCZuconsPLdTW2UkDxP5oFrgnzBN4Tor+3EMq2d/TTQnhp+872m2B4Gck0bRMBn0N19MbIrdii5joNir9pcHJgU5I/fTTehL9wtZGoL1o5cUUu9S+hYMIP0uNHP6NjxQhwZ+lpleNCUsYT4o4icvnbW3EaB84KBImCfezIu3Q+MdgwWmGpZOXUVoiX9UiyWrlEnzNzictXgOSud5xJ8E9ZUezO8u1UMRKY82Xi15KM6FML2qJ6teTC8iMjXaDxhVZSDAvtXclLKqIvAzg=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_007","notbefore":984175200000,"notafter":984175200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXJGIIZHZOHRSV3CdXUpGpZ9660BB\n+15fkJgO8Rk8H+TlqeSYvBIfeRK+hVpc9GzUcFiKiPU0jbXZ0rorqNyxfg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUetGukHDBgpqpT82eXBBZwkWqlCEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMwOTIzMDAwMFoXDTI0MDMwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXJGIIZHZOHRSV3CdXUpGpZ9660BB+15fkJgO8Rk8H+TlqeSYvBIfeRK+hVpc9GzUcFiKiPU0jbXZ0rorqNyxfqOB4DCB3TAdBgNVHQ4EFgQU9yU3/1u14+b8LpUG5bc2f7rCXJswHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQAPO0+DbQ5zIkFbECIN+SGoH7m/1j6HgDFAze4go1Idf5U3n8ua3wFwf9Tj2knGigSHSkBgFK7UKIlkFz4aotljp4/ZU4iKGuTn0oo6XT7eEi/KQlNHZHkxtSO9TQCRHw0KigXG5pA8cqSWcC9coYr57+4t82F67WNHoi2x6seN+sgIZxZiLuBNMjoibwnT5leJKLAwClYOtCpoFSzAZf7cTeZVmCymHaoeHx56ftOdXBUoMjBTMFRQEP598lauU2W1FZOwucbOSIsk3lpAhhG+akzEJJdBqo7nS7XrFRlxinvV7shia90RkGBdyNIo4zU8glgiDSIvZQQbvOuFcMZPxxANdaD5UMLEXb0cW1ypGW+r9s/bUwRghQT4vDNHoy7WqBSPgybuJT+WbbGnzeKtQeSnJU0sBCG7KT4mZbsWNGY4m02JC4MZz/DD5aRx9izz5bw1Tm1U61yE+VivWRYzacWWgTOrdUcZx7zArV7x38Biihw/dyUaps8HxvoP6MWBJOvAv5aKIbyvBOxcjh+3oZjMvKk6L+EUlSli76c0S7gCEjN3SMLgPbgR272xYoomNZYapYKwKq9fu+vL5PgoWWEhfQDO7BYGfJryV+N1I4sBoOqh1a5wsp6FEij+vi1grNiNpTKXqpaN5UKOLK3pb+LFOPETXm9kqepI+PyVdA=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_006","notbefore":1007935200000,"notafter":1007935200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ua6q+h0NvU1yqdisTbi7nRqu9xp\nX4qBSU1boIc6PWIbY4EKPTSQlxT7hhJwYBR37PZZX8JdOBh1ZqUjG9j87w==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUMhJIBrZi2FAUhLPwN7JzstvhMsUwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIwOTIzMDAwMFoXDTIzMTIwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ua6q+h0NvU1yqdisTbi7nRqu9xpX4qBSU1boIc6PWIbY4EKPTSQlxT7hhJwYBR37PZZX8JdOBh1ZqUjG9j876OB4DCB3TAdBgNVHQ4EFgQU+eeSlsYWARhP/uY/e3iyCsunMAcwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCac75HtV6gRBG2AQXz0YcprJTZAZW+VZOHh+JBmIXkBEUzjmRtsTe0/SqOhs7M4ln5WpqsT6ET/TZYoGTUy6oocjqy38MtZMV4W9sGSSdR/ltfVLkgyofPrdNg/XzNGEF+jZ9xWNCQqBHaxBzXaPhUa/p9B1Amof3ksyl2ChdcOu73QyOQ9qcFxBr0U1DJ2K6ZDIbiMdu/f7xWN355HJNfGFaKioe5wkrRJOxiu0sfn1yH3hCS4ge5iJtLvux4GVF5m02bRYtIe32+FrjQAg3pH2ayyDJ2V38P6cIi9lIdoGdoQuA+As8m+Nsl4pfXmeKqaSF0grlPVlhTh9BW6+N6ktybw1srgfR+TLKvTrQ5nvbEWtDmVddhNGauwSB1YHA2YK+nzlDS9o8091vKuFFSCCUeNWyZPHzw569izxAy+Pu3MrXiuiPISfneQIikl3EoVowS1vyWpnYWkFfrUpgT231Y4IIu5w7tHeD/ieEU0tq8UQUamMshiPFpXJqZMzeaxBqaAoTDRYmOGPoyGiKN99Bz83BFchpgaZgtMQFH+X0XvEsLr9KYDD+svyfuZZLqmIPCxq3ejF2O1YGoe9HfGh+LWqlw6n4usqBhix8QUznUSkkQwM4NrCDbQUOSyOtMXGwbLFiGmrlg41RMiJ+txZkCtSmsc2iHq6YHnKNU0w=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSCO_FR_0004","notbefore":1641938400000,"notafter":1705010400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV9ZwrSsN3vr0WUaDkS4UzyPLz/2y\n4hm7yEnCOaAidrjZlVlIjQZkhDeNLYOLKcaGnEBQxBQNpCgLTJWTRnopPw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUaGRg9ynElihMD05ckXc84WVL8f4wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDExMTIzMDAwMFoXDTI0MDExMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARX1nCtKw3e+vRZRoORLhTPI8vP/bLiGbvIScI5oCJ2uNmVWUiNBmSEN40tg4spxoacQFDEFA2kKAtMlZNGeik/o4HgMIHdMB0GA1UdDgQWBBR1DNHWK9PsTyKp+5wxalsj5t9ECzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIxN06gTwfxHWcwBQw+tPhWqNv/caBLzM8Jh+DyOQWyanukoaU+4hsQm6Ouws79tCdGVPnDUgwxG8xM3YGOh5CxbhbsSfzihNmwUBS2F7LgBrK9PXaMOh6EX5+CMeMOMWPlc9c/OiHdqqr7yWPv9NEGHIUrsoYk6+PXNmUo1Q8smzWpLzyNdtdsCVyager9w/5hA0ZMBj7idZFAqDVWBVtUCtHH6QqW+NJ3Ukp+vqo+7RupVrXda3hkT6f/icnOxygH+UXRUwzqKeni7hLDDU1xfjd8kg1sa7zVRp4j8defmvrq2sZlFA3kyLKyDS5bk/97gejBI2W9efho5pM4Ky5jDuT/zoAwbepPuvB6cMo5evTmMivQoqO9k9NAqwe0Ou7YGhojAHIbnK/SoGWlKPAAwNzD+tSIVg7EBV3HWCMWsUu0CN7yDOLjatnbupT3crwEVa9M3E6Aw3c17KK3YqLyXJWOSAiR+8ZTE290atJT/4e+njj1+foFJdiAcQ+yG8qiLjGDYXxxbTU6B8XH2KXlikmeEZW1sNsafpg67jG8QPPfauZHtcSnbIJwk3Vni41IQcoytkc+b5ixpHkmXkbFgDR2aF5GwH5uF6Q1DBJdTiT3UpDsj1ZqGRrOKdj58OALAhRi/fibUXVJkJcwTPyXF95dT3N2LxIuEsvb2ilwA"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_008","notbefore":984175200000,"notafter":984175200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFe6+khPXHMXLN/gLpWJi9cmNmalZ\nJ/H9Ko5t6+W1F6dPaUYnTpV/RyCBxWd9vpgjSKHLD66FjsxMjp/3Q8U+kA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUGIV11m6B5igxihjlFKRkwVNsOAIwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMwOTIzMDAwMFoXDTI0MDMwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFe6+khPXHMXLN/gLpWJi9cmNmalZJ/H9Ko5t6+W1F6dPaUYnTpV/RyCBxWd9vpgjSKHLD66FjsxMjp/3Q8U+kKOB4DCB3TAdBgNVHQ4EFgQUGwpsSQJaSChkXvDR4rLovd0XxwwwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCGunJPiKmLdtXndGJEMy7bUnhBJogJBDdY4QoYUL9cVGwBVeVzRyoKh1LHAYC1OLzPb8kyP51GVZvZtbJlMhh40x2bDoyA+pidQUQBPs9pSun8//evz2n2TWsTDZ6vSeNgdEtLZsVFSnVKTLgjpm4IJDS2T/sr3OlGZMMryqeVx8GDpxVysZY0rRZ953mLHHTh4NVi2TOr1gHogKDpLCk0yIR8ac1gtdIGSxNtJtUf6gfoly+sLtRR84cQWqZNiFrYkxrPPV7mKD5cvWcqYl7oq//5YMUHI9Roi/9L9fwUEGKh/XWe4GrZIV6CRmmjGYwN/aKoDrOviPzmcmY07yMzuk10U4j5QGHJ9B9ePgvGkRMp3mR+5h3G03zr/PuiIhmiufhdomAMmd6tl0G7oAl8a4apugBN5DluJ42EJpkK9rHIIEi+2+ZvkNIYquyoYcCam3/FgHQuuedxaZR4b36m4t7sY2zmWjjnchZHCv66FgJEVYIWJm0wz/HmWBv847ErUunoKLEopY5cHrqfuii+A4HzO0U9+vYZw6DA2RwuVq8Ya5VdDlbZRva1OqzzDB4rXWgFwPZulwfqMxclrRHej3M7m44ynNW+7fpS44ADFyvLN6k4cS4kDQzfuL9bRcSiR9+UpCQGDxtOx6RF5/kyCwBfshXpinmayXrXCH4oNA=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSCO_FR_0003","notbefore":1640124000000,"notafter":1703196000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkDtFRuH55y0i+agPf50duCfKbdQl\nqeZWlNSQGiNCmHQ2uwU3uz9F1/PrzwwI9HiXQQRNiHdSDBpf/iBkFR+B1A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUQkSt3NEP7eZXRRnAVGA0zskx+JEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIyMTIzMDAwMFoXDTIzMTIyMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASQO0VG4fnnLSL5qA9/nR24J8pt1CWp5laU1JAaI0KYdDa7BTe7P0XX8+vPDAj0eJdBBE2Id1IMGl/+IGQVH4HUo4HgMIHdMB0GA1UdDgQWBBRM5vCkGmWh+WbL/93iZ9SHcFFJ7TAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAHBYP+J01kD3SOJHli5VwmVFRYBLv73mJOlS8SdRO9IWs7KLTSiMAM/izNYp9gIFkgVsNepmJmrccKu5jJUaEZhkjXbhvhnFZQuI0cvMcstZF0iNIFN2vukr2ssIKeFlmVNXkqjTNCawvpzV1IKrwpqGMthe33N67AtkvmLT+Z8Cf2900b8Pgq4kZj1dUekMtz/RwNnf9nOu3Sr1H0pQ845YcUr01DsFsMFyDd/EEmI3OGBHzvvEAA15Kk4fwTCLY7AIy9Z/cAIzy2pvlMoJpPDQF10/JIV0IFPd/nLtNiulU3eeFrzWzXsaw7mIXLfDaattYmP9zc00YSvgcUvOJc4Y0ZF3XWIrPoMYJMNFJic+AjVf6uOHARVb5TN5GDdjtmzzL7dTRl+2mNRXpuOkgWJA4/S8DVPiGZ8N0zbXLltLAnoKW1j+3/sPxX4Zpgz+kSY7Qa2BrAwvj03jOXBGNxiMPFv5ilLCwqSQudA6STA6VlPvuKwpiUZOZ4nVSMJ8cRyKmac4KKb+vi/O3HsGGbLYA3WiqRs9oI3IO45S7S0kHdLLlXOGsQtQWxbVxRxm1WbaOrqk++xxCIKm4PziwY9BgElDi63LHbPt+zksEOCqcneD3viBlNLoYXOpvap834c3oL8pxynSxLp2UXygiz8EUjZPyVLYHNIZwKvf3yps"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_005","notbefore":1007935200000,"notafter":1007935200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgA/VBlwh3BT6L02+aBkegInc4i0O\n+dpqxTnWaR4lFtdAQZih8DMwQnHTE+FMYh+3ELno/d3jUOtr2KRfMiwcgw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUEn7EY32bIQI6cjr9LsydaBRkYLgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIwOTIzMDAwMFoXDTIzMTIwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgA/VBlwh3BT6L02+aBkegInc4i0O+dpqxTnWaR4lFtdAQZih8DMwQnHTE+FMYh+3ELno/d3jUOtr2KRfMiwcg6OB4DCB3TAdBgNVHQ4EFgQUmoAU9xV+MEtzaiWTfIByf3qqNNwwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQC6G6FD54QaC3FBbQog8erXva9jokzjpUynW4DPLMyWQxOS1PlgfeakHADREVs0Q2erL3P1+VRxSzk11Rzss2lztKGU6r3G0EvLWeXT8C6FjWKv+Ej7tzjsWo47JC5cqffYOcDJWx/sAaBNW/OuTiG0SVSVjI2p3VTSPmuC1oZQEKvtqOkCgD4/MClxmVijOF0p344xh/l1ggmoqFZPupyG/lR4Ixx60IVUoe7HYLJrjGX3XxWVb+3CMVqIBUmZNajvxuDigdtMq9gArwymWK6k9yqmlroQ05XWt9gI93uLNJLnZmHrMOvXLa8lp6XgxUmDOYjvFhIWCCh1PO+nxfb3TlxKb1f1E0AmylVt2s3+/7af1RAj702f5aEscUtK+3OwAc6AfUo5x1HsZR9KCm4ZVdHLwTA01UWePGMSmuUTsaJUGo1PY+soNm26XcjFvU2SMHodTPb5Mj87ghAyiMbyb3KdNneJoQ4jfXz26jeN3yo4Yw+fYd881UukDwq6sG4PoxHHWGrkLqoZoKYznegkmAyLwZE2Z4llH/JQ8WWOm6uo1AqovXzMpAYA15o6P9OWFnXv+db+L26naLjWnuOYsiTqfrc8lcdzEpKqKdTMMfPLmhHcL3DCYJi+K373AvXj55vzCkWUr6gM74xttGtsnmuIcXsfc6tLw6QWlJv6LA=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSCO_FR_0001","notbefore":1005343200000,"notafter":1005343200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoeh3CrNm35gaheVMze+v7L5DLRvJ\nSyz2yimQlMPUwNJ95g/0wI7VdYnuZqALEnMFgf2MxB0y14PKwDTdmsFBzw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUJFYOxQLyE+KpwY0ONOh2K3kEyYwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwOTIzMDAwMFoXDTIzMTEwOTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASh6HcKs2bfmBqF5UzN76/svkMtG8lLLPbKKZCUw9TA0n3mD/TAjtV1ie5moAsScwWB/YzEHTLXg8rANN2awUHPo4HgMIHdMB0GA1UdDgQWBBSvVt3VTF438kOOMNhDVxezJ9kiDjAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAFtVxRCvoRCgLbiHwE/j8odxsgT3vt9isAZPtkfH0/Zd+iPdfsnPyXL2v/TKu47IBXm3kurH1UY4ovq0N2yJmOkSS5Z+zflBCOtaRY/R4q5HbK9XDe500OTARIl2w0SVQXQPaQ4sLuiW6KyZEi5rzc5L9Hylm5Gu5aYoozM/rRanoe5CgJ1gCBPkkwW9gDqKictz3g3+92gOBdMckylYV+WpUmgHyQRaBaEGJAicDsI8ZntEiBtEbckKNtz6O0ctYR+GxFj55b66n0BPXE3vqV+kT4gz6vOUFcZOdP4KVW0bdCPNAolE44yK2M0ktC9skVvBhxiZXDuZM9Zk/MAaSfq9uO5C52bhF+LYP9T2Lgp8Au65JE7if671AZ9qs17Nz9ZQg4ialE2k2L4CE4FEWkeuF1MhyGlSD8ripcluctPTB6Elvo3ffBPcgZnSwirswGlc26cFwHciUyPe1odNexgtzLFS8EGgkt8kPCXzrAtpuVD0YGg6dYMHNs1fLcDAyZNJbI/stsJ3yX2As6z+9JHzWAwiLCZtgFs6lWQ+7IyRperWftWOoT+3lwCK+ul2IMzmG7KadVFJ2Un0sAseM1LNKEzRaa4avqIZwAJkRUBN4us0l6sKzYeeZ24u4uNiYFKeWHV54McVxQBT9VNekxL5cvo7ap9p06nzfjiTYuV5"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSCO_FR_0002","notbefore":1638309600000,"notafter":1701381600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuFC53glgMbuEwfdH97ghieGzGlgx\nMInMhVzw4VX9NYrIuf/M6vnEofMFUuH6LIwSBQeT2ZpgonJ35a+vQllmrA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUBMl2JoBkz+RWi5SWbpnyalMO3VgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEzMDIzMDAwMFoXDTIzMTEzMDIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4ULneCWAxu4TB90f3uCGJ4bMaWDEwicyFXPDhVf01isi5/8zq+cSh8wVS4fosjBIFB5PZmmCicnflr69CWWaso4HgMIHdMB0GA1UdDgQWBBSDC2InnziqUQroYRTeKdlO3DLQvzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAA/VLMVc8tiJgpKRZAJ9kZIWVgjDcCJT166RSzuSfF92dQy6Z9F4GdFoh1Je76gY2f9fkQ6sYuJDO6FTzstUbKDI1qzGrfKFeFHpZziXSz1Oa+fZUAa9GjOdsIyLDjszoRBLGB0A9p43VK2cGI3GBb3bu0WMLBcPmxm2jG8WpIK+w5+xpoDkv7jjIwFVnVvepgvleB6vmFMqR7GinJMp6pejtEYSstc/0InPor4TZsjzPftXgzlioapgPYmGVTQSVer6zGITALQCBWYnUJFd5YXPD/I6jttwzV4b+3t0OXMPOitBRpLe7Uc3VCTff4ERj3O0EkyYkUwS8+5c/Y7RrM+UN53FaAodfBRW6yT4VZ+YJ4+Lzr5CHsVz1yaeYwLKlUtqRkLBvUBwZciyKhtRuWG5hKSKSE3Nby/4OViIOpUgR0pZEUoAbGTXWEuAFGem1RGsMtsSU4lluqPUCgQ6N1aTdcb5pQZ334kEYdPrd8sYusZgxEo7FrJ0V4gEiWtQRdZDKNNB/dHOquE7zqUCnZmCIiBQuxsK/Bpux382DqaR/4YktRXpY9EAnUeqA/+33gL4C3kUUJAgSWXCuGsxCN40DZlT3pI/xSBbIEx1JsZp4LHJLSbiLa0J9kGe/+2o8NvEbjuz8NGr+fi9zoE99vaUkz5eKt06npXdi5GPjRL0"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSCO_FR_BK01","notbefore":1005343200000,"notafter":1005343200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEw85KMUnYZdEdDYh5hyBfVFCJEUz4\nbhbItd92P5Mn3sXQMHRJ4gCSJlNHMDaehYzYHQQNun1trn9fyQ89jUVHVQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUIHkOe/e5NZZz8nE/r3Qh1delIC8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwOTIzMDAwMFoXDTIzMTEwOTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSX0JLMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATDzkoxSdhl0R0NiHmHIF9UUIkRTPhuFsi133Y/kyfexdAwdEniAJImU0cwNp6FjNgdBA26fW2uf1/JDz2NRUdVo4HgMIHdMB0GA1UdDgQWBBSo6rsZAC0hV0TGvuC8k6tflOShaTAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAHg8WLw8DxxxXFp6XXypXncQyGA4HFmZSMLJKPU01rmjqpLeR+5/gAbRj0OVhQYo0B3kHNUNlA24I2i6Zzx7zKjODdCWaKsZYfBeOttVVETMs+s0X7a2V/9P/uCj8tkYOOxCnKyv7TiWn1rfaHZxJS5Wqooy5IyerATOhueiL9ixorMAqWC5oaqactyL2psTuQWRjYBNtiNJgyjAXxUo7jITJWE+gGJkXwzBU9x1EcFnCoR5eiHHRdjQWiATLEgqcbWrYymgyj6D8o1QHXS2cOWlXxVpb4a1ghXFKRbN8yblgHSB2UE6ipBS/xqcbtycHpwy1Vpja9VG0WR/K4U10zqq0XHXHQl+RMPeKQcYI0qtPKH3yDBGM+rXNiaTnmRHASx5p1fYS//7SK22xIBto2qOO2HoIoNHkI6iYJFPk9g6JP2FBaH0PzaWaX4Qz5Z/TOZ4hfKEOv+0+ZOcIKvguT+DownHQjr2EjsOKB0l0npRtbk9HtRwh0TV1Rv88Fe/ea6rkKobRXBT+9EHKkWYGNgaMrbzNg4JqYOHywAivq/XmvTPwkVpdpplp7/sFYs18U08qL15r9lF5ztwzGYrgEobsdmOYcunVbIBVJ9G+miTc08ezKZga7Wr67l0L2FizmdbWepidnz1E26n49l5PXmkA6hCTjWmjwGd0X1MHlid"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSCO_FR_0005","notbefore":981064800000,"notafter":981064800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuJH/fgV1ST2egWe4mJXWL6e5pu33\nF08BzsYkDCiHKFIGtXj9LuOm+d6xiBreJ7NPzGxQP1Pt/UzRAnDsjmsAgA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUcnYrQMFgK1Fy648tt2Nq9kP7j7swDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIwMTIzMDAwMFoXDTI0MDIwMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4kf9+BXVJPZ6BZ7iYldYvp7mm7fcXTwHOxiQMKIcoUga1eP0u46b53rGIGt4ns0/MbFA/U+39TNECcOyOawCAo4HgMIHdMB0GA1UdDgQWBBSw76s2nUSROAzjhc98PGBEguhsMzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIlg9HMtb7I0/zvhB/XZMHBDqRQ6cDUvT/NeVfavcNqpJ6ZAxA9iIRTObsjkryqLfCAVzclXHUydiuX9K+KhjYVIKJQqU5Bng+GJOyXUYIy1RqKGVdKxDpMFPNQwzXVAQTjDvlQAJTQLtWyJnZ2Z3TNUOJXfO+9Su2MEr1InFHSAhgh+sx+R9uFMGcyRdho6VlxbyMlNPfi+UsT1+9L00m62kKXekd5Pm6tkj1PgRDnbAfTKowJMDxGgCOTvf6+atNwdYhO1egGREWVv8jPmH+WufBLw3602wzbQN/DJ7KEphVcz9vmeVt7r9TWMTmaqObgR1DIPyQHOssWhfA9n078dRYEUtJylDk8QWBydS3VTzcLBgJA8yroEZmQ3Y9nozweLrYaq5mnmUd1ZQ8HAdQuasjYJpZJSOmBuJIVA/oyGNAjJ6JJQFLKTnkRI0w+lH2nBDx7/ldEKXfWvqUqjAH9cN8P9nphBQ8ZY3C/w4F2R2naCf/WY1xpGSky0g2XZpBBPjluGKx1D+s80onWTZnQFgYT8RIaJnxEN4hgEG+/pvPH/QUfEnc4nek1nnXK6/l5n7AUeGg920H46+MTFNax8qlxSBvbktGckpmTIPW0wmr8SyJd9pD9W5OPhupo/JPfTK/hMKN/2jlWR4qKmuxEOiZkOCnOe2OjC4pH0JZgv"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSCO_FR_0006","notbefore":1645567200000,"notafter":1708639200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0uciJTqR/3fxFNZ9yeUUoPYUx38Q\n8OH1jFEsJqJvfN6jrx+s8h12VqrUGv/8oBY+dECMhySMeviq8Yg6kT4r2A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUdp9CXnOFuqVuiiT7jg9FodyeACYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIyMjIzMDAwMFoXDTI0MDIyMjIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATS5yIlOpH/d/EU1n3J5RSg9hTHfxDw4fWMUSwmom983qOvH6zyHXZWqtQa//ygFj50QIyHJIx6+KrxiDqRPivYo4HgMIHdMB0GA1UdDgQWBBToe/OectWamtD2LONpMXn0znvh7jAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBABcKi+7I0gwOKKEb8WCP+E7NTzP4Ts0L3F+bGNdeFASZhcQQAMFwtPoJOfSsO8I/9p2uXHMjawyVXlWEanb5oHWLfafCrQmROIQQQBHfuHlD0N+YdHFe1W1ItvzDeouUMUndfuBEd0q7KcdmNnoH9EnPdEt/vqLU8Pj1PKD4lI7TAL84jyxYUQKGzj/D6dKsawa85Xk6+jEucHVJ9lphPFyXatPRHf1bebu84ybCwOjuY9V96+ltzFQowlkaQO6sYw22btDlsjldpwgLBV6jhZVkWNz8rWR3Um+lX6idz4BjHnk8GQt0HKEwQdgJbrMiAykkemSghxB4XYPn6iN0nlgmTOGPJTODgOJxsvdLyX3+5gIX3OOp+3rFUvH/1LKlYGis7OSeMxDQerOAV+5TaYjHKeGZhLkJpgRym1pofypRa2gX1dVL2Un9cn9tOBmsuhl7MAM1gHbeBLlw5nBW5K49vfAZhMsqQ5X1PvyFzHVPmnhQlD/syAKzuSUABona+oUl0zkv3XxoxWZx4QZXiWR3gCfCio58P1DEBf0Y4lehMuNJ7b1sla6NXRSY97w1Usg/biDxJR5BbkbTU/00Q9zICVgtAYlV2CguUr16PG+o3kpxRjkjvg+Fo9WG9dtOTycZPNcWEAscdzpzLzmtU6iXQEkIEyIpvfWSwTAjC3iE"},{"issuer":"C = CH, 2.5.4.97 = VATCH-CHE-221.032.573, O = Bundesamt fuer Informatik und Telekommunikation (BIT), OU = Swiss Government PKI, CN = Swiss Government Regulated CA 02\nValidity","subject":"C = CH, ST = Bern, L = K\\C3\\B6niz, businessCategory = Government Entity, 2.5.4.97 = NTRCH-CHE-467.023.568, O = Bundesamt f\\C3\\BCr Gesundheit (BAG), OU = GE-0220-BAG, OU = Taskforce BAG Covid-19, CN = CC_CH_1200005_0511","notbefore":1005307070000,"notafter":1005307070000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqssyXfYarvjSj+v2XSgQ\nb6nPrpx+0p5CV98Hr4rSpcFJo8DOUf4BzWD4vpAY+kvrGrxnvBlZv+fBrnJcA46u\nPGpE0GILlqHFxBmm8CVbAS/UFrHf9DqG0AiMD9zLBsLCW9M+6zlIQkX5CsbWbjCu\nnJoySDBQyMmvo74EFoTpJMW05yYZA9WRSGGf6qNCPxRkXPIaO43FMLWVlTTCAnHt\nXzHpakG5qZDULLEWZhOs78KT9oHCcTBakPb38pgUTBNwTFMPuSm57jtiqm8oPbx1\nhxxQGb6XxMuIa/eKWIh8z1/oLORaiixxU6YNHNPFbl5oAOX6CjN6i+krI2zbpisy\nnQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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"},{"issuer":"C = HR, O = AKD d.o.o., CN = Croatia DGC CSCA\nValidity","subject":"C = HR, O = AKD d.o.o., CN = Croatia DGC DS 002","notbefore":1005333215000,"notafter":1005333214000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsHGctEPFotenAxVqYr/5Ztl46BU9\nhWNYAYdGWihiGzRTOgXzONqCQJqB37pacA53L7OlXPFONvT9KWYvbsVeiw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICwDCCAmagAwIBAgIIcPs80UkeH/UwCgYIKoZIzj0EAwIwPTELMAkGA1UEBhMCSFIxEzARBgNVBAoMCkFLRCBkLm8uby4xGTAXBgNVBAMMEENyb2F0aWEgREdDIENTQ0EwHhcNMjExMTA5MjAxMzM1WhcNMjMxMTA5MjAxMzM0WjA/MQswCQYDVQQGEwJIUjETMBEGA1UECgwKQUtEIGQuby5vLjEbMBkGA1UEAwwSQ3JvYXRpYSBER0MgRFMgMDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsHGctEPFotenAxVqYr/5Ztl46BU9hWNYAYdGWihiGzRTOgXzONqCQJqB37pacA53L7OlXPFONvT9KWYvbsVei6OCAUwwggFIMB8GA1UdIwQYMBaAFDErHKPIgGXhH70EktAlPHyGj1LRMC8GA1UdEgQoMCaBEkNyb2F0aWEuREdDQGRnYy5ocqQQMA4xDDAKBgNVBAcMA0hSVjAvBgNVHREEKDAmgRJDcm9hdGlhLkRHQ0BkZ2MuaHKkEDAOMQwwCgYDVQQHDANIUlYwZwYDVR0fBGAwXjAtoCugKYYnaHR0cDovL2RnYzEuZGdjLmhyL2Nyb2F0aWEtZGdjLWNzY2EuY3JsMC2gK6AphidodHRwOi8vZGdjMi5kZ2MuaHIvY3JvYXRpYS1kZ2MtY3NjYS5jcmwwHQYDVR0OBBYEFIZqz9SFr6ueNBY4r/u1ZNovF+WlMCsGA1UdEAQkMCKADzIwMjExMTA5MjAxMzM1WoEPMjAyMjA1MDgyMDEzMzVaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiALjpDpXS59EIpkdvCjEAdR6UPq41CbnhWAat7dGT8+zwIhAOdLwTxsmuRttRDg6ZX0CGxwjHFu7NfxCwqdrOd8n50E"},{"issuer":"C = LV, O = VAS Latvijas Valsts radio un telev\\C4\\ABzijas centrs, 2.5.4.97 = NTRLV-40003011203, CN = Digital Green Certificate CSCA\nValidity","subject":"C = LV, O = NTRLV-90009649337, CN = lv_dsc_003","notbefore":1004862645000,"notafter":1004862645000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6aTLMp6+apBgDNYyDeBS+BranY97\nxhfHhRYV+/D6WsCBJ93WCnduv7YsSFj4NGf/xoJynxeckYR3+JhYBvdOyA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE0TCCArmgAwIBAgIQMgfVJ9KIWgdhg6hFmVPWzDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTExMDQwOTMwNDVaFw0yMzExMDQwOTMwNDVaMD4xCzAJBgNVBAYTAkxWMRowGAYDVQQKDBFOVFJMVi05MDAwOTY0OTMzNzETMBEGA1UEAwwKbHZfZHNjXzAwMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOmkyzKevmqQYAzWMg3gUvga2p2Pe8YXx4UWFfvw+lrAgSfd1gp3br+2LEhY+DRn/8aCcp8XnJGEd/iYWAb3TsijggFEMIIBQDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMB0GA1UdDgQWBBSNXXFCsYbyQpaR9CVhus96/tOAejAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzIuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCFbvni9IiyVakliliz/jPuPfk3N2RETFV7cEGjRABugInh43DAPZz0siRPi2dmMy5B1b2T22QxFI7Od0qBkiPcGXKqwik1GU097mNWZ+5p8PuOVMN8E7nj5kX/vBJnmLw+XT1/taPMoz3cBVQ/7NTu1ycXVmJ1lWR8nPsBbqWRgnJbXFL1Q4Io+jngV2Y20o/OC+yvc0TsdofuM6dgDBEBunAU2kmiuexEtpyPVWgBuu5nz6mXOD1U10pXnxvDM5S6w+IDY04Nt3K4ONrlG/ghWUhTjrlYjpFMofqtK6CuKpGo8HQMpgQqb/bTTaAGeE3jEdoRVQxvQcsoUKEzM6cLf/XHz/MIoxlCfX0Rs+we93g/X4vjpXaoO0Dns57hEbRz53t3sE2Fty1rjY3qjGUd269vOtDIl2DooipUAnvSevUQQ3tRu7HeFGnc2ARrb82RG9lj2xwcce+JE5owTQYI2nSdnor1C2sQYhbMKNfbeLEwmoiWLUJyuhB95CPffwUffxQfF6EBbVEK9w6Rpu2I5Mo2qM9cwfJOYc9EIN4Bw8k3h7J3bNNFueVITL4WmVSjXnOaDFtt8PPF/H37exix0akaePpB4BGc5fpJN+OfIwPqEPU0ZDR+wFzwwHZrNF/aMD+j2myGGIuKcAkdt2rqzErGRznR6QClCNpJ3JF2Ew=="},{"issuer":"C = IT, O = Ministero della Salute, CN = Italy DGC CSCA 1\nValidity","subject":"C = IT, O = Ministero della Salute, CN = Italy DGC DSC 3","notbefore":1636720905000,"notafter":1699792904000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwlU23NYZQba7t++TVejbvPxgS6w\ndW8uE7UPe14VkhXoKINhhrCT0EWHP+aPim6apT46Ktd0lfoNVTsbg2QQ2A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEDzCCAfegAwIBAgIUdtfIwH49VX3gzjg7sw1okOP/KAIwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjExMTEyMTM0MTQ1WhcNMjMxMTEyMTM0MTQ0WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwlU23NYZQba7t++TVejbvPxgS6wdW8uE7UPe14VkhXoKINhhrCT0EWHP+aPim6apT46Ktd0lfoNVTsbg2QQ2KOBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFCR9+jzaaoSYO/7wB8YLfAk4Vw1FMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAokc+BGagX9kFseWotrm4fPrXBm6JLAxn9rC/Mz1awCXehbinERs+AVl029UApYXNp3/wiA57/9z1NkmMtZspBn1b0rJ4WP5hcRDhcsXxFvkSNx03/LwTCBi9iJSFNDQSv6bq8+YVSenamvwGJ+wNpemAIthrPshIGU2+MEipWhFmERYE6JaGJVFGs6n8r4IHzOx3gKeyUoGK2p4vM0Aw4LCfaqffEQz47lVMi+dDk3/h6CWWKZ6//+/15DKsuuj+BBAt9HBaqKAgCQke8RVceGJ1dsZFUW0yuCMqCSmoc3pksjQghYki9p4gs8Ex9khXCusRnCw81sG7VGrZgiDCEGHtbny774/CLCFNDpPC/CJLSEiyDP2exV6um2NEtAqQvGPlCdKVxHiLJ1FkunuHV0zYMLQi4+5mjAWbs4DuTgsOfkuZoJ7t8lFp9rqx3maNrew8Dw/w2nTuOHfk5f4xb99nlVXqA0rUPejZ/kf4ajU2AXrszxLAGXZnopryEcCSzxUSu1vRnv9NMtneTn3l0fDQTwPFVV2zquQUwl85Rm672r12Lupisn74UgwKgElxkgHjNRry++64ULoksydKWMz78ElfLV1tws8xoEx8I744pxsq7DTK52tcFuIZjASIfley6AbGLWzu8DUVGA3o/ANbavT56O8sXlT2OGipPx0="},{"issuer":"C = IT, O = Ministero della Salute, CN = Italy DGC CSCA 1\nValidity","subject":"C = IT, O = Ministero della Salute, CN = Italy DGC DSC 2","notbefore":1636720838000,"notafter":1699792837000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhX3UYfApjRF+CwtZqZJga6pwzbvN\nic585TOlc0qa2DbRcer1H3FYNY1HErSbo3+tOLiYkPHbrbQdLTE05rymtA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEDzCCAfegAwIBAgIUUfSAdqIwpkqwXjDhZ+0JdUPaICAwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjExMTEyMTM0MDM4WhcNMjMxMTEyMTM0MDM3WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhX3UYfApjRF+CwtZqZJga6pwzbvNic585TOlc0qa2DbRcer1H3FYNY1HErSbo3+tOLiYkPHbrbQdLTE05rymtKOBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFNyqHmbZQ9GcMJjdpjpoJXEwFn/8MA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEART1krCdKJhBVe9N4ydQ2UGQlgjEL1OgHj1s0TNCQKL3kEwYcafkKstW0vtsFi1ZGKrfgWkXCcWwkl5/NxfRNoSACApZog4cgSYDlgxa2G7KAoXa7xLuN2ADMEK02zXY5tGnd7Sv6Jl2nMfuUXMirAotr1vA6QETSDmbQNJqyKciDOQkdjxL1mGKhDzeneYRxLeKkOVox/X0uPguRYT2NS7jr2U7S3Z48667Ow46YLAI6n7IZGodn7Wktz1aqFWPGoBhJ2Y5C/QvBjzWn/0WfLBX65cchOdkZoYvfJcnbWS7Z7N/G1V2/CNYNr09EHiZnsmdcsqBX/ywyIGdybCGbx3cDqXsOBfcjH5Jy8moe7QL3oEraUDUEk5JF7un17GcdB4pjOlB8e1AWEthMpa2UMUw/vox1TCUjZ3pZa4rYn+yhcBoA6dYgu8B2HXcNFAE2S35XXDT15C0LvYh858UvtWSLoRmwyrkbNr7ImtgVrdzOKhIEetbmKLdM7fB7kcsYWZ05LTD3VsA2A8AHCOZ2noI4f50pd+VF1FtOz8ogRrCvHz7TJ4T7Kg6aIq/K1zlu06LaJQj2s8f4mJeCYZBfYmm4uywO2PHI8Hcv5MwTrbQ27CuvBkayfIToNOrNLsI8qlcE20Vfei/rLFAGWQoF0xVoJ+boNIBtwn/NBJDtIb4="},{"issuer":"C = NZ, O = Government of New Zealand, OU = Ministry of Health, CN = Vaccine CSCA\nValidity","subject":"C = NZ, O = Government of New Zealand, OU = Ministry of Health, OU = Vaccine CSCA, CN = Vaccine Document Signer 202111020007","notbefore":1004830874000,"notafter":983403673000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESDFA3IUS71aOIaAiVxG9QDby5hfT\nSqPSuHAagC8/vhKbIG6quGGAQjRcxbjxB2+KCt8RhSkBzTPpzX8D6iSpBA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICmDCCAh6gAwIBAgIUN7QAlQwRtBkiAZZmQo6EuSzr2TkwCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNDExNFoXDTMyMDMwMTAwNDExM1owgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESDFA3IUS71aOIaAiVxG9QDby5hfTSqPSuHAagC8/vhKbIG6quGGAQjRcxbjxB2+KCt8RhSkBzTPpzX8D6iSpBKN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFMkTYUd+m7dTqQrgXROc796CHD2sMCsGA1UdEAQkMCKADzIwMjExMTA0MDA0MTE0WoEPMjAyMjAzMDQwMDQxMTRaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjAhZylOip2hsx2QTptQMSKUwjmA5MSWxJi01hCB2cUQWYWBLRP+RzxcVC2tAnUpGiACMQDoNr7Vs/ID/BJMMHlkj9WAfb1vbY1ePMZGtGh4aNCi9B90uZczIQctXmP4w/o6G0c="},{"issuer":"C = NZ, O = Government of New Zealand, OU = Ministry of Health, CN = Vaccine CSCA\nValidity","subject":"C = NZ, O = Government of New Zealand, OU = Ministry of Health, OU = Vaccine CSCA, CN = Vaccine Document Signer 202111020010","notbefore":1004832188000,"notafter":983404987000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQEqBzWkYP17/i2b+EPcLpiQvTKLx\nasVDjA3A7IvRt9RHjYFIQGpFQCR7ZJLD5XQNsjcFfHzxwVEITkb5M7fIyQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICmDCCAh6gAwIBAgIUNe+sDjaZPIfOw8OIMwqniNZ1ABEwCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAxMDMwOFoXDTMyMDMwMTAxMDMwN1owgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDEwMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQEqBzWkYP17/i2b+EPcLpiQvTKLxasVDjA3A7IvRt9RHjYFIQGpFQCR7ZJLD5XQNsjcFfHzxwVEITkb5M7fIyaN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFIrSwiSmYianLXQsxR6ZAFL5/ltIMCsGA1UdEAQkMCKADzIwMjExMTA0MDEwMzA4WoEPMjAyMjAzMDQwMTAzMDhaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjEA9UwmICswUwNiWRzvb4V+U0Z7qKebbIIldgtTp+nHmcme5HGjKc8UuT/yvuzzK4qoAjBvlH+kAQGZuXrSXduh+CtY20W+NEPrYV6bjDUdxQEzCxmOrsA1LWl2lHdIcLRSDdc="},{"issuer":"C = NZ, O = Government of New Zealand, OU = Ministry of Health, CN = Vaccine CSCA\nValidity","subject":"C = NZ, O = Government of New Zealand, OU = Ministry of Health, OU = Vaccine CSCA, CN = Vaccine Document Signer 202111020009","notbefore":1004831943000,"notafter":983404742000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEn/wOHL0ulsMkJCwPvwhEPoPE2LiF\nf9MEsma3tYaPfANxLqX4K5e6Lk9F3tvg8OtBnVBI1amxen9cOlmSRXHg+w==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIClzCCAh6gAwIBAgIUfn/tDIC04XNn08DedD/Mgv0Y7Q8wCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNTkwM1oXDTMyMDMwMTAwNTkwMlowgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEn/wOHL0ulsMkJCwPvwhEPoPE2LiFf9MEsma3tYaPfANxLqX4K5e6Lk9F3tvg8OtBnVBI1amxen9cOlmSRXHg+6N8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFAHaV5pGrS6VpJVmDC3vnQ5FbGlYMCsGA1UdEAQkMCKADzIwMjExMTA0MDA1OTAzWoEPMjAyMjAzMDQwMDU5MDNaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNnADBkAjAdOz+yESmxwxVmK9YQjs4MPYfcoCxU19xPeB90YL5mB+uDH3/Kf77UTnZehqtX/m8CMA+YOej3Ymvg3flZJH/+lQ5owd4lvU4PJTxwQS/D+JroiKvnIeG6O3WT9LvnRSKwEA=="},{"issuer":"C = NZ, O = Government of New Zealand, OU = Ministry of Health, CN = Vaccine CSCA\nValidity","subject":"C = NZ, O = Government of New Zealand, OU = Ministry of Health, OU = Vaccine CSCA, CN = Vaccine Document Signer 202111020008","notbefore":1004831666000,"notafter":983404465000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+axE1mKfKiVwARulc2LnH6co1SoC\nrfqtL11PQqYh7TBRrdawgzPokpfjoFGDkMU0ZPg7cnwilW6LnYH+vkjVhA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICmDCCAh6gAwIBAgIUapkq2mxmLiK29lTfgGNiKmLH/o0wCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNTQyNloXDTMyMDMwMTAwNTQyNVowgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+axE1mKfKiVwARulc2LnH6co1SoCrfqtL11PQqYh7TBRrdawgzPokpfjoFGDkMU0ZPg7cnwilW6LnYH+vkjVhKN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFGNFtRIN7owNYF3S4WS3IkmDxnqQMCsGA1UdEAQkMCKADzIwMjExMTA0MDA1NDI2WoEPMjAyMjAzMDQwMDU0MjZaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjEA/2L/gI6AFNxKty+dHwt8nPypmd0pJDWe5ePduw1gKQnOxqM62i95FHFMPxU6uJBjAjAmDdxcr1IdCU4RO5f6PY9AS3pdb3VAkifbZe5cu2963QvvCoyfWWFXwj/D3xsvTGk="},{"issuer":"CN = DGC Country Signing CA, OU = Public Service Development Agency, O = Ministry of Justice of Georgia, C = GE\nValidity","subject":"CN = DGC DS Signer 1, OU = LEPL Information Technologies Agency, O = \"Ministry of Internally Displaced Persons From the Occupied Territories, Labour, Health and Social Affairs of Georgia\", C = GE","notbefore":1635519365000,"notafter":1698594964000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEa5QqEDGwiaDJSMCLVHg6l9ScX3LI\n/9mzuzs6e+E0YBgeKTdQ5VV0IBCSIZkgjSb/Hfzghmi9rOa9aGuww7BU9Q==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDLDCCAtKgAwIBAgIUVO20iQwJJtX9tVMEQrEQl/B+5XswCgYIKoZIzj0EAwIwgYMxHzAdBgNVBAMMFkRHQyBDb3VudHJ5IFNpZ25pbmcgQ0ExKjAoBgNVBAsMIVB1YmxpYyBTZXJ2aWNlIERldmVsb3BtZW50IEFnZW5jeTEnMCUGA1UECgweTWluaXN0cnkgb2YgSnVzdGljZSBvZiBHZW9yZ2lhMQswCQYDVQQGEwJHRTAeFw0yMTEwMjkxNjU2MDVaFw0yMzEwMjkxNjU2MDRaMIHVMRgwFgYDVQQDDA9ER0MgRFMgU2lnbmVyIDExLTArBgNVBAsMJExFUEwgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIEFnZW5jeTF9MHsGA1UECgx0TWluaXN0cnkgb2YgSW50ZXJuYWxseSBEaXNwbGFjZWQgUGVyc29ucyBGcm9tIHRoZSBPY2N1cGllZCBUZXJyaXRvcmllcywgTGFib3VyLCBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzIG9mIEdlb3JnaWExCzAJBgNVBAYTAkdFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEa5QqEDGwiaDJSMCLVHg6l9ScX3LI/9mzuzs6e+E0YBgeKTdQ5VV0IBCSIZkgjSb/Hfzghmi9rOa9aGuww7BU9aOBzzCBzDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGdNMng/by4nCNGrYeB79TXd3c2wMDAGA1UdJQQpMCcGCysGAQQBjjePZQEDBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5jcmEuZ2UvZGdjY291bnRyeXNpZ25pbmdjYS5jcmwwHQYDVR0OBBYEFHtiZBY7D8iDDRpr5yECOpZ1cyfLMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBH/RuRLyOU640ZMdX0CDXC2/Hlv8tDsQN2Tjm2+fmbbAIhALY7w0RCZyu0JY1jmnBMKtzPr7mdqZGCR1oi7jC8RvXO"},{"issuer":"C = MD, ST = Republic of Moldova, L = Chisinau, O = STISC, OU = CCCP, CN = Republic of Moldova National CSCA 01\nValidity","subject":"C = MD, ST = Republic of Moldova, L = Chisinau, O = Ministry of Health, CN = Republic of Moldova DSC 01","notbefore":1635262261000,"notafter":1698334261000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEurid6V6ennaGMYu1h8Q2PFJ7eMkj\n7FiBzBEiQMnNb/YzAj60g6cnvX02AB+E48Hoz4amNlralKXL3CvjaxHGLw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICljCCAjygAwIBAgIUfKVPCJ2DSOQlBmu5AcgWL+pt9wkwCgYIKoZIzj0EAwIwgYwxCzAJBgNVBAYTAk1EMRwwGgYDVQQIDBNSZXB1YmxpYyBvZiBNb2xkb3ZhMREwDwYDVQQHDAhDaGlzaW5hdTEOMAwGA1UECgwFU1RJU0MxDTALBgNVBAsMBENDQ1AxLTArBgNVBAMMJFJlcHVibGljIG9mIE1vbGRvdmEgTmF0aW9uYWwgQ1NDQSAwMTAeFw0yMTEwMjYxNzMxMDFaFw0yMzEwMjYxNzMxMDFaMIGAMQswCQYDVQQGEwJNRDEcMBoGA1UECAwTUmVwdWJsaWMgb2YgTW9sZG92YTERMA8GA1UEBwwIQ2hpc2luYXUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDEjMCEGA1UEAwwaUmVwdWJsaWMgb2YgTW9sZG92YSBEU0MgMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS6uJ3pXp6edoYxi7WHxDY8Unt4ySPsWIHMESJAyc1v9jMCPrSDpye9fTYAH4TjwejPhqY2WtqUpcvcK+NrEcYvo4GFMIGCMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUtk8/4i4hj2sDFnz+oTBPM3gsriUwHwYDVR0jBBgwFoAU5leuhgfUUggxBYNy0n+tKWe46lIwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAKBggqhkjOPQQDAgNIADBFAiA0P/CM3hswqmbtlgRCGfsMs2DCmPGQwoqVJYoDFHyx/wIhAM2PdlwhGVVyeVugqUXabGMmLNwchyNqMNdABoH3eI9q"},{"issuer":"C = RS, L = Beograd, 2.5.4.97 = VATRS-110177886, O = Kancelarija za informacione tehnologije i elektronsku upravu, CN = RS NBCSCA\nValidity","subject":"CN = RS PROD DSC2, O = Kancelarija za informacione tehnologije i elektronsku upravu, C = RS","notbefore":1636983258000,"notafter":1700055258000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtc0dmUPU8wLDfYTVnSXD\nxhCr4AHEG+GKSy13pMGI5Fj8IK1e9JVLrLoemtLnlaFV5WAPr6G8ialeG9TV9Xnw\nfiiWzAaxLT28u8/8MG4jihRKw5cVAPC0mizABynleAzU+dOYkNFlmwEpt6M6+VXl\n39aild/WVqMnZ0I/k/Vg0tQe5lS7aBPBtb7WJaaOYhzDx2hcv0z7IrYSBmigWgl3\njOO0TN+/1viQPtMbtbvC6gxXGDyQ8/HCwgt69HYNDHrBglFjLIvbelLuTsgoDooz\nIV+BUKIDal2vtAGvd1cDrN6YvqqiZRwqOn3gtv1oj/XmZUnl7aMtKisQ1MuqKVHm\ntQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"MIIFKjCCAxKgAwIBAgIUBsFy8hwKgnDAZGz/bi/+8NsJbrswDQYJKoZIhvcNAQELBQAwgZQxCzAJBgNVBAYTAlJTMRAwDgYDVQQHEwdCZW9ncmFkMRgwFgYDVQRhEw9WQVRSUy0xMTAxNzc4ODYxRTBDBgNVBAoTPEthbmNlbGFyaWphIHphIGluZm9ybWFjaW9uZSB0ZWhub2xvZ2lqZSBpIGVsZWt0cm9uc2t1IHVwcmF2dTESMBAGA1UEAxMJUlMgTkJDU0NBMB4XDTIxMTExNTE0MzQxOFoXDTIzMTExNTE0MzQxOFowazEVMBMGA1UEAwwMUlMgUFJPRCBEU0MyMUUwQwYDVQQKDDxLYW5jZWxhcmlqYSB6YSBpbmZvcm1hY2lvbmUgdGVobm9sb2dpamUgaSBlbGVrdHJvbnNrdSB1cHJhdnUxCzAJBgNVBAYTAlJTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtc0dmUPU8wLDfYTVnSXDxhCr4AHEG+GKSy13pMGI5Fj8IK1e9JVLrLoemtLnlaFV5WAPr6G8ialeG9TV9XnwfiiWzAaxLT28u8/8MG4jihRKw5cVAPC0mizABynleAzU+dOYkNFlmwEpt6M6+VXl39aild/WVqMnZ0I/k/Vg0tQe5lS7aBPBtb7WJaaOYhzDx2hcv0z7IrYSBmigWgl3jOO0TN+/1viQPtMbtbvC6gxXGDyQ8/HCwgt69HYNDHrBglFjLIvbelLuTsgoDoozIV+BUKIDal2vtAGvd1cDrN6YvqqiZRwqOn3gtv1oj/XmZUnl7aMtKisQ1MuqKVHmtQIDAQABo4GbMIGYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFPHhcSjAsmKP7ijI10VI7Lc8dDTIMDgGA1UdHwQxMC8wLaAroCmGJ2h0dHBzOi8vY2xvdWQuZWlkLmdvdi5ycy9jcmwvbmJjc2NhLmNybDAdBgNVHQ4EFgQU5/vY+2xxURwDV2bNEeYIFGMWSLgwDQYJKoZIhvcNAQELBQADggIBAHQexmp5RK8OA8j/SKhwUpiUTSvgQg/2/UgdQ2v5x4lzo8N9cQ6fS5VxY5YK3CpJBNEz8i5qRmzsD0UozOvEeLbcum3L4hCoOPXWhsPMcRkaEEwYn5kDP4Evz7iqmqviHL74BBxx3zZ9WVfoq8SCbkawywrw2Hwtoeuo3XKOWDK0jsesewcEHWv9MfEXhKjZtxlS0v1lkCF/5AvSEUPIYz4FasPeCoX31JIizErdZZLXiy5FGKxxBW6LP7GUAQkouKDeLZLsV/5247rNADICYkrOyd2jtZY37BY6UobYNH7flofqbwTbXfvfT+xD9cb5uyPTWD18lukcQirJahE64Fsa2ZE/E6+SiFDRsLTazEItW0bVAECA2gQd8Gg2FesBMMlJbQFTGxXdU4FQCP31/SlIc9DJjo8KIEfwr+khMRUaD91wq1Nwfmf3NuB4qv3nX6rQI9bAoCNs0/eU1A8LqJ4ugKf0LUHpfMTk585lhSyHKeXX823Uu5cPnk05Z1zDVJ72VrH57qETto+4gJ1DK2iLcgJHWkUQqwiWHygWzDsVvFIv26CRSItK2JpV2gZM8sTYFAoqquAlzyAkvumdvwpg4aUWMyWHZV0W9X71YGM1To8ZPU1v4dIOB7ESjGwEluD35arlYn9IjuvQBbnO++/Cr/STq2n9DS/mG2XDkVi/"},{"issuer":"C = BE, O = eHealth - Belgium, CN = Belgium Covid19 Country Signing CA 01\nValidity","subject":"C = BE, O = eHealth - Belgium, CN = Belgium Covid19 DSC 02","notbefore":1637050472000,"notafter":1700122472000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEX79y3o+S4vY8UyqO1uzSAT6W7zUL\npaFWqe6MqPue8fVNOhQ1bwN/yKHKN64HkcJ+sGIpLtgaJb4iGr06NiAWfQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICLTCCAdOgAwIBAgIIG+DS62eZmPswCgYIKoZIzj0EAwIwWTELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMS4wLAYDVQQDDCVCZWxnaXVtIENvdmlkMTkgQ291bnRyeSBTaWduaW5nIENBIDAxMB4XDTIxMTExNjA5MTQzMloXDTIzMTExNjA5MTQzMlowSjELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMR8wHQYDVQQDDBZCZWxnaXVtIENvdmlkMTkgRFNDIDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEX79y3o+S4vY8UyqO1uzSAT6W7zULpaFWqe6MqPue8fVNOhQ1bwN/yKHKN64HkcJ+sGIpLtgaJb4iGr06NiAWfaOBkzCBkDAdBgNVHQ4EFgQUGQizN6eLdUb55YpiOuht4TeeiigwHwYDVR0jBBgwFoAUMc4oJrfby5Fk9eLZSMutpWhvX9UwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NlcnQtYXBwLmJlL3Jldm9rZWRMaXN0L2RnY19jc2NhMDEuY3JsMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBm+UkB5ZbZO7CqGiaA4J4Xj/LhFP61DZV9gY54U47S4gIhAPFP3U9ekHl9ecHOxL0oEZ0/4GdaIZ1E0wnBFvB98UPm"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 6","notbefore":1637313818000,"notafter":1700385818000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAM+XCsJYYmHT5wSsEfx7DF5PWT3D\nCIbIdWjSxS2NWcbsPx7zjbWi/lMKbaSDdrYnO37o5zn0fI7LUU1LS5pKtQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIIOrhc6Me7w+wwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMTExOTEwMjMzOFoXDTIzMTExOTEwMjMzOFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABADPlwrCWGJh0+cErBH8ewxeT1k9wwiGyHVo0sUtjVnG7D8e8421ov5TCm2kg3a2Jzt+6Oc59HyOy1FNS0uaSrWjggESMIIBDjAdBgNVHQ4EFgQUf89Xu5cdTN4gfMJ2P/Cv6Hx3swAwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTExMTkxMDIzMzhagQ8yMDIyMDUxODEwMjMzOFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAC1HMWC2knZxMj/RtkmRMgG+5iCve04Pv69avIHfdKLTzUDTPyEhtROjZ+IFUIK/RddtJ2KMyJbgprTZLMtOiOT18BEumkZB3L3VRyPa3PfLQ6DqoAgqvjep3tjyH9jP3Ibn2LWHKiLrAHmKl/IekWFfZcZ+gsmqRvRhUpi944X0rBD9i/Xe0T7BTS8CjCZBptIPY2/MRsvteAR/L6h/lm7S0CzofA/FnEtdD/hskVzIbgsJgSPWfUZsKLUwP7gsE71Xq89Q+BeZiUy10x1moTk/sWGnNVcGXwCobCfRnaOA6FUpBoayq3L1jvZST5l92+HhrfUOVTlbcJHOxHQe/2KIT0w1O8geLaPB8Fo8LzEX5h0PTrA/qnG7JqLE8PF/mHs1WKywDmbrx1UFwIfQknvLPdqcnHmFvvSf94BpbwN2Mk8E586krKu71rGMhZBHWmbQ+YVgA9lKt6vP+MnqSwj7RtEEfsyySGrLP9zoFa6RD7aLKBvwhnFuk3knOfdXo3h9TXJpMoLkG5BDK6mJ5zNU8+pYedDyea/QEpE4K7Ledo6RpYyTj47H46KPgyfGnb0YZT/LC3Kn99ejnf0hoHRL3zUt75BoEngLAR6g4BAyyrXoEcVpt8JtDTcAHCMMwMAD84FZBAVNcaCrPNkedX3eyBoN1bIwbGBeKhrgMrq7"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 8","notbefore":1637314180000,"notafter":1700386180000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+vHkPlOZP+DAP5kw5j4miyzrtTc5\nwM5vNkcNqWy4e8YHf4ZR1bEpQjRS+ksnCKfbEDf82p0RRzdtbQCdvSdsEg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIIRuunuryIv2MwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMTExOTEwMjk0MFoXDTIzMTExOTEwMjk0MFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgODBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPrx5D5TmT/gwD+ZMOY+Joss67U3OcDObzZHDalsuHvGB3+GUdWxKUI0UvpLJwin2xA3/NqdEUc3bW0Anb0nbBKjggESMIIBDjAdBgNVHQ4EFgQU+Wj2rLs9D5DTRelKDWzq59tIm9YwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTExMTkxMDI5NDBagQ8yMDIyMDUxODEwMjk0MFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAE+CfZcxHrwDJmXImxn7vMOlRw/Bvy2wv+SIWHE5HOMvHa0eAbbADPz87HhyoMMnC9vDKfeEjaa8qyiVTtAcAT0yBtJJaLITEMm+uGkIHFcA3LkzLVubqFhDGUs3bqRRqvBY0+tqdLKRvWLn80XC0KpHrtppUAhwhDYZ9LKcAeDC9Hz2Zh44J8MYyYlcrGrzNvoEWE80+IHfOXkztop0P1ruwa6zpyrElbJ2AJ/Cfd39MaYxxpB2lLRXKjm1IkqjjYmolKphoF66+NLKdz6Iirtdt3i47G34ASHvu77/GHSrSsb0qsxlcQI7hjhB0jU4WIQOPKBPpdiBH5lqQ78GLe2oFsNv0FFEn3sbnmcZOLaaDzUlgcP+TqAQq0mjXZIXmTzvEc9Oc7sO7LeZWH05b3kQdywL6xa0US9Q+fpz3olPi1DAos0hC2I5Th1veQqUQ/+7EVHWaicX3W/S/+TUMHBixNr8CA3kioFGu16fDUNdyuKlrmnitpjeiELG2Dn9dkqpKDDVHPy9NLPLBY2D4m+GFxfuficry7G499rDyEkeAWjmG5xzwIgzx4zSdGVDsmBLmNNkhIoBWpnjB5+7ff+lCj93yLMfGfU3+kuWjYHd6XiymcqQSjBwzR6pzb0k2q/AsRn6ovWKf0e2ZE/yVD9LLUmUJOXoVdIRB1rizuk3"},{"issuer":"CN = DGC Country Signing CA, OU = Public Service Development Agency, O = Ministry of Justice of Georgia, C = GE\nValidity","subject":"CN = DGC DS Signer 2, OU = LEPL Information Technologies Agency, O = \"Ministry of Internally Displaced Persons From the Occupied Territories, Labour, Health and Social Affairs of Georgia\", C = GE","notbefore":1635520088000,"notafter":1698595687000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OUh2s00z3fKc2NTrYN+8SQERWvy\n3gRdGsmjrGMZQ9nZPT3bYLYDuyuhpYfQ8CSOuU2bScmWN9xthX3T6V1T8g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDLTCCAtKgAwIBAgIUbq8e2Rnwzdt8bImI5KhdT7wvIZIwCgYIKoZIzj0EAwIwgYMxHzAdBgNVBAMMFkRHQyBDb3VudHJ5IFNpZ25pbmcgQ0ExKjAoBgNVBAsMIVB1YmxpYyBTZXJ2aWNlIERldmVsb3BtZW50IEFnZW5jeTEnMCUGA1UECgweTWluaXN0cnkgb2YgSnVzdGljZSBvZiBHZW9yZ2lhMQswCQYDVQQGEwJHRTAeFw0yMTEwMjkxNzA4MDhaFw0yMzEwMjkxNzA4MDdaMIHVMRgwFgYDVQQDDA9ER0MgRFMgU2lnbmVyIDIxLTArBgNVBAsMJExFUEwgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIEFnZW5jeTF9MHsGA1UECgx0TWluaXN0cnkgb2YgSW50ZXJuYWxseSBEaXNwbGFjZWQgUGVyc29ucyBGcm9tIHRoZSBPY2N1cGllZCBUZXJyaXRvcmllcywgTGFib3VyLCBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzIG9mIEdlb3JnaWExCzAJBgNVBAYTAkdFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OUh2s00z3fKc2NTrYN+8SQERWvy3gRdGsmjrGMZQ9nZPT3bYLYDuyuhpYfQ8CSOuU2bScmWN9xthX3T6V1T8qOBzzCBzDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGdNMng/by4nCNGrYeB79TXd3c2wMDAGA1UdJQQpMCcGCysGAQQBjjePZQEDBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5jcmEuZ2UvZGdjY291bnRyeXNpZ25pbmdjYS5jcmwwHQYDVR0OBBYEFBlRrQE2MFW1c+X7ZPuq50qEp6YDMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNJADBGAiEAiDjXwDLMCbYtUOhS3p6HIN1aZdJg2x+q7QlFldqYoBkCIQDsv+uGlrWi8ZAjn1QsyqsU6HKc3a2oD+bTsg0UA/ZboQ=="}],"lastUpdatedTs":1637694000329} \ No newline at end of file +{ + "certs": [ + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_007", + "notbefore": 1646866800000, + "notafter": 1710025200000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXJGIIZHZOHRSV3CdXUpGpZ9660BB\n+15fkJgO8Rk8H+TlqeSYvBIfeRK+hVpc9GzUcFiKiPU0jbXZ0rorqNyxfg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEIDCCAgigAwIBAgIUetGukHDBgpqpT82eXBBZwkWqlCEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMwOTIzMDAwMFoXDTI0MDMwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXJGIIZHZOHRSV3CdXUpGpZ9660BB+15fkJgO8Rk8H+TlqeSYvBIfeRK+hVpc9GzUcFiKiPU0jbXZ0rorqNyxfqOB4DCB3TAdBgNVHQ4EFgQU9yU3/1u14+b8LpUG5bc2f7rCXJswHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQAPO0+DbQ5zIkFbECIN+SGoH7m/1j6HgDFAze4go1Idf5U3n8ua3wFwf9Tj2knGigSHSkBgFK7UKIlkFz4aotljp4/ZU4iKGuTn0oo6XT7eEi/KQlNHZHkxtSO9TQCRHw0KigXG5pA8cqSWcC9coYr57+4t82F67WNHoi2x6seN+sgIZxZiLuBNMjoibwnT5leJKLAwClYOtCpoFSzAZf7cTeZVmCymHaoeHx56ftOdXBUoMjBTMFRQEP598lauU2W1FZOwucbOSIsk3lpAhhG+akzEJJdBqo7nS7XrFRlxinvV7shia90RkGBdyNIo4zU8glgiDSIvZQQbvOuFcMZPxxANdaD5UMLEXb0cW1ypGW+r9s/bUwRghQT4vDNHoy7WqBSPgybuJT+WbbGnzeKtQeSnJU0sBCG7KT4mZbsWNGY4m02JC4MZz/DD5aRx9izz5bw1Tm1U61yE+VivWRYzacWWgTOrdUcZx7zArV7x38Biihw/dyUaps8HxvoP6MWBJOvAv5aKIbyvBOxcjh+3oZjMvKk6L+EUlSli76c0S7gCEjN3SMLgPbgR272xYoomNZYapYKwKq9fu+vL5PgoWWEhfQDO7BYGfJryV+N1I4sBoOqh1a5wsp6FEij+vi1grNiNpTKXqpaN5UKOLK3pb+LFOPETXm9kqepI+PyVdA==", + "kid": "+cDVEVtFWME=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_026", + "notbefore": 1639522800000, + "notafter": 1702594800000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuGGqMuc3NK3Y9fI82qbrWAiNKKKK\nYm6nLpibiL+DBRILW2+5cFXZ19HLfbKwtAxyVOsv2N6x2VS8zklYStHGEg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGzCCAgOgAwIBAgIUftzSPzs3lKyxin4HzGAPSInAlHwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLhhqjLnNzSt2PXyPNqm61gIjSiiimJupy6Ym4i/gwUSC1tvuXBV2dfRy32ysLQMclTrL9jesdlUvM5JWErRxhKjgeAwgd0wHQYDVR0OBBYEFJRMukUQrFVGUPhjzucJOPTIs0uEMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAsalnKHPbwm0FnkhrFHCfZt79nvNRML5k/gPI0Ab70inRKqqTETv/T+l0xtSBNbU5cOu2SdymWqaYZDiDdfKhmw1MBJsieP/+Q7yIAHt/RYlhOwMoPcxsTHtrSpW9kRYH77OYX6Ou9davXN7Pd4sv0Itl33FYxoXhHv1lPA2IEf19zCxgqeStforkAqm3jD6tlEc+gfCUnKsqJetIdAeKVYt5qcz/hmCFnl+GgSVswG9SqogySJD1F9Uesvi0k1laWphmU5IkxHymJqy7W57FgayiIrG1cUtuVcPaCxZ9eNWYoM03p6NdVcSr7qkGuglzkgtzxk5ncruJ2+NRUeUEBlwTtzI5QIcW1w0lnOXbLrvx40VyhJhY3ixZcd3+TiHhMxohPTA5ECg35u3q5/xBA0XF9nyiJ66Zr0WUy722QlGzOQyChGLeE/yHsBahNEq1Kc3L4IrqZu/TB54qM6xYKMllli7CCyzYH6NzMYJeHrrjNyeakX0riniPpKvuW08mwReqsuZ8uS05JoR93z5eSxJewvdUlirrBQPZEjA6f/+3fkMT21JJp4nuGDJQSwYXWTlxOI8jwzi0k887yNFIeTgu6PVRqzOGQF7JR/n0VbwKASOAvOnvG8nNWhAhdYyzDfQ71KAcDkx+rRu0mgmdtgbEUA//B++J5sZjHUlb8Ig=", + "kid": "0oCvyNKB210=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_027", + "notbefore": 1642201200000, + "notafter": 1705273200000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF+/sS02b7zIFGgBu4UwddBeosNhu\n+zvARa+ySKeK2Rd2AJxx1lnnUgfkD0MHlO72kUEwhYdqfRZ7gSgFEgdEkQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGzCCAgOgAwIBAgIUeVVanArVip2h9V4zfLC4CgjqA/MwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDExNDIzMDAwMFoXDTI0MDExNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBfv7EtNm+8yBRoAbuFMHXQXqLDYbvs7wEWvskinitkXdgCccdZZ51IH5A9DB5Tu9pFBMIWHan0We4EoBRIHRJGjgeAwgd0wHQYDVR0OBBYEFPSGVTQu85GTEXtAynAWYMIEdyb0MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAFl1G9mpI4FDpwyx7oXu1bY3IXUrUslXJo0Bmv3ayqQ1jCVXOqz0ZemN5lOIVwUMDynZLngsHmKz+fTR8K3CI6PaSxeDy0Rw/CsyWQgt1CWUR6q296z1DaPMsDGfO7dKDqKTGgoge3K4IPCjtQixVYgylfo6kxBHutIWAIgFV+cXxx+fn3K828SMoS7DkvKtAkvEQAXGGk6pbP3EdAtUJbDSbOufxS0W45a34C6tKiDAOJiXlCZjhtNHyTxSXDDmiyoabxxICNLmKJ5IMEe45pOwwZC5uPr9q0Qc72+jVsF9VeutV/ybocLY8Mi9GRJFKP5HQ/yQY5aYTstbV2V9pSDP8bVgdkzYSbmEVTgJ6W6Io1B9OFrbkeeOQzwugumUDjV4aA7NM4kX1Hh0WRtGnrVqo0Lfy0Rbj10goEb6BidecOUMq9iBuD7OsGIBqCO/p77xBC4TPt2rdaO2hDddFt0KLzesFgNrHJzMRH67MUHTDUaPVq0s3vu18XurOerivE5d7EJWboGelIWLNGkhOV0rza+4slR56wqve4I/A+Qhf7FwPZofZuPk8JvE3gxXQyktH1wzWGYBUUFYIbScJbHMb0hTecaPye0gGcKtQ1Y2VR7JA5NldYZ3cRMcdH4WNqYfu7qKl0NeQ1hqp1+pL7iWsOLG24zr0Yi8/Mm/xE5k=", + "kid": "14QQ1b6JFLk=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_20", + "notbefore": 1632261600000, + "notafter": 1695333600000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmRk7MSZQCX2u4UIQgVzma1JEo3yA\nSVafls/5nw/V9T6e5EbsK64MM0KhsPH9aK/aElRt1+Rxtd1AsHVvsQJjKw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGTCCAgGgAwIBAgIUFpv5DkvJU5K1vn/H2/M9MQneJrYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkyMTIyMDAwMFoXDTIzMDkyMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjAwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASZGTsxJlAJfa7hQhCBXOZrUkSjfIBJVp+Wz/mfD9X1Pp7kRuwrrgwzQqGw8f1or9oSVG3X5HG13UCwdW+xAmMro4HgMIHdMB0GA1UdDgQWBBTb/Lh313Pu4DiRm9Z5SS83yZeXmDAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAAY2cWLc8Ce7zLl6vxt0kWgpTibXFhgx/Que5ExTAJOpsl6K64MpJCofzPfO7MzxYRtIL+Lj1l1avGKNr8BNpA/+A8KeJQsocJc6RfOMVPt+2Cmpr8DTDeIjNzsmZtXMaRtgDjGV1qMTtCaThdGgzC5KfgL0OylkXDnFyMDRVDCxVxJUC4aMolQmnCVyyqD2bHBm9Oj4+x1UFrx1E3q/1FbQsy/Rji14kS+84c35qAuTkp05kqzxoZZswLQY/bYXJtU6u1SDwo/Geirre9nhm8Ck4Zr+8ARIh31oVyK615s+13A6p2Iux7T00aODsfRHZKh60o7+FcjeQJ3LbNdwBEHN0qc8aPsT5h61ZuAOnpmit80wVR+btu1d8e7Hq2u8AChmIGDcxjwHs7ygfbRDEmSM56ZhQ/a9PGDvri+jnuN3GW2TUajlXogrdMmvVsQN3nssR1E3nxBltyOS6EP88uMdr/ajAOjOT02ISmkaUWfTmrwEJGHeezOPiJGVvqp2Z0UOiwCivGB/PU03cAcu/ms0EXIKZ2qFosrZeJgTfZy2LMFKgQbj5b4iLDWormO2RCGvM3QMfmYd1XwTISCvSlDyEgT2hBRgYnLJ9ipPD8ngRmQXoX+nYbIDi23R/5vlU3qNw1cFAyGamNAsUNgPeRGaqIzB8eEON03DROAKulU4", + "kid": "26Fcjnjuf2s=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_006", + "notbefore": 1639090800000, + "notafter": 1702162800000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ua6q+h0NvU1yqdisTbi7nRqu9xp\nX4qBSU1boIc6PWIbY4EKPTSQlxT7hhJwYBR37PZZX8JdOBh1ZqUjG9j87w==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEIDCCAgigAwIBAgIUMhJIBrZi2FAUhLPwN7JzstvhMsUwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIwOTIzMDAwMFoXDTIzMTIwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ua6q+h0NvU1yqdisTbi7nRqu9xpX4qBSU1boIc6PWIbY4EKPTSQlxT7hhJwYBR37PZZX8JdOBh1ZqUjG9j876OB4DCB3TAdBgNVHQ4EFgQU+eeSlsYWARhP/uY/e3iyCsunMAcwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCac75HtV6gRBG2AQXz0YcprJTZAZW+VZOHh+JBmIXkBEUzjmRtsTe0/SqOhs7M4ln5WpqsT6ET/TZYoGTUy6oocjqy38MtZMV4W9sGSSdR/ltfVLkgyofPrdNg/XzNGEF+jZ9xWNCQqBHaxBzXaPhUa/p9B1Amof3ksyl2ChdcOu73QyOQ9qcFxBr0U1DJ2K6ZDIbiMdu/f7xWN355HJNfGFaKioe5wkrRJOxiu0sfn1yH3hCS4ge5iJtLvux4GVF5m02bRYtIe32+FrjQAg3pH2ayyDJ2V38P6cIi9lIdoGdoQuA+As8m+Nsl4pfXmeKqaSF0grlPVlhTh9BW6+N6ktybw1srgfR+TLKvTrQ5nvbEWtDmVddhNGauwSB1YHA2YK+nzlDS9o8091vKuFFSCCUeNWyZPHzw569izxAy+Pu3MrXiuiPISfneQIikl3EoVowS1vyWpnYWkFfrUpgT231Y4IIu5w7tHeD/ieEU0tq8UQUamMshiPFpXJqZMzeaxBqaAoTDRYmOGPoyGiKN99Bz83BFchpgaZgtMQFH+X0XvEsLr9KYDD+svyfuZZLqmIPCxq3ejF2O1YGoe9HfGh+LWqlw6n4usqBhix8QUznUSkkQwM4NrCDbQUOSyOtMXGwbLFiGmrlg41RMiJ+txZkCtSmsc2iHq6YHnKNU0w==", + "kid": "2YrkPPOntQQ=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_015", + "notbefore": 1628805600000, + "notafter": 1691877600000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC\n2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwIw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGjCCAgKgAwIBAgIUc4Z21skZZ8Xy07UbGOonQJh/3uYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxMjIyMDAwMFoXDTIzMDgxMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwI6OB4DCB3TAdBgNVHQ4EFgQU8CPvYMvFZX51QjwEsL6RmVrYhCgwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCfhMpfpfaBZQLkBuT1XZJWVfMy/UxqunIhPyjjJejxCnYupYB5LoyUKeuI16+StNTxGNHML7S73SWywDSgFwP0ttoLK1fiGVKtOBfxcvPP6RiuhbgkdXlUboXW3azVLUB0y4ZxnFsp3ZupaTBCpBQNAaC30tEAx0ZEZvOBl3MGRHqfR6SdUc+aMj0bibqm29J8hOZAe051JwGNF+y7O0pLdDkmAg3rdBsHaTNvA6AcyRRV9Wm8vB6bf20JXm3mvVtgdyidUgSTTMJ2BOqvGzDsJma5q7vh4nFZxPDRGp9Ny1WU8MzGUIUilv/UJKDexfqyQdzBOF8jHXCY/gHGXrOQH7MZ6ApdG07+RY8R4AxZ51OJyGQw/KPFdU6XLSaDtyTXptGxl2JPIaik1TtNNR3/pAdDVp67tik7En8QICqEdv+OqzBbxVrFRHmW7bSeiX8aSuk52ypHTAR6MkstVNxd5J0mzPxBqQVWa2LDy4vGkFn+qQ2/tsVpdJJLQwfcix4rEP1kazm6nWqTyyoDEU1MM9i5y/Dv/GkAwMeXPqf9Uy2z/QWyja+me06DI42hf8eLN36uHcMS10MT2/ei2w4i3UULge0NyN2+wmjR6xKJHEu9P+LXci1jik33FbwGZKXVb1uI7Y/iU+NIBOPgHQfEvBuKDDvHC+vh3r9sraXeCA==", + "kid": "2Yv0kajsIlA=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSCO_FR_0004", + "notbefore": 1641942000000, + "notafter": 1705014000000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV9ZwrSsN3vr0WUaDkS4UzyPLz/2y\n4hm7yEnCOaAidrjZlVlIjQZkhDeNLYOLKcaGnEBQxBQNpCgLTJWTRnopPw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEHDCCAgSgAwIBAgIUaGRg9ynElihMD05ckXc84WVL8f4wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDExMTIzMDAwMFoXDTI0MDExMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARX1nCtKw3e+vRZRoORLhTPI8vP/bLiGbvIScI5oCJ2uNmVWUiNBmSEN40tg4spxoacQFDEFA2kKAtMlZNGeik/o4HgMIHdMB0GA1UdDgQWBBR1DNHWK9PsTyKp+5wxalsj5t9ECzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIxN06gTwfxHWcwBQw+tPhWqNv/caBLzM8Jh+DyOQWyanukoaU+4hsQm6Ouws79tCdGVPnDUgwxG8xM3YGOh5CxbhbsSfzihNmwUBS2F7LgBrK9PXaMOh6EX5+CMeMOMWPlc9c/OiHdqqr7yWPv9NEGHIUrsoYk6+PXNmUo1Q8smzWpLzyNdtdsCVyager9w/5hA0ZMBj7idZFAqDVWBVtUCtHH6QqW+NJ3Ukp+vqo+7RupVrXda3hkT6f/icnOxygH+UXRUwzqKeni7hLDDU1xfjd8kg1sa7zVRp4j8defmvrq2sZlFA3kyLKyDS5bk/97gejBI2W9efho5pM4Ky5jDuT/zoAwbepPuvB6cMo5evTmMivQoqO9k9NAqwe0Ou7YGhojAHIbnK/SoGWlKPAAwNzD+tSIVg7EBV3HWCMWsUu0CN7yDOLjatnbupT3crwEVa9M3E6Aw3c17KK3YqLyXJWOSAiR+8ZTE290atJT/4e+njj1+foFJdiAcQ+yG8qiLjGDYXxxbTU6B8XH2KXlikmeEZW1sNsafpg67jG8QPPfauZHtcSnbIJwk3Vni41IQcoytkc+b5ixpHkmXkbFgDR2aF5GwH5uF6Q1DBJdTiT3UpDsj1ZqGRrOKdj58OALAhRi/fibUXVJkJcwTPyXF95dT3N2LxIuEsvb2ilwA", + "kid": "2uMhJx5tEEU=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_22", + "notbefore": 1635894000000, + "notafter": 1698966000000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ws8GOmbxIZm3jIeG2vN3jsMTvjN\nuC40InFfPoXbMRVFjhOBjro3792wiunoFYiG7TZsgCEi/+IOCUsxa5+H/g==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGTCCAgGgAwIBAgIUHZbL5MhK3RIo99XEV0xY6jiBrQkwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwMjIzMDAwMFoXDTIzMTEwMjIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT7CzwY6ZvEhmbeMh4ba83eOwxO+M24LjQicV8+hdsxFUWOE4GOujfv3bCK6egViIbtNmyAISL/4g4JSzFrn4f+o4HgMIHdMB0GA1UdDgQWBBQtDNVIN839gYsiXOJR5IAF+tqWvzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAJdRrpKYXb0KAu7BXEq/45XlLSt4+UB4MamR5d9uZuVL+KkKHy9jiDJ2ydKSoCDJnZZtKdYG8hqqCFKUj/WqkTJGysZo7rWmeHT4/AZPSHsLGtaYtqKVPJOie4nyywdmMt07fJIcqVdGtmHqM9/dhEXVWWJqtDWC1cZ3HdS4Xf8LgPORm2iusGIKO7hJuBn9Z4dtqKlY2VzHY0jlqdFdOFVychusOQyZWdliJ/FsERDj3jj4TEk30w0Pk+V1Th6MogVmiVcv0QnxKG71Nck06JcYLkes6zgmdcY0vapUfmLGHECgMkYwuAR/tB06xAZPVPU9mq653ezbElwXPXNM6qc6TaCEnkUpjrLsjy/vD2naq+PtkZRlrKH+HxV8ZAEbAsg3WDAPG/9xVrWtp8FjmXhq3F6I/LGp3TCh8/q/9UmfDDNldidA95QcsAMJZUjEJNr8JXuegt3aBWUbpz8EbfyHVVS8Bzh9H8s9z/mwXT8X63y85YUzlMGshKdqI/7lESJUunA2U3pIZHixGJMK3MelZeqEBqxd22h7/gmNI9LrK3MBEtBQtnis+YBTyaR4BbDHDOur3eQA7Fy/FoIl5LUHPmbjqD+tJUuojg9+E6jGz18BeJYLtnPHNNF02XtfASwg2WO1+eujIQiyp+6e/xLUv8qxzEUQDi885fvHv//V", + "kid": "3aGO1ni4qKA=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_023", + "notbefore": 1634248800000, + "notafter": 1697320800000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgu/WJBn1Q+RCOfQx3NLT5oIGUCHs\nqSRXuu7EZsqfqZN5PvHk6/E++88wvj2fMrfmAptk5tVld2xBH4P4tRs8JQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGzCCAgOgAwIBAgIUbjokPqcsK9BPa9UdWexJeyEqilowDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTAxNDIyMDAwMFoXDTIzMTAxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABILv1iQZ9UPkQjn0MdzS0+aCBlAh7KkkV7ruxGbKn6mTeT7x5OvxPvvPML49nzK35gKbZObVZXdsQR+D+LUbPCWjgeAwgd0wHQYDVR0OBBYEFFmAYyEK7sVvsDvIY+w6fmNz2BT4MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEApMhsApIqDdjtJiC6mOsvI8L9Uwf+gw/dv06vVIwTQ7y+4AgtfZ2HTWeqW7IlXvNYs0m44U4VyL43pnoV167rwBOAMGTrYqT+83Hl5adOtl5ui0RxVHzNdUPiVPL2dV/OgZQKq/TFjm8wuJOxhjGIx2CFVKX2PpcbHAZ/IawdJjhOsisBZpfYuBpKFV8hBj9/SF/EwCrbswB81IrOjNEl9MkG6JrYarO/uztKHv9OIFy5SC6BaKkO4OItM2xx4H1w2cl7Cqt32n94WLxP0HLeAKqUA8/7Ttoa98x04iLElhkg8Fd+aL6Foi1mWlWBRlgHz7iHxZ7zYDmi8NksxnKECSwBm4FpP2Guz7CWY/tsREyGvrzZ2DjYFtNtIOHW15xr7aTPRJ0yD0DYtmZ6l9aYlFVGUgNWypUuNOe3BJh25X2re7nIwSvUWZeAnUFbJ+2YYt9xQfjgSll/DByUG/SfT6EqstPWlbVFVLljs6azzxQyozRB8JYPVG1Kny8WSl3YokIDLVofulJqYpi+ac2DDFCA1L6Mtnfw/go7Rq7uiorduqZi3FL8vKwy0M6S3ckP06pWjpJdOyKaLk1cbHJR4fuzY+PrhvDkKmSSlEzsWCIKe6B//ErN64MJ5xJxc6HnP2KvXV4hf7XbFsNat5ETxb3VdQhVDyHzgbqSpVo9BIM=", + "kid": "53FOjX/4aJs=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_029", + "notbefore": 1647298800000, + "notafter": 1710457200000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvPje+J0NfHHDSd2eilS/vlPfvFyg\n2GqaQe5uDcfbRNwXV51JZqQ9bno+FOnw+AFrLd9aOvsqWkvH6ogsKHk26g==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGzCCAgOgAwIBAgIUV/o7xkGXd5ZK2x7x5++zZSO6I/0wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMxNDIzMDAwMFoXDTI0MDMxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyOTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLz43vidDXxxw0ndnopUv75T37xcoNhqmkHubg3H20TcF1edSWakPW56PhTp8PgBay3fWjr7KlpLx+qILCh5NuqjgeAwgd0wHQYDVR0OBBYEFNNslXmB1flUg6kCQdJEDjP5T+rhMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAYRbsqQL82TwM6rQ75T0D/ZDzIHz2VP5rGoUBUGMvoqXYBFVZT5DbpjHjmb438xzeMFFUe64JRm5vkvyliwZrDK1WJD9W2A12mzIXx5DDakYh4JUkRUQSmpFynP3zrpr+P0hOZmDjC/UPUbSVRkFAwa8OieTSppv1GkNXTyDK/nZC/5+z0tzSWcg+xnR5ryKSov+oelpM4lGfSbOjJOXlEe/Vum7jt8dOkbCMyXCxKM/GGtOCVFmEUwieDe6vXmxRbkQHWyPclYB+RsNTct7vD+V04mXaO2M/EPdp7uN6r/4gI3e1UiJgQzh6Fntp9pDe9nkAQRjaotmokiakWGILMcJNMjKXTcWGtGECR2jIHCvvH7j/HSZxEQe6TXddnnMzLovH72RFnNQ2ZarK2hXcc+o+Rh8sGDlyZddTTJYzVm5lxQr1BtEMT8eNfc2Xd2VxaFaAp7abyKX0TaY8/WKkab+VgFgGoTf72LV6mUyWSSvm3U6578RCPgf21RVfIuE5J42Aq1eeYkkw0jCF9cVSq1ZQ7oLZzyk/qPI+LXcwgh02eaEwgZaimDb6GTXvNGLiG/UPVMXlVYdLTGBWr4BaIgk+pFwzx+4Zmwj85hHBSNObw6SJBETnK2K8nuD65IzfIevB1j+Mv28l5oBD714/o2ctSVcBYmxwFp0CzjG16Zg=", + "kid": "5IJmAxfUwrM=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_008", + "notbefore": 1646866800000, + "notafter": 1710025200000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFe6+khPXHMXLN/gLpWJi9cmNmalZ\nJ/H9Ko5t6+W1F6dPaUYnTpV/RyCBxWd9vpgjSKHLD66FjsxMjp/3Q8U+kA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEIDCCAgigAwIBAgIUGIV11m6B5igxihjlFKRkwVNsOAIwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMwOTIzMDAwMFoXDTI0MDMwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFe6+khPXHMXLN/gLpWJi9cmNmalZJ/H9Ko5t6+W1F6dPaUYnTpV/RyCBxWd9vpgjSKHLD66FjsxMjp/3Q8U+kKOB4DCB3TAdBgNVHQ4EFgQUGwpsSQJaSChkXvDR4rLovd0XxwwwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCGunJPiKmLdtXndGJEMy7bUnhBJogJBDdY4QoYUL9cVGwBVeVzRyoKh1LHAYC1OLzPb8kyP51GVZvZtbJlMhh40x2bDoyA+pidQUQBPs9pSun8//evz2n2TWsTDZ6vSeNgdEtLZsVFSnVKTLgjpm4IJDS2T/sr3OlGZMMryqeVx8GDpxVysZY0rRZ953mLHHTh4NVi2TOr1gHogKDpLCk0yIR8ac1gtdIGSxNtJtUf6gfoly+sLtRR84cQWqZNiFrYkxrPPV7mKD5cvWcqYl7oq//5YMUHI9Roi/9L9fwUEGKh/XWe4GrZIV6CRmmjGYwN/aKoDrOviPzmcmY07yMzuk10U4j5QGHJ9B9ePgvGkRMp3mR+5h3G03zr/PuiIhmiufhdomAMmd6tl0G7oAl8a4apugBN5DluJ42EJpkK9rHIIEi+2+ZvkNIYquyoYcCam3/FgHQuuedxaZR4b36m4t7sY2zmWjjnchZHCv66FgJEVYIWJm0wz/HmWBv847ErUunoKLEopY5cHrqfuii+A4HzO0U9+vYZw6DA2RwuVq8Ya5VdDlbZRva1OqzzDB4rXWgFwPZulwfqMxclrRHej3M7m44ynNW+7fpS44ADFyvLN6k4cS4kDQzfuL9bRcSiR9+UpCQGDxtOx6RF5/kyCwBfshXpinmayXrXCH4oNA==", + "kid": "696cpdD4YGw=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_031", + "notbefore": 1652565600000, + "notafter": 1715724000000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsdkkXqwhvUOcRao3EMIcLnDwZNiB\n87ofJwLuwqzIlQhOOZ7ndf8f/flfzxzogN7OgekiNNMpPGjOy58MZQ7Kpw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGzCCAgOgAwIBAgIUWplIUjX5w9eTfcPRQLG1AUcIeI0wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDUxNDIyMDAwMFoXDTI0MDUxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLHZJF6sIb1DnEWqNxDCHC5w8GTYgfO6HycC7sKsyJUITjme53X/H/35X88c6IDezoHpIjTTKTxozsufDGUOyqejgeAwgd0wHQYDVR0OBBYEFJ27qMfQU5fnLnX4wi76bSxJ6QboMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAlzY0s3UVOuyqTJGhyBVb3cfkrD4Hyqy0QSrB2shuv5JjGudzjSuGqurDp09Ozyg97+PuNm9F6JqxiZbz+IhmzZX2yyYwBEOKv8KnN57DEIY65qOLn1o6yJEJpNWVhCjqW5MnhND7CGxcvTGF3FHeEB5OfxnSZaC5aDkNauMoI8pUddONpYwrtHiaIsxsYce/k7w3RctO+8ZcYJ/BE1Urc/rpmcV1FWpBC6FzFG1rbu1vXMkfPmKLXFCPZv9Pzu5u9/et2h8TFWS7DyMnWiSBcuJiF635CccYfzlQLeBBeGKFR00IqTOiSVQZPccB6PC7/g6Vlm9ZSrYQwBwraQIXIYRwMpIkOifn4bT3xNLlGp6b0k9xj12HKYR4MSg9GZHj8ctFCqHiajdjG6s5azH7wOAEyvzA047/RSjNyoX5hcLZE+6SIfDjZPDY8ZVE2IF1LBj1TW1mHWOeXnYD2ss3nC6nUXYByEekN+6pn62zlzwv+BnNPCZa+MqUJMvfRa7IC2qCF6VIB4KHhWH8Ev/3JiimdmmnqS9xgb7Go+r8h3iXbmR/wjucS5tuDJSkkEJDG+5VcEzKdxrIrmbTLIlDf84gpcaH2EYFn2a5VsYyybGndNl0Q7qICVJGax3CPZe1gQaVNqhtEDLbfh0iXttV5F+UdxrO2rQ/AH+fOrV0Q0Q=", + "kid": "768E5xdq4Eg=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_016", + "notbefore": 1630620000000, + "notafter": 1693692000000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTC\nmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFDw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGjCCAgKgAwIBAgIURQaZ+EBTL+Y6w52qaQUNZ8YBNs8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkwMjIyMDAwMFoXDTIzMDkwMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTCmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFD6OB4DCB3TAdBgNVHQ4EFgQU7OG+JgHJZf/maDGo2iSgWdFzl7EwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCVWdsW/zEmkJ4uRQVoYTxdDHlmS+mbDvEGv3em3wtFVWX/0FZKRRxHZba4wElR7DjEv4A/d6sYPn/9Mp5PhBDS/lofFzUMNYAumH4uls+MT6a9ezZFCtcATKj9pP2hMySfSn2rfQzOR9yXS6I/GcruzehqedBmzxc5uKjbSeyLA7sgsgl/JB2DW5G4tIqjxIY8KytMTkrrlJYaG/vPokpS2ajUNZisBbLHJAGLx4XKnjlLviTBSp3iAsoCh/FFHJxtQJ2pFvmgRmVaQUKpTaAuHH5pPmw4Q8rgXq+qX0vFaPe6LaUCpJkEguY5lxGtHqZGoqoVaKG3/LX9qkuzyJ5ijI//e+Uzah/zCBmW4kK9HLHUVWNyOD9fbVhWHJfXKkNJ0dH5JV3bKD2G/MvM81R5Q41F9PUjOXYoCrDnY2tmBPuXisR4mCulrWyM6Bj0/r8CkMkwMNcr7AoTEfXpa8MxJANVWFARG76IYiQtn8M1dtBxmy+bf4/+n/k6S6Z4w31tTl0YsNWQ6TnlHS2PQ+UiV1zchJcZ5RW2YwlWjLRhJHOzrcv2m1jRIsqPASvRLJjeAs+77ZDyBmBFA3piutllZj5SBDCLzStyIplruJWHhCnhGj90b+fGQUPAhj8XxhRuCnRtXBwWED8hC6dQh8QaiKB7sTrlU9L/8wn5mCGnuQ==", + "kid": "AX/m4PDDCXE=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_21", + "notbefore": 1634076000000, + "notafter": 1697148000000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2KIu7zh4VbMsB2Y8H2VRojkDFFA8\nhQwDsYjuAuxqIvqqx0Rjjv0+teHsdtIwdXW5f3BrIp5D5WXbPechk9nR9w==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGTCCAgGgAwIBAgIUaC1i8U4Vp9O89KqNCGnoL/BxXpUwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTAxMjIyMDAwMFoXDTIzMTAxMjIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATYoi7vOHhVsywHZjwfZVGiOQMUUDyFDAOxiO4C7Goi+qrHRGOO/T614ex20jB1dbl/cGsinkPlZds95yGT2dH3o4HgMIHdMB0GA1UdDgQWBBQbSJqpNjLhe5I8/Jl9l7JWE78a0TAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBABSg7TvfutJ43UXAOblrRH4vATAYUUHb542Pnqr87+7IVl68HtYLeBI8kuDgbo+E4D/vLiWJFq7V+9pUQnLvqbIlgESQP2saVFb1DRVzBk6UdAZ98kAfrND5Aom7VPGoZE9UpRBWYJtH+E9vXR/6zr3ikIbLSghS9S23R6PqEp+KD9bd2DUv2URn2VsAncTIwOovN3sCVfbiI7sByCyqzoCOpK+lK4GbTRUDnrnS4thexvi/T+pMmJ7jYUtz83tD+rp6PO5L6Ps8JVhYDNYRyUqrxSNcU6mfKikE6I118eeHCHwCTh4TXsE9wTwJ0oZwzo0RlZo54GuJ3XTH9zJZv4rOm8BZwVFXXKcPR/MKmRTBTK0lsvCb/yFSJjW9h7EOBZCJB6tmrsXEaZJSzSepge4hT3+qO4S2VgeruUpeoZy+X7ytWsMAWL8NMWBxVba9pkwM8zTKluw2dFIaMm3+p26rXyw0Ahg7jDFGyPyCjlORrepgMuqhG1nwg5+INYhqDNx6MOY+paAkHCjacmvDlcx780SrcztES4D5h7tMWH5rpHGQdAmr0Ga8klWp6QaJs+E+RvlfjTCx/jqYHaC1MGjxiUQikOEbcxZH6m+crrtcyMH3Jps1pqCDOYHVgsqOIyqkqdmtLxfdvGzPUn0hKIMC43gkyPX9O5CphGmwJEaR", + "kid": "Cj0KwOpRFvQ=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_013", + "notbefore": 1625176800000, + "notafter": 1688248800000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6\n/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGjCCAgKgAwIBAgIUdvwPgIGxxk3GeLBFSk0RuKP1NnEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcwMTIyMDAwMFoXDTIzMDcwMTIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuKOB4DCB3TAdBgNVHQ4EFgQUK/s/lmhAfvZK1RyuXxMIhJ7oTm4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCwoySNQghvF3QSu/6RtHg1XDV/4eNFFPwl+qmZn1AfODHAfVS42hjsmMLeDOLv0JUg3Xdx8debts/8/ljys1XMy1tODB9y06ZrQ1X1GxtutC4cSacBYWsy06qyI/vn1Q6vwKkNHADNJP2GNxQUlolkXkdgS7q+2tWCxcK8lQE4t2TrrNUi5UN8tlagLkbuGYqnzHnGdZ8AN6NskBhq8j0mcDHxhZ32yBg/+ZmLGdnCqRuZ9fjrH6B3k/n7fHhDG5UPnk+m+LReCRN9Zud4lGzLn3HSS1dqB5V3k3lsszmQKEi9haFljxImcU2aJ+IRepO6T/kXh+bn5ei64sEro3fad70eAOg9C4hkD3krsHMpYdM3TBF704dahPbuusRFqDCD9XrLpYP4e6UD+EdjOg/aqG4i5DEdk9cFJtv+5gp8ExtqUXkIk56jjmShQFwfNgA5SWa6lFWniQCYPxb978BMIqOamOL/6BwnyaazQWFm2Qyl4AzlWot1CrOt3r+aK/i0m1nE028dju2xa3BTKEsxjCAXJ7eOldXkezBPFVGpfrdWssqnbzaWVXtVIfZ/CNMmEk9/cqgS+A6lrZlC5Og28ziRrkQatnL2SIbBXmcJ729H1SHRfAVKu+yXDzHV2fcwcoFBgZUf1g/IS/ImzU4A4sJImfDAvaFY3mcQslcm4Q==", + "kid": "CvmI4xOoMj4=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_025", + "notbefore": 1623708000000, + "notafter": 1686780000000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEGSSdtJPZeYWU3QrR2cR4M2Cv6sY\nKuY870qkBKKREtlSel4Cxpfm8EnPZ+OPVVDXxArWdYR0MoLK6Ox9aEIkmw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGzCCAgOgAwIBAgIUEE5lEugsksKBZO8ZFddktB2zEZgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBBkknbST2XmFlN0K0dnEeDNgr+rGCrmPO9KpASikRLZUnpeAsaX5vBJz2fjj1VQ18QK1nWEdDKCyujsfWhCJJujgeAwgd0wHQYDVR0OBBYEFHo8gi1E3sTHBnZB1uyUzxdv5GyzMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAM2QCIIa2/qraMLp/+N3JR3gBVI+zSFird5rWdWPWptnVq+E2MEPwJhz3a288axhZPetnm2vxRHtrzI8OS0tcl0qoDhHmMQAPzYHth6xGoGx9+jfLFMoynA1hcRmILtiitPoOT8SYe9K+ln3sia2xn52Rysy1xLTQZquBmczVAdxAS3B+h2nNw7V0b9ukamul6w9Fp7ifg25pT6mTt5sXD89hTSqTf/fhiTCjRTrBTJuVA9VgKrWUiZHI/vIwKRHoqUvMDDW3RK/QoAqfQWzztKV9yRCpBhv5focv50owbyu1VYpnT0gnl20UZsLwEXt6TusJFvGoiySFCLLanU6gyoHcXudNem8YEosOzxFSR1wvKJws8JJjuaQweQBtu/XRlwti73KZjwltHsehHC3nFsl3VwMf97A2cmre2ueEUcjRFvElh2PfpIIL17Srpu/mvu3hSVHndsUoFVZnZUWz8rVQL0M394Ik9ZBaZXVrIZud1FfuDQzbVKjRTO9mOIv9WZ784MAON+g0p0xKvJ2MZmwe+ZF4FvxRP2fCC9vlMk3As4bccS3IUKsrupIFXar1THfGPL8obpn6ktjVJ4dCT+y2w5JHGtxclhIjdqG5w/PrMPjeGrq8wlALwGjKMTF6gOZ+BtfjNCaG8h8lpt+oKeML7GP/Fe5Adjcovc0DBY8=", + "kid": "G3jDFQ1oK0Q=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_020", + "notbefore": 1626300000000, + "notafter": 1689372000000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECmvd9b56sHucHEi7GBjqapZy6IAZ\n4MFIFg7Acr85jXp/oBSNzFBP9CnkswLR5vwmr836uS9JL5sddzLT4K4+5A==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGzCCAgOgAwIBAgIUY7ZCHR/KM3Pu7zkxGX7a6r2xWT8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcxNDIyMDAwMFoXDTIzMDcxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABApr3fW+erB7nBxIuxgY6mqWcuiAGeDBSBYOwHK/OY16f6AUjcxQT/Qp5LMC0eb8Jq/N+rkvSS+bHXcy0+CuPuSjgeAwgd0wHQYDVR0OBBYEFGaKMaCARFztgSv4jjRlAu75x3ILMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEADKs8pzrmE48ZExyNbGa8kV7CjJjCfWGTOEfzxaA6X7gL0kaHVnvPeNq4yQh6CZl0mwrEmdxvuXKRefU+nCg/prbn6CAwC2irDHU5hS48Qvya7JwqNTMOU66phFs3FDuXOpUvm/fe+w6Vy9M0IqbKu7kEWizZ923G5YjrcUgnTuF9xZ0pOd2HjYh9efNOmbeda0JmJEQKxi5+WAGjOTqidDXfh/G+2jB/Ja67kyoZSeMHBEz7IyJ8hBrUWRWV5oEzIRQdMlZ2xPD9S9nS00T09gkl2nhx+U7nTqRPQa+qKMiejQA27+EwDgszkl5hUMTeqB5xA21l2SqBqz4W+v3WBy0ziDNS9Qa5HC1+lZp/7R+33pfGZMOC9iw2+yyC+SC8cFwUB/iuwZ+0096LV0wZshB74ZjU//sUNJIL5/ZWaNGohnIorJ8nbzMFm2rPfU66dOanfQ03IkrtIlbxH2IOAuBsC7Fk1OH6DDMoOJRia7OSAOv1UT696M7R4MtKyWhCiiNajxT2jSJbvpVj5YmS83G7cfbsYHu8x7VGxrwMXyyeyhKPh8D9xXCYdRrkAo5hhd9ETLRI4QeJHPQvw7UOL3Upog+fZmaXBeEetGl1Y8PQG2JHjY0BUGclNvvBApH6jEMWiOMUMjnR+mE8FC2LB5GJScjq1MLjaDqYpj5f2jI=", + "kid": "IMgNr10pfPQ=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_24", + "notbefore": 1639522800000, + "notafter": 1702594800000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEv9oPMoRAqA3JV2+cNikqVChE7Y8W\nxGrVkEm5PV1bFndPkVXnRgpdgznH2H/x/3IcOdv6edXz4iorfKud7oJoYg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGTCCAgGgAwIBAgIUcMofBDuZv7du/lkGLSBUaCPoRdQwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS/2g8yhECoDclXb5w2KSpUKETtjxbEatWQSbk9XVsWd0+RVedGCl2DOcfYf/H/chw52/p51fPiKit8q53ugmhio4HgMIHdMB0GA1UdDgQWBBRRA97mCPpiiEm0TRCs24gbDkkU3jAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIrIAYlDdyvTTVinMgb6JUX15O3zMMieoVig1T58oCLVQFAdMvJAWvi9SKVe7FdIeDLVUDuBtEc8P51rI4Da3Ln+2eNvcO3HMyq/1IFH5llBH3mNIlynTny1G02qYVGAmWvaKNIKeS50Q5c38qBQFLvabIOB2RTVJLAZ1sbRhRnossB+MEmLpn19/UFl23TQqzBgAzRILCmuuSwyoJmLq/jAMAtvOtx32awLv1tRWpdDK0hM7/Nl30ysNEgc8AXhHNpgVS5SmMC41WQWXgMB8ZiP1t6h+nKPmLHRDKnM5H+ukg1Lob5bTdMUibmC64b6yl/PISPqHCojnJRTz/kKXf+E1zn+ybkoYE+608a8RO+4EY7vEsuvGTqTBtJ4m7qDkYLMfXMTQoCg0GbAal7sa7aJVA/vdno3gDGWisu/EzCi0X6C6Gu3nxJuwEp+Il1kD2nIySSfQzBgUoZ4KUHUbvYlvRJBYQKijUItaJkThvUfFE+C+TUH0aqdWBl33zEDilXiaJEYTIyVtRRmPMF/EMK44DGc0DF4tlxeexeXrAXQcG8PmxRVfysxv9JN+53ubchR1SZ4fuPiRFtCliKz8luUmpVKBtbtvPPyxSWacRR2Anfy2KCVQ95eLFJUdMpp7qSTGvcIJKtuoNMKW1eZrvISldQDejMcoFXz+QgtCv08", + "kid": "LkrphwJykEw=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_25", + "notbefore": 1630447200000, + "notafter": 1693519200000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEB5mLr8niSSWcqZ3EbDPjFseikZTP\n0rPRJPDW1+hvblECWjmEOsWEiXQ87RUStArNabZ9JMysQccgbb5IJ7bbOw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGTCCAgGgAwIBAgIUPXRtjcQUp7b28v0vmppxnIFeWH4wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgzMTIyMDAwMFoXDTIzMDgzMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQHmYuvyeJJJZypncRsM+MWx6KRlM/Ss9Ek8NbX6G9uUQJaOYQ6xYSJdDztFRK0Cs1ptn0kzKxBxyBtvkgntts7o4HgMIHdMB0GA1UdDgQWBBS8BY4cl2GX44Dn1QTF8A1NVL8unjAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAE7zd0O/XHFUy06u2iTzp11wD8QZiGVEL9SPpI/fB1cdqZKL012FyiiN/wljpgo6b+p9SFvAY2nfod4Rs+by+PXgEdsVkuoU3QWCl0JKDqu/4RPLX350rufJWHSHBIocgBCUjvsgfcpJa2ureQ9iY9e0PVyRqEtTZzlcJWzZQwVYGxEcUnaC7pgmwS9awJ0r52GrnWNIpekSFvJcMsbT+gsfUeQU32lXENVdgsUxfX5VJZ2ooyw7bOzPJYInUwIMs1msLQOhl4scLKZtopaRztSNrQCkN5Y5C8OjEimkCq4ed7yznYhRBI/nN/1ORuniYS6jAilF0R8QBYdZOumjFozYWt6HIOuABikGvec4dp/5xqPhTTKrjygU+UMEl9bV9XtdPdHdbJUP9wV8gV90Fs5mUUlzbZjkfOr6wLxPMR1Acq5t3usakHLLFSSKHmoCwhCiiGGeYRPSjdcryxHW19zfSyHiKOaWlV/Ex99VjgWMZqV/JAl9fdjx4F58d03gp9iQY2+zm2WQnrVTUPrkEYdLoqcVtn4nZbJJnFlPVi2H9LcDN+LkJroXFx/eQQ4BVBQgIQ9pWjPUF6ay8TIpE1/PWhf+EBVet0FA4QqR/gypJI+cNDfgYUTA/2zJ5QpGDQSrUdH+8nBCx5RgtE4/OZBj83edTfcbC5+GPFXC88xZ", + "kid": "M+R7JFFk6G8=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_19", + "notbefore": 1630447200000, + "notafter": 1693519200000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERSQZ3mIam9saggM/z1bCW2+wGPWF\n6yNJN7qrsTLHntxEu2JpPJRPP866gJVIsHmIMqU/Kg/BnQ1bb6icYxpcTg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGTCCAgGgAwIBAgIUF0n80rrBMJH3PxQUQLM+vM20uCgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgzMTIyMDAwMFoXDTIzMDgzMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMTkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARFJBneYhqb2xqCAz/PVsJbb7AY9YXrI0k3uquxMsee3ES7Ymk8lE8/zrqAlUiweYgypT8qD8GdDVtvqJxjGlxOo4HgMIHdMB0GA1UdDgQWBBQZBTK8TIaJS4alif7cZXMDRas7UzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAEqB7XsEFQ1yVxI4+qUO1wYS3j5CY32bvzlbL5TfH04VsS1UJvMnzU1gR5m90bncj4z+sqe4m0cHygP5VncDt/Hjfat4FBu7EfxIlBYTF08iBVClMxbnA64ak9XXibT6QlGDNGnLPK6FaadJosV8pkVUYKhgkIaR/5bz8CzOR1pECkQnpeAjZddHM21YfbGDlawwnMbjLJx6Zi2//RLLlCwmE8lv1VfAyG5fvJOcrx/9QgrIyLO9BmPwMBgxK9BXBv7fePFpYktbmhgpf7oLbUdmREbfweVNodmB7VjN4FiidTbL+m4EFsi0Su/l0YgXdcKCRZgS0OZn3lqR+KuYAsNxw6EbGAub8FuXrw+5BQ+WJ2ECxMN8fmi1yWMj5Lr2oHV3K30m15HTcRWuWZw1gYnfNf0z1NNPUK8LeyMDqJoPG/Oc55zrd+BkCecHQEbaa6sj1cdKwYabXOjCgTLVBxXV0XwHoB2qLjyXVjGoRHO1dwAEgnozfaUWB01Sh9Fe+xuSfHAS8cNaIBCMBCKktly7Rs+8bDTf8SNSuPlWqiXi5DY8a5UEEjj/iVFxmS8jheF4EQAA9j+WEFNyEn6szw5FH0zJO/nYhBS6y24l6aGanes3KcOL53tz1H+pGw58HDiWVhUpTDLWCFk+JGbTu92nRVxA0axLsimfhPR0lVLA", + "kid": "MJuQDybecd4=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_032", + "notbefore": 1639522800000, + "notafter": 1702594800000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqqevv+I14Er0ap62pyJsNnWkipxM\nuuogVRR94OSi2ZgIe6ejB5/8Xnw7URRJkYfEaixM6nz6Y6h9xHT4rQOXcg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGzCCAgOgAwIBAgIUAsAQyVk0S89PuVooonmdBhY5tSMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKqnr7/iNeBK9GqetqcibDZ1pIqcTLrqIFUUfeDkotmYCHunowef/F58O1EUSZGHxGosTOp8+mOofcR0+K0Dl3KjgeAwgd0wHQYDVR0OBBYEFNsZf6xdKlAdeMErziNj3zg4kqzNMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAmHRGMyQKn86+JFT66yII52aBFp5199r13R+pMhCpTPdibTDItLAdehLwyZBCW88PpdCu5fUzVZOSbBQJt3ocTQY07AO4E/4bdW/A9vXYCvL2eKgRuu9pgyDeWFFDh5u9us7SMW1WSGC8TBGoQTizjeP6gQ/iznZG19TG9+G5FtoCobzGm/kMGtyX9s988LijLRAc2UBa4mk1E1MLkXGOnbzVHoIhxeFVWgXwBzCwCoO5ta2jF8e2AQggj+6uJCHnoeHwOS9JTxBanFag9LIilMZnFrZ1dyEYQtBzZUf3gfzNziNdYwv8oGbye3qFCS3YAwO/QCBGLAuzMiN6iJTL7+ivw06lpkwbCnREMRcNuBd8nSzzh/AJODVK0Zbm7elKitAfOl9xJ552kSCIpw3DRljsAvidhjP8ylgTKsfVhwb2bK9HEHSgo/MRc3ImWlYun1IipPwAfhp4uQfqcP0T8FLFfSBCK9sLN3F1jby5dcURpfYSi5BQvIgbgiiHpnxjueOStAGoof7ebmfFaehRnc7KoGlCfkAFrbBgRrLMsRbYv2xl47TOh+xPAjdbiZylD3wlzKD0ZDGpAfq6P0ovYoTZGRzzalw4Fuo5RW+S7SlDQCsdkNEKgAmFpGVnLed3YKhmLKJFmljlZXdeZVjul8KshpP6//HW3ceY5GXvXv4=", + "kid": "Of6ltPMXuJo=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_024", + "notbefore": 1636930800000, + "notafter": 1700002800000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7B4Il+aYBZk8hs1MI28H4Z4GF2HZ\nCXgX/DSTxvUoCMVze4xp449WJLblSCKXreGdiT0Mycgevo4rWYVGbwtUxg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGzCCAgOgAwIBAgIUQGT66i1j72Yd+CXVZxgaJFhLGKcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTExNDIzMDAwMFoXDTIzMTExNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOweCJfmmAWZPIbNTCNvB+GeBhdh2Ql4F/w0k8b1KAjFc3uMaeOPViS25Ugil63hnYk9DMnIHr6OK1mFRm8LVMajgeAwgd0wHQYDVR0OBBYEFOkihiD6srcZ+6gH9LiQNVc6QwQ8MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAg1Vrsxtjk49QaxQ/LWFLC1WmRTNO/8XeLyASVHjPZXWfvrl9ft+SlKqlhIom7sYbxiYF5+g0qRjwBWMVqfFkYPpJkeuri2awLQo9Hr8oiPNVSHpFi3zjr4gMLEv2buQ6LUbvAT2U6eOW17AiNhT/3XzND8tILs++7JKU675p46YtKNguJhJVPEO+9cMdBdeJUM8d0RRV40AlkY/ThVI6BzqxmiD6jAka4bWJFztR8xkBs3RBxcumGXPIJIpC8cJ9dqnnsBdLJfDlWLfvpn9k03QIU9/XObnw3wLGwFWnxdr6sQMNxJCMpk3U2tT6og6DGylD4OQbGQvqFzm1x+5X11DQIdhQhBbbz+ymVBhVjVTm6D5JsEHYOcXi00aIs5zuDs0AYJhWZW/eimBgkRy2WE/6eH49pBSl80OmNAcxboqZHQS1jmLqZ9yptJ3pbSOXZS1ABgsGOYXCyHTPy5OQA5zHIt+zakgyvcFJm4YcIOD9gKzrpyiB7qJLbzliTHcimuIoMfKfzMi82K2rsFZ18glgRnm0/G1I8Cgnol2qXjkJTJq3BgI46+aA2ad8sMWB+3L7J9dj/nQJrNaZcYZ5IMhyHxeZRxpo9brURgzt9J/Qj2hF5gv2ovJXo+FgjMiLusVpsi3HKcYyUS36dKj+f4ty0kPdUklcdx52ogQ7K44=", + "kid": "Qe8D6lfZ5/Y=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_030", + "notbefore": 1649973600000, + "notafter": 1713132000000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzuWkpSJGbVsp+E2UNf389FyOI+S1\noE2U48ZdgllNRQo5KJ9TCmLL+U+eRVmId9es+oj3BS/rWfQR1fKhs6TznA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGzCCAgOgAwIBAgIUAj1HEBf1NelaSBuczWgaH5Ch36UwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDQxNDIyMDAwMFoXDTI0MDQxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABM7lpKUiRm1bKfhNlDX9/PRcjiPktaBNlOPGXYJZTUUKOSifUwpiy/lPnkVZiHfXrPqI9wUv61n0EdXyobOk85yjgeAwgd0wHQYDVR0OBBYEFA6IIFDXpLz5r7sQnjnVOJ0MgUafMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAUeglZ3THwmpehcaD5UTX7ZRYeq7cpC0+jkir+N8Y09cA2S39ZF2DZBbE1UaVNDfLCICb4TkW9vHk+YEBjkykz4tSH0tkGUX2acNX3inHIDykff4mkRqwjYRInylc/MD9wrUwtIOslp0gW6CcJta6SMw9wcjaG4/tv5SddMvWUDs5UZyylY8Q4O0rpbxAcQ/wkF1R4S4XZ5KFD7nodJz3ig7b1dF08X47pOYjBmcNBePNq4nf3IS6x63LhWmDfpVc4+75NKwelBrLTErnVhd9EorlUWPHYvhfjalFanUxQmQdlJpcVhAh/BZEyGKb38ECMoHWzat66SDBVHGrM23uliXxDM6sC06ulab/6HWr5DjzUcgwx7UJU5lvGP1Et1b1MJNNd3D1Do7QoWwphwT81BUr5wB9CJSG+iOjRfv9pT85iYcNfpqtit//3H23Duw3K2EwSPGvxpQqSZlwxDCLhLfm49doBeVItCU1qDlncH3ky/D2XgV6ENCMZaQTcyWHeKOzbTMuwINsfc7VfgygaVySmGQjfyNukvx6ywI7Tg4H20gogMStLaj+yPPnsul4N+EOBHsSKCenfwlaTe141+nfKB9eUA1kSApybWY7E4pflmTaDmuHEBYb2sz8nq2lD3DkdiFYe60v45ZOsYwzACyM5L7j3Vu1/my6EQBb074=", + "kid": "UcuKeuV1sys=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSCO_FR_0003", + "notbefore": 1640127600000, + "notafter": 1703199600000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkDtFRuH55y0i+agPf50duCfKbdQl\nqeZWlNSQGiNCmHQ2uwU3uz9F1/PrzwwI9HiXQQRNiHdSDBpf/iBkFR+B1A==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEHDCCAgSgAwIBAgIUQkSt3NEP7eZXRRnAVGA0zskx+JEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIyMTIzMDAwMFoXDTIzMTIyMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASQO0VG4fnnLSL5qA9/nR24J8pt1CWp5laU1JAaI0KYdDa7BTe7P0XX8+vPDAj0eJdBBE2Id1IMGl/+IGQVH4HUo4HgMIHdMB0GA1UdDgQWBBRM5vCkGmWh+WbL/93iZ9SHcFFJ7TAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAHBYP+J01kD3SOJHli5VwmVFRYBLv73mJOlS8SdRO9IWs7KLTSiMAM/izNYp9gIFkgVsNepmJmrccKu5jJUaEZhkjXbhvhnFZQuI0cvMcstZF0iNIFN2vukr2ssIKeFlmVNXkqjTNCawvpzV1IKrwpqGMthe33N67AtkvmLT+Z8Cf2900b8Pgq4kZj1dUekMtz/RwNnf9nOu3Sr1H0pQ845YcUr01DsFsMFyDd/EEmI3OGBHzvvEAA15Kk4fwTCLY7AIy9Z/cAIzy2pvlMoJpPDQF10/JIV0IFPd/nLtNiulU3eeFrzWzXsaw7mIXLfDaattYmP9zc00YSvgcUvOJc4Y0ZF3XWIrPoMYJMNFJic+AjVf6uOHARVb5TN5GDdjtmzzL7dTRl+2mNRXpuOkgWJA4/S8DVPiGZ8N0zbXLltLAnoKW1j+3/sPxX4Zpgz+kSY7Qa2BrAwvj03jOXBGNxiMPFv5ilLCwqSQudA6STA6VlPvuKwpiUZOZ4nVSMJ8cRyKmac4KKb+vi/O3HsGGbLYA3WiqRs9oI3IO45S7S0kHdLLlXOGsQtQWxbVxRxm1WbaOrqk++xxCIKm4PziwY9BgElDi63LHbPt+zksEOCqcneD3viBlNLoYXOpvap834c3oL8pxynSxLp2UXygiz8EUjZPyVLYHNIZwKvf3yps", + "kid": "UnanmcgtfUA=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_005", + "notbefore": 1639090800000, + "notafter": 1702162800000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgA/VBlwh3BT6L02+aBkegInc4i0O\n+dpqxTnWaR4lFtdAQZih8DMwQnHTE+FMYh+3ELno/d3jUOtr2KRfMiwcgw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEIDCCAgigAwIBAgIUEn7EY32bIQI6cjr9LsydaBRkYLgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIwOTIzMDAwMFoXDTIzMTIwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgA/VBlwh3BT6L02+aBkegInc4i0O+dpqxTnWaR4lFtdAQZih8DMwQnHTE+FMYh+3ELno/d3jUOtr2KRfMiwcg6OB4DCB3TAdBgNVHQ4EFgQUmoAU9xV+MEtzaiWTfIByf3qqNNwwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQC6G6FD54QaC3FBbQog8erXva9jokzjpUynW4DPLMyWQxOS1PlgfeakHADREVs0Q2erL3P1+VRxSzk11Rzss2lztKGU6r3G0EvLWeXT8C6FjWKv+Ej7tzjsWo47JC5cqffYOcDJWx/sAaBNW/OuTiG0SVSVjI2p3VTSPmuC1oZQEKvtqOkCgD4/MClxmVijOF0p344xh/l1ggmoqFZPupyG/lR4Ixx60IVUoe7HYLJrjGX3XxWVb+3CMVqIBUmZNajvxuDigdtMq9gArwymWK6k9yqmlroQ05XWt9gI93uLNJLnZmHrMOvXLa8lp6XgxUmDOYjvFhIWCCh1PO+nxfb3TlxKb1f1E0AmylVt2s3+/7af1RAj702f5aEscUtK+3OwAc6AfUo5x1HsZR9KCm4ZVdHLwTA01UWePGMSmuUTsaJUGo1PY+soNm26XcjFvU2SMHodTPb5Mj87ghAyiMbyb3KdNneJoQ4jfXz26jeN3yo4Yw+fYd881UukDwq6sG4PoxHHWGrkLqoZoKYznegkmAyLwZE2Z4llH/JQ8WWOm6uo1AqovXzMpAYA15o6P9OWFnXv+db+L26naLjWnuOYsiTqfrc8lcdzEpKqKdTMMfPLmhHcL3DCYJi+K373AvXj55vzCkWUr6gM74xttGtsnmuIcXsfc6tLw6QWlJv6LA==", + "kid": "V2i/L/Yb0Mo=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_017", + "notbefore": 1632434400000, + "notafter": 1695506400000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/\nMCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGjCCAgKgAwIBAgIUGxW97yNy30SefumeNAP3zZwINLMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkyMzIyMDAwMFoXDTIzMDkyMzIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/MCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxaOB4DCB3TAdBgNVHQ4EFgQU65Kf02Ri58/6NMKPr33J+Wz8lrYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCAD7IAnsIa2VrGdmp7kv5Tj49lhY4FgzphvUB8YcPGPy+EtrAGi+uU1hKT/nbGeB82f92nj12iQUF57gwRSalGAUvlkz4c22L9dt5pla7u54TI08GPOmR5wUs8zixYaZDjAdNr+WbfgbDzqifwlhrjIMbKwCfW22187hxcrQgD4gVc927EyruFmJxxSDNJ33NxFkZ0uXS5TMN9gWLuI+xhcosLeW9SlwscLI9WNqBigzln/nLAHYzBpS+lprHVOa+jJzktlJbATB40BCz9jpGcCDgkUTCNZ5z3pOHas2rVm2aBLcHVttVbps+ynYwyWtSI2jr9oN6GzdyS6JZykxvqGoZO3odhxe61ioVhjyhH+e9mQIvpM7qJ2/mxUFp3ND252wmnGW9FuzbFamH/SGD6LipPVyXK4oW2nxYcN7Fjdc1w/5rHXz3sYfIGORfrumSeRnfIdXglfsQi+T19cA/kwbuGagjGHntN2bnZP/FDvs07PgixNAi357BAAuwpHKMHiwXSjTW4smx4+agRVIlGZ4zuEQXLPpFSwW0ktPeLdr4DRtfL8cRav5Qs5TrG02c3lJP/PQAnpXpbGBImjAmBsat+0m7nuBU7Ix3F/A5HBkSlSHUgvw9Ze3PZUxw5igsMm0eEcd6h3hhxV8HZcS40I53y9l63gr9j1Mas7BfceQ==", + "kid": "Xo78qgBEx8k=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_014", + "notbefore": 1626991200000, + "notafter": 1690063200000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZ\nmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGjCCAgKgAwIBAgIULSQWphYP//zk1JQmpv94dIH6cmQwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcyMjIyMDAwMFoXDTIzMDcyMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHqOB4DCB3TAdBgNVHQ4EFgQUZprkhn12tER7SWBEtD8mPNDNmK8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBCJgkoi4nyqPEXv8VCIXzO47sLWS4GOrT4eQ9NjEBuXqkCVWwMiQ+0PPiNi23QWx67ZK6DYUQJUOHAV8VRKZRK6G+UHRWX76hk00+hmW5qL7YT4+Z8RsXj8TA/DbUTXwEeSSinfQYefLoC8J9G7vTYmS4su0CaG0wr0qsSOMKZCM/sh0DUCNtZTpzTspDj/i2TPhTNhthyG2QWFKnTdQruEyT3XC1disruo/H0tohKOAmZhqXocdKFTl6Ycbn21A2Pm/xJRh+W/T19bFF97Z+i5T7CfS4Zrf0VQm4ZNrUv96gwye532d0QQ/6JZCTT7aL9fjEnEzkQdtdYPE0051HI9gRKmW6k++hWFiokhcarvWAsNkN4B4MIzTufRm92hCbzFh5IvsHYaaAUsfEMDsrhFSkuZ1swzimP2AQ38R1O0Brb2pls3sF7SAc3j5LA/bXZNhMJ9iBroc1SV7YC6Vv1DZOHTumSLw2fvwDt358sEicsCgdpzpm4gKTOf62rzqGiNpKWBbZW2mJvuv6WNV5C0/aW7r1nfuJ9+qSd2SUrZUFceE4vpxM2ccgsodHnspbSo7jKTeJ7l14rQn9XvoZY3E+YFcdbJQQeY0nABB83acJw1PVKfVsyt9D3DLwWXEcUcwUGioxVwiHR01VyrB2FBKurrXYEx0PglSI/NZBL/w==", + "kid": "YDAy+yvD5lU=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_018", + "notbefore": 1623362400000, + "notafter": 1686434400000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjH\nz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINRw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGjCCAgKgAwIBAgIUW6BjdX2GIko8Yv84sS428c3DH6swDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjHz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINR6OB4DCB3TAdBgNVHQ4EFgQU0ONM/OVD0tP9BuSIGmIZRrPdEnEwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQA7FyRe/36WDJi/2FU5cpnrV8dXpZUHEGzHRZ6vaZIP02S8EdlcDO39+amGmv7HrQbcLAh7tmPhpii7DylowyjvnjBFc8cJtn+ScbMQ34I0yokOvtFJvyfSBOlK5udIyFrDjdsfqr2BNx982X4dK0UYQfGCufppflZOfaqv4Y8A5lBTRXAlXPJBSZ/GMvFAN5mesGhnPD0nFNnpOHGfXG5DkNE3gBRYUyswIY2d7vdhCNiCH82fSW4mzPs/oMQaI3Hw8IiAgUwwpMqXBHs0Fxn8d4WxrpGj07r2WjIOVNk1JV1OHKvHfuVPS1roZ9pNNUkoKHf1h46f1nWczUM5jmVy0Xvvw+ZhvSelRwC7PQ74BUoPgbYzsNP0SvGOnhJQrhOYk3GSIf9EaQxklqVT8WREoCDNxfRmNYdCJzQXr/GZ/Eg1+6RPvYuQWgsB3SYgdVQz/pCRHCZvEjU8vUL2lwW4wgWlw+Q7OrXrpW1JOxl98zRRSpWxRrlE24crzTJ31hM7n8WFSsF1ZNnOoAhy0nRxdeOkpDcEVyoxauuPGHUCNIMmvvPG5psrO417HLJGHf3oLkKadSBK/Nn9u0YCCa9ypN6LRJ9slwxITAsKTrYttjEgNAisYVLojtHcCkAr5JfqL93rFYI9BYS2x/k2QGTlKM9LoUUpzaYDz16rddiaSQ==", + "kid": "YVpBYnLh1Hs=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSCO_FR_0001", + "notbefore": 1636498800000, + "notafter": 1699570800000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoeh3CrNm35gaheVMze+v7L5DLRvJ\nSyz2yimQlMPUwNJ95g/0wI7VdYnuZqALEnMFgf2MxB0y14PKwDTdmsFBzw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEHDCCAgSgAwIBAgIUJFYOxQLyE+KpwY0ONOh2K3kEyYwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwOTIzMDAwMFoXDTIzMTEwOTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASh6HcKs2bfmBqF5UzN76/svkMtG8lLLPbKKZCUw9TA0n3mD/TAjtV1ie5moAsScwWB/YzEHTLXg8rANN2awUHPo4HgMIHdMB0GA1UdDgQWBBSvVt3VTF438kOOMNhDVxezJ9kiDjAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAFtVxRCvoRCgLbiHwE/j8odxsgT3vt9isAZPtkfH0/Zd+iPdfsnPyXL2v/TKu47IBXm3kurH1UY4ovq0N2yJmOkSS5Z+zflBCOtaRY/R4q5HbK9XDe500OTARIl2w0SVQXQPaQ4sLuiW6KyZEi5rzc5L9Hylm5Gu5aYoozM/rRanoe5CgJ1gCBPkkwW9gDqKictz3g3+92gOBdMckylYV+WpUmgHyQRaBaEGJAicDsI8ZntEiBtEbckKNtz6O0ctYR+GxFj55b66n0BPXE3vqV+kT4gz6vOUFcZOdP4KVW0bdCPNAolE44yK2M0ktC9skVvBhxiZXDuZM9Zk/MAaSfq9uO5C52bhF+LYP9T2Lgp8Au65JE7if671AZ9qs17Nz9ZQg4ialE2k2L4CE4FEWkeuF1MhyGlSD8ripcluctPTB6Elvo3ffBPcgZnSwirswGlc26cFwHciUyPe1odNexgtzLFS8EGgkt8kPCXzrAtpuVD0YGg6dYMHNs1fLcDAyZNJbI/stsJ3yX2As6z+9JHzWAwiLCZtgFs6lWQ+7IyRperWftWOoT+3lwCK+ul2IMzmG7KadVFJ2Un0sAseM1LNKEzRaa4avqIZwAJkRUBN4us0l6sKzYeeZ24u4uNiYFKeWHV54McVxQBT9VNekxL5cvo7ap9p06nzfjiTYuV5", + "kid": "Yb1a+1WV/1Y=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSCO_FR_0002", + "notbefore": 1638313200000, + "notafter": 1701385200000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuFC53glgMbuEwfdH97ghieGzGlgx\nMInMhVzw4VX9NYrIuf/M6vnEofMFUuH6LIwSBQeT2ZpgonJ35a+vQllmrA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEHDCCAgSgAwIBAgIUBMl2JoBkz+RWi5SWbpnyalMO3VgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEzMDIzMDAwMFoXDTIzMTEzMDIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4ULneCWAxu4TB90f3uCGJ4bMaWDEwicyFXPDhVf01isi5/8zq+cSh8wVS4fosjBIFB5PZmmCicnflr69CWWaso4HgMIHdMB0GA1UdDgQWBBSDC2InnziqUQroYRTeKdlO3DLQvzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAA/VLMVc8tiJgpKRZAJ9kZIWVgjDcCJT166RSzuSfF92dQy6Z9F4GdFoh1Je76gY2f9fkQ6sYuJDO6FTzstUbKDI1qzGrfKFeFHpZziXSz1Oa+fZUAa9GjOdsIyLDjszoRBLGB0A9p43VK2cGI3GBb3bu0WMLBcPmxm2jG8WpIK+w5+xpoDkv7jjIwFVnVvepgvleB6vmFMqR7GinJMp6pejtEYSstc/0InPor4TZsjzPftXgzlioapgPYmGVTQSVer6zGITALQCBWYnUJFd5YXPD/I6jttwzV4b+3t0OXMPOitBRpLe7Uc3VCTff4ERj3O0EkyYkUwS8+5c/Y7RrM+UN53FaAodfBRW6yT4VZ+YJ4+Lzr5CHsVz1yaeYwLKlUtqRkLBvUBwZciyKhtRuWG5hKSKSE3Nby/4OViIOpUgR0pZEUoAbGTXWEuAFGem1RGsMtsSU4lluqPUCgQ6N1aTdcb5pQZ334kEYdPrd8sYusZgxEo7FrJ0V4gEiWtQRdZDKNNB/dHOquE7zqUCnZmCIiBQuxsK/Bpux382DqaR/4YktRXpY9EAnUeqA/+33gL4C3kUUJAgSWXCuGsxCN40DZlT3pI/xSBbIEx1JsZp4LHJLSbiLa0J9kGe/+2o8NvEbjuz8NGr+fi9zoE99vaUkz5eKt06npXdi5GPjRL0", + "kid": "ZsDoB5l3ETw=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_001", + "notbefore": 1623362400000, + "notafter": 1686434400000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjR\nkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEIDCCAgigAwIBAgIUbNtFh5SyNNW36Tj3lSGsVZ1yzJkwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjRkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCqOB4DCB3TAdBgNVHQ4EFgQUkqfVrNfmsMs1UB/NA0C3KVEx3O4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQAhOMLYhWn1iV43jduVRRivgVT1jYwHmouj7nff+S7gVnxiIlX52jc/VmQDl6xOZjBHUBiRTRqjan1tdH1LvBfg1HoZWv3HaC5HbfkMu0nqItE5zbFwtJGsUpHRTSP/wrjqL83o5akkR8Uw/iIYhkLvuEKH3/ZqwZYRwOJ/NyXJnKgRuHvgsL0zbwf5X2EdbqaTtDDGHHCbg68o8CqkQ/guBP0jKHXBFWgboMQB2bruquGqVO2xKIZIU2E3sc3dhNbDYGD3KfgJbdFtnbISvxaIfnCn3anZtQgonSsHc0LWIpgobY+NxXSNfBKzICdI350hhmnHz2NS2VtrF0Xa59kZd/WMPcOzlfKi6aVI/Y+LcpujeO9ujlFGNU6aMxi2s9RWy31tjWxsOmr/sbEKF25YGuTWwvqe/MgXzpbTF0C1lVcARXaBVT8Q18nNbLLK/VLAtzjLYTblFM4zdXA5ZnfCqXDqZZathkyyf8aY/svDELxROVm72F9GnYC/OqnGeCOed+Iscp8ne8HUTgT0iNFiAR1pRz25v047QFE7G7jwo4YTA+ynwCxnVaoK3pkyfIiXstyPxMpu3Q7t90br/mAPDCWDHFpvxqvPcRlMpd3p5JcjiurGreGbivgPdJYGRPbWb/Kwp/99ACqZFA8FaGL7aP+ivAO6cBv6DNF2XXvoww==", + "kid": "e+bFdywyJQE=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSCO_FR_BK01", + "notbefore": 1636498800000, + "notafter": 1699570800000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEw85KMUnYZdEdDYh5hyBfVFCJEUz4\nbhbItd92P5Mn3sXQMHRJ4gCSJlNHMDaehYzYHQQNun1trn9fyQ89jUVHVQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEHDCCAgSgAwIBAgIUIHkOe/e5NZZz8nE/r3Qh1delIC8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwOTIzMDAwMFoXDTIzMTEwOTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSX0JLMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATDzkoxSdhl0R0NiHmHIF9UUIkRTPhuFsi133Y/kyfexdAwdEniAJImU0cwNp6FjNgdBA26fW2uf1/JDz2NRUdVo4HgMIHdMB0GA1UdDgQWBBSo6rsZAC0hV0TGvuC8k6tflOShaTAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAHg8WLw8DxxxXFp6XXypXncQyGA4HFmZSMLJKPU01rmjqpLeR+5/gAbRj0OVhQYo0B3kHNUNlA24I2i6Zzx7zKjODdCWaKsZYfBeOttVVETMs+s0X7a2V/9P/uCj8tkYOOxCnKyv7TiWn1rfaHZxJS5Wqooy5IyerATOhueiL9ixorMAqWC5oaqactyL2psTuQWRjYBNtiNJgyjAXxUo7jITJWE+gGJkXwzBU9x1EcFnCoR5eiHHRdjQWiATLEgqcbWrYymgyj6D8o1QHXS2cOWlXxVpb4a1ghXFKRbN8yblgHSB2UE6ipBS/xqcbtycHpwy1Vpja9VG0WR/K4U10zqq0XHXHQl+RMPeKQcYI0qtPKH3yDBGM+rXNiaTnmRHASx5p1fYS//7SK22xIBto2qOO2HoIoNHkI6iYJFPk9g6JP2FBaH0PzaWaX4Qz5Z/TOZ4hfKEOv+0+ZOcIKvguT+DownHQjr2EjsOKB0l0npRtbk9HtRwh0TV1Rv88Fe/ea6rkKobRXBT+9EHKkWYGNgaMrbzNg4JqYOHywAivq/XmvTPwkVpdpplp7/sFYs18U08qL15r9lF5ztwzGYrgEobsdmOYcunVbIBVJ9G+miTc08ezKZga7Wr67l0L2FizmdbWepidnz1E26n49l5PXmkA6hCTjWmjwGd0X1MHlid", + "kid": "eOvGe2r9RbA=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_002", + "notbefore": 1623362400000, + "notafter": 1686434400000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g14\n4vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4g==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEIDCCAgigAwIBAgIUQporYv8Mt3ziR1r6G4s54HzRVpcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g144vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4qOB4DCB3TAdBgNVHQ4EFgQUxhlqVg/2EyJWoDdVGkyJrsY4CXkwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCbA+2eQnPJWMmh2eIH1gMJhggl5GSmOBFKeXyC4jeYQSDRY97/rsDWRXAYtE4DgZQO1cZcwsM4ybbZ+khmb0iCeO/0oiKIux8FU14B7zFksZFxZpbUSAJGD9lE1xRFnfUIyoPL3lza7lWqZ8lSfLuoqoN4mODkGpPYwWu/GC8sR3ynDt2jhrdBcLnos3k47+4ZRypwDnv9FRU4/9fEnl3Y4iK+hUtq83tI5offQETsXIq+VMmcw6zmeUTaMcHRnnMo4WknrSHbe9x1MOwQmADn7ZjYzMooI4TyM/dzo1IOH8iovgMbJP7zxWqp8zgtqZPpDtp500V9yCBjGCQWgRofrBhUojKj4BkGslCZaHHkRqp0A7WOIejCpCYwNRhom3Hu8oClJ0fGcIEIrdybYISYemClnbSlM+tXt9vATf7oMRZgXSGR/9HrY95naG5U7/+eHRgm3qHAJbbbTDHET7ba+Wiq9rnYScChSH/bMN2yLsuBcpVozokcX6k2l69KVzAsVtKCjPS/ISBWHDiEaVx++RyPB5YfbVX7ykJ4SaWX1ED6DLeszCdcLNb57i1Xu35kb1SGh+CUeALUEqBtJUcEheLixnTxJIHG2xq59a560SsZBdMf8r/qYTz9DqEgBXPSlNeHn5aIG/2u0bLrM3Q9GvBk4zBj3C4zWZJVUTZBNA==", + "kid": "eQOY6BDp+vM=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_022", + "notbefore": 1631656800000, + "notafter": 1694728800000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2HtKUYnSxJw/bgED+2LJQMAIjyA\n+I2plnVS50JCXaIALKstac37wB1lUvasfdvbE+nNbCvMkGPdMjLluMfT3g==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGzCCAgOgAwIBAgIUHHuaV60Jmxj0/Safb44HGezp2U8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxNDIyMDAwMFoXDTIzMDkxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMdh7SlGJ0sScP24BA/tiyUDACI8gPiNqZZ1UudCQl2iACyrLWnN+8AdZVL2rH3b2xPpzWwrzJBj3TIy5bjH096jgeAwgd0wHQYDVR0OBBYEFG+4PXS0sdtKNozOKQXcYVDA1Hn1MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAkjEVtzPSxFVMTUece3w7PeM4Q2fOn+MnaN60g6AusxnUUZGHErNnmjxVeU6isLYPB9gCHB3b2yZYXHh8IjMsf570yiDhsWBzwRjQc8a6uQoZSrCXFyVuvAGZ/hXWDf9AIKQrbrg/YlsN0qnhs7x3VsGZ62XHCQCBup2wMdW4VOa76YFgskKITmVB8RNE/r7sQn9tRmGW7RFC2f78v7vm8rshqB/6LFtwRe8kcBmRSw5l9pVMKHYLPW81NaEYN1BB3BNH+BH39rg89FPuuLMcO70Ow+1g7ebD+UH4VbgfhSrx9XKP5+FtQWTsatHdVg6vYYNPa9TR9/9e4Q3j3BAfnIdmhsT4DuRy9P+En9WZmg4NNFUVr8adlSKkiZOoJKSQh9TOavF4Ikvd/BD0S1UdjprApN3XauDRqvjKn4itsLc0m0ctUE5e234CLMbdNJM6ExPG+ukAdtK5V9FXwdyvl0+xVIBY9nI43z50KO5ZeyOWnqwRWCPqZ11FLuqFvoEpQPpx3d2Nc/IlQoalLWXtZYPOiEklhqAC7p1Qa+AG2RgsTxyIaMzCANjCDIFMBzcO6EbnHDPR9L5Xy4wqiLeQ06zeU0YR2WF+9DVMDR5j5lUR5QWFCDTK/B8ObjdsZl/Y9Qd7RoQT9wbtAa1+MpCXk7TnoRGG1HSdhi/yee661P0=", + "kid": "eUVY16rD2Kc=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_019", + "notbefore": 1623708000000, + "notafter": 1686780000000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEImIFaugzwB5f/VyfQ3KTfTSoukwA\nPVSgHZWrtrc2j4FuAUpw/ObRnA9pBjN/HdUc1zcl9SO/vsCEnHkXhxjz4Q==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGzCCAgOgAwIBAgIUNWO7+/2lmGQGT1cep5petfsOFocwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAxOTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCJiBWroM8AeX/1cn0Nyk300qLpMAD1UoB2Vq7a3No+BbgFKcPzm0ZwPaQYzfx3VHNc3JfUjv77AhJx5F4cY8+GjgeAwgd0wHQYDVR0OBBYEFF6mKwOiAheaIxTCkdVKd8zgd7urMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAu8BaLZXFj9/e2/a59mBrOhY2m5SpcAoayxF3zOkIOt7LNX0QqHuomOyGLHMnAhNALgS2vhDXD0hhs96ZcKaystlMePpYsVRyaYa53GwMrGHiLwFxH5qQNClCcktAP++wCcdQXzTyZOn9/GNdmquW1PNMLPCEfqlnzWawdpITr+CYMXa9R5BEMmdX19F41HcoPRn9/X2uHW/ONmBywTwJ3s0U8F5HF21buZtxVDvX4ey+qINBru4MiGwgRCsklS9kDbl3ODUox0lwhs2VgQzqjALF4xYgsdN2LJezrwAiL8GMRAenmX9eDdgzMGnjKFT6yW8BCrPsyUnM15RAou3BrwIp6oxXHnR8wbeKG7pzZZY1J4zk4yYyihwxguWbUZGksJsNAQoNdNHBZtc8a7Oj5onLyUIetd7ELXxdk8uy7WVFeye5V8qJRhWrFyhWWFscQeY8GktefXiGEh6fxGfRU5R5b0PznxfMiA3olad3s17dr+jzqCM/hcY2FmUTjYrSrAyrhHdmCYIJ3US71If74UeMs6NZnQRRiu3tbAX+TiDOHsEHEIOHldbyQqFfclyiC26fHTqcNfIAxXPmPDQ1jpEmhRjFDlOWHoSnzsGZi/wa1kmSb6+2uHgUP/C/O2oi+yAk8GpwpEi8Sgv+HH/p7z0ympQK8IUOG/4K3/urdto=", + "kid": "fGLuvg6n5wk=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSCO_FR_0005", + "notbefore": 1643756400000, + "notafter": 1706828400000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuJH/fgV1ST2egWe4mJXWL6e5pu33\nF08BzsYkDCiHKFIGtXj9LuOm+d6xiBreJ7NPzGxQP1Pt/UzRAnDsjmsAgA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEHDCCAgSgAwIBAgIUcnYrQMFgK1Fy648tt2Nq9kP7j7swDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIwMTIzMDAwMFoXDTI0MDIwMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4kf9+BXVJPZ6BZ7iYldYvp7mm7fcXTwHOxiQMKIcoUga1eP0u46b53rGIGt4ns0/MbFA/U+39TNECcOyOawCAo4HgMIHdMB0GA1UdDgQWBBSw76s2nUSROAzjhc98PGBEguhsMzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIlg9HMtb7I0/zvhB/XZMHBDqRQ6cDUvT/NeVfavcNqpJ6ZAxA9iIRTObsjkryqLfCAVzclXHUydiuX9K+KhjYVIKJQqU5Bng+GJOyXUYIy1RqKGVdKxDpMFPNQwzXVAQTjDvlQAJTQLtWyJnZ2Z3TNUOJXfO+9Su2MEr1InFHSAhgh+sx+R9uFMGcyRdho6VlxbyMlNPfi+UsT1+9L00m62kKXekd5Pm6tkj1PgRDnbAfTKowJMDxGgCOTvf6+atNwdYhO1egGREWVv8jPmH+WufBLw3602wzbQN/DJ7KEphVcz9vmeVt7r9TWMTmaqObgR1DIPyQHOssWhfA9n078dRYEUtJylDk8QWBydS3VTzcLBgJA8yroEZmQ3Y9nozweLrYaq5mnmUd1ZQ8HAdQuasjYJpZJSOmBuJIVA/oyGNAjJ6JJQFLKTnkRI0w+lH2nBDx7/ldEKXfWvqUqjAH9cN8P9nphBQ8ZY3C/w4F2R2naCf/WY1xpGSky0g2XZpBBPjluGKx1D+s80onWTZnQFgYT8RIaJnxEN4hgEG+/pvPH/QUfEnc4nek1nnXK6/l5n7AUeGg920H46+MTFNax8qlxSBvbktGckpmTIPW0wmr8SyJd9pD9W5OPhupo/JPfTK/hMKN/2jlWR4qKmuxEOiZkOCnOe2OjC4pH0JZgv", + "kid": "j95whXY9F8Y=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_012", + "notbefore": 1623362400000, + "notafter": 1686434400000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQ\nWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5lQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGjCCAgKgAwIBAgIUdhAMHzJmtfI9KC2HeZuteJ8+o3kwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5laOB4DCB3TAdBgNVHQ4EFgQUowemG/S5PIzFStnYia0U6RWU2Z8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBlqQgxVgPA/EwOPMNUY4OJm4vGvxNYc3LU6R5/5q7hRwa04yTuQOwyRzTcMgJ211G79lsFwiprgzN0kixDYRrwa1NflFQS7Ygi64qGa1KZqDziB1SqDYiHXXCkkTTe4H/vkpZkH5U/+8jVUYI73q7MYIskxgHc1OZV1oKMWilU8rSdWzDQHH6WRk2BUuTORIsGpT0U8eBQQUaNhY8V0GDkKLwrqIWEbKC6ylLa0pGNYM8QMHAvV1SurqdwohC4/6ToNzypyYNctOJUTcgCyDpKdfQ+xWRdFDqje3XUdIRByEHAb7o9/F6H9NJoN0gyVF6YyGAYLD6zBfYhpnPXNxDCa7QltXogVi1gJFglsAVrQabTMXsA4/1+IOrdqMv0Ale/jy+0gEWZOHzUquSQTpxVz+Gj2j9ZXLJPzRSHg7O+LjxNON3mz/jl7cL7wjwbKqnMpYBALvedavnDetISU46qo2QwPO3qAwWF+3/17Mcb2a7IkhlHVKxNgGOEpVAZOQE8ritoVZV+B6xbpnNY2J68vZFqYy/BnkgJ+aL/9Uq0AqA+1Ivsjd2P+Clk5qpm0ZnQ8+CzaEiNENBRNE7aDFohgkezqET1gilIkvGoqDiahw/3hbr1BF848++6+ES20vUSxK2Uga4JQ0MGaKaKJyyAwwYO1MJITQosvt1JwtgiwQ==", + "kid": "lrxgMs2Duac=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_021", + "notbefore": 1628978400000, + "notafter": 1692050400000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1PApTQ/nFA6JcYUuo7GgP+gPSKf9\n8BQh88IKHOt/yNS8ZrjxjL+lVY6EH4yyQdbQZGqS9d2Se5dxNwx5C3jxkA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGzCCAgOgAwIBAgIUPUAmrN9wBn+eVuHqMp8b/blfPPMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxNDIyMDAwMFoXDTIzMDgxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNTwKU0P5xQOiXGFLqOxoD/oD0in/fAUIfPCChzrf8jUvGa48Yy/pVWOhB+MskHW0GRqkvXdknuXcTcMeQt48ZCjgeAwgd0wHQYDVR0OBBYEFIRbucEIacei+qS6DFsuclGQo2o7MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAhYhTafMjVKmyAFJhTx703KE211fPRx3YlWid6JeUNDIuYTQfIC0yPlvtaFM4Z9TVioHcTwweEfqNi10sGVNbWmWAk1RZhay01VCzzsCVscNmi2/7n+qAIHZWgLyAOjJZ2jVDidC8MWGQjb/qdpu1zh46AIiVmfUfhyvBfXP7dQKgx+nPrV+HhxwuaVGci/KccFIHoOu0rttjuUfg2HCQCr4CjLKZ+RHXny6zjfD3R9T1scndEkJot2L/f0lIIZez+oTx/Wo8ivNoy9C9T3py6as2AChlz1rXSNPsdJZ9M2pcCk8z1I8fAspOu+uEevXPig20cxBz1kJzHrAmvYPTB9JTwZHqek2wriAQ/7Oy92hWxr/6tnkdPC5aKUz0nEYBvJWWq3qO4O1GBXCBt8VdXklgPHvZCym2Yc1XKMdhtMVNpOOOZV6SoSTjoi6R3Eu2VSMQCd8RKYc7DjLss0FF6y5qYjBqmizjV5MKTxtxKFA62QUF0jI/9DypU1Pk3Vias9RpFkLiHE3UcVdGMbTvAc4hwH/bkOtg0W7lqnGsJTWdc8MbnZ3blVtrXylveHA/IXgERhyI3J0YCg3pWjJbEwnEqltUa0n93o0S6sDv78lt1uKAMre1+JUQ0lNNHldtljV6dvcQ7R+ebs3GEZUyDI20fmhIcNZCtmOehZm5fyM=", + "kid": "mo/w8S8rZ0Q=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_028", + "notbefore": 1644879600000, + "notafter": 1707951600000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDFL/JfC54w5DhacEkzUU1ni7QALe\ne86PYN+pLto0V+CXCRch9j54eDQagr/xGcyP3UBThBUnpqtEG/CtBHvExg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGzCCAgOgAwIBAgIUPtrkrg2WkDHMSTavB6nBxxSKE2kwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIxNDIzMDAwMFoXDTI0MDIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyODBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAxS/yXwueMOQ4WnBJM1FNZ4u0AC3nvOj2DfqS7aNFfglwkXIfY+eHg0GoK/8RnMj91AU4QVJ6arRBvwrQR7xMajgeAwgd0wHQYDVR0OBBYEFEK7//liPw35XcS3wODcluwZM1CNMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAdxpY/iCo8yx9FLLRjfApnDHj6yQJ9yTEtGNRCVcPoUtFQyM3fv1Ep9oRUpTcHYD2Kt857fLENbV+C8lwAYjl+QpFViyGXSDLdyLHN6ua/qQXiKG29bT9nmRZIn3QWUrpagVcPySSpztw7d0/sfAFi05VmuQZ2UUTEhsKiR/+eoM2JOPM/m27xwsKo4g4ffSDEOqb4VCGwtKTBrKg64MHcXC0zWsaouFZNeZEOUOyXCsSjDc0zvvYj4llgC5bafbivgSRLGjO1M21vhQHr2FZDh1lokIbIo/PHGDunxVe6rbnIZMMrrhLzgBwUQP1Ihco1AG6NPFwKAxDEyt/dVPxIu5xDUjDujk2L+yf7c3tcMCXjktS8QG0y46FftIKY4ZTzPE67iWYDtRszqX6eNzkUhANjDs6nQJiSKbQLgQn/kalj/qZDZC9u/Xfpv5LDlhVZraDJ6vOXFMko9PlpOHWelN/UQL0yp4XIKfZNBZPq9lzZP6beujHyz6dMdDczXy9Xo+PZ3rNtci9UYCrpdhljifQaj5Q76cPXpJUCXFsM9JyQ4uXuGA0Q+gCzED87eOjEsKd+NFQQGpMqdEUdzZnc7veoyqOwUiwSGXaWDaWISPNNnKBQ4sAUtLIlQAYiQ/hxQtZu6DBgW2c4I3ecryp/PpJB1+m1Hvzf5TNJgHEeag=", + "kid": "oGix7vDtlq4=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_003", + "notbefore": 1631311200000, + "notafter": 1694383200000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5Pw\nahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEIDCCAgigAwIBAgIUaaZNZoiS7up4kcKvogrzW8iwXbIwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5PwahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzKOB4DCB3TAdBgNVHQ4EFgQUPQQuG8z6nMfreGSJOz8MdoIMvFYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCe8I1wV8foZkHBp6MM5QbHFNut+gQ45nTjZEOVF2wzAZz4xa48Knhl9K6JdeBQhedQBzx3jKWEpl9A4ycPbwCwS7+HlpDzC23ZaesAGPhR+VAEyYMUEH8ONbsjKIA+rg/4OIJ5byPYxnZkdrSNH+NQzEn8Pb5ZAW8DQXeJgJ/x3Wg+Ogd0iM8yNd1sMMQiO20C4eBRaOtJZnr8W3xLRYaD5sxVHSWRkkCVELQXAVcugmiL6u9MR4KgxV5qWqi66GqHI4zfbe1H+EQ67bnH17YZ+ye0r+FRi7aacXy7Xtk08zQCqhDFaZDr2H7wTj5NJIuSnZc83gAyV+C4QxrkYIbVqPVJ+bea2RGvXYrcyH9LrZdPDJqylcKOoRpvSJoCoyJ40zu4B1tiludT2HdTwN5wjVLmAvJfPT+ZKnVXOgwabm/95Xs/Y8fOcfaRzH44p4j3e65uZ4U1n/gUnya9iaiNpBqYq0c8czOquRm1CJVf/shRkqmQTw7p8BaMygYs2VrS521LbiEeZALpG+sdoVUQfMRN8Ii2+RrJVu+AWUdz93+u98TRDodTRKfCIJq4/rDo9yepiKSgUjaxvvgDszQLcqHBFzHB9Y/Gv+l8YQzIKK9ZxFVEjEDX++heFPYC7C+LQToZcn9CKZAC6M3D7rRBEZ1ibMpVyEW4YXu9tu8RfA==", + "kid": "pe6raiG2dWE=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_23", + "notbefore": 1637708400000, + "notafter": 1700780400000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2U0nHQxTR9PPb0QwY+YS7qJs9XDN\n5a9fc+lCqTltrFE5D8kEZMRFY+qNhMbo5JY4VU473btztC0zWP52tgFH+g==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGTCCAgGgAwIBAgIUKCG1aBTkAAn0E/gVD+HRZXrMgBYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEyMzIzMDAwMFoXDTIzMTEyMzIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATZTScdDFNH089vRDBj5hLuomz1cM3lr19z6UKpOW2sUTkPyQRkxEVj6o2ExujkljhVTjvdu3O0LTNY/na2AUf6o4HgMIHdMB0GA1UdDgQWBBQHXz8rvdiW65BcQaIdyRy4gzUNXzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAImn8pvfl1UnkNvTynXjRrI00kIdbn9RsUe8lKMyyOhhfV1Sia2on+Gd5AFk+IMyunMFLBcl18H9BHHfuPMVR2BleZ9u0kSboF6uYennSwqVcpmGwJSnzl/P8jq3gDz1iAXpIQoc+PtHyc0c0BJ0/TrfEx4bBoMXwRz3N3r+zaa67zntv144zbBTInrDQC62ZCO/QIjP3o9rtZnI60YscEWL8ul8TDHQWiMU5hZ+X5hpb+vkMSi+c7bSiIcMFSd9CNnaJIJ1AC1FCH62hT9edCY+EFwS5I3+s1uMW2N+upDCS8aegXYcpVqnLdvwDA3sgnPwn2cOsPuLltHA//OKIF3cOFnMPIKnn3/zM5LilxWZYxy7Lg0uwfoOMV3SnWvxv9aj4wQOxljwiorL/qw71uQHSaAEphKS5MZVS2v2nV4Pj2KG/eOd9axsTy8GvOx8DbNdGxYDnzu1zH8mkWnQZ1TX6gskoJc5U8NTcHseUTj2oUYzLLe3hgawK3gvmiugHCotj1xCJa2+qlBg2ubFYPAiK26FhW94i9b6vRuNbhc7OvRoQahdKoOvPSO/SuTvfSxxGI1XYw76ZZxwx7P5z4hb0StCjeCqTuAhWJMafHzc4jNHWnb11ggF9+9krByzdgNj2dWJqWjg1MSN+/9CjiB961SvvmERhAsXOduh/rDl", + "kid": "qrdfSzqcjRc=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_004", + "notbefore": 1631311200000, + "notafter": 1694383200000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+\n1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEIDCCAgigAwIBAgIUIxJMjNw3dr88EcIE+hNISSiImkwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMKOB4DCB3TAdBgNVHQ4EFgQUW8d5IrarC3lBI/Bj5O53KmwrwI0wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCalwjJDDOjgInZboNfXmrdZjrxA7i65O84bWW1rnOSGZwBpdMcdKrNDiizyjklB6tSKuLH0fllMPUCMd2Umz9zTTKJG1usxQ5Yaf9BBW+g8Pwgn/mNRprogPK/VXFdLCOCmxr1/y1FEPgnecD3oBFhm4ojZywwWVrcUoPnRvqIfJLEvzvYais7y9PqkaFqW0TNyvaRq9tBYyFkvZUQuizKK10nmIXLzg6JYnSXR6awtRcZJs1eF53UQynv0dQmVZbMl/JM01y+sard38byiKzQc+v/ANI24zLHWw9iJm2/jlFTch8S2eazMEAe8EvpMqzzSOcIrmgrL/r9CQo00cFFkCGCIZWnHhHEKv+uuEPVilSJC7ijM8p5npt1PwqCCB4HWcdZEY1oCu3zjjOIIRIySZmKoailNEV4iZeAw0D++wkR1+OyywIebkaRVWKk/irrToYuvQYiTDlh1yIh7mmrL0/lULdONjsawOh/s0/vxKSyD+gkMVRzxBax7BhT3DLzj2L7E/Tw5DNL87k7zmlxcHGW8Oa6sIJwKRsTg/76frIf21u99FhfqeWkhfhZ5yTzGiJR6FquZ/tTrlq216MqICXO4QN8/p8OrP9foTS2+3FvWRWxk0pBEVZget0CtMP3PpZ+IC7gwp3wALhWtZwwY/64FUl9ZLZqId8RtbQBEQ==", + "kid": "rLMiGt6uB3U=" + }, + { + "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", + "subject": "C = FR O = DGS OU = 120036017 CN = DSCO_FR_0006", + "notbefore": 1645570800000, + "notafter": 1708642800000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0uciJTqR/3fxFNZ9yeUUoPYUx38Q\n8OH1jFEsJqJvfN6jrx+s8h12VqrUGv/8oBY+dECMhySMeviq8Yg6kT4r2A==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEHDCCAgSgAwIBAgIUdp9CXnOFuqVuiiT7jg9FodyeACYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIyMjIzMDAwMFoXDTI0MDIyMjIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATS5yIlOpH/d/EU1n3J5RSg9hTHfxDw4fWMUSwmom983qOvH6zyHXZWqtQa//ygFj50QIyHJIx6+KrxiDqRPivYo4HgMIHdMB0GA1UdDgQWBBToe/OectWamtD2LONpMXn0znvh7jAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBABcKi+7I0gwOKKEb8WCP+E7NTzP4Ts0L3F+bGNdeFASZhcQQAMFwtPoJOfSsO8I/9p2uXHMjawyVXlWEanb5oHWLfafCrQmROIQQQBHfuHlD0N+YdHFe1W1ItvzDeouUMUndfuBEd0q7KcdmNnoH9EnPdEt/vqLU8Pj1PKD4lI7TAL84jyxYUQKGzj/D6dKsawa85Xk6+jEucHVJ9lphPFyXatPRHf1bebu84ybCwOjuY9V96+ltzFQowlkaQO6sYw22btDlsjldpwgLBV6jhZVkWNz8rWR3Um+lX6idz4BjHnk8GQt0HKEwQdgJbrMiAykkemSghxB4XYPn6iN0nlgmTOGPJTODgOJxsvdLyX3+5gIX3OOp+3rFUvH/1LKlYGis7OSeMxDQerOAV+5TaYjHKeGZhLkJpgRym1pofypRa2gX1dVL2Un9cn9tOBmsuhl7MAM1gHbeBLlw5nBW5K49vfAZhMsqQ5X1PvyFzHVPmnhQlD/syAKzuSUABona+oUl0zkv3XxoxWZx4QZXiWR3gCfCio58P1DEBf0Y4lehMuNJ7b1sla6NXRSY97w1Usg/biDxJR5BbkbTU/00Q9zICVgtAYlV2CguUr16PG+o3kpxRjkjvg+Fo9WG9dtOTycZPNcWEAscdzpzLzmtU6iXQEkIEyIpvfWSwTAjC3iE", + "kid": "uy59WoRKBUg=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = IBSALUT-CVD-SELLO serialName = Q0719003F OU = SELLO ELECTRONICO 2.5.4.97 = VATES-Q0719003F O = SERVICIO DE SALUD DE LAS ISLAS BALEARES C = ES", + "notbefore": 1621857600000, + "notafter": 1684929600000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbxlQ/UTz0AxZWF+xQs+w+xveq5Ec\nhe9zf16LnDFYY/K8pZ6l6sb2KlXw8Z/kwopzzbv5LCX1VxLsGO9Rs9OzLg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "/IcqIBnnZzc=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = Servicio Extremeño de Salud serialName = Q0600413I OU = SELLO ELECTRONICO OU = SSII 2.5.4.97 = VATES-Q0600413I O = Servicio Extremeño de Salud C = ES", + "notbefore": 1622097780000, + "notafter": 1685169780000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEManlPIcO9J8UBpHCAbku/KkAfiBr\nGLIre1buTIzhhoncL0YIO+DQ9uPs6UfzPKXzQq791V5I5avhmpQ6j2zFsQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "3IsdmTYkAAM=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = GERENCIA REGIONAL DE SALUD CASTILLA Y LEÓN (SACYL) serialName = Q4700608E OU = SELLO ELECTRONICO OU = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON 2.5.4.97 = VATES- Q4700608E O = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON C = ES", + "notbefore": 1619789400000, + "notafter": 1682861400000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1Tqtnz\nC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIHXDCCBwKgAwIBAgIJDDdEkclPCGsoMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNDMwMTMzMDAwWhcNMjMwNDMwMTMzMDAwWjCCAQYxPDA6BgNVBAMMM0dFUkVOQ0lBIFJFR0lPTkFMIERFIFNBTFVEIENBU1RJTExBIFkgTEXDk04gKFNBQ1lMKTESMBAGA1UEBRMJUTQ3MDA2MDhFMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzE2MDQGA1UECwwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRkwFwYDVQRhDBBWQVRFUy0gUTQ3MDA2MDhFMTYwNAYDVQQKDC1HRVJFTkNJQSBSRUdJT05BTCBERSBTQUxVRCBERSBDQVNUSUxMQSBZIExFT04xCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1TqtnzC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfKOCBKowggSmMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBmgYDVR0RBIGSMIGPpIGMMIGJMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE8MDoGCWCFVAEDBQYCAgwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRgwFgYJYIVUAQMFBgIDDAlRNDcwMDYwOEUwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBR0F5hsHIJ6Y7MLOV4IRJYpbxoKgDAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDSAAwRQIhANiNJAq66hiD/nftp0jcuZQJtkHq0LiGFxpWmKCnCClcAiAVLvoNwAKGUOPPJ88g/UPTytviavcuFfaN9F5Iw0fVhg==", + "kid": "4Qmniw7B0gc=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = Gobierno de La Rioja serialName = S2633001I OU = SELLO ELECTRONICO OU = DIRECCIÓN GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS 2.5.4.97 = VATES-S2633001I O = DIRECCION GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS C = ES", + "notbefore": 1621587300000, + "notafter": 1684659300000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqF22rG5bDXpWn/tKy358h2KwYyaS\nKzCZV0HJptUQq7sWxfeDE86HSoebBrpOvpjhZX2/ZkTF/YRlkh0ztnkclw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIHVjCCBv2gAwIBAgIJSC0ZeCXmMXCnMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTIxMDg1NTAwWhcNMjMwNTIxMDg1NTAwWjCB+TEdMBsGA1UEAwwUR29iaWVybm8gZGUgTGEgUmlvamExEjAQBgNVBAUTCVMyNjMzMDAxSTEaMBgGA1UECwwRU0VMTE8gRUxFQ1RST05JQ08xQDA+BgNVBAsMN0RJUkVDQ0nDk04gR0VORVJBTCBERSBTQUxVRCBQVUJMSUNBLCBDT05TVU1PIFkgQ1VJREFET1MxGDAWBgNVBGEMD1ZBVEVTLVMyNjMzMDAxSTE/MD0GA1UECgw2RElSRUNDSU9OIEdFTkVSQUwgREUgU0FMVUQgUFVCTElDQSwgQ09OU1VNTyBZIENVSURBRE9TMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKhdtqxuWw16Vp/7Sst+fIdisGMmkiswmVdByabVEKu7FsX3gxPOh0qHmwa6Tr6Y4WV9v2ZExf2EZZIdM7Z5HJejggSzMIIErzAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgaMGA1UdEQSBmzCBmKSBlTCBkjEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xRTBDBglghVQBAwUGAgIMNkRJUkVDQ0lPTiBHRU5FUkFMIERFIFNBTFVEIFBVQkxJQ0EsIENPTlNVTU8gWSBDVUlEQURPUzEYMBYGCWCFVAEDBQYCAwwJUzI2MzMwMDFJMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQU7oukZ17hZNqgXn+9zb1nFVmNAdYwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0cAMEQCIFAVrmKucmULegrWgBKqAHeiiJ6VmRGXBVo5LrvtuXwnAiB0+buKOXmu4gpE5vu2Du0seQ5DdaCsLOS99ZTz6Ea0yw==", + "kid": "6ag2wJkSHtk=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = Secretaría General del Servicio Canario de la Salud serialName = Q8555011I OU = SELLO ELECTRONICO OU = Secretaría General del Servicio Canario de la Salud 2.5.4.97 = VATES-Q8555011I O = Servicio Canario de la Salud C = ES", + "notbefore": 1619788200000, + "notafter": 1682860200000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEblis8RR4Oc4Xqq4RZdhrJ0DnkAvK\n4vY8AamWbFg9T7OG17La8TJYTq3FqJJd5KttTP71GojxRF0REKpF+uwAtw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "ARrNkCRtprY=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = SELLO ELECTRONICO DE LA CIUDAD AUTÓNOMA DE MELILLA serialName = S7900010E OU = SELLO ELECTRONICO OU = DIRECCIÓN GENERAL DE LA SOCIEDAD DE LA INFORMACIÓN 2.5.4.97 = VATES-S7900010E O = CIUDAD AUTÓNOMA DE MELILLA C = ES", + "notbefore": 1622213100000, + "notafter": 1685285100000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEe1XUTCn6DkdbSOKlyzczFWQfDvtP\n31uGdjzVCzAkuxorNeEX3F827gnycL/mTzRm8lfDxz64lEUcTww0I7unwA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "BEnvMVnNFK8=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = SELLO SAS PARA CERTIFICADO COVID DE LA UE serialName = Q9150013B OU = SELLO ELECTRONICO OU = SERVICIO ANDALUZ DE SALUD 2.5.4.97 = VATES-Q9150013B O = SERVICIO ANDALUZ DE SALUD C = ES", + "notbefore": 1621599300000, + "notafter": 1684671300000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt3OX+XF/LZlHff6ZWiHRqQu4WBrg\nzNZYz4wFJkwkBmk/z0ROsLJ4FlwOLPs2cUEIIV0Pu1cmnngva6+EzQpbAA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "GMFMBu1RlCg=" + }, + { + "issuer": "C = ES O = IZENPE S.A. OU = Peer CN = iCA Izenpe", + "subject": "C = ES O = EUSKO JAURLARITZA - GOBIERNO VASCO OU = SELLO ELECTRONICO 2.5.4.97 = VATES-S4833001C CN = DIRECCIÓN DE SALUD PÚBLICA Y ADICCIONES", + "notbefore": 1622208492000, + "notafter": 1716902892000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8PO\npQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1Q==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEEjCCA7mgAwIBAgIQA8IozyvkMlFgsO/sU+TnrzAKBggqhkjOPQQDAjBHMQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xDTALBgNVBAsMBFBlZXIxEzARBgNVBAMMCmlDQSBJemVucGUwHhcNMjEwNTI4MTMyODEyWhcNMjQwNTI4MTMyODEyWjCBpDELMAkGA1UEBhMCRVMxKzApBgNVBAoMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08xGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMRgwFgYDVQRhDA9WQVRFUy1TNDgzMzAwMUMxMjAwBgNVBAMMKURJUkVDQ0nDk04gREUgU0FMVUQgUMOaQkxJQ0EgWSBBRElDQ0lPTkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8POpQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1aOCAicwggIjMFoGA1UdEQRTMFGkTzBNMRgwFgYJKwYBBAHzOQAGDAlTNDgzMzAwMUMxMTAvBgkrBgEEAfM5AAUMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08wDgYDVR0PAQH/BAQDAgXgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQWBBRJ5qXgwbq6JnfYaHEo99QEkecqADAfBgNVHSMEGDAWgBRzFw8OFM+MtdUG96YEM8MZfTG+7TCCAR8GA1UdIASCARYwggESMIIBDgYKKwYBBAHzOYFIATCB/zAlBggrBgEFBQcCARYZaHR0cDovL3d3dy5pemVucGUuZXVzL2NwczCB1QYIKwYBBQUHAgIwgcgMgcVLb250c3VsdGEgd3d3Lml6ZW5wZS5ldXMtZW4gYmFsZGludHphayBldGEga29uZGl6aW9hayB6aXVydGFnaXJpYW4gZmlkYXR1IGVkbyBlcmFiaWxpIGF1cnJldGlrIC0gQ29uc3VsdGUgZW4gd3d3Lml6ZW5wZS5ldXMgbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGFudGVzIGRlIHV0aWxpemFyIG8gY29uZmlhciBlbiBlbCBjZXJ0aWZpY2FkbzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsZGVzLml6ZW5wZS5jb20vY2dpLWJpbi9jcmxiY2l6ZW5wZTAKBggqhkjOPQQDAgNHADBEAiBtHbVrpnsLMptmRI5QL4JhOG86pqSBVQXiOUMsIkpcPgIgY/npsrzRMcUHAh7NwvqhnbgWvv1VwbRy3bxD6+o3RGw=", + "kid": "GuQPQRxbMsU=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = Servicio Cántabro de Salud serialName = Q3900738J OU = SELLO ELECTRONICO 2.5.4.97 = VATES-Q3900738J O = Servicio Cántabro de Salud C = ES", + "notbefore": 1622120280000, + "notafter": 1685192280000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEj/wPWM6e8JDYxW9673ivEvwlu2JA\nZpsNBrr2sQW5ppku6rcqJUKx7Kbvf2Zx1AJeIS7+PQq2iNcugfD+RC/VfQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "IaGR283U1jA=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = SESCAM Certificado Digital COVID UE serialName = Q4500146H OU = SELLO ELECTRONICO 2.5.4.97 = VATES- Q4500146H O = Servicio de Salud de Castilla-La Mancha C = ES", + "notbefore": 1621946400000, + "notafter": 1685018400000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDvCuOC6NlQCaL18+CEn4sbjC3NNn\nN4jBAmZo6lrGXbjIfAQ3YWmXc3gqLnSFq84EEV6+2PFy9yyLgq4JmFAfDA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "JHd4CkNzadI=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = Inspección General de Sanidad de la Defensa serialName = S2830001J OU = SELLO ELECTRONICO OU = Inspección General de Sanidad de la Defensa 2.5.4.97 = VATES-S2830001J O = Ministerio de Defensa C = ES", + "notbefore": 1622115540000, + "notafter": 1685187540000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE62orr7HL0POyQCqmgbbEqfcbcdcT\n4vyfQZEPYfxk69ZRv9T8Iy6nWAyEjF0VxvknfCg/x9uig5HFWrpedW2Epw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIHHTCCBsOgAwIBAgIJJDxrMWsTHmc+MAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI3MTEzOTAwWhcNMjMwNTI3MTEzOTAwWjCB5TE1MDMGA1UEAwwsSW5zcGVjY2nDs24gR2VuZXJhbCBkZSBTYW5pZGFkIGRlIGxhIERlZmVuc2ExEjAQBgNVBAUTCVMyODMwMDAxSjEaMBgGA1UECwwRU0VMTE8gRUxFQ1RST05JQ08xNTAzBgNVBAsMLEluc3BlY2Npw7NuIEdlbmVyYWwgZGUgU2FuaWRhZCBkZSBsYSBEZWZlbnNhMRgwFgYDVQRhDA9WQVRFUy1TMjgzMDAwMUoxHjAcBgNVBAoMFU1pbmlzdGVyaW8gZGUgRGVmZW5zYTELMAkGA1UEBhMCRVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATraiuvscvQ87JAKqaBtsSp9xtx1xPi/J9BkQ9h/GTr1lG/1PwjLqdYDISMXRXG+Sd8KD/H26KDkcVaul51bYSno4IEjTCCBIkwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBTTTGw6vTb+cIcjhzruPZDPy5v3ITB5BggrBgEFBQcBAQRtMGswRAYIKwYBBQUHMAKGOGh0dHA6Ly9jYS5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lYWR0cnVzdC5ldTBjBgNVHRIEXDBagQ5jYUBlYWR0cnVzdC5ldYYWaHR0cDovL3d3dy5lYWR0cnVzdC5ldYYVaHR0cDovL2NhLmVhZHRydXN0LmV1hhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MH4GA1UdEQR3MHWkczBxMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzEkMCIGCWCFVAEDBQYCAgwVTWluaXN0ZXJpbyBkZSBEZWZlbnNhMRgwFgYJYIVUAQMFBgIDDAlTMjgzMDAwMUowggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBTYY8en6KTq/y0Yj7lw834+ZctC2jAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDSAAwRQIhALhK5+5kkLEUBlWyNVyMG7+aXU58KiX/zN8vZYHoqcuhAiBQsKu0JqsKtS8UG4N9e9OUsjhd3/YJPA4i9Q/tCj0Vxg==", + "kid": "MtI93IMknMk=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = Consejería de Salud del Principado de Asturias serialName = S3333001J OU = SELLO ELECTRONICO 2.5.4.97 = VATES- S3333001J O = Principado de Asturias C = ES", + "notbefore": 1621860000000, + "notafter": 1684932000000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUvljql1ZGpwzC92AbO4J751kqnIE\nXaCI8hYUIEArhReqJcx5qClAGSkDFcbrTPV9WuUtmDQ/NpoV+EejqBmlyg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIG7TCCBpKgAwIBAgIJESZaTdpyaH/MMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI0MTI0MDAwWhcNMjMwNTI0MTI0MDAwWjCBszE4MDYGA1UEAwwvQ29uc2VqZXLDrWEgZGUgU2FsdWQgZGVsIFByaW5jaXBhZG8gZGUgQXN0dXJpYXMxEjAQBgNVBAUTCVMzMzMzMDAxSjEaMBgGA1UECwwRU0VMTE8gRUxFQ1RST05JQ08xGTAXBgNVBGEMEFZBVEVTLSBTMzMzMzAwMUoxHzAdBgNVBAoMFlByaW5jaXBhZG8gZGUgQXN0dXJpYXMxCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUvljql1ZGpwzC92AbO4J751kqnIEXaCI8hYUIEArhReqJcx5qClAGSkDFcbrTPV9WuUtmDQ/NpoV+EejqBmlyqOCBI4wggSKMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTB/BgNVHREEeDB2pHQwcjEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xJTAjBglghVQBAwUGAgIMFlByaW5jaXBhZG8gZGUgQXN0dXJpYXMxGDAWBglghVQBAwUGAgMMCVMzMzMzMDAxSjCCAZgGA1UdIASCAY8wggGLMAoGCGCFVAEDBQYCMG8GBwQAi+xAAQEwZDBiBggrBgEFBQcCAjBWDFRFdXJvcGVhbiBUZWxlY29tbXVuaWNhdGlvbnMgU3RhbmRhcmRzIEluc3RpdHV0ZS4gZUlEQVMgRXVyb3BlYW4gUmVndWxhdGlvbiBDb21wbGlhbnQwggEKBg4rBgEEAYN1AgEBAILCETCB9zAlBggrBgEFBQcCARYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBzQYIKwYBBQUHAgIwgcAMgb1DZXJ0aWZpY2FkbyBjdWFsaWZpY2FkbyBkZSBzZWxsbyBlbGVjdHLDs25pY28gZGUgQWRtaW5pc3RyYWNpw7NuLCDDs3JnYW5vIG8gZW50aWRhZCBkZSBkZXJlY2hvIHDDumJsaWNvLCBuaXZlbCBNZWRpby9TdXN0YW5jaWFsLiBDb25zdWx0ZSBsYXMgY29uZGljaW9uZXMgZGUgdXNvIGVuIGh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMIHBBggrBgEFBQcBAwSBtDCBsTAVBggrBgEFBQcLAjAJBgcEAIvsSQECMAgGBgQAjkYBATALBgYEAI5GAQMCAQ8wEwYGBACORgEGMAkGBwQAjkYBBgIwbAYGBACORgEFMGIwMBYqaHR0cHM6Ly9lYWR0cnVzdC5ldS9lbi9kb2N1bWVudHMtaW4tZm9yY2UvEwJlbjAuFihodHRwczovL2VhZHRydXN0LmV1L2RvY3VtZW50b3MtdmlnZW50ZXMvEwJlczBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vY3JsLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcmwwHQYDVR0OBBYEFCuwlDc1uAyvaNOyNGGQsoU12blsMA4GA1UdDwEB/wQEAwIF4DAKBggqhkjOPQQDAgNJADBGAiEAtNn/n0DqqckXnGKgieasfAoLgmXITLWjjUCn92ecd7sCIQDIcumTIc077BpzEZnO7SVarUmokyQcCWDirSDkayfr5w==", + "kid": "NCc6YSsVioM=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = Sello Electrónico del Servicio Navarro de Salud-Osasunbidea serialName = Q3150004D OU = SELLO ELECTRONICO OU = Servicio Navarro de Salud-Osasunbidea 2.5.4.97 = VATES-Q3150004D O = Servicio Navarro de Salud-Osasunbidea C = ES", + "notbefore": 1620984900000, + "notafter": 1684056900000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4\nB/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgHw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIHTDCCBvGgAwIBAgIJfoL0UPrrsbuIMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTE0MDkzNTAwWhcNMjMwNTE0MDkzNTAwWjCB/jFFMEMGA1UEAww8U2VsbG8gRWxlY3Ryw7NuaWNvIGRlbCBTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRIwEAYDVQQFEwlRMzE1MDAwNEQxGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMS4wLAYDVQQLDCVTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRgwFgYDVQRhDA9WQVRFUy1RMzE1MDAwNEQxLjAsBgNVBAoMJVNlcnZpY2lvIE5hdmFycm8gZGUgU2FsdWQtT3Nhc3VuYmlkZWExCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4B/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgH6OCBKIwggSeMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBkgYDVR0RBIGKMIGHpIGEMIGBMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE0MDIGCWCFVAEDBQYCAgwlU2VydmljaW8gTmF2YXJybyBkZSBTYWx1ZC1Pc2FzdW5iaWRlYTEYMBYGCWCFVAEDBQYCAwwJUTMxNTAwMDREMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQUDoSdwvhJkRliLuZyPLYo9xeX1vcwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0kAMEYCIQC5rwYPPmeafyGrOsjX/SeqgFtgrqURrFrnbwC7QvM6MgIhAN4Pl5n+ACj+56aPhHsHRo4xS2ZeXShYFQQpxUCM9R17", + "kid": "YRYidQ+wetg=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = CEUTA serialName = S6100007A OU = SELLO ELECTRONICO OU = CIUDAD AUTONOMA DE CEUTA 2.5.4.97 = VATES-S6100007A O = CIUDAD AUTONOMA DE CEUTA C = ES", + "notbefore": 1620984600000, + "notafter": 1684056600000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgOuoVfBtfKWYpcffhNWfiCf4g4oZ\nBdaPcdrn0HBtkQ/9xYp6FlfFAP1Ze29LaM1emnFxjyQNWV3KeNmoc/vFYA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "YU9+X9nepqU=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = GENERALITAT VALENCIANA serialName = S4611001A OU = SELLO ELECTRONICO OU = CONSELLERIA DE SANITAT UNIVERSAL I SALUT PÚBLICA 2.5.4.97 = VATES-S4611001A O = GENERALITAT VALENCIANA C = ES", + "notbefore": 1622199300000, + "notafter": 1685271300000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV61Sl3v6NzBqyCbqSb8/fBodGle+\nb3RJ7Utk+uExDwbOxzS//2GUTRFKW43ppskyr3G60/xeJCaeN7S9Cvssdg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "ZcfkloEvfGQ=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = CERT-GENCAT-1S-21 serialName = S0811001G OU = SELLO ELECTRONICO OU = Departament de Salut 2.5.4.97 = VATES-S0811001G O = Departament de Salut de la Generalitat de Catalunya C = ES", + "notbefore": 1622037600000, + "notafter": 1685109600000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZjrINN6u+ZGfRqaYqgqL+yZZCDl\nu+PKPCkVS/ysPosrontwlhznbPsq5W+d2NyxXeaUAT+lTyRKy1NAxOFqAA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "e9SH8dtWwdY=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = DIRECCIÓN GENERAL DE SALUD PÚBLICA Y ADICCIONES serialName = S3011001l OU = SELLO ELECTRONICO OU = DIRECCION GENERAL INFORMATICA CORPORATIVA 2.5.4.97 = VATES- S3011001l O = COMUNIDAD AUTONOMA DE LA REGION DE MURCIA C = ES", + "notbefore": 1621867800000, + "notafter": 1684939800000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEli8eKthiom9EydKvhg7LHXj/f88/\nZeNUpfEFm6kIAr3K1NCRSv1grJnNiBc9lvggtAjqFHQSGTovtRcGHcVuRA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIHTDCCBvOgAwIBAgIJA+zla2386Iy/MAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI0MTQ1MDAwWhcNMjMwNTI0MTQ1MDAwWjCB/DE6MDgGA1UEAwwxRElSRUNDScOTTiBHRU5FUkFMIERFIFNBTFVEIFDDmkJMSUNBIFkgQURJQ0NJT05FUzESMBAGA1UEBRMJUzMwMTEwMDFsMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzEyMDAGA1UECwwpRElSRUNDSU9OIEdFTkVSQUwgSU5GT1JNQVRJQ0EgQ09SUE9SQVRJVkExGTAXBgNVBGEMEFZBVEVTLSBTMzAxMTAwMWwxMjAwBgNVBAoMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJYvHirYYqJvRMnSr4YOyx14/3/PP2XjVKXxBZupCAK9ytTQkUr9YKyZzYgXPZb4ILQI6hR0Ehk6L7UXBh3FbkSjggSmMIIEojAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgZYGA1UdEQSBjjCBi6SBiDCBhTEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xODA2BglghVQBAwUGAgIMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMRgwFgYJYIVUAQMFBgIDDAlTMzAxMTAwMWwwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBQBzqvKX8AY+IVJiHykPj5www64JTAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDRwAwRAIgb52hsDkWShWodg6mznBV4Ut/vr0C2rgRLyV0rzHWq3ECID/elZUrZyPy0V6CdrlZxaCUIQB6jsFkAl2/wFTHC5pU", + "kid": "hgpHHrTb4ws=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19 serialName = S2827001E OU = SELLO ELECTRONICO OU = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19 2.5.4.97 = VATES-S2827001E O = MINISTERIO DE SANIDAD C = ES", + "notbefore": 1622708100000, + "notafter": 1685780100000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3KVI7Sy+id+bprJ8Eh9AHtW+1qeC\n4qoHH1oK7HN87UKH9KxQix0jq0RySb2c+5CN+kbAfsYEvULfHToz2FWzWQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "qFNF2dC+mjQ=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = DEPARTAMENTO DE SANIDAD DEL GOBIERNO DE ARAGON serialName = S5011001D OU = SELLO ELECTRONICO OU = DEPARTAMENTO DE SANIDAD 2.5.4.97 = VATES-S5011001D O = GOBIERNO DE ARAGON C = ES", + "notbefore": 1620386100000, + "notafter": 1683458100000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDOg7lpxitz9+ytOAKFXxS7F4qc9I\nfKWrj388ETiCbLEQuoYeWEp+4wXPLCF7RRpg6Zxt9iGG93ZAwxl8g05Oag==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "tCM87WnaaQE=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = FIRMA CERTIFICADO COVID DIGITAL UE 1 serialName = Q2801221I OU = SELLO ELECTRONICO OU = DG SISTEMAS DE INFORMACION Y EQUIPAMIENTOS SANITARIOS 2.5.4.97 = VATES-Q2801221I O = SERVICIO MADRILEÑO DE SALUD C = ES", + "notbefore": 1622109600000, + "notafter": 1685181600000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhe+kvml2tx/+/wipHR5ttSw1PdmW\nGLpoEqzNiel2mWsZovfSBR+Jzri7NpH8s8RBSnEDc0kQTl2dSiECy9D45Q==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "ub6Qmv9xtAo=" + }, + { + "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", + "subject": "CN = ConselleriadeSanidade.XuntadeGalicia serialName = S1511001H OU = SELLO ELECTRONICO 2.5.4.97 = VATES-S1511001H O = Consellería de Sanidad C = ES", + "notbefore": 1622213100000, + "notafter": 1685285100000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeC6+zmnjgdAUmYG4kIPJsMwSFSJc\nlYoKuHKcIQ5PpX4xKyM36Gp2fkKvARbyJYjduU8JzO9nrSILVxjuKRapFw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "x3ch4ml934I=" + }, + { + "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", + "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 3", + "notbefore": 1623232264000, + "notafter": 1686304264000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5EtYbOu+RuUcFAu1NN1rqsuKqNzp\nl0Y6bgg9wNKcmVLzfBO81jH2dcupHtKlp7My5KGjCyBAKvjJUSE/fnDd5g==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIE3zCCApOgAwIBAgIIKbUPDyxggQcwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTEwNFoXDTIzMDYwOTA5NTEwNFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABORLWGzrvkblHBQLtTTda6rLiqjc6ZdGOm4IPcDSnJlS83wTvNYx9nXLqR7SpaezMuShowsgQCr4yVEhP35w3eajggESMIIBDjAdBgNVHQ4EFgQUQiz2ueCR4OeY2/dQbISIOzQRh20wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxMDRagQ8yMDIxMTIwNjA5NTEwNFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBADVwHF/3fcmmkQgU+HLb1LGhj4RvsR9NUkrkYHyWROt37d5D3EyqNjNIpWebfDXLnQNpEQDd/2HyaEW70citcb4ad/5RXD/hr3BjVsqnbRHOctv1+Twy9XfDM7OcDgj2tE7slsZ2dKAPEg09dq7MoClXDuTcIkBqEHuZ+dzA8PYDvITLjHtJqMKBj335tRU+Zl8WT0GGXzQw7/lRD4yE8BndK7C6MO7xC4tIUGgHP3P+kImRiPCq+pQbt78XGJBzEgCpBbe8HuXgja5yTk2AGLdCH5GxbSQMjGA4icefROoPO86uNwCekAKGFd46Li5/+JfIi9nJCd2x7PsUzAr15fzwcTks0Hk+7dZqj6gXuJpZFwoCzvY4Z0O1B99L1SCwZNXsCEevqQ5an3LUWUWE+7JhkkGtqeddockt5M8Q7omw8O4gvV9W9Y4Cbvshxy9RroTSU135NBMm3Iu0s2FdsKj3JMaE/xulRCJ4bxaEcKTdrjGaJSPT5ROgPWQj0yD7yw5j0lRGzph3Pu1o5q6J4v+w3cfWVu9Ka1H4wpQY3ip4emVaXpstg0NNPMH+JERLFy8Bg94J0uOCKAVAPMjpr9DW7/r1Ooey4a7pfdGqCb2QxUkuLr1YOQcairnvOpjjEfHbvWmKV4EGpENpI21qY54URKtoYse7tnkVtz9RrsyY", + "kid": "02vdAOY/+gI=" + }, + { + "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", + "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 2", + "notbefore": 1623232205000, + "notafter": 1686304205000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvIs/H8NhtE23q5tR84V9WwbbdGDc\n3hh7mjrXom4PRzjGRuSvfC9OIFLtRzOohsdnbcE62FWN+Fz09ugJcaqhtA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIE3zCCApOgAwIBAgIIX7IVIHG/M4swQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTAwNVoXDTIzMDYwOTA5NTAwNVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLyLPx/DYbRNt6ubUfOFfVsG23Rg3N4Ye5o616JuD0c4xkbkr3wvTiBS7UczqIbHZ23BOthVjfhc9PboCXGqobSjggESMIIBDjAdBgNVHQ4EFgQUvoCTP+xA0/1nmxS2GKtTaxp0TYAwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUwMDVagQ8yMDIxMTIwNjA5NTAwNVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAKT1bQpoLJpJbb3qAbYcQkZKPNQa5aisXFiLlmIBWHzPYI67BWJu/CjDOeHUPgzpcgiDe33t5ZacnccTwMGZYXnZQ8jNwOxAi//7NJkJHEtrMcYQ9pqSeKqnNwTwMetQm1u5rHjAtjMSZdyWMMjDIcX5Z2lXiPgoO548fYKrwbeCloFDk6qWrk/Jc6NKyNgVEhVvkwHLfDloS7Boln2I4eT4VfTAXt50/zEsu4KHIDpDTDMFNg5KTYugOFHOQise6z5oYmnwZB95OKfFGR0xeDR8JN+Kn2TcdiTpin87jhtyHzCScFLlWbHum9y/OKKNgK/2hWRrikyU9zo/OmHwStftOkggBSeDVtwRkCAKZpK9IXWWRNCj/gkRnVDDeg3ehQ9qRykU+BkUiMi2LhLDVUITCZhmRyS94xHP5PoCY5tUanCNxkgjYwvDHMU8hIPL8rsOdHxc7tK6jaavBP7ZbDG1W3bEcYU1oaKWvbYyPBhJPnAVDVH2SLU68gdEcdjMtiOPaH1ImERhQ2cF9KzCsU/svCoOJrEd2lQZ6xFodkicg0XN4sdXKyypdPic+Cvai/033DdiS1i7HH59hO0Z9l6I2gsJHULDMeSnJxTB9Tves79iYSRdBocm+LHfT8uvwRwn6+SmTD7/ttzHm/H/m/k1hsLPZDNMdn+kMuXCiEnn", + "kid": "0kAwFy+vLpg=" + }, + { + "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", + "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 7", + "notbefore": 1630587789000, + "notafter": 1693659789000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7U8cYsFNOZawVgxC9FBfvNzL05Xe\ntv6jVxj+aii7IkXcXCIiRsruAdrAHCLCtpDgIFzwLsFNwJs5ZFu+8lr6nw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIE3zCCApOgAwIBAgIILKLkHn6rwKAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDkwMjEzMDMwOVoXDTIzMDkwMjEzMDMwOVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO1PHGLBTTmWsFYMQvRQX7zcy9OV3rb+o1cY/moouyJF3FwiIkbK7gHawBwiwraQ4CBc8C7BTcCbOWRbvvJa+p+jggESMIIBDjAdBgNVHQ4EFgQU5MUl/8big5VpHbJE35E0EJ5cuF8wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA5MDIxMzAzMDlagQ8yMDIyMDMwMTEzMDMwOVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAAQI3H/45srCJtEi5+gwT2GCEx6zV65ytEOsct9bUu41U5UDYhYp5rtaIWpguPB2DuHs1zFY7bqwiD7INyDeRIhCrBZuQkrIsBGImE+IcoXJAdri/vUOPToYxpcA3uwqH/1EOhuhSlUz8Czzb7rDY72K1fXQYCKYGNkEBEDrSC66F9bMD4ATtRb97DMZAY5QmTX8MVjSvrd9WoiroQ0YaT3Bt38SYzwY8QV10ovbo+VqkY3d4bK4zTHGFh1If2ttsPAWOLV8mc3bp6CGPm9VxfZY5tMBgVsDNcpY9LKLFGHivmsduvSFfugNsPDELnj8gBMihCtnOTzI9Qugs298tIYg8awef2GkJmdsdQX1IcQJjrw19ukgbjuGDr3EIfmDrjfRcdFdDSvE6xBIWRWa/XnrmdoKvUnuRrCFzcOSfaMBEER5qJ+dQh/08KtKPdRXvNFoyDLfS8eHRRLIkEDtd3HeuKedHclHjn/+JbazIGBYjogqXothsnSK8bDBblJnO8nAFc3AdVk6BbmjitMSQsU0oYhpSg7Ew3HxHYXGCmZ8rHLxzGOC8h/KaEcS3qP7IuyMlwnZdITbeli3qy3UVTA0jd61/HJLDqJMaYX8bvcPpcfqW5mbVV/X64il/jyNURdoKkAYFFYoMNgBz4QY9XKn1dGC1WcE7EFXAjCUMawC", + "kid": "Amn7EaBy1ag=" + }, + { + "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", + "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 6", + "notbefore": 1637317418000, + "notafter": 1700389418000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAM+XCsJYYmHT5wSsEfx7DF5PWT3D\nCIbIdWjSxS2NWcbsPx7zjbWi/lMKbaSDdrYnO37o5zn0fI7LUU1LS5pKtQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIE3zCCApOgAwIBAgIIOrhc6Me7w+wwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMTExOTEwMjMzOFoXDTIzMTExOTEwMjMzOFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABADPlwrCWGJh0+cErBH8ewxeT1k9wwiGyHVo0sUtjVnG7D8e8421ov5TCm2kg3a2Jzt+6Oc59HyOy1FNS0uaSrWjggESMIIBDjAdBgNVHQ4EFgQUf89Xu5cdTN4gfMJ2P/Cv6Hx3swAwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTExMTkxMDIzMzhagQ8yMDIyMDUxODEwMjMzOFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAC1HMWC2knZxMj/RtkmRMgG+5iCve04Pv69avIHfdKLTzUDTPyEhtROjZ+IFUIK/RddtJ2KMyJbgprTZLMtOiOT18BEumkZB3L3VRyPa3PfLQ6DqoAgqvjep3tjyH9jP3Ibn2LWHKiLrAHmKl/IekWFfZcZ+gsmqRvRhUpi944X0rBD9i/Xe0T7BTS8CjCZBptIPY2/MRsvteAR/L6h/lm7S0CzofA/FnEtdD/hskVzIbgsJgSPWfUZsKLUwP7gsE71Xq89Q+BeZiUy10x1moTk/sWGnNVcGXwCobCfRnaOA6FUpBoayq3L1jvZST5l92+HhrfUOVTlbcJHOxHQe/2KIT0w1O8geLaPB8Fo8LzEX5h0PTrA/qnG7JqLE8PF/mHs1WKywDmbrx1UFwIfQknvLPdqcnHmFvvSf94BpbwN2Mk8E586krKu71rGMhZBHWmbQ+YVgA9lKt6vP+MnqSwj7RtEEfsyySGrLP9zoFa6RD7aLKBvwhnFuk3knOfdXo3h9TXJpMoLkG5BDK6mJ5zNU8+pYedDyea/QEpE4K7Ledo6RpYyTj47H46KPgyfGnb0YZT/LC3Kn99ejnf0hoHRL3zUt75BoEngLAR6g4BAyyrXoEcVpt8JtDTcAHCMMwMAD84FZBAVNcaCrPNkedX3eyBoN1bIwbGBeKhrgMrq7", + "kid": "SiEt1ct5otQ=" + }, + { + "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", + "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 4", + "notbefore": 1623232314000, + "notafter": 1686304314000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHTBJY0Z+T5I8EmqQmrbZAr8equIc\nKKE+YriIGw/AKJyw0ZAj1Dd2MRTM3+AEiNARxXIF08a2rhUvFCyyHCJ2DA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIE3zCCApOgAwIBAgIIbOmJZDQoP+owQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTE1NFoXDTIzMDYwOTA5NTE1NFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB0wSWNGfk+SPBJqkJq22QK/HqriHCihPmK4iBsPwCicsNGQI9Q3djEUzN/gBIjQEcVyBdPGtq4VLxQsshwidgyjggESMIIBDjAdBgNVHQ4EFgQUhHOTxbELqlA8J5QtocLrpUvgC48wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxNTRagQ8yMDIxMTIwNjA5NTE1NFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAEa+gpgHss7+IdPOrr4bzlMSavqHqybtRzSH2hVBrbZ9Ov3vVDmIksbUNM3nlVPL5gFAReHEJmXhHxwvoxyCO/NXOS+itmGkYRPHRH57xTa9XIGcwWmAnbwxVy41B/NnOMeAB2TouWWfX/ZYzKiNyFJ7JEIdaQcZ/2+55c5mlEVFMdpeDR2vmB+cgrz6j0iFxoJ1/QQeWkjfD8nr/Auy7zfm0MgQL5wZEI08A9LAKZjFbawHcJx2RWuwWFc8dLBTMxYM0ptrXYNH/dDRpuNXMuqh68Os/aei5kbolHM24bSBycvInYBYyVRTi2ABDdRpItl9BEGqPSkJoYrrB2hZ3roNNugANF1rm1Fx7hlK80QiMoELoM1RyIovlrymQb45USV2+OuEtvZ6BJ85l7q47tbwr0xxHqIL9n82t4My4M0U7cIu5SPv6qv+ubLGnbqJvgoT9Tf3QGrH5j3XDyU0V4YfvfQhcOBLNlduuA2cihdAh+M6MLRbtG9svKsrA4k0PtyB9UCtqufsfDhkjM4LRGjmylclgmDtNH6DixcFxYlK1+fikZSIPnw476WgS8/2biw2m4gAsxEZ5/vg9L/u11i853AOSsh/sFxjp62K3O5mFAvdmLAJmrofOUghoNcAzJdDbSWtHzqQYJ+BWIjoIDiJh0m8Sl5/hVv6Bh6Xtrp/", + "kid": "bBnmkeVMV6A=" + }, + { + "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", + "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 8", + "notbefore": 1637317780000, + "notafter": 1700389780000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+vHkPlOZP+DAP5kw5j4miyzrtTc5\nwM5vNkcNqWy4e8YHf4ZR1bEpQjRS+ksnCKfbEDf82p0RRzdtbQCdvSdsEg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIE3zCCApOgAwIBAgIIRuunuryIv2MwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMTExOTEwMjk0MFoXDTIzMTExOTEwMjk0MFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgODBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPrx5D5TmT/gwD+ZMOY+Joss67U3OcDObzZHDalsuHvGB3+GUdWxKUI0UvpLJwin2xA3/NqdEUc3bW0Anb0nbBKjggESMIIBDjAdBgNVHQ4EFgQU+Wj2rLs9D5DTRelKDWzq59tIm9YwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTExMTkxMDI5NDBagQ8yMDIyMDUxODEwMjk0MFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAE+CfZcxHrwDJmXImxn7vMOlRw/Bvy2wv+SIWHE5HOMvHa0eAbbADPz87HhyoMMnC9vDKfeEjaa8qyiVTtAcAT0yBtJJaLITEMm+uGkIHFcA3LkzLVubqFhDGUs3bqRRqvBY0+tqdLKRvWLn80XC0KpHrtppUAhwhDYZ9LKcAeDC9Hz2Zh44J8MYyYlcrGrzNvoEWE80+IHfOXkztop0P1ruwa6zpyrElbJ2AJ/Cfd39MaYxxpB2lLRXKjm1IkqjjYmolKphoF66+NLKdz6Iirtdt3i47G34ASHvu77/GHSrSsb0qsxlcQI7hjhB0jU4WIQOPKBPpdiBH5lqQ78GLe2oFsNv0FFEn3sbnmcZOLaaDzUlgcP+TqAQq0mjXZIXmTzvEc9Oc7sO7LeZWH05b3kQdywL6xa0US9Q+fpz3olPi1DAos0hC2I5Th1veQqUQ/+7EVHWaicX3W/S/+TUMHBixNr8CA3kioFGu16fDUNdyuKlrmnitpjeiELG2Dn9dkqpKDDVHPy9NLPLBY2D4m+GFxfuficry7G499rDyEkeAWjmG5xzwIgzx4zSdGVDsmBLmNNkhIoBWpnjB5+7ff+lCj93yLMfGfU3+kuWjYHd6XiymcqQSjBwzR6pzb0k2q/AsRn6ovWKf0e2ZE/yVD9LLUmUJOXoVdIRB1rizuk3", + "kid": "gcZRP1ogHyU=" + }, + { + "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", + "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 1", + "notbefore": 1623232135000, + "notafter": 1686304135000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEExXQauou3f3g77qOsZ0rSPFjoTDi\nKQDhG+Bpf34YyoeFkYMBML890KaqmZL4uezBc8xxg1f170qcZWHILjp4qw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIE3zCCApOgAwIBAgIIM5IkTBngr+AwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NDg1NVoXDTIzMDYwOTA5NDg1NVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBMV0GrqLt394O+6jrGdK0jxY6Ew4ikA4RvgaX9+GMqHhZGDATC/PdCmqpmS+LnswXPMcYNX9e9KnGVhyC46eKujggESMIIBDjAdBgNVHQ4EFgQUX4tTu4HFKg7kh7/7FCeP8+7D5CwwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTQ4NTVagQ8yMDIxMTIwNjA5NDg1NVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAE5HQ1OIeJz3gkH2Wrokpb2nLC/ytoe5t9zkK2LY+UmVvTP59uG1dyIWV5pv2hwYnCiSOOG82YJRfdsts3i/0NHlESPChvyoG/E97tvdjB8doTj4gCCTx1JmRpp2vOQZuQsOB5QeTY7nL3yCHZF7yniFDPQpk2WpE4tY4gxxt08hlhRs4C2iZ8jiN2DcMqJwippu0OdAca9mRFPnVs/tGjBT72QrEnPPXWu1pz1xdIW6sDbC2OhCkAMPC4qehWh00DuhxeYgkJF6cg5NOLT2iiAeEv0/DGdYsy1lM5JxE4BmWaZ9mRuvNvzf3lC6DVFHTr3R7/88RblxfWA/TH7E2TQT40JwhQ0YyhqWYC+W0T2cTW2NICedtIpAv8oECRentxzvceovuQw/BxacZUbs8WEJFW+WKGJvAeyaFrkLrze3U5UH3kurD3tG97E77wbFu31iivDmftrvWv/OSDFWpFiPkEP0pe46eY+x/KGiBZNYj6sxeC21W7CxAftQdgoOAPU91j9otI/0n/7XLV71Y1fnt02nZwDOu7ajLHebpjUtnnDsHojOAr3NQKEy836Xg2E3JtGCWWBKnkvgj1/swYBLaZxE9FEGo3nTst9TpwS8GpgXFoQEoTNSV5UBVCwT2djcZCEmhG4GPCrqeoh1c6bfTRbtORXv2HZqYgv7w6eo", + "kid": "ln8K+9SqfuA=" + }, + { + "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", + "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 5", + "notbefore": 1630587618000, + "notafter": 1693659618000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHcMt1ez6jhOR9UBCXlFg//cHD/Jo\nypGzNaG4C/gYl4qQdN+Vns7/idf8DO6Fk5z+Yh+I/vQ4vUQ5bWZSwRwUJg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIE3zCCApOgAwIBAgIIOZExjV2kjGAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDkwMjEzMDAxOFoXDTIzMDkwMjEzMDAxOFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB3DLdXs+o4TkfVAQl5RYP/3Bw/yaMqRszWhuAv4GJeKkHTflZ7O/4nX/AzuhZOc/mIfiP70OL1EOW1mUsEcFCajggESMIIBDjAdBgNVHQ4EFgQUAiIZbrncLuwgAWNZTfPNphbK5EcwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA5MDIxMzAwMThagQ8yMDIyMDMwMTEzMDAxOFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAJrQJUzTWjcyjHZj2Na/4TuSNTolOM2bDlEBoEqUAY3rfx42rM7xJT8giWcKL75arhGgkpzEqtJeQBaq2yE/itDN9dGI35qi/MvIhkx0e94d14QwOkfMF5c9mJFMcXEbb2v5UE4cQq7Obic77cjGlSemS1ieTrjxT4yYu3LOYOcTXQqR5qNeor97zHze3esvAC7VjTFo1wcg3kK8PZV9s25q9IeiNvhzcu3IeMIEtB6sC/E3q2B1KbvkEInr7/uHMRylh4cqfyK8VCewkIDIEReudLbSjKJBAQipDnNSuTswu89vNB1nY7kdRIyISqtgoB5opoadPDEdA6DISea2dvfXs5LohgjN4zkJK8R9h7TQizFaI1PKMVADzP6e25hPA87SVVb2nDGxzlXY2tJRGstvuD6cWvtfhc9fn71VUtIsjG3iF9XJA5xYOijEM8xzqznv8GJltrmv7f/pxTOQuyb4FR5pRzVRFaft0B9igToiEDeZoq8O/jVn09fvDRa2sxeQpXvRcQvd9B1YppLdziHzVyzQ/X6iD0nuQ/8osGZyq81yMrvN1uPpROgfcleo+yatl3VavV7HRG1e1Ur0G0SZ3xmC12RRoA3m3FVSTx7WsQcy/uurcmGpAs5gf9BkcTcodGM4ktPjjpu7UvoKPysSlI0tI3TtXYY0aRICSCYa", + "kid": "o11W81MgYYg=" + }, + { + "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", + "subject": "C = NL O = Country of Curacao OU = Ministry of Health Environment and Nature serialName = 1 CN = Health DSC for recovery", + "notbefore": 1627981990000, + "notafter": 1974877990000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENlKRwpA1S14Zfx6LZuAWm9ExHy86\no7O9ijCq4AmZ1dFu2d2wowdylJzAvbbVsR1RoxfNJPzy5dwu9Nsm0PvsEg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDOzCCAuGgAwIBAgIUExGmExTT4ef8rDmoU1gm1xnsB3swCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTEzMTBaFw0zMjA3MzEwOTEzMTBaMIGMMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEgMB4GA1UEAwwXSGVhbHRoIERTQyBmb3IgcmVjb3ZlcnkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ2UpHCkDVLXhl/Hotm4Bab0TEfLzqjs72KMKrgCZnV0W7Z3bCjB3KUnMC9ttWxHVGjF80k/PLl3C702ybQ++wSo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANDVVcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEDMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFGxsRf1q1IJFSUabsYjk8Zhu4yi4MCsGA1UdEAQkMCKADzIwMjEwODAzMDkxMzEwWoEPMjAyMjAzMDEwOTEzMTBaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiAmvnUyiPPbVM7Ds+gisStbuwGRZ/ujjlfpKU0Kxhon6AIhAM8VBy0s4syzH9gDqrayITXG1r9253IAvNyxoHFhej6P", + "kid": "0JzyumjttZU=" + }, + { + "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", + "subject": "C = NL O = Aruba OU = Ministry of Tourism Public Health and Sports serialName = 1 CN = Health DSC for test", + "notbefore": 1627978373000, + "notafter": 1974874373000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKBG1WklnURluKXTg5+tm6/S7pMFL\nBE8cZ5xNxnCCAL5nvUi6JzSgTjAmOaUNPXVwvA2TYl/GkJNbh4TazMeF3w==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDLDCCAtKgAwIBAgIUHVt+j6ML1RILakWOrokwx1vJhWQwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEyNTNaFw0zMjA3MzEwODEyNTNaMH4xCzAJBgNVBAYTAk5MMQ4wDAYDVQQKDAVBcnViYTE1MDMGA1UECwwsTWluaXN0cnkgb2YgVG91cmlzbSBQdWJsaWMgSGVhbHRoIGFuZCBTcG9ydHMxCjAIBgNVBAUTATExHDAaBgNVBAMME0hlYWx0aCBEU0MgZm9yIHRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQoEbVaSWdRGW4pdODn62br9LukwUsETxxnnE3GcIIAvme9SLonNKBOMCY5pQ09dXC8DZNiX8aQk1uHhNrMx4Xfo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANBQlcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEBMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFFtRlFbRHNsuvQN/xIEwp1U/8DPXMCsGA1UdEAQkMCKADzIwMjEwODAzMDgxMjUzWoEPMjAyMjAzMDEwODEyNTNaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBNaAhthCNLRsfnXOACy3Wc+bkJ/oGxaEnqx8S0y3EkdgIhAKlbCGuSnLbyeUSBQ00N1K+iNzc2JoaP5CNyOGDOFAqg", + "kid": "2Bh+2HrOg0c=" + }, + { + "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", + "subject": "C = NL O = Kingdom of the Netherlands OU = Ministry of Health Welfare and Sport serialName = 1 CN = Health DSC for vaccinations", + "notbefore": 1622471252000, + "notafter": 1969367252000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsO\nNkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw89w==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDQjCCAuigAwIBAgIUU0JrRUBVL8DEW1z0jx8/+KAChLIwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDI3MzJaFw0zMjA1MjgxNDI3MzJaMIGTMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEkMCIGA1UEAwwbSGVhbHRoIERTQyBmb3IgdmFjY2luYXRpb25zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsONkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw896OCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBRVYJgZWfyzk3JJwB0HVdom7P7AxDArBgNVHRAEJDAigA8yMDIxMDUzMTE0MjczMlqBDzIwMjExMjI3MTQyNzMyWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAMMFkIuctSqsZbVBvE56YEZoxrF6m1n+F/IajFdNsRyeAiAC77Q6e6IOsDkPwq/ajPA5vslzeFETwcqNodsfAcJJEg==", + "kid": "3lTmAZX19GQ=" + }, + { + "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", + "subject": "C = NL O = Sint Maarten OU = Ministry of Public Health Social Development and Labor serialName = 1 CN = Health DSC for recovery", + "notbefore": 1627927711000, + "notafter": 1974823711000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQb+DcAtDpjI4ftm5ICNC5KGz10zJ\nvY682GDCREwLupvC17QzWFvc6S0jbk2NJt2VY5V4svj2FfLGkSWbUqUFnQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDQjCCAuigAwIBAgIURZYaoJKl/Wy6+MSJA+7KBAfLQpEwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODA4MzFaFw0zMjA3MzAxODA4MzFaMIGTMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExIDAeBgNVBAMMF0hlYWx0aCBEU0MgZm9yIHJlY292ZXJ5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQb+DcAtDpjI4ftm5ICNC5KGz10zJvY682GDCREwLupvC17QzWFvc6S0jbk2NJt2VY5V4svj2FfLGkSWbUqUFnaOCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDU1hNMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAzA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBRnd3nKzgJx3I/4ejFn+5GLW5DFMzArBgNVHRAEJDAigA8yMDIxMDgwMjE4MDgzMVqBDzIwMjIwMjI4MTgwODMxWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIgaUm6pa07v+OCyyGzYK8XIuUIl1RF3Yvlzw7otvuvZVoCIQCdKQONn+bW52R3pKdoTb4ssYYYHpizX2UvWUJinjwf7g==", + "kid": "4Ss2raOqhTw=" + }, + { + "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", + "subject": "C = NL O = Country of Curacao OU = Ministry of Health Environment and Nature serialName = 1 CN = Health DSC for vaccinations", + "notbefore": 1627982110000, + "notafter": 1974878110000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEawHNq4c7wLusLEYNhn7CBSqk6bdY\n7Phqjt1+Q+CVRHqBFfSRfWG+9dgoEMBdFHY12g4qsO3nnT2P4qhADwIvng==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDPzCCAuWgAwIBAgIUNoYe1qfQWUKjenQM2hZk75Gj67kwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTE1MTBaFw0zMjA3MzEwOTE1MTBaMIGQMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEkMCIGA1UEAwwbSGVhbHRoIERTQyBmb3IgdmFjY2luYXRpb25zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEawHNq4c7wLusLEYNhn7CBSqk6bdY7Phqjt1+Q+CVRHqBFfSRfWG+9dgoEMBdFHY12g4qsO3nnT2P4qhADwIvnqOCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDQ1VXMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBSvCnweDV0fhXiABpn551ECcIPLeDArBgNVHRAEJDAigA8yMDIxMDgwMzA5MTUxMFqBDzIwMjIwMzAxMDkxNTEwWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAOFtWGrE3NItKSKHvNypt0dHo8pfWcGwtWov+UinZkXUAiBYAd6OmxMik1GktF+cph96ldfimOpNnCobSLhpuhrhGQ==", + "kid": "H6b6bQ8qij4=" + }, + { + "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", + "subject": "C = NL O = Sint Maarten OU = Ministry of Public Health Social Development and Labor serialName = 1 CN = Health DSC for vaccinations", + "notbefore": 1627927825000, + "notafter": 1974823825000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERw+zOjyFNs4ntgwxcvouetTqlBIz\ntiTtJhOi8DesKXv5uX/m1pVAbYium/fhyu0IaBeh3DVOLfLJtPaUEx8eiw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDRjCCAuygAwIBAgIUeS2exS2QVGgMamwCH1rOy8XFhEcwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODEwMjVaFw0zMjA3MzAxODEwMjVaMIGXMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExJDAiBgNVBAMMG0hlYWx0aCBEU0MgZm9yIHZhY2NpbmF0aW9uczBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEcPszo8hTbOJ7YMMXL6LnrU6pQSM7Yk7SYTovA3rCl7+bl/5taVQG2Irpv34crtCGgXodw1Ti3yybT2lBMfHoujggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA1NYTTAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUznY2NjB8NXsMUCHPOlgYek97hZYwKwYDVR0QBCQwIoAPMjAyMTA4MDIxODEwMjVagQ8yMDIyMDIyODE4MTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQDx1fY/jA5stQeKO1mdP5EgJ8iOho81Ob/B/yXfg8XKTQIgSyuSbgQQu0j1fY5gxnFhyW+1M2Si8suaq4As21gBf5o=", + "kid": "JsReuAsmza8=" + }, + { + "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", + "subject": "C = NL O = Country of Curacao OU = Ministry of Health Environment and Nature serialName = 1 CN = Health DSC for test", + "notbefore": 1627982059000, + "notafter": 1974878059000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPVZAyUlqrJ3XW8kCQu401SKWJ1Gj\nF+LBjT16DUZO0RaRdAPsKx8FUBwqRBtn8dPzIP+EWDX7iUppuG0TNkt3Ug==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDODCCAt2gAwIBAgIUR6VYtf0ovWBCl7FHT35IVzVQ1EIwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTE0MTlaFw0zMjA3MzEwOTE0MTlaMIGIMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEcMBoGA1UEAwwTSGVhbHRoIERTQyBmb3IgdGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD1WQMlJaqyd11vJAkLuNNUilidRoxfiwY09eg1GTtEWkXQD7CsfBVAcKkQbZ/HT8yD/hFg1+4lKabhtEzZLd1KjggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA0NVVzAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUp42ATAZjIq8GuJM8TlU1qEBtzWUwKwYDVR0QBCQwIoAPMjAyMTA4MDMwOTE0MTlagQ8yMDIyMDMwMTA5MTQxOVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0kAMEYCIQD11uNYCNN/3xpgzvNI60u1gF/5aycL7HhApAh2mX8x7AIhANi3q/cTgsLOq53sX8mbZAZolL1LMGhfWHyRkwY7mIVn", + "kid": "T8kbYovQlYU=" + }, + { + "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", + "subject": "C = NL O = Kingdom of the Netherlands OU = Ministry of Health Welfare and Sport serialName = 1 CN = Health DSC for test", + "notbefore": 1622470783000, + "notafter": 1969366783000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERyOtPhis4M+vOSM+4AoqtBot3s7A\nGrqQOSA2ZY3a25z5e4QlRpExd1S399CADvo5j0Nyqrm/azrhFIsSAc8FIg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDOTCCAuCgAwIBAgIUDWwu6rWJGF0zIQk/aKjdU0TXoQowCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE5NDNaFw0zMjA1MjgxNDE5NDNaMIGLMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEcMBoGA1UEAwwTSGVhbHRoIERTQyBmb3IgdGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEcjrT4YrODPrzkjPuAKKrQaLd7OwBq6kDkgNmWN2tuc+XuEJUaRMXdUt/fQgA76OY9Dcqq5v2s64RSLEgHPBSKjggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUJ6rwxau+2kWqjA+f1f8vUJSkiDkwKwYDVR0QBCQwIoAPMjAyMTA1MzExNDE5NDNagQ8yMDIxMTIyNzE0MTk0M1owDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0cAMEQCIFuevBHjahuLYCe1bOFCmy6V5FSfyJrVo5+hd0GCSDRMAiBdRK619VMnXNGf573r/PG6nVpeJ9aP/qpkmZG3TVGQDg==", + "kid": "f+4yAPIGTWg=" + }, + { + "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", + "subject": "C = NL O = Aruba OU = Ministry of Tourism Public Health and Sports serialName = 1 CN = Health DSC for recovery", + "notbefore": 1627978251000, + "notafter": 1974874251000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf85n2j7jSWalqCH8Dquo5E3uyYIw\nYReoWWAiPkIvnwaaoPUt427OizGvRF35l0wPD6zSkbiQZxWI1DMaf+UeXQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDMDCCAtegAwIBAgIUf+V5qIHrABBVrichazDaEgY0x3EwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEwNTFaFw0zMjA3MzEwODEwNTFaMIGCMQswCQYDVQQGEwJOTDEOMAwGA1UECgwFQXJ1YmExNTAzBgNVBAsMLE1pbmlzdHJ5IG9mIFRvdXJpc20gUHVibGljIEhlYWx0aCBhbmQgU3BvcnRzMQowCAYDVQQFEwExMSAwHgYDVQQDDBdIZWFsdGggRFNDIGZvciByZWNvdmVyeTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH/OZ9o+40lmpagh/A6rqORN7smCMGEXqFlgIj5CL58GmqD1LeNuzosxr0Rd+ZdMDw+s0pG4kGcViNQzGn/lHl2jggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA0FCVzAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQMwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUsGbf7QCnDPzuBPOlOmArt9xBPZYwKwYDVR0QBCQwIoAPMjAyMTA4MDMwODEwNTFagQ8yMDIyMDMwMTA4MTA1MVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0cAMEQCIEg83+MS877WyCurvbC15pDKViLqWrbQvSRD2tjTT6JzAiBKlOFgjK69luoWCDFIFd/TXNVp6vIX9YOU1YZmrlFu4A==", + "kid": "lzGYCpOBQsU=" + }, + { + "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", + "subject": "C = NL O = Kingdom of the Netherlands OU = Ministry of Health Welfare and Sport serialName = 1 CN = Health DSC for recovery", + "notbefore": 1622470440000, + "notafter": 1969366440000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEiY+AGRWtd8tCUb5PQdEPaCWAZl0D\n/SIOtcDH8R8yrp/JT8MmMxV/wM15WiZf09Eyy3iJXwFT+9YOCyrBA/Cejg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDPTCCAuSgAwIBAgIUSK4bme7ziau/JZkM80IOLM8iauswCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE0MDBaFw0zMjA1MjgxNDE0MDBaMIGPMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEgMB4GA1UEAwwXSGVhbHRoIERTQyBmb3IgcmVjb3ZlcnkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASJj4AZFa13y0JRvk9B0Q9oJYBmXQP9Ig61wMfxHzKun8lPwyYzFX/AzXlaJl/T0TLLeIlfAVP71g4LKsED8J6Oo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANOTEQwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEDMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFO9JANKEcntn4oTJgtch48rqSZMpMCsGA1UdEAQkMCKADzIwMjEwNTMxMTQxNDAwWoEPMjAyMTEyMjcxNDE0MDBaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiA9SzdZR+dN+yQ8+lUKzFCUl7noJ6YzB49zVsdYBsXJbQIgFvifkX+12Ib3SsdCb9TGkzQtD4ZxCLrx1T0ycsNwiUU=", + "kid": "pSEfhlMubh4=" + }, + { + "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", + "subject": "C = NL O = Aruba OU = Ministry of Tourism Public Health and Sports serialName = 1 CN = Health DSC for vaccinations", + "notbefore": 1627978403000, + "notafter": 1974874403000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcI1v9r69Swup7ghwGhCA5xoG8Sop\nLiD2DnfkhTydslZQBHc+TuieZ11aHYkD91gmngRXRsGU8Tow/LEoKPkyuQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDNTCCAtugAwIBAgIUECsnQP2ouWaoN8GWtDfzIzOjQsAwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEzMjNaFw0zMjA3MzEwODEzMjNaMIGGMQswCQYDVQQGEwJOTDEOMAwGA1UECgwFQXJ1YmExNTAzBgNVBAsMLE1pbmlzdHJ5IG9mIFRvdXJpc20gUHVibGljIEhlYWx0aCBhbmQgU3BvcnRzMQowCAYDVQQFEwExMSQwIgYDVQQDDBtIZWFsdGggRFNDIGZvciB2YWNjaW5hdGlvbnMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARwjW/2vr1LC6nuCHAaEIDnGgbxKikuIPYOd+SFPJ2yVlAEdz5O6J5nXVodiQP3WCaeBFdGwZTxOjD8sSgo+TK5o4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANBQlcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQECMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFM3bsoRYxPuXAB71DUGiFlVsI2pOMCsGA1UdEAQkMCKADzIwMjEwODAzMDgxMzIzWoEPMjAyMjAzMDEwODEzMjNaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiA4NIHd9nrtJJutNFlPr7hMwLAG5S0Fg8/sDNGgTiO42AIhAO8+HmKyw4rg55MS25dFf5zZYvQ/Gu0ddo97T49wK3qn", + "kid": "ryvXsisPPeU=" + }, + { + "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", + "subject": "C = NL O = Sint Maarten OU = Ministry of Public Health Social Development and Labor serialName = 1 CN = Health DSC for test", + "notbefore": 1627927778000, + "notafter": 1974823778000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnRYo0qQ5BM+B3lWzaaqBhgTqQ99w\nnzj078WYakRSXv7LyJbz21EGEQkNpe3UOlENX5Q7RdzkrrXFbs7pHfNDpw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDPzCCAuSgAwIBAgIUAc0BMCshHZKc4/+JL2MOXBv10d4wCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODA5MzhaFw0zMjA3MzAxODA5MzhaMIGPMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExHDAaBgNVBAMME0hlYWx0aCBEU0MgZm9yIHRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASdFijSpDkEz4HeVbNpqoGGBOpD33CfOPTvxZhqRFJe/svIlvPbUQYRCQ2l7dQ6UQ1flDtF3OSutcVuzukd80Ono4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANTWE0wFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEBMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFAPQ7CLWYkeVzUr1/A2Qhww+QJc0MCsGA1UdEAQkMCKADzIwMjEwODAyMTgwOTM4WoEPMjAyMjAyMjgxODA5MzhaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNJADBGAiEAnQEMyEA+/j3kz/5N2bYc456EmYIDMlPaWa/8y9CKAhQCIQCz6RYG5r3ZJ3tRmbb4n2EVBGUVjcldIZDh1f2R9veJpQ==", + "kid": "ypEjzbYNqEw=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571146 ST = Berlin", + "notbefore": 1624540407000, + "notafter": 1687958007000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUdPPsk9xzY1vM1zdjgvHDsRCST55\nY9SJBJUXI5uqGb6ckpT7xQFGbm+WGQuFJ9E0w3Zyyqb9P/bsMJQmJkrpkg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "0L7AaIwu+EY=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413462 ST = Berlin", + "notbefore": 1623059747000, + "notafter": 1686477347000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqD56CIMWer5HDRhCpUrq5lZ6F8Wr\nFPy/IDwjgb44oE2BELk1xBbjXvz7kSPpf3jp48wPI7WWLcx/V5K1A6obNA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "1+da8dKEjlE=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382898 ST = Berlin", + "notbefore": 1622717182000, + "notafter": 1686134782000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtGEETBc2arnjxxBWO3aDW+rwFgwm\nhqPbxhaUuOEC6kkd3GPhmXPFYKtmFM4IQDj1Cfqu2bIHa6RqF9uEMbtxwQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "2BGoyFIyYPs=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460071 ST = Berlin", + "notbefore": 1623423164000, + "notafter": 1686840764000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeL12fn7+nUNW+9T9zJLaiZF18rfz\nL1I735fT+3zuKryR3K2oMIMBDFbrrLVva3UeOEZaz+sUwUKWHMg2HgQttg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIHUTCCBQmgAwIBAgIQST/DZpnhqYRz4xrgKJQOJjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MTExNDUyNDRaFw0yMzA2MTUxNDUyNDRaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0NjAwNzExDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHi9dn5+/p1DVvvU/cyS2omRdfK38y9SO9+X0/t87iq8kdytqDCDAQxW66y1b2t1HjhGWs/rFMFClhzINh4ELbajggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFCqNWGBm2Bh1SEh3l8MLa9c4J1zKMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAFF3EILDYdQZgZxURzmhnmQZZ3W55FSoj3cLmzJ5xIM2z7T/Oa21XwenJ7YITFQkEDpHUvBDjL4V1U2nZT0hGbPVSsYBYZ4g6pW/p4jESGSmImsRtEXFT3lXZh/606g/mWaRJiY7ofDws0X7DxTOgdMHjCQY9OAp6k/Lam8k80TsWz1yel0vADwfor5xM+ooZG6xoK3hWv+H/aoap1cAa9uB44bClsBes/UJEkurTD2QQmbSj01LMHMGARuiziZML6M9BzgzADFnTT9rjgimmXOkqyNkRRaHQZOiQaR0DFR2JULTTTLgpwY6ap0b42pfA+T6ZftL1MNMSvLgOY45cDUka4KPTvOPopV8Jg/0URYy2fwzXG/7nEAwUvXYgdU72Z5Q2wPKiHQUb/srIfTTT/hC9wpfkZS9DOMCPJDsWE0VaGL/aOdXuy0G7KosPH/nUnAWCj6WcxLe2OIMWDZKpQfTM2RSoXdlNqZ/QosyvB/cZoqdJXSnkc7CNDqEGNCfo2eV7wWjBc+jH/skWGRrOq36WvF6GHXh8jVYFm1nh7B52O5zLfvRgvJ0YfOtCAO0iCBpDaSQicipm2uRxTnoOSvowbxDyaYgJ7OxdEFwdLq6lcCuKp7/mRQHsHCshZn3AYkbVINA6Zb9CbtIGSHt7z49HmKHL8/64MZLZTym6SmM=", + "kid": "2JelGO/ymxQ=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413213 ST = Berlin", + "notbefore": 1623059345000, + "notafter": 1686476945000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtgz2ifmTj/vZbBaz6xlNCdQlw4FQ\nU7v3dUrJYQEigk4Lz8dY1c3pGzYO33TjrgN/Qn+yHaYMHl6+06Gk7AuW6w==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "3LCRmucB9kU=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382791 ST = Berlin", + "notbefore": 1622716844000, + "notafter": 1686134444000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8nZrLqMlw5EvdfvJXgxb2rXj9OBT\n2UWBqAFLeCoQXuY+YOZJpUtL4wFQHMGPbvyoWvvcfWtrz3ZXHwaaigQG/A==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "3jqajzfHpKE=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414054 ST = Berlin", + "notbefore": 1623061369000, + "notafter": 1686478969000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE71N2pH6YyC6gfUHwiEJDzIxwMIW/\nHs+Cgn/gPQbZAkFcyX/LTE2j2gZD8hLs55TErTTKokvHkrEOWtHYkIDhyQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "3lrBUHc4iQE=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460099 ST = Berlin", + "notbefore": 1623423223000, + "notafter": 1686840823000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5sqOpW4x66Hmcposox406LFRWyGI\nvH2CA+Di7pgvWYIJLX7soTE36YKx53vPYRUhKtzexJ7nI90MtClg6NsTAw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "3oYtiEZ9wp4=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413639 ST = Berlin", + "notbefore": 1623060017000, + "notafter": 1686477617000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzma5iz5ZBIh1KDZhj9fSnqJoKK9w\neOGB/91w6FpdAUjFEKGDphj/MdGRfVro/gSyHRhpaQghZJXRDECOuSAzqQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "5xtSr6KkAGA=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382995 ST = Berlin", + "notbefore": 1622717670000, + "notafter": 1686135270000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8xghqNrE21susvTQHV9fwN3RWhBI\ndCYBu3laCz66NasqyquT47PJXuOifSUiNY2/qOyDuu0Ae8MKIHeUmN5wdA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "6FNkACSMLEc=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571164 ST = Berlin", + "notbefore": 1624540468000, + "notafter": 1687958068000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHrXK9pJSpMrEB4xUrXTTnb7RakIR\nzDtNh6ugnjfV513NFsu5rKopJYYDOk/Bfy5MyNug6nD3kSSUUy5yePrgmA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "6VdOPLF8/Fg=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614703 ST = Berlin", + "notbefore": 1632294727000, + "notafter": 1695712327000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErm7fxPeto31KuUPtQl6VxVchANLA\n6NTLFaFJ5bupx2WsBsICmk32sqx46/ZCHCmiFqGyfYv9IxatTrP233n5zw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "72XVTQ2A9Jw=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383046 ST = Berlin", + "notbefore": 1622717862000, + "notafter": 1686135462000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkkxNdS0EZvjP8j17j2k92vHZpX3q\nSNMDbCqBYPvmqzj1jnNEqsAZSp8uppwoShgmQPdUSmC5jvSaI0PiIRUJhg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "7XLhQx1KXdQ=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614776 ST = Berlin", + "notbefore": 1632295062000, + "notafter": 1695712662000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZftKRdrOhX1qx8KzPyrbXB/V8TYi\n2ZAsEwcr5gkoSkiPWyN+LH0BaRwG6HbqfjpqgdFztwj6PIRisTIQ6LYXKQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "7byt9scureM=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413569 ST = Berlin", + "notbefore": 1623059919000, + "notafter": 1686477519000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEOl2NFM+2gkakrrAa7g+F7KOXRziS\n4ydbxiNbm3XTu+L9LP+oSKMLOeJOBcjJA3RqrqAiWfoMriWGd0LRYM6TWQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIHUTCCBQmgAwIBAgIQbawDmGIpuNyewGKrbDNN8DA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDcwOTU4MzlaFw0yMzA2MTEwOTU4MzlaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0MTM1NjkxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDpdjRTPtoJGpK6wGu4Pheyjl0c4kuMnW8YjW5t107vi/Sz/qEijCzniTgXIyQN0aq6gIln6DK4lhndC0WDOk1mjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFMbuu7+RYSVgR6r70yxBdw11uLulMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAd5IVk3EaWaTMnV1LsDjeQ5/mkThChywdak9m8894RiekGSvQhVrJ+xllejM4nH9BVfTIWCgKkBlrjRZ32OyVNFJXHy8gq6GO0WNSCPXd1D6xShgxePpMeGoqEdJ/bIAV0P1pq3sWpsoOLYWFjOyypJYkKzS6Oq+qzP9yU+D84GIgv+zpJTKuh1ArsicrMzcRtQzs2rsoIqW2d5aiW42W8jLWwwrrovQaJTB/hgJ7q7m7ULVr19PsVLJCbTxJB5DvaHeAk4JBAFnnWLBPG3mgOIdlFLzsWzVyRFGwTr/kIDXrDtH9P7RFGR7tROhF4hO9Dq7Hh5Fhqo9grX2/20B9e7G++b1p6hEPhG4tawhByZFJTNZjImISGRphRiQtQSDfl4re0XY0gQ1lRHHlg9JQhgskoa7eqqeWJ3vtu++tpGlXQZRfMWGd0BVPiX8B9dvpURizsdZrjIcpDB3MonsT2lHY9uVjJCrhpy+IEqa2vDvAIQVSq4E4RQ/dF5xa34CyujDAfkT9tdgJ+59h1TsaQ9UGSUklYfdQYmoZ7D0ThTQ7R5LRsXitMOKMWM6WYQNLp/QV7fSrfmXh+0IbI9yTHe9aETMiKbqWpSTzZIwXixUoi2vj6xXTan5JuyaOGxTjsSQpWP/nJO3aUfWr5YM9vSO6TaAcIgOa7xyH6eGcptM=", + "kid": "8AnF/hcilSo=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571377 ST = Berlin", + "notbefore": 1624541075000, + "notafter": 1687958675000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE65QJlG4NQ1UKM3/5Yf6n9u430S0g\ntEarOF4e+WrILwUamksO2zJfSgAwXJV2ZzzenNRml1iFffdf4V7yxzgLUw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "9IZVOkJRZPQ=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026523255 ST = Berlin", + "notbefore": 1624011175000, + "notafter": 1687428775000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzIzHRqk76vDGIUAj3dIo3UVev41t\nak5P5oxO+zaOlsKnxUNbo9yqIcpOo7stI8WLrif4RRaiZoQ0tvahSHH2iw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "9v3FozjKAUo=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413994 ST = Berlin", + "notbefore": 1623061275000, + "notafter": 1686478875000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEM7zYPRk1r4viA/oG6BxLec1shhb0\nJoDGjLAUuPxmGSMw+aCQZUcY5MtUqnVD3x//kviuFZDumf65i0V1o7Gsew==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "AQCGDydsS1Q=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383019 ST = Berlin", + "notbefore": 1622717764000, + "notafter": 1686135364000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuCgNX5VUmp7/lN7/UDF5kRDz7qvW\nnpgFOKwv1AxJXbSvwJj5ADOP9wGAsocoSJtPr3LbjbmqAqndrgr3831+tg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "CvktK3hdjeY=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413231 ST = Berlin", + "notbefore": 1623059412000, + "notafter": 1686477012000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExfciFuh1jL3LBPzaNAVmmVTL87eJ\n6wVctSg393nUcXxVL1v5vCgp6jWlRdJglVJj8jRG0TfF3OLjDUHAPn2rAw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "DusseXrzqO8=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614837 ST = Berlin", + "notbefore": 1632295172000, + "notafter": 1695712772000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6JUSmYQDMdlfXO6t5UIh71Hhib6D\nZ7VFVaRHqIiSem6blCKAJ9bSQoEJDjl+zrXVBbnTZYJAtFXt+VBqIzq51A==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIHUTCCBQmgAwIBAgIQdR/Ssc9chsjFSNmB+iE5aDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA5MjIwNzE5MzJaFw0yMzA5MjYwNzE5MzJaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjc2MTQ4MzcxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOiVEpmEAzHZX1zureVCIe9R4Ym+g2e1RVWkR6iIknpum5QigCfW0kKBCQ45fs611QW502WCQLRV7flQaiM6udSjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IYyaHR0cDovL2NybC5kLXRydXN0Lm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmyGO2h0dHA6Ly9jZG4uZC10cnVzdC1jbG91ZGNybC5uZXQvY3JsL2QtdHJ1c3RfY2FfMi0yXzIwMTkuY3JshmlsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwHQYDVR0OBBYEFPeVuN8qHYmsT07fPk0gmp/22ZJmMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAf8NaC8deTquKkKHJbs62dGMbsToP4lvuXUy1cc7RgcO7wIJLilnIZInqdQn5BLlkcobx3vsUN7bk2jLGK8bLAvjtoRkb7fzOrtU3uZkX28dmEomJq0f8lon9tG75oYiUPx4XKjczBBow9Dau8WPHCgaXUGhRCbNELIXS3iXZ/LSTQXwYrf7eOZE82BfeVWbjaUuirmNTfWj7Cd1mQLZGcrndBeLNmfxiI5IW+7jzLqd6zdQQTLrz/2Ol3pU072Xb175ixyZTu47hwxU5vsbcNGK9PIFrKFBDc8j5XLQSITOvXkHWZahuIVZ4T6XxV4i+hHuXi8XFPWbLwJj9KyHIqYxNHQENNfvdmELI4ZrtVYPBxqj5ypIO44wHwhSxAEaoNPqVHpqVtmg9+5ve/20iE632ZPUqvVY+S5M+TGRDx7V/46vEiFZRRNHvj0kT7GmQBmunAV4nsNvxHO3u2f+8rhPtWo4+XFGymI658Au8e31iIo5y3m1aUSjxclY0VwqDEojE/rkBX2Cc/E4iVy7ovekIRRrPipZDhtULbdKkIWtR9aRRCNsPs2O+RaBKl1slNG9VOsPNgCs1bUiXpYrnVvFsQo5l4WIi/yvjg3GWv+PEgfgZaOmQqPy118SNOgGD2zMZZiHRjzy7wMrJJoqWfMNUU+SZ/ZxLHkPs1XXFOcw=", + "kid": "EDSWY8Hnul4=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614916 ST = Berlin", + "notbefore": 1632295270000, + "notafter": 1695712870000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESb7iWoF0mDYKwlP2EkoD9oJdt0Ew\n3tomFYMPK51gX10VgQPMGAUhwigTTGrSJsT865r6sshKSy20xzsrMZ3buQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "IKMstf8yj/4=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414212 ST = Berlin", + "notbefore": 1623061818000, + "notafter": 1686479418000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyxW76RQrbDUSOEHxYksWk5CaGGyg\nxDJJ7A9jRiop+FlpwmPReFTmJNVRMCjE56zKy1oxdi4KXCHI/yJIuw4zWw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "IZftFLRmKGY=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026164195 ST = Berlin", + "notbefore": 1620396932000, + "notafter": 1683814532000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEorGGRfEic2GL5o9XnITdq3nd9d7p\nWDvy6waSkDMI633+wvCluSBV3rWR/QkL3FdfpcL2FOCWaAR5/sXOihpfrw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "L7XIA2gi2ps=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460044 ST = Berlin", + "notbefore": 1623423085000, + "notafter": 1686840685000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqXPIlxahww0kgegwTgRNQWpChqH2\nPfXelyd1D77uo8dy08tlDhsE7zpyzWXfZTUAMxPtgw+JTqiaL1FQtvdkyA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "M8bcnysCMj4=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382913 ST = Berlin", + "notbefore": 1622717283000, + "notafter": 1686134883000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKPuGAJsDLPU7vw4aDg52nFxuxz3A\nsJtWUmtsY7tQegwCVfll+e5sQJu6y5CZnOD+gKdMKfnjuB719z/tF9qB9g==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "MxhfdcoHinc=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413347 ST = Berlin", + "notbefore": 1623059592000, + "notafter": 1686477192000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEszk+l0BVoDOXZg5SKeeNbLUAggqL\nKB2a3NlMXWfxfdcdHsPqqlKWcFTZBzD3/kIyxJi5rlxk1Uk2JsFNEbjt7w==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "NCdyt3s+cak=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382843 ST = Berlin", + "notbefore": 1622717035000, + "notafter": 1686134635000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUCSPQOg4hIgEJzD2PHFjccnQzSQI\nvYs+gbBuJqHxv7tCAEpyEj5XIfjjfMjNxA+so+AdZyEfwszhKr2A1/nVSQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "OKpEjMo/2MY=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413541 ST = Berlin", + "notbefore": 1623059843000, + "notafter": 1686477443000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/eGWuKcNV/od7Eh4EJuiqBPv+0yP\n4q+qzhOlNFdkzuuWy6l+hhjVHxdfxp4XDVvOUV2D9wff81/tNfBuc4pCmA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIHUTCCBQmgAwIBAgIQaBBy7XeB1rvZkZUaMYlFDzA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDcwOTU3MjNaFw0yMzA2MTEwOTU3MjNaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0MTM1NDExDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABP3hlrinDVf6HexIeBCboqgT7/tMj+Kvqs4TpTRXZM7rlsupfoYY1R8XX8aeFw1bzlFdg/cH3/Nf7TXwbnOKQpijggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFE9O4dA4i5u30fmhlPolvj47NGcAMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAUHouX3aiPr1eIeNzAE1JVSOhxy4I56P7RaUfpBYaJeVot7jPlNWq62++OCOqUWuLvw/bTkWNPxWhVh1BoQpL9fENmhCBBCvpUv2lmHBtvWFhASnT4TQSD3ORLXfIgXBvp3EF6T2YArjHobzLexAHh4QjjmmjTKWQw0tkVFwNu5C8GksKyoRaOUuR8dU/ZNTf6VAMIXv2osRzG1wWrLxcEse8XDAPxBSObML3DbdLXXxtEfAmqC63iQhh4k4l2kkS08t6pcnonxd9+ZJqtFtlTgPfngMjnl4AdJzvDJFbec1Of6ouMMWILcGqT2EKX8o9pjF1luNUevLgFF5751EjQsrF/EJ4U8Fd/fRVu+Pj6bRBFmSDvcbgwe/DC/JQomCQenSC7aYoHzz55sqH90HbDjBvwnEq31zQuyvKItYb6ikPpzzqXHhhm4D9WDN8PG20PTrHeBwtghYHYZ/B/EEVp+MHbkCilmBmkHp88Y3YF26sUm6UkwqqLDjt4olNYtPMpv1DvuxZUhRhUeX518Xi9BK5F4mBkaprfYjZMlpWzMpvFRz9QvI9SE88iJu9bFKJ5mAlby1ELR6i/mYNvooH0OM/9OWhDBlA5xe2kIsJhrgxkTKLNzKIkfvF96gLLkFHjS9gRiVhIk4R38gO44SLVJrg2UwrrD3LsrheWk85lZE=", + "kid": "R7q7yd90ZPU=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460123 ST = Berlin", + "notbefore": 1623423294000, + "notafter": 1686840894000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh4UMl8PsQUsu36Hq7xK+dyGWGrEL\nxsfzVOny20ZnkHhyBYxBUIGoHEYl70bpzjFBJN4WLGtilZD/0aLWE/+ykw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "TGjTR+Re+yk=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413860 ST = Berlin", + "notbefore": 1623060911000, + "notafter": 1686478511000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEs77Dr92zb+HOBL9gdfCWOwkna+9D\n3Kdq0HgUqpVByi7kqykRPAFKPZBA771qyoBy0uHFhdYIzNAPzdHj7KrPsA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "TpQIkAHAym4=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413417 ST = Berlin", + "notbefore": 1623059674000, + "notafter": 1686477274000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEopaKkUUE4nCgNpRBE9ugmShuJd90\n7aOocVvFvxPLxiJ5qqQ2pq/GVsq5Vf/0V/b1V3rAoKO8bMvxP4jkTWTxqQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "Uj77p+qIQNs=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460026 ST = Berlin", + "notbefore": 1623423021000, + "notafter": 1686840621000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh934IiMCsXp977pDeG7Wi11S+uGG\noem6nSNbtCILcST4+/FqGlLOBJvIZPSh3hTHx2V7V+3Lzqi6R2dahOno/g==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "XkVWZqUeeFc=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413693 ST = Berlin", + "notbefore": 1623060128000, + "notafter": 1686477728000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyV/EBSORniEE7SMMNmvSWT3dOAuD\nuviDHFv7rvnrcZ2wyfQkIjyYPkrtVrGwiNdwOcbHKreB2eW6li/+fDQPEA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "XuCERkHu8kY=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413897 ST = Berlin", + "notbefore": 1623060976000, + "notafter": 1686478576000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5eOmRsTsPlyUVzKnWK3xYlY04+DO\nffgg07nWx4FTa4mouXQ9nfCxmMHgpuZv2RxbVSzYzewjcmKaknNEYDdCdQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "Yr8a8Rd+zqI=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382773 ST = Berlin", + "notbefore": 1622716737000, + "notafter": 1686134337000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZM5AMBImcqdKPFM6P5xx0LmZxo8\n1NcnuydrdPUQaaa0NhsRctuX4qB8YSd2pG12ilwSSfEcgju8I7AsFJSAOQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "ZDoFfkn+yhY=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414081 ST = Berlin", + "notbefore": 1623061438000, + "notafter": 1686479038000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaOhuajeY34pPu/12SnuMv2qlG8Er\nMOj7s0eAEM2679YVzsiZWLIp1S1jNWsoIJJTEiLWUtj1mqCsMOR3gA7CBA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "bKmas9wa5tc=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571270 ST = Berlin", + "notbefore": 1624540790000, + "notafter": 1687958390000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUtMktlZKpvOfwhumIvsvpKMWE1Ly\nMq32RkRCbVM5TBBxHsCUYdXSjbqPK3cZ8tYkCkcYlyluKbQO++HaSsGjSQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "c1XrnEBoj/c=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026164168 ST = Berlin", + "notbefore": 1620396811000, + "notafter": 1683814411000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsLa/zRhSxxsmrPE/RwPNKXGblvI4\nJrdqfPNYpuPn3TpkExb/vod11MuW7BismmErZcJC+oWuItW1UH+wcXHJcQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "dhSzPDr4G2M=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614758 ST = Berlin", + "notbefore": 1632294922000, + "notafter": 1695712522000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExfzglJTFBrKFErvCRkqtHq0U7O7S\nmxzRntsiUENJFzkpxD0rHs+0H6Qb23WUiaDe368iOrWfNk03uOEjviJurg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "hWoyHrtJs+E=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382931 ST = Berlin", + "notbefore": 1622717389000, + "notafter": 1686134989000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5D4cdY3G91kHagLyAGon0ufC2jqz\nQ17V1wjvYHOLxZSY1evmQVhovIVUS9AU5Z73aeW++2ZyNUFg7L/9Zk1E7g==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "i5SVuCsR5TA=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383125 ST = Berlin", + "notbefore": 1622718187000, + "notafter": 1686135787000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpobykjScOX2uy+5C/BYBXDRcVUVO\nBDWLUgUaIhP2q0GoF8FBBDYBjx1peWhf4Nd+rtjBivr5WDcFmjMVn+FVzg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIHUTCCBQmgAwIBAgIQatwA65ySzuJ64jCjcmL8djA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDMxMTAzMDdaFw0yMzA2MDcxMTAzMDdaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjYzODMxMjUxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKaG8pI0nDl9rsvuQvwWAVw0XFVFTgQ1i1IFGiIT9qtBqBfBQQQ2AY8daXloX+DXfq7YwYr6+Vg3BZozFZ/hVc6jggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFL7tkbxCnm3AP4i0hGqjB8kc2sxxMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAyVwj0RXxUIYHWZGu2iaxajt4iz7WIexkW0oE4Pl9TTWareDTntRe19XM6eCQ8PQx8gU/UpVJ9dxjroFa2H0euOzUC9nxgCXvUzttU5VVw22E23QzUCyHtkSnzGrfd2RAVEd/ndoroDgW6z8iEuaDsGaQg1Nj93xUXhpw0mvFNHR/fVgVJrCTBmzEhMTWQdnMBdlB+iOg/M/RBv0EZO9ZXczX8x43oksdTTL8lcMLT7nzdsKOQxF3zG5PRXuJjIiGAEYiVqP7Vzige2NRRqsPse4fJUD59V0mo+ktinIamEmyE+T7dG/++leP2rUEBdtThwiJnP68I+CPk6L8wpnRdRo1CPkCgp30e1Cw99Os2hz/c51VYuqk6OGf5Vu7n8Vdf00r8IyxQJBkp7q5yPy1aWU06cCL/f/y2/oBKqV5zvFnW9jb5nDxoWAoXllMmIYkgs/4EGMK2GpzhqqxskF3MJmZCOPknHXCH+giTbaM2HdjYal35jNAPWbES9VNtl7pP2MBlGhv645gaXwWvYhXJp6N5yjZ2YcCSlU0u1WVtjsNb75XV0n+Xu0JMgqKXKX6np1/z7i/64CyMtfrlpK3fc57NmLRV92TeVXg27vw4gTDmXU2V33G8CKnXrMshAfqQgWsvbmRefmQzV3ciIRT94x4YOdSeHaAHVf154CgDM4=", + "kid": "izUDZjGtHWY=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413286 ST = Berlin", + "notbefore": 1623059521000, + "notafter": 1686477121000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgxLpjMDX1/tMRghYLQKMI0nK4UkZ\nuK9pnAAJTC7BeQUaHYFp4pJkC8z/VHcW74CpwTeTRITzs4MZflkN/WHtqQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "juskqrNQf6k=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383107 ST = Berlin", + "notbefore": 1622718068000, + "notafter": 1686135668000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtLZ1N2Y7UQHgRO3yKGyRTsJWdYFG\nDld5kbglFGHrMvZQwa5XoBclH9xTrP3dXcTsgjnml7Hx5YZOnGHhJMrenw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "kjEx2H7huNE=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571313 ST = Berlin", + "notbefore": 1624540920000, + "notafter": 1687958520000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx4HHLyxeH1wp/aPCCwyRxWVEcfUA\nLP66kgwanudG4b8upvGFMsVXpzg0ohEParVa912A9UBuCkjDM6jFAsgZIQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "nHmZ5K96UY4=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026317104 ST = Berlin", + "notbefore": 1622032330000, + "notafter": 1685449930000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJmki+G1pd9DNiLX/eT709p/ZeCd/\nmcjrmRLoTgP6nlDqJxUvZ0rQ64y/Lj2Vk5ehGHtuV/RmyuNXJYxFB58bdA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "nPKEYm3gXzU=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414115 ST = Berlin", + "notbefore": 1623061538000, + "notafter": 1686479138000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd+grPnJ58prZvOeLC3vi9P2mnqlv\nvGNfsbT0HmxAVHAoNB73PT149IhGWhNZFSMFRel7vu8vi4wPoaSuIjraPw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "nTrG8glLUls=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414160 ST = Berlin", + "notbefore": 1623061647000, + "notafter": 1686479247000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPdriVdFsidKrE0nr7S+75iO7+8LO\ntzFp99++4BLqKKMKn/mAXvgkInEN5xqsifTYFWk9KmLcUGbD9dtwQlaA+w==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIHUTCCBQmgAwIBAgIQRF7D/WsYo4zAfAgutLekkzA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDcxMDI3MjdaFw0yMzA2MTExMDI3MjdaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0MTQxNjAxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD3a4lXRbInSqxNJ6+0vu+Yju/vCzrcxafffvuAS6iijCp/5gF74JCJxDecarIn02BVpPSpi3FBmw/XbcEJWgPujggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFA3syNlQmTMRMMAWBBYAJCfdZTH0MA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAWfZgy90uaemP0xWfed1IijarzngRBVju0sEE/59w9B/r1nShAW0sPa0UBLAbQxjlt0MgKbs74m8dqbIhruQ0xH2IcoE4ZBiwJ9sxU5HVIG2kvwjnje9ahXCoPTptQR7QpkVd9l7eAVgIkcpulwneRRnZiiBoEmLWJQr/j8dHYIbOjOU5XNbweGV67RnMLwJHPp4L0gMfdjD4g3HulvyRhEBwcuM5uNt9NtUNIX/vgHHQh/lGRv5sp2QTlaafy+HlpH0JH/uLQGTpUO/V5+lnWCjSIPzLeWlbetGGlXCsC2ThUyY2dPoAd5RGPrGLnESn6SOkEEeOOsktEV06n/Vi++iEZ8zo6/fJ9J4hOp+ufPQUVzE2OwE42D2FDkAJIgAZVTl7ffwCClsQT3uYiwU4Opvpwn7gSSCc0l1r3Nua/zITrZ6RC8c47PEMk4hbAzyDY/RO8xumSkGjn1DEquWMwF9liIvAJ7GJq7uP62NWZYl3njoSYzphrh1KpjS4is4FB7nW5kkz9L6678U9TRXtgj5Pk9KJPiCrs1bHLqES3qcXTaQjGccjSbu+edsDhqpqUuBi6P+fts5bu4w0uGaRT27/49css7EzXX3Lv4FmG8GFSsrvddCSGZxhzKaWs3RgmfhGJEeoSmIdWDo3kh2CEEInoF73cwfi2zxEQz6x6hw=", + "kid": "npo0ZWgdQSY=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460008 ST = Berlin", + "notbefore": 1623422950000, + "notafter": 1686840550000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7f4SNNst1BMsb6Ub0yVCz01aDWB9\nI2/ajVbLyJpTr2pKwSocQpiM0mcy9XX+dMYYlUaQVBOmtoE//fnw8w2vDA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "r9YkEJZgi9k=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571191 ST = Berlin", + "notbefore": 1624540537000, + "notafter": 1687958137000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbQZPoqfjpTx8m/wAZZWk3uoDxzfp\niISsNSuZg/+9VN/cSefrEHFRvQwM2AjN6vOjhzVMdjZ14MSRJUMJEu85Lw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "rKMDA66RiLE=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571331 ST = Berlin", + "notbefore": 1624540997000, + "notafter": 1687958597000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+fBKs9tgAlGoiBIglL4JDLpguDzB\ncXqCuIulrUkBy/wZrJtv7fsirU/YCvcn70rPzMCloqePEoDPCf1wWX8Dpw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "rXP9L7xddL8=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414197 ST = Berlin", + "notbefore": 1623061757000, + "notafter": 1686479357000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE40rFr8baZEDNvONEE+Rxf5ePnZLL\nmqR+5Uwx/S5I2ylMijZyZ4c2kD3OyTHlfTNa1mS09zXnXNJKqZyqi3GGQw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIHUTCCBQmgAwIBAgIQdpS9NmsqTj9YOecMPZojLDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDcxMDI5MTdaFw0yMzA2MTExMDI5MTdaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0MTQxOTcxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABONKxa/G2mRAzbzjRBPkcX+Xj52Sy5qkfuVMMf0uSNspTIo2cmeHNpA9zskx5X0zWtZktPc151zSSqmcqotxhkOjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFKsCggjyB+AjQo3EwceGW7I5NEIjMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAk6gFYk6doC7YFitZ7Mac9H22ctQNc2heXV13yfKGFQgHZC69rADD7yReYmpX78DfpMx1MPHgMVHABkqWxKa3DEChvE7lPx/YOosyKTAykxPEYPpeQBTkG3Vs8OZxE4j25izJohiHLPEwcyhoLnkZWpLMOGzp2HV/B+e8/ld4wEjE/fhl8mkVKPRlgIfrH1Lj4vJYW1hu59L+HTzrTjCzPrGoY2rG6xUJscp7N8OCyFvp8i+Oogh9HurGZ+SGPfa1Bo0Rv9EVnAEglnRXYlHwm705X3FeAE0Jea0ydOIzrfnFfnx9wrBSiVcjGczct87NmZ/hqzfeQ8PFVs+e86oYqmTq3R9FrKiNM62w4agSpSJbtjsElrBKGzc6b5hp4Uozw8GYGMQ+W+TiQVY+szXbu+8jZC0iRoZnicIxG7UzSVbz8FUc8X5xBu5oYvzHfRtdRK+0P9gc5mEpO5JJSMBuoRljGkGcMiReVb0hkIHQNX+zwj47bPoBD/TQOQWm4Ba11yvFP0PwzzWOPbR8BCgzEVqUf2IPvuRpqOdLrv4/Onkjs6mO0QG+YNqnwBCgvEgcMglc07DOzXHUusvGZ8BJB965iX+fHYOzj1dEgHj17WxqaZdnnUllXDDcunxe0yt7//7GLWDmJwFgyAn9qCDvnouqZQph1iLsvJBCsepRV3E=", + "kid": "sYXcYixrOGA=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414133 ST = Berlin", + "notbefore": 1623061594000, + "notafter": 1686479194000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2TqSv2wB9nB0Ev3u5VmckxWzq/L0\nfvl1HVI3ZBXCF+7k55bo0zUABUPBz6/e1PaDxDCIS8+NybrbpUT3w5D3Iw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "vjm0I2ATJ+Y=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571243 ST = Berlin", + "notbefore": 1624540685000, + "notafter": 1687958285000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDRVIqu7uo4HOgXlXyxYBl2L1arxx\nvDfwfgnYHjgVKQpFEj+hV9YEjSECJS+YrhGr5RXZU7eRzKvfKtRI1POaww==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIHUTCCBQmgAwIBAgIQaCrKp/oifkZV7APE/wT6tzA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MjQxMzE4MDVaFw0yMzA2MjgxMzE4MDVaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY1NzEyNDMxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABA0VSKru7qOBzoF5V8sWAZdi9Wq8cbw38H4J2B44FSkKRRI/oVfWBI0hAiUvmK4Rq+UV2VO3kcyr3yrUSNTzmsOjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IYyaHR0cDovL2NybC5kLXRydXN0Lm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmyGO2h0dHA6Ly9jZG4uZC10cnVzdC1jbG91ZGNybC5uZXQvY3JsL2QtdHJ1c3RfY2FfMi0yXzIwMTkuY3JshmlsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwHQYDVR0OBBYEFC/BhUnD2E/4VjZvbF3GCiCqeL8GMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAfHE9xt4B5t7jy78x1lMhBMrzkyW53uXdZZfok5Mo3K7fP0g92J3FMZFcaBTTLZIOEKnDhS1h0NNC99jTToZEVBWCB25UCvZ+oUEMRx3nYezgShiX2i6fBWvmn4/UIMybp7ikFCMBfpFuuo1I09anuOygqzCeXy4kItgGbWXJj2YObZponIhz3KHQZB/9syif8e5rU5YhtqQm4lPwiuAoJufoDr/sE7T/pM9H895SuunSegPzuP08n2cfS4MyRsk28vS2dAgjHCYSYsygkx2Lmf2Tj5UID3JwbAZc9NJ9vgzKOeQMVPvdAQLDoXkvQZOUOWVCvHXFjTvuXLH2AyTdh4X8XLpBl/Pihg8HZZgGYVSMrYfI2XyHmNRzMvC6tzpe3sr3lVVxaIZzCLCyXQAO3dhBWMhkb1Z2O5WZaQpSi/c69yV79sDIOf+XYT4Yw84WmJtiIKSet3WuNFpJg9w0VNgCVyI/6VmQ6PFErwd5nqbo97JzF05l4/ZM/EoggIwBvC14xJ9WreroJ8fTTxF2qLWkkvcA4D8tKTMy1cKz9EJAIngCjcnCWP31V8Xw3d8Eo/OiMyIIdvBPUpfZXRao2svtz+T1N/6vgTRDoBZpoYH5Ejte7VbZcotvPc2bbM+B21hgNNYi6QpYgVanBHcG2GsfvUgiAP6alXqR8CVjtnI=", + "kid": "vq08l/LTxhk=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571119 ST = Berlin", + "notbefore": 1624540344000, + "notafter": 1687957944000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElGYxcioPZFzAfJHtsB07FzUDpJlc\n6C18W2kcnCGEE1ujahisK6ZvE+UoSGh4ABGNQOX8RypMp4t8bzj7VAqI7w==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIHUTCCBQmgAwIBAgIQVb1lmz0M5mKd+bkBRWBVATA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MjQxMzEyMjRaFw0yMzA2MjgxMzEyMjRaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY1NzExMTkxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJRmMXIqD2RcwHyR7bAdOxc1A6SZXOgtfFtpHJwhhBNbo2oYrCumbxPlKEhoeAARjUDl/EcqTKeLfG84+1QKiO+jggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IYyaHR0cDovL2NybC5kLXRydXN0Lm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmyGO2h0dHA6Ly9jZG4uZC10cnVzdC1jbG91ZGNybC5uZXQvY3JsL2QtdHJ1c3RfY2FfMi0yXzIwMTkuY3JshmlsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwHQYDVR0OBBYEFPOl1obtogqRXpYoOytNDEQwwfw2MA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAyo8Tl3BdDHKQ7A0aCjpsaLkMm/dnjvsvFXknqosFO2/sCHy/I6Cp5Xr005aUWSMs9sOwbAEwIw9XbJsL9yH/WFHeW5VrR6l/qr43HC0gKOxfxvvicQvKDbMJWiG1GDgOXGV2I4NCo0puBe5ZYqmbrlXxzRWXf2wMhw+PF4dhllHXlTCkkmumRFbpzau/ORhCGBDUwAyPMfBxMv2Lb4gXxieC9uts1p43XJoxjgsq8Yn30dybv6dU58t5SodlVb3+ubz0DwJ0pa7kw1T4C7C1rJl2SP48wh2U3Y+rD6CXkwR/a1MF/JmnAB9Pl/qM5kRI6PFcKW4WaUNgo3xD/WPrkuetD7h6BcQrFmGrTz1m7FnxXfEw3VmCOmG/2R2QrnU4A9EXc/eJHVKolBtcCyDXcPBUzkhl8ba6tkAgOVEgqSIeKSmt+wQbHM4K+joLvEf+dSVijodvZP0W2hZ8mE+wG7FEpx848WJNHT2whOzXfqYVEBeKin/DPXRqi91bP8sVPRE7m59UzknpN9jxQhpFuPwEfmqI+odqjyVR3eeRZ3ZfKIpympFLMwajFaY/O8rdh/dPq2CT7GxGsjIMS3SpLSpM1xKs9NV7HYEIgmNdlmVb8rICi4/aoVXvMuqa7g2xTcL4CwikWYsq9lpwZlbXR0tW0B2eVOfP/BYXWF3jnP0=", + "kid": "wb/2450PPrc=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571298 ST = Berlin", + "notbefore": 1624540865000, + "notafter": 1687958465000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6/QS0f7r433yqdq7XKh3OOKhOEig\ng+VVixYEToozbg9QgAqADIZYDe3WEQnO8u8fqdzd2ouVZo54/Gc13gszYA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "wtYpyAmNmdk=" + }, + { + "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", + "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382968 ST = Berlin", + "notbefore": 1622717573000, + "notafter": 1686135173000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgMhpOktfDD7Vn7Wm+BlHabFbpOs2\nUmCVrtIpcOFpIlr8+2wHP5/VSUZslExSo284fpwuoJ5eKcjDuvlCPjZNhQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "yWCRdph8XJs=" + }, + { + "issuer": "C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA", + "subject": "C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020007", + "notbefore": 1635986474000, + "notafter": 1961714473000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESDFA3IUS71aOIaAiVxG9QDby5hfT\nSqPSuHAagC8/vhKbIG6quGGAQjRcxbjxB2+KCt8RhSkBzTPpzX8D6iSpBA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICmDCCAh6gAwIBAgIUN7QAlQwRtBkiAZZmQo6EuSzr2TkwCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNDExNFoXDTMyMDMwMTAwNDExM1owgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESDFA3IUS71aOIaAiVxG9QDby5hfTSqPSuHAagC8/vhKbIG6quGGAQjRcxbjxB2+KCt8RhSkBzTPpzX8D6iSpBKN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFMkTYUd+m7dTqQrgXROc796CHD2sMCsGA1UdEAQkMCKADzIwMjExMTA0MDA0MTE0WoEPMjAyMjAzMDQwMDQxMTRaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjAhZylOip2hsx2QTptQMSKUwjmA5MSWxJi01hCB2cUQWYWBLRP+RzxcVC2tAnUpGiACMQDoNr7Vs/ID/BJMMHlkj9WAfb1vbY1ePMZGtGh4aNCi9B90uZczIQctXmP4w/o6G0c=", + "kid": "0NQWnxTv90c=" + }, + { + "issuer": "C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA", + "subject": "C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020010", + "notbefore": 1635987788000, + "notafter": 1961715787000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQEqBzWkYP17/i2b+EPcLpiQvTKLx\nasVDjA3A7IvRt9RHjYFIQGpFQCR7ZJLD5XQNsjcFfHzxwVEITkb5M7fIyQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICmDCCAh6gAwIBAgIUNe+sDjaZPIfOw8OIMwqniNZ1ABEwCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAxMDMwOFoXDTMyMDMwMTAxMDMwN1owgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDEwMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQEqBzWkYP17/i2b+EPcLpiQvTKLxasVDjA3A7IvRt9RHjYFIQGpFQCR7ZJLD5XQNsjcFfHzxwVEITkb5M7fIyaN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFIrSwiSmYianLXQsxR6ZAFL5/ltIMCsGA1UdEAQkMCKADzIwMjExMTA0MDEwMzA4WoEPMjAyMjAzMDQwMTAzMDhaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjEA9UwmICswUwNiWRzvb4V+U0Z7qKebbIIldgtTp+nHmcme5HGjKc8UuT/yvuzzK4qoAjBvlH+kAQGZuXrSXduh+CtY20W+NEPrYV6bjDUdxQEzCxmOrsA1LWl2lHdIcLRSDdc=", + "kid": "dy8HnMQYOrE=" + }, + { + "issuer": "C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA", + "subject": "C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020009", + "notbefore": 1635987543000, + "notafter": 1961715542000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEn/wOHL0ulsMkJCwPvwhEPoPE2LiF\nf9MEsma3tYaPfANxLqX4K5e6Lk9F3tvg8OtBnVBI1amxen9cOlmSRXHg+w==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIClzCCAh6gAwIBAgIUfn/tDIC04XNn08DedD/Mgv0Y7Q8wCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNTkwM1oXDTMyMDMwMTAwNTkwMlowgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEn/wOHL0ulsMkJCwPvwhEPoPE2LiFf9MEsma3tYaPfANxLqX4K5e6Lk9F3tvg8OtBnVBI1amxen9cOlmSRXHg+6N8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFAHaV5pGrS6VpJVmDC3vnQ5FbGlYMCsGA1UdEAQkMCKADzIwMjExMTA0MDA1OTAzWoEPMjAyMjAzMDQwMDU5MDNaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNnADBkAjAdOz+yESmxwxVmK9YQjs4MPYfcoCxU19xPeB90YL5mB+uDH3/Kf77UTnZehqtX/m8CMA+YOej3Ymvg3flZJH/+lQ5owd4lvU4PJTxwQS/D+JroiKvnIeG6O3WT9LvnRSKwEA==", + "kid": "jIF6MH+OYkI=" + }, + { + "issuer": "C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA", + "subject": "C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020008", + "notbefore": 1635987266000, + "notafter": 1961715265000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+axE1mKfKiVwARulc2LnH6co1SoC\nrfqtL11PQqYh7TBRrdawgzPokpfjoFGDkMU0ZPg7cnwilW6LnYH+vkjVhA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICmDCCAh6gAwIBAgIUapkq2mxmLiK29lTfgGNiKmLH/o0wCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNTQyNloXDTMyMDMwMTAwNTQyNVowgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+axE1mKfKiVwARulc2LnH6co1SoCrfqtL11PQqYh7TBRrdawgzPokpfjoFGDkMU0ZPg7cnwilW6LnYH+vkjVhKN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFGNFtRIN7owNYF3S4WS3IkmDxnqQMCsGA1UdEAQkMCKADzIwMjExMTA0MDA1NDI2WoEPMjAyMjAzMDQwMDU0MjZaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjEA/2L/gI6AFNxKty+dHwt8nPypmd0pJDWe5ePduw1gKQnOxqM62i95FHFMPxU6uJBjAjAmDdxcr1IdCU4RO5f6PY9AS3pdb3VAkifbZe5cu2963QvvCoyfWWFXwj/D3xsvTGk=", + "kid": "oMpN3FsJYsQ=" + }, + { + "issuer": "C = GB ST = NI L = Belfast O = Department of Health OU = DHCNI CN = CSCA_DGC_GB_NI_01", + "subject": "C = GB ST = NI L = Belfast O = Department of Health OU = DHCNI CN = DSC_DGC_GB_NI_01", + "notbefore": 1626708138000, + "notafter": 1689780138000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZ+fdcTa4UWA/6PT5V4a0+0j1/s++\n4JQEsW/HvGnxxP7mGfuQDfn/FRdUMGQtTkoCGaky1gpYVZXkkoYu9ZjlUw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICWjCCAf+gAwIBAgIURUEDe5VRVC+xFuvzbQDxI+NcG3EwCgYIKoZIzj0EAwIwdzELMAkGA1UEBhMCR0IxCzAJBgNVBAgMAk5JMRAwDgYDVQQHDAdCZWxmYXN0MR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEOMAwGA1UECwwFREhDTkkxGjAYBgNVBAMMEUNTQ0FfREdDX0dCX05JXzAxMB4XDTIxMDcxOTE1MjIxOFoXDTIzMDcxOTE1MjIxOFowdjELMAkGA1UEBhMCR0IxCzAJBgNVBAgMAk5JMRAwDgYDVQQHDAdCZWxmYXN0MR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEOMAwGA1UECwwFREhDTkkxGTAXBgNVBAMMEERTQ19ER0NfR0JfTklfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARn591xNrhRYD/o9PlXhrT7SPX+z77glASxb8e8afHE/uYZ+5AN+f8VF1QwZC1OSgIZqTLWClhVleSShi71mOVTo2owaDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFK0wrYr+jzkfX//YOKxzXH7hoBxZMB8GA1UdIwQYMBaAFM8DHzf3z6ezJWzZlg9ICbLTTRxnMBYGA1UdJQQPMA0GCysGAQQBjjePZQECMAoGCCqGSM49BAMCA0kAMEYCIQDfC7E6QPDcgPAwNkK/uRJDMnUWOfslHC6CyeCKPcm3SwIhAN4tcL2/7T6HYbfNv+hfFz2mAGWLCa8wmqJcs9YsBNG7", + "kid": "1J9pb87ndV0=" + }, + { + "issuer": "C = GB O = NHS Digital CN = England DCC CSCA", + "subject": "C = GB O = NHS Digital ST = Jersey CN = DSC_DCC_GB_JE_02", + "notbefore": 1632923452000, + "notafter": 1695997252000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEORjyQk/KOoCEJWGfLLyqyEcOqRRr\neyVdSH+ELi4GqqS17W4aYeOl2cvm/5unZwgCQUzB09uxYESXGmBJ3xgsEg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIC8TCCApagAwIBAgIEYVCF1jAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM1MDUyWhcNMjMwOTI5MTQyMDUyWjBPMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxDzANBgNVBAgTBkplcnNleTEZMBcGA1UEAwwQRFNDX0RDQ19HQl9KRV8wMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDkY8kJPyjqAhCVhnyy8qshHDqkUa3slXUh/hC4uBqqkte1uGmHjpdnL5v+bp2cIAkFMwdPbsWBElxpgSd8YLBKjggFvMIIBazAOBgNVHQ8BAf8EBAMCB4AweAYDVR0SBHEwb4EPcGtpQG5oc3gubmhzLnVrgkpodHRwczovL3d3dy5uaHN4Lm5ocy51ay9rZXktdG9vbHMtYW5kLWluZm8vcHVibGljLWtleS1pbmZyYXN0cnVjdHVyZXMvY3NjYaQQMA4xDDAKBgNVBAcMA0dCUjByBgNVHR8EazBpMGegZaBjhidodHRwOi8vcGtpLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmyGOGh0dHA6Ly9jb3ZpZC1zdGF0dXMuc2VydmljZS5uaHN4Lm5ocy51ay9DUkwvRU5HX0NTQ0EuY3JsMCsGA1UdEAQkMCKADzIwMjEwOTI5MTM1MDUyWoEPMjAyMjAzMzEwMjIwNTJaMB8GA1UdIwQYMBaAFNouzsP3Ovv4vhBzqMTxiL0r1PHKMB0GA1UdDgQWBBRxHKzMVi9gZ9kvS9PBsjKIxWf96DAKBggqhkjOPQQDBANJADBGAiEA842nlrMUsAYRJhQv4DeltKOnR1kyBBcIiqHBRq+EIiYCIQCeUc6GkrFiI6jhQzgD5/c/A66+AiRSZ1Z3SMNM073D0w==", + "kid": "1PtilTAMiyk=" + }, + { + "issuer": "C = GB O = NHS Scotland ST = Scotland CN = Scotland DCC CSCA", + "subject": "C = GB O = NHS Scotland ST = Scotland CN = DSC_PRD_GB_NSS_01", + "notbefore": 1632935105000, + "notafter": 1696008905000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEr9bj163kKNBLl5bxWhZBlyJv3pHa\n2QMb24OAdXZwJN6xx2CR03VG4DhQmd9wzVuPmw164+T7/sDmoRNOh4QbQQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDKTCCAs6gAwIBAgIEYVGffzAKBggqhkjOPQQDBDBTMQswCQYDVQQGEwJHQjEVMBMGA1UEChMMTkhTIFNjb3RsYW5kMREwDwYDVQQIEwhTY290bGFuZDEaMBgGA1UEAxMRU2NvdGxhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTcwNTA1WhcNMjMwOTI5MTczNTA1WjBTMQswCQYDVQQGEwJHQjEVMBMGA1UEChMMTkhTIFNjb3RsYW5kMREwDwYDVQQIEwhTY290bGFuZDEaMBgGA1UEAwwRRFNDX1BSRF9HQl9OU1NfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASv1uPXreQo0EuXlvFaFkGXIm/ekdrZAxvbg4B1dnAk3rHHYJHTdUbgOFCZ33DNW4+bDXrj5Pv+wOahE06HhBtBo4IBjjCCAYowDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML1NDT19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9TQ09fQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxNzA1MDVagQ8yMDIyMDMzMTA1MzUwNVowHwYDVR0jBBgwFoAUpkyHivaTZHND98x+LTp83mX+1ecwHQYDVR0OBBYEFJdsDfNoq4LpdpKboD1l1QO6vomQMAoGCCqGSM49BAMEA0kAMEYCIQCk2A3NDa/GEeAmLk0H0ryrSXR8XE1ramqYSX9/DCJ9WwIhANDgNfuShBJxUxydkgQtQ1Z348dfpLye7Dsio45DQaT5", + "kid": "26YSc5g0nG8=" + }, + { + "issuer": "C = GB O = NHS Digital CN = England DCC CSCA", + "subject": "C = GB O = NHS Digital ST = Guernsey CN = DSC_DCC_GB_GG_02", + "notbefore": 1632923277000, + "notafter": 1695997077000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsrcO+nNM8OkcO7IhbRh4D4D++Tgr\n3PyGt9q6vXkSwIY6vctXRXke4WdrRtWbYzB8xGREifNxSgd6Fdik+bg44g==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIC8jCCApigAwIBAgIEYVCF0zAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0NzU3WhcNMjMwOTI5MTQxNzU3WjBRMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxETAPBgNVBAgTCEd1ZXJuc2V5MRkwFwYDVQQDDBBEU0NfRENDX0dCX0dHXzAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsrcO+nNM8OkcO7IhbRh4D4D++Tgr3PyGt9q6vXkSwIY6vctXRXke4WdrRtWbYzB8xGREifNxSgd6Fdik+bg44qOCAW8wggFrMA4GA1UdDwEB/wQEAwIHgDB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxMzQ3NTdagQ8yMDIyMDMzMTAyMTc1N1owHwYDVR0jBBgwFoAU2i7Ow/c6+/i+EHOoxPGIvSvU8cowHQYDVR0OBBYEFFtQNDLuwfv9Xbg7o8AKPzQnkx4cMAoGCCqGSM49BAMEA0gAMEUCIQDfWA3YY6s4hivruPkv+ro6/0mi4Vm7gY1EED8u39k+LAIgOKfybRclbzyRnz/ucnH18B2r9ZEi6z/7LnmqNZobPPE=", + "kid": "I0+qkOLr2e0=" + }, + { + "issuer": "C = GB O = NHS Digital CN = England DCC CSCA", + "subject": "C = GB O = NHS Digital ST = Isle Of Man CN = DSC_DCC_GB_IM_02", + "notbefore": 1632923398000, + "notafter": 1695997198000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKrPl/bqJRA4on2AtNgXUOhCwjkr8\nkUkeol8ZMH8d6+ILPJCgc3y4d2AnGcNMIxwk/JWVjD2V0lkxSB2Hh7shtA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIC9DCCApugAwIBAgIEYVCF1TAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0OTU4WhcNMjMwOTI5MTQxOTU4WjBUMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxFDASBgNVBAgTC0lzbGUgT2YgTWFuMRkwFwYDVQQDDBBEU0NfRENDX0dCX0lNXzAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKrPl/bqJRA4on2AtNgXUOhCwjkr8kUkeol8ZMH8d6+ILPJCgc3y4d2AnGcNMIxwk/JWVjD2V0lkxSB2Hh7shtKOCAW8wggFrMA4GA1UdDwEB/wQEAwIHgDB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxMzQ5NThagQ8yMDIyMDMzMTAyMTk1OFowHwYDVR0jBBgwFoAU2i7Ow/c6+/i+EHOoxPGIvSvU8cowHQYDVR0OBBYEFFyh/c31dQVmHKwncfKzVmIgj636MAoGCCqGSM49BAMEA0cAMEQCIFpZ4V77QqTvr7ExCp5Agt4ssTmrJTjStHNmIZvU40zmAiAU5Oz3FfvC+zrKARL9h4aDJ8osIvuekXfyOjP2wdxirg==", + "kid": "lYkujLws7SE=" + }, + { + "issuer": "C = GB O = NHS Digital CN = England DCC CSCA", + "subject": "C = GB O = NHS Digital ST = England & Wales CN = DSC_DCC_GB_ENG_02", + "notbefore": 1632923232000, + "notafter": 1695997032000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE17Mn/OPO2RQfYEZM62rPQcvhfRd6\nZTWo1MZnPvSBMCzjuY0ZdmtsXwDHH7wDOVcTs1NSylkb+/EmC1t/7XV0Ow==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIC+jCCAqCgAwIBAgIEYVCF0jAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0NzEyWhcNMjMwOTI5MTQxNzEyWjBZMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGDAWBgNVBAgMD0VuZ2xhbmQgJiBXYWxlczEaMBgGA1UEAwwRRFNDX0RDQ19HQl9FTkdfMDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATXsyf8487ZFB9gRkzras9By+F9F3plNajUxmc+9IEwLOO5jRl2a2xfAMcfvAM5VxOzU1LKWRv78SYLW3/tdXQ7o4IBbzCCAWswDgYDVR0PAQH/BAQDAgeAMHgGA1UdEgRxMG+BD3BraUBuaHN4Lm5ocy51a4JKaHR0cHM6Ly93d3cubmhzeC5uaHMudWsva2V5LXRvb2xzLWFuZC1pbmZvL3B1YmxpYy1rZXktaW5mcmFzdHJ1Y3R1cmVzL2NzY2GkEDAOMQwwCgYDVQQHDANHQlIwcgYDVR0fBGswaTBnoGWgY4YnaHR0cDovL3BraS5uaHN4Lm5ocy51ay9DUkwvRU5HX0NTQ0EuY3JshjhodHRwOi8vY292aWQtc3RhdHVzLnNlcnZpY2UubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybDArBgNVHRAEJDAigA8yMDIxMDkyOTEzNDcxMlqBDzIwMjIwMzMxMDIxNzEyWjAfBgNVHSMEGDAWgBTaLs7D9zr7+L4Qc6jE8Yi9K9TxyjAdBgNVHQ4EFgQUcOpem+yb6Ti0xloFxJUhNtmBWbQwCgYIKoZIzj0EAwQDSAAwRQIhAKzGgopNYhDdfMGDBD7uzxXkwYErNfLqrMKCcv8L/JklAiBYV6GgmwXY0coHRshuWHGVEuGfQtYuFUnn3cb6snTgqg==", + "kid": "osFRFyFIWdU=" + }, + { + "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", + "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH01_TestedCertificate_13_10", + "notbefore": 1634193569000, + "notafter": 1728887969000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwFh8HIBXfjcz7G4uPL7o\noBpVAwoZofGJgWNr8Nstxhe4CQuGGo7Cl6QrZyQDtZovLOpcR1S5c4VIUAhegJY2\nlBEtrIzdR/hcooabkOUyDULsPejaOcii4LtE/25rSKF/6sGyQiCLFb1u4JGlZK7C\nGmJcXE/NYnDQDvJv6K4dhpwGIoeNFhoG2X6fDHjZemO+/BYZZjRh2BuUf/QnSpVY\nl6bhmOuJP2EAHBiSt+2S6Xn7O+j0qF5EK5Tm6tttSOjnmz59isc35GlwloszjRn5\nriUR2t8TYt5UEMYJY2N8iEGIpu9HiJBQyMB1kjzwc7ClwYo4/jB3zWqwZGwhjj5w\ngwIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "1MTFjluEWHU=" + }, + { + "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", + "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201528_21_09", + "notbefore": 1632395577000, + "notafter": 1727089977000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wSNYJMn6P/DgJDmQKob\nZubHIBOAlIEG7dI+6p4uXZqyw+gXcUXaaTEEn5F9i+OMAz9GdiTlXo6dPr7LNOm0\nyoNWNJMcmW4ePGWKpTm70Ie3YhkAzLiZ2kvTUnAKJj3q49IttvL6gj1pOOGroUyL\nBB44JOvd21GSW2N5LCZU9JlGXmVe/xPirbMFgQx9hgcwPlmzY3OGHGwdosO6aEew\n8fBvgHwyJfqbALRF757EpA/qNfLH+QwinigkIl613yghzslRzoejvyOz4UkKOQm1\n8fAbBF173J/Uur4yLF7voui03QK2we21sLlW8WkS4xKDnlL/rKvnsSyTEFqsC0Jx\njwIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "2eCjZcuOoEo=" + }, + { + "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", + "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH_1200005_0511", + "notbefore": 1636462670000, + "notafter": 1731157070000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqssyXfYarvjSj+v2XSgQ\nb6nPrpx+0p5CV98Hr4rSpcFJo8DOUf4BzWD4vpAY+kvrGrxnvBlZv+fBrnJcA46u\nPGpE0GILlqHFxBmm8CVbAS/UFrHf9DqG0AiMD9zLBsLCW9M+6zlIQkX5CsbWbjCu\nnJoySDBQyMmvo74EFoTpJMW05yYZA9WRSGGf6qNCPxRkXPIaO43FMLWVlTTCAnHt\nXzHpakG5qZDULLEWZhOs78KT9oHCcTBakPb38pgUTBNwTFMPuSm57jtiqm8oPbx1\nhxxQGb6XxMuIa/eKWIh8z1/oLORaiixxU6YNHNPFbl5oAOX6CjN6i+krI2zbpisy\nnQIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "CGFUps8kh3M=" + }, + { + "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", + "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200002_21_09", + "notbefore": 1632395402000, + "notafter": 1727089802000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvJk7BZo+4PHBDZzfie8+\nBPTzwzcBmpTFqP6dP2X6MsXmKX8a1Rww2x7/O4bBkpea+UOWGQJ+ryUDwnK0u0AJ\nHEID7OAg/gHyK0571RIpcMsiP+rZJjg6j9s7EDIogf6cf641hjVyaWuhkvuw0Uye\nX5SRVzFQ+eAkAHXwK50mIkIfIJ4DFDvz2Hv/JDMaeSzz9aP9XuDJYu+JX6nGJ0WF\nmjtjQXmJ39HT4j4q4nsLZh6sHOtiqCVrOfzoOGk6HUxI7nDbqPO+4UwP2o1S82l9\nLgQSABvFwCtox+w1AGKM/bUeyfTrEIoMAIgDiKDL7k3ks7iyiPZauvtvhSS0MeFl\nOQIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "JZhMLV9Gyck=" + }, + { + "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", + "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = COVID-certificate-CH-21-05", + "notbefore": 1621505071000, + "notafter": 1716199471000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtk/51stJXU48RqD2lh4I\ndsxFrjlJfmTCrLr3cQNEXkrEoI3OEV8NnotE1RjVmQrqLTT04oxpWlcbMolXtJBt\nu3rOiLNwQvyVEbj/xSc6KT84Tp7GBo1P/kkunY+Vmab6HUCV/oGZYmsdiUP/OnTP\nX6Wy6delDhnrgHIDti73/TSsG7Zl1V6km7+KIkjAkVCEDkkUD7uffd4G+GBZ0B9F\n1KOT0IcFQNvDm0zlROVoGFlmPS8DWlrLHuIdMbB281uiDjcN+kNUt7rUyyj6TFgX\n9WCgEB/5mQBMRaaXK1zeDTaNkmC2S7IWxhMQsMBXJyAdbD9AnQOZc6XRjBauO7gz\n0wIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "Ll3NP03zOxY=" + }, + { + "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", + "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200001_21_09", + "notbefore": 1632395376000, + "notafter": 1727089776000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvCn2NP604m2TFWnyKbIy\nhup78wpXMM62pHod3InusDPPPFXWgVsN0NG1E65jy+W7LDY+Q719jVCC8pusghPL\nmDze1KWwGrGdRyUGmqwFWW5sI0uxKJCsEXMRcKqKpf5NXxJlSo1FIv/ZKKFAnUt1\nIFUzLo5HP7rqCiKlU58uk9N4puECCW3QEUIgm4mwflcR1crqY1Pdd1UxIceRTGcv\nT0q4wN9w1fwko+grpV0N7EK2drSVVdvPYlo2fHCU+hDwTJ6AThTktzRiybznhq4F\nqf3jEyzVFQA5W1VvAoWhMZgAxHRCZXFXex/MtGvOD4Q+ovP3m1EYX0+C/qsaSsHb\n2QIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "TQeqi04M2ek=" + }, + { + "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", + "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201529_21_09", + "notbefore": 1632395629000, + "notafter": 1727090029000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2MyDsFqh2Xhdc6PUbR+0\nalU0hD8tT6BSJpCbigvdZAbz5slDPAIrXvyz2Aac79U6jvyyMHHDbIOL1DxU1/pc\n7shgd/B0btHJogwQQUxyh149GnA8e1i3LLJhu8dtC4LxBPZK91nknkgrKyYU55sJ\niQTnx2VYuF6WDBXFW4Q2EHsN+KIC68uDNousFHdw4Dk9rb4vEHLqsbY/afEZ1HmW\nbrvN+6pPyPFh43ogvYWkVcn5JahOXQqpoePVFUAq0sdqG9DluoSXWqpyNfcTQp3W\nCVldqsyMfAzGwceR/hKohMDXBmxAAbv5h8U05KX1xHgwAWfPPiITtqqIKt0EvFJP\nzwIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "d+WbDD8Gr5g=" + }, + { + "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", + "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201525_21_09", + "notbefore": 1632395556000, + "notafter": 1727089956000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0urbzgg7+VIvee9+u7Ti\nW+a+xDKAhqh9CXfPS+Lydi9Y527boI6bbqZxA2qhFVWp4FFzxRYRy6pVfReokpgS\nQvcjoR6YvRNi/HK4c44tLvz5gymhX/80oR43Gr/vOUkvne3c3SD8BN+tZlJScIt7\nMrIm0KNWjGGBoCnswxcn2dYGNoYFvHVN/3exg+oC4oO5QU3rNyFh3PWSHIn3svZA\nAeT3NLLdZ2inGoRyGTY3IYcPk6vj2y69wDxz/rO3kV2SpwHMCkKqcwwsdlOiqS6n\nd6AvOpQYMRRC5mEFbB1J0g7z73YdH+WNzEsa/B25xzDrIWi/sul2INhd3q0OTw2v\nqQIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "hGUS4Zj9fLM=" + }, + { + "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", + "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201507_21_09", + "notbefore": 1632395524000, + "notafter": 1727089924000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA195RM978uHXQTBanwOqW\n5vt6WBnO8skLa7kiY4q4l8MOgSrIitQvBcnuJFiTazMTjJpdEAblB0E4mZuzvn2p\n1I7SrFL7mwqQFrQ9GXvNp6gwBHYJrMci+J0FshxnWc9EYFFbnmixdSsyla5c4W8b\n/pfasFYWkuCwUCGLrspMrkJ/gsWcj4h0HvlCO9hHsHlLqD/kY0y0VGUAizsah255\nYZhTeB4ag60E93wUHt6HX0q4ngCk05S04aH9eaBF9GIuRhxrI4GEDcYIPB8GasrK\nPIS8ufOMQsSE8uJkPhJGQblDh+fPZb2bnUPX9vUSBPTJD5XgHsPGancWrpzBGttO\n3wIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "l+UqotarLJc=" + }, + { + "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", + "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200003_21_09", + "notbefore": 1632395440000, + "notafter": 1727089840000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApU+JIe3bHtVFBRbLLcZ/\nMHfaOB8dKwsWj7nAh8wr3Iv2+te2Kmq3MLDPZFR0q/hAAEg9gY/K1XVh74S3Zf8U\niSm9UJgALVIsxCi96eVpa1GGUtpbQvEg7Uz43PM/vUEkAs8xA/45BtFX1WE2nQ1z\n2PFcI3pOaJl4UHOVTA1LxEwOrAPBhlApcYwp75Gc9+KahxpJzaDR618ooV9MICYY\ng8swv4d99u11mjgwMAZcpiNf9iIa1H4phann+5RuNLbRHebVJgBot95AJ4MrOEEq\nIXg7LpDD9pBofVbV6IB7tuFcIjBIPJhLaUI6nLyg8oxh5NA8fKE9Nc2zbl8po84S\nrQIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "oVKwwScGxuY=" + }, + { + "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", + "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200000_21_09", + "notbefore": 1632395333000, + "notafter": 1727089733000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5G85GgStNuJe4lqs7Jkb\n7/3tBfhNTs0DDuxm0XpJIptqBLFvTLllQqMO8QI/lx1266VlfthTASK2ZpnQC6Id\ns/NEdNrLHuGIRNktd7oaq3Priz7f96TnXiW9qX/WLL55wpXcHSmLyvEfdP7BSdyQ\n9xrzm8bwg8cD638e69lScBeGpG04Z8hOVSQAQOBzAjSGkWPzhkah001vVev9CNcZ\nBiL56iVox6nIJ/sgbzOlvwJDaXnKZOOXRk+xKQA+BDjjBfmvq6KvKoiRoGhvmG3g\ntMFvXPEr+mvBkbHvzswPr6aKpbm4sFzDbbgsSb6zGJcPLhs6aMm0FaIuetyc0lxf\nSQIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIH0zCCBbugAwIBAgIQQ+x5JW4dgGnoKqONJn2FVTANBgkqhkiG9w0BAQsFADCBtzELMAkGA1UEBhMCQ0gxHjAcBgNVBGETFVZBVENILUNIRS0yMjEuMDMyLjU3MzE+MDwGA1UEChM1QnVuZGVzYW10IGZ1ZXIgSW5mb3JtYXRpayB1bmQgVGVsZWtvbW11bmlrYXRpb24gKEJJVCkxHTAbBgNVBAsTFFN3aXNzIEdvdmVybm1lbnQgUEtJMSkwJwYDVQQDEyBTd2lzcyBHb3Zlcm5tZW50IFJlZ3VsYXRlZCBDQSAwMjAeFw0yMTA5MjMxMTA4NTNaFw0yNDA5MjMxMTA4NTNaMIHnMQswCQYDVQQGEwJDSDENMAsGA1UECAwEQmVybjEPMA0GA1UEBwwGS8O2bml6MRowGAYDVQQPDBFHb3Zlcm5tZW50IEVudGl0eTEeMBwGA1UEYRMVTlRSQ0gtQ0hFLTQ2Ny4wMjMuNTY4MSgwJgYDVQQKDB9CdW5kZXNhbXQgZsO8ciBHZXN1bmRoZWl0IChCQUcpMRQwEgYDVQQLDAtHRS0wMjIwLUJBRzEfMB0GA1UECwwWVGFza2ZvcmNlIEJBRyBDb3ZpZC0xOTEbMBkGA1UEAwwSQ0NfQ0gxMjAwMDAwXzIxXzA5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5G85GgStNuJe4lqs7Jkb7/3tBfhNTs0DDuxm0XpJIptqBLFvTLllQqMO8QI/lx1266VlfthTASK2ZpnQC6Ids/NEdNrLHuGIRNktd7oaq3Priz7f96TnXiW9qX/WLL55wpXcHSmLyvEfdP7BSdyQ9xrzm8bwg8cD638e69lScBeGpG04Z8hOVSQAQOBzAjSGkWPzhkah001vVev9CNcZBiL56iVox6nIJ/sgbzOlvwJDaXnKZOOXRk+xKQA+BDjjBfmvq6KvKoiRoGhvmG3gtMFvXPEr+mvBkbHvzswPr6aKpbm4sFzDbbgsSb6zGJcPLhs6aMm0FaIuetyc0lxfSQIDAQABo4ICpzCCAqMwKAYDVR0RBCEwH4EdY292aWQtemVydGlmaWthdEBiYWcuYWRtaW4uY2gwDgYDVR0PAQH/BAQDAgeAMIHXBgNVHSAEgc8wgcwwgckGCWCFdAERAwUCDjCBuzBDBggrBgEFBQcCARY3aHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3BzL0NQU18yXzE2Xzc1Nl8xXzE3XzNfNV8wLnBkZjB0BggrBgEFBQcCAjBoDGZUaGlzIGlzIGEgcmVndWxhdGVkIGNlcnRpZmljYXRlIGZvciBsZWdhbCBwZXJzb25zIGFzIGRlZmluZWQgYnkgdGhlIFN3aXNzIGZlZGVyYWwgbGF3IFNSIDk0My4wMyBaZXJ0RVMwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3JsL1JlZ3VsYXRlZENBMDIuY3JsMHcGCCsGAQUFBwEBBGswaTA5BggrBgEFBQcwAoYtaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvYWlhL1JlZ3VsYXRlZENBMDIuY3J0MCwGCCsGAQUFBzABhiBodHRwOi8vd3d3LnBraS5hZG1pbi5jaC9haWEvb2NzcDCBkwYIKwYBBQUHAQMEgYYwgYMwCgYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQQwSwYGBACORgEFMEEwPxY5aHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3BzL1BEUy1TR1BLSV9SZWd1bGF0ZWRfQ0FfMDIucGRmEwJFTjATBgYEAI5GAQYwCQYHBACORgEGAjAfBgNVHSMEGDAWgBQ0C77yFT6kD1cH4kFkizIR0SkLYTAdBgNVHQ4EFgQUBKTr1YcLKJLc5jkBfPBbM+mKOS0wDQYJKoZIhvcNAQELBQADggIBAJI0MROzMyXnSBFe7M2gOYUGo9At0j8KU0O6KoysYxr0JAiFFmlnacMpMRjr+x/P6ZATf/g3vdwB+dI/ti2CKh9lUT9YH3uLS6IBv9ssVlWTaDdw7jWDsi60z1qe8feBWvgHeZn2uCVRow5rUTLJ4vaIuEmvMjGvUYac/lUfxBYxzH6Tleaws4L3ViGzpyuTDbn/UHFxYLHcNhUtS44QuNqCL51f64Sktg4uZPvnQF3n0YsLZq67USgf77LSD9rmtOC159kXr5QkkvQ9u5cVAwBLXvSQwL2OJEDbbyXXhg01FGBefZ2uB82FRGp/YjV/JpPceJ8Apk+dmx6HLobZFXugKaZoyywS9HX+rA8T4FLDKyQ04feAzaJl8y+BD5H5uBgDdfjf2E1o7T0JuyNDeZpwBCfiXhT8A4VspB1gevlnT3hD/3aLHeCb6fbZvOx59VFGm2/h69ae0eoZk8tvZGGNjBj2IcwCw5Kc6xBEjHOJPJiB9/ZOP7nx+v/TV8txhAJA6Jy+5I1NDwq2O1GLQnExrXec8G8e4NiASNng4ne5DzyQm76HPcDag4eUCS+09b7du8x0sWgK9L9wOZQndEGn+ci21YMb+iqT+6C6ArjTRcNJBS8hteEHsWvDjWIhX6mfzhmebHPsNuR60gQLDzD+G8PNNutyLRBR88KTs+W/", + "kid": "ohI9KlFR2P8=" + }, + { + "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", + "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH01_RecoveredCertificate_13_10", + "notbefore": 1634193433000, + "notafter": 1728887833000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvG8EuhEV3qydjzXibNlK\neBaRiswEivR7Ths756AhlCuY1xd1MC2qtTpledWZpdYaEr2QunzcE4OU7Tzj0Q4I\ny6Ru12yenffGAZVxt31TpwjMioh/hICU9kh5KospkHf4wH6S2+JoK9P3stljHbJd\ndJith9LzyzDQ+ezTVksE4KBD9iKLlvx6kOQE1LSW1lvnm89JqoY+Hlpdy0Gux8uj\nQ+HsPG5CQc4B7DuoYEjmmWSxGIIR3tuym4UjqUpOYYdq2Ee3ahGt4qPV8mhERHwd\nT0XeMgTbKaakfBjdQeH+Imd2IRmVaZUkgxTSXpXSCP/tus8k77BNknCtf54N5o2H\nPwIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "rTEJEs6D1ik=" + }, + { + "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", + "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200004_21_09", + "notbefore": 1632395497000, + "notafter": 1727089897000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAphhhJq5dIl4yUEbliJyc\nkuldKiylWZZfTRQNx/k0xUFU60n9tUR4Ky1AibJHIiN/nIhSZTgwSSuALWinuEri\nI1ROb++TsQODtC3dDFFbNIwq1sVuT1TI7o6nnGTRHxwJckNP5++obdKSZtUfT6LO\nClxFsNoYl2EAzwb8YdcOiWNEB8gj7aY+vPL9BmECb9IRxPwhOxzPYkgLUkvqzt2U\nzV6CFKM5t4LxM4pTICy9vlIViZTcx6FDJ78AuT2C5AbW+ILYmc6/V189uga2/PTy\nEJyABw3gRg2BItkwy1flAjQcNIhKzshorcwGPD9EtuqpWF26DyU/HIQUabptMC6P\nCwIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "rVPuf3yKLBg=" + }, + { + "issuer": "C = HR O = AKD d.o.o. CN = Croatia DGC CSCA", + "subject": "C = HR O = AKD d.o.o. CN = Croatia DGC DS 001", + "notbefore": 1621516666000, + "notafter": 1684588665000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV\n5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICwDCCAmagAwIBAgIIPR9jkXY7CPEwCgYIKoZIzj0EAwIwPTELMAkGA1UEBhMCSFIxEzARBgNVBAoMCkFLRCBkLm8uby4xGTAXBgNVBAMMEENyb2F0aWEgREdDIENTQ0EwHhcNMjEwNTIwMTMxNzQ2WhcNMjMwNTIwMTMxNzQ1WjA/MQswCQYDVQQGEwJIUjETMBEGA1UECgwKQUtEIGQuby5vLjEbMBkGA1UEAwwSQ3JvYXRpYSBER0MgRFMgMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzaOCAUwwggFIMB8GA1UdIwQYMBaAFDErHKPIgGXhH70EktAlPHyGj1LRMC8GA1UdEgQoMCaBEkNyb2F0aWEuREdDQGRnYy5ocqQQMA4xDDAKBgNVBAcMA0hSVjAvBgNVHREEKDAmgRJDcm9hdGlhLkRHQ0BkZ2MuaHKkEDAOMQwwCgYDVQQHDANIUlYwZwYDVR0fBGAwXjAtoCugKYYnaHR0cDovL2RnYzEuZGdjLmhyL2Nyb2F0aWEtZGdjLWNzY2EuY3JsMC2gK6AphidodHRwOi8vZGdjMi5kZ2MuaHIvY3JvYXRpYS1kZ2MtY3NjYS5jcmwwHQYDVR0OBBYEFB55yLnz+T3ShQFs345mxQEJZb7TMCsGA1UdEAQkMCKADzIwMjEwNTIwMTMxNzQ2WoEPMjAyMTExMTYxMzE3NDZaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiANYlqMzCo7P6/FbwxS88MCB43CIBgfpJDmQ+D120Ov0gIhALJNQbk8HdHnkd31GV88U1N4YghHSZslLY8eZX8wSYR/", + "kid": "25QCxBrBJvA=" + }, + { + "issuer": "C = HR O = AKD d.o.o. CN = Croatia DGC CSCA", + "subject": "C = HR O = AKD d.o.o. CN = Croatia DGC DS 002", + "notbefore": 1636488815000, + "notafter": 1699560814000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsHGctEPFotenAxVqYr/5Ztl46BU9\nhWNYAYdGWihiGzRTOgXzONqCQJqB37pacA53L7OlXPFONvT9KWYvbsVeiw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICwDCCAmagAwIBAgIIcPs80UkeH/UwCgYIKoZIzj0EAwIwPTELMAkGA1UEBhMCSFIxEzARBgNVBAoMCkFLRCBkLm8uby4xGTAXBgNVBAMMEENyb2F0aWEgREdDIENTQ0EwHhcNMjExMTA5MjAxMzM1WhcNMjMxMTA5MjAxMzM0WjA/MQswCQYDVQQGEwJIUjETMBEGA1UECgwKQUtEIGQuby5vLjEbMBkGA1UEAwwSQ3JvYXRpYSBER0MgRFMgMDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsHGctEPFotenAxVqYr/5Ztl46BU9hWNYAYdGWihiGzRTOgXzONqCQJqB37pacA53L7OlXPFONvT9KWYvbsVei6OCAUwwggFIMB8GA1UdIwQYMBaAFDErHKPIgGXhH70EktAlPHyGj1LRMC8GA1UdEgQoMCaBEkNyb2F0aWEuREdDQGRnYy5ocqQQMA4xDDAKBgNVBAcMA0hSVjAvBgNVHREEKDAmgRJDcm9hdGlhLkRHQ0BkZ2MuaHKkEDAOMQwwCgYDVQQHDANIUlYwZwYDVR0fBGAwXjAtoCugKYYnaHR0cDovL2RnYzEuZGdjLmhyL2Nyb2F0aWEtZGdjLWNzY2EuY3JsMC2gK6AphidodHRwOi8vZGdjMi5kZ2MuaHIvY3JvYXRpYS1kZ2MtY3NjYS5jcmwwHQYDVR0OBBYEFIZqz9SFr6ueNBY4r/u1ZNovF+WlMCsGA1UdEAQkMCKADzIwMjExMTA5MjAxMzM1WoEPMjAyMjA1MDgyMDEzMzVaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiALjpDpXS59EIpkdvCjEAdR6UPq41CbnhWAat7dGT8+zwIhAOdLwTxsmuRttRDg6ZX0CGxwjHFu7NfxCwqdrOd8n50E", + "kid": "IoybU6axZJE=" + }, + { + "issuer": "C = HU ST = Budapest L = Budapest O = EESZT CN = DGC_CSCA_HU_PRD_20210621_01", + "subject": "C = HU ST = Budapest L = Budapest O = OKFO CN = DGC_DSC_HU_PRD_20210628_01", + "notbefore": 1624889734000, + "notafter": 1687961734000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadM\nS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/A==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICnDCCAkGgAwIBAgIUa/gUnrKtSo4XzXVTPkV2APtPwXEwCgYIKoZIzj0EAwIwaTELMAkGA1UEBhMCSFUxETAPBgNVBAgMCEJ1ZGFwZXN0MREwDwYDVQQHDAhCdWRhcGVzdDEOMAwGA1UECgwFRUVTWlQxJDAiBgNVBAMMG0RHQ19DU0NBX0hVX1BSRF8yMDIxMDYyMV8wMTAeFw0yMTA2MjgxNDE1MzRaFw0yMzA2MjgxNDE1MzRaMGcxCzAJBgNVBAYTAkhVMREwDwYDVQQIDAhCdWRhcGVzdDERMA8GA1UEBwwIQnVkYXBlc3QxDTALBgNVBAoMBE9LRk8xIzAhBgNVBAMMGkRHQ19EU0NfSFVfUFJEXzIwMjEwNjI4XzAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadMS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/KOByDCBxTAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFLfwN2b/BblsB3wY92Sbxbc7QOmZMB8GA1UdIwQYMBaAFPHcUjbpr2UPGVKQEwKXLMGD4sDTMEEGA1UdHwQ6MDgwNqA0oDKGMGh0dHBzOi8vd3d3LmVlc3p0Lmdvdi5odS9jcmwvZGNjL0NTQ0FfUFJEXzAxLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCxhu4NSIKO9F8jlaxe3EqAIDoPAaF5A9+GPy03W0PpVQIhAL12JyQzJ9f7qnLapDMUSf6HD0+AMNHl9BjHZphNBUlu", + "kid": "4GkJs9YsYS4=" + }, + { + "issuer": "C = SK ST = SK L = Bratislava O = NCZI OU = DGCOperations CN = CSCA_DGC_SK_01", + "subject": "C = SK L = Bratislava O = NCZI OU = DGCOperations CN = DGC_01", + "notbefore": 1599004800000, + "notafter": 1725148800000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6qxT6sSK3TDheWFHTBkfveooRhtU\nWqEqrELD9B7aAk7xjPS3MBETtmnWb4nRzBINvFwrLDxQCqTX8Jevp33c4Q==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICVTCCAfqgAwIBAgIUSfAlV5Ro7+hRqRa9kH4Un95XIGQwCgYIKoZIzj0EAwIwbzELMAkGA1UEBhMCU0sxCzAJBgNVBAgMAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMRcwFQYDVQQDDA5DU0NBX0RHQ19TS18wMTAeFw0yMDA5MDIwMDAwMDBaFw0yNDA5MDEwMDAwMDBaMFoxCzAJBgNVBAYTAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMQ8wDQYDVQQDDAZER0NfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATqrFPqxIrdMOF5YUdMGR+96ihGG1RaoSqsQsP0HtoCTvGM9LcwERO2adZvidHMEg28XCssPFAKpNfwl6+nfdzho4GIMIGFMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUj9izCT/z9ccQUX6CeZ0ns8Zu0SMwHwYDVR0jBBgwFoAUm9JYe8TeF7J1Gm8LZ2DfcBXXLHMwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNJADBGAiEA1jDNVMcnPoIOaGxeFRKaRZ8MrwR6xmmv0F0I0l5wKuUCIQDnaar37bg6T8i3rJp6KHQkJqJ1NSnc0Qltw1qghCJC0g==", + "kid": "6CDB1hL+uKU=" + }, + { + "issuer": "C = LT O = State Enterprise Centre of Registers CN = LT_DGC_CSCA_1", + "subject": "C = LT ST = Lithuania O = Ministry of Health of The Republic of Lithuania CN = LT_DGC_DSC_2", + "notbefore": 1625090401000, + "notafter": 1688162401000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsIcppmCVhq96vMc4NtW8\nX+yV6O1oC7hfKnewK1/pxfByqlVTPpETDLAjNq9knNQpCs7vGjadCbDAylsQRK7q\nfU3sUUKamh6FgDhFo1dzC4mUHCy3XBL04XJie2eT/a6Wgjrn6NjEFk5M4Jl4N8u/\nRbfaVxqaOjUM0hBfuzfZeL2LT30POqDHj1hcyod1fIbG4vv2Upqxe3OX/WLr+WzS\nPbRkPwxcJjmYeNYODT0rEcd9VSzJpljaK+eDVwxT0wMRnCH2QLxdw8sR+oDYDTZB\naabeHYyZ0CfYzSoBOZT3fVMAbjkVAl8GFyH8tUm4lMQbYEMbl/FkftcZQicaqvRd\nQQIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIFBDCCArigAwIBAgIGAXpe76SiMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYzMDIyMDAwMVoXDTIzMDYzMDIyMDAwMVowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCHKaZglYaverzHODbVvF/slejtaAu4Xyp3sCtf6cXwcqpVUz6REwywIzavZJzUKQrO7xo2nQmwwMpbEESu6n1N7FFCmpoehYA4RaNXcwuJlBwst1wS9OFyYntnk/2uloI65+jYxBZOTOCZeDfLv0W32lcamjo1DNIQX7s32Xi9i099Dzqgx49YXMqHdXyGxuL79lKasXtzl/1i6/ls0j20ZD8MXCY5mHjWDg09KxHHfVUsyaZY2ivng1cMU9MDEZwh9kC8XcPLEfqA2A02QWmm3h2MmdAn2M0qATmU931TAG45FQJfBhch/LVJuJTEG2BDG5fxZH7XGUInGqr0XUECAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUPZCkpW9sE+8wWf3UeVmVyI2yuKMwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQAh3n6+6+wrWjfQc0PYua+M5sB7QMU1K0jo3Hs+lwYiMEnIZNbdQgnuNAYHm4cf3Qy1YLt9XkMQdzwRz3kbSUQ4iythOby2GBEgCZ7fr17h/2o7VL9QC+hMUqsBXWYEQ1JuYz/L64X60sbIgt2qLy+oeA4WEVc1Yuz7DQsJG0qZRovVQvRy0cL7RHc6uiraaUxsKX7WFzNf6KlT1C1GeFJzcPSTclYMtHR3UgecUEaEenPciPMmUsJY5AOmZqxvJT62Nit9iuR18SieBNK+rJTrmxF4AV5Q7PE7Dhq5HBZhy7gE0UG1XfvSVSIcJcbMiDLxa+lXCFCVOf7drq2CaaIc6UQ0UXTeVmdbkJPid1/pvGLbIyL4UmOqxpzETcIRJKtvhF3UF1cD86/V/77qtZh0UeoCMGSdarZFvWB4As4PrEuvJB6Sfo1D++dCfQkfFEhQZO7wk1zLUB3Pqip2Io3eLn1oXMPxqtoYYH1vGv3HANhd8hVuO3ujYQgb9InLCnl7qPix5f8QrnRA4q72gpofoBnfGziMAyo9EKBib72waWaIpHi8Aw1XJntpHwld0gOV/cs/BquYdtqJpdW2FpoUvP4SbbxUVyDub+Uu2+Q9LKuIFlG4fqgRCUQ5NbgB5wmTxlYEc0xTb/VNICUtDSga4Fjeznm5l0oc4NoS6G4wzw==", + "kid": "7AfAwcpWOv0=" + }, + { + "issuer": "C = LT O = State Enterprise Centre of Registers CN = LT_DGC_CSCA_1", + "subject": "C = LT ST = Lithuania O = Ministry of Health of The Republic of Lithuania CN = LT_DGC_DSC_1", + "notbefore": 1623009026000, + "notafter": 1686081026000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnhBpxzeGXNlQs7U+j/Av\n1BUZ6CCgMR3bFLT4rRjO8KQ4IpAKqSCQ3j57MJqdumk3AUfHO5zhMZF4Awy0wqV3\noFlyP49/56KKZxGARe5UkyfPjVbl8AZpLmgYoS/Ior53TLrwmT/+zvXynzFYbOi2\nOtCtqanG+9OUhSVRrXEEB+56PpCltE31wemX1behxDuCbE4tuqyTYODFw9Le3dGC\nbHWdjxi5W3XIUNo8j2u2PKue0KS76Xv0zAYItTgChgv7mM55/G109m4MfeU7AHah\n43bJth8K8y+SxG3RYHskmNZ7sfn3w8w7WyW7D3/tKHcMt3hgIh9z3DuWeR1C296J\nyQIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIFBDCCArigAwIBAgIGAXni4GKHMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYwNjE5NTAyNloXDTIzMDYwNjE5NTAyNlowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ4Qacc3hlzZULO1Po/wL9QVGeggoDEd2xS0+K0YzvCkOCKQCqkgkN4+ezCanbppNwFHxzuc4TGReAMMtMKld6BZcj+Pf+eiimcRgEXuVJMnz41W5fAGaS5oGKEvyKK+d0y68Jk//s718p8xWGzotjrQrampxvvTlIUlUa1xBAfuej6QpbRN9cHpl9W3ocQ7gmxOLbqsk2DgxcPS3t3Rgmx1nY8YuVt1yFDaPI9rtjyrntCku+l79MwGCLU4AoYL+5jOefxtdPZuDH3lOwB2oeN2ybYfCvMvksRt0WB7JJjWe7H598PMO1sluw9/7Sh3DLd4YCIfc9w7lnkdQtveickCAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUwMNfEDstM4gYK8a8WQno8Qt1IZQwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQANsbkQ7P3OljNurVYmgB4g/76/tLMzbRExCuUltzxJW1zVZb4juuHNkmjIsUupaiYG8F8fQJpeRam2qgaPaPWqTYwn1lm8K+Ab4jE+9F6nyTJfvI2+BzOcGFsTUr+6If2YafJE9UMCeQWGP1kLX5srtQVTvb7fNHHnEvmijdKoqPv8Xcnkl6j53aZjeM6RrpSqrdtneHwquq9OWnjuKVDGZ1bDiIl52wjCQ+GLczPUtHai+qHNmhOibiT+JoT//fDb96vHlf40Y39zyxRFx0kx9zws8CbAPtvJOfWg6OjY50ARZRfixc6uFrCmnHtpzfcO3f+XwPBIBmvTjphZDGRqNjP46wqUv5vfpquIprhNef+jYi3k+719IBn5QuBNq4vJcMYHitK4WJ24TIxemq5YIXQYQct4t90V04Byhz7phox5P2rZJl3VBOSss7bGu64qc5Dh96joLLHFLChqqqDbhq7RI6Gl8Yn0ShUMg3WTbktTQ9dpGzYdH3wbbuMbzvGOYRTqTVGBH8eb9KJbgC0cDDhelHNXUcwn3Vvbdx3Y9KB2y50VTs9ZcawH52o4BuNwx3vO/L3Eq2EnkIZ2mobJDIGbBJUN2ttBim5muQxgEKns/QgNTpEZgBTkFjQ7mB7gIC8SHDDmU5wXe5aA3GN5/Gl5aUc3rHDmnZQKax63jw==", + "kid": "lshLbYfCWRg=" + }, + { + "issuer": "C = CY ST = Nicosia L = Nicosia O = Ministry of Health OU = IT Department CN = CSCA_EUDCC_CY_01", + "subject": "C = CY ST = Nicosia L = Nicosia O = Ministry of Health OU = IT Department CN = DSC_EUDCC_CY_01", + "notbefore": 1624533802000, + "notafter": 1686741802000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7S/R06707Glu721qJqvxIFzQ2LSb\nq9P2uu6nRKCBLsH5ryP3wXpggL6hGh080F462bGLTuI/hXrxEB2kR2Vjww==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICjzCCAjWgAwIBAgIJAPS0Vbm3L3MTMAoGCCqGSM49BAMCMIGBMQswCQYDVQQGEwJDWTEQMA4GA1UECAwHTmljb3NpYTEQMA4GA1UEBwwHTmljb3NpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRkwFwYDVQQDDBBDU0NBX0VVRENDX0NZXzAxMB4XDTIxMDYyNDExMjMyMloXDTIzMDYxNDExMjMyMlowgYAxCzAJBgNVBAYTAkNZMRAwDgYDVQQIDAdOaWNvc2lhMRAwDgYDVQQHDAdOaWNvc2lhMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxGDAWBgNVBAMMD0RTQ19FVURDQ19DWV8wMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO0v0dOu9Oxpbu9taiar8SBc0Ni0m6vT9rrup0SggS7B+a8j98F6YIC+oRodPNBeOtmxi07iP4V68RAdpEdlY8OjgZQwgZEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2NybC5ldWRjYy5nb3YuY3kvZHNjLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMCsGA1UdEAQkMCKADzIwMjEwNjIzMDAwMDAwWoEPMjAyMzA2MjMwMDAwMDBaMAoGCCqGSM49BAMCA0gAMEUCIQCL2pPCMNugzz3sGPDO02C6oMYvlkj6lfxPbckgmegv6QIgANPWEyptdWnK8y0WpU85VROr4cjobAkRNioquyCln00=", + "kid": "7rZbUrXNlLk=" + }, + { + "issuer": "C = NO O = Norsk helsenett SF CN = NO NHN CSCA PROD", + "subject": "C = NO O = Norwegian Institute of Public Health CN = DSC HN EU 2", + "notbefore": 1623057373000, + "notafter": 1686129973000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErbWQM5hj5SeR23DzCV0TVKrFhfYs\nmNVVSbPFxwyw4ZEfersZ3bp2h+rw2BhbLbzVHZIwWfnhaKZ72+JciUksFQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICLzCCAdWgAwIBAgITWQAAAAMkF9vUXhL/vwAAAAAAAzAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYwNzA5MTYxM1oXDTIzMDYwNzA5MjYxM1owUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEhOIEVVIDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASttZAzmGPlJ5HbcPMJXRNUqsWF9iyY1VVJs8XHDLDhkR96uxndunaH6vDYGFstvNUdkjBZ+eFopnvb4lyJSSwVo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBTjjLs+qOV9Ef2iKzss4qIJTpVymjAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIFoTcS0308Htrwu8gtsc1YX2679u/+UjB6i3iG4BvUGFAiEAirH6ggtWwXqXH94+kfwQ0A5q0pPGCdik4BIlnYmnpMk=", + "kid": "7z8+6oww2a8=" + }, + { + "issuer": "C = NO O = Norsk helsenett SF CN = NO NHN CSCA PROD", + "subject": "C = NO O = Norwegian Institute of Public Health CN = DSC AN EU 5", + "notbefore": 1623749441000, + "notafter": 1686822041000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfBeQBQBjyKpvjsCujqi15xnygRMy\nhjNsEy198LzTYuB+Mje1lxIvPYkfO/PEHQFgA52gn26bHCXE75GWqq6UMw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICLzCCAdWgAwIBAgITWQAAAAY+BhnAubZsywAAAAAABjAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzA0MVoXDTIzMDYxNTA5NDA0MVowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR8F5AFAGPIqm+OwK6OqLXnGfKBEzKGM2wTLX3wvNNi4H4yN7WXEi89iR8788QdAWADnaCfbpscJcTvkZaqrpQzo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRQ+3DSiNYiK7x+Rm48SPxVU66ILzAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIQCpipDAPcRMuFYLkVIA2qxW3bikYzJzNxdvnqzDMMitFAIgFt8q+4FM53rl4bfBzwnQRpXDLaGc4bdKC0wcjBUHKyQ=", + "kid": "Er5OTMwLd78=" + }, + { + "issuer": "C = NO O = Norsk helsenett SF CN = NO NHN CSCA PROD", + "subject": "C = NO O = Norwegian Institute of Public Health CN = DSC AN EU 4", + "notbefore": 1623749426000, + "notafter": 1686822026000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElH46JUamhvfj2ocSTxw9Eq7nVdP9\nOzBOxQ/zaWNXN5ucagla6nruNqfDiZXQMcz4gpZ6pcjtJl+xra2ATzZ9Pw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICMDCCAdWgAwIBAgITWQAAAAVu7yCnw/v4agAAAAAABTAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzAyNloXDTIzMDYxNTA5NDAyNlowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASUfjolRqaG9+PahxJPHD0SrudV0/07ME7FD/NpY1c3m5xqCVrqeu42p8OJldAxzPiClnqlyO0mX7GtrYBPNn0/o4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBSLtW/xwBSwzLlO3mNEzuueB3HOOTAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0kAMEYCIQDhu8xPp4rym01BCIlLAPB4UftU+yrPjxnsEPk+q4Bk4wIhAKVSgCN39hpSqqb5ErHWJdTp6+zJalGHg3Oj990zNYBY", + "kid": "cdm9Ymfwn2I=" + }, + { + "issuer": "C = IT O = Ministero della Salute CN = Italy DGC CSCA 1", + "subject": "C = IT O = Ministero della Salute CN = Italy DGC DSC 3", + "notbefore": 1636724505000, + "notafter": 1699796504000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwlU23NYZQba7t++TVejbvPxgS6w\ndW8uE7UPe14VkhXoKINhhrCT0EWHP+aPim6apT46Ktd0lfoNVTsbg2QQ2A==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEDzCCAfegAwIBAgIUdtfIwH49VX3gzjg7sw1okOP/KAIwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjExMTEyMTM0MTQ1WhcNMjMxMTEyMTM0MTQ0WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwlU23NYZQba7t++TVejbvPxgS6wdW8uE7UPe14VkhXoKINhhrCT0EWHP+aPim6apT46Ktd0lfoNVTsbg2QQ2KOBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFCR9+jzaaoSYO/7wB8YLfAk4Vw1FMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAokc+BGagX9kFseWotrm4fPrXBm6JLAxn9rC/Mz1awCXehbinERs+AVl029UApYXNp3/wiA57/9z1NkmMtZspBn1b0rJ4WP5hcRDhcsXxFvkSNx03/LwTCBi9iJSFNDQSv6bq8+YVSenamvwGJ+wNpemAIthrPshIGU2+MEipWhFmERYE6JaGJVFGs6n8r4IHzOx3gKeyUoGK2p4vM0Aw4LCfaqffEQz47lVMi+dDk3/h6CWWKZ6//+/15DKsuuj+BBAt9HBaqKAgCQke8RVceGJ1dsZFUW0yuCMqCSmoc3pksjQghYki9p4gs8Ex9khXCusRnCw81sG7VGrZgiDCEGHtbny774/CLCFNDpPC/CJLSEiyDP2exV6um2NEtAqQvGPlCdKVxHiLJ1FkunuHV0zYMLQi4+5mjAWbs4DuTgsOfkuZoJ7t8lFp9rqx3maNrew8Dw/w2nTuOHfk5f4xb99nlVXqA0rUPejZ/kf4ajU2AXrszxLAGXZnopryEcCSzxUSu1vRnv9NMtneTn3l0fDQTwPFVV2zquQUwl85Rm672r12Lupisn74UgwKgElxkgHjNRry++64ULoksydKWMz78ElfLV1tws8xoEx8I744pxsq7DTK52tcFuIZjASIfley6AbGLWzu8DUVGA3o/ANbavT56O8sXlT2OGipPx0=", + "kid": "8hilYZIP6uI=" + }, + { + "issuer": "C = IT O = Ministero della Salute CN = Italy DGC CSCA 1", + "subject": "C = IT O = Ministero della Salute CN = Italy DGC DSC 1", + "notbefore": 1620807497000, + "notafter": 1683879119000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/\njbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehojw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEDzCCAfegAwIBAgIURldu5rsfrDeZtDBxrJ+SujMr2IswDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjEwNTEyMDgxODE3WhcNMjMwNTEyMDgxMTU5WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/jbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehoj6OBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFC4bAbCvpArrgZ0E+RrqS8V7TNNIMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAjxTeF7yhKz/3PKZ9+WfgZPaIzZvnO/nmuUartgVd3xuTPNtd5tuYRNS/1B78HNNk7fXiq5hH2q8xHF9yxYxExov2qFrfUMD5HOZzYKHZcjcWFNHvH6jx7qDCtb5PrOgSK5QUQzycR7MgWIFinoWwsWIrA1AJOwfUoi7v1aoWNMK1eHZmR3Y9LQ84qeE2yDk3jqEGjlJVCbgBp7O8emzy2KhWv3JyRZgTmFz7p6eRXDzUYHtJaufveIhkNM/U8p3S7egQegliIFMmufvEyZemD2BMvb97H9PQpuzeMwB8zcFbuZmNl42AFMQ2PhQe27pU0wFsDEqLe0ETb5eR3T9L6zdSrWldw6UuXoYV0/5fvjA55qCjAaLJ0qi16Ca/jt6iKuws/KKh9yr+FqZMnZUH2D2j2i8LBA67Ie0JoZPSojr8cwSTxQBdJFI722uczCj/Rt69Y4sLdV3hNQ2A9hHrXesyQslr0ez3UHHzDRFMVlOXWCayj3LIgvtfTjKrT1J+/3Vu9fvs1+CCJELuC9gtVLxMsdRc/A6/bvW4mAsyY78ROX27Bi8CxPN5IZbtiyjpmdfr2bufDcwhwzdwsdQQDoSiIF1LZqCn7sHBmUhzoPcBJdXFET58EKow0BWcerZzpvsVHcMTE2uuAUr/JUh1SBpoJCiMIRSl+XPoEA2qqYU=", + "kid": "NJpCsMLQco4=" + }, + { + "issuer": "C = IT O = Ministero della Salute CN = Italy DGC CSCA 1", + "subject": "C = IT O = Ministero della Salute CN = Italy DGC DSC 2", + "notbefore": 1636724438000, + "notafter": 1699796437000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhX3UYfApjRF+CwtZqZJga6pwzbvN\nic585TOlc0qa2DbRcer1H3FYNY1HErSbo3+tOLiYkPHbrbQdLTE05rymtA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEDzCCAfegAwIBAgIUUfSAdqIwpkqwXjDhZ+0JdUPaICAwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjExMTEyMTM0MDM4WhcNMjMxMTEyMTM0MDM3WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhX3UYfApjRF+CwtZqZJga6pwzbvNic585TOlc0qa2DbRcer1H3FYNY1HErSbo3+tOLiYkPHbrbQdLTE05rymtKOBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFNyqHmbZQ9GcMJjdpjpoJXEwFn/8MA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEART1krCdKJhBVe9N4ydQ2UGQlgjEL1OgHj1s0TNCQKL3kEwYcafkKstW0vtsFi1ZGKrfgWkXCcWwkl5/NxfRNoSACApZog4cgSYDlgxa2G7KAoXa7xLuN2ADMEK02zXY5tGnd7Sv6Jl2nMfuUXMirAotr1vA6QETSDmbQNJqyKciDOQkdjxL1mGKhDzeneYRxLeKkOVox/X0uPguRYT2NS7jr2U7S3Z48667Ow46YLAI6n7IZGodn7Wktz1aqFWPGoBhJ2Y5C/QvBjzWn/0WfLBX65cchOdkZoYvfJcnbWS7Z7N/G1V2/CNYNr09EHiZnsmdcsqBX/ywyIGdybCGbx3cDqXsOBfcjH5Jy8moe7QL3oEraUDUEk5JF7un17GcdB4pjOlB8e1AWEthMpa2UMUw/vox1TCUjZ3pZa4rYn+yhcBoA6dYgu8B2HXcNFAE2S35XXDT15C0LvYh858UvtWSLoRmwyrkbNr7ImtgVrdzOKhIEetbmKLdM7fB7kcsYWZ05LTD3VsA2A8AHCOZ2noI4f50pd+VF1FtOz8ogRrCvHz7TJ4T7Kg6aIq/K1zlu06LaJQj2s8f4mJeCYZBfYmm4uywO2PHI8Hcv5MwTrbQ27CuvBkayfIToNOrNLsI8qlcE20Vfei/rLFAGWQoF0xVoJ+boNIBtwn/NBJDtIb4=", + "kid": "zrMytIH40Rk=" + }, + { + "issuer": "C = SI O = NIJZ, National Institute of Public Health of Slovenia OU = NIJZ eHealth CN = Slovenian Digital Covid Certificate CSCA", + "subject": "C = SI O = NIJZ, National Institute of Public Health of Slovenia OU = NIJZ eHealth CN = Slovenian Digital Covid Certificate Signer", + "notbefore": 1622793213000, + "notafter": 1685865213000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEmxEg2iFDaol9DVnrqIY5zkPXrBA\nNQlakmUfrBhogaDC2ZZ7fkQ2IcOJgEF4rQSyb34g5jDw88g7QaIknaLKMw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIC6jCCApCgAwIBAgIUJUAGAXpxHsU1S82LcnISggTrZYcwCgYIKoZIzj0EAwIwgZcxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTEwLwYDVQQDDChTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBDU0NBMB4XDTIxMDYwNDA3NTMzM1oXDTIzMDYwNDA3NTMzM1owgZkxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTMwMQYDVQQDDCpTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQSbESDaIUNqiX0NWeuohjnOQ9esEA1CVqSZR+sGGiBoMLZlnt+RDYhw4mAQXitBLJvfiDmMPDzyDtBoiSdosozo4G1MIGyMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUhB9+YwGh9z/Z2AFAekINW9AqzMwwHwYDVR0jBBgwFoAU1u0NkxR1dJeR9jh6pZ04KsvRFV8wMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzArBgNVHRAEJDAigA8yMDIxMDUyODEwMDAwMFqBDzIwMjIwNTI4MTAwMDAwWjAKBggqhkjOPQQDAgNIADBFAiEAgD02EKWZhDUblN1geYhOR8UYvbz1kKcncPzq4Y7SgS0CIEsbjBaDw8vWDqXsbDg7gckdK6SuF16w9Uvr/peExozy", + "kid": "90CNG8dcdn0=" + }, + { + "issuer": "CN = Poland DGC RootCSCA 1 O = Ministry of Health C = PL", + "subject": "CN = Poland Test DGC Service 1 OU = eHealth Centre O = Ministry of Health C = PL", + "notbefore": 1622029825000, + "notafter": 1685101825000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERG4yI/SSv70zEtVjzIrn/CypR1e0\nBZO5u8bIgltZicrg+992n2a7GucxK6zy91xq8F8XH7B0SJU75qkr8Z1d9A==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIChjCCAiygAwIBAgIISPHH9eN/DsUwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTAyNVoXDTIzMDUyNjExNTAyNVowZzEiMCAGA1UEAwwZUG9sYW5kIFRlc3QgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAREbjIj9JK/vTMS1WPMiuf8LKlHV7QFk7m7xsiCW1mJyuD733afZrsa5zErrPL3XGrwXxcfsHRIlTvmqSvxnV30o4HeMIHbMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQUJtco+4DwjQXe7tYA2X0svBWc8aowKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTUwMjVagQ8yMDIyMDUyNjExNTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQD0aM2oui9agdjvs3W3CBnJzNj1QTn86txDT8z4f92U/QIgdfA1+c567xA4y/11vguxxe9nDHAtAAEpXe8FkupyFTk=", + "kid": "AN1EeLIMAmo=" + }, + { + "issuer": "CN = Poland DGC RootCSCA 1 O = Ministry of Health C = PL", + "subject": "CN = Recovery DGC Service 1 OU = eHealth Centre O = Ministry of Health C = PL", + "notbefore": 1622029789000, + "notafter": 1685101789000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdxvWMfuk6CHCbffZWPS6bRgVYglY\ndED1NT1FCfXstUZ81AWmYOh6tbZgOF9OM1lzqdpFD1uOmEZ0A8XXYmkB1A==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICgDCCAiagAwIBAgIINrcF73thXScwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNDk0OVoXDTIzMDUyNjExNDk0OVowZDEfMB0GA1UEAwwWUmVjb3ZlcnkgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3G9Yx+6ToIcJt99lY9LptGBViCVh0QPU1PUUJ9ey1RnzUBaZg6Hq1tmA4X04zWXOp2kUPW46YRnQDxddiaQHUo4HbMIHYMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQU88MJtD/tgeFEqpb+Her86lI3G3UwKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTQ5NDlagQ8yMDIyMDUyNjExNDk0OVowCwYDVR0PBAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQDA6URDSMLbEYaFP1V1bfDlZDE5aANs8FcjghZGnadrHwIgbCe6gwSV5PAMwGXMgtbf9ItPzgFxV67mZzvH+avXOck=", + "kid": "FDNJjaSCWi0=" + }, + { + "issuer": "CN = Poland DGC RootCSCA 1 O = Ministry of Health C = PL", + "subject": "CN = Poland Vaccination DGC Service 1 OU = eHealth Centre O = Ministry of Health C = PL", + "notbefore": 1622029990000, + "notafter": 1685101990000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3N\nVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78g==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICiTCCAjCgAwIBAgIIPrgTduwYL84wCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTMxMFoXDTIzMDUyNjExNTMxMFowbjEpMCcGA1UEAwwgUG9sYW5kIFZhY2NpbmF0aW9uIERHQyBTZXJ2aWNlIDExFzAVBgNVBAsMDmVIZWFsdGggQ2VudHJlMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3NVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78qOB2zCB2DAfBgNVHSMEGDAWgBSReaLaaIESwKN0GqS63esPmeyLATAWBgNVHSUEDzANBgsrBgEEAY43j2UBAjBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vcDEuZXpkcm93aWUuZ292LnBsL2NjcDEvY3JsL0RHQ1Jvb3RDU0NBMS5jcmwwHQYDVR0OBBYEFEfkBAHCnTR6Ar66rg0lwacUkD9aMCsGA1UdEAQkMCKADzIwMjEwNTI2MTE1MzEwWoEPMjAyMjA1MjYxMTUzMTBaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiBrwE3IHj2Vjq71fA3jNBz/Hso3xXhVtPXa42JcfDJrvgIgLsib0ZAxm3ERXePd4Nlgvt+lISofEHlIi+CEBpJd5sE=", + "kid": "HhkeqvrtQ0U=" + }, + { + "issuer": "CN = DGC Country Signing CA OU = Public Service Development Agency O = Ministry of Justice of Georgia C = GE", + "subject": "CN = DGC DS Signer 2 OU = LEPL Information Technologies Agency O = Ministry of Internally Displaced Persons From the Occupied Territories, Labour, Health and Social Affairs of Georgia C = GE", + "notbefore": 1635527288000, + "notafter": 1698599287000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OUh2s00z3fKc2NTrYN+8SQERWvy\n3gRdGsmjrGMZQ9nZPT3bYLYDuyuhpYfQ8CSOuU2bScmWN9xthX3T6V1T8g==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDLTCCAtKgAwIBAgIUbq8e2Rnwzdt8bImI5KhdT7wvIZIwCgYIKoZIzj0EAwIwgYMxHzAdBgNVBAMMFkRHQyBDb3VudHJ5IFNpZ25pbmcgQ0ExKjAoBgNVBAsMIVB1YmxpYyBTZXJ2aWNlIERldmVsb3BtZW50IEFnZW5jeTEnMCUGA1UECgweTWluaXN0cnkgb2YgSnVzdGljZSBvZiBHZW9yZ2lhMQswCQYDVQQGEwJHRTAeFw0yMTEwMjkxNzA4MDhaFw0yMzEwMjkxNzA4MDdaMIHVMRgwFgYDVQQDDA9ER0MgRFMgU2lnbmVyIDIxLTArBgNVBAsMJExFUEwgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIEFnZW5jeTF9MHsGA1UECgx0TWluaXN0cnkgb2YgSW50ZXJuYWxseSBEaXNwbGFjZWQgUGVyc29ucyBGcm9tIHRoZSBPY2N1cGllZCBUZXJyaXRvcmllcywgTGFib3VyLCBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzIG9mIEdlb3JnaWExCzAJBgNVBAYTAkdFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OUh2s00z3fKc2NTrYN+8SQERWvy3gRdGsmjrGMZQ9nZPT3bYLYDuyuhpYfQ8CSOuU2bScmWN9xthX3T6V1T8qOBzzCBzDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGdNMng/by4nCNGrYeB79TXd3c2wMDAGA1UdJQQpMCcGCysGAQQBjjePZQEDBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5jcmEuZ2UvZGdjY291bnRyeXNpZ25pbmdjYS5jcmwwHQYDVR0OBBYEFBlRrQE2MFW1c+X7ZPuq50qEp6YDMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNJADBGAiEAiDjXwDLMCbYtUOhS3p6HIN1aZdJg2x+q7QlFldqYoBkCIQDsv+uGlrWi8ZAjn1QsyqsU6HKc3a2oD+bTsg0UA/ZboQ==", + "kid": "AcOmDWpm7kI=" + }, + { + "issuer": "CN = DGC Country Signing CA OU = Public Service Development Agency O = Ministry of Justice of Georgia C = GE", + "subject": "CN = DGC DS Signer 1 OU = LEPL Information Technologies Agency O = Ministry of Internally Displaced Persons From the Occupied Territories, Labour, Health and Social Affairs of Georgia C = GE", + "notbefore": 1635526565000, + "notafter": 1698598564000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEa5QqEDGwiaDJSMCLVHg6l9ScX3LI\n/9mzuzs6e+E0YBgeKTdQ5VV0IBCSIZkgjSb/Hfzghmi9rOa9aGuww7BU9Q==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDLDCCAtKgAwIBAgIUVO20iQwJJtX9tVMEQrEQl/B+5XswCgYIKoZIzj0EAwIwgYMxHzAdBgNVBAMMFkRHQyBDb3VudHJ5IFNpZ25pbmcgQ0ExKjAoBgNVBAsMIVB1YmxpYyBTZXJ2aWNlIERldmVsb3BtZW50IEFnZW5jeTEnMCUGA1UECgweTWluaXN0cnkgb2YgSnVzdGljZSBvZiBHZW9yZ2lhMQswCQYDVQQGEwJHRTAeFw0yMTEwMjkxNjU2MDVaFw0yMzEwMjkxNjU2MDRaMIHVMRgwFgYDVQQDDA9ER0MgRFMgU2lnbmVyIDExLTArBgNVBAsMJExFUEwgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIEFnZW5jeTF9MHsGA1UECgx0TWluaXN0cnkgb2YgSW50ZXJuYWxseSBEaXNwbGFjZWQgUGVyc29ucyBGcm9tIHRoZSBPY2N1cGllZCBUZXJyaXRvcmllcywgTGFib3VyLCBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzIG9mIEdlb3JnaWExCzAJBgNVBAYTAkdFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEa5QqEDGwiaDJSMCLVHg6l9ScX3LI/9mzuzs6e+E0YBgeKTdQ5VV0IBCSIZkgjSb/Hfzghmi9rOa9aGuww7BU9aOBzzCBzDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGdNMng/by4nCNGrYeB79TXd3c2wMDAGA1UdJQQpMCcGCysGAQQBjjePZQEDBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5jcmEuZ2UvZGdjY291bnRyeXNpZ25pbmdjYS5jcmwwHQYDVR0OBBYEFHtiZBY7D8iDDRpr5yECOpZ1cyfLMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBH/RuRLyOU640ZMdX0CDXC2/Hlv8tDsQN2Tjm2+fmbbAIhALY7w0RCZyu0JY1jmnBMKtzPr7mdqZGCR1oi7jC8RvXO", + "kid": "ZqPYe26eEEk=" + }, + { + "issuer": "C = FI O = Vaestorekisterikeskus CA OU = Sosiaali- ja terveydenhuollon palveluvarmenteet CN = VRK CA for Social Welfare and Health Care Service Providers", + "subject": "C = FI ST = Finland L = Helsinki O = Kansanelakelaitos OU = Kanta serialName = 1.2.246.556.12.21.2 CN = Todistuspalvelu", + "notbefore": 1624014000000, + "notafter": 1687121999000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEepKcLfnTZIej9gSNJVmR8sRYMMgz\ntnG9h0ZGWx7D1X1g32V/GtJc55HkoH+vqkbkhKJnvDBJ1JdsbkKKmBJb2Q==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "BKBFhNFXWAU=" + }, + { + "issuer": "C = EE O = Estonia OU = Police and Border Guard Board serialName = 01-2020 CN = CSCA_Estonia", + "subject": "CN = 02-2021_DCC serialName = 02-2021 C = EE O = Estonia OU = Health and Welfare Information Systems Centre", + "notbefore": 1623152362000, + "notafter": 1701776362000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNf\nd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4A==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEtzCCAm+gAwIBAgIBFjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDBwMQswCQYDVQQGEwJFRTEQMA4GA1UECgwHRXN0b25pYTEmMCQGA1UECwwdUG9saWNlIGFuZCBCb3JkZXIgR3VhcmQgQm9hcmQxEDAOBgNVBAUTBzAxLTIwMjAxFTATBgNVBAMMDENTQ0FfRXN0b25pYTAeFw0yMTA2MDgxMTM5MjJaFw0yMzEyMDUxMTM5MjJaMH8xFDASBgNVBAMWCzAyLTIwMjFfRENDMRAwDgYDVQQFEwcwMi0yMDIxMQswCQYDVQQGEwJFRTEQMA4GA1UEChMHRXN0b25pYTE2MDQGA1UECxMtSGVhbHRoIGFuZCBXZWxmYXJlIEluZm9ybWF0aW9uIFN5c3RlbXMgQ2VudHJlMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNfd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4KOBtzCBtDAdBgNVHQ4EFgQUrz4uJgDuJ+1fAWhBPQpmWJOqvUMwKwYDVR0QBCQwIoAPMjAyMTA2MDgxMTM5MjJagQ8yMDIxMTIwNTExMzkyMlowDgYDVR0PAQH/BAQDAgeAMDUGA1UdHwQuMCwwKqAooCaGJGh0dHBzOi8vd3d3LnBraS5wb2xpdHNlaS5lZS9jc2NhLmNybDAfBgNVHSMEGDAWgBRVq9JvhX7uQOBhSt+YPiu2k2xVvDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIAOCAgEAJ/OIJaw1Hg+yD7TH3YPG7ux6I4Fpx1QC1UPdIouG0HcHm8Lde+cB1IHlHc/C03jvVWnkbeH0mlpHLcStNICIgc8wfhOLS/yDvor/sYSNNX2v9OcJuxWmL6a2b3C5vuQJNr09HrSqv+1MDM/Qj7qRSraO9JSm59StyaoEdZXgK40eNnSxfRD2HFRpqr6aY+FB7ONH53/nCi/PT+fW6LB2hS+VtBUaWt1pShs2W8cahNJ/O6oujquKDhTj8uqdbhV9lug2JJ2/eLxWawEYVGC20HMrg9qwW971mR3UeGZmbJb0KyHr4b1LupC+sN88/A0CwCybS3x2Dla/OvPff7W1BqFyhEzBgDL1jB9iVF57erYGkoPd9oHKTIQdZ84u7JKLvi13xJGAR4KAsryrfP0Wcc29+TQJPZwedaauz96OUpC92hcu21cI5drikSF/Y9U96gGay0AWHM+DafA6NEUiWRMIFC3IaMjMr6FFwz4uq6KTK08YZoN/Dn09eVgrBcXqHR69FSJ00lwduDDamN9JHmy5wuLw22rDaXiymUYAkZZCc1PS2yJG8bIOfzYEAHAbESlJQ671MmudVDRM3PuvVICRp0jXZg/sNzT053rDpk0Z2nxKLcAVzPo0wRgnpih1zVchVTakNbWxwsOPftCSVnZjEhAHvq/GZ3ysssMNRUc=", + "kid": "EzYR1uk/E0I=" + }, + { + "issuer": "O = State enterprise \"DIIA\" CN = \"DIIA\". Green Certificate CSCA serialName = UA-43395033-2021 C = UA L = Kyiv 2.5.4.97 = NTRUA-43395033", + "subject": "O = State enterprise \"DIIA\" CN = \"DIIA\". Green Certificate DSC 2 serialName = 22 C = UA L = Kyiv", + "notbefore": 1629234000000, + "notafter": 1692305999000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd22zt56DQx1ao5dd4u6jU3KPELJd\ncWfl0+FJ6cVhCb8s0SmQleFtS9m5RQqVzbBr/JnUfqVZjvrPFzwpbgdMeQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEuzCCBGGgAwIBAgIUeQTIILWQh4cEAAAAFgAAACEAAAAwCgYIKoZIzj0EAwIwgZsxIDAeBgNVBAoMF1N0YXRlIGVudGVycHJpc2UgIkRJSUEiMScwJQYDVQQDDB4iRElJQSIuIEdyZWVuIENlcnRpZmljYXRlIENTQ0ExGTAXBgNVBAUTEFVBLTQzMzk1MDMzLTIwMjExCzAJBgNVBAYTAlVBMQ0wCwYDVQQHDARLeWl2MRcwFQYDVQRhDA5OVFJVQS00MzM5NTAzMzAeFw0yMTA4MTcyMTAwMDBaFw0yMzA4MTcyMDU5NTlaMHUxIDAeBgNVBAoMF1N0YXRlIGVudGVycHJpc2UgIkRJSUEiMSgwJgYDVQQDDB8iRElJQSIuIEdyZWVuIENlcnRpZmljYXRlIERTQyAyMQswCQYDVQQFEwIyMjELMAkGA1UEBhMCVUExDTALBgNVBAcMBEt5aXYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3bbO3noNDHVqjl13i7qNTco8Qsl1xZ+XT4UnpxWEJvyzRKZCV4W1L2blFCpXNsGv8mdR+pVmO+s8XPCluB0x5o4ICpjCCAqIwHQYDVR0OBBYEFIjv6MDr8gqaj1GvhYENJ5FvDg+LMB8GA1UdIwQYMBaAFHkEyCC1kIeHDT09MC0K0Ko+YXcCMA4GA1UdDwEB/wQEAwIGwDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMEEGA1UdIAQ6MDgwNgYJKoYkAgEBAQICMCkwJwYIKwYBBQUHAgEWG2h0dHBzOi8vZ3JlZW5jYS5kaWlhLmdvdi51YTAJBgNVHRMEAjAAMFQGCCsGAQUFBwEDBEgwRjAIBgYEAI5GAQEwLQYGBACORgEFMCMwIRYbaHR0cHM6Ly9ncmVlbmNhLmRpaWEuZ292LnVhEwJlbjALBgkqhiQCAQEBAgEwTgYDVR0fBEcwRTBDoEGgP4Y9aHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvZG93bmxvYWQvY3Jscy9DQS03OTA0QzgyMC1GdWxsLmNybDBPBgNVHS4ESDBGMESgQqBAhj5odHRwOi8vZ3JlZW5jYS5kaWlhLmdvdi51YS9kb3dubG9hZC9jcmxzL0NBLTc5MDRDODIwLURlbHRhLmNybDCBiQYIKwYBBQUHAQEEfTB7MDUGCCsGAQUFBzABhilodHRwOi8vZ3JlZW5jYS5kaWlhLmdvdi51YS9zZXJ2aWNlcy9vY3NwLzBCBggrBgEFBQcwAoY2aHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvY2EtY2VydGlmaWNhdGVzL2dyZWVuY2EucDdiMEoGCCsGAQUFBwELBD4wPDA6BggrBgEFBQcwA4YuaHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvc2VydmljZXMvdHNwL2VjZHNhLzAKBggqhkjOPQQDAgNIADBFAiEAzrDXxTuym77Eo9J4GNB/GoZRm9lTVtmUpLCjhzr7t5ICIDdt0waoDoBfm201AGoLjErsage0uxBI3SkncWQaP7nZ", + "kid": "FhciF/j3plg=" + }, + { + "issuer": "C = MC O = Principality of Monaco OU = Foreign Office of Monaco CN = CSCAPKI_MC", + "subject": "C = MC O = Principality of Monaco OU = Ministry of Health and Social Affairs CN = DSPKI_MC_DGC_1", + "notbefore": 1632143989000, + "notafter": 1679491189000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/XCqYpwUi4RLldTOqsukogo6l4ZU\nIXO4ZtjkUxEpDToYLFI0uApt1KXSfpsn8EfNGPaWF+YW2B1QKpbCtbtZFg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIE6zCCAtOgAwIBAgITEfc5jeKc7JLK6DrtdI7KoEudnzANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJNQzEfMB0GA1UECgwWUHJpbmNpcGFsaXR5IG9mIE1vbmFjbzEhMB8GA1UECwwYRm9yZWlnbiBPZmZpY2Ugb2YgTW9uYWNvMRMwEQYDVQQDDApDU0NBUEtJX01DMB4XDTIxMDkyMDEzMTk0OVoXDTIzMDMyMjEzMTk0OVowdzELMAkGA1UEBhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25hY28xLjAsBgNVBAsMJU1pbmlzdHJ5IG9mIEhlYWx0aCBhbmQgU29jaWFsIEFmZmFpcnMxFzAVBgNVBAMMDkRTUEtJX01DX0RHQ18xMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/XCqYpwUi4RLldTOqsukogo6l4ZUIXO4ZtjkUxEpDToYLFI0uApt1KXSfpsn8EfNGPaWF+YW2B1QKpbCtbtZFqOCAUowggFGMCgGA1UdEQQhMB+CC3d3dy5nb3V2Lm1jpBAwDjEMMAoGA1UEBwwDTUNPMDUGA1UdEgQuMCyGGGh0dHBzOi8vY3NjYS1tY28uZ291di5tY6QQMA4xDDAKBgNVBAcMA01DTzAOBgNVHQ8BAf8EBAMCB4AwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzArBgNVHRAEJDAigA8yMDIxMDkyMDA3NDQ0OFqBDzIwMjIwMzIwMDc0NDQ4WjAdBgNVHQ4EFgQU5DhDGjpYh+dwXciftwec8RGrW00wHwYDVR0jBBgwFoAUMDKcfP59jwLtxRJa4OtXv+iFiSkwMQYDVR0fBCowKDAmoCSgIoYgaHR0cHM6Ly9jc2NhLW1jby5nb3V2Lm1jL01DTy5jcmwwDQYJKoZIhvcNAQELBQADggIBAAnLvzFhQlE4lohlktg0QUnF6DGIA1JEC26QRnJi+1gMXNZok90Q37DPJ54uml8UnCkieGVIpQaDp5jIxMax+t6QmwkgQNoQzjiJJqeKP6xBsEUmGUKURx0g5z7ULem+TdedSIiMEqSrie3YX5Zfea3dzy3zIw2s6cCa67RHj860OqXZHrMtYc7rqoXxkWkqGaSJovxSthmiBWQisTPFMTzFZqm85ojU11A3uY8ReuUrUuvyefVAFENLuz8j2T6CGOIigNxnmyZzm+2TpH+53Dd5S8MlVwuZZ4RHv2g+p/YygOvHceGPIORSeLcqrIW4kgz6HxonBy/vjC6Pj07wFlyFafo3V5KQxPUQZtFQ8blhe7ZrRPyimObcA55Oh20V/HnVewzz3onjEQuotg1QNRJ7gzoJeBunwFXpHrG/mUg3dVeow0pOV0vsQ/QAOCM0p7GVABoHT4O4dOWLNoaWcoQBvPSGbAl5O1YhzOhXRTlyYfxNSUxKavWfpTF1mB1WXyThtatvQ2cP7qlgVYbBjvejyz+RTpK2cgyDFDlcBJaBakCBeuqEJvKvMxX50NqQAVBTfywrQyIyynttQgoxxl5KwkEPJ4BrbP/XIw8KkuGO5C9EKGjaftQNQ25GkdNDQFyMiJU7EhN6Hp/6dsgZXnfG8gacZu4vnIiXphYBigi2", + "kid": "FtUwA9uHJoo=" + }, + { + "issuer": "C = MC O = Principality of Monaco OU = Foreign Office of Monaco CN = CSCAPKI_MC", + "subject": "C = MC O = Principality of Monaco OU = Ministry of Health and Social Affairs CN = DSPKI_MC_DGC_1", + "notbefore": 1623918269000, + "notafter": 1671265469000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcrxlv5/uGbsaXM/QMSpvZV2iNtF0\no4QBech6LGpy3OEefbJLf+4iqI19QNWtUXEjlMMytB4+1ESLHdXyki5X2g==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIE7DCCAtSgAwIBAgIUAJdHETmGhF9czCBAxz36xGrwMPkwDQYJKoZIhvcNAQELBQAwZjELMAkGA1UEBhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25hY28xITAfBgNVBAsMGEZvcmVpZ24gT2ZmaWNlIG9mIE1vbmFjbzETMBEGA1UEAwwKQ1NDQVBLSV9NQzAeFw0yMTA2MTcwODI0MjlaFw0yMjEyMTcwODI0MjlaMHcxCzAJBgNVBAYTAk1DMR8wHQYDVQQKDBZQcmluY2lwYWxpdHkgb2YgTW9uYWNvMS4wLAYDVQQLDCVNaW5pc3RyeSBvZiBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzMRcwFQYDVQQDDA5EU1BLSV9NQ19ER0NfMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHK8Zb+f7hm7GlzP0DEqb2VdojbRdKOEAXnIeixqctzhHn2yS3/uIqiNfUDVrVFxI5TDMrQePtREix3V8pIuV9qjggFKMIIBRjAoBgNVHREEITAfggt3d3cuZ291di5tY6QQMA4xDDAKBgNVBAcMA01DTzA1BgNVHRIELjAshhhodHRwczovL2NzY2EtbWNvLmdvdXYubWOkEDAOMQwwCgYDVQQHDANNQ08wDgYDVR0PAQH/BAQDAgeAMDMGA1UdJQQsMCoGDCsGAQQBAI43j2UBAQYMKwYBBAEAjjePZQECBgwrBgEEAQCON49lAQMwKwYDVR0QBCQwIoAPMjAyMTA2MTcwODE0MDBagQ8yMDIxMTIxNzA4MTQwMFowHQYDVR0OBBYEFCurTSCZX0MwxJXi6a/cJR4zZn9WMB8GA1UdIwQYMBaAFDAynHz+fY8C7cUSWuDrV7/ohYkpMDEGA1UdHwQqMCgwJqAkoCKGIGh0dHBzOi8vY3NjYS1tY28uZ291di5tYy9NQ08uY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQAEaZtWub0CVASIEHG95DCwcFIVdaVZZupOzKuIimUNRH8+9pa9IPekVPLiArnGlmpAg6o4Ac8MVHvCkEiSAA8HVDkABbssmrKm6ZZ4XRDtBokrGlYskUy2B8AQypPKjKXz/vMYnVMNl4kkcehG8+B0KyPrpYMK7VXQuRxe+QC0CaemS2NGLNvr2+vnpfXeJAfM6TpnSPaN7MjAgt/8UyGJP6HLuHbGgbALgcxwqq5CniU3f8zLjIXRKWqhDmE4M8ufu/VFVR18fWoHqeytcOpFTdmN3YLxu9jA573KHyLRLO7g20PlOJYuHtOoG2SzwEa2Ut0ooFAajLnxwVoYuCfYKWubYRRqReFI45EtNtC8Tut8J3SAIk53IH6v1mG4m2QFCGFV7ehu6A+jwsVrg8o+XesHV96EK8jJooEjp2jIIrHHU8LTozrWSECiRsnEWv7e4TP4+3dj/6Yrrzm6DlzCw/y9s6T/Iolp1SKaNsHOHJwwNTJAqzGxP8N8fdnxs1c1iLXXxHJy8AKZC8eNFj09AF8Tvi/IQTOpmMFhRGkCCkrNMf5Zf7vFLtAm+yqOsOOYNhTiyoqX96tKipsxcm+CDIAnhyUgJgxVfEUO547lg3/hdJUvI62/0gisUqXBnYDwMiWlXZHmS+K9lMar0k1NeKb2K5BSox7U3oP+d/RPpg==", + "kid": "Pcl7yBWEQ7c=" + }, + { + "issuer": "C = MT O = Government of Malta CN = Malta DCC Signing CA", + "subject": "CN = MLT-DSC-RECOVERY-003 O = Government of Malta C = MT", + "notbefore": 1625097600000, + "notafter": 1688255999000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDON\nYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICgTCCAiegAwIBAgIIFwgHF3EO4GkwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDMxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDONYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdaOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBR9uzKFO2DLNzUjBFGi4relF01KBTB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNIADBFAiEA99DvYsvpGT4tqpc0BMSCZeyZ7WMbt8ZM1PpabmhX8+cCIGCtDA+B0wWuPtFcN+xk/jBG5t30dSFLWQB43XkMQLug", + "kid": "GvVR3e6VJIM=" + }, + { + "issuer": "C = MT O = Government of Malta CN = Malta DCC Signing CA", + "subject": "CN = MLT-DSC-TEST-001 O = Government of Malta C = MT", + "notbefore": 1624233600000, + "notafter": 1687391999000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfapP8+QeyFgXVvY41YkQudlUUh7I\nZBBpIdOJ34xYmxCEuHXbVUFqt/JSnbpVsGsd7ZBPUjL2u5Ks9moBMDEPLg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICfjCCAiOgAwIBAgIIejS7d37VXgEwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMTEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR9qk/z5B7IWBdW9jjViRC52VRSHshkEGkh04nfjFibEIS4ddtVQWq38lKdulWwax3tkE9SMva7kqz2agEwMQ8uo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFBR+KFEXuumXgCc5GWe258iqVrnfMHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNjIxMDAwMDAwWoEPMjAyMTEyMjEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDBnG+uLfchypa5wnmHMUi2aWEzWkbjoGgn5WsWmXffcAIhAKMusBaq7xzWVRMreNFvQsitrCaSaqDoQPvQuU72+SjN", + "kid": "QacbC7DdD4U=" + }, + { + "issuer": "C = MT O = Government of Malta CN = Malta DCC Signing CA", + "subject": "CN = MLT-DSC-VACCINATIONS-001 O = Government of Malta C = MT", + "notbefore": 1624233600000, + "notafter": 1687391999000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1q1nvgXLGIbibQuYQU+f+Xs+mcbP\nmukAc3KQAyy/5KZH+n5F4bG4V0XIjphX093YxHh1JbHWOzuhKuan9FboyA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIChTCCAiugAwIBAgIIZEwDM+Nt1KMwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAxMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNatZ74FyxiG4m0LmEFPn/l7PpnGz5rpAHNykAMsv+SmR/p+ReGxuFdFyI6YV9Pd2MR4dSWx1js7oSrmp/RW6MijgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUuCrjQfrYEdJhuUeDcYx4JKEFOf4weQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA2MjEwMDAwMDBagQ8yMDIxMTIyMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIgZGBb0sNv06M+s8UpL7ziN/FU4+4AGksrMB2BIIkZDBwCIQDXwcZZQKZFsV55HpRm/AxXSBLXu4vPFR2Lx3rdqy0nFg==", + "kid": "UZ1cSMaPcaQ=" + }, + { + "issuer": "C = MT O = Government of Malta CN = Malta DCC Signing CA", + "subject": "CN = MLT-DSC-TEST-002 O = Government of Malta C = MT", + "notbefore": 1625097600000, + "notafter": 1688255999000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4DsoM1rJFjHyQPcX6WKDWZkouBeh\nfQGxqOgwFAYyRKXbrSuL+tkz8sJfo8djfsuQRLDSuZxud0IOsMB9YsTMpg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICfjCCAiOgAwIBAgIIJTfDXWft5tcwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMjEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATgOygzWskWMfJA9xfpYoNZmSi4F6F9AbGo6DAUBjJEpdutK4v62TPywl+jx2N+y5BEsNK5nG53Qg6wwH1ixMymo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFAdYsuwV3Y8H3ArMdIP4+88NQzj6MHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNzAxMDAwMDAwWoEPMjAyMjAxMDEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDKRMYKb/xaog2wAz78sg7nxPSSGvmXDSmGm3OAvywYtwIhAL1aS9k2jC5FGCnXL146W6TNwJOLZXhG0WELPuo1eaPF", + "kid": "bfoj2trt6bE=" + }, + { + "issuer": "C = MT O = Government of Malta CN = Malta DCC Signing CA", + "subject": "CN = MLT-DSC-VACCINATIONS-002 O = Government of Malta C = MT", + "notbefore": 1625097600000, + "notafter": 1688255999000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXj9fU7e4KVYe1VakCDZjYquHzkox\nSHT8D33zeMDfyLbYi/GSVpKQtPwBPZlPx65r2Kb2warIK8BgxSgsQvMIag==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIChTCCAiugAwIBAgIIWGrho8bBjMowCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAyMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABF4/X1O3uClWHtVWpAg2Y2Krh85KMUh0/A9983jA38i22IvxklaSkLT8AT2ZT8eua9im9sGqyCvAYMUoLELzCGqjgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUOLKcvXnMDSbbBkkI/qyub1XWtNUweQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA3MDEwMDAwMDBagQ8yMDIyMDEwMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIhAPh/K0cwTwjugfRAGr47Ntn3O6iy5Dq6vtWdminY7WDrAiA/usc8ejitliKRcw9kWYkRTe5M8QTrGi0d8ISZfbWPzw==", + "kid": "ccgQ13tmkU8=" + }, + { + "issuer": "C = MT O = Government of Malta CN = Malta DCC Signing CA", + "subject": "CN = MLT-DSC-RECOVERY-002 O = Government of Malta C = MT", + "notbefore": 1625097600000, + "notafter": 1688255999000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNx\ndEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4Q==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICgjCCAiegAwIBAgIIK+HdvXWkN9YwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDIxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNxdEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4aOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBQpm2iI+XG+uIq9XM2lqhKzZ5i5MDB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNJADBGAiEAvxNjK3WJhVQiCHwFKMfUClW0xa0ikhLAPaHirWYEgKMCIQDWDa7xu71vGhmTaIeKuMywD+f1yfPsaCzeEpr1yUITbA==", + "kid": "f6J92LRKpj0=" + }, + { + "issuer": "CN = IS DGC CSCA 1 serialName = 1 OU = Directorate of Health O = Directorate of Health C = IS", + "subject": "CN = IS-DSC-testrec-1 serialName = 2 OU = Directorate of Health O = Directorate of Health C = IS", + "notbefore": 1625249448000, + "notafter": 1688321448000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvwlwjQL5cId7nINp/A/b+XNY/Wzg\nX9sIOde8ggZmZjXvIYhDhz7Fvs52ozmdqatDp3yIwPpr6nAMmaNTj0KdZg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIBzTCCAXQCAnBLMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA3MDIxODEwNDhaFw0yMzA3MDIxODEwNDhaMHQxGTAXBgNVBAMMEElTLURTQy10ZXN0cmVjLTExCjAIBgNVBAUTATIxHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABL8JcI0C+XCHe5yDafwP2/lzWP1s4F/bCDnXvIIGZmY17yGIQ4c+xb7OdqM5namrQ6d8iMD6a+pwDJmjU49CnWYwCgYIKoZIzj0EAwIDRwAwRAIgGuvSzxkT7wtN8UW9b8VavzmUbfC1Ojl99ZLu6iNNxbgCIHvbmygVJAEC9/GJgitb+1wQx5fHp/SEcfnkqPOqzFrn", + "kid": "HeWuzGwEM5c=" + }, + { + "issuer": "CN = IS DGC CSCA 1 serialName = 1 OU = Directorate of Health O = Directorate of Health C = IS", + "subject": "CN = IS-DSC-1 serialName = 1 OU = Directorate of Health O = Directorate of Health C = IS", + "notbefore": 1623406705000, + "notafter": 1686478705000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEO42X7C2X5bSDTnfSJwnk4qAjSk2m\n11Cy/mmFqryl7J1MhrZDfy77ky4uS0o1iW181Ev51mAiW0J3i3SeKYeEOw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIBxTCCAWwCAgQRMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA2MTExMDE4MjVaFw0yMzA2MTExMDE4MjVaMGwxETAPBgNVBAMMCElTLURTQy0xMQowCAYDVQQFEwExMR4wHAYDVQQLDBVEaXJlY3RvcmF0ZSBvZiBIZWFsdGgxHjAcBgNVBAoMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDELMAkGA1UEBhMCSVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ7jZfsLZfltINOd9InCeTioCNKTabXULL+aYWqvKXsnUyGtkN/LvuTLi5LSjWJbXzUS/nWYCJbQneLdJ4ph4Q7MAoGCCqGSM49BAMCA0cAMEQCIFH/Cm+epgBJoz2S3eZaSPQLb2+3seJAEe2rgvrTcA4ZAiB6kXpC2VR9kqcv+HpDrbmx4Xq3PgTsQ5HxY1B5vepJ2g==", + "kid": "Pbydc1LscXo=" + }, + { + "issuer": "C = AT O = BMSGPK serialName = 001 CN = AT DGC CSCA 1", + "subject": "C = AT O = BMSGPK serialName = 001001 CN = AT DGC DSC 1", + "notbefore": 1622641524000, + "notafter": 1685713524000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYE24qIKmdcfRWUh2TqklkfZ6nyNB\npX4VHeLMxfFl8rkQ8Zku0bcnH5OZXckkSt+tKs+FGZ9tKJ1VtNDmedlL6w==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIB7zCCAZagAwIBAgIKAXnM+L47fmBcezAKBggqhkjOPQQDAjBEMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQwwCgYDVQQFEwMwMDExFjAUBgNVBAMMDUFUIERHQyBDU0NBIDEwHhcNMjEwNjAyMTM0NTI0WhcNMjMwNjAyMTM0NTI0WjBGMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQ8wDQYDVQQFEwYwMDEwMDExFTATBgNVBAMMDEFUIERHQyBEU0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGBNuKiCpnXH0VlIdk6pJZH2ep8jQaV+FR3izMXxZfK5EPGZLtG3Jx+TmV3JJErfrSrPhRmfbSidVbTQ5nnZS+ujbjBsMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUNs2smrjBhuR5Bqxl6teE1x1o2ycwHwYDVR0jBBgwFoAUHyKsHGUWKbTBmLNjb7/dCZ27e3swGgYDVR0QBBMwEYEPMjAyMTEyMTYxNDQ1MjRaMAoGCCqGSM49BAMCA0cAMEQCIDjXHnyzq3sTisMX1uY8xQ2ZqCRL2xmxtYOPhSZ9ZacYAiAqHUMOC7WNgq4h28n31WLc1mMPAYauWslSEwnXC79AGw==", + "kid": "Is2JtrOJhik=" + }, + { + "issuer": "C = LV O = VAS Latvijas Valsts radio un televīzijas centrs 2.5.4.97 = NTRLV-40003011203 CN = Digital Green Certificate CSCA", + "subject": "C = LV O = NTRLV-90009649337 CN = lv_dsc_003", + "notbefore": 1636018245000, + "notafter": 1699090245000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6aTLMp6+apBgDNYyDeBS+BranY97\nxhfHhRYV+/D6WsCBJ93WCnduv7YsSFj4NGf/xoJynxeckYR3+JhYBvdOyA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIE0TCCArmgAwIBAgIQMgfVJ9KIWgdhg6hFmVPWzDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTExMDQwOTMwNDVaFw0yMzExMDQwOTMwNDVaMD4xCzAJBgNVBAYTAkxWMRowGAYDVQQKDBFOVFJMVi05MDAwOTY0OTMzNzETMBEGA1UEAwwKbHZfZHNjXzAwMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOmkyzKevmqQYAzWMg3gUvga2p2Pe8YXx4UWFfvw+lrAgSfd1gp3br+2LEhY+DRn/8aCcp8XnJGEd/iYWAb3TsijggFEMIIBQDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMB0GA1UdDgQWBBSNXXFCsYbyQpaR9CVhus96/tOAejAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzIuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCFbvni9IiyVakliliz/jPuPfk3N2RETFV7cEGjRABugInh43DAPZz0siRPi2dmMy5B1b2T22QxFI7Od0qBkiPcGXKqwik1GU097mNWZ+5p8PuOVMN8E7nj5kX/vBJnmLw+XT1/taPMoz3cBVQ/7NTu1ycXVmJ1lWR8nPsBbqWRgnJbXFL1Q4Io+jngV2Y20o/OC+yvc0TsdofuM6dgDBEBunAU2kmiuexEtpyPVWgBuu5nz6mXOD1U10pXnxvDM5S6w+IDY04Nt3K4ONrlG/ghWUhTjrlYjpFMofqtK6CuKpGo8HQMpgQqb/bTTaAGeE3jEdoRVQxvQcsoUKEzM6cLf/XHz/MIoxlCfX0Rs+we93g/X4vjpXaoO0Dns57hEbRz53t3sE2Fty1rjY3qjGUd269vOtDIl2DooipUAnvSevUQQ3tRu7HeFGnc2ARrb82RG9lj2xwcce+JE5owTQYI2nSdnor1C2sQYhbMKNfbeLEwmoiWLUJyuhB95CPffwUffxQfF6EBbVEK9w6Rpu2I5Mo2qM9cwfJOYc9EIN4Bw8k3h7J3bNNFueVITL4WmVSjXnOaDFtt8PPF/H37exix0akaePpB4BGc5fpJN+OfIwPqEPU0ZDR+wFzwwHZrNF/aMD+j2myGGIuKcAkdt2rqzErGRznR6QClCNpJ3JF2Ew==", + "kid": "J8p9pf+5/9M=" + }, + { + "issuer": "C = LV O = VAS Latvijas Valsts radio un televīzijas centrs 2.5.4.97 = NTRLV-40003011203 CN = Digital Green Certificate CSCA", + "subject": "CN = LV DSC 002 O = Nacionālais veselības dienests C = LV", + "notbefore": 1624985695000, + "notafter": 1688057695000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5/m2YdN8L81Ajoi+2brFJbul628a\nlfXRXU26t7hRYEvvsb74tSVm2Dm9cbuhrgFJ+/wXecdxh0tTSHCkMfB0hQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIE4DCCAsigAwIBAgIQIVI8+7pCJKdg21Bf1/kMnDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA2MjkxNjU0NTVaFw0yMzA2MjkxNjU0NTVaME0xEzARBgNVBAMMCkxWIERTQyAwMDIxKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOf5tmHTfC/NQI6Ivtm6xSW7petvGpX10V1Nure4UWBL77G++LUlZtg5vXG7oa4BSfv8F3nHcYdLU0hwpDHwdIWjggFEMIIBQDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMB0GA1UdDgQWBBRJf+oSyT8lY9W8EXkcQkkbATciFzAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQA4+nXE7XWgwDhBUeldjoFgT1kRu6D5LzgFUsrTqicHFjGWXeXQKBnM9Dfx8iZBSY64O7FS/ompqIGxMFFZcBRYUgdaC9KQorL48w4b8WFCSQe0KUhDNqdlACWceq6/0tVtfek1M85bQ+ETU6InqY5sir7cZpyXFRXXXbdHqXjioC/EwfRo1/OB3wBX3/9HWcebIEskw4or2Z5p5BERPi2EQfp5cfv6BpH7tPYt0XJ7vA9WhsLLZGWPfKIU10iBF/DTGW5c2u/3yVCEbF215khpXx187kvXchIln4ZCbIiGkJrJRmnS6XZ++1c0BQpW4tdvUvxhuhqqln7GQPrOZK6HoOwFOjOC/k0oIkgYzJ+8xv7DA2PIXlOjSmkuZIqB4fr3DVKtnAVqWKKxnBMXqgyYlJenTUvp7OpUl+iYKqvSn7WX2F0wZQlYH+Gz1pGDdeyw4+cKZtUND6rFwHC9OxzeXM00wDp+G7O7IFBtwzaVrO/hRFGTG0W6vOv0Shc0lmVj++IzItVQx/SJRl9Lkfz58sQbRE8FphiUw4Wza3ad/eFafjDH3r0gtT/WA8aKUEp5j70kmb5XXIk9UMkk/T7385FRL3Q1ciqyoOVrRhL10wkEO+DDXuaqawXXtTz+3MDWX43TcE4wtQYDfw9i3tiDKkpzyRm43VvWoIDzGPDZ8g==", + "kid": "MrT00mhDxLQ=" + }, + { + "issuer": "C = LV O = VAS Latvijas Valsts radio un televīzijas centrs 2.5.4.97 = NTRLV-40003011203 CN = Digital Green Certificate CSCA", + "subject": "CN = LV DSC 001 O = Nacionālais veselības dienests C = LV", + "notbefore": 1622220600000, + "notafter": 1685292600000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPUwE7htr+kD1eVnJBfRf5tx0kA17\nqu4p1wRz3EKPxsJyyIznIqr9+HsnMd7k9ID/f0deqjP8dulzS2cFrVVnFQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIE4zCCAsugAwIBAgIQfBNf4Ug47/BgsR84n0s5NDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA1MjgxNjUwMDBaFw0yMzA1MjgxNjUwMDBaME0xEzARBgNVBAMMCkxWIERTQyAwMDExKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD1MBO4ba/pA9XlZyQX0X+bcdJANe6ruKdcEc9xCj8bCcsiM5yKq/fh7JzHe5PSA/39HXqoz/Hbpc0tnBa1VZxWjggFHMIIBQzAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRivdWHr9big4cJkaojQ5INsdnuNDAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCCMrABdfqTT+3ux1VQ5RdqsFgArimneuPxVHSSitIqZ3rPwkS0EsTl5fUm6m5ZqxZreu5ChfGMzC9+/Z4OQfafuvVp0i/T5eD+oiN46g33bdcbxhaBg0i7++xpbRGKM5Wh9LuEW4iUq/wIxJBEJdYFGyvF2eP95mFMadKxcs8+aKdHWEix9CUgJozMEKsAslG81xYlSzVtCmAT5qraC9uz/qGTj/bYfivtMCEdChp7BWp7MP4hD3UG2rW+wxHzD1gYLy7NqqRG3+qPfolNM0SqliZederytEYoszv2zLoUleVGPq33XavqLTfCgPhOqhxPsnH0NLcuJkgSeq5yxg8FWQaRdIR6+BlENzVQ6LYNamsuBRxNZPDurKXL58rt/8dZoeEIn+qO92mo8oVrD4xDOHvjJJIuOqZ2zcODbvV/wBhCXjrTDBiUSe9tpeagE5UKfLN/pyh3TGzMzVyo5Tn30ihqXEIX6IawpZfLJNslZnEbDFi1/2K8b00t78x7pNTSFKyXou8VaabQVPspvuWsoW9D0nyig1ymLcCrSFpnCpf/GEKONRYI6Zi+LYpWzjI81/DzVyC49Gh25ZX6Z0k6ThgDq1J4qmiGU3I1W+VcQ+fNtTsCz9fv2Kdi62U0oYqmt3FAc2Vnt30yoKqgnSfyD4xhZSafHxz2ml0jFS1xzg==", + "kid": "hFpY/ySOrwI=" + }, + { + "issuer": "C = BG O = Ministry of Health OU = Health Information System CN = Bulgaria DGC CSCA 1", + "subject": "C = BG L = Sofia O = Ministry of Health OU = Health Information System CN = DGC DSC 1", + "notbefore": 1622205711000, + "notafter": 1685277711000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmyxlsE2inBusapxY7LvRiPN0s+ds\nHnakaaa9M/5NDZZTljSZCzeK77fWO9MFRcGCXrTQaXNE3FhkV4+a92hRaw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICpDCCAkugAwIBAgIURXVV/Gq2Irn6g/NqhBUW+K90bQowCgYIKoZIzj0EAwIwbDELMAkGA1UEBhMCQkcxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDEiMCAGA1UECwwZSGVhbHRoIEluZm9ybWF0aW9uIFN5c3RlbTEcMBoGA1UEAwwTQnVsZ2FyaWEgREdDIENTQ0EgMTAeFw0yMTA1MjgxMjQxNTFaFw0yMzA1MjgxMjQxNTFaMHIxCzAJBgNVBAYTAkJHMQ4wDAYDVQQHDAVTb2ZpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMSIwIAYDVQQLDBlIZWFsdGggSW5mb3JtYXRpb24gU3lzdGVtMRIwEAYDVQQDDAlER0MgRFNDIDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASbLGWwTaKcG6xqnFjsu9GI83Sz52wedqRppr0z/k0NllOWNJkLN4rvt9Y70wVFwYJetNBpc0TcWGRXj5r3aFFro4HEMIHBMAwGA1UdEwEB/wQCMAAwLAYDVR0fBCUwIzAhoB+gHYYbaHR0cDovL2NybC5oaXMuYmcvY3NjYTEuY3JsMB8GA1UdIwQYMBaAFFeMHPlme+J4tvwi8r3u4ZCmP7FWMB0GA1UdDgQWBBS+Zk3uynTTHvB0Mb9eAgWF0vA6DDAOBgNVHQ8BAf8EBAMCB4AwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNHADBEAiBjSeBvjP2L5USPCkCAZggp/d4Mw/PUGt17jQdEet7f1AIgFI0GKAKWwdMW+xDfZmN4XAv27Z20ryj6kFY08jdIlo0=", + "kid": "Jjql9rBrjHI=" + }, + { + "issuer": "C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-CSCA-PROD-20210608 E = webmaster@llv.li", + "subject": "C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-DSC-TEST-PROD-20210608 E = webmaster@llv.li", + "notbefore": 1623138120000, + "notafter": 1686210120000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBnFUjr8FpfpVaVFtCUW7Yg6JBk/n\n1TlJKEKpm/rZOvAEzKpwoTCpXpXPP1SPGhvQXzJ+i4dBQHgbdw2SDpcZmQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIC8zCCApqgAwIBAgIIP9+ZLHC2FYQwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc0MjAwWhcNMjMwNjA4MDc0MjAwWjCBlDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEmMCQGA1UEAxMdREdDLU5CLURTQy1URVNULVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQGcVSOvwWl+lVpUW0JRbtiDokGT+fVOUkoQqmb+tk68ATMqnChMKlelc8/VI8aG9BfMn6Lh0FAeBt3DZIOlxmZo4HXMIHUMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFKdEjVLpS/bdKCMQdvpMviuko+rEMB8GA1UdIwQYMBaAFPSeeHwW3w57BFMM1pp4NCgcTd+FMA4GA1UdDwEB/wQEAwIHgDA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vY3JsLmxsdi5saS9ER0MtTkItQ1NDQS1QUk9ELTIwMjEwNjA4MB4GCWCGSAGG+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwFgYDVR0lBA8wDQYLKwYBBAGON49lAQEwCgYIKoZIzj0EAwIDRwAwRAIgTvGgYK3ij9bZvyKshoyDlYrQwXR7Btj0JIcpdq6NFqECIHd6ABGRr+NyKJjnlB7ZlYiJDfrERVPyF/q/Esmhv56P", + "kid": "JkFekJel6/o=" + }, + { + "issuer": "C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-CSCA-PROD-20210608 E = webmaster@llv.li", + "subject": "C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-DSC-RECOVERY-PROD-20210608 E = webmaster@llv.li", + "notbefore": 1623139020000, + "notafter": 1686211020000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9B\nnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiAw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIC+TCCAp6gAwIBAgIIEVh/vC3chgUwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NzAwWhcNMjMwNjA4MDc1NzAwWjCBmDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEqMCgGA1UEAxMhREdDLU5CLURTQy1SRUNPVkVSWS1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9BnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiA6OB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBT+nyG6/wNEQ0TEblj8ow7u2bNB4DAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQDqBN9eq6TjWFWqhOkU9hvdA5hBacvUjL0Rt3i5dbV8kwIhAKhpBMwxHfoFXS7FwiuXOyj4zxZ60pPvPbxYGawo9OZI", + "kid": "e/YRqyv++qY=" + }, + { + "issuer": "C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-CSCA-PROD-20210608 E = webmaster@llv.li", + "subject": "C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-DSC-VACCINATION-PROD-20210608 E = webmaster@llv.li", + "notbefore": 1623138840000, + "notafter": 1686210840000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30f\ntIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIC+jCCAqGgAwIBAgIIECN/LlZb7kkwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NDAwWhcNMjMwNjA4MDc1NDAwWjCBmzELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEtMCsGA1UEAxMkREdDLU5CLURTQy1WQUNDSU5BVElPTi1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30ftIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJKOB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQ3BvFcjsG6REaqwESNcZW1BjNTwDAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQECMAoGCCqGSM49BAMCA0cAMEQCIEEnfB5SgmatugluROBG4Q06cVdBulDo4S4vQJXO0lj2AiABMtLp5pBQA/cS9ksKlYkCuj/X2TTnM3yIPhngaEN/7A==", + "kid": "jYpr5GHCDiQ=" + }, + { + "issuer": "C = MK ST = North Macedonia L = Skopje O = Ministry of Health CN = zdravstvo.gov.mk E = contact@zdravstvo.gov.mk", + "subject": "C = MK ST = North Macedonia L = Skopje O = Ministry of Health, North Macedonia OU = E-Health, North Macedonia CN = zdravstvo.gov.mk E = contact@zdravstvo.gov.mk", + "notbefore": 1635409469000, + "notafter": 1666945469000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA65H+Vak/9kWmQXGYEZEu\nA2hSykjqYu72g//uaBs/Ac0JYV9Zhqwjb6iPf1tATe87vzg7sD5gGOqtabbOYMcV\nW50e3X5Ix4XxKMMoAvtkyDI/TbMK4HqiEY5FVf/JhPZEp4+nSVjwhozn0p7pKSk+\nWKYEjIG/zpceLyikArxxSt5SwYdVMmau+6kdHT4Q0m3btE5ORl+B0exu+KS3xb6W\nRsiU5E8kXyQFBS3zK6DxFqDDVyWhWVt4NfoJt76ZE3zuXPutyPs3AVscJDWB5mkn\n/yM8Fg20WAsZ0O9p3uyyK+MSwFdRmUzK7Gr6dnQhce4oh0HTAFsodFwnDsPCfJxc\nskoIYZW2xWX1W03jpngQWXgA1eJ44/4Ve0u09w5DpwNrgT3SoznZhZ3DPfH38NV3\nfxhm8KuVmNtmKms2ctExY8RftHXMFAQC4jDgutnaJz1zyC95QVkp06drreGLzX4X\nvPYZZdZhh4UYqT/IYXaX2yt09Tu+ueVm1MRlWeuEzlYYApbMceBseE7MuWdCVPwc\nx/QMjp7b4BSnRH+w4XIqs/wS8nXkMyBEdCMbCH3PFKNQOmbmA3Lq6X2eFWhgRud3\nFGyPacS5ADeV/s/aei+UJY/i9tY/NeXCYLtox4PXucUU4gbU9wV7rvLTNvwWIr5g\nga/gu18hrHe6Dag7p9wsU3ECAwEAAQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "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", + "kid": "KBPNEuXUvrY=" + }, + { + "issuer": "CN = CSCA Saude serialName = 001 O = Republica Portuguesa - Portuguese Republic C = PT", + "subject": "CN = DGC DS serialName = 001 O = Republica Portuguesa - Portuguese Republic C = PT", + "notbefore": 1621613831000, + "notafter": 1684685830000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnjK8A8ato900a+wQ1IaxJyaeUGQ5\nlwsYOCRlq47X4DKGe+P3L22utYcGTWtCekBqarcEzzSHH/X+s5aeEQgYYA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICKTCCAc6gAwIBAgIUb724peU13ddK2UiaXfZ8lJA3KpAwCgYIKoZIzj0EAwIwZTETMBEGA1UEAwwKQ1NDQSBTYXVkZTEMMAoGA1UEBRMDMDAxMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vlc2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMB4XDTIxMDUyMTE2MTcxMVoXDTIzMDUyMTE2MTcxMFowYTEPMA0GA1UEAwwGREdDIERTMQwwCgYDVQQFEwMwMDExMzAxBgNVBAoMKlJlcHVibGljYSBQb3J0dWd1ZXNhIC0gUG9ydHVndWVzZSBSZXB1YmxpYzELMAkGA1UEBhMCUFQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASeMrwDxq2j3TRr7BDUhrEnJp5QZDmXCxg4JGWrjtfgMoZ74/cvba61hwZNa0J6QGpqtwTPNIcf9f6zlp4RCBhgo2AwXjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFH4yvG+XLvlf69AVR2efiYzKIWgOMB0GA1UdDgQWBBQlYiuUojmAFDYjAmowakBbgeqeNTAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSQAwRgIhALe/oIGICdSXhdPOH7yFiPAUR/FhjdX+dsCyvU8Am4pLAiEA2HtA78ZO3jLs7BoIgh+xZ5fqaJbCIFMdwVzdJ/hCvWY=", + "kid": "KG9lzdohSY0=" + }, + { + "issuer": "C = DK O = The Danish Health Data Authority OU = The Danish Health Data Authority CN = PROD_CSCA_DGC_DK_01 E = kontakt@sundhedsdata.dk", + "subject": "C = DK O = The Danish Health Data Authority OU = The Danish Health Data Authority CN = PROD_DSC_DGC_DK_01 E = kontakt@sundhedsdata.dk", + "notbefore": 1621417645000, + "notafter": 1684576045000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBmdgY/VORsecXxY/0xNNOzoJNRaV\nnMMmHs5jiXrGvaDOy1jzDUOyvR++Jxgf0+YuGyp5/UAY0QIh75b+JQnlHA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICyzCCAnGgAwIBAgIBATAKBggqhkjOPQQDAjCBqTELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEcMBoGA1UEAwwTUFJPRF9DU0NBX0RHQ19ES18wMTEmMCQGCSqGSIb3DQEJARYXa29udGFrdEBzdW5kaGVkc2RhdGEuZGswHhcNMjEwNTE5MDk0NzI1WhcNMjMwNTIwMDk0NzI1WjCBqDELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEbMBkGA1UEAwwSUFJPRF9EU0NfREdDX0RLXzAxMSYwJAYJKoZIhvcNAQkBFhdrb250YWt0QHN1bmRoZWRzZGF0YS5kazBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAZnYGP1TkbHnF8WP9MTTTs6CTUWlZzDJh7OY4l6xr2gzstY8w1Dsr0fvicYH9PmLhsqef1AGNECIe+W/iUJ5RyjgYgwgYUwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBRXm2TEfVc2DPhwR/do67XrHDz4FzAfBgNVHSMEGDAWgBSb8DXRV1S8RJEI55z8etM+2ZXtSjAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMAoGCCqGSM49BAMCA0gAMEUCIB+IJn+8uICEfEnONXufysFrmtYBcTppGomj1Pr8WZF8AiEA0c3LZ3OShcmWfin0kwWzbf39irEMvJlF1idothpb0Eg=", + "kid": "NAyCKly+hCg=" + }, + { + "issuer": "C = BE O = eHealth - Belgium CN = Belgium Covid19 Country Signing CA 01", + "subject": "C = BE O = eHealth - Belgium CN = Belgium Covid19 DSC 01", + "notbefore": 1622110367000, + "notafter": 1685182367000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHo\nznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICLTCCAdOgAwIBAgIIXf7//TpWDVgwCgYIKoZIzj0EAwIwWTELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMS4wLAYDVQQDDCVCZWxnaXVtIENvdmlkMTkgQ291bnRyeSBTaWduaW5nIENBIDAxMB4XDTIxMDUyNzEwMTI0N1oXDTIzMDUyNzEwMTI0N1owSjELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMR8wHQYDVQQDDBZCZWxnaXVtIENvdmlkMTkgRFNDIDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHoznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyKOBkzCBkDAdBgNVHQ4EFgQUr/AjSs5HKJsXQVr617Z6OO2Z9h8wHwYDVR0jBBgwFoAUMc4oJrfby5Fk9eLZSMutpWhvX9UwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NlcnQtYXBwLmJlL3Jldm9rZWRMaXN0L2RnY19jc2NhMDEuY3JsMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiA56koPekERN3iWtlXwuD8rwBgbsTkZj2Yqe8kL2doIbwIhAKYOJyyIeR4Po523PY5rniN4jaaSkgefulusXXKiEthU", + "kid": "ODqaG8mnbro=" + }, + { + "issuer": "C = BE O = eHealth - Belgium CN = Belgium Covid19 Country Signing CA 01", + "subject": "C = BE O = eHealth - Belgium CN = Belgium Covid19 DSC 02", + "notbefore": 1637054072000, + "notafter": 1700126072000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEX79y3o+S4vY8UyqO1uzSAT6W7zUL\npaFWqe6MqPue8fVNOhQ1bwN/yKHKN64HkcJ+sGIpLtgaJb4iGr06NiAWfQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICLTCCAdOgAwIBAgIIG+DS62eZmPswCgYIKoZIzj0EAwIwWTELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMS4wLAYDVQQDDCVCZWxnaXVtIENvdmlkMTkgQ291bnRyeSBTaWduaW5nIENBIDAxMB4XDTIxMTExNjA5MTQzMloXDTIzMTExNjA5MTQzMlowSjELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMR8wHQYDVQQDDBZCZWxnaXVtIENvdmlkMTkgRFNDIDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEX79y3o+S4vY8UyqO1uzSAT6W7zULpaFWqe6MqPue8fVNOhQ1bwN/yKHKN64HkcJ+sGIpLtgaJb4iGr06NiAWfaOBkzCBkDAdBgNVHQ4EFgQUGQizN6eLdUb55YpiOuht4TeeiigwHwYDVR0jBBgwFoAUMc4oJrfby5Fk9eLZSMutpWhvX9UwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NlcnQtYXBwLmJlL3Jldm9rZWRMaXN0L2RnY19jc2NhMDEuY3JsMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBm+UkB5ZbZO7CqGiaA4J4Xj/LhFP61DZV9gY54U47S4gIhAPFP3U9ekHl9ecHOxL0oEZ0/4GdaIZ1E0wnBFvB98UPm", + "kid": "aCU0KJl+gMg=" + }, + { + "issuer": "C = IE ST = Dublin L = Dublin O = Department of Health OU = eHealth CN = CSCA_DGC_IE_01", + "subject": "C = IE O = Department of Health CN = validateqr.gov.ie 2020135457912391810539600999694555", + "notbefore": 1625650281000, + "notafter": 1687858281000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETPE5ItolrGzLQLPqYxOT+orVmYJu\nsLDsPWLwrK+bbJKBBtXBsrD2Py/osWYr9LF5ffORpzxmBUQmzp7K4uPiIw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICqjCCAlGgAwIBAgIJAIFaAnBKVQR5MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNzA3MDkzMTIxWhcNMjMwNjI3MDkzMTIxWjBrMQswCQYDVQQGEwJJRTEdMBsGA1UEChMURGVwYXJ0bWVudCBvZiBIZWFsdGgxPTA7BgNVBAMTNHZhbGlkYXRlcXIuZ292LmllIDIwMjAxMzU0NTc5MTIzOTE4MTA1Mzk2MDA5OTk2OTQ1NTUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARM8Tki2iWsbMtAs+pjE5P6itWZgm6wsOw9YvCsr5tskoEG1cGysPY/L+ixZiv0sXl985GnPGYFRCbOnsri4+Ijo4HQMIHNMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUT2vp7aj2JBxHrQ1vkpX4bZJoi10wHwYDVR0jBBgwFoAUXIe2JeQrVG0xki6dmWYLVblvTFAwSQYDVR0fBEIwQDA+oDygOoY4aHR0cHM6Ly9nZW4uZGlnaXRhbGNvdmlkY2VydGlmaWNhdGVzLmdvdi5pZS9hcGkvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCIAEEtN5Jh3HP0OTeYkyq0o4eaL0yGZnAbDhUUa0+StGTAiEA5trl/PUTtSwMNUSpc1UAA/viDLCW3FXyfx9cJaheFsQ=", + "kid": "PBpDVqnJ7Us=" + }, + { + "issuer": "C = IE ST = Dublin L = Dublin O = Department of Health OU = eHealth CN = CSCA_DGC_IE_01", + "subject": "C = IE ST = Dublin L = Dublin O = Department of Health OU = eHealth CN = DGC CSR", + "notbefore": 1625060335000, + "notafter": 1688132335000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZ\nwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8Q==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICmDCCAj+gAwIBAgIJAIFaAnBKVQR3MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNjMwMTMzODU1WhcNMjMwNjMwMTMzODU1WjByMQswCQYDVQQGEwJJRTEPMA0GA1UECAwGRHVibGluMQ8wDQYDVQQHDAZEdWJsaW4xHTAbBgNVBAoMFERlcGFydG1lbnQgb2YgSGVhbHRoMRAwDgYDVQQLDAdlSGVhbHRoMRAwDgYDVQQDDAdER0MgQ1NSMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8aOBtzCBtDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFBgOd1YgJce5VyyJvYhrUDZbtTrZMB8GA1UdIwQYMBaAFFyHtiXkK1RtMZIunZlmC1W5b0xQMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9jZXJ0Lmdvdi5pZS9DUkwvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCICD5ra8JbGVJCDS7k9BeY1D8SlL8dv8eVH8mMXKFJek4AiEA5j7KharjyLlp7GtXvJeS+Ht+0dgaaesqpMNfuPH7TmI=", + "kid": "eNNsg2jd4wA=" + }, + { + "issuer": "C = PA O = FIRMA ELECTRONICA CN = AUTORIDAD NACIONAL PARA LA INNOVACION GUBERNAMENTAL", + "subject": "C = PA ST = Panama L = Panama O = AIG OU = AIG CN = AIG", + "notbefore": 1631790882000, + "notafter": 1694862882000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6B5cdgxOlktZr67WAjgdIgoJwG5Z\nSTRBM6yEZb0y3rrlIHQi95rlKO6dFtQxo5rRPZYjvWSbaqVBgvbc0djcxw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDQDCCAiigAwIBAgIUNLMk961tL/NV8V23sWCKJoUwj4kwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UEBhMCUEExGjAYBgNVBAoMEUZJUk1BIEVMRUNUUk9OSUNBMTwwOgYDVQQDDDNBVVRPUklEQUQgTkFDSU9OQUwgUEFSQSBMQSBJTk5PVkFDSU9OIEdVQkVSTkFNRU5UQUwwHhcNMjEwOTE2MTExNDQyWhcNMjMwOTE2MTExNDQyWjBZMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMQ8wDQYDVQQHDAZQYW5hbWExDDAKBgNVBAoMA0FJRzEMMAoGA1UECwwDQUlHMQwwCgYDVQQDDANBSUcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAToHlx2DE6WS1mvrtYCOB0iCgnAbllJNEEzrIRlvTLeuuUgdCL3muUo7p0W1DGjmtE9liO9ZJtqpUGC9tzR2NzHo4G8MIG5MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUhd6zV7FXbysIfctxWIRFj/snGO8wHwYDVR0jBBgwFoAUjQVO+fAPdNAQMNdSugA4+rjnIVQwNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3d3dy5wa2kuZ29iLnBhL2NybHMvY2Fnb2IuY3JsMDAGA1UdJQQpMCcGCysGAQQBjjePZQEBBgsrBgEEAY43j2UBAgYLKwYBBAGON49lAQMwDQYJKoZIhvcNAQELBQADggEBAIJlTzhpBZn/hDvsviHRVpk7W+ICxubhJ7nEOjC6GLECQ22/dWmLo1U98BEv1nZKA1CF2/Uo2vdzryMILJ8tysDjs/7WOa8WH3oZ0f8FVj/vj/9H07xI2bJuQfX3O+SO5LvuMtZzyxBkIVdTn2B7PBsO9AzXPRn8m1W068VTema97toGiqqOn9Yhe6nhgjD4d+AGwmLlHSl/73n+oYzmmznf3JJTwf5Of1t2lH3P3crTyvfLZZHvf6ubQ7JzBcOgRXNgizksh6YNtyZhAjMhHgV6UfOe0ik14IE8xqWkf3k4aq8RS2oSdAeWMQ4rZbPaswKWBWRuNVywheR+xjSaO6o=", + "kid": "Ui7DXQikstE=" + }, + { + "issuer": "C = AM L = Yerevan O = Armed OU = DGCOperations CN = CSCA_DGC_AM_01", + "subject": "C = AM ST = Some-State L = Yerevan O = Armed CN = DSC_DGC_AM_O1", + "notbefore": 1633589669000, + "notafter": 1696661669000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGsoQ+d21h6C2haw4Ty4q/38Ux+t5\n1x9qe6EhVH30tsO5cxpvULTb+FFQbkcHcu0V9WbqIyIMaANSYH4ntN1H4A==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICRTCCAeqgAwIBAgIUfvIoqYr4oy/CWPFHPFoVgTgAPLUwCgYIKoZIzj0EAwIwYDELMAkGA1UEBhMCQU0xEDAOBgNVBAcMB1llcmV2YW4xDjAMBgNVBAoMBUFybWVkMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMRcwFQYDVQQDDA5DU0NBX0RHQ19BTV8wMTAeFw0yMTEwMDcwNjU0MjlaFw0yMzEwMDcwNjU0MjlaMFwxCzAJBgNVBAYTAkFNMRMwEQYDVQQIDApTb21lLVN0YXRlMRAwDgYDVQQHDAdZZXJldmFuMQ4wDAYDVQQKDAVBcm1lZDEWMBQGA1UEAwwNRFNDX0RHQ19BTV9PMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBrKEPndtYegtoWsOE8uKv9/FMfredcfanuhIVR99LbDuXMab1C02/hRUG5HB3LtFfVm6iMiDGgDUmB+J7TdR+CjgYUwgYIwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBRqxeKvv2wDiKAhCFTKOAz+UVyatDAfBgNVHSMEGDAWgBTTJV9hj0P3rLMweZAdJnUKadCwaDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCW6k0AfZPRXJBATVg9tHajdGcerq93YUnw3BJt++DM1QIhAMhUzyF6wEDAq+wJbTeI2mTc0+qVWbNTzchg870FSU29", + "kid": "W0NjksmJMm0=" + }, + { + "issuer": "C = RS L = Beograd 2.5.4.97 = VATRS-110177886 O = Kancelarija za informacione tehnologije i elektronsku upravu CN = RS NBCSCA", + "subject": "CN = RS PROD DSC2 O = Kancelarija za informacione tehnologije i elektronsku upravu C = RS", + "notbefore": 1636986858000, + "notafter": 1700058858000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtc0dmUPU8wLDfYTVnSXD\nxhCr4AHEG+GKSy13pMGI5Fj8IK1e9JVLrLoemtLnlaFV5WAPr6G8ialeG9TV9Xnw\nfiiWzAaxLT28u8/8MG4jihRKw5cVAPC0mizABynleAzU+dOYkNFlmwEpt6M6+VXl\n39aild/WVqMnZ0I/k/Vg0tQe5lS7aBPBtb7WJaaOYhzDx2hcv0z7IrYSBmigWgl3\njOO0TN+/1viQPtMbtbvC6gxXGDyQ8/HCwgt69HYNDHrBglFjLIvbelLuTsgoDooz\nIV+BUKIDal2vtAGvd1cDrN6YvqqiZRwqOn3gtv1oj/XmZUnl7aMtKisQ1MuqKVHm\ntQIDAQAB\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIFKjCCAxKgAwIBAgIUBsFy8hwKgnDAZGz/bi/+8NsJbrswDQYJKoZIhvcNAQELBQAwgZQxCzAJBgNVBAYTAlJTMRAwDgYDVQQHEwdCZW9ncmFkMRgwFgYDVQRhEw9WQVRSUy0xMTAxNzc4ODYxRTBDBgNVBAoTPEthbmNlbGFyaWphIHphIGluZm9ybWFjaW9uZSB0ZWhub2xvZ2lqZSBpIGVsZWt0cm9uc2t1IHVwcmF2dTESMBAGA1UEAxMJUlMgTkJDU0NBMB4XDTIxMTExNTE0MzQxOFoXDTIzMTExNTE0MzQxOFowazEVMBMGA1UEAwwMUlMgUFJPRCBEU0MyMUUwQwYDVQQKDDxLYW5jZWxhcmlqYSB6YSBpbmZvcm1hY2lvbmUgdGVobm9sb2dpamUgaSBlbGVrdHJvbnNrdSB1cHJhdnUxCzAJBgNVBAYTAlJTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtc0dmUPU8wLDfYTVnSXDxhCr4AHEG+GKSy13pMGI5Fj8IK1e9JVLrLoemtLnlaFV5WAPr6G8ialeG9TV9XnwfiiWzAaxLT28u8/8MG4jihRKw5cVAPC0mizABynleAzU+dOYkNFlmwEpt6M6+VXl39aild/WVqMnZ0I/k/Vg0tQe5lS7aBPBtb7WJaaOYhzDx2hcv0z7IrYSBmigWgl3jOO0TN+/1viQPtMbtbvC6gxXGDyQ8/HCwgt69HYNDHrBglFjLIvbelLuTsgoDoozIV+BUKIDal2vtAGvd1cDrN6YvqqiZRwqOn3gtv1oj/XmZUnl7aMtKisQ1MuqKVHmtQIDAQABo4GbMIGYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFPHhcSjAsmKP7ijI10VI7Lc8dDTIMDgGA1UdHwQxMC8wLaAroCmGJ2h0dHBzOi8vY2xvdWQuZWlkLmdvdi5ycy9jcmwvbmJjc2NhLmNybDAdBgNVHQ4EFgQU5/vY+2xxURwDV2bNEeYIFGMWSLgwDQYJKoZIhvcNAQELBQADggIBAHQexmp5RK8OA8j/SKhwUpiUTSvgQg/2/UgdQ2v5x4lzo8N9cQ6fS5VxY5YK3CpJBNEz8i5qRmzsD0UozOvEeLbcum3L4hCoOPXWhsPMcRkaEEwYn5kDP4Evz7iqmqviHL74BBxx3zZ9WVfoq8SCbkawywrw2Hwtoeuo3XKOWDK0jsesewcEHWv9MfEXhKjZtxlS0v1lkCF/5AvSEUPIYz4FasPeCoX31JIizErdZZLXiy5FGKxxBW6LP7GUAQkouKDeLZLsV/5247rNADICYkrOyd2jtZY37BY6UobYNH7flofqbwTbXfvfT+xD9cb5uyPTWD18lukcQirJahE64Fsa2ZE/E6+SiFDRsLTazEItW0bVAECA2gQd8Gg2FesBMMlJbQFTGxXdU4FQCP31/SlIc9DJjo8KIEfwr+khMRUaD91wq1Nwfmf3NuB4qv3nX6rQI9bAoCNs0/eU1A8LqJ4ugKf0LUHpfMTk585lhSyHKeXX823Uu5cPnk05Z1zDVJ72VrH57qETto+4gJ1DK2iLcgJHWkUQqwiWHygWzDsVvFIv26CRSItK2JpV2gZM8sTYFAoqquAlzyAkvumdvwpg4aUWMyWHZV0W9X71YGM1To8ZPU1v4dIOB7ESjGwEluD35arlYn9IjuvQBbnO++/Cr/STq2n9DS/mG2XDkVi/", + "kid": "YgBnrpZDGXk=" + }, + { + "issuer": "C = SE O = Swedish eHealth Agency OU = Digital Covid Certificate Services 2.5.4.97 = 202100-6552 CN = Swedish Digital Covid Certificate CSCA", + "subject": "C = SE O = Swedish eHealth Agency 2.5.4.97 = 202100-6552 CN = DCC Signer", + "notbefore": 1624255651000, + "notafter": 1687328851000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaLOo1IGTspZSdr2BqdAvKjZjHfW/\nZq8VDrI6nEhBlXUr3VCDlzjrXo5v6ix2qF9RCySJsHgZxUrqWQpFQbrbMw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDbzCCAtGgAwIBAgIRAKzjP3XRAzwsEbbfxdhLsK0wCgYIKoZIzj0EAwIwgaIxCzAJBgNVBAYTAlNFMR8wHQYDVQQKDBZTd2VkaXNoIGVIZWFsdGggQWdlbmN5MSswKQYDVQQLDCJEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIFNlcnZpY2VzMRQwEgYDVQRhDAsyMDIxMDAtNjU1MjEvMC0GA1UEAwwmU3dlZGlzaCBEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIENTQ0EwHhcNMjEwNjIxMDYwNzMxWhcNMjMwNjIxMDYyNzMxWjBZMQswCQYDVQQGEwJTRTEfMB0GA1UECgwWU3dlZGlzaCBlSGVhbHRoIEFnZW5jeTEUMBIGA1UEYQwLMjAyMTAwLTY1NTIxEzARBgNVBAMMCkRDQyBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARos6jUgZOyllJ2vYGp0C8qNmMd9b9mrxUOsjqcSEGVdSvdUIOXOOtejm/qLHaoX1ELJImweBnFSupZCkVButszo4IBLjCCASowCQYDVR0TBAIwADArBgNVHSMEJDAigCACTjrfhadUh3CvxKG9ilhNH5em/z3iqGdiDEqCy0uCujApBgNVHQ4EIgQgcumMkPVDerXtTa5yvY0Vp+vbcHWxuiqfF0N9MU0I6hEwDgYDVR0PAQH/BAQDAgOIMD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHBzOi8vZGdjZy5jb3ZpZGJldmlzLnNlL2NzY2EvY3JsL2NzY2EwMS5jcmwwRwYIKwYBBQUHAQEEOzA5MDcGCCsGAQUFBzABhitodHRwczovL2RnY2cuY292aWRiZXZpcy5zZS9jc2NhL29jc3AvY3NjYTAxMCsGA1UdEQQkMCKBIHJlZ2lzdHJhdG9yQGVoYWxzb215bmRpZ2hldGVuLnNlMAoGCCqGSM49BAMCA4GLADCBhwJCAJH08xci9Y2aQQcUJTnA+WIVSblO5K/ncVsYFd+jzM/m1chhh7CD75oN5twgWMl0aPMcjqaylNH/p82zPONaERqmAkEyCrbICfyUiio20CrFRmWS8KWq4LL8dkHapxgqVrG75/3xrmhAdxlH1WoC+Af1I602E6dsaCZw6mmMY0GPOEvGhw==", + "kid": "Z7k1XpIWZOE=" + }, + { + "issuer": "C = MA OU = Ministry of Health O = Kingdom of Morocco CN = CSCA Health MA", + "subject": "C = MA O = Kingdom of Morocco OU = Ministry of Health CN = DSC-MA", + "notbefore": 1631800460000, + "notafter": 1694872460000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvILEthEWN9hu06zQ9GCUCthQJ9OA\na/0eskYOKbfQZVEf9kNzPEH9qbVrwvr8jhwKL6CKoXAefNLlrBKZ+Mtpzg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDSzCCAvCgAwIBAgITNQAAAASf3f6XNUKvGAAAAAAABDAKBggqhkjOPQQDAjBgMQswCQYDVQQGEwJNQTEbMBkGA1UECxMSTWluaXN0cnkgb2YgSGVhbHRoMRswGQYDVQQKExJLaW5nZG9tIG9mIE1vcm9jY28xFzAVBgNVBAMTDkNTQ0EgSGVhbHRoIE1BMB4XDTIxMDkxNjEzNTQyMFoXDTIzMDkxNjEzNTQyMFowWDELMAkGA1UEBhMCTUExGzAZBgNVBAoTEktpbmdkb20gb2YgTW9yb2NjbzEbMBkGA1UECxMSTWluaXN0cnkgb2YgSGVhbHRoMQ8wDQYDVQQDEwZEU0MtTUEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS8gsS2ERY32G7TrND0YJQK2FAn04Br/R6yRg4pt9BlUR/2Q3M8Qf2ptWvC+vyOHAovoIqhcB580uWsEpn4y2nOo4IBjzCCAYswPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIgvu3EoKquCSH3YEMhdOqaoTo4wQVh/uOCoXE3wgCAWQCAQwwMQYDVR0lBCowKAYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGCisGAQQBgjcKAwwwDgYDVR0PAQH/BAQDAgbAMAwGA1UdEwEB/wQCMAAwPQYJKwYBBAGCNxUKBDAwLjAOBgwrBgEEAQCON49lAQEwDgYMKwYBBAEAjjePZQECMAwGCisGAQQBgjcKAwwwHQYDVR0OBBYEFKda1UHydNCDDid5anJrgzvYRipXMB8GA1UdIwQYMBaAFMKQ1XKb4BABLnDYaZMGbye1kxhEMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9OQk1vcm9jY28ubWEvQ1JMcy9NQS1IZWFsdGguY3JsMEEGCCsGAQUFBwEBBDUwMzAxBggrBgEFBQcwAYYlaHR0cDovL05CTW9yb2Njby5tYS9BSUEvTUEtSGVhbHRoLmNydDAKBggqhkjOPQQDAgNJADBGAiEAozqhzCknO/8+LbUU7EWGoKr9Xx9gx7u/jh4BHN3mt5kCIQDit7cWPpLSCWOr25AHpmdccHK6kGk0mOlAPVIGFnssdQ==", + "kid": "ZpnsokK1DgM=" + }, + { + "issuer": "C = IL 0.9.2342.19200300.100.1.25 = IL 0.9.2342.19200300.100.1.25 = GOV 0.9.2342.19200300.100.1.25 = HEALTH 0.9.2342.19200300.100.1.25 = MOH ST = Israel L = Jerusalem O = Ministry of Health OU = Digital Health CN = CSCA-Health-DCG-IL-01", + "subject": "C = IL ST = Israel L = Jerusalem O = Ministry of Health OU = Digital Health CN = IL-NB-DSC-01", + "notbefore": 1630826160000, + "notafter": 1693898160000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcw+UZUnryP4rqSw+a8xQw4wLHZkc\nu4MDjJP7QeBUEpDt8xh4i4RSIBEJrBkAukSSobRDkwMb0dSCsWwK0rfMgQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEGDCCA76gAwIBAgITHQAAAAdFhwvAgMs01AAAAAAABzAKBggqhkjOPQQDAjCB3jELMAkGA1UEBhMCSUwxEjAQBgoJkiaJk/IsZAEZFgJJTDETMBEGCgmSJomT8ixkARkWA0dPVjEWMBQGCgmSJomT8ixkARkWBkhFQUxUSDETMBEGCgmSJomT8ixkARkWA01PSDEPMA0GA1UECBMGSXNyYWVsMRIwEAYDVQQHEwlKZXJ1c2FsZW0xGzAZBgNVBAoTEk1pbmlzdHJ5IG9mIEhlYWx0aDEXMBUGA1UECxMORGlnaXRhbCBIZWFsdGgxHjAcBgNVBAMTFUNTQ0EtSGVhbHRoLURDRy1JTC0wMTAeFw0yMTA5MDUwNzE2MDBaFw0yMzA5MDUwNzE2MDBaMH8xCzAJBgNVBAYTAklMMQ8wDQYDVQQIEwZJc3JhZWwxEjAQBgNVBAcTCUplcnVzYWxlbTEbMBkGA1UEChMSTWluaXN0cnkgb2YgSGVhbHRoMRcwFQYDVQQLEw5EaWdpdGFsIEhlYWx0aDEVMBMGA1UEAxMMSUwtTkItRFNDLTAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcw+UZUnryP4rqSw+a8xQw4wLHZkcu4MDjJP7QeBUEpDt8xh4i4RSIBEJrBkAukSSobRDkwMb0dSCsWwK0rfMgaOCAbcwggGzMD4GCSsGAQQBgjcVBwQxMC8GJysGAQQBgjcVCIHfvEqGsP5shImdOoHa71aE5rZjgR6HqL9hhrfIGwIBZAIBATA6BgNVHSUEMzAxBggrBgEFBQcDAwYLKwYBBAGON49lAQMGCysGAQQBjjePZQEBBgsrBgEEAY43j2UBAjAOBgNVHQ8BAf8EBAMCB4AwSAYJKwYBBAGCNxUKBDswOTAKBggrBgEFBQcDAzANBgsrBgEEAY43j2UBAzANBgsrBgEEAY43j2UBATANBgsrBgEEAY43j2UBAjAdBgNVHQ4EFgQUwT5hHIGSYoKxJeYKXe2rSc9vQCQwHwYDVR0jBBgwFoAUBb9drdvo+jTMbWZX2BWGWxPT3uwwRwYDVR0fBEAwPjA8oDqgOIY2aHR0cDovL2NkcC5oZWFsdGguZ292LmlsL2NybC9DU0NBLUhlYWx0aC1EQ0ctSUwtMDEuY3JsMFIGCCsGAQUFBwEBBEYwRDBCBggrBgEFBQcwAoY2aHR0cDovL3BraS5oZWFsdGguZ292LmlsL3BraS9DU0NBLUhlYWx0aC1EQ0ctSUwtMDEuY3J0MAoGCCqGSM49BAMCA0gAMEUCIQCWjjvyGozH4GMhl6d81s5PolAOAXXipAvnnP6RiLGt4QIgabSTGYvdNpepTEdQ7+F8KMdiBZStUJ1utwJqVN1Ov/M=", + "kid": "cS/wou0g/po=" + }, + { + "issuer": "C = VA O = STATO CITTA’ DEL VATICANO OU = DIREZIONE DI SANITA' E IGIENE CN = CSCA_DGC_VA_01", + "subject": "C = VA O = STATO CITTA’ DEL VATICANO OU = DIREZIONE DI SANITA' E IGIENE CN = DSC_DGC_VA_01", + "notbefore": 1624614420000, + "notafter": 1687686420000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEI6Q/krjPDaHJ2WsrBzR9sGYnYjFq\nkflAAWhJgXbXt3RuUVfJt4c53N6v9J2BE3kPqCVl9FbYrwqQ0vZ+Ps5e+Q==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICbzCCAhSgAwIBAgIIc/6LARpWk7YwCgYIKoZIzj0EAwIwdDELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFzAVBgNVBAMMDkNTQ0FfREdDX1ZBXzAxMB4XDTIxMDYyNTA5NDcwMFoXDTIzMDYyNTA5NDcwMFowczELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFjAUBgNVBAMMDURTQ19ER0NfVkFfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQjpD+SuM8NocnZaysHNH2wZidiMWqR+UABaEmBdte3dG5RV8m3hznc3q/0nYETeQ+oJWX0VtivCpDS9n4+zl75o4GQMIGNMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFHjsdxdRG2UcVpJ5tq07/6TxOa+jMB8GA1UdIwQYMBaAFL2EdVekv64Aod98sSbpzAqLftAtMAsGA1UdDwQEAwIDuDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCedrxueUJyy8gthgOF7b2Fdv+chSkliDs1z2oOuRagWQIhAJh4vf8YxtkfC3MB+B9y1x2OwC2GRGFCtaF5WaB7K6F5", + "kid": "crm1HLAeaTo=" + }, + { + "issuer": "C = CZ O = MZCR CN = CZ DSC CSCA 1", + "subject": "C = CZ O = MZCR CN = CZ DSC 1", + "notbefore": 1620311040000, + "notafter": 1683383040000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3l\nAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKUw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0AzMA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDUwNjE0MjQwMFoXDTIzMDUwNjE0MjQwMFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3lAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKU6NdMFswHQYDVR0OBBYEFDReRuL4VneLcO8YqdVWn2+gpPl9MB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQAZpv8/b4k+QxliHeWKAiJ34OKMEYh8xn1Dc9+55f+h0NLY4ZSelGrf2SrJIt9yhomzjOQUARqiumbuSzZMMPUNzKIRsPSa1NkfRq7y3QehG+cuhKKdLYpWErjRdp97gubCVGLXld7+iuschYCwAztKnyPof94yPgAGkdCEnTNW1z6tc33E/Fnd59nF8/JBZdSTt2uRXxFY8plasmoRzdXYASwTUyXXheZcG+KNYJ5NxYSF3LJeF81ucJ6mWkAk+MwoJXVu7VVZ6pn51JPL+YyArV2FaN8lWs9QYW2XgCuUTm4IC9T/BgVKTstr6eGQiHLOEbyE8NmLond1Bzv27ClLXEBvL9lIqJ5hJFvVWbfpNPvJAjI4z3LA7DuYgQ3ws8mf0iMW+4aOkLCd7dv0HNcUPoHUOTelgcfAzEsZuajUcH3uGwgcs2wEBdW1KfqEP8L7bgwBGC+UGe1yeGM4k7OYOnGP2SMm3Gk+MrYaqW51Fun20bcXkagDxMJh06PpDm4=", + "kid": "e4lH6I4iMIM=" + }, + { + "issuer": "C = CZ O = MZCR CN = CZ DSC CSCA 1", + "subject": "C = CZ O = MZCR CN = CZ DSC 2", + "notbefore": 1623319578000, + "notafter": 1686391578000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2k\nYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0A0MA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDYxMDEwMDYxOFoXDTIzMDYxMDEwMDYxOFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2kYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOqNdMFswHQYDVR0OBBYEFAKjMTdShDzGev/eNqlHHzJIHdXVMB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQA3d3iNHRpsKWia1XiF5QQlKUFwcvDdtAlFhfmy99oI+ywmppys7xoeOrIKazIyAyZ3tNImPkcde0ARSvMmAzsr6T/BqxsV78htXzUoILy1z6Y8QZ8+RXcNmR79k9iqudKv5tWZ2S2ticNeo78WV6oB18oV5/hhLlkS/NQC5wZ5LJar+wEF1VaxkvG2GmooaODPgPbRutjStTamSu2Din4SRg8pIWlyCMy0qnzVDMzdYUsjvmC3myxzHevFSTs36hj1aiLxaeAmVTvCi39o6s0EBjyM8Yk2WHJS9k5EkvBcJcEx4z55RkBLKo4PJalQS1hJc62GFM3J3lyyKqecSZBn2xj5bM8UEkI+8ylHsF/D3vrjtu1MaxM9loTogvf8wu4S7DMP/yXBanmr2G4k132JbSX7goclMF2zel7kGAn2B2vUQrGM76Rqb4lkddPWCc+0dossH1zAvbOAo5+raC9xaUU00GC3wR7+30xjJtBw0JbDlSBk3l1xnGnvLehkqV8=", + "kid": "fNf883wPIEg=" + }, + { + "issuer": "CN = Faroe Islands Health Authority CSCA v1 O = Gjaldstovan C = FO", + "subject": "CN = DSC_DGC_FO_345334_TEST_01 O = SJUKRAHUSVERKID C = FO", + "notbefore": 1625755197000, + "notafter": 1688827197000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyOmUr7E52s+yofKQE/TmtLQxLPEp\nZnZMA/OL647R1ZZG+O3tA7F3CfMXmgZZV4OOjuoaAbgHh01F5MdEg1eQpg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICwTCCAmegAwIBAgIUNEcJXMYBcHdOAkMYq/Oxeh8O2hwwCgYIKoZIzj0EAwIwVDEvMC0GA1UEAwwmRmFyb2UgSXNsYW5kcyBIZWFsdGggQXV0aG9yaXR5IENTQ0EgdjExFDASBgNVBAoMC0dqYWxkc3RvdmFuMQswCQYDVQQGEwJGTzAeFw0yMTA3MDgxNDM5NTdaFw0yMzA3MDgxNDM5NTdaMEsxIjAgBgNVBAMMGURTQ19ER0NfRk9fMzQ1MzM0X1RFU1RfMDExGDAWBgNVBAoMD1NKVUtSQUhVU1ZFUktJRDELMAkGA1UEBhMCRk8wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATI6ZSvsTnaz7Kh8pAT9Oa0tDEs8SlmdkwD84vrjtHVlkb47e0DsXcJ8xeaBllXg46O6hoBuAeHTUXkx0SDV5Cmo4IBHjCCARowHwYDVR0jBBgwFoAU7jyBpuYetlF0RODQ9DAz4upqvqEwXAYDVR0gBFUwUzBRBggqgVCBPQIBATBFMEMGCCsGAQUFBwIBFjdodHRwczovL3JlcG9zaXRvcnkuc2FtbGVpa2kuZm8vbGVnYWwtcmVwb3NpdG9yeS9laGVhbHRoMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwuc2FtbGVpa2kuZm8vRmFyb2UtSXNsYW5kcy1IZWFsdGgtQXV0aG9yaXR5LUNTQ0EtdjEuY3JsMB0GA1UdDgQWBBRoTJ4+NjLdr8NB6IGKfB1XhMs0kjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAIFSB54lOmRGpWORORdkNMCupU6c+ujY64AOdb3Sp9rNAiAXlZatIjO4ENXA4H+WJEa4ZUHRAxKFEh//IXBloU0V3w==", + "kid": "fNstNUxgGSI=" + }, + { + "issuer": "CN = Faroe Islands Health Authority CSCA v1 O = Gjaldstovan C = FO", + "subject": "CN = DSC_DGC_FO_345334_VACCINATION_01 O = SJUKRAHUSVERKID C = FO", + "notbefore": 1625755531000, + "notafter": 1688827531000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIp1kjKkjq85G7p7edy5EfNsWF0l4\nXZu5Rz+nL3viEVP/qiZYWwsQ30RXMDwixcFXI2tSzfu82J31dIEGQ3Ceog==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICyTCCAm6gAwIBAgIUJUU4n5bintk3G2D7kThvmJ+NHlwwCgYIKoZIzj0EAwIwVDEvMC0GA1UEAwwmRmFyb2UgSXNsYW5kcyBIZWFsdGggQXV0aG9yaXR5IENTQ0EgdjExFDASBgNVBAoMC0dqYWxkc3RvdmFuMQswCQYDVQQGEwJGTzAeFw0yMTA3MDgxNDQ1MzFaFw0yMzA3MDgxNDQ1MzFaMFIxKTAnBgNVBAMMIERTQ19ER0NfRk9fMzQ1MzM0X1ZBQ0NJTkFUSU9OXzAxMRgwFgYDVQQKDA9TSlVLUkFIVVNWRVJLSUQxCzAJBgNVBAYTAkZPMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIp1kjKkjq85G7p7edy5EfNsWF0l4XZu5Rz+nL3viEVP/qiZYWwsQ30RXMDwixcFXI2tSzfu82J31dIEGQ3CeoqOCAR4wggEaMB8GA1UdIwQYMBaAFO48gabmHrZRdETg0PQwM+Lqar6hMFwGA1UdIARVMFMwUQYIKoFQgT0CAQEwRTBDBggrBgEFBQcCARY3aHR0cHM6Ly9yZXBvc2l0b3J5LnNhbWxlaWtpLmZvL2xlZ2FsLXJlcG9zaXRvcnkvZWhlYWx0aDAWBgNVHSUEDzANBgsrBgEEAY43j2UBAjBSBgNVHR8ESzBJMEegRaBDhkFodHRwOi8vY3JsLnNhbWxlaWtpLmZvL0Zhcm9lLUlzbGFuZHMtSGVhbHRoLUF1dGhvcml0eS1DU0NBLXYxLmNybDAdBgNVHQ4EFgQU784333ONVF7EvtIgnj6nYCOli8QwDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0kAMEYCIQDOLxwWGsaCNVSWy3EpEkSIqNub0Ci4kSOu/O+vvPq64gIhAK5cop6G89f+Z39b52KoyZKcFq3zLCNOdgPg1280oBnN", + "kid": "l8W4rhh9nTs=" + }, + { + "issuer": "C = TR ST = ANKARA L = ÇANKAYA O = T.C. SAĞLIK BAKANLIĞI OU = SAĞLIK BİLGİ SİSTEMLERİ GENEL MÜDÜRLÜĞÜ CN = healthpassgwprod.saglik.gov.tr", + "subject": "C = TR ST = ANKARA L = ÇANKAYA O = T.C. SAĞLIK BAKANLIĞI OU = SAĞLIK BİLGİ SİSTEMLERİ GENEL MÜDÜRLÜĞÜ CN = healthpassgwuat.saglik.gov.tr", + "notbefore": 1628103725000, + "notafter": 1691175725000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4gGExz9UXm77v21gaWNSjjtigr9V\nIyGL9S92FqnF99YqS/ekrLWvW4N6fmHfUST9VJLJVaB9uP3SX1rXlfq7lg==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDZDCCAwqgAwIBAgIJAKh1+Khc/oXwMAkGByqGSM49BAEwgdIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQIDAZBTktBUkExEzARBgNVBAcMCsODwodBTktBWUExJDAiBgNVBAoMG1QuQy4gU0HDhMKeTElLIEJBS0FOTEnDhMKeSTFOMEwGA1UECwxFU0HDhMKeTElLIELDhMKwTEfDhMKwIFPDhMKwU1RFTUxFUsOEwrAgR0VORUwgTcODwpxEw4PCnFJMw4PCnMOEwp7Dg8KcMScwJQYDVQQDDB5oZWFsdGhwYXNzZ3dwcm9kLnNhZ2xpay5nb3YudHIwHhcNMjEwODA0MTkwMjA1WhcNMjMwODA0MTkwMjA1WjCB0TELMAkGA1UEBhMCVFIxDzANBgNVBAgMBkFOS0FSQTETMBEGA1UEBwwKw4PCh0FOS0FZQTEkMCIGA1UECgwbVC5DLiBTQcOEwp5MSUsgQkFLQU5MScOEwp5JMU4wTAYDVQQLDEVTQcOEwp5MSUsgQsOEwrBMR8OEwrAgU8OEwrBTVEVNTEVSw4TCsCBHRU5FTCBNw4PCnETDg8KcUkzDg8Kcw4TCnsODwpwxJjAkBgNVBAMMHWhlYWx0aHBhc3Nnd3VhdC5zYWdsaWsuZ292LnRyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4gGExz9UXm77v21gaWNSjjtigr9VIyGL9S92FqnF99YqS/ekrLWvW4N6fmHfUST9VJLJVaB9uP3SX1rXlfq7lqOByDCBxTAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFCswn+ChTJKoWppyEWvYjIGyDJybMB8GA1UdIwQYMBaAFPbenUPEZ1KYGCZLyK4/nzCJVz+bMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9jcmwuZXhhbXBsZWRvbWFpbi5leGFtcGxlL0NSTC9DU0NBLmNybDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMAkGByqGSM49BAEDSQAwRgIhAMdvZvXW4yhE0096flq4umtUExjaOSOM6bob8cMsriqbAiEAv5b1d/EFA0rM9LYK1jt49+bSOgGxcxgs0jAOYzAjMrU=", + "kid": "gEIK4Q/lAG0=" + }, + { + "issuer": "C = RO O = Ministerul Sanatatii CN = AC Ministerul Sanatatii", + "subject": "C = RO O = Ministerul Sanatatii CN = BSC", + "notbefore": 1624023359000, + "notafter": 1782135359000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1Di\nHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5cw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIElDCCAnygAwIBAgIFFhg4IyAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCUk8xHTAbBgNVBAoMFE1pbmlzdGVydWwgU2FuYXRhdGlpMSAwHgYDVQQDDBdBQyBNaW5pc3RlcnVsIFNhbmF0YXRpaTAeFw0yMTA2MTgxMzM1NTlaFw0yNjA2MjIxMzM1NTlaMDoxCzAJBgNVBAYTAlJPMR0wGwYDVQQKDBRNaW5pc3RlcnVsIFNhbmF0YXRpaTEMMAoGA1UEAwwDQlNDMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1DiHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5c6OCAVYwggFSMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUVyznYDPTSIjlI6bI6W+mgQc9JjwwHwYDVR0jBBgwFoAUMuKQDubF6PpGuKuAPWshl3a4SCEwGgYDVR0RBBMwEaQPMA0xCzAJBgNVBAcMAlJPMBoGA1UdEgQTMBGkDzANMQswCQYDVQQHDAJSTzAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vY2Euc3RzaXNwLnJvL2NybC9ER0MuY3JsMDMGA1UdJQQsMCoGDCsGAQQBAI43j2UBAQYMKwYBBAEAjjePZQECBgwrBgEEAQCON49lAQMwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vY2Euc3RzaXNwLnJvOjI1NjAwKwYDVR0QBCQwIoAPMjAyMTA0MDEwMDAwMDBagQ8yMDI2MDcwMTAwMDAwMFowDQYJKoZIhvcNAQELBQADggIBAFLRYkrv2Jp8XNhFJbMUviTLgPsDgcFDQwzdU4RH/KY3vjlIqxI/o40wct9QrN5FqRDTVIYD4Z4vLy8vhigh+DrdWfaBK+SGw11ZwigDem0Unjpqz0aFTotv8hry5n2jY/gf6YpU8pMd3t0dNF5Je5hrY1YLPJdt+BMWAizRwSAaa/OqTDP2blNqebrUTpsiXnxMXRiIHZl596RiSVsiwI/4PhU/HhfbMCg4kO8YUtgTBzWvBGohG0Znyi2bQFhwWEa1jZc2YfsIqWu4hwGz0zWOKMyx5ULZS3qkQ0EIHH2XrOx2ZxEc/5vZT27nTlKW0FCtBWeB36rLy/9dYbm+wjB86gvjYEQLAoFSY5GyCxVHaQE/HK8nFqM0oFq/4u0D7ZN9o6N6i4EfGhSRye0NCld3iaM9JdKmQNoCE9fd9OfMG9HlrQbIZvsjZ3btvtiC/R/LoyvrKz2EVbePZIVj03+GelCI0/jWq+w9YK3JIGhBfMjvCK/QnphOm0otuiuEY+0QYPKIx/c8zU5H4cEWp4NamsIRTpP13Yazh4NVjCNAU+J1rbcwGkJIRXHpL6QqL1WNt9zZSMXvw+vBoBq8yBqeLGlxPr+DFL79xhRBZnpp5mn2vUmR77k1745VwwGVMw/t9K28y5HpLcTp49f3wR0bDC+K0n/8PdcrhOXh+DTP", + "kid": "hA1+pwEOxCI=" + }, + { + "issuer": "C = AL O = NAIS CN = NAIS Class 3 Certification Authority", + "subject": "C = AL O = Ministria e Shendetesise dhe Mbrojtjes Sociale OU = Production CN = Ministria e Shendetesise dhe Mbrojtjes Sociale", + "notbefore": 1631192067000, + "notafter": 1662728067000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENFtonAma5ngnltfk78rprtlz8Cue\n6/t2XzvM/OR3wOn/1nD4QDWTP0KjGsFtiJ80Aed5gQ0JbMXUL8M2mQyQPw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIETzCCAzegAwIBAgILQ/9i89Nx5cy6y84wDQYJKoZIhvcNAQELBQAwSzELMAkGA1UEBhMCQUwxDTALBgNVBAoTBE5BSVMxLTArBgNVBAMTJE5BSVMgQ2xhc3MgMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0yMTA5MDkxMjU0MjdaFw0yMjA5MDkxMjU0MjdaMIGUMQswCQYDVQQGEwJBTDE3MDUGA1UECgwuTWluaXN0cmlhIGUgU2hlbmRldGVzaXNlIGRoZSBNYnJvanRqZXMgU29jaWFsZTETMBEGA1UECwwKUHJvZHVjdGlvbjE3MDUGA1UEAwwuTWluaXN0cmlhIGUgU2hlbmRldGVzaXNlIGRoZSBNYnJvanRqZXMgU29jaWFsZTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDRbaJwJmuZ4J5bX5O/K6a7Zc/Arnuv7dl87zPzkd8Dp/9Zw+EA1kz9CoxrBbYifNAHneYENCWzF1C/DNpkMkD+jggGzMIIBrzBmBggrBgEFBQcBAQRaMFgwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmFrc2hpLmdvdi5hbDAwBggrBgEFBQcwAoYkaHR0cDovL2NlcnRzLmFrc2hpLmdvdi5hbC9jbGFzczMuY3J0MA4GA1UdDwEB/wQEAwIGwDAfBgNVHSMEGDAWgBSHJqj72ytRmznQmNb0xjNWR1zYBTAdBgNVHQ4EFgQUomIXCcGEr8gLcxPBp8qNqsAwuywwSwYDVR0gBEQwQjBABgwrBgEEAYKxbAoBAQMwMDAuBggrBgEFBQcCARYiaHR0cDovL3d3dy5ha3NoaS5nb3YuYWwvcmVwb3NpdG9yeTCBpwYDVR0fBIGfMIGcMIGZoIGWoIGThiJodHRwOi8vY3JsLmFrc2hpLmdvdi5hbC9jbGFzczMuY3Jshm1sZGFwOi8vbGRhcC5ha3NoaS5nb3YuYWwvQ049TkFJUyBDbGFzcyAzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5LE89TkFJUyxDPUFMP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q7YmluYXJ5MA0GCSqGSIb3DQEBCwUAA4IBAQAxX1oVSlIui82fALGFk0YQK5UOFN59Bk+dNovoYLH7rewnK3Zu1C8xJivs/ncsvb08J/B14Iw2DlIORCNMmfXaCIEeRwUepPrC0T9gBMFZGf+nOH1YR19YA+24gxSxlsU6t8/lCwMY2HfCUxEKvHqr1jp3lgim8y+IiMsA9ISr7J8YDwue6Zvpr1zPQN+nd4xB1ZuxoM64dCvzaV5mA/D3P7Rqf5c1+rt5EqztjVOiNpFvH+xSEp9veAJxRDG37kHe7brgb7CGLdBQw/pib8kgfDusUMIjuXDN4MzjVUtM3G6s6DfoJ/QIf5CGq2lJ9bdxORh9PICVxVxcUqpwD+r2", + "kid": "hHffSLS1AIU=" + }, + { + "issuer": "C = AL O = NAIS CN = NAIS Class 3 Certification Authority", + "subject": "C = AL O = Ministria e Shendetesise dhe Mbrojtjes Sociale OU = Production CN = Ministria e Shendetesise dhe Mbrojtjes Sociale", + "notbefore": 1634731214000, + "notafter": 1666267214000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkyi6sf8k8/kk2KjTBNiIVFpnIeZc\nj4oUXwV8kk5D6BySdIUx9jSD5BuSiUyXKmIghKHPvpio9M7nYklZCdur0w==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIEUDCCAzigAwIBAgIMQwFSlIJziU/M83ZyMA0GCSqGSIb3DQEBCwUAMEsxCzAJBgNVBAYTAkFMMQ0wCwYDVQQKEwROQUlTMS0wKwYDVQQDEyROQUlTIENsYXNzIDMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjExMDIwMTIwMDE0WhcNMjIxMDIwMTIwMDE0WjCBlDELMAkGA1UEBhMCQUwxNzA1BgNVBAoMLk1pbmlzdHJpYSBlIFNoZW5kZXRlc2lzZSBkaGUgTWJyb2p0amVzIFNvY2lhbGUxEzARBgNVBAsMClByb2R1Y3Rpb24xNzA1BgNVBAMMLk1pbmlzdHJpYSBlIFNoZW5kZXRlc2lzZSBkaGUgTWJyb2p0amVzIFNvY2lhbGUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASTKLqx/yTz+STYqNME2IhUWmch5lyPihRfBXySTkPoHJJ0hTH2NIPkG5KJTJcqYiCEoc++mKj0zudiSVkJ26vTo4IBszCCAa8wZgYIKwYBBQUHAQEEWjBYMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5ha3NoaS5nb3YuYWwwMAYIKwYBBQUHMAKGJGh0dHA6Ly9jZXJ0cy5ha3NoaS5nb3YuYWwvY2xhc3MzLmNydDAOBgNVHQ8BAf8EBAMCBsAwHwYDVR0jBBgwFoAUhyao+9srUZs50JjW9MYzVkdc2AUwHQYDVR0OBBYEFGPWnU1pbP9aLGlfxoOY//lobEDxMEsGA1UdIAREMEIwQAYMKwYBBAGCsWwKAQEDMDAwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuYWtzaGkuZ292LmFsL3JlcG9zaXRvcnkwgacGA1UdHwSBnzCBnDCBmaCBlqCBk4YiaHR0cDovL2NybC5ha3NoaS5nb3YuYWwvY2xhc3MzLmNybIZtbGRhcDovL2xkYXAuYWtzaGkuZ292LmFsL0NOPU5BSVMgQ2xhc3MgMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSxPPU5BSVMsQz1BTD9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0O2JpbmFyeTANBgkqhkiG9w0BAQsFAAOCAQEApvfjN0ZeYCl6OH8HmJSG4UcL8KrVB1uqa/b0OPBihreOzVN0MyCRCKqUY+JJBc2S1k8OssCZuconsPLdTW2UkDxP5oFrgnzBN4Tor+3EMq2d/TTQnhp+872m2B4Gck0bRMBn0N19MbIrdii5joNir9pcHJgU5I/fTTehL9wtZGoL1o5cUUu9S+hYMIP0uNHP6NjxQhwZ+lpleNCUsYT4o4icvnbW3EaB84KBImCfezIu3Q+MdgwWmGpZOXUVoiX9UiyWrlEnzNzictXgOSud5xJ8E9ZUezO8u1UMRKY82Xi15KM6FML2qJ6teTC8iMjXaDxhVZSDAvtXclLKqIvAzg==", + "kid": "udrotE0n7i0=" + }, + { + "issuer": "2.5.4.97 = NRTAD-U129638U O = SAAS CN = DGCG C = AD", + "subject": "C = AD ST = Andorra L = Escaldes-Engordany O = SAAS OU = SSII CN = dsc", + "notbefore": 1630843042000, + "notafter": 1693915042000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGvHqf7SYtlvevOyA/no+i1/WcmS0\nbOYP1bgP+pJTjTkBOpQi+f7Ie6415WFl9aoqzMmKRJmE6Ur4H+b9Vba7FA==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDNTCCAh2gAwIBAgIUPlH4JERPPj3GoUrvEpBgHChJmOcwDQYJKoZIhvcNAQELBQAwRDEXMBUGA1UEYQwOTlJUQUQtVTEyOTYzOFUxDTALBgNVBAoMBFNBQVMxDTALBgNVBAMMBERHQ0cxCzAJBgNVBAYTAkFEMB4XDTIxMDkwNTExNTcyMloXDTIzMDkwNTExNTcyMlowaDELMAkGA1UEBhMCQUQxEDAOBgNVBAgMB0FuZG9ycmExGzAZBgNVBAcMEkVzY2FsZGVzLUVuZ29yZGFueTENMAsGA1UECgwEU0FBUzENMAsGA1UECwwEU1NJSTEMMAoGA1UEAwwDZHNjMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGvHqf7SYtlvevOyA/no+i1/WcmS0bOYP1bgP+pJTjTkBOpQi+f7Ie6415WFl9aoqzMmKRJmE6Ur4H+b9Vba7FKOBxTCBwjAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFOZE/2bkC1HwzFPPcZQJ82uVyOTTMB8GA1UdIwQYMBaAFGiVtMJNO5SQY5dOAz9JNlmRi90OMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9jcmwuZXhhbXBsZWRvbWFpbi5leGFtcGxlL0NSTC9DU0NBLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMA0GCSqGSIb3DQEBCwUAA4IBAQBB7UNVlexZwtC19yXkui85kfGT0RT0CqfLAvFPXy22Cy0/Al1OWItlWiN7z4RKSfhXel9jBPkowWjm4TH/Z9SS558sa/CQohYUaPlgR2UluMhbDVUsyLicQbqVx571GIA3BLoInJsFnp3Srv+XgP8ic2T72/mXwxnHCg1Jra2X8W0GGaxrUuvf+dxnPhDTeBNVqmYgk6q1vS3Nj3yugkgmg2xXNIWpcFjeC6/FVsTEORxi4SOjjn5Omhb9uZLeq11hXx04fORw9ctzppi5P5TDNDdmqa5iLRVsgS7Z7+Fp7V4QmfiRsVjyX+2QadvREEIbgcw8Y9d1j1qIXrCYwhCE", + "kid": "mqWkXpNR0Rk=" + }, + { + "issuer": "C = MD ST = Republic of Moldova L = Chisinau O = STISC OU = CCCP CN = Republic of Moldova National CSCA 01", + "subject": "C = MD ST = Republic of Moldova L = Chisinau O = Ministry of Health CN = Republic of Moldova DSC 01", + "notbefore": 1635269461000, + "notafter": 1698341461000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEurid6V6ennaGMYu1h8Q2PFJ7eMkj\n7FiBzBEiQMnNb/YzAj60g6cnvX02AB+E48Hoz4amNlralKXL3CvjaxHGLw==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICljCCAjygAwIBAgIUfKVPCJ2DSOQlBmu5AcgWL+pt9wkwCgYIKoZIzj0EAwIwgYwxCzAJBgNVBAYTAk1EMRwwGgYDVQQIDBNSZXB1YmxpYyBvZiBNb2xkb3ZhMREwDwYDVQQHDAhDaGlzaW5hdTEOMAwGA1UECgwFU1RJU0MxDTALBgNVBAsMBENDQ1AxLTArBgNVBAMMJFJlcHVibGljIG9mIE1vbGRvdmEgTmF0aW9uYWwgQ1NDQSAwMTAeFw0yMTEwMjYxNzMxMDFaFw0yMzEwMjYxNzMxMDFaMIGAMQswCQYDVQQGEwJNRDEcMBoGA1UECAwTUmVwdWJsaWMgb2YgTW9sZG92YTERMA8GA1UEBwwIQ2hpc2luYXUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDEjMCEGA1UEAwwaUmVwdWJsaWMgb2YgTW9sZG92YSBEU0MgMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS6uJ3pXp6edoYxi7WHxDY8Unt4ySPsWIHMESJAyc1v9jMCPrSDpye9fTYAH4TjwejPhqY2WtqUpcvcK+NrEcYvo4GFMIGCMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUtk8/4i4hj2sDFnz+oTBPM3gsriUwHwYDVR0jBBgwFoAU5leuhgfUUggxBYNy0n+tKWe46lIwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAKBggqhkjOPQQDAgNIADBFAiA0P/CM3hswqmbtlgRCGfsMs2DCmPGQwoqVJYoDFHyx/wIhAM2PdlwhGVVyeVugqUXabGMmLNwchyNqMNdABoH3eI9q", + "kid": "p64sutu48UA=" + }, + { + "issuer": "C = SM ST = SM L = City of San Marino O = San Marino Innovation OU = DGCOperations CN = CSCA_DGC_SM_01", + "subject": "C = SM ST = San Marino L = City of San Marino O = Istituto per la Sicurezza Sociale OU = DGCOperations CN = DSC_CSR_DGC_SM_01 E = smdcc@iss.sm", + "notbefore": 1623321959000, + "notafter": 1686393959000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEH2+GOTdCPhSUdDZmaM7hq/hRJkZC\nd3wPyOwB8lS30s4N81r4XFpv1Yev+1bfB4A173DByhZyIKkdnZc/FfaAXQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIIDBTCCAqugAwIBAgIUeATFyjMaoiT84DKJmiNU72+mkVgwCgYIKoZIzj0EAwIwgYgxCzAJBgNVBAYTAlNNMQswCQYDVQQIDAJTTTEbMBkGA1UEBwwSQ2l0eSBvZiBTYW4gTWFyaW5vMR4wHAYDVQQKDBVTYW4gTWFyaW5vIElubm92YXRpb24xFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxFzAVBgNVBAMMDkNTQ0FfREdDX1NNXzAxMB4XDTIxMDYxMDEwNDU1OVoXDTIzMDYxMDEwNDU1OVowgb0xCzAJBgNVBAYTAlNNMRMwEQYDVQQIDApTYW4gTWFyaW5vMRswGQYDVQQHDBJDaXR5IG9mIFNhbiBNYXJpbm8xKzApBgNVBAoMIklzdGl0dXRvIHBlciBsYSBTaWN1cmV6emEgU29jaWFsZSAxFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxGjAYBgNVBAMMEURTQ19DU1JfREdDX1NNXzAxMRswGQYJKoZIhvcNAQkBFgxzbWRjY0Bpc3Muc20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQfb4Y5N0I+FJR0NmZozuGr+FEmRkJ3fA/I7AHyVLfSzg3zWvhcWm/Vh6/7Vt8HgDXvcMHKFnIgqR2dlz8V9oBdo4G7MIG4MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUXBEgxHdIds6E5XLz7K3xKYM1ZYcwHwYDVR0jBBgwFoAU3R4p+KmXTKHb/B2ZD1s9d0P+tlUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDovL3d3dy5zbWRjYy5zbS9DUkwvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiAqKNSdqhkdyZaMENowSdL1xU3Cq/A/u6PaO90ApEBVfgIhAOaFehZJJsm5o3LAhZ+q3bWBZHbB7nsFbTzvowcNyc2K", + "kid": "r9RtWK9x7dM=" + }, + { + "issuer": "C = GR CN = grnet.gr", + "subject": "C = GR CN = grnet.gr", + "notbefore": 1621881325000, + "notafter": 1684953325000, + "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFP\nen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEQ==\n-----END PUBLIC KEY-----\n", + "rawX509data": "MIICBjCCAaygAwIBAgIUKhlB7j/znUbHbqEQfJErud8AyPMwCgYIKoZIzj0EAwIwIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMB4XDTIxMDUyNDE4MzUyNVoXDTIzMDUyNDE4MzUyNVowIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFPen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEaOBwzCBwDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFKfRIrjTBVN2/tmTt8I32yrVl3DRMB8GA1UdIwQYMBaAFHAWm9K/JxbEXkf7XcqhKPGmpDK9MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHBzOi8vY3JsLmRnYy5zZXJ2aWNlcy5nb3YuZ3IvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiBdWbGhPUZmHxMV9eXlVEkLRY+zGdCsKVxgAMk2JYqU8AIhANkXZhiDVPD5IDiEw3Z3r0MdBxx7jy6rQzBj/K4OSgCl", + "kid": "vvYa1vaWkGg=" + } + ] +} \ No newline at end of file diff --git a/tool/FetchCerts.js b/tool/FetchCerts.js new file mode 100644 index 0000000..f4af034 --- /dev/null +++ b/tool/FetchCerts.js @@ -0,0 +1,86 @@ +import axios from 'axios'; +import { Certificate } from '@fidm/x509'; +import * as fs from "fs"; +import * as path from "path"; + +/* + * Fetches the certs from https://de.dscg.ubirch.com/trustList/DSC/ + * and creates the certs.json file in scr folder + */ +export class FetchCerts { + + constructor() { + this.fetchAndUpdate(); + } + + createIssuerOrSubject(data) { + let str = ''; + + for (const attr of data.attributes) { + if (!str) { + str += attr.shortName ? `${attr.shortName} = ${attr.value}` : `${attr.name} = ${attr.value}` + } else { + str += attr.shortName ? ` ${attr.shortName} = ${attr.value}` : ` ${attr.name} = ${attr.value}` + } + } + + return str; + } + + decodeX509(rawData, kid) { + let data = { + issuer: '', + subject: '', + notbefore: 0, + notafter: 0, + pubkey: '', + rawX509data: '' + } + + let CERT_PEM_STR = `-----BEGIN CERTIFICATE-----\n${rawData}\n-----END CERTIFICATE-----`; + + try { + let cert = Certificate.fromPEM(CERT_PEM_STR); + + data.rawX509data = rawData; + data.issuer = this.createIssuerOrSubject(cert.issuer); + data.subject = this.createIssuerOrSubject(cert.subject) + data.kid = kid + data.notbefore = new Date(cert.validFrom).getTime(); + data.notafter = new Date(cert.validTo).getTime(); + data.pubkey = cert.publicKey.toPEM(); + } catch (err) { + console.warn(`[WARN] Failure creating cert data for "${kid}".\n${err}\n`); + } + + return data; + } + + async fetchAndUpdate() { + + try { + const result = await axios.get('https://de.dscg.ubirch.com/trustList/DSC/'); + const rawData = result.data; + const comps = rawData.split('\n'); + const json = JSON.parse(comps[1]); + + let certs = { + certs: [] + } + + for (const cert of json.certificates) { + const data = this.decodeX509(cert.rawData, cert.kid); + + certs.certs.push(data); + } + + fs.mkdirSync(path.join('./src'), { recursive: true }); + fs.writeFile(path.join('./src/certs.json'), JSON.stringify(certs,null,0), () => {}); + + } catch (err) { + console.error('failed to submit document: ' + err); + } + } +} + +new FetchCerts(); \ No newline at end of file From 1cee9c9807a80529f2c77179a40e4d5ab15dacca Mon Sep 17 00:00:00 2001 From: Kevin Date: Thu, 25 Nov 2021 15:43:01 +0100 Subject: [PATCH 2/3] improvements to cert fetcher --- dist/eudgc.js | 4 +- package.json | 1 - src/certs.json | 2075 +------------------------------------------- tool/FetchCerts.js | 43 +- 4 files changed, 28 insertions(+), 2095 deletions(-) diff --git a/dist/eudgc.js b/dist/eudgc.js index cfc4092..5e5d31b 100644 --- a/dist/eudgc.js +++ b/dist/eudgc.js @@ -1,3 +1,3 @@ /*! For license information please see eudgc.js.LICENSE.txt */ -(()=>{var t={9809:(t,e,r)=>{"use strict";const i=e;i.bignum=r(4590),i.define=r(2500).define,i.base=r(1979),i.constants=r(6826),i.decoders=r(8307),i.encoders=r(6579)},2500:(t,e,r)=>{"use strict";const i=r(6579),n=r(8307),o=r(5717);function s(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}e.define=function(t,e){return new s(t,e)},s.prototype._createNamed=function(t){const e=this.name;function r(t){this._initNamed(t,e)}return o(r,t),r.prototype._initNamed=function(e,r){t.call(this,e,r)},new r(this)},s.prototype._getDecoder=function(t){return t=t||"der",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(n[t])),this.decoders[t]},s.prototype.decode=function(t,e,r){return this._getDecoder(e).decode(t,r)},s.prototype._getEncoder=function(t){return t=t||"der",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(i[t])),this.encoders[t]},s.prototype.encode=function(t,e,r){return this._getEncoder(e).encode(t,r)}},6625:(t,e,r)=>{"use strict";const i=r(5717),n=r(8465).b,o=r(2399).Buffer;function s(t,e){n.call(this,e),o.isBuffer(t)?(this.base=t,this.offset=0,this.length=t.length):this.error("Input not Buffer")}function a(t,e){if(Array.isArray(t))this.length=0,this.value=t.map((function(t){return a.isEncoderBuffer(t)||(t=new a(t,e)),this.length+=t.length,t}),this);else if("number"==typeof t){if(!(0<=t&&t<=255))return e.error("non-byte EncoderBuffer value");this.value=t,this.length=1}else if("string"==typeof t)this.value=t,this.length=o.byteLength(t);else{if(!o.isBuffer(t))return e.error("Unsupported type: "+typeof t);this.value=t,this.length=t.length}}i(s,n),e.C=s,s.isDecoderBuffer=function(t){return t instanceof s||"object"==typeof t&&o.isBuffer(t.base)&&"DecoderBuffer"===t.constructor.name&&"number"==typeof t.offset&&"number"==typeof t.length&&"function"==typeof t.save&&"function"==typeof t.restore&&"function"==typeof t.isEmpty&&"function"==typeof t.readUInt8&&"function"==typeof t.skip&&"function"==typeof t.raw},s.prototype.save=function(){return{offset:this.offset,reporter:n.prototype.save.call(this)}},s.prototype.restore=function(t){const e=new s(this.base);return e.offset=t.offset,e.length=this.offset,this.offset=t.offset,n.prototype.restore.call(this,t.reporter),e},s.prototype.isEmpty=function(){return this.offset===this.length},s.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||"DecoderBuffer overrun")},s.prototype.skip=function(t,e){if(!(this.offset+t<=this.length))return this.error(e||"DecoderBuffer overrun");const r=new s(this.base);return r._reporterState=this._reporterState,r.offset=this.offset,r.length=this.offset+t,this.offset+=t,r},s.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)},e.R=a,a.isEncoderBuffer=function(t){return t instanceof a||"object"==typeof t&&"EncoderBuffer"===t.constructor.name&&"number"==typeof t.length&&"function"==typeof t.join},a.prototype.join=function(t,e){return t||(t=o.alloc(this.length)),e||(e=0),0===this.length||(Array.isArray(this.value)?this.value.forEach((function(r){r.join(t,e),e+=r.length})):("number"==typeof this.value?t[e]=this.value:"string"==typeof this.value?t.write(this.value,e):o.isBuffer(this.value)&&this.value.copy(t,e),e+=this.length)),t}},1979:(t,e,r)=>{"use strict";const i=e;i.Reporter=r(8465).b,i.DecoderBuffer=r(6625).C,i.EncoderBuffer=r(6625).R,i.Node=r(1949)},1949:(t,e,r)=>{"use strict";const i=r(8465).b,n=r(6625).R,o=r(6625).C,s=r(9746),a=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],h=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(a);function u(t,e,r){const i={};this._baseState=i,i.name=r,i.enc=t,i.parent=e||null,i.children=null,i.tag=null,i.args=null,i.reverseArgs=null,i.choice=null,i.optional=!1,i.any=!1,i.obj=!1,i.use=null,i.useDecoder=null,i.key=null,i.default=null,i.explicit=null,i.implicit=null,i.contains=null,i.parent||(i.children=[],this._wrap())}t.exports=u;const l=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];u.prototype.clone=function(){const t=this._baseState,e={};l.forEach((function(r){e[r]=t[r]}));const r=new this.constructor(e.parent);return r._baseState=e,r},u.prototype._wrap=function(){const t=this._baseState;h.forEach((function(e){this[e]=function(){const r=new this.constructor(this);return t.children.push(r),r[e].apply(r,arguments)}}),this)},u.prototype._init=function(t){const e=this._baseState;s(null===e.parent),t.call(this),e.children=e.children.filter((function(t){return t._baseState.parent===this}),this),s.equal(e.children.length,1,"Root node can have only one child")},u.prototype._useArgs=function(t){const e=this._baseState,r=t.filter((function(t){return t instanceof this.constructor}),this);t=t.filter((function(t){return!(t instanceof this.constructor)}),this),0!==r.length&&(s(null===e.children),e.children=r,r.forEach((function(t){t._baseState.parent=this}),this)),0!==t.length&&(s(null===e.args),e.args=t,e.reverseArgs=t.map((function(t){if("object"!=typeof t||t.constructor!==Object)return t;const e={};return Object.keys(t).forEach((function(r){r==(0|r)&&(r|=0);const i=t[r];e[i]=r})),e})))},["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"].forEach((function(t){u.prototype[t]=function(){const e=this._baseState;throw new Error(t+" not implemented for encoding: "+e.enc)}})),a.forEach((function(t){u.prototype[t]=function(){const e=this._baseState,r=Array.prototype.slice.call(arguments);return s(null===e.tag),e.tag=t,this._useArgs(r),this}})),u.prototype.use=function(t){s(t);const e=this._baseState;return s(null===e.use),e.use=t,this},u.prototype.optional=function(){return this._baseState.optional=!0,this},u.prototype.def=function(t){const e=this._baseState;return s(null===e.default),e.default=t,e.optional=!0,this},u.prototype.explicit=function(t){const e=this._baseState;return s(null===e.explicit&&null===e.implicit),e.explicit=t,this},u.prototype.implicit=function(t){const e=this._baseState;return s(null===e.explicit&&null===e.implicit),e.implicit=t,this},u.prototype.obj=function(){const t=this._baseState,e=Array.prototype.slice.call(arguments);return t.obj=!0,0!==e.length&&this._useArgs(e),this},u.prototype.key=function(t){const e=this._baseState;return s(null===e.key),e.key=t,this},u.prototype.any=function(){return this._baseState.any=!0,this},u.prototype.choice=function(t){const e=this._baseState;return s(null===e.choice),e.choice=t,this._useArgs(Object.keys(t).map((function(e){return t[e]}))),this},u.prototype.contains=function(t){const e=this._baseState;return s(null===e.use),e.contains=t,this},u.prototype._decode=function(t,e){const r=this._baseState;if(null===r.parent)return t.wrapResult(r.children[0]._decode(t,e));let i,n=r.default,s=!0,a=null;if(null!==r.key&&(a=t.enterKey(r.key)),r.optional){let i=null;if(null!==r.explicit?i=r.explicit:null!==r.implicit?i=r.implicit:null!==r.tag&&(i=r.tag),null!==i||r.any){if(s=this._peekTag(t,i,r.any),t.isError(s))return s}else{const i=t.save();try{null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),s=!0}catch(t){s=!1}t.restore(i)}}if(r.obj&&s&&(i=t.enterObject()),s){if(null!==r.explicit){const e=this._decodeTag(t,r.explicit);if(t.isError(e))return e;t=e}const i=t.offset;if(null===r.use&&null===r.choice){let e;r.any&&(e=t.save());const i=this._decodeTag(t,null!==r.implicit?r.implicit:r.tag,r.any);if(t.isError(i))return i;r.any?n=t.raw(e):t=i}if(e&&e.track&&null!==r.tag&&e.track(t.path(),i,t.length,"tagged"),e&&e.track&&null!==r.tag&&e.track(t.path(),t.offset,t.length,"content"),r.any||(n=null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e)),t.isError(n))return n;if(r.any||null!==r.choice||null===r.children||r.children.forEach((function(r){r._decode(t,e)})),r.contains&&("octstr"===r.tag||"bitstr"===r.tag)){const i=new o(n);n=this._getUse(r.contains,t._reporterState.obj)._decode(i,e)}}return r.obj&&s&&(n=t.leaveObject(i)),null===r.key||null===n&&!0!==s?null!==a&&t.exitKey(a):t.leaveKey(a,r.key,n),n},u.prototype._decodeGeneric=function(t,e,r){const i=this._baseState;return"seq"===t||"set"===t?null:"seqof"===t||"setof"===t?this._decodeList(e,t,i.args[0],r):/str$/.test(t)?this._decodeStr(e,t,r):"objid"===t&&i.args?this._decodeObjid(e,i.args[0],i.args[1],r):"objid"===t?this._decodeObjid(e,null,null,r):"gentime"===t||"utctime"===t?this._decodeTime(e,t,r):"null_"===t?this._decodeNull(e,r):"bool"===t?this._decodeBool(e,r):"objDesc"===t?this._decodeStr(e,t,r):"int"===t||"enum"===t?this._decodeInt(e,i.args&&i.args[0],r):null!==i.use?this._getUse(i.use,e._reporterState.obj)._decode(e,r):e.error("unknown tag: "+t)},u.prototype._getUse=function(t,e){const r=this._baseState;return r.useDecoder=this._use(t,e),s(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},u.prototype._decodeChoice=function(t,e){const r=this._baseState;let i=null,n=!1;return Object.keys(r.choice).some((function(o){const s=t.save(),a=r.choice[o];try{const r=a._decode(t,e);if(t.isError(r))return!1;i={type:o,value:r},n=!0}catch(e){return t.restore(s),!1}return!0}),this),n?i:t.error("Choice not matched")},u.prototype._createEncoderBuffer=function(t){return new n(t,this.reporter)},u.prototype._encode=function(t,e,r){const i=this._baseState;if(null!==i.default&&i.default===t)return;const n=this._encodeValue(t,e,r);return void 0===n||this._skipDefault(n,e,r)?void 0:n},u.prototype._encodeValue=function(t,e,r){const n=this._baseState;if(null===n.parent)return n.children[0]._encode(t,e||new i);let o=null;if(this.reporter=e,n.optional&&void 0===t){if(null===n.default)return;t=n.default}let s=null,a=!1;if(n.any)o=this._createEncoderBuffer(t);else if(n.choice)o=this._encodeChoice(t,e);else if(n.contains)s=this._getUse(n.contains,r)._encode(t,e),a=!0;else if(n.children)s=n.children.map((function(r){if("null_"===r._baseState.tag)return r._encode(null,e,t);if(null===r._baseState.key)return e.error("Child should have a key");const i=e.enterKey(r._baseState.key);if("object"!=typeof t)return e.error("Child expected, but input is not object");const n=r._encode(t[r._baseState.key],e,t);return e.leaveKey(i),n}),this).filter((function(t){return t})),s=this._createEncoderBuffer(s);else if("seqof"===n.tag||"setof"===n.tag){if(!n.args||1!==n.args.length)return e.error("Too many args for : "+n.tag);if(!Array.isArray(t))return e.error("seqof/setof, but data is not Array");const r=this.clone();r._baseState.implicit=null,s=this._createEncoderBuffer(t.map((function(r){const i=this._baseState;return this._getUse(i.args[0],t)._encode(r,e)}),r))}else null!==n.use?o=this._getUse(n.use,r)._encode(t,e):(s=this._encodePrimitive(n.tag,t),a=!0);if(!n.any&&null===n.choice){const t=null!==n.implicit?n.implicit:n.tag,r=null===n.implicit?"universal":"context";null===t?null===n.use&&e.error("Tag could be omitted only for .use()"):null===n.use&&(o=this._encodeComposite(t,a,r,s))}return null!==n.explicit&&(o=this._encodeComposite(n.explicit,!1,"context",o)),o},u.prototype._encodeChoice=function(t,e){const r=this._baseState,i=r.choice[t.type];return i||s(!1,t.type+" not found in "+JSON.stringify(Object.keys(r.choice))),i._encode(t.value,e)},u.prototype._encodePrimitive=function(t,e){const r=this._baseState;if(/str$/.test(t))return this._encodeStr(e,t);if("objid"===t&&r.args)return this._encodeObjid(e,r.reverseArgs[0],r.args[1]);if("objid"===t)return this._encodeObjid(e,null,null);if("gentime"===t||"utctime"===t)return this._encodeTime(e,t);if("null_"===t)return this._encodeNull();if("int"===t||"enum"===t)return this._encodeInt(e,r.args&&r.reverseArgs[0]);if("bool"===t)return this._encodeBool(e);if("objDesc"===t)return this._encodeStr(e,t);throw new Error("Unsupported tag: "+t)},u.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},u.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(t)}},8465:(t,e,r)=>{"use strict";const i=r(5717);function n(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function o(t,e){this.path=t,this.rethrow(e)}e.b=n,n.prototype.isError=function(t){return t instanceof o},n.prototype.save=function(){const t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},n.prototype.restore=function(t){const e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},n.prototype.enterKey=function(t){return this._reporterState.path.push(t)},n.prototype.exitKey=function(t){const e=this._reporterState;e.path=e.path.slice(0,t-1)},n.prototype.leaveKey=function(t,e,r){const i=this._reporterState;this.exitKey(t),null!==i.obj&&(i.obj[e]=r)},n.prototype.path=function(){return this._reporterState.path.join("/")},n.prototype.enterObject=function(){const t=this._reporterState,e=t.obj;return t.obj={},e},n.prototype.leaveObject=function(t){const e=this._reporterState,r=e.obj;return e.obj=t,r},n.prototype.error=function(t){let e;const r=this._reporterState,i=t instanceof o;if(e=i?t:new o(r.path.map((function(t){return"["+JSON.stringify(t)+"]"})).join(""),t.message||t,t.stack),!r.options.partial)throw e;return i||r.errors.push(e),e},n.prototype.wrapResult=function(t){const e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},i(o,Error),o.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,o),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},160:(t,e)=>{"use strict";function r(t){const e={};return Object.keys(t).forEach((function(r){(0|r)==r&&(r|=0);const i=t[r];e[i]=r})),e}e.tagClass={0:"universal",1:"application",2:"context",3:"private"},e.tagClassByName=r(e.tagClass),e.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},e.tagByName=r(e.tag)},6826:(t,e,r)=>{"use strict";const i=e;i._reverse=function(t){const e={};return Object.keys(t).forEach((function(r){(0|r)==r&&(r|=0);const i=t[r];e[i]=r})),e},i.der=r(160)},1671:(t,e,r)=>{"use strict";const i=r(5717),n=r(4590),o=r(6625).C,s=r(1949),a=r(160);function h(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new u,this.tree._init(t.body)}function u(t){s.call(this,"der",t)}function l(t,e){let r=t.readUInt8(e);if(t.isError(r))return r;const i=a.tagClass[r>>6],n=0==(32&r);if(31==(31&r)){let i=r;for(r=0;128==(128&i);){if(i=t.readUInt8(e),t.isError(i))return i;r<<=7,r|=127&i}}else r&=31;return{cls:i,primitive:n,tag:r,tagStr:a.tag[r]}}function c(t,e,r){let i=t.readUInt8(r);if(t.isError(i))return i;if(!e&&128===i)return null;if(0==(128&i))return i;const n=127&i;if(n>4)return t.error("length octect is too long");i=0;for(let e=0;e{"use strict";const i=e;i.der=r(1671),i.pem=r(9631)},9631:(t,e,r)=>{"use strict";const i=r(5717),n=r(2399).Buffer,o=r(1671);function s(t){o.call(this,t),this.enc="pem"}i(s,o),t.exports=s,s.prototype.decode=function(t,e){const r=t.toString().split(/[\r\n]+/g),i=e.label.toUpperCase(),s=/^-----(BEGIN|END) ([^-]+)-----$/;let a=-1,h=-1;for(let t=0;t{"use strict";const i=r(5717),n=r(2399).Buffer,o=r(1949),s=r(160);function a(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new h,this.tree._init(t.body)}function h(t){o.call(this,"der",t)}function u(t){return t<10?"0"+t:t}t.exports=a,a.prototype.encode=function(t,e){return this.tree._encode(t,e).join()},i(h,o),h.prototype._encodeComposite=function(t,e,r,i){const o=function(t,e,r,i){let n;if("seqof"===t?t="seq":"setof"===t&&(t="set"),s.tagByName.hasOwnProperty(t))n=s.tagByName[t];else{if("number"!=typeof t||(0|t)!==t)return i.error("Unknown tag: "+t);n=t}return n>=31?i.error("Multi-octet tag encoding unsupported"):(e||(n|=32),n|=s.tagClassByName[r||"universal"]<<6,n)}(t,e,r,this.reporter);if(i.length<128){const t=n.alloc(2);return t[0]=o,t[1]=i.length,this._createEncoderBuffer([t,i])}let a=1;for(let t=i.length;t>=256;t>>=8)a++;const h=n.alloc(2+a);h[0]=o,h[1]=128|a;for(let t=1+a,e=i.length;e>0;t--,e>>=8)h[t]=255&e;return this._createEncoderBuffer([h,i])},h.prototype._encodeStr=function(t,e){if("bitstr"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if("bmpstr"===e){const e=n.alloc(2*t.length);for(let r=0;r=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,40*t[0]+t[1])}let i=0;for(let e=0;e=128;r>>=7)i++}const o=n.alloc(i);let s=o.length-1;for(let e=t.length-1;e>=0;e--){let r=t[e];for(o[s--]=127&r;(r>>=7)>0;)o[s--]=128|127&r}return this._createEncoderBuffer(o)},h.prototype._encodeTime=function(t,e){let r;const i=new Date(t);return"gentime"===e?r=[u(i.getUTCFullYear()),u(i.getUTCMonth()+1),u(i.getUTCDate()),u(i.getUTCHours()),u(i.getUTCMinutes()),u(i.getUTCSeconds()),"Z"].join(""):"utctime"===e?r=[u(i.getUTCFullYear()%100),u(i.getUTCMonth()+1),u(i.getUTCDate()),u(i.getUTCHours()),u(i.getUTCMinutes()),u(i.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+e+" time is not supported yet"),this._encodeStr(r,"octstr")},h.prototype._encodeNull=function(){return this._createEncoderBuffer("")},h.prototype._encodeInt=function(t,e){if("string"==typeof t){if(!e)return this.reporter.error("String int or enum given, but no values map");if(!e.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=e[t]}if("number"!=typeof t&&!n.isBuffer(t)){const e=t.toArray();!t.sign&&128&e[0]&&e.unshift(0),t=n.from(e)}if(n.isBuffer(t)){let e=t.length;0===t.length&&e++;const r=n.alloc(e);return t.copy(r),0===t.length&&(r[0]=0),this._createEncoderBuffer(r)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);let r=1;for(let e=t;e>=256;e>>=8)r++;const i=new Array(r);for(let e=i.length-1;e>=0;e--)i[e]=255&t,t>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(n.from(i))},h.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},h.prototype._use=function(t,e){return"function"==typeof t&&(t=t(e)),t._getEncoder("der").tree},h.prototype._skipDefault=function(t,e,r){const i=this._baseState;let n;if(null===i.default)return!1;const o=t.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,e,r).join()),o.length!==i.defaultBuffer.length)return!1;for(n=0;n{"use strict";const i=e;i.der=r(6984),i.pem=r(2883)},2883:(t,e,r)=>{"use strict";const i=r(5717),n=r(6984);function o(t){n.call(this,t),this.enc="pem"}i(o,n),t.exports=o,o.prototype.encode=function(t,e){const r=n.prototype.encode.call(this,t).toString("base64"),i=["-----BEGIN "+e.label+"-----"];for(let t=0;t=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,c=67108863&h,f=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=f;d++){var g=u-d|0;l+=(s=(n=0|t.words[g])*(o=0|e.words[d])+c)/67108864|0,c=67108863&s}r.words[u]=0|c,h=0|l}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?l[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=c[t],d=f[t];r="";var g=this.clone();for(g.negative=0;!g.isZero();){var A=g.modn(d).toString(t);r=(g=g.idivn(d)).isZero()?A+r:l[u-A.length]+A+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),l=this.clone();if(h){for(a=0;!l.isZero();a++)s=l.andln(255),l.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],g=8191&d,A=d>>>13,M=0|s[2],p=8191&M,w=M>>>13,B=0|s[3],m=8191&B,E=B>>>13,y=0|s[4],b=8191&y,I=y>>>13,v=0|s[5],C=8191&v,Q=v>>>13,D=0|s[6],N=8191&D,R=D>>>13,G=0|s[7],U=8191&G,V=G>>>13,S=0|s[8],T=8191&S,Y=S>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,x=j>>>13,z=0|a[1],O=8191&z,H=z>>>13,_=0|a[2],W=8191&_,J=_>>>13,X=0|a[3],P=8191&X,K=X>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,lt=0|a[8],ct=8191<,ft=lt>>>13,dt=0|a[9],gt=8191&dt,At=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(c,Z))|0)+((8191&(n=(n=Math.imul(c,x))+Math.imul(f,Z)|0))<<13)|0;u=((o=Math.imul(f,x))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(g,Z),n=(n=Math.imul(g,x))+Math.imul(A,Z)|0,o=Math.imul(A,x);var pt=(u+(i=i+Math.imul(c,O)|0)|0)+((8191&(n=(n=n+Math.imul(c,H)|0)+Math.imul(f,O)|0))<<13)|0;u=((o=o+Math.imul(f,H)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,x))+Math.imul(w,Z)|0,o=Math.imul(w,x),i=i+Math.imul(g,O)|0,n=(n=n+Math.imul(g,H)|0)+Math.imul(A,O)|0,o=o+Math.imul(A,H)|0;var wt=(u+(i=i+Math.imul(c,W)|0)|0)+((8191&(n=(n=n+Math.imul(c,J)|0)+Math.imul(f,W)|0))<<13)|0;u=((o=o+Math.imul(f,J)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(m,Z),n=(n=Math.imul(m,x))+Math.imul(E,Z)|0,o=Math.imul(E,x),i=i+Math.imul(p,O)|0,n=(n=n+Math.imul(p,H)|0)+Math.imul(w,O)|0,o=o+Math.imul(w,H)|0,i=i+Math.imul(g,W)|0,n=(n=n+Math.imul(g,J)|0)+Math.imul(A,W)|0,o=o+Math.imul(A,J)|0;var Bt=(u+(i=i+Math.imul(c,P)|0)|0)+((8191&(n=(n=n+Math.imul(c,K)|0)+Math.imul(f,P)|0))<<13)|0;u=((o=o+Math.imul(f,K)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,x))+Math.imul(I,Z)|0,o=Math.imul(I,x),i=i+Math.imul(m,O)|0,n=(n=n+Math.imul(m,H)|0)+Math.imul(E,O)|0,o=o+Math.imul(E,H)|0,i=i+Math.imul(p,W)|0,n=(n=n+Math.imul(p,J)|0)+Math.imul(w,W)|0,o=o+Math.imul(w,J)|0,i=i+Math.imul(g,P)|0,n=(n=n+Math.imul(g,K)|0)+Math.imul(A,P)|0,o=o+Math.imul(A,K)|0;var mt=(u+(i=i+Math.imul(c,$)|0)|0)+((8191&(n=(n=n+Math.imul(c,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,x))+Math.imul(Q,Z)|0,o=Math.imul(Q,x),i=i+Math.imul(b,O)|0,n=(n=n+Math.imul(b,H)|0)+Math.imul(I,O)|0,o=o+Math.imul(I,H)|0,i=i+Math.imul(m,W)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,J)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,K)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,K)|0,i=i+Math.imul(g,$)|0,n=(n=n+Math.imul(g,tt)|0)+Math.imul(A,$)|0,o=o+Math.imul(A,tt)|0;var Et=(u+(i=i+Math.imul(c,rt)|0)|0)+((8191&(n=(n=n+Math.imul(c,it)|0)+Math.imul(f,rt)|0))<<13)|0;u=((o=o+Math.imul(f,it)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,Z),n=(n=Math.imul(N,x))+Math.imul(R,Z)|0,o=Math.imul(R,x),i=i+Math.imul(C,O)|0,n=(n=n+Math.imul(C,H)|0)+Math.imul(Q,O)|0,o=o+Math.imul(Q,H)|0,i=i+Math.imul(b,W)|0,n=(n=n+Math.imul(b,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,i=i+Math.imul(m,P)|0,n=(n=n+Math.imul(m,K)|0)+Math.imul(E,P)|0,o=o+Math.imul(E,K)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(g,rt)|0,n=(n=n+Math.imul(g,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0;var yt=(u+(i=i+Math.imul(c,ot)|0)|0)+((8191&(n=(n=n+Math.imul(c,st)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(U,Z),n=(n=Math.imul(U,x))+Math.imul(V,Z)|0,o=Math.imul(V,x),i=i+Math.imul(N,O)|0,n=(n=n+Math.imul(N,H)|0)+Math.imul(R,O)|0,o=o+Math.imul(R,H)|0,i=i+Math.imul(C,W)|0,n=(n=n+Math.imul(C,J)|0)+Math.imul(Q,W)|0,o=o+Math.imul(Q,J)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,K)|0)+Math.imul(I,P)|0,o=o+Math.imul(I,K)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(g,ot)|0,n=(n=n+Math.imul(g,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0;var bt=(u+(i=i+Math.imul(c,ht)|0)|0)+((8191&(n=(n=n+Math.imul(c,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,x))+Math.imul(Y,Z)|0,o=Math.imul(Y,x),i=i+Math.imul(U,O)|0,n=(n=n+Math.imul(U,H)|0)+Math.imul(V,O)|0,o=o+Math.imul(V,H)|0,i=i+Math.imul(N,W)|0,n=(n=n+Math.imul(N,J)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,J)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,K)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,K)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,tt)|0,i=i+Math.imul(m,rt)|0,n=(n=n+Math.imul(m,it)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(g,ht)|0,n=(n=n+Math.imul(g,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0;var It=(u+(i=i+Math.imul(c,ct)|0)|0)+((8191&(n=(n=n+Math.imul(c,ft)|0)+Math.imul(f,ct)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,x))+Math.imul(L,Z)|0,o=Math.imul(L,x),i=i+Math.imul(T,O)|0,n=(n=n+Math.imul(T,H)|0)+Math.imul(Y,O)|0,o=o+Math.imul(Y,H)|0,i=i+Math.imul(U,W)|0,n=(n=n+Math.imul(U,J)|0)+Math.imul(V,W)|0,o=o+Math.imul(V,J)|0,i=i+Math.imul(N,P)|0,n=(n=n+Math.imul(N,K)|0)+Math.imul(R,P)|0,o=o+Math.imul(R,K)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,it)|0,i=i+Math.imul(m,ot)|0,n=(n=n+Math.imul(m,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(g,ct)|0,n=(n=n+Math.imul(g,ft)|0)+Math.imul(A,ct)|0,o=o+Math.imul(A,ft)|0;var vt=(u+(i=i+Math.imul(c,gt)|0)|0)+((8191&(n=(n=n+Math.imul(c,At)|0)+Math.imul(f,gt)|0))<<13)|0;u=((o=o+Math.imul(f,At)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,O),n=(n=Math.imul(F,H))+Math.imul(L,O)|0,o=Math.imul(L,H),i=i+Math.imul(T,W)|0,n=(n=n+Math.imul(T,J)|0)+Math.imul(Y,W)|0,o=o+Math.imul(Y,J)|0,i=i+Math.imul(U,P)|0,n=(n=n+Math.imul(U,K)|0)+Math.imul(V,P)|0,o=o+Math.imul(V,K)|0,i=i+Math.imul(N,$)|0,n=(n=n+Math.imul(N,tt)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,i=i+Math.imul(m,ht)|0,n=(n=n+Math.imul(m,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,i=i+Math.imul(p,ct)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(w,ct)|0,o=o+Math.imul(w,ft)|0;var Ct=(u+(i=i+Math.imul(g,gt)|0)|0)+((8191&(n=(n=n+Math.imul(g,At)|0)+Math.imul(A,gt)|0))<<13)|0;u=((o=o+Math.imul(A,At)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,W),n=(n=Math.imul(F,J))+Math.imul(L,W)|0,o=Math.imul(L,J),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,K)|0)+Math.imul(Y,P)|0,o=o+Math.imul(Y,K)|0,i=i+Math.imul(U,$)|0,n=(n=n+Math.imul(U,tt)|0)+Math.imul(V,$)|0,o=o+Math.imul(V,tt)|0,i=i+Math.imul(N,rt)|0,n=(n=n+Math.imul(N,it)|0)+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,ut)|0,i=i+Math.imul(m,ct)|0,n=(n=n+Math.imul(m,ft)|0)+Math.imul(E,ct)|0,o=o+Math.imul(E,ft)|0;var Qt=(u+(i=i+Math.imul(p,gt)|0)|0)+((8191&(n=(n=n+Math.imul(p,At)|0)+Math.imul(w,gt)|0))<<13)|0;u=((o=o+Math.imul(w,At)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,K))+Math.imul(L,P)|0,o=Math.imul(L,K),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(Y,$)|0,o=o+Math.imul(Y,tt)|0,i=i+Math.imul(U,rt)|0,n=(n=n+Math.imul(U,it)|0)+Math.imul(V,rt)|0,o=o+Math.imul(V,it)|0,i=i+Math.imul(N,ot)|0,n=(n=n+Math.imul(N,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(b,ct)|0,n=(n=n+Math.imul(b,ft)|0)+Math.imul(I,ct)|0,o=o+Math.imul(I,ft)|0;var Dt=(u+(i=i+Math.imul(m,gt)|0)|0)+((8191&(n=(n=n+Math.imul(m,At)|0)+Math.imul(E,gt)|0))<<13)|0;u=((o=o+Math.imul(E,At)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(Y,rt)|0,o=o+Math.imul(Y,it)|0,i=i+Math.imul(U,ot)|0,n=(n=n+Math.imul(U,st)|0)+Math.imul(V,ot)|0,o=o+Math.imul(V,st)|0,i=i+Math.imul(N,ht)|0,n=(n=n+Math.imul(N,ut)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,ut)|0,i=i+Math.imul(C,ct)|0,n=(n=n+Math.imul(C,ft)|0)+Math.imul(Q,ct)|0,o=o+Math.imul(Q,ft)|0;var Nt=(u+(i=i+Math.imul(b,gt)|0)|0)+((8191&(n=(n=n+Math.imul(b,At)|0)+Math.imul(I,gt)|0))<<13)|0;u=((o=o+Math.imul(I,At)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(Y,ot)|0,o=o+Math.imul(Y,st)|0,i=i+Math.imul(U,ht)|0,n=(n=n+Math.imul(U,ut)|0)+Math.imul(V,ht)|0,o=o+Math.imul(V,ut)|0,i=i+Math.imul(N,ct)|0,n=(n=n+Math.imul(N,ft)|0)+Math.imul(R,ct)|0,o=o+Math.imul(R,ft)|0;var Rt=(u+(i=i+Math.imul(C,gt)|0)|0)+((8191&(n=(n=n+Math.imul(C,At)|0)+Math.imul(Q,gt)|0))<<13)|0;u=((o=o+Math.imul(Q,At)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(Y,ht)|0,o=o+Math.imul(Y,ut)|0,i=i+Math.imul(U,ct)|0,n=(n=n+Math.imul(U,ft)|0)+Math.imul(V,ct)|0,o=o+Math.imul(V,ft)|0;var Gt=(u+(i=i+Math.imul(N,gt)|0)|0)+((8191&(n=(n=n+Math.imul(N,At)|0)+Math.imul(R,gt)|0))<<13)|0;u=((o=o+Math.imul(R,At)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,ct)|0,n=(n=n+Math.imul(T,ft)|0)+Math.imul(Y,ct)|0,o=o+Math.imul(Y,ft)|0;var Ut=(u+(i=i+Math.imul(U,gt)|0)|0)+((8191&(n=(n=n+Math.imul(U,At)|0)+Math.imul(V,gt)|0))<<13)|0;u=((o=o+Math.imul(V,At)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,i=Math.imul(F,ct),n=(n=Math.imul(F,ft))+Math.imul(L,ct)|0,o=Math.imul(L,ft);var Vt=(u+(i=i+Math.imul(T,gt)|0)|0)+((8191&(n=(n=n+Math.imul(T,At)|0)+Math.imul(Y,gt)|0))<<13)|0;u=((o=o+Math.imul(Y,At)|0)+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863;var St=(u+(i=Math.imul(F,gt))|0)+((8191&(n=(n=Math.imul(F,At))+Math.imul(L,gt)|0))<<13)|0;return u=((o=Math.imul(L,At))+(n>>>13)|0)+(St>>>26)|0,St&=67108863,h[0]=Mt,h[1]=pt,h[2]=wt,h[3]=Bt,h[4]=mt,h[5]=Et,h[6]=yt,h[7]=bt,h[8]=It,h[9]=vt,h[10]=Ct,h[11]=Qt,h[12]=Dt,h[13]=Nt,h[14]=Rt,h[15]=Gt,h[16]=Ut,h[17]=Vt,h[18]=St,0!==u&&(h[19]=u,r.length++),r};function A(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(g=d),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?g(this,t,e):r<63?d(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):A(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==l||u>=n);u--){var c=0|this.words[u];this.words[u]=l<<26-o|c>>>o,l=c&a}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;c--){var f=67108864*(0|i.words[n.length+c])+(0|i.words[n.length+c-1]);for(f=Math.min(f/s|0,67108863),i._ishlnsubmul(n,f,c);0!==i.negative;)f--,i.negative=0,i._ishlnsubmul(n,1,c),i.isZero()||(i.negative^=1);a&&(a.words[c]=f)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),c=e.clone();!e.isZero();){for(var f=0,d=1;0==(e.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(l),s.isub(c)),n.iushrn(1),s.iushrn(1);for(var g=0,A=1;0==(r.words[0]&A)&&g<26;++g,A<<=1);if(g>0)for(r.iushrn(g);g-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(l),h.isub(c)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var c=0,f=1;0==(r.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(r.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var p={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function B(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function m(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function E(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function I(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(B,w),B.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},B.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(p[t])return p[t];var e;if("k256"===t)e=new B;else if("p224"===t)e=new m;else if("p192"===t)e=new E;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return p[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var c=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),g=s;0!==d.cmp(a);){for(var A=d,M=0;0!==A.cmp(a);M++)A=A.redSqr();i(M=0;i--){for(var u=e.words[i],l=h-1;l>=0;l--){var c=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==c||0!==s?(s<<=1,s|=c,(4==++a||0===i&&0===l)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new I(t)},n(I,b),I.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},I.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},I.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},I.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},I.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},9282:(t,e,r)=>{"use strict";var i=r(4155);function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var o,s,a=r(2136).codes,h=a.ERR_AMBIGUOUS_ARGUMENT,u=a.ERR_INVALID_ARG_TYPE,l=a.ERR_INVALID_ARG_VALUE,c=a.ERR_INVALID_RETURN_VALUE,f=a.ERR_MISSING_ARGS,d=r(5961),g=r(9539).inspect,A=r(9539).types,M=A.isPromise,p=A.isRegExp,w=Object.assign?Object.assign:r(8091).assign,B=Object.is?Object.is:r(609);function m(){var t=r(9158);o=t.isDeepEqual,s=t.isDeepStrictEqual}new Map;var E=!1,y=t.exports=C,b={};function I(t){if(t.message instanceof Error)throw t.message;throw new d(t)}function v(t,e,r,i){if(!r){var n=!1;if(0===e)n=!0,i="No value argument passed to `assert.ok()`";else if(i instanceof Error)throw i;var o=new d({actual:r,expected:!0,message:i,operator:"==",stackStartFn:t});throw o.generatedMessage=n,o}}function C(){for(var t=arguments.length,e=new Array(t),r=0;r1?r-1:0),n=1;n1?r-1:0),n=1;n1?r-1:0),n=1;n1?r-1:0),n=1;n{"use strict";var i=r(4155);function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){for(var r=0;rt.length)&&(r=t.length),t.substring(r-e.length,r)===e}var p="",w="",B="",m="",E={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"};function y(t){var e=Object.keys(t),r=Object.create(Object.getPrototypeOf(t));return e.forEach((function(e){r[e]=t[e]})),Object.defineProperty(r,"message",{value:t.message}),r}function b(t){return g(t,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}var I=function(t){function e(t){var r;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),"object"!==d(t)||null===t)throw new A("options","Object",t);var n=t.message,o=t.operator,h=t.stackStartFn,u=t.actual,l=t.expected,c=Error.stackTraceLimit;if(Error.stackTraceLimit=0,null!=n)r=s(this,f(e).call(this,String(n)));else if(i.stderr&&i.stderr.isTTY&&(i.stderr&&i.stderr.getColorDepth&&1!==i.stderr.getColorDepth()?(p="",w="",m="",B=""):(p="",w="",m="",B="")),"object"===d(u)&&null!==u&&"object"===d(l)&&null!==l&&"stack"in u&&u instanceof Error&&"stack"in l&&l instanceof Error&&(u=y(u),l=y(l)),"deepStrictEqual"===o||"strictEqual"===o)r=s(this,f(e).call(this,function(t,e,r){var n="",o="",s=0,a="",h=!1,u=b(t),l=u.split("\n"),c=b(e).split("\n"),f=0,g="";if("strictEqual"===r&&"object"===d(t)&&"object"===d(e)&&null!==t&&null!==e&&(r="strictEqualObject"),1===l.length&&1===c.length&&l[0]!==c[0]){var A=l[0].length+c[0].length;if(A<=10){if(!("object"===d(t)&&null!==t||"object"===d(e)&&null!==e||0===t&&0===e))return"".concat(E[r],"\n\n")+"".concat(l[0]," !== ").concat(c[0],"\n")}else if("strictEqualObject"!==r&&A<(i.stderr&&i.stderr.isTTY?i.stderr.columns:80)){for(;l[0][f]===c[0][f];)f++;f>2&&(g="\n ".concat(function(t,e){if(e=Math.floor(e),0==t.length||0==e)return"";var r=t.length*e;for(e=Math.floor(Math.log(e)/Math.log(2));e;)t+=t,e--;return t+t.substring(0,r-t.length)}(" ",f),"^"),f=0)}}for(var y=l[l.length-1],I=c[c.length-1];y===I&&(f++<2?a="\n ".concat(y).concat(a):n=y,l.pop(),c.pop(),0!==l.length&&0!==c.length);)y=l[l.length-1],I=c[c.length-1];var v=Math.max(l.length,c.length);if(0===v){var C=u.split("\n");if(C.length>30)for(C[26]="".concat(p,"...").concat(m);C.length>27;)C.pop();return"".concat(E.notIdentical,"\n\n").concat(C.join("\n"),"\n")}f>3&&(a="\n".concat(p,"...").concat(m).concat(a),h=!0),""!==n&&(a="\n ".concat(n).concat(a),n="");var Q=0,D=E[r]+"\n".concat(w,"+ actual").concat(m," ").concat(B,"- expected").concat(m),N=" ".concat(p,"...").concat(m," Lines skipped");for(f=0;f1&&f>2&&(R>4?(o+="\n".concat(p,"...").concat(m),h=!0):R>3&&(o+="\n ".concat(c[f-2]),Q++),o+="\n ".concat(c[f-1]),Q++),s=f,n+="\n".concat(B,"-").concat(m," ").concat(c[f]),Q++;else if(c.length1&&f>2&&(R>4?(o+="\n".concat(p,"...").concat(m),h=!0):R>3&&(o+="\n ".concat(l[f-2]),Q++),o+="\n ".concat(l[f-1]),Q++),s=f,o+="\n".concat(w,"+").concat(m," ").concat(l[f]),Q++;else{var G=c[f],U=l[f],V=U!==G&&(!M(U,",")||U.slice(0,-1)!==G);V&&M(G,",")&&G.slice(0,-1)===U&&(V=!1,U+=","),V?(R>1&&f>2&&(R>4?(o+="\n".concat(p,"...").concat(m),h=!0):R>3&&(o+="\n ".concat(l[f-2]),Q++),o+="\n ".concat(l[f-1]),Q++),s=f,o+="\n".concat(w,"+").concat(m," ").concat(U),n+="\n".concat(B,"-").concat(m," ").concat(G),Q+=2):(o+=n,n="",1!==R&&0!==f||(o+="\n ".concat(U),Q++))}if(Q>20&&f30)for(I[26]="".concat(p,"...").concat(m);I.length>27;)I.pop();r=1===I.length?s(this,f(e).call(this,"".concat(g," ").concat(I[0]))):s(this,f(e).call(this,"".concat(g,"\n\n").concat(I.join("\n"),"\n")))}else{var v=b(u),C="",Q=E[o];"notDeepEqual"===o||"notEqual"===o?(v="".concat(E[o],"\n\n").concat(v)).length>1024&&(v="".concat(v.slice(0,1021),"...")):(C="".concat(b(l)),v.length>512&&(v="".concat(v.slice(0,509),"...")),C.length>512&&(C="".concat(C.slice(0,509),"...")),"deepEqual"===o||"equal"===o?v="".concat(Q,"\n\n").concat(v,"\n\nshould equal\n\n"):C=" ".concat(o," ").concat(C)),r=s(this,f(e).call(this,"".concat(v).concat(C)))}return Error.stackTraceLimit=c,r.generatedMessage=!n,Object.defineProperty(a(r),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),r.code="ERR_ASSERTION",r.actual=u,r.expected=l,r.operator=o,Error.captureStackTrace&&Error.captureStackTrace(a(r),h),r.stack,r.name="AssertionError",s(r)}var r,h;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&c(t,e)}(e,t),r=e,(h=[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:g.custom,value:function(t,e){return g(this,function(t){for(var e=1;e{"use strict";function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function n(t){return(n=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function o(t,e){return(o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var s,a,h={};function u(t,e,r){r||(r=Error);var s=function(r){function s(r,o,a){var h;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,s),(h=function(t,e){return!e||"object"!==i(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}(this,n(s).call(this,function(t,r,i){return"string"==typeof e?e:e(t,r,i)}(r,o,a)))).code=t,h}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(s,r),s}(r);h[t]=s}function l(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map((function(t){return String(t)})),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}u("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError),u("ERR_INVALID_ARG_TYPE",(function(t,e,n){var o,a,h,u,c;if(void 0===s&&(s=r(9282)),s("string"==typeof t,"'name' must be a string"),"string"==typeof e&&(a="not ",e.substr(0,a.length)===a)?(o="must not be",e=e.replace(/^not /,"")):o="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t," argument"))h="The ".concat(t," ").concat(o," ").concat(l(e,"type"));else{var f=("number"!=typeof c&&(c=0),c+".".length>(u=t).length||-1===u.indexOf(".",c)?"argument":"property");h='The "'.concat(t,'" ').concat(f," ").concat(o," ").concat(l(e,"type"))}return h+". Received type ".concat(i(n))}),TypeError),u("ERR_INVALID_ARG_VALUE",(function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"is invalid";void 0===a&&(a=r(9539));var n=a.inspect(e);return n.length>128&&(n="".concat(n.slice(0,128),"...")),"The argument '".concat(t,"' ").concat(i,". Received ").concat(n)}),TypeError,RangeError),u("ERR_INVALID_RETURN_VALUE",(function(t,e,r){var n;return n=r&&r.constructor&&r.constructor.name?"instance of ".concat(r.constructor.name):"type ".concat(i(r)),"Expected ".concat(t,' to be returned from the "').concat(e,'"')+" function but got ".concat(n,".")}),TypeError),u("ERR_MISSING_ARGS",(function(){for(var t=arguments.length,e=new Array(t),i=0;i0,"At least one arg needs to be specified");var n="The ",o=e.length;switch(e=e.map((function(t){return'"'.concat(t,'"')})),o){case 1:n+="".concat(e[0]," argument");break;case 2:n+="".concat(e[0]," and ").concat(e[1]," arguments");break;default:n+=e.slice(0,o-1).join(", "),n+=", and ".concat(e[o-1]," arguments")}return"".concat(n," must be specified")}),TypeError),t.exports.codes=h},9158:(t,e,r)=>{"use strict";function i(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=[],i=!0,n=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(r.push(s.value),!e||r.length!==e);i=!0);}catch(t){n=!0,o=t}finally{try{i||null==a.return||a.return()}finally{if(n)throw o}}return r}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var o=void 0!==/a/g.flags,s=function(t){var e=[];return t.forEach((function(t){return e.push(t)})),e},a=function(t){var e=[];return t.forEach((function(t,r){return e.push([r,t])})),e},h=Object.is?Object.is:r(609),u=Object.getOwnPropertySymbols?Object.getOwnPropertySymbols:function(){return[]},l=Number.isNaN?Number.isNaN:r(360);function c(t){return t.call.bind(t)}var f=c(Object.prototype.hasOwnProperty),d=c(Object.prototype.propertyIsEnumerable),g=c(Object.prototype.toString),A=r(9539).types,M=A.isAnyArrayBuffer,p=A.isArrayBufferView,w=A.isDate,B=A.isMap,m=A.isRegExp,E=A.isSet,y=A.isNativeError,b=A.isBoxedPrimitive,I=A.isNumberObject,v=A.isStringObject,C=A.isBooleanObject,Q=A.isBigIntObject,D=A.isSymbolObject,N=A.isFloat32Array,R=A.isFloat64Array;function G(t){if(0===t.length||t.length>10)return!0;for(var e=0;e57)return!0}return 10===t.length&&t>=Math.pow(2,32)}function U(t){return Object.keys(t).filter(G).concat(u(t).filter(Object.prototype.propertyIsEnumerable.bind(t)))}function V(t,e){if(t===e)return 0;for(var r=t.length,i=e.length,n=0,o=Math.min(r,i);n{"use strict";var i=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"];t.exports=function(){for(var t=[],e=0;e{t.exports=r(5267)},5267:(t,e,r)=>{var i=r(8764).Buffer;const n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",o=(t,e)=>[Math.floor(t/e),t%e];t.exports={encode:t=>{"string"==typeof t&&(t=i.from(t));let e="";for(let r=0;r1){const i=(t[r]<<8)+t[r+1],[s,a]=o(i,2025),[h,u]=o(a,45);e+=n[u]+n[h]+n[s]}else{const[i,s]=o(t[r],45);e+=n[s]+n[i]}return e},decode:t=>{const e=Array.from(t).map((t=>n.indexOf(t))),r=[];for(let t=0;t=3){const i=e[t]+45*e[t+1]+45*e[t+2]*45;r.push(...o(i,256))}else{const i=e[t]+45*e[t+1];r.push(i)}return i.from(r)}}},9742:(t,e)=>{"use strict";e.byteLength=function(t){var e=h(t),r=e[0],i=e[1];return 3*(r+i)/4-i},e.toByteArray=function(t){var e,r,o=h(t),s=o[0],a=o[1],u=new n(function(t,e,r){return 3*(e+r)/4-r}(0,s,a)),l=0,c=a>0?s-4:s;for(r=0;r>16&255,u[l++]=e>>8&255,u[l++]=255&e;return 2===a&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,u[l++]=255&e),1===a&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,u[l++]=e>>8&255,u[l++]=255&e),u},e.fromByteArray=function(t){for(var e,i=t.length,n=i%3,o=[],s=16383,a=0,h=i-n;ah?h:a+s));return 1===n?(e=t[i-1],o.push(r[e>>2]+r[e<<4&63]+"==")):2===n&&(e=(t[i-2]<<8)+t[i-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),o.join("")};for(var r=[],i=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,a=o.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,i){for(var n,o,s=[],a=e;a>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},4431:function(t,e,r){var i;!function(n){"use strict";var o,s=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,a=Math.ceil,h=Math.floor,u="[BigNumber Error] ",l=u+"Number primitive has more than 15 significant digits: ",c=1e14,f=14,d=9007199254740991,g=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],A=1e7,M=1e9;function p(t){var e=0|t;return t>0||t===e?e:e-1}function w(t){for(var e,r,i=1,n=t.length,o=t[0]+"";iu^r?1:-1;for(a=(h=n.length)<(u=o.length)?h:u,s=0;so[s]^r?1:-1;return h==u?0:h>u^r?1:-1}function m(t,e,r,i){if(tr||t!==h(t))throw Error(u+(i||"Argument")+("number"==typeof t?tr?" out of range: ":" not an integer: ":" not a primitive number: ")+String(t))}function E(t){var e=t.c.length-1;return p(t.e/f)==e&&t.c[e]%2!=0}function y(t,e){return(t.length>1?t.charAt(0)+"."+t.slice(1):t)+(e<0?"e":"e+")+e}function b(t,e,r){var i,n;if(e<0){for(n=r+".";++e;n+=r);t=n+t}else if(++e>(i=t.length)){for(n=r,e-=i;--e;n+=r);t+=n}else ek?p.c=p.e=null:t.e=10;c/=10,u++);return void(u>k?p.c=p.e=null:(p.e=u,p.c=[t]))}M=String(t)}else{if(!s.test(M=String(t)))return n(p,M,g);p.s=45==M.charCodeAt(0)?(M=M.slice(1),-1):1}(u=M.indexOf("."))>-1&&(M=M.replace(".","")),(c=M.search(/e/i))>0?(u<0&&(u=c),u+=+M.slice(c+1),M=M.substring(0,c)):u<0&&(u=M.length)}else{if(m(e,2,x.length,"Base"),10==e)return W(p=new z(t),U+p.e+1,V);if(M=String(t),g="number"==typeof t){if(0*t!=0)return n(p,M,g,e);if(p.s=1/t<0?(M=M.slice(1),-1):1,z.DEBUG&&M.replace(/^0\.0*|\./,"").length>15)throw Error(l+t)}else p.s=45===M.charCodeAt(0)?(M=M.slice(1),-1):1;for(r=x.slice(0,e),u=c=0,A=M.length;cu){u=A;continue}}else if(!a&&(M==M.toUpperCase()&&(M=M.toLowerCase())||M==M.toLowerCase()&&(M=M.toUpperCase()))){a=!0,c=-1,u=0;continue}return n(p,String(t),g,e)}g=!1,(u=(M=i(M,e,10,p.s)).indexOf("."))>-1?M=M.replace(".",""):u=M.length}for(c=0;48===M.charCodeAt(c);c++);for(A=M.length;48===M.charCodeAt(--A););if(M=M.slice(c,++A)){if(A-=c,g&&z.DEBUG&&A>15&&(t>d||t!==h(t)))throw Error(l+p.s*t);if((u=u-c-1)>k)p.c=p.e=null;else if(u=T)?y(h,s):b(h,s,"0");else if(o=(t=W(new z(t),e,r)).e,a=(h=w(t.c)).length,1==i||2==i&&(e<=o||o<=S)){for(;aa){if(--e>0)for(h+=".";e--;h+="0");}else if((e+=o-a)>0)for(o+1==a&&(h+=".");e--;h+="0");return t.s<0&&n?"-"+h:h}function H(t,e){for(var r,i=1,n=new z(t[0]);i=10;n/=10,i++);return(r=i+r*f-1)>k?t.c=t.e=null:r=10;u/=10,n++);if((o=e-n)<0)o+=f,s=e,A=(l=M[d=0])/p[n-s-1]%10|0;else if((d=a((o+1)/f))>=M.length){if(!i)break t;for(;M.length<=d;M.push(0));l=A=0,n=1,s=(o%=f)-f+1}else{for(l=u=M[d],n=1;u>=10;u/=10,n++);A=(s=(o%=f)-f+n)<0?0:l/p[n-s-1]%10|0}if(i=i||e<0||null!=M[d+1]||(s<0?l:l%p[n-s-1]),i=r<4?(A||i)&&(0==r||r==(t.s<0?3:2)):A>5||5==A&&(4==r||i||6==r&&(o>0?s>0?l/p[n-s]:0:M[d-1])%10&1||r==(t.s<0?8:7)),e<1||!M[0])return M.length=0,i?(e-=t.e+1,M[0]=p[(f-e%f)%f],t.e=-e||0):M[0]=t.e=0,t;if(0==o?(M.length=d,u=1,d--):(M.length=d+1,u=p[f-o],M[d]=s>0?h(l/p[n-s]%p[s])*u:0),i)for(;;){if(0==d){for(o=1,s=M[0];s>=10;s/=10,o++);for(s=M[0]+=u,u=1;s>=10;s/=10,u++);o!=u&&(t.e++,M[0]==c&&(M[0]=1));break}if(M[d]+=u,M[d]!=c)break;M[d--]=0,u=1}for(o=M.length;0===M[--o];M.pop());}t.e>k?t.c=t.e=null:t.e=T?y(e,r):b(e,r,"0"),t.s<0?"-"+e:e)}return z.clone=t,z.ROUND_UP=0,z.ROUND_DOWN=1,z.ROUND_CEIL=2,z.ROUND_FLOOR=3,z.ROUND_HALF_UP=4,z.ROUND_HALF_DOWN=5,z.ROUND_HALF_EVEN=6,z.ROUND_HALF_CEIL=7,z.ROUND_HALF_FLOOR=8,z.EUCLID=9,z.config=z.set=function(t){var e,r;if(null!=t){if("object"!=typeof t)throw Error(u+"Object expected: "+t);if(t.hasOwnProperty(e="DECIMAL_PLACES")&&(m(r=t[e],0,M,e),U=r),t.hasOwnProperty(e="ROUNDING_MODE")&&(m(r=t[e],0,8,e),V=r),t.hasOwnProperty(e="EXPONENTIAL_AT")&&((r=t[e])&&r.pop?(m(r[0],-M,0,e),m(r[1],0,M,e),S=r[0],T=r[1]):(m(r,-M,M,e),S=-(T=r<0?-r:r))),t.hasOwnProperty(e="RANGE"))if((r=t[e])&&r.pop)m(r[0],-M,-1,e),m(r[1],1,M,e),Y=r[0],k=r[1];else{if(m(r,-M,M,e),!r)throw Error(u+e+" cannot be zero: "+r);Y=-(k=r<0?-r:r)}if(t.hasOwnProperty(e="CRYPTO")){if((r=t[e])!==!!r)throw Error(u+e+" not true or false: "+r);if(r){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw F=!r,Error(u+"crypto unavailable");F=r}else F=r}if(t.hasOwnProperty(e="MODULO_MODE")&&(m(r=t[e],0,9,e),L=r),t.hasOwnProperty(e="POW_PRECISION")&&(m(r=t[e],0,M,e),j=r),t.hasOwnProperty(e="FORMAT")){if("object"!=typeof(r=t[e]))throw Error(u+e+" not an object: "+r);Z=r}if(t.hasOwnProperty(e="ALPHABET")){if("string"!=typeof(r=t[e])||/^.?$|[+\-.\s]|(.).*\1/.test(r))throw Error(u+e+" invalid: "+r);x=r}}return{DECIMAL_PLACES:U,ROUNDING_MODE:V,EXPONENTIAL_AT:[S,T],RANGE:[Y,k],CRYPTO:F,MODULO_MODE:L,POW_PRECISION:j,FORMAT:Z,ALPHABET:x}},z.isBigNumber=function(t){if(!t||!0!==t._isBigNumber)return!1;if(!z.DEBUG)return!0;var e,r,i=t.c,n=t.e,o=t.s;t:if("[object Array]"=={}.toString.call(i)){if((1===o||-1===o)&&n>=-M&&n<=M&&n===h(n)){if(0===i[0]){if(0===n&&1===i.length)return!0;break t}if((e=(n+1)%f)<1&&(e+=f),String(i[0]).length==e){for(e=0;e=c||r!==h(r))break t;if(0!==r)return!0}}}else if(null===i&&null===n&&(null===o||1===o||-1===o))return!0;throw Error(u+"Invalid BigNumber: "+t)},z.maximum=z.max=function(){return H(arguments,R.lt)},z.minimum=z.min=function(){return H(arguments,R.gt)},z.random=(o=9007199254740992,I=Math.random()*o&2097151?function(){return h(Math.random()*o)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(t){var e,r,i,n,o,s=0,l=[],c=new z(G);if(null==t?t=U:m(t,0,M),n=a(t/f),F)if(crypto.getRandomValues){for(e=crypto.getRandomValues(new Uint32Array(n*=2));s>>11))>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),e[s]=r[0],e[s+1]=r[1]):(l.push(o%1e14),s+=2);s=n/2}else{if(!crypto.randomBytes)throw F=!1,Error(u+"crypto unavailable");for(e=crypto.randomBytes(n*=7);s=9e15?crypto.randomBytes(7).copy(e,s):(l.push(o%1e14),s+=7);s=n/7}if(!F)for(;s=10;o/=10,s++);sr-1&&(null==s[n+1]&&(s[n+1]=0),s[n+1]+=s[n]/r|0,s[n]%=r)}return s.reverse()}return function(i,n,o,s,a){var h,u,l,c,f,d,g,A,M=i.indexOf("."),p=U,B=V;for(M>=0&&(c=j,j=0,i=i.replace(".",""),d=(A=new z(n)).pow(i.length-M),j=c,A.c=e(b(w(d.c),d.e,"0"),10,o,t),A.e=A.c.length),l=c=(g=e(i,n,o,a?(h=x,t):(h=t,x))).length;0==g[--c];g.pop());if(!g[0])return h.charAt(0);if(M<0?--l:(d.c=g,d.e=l,d.s=s,g=(d=r(d,A,p,B,o)).c,f=d.r,l=d.e),M=g[u=l+p+1],c=o/2,f=f||u<0||null!=g[u+1],f=B<4?(null!=M||f)&&(0==B||B==(d.s<0?3:2)):M>c||M==c&&(4==B||f||6==B&&1&g[u-1]||B==(d.s<0?8:7)),u<1||!g[0])i=f?b(h.charAt(1),-p,h.charAt(0)):h.charAt(0);else{if(g.length=u,f)for(--o;++g[--u]>o;)g[u]=0,u||(++l,g=[1].concat(g));for(c=g.length;!g[--c];);for(M=0,i="";M<=c;i+=h.charAt(g[M++]));i=b(i,l,h.charAt(0))}return i}}(),r=function(){function t(t,e,r){var i,n,o,s,a=0,h=t.length,u=e%A,l=e/A|0;for(t=t.slice();h--;)a=((n=u*(o=t[h]%A)+(i=l*o+(s=t[h]/A|0)*u)%A*A+a)/r|0)+(i/A|0)+l*s,t[h]=n%r;return a&&(t=[a].concat(t)),t}function e(t,e,r,i){var n,o;if(r!=i)o=r>i?1:-1;else for(n=o=0;ne[n]?1:-1;break}return o}function r(t,e,r,i){for(var n=0;r--;)t[r]-=n,n=t[r]1;t.splice(0,1));}return function(i,n,o,s,a){var u,l,d,g,A,M,w,B,m,E,y,b,I,v,C,Q,D,N=i.s==n.s?1:-1,R=i.c,G=n.c;if(!(R&&R[0]&&G&&G[0]))return new z(i.s&&n.s&&(R?!G||R[0]!=G[0]:G)?R&&0==R[0]||!G?0*N:N/0:NaN);for(m=(B=new z(N)).c=[],N=o+(l=i.e-n.e)+1,a||(a=c,l=p(i.e/f)-p(n.e/f),N=N/f|0),d=0;G[d]==(R[d]||0);d++);if(G[d]>(R[d]||0)&&l--,N<0)m.push(1),g=!0;else{for(v=R.length,Q=G.length,d=0,N+=2,(A=h(a/(G[0]+1)))>1&&(G=t(G,A,a),R=t(R,A,a),Q=G.length,v=R.length),I=Q,y=(E=R.slice(0,Q)).length;y=a/2&&C++;do{if(A=0,(u=e(G,E,Q,y))<0){if(b=E[0],Q!=y&&(b=b*a+(E[1]||0)),(A=h(b/C))>1)for(A>=a&&(A=a-1),w=(M=t(G,A,a)).length,y=E.length;1==e(M,E,w,y);)A--,r(M,Q=10;N/=10,d++);W(B,o+(B.e=d+l*f-1)+1,s,g)}else B.e=l,B.r=+g;return B}}(),v=/^(-?)0([xbo])(?=\w[\w.]*$)/i,C=/^([^.]+)\.$/,Q=/^\.([^.]+)$/,D=/^-?(Infinity|NaN)$/,N=/^\s*\+(?=[\w.])|^\s+|\s+$/g,n=function(t,e,r,i){var n,o=r?e:e.replace(N,"");if(D.test(o))t.s=isNaN(o)?null:o<0?-1:1;else{if(!r&&(o=o.replace(v,(function(t,e,r){return n="x"==(r=r.toLowerCase())?16:"b"==r?2:8,i&&i!=n?t:e})),i&&(n=i,o=o.replace(C,"$1").replace(Q,"0.$1")),e!=o))return new z(o,n);if(z.DEBUG)throw Error(u+"Not a"+(i?" base "+i:"")+" number: "+e);t.s=null}t.c=t.e=null},R.absoluteValue=R.abs=function(){var t=new z(this);return t.s<0&&(t.s=1),t},R.comparedTo=function(t,e){return B(this,new z(t,e))},R.decimalPlaces=R.dp=function(t,e){var r,i,n,o=this;if(null!=t)return m(t,0,M),null==e?e=V:m(e,0,8),W(new z(o),t+o.e+1,e);if(!(r=o.c))return null;if(i=((n=r.length-1)-p(this.e/f))*f,n=r[n])for(;n%10==0;n/=10,i--);return i<0&&(i=0),i},R.dividedBy=R.div=function(t,e){return r(this,new z(t,e),U,V)},R.dividedToIntegerBy=R.idiv=function(t,e){return r(this,new z(t,e),0,1)},R.exponentiatedBy=R.pow=function(t,e){var r,i,n,o,s,l,c,d,g=this;if((t=new z(t)).c&&!t.isInteger())throw Error(u+"Exponent not an integer: "+J(t));if(null!=e&&(e=new z(e)),s=t.e>14,!g.c||!g.c[0]||1==g.c[0]&&!g.e&&1==g.c.length||!t.c||!t.c[0])return d=new z(Math.pow(+J(g),s?2-E(t):+J(t))),e?d.mod(e):d;if(l=t.s<0,e){if(e.c?!e.c[0]:!e.s)return new z(NaN);(i=!l&&g.isInteger()&&e.isInteger())&&(g=g.mod(e))}else{if(t.e>9&&(g.e>0||g.e<-1||(0==g.e?g.c[0]>1||s&&g.c[1]>=24e7:g.c[0]<8e13||s&&g.c[0]<=9999975e7)))return o=g.s<0&&E(t)?-0:0,g.e>-1&&(o=1/o),new z(l?1/o:o);j&&(o=a(j/f+2))}for(s?(r=new z(.5),l&&(t.s=1),c=E(t)):c=(n=Math.abs(+J(t)))%2,d=new z(G);;){if(c){if(!(d=d.times(g)).c)break;o?d.c.length>o&&(d.c.length=o):i&&(d=d.mod(e))}if(n){if(0===(n=h(n/2)))break;c=n%2}else if(W(t=t.times(r),t.e+1,1),t.e>14)c=E(t);else{if(0==(n=+J(t)))break;c=n%2}g=g.times(g),o?g.c&&g.c.length>o&&(g.c.length=o):i&&(g=g.mod(e))}return i?d:(l&&(d=G.div(d)),e?d.mod(e):o?W(d,j,V,void 0):d)},R.integerValue=function(t){var e=new z(this);return null==t?t=V:m(t,0,8),W(e,e.e+1,t)},R.isEqualTo=R.eq=function(t,e){return 0===B(this,new z(t,e))},R.isFinite=function(){return!!this.c},R.isGreaterThan=R.gt=function(t,e){return B(this,new z(t,e))>0},R.isGreaterThanOrEqualTo=R.gte=function(t,e){return 1===(e=B(this,new z(t,e)))||0===e},R.isInteger=function(){return!!this.c&&p(this.e/f)>this.c.length-2},R.isLessThan=R.lt=function(t,e){return B(this,new z(t,e))<0},R.isLessThanOrEqualTo=R.lte=function(t,e){return-1===(e=B(this,new z(t,e)))||0===e},R.isNaN=function(){return!this.s},R.isNegative=function(){return this.s<0},R.isPositive=function(){return this.s>0},R.isZero=function(){return!!this.c&&0==this.c[0]},R.minus=function(t,e){var r,i,n,o,s=this,a=s.s;if(e=(t=new z(t,e)).s,!a||!e)return new z(NaN);if(a!=e)return t.s=-e,s.plus(t);var h=s.e/f,u=t.e/f,l=s.c,d=t.c;if(!h||!u){if(!l||!d)return l?(t.s=-e,t):new z(d?s:NaN);if(!l[0]||!d[0])return d[0]?(t.s=-e,t):new z(l[0]?s:3==V?-0:0)}if(h=p(h),u=p(u),l=l.slice(),a=h-u){for((o=a<0)?(a=-a,n=l):(u=h,n=d),n.reverse(),e=a;e--;n.push(0));n.reverse()}else for(i=(o=(a=l.length)<(e=d.length))?a:e,a=e=0;e0)for(;e--;l[r++]=0);for(e=c-1;i>a;){if(l[--i]=0;){for(r=0,g=b[n]%m,M=b[n]/m|0,o=n+(s=h);o>n;)r=((u=g*(u=y[--s]%m)+(a=M*u+(l=y[s]/m|0)*g)%m*m+w[o]+r)/B|0)+(a/m|0)+M*l,w[o--]=u%B;w[o]=r}return r?++i:w.splice(0,1),_(t,w,i)},R.negated=function(){var t=new z(this);return t.s=-t.s||null,t},R.plus=function(t,e){var r,i=this,n=i.s;if(e=(t=new z(t,e)).s,!n||!e)return new z(NaN);if(n!=e)return t.s=-e,i.minus(t);var o=i.e/f,s=t.e/f,a=i.c,h=t.c;if(!o||!s){if(!a||!h)return new z(n/0);if(!a[0]||!h[0])return h[0]?t:new z(a[0]?i:0*n)}if(o=p(o),s=p(s),a=a.slice(),n=o-s){for(n>0?(s=o,r=h):(n=-n,r=a),r.reverse();n--;r.push(0));r.reverse()}for((n=a.length)-(e=h.length)<0&&(r=h,h=a,a=r,e=n),n=0;e;)n=(a[--e]=a[e]+h[e]+n)/c|0,a[e]=c===a[e]?0:a[e]%c;return n&&(a=[n].concat(a),++s),_(t,a,s)},R.precision=R.sd=function(t,e){var r,i,n,o=this;if(null!=t&&t!==!!t)return m(t,1,M),null==e?e=V:m(e,0,8),W(new z(o),t,e);if(!(r=o.c))return null;if(i=(n=r.length-1)*f+1,n=r[n]){for(;n%10==0;n/=10,i--);for(n=r[0];n>=10;n/=10,i++);}return t&&o.e+1>i&&(i=o.e+1),i},R.shiftedBy=function(t){return m(t,-9007199254740991,d),this.times("1e"+t)},R.squareRoot=R.sqrt=function(){var t,e,i,n,o,s=this,a=s.c,h=s.s,u=s.e,l=U+4,c=new z("0.5");if(1!==h||!a||!a[0])return new z(!h||h<0&&(!a||a[0])?NaN:a?s:1/0);if(0==(h=Math.sqrt(+J(s)))||h==1/0?(((e=w(a)).length+u)%2==0&&(e+="0"),h=Math.sqrt(+e),u=p((u+1)/2)-(u<0||u%2),i=new z(e=h==1/0?"5e"+u:(e=h.toExponential()).slice(0,e.indexOf("e")+1)+u)):i=new z(h+""),i.c[0])for((h=(u=i.e)+l)<3&&(h=0);;)if(o=i,i=c.times(o.plus(r(s,o,l,1))),w(o.c).slice(0,h)===(e=w(i.c)).slice(0,h)){if(i.e0&&A>0){for(o=A%a||a,c=g.substr(0,o);o0&&(c+=l+g.slice(o)),d&&(c="-"+c)}i=f?c+(r.decimalSeparator||"")+((h=+r.fractionGroupSize)?f.replace(new RegExp("\\d{"+h+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):f):c}return(r.prefix||"")+i+(r.suffix||"")},R.toFraction=function(t){var e,i,n,o,s,a,h,l,c,d,A,M,p=this,B=p.c;if(null!=t&&(!(h=new z(t)).isInteger()&&(h.c||1!==h.s)||h.lt(G)))throw Error(u+"Argument "+(h.isInteger()?"out of range: ":"not an integer: ")+J(h));if(!B)return new z(p);for(e=new z(G),c=i=new z(G),n=l=new z(G),M=w(B),s=e.e=M.length-p.e-1,e.c[0]=g[(a=s%f)<0?f+a:a],t=!t||h.comparedTo(e)>0?s>0?e:c:h,a=k,k=1/0,h=new z(M),l.c[0]=0;d=r(h,e,0,1),1!=(o=i.plus(d.times(n))).comparedTo(t);)i=n,n=o,c=l.plus(d.times(o=c)),l=o,e=h.minus(d.times(o=e)),h=o;return o=r(t.minus(i),n,0,1),l=l.plus(o.times(c)),i=i.plus(o.times(n)),l.s=c.s=p.s,A=r(c,n,s*=2,V).minus(p).abs().comparedTo(r(l,i,s,V).minus(p).abs())<1?[c,n]:[l,i],k=a,A},R.toNumber=function(){return+J(this)},R.toPrecision=function(t,e){return null!=t&&m(t,1,M),O(this,t,e,2)},R.toString=function(t){var e,r=this,n=r.s,o=r.e;return null===o?n?(e="Infinity",n<0&&(e="-"+e)):e="NaN":(null==t?e=o<=S||o>=T?y(w(r.c),o):b(w(r.c),o,"0"):10===t?e=b(w((r=W(new z(r),U+o+1,V)).c),r.e,"0"):(m(t,2,x.length,"Base"),e=i(b(w(r.c),o,"0"),10,t,n,!0)),n<0&&r.c[0]&&(e="-"+e)),e},R.valueOf=R.toJSON=function(){return J(this)},R._isBigNumber=!0,null!=e&&z.set(e),z}()).default=o.BigNumber=o,void 0===(i=function(){return o}.call(e,r,e,t))||(t.exports=i)}()},3550:function(t,e,r){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(6601).Buffer}catch(t){}function a(t,e){var r=t.charCodeAt(e);return r>=48&&r<=57?r-48:r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:void i(!1,"Invalid character in "+t)}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,n){for(var o=0,s=0,a=Math.min(t.length,r),h=e;h=49?u-49+10:u>=17?u-17+10:u,i(u>=0&&s0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this._strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this._strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=c}catch(t){o.prototype.inspect=c}else o.prototype.inspect=c;function c(){return(this.red?""}var f=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],g=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function A(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,c=67108863&h,f=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=f;d++){var g=u-d|0;l+=(s=(n=0|t.words[g])*(o=0|e.words[d])+c)/67108864|0,c=67108863&s}r.words[u]=0|c,h=0|l}return 0!==h?r.words[u]=0|h:r.length--,r._strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?f[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=d[t],l=g[t];r="";var c=this.clone();for(c.negative=0;!c.isZero();){var A=c.modrn(l).toString(t);r=(c=c.idivn(l)).isZero()?A+r:f[u-A.length]+A+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16,2)},s&&(o.prototype.toBuffer=function(t,e){return this.toArrayLike(s,t,e)}),o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){this._strip();var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0");var s=function(t,e){return t.allocUnsafe?t.allocUnsafe(e):new t(e)}(t,o);return this["_toArrayLike"+("le"===e?"LE":"BE")](s,n),s},o.prototype._toArrayLikeLE=function(t,e){for(var r=0,i=0,n=0,o=0;n>8&255),r>16&255),6===o?(r>24&255),i=0,o=0):(i=s>>>24,o+=2)}if(r=0&&(t[r--]=s>>8&255),r>=0&&(t[r--]=s>>16&255),6===o?(r>=0&&(t[r--]=s>>24&255),i=0,o=0):(i=s>>>24,o+=2)}if(r>=0)for(t[r--]=i;r>=0;)t[r--]=0},Math.clz32?o.prototype._countBits=function(t){return 32-Math.clz32(t)}:o.prototype._countBits=function(t){var e=t,r=0;return e>=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this._strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],g=8191&d,A=d>>>13,M=0|s[2],p=8191&M,w=M>>>13,B=0|s[3],m=8191&B,E=B>>>13,y=0|s[4],b=8191&y,I=y>>>13,v=0|s[5],C=8191&v,Q=v>>>13,D=0|s[6],N=8191&D,R=D>>>13,G=0|s[7],U=8191&G,V=G>>>13,S=0|s[8],T=8191&S,Y=S>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,x=j>>>13,z=0|a[1],O=8191&z,H=z>>>13,_=0|a[2],W=8191&_,J=_>>>13,X=0|a[3],P=8191&X,K=X>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,lt=0|a[8],ct=8191<,ft=lt>>>13,dt=0|a[9],gt=8191&dt,At=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(c,Z))|0)+((8191&(n=(n=Math.imul(c,x))+Math.imul(f,Z)|0))<<13)|0;u=((o=Math.imul(f,x))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(g,Z),n=(n=Math.imul(g,x))+Math.imul(A,Z)|0,o=Math.imul(A,x);var pt=(u+(i=i+Math.imul(c,O)|0)|0)+((8191&(n=(n=n+Math.imul(c,H)|0)+Math.imul(f,O)|0))<<13)|0;u=((o=o+Math.imul(f,H)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,x))+Math.imul(w,Z)|0,o=Math.imul(w,x),i=i+Math.imul(g,O)|0,n=(n=n+Math.imul(g,H)|0)+Math.imul(A,O)|0,o=o+Math.imul(A,H)|0;var wt=(u+(i=i+Math.imul(c,W)|0)|0)+((8191&(n=(n=n+Math.imul(c,J)|0)+Math.imul(f,W)|0))<<13)|0;u=((o=o+Math.imul(f,J)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(m,Z),n=(n=Math.imul(m,x))+Math.imul(E,Z)|0,o=Math.imul(E,x),i=i+Math.imul(p,O)|0,n=(n=n+Math.imul(p,H)|0)+Math.imul(w,O)|0,o=o+Math.imul(w,H)|0,i=i+Math.imul(g,W)|0,n=(n=n+Math.imul(g,J)|0)+Math.imul(A,W)|0,o=o+Math.imul(A,J)|0;var Bt=(u+(i=i+Math.imul(c,P)|0)|0)+((8191&(n=(n=n+Math.imul(c,K)|0)+Math.imul(f,P)|0))<<13)|0;u=((o=o+Math.imul(f,K)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,x))+Math.imul(I,Z)|0,o=Math.imul(I,x),i=i+Math.imul(m,O)|0,n=(n=n+Math.imul(m,H)|0)+Math.imul(E,O)|0,o=o+Math.imul(E,H)|0,i=i+Math.imul(p,W)|0,n=(n=n+Math.imul(p,J)|0)+Math.imul(w,W)|0,o=o+Math.imul(w,J)|0,i=i+Math.imul(g,P)|0,n=(n=n+Math.imul(g,K)|0)+Math.imul(A,P)|0,o=o+Math.imul(A,K)|0;var mt=(u+(i=i+Math.imul(c,$)|0)|0)+((8191&(n=(n=n+Math.imul(c,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,x))+Math.imul(Q,Z)|0,o=Math.imul(Q,x),i=i+Math.imul(b,O)|0,n=(n=n+Math.imul(b,H)|0)+Math.imul(I,O)|0,o=o+Math.imul(I,H)|0,i=i+Math.imul(m,W)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,J)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,K)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,K)|0,i=i+Math.imul(g,$)|0,n=(n=n+Math.imul(g,tt)|0)+Math.imul(A,$)|0,o=o+Math.imul(A,tt)|0;var Et=(u+(i=i+Math.imul(c,rt)|0)|0)+((8191&(n=(n=n+Math.imul(c,it)|0)+Math.imul(f,rt)|0))<<13)|0;u=((o=o+Math.imul(f,it)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,Z),n=(n=Math.imul(N,x))+Math.imul(R,Z)|0,o=Math.imul(R,x),i=i+Math.imul(C,O)|0,n=(n=n+Math.imul(C,H)|0)+Math.imul(Q,O)|0,o=o+Math.imul(Q,H)|0,i=i+Math.imul(b,W)|0,n=(n=n+Math.imul(b,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,i=i+Math.imul(m,P)|0,n=(n=n+Math.imul(m,K)|0)+Math.imul(E,P)|0,o=o+Math.imul(E,K)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(g,rt)|0,n=(n=n+Math.imul(g,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0;var yt=(u+(i=i+Math.imul(c,ot)|0)|0)+((8191&(n=(n=n+Math.imul(c,st)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(U,Z),n=(n=Math.imul(U,x))+Math.imul(V,Z)|0,o=Math.imul(V,x),i=i+Math.imul(N,O)|0,n=(n=n+Math.imul(N,H)|0)+Math.imul(R,O)|0,o=o+Math.imul(R,H)|0,i=i+Math.imul(C,W)|0,n=(n=n+Math.imul(C,J)|0)+Math.imul(Q,W)|0,o=o+Math.imul(Q,J)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,K)|0)+Math.imul(I,P)|0,o=o+Math.imul(I,K)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(g,ot)|0,n=(n=n+Math.imul(g,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0;var bt=(u+(i=i+Math.imul(c,ht)|0)|0)+((8191&(n=(n=n+Math.imul(c,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,x))+Math.imul(Y,Z)|0,o=Math.imul(Y,x),i=i+Math.imul(U,O)|0,n=(n=n+Math.imul(U,H)|0)+Math.imul(V,O)|0,o=o+Math.imul(V,H)|0,i=i+Math.imul(N,W)|0,n=(n=n+Math.imul(N,J)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,J)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,K)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,K)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,tt)|0,i=i+Math.imul(m,rt)|0,n=(n=n+Math.imul(m,it)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(g,ht)|0,n=(n=n+Math.imul(g,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0;var It=(u+(i=i+Math.imul(c,ct)|0)|0)+((8191&(n=(n=n+Math.imul(c,ft)|0)+Math.imul(f,ct)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,x))+Math.imul(L,Z)|0,o=Math.imul(L,x),i=i+Math.imul(T,O)|0,n=(n=n+Math.imul(T,H)|0)+Math.imul(Y,O)|0,o=o+Math.imul(Y,H)|0,i=i+Math.imul(U,W)|0,n=(n=n+Math.imul(U,J)|0)+Math.imul(V,W)|0,o=o+Math.imul(V,J)|0,i=i+Math.imul(N,P)|0,n=(n=n+Math.imul(N,K)|0)+Math.imul(R,P)|0,o=o+Math.imul(R,K)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,it)|0,i=i+Math.imul(m,ot)|0,n=(n=n+Math.imul(m,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(g,ct)|0,n=(n=n+Math.imul(g,ft)|0)+Math.imul(A,ct)|0,o=o+Math.imul(A,ft)|0;var vt=(u+(i=i+Math.imul(c,gt)|0)|0)+((8191&(n=(n=n+Math.imul(c,At)|0)+Math.imul(f,gt)|0))<<13)|0;u=((o=o+Math.imul(f,At)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,O),n=(n=Math.imul(F,H))+Math.imul(L,O)|0,o=Math.imul(L,H),i=i+Math.imul(T,W)|0,n=(n=n+Math.imul(T,J)|0)+Math.imul(Y,W)|0,o=o+Math.imul(Y,J)|0,i=i+Math.imul(U,P)|0,n=(n=n+Math.imul(U,K)|0)+Math.imul(V,P)|0,o=o+Math.imul(V,K)|0,i=i+Math.imul(N,$)|0,n=(n=n+Math.imul(N,tt)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,i=i+Math.imul(m,ht)|0,n=(n=n+Math.imul(m,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,i=i+Math.imul(p,ct)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(w,ct)|0,o=o+Math.imul(w,ft)|0;var Ct=(u+(i=i+Math.imul(g,gt)|0)|0)+((8191&(n=(n=n+Math.imul(g,At)|0)+Math.imul(A,gt)|0))<<13)|0;u=((o=o+Math.imul(A,At)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,W),n=(n=Math.imul(F,J))+Math.imul(L,W)|0,o=Math.imul(L,J),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,K)|0)+Math.imul(Y,P)|0,o=o+Math.imul(Y,K)|0,i=i+Math.imul(U,$)|0,n=(n=n+Math.imul(U,tt)|0)+Math.imul(V,$)|0,o=o+Math.imul(V,tt)|0,i=i+Math.imul(N,rt)|0,n=(n=n+Math.imul(N,it)|0)+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,ut)|0,i=i+Math.imul(m,ct)|0,n=(n=n+Math.imul(m,ft)|0)+Math.imul(E,ct)|0,o=o+Math.imul(E,ft)|0;var Qt=(u+(i=i+Math.imul(p,gt)|0)|0)+((8191&(n=(n=n+Math.imul(p,At)|0)+Math.imul(w,gt)|0))<<13)|0;u=((o=o+Math.imul(w,At)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,K))+Math.imul(L,P)|0,o=Math.imul(L,K),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(Y,$)|0,o=o+Math.imul(Y,tt)|0,i=i+Math.imul(U,rt)|0,n=(n=n+Math.imul(U,it)|0)+Math.imul(V,rt)|0,o=o+Math.imul(V,it)|0,i=i+Math.imul(N,ot)|0,n=(n=n+Math.imul(N,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(b,ct)|0,n=(n=n+Math.imul(b,ft)|0)+Math.imul(I,ct)|0,o=o+Math.imul(I,ft)|0;var Dt=(u+(i=i+Math.imul(m,gt)|0)|0)+((8191&(n=(n=n+Math.imul(m,At)|0)+Math.imul(E,gt)|0))<<13)|0;u=((o=o+Math.imul(E,At)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(Y,rt)|0,o=o+Math.imul(Y,it)|0,i=i+Math.imul(U,ot)|0,n=(n=n+Math.imul(U,st)|0)+Math.imul(V,ot)|0,o=o+Math.imul(V,st)|0,i=i+Math.imul(N,ht)|0,n=(n=n+Math.imul(N,ut)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,ut)|0,i=i+Math.imul(C,ct)|0,n=(n=n+Math.imul(C,ft)|0)+Math.imul(Q,ct)|0,o=o+Math.imul(Q,ft)|0;var Nt=(u+(i=i+Math.imul(b,gt)|0)|0)+((8191&(n=(n=n+Math.imul(b,At)|0)+Math.imul(I,gt)|0))<<13)|0;u=((o=o+Math.imul(I,At)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(Y,ot)|0,o=o+Math.imul(Y,st)|0,i=i+Math.imul(U,ht)|0,n=(n=n+Math.imul(U,ut)|0)+Math.imul(V,ht)|0,o=o+Math.imul(V,ut)|0,i=i+Math.imul(N,ct)|0,n=(n=n+Math.imul(N,ft)|0)+Math.imul(R,ct)|0,o=o+Math.imul(R,ft)|0;var Rt=(u+(i=i+Math.imul(C,gt)|0)|0)+((8191&(n=(n=n+Math.imul(C,At)|0)+Math.imul(Q,gt)|0))<<13)|0;u=((o=o+Math.imul(Q,At)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(Y,ht)|0,o=o+Math.imul(Y,ut)|0,i=i+Math.imul(U,ct)|0,n=(n=n+Math.imul(U,ft)|0)+Math.imul(V,ct)|0,o=o+Math.imul(V,ft)|0;var Gt=(u+(i=i+Math.imul(N,gt)|0)|0)+((8191&(n=(n=n+Math.imul(N,At)|0)+Math.imul(R,gt)|0))<<13)|0;u=((o=o+Math.imul(R,At)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,ct)|0,n=(n=n+Math.imul(T,ft)|0)+Math.imul(Y,ct)|0,o=o+Math.imul(Y,ft)|0;var Ut=(u+(i=i+Math.imul(U,gt)|0)|0)+((8191&(n=(n=n+Math.imul(U,At)|0)+Math.imul(V,gt)|0))<<13)|0;u=((o=o+Math.imul(V,At)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,i=Math.imul(F,ct),n=(n=Math.imul(F,ft))+Math.imul(L,ct)|0,o=Math.imul(L,ft);var Vt=(u+(i=i+Math.imul(T,gt)|0)|0)+((8191&(n=(n=n+Math.imul(T,At)|0)+Math.imul(Y,gt)|0))<<13)|0;u=((o=o+Math.imul(Y,At)|0)+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863;var St=(u+(i=Math.imul(F,gt))|0)+((8191&(n=(n=Math.imul(F,At))+Math.imul(L,gt)|0))<<13)|0;return u=((o=Math.imul(L,At))+(n>>>13)|0)+(St>>>26)|0,St&=67108863,h[0]=Mt,h[1]=pt,h[2]=wt,h[3]=Bt,h[4]=mt,h[5]=Et,h[6]=yt,h[7]=bt,h[8]=It,h[9]=vt,h[10]=Ct,h[11]=Qt,h[12]=Dt,h[13]=Nt,h[14]=Rt,h[15]=Gt,h[16]=Ut,h[17]=Vt,h[18]=St,0!==u&&(h[19]=u,r.length++),r};function p(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r._strip()}function w(t,e,r){return p(t,e,r)}function B(t,e){this.x=t,this.y=e}Math.imul||(M=A),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?M(this,t,e):r<63?A(this,t,e):r<1024?p(this,t,e):w(this,t,e)},B.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},B.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,r+=o/67108864|0,r+=s>>>26,this.words[n]=67108863&s}return 0!==r&&(this.words[n]=r,this.length++),e?this.ineg():this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n&1}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==l||u>=n);u--){var c=0|this.words[u];this.words[u]=l<<26-o|c>>>o,l=c&a}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this._strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this._strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;c--){var f=67108864*(0|i.words[n.length+c])+(0|i.words[n.length+c-1]);for(f=Math.min(f/s|0,67108863),i._ishlnsubmul(n,f,c);0!==i.negative;)f--,i.negative=0,i._ishlnsubmul(n,1,c),i.isZero()||(i.negative^=1);a&&(a.words[c]=f)}return a&&a._strip(),i._strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modrn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modrn=function(t){var e=t<0;e&&(t=-t),i(t<=67108863);for(var r=(1<<26)%t,n=0,o=this.length-1;o>=0;o--)n=(r*n+(0|this.words[o]))%t;return e?-n:n},o.prototype.modn=function(t){return this.modrn(t)},o.prototype.idivn=function(t){var e=t<0;e&&(t=-t),i(t<=67108863);for(var r=0,n=this.length-1;n>=0;n--){var o=(0|this.words[n])+67108864*r;this.words[n]=o/t|0,r=o%t}return this._strip(),e?this.ineg():this},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),c=e.clone();!e.isZero();){for(var f=0,d=1;0==(e.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(l),s.isub(c)),n.iushrn(1),s.iushrn(1);for(var g=0,A=1;0==(r.words[0]&A)&&g<26;++g,A<<=1);if(g>0)for(r.iushrn(g);g-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(l),h.isub(c)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var c=0,f=1;0==(r.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(r.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this._strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new C(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var m={k256:null,p224:null,p192:null,p25519:null};function E(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function y(){E.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){E.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function I(){E.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function v(){E.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function C(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function Q(t){C.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}E.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},E.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},E.prototype.split=function(t,e){t.iushrn(this.n,0,e)},E.prototype.imulK=function(t){return t.imul(this.k)},n(y,E),y.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},y.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(m[t])return m[t];var e;if("k256"===t)e=new y;else if("p224"===t)e=new b;else if("p192"===t)e=new I;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new v}return m[t]=e,e},C.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},C.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},C.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(l(t,t.umod(this.m)._forceRed(this)),t)},C.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},C.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},C.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},C.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},C.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},C.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},C.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},C.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},C.prototype.isqr=function(t){return this.imul(t,t.clone())},C.prototype.sqr=function(t){return this.mul(t,t)},C.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var c=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),g=s;0!==d.cmp(a);){for(var A=d,M=0;0!==A.cmp(a);M++)A=A.redSqr();i(M=0;i--){for(var u=e.words[i],l=h-1;l>=0;l--){var c=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==c||0!==s?(s<<=1,s|=c,(4==++a||0===i&&0===l)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},C.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},C.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new Q(t)},n(Q,C),Q.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},Q.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},Q.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},Q.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},Q.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},9931:(t,e,r)=>{var i;function n(t){this.rand=t}if(t.exports=function(t){return i||(i=new n(null)),i.generate(t)},t.exports.Rand=n,n.prototype.generate=function(t){return this._rand(t)},n.prototype._rand=function(t){if(this.rand.getBytes)return this.rand.getBytes(t);for(var e=new Uint8Array(t),r=0;r{var i=r(9509).Buffer;function n(t){i.isBuffer(t)||(t=i.from(t));for(var e=t.length/4|0,r=new Array(e),n=0;n>>24]^l[g>>>16&255]^c[A>>>8&255]^f[255&M]^e[p++],s=u[g>>>24]^l[A>>>16&255]^c[M>>>8&255]^f[255&d]^e[p++],a=u[A>>>24]^l[M>>>16&255]^c[d>>>8&255]^f[255&g]^e[p++],h=u[M>>>24]^l[d>>>16&255]^c[g>>>8&255]^f[255&A]^e[p++],d=o,g=s,A=a,M=h;return o=(i[d>>>24]<<24|i[g>>>16&255]<<16|i[A>>>8&255]<<8|i[255&M])^e[p++],s=(i[g>>>24]<<24|i[A>>>16&255]<<16|i[M>>>8&255]<<8|i[255&d])^e[p++],a=(i[A>>>24]<<24|i[M>>>16&255]<<16|i[d>>>8&255]<<8|i[255&g])^e[p++],h=(i[M>>>24]<<24|i[d>>>16&255]<<16|i[g>>>8&255]<<8|i[255&A])^e[p++],[o>>>=0,s>>>=0,a>>>=0,h>>>=0]}var a=[0,1,2,4,8,16,32,64,128,27,54],h=function(){for(var t=new Array(256),e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;for(var r=[],i=[],n=[[],[],[],[]],o=[[],[],[],[]],s=0,a=0,h=0;h<256;++h){var u=a^a<<1^a<<2^a<<3^a<<4;u=u>>>8^255&u^99,r[s]=u,i[u]=s;var l=t[s],c=t[l],f=t[c],d=257*t[u]^16843008*u;n[0][s]=d<<24|d>>>8,n[1][s]=d<<16|d>>>16,n[2][s]=d<<8|d>>>24,n[3][s]=d,d=16843009*f^65537*c^257*l^16843008*s,o[0][u]=d<<24|d>>>8,o[1][u]=d<<16|d>>>16,o[2][u]=d<<8|d>>>24,o[3][u]=d,0===s?s=a=1:(s=l^t[t[t[f^l]]],a^=t[t[a]])}return{SBOX:r,INV_SBOX:i,SUB_MIX:n,INV_SUB_MIX:o}}();function u(t){this._key=n(t),this._reset()}u.blockSize=16,u.keySize=32,u.prototype.blockSize=u.blockSize,u.prototype.keySize=u.keySize,u.prototype._reset=function(){for(var t=this._key,e=t.length,r=e+6,i=4*(r+1),n=[],o=0;o>>24,s=h.SBOX[s>>>24]<<24|h.SBOX[s>>>16&255]<<16|h.SBOX[s>>>8&255]<<8|h.SBOX[255&s],s^=a[o/e|0]<<24):e>6&&o%e==4&&(s=h.SBOX[s>>>24]<<24|h.SBOX[s>>>16&255]<<16|h.SBOX[s>>>8&255]<<8|h.SBOX[255&s]),n[o]=n[o-e]^s}for(var u=[],l=0;l>>24]]^h.INV_SUB_MIX[1][h.SBOX[f>>>16&255]]^h.INV_SUB_MIX[2][h.SBOX[f>>>8&255]]^h.INV_SUB_MIX[3][h.SBOX[255&f]]}this._nRounds=r,this._keySchedule=n,this._invKeySchedule=u},u.prototype.encryptBlockRaw=function(t){return s(t=n(t),this._keySchedule,h.SUB_MIX,h.SBOX,this._nRounds)},u.prototype.encryptBlock=function(t){var e=this.encryptBlockRaw(t),r=i.allocUnsafe(16);return r.writeUInt32BE(e[0],0),r.writeUInt32BE(e[1],4),r.writeUInt32BE(e[2],8),r.writeUInt32BE(e[3],12),r},u.prototype.decryptBlock=function(t){var e=(t=n(t))[1];t[1]=t[3],t[3]=e;var r=s(t,this._invKeySchedule,h.INV_SUB_MIX,h.INV_SBOX,this._nRounds),o=i.allocUnsafe(16);return o.writeUInt32BE(r[0],0),o.writeUInt32BE(r[3],4),o.writeUInt32BE(r[2],8),o.writeUInt32BE(r[1],12),o},u.prototype.scrub=function(){o(this._keySchedule),o(this._invKeySchedule),o(this._key)},t.exports.AES=u},2422:(t,e,r)=>{var i=r(4497),n=r(9509).Buffer,o=r(1027),s=r(5717),a=r(3288),h=r(7295),u=r(685);function l(t,e,r,s){o.call(this);var h=n.alloc(4,0);this._cipher=new i.AES(e);var l=this._cipher.encryptBlock(h);this._ghash=new a(l),r=function(t,e,r){if(12===e.length)return t._finID=n.concat([e,n.from([0,0,0,1])]),n.concat([e,n.from([0,0,0,2])]);var i=new a(r),o=e.length,s=o%16;i.update(e),s&&(s=16-s,i.update(n.alloc(s,0))),i.update(n.alloc(8,0));var h=8*o,l=n.alloc(8);l.writeUIntBE(h,0,8),i.update(l),t._finID=i.state;var c=n.from(t._finID);return u(c),c}(this,r,l),this._prev=n.from(r),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=s,this._alen=0,this._len=0,this._mode=t,this._authTag=null,this._called=!1}s(l,o),l.prototype._update=function(t){if(!this._called&&this._alen){var e=16-this._alen%16;e<16&&(e=n.alloc(e,0),this._ghash.update(e))}this._called=!0;var r=this._mode.encrypt(this,t);return this._decrypt?this._ghash.update(t):this._ghash.update(r),this._len+=t.length,r},l.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error("Unsupported state or unable to authenticate data");var t=h(this._ghash.final(8*this._alen,8*this._len),this._cipher.encryptBlock(this._finID));if(this._decrypt&&function(t,e){var r=0;t.length!==e.length&&r++;for(var i=Math.min(t.length,e.length),n=0;n{var i=r(1494),n=r(6193),o=r(5415);e.createCipher=e.Cipher=i.createCipher,e.createCipheriv=e.Cipheriv=i.createCipheriv,e.createDecipher=e.Decipher=n.createDecipher,e.createDecipheriv=e.Decipheriv=n.createDecipheriv,e.listCiphers=e.getCiphers=function(){return Object.keys(o)}},6193:(t,e,r)=>{var i=r(2422),n=r(9509).Buffer,o=r(45),s=r(5969),a=r(1027),h=r(4497),u=r(3048);function l(t,e,r){a.call(this),this._cache=new c,this._last=void 0,this._cipher=new h.AES(e),this._prev=n.from(r),this._mode=t,this._autopadding=!0}function c(){this.cache=n.allocUnsafe(0)}function f(t,e,r){var a=o[t.toLowerCase()];if(!a)throw new TypeError("invalid suite type");if("string"==typeof r&&(r=n.from(r)),"GCM"!==a.mode&&r.length!==a.iv)throw new TypeError("invalid iv length "+r.length);if("string"==typeof e&&(e=n.from(e)),e.length!==a.key/8)throw new TypeError("invalid key length "+e.length);return"stream"===a.type?new s(a.module,e,r,!0):"auth"===a.type?new i(a.module,e,r,!0):new l(a.module,e,r)}r(5717)(l,a),l.prototype._update=function(t){var e,r;this._cache.add(t);for(var i=[];e=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,e),i.push(r);return n.concat(i)},l.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return function(t){var e=t[15];if(e<1||e>16)throw new Error("unable to decrypt data");for(var r=-1;++r16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},c.prototype.flush=function(){if(this.cache.length)return this.cache},e.createDecipher=function(t,e){var r=o[t.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=u(e,!1,r.key,r.iv);return f(t,i.key,i.iv)},e.createDecipheriv=f},1494:(t,e,r)=>{var i=r(45),n=r(2422),o=r(9509).Buffer,s=r(5969),a=r(1027),h=r(4497),u=r(3048);function l(t,e,r){a.call(this),this._cache=new f,this._cipher=new h.AES(e),this._prev=o.from(r),this._mode=t,this._autopadding=!0}r(5717)(l,a),l.prototype._update=function(t){var e,r;this._cache.add(t);for(var i=[];e=this._cache.get();)r=this._mode.encrypt(this,e),i.push(r);return o.concat(i)};var c=o.alloc(16,16);function f(){this.cache=o.allocUnsafe(0)}function d(t,e,r){var a=i[t.toLowerCase()];if(!a)throw new TypeError("invalid suite type");if("string"==typeof e&&(e=o.from(e)),e.length!==a.key/8)throw new TypeError("invalid key length "+e.length);if("string"==typeof r&&(r=o.from(r)),"GCM"!==a.mode&&r.length!==a.iv)throw new TypeError("invalid iv length "+r.length);return"stream"===a.type?new s(a.module,e,r):"auth"===a.type?new n(a.module,e,r):new l(a.module,e,r)}l.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(!t.equals(c))throw this._cipher.scrub(),new Error("data not multiple of block length")},l.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},f.prototype.add=function(t){this.cache=o.concat([this.cache,t])},f.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},f.prototype.flush=function(){for(var t=16-this.cache.length,e=o.allocUnsafe(t),r=-1;++r{var i=r(9509).Buffer,n=i.alloc(16,0);function o(t){var e=i.allocUnsafe(16);return e.writeUInt32BE(t[0]>>>0,0),e.writeUInt32BE(t[1]>>>0,4),e.writeUInt32BE(t[2]>>>0,8),e.writeUInt32BE(t[3]>>>0,12),e}function s(t){this.h=t,this.state=i.alloc(16,0),this.cache=i.allocUnsafe(0)}s.prototype.ghash=function(t){for(var e=-1;++e0;e--)i[e]=i[e]>>>1|(1&i[e-1])<<31;i[0]=i[0]>>>1,r&&(i[0]=i[0]^225<<24)}this.state=o(n)},s.prototype.update=function(t){var e;for(this.cache=i.concat([this.cache,t]);this.cache.length>=16;)e=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(e)},s.prototype.final=function(t,e){return this.cache.length&&this.ghash(i.concat([this.cache,n],16)),this.ghash(o([0,t,0,e])),this.state},t.exports=s},685:t=>{t.exports=function(t){for(var e,r=t.length;r--;){if(255!==(e=t.readUInt8(r))){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}},5292:(t,e,r)=>{var i=r(7295);e.encrypt=function(t,e){var r=i(e,t._prev);return t._prev=t._cipher.encryptBlock(r),t._prev},e.decrypt=function(t,e){var r=t._prev;t._prev=e;var n=t._cipher.decryptBlock(e);return i(n,r)}},6311:(t,e,r)=>{var i=r(9509).Buffer,n=r(7295);function o(t,e,r){var o=e.length,s=n(e,t._cache);return t._cache=t._cache.slice(o),t._prev=i.concat([t._prev,r?e:s]),s}e.encrypt=function(t,e,r){for(var n,s=i.allocUnsafe(0);e.length;){if(0===t._cache.length&&(t._cache=t._cipher.encryptBlock(t._prev),t._prev=i.allocUnsafe(0)),!(t._cache.length<=e.length)){s=i.concat([s,o(t,e,r)]);break}n=t._cache.length,s=i.concat([s,o(t,e.slice(0,n),r)]),e=e.slice(n)}return s}},1510:(t,e,r)=>{var i=r(9509).Buffer;function n(t,e,r){for(var i,n,s=-1,a=0;++s<8;)i=e&1<<7-s?128:0,a+=(128&(n=t._cipher.encryptBlock(t._prev)[0]^i))>>s%8,t._prev=o(t._prev,r?i:n);return a}function o(t,e){var r=t.length,n=-1,o=i.allocUnsafe(t.length);for(t=i.concat([t,i.from([e])]);++n>7;return o}e.encrypt=function(t,e,r){for(var o=e.length,s=i.allocUnsafe(o),a=-1;++a{var i=r(9509).Buffer;function n(t,e,r){var n=t._cipher.encryptBlock(t._prev)[0]^e;return t._prev=i.concat([t._prev.slice(1),i.from([r?e:n])]),n}e.encrypt=function(t,e,r){for(var o=e.length,s=i.allocUnsafe(o),a=-1;++a{var i=r(7295),n=r(9509).Buffer,o=r(685);function s(t){var e=t._cipher.encryptBlockRaw(t._prev);return o(t._prev),e}e.encrypt=function(t,e){var r=Math.ceil(e.length/16),o=t._cache.length;t._cache=n.concat([t._cache,n.allocUnsafe(16*r)]);for(var a=0;a{e.encrypt=function(t,e){return t._cipher.encryptBlock(e)},e.decrypt=function(t,e){return t._cipher.decryptBlock(e)}},45:(t,e,r)=>{var i={ECB:r(1084),CBC:r(5292),CFB:r(6311),CFB8:r(1964),CFB1:r(1510),OFB:r(8861),CTR:r(6009),GCM:r(6009)},n=r(5415);for(var o in n)n[o].module=i[n[o].mode];t.exports=n},5415:t=>{"use strict";t.exports=JSON.parse('{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}')},8861:(t,e,r)=>{var i=r(8764).Buffer,n=r(7295);function o(t){return t._prev=t._cipher.encryptBlock(t._prev),t._prev}e.encrypt=function(t,e){for(;t._cache.length{var i=r(4497),n=r(9509).Buffer,o=r(1027);function s(t,e,r,s){o.call(this),this._cipher=new i.AES(e),this._prev=n.from(r),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=s,this._mode=t}r(5717)(s,o),s.prototype._update=function(t){return this._mode.encrypt(this,t,this._decrypt)},s.prototype._final=function(){this._cipher.scrub()},t.exports=s},3614:(t,e,r)=>{var i=r(7667),n=r(4696),o=r(45),s=r(9715),a=r(3048);function h(t,e,r){if(t=t.toLowerCase(),o[t])return n.createCipheriv(t,e,r);if(s[t])return new i({key:e,iv:r,mode:t});throw new TypeError("invalid suite type")}function u(t,e,r){if(t=t.toLowerCase(),o[t])return n.createDecipheriv(t,e,r);if(s[t])return new i({key:e,iv:r,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}e.createCipher=e.Cipher=function(t,e){var r,i;if(t=t.toLowerCase(),o[t])r=o[t].key,i=o[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");r=8*s[t].key,i=s[t].iv}var n=a(e,!1,r,i);return h(t,n.key,n.iv)},e.createCipheriv=e.Cipheriv=h,e.createDecipher=e.Decipher=function(t,e){var r,i;if(t=t.toLowerCase(),o[t])r=o[t].key,i=o[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");r=8*s[t].key,i=s[t].iv}var n=a(e,!1,r,i);return u(t,n.key,n.iv)},e.createDecipheriv=e.Decipheriv=u,e.listCiphers=e.getCiphers=function(){return Object.keys(s).concat(n.getCiphers())}},7667:(t,e,r)=>{var i=r(1027),n=r(5251),o=r(5717),s=r(9509).Buffer,a={"des-ede3-cbc":n.CBC.instantiate(n.EDE),"des-ede3":n.EDE,"des-ede-cbc":n.CBC.instantiate(n.EDE),"des-ede":n.EDE,"des-cbc":n.CBC.instantiate(n.DES),"des-ecb":n.DES};function h(t){i.call(this);var e,r=t.mode.toLowerCase(),n=a[r];e=t.decrypt?"decrypt":"encrypt";var o=t.key;s.isBuffer(o)||(o=s.from(o)),"des-ede"!==r&&"des-ede-cbc"!==r||(o=s.concat([o,o.slice(0,8)]));var h=t.iv;s.isBuffer(h)||(h=s.from(h)),this._des=n.create({key:o,iv:h,type:e})}a.des=a["des-cbc"],a.des3=a["des-ede3-cbc"],t.exports=h,o(h,i),h.prototype._update=function(t){return s.from(this._des.update(t))},h.prototype._final=function(){return s.from(this._des.final())}},9715:(t,e)=>{e["des-ecb"]={key:8,iv:0},e["des-cbc"]=e.des={key:8,iv:8},e["des-ede3-cbc"]=e.des3={key:24,iv:8},e["des-ede3"]={key:24,iv:0},e["des-ede-cbc"]={key:16,iv:8},e["des-ede"]={key:16,iv:0}},3663:(t,e,r)=>{var i=r(8764).Buffer,n=r(3550),o=r(1798);function s(t){var e,r=t.modulus.byteLength();do{e=new n(o(r))}while(e.cmp(t.modulus)>=0||!e.umod(t.prime1)||!e.umod(t.prime2));return e}function a(t,e){var r=function(t){var e=s(t);return{blinder:e.toRed(n.mont(t.modulus)).redPow(new n(t.publicExponent)).fromRed(),unblinder:e.invm(t.modulus)}}(e),o=e.modulus.byteLength(),a=new n(t).mul(r.blinder).umod(e.modulus),h=a.toRed(n.mont(e.prime1)),u=a.toRed(n.mont(e.prime2)),l=e.coefficient,c=e.prime1,f=e.prime2,d=h.redPow(e.exponent1).fromRed(),g=u.redPow(e.exponent2).fromRed(),A=d.isub(g).imul(l).umod(c).imul(f);return g.iadd(A).imul(r.unblinder).umod(e.modulus).toArrayLike(i,"be",o)}a.getr=s,t.exports=a},6042:(t,e,r)=>{t.exports=r(2063)},2063:t=>{"use strict";t.exports=JSON.parse('{"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}}')},2236:t=>{"use strict";t.exports=JSON.parse('{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}')},4743:(t,e,r)=>{var i=r(9509).Buffer,n=r(3482),o=r(8473),s=r(5717),a=r(2957),h=r(7753),u=r(2063);function l(t){o.Writable.call(this);var e=u[t];if(!e)throw new Error("Unknown message digest");this._hashType=e.hash,this._hash=n(e.hash),this._tag=e.id,this._signType=e.sign}function c(t){o.Writable.call(this);var e=u[t];if(!e)throw new Error("Unknown message digest");this._hash=n(e.hash),this._tag=e.id,this._signType=e.sign}function f(t){return new l(t)}function d(t){return new c(t)}Object.keys(u).forEach((function(t){u[t].id=i.from(u[t].id,"hex"),u[t.toLowerCase()]=u[t]})),s(l,o.Writable),l.prototype._write=function(t,e,r){this._hash.update(t),r()},l.prototype.update=function(t,e){return"string"==typeof t&&(t=i.from(t,e)),this._hash.update(t),this},l.prototype.sign=function(t,e){this.end();var r=this._hash.digest(),i=a(r,t,this._hashType,this._signType,this._tag);return e?i.toString(e):i},s(c,o.Writable),c.prototype._write=function(t,e,r){this._hash.update(t),r()},c.prototype.update=function(t,e){return"string"==typeof t&&(t=i.from(t,e)),this._hash.update(t),this},c.prototype.verify=function(t,e,r){"string"==typeof e&&(e=i.from(e,r)),this.end();var n=this._hash.digest();return h(e,n,t,this._signType,this._tag)},t.exports={Sign:f,Verify:d,createSign:f,createVerify:d}},2957:(t,e,r)=>{var i=r(9509).Buffer,n=r(8355),o=r(3663),s=r(6266).ec,a=r(3550),h=r(980),u=r(2236);function l(t,e,r,o){if((t=i.from(t.toArray())).length0&&r.ishrn(i),r}function f(t,e,r){var o,s;do{for(o=i.alloc(0);8*o.length{var i=r(9509).Buffer,n=r(3550),o=r(6266).ec,s=r(980),a=r(2236);function h(t,e){if(t.cmpn(0)<=0)throw new Error("invalid sig");if(t.cmp(e)>=e)throw new Error("invalid sig")}t.exports=function(t,e,r,u,l){var c=s(r);if("ec"===c.type){if("ecdsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");return function(t,e,r){var i=a[r.data.algorithm.curve.join(".")];if(!i)throw new Error("unknown curve "+r.data.algorithm.curve.join("."));var n=new o(i),s=r.data.subjectPrivateKey.data;return n.verify(e,t,s)}(t,e,c)}if("dsa"===c.type){if("dsa"!==u)throw new Error("wrong public key type");return function(t,e,r){var i=r.data.p,o=r.data.q,a=r.data.g,u=r.data.pub_key,l=s.signature.decode(t,"der"),c=l.s,f=l.r;h(c,o),h(f,o);var d=n.mont(i),g=c.invm(o);return 0===a.toRed(d).redPow(new n(e).mul(g).mod(o)).fromRed().mul(u.toRed(d).redPow(f.mul(g).mod(o)).fromRed()).mod(i).mod(o).cmp(f)}(t,e,c)}if("rsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");e=i.concat([l,e]);for(var f=c.modulus.byteLength(),d=[1],g=0;e.length+d.length+2{"use strict";var i=r(8764).Buffer,n=r(4155),o=r(9282),s=r(2292),a=r(405),h=r(7948),u=r(1619);for(var l in u)e[l]=u[l];function c(t){if("number"!=typeof t||te.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=t,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}e.NONE=0,e.DEFLATE=1,e.INFLATE=2,e.GZIP=3,e.GUNZIP=4,e.DEFLATERAW=5,e.INFLATERAW=6,e.UNZIP=7,c.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,o(this.init_done,"close before init"),o(this.mode<=e.UNZIP),this.mode===e.DEFLATE||this.mode===e.GZIP||this.mode===e.DEFLATERAW?a.deflateEnd(this.strm):this.mode!==e.INFLATE&&this.mode!==e.GUNZIP&&this.mode!==e.INFLATERAW&&this.mode!==e.UNZIP||h.inflateEnd(this.strm),this.mode=e.NONE,this.dictionary=null)},c.prototype.write=function(t,e,r,i,n,o,s){return this._write(!0,t,e,r,i,n,o,s)},c.prototype.writeSync=function(t,e,r,i,n,o,s){return this._write(!1,t,e,r,i,n,o,s)},c.prototype._write=function(t,r,s,a,h,u,l,c){if(o.equal(arguments.length,8),o(this.init_done,"write before init"),o(this.mode!==e.NONE,"already finalized"),o.equal(!1,this.write_in_progress,"write already in progress"),o.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,o.equal(!1,void 0===r,"must provide flush value"),this.write_in_progress=!0,r!==e.Z_NO_FLUSH&&r!==e.Z_PARTIAL_FLUSH&&r!==e.Z_SYNC_FLUSH&&r!==e.Z_FULL_FLUSH&&r!==e.Z_FINISH&&r!==e.Z_BLOCK)throw new Error("Invalid flush value");if(null==s&&(s=i.alloc(0),h=0,a=0),this.strm.avail_in=h,this.strm.input=s,this.strm.next_in=a,this.strm.avail_out=c,this.strm.output=u,this.strm.next_out=l,this.flush=r,!t)return this._process(),this._checkError()?this._afterSync():void 0;var f=this;return n.nextTick((function(){f._process(),f._after()})),this},c.prototype._afterSync=function(){var t=this.strm.avail_out,e=this.strm.avail_in;return this.write_in_progress=!1,[e,t]},c.prototype._process=function(){var t=null;switch(this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:this.err=a.deflate(this.strm,this.flush);break;case e.UNZIP:switch(this.strm.avail_in>0&&(t=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===t)break;if(31!==this.strm.input[t]){this.mode=e.INFLATE;break}if(this.gzip_id_bytes_read=1,t++,1===this.strm.avail_in)break;case 1:if(null===t)break;139===this.strm.input[t]?(this.gzip_id_bytes_read=2,this.mode=e.GUNZIP):this.mode=e.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:for(this.err=h.inflate(this.strm,this.flush),this.err===e.Z_NEED_DICT&&this.dictionary&&(this.err=h.inflateSetDictionary(this.strm,this.dictionary),this.err===e.Z_OK?this.err=h.inflate(this.strm,this.flush):this.err===e.Z_DATA_ERROR&&(this.err=e.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===e.GUNZIP&&this.err===e.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=h.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},c.prototype._checkError=function(){switch(this.err){case e.Z_OK:case e.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===e.Z_FINISH)return this._error("unexpected end of file"),!1;break;case e.Z_STREAM_END:break;case e.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},c.prototype._after=function(){if(this._checkError()){var t=this.strm.avail_out,e=this.strm.avail_in;this.write_in_progress=!1,this.callback(e,t),this.pending_close&&this.close()}},c.prototype._error=function(t){this.strm.msg&&(t=this.strm.msg),this.onerror(t,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},c.prototype.init=function(t,r,i,n,s){o(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),o(t>=8&&t<=15,"invalid windowBits"),o(r>=-1&&r<=9,"invalid compression level"),o(i>=1&&i<=9,"invalid memlevel"),o(n===e.Z_FILTERED||n===e.Z_HUFFMAN_ONLY||n===e.Z_RLE||n===e.Z_FIXED||n===e.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(r,t,i,n,s),this._setDictionary()},c.prototype.params=function(){throw new Error("deflateParams Not supported")},c.prototype.reset=function(){this._reset(),this._setDictionary()},c.prototype._init=function(t,r,i,n,o){switch(this.level=t,this.windowBits=r,this.memLevel=i,this.strategy=n,this.flush=e.Z_NO_FLUSH,this.err=e.Z_OK,this.mode!==e.GZIP&&this.mode!==e.GUNZIP||(this.windowBits+=16),this.mode===e.UNZIP&&(this.windowBits+=32),this.mode!==e.DEFLATERAW&&this.mode!==e.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new s,this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:this.err=a.deflateInit2(this.strm,this.level,e.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:case e.UNZIP:this.err=h.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==e.Z_OK&&this._error("Init error"),this.dictionary=o,this.write_in_progress=!1,this.init_done=!0},c.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=e.Z_OK,this.mode){case e.DEFLATE:case e.DEFLATERAW:this.err=a.deflateSetDictionary(this.strm,this.dictionary)}this.err!==e.Z_OK&&this._error("Failed to set dictionary")}},c.prototype._reset=function(){switch(this.err=e.Z_OK,this.mode){case e.DEFLATE:case e.DEFLATERAW:case e.GZIP:this.err=a.deflateReset(this.strm);break;case e.INFLATE:case e.INFLATERAW:case e.GUNZIP:this.err=h.inflateReset(this.strm)}this.err!==e.Z_OK&&this._error("Failed to reset stream")},e.Zlib=c},2635:(t,e,r)=>{"use strict";var i=r(4155),n=r(8764).Buffer,o=r(2830).Transform,s=r(4505),a=r(9539),h=r(9282).ok,u=r(8764).kMaxLength,l="Cannot create final Buffer. It would be larger than 0x"+u.toString(16)+" bytes";s.Z_MIN_WINDOWBITS=8,s.Z_MAX_WINDOWBITS=15,s.Z_DEFAULT_WINDOWBITS=15,s.Z_MIN_CHUNK=64,s.Z_MAX_CHUNK=1/0,s.Z_DEFAULT_CHUNK=16384,s.Z_MIN_MEMLEVEL=1,s.Z_MAX_MEMLEVEL=9,s.Z_DEFAULT_MEMLEVEL=8,s.Z_MIN_LEVEL=-1,s.Z_MAX_LEVEL=9,s.Z_DEFAULT_LEVEL=s.Z_DEFAULT_COMPRESSION;for(var c=Object.keys(s),f=0;f=u?s=new RangeError(l):e=n.concat(i,o),i=[],t.close(),r(s,e)}t.on("error",(function(e){t.removeListener("end",a),t.removeListener("readable",s),r(e)})),t.on("end",a),t.end(e),s()}function B(t,e){if("string"==typeof e&&(e=n.from(e)),!n.isBuffer(e))throw new TypeError("Not a string or buffer");var r=t._finishFlushFlag;return t._processChunk(e,r)}function m(t){if(!(this instanceof m))return new m(t);D.call(this,t,s.DEFLATE)}function E(t){if(!(this instanceof E))return new E(t);D.call(this,t,s.INFLATE)}function y(t){if(!(this instanceof y))return new y(t);D.call(this,t,s.GZIP)}function b(t){if(!(this instanceof b))return new b(t);D.call(this,t,s.GUNZIP)}function I(t){if(!(this instanceof I))return new I(t);D.call(this,t,s.DEFLATERAW)}function v(t){if(!(this instanceof v))return new v(t);D.call(this,t,s.INFLATERAW)}function C(t){if(!(this instanceof C))return new C(t);D.call(this,t,s.UNZIP)}function Q(t){return t===s.Z_NO_FLUSH||t===s.Z_PARTIAL_FLUSH||t===s.Z_SYNC_FLUSH||t===s.Z_FULL_FLUSH||t===s.Z_FINISH||t===s.Z_BLOCK}function D(t,r){var i=this;if(this._opts=t=t||{},this._chunkSize=t.chunkSize||e.Z_DEFAULT_CHUNK,o.call(this,t),t.flush&&!Q(t.flush))throw new Error("Invalid flush flag: "+t.flush);if(t.finishFlush&&!Q(t.finishFlush))throw new Error("Invalid flush flag: "+t.finishFlush);if(this._flushFlag=t.flush||s.Z_NO_FLUSH,this._finishFlushFlag=void 0!==t.finishFlush?t.finishFlush:s.Z_FINISH,t.chunkSize&&(t.chunkSizee.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+t.chunkSize);if(t.windowBits&&(t.windowBitse.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+t.windowBits);if(t.level&&(t.levele.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+t.level);if(t.memLevel&&(t.memLevele.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+t.memLevel);if(t.strategy&&t.strategy!=e.Z_FILTERED&&t.strategy!=e.Z_HUFFMAN_ONLY&&t.strategy!=e.Z_RLE&&t.strategy!=e.Z_FIXED&&t.strategy!=e.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+t.strategy);if(t.dictionary&&!n.isBuffer(t.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new s.Zlib(r);var a=this;this._hadError=!1,this._handle.onerror=function(t,r){N(a),a._hadError=!0;var i=new Error(t);i.errno=r,i.code=e.codes[r],a.emit("error",i)};var h=e.Z_DEFAULT_COMPRESSION;"number"==typeof t.level&&(h=t.level);var u=e.Z_DEFAULT_STRATEGY;"number"==typeof t.strategy&&(u=t.strategy),this._handle.init(t.windowBits||e.Z_DEFAULT_WINDOWBITS,h,t.memLevel||e.Z_DEFAULT_MEMLEVEL,u,t.dictionary),this._buffer=n.allocUnsafe(this._chunkSize),this._offset=0,this._level=h,this._strategy=u,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!i._handle},configurable:!0,enumerable:!0})}function N(t,e){e&&i.nextTick(e),t._handle&&(t._handle.close(),t._handle=null)}function R(t){t.emit("close")}Object.defineProperty(e,"codes",{enumerable:!0,value:Object.freeze(g),writable:!1}),e.Deflate=m,e.Inflate=E,e.Gzip=y,e.Gunzip=b,e.DeflateRaw=I,e.InflateRaw=v,e.Unzip=C,e.createDeflate=function(t){return new m(t)},e.createInflate=function(t){return new E(t)},e.createDeflateRaw=function(t){return new I(t)},e.createInflateRaw=function(t){return new v(t)},e.createGzip=function(t){return new y(t)},e.createGunzip=function(t){return new b(t)},e.createUnzip=function(t){return new C(t)},e.deflate=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new m(e),t,r)},e.deflateSync=function(t,e){return B(new m(e),t)},e.gzip=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new y(e),t,r)},e.gzipSync=function(t,e){return B(new y(e),t)},e.deflateRaw=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new I(e),t,r)},e.deflateRawSync=function(t,e){return B(new I(e),t)},e.unzip=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new C(e),t,r)},e.unzipSync=function(t,e){return B(new C(e),t)},e.inflate=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new E(e),t,r)},e.inflateSync=function(t,e){return B(new E(e),t)},e.gunzip=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new b(e),t,r)},e.gunzipSync=function(t,e){return B(new b(e),t)},e.inflateRaw=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new v(e),t,r)},e.inflateRawSync=function(t,e){return B(new v(e),t)},a.inherits(D,o),D.prototype.params=function(t,r,n){if(te.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+t);if(r!=e.Z_FILTERED&&r!=e.Z_HUFFMAN_ONLY&&r!=e.Z_RLE&&r!=e.Z_FIXED&&r!=e.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+r);if(this._level!==t||this._strategy!==r){var o=this;this.flush(s.Z_SYNC_FLUSH,(function(){h(o._handle,"zlib binding closed"),o._handle.params(t,r),o._hadError||(o._level=t,o._strategy=r,n&&n())}))}else i.nextTick(n)},D.prototype.reset=function(){return h(this._handle,"zlib binding closed"),this._handle.reset()},D.prototype._flush=function(t){this._transform(n.alloc(0),"",t)},D.prototype.flush=function(t,e){var r=this,o=this._writableState;("function"==typeof t||void 0===t&&!e)&&(e=t,t=s.Z_FULL_FLUSH),o.ended?e&&i.nextTick(e):o.ending?e&&this.once("end",e):o.needDrain?e&&this.once("drain",(function(){return r.flush(t,e)})):(this._flushFlag=t,this.write(n.alloc(0),"",e))},D.prototype.close=function(t){N(this,t),i.nextTick(R,this)},D.prototype._transform=function(t,e,r){var i,o=this._writableState,a=(o.ending||o.ended)&&(!t||o.length===t.length);return null===t||n.isBuffer(t)?this._handle?(a?i=this._finishFlushFlag:(i=this._flushFlag,t.length>=o.length&&(this._flushFlag=this._opts.flush||s.Z_NO_FLUSH)),void this._processChunk(t,i,r)):r(new Error("zlib binding closed")):r(new Error("invalid input"))},D.prototype._processChunk=function(t,e,r){var i=t&&t.length,o=this._chunkSize-this._offset,s=0,a=this,c="function"==typeof r;if(!c){var f,d=[],g=0;this.on("error",(function(t){f=t})),h(this._handle,"zlib binding closed");do{var A=this._handle.writeSync(e,t,s,i,this._buffer,this._offset,o)}while(!this._hadError&&w(A[0],A[1]));if(this._hadError)throw f;if(g>=u)throw N(this),new RangeError(l);var M=n.concat(d,g);return N(this),M}h(this._handle,"zlib binding closed");var p=this._handle.write(e,t,s,i,this._buffer,this._offset,o);function w(u,l){if(this&&(this.buffer=null,this.callback=null),!a._hadError){var f=o-l;if(h(f>=0,"have should not go down"),f>0){var A=a._buffer.slice(a._offset,a._offset+f);a._offset+=f,c?a.push(A):(d.push(A),g+=A.length)}if((0===l||a._offset>=a._chunkSize)&&(o=a._chunkSize,a._offset=0,a._buffer=n.allocUnsafe(a._chunkSize)),0===l){if(s+=i-u,i=u,!c)return!0;var M=a._handle.write(e,t,s,i,a._buffer,a._offset,a._chunkSize);return M.callback=w,void(M.buffer=t)}if(!c)return!1;r()}}p.buffer=t,p.callback=w},a.inherits(m,D),a.inherits(E,D),a.inherits(y,D),a.inherits(b,D),a.inherits(I,D),a.inherits(v,D),a.inherits(C,D)},7295:(t,e,r)=>{var i=r(8764).Buffer;t.exports=function(t,e){for(var r=Math.min(t.length,e.length),n=new i(r),o=0;o{"use strict";const i=r(9742),n=r(645),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=h,e.SlowBuffer=function(t){return+t!=t&&(t=0),h.alloc(+t)},e.INSPECT_MAX_BYTES=50;const s=2147483647;function a(t){if(t>s)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,h.prototype),e}function h(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return c(t)}return u(t,e,r)}function u(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!h.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|A(t,e);let i=a(r);const n=i.write(t,e);return n!==r&&(i=i.slice(0,n)),i}(t,e);if(ArrayBuffer.isView(t))return function(t){if(X(t,Uint8Array)){const e=new Uint8Array(t);return d(e.buffer,e.byteOffset,e.byteLength)}return f(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(X(t,ArrayBuffer)||t&&X(t.buffer,ArrayBuffer))return d(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(X(t,SharedArrayBuffer)||t&&X(t.buffer,SharedArrayBuffer)))return d(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const i=t.valueOf&&t.valueOf();if(null!=i&&i!==t)return h.from(i,e,r);const n=function(t){if(h.isBuffer(t)){const e=0|g(t.length),r=a(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||P(t.length)?a(0):f(t):"Buffer"===t.type&&Array.isArray(t.data)?f(t.data):void 0}(t);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return h.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function l(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function c(t){return l(t),a(t<0?0:0|g(t))}function f(t){const e=t.length<0?0:0|g(t.length),r=a(e);for(let i=0;i=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|t}function A(t,e){if(h.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||X(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;let n=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return _(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return W(t).length;default:if(n)return i?-1:_(t).length;e=(""+e).toLowerCase(),n=!0}}function M(t,e,r){let i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return R(this,e,r);case"utf8":case"utf-8":return C(this,e,r);case"ascii":return D(this,e,r);case"latin1":case"binary":return N(this,e,r);case"base64":return v(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return G(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function p(t,e,r){const i=t[e];t[e]=t[r],t[r]=i}function w(t,e,r,i,n){if(0===t.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),P(r=+r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof e&&(e=h.from(e,i)),h.isBuffer(e))return 0===e.length?-1:B(t,e,r,i,n);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):B(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function B(t,e,r,i,n){let o,s=1,a=t.length,h=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;s=2,a/=2,h/=2,r/=2}function u(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(n){let i=-1;for(o=r;oa&&(r=a-h),o=r;o>=0;o--){let r=!0;for(let i=0;in&&(i=n):i=n;const o=e.length;let s;for(i>o/2&&(i=o/2),s=0;s>8,n=r%256,o.push(n),o.push(i);return o}(e,t.length-r),t,r,i)}function v(t,e,r){return 0===e&&r===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,r))}function C(t,e,r){r=Math.min(t.length,r);const i=[];let n=e;for(;n239?4:e>223?3:e>191?2:1;if(n+s<=r){let r,i,a,h;switch(s){case 1:e<128&&(o=e);break;case 2:r=t[n+1],128==(192&r)&&(h=(31&e)<<6|63&r,h>127&&(o=h));break;case 3:r=t[n+1],i=t[n+2],128==(192&r)&&128==(192&i)&&(h=(15&e)<<12|(63&r)<<6|63&i,h>2047&&(h<55296||h>57343)&&(o=h));break;case 4:r=t[n+1],i=t[n+2],a=t[n+3],128==(192&r)&&128==(192&i)&&128==(192&a)&&(h=(15&e)<<18|(63&r)<<12|(63&i)<<6|63&a,h>65535&&h<1114112&&(o=h))}}null===o?(o=65533,s=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|1023&o),i.push(o),n+=s}return function(t){const e=t.length;if(e<=Q)return String.fromCharCode.apply(String,t);let r="",i=0;for(;ii.length?(h.isBuffer(e)||(e=h.from(e)),e.copy(i,n)):Uint8Array.prototype.set.call(i,e,n);else{if(!h.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(i,n)}n+=e.length}return i},h.byteLength=A,h.prototype._isBuffer=!0,h.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},o&&(h.prototype[o]=h.prototype.inspect),h.prototype.compare=function(t,e,r,i,n){if(X(t,Uint8Array)&&(t=h.from(t,t.offset,t.byteLength)),!h.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),e<0||r>t.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&e>=r)return 0;if(i>=n)return-1;if(e>=r)return 1;if(this===t)return 0;let o=(n>>>=0)-(i>>>=0),s=(r>>>=0)-(e>>>=0);const a=Math.min(o,s),u=this.slice(i,n),l=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i="utf8")):(i=r,r=void 0)}const n=this.length-e;if((void 0===r||r>n)&&(r=n),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return m(this,t,e,r);case"utf8":case"utf-8":return E(this,t,e,r);case"ascii":case"latin1":case"binary":return y(this,t,e,r);case"base64":return b(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const Q=4096;function D(t,e,r){let i="";r=Math.min(t.length,r);for(let n=e;ni)&&(r=i);let n="";for(let i=e;ir)throw new RangeError("Trying to access beyond buffer length")}function V(t,e,r,i,n,o){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}function S(t,e,r,i,n){x(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,r}function T(t,e,r,i,n){x(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=s,s>>=8,t[r+2]=s,s>>=8,t[r+1]=s,s>>=8,t[r]=s,r+8}function Y(t,e,r,i,n,o){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(t,e,r,i,o){return e=+e,r>>>=0,o||Y(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function F(t,e,r,i,o){return e=+e,r>>>=0,o||Y(t,0,r,8),n.write(t,e,r,i,52,8),r+8}h.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||U(t,e,this.length);let i=this[t],n=1,o=0;for(;++o>>=0,e>>>=0,r||U(t,e,this.length);let i=this[t+--e],n=1;for(;e>0&&(n*=256);)i+=this[t+--e]*n;return i},h.prototype.readUint8=h.prototype.readUInt8=function(t,e){return t>>>=0,e||U(t,1,this.length),this[t]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(t,e){return t>>>=0,e||U(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(t,e){return t>>>=0,e||U(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(t,e){return t>>>=0,e||U(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(t,e){return t>>>=0,e||U(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readBigUInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,n=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(i)+(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=e*2**24+65536*this[++t]+256*this[++t]+this[++t],n=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(i)<>>=0,e>>>=0,r||U(t,e,this.length);let i=this[t],n=1,o=0;for(;++o=n&&(i-=Math.pow(2,8*e)),i},h.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||U(t,e,this.length);let i=e,n=1,o=this[t+--i];for(;i>0&&(n*=256);)o+=this[t+--i]*n;return n*=128,o>=n&&(o-=Math.pow(2,8*e)),o},h.prototype.readInt8=function(t,e){return t>>>=0,e||U(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){t>>>=0,e||U(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt16BE=function(t,e){t>>>=0,e||U(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt32LE=function(t,e){return t>>>=0,e||U(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return t>>>=0,e||U(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readBigInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(i)<>>=0,e||U(t,4,this.length),n.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return t>>>=0,e||U(t,4,this.length),n.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return t>>>=0,e||U(t,8,this.length),n.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return t>>>=0,e||U(t,8,this.length),n.read(this,t,!1,52,8)},h.prototype.writeUintLE=h.prototype.writeUIntLE=function(t,e,r,i){t=+t,e>>>=0,r>>>=0,i||V(this,t,e,r,Math.pow(2,8*r)-1,0);let n=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,i||V(this,t,e,r,Math.pow(2,8*r)-1,0);let n=r-1,o=1;for(this[e+n]=255&t;--n>=0&&(o*=256);)this[e+n]=t/o&255;return e+r},h.prototype.writeUint8=h.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,1,255,0),this[e]=255&t,e+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigUInt64LE=q((function(t,e=0){return S(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeBigUInt64BE=q((function(t,e=0){return T(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeIntLE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);V(this,t,e,r,i-1,-i)}let n=0,o=1,s=0;for(this[e]=255&t;++n>0)-s&255;return e+r},h.prototype.writeIntBE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);V(this,t,e,r,i-1,-i)}let n=r-1,o=1,s=0;for(this[e+n]=255&t;--n>=0&&(o*=256);)t<0&&0===s&&0!==this[e+n+1]&&(s=1),this[e+n]=(t/o>>0)-s&255;return e+r},h.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},h.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigInt64LE=q((function(t,e=0){return S(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeBigInt64BE=q((function(t,e=0){return T(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeFloatLE=function(t,e,r){return k(this,t,e,!0,r)},h.prototype.writeFloatBE=function(t,e,r){return k(this,t,e,!1,r)},h.prototype.writeDoubleLE=function(t,e,r){return F(this,t,e,!0,r)},h.prototype.writeDoubleBE=function(t,e,r){return F(this,t,e,!1,r)},h.prototype.copy=function(t,e,r,i){if(!h.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(n=e;n=i+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function x(t,e,r,i,n,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${i} and < 2${i} ** ${8*(o+1)}${i}`:`>= -(2${i} ** ${8*(o+1)-1}${i}) and < 2 ** ${8*(o+1)-1}${i}`:`>= ${e}${i} and <= ${r}${i}`,new L.ERR_OUT_OF_RANGE("value",n,t)}!function(t,e,r){z(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||O(e,t.length-(r+1))}(i,n,o)}function z(t,e){if("number"!=typeof t)throw new L.ERR_INVALID_ARG_TYPE(e,"number",t)}function O(t,e,r){if(Math.floor(t)!==t)throw z(t,r),new L.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new L.ERR_BUFFER_OUT_OF_BOUNDS;throw new L.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}j("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),j("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),j("ERR_OUT_OF_RANGE",(function(t,e,r){let i=`The value of "${t}" is out of range.`,n=r;return Number.isInteger(r)&&Math.abs(r)>2**32?n=Z(String(r)):"bigint"==typeof r&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=Z(n)),n+="n"),i+=` It must be ${e}. Received ${n}`,i}),RangeError);const H=/[^+/0-9A-Za-z-_]/g;function _(t,e){let r;e=e||1/0;const i=t.length;let n=null;const o=[];for(let s=0;s55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===i){(e-=3)>-1&&o.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(e-=3)>-1&&o.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function W(t){return i.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(H,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function J(t,e,r,i){let n;for(n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}function X(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function P(t){return t!=t}const K=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const i=16*r;for(let n=0;n<16;++n)e[i+n]=t[r]+t[n]}return e}();function q(t){return"undefined"==typeof BigInt?$:t}function $(){throw new Error("BigInt not supported")}},1924:(t,e,r)=>{"use strict";var i=r(210),n=r(5559),o=n(i("String.prototype.indexOf"));t.exports=function(t,e){var r=i(t,!!e);return"function"==typeof r&&o(t,".prototype.")>-1?n(r):r}},5559:(t,e,r)=>{"use strict";var i=r(8612),n=r(210),o=n("%Function.prototype.apply%"),s=n("%Function.prototype.call%"),a=n("%Reflect.apply%",!0)||i.call(s,o),h=n("%Object.getOwnPropertyDescriptor%",!0),u=n("%Object.defineProperty%",!0),l=n("%Math.max%");if(u)try{u({},"a",{value:1})}catch(t){u=null}t.exports=function(t){var e=a(i,s,arguments);if(h&&u){var r=h(e,"length");r.configurable&&u(e,"length",{value:1+l(0,t.length-(arguments.length-1))})}return e};var c=function(){return a(i,o,arguments)};u?u(t.exports,"apply",{value:c}):t.exports.apply=c},5581:function(t,e,r){var i,n;t.exports=(i=function(){try{return r(4431)}catch(t){}}(),n=r(9539),(()=>{var t={742:(t,e)=>{"use strict";e.byteLength=function(t){var e=h(t),r=e[0],i=e[1];return 3*(r+i)/4-i},e.toByteArray=function(t){var e,r,o=h(t),s=o[0],a=o[1],u=new n(function(t,e,r){return 3*(e+r)/4-r}(0,s,a)),l=0,c=a>0?s-4:s;for(r=0;r>16&255,u[l++]=e>>8&255,u[l++]=255&e;return 2===a&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,u[l++]=255&e),1===a&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,u[l++]=e>>8&255,u[l++]=255&e),u},e.fromByteArray=function(t){for(var e,i=t.length,n=i%3,o=[],s=16383,a=0,h=i-n;ah?h:a+s));return 1===n?(e=t[i-1],o.push(r[e>>2]+r[e<<4&63]+"==")):2===n&&(e=(t[i-2]<<8)+t[i-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),o.join("")};for(var r=[],i=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,a=o.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,i){for(var n,o,s=[],a=e;a>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},764:(t,e,r)=>{"use strict";const i=r(742),n=r(645),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=h,e.SlowBuffer=function(t){return+t!=t&&(t=0),h.alloc(+t)},e.INSPECT_MAX_BYTES=50;const s=2147483647;function a(t){if(t>s)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,h.prototype),e}function h(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return c(t)}return u(t,e,r)}function u(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!h.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|A(t,e);let i=a(r);const n=i.write(t,e);return n!==r&&(i=i.slice(0,n)),i}(t,e);if(ArrayBuffer.isView(t))return function(t){if(X(t,Uint8Array)){const e=new Uint8Array(t);return d(e.buffer,e.byteOffset,e.byteLength)}return f(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(X(t,ArrayBuffer)||t&&X(t.buffer,ArrayBuffer))return d(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(X(t,SharedArrayBuffer)||t&&X(t.buffer,SharedArrayBuffer)))return d(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const i=t.valueOf&&t.valueOf();if(null!=i&&i!==t)return h.from(i,e,r);const n=function(t){if(h.isBuffer(t)){const e=0|g(t.length),r=a(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||P(t.length)?a(0):f(t):"Buffer"===t.type&&Array.isArray(t.data)?f(t.data):void 0}(t);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return h.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function l(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function c(t){return l(t),a(t<0?0:0|g(t))}function f(t){const e=t.length<0?0:0|g(t.length),r=a(e);for(let i=0;i=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|t}function A(t,e){if(h.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||X(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;let n=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return _(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return W(t).length;default:if(n)return i?-1:_(t).length;e=(""+e).toLowerCase(),n=!0}}function M(t,e,r){let i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return R(this,e,r);case"utf8":case"utf-8":return C(this,e,r);case"ascii":return D(this,e,r);case"latin1":case"binary":return N(this,e,r);case"base64":return v(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return G(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function p(t,e,r){const i=t[e];t[e]=t[r],t[r]=i}function w(t,e,r,i,n){if(0===t.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),P(r=+r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof e&&(e=h.from(e,i)),h.isBuffer(e))return 0===e.length?-1:B(t,e,r,i,n);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):B(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function B(t,e,r,i,n){let o,s=1,a=t.length,h=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;s=2,a/=2,h/=2,r/=2}function u(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(n){let i=-1;for(o=r;oa&&(r=a-h),o=r;o>=0;o--){let r=!0;for(let i=0;in&&(i=n):i=n;const o=e.length;let s;for(i>o/2&&(i=o/2),s=0;s>8,n=r%256,o.push(n),o.push(i);return o}(e,t.length-r),t,r,i)}function v(t,e,r){return 0===e&&r===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,r))}function C(t,e,r){r=Math.min(t.length,r);const i=[];let n=e;for(;n239?4:e>223?3:e>191?2:1;if(n+s<=r){let r,i,a,h;switch(s){case 1:e<128&&(o=e);break;case 2:r=t[n+1],128==(192&r)&&(h=(31&e)<<6|63&r,h>127&&(o=h));break;case 3:r=t[n+1],i=t[n+2],128==(192&r)&&128==(192&i)&&(h=(15&e)<<12|(63&r)<<6|63&i,h>2047&&(h<55296||h>57343)&&(o=h));break;case 4:r=t[n+1],i=t[n+2],a=t[n+3],128==(192&r)&&128==(192&i)&&128==(192&a)&&(h=(15&e)<<18|(63&r)<<12|(63&i)<<6|63&a,h>65535&&h<1114112&&(o=h))}}null===o?(o=65533,s=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|1023&o),i.push(o),n+=s}return function(t){const e=t.length;if(e<=Q)return String.fromCharCode.apply(String,t);let r="",i=0;for(;ii.length?(h.isBuffer(e)||(e=h.from(e)),e.copy(i,n)):Uint8Array.prototype.set.call(i,e,n);else{if(!h.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(i,n)}n+=e.length}return i},h.byteLength=A,h.prototype._isBuffer=!0,h.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},o&&(h.prototype[o]=h.prototype.inspect),h.prototype.compare=function(t,e,r,i,n){if(X(t,Uint8Array)&&(t=h.from(t,t.offset,t.byteLength)),!h.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),e<0||r>t.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&e>=r)return 0;if(i>=n)return-1;if(e>=r)return 1;if(this===t)return 0;let o=(n>>>=0)-(i>>>=0),s=(r>>>=0)-(e>>>=0);const a=Math.min(o,s),u=this.slice(i,n),l=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i="utf8")):(i=r,r=void 0)}const n=this.length-e;if((void 0===r||r>n)&&(r=n),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return m(this,t,e,r);case"utf8":case"utf-8":return E(this,t,e,r);case"ascii":case"latin1":case"binary":return y(this,t,e,r);case"base64":return b(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const Q=4096;function D(t,e,r){let i="";r=Math.min(t.length,r);for(let n=e;ni)&&(r=i);let n="";for(let i=e;ir)throw new RangeError("Trying to access beyond buffer length")}function V(t,e,r,i,n,o){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}function S(t,e,r,i,n){x(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,r}function T(t,e,r,i,n){x(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=s,s>>=8,t[r+2]=s,s>>=8,t[r+1]=s,s>>=8,t[r]=s,r+8}function Y(t,e,r,i,n,o){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(t,e,r,i,o){return e=+e,r>>>=0,o||Y(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function F(t,e,r,i,o){return e=+e,r>>>=0,o||Y(t,0,r,8),n.write(t,e,r,i,52,8),r+8}h.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||U(t,e,this.length);let i=this[t],n=1,o=0;for(;++o>>=0,e>>>=0,r||U(t,e,this.length);let i=this[t+--e],n=1;for(;e>0&&(n*=256);)i+=this[t+--e]*n;return i},h.prototype.readUint8=h.prototype.readUInt8=function(t,e){return t>>>=0,e||U(t,1,this.length),this[t]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(t,e){return t>>>=0,e||U(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(t,e){return t>>>=0,e||U(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(t,e){return t>>>=0,e||U(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(t,e){return t>>>=0,e||U(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readBigUInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,n=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(i)+(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=e*2**24+65536*this[++t]+256*this[++t]+this[++t],n=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(i)<>>=0,e>>>=0,r||U(t,e,this.length);let i=this[t],n=1,o=0;for(;++o=n&&(i-=Math.pow(2,8*e)),i},h.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||U(t,e,this.length);let i=e,n=1,o=this[t+--i];for(;i>0&&(n*=256);)o+=this[t+--i]*n;return n*=128,o>=n&&(o-=Math.pow(2,8*e)),o},h.prototype.readInt8=function(t,e){return t>>>=0,e||U(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){t>>>=0,e||U(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt16BE=function(t,e){t>>>=0,e||U(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt32LE=function(t,e){return t>>>=0,e||U(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return t>>>=0,e||U(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readBigInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(i)<>>=0,e||U(t,4,this.length),n.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return t>>>=0,e||U(t,4,this.length),n.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return t>>>=0,e||U(t,8,this.length),n.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return t>>>=0,e||U(t,8,this.length),n.read(this,t,!1,52,8)},h.prototype.writeUintLE=h.prototype.writeUIntLE=function(t,e,r,i){t=+t,e>>>=0,r>>>=0,i||V(this,t,e,r,Math.pow(2,8*r)-1,0);let n=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,i||V(this,t,e,r,Math.pow(2,8*r)-1,0);let n=r-1,o=1;for(this[e+n]=255&t;--n>=0&&(o*=256);)this[e+n]=t/o&255;return e+r},h.prototype.writeUint8=h.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,1,255,0),this[e]=255&t,e+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigUInt64LE=q((function(t,e=0){return S(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeBigUInt64BE=q((function(t,e=0){return T(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeIntLE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);V(this,t,e,r,i-1,-i)}let n=0,o=1,s=0;for(this[e]=255&t;++n>0)-s&255;return e+r},h.prototype.writeIntBE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);V(this,t,e,r,i-1,-i)}let n=r-1,o=1,s=0;for(this[e+n]=255&t;--n>=0&&(o*=256);)t<0&&0===s&&0!==this[e+n+1]&&(s=1),this[e+n]=(t/o>>0)-s&255;return e+r},h.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},h.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigInt64LE=q((function(t,e=0){return S(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeBigInt64BE=q((function(t,e=0){return T(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeFloatLE=function(t,e,r){return k(this,t,e,!0,r)},h.prototype.writeFloatBE=function(t,e,r){return k(this,t,e,!1,r)},h.prototype.writeDoubleLE=function(t,e,r){return F(this,t,e,!0,r)},h.prototype.writeDoubleBE=function(t,e,r){return F(this,t,e,!1,r)},h.prototype.copy=function(t,e,r,i){if(!h.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(n=e;n=i+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function x(t,e,r,i,n,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${i} and < 2${i} ** ${8*(o+1)}${i}`:`>= -(2${i} ** ${8*(o+1)-1}${i}) and < 2 ** ${8*(o+1)-1}${i}`:`>= ${e}${i} and <= ${r}${i}`,new L.ERR_OUT_OF_RANGE("value",n,t)}!function(t,e,r){z(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||O(e,t.length-(r+1))}(i,n,o)}function z(t,e){if("number"!=typeof t)throw new L.ERR_INVALID_ARG_TYPE(e,"number",t)}function O(t,e,r){if(Math.floor(t)!==t)throw z(t,r),new L.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new L.ERR_BUFFER_OUT_OF_BOUNDS;throw new L.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}j("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),j("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),j("ERR_OUT_OF_RANGE",(function(t,e,r){let i=`The value of "${t}" is out of range.`,n=r;return Number.isInteger(r)&&Math.abs(r)>2**32?n=Z(String(r)):"bigint"==typeof r&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=Z(n)),n+="n"),i+=` It must be ${e}. Received ${n}`,i}),RangeError);const H=/[^+/0-9A-Za-z-_]/g;function _(t,e){let r;e=e||1/0;const i=t.length;let n=null;const o=[];for(let s=0;s55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===i){(e-=3)>-1&&o.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(e-=3)>-1&&o.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function W(t){return i.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(H,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function J(t,e,r,i){let n;for(n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}function X(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function P(t){return t!=t}const K=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const i=16*r;for(let n=0;n<16;++n)e[i+n]=t[r]+t[n]}return e}();function q(t){return"undefined"==typeof BigInt?$:t}function $(){throw new Error("BigInt not supported")}},141:(t,e,r)=>{"use strict";e.BigNumber=r(66).BigNumber,e.Commented=r(20),e.Diagnose=r(694),e.Decoder=r(774),e.Encoder=r(666),e.Simple=r(32),e.Tagged=r(785),e.Map=r(70),e.UI=e.Commented.comment,e.fI=e.Decoder.decodeAll,e.h8=e.Decoder.decodeFirst,e.cc=e.Decoder.decodeAllSync,e.$u=e.Decoder.decodeFirstSync,e.M=e.Diagnose.diagnose,e.cv=e.Encoder.encode,e.N2=e.Encoder.encodeCanonical,e.TG=e.Encoder.encodeOne,e.WR=e.Encoder.encodeAsync,e.Jx=e.Decoder.decodeFirstSync,e.ww={decode:e.Decoder.decodeFirstSync,encode:e.Encoder.encode,buffer:!0,name:"cbor"},e.vc=!0},20:(t,e,r)=>{"use strict";const i=r(830),n=r(873),o=r(774),s=r(202),{MT:a,NUMBYTES:h,SYMS:u}=r(66),{Buffer:l}=r(764);function c(t){return t>1?"s":""}class f extends i.Transform{constructor(t={}){const{depth:e=1,max_depth:r=10,no_summary:i=!1,tags:n={},bigint:a,preferWeb:h,encoding:u,...l}=t;super({...l,readableObjectMode:!1,writableObjectMode:!1}),this.depth=e,this.max_depth=r,this.all=new s,n[24]||(n[24]=this._tag_24.bind(this)),this.parser=new o({tags:n,max_depth:r,bigint:a,preferWeb:h,encoding:u}),this.parser.on("value",this._on_value.bind(this)),this.parser.on("start",this._on_start.bind(this)),this.parser.on("start-string",this._on_start_string.bind(this)),this.parser.on("stop",this._on_stop.bind(this)),this.parser.on("more-bytes",this._on_more.bind(this)),this.parser.on("error",this._on_error.bind(this)),i||this.parser.on("data",this._on_data.bind(this)),this.parser.bs.on("read",this._on_read.bind(this))}_tag_24(t){const e=new f({depth:this.depth+1,no_summary:!0});e.on("data",(t=>this.push(t))),e.on("error",(t=>this.emit("error",t))),e.end(t)}_transform(t,e,r){this.parser.write(t,e,r)}_flush(t){return this.parser._flush(t)}static comment(t,e={},r=null){if(null==t)throw new Error("input required");({options:e,cb:r}=function(t,e){switch(typeof t){case"function":return{options:{},cb:t};case"string":return{options:{encoding:t},cb:e};case"number":return{options:{max_depth:t},cb:e};case"object":return{options:t||{},cb:e};default:throw new TypeError("Unknown option type")}}(e,r));const i=new s,{encoding:o="hex",...a}=e,h=new f(a);let u=null;return"function"==typeof r?(h.on("end",(()=>{r(null,i.toString("utf8"))})),h.on("error",r)):u=new Promise(((t,e)=>{h.on("end",(()=>{t(i.toString("utf8"))})),h.on("error",e)})),h.pipe(i),n.guessEncoding(t,o).pipe(h),u}_on_error(t){this.push("ERROR: "),this.push(t.toString()),this.push("\n")}_on_read(t){this.all.write(t);const e=t.toString("hex");this.push(new Array(this.depth+1).join(" ")),this.push(e);let r=2*(this.max_depth-this.depth)-e.length;return r<1&&(r=1),this.push(new Array(r+1).join(" ")),this.push("-- ")}_on_more(t,e,r,i){let n="";switch(this.depth++,t){case a.POS_INT:n="Positive number,";break;case a.NEG_INT:n="Negative number,";break;case a.ARRAY:n="Array, length";break;case a.MAP:n="Map, count";break;case a.BYTE_STRING:n="Bytes, length";break;case a.UTF8_STRING:n="String, length";break;case a.SIMPLE_FLOAT:n=1===e?"Simple value,":"Float,"}return this.push(n+" next "+e+" byte"+c(e)+"\n")}_on_start_string(t,e,r,i){let n="";switch(this.depth++,t){case a.BYTE_STRING:n="Bytes, length: "+e;break;case a.UTF8_STRING:n="String, length: "+e.toString()}return this.push(n+"\n")}_on_start(t,e,r,i){switch(this.depth++,r){case a.ARRAY:this.push(`[${i}], `);break;case a.MAP:i%2?this.push(`{Val:${Math.floor(i/2)}}, `):this.push(`{Key:${Math.floor(i/2)}}, `)}switch(t){case a.TAG:this.push(`Tag #${e}`),24===e&&this.push(" Encoded CBOR data item");break;case a.ARRAY:e===u.STREAM?this.push("Array (streaming)"):this.push(`Array, ${e} item${c(e)}`);break;case a.MAP:e===u.STREAM?this.push("Map (streaming)"):this.push(`Map, ${e} pair${c(e)}`);break;case a.BYTE_STRING:this.push("Bytes (streaming)");break;case a.UTF8_STRING:this.push("String (streaming)")}return this.push("\n")}_on_stop(t){return this.depth--}_on_value(t,e,r,i){if(t!==u.BREAK)switch(e){case a.ARRAY:this.push(`[${r}], `);break;case a.MAP:r%2?this.push(`{Val:${Math.floor(r/2)}}, `):this.push(`{Key:${Math.floor(r/2)}}, `)}const o=n.cborValueToString(t,-1/0);switch("string"==typeof t||l.isBuffer(t)?(t.length>0&&(this.push(o),this.push("\n")),this.depth--):(this.push(o),this.push("\n")),i){case h.ONE:case h.TWO:case h.FOUR:case h.EIGHT:this.depth--}}_on_data(){return this.push("0x"),this.push(this.all.read().toString("hex")),this.push("\n")}}t.exports=f},66:(t,e,r)=>{"use strict";let i=null;try{i=r(937).BigNumber}catch(t){}if(e.BigNumber=i,e.MT={POS_INT:0,NEG_INT:1,BYTE_STRING:2,UTF8_STRING:3,ARRAY:4,MAP:5,TAG:6,SIMPLE_FLOAT:7},e.TAG={DATE_STRING:0,DATE_EPOCH:1,POS_BIGINT:2,NEG_BIGINT:3,DECIMAL_FRAC:4,BIGFLOAT:5,BASE64URL_EXPECTED:21,BASE64_EXPECTED:22,BASE16_EXPECTED:23,CBOR:24,URI:32,BASE64URL:33,BASE64:34,REGEXP:35,MIME:36,SET:258},e.NUMBYTES={ZERO:0,ONE:24,TWO:25,FOUR:26,EIGHT:27,INDEFINITE:31},e.SIMPLE={FALSE:20,TRUE:21,NULL:22,UNDEFINED:23},e.SYMS={NULL:Symbol.for("github.com/hildjj/node-cbor/null"),UNDEFINED:Symbol.for("github.com/hildjj/node-cbor/undef"),PARENT:Symbol.for("github.com/hildjj/node-cbor/parent"),BREAK:Symbol.for("github.com/hildjj/node-cbor/break"),STREAM:Symbol.for("github.com/hildjj/node-cbor/stream")},e.SHIFT32=4294967296,e.BI={MINUS_ONE:BigInt(-1),NEG_MAX:BigInt(-1)-BigInt(Number.MAX_SAFE_INTEGER),MAXINT32:BigInt("0xffffffff"),MAXINT64:BigInt("0xffffffffffffffff"),SHIFT32:BigInt(e.SHIFT32)},e.BigNumber){const t=new e.BigNumber(-1);e.BN={MINUS_ONE:t,NEG_MAX:t.minus(new e.BigNumber(Number.MAX_SAFE_INTEGER.toString(16),16)),TWO:new e.BigNumber(2),MAXINT:new e.BigNumber("0x20000000000000"),MAXINT32:new e.BigNumber(4294967295),MAXINT64:new e.BigNumber("0xffffffffffffffff"),SHIFT32:new e.BigNumber(e.SHIFT32)}}},774:(t,e,r)=>{"use strict";const i=r(71),n=r(785),o=r(32),s=r(873),a=r(202),h=r(66),{MT:u,NUMBYTES:l,SYMS:c,BI:f}=h,{Buffer:d}=r(764),g=Symbol("count"),A=Symbol("major type"),M=Symbol("error"),p=Symbol("not found");function w(t,e,r){const i=[];return i[g]=r,i[c.PARENT]=t,i[A]=e,i}function B(t,e){const r=new a;return r[g]=-1,r[c.PARENT]=t,r[A]=e,r}function m(t){return s.bufferToBigInt(t)}function E(t){return f.MINUS_ONE-s.bufferToBigInt(t)}class y extends Error{constructor(t,e){super(`Unexpected data: 0x${t.toString(16)}`),this.name="UnexpectedDataError",this.byte=t,this.value=e}}function b(t,e){switch(typeof t){case"function":return{options:{},cb:t};case"string":return{options:{encoding:t},cb:e};case"object":return{options:t||{},cb:e};default:throw new TypeError("Unknown option type")}}class I extends i{constructor(t={}){const{tags:e={},max_depth:r=-1,bigint:i=!0,preferWeb:n=!1,required:o=!1,encoding:s="hex",extendedResults:h=!1,...u}=t;super({defaultEncoding:s,...u}),this.running=!0,this.max_depth=r,this.tags=e,this.preferWeb=n,this.extendedResults=h,this.bigint=i,this.required=o,h&&(this.bs.on("read",this._onRead.bind(this)),this.valueBytes=new a),i&&(null==this.tags[2]&&(this.tags[2]=m),null==this.tags[3]&&(this.tags[3]=E))}static nullcheck(t){switch(t){case c.NULL:return null;case c.UNDEFINED:return;case p:throw new Error("Value not found");default:return t}}static decodeFirstSync(t,e={}){if(null==t)throw new TypeError("input required");({options:e}=b(e));const{encoding:r="hex",...i}=e,n=new I(i),o=s.guessEncoding(t,r),a=n._parse();let h=a.next();for(;!h.done;){const t=o.read(h.value);if(null==t||t.length!==h.value)throw new Error("Insufficient data");n.extendedResults&&n.valueBytes.write(t),h=a.next(t)}let u=null;if(n.extendedResults)u=h.value,u.unused=o.read();else if(u=I.nullcheck(h.value),o.length>0){const t=o.read(1);throw o.unshift(t),new y(t[0],u)}return u}static decodeAllSync(t,e={}){if(null==t)throw new TypeError("input required");({options:e}=b(e));const{encoding:r="hex",...i}=e,n=new I(i),o=s.guessEncoding(t,r),a=[];for(;o.length>0;){const t=n._parse();let e=t.next();for(;!e.done;){const r=o.read(e.value);if(null==r||r.length!==e.value)throw new Error("Insufficient data");n.extendedResults&&n.valueBytes.write(r),e=t.next(r)}a.push(I.nullcheck(e.value))}return a}static decodeFirst(t,e={},r=null){if(null==t)throw new TypeError("input required");({options:e,cb:r}=b(e,r));const{encoding:i="hex",required:n=!1,...o}=e,a=new I(o);let h=p;const u=s.guessEncoding(t,i),l=new Promise(((t,e)=>{a.on("data",(t=>{h=I.nullcheck(t),a.close()})),a.once("error",(r=>a.extendedResults&&r instanceof y?(h.unused=a.bs.slice(),t(h)):(h!==p&&(r.value=h),h=M,a.close(),e(r)))),a.once("end",(()=>{switch(h){case p:return n?e(new Error("No CBOR found")):t(h);case M:return;default:return t(h)}}))}));return"function"==typeof r&&l.then((t=>r(null,t)),r),u.pipe(a),l}static decodeAll(t,e={},r=null){if(null==t)throw new TypeError("input required");({options:e,cb:r}=b(e,r));const{encoding:i="hex",...n}=e,o=new I(n),a=[];o.on("data",(t=>a.push(I.nullcheck(t))));const h=new Promise(((t,e)=>{o.on("error",e),o.on("end",(()=>t(a)))}));return"function"==typeof r&&h.then((t=>r(void 0,t)),(t=>r(t,void 0))),s.guessEncoding(t,i).pipe(o),h}close(){this.running=!1,this.__fresh=!0}_onRead(t){this.valueBytes.write(t)}*_parse(){let t=null,e=0,r=null;for(;;){if(this.max_depth>=0&&e>this.max_depth)throw new Error("Maximum depth "+this.max_depth+" exceeded");const[i]=yield 1;if(!this.running)throw this.bs.unshift(d.from([i])),new y(i);const M=i>>5,p=31&i,m=null!=t?t[A]:void 0,E=null!=t?t.length:void 0;switch(p){case l.ONE:this.emit("more-bytes",M,1,m,E),[r]=yield 1;break;case l.TWO:case l.FOUR:case l.EIGHT:{const t=1<{"use strict";const i=r(830),n=r(774),o=r(873),s=r(202),{MT:a,SYMS:h}=r(66);class u extends i.Transform{constructor(t={}){const{separator:e="\n",stream_errors:r=!1,tags:i,max_depth:o,bigint:s,preferWeb:a,encoding:h,...u}=t;super({...u,readableObjectMode:!1,writableObjectMode:!1}),this.float_bytes=-1,this.separator=e,this.stream_errors=r,this.parser=new n({tags:i,max_depth:o,bigint:s,preferWeb:a,encoding:h}),this.parser.on("more-bytes",this._on_more.bind(this)),this.parser.on("value",this._on_value.bind(this)),this.parser.on("start",this._on_start.bind(this)),this.parser.on("stop",this._on_stop.bind(this)),this.parser.on("data",this._on_data.bind(this)),this.parser.on("error",this._on_error.bind(this))}_transform(t,e,r){return this.parser.write(t,e,r)}_flush(t){return this.parser._flush((e=>this.stream_errors?(e&&this._on_error(e),t()):t(e)))}static diagnose(t,e={},r=null){if(null==t)throw new Error("input required");({options:e,cb:r}=function(t,e){switch(typeof t){case"function":return{options:{},cb:t};case"string":return{options:{encoding:t},cb:e};case"object":return{options:t||{},cb:e};default:throw new TypeError("Unknown option type")}}(e,r));const{encoding:i="hex",...n}=e,a=new s,h=new u(n);let l=null;return"function"==typeof r?(h.on("end",(()=>r(null,a.toString("utf8")))),h.on("error",r)):l=new Promise(((t,e)=>{h.on("end",(()=>t(a.toString("utf8")))),h.on("error",e)})),h.pipe(a),o.guessEncoding(t,i).pipe(h),l}_on_error(t){return this.stream_errors?this.push(t.toString()):this.emit("error",t)}_on_more(t,e,r,i){t===a.SIMPLE_FLOAT&&(this.float_bytes={2:1,4:2,8:3}[e])}_fore(t,e){switch(t){case a.BYTE_STRING:case a.UTF8_STRING:case a.ARRAY:e>0&&this.push(", ");break;case a.MAP:e>0&&(e%2?this.push(": "):this.push(", "))}}_on_value(t,e,r){if(t===h.BREAK)return;this._fore(e,r);const i=this.float_bytes;this.float_bytes=-1,this.push(o.cborValueToString(t,i))}_on_start(t,e,r,i){switch(this._fore(r,i),t){case a.TAG:this.push(`${e}(`);break;case a.ARRAY:this.push("[");break;case a.MAP:this.push("{");break;case a.BYTE_STRING:case a.UTF8_STRING:this.push("(")}e===h.STREAM&&this.push("_ ")}_on_stop(t){switch(t){case a.TAG:this.push(")");break;case a.ARRAY:this.push("]");break;case a.MAP:this.push("}");break;case a.BYTE_STRING:case a.UTF8_STRING:this.push(")")}}_on_data(){this.push(this.separator)}}t.exports=u},666:(t,e,r)=>{"use strict";const i=r(830),n=r(202),o=r(873),s=r(66),{MT:a,NUMBYTES:h,SHIFT32:u,SIMPLE:l,SYMS:c,TAG:f,BI:d}=s,{Buffer:g}=r(764),A=a.SIMPLE_FLOAT<<5|h.TWO,M=a.SIMPLE_FLOAT<<5|h.FOUR,p=a.SIMPLE_FLOAT<<5|h.EIGHT,w=a.SIMPLE_FLOAT<<5|l.TRUE,B=a.SIMPLE_FLOAT<<5|l.FALSE,m=a.SIMPLE_FLOAT<<5|l.UNDEFINED,E=a.SIMPLE_FLOAT<<5|l.NULL,y=g.from([255]),b=g.from("f97e00","hex"),I=g.from("f9fc00","hex"),v=g.from("f97c00","hex"),C=g.from("f98000","hex");class Q extends i.Transform{constructor(t={}){const{canonical:e=!1,encodeUndefined:r,disallowUndefinedKeys:i=!1,dateType:o="number",collapseBigIntegers:a=!1,detectLoops:h=!1,omitUndefinedProperties:u=!1,genTypes:l=[],...c}=t;if(super({...c,readableObjectMode:!1,writableObjectMode:!0}),this.canonical=e,this.encodeUndefined=r,this.disallowUndefinedKeys=i,this.dateType=function(t){if(!t)return"number";switch(t.toLowerCase()){case"number":return"number";case"float":return"float";case"int":return"int";case"string":return"string"}throw new TypeError(`dateType invalid, got "${t}"`)}(o),this.collapseBigIntegers=!!this.canonical||a,this.detectLoops=h,"boolean"==typeof h)h&&(this.detectLoops=new WeakSet);else if(!(h instanceof WeakSet))throw new TypeError("detectLoops must be boolean or WeakSet");if(this.omitUndefinedProperties=u,this.semanticTypes={Array:this._pushArray,Date:this._pushDate,Buffer:this._pushBuffer,[g.name]:this._pushBuffer,Map:this._pushMap,NoFilter:this._pushNoFilter,[n.name]:this._pushNoFilter,RegExp:this._pushRegexp,Set:this._pushSet,ArrayBuffer:this._pushArrayBuffer,Uint8ClampedArray:this._pushTypedArray,Uint8Array:this._pushTypedArray,Uint16Array:this._pushTypedArray,Uint32Array:this._pushTypedArray,Int8Array:this._pushTypedArray,Int16Array:this._pushTypedArray,Int32Array:this._pushTypedArray,Float32Array:this._pushTypedArray,Float64Array:this._pushTypedArray,URL:this._pushURL,Boolean:this._pushBoxed,Number:this._pushBoxed,String:this._pushBoxed},s.BigNumber&&(this.semanticTypes[s.BigNumber.name]=this._pushBigNumber),"undefined"!=typeof BigUint64Array&&(this.semanticTypes[BigUint64Array.name]=this._pushTypedArray),"undefined"!=typeof BigInt64Array&&(this.semanticTypes[BigInt64Array.name]=this._pushTypedArray),Array.isArray(l))for(let t=0,e=l.length;tvoid 0!==e))),r.indefinite){if(!t._pushUInt8(a.MAP<<5|h.INDEFINITE))return!1}else if(!t._pushInt(i.length,a.MAP))return!1;if(t.canonical){const e=new Q({genTypes:t.semanticTypes,canonical:t.canonical,detectLoops:!!t.detectLoops,dateType:t.dateType,disallowUndefinedKeys:t.disallowUndefinedKeys,collapseBigIntegers:t.collapseBigIntegers}),r=new n({highWaterMark:t.readableHighWaterMark});e.pipe(r),i.sort((([t],[i])=>{e.pushAny(t);const n=r.read();e.pushAny(i);const o=r.read();return n.compare(o)}));for(const[e,r]of i){if(t.disallowUndefinedKeys&&void 0===e)throw new Error("Invalid Map key: undefined");if(!t.pushAny(e)||!t.pushAny(r))return!1}}else for(const[e,r]of i){if(t.disallowUndefinedKeys&&void 0===e)throw new Error("Invalid Map key: undefined");if(!t.pushAny(e)||!t.pushAny(r))return!1}return!(r.indefinite&&!t.push(y))}_pushTypedArray(t,e){let r=64,i=e.BYTES_PER_ELEMENT;const{name:n}=e.constructor;return n.startsWith("Float")?(r|=16,i/=2):n.includes("U")||(r|=8),(n.includes("Clamped")||1!==i&&!o.isBigEndian())&&(r|=4),r|={1:0,2:1,4:2,8:3}[i],!!t._pushTag(r)&&t._pushBuffer(t,g.from(e.buffer,e.byteOffset,e.byteLength))}_pushArrayBuffer(t,e){return t._pushBuffer(t,g.from(e))}removeLoopDetectors(){return!!this.detectLoops&&(this.detectLoops=new WeakSet,!0)}_pushObject(t,e){if(!t)return this._pushNull(t);if(!(e={indefinite:!1,skipTypes:!1,...e}).indefinite&&this.detectLoops){if(this.detectLoops.has(t))throw new Error("Loop detected while CBOR encoding.\nCall removeLoopDetectors before resuming.");this.detectLoops.add(t)}if(!e.skipTypes){const e=t.encodeCBOR;if("function"==typeof e)return e.call(t,this);const r=this.semanticTypes[t.constructor.name];if(r)return r.call(t,this,t)}const r=Object.keys(t).filter((e=>{const r=typeof t[e];return"function"!==r&&(!this.omitUndefinedProperties||"undefined"!==r)})),i={};if(this.canonical&&r.sort(((t,e)=>{const r=i[t]||(i[t]=Q.encode(t)),n=i[e]||(i[e]=Q.encode(e));return r.compare(n)})),e.indefinite){if(!this._pushUInt8(a.MAP<<5|h.INDEFINITE))return!1}else if(!this._pushInt(r.length,a.MAP))return!1;let n=null;for(let e=0,o=r.length;e{const n=[],o=new Q(e);o.on("data",(t=>n.push(t))),o.on("error",i),o.on("finish",(()=>r(g.concat(n)))),o.pushAny(t),o.end()}))}}t.exports=Q},70:(t,e,r)=>{"use strict";const{Buffer:i}=r(764),n=r(666),o=r(774),{MT:s}=r(66);class a extends Map{constructor(t){super(t)}static _encode(t){return n.encodeCanonical(t).toString("base64")}static _decode(t){return o.decodeFirstSync(t,"base64")}get(t){return super.get(a._encode(t))}set(t,e){return super.set(a._encode(t),e)}delete(t){return super.delete(a._encode(t))}has(t){return super.has(a._encode(t))}*keys(){for(const t of super.keys())yield a._decode(t)}*entries(){for(const t of super.entries())yield[a._decode(t[0]),t[1]]}[Symbol.iterator](){return this.entries()}forEach(t,e){if("function"!=typeof t)throw new TypeError("Must be function");for(const e of super.entries())t.call(this,e[1],a._decode(e[0]),this)}encodeCBOR(t){if(!t._pushInt(this.size,s.MAP))return!1;if(t.canonical){const e=Array.from(super.entries()).map((t=>[i.from(t[0],"base64"),t[1]]));e.sort(((t,e)=>t[0].compare(e[0])));for(const r of e)if(!t.push(r[0])||!t.pushAny(r[1]))return!1}else for(const e of super.entries())if(!t.push(i.from(e[0],"base64"))||!t.pushAny(e[1]))return!1;return!0}}t.exports=a},32:(t,e,r)=>{"use strict";const{MT:i,SIMPLE:n,SYMS:o}=r(66);class s{constructor(t){if("number"!=typeof t)throw new Error("Invalid Simple type: "+typeof t);if(t<0||t>255||(0|t)!==t)throw new Error("value must be a small positive integer: "+t);this.value=t}toString(){return"simple("+this.value+")"}inspect(t,e){return"simple("+this.value+")"}encodeCBOR(t){return t._pushInt(this.value,i.SIMPLE_FLOAT)}static isSimple(t){return t instanceof s}static decode(t,e=!0,r=!1){switch(t){case n.FALSE:return!1;case n.TRUE:return!0;case n.NULL:return e?null:o.NULL;case n.UNDEFINED:if(e)return;return o.UNDEFINED;case-1:if(!e||!r)throw new Error("Invalid BREAK");return o.BREAK;default:return new s(t)}}}t.exports=s},785:(t,e,r)=>{"use strict";const i=r(66),n=r(873);function o(t,e){if(n.isBufferish(t))t.toJSON=e;else if(Array.isArray(t))for(const r of t)o(r,e);else if(t&&"object"==typeof t&&(!(t instanceof h)||t.tag<21||t.tag>23))for(const r of Object.values(t))o(r,e)}const s={64:Uint8Array,65:Uint16Array,66:Uint32Array,68:Uint8ClampedArray,69:Uint16Array,70:Uint32Array,72:Int8Array,73:Int16Array,74:Int32Array,77:Int16Array,78:Int32Array,81:Float32Array,82:Float64Array,85:Float32Array,86:Float64Array};"undefined"!=typeof BigUint64Array&&(s[67]=BigUint64Array,s[71]=BigUint64Array),"undefined"!=typeof BigInt64Array&&(s[75]=BigInt64Array,s[79]=BigInt64Array);const a=Symbol("INTERNAL_JSON");class h{constructor(t,e,r){if(this.tag=t,this.value=e,this.err=r,"number"!=typeof this.tag)throw new Error("Invalid tag type ("+typeof this.tag+")");if(this.tag<0||(0|this.tag)!==this.tag)throw new Error("Tag must be a positive integer: "+this.tag)}toJSON(){if(this[a])return this[a]();const t={tag:this.tag,value:this.value};return this.err&&(t.err=this.err),t}toString(){return`${this.tag}(${JSON.stringify(this.value)})`}encodeCBOR(t){return t._pushTag(this.tag),t.pushAny(this.value)}convert(t){let e=null!=t?t[this.tag]:void 0;if("function"!=typeof e&&(e=h["_tag_"+this.tag],"function"!=typeof e)){if(e=s[this.tag],"function"!=typeof e)return this;e=this._toTypedArray}try{return e.call(this,this.value)}catch(t){return t&&t.message&&t.message.length>0?this.err=t.message:this.err=t,this}}_toTypedArray(t){const{tag:e}=this,r=s[e];if(!r)throw new Error(`Invalid typed array tag: ${e}`);const i=2**(((16&e)>>4)+(3&e));return!(4&e)!==n.isBigEndian()&&i>1&&function(t,e,r,i){const n=new DataView(t),[o,s]={2:[n.getUint16,n.setUint16],4:[n.getUint32,n.setUint32],8:[n.getBigUint64,n.setBigUint64]}[e],a=r+i;for(let t=r;tn.base64url(t):o(t,(function(){return n.base64url(this)})),this}static _tag_22(t){return n.isBufferish(t)?this[a]=()=>n.base64(t):o(t,(function(){return n.base64(this)})),this}static _tag_23(t){return n.isBufferish(t)?this[a]=()=>t.toString("hex"):o(t,(function(){return this.toString("hex")})),this}static _tag_32(t){return new URL(t)}static _tag_33(t){if(!t.match(/^[a-zA-Z0-9_-]+$/))throw new Error("Invalid base64url characters");const e=t.length%4;if(1===e)throw new Error("Invalid base64url length");if(2===e){if(-1==="AQgw".indexOf(t[t.length-1]))throw new Error("Invalid base64 padding")}else if(3===e&&-1==="AEIMQUYcgkosw048".indexOf(t[t.length-1]))throw new Error("Invalid base64 padding");return this}static _tag_34(t){const e=t.match(/^[a-zA-Z0-9+/]+(={0,2})$/);if(!e)throw new Error("Invalid base64url characters");if(t.length%4!=0)throw new Error("Invalid base64url length");if("="===e[1]){if(-1==="AQgw".indexOf(t[t.length-2]))throw new Error("Invalid base64 padding")}else if("=="===e[1]&&-1==="AEIMQUYcgkosw048".indexOf(t[t.length-3]))throw new Error("Invalid base64 padding");return this}static _tag_35(t){return new RegExp(t)}static _tag_258(t){return new Set(t)}}h.INTERNAL_JSON=a,t.exports=h},873:(t,e,r)=>{"use strict";const{Buffer:i}=r(764),n=r(202),o=r(830),s=r(960),a=r(66),{NUMBYTES:h,SHIFT32:u,BI:l,SYMS:c}=a;let f=null;try{f=r(669)}catch(t){f=r(595)}e.inspect=f.inspect;const d=new s("utf8",{fatal:!0,ignoreBOM:!0});e.utf8=t=>d.decode(t),e.utf8.checksUTF8=!0,e.isBufferish=function(t){return t&&"object"==typeof t&&(i.isBuffer(t)||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof ArrayBuffer||t instanceof DataView)},e.bufferishToBuffer=function(t){return i.isBuffer(t)?t:ArrayBuffer.isView(t)?i.from(t.buffer,t.byteOffset,t.byteLength):t instanceof ArrayBuffer?i.from(t):null},e.parseCBORint=function(t,e,r=!0){switch(t){case h.ONE:return e.readUInt8(0);case h.TWO:return e.readUInt16BE(0);case h.FOUR:return e.readUInt32BE(0);case h.EIGHT:{const t=e.readUInt32BE(0),i=e.readUInt32BE(4);if(t>2097151){if(r)return BigInt(t)*l.SHIFT32+BigInt(i);if(!a.BigNumber)throw new Error("No bigint and no bignumber.js");return new a.BigNumber(t).times(u).plus(i)}return t*u+i}default:throw new Error("Invalid additional info for int: "+t)}},e.writeHalf=function(t,e){const r=i.allocUnsafe(4);r.writeFloatBE(e,0);const n=r.readUInt32BE(0);if(0!=(8191&n))return!1;let o=n>>16&32768;const s=n>>23&255,a=8388607&n;if(s>=113&&s<=142)o+=(s-112<<10)+(a>>13);else{if(!(s>=103&&s<113))return!1;if(a&(1<<126-s)-1)return!1;o+=a+8388608>>126-s}return t.writeUInt16BE(o),!0},e.parseHalf=function(t){const e=128&t[0]?-1:1,r=(124&t[0])>>2,i=(3&t[0])<<8|t[1];return r?31===r?e*(i?NaN:1/0):e*Math.pow(2,r-25)*(1024+i):5.960464477539063e-8*e*i},e.parseCBORfloat=function(t){switch(t.length){case 2:return e.parseHalf(t);case 4:return t.readFloatBE(0);case 8:return t.readDoubleBE(0);default:throw new Error("Invalid float size: "+t.length)}},e.hex=function(t){return i.from(t.replace(/^0x/,""),"hex")},e.bin=function(t){let e=0,r=(t=t.replace(/\s/g,"")).length%8||8;const n=[];for(;r<=t.length;)n.push(parseInt(t.slice(e,r),2)),e=r,r+=8;return i.from(n)},e.arrayEqual=function(t,e){return null==t&&null==e||null!=t&&null!=e&&t.length===e.length&&t.every(((t,r)=>t===e[r]))},e.bufferToBignumber=function(t){if(!a.BigNumber)throw new Error("No bigint and no bignumber.js");return new a.BigNumber(t.toString("hex"),16)},e.bufferToBigInt=function(t){return BigInt("0x"+t.toString("hex"))},e.cborValueToString=function(t,r=-1){switch(typeof t){case"symbol":{switch(t){case c.NULL:return"null";case c.UNDEFINED:return"undefined";case c.BREAK:return"BREAK"}if(t.description)return t.description;const e=t.toString().match(/^Symbol\((.*)\)/);return e&&e[1]?e[1]:"Symbol"}case"string":return JSON.stringify(t);case"bigint":return t.toString();case"number":return r>0?f.inspect(t)+"_"+r:f.inspect(t)}const i=e.bufferishToBuffer(t);if(i){const t=i.toString("hex");return r===-1/0?t:`h'${t}'`}return a.BigNumber&&a.BigNumber.isBigNumber(t)?t.toString():t&&"function"==typeof t.inspect?t.inspect():f.inspect(t)},e.guessEncoding=function(t,r){if("string"==typeof t)return new n(t,null!=r?r:"hex");const i=e.bufferishToBuffer(t);if(i)return new n(i);if((s=t)instanceof o.Readable||["read","on","pipe"].every((t=>"function"==typeof s[t])))return t;var s;throw new Error("Unknown input type")};const g={"=":"","+":"-","/":"_"};e.base64url=function(t){return e.bufferishToBuffer(t).toString("base64").replace(/[=+/]/g,(t=>g[t]))},e.base64=function(t){return e.bufferishToBuffer(t).toString("base64")},e.isBigEndian=function(){const t=new Uint8Array(4);return!((new Uint32Array(t.buffer)[0]=1)&t[0])}},960:(t,e,r)=>{"use strict";let i=null;if("function"==typeof TextDecoder)i=TextDecoder;else if("undefined"!=typeof window)i=window.TextDecoder;else if("undefined"!=typeof self)i=self.TextDecoder;else try{const t=r(669);"function"!=typeof i&&(i=t.TextDecoder)}catch(t){}if("function"!=typeof i){class t{constructor(t,e){this.utfLabel=t,this.options=e}decode(t){const e=t.toString(this.utfLabel);if(this.options.fatal)for(const t of e)if(65533===t.codePointAt(0)){const t=new TypeError("[ERR_ENCODING_INVALID_ENCODED_DATA]: The encoded data was not valid for encoding "+this.utfLabel);throw t.code="ERR_ENCODING_INVALID_ENCODED_DATA",t.errno=12,t}return e}}i=t}t.exports=i},202:(t,e,r)=>{"use strict";const i=r(830),{Buffer:n}=r(764),o=r(960);let s=null,a=Symbol.for("nodejs.util.inspect.custom");try{s=r(669),a=s.inspect.custom}catch(t){}const h=new o("utf8",{fatal:!0,ignoreBOM:!0});class u extends i.Transform{constructor(t,e,r){null==r&&(r={});let i=null,o=null;switch(typeof t){case"object":n.isBuffer(t)?(i=t,null!=e&&"object"==typeof e&&(r=e)):r=t;break;case"string":i=t,null!=e&&"object"==typeof e?r=e:o=e}null==r&&(r={}),null==i&&(i=r.input),null==o&&(o=r.inputEncoding),delete r.input,delete r.inputEncoding;const s=null==r.watchPipe||r.watchPipe;delete r.watchPipe;const a=!!r.readError;delete r.readError,super(r),this.readError=a,s&&this.on("pipe",(t=>{const e=t._readableState.objectMode;if(this.length>0&&e!==this._readableState.objectMode)throw new Error("Do not switch objectMode in the middle of the stream");this._readableState.objectMode=e,this._writableState.objectMode=e})),null!=i&&this.end(i,o)}static isNoFilter(t){return t instanceof this}static compare(t,e){if(!(t instanceof this))throw new TypeError("Arguments must be NoFilters");return t===e?0:t.compare(e)}static concat(t,e){if(!Array.isArray(t))throw new TypeError("list argument must be an Array of NoFilters");if(0===t.length||0===e)return n.alloc(0);null==e&&(e=t.reduce(((t,e)=>{if(!(e instanceof u))throw new TypeError("list argument must be an Array of NoFilters");return t+e.length}),0));let r=!0,i=!0;const o=t.map((t=>{if(!(t instanceof u))throw new TypeError("list argument must be an Array of NoFilters");const e=t.slice();return n.isBuffer(e)?i=!1:r=!1,e}));if(r)return n.concat(o,e);if(i)return[].concat(...o).slice(0,e);throw new Error("Concatenating mixed object and byte streams not supported")}_transform(t,e,r){this._readableState.objectMode||n.isBuffer(t)||(t=n.from(t,e)),this.push(t),r()}_bufArray(){let t=this._readableState.buffer;if(!Array.isArray(t)){let e=t.head;for(t=[];null!=e;)t.push(e.data),e=e.next}return t}read(t){const e=super.read(t);if(null!=e){if(this.emit("read",e),this.readError&&e.length{this.on("finish",(()=>{const i=this.read();null==t||e||(e=!0,t(null,i)),r(i)})),this.on("error",(r=>{null==t||e||(e=!0,t(r)),i(r)}))}))}compare(t){if(!(t instanceof u))throw new TypeError("Arguments must be NoFilters");if(this===t)return 0;const e=this.slice(),r=t.slice();if(n.isBuffer(e)&&n.isBuffer(r))return e.compare(r);throw new Error("Cannot compare streams in object mode")}equals(t){return 0===this.compare(t)}slice(t,e){if(this._readableState.objectMode)return this._bufArray().slice(t,e);const r=this._bufArray();switch(r.length){case 0:return n.alloc(0);case 1:return r[0].slice(t,e);default:return n.concat(r).slice(t,e)}}get(t){return this.slice()[t]}toJSON(){const t=this.slice();return n.isBuffer(t)?t.toJSON():t}toString(t,e,r){const i=this.slice(e,r);return n.isBuffer(i)?t&&"utf8"!==t?i.toString(t,e,r):h.decode(i):JSON.stringify(i)}inspect(t,e){return this[a](t,e)}[a](t,e){const r=this._bufArray().map((t=>n.isBuffer(t)?(null!=e?e.stylize:void 0)?e.stylize(t.toString("hex"),"string"):t.toString("hex"):s?s.inspect(t,e):t.toString())).join(", ");return`${this.constructor.name} [${r}]`}get length(){return this._readableState.length}writeBigInt(t){let e=t.toString(16);if(t<0){const r=BigInt(Math.floor(e.length/2));e=(t=(BigInt(1)<{"use strict";const i=r(830),n=r(202),o=i.Transform;t.exports=class extends o{constructor(t){super(t),this._writableState.objectMode=!1,this._readableState.objectMode=!0,this.bs=new n,this.__restart()}_transform(t,e,r){for(this.bs.write(t);this.bs.length>=this.__needed;){let e=null;const i=null===this.__needed?void 0:this.bs.read(this.__needed);try{e=this.__parser.next(i)}catch(t){return r(t)}this.__needed&&(this.__fresh=!1),e.done?(this.push(e.value),this.__restart()):this.__needed=e.value||1/0}return r()}*_parse(){throw new Error("Must be implemented in subclass")}__restart(){this.__needed=null,this.__parser=this._parse(),this.__fresh=!0}_flush(t){t(this.__fresh?null:new Error("unexpected end of input"))}}},187:t=>{"use strict";var e,r="object"==typeof Reflect?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};e=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var n=Number.isNaN||function(t){return t!=t};function o(){o.init.call(this)}t.exports=o,t.exports.once=function(t,e){return new Promise((function(r,i){function n(r){t.removeListener(e,o),i(r)}function o(){"function"==typeof t.removeListener&&t.removeListener("error",n),r([].slice.call(arguments))}A(t,e,o,{once:!0}),"error"!==e&&function(t,e,r){"function"==typeof t.on&&A(t,"error",e,{once:!0})}(t,n)}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function a(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function h(t){return void 0===t._maxListeners?o.defaultMaxListeners:t._maxListeners}function u(t,e,r,i){var n,o,s,u;if(a(r),void 0===(o=t._events)?(o=t._events=Object.create(null),t._eventsCount=0):(void 0!==o.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),o=t._events),s=o[e]),void 0===s)s=o[e]=r,++t._eventsCount;else if("function"==typeof s?s=o[e]=i?[r,s]:[s,r]:i?s.unshift(r):s.push(r),(n=h(t))>0&&s.length>n&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=t,l.type=e,l.count=s.length,u=l,console&&console.warn&&console.warn(u)}return t}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function c(t,e,r){var i={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},n=l.bind(i);return n.listener=r,i.wrapFn=n,n}function f(t,e,r){var i=t._events;if(void 0===i)return[];var n=i[e];return void 0===n?[]:"function"==typeof n?r?[n.listener||n]:[n]:r?function(t){for(var e=new Array(t.length),r=0;r0&&(s=e[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var h=o[t];if(void 0===h)return!1;if("function"==typeof h)i(h,this,e);else{var u=h.length,l=g(h,u);for(r=0;r=0;o--)if(r[o]===e||r[o].listener===e){s=r[o].listener,n=o;break}if(n<0)return this;0===n?r.shift():function(t,e){for(;e+1=0;i--)this.removeListener(t,e[i]);return this},o.prototype.listeners=function(t){return f(this,t,!0)},o.prototype.rawListeners=function(t){return f(this,t,!1)},o.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):d.call(t,e)},o.prototype.listenerCount=d,o.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}},645:(t,e)=>{e.read=function(t,e,r,i,n){var o,s,a=8*n-i-1,h=(1<>1,l=-7,c=r?n-1:0,f=r?-1:1,d=t[e+c];for(c+=f,o=d&(1<<-l)-1,d>>=-l,l+=a;l>0;o=256*o+t[e+c],c+=f,l-=8);for(s=o&(1<<-l)-1,o>>=-l,l+=i;l>0;s=256*s+t[e+c],c+=f,l-=8);if(0===o)o=1-u;else{if(o===h)return s?NaN:1/0*(d?-1:1);s+=Math.pow(2,i),o-=u}return(d?-1:1)*s*Math.pow(2,o-i)},e.write=function(t,e,r,i,n,o){var s,a,h,u=8*o-n-1,l=(1<>1,f=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,d=i?0:o-1,g=i?1:-1,A=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=l):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),(e+=s+c>=1?f/h:f*Math.pow(2,1-c))*h>=2&&(s++,h/=2),s+c>=l?(a=0,s=l):s+c>=1?(a=(e*h-1)*Math.pow(2,n),s+=c):(a=e*Math.pow(2,c-1)*Math.pow(2,n),s=0));n>=8;t[r+d]=255&a,d+=g,a/=256,n-=8);for(s=s<0;t[r+d]=255&s,d+=g,s/=256,u-=8);t[r+d-g]|=128*A}},717:t=>{"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},595:function(t){t.exports=(()=>{"use strict";var t={255:(t,e)=>{e.l=class{hexSlice(t=0,e){return Array.prototype.map.call(this.slice(t,e),(t=>("00"+t.toString(16)).slice(-2))).join("")}}},48:(t,e,r)=>{const i=r(765),{internalBinding:n,Array:o,ArrayIsArray:s,ArrayPrototypeFilter:a,ArrayPrototypeForEach:h,ArrayPrototypePush:u,ArrayPrototypePushApply:l,ArrayPrototypeSort:c,ArrayPrototypeUnshift:f,BigIntPrototypeValueOf:d,BooleanPrototypeValueOf:g,DatePrototypeGetTime:A,DatePrototypeToISOString:M,DatePrototypeToString:p,ErrorPrototypeToString:w,FunctionPrototypeCall:B,FunctionPrototypeToString:m,JSONStringify:E,MapPrototypeGetSize:y,MapPrototypeEntries:b,MathFloor:I,MathMax:v,MathMin:C,MathRound:Q,MathSqrt:D,Number:N,NumberIsNaN:R,NumberParseFloat:G,NumberParseInt:U,NumberPrototypeValueOf:V,Object:S,ObjectAssign:T,ObjectCreate:Y,ObjectDefineProperty:k,ObjectGetOwnPropertyDescriptor:F,ObjectGetOwnPropertyNames:L,ObjectGetOwnPropertySymbols:j,ObjectGetPrototypeOf:Z,ObjectIs:x,ObjectKeys:z,ObjectPrototypeHasOwnProperty:O,ObjectPrototypePropertyIsEnumerable:H,ObjectSeal:_,ObjectSetPrototypeOf:W,ReflectOwnKeys:J,RegExp:X,RegExpPrototypeTest:P,RegExpPrototypeToString:K,SafeStringIterator:q,SafeMap:$,SafeSet:tt,SetPrototypeGetSize:et,SetPrototypeValues:rt,String:it,StringPrototypeCharCodeAt:nt,StringPrototypeCodePointAt:ot,StringPrototypeIncludes:st,StringPrototypeNormalize:at,StringPrototypePadEnd:ht,StringPrototypePadStart:ut,StringPrototypeRepeat:lt,StringPrototypeReplace:ct,StringPrototypeSlice:ft,StringPrototypeSplit:dt,StringPrototypeToLowerCase:gt,StringPrototypeTrim:At,StringPrototypeValueOf:Mt,SymbolPrototypeToString:pt,SymbolPrototypeValueOf:wt,SymbolIterator:Bt,SymbolToStringTag:mt,TypedArrayPrototypeGetLength:Et,TypedArrayPrototypeGetSymbolToStringTag:yt,Uint8Array:bt,uncurryThis:It}=i,{getOwnNonIndexProperties:vt,getPromiseDetails:Ct,getProxyDetails:Qt,kPending:Dt,kRejected:Nt,previewEntries:Rt,getConstructorName:Gt,getExternalValue:Ut,propertyFilter:{ALL_PROPERTIES:Vt,ONLY_ENUMERABLE:St},Proxy:Tt}=r(891),{customInspectSymbol:Yt,isError:kt,join:Ft,removeColors:Lt}=r(335),{codes:{ERR_INVALID_ARG_TYPE:jt},isStackOverflowError:Zt}=r(101),{isAsyncFunction:xt,isGeneratorFunction:zt,isAnyArrayBuffer:Ot,isArrayBuffer:Ht,isArgumentsObject:_t,isBoxedPrimitive:Wt,isDataView:Jt,isExternal:Xt,isMap:Pt,isMapIterator:Kt,isModuleNamespaceObject:qt,isNativeError:$t,isPromise:te,isSet:ee,isSetIterator:re,isWeakMap:ie,isWeakSet:ne,isRegExp:oe,isDate:se,isTypedArray:ae,isStringObject:he,isNumberObject:ue,isBooleanObject:le,isBigIntObject:ce}=r(63),fe=r(183),{NativeModule:de}=r(992),{validateObject:ge}=r(356);let Ae;const Me=new tt(a(L(r.g),(t=>P(/^[A-Z][a-zA-Z0-9]+$/,t)))),pe=t=>void 0===t&&void 0!==t,we=_({showHidden:!1,depth:2,colors:!1,customInspect:!0,showProxy:!1,maxArrayLength:100,maxStringLength:1e4,breakLength:80,compact:3,sorted:!1,getters:!1}),Be=/[\x00-\x1f\x27\x5c\x7f-\x9f]/,me=/[\x00-\x1f\x27\x5c\x7f-\x9f]/g,Ee=/[\x00-\x1f\x5c\x7f-\x9f]/,ye=/[\x00-\x1f\x5c\x7f-\x9f]/g,be=/^[a-zA-Z_][a-zA-Z_0-9]*$/,Ie=/^(0|[1-9][0-9]*)$/,ve=/^ at (?:[^/\\(]+ \(|)node:(.+):\d+:\d+\)?$/,Ce=/^ at (?:[^/\\(]+ \(|)(.+)\.js:\d+:\d+\)?$/,Qe=/[/\\]node_modules[/\\](.+?)(?=[/\\])/g,De=/^(\s+[^(]*?)\s*{/,Ne=/(\/\/.*?\n)|(\/\*(.|\n)*?\*\/)/g,Re=["\\x00","\\x01","\\x02","\\x03","\\x04","\\x05","\\x06","\\x07","\\b","\\t","\\n","\\x0B","\\f","\\r","\\x0E","\\x0F","\\x10","\\x11","\\x12","\\x13","\\x14","\\x15","\\x16","\\x17","\\x18","\\x19","\\x1A","\\x1B","\\x1C","\\x1D","\\x1E","\\x1F","","","","","","","","\\'","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\\\","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\x7F","\\x80","\\x81","\\x82","\\x83","\\x84","\\x85","\\x86","\\x87","\\x88","\\x89","\\x8A","\\x8B","\\x8C","\\x8D","\\x8E","\\x8F","\\x90","\\x91","\\x92","\\x93","\\x94","\\x95","\\x96","\\x97","\\x98","\\x99","\\x9A","\\x9B","\\x9C","\\x9D","\\x9E","\\x9F"],Ge=new X("[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))","g");let Ue;function Ve(t,e){const r={budget:{},indentationLvl:0,seen:[],currentDepth:0,stylize:Ze,showHidden:we.showHidden,depth:we.depth,colors:we.colors,customInspect:we.customInspect,showProxy:we.showProxy,maxArrayLength:we.maxArrayLength,maxStringLength:we.maxStringLength,breakLength:we.breakLength,compact:we.compact,sorted:we.sorted,getters:we.getters};if(arguments.length>1)if(arguments.length>2&&(void 0!==arguments[2]&&(r.depth=arguments[2]),arguments.length>3&&void 0!==arguments[3]&&(r.colors=arguments[3])),"boolean"==typeof e)r.showHidden=e;else if(e){const t=z(e);for(let i=0;iwe,set:t=>(ge(t,"options"),T(we,t))});const Se=39,Te=49;function Ye(t,e){k(Ve.colors,e,{get(){return this[t]},set(e){this[t]=e},configurable:!0,enumerable:!1})}function ke(t,e){return-1===e?`"${t}"`:-2===e?`\`${t}\``:`'${t}'`}Ve.colors=T(Y(null),{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],blink:[5,25],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],doubleunderline:[21,24],black:[30,Se],red:[31,Se],green:[32,Se],yellow:[33,Se],blue:[34,Se],magenta:[35,Se],cyan:[36,Se],white:[37,Se],bgBlack:[40,Te],bgRed:[41,Te],bgGreen:[42,Te],bgYellow:[43,Te],bgBlue:[44,Te],bgMagenta:[45,Te],bgCyan:[46,Te],bgWhite:[47,Te],framed:[51,54],overlined:[53,55],gray:[90,Se],redBright:[91,Se],greenBright:[92,Se],yellowBright:[93,Se],blueBright:[94,Se],magentaBright:[95,Se],cyanBright:[96,Se],whiteBright:[97,Se],bgGray:[100,Te],bgRedBright:[101,Te],bgGreenBright:[102,Te],bgYellowBright:[103,Te],bgBlueBright:[104,Te],bgMagentaBright:[105,Te],bgCyanBright:[106,Te],bgWhiteBright:[107,Te]}),Ye("gray","grey"),Ye("gray","blackBright"),Ye("bgGray","bgGrey"),Ye("bgGray","bgBlackBright"),Ye("dim","faint"),Ye("strikethrough","crossedout"),Ye("strikethrough","strikeThrough"),Ye("strikethrough","crossedOut"),Ye("hidden","conceal"),Ye("inverse","swapColors"),Ye("inverse","swapcolors"),Ye("doubleunderline","doubleUnderline"),Ve.styles=T(Y(null),{special:"cyan",number:"yellow",bigint:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",symbol:"green",date:"magenta",regexp:"red",module:"underline"});const Fe=t=>Re[nt(t)];function Le(t){let e=Be,r=me,i=39;if(st(t,"'")&&(st(t,'"')?st(t,"`")||st(t,"${")||(i=-2):i=-1,39!==i&&(e=Ee,r=ye)),t.length<5e3&&!P(e,t))return ke(t,i);if(t.length>100)return ke(t=ct(t,r,Fe),i);let n="",o=0;const s=t.length;for(let e=0;e126&&r<160)&&(n+=o===e?Re[r]:`${ft(t,o,e)}${Re[r]}`,o=e+1)}return o!==s&&(n+=ft(t,o)),ke(n,i)}function je(t,e){const r=Ve.styles[e];if(void 0!==r){const e=Ve.colors[r];if(void 0!==e)return`[${e[0]}m${t}[${e[1]}m`}return t}function Ze(t){return t}function xe(){return[]}function ze(t,e){try{return t instanceof e}catch{return!1}}function Oe(t,e,r,i){let n;const o=t;for(;t||pe(t);){const s=F(t,"constructor");if(void 0!==s&&"function"==typeof s.value&&""!==s.value.name&&ze(o,s.value))return void 0===i||n===t&&Me.has(s.value.name)||He(e,o,n||o,r,i),s.value.name;t=Z(t),void 0===n&&(n=t)}if(null===n)return null;const s=Gt(o);if(r>e.depth&&null!==e.depth)return`${s} `;const a=Oe(n,e,r+1,i);return null===a?`${s} <${Ve(n,{...e,customInspect:!1,depth:-1})}>`:`${s} <${a}>`}function He(t,e,r,i,n){let o,s,a=0;do{if(0!==a||e===r){if(null===(r=Z(r)))return;const t=F(r,"constructor");if(void 0!==t&&"function"==typeof t.value&&Me.has(t.value.name))return}0===a?s=new tt:h(o,(t=>s.add(t))),o=J(r);for(const h of o){if("constructor"===h||O(e,h)||0!==a&&s.has(h))continue;const o=F(r,h);if("function"==typeof o.value)continue;const l=gr(t,r,i,h,0,o,e);t.colors?u(n,`${l}`):u(n,l)}}while(3!=++a)}function _e(t,e,r,i=""){return null===t?""!==e&&r!==e?`[${r}${i}: null prototype] [${e}] `:`[${r}${i}: null prototype] `:""!==e&&t!==e?`${t}${i} [${e}] `:`${t}${i} `}function We(t,e){let r;const i=j(t);if(e)r=L(t),0!==i.length&&l(r,i);else{try{r=z(t)}catch(e){fe($t(e)&&"ReferenceError"===e.name&&qt(t)),r=L(t)}0!==i.length&&l(r,a(i,(e=>H(t,e))))}return r}function Je(t,e,r){let i="";return null===e&&(i=Gt(t),i===r&&(i="Object")),_e(e,r,i)}function Xe(t,e,r,n){if("object"!=typeof e&&"function"!=typeof e&&!pe(e))return $e(t.stylize,e,t);if(null===e)return t.stylize("null","null");const o=e,a=Qt(e,!!t.showProxy);if(void 0!==a){if(t.showProxy)return function(t,e,r){if(r>t.depth&&null!==t.depth)return t.stylize("Proxy [Array]","special");r+=1,t.indentationLvl+=2;const i=[Xe(t,e[0],r),Xe(t,e[1],r)];return t.indentationLvl-=2,Mr(t,i,"",["Proxy [","]"],2,r)}(t,a,r);e=a}if(t.customInspect){const i=e[Yt];if("function"==typeof i&&i!==Ve&&(!e.constructor||e.constructor.prototype!==e)){const e=null===t.depth?null:t.depth-r,n=B(i,o,e,function(t,e){const r={stylize:t.stylize,showHidden:t.showHidden,depth:t.depth,colors:t.colors,customInspect:t.customInspect,showProxy:t.showProxy,maxArrayLength:t.maxArrayLength,maxStringLength:t.maxStringLength,breakLength:t.breakLength,compact:t.compact,sorted:t.sorted,getters:t.getters,...t.userOptions};if(e){W(r,null);for(const t of z(r))"object"!=typeof r[t]&&"function"!=typeof r[t]||null===r[t]||delete r[t];r.stylize=W(((e,r)=>{let i;try{i=`${t.stylize(e,r)}`}catch{}return"string"!=typeof i?e:i}),null)}return r}(t,void 0!==a||!(o instanceof S)));if(n!==o)return"string"!=typeof n?Xe(t,n,r):n.replace(/\n/g,`\n${" ".repeat(t.indentationLvl)}`)}}if(t.seen.includes(e)){let r=1;return void 0===t.circular?(t.circular=new $,t.circular.set(e,r)):(r=t.circular.get(e),void 0===r&&(r=t.circular.size+1,t.circular.set(e,r))),t.stylize(`[Circular *${r}]`,"special")}return function(t,e,r,n){let o,a;t.showHidden&&(r<=t.depth||null===t.depth)&&(a=[]);const h=Oe(e,t,r,a);void 0!==a&&0===a.length&&(a=void 0);let u=e[mt];("string"!=typeof u||""!==u&&(t.showHidden?O:H)(e,mt))&&(u="");let l,c="",B=xe,E=!0,I=0;const v=t.showHidden?Vt:St;let C,Q=0;if(e[Bt]||null===h)if(E=!1,s(e)){const t="Array"!==h||""!==u?_e(h,u,"Array",`(${e.length})`):"";if(o=vt(e,v),l=[`${t}[`,"]"],0===e.length&&0===o.length&&void 0===a)return`${l[0]}]`;Q=2,B=ir}else if(ee(e)){const r=et(e),i=_e(h,u,"Set",`(${r})`);if(o=We(e,t.showHidden),B=null!==h?or.bind(null,e):or.bind(null,rt(e)),0===r&&0===o.length&&void 0===a)return`${i}{}`;l=[`${i}{`,"}"]}else if(Pt(e)){const r=y(e),i=_e(h,u,"Map",`(${r})`);if(o=We(e,t.showHidden),B=null!==h?sr.bind(null,e):sr.bind(null,b(e)),0===r&&0===o.length&&void 0===a)return`${i}{}`;l=[`${i}{`,"}"]}else if(ae(e)){o=vt(e,v);let r=e,n="";null===h&&(n=yt(e),r=new i[n](e));const s=Et(e);if(l=[`${_e(h,u,n,`(${s})`)}[`,"]"],0===e.length&&0===o.length&&!t.showHidden)return`${l[0]}]`;B=nr.bind(null,r,s),Q=2}else Kt(e)?(o=We(e,t.showHidden),l=Pe("Map",u),B=fr.bind(null,l)):re(e)?(o=We(e,t.showHidden),l=Pe("Set",u),B=fr.bind(null,l)):E=!0;if(E)if(o=We(e,t.showHidden),l=["{","}"],"Object"===h){if(_t(e)?l[0]="[Arguments] {":""!==u&&(l[0]=`${_e(h,u,"Object")}{`),0===o.length&&void 0===a)return`${l[0]}}`}else if("function"==typeof e){if(c=function(t,e,r){const i=m(t);if("class"===i.slice(0,5)&&i.endsWith("}")){const n=i.slice(5,-1),o=n.indexOf("{");if(-1!==o&&(!n.slice(0,o).includes("(")||De.test(n.replace(Ne))))return function(t,e,r){let i=`class ${O(t,"name")&&t.name||"(anonymous)"}`;if("Function"!==e&&null!==e&&(i+=` [${e}]`),""!==r&&e!==r&&(i+=` [${r}]`),null!==e){const e=Z(t).name;e&&(i+=` extends ${e}`)}else i+=" extends [null prototype]";return`[${i}]`}(t,e,r)}let n="Function";zt(t)&&(n=`Generator${n}`),xt(t)&&(n=`Async${n}`);let o=`[${n}`;return null===e&&(o+=" (null prototype)"),""===t.name?o+=" (anonymous)":o+=`: ${t.name}`,o+="]",e!==n&&null!==e&&(o+=` ${e}`),""!==r&&e!==r&&(o+=` [${r}]`),o}(e,h,u),0===o.length&&void 0===a)return t.stylize(c,"special")}else if(oe(e)){c=K(null!==h?e:new X(e));const i=_e(h,u,"RegExp");if("RegExp "!==i&&(c=`${i}${c}`),0===o.length&&void 0===a||r>t.depth&&null!==t.depth)return t.stylize(c,"regexp")}else if(se(e)){c=R(A(e))?p(e):M(e);const r=_e(h,u,"Date");if("Date "!==r&&(c=`${r}${c}`),0===o.length&&void 0===a)return t.stylize(c,"date")}else if(kt(e)){if(c=function(t,e,r,i,n){const o=null!=t.name?it(t.name):"Error";let s=o.length,a=t.stack?it(t.stack):w(t);if(!i.showHidden&&0!==n.length)for(const e of["name","message","stack"]){const r=n.indexOf(e);-1!==r&&a.includes(t[e])&&n.splice(r,1)}if(null===e||o.endsWith("Error")&&a.startsWith(o)&&(a.length===s||":"===a[s]||"\n"===a[s])){let t="Error";if(null===e){const e=a.match(/^([A-Z][a-z_ A-Z0-9[\]()-]+)(?::|\n {4}at)/)||a.match(/^([a-z_A-Z0-9-]*Error)$/);t=e&&e[1]||"",s=t.length,t=t||"Error"}const i=_e(e,r,t).slice(0,-1);o!==i&&(a=i.includes(o)?0===s?`${i}: ${a}`:`${i}${a.slice(s)}`:`${i} [${o}]${a.slice(s)}`)}let h=t.message&&a.indexOf(t.message)||-1;-1!==h&&(h+=t.message.length);const u=a.indexOf("\n at",h);if(-1===u)a=`[${a}]`;else if(i.colors){let t=a.slice(0,u);const e=a.slice(u+1).split("\n");for(const r of e){const e=r.match(ve)||r.match(Ce);if(null!==e&&de.exists(e[1]))t+=`\n${i.stylize(r,"undefined")}`;else{let e;t+="\n";let n=0;for(;e=Qe.exec(r);)t+=r.slice(n,e.index+14),t+=i.stylize(e[1],"module"),n=e.index+e[0].length;t+=0===n?r:r.slice(n)}}a=t}if(0!==i.indentationLvl){const t=" ".repeat(i.indentationLvl);a=a.replace(/\n/g,`\n${t}`)}return a}(e,h,u,t,o),0===o.length&&void 0===a)return c}else if(Ot(e)){const r=_e(h,u,Ht(e)?"ArrayBuffer":"SharedArrayBuffer");if(void 0===n)B=rr;else if(0===o.length&&void 0===a)return r+`{ byteLength: ${Ke(t.stylize,e.byteLength)} }`;l[0]=`${r}{`,f(o,"byteLength")}else if(Jt(e))l[0]=`${_e(h,u,"DataView")}{`,f(o,"byteLength","byteOffset","buffer");else if(te(e))l[0]=`${_e(h,u,"Promise")}{`,B=dr;else if(ne(e))l[0]=`${_e(h,u,"WeakSet")}{`,B=t.showHidden?lr:ur;else if(ie(e))l[0]=`${_e(h,u,"WeakMap")}{`,B=t.showHidden?cr:ur;else if(qt(e))l[0]=`${_e(h,u,"Module")}{`,B=tr.bind(null,o);else if(Wt(e)){if(c=function(t,e,r,i,n){let o,s;ue(t)?(o=V,s="Number"):he(t)?(o=Mt,s="String",r.splice(0,t.length)):le(t)?(o=g,s="Boolean"):ce(t)?(o=d,s="BigInt"):(o=wt,s="Symbol");let a=`[${s}`;return s!==i&&(a+=null===i?" (null prototype)":` (${i})`),a+=`: ${$e(Ze,o(t),e)}]`,""!==n&&n!==i&&(a+=` [${n}]`),0!==r.length||e.stylize===Ze?a:e.stylize(a,gt(s))}(e,t,o,h,u),0===o.length&&void 0===a)return c}else{if(0===o.length&&void 0===a){if(Xt(e)){const r=Ut(e).toString(16);return t.stylize(`[External: ${r}]`,"special")}return`${Je(e,h,u)}{}`}l[0]=`${Je(e,h,u)}{`}if(r>t.depth&&null!==t.depth){let r=Je(e,h,u).slice(0,-1);return null!==h&&(r=`[${r}]`),t.stylize(r,"special")}r+=1,t.seen.push(e),t.currentDepth=r;const D=t.indentationLvl;try{for(C=B(t,e,r),I=0;I`,"special");!0!==t.compact?c=""===c?e:`${e} ${c}`:l[0]=`${e} ${l[0]}`}}if(t.seen.pop(),t.sorted){const e=!0===t.sorted?void 0:t.sorted;if(0===Q)C=C.sort(e);else if(o.length>1){const t=C.slice(C.length-o.length).sort(e);C.splice(C.length-o.length,o.length,...t)}}const N=Mr(t,C,c,l,Q,r,e),G=(t.budget[t.indentationLvl]||0)+N.length;return t.budget[t.indentationLvl]=G,G>2**27&&(t.depth=-1),N}(t,e,r,n)}function Pe(t,e){return e!==`${t} Iterator`&&(""!==e&&(e+="] ["),e+=`${t} Iterator`),[`[${e}] {`,"}"]}function Ke(t,e){return t(x(e,-0)?"-0":`${e}`,"number")}function qe(t,e){return t(`${e}n`,"bigint")}function $e(t,e,r){if("string"==typeof e){let i="";if(e.length>r.maxStringLength){const t=e.length-r.maxStringLength;e=e.slice(0,r.maxStringLength),i=`... ${t} more character${t>1?"s":""}`}return!0!==r.compact&&e.length>16&&e.length>r.breakLength-r.indentationLvl-4?e.split(/\n/).map(((e,r,i)=>t(Le(e+(r===i.length-1?"":"\n")),"string"))).join(` +\n${" ".repeat(r.indentationLvl+2)}`)+i:t(Le(e),"string")+i}return"number"==typeof e?Ke(t,e):"bigint"==typeof e?qe(t,e):"boolean"==typeof e?t(`${e}`,"boolean"):void 0===e?t("undefined","undefined"):t(pt(e),"symbol")}function tr(t,e,r,i){const n=new o(t.length);for(let o=0;o","special")}return t.length=0,n}function er(t,e,r,i,n,o){const s=z(e);let a=o;for(;o2**32-2)break;if(`${a}`!==h){if(!Ie.test(h))break;const e=u-a,r=`<${e} empty item${e>1?"s":""}>`;if(n.push(t.stylize(r,"undefined")),a=u,n.length===i)break}n.push(gr(t,e,r,h,1)),a++}const h=e.length-a;if(n.length!==i){if(h>0){const e=`<${h} empty item${h>1?"s":""}>`;n.push(t.stylize(e,"undefined"))}}else h>0&&n.push(`... ${h} more item${h>1?"s":""}`);return n}function rr(t,e){let i;try{i=new bt(e)}catch{return[t.stylize("(detached)","special")]}void 0===Ae&&(Ae=It(r(255).l.prototype.hexSlice));let n=At(ct(Ae(i,0,C(t.maxArrayLength,i.length)),/(.{2})/g,"$1 "));const o=i.length-t.maxArrayLength;return o>0&&(n+=` ... ${o} more byte${o>1?"s":""}`),[`${t.stylize("[Uint8Contents]","special")}: <${n}>`]}function ir(t,e,r){const i=e.length,n=C(v(0,t.maxArrayLength),i),o=i-n,s=[];for(let i=0;i0&&s.push(`... ${o} more item${o>1?"s":""}`),s}function nr(t,e,r,i,n){const s=C(v(0,r.maxArrayLength),e),a=t.length-s,h=new o(s),l=t.length>0&&"number"==typeof t[0]?Ke:qe;for(let e=0;e0&&(h[s]=`... ${a} more item${a>1?"s":""}`),r.showHidden){r.indentationLvl+=2;for(const e of["BYTES_PER_ELEMENT","length","byteLength","byteOffset","buffer"]){const i=Xe(r,t[e],n,!0);u(h,`[${e}]: ${i}`)}r.indentationLvl-=2}return h}function or(t,e,r,i){const n=[];e.indentationLvl+=2;for(const r of t)u(n,Xe(e,r,i));return e.indentationLvl-=2,n}function sr(t,e,r,i){const n=[];e.indentationLvl+=2;for(const{0:r,1:o}of t)n.push(`${Xe(e,r,i)} => `+Xe(e,o,i));return e.indentationLvl-=2,n}function ar(t,e,r,i){const n=v(t.maxArrayLength,0),s=C(n,r.length),a=new o(s);t.indentationLvl+=2;for(let i=0;i0&&u(a,`... ${h} more item${h>1?"s":""}`),a}function hr(t,e,r,i){const n=v(t.maxArrayLength,0),s=r.length/2,a=s-n,h=C(n,s);let u=new o(h),l=0;if(t.indentationLvl+=2,0===i){for(;l ${Xe(t,r[i+1],e)}`}t.sorted||(u=u.sort())}else for(;l0&&u.push(`... ${a} more item${a>1?"s":""}`),u}function ur(t){return[t.stylize("","special")]}function lr(t,e,r){return ar(t,r,Rt(e),0)}function cr(t,e,r){return hr(t,r,Rt(e),0)}function fr(t,e,r,i){const{0:n,1:o}=Rt(r,!0);return o?(t[0]=t[0].replace(/ Iterator] {$/," Entries] {"),hr(e,i,n,2)):ar(e,i,n,1)}function dr(t,e,r){let i;const{0:n,1:o}=Ct(e);if(n===Dt)i=[t.stylize("","special")];else{t.indentationLvl+=2;const e=Xe(t,o,r);t.indentationLvl-=2,i=[n===Nt?`${t.stylize("","special")} ${e}`:e]}return i}function gr(t,e,r,i,n,o,s=e){let a,h,u=" ";if(void 0!==(o=o||F(e,i)||{value:e[i],enumerable:!0}).value){const e=!0!==t.compact||0!==n?2:3;t.indentationLvl+=e,h=Xe(t,o.value,r),3===e&&t.breakLength`;h=`${i(`[${e}:`,n)} ${r}${i("]",n)}`}else h=t.stylize(`[${e}]`,n)}else h=void 0!==o.set?t.stylize("[Setter]","special"):t.stylize("undefined","undefined");if(1===n)return h;if("symbol"==typeof i){const e=ct(pt(i),me,Fe);a=`[${t.stylize(e,"symbol")}]`}else a="__proto__"===i?"['__proto__']":!1===o.enumerable?`[${ct(i,me,Fe)}]`:P(be,i)?t.stylize(i,"name"):t.stylize(Le(i),"string");return`${a}:${u}${h}`}function Ar(t,e,r,i){let n=e.length+r;if(n+e.length>t.breakLength)return!1;for(let r=0;rt.breakLength)return!1;return""===i||!st(i,"\n")}function Mr(t,e,r,i,n,s,a){if(!0!==t.compact){if("number"==typeof t.compact&&t.compact>=1){const h=e.length;if(2===n&&h>6&&(e=function(t,e,r){let i=0,n=0,s=0,a=e.length;t.maxArrayLength5||n<=6)){const n=2.5,o=D(l-i/e.length),s=v(l-3-o,1),c=C(Q(D(n*s*a)/s),I((t.breakLength-t.indentationLvl)/l),4*t.compact,15);if(c<=1)return e;const f=[],d=[];for(let t=0;tr&&(r=h[i]);r+=2,d[t]=r}let g=ut;if(void 0!==r)for(let t=0;tdt(t.message,"\n",1)[0];let Br;function mr(t){try{return E(t)}catch(t){if(!Br)try{const t={};t.a=t,E(t)}catch(t){Br=wr(t)}if("TypeError"===t.name&&wr(t)===Br)return"[Circular]";throw t}}function Er(t,e){const r=e[0];let i=0,n="",o="";if("string"==typeof r){if(1===e.length)return r;let s,a=0;for(let o=0;o=127){i+=t.getStringWidth(e.slice(r).normalize("NFC"));break}i+=n>=32?1:0}return i}}else{Ue=function(r,i=!0){let n=0;i&&(r=yr(r)),r=at(r,"NFC");for(const i of new q(r)){const r=ot(i,0);t(r)?n+=2:e(r)||n++}return n};const t=t=>t>=4352&&(t<=4447||9001===t||9002===t||t>=11904&&t<=12871&&12351!==t||t>=12880&&t<=19903||t>=19968&&t<=42182||t>=43360&&t<=43388||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65131||t>=65281&&t<=65376||t>=65504&&t<=65510||t>=110592&&t<=110593||t>=127488&&t<=127569||t>=127744&&t<=128591||t>=131072&&t<=262141),e=t=>t<=31||t>=127&&t<=159||t>=768&&t<=879||t>=8203&&t<=8207||t>=8400&&t<=8447||t>=65024&&t<=65039||t>=65056&&t<=65071||t>=917760&&t<=917999}function yr(t){return t.replace(Ge,"")}t.exports={inspect:Ve,format:function(...t){return Er(void 0,t)},formatWithOptions:function(t,...e){if("object"!=typeof t||null===t)throw new jt("inspectOptions","object",t);return Er(t,e)},getStringWidth:Ue,inspectDefaultOptions:we,stripVTControlCharacters:yr,stylizeWithColor:je,stylizeWithHTML(t,e){const r=Ve.styles[e];return void 0!==r?`${t}`:t},Proxy:Tt}},183:t=>{t.exports=function(t){if(!t)throw new Error("Assertion failed")}},992:(t,e)=>{e.NativeModule={exists:t=>!t.startsWith("/")}},101:(t,e,r)=>{const{ArrayIsArray:i,ArrayPrototypeIncludes:n,ArrayPrototypeIndexOf:o,ArrayPrototypeJoin:s,ArrayPrototypePop:a,ArrayPrototypePush:h,ArrayPrototypeSplice:u,ErrorCaptureStackTrace:l,ObjectDefineProperty:c,ReflectApply:f,RegExpPrototypeTest:d,SafeMap:g,StringPrototypeEndsWith:A,StringPrototypeIncludes:M,StringPrototypeSlice:p,StringPrototypeToLowerCase:w}=r(765),B=new g,m={},E=/^([A-Z][a-z0-9]*)+$/,y=["string","function","number","object","Function","Object","boolean","bigint","symbol"];let b,I,v=null;function C(){return v||(v=r(48)),v}const Q=D((function(t,e,r){(t=N(t)).name=`${e} [${r}]`,t.stack,delete t.name}));function D(t){const e="__node_internal_"+t.name;return c(t,"name",{value:e}),t}const N=D((function(t){return b=Error.stackTraceLimit,Error.stackTraceLimit=1/0,l(t),Error.stackTraceLimit=b,t}));let R,G;var U,V,S,T,Y;t.exports={codes:m,hideStackFrames:D,isStackOverflowError:function(t){if(void 0===G)try{!function t(){t()}()}catch(t){G=t.message,R=t.name}return t&&t.name===R&&t.message===G}},U="ERR_INVALID_ARG_TYPE",V=(t,e,r)=>{I("string"==typeof t,"'name' must be a string"),i(e)||(e=[e]);let l="The ";A(t," argument")?l+=`${t} `:l+=`"${t}" ${M(t,".")?"property":"argument"} `,l+="must be ";const c=[],f=[],g=[];for(const t of e)I("string"==typeof t,"All expected entries have to be of type string"),n(y,t)?h(c,w(t)):d(E,t)?h(f,t):(I("object"!==t,'The value "object" should be written as "Object"'),h(g,t));if(f.length>0){const t=o(c,"object");-1!==t&&(u(c,t,1),h(f,"Object"))}if(c.length>0){if(c.length>2){const t=a(c);l+=`one of type ${s(c,", ")}, or ${t}`}else l+=2===c.length?`one of type ${c[0]} or ${c[1]}`:`of type ${c[0]}`;(f.length>0||g.length>0)&&(l+=" or ")}if(f.length>0){if(f.length>2){const t=a(f);l+=`an instance of ${s(f,", ")}, or ${t}`}else l+=`an instance of ${f[0]}`,2===f.length&&(l+=` or ${f[1]}`);g.length>0&&(l+=" or ")}if(g.length>0)if(g.length>2){const t=a(g);l+=`one of ${s(g,", ")}, or ${t}`}else 2===g.length?l+=`one of ${g[0]} or ${g[1]}`:(w(g[0])!==g[0]&&(l+="an "),l+=`${g[0]}`);if(null==r)l+=`. Received ${r}`;else if("function"==typeof r&&r.name)l+=`. Received function ${r.name}`;else if("object"==typeof r)r.constructor&&r.constructor.name?l+=`. Received an instance of ${r.constructor.name}`:l+=`. Received ${C().inspect(r,{depth:-1})}`;else{let t=C().inspect(r,{colors:!1});t.length>25&&(t=`${p(t,0,25)}...`),l+=`. Received type ${typeof r} (${t})`}return l},S=TypeError,B.set(U,V),m[U]=(T=S,Y=U,function(...t){const e=Error.stackTraceLimit;Error.stackTraceLimit=0;const i=new T;Error.stackTraceLimit=e;const n=function(t,e,i){const n=B.get(t);return void 0===I&&(I=r(183)),I("function"==typeof n),I(n.length<=e.length,`Code: ${t}; The provided arguments length (${e.length}) does not match the required ones (${n.length}).`),f(n,i,e)}(Y,t,i);return c(i,"message",{value:n,enumerable:!1,writable:!0,configurable:!0}),c(i,"toString",{value(){return`${this.name} [${Y}]: ${this.message}`},enumerable:!1,writable:!0,configurable:!0}),Q(i,T.name,Y),i.code=Y,i})},335:t=>{const e=/\u001b\[\d\d?m/g;t.exports={customInspectSymbol:Symbol.for("nodejs.util.inspect.custom"),isError:t=>t instanceof Error,join:Array.prototype.join.call.bind(Array.prototype.join),removeColors:t=>String.prototype.replace.call(t,e,"")}},63:(t,e,r)=>{const{getConstructorName:i}=r(891);function n(t,...e){for(const r of e){const e=globalThis[r];if(e&&t instanceof e)return!0}for(;t;){if("object"!=typeof t)return!1;if(e.indexOf(i(t))>=0)return!0;t=Object.getPrototypeOf(t)}return!1}function o(t){return e=>{if(!n(e,t.name))return!1;try{t.prototype.valueOf.call(e)}catch{return!1}return!0}}"object"!=typeof globalThis&&(Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__);const s=o(String),a=o(Number),h=o(Boolean),u=o(BigInt),l=o(Symbol);t.exports={isAsyncFunction:t=>"function"==typeof t&&Function.prototype.toString.call(t).startsWith("async"),isGeneratorFunction:t=>"function"==typeof t&&Function.prototype.toString.call(t).match(/^(async\s+)?function *\*/),isAnyArrayBuffer:t=>n(t,"ArrayBuffer","SharedArrayBuffer"),isArrayBuffer:t=>n(t,"ArrayBuffer"),isArgumentsObject:t=>!1,isBoxedPrimitive:t=>a(t)||s(t)||h(t)||u(t)||l(t),isDataView:t=>n(t,"DataView"),isExternal:t=>"object"==typeof t&&Object.isFrozen(t)&&null==Object.getPrototypeOf(t),isMap(t){if(!n(t,"Map"))return!1;try{t.has()}catch{return!1}return!0},isMapIterator:t=>"[object Map Iterator]"===Object.prototype.toString.call(Object.getPrototypeOf(t)),isModuleNamespaceObject:t=>t&&"object"==typeof t&&"Module"===t[Symbol.toStringTag],isNativeError:t=>t instanceof Error&&n(t,"Error","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","AggregateError"),isPromise:t=>n(t,"Promise"),isSet(t){if(!n(t,"Set"))return!1;try{t.has()}catch{return!1}return!0},isSetIterator:t=>"[object Set Iterator]"===Object.prototype.toString.call(Object.getPrototypeOf(t)),isWeakMap:t=>n(t,"WeakMap"),isWeakSet:t=>n(t,"WeakSet"),isRegExp:t=>n(t,"RegExp"),isDate(t){if(n(t,"Date"))try{return Date.prototype.getTime.call(t),!0}catch{}return!1},isTypedArray:t=>n(t,"Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"),isStringObject:s,isNumberObject:a,isBooleanObject:h,isBigIntObject:u,isSymbolObject:l}},356:(t,e,r)=>{const{hideStackFrames:i,codes:{ERR_INVALID_ARG_TYPE:n}}=r(101);e.validateObject=i(((t,e,{nullable:r=!1}={})=>{if(!r&&null===t||Array.isArray(t)||"object"!=typeof t)throw new n(e,"Object",t)}))},765:t=>{const e=(t,e)=>{class r{constructor(e){this._iterator=t(e)}next(){return e(this._iterator)}[Symbol.iterator](){return this}}return Object.setPrototypeOf(r.prototype,null),Object.freeze(r.prototype),Object.freeze(r),r};function r(t,e){return Function.prototype.call.bind(t.prototype.__lookupGetter__(e))}function i(t){return Function.prototype.call.bind(t)}const n=(t,e)=>{Array.prototype.forEach.call(Reflect.ownKeys(t),(r=>{Reflect.getOwnPropertyDescriptor(e,r)||Reflect.defineProperty(e,r,Reflect.getOwnPropertyDescriptor(t,r))}))},o=(t,r)=>{if(Symbol.iterator in t.prototype){const n=new t;let o;Array.prototype.forEach.call(Reflect.ownKeys(t.prototype),(s=>{if(!Reflect.getOwnPropertyDescriptor(r.prototype,s)){const a=Reflect.getOwnPropertyDescriptor(t.prototype,s);if("function"==typeof a.value&&0===a.value.length&&Symbol.iterator in(Function.prototype.call.call(a.value,n)||{})){const t=i(a.value);null==o&&(o=i(t(n).next));const r=e(t,o);a.value=function(){return new r(this)}}Reflect.defineProperty(r.prototype,s,a)}}))}else n(t.prototype,r.prototype);return n(t,r),Object.setPrototypeOf(r.prototype,null),Object.freeze(r.prototype),Object.freeze(r),r},s=Function.prototype.call.bind(String.prototype[Symbol.iterator]),a=Reflect.getPrototypeOf(s(""));t.exports={makeSafe:o,internalBinding(t){if("config"===t)return{hasIntl:!1};throw new Error(`unknown module: "${t}"`)},Array,ArrayIsArray:Array.isArray,ArrayPrototypeFilter:Function.prototype.call.bind(Array.prototype.filter),ArrayPrototypeForEach:Function.prototype.call.bind(Array.prototype.forEach),ArrayPrototypeIncludes:Function.prototype.call.bind(Array.prototype.includes),ArrayPrototypeIndexOf:Function.prototype.call.bind(Array.prototype.indexOf),ArrayPrototypeJoin:Function.prototype.call.bind(Array.prototype.join),ArrayPrototypePop:Function.prototype.call.bind(Array.prototype.pop),ArrayPrototypePush:Function.prototype.call.bind(Array.prototype.push),ArrayPrototypePushApply:Function.apply.bind(Array.prototype.push),ArrayPrototypeSort:Function.prototype.call.bind(Array.prototype.sort),ArrayPrototypeSplice:Function.prototype.call.bind(Array.prototype.slice),ArrayPrototypeUnshift:Function.prototype.call.bind(Array.prototype.unshift),BigIntPrototypeValueOf:Function.prototype.call.bind(BigInt.prototype.valueOf),BooleanPrototypeValueOf:Function.prototype.call.bind(Boolean.prototype.valueOf),DatePrototypeGetTime:Function.prototype.call.bind(Date.prototype.getTime),DatePrototypeToISOString:Function.prototype.call.bind(Date.prototype.toISOString),DatePrototypeToString:Function.prototype.call.bind(Date.prototype.toString),ErrorCaptureStackTrace:function(t){const e=(new Error).stack;t.stack=e.replace(/.*\n.*/,"$1")},ErrorPrototypeToString:Function.prototype.call.bind(Error.prototype.toString),FunctionPrototypeCall:Function.prototype.call.bind(Function.prototype.call),FunctionPrototypeToString:Function.prototype.call.bind(Function.prototype.toString),JSONStringify:JSON.stringify,MapPrototypeGetSize:r(Map,"size"),MapPrototypeEntries:Function.prototype.call.bind(Map.prototype.entries),MathFloor:Math.floor,MathMax:Math.max,MathMin:Math.min,MathRound:Math.round,MathSqrt:Math.sqrt,Number,NumberIsNaN:Number.isNaN,NumberParseFloat:Number.parseFloat,NumberParseInt:Number.parseInt,NumberPrototypeValueOf:Function.prototype.call.bind(Number.prototype.valueOf),Object,ObjectAssign:Object.assign,ObjectCreate:Object.create,ObjectDefineProperty:Object.defineProperty,ObjectGetOwnPropertyDescriptor:Object.getOwnPropertyDescriptor,ObjectGetOwnPropertyNames:Object.getOwnPropertyNames,ObjectGetOwnPropertySymbols:Object.getOwnPropertySymbols,ObjectGetPrototypeOf:Object.getPrototypeOf,ObjectIs:Object.is,ObjectKeys:Object.keys,ObjectPrototypeHasOwnProperty:Function.prototype.call.bind(Object.prototype.hasOwnProperty),ObjectPrototypePropertyIsEnumerable:Function.prototype.call.bind(Object.prototype.propertyIsEnumerable),ObjectSeal:Object.seal,ObjectSetPrototypeOf:Object.setPrototypeOf,ReflectApply:Reflect.apply,ReflectOwnKeys:Reflect.ownKeys,RegExp,RegExpPrototypeTest:Function.prototype.call.bind(RegExp.prototype.test),RegExpPrototypeToString:Function.prototype.call.bind(RegExp.prototype.toString),SafeStringIterator:e(s,Function.prototype.call.bind(a.next)),SafeMap:o(Map,class extends Map{constructor(t){super(t)}}),SafeSet:o(Set,class extends Set{constructor(t){super(t)}}),SetPrototypeGetSize:r(Set,"size"),SetPrototypeValues:Function.prototype.call.bind(Set.prototype.values),String,StringPrototypeCharCodeAt:Function.prototype.call.bind(String.prototype.charCodeAt),StringPrototypeCodePointAt:Function.prototype.call.bind(String.prototype.codePointAt),StringPrototypeEndsWith:Function.prototype.call.bind(String.prototype.endsWith),StringPrototypeIncludes:Function.prototype.call.bind(String.prototype.includes),StringPrototypeNormalize:Function.prototype.call.bind(String.prototype.normalize),StringPrototypePadEnd:Function.prototype.call.bind(String.prototype.padEnd),StringPrototypePadStart:Function.prototype.call.bind(String.prototype.padStart),StringPrototypeRepeat:Function.prototype.call.bind(String.prototype.repeat),StringPrototypeReplace:Function.prototype.call.bind(String.prototype.replace),StringPrototypeSlice:Function.prototype.call.bind(String.prototype.slice),StringPrototypeSplit:Function.prototype.call.bind(String.prototype.split),StringPrototypeToLowerCase:Function.prototype.call.bind(String.prototype.toLowerCase),StringPrototypeTrim:Function.prototype.call.bind(String.prototype.trim),StringPrototypeValueOf:Function.prototype.call.bind(String.prototype.valueOf),SymbolPrototypeToString:Function.prototype.call.bind(Symbol.prototype.toString),SymbolPrototypeValueOf:Function.prototype.call.bind(Symbol.prototype.valueOf),SymbolIterator:Symbol.iterator,SymbolFor:Symbol.for,SymbolToStringTag:Symbol.toStringTag,TypedArrayPrototypeGetLength:t=>t.constructor.prototype.__lookupGetter__("length").call(t),Uint8Array,uncurryThis:i}},161:t=>{const e=new WeakMap;class r{constructor(t,r){const i=new Proxy(t,r);return e.set(i,[t,r]),i}static getProxyDetails(t,r=!0){const i=e.get(t);if(i)return r?i:i[0]}}t.exports={getProxyDetails:r.getProxyDetails.bind(r),Proxy:r}},891:(t,e,r)=>{const i=r(161),n=Symbol("kPending"),o=Symbol("kRejected");t.exports={getOwnNonIndexProperties:function(t,e=2){const r=Object.getOwnPropertyDescriptors(t),i=[];for(const[t,n]of Object.entries(r))if(!/^(0|[1-9][0-9]*)$/.test(t)||parseInt(t,10)>=2**32-1){if(2===e&&!n.enumerable)continue;i.push(t)}for(const r of Object.getOwnPropertySymbols(t)){const n=Object.getOwnPropertyDescriptor(t,r);(2!==e||n.enumerable)&&i.push(r)}return i},getPromiseDetails:()=>[n,void 0],getProxyDetails:i.getProxyDetails,Proxy:i.Proxy,kPending:n,kRejected:o,previewEntries:t=>[[],!1],getConstructorName(t){if(!t||"object"!=typeof t)throw new Error("Invalid object");if(t.constructor&&t.constructor.name)return t.constructor.name;const e=Object.prototype.toString.call(t).match(/^\[object ([^\]]+)\]/);return e?e[1]:"Object"},getExternalValue:()=>BigInt(0),propertyFilter:{ALL_PROPERTIES:0,ONLY_ENUMERABLE:2}}}},e={};function r(i){var n=e[i];if(void 0!==n)return n.exports;var o=e[i]={exports:{}};return t[i](o,o.exports,r),o.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r(48)})()},155:t=>{var e,r,i=t.exports={};function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(e===setTimeout)return setTimeout(t,0);if((e===n||!e)&&setTimeout)return e=setTimeout,setTimeout(t,0);try{return e(t,0)}catch(r){try{return e.call(null,t,0)}catch(r){return e.call(this,t,0)}}}!function(){try{e="function"==typeof setTimeout?setTimeout:n}catch(t){e=n}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var a,h=[],u=!1,l=-1;function c(){u&&a&&(u=!1,a.length?h=a.concat(h):l=-1,h.length&&f())}function f(){if(!u){var t=s(c);u=!0;for(var e=h.length;e;){for(a=h,h=[];++l1)for(var r=1;r{"use strict";var e={};function r(t,r,i){i||(i=Error);var n=function(t){var e,i;function n(e,i,n){return t.call(this,function(t,e,i){return"string"==typeof r?r:r(t,e,i)}(e,i,n))||this}return i=t,(e=n).prototype=Object.create(i.prototype),e.prototype.constructor=e,e.__proto__=i,n}(i);n.prototype.name=i.name,n.prototype.code=t,e[t]=n}function i(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map((function(t){return String(t)})),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",(function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'}),TypeError),r("ERR_INVALID_ARG_TYPE",(function(t,e,r){var n,o,s,a,h;if("string"==typeof e&&(o="not ",e.substr(0,o.length)===o)?(n="must not be",e=e.replace(/^not /,"")):n="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t," argument"))s="The ".concat(t," ").concat(n," ").concat(i(e,"type"));else{var u=("number"!=typeof h&&(h=0),h+".".length>(a=t).length||-1===a.indexOf(".",h)?"argument":"property");s='The "'.concat(t,'" ').concat(u," ").concat(n," ").concat(i(e,"type"))}return s+". Received type ".concat(typeof r)}),TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",(function(t){return"The "+t+" method is not implemented"})),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",(function(t){return"Cannot call "+t+" after a stream was destroyed"})),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",(function(t){return"Unknown encoding: "+t}),TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.q=e},753:(t,e,r)=>{"use strict";var i=r(155),n=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=l;var o=r(481),s=r(229);r(717)(l,o);for(var a=n(s.prototype),h=0;h{"use strict";t.exports=n;var i=r(605);function n(t){if(!(this instanceof n))return new n(t);i.call(this,t)}r(717)(n,i),n.prototype._transform=function(t,e,r){r(null,t)}},481:(t,e,r)=>{"use strict";var i,n=r(155);t.exports=v,v.ReadableState=I,r(187).EventEmitter;var o,s=function(t,e){return t.listeners(e).length},a=r(503),h=r(764).Buffer,u=r.g.Uint8Array||function(){},l=r(669);o=l&&l.debuglog?l.debuglog("stream"):function(){};var c,f,d,g=r(327),A=r(195),M=r(457).getHighWaterMark,p=r(281).q,w=p.ERR_INVALID_ARG_TYPE,B=p.ERR_STREAM_PUSH_AFTER_EOF,m=p.ERR_METHOD_NOT_IMPLEMENTED,E=p.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r(717)(v,a);var y=A.errorOrDestroy,b=["error","close","destroy","pause","resume"];function I(t,e,n){i=i||r(753),t=t||{},"boolean"!=typeof n&&(n=e instanceof i),this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=M(this,t,"readableHighWaterMark",n),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(c||(c=r(553).s),this.decoder=new c(t.encoding),this.encoding=t.encoding)}function v(t){if(i=i||r(753),!(this instanceof v))return new v(t);var e=this instanceof i;this._readableState=new I(t,this,e),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),a.call(this)}function C(t,e,r,i,n){o("readableAddChunk",e);var s,a=t._readableState;if(null===e)a.reading=!1,function(t,e){if(o("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?R(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,G(t)))}}(t,a);else if(n||(s=function(t,e){var r,i;return i=e,h.isBuffer(i)||i instanceof u||"string"==typeof e||void 0===e||t.objectMode||(r=new w("chunk",["string","Buffer","Uint8Array"],e)),r}(a,e)),s)y(t,s);else if(a.objectMode||e&&e.length>0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===h.prototype||(e=function(t){return h.from(t)}(e)),i)a.endEmitted?y(t,new E):Q(t,a,e,!0);else if(a.ended)y(t,new B);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?Q(t,a,e,!1):U(t,a)):Q(t,a,e,!1)}else i||(a.reading=!1,U(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=D?t=D:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function R(t){var e=t._readableState;o("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(o("emitReadable",e.flowing),e.emittedReadable=!0,n.nextTick(G,t))}function G(t){var e=t._readableState;o("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,k(t)}function U(t,e){e.readingMore||(e.readingMore=!0,n.nextTick(V,t,e))}function V(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function T(t){o("readable nexttick read 0"),t.read(0)}function Y(t,e){o("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),k(t),e.flowing&&!e.reading&&t.read(0)}function k(t){var e=t._readableState;for(o("flow",e.flowing);e.flowing&&null!==t.read(););}function F(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function L(t){var e=t._readableState;o("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,n.nextTick(j,e,t))}function j(t,e){if(o("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function Z(t,e){for(var r=0,i=t.length;r=e.highWaterMark:e.length>0)||e.ended))return o("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?L(this):R(this),null;if(0===(t=N(t,e))&&e.ended)return 0===e.length&&L(this),null;var i,n=e.needReadable;return o("need readable",n),(0===e.length||e.length-t0?F(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&L(this)),null!==i&&this.emit("data",i),i},v.prototype._read=function(t){y(this,new m("_read()"))},v.prototype.pipe=function(t,e){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=t;break;case 1:i.pipes=[i.pipes,t];break;default:i.pipes.push(t)}i.pipesCount+=1,o("pipe count=%d opts=%j",i.pipesCount,e);var a=e&&!1===e.end||t===n.stdout||t===n.stderr?A:h;function h(){o("onend"),t.end()}i.endEmitted?n.nextTick(a):r.once("end",a),t.on("unpipe",(function e(n,s){o("onunpipe"),n===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,o("cleanup"),t.removeListener("close",d),t.removeListener("finish",g),t.removeListener("drain",u),t.removeListener("error",f),t.removeListener("unpipe",e),r.removeListener("end",h),r.removeListener("end",A),r.removeListener("data",c),l=!0,!i.awaitDrain||t._writableState&&!t._writableState.needDrain||u())}));var u=function(t){return function(){var e=t._readableState;o("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,k(t))}}(r);t.on("drain",u);var l=!1;function c(e){o("ondata");var n=t.write(e);o("dest.write",n),!1===n&&((1===i.pipesCount&&i.pipes===t||i.pipesCount>1&&-1!==Z(i.pipes,t))&&!l&&(o("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function f(e){o("onerror",e),A(),t.removeListener("error",f),0===s(t,"error")&&y(t,e)}function d(){t.removeListener("finish",g),A()}function g(){o("onfinish"),t.removeListener("close",d),A()}function A(){o("unpipe"),r.unpipe(t)}return r.on("data",c),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events.error?Array.isArray(t._events.error)?t._events.error.unshift(r):t._events.error=[r,t._events.error]:t.on(e,r)}(t,"error",f),t.once("close",d),t.once("finish",g),t.emit("pipe",r),i.flowing||(o("pipe resume"),r.resume()),t},v.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o0,!1!==i.flowing&&this.resume()):"readable"===t&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,o("on readable",i.length,i.reading),i.length?R(this):i.reading||n.nextTick(T,this))),r},v.prototype.addListener=v.prototype.on,v.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&n.nextTick(S,this),r},v.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||n.nextTick(S,this),e},v.prototype.resume=function(){var t=this._readableState;return t.flowing||(o("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,n.nextTick(Y,t,e))}(this,t)),t.paused=!1,this},v.prototype.pause=function(){return o("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(o("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},v.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;for(var n in t.on("end",(function(){if(o("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on("data",(function(n){o("wrapped data"),r.decoder&&(n=r.decoder.write(n)),r.objectMode&&null==n||(r.objectMode||n&&n.length)&&(e.push(n)||(i=!0,t.pause()))})),t)void 0===this[n]&&"function"==typeof t[n]&&(this[n]=function(e){return function(){return t[e].apply(t,arguments)}}(n));for(var s=0;s{"use strict";t.exports=l;var i=r(281).q,n=i.ERR_METHOD_NOT_IMPLEMENTED,o=i.ERR_MULTIPLE_CALLBACK,s=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=i.ERR_TRANSFORM_WITH_LENGTH_0,h=r(753);function u(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(null===i)return this.emit("error",new o);r.writechunk=null,r.writecb=null,null!=e&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";var i,n=r(155);function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var i=t.entry;for(t.entry=null;i;){var n=i.callback;e.pendingcb--,n(void 0),i=i.next}e.corkedRequestsFree.next=t}(e,t)}}t.exports=v,v.WritableState=I;var s,a={deprecate:r(927)},h=r(503),u=r(764).Buffer,l=r.g.Uint8Array||function(){},c=r(195),f=r(457).getHighWaterMark,d=r(281).q,g=d.ERR_INVALID_ARG_TYPE,A=d.ERR_METHOD_NOT_IMPLEMENTED,M=d.ERR_MULTIPLE_CALLBACK,p=d.ERR_STREAM_CANNOT_PIPE,w=d.ERR_STREAM_DESTROYED,B=d.ERR_STREAM_NULL_VALUES,m=d.ERR_STREAM_WRITE_AFTER_END,E=d.ERR_UNKNOWN_ENCODING,y=c.errorOrDestroy;function b(){}function I(t,e,s){i=i||r(753),t=t||{},"boolean"!=typeof s&&(s=e instanceof i),this.objectMode=!!t.objectMode,s&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=f(this,t,"writableHighWaterMark",s),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===t.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,i=r.sync,o=r.writecb;if("function"!=typeof o)throw new M;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,i,o){--e.pendingcb,r?(n.nextTick(o,i),n.nextTick(G,t,e),t._writableState.errorEmitted=!0,y(t,i)):(o(i),t._writableState.errorEmitted=!0,y(t,i),G(t,e))}(t,r,i,e,o);else{var s=N(r)||t.destroyed;s||r.corked||r.bufferProcessing||!r.bufferedRequest||D(t,r),i?n.nextTick(Q,t,r,s,o):Q(t,r,s,o)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function v(t){var e=this instanceof(i=i||r(753));if(!e&&!s.call(v,this))return new v(t);this._writableState=new I(t,this,e),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),h.call(this)}function C(t,e,r,i,n,o,s){e.writelen=i,e.writecb=s,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new w("write")):r?t._writev(n,e.onwrite):t._write(n,o,e.onwrite),e.sync=!1}function Q(t,e,r,i){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,i(),G(t,e)}function D(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var i=e.bufferedRequestCount,n=new Array(i),s=e.corkedRequestsFree;s.entry=r;for(var a=0,h=!0;r;)n[a]=r,r.isBuf||(h=!1),r=r.next,a+=1;n.allBuffers=h,C(t,e,!0,e.length,n,"",s.finish),e.pendingcb++,e.lastBufferedRequest=null,s.next?(e.corkedRequestsFree=s.next,s.next=null):e.corkedRequestsFree=new o(e),e.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,l=r.encoding,c=r.callback;if(C(t,e,!1,e.objectMode?1:u.length,u,l,c),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function N(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function R(t,e){t._final((function(r){e.pendingcb--,r&&y(t,r),e.prefinished=!0,t.emit("prefinish"),G(t,e)}))}function G(t,e){var r=N(e);if(r&&(function(t,e){e.prefinished||e.finalCalled||("function"!=typeof t._final||e.destroyed?(e.prefinished=!0,t.emit("prefinish")):(e.pendingcb++,e.finalCalled=!0,n.nextTick(R,t,e)))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"),e.autoDestroy))){var i=t._readableState;(!i||i.autoDestroy&&i.endEmitted)&&t.destroy()}return r}r(717)(v,h),I.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(I.prototype,"buffer",{get:a.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(s=Function.prototype[Symbol.hasInstance],Object.defineProperty(v,Symbol.hasInstance,{value:function(t){return!!s.call(this,t)||this===v&&t&&t._writableState instanceof I}})):s=function(t){return t instanceof this},v.prototype.pipe=function(){y(this,new p)},v.prototype.write=function(t,e,r){var i,o=this._writableState,s=!1,a=!o.objectMode&&(i=t,u.isBuffer(i)||i instanceof l);return a&&!u.isBuffer(t)&&(t=function(t){return u.from(t)}(t)),"function"==typeof e&&(r=e,e=null),a?e="buffer":e||(e=o.defaultEncoding),"function"!=typeof r&&(r=b),o.ending?function(t,e){var r=new m;y(t,r),n.nextTick(e,r)}(this,r):(a||function(t,e,r,i){var o;return null===r?o=new B:"string"==typeof r||e.objectMode||(o=new g("chunk",["string","Buffer"],r)),!o||(y(t,o),n.nextTick(i,o),!1)}(this,o,t,r))&&(o.pendingcb++,s=function(t,e,r,i,n,o){if(!r){var s=function(t,e,r){return t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=u.from(e,r)),e}(e,i,n);i!==s&&(r=!0,n="buffer",i=s)}var a=e.objectMode?1:i.length;e.length+=a;var h=e.length-1))throw new E(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(v.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(v.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),v.prototype._write=function(t,e,r){r(new A("_write()"))},v.prototype._writev=null,v.prototype.end=function(t,e,r){var i=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||function(t,e,r){e.ending=!0,G(t,e),r&&(e.finished?n.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,i,r),this},Object.defineProperty(v.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(v.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),v.prototype.destroy=c.destroy,v.prototype._undestroy=c.undestroy,v.prototype._destroy=function(t,e){e(t)}},850:(t,e,r)=>{"use strict";var i,n=r(155);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(610),a=Symbol("lastResolve"),h=Symbol("lastReject"),u=Symbol("error"),l=Symbol("ended"),c=Symbol("lastPromise"),f=Symbol("handlePromise"),d=Symbol("stream");function g(t,e){return{value:t,done:e}}function A(t){var e=t[a];if(null!==e){var r=t[d].read();null!==r&&(t[c]=null,t[a]=null,t[h]=null,e(g(r,!1)))}}function M(t){n.nextTick(A,t)}var p=Object.getPrototypeOf((function(){})),w=Object.setPrototypeOf((o(i={get stream(){return this[d]},next:function(){var t=this,e=this[u];if(null!==e)return Promise.reject(e);if(this[l])return Promise.resolve(g(void 0,!0));if(this[d].destroyed)return new Promise((function(e,r){n.nextTick((function(){t[u]?r(t[u]):e(g(void 0,!0))}))}));var r,i=this[c];if(i)r=new Promise(function(t,e){return function(r,i){t.then((function(){e[l]?r(g(void 0,!0)):e[f](r,i)}),i)}}(i,this));else{var o=this[d].read();if(null!==o)return Promise.resolve(g(o,!1));r=new Promise(this[f])}return this[c]=r,r}},Symbol.asyncIterator,(function(){return this})),o(i,"return",(function(){var t=this;return new Promise((function(e,r){t[d].destroy(null,(function(t){t?r(t):e(g(void 0,!0))}))}))})),i),p);t.exports=function(t){var e,r=Object.create(w,(o(e={},d,{value:t,writable:!0}),o(e,a,{value:null,writable:!0}),o(e,h,{value:null,writable:!0}),o(e,u,{value:null,writable:!0}),o(e,l,{value:t._readableState.endEmitted,writable:!0}),o(e,f,{value:function(t,e){var i=r[d].read();i?(r[c]=null,r[a]=null,r[h]=null,t(g(i,!1))):(r[a]=t,r[h]=e)},writable:!0}),e));return r[c]=null,s(t,(function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[h];return null!==e&&(r[c]=null,r[a]=null,r[h]=null,e(t)),void(r[u]=t)}var i=r[a];null!==i&&(r[c]=null,r[a]=null,r[h]=null,i(g(void 0,!0))),r[l]=!0})),t.on("readable",M.bind(null,r)),r}},327:(t,e,r)=>{"use strict";function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var o=r(764).Buffer,s=r(669).inspect,a=s&&s.custom||"inspect";t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}var e;return(e=[{key:"push",value:function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return o.alloc(0);for(var e,r,i,n=o.allocUnsafe(t>>>0),s=this.head,a=0;s;)e=s.data,r=n,i=a,o.prototype.copy.call(e,r,i),a+=s.data.length,s=s.next;return n}},{key:"consume",value:function(t,e){var r;return tn.length?n.length:t;if(o===n.length?i+=n:i+=n.slice(0,t),0==(t-=o)){o===n.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(o));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(t){var e=o.allocUnsafe(t),r=this.head,i=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var n=r.data,s=t>n.length?n.length:t;if(n.copy(e,e.length-t,0,s),0==(t-=s)){s===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(s));break}++i}return this.length-=i,e}},{key:a,value:function(t,e){return s(this,function(t){for(var e=1;e{"use strict";var i=r(155);function n(t,e){s(t,e),o(t)}function o(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,h=this._writableState&&this._writableState.destroyed;return a||h?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,i.nextTick(s,this,t)):i.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!e&&t?r._writableState?r._writableState.errorEmitted?i.nextTick(o,r):(r._writableState.errorEmitted=!0,i.nextTick(n,r,t)):i.nextTick(n,r,t):e?(i.nextTick(o,r),e(t)):i.nextTick(o,r)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}}},610:(t,e,r)=>{"use strict";var i=r(281).q.ERR_STREAM_PREMATURE_CLOSE;function n(){}t.exports=function t(e,r,o){if("function"==typeof r)return t(e,null,r);r||(r={}),o=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{t.exports=function(){throw new Error("Readable.from is not available in the browser")}},946:(t,e,r)=>{"use strict";var i,n=r(281).q,o=n.ERR_MISSING_ARGS,s=n.ERR_STREAM_DESTROYED;function a(t){if(t)throw t}function h(t,e,n,o){o=function(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}(o);var a=!1;t.on("close",(function(){a=!0})),void 0===i&&(i=r(610)),i(t,{readable:e,writable:n},(function(t){if(t)return o(t);a=!0,o()}));var h=!1;return function(e){if(!a&&!h)return h=!0,function(t){return t.setHeader&&"function"==typeof t.abort}(t)?t.abort():"function"==typeof t.destroy?t.destroy():void o(e||new s("pipe"))}}function u(t){t()}function l(t,e){return t.pipe(e)}function c(t){return t.length?"function"!=typeof t[t.length-1]?a:t.pop():a}t.exports=function(){for(var t=arguments.length,e=new Array(t),r=0;r0,(function(t){i||(i=t),t&&s.forEach(u),o||(s.forEach(u),n(i))}))}));return e.reduce(l)}},457:(t,e,r)=>{"use strict";var i=r(281).q.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,n){var o=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,n,r);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new i(n?r:"highWaterMark",o);return Math.floor(o)}return t.objectMode?16:16384}}},503:(t,e,r)=>{t.exports=r(187).EventEmitter},509:(t,e,r)=>{var i=r(764),n=i.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function s(t,e,r){return n(t,e,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=i:(o(i,e),e.Buffer=s),s.prototype=Object.create(n.prototype),o(n,s),s.from=function(t,e,r){if("number"==typeof t)throw new TypeError("Argument must not be a number");return n(t,e,r)},s.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=n(t);return void 0!==e?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i},s.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n(t)},s.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},830:(t,e,r)=>{t.exports=n;var i=r(187).EventEmitter;function n(){i.call(this)}r(717)(n,i),n.Readable=r(481),n.Writable=r(229),n.Duplex=r(753),n.Transform=r(605),n.PassThrough=r(725),n.finished=r(610),n.pipeline=r(946),n.Stream=n,n.prototype.pipe=function(t,e){var r=this;function n(e){t.writable&&!1===t.write(e)&&r.pause&&r.pause()}function o(){r.readable&&r.resume&&r.resume()}r.on("data",n),t.on("drain",o),t._isStdio||e&&!1===e.end||(r.on("end",a),r.on("close",h));var s=!1;function a(){s||(s=!0,t.end())}function h(){s||(s=!0,"function"==typeof t.destroy&&t.destroy())}function u(t){if(l(),0===i.listenerCount(this,"error"))throw t}function l(){r.removeListener("data",n),t.removeListener("drain",o),r.removeListener("end",a),r.removeListener("close",h),r.removeListener("error",u),t.removeListener("error",u),r.removeListener("end",l),r.removeListener("close",l),t.removeListener("close",l)}return r.on("error",u),t.on("error",u),r.on("end",l),r.on("close",l),t.on("close",l),t.emit("pipe",r),t}},553:(t,e,r)=>{"use strict";var i=r(509).Buffer,n=i.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(i.isEncoding===n||!n(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=h,this.end=u,e=4;break;case"utf8":this.fillLast=a,e=4;break;case"base64":this.text=l,this.end=c,e=3;break;default:return this.write=f,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(e)}function s(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function h(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function u(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function l(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function c(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function f(t){return t.toString(this.encoding)}function d(t){return t&&t.length?this.write(t):""}e.s=o,o.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(2===n?n=0:t.lastNeed=n-3),n):0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},927:(t,e,r)=>{function i(t){try{if(!r.g.localStorage)return!1}catch(t){return!1}var e=r.g.localStorage[t];return null!=e&&"true"===String(e).toLowerCase()}t.exports=function(t,e){if(i("noDeprecation"))return t;var r=!1;return function(){if(!r){if(i("throwDeprecation"))throw new Error(e);i("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}}},669:t=>{"use strict";t.exports=n},937:t=>{"use strict";if(void 0===i){var e=new Error("Cannot find module 'undefined'");throw e.code="MODULE_NOT_FOUND",e}t.exports=i}},e={};function r(i){var n=e[i];if(void 0!==n)return n.exports;var o=e[i]={exports:{}};return t[i].call(o.exports,o,o.exports,r),o.exports}r.d=(t,e)=>{for(var i in e)r.o(e,i)&&!r.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var o={};return(()=>{"use strict";r.r(o),r.d(o,{BigNumber:()=>t.BigNumber,Commented:()=>t.Commented,Decoder:()=>t.Decoder,Diagnose:()=>t.Diagnose,Encoder:()=>t.Encoder,Map:()=>t.Map,Simple:()=>t.Simple,Tagged:()=>t.Tagged,comment:()=>t.UI,decode:()=>t.Jx,decodeAll:()=>t.fI,decodeAllSync:()=>t.cc,decodeFirst:()=>t.h8,decodeFirstSync:()=>t.$u,diagnose:()=>t.M,encode:()=>t.cv,encodeAsync:()=>t.WR,encodeCanonical:()=>t.N2,encodeOne:()=>t.TG,hasBigInt:()=>t.vc,leveldb:()=>t.ww});var t=r(141)})(),o})())},1027:(t,e,r)=>{var i=r(9509).Buffer,n=r(2830).Transform,o=r(2553).s;function s(t){n.call(this),this.hashMode="string"==typeof t,this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}r(5717)(s,n),s.prototype.update=function(t,e,r){"string"==typeof t&&(t=i.from(t,e));var n=this._update(t);return this.hashMode?this:(r&&(n=this._toString(n,r)),n)},s.prototype.setAutoPadding=function(){},s.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},s.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},s.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},s.prototype._transform=function(t,e,r){var i;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(t){i=t}finally{r(i)}},s.prototype._flush=function(t){var e;try{this.push(this.__final())}catch(t){e=t}t(e)},s.prototype._finalOrDigest=function(t){var e=this.__final()||i.alloc(0);return t&&(e=this._toString(e,t,!0)),e},s.prototype._toString=function(t,e,r){if(this._decoder||(this._decoder=new o(e),this._encoding=e),this._encoding!==e)throw new Error("can't switch encodings");var i=this._decoder.write(t);return r&&(i+=this._decoder.end()),i},t.exports=s},6393:(t,e,r)=>{var i=r(8764).Buffer,n=r(6266),o=r(6426);t.exports=function(t){return new a(t)};var s={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};function a(t){this.curveType=s[t],this.curveType||(this.curveType={name:t}),this.curve=new n.ec(this.curveType.name),this.keys=void 0}function h(t,e,r){Array.isArray(t)||(t=t.toArray());var n=new i(t);if(r&&n.length=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,c=67108863&h,f=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=f;d++){var g=u-d|0;l+=(s=(n=0|t.words[g])*(o=0|e.words[d])+c)/67108864|0,c=67108863&s}r.words[u]=0|c,h=0|l}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?l[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=c[t],d=f[t];r="";var g=this.clone();for(g.negative=0;!g.isZero();){var A=g.modn(d).toString(t);r=(g=g.idivn(d)).isZero()?A+r:l[u-A.length]+A+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),l=this.clone();if(h){for(a=0;!l.isZero();a++)s=l.andln(255),l.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],g=8191&d,A=d>>>13,M=0|s[2],p=8191&M,w=M>>>13,B=0|s[3],m=8191&B,E=B>>>13,y=0|s[4],b=8191&y,I=y>>>13,v=0|s[5],C=8191&v,Q=v>>>13,D=0|s[6],N=8191&D,R=D>>>13,G=0|s[7],U=8191&G,V=G>>>13,S=0|s[8],T=8191&S,Y=S>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,x=j>>>13,z=0|a[1],O=8191&z,H=z>>>13,_=0|a[2],W=8191&_,J=_>>>13,X=0|a[3],P=8191&X,K=X>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,lt=0|a[8],ct=8191<,ft=lt>>>13,dt=0|a[9],gt=8191&dt,At=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(c,Z))|0)+((8191&(n=(n=Math.imul(c,x))+Math.imul(f,Z)|0))<<13)|0;u=((o=Math.imul(f,x))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(g,Z),n=(n=Math.imul(g,x))+Math.imul(A,Z)|0,o=Math.imul(A,x);var pt=(u+(i=i+Math.imul(c,O)|0)|0)+((8191&(n=(n=n+Math.imul(c,H)|0)+Math.imul(f,O)|0))<<13)|0;u=((o=o+Math.imul(f,H)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,x))+Math.imul(w,Z)|0,o=Math.imul(w,x),i=i+Math.imul(g,O)|0,n=(n=n+Math.imul(g,H)|0)+Math.imul(A,O)|0,o=o+Math.imul(A,H)|0;var wt=(u+(i=i+Math.imul(c,W)|0)|0)+((8191&(n=(n=n+Math.imul(c,J)|0)+Math.imul(f,W)|0))<<13)|0;u=((o=o+Math.imul(f,J)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(m,Z),n=(n=Math.imul(m,x))+Math.imul(E,Z)|0,o=Math.imul(E,x),i=i+Math.imul(p,O)|0,n=(n=n+Math.imul(p,H)|0)+Math.imul(w,O)|0,o=o+Math.imul(w,H)|0,i=i+Math.imul(g,W)|0,n=(n=n+Math.imul(g,J)|0)+Math.imul(A,W)|0,o=o+Math.imul(A,J)|0;var Bt=(u+(i=i+Math.imul(c,P)|0)|0)+((8191&(n=(n=n+Math.imul(c,K)|0)+Math.imul(f,P)|0))<<13)|0;u=((o=o+Math.imul(f,K)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,x))+Math.imul(I,Z)|0,o=Math.imul(I,x),i=i+Math.imul(m,O)|0,n=(n=n+Math.imul(m,H)|0)+Math.imul(E,O)|0,o=o+Math.imul(E,H)|0,i=i+Math.imul(p,W)|0,n=(n=n+Math.imul(p,J)|0)+Math.imul(w,W)|0,o=o+Math.imul(w,J)|0,i=i+Math.imul(g,P)|0,n=(n=n+Math.imul(g,K)|0)+Math.imul(A,P)|0,o=o+Math.imul(A,K)|0;var mt=(u+(i=i+Math.imul(c,$)|0)|0)+((8191&(n=(n=n+Math.imul(c,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,x))+Math.imul(Q,Z)|0,o=Math.imul(Q,x),i=i+Math.imul(b,O)|0,n=(n=n+Math.imul(b,H)|0)+Math.imul(I,O)|0,o=o+Math.imul(I,H)|0,i=i+Math.imul(m,W)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,J)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,K)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,K)|0,i=i+Math.imul(g,$)|0,n=(n=n+Math.imul(g,tt)|0)+Math.imul(A,$)|0,o=o+Math.imul(A,tt)|0;var Et=(u+(i=i+Math.imul(c,rt)|0)|0)+((8191&(n=(n=n+Math.imul(c,it)|0)+Math.imul(f,rt)|0))<<13)|0;u=((o=o+Math.imul(f,it)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,Z),n=(n=Math.imul(N,x))+Math.imul(R,Z)|0,o=Math.imul(R,x),i=i+Math.imul(C,O)|0,n=(n=n+Math.imul(C,H)|0)+Math.imul(Q,O)|0,o=o+Math.imul(Q,H)|0,i=i+Math.imul(b,W)|0,n=(n=n+Math.imul(b,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,i=i+Math.imul(m,P)|0,n=(n=n+Math.imul(m,K)|0)+Math.imul(E,P)|0,o=o+Math.imul(E,K)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(g,rt)|0,n=(n=n+Math.imul(g,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0;var yt=(u+(i=i+Math.imul(c,ot)|0)|0)+((8191&(n=(n=n+Math.imul(c,st)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(U,Z),n=(n=Math.imul(U,x))+Math.imul(V,Z)|0,o=Math.imul(V,x),i=i+Math.imul(N,O)|0,n=(n=n+Math.imul(N,H)|0)+Math.imul(R,O)|0,o=o+Math.imul(R,H)|0,i=i+Math.imul(C,W)|0,n=(n=n+Math.imul(C,J)|0)+Math.imul(Q,W)|0,o=o+Math.imul(Q,J)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,K)|0)+Math.imul(I,P)|0,o=o+Math.imul(I,K)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(g,ot)|0,n=(n=n+Math.imul(g,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0;var bt=(u+(i=i+Math.imul(c,ht)|0)|0)+((8191&(n=(n=n+Math.imul(c,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,x))+Math.imul(Y,Z)|0,o=Math.imul(Y,x),i=i+Math.imul(U,O)|0,n=(n=n+Math.imul(U,H)|0)+Math.imul(V,O)|0,o=o+Math.imul(V,H)|0,i=i+Math.imul(N,W)|0,n=(n=n+Math.imul(N,J)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,J)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,K)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,K)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,tt)|0,i=i+Math.imul(m,rt)|0,n=(n=n+Math.imul(m,it)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(g,ht)|0,n=(n=n+Math.imul(g,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0;var It=(u+(i=i+Math.imul(c,ct)|0)|0)+((8191&(n=(n=n+Math.imul(c,ft)|0)+Math.imul(f,ct)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,x))+Math.imul(L,Z)|0,o=Math.imul(L,x),i=i+Math.imul(T,O)|0,n=(n=n+Math.imul(T,H)|0)+Math.imul(Y,O)|0,o=o+Math.imul(Y,H)|0,i=i+Math.imul(U,W)|0,n=(n=n+Math.imul(U,J)|0)+Math.imul(V,W)|0,o=o+Math.imul(V,J)|0,i=i+Math.imul(N,P)|0,n=(n=n+Math.imul(N,K)|0)+Math.imul(R,P)|0,o=o+Math.imul(R,K)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,it)|0,i=i+Math.imul(m,ot)|0,n=(n=n+Math.imul(m,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(g,ct)|0,n=(n=n+Math.imul(g,ft)|0)+Math.imul(A,ct)|0,o=o+Math.imul(A,ft)|0;var vt=(u+(i=i+Math.imul(c,gt)|0)|0)+((8191&(n=(n=n+Math.imul(c,At)|0)+Math.imul(f,gt)|0))<<13)|0;u=((o=o+Math.imul(f,At)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,O),n=(n=Math.imul(F,H))+Math.imul(L,O)|0,o=Math.imul(L,H),i=i+Math.imul(T,W)|0,n=(n=n+Math.imul(T,J)|0)+Math.imul(Y,W)|0,o=o+Math.imul(Y,J)|0,i=i+Math.imul(U,P)|0,n=(n=n+Math.imul(U,K)|0)+Math.imul(V,P)|0,o=o+Math.imul(V,K)|0,i=i+Math.imul(N,$)|0,n=(n=n+Math.imul(N,tt)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,i=i+Math.imul(m,ht)|0,n=(n=n+Math.imul(m,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,i=i+Math.imul(p,ct)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(w,ct)|0,o=o+Math.imul(w,ft)|0;var Ct=(u+(i=i+Math.imul(g,gt)|0)|0)+((8191&(n=(n=n+Math.imul(g,At)|0)+Math.imul(A,gt)|0))<<13)|0;u=((o=o+Math.imul(A,At)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,W),n=(n=Math.imul(F,J))+Math.imul(L,W)|0,o=Math.imul(L,J),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,K)|0)+Math.imul(Y,P)|0,o=o+Math.imul(Y,K)|0,i=i+Math.imul(U,$)|0,n=(n=n+Math.imul(U,tt)|0)+Math.imul(V,$)|0,o=o+Math.imul(V,tt)|0,i=i+Math.imul(N,rt)|0,n=(n=n+Math.imul(N,it)|0)+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,ut)|0,i=i+Math.imul(m,ct)|0,n=(n=n+Math.imul(m,ft)|0)+Math.imul(E,ct)|0,o=o+Math.imul(E,ft)|0;var Qt=(u+(i=i+Math.imul(p,gt)|0)|0)+((8191&(n=(n=n+Math.imul(p,At)|0)+Math.imul(w,gt)|0))<<13)|0;u=((o=o+Math.imul(w,At)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,K))+Math.imul(L,P)|0,o=Math.imul(L,K),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(Y,$)|0,o=o+Math.imul(Y,tt)|0,i=i+Math.imul(U,rt)|0,n=(n=n+Math.imul(U,it)|0)+Math.imul(V,rt)|0,o=o+Math.imul(V,it)|0,i=i+Math.imul(N,ot)|0,n=(n=n+Math.imul(N,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(b,ct)|0,n=(n=n+Math.imul(b,ft)|0)+Math.imul(I,ct)|0,o=o+Math.imul(I,ft)|0;var Dt=(u+(i=i+Math.imul(m,gt)|0)|0)+((8191&(n=(n=n+Math.imul(m,At)|0)+Math.imul(E,gt)|0))<<13)|0;u=((o=o+Math.imul(E,At)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(Y,rt)|0,o=o+Math.imul(Y,it)|0,i=i+Math.imul(U,ot)|0,n=(n=n+Math.imul(U,st)|0)+Math.imul(V,ot)|0,o=o+Math.imul(V,st)|0,i=i+Math.imul(N,ht)|0,n=(n=n+Math.imul(N,ut)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,ut)|0,i=i+Math.imul(C,ct)|0,n=(n=n+Math.imul(C,ft)|0)+Math.imul(Q,ct)|0,o=o+Math.imul(Q,ft)|0;var Nt=(u+(i=i+Math.imul(b,gt)|0)|0)+((8191&(n=(n=n+Math.imul(b,At)|0)+Math.imul(I,gt)|0))<<13)|0;u=((o=o+Math.imul(I,At)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(Y,ot)|0,o=o+Math.imul(Y,st)|0,i=i+Math.imul(U,ht)|0,n=(n=n+Math.imul(U,ut)|0)+Math.imul(V,ht)|0,o=o+Math.imul(V,ut)|0,i=i+Math.imul(N,ct)|0,n=(n=n+Math.imul(N,ft)|0)+Math.imul(R,ct)|0,o=o+Math.imul(R,ft)|0;var Rt=(u+(i=i+Math.imul(C,gt)|0)|0)+((8191&(n=(n=n+Math.imul(C,At)|0)+Math.imul(Q,gt)|0))<<13)|0;u=((o=o+Math.imul(Q,At)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(Y,ht)|0,o=o+Math.imul(Y,ut)|0,i=i+Math.imul(U,ct)|0,n=(n=n+Math.imul(U,ft)|0)+Math.imul(V,ct)|0,o=o+Math.imul(V,ft)|0;var Gt=(u+(i=i+Math.imul(N,gt)|0)|0)+((8191&(n=(n=n+Math.imul(N,At)|0)+Math.imul(R,gt)|0))<<13)|0;u=((o=o+Math.imul(R,At)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,ct)|0,n=(n=n+Math.imul(T,ft)|0)+Math.imul(Y,ct)|0,o=o+Math.imul(Y,ft)|0;var Ut=(u+(i=i+Math.imul(U,gt)|0)|0)+((8191&(n=(n=n+Math.imul(U,At)|0)+Math.imul(V,gt)|0))<<13)|0;u=((o=o+Math.imul(V,At)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,i=Math.imul(F,ct),n=(n=Math.imul(F,ft))+Math.imul(L,ct)|0,o=Math.imul(L,ft);var Vt=(u+(i=i+Math.imul(T,gt)|0)|0)+((8191&(n=(n=n+Math.imul(T,At)|0)+Math.imul(Y,gt)|0))<<13)|0;u=((o=o+Math.imul(Y,At)|0)+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863;var St=(u+(i=Math.imul(F,gt))|0)+((8191&(n=(n=Math.imul(F,At))+Math.imul(L,gt)|0))<<13)|0;return u=((o=Math.imul(L,At))+(n>>>13)|0)+(St>>>26)|0,St&=67108863,h[0]=Mt,h[1]=pt,h[2]=wt,h[3]=Bt,h[4]=mt,h[5]=Et,h[6]=yt,h[7]=bt,h[8]=It,h[9]=vt,h[10]=Ct,h[11]=Qt,h[12]=Dt,h[13]=Nt,h[14]=Rt,h[15]=Gt,h[16]=Ut,h[17]=Vt,h[18]=St,0!==u&&(h[19]=u,r.length++),r};function A(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(g=d),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?g(this,t,e):r<63?d(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):A(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==l||u>=n);u--){var c=0|this.words[u];this.words[u]=l<<26-o|c>>>o,l=c&a}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;c--){var f=67108864*(0|i.words[n.length+c])+(0|i.words[n.length+c-1]);for(f=Math.min(f/s|0,67108863),i._ishlnsubmul(n,f,c);0!==i.negative;)f--,i.negative=0,i._ishlnsubmul(n,1,c),i.isZero()||(i.negative^=1);a&&(a.words[c]=f)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),c=e.clone();!e.isZero();){for(var f=0,d=1;0==(e.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(l),s.isub(c)),n.iushrn(1),s.iushrn(1);for(var g=0,A=1;0==(r.words[0]&A)&&g<26;++g,A<<=1);if(g>0)for(r.iushrn(g);g-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(l),h.isub(c)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var c=0,f=1;0==(r.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(r.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var p={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function B(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function m(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function E(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function I(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(B,w),B.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},B.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(p[t])return p[t];var e;if("k256"===t)e=new B;else if("p224"===t)e=new m;else if("p192"===t)e=new E;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return p[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var c=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),g=s;0!==d.cmp(a);){for(var A=d,M=0;0!==A.cmp(a);M++)A=A.redSqr();i(M=0;i--){for(var u=e.words[i],l=h-1;l>=0;l--){var c=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==c||0!==s?(s<<=1,s|=c,(4==++a||0===i&&0===l)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new I(t)},n(I,b),I.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},I.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},I.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},I.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},I.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},3482:(t,e,r)=>{"use strict";var i=r(5717),n=r(2318),o=r(9785),s=r(9072),a=r(1027);function h(t){a.call(this,"digest"),this._hash=t}i(h,a),h.prototype._update=function(t){this._hash.update(t)},h.prototype._final=function(){return this._hash.digest()},t.exports=function(t){return"md5"===(t=t.toLowerCase())?new n:"rmd160"===t||"ripemd160"===t?new o:new h(s(t))}},8028:(t,e,r)=>{var i=r(2318);t.exports=function(t){return(new i).update(t).digest()}},8355:(t,e,r)=>{"use strict";var i=r(5717),n=r(1031),o=r(1027),s=r(9509).Buffer,a=r(8028),h=r(9785),u=r(9072),l=s.alloc(128);function c(t,e){o.call(this,"digest"),"string"==typeof e&&(e=s.from(e));var r="sha512"===t||"sha384"===t?128:64;this._alg=t,this._key=e,e.length>r?e=("rmd160"===t?new h:u(t)).update(e).digest():e.length{"use strict";var i=r(5717),n=r(9509).Buffer,o=r(1027),s=n.alloc(128),a=64;function h(t,e){o.call(this,"digest"),"string"==typeof e&&(e=n.from(e)),this._alg=t,this._key=e,e.length>a?e=t(e):e.length{"use strict";e.randomBytes=e.rng=e.pseudoRandomBytes=e.prng=r(1798),e.createHash=e.Hash=r(3482),e.createHmac=e.Hmac=r(8355);var i=r(6042),n=Object.keys(i),o=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(n);e.getHashes=function(){return o};var s=r(5632);e.pbkdf2=s.pbkdf2,e.pbkdf2Sync=s.pbkdf2Sync;var a=r(3614);e.Cipher=a.Cipher,e.createCipher=a.createCipher,e.Cipheriv=a.Cipheriv,e.createCipheriv=a.createCipheriv,e.Decipher=a.Decipher,e.createDecipher=a.createDecipher,e.Decipheriv=a.Decipheriv,e.createDecipheriv=a.createDecipheriv,e.getCiphers=a.getCiphers,e.listCiphers=a.listCiphers;var h=r(2607);e.DiffieHellmanGroup=h.DiffieHellmanGroup,e.createDiffieHellmanGroup=h.createDiffieHellmanGroup,e.getDiffieHellman=h.getDiffieHellman,e.createDiffieHellman=h.createDiffieHellman,e.DiffieHellman=h.DiffieHellman;var u=r(4743);e.createSign=u.createSign,e.Sign=u.Sign,e.createVerify=u.createVerify,e.Verify=u.Verify,e.createECDH=r(6393);var l=r(7900);e.publicEncrypt=l.publicEncrypt,e.privateEncrypt=l.privateEncrypt,e.publicDecrypt=l.publicDecrypt,e.privateDecrypt=l.privateDecrypt;var c=r(7963);e.randomFill=c.randomFill,e.randomFillSync=c.randomFillSync,e.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))},e.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},4289:(t,e,r)=>{"use strict";var i=r(2215),n="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),o=Object.prototype.toString,s=Array.prototype.concat,a=Object.defineProperty,h=a&&function(){var t={};try{for(var e in a(t,"x",{enumerable:!1,value:t}),t)return!1;return t.x===t}catch(t){return!1}}(),u=function(t,e,r,i){var n;(!(e in t)||"function"==typeof(n=i)&&"[object Function]"===o.call(n)&&i())&&(h?a(t,e,{configurable:!0,enumerable:!1,value:r,writable:!0}):t[e]=r)},l=function(t,e){var r=arguments.length>2?arguments[2]:{},o=i(e);n&&(o=s.call(o,Object.getOwnPropertySymbols(e)));for(var a=0;a{"use strict";e.utils=r(1278),e.Cipher=r(5756),e.DES=r(778),e.CBC=r(9051),e.EDE=r(651)},9051:(t,e,r)=>{"use strict";var i=r(9746),n=r(5717),o={};function s(t){i.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var e=0;e{"use strict";var i=r(9746);function n(t){this.options=t,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}t.exports=n,n.prototype._init=function(){},n.prototype.update=function(t){return 0===t.length?[]:"decrypt"===this.type?this._updateDecrypt(t):this._updateEncrypt(t)},n.prototype._buffer=function(t,e){for(var r=Math.min(this.buffer.length-this.bufferOff,t.length-e),i=0;i0;i--)e+=this._buffer(t,e),r+=this._flushBuffer(n,r);return e+=this._buffer(t,e),n},n.prototype.final=function(t){var e,r;return t&&(e=this.update(t)),r="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),e?e.concat(r):r},n.prototype._pad=function(t,e){if(0===e)return!1;for(;e{"use strict";var i=r(9746),n=r(5717),o=r(1278),s=r(5756);function a(){this.tmp=new Array(2),this.keys=null}function h(t){s.call(this,t);var e=new a;this._desState=e,this.deriveKeys(e,t.key)}n(h,s),t.exports=h,h.create=function(t){return new h(t)};var u=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];h.prototype.deriveKeys=function(t,e){t.keys=new Array(32),i.equal(e.length,this.blockSize,"Invalid key length");var r=o.readUInt32BE(e,0),n=o.readUInt32BE(e,4);o.pc1(r,n,t.tmp,0),r=t.tmp[0],n=t.tmp[1];for(var s=0;s>>1];r=o.r28shl(r,a),n=o.r28shl(n,a),o.pc2(r,n,t.keys,s)}},h.prototype._update=function(t,e,r,i){var n=this._desState,s=o.readUInt32BE(t,e),a=o.readUInt32BE(t,e+4);o.ip(s,a,n.tmp,0),s=n.tmp[0],a=n.tmp[1],"encrypt"===this.type?this._encrypt(n,s,a,n.tmp,0):this._decrypt(n,s,a,n.tmp,0),s=n.tmp[0],a=n.tmp[1],o.writeUInt32BE(r,s,i),o.writeUInt32BE(r,a,i+4)},h.prototype._pad=function(t,e){for(var r=t.length-e,i=e;i>>0,s=f}o.rip(a,s,i,n)},h.prototype._decrypt=function(t,e,r,i,n){for(var s=r,a=e,h=t.keys.length-2;h>=0;h-=2){var u=t.keys[h],l=t.keys[h+1];o.expand(s,t.tmp,0),u^=t.tmp[0],l^=t.tmp[1];var c=o.substitute(u,l),f=s;s=(a^o.permute(c))>>>0,a=f}o.rip(s,a,i,n)}},651:(t,e,r)=>{"use strict";var i=r(9746),n=r(5717),o=r(5756),s=r(778);function a(t,e){i.equal(e.length,24,"Invalid key length");var r=e.slice(0,8),n=e.slice(8,16),o=e.slice(16,24);this.ciphers="encrypt"===t?[s.create({type:"encrypt",key:r}),s.create({type:"decrypt",key:n}),s.create({type:"encrypt",key:o})]:[s.create({type:"decrypt",key:o}),s.create({type:"encrypt",key:n}),s.create({type:"decrypt",key:r})]}function h(t){o.call(this,t);var e=new a(this.type,this.options.key);this._edeState=e}n(h,o),t.exports=h,h.create=function(t){return new h(t)},h.prototype._update=function(t,e,r,i){var n=this._edeState;n.ciphers[0]._update(t,e,r,i),n.ciphers[1]._update(r,i,r,i),n.ciphers[2]._update(r,i,r,i)},h.prototype._pad=s.prototype._pad,h.prototype._unpad=s.prototype._unpad},1278:(t,e)=>{"use strict";e.readUInt32BE=function(t,e){return(t[0+e]<<24|t[1+e]<<16|t[2+e]<<8|t[3+e])>>>0},e.writeUInt32BE=function(t,e,r){t[0+r]=e>>>24,t[1+r]=e>>>16&255,t[2+r]=e>>>8&255,t[3+r]=255&e},e.ip=function(t,e,r,i){for(var n=0,o=0,s=6;s>=0;s-=2){for(var a=0;a<=24;a+=8)n<<=1,n|=e>>>a+s&1;for(a=0;a<=24;a+=8)n<<=1,n|=t>>>a+s&1}for(s=6;s>=0;s-=2){for(a=1;a<=25;a+=8)o<<=1,o|=e>>>a+s&1;for(a=1;a<=25;a+=8)o<<=1,o|=t>>>a+s&1}r[i+0]=n>>>0,r[i+1]=o>>>0},e.rip=function(t,e,r,i){for(var n=0,o=0,s=0;s<4;s++)for(var a=24;a>=0;a-=8)n<<=1,n|=e>>>a+s&1,n<<=1,n|=t>>>a+s&1;for(s=4;s<8;s++)for(a=24;a>=0;a-=8)o<<=1,o|=e>>>a+s&1,o<<=1,o|=t>>>a+s&1;r[i+0]=n>>>0,r[i+1]=o>>>0},e.pc1=function(t,e,r,i){for(var n=0,o=0,s=7;s>=5;s--){for(var a=0;a<=24;a+=8)n<<=1,n|=e>>a+s&1;for(a=0;a<=24;a+=8)n<<=1,n|=t>>a+s&1}for(a=0;a<=24;a+=8)n<<=1,n|=e>>a+s&1;for(s=1;s<=3;s++){for(a=0;a<=24;a+=8)o<<=1,o|=e>>a+s&1;for(a=0;a<=24;a+=8)o<<=1,o|=t>>a+s&1}for(a=0;a<=24;a+=8)o<<=1,o|=t>>a+s&1;r[i+0]=n>>>0,r[i+1]=o>>>0},e.r28shl=function(t,e){return t<>>28-e};var r=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];e.pc2=function(t,e,i,n){for(var o=0,s=0,a=r.length>>>1,h=0;h>>r[h]&1;for(h=a;h>>r[h]&1;i[n+0]=o>>>0,i[n+1]=s>>>0},e.expand=function(t,e,r){var i=0,n=0;i=(1&t)<<5|t>>>27;for(var o=23;o>=15;o-=4)i<<=6,i|=t>>>o&63;for(o=11;o>=3;o-=4)n|=t>>>o&63,n<<=6;n|=(31&t)<<1|t>>>31,e[r+0]=i>>>0,e[r+1]=n>>>0};var i=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];e.substitute=function(t,e){for(var r=0,n=0;n<4;n++)r<<=4,r|=i[64*n+(t>>>18-6*n&63)];for(n=0;n<4;n++)r<<=4,r|=i[256+64*n+(e>>>18-6*n&63)];return r>>>0};var n=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];e.permute=function(t){for(var e=0,r=0;r>>n[r]&1;return e>>>0},e.padSplit=function(t,e,r){for(var i=t.toString(2);i.length{var i=r(8764).Buffer,n=r(3590),o=r(1930),s=r(7426),a={binary:!0,hex:!0,base64:!0};e.DiffieHellmanGroup=e.createDiffieHellmanGroup=e.getDiffieHellman=function(t){var e=new i(o[t].prime,"hex"),r=new i(o[t].gen,"hex");return new s(e,r)},e.createDiffieHellman=e.DiffieHellman=function t(e,r,o,h){return i.isBuffer(r)||void 0===a[r]?t(e,"binary",r,o):(r=r||"binary",h=h||"binary",o=o||new i([2]),i.isBuffer(o)||(o=new i(o,h)),"number"==typeof e?new s(n(e,o),o,!0):(i.isBuffer(e)||(e=new i(e,r)),new s(e,o,!0)))}},7426:(t,e,r)=>{var i=r(8764).Buffer,n=r(3620),o=new(r(3047)),s=new n(24),a=new n(11),h=new n(10),u=new n(3),l=new n(7),c=r(3590),f=r(1798);function d(t,e){return e=e||"utf8",i.isBuffer(t)||(t=new i(t,e)),this._pub=new n(t),this}function g(t,e){return e=e||"utf8",i.isBuffer(t)||(t=new i(t,e)),this._priv=new n(t),this}t.exports=M;var A={};function M(t,e,r){this.setGenerator(e),this.__prime=new n(t),this._prime=n.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=d,this.setPrivateKey=g):this._primeCode=8}function p(t,e){var r=new i(t.toArray());return e?r.toString(e):r}Object.defineProperty(M.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(t,e){var r=e.toString("hex"),i=[r,t.toString(16)].join("_");if(i in A)return A[i];var n,f=0;if(t.isEven()||!c.simpleSieve||!c.fermatTest(t)||!o.test(t))return f+=1,f+="02"===r||"05"===r?8:4,A[i]=f,f;switch(o.test(t.shrn(1))||(f+=2),r){case"02":t.mod(s).cmp(a)&&(f+=8);break;case"05":(n=t.mod(h)).cmp(u)&&n.cmp(l)&&(f+=8);break;default:f+=4}return A[i]=f,f}(this.__prime,this.__gen)),this._primeCode}}),M.prototype.generateKeys=function(){return this._priv||(this._priv=new n(f(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},M.prototype.computeSecret=function(t){var e=(t=(t=new n(t)).toRed(this._prime)).redPow(this._priv).fromRed(),r=new i(e.toArray()),o=this.getPrime();if(r.length{var i=r(1798);t.exports=w,w.simpleSieve=M,w.fermatTest=p;var n=r(3620),o=new n(24),s=new(r(3047)),a=new n(1),h=new n(2),u=new n(5),l=(new n(16),new n(8),new n(10)),c=new n(3),f=(new n(7),new n(11)),d=new n(4),g=(new n(12),null);function A(){if(null!==g)return g;var t=[];t[0]=2;for(var e=1,r=3;r<1048576;r+=2){for(var i=Math.ceil(Math.sqrt(r)),n=0;nt;)r.ishrn(1);if(r.isEven()&&r.iadd(a),r.testn(1)||r.iadd(h),e.cmp(h)){if(!e.cmp(u))for(;r.mod(l).cmp(c);)r.iadd(d)}else for(;r.mod(o).cmp(f);)r.iadd(d);if(M(g=r.shrn(1))&&M(r)&&p(g)&&p(r)&&s.test(g)&&s.test(r))return r}}},1930:t=>{"use strict";t.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},3620:function(t,e,r){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(7748).Buffer}catch(t){}function a(t,e){var r=t.charCodeAt(e);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,c=67108863&h,f=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=f;d++){var g=u-d|0;l+=(s=(n=0|t.words[g])*(o=0|e.words[d])+c)/67108864|0,c=67108863&s}r.words[u]=0|c,h=0|l}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?l[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=c[t],d=f[t];r="";var g=this.clone();for(g.negative=0;!g.isZero();){var A=g.modn(d).toString(t);r=(g=g.idivn(d)).isZero()?A+r:l[u-A.length]+A+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),l=this.clone();if(h){for(a=0;!l.isZero();a++)s=l.andln(255),l.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],g=8191&d,A=d>>>13,M=0|s[2],p=8191&M,w=M>>>13,B=0|s[3],m=8191&B,E=B>>>13,y=0|s[4],b=8191&y,I=y>>>13,v=0|s[5],C=8191&v,Q=v>>>13,D=0|s[6],N=8191&D,R=D>>>13,G=0|s[7],U=8191&G,V=G>>>13,S=0|s[8],T=8191&S,Y=S>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,x=j>>>13,z=0|a[1],O=8191&z,H=z>>>13,_=0|a[2],W=8191&_,J=_>>>13,X=0|a[3],P=8191&X,K=X>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,lt=0|a[8],ct=8191<,ft=lt>>>13,dt=0|a[9],gt=8191&dt,At=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(c,Z))|0)+((8191&(n=(n=Math.imul(c,x))+Math.imul(f,Z)|0))<<13)|0;u=((o=Math.imul(f,x))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(g,Z),n=(n=Math.imul(g,x))+Math.imul(A,Z)|0,o=Math.imul(A,x);var pt=(u+(i=i+Math.imul(c,O)|0)|0)+((8191&(n=(n=n+Math.imul(c,H)|0)+Math.imul(f,O)|0))<<13)|0;u=((o=o+Math.imul(f,H)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,x))+Math.imul(w,Z)|0,o=Math.imul(w,x),i=i+Math.imul(g,O)|0,n=(n=n+Math.imul(g,H)|0)+Math.imul(A,O)|0,o=o+Math.imul(A,H)|0;var wt=(u+(i=i+Math.imul(c,W)|0)|0)+((8191&(n=(n=n+Math.imul(c,J)|0)+Math.imul(f,W)|0))<<13)|0;u=((o=o+Math.imul(f,J)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(m,Z),n=(n=Math.imul(m,x))+Math.imul(E,Z)|0,o=Math.imul(E,x),i=i+Math.imul(p,O)|0,n=(n=n+Math.imul(p,H)|0)+Math.imul(w,O)|0,o=o+Math.imul(w,H)|0,i=i+Math.imul(g,W)|0,n=(n=n+Math.imul(g,J)|0)+Math.imul(A,W)|0,o=o+Math.imul(A,J)|0;var Bt=(u+(i=i+Math.imul(c,P)|0)|0)+((8191&(n=(n=n+Math.imul(c,K)|0)+Math.imul(f,P)|0))<<13)|0;u=((o=o+Math.imul(f,K)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,x))+Math.imul(I,Z)|0,o=Math.imul(I,x),i=i+Math.imul(m,O)|0,n=(n=n+Math.imul(m,H)|0)+Math.imul(E,O)|0,o=o+Math.imul(E,H)|0,i=i+Math.imul(p,W)|0,n=(n=n+Math.imul(p,J)|0)+Math.imul(w,W)|0,o=o+Math.imul(w,J)|0,i=i+Math.imul(g,P)|0,n=(n=n+Math.imul(g,K)|0)+Math.imul(A,P)|0,o=o+Math.imul(A,K)|0;var mt=(u+(i=i+Math.imul(c,$)|0)|0)+((8191&(n=(n=n+Math.imul(c,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,x))+Math.imul(Q,Z)|0,o=Math.imul(Q,x),i=i+Math.imul(b,O)|0,n=(n=n+Math.imul(b,H)|0)+Math.imul(I,O)|0,o=o+Math.imul(I,H)|0,i=i+Math.imul(m,W)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,J)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,K)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,K)|0,i=i+Math.imul(g,$)|0,n=(n=n+Math.imul(g,tt)|0)+Math.imul(A,$)|0,o=o+Math.imul(A,tt)|0;var Et=(u+(i=i+Math.imul(c,rt)|0)|0)+((8191&(n=(n=n+Math.imul(c,it)|0)+Math.imul(f,rt)|0))<<13)|0;u=((o=o+Math.imul(f,it)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,Z),n=(n=Math.imul(N,x))+Math.imul(R,Z)|0,o=Math.imul(R,x),i=i+Math.imul(C,O)|0,n=(n=n+Math.imul(C,H)|0)+Math.imul(Q,O)|0,o=o+Math.imul(Q,H)|0,i=i+Math.imul(b,W)|0,n=(n=n+Math.imul(b,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,i=i+Math.imul(m,P)|0,n=(n=n+Math.imul(m,K)|0)+Math.imul(E,P)|0,o=o+Math.imul(E,K)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(g,rt)|0,n=(n=n+Math.imul(g,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0;var yt=(u+(i=i+Math.imul(c,ot)|0)|0)+((8191&(n=(n=n+Math.imul(c,st)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(U,Z),n=(n=Math.imul(U,x))+Math.imul(V,Z)|0,o=Math.imul(V,x),i=i+Math.imul(N,O)|0,n=(n=n+Math.imul(N,H)|0)+Math.imul(R,O)|0,o=o+Math.imul(R,H)|0,i=i+Math.imul(C,W)|0,n=(n=n+Math.imul(C,J)|0)+Math.imul(Q,W)|0,o=o+Math.imul(Q,J)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,K)|0)+Math.imul(I,P)|0,o=o+Math.imul(I,K)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(g,ot)|0,n=(n=n+Math.imul(g,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0;var bt=(u+(i=i+Math.imul(c,ht)|0)|0)+((8191&(n=(n=n+Math.imul(c,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,x))+Math.imul(Y,Z)|0,o=Math.imul(Y,x),i=i+Math.imul(U,O)|0,n=(n=n+Math.imul(U,H)|0)+Math.imul(V,O)|0,o=o+Math.imul(V,H)|0,i=i+Math.imul(N,W)|0,n=(n=n+Math.imul(N,J)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,J)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,K)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,K)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,tt)|0,i=i+Math.imul(m,rt)|0,n=(n=n+Math.imul(m,it)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(g,ht)|0,n=(n=n+Math.imul(g,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0;var It=(u+(i=i+Math.imul(c,ct)|0)|0)+((8191&(n=(n=n+Math.imul(c,ft)|0)+Math.imul(f,ct)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,x))+Math.imul(L,Z)|0,o=Math.imul(L,x),i=i+Math.imul(T,O)|0,n=(n=n+Math.imul(T,H)|0)+Math.imul(Y,O)|0,o=o+Math.imul(Y,H)|0,i=i+Math.imul(U,W)|0,n=(n=n+Math.imul(U,J)|0)+Math.imul(V,W)|0,o=o+Math.imul(V,J)|0,i=i+Math.imul(N,P)|0,n=(n=n+Math.imul(N,K)|0)+Math.imul(R,P)|0,o=o+Math.imul(R,K)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,it)|0,i=i+Math.imul(m,ot)|0,n=(n=n+Math.imul(m,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(g,ct)|0,n=(n=n+Math.imul(g,ft)|0)+Math.imul(A,ct)|0,o=o+Math.imul(A,ft)|0;var vt=(u+(i=i+Math.imul(c,gt)|0)|0)+((8191&(n=(n=n+Math.imul(c,At)|0)+Math.imul(f,gt)|0))<<13)|0;u=((o=o+Math.imul(f,At)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,O),n=(n=Math.imul(F,H))+Math.imul(L,O)|0,o=Math.imul(L,H),i=i+Math.imul(T,W)|0,n=(n=n+Math.imul(T,J)|0)+Math.imul(Y,W)|0,o=o+Math.imul(Y,J)|0,i=i+Math.imul(U,P)|0,n=(n=n+Math.imul(U,K)|0)+Math.imul(V,P)|0,o=o+Math.imul(V,K)|0,i=i+Math.imul(N,$)|0,n=(n=n+Math.imul(N,tt)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,i=i+Math.imul(m,ht)|0,n=(n=n+Math.imul(m,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,i=i+Math.imul(p,ct)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(w,ct)|0,o=o+Math.imul(w,ft)|0;var Ct=(u+(i=i+Math.imul(g,gt)|0)|0)+((8191&(n=(n=n+Math.imul(g,At)|0)+Math.imul(A,gt)|0))<<13)|0;u=((o=o+Math.imul(A,At)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,W),n=(n=Math.imul(F,J))+Math.imul(L,W)|0,o=Math.imul(L,J),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,K)|0)+Math.imul(Y,P)|0,o=o+Math.imul(Y,K)|0,i=i+Math.imul(U,$)|0,n=(n=n+Math.imul(U,tt)|0)+Math.imul(V,$)|0,o=o+Math.imul(V,tt)|0,i=i+Math.imul(N,rt)|0,n=(n=n+Math.imul(N,it)|0)+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,ut)|0,i=i+Math.imul(m,ct)|0,n=(n=n+Math.imul(m,ft)|0)+Math.imul(E,ct)|0,o=o+Math.imul(E,ft)|0;var Qt=(u+(i=i+Math.imul(p,gt)|0)|0)+((8191&(n=(n=n+Math.imul(p,At)|0)+Math.imul(w,gt)|0))<<13)|0;u=((o=o+Math.imul(w,At)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,K))+Math.imul(L,P)|0,o=Math.imul(L,K),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(Y,$)|0,o=o+Math.imul(Y,tt)|0,i=i+Math.imul(U,rt)|0,n=(n=n+Math.imul(U,it)|0)+Math.imul(V,rt)|0,o=o+Math.imul(V,it)|0,i=i+Math.imul(N,ot)|0,n=(n=n+Math.imul(N,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(b,ct)|0,n=(n=n+Math.imul(b,ft)|0)+Math.imul(I,ct)|0,o=o+Math.imul(I,ft)|0;var Dt=(u+(i=i+Math.imul(m,gt)|0)|0)+((8191&(n=(n=n+Math.imul(m,At)|0)+Math.imul(E,gt)|0))<<13)|0;u=((o=o+Math.imul(E,At)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(Y,rt)|0,o=o+Math.imul(Y,it)|0,i=i+Math.imul(U,ot)|0,n=(n=n+Math.imul(U,st)|0)+Math.imul(V,ot)|0,o=o+Math.imul(V,st)|0,i=i+Math.imul(N,ht)|0,n=(n=n+Math.imul(N,ut)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,ut)|0,i=i+Math.imul(C,ct)|0,n=(n=n+Math.imul(C,ft)|0)+Math.imul(Q,ct)|0,o=o+Math.imul(Q,ft)|0;var Nt=(u+(i=i+Math.imul(b,gt)|0)|0)+((8191&(n=(n=n+Math.imul(b,At)|0)+Math.imul(I,gt)|0))<<13)|0;u=((o=o+Math.imul(I,At)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(Y,ot)|0,o=o+Math.imul(Y,st)|0,i=i+Math.imul(U,ht)|0,n=(n=n+Math.imul(U,ut)|0)+Math.imul(V,ht)|0,o=o+Math.imul(V,ut)|0,i=i+Math.imul(N,ct)|0,n=(n=n+Math.imul(N,ft)|0)+Math.imul(R,ct)|0,o=o+Math.imul(R,ft)|0;var Rt=(u+(i=i+Math.imul(C,gt)|0)|0)+((8191&(n=(n=n+Math.imul(C,At)|0)+Math.imul(Q,gt)|0))<<13)|0;u=((o=o+Math.imul(Q,At)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(Y,ht)|0,o=o+Math.imul(Y,ut)|0,i=i+Math.imul(U,ct)|0,n=(n=n+Math.imul(U,ft)|0)+Math.imul(V,ct)|0,o=o+Math.imul(V,ft)|0;var Gt=(u+(i=i+Math.imul(N,gt)|0)|0)+((8191&(n=(n=n+Math.imul(N,At)|0)+Math.imul(R,gt)|0))<<13)|0;u=((o=o+Math.imul(R,At)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,ct)|0,n=(n=n+Math.imul(T,ft)|0)+Math.imul(Y,ct)|0,o=o+Math.imul(Y,ft)|0;var Ut=(u+(i=i+Math.imul(U,gt)|0)|0)+((8191&(n=(n=n+Math.imul(U,At)|0)+Math.imul(V,gt)|0))<<13)|0;u=((o=o+Math.imul(V,At)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,i=Math.imul(F,ct),n=(n=Math.imul(F,ft))+Math.imul(L,ct)|0,o=Math.imul(L,ft);var Vt=(u+(i=i+Math.imul(T,gt)|0)|0)+((8191&(n=(n=n+Math.imul(T,At)|0)+Math.imul(Y,gt)|0))<<13)|0;u=((o=o+Math.imul(Y,At)|0)+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863;var St=(u+(i=Math.imul(F,gt))|0)+((8191&(n=(n=Math.imul(F,At))+Math.imul(L,gt)|0))<<13)|0;return u=((o=Math.imul(L,At))+(n>>>13)|0)+(St>>>26)|0,St&=67108863,h[0]=Mt,h[1]=pt,h[2]=wt,h[3]=Bt,h[4]=mt,h[5]=Et,h[6]=yt,h[7]=bt,h[8]=It,h[9]=vt,h[10]=Ct,h[11]=Qt,h[12]=Dt,h[13]=Nt,h[14]=Rt,h[15]=Gt,h[16]=Ut,h[17]=Vt,h[18]=St,0!==u&&(h[19]=u,r.length++),r};function A(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(g=d),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?g(this,t,e):r<63?d(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):A(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==l||u>=n);u--){var c=0|this.words[u];this.words[u]=l<<26-o|c>>>o,l=c&a}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;c--){var f=67108864*(0|i.words[n.length+c])+(0|i.words[n.length+c-1]);for(f=Math.min(f/s|0,67108863),i._ishlnsubmul(n,f,c);0!==i.negative;)f--,i.negative=0,i._ishlnsubmul(n,1,c),i.isZero()||(i.negative^=1);a&&(a.words[c]=f)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),c=e.clone();!e.isZero();){for(var f=0,d=1;0==(e.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(l),s.isub(c)),n.iushrn(1),s.iushrn(1);for(var g=0,A=1;0==(r.words[0]&A)&&g<26;++g,A<<=1);if(g>0)for(r.iushrn(g);g-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(l),h.isub(c)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var c=0,f=1;0==(r.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(r.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var p={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function B(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function m(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function E(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function I(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(B,w),B.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},B.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(p[t])return p[t];var e;if("k256"===t)e=new B;else if("p224"===t)e=new m;else if("p192"===t)e=new E;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return p[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var c=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),g=s;0!==d.cmp(a);){for(var A=d,M=0;0!==A.cmp(a);M++)A=A.redSqr();i(M=0;i--){for(var u=e.words[i],l=h-1;l>=0;l--){var c=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==c||0!==s?(s<<=1,s|=c,(4==++a||0===i&&0===l)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new I(t)},n(I,b),I.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},I.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},I.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},I.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},I.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},6266:(t,e,r)=>{"use strict";var i=e;i.version=r(7519).i8,i.utils=r(953),i.rand=r(9931),i.curve=r(8254),i.curves=r(5427),i.ec=r(7954),i.eddsa=r(5980)},4918:(t,e,r)=>{"use strict";var i=r(3785),n=r(953),o=n.getNAF,s=n.getJSF,a=n.assert;function h(t,e){this.type=t,this.p=new i(e.p,16),this.red=e.prime?i.red(e.prime):i.mont(this.p),this.zero=new i(0).toRed(this.red),this.one=new i(1).toRed(this.red),this.two=new i(2).toRed(this.red),this.n=e.n&&new i(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function u(t,e){this.curve=t,this.type=e,this.precomputed=null}t.exports=h,h.prototype.point=function(){throw new Error("Not implemented")},h.prototype.validate=function(){throw new Error("Not implemented")},h.prototype._fixedNafMul=function(t,e){a(t.precomputed);var r=t._getDoubles(),i=o(e,1,this._bitLength),n=(1<=s;l--)h=(h<<1)+i[l];u.push(h)}for(var c=this.jpoint(null,null,null),f=this.jpoint(null,null,null),d=n;d>0;d--){for(s=0;s=0;u--){for(var l=0;u>=0&&0===s[u];u--)l++;if(u>=0&&l++,h=h.dblp(l),u<0)break;var c=s[u];a(0!==c),h="affine"===t.type?c>0?h.mixedAdd(n[c-1>>1]):h.mixedAdd(n[-c-1>>1].neg()):c>0?h.add(n[c-1>>1]):h.add(n[-c-1>>1].neg())}return"affine"===t.type?h.toP():h},h.prototype._wnafMulAdd=function(t,e,r,i,n){var a,h,u,l=this._wnafT1,c=this._wnafT2,f=this._wnafT3,d=0;for(a=0;a=1;a-=2){var A=a-1,M=a;if(1===l[A]&&1===l[M]){var p=[e[A],null,null,e[M]];0===e[A].y.cmp(e[M].y)?(p[1]=e[A].add(e[M]),p[2]=e[A].toJ().mixedAdd(e[M].neg())):0===e[A].y.cmp(e[M].y.redNeg())?(p[1]=e[A].toJ().mixedAdd(e[M]),p[2]=e[A].add(e[M].neg())):(p[1]=e[A].toJ().mixedAdd(e[M]),p[2]=e[A].toJ().mixedAdd(e[M].neg()));var w=[-3,-1,-5,-7,0,7,5,1,3],B=s(r[A],r[M]);for(d=Math.max(B[0].length,d),f[A]=new Array(d),f[M]=new Array(d),h=0;h=0;a--){for(var I=0;a>=0;){var v=!0;for(h=0;h=0&&I++,y=y.dblp(I),a<0)break;for(h=0;h0?u=c[h][C-1>>1]:C<0&&(u=c[h][-C-1>>1].neg()),y="affine"===u.type?y.mixedAdd(u):y.add(u))}}for(a=0;a=Math.ceil((t.bitLength()+1)/e.step)},u.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,n=0;n{"use strict";var i=r(953),n=r(3785),o=r(5717),s=r(4918),a=i.assert;function h(t){this.twisted=1!=(0|t.a),this.mOneA=this.twisted&&-1==(0|t.a),this.extended=this.mOneA,s.call(this,"edwards",t),this.a=new n(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new n(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new n(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),a(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|t.c)}function u(t,e,r,i,o){s.BasePoint.call(this,t,"projective"),null===e&&null===r&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new n(e,16),this.y=new n(r,16),this.z=i?new n(i,16):this.curve.one,this.t=o&&new n(o,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}o(h,s),t.exports=h,h.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)},h.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)},h.prototype.jpoint=function(t,e,r,i){return this.point(t,e,r,i)},h.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr(),i=this.c2.redSub(this.a.redMul(r)),o=this.one.redSub(this.c2.redMul(this.d).redMul(r)),s=i.redMul(o.redInvm()),a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");var h=a.fromRed().isOdd();return(e&&!h||!e&&h)&&(a=a.redNeg()),this.point(t,a)},h.prototype.pointFromY=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr(),i=r.redSub(this.c2),o=r.redMul(this.d).redMul(this.c2).redSub(this.a),s=i.redMul(o.redInvm());if(0===s.cmp(this.zero)){if(e)throw new Error("invalid point");return this.point(this.zero,t)}var a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");return a.fromRed().isOdd()!==e&&(a=a.redNeg()),this.point(a,t)},h.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var e=t.x.redSqr(),r=t.y.redSqr(),i=e.redMul(this.a).redAdd(r),n=this.c2.redMul(this.one.redAdd(this.d.redMul(e).redMul(r)));return 0===i.cmp(n)},o(u,s.BasePoint),h.prototype.pointFromJSON=function(t){return u.fromJSON(this,t)},h.prototype.point=function(t,e,r,i){return new u(this,t,e,r,i)},u.fromJSON=function(t,e){return new u(t,e[0],e[1],e[2])},u.prototype.inspect=function(){return this.isInfinity()?"":""},u.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},u.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(t),n=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=i.redAdd(e),s=o.redSub(r),a=i.redSub(e),h=n.redMul(s),u=o.redMul(a),l=n.redMul(a),c=s.redMul(o);return this.curve.point(h,u,c,l)},u.prototype._projDbl=function(){var t,e,r,i,n,o,s=this.x.redAdd(this.y).redSqr(),a=this.x.redSqr(),h=this.y.redSqr();if(this.curve.twisted){var u=(i=this.curve._mulA(a)).redAdd(h);this.zOne?(t=s.redSub(a).redSub(h).redMul(u.redSub(this.curve.two)),e=u.redMul(i.redSub(h)),r=u.redSqr().redSub(u).redSub(u)):(n=this.z.redSqr(),o=u.redSub(n).redISub(n),t=s.redSub(a).redISub(h).redMul(o),e=u.redMul(i.redSub(h)),r=u.redMul(o))}else i=a.redAdd(h),n=this.curve._mulC(this.z).redSqr(),o=i.redSub(n).redSub(n),t=this.curve._mulC(s.redISub(i)).redMul(o),e=this.curve._mulC(i).redMul(a.redISub(h)),r=i.redMul(o);return this.curve.point(t,e,r)},u.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},u.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),i=this.t.redMul(this.curve.dd).redMul(t.t),n=this.z.redMul(t.z.redAdd(t.z)),o=r.redSub(e),s=n.redSub(i),a=n.redAdd(i),h=r.redAdd(e),u=o.redMul(s),l=a.redMul(h),c=o.redMul(h),f=s.redMul(a);return this.curve.point(u,l,f,c)},u.prototype._projAdd=function(t){var e,r,i=this.z.redMul(t.z),n=i.redSqr(),o=this.x.redMul(t.x),s=this.y.redMul(t.y),a=this.curve.d.redMul(o).redMul(s),h=n.redSub(a),u=n.redAdd(a),l=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(s),c=i.redMul(h).redMul(l);return this.curve.twisted?(e=i.redMul(u).redMul(s.redSub(this.curve._mulA(o))),r=h.redMul(u)):(e=i.redMul(u).redMul(s.redSub(o)),r=this.curve._mulC(h).redMul(u)),this.curve.point(c,e,r)},u.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},u.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},u.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},u.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},u.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()},u.prototype.getY=function(){return this.normalize(),this.y.fromRed()},u.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},u.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(i),0===this.x.cmp(e))return!0}},u.prototype.toP=u.prototype.normalize,u.prototype.mixedAdd=u.prototype.add},8254:(t,e,r)=>{"use strict";var i=e;i.base=r(4918),i.short=r(6673),i.mont=r(2881),i.edwards=r(1138)},2881:(t,e,r)=>{"use strict";var i=r(3785),n=r(5717),o=r(4918),s=r(953);function a(t){o.call(this,"mont",t),this.a=new i(t.a,16).toRed(this.red),this.b=new i(t.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function h(t,e,r){o.BasePoint.call(this,t,"projective"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(e,16),this.z=new i(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}n(a,o),t.exports=a,a.prototype.validate=function(t){var e=t.normalize().x,r=e.redSqr(),i=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e);return 0===i.redSqrt().redSqr().cmp(i)},n(h,o.BasePoint),a.prototype.decodePoint=function(t,e){return this.point(s.toArray(t,e),1)},a.prototype.point=function(t,e){return new h(this,t,e)},a.prototype.pointFromJSON=function(t){return h.fromJSON(this,t)},h.prototype.precompute=function(){},h.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},h.fromJSON=function(t,e){return new h(t,e[0],e[1]||t.one)},h.prototype.inspect=function(){return this.isInfinity()?"":""},h.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},h.prototype.dbl=function(){var t=this.x.redAdd(this.z).redSqr(),e=this.x.redSub(this.z).redSqr(),r=t.redSub(e),i=t.redMul(e),n=r.redMul(e.redAdd(this.curve.a24.redMul(r)));return this.curve.point(i,n)},h.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),n=t.x.redAdd(t.z),o=t.x.redSub(t.z).redMul(r),s=n.redMul(i),a=e.z.redMul(o.redAdd(s).redSqr()),h=e.x.redMul(o.redISub(s).redSqr());return this.curve.point(a,h)},h.prototype.mul=function(t){for(var e=t.clone(),r=this,i=this.curve.point(null,null),n=[];0!==e.cmpn(0);e.iushrn(1))n.push(e.andln(1));for(var o=n.length-1;o>=0;o--)0===n[o]?(r=r.diffAdd(i,this),i=i.dbl()):(i=r.diffAdd(i,this),r=r.dbl());return i},h.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},h.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},h.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},6673:(t,e,r)=>{"use strict";var i=r(953),n=r(3785),o=r(5717),s=r(4918),a=i.assert;function h(t){s.call(this,"short",t),this.a=new n(t.a,16).toRed(this.red),this.b=new n(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function u(t,e,r,i){s.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new n(e,16),this.y=new n(r,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function l(t,e,r,i){s.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===i?(this.x=this.curve.one,this.y=this.curve.one,this.z=new n(0)):(this.x=new n(e,16),this.y=new n(r,16),this.z=new n(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}o(h,s),t.exports=h,h.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new n(t.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);e=(e=i[0].cmp(i[1])<0?i[0]:i[1]).toRed(this.red)}if(t.lambda)r=new n(t.lambda,16);else{var o=this._getEndoRoots(this.n);0===this.g.mul(o[0]).x.cmp(this.g.x.redMul(e))?r=o[0]:(r=o[1],a(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:r,basis:t.basis?t.basis.map((function(t){return{a:new n(t.a,16),b:new n(t.b,16)}})):this._getEndoBasis(r)}}},h.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:n.mont(t),r=new n(2).toRed(e).redInvm(),i=r.redNeg(),o=new n(3).toRed(e).redNeg().redSqrt().redMul(r);return[i.redAdd(o).fromRed(),i.redSub(o).fromRed()]},h.prototype._getEndoBasis=function(t){for(var e,r,i,o,s,a,h,u,l,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),f=t,d=this.n.clone(),g=new n(1),A=new n(0),M=new n(0),p=new n(1),w=0;0!==f.cmpn(0);){var B=d.div(f);u=d.sub(B.mul(f)),l=M.sub(B.mul(g));var m=p.sub(B.mul(A));if(!i&&u.cmp(c)<0)e=h.neg(),r=g,i=u.neg(),o=l;else if(i&&2==++w)break;h=u,d=f,f=u,M=g,g=l,p=A,A=m}s=u.neg(),a=l;var E=i.sqr().add(o.sqr());return s.sqr().add(a.sqr()).cmp(E)>=0&&(s=e,a=r),i.negative&&(i=i.neg(),o=o.neg()),s.negative&&(s=s.neg(),a=a.neg()),[{a:i,b:o},{a:s,b:a}]},h.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],i=e[1],n=i.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),s=n.mul(r.a),a=o.mul(i.a),h=n.mul(r.b),u=o.mul(i.b);return{k1:t.sub(s).sub(a),k2:h.add(u).neg()}},h.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(0!==i.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var o=i.fromRed().isOdd();return(e&&!o||!e&&o)&&(i=i.redNeg()),this.point(t,i)},h.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,i=this.a.redMul(e),n=e.redSqr().redMul(e).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(n).cmpn(0)},h.prototype._endoWnafMulAdd=function(t,e,r){for(var i=this._endoWnafT1,n=this._endoWnafT2,o=0;o":""},u.prototype.isInfinity=function(){return this.inf},u.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),i=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},u.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),i=t.redInvm(),n=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(i),o=n.redSqr().redISub(this.x.redAdd(this.x)),s=n.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},u.prototype.getX=function(){return this.x.fromRed()},u.prototype.getY=function(){return this.y.fromRed()},u.prototype.mul=function(t){return t=new n(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,e,r){var i=[this,e],n=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n):this.curve._wnafMulAdd(1,i,n,2)},u.prototype.jmulAdd=function(t,e,r){var i=[this,e],n=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n,!0):this.curve._wnafMulAdd(1,i,n,2,!0)},u.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},u.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,i=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return e},u.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},o(l,s.BasePoint),h.prototype.jpoint=function(t,e,r){return new l(this,t,e,r)},l.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),i=this.y.redMul(e).redMul(t);return this.curve.point(r,i)},l.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},l.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(e),n=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),s=t.y.redMul(r.redMul(this.z)),a=i.redSub(n),h=o.redSub(s);if(0===a.cmpn(0))return 0!==h.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=a.redSqr(),l=u.redMul(a),c=i.redMul(u),f=h.redSqr().redIAdd(l).redISub(c).redISub(c),d=h.redMul(c.redISub(f)).redISub(o.redMul(l)),g=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(f,d,g)},l.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,i=t.x.redMul(e),n=this.y,o=t.y.redMul(e).redMul(this.z),s=r.redSub(i),a=n.redSub(o);if(0===s.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var h=s.redSqr(),u=h.redMul(s),l=r.redMul(h),c=a.redSqr().redIAdd(u).redISub(l).redISub(l),f=a.redMul(l.redISub(c)).redISub(n.redMul(u)),d=this.z.redMul(s);return this.curve.jpoint(c,f,d)},l.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var r=this;for(e=0;e=0)return!1;if(r.redIAdd(n),0===this.x.cmp(r))return!0}},l.prototype.inspect=function(){return this.isInfinity()?"":""},l.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},5427:(t,e,r)=>{"use strict";var i,n=e,o=r(3715),s=r(8254),a=r(953).assert;function h(t){"short"===t.type?this.curve=new s.short(t):"edwards"===t.type?this.curve=new s.edwards(t):this.curve=new s.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,a(this.g.validate(),"Invalid curve"),a(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function u(t,e){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var r=new h(e);return Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=h,u("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),u("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),u("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),u("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),u("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),u("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),u("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{i=r(1037)}catch(t){i=void 0}u("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",i]})},7954:(t,e,r)=>{"use strict";var i=r(3785),n=r(2156),o=r(953),s=r(5427),a=r(9931),h=o.assert,u=r(1251),l=r(611);function c(t){if(!(this instanceof c))return new c(t);"string"==typeof t&&(h(Object.prototype.hasOwnProperty.call(s,t),"Unknown curve "+t),t=s[t]),t instanceof s.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}t.exports=c,c.prototype.keyPair=function(t){return new u(this,t)},c.prototype.keyFromPrivate=function(t,e){return u.fromPrivate(this,t,e)},c.prototype.keyFromPublic=function(t,e){return u.fromPublic(this,t,e)},c.prototype.genKeyPair=function(t){t||(t={});for(var e=new n({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||a(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),o=this.n.sub(new i(2));;){var s=new i(e.generate(r));if(!(s.cmp(o)>0))return s.iaddn(1),this.keyFromPrivate(s)}},c.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},c.prototype.sign=function(t,e,r,o){"object"==typeof r&&(o=r,r=null),o||(o={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new i(t,16));for(var s=this.n.byteLength(),a=e.getPrivate().toArray("be",s),h=t.toArray("be",s),u=new n({hash:this.hash,entropy:a,nonce:h,pers:o.pers,persEnc:o.persEnc||"utf8"}),c=this.n.sub(new i(1)),f=0;;f++){var d=o.k?o.k(f):new i(u.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(c)>=0)){var g=this.g.mul(d);if(!g.isInfinity()){var A=g.getX(),M=A.umod(this.n);if(0!==M.cmpn(0)){var p=d.invm(this.n).mul(M.mul(e.getPrivate()).iadd(t));if(0!==(p=p.umod(this.n)).cmpn(0)){var w=(g.getY().isOdd()?1:0)|(0!==A.cmp(M)?2:0);return o.canonical&&p.cmp(this.nh)>0&&(p=this.n.sub(p),w^=1),new l({r:M,s:p,recoveryParam:w})}}}}}},c.prototype.verify=function(t,e,r,n){t=this._truncateToN(new i(t,16)),r=this.keyFromPublic(r,n);var o=(e=new l(e,"hex")).r,s=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;var a,h=s.invm(this.n),u=h.mul(t).umod(this.n),c=h.mul(o).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(u,r.getPublic(),c)).isInfinity()&&a.eqXToP(o):!(a=this.g.mulAdd(u,r.getPublic(),c)).isInfinity()&&0===a.getX().umod(this.n).cmp(o)},c.prototype.recoverPubKey=function(t,e,r,n){h((3&r)===r,"The recovery param is more than two bits"),e=new l(e,n);var o=this.n,s=new i(t),a=e.r,u=e.s,c=1&r,f=r>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&f)throw new Error("Unable to find sencond key candinate");a=f?this.curve.pointFromX(a.add(this.curve.n),c):this.curve.pointFromX(a,c);var d=e.r.invm(o),g=o.sub(s).mul(d).umod(o),A=u.mul(d).umod(o);return this.g.mulAdd(g,a,A)},c.prototype.getKeyRecoveryParam=function(t,e,r,i){if(null!==(e=new l(e,i)).recoveryParam)return e.recoveryParam;for(var n=0;n<4;n++){var o;try{o=this.recoverPubKey(t,e,n)}catch(t){continue}if(o.eq(r))return n}throw new Error("Unable to find valid recovery factor")}},1251:(t,e,r)=>{"use strict";var i=r(3785),n=r(953).assert;function o(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}t.exports=o,o.fromPublic=function(t,e,r){return e instanceof o?e:new o(t,{pub:e,pubEnc:r})},o.fromPrivate=function(t,e,r){return e instanceof o?e:new o(t,{priv:e,privEnc:r})},o.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},o.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},o.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},o.prototype._importPrivate=function(t,e){this.priv=new i(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},o.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?n(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||n(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},o.prototype.derive=function(t){return t.validate()||n(t.validate(),"public point not validated"),t.mul(this.priv).getX()},o.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},o.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},o.prototype.inspect=function(){return""}},611:(t,e,r)=>{"use strict";var i=r(3785),n=r(953),o=n.assert;function s(t,e){if(t instanceof s)return t;this._importDER(t,e)||(o(t.r&&t.s,"Signature without r or s"),this.r=new i(t.r,16),this.s=new i(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}function a(){this.place=0}function h(t,e){var r=t[e.place++];if(!(128&r))return r;var i=15&r;if(0===i||i>4)return!1;for(var n=0,o=0,s=e.place;o>>=0;return!(n<=127)&&(e.place=s,n)}function u(t){for(var e=0,r=t.length-1;!t[e]&&!(128&t[e+1])&&e>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}t.exports=s,s.prototype._importDER=function(t,e){t=n.toArray(t,e);var r=new a;if(48!==t[r.place++])return!1;var o=h(t,r);if(!1===o)return!1;if(o+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var s=h(t,r);if(!1===s)return!1;var u=t.slice(r.place,s+r.place);if(r.place+=s,2!==t[r.place++])return!1;var l=h(t,r);if(!1===l)return!1;if(t.length!==l+r.place)return!1;var c=t.slice(r.place,l+r.place);if(0===u[0]){if(!(128&u[1]))return!1;u=u.slice(1)}if(0===c[0]){if(!(128&c[1]))return!1;c=c.slice(1)}return this.r=new i(u),this.s=new i(c),this.recoveryParam=null,!0},s.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=u(e),r=u(r);!(r[0]||128&r[1]);)r=r.slice(1);var i=[2];l(i,e.length),(i=i.concat(e)).push(2),l(i,r.length);var o=i.concat(r),s=[48];return l(s,o.length),s=s.concat(o),n.encode(s,t)}},5980:(t,e,r)=>{"use strict";var i=r(3715),n=r(5427),o=r(953),s=o.assert,a=o.parseBytes,h=r(9087),u=r(3622);function l(t){if(s("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof l))return new l(t);t=n[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}t.exports=l,l.prototype.sign=function(t,e){t=a(t);var r=this.keyFromSecret(e),i=this.hashInt(r.messagePrefix(),t),n=this.g.mul(i),o=this.encodePoint(n),s=this.hashInt(o,r.pubBytes(),t).mul(r.priv()),h=i.add(s).umod(this.curve.n);return this.makeSignature({R:n,S:h,Rencoded:o})},l.prototype.verify=function(t,e,r){t=a(t),e=this.makeSignature(e);var i=this.keyFromPublic(r),n=this.hashInt(e.Rencoded(),i.pubBytes(),t),o=this.g.mul(e.S());return e.R().add(i.pub().mul(n)).eq(o)},l.prototype.hashInt=function(){for(var t=this.hash(),e=0;e{"use strict";var i=r(953),n=i.assert,o=i.parseBytes,s=i.cachedProperty;function a(t,e){this.eddsa=t,this._secret=o(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=o(e.pub)}a.fromPublic=function(t,e){return e instanceof a?e:new a(t,{pub:e})},a.fromSecret=function(t,e){return e instanceof a?e:new a(t,{secret:e})},a.prototype.secret=function(){return this._secret},s(a,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),s(a,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),s(a,"privBytes",(function(){var t=this.eddsa,e=this.hash(),r=t.encodingLength-1,i=e.slice(0,t.encodingLength);return i[0]&=248,i[r]&=127,i[r]|=64,i})),s(a,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),s(a,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),s(a,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),a.prototype.sign=function(t){return n(this._secret,"KeyPair can only verify"),this.eddsa.sign(t,this)},a.prototype.verify=function(t,e){return this.eddsa.verify(t,e,this)},a.prototype.getSecret=function(t){return n(this._secret,"KeyPair is public only"),i.encode(this.secret(),t)},a.prototype.getPublic=function(t){return i.encode(this.pubBytes(),t)},t.exports=a},3622:(t,e,r)=>{"use strict";var i=r(3785),n=r(953),o=n.assert,s=n.cachedProperty,a=n.parseBytes;function h(t,e){this.eddsa=t,"object"!=typeof e&&(e=a(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),o(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof i&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}s(h,"S",(function(){return this.eddsa.decodeInt(this.Sencoded())})),s(h,"R",(function(){return this.eddsa.decodePoint(this.Rencoded())})),s(h,"Rencoded",(function(){return this.eddsa.encodePoint(this.R())})),s(h,"Sencoded",(function(){return this.eddsa.encodeInt(this.S())})),h.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},h.prototype.toHex=function(){return n.encode(this.toBytes(),"hex").toUpperCase()},t.exports=h},1037:t=>{t.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}},953:(t,e,r)=>{"use strict";var i=e,n=r(3785),o=r(9746),s=r(4504);i.assert=o,i.toArray=s.toArray,i.zero2=s.zero2,i.toHex=s.toHex,i.encode=s.encode,i.getNAF=function(t,e,r){var i=new Array(Math.max(t.bitLength(),r)+1);i.fill(0);for(var n=1<(n>>1)-1?(n>>1)-h:h,o.isubn(a)):a=0,i[s]=a,o.iushrn(1)}return i},i.getJSF=function(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var i,n=0,o=0;t.cmpn(-n)>0||e.cmpn(-o)>0;){var s,a,h=t.andln(3)+n&3,u=e.andln(3)+o&3;3===h&&(h=-1),3===u&&(u=-1),s=0==(1&h)?0:3!=(i=t.andln(7)+n&7)&&5!==i||2!==u?h:-h,r[0].push(s),a=0==(1&u)?0:3!=(i=e.andln(7)+o&7)&&5!==i||2!==h?u:-u,r[1].push(a),2*n===s+1&&(n=1-n),2*o===a+1&&(o=1-o),t.iushrn(1),e.iushrn(1)}return r},i.cachedProperty=function(t,e,r){var i="_"+e;t.prototype[e]=function(){return void 0!==this[i]?this[i]:this[i]=r.call(this)}},i.parseBytes=function(t){return"string"==typeof t?i.toArray(t,"hex"):t},i.intFromLE=function(t){return new n(t,"hex","le")}},3785:function(t,e,r){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(5568).Buffer}catch(t){}function a(t,e){var r=t.charCodeAt(e);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,c=67108863&h,f=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=f;d++){var g=u-d|0;l+=(s=(n=0|t.words[g])*(o=0|e.words[d])+c)/67108864|0,c=67108863&s}r.words[u]=0|c,h=0|l}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?l[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=c[t],d=f[t];r="";var g=this.clone();for(g.negative=0;!g.isZero();){var A=g.modn(d).toString(t);r=(g=g.idivn(d)).isZero()?A+r:l[u-A.length]+A+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),l=this.clone();if(h){for(a=0;!l.isZero();a++)s=l.andln(255),l.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],g=8191&d,A=d>>>13,M=0|s[2],p=8191&M,w=M>>>13,B=0|s[3],m=8191&B,E=B>>>13,y=0|s[4],b=8191&y,I=y>>>13,v=0|s[5],C=8191&v,Q=v>>>13,D=0|s[6],N=8191&D,R=D>>>13,G=0|s[7],U=8191&G,V=G>>>13,S=0|s[8],T=8191&S,Y=S>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,x=j>>>13,z=0|a[1],O=8191&z,H=z>>>13,_=0|a[2],W=8191&_,J=_>>>13,X=0|a[3],P=8191&X,K=X>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,lt=0|a[8],ct=8191<,ft=lt>>>13,dt=0|a[9],gt=8191&dt,At=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(c,Z))|0)+((8191&(n=(n=Math.imul(c,x))+Math.imul(f,Z)|0))<<13)|0;u=((o=Math.imul(f,x))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(g,Z),n=(n=Math.imul(g,x))+Math.imul(A,Z)|0,o=Math.imul(A,x);var pt=(u+(i=i+Math.imul(c,O)|0)|0)+((8191&(n=(n=n+Math.imul(c,H)|0)+Math.imul(f,O)|0))<<13)|0;u=((o=o+Math.imul(f,H)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,x))+Math.imul(w,Z)|0,o=Math.imul(w,x),i=i+Math.imul(g,O)|0,n=(n=n+Math.imul(g,H)|0)+Math.imul(A,O)|0,o=o+Math.imul(A,H)|0;var wt=(u+(i=i+Math.imul(c,W)|0)|0)+((8191&(n=(n=n+Math.imul(c,J)|0)+Math.imul(f,W)|0))<<13)|0;u=((o=o+Math.imul(f,J)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(m,Z),n=(n=Math.imul(m,x))+Math.imul(E,Z)|0,o=Math.imul(E,x),i=i+Math.imul(p,O)|0,n=(n=n+Math.imul(p,H)|0)+Math.imul(w,O)|0,o=o+Math.imul(w,H)|0,i=i+Math.imul(g,W)|0,n=(n=n+Math.imul(g,J)|0)+Math.imul(A,W)|0,o=o+Math.imul(A,J)|0;var Bt=(u+(i=i+Math.imul(c,P)|0)|0)+((8191&(n=(n=n+Math.imul(c,K)|0)+Math.imul(f,P)|0))<<13)|0;u=((o=o+Math.imul(f,K)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,x))+Math.imul(I,Z)|0,o=Math.imul(I,x),i=i+Math.imul(m,O)|0,n=(n=n+Math.imul(m,H)|0)+Math.imul(E,O)|0,o=o+Math.imul(E,H)|0,i=i+Math.imul(p,W)|0,n=(n=n+Math.imul(p,J)|0)+Math.imul(w,W)|0,o=o+Math.imul(w,J)|0,i=i+Math.imul(g,P)|0,n=(n=n+Math.imul(g,K)|0)+Math.imul(A,P)|0,o=o+Math.imul(A,K)|0;var mt=(u+(i=i+Math.imul(c,$)|0)|0)+((8191&(n=(n=n+Math.imul(c,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,x))+Math.imul(Q,Z)|0,o=Math.imul(Q,x),i=i+Math.imul(b,O)|0,n=(n=n+Math.imul(b,H)|0)+Math.imul(I,O)|0,o=o+Math.imul(I,H)|0,i=i+Math.imul(m,W)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,J)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,K)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,K)|0,i=i+Math.imul(g,$)|0,n=(n=n+Math.imul(g,tt)|0)+Math.imul(A,$)|0,o=o+Math.imul(A,tt)|0;var Et=(u+(i=i+Math.imul(c,rt)|0)|0)+((8191&(n=(n=n+Math.imul(c,it)|0)+Math.imul(f,rt)|0))<<13)|0;u=((o=o+Math.imul(f,it)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,Z),n=(n=Math.imul(N,x))+Math.imul(R,Z)|0,o=Math.imul(R,x),i=i+Math.imul(C,O)|0,n=(n=n+Math.imul(C,H)|0)+Math.imul(Q,O)|0,o=o+Math.imul(Q,H)|0,i=i+Math.imul(b,W)|0,n=(n=n+Math.imul(b,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,i=i+Math.imul(m,P)|0,n=(n=n+Math.imul(m,K)|0)+Math.imul(E,P)|0,o=o+Math.imul(E,K)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(g,rt)|0,n=(n=n+Math.imul(g,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0;var yt=(u+(i=i+Math.imul(c,ot)|0)|0)+((8191&(n=(n=n+Math.imul(c,st)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(U,Z),n=(n=Math.imul(U,x))+Math.imul(V,Z)|0,o=Math.imul(V,x),i=i+Math.imul(N,O)|0,n=(n=n+Math.imul(N,H)|0)+Math.imul(R,O)|0,o=o+Math.imul(R,H)|0,i=i+Math.imul(C,W)|0,n=(n=n+Math.imul(C,J)|0)+Math.imul(Q,W)|0,o=o+Math.imul(Q,J)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,K)|0)+Math.imul(I,P)|0,o=o+Math.imul(I,K)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(g,ot)|0,n=(n=n+Math.imul(g,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0;var bt=(u+(i=i+Math.imul(c,ht)|0)|0)+((8191&(n=(n=n+Math.imul(c,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,x))+Math.imul(Y,Z)|0,o=Math.imul(Y,x),i=i+Math.imul(U,O)|0,n=(n=n+Math.imul(U,H)|0)+Math.imul(V,O)|0,o=o+Math.imul(V,H)|0,i=i+Math.imul(N,W)|0,n=(n=n+Math.imul(N,J)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,J)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,K)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,K)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,tt)|0,i=i+Math.imul(m,rt)|0,n=(n=n+Math.imul(m,it)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(g,ht)|0,n=(n=n+Math.imul(g,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0;var It=(u+(i=i+Math.imul(c,ct)|0)|0)+((8191&(n=(n=n+Math.imul(c,ft)|0)+Math.imul(f,ct)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,x))+Math.imul(L,Z)|0,o=Math.imul(L,x),i=i+Math.imul(T,O)|0,n=(n=n+Math.imul(T,H)|0)+Math.imul(Y,O)|0,o=o+Math.imul(Y,H)|0,i=i+Math.imul(U,W)|0,n=(n=n+Math.imul(U,J)|0)+Math.imul(V,W)|0,o=o+Math.imul(V,J)|0,i=i+Math.imul(N,P)|0,n=(n=n+Math.imul(N,K)|0)+Math.imul(R,P)|0,o=o+Math.imul(R,K)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,it)|0,i=i+Math.imul(m,ot)|0,n=(n=n+Math.imul(m,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(g,ct)|0,n=(n=n+Math.imul(g,ft)|0)+Math.imul(A,ct)|0,o=o+Math.imul(A,ft)|0;var vt=(u+(i=i+Math.imul(c,gt)|0)|0)+((8191&(n=(n=n+Math.imul(c,At)|0)+Math.imul(f,gt)|0))<<13)|0;u=((o=o+Math.imul(f,At)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,O),n=(n=Math.imul(F,H))+Math.imul(L,O)|0,o=Math.imul(L,H),i=i+Math.imul(T,W)|0,n=(n=n+Math.imul(T,J)|0)+Math.imul(Y,W)|0,o=o+Math.imul(Y,J)|0,i=i+Math.imul(U,P)|0,n=(n=n+Math.imul(U,K)|0)+Math.imul(V,P)|0,o=o+Math.imul(V,K)|0,i=i+Math.imul(N,$)|0,n=(n=n+Math.imul(N,tt)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,i=i+Math.imul(m,ht)|0,n=(n=n+Math.imul(m,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,i=i+Math.imul(p,ct)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(w,ct)|0,o=o+Math.imul(w,ft)|0;var Ct=(u+(i=i+Math.imul(g,gt)|0)|0)+((8191&(n=(n=n+Math.imul(g,At)|0)+Math.imul(A,gt)|0))<<13)|0;u=((o=o+Math.imul(A,At)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,W),n=(n=Math.imul(F,J))+Math.imul(L,W)|0,o=Math.imul(L,J),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,K)|0)+Math.imul(Y,P)|0,o=o+Math.imul(Y,K)|0,i=i+Math.imul(U,$)|0,n=(n=n+Math.imul(U,tt)|0)+Math.imul(V,$)|0,o=o+Math.imul(V,tt)|0,i=i+Math.imul(N,rt)|0,n=(n=n+Math.imul(N,it)|0)+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,ut)|0,i=i+Math.imul(m,ct)|0,n=(n=n+Math.imul(m,ft)|0)+Math.imul(E,ct)|0,o=o+Math.imul(E,ft)|0;var Qt=(u+(i=i+Math.imul(p,gt)|0)|0)+((8191&(n=(n=n+Math.imul(p,At)|0)+Math.imul(w,gt)|0))<<13)|0;u=((o=o+Math.imul(w,At)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,K))+Math.imul(L,P)|0,o=Math.imul(L,K),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(Y,$)|0,o=o+Math.imul(Y,tt)|0,i=i+Math.imul(U,rt)|0,n=(n=n+Math.imul(U,it)|0)+Math.imul(V,rt)|0,o=o+Math.imul(V,it)|0,i=i+Math.imul(N,ot)|0,n=(n=n+Math.imul(N,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(b,ct)|0,n=(n=n+Math.imul(b,ft)|0)+Math.imul(I,ct)|0,o=o+Math.imul(I,ft)|0;var Dt=(u+(i=i+Math.imul(m,gt)|0)|0)+((8191&(n=(n=n+Math.imul(m,At)|0)+Math.imul(E,gt)|0))<<13)|0;u=((o=o+Math.imul(E,At)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(Y,rt)|0,o=o+Math.imul(Y,it)|0,i=i+Math.imul(U,ot)|0,n=(n=n+Math.imul(U,st)|0)+Math.imul(V,ot)|0,o=o+Math.imul(V,st)|0,i=i+Math.imul(N,ht)|0,n=(n=n+Math.imul(N,ut)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,ut)|0,i=i+Math.imul(C,ct)|0,n=(n=n+Math.imul(C,ft)|0)+Math.imul(Q,ct)|0,o=o+Math.imul(Q,ft)|0;var Nt=(u+(i=i+Math.imul(b,gt)|0)|0)+((8191&(n=(n=n+Math.imul(b,At)|0)+Math.imul(I,gt)|0))<<13)|0;u=((o=o+Math.imul(I,At)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(Y,ot)|0,o=o+Math.imul(Y,st)|0,i=i+Math.imul(U,ht)|0,n=(n=n+Math.imul(U,ut)|0)+Math.imul(V,ht)|0,o=o+Math.imul(V,ut)|0,i=i+Math.imul(N,ct)|0,n=(n=n+Math.imul(N,ft)|0)+Math.imul(R,ct)|0,o=o+Math.imul(R,ft)|0;var Rt=(u+(i=i+Math.imul(C,gt)|0)|0)+((8191&(n=(n=n+Math.imul(C,At)|0)+Math.imul(Q,gt)|0))<<13)|0;u=((o=o+Math.imul(Q,At)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(Y,ht)|0,o=o+Math.imul(Y,ut)|0,i=i+Math.imul(U,ct)|0,n=(n=n+Math.imul(U,ft)|0)+Math.imul(V,ct)|0,o=o+Math.imul(V,ft)|0;var Gt=(u+(i=i+Math.imul(N,gt)|0)|0)+((8191&(n=(n=n+Math.imul(N,At)|0)+Math.imul(R,gt)|0))<<13)|0;u=((o=o+Math.imul(R,At)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,ct)|0,n=(n=n+Math.imul(T,ft)|0)+Math.imul(Y,ct)|0,o=o+Math.imul(Y,ft)|0;var Ut=(u+(i=i+Math.imul(U,gt)|0)|0)+((8191&(n=(n=n+Math.imul(U,At)|0)+Math.imul(V,gt)|0))<<13)|0;u=((o=o+Math.imul(V,At)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,i=Math.imul(F,ct),n=(n=Math.imul(F,ft))+Math.imul(L,ct)|0,o=Math.imul(L,ft);var Vt=(u+(i=i+Math.imul(T,gt)|0)|0)+((8191&(n=(n=n+Math.imul(T,At)|0)+Math.imul(Y,gt)|0))<<13)|0;u=((o=o+Math.imul(Y,At)|0)+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863;var St=(u+(i=Math.imul(F,gt))|0)+((8191&(n=(n=Math.imul(F,At))+Math.imul(L,gt)|0))<<13)|0;return u=((o=Math.imul(L,At))+(n>>>13)|0)+(St>>>26)|0,St&=67108863,h[0]=Mt,h[1]=pt,h[2]=wt,h[3]=Bt,h[4]=mt,h[5]=Et,h[6]=yt,h[7]=bt,h[8]=It,h[9]=vt,h[10]=Ct,h[11]=Qt,h[12]=Dt,h[13]=Nt,h[14]=Rt,h[15]=Gt,h[16]=Ut,h[17]=Vt,h[18]=St,0!==u&&(h[19]=u,r.length++),r};function A(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(g=d),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?g(this,t,e):r<63?d(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):A(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==l||u>=n);u--){var c=0|this.words[u];this.words[u]=l<<26-o|c>>>o,l=c&a}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;c--){var f=67108864*(0|i.words[n.length+c])+(0|i.words[n.length+c-1]);for(f=Math.min(f/s|0,67108863),i._ishlnsubmul(n,f,c);0!==i.negative;)f--,i.negative=0,i._ishlnsubmul(n,1,c),i.isZero()||(i.negative^=1);a&&(a.words[c]=f)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),c=e.clone();!e.isZero();){for(var f=0,d=1;0==(e.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(l),s.isub(c)),n.iushrn(1),s.iushrn(1);for(var g=0,A=1;0==(r.words[0]&A)&&g<26;++g,A<<=1);if(g>0)for(r.iushrn(g);g-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(l),h.isub(c)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var c=0,f=1;0==(r.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(r.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var p={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function B(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function m(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function E(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function I(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(B,w),B.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},B.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(p[t])return p[t];var e;if("k256"===t)e=new B;else if("p224"===t)e=new m;else if("p192"===t)e=new E;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return p[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var c=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),g=s;0!==d.cmp(a);){for(var A=d,M=0;0!==A.cmp(a);M++)A=A.redSqr();i(M=0;i--){for(var u=e.words[i],l=h-1;l>=0;l--){var c=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==c||0!==s?(s<<=1,s|=c,(4==++a||0===i&&0===l)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new I(t)},n(I,b),I.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},I.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},I.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},I.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},I.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},7519:t=>{"use strict";t.exports={i8:"6.5.4"}},4079:(t,e,r)=>{"use strict";var i=r(210)("%Object.getOwnPropertyDescriptor%");if(i)try{i([],"length")}catch(t){i=null}t.exports=i},8091:t=>{"use strict";function e(t,e){if(null==t)throw new TypeError("Cannot convert first argument to object");for(var r=Object(t),i=1;i{"use strict";var e,r="object"==typeof Reflect?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};e=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var n=Number.isNaN||function(t){return t!=t};function o(){o.init.call(this)}t.exports=o,t.exports.once=function(t,e){return new Promise((function(r,i){function n(r){t.removeListener(e,o),i(r)}function o(){"function"==typeof t.removeListener&&t.removeListener("error",n),r([].slice.call(arguments))}A(t,e,o,{once:!0}),"error"!==e&&function(t,e,r){"function"==typeof t.on&&A(t,"error",e,{once:!0})}(t,n)}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function a(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function h(t){return void 0===t._maxListeners?o.defaultMaxListeners:t._maxListeners}function u(t,e,r,i){var n,o,s,u;if(a(r),void 0===(o=t._events)?(o=t._events=Object.create(null),t._eventsCount=0):(void 0!==o.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),o=t._events),s=o[e]),void 0===s)s=o[e]=r,++t._eventsCount;else if("function"==typeof s?s=o[e]=i?[r,s]:[s,r]:i?s.unshift(r):s.push(r),(n=h(t))>0&&s.length>n&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=t,l.type=e,l.count=s.length,u=l,console&&console.warn&&console.warn(u)}return t}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function c(t,e,r){var i={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},n=l.bind(i);return n.listener=r,i.wrapFn=n,n}function f(t,e,r){var i=t._events;if(void 0===i)return[];var n=i[e];return void 0===n?[]:"function"==typeof n?r?[n.listener||n]:[n]:r?function(t){for(var e=new Array(t.length),r=0;r0&&(s=e[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var h=o[t];if(void 0===h)return!1;if("function"==typeof h)i(h,this,e);else{var u=h.length,l=g(h,u);for(r=0;r=0;o--)if(r[o]===e||r[o].listener===e){s=r[o].listener,n=o;break}if(n<0)return this;0===n?r.shift():function(t,e){for(;e+1=0;i--)this.removeListener(t,e[i]);return this},o.prototype.listeners=function(t){return f(this,t,!0)},o.prototype.rawListeners=function(t){return f(this,t,!1)},o.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):d.call(t,e)},o.prototype.listenerCount=d,o.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}},3048:(t,e,r)=>{var i=r(9509).Buffer,n=r(2318);t.exports=function(t,e,r,o){if(i.isBuffer(t)||(t=i.from(t,"binary")),e&&(i.isBuffer(e)||(e=i.from(e,"binary")),8!==e.length))throw new RangeError("salt should be Buffer with 8 byte length");for(var s=r/8,a=i.alloc(s),h=i.alloc(o||0),u=i.alloc(0);s>0||o>0;){var l=new n;l.update(u),l.update(t),e&&l.update(e),u=l.digest();var c=0;if(s>0){var f=a.length-s;c=Math.min(s,u.length),u.copy(a,f,0,c),s-=c}if(c0){var d=h.length-o,g=Math.min(o,u.length-c);u.copy(h,d,c,c+g),o-=g}}return u.fill(0),{key:a,iv:h}}},9804:t=>{var e=Object.prototype.hasOwnProperty,r=Object.prototype.toString;t.exports=function(t,i,n){if("[object Function]"!==r.call(i))throw new TypeError("iterator must be a function");var o=t.length;if(o===+o)for(var s=0;s{"use strict";var e="Function.prototype.bind called on incompatible ",r=Array.prototype.slice,i=Object.prototype.toString,n="[object Function]";t.exports=function(t){var o=this;if("function"!=typeof o||i.call(o)!==n)throw new TypeError(e+o);for(var s,a=r.call(arguments,1),h=function(){if(this instanceof s){var e=o.apply(this,a.concat(r.call(arguments)));return Object(e)===e?e:this}return o.apply(t,a.concat(r.call(arguments)))},u=Math.max(0,o.length-a.length),l=[],c=0;c{"use strict";var i=r(7648);t.exports=Function.prototype.bind||i},210:(t,e,r)=>{"use strict";var i,n=SyntaxError,o=Function,s=TypeError,a=function(t){try{return o('"use strict"; return ('+t+").constructor;")()}catch(t){}},h=Object.getOwnPropertyDescriptor;if(h)try{h({},"")}catch(t){h=null}var u=function(){throw new s},l=h?function(){try{return u}catch(t){try{return h(arguments,"callee").get}catch(t){return u}}}():u,c=r(1405)(),f=Object.getPrototypeOf||function(t){return t.__proto__},d={},g="undefined"==typeof Uint8Array?i:f(Uint8Array),A={"%AggregateError%":"undefined"==typeof AggregateError?i:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?i:ArrayBuffer,"%ArrayIteratorPrototype%":c?f([][Symbol.iterator]()):i,"%AsyncFromSyncIteratorPrototype%":i,"%AsyncFunction%":d,"%AsyncGenerator%":d,"%AsyncGeneratorFunction%":d,"%AsyncIteratorPrototype%":d,"%Atomics%":"undefined"==typeof Atomics?i:Atomics,"%BigInt%":"undefined"==typeof BigInt?i:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?i:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?i:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?i:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?i:FinalizationRegistry,"%Function%":o,"%GeneratorFunction%":d,"%Int8Array%":"undefined"==typeof Int8Array?i:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?i:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?i:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":c?f(f([][Symbol.iterator]())):i,"%JSON%":"object"==typeof JSON?JSON:i,"%Map%":"undefined"==typeof Map?i:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&c?f((new Map)[Symbol.iterator]()):i,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?i:Promise,"%Proxy%":"undefined"==typeof Proxy?i:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?i:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?i:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&c?f((new Set)[Symbol.iterator]()):i,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?i:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":c?f(""[Symbol.iterator]()):i,"%Symbol%":c?Symbol:i,"%SyntaxError%":n,"%ThrowTypeError%":l,"%TypedArray%":g,"%TypeError%":s,"%Uint8Array%":"undefined"==typeof Uint8Array?i:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?i:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?i:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?i:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?i:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?i:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?i:WeakSet},M=function t(e){var r;if("%AsyncFunction%"===e)r=a("async function () {}");else if("%GeneratorFunction%"===e)r=a("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=a("async function* () {}");else if("%AsyncGenerator%"===e){var i=t("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===e){var n=t("%AsyncGenerator%");n&&(r=f(n.prototype))}return A[e]=r,r},p={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},w=r(8612),B=r(7642),m=w.call(Function.call,Array.prototype.concat),E=w.call(Function.apply,Array.prototype.splice),y=w.call(Function.call,String.prototype.replace),b=w.call(Function.call,String.prototype.slice),I=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,v=/\\(\\)?/g,C=function(t){var e=b(t,0,1),r=b(t,-1);if("%"===e&&"%"!==r)throw new n("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new n("invalid intrinsic syntax, expected opening `%`");var i=[];return y(t,I,(function(t,e,r,n){i[i.length]=r?y(n,v,"$1"):e||t})),i},Q=function(t,e){var r,i=t;if(B(p,i)&&(i="%"+(r=p[i])[0]+"%"),B(A,i)){var o=A[i];if(o===d&&(o=M(i)),void 0===o&&!e)throw new s("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:o}}throw new n("intrinsic "+t+" does not exist!")};t.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new s("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new s('"allowMissing" argument must be a boolean');var r=C(t),i=r.length>0?r[0]:"",o=Q("%"+i+"%",e),a=o.name,u=o.value,l=!1,c=o.alias;c&&(i=c[0],E(r,m([0,1],c)));for(var f=1,d=!0;f=r.length){var w=h(u,g);u=(d=!!w)&&"get"in w&&!("originalValue"in w.get)?w.get:u[g]}else d=B(u,g),u=u[g];d&&!l&&(A[a]=u)}}return u}},1405:(t,e,r)=>{"use strict";var i="undefined"!=typeof Symbol&&Symbol,n=r(5419);t.exports=function(){return"function"==typeof i&&"function"==typeof Symbol&&"symbol"==typeof i("foo")&&"symbol"==typeof Symbol("bar")&&n()}},5419:t=>{"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(e in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var i=Object.getOwnPropertySymbols(t);if(1!==i.length||i[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var n=Object.getOwnPropertyDescriptor(t,e);if(42!==n.value||!0!==n.enumerable)return!1}return!0}},7642:(t,e,r)=>{"use strict";var i=r(8612);t.exports=i.call(Function.call,Object.prototype.hasOwnProperty)},3349:(t,e,r)=>{"use strict";var i=r(9509).Buffer,n=r(8473).Transform;function o(t){n.call(this),this._block=i.allocUnsafe(t),this._blockSize=t,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}r(5717)(o,n),o.prototype._transform=function(t,e,r){var i=null;try{this.update(t,e)}catch(t){i=t}r(i)},o.prototype._flush=function(t){var e=null;try{this.push(this.digest())}catch(t){e=t}t(e)},o.prototype.update=function(t,e){if(function(t,e){if(!i.isBuffer(t)&&"string"!=typeof t)throw new TypeError("Data must be a string or a buffer")}(t),this._finalized)throw new Error("Digest already called");i.isBuffer(t)||(t=i.from(t,e));for(var r=this._block,n=0;this._blockOffset+t.length-n>=this._blockSize;){for(var o=this._blockOffset;o0;++s)this._length[s]+=a,(a=this._length[s]/4294967296|0)>0&&(this._length[s]-=4294967296*a);return this},o.prototype._update=function(){throw new Error("_update is not implemented")},o.prototype.digest=function(t){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var e=this._digest();void 0!==t&&(e=e.toString(t)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return e},o.prototype._digest=function(){throw new Error("_digest is not implemented")},t.exports=o},3715:(t,e,r)=>{var i=e;i.utils=r(6436),i.common=r(5772),i.sha=r(9041),i.ripemd=r(2949),i.hmac=r(2344),i.sha1=i.sha.sha1,i.sha256=i.sha.sha256,i.sha224=i.sha.sha224,i.sha384=i.sha.sha384,i.sha512=i.sha.sha512,i.ripemd160=i.ripemd.ripemd160},5772:(t,e,r)=>{"use strict";var i=r(6436),n=r(9746);function o(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}e.BlockHash=o,o.prototype.update=function(t,e){if(t=i.toArray(t,e),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){var r=(t=this.pending).length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=i.join32(t,0,t.length-r,this.endian);for(var n=0;n>>24&255,i[n++]=t>>>16&255,i[n++]=t>>>8&255,i[n++]=255&t}else for(i[n++]=255&t,i[n++]=t>>>8&255,i[n++]=t>>>16&255,i[n++]=t>>>24&255,i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=0,o=8;o{"use strict";var i=r(6436),n=r(9746);function o(t,e,r){if(!(this instanceof o))return new o(t,e,r);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(i.toArray(e,r))}t.exports=o,o.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),n(t.length<=this.blockSize);for(var e=t.length;e{"use strict";var i=r(6436),n=r(5772),o=i.rotl32,s=i.sum32,a=i.sum32_3,h=i.sum32_4,u=n.BlockHash;function l(){if(!(this instanceof l))return new l;u.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function c(t,e,r,i){return t<=15?e^r^i:t<=31?e&r|~e&i:t<=47?(e|~r)^i:t<=63?e&i|r&~i:e^(r|~i)}function f(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function d(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}i.inherits(l,u),e.ripemd160=l,l.blockSize=512,l.outSize=160,l.hmacStrength=192,l.padLength=64,l.prototype._update=function(t,e){for(var r=this.h[0],i=this.h[1],n=this.h[2],u=this.h[3],l=this.h[4],w=r,B=i,m=n,E=u,y=l,b=0;b<80;b++){var I=s(o(h(r,c(b,i,n,u),t[g[b]+e],f(b)),M[b]),l);r=l,l=u,u=o(n,10),n=i,i=I,I=s(o(h(w,c(79-b,B,m,E),t[A[b]+e],d(b)),p[b]),y),w=y,y=E,E=o(m,10),m=B,B=I}I=a(this.h[1],n,E),this.h[1]=a(this.h[2],u,y),this.h[2]=a(this.h[3],l,w),this.h[3]=a(this.h[4],r,B),this.h[4]=a(this.h[0],i,m),this.h[0]=I},l.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h,"little"):i.split32(this.h,"little")};var g=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],A=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],M=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],p=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},9041:(t,e,r)=>{"use strict";e.sha1=r(4761),e.sha224=r(799),e.sha256=r(9344),e.sha384=r(772),e.sha512=r(5900)},4761:(t,e,r)=>{"use strict";var i=r(6436),n=r(5772),o=r(7038),s=i.rotl32,a=i.sum32,h=i.sum32_5,u=o.ft_1,l=n.BlockHash,c=[1518500249,1859775393,2400959708,3395469782];function f(){if(!(this instanceof f))return new f;l.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}i.inherits(f,l),t.exports=f,f.blockSize=512,f.outSize=160,f.hmacStrength=80,f.padLength=64,f.prototype._update=function(t,e){for(var r=this.W,i=0;i<16;i++)r[i]=t[e+i];for(;i{"use strict";var i=r(6436),n=r(9344);function o(){if(!(this instanceof o))return new o;n.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}i.inherits(o,n),t.exports=o,o.blockSize=512,o.outSize=224,o.hmacStrength=192,o.padLength=64,o.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h.slice(0,7),"big"):i.split32(this.h.slice(0,7),"big")}},9344:(t,e,r)=>{"use strict";var i=r(6436),n=r(5772),o=r(7038),s=r(9746),a=i.sum32,h=i.sum32_4,u=i.sum32_5,l=o.ch32,c=o.maj32,f=o.s0_256,d=o.s1_256,g=o.g0_256,A=o.g1_256,M=n.BlockHash,p=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function w(){if(!(this instanceof w))return new w;M.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=p,this.W=new Array(64)}i.inherits(w,M),t.exports=w,w.blockSize=512,w.outSize=256,w.hmacStrength=192,w.padLength=64,w.prototype._update=function(t,e){for(var r=this.W,i=0;i<16;i++)r[i]=t[e+i];for(;i{"use strict";var i=r(6436),n=r(5900);function o(){if(!(this instanceof o))return new o;n.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}i.inherits(o,n),t.exports=o,o.blockSize=1024,o.outSize=384,o.hmacStrength=192,o.padLength=128,o.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h.slice(0,12),"big"):i.split32(this.h.slice(0,12),"big")}},5900:(t,e,r)=>{"use strict";var i=r(6436),n=r(5772),o=r(9746),s=i.rotr64_hi,a=i.rotr64_lo,h=i.shr64_hi,u=i.shr64_lo,l=i.sum64,c=i.sum64_hi,f=i.sum64_lo,d=i.sum64_4_hi,g=i.sum64_4_lo,A=i.sum64_5_hi,M=i.sum64_5_lo,p=n.BlockHash,w=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function B(){if(!(this instanceof B))return new B;p.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=w,this.W=new Array(160)}function m(t,e,r,i,n){var o=t&r^~t&n;return o<0&&(o+=4294967296),o}function E(t,e,r,i,n,o){var s=e&i^~e&o;return s<0&&(s+=4294967296),s}function y(t,e,r,i,n){var o=t&r^t&n^r&n;return o<0&&(o+=4294967296),o}function b(t,e,r,i,n,o){var s=e&i^e&o^i&o;return s<0&&(s+=4294967296),s}function I(t,e){var r=s(t,e,28)^s(e,t,2)^s(e,t,7);return r<0&&(r+=4294967296),r}function v(t,e){var r=a(t,e,28)^a(e,t,2)^a(e,t,7);return r<0&&(r+=4294967296),r}function C(t,e){var r=a(t,e,14)^a(t,e,18)^a(e,t,9);return r<0&&(r+=4294967296),r}function Q(t,e){var r=s(t,e,1)^s(t,e,8)^h(t,e,7);return r<0&&(r+=4294967296),r}function D(t,e){var r=a(t,e,1)^a(t,e,8)^u(t,e,7);return r<0&&(r+=4294967296),r}function N(t,e){var r=a(t,e,19)^a(e,t,29)^u(t,e,6);return r<0&&(r+=4294967296),r}i.inherits(B,p),t.exports=B,B.blockSize=1024,B.outSize=512,B.hmacStrength=192,B.padLength=128,B.prototype._prepareBlock=function(t,e){for(var r=this.W,i=0;i<32;i++)r[i]=t[e+i];for(;i{"use strict";var i=r(6436).rotr32;function n(t,e,r){return t&e^~t&r}function o(t,e,r){return t&e^t&r^e&r}function s(t,e,r){return t^e^r}e.ft_1=function(t,e,r,i){return 0===t?n(e,r,i):1===t||3===t?s(e,r,i):2===t?o(e,r,i):void 0},e.ch32=n,e.maj32=o,e.p32=s,e.s0_256=function(t){return i(t,2)^i(t,13)^i(t,22)},e.s1_256=function(t){return i(t,6)^i(t,11)^i(t,25)},e.g0_256=function(t){return i(t,7)^i(t,18)^t>>>3},e.g1_256=function(t){return i(t,17)^i(t,19)^t>>>10}},6436:(t,e,r)=>{"use strict";var i=r(9746),n=r(5717);function o(t,e){return 55296==(64512&t.charCodeAt(e))&&!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1))}function s(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function a(t){return 1===t.length?"0"+t:t}function h(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}e.inherits=n,e.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),n=0;n>6|192,r[i++]=63&s|128):o(t,n)?(s=65536+((1023&s)<<10)+(1023&t.charCodeAt(++n)),r[i++]=s>>18|240,r[i++]=s>>12&63|128,r[i++]=s>>6&63|128,r[i++]=63&s|128):(r[i++]=s>>12|224,r[i++]=s>>6&63|128,r[i++]=63&s|128)}else for(n=0;n>>0}return s},e.split32=function(t,e){for(var r=new Array(4*t.length),i=0,n=0;i>>24,r[n+1]=o>>>16&255,r[n+2]=o>>>8&255,r[n+3]=255&o):(r[n+3]=o>>>24,r[n+2]=o>>>16&255,r[n+1]=o>>>8&255,r[n]=255&o)}return r},e.rotr32=function(t,e){return t>>>e|t<<32-e},e.rotl32=function(t,e){return t<>>32-e},e.sum32=function(t,e){return t+e>>>0},e.sum32_3=function(t,e,r){return t+e+r>>>0},e.sum32_4=function(t,e,r,i){return t+e+r+i>>>0},e.sum32_5=function(t,e,r,i,n){return t+e+r+i+n>>>0},e.sum64=function(t,e,r,i){var n=t[e],o=i+t[e+1]>>>0,s=(o>>0,t[e+1]=o},e.sum64_hi=function(t,e,r,i){return(e+i>>>0>>0},e.sum64_lo=function(t,e,r,i){return e+i>>>0},e.sum64_4_hi=function(t,e,r,i,n,o,s,a){var h=0,u=e;return h+=(u=u+i>>>0)>>0)>>0)>>0},e.sum64_4_lo=function(t,e,r,i,n,o,s,a){return e+i+o+a>>>0},e.sum64_5_hi=function(t,e,r,i,n,o,s,a,h,u){var l=0,c=e;return l+=(c=c+i>>>0)>>0)>>0)>>0)>>0},e.sum64_5_lo=function(t,e,r,i,n,o,s,a,h,u){return e+i+o+a+u>>>0},e.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},e.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},e.shr64_hi=function(t,e,r){return t>>>r},e.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0}},2156:(t,e,r)=>{"use strict";var i=r(3715),n=r(4504),o=r(9746);function s(t){if(!(this instanceof s))return new s(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=n.toArray(t.entropy,t.entropyEnc||"hex"),r=n.toArray(t.nonce,t.nonceEnc||"hex"),i=n.toArray(t.pers,t.persEnc||"hex");o(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}t.exports=s,s.prototype._init=function(t,e,r){var i=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},s.prototype.generate=function(t,e,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(i=r,r=e,e=null),r&&(r=n.toArray(r,i||"hex"),this._update(r));for(var o=[];o.length{e.read=function(t,e,r,i,n){var o,s,a=8*n-i-1,h=(1<>1,l=-7,c=r?n-1:0,f=r?-1:1,d=t[e+c];for(c+=f,o=d&(1<<-l)-1,d>>=-l,l+=a;l>0;o=256*o+t[e+c],c+=f,l-=8);for(s=o&(1<<-l)-1,o>>=-l,l+=i;l>0;s=256*s+t[e+c],c+=f,l-=8);if(0===o)o=1-u;else{if(o===h)return s?NaN:1/0*(d?-1:1);s+=Math.pow(2,i),o-=u}return(d?-1:1)*s*Math.pow(2,o-i)},e.write=function(t,e,r,i,n,o){var s,a,h,u=8*o-n-1,l=(1<>1,f=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,d=i?0:o-1,g=i?1:-1,A=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=l):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),(e+=s+c>=1?f/h:f*Math.pow(2,1-c))*h>=2&&(s++,h/=2),s+c>=l?(a=0,s=l):s+c>=1?(a=(e*h-1)*Math.pow(2,n),s+=c):(a=e*Math.pow(2,c-1)*Math.pow(2,n),s=0));n>=8;t[r+d]=255&a,d+=g,a/=256,n-=8);for(s=s<0;t[r+d]=255&s,d+=g,s/=256,u-=8);t[r+d-g]|=128*A}},5717:t=>{"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},2584:(t,e,r)=>{"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,n=r(1924)("Object.prototype.toString"),o=function(t){return!(i&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===n(t)},s=function(t){return!!o(t)||null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==n(t)&&"[object Function]"===n(t.callee)},a=function(){return o(arguments)}();o.isLegacyArguments=s,t.exports=a?o:s},8662:t=>{"use strict";var e,r=Object.prototype.toString,i=Function.prototype.toString,n=/^\s*(?:function)?\*/,o="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,s=Object.getPrototypeOf;t.exports=function(t){if("function"!=typeof t)return!1;if(n.test(i.call(t)))return!0;if(!o)return"[object GeneratorFunction]"===r.call(t);if(!s)return!1;if(void 0===e){var a=function(){if(!o)return!1;try{return Function("return function*() {}")()}catch(t){}}();e=!!a&&s(a)}return s(t)===e}},8611:t=>{"use strict";t.exports=function(t){return t!=t}},360:(t,e,r)=>{"use strict";var i=r(5559),n=r(4289),o=r(8611),s=r(9415),a=r(3194),h=i(s(),Number);n(h,{getPolyfill:s,implementation:o,shim:a}),t.exports=h},9415:(t,e,r)=>{"use strict";var i=r(8611);t.exports=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:i}},3194:(t,e,r)=>{"use strict";var i=r(4289),n=r(9415);t.exports=function(){var t=n();return i(Number,{isNaN:t},{isNaN:function(){return Number.isNaN!==t}}),t}},5692:(t,e,r)=>{"use strict";var i=r(9804),n=r(6314),o=r(1924),s=o("Object.prototype.toString"),a=r(1405)()&&"symbol"==typeof Symbol.toStringTag,h=n(),u=o("Array.prototype.indexOf",!0)||function(t,e){for(var r=0;r-1}return!!f&&function(t){var e=!1;return i(c,(function(r,i){if(!e)try{e=r.call(t)===i}catch(t){}})),e}(t)}},2318:(t,e,r)=>{"use strict";var i=r(5717),n=r(3349),o=r(9509).Buffer,s=new Array(16);function a(){n.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function h(t,e){return t<>>32-e}function u(t,e,r,i,n,o,s){return h(t+(e&r|~e&i)+n+o|0,s)+e|0}function l(t,e,r,i,n,o,s){return h(t+(e&i|r&~i)+n+o|0,s)+e|0}function c(t,e,r,i,n,o,s){return h(t+(e^r^i)+n+o|0,s)+e|0}function f(t,e,r,i,n,o,s){return h(t+(r^(e|~i))+n+o|0,s)+e|0}i(a,n),a.prototype._update=function(){for(var t=s,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);var r=this._a,i=this._b,n=this._c,o=this._d;r=u(r,i,n,o,t[0],3614090360,7),o=u(o,r,i,n,t[1],3905402710,12),n=u(n,o,r,i,t[2],606105819,17),i=u(i,n,o,r,t[3],3250441966,22),r=u(r,i,n,o,t[4],4118548399,7),o=u(o,r,i,n,t[5],1200080426,12),n=u(n,o,r,i,t[6],2821735955,17),i=u(i,n,o,r,t[7],4249261313,22),r=u(r,i,n,o,t[8],1770035416,7),o=u(o,r,i,n,t[9],2336552879,12),n=u(n,o,r,i,t[10],4294925233,17),i=u(i,n,o,r,t[11],2304563134,22),r=u(r,i,n,o,t[12],1804603682,7),o=u(o,r,i,n,t[13],4254626195,12),n=u(n,o,r,i,t[14],2792965006,17),r=l(r,i=u(i,n,o,r,t[15],1236535329,22),n,o,t[1],4129170786,5),o=l(o,r,i,n,t[6],3225465664,9),n=l(n,o,r,i,t[11],643717713,14),i=l(i,n,o,r,t[0],3921069994,20),r=l(r,i,n,o,t[5],3593408605,5),o=l(o,r,i,n,t[10],38016083,9),n=l(n,o,r,i,t[15],3634488961,14),i=l(i,n,o,r,t[4],3889429448,20),r=l(r,i,n,o,t[9],568446438,5),o=l(o,r,i,n,t[14],3275163606,9),n=l(n,o,r,i,t[3],4107603335,14),i=l(i,n,o,r,t[8],1163531501,20),r=l(r,i,n,o,t[13],2850285829,5),o=l(o,r,i,n,t[2],4243563512,9),n=l(n,o,r,i,t[7],1735328473,14),r=c(r,i=l(i,n,o,r,t[12],2368359562,20),n,o,t[5],4294588738,4),o=c(o,r,i,n,t[8],2272392833,11),n=c(n,o,r,i,t[11],1839030562,16),i=c(i,n,o,r,t[14],4259657740,23),r=c(r,i,n,o,t[1],2763975236,4),o=c(o,r,i,n,t[4],1272893353,11),n=c(n,o,r,i,t[7],4139469664,16),i=c(i,n,o,r,t[10],3200236656,23),r=c(r,i,n,o,t[13],681279174,4),o=c(o,r,i,n,t[0],3936430074,11),n=c(n,o,r,i,t[3],3572445317,16),i=c(i,n,o,r,t[6],76029189,23),r=c(r,i,n,o,t[9],3654602809,4),o=c(o,r,i,n,t[12],3873151461,11),n=c(n,o,r,i,t[15],530742520,16),r=f(r,i=c(i,n,o,r,t[2],3299628645,23),n,o,t[0],4096336452,6),o=f(o,r,i,n,t[7],1126891415,10),n=f(n,o,r,i,t[14],2878612391,15),i=f(i,n,o,r,t[5],4237533241,21),r=f(r,i,n,o,t[12],1700485571,6),o=f(o,r,i,n,t[3],2399980690,10),n=f(n,o,r,i,t[10],4293915773,15),i=f(i,n,o,r,t[1],2240044497,21),r=f(r,i,n,o,t[8],1873313359,6),o=f(o,r,i,n,t[15],4264355552,10),n=f(n,o,r,i,t[6],2734768916,15),i=f(i,n,o,r,t[13],1309151649,21),r=f(r,i,n,o,t[4],4149444226,6),o=f(o,r,i,n,t[11],3174756917,10),n=f(n,o,r,i,t[2],718787259,15),i=f(i,n,o,r,t[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+i|0,this._c=this._c+n|0,this._d=this._d+o|0},a.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=o.allocUnsafe(16);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t},t.exports=a},3047:(t,e,r)=>{var i=r(6240),n=r(9931);function o(t){this.rand=t||new n.Rand}t.exports=o,o.create=function(t){return new o(t)},o.prototype._randbelow=function(t){var e=t.bitLength(),r=Math.ceil(e/8);do{var n=new i(this.rand.generate(r))}while(n.cmp(t)>=0);return n},o.prototype._randrange=function(t,e){var r=e.sub(t);return t.add(this._randbelow(r))},o.prototype.test=function(t,e,r){var n=t.bitLength(),o=i.mont(t),s=new i(1).toRed(o);e||(e=Math.max(1,n/48|0));for(var a=t.subn(1),h=0;!a.testn(h);h++);for(var u=t.shrn(h),l=a.toRed(o);e>0;e--){var c=this._randrange(new i(2),a);r&&r(c);var f=c.toRed(o).redPow(u);if(0!==f.cmp(s)&&0!==f.cmp(l)){for(var d=1;d0;e--){var l=this._randrange(new i(2),s),c=t.gcd(l);if(0!==c.cmpn(1))return c;var f=l.toRed(n).redPow(h);if(0!==f.cmp(o)&&0!==f.cmp(u)){for(var d=1;d=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,c=67108863&h,f=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=f;d++){var g=u-d|0;l+=(s=(n=0|t.words[g])*(o=0|e.words[d])+c)/67108864|0,c=67108863&s}r.words[u]=0|c,h=0|l}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?l[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=c[t],d=f[t];r="";var g=this.clone();for(g.negative=0;!g.isZero();){var A=g.modn(d).toString(t);r=(g=g.idivn(d)).isZero()?A+r:l[u-A.length]+A+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),l=this.clone();if(h){for(a=0;!l.isZero();a++)s=l.andln(255),l.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],g=8191&d,A=d>>>13,M=0|s[2],p=8191&M,w=M>>>13,B=0|s[3],m=8191&B,E=B>>>13,y=0|s[4],b=8191&y,I=y>>>13,v=0|s[5],C=8191&v,Q=v>>>13,D=0|s[6],N=8191&D,R=D>>>13,G=0|s[7],U=8191&G,V=G>>>13,S=0|s[8],T=8191&S,Y=S>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,x=j>>>13,z=0|a[1],O=8191&z,H=z>>>13,_=0|a[2],W=8191&_,J=_>>>13,X=0|a[3],P=8191&X,K=X>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,lt=0|a[8],ct=8191<,ft=lt>>>13,dt=0|a[9],gt=8191&dt,At=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(c,Z))|0)+((8191&(n=(n=Math.imul(c,x))+Math.imul(f,Z)|0))<<13)|0;u=((o=Math.imul(f,x))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(g,Z),n=(n=Math.imul(g,x))+Math.imul(A,Z)|0,o=Math.imul(A,x);var pt=(u+(i=i+Math.imul(c,O)|0)|0)+((8191&(n=(n=n+Math.imul(c,H)|0)+Math.imul(f,O)|0))<<13)|0;u=((o=o+Math.imul(f,H)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,x))+Math.imul(w,Z)|0,o=Math.imul(w,x),i=i+Math.imul(g,O)|0,n=(n=n+Math.imul(g,H)|0)+Math.imul(A,O)|0,o=o+Math.imul(A,H)|0;var wt=(u+(i=i+Math.imul(c,W)|0)|0)+((8191&(n=(n=n+Math.imul(c,J)|0)+Math.imul(f,W)|0))<<13)|0;u=((o=o+Math.imul(f,J)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(m,Z),n=(n=Math.imul(m,x))+Math.imul(E,Z)|0,o=Math.imul(E,x),i=i+Math.imul(p,O)|0,n=(n=n+Math.imul(p,H)|0)+Math.imul(w,O)|0,o=o+Math.imul(w,H)|0,i=i+Math.imul(g,W)|0,n=(n=n+Math.imul(g,J)|0)+Math.imul(A,W)|0,o=o+Math.imul(A,J)|0;var Bt=(u+(i=i+Math.imul(c,P)|0)|0)+((8191&(n=(n=n+Math.imul(c,K)|0)+Math.imul(f,P)|0))<<13)|0;u=((o=o+Math.imul(f,K)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,x))+Math.imul(I,Z)|0,o=Math.imul(I,x),i=i+Math.imul(m,O)|0,n=(n=n+Math.imul(m,H)|0)+Math.imul(E,O)|0,o=o+Math.imul(E,H)|0,i=i+Math.imul(p,W)|0,n=(n=n+Math.imul(p,J)|0)+Math.imul(w,W)|0,o=o+Math.imul(w,J)|0,i=i+Math.imul(g,P)|0,n=(n=n+Math.imul(g,K)|0)+Math.imul(A,P)|0,o=o+Math.imul(A,K)|0;var mt=(u+(i=i+Math.imul(c,$)|0)|0)+((8191&(n=(n=n+Math.imul(c,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,x))+Math.imul(Q,Z)|0,o=Math.imul(Q,x),i=i+Math.imul(b,O)|0,n=(n=n+Math.imul(b,H)|0)+Math.imul(I,O)|0,o=o+Math.imul(I,H)|0,i=i+Math.imul(m,W)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,J)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,K)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,K)|0,i=i+Math.imul(g,$)|0,n=(n=n+Math.imul(g,tt)|0)+Math.imul(A,$)|0,o=o+Math.imul(A,tt)|0;var Et=(u+(i=i+Math.imul(c,rt)|0)|0)+((8191&(n=(n=n+Math.imul(c,it)|0)+Math.imul(f,rt)|0))<<13)|0;u=((o=o+Math.imul(f,it)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,Z),n=(n=Math.imul(N,x))+Math.imul(R,Z)|0,o=Math.imul(R,x),i=i+Math.imul(C,O)|0,n=(n=n+Math.imul(C,H)|0)+Math.imul(Q,O)|0,o=o+Math.imul(Q,H)|0,i=i+Math.imul(b,W)|0,n=(n=n+Math.imul(b,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,i=i+Math.imul(m,P)|0,n=(n=n+Math.imul(m,K)|0)+Math.imul(E,P)|0,o=o+Math.imul(E,K)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(g,rt)|0,n=(n=n+Math.imul(g,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0;var yt=(u+(i=i+Math.imul(c,ot)|0)|0)+((8191&(n=(n=n+Math.imul(c,st)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(U,Z),n=(n=Math.imul(U,x))+Math.imul(V,Z)|0,o=Math.imul(V,x),i=i+Math.imul(N,O)|0,n=(n=n+Math.imul(N,H)|0)+Math.imul(R,O)|0,o=o+Math.imul(R,H)|0,i=i+Math.imul(C,W)|0,n=(n=n+Math.imul(C,J)|0)+Math.imul(Q,W)|0,o=o+Math.imul(Q,J)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,K)|0)+Math.imul(I,P)|0,o=o+Math.imul(I,K)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(g,ot)|0,n=(n=n+Math.imul(g,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0;var bt=(u+(i=i+Math.imul(c,ht)|0)|0)+((8191&(n=(n=n+Math.imul(c,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,x))+Math.imul(Y,Z)|0,o=Math.imul(Y,x),i=i+Math.imul(U,O)|0,n=(n=n+Math.imul(U,H)|0)+Math.imul(V,O)|0,o=o+Math.imul(V,H)|0,i=i+Math.imul(N,W)|0,n=(n=n+Math.imul(N,J)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,J)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,K)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,K)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,tt)|0,i=i+Math.imul(m,rt)|0,n=(n=n+Math.imul(m,it)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(g,ht)|0,n=(n=n+Math.imul(g,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0;var It=(u+(i=i+Math.imul(c,ct)|0)|0)+((8191&(n=(n=n+Math.imul(c,ft)|0)+Math.imul(f,ct)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,x))+Math.imul(L,Z)|0,o=Math.imul(L,x),i=i+Math.imul(T,O)|0,n=(n=n+Math.imul(T,H)|0)+Math.imul(Y,O)|0,o=o+Math.imul(Y,H)|0,i=i+Math.imul(U,W)|0,n=(n=n+Math.imul(U,J)|0)+Math.imul(V,W)|0,o=o+Math.imul(V,J)|0,i=i+Math.imul(N,P)|0,n=(n=n+Math.imul(N,K)|0)+Math.imul(R,P)|0,o=o+Math.imul(R,K)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,it)|0,i=i+Math.imul(m,ot)|0,n=(n=n+Math.imul(m,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(g,ct)|0,n=(n=n+Math.imul(g,ft)|0)+Math.imul(A,ct)|0,o=o+Math.imul(A,ft)|0;var vt=(u+(i=i+Math.imul(c,gt)|0)|0)+((8191&(n=(n=n+Math.imul(c,At)|0)+Math.imul(f,gt)|0))<<13)|0;u=((o=o+Math.imul(f,At)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,O),n=(n=Math.imul(F,H))+Math.imul(L,O)|0,o=Math.imul(L,H),i=i+Math.imul(T,W)|0,n=(n=n+Math.imul(T,J)|0)+Math.imul(Y,W)|0,o=o+Math.imul(Y,J)|0,i=i+Math.imul(U,P)|0,n=(n=n+Math.imul(U,K)|0)+Math.imul(V,P)|0,o=o+Math.imul(V,K)|0,i=i+Math.imul(N,$)|0,n=(n=n+Math.imul(N,tt)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,i=i+Math.imul(m,ht)|0,n=(n=n+Math.imul(m,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,i=i+Math.imul(p,ct)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(w,ct)|0,o=o+Math.imul(w,ft)|0;var Ct=(u+(i=i+Math.imul(g,gt)|0)|0)+((8191&(n=(n=n+Math.imul(g,At)|0)+Math.imul(A,gt)|0))<<13)|0;u=((o=o+Math.imul(A,At)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,W),n=(n=Math.imul(F,J))+Math.imul(L,W)|0,o=Math.imul(L,J),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,K)|0)+Math.imul(Y,P)|0,o=o+Math.imul(Y,K)|0,i=i+Math.imul(U,$)|0,n=(n=n+Math.imul(U,tt)|0)+Math.imul(V,$)|0,o=o+Math.imul(V,tt)|0,i=i+Math.imul(N,rt)|0,n=(n=n+Math.imul(N,it)|0)+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,ut)|0,i=i+Math.imul(m,ct)|0,n=(n=n+Math.imul(m,ft)|0)+Math.imul(E,ct)|0,o=o+Math.imul(E,ft)|0;var Qt=(u+(i=i+Math.imul(p,gt)|0)|0)+((8191&(n=(n=n+Math.imul(p,At)|0)+Math.imul(w,gt)|0))<<13)|0;u=((o=o+Math.imul(w,At)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,K))+Math.imul(L,P)|0,o=Math.imul(L,K),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(Y,$)|0,o=o+Math.imul(Y,tt)|0,i=i+Math.imul(U,rt)|0,n=(n=n+Math.imul(U,it)|0)+Math.imul(V,rt)|0,o=o+Math.imul(V,it)|0,i=i+Math.imul(N,ot)|0,n=(n=n+Math.imul(N,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(b,ct)|0,n=(n=n+Math.imul(b,ft)|0)+Math.imul(I,ct)|0,o=o+Math.imul(I,ft)|0;var Dt=(u+(i=i+Math.imul(m,gt)|0)|0)+((8191&(n=(n=n+Math.imul(m,At)|0)+Math.imul(E,gt)|0))<<13)|0;u=((o=o+Math.imul(E,At)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(Y,rt)|0,o=o+Math.imul(Y,it)|0,i=i+Math.imul(U,ot)|0,n=(n=n+Math.imul(U,st)|0)+Math.imul(V,ot)|0,o=o+Math.imul(V,st)|0,i=i+Math.imul(N,ht)|0,n=(n=n+Math.imul(N,ut)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,ut)|0,i=i+Math.imul(C,ct)|0,n=(n=n+Math.imul(C,ft)|0)+Math.imul(Q,ct)|0,o=o+Math.imul(Q,ft)|0;var Nt=(u+(i=i+Math.imul(b,gt)|0)|0)+((8191&(n=(n=n+Math.imul(b,At)|0)+Math.imul(I,gt)|0))<<13)|0;u=((o=o+Math.imul(I,At)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(Y,ot)|0,o=o+Math.imul(Y,st)|0,i=i+Math.imul(U,ht)|0,n=(n=n+Math.imul(U,ut)|0)+Math.imul(V,ht)|0,o=o+Math.imul(V,ut)|0,i=i+Math.imul(N,ct)|0,n=(n=n+Math.imul(N,ft)|0)+Math.imul(R,ct)|0,o=o+Math.imul(R,ft)|0;var Rt=(u+(i=i+Math.imul(C,gt)|0)|0)+((8191&(n=(n=n+Math.imul(C,At)|0)+Math.imul(Q,gt)|0))<<13)|0;u=((o=o+Math.imul(Q,At)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(Y,ht)|0,o=o+Math.imul(Y,ut)|0,i=i+Math.imul(U,ct)|0,n=(n=n+Math.imul(U,ft)|0)+Math.imul(V,ct)|0,o=o+Math.imul(V,ft)|0;var Gt=(u+(i=i+Math.imul(N,gt)|0)|0)+((8191&(n=(n=n+Math.imul(N,At)|0)+Math.imul(R,gt)|0))<<13)|0;u=((o=o+Math.imul(R,At)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,ct)|0,n=(n=n+Math.imul(T,ft)|0)+Math.imul(Y,ct)|0,o=o+Math.imul(Y,ft)|0;var Ut=(u+(i=i+Math.imul(U,gt)|0)|0)+((8191&(n=(n=n+Math.imul(U,At)|0)+Math.imul(V,gt)|0))<<13)|0;u=((o=o+Math.imul(V,At)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,i=Math.imul(F,ct),n=(n=Math.imul(F,ft))+Math.imul(L,ct)|0,o=Math.imul(L,ft);var Vt=(u+(i=i+Math.imul(T,gt)|0)|0)+((8191&(n=(n=n+Math.imul(T,At)|0)+Math.imul(Y,gt)|0))<<13)|0;u=((o=o+Math.imul(Y,At)|0)+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863;var St=(u+(i=Math.imul(F,gt))|0)+((8191&(n=(n=Math.imul(F,At))+Math.imul(L,gt)|0))<<13)|0;return u=((o=Math.imul(L,At))+(n>>>13)|0)+(St>>>26)|0,St&=67108863,h[0]=Mt,h[1]=pt,h[2]=wt,h[3]=Bt,h[4]=mt,h[5]=Et,h[6]=yt,h[7]=bt,h[8]=It,h[9]=vt,h[10]=Ct,h[11]=Qt,h[12]=Dt,h[13]=Nt,h[14]=Rt,h[15]=Gt,h[16]=Ut,h[17]=Vt,h[18]=St,0!==u&&(h[19]=u,r.length++),r};function A(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(g=d),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?g(this,t,e):r<63?d(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):A(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==l||u>=n);u--){var c=0|this.words[u];this.words[u]=l<<26-o|c>>>o,l=c&a}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;c--){var f=67108864*(0|i.words[n.length+c])+(0|i.words[n.length+c-1]);for(f=Math.min(f/s|0,67108863),i._ishlnsubmul(n,f,c);0!==i.negative;)f--,i.negative=0,i._ishlnsubmul(n,1,c),i.isZero()||(i.negative^=1);a&&(a.words[c]=f)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),c=e.clone();!e.isZero();){for(var f=0,d=1;0==(e.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(l),s.isub(c)),n.iushrn(1),s.iushrn(1);for(var g=0,A=1;0==(r.words[0]&A)&&g<26;++g,A<<=1);if(g>0)for(r.iushrn(g);g-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(l),h.isub(c)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var c=0,f=1;0==(r.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(r.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var p={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function B(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function m(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function E(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function I(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(B,w),B.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},B.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(p[t])return p[t];var e;if("k256"===t)e=new B;else if("p224"===t)e=new m;else if("p192"===t)e=new E;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return p[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var c=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),g=s;0!==d.cmp(a);){for(var A=d,M=0;0!==A.cmp(a);M++)A=A.redSqr();i(M=0;i--){for(var u=e.words[i],l=h-1;l>=0;l--){var c=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==c||0!==s?(s<<=1,s|=c,(4==++a||0===i&&0===l)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new I(t)},n(I,b),I.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},I.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},I.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},I.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},I.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},9746:t=>{function e(t,e){if(!t)throw new Error(e||"Assertion failed")}t.exports=e,e.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)}},4504:(t,e)=>{"use strict";var r=e;function i(t){return 1===t.length?"0"+t:t}function n(t){for(var e="",r=0;r>8,s=255&n;o?r.push(o,s):r.push(s)}return r},r.zero2=i,r.toHex=n,r.encode=function(t,e){return"hex"===e?n(t):t}},4244:t=>{"use strict";var e=function(t){return t!=t};t.exports=function(t,r){return 0===t&&0===r?1/t==1/r:t===r||!(!e(t)||!e(r))}},609:(t,e,r)=>{"use strict";var i=r(4289),n=r(5559),o=r(4244),s=r(5624),a=r(2281),h=n(s(),Object);i(h,{getPolyfill:s,implementation:o,shim:a}),t.exports=h},5624:(t,e,r)=>{"use strict";var i=r(4244);t.exports=function(){return"function"==typeof Object.is?Object.is:i}},2281:(t,e,r)=>{"use strict";var i=r(5624),n=r(4289);t.exports=function(){var t=i();return n(Object,{is:t},{is:function(){return Object.is!==t}}),t}},8987:(t,e,r)=>{"use strict";var i;if(!Object.keys){var n=Object.prototype.hasOwnProperty,o=Object.prototype.toString,s=r(1414),a=Object.prototype.propertyIsEnumerable,h=!a.call({toString:null},"toString"),u=a.call((function(){}),"prototype"),l=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],c=function(t){var e=t.constructor;return e&&e.prototype===t},f={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},d=function(){if("undefined"==typeof window)return!1;for(var t in window)try{if(!f["$"+t]&&n.call(window,t)&&null!==window[t]&&"object"==typeof window[t])try{c(window[t])}catch(t){return!0}}catch(t){return!0}return!1}();i=function(t){var e=null!==t&&"object"==typeof t,r="[object Function]"===o.call(t),i=s(t),a=e&&"[object String]"===o.call(t),f=[];if(!e&&!r&&!i)throw new TypeError("Object.keys called on a non-object");var g=u&&r;if(a&&t.length>0&&!n.call(t,0))for(var A=0;A0)for(var M=0;M{"use strict";var i=Array.prototype.slice,n=r(1414),o=Object.keys,s=o?function(t){return o(t)}:r(8987),a=Object.keys;s.shim=function(){return Object.keys?function(){var t=Object.keys(arguments);return t&&t.length===arguments.length}(1,2)||(Object.keys=function(t){return n(t)?a(i.call(t)):a(t)}):Object.keys=s,Object.keys||s},t.exports=s},1414:t=>{"use strict";var e=Object.prototype.toString;t.exports=function(t){var r=e.call(t),i="[object Arguments]"===r;return i||(i="[object Array]"!==r&&null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Function]"===e.call(t.callee)),i}},4236:(t,e)=>{"use strict";var r="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var r=e.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var n in r)i(r,n)&&(t[n]=r[n])}}return t},e.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var n={arraySet:function(t,e,r,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(r,r+i),n);else for(var o=0;o{"use strict";t.exports=function(t,e,r,i){for(var n=65535&t|0,o=t>>>16&65535|0,s=0;0!==r;){r-=s=r>2e3?2e3:r;do{o=o+(n=n+e[i++]|0)|0}while(--s);n%=65521,o%=65521}return n|o<<16|0}},1619:t=>{"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},2869:t=>{"use strict";var e=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();t.exports=function(t,r,i,n){var o=e,s=n+i;t^=-1;for(var a=n;a>>8^o[255&(t^r[a])];return-1^t}},405:(t,e,r)=>{"use strict";var i,n=r(4236),o=r(342),s=r(6069),a=r(2869),h=r(8898),u=-2,l=258,c=262,f=103,d=113,g=666;function A(t,e){return t.msg=h[e],e}function M(t){return(t<<1)-(t>4?9:0)}function p(t){for(var e=t.length;--e>=0;)t[e]=0}function w(t){var e=t.state,r=e.pending;r>t.avail_out&&(r=t.avail_out),0!==r&&(n.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))}function B(t,e){o._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,w(t.strm)}function m(t,e){t.pending_buf[t.pending++]=e}function E(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function y(t,e){var r,i,n=t.max_chain_length,o=t.strstart,s=t.prev_length,a=t.nice_match,h=t.strstart>t.w_size-c?t.strstart-(t.w_size-c):0,u=t.window,f=t.w_mask,d=t.prev,g=t.strstart+l,A=u[o+s-1],M=u[o+s];t.prev_length>=t.good_match&&(n>>=2),a>t.lookahead&&(a=t.lookahead);do{if(u[(r=e)+s]===M&&u[r+s-1]===A&&u[r]===u[o]&&u[++r]===u[o+1]){o+=2,r++;do{}while(u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&os){if(t.match_start=e,s=i,i>=a)break;A=u[o+s-1],M=u[o+s]}}}while((e=d[e&f])>h&&0!=--n);return s<=t.lookahead?s:t.lookahead}function b(t){var e,r,i,o,h,u,l,f,d,g,A=t.w_size;do{if(o=t.window_size-t.lookahead-t.strstart,t.strstart>=A+(A-c)){n.arraySet(t.window,t.window,A,A,0),t.match_start-=A,t.strstart-=A,t.block_start-=A,e=r=t.hash_size;do{i=t.head[--e],t.head[e]=i>=A?i-A:0}while(--r);e=r=A;do{i=t.prev[--e],t.prev[e]=i>=A?i-A:0}while(--r);o+=A}if(0===t.strm.avail_in)break;if(u=t.strm,l=t.window,f=t.strstart+t.lookahead,d=o,g=void 0,(g=u.avail_in)>d&&(g=d),r=0===g?0:(u.avail_in-=g,n.arraySet(l,u.input,u.next_in,g,f),1===u.state.wrap?u.adler=s(u.adler,l,g,f):2===u.state.wrap&&(u.adler=a(u.adler,l,g,f)),u.next_in+=g,u.total_in+=g,g),t.lookahead+=r,t.lookahead+t.insert>=3)for(h=t.strstart-t.insert,t.ins_h=t.window[h],t.ins_h=(t.ins_h<=3&&(t.ins_h=(t.ins_h<=3)if(i=o._tr_tally(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<=3&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=o._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=(t.ins_h<15&&(a=2,i-=16),o<1||o>9||8!==r||i<8||i>15||e<0||e>9||s<0||s>4)return A(t,u);8===i&&(i=9);var h=new Q;return t.state=h,h.strm=t,h.wrap=a,h.gzhead=null,h.w_bits=i,h.w_size=1<t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(b(t),0===t.lookahead&&0===e)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+r;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,B(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-c&&(B(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(B(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(B(t,!1),t.strm.avail_out),1)})),new C(4,4,8,4,I),new C(4,5,16,8,I),new C(4,6,32,32,I),new C(4,4,16,16,v),new C(8,16,32,32,v),new C(8,16,128,128,v),new C(8,32,128,256,v),new C(32,128,258,1024,v),new C(32,258,258,4096,v)],e.deflateInit=function(t,e){return R(t,e,8,15,8,0)},e.deflateInit2=R,e.deflateReset=N,e.deflateResetKeep=D,e.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?u:(t.state.gzhead=e,0):u},e.deflate=function(t,e){var r,n,s,h;if(!t||!t.state||e>5||e<0)return t?A(t,u):u;if(n=t.state,!t.output||!t.input&&0!==t.avail_in||n.status===g&&4!==e)return A(t,0===t.avail_out?-5:u);if(n.strm=t,r=n.last_flush,n.last_flush=e,42===n.status)if(2===n.wrap)t.adler=0,m(n,31),m(n,139),m(n,8),n.gzhead?(m(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),m(n,255&n.gzhead.time),m(n,n.gzhead.time>>8&255),m(n,n.gzhead.time>>16&255),m(n,n.gzhead.time>>24&255),m(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),m(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(m(n,255&n.gzhead.extra.length),m(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=a(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(m(n,0),m(n,0),m(n,0),m(n,0),m(n,0),m(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),m(n,3),n.status=d);else{var c=8+(n.w_bits-8<<4)<<8;c|=(n.strategy>=2||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(c|=32),c+=31-c%31,n.status=d,E(n,c),0!==n.strstart&&(E(n,t.adler>>>16),E(n,65535&t.adler)),t.adler=1}if(69===n.status)if(n.gzhead.extra){for(s=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),w(t),s=n.pending,n.pending!==n.pending_buf_size));)m(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){s=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),w(t),s=n.pending,n.pending===n.pending_buf_size)){h=1;break}h=n.gzindexs&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),0===h&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){s=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),w(t),s=n.pending,n.pending===n.pending_buf_size)){h=1;break}h=n.gzindexs&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),0===h&&(n.status=f)}else n.status=f;if(n.status===f&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&w(t),n.pending+2<=n.pending_buf_size&&(m(n,255&t.adler),m(n,t.adler>>8&255),t.adler=0,n.status=d)):n.status=d),0!==n.pending){if(w(t),0===t.avail_out)return n.last_flush=-1,0}else if(0===t.avail_in&&M(e)<=M(r)&&4!==e)return A(t,-5);if(n.status===g&&0!==t.avail_in)return A(t,-5);if(0!==t.avail_in||0!==n.lookahead||0!==e&&n.status!==g){var y=2===n.strategy?function(t,e){for(var r;;){if(0===t.lookahead&&(b(t),0===t.lookahead)){if(0===e)return 1;break}if(t.match_length=0,r=o._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(B(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(B(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(B(t,!1),0===t.strm.avail_out)?1:2}(n,e):3===n.strategy?function(t,e){for(var r,i,n,s,a=t.window;;){if(t.lookahead<=l){if(b(t),t.lookahead<=l&&0===e)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(i=a[n=t.strstart-1])===a[++n]&&i===a[++n]&&i===a[++n]){s=t.strstart+l;do{}while(i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(r=o._tr_tally(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=o._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(B(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(B(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(B(t,!1),0===t.strm.avail_out)?1:2}(n,e):i[n.level].func(n,e);if(3!==y&&4!==y||(n.status=g),1===y||3===y)return 0===t.avail_out&&(n.last_flush=-1),0;if(2===y&&(1===e?o._tr_align(n):5!==e&&(o._tr_stored_block(n,0,0,!1),3===e&&(p(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),w(t),0===t.avail_out))return n.last_flush=-1,0}return 4!==e?0:n.wrap<=0?1:(2===n.wrap?(m(n,255&t.adler),m(n,t.adler>>8&255),m(n,t.adler>>16&255),m(n,t.adler>>24&255),m(n,255&t.total_in),m(n,t.total_in>>8&255),m(n,t.total_in>>16&255),m(n,t.total_in>>24&255)):(E(n,t.adler>>>16),E(n,65535&t.adler)),w(t),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?0:1)},e.deflateEnd=function(t){var e;return t&&t.state?42!==(e=t.state.status)&&69!==e&&73!==e&&91!==e&&e!==f&&e!==d&&e!==g?A(t,u):(t.state=null,e===d?A(t,-3):0):u},e.deflateSetDictionary=function(t,e){var r,i,o,a,h,l,c,f,d=e.length;if(!t||!t.state)return u;if(2===(a=(r=t.state).wrap)||1===a&&42!==r.status||r.lookahead)return u;for(1===a&&(t.adler=s(t.adler,e,d,0)),r.wrap=0,d>=r.w_size&&(0===a&&(p(r.head),r.strstart=0,r.block_start=0,r.insert=0),f=new n.Buf8(r.w_size),n.arraySet(f,e,d-r.w_size,r.w_size,0),e=f,d=r.w_size),h=t.avail_in,l=t.next_in,c=t.input,t.avail_in=d,t.next_in=0,t.input=e,b(r);r.lookahead>=3;){i=r.strstart,o=r.lookahead-2;do{r.ins_h=(r.ins_h<{"use strict";t.exports=function(t,e){var r,i,n,o,s,a,h,u,l,c,f,d,g,A,M,p,w,B,m,E,y,b,I,v,C;r=t.state,i=t.next_in,v=t.input,n=i+(t.avail_in-5),o=t.next_out,C=t.output,s=o-(e-t.avail_out),a=o+(t.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,c=r.wnext,f=r.window,d=r.hold,g=r.bits,A=r.lencode,M=r.distcode,p=(1<>>=m=B>>>24,g-=m,0==(m=B>>>16&255))C[o++]=65535&B;else{if(!(16&m)){if(0==(64&m)){B=A[(65535&B)+(d&(1<>>=m,g-=m),g<15&&(d+=v[i++]<>>=m=B>>>24,g-=m,!(16&(m=B>>>16&255))){if(0==(64&m)){B=M[(65535&B)+(d&(1<h){t.msg="invalid distance too far back",r.mode=30;break t}if(d>>>=m,g-=m,y>(m=o-s)){if((m=y-m)>l&&r.sane){t.msg="invalid distance too far back",r.mode=30;break t}if(b=0,I=f,0===c){if(b+=u-m,m2;)C[o++]=I[b++],C[o++]=I[b++],C[o++]=I[b++],E-=3;E&&(C[o++]=I[b++],E>1&&(C[o++]=I[b++]))}else{b=o-y;do{C[o++]=C[b++],C[o++]=C[b++],C[o++]=C[b++],E-=3}while(E>2);E&&(C[o++]=C[b++],E>1&&(C[o++]=C[b++]))}break}}break}}while(i>3,d&=(1<<(g-=E<<3))-1,t.next_in=i,t.next_out=o,t.avail_in=i{"use strict";var i=r(4236),n=r(6069),o=r(2869),s=r(4264),a=r(9241),h=-2,u=12,l=30;function c(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function f(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function d(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new i.Buf32(852),e.distcode=e.distdyn=new i.Buf32(592),e.sane=1,e.back=-1,0):h}function g(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,d(t)):h}function A(t,e){var r,i;return t&&t.state?(i=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?h:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=r,i.wbits=e,g(t))):h}function M(t,e){var r,i;return t?(i=new f,t.state=i,i.window=null,0!==(r=A(t,e))&&(t.state=null),r):h}var p,w,B=!0;function m(t){if(B){var e;for(p=new i.Buf32(512),w=new i.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(a(1,t.lens,0,288,p,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;a(2,t.lens,0,32,w,0,t.work,{bits:5}),B=!1}t.lencode=p,t.lenbits=9,t.distcode=w,t.distbits=5}function E(t,e,r,n){var o,s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(i.arraySet(s.window,e,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):((o=s.wsize-s.wnext)>n&&(o=n),i.arraySet(s.window,e,r-n,o,s.wnext),(n-=o)?(i.arraySet(s.window,e,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=o,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=o(r.check,F,2,0),w=0,B=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&w)<<8)+(w>>8))%31){t.msg="incorrect header check",r.mode=l;break}if(8!=(15&w)){t.msg="unknown compression method",r.mode=l;break}if(B-=4,V=8+(15&(w>>>=4)),0===r.wbits)r.wbits=V;else if(V>r.wbits){t.msg="invalid window size",r.mode=l;break}r.dmax=1<>8&1),512&r.flags&&(F[0]=255&w,F[1]=w>>>8&255,r.check=o(r.check,F,2,0)),w=0,B=0,r.mode=3;case 3:for(;B<32;){if(0===M)break t;M--,w+=f[g++]<>>8&255,F[2]=w>>>16&255,F[3]=w>>>24&255,r.check=o(r.check,F,4,0)),w=0,B=0,r.mode=4;case 4:for(;B<16;){if(0===M)break t;M--,w+=f[g++]<>8),512&r.flags&&(F[0]=255&w,F[1]=w>>>8&255,r.check=o(r.check,F,2,0)),w=0,B=0,r.mode=5;case 5:if(1024&r.flags){for(;B<16;){if(0===M)break t;M--,w+=f[g++]<>>8&255,r.check=o(r.check,F,2,0)),w=0,B=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((I=r.length)>M&&(I=M),I&&(r.head&&(V=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),i.arraySet(r.head.extra,f,g,I,V)),512&r.flags&&(r.check=o(r.check,f,I,g)),M-=I,g+=I,r.length-=I),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===M)break t;I=0;do{V=f[g+I++],r.head&&V&&r.length<65536&&(r.head.name+=String.fromCharCode(V))}while(V&&I>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=u;break;case 10:for(;B<32;){if(0===M)break t;M--,w+=f[g++]<>>=7&B,B-=7&B,r.mode=27;break}for(;B<3;){if(0===M)break t;M--,w+=f[g++]<>>=1)){case 0:r.mode=14;break;case 1:if(m(r),r.mode=20,6===e){w>>>=2,B-=2;break t}break;case 2:r.mode=17;break;case 3:t.msg="invalid block type",r.mode=l}w>>>=2,B-=2;break;case 14:for(w>>>=7&B,B-=7&B;B<32;){if(0===M)break t;M--,w+=f[g++]<>>16^65535)){t.msg="invalid stored block lengths",r.mode=l;break}if(r.length=65535&w,w=0,B=0,r.mode=15,6===e)break t;case 15:r.mode=16;case 16:if(I=r.length){if(I>M&&(I=M),I>p&&(I=p),0===I)break t;i.arraySet(d,f,g,I,A),M-=I,g+=I,p-=I,A+=I,r.length-=I;break}r.mode=u;break;case 17:for(;B<14;){if(0===M)break t;M--,w+=f[g++]<>>=5,B-=5,r.ndist=1+(31&w),w>>>=5,B-=5,r.ncode=4+(15&w),w>>>=4,B-=4,r.nlen>286||r.ndist>30){t.msg="too many length or distance symbols",r.mode=l;break}r.have=0,r.mode=18;case 18:for(;r.have>>=3,B-=3}for(;r.have<19;)r.lens[L[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,T={bits:r.lenbits},S=a(0,r.lens,0,19,r.lencode,0,r.work,T),r.lenbits=T.bits,S){t.msg="invalid code lengths set",r.mode=l;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,N=65535&k,!((Q=k>>>24)<=B);){if(0===M)break t;M--,w+=f[g++]<>>=Q,B-=Q,r.lens[r.have++]=N;else{if(16===N){for(Y=Q+2;B>>=Q,B-=Q,0===r.have){t.msg="invalid bit length repeat",r.mode=l;break}V=r.lens[r.have-1],I=3+(3&w),w>>>=2,B-=2}else if(17===N){for(Y=Q+3;B>>=Q)),w>>>=3,B-=3}else{for(Y=Q+7;B>>=Q)),w>>>=7,B-=7}if(r.have+I>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=l;break}for(;I--;)r.lens[r.have++]=V}}if(r.mode===l)break;if(0===r.lens[256]){t.msg="invalid code -- missing end-of-block",r.mode=l;break}if(r.lenbits=9,T={bits:r.lenbits},S=a(1,r.lens,0,r.nlen,r.lencode,0,r.work,T),r.lenbits=T.bits,S){t.msg="invalid literal/lengths set",r.mode=l;break}if(r.distbits=6,r.distcode=r.distdyn,T={bits:r.distbits},S=a(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,T),r.distbits=T.bits,S){t.msg="invalid distances set",r.mode=l;break}if(r.mode=20,6===e)break t;case 20:r.mode=21;case 21:if(M>=6&&p>=258){t.next_out=A,t.avail_out=p,t.next_in=g,t.avail_in=M,r.hold=w,r.bits=B,s(t,b),A=t.next_out,d=t.output,p=t.avail_out,g=t.next_in,f=t.input,M=t.avail_in,w=r.hold,B=r.bits,r.mode===u&&(r.back=-1);break}for(r.back=0;D=(k=r.lencode[w&(1<>>16&255,N=65535&k,!((Q=k>>>24)<=B);){if(0===M)break t;M--,w+=f[g++]<>R)])>>>16&255,N=65535&k,!(R+(Q=k>>>24)<=B);){if(0===M)break t;M--,w+=f[g++]<>>=R,B-=R,r.back+=R}if(w>>>=Q,B-=Q,r.back+=Q,r.length=N,0===D){r.mode=26;break}if(32&D){r.back=-1,r.mode=u;break}if(64&D){t.msg="invalid literal/length code",r.mode=l;break}r.extra=15&D,r.mode=22;case 22:if(r.extra){for(Y=r.extra;B>>=r.extra,B-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;D=(k=r.distcode[w&(1<>>16&255,N=65535&k,!((Q=k>>>24)<=B);){if(0===M)break t;M--,w+=f[g++]<>R)])>>>16&255,N=65535&k,!(R+(Q=k>>>24)<=B);){if(0===M)break t;M--,w+=f[g++]<>>=R,B-=R,r.back+=R}if(w>>>=Q,B-=Q,r.back+=Q,64&D){t.msg="invalid distance code",r.mode=l;break}r.offset=N,r.extra=15&D,r.mode=24;case 24:if(r.extra){for(Y=r.extra;B>>=r.extra,B-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=l;break}r.mode=25;case 25:if(0===p)break t;if(I=b-p,r.offset>I){if((I=r.offset-I)>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=l;break}I>r.wnext?(I-=r.wnext,v=r.wsize-I):v=r.wnext-I,I>r.length&&(I=r.length),C=r.window}else C=d,v=A-r.offset,I=r.length;I>p&&(I=p),p-=I,r.length-=I;do{d[A++]=C[v++]}while(--I);0===r.length&&(r.mode=21);break;case 26:if(0===p)break t;d[A++]=r.length,p--,r.mode=21;break;case 27:if(r.wrap){for(;B<32;){if(0===M)break t;M--,w|=f[g++]<{"use strict";var i=r(4236),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],o=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],s=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],a=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(t,e,r,h,u,l,c,f){var d,g,A,M,p,w,B,m,E,y=f.bits,b=0,I=0,v=0,C=0,Q=0,D=0,N=0,R=0,G=0,U=0,V=null,S=0,T=new i.Buf16(16),Y=new i.Buf16(16),k=null,F=0;for(b=0;b<=15;b++)T[b]=0;for(I=0;I=1&&0===T[C];C--);if(Q>C&&(Q=C),0===C)return u[l++]=20971520,u[l++]=20971520,f.bits=1,0;for(v=1;v0&&(0===t||1!==C))return-1;for(Y[1]=0,b=1;b<15;b++)Y[b+1]=Y[b]+T[b];for(I=0;I852||2===t&&G>592)return 1;for(;;){B=b-N,c[I]w?(m=k[F+c[I]],E=V[S+c[I]]):(m=96,E=0),d=1<>N)+(g-=d)]=B<<24|m<<16|E|0}while(0!==g);for(d=1<>=1;if(0!==d?(U&=d-1,U+=d):U=0,I++,0==--T[b]){if(b===C)break;b=e[r+c[I]]}if(b>Q&&(U&M)!==A){for(0===N&&(N=Q),p+=v,R=1<<(D=b-N);D+N852||2===t&&G>592)return 1;u[A=U&M]=Q<<24|D<<16|p-l|0}}return 0!==U&&(u[p+U]=b-N<<24|64<<16|0),f.bits=Q,0}},8898:t=>{"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},342:(t,e,r)=>{"use strict";var i=r(4236);function n(t){for(var e=t.length;--e>=0;)t[e]=0}var o=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],s=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],h=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],u=new Array(576);n(u);var l=new Array(60);n(l);var c=new Array(512);n(c);var f=new Array(256);n(f);var d=new Array(29);n(d);var g,A,M,p=new Array(30);function w(t,e,r,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function B(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function m(t){return t<256?c[t]:c[256+(t>>>7)]}function E(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function y(t,e,r){t.bi_valid>16-r?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=r-16):(t.bi_buf|=e<>>=1,r<<=1}while(--e>0);return r>>>1}function v(t,e,r){var i,n,o=new Array(16),s=0;for(i=1;i<=15;i++)o[i]=s=s+r[i-1]<<1;for(n=0;n<=e;n++){var a=t[2*n+1];0!==a&&(t[2*n]=I(o[a]++,a))}}function C(t){var e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function Q(t){t.bi_valid>8?E(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function D(t,e,r,i){var n=2*e,o=2*r;return t[n]>1;r>=1;r--)N(t,o,r);n=h;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],N(t,o,1),i=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=i,o[2*n]=o[2*r]+o[2*i],t.depth[n]=(t.depth[r]>=t.depth[i]?t.depth[r]:t.depth[i])+1,o[2*r+1]=o[2*i+1]=n,t.heap[1]=n++,N(t,o,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var r,i,n,o,s,a,h=e.dyn_tree,u=e.max_code,l=e.stat_desc.static_tree,c=e.stat_desc.has_stree,f=e.stat_desc.extra_bits,d=e.stat_desc.extra_base,g=e.stat_desc.max_length,A=0;for(o=0;o<=15;o++)t.bl_count[o]=0;for(h[2*t.heap[t.heap_max]+1]=0,r=t.heap_max+1;r<573;r++)(o=h[2*h[2*(i=t.heap[r])+1]+1]+1)>g&&(o=g,A++),h[2*i+1]=o,i>u||(t.bl_count[o]++,s=0,i>=d&&(s=f[i-d]),a=h[2*i],t.opt_len+=a*(o+s),c&&(t.static_len+=a*(l[2*i+1]+s)));if(0!==A){do{for(o=g-1;0===t.bl_count[o];)o--;t.bl_count[o]--,t.bl_count[o+1]+=2,t.bl_count[g]--,A-=2}while(A>0);for(o=g;0!==o;o--)for(i=t.bl_count[o];0!==i;)(n=t.heap[--r])>u||(h[2*n+1]!==o&&(t.opt_len+=(o-h[2*n+1])*h[2*n],h[2*n+1]=o),i--)}}(t,e),v(o,u,t.bl_count)}function U(t,e,r){var i,n,o=-1,s=e[1],a=0,h=7,u=4;for(0===s&&(h=138,u=3),e[2*(r+1)+1]=65535,i=0;i<=r;i++)n=s,s=e[2*(i+1)+1],++a>=7;i<30;i++)for(p[i]=n<<7,t=0;t<1<0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,r=4093624447;for(e=0;e<=31;e++,r>>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),G(t,t.l_desc),G(t,t.d_desc),s=function(t){var e;for(U(t,t.dyn_ltree,t.l_desc.max_code),U(t,t.dyn_dtree,t.d_desc.max_code),G(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),n=t.opt_len+3+7>>>3,(o=t.static_len+3+7>>>3)<=n&&(n=o)):n=o=r+5,r+4<=n&&-1!==e?T(t,e,r,i):4===t.strategy||o===n?(y(t,2+(i?1:0),3),R(t,u,l)):(y(t,4+(i?1:0),3),function(t,e,r,i){var n;for(y(t,e-257,5),y(t,r-1,5),y(t,i-4,4),n=0;n>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(f[r]+256+1)]++,t.dyn_dtree[2*m(e)]++),t.last_lit===t.lit_bufsize-1},e._tr_align=function(t){y(t,2,3),b(t,256,u),function(t){16===t.bi_valid?(E(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},2292:t=>{"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},873:t=>{"use strict";t.exports=JSON.parse('{"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}')},2818:(t,e,r)=>{"use strict";var i=r(9809);e.certificate=r(1934);var n=i.define("RSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())}));e.RSAPrivateKey=n;var o=i.define("RSAPublicKey",(function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())}));e.RSAPublicKey=o;var s=i.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(a),this.key("subjectPublicKey").bitstr())}));e.PublicKey=s;var a=i.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())})),h=i.define("PrivateKeyInfo",(function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(a),this.key("subjectPrivateKey").octstr())}));e.PrivateKey=h;var u=i.define("EncryptedPrivateKeyInfo",(function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())}));e.EncryptedPrivateKey=u;var l=i.define("DSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())}));e.DSAPrivateKey=l,e.DSAparam=i.define("DSAparam",(function(){this.int()}));var c=i.define("ECPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(f),this.key("publicKey").optional().explicit(1).bitstr())}));e.ECPrivateKey=c;var f=i.define("ECParameters",(function(){this.choice({namedCurve:this.objid()})}));e.signature=i.define("signature",(function(){this.seq().obj(this.key("r").int(),this.key("s").int())}))},1934:(t,e,r)=>{"use strict";var i=r(9809),n=i.define("Time",(function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})})),o=i.define("AttributeTypeValue",(function(){this.seq().obj(this.key("type").objid(),this.key("value").any())})),s=i.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())})),a=i.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(s),this.key("subjectPublicKey").bitstr())})),h=i.define("RelativeDistinguishedName",(function(){this.setof(o)})),u=i.define("RDNSequence",(function(){this.seqof(h)})),l=i.define("Name",(function(){this.choice({rdnSequence:this.use(u)})})),c=i.define("Validity",(function(){this.seq().obj(this.key("notBefore").use(n),this.key("notAfter").use(n))})),f=i.define("Extension",(function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())})),d=i.define("TBSCertificate",(function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(s),this.key("issuer").use(l),this.key("validity").use(c),this.key("subject").use(l),this.key("subjectPublicKeyInfo").use(a),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(f).optional())})),g=i.define("X509Certificate",(function(){this.seq().obj(this.key("tbsCertificate").use(d),this.key("signatureAlgorithm").use(s),this.key("signatureValue").bitstr())}));t.exports=g},7631:(t,e,r)=>{var i=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,n=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,o=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,s=r(3048),a=r(4696),h=r(9509).Buffer;t.exports=function(t,e){var r,u=t.toString(),l=u.match(i);if(l){var c="aes"+l[1],f=h.from(l[2],"hex"),d=h.from(l[3].replace(/[\r\n]/g,""),"base64"),g=s(e,f.slice(0,8),parseInt(l[1],10)).key,A=[],M=a.createDecipheriv(c,g,f);A.push(M.update(d)),A.push(M.final()),r=h.concat(A)}else{var p=u.match(o);r=h.from(p[2].replace(/[\r\n]/g,""),"base64")}return{tag:u.match(n)[1],data:r}}},980:(t,e,r)=>{var i=r(2818),n=r(873),o=r(7631),s=r(4696),a=r(5632),h=r(9509).Buffer;function u(t){var e;"object"!=typeof t||h.isBuffer(t)||(e=t.passphrase,t=t.key),"string"==typeof t&&(t=h.from(t));var r,u,l=o(t,e),c=l.tag,f=l.data;switch(c){case"CERTIFICATE":u=i.certificate.decode(f,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(u||(u=i.PublicKey.decode(f,"der")),r=u.algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return i.RSAPublicKey.decode(u.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return u.subjectPrivateKey=u.subjectPublicKey,{type:"ec",data:u};case"1.2.840.10040.4.1":return u.algorithm.params.pub_key=i.DSAparam.decode(u.subjectPublicKey.data,"der"),{type:"dsa",data:u.algorithm.params};default:throw new Error("unknown key id "+r)}case"ENCRYPTED PRIVATE KEY":f=function(t,e){var r=t.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(),10),o=n[t.algorithm.decrypt.cipher.algo.join(".")],u=t.algorithm.decrypt.cipher.iv,l=t.subjectPrivateKey,c=parseInt(o.split("-")[1],10)/8,f=a.pbkdf2Sync(e,r,i,c,"sha1"),d=s.createDecipheriv(o,f,u),g=[];return g.push(d.update(l)),g.push(d.final()),h.concat(g)}(f=i.EncryptedPrivateKey.decode(f,"der"),e);case"PRIVATE KEY":switch(r=(u=i.PrivateKey.decode(f,"der")).algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return i.RSAPrivateKey.decode(u.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:u.algorithm.curve,privateKey:i.ECPrivateKey.decode(u.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return u.algorithm.params.priv_key=i.DSAparam.decode(u.subjectPrivateKey,"der"),{type:"dsa",params:u.algorithm.params};default:throw new Error("unknown key id "+r)}case"RSA PUBLIC KEY":return i.RSAPublicKey.decode(f,"der");case"RSA PRIVATE KEY":return i.RSAPrivateKey.decode(f,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:i.DSAPrivateKey.decode(f,"der")};case"EC PRIVATE KEY":return{curve:(f=i.ECPrivateKey.decode(f,"der")).parameters.value,privateKey:f.privateKey};default:throw new Error("unknown key type "+c)}}t.exports=u,u.signature=i.signature},5632:(t,e,r)=>{e.pbkdf2=r(8638),e.pbkdf2Sync=r(1257)},8638:(t,e,r)=>{var i,n,o=r(9509).Buffer,s=r(7357),a=r(2368),h=r(1257),u=r(7777),l=r.g.crypto&&r.g.crypto.subtle,c={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},f=[];function d(){return n||(n=r.g.process&&r.g.process.nextTick?r.g.process.nextTick:r.g.queueMicrotask?r.g.queueMicrotask:r.g.setImmediate?r.g.setImmediate:r.g.setTimeout)}function g(t,e,r,i,n){return l.importKey("raw",t,{name:"PBKDF2"},!1,["deriveBits"]).then((function(t){return l.deriveBits({name:"PBKDF2",salt:e,iterations:r,hash:{name:n}},t,i<<3)})).then((function(t){return o.from(t)}))}t.exports=function(t,e,n,A,M,p){"function"==typeof M&&(p=M,M=void 0);var w=c[(M=M||"sha1").toLowerCase()];if(w&&"function"==typeof r.g.Promise){if(s(n,A),t=u(t,a,"Password"),e=u(e,a,"Salt"),"function"!=typeof p)throw new Error("No callback provided to pbkdf2");!function(t,e){t.then((function(t){d()((function(){e(null,t)}))}),(function(t){d()((function(){e(t)}))}))}(function(t){if(r.g.process&&!r.g.process.browser)return Promise.resolve(!1);if(!l||!l.importKey||!l.deriveBits)return Promise.resolve(!1);if(void 0!==f[t])return f[t];var e=g(i=i||o.alloc(8),i,10,128,t).then((function(){return!0})).catch((function(){return!1}));return f[t]=e,e}(w).then((function(r){return r?g(t,e,n,A,w):h(t,e,n,A,M)})),p)}else d()((function(){var r;try{r=h(t,e,n,A,M)}catch(t){return p(t)}p(null,r)}))}},2368:(t,e,r)=>{var i,n=r(4155);i=r.g.process&&r.g.process.browser?"utf-8":r.g.process&&r.g.process.version?parseInt(n.version.split(".")[0].slice(1),10)>=6?"utf-8":"binary":"utf-8",t.exports=i},7357:t=>{var e=Math.pow(2,30)-1;t.exports=function(t,r){if("number"!=typeof t)throw new TypeError("Iterations not a number");if(t<0)throw new TypeError("Bad iterations");if("number"!=typeof r)throw new TypeError("Key length not a number");if(r<0||r>e||r!=r)throw new TypeError("Bad key length")}},1257:(t,e,r)=>{var i=r(8028),n=r(9785),o=r(9072),s=r(9509).Buffer,a=r(7357),h=r(2368),u=r(7777),l=s.alloc(128),c={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function f(t,e,r){var a=function(t){return"rmd160"===t||"ripemd160"===t?function(t){return(new n).update(t).digest()}:"md5"===t?i:function(e){return o(t).update(e).digest()}}(t),h="sha512"===t||"sha384"===t?128:64;e.length>h?e=a(e):e.length{var i=r(9509).Buffer;t.exports=function(t,e,r){if(i.isBuffer(t))return t;if("string"==typeof t)return i.from(t,e);if(ArrayBuffer.isView(t))return i.from(t.buffer);throw new TypeError(r+" must be a string, a Buffer, a typed array or a DataView")}},4155:t=>{var e,r,i=t.exports={};function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(e===setTimeout)return setTimeout(t,0);if((e===n||!e)&&setTimeout)return e=setTimeout,setTimeout(t,0);try{return e(t,0)}catch(r){try{return e.call(null,t,0)}catch(r){return e.call(this,t,0)}}}!function(){try{e="function"==typeof setTimeout?setTimeout:n}catch(t){e=n}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var a,h=[],u=!1,l=-1;function c(){u&&a&&(u=!1,a.length?h=a.concat(h):l=-1,h.length&&f())}function f(){if(!u){var t=s(c);u=!0;for(var e=h.length;e;){for(a=h,h=[];++l1)for(var r=1;r{e.publicEncrypt=r(6559),e.privateDecrypt=r(6138),e.privateEncrypt=function(t,r){return e.publicEncrypt(t,r,!0)},e.publicDecrypt=function(t,r){return e.privateDecrypt(t,r,!0)}},9199:(t,e,r)=>{var i=r(3482),n=r(9509).Buffer;function o(t){var e=n.allocUnsafe(4);return e.writeUInt32BE(t,0),e}t.exports=function(t,e){for(var r,s=n.alloc(0),a=0;s.length=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,c=67108863&h,f=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=f;d++){var g=u-d|0;l+=(s=(n=0|t.words[g])*(o=0|e.words[d])+c)/67108864|0,c=67108863&s}r.words[u]=0|c,h=0|l}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?l[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=c[t],d=f[t];r="";var g=this.clone();for(g.negative=0;!g.isZero();){var A=g.modn(d).toString(t);r=(g=g.idivn(d)).isZero()?A+r:l[u-A.length]+A+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),l=this.clone();if(h){for(a=0;!l.isZero();a++)s=l.andln(255),l.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],g=8191&d,A=d>>>13,M=0|s[2],p=8191&M,w=M>>>13,B=0|s[3],m=8191&B,E=B>>>13,y=0|s[4],b=8191&y,I=y>>>13,v=0|s[5],C=8191&v,Q=v>>>13,D=0|s[6],N=8191&D,R=D>>>13,G=0|s[7],U=8191&G,V=G>>>13,S=0|s[8],T=8191&S,Y=S>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,x=j>>>13,z=0|a[1],O=8191&z,H=z>>>13,_=0|a[2],W=8191&_,J=_>>>13,X=0|a[3],P=8191&X,K=X>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,lt=0|a[8],ct=8191<,ft=lt>>>13,dt=0|a[9],gt=8191&dt,At=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(c,Z))|0)+((8191&(n=(n=Math.imul(c,x))+Math.imul(f,Z)|0))<<13)|0;u=((o=Math.imul(f,x))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(g,Z),n=(n=Math.imul(g,x))+Math.imul(A,Z)|0,o=Math.imul(A,x);var pt=(u+(i=i+Math.imul(c,O)|0)|0)+((8191&(n=(n=n+Math.imul(c,H)|0)+Math.imul(f,O)|0))<<13)|0;u=((o=o+Math.imul(f,H)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,x))+Math.imul(w,Z)|0,o=Math.imul(w,x),i=i+Math.imul(g,O)|0,n=(n=n+Math.imul(g,H)|0)+Math.imul(A,O)|0,o=o+Math.imul(A,H)|0;var wt=(u+(i=i+Math.imul(c,W)|0)|0)+((8191&(n=(n=n+Math.imul(c,J)|0)+Math.imul(f,W)|0))<<13)|0;u=((o=o+Math.imul(f,J)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(m,Z),n=(n=Math.imul(m,x))+Math.imul(E,Z)|0,o=Math.imul(E,x),i=i+Math.imul(p,O)|0,n=(n=n+Math.imul(p,H)|0)+Math.imul(w,O)|0,o=o+Math.imul(w,H)|0,i=i+Math.imul(g,W)|0,n=(n=n+Math.imul(g,J)|0)+Math.imul(A,W)|0,o=o+Math.imul(A,J)|0;var Bt=(u+(i=i+Math.imul(c,P)|0)|0)+((8191&(n=(n=n+Math.imul(c,K)|0)+Math.imul(f,P)|0))<<13)|0;u=((o=o+Math.imul(f,K)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,x))+Math.imul(I,Z)|0,o=Math.imul(I,x),i=i+Math.imul(m,O)|0,n=(n=n+Math.imul(m,H)|0)+Math.imul(E,O)|0,o=o+Math.imul(E,H)|0,i=i+Math.imul(p,W)|0,n=(n=n+Math.imul(p,J)|0)+Math.imul(w,W)|0,o=o+Math.imul(w,J)|0,i=i+Math.imul(g,P)|0,n=(n=n+Math.imul(g,K)|0)+Math.imul(A,P)|0,o=o+Math.imul(A,K)|0;var mt=(u+(i=i+Math.imul(c,$)|0)|0)+((8191&(n=(n=n+Math.imul(c,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,x))+Math.imul(Q,Z)|0,o=Math.imul(Q,x),i=i+Math.imul(b,O)|0,n=(n=n+Math.imul(b,H)|0)+Math.imul(I,O)|0,o=o+Math.imul(I,H)|0,i=i+Math.imul(m,W)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,J)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,K)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,K)|0,i=i+Math.imul(g,$)|0,n=(n=n+Math.imul(g,tt)|0)+Math.imul(A,$)|0,o=o+Math.imul(A,tt)|0;var Et=(u+(i=i+Math.imul(c,rt)|0)|0)+((8191&(n=(n=n+Math.imul(c,it)|0)+Math.imul(f,rt)|0))<<13)|0;u=((o=o+Math.imul(f,it)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,Z),n=(n=Math.imul(N,x))+Math.imul(R,Z)|0,o=Math.imul(R,x),i=i+Math.imul(C,O)|0,n=(n=n+Math.imul(C,H)|0)+Math.imul(Q,O)|0,o=o+Math.imul(Q,H)|0,i=i+Math.imul(b,W)|0,n=(n=n+Math.imul(b,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,i=i+Math.imul(m,P)|0,n=(n=n+Math.imul(m,K)|0)+Math.imul(E,P)|0,o=o+Math.imul(E,K)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(g,rt)|0,n=(n=n+Math.imul(g,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0;var yt=(u+(i=i+Math.imul(c,ot)|0)|0)+((8191&(n=(n=n+Math.imul(c,st)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(U,Z),n=(n=Math.imul(U,x))+Math.imul(V,Z)|0,o=Math.imul(V,x),i=i+Math.imul(N,O)|0,n=(n=n+Math.imul(N,H)|0)+Math.imul(R,O)|0,o=o+Math.imul(R,H)|0,i=i+Math.imul(C,W)|0,n=(n=n+Math.imul(C,J)|0)+Math.imul(Q,W)|0,o=o+Math.imul(Q,J)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,K)|0)+Math.imul(I,P)|0,o=o+Math.imul(I,K)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(g,ot)|0,n=(n=n+Math.imul(g,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0;var bt=(u+(i=i+Math.imul(c,ht)|0)|0)+((8191&(n=(n=n+Math.imul(c,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,x))+Math.imul(Y,Z)|0,o=Math.imul(Y,x),i=i+Math.imul(U,O)|0,n=(n=n+Math.imul(U,H)|0)+Math.imul(V,O)|0,o=o+Math.imul(V,H)|0,i=i+Math.imul(N,W)|0,n=(n=n+Math.imul(N,J)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,J)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,K)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,K)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,tt)|0,i=i+Math.imul(m,rt)|0,n=(n=n+Math.imul(m,it)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(g,ht)|0,n=(n=n+Math.imul(g,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0;var It=(u+(i=i+Math.imul(c,ct)|0)|0)+((8191&(n=(n=n+Math.imul(c,ft)|0)+Math.imul(f,ct)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,x))+Math.imul(L,Z)|0,o=Math.imul(L,x),i=i+Math.imul(T,O)|0,n=(n=n+Math.imul(T,H)|0)+Math.imul(Y,O)|0,o=o+Math.imul(Y,H)|0,i=i+Math.imul(U,W)|0,n=(n=n+Math.imul(U,J)|0)+Math.imul(V,W)|0,o=o+Math.imul(V,J)|0,i=i+Math.imul(N,P)|0,n=(n=n+Math.imul(N,K)|0)+Math.imul(R,P)|0,o=o+Math.imul(R,K)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,it)|0,i=i+Math.imul(m,ot)|0,n=(n=n+Math.imul(m,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(g,ct)|0,n=(n=n+Math.imul(g,ft)|0)+Math.imul(A,ct)|0,o=o+Math.imul(A,ft)|0;var vt=(u+(i=i+Math.imul(c,gt)|0)|0)+((8191&(n=(n=n+Math.imul(c,At)|0)+Math.imul(f,gt)|0))<<13)|0;u=((o=o+Math.imul(f,At)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,O),n=(n=Math.imul(F,H))+Math.imul(L,O)|0,o=Math.imul(L,H),i=i+Math.imul(T,W)|0,n=(n=n+Math.imul(T,J)|0)+Math.imul(Y,W)|0,o=o+Math.imul(Y,J)|0,i=i+Math.imul(U,P)|0,n=(n=n+Math.imul(U,K)|0)+Math.imul(V,P)|0,o=o+Math.imul(V,K)|0,i=i+Math.imul(N,$)|0,n=(n=n+Math.imul(N,tt)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,i=i+Math.imul(m,ht)|0,n=(n=n+Math.imul(m,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,i=i+Math.imul(p,ct)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(w,ct)|0,o=o+Math.imul(w,ft)|0;var Ct=(u+(i=i+Math.imul(g,gt)|0)|0)+((8191&(n=(n=n+Math.imul(g,At)|0)+Math.imul(A,gt)|0))<<13)|0;u=((o=o+Math.imul(A,At)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,W),n=(n=Math.imul(F,J))+Math.imul(L,W)|0,o=Math.imul(L,J),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,K)|0)+Math.imul(Y,P)|0,o=o+Math.imul(Y,K)|0,i=i+Math.imul(U,$)|0,n=(n=n+Math.imul(U,tt)|0)+Math.imul(V,$)|0,o=o+Math.imul(V,tt)|0,i=i+Math.imul(N,rt)|0,n=(n=n+Math.imul(N,it)|0)+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,ut)|0,i=i+Math.imul(m,ct)|0,n=(n=n+Math.imul(m,ft)|0)+Math.imul(E,ct)|0,o=o+Math.imul(E,ft)|0;var Qt=(u+(i=i+Math.imul(p,gt)|0)|0)+((8191&(n=(n=n+Math.imul(p,At)|0)+Math.imul(w,gt)|0))<<13)|0;u=((o=o+Math.imul(w,At)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,K))+Math.imul(L,P)|0,o=Math.imul(L,K),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(Y,$)|0,o=o+Math.imul(Y,tt)|0,i=i+Math.imul(U,rt)|0,n=(n=n+Math.imul(U,it)|0)+Math.imul(V,rt)|0,o=o+Math.imul(V,it)|0,i=i+Math.imul(N,ot)|0,n=(n=n+Math.imul(N,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(b,ct)|0,n=(n=n+Math.imul(b,ft)|0)+Math.imul(I,ct)|0,o=o+Math.imul(I,ft)|0;var Dt=(u+(i=i+Math.imul(m,gt)|0)|0)+((8191&(n=(n=n+Math.imul(m,At)|0)+Math.imul(E,gt)|0))<<13)|0;u=((o=o+Math.imul(E,At)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(Y,rt)|0,o=o+Math.imul(Y,it)|0,i=i+Math.imul(U,ot)|0,n=(n=n+Math.imul(U,st)|0)+Math.imul(V,ot)|0,o=o+Math.imul(V,st)|0,i=i+Math.imul(N,ht)|0,n=(n=n+Math.imul(N,ut)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,ut)|0,i=i+Math.imul(C,ct)|0,n=(n=n+Math.imul(C,ft)|0)+Math.imul(Q,ct)|0,o=o+Math.imul(Q,ft)|0;var Nt=(u+(i=i+Math.imul(b,gt)|0)|0)+((8191&(n=(n=n+Math.imul(b,At)|0)+Math.imul(I,gt)|0))<<13)|0;u=((o=o+Math.imul(I,At)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(Y,ot)|0,o=o+Math.imul(Y,st)|0,i=i+Math.imul(U,ht)|0,n=(n=n+Math.imul(U,ut)|0)+Math.imul(V,ht)|0,o=o+Math.imul(V,ut)|0,i=i+Math.imul(N,ct)|0,n=(n=n+Math.imul(N,ft)|0)+Math.imul(R,ct)|0,o=o+Math.imul(R,ft)|0;var Rt=(u+(i=i+Math.imul(C,gt)|0)|0)+((8191&(n=(n=n+Math.imul(C,At)|0)+Math.imul(Q,gt)|0))<<13)|0;u=((o=o+Math.imul(Q,At)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(Y,ht)|0,o=o+Math.imul(Y,ut)|0,i=i+Math.imul(U,ct)|0,n=(n=n+Math.imul(U,ft)|0)+Math.imul(V,ct)|0,o=o+Math.imul(V,ft)|0;var Gt=(u+(i=i+Math.imul(N,gt)|0)|0)+((8191&(n=(n=n+Math.imul(N,At)|0)+Math.imul(R,gt)|0))<<13)|0;u=((o=o+Math.imul(R,At)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,ct)|0,n=(n=n+Math.imul(T,ft)|0)+Math.imul(Y,ct)|0,o=o+Math.imul(Y,ft)|0;var Ut=(u+(i=i+Math.imul(U,gt)|0)|0)+((8191&(n=(n=n+Math.imul(U,At)|0)+Math.imul(V,gt)|0))<<13)|0;u=((o=o+Math.imul(V,At)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,i=Math.imul(F,ct),n=(n=Math.imul(F,ft))+Math.imul(L,ct)|0,o=Math.imul(L,ft);var Vt=(u+(i=i+Math.imul(T,gt)|0)|0)+((8191&(n=(n=n+Math.imul(T,At)|0)+Math.imul(Y,gt)|0))<<13)|0;u=((o=o+Math.imul(Y,At)|0)+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863;var St=(u+(i=Math.imul(F,gt))|0)+((8191&(n=(n=Math.imul(F,At))+Math.imul(L,gt)|0))<<13)|0;return u=((o=Math.imul(L,At))+(n>>>13)|0)+(St>>>26)|0,St&=67108863,h[0]=Mt,h[1]=pt,h[2]=wt,h[3]=Bt,h[4]=mt,h[5]=Et,h[6]=yt,h[7]=bt,h[8]=It,h[9]=vt,h[10]=Ct,h[11]=Qt,h[12]=Dt,h[13]=Nt,h[14]=Rt,h[15]=Gt,h[16]=Ut,h[17]=Vt,h[18]=St,0!==u&&(h[19]=u,r.length++),r};function A(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(g=d),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?g(this,t,e):r<63?d(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):A(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==l||u>=n);u--){var c=0|this.words[u];this.words[u]=l<<26-o|c>>>o,l=c&a}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;c--){var f=67108864*(0|i.words[n.length+c])+(0|i.words[n.length+c-1]);for(f=Math.min(f/s|0,67108863),i._ishlnsubmul(n,f,c);0!==i.negative;)f--,i.negative=0,i._ishlnsubmul(n,1,c),i.isZero()||(i.negative^=1);a&&(a.words[c]=f)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),c=e.clone();!e.isZero();){for(var f=0,d=1;0==(e.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(l),s.isub(c)),n.iushrn(1),s.iushrn(1);for(var g=0,A=1;0==(r.words[0]&A)&&g<26;++g,A<<=1);if(g>0)for(r.iushrn(g);g-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(l),h.isub(c)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var c=0,f=1;0==(r.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(r.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var p={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function B(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function m(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function E(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function I(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(B,w),B.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},B.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(p[t])return p[t];var e;if("k256"===t)e=new B;else if("p224"===t)e=new m;else if("p192"===t)e=new E;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return p[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var c=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),g=s;0!==d.cmp(a);){for(var A=d,M=0;0!==A.cmp(a);M++)A=A.redSqr();i(M=0;i--){for(var u=e.words[i],l=h-1;l>=0;l--){var c=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==c||0!==s?(s<<=1,s|=c,(4==++a||0===i&&0===l)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new I(t)},n(I,b),I.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},I.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},I.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},I.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},I.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},6138:(t,e,r)=>{var i=r(980),n=r(9199),o=r(7859),s=r(2144),a=r(3663),h=r(3482),u=r(4818),l=r(9509).Buffer;t.exports=function(t,e,r){var c;c=t.padding?t.padding:r?1:4;var f,d=i(t),g=d.modulus.byteLength();if(e.length>g||new s(e).cmp(d.modulus)>=0)throw new Error("decryption error");f=r?u(new s(e),d):a(e,d);var A=l.alloc(g-f.length);if(f=l.concat([A,f],g),4===c)return function(t,e){var r=t.modulus.byteLength(),i=h("sha1").update(l.alloc(0)).digest(),s=i.length;if(0!==e[0])throw new Error("decryption error");var a=e.slice(1,s+1),u=e.slice(s+1),c=o(a,n(u,s)),f=o(u,n(c,r-s-1));if(function(t,e){t=l.from(t),e=l.from(e);var r=0,i=t.length;t.length!==e.length&&(r++,i=Math.min(t.length,e.length));for(var n=-1;++n=e.length){o++;break}var s=e.slice(2,n-1);if(("0002"!==i.toString("hex")&&!r||"0001"!==i.toString("hex")&&r)&&o++,s.length<8&&o++,o)throw new Error("decryption error");return e.slice(n)}(0,f,r);if(3===c)return f;throw new Error("unknown padding")}},6559:(t,e,r)=>{var i=r(980),n=r(1798),o=r(3482),s=r(9199),a=r(7859),h=r(2144),u=r(4818),l=r(3663),c=r(9509).Buffer;t.exports=function(t,e,r){var f;f=t.padding?t.padding:r?1:4;var d,g=i(t);if(4===f)d=function(t,e){var r=t.modulus.byteLength(),i=e.length,u=o("sha1").update(c.alloc(0)).digest(),l=u.length,f=2*l;if(i>r-f-2)throw new Error("message too long");var d=c.alloc(r-i-f-2),g=r-l-1,A=n(l),M=a(c.concat([u,d,c.alloc(1,1),e],g),s(A,g)),p=a(A,s(M,l));return new h(c.concat([c.alloc(1),p,M],r))}(g,e);else if(1===f)d=function(t,e,r){var i,o=e.length,s=t.modulus.byteLength();if(o>s-11)throw new Error("message too long");return i=r?c.alloc(s-o-3,255):function(t){for(var e,r=c.allocUnsafe(t),i=0,o=n(2*t),s=0;i=0)throw new Error("data too long for modulus")}return r?l(d,g):u(d,g)}},4818:(t,e,r)=>{var i=r(2144),n=r(9509).Buffer;t.exports=function(t,e){return n.from(t.toRed(i.mont(e.modulus)).redPow(new i(e.publicExponent)).fromRed().toArray())}},7859:t=>{t.exports=function(t,e){for(var r=t.length,i=-1;++i{"use strict";var i=r(4155),n=65536,o=r(9509).Buffer,s=r.g.crypto||r.g.msCrypto;s&&s.getRandomValues?t.exports=function(t,e){if(t>4294967295)throw new RangeError("requested too many random bytes");var r=o.allocUnsafe(t);if(t>0)if(t>n)for(var a=0;a{"use strict";var i=r(4155);function n(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var o=r(9509),s=r(1798),a=o.Buffer,h=o.kMaxLength,u=r.g.crypto||r.g.msCrypto,l=Math.pow(2,32)-1;function c(t,e){if("number"!=typeof t||t!=t)throw new TypeError("offset must be a number");if(t>l||t<0)throw new TypeError("offset must be a uint32");if(t>h||t>e)throw new RangeError("offset out of range")}function f(t,e,r){if("number"!=typeof t||t!=t)throw new TypeError("size must be a number");if(t>l||t<0)throw new TypeError("size must be a uint32");if(t+e>r||t>h)throw new RangeError("buffer too small")}function d(t,e,r,n){if(i.browser){var o=t.buffer,a=new Uint8Array(o,e,r);return u.getRandomValues(a),n?void i.nextTick((function(){n(null,t)})):t}if(!n)return s(r).copy(t,e),t;s(r,(function(r,i){if(r)return n(r);i.copy(t,e),n(null,t)}))}u&&u.getRandomValues||!i.browser?(e.randomFill=function(t,e,i,n){if(!(a.isBuffer(t)||t instanceof r.g.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof e)n=e,e=0,i=t.length;else if("function"==typeof i)n=i,i=t.length-e;else if("function"!=typeof n)throw new TypeError('"cb" argument must be a function');return c(e,t.length),f(i,e,t.length),d(t,e,i,n)},e.randomFillSync=function(t,e,i){if(void 0===e&&(e=0),!(a.isBuffer(t)||t instanceof r.g.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return c(e,t.length),void 0===i&&(i=t.length-e),f(i,e,t.length),d(t,e,i)}):(e.randomFill=n,e.randomFillSync=n)},4281:t=>{"use strict";var e={};function r(t,r,i){i||(i=Error);var n=function(t){var e,i;function n(e,i,n){return t.call(this,function(t,e,i){return"string"==typeof r?r:r(t,e,i)}(e,i,n))||this}return i=t,(e=n).prototype=Object.create(i.prototype),e.prototype.constructor=e,e.__proto__=i,n}(i);n.prototype.name=i.name,n.prototype.code=t,e[t]=n}function i(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map((function(t){return String(t)})),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",(function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'}),TypeError),r("ERR_INVALID_ARG_TYPE",(function(t,e,r){var n,o,s,a,h;if("string"==typeof e&&(o="not ",e.substr(0,o.length)===o)?(n="must not be",e=e.replace(/^not /,"")):n="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t," argument"))s="The ".concat(t," ").concat(n," ").concat(i(e,"type"));else{var u=("number"!=typeof h&&(h=0),h+".".length>(a=t).length||-1===a.indexOf(".",h)?"argument":"property");s='The "'.concat(t,'" ').concat(u," ").concat(n," ").concat(i(e,"type"))}return s+". Received type ".concat(typeof r)}),TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",(function(t){return"The "+t+" method is not implemented"})),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",(function(t){return"Cannot call "+t+" after a stream was destroyed"})),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",(function(t){return"Unknown encoding: "+t}),TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.q=e},6753:(t,e,r)=>{"use strict";var i=r(4155),n=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=l;var o=r(9481),s=r(4229);r(5717)(l,o);for(var a=n(s.prototype),h=0;h{"use strict";t.exports=n;var i=r(4605);function n(t){if(!(this instanceof n))return new n(t);i.call(this,t)}r(5717)(n,i),n.prototype._transform=function(t,e,r){r(null,t)}},9481:(t,e,r)=>{"use strict";var i,n=r(4155);t.exports=v,v.ReadableState=I,r(7187).EventEmitter;var o,s=function(t,e){return t.listeners(e).length},a=r(2503),h=r(8764).Buffer,u=r.g.Uint8Array||function(){},l=r(4616);o=l&&l.debuglog?l.debuglog("stream"):function(){};var c,f,d,g=r(7327),A=r(1195),M=r(2457).getHighWaterMark,p=r(4281).q,w=p.ERR_INVALID_ARG_TYPE,B=p.ERR_STREAM_PUSH_AFTER_EOF,m=p.ERR_METHOD_NOT_IMPLEMENTED,E=p.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r(5717)(v,a);var y=A.errorOrDestroy,b=["error","close","destroy","pause","resume"];function I(t,e,n){i=i||r(6753),t=t||{},"boolean"!=typeof n&&(n=e instanceof i),this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=M(this,t,"readableHighWaterMark",n),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(c||(c=r(2553).s),this.decoder=new c(t.encoding),this.encoding=t.encoding)}function v(t){if(i=i||r(6753),!(this instanceof v))return new v(t);var e=this instanceof i;this._readableState=new I(t,this,e),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),a.call(this)}function C(t,e,r,i,n){o("readableAddChunk",e);var s,a=t._readableState;if(null===e)a.reading=!1,function(t,e){if(o("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?R(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,G(t)))}}(t,a);else if(n||(s=function(t,e){var r,i;return i=e,h.isBuffer(i)||i instanceof u||"string"==typeof e||void 0===e||t.objectMode||(r=new w("chunk",["string","Buffer","Uint8Array"],e)),r}(a,e)),s)y(t,s);else if(a.objectMode||e&&e.length>0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===h.prototype||(e=function(t){return h.from(t)}(e)),i)a.endEmitted?y(t,new E):Q(t,a,e,!0);else if(a.ended)y(t,new B);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?Q(t,a,e,!1):U(t,a)):Q(t,a,e,!1)}else i||(a.reading=!1,U(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=D?t=D:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function R(t){var e=t._readableState;o("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(o("emitReadable",e.flowing),e.emittedReadable=!0,n.nextTick(G,t))}function G(t){var e=t._readableState;o("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,k(t)}function U(t,e){e.readingMore||(e.readingMore=!0,n.nextTick(V,t,e))}function V(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function T(t){o("readable nexttick read 0"),t.read(0)}function Y(t,e){o("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),k(t),e.flowing&&!e.reading&&t.read(0)}function k(t){var e=t._readableState;for(o("flow",e.flowing);e.flowing&&null!==t.read(););}function F(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function L(t){var e=t._readableState;o("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,n.nextTick(j,e,t))}function j(t,e){if(o("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function Z(t,e){for(var r=0,i=t.length;r=e.highWaterMark:e.length>0)||e.ended))return o("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?L(this):R(this),null;if(0===(t=N(t,e))&&e.ended)return 0===e.length&&L(this),null;var i,n=e.needReadable;return o("need readable",n),(0===e.length||e.length-t0?F(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&L(this)),null!==i&&this.emit("data",i),i},v.prototype._read=function(t){y(this,new m("_read()"))},v.prototype.pipe=function(t,e){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=t;break;case 1:i.pipes=[i.pipes,t];break;default:i.pipes.push(t)}i.pipesCount+=1,o("pipe count=%d opts=%j",i.pipesCount,e);var a=e&&!1===e.end||t===n.stdout||t===n.stderr?A:h;function h(){o("onend"),t.end()}i.endEmitted?n.nextTick(a):r.once("end",a),t.on("unpipe",(function e(n,s){o("onunpipe"),n===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,o("cleanup"),t.removeListener("close",d),t.removeListener("finish",g),t.removeListener("drain",u),t.removeListener("error",f),t.removeListener("unpipe",e),r.removeListener("end",h),r.removeListener("end",A),r.removeListener("data",c),l=!0,!i.awaitDrain||t._writableState&&!t._writableState.needDrain||u())}));var u=function(t){return function(){var e=t._readableState;o("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,k(t))}}(r);t.on("drain",u);var l=!1;function c(e){o("ondata");var n=t.write(e);o("dest.write",n),!1===n&&((1===i.pipesCount&&i.pipes===t||i.pipesCount>1&&-1!==Z(i.pipes,t))&&!l&&(o("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function f(e){o("onerror",e),A(),t.removeListener("error",f),0===s(t,"error")&&y(t,e)}function d(){t.removeListener("finish",g),A()}function g(){o("onfinish"),t.removeListener("close",d),A()}function A(){o("unpipe"),r.unpipe(t)}return r.on("data",c),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events.error?Array.isArray(t._events.error)?t._events.error.unshift(r):t._events.error=[r,t._events.error]:t.on(e,r)}(t,"error",f),t.once("close",d),t.once("finish",g),t.emit("pipe",r),i.flowing||(o("pipe resume"),r.resume()),t},v.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o0,!1!==i.flowing&&this.resume()):"readable"===t&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,o("on readable",i.length,i.reading),i.length?R(this):i.reading||n.nextTick(T,this))),r},v.prototype.addListener=v.prototype.on,v.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&n.nextTick(S,this),r},v.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||n.nextTick(S,this),e},v.prototype.resume=function(){var t=this._readableState;return t.flowing||(o("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,n.nextTick(Y,t,e))}(this,t)),t.paused=!1,this},v.prototype.pause=function(){return o("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(o("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},v.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;for(var n in t.on("end",(function(){if(o("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on("data",(function(n){o("wrapped data"),r.decoder&&(n=r.decoder.write(n)),r.objectMode&&null==n||(r.objectMode||n&&n.length)&&(e.push(n)||(i=!0,t.pause()))})),t)void 0===this[n]&&"function"==typeof t[n]&&(this[n]=function(e){return function(){return t[e].apply(t,arguments)}}(n));for(var s=0;s{"use strict";t.exports=l;var i=r(4281).q,n=i.ERR_METHOD_NOT_IMPLEMENTED,o=i.ERR_MULTIPLE_CALLBACK,s=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=i.ERR_TRANSFORM_WITH_LENGTH_0,h=r(6753);function u(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(null===i)return this.emit("error",new o);r.writechunk=null,r.writecb=null,null!=e&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";var i,n=r(4155);function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var i=t.entry;for(t.entry=null;i;){var n=i.callback;e.pendingcb--,n(undefined),i=i.next}e.corkedRequestsFree.next=t}(e,t)}}t.exports=v,v.WritableState=I;var s,a={deprecate:r(4927)},h=r(2503),u=r(8764).Buffer,l=r.g.Uint8Array||function(){},c=r(1195),f=r(2457).getHighWaterMark,d=r(4281).q,g=d.ERR_INVALID_ARG_TYPE,A=d.ERR_METHOD_NOT_IMPLEMENTED,M=d.ERR_MULTIPLE_CALLBACK,p=d.ERR_STREAM_CANNOT_PIPE,w=d.ERR_STREAM_DESTROYED,B=d.ERR_STREAM_NULL_VALUES,m=d.ERR_STREAM_WRITE_AFTER_END,E=d.ERR_UNKNOWN_ENCODING,y=c.errorOrDestroy;function b(){}function I(t,e,s){i=i||r(6753),t=t||{},"boolean"!=typeof s&&(s=e instanceof i),this.objectMode=!!t.objectMode,s&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=f(this,t,"writableHighWaterMark",s),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===t.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,i=r.sync,o=r.writecb;if("function"!=typeof o)throw new M;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,i,o){--e.pendingcb,r?(n.nextTick(o,i),n.nextTick(G,t,e),t._writableState.errorEmitted=!0,y(t,i)):(o(i),t._writableState.errorEmitted=!0,y(t,i),G(t,e))}(t,r,i,e,o);else{var s=N(r)||t.destroyed;s||r.corked||r.bufferProcessing||!r.bufferedRequest||D(t,r),i?n.nextTick(Q,t,r,s,o):Q(t,r,s,o)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function v(t){var e=this instanceof(i=i||r(6753));if(!e&&!s.call(v,this))return new v(t);this._writableState=new I(t,this,e),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),h.call(this)}function C(t,e,r,i,n,o,s){e.writelen=i,e.writecb=s,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new w("write")):r?t._writev(n,e.onwrite):t._write(n,o,e.onwrite),e.sync=!1}function Q(t,e,r,i){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,i(),G(t,e)}function D(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var i=e.bufferedRequestCount,n=new Array(i),s=e.corkedRequestsFree;s.entry=r;for(var a=0,h=!0;r;)n[a]=r,r.isBuf||(h=!1),r=r.next,a+=1;n.allBuffers=h,C(t,e,!0,e.length,n,"",s.finish),e.pendingcb++,e.lastBufferedRequest=null,s.next?(e.corkedRequestsFree=s.next,s.next=null):e.corkedRequestsFree=new o(e),e.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,l=r.encoding,c=r.callback;if(C(t,e,!1,e.objectMode?1:u.length,u,l,c),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function N(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function R(t,e){t._final((function(r){e.pendingcb--,r&&y(t,r),e.prefinished=!0,t.emit("prefinish"),G(t,e)}))}function G(t,e){var r=N(e);if(r&&(function(t,e){e.prefinished||e.finalCalled||("function"!=typeof t._final||e.destroyed?(e.prefinished=!0,t.emit("prefinish")):(e.pendingcb++,e.finalCalled=!0,n.nextTick(R,t,e)))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"),e.autoDestroy))){var i=t._readableState;(!i||i.autoDestroy&&i.endEmitted)&&t.destroy()}return r}r(5717)(v,h),I.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(I.prototype,"buffer",{get:a.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(s=Function.prototype[Symbol.hasInstance],Object.defineProperty(v,Symbol.hasInstance,{value:function(t){return!!s.call(this,t)||this===v&&t&&t._writableState instanceof I}})):s=function(t){return t instanceof this},v.prototype.pipe=function(){y(this,new p)},v.prototype.write=function(t,e,r){var i,o=this._writableState,s=!1,a=!o.objectMode&&(i=t,u.isBuffer(i)||i instanceof l);return a&&!u.isBuffer(t)&&(t=function(t){return u.from(t)}(t)),"function"==typeof e&&(r=e,e=null),a?e="buffer":e||(e=o.defaultEncoding),"function"!=typeof r&&(r=b),o.ending?function(t,e){var r=new m;y(t,r),n.nextTick(e,r)}(this,r):(a||function(t,e,r,i){var o;return null===r?o=new B:"string"==typeof r||e.objectMode||(o=new g("chunk",["string","Buffer"],r)),!o||(y(t,o),n.nextTick(i,o),!1)}(this,o,t,r))&&(o.pendingcb++,s=function(t,e,r,i,n,o){if(!r){var s=function(t,e,r){return t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=u.from(e,r)),e}(e,i,n);i!==s&&(r=!0,n="buffer",i=s)}var a=e.objectMode?1:i.length;e.length+=a;var h=e.length-1))throw new E(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(v.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(v.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),v.prototype._write=function(t,e,r){r(new A("_write()"))},v.prototype._writev=null,v.prototype.end=function(t,e,r){var i=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||function(t,e,r){e.ending=!0,G(t,e),r&&(e.finished?n.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,i,r),this},Object.defineProperty(v.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(v.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),v.prototype.destroy=c.destroy,v.prototype._undestroy=c.undestroy,v.prototype._destroy=function(t,e){e(t)}},5850:(t,e,r)=>{"use strict";var i,n=r(4155);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(8610),a=Symbol("lastResolve"),h=Symbol("lastReject"),u=Symbol("error"),l=Symbol("ended"),c=Symbol("lastPromise"),f=Symbol("handlePromise"),d=Symbol("stream");function g(t,e){return{value:t,done:e}}function A(t){var e=t[a];if(null!==e){var r=t[d].read();null!==r&&(t[c]=null,t[a]=null,t[h]=null,e(g(r,!1)))}}function M(t){n.nextTick(A,t)}var p=Object.getPrototypeOf((function(){})),w=Object.setPrototypeOf((o(i={get stream(){return this[d]},next:function(){var t=this,e=this[u];if(null!==e)return Promise.reject(e);if(this[l])return Promise.resolve(g(void 0,!0));if(this[d].destroyed)return new Promise((function(e,r){n.nextTick((function(){t[u]?r(t[u]):e(g(void 0,!0))}))}));var r,i=this[c];if(i)r=new Promise(function(t,e){return function(r,i){t.then((function(){e[l]?r(g(void 0,!0)):e[f](r,i)}),i)}}(i,this));else{var o=this[d].read();if(null!==o)return Promise.resolve(g(o,!1));r=new Promise(this[f])}return this[c]=r,r}},Symbol.asyncIterator,(function(){return this})),o(i,"return",(function(){var t=this;return new Promise((function(e,r){t[d].destroy(null,(function(t){t?r(t):e(g(void 0,!0))}))}))})),i),p);t.exports=function(t){var e,r=Object.create(w,(o(e={},d,{value:t,writable:!0}),o(e,a,{value:null,writable:!0}),o(e,h,{value:null,writable:!0}),o(e,u,{value:null,writable:!0}),o(e,l,{value:t._readableState.endEmitted,writable:!0}),o(e,f,{value:function(t,e){var i=r[d].read();i?(r[c]=null,r[a]=null,r[h]=null,t(g(i,!1))):(r[a]=t,r[h]=e)},writable:!0}),e));return r[c]=null,s(t,(function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[h];return null!==e&&(r[c]=null,r[a]=null,r[h]=null,e(t)),void(r[u]=t)}var i=r[a];null!==i&&(r[c]=null,r[a]=null,r[h]=null,i(g(void 0,!0))),r[l]=!0})),t.on("readable",M.bind(null,r)),r}},7327:(t,e,r)=>{"use strict";function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){for(var r=0;r0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return s.alloc(0);for(var e,r,i,n=s.allocUnsafe(t>>>0),o=this.head,a=0;o;)e=o.data,r=n,i=a,s.prototype.copy.call(e,r,i),a+=o.data.length,o=o.next;return n}},{key:"consume",value:function(t,e){var r;return tn.length?n.length:t;if(o===n.length?i+=n:i+=n.slice(0,t),0==(t-=o)){o===n.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(o));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(t){var e=s.allocUnsafe(t),r=this.head,i=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var n=r.data,o=t>n.length?n.length:t;if(n.copy(e,e.length-t,0,o),0==(t-=o)){o===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(o));break}++i}return this.length-=i,e}},{key:h,value:function(t,e){return a(this,function(t){for(var e=1;e{"use strict";var i=r(4155);function n(t,e){s(t,e),o(t)}function o(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,h=this._writableState&&this._writableState.destroyed;return a||h?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,i.nextTick(s,this,t)):i.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!e&&t?r._writableState?r._writableState.errorEmitted?i.nextTick(o,r):(r._writableState.errorEmitted=!0,i.nextTick(n,r,t)):i.nextTick(n,r,t):e?(i.nextTick(o,r),e(t)):i.nextTick(o,r)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}}},8610:(t,e,r)=>{"use strict";var i=r(4281).q.ERR_STREAM_PREMATURE_CLOSE;function n(){}t.exports=function t(e,r,o){if("function"==typeof r)return t(e,null,r);r||(r={}),o=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{t.exports=function(){throw new Error("Readable.from is not available in the browser")}},9946:(t,e,r)=>{"use strict";var i,n=r(4281).q,o=n.ERR_MISSING_ARGS,s=n.ERR_STREAM_DESTROYED;function a(t){if(t)throw t}function h(t,e,n,o){o=function(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}(o);var a=!1;t.on("close",(function(){a=!0})),void 0===i&&(i=r(8610)),i(t,{readable:e,writable:n},(function(t){if(t)return o(t);a=!0,o()}));var h=!1;return function(e){if(!a&&!h)return h=!0,function(t){return t.setHeader&&"function"==typeof t.abort}(t)?t.abort():"function"==typeof t.destroy?t.destroy():void o(e||new s("pipe"))}}function u(t){t()}function l(t,e){return t.pipe(e)}function c(t){return t.length?"function"!=typeof t[t.length-1]?a:t.pop():a}t.exports=function(){for(var t=arguments.length,e=new Array(t),r=0;r0,(function(t){i||(i=t),t&&s.forEach(u),o||(s.forEach(u),n(i))}))}));return e.reduce(l)}},2457:(t,e,r)=>{"use strict";var i=r(4281).q.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,n){var o=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,n,r);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new i(n?r:"highWaterMark",o);return Math.floor(o)}return t.objectMode?16:16384}}},2503:(t,e,r)=>{t.exports=r(7187).EventEmitter},8473:(t,e,r)=>{(e=t.exports=r(9481)).Stream=e,e.Readable=e,e.Writable=r(4229),e.Duplex=r(6753),e.Transform=r(4605),e.PassThrough=r(2725),e.finished=r(8610),e.pipeline=r(9946)},9785:(t,e,r)=>{"use strict";var i=r(8764).Buffer,n=r(5717),o=r(3349),s=new Array(16),a=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],h=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],u=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],l=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],c=[0,1518500249,1859775393,2400959708,2840853838],f=[1352829926,1548603684,1836072691,2053994217,0];function d(){o.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function g(t,e){return t<>>32-e}function A(t,e,r,i,n,o,s,a){return g(t+(e^r^i)+o+s|0,a)+n|0}function M(t,e,r,i,n,o,s,a){return g(t+(e&r|~e&i)+o+s|0,a)+n|0}function p(t,e,r,i,n,o,s,a){return g(t+((e|~r)^i)+o+s|0,a)+n|0}function w(t,e,r,i,n,o,s,a){return g(t+(e&i|r&~i)+o+s|0,a)+n|0}function B(t,e,r,i,n,o,s,a){return g(t+(e^(r|~i))+o+s|0,a)+n|0}n(d,o),d.prototype._update=function(){for(var t=s,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);for(var r=0|this._a,i=0|this._b,n=0|this._c,o=0|this._d,d=0|this._e,m=0|this._a,E=0|this._b,y=0|this._c,b=0|this._d,I=0|this._e,v=0;v<80;v+=1){var C,Q;v<16?(C=A(r,i,n,o,d,t[a[v]],c[0],u[v]),Q=B(m,E,y,b,I,t[h[v]],f[0],l[v])):v<32?(C=M(r,i,n,o,d,t[a[v]],c[1],u[v]),Q=w(m,E,y,b,I,t[h[v]],f[1],l[v])):v<48?(C=p(r,i,n,o,d,t[a[v]],c[2],u[v]),Q=p(m,E,y,b,I,t[h[v]],f[2],l[v])):v<64?(C=w(r,i,n,o,d,t[a[v]],c[3],u[v]),Q=M(m,E,y,b,I,t[h[v]],f[3],l[v])):(C=B(r,i,n,o,d,t[a[v]],c[4],u[v]),Q=A(m,E,y,b,I,t[h[v]],f[4],l[v])),r=d,d=o,o=g(n,10),n=i,i=C,m=I,I=b,b=g(y,10),y=E,E=Q}var D=this._b+n+b|0;this._b=this._c+o+I|0,this._c=this._d+d+m|0,this._d=this._e+r+E|0,this._e=this._a+i+y|0,this._a=D},d.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=i.alloc?i.alloc(20):new i(20);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t.writeInt32LE(this._e,16),t},t.exports=d},9509:(t,e,r)=>{var i=r(8764),n=i.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function s(t,e,r){return n(t,e,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=i:(o(i,e),e.Buffer=s),s.prototype=Object.create(n.prototype),o(n,s),s.from=function(t,e,r){if("number"==typeof t)throw new TypeError("Argument must not be a number");return n(t,e,r)},s.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=n(t);return void 0!==e?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i},s.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n(t)},s.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},2399:(t,e,r)=>{"use strict";var i,n=r(4155),o=r(8764),s=o.Buffer,a={};for(i in o)o.hasOwnProperty(i)&&"SlowBuffer"!==i&&"Buffer"!==i&&(a[i]=o[i]);var h=a.Buffer={};for(i in s)s.hasOwnProperty(i)&&"allocUnsafe"!==i&&"allocUnsafeSlow"!==i&&(h[i]=s[i]);if(a.Buffer.prototype=s.prototype,h.from&&h.from!==Uint8Array.from||(h.from=function(t,e,r){if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&void 0===t.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return s(t,e,r)}),h.alloc||(h.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var i=s(t);return e&&0!==e.length?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i}),!a.kStringMaxLength)try{a.kStringMaxLength=n.binding("buffer").kStringMaxLength}catch(t){}a.constants||(a.constants={MAX_LENGTH:a.kMaxLength},a.kStringMaxLength&&(a.constants.MAX_STRING_LENGTH=a.kStringMaxLength)),t.exports=a},4189:(t,e,r)=>{var i=r(9509).Buffer;function n(t,e){this._block=i.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}n.prototype.update=function(t,e){"string"==typeof t&&(e=e||"utf8",t=i.from(t,e));for(var r=this._block,n=this._blockSize,o=t.length,s=this._len,a=0;a=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(4294967295&r)>>>0,n=(r-i)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var o=this._hash();return t?o.toString(t):o},n.prototype._update=function(){throw new Error("_update must be implemented by subclass")},t.exports=n},9072:(t,e,r)=>{var i=t.exports=function(t){t=t.toLowerCase();var e=i[t];if(!e)throw new Error(t+" is not supported (we accept pull requests)");return new e};i.sha=r(4448),i.sha1=r(8336),i.sha224=r(8432),i.sha256=r(7499),i.sha384=r(1686),i.sha512=r(7816)},4448:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t){return t<<30|t>>>2}function l(t,e,r,i){return 0===t?e&r|~e&i:2===t?e&r|e&i|r&i:e^r^i}i(h,n),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,c=0;c<16;++c)r[c]=t.readInt32BE(4*c);for(;c<80;++c)r[c]=r[c-3]^r[c-8]^r[c-14]^r[c-16];for(var f=0;f<80;++f){var d=~~(f/20),g=0|((e=i)<<5|e>>>27)+l(d,n,o,a)+h+r[f]+s[d];h=a,a=o,o=u(n),n=i,i=g}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0},h.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=h},8336:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t){return t<<5|t>>>27}function l(t){return t<<30|t>>>2}function c(t,e,r,i){return 0===t?e&r|~e&i:2===t?e&r|e&i|r&i:e^r^i}i(h,n),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,f=0;f<16;++f)r[f]=t.readInt32BE(4*f);for(;f<80;++f)r[f]=(e=r[f-3]^r[f-8]^r[f-14]^r[f-16])<<1|e>>>31;for(var d=0;d<80;++d){var g=~~(d/20),A=u(i)+c(g,n,o,a)+h+r[d]+s[g]|0;h=a,a=o,o=l(n),n=i,i=A}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0},h.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=h},8432:(t,e,r)=>{var i=r(5717),n=r(7499),o=r(4189),s=r(9509).Buffer,a=new Array(64);function h(){this.init(),this._w=a,o.call(this,64,56)}i(h,n),h.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},h.prototype._hash=function(){var t=s.allocUnsafe(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},t.exports=h},7499:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],a=new Array(64);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t,e,r){return r^t&(e^r)}function l(t,e,r){return t&e|r&(t|e)}function c(t){return(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function f(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function d(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}i(h,n),h.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,g=0|this._f,A=0|this._g,M=0|this._h,p=0;p<16;++p)r[p]=t.readInt32BE(4*p);for(;p<64;++p)r[p]=0|(((e=r[p-2])>>>17|e<<15)^(e>>>19|e<<13)^e>>>10)+r[p-7]+d(r[p-15])+r[p-16];for(var w=0;w<64;++w){var B=M+f(h)+u(h,g,A)+s[w]+r[w]|0,m=c(i)+l(i,n,o)|0;M=A,A=g,g=h,h=a+B|0,a=o,o=n,n=i,i=B+m|0}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0,this._f=g+this._f|0,this._g=A+this._g|0,this._h=M+this._h|0},h.prototype._hash=function(){var t=o.allocUnsafe(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},t.exports=h},1686:(t,e,r)=>{var i=r(5717),n=r(7816),o=r(4189),s=r(9509).Buffer,a=new Array(160);function h(){this.init(),this._w=a,o.call(this,128,112)}i(h,n),h.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},h.prototype._hash=function(){var t=s.allocUnsafe(48);function e(e,r,i){t.writeInt32BE(e,i),t.writeInt32BE(r,i+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),t},t.exports=h},7816:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],a=new Array(160);function h(){this.init(),this._w=a,n.call(this,128,112)}function u(t,e,r){return r^t&(e^r)}function l(t,e,r){return t&e|r&(t|e)}function c(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function f(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function d(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function g(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function A(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function M(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function p(t,e){return t>>>0>>0?1:0}i(h,n),h.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},h.prototype._update=function(t){for(var e=this._w,r=0|this._ah,i=0|this._bh,n=0|this._ch,o=0|this._dh,a=0|this._eh,h=0|this._fh,w=0|this._gh,B=0|this._hh,m=0|this._al,E=0|this._bl,y=0|this._cl,b=0|this._dl,I=0|this._el,v=0|this._fl,C=0|this._gl,Q=0|this._hl,D=0;D<32;D+=2)e[D]=t.readInt32BE(4*D),e[D+1]=t.readInt32BE(4*D+4);for(;D<160;D+=2){var N=e[D-30],R=e[D-30+1],G=d(N,R),U=g(R,N),V=A(N=e[D-4],R=e[D-4+1]),S=M(R,N),T=e[D-14],Y=e[D-14+1],k=e[D-32],F=e[D-32+1],L=U+Y|0,j=G+T+p(L,U)|0;j=(j=j+V+p(L=L+S|0,S)|0)+k+p(L=L+F|0,F)|0,e[D]=j,e[D+1]=L}for(var Z=0;Z<160;Z+=2){j=e[Z],L=e[Z+1];var x=l(r,i,n),z=l(m,E,y),O=c(r,m),H=c(m,r),_=f(a,I),W=f(I,a),J=s[Z],X=s[Z+1],P=u(a,h,w),K=u(I,v,C),q=Q+W|0,$=B+_+p(q,Q)|0;$=($=($=$+P+p(q=q+K|0,K)|0)+J+p(q=q+X|0,X)|0)+j+p(q=q+L|0,L)|0;var tt=H+z|0,et=O+x+p(tt,H)|0;B=w,Q=C,w=h,C=v,h=a,v=I,a=o+$+p(I=b+q|0,b)|0,o=n,b=y,n=i,y=E,i=r,E=m,r=$+et+p(m=q+tt|0,q)|0}this._al=this._al+m|0,this._bl=this._bl+E|0,this._cl=this._cl+y|0,this._dl=this._dl+b|0,this._el=this._el+I|0,this._fl=this._fl+v|0,this._gl=this._gl+C|0,this._hl=this._hl+Q|0,this._ah=this._ah+r+p(this._al,m)|0,this._bh=this._bh+i+p(this._bl,E)|0,this._ch=this._ch+n+p(this._cl,y)|0,this._dh=this._dh+o+p(this._dl,b)|0,this._eh=this._eh+a+p(this._el,I)|0,this._fh=this._fh+h+p(this._fl,v)|0,this._gh=this._gh+w+p(this._gl,C)|0,this._hh=this._hh+B+p(this._hl,Q)|0},h.prototype._hash=function(){var t=o.allocUnsafe(64);function e(e,r,i){t.writeInt32BE(e,i),t.writeInt32BE(r,i+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),e(this._gh,this._gl,48),e(this._hh,this._hl,56),t},t.exports=h},2830:(t,e,r)=>{t.exports=n;var i=r(7187).EventEmitter;function n(){i.call(this)}r(5717)(n,i),n.Readable=r(9481),n.Writable=r(4229),n.Duplex=r(6753),n.Transform=r(4605),n.PassThrough=r(2725),n.finished=r(8610),n.pipeline=r(9946),n.Stream=n,n.prototype.pipe=function(t,e){var r=this;function n(e){t.writable&&!1===t.write(e)&&r.pause&&r.pause()}function o(){r.readable&&r.resume&&r.resume()}r.on("data",n),t.on("drain",o),t._isStdio||e&&!1===e.end||(r.on("end",a),r.on("close",h));var s=!1;function a(){s||(s=!0,t.end())}function h(){s||(s=!0,"function"==typeof t.destroy&&t.destroy())}function u(t){if(l(),0===i.listenerCount(this,"error"))throw t}function l(){r.removeListener("data",n),t.removeListener("drain",o),r.removeListener("end",a),r.removeListener("close",h),r.removeListener("error",u),t.removeListener("error",u),r.removeListener("end",l),r.removeListener("close",l),t.removeListener("close",l)}return r.on("error",u),t.on("error",u),r.on("end",l),r.on("close",l),t.on("close",l),t.emit("pipe",r),t}},2553:(t,e,r)=>{"use strict";var i=r(9509).Buffer,n=i.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(i.isEncoding===n||!n(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=h,this.end=u,e=4;break;case"utf8":this.fillLast=a,e=4;break;case"base64":this.text=l,this.end=c,e=3;break;default:return this.write=f,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(e)}function s(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function h(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function u(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function l(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function c(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function f(t){return t.toString(this.encoding)}function d(t){return t&&t.length?this.write(t):""}e.s=o,o.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(2===n?n=0:t.lastNeed=n-3),n):0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},8677:(t,e,r)=>{"use strict";var i=r(5581),n=r(8469),o=r.n(n),s=r(2635),a=r.n(s);const h=JSON.parse('{"$":[{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = IBSALUT-CVD-SELLO, serialNumber = Q0719003F, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES-Q0719003F, O = SERVICIO DE SALUD DE LAS ISLAS BALEARES, C = ES","notbefore":1621850400000,"notafter":1684922400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbxlQ/UTz0AxZWF+xQs+w+xveq5Ec\\nhe9zf16LnDFYY/K8pZ6l6sb2KlXw8Z/kwopzzbv5LCX1VxLsGO9Rs9OzLg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = Servicio Extreme\\\\C3\\\\B1o de Salud, serialNumber = Q0600413I, OU = SELLO ELECTRONICO, OU = SSII, 2.5.4.97 = VATES-Q0600413I, O = Servicio Extreme\\\\C3\\\\B1o de Salud, C = ES","notbefore":1622090580000,"notafter":1685162580000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEManlPIcO9J8UBpHCAbku/KkAfiBr\\nGLIre1buTIzhhoncL0YIO+DQ9uPs6UfzPKXzQq791V5I5avhmpQ6j2zFsQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = GERENCIA REGIONAL DE SALUD CASTILLA Y LE\\\\C3\\\\93N (SACYL), serialNumber = Q4700608E, OU = SELLO ELECTRONICO, OU = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON, 2.5.4.97 = VATES- Q4700608E, O = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON, C = ES","notbefore":1619782200000,"notafter":1682854200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1Tqtnz\\nC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHXDCCBwKgAwIBAgIJDDdEkclPCGsoMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNDMwMTMzMDAwWhcNMjMwNDMwMTMzMDAwWjCCAQYxPDA6BgNVBAMMM0dFUkVOQ0lBIFJFR0lPTkFMIERFIFNBTFVEIENBU1RJTExBIFkgTEXDk04gKFNBQ1lMKTESMBAGA1UEBRMJUTQ3MDA2MDhFMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzE2MDQGA1UECwwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRkwFwYDVQRhDBBWQVRFUy0gUTQ3MDA2MDhFMTYwNAYDVQQKDC1HRVJFTkNJQSBSRUdJT05BTCBERSBTQUxVRCBERSBDQVNUSUxMQSBZIExFT04xCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1TqtnzC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfKOCBKowggSmMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBmgYDVR0RBIGSMIGPpIGMMIGJMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE8MDoGCWCFVAEDBQYCAgwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRgwFgYJYIVUAQMFBgIDDAlRNDcwMDYwOEUwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBR0F5hsHIJ6Y7MLOV4IRJYpbxoKgDAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDSAAwRQIhANiNJAq66hiD/nftp0jcuZQJtkHq0LiGFxpWmKCnCClcAiAVLvoNwAKGUOPPJ88g/UPTytviavcuFfaN9F5Iw0fVhg=="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = Gobierno de La Rioja, serialNumber = S2633001I, OU = SELLO ELECTRONICO, OU = \\"DIRECCI\\\\C3\\\\93N GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS\\", 2.5.4.97 = VATES-S2633001I, O = \\"DIRECCION GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS\\", C = ES","notbefore":1621580100000,"notafter":1684652100000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqF22rG5bDXpWn/tKy358h2KwYyaS\\nKzCZV0HJptUQq7sWxfeDE86HSoebBrpOvpjhZX2/ZkTF/YRlkh0ztnkclw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHVjCCBv2gAwIBAgIJSC0ZeCXmMXCnMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTIxMDg1NTAwWhcNMjMwNTIxMDg1NTAwWjCB+TEdMBsGA1UEAwwUR29iaWVybm8gZGUgTGEgUmlvamExEjAQBgNVBAUTCVMyNjMzMDAxSTEaMBgGA1UECwwRU0VMTE8gRUxFQ1RST05JQ08xQDA+BgNVBAsMN0RJUkVDQ0nDk04gR0VORVJBTCBERSBTQUxVRCBQVUJMSUNBLCBDT05TVU1PIFkgQ1VJREFET1MxGDAWBgNVBGEMD1ZBVEVTLVMyNjMzMDAxSTE/MD0GA1UECgw2RElSRUNDSU9OIEdFTkVSQUwgREUgU0FMVUQgUFVCTElDQSwgQ09OU1VNTyBZIENVSURBRE9TMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKhdtqxuWw16Vp/7Sst+fIdisGMmkiswmVdByabVEKu7FsX3gxPOh0qHmwa6Tr6Y4WV9v2ZExf2EZZIdM7Z5HJejggSzMIIErzAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgaMGA1UdEQSBmzCBmKSBlTCBkjEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xRTBDBglghVQBAwUGAgIMNkRJUkVDQ0lPTiBHRU5FUkFMIERFIFNBTFVEIFBVQkxJQ0EsIENPTlNVTU8gWSBDVUlEQURPUzEYMBYGCWCFVAEDBQYCAwwJUzI2MzMwMDFJMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQU7oukZ17hZNqgXn+9zb1nFVmNAdYwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0cAMEQCIFAVrmKucmULegrWgBKqAHeiiJ6VmRGXBVo5LrvtuXwnAiB0+buKOXmu4gpE5vu2Du0seQ5DdaCsLOS99ZTz6Ea0yw=="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = Secretar\\\\C3\\\\ADa General del Servicio Canario de la Salud, serialNumber = Q8555011I, OU = SELLO ELECTRONICO, OU = Secretar\\\\C3\\\\ADa General del Servicio Canario de la Salud, 2.5.4.97 = VATES-Q8555011I, O = Servicio Canario de la Salud, C = ES","notbefore":1619781000000,"notafter":1682853000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEblis8RR4Oc4Xqq4RZdhrJ0DnkAvK\\n4vY8AamWbFg9T7OG17La8TJYTq3FqJJd5KttTP71GojxRF0REKpF+uwAtw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = SELLO ELECTRONICO DE LA CIUDAD AUT\\\\C3\\\\93NOMA DE MELILLA, serialNumber = S7900010E, OU = SELLO ELECTRONICO, OU = DIRECCI\\\\C3\\\\93N GENERAL DE LA SOCIEDAD DE LA INFORMACI\\\\C3\\\\93N, 2.5.4.97 = VATES-S7900010E, O = CIUDAD AUT\\\\C3\\\\93NOMA DE MELILLA, C = ES","notbefore":1622205900000,"notafter":1685277900000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEe1XUTCn6DkdbSOKlyzczFWQfDvtP\\n31uGdjzVCzAkuxorNeEX3F827gnycL/mTzRm8lfDxz64lEUcTww0I7unwA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = SELLO SAS PARA CERTIFICADO COVID DE LA UE, serialNumber = Q9150013B, OU = SELLO ELECTRONICO, OU = SERVICIO ANDALUZ DE SALUD, 2.5.4.97 = VATES-Q9150013B, O = SERVICIO ANDALUZ DE SALUD, C = ES","notbefore":1621592100000,"notafter":1684664100000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt3OX+XF/LZlHff6ZWiHRqQu4WBrg\\nzNZYz4wFJkwkBmk/z0ROsLJ4FlwOLPs2cUEIIV0Pu1cmnngva6+EzQpbAA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = ES, O = IZENPE S.A., OU = Peer, CN = iCA Izenpe\\nValidity","subject":"C = ES, O = EUSKO JAURLARITZA - GOBIERNO VASCO, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES-S4833001C, CN = DIRECCI\\\\C3\\\\93N DE SALUD P\\\\C3\\\\9ABLICA Y ADICCIONES","notbefore":1622201292000,"notafter":1716895692000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8PO\\npQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEEjCCA7mgAwIBAgIQA8IozyvkMlFgsO/sU+TnrzAKBggqhkjOPQQDAjBHMQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xDTALBgNVBAsMBFBlZXIxEzARBgNVBAMMCmlDQSBJemVucGUwHhcNMjEwNTI4MTMyODEyWhcNMjQwNTI4MTMyODEyWjCBpDELMAkGA1UEBhMCRVMxKzApBgNVBAoMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08xGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMRgwFgYDVQRhDA9WQVRFUy1TNDgzMzAwMUMxMjAwBgNVBAMMKURJUkVDQ0nDk04gREUgU0FMVUQgUMOaQkxJQ0EgWSBBRElDQ0lPTkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8POpQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1aOCAicwggIjMFoGA1UdEQRTMFGkTzBNMRgwFgYJKwYBBAHzOQAGDAlTNDgzMzAwMUMxMTAvBgkrBgEEAfM5AAUMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08wDgYDVR0PAQH/BAQDAgXgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQWBBRJ5qXgwbq6JnfYaHEo99QEkecqADAfBgNVHSMEGDAWgBRzFw8OFM+MtdUG96YEM8MZfTG+7TCCAR8GA1UdIASCARYwggESMIIBDgYKKwYBBAHzOYFIATCB/zAlBggrBgEFBQcCARYZaHR0cDovL3d3dy5pemVucGUuZXVzL2NwczCB1QYIKwYBBQUHAgIwgcgMgcVLb250c3VsdGEgd3d3Lml6ZW5wZS5ldXMtZW4gYmFsZGludHphayBldGEga29uZGl6aW9hayB6aXVydGFnaXJpYW4gZmlkYXR1IGVkbyBlcmFiaWxpIGF1cnJldGlrIC0gQ29uc3VsdGUgZW4gd3d3Lml6ZW5wZS5ldXMgbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGFudGVzIGRlIHV0aWxpemFyIG8gY29uZmlhciBlbiBlbCBjZXJ0aWZpY2FkbzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsZGVzLml6ZW5wZS5jb20vY2dpLWJpbi9jcmxiY2l6ZW5wZTAKBggqhkjOPQQDAgNHADBEAiBtHbVrpnsLMptmRI5QL4JhOG86pqSBVQXiOUMsIkpcPgIgY/npsrzRMcUHAh7NwvqhnbgWvv1VwbRy3bxD6+o3RGw="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = Servicio C\\\\C3\\\\A1ntabro de Salud, serialNumber = Q3900738J, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES-Q3900738J, O = Servicio C\\\\C3\\\\A1ntabro de Salud, C = ES","notbefore":1622113080000,"notafter":1685185080000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEj/wPWM6e8JDYxW9673ivEvwlu2JA\\nZpsNBrr2sQW5ppku6rcqJUKx7Kbvf2Zx1AJeIS7+PQq2iNcugfD+RC/VfQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = SESCAM Certificado Digital COVID UE, serialNumber = Q4500146H, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES- Q4500146H, O = Servicio de Salud de Castilla-La Mancha, C = ES","notbefore":1621939200000,"notafter":1685011200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDvCuOC6NlQCaL18+CEn4sbjC3NNn\\nN4jBAmZo6lrGXbjIfAQ3YWmXc3gqLnSFq84EEV6+2PFy9yyLgq4JmFAfDA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = Inspecci\\\\C3\\\\B3n General de Sanidad de la Defensa, serialNumber = S2830001J, OU = SELLO ELECTRONICO, OU = Inspecci\\\\C3\\\\B3n General de Sanidad de la Defensa, 2.5.4.97 = VATES-S2830001J, O = Ministerio de Defensa, C = ES","notbefore":1622108340000,"notafter":1685180340000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE62orr7HL0POyQCqmgbbEqfcbcdcT\\n4vyfQZEPYfxk69ZRv9T8Iy6nWAyEjF0VxvknfCg/x9uig5HFWrpedW2Epw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = Consejer\\\\C3\\\\ADa de Salud del Principado de Asturias, serialNumber = S3333001J, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES- S3333001J, O = Principado de Asturias, C = ES","notbefore":1621852800000,"notafter":1684924800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUvljql1ZGpwzC92AbO4J751kqnIE\\nXaCI8hYUIEArhReqJcx5qClAGSkDFcbrTPV9WuUtmDQ/NpoV+EejqBmlyg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = Sello Electr\\\\C3\\\\B3nico del Servicio Navarro de Salud-Osasunbidea, serialNumber = Q3150004D, OU = SELLO ELECTRONICO, OU = Servicio Navarro de Salud-Osasunbidea, 2.5.4.97 = VATES-Q3150004D, O = Servicio Navarro de Salud-Osasunbidea, C = ES","notbefore":1620977700000,"notafter":1684049700000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4\\nB/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgHw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHTDCCBvGgAwIBAgIJfoL0UPrrsbuIMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTE0MDkzNTAwWhcNMjMwNTE0MDkzNTAwWjCB/jFFMEMGA1UEAww8U2VsbG8gRWxlY3Ryw7NuaWNvIGRlbCBTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRIwEAYDVQQFEwlRMzE1MDAwNEQxGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMS4wLAYDVQQLDCVTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRgwFgYDVQRhDA9WQVRFUy1RMzE1MDAwNEQxLjAsBgNVBAoMJVNlcnZpY2lvIE5hdmFycm8gZGUgU2FsdWQtT3Nhc3VuYmlkZWExCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4B/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgH6OCBKIwggSeMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBkgYDVR0RBIGKMIGHpIGEMIGBMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE0MDIGCWCFVAEDBQYCAgwlU2VydmljaW8gTmF2YXJybyBkZSBTYWx1ZC1Pc2FzdW5iaWRlYTEYMBYGCWCFVAEDBQYCAwwJUTMxNTAwMDREMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQUDoSdwvhJkRliLuZyPLYo9xeX1vcwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0kAMEYCIQC5rwYPPmeafyGrOsjX/SeqgFtgrqURrFrnbwC7QvM6MgIhAN4Pl5n+ACj+56aPhHsHRo4xS2ZeXShYFQQpxUCM9R17"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = CEUTA, serialNumber = S6100007A, OU = SELLO ELECTRONICO, OU = CIUDAD AUTONOMA DE CEUTA, 2.5.4.97 = VATES-S6100007A, O = CIUDAD AUTONOMA DE CEUTA, C = ES","notbefore":1620977400000,"notafter":1684049400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgOuoVfBtfKWYpcffhNWfiCf4g4oZ\\nBdaPcdrn0HBtkQ/9xYp6FlfFAP1Ze29LaM1emnFxjyQNWV3KeNmoc/vFYA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = GENERALITAT VALENCIANA, serialNumber = S4611001A, OU = SELLO ELECTRONICO, OU = CONSELLERIA DE SANITAT UNIVERSAL I SALUT P\\\\C3\\\\9ABLICA, 2.5.4.97 = VATES-S4611001A, O = GENERALITAT VALENCIANA, C = ES","notbefore":1622192100000,"notafter":1685264100000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV61Sl3v6NzBqyCbqSb8/fBodGle+\\nb3RJ7Utk+uExDwbOxzS//2GUTRFKW43ppskyr3G60/xeJCaeN7S9Cvssdg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = CERT-GENCAT-1S-21, serialNumber = S0811001G, OU = SELLO ELECTRONICO, OU = Departament de Salut, 2.5.4.97 = VATES-S0811001G, O = Departament de Salut de la Generalitat de Catalunya, C = ES","notbefore":1622030400000,"notafter":1685102400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZjrINN6u+ZGfRqaYqgqL+yZZCDl\\nu+PKPCkVS/ysPosrontwlhznbPsq5W+d2NyxXeaUAT+lTyRKy1NAxOFqAA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = DIRECCI\\\\C3\\\\93N GENERAL DE SALUD P\\\\C3\\\\9ABLICA Y ADICCIONES, serialNumber = S3011001l, OU = SELLO ELECTRONICO, OU = DIRECCION GENERAL INFORMATICA CORPORATIVA, 2.5.4.97 = VATES- S3011001l, O = COMUNIDAD AUTONOMA DE LA REGION DE MURCIA, C = ES","notbefore":1621860600000,"notafter":1684932600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEli8eKthiom9EydKvhg7LHXj/f88/\\nZeNUpfEFm6kIAr3K1NCRSv1grJnNiBc9lvggtAjqFHQSGTovtRcGHcVuRA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHTDCCBvOgAwIBAgIJA+zla2386Iy/MAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI0MTQ1MDAwWhcNMjMwNTI0MTQ1MDAwWjCB/DE6MDgGA1UEAwwxRElSRUNDScOTTiBHRU5FUkFMIERFIFNBTFVEIFDDmkJMSUNBIFkgQURJQ0NJT05FUzESMBAGA1UEBRMJUzMwMTEwMDFsMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzEyMDAGA1UECwwpRElSRUNDSU9OIEdFTkVSQUwgSU5GT1JNQVRJQ0EgQ09SUE9SQVRJVkExGTAXBgNVBGEMEFZBVEVTLSBTMzAxMTAwMWwxMjAwBgNVBAoMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJYvHirYYqJvRMnSr4YOyx14/3/PP2XjVKXxBZupCAK9ytTQkUr9YKyZzYgXPZb4ILQI6hR0Ehk6L7UXBh3FbkSjggSmMIIEojAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgZYGA1UdEQSBjjCBi6SBiDCBhTEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xODA2BglghVQBAwUGAgIMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMRgwFgYJYIVUAQMFBgIDDAlTMzAxMTAwMWwwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBQBzqvKX8AY+IVJiHykPj5www64JTAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDRwAwRAIgb52hsDkWShWodg6mznBV4Ut/vr0C2rgRLyV0rzHWq3ECID/elZUrZyPy0V6CdrlZxaCUIQB6jsFkAl2/wFTHC5pU"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19, serialNumber = S2827001E, OU = SELLO ELECTRONICO, OU = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19, 2.5.4.97 = VATES-S2827001E, O = MINISTERIO DE SANIDAD, C = ES","notbefore":991548900000,"notafter":991548900000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3KVI7Sy+id+bprJ8Eh9AHtW+1qeC\\n4qoHH1oK7HN87UKH9KxQix0jq0RySb2c+5CN+kbAfsYEvULfHToz2FWzWQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = DEPARTAMENTO DE SANIDAD DEL GOBIERNO DE ARAGON, serialNumber = S5011001D, OU = SELLO ELECTRONICO, OU = DEPARTAMENTO DE SANIDAD, 2.5.4.97 = VATES-S5011001D, O = GOBIERNO DE ARAGON, C = ES","notbefore":989226900000,"notafter":989226900000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDOg7lpxitz9+ytOAKFXxS7F4qc9I\\nfKWrj388ETiCbLEQuoYeWEp+4wXPLCF7RRpg6Zxt9iGG93ZAwxl8g05Oag==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = FIRMA CERTIFICADO COVID DIGITAL UE 1, serialNumber = Q2801221I, OU = SELLO ELECTRONICO, OU = DG SISTEMAS DE INFORMACION Y EQUIPAMIENTOS SANITARIOS, 2.5.4.97 = VATES-Q2801221I, O = SERVICIO MADRILE\\\\C3\\\\91O DE SALUD, C = ES","notbefore":1622102400000,"notafter":1685174400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhe+kvml2tx/+/wipHR5ttSw1PdmW\\nGLpoEqzNiel2mWsZovfSBR+Jzri7NpH8s8RBSnEDc0kQTl2dSiECy9D45Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = ConselleriadeSanidade.XuntadeGalicia, serialNumber = S1511001H, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES-S1511001H, O = Conseller\\\\C3\\\\ADa de Sanidad, C = ES","notbefore":1622205900000,"notafter":1685277900000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeC6+zmnjgdAUmYG4kIPJsMwSFSJc\\nlYoKuHKcIQ5PpX4xKyM36Gp2fkKvARbyJYjduU8JzO9nrSILVxjuKRapFw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 3","notbefore":992073064000,"notafter":992073064000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5EtYbOu+RuUcFAu1NN1rqsuKqNzp\\nl0Y6bgg9wNKcmVLzfBO81jH2dcupHtKlp7My5KGjCyBAKvjJUSE/fnDd5g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIKbUPDyxggQcwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTEwNFoXDTIzMDYwOTA5NTEwNFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABORLWGzrvkblHBQLtTTda6rLiqjc6ZdGOm4IPcDSnJlS83wTvNYx9nXLqR7SpaezMuShowsgQCr4yVEhP35w3eajggESMIIBDjAdBgNVHQ4EFgQUQiz2ueCR4OeY2/dQbISIOzQRh20wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxMDRagQ8yMDIxMTIwNjA5NTEwNFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBADVwHF/3fcmmkQgU+HLb1LGhj4RvsR9NUkrkYHyWROt37d5D3EyqNjNIpWebfDXLnQNpEQDd/2HyaEW70citcb4ad/5RXD/hr3BjVsqnbRHOctv1+Twy9XfDM7OcDgj2tE7slsZ2dKAPEg09dq7MoClXDuTcIkBqEHuZ+dzA8PYDvITLjHtJqMKBj335tRU+Zl8WT0GGXzQw7/lRD4yE8BndK7C6MO7xC4tIUGgHP3P+kImRiPCq+pQbt78XGJBzEgCpBbe8HuXgja5yTk2AGLdCH5GxbSQMjGA4icefROoPO86uNwCekAKGFd46Li5/+JfIi9nJCd2x7PsUzAr15fzwcTks0Hk+7dZqj6gXuJpZFwoCzvY4Z0O1B99L1SCwZNXsCEevqQ5an3LUWUWE+7JhkkGtqeddockt5M8Q7omw8O4gvV9W9Y4Cbvshxy9RroTSU135NBMm3Iu0s2FdsKj3JMaE/xulRCJ4bxaEcKTdrjGaJSPT5ROgPWQj0yD7yw5j0lRGzph3Pu1o5q6J4v+w3cfWVu9Ka1H4wpQY3ip4emVaXpstg0NNPMH+JERLFy8Bg94J0uOCKAVAPMjpr9DW7/r1Ooey4a7pfdGqCb2QxUkuLr1YOQcairnvOpjjEfHbvWmKV4EGpENpI21qY54URKtoYse7tnkVtz9RrsyY"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 2","notbefore":992073005000,"notafter":992073005000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvIs/H8NhtE23q5tR84V9WwbbdGDc\\n3hh7mjrXom4PRzjGRuSvfC9OIFLtRzOohsdnbcE62FWN+Fz09ugJcaqhtA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIX7IVIHG/M4swQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTAwNVoXDTIzMDYwOTA5NTAwNVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLyLPx/DYbRNt6ubUfOFfVsG23Rg3N4Ye5o616JuD0c4xkbkr3wvTiBS7UczqIbHZ23BOthVjfhc9PboCXGqobSjggESMIIBDjAdBgNVHQ4EFgQUvoCTP+xA0/1nmxS2GKtTaxp0TYAwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUwMDVagQ8yMDIxMTIwNjA5NTAwNVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAKT1bQpoLJpJbb3qAbYcQkZKPNQa5aisXFiLlmIBWHzPYI67BWJu/CjDOeHUPgzpcgiDe33t5ZacnccTwMGZYXnZQ8jNwOxAi//7NJkJHEtrMcYQ9pqSeKqnNwTwMetQm1u5rHjAtjMSZdyWMMjDIcX5Z2lXiPgoO548fYKrwbeCloFDk6qWrk/Jc6NKyNgVEhVvkwHLfDloS7Boln2I4eT4VfTAXt50/zEsu4KHIDpDTDMFNg5KTYugOFHOQise6z5oYmnwZB95OKfFGR0xeDR8JN+Kn2TcdiTpin87jhtyHzCScFLlWbHum9y/OKKNgK/2hWRrikyU9zo/OmHwStftOkggBSeDVtwRkCAKZpK9IXWWRNCj/gkRnVDDeg3ehQ9qRykU+BkUiMi2LhLDVUITCZhmRyS94xHP5PoCY5tUanCNxkgjYwvDHMU8hIPL8rsOdHxc7tK6jaavBP7ZbDG1W3bEcYU1oaKWvbYyPBhJPnAVDVH2SLU68gdEcdjMtiOPaH1ImERhQ2cF9KzCsU/svCoOJrEd2lQZ6xFodkicg0XN4sdXKyypdPic+Cvai/033DdiS1i7HH59hO0Z9l6I2gsJHULDMeSnJxTB9Tves79iYSRdBocm+LHfT8uvwRwn6+SmTD7/ttzHm/H/m/k1hsLPZDNMdn+kMuXCiEnn"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 4","notbefore":992073114000,"notafter":992073114000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHTBJY0Z+T5I8EmqQmrbZAr8equIc\\nKKE+YriIGw/AKJyw0ZAj1Dd2MRTM3+AEiNARxXIF08a2rhUvFCyyHCJ2DA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIbOmJZDQoP+owQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTE1NFoXDTIzMDYwOTA5NTE1NFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB0wSWNGfk+SPBJqkJq22QK/HqriHCihPmK4iBsPwCicsNGQI9Q3djEUzN/gBIjQEcVyBdPGtq4VLxQsshwidgyjggESMIIBDjAdBgNVHQ4EFgQUhHOTxbELqlA8J5QtocLrpUvgC48wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxNTRagQ8yMDIxMTIwNjA5NTE1NFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAEa+gpgHss7+IdPOrr4bzlMSavqHqybtRzSH2hVBrbZ9Ov3vVDmIksbUNM3nlVPL5gFAReHEJmXhHxwvoxyCO/NXOS+itmGkYRPHRH57xTa9XIGcwWmAnbwxVy41B/NnOMeAB2TouWWfX/ZYzKiNyFJ7JEIdaQcZ/2+55c5mlEVFMdpeDR2vmB+cgrz6j0iFxoJ1/QQeWkjfD8nr/Auy7zfm0MgQL5wZEI08A9LAKZjFbawHcJx2RWuwWFc8dLBTMxYM0ptrXYNH/dDRpuNXMuqh68Os/aei5kbolHM24bSBycvInYBYyVRTi2ABDdRpItl9BEGqPSkJoYrrB2hZ3roNNugANF1rm1Fx7hlK80QiMoELoM1RyIovlrymQb45USV2+OuEtvZ6BJ85l7q47tbwr0xxHqIL9n82t4My4M0U7cIu5SPv6qv+ubLGnbqJvgoT9Tf3QGrH5j3XDyU0V4YfvfQhcOBLNlduuA2cihdAh+M6MLRbtG9svKsrA4k0PtyB9UCtqufsfDhkjM4LRGjmylclgmDtNH6DixcFxYlK1+fikZSIPnw476WgS8/2biw2m4gAsxEZ5/vg9L/u11i853AOSsh/sFxjp62K3O5mFAvdmLAJmrofOUghoNcAzJdDbSWtHzqQYJ+BWIjoIDiJh0m8Sl5/hVv6Bh6Xtrp/"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 1","notbefore":992072935000,"notafter":992072935000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEExXQauou3f3g77qOsZ0rSPFjoTDi\\nKQDhG+Bpf34YyoeFkYMBML890KaqmZL4uezBc8xxg1f170qcZWHILjp4qw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIM5IkTBngr+AwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NDg1NVoXDTIzMDYwOTA5NDg1NVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBMV0GrqLt394O+6jrGdK0jxY6Ew4ikA4RvgaX9+GMqHhZGDATC/PdCmqpmS+LnswXPMcYNX9e9KnGVhyC46eKujggESMIIBDjAdBgNVHQ4EFgQUX4tTu4HFKg7kh7/7FCeP8+7D5CwwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTQ4NTVagQ8yMDIxMTIwNjA5NDg1NVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAE5HQ1OIeJz3gkH2Wrokpb2nLC/ytoe5t9zkK2LY+UmVvTP59uG1dyIWV5pv2hwYnCiSOOG82YJRfdsts3i/0NHlESPChvyoG/E97tvdjB8doTj4gCCTx1JmRpp2vOQZuQsOB5QeTY7nL3yCHZF7yniFDPQpk2WpE4tY4gxxt08hlhRs4C2iZ8jiN2DcMqJwippu0OdAca9mRFPnVs/tGjBT72QrEnPPXWu1pz1xdIW6sDbC2OhCkAMPC4qehWh00DuhxeYgkJF6cg5NOLT2iiAeEv0/DGdYsy1lM5JxE4BmWaZ9mRuvNvzf3lC6DVFHTr3R7/88RblxfWA/TH7E2TQT40JwhQ0YyhqWYC+W0T2cTW2NICedtIpAv8oECRentxzvceovuQw/BxacZUbs8WEJFW+WKGJvAeyaFrkLrze3U5UH3kurD3tG97E77wbFu31iivDmftrvWv/OSDFWpFiPkEP0pe46eY+x/KGiBZNYj6sxeC21W7CxAftQdgoOAPU91j9otI/0n/7XLV71Y1fnt02nZwDOu7ajLHebpjUtnnDsHojOAr3NQKEy836Xg2E3JtGCWWBKnkvgj1/swYBLaZxE9FEGo3nTst9TpwS8GpgXFoQEoTNSV5UBVCwT2djcZCEmhG4GPCrqeoh1c6bfTRbtORXv2HZqYgv7w6eo"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571146, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533207000,"notafter":1687950807000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUdPPsk9xzY1vM1zdjgvHDsRCST55\\nY9SJBJUXI5uqGb6ckpT7xQFGbm+WGQuFJ9E0w3Zyyqb9P/bsMJQmJkrpkg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQdTXdvf8iMImsVqDf+ITQFDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MjQxMzEzMjdaFw0yMzA2MjgxMzEzMjdaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY1NzExNDYxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABFHTz7JPcc2NbzNc3Y4Lxw7EQkk+eWPUiQSVFyObqhm+nJKU+8UBRm5vlhkLhSfRNMN2csqm/T/27DCUJiZK6ZKjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IYyaHR0cDovL2NybC5kLXRydXN0Lm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmyGO2h0dHA6Ly9jZG4uZC10cnVzdC1jbG91ZGNybC5uZXQvY3JsL2QtdHJ1c3RfY2FfMi0yXzIwMTkuY3JshmlsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwHQYDVR0OBBYEFAwpCqrkWyNc+g0dAFu9ECa7XLuXMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAS1w/nisT88DyrhaFhhTaiD24FVo5DBF/AptKDBnVTDCNEC/ZzsaiiCYNVgRKOodklxL3XEop1f1T594+MzIBesqDvL4BwsAFICHAO3H6XjB6QAWgFrs/cMAWMpwZLNSvctBsgKU0Dat1PCYkRcxTTv8o3VF040Lfg+gmxxn6VkEagkgOzfRJF5kb5n9Hv/Fg0k/q6oGp9prLB5NFzS+qWJohFPH5+/GU8J9Eun29CUIp8IYf5JvOgiUNZzI6MPeZyN6wuhOCK9yj/kM1yyl9s8svuIQrrdwNObG1/7EBXbkno1fhgk4yPF6Vc6o7flKmxLWLlQyGLQ4lYGNcNmf1MNd46mwWJ9LaR1fkh5iei5ih+wX67I8QPmQxqNXbvLWBaKkHqLe98fDtWfChUQgdVAft+BcEywcrPAEUfEHcFn4oQx7/+KpfsqEVXQhqPMOPMGQqr26Ku2wMnFNsqyaBHaFfM6vSJxdEUCO6PcDXW0VkZBdmMjm89NXY2R4B9HA0ZG8OpESwDgu79g1mP+4OKXKKlxM0ASQC8lzIZVZDySS+FAulNFT80gBWFSt4hjY9N+u7mXpetiFCN+eX806KCONj/WVfyj1hxMMNLBWMCX6tLFN2JBp/feBILxHwNEHOX1cwDJ25LKpUFWXIdw4G4rf/4Gx3lDBO7xLFM9ufOjo="},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413462, ST = Berlin\\nSubject Public Key Info:","notbefore":991900547000,"notafter":1686470147000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqD56CIMWer5HDRhCpUrq5lZ6F8Wr\\nFPy/IDwjgb44oE2BELk1xBbjXvz7kSPpf3jp48wPI7WWLcx/V5K1A6obNA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382898, ST = Berlin\\nSubject Public Key Info:","notbefore":991557982000,"notafter":991903582000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtGEETBc2arnjxxBWO3aDW+rwFgwm\\nhqPbxhaUuOEC6kkd3GPhmXPFYKtmFM4IQDj1Cfqu2bIHa6RqF9uEMbtxwQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460071, ST = Berlin\\nSubject Public Key Info:","notbefore":1623415964000,"notafter":1686833564000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeL12fn7+nUNW+9T9zJLaiZF18rfz\\nL1I735fT+3zuKryR3K2oMIMBDFbrrLVva3UeOEZaz+sUwUKWHMg2HgQttg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413213, ST = Berlin\\nSubject Public Key Info:","notbefore":991900145000,"notafter":1686469745000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtgz2ifmTj/vZbBaz6xlNCdQlw4FQ\\nU7v3dUrJYQEigk4Lz8dY1c3pGzYO33TjrgN/Qn+yHaYMHl6+06Gk7AuW6w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382791, ST = Berlin\\nSubject Public Key Info:","notbefore":991557644000,"notafter":991903244000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8nZrLqMlw5EvdfvJXgxb2rXj9OBT\\n2UWBqAFLeCoQXuY+YOZJpUtL4wFQHMGPbvyoWvvcfWtrz3ZXHwaaigQG/A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414054, ST = Berlin\\nSubject Public Key Info:","notbefore":991902169000,"notafter":1686471769000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE71N2pH6YyC6gfUHwiEJDzIxwMIW/\\nHs+Cgn/gPQbZAkFcyX/LTE2j2gZD8hLs55TErTTKokvHkrEOWtHYkIDhyQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460099, ST = Berlin\\nSubject Public Key Info:","notbefore":1623416023000,"notafter":1686833623000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5sqOpW4x66Hmcposox406LFRWyGI\\nvH2CA+Di7pgvWYIJLX7soTE36YKx53vPYRUhKtzexJ7nI90MtClg6NsTAw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413639, ST = Berlin\\nSubject Public Key Info:","notbefore":991900817000,"notafter":1686470417000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzma5iz5ZBIh1KDZhj9fSnqJoKK9w\\neOGB/91w6FpdAUjFEKGDphj/MdGRfVro/gSyHRhpaQghZJXRDECOuSAzqQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382995, ST = Berlin\\nSubject Public Key Info:","notbefore":991558470000,"notafter":991904070000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8xghqNrE21susvTQHV9fwN3RWhBI\\ndCYBu3laCz66NasqyquT47PJXuOifSUiNY2/qOyDuu0Ae8MKIHeUmN5wdA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571164, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533268000,"notafter":1687950868000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHrXK9pJSpMrEB4xUrXTTnb7RakIR\\nzDtNh6ugnjfV513NFsu5rKopJYYDOk/Bfy5MyNug6nD3kSSUUy5yePrgmA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026383046, ST = Berlin\\nSubject Public Key Info:","notbefore":991558662000,"notafter":991904262000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkkxNdS0EZvjP8j17j2k92vHZpX3q\\nSNMDbCqBYPvmqzj1jnNEqsAZSp8uppwoShgmQPdUSmC5jvSaI0PiIRUJhg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413569, ST = Berlin\\nSubject Public Key Info:","notbefore":991900719000,"notafter":1686470319000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEOl2NFM+2gkakrrAa7g+F7KOXRziS\\n4ydbxiNbm3XTu+L9LP+oSKMLOeJOBcjJA3RqrqAiWfoMriWGd0LRYM6TWQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571377, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533875000,"notafter":1687951475000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE65QJlG4NQ1UKM3/5Yf6n9u430S0g\\ntEarOF4e+WrILwUamksO2zJfSgAwXJV2ZzzenNRml1iFffdf4V7yxzgLUw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026523255, ST = Berlin\\nSubject Public Key Info:","notbefore":1624003975000,"notafter":1687421575000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzIzHRqk76vDGIUAj3dIo3UVev41t\\nak5P5oxO+zaOlsKnxUNbo9yqIcpOo7stI8WLrif4RRaiZoQ0tvahSHH2iw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413994, ST = Berlin\\nSubject Public Key Info:","notbefore":991902075000,"notafter":1686471675000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEM7zYPRk1r4viA/oG6BxLec1shhb0\\nJoDGjLAUuPxmGSMw+aCQZUcY5MtUqnVD3x//kviuFZDumf65i0V1o7Gsew==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026383019, ST = Berlin\\nSubject Public Key Info:","notbefore":991558564000,"notafter":991904164000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuCgNX5VUmp7/lN7/UDF5kRDz7qvW\\nnpgFOKwv1AxJXbSvwJj5ADOP9wGAsocoSJtPr3LbjbmqAqndrgr3831+tg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413231, ST = Berlin\\nSubject Public Key Info:","notbefore":991900212000,"notafter":1686469812000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExfciFuh1jL3LBPzaNAVmmVTL87eJ\\n6wVctSg393nUcXxVL1v5vCgp6jWlRdJglVJj8jRG0TfF3OLjDUHAPn2rAw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQdJVV56tV+jsqs/SCyulFADA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDcwOTUwMTJaFw0yMzA2MTEwOTUwMTJaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0MTMyMzExDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMX3IhbodYy9ywT82jQFZplUy/O3iesFXLUoN/d51HF8VS9b+bwoKeo1pUXSYJVSY/I0RtE3xdzi4w1BwD59qwOjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFAEJiFqojTtZBMXXATnfK7Gsuf3zMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAsYTML4Ywse1m8Ub4dDNDPa3yYawMdaugRRP6+HPsRGRTI2HszlCxgsjMTuc4cFdSqwpcLQa1udvuZGnHQh1Aj68oVqtlhLwk8n6CZG/sG4vmtmatG9wxh4T+ejhVrO/EuE40bZS4Zb4GZII5zNdvLHcM4dRXtRceyLZ5rMGkOyG2bXoIJ0xZ1gqkzVfRCr/+bztM7+mfhIREMcoXY5O7jKJsoSlow0vLzFQuh6/A6W/DKcDo7+zv3/ARln7sHTFTpvvbl2Ha4Cjwvt7ujPJXlW31oiIomPK8kmu9K9mjScCXcfh1cbksO06p6vJVMa0wmRAMB8vpr00V0TYkNSCfF9vWx2tY/TBPgzs1CmPcy/zNqlkPUWMSB8YnEjesnly2MJ+14h4jN3CRJcVTdtMEIfV1ODIiaHea2h4udhMUvmJroF8HEgQExjdojRKXyfb8lO5bPVVxTvtXiGuMnI6Xjur+dArFGFS7uIlc2ycxR7J3dpf7c2iU1nVf/vNg+rJiBV0Da+GPF6Wdf+AZk51Mh13BEPOzq/k4aa34R3FN8b0J1+0Yue3O9u3nmID/I5ppjNhwtsGPOohjnIZONFPb2XYUqcRMO6G4yF8iVNgpJLfmAW2mMI1RynhiXDqEmoanfoiPGM15npP7wlczc/jxzZzPAEvAmeRp5oexeXEc0V0="},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414212, ST = Berlin\\nSubject Public Key Info:","notbefore":991902618000,"notafter":1686472218000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyxW76RQrbDUSOEHxYksWk5CaGGyg\\nxDJJ7A9jRiop+FlpwmPReFTmJNVRMCjE56zKy1oxdi4KXCHI/yJIuw4zWw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026164195, ST = Berlin\\nSubject Public Key Info:","notbefore":989237732000,"notafter":1683807332000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEorGGRfEic2GL5o9XnITdq3nd9d7p\\nWDvy6waSkDMI633+wvCluSBV3rWR/QkL3FdfpcL2FOCWaAR5/sXOihpfrw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460044, ST = Berlin\\nSubject Public Key Info:","notbefore":1623415885000,"notafter":1686833485000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqXPIlxahww0kgegwTgRNQWpChqH2\\nPfXelyd1D77uo8dy08tlDhsE7zpyzWXfZTUAMxPtgw+JTqiaL1FQtvdkyA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382913, ST = Berlin\\nSubject Public Key Info:","notbefore":991558083000,"notafter":991903683000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKPuGAJsDLPU7vw4aDg52nFxuxz3A\\nsJtWUmtsY7tQegwCVfll+e5sQJu6y5CZnOD+gKdMKfnjuB719z/tF9qB9g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413347, ST = Berlin\\nSubject Public Key Info:","notbefore":991900392000,"notafter":1686469992000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEszk+l0BVoDOXZg5SKeeNbLUAggqL\\nKB2a3NlMXWfxfdcdHsPqqlKWcFTZBzD3/kIyxJi5rlxk1Uk2JsFNEbjt7w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382843, ST = Berlin\\nSubject Public Key Info:","notbefore":991557835000,"notafter":991903435000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUCSPQOg4hIgEJzD2PHFjccnQzSQI\\nvYs+gbBuJqHxv7tCAEpyEj5XIfjjfMjNxA+so+AdZyEfwszhKr2A1/nVSQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413541, ST = Berlin\\nSubject Public Key Info:","notbefore":991900643000,"notafter":1686470243000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/eGWuKcNV/od7Eh4EJuiqBPv+0yP\\n4q+qzhOlNFdkzuuWy6l+hhjVHxdfxp4XDVvOUV2D9wff81/tNfBuc4pCmA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460123, ST = Berlin\\nSubject Public Key Info:","notbefore":1623416094000,"notafter":1686833694000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh4UMl8PsQUsu36Hq7xK+dyGWGrEL\\nxsfzVOny20ZnkHhyBYxBUIGoHEYl70bpzjFBJN4WLGtilZD/0aLWE/+ykw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413860, ST = Berlin\\nSubject Public Key Info:","notbefore":991901711000,"notafter":1686471311000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEs77Dr92zb+HOBL9gdfCWOwkna+9D\\n3Kdq0HgUqpVByi7kqykRPAFKPZBA771qyoBy0uHFhdYIzNAPzdHj7KrPsA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413417, ST = Berlin\\nSubject Public Key Info:","notbefore":991900474000,"notafter":1686470074000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEopaKkUUE4nCgNpRBE9ugmShuJd90\\n7aOocVvFvxPLxiJ5qqQ2pq/GVsq5Vf/0V/b1V3rAoKO8bMvxP4jkTWTxqQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460026, ST = Berlin\\nSubject Public Key Info:","notbefore":1623415821000,"notafter":1686833421000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh934IiMCsXp977pDeG7Wi11S+uGG\\noem6nSNbtCILcST4+/FqGlLOBJvIZPSh3hTHx2V7V+3Lzqi6R2dahOno/g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413693, ST = Berlin\\nSubject Public Key Info:","notbefore":991900928000,"notafter":1686470528000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyV/EBSORniEE7SMMNmvSWT3dOAuD\\nuviDHFv7rvnrcZ2wyfQkIjyYPkrtVrGwiNdwOcbHKreB2eW6li/+fDQPEA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413897, ST = Berlin\\nSubject Public Key Info:","notbefore":991901776000,"notafter":1686471376000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5eOmRsTsPlyUVzKnWK3xYlY04+DO\\nffgg07nWx4FTa4mouXQ9nfCxmMHgpuZv2RxbVSzYzewjcmKaknNEYDdCdQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382773, ST = Berlin\\nSubject Public Key Info:","notbefore":991557537000,"notafter":991903137000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZM5AMBImcqdKPFM6P5xx0LmZxo8\\n1NcnuydrdPUQaaa0NhsRctuX4qB8YSd2pG12ilwSSfEcgju8I7AsFJSAOQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414081, ST = Berlin\\nSubject Public Key Info:","notbefore":991902238000,"notafter":1686471838000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaOhuajeY34pPu/12SnuMv2qlG8Er\\nMOj7s0eAEM2679YVzsiZWLIp1S1jNWsoIJJTEiLWUtj1mqCsMOR3gA7CBA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571270, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533590000,"notafter":1687951190000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUtMktlZKpvOfwhumIvsvpKMWE1Ly\\nMq32RkRCbVM5TBBxHsCUYdXSjbqPK3cZ8tYkCkcYlyluKbQO++HaSsGjSQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026164168, ST = Berlin\\nSubject Public Key Info:","notbefore":989237611000,"notafter":1683807211000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsLa/zRhSxxsmrPE/RwPNKXGblvI4\\nJrdqfPNYpuPn3TpkExb/vod11MuW7BismmErZcJC+oWuItW1UH+wcXHJcQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382931, ST = Berlin\\nSubject Public Key Info:","notbefore":991558189000,"notafter":991903789000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5D4cdY3G91kHagLyAGon0ufC2jqz\\nQ17V1wjvYHOLxZSY1evmQVhovIVUS9AU5Z73aeW++2ZyNUFg7L/9Zk1E7g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026383125, ST = Berlin\\nSubject Public Key Info:","notbefore":991558987000,"notafter":991904587000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpobykjScOX2uy+5C/BYBXDRcVUVO\\nBDWLUgUaIhP2q0GoF8FBBDYBjx1peWhf4Nd+rtjBivr5WDcFmjMVn+FVzg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413286, ST = Berlin\\nSubject Public Key Info:","notbefore":991900321000,"notafter":1686469921000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgxLpjMDX1/tMRghYLQKMI0nK4UkZ\\nuK9pnAAJTC7BeQUaHYFp4pJkC8z/VHcW74CpwTeTRITzs4MZflkN/WHtqQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQQFnWzg0kkF13NUF3F6qLxDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDcwOTUyMDFaFw0yMzA2MTEwOTUyMDFaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0MTMyODYxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIMS6YzA19f7TEYIWC0CjCNJyuFJGbivaZwACUwuwXkFGh2BaeKSZAvM/1R3Fu+AqcE3k0SE87ODGX5ZDf1h7amjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFBfOKfHGrkBesoFI7OaSGsO9eaZDMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAwzERLEOySg0YrSvwTA536v52kB17LEKOnHJ4R1HdtxwPkjCHxOEu9My/L+XpzLxq3DpvL3j67zqhkmG3R8qGhrSC5L2rWhojBsZq6E9bH3gf7y+TN3SvwPYiHuHV0FLU0IzmCXSG9xh4lD6NC2vUUWKxqZ2pR3EdD42ZtymfyRCMmhMfkGuePDOqR+kl8rU0btaXOmpGaXfcRVY6MZ+EpBuVvLk9UpZpwub1xM0Z053O9rS+QOIYpJVFH5aQwnQ5JvLa7ip15ls0F1egNA11Wxr5AK4aWp5DBVPTqS5tESt++FQGeaqf7w/sE7SKS89CK+ySpC+MhZsOjFnvn++53y88E4bphaNbWjTmvt3wvDxc/9/Yo13OvVSq173HC7TVZI1runjRnfKw1260N/3Hz8clWnNTmCzkVhhsvRrBlQgwpKhfgIAJ/XfMRMETxOB3lAohQSrV44mWo1gatF/BMosifvFKIRf2o0BNy/eH7QBQbteQeBUXNG5eP5ZYD4irKIvUOH4t9+9to6wiXA79OWB1jwue71/2o28D7XIS0EwafgFs4i1kBAVGzCLV9GI+n1IYJc65TZ6hEX1Z/+/JBR6pJDVdpbHzGCeDCHM4IIOPCwTmYyAzaGOXssNHd3B8LE8VFpSyZMtDM7ySjFWqvFOueQUO85xIxeFl+J/hO8k="},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026383107, ST = Berlin\\nSubject Public Key Info:","notbefore":991558868000,"notafter":991904468000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtLZ1N2Y7UQHgRO3yKGyRTsJWdYFG\\nDld5kbglFGHrMvZQwa5XoBclH9xTrP3dXcTsgjnml7Hx5YZOnGHhJMrenw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571313, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533720000,"notafter":1687951320000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx4HHLyxeH1wp/aPCCwyRxWVEcfUA\\nLP66kgwanudG4b8upvGFMsVXpzg0ohEParVa912A9UBuCkjDM6jFAsgZIQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026317104, ST = Berlin\\nSubject Public Key Info:","notbefore":1622025130000,"notafter":1685442730000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJmki+G1pd9DNiLX/eT709p/ZeCd/\\nmcjrmRLoTgP6nlDqJxUvZ0rQ64y/Lj2Vk5ehGHtuV/RmyuNXJYxFB58bdA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414115, ST = Berlin\\nSubject Public Key Info:","notbefore":991902338000,"notafter":1686471938000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd+grPnJ58prZvOeLC3vi9P2mnqlv\\nvGNfsbT0HmxAVHAoNB73PT149IhGWhNZFSMFRel7vu8vi4wPoaSuIjraPw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414160, ST = Berlin\\nSubject Public Key Info:","notbefore":991902447000,"notafter":1686472047000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPdriVdFsidKrE0nr7S+75iO7+8LO\\ntzFp99++4BLqKKMKn/mAXvgkInEN5xqsifTYFWk9KmLcUGbD9dtwQlaA+w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460008, ST = Berlin\\nSubject Public Key Info:","notbefore":1623415750000,"notafter":1686833350000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7f4SNNst1BMsb6Ub0yVCz01aDWB9\\nI2/ajVbLyJpTr2pKwSocQpiM0mcy9XX+dMYYlUaQVBOmtoE//fnw8w2vDA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571191, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533337000,"notafter":1687950937000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbQZPoqfjpTx8m/wAZZWk3uoDxzfp\\niISsNSuZg/+9VN/cSefrEHFRvQwM2AjN6vOjhzVMdjZ14MSRJUMJEu85Lw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571331, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533797000,"notafter":1687951397000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+fBKs9tgAlGoiBIglL4JDLpguDzB\\ncXqCuIulrUkBy/wZrJtv7fsirU/YCvcn70rPzMCloqePEoDPCf1wWX8Dpw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414197, ST = Berlin\\nSubject Public Key Info:","notbefore":991902557000,"notafter":1686472157000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE40rFr8baZEDNvONEE+Rxf5ePnZLL\\nmqR+5Uwx/S5I2ylMijZyZ4c2kD3OyTHlfTNa1mS09zXnXNJKqZyqi3GGQw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414133, ST = Berlin\\nSubject Public Key Info:","notbefore":991902394000,"notafter":1686471994000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2TqSv2wB9nB0Ev3u5VmckxWzq/L0\\nfvl1HVI3ZBXCF+7k55bo0zUABUPBz6/e1PaDxDCIS8+NybrbpUT3w5D3Iw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571243, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533485000,"notafter":1687951085000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDRVIqu7uo4HOgXlXyxYBl2L1arxx\\nvDfwfgnYHjgVKQpFEj+hV9YEjSECJS+YrhGr5RXZU7eRzKvfKtRI1POaww==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQaCrKp/oifkZV7APE/wT6tzA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MjQxMzE4MDVaFw0yMzA2MjgxMzE4MDVaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY1NzEyNDMxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABA0VSKru7qOBzoF5V8sWAZdi9Wq8cbw38H4J2B44FSkKRRI/oVfWBI0hAiUvmK4Rq+UV2VO3kcyr3yrUSNTzmsOjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IYyaHR0cDovL2NybC5kLXRydXN0Lm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmyGO2h0dHA6Ly9jZG4uZC10cnVzdC1jbG91ZGNybC5uZXQvY3JsL2QtdHJ1c3RfY2FfMi0yXzIwMTkuY3JshmlsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwHQYDVR0OBBYEFC/BhUnD2E/4VjZvbF3GCiCqeL8GMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAfHE9xt4B5t7jy78x1lMhBMrzkyW53uXdZZfok5Mo3K7fP0g92J3FMZFcaBTTLZIOEKnDhS1h0NNC99jTToZEVBWCB25UCvZ+oUEMRx3nYezgShiX2i6fBWvmn4/UIMybp7ikFCMBfpFuuo1I09anuOygqzCeXy4kItgGbWXJj2YObZponIhz3KHQZB/9syif8e5rU5YhtqQm4lPwiuAoJufoDr/sE7T/pM9H895SuunSegPzuP08n2cfS4MyRsk28vS2dAgjHCYSYsygkx2Lmf2Tj5UID3JwbAZc9NJ9vgzKOeQMVPvdAQLDoXkvQZOUOWVCvHXFjTvuXLH2AyTdh4X8XLpBl/Pihg8HZZgGYVSMrYfI2XyHmNRzMvC6tzpe3sr3lVVxaIZzCLCyXQAO3dhBWMhkb1Z2O5WZaQpSi/c69yV79sDIOf+XYT4Yw84WmJtiIKSet3WuNFpJg9w0VNgCVyI/6VmQ6PFErwd5nqbo97JzF05l4/ZM/EoggIwBvC14xJ9WreroJ8fTTxF2qLWkkvcA4D8tKTMy1cKz9EJAIngCjcnCWP31V8Xw3d8Eo/OiMyIIdvBPUpfZXRao2svtz+T1N/6vgTRDoBZpoYH5Ejte7VbZcotvPc2bbM+B21hgNNYi6QpYgVanBHcG2GsfvUgiAP6alXqR8CVjtnI="},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571119, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533144000,"notafter":1687950744000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElGYxcioPZFzAfJHtsB07FzUDpJlc\\n6C18W2kcnCGEE1ujahisK6ZvE+UoSGh4ABGNQOX8RypMp4t8bzj7VAqI7w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571298, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533665000,"notafter":1687951265000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6/QS0f7r433yqdq7XKh3OOKhOEig\\ng+VVixYEToozbg9QgAqADIZYDe3WEQnO8u8fqdzd2ouVZo54/Gc13gszYA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382968, ST = Berlin\\nSubject Public Key Info:","notbefore":991558373000,"notafter":991903973000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgMhpOktfDD7Vn7Wm+BlHabFbpOs2\\nUmCVrtIpcOFpIlr8+2wHP5/VSUZslExSo284fpwuoJ5eKcjDuvlCPjZNhQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = HR, O = AKD d.o.o., CN = Croatia DGC CSCA\\nValidity","subject":"C = HR, O = AKD d.o.o., CN = Croatia DGC DS 001","notbefore":1621509466000,"notafter":1684581465000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV\\n5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICwDCCAmagAwIBAgIIPR9jkXY7CPEwCgYIKoZIzj0EAwIwPTELMAkGA1UEBhMCSFIxEzARBgNVBAoMCkFLRCBkLm8uby4xGTAXBgNVBAMMEENyb2F0aWEgREdDIENTQ0EwHhcNMjEwNTIwMTMxNzQ2WhcNMjMwNTIwMTMxNzQ1WjA/MQswCQYDVQQGEwJIUjETMBEGA1UECgwKQUtEIGQuby5vLjEbMBkGA1UEAwwSQ3JvYXRpYSBER0MgRFMgMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzaOCAUwwggFIMB8GA1UdIwQYMBaAFDErHKPIgGXhH70EktAlPHyGj1LRMC8GA1UdEgQoMCaBEkNyb2F0aWEuREdDQGRnYy5ocqQQMA4xDDAKBgNVBAcMA0hSVjAvBgNVHREEKDAmgRJDcm9hdGlhLkRHQ0BkZ2MuaHKkEDAOMQwwCgYDVQQHDANIUlYwZwYDVR0fBGAwXjAtoCugKYYnaHR0cDovL2RnYzEuZGdjLmhyL2Nyb2F0aWEtZGdjLWNzY2EuY3JsMC2gK6AphidodHRwOi8vZGdjMi5kZ2MuaHIvY3JvYXRpYS1kZ2MtY3NjYS5jcmwwHQYDVR0OBBYEFB55yLnz+T3ShQFs345mxQEJZb7TMCsGA1UdEAQkMCKADzIwMjEwNTIwMTMxNzQ2WoEPMjAyMTExMTYxMzE3NDZaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiANYlqMzCo7P6/FbwxS88MCB43CIBgfpJDmQ+D120Ov0gIhALJNQbk8HdHnkd31GV88U1N4YghHSZslLY8eZX8wSYR/"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_015","notbefore":1628798400000,"notafter":1691870400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC\\n2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwIw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUc4Z21skZZ8Xy07UbGOonQJh/3uYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxMjIyMDAwMFoXDTIzMDgxMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwI6OB4DCB3TAdBgNVHQ4EFgQU8CPvYMvFZX51QjwEsL6RmVrYhCgwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCfhMpfpfaBZQLkBuT1XZJWVfMy/UxqunIhPyjjJejxCnYupYB5LoyUKeuI16+StNTxGNHML7S73SWywDSgFwP0ttoLK1fiGVKtOBfxcvPP6RiuhbgkdXlUboXW3azVLUB0y4ZxnFsp3ZupaTBCpBQNAaC30tEAx0ZEZvOBl3MGRHqfR6SdUc+aMj0bibqm29J8hOZAe051JwGNF+y7O0pLdDkmAg3rdBsHaTNvA6AcyRRV9Wm8vB6bf20JXm3mvVtgdyidUgSTTMJ2BOqvGzDsJma5q7vh4nFZxPDRGp9Ny1WU8MzGUIUilv/UJKDexfqyQdzBOF8jHXCY/gHGXrOQH7MZ6ApdG07+RY8R4AxZ51OJyGQw/KPFdU6XLSaDtyTXptGxl2JPIaik1TtNNR3/pAdDVp67tik7En8QICqEdv+OqzBbxVrFRHmW7bSeiX8aSuk52ypHTAR6MkstVNxd5J0mzPxBqQVWa2LDy4vGkFn+qQ2/tsVpdJJLQwfcix4rEP1kazm6nWqTyyoDEU1MM9i5y/Dv/GkAwMeXPqf9Uy2z/QWyja+me06DI42hf8eLN36uHcMS10MT2/ei2w4i3UULge0NyN2+wmjR6xKJHEu9P+LXci1jik33FbwGZKXVb1uI7Y/iU+NIBOPgHQfEvBuKDDvHC+vh3r9sraXeCA=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_023","notbefore":1634241600000,"notafter":1697313600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgu/WJBn1Q+RCOfQx3NLT5oIGUCHs\\nqSRXuu7EZsqfqZN5PvHk6/E++88wvj2fMrfmAptk5tVld2xBH4P4tRs8JQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUbjokPqcsK9BPa9UdWexJeyEqilowDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTAxNDIyMDAwMFoXDTIzMTAxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABILv1iQZ9UPkQjn0MdzS0+aCBlAh7KkkV7ruxGbKn6mTeT7x5OvxPvvPML49nzK35gKbZObVZXdsQR+D+LUbPCWjgeAwgd0wHQYDVR0OBBYEFFmAYyEK7sVvsDvIY+w6fmNz2BT4MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEApMhsApIqDdjtJiC6mOsvI8L9Uwf+gw/dv06vVIwTQ7y+4AgtfZ2HTWeqW7IlXvNYs0m44U4VyL43pnoV167rwBOAMGTrYqT+83Hl5adOtl5ui0RxVHzNdUPiVPL2dV/OgZQKq/TFjm8wuJOxhjGIx2CFVKX2PpcbHAZ/IawdJjhOsisBZpfYuBpKFV8hBj9/SF/EwCrbswB81IrOjNEl9MkG6JrYarO/uztKHv9OIFy5SC6BaKkO4OItM2xx4H1w2cl7Cqt32n94WLxP0HLeAKqUA8/7Ttoa98x04iLElhkg8Fd+aL6Foi1mWlWBRlgHz7iHxZ7zYDmi8NksxnKECSwBm4FpP2Guz7CWY/tsREyGvrzZ2DjYFtNtIOHW15xr7aTPRJ0yD0DYtmZ6l9aYlFVGUgNWypUuNOe3BJh25X2re7nIwSvUWZeAnUFbJ+2YYt9xQfjgSll/DByUG/SfT6EqstPWlbVFVLljs6azzxQyozRB8JYPVG1Kny8WSl3YokIDLVofulJqYpi+ac2DDFCA1L6Mtnfw/go7Rq7uiorduqZi3FL8vKwy0M6S3ckP06pWjpJdOyKaLk1cbHJR4fuzY+PrhvDkKmSSlEzsWCIKe6B//ErN64MJ5xJxc6HnP2KvXV4hf7XbFsNat5ETxb3VdQhVDyHzgbqSpVo9BIM="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_016","notbefore":999460800000,"notafter":999460800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTC\\nmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFDw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIURQaZ+EBTL+Y6w52qaQUNZ8YBNs8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkwMjIyMDAwMFoXDTIzMDkwMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTCmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFD6OB4DCB3TAdBgNVHQ4EFgQU7OG+JgHJZf/maDGo2iSgWdFzl7EwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCVWdsW/zEmkJ4uRQVoYTxdDHlmS+mbDvEGv3em3wtFVWX/0FZKRRxHZba4wElR7DjEv4A/d6sYPn/9Mp5PhBDS/lofFzUMNYAumH4uls+MT6a9ezZFCtcATKj9pP2hMySfSn2rfQzOR9yXS6I/GcruzehqedBmzxc5uKjbSeyLA7sgsgl/JB2DW5G4tIqjxIY8KytMTkrrlJYaG/vPokpS2ajUNZisBbLHJAGLx4XKnjlLviTBSp3iAsoCh/FFHJxtQJ2pFvmgRmVaQUKpTaAuHH5pPmw4Q8rgXq+qX0vFaPe6LaUCpJkEguY5lxGtHqZGoqoVaKG3/LX9qkuzyJ5ijI//e+Uzah/zCBmW4kK9HLHUVWNyOD9fbVhWHJfXKkNJ0dH5JV3bKD2G/MvM81R5Q41F9PUjOXYoCrDnY2tmBPuXisR4mCulrWyM6Bj0/r8CkMkwMNcr7AoTEfXpa8MxJANVWFARG76IYiQtn8M1dtBxmy+bf4/+n/k6S6Z4w31tTl0YsNWQ6TnlHS2PQ+UiV1zchJcZ5RW2YwlWjLRhJHOzrcv2m1jRIsqPASvRLJjeAs+77ZDyBmBFA3piutllZj5SBDCLzStyIplruJWHhCnhGj90b+fGQUPAhj8XxhRuCnRtXBwWED8hC6dQh8QaiKB7sTrlU9L/8wn5mCGnuQ=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_013","notbefore":994017600000,"notafter":994017600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6\\n/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUdvwPgIGxxk3GeLBFSk0RuKP1NnEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcwMTIyMDAwMFoXDTIzMDcwMTIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuKOB4DCB3TAdBgNVHQ4EFgQUK/s/lmhAfvZK1RyuXxMIhJ7oTm4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCwoySNQghvF3QSu/6RtHg1XDV/4eNFFPwl+qmZn1AfODHAfVS42hjsmMLeDOLv0JUg3Xdx8debts/8/ljys1XMy1tODB9y06ZrQ1X1GxtutC4cSacBYWsy06qyI/vn1Q6vwKkNHADNJP2GNxQUlolkXkdgS7q+2tWCxcK8lQE4t2TrrNUi5UN8tlagLkbuGYqnzHnGdZ8AN6NskBhq8j0mcDHxhZ32yBg/+ZmLGdnCqRuZ9fjrH6B3k/n7fHhDG5UPnk+m+LReCRN9Zud4lGzLn3HSS1dqB5V3k3lsszmQKEi9haFljxImcU2aJ+IRepO6T/kXh+bn5ei64sEro3fad70eAOg9C4hkD3krsHMpYdM3TBF704dahPbuusRFqDCD9XrLpYP4e6UD+EdjOg/aqG4i5DEdk9cFJtv+5gp8ExtqUXkIk56jjmShQFwfNgA5SWa6lFWniQCYPxb978BMIqOamOL/6BwnyaazQWFm2Qyl4AzlWot1CrOt3r+aK/i0m1nE028dju2xa3BTKEsxjCAXJ7eOldXkezBPFVGpfrdWssqnbzaWVXtVIfZ/CNMmEk9/cqgS+A6lrZlC5Og28ziRrkQatnL2SIbBXmcJ729H1SHRfAVKu+yXDzHV2fcwcoFBgZUf1g/IS/ImzU4A4sJImfDAvaFY3mcQslcm4Q=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_025","notbefore":1623700800000,"notafter":1686772800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEGSSdtJPZeYWU3QrR2cR4M2Cv6sY\\nKuY870qkBKKREtlSel4Cxpfm8EnPZ+OPVVDXxArWdYR0MoLK6Ox9aEIkmw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUEE5lEugsksKBZO8ZFddktB2zEZgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBBkknbST2XmFlN0K0dnEeDNgr+rGCrmPO9KpASikRLZUnpeAsaX5vBJz2fjj1VQ18QK1nWEdDKCyujsfWhCJJujgeAwgd0wHQYDVR0OBBYEFHo8gi1E3sTHBnZB1uyUzxdv5GyzMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAM2QCIIa2/qraMLp/+N3JR3gBVI+zSFird5rWdWPWptnVq+E2MEPwJhz3a288axhZPetnm2vxRHtrzI8OS0tcl0qoDhHmMQAPzYHth6xGoGx9+jfLFMoynA1hcRmILtiitPoOT8SYe9K+ln3sia2xn52Rysy1xLTQZquBmczVAdxAS3B+h2nNw7V0b9ukamul6w9Fp7ifg25pT6mTt5sXD89hTSqTf/fhiTCjRTrBTJuVA9VgKrWUiZHI/vIwKRHoqUvMDDW3RK/QoAqfQWzztKV9yRCpBhv5focv50owbyu1VYpnT0gnl20UZsLwEXt6TusJFvGoiySFCLLanU6gyoHcXudNem8YEosOzxFSR1wvKJws8JJjuaQweQBtu/XRlwti73KZjwltHsehHC3nFsl3VwMf97A2cmre2ueEUcjRFvElh2PfpIIL17Srpu/mvu3hSVHndsUoFVZnZUWz8rVQL0M394Ik9ZBaZXVrIZud1FfuDQzbVKjRTO9mOIv9WZ784MAON+g0p0xKvJ2MZmwe+ZF4FvxRP2fCC9vlMk3As4bccS3IUKsrupIFXar1THfGPL8obpn6ktjVJ4dCT+y2w5JHGtxclhIjdqG5w/PrMPjeGrq8wlALwGjKMTF6gOZ+BtfjNCaG8h8lpt+oKeML7GP/Fe5Adjcovc0DBY8="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_020","notbefore":1626292800000,"notafter":1689364800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECmvd9b56sHucHEi7GBjqapZy6IAZ\\n4MFIFg7Acr85jXp/oBSNzFBP9CnkswLR5vwmr836uS9JL5sddzLT4K4+5A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUY7ZCHR/KM3Pu7zkxGX7a6r2xWT8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcxNDIyMDAwMFoXDTIzMDcxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABApr3fW+erB7nBxIuxgY6mqWcuiAGeDBSBYOwHK/OY16f6AUjcxQT/Qp5LMC0eb8Jq/N+rkvSS+bHXcy0+CuPuSjgeAwgd0wHQYDVR0OBBYEFGaKMaCARFztgSv4jjRlAu75x3ILMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEADKs8pzrmE48ZExyNbGa8kV7CjJjCfWGTOEfzxaA6X7gL0kaHVnvPeNq4yQh6CZl0mwrEmdxvuXKRefU+nCg/prbn6CAwC2irDHU5hS48Qvya7JwqNTMOU66phFs3FDuXOpUvm/fe+w6Vy9M0IqbKu7kEWizZ923G5YjrcUgnTuF9xZ0pOd2HjYh9efNOmbeda0JmJEQKxi5+WAGjOTqidDXfh/G+2jB/Ja67kyoZSeMHBEz7IyJ8hBrUWRWV5oEzIRQdMlZ2xPD9S9nS00T09gkl2nhx+U7nTqRPQa+qKMiejQA27+EwDgszkl5hUMTeqB5xA21l2SqBqz4W+v3WBy0ziDNS9Qa5HC1+lZp/7R+33pfGZMOC9iw2+yyC+SC8cFwUB/iuwZ+0096LV0wZshB74ZjU//sUNJIL5/ZWaNGohnIorJ8nbzMFm2rPfU66dOanfQ03IkrtIlbxH2IOAuBsC7Fk1OH6DDMoOJRia7OSAOv1UT696M7R4MtKyWhCiiNajxT2jSJbvpVj5YmS83G7cfbsYHu8x7VGxrwMXyyeyhKPh8D9xXCYdRrkAo5hhd9ETLRI4QeJHPQvw7UOL3Upog+fZmaXBeEetGl1Y8PQG2JHjY0BUGclNvvBApH6jEMWiOMUMjnR+mE8FC2LB5GJScjq1MLjaDqYpj5f2jI="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_024","notbefore":1636927200000,"notafter":1699999200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7B4Il+aYBZk8hs1MI28H4Z4GF2HZ\\nCXgX/DSTxvUoCMVze4xp449WJLblSCKXreGdiT0Mycgevo4rWYVGbwtUxg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUQGT66i1j72Yd+CXVZxgaJFhLGKcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTExNDIzMDAwMFoXDTIzMTExNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOweCJfmmAWZPIbNTCNvB+GeBhdh2Ql4F/w0k8b1KAjFc3uMaeOPViS25Ugil63hnYk9DMnIHr6OK1mFRm8LVMajgeAwgd0wHQYDVR0OBBYEFOkihiD6srcZ+6gH9LiQNVc6QwQ8MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAg1Vrsxtjk49QaxQ/LWFLC1WmRTNO/8XeLyASVHjPZXWfvrl9ft+SlKqlhIom7sYbxiYF5+g0qRjwBWMVqfFkYPpJkeuri2awLQo9Hr8oiPNVSHpFi3zjr4gMLEv2buQ6LUbvAT2U6eOW17AiNhT/3XzND8tILs++7JKU675p46YtKNguJhJVPEO+9cMdBdeJUM8d0RRV40AlkY/ThVI6BzqxmiD6jAka4bWJFztR8xkBs3RBxcumGXPIJIpC8cJ9dqnnsBdLJfDlWLfvpn9k03QIU9/XObnw3wLGwFWnxdr6sQMNxJCMpk3U2tT6og6DGylD4OQbGQvqFzm1x+5X11DQIdhQhBbbz+ymVBhVjVTm6D5JsEHYOcXi00aIs5zuDs0AYJhWZW/eimBgkRy2WE/6eH49pBSl80OmNAcxboqZHQS1jmLqZ9yptJ3pbSOXZS1ABgsGOYXCyHTPy5OQA5zHIt+zakgyvcFJm4YcIOD9gKzrpyiB7qJLbzliTHcimuIoMfKfzMi82K2rsFZ18glgRnm0/G1I8Cgnol2qXjkJTJq3BgI46+aA2ad8sMWB+3L7J9dj/nQJrNaZcYZ5IMhyHxeZRxpo9brURgzt9J/Qj2hF5gv2ovJXo+FgjMiLusVpsi3HKcYyUS36dKj+f4ty0kPdUklcdx52ogQ7K44="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_017","notbefore":1632427200000,"notafter":1695499200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/\\nMCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUGxW97yNy30SefumeNAP3zZwINLMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkyMzIyMDAwMFoXDTIzMDkyMzIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/MCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxaOB4DCB3TAdBgNVHQ4EFgQU65Kf02Ri58/6NMKPr33J+Wz8lrYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCAD7IAnsIa2VrGdmp7kv5Tj49lhY4FgzphvUB8YcPGPy+EtrAGi+uU1hKT/nbGeB82f92nj12iQUF57gwRSalGAUvlkz4c22L9dt5pla7u54TI08GPOmR5wUs8zixYaZDjAdNr+WbfgbDzqifwlhrjIMbKwCfW22187hxcrQgD4gVc927EyruFmJxxSDNJ33NxFkZ0uXS5TMN9gWLuI+xhcosLeW9SlwscLI9WNqBigzln/nLAHYzBpS+lprHVOa+jJzktlJbATB40BCz9jpGcCDgkUTCNZ5z3pOHas2rVm2aBLcHVttVbps+ynYwyWtSI2jr9oN6GzdyS6JZykxvqGoZO3odhxe61ioVhjyhH+e9mQIvpM7qJ2/mxUFp3ND252wmnGW9FuzbFamH/SGD6LipPVyXK4oW2nxYcN7Fjdc1w/5rHXz3sYfIGORfrumSeRnfIdXglfsQi+T19cA/kwbuGagjGHntN2bnZP/FDvs07PgixNAi357BAAuwpHKMHiwXSjTW4smx4+agRVIlGZ4zuEQXLPpFSwW0ktPeLdr4DRtfL8cRav5Qs5TrG02c3lJP/PQAnpXpbGBImjAmBsat+0m7nuBU7Ix3F/A5HBkSlSHUgvw9Ze3PZUxw5igsMm0eEcd6h3hhxV8HZcS40I53y9l63gr9j1Mas7BfceQ=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_014","notbefore":1626984000000,"notafter":1690056000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZ\\nmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIULSQWphYP//zk1JQmpv94dIH6cmQwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcyMjIyMDAwMFoXDTIzMDcyMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHqOB4DCB3TAdBgNVHQ4EFgQUZprkhn12tER7SWBEtD8mPNDNmK8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBCJgkoi4nyqPEXv8VCIXzO47sLWS4GOrT4eQ9NjEBuXqkCVWwMiQ+0PPiNi23QWx67ZK6DYUQJUOHAV8VRKZRK6G+UHRWX76hk00+hmW5qL7YT4+Z8RsXj8TA/DbUTXwEeSSinfQYefLoC8J9G7vTYmS4su0CaG0wr0qsSOMKZCM/sh0DUCNtZTpzTspDj/i2TPhTNhthyG2QWFKnTdQruEyT3XC1disruo/H0tohKOAmZhqXocdKFTl6Ycbn21A2Pm/xJRh+W/T19bFF97Z+i5T7CfS4Zrf0VQm4ZNrUv96gwye532d0QQ/6JZCTT7aL9fjEnEzkQdtdYPE0051HI9gRKmW6k++hWFiokhcarvWAsNkN4B4MIzTufRm92hCbzFh5IvsHYaaAUsfEMDsrhFSkuZ1swzimP2AQ38R1O0Brb2pls3sF7SAc3j5LA/bXZNhMJ9iBroc1SV7YC6Vv1DZOHTumSLw2fvwDt358sEicsCgdpzpm4gKTOf62rzqGiNpKWBbZW2mJvuv6WNV5C0/aW7r1nfuJ9+qSd2SUrZUFceE4vpxM2ccgsodHnspbSo7jKTeJ7l14rQn9XvoZY3E+YFcdbJQQeY0nABB83acJw1PVKfVsyt9D3DLwWXEcUcwUGioxVwiHR01VyrB2FBKurrXYEx0PglSI/NZBL/w=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_018","notbefore":1623355200000,"notafter":1686427200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjH\\nz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINRw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUW6BjdX2GIko8Yv84sS428c3DH6swDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjHz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINR6OB4DCB3TAdBgNVHQ4EFgQU0ONM/OVD0tP9BuSIGmIZRrPdEnEwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQA7FyRe/36WDJi/2FU5cpnrV8dXpZUHEGzHRZ6vaZIP02S8EdlcDO39+amGmv7HrQbcLAh7tmPhpii7DylowyjvnjBFc8cJtn+ScbMQ34I0yokOvtFJvyfSBOlK5udIyFrDjdsfqr2BNx982X4dK0UYQfGCufppflZOfaqv4Y8A5lBTRXAlXPJBSZ/GMvFAN5mesGhnPD0nFNnpOHGfXG5DkNE3gBRYUyswIY2d7vdhCNiCH82fSW4mzPs/oMQaI3Hw8IiAgUwwpMqXBHs0Fxn8d4WxrpGj07r2WjIOVNk1JV1OHKvHfuVPS1roZ9pNNUkoKHf1h46f1nWczUM5jmVy0Xvvw+ZhvSelRwC7PQ74BUoPgbYzsNP0SvGOnhJQrhOYk3GSIf9EaQxklqVT8WREoCDNxfRmNYdCJzQXr/GZ/Eg1+6RPvYuQWgsB3SYgdVQz/pCRHCZvEjU8vUL2lwW4wgWlw+Q7OrXrpW1JOxl98zRRSpWxRrlE24crzTJ31hM7n8WFSsF1ZNnOoAhy0nRxdeOkpDcEVyoxauuPGHUCNIMmvvPG5psrO417HLJGHf3oLkKadSBK/Nn9u0YCCa9ypN6LRJ9slwxITAsKTrYttjEgNAisYVLojtHcCkAr5JfqL93rFYI9BYS2x/k2QGTlKM9LoUUpzaYDz16rddiaSQ=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_001","notbefore":1623355200000,"notafter":1686427200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjR\\nkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUbNtFh5SyNNW36Tj3lSGsVZ1yzJkwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjRkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCqOB4DCB3TAdBgNVHQ4EFgQUkqfVrNfmsMs1UB/NA0C3KVEx3O4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQAhOMLYhWn1iV43jduVRRivgVT1jYwHmouj7nff+S7gVnxiIlX52jc/VmQDl6xOZjBHUBiRTRqjan1tdH1LvBfg1HoZWv3HaC5HbfkMu0nqItE5zbFwtJGsUpHRTSP/wrjqL83o5akkR8Uw/iIYhkLvuEKH3/ZqwZYRwOJ/NyXJnKgRuHvgsL0zbwf5X2EdbqaTtDDGHHCbg68o8CqkQ/guBP0jKHXBFWgboMQB2bruquGqVO2xKIZIU2E3sc3dhNbDYGD3KfgJbdFtnbISvxaIfnCn3anZtQgonSsHc0LWIpgobY+NxXSNfBKzICdI350hhmnHz2NS2VtrF0Xa59kZd/WMPcOzlfKi6aVI/Y+LcpujeO9ujlFGNU6aMxi2s9RWy31tjWxsOmr/sbEKF25YGuTWwvqe/MgXzpbTF0C1lVcARXaBVT8Q18nNbLLK/VLAtzjLYTblFM4zdXA5ZnfCqXDqZZathkyyf8aY/svDELxROVm72F9GnYC/OqnGeCOed+Iscp8ne8HUTgT0iNFiAR1pRz25v047QFE7G7jwo4YTA+ynwCxnVaoK3pkyfIiXstyPxMpu3Q7t90br/mAPDCWDHFpvxqvPcRlMpd3p5JcjiurGreGbivgPdJYGRPbWb/Kwp/99ACqZFA8FaGL7aP+ivAO6cBv6DNF2XXvoww=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_002","notbefore":1623355200000,"notafter":1686427200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g14\\n4vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUQporYv8Mt3ziR1r6G4s54HzRVpcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g144vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4qOB4DCB3TAdBgNVHQ4EFgQUxhlqVg/2EyJWoDdVGkyJrsY4CXkwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCbA+2eQnPJWMmh2eIH1gMJhggl5GSmOBFKeXyC4jeYQSDRY97/rsDWRXAYtE4DgZQO1cZcwsM4ybbZ+khmb0iCeO/0oiKIux8FU14B7zFksZFxZpbUSAJGD9lE1xRFnfUIyoPL3lza7lWqZ8lSfLuoqoN4mODkGpPYwWu/GC8sR3ynDt2jhrdBcLnos3k47+4ZRypwDnv9FRU4/9fEnl3Y4iK+hUtq83tI5offQETsXIq+VMmcw6zmeUTaMcHRnnMo4WknrSHbe9x1MOwQmADn7ZjYzMooI4TyM/dzo1IOH8iovgMbJP7zxWqp8zgtqZPpDtp500V9yCBjGCQWgRofrBhUojKj4BkGslCZaHHkRqp0A7WOIejCpCYwNRhom3Hu8oClJ0fGcIEIrdybYISYemClnbSlM+tXt9vATf7oMRZgXSGR/9HrY95naG5U7/+eHRgm3qHAJbbbTDHET7ba+Wiq9rnYScChSH/bMN2yLsuBcpVozokcX6k2l69KVzAsVtKCjPS/ISBWHDiEaVx++RyPB5YfbVX7ykJ4SaWX1ED6DLeszCdcLNb57i1Xu35kb1SGh+CUeALUEqBtJUcEheLixnTxJIHG2xq59a560SsZBdMf8r/qYTz9DqEgBXPSlNeHn5aIG/2u0bLrM3Q9GvBk4zBj3C4zWZJVUTZBNA=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_022","notbefore":1631649600000,"notafter":1694721600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2HtKUYnSxJw/bgED+2LJQMAIjyA\\n+I2plnVS50JCXaIALKstac37wB1lUvasfdvbE+nNbCvMkGPdMjLluMfT3g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUHHuaV60Jmxj0/Safb44HGezp2U8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxNDIyMDAwMFoXDTIzMDkxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMdh7SlGJ0sScP24BA/tiyUDACI8gPiNqZZ1UudCQl2iACyrLWnN+8AdZVL2rH3b2xPpzWwrzJBj3TIy5bjH096jgeAwgd0wHQYDVR0OBBYEFG+4PXS0sdtKNozOKQXcYVDA1Hn1MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAkjEVtzPSxFVMTUece3w7PeM4Q2fOn+MnaN60g6AusxnUUZGHErNnmjxVeU6isLYPB9gCHB3b2yZYXHh8IjMsf570yiDhsWBzwRjQc8a6uQoZSrCXFyVuvAGZ/hXWDf9AIKQrbrg/YlsN0qnhs7x3VsGZ62XHCQCBup2wMdW4VOa76YFgskKITmVB8RNE/r7sQn9tRmGW7RFC2f78v7vm8rshqB/6LFtwRe8kcBmRSw5l9pVMKHYLPW81NaEYN1BB3BNH+BH39rg89FPuuLMcO70Ow+1g7ebD+UH4VbgfhSrx9XKP5+FtQWTsatHdVg6vYYNPa9TR9/9e4Q3j3BAfnIdmhsT4DuRy9P+En9WZmg4NNFUVr8adlSKkiZOoJKSQh9TOavF4Ikvd/BD0S1UdjprApN3XauDRqvjKn4itsLc0m0ctUE5e234CLMbdNJM6ExPG+ukAdtK5V9FXwdyvl0+xVIBY9nI43z50KO5ZeyOWnqwRWCPqZ11FLuqFvoEpQPpx3d2Nc/IlQoalLWXtZYPOiEklhqAC7p1Qa+AG2RgsTxyIaMzCANjCDIFMBzcO6EbnHDPR9L5Xy4wqiLeQ06zeU0YR2WF+9DVMDR5j5lUR5QWFCDTK/B8ObjdsZl/Y9Qd7RoQT9wbtAa1+MpCXk7TnoRGG1HSdhi/yee661P0="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_019","notbefore":1623700800000,"notafter":1686772800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEImIFaugzwB5f/VyfQ3KTfTSoukwA\\nPVSgHZWrtrc2j4FuAUpw/ObRnA9pBjN/HdUc1zcl9SO/vsCEnHkXhxjz4Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUNWO7+/2lmGQGT1cep5petfsOFocwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAxOTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCJiBWroM8AeX/1cn0Nyk300qLpMAD1UoB2Vq7a3No+BbgFKcPzm0ZwPaQYzfx3VHNc3JfUjv77AhJx5F4cY8+GjgeAwgd0wHQYDVR0OBBYEFF6mKwOiAheaIxTCkdVKd8zgd7urMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAu8BaLZXFj9/e2/a59mBrOhY2m5SpcAoayxF3zOkIOt7LNX0QqHuomOyGLHMnAhNALgS2vhDXD0hhs96ZcKaystlMePpYsVRyaYa53GwMrGHiLwFxH5qQNClCcktAP++wCcdQXzTyZOn9/GNdmquW1PNMLPCEfqlnzWawdpITr+CYMXa9R5BEMmdX19F41HcoPRn9/X2uHW/ONmBywTwJ3s0U8F5HF21buZtxVDvX4ey+qINBru4MiGwgRCsklS9kDbl3ODUox0lwhs2VgQzqjALF4xYgsdN2LJezrwAiL8GMRAenmX9eDdgzMGnjKFT6yW8BCrPsyUnM15RAou3BrwIp6oxXHnR8wbeKG7pzZZY1J4zk4yYyihwxguWbUZGksJsNAQoNdNHBZtc8a7Oj5onLyUIetd7ELXxdk8uy7WVFeye5V8qJRhWrFyhWWFscQeY8GktefXiGEh6fxGfRU5R5b0PznxfMiA3olad3s17dr+jzqCM/hcY2FmUTjYrSrAyrhHdmCYIJ3US71If74UeMs6NZnQRRiu3tbAX+TiDOHsEHEIOHldbyQqFfclyiC26fHTqcNfIAxXPmPDQ1jpEmhRjFDlOWHoSnzsGZi/wa1kmSb6+2uHgUP/C/O2oi+yAk8GpwpEi8Sgv+HH/p7z0ympQK8IUOG/4K3/urdto="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_012","notbefore":1623355200000,"notafter":1686427200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQ\\nWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5lQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUdhAMHzJmtfI9KC2HeZuteJ8+o3kwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5laOB4DCB3TAdBgNVHQ4EFgQUowemG/S5PIzFStnYia0U6RWU2Z8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBlqQgxVgPA/EwOPMNUY4OJm4vGvxNYc3LU6R5/5q7hRwa04yTuQOwyRzTcMgJ211G79lsFwiprgzN0kixDYRrwa1NflFQS7Ygi64qGa1KZqDziB1SqDYiHXXCkkTTe4H/vkpZkH5U/+8jVUYI73q7MYIskxgHc1OZV1oKMWilU8rSdWzDQHH6WRk2BUuTORIsGpT0U8eBQQUaNhY8V0GDkKLwrqIWEbKC6ylLa0pGNYM8QMHAvV1SurqdwohC4/6ToNzypyYNctOJUTcgCyDpKdfQ+xWRdFDqje3XUdIRByEHAb7o9/F6H9NJoN0gyVF6YyGAYLD6zBfYhpnPXNxDCa7QltXogVi1gJFglsAVrQabTMXsA4/1+IOrdqMv0Ale/jy+0gEWZOHzUquSQTpxVz+Gj2j9ZXLJPzRSHg7O+LjxNON3mz/jl7cL7wjwbKqnMpYBALvedavnDetISU46qo2QwPO3qAwWF+3/17Mcb2a7IkhlHVKxNgGOEpVAZOQE8ritoVZV+B6xbpnNY2J68vZFqYy/BnkgJ+aL/9Uq0AqA+1Ivsjd2P+Clk5qpm0ZnQ8+CzaEiNENBRNE7aDFohgkezqET1gilIkvGoqDiahw/3hbr1BF848++6+ES20vUSxK2Uga4JQ0MGaKaKJyyAwwYO1MJITQosvt1JwtgiwQ=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_021","notbefore":1628971200000,"notafter":1692043200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1PApTQ/nFA6JcYUuo7GgP+gPSKf9\\n8BQh88IKHOt/yNS8ZrjxjL+lVY6EH4yyQdbQZGqS9d2Se5dxNwx5C3jxkA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUPUAmrN9wBn+eVuHqMp8b/blfPPMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxNDIyMDAwMFoXDTIzMDgxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNTwKU0P5xQOiXGFLqOxoD/oD0in/fAUIfPCChzrf8jUvGa48Yy/pVWOhB+MskHW0GRqkvXdknuXcTcMeQt48ZCjgeAwgd0wHQYDVR0OBBYEFIRbucEIacei+qS6DFsuclGQo2o7MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAhYhTafMjVKmyAFJhTx703KE211fPRx3YlWid6JeUNDIuYTQfIC0yPlvtaFM4Z9TVioHcTwweEfqNi10sGVNbWmWAk1RZhay01VCzzsCVscNmi2/7n+qAIHZWgLyAOjJZ2jVDidC8MWGQjb/qdpu1zh46AIiVmfUfhyvBfXP7dQKgx+nPrV+HhxwuaVGci/KccFIHoOu0rttjuUfg2HCQCr4CjLKZ+RHXny6zjfD3R9T1scndEkJot2L/f0lIIZez+oTx/Wo8ivNoy9C9T3py6as2AChlz1rXSNPsdJZ9M2pcCk8z1I8fAspOu+uEevXPig20cxBz1kJzHrAmvYPTB9JTwZHqek2wriAQ/7Oy92hWxr/6tnkdPC5aKUz0nEYBvJWWq3qO4O1GBXCBt8VdXklgPHvZCym2Yc1XKMdhtMVNpOOOZV6SoSTjoi6R3Eu2VSMQCd8RKYc7DjLss0FF6y5qYjBqmizjV5MKTxtxKFA62QUF0jI/9DypU1Pk3Vias9RpFkLiHE3UcVdGMbTvAc4hwH/bkOtg0W7lqnGsJTWdc8MbnZ3blVtrXylveHA/IXgERhyI3J0YCg3pWjJbEwnEqltUa0n93o0S6sDv78lt1uKAMre1+JUQ0lNNHldtljV6dvcQ7R+ebs3GEZUyDI20fmhIcNZCtmOehZm5fyM="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_003","notbefore":1631304000000,"notafter":1694376000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5Pw\\nahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUaaZNZoiS7up4kcKvogrzW8iwXbIwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5PwahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzKOB4DCB3TAdBgNVHQ4EFgQUPQQuG8z6nMfreGSJOz8MdoIMvFYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCe8I1wV8foZkHBp6MM5QbHFNut+gQ45nTjZEOVF2wzAZz4xa48Knhl9K6JdeBQhedQBzx3jKWEpl9A4ycPbwCwS7+HlpDzC23ZaesAGPhR+VAEyYMUEH8ONbsjKIA+rg/4OIJ5byPYxnZkdrSNH+NQzEn8Pb5ZAW8DQXeJgJ/x3Wg+Ogd0iM8yNd1sMMQiO20C4eBRaOtJZnr8W3xLRYaD5sxVHSWRkkCVELQXAVcugmiL6u9MR4KgxV5qWqi66GqHI4zfbe1H+EQ67bnH17YZ+ye0r+FRi7aacXy7Xtk08zQCqhDFaZDr2H7wTj5NJIuSnZc83gAyV+C4QxrkYIbVqPVJ+bea2RGvXYrcyH9LrZdPDJqylcKOoRpvSJoCoyJ40zu4B1tiludT2HdTwN5wjVLmAvJfPT+ZKnVXOgwabm/95Xs/Y8fOcfaRzH44p4j3e65uZ4U1n/gUnya9iaiNpBqYq0c8czOquRm1CJVf/shRkqmQTw7p8BaMygYs2VrS521LbiEeZALpG+sdoVUQfMRN8Ii2+RrJVu+AWUdz93+u98TRDodTRKfCIJq4/rDo9yepiKSgUjaxvvgDszQLcqHBFzHB9Y/Gv+l8YQzIKK9ZxFVEjEDX++heFPYC7C+LQToZcn9CKZAC6M3D7rRBEZ1ibMpVyEW4YXu9tu8RfA=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_004","notbefore":1631304000000,"notafter":1694376000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+\\n1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUIxJMjNw3dr88EcIE+hNISSiImkwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMKOB4DCB3TAdBgNVHQ4EFgQUW8d5IrarC3lBI/Bj5O53KmwrwI0wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCalwjJDDOjgInZboNfXmrdZjrxA7i65O84bWW1rnOSGZwBpdMcdKrNDiizyjklB6tSKuLH0fllMPUCMd2Umz9zTTKJG1usxQ5Yaf9BBW+g8Pwgn/mNRprogPK/VXFdLCOCmxr1/y1FEPgnecD3oBFhm4ojZywwWVrcUoPnRvqIfJLEvzvYais7y9PqkaFqW0TNyvaRq9tBYyFkvZUQuizKK10nmIXLzg6JYnSXR6awtRcZJs1eF53UQynv0dQmVZbMl/JM01y+sard38byiKzQc+v/ANI24zLHWw9iJm2/jlFTch8S2eazMEAe8EvpMqzzSOcIrmgrL/r9CQo00cFFkCGCIZWnHhHEKv+uuEPVilSJC7ijM8p5npt1PwqCCB4HWcdZEY1oCu3zjjOIIRIySZmKoailNEV4iZeAw0D++wkR1+OyywIebkaRVWKk/irrToYuvQYiTDlh1yIh7mmrL0/lULdONjsawOh/s0/vxKSyD+gkMVRzxBax7BhT3DLzj2L7E/Tw5DNL87k7zmlxcHGW8Oa6sIJwKRsTg/76frIf21u99FhfqeWkhfhZ5yTzGiJR6FquZ/tTrlq216MqICXO4QN8/p8OrP9foTS2+3FvWRWxk0pBEVZget0CtMP3PpZ+IC7gwp3wALhWtZwwY/64FUl9ZLZqId8RtbQBEQ=="},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\\nValidity","subject":"C = NL, O = Kingdom of the Netherlands, OU = Ministry of Health Welfare and Sport, serialNumber = 1, CN = Health DSC for vaccinations","notbefore":1622464052000,"notafter":1969360052000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsO\\nNkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw89w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDQjCCAuigAwIBAgIUU0JrRUBVL8DEW1z0jx8/+KAChLIwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDI3MzJaFw0zMjA1MjgxNDI3MzJaMIGTMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEkMCIGA1UEAwwbSGVhbHRoIERTQyBmb3IgdmFjY2luYXRpb25zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsONkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw896OCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBRVYJgZWfyzk3JJwB0HVdom7P7AxDArBgNVHRAEJDAigA8yMDIxMDUzMTE0MjczMlqBDzIwMjExMjI3MTQyNzMyWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAMMFkIuctSqsZbVBvE56YEZoxrF6m1n+F/IajFdNsRyeAiAC77Q6e6IOsDkPwq/ajPA5vslzeFETwcqNodsfAcJJEg=="},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\\nValidity","subject":"C = NL, O = Kingdom of the Netherlands, OU = Ministry of Health Welfare and Sport, serialNumber = 1, CN = Health DSC for test","notbefore":1622463583000,"notafter":1969359583000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERyOtPhis4M+vOSM+4AoqtBot3s7A\\nGrqQOSA2ZY3a25z5e4QlRpExd1S399CADvo5j0Nyqrm/azrhFIsSAc8FIg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDOTCCAuCgAwIBAgIUDWwu6rWJGF0zIQk/aKjdU0TXoQowCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE5NDNaFw0zMjA1MjgxNDE5NDNaMIGLMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEcMBoGA1UEAwwTSGVhbHRoIERTQyBmb3IgdGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEcjrT4YrODPrzkjPuAKKrQaLd7OwBq6kDkgNmWN2tuc+XuEJUaRMXdUt/fQgA76OY9Dcqq5v2s64RSLEgHPBSKjggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUJ6rwxau+2kWqjA+f1f8vUJSkiDkwKwYDVR0QBCQwIoAPMjAyMTA1MzExNDE5NDNagQ8yMDIxMTIyNzE0MTk0M1owDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0cAMEQCIFuevBHjahuLYCe1bOFCmy6V5FSfyJrVo5+hd0GCSDRMAiBdRK619VMnXNGf573r/PG6nVpeJ9aP/qpkmZG3TVGQDg=="},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\\nValidity","subject":"C = NL, O = Kingdom of the Netherlands, OU = Ministry of Health Welfare and Sport, serialNumber = 1, CN = Health DSC for recovery","notbefore":1622463240000,"notafter":1969359240000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEiY+AGRWtd8tCUb5PQdEPaCWAZl0D\\n/SIOtcDH8R8yrp/JT8MmMxV/wM15WiZf09Eyy3iJXwFT+9YOCyrBA/Cejg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDPTCCAuSgAwIBAgIUSK4bme7ziau/JZkM80IOLM8iauswCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE0MDBaFw0zMjA1MjgxNDE0MDBaMIGPMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEgMB4GA1UEAwwXSGVhbHRoIERTQyBmb3IgcmVjb3ZlcnkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASJj4AZFa13y0JRvk9B0Q9oJYBmXQP9Ig61wMfxHzKun8lPwyYzFX/AzXlaJl/T0TLLeIlfAVP71g4LKsED8J6Oo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANOTEQwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEDMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFO9JANKEcntn4oTJgtch48rqSZMpMCsGA1UdEAQkMCKADzIwMjEwNTMxMTQxNDAwWoEPMjAyMTEyMjcxNDE0MDBaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiA9SzdZR+dN+yQ8+lUKzFCUl7noJ6YzB49zVsdYBsXJbQIgFvifkX+12Ib3SsdCb9TGkzQtD4ZxCLrx1T0ycsNwiUU="},{"issuer":"C = HU, ST = Budapest, L = Budapest, O = EESZT, CN = DGC_CSCA_HU_PRD_20210621_01\\nValidity","subject":"C = HU, ST = Budapest, L = Budapest, O = OKFO, CN = DGC_DSC_HU_PRD_20210628_01","notbefore":1624882534000,"notafter":1687954534000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadM\\nS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICnDCCAkGgAwIBAgIUa/gUnrKtSo4XzXVTPkV2APtPwXEwCgYIKoZIzj0EAwIwaTELMAkGA1UEBhMCSFUxETAPBgNVBAgMCEJ1ZGFwZXN0MREwDwYDVQQHDAhCdWRhcGVzdDEOMAwGA1UECgwFRUVTWlQxJDAiBgNVBAMMG0RHQ19DU0NBX0hVX1BSRF8yMDIxMDYyMV8wMTAeFw0yMTA2MjgxNDE1MzRaFw0yMzA2MjgxNDE1MzRaMGcxCzAJBgNVBAYTAkhVMREwDwYDVQQIDAhCdWRhcGVzdDERMA8GA1UEBwwIQnVkYXBlc3QxDTALBgNVBAoMBE9LRk8xIzAhBgNVBAMMGkRHQ19EU0NfSFVfUFJEXzIwMjEwNjI4XzAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadMS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/KOByDCBxTAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFLfwN2b/BblsB3wY92Sbxbc7QOmZMB8GA1UdIwQYMBaAFPHcUjbpr2UPGVKQEwKXLMGD4sDTMEEGA1UdHwQ6MDgwNqA0oDKGMGh0dHBzOi8vd3d3LmVlc3p0Lmdvdi5odS9jcmwvZGNjL0NTQ0FfUFJEXzAxLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCxhu4NSIKO9F8jlaxe3EqAIDoPAaF5A9+GPy03W0PpVQIhAL12JyQzJ9f7qnLapDMUSf6HD0+AMNHl9BjHZphNBUlu"},{"issuer":"C = SK, ST = SK, L = Bratislava, O = NCZI, OU = DGCOperations, CN = CSCA_DGC_SK_01\\nValidity","subject":"C = SK, L = Bratislava, O = NCZI, OU = DGCOperations, CN = DGC_01","notbefore":999381600000,"notafter":999295200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6qxT6sSK3TDheWFHTBkfveooRhtU\\nWqEqrELD9B7aAk7xjPS3MBETtmnWb4nRzBINvFwrLDxQCqTX8Jevp33c4Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICVTCCAfqgAwIBAgIUSfAlV5Ro7+hRqRa9kH4Un95XIGQwCgYIKoZIzj0EAwIwbzELMAkGA1UEBhMCU0sxCzAJBgNVBAgMAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMRcwFQYDVQQDDA5DU0NBX0RHQ19TS18wMTAeFw0yMDA5MDIwMDAwMDBaFw0yNDA5MDEwMDAwMDBaMFoxCzAJBgNVBAYTAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMQ8wDQYDVQQDDAZER0NfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATqrFPqxIrdMOF5YUdMGR+96ihGG1RaoSqsQsP0HtoCTvGM9LcwERO2adZvidHMEg28XCssPFAKpNfwl6+nfdzho4GIMIGFMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUj9izCT/z9ccQUX6CeZ0ns8Zu0SMwHwYDVR0jBBgwFoAUm9JYe8TeF7J1Gm8LZ2DfcBXXLHMwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNJADBGAiEA1jDNVMcnPoIOaGxeFRKaRZ8MrwR6xmmv0F0I0l5wKuUCIQDnaar37bg6T8i3rJp6KHQkJqJ1NSnc0Qltw1qghCJC0g=="},{"issuer":"C = LT, O = State Enterprise Centre of Registers, CN = LT_DGC_CSCA_1","subject":"C = LT, ST = Lithuania, O = Ministry of Health of The Republic of Lithuania, CN = LT_DGC_DSC_2","notbefore":1625083201000,"notafter":1688155201000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsIcppmCVhq96vMc4NtW8\\nX+yV6O1oC7hfKnewK1/pxfByqlVTPpETDLAjNq9knNQpCs7vGjadCbDAylsQRK7q\\nfU3sUUKamh6FgDhFo1dzC4mUHCy3XBL04XJie2eT/a6Wgjrn6NjEFk5M4Jl4N8u/\\nRbfaVxqaOjUM0hBfuzfZeL2LT30POqDHj1hcyod1fIbG4vv2Upqxe3OX/WLr+WzS\\nPbRkPwxcJjmYeNYODT0rEcd9VSzJpljaK+eDVwxT0wMRnCH2QLxdw8sR+oDYDTZB\\naabeHYyZ0CfYzSoBOZT3fVMAbjkVAl8GFyH8tUm4lMQbYEMbl/FkftcZQicaqvRd\\nQQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIFBDCCArigAwIBAgIGAXpe76SiMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYzMDIyMDAwMVoXDTIzMDYzMDIyMDAwMVowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCHKaZglYaverzHODbVvF/slejtaAu4Xyp3sCtf6cXwcqpVUz6REwywIzavZJzUKQrO7xo2nQmwwMpbEESu6n1N7FFCmpoehYA4RaNXcwuJlBwst1wS9OFyYntnk/2uloI65+jYxBZOTOCZeDfLv0W32lcamjo1DNIQX7s32Xi9i099Dzqgx49YXMqHdXyGxuL79lKasXtzl/1i6/ls0j20ZD8MXCY5mHjWDg09KxHHfVUsyaZY2ivng1cMU9MDEZwh9kC8XcPLEfqA2A02QWmm3h2MmdAn2M0qATmU931TAG45FQJfBhch/LVJuJTEG2BDG5fxZH7XGUInGqr0XUECAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUPZCkpW9sE+8wWf3UeVmVyI2yuKMwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQAh3n6+6+wrWjfQc0PYua+M5sB7QMU1K0jo3Hs+lwYiMEnIZNbdQgnuNAYHm4cf3Qy1YLt9XkMQdzwRz3kbSUQ4iythOby2GBEgCZ7fr17h/2o7VL9QC+hMUqsBXWYEQ1JuYz/L64X60sbIgt2qLy+oeA4WEVc1Yuz7DQsJG0qZRovVQvRy0cL7RHc6uiraaUxsKX7WFzNf6KlT1C1GeFJzcPSTclYMtHR3UgecUEaEenPciPMmUsJY5AOmZqxvJT62Nit9iuR18SieBNK+rJTrmxF4AV5Q7PE7Dhq5HBZhy7gE0UG1XfvSVSIcJcbMiDLxa+lXCFCVOf7drq2CaaIc6UQ0UXTeVmdbkJPid1/pvGLbIyL4UmOqxpzETcIRJKtvhF3UF1cD86/V/77qtZh0UeoCMGSdarZFvWB4As4PrEuvJB6Sfo1D++dCfQkfFEhQZO7wk1zLUB3Pqip2Io3eLn1oXMPxqtoYYH1vGv3HANhd8hVuO3ujYQgb9InLCnl7qPix5f8QrnRA4q72gpofoBnfGziMAyo9EKBib72waWaIpHi8Aw1XJntpHwld0gOV/cs/BquYdtqJpdW2FpoUvP4SbbxUVyDub+Uu2+Q9LKuIFlG4fqgRCUQ5NbgB5wmTxlYEc0xTb/VNICUtDSga4Fjeznm5l0oc4NoS6G4wzw=="},{"issuer":"C = LT, O = State Enterprise Centre of Registers, CN = LT_DGC_CSCA_1","subject":"C = LT, ST = Lithuania, O = Ministry of Health of The Republic of Lithuania, CN = LT_DGC_DSC_1","notbefore":991849826000,"notafter":991849826000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnhBpxzeGXNlQs7U+j/Av\\n1BUZ6CCgMR3bFLT4rRjO8KQ4IpAKqSCQ3j57MJqdumk3AUfHO5zhMZF4Awy0wqV3\\noFlyP49/56KKZxGARe5UkyfPjVbl8AZpLmgYoS/Ior53TLrwmT/+zvXynzFYbOi2\\nOtCtqanG+9OUhSVRrXEEB+56PpCltE31wemX1behxDuCbE4tuqyTYODFw9Le3dGC\\nbHWdjxi5W3XIUNo8j2u2PKue0KS76Xv0zAYItTgChgv7mM55/G109m4MfeU7AHah\\n43bJth8K8y+SxG3RYHskmNZ7sfn3w8w7WyW7D3/tKHcMt3hgIh9z3DuWeR1C296J\\nyQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIFBDCCArigAwIBAgIGAXni4GKHMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYwNjE5NTAyNloXDTIzMDYwNjE5NTAyNlowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ4Qacc3hlzZULO1Po/wL9QVGeggoDEd2xS0+K0YzvCkOCKQCqkgkN4+ezCanbppNwFHxzuc4TGReAMMtMKld6BZcj+Pf+eiimcRgEXuVJMnz41W5fAGaS5oGKEvyKK+d0y68Jk//s718p8xWGzotjrQrampxvvTlIUlUa1xBAfuej6QpbRN9cHpl9W3ocQ7gmxOLbqsk2DgxcPS3t3Rgmx1nY8YuVt1yFDaPI9rtjyrntCku+l79MwGCLU4AoYL+5jOefxtdPZuDH3lOwB2oeN2ybYfCvMvksRt0WB7JJjWe7H598PMO1sluw9/7Sh3DLd4YCIfc9w7lnkdQtveickCAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUwMNfEDstM4gYK8a8WQno8Qt1IZQwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQANsbkQ7P3OljNurVYmgB4g/76/tLMzbRExCuUltzxJW1zVZb4juuHNkmjIsUupaiYG8F8fQJpeRam2qgaPaPWqTYwn1lm8K+Ab4jE+9F6nyTJfvI2+BzOcGFsTUr+6If2YafJE9UMCeQWGP1kLX5srtQVTvb7fNHHnEvmijdKoqPv8Xcnkl6j53aZjeM6RrpSqrdtneHwquq9OWnjuKVDGZ1bDiIl52wjCQ+GLczPUtHai+qHNmhOibiT+JoT//fDb96vHlf40Y39zyxRFx0kx9zws8CbAPtvJOfWg6OjY50ARZRfixc6uFrCmnHtpzfcO3f+XwPBIBmvTjphZDGRqNjP46wqUv5vfpquIprhNef+jYi3k+719IBn5QuBNq4vJcMYHitK4WJ24TIxemq5YIXQYQct4t90V04Byhz7phox5P2rZJl3VBOSss7bGu64qc5Dh96joLLHFLChqqqDbhq7RI6Gl8Yn0ShUMg3WTbktTQ9dpGzYdH3wbbuMbzvGOYRTqTVGBH8eb9KJbgC0cDDhelHNXUcwn3Vvbdx3Y9KB2y50VTs9ZcawH52o4BuNwx3vO/L3Eq2EnkIZ2mobJDIGbBJUN2ttBim5muQxgEKns/QgNTpEZgBTkFjQ7mB7gIC8SHDDmU5wXe5aA3GN5/Gl5aUc3rHDmnZQKax63jw=="},{"issuer":"C = CY, ST = Nicosia, L = Nicosia, O = Ministry of Health, OU = IT Department, CN = CSCA_EUDCC_CY_01\\nValidity","subject":"C = CY, ST = Nicosia, L = Nicosia, O = Ministry of Health, OU = IT Department, CN = DSC_EUDCC_CY_01","notbefore":1624399200000,"notafter":1686734602000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7S/R06707Glu721qJqvxIFzQ2LSb\\nq9P2uu6nRKCBLsH5ryP3wXpggL6hGh080F462bGLTuI/hXrxEB2kR2Vjww==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICjzCCAjWgAwIBAgIJAPS0Vbm3L3MTMAoGCCqGSM49BAMCMIGBMQswCQYDVQQGEwJDWTEQMA4GA1UECAwHTmljb3NpYTEQMA4GA1UEBwwHTmljb3NpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRkwFwYDVQQDDBBDU0NBX0VVRENDX0NZXzAxMB4XDTIxMDYyNDExMjMyMloXDTIzMDYxNDExMjMyMlowgYAxCzAJBgNVBAYTAkNZMRAwDgYDVQQIDAdOaWNvc2lhMRAwDgYDVQQHDAdOaWNvc2lhMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxGDAWBgNVBAMMD0RTQ19FVURDQ19DWV8wMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO0v0dOu9Oxpbu9taiar8SBc0Ni0m6vT9rrup0SggS7B+a8j98F6YIC+oRodPNBeOtmxi07iP4V68RAdpEdlY8OjgZQwgZEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2NybC5ldWRjYy5nb3YuY3kvZHNjLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMCsGA1UdEAQkMCKADzIwMjEwNjIzMDAwMDAwWoEPMjAyMzA2MjMwMDAwMDBaMAoGCCqGSM49BAMCA0gAMEUCIQCL2pPCMNugzz3sGPDO02C6oMYvlkj6lfxPbckgmegv6QIgANPWEyptdWnK8y0WpU85VROr4cjobAkRNioquyCln00="},{"issuer":"C = NO, O = Norsk helsenett SF, CN = NO NHN CSCA PROD\\nValidity","subject":"C = NO, O = Norwegian Institute of Public Health, CN = DSC HN EU 2","notbefore":991898173000,"notafter":991898773000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErbWQM5hj5SeR23DzCV0TVKrFhfYs\\nmNVVSbPFxwyw4ZEfersZ3bp2h+rw2BhbLbzVHZIwWfnhaKZ72+JciUksFQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICLzCCAdWgAwIBAgITWQAAAAMkF9vUXhL/vwAAAAAAAzAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYwNzA5MTYxM1oXDTIzMDYwNzA5MjYxM1owUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEhOIEVVIDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASttZAzmGPlJ5HbcPMJXRNUqsWF9iyY1VVJs8XHDLDhkR96uxndunaH6vDYGFstvNUdkjBZ+eFopnvb4lyJSSwVo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBTjjLs+qOV9Ef2iKzss4qIJTpVymjAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIFoTcS0308Htrwu8gtsc1YX2679u/+UjB6i3iG4BvUGFAiEAirH6ggtWwXqXH94+kfwQ0A5q0pPGCdik4BIlnYmnpMk="},{"issuer":"C = NO, O = Norsk helsenett SF, CN = NO NHN CSCA PROD\\nValidity","subject":"C = NO, O = Norwegian Institute of Public Health, CN = DSC AN EU 5","notbefore":1623742241000,"notafter":1686814841000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfBeQBQBjyKpvjsCujqi15xnygRMy\\nhjNsEy198LzTYuB+Mje1lxIvPYkfO/PEHQFgA52gn26bHCXE75GWqq6UMw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICLzCCAdWgAwIBAgITWQAAAAY+BhnAubZsywAAAAAABjAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzA0MVoXDTIzMDYxNTA5NDA0MVowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR8F5AFAGPIqm+OwK6OqLXnGfKBEzKGM2wTLX3wvNNi4H4yN7WXEi89iR8788QdAWADnaCfbpscJcTvkZaqrpQzo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRQ+3DSiNYiK7x+Rm48SPxVU66ILzAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIQCpipDAPcRMuFYLkVIA2qxW3bikYzJzNxdvnqzDMMitFAIgFt8q+4FM53rl4bfBzwnQRpXDLaGc4bdKC0wcjBUHKyQ="},{"issuer":"C = NO, O = Norsk helsenett SF, CN = NO NHN CSCA PROD\\nValidity","subject":"C = NO, O = Norwegian Institute of Public Health, CN = DSC AN EU 4","notbefore":1623742226000,"notafter":1686814826000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElH46JUamhvfj2ocSTxw9Eq7nVdP9\\nOzBOxQ/zaWNXN5ucagla6nruNqfDiZXQMcz4gpZ6pcjtJl+xra2ATzZ9Pw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICMDCCAdWgAwIBAgITWQAAAAVu7yCnw/v4agAAAAAABTAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzAyNloXDTIzMDYxNTA5NDAyNlowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASUfjolRqaG9+PahxJPHD0SrudV0/07ME7FD/NpY1c3m5xqCVrqeu42p8OJldAxzPiClnqlyO0mX7GtrYBPNn0/o4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBSLtW/xwBSwzLlO3mNEzuueB3HOOTAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0kAMEYCIQDhu8xPp4rym01BCIlLAPB4UftU+yrPjxnsEPk+q4Bk4wIhAKVSgCN39hpSqqb5ErHWJdTp6+zJalGHg3Oj990zNYBY"},{"issuer":"C = SI, O = \\"NIJZ, National Institute of Public Health of Slovenia\\", OU = NIJZ eHealth, CN = Slovenian Digital Covid Certificate CSCA\\nValidity","subject":"C = SI, O = \\"NIJZ, National Institute of Public Health of Slovenia\\", OU = NIJZ eHealth, CN = Slovenian Digital Covid Certificate Signer","notbefore":1622188800000,"notafter":991634013000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEmxEg2iFDaol9DVnrqIY5zkPXrBA\\nNQlakmUfrBhogaDC2ZZ7fkQ2IcOJgEF4rQSyb34g5jDw88g7QaIknaLKMw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC6jCCApCgAwIBAgIUJUAGAXpxHsU1S82LcnISggTrZYcwCgYIKoZIzj0EAwIwgZcxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTEwLwYDVQQDDChTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBDU0NBMB4XDTIxMDYwNDA3NTMzM1oXDTIzMDYwNDA3NTMzM1owgZkxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTMwMQYDVQQDDCpTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQSbESDaIUNqiX0NWeuohjnOQ9esEA1CVqSZR+sGGiBoMLZlnt+RDYhw4mAQXitBLJvfiDmMPDzyDtBoiSdosozo4G1MIGyMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUhB9+YwGh9z/Z2AFAekINW9AqzMwwHwYDVR0jBBgwFoAU1u0NkxR1dJeR9jh6pZ04KsvRFV8wMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzArBgNVHRAEJDAigA8yMDIxMDUyODEwMDAwMFqBDzIwMjIwNTI4MTAwMDAwWjAKBggqhkjOPQQDAgNIADBFAiEAgD02EKWZhDUblN1geYhOR8UYvbz1kKcncPzq4Y7SgS0CIEsbjBaDw8vWDqXsbDg7gckdK6SuF16w9Uvr/peExozy"},{"issuer":"CN = Poland DGC RootCSCA 1, O = Ministry of Health, C = PL\\nValidity","subject":"CN = Poland Test DGC Service 1, OU = eHealth Centre, O = Ministry of Health, C = PL","notbefore":1622022625000,"notafter":1685094625000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERG4yI/SSv70zEtVjzIrn/CypR1e0\\nBZO5u8bIgltZicrg+992n2a7GucxK6zy91xq8F8XH7B0SJU75qkr8Z1d9A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIChjCCAiygAwIBAgIISPHH9eN/DsUwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTAyNVoXDTIzMDUyNjExNTAyNVowZzEiMCAGA1UEAwwZUG9sYW5kIFRlc3QgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAREbjIj9JK/vTMS1WPMiuf8LKlHV7QFk7m7xsiCW1mJyuD733afZrsa5zErrPL3XGrwXxcfsHRIlTvmqSvxnV30o4HeMIHbMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQUJtco+4DwjQXe7tYA2X0svBWc8aowKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTUwMjVagQ8yMDIyMDUyNjExNTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQD0aM2oui9agdjvs3W3CBnJzNj1QTn86txDT8z4f92U/QIgdfA1+c567xA4y/11vguxxe9nDHAtAAEpXe8FkupyFTk="},{"issuer":"CN = Poland DGC RootCSCA 1, O = Ministry of Health, C = PL\\nValidity","subject":"CN = Recovery DGC Service 1, OU = eHealth Centre, O = Ministry of Health, C = PL","notbefore":1622022589000,"notafter":1685094589000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdxvWMfuk6CHCbffZWPS6bRgVYglY\\ndED1NT1FCfXstUZ81AWmYOh6tbZgOF9OM1lzqdpFD1uOmEZ0A8XXYmkB1A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICgDCCAiagAwIBAgIINrcF73thXScwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNDk0OVoXDTIzMDUyNjExNDk0OVowZDEfMB0GA1UEAwwWUmVjb3ZlcnkgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3G9Yx+6ToIcJt99lY9LptGBViCVh0QPU1PUUJ9ey1RnzUBaZg6Hq1tmA4X04zWXOp2kUPW46YRnQDxddiaQHUo4HbMIHYMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQU88MJtD/tgeFEqpb+Her86lI3G3UwKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTQ5NDlagQ8yMDIyMDUyNjExNDk0OVowCwYDVR0PBAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQDA6URDSMLbEYaFP1V1bfDlZDE5aANs8FcjghZGnadrHwIgbCe6gwSV5PAMwGXMgtbf9ItPzgFxV67mZzvH+avXOck="},{"issuer":"CN = Poland DGC RootCSCA 1, O = Ministry of Health, C = PL\\nValidity","subject":"CN = Poland Vaccination DGC Service 1, OU = eHealth Centre, O = Ministry of Health, C = PL","notbefore":1622022790000,"notafter":1685094790000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3N\\nVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICiTCCAjCgAwIBAgIIPrgTduwYL84wCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTMxMFoXDTIzMDUyNjExNTMxMFowbjEpMCcGA1UEAwwgUG9sYW5kIFZhY2NpbmF0aW9uIERHQyBTZXJ2aWNlIDExFzAVBgNVBAsMDmVIZWFsdGggQ2VudHJlMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3NVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78qOB2zCB2DAfBgNVHSMEGDAWgBSReaLaaIESwKN0GqS63esPmeyLATAWBgNVHSUEDzANBgsrBgEEAY43j2UBAjBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vcDEuZXpkcm93aWUuZ292LnBsL2NjcDEvY3JsL0RHQ1Jvb3RDU0NBMS5jcmwwHQYDVR0OBBYEFEfkBAHCnTR6Ar66rg0lwacUkD9aMCsGA1UdEAQkMCKADzIwMjEwNTI2MTE1MzEwWoEPMjAyMjA1MjYxMTUzMTBaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiBrwE3IHj2Vjq71fA3jNBz/Hso3xXhVtPXa42JcfDJrvgIgLsib0ZAxm3ERXePd4Nlgvt+lISofEHlIi+CEBpJd5sE="},{"issuer":"C = FI, O = Vaestorekisterikeskus CA, OU = Sosiaali- ja terveydenhuollon palveluvarmenteet, CN = VRK CA for Social Welfare and Health Care Service Providers\\nValidity","subject":"C = FI, ST = Finland, L = Helsinki, O = Kansanelakelaitos, OU = Kanta, serialNumber = 1.2.246.556.12.21.2, CN = Todistuspalvelu","notbefore":1624006800000,"notafter":1687114799000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEepKcLfnTZIej9gSNJVmR8sRYMMgz\\ntnG9h0ZGWx7D1X1g32V/GtJc55HkoH+vqkbkhKJnvDBJ1JdsbkKKmBJb2Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = EE, O = Estonia, OU = Police and Border Guard Board, serialNumber = 01-2020, CN = CSCA_Estonia","subject":"CN = 02-2021_DCC, serialNumber = 02-2021, C = EE, O = Estonia, OU = Health and Welfare Information Systems Centre","notbefore":991993162000,"notafter":1007548762000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNf\\nd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEtzCCAm+gAwIBAgIBFjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDBwMQswCQYDVQQGEwJFRTEQMA4GA1UECgwHRXN0b25pYTEmMCQGA1UECwwdUG9saWNlIGFuZCBCb3JkZXIgR3VhcmQgQm9hcmQxEDAOBgNVBAUTBzAxLTIwMjAxFTATBgNVBAMMDENTQ0FfRXN0b25pYTAeFw0yMTA2MDgxMTM5MjJaFw0yMzEyMDUxMTM5MjJaMH8xFDASBgNVBAMWCzAyLTIwMjFfRENDMRAwDgYDVQQFEwcwMi0yMDIxMQswCQYDVQQGEwJFRTEQMA4GA1UEChMHRXN0b25pYTE2MDQGA1UECxMtSGVhbHRoIGFuZCBXZWxmYXJlIEluZm9ybWF0aW9uIFN5c3RlbXMgQ2VudHJlMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNfd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4KOBtzCBtDAdBgNVHQ4EFgQUrz4uJgDuJ+1fAWhBPQpmWJOqvUMwKwYDVR0QBCQwIoAPMjAyMTA2MDgxMTM5MjJagQ8yMDIxMTIwNTExMzkyMlowDgYDVR0PAQH/BAQDAgeAMDUGA1UdHwQuMCwwKqAooCaGJGh0dHBzOi8vd3d3LnBraS5wb2xpdHNlaS5lZS9jc2NhLmNybDAfBgNVHSMEGDAWgBRVq9JvhX7uQOBhSt+YPiu2k2xVvDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIAOCAgEAJ/OIJaw1Hg+yD7TH3YPG7ux6I4Fpx1QC1UPdIouG0HcHm8Lde+cB1IHlHc/C03jvVWnkbeH0mlpHLcStNICIgc8wfhOLS/yDvor/sYSNNX2v9OcJuxWmL6a2b3C5vuQJNr09HrSqv+1MDM/Qj7qRSraO9JSm59StyaoEdZXgK40eNnSxfRD2HFRpqr6aY+FB7ONH53/nCi/PT+fW6LB2hS+VtBUaWt1pShs2W8cahNJ/O6oujquKDhTj8uqdbhV9lug2JJ2/eLxWawEYVGC20HMrg9qwW971mR3UeGZmbJb0KyHr4b1LupC+sN88/A0CwCybS3x2Dla/OvPff7W1BqFyhEzBgDL1jB9iVF57erYGkoPd9oHKTIQdZ84u7JKLvi13xJGAR4KAsryrfP0Wcc29+TQJPZwedaauz96OUpC92hcu21cI5drikSF/Y9U96gGay0AWHM+DafA6NEUiWRMIFC3IaMjMr6FFwz4uq6KTK08YZoN/Dn09eVgrBcXqHR69FSJ00lwduDDamN9JHmy5wuLw22rDaXiymUYAkZZCc1PS2yJG8bIOfzYEAHAbESlJQ671MmudVDRM3PuvVICRp0jXZg/sNzT053rDpk0Z2nxKLcAVzPo0wRgnpih1zVchVTakNbWxwsOPftCSVnZjEhAHvq/GZ3ysssMNRUc="},{"issuer":"C = AT, O = BMSGPK, serialNumber = 001, CN = AT DGC CSCA 1\\nValidity","subject":"C = AT, O = BMSGPK, serialNumber = 001001, CN = AT DGC DSC 1","notbefore":991482324000,"notafter":1639662324000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYE24qIKmdcfRWUh2TqklkfZ6nyNB\\npX4VHeLMxfFl8rkQ8Zku0bcnH5OZXckkSt+tKs+FGZ9tKJ1VtNDmedlL6w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIB7zCCAZagAwIBAgIKAXnM+L47fmBcezAKBggqhkjOPQQDAjBEMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQwwCgYDVQQFEwMwMDExFjAUBgNVBAMMDUFUIERHQyBDU0NBIDEwHhcNMjEwNjAyMTM0NTI0WhcNMjMwNjAyMTM0NTI0WjBGMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQ8wDQYDVQQFEwYwMDEwMDExFTATBgNVBAMMDEFUIERHQyBEU0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGBNuKiCpnXH0VlIdk6pJZH2ep8jQaV+FR3izMXxZfK5EPGZLtG3Jx+TmV3JJErfrSrPhRmfbSidVbTQ5nnZS+ujbjBsMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUNs2smrjBhuR5Bqxl6teE1x1o2ycwHwYDVR0jBBgwFoAUHyKsHGUWKbTBmLNjb7/dCZ27e3swGgYDVR0QBBMwEYEPMjAyMTEyMTYxNDQ1MjRaMAoGCCqGSM49BAMCA0cAMEQCIDjXHnyzq3sTisMX1uY8xQ2ZqCRL2xmxtYOPhSZ9ZacYAiAqHUMOC7WNgq4h28n31WLc1mMPAYauWslSEwnXC79AGw=="},{"issuer":"C = BG, O = Ministry of Health, OU = Health Information System, CN = Bulgaria DGC CSCA 1\\nValidity","subject":"C = BG, L = Sofia, O = Ministry of Health, OU = Health Information System, CN = DGC DSC 1","notbefore":1622198511000,"notafter":1685270511000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmyxlsE2inBusapxY7LvRiPN0s+ds\\nHnakaaa9M/5NDZZTljSZCzeK77fWO9MFRcGCXrTQaXNE3FhkV4+a92hRaw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICpDCCAkugAwIBAgIURXVV/Gq2Irn6g/NqhBUW+K90bQowCgYIKoZIzj0EAwIwbDELMAkGA1UEBhMCQkcxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDEiMCAGA1UECwwZSGVhbHRoIEluZm9ybWF0aW9uIFN5c3RlbTEcMBoGA1UEAwwTQnVsZ2FyaWEgREdDIENTQ0EgMTAeFw0yMTA1MjgxMjQxNTFaFw0yMzA1MjgxMjQxNTFaMHIxCzAJBgNVBAYTAkJHMQ4wDAYDVQQHDAVTb2ZpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMSIwIAYDVQQLDBlIZWFsdGggSW5mb3JtYXRpb24gU3lzdGVtMRIwEAYDVQQDDAlER0MgRFNDIDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASbLGWwTaKcG6xqnFjsu9GI83Sz52wedqRppr0z/k0NllOWNJkLN4rvt9Y70wVFwYJetNBpc0TcWGRXj5r3aFFro4HEMIHBMAwGA1UdEwEB/wQCMAAwLAYDVR0fBCUwIzAhoB+gHYYbaHR0cDovL2NybC5oaXMuYmcvY3NjYTEuY3JsMB8GA1UdIwQYMBaAFFeMHPlme+J4tvwi8r3u4ZCmP7FWMB0GA1UdDgQWBBS+Zk3uynTTHvB0Mb9eAgWF0vA6DDAOBgNVHQ8BAf8EBAMCB4AwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNHADBEAiBjSeBvjP2L5USPCkCAZggp/d4Mw/PUGt17jQdEet7f1AIgFI0GKAKWwdMW+xDfZmN4XAv27Z20ryj6kFY08jdIlo0="},{"issuer":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-CSCA-PROD-20210608, emailAddress = webmaster@llv.li\\nValidity","subject":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-DSC-TEST-PROD-20210608, emailAddress = webmaster@llv.li","notbefore":991978920000,"notafter":991978920000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBnFUjr8FpfpVaVFtCUW7Yg6JBk/n\\n1TlJKEKpm/rZOvAEzKpwoTCpXpXPP1SPGhvQXzJ+i4dBQHgbdw2SDpcZmQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC8zCCApqgAwIBAgIIP9+ZLHC2FYQwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc0MjAwWhcNMjMwNjA4MDc0MjAwWjCBlDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEmMCQGA1UEAxMdREdDLU5CLURTQy1URVNULVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQGcVSOvwWl+lVpUW0JRbtiDokGT+fVOUkoQqmb+tk68ATMqnChMKlelc8/VI8aG9BfMn6Lh0FAeBt3DZIOlxmZo4HXMIHUMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFKdEjVLpS/bdKCMQdvpMviuko+rEMB8GA1UdIwQYMBaAFPSeeHwW3w57BFMM1pp4NCgcTd+FMA4GA1UdDwEB/wQEAwIHgDA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vY3JsLmxsdi5saS9ER0MtTkItQ1NDQS1QUk9ELTIwMjEwNjA4MB4GCWCGSAGG+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwFgYDVR0lBA8wDQYLKwYBBAGON49lAQEwCgYIKoZIzj0EAwIDRwAwRAIgTvGgYK3ij9bZvyKshoyDlYrQwXR7Btj0JIcpdq6NFqECIHd6ABGRr+NyKJjnlB7ZlYiJDfrERVPyF/q/Esmhv56P"},{"issuer":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-CSCA-PROD-20210608, emailAddress = webmaster@llv.li\\nValidity","subject":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-DSC-RECOVERY-PROD-20210608, emailAddress = webmaster@llv.li","notbefore":991979820000,"notafter":991979820000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9B\\nnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiAw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+TCCAp6gAwIBAgIIEVh/vC3chgUwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NzAwWhcNMjMwNjA4MDc1NzAwWjCBmDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEqMCgGA1UEAxMhREdDLU5CLURTQy1SRUNPVkVSWS1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9BnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiA6OB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBT+nyG6/wNEQ0TEblj8ow7u2bNB4DAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQDqBN9eq6TjWFWqhOkU9hvdA5hBacvUjL0Rt3i5dbV8kwIhAKhpBMwxHfoFXS7FwiuXOyj4zxZ60pPvPbxYGawo9OZI"},{"issuer":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-CSCA-PROD-20210608, emailAddress = webmaster@llv.li\\nValidity","subject":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-DSC-VACCINATION-PROD-20210608, emailAddress = webmaster@llv.li","notbefore":991979640000,"notafter":991979640000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30f\\ntIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+jCCAqGgAwIBAgIIECN/LlZb7kkwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NDAwWhcNMjMwNjA4MDc1NDAwWjCBmzELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEtMCsGA1UEAxMkREdDLU5CLURTQy1WQUNDSU5BVElPTi1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30ftIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJKOB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQ3BvFcjsG6REaqwESNcZW1BjNTwDAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQECMAoGCCqGSM49BAMCA0cAMEQCIEEnfB5SgmatugluROBG4Q06cVdBulDo4S4vQJXO0lj2AiABMtLp5pBQA/cS9ksKlYkCuj/X2TTnM3yIPhngaEN/7A=="},{"issuer":"CN = CSCA Saude, serialNumber = 001, O = Republica Portuguesa - Portuguese Republic, C = PT\\nValidity","subject":"CN = DGC DS, serialNumber = 001, O = Republica Portuguesa - Portuguese Republic, C = PT","notbefore":1621606631000,"notafter":1684678630000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnjK8A8ato900a+wQ1IaxJyaeUGQ5\\nlwsYOCRlq47X4DKGe+P3L22utYcGTWtCekBqarcEzzSHH/X+s5aeEQgYYA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICKTCCAc6gAwIBAgIUb724peU13ddK2UiaXfZ8lJA3KpAwCgYIKoZIzj0EAwIwZTETMBEGA1UEAwwKQ1NDQSBTYXVkZTEMMAoGA1UEBRMDMDAxMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vlc2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMB4XDTIxMDUyMTE2MTcxMVoXDTIzMDUyMTE2MTcxMFowYTEPMA0GA1UEAwwGREdDIERTMQwwCgYDVQQFEwMwMDExMzAxBgNVBAoMKlJlcHVibGljYSBQb3J0dWd1ZXNhIC0gUG9ydHVndWVzZSBSZXB1YmxpYzELMAkGA1UEBhMCUFQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASeMrwDxq2j3TRr7BDUhrEnJp5QZDmXCxg4JGWrjtfgMoZ74/cvba61hwZNa0J6QGpqtwTPNIcf9f6zlp4RCBhgo2AwXjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFH4yvG+XLvlf69AVR2efiYzKIWgOMB0GA1UdDgQWBBQlYiuUojmAFDYjAmowakBbgeqeNTAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSQAwRgIhALe/oIGICdSXhdPOH7yFiPAUR/FhjdX+dsCyvU8Am4pLAiEA2HtA78ZO3jLs7BoIgh+xZ5fqaJbCIFMdwVzdJ/hCvWY="},{"issuer":"C = LV, O = VAS Latvijas Valsts radio un telev\\\\C4\\\\ABzijas centrs, 2.5.4.97 = NTRLV-40003011203, CN = Digital Green Certificate CSCA\\nValidity","subject":"CN = LV DSC 002, O = Nacion\\\\C4\\\\81lais vesel\\\\C4\\\\ABbas dienests, C = LV","notbefore":1624978495000,"notafter":1688050495000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5/m2YdN8L81Ajoi+2brFJbul628a\\nlfXRXU26t7hRYEvvsb74tSVm2Dm9cbuhrgFJ+/wXecdxh0tTSHCkMfB0hQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE4DCCAsigAwIBAgIQIVI8+7pCJKdg21Bf1/kMnDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA2MjkxNjU0NTVaFw0yMzA2MjkxNjU0NTVaME0xEzARBgNVBAMMCkxWIERTQyAwMDIxKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOf5tmHTfC/NQI6Ivtm6xSW7petvGpX10V1Nure4UWBL77G++LUlZtg5vXG7oa4BSfv8F3nHcYdLU0hwpDHwdIWjggFEMIIBQDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMB0GA1UdDgQWBBRJf+oSyT8lY9W8EXkcQkkbATciFzAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQA4+nXE7XWgwDhBUeldjoFgT1kRu6D5LzgFUsrTqicHFjGWXeXQKBnM9Dfx8iZBSY64O7FS/ompqIGxMFFZcBRYUgdaC9KQorL48w4b8WFCSQe0KUhDNqdlACWceq6/0tVtfek1M85bQ+ETU6InqY5sir7cZpyXFRXXXbdHqXjioC/EwfRo1/OB3wBX3/9HWcebIEskw4or2Z5p5BERPi2EQfp5cfv6BpH7tPYt0XJ7vA9WhsLLZGWPfKIU10iBF/DTGW5c2u/3yVCEbF215khpXx187kvXchIln4ZCbIiGkJrJRmnS6XZ++1c0BQpW4tdvUvxhuhqqln7GQPrOZK6HoOwFOjOC/k0oIkgYzJ+8xv7DA2PIXlOjSmkuZIqB4fr3DVKtnAVqWKKxnBMXqgyYlJenTUvp7OpUl+iYKqvSn7WX2F0wZQlYH+Gz1pGDdeyw4+cKZtUND6rFwHC9OxzeXM00wDp+G7O7IFBtwzaVrO/hRFGTG0W6vOv0Shc0lmVj++IzItVQx/SJRl9Lkfz58sQbRE8FphiUw4Wza3ad/eFafjDH3r0gtT/WA8aKUEp5j70kmb5XXIk9UMkk/T7385FRL3Q1ciqyoOVrRhL10wkEO+DDXuaqawXXtTz+3MDWX43TcE4wtQYDfw9i3tiDKkpzyRm43VvWoIDzGPDZ8g=="},{"issuer":"C = LV, O = VAS Latvijas Valsts radio un telev\\\\C4\\\\ABzijas centrs, 2.5.4.97 = NTRLV-40003011203, CN = Digital Green Certificate CSCA\\nValidity","subject":"CN = LV DSC 001, O = Nacion\\\\C4\\\\81lais vesel\\\\C4\\\\ABbas dienests, C = LV","notbefore":1622213400000,"notafter":1685285400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPUwE7htr+kD1eVnJBfRf5tx0kA17\\nqu4p1wRz3EKPxsJyyIznIqr9+HsnMd7k9ID/f0deqjP8dulzS2cFrVVnFQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE4zCCAsugAwIBAgIQfBNf4Ug47/BgsR84n0s5NDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA1MjgxNjUwMDBaFw0yMzA1MjgxNjUwMDBaME0xEzARBgNVBAMMCkxWIERTQyAwMDExKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD1MBO4ba/pA9XlZyQX0X+bcdJANe6ruKdcEc9xCj8bCcsiM5yKq/fh7JzHe5PSA/39HXqoz/Hbpc0tnBa1VZxWjggFHMIIBQzAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRivdWHr9big4cJkaojQ5INsdnuNDAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCCMrABdfqTT+3ux1VQ5RdqsFgArimneuPxVHSSitIqZ3rPwkS0EsTl5fUm6m5ZqxZreu5ChfGMzC9+/Z4OQfafuvVp0i/T5eD+oiN46g33bdcbxhaBg0i7++xpbRGKM5Wh9LuEW4iUq/wIxJBEJdYFGyvF2eP95mFMadKxcs8+aKdHWEix9CUgJozMEKsAslG81xYlSzVtCmAT5qraC9uz/qGTj/bYfivtMCEdChp7BWp7MP4hD3UG2rW+wxHzD1gYLy7NqqRG3+qPfolNM0SqliZederytEYoszv2zLoUleVGPq33XavqLTfCgPhOqhxPsnH0NLcuJkgSeq5yxg8FWQaRdIR6+BlENzVQ6LYNamsuBRxNZPDurKXL58rt/8dZoeEIn+qO92mo8oVrD4xDOHvjJJIuOqZ2zcODbvV/wBhCXjrTDBiUSe9tpeagE5UKfLN/pyh3TGzMzVyo5Tn30ihqXEIX6IawpZfLJNslZnEbDFi1/2K8b00t78x7pNTSFKyXou8VaabQVPspvuWsoW9D0nyig1ymLcCrSFpnCpf/GEKONRYI6Zi+LYpWzjI81/DzVyC49Gh25ZX6Z0k6ThgDq1J4qmiGU3I1W+VcQ+fNtTsCz9fv2Kdi62U0oYqmt3FAc2Vnt30yoKqgnSfyD4xhZSafHxz2ml0jFS1xzg=="},{"issuer":"C = DK, O = The Danish Health Data Authority, OU = The Danish Health Data Authority, CN = PROD_CSCA_DGC_DK_01, emailAddress = kontakt@sundhedsdata.dk\\nValidity","subject":"C = DK, O = The Danish Health Data Authority, OU = The Danish Health Data Authority, CN = PROD_DSC_DGC_DK_01, emailAddress = kontakt@sundhedsdata.dk","notbefore":1621410445000,"notafter":1684568845000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBmdgY/VORsecXxY/0xNNOzoJNRaV\\nnMMmHs5jiXrGvaDOy1jzDUOyvR++Jxgf0+YuGyp5/UAY0QIh75b+JQnlHA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICyzCCAnGgAwIBAgIBATAKBggqhkjOPQQDAjCBqTELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEcMBoGA1UEAwwTUFJPRF9DU0NBX0RHQ19ES18wMTEmMCQGCSqGSIb3DQEJARYXa29udGFrdEBzdW5kaGVkc2RhdGEuZGswHhcNMjEwNTE5MDk0NzI1WhcNMjMwNTIwMDk0NzI1WjCBqDELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEbMBkGA1UEAwwSUFJPRF9EU0NfREdDX0RLXzAxMSYwJAYJKoZIhvcNAQkBFhdrb250YWt0QHN1bmRoZWRzZGF0YS5kazBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAZnYGP1TkbHnF8WP9MTTTs6CTUWlZzDJh7OY4l6xr2gzstY8w1Dsr0fvicYH9PmLhsqef1AGNECIe+W/iUJ5RyjgYgwgYUwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBRXm2TEfVc2DPhwR/do67XrHDz4FzAfBgNVHSMEGDAWgBSb8DXRV1S8RJEI55z8etM+2ZXtSjAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMAoGCCqGSM49BAMCA0gAMEUCIB+IJn+8uICEfEnONXufysFrmtYBcTppGomj1Pr8WZF8AiEA0c3LZ3OShcmWfin0kwWzbf39irEMvJlF1idothpb0Eg="},{"issuer":"C = IT, O = Ministero della Salute, CN = Italy DGC CSCA 1\\nValidity","subject":"C = IT, O = Ministero della Salute, CN = Italy DGC DSC 1","notbefore":1620800297000,"notafter":1683871919000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/\\njbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehojw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEDzCCAfegAwIBAgIURldu5rsfrDeZtDBxrJ+SujMr2IswDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjEwNTEyMDgxODE3WhcNMjMwNTEyMDgxMTU5WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/jbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehoj6OBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFC4bAbCvpArrgZ0E+RrqS8V7TNNIMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAjxTeF7yhKz/3PKZ9+WfgZPaIzZvnO/nmuUartgVd3xuTPNtd5tuYRNS/1B78HNNk7fXiq5hH2q8xHF9yxYxExov2qFrfUMD5HOZzYKHZcjcWFNHvH6jx7qDCtb5PrOgSK5QUQzycR7MgWIFinoWwsWIrA1AJOwfUoi7v1aoWNMK1eHZmR3Y9LQ84qeE2yDk3jqEGjlJVCbgBp7O8emzy2KhWv3JyRZgTmFz7p6eRXDzUYHtJaufveIhkNM/U8p3S7egQegliIFMmufvEyZemD2BMvb97H9PQpuzeMwB8zcFbuZmNl42AFMQ2PhQe27pU0wFsDEqLe0ETb5eR3T9L6zdSrWldw6UuXoYV0/5fvjA55qCjAaLJ0qi16Ca/jt6iKuws/KKh9yr+FqZMnZUH2D2j2i8LBA67Ie0JoZPSojr8cwSTxQBdJFI722uczCj/Rt69Y4sLdV3hNQ2A9hHrXesyQslr0ez3UHHzDRFMVlOXWCayj3LIgvtfTjKrT1J+/3Vu9fvs1+CCJELuC9gtVLxMsdRc/A6/bvW4mAsyY78ROX27Bi8CxPN5IZbtiyjpmdfr2bufDcwhwzdwsdQQDoSiIF1LZqCn7sHBmUhzoPcBJdXFET58EKow0BWcerZzpvsVHcMTE2uuAUr/JUh1SBpoJCiMIRSl+XPoEA2qqYU="},{"issuer":"C = BE, O = eHealth - Belgium, CN = Belgium Covid19 Country Signing CA 01\\nValidity","subject":"C = BE, O = eHealth - Belgium, CN = Belgium Covid19 DSC 01","notbefore":1622103167000,"notafter":1685175167000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHo\\nznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICLTCCAdOgAwIBAgIIXf7//TpWDVgwCgYIKoZIzj0EAwIwWTELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMS4wLAYDVQQDDCVCZWxnaXVtIENvdmlkMTkgQ291bnRyeSBTaWduaW5nIENBIDAxMB4XDTIxMDUyNzEwMTI0N1oXDTIzMDUyNzEwMTI0N1owSjELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMR8wHQYDVQQDDBZCZWxnaXVtIENvdmlkMTkgRFNDIDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHoznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyKOBkzCBkDAdBgNVHQ4EFgQUr/AjSs5HKJsXQVr617Z6OO2Z9h8wHwYDVR0jBBgwFoAUMc4oJrfby5Fk9eLZSMutpWhvX9UwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NlcnQtYXBwLmJlL3Jldm9rZWRMaXN0L2RnY19jc2NhMDEuY3JsMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiA56koPekERN3iWtlXwuD8rwBgbsTkZj2Yqe8kL2doIbwIhAKYOJyyIeR4Po523PY5rniN4jaaSkgefulusXXKiEthU"},{"issuer":"CN = IS DGC CSCA 1, serialNumber = 1, OU = Directorate of Health, O = Directorate of Health, C = IS\\nValidity","subject":"CN = IS-DSC-1, serialNumber = 1, OU = Directorate of Health, O = Directorate of Health, C = IS","notbefore":1623399505000,"notafter":1686471505000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEO42X7C2X5bSDTnfSJwnk4qAjSk2m\\n11Cy/mmFqryl7J1MhrZDfy77ky4uS0o1iW181Ev51mAiW0J3i3SeKYeEOw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIBxTCCAWwCAgQRMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA2MTExMDE4MjVaFw0yMzA2MTExMDE4MjVaMGwxETAPBgNVBAMMCElTLURTQy0xMQowCAYDVQQFEwExMR4wHAYDVQQLDBVEaXJlY3RvcmF0ZSBvZiBIZWFsdGgxHjAcBgNVBAoMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDELMAkGA1UEBhMCSVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ7jZfsLZfltINOd9InCeTioCNKTabXULL+aYWqvKXsnUyGtkN/LvuTLi5LSjWJbXzUS/nWYCJbQneLdJ4ph4Q7MAoGCCqGSM49BAMCA0cAMEQCIFH/Cm+epgBJoz2S3eZaSPQLb2+3seJAEe2rgvrTcA4ZAiB6kXpC2VR9kqcv+HpDrbmx4Xq3PgTsQ5HxY1B5vepJ2g=="},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\\nValidity","subject":"CN = MLT-DSC-TEST-001, O = Government of Malta, C = MT","notbefore":1624226400000,"notafter":1687384799000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfapP8+QeyFgXVvY41YkQudlUUh7I\\nZBBpIdOJ34xYmxCEuHXbVUFqt/JSnbpVsGsd7ZBPUjL2u5Ks9moBMDEPLg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICfjCCAiOgAwIBAgIIejS7d37VXgEwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMTEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR9qk/z5B7IWBdW9jjViRC52VRSHshkEGkh04nfjFibEIS4ddtVQWq38lKdulWwax3tkE9SMva7kqz2agEwMQ8uo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFBR+KFEXuumXgCc5GWe258iqVrnfMHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNjIxMDAwMDAwWoEPMjAyMTEyMjEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDBnG+uLfchypa5wnmHMUi2aWEzWkbjoGgn5WsWmXffcAIhAKMusBaq7xzWVRMreNFvQsitrCaSaqDoQPvQuU72+SjN"},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\\nValidity","subject":"CN = MLT-DSC-VACCINATIONS-001, O = Government of Malta, C = MT","notbefore":1624226400000,"notafter":1687384799000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1q1nvgXLGIbibQuYQU+f+Xs+mcbP\\nmukAc3KQAyy/5KZH+n5F4bG4V0XIjphX093YxHh1JbHWOzuhKuan9FboyA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIChTCCAiugAwIBAgIIZEwDM+Nt1KMwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAxMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNatZ74FyxiG4m0LmEFPn/l7PpnGz5rpAHNykAMsv+SmR/p+ReGxuFdFyI6YV9Pd2MR4dSWx1js7oSrmp/RW6MijgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUuCrjQfrYEdJhuUeDcYx4JKEFOf4weQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA2MjEwMDAwMDBagQ8yMDIxMTIyMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIgZGBb0sNv06M+s8UpL7ziN/FU4+4AGksrMB2BIIkZDBwCIQDXwcZZQKZFsV55HpRm/AxXSBLXu4vPFR2Lx3rdqy0nFg=="},{"issuer":"C = SE, O = Swedish eHealth Agency, OU = Digital Covid Certificate Services, 2.5.4.97 = 202100-6552, CN = Swedish Digital Covid Certificate CSCA\\nValidity","subject":"C = SE, O = Swedish eHealth Agency, 2.5.4.97 = 202100-6552, CN = DCC Signer","notbefore":1624248451000,"notafter":1687321651000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaLOo1IGTspZSdr2BqdAvKjZjHfW/\\nZq8VDrI6nEhBlXUr3VCDlzjrXo5v6ix2qF9RCySJsHgZxUrqWQpFQbrbMw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDbzCCAtGgAwIBAgIRAKzjP3XRAzwsEbbfxdhLsK0wCgYIKoZIzj0EAwIwgaIxCzAJBgNVBAYTAlNFMR8wHQYDVQQKDBZTd2VkaXNoIGVIZWFsdGggQWdlbmN5MSswKQYDVQQLDCJEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIFNlcnZpY2VzMRQwEgYDVQRhDAsyMDIxMDAtNjU1MjEvMC0GA1UEAwwmU3dlZGlzaCBEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIENTQ0EwHhcNMjEwNjIxMDYwNzMxWhcNMjMwNjIxMDYyNzMxWjBZMQswCQYDVQQGEwJTRTEfMB0GA1UECgwWU3dlZGlzaCBlSGVhbHRoIEFnZW5jeTEUMBIGA1UEYQwLMjAyMTAwLTY1NTIxEzARBgNVBAMMCkRDQyBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARos6jUgZOyllJ2vYGp0C8qNmMd9b9mrxUOsjqcSEGVdSvdUIOXOOtejm/qLHaoX1ELJImweBnFSupZCkVButszo4IBLjCCASowCQYDVR0TBAIwADArBgNVHSMEJDAigCACTjrfhadUh3CvxKG9ilhNH5em/z3iqGdiDEqCy0uCujApBgNVHQ4EIgQgcumMkPVDerXtTa5yvY0Vp+vbcHWxuiqfF0N9MU0I6hEwDgYDVR0PAQH/BAQDAgOIMD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHBzOi8vZGdjZy5jb3ZpZGJldmlzLnNlL2NzY2EvY3JsL2NzY2EwMS5jcmwwRwYIKwYBBQUHAQEEOzA5MDcGCCsGAQUFBzABhitodHRwczovL2RnY2cuY292aWRiZXZpcy5zZS9jc2NhL29jc3AvY3NjYTAxMCsGA1UdEQQkMCKBIHJlZ2lzdHJhdG9yQGVoYWxzb215bmRpZ2hldGVuLnNlMAoGCCqGSM49BAMCA4GLADCBhwJCAJH08xci9Y2aQQcUJTnA+WIVSblO5K/ncVsYFd+jzM/m1chhh7CD75oN5twgWMl0aPMcjqaylNH/p82zPONaERqmAkEyCrbICfyUiio20CrFRmWS8KWq4LL8dkHapxgqVrG75/3xrmhAdxlH1WoC+Af1I602E6dsaCZw6mmMY0GPOEvGhw=="},{"issuer":"C = CZ, O = MZCR, CN = CZ DSC CSCA 1\\nValidity","subject":"C = CZ, O = MZCR, CN = CZ DSC 1","notbefore":989151840000,"notafter":989151840000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3l\\nAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKUw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0AzMA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDUwNjE0MjQwMFoXDTIzMDUwNjE0MjQwMFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3lAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKU6NdMFswHQYDVR0OBBYEFDReRuL4VneLcO8YqdVWn2+gpPl9MB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQAZpv8/b4k+QxliHeWKAiJ34OKMEYh8xn1Dc9+55f+h0NLY4ZSelGrf2SrJIt9yhomzjOQUARqiumbuSzZMMPUNzKIRsPSa1NkfRq7y3QehG+cuhKKdLYpWErjRdp97gubCVGLXld7+iuschYCwAztKnyPof94yPgAGkdCEnTNW1z6tc33E/Fnd59nF8/JBZdSTt2uRXxFY8plasmoRzdXYASwTUyXXheZcG+KNYJ5NxYSF3LJeF81ucJ6mWkAk+MwoJXVu7VVZ6pn51JPL+YyArV2FaN8lWs9QYW2XgCuUTm4IC9T/BgVKTstr6eGQiHLOEbyE8NmLond1Bzv27ClLXEBvL9lIqJ5hJFvVWbfpNPvJAjI4z3LA7DuYgQ3ws8mf0iMW+4aOkLCd7dv0HNcUPoHUOTelgcfAzEsZuajUcH3uGwgcs2wEBdW1KfqEP8L7bgwBGC+UGe1yeGM4k7OYOnGP2SMm3Gk+MrYaqW51Fun20bcXkagDxMJh06PpDm4="},{"issuer":"C = CZ, O = MZCR, CN = CZ DSC CSCA 1\\nValidity","subject":"C = CZ, O = MZCR, CN = CZ DSC 2","notbefore":1623312378000,"notafter":1686384378000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2k\\nYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0A0MA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDYxMDEwMDYxOFoXDTIzMDYxMDEwMDYxOFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2kYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOqNdMFswHQYDVR0OBBYEFAKjMTdShDzGev/eNqlHHzJIHdXVMB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQA3d3iNHRpsKWia1XiF5QQlKUFwcvDdtAlFhfmy99oI+ywmppys7xoeOrIKazIyAyZ3tNImPkcde0ARSvMmAzsr6T/BqxsV78htXzUoILy1z6Y8QZ8+RXcNmR79k9iqudKv5tWZ2S2ticNeo78WV6oB18oV5/hhLlkS/NQC5wZ5LJar+wEF1VaxkvG2GmooaODPgPbRutjStTamSu2Din4SRg8pIWlyCMy0qnzVDMzdYUsjvmC3myxzHevFSTs36hj1aiLxaeAmVTvCi39o6s0EBjyM8Yk2WHJS9k5EkvBcJcEx4z55RkBLKo4PJalQS1hJc62GFM3J3lyyKqecSZBn2xj5bM8UEkI+8ylHsF/D3vrjtu1MaxM9loTogvf8wu4S7DMP/yXBanmr2G4k132JbSX7goclMF2zel7kGAn2B2vUQrGM76Rqb4lkddPWCc+0dossH1zAvbOAo5+raC9xaUU00GC3wR7+30xjJtBw0JbDlSBk3l1xnGnvLehkqV8="},{"issuer":"C = IE, ST = Dublin, L = Dublin, O = Department of Health, OU = eHealth, CN = CSCA_DGC_IE_01\\nValidity","subject":"C = IE, ST = Dublin, L = Dublin, O = Department of Health, OU = eHealth, CN = DGC CSR","notbefore":1625053135000,"notafter":1688125135000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZ\\nwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICmDCCAj+gAwIBAgIJAIFaAnBKVQR3MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNjMwMTMzODU1WhcNMjMwNjMwMTMzODU1WjByMQswCQYDVQQGEwJJRTEPMA0GA1UECAwGRHVibGluMQ8wDQYDVQQHDAZEdWJsaW4xHTAbBgNVBAoMFERlcGFydG1lbnQgb2YgSGVhbHRoMRAwDgYDVQQLDAdlSGVhbHRoMRAwDgYDVQQDDAdER0MgQ1NSMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8aOBtzCBtDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFBgOd1YgJce5VyyJvYhrUDZbtTrZMB8GA1UdIwQYMBaAFFyHtiXkK1RtMZIunZlmC1W5b0xQMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9jZXJ0Lmdvdi5pZS9DUkwvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCICD5ra8JbGVJCDS7k9BeY1D8SlL8dv8eVH8mMXKFJek4AiEA5j7KharjyLlp7GtXvJeS+Ht+0dgaaesqpMNfuPH7TmI="},{"issuer":"C = RO, O = Ministerul Sanatatii, CN = AC Ministerul Sanatatii\\nValidity","subject":"C = RO, O = Ministerul Sanatatii, CN = BSC","notbefore":986076000000,"notafter":1782128159000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1Di\\nHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5cw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIElDCCAnygAwIBAgIFFhg4IyAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCUk8xHTAbBgNVBAoMFE1pbmlzdGVydWwgU2FuYXRhdGlpMSAwHgYDVQQDDBdBQyBNaW5pc3RlcnVsIFNhbmF0YXRpaTAeFw0yMTA2MTgxMzM1NTlaFw0yNjA2MjIxMzM1NTlaMDoxCzAJBgNVBAYTAlJPMR0wGwYDVQQKDBRNaW5pc3RlcnVsIFNhbmF0YXRpaTEMMAoGA1UEAwwDQlNDMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1DiHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5c6OCAVYwggFSMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUVyznYDPTSIjlI6bI6W+mgQc9JjwwHwYDVR0jBBgwFoAUMuKQDubF6PpGuKuAPWshl3a4SCEwGgYDVR0RBBMwEaQPMA0xCzAJBgNVBAcMAlJPMBoGA1UdEgQTMBGkDzANMQswCQYDVQQHDAJSTzAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vY2Euc3RzaXNwLnJvL2NybC9ER0MuY3JsMDMGA1UdJQQsMCoGDCsGAQQBAI43j2UBAQYMKwYBBAEAjjePZQECBgwrBgEEAQCON49lAQMwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vY2Euc3RzaXNwLnJvOjI1NjAwKwYDVR0QBCQwIoAPMjAyMTA0MDEwMDAwMDBagQ8yMDI2MDcwMTAwMDAwMFowDQYJKoZIhvcNAQELBQADggIBAFLRYkrv2Jp8XNhFJbMUviTLgPsDgcFDQwzdU4RH/KY3vjlIqxI/o40wct9QrN5FqRDTVIYD4Z4vLy8vhigh+DrdWfaBK+SGw11ZwigDem0Unjpqz0aFTotv8hry5n2jY/gf6YpU8pMd3t0dNF5Je5hrY1YLPJdt+BMWAizRwSAaa/OqTDP2blNqebrUTpsiXnxMXRiIHZl596RiSVsiwI/4PhU/HhfbMCg4kO8YUtgTBzWvBGohG0Znyi2bQFhwWEa1jZc2YfsIqWu4hwGz0zWOKMyx5ULZS3qkQ0EIHH2XrOx2ZxEc/5vZT27nTlKW0FCtBWeB36rLy/9dYbm+wjB86gvjYEQLAoFSY5GyCxVHaQE/HK8nFqM0oFq/4u0D7ZN9o6N6i4EfGhSRye0NCld3iaM9JdKmQNoCE9fd9OfMG9HlrQbIZvsjZ3btvtiC/R/LoyvrKz2EVbePZIVj03+GelCI0/jWq+w9YK3JIGhBfMjvCK/QnphOm0otuiuEY+0QYPKIx/c8zU5H4cEWp4NamsIRTpP13Yazh4NVjCNAU+J1rbcwGkJIRXHpL6QqL1WNt9zZSMXvw+vBoBq8yBqeLGlxPr+DFL79xhRBZnpp5mn2vUmR77k1745VwwGVMw/t9K28y5HpLcTp49f3wR0bDC+K0n/8PdcrhOXh+DTP"},{"issuer":"C = GR, CN = grnet.gr\\nValidity","subject":"C = GR, CN = grnet.gr","notbefore":1621874125000,"notafter":1684946125000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFP\\nen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICBjCCAaygAwIBAgIUKhlB7j/znUbHbqEQfJErud8AyPMwCgYIKoZIzj0EAwIwIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMB4XDTIxMDUyNDE4MzUyNVoXDTIzMDUyNDE4MzUyNVowIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFPen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEaOBwzCBwDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFKfRIrjTBVN2/tmTt8I32yrVl3DRMB8GA1UdIwQYMBaAFHAWm9K/JxbEXkf7XcqhKPGmpDK9MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHBzOi8vY3JsLmRnYy5zZXJ2aWNlcy5nb3YuZ3IvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiBdWbGhPUZmHxMV9eXlVEkLRY+zGdCsKVxgAMk2JYqU8AIhANkXZhiDVPD5IDiEw3Z3r0MdBxx7jy6rQzBj/K4OSgCl"},{"issuer":"CN = IS DGC CSCA 1, serialNumber = 1, OU = Directorate of Health, O = Directorate of Health, C = IS\\nValidity","subject":"CN = IS-DSC-testrec-1, serialNumber = 2, OU = Directorate of Health, O = Directorate of Health, C = IS","notbefore":994090248000,"notafter":994090248000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvwlwjQL5cId7nINp/A/b+XNY/Wzg\\nX9sIOde8ggZmZjXvIYhDhz7Fvs52ozmdqatDp3yIwPpr6nAMmaNTj0KdZg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIBzTCCAXQCAnBLMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA3MDIxODEwNDhaFw0yMzA3MDIxODEwNDhaMHQxGTAXBgNVBAMMEElTLURTQy10ZXN0cmVjLTExCjAIBgNVBAUTATIxHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABL8JcI0C+XCHe5yDafwP2/lzWP1s4F/bCDnXvIIGZmY17yGIQ4c+xb7OdqM5namrQ6d8iMD6a+pwDJmjU49CnWYwCgYIKoZIzj0EAwIDRwAwRAIgGuvSzxkT7wtN8UW9b8VavzmUbfC1Ojl99ZLu6iNNxbgCIHvbmygVJAEC9/GJgitb+1wQx5fHp/SEcfnkqPOqzFrn"},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\\nValidity","subject":"CN = MLT-DSC-RECOVERY-003, O = Government of Malta, C = MT","notbefore":993938400000,"notafter":994024799000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDON\\nYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICgTCCAiegAwIBAgIIFwgHF3EO4GkwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDMxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDONYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdaOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBR9uzKFO2DLNzUjBFGi4relF01KBTB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNIADBFAiEA99DvYsvpGT4tqpc0BMSCZeyZ7WMbt8ZM1PpabmhX8+cCIGCtDA+B0wWuPtFcN+xk/jBG5t30dSFLWQB43XkMQLug"},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\\nValidity","subject":"CN = MLT-DSC-TEST-002, O = Government of Malta, C = MT","notbefore":993938400000,"notafter":994024799000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4DsoM1rJFjHyQPcX6WKDWZkouBeh\\nfQGxqOgwFAYyRKXbrSuL+tkz8sJfo8djfsuQRLDSuZxud0IOsMB9YsTMpg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICfjCCAiOgAwIBAgIIJTfDXWft5tcwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMjEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATgOygzWskWMfJA9xfpYoNZmSi4F6F9AbGo6DAUBjJEpdutK4v62TPywl+jx2N+y5BEsNK5nG53Qg6wwH1ixMymo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFAdYsuwV3Y8H3ArMdIP4+88NQzj6MHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNzAxMDAwMDAwWoEPMjAyMjAxMDEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDKRMYKb/xaog2wAz78sg7nxPSSGvmXDSmGm3OAvywYtwIhAL1aS9k2jC5FGCnXL146W6TNwJOLZXhG0WELPuo1eaPF"},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\\nValidity","subject":"CN = MLT-DSC-VACCINATIONS-002, O = Government of Malta, C = MT","notbefore":993938400000,"notafter":994024799000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXj9fU7e4KVYe1VakCDZjYquHzkox\\nSHT8D33zeMDfyLbYi/GSVpKQtPwBPZlPx65r2Kb2warIK8BgxSgsQvMIag==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIChTCCAiugAwIBAgIIWGrho8bBjMowCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAyMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABF4/X1O3uClWHtVWpAg2Y2Krh85KMUh0/A9983jA38i22IvxklaSkLT8AT2ZT8eua9im9sGqyCvAYMUoLELzCGqjgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUOLKcvXnMDSbbBkkI/qyub1XWtNUweQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA3MDEwMDAwMDBagQ8yMDIyMDEwMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIhAPh/K0cwTwjugfRAGr47Ntn3O6iy5Dq6vtWdminY7WDrAiA/usc8ejitliKRcw9kWYkRTe5M8QTrGi0d8ISZfbWPzw=="},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\\nValidity","subject":"CN = MLT-DSC-RECOVERY-002, O = Government of Malta, C = MT","notbefore":993938400000,"notafter":994024799000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNx\\ndEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICgjCCAiegAwIBAgIIK+HdvXWkN9YwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDIxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNxdEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4aOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBQpm2iI+XG+uIq9XM2lqhKzZ5i5MDB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNJADBGAiEAvxNjK3WJhVQiCHwFKMfUClW0xa0ikhLAPaHirWYEgKMCIQDWDa7xu71vGhmTaIeKuMywD+f1yfPsaCzeEpr1yUITbA=="},{"issuer":"CN = Poland DGC RootCSCA 1, O = Ministry of Health, C = PL\\nValidity","subject":"CN = Poland Test DGC Service 1, OU = eHealth Centre, O = Ministry of Health, C = PL","notbefore":1622022625000,"notafter":1685094625000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERG4yI/SSv70zEtVjzIrn/CypR1e0\\nBZO5u8bIgltZicrg+992n2a7GucxK6zy91xq8F8XH7B0SJU75qkr8Z1d9A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIChjCCAiygAwIBAgIISPHH9eN/DsUwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTAyNVoXDTIzMDUyNjExNTAyNVowZzEiMCAGA1UEAwwZUG9sYW5kIFRlc3QgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAREbjIj9JK/vTMS1WPMiuf8LKlHV7QFk7m7xsiCW1mJyuD733afZrsa5zErrPL3XGrwXxcfsHRIlTvmqSvxnV30o4HeMIHbMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQUJtco+4DwjQXe7tYA2X0svBWc8aowKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTUwMjVagQ8yMDIyMDUyNjExNTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQD0aM2oui9agdjvs3W3CBnJzNj1QTn86txDT8z4f92U/QIgdfA1+c567xA4y/11vguxxe9nDHAtAAEpXe8FkupyFTk="},{"issuer":"C = IE, ST = Dublin, L = Dublin, O = Department of Health, OU = eHealth, CN = CSCA_DGC_IE_01\\nValidity","subject":"C = IE, O = Department of Health, CN = validateqr.gov.ie 2020135457912391810539600999694555","notbefore":994491081000,"notafter":1687851081000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETPE5ItolrGzLQLPqYxOT+orVmYJu\\nsLDsPWLwrK+bbJKBBtXBsrD2Py/osWYr9LF5ffORpzxmBUQmzp7K4uPiIw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICqjCCAlGgAwIBAgIJAIFaAnBKVQR5MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNzA3MDkzMTIxWhcNMjMwNjI3MDkzMTIxWjBrMQswCQYDVQQGEwJJRTEdMBsGA1UEChMURGVwYXJ0bWVudCBvZiBIZWFsdGgxPTA7BgNVBAMTNHZhbGlkYXRlcXIuZ292LmllIDIwMjAxMzU0NTc5MTIzOTE4MTA1Mzk2MDA5OTk2OTQ1NTUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARM8Tki2iWsbMtAs+pjE5P6itWZgm6wsOw9YvCsr5tskoEG1cGysPY/L+ixZiv0sXl985GnPGYFRCbOnsri4+Ijo4HQMIHNMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUT2vp7aj2JBxHrQ1vkpX4bZJoi10wHwYDVR0jBBgwFoAUXIe2JeQrVG0xki6dmWYLVblvTFAwSQYDVR0fBEIwQDA+oDygOoY4aHR0cHM6Ly9nZW4uZGlnaXRhbGNvdmlkY2VydGlmaWNhdGVzLmdvdi5pZS9hcGkvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCIAEEtN5Jh3HP0OTeYkyq0o4eaL0yGZnAbDhUUa0+StGTAiEA5trl/PUTtSwMNUSpc1UAA/viDLCW3FXyfx9cJaheFsQ="},{"issuer":"C = CH, 2.5.4.97 = VATCH-CHE-221.032.573, O = Bundesamt fuer Informatik und Telekommunikation (BIT), OU = Swiss Government PKI, CN = Swiss Government Regulated CA 02\\nValidity","subject":"C = CH, ST = Bern, L = K\\\\C3\\\\B6niz, businessCategory = Government Entity, 2.5.4.97 = NTRCH-CHE-467.023.568, O = Bundesamt f\\\\C3\\\\BCr Gesundheit (BAG), OU = GE-0220-BAG, OU = Taskforce BAG Covid-19, CN = COVID-certificate-CH-21-05","notbefore":1621497871000,"notafter":1716192271000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtk/51stJXU48RqD2lh4I\\ndsxFrjlJfmTCrLr3cQNEXkrEoI3OEV8NnotE1RjVmQrqLTT04oxpWlcbMolXtJBt\\nu3rOiLNwQvyVEbj/xSc6KT84Tp7GBo1P/kkunY+Vmab6HUCV/oGZYmsdiUP/OnTP\\nX6Wy6delDhnrgHIDti73/TSsG7Zl1V6km7+KIkjAkVCEDkkUD7uffd4G+GBZ0B9F\\n1KOT0IcFQNvDm0zlROVoGFlmPS8DWlrLHuIdMbB281uiDjcN+kNUt7rUyyj6TFgX\\n9WCgEB/5mQBMRaaXK1zeDTaNkmC2S7IWxhMQsMBXJyAdbD9AnQOZc6XRjBauO7gz\\n0wIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = SM, ST = SM, L = City of San Marino, O = San Marino Innovation, OU = DGCOperations, CN = CSCA_DGC_SM_01\\nValidity","subject":"C = SM, ST = San Marino, L = City of San Marino, O = \\"Istituto per la Sicurezza Sociale \\", OU = DGCOperations, CN = DSC_CSR_DGC_SM_01, emailAddress = smdcc@iss.sm","notbefore":1623314759000,"notafter":1686386759000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEH2+GOTdCPhSUdDZmaM7hq/hRJkZC\\nd3wPyOwB8lS30s4N81r4XFpv1Yev+1bfB4A173DByhZyIKkdnZc/FfaAXQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDBTCCAqugAwIBAgIUeATFyjMaoiT84DKJmiNU72+mkVgwCgYIKoZIzj0EAwIwgYgxCzAJBgNVBAYTAlNNMQswCQYDVQQIDAJTTTEbMBkGA1UEBwwSQ2l0eSBvZiBTYW4gTWFyaW5vMR4wHAYDVQQKDBVTYW4gTWFyaW5vIElubm92YXRpb24xFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxFzAVBgNVBAMMDkNTQ0FfREdDX1NNXzAxMB4XDTIxMDYxMDEwNDU1OVoXDTIzMDYxMDEwNDU1OVowgb0xCzAJBgNVBAYTAlNNMRMwEQYDVQQIDApTYW4gTWFyaW5vMRswGQYDVQQHDBJDaXR5IG9mIFNhbiBNYXJpbm8xKzApBgNVBAoMIklzdGl0dXRvIHBlciBsYSBTaWN1cmV6emEgU29jaWFsZSAxFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxGjAYBgNVBAMMEURTQ19DU1JfREdDX1NNXzAxMRswGQYJKoZIhvcNAQkBFgxzbWRjY0Bpc3Muc20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQfb4Y5N0I+FJR0NmZozuGr+FEmRkJ3fA/I7AHyVLfSzg3zWvhcWm/Vh6/7Vt8HgDXvcMHKFnIgqR2dlz8V9oBdo4G7MIG4MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUXBEgxHdIds6E5XLz7K3xKYM1ZYcwHwYDVR0jBBgwFoAU3R4p+KmXTKHb/B2ZD1s9d0P+tlUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDovL3d3dy5zbWRjYy5zbS9DUkwvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiAqKNSdqhkdyZaMENowSdL1xU3Cq/A/u6PaO90ApEBVfgIhAOaFehZJJsm5o3LAhZ+q3bWBZHbB7nsFbTzvowcNyc2K"},{"issuer":"C = VA, O = STATO CITTA\\\\E2\\\\80\\\\99 DEL VATICANO, OU = DIREZIONE DI SANITA\' E IGIENE, CN = CSCA_DGC_VA_01\\nValidity","subject":"C = VA, O = STATO CITTA\\\\E2\\\\80\\\\99 DEL VATICANO, OU = DIREZIONE DI SANITA\' E IGIENE, CN = DSC_DGC_VA_01","notbefore":1624607220000,"notafter":1687679220000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEI6Q/krjPDaHJ2WsrBzR9sGYnYjFq\\nkflAAWhJgXbXt3RuUVfJt4c53N6v9J2BE3kPqCVl9FbYrwqQ0vZ+Ps5e+Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICbzCCAhSgAwIBAgIIc/6LARpWk7YwCgYIKoZIzj0EAwIwdDELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFzAVBgNVBAMMDkNTQ0FfREdDX1ZBXzAxMB4XDTIxMDYyNTA5NDcwMFoXDTIzMDYyNTA5NDcwMFowczELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFjAUBgNVBAMMDURTQ19ER0NfVkFfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQjpD+SuM8NocnZaysHNH2wZidiMWqR+UABaEmBdte3dG5RV8m3hznc3q/0nYETeQ+oJWX0VtivCpDS9n4+zl75o4GQMIGNMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFHjsdxdRG2UcVpJ5tq07/6TxOa+jMB8GA1UdIwQYMBaAFL2EdVekv64Aod98sSbpzAqLftAtMAsGA1UdDwQEAwIDuDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCedrxueUJyy8gthgOF7b2Fdv+chSkliDs1z2oOuRagWQIhAJh4vf8YxtkfC3MB+B9y1x2OwC2GRGFCtaF5WaB7K6F5"}]}');class u{static instance=new u;initialized=!1;certInfos=[];async getCertInfos(){if(!this.initialized){this.initialized=!0;const t=h.$;this.certInfos.push(...t)}return this.certInfos}}class l{protected_;unprotected;payload;signatures;static async decodeCborAsync(t){return new Promise(((e,r)=>{i.decodeFirst(t,(function(t,i){if(t)return r("failed cbor: "+t),null;e(i)}))}))}static async valueOf(t){return new Promise(((e,r)=>{0==t.indexOf("HC1:")&&(t=t.substring(4));const n=o().decode(t);a().inflate(n,(function(t,n){t?r("failed cose1: "+t):i.decodeFirst(n,(function(t,i){if(t)return void r("failed cose1: "+t);const n=i,o=n.value[0],s=n.value[1],a=n.value[2],h=n.value[3],u=new l(o,s,a,h);e(u)}))}))}))}constructor(t,e,r,i){this.protected_=t,this.unprotected=e,this.payload=r,this.signatures=i}makeDataForVerification(){const t=i.encode(["Signature1",this.protected_]),e=i.encode([this.payload]),r=new Uint8Array(t.length+e.length);for(let e=0,i=t.length;e{0==t.indexOf("HC1:")&&(t=t.substring(4));const n=o().decode(t);a().inflate(n,(function(t,n){const o=i;try{o.decodeFirst(n,(function(t,n){if(t)return void r(t);const o=n.toJSON().value[2];i.decodeFirst(o,(function(t,i){if(t)return void r(t);const n=i.get(-260).get(1);console.log(JSON.stringify(n,null,4)),e(n)}))}))}catch(t){r(t)}}))}))}static async validate(t,e){const r=await l.valueOf(t);if(!r)return null;const i=r.makeDataForVerification(),n=c.Buffer.from(r.encodeSignature(r.signatures)).toString("hex");var o=await u.instance.getCertInfos();if(e?.explicitCerts&&(o=[...e?.explicitCerts]),e?.certFilter){const t=o.length;(o=o.filter(e?.certFilter)).length!=t&&console.info("#"+(t-o.length)+" of "+t+" certifcates removed by filter")}for(let t=0,e=o.length;t=r.notbefore&&t<=r.notafter)return r}}catch(i){console.warn("unable to handle cert "+(t+1)+" of "+e+": "+r.subject+": "+i)}}throw"Not matching certificate found"}}"undefined"!=typeof window&&(window.EuDgc_parse=d.parse,window.EuDgc_validate=d.validate),console.log("eudgc.ts"),console.log("EUDGC by Scopevisio AG")},4927:(t,e,r)=>{function i(t){try{if(!r.g.localStorage)return!1}catch(t){return!1}var e=r.g.localStorage[t];return null!=e&&"true"===String(e).toLowerCase()}t.exports=function(t,e){if(i("noDeprecation"))return t;var r=!1;return function(){if(!r){if(i("throwDeprecation"))throw new Error(e);i("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}}},384:t=>{t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},5955:(t,e,r)=>{"use strict";var i=r(2584),n=r(8662),o=r(6430),s=r(5692);function a(t){return t.call.bind(t)}var h="undefined"!=typeof BigInt,u="undefined"!=typeof Symbol,l=a(Object.prototype.toString),c=a(Number.prototype.valueOf),f=a(String.prototype.valueOf),d=a(Boolean.prototype.valueOf);if(h)var g=a(BigInt.prototype.valueOf);if(u)var A=a(Symbol.prototype.valueOf);function M(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function p(t){return"[object Map]"===l(t)}function w(t){return"[object Set]"===l(t)}function B(t){return"[object WeakMap]"===l(t)}function m(t){return"[object WeakSet]"===l(t)}function E(t){return"[object ArrayBuffer]"===l(t)}function y(t){return"undefined"!=typeof ArrayBuffer&&(E.working?E(t):t instanceof ArrayBuffer)}function b(t){return"[object DataView]"===l(t)}function I(t){return"undefined"!=typeof DataView&&(b.working?b(t):t instanceof DataView)}e.isArgumentsObject=i,e.isGeneratorFunction=n,e.isTypedArray=s,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):s(t)||I(t)},e.isUint8Array=function(t){return"Uint8Array"===o(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===o(t)},e.isUint16Array=function(t){return"Uint16Array"===o(t)},e.isUint32Array=function(t){return"Uint32Array"===o(t)},e.isInt8Array=function(t){return"Int8Array"===o(t)},e.isInt16Array=function(t){return"Int16Array"===o(t)},e.isInt32Array=function(t){return"Int32Array"===o(t)},e.isFloat32Array=function(t){return"Float32Array"===o(t)},e.isFloat64Array=function(t){return"Float64Array"===o(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===o(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===o(t)},p.working="undefined"!=typeof Map&&p(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(p.working?p(t):t instanceof Map)},w.working="undefined"!=typeof Set&&w(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(w.working?w(t):t instanceof Set)},B.working="undefined"!=typeof WeakMap&&B(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(B.working?B(t):t instanceof WeakMap)},m.working="undefined"!=typeof WeakSet&&m(new WeakSet),e.isWeakSet=function(t){return m(t)},E.working="undefined"!=typeof ArrayBuffer&&E(new ArrayBuffer),e.isArrayBuffer=y,b.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&b(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=I;var v="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function C(t){return"[object SharedArrayBuffer]"===l(t)}function Q(t){return void 0!==v&&(void 0===C.working&&(C.working=C(new v)),C.working?C(t):t instanceof v)}function D(t){return M(t,c)}function N(t){return M(t,f)}function R(t){return M(t,d)}function G(t){return h&&M(t,g)}function U(t){return u&&M(t,A)}e.isSharedArrayBuffer=Q,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===l(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===l(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===l(t)},e.isGeneratorObject=function(t){return"[object Generator]"===l(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===l(t)},e.isNumberObject=D,e.isStringObject=N,e.isBooleanObject=R,e.isBigIntObject=G,e.isSymbolObject=U,e.isBoxedPrimitive=function(t){return D(t)||N(t)||R(t)||G(t)||U(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(y(t)||Q(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach((function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})}))},9539:(t,e,r)=>{var i=r(4155),n=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},i=0;i=n)return t;switch(t){case"%s":return String(i[r++]);case"%d":return Number(i[r++]);case"%j":try{return JSON.stringify(i[r++])}catch(t){return"[Circular]"}default:return t}})),a=i[r];r=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),M(r)?i.showHidden=r:r&&e._extend(i,r),m(i.showHidden)&&(i.showHidden=!1),m(i.depth)&&(i.depth=2),m(i.colors)&&(i.colors=!1),m(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=l),f(i,t,i.depth)}function l(t,e){var r=u.styles[e];return r?"["+u.colors[r][0]+"m"+t+"["+u.colors[r][1]+"m":t}function c(t,e){return t}function f(t,r,i){if(t.customInspect&&r&&v(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var n=r.inspect(i,t);return B(n)||(n=f(t,n,i)),n}var o=function(t,e){if(m(e))return t.stylize("undefined","undefined");if(B(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return w(e)?t.stylize(""+e,"number"):M(e)?t.stylize(""+e,"boolean"):p(e)?t.stylize("null","null"):void 0}(t,r);if(o)return o;var s=Object.keys(r),a=function(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),I(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return d(r);if(0===s.length){if(v(r)){var h=r.name?": "+r.name:"";return t.stylize("[Function"+h+"]","special")}if(E(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(b(r))return t.stylize(Date.prototype.toString.call(r),"date");if(I(r))return d(r)}var u,l="",c=!1,y=["{","}"];return A(r)&&(c=!0,y=["[","]"]),v(r)&&(l=" [Function"+(r.name?": "+r.name:"")+"]"),E(r)&&(l=" "+RegExp.prototype.toString.call(r)),b(r)&&(l=" "+Date.prototype.toUTCString.call(r)),I(r)&&(l=" "+d(r)),0!==s.length||c&&0!=r.length?i<0?E(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),u=c?function(t,e,r,i,n){for(var o=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(u,l,y)):y[0]+l+y[1]}function d(t){return"["+Error.prototype.toString.call(t)+"]"}function g(t,e,r,i,n,o){var s,a,h;if((h=Object.getOwnPropertyDescriptor(e,n)||{value:e[n]}).get?a=h.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):h.set&&(a=t.stylize("[Setter]","special")),R(i,n)||(s="["+n+"]"),a||(t.seen.indexOf(h.value)<0?(a=p(r)?f(t,h.value,null):f(t,h.value,r-1)).indexOf("\n")>-1&&(a=o?a.split("\n").map((function(t){return" "+t})).join("\n").substr(2):"\n"+a.split("\n").map((function(t){return" "+t})).join("\n")):a=t.stylize("[Circular]","special")),m(s)){if(o&&n.match(/^\d+$/))return a;(s=JSON.stringify(""+n)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function A(t){return Array.isArray(t)}function M(t){return"boolean"==typeof t}function p(t){return null===t}function w(t){return"number"==typeof t}function B(t){return"string"==typeof t}function m(t){return void 0===t}function E(t){return y(t)&&"[object RegExp]"===C(t)}function y(t){return"object"==typeof t&&null!==t}function b(t){return y(t)&&"[object Date]"===C(t)}function I(t){return y(t)&&("[object Error]"===C(t)||t instanceof Error)}function v(t){return"function"==typeof t}function C(t){return Object.prototype.toString.call(t)}function Q(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r=i.pid;s[t]=function(){var i=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,i)}}else s[t]=function(){};return s[t]},e.inspect=u,u.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},u.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(5955),e.isArray=A,e.isBoolean=M,e.isNull=p,e.isNullOrUndefined=function(t){return null==t},e.isNumber=w,e.isString=B,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=m,e.isRegExp=E,e.types.isRegExp=E,e.isObject=y,e.isDate=b,e.types.isDate=b,e.isError=I,e.types.isNativeError=I,e.isFunction=v,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(384);var D=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function N(){var t=new Date,e=[Q(t.getHours()),Q(t.getMinutes()),Q(t.getSeconds())].join(":");return[t.getDate(),D[t.getMonth()],e].join(" ")}function R(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){console.log("%s - %s",N(),e.format.apply(e,arguments))},e.inherits=r(5717),e._extend=function(t,e){if(!e||!y(e))return t;for(var r=Object.keys(e),i=r.length;i--;)t[r[i]]=e[r[i]];return t};var G="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function U(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(G&&t[G]){var e;if("function"!=typeof(e=t[G]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,G,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,i=new Promise((function(t,i){e=t,r=i})),n=[],o=0;o{"use strict";var i=r(9804),n=r(6314),o=r(1924),s=o("Object.prototype.toString"),a=r(1405)()&&"symbol"==typeof Symbol.toStringTag,h=n(),u=o("String.prototype.slice"),l={},c=r(4079),f=Object.getPrototypeOf;a&&c&&f&&i(h,(function(t){if("function"==typeof r.g[t]){var e=new r.g[t];if(!(Symbol.toStringTag in e))throw new EvalError("this engine has support for Symbol.toStringTag, but "+t+" does not have the property! Please report this.");var i=f(e),n=c(i,Symbol.toStringTag);if(!n){var o=f(i);n=c(o,Symbol.toStringTag)}l[t]=n.get}}));var d=r(5692);t.exports=function(t){return!!d(t)&&(a?function(t){var e=!1;return i(l,(function(r,i){if(!e)try{var n=r.call(t);n===i&&(e=n)}catch(t){}})),e}(t):u(s(t),8,-1))}},950:()=>{},6601:()=>{},9214:()=>{},8623:()=>{},7748:()=>{},5568:()=>{},6619:()=>{},7108:()=>{},2361:()=>{},4616:()=>{}},e={};function r(i){var n=e[i];if(void 0!==n)return n.exports;var o=e[i]={id:i,loaded:!1,exports:{}};return t[i].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var i in e)r.o(e,i)&&!r.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r(8677)})(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYXBpLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9idWZmZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9ub2RlLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2NvbnN0YW50cy9kZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9jb25zdGFudHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9kZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2RlY29kZXJzL3BlbS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL2Rlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZW5jb2RlcnMvcGVtLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc3NlcnQvYnVpbGQvYXNzZXJ0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Fzc2VydC9idWlsZC9pbnRlcm5hbC9hc3NlcnQvYXNzZXJ0aW9uX2Vycm9yLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Fzc2VydC9idWlsZC9pbnRlcm5hbC9lcnJvcnMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNzZXJ0L2J1aWxkL2ludGVybmFsL3V0aWwvY29tcGFyaXNvbnMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXZhaWxhYmxlLXR5cGVkLWFycmF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9iYXNlNDUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYmFzZTQ1L2xpYi9iYXNlNDUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYmFzZTY0LWpzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2JpZ251bWJlci5qcy9iaWdudW1iZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYm4uanMvbGliL2JuLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3JhbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYWVzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2F1dGhDaXBoZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9kZWNyeXB0ZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvZW5jcnlwdGVyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2doYXNoLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2luY3IzMi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jYmMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2ZiLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYjEuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2ZiOC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jdHIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvZWNiLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL29mYi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9zdHJlYW1DaXBoZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1jaXBoZXIvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWRlcy9tb2Rlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXJzYS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ24vYWxnb3MuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2Jyb3dzZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2Jyb3dzZXIvc2lnbi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ24vYnJvd3Nlci92ZXJpZnkuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL2xpYi9iaW5kaW5nLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktemxpYi9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnVmZmVyLXhvci9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9idWZmZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvY2FsbC1iaW5kL2NhbGxCb3VuZC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jYWxsLWJpbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvY2Jvci13ZWIvZGlzdC9jYm9yLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NpcGhlci1iYXNlL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1lY2RoL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvY3JlYXRlLWVjZGgvbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jcmVhdGUtaGFzaC9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1oYXNoL21kNS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jcmVhdGUtaG1hYy9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1obWFjL2xlZ2FjeS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tYnJvd3NlcmlmeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZWZpbmUtcHJvcGVydGllcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9jYmMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvY2lwaGVyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2Rlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9lZGUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kaWZmaWUtaGVsbG1hbi9saWIvZGguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbGliL2dlbmVyYXRlUHJpbWUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Jhc2UuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Vkd2FyZHMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9tb250LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9zaG9ydC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmVzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWMva2V5LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9zaWduYXR1cmUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9rZXkuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL3NpZ25hdHVyZS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvcHJlY29tcHV0ZWQvc2VjcDI1NmsxLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy91dGlscy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9ub2RlX21vZHVsZXMvYm4uanMvbGliL2JuLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VzLWFic3RyYWN0L2hlbHBlcnMvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VzNi1vYmplY3QtYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2V2ZW50cy9ldmVudHMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZXZwX2J5dGVzdG9rZXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZm9yZWFjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9mdW5jdGlvbi1iaW5kL2ltcGxlbWVudGF0aW9uLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Z1bmN0aW9uLWJpbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZ2V0LWludHJpbnNpYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXMtc3ltYm9scy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXMtc3ltYm9scy9zaGFtcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXMvc3JjL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2gtYmFzZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvY29tbW9uLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvaG1hYy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3JpcGVtZC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS8xLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLzIyNC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS8yNTYuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9zaGEvMzg0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLzUxMi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS9jb21tb24uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC91dGlscy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9obWFjLWRyYmcvbGliL2htYWMtZHJiZy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pZWVlNzU0L2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2luaGVyaXRzL2luaGVyaXRzX2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaXMtYXJndW1lbnRzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2lzLWdlbmVyYXRvci1mdW5jdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pcy1uYW4vaW1wbGVtZW50YXRpb24uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaXMtbmFuL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2lzLW5hbi9wb2x5ZmlsbC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pcy1uYW4vc2hpbS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pcy10eXBlZC1hcnJheS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9tZDUuanMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvbWlsbGVyLXJhYmluL2xpYi9tci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9taWxsZXItcmFiaW4vbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9taW5pbWFsaXN0aWMtYXNzZXJ0L2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL21pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHMvbGliL3V0aWxzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1pcy9pbXBsZW1lbnRhdGlvbi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9vYmplY3QtaXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvb2JqZWN0LWlzL3BvbHlmaWxsLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1pcy9zaGltLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1rZXlzL2ltcGxlbWVudGF0aW9uLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1rZXlzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1rZXlzL2lzQXJndW1lbnRzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3V0aWxzL2NvbW1vbi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2FkbGVyMzIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9jcmMzMi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2RlZmxhdGUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9pbmZmYXN0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvaW5mbGF0ZS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2luZnRyZWVzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvbWVzc2FnZXMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi90cmVlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL3pzdHJlYW0uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9hc24xLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvY2VydGlmaWNhdGUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9maXhQcm9jLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGJrZGYyL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi9hc3luYy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wYmtkZjIvbGliL2RlZmF1bHQtZW5jb2RpbmcuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi9wcmVjb25kaXRpb24uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi9zeW5jLWJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi90by1idWZmZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvbWdmLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L25vZGVfbW9kdWxlcy9ibi5qcy9saWIvYm4uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvcHJpdmF0ZURlY3J5cHQuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvcHVibGljRW5jcnlwdC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC93aXRoUHVibGljLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3hvci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yYW5kb21ieXRlcy9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JhbmRvbWZpbGwvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vZXJyb3JzLWJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX2R1cGxleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3JlYWRhYmxlLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9hc3luY19pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvYnVmZmVyX2xpc3QuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3kuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2VuZC1vZi1zdHJlYW0uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2Zyb20tYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvcGlwZWxpbmUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3N0YXRlLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9zdHJlYW0tYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vcmVhZGFibGUtYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yaXBlbWQxNjAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvc2FmZS1idWZmZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvc2FmZXItYnVmZmVyL3NhZmVyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9oYXNoLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9zaGEuanMvc2hhLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9zaGExLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9zaGEyMjQuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvc2hhLmpzL3NoYTI1Ni5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9zaGEuanMvc2hhMzg0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9zaGE1MTIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvc3RyZWFtLWJyb3dzZXJpZnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvc3RyaW5nX2RlY29kZXIvbGliL3N0cmluZ19kZWNvZGVyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vc3JjL3RydXN0bGlzdC50cyIsIndlYnBhY2s6Ly9ldWRnYy8uL3NyYy9jb3NlMS50cyIsIndlYnBhY2s6Ly9ldWRnYy8uL3NyYy9ldWRnYy50cyIsIndlYnBhY2s6Ly9ldWRnYy8uL3NyYy9pbmRleC50cyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy91dGlsLWRlcHJlY2F0ZS9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3V0aWwvc3VwcG9ydC9pc0J1ZmZlckJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvdXRpbC9zdXBwb3J0L3R5cGVzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3V0aWwvdXRpbC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy93aGljaC10eXBlZC1hcnJheS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9ldWRnYy93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9ldWRnYy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vZXVkZ2Mvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9ldWRnYy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL2V1ZGdjL3dlYnBhY2svcnVudGltZS9ub2RlIG1vZHVsZSBkZWNvcmF0b3IiLCJ3ZWJwYWNrOi8vZXVkZ2Mvd2VicGFjay9zdGFydHVwIl0sIm5hbWVzIjpbImFzbjEiLCJleHBvcnRzIiwiYmlnbnVtIiwiZGVmaW5lIiwiYmFzZSIsImNvbnN0YW50cyIsImRlY29kZXJzIiwiZW5jb2RlcnMiLCJpbmhlcml0cyIsIkVudGl0eSIsIm5hbWUiLCJib2R5IiwidGhpcyIsInByb3RvdHlwZSIsIl9jcmVhdGVOYW1lZCIsIkJhc2UiLCJHZW5lcmF0ZWQiLCJlbnRpdHkiLCJfaW5pdE5hbWVkIiwiY2FsbCIsIl9nZXREZWNvZGVyIiwiZW5jIiwiaGFzT3duUHJvcGVydHkiLCJkZWNvZGUiLCJkYXRhIiwib3B0aW9ucyIsIl9nZXRFbmNvZGVyIiwiZW5jb2RlIiwicmVwb3J0ZXIiLCJSZXBvcnRlciIsIkJ1ZmZlciIsIkRlY29kZXJCdWZmZXIiLCJpc0J1ZmZlciIsIm9mZnNldCIsImxlbmd0aCIsImVycm9yIiwiRW5jb2RlckJ1ZmZlciIsInZhbHVlIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwiaXRlbSIsImlzRW5jb2RlckJ1ZmZlciIsImJ5dGVMZW5ndGgiLCJpc0RlY29kZXJCdWZmZXIiLCJjb25zdHJ1Y3RvciIsInNhdmUiLCJyZXN0b3JlIiwiaXNFbXB0eSIsInJlYWRVSW50OCIsInNraXAiLCJyYXciLCJyZXMiLCJmYWlsIiwiYnl0ZXMiLCJfcmVwb3J0ZXJTdGF0ZSIsInNsaWNlIiwiam9pbiIsIm91dCIsImFsbG9jIiwiZm9yRWFjaCIsIndyaXRlIiwiY29weSIsIk5vZGUiLCJhc3NlcnQiLCJ0YWdzIiwibWV0aG9kcyIsImNvbmNhdCIsInBhcmVudCIsInN0YXRlIiwiX2Jhc2VTdGF0ZSIsImNoaWxkcmVuIiwidGFnIiwiYXJncyIsInJldmVyc2VBcmdzIiwiY2hvaWNlIiwib3B0aW9uYWwiLCJhbnkiLCJvYmoiLCJ1c2UiLCJ1c2VEZWNvZGVyIiwia2V5IiwiZXhwbGljaXQiLCJpbXBsaWNpdCIsImNvbnRhaW5zIiwiX3dyYXAiLCJtb2R1bGUiLCJzdGF0ZVByb3BzIiwiY2xvbmUiLCJjc3RhdGUiLCJwcm9wIiwibWV0aG9kIiwicHVzaCIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2luaXQiLCJmaWx0ZXIiLCJjaGlsZCIsImVxdWFsIiwiX3VzZUFyZ3MiLCJhcmciLCJPYmplY3QiLCJrZXlzIiwiRXJyb3IiLCJkZWYiLCJ2YWwiLCJudW0iLCJuZXdLZXkiLCJfZGVjb2RlIiwiaW5wdXQiLCJ3cmFwUmVzdWx0IiwicHJldk9iaiIsInJlc3VsdCIsInByZXNlbnQiLCJwcmV2S2V5IiwiZW50ZXJLZXkiLCJfcGVla1RhZyIsImlzRXJyb3IiLCJfZGVjb2RlR2VuZXJpYyIsIl9kZWNvZGVDaG9pY2UiLCJlIiwiZW50ZXJPYmplY3QiLCJfZGVjb2RlVGFnIiwic3RhcnQiLCJ0cmFjayIsInBhdGgiLCJfZ2V0VXNlIiwibGVhdmVPYmplY3QiLCJleGl0S2V5IiwibGVhdmVLZXkiLCJfZGVjb2RlTGlzdCIsInRlc3QiLCJfZGVjb2RlU3RyIiwiX2RlY29kZU9iamlkIiwiX2RlY29kZVRpbWUiLCJfZGVjb2RlTnVsbCIsIl9kZWNvZGVCb29sIiwiX2RlY29kZUludCIsIl91c2UiLCJtYXRjaCIsInNvbWUiLCJub2RlIiwidHlwZSIsIl9jcmVhdGVFbmNvZGVyQnVmZmVyIiwiX2VuY29kZSIsIl9lbmNvZGVWYWx1ZSIsInVuZGVmaW5lZCIsIl9za2lwRGVmYXVsdCIsImNvbnRlbnQiLCJwcmltaXRpdmUiLCJfZW5jb2RlQ2hvaWNlIiwiX2VuY29kZVByaW1pdGl2ZSIsImNscyIsIl9lbmNvZGVDb21wb3NpdGUiLCJKU09OIiwic3RyaW5naWZ5IiwiX2VuY29kZVN0ciIsIl9lbmNvZGVPYmppZCIsIl9lbmNvZGVUaW1lIiwiX2VuY29kZU51bGwiLCJfZW5jb2RlSW50IiwiX2VuY29kZUJvb2wiLCJfaXNOdW1zdHIiLCJzdHIiLCJfaXNQcmludHN0ciIsImVycm9ycyIsIlJlcG9ydGVyRXJyb3IiLCJtc2ciLCJyZXRocm93IiwicGF0aExlbiIsImluZGV4IiwicHJldiIsIm5vdyIsImVyciIsImluaGVyaXRlZCIsImVsZW0iLCJtZXNzYWdlIiwic3RhY2siLCJwYXJ0aWFsIiwiY2FwdHVyZVN0YWNrVHJhY2UiLCJyZXZlcnNlIiwidGFnQ2xhc3MiLCJ0YWdDbGFzc0J5TmFtZSIsInRhZ0J5TmFtZSIsIl9yZXZlcnNlIiwiZGVyIiwiREVSRGVjb2RlciIsInRyZWUiLCJERVJOb2RlIiwiZGVyRGVjb2RlVGFnIiwiYnVmIiwib2N0IiwidGFnU3RyIiwiZGVyRGVjb2RlTGVuIiwibGVuIiwiaSIsImoiLCJidWZmZXIiLCJkZWNvZGVkVGFnIiwiX3NraXBVbnRpbEVuZCIsImRlY29kZXIiLCJwb3NzaWJsZUVuZCIsInVudXNlZCIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsInJlYWRVSW50MTZCRSIsIm51bXN0ciIsInRvU3RyaW5nIiwicHJpbnRzdHIiLCJ2YWx1ZXMiLCJyZWxhdGl2ZSIsImlkZW50aWZpZXJzIiwiaWRlbnQiLCJzdWJpZGVudCIsImZpcnN0Iiwic2Vjb25kIiwidG1wIiwieWVhciIsIm1vbiIsImRheSIsImhvdXIiLCJtaW4iLCJzZWMiLCJEYXRlIiwiVVRDIiwicGVtIiwiUEVNRGVjb2RlciIsImxpbmVzIiwic3BsaXQiLCJsYWJlbCIsInRvVXBwZXJDYXNlIiwicmUiLCJlbmQiLCJiYXNlNjQiLCJyZXBsYWNlIiwiZnJvbSIsIkRFUkVuY29kZXIiLCJ0d28iLCJlbmNvZGVkVGFnIiwiZW5jb2RlVGFnIiwiaGVhZGVyIiwibGVuT2N0ZXRzIiwid3JpdGVVSW50MTZCRSIsImNoYXJDb2RlQXQiLCJpZCIsInNwbGljZSIsInNpemUiLCJvYmppZCIsInRpbWUiLCJkYXRlIiwiZ2V0VVRDRnVsbFllYXIiLCJnZXRVVENNb250aCIsImdldFVUQ0RhdGUiLCJnZXRVVENIb3VycyIsImdldFVUQ01pbnV0ZXMiLCJnZXRVVENTZWNvbmRzIiwibnVtQXJyYXkiLCJ0b0FycmF5Iiwic2lnbiIsInVuc2hpZnQiLCJkYXRhQnVmZmVyIiwiZGVmYXVsdEJ1ZmZlciIsIlBFTUVuY29kZXIiLCJwIiwiY3RvciIsInN1cGVyQ3RvciIsInN1cGVyXyIsIlRlbXBDdG9yIiwiQk4iLCJudW1iZXIiLCJlbmRpYW4iLCJpc0JOIiwibmVnYXRpdmUiLCJ3b3JkcyIsInJlZCIsIndvcmRTaXplIiwid2luZG93IiwicGFyc2VIZXg0Qml0cyIsInN0cmluZyIsImMiLCJwYXJzZUhleEJ5dGUiLCJsb3dlckJvdW5kIiwiciIsInBhcnNlQmFzZSIsIm11bCIsIk1hdGgiLCJtYXgiLCJsZWZ0IiwicmlnaHQiLCJjbXAiLCJfaW5pdE51bWJlciIsIl9pbml0QXJyYXkiLCJfcGFyc2VIZXgiLCJfcGFyc2VCYXNlIiwiY2VpbCIsInciLCJvZmYiLCJzdHJpcCIsImxpbWJMZW4iLCJsaW1iUG93IiwidG90YWwiLCJtb2QiLCJ3b3JkIiwiaW11bG4iLCJfaWFkZG4iLCJwb3ciLCJkZXN0IiwiX2V4cGFuZCIsIl9ub3JtU2lnbiIsImluc3BlY3QiLCJ6ZXJvcyIsImdyb3VwU2l6ZXMiLCJncm91cEJhc2VzIiwic21hbGxNdWxUbyIsInNlbGYiLCJhIiwiYiIsImxvIiwiY2FycnkiLCJrIiwibmNhcnJ5IiwicndvcmQiLCJtYXhKIiwicGFkZGluZyIsImdyb3VwU2l6ZSIsImdyb3VwQmFzZSIsImlzWmVybyIsIm1vZG4iLCJpZGl2biIsInRvTnVtYmVyIiwicmV0IiwidG9KU09OIiwidG9CdWZmZXIiLCJ0b0FycmF5TGlrZSIsIkFycmF5VHlwZSIsInJlcUxlbmd0aCIsImxpdHRsZUVuZGlhbiIsInEiLCJhbmRsbiIsIml1c2hybiIsImNsejMyIiwiX2NvdW50Qml0cyIsInQiLCJfemVyb0JpdHMiLCJiaXRMZW5ndGgiLCJoaSIsInplcm9CaXRzIiwidG9Ud29zIiwid2lkdGgiLCJhYnMiLCJpbm90biIsImlhZGRuIiwiZnJvbVR3b3MiLCJ0ZXN0biIsIm5vdG4iLCJpbmVnIiwiaXNOZWciLCJuZWciLCJpdW9yIiwiaW9yIiwib3IiLCJ1b3IiLCJpdWFuZCIsImlhbmQiLCJhbmQiLCJ1YW5kIiwiaXV4b3IiLCJpeG9yIiwieG9yIiwidXhvciIsImJ5dGVzTmVlZGVkIiwiYml0c0xlZnQiLCJzZXRuIiwiYml0Iiwid2JpdCIsImlhZGQiLCJpc3ViIiwiYWRkIiwic3ViIiwiY29tYjEwTXVsVG8iLCJtaWQiLCJvIiwiYTAiLCJhbDAiLCJhaDAiLCJhMSIsImFsMSIsImFoMSIsImEyIiwiYWwyIiwiYWgyIiwiYTMiLCJhbDMiLCJhaDMiLCJhNCIsImFsNCIsImFoNCIsImE1IiwiYWw1IiwiYWg1IiwiYTYiLCJhbDYiLCJhaDYiLCJhNyIsImFsNyIsImFoNyIsImE4IiwiYWw4IiwiYWg4IiwiYTkiLCJhbDkiLCJhaDkiLCJiMCIsImJsMCIsImJoMCIsImIxIiwiYmwxIiwiYmgxIiwiYjIiLCJibDIiLCJiaDIiLCJiMyIsImJsMyIsImJoMyIsImI0IiwiYmw0IiwiYmg0IiwiYjUiLCJibDUiLCJiaDUiLCJiNiIsImJsNiIsImJoNiIsImI3IiwiYmw3IiwiYmg3IiwiYjgiLCJibDgiLCJiaDgiLCJiOSIsImJsOSIsImJoOSIsIncwIiwiaW11bCIsIncxIiwidzIiLCJ3MyIsInc0IiwidzUiLCJ3NiIsInc3IiwidzgiLCJ3OSIsIncxMCIsIncxMSIsIncxMiIsIncxMyIsIncxNCIsIncxNSIsIncxNiIsIncxNyIsIncxOCIsImp1bWJvTXVsVG8iLCJGRlRNIiwibXVscCIsIngiLCJ5IiwibXVsVG8iLCJobmNhcnJ5IiwiYmlnTXVsVG8iLCJtYWtlUkJUIiwiTiIsImwiLCJyZXZCaW4iLCJyYiIsInBlcm11dGUiLCJyYnQiLCJyd3MiLCJpd3MiLCJydHdzIiwiaXR3cyIsInRyYW5zZm9ybSIsInMiLCJydHdkZiIsImNvcyIsIlBJIiwiaXR3ZGYiLCJzaW4iLCJydHdkZl8iLCJpdHdkZl8iLCJpZSIsInJvIiwiaW8iLCJyeCIsImd1ZXNzTGVuMTNiIiwibiIsIm0iLCJvZGQiLCJjb25qdWdhdGUiLCJub3JtYWxpemUxM2IiLCJ3cyIsInJvdW5kIiwiY29udmVydDEzYiIsInN0dWIiLCJwaCIsIl8iLCJyd3N0IiwiaXdzdCIsIm5yd3MiLCJucndzdCIsIm5pd3N0Iiwicm13cyIsIm11bGYiLCJtdWxuIiwic3FyIiwiaXNxciIsInRvQml0QXJyYXkiLCJpdXNobG4iLCJiaXRzIiwiY2FycnlNYXNrIiwibmV3Q2FycnkiLCJpc2hsbiIsImhpbnQiLCJleHRlbmRlZCIsImgiLCJtYXNrIiwibWFza2VkV29yZHMiLCJpc2hybiIsInNobG4iLCJ1c2hsbiIsInNocm4iLCJ1c2hybiIsImltYXNrbiIsIm1hc2tuIiwiaXN1Ym4iLCJhZGRuIiwic3VibiIsImlhYnMiLCJfaXNobG5zdWJtdWwiLCJzaGlmdCIsIl93b3JkRGl2IiwibW9kZSIsImJoaSIsImRpZmYiLCJxaiIsImRpdiIsImRpdm1vZCIsInBvc2l0aXZlIiwiZGl2biIsInVtb2QiLCJkaXZSb3VuZCIsImRtIiwiaGFsZiIsInIyIiwiYWNjIiwiZWdjZCIsIkEiLCJCIiwiQyIsIkQiLCJnIiwiaXNFdmVuIiwieXAiLCJ4cCIsImltIiwiaXNPZGQiLCJqbSIsImdjZCIsIl9pbnZtcCIsIngxIiwieDIiLCJkZWx0YSIsImNtcG4iLCJpbnZtIiwiYmluY24iLCJ1Y21wIiwiZ3RuIiwiZ3QiLCJndGVuIiwiZ3RlIiwibHRuIiwibHQiLCJsdGVuIiwibHRlIiwiZXFuIiwiZXEiLCJSZWQiLCJ0b1JlZCIsImN0eCIsImNvbnZlcnRUbyIsIl9mb3JjZVJlZCIsImZyb21SZWQiLCJjb252ZXJ0RnJvbSIsImZvcmNlUmVkIiwicmVkQWRkIiwicmVkSUFkZCIsInJlZFN1YiIsInJlZElTdWIiLCJyZWRTaGwiLCJzaGwiLCJyZWRNdWwiLCJfdmVyaWZ5MiIsInJlZElNdWwiLCJyZWRTcXIiLCJfdmVyaWZ5MSIsInJlZElTcXIiLCJyZWRTcXJ0Iiwic3FydCIsInJlZEludm0iLCJyZWROZWciLCJyZWRQb3ciLCJwcmltZXMiLCJrMjU2IiwicDIyNCIsInAxOTIiLCJwMjU1MTkiLCJNUHJpbWUiLCJfdG1wIiwiSzI1NiIsIlAyMjQiLCJQMTkyIiwiUDI1NTE5IiwicHJpbWUiLCJfcHJpbWUiLCJNb250IiwiaW1vZCIsInJpbnYiLCJtaW52IiwiaXJlZHVjZSIsInJsZW4iLCJpbXVsSyIsIl9zdHJpcCIsIm91dHB1dCIsIm91dExlbiIsIm5leHQiLCJtb2QzIiwib25lIiwibk9uZSIsImxwb3ciLCJ6IiwiaW52Iiwid25kIiwiY3VycmVudCIsImN1cnJlbnRMZW4iLCJtb250IiwidSIsIl90eXBlb2YiLCJTeW1ib2wiLCJpdGVyYXRvciIsImlzRGVlcEVxdWFsIiwiaXNEZWVwU3RyaWN0RXF1YWwiLCJfcmVxdWlyZSRjb2RlcyIsImNvZGVzIiwiRVJSX0FNQklHVU9VU19BUkdVTUVOVCIsIkVSUl9JTlZBTElEX0FSR19UWVBFIiwiRVJSX0lOVkFMSURfQVJHX1ZBTFVFIiwiRVJSX0lOVkFMSURfUkVUVVJOX1ZBTFVFIiwiRVJSX01JU1NJTkdfQVJHUyIsIkFzc2VydGlvbkVycm9yIiwiX3JlcXVpcmUkdHlwZXMiLCJpc1Byb21pc2UiLCJpc1JlZ0V4cCIsIm9iamVjdEFzc2lnbiIsImFzc2lnbiIsIm9iamVjdElzIiwiaXMiLCJsYXp5TG9hZENvbXBhcmlzb24iLCJjb21wYXJpc29uIiwiTWFwIiwid2FybmVkIiwib2siLCJOT19FWENFUFRJT05fU0VOVElORUwiLCJpbm5lckZhaWwiLCJpbm5lck9rIiwiZm4iLCJhcmdMZW4iLCJnZW5lcmF0ZWRNZXNzYWdlIiwiYWN0dWFsIiwiZXhwZWN0ZWQiLCJvcGVyYXRvciIsInN0YWNrU3RhcnRGbiIsIl9sZW4iLCJfa2V5IiwiaW50ZXJuYWxNZXNzYWdlIiwiYXJnc0xlbiIsIndhcm4iLCJwcm9jZXNzIiwiZW1pdFdhcm5pbmciLCJjb25zb2xlIiwiYmluZCIsImVyckFyZ3MiLCJub3RFcXVhbCIsImRlZXBFcXVhbCIsIm5vdERlZXBFcXVhbCIsImRlZXBTdHJpY3RFcXVhbCIsIm5vdERlZXBTdHJpY3RFcXVhbCIsInN0cmljdEVxdWFsIiwibm90U3RyaWN0RXF1YWwiLCJDb21wYXJpc29uIiwiX3RoaXMiLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwiX2NsYXNzQ2FsbENoZWNrIiwiY29tcGFyZUV4Y2VwdGlvbktleSIsImV4cGVjdGVkRXhjZXB0aW9uIiwiaXNQcm90b3R5cGVPZiIsImdldEFjdHVhbCIsImNoZWNrSXNQcm9taXNlIiwidGhlbiIsImNhdGNoIiwid2FpdEZvckFjdHVhbCIsInByb21pc2VGbiIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVzdWx0UHJvbWlzZSIsImV4cGVjdHNFcnJvciIsImRldGFpbHMiLCJmblR5cGUiLCJleHBlY3RzTm9FcnJvciIsInN0cmljdCIsIl9sZW42IiwiX2tleTYiLCJ0aHJvd3MiLCJfbGVuMiIsIl9rZXkyIiwicmVqZWN0cyIsIl9sZW4zIiwiX2tleTMiLCJkb2VzTm90VGhyb3ciLCJfbGVuNCIsIl9rZXk0IiwiZG9lc05vdFJlamVjdCIsIl9sZW41IiwiX2tleTUiLCJpZkVycm9yIiwibmV3RXJyIiwib3JpZ1N0YWNrIiwidG1wMiIsInRtcDEiLCJwb3MiLCJpbmRleE9mIiwiX2RlZmluZVByb3BlcnR5IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfZGVmaW5lUHJvcGVydGllcyIsInRhcmdldCIsInByb3BzIiwiZGVzY3JpcHRvciIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiX3dyYXBOYXRpdmVTdXBlciIsIkNsYXNzIiwiX2NhY2hlIiwiRnVuY3Rpb24iLCJoYXMiLCJnZXQiLCJzZXQiLCJXcmFwcGVyIiwiX2NvbnN0cnVjdCIsIl9nZXRQcm90b3R5cGVPZiIsImNyZWF0ZSIsIl9zZXRQcm90b3R5cGVPZiIsImlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJzaGFtIiwiUHJveHkiLCJQYXJlbnQiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImdldFByb3RvdHlwZU9mIiwiZW5kc1dpdGgiLCJzZWFyY2giLCJ0aGlzX2xlbiIsInN1YnN0cmluZyIsImJsdWUiLCJncmVlbiIsIndoaXRlIiwia1JlYWRhYmxlT3BlcmF0b3IiLCJzdHJpY3RFcXVhbE9iamVjdCIsIm5vdFN0cmljdEVxdWFsT2JqZWN0Iiwibm90SWRlbnRpY2FsIiwiY29weUVycm9yIiwic291cmNlIiwiaW5zcGVjdFZhbHVlIiwiY29tcGFjdCIsImN1c3RvbUluc3BlY3QiLCJkZXB0aCIsIm1heEFycmF5TGVuZ3RoIiwiSW5maW5pdHkiLCJzaG93SGlkZGVuIiwiYnJlYWtMZW5ndGgiLCJzaG93UHJveHkiLCJzb3J0ZWQiLCJnZXR0ZXJzIiwiX0Vycm9yIiwibGltaXQiLCJzdGFja1RyYWNlTGltaXQiLCJzdGRlcnIiLCJpc1RUWSIsImdldENvbG9yRGVwdGgiLCJvdGhlciIsImxhc3RQb3MiLCJza2lwcGVkIiwiYWN0dWFsSW5zcGVjdGVkIiwiYWN0dWFsTGluZXMiLCJleHBlY3RlZExpbmVzIiwiaW5kaWNhdG9yIiwiaW5wdXRMZW5ndGgiLCJjb2x1bW5zIiwiY291bnQiLCJmbG9vciIsIm1heENvdW50IiwibG9nIiwicmVwZWF0IiwicG9wIiwibWF4TGluZXMiLCJfYWN0dWFsTGluZXMiLCJwcmludGVkTGluZXMiLCJza2lwcGVkTXNnIiwiY3VyIiwiZXhwZWN0ZWRMaW5lIiwiYWN0dWFsTGluZSIsImRpdmVyZ2luZ0xpbmVzIiwiY3JlYXRlRXJyRGlmZiIsIl9yZXMiLCJrbm93bk9wZXJhdG9ycyIsImNvZGUiLCJwcm90b1Byb3BzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiX2luaGVyaXRzIiwiY3VzdG9tIiwicmVjdXJzZVRpbWVzIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9vYmplY3RTcHJlYWQiLCJ1dGlsIiwiY3JlYXRlRXJyb3JUeXBlIiwiTm9kZUVycm9yIiwiX0Jhc2UiLCJhcmcxIiwiYXJnMiIsImFyZzMiLCJnZXRNZXNzYWdlIiwib25lT2YiLCJ0aGluZyIsImRldGVybWluZXIiLCJzdWJzdHIiLCJyZWFzb24iLCJpbnNwZWN0ZWQiLCJSYW5nZUVycm9yIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfYXJyIiwiX24iLCJfZCIsIl9lIiwiX3MiLCJfaSIsImRvbmUiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwicmVnZXhGbGFnc1N1cHBvcnRlZCIsImZsYWdzIiwiYXJyYXlGcm9tU2V0IiwiYXJyYXkiLCJhcnJheUZyb21NYXAiLCJvYmplY3RHZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJudW1iZXJJc05hTiIsIk51bWJlciIsImlzTmFOIiwidW5jdXJyeVRoaXMiLCJmIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJvYmplY3RUb1N0cmluZyIsImlzQW55QXJyYXlCdWZmZXIiLCJpc0FycmF5QnVmZmVyVmlldyIsImlzRGF0ZSIsImlzTWFwIiwiaXNTZXQiLCJpc05hdGl2ZUVycm9yIiwiaXNCb3hlZFByaW1pdGl2ZSIsImlzTnVtYmVyT2JqZWN0IiwiaXNTdHJpbmdPYmplY3QiLCJpc0Jvb2xlYW5PYmplY3QiLCJpc0JpZ0ludE9iamVjdCIsImlzU3ltYm9sT2JqZWN0IiwiaXNGbG9hdDMyQXJyYXkiLCJpc0Zsb2F0NjRBcnJheSIsImlzTm9uSW5kZXgiLCJnZXRPd25Ob25JbmRleFByb3BlcnRpZXMiLCJjb21wYXJlIiwiaW5uZXJEZWVwRXF1YWwiLCJ2YWwxIiwidmFsMiIsIm1lbW9zIiwiYnVmMSIsImJ1ZjIiLCJ2YWwxVGFnIiwia2V5czEiLCJrZXlzMiIsImtleUNoZWNrIiwiZ2V0VGltZSIsIlJlZ0V4cCIsIlVpbnQ4QXJyYXkiLCJieXRlT2Zmc2V0IiwiYXJlU2ltaWxhclR5cGVkQXJyYXlzIiwiYXJlU2ltaWxhckZsb2F0QXJyYXlzIiwiX2tleXMiLCJfa2V5czIiLCJ2YWx1ZU9mIiwiQm9vbGVhbiIsIkJpZ0ludCIsImlzRXF1YWxCb3hlZFByaW1pdGl2ZSIsImdldEVudW1lcmFibGVzIiwiaXRlcmF0aW9uVHlwZSIsImFLZXlzIiwiYktleXMiLCJzeW1ib2xLZXlzQSIsInN5bWJvbEtleXNCIiwiX3N5bWJvbEtleXNCIiwicG9zaXRpb24iLCJ2YWwyTWVtb0EiLCJ2YWwyTWVtb0IiLCJhcmVFcSIsIm9iakVxdWl2IiwiZGVsZXRlIiwic2V0SGFzRXF1YWxFbGVtZW50IiwibWVtbyIsInNldFZhbHVlcyIsImZpbmRMb29zZU1hdGNoaW5nUHJpbWl0aXZlcyIsInByaW0iLCJzZXRNaWdodEhhdmVMb29zZVByaW0iLCJhbHRWYWx1ZSIsIm1hcE1pZ2h0SGF2ZUxvb3NlUHJpbSIsImN1ckIiLCJtYXBIYXNFcXVhbEVudHJ5Iiwia2V5MSIsIml0ZW0xIiwia2V5MiIsImFWYWx1ZXMiLCJTZXQiLCJiVmFsdWVzIiwiX3ZhbCIsInNldEVxdWl2IiwiYUVudHJpZXMiLCJfYUVudHJpZXMkaSIsIml0ZW0yIiwiYkVudHJpZXMiLCJfaTIiLCJfYkVudHJpZXMkX2kiLCJtYXBFcXVpdiIsImtleXNBIiwicG9zc2libGVOYW1lcyIsImNoYXJzZXQiLCJyZXN0IiwiZCIsImI2NCIsImxlbnMiLCJnZXRMZW5zIiwidmFsaWRMZW4iLCJwbGFjZUhvbGRlcnNMZW4iLCJ0b0J5dGVBcnJheSIsIkFyciIsIl9ieXRlTGVuZ3RoIiwiY3VyQnl0ZSIsInJldkxvb2t1cCIsImZyb21CeXRlQXJyYXkiLCJ1aW50OCIsImV4dHJhQnl0ZXMiLCJwYXJ0cyIsIm1heENodW5rTGVuZ3RoIiwibGVuMiIsImVuY29kZUNodW5rIiwibG9va3VwIiwiZ2xvYmFsT2JqZWN0IiwiQmlnTnVtYmVyIiwiaXNOdW1lcmljIiwibWF0aGNlaWwiLCJtYXRoZmxvb3IiLCJiaWdudW1iZXJFcnJvciIsInRvb01hbnlEaWdpdHMiLCJCQVNFIiwiTE9HX0JBU0UiLCJNQVhfU0FGRV9JTlRFR0VSIiwiUE9XU19URU4iLCJTUVJUX0JBU0UiLCJNQVgiLCJiaXRGbG9vciIsImNvZWZmVG9TdHJpbmciLCJ4YyIsInljIiwiaW50Q2hlY2siLCJ0b0V4cG9uZW50aWFsIiwiY2hhckF0IiwidG9GaXhlZFBvaW50IiwienMiLCJjb25maWdPYmplY3QiLCJjb252ZXJ0QmFzZSIsInBhcnNlTnVtZXJpYyIsInBvdzJfNTMiLCJyYW5kb201M2JpdEludCIsImJhc2VQcmVmaXgiLCJkb3RBZnRlciIsImRvdEJlZm9yZSIsImlzSW5maW5pdHlPck5hTiIsIndoaXRlc3BhY2VPclBsdXMiLCJQIiwiT05FIiwiREVDSU1BTF9QTEFDRVMiLCJST1VORElOR19NT0RFIiwiVE9fRVhQX05FRyIsIlRPX0VYUF9QT1MiLCJNSU5fRVhQIiwiTUFYX0VYUCIsIkNSWVBUTyIsIk1PRFVMT19NT0RFIiwiUE9XX1BSRUNJU0lPTiIsIkZPUk1BVCIsInByZWZpeCIsInNlY29uZGFyeUdyb3VwU2l6ZSIsImdyb3VwU2VwYXJhdG9yIiwiZGVjaW1hbFNlcGFyYXRvciIsImZyYWN0aW9uR3JvdXBTaXplIiwiZnJhY3Rpb25Hcm91cFNlcGFyYXRvciIsInN1ZmZpeCIsIkFMUEhBQkVUIiwidiIsImFscGhhYmV0IiwiY2FzZUNoYW5nZWQiLCJpc051bSIsIl9pc0JpZ051bWJlciIsIkRFQlVHIiwidG9Mb3dlckNhc2UiLCJmb3JtYXQiLCJybSIsImMwIiwibmUiLCJtYXhPck1pbiIsIm5vcm1hbGlzZSIsInNkIiwibmkiLCJyZCIsInBvd3MxMCIsIlJPVU5EX1VQIiwiUk9VTkRfRE9XTiIsIlJPVU5EX0NFSUwiLCJST1VORF9GTE9PUiIsIlJPVU5EX0hBTEZfVVAiLCJST1VORF9IQUxGX0RPV04iLCJST1VORF9IQUxGX0VWRU4iLCJST1VORF9IQUxGX0NFSUwiLCJST1VORF9IQUxGX0ZMT09SIiwiRVVDTElEIiwiY29uZmlnIiwiY3J5cHRvIiwiZ2V0UmFuZG9tVmFsdWVzIiwicmFuZG9tQnl0ZXMiLCJFWFBPTkVOVElBTF9BVCIsIlJBTkdFIiwiaXNCaWdOdW1iZXIiLCJtYXhpbXVtIiwibWluaW11bSIsInJhbmRvbSIsImRwIiwicmFuZCIsIlVpbnQzMkFycmF5Iiwic3VtIiwicGx1cyIsImRlY2ltYWwiLCJ0b0Jhc2VPdXQiLCJiYXNlSW4iLCJiYXNlT3V0IiwiYXJyTCIsImNhbGxlcklzVG9TdHJpbmciLCJtdWx0aXBseSIsInRlbXAiLCJ4bG8iLCJ4aGkiLCJrbG8iLCJraGkiLCJhTCIsImJMIiwic3VidHJhY3QiLCJtb3JlIiwicHJvZCIsInByb2RMIiwicWMiLCJyZW0iLCJyZW1MIiwicmVtMCIsInhpIiwieEwiLCJ5YzAiLCJ5TCIsInl6IiwiTmFOIiwicDEiLCJwMiIsImFic29sdXRlVmFsdWUiLCJjb21wYXJlZFRvIiwiZGVjaW1hbFBsYWNlcyIsImRpdmlkZWRCeSIsImRpdmlkZWRUb0ludGVnZXJCeSIsImlkaXYiLCJleHBvbmVudGlhdGVkQnkiLCJpc01vZEV4cCIsIm5Jc0JpZyIsIm5Jc05lZyIsIm5Jc09kZCIsImlzSW50ZWdlciIsInRpbWVzIiwiaW50ZWdlclZhbHVlIiwiaXNFcXVhbFRvIiwiaXNGaW5pdGUiLCJpc0dyZWF0ZXJUaGFuIiwiaXNHcmVhdGVyVGhhbk9yRXF1YWxUbyIsImlzTGVzc1RoYW4iLCJpc0xlc3NUaGFuT3JFcXVhbFRvIiwiaXNOZWdhdGl2ZSIsImlzUG9zaXRpdmUiLCJtaW51cyIsInhMVHkiLCJ4ZSIsInllIiwibW9kdWxvIiwibXVsdGlwbGllZEJ5IiwieGNMIiwieWNMIiwieWxvIiwieWhpIiwiemMiLCJzcXJ0QmFzZSIsIm5lZ2F0ZWQiLCJwcmVjaXNpb24iLCJzaGlmdGVkQnkiLCJzcXVhcmVSb290IiwicmVwIiwidG9GaXhlZCIsInRvRm9ybWF0IiwiZzEiLCJnMiIsImludFBhcnQiLCJmcmFjdGlvblBhcnQiLCJpbnREaWdpdHMiLCJ0b0ZyYWN0aW9uIiwibWQiLCJkMCIsImQxIiwiZDIiLCJleHAiLCJuMCIsIm4xIiwidG9QcmVjaXNpb24iLCJtb3ZlIiwic3JjIiwiX21vdmUiLCJmb3IiLCJtb2RybiIsImFsbG9jVW5zYWZlIiwiYWxsb2NhdGUiLCJfdG9BcnJheUxpa2VMRSIsIl90b0FycmF5TGlrZUJFIiwiaXNOZWdOdW0iLCJSYW5kIiwiZ2VuZXJhdGUiLCJfcmFuZCIsImdldEJ5dGVzIiwiZ2V0Qnl0ZSIsIm1zQ3J5cHRvIiwiYXNVSW50MzJBcnJheSIsInJlYWRVSW50MzJCRSIsInNjcnViVmVjIiwiY3J5cHRCbG9jayIsIk0iLCJrZXlTY2hlZHVsZSIsIlNVQl9NSVgiLCJTQk9YIiwiblJvdW5kcyIsInQwIiwidDEiLCJ0MiIsInQzIiwiU1VCX01JWDAiLCJTVUJfTUlYMSIsIlNVQl9NSVgyIiwiU1VCX01JWDMiLCJzMCIsInMxIiwiczIiLCJzMyIsImtzUm93IiwiUkNPTiIsIkciLCJJTlZfU0JPWCIsIklOVl9TVUJfTUlYIiwic3giLCJ4NCIsIng4IiwiQUVTIiwiX3Jlc2V0IiwiYmxvY2tTaXplIiwia2V5U2l6ZSIsImtleVdvcmRzIiwia3NSb3dzIiwiaW52S2V5U2NoZWR1bGUiLCJpayIsImtzUiIsInR0IiwiX25Sb3VuZHMiLCJfa2V5U2NoZWR1bGUiLCJfaW52S2V5U2NoZWR1bGUiLCJlbmNyeXB0QmxvY2tSYXciLCJlbmNyeXB0QmxvY2siLCJ3cml0ZVVJbnQzMkJFIiwiZGVjcnlwdEJsb2NrIiwibTEiLCJzY3J1YiIsImFlcyIsIlRyYW5zZm9ybSIsIkdIQVNIIiwiaW5jcjMyIiwiU3RyZWFtQ2lwaGVyIiwiaXYiLCJkZWNyeXB0IiwiX2NpcGhlciIsImNrIiwiX2doYXNoIiwiX2ZpbklEIiwiZ2hhc2giLCJ0b1BhZCIsInVwZGF0ZSIsIml2Qml0cyIsInRhaWwiLCJ3cml0ZVVJbnRCRSIsImNhbGNJdiIsIl9wcmV2IiwiX3NlY0NhY2hlIiwiX2RlY3J5cHQiLCJfYWxlbiIsIl9tb2RlIiwiX2F1dGhUYWciLCJfY2FsbGVkIiwiX3VwZGF0ZSIsImNodW5rIiwicnVtcCIsImVuY3J5cHQiLCJfZmluYWwiLCJmaW5hbCIsInhvclRlc3QiLCJnZXRBdXRoVGFnIiwic2V0QXV0aFRhZyIsInNldEFBRCIsImNpcGhlcnMiLCJkZWNpcGhlcnMiLCJtb2RlcyIsImNyZWF0ZUNpcGhlciIsIkNpcGhlciIsImNyZWF0ZUNpcGhlcml2IiwiQ2lwaGVyaXYiLCJjcmVhdGVEZWNpcGhlciIsIkRlY2lwaGVyIiwiY3JlYXRlRGVjaXBoZXJpdiIsIkRlY2lwaGVyaXYiLCJsaXN0Q2lwaGVycyIsImdldENpcGhlcnMiLCJBdXRoQ2lwaGVyIiwiTU9ERVMiLCJlYnRrIiwiU3BsaXR0ZXIiLCJfbGFzdCIsIl9hdXRvcGFkZGluZyIsImNhY2hlIiwic3VpdGUiLCJwYXNzd29yZCIsImZsdXNoIiwibGFzdCIsInBhZGRlZCIsInVucGFkIiwic2V0QXV0b1BhZGRpbmciLCJzZXRUbyIsImF1dG9QYWRkaW5nIiwiUEFERElORyIsImVxdWFscyIsInBhZEJ1ZmYiLCJ3cml0ZVVJbnQ4IiwiWkVST0VTIiwiZnJvbUFycmF5IiwiYmxvY2siLCJfbXVsdGlwbHkiLCJsc2JWaSIsIlZpIiwiWmkiLCJhYmwiLCJibCIsInBhZCIsImVuY3J5cHRTdGFydCIsImVuY3J5cHRCeXRlIiwiYnl0ZVBhcmFtIiwic2hpZnRJbiIsImdldEJsb2NrIiwiY2h1bmtOdW0iLCJtb2RlTW9kdWxlcyIsIkVDQiIsIkNCQyIsIkNGQiIsIkNGQjgiLCJDRkIxIiwiT0ZCIiwiQ1RSIiwiR0NNIiwiREVTIiwiYWVzTW9kZXMiLCJkZXNNb2RlcyIsImtleUxlbiIsIml2TGVuIiwiQ2lwaGVyQmFzZSIsImRlcyIsImluc3RhbnRpYXRlIiwiRURFIiwib3B0cyIsIm1vZGVOYW1lIiwiX2RlcyIsImRlczMiLCJnZXRyIiwicHJpdiIsIm1vZHVsdXMiLCJwcmltZTEiLCJwcmltZTIiLCJjcnQiLCJibGluZHMiLCJibGluZGVyIiwicHVibGljRXhwb25lbnQiLCJ1bmJsaW5kZXIiLCJibGluZCIsImJsaW5kZWQiLCJjMSIsImMyIiwicWludiIsImNvZWZmaWNpZW50IiwiZXhwb25lbnQxIiwibTIiLCJleHBvbmVudDIiLCJjcmVhdGVIYXNoIiwic3RyZWFtIiwidmVyaWZ5IiwiYWxnb3JpdGhtcyIsIlNpZ24iLCJhbGdvcml0aG0iLCJXcml0YWJsZSIsIl9oYXNoVHlwZSIsImhhc2giLCJfaGFzaCIsIl90YWciLCJfc2lnblR5cGUiLCJWZXJpZnkiLCJjcmVhdGVTaWduIiwiY3JlYXRlVmVyaWZ5IiwiX3dyaXRlIiwiZGlnZXN0Iiwic2lnIiwiY3JlYXRlSG1hYyIsIkVDIiwicGFyc2VLZXlzIiwiY3VydmVzIiwiZ2V0S2V5IiwiYWxnbyIsImhsZW4iLCJoYml0cyIsImJpdHMyaW50IiwiYml0czJvY3RldHMiLCJmaWxsIiwib2JpdHMiLCJtYWtlS2V5Iiwia3YiLCJtYWtlUiIsImhhc2hUeXBlIiwic2lnblR5cGUiLCJjdXJ2ZSIsImN1cnZlSWQiLCJrZXlGcm9tUHJpdmF0ZSIsInByaXZhdGVLZXkiLCJ0b0RFUiIsImVjU2lnbiIsInBhcmFtcyIsInByaXZfa2V5IiwiSCIsImRzYVNpZ24iLCJjaGVja1ZhbHVlIiwicHViIiwicHVia2V5Iiwic3ViamVjdFByaXZhdGVLZXkiLCJlY1ZlcmlmeSIsInB1Yl9rZXkiLCJ1bnBhY2tlZCIsInNpZ25hdHVyZSIsIm1vbnRwIiwiZHNhVmVyaWZ5IiwicGFkTnVtIiwiWnN0cmVhbSIsInpsaWJfZGVmbGF0ZSIsInpsaWJfaW5mbGF0ZSIsIlpsaWIiLCJERUZMQVRFIiwiVU5aSVAiLCJkaWN0aW9uYXJ5IiwiaW5pdF9kb25lIiwibGV2ZWwiLCJtZW1MZXZlbCIsInN0cmF0ZWd5Iiwid2luZG93Qml0cyIsIndyaXRlX2luX3Byb2dyZXNzIiwicGVuZGluZ19jbG9zZSIsImd6aXBfaWRfYnl0ZXNfcmVhZCIsIk5PTkUiLCJJTkZMQVRFIiwiR1pJUCIsIkdVTlpJUCIsIkRFRkxBVEVSQVciLCJJTkZMQVRFUkFXIiwiY2xvc2UiLCJkZWZsYXRlRW5kIiwic3RybSIsImluZmxhdGVFbmQiLCJpbl9vZmYiLCJpbl9sZW4iLCJvdXRfb2ZmIiwib3V0X2xlbiIsIndyaXRlU3luYyIsImFzeW5jIiwiWl9OT19GTFVTSCIsIlpfUEFSVElBTF9GTFVTSCIsIlpfU1lOQ19GTFVTSCIsIlpfRlVMTF9GTFVTSCIsIlpfRklOSVNIIiwiWl9CTE9DSyIsImF2YWlsX2luIiwibmV4dF9pbiIsImF2YWlsX291dCIsIm5leHRfb3V0IiwiX3Byb2Nlc3MiLCJfY2hlY2tFcnJvciIsIl9hZnRlclN5bmMiLCJuZXh0VGljayIsIl9hZnRlciIsIm5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUiLCJkZWZsYXRlIiwiaW5mbGF0ZSIsIlpfTkVFRF9ESUNUIiwiaW5mbGF0ZVNldERpY3Rpb25hcnkiLCJaX09LIiwiWl9EQVRBX0VSUk9SIiwiWl9TVFJFQU1fRU5EIiwicmVzZXQiLCJaX0JVRl9FUlJPUiIsIl9lcnJvciIsImNhbGxiYWNrIiwib25lcnJvciIsImluaXQiLCJaX0ZJTFRFUkVEIiwiWl9IVUZGTUFOX09OTFkiLCJaX1JMRSIsIlpfRklYRUQiLCJaX0RFRkFVTFRfU1RSQVRFR1kiLCJfc2V0RGljdGlvbmFyeSIsImRlZmxhdGVJbml0MiIsIlpfREVGTEFURUQiLCJpbmZsYXRlSW5pdDIiLCJkZWZsYXRlU2V0RGljdGlvbmFyeSIsImRlZmxhdGVSZXNldCIsImluZmxhdGVSZXNldCIsImJpbmRpbmciLCJrTWF4TGVuZ3RoIiwia1JhbmdlRXJyb3JNZXNzYWdlIiwiWl9NSU5fV0lORE9XQklUUyIsIlpfTUFYX1dJTkRPV0JJVFMiLCJaX0RFRkFVTFRfV0lORE9XQklUUyIsIlpfTUlOX0NIVU5LIiwiWl9NQVhfQ0hVTksiLCJaX0RFRkFVTFRfQ0hVTksiLCJaX01JTl9NRU1MRVZFTCIsIlpfTUFYX01FTUxFVkVMIiwiWl9ERUZBVUxUX01FTUxFVkVMIiwiWl9NSU5fTEVWRUwiLCJaX01BWF9MRVZFTCIsIlpfREVGQVVMVF9MRVZFTCIsIlpfREVGQVVMVF9DT01QUkVTU0lPTiIsImJrZXlzIiwiYmsiLCJia2V5IiwiWl9FUlJOTyIsIlpfU1RSRUFNX0VSUk9SIiwiWl9NRU1fRVJST1IiLCJaX1ZFUlNJT05fRVJST1IiLCJja2V5cyIsImNrZXkiLCJ6bGliQnVmZmVyIiwiZW5naW5lIiwiYnVmZmVycyIsIm5yZWFkIiwiZmxvdyIsInJlYWQiLCJvbmNlIiwib25FbmQiLCJvbiIsInJlbW92ZUxpc3RlbmVyIiwiemxpYkJ1ZmZlclN5bmMiLCJmbHVzaEZsYWciLCJfZmluaXNoRmx1c2hGbGFnIiwiX3Byb2Nlc3NDaHVuayIsIkRlZmxhdGUiLCJJbmZsYXRlIiwiR3ppcCIsIkd1bnppcCIsIkRlZmxhdGVSYXciLCJJbmZsYXRlUmF3IiwiVW56aXAiLCJpc1ZhbGlkRmx1c2hGbGFnIiwiZmxhZyIsIl9vcHRzIiwiX2NodW5rU2l6ZSIsImNodW5rU2l6ZSIsImZpbmlzaEZsdXNoIiwiX2ZsdXNoRmxhZyIsIl9oYW5kbGUiLCJfaGFkRXJyb3IiLCJlcnJubyIsIl9jbG9zZSIsImVtaXQiLCJfYnVmZmVyIiwiX29mZnNldCIsIl9sZXZlbCIsIl9zdHJhdGVneSIsImVtaXRDbG9zZU5UIiwiZnJlZXplIiwiY3JlYXRlRGVmbGF0ZSIsImNyZWF0ZUluZmxhdGUiLCJjcmVhdGVEZWZsYXRlUmF3IiwiY3JlYXRlSW5mbGF0ZVJhdyIsImNyZWF0ZUd6aXAiLCJjcmVhdGVHdW56aXAiLCJjcmVhdGVVbnppcCIsImRlZmxhdGVTeW5jIiwiZ3ppcCIsImd6aXBTeW5jIiwiZGVmbGF0ZVJhdyIsImRlZmxhdGVSYXdTeW5jIiwidW56aXAiLCJ1bnppcFN5bmMiLCJpbmZsYXRlU3luYyIsImd1bnppcCIsImd1bnppcFN5bmMiLCJpbmZsYXRlUmF3IiwiaW5mbGF0ZVJhd1N5bmMiLCJfZmx1c2giLCJfdHJhbnNmb3JtIiwia2luZCIsIl90aGlzMiIsIl93cml0YWJsZVN0YXRlIiwiZW5kZWQiLCJlbmRpbmciLCJuZWVkRHJhaW4iLCJlbmNvZGluZyIsImNiIiwiYXZhaWxJbkJlZm9yZSIsImF2YWlsT3V0QmVmb3JlIiwiaW5PZmYiLCJlciIsInJlcSIsImF2YWlsSW5BZnRlciIsImF2YWlsT3V0QWZ0ZXIiLCJoYXZlIiwibmV3UmVxIiwiaWVlZTc1NCIsImN1c3RvbUluc3BlY3RTeW1ib2wiLCJTbG93QnVmZmVyIiwiSU5TUEVDVF9NQVhfQllURVMiLCJLX01BWF9MRU5HVEgiLCJjcmVhdGVCdWZmZXIiLCJlbmNvZGluZ09yT2Zmc2V0IiwiaXNFbmNvZGluZyIsImZyb21TdHJpbmciLCJBcnJheUJ1ZmZlciIsImlzVmlldyIsImFycmF5VmlldyIsImlzSW5zdGFuY2UiLCJmcm9tQXJyYXlCdWZmZXIiLCJmcm9tQXJyYXlMaWtlIiwiZnJvbUFycmF5VmlldyIsIlNoYXJlZEFycmF5QnVmZmVyIiwiY2hlY2tlZCIsImZyb21PYmplY3QiLCJ0b1ByaW1pdGl2ZSIsImFzc2VydFNpemUiLCJtdXN0TWF0Y2giLCJsb3dlcmVkQ2FzZSIsInV0ZjhUb0J5dGVzIiwiYmFzZTY0VG9CeXRlcyIsInNsb3dUb1N0cmluZyIsImhleFNsaWNlIiwidXRmOFNsaWNlIiwiYXNjaWlTbGljZSIsImxhdGluMVNsaWNlIiwiYmFzZTY0U2xpY2UiLCJ1dGYxNmxlU2xpY2UiLCJzd2FwIiwiYmlkaXJlY3Rpb25hbEluZGV4T2YiLCJkaXIiLCJhcnJheUluZGV4T2YiLCJsYXN0SW5kZXhPZiIsImluZGV4U2l6ZSIsImFyckxlbmd0aCIsInZhbExlbmd0aCIsImZvdW5kSW5kZXgiLCJmb3VuZCIsImhleFdyaXRlIiwicmVtYWluaW5nIiwic3RyTGVuIiwicGFyc2VkIiwicGFyc2VJbnQiLCJ1dGY4V3JpdGUiLCJibGl0QnVmZmVyIiwiYXNjaWlXcml0ZSIsImJ5dGVBcnJheSIsImFzY2lpVG9CeXRlcyIsImJhc2U2NFdyaXRlIiwidWNzMldyaXRlIiwidW5pdHMiLCJ1dGYxNmxlVG9CeXRlcyIsImZpcnN0Qnl0ZSIsImNvZGVQb2ludCIsImJ5dGVzUGVyU2VxdWVuY2UiLCJzZWNvbmRCeXRlIiwidGhpcmRCeXRlIiwiZm91cnRoQnl0ZSIsInRlbXBDb2RlUG9pbnQiLCJjb2RlUG9pbnRzIiwiTUFYX0FSR1VNRU5UU19MRU5HVEgiLCJkZWNvZGVDb2RlUG9pbnRzQXJyYXkiLCJUWVBFRF9BUlJBWV9TVVBQT1JUIiwicHJvdG8iLCJmb28iLCJ0eXBlZEFycmF5U3VwcG9ydCIsInBvb2xTaXplIiwiYWxsb2NVbnNhZmVTbG93IiwiX2lzQnVmZmVyIiwibGlzdCIsInN3YXAxNiIsInN3YXAzMiIsInN3YXA2NCIsInRvTG9jYWxlU3RyaW5nIiwidHJpbSIsInRoaXNTdGFydCIsInRoaXNFbmQiLCJ0aGlzQ29weSIsInRhcmdldENvcHkiLCJpbmNsdWRlcyIsImhleFNsaWNlTG9va3VwVGFibGUiLCJjaGVja09mZnNldCIsImV4dCIsImNoZWNrSW50Iiwid3J0QmlnVUludDY0TEUiLCJjaGVja0ludEJJIiwid3J0QmlnVUludDY0QkUiLCJjaGVja0lFRUU3NTQiLCJ3cml0ZUZsb2F0Iiwibm9Bc3NlcnQiLCJ3cml0ZURvdWJsZSIsIm5ld0J1ZiIsInN1YmFycmF5IiwicmVhZFVpbnRMRSIsInJlYWRVSW50TEUiLCJyZWFkVWludEJFIiwicmVhZFVJbnRCRSIsInJlYWRVaW50OCIsInJlYWRVaW50MTZMRSIsInJlYWRVSW50MTZMRSIsInJlYWRVaW50MTZCRSIsInJlYWRVaW50MzJMRSIsInJlYWRVSW50MzJMRSIsInJlYWRVaW50MzJCRSIsInJlYWRCaWdVSW50NjRMRSIsImRlZmluZUJpZ0ludE1ldGhvZCIsInZhbGlkYXRlTnVtYmVyIiwiYm91bmRzRXJyb3IiLCJyZWFkQmlnVUludDY0QkUiLCJyZWFkSW50TEUiLCJyZWFkSW50QkUiLCJyZWFkSW50OCIsInJlYWRJbnQxNkxFIiwicmVhZEludDE2QkUiLCJyZWFkSW50MzJMRSIsInJlYWRJbnQzMkJFIiwicmVhZEJpZ0ludDY0TEUiLCJyZWFkQmlnSW50NjRCRSIsInJlYWRGbG9hdExFIiwicmVhZEZsb2F0QkUiLCJyZWFkRG91YmxlTEUiLCJyZWFkRG91YmxlQkUiLCJ3cml0ZVVpbnRMRSIsIndyaXRlVUludExFIiwid3JpdGVVaW50QkUiLCJ3cml0ZVVpbnQ4Iiwid3JpdGVVaW50MTZMRSIsIndyaXRlVUludDE2TEUiLCJ3cml0ZVVpbnQxNkJFIiwid3JpdGVVaW50MzJMRSIsIndyaXRlVUludDMyTEUiLCJ3cml0ZVVpbnQzMkJFIiwid3JpdGVCaWdVSW50NjRMRSIsIndyaXRlQmlnVUludDY0QkUiLCJ3cml0ZUludExFIiwid3JpdGVJbnRCRSIsIndyaXRlSW50OCIsIndyaXRlSW50MTZMRSIsIndyaXRlSW50MTZCRSIsIndyaXRlSW50MzJMRSIsIndyaXRlSW50MzJCRSIsIndyaXRlQmlnSW50NjRMRSIsIndyaXRlQmlnSW50NjRCRSIsIndyaXRlRmxvYXRMRSIsIndyaXRlRmxvYXRCRSIsIndyaXRlRG91YmxlTEUiLCJ3cml0ZURvdWJsZUJFIiwidGFyZ2V0U3RhcnQiLCJjb3B5V2l0aGluIiwiRSIsInN1cGVyIiwiYWRkTnVtZXJpY2FsU2VwYXJhdG9yIiwicmFuZ2UiLCJFUlJfT1VUX09GX1JBTkdFIiwiY2hlY2tCb3VuZHMiLCJFUlJfQlVGRkVSX09VVF9PRl9CT1VORFMiLCJyZWNlaXZlZCIsIklOVkFMSURfQkFTRTY0X1JFIiwibGVhZFN1cnJvZ2F0ZSIsImJhc2U2NGNsZWFuIiwiZHN0IiwidGFibGUiLCJpMTYiLCJCdWZmZXJCaWdJbnROb3REZWZpbmVkIiwiR2V0SW50cmluc2ljIiwiY2FsbEJpbmQiLCIkaW5kZXhPZiIsImFsbG93TWlzc2luZyIsImludHJpbnNpYyIsIiRhcHBseSIsIiRjYWxsIiwiJHJlZmxlY3RBcHBseSIsIiRnT1BEIiwiJGRlZmluZVByb3BlcnR5IiwiJG1heCIsIm9yaWdpbmFsRnVuY3Rpb24iLCJmdW5jIiwiZGVzYyIsImFwcGx5QmluZCIsIksiLCJYIiwiWSIsIlIiLCJJIiwiTyIsIlQiLCJWIiwiUyIsIkoiLCJMIiwiVSIsIiQiLCJaIiwiVyIsIkYiLCJRIiwiQ29tbWVudGVkIiwiRGlhZ25vc2UiLCJEZWNvZGVyIiwiRW5jb2RlciIsIlNpbXBsZSIsIlRhZ2dlZCIsIlVJIiwiY29tbWVudCIsImZJIiwiZGVjb2RlQWxsIiwiaDgiLCJkZWNvZGVGaXJzdCIsImNjIiwiZGVjb2RlQWxsU3luYyIsIiR1IiwiZGVjb2RlRmlyc3RTeW5jIiwiZGlhZ25vc2UiLCJjdiIsIk4yIiwiZW5jb2RlQ2Fub25pY2FsIiwiVEciLCJlbmNvZGVPbmUiLCJXUiIsImVuY29kZUFzeW5jIiwiSngiLCJ3dyIsInZjIiwiTVQiLCJOVU1CWVRFUyIsIlNZTVMiLCJtYXhfZGVwdGgiLCJub19zdW1tYXJ5IiwiYmlnaW50IiwicHJlZmVyV2ViIiwicmVhZGFibGVPYmplY3RNb2RlIiwid3JpdGFibGVPYmplY3RNb2RlIiwiYWxsIiwiX3RhZ18yNCIsInBhcnNlciIsIl9vbl92YWx1ZSIsIl9vbl9zdGFydCIsIl9vbl9zdGFydF9zdHJpbmciLCJfb25fc3RvcCIsIl9vbl9tb3JlIiwiX29uX2Vycm9yIiwiX29uX2RhdGEiLCJicyIsIl9vbl9yZWFkIiwicGlwZSIsImd1ZXNzRW5jb2RpbmciLCJQT1NfSU5UIiwiTkVHX0lOVCIsIkFSUkFZIiwiTUFQIiwiQllURV9TVFJJTkciLCJVVEY4X1NUUklORyIsIlNJTVBMRV9GTE9BVCIsIlRBRyIsIlNUUkVBTSIsIkJSRUFLIiwiY2JvclZhbHVlVG9TdHJpbmciLCJUV08iLCJGT1VSIiwiRUlHSFQiLCJEQVRFX1NUUklORyIsIkRBVEVfRVBPQ0giLCJQT1NfQklHSU5UIiwiTkVHX0JJR0lOVCIsIkRFQ0lNQUxfRlJBQyIsIkJJR0ZMT0FUIiwiQkFTRTY0VVJMX0VYUEVDVEVEIiwiQkFTRTY0X0VYUEVDVEVEIiwiQkFTRTE2X0VYUEVDVEVEIiwiQ0JPUiIsIlVSSSIsIkJBU0U2NFVSTCIsIkJBU0U2NCIsIlJFR0VYUCIsIk1JTUUiLCJTRVQiLCJaRVJPIiwiSU5ERUZJTklURSIsIlNJTVBMRSIsIkZBTFNFIiwiVFJVRSIsIk5VTEwiLCJVTkRFRklORUQiLCJQQVJFTlQiLCJTSElGVDMyIiwiQkkiLCJNSU5VU19PTkUiLCJORUdfTUFYIiwiTUFYSU5UMzIiLCJNQVhJTlQ2NCIsIk1BWElOVCIsImJ1ZmZlclRvQmlnSW50IiwiYnl0ZSIsInJlcXVpcmVkIiwiZXh0ZW5kZWRSZXN1bHRzIiwiZGVmYXVsdEVuY29kaW5nIiwicnVubmluZyIsIl9vblJlYWQiLCJ2YWx1ZUJ5dGVzIiwiX3BhcnNlIiwibnVsbGNoZWNrIiwiX19mcmVzaCIsInBhcnNlQ0JPUmludCIsInV0ZjgiLCJwYXJzZUNCT1JmbG9hdCIsImNvbnZlcnQiLCJOT1RfRk9VTkQiLCJzZXBhcmF0b3IiLCJzdHJlYW1fZXJyb3JzIiwiZmxvYXRfYnl0ZXMiLCJfZm9yZSIsImNhbm9uaWNhbCIsImVuY29kZVVuZGVmaW5lZCIsImRpc2FsbG93VW5kZWZpbmVkS2V5cyIsImRhdGVUeXBlIiwiY29sbGFwc2VCaWdJbnRlZ2VycyIsImRldGVjdExvb3BzIiwib21pdFVuZGVmaW5lZFByb3BlcnRpZXMiLCJnZW5UeXBlcyIsIldlYWtTZXQiLCJzZW1hbnRpY1R5cGVzIiwiX3B1c2hBcnJheSIsIl9wdXNoRGF0ZSIsIl9wdXNoQnVmZmVyIiwiX3B1c2hNYXAiLCJOb0ZpbHRlciIsIl9wdXNoTm9GaWx0ZXIiLCJfcHVzaFJlZ2V4cCIsIl9wdXNoU2V0IiwiX3B1c2hBcnJheUJ1ZmZlciIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiX3B1c2hUeXBlZEFycmF5IiwiVWludDE2QXJyYXkiLCJJbnQ4QXJyYXkiLCJJbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsIlVSTCIsIl9wdXNoVVJMIiwiX3B1c2hCb3hlZCIsIl9wdXNoQmlnTnVtYmVyIiwiQmlnVWludDY0QXJyYXkiLCJCaWdJbnQ2NEFycmF5IiwiYWRkU2VtYW50aWNUeXBlIiwiZW50cmllcyIsInB1c2hBbnkiLCJfcHVzaFVJbnQ4IiwiX3B1c2hVSW50MTZCRSIsIl9wdXNoVUludDMyQkUiLCJfcHVzaEZsb2F0QkUiLCJfcHVzaERvdWJsZUJFIiwiX3B1c2hOYU4iLCJfcHVzaEluZmluaXR5IiwiX3B1c2hGbG9hdCIsIndyaXRlSGFsZiIsImZyb3VuZCIsIl9wdXNoSW50IiwiX3B1c2hJbnROdW0iLCJfcHVzaE51bWJlciIsIl9wdXNoU3RyaW5nIiwiX3B1c2hCb29sZWFuIiwiX3B1c2hVbmRlZmluZWQiLCJidWZmZXJpc2hUb0J1ZmZlciIsIl9wdXNoTnVsbCIsImluZGVmaW5pdGUiLCJfcHVzaFRhZyIsInRvSVNPU3RyaW5nIiwiX3B1c2hBbnkiLCJfcHVzaEJpZ2ludCIsIl9wdXNoSlNCaWdpbnQiLCJoaWdoV2F0ZXJNYXJrIiwicmVhZGFibGVIaWdoV2F0ZXJNYXJrIiwic29ydCIsIkJZVEVTX1BFUl9FTEVNRU5UIiwic3RhcnRzV2l0aCIsImlzQmlnRW5kaWFuIiwicmVtb3ZlTG9vcERldGVjdG9ycyIsIl9wdXNoT2JqZWN0Iiwic2tpcFR5cGVzIiwiZW5jb2RlQ0JPUiIsIl9lbmNvZGVBbGwiLCJpc0J1ZmZlcmlzaCIsIl90b1R5cGVkQXJyYXkiLCJEYXRhVmlldyIsImdldFVpbnQxNiIsInNldFVpbnQxNiIsImdldFVpbnQzMiIsInNldFVpbnQzMiIsImdldEJpZ1VpbnQ2NCIsInNldEJpZ1VpbnQ2NCIsImJ1ZmZlclRvQmlnbnVtYmVyIiwiYmFzZTY0dXJsIiwiSU5URVJOQUxfSlNPTiIsImZhdGFsIiwiaWdub3JlQk9NIiwiY2hlY2tzVVRGOCIsInBhcnNlSGFsZiIsImhleCIsImJpbiIsImFycmF5RXF1YWwiLCJldmVyeSIsImRlc2NyaXB0aW9uIiwiUmVhZGFibGUiLCJUZXh0RGVjb2RlciIsInV0ZkxhYmVsIiwiY29kZVBvaW50QXQiLCJpbnB1dEVuY29kaW5nIiwid2F0Y2hQaXBlIiwicmVhZEVycm9yIiwiX3JlYWRhYmxlU3RhdGUiLCJvYmplY3RNb2RlIiwicmVkdWNlIiwiX2J1ZkFycmF5IiwiaGVhZCIsInByb21pc2UiLCJzdHlsaXplIiwid3JpdGVCaWdJbnQiLCJyZWFkVUJpZ0ludCIsInJlYWRCaWdJbnQiLCJfX3Jlc3RhcnQiLCJfX25lZWRlZCIsIl9fcGFyc2VyIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsIkV2ZW50RW1pdHRlciIsIl9ldmVudHMiLCJfZXZlbnRzQ291bnQiLCJfbWF4TGlzdGVuZXJzIiwiZGVmYXVsdE1heExpc3RlbmVycyIsIm5ld0xpc3RlbmVyIiwibGlzdGVuZXIiLCJlbWl0dGVyIiwiZmlyZWQiLCJ3cmFwRm4iLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNldE1heExpc3RlbmVycyIsImdldE1heExpc3RlbmVycyIsImNvbnRleHQiLCJhZGRMaXN0ZW5lciIsInByZXBlbmRMaXN0ZW5lciIsInByZXBlbmRPbmNlTGlzdGVuZXIiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJsaXN0ZW5lcnMiLCJyYXdMaXN0ZW5lcnMiLCJsaXN0ZW5lckNvdW50IiwiZXZlbnROYW1lcyIsIkxOMiIsImludGVybmFsQmluZGluZyIsIkFycmF5SXNBcnJheSIsIkFycmF5UHJvdG90eXBlRmlsdGVyIiwiQXJyYXlQcm90b3R5cGVGb3JFYWNoIiwiQXJyYXlQcm90b3R5cGVQdXNoIiwiQXJyYXlQcm90b3R5cGVQdXNoQXBwbHkiLCJBcnJheVByb3RvdHlwZVNvcnQiLCJBcnJheVByb3RvdHlwZVVuc2hpZnQiLCJCaWdJbnRQcm90b3R5cGVWYWx1ZU9mIiwiQm9vbGVhblByb3RvdHlwZVZhbHVlT2YiLCJEYXRlUHJvdG90eXBlR2V0VGltZSIsIkRhdGVQcm90b3R5cGVUb0lTT1N0cmluZyIsIkRhdGVQcm90b3R5cGVUb1N0cmluZyIsIkVycm9yUHJvdG90eXBlVG9TdHJpbmciLCJGdW5jdGlvblByb3RvdHlwZUNhbGwiLCJGdW5jdGlvblByb3RvdHlwZVRvU3RyaW5nIiwiSlNPTlN0cmluZ2lmeSIsIk1hcFByb3RvdHlwZUdldFNpemUiLCJNYXBQcm90b3R5cGVFbnRyaWVzIiwiTWF0aEZsb29yIiwiTWF0aE1heCIsIk1hdGhNaW4iLCJNYXRoUm91bmQiLCJNYXRoU3FydCIsIk51bWJlcklzTmFOIiwiTnVtYmVyUGFyc2VGbG9hdCIsIk51bWJlclBhcnNlSW50IiwiTnVtYmVyUHJvdG90eXBlVmFsdWVPZiIsIk9iamVjdEFzc2lnbiIsIk9iamVjdENyZWF0ZSIsIk9iamVjdERlZmluZVByb3BlcnR5IiwiT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyIsIk9iamVjdEdldE93blByb3BlcnR5U3ltYm9scyIsIk9iamVjdEdldFByb3RvdHlwZU9mIiwiT2JqZWN0SXMiLCJPYmplY3RLZXlzIiwiT2JqZWN0UHJvdG90eXBlSGFzT3duUHJvcGVydHkiLCJPYmplY3RQcm90b3R5cGVQcm9wZXJ0eUlzRW51bWVyYWJsZSIsIk9iamVjdFNlYWwiLCJPYmplY3RTZXRQcm90b3R5cGVPZiIsIlJlZmxlY3RPd25LZXlzIiwiUmVnRXhwUHJvdG90eXBlVGVzdCIsIlJlZ0V4cFByb3RvdHlwZVRvU3RyaW5nIiwiU2FmZVN0cmluZ0l0ZXJhdG9yIiwiU2FmZU1hcCIsIlNhZmVTZXQiLCJTZXRQcm90b3R5cGVHZXRTaXplIiwiZXQiLCJTZXRQcm90b3R5cGVWYWx1ZXMiLCJydCIsIm50IiwiU3RyaW5nUHJvdG90eXBlQ2hhckNvZGVBdCIsIml0IiwiU3RyaW5nUHJvdG90eXBlQ29kZVBvaW50QXQiLCJvdCIsIlN0cmluZ1Byb3RvdHlwZUluY2x1ZGVzIiwic3QiLCJTdHJpbmdQcm90b3R5cGVOb3JtYWxpemUiLCJhdCIsIlN0cmluZ1Byb3RvdHlwZVBhZEVuZCIsInV0IiwiU3RyaW5nUHJvdG90eXBlUGFkU3RhcnQiLCJTdHJpbmdQcm90b3R5cGVSZXBlYXQiLCJjdCIsIlN0cmluZ1Byb3RvdHlwZVJlcGxhY2UiLCJmdCIsIlN0cmluZ1Byb3RvdHlwZVNsaWNlIiwiaHQiLCJTdHJpbmdQcm90b3R5cGVTcGxpdCIsInB0IiwiU3RyaW5nUHJvdG90eXBlVG9Mb3dlckNhc2UiLCJkdCIsIlN0cmluZ1Byb3RvdHlwZVRyaW0iLCJ5dCIsIlN0cmluZ1Byb3RvdHlwZVZhbHVlT2YiLCJTeW1ib2xQcm90b3R5cGVUb1N0cmluZyIsImJ0IiwiU3ltYm9sUHJvdG90eXBlVmFsdWVPZiIsIm10IiwiU3ltYm9sSXRlcmF0b3IiLCJ3dCIsIlN5bWJvbFRvU3RyaW5nVGFnIiwiX3QiLCJUeXBlZEFycmF5UHJvdG90eXBlR2V0TGVuZ3RoIiwiRXQiLCJUeXBlZEFycmF5UHJvdG90eXBlR2V0U3ltYm9sVG9TdHJpbmdUYWciLCJ2dCIsIlN0IiwiQXQiLCJUdCIsImdldFByb21pc2VEZXRhaWxzIiwiSXQiLCJnZXRQcm94eURldGFpbHMiLCJCdCIsImtQZW5kaW5nIiwiT3QiLCJrUmVqZWN0ZWQiLCJ4dCIsInByZXZpZXdFbnRyaWVzIiwiUnQiLCJnZXRDb25zdHJ1Y3Rvck5hbWUiLCJOdCIsImdldEV4dGVybmFsVmFsdWUiLCJMdCIsInByb3BlcnR5RmlsdGVyIiwiQUxMX1BST1BFUlRJRVMiLCJQdCIsIk9OTFlfRU5VTUVSQUJMRSIsIk10IiwiVXQiLCJqdCIsImt0IiwiJHQiLCJyZW1vdmVDb2xvcnMiLCJGdCIsIkR0IiwiaXNTdGFja092ZXJmbG93RXJyb3IiLCJDdCIsImlzQXN5bmNGdW5jdGlvbiIsIkd0IiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsIld0IiwienQiLCJpc0FycmF5QnVmZmVyIiwiSHQiLCJpc0FyZ3VtZW50c09iamVjdCIsIll0IiwicXQiLCJpc0RhdGFWaWV3IiwiVnQiLCJpc0V4dGVybmFsIiwiS3QiLCJYdCIsImlzTWFwSXRlcmF0b3IiLCJKdCIsImlzTW9kdWxlTmFtZXNwYWNlT2JqZWN0IiwiWnQiLCJRdCIsInRlIiwiZWUiLCJpc1NldEl0ZXJhdG9yIiwiaXNXZWFrTWFwIiwiaXNXZWFrU2V0Iiwib2UiLCJzZSIsImlzVHlwZWRBcnJheSIsImFlIiwidWUiLCJsZSIsImNlIiwiZmUiLCJoZSIsIk5hdGl2ZU1vZHVsZSIsInBlIiwidmFsaWRhdGVPYmplY3QiLCJkZSIsImdlIiwiYmUiLCJtZSIsImNvbG9ycyIsIm1heFN0cmluZ0xlbmd0aCIsIndlIiwiRWUiLCJ2ZSIsIlNlIiwiQWUiLCJUZSIsIkllIiwiQmUiLCJPZSIsIlJlIiwiTmUiLCJMZSIsIlBlIiwiYnVkZ2V0IiwiaW5kZW50YXRpb25MdmwiLCJzZWVuIiwiY3VycmVudERlcHRoIiwiQ2UiLCJ1c2VyT3B0aW9ucyIsIkRlIiwiS2UiLCJNZSIsIlVlIiwiamUiLCJrZSIsImJvbGQiLCJkaW0iLCJpdGFsaWMiLCJ1bmRlcmxpbmUiLCJibGluayIsImludmVyc2UiLCJoaWRkZW4iLCJzdHJpa2V0aHJvdWdoIiwiZG91YmxldW5kZXJsaW5lIiwiYmxhY2siLCJ5ZWxsb3ciLCJtYWdlbnRhIiwiY3lhbiIsImJnQmxhY2siLCJiZ1JlZCIsImJnR3JlZW4iLCJiZ1llbGxvdyIsImJnQmx1ZSIsImJnTWFnZW50YSIsImJnQ3lhbiIsImJnV2hpdGUiLCJmcmFtZWQiLCJvdmVybGluZWQiLCJncmF5IiwicmVkQnJpZ2h0IiwiZ3JlZW5CcmlnaHQiLCJ5ZWxsb3dCcmlnaHQiLCJibHVlQnJpZ2h0IiwibWFnZW50YUJyaWdodCIsImN5YW5CcmlnaHQiLCJ3aGl0ZUJyaWdodCIsImJnR3JheSIsImJnUmVkQnJpZ2h0IiwiYmdHcmVlbkJyaWdodCIsImJnWWVsbG93QnJpZ2h0IiwiYmdCbHVlQnJpZ2h0IiwiYmdNYWdlbnRhQnJpZ2h0IiwiYmdDeWFuQnJpZ2h0IiwiYmdXaGl0ZUJyaWdodCIsInN0eWxlcyIsInNwZWNpYWwiLCJib29sZWFuIiwibnVsbCIsInN5bWJvbCIsInJlZ2V4cCIsIiRlIiwiRmUiLCJHZSIsIldlIiwiemUiLCJIZSIsImRyIiwiWWUiLCJxZSIsIlZlIiwiUWUiLCJnciIsImNpcmN1bGFyIiwibnIiLCJzciIsImlyIiwiWGUiLCJociIsImV4aXN0cyIsImV4ZWMiLCJyciIsIkplIiwicHIiLCJjciIsImxyIiwiZnIiLCJ0ciIsIlplIiwiYXIiLCJ1ciIsInlyIiwiYnIiLCJtciIsIndyIiwiX3IiLCJFciIsImhhc0ludGwiLCJ2ciIsImdldFN0cmluZ1dpZHRoIiwibm9ybWFsaXplIiwiZm9ybWF0V2l0aE9wdGlvbnMiLCJpbnNwZWN0RGVmYXVsdE9wdGlvbnMiLCJzdHJpcFZUQ29udHJvbENoYXJhY3RlcnMiLCJzdHlsaXplV2l0aENvbG9yIiwic3R5bGl6ZVdpdGhIVE1MIiwiQXJyYXlQcm90b3R5cGVJbmNsdWRlcyIsIkFycmF5UHJvdG90eXBlSW5kZXhPZiIsIkFycmF5UHJvdG90eXBlSm9pbiIsIkFycmF5UHJvdG90eXBlUG9wIiwiQXJyYXlQcm90b3R5cGVTcGxpY2UiLCJFcnJvckNhcHR1cmVTdGFja1RyYWNlIiwiUmVmbGVjdEFwcGx5IiwiU3RyaW5nUHJvdG90eXBlRW5kc1dpdGgiLCJoaWRlU3RhY2tGcmFtZXMiLCJnbG9iYWxUaGlzIiwiX19tYWdpY19fIiwiaXNGcm96ZW4iLCJ0b1N0cmluZ1RhZyIsIm51bGxhYmxlIiwiX2l0ZXJhdG9yIiwiX19sb29rdXBHZXR0ZXJfXyIsIm1ha2VTYWZlIiwicGFyc2VGbG9hdCIsInNlYWwiLCJwYWRFbmQiLCJwYWRTdGFydCIsIlN5bWJvbEZvciIsIldlYWtNYXAiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsInJ1biIsImZ1biIsInRpdGxlIiwiYnJvd3NlciIsImVudiIsImFyZ3YiLCJ2ZXJzaW9uIiwidmVyc2lvbnMiLCJjd2QiLCJjaGRpciIsInVtYXNrIiwiYWxsb3dIYWxmT3BlbiIsInJlYWRhYmxlIiwiZ2V0QnVmZmVyIiwiZGVzdHJveWVkIiwiUmVhZGFibGVTdGF0ZSIsImRlYnVnbG9nIiwiZ2V0SGlnaFdhdGVyTWFyayIsIkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YiLCJFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCIsIkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQiLCJlcnJvck9yRGVzdHJveSIsInBpcGVzIiwicGlwZXNDb3VudCIsImZsb3dpbmciLCJlbmRFbWl0dGVkIiwicmVhZGluZyIsInN5bmMiLCJuZWVkUmVhZGFibGUiLCJlbWl0dGVkUmVhZGFibGUiLCJyZWFkYWJsZUxpc3RlbmluZyIsInJlc3VtZVNjaGVkdWxlZCIsInBhdXNlZCIsImVtaXRDbG9zZSIsImF1dG9EZXN0cm95IiwiYXdhaXREcmFpbiIsInJlYWRpbmdNb3JlIiwiX3JlYWQiLCJkZXN0cm95IiwiX2Rlc3Ryb3kiLCJfdW5kZXN0cm95IiwidW5kZXN0cm95IiwiaXNQYXVzZWQiLCJzZXRFbmNvZGluZyIsImNsZWFyIiwicmVzdW1lIiwiY29uc3VtZSIsImZpbmlzaGVkIiwic3Rkb3V0IiwiaGFzVW5waXBlZCIsInBhdXNlIiwidW5waXBlIiwid3JhcCIsImFzeW5jSXRlcmF0b3IiLCJfZnJvbUxpc3QiLCJFUlJfTVVMVElQTEVfQ0FMTEJBQ0siLCJFUlJfVFJBTlNGT1JNX0FMUkVBRFlfVFJBTlNGT1JNSU5HIiwiRVJSX1RSQU5TRk9STV9XSVRIX0xFTkdUSF8wIiwiX3RyYW5zZm9ybVN0YXRlIiwidHJhbnNmb3JtaW5nIiwid3JpdGVjYiIsIndyaXRlY2h1bmsiLCJhZnRlclRyYW5zZm9ybSIsIm5lZWRUcmFuc2Zvcm0iLCJ3cml0ZWVuY29kaW5nIiwiZW50cnkiLCJmaW5pc2giLCJwZW5kaW5nY2IiLCJjb3JrZWRSZXF1ZXN0c0ZyZWUiLCJXcml0YWJsZVN0YXRlIiwiZGVwcmVjYXRlIiwiRVJSX1NUUkVBTV9DQU5OT1RfUElQRSIsIkVSUl9TVFJFQU1fREVTVFJPWUVEIiwiRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUyIsIkVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5EIiwiRVJSX1VOS05PV05fRU5DT0RJTkciLCJmaW5hbENhbGxlZCIsImRlY29kZVN0cmluZ3MiLCJ3cml0aW5nIiwiY29ya2VkIiwiYnVmZmVyUHJvY2Vzc2luZyIsIm9ud3JpdGUiLCJ3cml0ZWxlbiIsImVycm9yRW1pdHRlZCIsImJ1ZmZlcmVkUmVxdWVzdCIsImxhc3RCdWZmZXJlZFJlcXVlc3QiLCJwcmVmaW5pc2hlZCIsImJ1ZmZlcmVkUmVxdWVzdENvdW50Iiwid3JpdGV2IiwiX3dyaXRldiIsImlzQnVmIiwiYWxsQnVmZmVycyIsImhhc0luc3RhbmNlIiwiY29yayIsInVuY29yayIsInNldERlZmF1bHRFbmNvZGluZyIsInJlamVjdCIsIl9nZXRTdHJpbmciLCJfZ2V0QnVmZmVyIiwiZGVmaW5lUHJvcGVydGllcyIsIkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFIiwic2V0SGVhZGVyIiwiYWJvcnQiLCJFUlJfSU5WQUxJRF9PUFRfVkFMVUUiLCJEdXBsZXgiLCJQYXNzVGhyb3VnaCIsInBpcGVsaW5lIiwiU3RyZWFtIiwiX2lzU3RkaW8iLCJ0ZXh0IiwiZmlsbExhc3QiLCJsYXN0TmVlZCIsImxhc3RUb3RhbCIsImxhc3RDaGFyIiwibG9jYWxTdG9yYWdlIiwidHJhY2UiLCJoYXNCaWdJbnQiLCJsZXZlbGRiIiwiU3RyaW5nRGVjb2RlciIsImhhc2hNb2RlIiwiX2ZpbmFsT3JEaWdlc3QiLCJfX2ZpbmFsIiwiX2RlY29kZXIiLCJfZW5jb2RpbmciLCJpbnB1dEVuYyIsIm91dHB1dEVuYyIsIm91dERhdGEiLCJfdG9TdHJpbmciLCJmaW4iLCJlbGxpcHRpYyIsIkVDREgiLCJhbGlhc2VzIiwic2VjcDI1NmsxIiwic2VjcDIyNHIxIiwicHJpbWUyNTZ2MSIsInByaW1lMTkydjEiLCJlZDI1NTE5Iiwic2VjcDM4NHIxIiwic2VjcDUyMXIxIiwiY3VydmVUeXBlIiwiZWMiLCJmb3JtYXRSZXR1cm5WYWx1ZSIsImJuIiwicDI1NiIsInNlY3AyNTZyMSIsInNlY3AxOTJyMSIsInAzODQiLCJwNTIxIiwiZ2VuZXJhdGVLZXlzIiwiZ2VuS2V5UGFpciIsImdldFB1YmxpY0tleSIsImNvbXB1dGVTZWNyZXQiLCJpbmVuYyIsImtleUZyb21QdWJsaWMiLCJnZXRQdWJsaWMiLCJnZXRQcml2YXRlIiwiZ2V0WCIsImdldFByaXZhdGVLZXkiLCJzZXRQdWJsaWNLZXkiLCJfaW1wb3J0UHVibGljIiwic2V0UHJpdmF0ZUtleSIsIl9wcml2IiwiX2ltcG9ydFByaXZhdGUiLCJNRDUiLCJSSVBFTUQxNjAiLCJzaGEiLCJIYXNoIiwiYWxnIiwiTGVnYWN5IiwibWQ1IiwiWkVST1MiLCJIbWFjIiwiYmxvY2tzaXplIiwiX2FsZyIsImlwYWQiLCJfaXBhZCIsIm9wYWQiLCJfb3BhZCIsInJuZyIsInBzZXVkb1JhbmRvbUJ5dGVzIiwicHJuZyIsImFsZ29zIiwiYWxnb0tleXMiLCJoYXNoZXMiLCJnZXRIYXNoZXMiLCJwYmtkZjIiLCJwYmtkZjJTeW5jIiwiZGgiLCJEaWZmaWVIZWxsbWFuR3JvdXAiLCJjcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXAiLCJnZXREaWZmaWVIZWxsbWFuIiwiY3JlYXRlRGlmZmllSGVsbG1hbiIsIkRpZmZpZUhlbGxtYW4iLCJjcmVhdGVFQ0RIIiwicHVibGljRW5jcnlwdCIsInByaXZhdGVFbmNyeXB0IiwicHVibGljRGVjcnlwdCIsInByaXZhdGVEZWNyeXB0IiwicmYiLCJyYW5kb21GaWxsIiwicmFuZG9tRmlsbFN5bmMiLCJjcmVhdGVDcmVkZW50aWFscyIsImhhc1N5bWJvbHMiLCJ0b1N0ciIsIm9yaWdEZWZpbmVQcm9wZXJ0eSIsInN1cHBvcnRzRGVzY3JpcHRvcnMiLCJhcmVQcm9wZXJ0eURlc2NyaXB0b3JzU3VwcG9ydGVkIiwib2JqZWN0IiwicHJlZGljYXRlIiwicHJlZGljYXRlcyIsInV0aWxzIiwiQ0JDU3RhdGUiLCJfY2JjSW5pdCIsIl9jYmNTdGF0ZSIsImlucCIsIm91dE9mZiIsInN1cGVyUHJvdG8iLCJidWZmZXJPZmYiLCJfdXBkYXRlRGVjcnlwdCIsIl91cGRhdGVFbmNyeXB0IiwiX2ZsdXNoQnVmZmVyIiwiaW5wdXRPZmYiLCJvdXRwdXRPZmYiLCJfZmluYWxFbmNyeXB0IiwiX2ZpbmFsRGVjcnlwdCIsIl9wYWQiLCJfdW5wYWQiLCJERVNTdGF0ZSIsIl9kZXNTdGF0ZSIsImRlcml2ZUtleXMiLCJzaGlmdFRhYmxlIiwia0wiLCJrUiIsInBjMSIsInIyOHNobCIsInBjMiIsImlwIiwiX2VuY3J5cHQiLCJsU3RhcnQiLCJyU3RhcnQiLCJrZXlMIiwia2V5UiIsImV4cGFuZCIsInN1YnN0aXR1dGUiLCJyaXAiLCJFREVTdGF0ZSIsImsxIiwiazIiLCJrMyIsIl9lZGVTdGF0ZSIsImluTCIsImluUiIsIm91dEwiLCJvdXRSIiwicGMydGFibGUiLCJzVGFibGUiLCJwZXJtdXRlVGFibGUiLCJwYWRTcGxpdCIsImdyb3VwIiwiZ2VuZXJhdGVQcmltZSIsIkRIIiwiRU5DT0RJTkdTIiwiZ2VuIiwiZ2VuZXJhdG9yIiwiZ2VuYyIsIm1pbGxlclJhYmluIiwiVFdFTlRZRk9VUiIsIkVMRVZFTiIsIlRFTiIsIlRIUkVFIiwiU0VWRU4iLCJfcHViIiwicHJpbWVDYWNoZSIsIm1hbGxlYWJsZSIsInNldEdlbmVyYXRvciIsIl9fcHJpbWUiLCJfcHJpbWVMZW4iLCJfcHJpbWVDb2RlIiwic2ltcGxlU2lldmUiLCJmZXJtYXRUZXN0IiwiY2hlY2tQcmltZSIsIl9fZ2VuIiwiX2dlbiIsInNlY3JldCIsImdldFByaW1lIiwiZnJvbnQiLCJnZXRHZW5lcmF0b3IiLCJmaW5kUHJpbWUiLCJGSVZFIiwiX2dldFByaW1lcyIsIm4yIiwiZWRkc2EiLCJnZXROQUYiLCJnZXRKU0YiLCJCYXNlQ3VydmUiLCJjb25mIiwiemVybyIsInBvaW50RnJvbUpTT04iLCJnUmVkIiwiX3duYWZUMSIsIl93bmFmVDIiLCJfd25hZlQzIiwiX3duYWZUNCIsIl9iaXRMZW5ndGgiLCJhZGp1c3RDb3VudCIsInJlZE4iLCJfbWF4d2VsbFRyaWNrIiwiQmFzZVBvaW50IiwicHJlY29tcHV0ZWQiLCJwb2ludCIsInZhbGlkYXRlIiwiX2ZpeGVkTmFmTXVsIiwiZG91YmxlcyIsIl9nZXREb3VibGVzIiwibmFmIiwic3RlcCIsIm5hZlciLCJyZXByIiwianBvaW50IiwibWl4ZWRBZGQiLCJwb2ludHMiLCJ0b1AiLCJfd25hZk11bCIsIm5hZlBvaW50cyIsIl9nZXROQUZQb2ludHMiLCJkYmxwIiwiX3duYWZNdWxBZGQiLCJkZWZXIiwiY29lZmZzIiwiamFjb2JpYW5SZXN1bHQiLCJ3bmRXaWR0aCIsImNvbWIiLCJ0b0oiLCJqc2YiLCJqYSIsImpiIiwiZGVjb2RlUG9pbnQiLCJwb2ludEZyb21YIiwiZW5jb2RlQ29tcHJlc3NlZCIsImdldFkiLCJwcmVjb21wdXRlIiwicG93ZXIiLCJiZXRhIiwiX2dldEJldGEiLCJfaGFzRG91YmxlcyIsImRibCIsIkVkd2FyZHNDdXJ2ZSIsInR3aXN0ZWQiLCJtT25lQSIsImRkIiwib25lQyIsIlBvaW50Iiwiek9uZSIsIl9tdWxBIiwiX211bEMiLCJyaHMiLCJsaHMiLCJ5MiIsInBvaW50RnJvbVkiLCJpc0luZmluaXR5IiwiZnJvbUpTT04iLCJfZXh0RGJsIiwibngiLCJueSIsIm56IiwiX3Byb2pEYmwiLCJfZXh0QWRkIiwiX3Byb2pBZGQiLCJtdWxBZGQiLCJqbXVsQWRkIiwiemkiLCJlcVhUb1AiLCJzaG9ydCIsImVkd2FyZHMiLCJNb250Q3VydmUiLCJpNCIsImEyNCIsImFhIiwiYmIiLCJkaWZmQWRkIiwiZGEiLCJqdW1sQWRkIiwiU2hvcnRDdXJ2ZSIsInRpbnYiLCJ6ZXJvQSIsInRocmVlQSIsImVuZG8iLCJfZ2V0RW5kb21vcnBoaXNtIiwiX2VuZG9XbmFmVDEiLCJfZW5kb1duYWZUMiIsImlzUmVkIiwiaW5mIiwiSlBvaW50IiwibGFtYmRhIiwiYmV0YXMiLCJfZ2V0RW5kb1Jvb3RzIiwibGFtYmRhcyIsImJhc2lzIiwidmVjIiwiX2dldEVuZG9CYXNpcyIsIm50aW52IiwicHJldlIiLCJhcHJ4U3FydCIsInkxIiwibGVuMSIsIl9lbmRvU3BsaXQiLCJ2MSIsInYyIiwicTEiLCJxMiIsImF4IiwiX2VuZG9XbmFmTXVsQWRkIiwibnBvaW50cyIsIm5jb2VmZnMiLCJwcmUiLCJlbmRvTXVsIiwicGFyc2UiLCJvYmoycG9pbnQiLCJ5czEiLCJkeWludiIsIl9wcmVjb21wdXRlIiwibmVnYXRlIiwiemludiIsInppbnYyIiwiYXkiLCJwejIiLCJ6MiIsInUxIiwidTIiLCJoMiIsImgzIiwiangiLCJqeSIsImp6Iiwiano0IiwianlkIiwiangyIiwianlkMiIsImp5ZDQiLCJkbnkiLCJfemVyb0RibCIsIl90aHJlZURibCIsIl9kYmwiLCJ4eCIsInl5IiwieXl5eSIsInl5eXk4IiwiYzgiLCJnYW1tYSIsImFscGhhIiwiYmV0YTQiLCJiZXRhOCIsImdnYW1tYTgiLCJqeTIiLCJqeGQ0IiwianlkOCIsInRycGwiLCJ6eiIsIm1tIiwieXl1NCIsImtiYXNlIiwiejMiLCJwejMiLCJQcmVzZXRDdXJ2ZSIsImRlZmluZUN1cnZlIiwic2hhMjU2Iiwic2hhMzg0Iiwic2hhNTEyIiwiSG1hY0RSQkciLCJLZXlQYWlyIiwiU2lnbmF0dXJlIiwibmgiLCJrZXlQYWlyIiwiZnJvbVByaXZhdGUiLCJmcm9tUHVibGljIiwiZHJiZyIsInBlcnMiLCJwZXJzRW5jIiwiZW50cm9weSIsImhtYWNTdHJlbmd0aCIsImVudHJvcHlFbmMiLCJub25jZSIsIm5zMiIsIl90cnVuY2F0ZVRvTiIsInRydW5jT25seSIsIm5zMSIsIml0ZXIiLCJrcCIsImtwWCIsInJlY292ZXJ5UGFyYW0iLCJzaW52IiwicmVjb3ZlclB1YktleSIsImlzWU9kZCIsImlzU2Vjb25kS2V5IiwickludiIsImdldEtleVJlY292ZXJ5UGFyYW0iLCJRcHJpbWUiLCJwcml2RW5jIiwicHViRW5jIiwiZGVyaXZlIiwiX2ltcG9ydERFUiIsIlBvc2l0aW9uIiwicGxhY2UiLCJnZXRMZW5ndGgiLCJpbml0aWFsIiwib2N0ZXRMZW4iLCJybVBhZGRpbmciLCJjb25zdHJ1Y3RMZW5ndGgiLCJvY3RldHMiLCJzbGVuIiwiYmFja0hhbGYiLCJwYXJzZUJ5dGVzIiwiRUREU0EiLCJwb2ludENsYXNzIiwiZW5jb2RpbmdMZW5ndGgiLCJrZXlGcm9tU2VjcmV0IiwiaGFzaEludCIsIm1lc3NhZ2VQcmVmaXgiLCJSZW5jb2RlZCIsImVuY29kZVBvaW50Iiwic18iLCJwdWJCeXRlcyIsIm1ha2VTaWduYXR1cmUiLCJTRyIsImludEZyb21MRSIsImZyb21TZWNyZXQiLCJsYXN0SXgiLCJub3JtZWQiLCJ4SXNPZGQiLCJlbmNvZGVJbnQiLCJkZWNvZGVJbnQiLCJpc1BvaW50IiwiY2FjaGVkUHJvcGVydHkiLCJfc2VjcmV0IiwiX3B1YkJ5dGVzIiwicHJpdkJ5dGVzIiwiZ2V0U2VjcmV0IiwiX1IiLCJfUyIsIl9SZW5jb2RlZCIsIl9TZW5jb2RlZCIsIlNlbmNvZGVkIiwidG9CeXRlcyIsInRvSGV4IiwibWluQXNzZXJ0IiwibWluVXRpbHMiLCJ6ZXJvMiIsIm04IiwibTE0IiwibTI0IiwiY29tcHV0ZXIiLCJmaXJzdFNvdXJjZSIsInRvIiwibmV4dFNvdXJjZSIsImtleXNBcnJheSIsIm5leHRJbmRleCIsIm5leHRLZXkiLCJwb2x5ZmlsbCIsInJlY2VpdmVyIiwiZXJyb3JMaXN0ZW5lciIsInJlc29sdmVyIiwiZXZlbnRUYXJnZXRBZ25vc3RpY0FkZExpc3RlbmVyIiwiaGFuZGxlciIsImFkZEVycm9ySGFuZGxlcklmRXZlbnRFbWl0dGVyIiwiY2hlY2tMaXN0ZW5lciIsIl9nZXRNYXhMaXN0ZW5lcnMiLCJ0aGF0IiwiX2FkZExpc3RlbmVyIiwicHJlcGVuZCIsImV2ZW50cyIsImV4aXN0aW5nIiwid2FybmluZyIsIm9uY2VXcmFwcGVyIiwiX29uY2VXcmFwIiwid3JhcHBlZCIsIl9saXN0ZW5lcnMiLCJ1bndyYXAiLCJldmxpc3RlbmVyIiwidW53cmFwTGlzdGVuZXJzIiwiYXJyYXlDbG9uZSIsIndyYXBMaXN0ZW5lciIsImRvRXJyb3IiLCJvcmlnaW5hbExpc3RlbmVyIiwic3BsaWNlT25lIiwic2FsdCIsImtleUJpdHMiLCJ1c2VkIiwia2V5U3RhcnQiLCJpdlN0YXJ0IiwiaGFzT3duIiwiRVJST1JfTUVTU0FHRSIsImZ1bmNUeXBlIiwiYm91bmQiLCJiaW5kZXIiLCJib3VuZExlbmd0aCIsImJvdW5kQXJncyIsIkVtcHR5IiwiaW1wbGVtZW50YXRpb24iLCIkU3ludGF4RXJyb3IiLCJTeW50YXhFcnJvciIsIiRGdW5jdGlvbiIsIiRUeXBlRXJyb3IiLCJnZXRFdmFsbGVkQ29uc3RydWN0b3IiLCJleHByZXNzaW9uU3ludGF4IiwidGhyb3dUeXBlRXJyb3IiLCJUaHJvd1R5cGVFcnJvciIsImNhbGxlZVRocm93cyIsImdPUER0aHJvd3MiLCJnZXRQcm90byIsIm5lZWRzRXZhbCIsIlR5cGVkQXJyYXkiLCJJTlRSSU5TSUNTIiwiQWdncmVnYXRlRXJyb3IiLCJBdG9taWNzIiwiZGVjb2RlVVJJIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZXZhbCIsIkV2YWxFcnJvciIsIkZpbmFsaXphdGlvblJlZ2lzdHJ5IiwiVVJJRXJyb3IiLCJXZWFrUmVmIiwiZG9FdmFsIiwiTEVHQUNZX0FMSUFTRVMiLCIkY29uY2F0IiwiJHNwbGljZUFwcGx5IiwiJHJlcGxhY2UiLCIkc3RyU2xpY2UiLCJyZVByb3BOYW1lIiwicmVFc2NhcGVDaGFyIiwic3RyaW5nVG9QYXRoIiwicXVvdGUiLCJzdWJTdHJpbmciLCJnZXRCYXNlSW50cmluc2ljIiwiYWxpYXMiLCJpbnRyaW5zaWNOYW1lIiwiaW50cmluc2ljQmFzZU5hbWUiLCJpbnRyaW5zaWNSZWFsTmFtZSIsInNraXBGdXJ0aGVyQ2FjaGluZyIsImlzT3duIiwicGFydCIsIm9yaWdTeW1ib2wiLCJoYXNTeW1ib2xTaGFtIiwic3ltT2JqIiwic3ltcyIsIkhhc2hCYXNlIiwiX2Jsb2NrIiwiX2Jsb2NrU2l6ZSIsIl9ibG9ja09mZnNldCIsIl9sZW5ndGgiLCJfZmluYWxpemVkIiwidGhyb3dJZk5vdFN0cmluZ09yQnVmZmVyIiwiX2RpZ2VzdCIsImNvbW1vbiIsInJpcGVtZCIsImhtYWMiLCJzaGExIiwic2hhMjI0IiwicmlwZW1kMTYwIiwiQmxvY2tIYXNoIiwicGVuZGluZyIsInBlbmRpbmdUb3RhbCIsIm91dFNpemUiLCJwYWRMZW5ndGgiLCJfZGVsdGE4IiwiX2RlbHRhMzIiLCJqb2luMzIiLCJpbm5lciIsIm91dGVyIiwicm90bDMyIiwic3VtMzIiLCJzdW0zMl8zIiwic3VtMzJfNCIsIktoIiwiQWgiLCJCaCIsIkNoIiwiRGgiLCJFaCIsInJoIiwic2giLCJ0b0hleDMyIiwic3BsaXQzMiIsInNoYUNvbW1vbiIsInN1bTMyXzUiLCJmdF8xIiwic2hhMV9LIiwiU0hBMSIsIlNIQTI1NiIsIlNIQTIyNCIsImNoMzIiLCJtYWozMiIsInMwXzI1NiIsInMxXzI1NiIsImcwXzI1NiIsImcxXzI1NiIsInNoYTI1Nl9LIiwiVDEiLCJUMiIsIlNIQTUxMiIsIlNIQTM4NCIsInJvdHI2NF9oaSIsInJvdHI2NF9sbyIsInNocjY0X2hpIiwic2hyNjRfbG8iLCJzdW02NCIsInN1bTY0X2hpIiwic3VtNjRfbG8iLCJzdW02NF80X2hpIiwic3VtNjRfNF9sbyIsInN1bTY0XzVfaGkiLCJzdW02NF81X2xvIiwic2hhNTEyX0siLCJjaDY0X2hpIiwieGgiLCJ4bCIsInloIiwieWwiLCJ6aCIsImNoNjRfbG8iLCJ6bCIsIm1hajY0X2hpIiwibWFqNjRfbG8iLCJzMF81MTJfaGkiLCJzMF81MTJfbG8iLCJzMV81MTJfbG8iLCJnMF81MTJfaGkiLCJnMF81MTJfbG8iLCJnMV81MTJfbG8iLCJfcHJlcGFyZUJsb2NrIiwiYzBfaGkiLCJjMF9sbyIsImMxX2hpIiwiYzFfbG8iLCJjMl9oaSIsImMyX2xvIiwiYzNfaGkiLCJjM19sbyIsImFoIiwiYWwiLCJiaCIsImNoIiwiY2wiLCJkbCIsImVoIiwiZWwiLCJmaCIsImZsIiwiZ2giLCJnbCIsImhoIiwiaGwiLCJjNF9oaSIsImM0X2xvIiwiVDFfaGkiLCJUMV9sbyIsIlQyX2hpIiwiVDJfbG8iLCJyb3RyMzIiLCJwMzIiLCJpc1N1cnJvZ2F0ZVBhaXIiLCJodG9ubCIsInplcm84IiwicHJlZFJlc2lzdCIsIm1pbkVudHJvcHkiLCJfcmVzZWVkIiwicmVzZWVkSW50ZXJ2YWwiLCJub25jZUVuYyIsInNlZWQiLCJfaG1hYyIsImttYWMiLCJyZXNlZWQiLCJhZGRFbmMiLCJpc0xFIiwibUxlbiIsIm5CeXRlcyIsImVMZW4iLCJlTWF4IiwiZUJpYXMiLCJuQml0cyIsImhhc1RvU3RyaW5nVGFnIiwiJHRvU3RyaW5nIiwiY2FsbEJvdW5kIiwiaXNTdGFuZGFyZEFyZ3VtZW50cyIsImlzTGVnYWN5QXJndW1lbnRzIiwiY2FsbGVlIiwic3VwcG9ydHNTdGFuZGFyZEFyZ3VtZW50cyIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiZm5Ub1N0ciIsImlzRm5SZWdleCIsImdlbmVyYXRvckZ1bmMiLCJnZXRHZW5lcmF0b3JGdW5jIiwiZ2V0UG9seWZpbGwiLCJzaGltIiwiYXZhaWxhYmxlVHlwZWRBcnJheXMiLCJ0eXBlZEFycmF5cyIsIiRzbGljZSIsInRvU3RyVGFncyIsImdPUEQiLCJ0eXBlZEFycmF5IiwiYW55VHJ1ZSIsImdldHRlciIsInRyeVR5cGVkQXJyYXlzIiwiQVJSQVkxNiIsIl9hIiwiX2IiLCJfYyIsInJvdGwiLCJmbkYiLCJmbkciLCJmbkgiLCJmbkkiLCJicm9yYW5kIiwiTWlsbGVyUmFiaW4iLCJfcmFuZGJlbG93IiwibWluX2J5dGVzIiwiX3JhbmRyYW5nZSIsInN0b3AiLCJyb25lIiwicm4xIiwiZ2V0RGl2aXNvciIsImtleXNTaGltIiwiaXNBcmdzIiwiaXNFbnVtZXJhYmxlIiwiaGFzRG9udEVudW1CdWciLCJoYXNQcm90b0VudW1CdWciLCJkb250RW51bXMiLCJlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZSIsImV4Y2x1ZGVkS2V5cyIsIiRhcHBsaWNhdGlvbkNhY2hlIiwiJGNvbnNvbGUiLCIkZXh0ZXJuYWwiLCIkZnJhbWUiLCIkZnJhbWVFbGVtZW50IiwiJGZyYW1lcyIsIiRpbm5lckhlaWdodCIsIiRpbm5lcldpZHRoIiwiJG9ubW96ZnVsbHNjcmVlbmNoYW5nZSIsIiRvbm1vemZ1bGxzY3JlZW5lcnJvciIsIiRvdXRlckhlaWdodCIsIiRvdXRlcldpZHRoIiwiJHBhZ2VYT2Zmc2V0IiwiJHBhZ2VZT2Zmc2V0IiwiJHBhcmVudCIsIiRzY3JvbGxMZWZ0IiwiJHNjcm9sbFRvcCIsIiRzY3JvbGxYIiwiJHNjcm9sbFkiLCIkc2VsZiIsIiR3ZWJraXRJbmRleGVkREIiLCIkd2Via2l0U3RvcmFnZUluZm8iLCIkd2luZG93IiwiaGFzQXV0b21hdGlvbkVxdWFsaXR5QnVnIiwiaXNPYmplY3QiLCJpc0Z1bmN0aW9uIiwiaXNBcmd1bWVudHMiLCJpc1N0cmluZyIsInRoZUtleXMiLCJza2lwUHJvdG8iLCJza2lwQ29uc3RydWN0b3IiLCJlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZUlmTm90QnVnZ3kiLCJvcmlnS2V5cyIsIm9yaWdpbmFsS2V5cyIsIlRZUEVEX09LIiwiX2hhcyIsInNvdXJjZXMiLCJzaHJpbmtCdWYiLCJmblR5cGVkIiwiYXJyYXlTZXQiLCJzcmNfb2ZmcyIsImRlc3Rfb2ZmcyIsImZsYXR0ZW5DaHVua3MiLCJjaHVua3MiLCJmblVudHlwZWQiLCJzZXRUeXBlZCIsIkJ1ZjgiLCJCdWYxNiIsIkJ1ZjMyIiwiYWRsZXIiLCJaX1RSRUVTIiwiWl9OT19DT01QUkVTU0lPTiIsIlpfQkVTVF9TUEVFRCIsIlpfQkVTVF9DT01QUkVTU0lPTiIsIlpfQklOQVJZIiwiWl9URVhUIiwiWl9VTktOT1dOIiwiY3JjVGFibGUiLCJtYWtlVGFibGUiLCJjcmMiLCJjb25maWd1cmF0aW9uX3RhYmxlIiwidHJlZXMiLCJhZGxlcjMyIiwiY3JjMzIiLCJNQVhfTUFUQ0giLCJNSU5fTE9PS0FIRUFEIiwiSENSQ19TVEFURSIsIkJVU1lfU1RBVEUiLCJGSU5JU0hfU1RBVEUiLCJlcnJvckNvZGUiLCJyYW5rIiwiZmx1c2hfcGVuZGluZyIsInBlbmRpbmdfYnVmIiwicGVuZGluZ19vdXQiLCJ0b3RhbF9vdXQiLCJmbHVzaF9ibG9ja19vbmx5IiwiX3RyX2ZsdXNoX2Jsb2NrIiwiYmxvY2tfc3RhcnQiLCJzdHJzdGFydCIsInB1dF9ieXRlIiwicHV0U2hvcnRNU0IiLCJsb25nZXN0X21hdGNoIiwiY3VyX21hdGNoIiwiY2hhaW5fbGVuZ3RoIiwibWF4X2NoYWluX2xlbmd0aCIsInNjYW4iLCJiZXN0X2xlbiIsInByZXZfbGVuZ3RoIiwibmljZV9tYXRjaCIsIndfc2l6ZSIsIl93aW4iLCJ3bWFzayIsIndfbWFzayIsInN0cmVuZCIsInNjYW5fZW5kMSIsInNjYW5fZW5kIiwiZ29vZF9tYXRjaCIsImxvb2thaGVhZCIsIm1hdGNoX3N0YXJ0IiwiZmlsbF93aW5kb3ciLCJfd19zaXplIiwid2luZG93X3NpemUiLCJoYXNoX3NpemUiLCJ0b3RhbF9pbiIsImluc2VydCIsImluc19oIiwiaGFzaF9zaGlmdCIsImhhc2hfbWFzayIsImRlZmxhdGVfZmFzdCIsImhhc2hfaGVhZCIsImJmbHVzaCIsIm1hdGNoX2xlbmd0aCIsIl90cl90YWxseSIsIm1heF9sYXp5X21hdGNoIiwiTUlOX01BVENIIiwibGFzdF9saXQiLCJkZWZsYXRlX3Nsb3ciLCJtYXhfaW5zZXJ0IiwicHJldl9tYXRjaCIsIm1hdGNoX2F2YWlsYWJsZSIsIkNvbmZpZyIsImdvb2RfbGVuZ3RoIiwibWF4X2xhenkiLCJuaWNlX2xlbmd0aCIsIm1heF9jaGFpbiIsIkRlZmxhdGVTdGF0ZSIsInN0YXR1cyIsInBlbmRpbmdfYnVmX3NpemUiLCJnemhlYWQiLCJnemluZGV4IiwibGFzdF9mbHVzaCIsIndfYml0cyIsImhhc2hfYml0cyIsImR5bl9sdHJlZSIsIkhFQVBfU0laRSIsImR5bl9kdHJlZSIsImJsX3RyZWUiLCJsX2Rlc2MiLCJkX2Rlc2MiLCJibF9kZXNjIiwiYmxfY291bnQiLCJNQVhfQklUUyIsImhlYXAiLCJoZWFwX2xlbiIsImhlYXBfbWF4IiwibF9idWYiLCJsaXRfYnVmc2l6ZSIsImRfYnVmIiwib3B0X2xlbiIsInN0YXRpY19sZW4iLCJtYXRjaGVzIiwiYmlfYnVmIiwiYmlfdmFsaWQiLCJkZWZsYXRlUmVzZXRLZWVwIiwiZGF0YV90eXBlIiwiX3RyX2luaXQiLCJtYXhfYmxvY2tfc2l6ZSIsIm1heF9zdGFydCIsImRlZmxhdGVJbml0IiwiZGVmbGF0ZVNldEhlYWRlciIsIm9sZF9mbHVzaCIsImJlZyIsImhjcmMiLCJleHRyYSIsIm9zIiwiYnN0YXRlIiwiZGVmbGF0ZV9odWZmIiwiZGVmbGF0ZV9ybGUiLCJfdHJfYWxpZ24iLCJfdHJfc3RvcmVkX2Jsb2NrIiwiYXZhaWwiLCJ0bXBEaWN0IiwiZGljdExlbmd0aCIsImRlZmxhdGVJbmZvIiwiX2luIiwiX291dCIsImRtYXgiLCJ3c2l6ZSIsIndoYXZlIiwid25leHQiLCJzX3dpbmRvdyIsImhvbGQiLCJsY29kZSIsImRjb2RlIiwibG1hc2siLCJkbWFzayIsImhlcmUiLCJvcCIsImRpc3QiLCJmcm9tX3NvdXJjZSIsImxlbmNvZGUiLCJkaXN0Y29kZSIsImxlbmJpdHMiLCJkaXN0Yml0cyIsInRvcCIsImRvbGVuIiwiZG9kaXN0Iiwic2FuZSIsImluZmxhdGVfZmFzdCIsImluZmxhdGVfdGFibGUiLCJUWVBFIiwiQkFEIiwienN3YXAzMiIsIkluZmxhdGVTdGF0ZSIsImhhdmVkaWN0IiwiY2hlY2siLCJ3Yml0cyIsIm5jb2RlIiwibmxlbiIsIm5kaXN0Iiwid29yayIsImxlbmR5biIsImRpc3RkeW4iLCJiYWNrIiwid2FzIiwiaW5mbGF0ZVJlc2V0S2VlcCIsImluZmxhdGVSZXNldDIiLCJsZW5maXgiLCJkaXN0Zml4IiwidmlyZ2luIiwiZml4ZWR0YWJsZXMiLCJ1cGRhdGV3aW5kb3ciLCJpbmZsYXRlSW5pdCIsInB1dCIsImhlcmVfYml0cyIsImhlcmVfb3AiLCJoZXJlX3ZhbCIsImxhc3RfYml0cyIsImxhc3Rfb3AiLCJsYXN0X3ZhbCIsImhidWYiLCJvcmRlciIsImluZl9sZWF2ZSIsInhmbGFncyIsImV4dHJhX2xlbiIsImluZmxhdGVHZXRIZWFkZXIiLCJpbmZsYXRlSW5mbyIsImxiYXNlIiwibGV4dCIsImRiYXNlIiwiZGV4dCIsImxlbnNfaW5kZXgiLCJ0YWJsZV9pbmRleCIsImluY3IiLCJsb3ciLCJyb290IiwiY3VyciIsImRyb3AiLCJodWZmIiwiYmFzZV9pbmRleCIsIk1BWEJJVFMiLCJvZmZzIiwiZXh0cmFfaW5kZXgiLCJleHRyYV9sYml0cyIsImV4dHJhX2RiaXRzIiwiZXh0cmFfYmxiaXRzIiwiYmxfb3JkZXIiLCJzdGF0aWNfbHRyZWUiLCJzdGF0aWNfZHRyZWUiLCJEX0NPREVTIiwiX2Rpc3RfY29kZSIsIl9sZW5ndGhfY29kZSIsImJhc2VfbGVuZ3RoIiwic3RhdGljX2xfZGVzYyIsInN0YXRpY19kX2Rlc2MiLCJzdGF0aWNfYmxfZGVzYyIsImJhc2VfZGlzdCIsIlN0YXRpY1RyZWVEZXNjIiwic3RhdGljX3RyZWUiLCJleHRyYV9iaXRzIiwiZXh0cmFfYmFzZSIsImVsZW1zIiwibWF4X2xlbmd0aCIsImhhc19zdHJlZSIsIlRyZWVEZXNjIiwiZHluX3RyZWUiLCJzdGF0X2Rlc2MiLCJtYXhfY29kZSIsImRfY29kZSIsInB1dF9zaG9ydCIsInNlbmRfYml0cyIsInNlbmRfY29kZSIsImJpX3JldmVyc2UiLCJnZW5fY29kZXMiLCJuZXh0X2NvZGUiLCJpbml0X2Jsb2NrIiwiTElURVJBTFMiLCJFTkRfQkxPQ0siLCJiaV93aW5kdXAiLCJzbWFsbGVyIiwiX24yIiwiX20yIiwicHFkb3duaGVhcCIsImNvbXByZXNzX2Jsb2NrIiwibHRyZWUiLCJkdHJlZSIsImxjIiwibHgiLCJidWlsZF90cmVlIiwic3RyZWUiLCJ4Yml0cyIsIm92ZXJmbG93IiwiZ2VuX2JpdGxlbiIsInNjYW5fdHJlZSIsImN1cmxlbiIsInByZXZsZW4iLCJuZXh0bGVuIiwibWF4X2NvdW50IiwibWluX2NvdW50IiwiUkVQXzNfNiIsIlJFUFpfM18xMCIsIlJFUFpfMTFfMTM4Iiwic2VuZF90cmVlIiwic3RhdGljX2luaXRfZG9uZSIsInN0b3JlZF9sZW4iLCJjb3B5X2Jsb2NrIiwiTEVOR1RIX0NPREVTIiwiTF9DT0RFUyIsInRyX3N0YXRpY19pbml0Iiwib3B0X2xlbmIiLCJzdGF0aWNfbGVuYiIsIm1heF9ibGluZGV4IiwiYmxhY2tfbWFzayIsImRldGVjdF9kYXRhX3R5cGUiLCJCTF9DT0RFUyIsImJ1aWxkX2JsX3RyZWUiLCJsY29kZXMiLCJkY29kZXMiLCJibGNvZGVzIiwic2VuZF9hbGxfdHJlZXMiLCJTVEFUSUNfVFJFRVMiLCJiaV9mbHVzaCIsImNlcnRpZmljYXRlIiwiUlNBUHJpdmF0ZUtleSIsInNlcSIsImludCIsIlJTQVB1YmxpY0tleSIsIlB1YmxpY0tleSIsIkFsZ29yaXRobUlkZW50aWZpZXIiLCJiaXRzdHIiLCJudWxsXyIsIlByaXZhdGVLZXlJbmZvIiwib2N0c3RyIiwiUHJpdmF0ZUtleSIsIkVuY3J5cHRlZFByaXZhdGVLZXlJbmZvIiwiRW5jcnlwdGVkUHJpdmF0ZUtleSIsIkRTQVByaXZhdGVLZXkiLCJEU0FwYXJhbSIsIkVDUHJpdmF0ZUtleSIsIkVDUGFyYW1ldGVycyIsIm5hbWVkQ3VydmUiLCJhc24iLCJUaW1lIiwidXRjVGltZSIsInV0Y3RpbWUiLCJnZW5lcmFsVGltZSIsImdlbnRpbWUiLCJBdHRyaWJ1dGVUeXBlVmFsdWUiLCJTdWJqZWN0UHVibGljS2V5SW5mbyIsIlJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUiLCJzZXRvZiIsIlJETlNlcXVlbmNlIiwic2Vxb2YiLCJOYW1lIiwicmRuU2VxdWVuY2UiLCJWYWxpZGl0eSIsIkV4dGVuc2lvbiIsImJvb2wiLCJUQlNDZXJ0aWZpY2F0ZSIsIlg1MDlDZXJ0aWZpY2F0ZSIsImZpbmRQcm9jIiwic3RhcnRSZWdleCIsImZ1bGxSZWdleCIsImV2cCIsIm9rZXkiLCJkZWNyeXB0ZWQiLCJjaXBoZXJUZXh0IiwiY2lwaGVyS2V5IiwiY2lwaGVyIiwibWF0Y2gyIiwiYWVzaWQiLCJmaXhQcm9jIiwiY29tcGF0IiwicGFzc3BocmFzZSIsInN1YnR5cGUiLCJuZGF0YSIsInN0cmlwcGVkIiwidGJzQ2VydGlmaWNhdGUiLCJzdWJqZWN0UHVibGljS2V5SW5mbyIsInN1YmplY3RQdWJsaWNLZXkiLCJrZGUiLCJrZGVwYXJhbXMiLCJpdGVycyIsImtleWxlbiIsInBhcmFtZXRlcnMiLCJaRVJPX0JVRiIsImNoZWNrUGFyYW1ldGVycyIsInN1YnRsZSIsInRvQnJvd3NlciIsImNoZWNrcyIsImdldE5leHRUaWNrIiwicXVldWVNaWNyb3Rhc2siLCJzZXRJbW1lZGlhdGUiLCJicm93c2VyUGJrZGYyIiwiaXRlcmF0aW9ucyIsImltcG9ydEtleSIsImRlcml2ZUJpdHMiLCJyZXNvbHZlUHJvbWlzZSIsInByb20iLCJjaGVja05hdGl2ZSIsInJlc3AiLCJNQVhfQUxMT0MiLCJzaXplcyIsInJtZDE2MCIsInNhbHRMZW4iLCJnZXREaWdlc3QiLCJpcGFkMSIsImlwYWQyIiwiREsiLCJibG9jazEiLCJkZXN0UG9zIiwiaExlbiIsImNhY2hlZFNldFRpbWVvdXQiLCJjYWNoZWRDbGVhclRpbWVvdXQiLCJkZWZhdWx0U2V0VGltb3V0IiwiZGVmYXVsdENsZWFyVGltZW91dCIsInJ1blRpbWVvdXQiLCJjdXJyZW50UXVldWUiLCJxdWV1ZSIsImRyYWluaW5nIiwicXVldWVJbmRleCIsImNsZWFuVXBOZXh0VGljayIsImRyYWluUXVldWUiLCJ0aW1lb3V0IiwibWFya2VyIiwicnVuQ2xlYXJUaW1lb3V0IiwiSXRlbSIsIm5vb3AiLCJpMm9wcyIsIm1nZiIsIndpdGhQdWJsaWMiLCJ6QnVmZmVyIiwiaUhhc2giLCJtYXNrZWRTZWVkIiwibWFza2VkRGIiLCJkYiIsImRpZiIsIm9hZXAiLCJwcyIsInBrY3MxIiwicHVibGljS2V5IiwicGFkZGVkTXNnIiwiaExlbjIiLCJkYmxlbiIsIm5vblplcm8iLCJNQVhfQllURVMiLCJnZW5lcmF0ZWQiLCJvbGRCcm93c2VyIiwic2FmZUJ1ZmZlciIsInJhbmRvbWJ5dGVzIiwia0J1ZmZlck1heExlbmd0aCIsImtNYXhVaW50MzIiLCJhc3NlcnRPZmZzZXQiLCJhY3R1YWxGaWxsIiwib3VyQnVmIiwidWludCIsIm9iamVjdEtleXMiLCJvbmVuZCIsIm9uRW5kTlQiLCJkZWJ1ZyIsIkVFbGlzdGVuZXJDb3VudCIsIk91clVpbnQ4QXJyYXkiLCJkZWJ1Z1V0aWwiLCJjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3IiLCJCdWZmZXJMaXN0IiwiZGVzdHJveUltcGwiLCJrUHJveHlFdmVudHMiLCJpc0R1cGxleCIsInJlYWRhYmxlQWRkQ2h1bmsiLCJhZGRUb0Zyb250Iiwic2tpcENodW5rQ2hlY2siLCJlbWl0UmVhZGFibGUiLCJlbWl0UmVhZGFibGVfIiwib25Fb2ZDaHVuayIsImNodW5rSW52YWxpZCIsIl91aW50OEFycmF5VG9CdWZmZXIiLCJhZGRDaHVuayIsIm1heWJlUmVhZE1vcmUiLCJNQVhfSFdNIiwiaG93TXVjaFRvUmVhZCIsImNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrIiwibWF5YmVSZWFkTW9yZV8iLCJ1cGRhdGVSZWFkYWJsZUxpc3RlbmluZyIsIm5SZWFkaW5nTmV4dFRpY2siLCJyZXN1bWVfIiwiZnJvbUxpc3QiLCJlbmRSZWFkYWJsZSIsImVuZFJlYWRhYmxlTlQiLCJ3U3RhdGUiLCJ4cyIsIm5PcmlnIiwiZG9SZWFkIiwicGlwZU9wdHMiLCJlbmRGbiIsIm9udW5waXBlIiwidW5waXBlSW5mbyIsIm9uY2xvc2UiLCJvbmZpbmlzaCIsIm9uZHJhaW4iLCJvbmRhdGEiLCJjbGVhbmVkVXAiLCJwaXBlT25EcmFpbiIsImV2ZW50IiwiZGVzdHMiLCJldiIsIml0ZXJhYmxlIiwidHMiLCJycyIsInByZWZpbmlzaCIsImVycjIiLCJDb3JrZWRSZXF1ZXN0IiwiY29ya1JlcSIsIm9uQ29ya2VkRmluaXNoIiwicmVhbEhhc0luc3RhbmNlIiwiaW50ZXJuYWxVdGlsIiwibm9wIiwibm9EZWNvZGUiLCJvbndyaXRlU3RhdGVVcGRhdGUiLCJmaW5pc2hNYXliZSIsIm9ud3JpdGVFcnJvciIsIm5lZWRGaW5pc2giLCJjbGVhckJ1ZmZlciIsImFmdGVyV3JpdGUiLCJkb1dyaXRlIiwib253cml0ZURyYWluIiwiaG9sZGVyIiwiY2FsbEZpbmFsIiwibmVlZCIsInJTdGF0ZSIsIndyaXRlQWZ0ZXJFbmQiLCJ2YWxpZENodW5rIiwibmV3Q2h1bmsiLCJkZWNvZGVDaHVuayIsIndyaXRlT3JCdWZmZXIiLCJlbmRXcml0YWJsZSIsIl9PYmplY3Qkc2V0UHJvdG90eXBlTyIsImtMYXN0UmVzb2x2ZSIsImtMYXN0UmVqZWN0Iiwia0Vycm9yIiwia0VuZGVkIiwia0xhc3RQcm9taXNlIiwia0hhbmRsZVByb21pc2UiLCJrU3RyZWFtIiwiY3JlYXRlSXRlclJlc3VsdCIsInJlYWRBbmRSZXNvbHZlIiwib25SZWFkYWJsZSIsIkFzeW5jSXRlcmF0b3JQcm90b3R5cGUiLCJSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3JQcm90b3R5cGUiLCJsYXN0UHJvbWlzZSIsIndyYXBGb3JOZXh0IiwiX09iamVjdCRjcmVhdGUiLCJlbnVtZXJhYmxlT25seSIsInN5bWJvbHMiLCJoYXNTdHJpbmdzIiwibmIiLCJlbWl0RXJyb3JBbmRDbG9zZU5UIiwiZW1pdEVycm9yTlQiLCJyZWFkYWJsZURlc3Ryb3llZCIsIndyaXRhYmxlRGVzdHJveWVkIiwiZW9zIiwiY2FsbGVkIiwib25sZWdhY3lmaW5pc2giLCJ3cml0YWJsZUVuZGVkIiwicmVhZGFibGVFbmRlZCIsIm9ucmVxdWVzdCIsImlzUmVxdWVzdCIsImRlc3Ryb3llciIsImNsb3NlZCIsInBvcENhbGxiYWNrIiwic3RyZWFtcyIsImRlc3Ryb3lzIiwiZHVwbGV4S2V5IiwiaHdtIiwiaGlnaFdhdGVyTWFya0Zyb20iLCJ6ciIsInNsIiwiZm4xIiwiZm4yIiwiZm4zIiwiZm40IiwiZm41IiwidGwiLCJjb3B5UHJvcHMiLCJTYWZlQnVmZmVyIiwic2FmZXIiLCJTYWZlciIsImtTdHJpbmdNYXhMZW5ndGgiLCJNQVhfTEVOR1RIIiwiTUFYX1NUUklOR19MRU5HVEgiLCJmaW5hbFNpemUiLCJfZmluYWxTaXplIiwiYWNjdW0iLCJhc3NpZ25lZCIsInJlbWFpbmRlciIsImxvd0JpdHMiLCJoaWdoQml0cyIsIkFsZ29yaXRobSIsIlNoYSIsIl93Iiwicm90bDMwIiwiU2hhMSIsInJvdGw1IiwiU2hhMjU2IiwiU2hhMjI0IiwiX2YiLCJfZyIsIl9oIiwibWFqIiwic2lnbWEwIiwic2lnbWExIiwiZ2FtbWEwIiwiU2hhMzg0IiwiX2FoIiwiX2JoIiwiX2NoIiwiX2RoIiwiX2VoIiwiX2ZoIiwiX2doIiwiX2hoIiwiX2FsIiwiX2JsIiwiX2NsIiwiX2RsIiwiX2VsIiwiX2ZsIiwiX2dsIiwiX2hsIiwid3JpdGVJbnQ2NEJFIiwiU2hhNTEyIiwiR2FtbWEwIiwiR2FtbWEwbCIsIkdhbW1hMSIsIkdhbW1hMWwiLCJnZXRDYXJyeSIsImdhbW1hMGwiLCJnYW1tYTEiLCJnYW1tYTFsIiwiV2k3aCIsIldpN2wiLCJXaTE2aCIsIldpMTZsIiwiV2lsIiwiV2loIiwibWFqaCIsIm1hamwiLCJzaWdtYTBoIiwic2lnbWEwbCIsInNpZ21hMWgiLCJzaWdtYTFsIiwiS2loIiwiS2lsIiwiY2hoIiwiY2hsIiwidDFsIiwidDFoIiwidDJsIiwidDJoIiwiRUUiLCJkaWRPbkVuZCIsImNsZWFudXAiLCJuZW5jIiwicmV0cmllZCIsIl9ub3JtYWxpemVFbmNvZGluZyIsIm5vcm1hbGl6ZUVuY29kaW5nIiwidXRmMTZUZXh0IiwidXRmMTZFbmQiLCJ1dGY4RmlsbExhc3QiLCJiYXNlNjRUZXh0IiwiYmFzZTY0RW5kIiwic2ltcGxlV3JpdGUiLCJzaW1wbGVFbmQiLCJ1dGY4Q2hlY2tCeXRlIiwidXRmOENoZWNrRXh0cmFCeXRlcyIsInV0ZjhDaGVja0luY29tcGxldGUiLCJUcnVzdGxpc3QiLCJpbml0aWFsaXplZCIsImNlcnRJbmZvcyIsImNlcnRzIiwiQ29zZTEiLCJwcm90ZWN0ZWRfIiwidW5wcm90ZWN0ZWQiLCJwYXlsb2FkIiwic2lnbmF0dXJlcyIsImNib3IiLCJlbmNvZGVkRGF0YSIsImRlY29kZWREYXRhIiwiY29zZTEiLCJtYWtlRGF0YUZvclZlcmlmaWNhdGlvbiIsInJhdzEiLCJyYXcyIiwiZW5jb2RlZFVuc2lnbmVkSW50ZWdlciIsInB0ciIsImNvbXB1dGVMZW5ndGgiLCJzcmNwb3MiLCJkZXN0cG9zIiwiZW5jb2RlU2lnbmF0dXJlIiwiRXVEZ2MiLCJjYm9yV2ViIiwiY3d0IiwiZXVkZ2MiLCJnZXRDZXJ0SW5mb3MiLCJleHBsaWNpdENlcnRzIiwiY2VydEZpbHRlciIsIm9sZENvdW50IiwiaW5mbyIsImNlcnRJbmZvIiwibm90YmVmb3JlIiwibm90YWZ0ZXIiLCJzdWJqZWN0IiwiRXVEZ2NfcGFyc2UiLCJFdURnY192YWxpZGF0ZSIsIndoaWNoVHlwZWRBcnJheSIsIkJpZ0ludFN1cHBvcnRlZCIsIlN5bWJvbFN1cHBvcnRlZCIsIk9iamVjdFRvU3RyaW5nIiwibnVtYmVyVmFsdWUiLCJzdHJpbmdWYWx1ZSIsImJvb2xlYW5WYWx1ZSIsImJpZ0ludFZhbHVlIiwic3ltYm9sVmFsdWUiLCJjaGVja0JveGVkUHJpbWl0aXZlIiwicHJvdG90eXBlVmFsdWVPZiIsImlzTWFwVG9TdHJpbmciLCJpc1NldFRvU3RyaW5nIiwiaXNXZWFrTWFwVG9TdHJpbmciLCJpc1dlYWtTZXRUb1N0cmluZyIsImlzQXJyYXlCdWZmZXJUb1N0cmluZyIsIndvcmtpbmciLCJpc0RhdGFWaWV3VG9TdHJpbmciLCJpc1VpbnQ4QXJyYXkiLCJpc1VpbnQ4Q2xhbXBlZEFycmF5IiwiaXNVaW50MTZBcnJheSIsImlzVWludDMyQXJyYXkiLCJpc0ludDhBcnJheSIsImlzSW50MTZBcnJheSIsImlzSW50MzJBcnJheSIsImlzQmlnSW50NjRBcnJheSIsImlzQmlnVWludDY0QXJyYXkiLCJTaGFyZWRBcnJheUJ1ZmZlckNvcHkiLCJpc1NoYXJlZEFycmF5QnVmZmVyVG9TdHJpbmciLCJpc1NoYXJlZEFycmF5QnVmZmVyIiwiaXNHZW5lcmF0b3JPYmplY3QiLCJpc1dlYkFzc2VtYmx5Q29tcGlsZWRNb2R1bGUiLCJkZXNjcmlwdG9ycyIsImZvcm1hdFJlZ0V4cCIsIm9iamVjdHMiLCJpc051bGwiLCJub0RlcHJlY2F0aW9uIiwidGhyb3dEZXByZWNhdGlvbiIsInRyYWNlRGVwcmVjYXRpb24iLCJkZWJ1Z3MiLCJkZWJ1Z0VudlJlZ2V4IiwiTk9ERV9ERUJVRyIsImRlYnVnRW52Iiwic3R5bGl6ZU5vQ29sb3IiLCJpc0Jvb2xlYW4iLCJfZXh0ZW5kIiwiaXNVbmRlZmluZWQiLCJmb3JtYXRWYWx1ZSIsInN0eWxlVHlwZSIsInN0eWxlIiwic2ltcGxlIiwiaXNOdW1iZXIiLCJmb3JtYXRQcmltaXRpdmUiLCJ2aXNpYmxlS2V5cyIsImlkeCIsImFycmF5VG9IYXNoIiwiZm9ybWF0RXJyb3IiLCJicmFjZXMiLCJ0b1VUQ1N0cmluZyIsImZvcm1hdFByb3BlcnR5IiwiZm9ybWF0QXJyYXkiLCJyZWR1Y2VUb1NpbmdsZVN0cmluZyIsImxpbmUiLCJwaWQiLCJ0eXBlcyIsImlzTnVsbE9yVW5kZWZpbmVkIiwiaXNTeW1ib2wiLCJpc1ByaW1pdGl2ZSIsIm1vbnRocyIsInRpbWVzdGFtcCIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJnZXREYXRlIiwiZ2V0TW9udGgiLCJvcmlnaW4iLCJrQ3VzdG9tUHJvbWlzaWZpZWRTeW1ib2wiLCJjYWxsYmFja2lmeU9uUmVqZWN0ZWQiLCJuZXdSZWFzb24iLCJwcm9taXNpZnkiLCJvcmlnaW5hbCIsInByb21pc2VSZXNvbHZlIiwicHJvbWlzZVJlamVjdCIsImNhbGxiYWNraWZ5IiwiY2FsbGJhY2tpZmllZCIsIm1heWJlQ2IiLCJyZWoiLCJmb3VuZE5hbWUiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJsb2FkZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiX19lc01vZHVsZSIsImRlZmluaXRpb24iLCJubWQiLCJwYXRocyJdLCJtYXBwaW5ncyI6Ijt5Q0FFQSxNQUFNQSxFQUFPQyxFQUViRCxFQUFLRSxPQUFTLEVBQVEsTUFFdEJGLEVBQUtHLE9BQVMsZUFDZEgsRUFBS0ksS0FBTyxFQUFRLE1BQ3BCSixFQUFLSyxVQUFZLEVBQVEsTUFDekJMLEVBQUtNLFNBQVcsRUFBUSxNQUN4Qk4sRUFBS08sU0FBVyxFQUFRLE8sNEJDUnhCLE1BQU1BLEVBQVcsRUFBUSxNQUNuQkQsRUFBVyxFQUFRLE1BQ25CRSxFQUFXLEVBQVEsTUFRekIsU0FBU0MsRUFBT0MsRUFBTUMsR0FDcEJDLEtBQUtGLEtB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LEVBQUcsR0FDbEQsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFDbkQsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFDcEQsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFFbEQsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FDakQsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFDcEQsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDakQsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FFcEQsRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFDbkQsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksRUFDbkQsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFDcEQsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FFakQsRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFDcEQsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFDbEQsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FDbkQsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFFbEQsR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFDbkQsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFDbkQsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FDbEQsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FFbEQsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FDbkQsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFDbEQsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFDcEQsR0FBSSxF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LEVBQ05LLE9BQVEsQ0FDTixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxrRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0Usa0VBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esc0VBSU5OLElBQUssQ0FDSHo5RCxJQUFLLEVBQ0wrOUQsT0FBUSxDQUNOLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0Usa0VBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLGtFQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLGtFQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsaUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0Usa0VBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Es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QUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUNuRCxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxHQUNsRCxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUNuRCxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxJQUdoRDhxRixFQUFLLENBQ1AsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FDbEQsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFDbkQsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FDbEQsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FDbEQsR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsSUFHaER0K0UsRUFBSSxDQUNOLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQ3JELEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUks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QUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUNuRCxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxJQUdoRHFyQixFQUFLLENBQ1AsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FDbEQsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFDbkQsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FDbEQsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FDbEQsR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsSUFHaERDLEVBQUssQ0FDUCxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUNyRCxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUNwRCxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxFQUNyRCxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUNwRCxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxH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QTQ0SCxFQUFvQkgsR0FBVXYzSCxLQUFLbUUsRUFBT3JGLFFBQVNxRixFQUFRQSxFQUFPckYsUUFBU3c0SCxHQUczRW56SCxFQUFPc3pILFFBQVMsRUFHVHR6SCxFQUFPckYsUUN2QmZ3NEgsRUFBb0IxNUcsRUFBS3paLElBQ3hCLElBQUk0K0YsRUFBUzUrRixHQUFVQSxFQUFPd3pILFdBQzdCLElBQU94ekgsRUFBaUIsUUFDeEIsSUFBTSxFQUVQLE9BREFtekgsRUFBb0JyOEYsRUFBRThuRSxFQUFRLENBQUV2d0YsRUFBR3V3RixJQUM1QkEsR0NMUnUwQixFQUFvQnI4RixFQUFJLENBQUNuOEIsRUFBUzg0SCxLQUNqQyxJQUFJLElBQUk5ekgsS0FBTzh6SCxFQUNYTixFQUFvQjVnSCxFQUFFa2hILEVBQVk5ekgsS0FBU3d6SCxFQUFvQjVnSCxFQUFFNVgsRUFBU2dGLElBQzVFb0IsT0FBT2tvQixlQUFldHVCLEVBQVNnRixFQUFLLENBQUV1cEIsWUFBWSxFQUFNZSxJQUFLd3BHLEVBQVc5ekgsTUNKM0V3ekgsRUFBb0J6MUcsRUFBSSxXQUN2QixHQUEwQixpQkFBZit0RCxXQUF5QixPQUFPQSxXQUMzQyxJQUNDLE9BQU9ud0UsTUFBUSxJQUFJeXVCLFNBQVMsY0FBYixHQUNkLE1BQU83bkIsR0FDUixHQUFzQixpQkFBWDRKLE9BQXFCLE9BQU9BLFFBTGpCLEdDQXhCcW5ILEVBQW9CNWdILEVBQUksQ0FBQy9TLEVBQUtZLElBQVVXLE9BQU94RixVQUFVUyxlQUFlSCxLQUFLMkQsRUFBS1ksR0NBbEYreUgsRUFBb0JPLElBQU8xekgsSUFDMUJBLEVBQU8yekgsTUFBUSxHQUNWM3pILEVBQU9mLFdBQVVlLEVBQU9mLFNBQVcsSUFDakNlLEdDQWtCbXpILEVBQW9CLE8iLCJmaWxlIjoiZXVkZ2MuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGFzbjEgPSBleHBvcnRzO1xuXG5hc24xLmJpZ251bSA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbmFzbjEuZGVmaW5lID0gcmVxdWlyZSgnLi9hc24xL2FwaScpLmRlZmluZTtcbmFzbjEuYmFzZSA9IHJlcXVpcmUoJy4vYXNuMS9iYXNlJyk7XG5hc24xLmNvbnN0YW50cyA9IHJlcXVpcmUoJy4vYXNuMS9jb25zdGFudHMnKTtcbmFzbjEuZGVjb2RlcnMgPSByZXF1aXJlKCcuL2FzbjEvZGVjb2RlcnMnKTtcbmFzbjEuZW5jb2RlcnMgPSByZXF1aXJlKCcuL2FzbjEvZW5jb2RlcnMnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgZW5jb2RlcnMgPSByZXF1aXJlKCcuL2VuY29kZXJzJyk7XG5jb25zdCBkZWNvZGVycyA9IHJlcXVpcmUoJy4vZGVjb2RlcnMnKTtcbmNvbnN0IGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuY29uc3QgYXBpID0gZXhwb3J0cztcblxuYXBpLmRlZmluZSA9IGZ1bmN0aW9uIGRlZmluZShuYW1lLCBib2R5KSB7XG4gIHJldHVybiBuZXcgRW50aXR5KG5hbWUsIGJvZHkpO1xufTtcblxuZnVuY3Rpb24gRW50aXR5KG5hbWUsIGJvZHkpIHtcbiAgdGhpcy5uYW1lID0gbmFtZTtcbiAgdGhpcy5ib2R5ID0gYm9keTtcblxuICB0aGlzLmRlY29kZXJzID0ge307XG4gIHRoaXMuZW5jb2RlcnMgPSB7fTtcbn1cblxuRW50aXR5LnByb3RvdHlwZS5fY3JlYXRlTmFtZWQgPSBmdW5jdGlvbiBjcmVhdGVOYW1lZChCYXNlKSB7XG4gIGNvbnN0IG5hbWUgPSB0aGlzLm5hbWU7XG5cbiAgZnVuY3Rpb24gR2VuZXJhdGVkKGVudGl0eSkge1xuICAgIHRoaXMuX2luaXROYW1lZChlbnRpdHksIG5hbWUpO1xuICB9XG4gIGluaGVyaXRzKEdlbmVyYXRlZCwgQmFzZSk7XG4gIEdlbmVyYXRlZC5wcm90b3R5cGUuX2luaXROYW1lZCA9IGZ1bmN0aW9uIF9pbml0TmFtZWQoZW50aXR5LCBuYW1lKSB7XG4gICAgQmFzZS5jYWxsKHRoaXMsIGVudGl0eSwgbmFtZSk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBHZW5lcmF0ZWQodGhpcyk7XG59O1xuXG5FbnRpdHkucHJvdG90eXBlLl9nZXREZWNvZGVyID0gZnVuY3Rpb24gX2dldERlY29kZXIoZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAnZGVyJztcbiAgLy8gTGF6aWx5IGNyZWF0ZSBkZWNvZGVyXG4gIGlmICghdGhpcy5kZWNvZGVycy5oYXNPd25Qcm9wZXJ0eShlbmMpKVxuICAgIHRoaXMuZGVjb2RlcnNbZW5jXSA9IHRoaXMuX2NyZWF0ZU5hbWVkKGRlY29kZXJzW2VuY10pO1xuICByZXR1cm4gdGhpcy5kZWNvZGVyc1tlbmNdO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoZGF0YSwgZW5jLCBvcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLl9nZXREZWNvZGVyKGVuYykuZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5fZ2V0RW5jb2RlciA9IGZ1bmN0aW9uIF9nZXRFbmNvZGVyKGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ2Rlcic7XG4gIC8vIExhemlseSBjcmVhdGUgZW5jb2RlclxuICBpZiAoIXRoaXMuZW5jb2RlcnMuaGFzT3duUHJvcGVydHkoZW5jKSlcbiAgICB0aGlzLmVuY29kZXJzW2VuY10gPSB0aGlzLl9jcmVhdGVOYW1lZChlbmNvZGVyc1tlbmNdKTtcbiAgcmV0dXJuIHRoaXMuZW5jb2RlcnNbZW5jXTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIGVuYywgLyogaW50ZXJuYWwgKi8gcmVwb3J0ZXIpIHtcbiAgcmV0dXJuIHRoaXMuX2dldEVuY29kZXIoZW5jKS5lbmNvZGUoZGF0YSwgcmVwb3J0ZXIpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuY29uc3QgUmVwb3J0ZXIgPSByZXF1aXJlKCcuLi9iYXNlL3JlcG9ydGVyJykuUmVwb3J0ZXI7XG5jb25zdCBCdWZmZXIgPSByZXF1aXJlKCdzYWZlci1idWZmZXInKS5CdWZmZXI7XG5cbmZ1bmN0aW9uIERlY29kZXJCdWZmZXIoYmFzZSwgb3B0aW9ucykge1xuICBSZXBvcnRlci5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiYXNlKSkge1xuICAgIHRoaXMuZXJyb3IoJ0lucHV0IG5vdCBCdWZmZXInKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLmJhc2UgPSBiYXNlO1xuICB0aGlzLm9mZnNldCA9IDA7XG4gIHRoaXMubGVuZ3RoID0gYmFzZS5sZW5ndGg7XG59XG5pbmhlcml0cyhEZWNvZGVyQnVmZmVyLCBSZXBvcnRlcik7XG5leHBvcnRzLkRlY29kZXJCdWZmZXIgPSBEZWNvZGVyQnVmZmVyO1xuXG5EZWNvZGVyQnVmZmVyLmlzRGVjb2RlckJ1ZmZlciA9IGZ1bmN0aW9uIGlzRGVjb2RlckJ1ZmZlcihkYXRhKSB7XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgRGVjb2RlckJ1ZmZlcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gT3IgYWNjZXB0IGNvbXBhdGlibGUgQVBJXG4gIGNvbnN0IGlzQ29tcGF0aWJsZSA9IHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJlxuICAgIEJ1ZmZlci5pc0J1ZmZlcihkYXRhLmJhc2UpICYmXG4gICAgZGF0YS5jb25zdHJ1Y3Rvci5uYW1lID09PSAnRGVjb2RlckJ1ZmZlcicgJiZcbiAgICB0eXBlb2YgZGF0YS5vZmZzZXQgPT09ICdudW1iZXInICYmXG4gICAgdHlwZW9mIGRhdGEubGVuZ3RoID09PSAnbnVtYmVyJyAmJlxuICAgIHR5cGVvZiBkYXRhLnNhdmUgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgZGF0YS5yZXN0b3JlID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIGRhdGEuaXNFbXB0eSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBkYXRhLnJlYWRVSW50OCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBkYXRhLnNraXAgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgZGF0YS5yYXcgPT09ICdmdW5jdGlvbic7XG5cbiAgcmV0dXJuIGlzQ29tcGF0aWJsZTtcbn07XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLnNhdmUgPSBmdW5jdGlvbiBzYXZlKCkge1xuICByZXR1cm4geyBvZmZzZXQ6IHRoaXMub2Zmc2V0LCByZXBvcnRlcjogUmVwb3J0ZXIucHJvdG90eXBlLnNhdmUuY2FsbCh0aGlzKSB9O1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUucmVzdG9yZSA9IGZ1bmN0aW9uIHJlc3RvcmUoc2F2ZSkge1xuICAvLyBSZXR1cm4gc2tpcHBlZCBkYXRhXG4gIGNvbnN0IHJlcyA9IG5ldyBEZWNvZGVyQnVmZmVyKHRoaXMuYmFzZSk7XG4gIHJlcy5vZmZzZXQgPSBzYXZlLm9mZnNldDtcbiAgcmVzLmxlbmd0aCA9IHRoaXMub2Zmc2V0O1xuXG4gIHRoaXMub2Zmc2V0ID0gc2F2ZS5vZmZzZXQ7XG4gIFJlcG9ydGVyLnByb3RvdHlwZS5yZXN0b3JlLmNhbGwodGhpcywgc2F2ZS5yZXBvcnRlcik7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiBpc0VtcHR5KCkge1xuICByZXR1cm4gdGhpcy5vZmZzZXQgPT09IHRoaXMubGVuZ3RoO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4KGZhaWwpIHtcbiAgaWYgKHRoaXMub2Zmc2V0ICsgMSA8PSB0aGlzLmxlbmd0aClcbiAgICByZXR1cm4gdGhpcy5iYXNlLnJlYWRVSW50OCh0aGlzLm9mZnNldCsrLCB0cnVlKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmVycm9yKGZhaWwgfHwgJ0RlY29kZXJCdWZmZXIgb3ZlcnJ1bicpO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuc2tpcCA9IGZ1bmN0aW9uIHNraXAoYnl0ZXMsIGZhaWwpIHtcbiAgaWYgKCEodGhpcy5vZmZzZXQgKyBieXRlcyA8PSB0aGlzLmxlbmd0aCkpXG4gICAgcmV0dXJuIHRoaXMuZXJyb3IoZmFpbCB8fCAnRGVjb2RlckJ1ZmZlciBvdmVycnVuJyk7XG5cbiAgY29uc3QgcmVzID0gbmV3IERlY29kZXJCdWZmZXIodGhpcy5iYXNlKTtcblxuICAvLyBTaGFyZSByZXBvcnRlciBzdGF0ZVxuICByZXMuX3JlcG9ydGVyU3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHJlcy5vZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgcmVzLmxlbmd0aCA9IHRoaXMub2Zmc2V0ICsgYnl0ZXM7XG4gIHRoaXMub2Zmc2V0ICs9IGJ5dGVzO1xuICByZXR1cm4gcmVzO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUucmF3ID0gZnVuY3Rpb24gcmF3KHNhdmUpIHtcbiAgcmV0dXJuIHRoaXMuYmFzZS5zbGljZShzYXZlID8gc2F2ZS5vZmZzZXQgOiB0aGlzLm9mZnNldCwgdGhpcy5sZW5ndGgpO1xufTtcblxuZnVuY3Rpb24gRW5jb2RlckJ1ZmZlcih2YWx1ZSwgcmVwb3J0ZXIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZS5tYXAoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgaWYgKCFFbmNvZGVyQnVmZmVyLmlzRW5jb2RlckJ1ZmZlcihpdGVtKSlcbiAgICAgICAgaXRlbSA9IG5ldyBFbmNvZGVyQnVmZmVyKGl0ZW0sIHJlcG9ydGVyKTtcbiAgICAgIHRoaXMubGVuZ3RoICs9IGl0ZW0ubGVuZ3RoO1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSwgdGhpcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIGlmICghKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMHhmZikpXG4gICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ25vbi1ieXRlIEVuY29kZXJCdWZmZXIgdmFsdWUnKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1Vuc3VwcG9ydGVkIHR5cGU6ICcgKyB0eXBlb2YgdmFsdWUpO1xuICB9XG59XG5leHBvcnRzLkVuY29kZXJCdWZmZXIgPSBFbmNvZGVyQnVmZmVyO1xuXG5FbmNvZGVyQnVmZmVyLmlzRW5jb2RlckJ1ZmZlciA9IGZ1bmN0aW9uIGlzRW5jb2RlckJ1ZmZlcihkYXRhKSB7XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgRW5jb2RlckJ1ZmZlcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gT3IgYWNjZXB0IGNvbXBhdGlibGUgQVBJXG4gIGNvbnN0IGlzQ29tcGF0aWJsZSA9IHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJlxuICAgIGRhdGEuY29uc3RydWN0b3IubmFtZSA9PT0gJ0VuY29kZXJCdWZmZXInICYmXG4gICAgdHlwZW9mIGRhdGEubGVuZ3RoID09PSAnbnVtYmVyJyAmJlxuICAgIHR5cGVvZiBkYXRhLmpvaW4gPT09ICdmdW5jdGlvbic7XG5cbiAgcmV0dXJuIGlzQ29tcGF0aWJsZTtcbn07XG5cbkVuY29kZXJCdWZmZXIucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBqb2luKG91dCwgb2Zmc2V0KSB7XG4gIGlmICghb3V0KVxuICAgIG91dCA9IEJ1ZmZlci5hbGxvYyh0aGlzLmxlbmd0aCk7XG4gIGlmICghb2Zmc2V0KVxuICAgIG9mZnNldCA9IDA7XG5cbiAgaWYgKHRoaXMubGVuZ3RoID09PSAwKVxuICAgIHJldHVybiBvdXQ7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICB0aGlzLnZhbHVlLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgaXRlbS5qb2luKG91dCwgb2Zmc2V0KTtcbiAgICAgIG9mZnNldCArPSBpdGVtLmxlbmd0aDtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdudW1iZXInKVxuICAgICAgb3V0W29mZnNldF0gPSB0aGlzLnZhbHVlO1xuICAgIGVsc2UgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnc3RyaW5nJylcbiAgICAgIG91dC53cml0ZSh0aGlzLnZhbHVlLCBvZmZzZXQpO1xuICAgIGVsc2UgaWYgKEJ1ZmZlci5pc0J1ZmZlcih0aGlzLnZhbHVlKSlcbiAgICAgIHRoaXMudmFsdWUuY29weShvdXQsIG9mZnNldCk7XG4gICAgb2Zmc2V0ICs9IHRoaXMubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIG91dDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJhc2UgPSBleHBvcnRzO1xuXG5iYXNlLlJlcG9ydGVyID0gcmVxdWlyZSgnLi9yZXBvcnRlcicpLlJlcG9ydGVyO1xuYmFzZS5EZWNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi9idWZmZXInKS5EZWNvZGVyQnVmZmVyO1xuYmFzZS5FbmNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi9idWZmZXInKS5FbmNvZGVyQnVmZmVyO1xuYmFzZS5Ob2RlID0gcmVxdWlyZSgnLi9ub2RlJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IFJlcG9ydGVyID0gcmVxdWlyZSgnLi4vYmFzZS9yZXBvcnRlcicpLlJlcG9ydGVyO1xuY29uc3QgRW5jb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4uL2Jhc2UvYnVmZmVyJykuRW5jb2RlckJ1ZmZlcjtcbmNvbnN0IERlY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuLi9iYXNlL2J1ZmZlcicpLkRlY29kZXJCdWZmZXI7XG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbi8vIFN1cHBvcnRlZCB0YWdzXG5jb25zdCB0YWdzID0gW1xuICAnc2VxJywgJ3NlcW9mJywgJ3NldCcsICdzZXRvZicsICdvYmppZCcsICdib29sJyxcbiAgJ2dlbnRpbWUnLCAndXRjdGltZScsICdudWxsXycsICdlbnVtJywgJ2ludCcsICdvYmpEZXNjJyxcbiAgJ2JpdHN0cicsICdibXBzdHInLCAnY2hhcnN0cicsICdnZW5zdHInLCAnZ3JhcGhzdHInLCAnaWE1c3RyJywgJ2lzbzY0NnN0cicsXG4gICdudW1zdHInLCAnb2N0c3RyJywgJ3ByaW50c3RyJywgJ3Q2MXN0cicsICd1bmlzdHInLCAndXRmOHN0cicsICd2aWRlb3N0cidcbl07XG5cbi8vIFB1YmxpYyBtZXRob2RzIGxpc3RcbmNvbnN0IG1ldGhvZHMgPSBbXG4gICdrZXknLCAnb2JqJywgJ3VzZScsICdvcHRpb25hbCcsICdleHBsaWNpdCcsICdpbXBsaWNpdCcsICdkZWYnLCAnY2hvaWNlJyxcbiAgJ2FueScsICdjb250YWlucydcbl0uY29uY2F0KHRhZ3MpO1xuXG4vLyBPdmVycmlkZWQgbWV0aG9kcyBsaXN0XG5jb25zdCBvdmVycmlkZWQgPSBbXG4gICdfcGVla1RhZycsICdfZGVjb2RlVGFnJywgJ191c2UnLFxuICAnX2RlY29kZVN0cicsICdfZGVjb2RlT2JqaWQnLCAnX2RlY29kZVRpbWUnLFxuICAnX2RlY29kZU51bGwnLCAnX2RlY29kZUludCcsICdfZGVjb2RlQm9vbCcsICdfZGVjb2RlTGlzdCcsXG5cbiAgJ19lbmNvZGVDb21wb3NpdGUnLCAnX2VuY29kZVN0cicsICdfZW5jb2RlT2JqaWQnLCAnX2VuY29kZVRpbWUnLFxuICAnX2VuY29kZU51bGwnLCAnX2VuY29kZUludCcsICdfZW5jb2RlQm9vbCdcbl07XG5cbmZ1bmN0aW9uIE5vZGUoZW5jLCBwYXJlbnQsIG5hbWUpIHtcbiAgY29uc3Qgc3RhdGUgPSB7fTtcbiAgdGhpcy5fYmFzZVN0YXRlID0gc3RhdGU7XG5cbiAgc3RhdGUubmFtZSA9IG5hbWU7XG4gIHN0YXRlLmVuYyA9IGVuYztcblxuICBzdGF0ZS5wYXJlbnQgPSBwYXJlbnQgfHwgbnVsbDtcbiAgc3RhdGUuY2hpbGRyZW4gPSBudWxsO1xuXG4gIC8vIFN0YXRlXG4gIHN0YXRlLnRhZyA9IG51bGw7XG4gIHN0YXRlLmFyZ3MgPSBudWxsO1xuICBzdGF0ZS5yZXZlcnNlQXJncyA9IG51bGw7XG4gIHN0YXRlLmNob2ljZSA9IG51bGw7XG4gIHN0YXRlLm9wdGlvbmFsID0gZmFsc2U7XG4gIHN0YXRlLmFueSA9IGZhbHNlO1xuICBzdGF0ZS5vYmogPSBmYWxzZTtcbiAgc3RhdGUudXNlID0gbnVsbDtcbiAgc3RhdGUudXNlRGVjb2RlciA9IG51bGw7XG4gIHN0YXRlLmtleSA9IG51bGw7XG4gIHN0YXRlWydkZWZhdWx0J10gPSBudWxsO1xuICBzdGF0ZS5leHBsaWNpdCA9IG51bGw7XG4gIHN0YXRlLmltcGxpY2l0ID0gbnVsbDtcbiAgc3RhdGUuY29udGFpbnMgPSBudWxsO1xuXG4gIC8vIFNob3VsZCBjcmVhdGUgbmV3IGluc3RhbmNlIG9uIGVhY2ggbWV0aG9kXG4gIGlmICghc3RhdGUucGFyZW50KSB7XG4gICAgc3RhdGUuY2hpbGRyZW4gPSBbXTtcbiAgICB0aGlzLl93cmFwKCk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gTm9kZTtcblxuY29uc3Qgc3RhdGVQcm9wcyA9IFtcbiAgJ2VuYycsICdwYXJlbnQnLCAnY2hpbGRyZW4nLCAndGFnJywgJ2FyZ3MnLCAncmV2ZXJzZUFyZ3MnLCAnY2hvaWNlJyxcbiAgJ29wdGlvbmFsJywgJ2FueScsICdvYmonLCAndXNlJywgJ2FsdGVyZWRVc2UnLCAna2V5JywgJ2RlZmF1bHQnLCAnZXhwbGljaXQnLFxuICAnaW1wbGljaXQnLCAnY29udGFpbnMnXG5dO1xuXG5Ob2RlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lKCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgY29uc3QgY3N0YXRlID0ge307XG4gIHN0YXRlUHJvcHMuZm9yRWFjaChmdW5jdGlvbihwcm9wKSB7XG4gICAgY3N0YXRlW3Byb3BdID0gc3RhdGVbcHJvcF07XG4gIH0pO1xuICBjb25zdCByZXMgPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcihjc3RhdGUucGFyZW50KTtcbiAgcmVzLl9iYXNlU3RhdGUgPSBjc3RhdGU7XG4gIHJldHVybiByZXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fd3JhcCA9IGZ1bmN0aW9uIHdyYXAoKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICBtZXRob2RzLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgdGhpc1ttZXRob2RdID0gZnVuY3Rpb24gX3dyYXBwZWRNZXRob2QoKSB7XG4gICAgICBjb25zdCBjbG9uZSA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO1xuICAgICAgc3RhdGUuY2hpbGRyZW4ucHVzaChjbG9uZSk7XG4gICAgICByZXR1cm4gY2xvbmVbbWV0aG9kXS5hcHBseShjbG9uZSwgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9LCB0aGlzKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdChib2R5KSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5wYXJlbnQgPT09IG51bGwpO1xuICBib2R5LmNhbGwodGhpcyk7XG5cbiAgLy8gRmlsdGVyIGNoaWxkcmVuXG4gIHN0YXRlLmNoaWxkcmVuID0gc3RhdGUuY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgcmV0dXJuIGNoaWxkLl9iYXNlU3RhdGUucGFyZW50ID09PSB0aGlzO1xuICB9LCB0aGlzKTtcbiAgYXNzZXJ0LmVxdWFsKHN0YXRlLmNoaWxkcmVuLmxlbmd0aCwgMSwgJ1Jvb3Qgbm9kZSBjYW4gaGF2ZSBvbmx5IG9uZSBjaGlsZCcpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX3VzZUFyZ3MgPSBmdW5jdGlvbiB1c2VBcmdzKGFyZ3MpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgLy8gRmlsdGVyIGNoaWxkcmVuIGFuZCBhcmdzXG4gIGNvbnN0IGNoaWxkcmVuID0gYXJncy5maWx0ZXIoZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGFyZyBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I7XG4gIH0sIHRoaXMpO1xuICBhcmdzID0gYXJncy5maWx0ZXIoZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuICEoYXJnIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcik7XG4gIH0sIHRoaXMpO1xuXG4gIGlmIChjaGlsZHJlbi5sZW5ndGggIT09IDApIHtcbiAgICBhc3NlcnQoc3RhdGUuY2hpbGRyZW4gPT09IG51bGwpO1xuICAgIHN0YXRlLmNoaWxkcmVuID0gY2hpbGRyZW47XG5cbiAgICAvLyBSZXBsYWNlIHBhcmVudCB0byBtYWludGFpbiBiYWNrd2FyZCBsaW5rXG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihjaGlsZCkge1xuICAgICAgY2hpbGQuX2Jhc2VTdGF0ZS5wYXJlbnQgPSB0aGlzO1xuICAgIH0sIHRoaXMpO1xuICB9XG4gIGlmIChhcmdzLmxlbmd0aCAhPT0gMCkge1xuICAgIGFzc2VydChzdGF0ZS5hcmdzID09PSBudWxsKTtcbiAgICBzdGF0ZS5hcmdzID0gYXJncztcbiAgICBzdGF0ZS5yZXZlcnNlQXJncyA9IGFyZ3MubWFwKGZ1bmN0aW9uKGFyZykge1xuICAgICAgaWYgKHR5cGVvZiBhcmcgIT09ICdvYmplY3QnIHx8IGFyZy5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0KVxuICAgICAgICByZXR1cm4gYXJnO1xuXG4gICAgICBjb25zdCByZXMgPSB7fTtcbiAgICAgIE9iamVjdC5rZXlzKGFyZykuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgaWYgKGtleSA9PSAoa2V5IHwgMCkpXG4gICAgICAgICAga2V5IHw9IDA7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gYXJnW2tleV07XG4gICAgICAgIHJlc1t2YWx1ZV0gPSBrZXk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSk7XG4gIH1cbn07XG5cbi8vXG4vLyBPdmVycmlkZWQgbWV0aG9kc1xuLy9cblxub3ZlcnJpZGVkLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gIE5vZGUucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiBfb3ZlcnJpZGVkKCkge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICAgIHRocm93IG5ldyBFcnJvcihtZXRob2QgKyAnIG5vdCBpbXBsZW1lbnRlZCBmb3IgZW5jb2Rpbmc6ICcgKyBzdGF0ZS5lbmMpO1xuICB9O1xufSk7XG5cbi8vXG4vLyBQdWJsaWMgbWV0aG9kc1xuLy9cblxudGFncy5mb3JFYWNoKGZ1bmN0aW9uKHRhZykge1xuICBOb2RlLnByb3RvdHlwZVt0YWddID0gZnVuY3Rpb24gX3RhZ01ldGhvZCgpIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgICBjb25zdCBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICAgIGFzc2VydChzdGF0ZS50YWcgPT09IG51bGwpO1xuICAgIHN0YXRlLnRhZyA9IHRhZztcblxuICAgIHRoaXMuX3VzZUFyZ3MoYXJncyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn0pO1xuXG5Ob2RlLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiB1c2UoaXRlbSkge1xuICBhc3NlcnQoaXRlbSk7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS51c2UgPT09IG51bGwpO1xuICBzdGF0ZS51c2UgPSBpdGVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUub3B0aW9uYWwgPSBmdW5jdGlvbiBvcHRpb25hbCgpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgc3RhdGUub3B0aW9uYWwgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuZGVmID0gZnVuY3Rpb24gZGVmKHZhbCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGVbJ2RlZmF1bHQnXSA9PT0gbnVsbCk7XG4gIHN0YXRlWydkZWZhdWx0J10gPSB2YWw7XG4gIHN0YXRlLm9wdGlvbmFsID0gdHJ1ZTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmV4cGxpY2l0ID0gZnVuY3Rpb24gZXhwbGljaXQobnVtKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5leHBsaWNpdCA9PT0gbnVsbCAmJiBzdGF0ZS5pbXBsaWNpdCA9PT0gbnVsbCk7XG4gIHN0YXRlLmV4cGxpY2l0ID0gbnVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuaW1wbGljaXQgPSBmdW5jdGlvbiBpbXBsaWNpdChudW0pIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLmV4cGxpY2l0ID09PSBudWxsICYmIHN0YXRlLmltcGxpY2l0ID09PSBudWxsKTtcbiAgc3RhdGUuaW1wbGljaXQgPSBudW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5vYmogPSBmdW5jdGlvbiBvYmooKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICBjb25zdCBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICBzdGF0ZS5vYmogPSB0cnVlO1xuXG4gIGlmIChhcmdzLmxlbmd0aCAhPT0gMClcbiAgICB0aGlzLl91c2VBcmdzKGFyZ3MpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUua2V5ID0gZnVuY3Rpb24ga2V5KG5ld0tleSkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUua2V5ID09PSBudWxsKTtcbiAgc3RhdGUua2V5ID0gbmV3S2V5O1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuYW55ID0gZnVuY3Rpb24gYW55KCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBzdGF0ZS5hbnkgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuY2hvaWNlID0gZnVuY3Rpb24gY2hvaWNlKG9iaikge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUuY2hvaWNlID09PSBudWxsKTtcbiAgc3RhdGUuY2hvaWNlID0gb2JqO1xuICB0aGlzLl91c2VBcmdzKE9iamVjdC5rZXlzKG9iaikubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgIHJldHVybiBvYmpba2V5XTtcbiAgfSkpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiBjb250YWlucyhpdGVtKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS51c2UgPT09IG51bGwpO1xuICBzdGF0ZS5jb250YWlucyA9IGl0ZW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vL1xuLy8gRGVjb2Rpbmdcbi8vXG5cbk5vZGUucHJvdG90eXBlLl9kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoaW5wdXQsIG9wdGlvbnMpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgLy8gRGVjb2RlIHJvb3Qgbm9kZVxuICBpZiAoc3RhdGUucGFyZW50ID09PSBudWxsKVxuICAgIHJldHVybiBpbnB1dC53cmFwUmVzdWx0KHN0YXRlLmNoaWxkcmVuWzBdLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpKTtcblxuICBsZXQgcmVzdWx0ID0gc3RhdGVbJ2RlZmF1bHQnXTtcbiAgbGV0IHByZXNlbnQgPSB0cnVlO1xuXG4gIGxldCBwcmV2S2V5ID0gbnVsbDtcbiAgaWYgKHN0YXRlLmtleSAhPT0gbnVsbClcbiAgICBwcmV2S2V5ID0gaW5wdXQuZW50ZXJLZXkoc3RhdGUua2V5KTtcblxuICAvLyBDaGVjayBpZiB0YWcgaXMgdGhlcmVcbiAgaWYgKHN0YXRlLm9wdGlvbmFsKSB7XG4gICAgbGV0IHRhZyA9IG51bGw7XG4gICAgaWYgKHN0YXRlLmV4cGxpY2l0ICE9PSBudWxsKVxuICAgICAgdGFnID0gc3RhdGUuZXhwbGljaXQ7XG4gICAgZWxzZSBpZiAoc3RhdGUuaW1wbGljaXQgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS5pbXBsaWNpdDtcbiAgICBlbHNlIGlmIChzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS50YWc7XG5cbiAgICBpZiAodGFnID09PSBudWxsICYmICFzdGF0ZS5hbnkpIHtcbiAgICAgIC8vIFRyaWFsIGFuZCBFcnJvclxuICAgICAgY29uc3Qgc2F2ZSA9IGlucHV0LnNhdmUoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChzdGF0ZS5jaG9pY2UgPT09IG51bGwpXG4gICAgICAgICAgdGhpcy5fZGVjb2RlR2VuZXJpYyhzdGF0ZS50YWcsIGlucHV0LCBvcHRpb25zKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRoaXMuX2RlY29kZUNob2ljZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICAgIHByZXNlbnQgPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBwcmVzZW50ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpbnB1dC5yZXN0b3JlKHNhdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVzZW50ID0gdGhpcy5fcGVla1RhZyhpbnB1dCwgdGFnLCBzdGF0ZS5hbnkpO1xuXG4gICAgICBpZiAoaW5wdXQuaXNFcnJvcihwcmVzZW50KSlcbiAgICAgICAgcmV0dXJuIHByZXNlbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUHVzaCBvYmplY3Qgb24gc3RhY2tcbiAgbGV0IHByZXZPYmo7XG4gIGlmIChzdGF0ZS5vYmogJiYgcHJlc2VudClcbiAgICBwcmV2T2JqID0gaW5wdXQuZW50ZXJPYmplY3QoKTtcblxuICBpZiAocHJlc2VudCkge1xuICAgIC8vIFVud3JhcCBleHBsaWNpdCB2YWx1ZXNcbiAgICBpZiAoc3RhdGUuZXhwbGljaXQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGV4cGxpY2l0ID0gdGhpcy5fZGVjb2RlVGFnKGlucHV0LCBzdGF0ZS5leHBsaWNpdCk7XG4gICAgICBpZiAoaW5wdXQuaXNFcnJvcihleHBsaWNpdCkpXG4gICAgICAgIHJldHVybiBleHBsaWNpdDtcbiAgICAgIGlucHV0ID0gZXhwbGljaXQ7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBpbnB1dC5vZmZzZXQ7XG5cbiAgICAvLyBVbndyYXAgaW1wbGljaXQgYW5kIG5vcm1hbCB2YWx1ZXNcbiAgICBpZiAoc3RhdGUudXNlID09PSBudWxsICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCkge1xuICAgICAgbGV0IHNhdmU7XG4gICAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgICBzYXZlID0gaW5wdXQuc2F2ZSgpO1xuICAgICAgY29uc3QgYm9keSA9IHRoaXMuX2RlY29kZVRhZyhcbiAgICAgICAgaW5wdXQsXG4gICAgICAgIHN0YXRlLmltcGxpY2l0ICE9PSBudWxsID8gc3RhdGUuaW1wbGljaXQgOiBzdGF0ZS50YWcsXG4gICAgICAgIHN0YXRlLmFueVxuICAgICAgKTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKGJvZHkpKVxuICAgICAgICByZXR1cm4gYm9keTtcblxuICAgICAgaWYgKHN0YXRlLmFueSlcbiAgICAgICAgcmVzdWx0ID0gaW5wdXQucmF3KHNhdmUpO1xuICAgICAgZWxzZVxuICAgICAgICBpbnB1dCA9IGJvZHk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy50cmFjayAmJiBzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICBvcHRpb25zLnRyYWNrKGlucHV0LnBhdGgoKSwgc3RhcnQsIGlucHV0Lmxlbmd0aCwgJ3RhZ2dlZCcpO1xuXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy50cmFjayAmJiBzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICBvcHRpb25zLnRyYWNrKGlucHV0LnBhdGgoKSwgaW5wdXQub2Zmc2V0LCBpbnB1dC5sZW5ndGgsICdjb250ZW50Jyk7XG5cbiAgICAvLyBTZWxlY3QgcHJvcGVyIG1ldGhvZCBmb3IgdGFnXG4gICAgaWYgKHN0YXRlLmFueSkge1xuICAgICAgLy8gbm8tb3BcbiAgICB9IGVsc2UgaWYgKHN0YXRlLmNob2ljZSA9PT0gbnVsbCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5fZGVjb2RlR2VuZXJpYyhzdGF0ZS50YWcsIGlucHV0LCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gdGhpcy5fZGVjb2RlQ2hvaWNlKGlucHV0LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBpZiAoaW5wdXQuaXNFcnJvcihyZXN1bHQpKVxuICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgIC8vIERlY29kZSBjaGlsZHJlblxuICAgIGlmICghc3RhdGUuYW55ICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCAmJiBzdGF0ZS5jaGlsZHJlbiAhPT0gbnVsbCkge1xuICAgICAgc3RhdGUuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiBkZWNvZGVDaGlsZHJlbihjaGlsZCkge1xuICAgICAgICAvLyBOT1RFOiBXZSBhcmUgaWdub3JpbmcgZXJyb3JzIGhlcmUsIHRvIGxldCBwYXJzZXIgY29udGludWUgd2l0aCBvdGhlclxuICAgICAgICAvLyBwYXJ0cyBvZiBlbmNvZGVkIGRhdGFcbiAgICAgICAgY2hpbGQuX2RlY29kZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBEZWNvZGUgY29udGFpbmVkL2VuY29kZWQgYnkgc2NoZW1hLCBvbmx5IGluIGJpdCBvciBvY3RldCBzdHJpbmdzXG4gICAgaWYgKHN0YXRlLmNvbnRhaW5zICYmIChzdGF0ZS50YWcgPT09ICdvY3RzdHInIHx8IHN0YXRlLnRhZyA9PT0gJ2JpdHN0cicpKSB7XG4gICAgICBjb25zdCBkYXRhID0gbmV3IERlY29kZXJCdWZmZXIocmVzdWx0KTtcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2dldFVzZShzdGF0ZS5jb250YWlucywgaW5wdXQuX3JlcG9ydGVyU3RhdGUub2JqKVxuICAgICAgICAuX2RlY29kZShkYXRhLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICAvLyBQb3Agb2JqZWN0XG4gIGlmIChzdGF0ZS5vYmogJiYgcHJlc2VudClcbiAgICByZXN1bHQgPSBpbnB1dC5sZWF2ZU9iamVjdChwcmV2T2JqKTtcblxuICAvLyBTZXQga2V5XG4gIGlmIChzdGF0ZS5rZXkgIT09IG51bGwgJiYgKHJlc3VsdCAhPT0gbnVsbCB8fCBwcmVzZW50ID09PSB0cnVlKSlcbiAgICBpbnB1dC5sZWF2ZUtleShwcmV2S2V5LCBzdGF0ZS5rZXksIHJlc3VsdCk7XG4gIGVsc2UgaWYgKHByZXZLZXkgIT09IG51bGwpXG4gICAgaW5wdXQuZXhpdEtleShwcmV2S2V5KTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2RlY29kZUdlbmVyaWMgPSBmdW5jdGlvbiBkZWNvZGVHZW5lcmljKHRhZywgaW5wdXQsIG9wdGlvbnMpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgaWYgKHRhZyA9PT0gJ3NlcScgfHwgdGFnID09PSAnc2V0JylcbiAgICByZXR1cm4gbnVsbDtcbiAgaWYgKHRhZyA9PT0gJ3NlcW9mJyB8fCB0YWcgPT09ICdzZXRvZicpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUxpc3QoaW5wdXQsIHRhZywgc3RhdGUuYXJnc1swXSwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZVN0cihpbnB1dCwgdGFnLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnICYmIHN0YXRlLmFyZ3MpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU9iamlkKGlucHV0LCBzdGF0ZS5hcmdzWzBdLCBzdGF0ZS5hcmdzWzFdLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVPYmppZChpbnB1dCwgbnVsbCwgbnVsbCwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnIHx8IHRhZyA9PT0gJ3V0Y3RpbWUnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVUaW1lKGlucHV0LCB0YWcsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdudWxsXycpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU51bGwoaW5wdXQsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdib29sJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlQm9vbChpbnB1dCwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iakRlc2MnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVTdHIoaW5wdXQsIHRhZywgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2ludCcgfHwgdGFnID09PSAnZW51bScpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUludChpbnB1dCwgc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzWzBdLCBvcHRpb25zKTtcblxuICBpZiAoc3RhdGUudXNlICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFVzZShzdGF0ZS51c2UsIGlucHV0Ll9yZXBvcnRlclN0YXRlLm9iailcbiAgICAgIC5fZGVjb2RlKGlucHV0LCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaW5wdXQuZXJyb3IoJ3Vua25vd24gdGFnOiAnICsgdGFnKTtcbiAgfVxufTtcblxuTm9kZS5wcm90b3R5cGUuX2dldFVzZSA9IGZ1bmN0aW9uIF9nZXRVc2UoZW50aXR5LCBvYmopIHtcblxuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgLy8gQ3JlYXRlIGFsdGVyZWQgdXNlIGRlY29kZXIgaWYgaW1wbGljaXQgaXMgc2V0XG4gIHN0YXRlLnVzZURlY29kZXIgPSB0aGlzLl91c2UoZW50aXR5LCBvYmopO1xuICBhc3NlcnQoc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLnBhcmVudCA9PT0gbnVsbCk7XG4gIHN0YXRlLnVzZURlY29kZXIgPSBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuY2hpbGRyZW5bMF07XG4gIGlmIChzdGF0ZS5pbXBsaWNpdCAhPT0gc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0KSB7XG4gICAgc3RhdGUudXNlRGVjb2RlciA9IHN0YXRlLnVzZURlY29kZXIuY2xvbmUoKTtcbiAgICBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQgPSBzdGF0ZS5pbXBsaWNpdDtcbiAgfVxuICByZXR1cm4gc3RhdGUudXNlRGVjb2Rlcjtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9kZWNvZGVDaG9pY2UgPSBmdW5jdGlvbiBkZWNvZGVDaG9pY2UoaW5wdXQsIG9wdGlvbnMpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIGxldCByZXN1bHQgPSBudWxsO1xuICBsZXQgbWF0Y2ggPSBmYWxzZTtcblxuICBPYmplY3Qua2V5cyhzdGF0ZS5jaG9pY2UpLnNvbWUoZnVuY3Rpb24oa2V5KSB7XG4gICAgY29uc3Qgc2F2ZSA9IGlucHV0LnNhdmUoKTtcbiAgICBjb25zdCBub2RlID0gc3RhdGUuY2hvaWNlW2tleV07XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gbm9kZS5fZGVjb2RlKGlucHV0LCBvcHRpb25zKTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICByZXN1bHQgPSB7IHR5cGU6IGtleSwgdmFsdWU6IHZhbHVlIH07XG4gICAgICBtYXRjaCA9IHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW5wdXQucmVzdG9yZShzYXZlKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sIHRoaXMpO1xuXG4gIGlmICghbWF0Y2gpXG4gICAgcmV0dXJuIGlucHV0LmVycm9yKCdDaG9pY2Ugbm90IG1hdGNoZWQnKTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy9cbi8vIEVuY29kaW5nXG4vL1xuXG5Ob2RlLnByb3RvdHlwZS5fY3JlYXRlRW5jb2RlckJ1ZmZlciA9IGZ1bmN0aW9uIGNyZWF0ZUVuY29kZXJCdWZmZXIoZGF0YSkge1xuICByZXR1cm4gbmV3IEVuY29kZXJCdWZmZXIoZGF0YSwgdGhpcy5yZXBvcnRlcik7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIGlmIChzdGF0ZVsnZGVmYXVsdCddICE9PSBudWxsICYmIHN0YXRlWydkZWZhdWx0J10gPT09IGRhdGEpXG4gICAgcmV0dXJuO1xuXG4gIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2VuY29kZVZhbHVlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpO1xuICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuO1xuXG4gIGlmICh0aGlzLl9za2lwRGVmYXVsdChyZXN1bHQsIHJlcG9ydGVyLCBwYXJlbnQpKVxuICAgIHJldHVybjtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVZhbHVlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgLy8gRGVjb2RlIHJvb3Qgbm9kZVxuICBpZiAoc3RhdGUucGFyZW50ID09PSBudWxsKVxuICAgIHJldHVybiBzdGF0ZS5jaGlsZHJlblswXS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyIHx8IG5ldyBSZXBvcnRlcigpKTtcblxuICBsZXQgcmVzdWx0ID0gbnVsbDtcblxuICAvLyBTZXQgcmVwb3J0ZXIgdG8gc2hhcmUgaXQgd2l0aCBhIGNoaWxkIGNsYXNzXG4gIHRoaXMucmVwb3J0ZXIgPSByZXBvcnRlcjtcblxuICAvLyBDaGVjayBpZiBkYXRhIGlzIHRoZXJlXG4gIGlmIChzdGF0ZS5vcHRpb25hbCAmJiBkYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoc3RhdGVbJ2RlZmF1bHQnXSAhPT0gbnVsbClcbiAgICAgIGRhdGEgPSBzdGF0ZVsnZGVmYXVsdCddO1xuICAgIGVsc2VcbiAgICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEVuY29kZSBjaGlsZHJlbiBmaXJzdFxuICBsZXQgY29udGVudCA9IG51bGw7XG4gIGxldCBwcmltaXRpdmUgPSBmYWxzZTtcbiAgaWYgKHN0YXRlLmFueSkge1xuICAgIC8vIEFueXRoaW5nIHRoYXQgd2FzIGdpdmVuIGlzIHRyYW5zbGF0ZWQgdG8gYnVmZmVyXG4gICAgcmVzdWx0ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhKTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5jaG9pY2UpIHtcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNvbnRhaW5zKSB7XG4gICAgY29udGVudCA9IHRoaXMuX2dldFVzZShzdGF0ZS5jb250YWlucywgcGFyZW50KS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKTtcbiAgICBwcmltaXRpdmUgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNoaWxkcmVuKSB7XG4gICAgY29udGVudCA9IHN0YXRlLmNoaWxkcmVuLm1hcChmdW5jdGlvbihjaGlsZCkge1xuICAgICAgaWYgKGNoaWxkLl9iYXNlU3RhdGUudGFnID09PSAnbnVsbF8nKVxuICAgICAgICByZXR1cm4gY2hpbGQuX2VuY29kZShudWxsLCByZXBvcnRlciwgZGF0YSk7XG5cbiAgICAgIGlmIChjaGlsZC5fYmFzZVN0YXRlLmtleSA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdDaGlsZCBzaG91bGQgaGF2ZSBhIGtleScpO1xuICAgICAgY29uc3QgcHJldktleSA9IHJlcG9ydGVyLmVudGVyS2V5KGNoaWxkLl9iYXNlU3RhdGUua2V5KTtcblxuICAgICAgaWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JylcbiAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdDaGlsZCBleHBlY3RlZCwgYnV0IGlucHV0IGlzIG5vdCBvYmplY3QnKTtcblxuICAgICAgY29uc3QgcmVzID0gY2hpbGQuX2VuY29kZShkYXRhW2NoaWxkLl9iYXNlU3RhdGUua2V5XSwgcmVwb3J0ZXIsIGRhdGEpO1xuICAgICAgcmVwb3J0ZXIubGVhdmVLZXkocHJldktleSk7XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSwgdGhpcykuZmlsdGVyKGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfSk7XG4gICAgY29udGVudCA9IHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoY29udGVudCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHN0YXRlLnRhZyA9PT0gJ3NlcW9mJyB8fCBzdGF0ZS50YWcgPT09ICdzZXRvZicpIHtcbiAgICAgIC8vIFRPRE8oaW5kdXRueSk6IHRoaXMgc2hvdWxkIGJlIHRocm93biBvbiBEU0wgbGV2ZWxcbiAgICAgIGlmICghKHN0YXRlLmFyZ3MgJiYgc3RhdGUuYXJncy5sZW5ndGggPT09IDEpKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1RvbyBtYW55IGFyZ3MgZm9yIDogJyArIHN0YXRlLnRhZyk7XG5cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSlcbiAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdzZXFvZi9zZXRvZiwgYnV0IGRhdGEgaXMgbm90IEFycmF5Jyk7XG5cbiAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy5jbG9uZSgpO1xuICAgICAgY2hpbGQuX2Jhc2VTdGF0ZS5pbXBsaWNpdCA9IG51bGw7XG4gICAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhLm1hcChmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRVc2Uoc3RhdGUuYXJnc1swXSwgZGF0YSkuX2VuY29kZShpdGVtLCByZXBvcnRlcik7XG4gICAgICB9LCBjaGlsZCkpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUudXNlICE9PSBudWxsKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLl9nZXRVc2Uoc3RhdGUudXNlLCBwYXJlbnQpLl9lbmNvZGUoZGF0YSwgcmVwb3J0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZW50ID0gdGhpcy5fZW5jb2RlUHJpbWl0aXZlKHN0YXRlLnRhZywgZGF0YSk7XG4gICAgICBwcmltaXRpdmUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVuY29kZSBkYXRhIGl0c2VsZlxuICBpZiAoIXN0YXRlLmFueSAmJiBzdGF0ZS5jaG9pY2UgPT09IG51bGwpIHtcbiAgICBjb25zdCB0YWcgPSBzdGF0ZS5pbXBsaWNpdCAhPT0gbnVsbCA/IHN0YXRlLmltcGxpY2l0IDogc3RhdGUudGFnO1xuICAgIGNvbnN0IGNscyA9IHN0YXRlLmltcGxpY2l0ID09PSBudWxsID8gJ3VuaXZlcnNhbCcgOiAnY29udGV4dCc7XG5cbiAgICBpZiAodGFnID09PSBudWxsKSB7XG4gICAgICBpZiAoc3RhdGUudXNlID09PSBudWxsKVxuICAgICAgICByZXBvcnRlci5lcnJvcignVGFnIGNvdWxkIGJlIG9taXR0ZWQgb25seSBmb3IgLnVzZSgpJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwpXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZUNvbXBvc2l0ZSh0YWcsIHByaW1pdGl2ZSwgY2xzLCBjb250ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBXcmFwIGluIGV4cGxpY2l0XG4gIGlmIChzdGF0ZS5leHBsaWNpdCAhPT0gbnVsbClcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDb21wb3NpdGUoc3RhdGUuZXhwbGljaXQsIGZhbHNlLCAnY29udGV4dCcsIHJlc3VsdCk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGVDaG9pY2UgPSBmdW5jdGlvbiBlbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgY29uc3Qgbm9kZSA9IHN0YXRlLmNob2ljZVtkYXRhLnR5cGVdO1xuICBpZiAoIW5vZGUpIHtcbiAgICBhc3NlcnQoXG4gICAgICBmYWxzZSxcbiAgICAgIGRhdGEudHlwZSArICcgbm90IGZvdW5kIGluICcgK1xuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMoc3RhdGUuY2hvaWNlKSkpO1xuICB9XG4gIHJldHVybiBub2RlLl9lbmNvZGUoZGF0YS52YWx1ZSwgcmVwb3J0ZXIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVByaW1pdGl2ZSA9IGZ1bmN0aW9uIGVuY29kZVByaW1pdGl2ZSh0YWcsIGRhdGEpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgaWYgKC9zdHIkLy50ZXN0KHRhZykpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZVN0cihkYXRhLCB0YWcpO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmppZCcgJiYgc3RhdGUuYXJncylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQoZGF0YSwgc3RhdGUucmV2ZXJzZUFyZ3NbMF0sIHN0YXRlLmFyZ3NbMV0pO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmppZCcpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZU9iamlkKGRhdGEsIG51bGwsIG51bGwpO1xuICBlbHNlIGlmICh0YWcgPT09ICdnZW50aW1lJyB8fCB0YWcgPT09ICd1dGN0aW1lJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlVGltZShkYXRhLCB0YWcpO1xuICBlbHNlIGlmICh0YWcgPT09ICdudWxsXycpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZU51bGwoKTtcbiAgZWxzZSBpZiAodGFnID09PSAnaW50JyB8fCB0YWcgPT09ICdlbnVtJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlSW50KGRhdGEsIHN0YXRlLmFyZ3MgJiYgc3RhdGUucmV2ZXJzZUFyZ3NbMF0pO1xuICBlbHNlIGlmICh0YWcgPT09ICdib29sJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlQm9vbChkYXRhKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqRGVzYycpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZVN0cihkYXRhLCB0YWcpO1xuICBlbHNlXG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB0YWc6ICcgKyB0YWcpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2lzTnVtc3RyID0gZnVuY3Rpb24gaXNOdW1zdHIoc3RyKSB7XG4gIHJldHVybiAvXlswLTkgXSokLy50ZXN0KHN0cik7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faXNQcmludHN0ciA9IGZ1bmN0aW9uIGlzUHJpbnRzdHIoc3RyKSB7XG4gIHJldHVybiAvXltBLVphLXowLTkgJygpKywtLi86PT9dKiQvLnRlc3Qoc3RyKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZnVuY3Rpb24gUmVwb3J0ZXIob3B0aW9ucykge1xuICB0aGlzLl9yZXBvcnRlclN0YXRlID0ge1xuICAgIG9iajogbnVsbCxcbiAgICBwYXRoOiBbXSxcbiAgICBvcHRpb25zOiBvcHRpb25zIHx8IHt9LFxuICAgIGVycm9yczogW11cbiAgfTtcbn1cbmV4cG9ydHMuUmVwb3J0ZXIgPSBSZXBvcnRlcjtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmlzRXJyb3IgPSBmdW5jdGlvbiBpc0Vycm9yKG9iaikge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgUmVwb3J0ZXJFcnJvcjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gc2F2ZSgpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHJldHVybiB7IG9iajogc3RhdGUub2JqLCBwYXRoTGVuOiBzdGF0ZS5wYXRoLmxlbmd0aCB9O1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLnJlc3RvcmUgPSBmdW5jdGlvbiByZXN0b3JlKGRhdGEpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHN0YXRlLm9iaiA9IGRhdGEub2JqO1xuICBzdGF0ZS5wYXRoID0gc3RhdGUucGF0aC5zbGljZSgwLCBkYXRhLnBhdGhMZW4pO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmVudGVyS2V5ID0gZnVuY3Rpb24gZW50ZXJLZXkoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9yZXBvcnRlclN0YXRlLnBhdGgucHVzaChrZXkpO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmV4aXRLZXkgPSBmdW5jdGlvbiBleGl0S2V5KGluZGV4KSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICBzdGF0ZS5wYXRoID0gc3RhdGUucGF0aC5zbGljZSgwLCBpbmRleCAtIDEpO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmxlYXZlS2V5ID0gZnVuY3Rpb24gbGVhdmVLZXkoaW5kZXgsIGtleSwgdmFsdWUpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHRoaXMuZXhpdEtleShpbmRleCk7XG4gIGlmIChzdGF0ZS5vYmogIT09IG51bGwpXG4gICAgc3RhdGUub2JqW2tleV0gPSB2YWx1ZTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5wYXRoID0gZnVuY3Rpb24gcGF0aCgpIHtcbiAgcmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5qb2luKCcvJyk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZW50ZXJPYmplY3QgPSBmdW5jdGlvbiBlbnRlck9iamVjdCgpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIGNvbnN0IHByZXYgPSBzdGF0ZS5vYmo7XG4gIHN0YXRlLm9iaiA9IHt9O1xuICByZXR1cm4gcHJldjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5sZWF2ZU9iamVjdCA9IGZ1bmN0aW9uIGxlYXZlT2JqZWN0KHByZXYpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIGNvbnN0IG5vdyA9IHN0YXRlLm9iajtcbiAgc3RhdGUub2JqID0gcHJldjtcbiAgcmV0dXJuIG5vdztcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uIGVycm9yKG1zZykge1xuICBsZXQgZXJyO1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgY29uc3QgaW5oZXJpdGVkID0gbXNnIGluc3RhbmNlb2YgUmVwb3J0ZXJFcnJvcjtcbiAgaWYgKGluaGVyaXRlZCkge1xuICAgIGVyciA9IG1zZztcbiAgfSBlbHNlIHtcbiAgICBlcnIgPSBuZXcgUmVwb3J0ZXJFcnJvcihzdGF0ZS5wYXRoLm1hcChmdW5jdGlvbihlbGVtKSB7XG4gICAgICByZXR1cm4gJ1snICsgSlNPTi5zdHJpbmdpZnkoZWxlbSkgKyAnXSc7XG4gICAgfSkuam9pbignJyksIG1zZy5tZXNzYWdlIHx8IG1zZywgbXNnLnN0YWNrKTtcbiAgfVxuXG4gIGlmICghc3RhdGUub3B0aW9ucy5wYXJ0aWFsKVxuICAgIHRocm93IGVycjtcblxuICBpZiAoIWluaGVyaXRlZClcbiAgICBzdGF0ZS5lcnJvcnMucHVzaChlcnIpO1xuXG4gIHJldHVybiBlcnI7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUud3JhcFJlc3VsdCA9IGZ1bmN0aW9uIHdyYXBSZXN1bHQocmVzdWx0KSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcbiAgaWYgKCFzdGF0ZS5vcHRpb25zLnBhcnRpYWwpXG4gICAgcmV0dXJuIHJlc3VsdDtcblxuICByZXR1cm4ge1xuICAgIHJlc3VsdDogdGhpcy5pc0Vycm9yKHJlc3VsdCkgPyBudWxsIDogcmVzdWx0LFxuICAgIGVycm9yczogc3RhdGUuZXJyb3JzXG4gIH07XG59O1xuXG5mdW5jdGlvbiBSZXBvcnRlckVycm9yKHBhdGgsIG1zZykge1xuICB0aGlzLnBhdGggPSBwYXRoO1xuICB0aGlzLnJldGhyb3cobXNnKTtcbn1cbmluaGVyaXRzKFJlcG9ydGVyRXJyb3IsIEVycm9yKTtcblxuUmVwb3J0ZXJFcnJvci5wcm90b3R5cGUucmV0aHJvdyA9IGZ1bmN0aW9uIHJldGhyb3cobXNnKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1zZyArICcgYXQ6ICcgKyAodGhpcy5wYXRoIHx8ICcoc2hhbGxvdyknKTtcbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFJlcG9ydGVyRXJyb3IpO1xuXG4gIGlmICghdGhpcy5zdGFjaykge1xuICAgIHRyeSB7XG4gICAgICAvLyBJRSBvbmx5IGFkZHMgc3RhY2sgd2hlbiB0aHJvd25cbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLm1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuc3RhY2sgPSBlLnN0YWNrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIEhlbHBlclxuZnVuY3Rpb24gcmV2ZXJzZShtYXApIHtcbiAgY29uc3QgcmVzID0ge307XG5cbiAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgIC8vIENvbnZlcnQga2V5IHRvIGludGVnZXIgaWYgaXQgaXMgc3RyaW5naWZpZWRcbiAgICBpZiAoKGtleSB8IDApID09IGtleSlcbiAgICAgIGtleSA9IGtleSB8IDA7XG5cbiAgICBjb25zdCB2YWx1ZSA9IG1hcFtrZXldO1xuICAgIHJlc1t2YWx1ZV0gPSBrZXk7XG4gIH0pO1xuXG4gIHJldHVybiByZXM7XG59XG5cbmV4cG9ydHMudGFnQ2xhc3MgPSB7XG4gIDA6ICd1bml2ZXJzYWwnLFxuICAxOiAnYXBwbGljYXRpb24nLFxuICAyOiAnY29udGV4dCcsXG4gIDM6ICdwcml2YXRlJ1xufTtcbmV4cG9ydHMudGFnQ2xhc3NCeU5hbWUgPSByZXZlcnNlKGV4cG9ydHMudGFnQ2xhc3MpO1xuXG5leHBvcnRzLnRhZyA9IHtcbiAgMHgwMDogJ2VuZCcsXG4gIDB4MDE6ICdib29sJyxcbiAgMHgwMjogJ2ludCcsXG4gIDB4MDM6ICdiaXRzdHInLFxuICAweDA0OiAnb2N0c3RyJyxcbiAgMHgwNTogJ251bGxfJyxcbiAgMHgwNjogJ29iamlkJyxcbiAgMHgwNzogJ29iakRlc2MnLFxuICAweDA4OiAnZXh0ZXJuYWwnLFxuICAweDA5OiAncmVhbCcsXG4gIDB4MGE6ICdlbnVtJyxcbiAgMHgwYjogJ2VtYmVkJyxcbiAgMHgwYzogJ3V0ZjhzdHInLFxuICAweDBkOiAncmVsYXRpdmVPaWQnLFxuICAweDEwOiAnc2VxJyxcbiAgMHgxMTogJ3NldCcsXG4gIDB4MTI6ICdudW1zdHInLFxuICAweDEzOiAncHJpbnRzdHInLFxuICAweDE0OiAndDYxc3RyJyxcbiAgMHgxNTogJ3ZpZGVvc3RyJyxcbiAgMHgxNjogJ2lhNXN0cicsXG4gIDB4MTc6ICd1dGN0aW1lJyxcbiAgMHgxODogJ2dlbnRpbWUnLFxuICAweDE5OiAnZ3JhcGhzdHInLFxuICAweDFhOiAnaXNvNjQ2c3RyJyxcbiAgMHgxYjogJ2dlbnN0cicsXG4gIDB4MWM6ICd1bmlzdHInLFxuICAweDFkOiAnY2hhcnN0cicsXG4gIDB4MWU6ICdibXBzdHInXG59O1xuZXhwb3J0cy50YWdCeU5hbWUgPSByZXZlcnNlKGV4cG9ydHMudGFnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgY29uc3RhbnRzID0gZXhwb3J0cztcblxuLy8gSGVscGVyXG5jb25zdGFudHMuX3JldmVyc2UgPSBmdW5jdGlvbiByZXZlcnNlKG1hcCkge1xuICBjb25zdCByZXMgPSB7fTtcblxuICBPYmplY3Qua2V5cyhtYXApLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgLy8gQ29udmVydCBrZXkgdG8gaW50ZWdlciBpZiBpdCBpcyBzdHJpbmdpZmllZFxuICAgIGlmICgoa2V5IHwgMCkgPT0ga2V5KVxuICAgICAga2V5ID0ga2V5IHwgMDtcblxuICAgIGNvbnN0IHZhbHVlID0gbWFwW2tleV07XG4gICAgcmVzW3ZhbHVlXSA9IGtleTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbmNvbnN0YW50cy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmNvbnN0IGJpZ251bSA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5jb25zdCBEZWNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi4vYmFzZS9idWZmZXInKS5EZWNvZGVyQnVmZmVyO1xuY29uc3QgTm9kZSA9IHJlcXVpcmUoJy4uL2Jhc2Uvbm9kZScpO1xuXG4vLyBJbXBvcnQgREVSIGNvbnN0YW50c1xuY29uc3QgZGVyID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL2RlcicpO1xuXG5mdW5jdGlvbiBERVJEZWNvZGVyKGVudGl0eSkge1xuICB0aGlzLmVuYyA9ICdkZXInO1xuICB0aGlzLm5hbWUgPSBlbnRpdHkubmFtZTtcbiAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XG5cbiAgLy8gQ29uc3RydWN0IGJhc2UgdHJlZVxuICB0aGlzLnRyZWUgPSBuZXcgREVSTm9kZSgpO1xuICB0aGlzLnRyZWUuX2luaXQoZW50aXR5LmJvZHkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBERVJEZWNvZGVyO1xuXG5ERVJEZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoZGF0YSwgb3B0aW9ucykge1xuICBpZiAoIURlY29kZXJCdWZmZXIuaXNEZWNvZGVyQnVmZmVyKGRhdGEpKSB7XG4gICAgZGF0YSA9IG5ldyBEZWNvZGVyQnVmZmVyKGRhdGEsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMudHJlZS5fZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xufTtcblxuLy8gVHJlZSBtZXRob2RzXG5cbmZ1bmN0aW9uIERFUk5vZGUocGFyZW50KSB7XG4gIE5vZGUuY2FsbCh0aGlzLCAnZGVyJywgcGFyZW50KTtcbn1cbmluaGVyaXRzKERFUk5vZGUsIE5vZGUpO1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fcGVla1RhZyA9IGZ1bmN0aW9uIHBlZWtUYWcoYnVmZmVyLCB0YWcsIGFueSkge1xuICBpZiAoYnVmZmVyLmlzRW1wdHkoKSlcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgY29uc3Qgc3RhdGUgPSBidWZmZXIuc2F2ZSgpO1xuICBjb25zdCBkZWNvZGVkVGFnID0gZGVyRGVjb2RlVGFnKGJ1ZmZlciwgJ0ZhaWxlZCB0byBwZWVrIHRhZzogXCInICsgdGFnICsgJ1wiJyk7XG4gIGlmIChidWZmZXIuaXNFcnJvcihkZWNvZGVkVGFnKSlcbiAgICByZXR1cm4gZGVjb2RlZFRhZztcblxuICBidWZmZXIucmVzdG9yZShzdGF0ZSk7XG5cbiAgcmV0dXJuIGRlY29kZWRUYWcudGFnID09PSB0YWcgfHwgZGVjb2RlZFRhZy50YWdTdHIgPT09IHRhZyB8fFxuICAgIChkZWNvZGVkVGFnLnRhZ1N0ciArICdvZicpID09PSB0YWcgfHwgYW55O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVRhZyA9IGZ1bmN0aW9uIGRlY29kZVRhZyhidWZmZXIsIHRhZywgYW55KSB7XG4gIGNvbnN0IGRlY29kZWRUYWcgPSBkZXJEZWNvZGVUYWcoYnVmZmVyLFxuICAgICdGYWlsZWQgdG8gZGVjb2RlIHRhZyBvZiBcIicgKyB0YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKGRlY29kZWRUYWcpKVxuICAgIHJldHVybiBkZWNvZGVkVGFnO1xuXG4gIGxldCBsZW4gPSBkZXJEZWNvZGVMZW4oYnVmZmVyLFxuICAgIGRlY29kZWRUYWcucHJpbWl0aXZlLFxuICAgICdGYWlsZWQgdG8gZ2V0IGxlbmd0aCBvZiBcIicgKyB0YWcgKyAnXCInKTtcblxuICAvLyBGYWlsdXJlXG4gIGlmIChidWZmZXIuaXNFcnJvcihsZW4pKVxuICAgIHJldHVybiBsZW47XG5cbiAgaWYgKCFhbnkgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnICE9PSB0YWcgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnU3RyICE9PSB0YWcgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnU3RyICsgJ29mJyAhPT0gdGFnKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRmFpbGVkIHRvIG1hdGNoIHRhZzogXCInICsgdGFnICsgJ1wiJyk7XG4gIH1cblxuICBpZiAoZGVjb2RlZFRhZy5wcmltaXRpdmUgfHwgbGVuICE9PSBudWxsKVxuICAgIHJldHVybiBidWZmZXIuc2tpcChsZW4sICdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInICsgdGFnICsgJ1wiJyk7XG5cbiAgLy8gSW5kZWZpbml0ZSBsZW5ndGguLi4gZmluZCBFTkQgdGFnXG4gIGNvbnN0IHN0YXRlID0gYnVmZmVyLnNhdmUoKTtcbiAgY29uc3QgcmVzID0gdGhpcy5fc2tpcFVudGlsRW5kKFxuICAgIGJ1ZmZlcixcbiAgICAnRmFpbGVkIHRvIHNraXAgaW5kZWZpbml0ZSBsZW5ndGggYm9keTogXCInICsgdGhpcy50YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKHJlcykpXG4gICAgcmV0dXJuIHJlcztcblxuICBsZW4gPSBidWZmZXIub2Zmc2V0IC0gc3RhdGUub2Zmc2V0O1xuICBidWZmZXIucmVzdG9yZShzdGF0ZSk7XG4gIHJldHVybiBidWZmZXIuc2tpcChsZW4sICdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInICsgdGFnICsgJ1wiJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fc2tpcFVudGlsRW5kID0gZnVuY3Rpb24gc2tpcFVudGlsRW5kKGJ1ZmZlciwgZmFpbCkge1xuICBmb3IgKDs7KSB7XG4gICAgY29uc3QgdGFnID0gZGVyRGVjb2RlVGFnKGJ1ZmZlciwgZmFpbCk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHRhZykpXG4gICAgICByZXR1cm4gdGFnO1xuICAgIGNvbnN0IGxlbiA9IGRlckRlY29kZUxlbihidWZmZXIsIHRhZy5wcmltaXRpdmUsIGZhaWwpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcihsZW4pKVxuICAgICAgcmV0dXJuIGxlbjtcblxuICAgIGxldCByZXM7XG4gICAgaWYgKHRhZy5wcmltaXRpdmUgfHwgbGVuICE9PSBudWxsKVxuICAgICAgcmVzID0gYnVmZmVyLnNraXAobGVuKTtcbiAgICBlbHNlXG4gICAgICByZXMgPSB0aGlzLl9za2lwVW50aWxFbmQoYnVmZmVyLCBmYWlsKTtcblxuICAgIC8vIEZhaWx1cmVcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSlcbiAgICAgIHJldHVybiByZXM7XG5cbiAgICBpZiAodGFnLnRhZ1N0ciA9PT0gJ2VuZCcpXG4gICAgICBicmVhaztcbiAgfVxufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZUxpc3QgPSBmdW5jdGlvbiBkZWNvZGVMaXN0KGJ1ZmZlciwgdGFnLCBkZWNvZGVyLFxuICBvcHRpb25zKSB7XG4gIGNvbnN0IHJlc3VsdCA9IFtdO1xuICB3aGlsZSAoIWJ1ZmZlci5pc0VtcHR5KCkpIHtcbiAgICBjb25zdCBwb3NzaWJsZUVuZCA9IHRoaXMuX3BlZWtUYWcoYnVmZmVyLCAnZW5kJyk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHBvc3NpYmxlRW5kKSlcbiAgICAgIHJldHVybiBwb3NzaWJsZUVuZDtcblxuICAgIGNvbnN0IHJlcyA9IGRlY29kZXIuZGVjb2RlKGJ1ZmZlciwgJ2RlcicsIG9wdGlvbnMpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcihyZXMpICYmIHBvc3NpYmxlRW5kKVxuICAgICAgYnJlYWs7XG4gICAgcmVzdWx0LnB1c2gocmVzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVN0ciA9IGZ1bmN0aW9uIGRlY29kZVN0cihidWZmZXIsIHRhZykge1xuICBpZiAodGFnID09PSAnYml0c3RyJykge1xuICAgIGNvbnN0IHVudXNlZCA9IGJ1ZmZlci5yZWFkVUludDgoKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IodW51c2VkKSlcbiAgICAgIHJldHVybiB1bnVzZWQ7XG4gICAgcmV0dXJuIHsgdW51c2VkOiB1bnVzZWQsIGRhdGE6IGJ1ZmZlci5yYXcoKSB9O1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2JtcHN0cicpIHtcbiAgICBjb25zdCByYXcgPSBidWZmZXIucmF3KCk7XG4gICAgaWYgKHJhdy5sZW5ndGggJSAyID09PSAxKVxuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IGJtcHN0ciBsZW5ndGggbWlzbWF0Y2gnKTtcblxuICAgIGxldCBzdHIgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhdy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHJhdy5yZWFkVUludDE2QkUoaSAqIDIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdudW1zdHInKSB7XG4gICAgY29uc3QgbnVtc3RyID0gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCdhc2NpaScpO1xuICAgIGlmICghdGhpcy5faXNOdW1zdHIobnVtc3RyKSkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVtc3RyIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMnKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bXN0cjtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdvY3RzdHInKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5yYXcoKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJykge1xuICAgIHJldHVybiBidWZmZXIucmF3KCk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAncHJpbnRzdHInKSB7XG4gICAgY29uc3QgcHJpbnRzdHIgPSBidWZmZXIucmF3KCkudG9TdHJpbmcoJ2FzY2lpJyk7XG4gICAgaWYgKCF0aGlzLl9pc1ByaW50c3RyKHByaW50c3RyKSkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnRzdHIgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycycpO1xuICAgIH1cbiAgICByZXR1cm4gcHJpbnRzdHI7XG4gIH0gZWxzZSBpZiAoL3N0ciQvLnRlc3QodGFnKSkge1xuICAgIHJldHVybiBidWZmZXIucmF3KCkudG9TdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogJyArIHRhZyArICcgdW5zdXBwb3J0ZWQnKTtcbiAgfVxufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZU9iamlkID0gZnVuY3Rpb24gZGVjb2RlT2JqaWQoYnVmZmVyLCB2YWx1ZXMsIHJlbGF0aXZlKSB7XG4gIGxldCByZXN1bHQ7XG4gIGNvbnN0IGlkZW50aWZpZXJzID0gW107XG4gIGxldCBpZGVudCA9IDA7XG4gIGxldCBzdWJpZGVudCA9IDA7XG4gIHdoaWxlICghYnVmZmVyLmlzRW1wdHkoKSkge1xuICAgIHN1YmlkZW50ID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgIGlkZW50IDw8PSA3O1xuICAgIGlkZW50IHw9IHN1YmlkZW50ICYgMHg3ZjtcbiAgICBpZiAoKHN1YmlkZW50ICYgMHg4MCkgPT09IDApIHtcbiAgICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnQpO1xuICAgICAgaWRlbnQgPSAwO1xuICAgIH1cbiAgfVxuICBpZiAoc3ViaWRlbnQgJiAweDgwKVxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnQpO1xuXG4gIGNvbnN0IGZpcnN0ID0gKGlkZW50aWZpZXJzWzBdIC8gNDApIHwgMDtcbiAgY29uc3Qgc2Vjb25kID0gaWRlbnRpZmllcnNbMF0gJSA0MDtcblxuICBpZiAocmVsYXRpdmUpXG4gICAgcmVzdWx0ID0gaWRlbnRpZmllcnM7XG4gIGVsc2VcbiAgICByZXN1bHQgPSBbZmlyc3QsIHNlY29uZF0uY29uY2F0KGlkZW50aWZpZXJzLnNsaWNlKDEpKTtcblxuICBpZiAodmFsdWVzKSB7XG4gICAgbGV0IHRtcCA9IHZhbHVlc1tyZXN1bHQuam9pbignICcpXTtcbiAgICBpZiAodG1wID09PSB1bmRlZmluZWQpXG4gICAgICB0bXAgPSB2YWx1ZXNbcmVzdWx0LmpvaW4oJy4nKV07XG4gICAgaWYgKHRtcCAhPT0gdW5kZWZpbmVkKVxuICAgICAgcmVzdWx0ID0gdG1wO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVUaW1lID0gZnVuY3Rpb24gZGVjb2RlVGltZShidWZmZXIsIHRhZykge1xuICBjb25zdCBzdHIgPSBidWZmZXIucmF3KCkudG9TdHJpbmcoKTtcblxuICBsZXQgeWVhcjtcbiAgbGV0IG1vbjtcbiAgbGV0IGRheTtcbiAgbGV0IGhvdXI7XG4gIGxldCBtaW47XG4gIGxldCBzZWM7XG4gIGlmICh0YWcgPT09ICdnZW50aW1lJykge1xuICAgIHllYXIgPSBzdHIuc2xpY2UoMCwgNCkgfCAwO1xuICAgIG1vbiA9IHN0ci5zbGljZSg0LCA2KSB8IDA7XG4gICAgZGF5ID0gc3RyLnNsaWNlKDYsIDgpIHwgMDtcbiAgICBob3VyID0gc3RyLnNsaWNlKDgsIDEwKSB8IDA7XG4gICAgbWluID0gc3RyLnNsaWNlKDEwLCAxMikgfCAwO1xuICAgIHNlYyA9IHN0ci5zbGljZSgxMiwgMTQpIHwgMDtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICd1dGN0aW1lJykge1xuICAgIHllYXIgPSBzdHIuc2xpY2UoMCwgMikgfCAwO1xuICAgIG1vbiA9IHN0ci5zbGljZSgyLCA0KSB8IDA7XG4gICAgZGF5ID0gc3RyLnNsaWNlKDQsIDYpIHwgMDtcbiAgICBob3VyID0gc3RyLnNsaWNlKDYsIDgpIHwgMDtcbiAgICBtaW4gPSBzdHIuc2xpY2UoOCwgMTApIHwgMDtcbiAgICBzZWMgPSBzdHIuc2xpY2UoMTAsIDEyKSB8IDA7XG4gICAgaWYgKHllYXIgPCA3MClcbiAgICAgIHllYXIgPSAyMDAwICsgeWVhcjtcbiAgICBlbHNlXG4gICAgICB5ZWFyID0gMTkwMCArIHllYXI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2RpbmcgJyArIHRhZyArICcgdGltZSBpcyBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICB9XG5cbiAgcmV0dXJuIERhdGUuVVRDKHllYXIsIG1vbiAtIDEsIGRheSwgaG91ciwgbWluLCBzZWMsIDApO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZU51bGwgPSBmdW5jdGlvbiBkZWNvZGVOdWxsKCkge1xuICByZXR1cm4gbnVsbDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVCb29sID0gZnVuY3Rpb24gZGVjb2RlQm9vbChidWZmZXIpIHtcbiAgY29uc3QgcmVzID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSlcbiAgICByZXR1cm4gcmVzO1xuICBlbHNlXG4gICAgcmV0dXJuIHJlcyAhPT0gMDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVJbnQgPSBmdW5jdGlvbiBkZWNvZGVJbnQoYnVmZmVyLCB2YWx1ZXMpIHtcbiAgLy8gQmlnaW50LCByZXR1cm4gYXMgaXQgaXMgKGFzc3VtZSBiaWcgZW5kaWFuKVxuICBjb25zdCByYXcgPSBidWZmZXIucmF3KCk7XG4gIGxldCByZXMgPSBuZXcgYmlnbnVtKHJhdyk7XG5cbiAgaWYgKHZhbHVlcylcbiAgICByZXMgPSB2YWx1ZXNbcmVzLnRvU3RyaW5nKDEwKV0gfHwgcmVzO1xuXG4gIHJldHVybiByZXM7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fdXNlID0gZnVuY3Rpb24gdXNlKGVudGl0eSwgb2JqKSB7XG4gIGlmICh0eXBlb2YgZW50aXR5ID09PSAnZnVuY3Rpb24nKVxuICAgIGVudGl0eSA9IGVudGl0eShvYmopO1xuICByZXR1cm4gZW50aXR5Ll9nZXREZWNvZGVyKCdkZXInKS50cmVlO1xufTtcblxuLy8gVXRpbGl0eSBtZXRob2RzXG5cbmZ1bmN0aW9uIGRlckRlY29kZVRhZyhidWYsIGZhaWwpIHtcbiAgbGV0IHRhZyA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gIGlmIChidWYuaXNFcnJvcih0YWcpKVxuICAgIHJldHVybiB0YWc7XG5cbiAgY29uc3QgY2xzID0gZGVyLnRhZ0NsYXNzW3RhZyA+PiA2XTtcbiAgY29uc3QgcHJpbWl0aXZlID0gKHRhZyAmIDB4MjApID09PSAwO1xuXG4gIC8vIE11bHRpLW9jdGV0IHRhZyAtIGxvYWRcbiAgaWYgKCh0YWcgJiAweDFmKSA9PT0gMHgxZikge1xuICAgIGxldCBvY3QgPSB0YWc7XG4gICAgdGFnID0gMDtcbiAgICB3aGlsZSAoKG9jdCAmIDB4ODApID09PSAweDgwKSB7XG4gICAgICBvY3QgPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICAgICAgaWYgKGJ1Zi5pc0Vycm9yKG9jdCkpXG4gICAgICAgIHJldHVybiBvY3Q7XG5cbiAgICAgIHRhZyA8PD0gNztcbiAgICAgIHRhZyB8PSBvY3QgJiAweDdmO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0YWcgJj0gMHgxZjtcbiAgfVxuICBjb25zdCB0YWdTdHIgPSBkZXIudGFnW3RhZ107XG5cbiAgcmV0dXJuIHtcbiAgICBjbHM6IGNscyxcbiAgICBwcmltaXRpdmU6IHByaW1pdGl2ZSxcbiAgICB0YWc6IHRhZyxcbiAgICB0YWdTdHI6IHRhZ1N0clxuICB9O1xufVxuXG5mdW5jdGlvbiBkZXJEZWNvZGVMZW4oYnVmLCBwcmltaXRpdmUsIGZhaWwpIHtcbiAgbGV0IGxlbiA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gIGlmIChidWYuaXNFcnJvcihsZW4pKVxuICAgIHJldHVybiBsZW47XG5cbiAgLy8gSW5kZWZpbml0ZSBmb3JtXG4gIGlmICghcHJpbWl0aXZlICYmIGxlbiA9PT0gMHg4MClcbiAgICByZXR1cm4gbnVsbDtcblxuICAvLyBEZWZpbml0ZSBmb3JtXG4gIGlmICgobGVuICYgMHg4MCkgPT09IDApIHtcbiAgICAvLyBTaG9ydCBmb3JtXG4gICAgcmV0dXJuIGxlbjtcbiAgfVxuXG4gIC8vIExvbmcgZm9ybVxuICBjb25zdCBudW0gPSBsZW4gJiAweDdmO1xuICBpZiAobnVtID4gNClcbiAgICByZXR1cm4gYnVmLmVycm9yKCdsZW5ndGggb2N0ZWN0IGlzIHRvbyBsb25nJyk7XG5cbiAgbGVuID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW07IGkrKykge1xuICAgIGxlbiA8PD0gODtcbiAgICBjb25zdCBqID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgICBpZiAoYnVmLmlzRXJyb3IoaikpXG4gICAgICByZXR1cm4gajtcbiAgICBsZW4gfD0gajtcbiAgfVxuXG4gIHJldHVybiBsZW47XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGRlY29kZXJzID0gZXhwb3J0cztcblxuZGVjb2RlcnMuZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcbmRlY29kZXJzLnBlbSA9IHJlcXVpcmUoJy4vcGVtJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbmNvbnN0IEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmVyLWJ1ZmZlcicpLkJ1ZmZlcjtcblxuY29uc3QgREVSRGVjb2RlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG5cbmZ1bmN0aW9uIFBFTURlY29kZXIoZW50aXR5KSB7XG4gIERFUkRlY29kZXIuY2FsbCh0aGlzLCBlbnRpdHkpO1xuICB0aGlzLmVuYyA9ICdwZW0nO1xufVxuaW5oZXJpdHMoUEVNRGVjb2RlciwgREVSRGVjb2Rlcik7XG5tb2R1bGUuZXhwb3J0cyA9IFBFTURlY29kZXI7XG5cblBFTURlY29kZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShkYXRhLCBvcHRpb25zKSB7XG4gIGNvbnN0IGxpbmVzID0gZGF0YS50b1N0cmluZygpLnNwbGl0KC9bXFxyXFxuXSsvZyk7XG5cbiAgY29uc3QgbGFiZWwgPSBvcHRpb25zLmxhYmVsLnRvVXBwZXJDYXNlKCk7XG5cbiAgY29uc3QgcmUgPSAvXi0tLS0tKEJFR0lOfEVORCkgKFteLV0rKS0tLS0tJC87XG4gIGxldCBzdGFydCA9IC0xO1xuICBsZXQgZW5kID0gLTE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBtYXRjaCA9IGxpbmVzW2ldLm1hdGNoKHJlKTtcbiAgICBpZiAobWF0Y2ggPT09IG51bGwpXG4gICAgICBjb250aW51ZTtcblxuICAgIGlmIChtYXRjaFsyXSAhPT0gbGFiZWwpXG4gICAgICBjb250aW51ZTtcblxuICAgIGlmIChzdGFydCA9PT0gLTEpIHtcbiAgICAgIGlmIChtYXRjaFsxXSAhPT0gJ0JFR0lOJylcbiAgICAgICAgYnJlYWs7XG4gICAgICBzdGFydCA9IGk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChtYXRjaFsxXSAhPT0gJ0VORCcpXG4gICAgICAgIGJyZWFrO1xuICAgICAgZW5kID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoc3RhcnQgPT09IC0xIHx8IGVuZCA9PT0gLTEpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdQRU0gc2VjdGlvbiBub3QgZm91bmQgZm9yOiAnICsgbGFiZWwpO1xuXG4gIGNvbnN0IGJhc2U2NCA9IGxpbmVzLnNsaWNlKHN0YXJ0ICsgMSwgZW5kKS5qb2luKCcnKTtcbiAgLy8gUmVtb3ZlIGV4Y2Vzc2l2ZSBzeW1ib2xzXG4gIGJhc2U2NC5yZXBsYWNlKC9bXmEtejAtOSsvPV0rL2dpLCAnJyk7XG5cbiAgY29uc3QgaW5wdXQgPSBCdWZmZXIuZnJvbShiYXNlNjQsICdiYXNlNjQnKTtcbiAgcmV0dXJuIERFUkRlY29kZXIucHJvdG90eXBlLmRlY29kZS5jYWxsKHRoaXMsIGlucHV0LCBvcHRpb25zKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbmNvbnN0IEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmVyLWJ1ZmZlcicpLkJ1ZmZlcjtcbmNvbnN0IE5vZGUgPSByZXF1aXJlKCcuLi9iYXNlL25vZGUnKTtcblxuLy8gSW1wb3J0IERFUiBjb25zdGFudHNcbmNvbnN0IGRlciA9IHJlcXVpcmUoJy4uL2NvbnN0YW50cy9kZXInKTtcblxuZnVuY3Rpb24gREVSRW5jb2RlcihlbnRpdHkpIHtcbiAgdGhpcy5lbmMgPSAnZGVyJztcbiAgdGhpcy5uYW1lID0gZW50aXR5Lm5hbWU7XG4gIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuXG4gIC8vIENvbnN0cnVjdCBiYXNlIHRyZWVcbiAgdGhpcy50cmVlID0gbmV3IERFUk5vZGUoKTtcbiAgdGhpcy50cmVlLl9pbml0KGVudGl0eS5ib2R5KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gREVSRW5jb2RlcjtcblxuREVSRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyKSB7XG4gIHJldHVybiB0aGlzLnRyZWUuX2VuY29kZShkYXRhLCByZXBvcnRlcikuam9pbigpO1xufTtcblxuLy8gVHJlZSBtZXRob2RzXG5cbmZ1bmN0aW9uIERFUk5vZGUocGFyZW50KSB7XG4gIE5vZGUuY2FsbCh0aGlzLCAnZGVyJywgcGFyZW50KTtcbn1cbmluaGVyaXRzKERFUk5vZGUsIE5vZGUpO1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlQ29tcG9zaXRlID0gZnVuY3Rpb24gZW5jb2RlQ29tcG9zaXRlKHRhZyxcbiAgcHJpbWl0aXZlLFxuICBjbHMsXG4gIGNvbnRlbnQpIHtcbiAgY29uc3QgZW5jb2RlZFRhZyA9IGVuY29kZVRhZyh0YWcsIHByaW1pdGl2ZSwgY2xzLCB0aGlzLnJlcG9ydGVyKTtcblxuICAvLyBTaG9ydCBmb3JtXG4gIGlmIChjb250ZW50Lmxlbmd0aCA8IDB4ODApIHtcbiAgICBjb25zdCBoZWFkZXIgPSBCdWZmZXIuYWxsb2MoMik7XG4gICAgaGVhZGVyWzBdID0gZW5jb2RlZFRhZztcbiAgICBoZWFkZXJbMV0gPSBjb250ZW50Lmxlbmd0aDtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbIGhlYWRlciwgY29udGVudCBdKTtcbiAgfVxuXG4gIC8vIExvbmcgZm9ybVxuICAvLyBDb3VudCBvY3RldHMgcmVxdWlyZWQgdG8gc3RvcmUgbGVuZ3RoXG4gIGxldCBsZW5PY3RldHMgPSAxO1xuICBmb3IgKGxldCBpID0gY29udGVudC5sZW5ndGg7IGkgPj0gMHgxMDA7IGkgPj49IDgpXG4gICAgbGVuT2N0ZXRzKys7XG5cbiAgY29uc3QgaGVhZGVyID0gQnVmZmVyLmFsbG9jKDEgKyAxICsgbGVuT2N0ZXRzKTtcbiAgaGVhZGVyWzBdID0gZW5jb2RlZFRhZztcbiAgaGVhZGVyWzFdID0gMHg4MCB8IGxlbk9jdGV0cztcblxuICBmb3IgKGxldCBpID0gMSArIGxlbk9jdGV0cywgaiA9IGNvbnRlbnQubGVuZ3RoOyBqID4gMDsgaS0tLCBqID4+PSA4KVxuICAgIGhlYWRlcltpXSA9IGogJiAweGZmO1xuXG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgaGVhZGVyLCBjb250ZW50IF0pO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZVN0ciA9IGZ1bmN0aW9uIGVuY29kZVN0cihzdHIsIHRhZykge1xuICBpZiAodGFnID09PSAnYml0c3RyJykge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgc3RyLnVudXNlZCB8IDAsIHN0ci5kYXRhIF0pO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2JtcHN0cicpIHtcbiAgICBjb25zdCBidWYgPSBCdWZmZXIuYWxsb2Moc3RyLmxlbmd0aCAqIDIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBidWYud3JpdGVVSW50MTZCRShzdHIuY2hhckNvZGVBdChpKSwgaSAqIDIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihidWYpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ251bXN0cicpIHtcbiAgICBpZiAoIXRoaXMuX2lzTnVtc3RyKHN0cikpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogbnVtc3RyIHN1cHBvcnRzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ubHkgZGlnaXRzIGFuZCBzcGFjZScpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3ByaW50c3RyJykge1xuICAgIGlmICghdGhpcy5faXNQcmludHN0cihzdHIpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IHByaW50c3RyIHN1cHBvcnRzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ubHkgbGF0aW4gdXBwZXIgYW5kIGxvd2VyIGNhc2UgbGV0dGVycywgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlnaXRzLCBzcGFjZSwgYXBvc3Ryb3BoZSwgbGVmdCBhbmQgcmlndGggJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyZW50aGVzaXMsIHBsdXMgc2lnbiwgY29tbWEsIGh5cGhlbiwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG90LCBzbGFzaCwgY29sb24sIGVxdWFsIHNpZ24sICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1ZXN0aW9uIG1hcmsnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIGlmICgvc3RyJC8udGVzdCh0YWcpKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJykge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHN0cik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ0VuY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICsgdGFnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHVuc3VwcG9ydGVkJyk7XG4gIH1cbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVPYmppZCA9IGZ1bmN0aW9uIGVuY29kZU9iamlkKGlkLCB2YWx1ZXMsIHJlbGF0aXZlKSB7XG4gIGlmICh0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKCF2YWx1ZXMpXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignc3RyaW5nIG9iamlkIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcCBmb3VuZCcpO1xuICAgIGlmICghdmFsdWVzLmhhc093blByb3BlcnR5KGlkKSlcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdvYmppZCBub3QgZm91bmQgaW4gdmFsdWVzIG1hcCcpO1xuICAgIGlkID0gdmFsdWVzW2lkXS5zcGxpdCgvW1xccy5dKy9nKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKVxuICAgICAgaWRbaV0gfD0gMDtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGlkKSkge1xuICAgIGlkID0gaWQuc2xpY2UoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKVxuICAgICAgaWRbaV0gfD0gMDtcbiAgfVxuXG4gIGlmICghQXJyYXkuaXNBcnJheShpZCkpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignb2JqaWQoKSBzaG91bGQgYmUgZWl0aGVyIGFycmF5IG9yIHN0cmluZywgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dvdDogJyArIEpTT04uc3RyaW5naWZ5KGlkKSk7XG4gIH1cblxuICBpZiAoIXJlbGF0aXZlKSB7XG4gICAgaWYgKGlkWzFdID49IDQwKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ1NlY29uZCBvYmppZCBpZGVudGlmaWVyIE9PQicpO1xuICAgIGlkLnNwbGljZSgwLCAyLCBpZFswXSAqIDQwICsgaWRbMV0pO1xuICB9XG5cbiAgLy8gQ291bnQgbnVtYmVyIG9mIG9jdGV0c1xuICBsZXQgc2l6ZSA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaWRlbnQgPSBpZFtpXTtcbiAgICBmb3IgKHNpemUrKzsgaWRlbnQgPj0gMHg4MDsgaWRlbnQgPj49IDcpXG4gICAgICBzaXplKys7XG4gIH1cblxuICBjb25zdCBvYmppZCA9IEJ1ZmZlci5hbGxvYyhzaXplKTtcbiAgbGV0IG9mZnNldCA9IG9iamlkLmxlbmd0aCAtIDE7XG4gIGZvciAobGV0IGkgPSBpZC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGxldCBpZGVudCA9IGlkW2ldO1xuICAgIG9iamlkW29mZnNldC0tXSA9IGlkZW50ICYgMHg3ZjtcbiAgICB3aGlsZSAoKGlkZW50ID4+PSA3KSA+IDApXG4gICAgICBvYmppZFtvZmZzZXQtLV0gPSAweDgwIHwgKGlkZW50ICYgMHg3Zik7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihvYmppZCk7XG59O1xuXG5mdW5jdGlvbiB0d28obnVtKSB7XG4gIGlmIChudW0gPCAxMClcbiAgICByZXR1cm4gJzAnICsgbnVtO1xuICBlbHNlXG4gICAgcmV0dXJuIG51bTtcbn1cblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZVRpbWUgPSBmdW5jdGlvbiBlbmNvZGVUaW1lKHRpbWUsIHRhZykge1xuICBsZXQgc3RyO1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUodGltZSk7XG5cbiAgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnKSB7XG4gICAgc3RyID0gW1xuICAgICAgdHdvKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNb250aCgpICsgMSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENEYXRlKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDSG91cnMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNaW51dGVzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDU2Vjb25kcygpKSxcbiAgICAgICdaJ1xuICAgIF0uam9pbignJyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAndXRjdGltZScpIHtcbiAgICBzdHIgPSBbXG4gICAgICB0d28oZGF0ZS5nZXRVVENGdWxsWWVhcigpICUgMTAwKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01vbnRoKCkgKyAxKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0RhdGUoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENIb3VycygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01pbnV0ZXMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENTZWNvbmRzKCkpLFxuICAgICAgJ1onXG4gICAgXS5qb2luKCcnKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyAnICsgdGFnICsgJyB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Jyk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fZW5jb2RlU3RyKHN0ciwgJ29jdHN0cicpO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZU51bGwgPSBmdW5jdGlvbiBlbmNvZGVOdWxsKCkge1xuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcignJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlSW50ID0gZnVuY3Rpb24gZW5jb2RlSW50KG51bSwgdmFsdWVzKSB7XG4gIGlmICh0eXBlb2YgbnVtID09PSAnc3RyaW5nJykge1xuICAgIGlmICghdmFsdWVzKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ1N0cmluZyBpbnQgb3IgZW51bSBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAnKTtcbiAgICBpZiAoIXZhbHVlcy5oYXNPd25Qcm9wZXJ0eShudW0pKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignVmFsdWVzIG1hcCBkb2VzblxcJ3QgY29udGFpbjogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShudW0pKTtcbiAgICB9XG4gICAgbnVtID0gdmFsdWVzW251bV07XG4gIH1cblxuICAvLyBCaWdudW0sIGFzc3VtZSBiaWcgZW5kaWFuXG4gIGlmICh0eXBlb2YgbnVtICE9PSAnbnVtYmVyJyAmJiAhQnVmZmVyLmlzQnVmZmVyKG51bSkpIHtcbiAgICBjb25zdCBudW1BcnJheSA9IG51bS50b0FycmF5KCk7XG4gICAgaWYgKCFudW0uc2lnbiAmJiBudW1BcnJheVswXSAmIDB4ODApIHtcbiAgICAgIG51bUFycmF5LnVuc2hpZnQoMCk7XG4gICAgfVxuICAgIG51bSA9IEJ1ZmZlci5mcm9tKG51bUFycmF5KTtcbiAgfVxuXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIobnVtKSkge1xuICAgIGxldCBzaXplID0gbnVtLmxlbmd0aDtcbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMClcbiAgICAgIHNpemUrKztcblxuICAgIGNvbnN0IG91dCA9IEJ1ZmZlci5hbGxvYyhzaXplKTtcbiAgICBudW0uY29weShvdXQpO1xuICAgIGlmIChudW0ubGVuZ3RoID09PSAwKVxuICAgICAgb3V0WzBdID0gMDtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihvdXQpO1xuICB9XG5cbiAgaWYgKG51bSA8IDB4ODApXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIobnVtKTtcblxuICBpZiAobnVtIDwgMHgxMDApXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWzAsIG51bV0pO1xuXG4gIGxldCBzaXplID0gMTtcbiAgZm9yIChsZXQgaSA9IG51bTsgaSA+PSAweDEwMDsgaSA+Pj0gOClcbiAgICBzaXplKys7XG5cbiAgY29uc3Qgb3V0ID0gbmV3IEFycmF5KHNpemUpO1xuICBmb3IgKGxldCBpID0gb3V0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgb3V0W2ldID0gbnVtICYgMHhmZjtcbiAgICBudW0gPj49IDg7XG4gIH1cbiAgaWYob3V0WzBdICYgMHg4MCkge1xuICAgIG91dC51bnNoaWZ0KDApO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoQnVmZmVyLmZyb20ob3V0KSk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlQm9vbCA9IGZ1bmN0aW9uIGVuY29kZUJvb2wodmFsdWUpIHtcbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIodmFsdWUgPyAweGZmIDogMCk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fdXNlID0gZnVuY3Rpb24gdXNlKGVudGl0eSwgb2JqKSB7XG4gIGlmICh0eXBlb2YgZW50aXR5ID09PSAnZnVuY3Rpb24nKVxuICAgIGVudGl0eSA9IGVudGl0eShvYmopO1xuICByZXR1cm4gZW50aXR5Ll9nZXRFbmNvZGVyKCdkZXInKS50cmVlO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX3NraXBEZWZhdWx0ID0gZnVuY3Rpb24gc2tpcERlZmF1bHQoZGF0YUJ1ZmZlciwgcmVwb3J0ZXIsIHBhcmVudCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgbGV0IGk7XG4gIGlmIChzdGF0ZVsnZGVmYXVsdCddID09PSBudWxsKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBkYXRhID0gZGF0YUJ1ZmZlci5qb2luKCk7XG4gIGlmIChzdGF0ZS5kZWZhdWx0QnVmZmVyID09PSB1bmRlZmluZWQpXG4gICAgc3RhdGUuZGVmYXVsdEJ1ZmZlciA9IHRoaXMuX2VuY29kZVZhbHVlKHN0YXRlWydkZWZhdWx0J10sIHJlcG9ydGVyLCBwYXJlbnQpLmpvaW4oKTtcblxuICBpZiAoZGF0YS5sZW5ndGggIT09IHN0YXRlLmRlZmF1bHRCdWZmZXIubGVuZ3RoKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBmb3IgKGk9MDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRhdGFbaV0gIT09IHN0YXRlLmRlZmF1bHRCdWZmZXJbaV0pXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBVdGlsaXR5IG1ldGhvZHNcblxuZnVuY3Rpb24gZW5jb2RlVGFnKHRhZywgcHJpbWl0aXZlLCBjbHMsIHJlcG9ydGVyKSB7XG4gIGxldCByZXM7XG5cbiAgaWYgKHRhZyA9PT0gJ3NlcW9mJylcbiAgICB0YWcgPSAnc2VxJztcbiAgZWxzZSBpZiAodGFnID09PSAnc2V0b2YnKVxuICAgIHRhZyA9ICdzZXQnO1xuXG4gIGlmIChkZXIudGFnQnlOYW1lLmhhc093blByb3BlcnR5KHRhZykpXG4gICAgcmVzID0gZGVyLnRhZ0J5TmFtZVt0YWddO1xuICBlbHNlIGlmICh0eXBlb2YgdGFnID09PSAnbnVtYmVyJyAmJiAodGFnIHwgMCkgPT09IHRhZylcbiAgICByZXMgPSB0YWc7XG4gIGVsc2VcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1Vua25vd24gdGFnOiAnICsgdGFnKTtcblxuICBpZiAocmVzID49IDB4MWYpXG4gICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdNdWx0aS1vY3RldCB0YWcgZW5jb2RpbmcgdW5zdXBwb3J0ZWQnKTtcblxuICBpZiAoIXByaW1pdGl2ZSlcbiAgICByZXMgfD0gMHgyMDtcblxuICByZXMgfD0gKGRlci50YWdDbGFzc0J5TmFtZVtjbHMgfHwgJ3VuaXZlcnNhbCddIDw8IDYpO1xuXG4gIHJldHVybiByZXM7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGVuY29kZXJzID0gZXhwb3J0cztcblxuZW5jb2RlcnMuZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcbmVuY29kZXJzLnBlbSA9IHJlcXVpcmUoJy4vcGVtJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuY29uc3QgREVSRW5jb2RlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG5cbmZ1bmN0aW9uIFBFTUVuY29kZXIoZW50aXR5KSB7XG4gIERFUkVuY29kZXIuY2FsbCh0aGlzLCBlbnRpdHkpO1xuICB0aGlzLmVuYyA9ICdwZW0nO1xufVxuaW5oZXJpdHMoUEVNRW5jb2RlciwgREVSRW5jb2Rlcik7XG5tb2R1bGUuZXhwb3J0cyA9IFBFTUVuY29kZXI7XG5cblBFTUVuY29kZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCBvcHRpb25zKSB7XG4gIGNvbnN0IGJ1ZiA9IERFUkVuY29kZXIucHJvdG90eXBlLmVuY29kZS5jYWxsKHRoaXMsIGRhdGEpO1xuXG4gIGNvbnN0IHAgPSBidWYudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICBjb25zdCBvdXQgPSBbICctLS0tLUJFR0lOICcgKyBvcHRpb25zLmxhYmVsICsgJy0tLS0tJyBdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHAubGVuZ3RoOyBpICs9IDY0KVxuICAgIG91dC5wdXNoKHAuc2xpY2UoaSwgaSArIDY0KSk7XG4gIG91dC5wdXNoKCctLS0tLUVORCAnICsgb3B0aW9ucy5sYWJlbCArICctLS0tLScpO1xuICByZXR1cm4gb3V0LmpvaW4oJ1xcbicpO1xufTtcbiIsIihmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBVdGlsc1xuICBmdW5jdGlvbiBhc3NlcnQgKHZhbCwgbXNnKSB7XG4gICAgaWYgKCF2YWwpIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbiAgfVxuXG4gIC8vIENvdWxkIHVzZSBgaW5oZXJpdHNgIG1vZHVsZSwgYnV0IGRvbid0IHdhbnQgdG8gbW92ZSBmcm9tIHNpbmdsZSBmaWxlXG4gIC8vIGFyY2hpdGVjdHVyZSB5ZXQuXG4gIGZ1bmN0aW9uIGluaGVyaXRzIChjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvcjtcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlO1xuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKCk7XG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yO1xuICB9XG5cbiAgLy8gQk5cblxuICBmdW5jdGlvbiBCTiAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAoQk4uaXNCTihudW1iZXIpKSB7XG4gICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cblxuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIHRoaXMud29yZHMgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcblxuICAgIC8vIFJlZHVjdGlvbiBjb250ZXh0XG4gICAgdGhpcy5yZWQgPSBudWxsO1xuXG4gICAgaWYgKG51bWJlciAhPT0gbnVsbCkge1xuICAgICAgaWYgKGJhc2UgPT09ICdsZScgfHwgYmFzZSA9PT0gJ2JlJykge1xuICAgICAgICBlbmRpYW4gPSBiYXNlO1xuICAgICAgICBiYXNlID0gMTA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2luaXQobnVtYmVyIHx8IDAsIGJhc2UgfHwgMTAsIGVuZGlhbiB8fCAnYmUnKTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBCTjtcbiAgfSBlbHNlIHtcbiAgICBleHBvcnRzLkJOID0gQk47XG4gIH1cblxuICBCTi5CTiA9IEJOO1xuICBCTi53b3JkU2l6ZSA9IDI2O1xuXG4gIHZhciBCdWZmZXI7XG4gIHRyeSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuQnVmZmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgQnVmZmVyID0gd2luZG93LkJ1ZmZlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICB9XG5cbiAgQk4uaXNCTiA9IGZ1bmN0aW9uIGlzQk4gKG51bSkge1xuICAgIGlmIChudW0gaW5zdGFuY2VvZiBCTikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bSAhPT0gbnVsbCAmJiB0eXBlb2YgbnVtID09PSAnb2JqZWN0JyAmJlxuICAgICAgbnVtLmNvbnN0cnVjdG9yLndvcmRTaXplID09PSBCTi53b3JkU2l6ZSAmJiBBcnJheS5pc0FycmF5KG51bS53b3Jkcyk7XG4gIH07XG5cbiAgQk4ubWF4ID0gZnVuY3Rpb24gbWF4IChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPiAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ubWluID0gZnVuY3Rpb24gbWluIChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPCAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdCAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0TnVtYmVyKG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0QXJyYXkobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAnaGV4Jykge1xuICAgICAgYmFzZSA9IDE2O1xuICAgIH1cbiAgICBhc3NlcnQoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNik7XG5cbiAgICBudW1iZXIgPSBudW1iZXIudG9TdHJpbmcoKS5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGlmIChudW1iZXJbMF0gPT09ICctJykge1xuICAgICAgc3RhcnQrKztcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA8IG51bWJlci5sZW5ndGgpIHtcbiAgICAgIGlmIChiYXNlID09PSAxNikge1xuICAgICAgICB0aGlzLl9wYXJzZUhleChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcGFyc2VCYXNlKG51bWJlciwgYmFzZSwgc3RhcnQpO1xuICAgICAgICBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICAgICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdE51bWJlciA9IGZ1bmN0aW9uIF9pbml0TnVtYmVyIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIG51bWJlciA9IC1udW1iZXI7XG4gICAgfVxuICAgIGlmIChudW1iZXIgPCAweDQwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIG51bWJlciAmIDB4M2ZmZmZmZiBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMHgxMDAwMDAwMDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZlxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG51bWJlciA8IDB4MjAwMDAwMDAwMDAwMDApOyAvLyAyIF4gNTMgKHVuc2FmZSlcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmYsXG4gICAgICAgIDFcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDM7XG4gICAgfVxuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgLy8gUmV2ZXJzZSB0aGUgYnl0ZXNcbiAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0QXJyYXkgPSBmdW5jdGlvbiBfaW5pdEFycmF5IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIC8vIFBlcmhhcHMgYSBVaW50OEFycmF5XG4gICAgYXNzZXJ0KHR5cGVvZiBudW1iZXIubGVuZ3RoID09PSAnbnVtYmVyJyk7XG4gICAgaWYgKG51bWJlci5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwobnVtYmVyLmxlbmd0aCAvIDMpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGosIHc7XG4gICAgdmFyIG9mZiA9IDA7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDEsIGogPSAwOyBpID49IDA7IGkgLT0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpIC0gMV0gPDwgOCkgfCAobnVtYmVyW2kgLSAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSArIDFdIDw8IDgpIHwgKG51bWJlcltpICsgMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXg0Qml0cyAoc3RyaW5nLCBpbmRleCkge1xuICAgIHZhciBjID0gc3RyaW5nLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgIC8vICdBJyAtICdGJ1xuICAgIGlmIChjID49IDY1ICYmIGMgPD0gNzApIHtcbiAgICAgIHJldHVybiBjIC0gNTU7XG4gICAgLy8gJ2EnIC0gJ2YnXG4gICAgfSBlbHNlIGlmIChjID49IDk3ICYmIGMgPD0gMTAyKSB7XG4gICAgICByZXR1cm4gYyAtIDg3O1xuICAgIC8vICcwJyAtICc5J1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKGMgLSA0OCkgJiAweGY7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXhCeXRlIChzdHJpbmcsIGxvd2VyQm91bmQsIGluZGV4KSB7XG4gICAgdmFyIHIgPSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXgpO1xuICAgIGlmIChpbmRleCAtIDEgPj0gbG93ZXJCb3VuZCkge1xuICAgICAgciB8PSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXggLSAxKSA8PCA0O1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VIZXggPSBmdW5jdGlvbiBfcGFyc2VIZXggKG51bWJlciwgc3RhcnQsIGVuZGlhbikge1xuICAgIC8vIENyZWF0ZSBwb3NzaWJseSBiaWdnZXIgYXJyYXkgdG8gZW5zdXJlIHRoYXQgaXQgZml0cyB0aGUgbnVtYmVyXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwoKG51bWJlci5sZW5ndGggLSBzdGFydCkgLyA2KTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIC8vIDI0LWJpdHMgY2h1bmtzXG4gICAgdmFyIG9mZiA9IDA7XG4gICAgdmFyIGogPSAwO1xuXG4gICAgdmFyIHc7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IGkgLT0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYXJzZUxlbmd0aCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICAgIGZvciAoaSA9IHBhcnNlTGVuZ3RoICUgMiA9PT0gMCA/IHN0YXJ0ICsgMSA6IHN0YXJ0OyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VCYXNlIChzdHIsIHN0YXJ0LCBlbmQsIG11bCkge1xuICAgIHZhciByID0gMDtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oc3RyLmxlbmd0aCwgZW5kKTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKSAtIDQ4O1xuXG4gICAgICByICo9IG11bDtcblxuICAgICAgLy8gJ2EnXG4gICAgICBpZiAoYyA+PSA0OSkge1xuICAgICAgICByICs9IGMgLSA0OSArIDB4YTtcblxuICAgICAgLy8gJ0EnXG4gICAgICB9IGVsc2UgaWYgKGMgPj0gMTcpIHtcbiAgICAgICAgciArPSBjIC0gMTcgKyAweGE7XG5cbiAgICAgIC8vICcwJyAtICc5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgciArPSBjO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VCYXNlID0gZnVuY3Rpb24gX3BhcnNlQmFzZSAobnVtYmVyLCBiYXNlLCBzdGFydCkge1xuICAgIC8vIEluaXRpYWxpemUgYXMgemVyb1xuICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICB0aGlzLmxlbmd0aCA9IDE7XG5cbiAgICAvLyBGaW5kIGxlbmd0aCBvZiBsaW1iIGluIGJhc2VcbiAgICBmb3IgKHZhciBsaW1iTGVuID0gMCwgbGltYlBvdyA9IDE7IGxpbWJQb3cgPD0gMHgzZmZmZmZmOyBsaW1iUG93ICo9IGJhc2UpIHtcbiAgICAgIGxpbWJMZW4rKztcbiAgICB9XG4gICAgbGltYkxlbi0tO1xuICAgIGxpbWJQb3cgPSAobGltYlBvdyAvIGJhc2UpIHwgMDtcblxuICAgIHZhciB0b3RhbCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICB2YXIgbW9kID0gdG90YWwgJSBsaW1iTGVuO1xuICAgIHZhciBlbmQgPSBNYXRoLm1pbih0b3RhbCwgdG90YWwgLSBtb2QpICsgc3RhcnQ7XG5cbiAgICB2YXIgd29yZCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpICs9IGxpbWJMZW4pIHtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBpICsgbGltYkxlbiwgYmFzZSk7XG5cbiAgICAgIHRoaXMuaW11bG4obGltYlBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZCAhPT0gMCkge1xuICAgICAgdmFyIHBvdyA9IDE7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgbnVtYmVyLmxlbmd0aCwgYmFzZSk7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBtb2Q7IGkrKykge1xuICAgICAgICBwb3cgKj0gYmFzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pbXVsbihwb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKGRlc3QpIHtcbiAgICBkZXN0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlc3Qud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgIH1cbiAgICBkZXN0Lmxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIGRlc3QubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIGRlc3QucmVkID0gdGhpcy5yZWQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUgKCkge1xuICAgIHZhciByID0gbmV3IEJOKG51bGwpO1xuICAgIHRoaXMuY29weShyKTtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2V4cGFuZCA9IGZ1bmN0aW9uIF9leHBhbmQgKHNpemUpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBzaXplKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gUmVtb3ZlIGxlYWRpbmcgYDBgIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdHJpcCA9IGZ1bmN0aW9uIHN0cmlwICgpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPiAxICYmIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9ub3JtU2lnbiA9IGZ1bmN0aW9uIF9ub3JtU2lnbiAoKSB7XG4gICAgLy8gLTAgPSAwXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICAgIHJldHVybiAodGhpcy5yZWQgPyAnPEJOLVI6ICcgOiAnPEJOOiAnKSArIHRoaXMudG9TdHJpbmcoMTYpICsgJz4nO1xuICB9O1xuXG4gIC8qXG5cbiAgdmFyIHplcm9zID0gW107XG4gIHZhciBncm91cFNpemVzID0gW107XG4gIHZhciBncm91cEJhc2VzID0gW107XG5cbiAgdmFyIHMgPSAnJztcbiAgdmFyIGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IEJOLndvcmRTaXplKSB7XG4gICAgemVyb3NbaV0gPSBzO1xuICAgIHMgKz0gJzAnO1xuICB9XG4gIGdyb3VwU2l6ZXNbMF0gPSAwO1xuICBncm91cFNpemVzWzFdID0gMDtcbiAgZ3JvdXBCYXNlc1swXSA9IDA7XG4gIGdyb3VwQmFzZXNbMV0gPSAwO1xuICB2YXIgYmFzZSA9IDIgLSAxO1xuICB3aGlsZSAoKytiYXNlIDwgMzYgKyAxKSB7XG4gICAgdmFyIGdyb3VwU2l6ZSA9IDA7XG4gICAgdmFyIGdyb3VwQmFzZSA9IDE7XG4gICAgd2hpbGUgKGdyb3VwQmFzZSA8ICgxIDw8IEJOLndvcmRTaXplKSAvIGJhc2UpIHtcbiAgICAgIGdyb3VwQmFzZSAqPSBiYXNlO1xuICAgICAgZ3JvdXBTaXplICs9IDE7XG4gICAgfVxuICAgIGdyb3VwU2l6ZXNbYmFzZV0gPSBncm91cFNpemU7XG4gICAgZ3JvdXBCYXNlc1tiYXNlXSA9IGdyb3VwQmFzZTtcbiAgfVxuXG4gICovXG5cbiAgdmFyIHplcm9zID0gW1xuICAgICcnLFxuICAgICcwJyxcbiAgICAnMDAnLFxuICAgICcwMDAnLFxuICAgICcwMDAwJyxcbiAgICAnMDAwMDAnLFxuICAgICcwMDAwMDAnLFxuICAgICcwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJ1xuICBdO1xuXG4gIHZhciBncm91cFNpemVzID0gW1xuICAgIDAsIDAsXG4gICAgMjUsIDE2LCAxMiwgMTEsIDEwLCA5LCA4LFxuICAgIDgsIDcsIDcsIDcsIDcsIDYsIDYsXG4gICAgNiwgNiwgNiwgNiwgNiwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDVcbiAgXTtcblxuICB2YXIgZ3JvdXBCYXNlcyA9IFtcbiAgICAwLCAwLFxuICAgIDMzNTU0NDMyLCA0MzA0NjcyMSwgMTY3NzcyMTYsIDQ4ODI4MTI1LCA2MDQ2NjE3NiwgNDAzNTM2MDcsIDE2Nzc3MjE2LFxuICAgIDQzMDQ2NzIxLCAxMDAwMDAwMCwgMTk0ODcxNzEsIDM1ODMxODA4LCA2Mjc0ODUxNywgNzUyOTUzNiwgMTEzOTA2MjUsXG4gICAgMTY3NzcyMTYsIDI0MTM3NTY5LCAzNDAxMjIyNCwgNDcwNDU4ODEsIDY0MDAwMDAwLCA0MDg0MTAxLCA1MTUzNjMyLFxuICAgIDY0MzYzNDMsIDc5NjI2MjQsIDk3NjU2MjUsIDExODgxMzc2LCAxNDM0ODkwNywgMTcyMTAzNjgsIDIwNTExMTQ5LFxuICAgIDI0MzAwMDAwLCAyODYyOTE1MSwgMzM1NTQ0MzIsIDM5MTM1MzkzLCA0NTQzNTQyNCwgNTI1MjE4NzUsIDYwNDY2MTc2XG4gIF07XG5cbiAgQk4ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKGJhc2UsIHBhZGRpbmcpIHtcbiAgICBiYXNlID0gYmFzZSB8fCAxMDtcbiAgICBwYWRkaW5nID0gcGFkZGluZyB8IDAgfHwgMTtcblxuICAgIHZhciBvdXQ7XG4gICAgaWYgKGJhc2UgPT09IDE2IHx8IGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBvZmYgPSAwO1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV07XG4gICAgICAgIHZhciB3b3JkID0gKCgodyA8PCBvZmYpIHwgY2FycnkpICYgMHhmZmZmZmYpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgY2FycnkgPSAodyA+Pj4gKDI0IC0gb2ZmKSkgJiAweGZmZmZmZjtcbiAgICAgICAgaWYgKGNhcnJ5ICE9PSAwIHx8IGkgIT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIG91dCA9IHplcm9zWzYgLSB3b3JkLmxlbmd0aF0gKyB3b3JkICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHdvcmQgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgb2ZmICs9IDI7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgICAgb3V0ID0gY2FycnkudG9TdHJpbmcoMTYpICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpIHtcbiAgICAgIC8vIHZhciBncm91cFNpemUgPSBNYXRoLmZsb29yKEJOLndvcmRTaXplICogTWF0aC5MTjIgLyBNYXRoLmxvZyhiYXNlKSk7XG4gICAgICB2YXIgZ3JvdXBTaXplID0gZ3JvdXBTaXplc1tiYXNlXTtcbiAgICAgIC8vIHZhciBncm91cEJhc2UgPSBNYXRoLnBvdyhiYXNlLCBncm91cFNpemUpO1xuICAgICAgdmFyIGdyb3VwQmFzZSA9IGdyb3VwQmFzZXNbYmFzZV07XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBjID0gdGhpcy5jbG9uZSgpO1xuICAgICAgYy5uZWdhdGl2ZSA9IDA7XG4gICAgICB3aGlsZSAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgdmFyIHIgPSBjLm1vZG4oZ3JvdXBCYXNlKS50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgYyA9IGMuaWRpdm4oZ3JvdXBCYXNlKTtcblxuICAgICAgICBpZiAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1tncm91cFNpemUgLSByLmxlbmd0aF0gKyByICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHIgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGFzc2VydChmYWxzZSwgJ0Jhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYnKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9OdW1iZXIgPSBmdW5jdGlvbiB0b051bWJlciAoKSB7XG4gICAgdmFyIHJldCA9IHRoaXMud29yZHNbMF07XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAyKSB7XG4gICAgICByZXQgKz0gdGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMDtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID09PSAzICYmIHRoaXMud29yZHNbMl0gPT09IDB4MDEpIHtcbiAgICAgIC8vIE5PVEU6IGF0IHRoaXMgc3RhZ2UgaXQgaXMga25vd24gdGhhdCB0aGUgdG9wIGJpdCBpcyBzZXRcbiAgICAgIHJldCArPSAweDEwMDAwMDAwMDAwMDAwICsgKHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiAyKSB7XG4gICAgICBhc3NlcnQoZmFsc2UsICdOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMnKTtcbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLm5lZ2F0aXZlICE9PSAwKSA/IC1yZXQgOiByZXQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0J1ZmZlciA9IGZ1bmN0aW9uIHRvQnVmZmVyIChlbmRpYW4sIGxlbmd0aCkge1xuICAgIGFzc2VydCh0eXBlb2YgQnVmZmVyICE9PSAndW5kZWZpbmVkJyk7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQnVmZmVyLCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiB0b0FycmF5IChlbmRpYW4sIGxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXlMaWtlID0gZnVuY3Rpb24gdG9BcnJheUxpa2UgKEFycmF5VHlwZSwgZW5kaWFuLCBsZW5ndGgpIHtcbiAgICB2YXIgYnl0ZUxlbmd0aCA9IHRoaXMuYnl0ZUxlbmd0aCgpO1xuICAgIHZhciByZXFMZW5ndGggPSBsZW5ndGggfHwgTWF0aC5tYXgoMSwgYnl0ZUxlbmd0aCk7XG4gICAgYXNzZXJ0KGJ5dGVMZW5ndGggPD0gcmVxTGVuZ3RoLCAnYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCcpO1xuICAgIGFzc2VydChyZXFMZW5ndGggPiAwLCAnUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwJyk7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gICAgdmFyIGxpdHRsZUVuZGlhbiA9IGVuZGlhbiA9PT0gJ2xlJztcbiAgICB2YXIgcmVzID0gbmV3IEFycmF5VHlwZShyZXFMZW5ndGgpO1xuXG4gICAgdmFyIGIsIGk7XG4gICAgdmFyIHEgPSB0aGlzLmNsb25lKCk7XG4gICAgaWYgKCFsaXR0bGVFbmRpYW4pIHtcbiAgICAgIC8vIEFzc3VtZSBiaWctZW5kaWFuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgcmVxTGVuZ3RoIC0gYnl0ZUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tyZXFMZW5ndGggLSBpIC0gMV0gPSBiO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbaV0gPSBiO1xuICAgICAgfVxuXG4gICAgICBmb3IgKDsgaSA8IHJlcUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBpZiAoTWF0aC5jbHozMikge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgcmV0dXJuIDMyIC0gTWF0aC5jbHozMih3KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgdmFyIHQgPSB3O1xuICAgICAgdmFyIHIgPSAwO1xuICAgICAgaWYgKHQgPj0gMHgxMDAwKSB7XG4gICAgICAgIHIgKz0gMTM7XG4gICAgICAgIHQgPj4+PSAxMztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4NDApIHtcbiAgICAgICAgciArPSA3O1xuICAgICAgICB0ID4+Pj0gNztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4OCkge1xuICAgICAgICByICs9IDQ7XG4gICAgICAgIHQgPj4+PSA0O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHgwMikge1xuICAgICAgICByICs9IDI7XG4gICAgICAgIHQgPj4+PSAyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHIgKyB0O1xuICAgIH07XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3plcm9CaXRzID0gZnVuY3Rpb24gX3plcm9CaXRzICh3KSB7XG4gICAgLy8gU2hvcnQtY3V0XG4gICAgaWYgKHcgPT09IDApIHJldHVybiAyNjtcblxuICAgIHZhciB0ID0gdztcbiAgICB2YXIgciA9IDA7XG4gICAgaWYgKCh0ICYgMHgxZmZmKSA9PT0gMCkge1xuICAgICAgciArPSAxMztcbiAgICAgIHQgPj4+PSAxMztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHg3ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNztcbiAgICAgIHQgPj4+PSA3O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweGYpID09PSAwKSB7XG4gICAgICByICs9IDQ7XG4gICAgICB0ID4+Pj0gNDtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgzKSA9PT0gMCkge1xuICAgICAgciArPSAyO1xuICAgICAgdCA+Pj49IDI7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MSkgPT09IDApIHtcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG51bWJlciBvZiB1c2VkIGJpdHMgaW4gYSBCTlxuICBCTi5wcm90b3R5cGUuYml0TGVuZ3RoID0gZnVuY3Rpb24gYml0TGVuZ3RoICgpIHtcbiAgICB2YXIgdyA9IHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXTtcbiAgICB2YXIgaGkgPSB0aGlzLl9jb3VudEJpdHModyk7XG4gICAgcmV0dXJuICh0aGlzLmxlbmd0aCAtIDEpICogMjYgKyBoaTtcbiAgfTtcblxuICBmdW5jdGlvbiB0b0JpdEFycmF5IChudW0pIHtcbiAgICB2YXIgdyA9IG5ldyBBcnJheShudW0uYml0TGVuZ3RoKCkpO1xuXG4gICAgZm9yICh2YXIgYml0ID0gMDsgYml0IDwgdy5sZW5ndGg7IGJpdCsrKSB7XG4gICAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgICB3W2JpdF0gPSAobnVtLndvcmRzW29mZl0gJiAoMSA8PCB3Yml0KSkgPj4+IHdiaXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHc7XG4gIH1cblxuICAvLyBOdW1iZXIgb2YgdHJhaWxpbmcgemVybyBiaXRzXG4gIEJOLnByb3RvdHlwZS56ZXJvQml0cyA9IGZ1bmN0aW9uIHplcm9CaXRzICgpIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIDA7XG5cbiAgICB2YXIgciA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYiA9IHRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbaV0pO1xuICAgICAgciArPSBiO1xuICAgICAgaWYgKGIgIT09IDI2KSBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmJ5dGVMZW5ndGggPSBmdW5jdGlvbiBieXRlTGVuZ3RoICgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkgLyA4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9Ud29zID0gZnVuY3Rpb24gdG9Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5hYnMoKS5pbm90bih3aWR0aCkuaWFkZG4oMSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21Ud29zID0gZnVuY3Rpb24gZnJvbVR3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMudGVzdG4od2lkdGggLSAxKSkge1xuICAgICAgcmV0dXJuIHRoaXMubm90bih3aWR0aCkuaWFkZG4oMSkuaW5lZygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uIGlzTmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZSAhPT0gMDtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5lZygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbmVnID0gZnVuY3Rpb24gaW5lZyAoKSB7XG4gICAgaWYgKCF0aGlzLmlzWmVybygpKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1b3IgPSBmdW5jdGlvbiBpdW9yIChudW0pIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gfCBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW9yID0gZnVuY3Rpb24gaW9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdW9yKG51bSk7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gb3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW9yID0gZnVuY3Rpb24gdW9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVvcih0aGlzKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1YW5kID0gZnVuY3Rpb24gaXVhbmQgKG51bSkge1xuICAgIC8vIGIgPSBtaW4tbGVuZ3RoKG51bSwgdGhpcylcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldICYgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYi5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYW5kID0gZnVuY3Rpb24gaWFuZCAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVhbmQobnVtKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIGFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhbmQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVhbmQgPSBmdW5jdGlvbiB1YW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1YW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1YW5kKHRoaXMpO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXV4b3IgPSBmdW5jdGlvbiBpdXhvciAobnVtKSB7XG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhO1xuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV0gXiBiLndvcmRzW2ldO1xuICAgIH1cblxuICAgIGlmICh0aGlzICE9PSBhKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLml4b3IgPSBmdW5jdGlvbiBpeG9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXhvcihudW0pO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24geG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXhvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXhvciA9IGZ1bmN0aW9uIHV4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXV4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXV4b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gTm90IGBgdGhpc2BgIHdpdGggYGB3aWR0aGBgIGJpdHdpZHRoXG4gIEJOLnByb3RvdHlwZS5pbm90biA9IGZ1bmN0aW9uIGlub3RuICh3aWR0aCkge1xuICAgIGFzc2VydCh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInICYmIHdpZHRoID49IDApO1xuXG4gICAgdmFyIGJ5dGVzTmVlZGVkID0gTWF0aC5jZWlsKHdpZHRoIC8gMjYpIHwgMDtcbiAgICB2YXIgYml0c0xlZnQgPSB3aWR0aCAlIDI2O1xuXG4gICAgLy8gRXh0ZW5kIHRoZSBidWZmZXIgd2l0aCBsZWFkaW5nIHplcm9lc1xuICAgIHRoaXMuX2V4cGFuZChieXRlc05lZWRlZCk7XG5cbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICBieXRlc05lZWRlZC0tO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBjb21wbGV0ZSB3b3Jkc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXNOZWVkZWQ7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgcmVzaWR1ZVxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmICgweDNmZmZmZmYgPj4gKDI2IC0gYml0c0xlZnQpKTtcbiAgICB9XG5cbiAgICAvLyBBbmQgcmVtb3ZlIGxlYWRpbmcgemVyb2VzXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubm90biA9IGZ1bmN0aW9uIG5vdG4gKHdpZHRoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bih3aWR0aCk7XG4gIH07XG5cbiAgLy8gU2V0IGBiaXRgIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc2V0biA9IGZ1bmN0aW9uIHNldG4gKGJpdCwgdmFsKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcblxuICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgdGhpcy5fZXhwYW5kKG9mZiArIDEpO1xuXG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdIHwgKDEgPDwgd2JpdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSAmIH4oMSA8PCB3Yml0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChudW0pIHtcbiAgICB2YXIgcjtcblxuICAgIC8vIG5lZ2F0aXZlICsgcG9zaXRpdmVcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG5cbiAgICAvLyBwb3NpdGl2ZSArIG5lZ2F0aXZlXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGhdID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIC8vIENvcHkgdGhlIHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgfSBlbHNlIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChudW0pIHtcbiAgICB2YXIgcmVzO1xuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDAgJiYgdGhpcy5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IHRoaXMuc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIGlmIChudW0ubmVnYXRpdmUgPT09IDAgJiYgdGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSBudW0uc3ViKHRoaXMpO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZChudW0pO1xuXG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhZGQodGhpcyk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChudW0pIHtcbiAgICAvLyB0aGlzIC0gKC1udW0pID0gdGhpcyArIG51bVxuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICB2YXIgciA9IHRoaXMuaWFkZChudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gLXRoaXMgLSBudW0gPSAtKHRoaXMgKyBudW0pXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZChudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmVcbiAgICB2YXIgY21wID0gdGhpcy5jbXAobnVtKTtcblxuICAgIC8vIE9wdGltaXphdGlvbiAtIHplcm9pZnlcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gYSA+IGJcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoY21wID4gMCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApIC0gKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIENvcHkgcmVzdCBvZiB0aGUgd29yZHNcbiAgICBpZiAoY2FycnkgPT09IDAgJiYgaSA8IGEubGVuZ3RoICYmIGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpKTtcblxuICAgIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1YihudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHNtYWxsTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICB2YXIgbGVuID0gKHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aCkgfCAwO1xuICAgIG91dC5sZW5ndGggPSBsZW47XG4gICAgbGVuID0gKGxlbiAtIDEpIHwgMDtcblxuICAgIC8vIFBlZWwgb25lIGl0ZXJhdGlvbiAoY29tcGlsZXIgY2FuJ3QgZG8gaXQsIGJlY2F1c2Ugb2YgY29kZSBjb21wbGV4aXR5KVxuICAgIHZhciBhID0gc2VsZi53b3Jkc1swXSB8IDA7XG4gICAgdmFyIGIgPSBudW0ud29yZHNbMF0gfCAwO1xuICAgIHZhciByID0gYSAqIGI7XG5cbiAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgIHZhciBjYXJyeSA9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgb3V0LndvcmRzWzBdID0gbG87XG5cbiAgICBmb3IgKHZhciBrID0gMTsgayA8IGxlbjsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGNhcnJ5ID4+PiAyNjtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gKGsgLSBqKSB8IDA7XG4gICAgICAgIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHIgPSBhICogYiArIHJ3b3JkO1xuICAgICAgICBuY2FycnkgKz0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgICAgcndvcmQgPSByICYgMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQgfCAwO1xuICAgICAgY2FycnkgPSBuY2FycnkgfCAwO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5IHwgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIC8vIFRPRE8oaW5kdXRueSk6IGl0IG1heSBiZSByZWFzb25hYmxlIHRvIG9taXQgaXQgZm9yIHVzZXJzIHdobyBkb24ndCBuZWVkXG4gIC8vIHRvIHdvcmsgd2l0aCAyNTYtYml0IG51bWJlcnMsIG90aGVyd2lzZSBpdCBnaXZlcyAyMCUgaW1wcm92ZW1lbnQgZm9yIDI1Ni1iaXRcbiAgLy8gbXVsdGlwbGljYXRpb24gKGxpa2UgZWxsaXB0aWMgc2VjcDI1NmsxKS5cbiAgdmFyIGNvbWIxME11bFRvID0gZnVuY3Rpb24gY29tYjEwTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGEgPSBzZWxmLndvcmRzO1xuICAgIHZhciBiID0gbnVtLndvcmRzO1xuICAgIHZhciBvID0gb3V0LndvcmRzO1xuICAgIHZhciBjID0gMDtcbiAgICB2YXIgbG87XG4gICAgdmFyIG1pZDtcbiAgICB2YXIgaGk7XG4gICAgdmFyIGEwID0gYVswXSB8IDA7XG4gICAgdmFyIGFsMCA9IGEwICYgMHgxZmZmO1xuICAgIHZhciBhaDAgPSBhMCA+Pj4gMTM7XG4gICAgdmFyIGExID0gYVsxXSB8IDA7XG4gICAgdmFyIGFsMSA9IGExICYgMHgxZmZmO1xuICAgIHZhciBhaDEgPSBhMSA+Pj4gMTM7XG4gICAgdmFyIGEyID0gYVsyXSB8IDA7XG4gICAgdmFyIGFsMiA9IGEyICYgMHgxZmZmO1xuICAgIHZhciBhaDIgPSBhMiA+Pj4gMTM7XG4gICAgdmFyIGEzID0gYVszXSB8IDA7XG4gICAgdmFyIGFsMyA9IGEzICYgMHgxZmZmO1xuICAgIHZhciBhaDMgPSBhMyA+Pj4gMTM7XG4gICAgdmFyIGE0ID0gYVs0XSB8IDA7XG4gICAgdmFyIGFsNCA9IGE0ICYgMHgxZmZmO1xuICAgIHZhciBhaDQgPSBhNCA+Pj4gMTM7XG4gICAgdmFyIGE1ID0gYVs1XSB8IDA7XG4gICAgdmFyIGFsNSA9IGE1ICYgMHgxZmZmO1xuICAgIHZhciBhaDUgPSBhNSA+Pj4gMTM7XG4gICAgdmFyIGE2ID0gYVs2XSB8IDA7XG4gICAgdmFyIGFsNiA9IGE2ICYgMHgxZmZmO1xuICAgIHZhciBhaDYgPSBhNiA+Pj4gMTM7XG4gICAgdmFyIGE3ID0gYVs3XSB8IDA7XG4gICAgdmFyIGFsNyA9IGE3ICYgMHgxZmZmO1xuICAgIHZhciBhaDcgPSBhNyA+Pj4gMTM7XG4gICAgdmFyIGE4ID0gYVs4XSB8IDA7XG4gICAgdmFyIGFsOCA9IGE4ICYgMHgxZmZmO1xuICAgIHZhciBhaDggPSBhOCA+Pj4gMTM7XG4gICAgdmFyIGE5ID0gYVs5XSB8IDA7XG4gICAgdmFyIGFsOSA9IGE5ICYgMHgxZmZmO1xuICAgIHZhciBhaDkgPSBhOSA+Pj4gMTM7XG4gICAgdmFyIGIwID0gYlswXSB8IDA7XG4gICAgdmFyIGJsMCA9IGIwICYgMHgxZmZmO1xuICAgIHZhciBiaDAgPSBiMCA+Pj4gMTM7XG4gICAgdmFyIGIxID0gYlsxXSB8IDA7XG4gICAgdmFyIGJsMSA9IGIxICYgMHgxZmZmO1xuICAgIHZhciBiaDEgPSBiMSA+Pj4gMTM7XG4gICAgdmFyIGIyID0gYlsyXSB8IDA7XG4gICAgdmFyIGJsMiA9IGIyICYgMHgxZmZmO1xuICAgIHZhciBiaDIgPSBiMiA+Pj4gMTM7XG4gICAgdmFyIGIzID0gYlszXSB8IDA7XG4gICAgdmFyIGJsMyA9IGIzICYgMHgxZmZmO1xuICAgIHZhciBiaDMgPSBiMyA+Pj4gMTM7XG4gICAgdmFyIGI0ID0gYls0XSB8IDA7XG4gICAgdmFyIGJsNCA9IGI0ICYgMHgxZmZmO1xuICAgIHZhciBiaDQgPSBiNCA+Pj4gMTM7XG4gICAgdmFyIGI1ID0gYls1XSB8IDA7XG4gICAgdmFyIGJsNSA9IGI1ICYgMHgxZmZmO1xuICAgIHZhciBiaDUgPSBiNSA+Pj4gMTM7XG4gICAgdmFyIGI2ID0gYls2XSB8IDA7XG4gICAgdmFyIGJsNiA9IGI2ICYgMHgxZmZmO1xuICAgIHZhciBiaDYgPSBiNiA+Pj4gMTM7XG4gICAgdmFyIGI3ID0gYls3XSB8IDA7XG4gICAgdmFyIGJsNyA9IGI3ICYgMHgxZmZmO1xuICAgIHZhciBiaDcgPSBiNyA+Pj4gMTM7XG4gICAgdmFyIGI4ID0gYls4XSB8IDA7XG4gICAgdmFyIGJsOCA9IGI4ICYgMHgxZmZmO1xuICAgIHZhciBiaDggPSBiOCA+Pj4gMTM7XG4gICAgdmFyIGI5ID0gYls5XSB8IDA7XG4gICAgdmFyIGJsOSA9IGI5ICYgMHgxZmZmO1xuICAgIHZhciBiaDkgPSBiOSA+Pj4gMTM7XG5cbiAgICBvdXQubmVnYXRpdmUgPSBzZWxmLm5lZ2F0aXZlIF4gbnVtLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSAxOTtcbiAgICAvKiBrID0gMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwwLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgwLCBiaDApO1xuICAgIHZhciB3MCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzAgPj4+IDI2KSkgfCAwO1xuICAgIHcwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwxLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgxLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMSkpIHwgMDtcbiAgICB2YXIgdzEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxID4+PiAyNikpIHwgMDtcbiAgICB3MSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDIsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgyKSkgfCAwO1xuICAgIHZhciB3MiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzIgPj4+IDI2KSkgfCAwO1xuICAgIHcyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwzLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgzLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgzKSkgfCAwO1xuICAgIHZhciB3MyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzMgPj4+IDI2KSkgfCAwO1xuICAgIHczICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw0LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg0LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNCkpIHwgMDtcbiAgICB2YXIgdzQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc0ID4+PiAyNikpIHwgMDtcbiAgICB3NCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDUsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg1KSkgfCAwO1xuICAgIHZhciB3NSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzUgPj4+IDI2KSkgfCAwO1xuICAgIHc1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw2LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg2LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg2KSkgfCAwO1xuICAgIHZhciB3NiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzYgPj4+IDI2KSkgfCAwO1xuICAgIHc2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw3LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg3LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNykpIHwgMDtcbiAgICB2YXIgdzcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc3ID4+PiAyNikpIHwgMDtcbiAgICB3NyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDgsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg4KSkgfCAwO1xuICAgIHZhciB3OCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzggPj4+IDI2KSkgfCAwO1xuICAgIHc4ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg5KSkgfCAwO1xuICAgIHZhciB3OSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzkgPj4+IDI2KSkgfCAwO1xuICAgIHc5ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgxKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwxKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgxKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMCA+Pj4gMjYpKSB8IDA7XG4gICAgdzEwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgyKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwyKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgyKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzExID4+PiAyNikpIHwgMDtcbiAgICB3MTEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwzKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDMpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDMpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDMpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMiA+Pj4gMjYpKSB8IDA7XG4gICAgdzEyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg0KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw0KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg0KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMyA+Pj4gMjYpKSB8IDA7XG4gICAgdzEzICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg1KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw1KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg1KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE0ID4+PiAyNikpIHwgMDtcbiAgICB3MTQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw2KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDYpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDYpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDYpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNSA+Pj4gMjYpKSB8IDA7XG4gICAgdzE1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg3KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw3KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg3KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNiA+Pj4gMjYpKSB8IDA7XG4gICAgdzE2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg4KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw4KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg4KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE3ID4+PiAyNikpIHwgMDtcbiAgICB3MTcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw5KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDkpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDkpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDkpO1xuICAgIHZhciB3MTggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxOCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE4ICY9IDB4M2ZmZmZmZjtcbiAgICBvWzBdID0gdzA7XG4gICAgb1sxXSA9IHcxO1xuICAgIG9bMl0gPSB3MjtcbiAgICBvWzNdID0gdzM7XG4gICAgb1s0XSA9IHc0O1xuICAgIG9bNV0gPSB3NTtcbiAgICBvWzZdID0gdzY7XG4gICAgb1s3XSA9IHc3O1xuICAgIG9bOF0gPSB3ODtcbiAgICBvWzldID0gdzk7XG4gICAgb1sxMF0gPSB3MTA7XG4gICAgb1sxMV0gPSB3MTE7XG4gICAgb1sxMl0gPSB3MTI7XG4gICAgb1sxM10gPSB3MTM7XG4gICAgb1sxNF0gPSB3MTQ7XG4gICAgb1sxNV0gPSB3MTU7XG4gICAgb1sxNl0gPSB3MTY7XG4gICAgb1sxN10gPSB3MTc7XG4gICAgb1sxOF0gPSB3MTg7XG4gICAgaWYgKGMgIT09IDApIHtcbiAgICAgIG9bMTldID0gYztcbiAgICAgIG91dC5sZW5ndGgrKztcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfTtcblxuICAvLyBQb2x5ZmlsbCBjb21iXG4gIGlmICghTWF0aC5pbXVsKSB7XG4gICAgY29tYjEwTXVsVG8gPSBzbWFsbE11bFRvO1xuICB9XG5cbiAgZnVuY3Rpb24gYmlnTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICB2YXIgaG5jYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBvdXQubGVuZ3RoIC0gMTsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgICBobmNhcnJ5ID0gMDtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gayAtIGo7XG4gICAgICAgIHZhciBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIHZhciBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgdmFyIHIgPSBhICogYjtcblxuICAgICAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKChyIC8gMHg0MDAwMDAwKSB8IDApKSB8IDA7XG4gICAgICAgIGxvID0gKGxvICsgcndvcmQpIHwgMDtcbiAgICAgICAgcndvcmQgPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArIChsbyA+Pj4gMjYpKSB8IDA7XG5cbiAgICAgICAgaG5jYXJyeSArPSBuY2FycnkgPj4+IDI2O1xuICAgICAgICBuY2FycnkgJj0gMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQ7XG4gICAgICBjYXJyeSA9IG5jYXJyeTtcbiAgICAgIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2Fycnk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICBmdW5jdGlvbiBqdW1ib011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBmZnRtID0gbmV3IEZGVE0oKTtcbiAgICByZXR1cm4gZmZ0bS5tdWxwKHNlbGYsIG51bSwgb3V0KTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5tdWxUbyA9IGZ1bmN0aW9uIG11bFRvIChudW0sIG91dCkge1xuICAgIHZhciByZXM7XG4gICAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aDtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEwICYmIG51bS5sZW5ndGggPT09IDEwKSB7XG4gICAgICByZXMgPSBjb21iMTBNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCA2Mykge1xuICAgICAgcmVzID0gc21hbGxNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCAxMDI0KSB7XG4gICAgICByZXMgPSBiaWdNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29vbGV5LVR1a2V5IGFsZ29yaXRobSBmb3IgRkZUXG4gIC8vIHNsaWdodGx5IHJldmlzaXRlZCB0byByZWx5IG9uIGxvb3BpbmcgaW5zdGVhZCBvZiByZWN1cnNpb25cblxuICBmdW5jdGlvbiBGRlRNICh4LCB5KSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICB9XG5cbiAgRkZUTS5wcm90b3R5cGUubWFrZVJCVCA9IGZ1bmN0aW9uIG1ha2VSQlQgKE4pIHtcbiAgICB2YXIgdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbCA9IEJOLnByb3RvdHlwZS5fY291bnRCaXRzKE4pIC0gMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdFtpXSA9IHRoaXMucmV2QmluKGksIGwsIE4pO1xuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYmluYXJ5LXJldmVyc2VkIHJlcHJlc2VudGF0aW9uIG9mIGB4YFxuICBGRlRNLnByb3RvdHlwZS5yZXZCaW4gPSBmdW5jdGlvbiByZXZCaW4gKHgsIGwsIE4pIHtcbiAgICBpZiAoeCA9PT0gMCB8fCB4ID09PSBOIC0gMSkgcmV0dXJuIHg7XG5cbiAgICB2YXIgcmIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICByYiB8PSAoeCAmIDEpIDw8IChsIC0gaSAtIDEpO1xuICAgICAgeCA+Pj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmI7XG4gIH07XG5cbiAgLy8gUGVyZm9ybXMgXCJ0d2VlZGxpbmdcIiBwaGFzZSwgdGhlcmVmb3JlICdlbXVsYXRpbmcnXG4gIC8vIGJlaGF2aW91ciBvZiB0aGUgcmVjdXJzaXZlIGFsZ29yaXRobVxuICBGRlRNLnByb3RvdHlwZS5wZXJtdXRlID0gZnVuY3Rpb24gcGVybXV0ZSAocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBydHdzW2ldID0gcndzW3JidFtpXV07XG4gICAgICBpdHdzW2ldID0gaXdzW3JidFtpXV07XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uIHRyYW5zZm9ybSAocndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4sIHJidCkge1xuICAgIHRoaXMucGVybXV0ZShyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKTtcblxuICAgIGZvciAodmFyIHMgPSAxOyBzIDwgTjsgcyA8PD0gMSkge1xuICAgICAgdmFyIGwgPSBzIDw8IDE7XG5cbiAgICAgIHZhciBydHdkZiA9IE1hdGguY29zKDIgKiBNYXRoLlBJIC8gbCk7XG4gICAgICB2YXIgaXR3ZGYgPSBNYXRoLnNpbigyICogTWF0aC5QSSAvIGwpO1xuXG4gICAgICBmb3IgKHZhciBwID0gMDsgcCA8IE47IHAgKz0gbCkge1xuICAgICAgICB2YXIgcnR3ZGZfID0gcnR3ZGY7XG4gICAgICAgIHZhciBpdHdkZl8gPSBpdHdkZjtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHM7IGorKykge1xuICAgICAgICAgIHZhciByZSA9IHJ0d3NbcCArIGpdO1xuICAgICAgICAgIHZhciBpZSA9IGl0d3NbcCArIGpdO1xuXG4gICAgICAgICAgdmFyIHJvID0gcnR3c1twICsgaiArIHNdO1xuICAgICAgICAgIHZhciBpbyA9IGl0d3NbcCArIGogKyBzXTtcblxuICAgICAgICAgIHZhciByeCA9IHJ0d2RmXyAqIHJvIC0gaXR3ZGZfICogaW87XG5cbiAgICAgICAgICBpbyA9IHJ0d2RmXyAqIGlvICsgaXR3ZGZfICogcm87XG4gICAgICAgICAgcm8gPSByeDtcblxuICAgICAgICAgIHJ0d3NbcCArIGpdID0gcmUgKyBybztcbiAgICAgICAgICBpdHdzW3AgKyBqXSA9IGllICsgaW87XG5cbiAgICAgICAgICBydHdzW3AgKyBqICsgc10gPSByZSAtIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGogKyBzXSA9IGllIC0gaW87XG5cbiAgICAgICAgICAvKiBqc2hpbnQgbWF4ZGVwdGggOiBmYWxzZSAqL1xuICAgICAgICAgIGlmIChqICE9PSBsKSB7XG4gICAgICAgICAgICByeCA9IHJ0d2RmICogcnR3ZGZfIC0gaXR3ZGYgKiBpdHdkZl87XG5cbiAgICAgICAgICAgIGl0d2RmXyA9IHJ0d2RmICogaXR3ZGZfICsgaXR3ZGYgKiBydHdkZl87XG4gICAgICAgICAgICBydHdkZl8gPSByeDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2IgPSBmdW5jdGlvbiBndWVzc0xlbjEzYiAobiwgbSkge1xuICAgIHZhciBOID0gTWF0aC5tYXgobSwgbikgfCAxO1xuICAgIHZhciBvZGQgPSBOICYgMTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yIChOID0gTiAvIDIgfCAwOyBOOyBOID0gTiA+Pj4gMSkge1xuICAgICAgaSsrO1xuICAgIH1cblxuICAgIHJldHVybiAxIDw8IGkgKyAxICsgb2RkO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbmp1Z2F0ZSA9IGZ1bmN0aW9uIGNvbmp1Z2F0ZSAocndzLCBpd3MsIE4pIHtcbiAgICBpZiAoTiA8PSAxKSByZXR1cm47XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB0ID0gcndzW2ldO1xuXG4gICAgICByd3NbaV0gPSByd3NbTiAtIGkgLSAxXTtcbiAgICAgIHJ3c1tOIC0gaSAtIDFdID0gdDtcblxuICAgICAgdCA9IGl3c1tpXTtcblxuICAgICAgaXdzW2ldID0gLWl3c1tOIC0gaSAtIDFdO1xuICAgICAgaXdzW04gLSBpIC0gMV0gPSAtdDtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubm9ybWFsaXplMTNiID0gZnVuY3Rpb24gbm9ybWFsaXplMTNiICh3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdyA9IE1hdGgucm91bmQod3NbMiAqIGkgKyAxXSAvIE4pICogMHgyMDAwICtcbiAgICAgICAgTWF0aC5yb3VuZCh3c1syICogaV0gLyBOKSArXG4gICAgICAgIGNhcnJ5O1xuXG4gICAgICB3c1tpXSA9IHcgJiAweDNmZmZmZmY7XG5cbiAgICAgIGlmICh3IDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhcnJ5ID0gdyAvIDB4NDAwMDAwMCB8IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHdzO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbnZlcnQxM2IgPSBmdW5jdGlvbiBjb252ZXJ0MTNiICh3cywgbGVuLCByd3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNhcnJ5ID0gY2FycnkgKyAod3NbaV0gfCAwKTtcblxuICAgICAgcndzWzIgKiBpXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICAgIHJ3c1syICogaSArIDFdID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgIH1cblxuICAgIC8vIFBhZCB3aXRoIHplcm9lc1xuICAgIGZvciAoaSA9IDIgKiBsZW47IGkgPCBOOyArK2kpIHtcbiAgICAgIHJ3c1tpXSA9IDA7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAwKTtcbiAgICBhc3NlcnQoKGNhcnJ5ICYgfjB4MWZmZikgPT09IDApO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnN0dWIgPSBmdW5jdGlvbiBzdHViIChOKSB7XG4gICAgdmFyIHBoID0gbmV3IEFycmF5KE4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBwaFtpXSA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBoO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm11bHAgPSBmdW5jdGlvbiBtdWxwICh4LCB5LCBvdXQpIHtcbiAgICB2YXIgTiA9IDIgKiB0aGlzLmd1ZXNzTGVuMTNiKHgubGVuZ3RoLCB5Lmxlbmd0aCk7XG5cbiAgICB2YXIgcmJ0ID0gdGhpcy5tYWtlUkJUKE4pO1xuXG4gICAgdmFyIF8gPSB0aGlzLnN0dWIoTik7XG5cbiAgICB2YXIgcndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciByd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBpd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIG5yd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5yd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBuaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBybXdzID0gb3V0LndvcmRzO1xuICAgIHJtd3MubGVuZ3RoID0gTjtcblxuICAgIHRoaXMuY29udmVydDEzYih4LndvcmRzLCB4Lmxlbmd0aCwgcndzLCBOKTtcbiAgICB0aGlzLmNvbnZlcnQxM2IoeS53b3JkcywgeS5sZW5ndGgsIG5yd3MsIE4pO1xuXG4gICAgdGhpcy50cmFuc2Zvcm0ocndzLCBfLCByd3N0LCBpd3N0LCBOLCByYnQpO1xuICAgIHRoaXMudHJhbnNmb3JtKG5yd3MsIF8sIG5yd3N0LCBuaXdzdCwgTiwgcmJ0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB2YXIgcnggPSByd3N0W2ldICogbnJ3c3RbaV0gLSBpd3N0W2ldICogbml3c3RbaV07XG4gICAgICBpd3N0W2ldID0gcndzdFtpXSAqIG5pd3N0W2ldICsgaXdzdFtpXSAqIG5yd3N0W2ldO1xuICAgICAgcndzdFtpXSA9IHJ4O1xuICAgIH1cblxuICAgIHRoaXMuY29uanVnYXRlKHJ3c3QsIGl3c3QsIE4pO1xuICAgIHRoaXMudHJhbnNmb3JtKHJ3c3QsIGl3c3QsIHJtd3MsIF8sIE4sIHJidCk7XG4gICAgdGhpcy5jb25qdWdhdGUocm13cywgXywgTik7XG4gICAgdGhpcy5ub3JtYWxpemUxM2Iocm13cywgTik7XG5cbiAgICBvdXQubmVnYXRpdmUgPSB4Lm5lZ2F0aXZlIF4geS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0geC5sZW5ndGggKyB5Lmxlbmd0aDtcbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgYHRoaXNgIGJ5IGBudW1gXG4gIEJOLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRoaXMubXVsVG8obnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGVtcGxveWluZyBGRlRcbiAgQk4ucHJvdG90eXBlLm11bGYgPSBmdW5jdGlvbiBtdWxmIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBNdWx0aXBsaWNhdGlvblxuICBCTi5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkubXVsVG8obnVtLCB0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW11bG4gPSBmdW5jdGlvbiBpbXVsbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcblxuICAgIC8vIENhcnJ5XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSAqIG51bTtcbiAgICAgIHZhciBsbyA9ICh3ICYgMHgzZmZmZmZmKSArIChjYXJyeSAmIDB4M2ZmZmZmZik7XG4gICAgICBjYXJyeSA+Pj0gMjY7XG4gICAgICBjYXJyeSArPSAodyAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgLy8gTk9URTogbG8gaXMgMjdiaXQgbWF4aW11bVxuICAgICAgY2FycnkgKz0gbG8gPj4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubXVsbiA9IGZ1bmN0aW9uIG11bG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW11bG4obnVtKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKHRoaXMpO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKTtcbiAgfTtcblxuICAvLyBNYXRoLnBvdyhgdGhpc2AsIGBudW1gKVxuICBCTi5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChudW0pIHtcbiAgICB2YXIgdyA9IHRvQml0QXJyYXkobnVtKTtcbiAgICBpZiAody5sZW5ndGggPT09IDApIHJldHVybiBuZXcgQk4oMSk7XG5cbiAgICAvLyBTa2lwIGxlYWRpbmcgemVyb2VzXG4gICAgdmFyIHJlcyA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3Lmxlbmd0aDsgaSsrLCByZXMgPSByZXMuc3FyKCkpIHtcbiAgICAgIGlmICh3W2ldICE9PSAwKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoKytpIDwgdy5sZW5ndGgpIHtcbiAgICAgIGZvciAodmFyIHEgPSByZXMuc3FyKCk7IGkgPCB3Lmxlbmd0aDsgaSsrLCBxID0gcS5zcXIoKSkge1xuICAgICAgICBpZiAod1tpXSA9PT0gMCkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gcmVzLm11bChxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnQgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1c2hsbiA9IGZ1bmN0aW9uIGl1c2hsbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcbiAgICB2YXIgY2FycnlNYXNrID0gKDB4M2ZmZmZmZiA+Pj4gKDI2IC0gcikpIDw8ICgyNiAtIHIpO1xuICAgIHZhciBpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBuZXdDYXJyeSA9IHRoaXMud29yZHNbaV0gJiBjYXJyeU1hc2s7XG4gICAgICAgIHZhciBjID0gKCh0aGlzLndvcmRzW2ldIHwgMCkgLSBuZXdDYXJyeSkgPDwgcjtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGMgfCBjYXJyeTtcbiAgICAgICAgY2FycnkgPSBuZXdDYXJyeSA+Pj4gKDI2IC0gcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYXJyeSkge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHMgIT09IDApIHtcbiAgICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgc10gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCArPSBzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaGxuID0gZnVuY3Rpb24gaXNobG4gKGJpdHMpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0IGluLXBsYWNlXG4gIC8vIE5PVEU6IGBoaW50YCBpcyBhIGxvd2VzdCBiaXQgYmVmb3JlIHRyYWlsaW5nIHplcm9lc1xuICAvLyBOT1RFOiBpZiBgZXh0ZW5kZWRgIGlzIHByZXNlbnQgLSBpdCB3aWxsIGJlIGZpbGxlZCB3aXRoIGRlc3Ryb3llZCBiaXRzXG4gIEJOLnByb3RvdHlwZS5pdXNocm4gPSBmdW5jdGlvbiBpdXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciBoO1xuICAgIGlmIChoaW50KSB7XG4gICAgICBoID0gKGhpbnQgLSAoaGludCAlIDI2KSkgLyAyNjtcbiAgICB9IGVsc2Uge1xuICAgICAgaCA9IDA7XG4gICAgfVxuXG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSBNYXRoLm1pbigoYml0cyAtIHIpIC8gMjYsIHRoaXMubGVuZ3RoKTtcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICB2YXIgbWFza2VkV29yZHMgPSBleHRlbmRlZDtcblxuICAgIGggLT0gcztcbiAgICBoID0gTWF0aC5tYXgoMCwgaCk7XG5cbiAgICAvLyBFeHRlbmRlZCBtb2RlLCBjb3B5IG1hc2tlZCBwYXJ0XG4gICAgaWYgKG1hc2tlZFdvcmRzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICBtYXNrZWRXb3Jkcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG4gICAgICBtYXNrZWRXb3Jkcy5sZW5ndGggPSBzO1xuICAgIH1cblxuICAgIGlmIChzID09PSAwKSB7XG4gICAgICAvLyBOby1vcCwgd2Ugc2hvdWxkIG5vdCBtb3ZlIGFueXRoaW5nIGF0IGFsbFxuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiBzKSB7XG4gICAgICB0aGlzLmxlbmd0aCAtPSBzO1xuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaSArIHNdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwICYmIChjYXJyeSAhPT0gMCB8fCBpID49IGgpOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKGNhcnJ5IDw8ICgyNiAtIHIpKSB8ICh3b3JkID4+PiByKTtcbiAgICAgIGNhcnJ5ID0gd29yZCAmIG1hc2s7XG4gICAgfVxuXG4gICAgLy8gUHVzaCBjYXJyaWVkIGJpdHMgYXMgYSBtYXNrXG4gICAgaWYgKG1hc2tlZFdvcmRzICYmIGNhcnJ5ICE9PSAwKSB7XG4gICAgICBtYXNrZWRXb3Jkcy53b3Jkc1ttYXNrZWRXb3Jkcy5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaHJuID0gZnVuY3Rpb24gaXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hybihiaXRzLCBoaW50LCBleHRlbmRlZCk7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdFxuICBCTi5wcm90b3R5cGUuc2hsbiA9IGZ1bmN0aW9uIHNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hsbiA9IGZ1bmN0aW9uIHVzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHRcbiAgQk4ucHJvdG90eXBlLnNocm4gPSBmdW5jdGlvbiBzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNocm4gPSBmdW5jdGlvbiB1c2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFRlc3QgaWYgbiBiaXQgaXMgc2V0XG4gIEJOLnByb3RvdHlwZS50ZXN0biA9IGZ1bmN0aW9uIHRlc3RuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGJpdCBhbmQgcmV0dXJuXG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3NdO1xuXG4gICAgcmV0dXJuICEhKHcgJiBxKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXIgKGluLXBsYWNlKVxuICBCTi5wcm90b3R5cGUuaW1hc2tuID0gZnVuY3Rpb24gaW1hc2tuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMnKTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgcysrO1xuICAgIH1cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWluKHMsIHRoaXMubGVuZ3RoKTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSAmPSBtYXNrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyXG4gIEJOLnByb3RvdHlwZS5tYXNrbiA9IGZ1bmN0aW9uIG1hc2tuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oYml0cyk7XG4gIH07XG5cbiAgLy8gQWRkIHBsYWluIG51bWJlciBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlhZGRuID0gZnVuY3Rpb24gaWFkZG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlzdWJuKC1udW0pO1xuXG4gICAgLy8gUG9zc2libGUgc2lnbiBjaGFuZ2VcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmICh0aGlzLndvcmRzWzBdIHwgMCkgPCBudW0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSA9IG51bSAtICh0aGlzLndvcmRzWzBdIHwgMCk7XG4gICAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlzdWJuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCB3aXRob3V0IGNoZWNrc1xuICAgIHJldHVybiB0aGlzLl9pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faWFkZG4gPSBmdW5jdGlvbiBfaWFkZG4gKG51bSkge1xuICAgIHRoaXMud29yZHNbMF0gKz0gbnVtO1xuXG4gICAgLy8gQ2FycnlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPj0gMHg0MDAwMDAwOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gLT0gMHg0MDAwMDAwO1xuICAgICAgaWYgKGkgPT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSsrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpICsgMSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBwbGFpbiBudW1iZXIgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlzdWJuID0gZnVuY3Rpb24gaXN1Ym4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlhZGRuKC1udW0pO1xuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkbihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLndvcmRzWzBdIC09IG51bTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdIDwgMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IC10aGlzLndvcmRzWzBdO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENhcnJ5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPCAwOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSArPSAweDQwMDAwMDA7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdIC09IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWRkbiA9IGZ1bmN0aW9uIGFkZG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuc3VibiA9IGZ1bmN0aW9uIHN1Ym4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFicyA9IGZ1bmN0aW9uIGlhYnMgKCkge1xuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uIGFicyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pc2hsbnN1Ym11bCA9IGZ1bmN0aW9uIF9pc2hsbnN1Ym11bCAobnVtLCBtdWwsIHNoaWZ0KSB7XG4gICAgdmFyIGxlbiA9IG51bS5sZW5ndGggKyBzaGlmdDtcbiAgICB2YXIgaTtcblxuICAgIHRoaXMuX2V4cGFuZChsZW4pO1xuXG4gICAgdmFyIHc7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICB2YXIgcmlnaHQgPSAobnVtLndvcmRzW2ldIHwgMCkgKiBtdWw7XG4gICAgICB3IC09IHJpZ2h0ICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSAodyA+PiAyNikgLSAoKHJpZ2h0IC8gMHg0MDAwMDAwKSB8IDApO1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGkgPCB0aGlzLmxlbmd0aCAtIHNoaWZ0OyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ID09PSAwKSByZXR1cm4gdGhpcy5zdHJpcCgpO1xuXG4gICAgLy8gU3VidHJhY3Rpb24gb3ZlcmZsb3dcbiAgICBhc3NlcnQoY2FycnkgPT09IC0xKTtcbiAgICBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAtKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX3dvcmREaXYgPSBmdW5jdGlvbiBfd29yZERpdiAobnVtLCBtb2RlKSB7XG4gICAgdmFyIHNoaWZ0ID0gdGhpcy5sZW5ndGggLSBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGEgPSB0aGlzLmNsb25lKCk7XG4gICAgdmFyIGIgPSBudW07XG5cbiAgICAvLyBOb3JtYWxpemVcbiAgICB2YXIgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB2YXIgYmhpQml0cyA9IHRoaXMuX2NvdW50Qml0cyhiaGkpO1xuICAgIHNoaWZ0ID0gMjYgLSBiaGlCaXRzO1xuICAgIGlmIChzaGlmdCAhPT0gMCkge1xuICAgICAgYiA9IGIudXNobG4oc2hpZnQpO1xuICAgICAgYS5pdXNobG4oc2hpZnQpO1xuICAgICAgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIHF1b3RpZW50XG4gICAgdmFyIG0gPSBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuICAgIHZhciBxO1xuXG4gICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICBxID0gbmV3IEJOKG51bGwpO1xuICAgICAgcS5sZW5ndGggPSBtICsgMTtcbiAgICAgIHEud29yZHMgPSBuZXcgQXJyYXkocS5sZW5ndGgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHEud29yZHNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkaWZmID0gYS5jbG9uZSgpLl9pc2hsbnN1Ym11bChiLCAxLCBtKTtcbiAgICBpZiAoZGlmZi5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgYSA9IGRpZmY7XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW21dID0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gbSAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICB2YXIgcWogPSAoYS53b3Jkc1tiLmxlbmd0aCArIGpdIHwgMCkgKiAweDQwMDAwMDAgK1xuICAgICAgICAoYS53b3Jkc1tiLmxlbmd0aCArIGogLSAxXSB8IDApO1xuXG4gICAgICAvLyBOT1RFOiAocWogLyBiaGkpIGlzICgweDNmZmZmZmYgKiAweDQwMDAwMDAgKyAweDNmZmZmZmYpIC8gMHgyMDAwMDAwIG1heFxuICAgICAgLy8gKDB4N2ZmZmZmZilcbiAgICAgIHFqID0gTWF0aC5taW4oKHFqIC8gYmhpKSB8IDAsIDB4M2ZmZmZmZik7XG5cbiAgICAgIGEuX2lzaGxuc3VibXVsKGIsIHFqLCBqKTtcbiAgICAgIHdoaWxlIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIHFqLS07XG4gICAgICAgIGEubmVnYXRpdmUgPSAwO1xuICAgICAgICBhLl9pc2hsbnN1Ym11bChiLCAxLCBqKTtcbiAgICAgICAgaWYgKCFhLmlzWmVybygpKSB7XG4gICAgICAgICAgYS5uZWdhdGl2ZSBePSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW2pdID0gcWo7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxKSB7XG4gICAgICBxLnN0cmlwKCk7XG4gICAgfVxuICAgIGEuc3RyaXAoKTtcblxuICAgIC8vIERlbm9ybWFsaXplXG4gICAgaWYgKG1vZGUgIT09ICdkaXYnICYmIHNoaWZ0ICE9PSAwKSB7XG4gICAgICBhLml1c2hybihzaGlmdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpdjogcSB8fCBudWxsLFxuICAgICAgbW9kOiBhXG4gICAgfTtcbiAgfTtcblxuICAvLyBOT1RFOiAxKSBgbW9kZWAgY2FuIGJlIHNldCB0byBgbW9kYCB0byByZXF1ZXN0IG1vZCBvbmx5LFxuICAvLyAgICAgICB0byBgZGl2YCB0byByZXF1ZXN0IGRpdiBvbmx5LCBvciBiZSBhYnNlbnQgdG9cbiAgLy8gICAgICAgcmVxdWVzdCBib3RoIGRpdiAmIG1vZFxuICAvLyAgICAgICAyKSBgcG9zaXRpdmVgIGlzIHRydWUgaWYgdW5zaWduZWQgbW9kIGlzIHJlcXVlc3RlZFxuICBCTi5wcm90b3R5cGUuZGl2bW9kID0gZnVuY3Rpb24gZGl2bW9kIChudW0sIG1vZGUsIHBvc2l0aXZlKSB7XG4gICAgYXNzZXJ0KCFudW0uaXNaZXJvKCkpO1xuXG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IG5ldyBCTigwKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZGl2LCBtb2QsIHJlcztcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pYWRkKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IHJlcy5tb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCh0aGlzLm5lZ2F0aXZlICYgbnVtLm5lZ2F0aXZlKSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaXN1YihudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogcmVzLmRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZSBhdCB0aGlzIHBvaW50XG5cbiAgICAvLyBTdHJpcCBib3RoIG51bWJlcnMgdG8gYXBwcm94aW1hdGUgc2hpZnQgdmFsdWVcbiAgICBpZiAobnVtLmxlbmd0aCA+IHRoaXMubGVuZ3RoIHx8IHRoaXMuY21wKG51bSkgPCAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiB0aGlzXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFZlcnkgc2hvcnQgcmVkdWN0aW9uXG4gICAgaWYgKG51bS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGlmIChtb2RlID09PSAnZGl2Jykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgICAgbW9kOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlID09PSAnbW9kJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogbnVsbCxcbiAgICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl93b3JkRGl2KG51bSwgbW9kZSk7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgLyBgbnVtYFxuICBCTi5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gZGl2IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnZGl2JywgZmFsc2UpLmRpdjtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAlIGBudW1gXG4gIEJOLnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiBtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCBmYWxzZSkubW9kO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51bW9kID0gZnVuY3Rpb24gdW1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIHRydWUpLm1vZDtcbiAgfTtcblxuICAvLyBGaW5kIFJvdW5kKGB0aGlzYCAvIGBudW1gKVxuICBCTi5wcm90b3R5cGUuZGl2Um91bmQgPSBmdW5jdGlvbiBkaXZSb3VuZCAobnVtKSB7XG4gICAgdmFyIGRtID0gdGhpcy5kaXZtb2QobnVtKTtcblxuICAgIC8vIEZhc3QgY2FzZSAtIGV4YWN0IGRpdmlzaW9uXG4gICAgaWYgKGRtLm1vZC5pc1plcm8oKSkgcmV0dXJuIGRtLmRpdjtcblxuICAgIHZhciBtb2QgPSBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5tb2QuaXN1YihudW0pIDogZG0ubW9kO1xuXG4gICAgdmFyIGhhbGYgPSBudW0udXNocm4oMSk7XG4gICAgdmFyIHIyID0gbnVtLmFuZGxuKDEpO1xuICAgIHZhciBjbXAgPSBtb2QuY21wKGhhbGYpO1xuXG4gICAgLy8gUm91bmQgZG93blxuICAgIGlmIChjbXAgPCAwIHx8IHIyID09PSAxICYmIGNtcCA9PT0gMCkgcmV0dXJuIGRtLmRpdjtcblxuICAgIC8vIFJvdW5kIHVwXG4gICAgcmV0dXJuIGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLmRpdi5pc3VibigxKSA6IGRtLmRpdi5pYWRkbigxKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubW9kbiA9IGZ1bmN0aW9uIG1vZG4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcbiAgICB2YXIgcCA9ICgxIDw8IDI2KSAlIG51bTtcblxuICAgIHZhciBhY2MgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBhY2MgPSAocCAqIGFjYyArICh0aGlzLndvcmRzW2ldIHwgMCkpICUgbnVtO1xuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgZGl2aXNpb24gYnkgbnVtYmVyXG4gIEJOLnByb3RvdHlwZS5pZGl2biA9IGZ1bmN0aW9uIGlkaXZuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeSAqIDB4NDAwMDAwMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAodyAvIG51bSkgfCAwO1xuICAgICAgY2FycnkgPSB3ICUgbnVtO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmRpdm4gPSBmdW5jdGlvbiBkaXZuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVnY2QgPSBmdW5jdGlvbiBlZ2NkIChwKSB7XG4gICAgYXNzZXJ0KHAubmVnYXRpdmUgPT09IDApO1xuICAgIGFzc2VydCghcC5pc1plcm8oKSk7XG5cbiAgICB2YXIgeCA9IHRoaXM7XG4gICAgdmFyIHkgPSBwLmNsb25lKCk7XG5cbiAgICBpZiAoeC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgeCA9IHgudW1vZChwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHguY2xvbmUoKTtcbiAgICB9XG5cbiAgICAvLyBBICogeCArIEIgKiB5ID0geFxuICAgIHZhciBBID0gbmV3IEJOKDEpO1xuICAgIHZhciBCID0gbmV3IEJOKDApO1xuXG4gICAgLy8gQyAqIHggKyBEICogeSA9IHlcbiAgICB2YXIgQyA9IG5ldyBCTigwKTtcbiAgICB2YXIgRCA9IG5ldyBCTigxKTtcblxuICAgIHZhciBnID0gMDtcblxuICAgIHdoaWxlICh4LmlzRXZlbigpICYmIHkuaXNFdmVuKCkpIHtcbiAgICAgIHguaXVzaHJuKDEpO1xuICAgICAgeS5pdXNocm4oMSk7XG4gICAgICArK2c7XG4gICAgfVxuXG4gICAgdmFyIHlwID0geS5jbG9uZSgpO1xuICAgIHZhciB4cCA9IHguY2xvbmUoKTtcblxuICAgIHdoaWxlICgheC5pc1plcm8oKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGltID0gMTsgKHgud29yZHNbMF0gJiBpbSkgPT09IDAgJiYgaSA8IDI2OyArK2ksIGltIDw8PSAxKTtcbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICB4Lml1c2hybihpKTtcbiAgICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgICBpZiAoQS5pc09kZCgpIHx8IEIuaXNPZGQoKSkge1xuICAgICAgICAgICAgQS5pYWRkKHlwKTtcbiAgICAgICAgICAgIEIuaXN1Yih4cCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQS5pdXNocm4oMSk7XG4gICAgICAgICAgQi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKHkud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICB5Lml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoQy5pc09kZCgpIHx8IEQuaXNPZGQoKSkge1xuICAgICAgICAgICAgQy5pYWRkKHlwKTtcbiAgICAgICAgICAgIEQuaXN1Yih4cCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQy5pdXNocm4oMSk7XG4gICAgICAgICAgRC5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHguY21wKHkpID49IDApIHtcbiAgICAgICAgeC5pc3ViKHkpO1xuICAgICAgICBBLmlzdWIoQyk7XG4gICAgICAgIEIuaXN1YihEKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHkuaXN1Yih4KTtcbiAgICAgICAgQy5pc3ViKEEpO1xuICAgICAgICBELmlzdWIoQik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGE6IEMsXG4gICAgICBiOiBELFxuICAgICAgZ2NkOiB5Lml1c2hsbihnKVxuICAgIH07XG4gIH07XG5cbiAgLy8gVGhpcyBpcyByZWR1Y2VkIGluY2FybmF0aW9uIG9mIHRoZSBiaW5hcnkgRUVBXG4gIC8vIGFib3ZlLCBkZXNpZ25hdGVkIHRvIGludmVydCBtZW1iZXJzIG9mIHRoZVxuICAvLyBfcHJpbWVfIGZpZWxkcyBGKHApIGF0IGEgbWF4aW1hbCBzcGVlZFxuICBCTi5wcm90b3R5cGUuX2ludm1wID0gZnVuY3Rpb24gX2ludm1wIChwKSB7XG4gICAgYXNzZXJ0KHAubmVnYXRpdmUgPT09IDApO1xuICAgIGFzc2VydCghcC5pc1plcm8oKSk7XG5cbiAgICB2YXIgYSA9IHRoaXM7XG4gICAgdmFyIGIgPSBwLmNsb25lKCk7XG5cbiAgICBpZiAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgYSA9IGEudW1vZChwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IGEuY2xvbmUoKTtcbiAgICB9XG5cbiAgICB2YXIgeDEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIHgyID0gbmV3IEJOKDApO1xuXG4gICAgdmFyIGRlbHRhID0gYi5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKGEuY21wbigxKSA+IDAgJiYgYi5jbXBuKDEpID4gMCkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGltID0gMTsgKGEud29yZHNbMF0gJiBpbSkgPT09IDAgJiYgaSA8IDI2OyArK2ksIGltIDw8PSAxKTtcbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICBhLml1c2hybihpKTtcbiAgICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDEuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDEuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDEuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7IChiLndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgYi5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgyLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgyLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgyLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYS5jbXAoYikgPj0gMCkge1xuICAgICAgICBhLmlzdWIoYik7XG4gICAgICAgIHgxLmlzdWIoeDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYi5pc3ViKGEpO1xuICAgICAgICB4Mi5pc3ViKHgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmIChhLmNtcG4oMSkgPT09IDApIHtcbiAgICAgIHJlcyA9IHgxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSB4MjtcbiAgICB9XG5cbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZChwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5nY2QgPSBmdW5jdGlvbiBnY2QgKG51bSkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gbnVtLmFicygpO1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiB0aGlzLmFicygpO1xuXG4gICAgdmFyIGEgPSB0aGlzLmNsb25lKCk7XG4gICAgdmFyIGIgPSBudW0uY2xvbmUoKTtcbiAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICBiLm5lZ2F0aXZlID0gMDtcblxuICAgIC8vIFJlbW92ZSBjb21tb24gZmFjdG9yIG9mIHR3b1xuICAgIGZvciAodmFyIHNoaWZ0ID0gMDsgYS5pc0V2ZW4oKSAmJiBiLmlzRXZlbigpOyBzaGlmdCsrKSB7XG4gICAgICBhLml1c2hybigxKTtcbiAgICAgIGIuaXVzaHJuKDEpO1xuICAgIH1cblxuICAgIGRvIHtcbiAgICAgIHdoaWxlIChhLmlzRXZlbigpKSB7XG4gICAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKGIuaXNFdmVuKCkpIHtcbiAgICAgICAgYi5pdXNocm4oMSk7XG4gICAgICB9XG5cbiAgICAgIHZhciByID0gYS5jbXAoYik7XG4gICAgICBpZiAociA8IDApIHtcbiAgICAgICAgLy8gU3dhcCBgYWAgYW5kIGBiYCB0byBtYWtlIGBhYCBhbHdheXMgYmlnZ2VyIHRoYW4gYGJgXG4gICAgICAgIHZhciB0ID0gYTtcbiAgICAgICAgYSA9IGI7XG4gICAgICAgIGIgPSB0O1xuICAgICAgfSBlbHNlIGlmIChyID09PSAwIHx8IGIuY21wbigxKSA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgYS5pc3ViKGIpO1xuICAgIH0gd2hpbGUgKHRydWUpO1xuXG4gICAgcmV0dXJuIGIuaXVzaGxuKHNoaWZ0KTtcbiAgfTtcblxuICAvLyBJbnZlcnQgbnVtYmVyIGluIHRoZSBmaWVsZCBGKG51bSlcbiAgQk4ucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5lZ2NkKG51bSkuYS51bW9kKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzRXZlbiA9IGZ1bmN0aW9uIGlzRXZlbiAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gaXNPZGQgKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAxO1xuICB9O1xuXG4gIC8vIEFuZCBmaXJzdCB3b3JkIGFuZCBudW1cbiAgQk4ucHJvdG90eXBlLmFuZGxuID0gZnVuY3Rpb24gYW5kbG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLndvcmRzWzBdICYgbnVtO1xuICB9O1xuXG4gIC8vIEluY3JlbWVudCBhdCB0aGUgYml0IHBvc2l0aW9uIGluLWxpbmVcbiAgQk4ucHJvdG90eXBlLmJpbmNuID0gZnVuY3Rpb24gYmluY24gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgdGhpcy5fZXhwYW5kKHMgKyAxKTtcbiAgICAgIHRoaXMud29yZHNbc10gfD0gcTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBiaXQgYW5kIHByb3BhZ2F0ZSwgaWYgbmVlZGVkXG4gICAgdmFyIGNhcnJ5ID0gcTtcbiAgICBmb3IgKHZhciBpID0gczsgY2FycnkgIT09IDAgJiYgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB3ICs9IGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+PiAyNjtcbiAgICAgIHcgJj0gMHgzZmZmZmZmO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHc7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uIGlzWmVybyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNtcG4gPSBmdW5jdGlvbiBjbXBuIChudW0pIHtcbiAgICB2YXIgbmVnYXRpdmUgPSBudW0gPCAwO1xuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgIW5lZ2F0aXZlKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbmVnYXRpdmUpIHJldHVybiAxO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuXG4gICAgdmFyIHJlcztcbiAgICBpZiAodGhpcy5sZW5ndGggPiAxKSB7XG4gICAgICByZXMgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobmVnYXRpdmUpIHtcbiAgICAgICAgbnVtID0gLW51bTtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYsICdOdW1iZXIgaXMgdG9vIGJpZycpO1xuXG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbMF0gfCAwO1xuICAgICAgcmVzID0gdyA9PT0gbnVtID8gMCA6IHcgPCBudW0gPyAtMSA6IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb21wYXJlIHR3byBudW1iZXJzIGFuZCByZXR1cm46XG4gIC8vIDEgLSBpZiBgdGhpc2AgPiBgbnVtYFxuICAvLyAwIC0gaWYgYHRoaXNgID09IGBudW1gXG4gIC8vIC0xIC0gaWYgYHRoaXNgIDwgYG51bWBcbiAgQk4ucHJvdG90eXBlLmNtcCA9IGZ1bmN0aW9uIGNtcCAobnVtKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gMTtcblxuICAgIHZhciByZXMgPSB0aGlzLnVjbXAobnVtKTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gVW5zaWduZWQgY29tcGFyaXNvblxuICBCTi5wcm90b3R5cGUudWNtcCA9IGZ1bmN0aW9uIHVjbXAgKG51bSkge1xuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGhhdmUgdGhlIHNhbWUgc2lnblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiAxO1xuICAgIGlmICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHJldHVybiAtMTtcblxuICAgIHZhciByZXMgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgYSA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdmFyIGIgPSBudW0ud29yZHNbaV0gfCAwO1xuXG4gICAgICBpZiAoYSA9PT0gYikgY29udGludWU7XG4gICAgICBpZiAoYSA8IGIpIHtcbiAgICAgICAgcmVzID0gLTE7XG4gICAgICB9IGVsc2UgaWYgKGEgPiBiKSB7XG4gICAgICAgIHJlcyA9IDE7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RuID0gZnVuY3Rpb24gZ3RuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ID0gZnVuY3Rpb24gZ3QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGVuID0gZnVuY3Rpb24gZ3RlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZSA9IGZ1bmN0aW9uIGd0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRuID0gZnVuY3Rpb24gbHRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdCA9IGZ1bmN0aW9uIGx0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZW4gPSBmdW5jdGlvbiBsdGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlID0gZnVuY3Rpb24gbHRlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcW4gPSBmdW5jdGlvbiBlcW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDA7XG4gIH07XG5cbiAgLy9cbiAgLy8gQSByZWR1Y2UgY29udGV4dCwgY291bGQgYmUgdXNpbmcgbW9udGdvbWVyeSBvciBzb21ldGhpbmcgYmV0dGVyLCBkZXBlbmRpbmdcbiAgLy8gb24gdGhlIGBtYCBpdHNlbGYuXG4gIC8vXG4gIEJOLnJlZCA9IGZ1bmN0aW9uIHJlZCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBSZWQobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9SZWQgPSBmdW5jdGlvbiB0b1JlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgcmV0dXJuIGN0eC5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21SZWQgPSBmdW5jdGlvbiBmcm9tUmVkICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZm9yY2VSZWQgPSBmdW5jdGlvbiBfZm9yY2VSZWQgKGN0eCkge1xuICAgIHRoaXMucmVkID0gY3R4O1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mb3JjZVJlZCA9IGZ1bmN0aW9uIGZvcmNlUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRBZGQgPSBmdW5jdGlvbiByZWRBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElBZGQgPSBmdW5jdGlvbiByZWRJQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFN1YiA9IGZ1bmN0aW9uIHJlZFN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVN1YiA9IGZ1bmN0aW9uIHJlZElTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU2hsID0gZnVuY3Rpb24gcmVkU2hsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNobCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRNdWwgPSBmdW5jdGlvbiByZWRNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5tdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSU11bCA9IGZ1bmN0aW9uIHJlZElNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNxciA9IGZ1bmN0aW9uIHJlZFNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXIodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTcXIgPSBmdW5jdGlvbiByZWRJU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3FyKHRoaXMpO1xuICB9O1xuXG4gIC8vIFNxdWFyZSByb290IG92ZXIgcFxuICBCTi5wcm90b3R5cGUucmVkU3FydCA9IGZ1bmN0aW9uIHJlZFNxcnQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcnQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEludm0gPSBmdW5jdGlvbiByZWRJbnZtICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbnZtKHRoaXMpO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2AgJSBgcmVkIG1vZHVsb2BcbiAgQk4ucHJvdG90eXBlLnJlZE5lZyA9IGZ1bmN0aW9uIHJlZE5lZyAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5uZWcodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFBvdyA9IGZ1bmN0aW9uIHJlZFBvdyAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkICYmICFudW0ucmVkLCAncmVkUG93KG5vcm1hbE51bSknKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQucG93KHRoaXMsIG51bSk7XG4gIH07XG5cbiAgLy8gUHJpbWUgbnVtYmVycyB3aXRoIGVmZmljaWVudCByZWR1Y3Rpb25cbiAgdmFyIHByaW1lcyA9IHtcbiAgICBrMjU2OiBudWxsLFxuICAgIHAyMjQ6IG51bGwsXG4gICAgcDE5MjogbnVsbCxcbiAgICBwMjU1MTk6IG51bGxcbiAgfTtcblxuICAvLyBQc2V1ZG8tTWVyc2VubmUgcHJpbWVcbiAgZnVuY3Rpb24gTVByaW1lIChuYW1lLCBwKSB7XG4gICAgLy8gUCA9IDIgXiBOIC0gS1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wID0gbmV3IEJOKHAsIDE2KTtcbiAgICB0aGlzLm4gPSB0aGlzLnAuYml0TGVuZ3RoKCk7XG4gICAgdGhpcy5rID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKTtcblxuICAgIHRoaXMudG1wID0gdGhpcy5fdG1wKCk7XG4gIH1cblxuICBNUHJpbWUucHJvdG90eXBlLl90bXAgPSBmdW5jdGlvbiBfdG1wICgpIHtcbiAgICB2YXIgdG1wID0gbmV3IEJOKG51bGwpO1xuICAgIHRtcC53b3JkcyA9IG5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uIC8gMTMpKTtcbiAgICByZXR1cm4gdG1wO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaXJlZHVjZSA9IGZ1bmN0aW9uIGlyZWR1Y2UgKG51bSkge1xuICAgIC8vIEFzc3VtZXMgdGhhdCBgbnVtYCBpcyBsZXNzIHRoYW4gYFBeMmBcbiAgICAvLyBudW0gPSBISSAqICgyIF4gTiAtIEspICsgSEkgKiBLICsgTE8gPSBISSAqIEsgKyBMTyAobW9kIFApXG4gICAgdmFyIHIgPSBudW07XG4gICAgdmFyIHJsZW47XG5cbiAgICBkbyB7XG4gICAgICB0aGlzLnNwbGl0KHIsIHRoaXMudG1wKTtcbiAgICAgIHIgPSB0aGlzLmltdWxLKHIpO1xuICAgICAgciA9IHIuaWFkZCh0aGlzLnRtcCk7XG4gICAgICBybGVuID0gci5iaXRMZW5ndGgoKTtcbiAgICB9IHdoaWxlIChybGVuID4gdGhpcy5uKTtcblxuICAgIHZhciBjbXAgPSBybGVuIDwgdGhpcy5uID8gLTEgOiByLnVjbXAodGhpcy5wKTtcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICByLndvcmRzWzBdID0gMDtcbiAgICAgIHIubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKGNtcCA+IDApIHtcbiAgICAgIHIuaXN1Yih0aGlzLnApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoci5zdHJpcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIHIgaXMgQk4gdjQgaW5zdGFuY2VcbiAgICAgICAgci5zdHJpcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NSBpbnN0YW5jZVxuICAgICAgICByLl9zdHJpcCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dCkge1xuICAgIGlucHV0Lml1c2hybih0aGlzLm4sIDAsIG91dCk7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICByZXR1cm4gbnVtLmltdWwodGhpcy5rKTtcbiAgfTtcblxuICBmdW5jdGlvbiBLMjU2ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnazI1NicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYnKTtcbiAgfVxuICBpbmhlcml0cyhLMjU2LCBNUHJpbWUpO1xuXG4gIEsyNTYucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXRwdXQpIHtcbiAgICAvLyAyNTYgPSA5ICogMjYgKyAyMlxuICAgIHZhciBtYXNrID0gMHgzZmZmZmY7XG5cbiAgICB2YXIgb3V0TGVuID0gTWF0aC5taW4oaW5wdXQubGVuZ3RoLCA5KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG91dExlbjsgaSsrKSB7XG4gICAgICBvdXRwdXQud29yZHNbaV0gPSBpbnB1dC53b3Jkc1tpXTtcbiAgICB9XG4gICAgb3V0cHV0Lmxlbmd0aCA9IG91dExlbjtcblxuICAgIGlmIChpbnB1dC5sZW5ndGggPD0gOSkge1xuICAgICAgaW5wdXQud29yZHNbMF0gPSAwO1xuICAgICAgaW5wdXQubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTaGlmdCBieSA5IGxpbWJzXG4gICAgdmFyIHByZXYgPSBpbnB1dC53b3Jkc1s5XTtcbiAgICBvdXRwdXQud29yZHNbb3V0cHV0Lmxlbmd0aCsrXSA9IHByZXYgJiBtYXNrO1xuXG4gICAgZm9yIChpID0gMTA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5leHQgPSBpbnB1dC53b3Jkc1tpXSB8IDA7XG4gICAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gKChuZXh0ICYgbWFzaykgPDwgNCkgfCAocHJldiA+Pj4gMjIpO1xuICAgICAgcHJldiA9IG5leHQ7XG4gICAgfVxuICAgIHByZXYgPj4+PSAyMjtcbiAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gcHJldjtcbiAgICBpZiAocHJldiA9PT0gMCAmJiBpbnB1dC5sZW5ndGggPiAxMCkge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDEwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gOTtcbiAgICB9XG4gIH07XG5cbiAgSzI1Ni5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTAwMDAwM2QxID0gWyAweDQwLCAweDNkMSBdXG4gICAgbnVtLndvcmRzW251bS5sZW5ndGhdID0gMDtcbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aCArIDFdID0gMDtcbiAgICBudW0ubGVuZ3RoICs9IDI7XG5cbiAgICAvLyBib3VuZGVkIGF0OiAweDQwICogMHgzZmZmZmZmICsgMHgzZDAgPSAweDEwMDAwMDM5MFxuICAgIHZhciBsbyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gbnVtLndvcmRzW2ldIHwgMDtcbiAgICAgIGxvICs9IHcgKiAweDNkMTtcbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgbG8gPSB3ICogMHg0MCArICgobG8gLyAweDQwMDAwMDApIHwgMCk7XG4gICAgfVxuXG4gICAgLy8gRmFzdCBsZW5ndGggcmVkdWN0aW9uXG4gICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICBmdW5jdGlvbiBQMjI0ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDIyNCcsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEnKTtcbiAgfVxuICBpbmhlcml0cyhQMjI0LCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAxOTIgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMTkyJyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicpO1xuICB9XG4gIGluaGVyaXRzKFAxOTIsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDI1NTE5ICgpIHtcbiAgICAvLyAyIF4gMjU1IC0gMTlcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnMjU1MTknLFxuICAgICAgJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnKTtcbiAgfVxuICBpbmhlcml0cyhQMjU1MTksIE1QcmltZSk7XG5cbiAgUDI1NTE5LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxM1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoaSA9IChudW0ud29yZHNbaV0gfCAwKSAqIDB4MTMgKyBjYXJyeTtcbiAgICAgIHZhciBsbyA9IGhpICYgMHgzZmZmZmZmO1xuICAgICAgaGkgPj4+PSAyNjtcblxuICAgICAgbnVtLndvcmRzW2ldID0gbG87XG4gICAgICBjYXJyeSA9IGhpO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgLy8gRXhwb3J0ZWQgbW9zdGx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB1c2UgcGxhaW4gbmFtZSBpbnN0ZWFkXG4gIEJOLl9wcmltZSA9IGZ1bmN0aW9uIHByaW1lIChuYW1lKSB7XG4gICAgLy8gQ2FjaGVkIHZlcnNpb24gb2YgcHJpbWVcbiAgICBpZiAocHJpbWVzW25hbWVdKSByZXR1cm4gcHJpbWVzW25hbWVdO1xuXG4gICAgdmFyIHByaW1lO1xuICAgIGlmIChuYW1lID09PSAnazI1NicpIHtcbiAgICAgIHByaW1lID0gbmV3IEsyNTYoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjI0Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDIyNCgpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AxOTInKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMTkyKCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDI1NTE5Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDI1NTE5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBwcmltZSAnICsgbmFtZSk7XG4gICAgfVxuICAgIHByaW1lc1tuYW1lXSA9IHByaW1lO1xuXG4gICAgcmV0dXJuIHByaW1lO1xuICB9O1xuXG4gIC8vXG4gIC8vIEJhc2UgcmVkdWN0aW9uIGVuZ2luZVxuICAvL1xuICBmdW5jdGlvbiBSZWQgKG0pIHtcbiAgICBpZiAodHlwZW9mIG0gPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgcHJpbWUgPSBCTi5fcHJpbWUobSk7XG4gICAgICB0aGlzLm0gPSBwcmltZS5wO1xuICAgICAgdGhpcy5wcmltZSA9IHByaW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobS5ndG4oMSksICdtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEnKTtcbiAgICAgIHRoaXMubSA9IG07XG4gICAgICB0aGlzLnByaW1lID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkxID0gZnVuY3Rpb24gX3ZlcmlmeTEgKGEpIHtcbiAgICBhc3NlcnQoYS5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkLCAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTIgPSBmdW5jdGlvbiBfdmVyaWZ5MiAoYSwgYikge1xuICAgIGFzc2VydCgoYS5uZWdhdGl2ZSB8IGIubmVnYXRpdmUpID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQgJiYgYS5yZWQgPT09IGIucmVkLFxuICAgICAgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltb2QgPSBmdW5jdGlvbiBpbW9kIChhKSB7XG4gICAgaWYgKHRoaXMucHJpbWUpIHJldHVybiB0aGlzLnByaW1lLmlyZWR1Y2UoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICAgIHJldHVybiBhLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIGEuY2xvbmUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tLnN1YihhKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5zdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zaGwgPSBmdW5jdGlvbiBzaGwgKGEsIG51bSkge1xuICAgIHRoaXMuX3ZlcmlmeTEoYSk7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLnVzaGxuKG51bSkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5pbXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLm11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLmltdWwoYSwgYS5jbG9uZSgpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLm11bChhLCBhKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxcnQgPSBmdW5jdGlvbiBzcXJ0IChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgbW9kMyA9IHRoaXMubS5hbmRsbigzKTtcbiAgICBhc3NlcnQobW9kMyAlIDIgPT09IDEpO1xuXG4gICAgLy8gRmFzdCBjYXNlXG4gICAgaWYgKG1vZDMgPT09IDMpIHtcbiAgICAgIHZhciBwb3cgPSB0aGlzLm0uYWRkKG5ldyBCTigxKSkuaXVzaHJuKDIpO1xuICAgICAgcmV0dXJuIHRoaXMucG93KGEsIHBvdyk7XG4gICAgfVxuXG4gICAgLy8gVG9uZWxsaS1TaGFua3MgYWxnb3JpdGhtIChUb3RhbGx5IHVub3B0aW1pemVkIGFuZCBzbG93KVxuICAgIC8vXG4gICAgLy8gRmluZCBRIGFuZCBTLCB0aGF0IFEgKiAyIF4gUyA9IChQIC0gMSlcbiAgICB2YXIgcSA9IHRoaXMubS5zdWJuKDEpO1xuICAgIHZhciBzID0gMDtcbiAgICB3aGlsZSAoIXEuaXNaZXJvKCkgJiYgcS5hbmRsbigxKSA9PT0gMCkge1xuICAgICAgcysrO1xuICAgICAgcS5pdXNocm4oMSk7XG4gICAgfVxuICAgIGFzc2VydCghcS5pc1plcm8oKSk7XG5cbiAgICB2YXIgb25lID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHZhciBuT25lID0gb25lLnJlZE5lZygpO1xuXG4gICAgLy8gRmluZCBxdWFkcmF0aWMgbm9uLXJlc2lkdWVcbiAgICAvLyBOT1RFOiBNYXggaXMgc3VjaCBiZWNhdXNlIG9mIGdlbmVyYWxpemVkIFJpZW1hbm4gaHlwb3RoZXNpcy5cbiAgICB2YXIgbHBvdyA9IHRoaXMubS5zdWJuKDEpLml1c2hybigxKTtcbiAgICB2YXIgeiA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICB6ID0gbmV3IEJOKDIgKiB6ICogeikudG9SZWQodGhpcyk7XG5cbiAgICB3aGlsZSAodGhpcy5wb3coeiwgbHBvdykuY21wKG5PbmUpICE9PSAwKSB7XG4gICAgICB6LnJlZElBZGQobk9uZSk7XG4gICAgfVxuXG4gICAgdmFyIGMgPSB0aGlzLnBvdyh6LCBxKTtcbiAgICB2YXIgciA9IHRoaXMucG93KGEsIHEuYWRkbigxKS5pdXNocm4oMSkpO1xuICAgIHZhciB0ID0gdGhpcy5wb3coYSwgcSk7XG4gICAgdmFyIG0gPSBzO1xuICAgIHdoaWxlICh0LmNtcChvbmUpICE9PSAwKSB7XG4gICAgICB2YXIgdG1wID0gdDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyB0bXAuY21wKG9uZSkgIT09IDA7IGkrKykge1xuICAgICAgICB0bXAgPSB0bXAucmVkU3FyKCk7XG4gICAgICB9XG4gICAgICBhc3NlcnQoaSA8IG0pO1xuICAgICAgdmFyIGIgPSB0aGlzLnBvdyhjLCBuZXcgQk4oMSkuaXVzaGxuKG0gLSBpIC0gMSkpO1xuXG4gICAgICByID0gci5yZWRNdWwoYik7XG4gICAgICBjID0gYi5yZWRTcXIoKTtcbiAgICAgIHQgPSB0LnJlZE11bChjKTtcbiAgICAgIG0gPSBpO1xuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICB2YXIgaW52ID0gYS5faW52bXAodGhpcy5tKTtcbiAgICBpZiAoaW52Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpbnYubmVnYXRpdmUgPSAwO1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpLnJlZE5lZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludik7XG4gICAgfVxuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChhLCBudW0pIHtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIGlmIChudW0uY21wbigxKSA9PT0gMCkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciB3aW5kb3dTaXplID0gNDtcbiAgICB2YXIgd25kID0gbmV3IEFycmF5KDEgPDwgd2luZG93U2l6ZSk7XG4gICAgd25kWzBdID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHduZFsxXSA9IGE7XG4gICAgZm9yICh2YXIgaSA9IDI7IGkgPCB3bmQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHduZFtpXSA9IHRoaXMubXVsKHduZFtpIC0gMV0sIGEpO1xuICAgIH1cblxuICAgIHZhciByZXMgPSB3bmRbMF07XG4gICAgdmFyIGN1cnJlbnQgPSAwO1xuICAgIHZhciBjdXJyZW50TGVuID0gMDtcbiAgICB2YXIgc3RhcnQgPSBudW0uYml0TGVuZ3RoKCkgJSAyNjtcbiAgICBpZiAoc3RhcnQgPT09IDApIHtcbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgZm9yIChpID0gbnVtLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IG51bS53b3Jkc1tpXTtcbiAgICAgIGZvciAodmFyIGogPSBzdGFydCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgIHZhciBiaXQgPSAod29yZCA+PiBqKSAmIDE7XG4gICAgICAgIGlmIChyZXMgIT09IHduZFswXSkge1xuICAgICAgICAgIHJlcyA9IHRoaXMuc3FyKHJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYml0ID09PSAwICYmIGN1cnJlbnQgPT09IDApIHtcbiAgICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnQgPDw9IDE7XG4gICAgICAgIGN1cnJlbnQgfD0gYml0O1xuICAgICAgICBjdXJyZW50TGVuKys7XG4gICAgICAgIGlmIChjdXJyZW50TGVuICE9PSB3aW5kb3dTaXplICYmIChpICE9PSAwIHx8IGogIT09IDApKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSB0aGlzLm11bChyZXMsIHduZFtjdXJyZW50XSk7XG4gICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICBjdXJyZW50ID0gMDtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgdmFyIHIgPSBudW0udW1vZCh0aGlzLm0pO1xuXG4gICAgcmV0dXJuIHIgPT09IG51bSA/IHIuY2xvbmUoKSA6IHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgcmVzID0gbnVtLmNsb25lKCk7XG4gICAgcmVzLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvL1xuICAvLyBNb250Z29tZXJ5IG1ldGhvZCBlbmdpbmVcbiAgLy9cblxuICBCTi5tb250ID0gZnVuY3Rpb24gbW9udCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBNb250KG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gTW9udCAobSkge1xuICAgIFJlZC5jYWxsKHRoaXMsIG0pO1xuXG4gICAgdGhpcy5zaGlmdCA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICBpZiAodGhpcy5zaGlmdCAlIDI2ICE9PSAwKSB7XG4gICAgICB0aGlzLnNoaWZ0ICs9IDI2IC0gKHRoaXMuc2hpZnQgJSAyNik7XG4gICAgfVxuXG4gICAgdGhpcy5yID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLnNoaWZ0KTtcbiAgICB0aGlzLnIyID0gdGhpcy5pbW9kKHRoaXMuci5zcXIoKSk7XG4gICAgdGhpcy5yaW52ID0gdGhpcy5yLl9pbnZtcCh0aGlzLm0pO1xuXG4gICAgdGhpcy5taW52ID0gdGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pO1xuICAgIHRoaXMubWludiA9IHRoaXMubWludi51bW9kKHRoaXMucik7XG4gICAgdGhpcy5taW52ID0gdGhpcy5yLnN1Yih0aGlzLm1pbnYpO1xuICB9XG4gIGluaGVyaXRzKE1vbnQsIFJlZCk7XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5pbW9kKG51bS51c2hsbih0aGlzLnNoaWZ0KSk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHIgPSB0aGlzLmltb2QobnVtLm11bCh0aGlzLnJpbnYpKTtcbiAgICByLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSB7XG4gICAgICBhLndvcmRzWzBdID0gMDtcbiAgICAgIGEubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiBhO1xuICAgIH1cblxuICAgIHZhciB0ID0gYS5pbXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuXG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDApLl9mb3JjZVJlZCh0aGlzKTtcblxuICAgIHZhciB0ID0gYS5tdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIC8vIChBUileLTEgKiBSXjIgPSAoQV4tMSAqIFJeLTEpICogUl4yID0gQV4tMSAqIFJcbiAgICB2YXIgcmVzID0gdGhpcy5pbW9kKGEuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKTtcbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcbn0pKHR5cGVvZiBtb2R1bGUgPT09ICd1bmRlZmluZWQnIHx8IG1vZHVsZSwgdGhpcyk7XG4iLCIvLyBDdXJyZW50bHkgaW4gc3luYyB3aXRoIE5vZGUuanMgbGliL2Fzc2VydC5qc1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2NvbW1pdC8yYTUxYWU0MjRhNTEzZWM5YTZhYTM0NjZiYWEwY2MxZDU1ZGQ0ZjNiXG4vLyBPcmlnaW5hbGx5IGZyb20gbmFyd2hhbC5qcyAoaHR0cDovL25hcndoYWxqcy5vcmcpXG4vLyBDb3B5cmlnaHQgKGMpIDIwMDkgVGhvbWFzIFJvYmluc29uIDwyODBub3J0aC5jb20+XG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgJ1NvZnR3YXJlJyksIHRvXG4vLyBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZVxuLy8gcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yXG4vLyBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICdBUyBJUycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTlxuLy8gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTlxuLy8gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBfcmVxdWlyZSA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvZXJyb3JzJyksXG4gICAgX3JlcXVpcmUkY29kZXMgPSBfcmVxdWlyZS5jb2RlcyxcbiAgICBFUlJfQU1CSUdVT1VTX0FSR1VNRU5UID0gX3JlcXVpcmUkY29kZXMuRVJSX0FNQklHVU9VU19BUkdVTUVOVCxcbiAgICBFUlJfSU5WQUxJRF9BUkdfVFlQRSA9IF9yZXF1aXJlJGNvZGVzLkVSUl9JTlZBTElEX0FSR19UWVBFLFxuICAgIEVSUl9JTlZBTElEX0FSR19WQUxVRSA9IF9yZXF1aXJlJGNvZGVzLkVSUl9JTlZBTElEX0FSR19WQUxVRSxcbiAgICBFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUsXG4gICAgRVJSX01JU1NJTkdfQVJHUyA9IF9yZXF1aXJlJGNvZGVzLkVSUl9NSVNTSU5HX0FSR1M7XG5cbnZhciBBc3NlcnRpb25FcnJvciA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvYXNzZXJ0L2Fzc2VydGlvbl9lcnJvcicpO1xuXG52YXIgX3JlcXVpcmUyID0gcmVxdWlyZSgndXRpbC8nKSxcbiAgICBpbnNwZWN0ID0gX3JlcXVpcmUyLmluc3BlY3Q7XG5cbnZhciBfcmVxdWlyZSR0eXBlcyA9IHJlcXVpcmUoJ3V0aWwvJykudHlwZXMsXG4gICAgaXNQcm9taXNlID0gX3JlcXVpcmUkdHlwZXMuaXNQcm9taXNlLFxuICAgIGlzUmVnRXhwID0gX3JlcXVpcmUkdHlwZXMuaXNSZWdFeHA7XG5cbnZhciBvYmplY3RBc3NpZ24gPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbiA6IHJlcXVpcmUoJ2VzNi1vYmplY3QtYXNzaWduJykuYXNzaWduO1xudmFyIG9iamVjdElzID0gT2JqZWN0LmlzID8gT2JqZWN0LmlzIDogcmVxdWlyZSgnb2JqZWN0LWlzJyk7XG52YXIgZXJyb3JDYWNoZSA9IG5ldyBNYXAoKTtcbnZhciBpc0RlZXBFcXVhbDtcbnZhciBpc0RlZXBTdHJpY3RFcXVhbDtcbnZhciBwYXJzZUV4cHJlc3Npb25BdDtcbnZhciBmaW5kTm9kZUFyb3VuZDtcbnZhciBkZWNvZGVyO1xuXG5mdW5jdGlvbiBsYXp5TG9hZENvbXBhcmlzb24oKSB7XG4gIHZhciBjb21wYXJpc29uID0gcmVxdWlyZSgnLi9pbnRlcm5hbC91dGlsL2NvbXBhcmlzb25zJyk7XG5cbiAgaXNEZWVwRXF1YWwgPSBjb21wYXJpc29uLmlzRGVlcEVxdWFsO1xuICBpc0RlZXBTdHJpY3RFcXVhbCA9IGNvbXBhcmlzb24uaXNEZWVwU3RyaWN0RXF1YWw7XG59IC8vIEVzY2FwZSBjb250cm9sIGNoYXJhY3RlcnMgYnV0IG5vdCBcXG4gYW5kIFxcdCB0byBrZWVwIHRoZSBsaW5lIGJyZWFrcyBhbmRcbi8vIGluZGVudGF0aW9uIGludGFjdC5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250cm9sLXJlZ2V4XG5cblxudmFyIGVzY2FwZVNlcXVlbmNlc1JlZ0V4cCA9IC9bXFx4MDAtXFx4MDhcXHgwYlxceDBjXFx4MGUtXFx4MWZdL2c7XG52YXIgbWV0YSA9IFtcIlxcXFx1MDAwMFwiLCBcIlxcXFx1MDAwMVwiLCBcIlxcXFx1MDAwMlwiLCBcIlxcXFx1MDAwM1wiLCBcIlxcXFx1MDAwNFwiLCBcIlxcXFx1MDAwNVwiLCBcIlxcXFx1MDAwNlwiLCBcIlxcXFx1MDAwN1wiLCAnXFxcXGInLCAnJywgJycsIFwiXFxcXHUwMDBiXCIsICdcXFxcZicsICcnLCBcIlxcXFx1MDAwZVwiLCBcIlxcXFx1MDAwZlwiLCBcIlxcXFx1MDAxMFwiLCBcIlxcXFx1MDAxMVwiLCBcIlxcXFx1MDAxMlwiLCBcIlxcXFx1MDAxM1wiLCBcIlxcXFx1MDAxNFwiLCBcIlxcXFx1MDAxNVwiLCBcIlxcXFx1MDAxNlwiLCBcIlxcXFx1MDAxN1wiLCBcIlxcXFx1MDAxOFwiLCBcIlxcXFx1MDAxOVwiLCBcIlxcXFx1MDAxYVwiLCBcIlxcXFx1MDAxYlwiLCBcIlxcXFx1MDAxY1wiLCBcIlxcXFx1MDAxZFwiLCBcIlxcXFx1MDAxZVwiLCBcIlxcXFx1MDAxZlwiXTtcblxudmFyIGVzY2FwZUZuID0gZnVuY3Rpb24gZXNjYXBlRm4oc3RyKSB7XG4gIHJldHVybiBtZXRhW3N0ci5jaGFyQ29kZUF0KDApXTtcbn07XG5cbnZhciB3YXJuZWQgPSBmYWxzZTsgLy8gVGhlIGFzc2VydCBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIHRoYXQgdGhyb3dcbi8vIEFzc2VydGlvbkVycm9yJ3Mgd2hlbiBwYXJ0aWN1bGFyIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQuIFRoZVxuLy8gYXNzZXJ0IG1vZHVsZSBtdXN0IGNvbmZvcm0gdG8gdGhlIGZvbGxvd2luZyBpbnRlcmZhY2UuXG5cbnZhciBhc3NlcnQgPSBtb2R1bGUuZXhwb3J0cyA9IG9rO1xudmFyIE5PX0VYQ0VQVElPTl9TRU5USU5FTCA9IHt9OyAvLyBBbGwgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbXVzdCB0aHJvdyBhbiBBc3NlcnRpb25FcnJvclxuLy8gd2hlbiBhIGNvcnJlc3BvbmRpbmcgY29uZGl0aW9uIGlzIG5vdCBtZXQsIHdpdGggYSBtZXNzYWdlIHRoYXRcbi8vIG1heSBiZSB1bmRlZmluZWQgaWYgbm90IHByb3ZpZGVkLiBBbGwgYXNzZXJ0aW9uIG1ldGhvZHMgcHJvdmlkZVxuLy8gYm90aCB0aGUgYWN0dWFsIGFuZCBleHBlY3RlZCB2YWx1ZXMgdG8gdGhlIGFzc2VydGlvbiBlcnJvciBmb3Jcbi8vIGRpc3BsYXkgcHVycG9zZXMuXG5cbmZ1bmN0aW9uIGlubmVyRmFpbChvYmopIHtcbiAgaWYgKG9iai5tZXNzYWdlIGluc3RhbmNlb2YgRXJyb3IpIHRocm93IG9iai5tZXNzYWdlO1xuICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3Iob2JqKTtcbn1cblxuZnVuY3Rpb24gZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCBvcGVyYXRvciwgc3RhY2tTdGFydEZuKSB7XG4gIHZhciBhcmdzTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGludGVybmFsTWVzc2FnZTtcblxuICBpZiAoYXJnc0xlbiA9PT0gMCkge1xuICAgIGludGVybmFsTWVzc2FnZSA9ICdGYWlsZWQnO1xuICB9IGVsc2UgaWYgKGFyZ3NMZW4gPT09IDEpIHtcbiAgICBtZXNzYWdlID0gYWN0dWFsO1xuICAgIGFjdHVhbCA9IHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICBpZiAod2FybmVkID09PSBmYWxzZSkge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIHZhciB3YXJuID0gcHJvY2Vzcy5lbWl0V2FybmluZyA/IHByb2Nlc3MuZW1pdFdhcm5pbmcgOiBjb25zb2xlLndhcm4uYmluZChjb25zb2xlKTtcbiAgICAgIHdhcm4oJ2Fzc2VydC5mYWlsKCkgd2l0aCBtb3JlIHRoYW4gb25lIGFyZ3VtZW50IGlzIGRlcHJlY2F0ZWQuICcgKyAnUGxlYXNlIHVzZSBhc3NlcnQuc3RyaWN0RXF1YWwoKSBpbnN0ZWFkIG9yIG9ubHkgcGFzcyBhIG1lc3NhZ2UuJywgJ0RlcHJlY2F0aW9uV2FybmluZycsICdERVAwMDk0Jyk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3NMZW4gPT09IDIpIG9wZXJhdG9yID0gJyE9JztcbiAgfVxuXG4gIGlmIChtZXNzYWdlIGluc3RhbmNlb2YgRXJyb3IpIHRocm93IG1lc3NhZ2U7XG4gIHZhciBlcnJBcmdzID0ge1xuICAgIGFjdHVhbDogYWN0dWFsLFxuICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICBvcGVyYXRvcjogb3BlcmF0b3IgPT09IHVuZGVmaW5lZCA/ICdmYWlsJyA6IG9wZXJhdG9yLFxuICAgIHN0YWNrU3RhcnRGbjogc3RhY2tTdGFydEZuIHx8IGZhaWxcbiAgfTtcblxuICBpZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZXJyQXJncy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgfVxuXG4gIHZhciBlcnIgPSBuZXcgQXNzZXJ0aW9uRXJyb3IoZXJyQXJncyk7XG5cbiAgaWYgKGludGVybmFsTWVzc2FnZSkge1xuICAgIGVyci5tZXNzYWdlID0gaW50ZXJuYWxNZXNzYWdlO1xuICAgIGVyci5nZW5lcmF0ZWRNZXNzYWdlID0gdHJ1ZTtcbiAgfVxuXG4gIHRocm93IGVycjtcbn1cblxuYXNzZXJ0LmZhaWwgPSBmYWlsOyAvLyBUaGUgQXNzZXJ0aW9uRXJyb3IgaXMgZGVmaW5lZCBpbiBpbnRlcm5hbC9lcnJvci5cblxuYXNzZXJ0LkFzc2VydGlvbkVycm9yID0gQXNzZXJ0aW9uRXJyb3I7XG5cbmZ1bmN0aW9uIGlubmVyT2soZm4sIGFyZ0xlbiwgdmFsdWUsIG1lc3NhZ2UpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHZhciBnZW5lcmF0ZWRNZXNzYWdlID0gZmFsc2U7XG5cbiAgICBpZiAoYXJnTGVuID09PSAwKSB7XG4gICAgICBnZW5lcmF0ZWRNZXNzYWdlID0gdHJ1ZTtcbiAgICAgIG1lc3NhZ2UgPSAnTm8gdmFsdWUgYXJndW1lbnQgcGFzc2VkIHRvIGBhc3NlcnQub2soKWAnO1xuICAgIH0gZWxzZSBpZiAobWVzc2FnZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICB0aHJvdyBtZXNzYWdlO1xuICAgIH1cblxuICAgIHZhciBlcnIgPSBuZXcgQXNzZXJ0aW9uRXJyb3Ioe1xuICAgICAgYWN0dWFsOiB2YWx1ZSxcbiAgICAgIGV4cGVjdGVkOiB0cnVlLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIG9wZXJhdG9yOiAnPT0nLFxuICAgICAgc3RhY2tTdGFydEZuOiBmblxuICAgIH0pO1xuICAgIGVyci5nZW5lcmF0ZWRNZXNzYWdlID0gZ2VuZXJhdGVkTWVzc2FnZTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn0gLy8gUHVyZSBhc3NlcnRpb24gdGVzdHMgd2hldGhlciBhIHZhbHVlIGlzIHRydXRoeSwgYXMgZGV0ZXJtaW5lZFxuLy8gYnkgISF2YWx1ZS5cblxuXG5mdW5jdGlvbiBvaygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIGlubmVyT2suYXBwbHkodm9pZCAwLCBbb2ssIGFyZ3MubGVuZ3RoXS5jb25jYXQoYXJncykpO1xufVxuXG5hc3NlcnQub2sgPSBvazsgLy8gVGhlIGVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBzaGFsbG93LCBjb2VyY2l2ZSBlcXVhbGl0eSB3aXRoID09LlxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXByb3BlcnRpZXMgKi9cblxuYXNzZXJ0LmVxdWFsID0gZnVuY3Rpb24gZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgRVJSX01JU1NJTkdfQVJHUygnYWN0dWFsJywgJ2V4cGVjdGVkJyk7XG4gIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuXG5cbiAgaWYgKGFjdHVhbCAhPSBleHBlY3RlZCkge1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogJz09JyxcbiAgICAgIHN0YWNrU3RhcnRGbjogZXF1YWxcbiAgICB9KTtcbiAgfVxufTsgLy8gVGhlIG5vbi1lcXVhbGl0eSBhc3NlcnRpb24gdGVzdHMgZm9yIHdoZXRoZXIgdHdvIG9iamVjdHMgYXJlIG5vdFxuLy8gZXF1YWwgd2l0aCAhPS5cblxuXG5hc3NlcnQubm90RXF1YWwgPSBmdW5jdGlvbiBub3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFUlJfTUlTU0lOR19BUkdTKCdhY3R1YWwnLCAnZXhwZWN0ZWQnKTtcbiAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cblxuICBpZiAoYWN0dWFsID09IGV4cGVjdGVkKSB7XG4gICAgaW5uZXJGYWlsKHtcbiAgICAgIGFjdHVhbDogYWN0dWFsLFxuICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIG9wZXJhdG9yOiAnIT0nLFxuICAgICAgc3RhY2tTdGFydEZuOiBub3RFcXVhbFxuICAgIH0pO1xuICB9XG59OyAvLyBUaGUgZXF1aXZhbGVuY2UgYXNzZXJ0aW9uIHRlc3RzIGEgZGVlcCBlcXVhbGl0eSByZWxhdGlvbi5cblxuXG5hc3NlcnQuZGVlcEVxdWFsID0gZnVuY3Rpb24gZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9NSVNTSU5HX0FSR1MoJ2FjdHVhbCcsICdleHBlY3RlZCcpO1xuICB9XG5cbiAgaWYgKGlzRGVlcEVxdWFsID09PSB1bmRlZmluZWQpIGxhenlMb2FkQ29tcGFyaXNvbigpO1xuXG4gIGlmICghaXNEZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCkpIHtcbiAgICBpbm5lckZhaWwoe1xuICAgICAgYWN0dWFsOiBhY3R1YWwsXG4gICAgICBleHBlY3RlZDogZXhwZWN0ZWQsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgb3BlcmF0b3I6ICdkZWVwRXF1YWwnLFxuICAgICAgc3RhY2tTdGFydEZuOiBkZWVwRXF1YWxcbiAgICB9KTtcbiAgfVxufTsgLy8gVGhlIG5vbi1lcXVpdmFsZW5jZSBhc3NlcnRpb24gdGVzdHMgZm9yIGFueSBkZWVwIGluZXF1YWxpdHkuXG5cblxuYXNzZXJ0Lm5vdERlZXBFcXVhbCA9IGZ1bmN0aW9uIG5vdERlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFUlJfTUlTU0lOR19BUkdTKCdhY3R1YWwnLCAnZXhwZWN0ZWQnKTtcbiAgfVxuXG4gIGlmIChpc0RlZXBFcXVhbCA9PT0gdW5kZWZpbmVkKSBsYXp5TG9hZENvbXBhcmlzb24oKTtcblxuICBpZiAoaXNEZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCkpIHtcbiAgICBpbm5lckZhaWwoe1xuICAgICAgYWN0dWFsOiBhY3R1YWwsXG4gICAgICBleHBlY3RlZDogZXhwZWN0ZWQsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgb3BlcmF0b3I6ICdub3REZWVwRXF1YWwnLFxuICAgICAgc3RhY2tTdGFydEZuOiBub3REZWVwRXF1YWxcbiAgICB9KTtcbiAgfVxufTtcbi8qIGVzbGludC1lbmFibGUgKi9cblxuXG5hc3NlcnQuZGVlcFN0cmljdEVxdWFsID0gZnVuY3Rpb24gZGVlcFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9NSVNTSU5HX0FSR1MoJ2FjdHVhbCcsICdleHBlY3RlZCcpO1xuICB9XG5cbiAgaWYgKGlzRGVlcEVxdWFsID09PSB1bmRlZmluZWQpIGxhenlMb2FkQ29tcGFyaXNvbigpO1xuXG4gIGlmICghaXNEZWVwU3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkpIHtcbiAgICBpbm5lckZhaWwoe1xuICAgICAgYWN0dWFsOiBhY3R1YWwsXG4gICAgICBleHBlY3RlZDogZXhwZWN0ZWQsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgb3BlcmF0b3I6ICdkZWVwU3RyaWN0RXF1YWwnLFxuICAgICAgc3RhY2tTdGFydEZuOiBkZWVwU3RyaWN0RXF1YWxcbiAgICB9KTtcbiAgfVxufTtcblxuYXNzZXJ0Lm5vdERlZXBTdHJpY3RFcXVhbCA9IG5vdERlZXBTdHJpY3RFcXVhbDtcblxuZnVuY3Rpb24gbm90RGVlcFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9NSVNTSU5HX0FSR1MoJ2FjdHVhbCcsICdleHBlY3RlZCcpO1xuICB9XG5cbiAgaWYgKGlzRGVlcEVxdWFsID09PSB1bmRlZmluZWQpIGxhenlMb2FkQ29tcGFyaXNvbigpO1xuXG4gIGlmIChpc0RlZXBTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkKSkge1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogJ25vdERlZXBTdHJpY3RFcXVhbCcsXG4gICAgICBzdGFja1N0YXJ0Rm46IG5vdERlZXBTdHJpY3RFcXVhbFxuICAgIH0pO1xuICB9XG59XG5cbmFzc2VydC5zdHJpY3RFcXVhbCA9IGZ1bmN0aW9uIHN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9NSVNTSU5HX0FSR1MoJ2FjdHVhbCcsICdleHBlY3RlZCcpO1xuICB9XG5cbiAgaWYgKCFvYmplY3RJcyhhY3R1YWwsIGV4cGVjdGVkKSkge1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogJ3N0cmljdEVxdWFsJyxcbiAgICAgIHN0YWNrU3RhcnRGbjogc3RyaWN0RXF1YWxcbiAgICB9KTtcbiAgfVxufTtcblxuYXNzZXJ0Lm5vdFN0cmljdEVxdWFsID0gZnVuY3Rpb24gbm90U3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgRVJSX01JU1NJTkdfQVJHUygnYWN0dWFsJywgJ2V4cGVjdGVkJyk7XG4gIH1cblxuICBpZiAob2JqZWN0SXMoYWN0dWFsLCBleHBlY3RlZCkpIHtcbiAgICBpbm5lckZhaWwoe1xuICAgICAgYWN0dWFsOiBhY3R1YWwsXG4gICAgICBleHBlY3RlZDogZXhwZWN0ZWQsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgb3BlcmF0b3I6ICdub3RTdHJpY3RFcXVhbCcsXG4gICAgICBzdGFja1N0YXJ0Rm46IG5vdFN0cmljdEVxdWFsXG4gICAgfSk7XG4gIH1cbn07XG5cbnZhciBDb21wYXJpc29uID0gZnVuY3Rpb24gQ29tcGFyaXNvbihvYmosIGtleXMsIGFjdHVhbCkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb21wYXJpc29uKTtcblxuICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoYWN0dWFsICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGFjdHVhbFtrZXldID09PSAnc3RyaW5nJyAmJiBpc1JlZ0V4cChvYmpba2V5XSkgJiYgb2JqW2tleV0udGVzdChhY3R1YWxba2V5XSkpIHtcbiAgICAgICAgX3RoaXNba2V5XSA9IGFjdHVhbFtrZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXNba2V5XSA9IG9ialtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59O1xuXG5mdW5jdGlvbiBjb21wYXJlRXhjZXB0aW9uS2V5KGFjdHVhbCwgZXhwZWN0ZWQsIGtleSwgbWVzc2FnZSwga2V5cywgZm4pIHtcbiAgaWYgKCEoa2V5IGluIGFjdHVhbCkgfHwgIWlzRGVlcFN0cmljdEVxdWFsKGFjdHVhbFtrZXldLCBleHBlY3RlZFtrZXldKSkge1xuICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgLy8gQ3JlYXRlIHBsYWNlaG9sZGVyIG9iamVjdHMgdG8gY3JlYXRlIGEgbmljZSBvdXRwdXQuXG4gICAgICB2YXIgYSA9IG5ldyBDb21wYXJpc29uKGFjdHVhbCwga2V5cyk7XG4gICAgICB2YXIgYiA9IG5ldyBDb21wYXJpc29uKGV4cGVjdGVkLCBrZXlzLCBhY3R1YWwpO1xuICAgICAgdmFyIGVyciA9IG5ldyBBc3NlcnRpb25FcnJvcih7XG4gICAgICAgIGFjdHVhbDogYSxcbiAgICAgICAgZXhwZWN0ZWQ6IGIsXG4gICAgICAgIG9wZXJhdG9yOiAnZGVlcFN0cmljdEVxdWFsJyxcbiAgICAgICAgc3RhY2tTdGFydEZuOiBmblxuICAgICAgfSk7XG4gICAgICBlcnIuYWN0dWFsID0gYWN0dWFsO1xuICAgICAgZXJyLmV4cGVjdGVkID0gZXhwZWN0ZWQ7XG4gICAgICBlcnIub3BlcmF0b3IgPSBmbi5uYW1lO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogZm4ubmFtZSxcbiAgICAgIHN0YWNrU3RhcnRGbjogZm5cbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkLCBtc2csIGZuKSB7XG4gIGlmICh0eXBlb2YgZXhwZWN0ZWQgIT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoaXNSZWdFeHAoZXhwZWN0ZWQpKSByZXR1cm4gZXhwZWN0ZWQudGVzdChhY3R1YWwpOyAvLyBhc3NlcnQuZG9lc05vdFRocm93IGRvZXMgbm90IGFjY2VwdCBvYmplY3RzLlxuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnZXhwZWN0ZWQnLCBbJ0Z1bmN0aW9uJywgJ1JlZ0V4cCddLCBleHBlY3RlZCk7XG4gICAgfSAvLyBIYW5kbGUgcHJpbWl0aXZlcyBwcm9wZXJseS5cblxuXG4gICAgaWYgKF90eXBlb2YoYWN0dWFsKSAhPT0gJ29iamVjdCcgfHwgYWN0dWFsID09PSBudWxsKSB7XG4gICAgICB2YXIgZXJyID0gbmV3IEFzc2VydGlvbkVycm9yKHtcbiAgICAgICAgYWN0dWFsOiBhY3R1YWwsXG4gICAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgICAgbWVzc2FnZTogbXNnLFxuICAgICAgICBvcGVyYXRvcjogJ2RlZXBTdHJpY3RFcXVhbCcsXG4gICAgICAgIHN0YWNrU3RhcnRGbjogZm5cbiAgICAgIH0pO1xuICAgICAgZXJyLm9wZXJhdG9yID0gZm4ubmFtZTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGV4cGVjdGVkKTsgLy8gU3BlY2lhbCBoYW5kbGUgZXJyb3JzIHRvIG1ha2Ugc3VyZSB0aGUgbmFtZSBhbmQgdGhlIG1lc3NhZ2UgYXJlIGNvbXBhcmVkXG4gICAgLy8gYXMgd2VsbC5cblxuICAgIGlmIChleHBlY3RlZCBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBrZXlzLnB1c2goJ25hbWUnLCAnbWVzc2FnZScpO1xuICAgIH0gZWxzZSBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVkFMVUUoJ2Vycm9yJywgZXhwZWN0ZWQsICdtYXkgbm90IGJlIGFuIGVtcHR5IG9iamVjdCcpO1xuICAgIH1cblxuICAgIGlmIChpc0RlZXBFcXVhbCA9PT0gdW5kZWZpbmVkKSBsYXp5TG9hZENvbXBhcmlzb24oKTtcbiAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgaWYgKHR5cGVvZiBhY3R1YWxba2V5XSA9PT0gJ3N0cmluZycgJiYgaXNSZWdFeHAoZXhwZWN0ZWRba2V5XSkgJiYgZXhwZWN0ZWRba2V5XS50ZXN0KGFjdHVhbFtrZXldKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbXBhcmVFeGNlcHRpb25LZXkoYWN0dWFsLCBleHBlY3RlZCwga2V5LCBtc2csIGtleXMsIGZuKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyBHdWFyZCBpbnN0YW5jZW9mIGFnYWluc3QgYXJyb3cgZnVuY3Rpb25zIGFzIHRoZXkgZG9uJ3QgaGF2ZSBhIHByb3RvdHlwZS5cblxuXG4gIGlmIChleHBlY3RlZC5wcm90b3R5cGUgIT09IHVuZGVmaW5lZCAmJiBhY3R1YWwgaW5zdGFuY2VvZiBleHBlY3RlZCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKEVycm9yLmlzUHJvdG90eXBlT2YoZXhwZWN0ZWQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGV4cGVjdGVkLmNhbGwoe30sIGFjdHVhbCkgPT09IHRydWU7XG59XG5cbmZ1bmN0aW9uIGdldEFjdHVhbChmbikge1xuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdmbicsICdGdW5jdGlvbicsIGZuKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgZm4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBlO1xuICB9XG5cbiAgcmV0dXJuIE5PX0VYQ0VQVElPTl9TRU5USU5FTDtcbn1cblxuZnVuY3Rpb24gY2hlY2tJc1Byb21pc2Uob2JqKSB7XG4gIC8vIEFjY2VwdCBuYXRpdmUgRVM2IHByb21pc2VzIGFuZCBwcm9taXNlcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBpbiBhIHNpbWlsYXJcbiAgLy8gd2F5LiBEbyBub3QgYWNjZXB0IHRoZW5hYmxlcyB0aGF0IHVzZSBhIGZ1bmN0aW9uIGFzIGBvYmpgIGFuZCB0aGF0IGhhdmUgbm9cbiAgLy8gYGNhdGNoYCBoYW5kbGVyLlxuICAvLyBUT0RPOiB0aGVuYWJsZXMgYXJlIGNoZWNrZWQgdXAgdW50aWwgdGhleSBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMsXG4gIC8vIGJ1dCBhY2NvcmRpbmcgdG8gZG9jdW1lbnRhdGlvbiwgdGhlIGB0aGVuYCBtZXRob2Qgc2hvdWxkIHJlY2VpdmVcbiAgLy8gdGhlIGBmdWxmaWxsYCBhbmQgYHJlamVjdGAgYXJndW1lbnRzIGFzIHdlbGwgb3IgaXQgbWF5IGJlIG5ldmVyIHJlc29sdmVkLlxuICByZXR1cm4gaXNQcm9taXNlKG9iaikgfHwgb2JqICE9PSBudWxsICYmIF90eXBlb2Yob2JqKSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9iai50aGVuID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBvYmouY2F0Y2ggPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIHdhaXRGb3JBY3R1YWwocHJvbWlzZUZuKSB7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzdWx0UHJvbWlzZTtcblxuICAgIGlmICh0eXBlb2YgcHJvbWlzZUZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBSZXR1cm4gYSByZWplY3RlZCBwcm9taXNlIGlmIGBwcm9taXNlRm5gIHRocm93cyBzeW5jaHJvbm91c2x5LlxuICAgICAgcmVzdWx0UHJvbWlzZSA9IHByb21pc2VGbigpOyAvLyBGYWlsIGluIGNhc2Ugbm8gcHJvbWlzZSBpcyByZXR1cm5lZC5cblxuICAgICAgaWYgKCFjaGVja0lzUHJvbWlzZShyZXN1bHRQcm9taXNlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfUkVUVVJOX1ZBTFVFKCdpbnN0YW5jZSBvZiBQcm9taXNlJywgJ3Byb21pc2VGbicsIHJlc3VsdFByb21pc2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2hlY2tJc1Byb21pc2UocHJvbWlzZUZuKSkge1xuICAgICAgcmVzdWx0UHJvbWlzZSA9IHByb21pc2VGbjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdwcm9taXNlRm4nLCBbJ0Z1bmN0aW9uJywgJ1Byb21pc2UnXSwgcHJvbWlzZUZuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gcmVzdWx0UHJvbWlzZTtcbiAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBOT19FWENFUFRJT05fU0VOVElORUw7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBlO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZXhwZWN0c0Vycm9yKHN0YWNrU3RhcnRGbiwgYWN0dWFsLCBlcnJvciwgbWVzc2FnZSkge1xuICBpZiAodHlwZW9mIGVycm9yID09PSAnc3RyaW5nJykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSA0KSB7XG4gICAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ2Vycm9yJywgWydPYmplY3QnLCAnRXJyb3InLCAnRnVuY3Rpb24nLCAnUmVnRXhwJ10sIGVycm9yKTtcbiAgICB9XG5cbiAgICBpZiAoX3R5cGVvZihhY3R1YWwpID09PSAnb2JqZWN0JyAmJiBhY3R1YWwgIT09IG51bGwpIHtcbiAgICAgIGlmIChhY3R1YWwubWVzc2FnZSA9PT0gZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVSUl9BTUJJR1VPVVNfQVJHVU1FTlQoJ2Vycm9yL21lc3NhZ2UnLCBcIlRoZSBlcnJvciBtZXNzYWdlIFxcXCJcIi5jb25jYXQoYWN0dWFsLm1lc3NhZ2UsIFwiXFxcIiBpcyBpZGVudGljYWwgdG8gdGhlIG1lc3NhZ2UuXCIpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGFjdHVhbCA9PT0gZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFUlJfQU1CSUdVT1VTX0FSR1VNRU5UKCdlcnJvci9tZXNzYWdlJywgXCJUaGUgZXJyb3IgXFxcIlwiLmNvbmNhdChhY3R1YWwsIFwiXFxcIiBpcyBpZGVudGljYWwgdG8gdGhlIG1lc3NhZ2UuXCIpKTtcbiAgICB9XG5cbiAgICBtZXNzYWdlID0gZXJyb3I7XG4gICAgZXJyb3IgPSB1bmRlZmluZWQ7XG4gIH0gZWxzZSBpZiAoZXJyb3IgIT0gbnVsbCAmJiBfdHlwZW9mKGVycm9yKSAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIGVycm9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdlcnJvcicsIFsnT2JqZWN0JywgJ0Vycm9yJywgJ0Z1bmN0aW9uJywgJ1JlZ0V4cCddLCBlcnJvcik7XG4gIH1cblxuICBpZiAoYWN0dWFsID09PSBOT19FWENFUFRJT05fU0VOVElORUwpIHtcbiAgICB2YXIgZGV0YWlscyA9ICcnO1xuXG4gICAgaWYgKGVycm9yICYmIGVycm9yLm5hbWUpIHtcbiAgICAgIGRldGFpbHMgKz0gXCIgKFwiLmNvbmNhdChlcnJvci5uYW1lLCBcIilcIik7XG4gICAgfVxuXG4gICAgZGV0YWlscyArPSBtZXNzYWdlID8gXCI6IFwiLmNvbmNhdChtZXNzYWdlKSA6ICcuJztcbiAgICB2YXIgZm5UeXBlID0gc3RhY2tTdGFydEZuLm5hbWUgPT09ICdyZWplY3RzJyA/ICdyZWplY3Rpb24nIDogJ2V4Y2VwdGlvbic7XG4gICAgaW5uZXJGYWlsKHtcbiAgICAgIGFjdHVhbDogdW5kZWZpbmVkLFxuICAgICAgZXhwZWN0ZWQ6IGVycm9yLFxuICAgICAgb3BlcmF0b3I6IHN0YWNrU3RhcnRGbi5uYW1lLFxuICAgICAgbWVzc2FnZTogXCJNaXNzaW5nIGV4cGVjdGVkIFwiLmNvbmNhdChmblR5cGUpLmNvbmNhdChkZXRhaWxzKSxcbiAgICAgIHN0YWNrU3RhcnRGbjogc3RhY2tTdGFydEZuXG4gICAgfSk7XG4gIH1cblxuICBpZiAoZXJyb3IgJiYgIWV4cGVjdGVkRXhjZXB0aW9uKGFjdHVhbCwgZXJyb3IsIG1lc3NhZ2UsIHN0YWNrU3RhcnRGbikpIHtcbiAgICB0aHJvdyBhY3R1YWw7XG4gIH1cbn1cblxuZnVuY3Rpb24gZXhwZWN0c05vRXJyb3Ioc3RhY2tTdGFydEZuLCBhY3R1YWwsIGVycm9yLCBtZXNzYWdlKSB7XG4gIGlmIChhY3R1YWwgPT09IE5PX0VYQ0VQVElPTl9TRU5USU5FTCkgcmV0dXJuO1xuXG4gIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgbWVzc2FnZSA9IGVycm9yO1xuICAgIGVycm9yID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKCFlcnJvciB8fCBleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGVycm9yKSkge1xuICAgIHZhciBkZXRhaWxzID0gbWVzc2FnZSA/IFwiOiBcIi5jb25jYXQobWVzc2FnZSkgOiAnLic7XG4gICAgdmFyIGZuVHlwZSA9IHN0YWNrU3RhcnRGbi5uYW1lID09PSAnZG9lc05vdFJlamVjdCcgPyAncmVqZWN0aW9uJyA6ICdleGNlcHRpb24nO1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBlcnJvcixcbiAgICAgIG9wZXJhdG9yOiBzdGFja1N0YXJ0Rm4ubmFtZSxcbiAgICAgIG1lc3NhZ2U6IFwiR290IHVud2FudGVkIFwiLmNvbmNhdChmblR5cGUpLmNvbmNhdChkZXRhaWxzLCBcIlxcblwiKSArIFwiQWN0dWFsIG1lc3NhZ2U6IFxcXCJcIi5jb25jYXQoYWN0dWFsICYmIGFjdHVhbC5tZXNzYWdlLCBcIlxcXCJcIiksXG4gICAgICBzdGFja1N0YXJ0Rm46IHN0YWNrU3RhcnRGblxuICAgIH0pO1xuICB9XG5cbiAgdGhyb3cgYWN0dWFsO1xufVxuXG5hc3NlcnQudGhyb3dzID0gZnVuY3Rpb24gdGhyb3dzKHByb21pc2VGbikge1xuICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIgPiAxID8gX2xlbjIgLSAxIDogMCksIF9rZXkyID0gMTsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgIGFyZ3NbX2tleTIgLSAxXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gIH1cblxuICBleHBlY3RzRXJyb3IuYXBwbHkodm9pZCAwLCBbdGhyb3dzLCBnZXRBY3R1YWwocHJvbWlzZUZuKV0uY29uY2F0KGFyZ3MpKTtcbn07XG5cbmFzc2VydC5yZWplY3RzID0gZnVuY3Rpb24gcmVqZWN0cyhwcm9taXNlRm4pIHtcbiAgZm9yICh2YXIgX2xlbjMgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4zID4gMSA/IF9sZW4zIC0gMSA6IDApLCBfa2V5MyA9IDE7IF9rZXkzIDwgX2xlbjM7IF9rZXkzKyspIHtcbiAgICBhcmdzW19rZXkzIC0gMV0gPSBhcmd1bWVudHNbX2tleTNdO1xuICB9XG5cbiAgcmV0dXJuIHdhaXRGb3JBY3R1YWwocHJvbWlzZUZuKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICByZXR1cm4gZXhwZWN0c0Vycm9yLmFwcGx5KHZvaWQgMCwgW3JlamVjdHMsIHJlc3VsdF0uY29uY2F0KGFyZ3MpKTtcbiAgfSk7XG59O1xuXG5hc3NlcnQuZG9lc05vdFRocm93ID0gZnVuY3Rpb24gZG9lc05vdFRocm93KGZuKSB7XG4gIGZvciAodmFyIF9sZW40ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuNCA+IDEgPyBfbGVuNCAtIDEgOiAwKSwgX2tleTQgPSAxOyBfa2V5NCA8IF9sZW40OyBfa2V5NCsrKSB7XG4gICAgYXJnc1tfa2V5NCAtIDFdID0gYXJndW1lbnRzW19rZXk0XTtcbiAgfVxuXG4gIGV4cGVjdHNOb0Vycm9yLmFwcGx5KHZvaWQgMCwgW2RvZXNOb3RUaHJvdywgZ2V0QWN0dWFsKGZuKV0uY29uY2F0KGFyZ3MpKTtcbn07XG5cbmFzc2VydC5kb2VzTm90UmVqZWN0ID0gZnVuY3Rpb24gZG9lc05vdFJlamVjdChmbikge1xuICBmb3IgKHZhciBfbGVuNSA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjUgPiAxID8gX2xlbjUgLSAxIDogMCksIF9rZXk1ID0gMTsgX2tleTUgPCBfbGVuNTsgX2tleTUrKykge1xuICAgIGFyZ3NbX2tleTUgLSAxXSA9IGFyZ3VtZW50c1tfa2V5NV07XG4gIH1cblxuICByZXR1cm4gd2FpdEZvckFjdHVhbChmbikudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgcmV0dXJuIGV4cGVjdHNOb0Vycm9yLmFwcGx5KHZvaWQgMCwgW2RvZXNOb3RSZWplY3QsIHJlc3VsdF0uY29uY2F0KGFyZ3MpKTtcbiAgfSk7XG59O1xuXG5hc3NlcnQuaWZFcnJvciA9IGZ1bmN0aW9uIGlmRXJyb3IoZXJyKSB7XG4gIGlmIChlcnIgIT09IG51bGwgJiYgZXJyICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgbWVzc2FnZSA9ICdpZkVycm9yIGdvdCB1bndhbnRlZCBleGNlcHRpb246ICc7XG5cbiAgICBpZiAoX3R5cGVvZihlcnIpID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgZXJyLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoZXJyLm1lc3NhZ2UubGVuZ3RoID09PSAwICYmIGVyci5jb25zdHJ1Y3Rvcikge1xuICAgICAgICBtZXNzYWdlICs9IGVyci5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSArPSBlcnIubWVzc2FnZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZSArPSBpbnNwZWN0KGVycik7XG4gICAgfVxuXG4gICAgdmFyIG5ld0VyciA9IG5ldyBBc3NlcnRpb25FcnJvcih7XG4gICAgICBhY3R1YWw6IGVycixcbiAgICAgIGV4cGVjdGVkOiBudWxsLFxuICAgICAgb3BlcmF0b3I6ICdpZkVycm9yJyxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBzdGFja1N0YXJ0Rm46IGlmRXJyb3JcbiAgICB9KTsgLy8gTWFrZSBzdXJlIHdlIGFjdHVhbGx5IGhhdmUgYSBzdGFjayB0cmFjZSFcblxuICAgIHZhciBvcmlnU3RhY2sgPSBlcnIuc3RhY2s7XG5cbiAgICBpZiAodHlwZW9mIG9yaWdTdGFjayA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIFRoaXMgd2lsbCByZW1vdmUgYW55IGR1cGxpY2F0ZWQgZnJhbWVzIGZyb20gdGhlIGVycm9yIGZyYW1lcyB0YWtlblxuICAgICAgLy8gZnJvbSB3aXRoaW4gYGlmRXJyb3JgIGFuZCBhZGQgdGhlIG9yaWdpbmFsIGVycm9yIGZyYW1lcyB0byB0aGUgbmV3bHlcbiAgICAgIC8vIGNyZWF0ZWQgb25lcy5cbiAgICAgIHZhciB0bXAyID0gb3JpZ1N0YWNrLnNwbGl0KCdcXG4nKTtcbiAgICAgIHRtcDIuc2hpZnQoKTsgLy8gRmlsdGVyIGFsbCBmcmFtZXMgZXhpc3RpbmcgaW4gZXJyLnN0YWNrLlxuXG4gICAgICB2YXIgdG1wMSA9IG5ld0Vyci5zdGFjay5zcGxpdCgnXFxuJyk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG1wMi5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBmcmFtZS5cbiAgICAgICAgdmFyIHBvcyA9IHRtcDEuaW5kZXhPZih0bXAyW2ldKTtcblxuICAgICAgICBpZiAocG9zICE9PSAtMSkge1xuICAgICAgICAgIC8vIE9ubHkga2VlcCBuZXcgZnJhbWVzLlxuICAgICAgICAgIHRtcDEgPSB0bXAxLnNsaWNlKDAsIHBvcyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbmV3RXJyLnN0YWNrID0gXCJcIi5jb25jYXQodG1wMS5qb2luKCdcXG4nKSwgXCJcXG5cIikuY29uY2F0KHRtcDIuam9pbignXFxuJykpO1xuICAgIH1cblxuICAgIHRocm93IG5ld0VycjtcbiAgfVxufTsgLy8gRXhwb3NlIGEgc3RyaWN0IG9ubHkgdmFyaWFudCBvZiBhc3NlcnRcblxuXG5mdW5jdGlvbiBzdHJpY3QoKSB7XG4gIGZvciAodmFyIF9sZW42ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuNiksIF9rZXk2ID0gMDsgX2tleTYgPCBfbGVuNjsgX2tleTYrKykge1xuICAgIGFyZ3NbX2tleTZdID0gYXJndW1lbnRzW19rZXk2XTtcbiAgfVxuXG4gIGlubmVyT2suYXBwbHkodm9pZCAwLCBbc3RyaWN0LCBhcmdzLmxlbmd0aF0uY29uY2F0KGFyZ3MpKTtcbn1cblxuYXNzZXJ0LnN0cmljdCA9IG9iamVjdEFzc2lnbihzdHJpY3QsIGFzc2VydCwge1xuICBlcXVhbDogYXNzZXJ0LnN0cmljdEVxdWFsLFxuICBkZWVwRXF1YWw6IGFzc2VydC5kZWVwU3RyaWN0RXF1YWwsXG4gIG5vdEVxdWFsOiBhc3NlcnQubm90U3RyaWN0RXF1YWwsXG4gIG5vdERlZXBFcXVhbDogYXNzZXJ0Lm5vdERlZXBTdHJpY3RFcXVhbFxufSk7XG5hc3NlcnQuc3RyaWN0LnN0cmljdCA9IGFzc2VydC5zdHJpY3Q7IiwiLy8gQ3VycmVudGx5IGluIHN5bmMgd2l0aCBOb2RlLmpzIGxpYi9pbnRlcm5hbC9hc3NlcnQvYXNzZXJ0aW9uX2Vycm9yLmpzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvY29tbWl0LzA4MTc4NDBmNzc1MDMyMTY5ZGRkNzBjODVhYzA1OWYxOGZmY2M4MWNcbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IHZhciBvd25LZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgaWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSAnZnVuY3Rpb24nKSB7IG93bktleXMgPSBvd25LZXlzLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSkuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBzeW0pLmVudW1lcmFibGU7IH0pKTsgfSBvd25LZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpIHsgdmFyIF9jYWNoZSA9IHR5cGVvZiBNYXAgPT09IFwiZnVuY3Rpb25cIiA/IG5ldyBNYXAoKSA6IHVuZGVmaW5lZDsgX3dyYXBOYXRpdmVTdXBlciA9IGZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpIHsgaWYgKENsYXNzID09PSBudWxsIHx8ICFfaXNOYXRpdmVGdW5jdGlvbihDbGFzcykpIHJldHVybiBDbGFzczsgaWYgKHR5cGVvZiBDbGFzcyAhPT0gXCJmdW5jdGlvblwiKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBpZiAodHlwZW9mIF9jYWNoZSAhPT0gXCJ1bmRlZmluZWRcIikgeyBpZiAoX2NhY2hlLmhhcyhDbGFzcykpIHJldHVybiBfY2FjaGUuZ2V0KENsYXNzKTsgX2NhY2hlLnNldChDbGFzcywgV3JhcHBlcik7IH0gZnVuY3Rpb24gV3JhcHBlcigpIHsgcmV0dXJuIF9jb25zdHJ1Y3QoQ2xhc3MsIGFyZ3VtZW50cywgX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yKTsgfSBXcmFwcGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBXcmFwcGVyLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyByZXR1cm4gX3NldFByb3RvdHlwZU9mKFdyYXBwZXIsIENsYXNzKTsgfTsgcmV0dXJuIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfY29uc3RydWN0KFBhcmVudCwgYXJncywgQ2xhc3MpIHsgaWYgKGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpKSB7IF9jb25zdHJ1Y3QgPSBSZWZsZWN0LmNvbnN0cnVjdDsgfSBlbHNlIHsgX2NvbnN0cnVjdCA9IGZ1bmN0aW9uIF9jb25zdHJ1Y3QoUGFyZW50LCBhcmdzLCBDbGFzcykgeyB2YXIgYSA9IFtudWxsXTsgYS5wdXNoLmFwcGx5KGEsIGFyZ3MpOyB2YXIgQ29uc3RydWN0b3IgPSBGdW5jdGlvbi5iaW5kLmFwcGx5KFBhcmVudCwgYSk7IHZhciBpbnN0YW5jZSA9IG5ldyBDb25zdHJ1Y3RvcigpOyBpZiAoQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihpbnN0YW5jZSwgQ2xhc3MucHJvdG90eXBlKTsgcmV0dXJuIGluc3RhbmNlOyB9OyB9IHJldHVybiBfY29uc3RydWN0LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlRnVuY3Rpb24oZm4pIHsgcmV0dXJuIEZ1bmN0aW9uLnRvU3RyaW5nLmNhbGwoZm4pLmluZGV4T2YoXCJbbmF0aXZlIGNvZGVdXCIpICE9PSAtMTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbnZhciBfcmVxdWlyZSA9IHJlcXVpcmUoJ3V0aWwvJyksXG4gICAgaW5zcGVjdCA9IF9yZXF1aXJlLmluc3BlY3Q7XG5cbnZhciBfcmVxdWlyZTIgPSByZXF1aXJlKCcuLi9lcnJvcnMnKSxcbiAgICBFUlJfSU5WQUxJRF9BUkdfVFlQRSA9IF9yZXF1aXJlMi5jb2Rlcy5FUlJfSU5WQUxJRF9BUkdfVFlQRTsgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nL2VuZHNXaXRoXG5cblxuZnVuY3Rpb24gZW5kc1dpdGgoc3RyLCBzZWFyY2gsIHRoaXNfbGVuKSB7XG4gIGlmICh0aGlzX2xlbiA9PT0gdW5kZWZpbmVkIHx8IHRoaXNfbGVuID4gc3RyLmxlbmd0aCkge1xuICAgIHRoaXNfbGVuID0gc3RyLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiBzdHIuc3Vic3RyaW5nKHRoaXNfbGVuIC0gc2VhcmNoLmxlbmd0aCwgdGhpc19sZW4pID09PSBzZWFyY2g7XG59IC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9yZXBlYXRcblxuXG5mdW5jdGlvbiByZXBlYXQoc3RyLCBjb3VudCkge1xuICBjb3VudCA9IE1hdGguZmxvb3IoY291bnQpO1xuICBpZiAoc3RyLmxlbmd0aCA9PSAwIHx8IGNvdW50ID09IDApIHJldHVybiAnJztcbiAgdmFyIG1heENvdW50ID0gc3RyLmxlbmd0aCAqIGNvdW50O1xuICBjb3VudCA9IE1hdGguZmxvb3IoTWF0aC5sb2coY291bnQpIC8gTWF0aC5sb2coMikpO1xuXG4gIHdoaWxlIChjb3VudCkge1xuICAgIHN0ciArPSBzdHI7XG4gICAgY291bnQtLTtcbiAgfVxuXG4gIHN0ciArPSBzdHIuc3Vic3RyaW5nKDAsIG1heENvdW50IC0gc3RyLmxlbmd0aCk7XG4gIHJldHVybiBzdHI7XG59XG5cbnZhciBibHVlID0gJyc7XG52YXIgZ3JlZW4gPSAnJztcbnZhciByZWQgPSAnJztcbnZhciB3aGl0ZSA9ICcnO1xudmFyIGtSZWFkYWJsZU9wZXJhdG9yID0ge1xuICBkZWVwU3RyaWN0RXF1YWw6ICdFeHBlY3RlZCB2YWx1ZXMgdG8gYmUgc3RyaWN0bHkgZGVlcC1lcXVhbDonLFxuICBzdHJpY3RFcXVhbDogJ0V4cGVjdGVkIHZhbHVlcyB0byBiZSBzdHJpY3RseSBlcXVhbDonLFxuICBzdHJpY3RFcXVhbE9iamVjdDogJ0V4cGVjdGVkIFwiYWN0dWFsXCIgdG8gYmUgcmVmZXJlbmNlLWVxdWFsIHRvIFwiZXhwZWN0ZWRcIjonLFxuICBkZWVwRXF1YWw6ICdFeHBlY3RlZCB2YWx1ZXMgdG8gYmUgbG9vc2VseSBkZWVwLWVxdWFsOicsXG4gIGVxdWFsOiAnRXhwZWN0ZWQgdmFsdWVzIHRvIGJlIGxvb3NlbHkgZXF1YWw6JyxcbiAgbm90RGVlcFN0cmljdEVxdWFsOiAnRXhwZWN0ZWQgXCJhY3R1YWxcIiBub3QgdG8gYmUgc3RyaWN0bHkgZGVlcC1lcXVhbCB0bzonLFxuICBub3RTdHJpY3RFcXVhbDogJ0V4cGVjdGVkIFwiYWN0dWFsXCIgdG8gYmUgc3RyaWN0bHkgdW5lcXVhbCB0bzonLFxuICBub3RTdHJpY3RFcXVhbE9iamVjdDogJ0V4cGVjdGVkIFwiYWN0dWFsXCIgbm90IHRvIGJlIHJlZmVyZW5jZS1lcXVhbCB0byBcImV4cGVjdGVkXCI6JyxcbiAgbm90RGVlcEVxdWFsOiAnRXhwZWN0ZWQgXCJhY3R1YWxcIiBub3QgdG8gYmUgbG9vc2VseSBkZWVwLWVxdWFsIHRvOicsXG4gIG5vdEVxdWFsOiAnRXhwZWN0ZWQgXCJhY3R1YWxcIiB0byBiZSBsb29zZWx5IHVuZXF1YWwgdG86JyxcbiAgbm90SWRlbnRpY2FsOiAnVmFsdWVzIGlkZW50aWNhbCBidXQgbm90IHJlZmVyZW5jZS1lcXVhbDonXG59OyAvLyBDb21wYXJpbmcgc2hvcnQgcHJpbWl0aXZlcyBzaG91bGQganVzdCBzaG93ID09PSAvICE9PSBpbnN0ZWFkIG9mIHVzaW5nIHRoZVxuLy8gZGlmZi5cblxudmFyIGtNYXhTaG9ydExlbmd0aCA9IDEwO1xuXG5mdW5jdGlvbiBjb3B5RXJyb3Ioc291cmNlKSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgdmFyIHRhcmdldCA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHNvdXJjZSkpO1xuICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH0pO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCAnbWVzc2FnZScsIHtcbiAgICB2YWx1ZTogc291cmNlLm1lc3NhZ2VcbiAgfSk7XG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIGluc3BlY3RWYWx1ZSh2YWwpIHtcbiAgLy8gVGhlIHV0aWwuaW5zcGVjdCBkZWZhdWx0IHZhbHVlcyBjb3VsZCBiZSBjaGFuZ2VkLiBUaGlzIG1ha2VzIHN1cmUgdGhlXG4gIC8vIGVycm9yIG1lc3NhZ2VzIGNvbnRhaW4gdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBuZXZlcnRoZWxlc3MuXG4gIHJldHVybiBpbnNwZWN0KHZhbCwge1xuICAgIGNvbXBhY3Q6IGZhbHNlLFxuICAgIGN1c3RvbUluc3BlY3Q6IGZhbHNlLFxuICAgIGRlcHRoOiAxMDAwLFxuICAgIG1heEFycmF5TGVuZ3RoOiBJbmZpbml0eSxcbiAgICAvLyBBc3NlcnQgY29tcGFyZXMgb25seSBlbnVtZXJhYmxlIHByb3BlcnRpZXMgKHdpdGggYSBmZXcgZXhjZXB0aW9ucykuXG4gICAgc2hvd0hpZGRlbjogZmFsc2UsXG4gICAgLy8gSGF2aW5nIGEgbG9uZyBsaW5lIGFzIGVycm9yIGlzIGJldHRlciB0aGFuIHdyYXBwaW5nIHRoZSBsaW5lIGZvclxuICAgIC8vIGNvbXBhcmlzb24gZm9yIG5vdy5cbiAgICAvLyBUT0RPKEJyaWRnZUFSKTogYGJyZWFrTGVuZ3RoYCBzaG91bGQgYmUgbGltaXRlZCBhcyBzb29uIGFzIHNvb24gYXMgd2VcbiAgICAvLyBoYXZlIG1ldGEgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGluc3BlY3RlZCBwcm9wZXJ0aWVzIChpLmUuLCBrbm93IHdoZXJlXG4gICAgLy8gaW4gd2hhdCBsaW5lIHRoZSBwcm9wZXJ0eSBzdGFydHMgYW5kIGVuZHMpLlxuICAgIGJyZWFrTGVuZ3RoOiBJbmZpbml0eSxcbiAgICAvLyBBc3NlcnQgZG9lcyBub3QgZGV0ZWN0IHByb3hpZXMgY3VycmVudGx5LlxuICAgIHNob3dQcm94eTogZmFsc2UsXG4gICAgc29ydGVkOiB0cnVlLFxuICAgIC8vIEluc3BlY3QgZ2V0dGVycyBhcyB3ZSBhbHNvIGNoZWNrIHRoZW0gd2hlbiBjb21wYXJpbmcgZW50cmllcy5cbiAgICBnZXR0ZXJzOiB0cnVlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFcnJEaWZmKGFjdHVhbCwgZXhwZWN0ZWQsIG9wZXJhdG9yKSB7XG4gIHZhciBvdGhlciA9ICcnO1xuICB2YXIgcmVzID0gJyc7XG4gIHZhciBsYXN0UG9zID0gMDtcbiAgdmFyIGVuZCA9ICcnO1xuICB2YXIgc2tpcHBlZCA9IGZhbHNlO1xuICB2YXIgYWN0dWFsSW5zcGVjdGVkID0gaW5zcGVjdFZhbHVlKGFjdHVhbCk7XG4gIHZhciBhY3R1YWxMaW5lcyA9IGFjdHVhbEluc3BlY3RlZC5zcGxpdCgnXFxuJyk7XG4gIHZhciBleHBlY3RlZExpbmVzID0gaW5zcGVjdFZhbHVlKGV4cGVjdGVkKS5zcGxpdCgnXFxuJyk7XG4gIHZhciBpID0gMDtcbiAgdmFyIGluZGljYXRvciA9ICcnOyAvLyBJbiBjYXNlIGJvdGggdmFsdWVzIGFyZSBvYmplY3RzIGV4cGxpY2l0bHkgbWFyayB0aGVtIGFzIG5vdCByZWZlcmVuY2UgZXF1YWxcbiAgLy8gZm9yIHRoZSBgc3RyaWN0RXF1YWxgIG9wZXJhdG9yLlxuXG4gIGlmIChvcGVyYXRvciA9PT0gJ3N0cmljdEVxdWFsJyAmJiBfdHlwZW9mKGFjdHVhbCkgPT09ICdvYmplY3QnICYmIF90eXBlb2YoZXhwZWN0ZWQpID09PSAnb2JqZWN0JyAmJiBhY3R1YWwgIT09IG51bGwgJiYgZXhwZWN0ZWQgIT09IG51bGwpIHtcbiAgICBvcGVyYXRvciA9ICdzdHJpY3RFcXVhbE9iamVjdCc7XG4gIH0gLy8gSWYgXCJhY3R1YWxcIiBhbmQgXCJleHBlY3RlZFwiIGZpdCBvbiBhIHNpbmdsZSBsaW5lIGFuZCB0aGV5IGFyZSBub3Qgc3RyaWN0bHlcbiAgLy8gZXF1YWwsIGNoZWNrIGZ1cnRoZXIgc3BlY2lhbCBoYW5kbGluZy5cblxuXG4gIGlmIChhY3R1YWxMaW5lcy5sZW5ndGggPT09IDEgJiYgZXhwZWN0ZWRMaW5lcy5sZW5ndGggPT09IDEgJiYgYWN0dWFsTGluZXNbMF0gIT09IGV4cGVjdGVkTGluZXNbMF0pIHtcbiAgICB2YXIgaW5wdXRMZW5ndGggPSBhY3R1YWxMaW5lc1swXS5sZW5ndGggKyBleHBlY3RlZExpbmVzWzBdLmxlbmd0aDsgLy8gSWYgdGhlIGNoYXJhY3RlciBsZW5ndGggb2YgXCJhY3R1YWxcIiBhbmQgXCJleHBlY3RlZFwiIHRvZ2V0aGVyIGlzIGxlc3MgdGhhblxuICAgIC8vIGtNYXhTaG9ydExlbmd0aCBhbmQgaWYgbmVpdGhlciBpcyBhbiBvYmplY3QgYW5kIGF0IGxlYXN0IG9uZSBvZiB0aGVtIGlzXG4gICAgLy8gbm90IGB6ZXJvYCwgdXNlIHRoZSBzdHJpY3QgZXF1YWwgY29tcGFyaXNvbiB0byB2aXN1YWxpemUgdGhlIG91dHB1dC5cblxuICAgIGlmIChpbnB1dExlbmd0aCA8PSBrTWF4U2hvcnRMZW5ndGgpIHtcbiAgICAgIGlmICgoX3R5cGVvZihhY3R1YWwpICE9PSAnb2JqZWN0JyB8fCBhY3R1YWwgPT09IG51bGwpICYmIChfdHlwZW9mKGV4cGVjdGVkKSAhPT0gJ29iamVjdCcgfHwgZXhwZWN0ZWQgPT09IG51bGwpICYmIChhY3R1YWwgIT09IDAgfHwgZXhwZWN0ZWQgIT09IDApKSB7XG4gICAgICAgIC8vIC0wID09PSArMFxuICAgICAgICByZXR1cm4gXCJcIi5jb25jYXQoa1JlYWRhYmxlT3BlcmF0b3Jbb3BlcmF0b3JdLCBcIlxcblxcblwiKSArIFwiXCIuY29uY2F0KGFjdHVhbExpbmVzWzBdLCBcIiAhPT0gXCIpLmNvbmNhdChleHBlY3RlZExpbmVzWzBdLCBcIlxcblwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9wZXJhdG9yICE9PSAnc3RyaWN0RXF1YWxPYmplY3QnKSB7XG4gICAgICAvLyBJZiB0aGUgc3RkZXJyIGlzIGEgdHR5IGFuZCB0aGUgaW5wdXQgbGVuZ3RoIGlzIGxvd2VyIHRoYW4gdGhlIGN1cnJlbnRcbiAgICAgIC8vIGNvbHVtbnMgcGVyIGxpbmUsIGFkZCBhIG1pc21hdGNoIGluZGljYXRvciBiZWxvdyB0aGUgb3V0cHV0LiBJZiBpdCBpc1xuICAgICAgLy8gbm90IGEgdHR5LCB1c2UgYSBkZWZhdWx0IHZhbHVlIG9mIDgwIGNoYXJhY3RlcnMuXG4gICAgICB2YXIgbWF4TGVuZ3RoID0gcHJvY2Vzcy5zdGRlcnIgJiYgcHJvY2Vzcy5zdGRlcnIuaXNUVFkgPyBwcm9jZXNzLnN0ZGVyci5jb2x1bW5zIDogODA7XG5cbiAgICAgIGlmIChpbnB1dExlbmd0aCA8IG1heExlbmd0aCkge1xuICAgICAgICB3aGlsZSAoYWN0dWFsTGluZXNbMF1baV0gPT09IGV4cGVjdGVkTGluZXNbMF1baV0pIHtcbiAgICAgICAgICBpKys7XG4gICAgICAgIH0gLy8gSWdub3JlIHRoZSBmaXJzdCBjaGFyYWN0ZXJzLlxuXG5cbiAgICAgICAgaWYgKGkgPiAyKSB7XG4gICAgICAgICAgLy8gQWRkIHBvc2l0aW9uIGluZGljYXRvciBmb3IgdGhlIGZpcnN0IG1pc21hdGNoIGluIGNhc2UgaXQgaXMgYVxuICAgICAgICAgIC8vIHNpbmdsZSBsaW5lIGFuZCB0aGUgaW5wdXQgbGVuZ3RoIGlzIGxlc3MgdGhhbiB0aGUgY29sdW1uIGxlbmd0aC5cbiAgICAgICAgICBpbmRpY2F0b3IgPSBcIlxcbiAgXCIuY29uY2F0KHJlcGVhdCgnICcsIGkpLCBcIl5cIik7XG4gICAgICAgICAgaSA9IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gLy8gUmVtb3ZlIGFsbCBlbmRpbmcgbGluZXMgdGhhdCBtYXRjaCAodGhpcyBvcHRpbWl6ZXMgdGhlIG91dHB1dCBmb3JcbiAgLy8gcmVhZGFiaWxpdHkgYnkgcmVkdWNpbmcgdGhlIG51bWJlciBvZiB0b3RhbCBjaGFuZ2VkIGxpbmVzKS5cblxuXG4gIHZhciBhID0gYWN0dWFsTGluZXNbYWN0dWFsTGluZXMubGVuZ3RoIC0gMV07XG4gIHZhciBiID0gZXhwZWN0ZWRMaW5lc1tleHBlY3RlZExpbmVzLmxlbmd0aCAtIDFdO1xuXG4gIHdoaWxlIChhID09PSBiKSB7XG4gICAgaWYgKGkrKyA8IDIpIHtcbiAgICAgIGVuZCA9IFwiXFxuICBcIi5jb25jYXQoYSkuY29uY2F0KGVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG90aGVyID0gYTtcbiAgICB9XG5cbiAgICBhY3R1YWxMaW5lcy5wb3AoKTtcbiAgICBleHBlY3RlZExpbmVzLnBvcCgpO1xuICAgIGlmIChhY3R1YWxMaW5lcy5sZW5ndGggPT09IDAgfHwgZXhwZWN0ZWRMaW5lcy5sZW5ndGggPT09IDApIGJyZWFrO1xuICAgIGEgPSBhY3R1YWxMaW5lc1thY3R1YWxMaW5lcy5sZW5ndGggLSAxXTtcbiAgICBiID0gZXhwZWN0ZWRMaW5lc1tleHBlY3RlZExpbmVzLmxlbmd0aCAtIDFdO1xuICB9XG5cbiAgdmFyIG1heExpbmVzID0gTWF0aC5tYXgoYWN0dWFsTGluZXMubGVuZ3RoLCBleHBlY3RlZExpbmVzLmxlbmd0aCk7IC8vIFN0cmljdCBlcXVhbCB3aXRoIGlkZW50aWNhbCBvYmplY3RzIHRoYXQgYXJlIG5vdCBpZGVudGljYWwgYnkgcmVmZXJlbmNlLlxuICAvLyBFLmcuLCBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHsgYTogU3ltYm9sKCkgfSwgeyBhOiBTeW1ib2woKSB9KVxuXG4gIGlmIChtYXhMaW5lcyA9PT0gMCkge1xuICAgIC8vIFdlIGhhdmUgdG8gZ2V0IHRoZSByZXN1bHQgYWdhaW4uIFRoZSBsaW5lcyB3ZXJlIGFsbCByZW1vdmVkIGJlZm9yZS5cbiAgICB2YXIgX2FjdHVhbExpbmVzID0gYWN0dWFsSW5zcGVjdGVkLnNwbGl0KCdcXG4nKTsgLy8gT25seSByZW1vdmUgbGluZXMgaW4gY2FzZSBpdCBtYWtlcyBzZW5zZSB0byBjb2xsYXBzZSB0aG9zZS5cbiAgICAvLyBUT0RPOiBBY2NlcHQgZW52IHRvIGFsd2F5cyBzaG93IHRoZSBmdWxsIGVycm9yLlxuXG5cbiAgICBpZiAoX2FjdHVhbExpbmVzLmxlbmd0aCA+IDMwKSB7XG4gICAgICBfYWN0dWFsTGluZXNbMjZdID0gXCJcIi5jb25jYXQoYmx1ZSwgXCIuLi5cIikuY29uY2F0KHdoaXRlKTtcblxuICAgICAgd2hpbGUgKF9hY3R1YWxMaW5lcy5sZW5ndGggPiAyNykge1xuICAgICAgICBfYWN0dWFsTGluZXMucG9wKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCIuY29uY2F0KGtSZWFkYWJsZU9wZXJhdG9yLm5vdElkZW50aWNhbCwgXCJcXG5cXG5cIikuY29uY2F0KF9hY3R1YWxMaW5lcy5qb2luKCdcXG4nKSwgXCJcXG5cIik7XG4gIH1cblxuICBpZiAoaSA+IDMpIHtcbiAgICBlbmQgPSBcIlxcblwiLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUpLmNvbmNhdChlbmQpO1xuICAgIHNraXBwZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKG90aGVyICE9PSAnJykge1xuICAgIGVuZCA9IFwiXFxuICBcIi5jb25jYXQob3RoZXIpLmNvbmNhdChlbmQpO1xuICAgIG90aGVyID0gJyc7XG4gIH1cblxuICB2YXIgcHJpbnRlZExpbmVzID0gMDtcbiAgdmFyIG1zZyA9IGtSZWFkYWJsZU9wZXJhdG9yW29wZXJhdG9yXSArIFwiXFxuXCIuY29uY2F0KGdyZWVuLCBcIisgYWN0dWFsXCIpLmNvbmNhdCh3aGl0ZSwgXCIgXCIpLmNvbmNhdChyZWQsIFwiLSBleHBlY3RlZFwiKS5jb25jYXQod2hpdGUpO1xuICB2YXIgc2tpcHBlZE1zZyA9IFwiIFwiLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUsIFwiIExpbmVzIHNraXBwZWRcIik7XG5cbiAgZm9yIChpID0gMDsgaSA8IG1heExpbmVzOyBpKyspIHtcbiAgICAvLyBPbmx5IGV4dHJhIGV4cGVjdGVkIGxpbmVzIGV4aXN0XG4gICAgdmFyIGN1ciA9IGkgLSBsYXN0UG9zO1xuXG4gICAgaWYgKGFjdHVhbExpbmVzLmxlbmd0aCA8IGkgKyAxKSB7XG4gICAgICAvLyBJZiB0aGUgbGFzdCBkaXZlcmdpbmcgbGluZSBpcyBtb3JlIHRoYW4gb25lIGxpbmUgYWJvdmUgYW5kIHRoZVxuICAgICAgLy8gY3VycmVudCBsaW5lIGlzIGF0IGxlYXN0IGxpbmUgdGhyZWUsIGFkZCBzb21lIG9mIHRoZSBmb3JtZXIgbGluZXMgYW5kXG4gICAgICAvLyBhbHNvIGFkZCBkb3RzIHRvIGluZGljYXRlIHNraXBwZWQgZW50cmllcy5cbiAgICAgIGlmIChjdXIgPiAxICYmIGkgPiAyKSB7XG4gICAgICAgIGlmIChjdXIgPiA0KSB7XG4gICAgICAgICAgcmVzICs9IFwiXFxuXCIuY29uY2F0KGJsdWUsIFwiLi4uXCIpLmNvbmNhdCh3aGl0ZSk7XG4gICAgICAgICAgc2tpcHBlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3VyID4gMykge1xuICAgICAgICAgIHJlcyArPSBcIlxcbiAgXCIuY29uY2F0KGV4cGVjdGVkTGluZXNbaSAtIDJdKTtcbiAgICAgICAgICBwcmludGVkTGluZXMrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcyArPSBcIlxcbiAgXCIuY29uY2F0KGV4cGVjdGVkTGluZXNbaSAtIDFdKTtcbiAgICAgICAgcHJpbnRlZExpbmVzKys7XG4gICAgICB9IC8vIE1hcmsgdGhlIGN1cnJlbnQgbGluZSBhcyB0aGUgbGFzdCBkaXZlcmdpbmcgb25lLlxuXG5cbiAgICAgIGxhc3RQb3MgPSBpOyAvLyBBZGQgdGhlIGV4cGVjdGVkIGxpbmUgdG8gdGhlIGNhY2hlLlxuXG4gICAgICBvdGhlciArPSBcIlxcblwiLmNvbmNhdChyZWQsIFwiLVwiKS5jb25jYXQod2hpdGUsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWRMaW5lc1tpXSk7XG4gICAgICBwcmludGVkTGluZXMrKzsgLy8gT25seSBleHRyYSBhY3R1YWwgbGluZXMgZXhpc3RcbiAgICB9IGVsc2UgaWYgKGV4cGVjdGVkTGluZXMubGVuZ3RoIDwgaSArIDEpIHtcbiAgICAgIC8vIElmIHRoZSBsYXN0IGRpdmVyZ2luZyBsaW5lIGlzIG1vcmUgdGhhbiBvbmUgbGluZSBhYm92ZSBhbmQgdGhlXG4gICAgICAvLyBjdXJyZW50IGxpbmUgaXMgYXQgbGVhc3QgbGluZSB0aHJlZSwgYWRkIHNvbWUgb2YgdGhlIGZvcm1lciBsaW5lcyBhbmRcbiAgICAgIC8vIGFsc28gYWRkIGRvdHMgdG8gaW5kaWNhdGUgc2tpcHBlZCBlbnRyaWVzLlxuICAgICAgaWYgKGN1ciA+IDEgJiYgaSA+IDIpIHtcbiAgICAgICAgaWYgKGN1ciA+IDQpIHtcbiAgICAgICAgICByZXMgKz0gXCJcXG5cIi5jb25jYXQoYmx1ZSwgXCIuLi5cIikuY29uY2F0KHdoaXRlKTtcbiAgICAgICAgICBza2lwcGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXIgPiAzKSB7XG4gICAgICAgICAgcmVzICs9IFwiXFxuICBcIi5jb25jYXQoYWN0dWFsTGluZXNbaSAtIDJdKTtcbiAgICAgICAgICBwcmludGVkTGluZXMrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcyArPSBcIlxcbiAgXCIuY29uY2F0KGFjdHVhbExpbmVzW2kgLSAxXSk7XG4gICAgICAgIHByaW50ZWRMaW5lcysrO1xuICAgICAgfSAvLyBNYXJrIHRoZSBjdXJyZW50IGxpbmUgYXMgdGhlIGxhc3QgZGl2ZXJnaW5nIG9uZS5cblxuXG4gICAgICBsYXN0UG9zID0gaTsgLy8gQWRkIHRoZSBhY3R1YWwgbGluZSB0byB0aGUgcmVzdWx0LlxuXG4gICAgICByZXMgKz0gXCJcXG5cIi5jb25jYXQoZ3JlZW4sIFwiK1wiKS5jb25jYXQod2hpdGUsIFwiIFwiKS5jb25jYXQoYWN0dWFsTGluZXNbaV0pO1xuICAgICAgcHJpbnRlZExpbmVzKys7IC8vIExpbmVzIGRpdmVyZ2VcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGV4cGVjdGVkTGluZSA9IGV4cGVjdGVkTGluZXNbaV07XG4gICAgICB2YXIgYWN0dWFsTGluZSA9IGFjdHVhbExpbmVzW2ldOyAvLyBJZiB0aGUgbGluZXMgZGl2ZXJnZSwgc3BlY2lmaWNhbGx5IGNoZWNrIGZvciBsaW5lcyB0aGF0IG9ubHkgZGl2ZXJnZSBieVxuICAgICAgLy8gYSB0cmFpbGluZyBjb21tYS4gSW4gdGhhdCBjYXNlIGl0IGlzIGFjdHVhbGx5IGlkZW50aWNhbCBhbmQgd2Ugc2hvdWxkXG4gICAgICAvLyBtYXJrIGl0IGFzIHN1Y2guXG5cbiAgICAgIHZhciBkaXZlcmdpbmdMaW5lcyA9IGFjdHVhbExpbmUgIT09IGV4cGVjdGVkTGluZSAmJiAoIWVuZHNXaXRoKGFjdHVhbExpbmUsICcsJykgfHwgYWN0dWFsTGluZS5zbGljZSgwLCAtMSkgIT09IGV4cGVjdGVkTGluZSk7IC8vIElmIHRoZSBleHBlY3RlZCBsaW5lIGhhcyBhIHRyYWlsaW5nIGNvbW1hIGJ1dCBpcyBvdGhlcndpc2UgaWRlbnRpY2FsLFxuICAgICAgLy8gYWRkIGEgY29tbWEgYXQgdGhlIGVuZCBvZiB0aGUgYWN0dWFsIGxpbmUuIE90aGVyd2lzZSB0aGUgb3V0cHV0IGNvdWxkXG4gICAgICAvLyBsb29rIHdlaXJkIGFzIGluOlxuICAgICAgLy9cbiAgICAgIC8vICAgW1xuICAgICAgLy8gICAgIDEgICAgICAgICAvLyBObyBjb21tYSBhdCB0aGUgZW5kIVxuICAgICAgLy8gKyAgIDJcbiAgICAgIC8vICAgXVxuICAgICAgLy9cblxuICAgICAgaWYgKGRpdmVyZ2luZ0xpbmVzICYmIGVuZHNXaXRoKGV4cGVjdGVkTGluZSwgJywnKSAmJiBleHBlY3RlZExpbmUuc2xpY2UoMCwgLTEpID09PSBhY3R1YWxMaW5lKSB7XG4gICAgICAgIGRpdmVyZ2luZ0xpbmVzID0gZmFsc2U7XG4gICAgICAgIGFjdHVhbExpbmUgKz0gJywnO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGl2ZXJnaW5nTGluZXMpIHtcbiAgICAgICAgLy8gSWYgdGhlIGxhc3QgZGl2ZXJnaW5nIGxpbmUgaXMgbW9yZSB0aGFuIG9uZSBsaW5lIGFib3ZlIGFuZCB0aGVcbiAgICAgICAgLy8gY3VycmVudCBsaW5lIGlzIGF0IGxlYXN0IGxpbmUgdGhyZWUsIGFkZCBzb21lIG9mIHRoZSBmb3JtZXIgbGluZXMgYW5kXG4gICAgICAgIC8vIGFsc28gYWRkIGRvdHMgdG8gaW5kaWNhdGUgc2tpcHBlZCBlbnRyaWVzLlxuICAgICAgICBpZiAoY3VyID4gMSAmJiBpID4gMikge1xuICAgICAgICAgIGlmIChjdXIgPiA0KSB7XG4gICAgICAgICAgICByZXMgKz0gXCJcXG5cIi5jb25jYXQoYmx1ZSwgXCIuLi5cIikuY29uY2F0KHdoaXRlKTtcbiAgICAgICAgICAgIHNraXBwZWQgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY3VyID4gMykge1xuICAgICAgICAgICAgcmVzICs9IFwiXFxuICBcIi5jb25jYXQoYWN0dWFsTGluZXNbaSAtIDJdKTtcbiAgICAgICAgICAgIHByaW50ZWRMaW5lcysrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlcyArPSBcIlxcbiAgXCIuY29uY2F0KGFjdHVhbExpbmVzW2kgLSAxXSk7XG4gICAgICAgICAgcHJpbnRlZExpbmVzKys7XG4gICAgICAgIH0gLy8gTWFyayB0aGUgY3VycmVudCBsaW5lIGFzIHRoZSBsYXN0IGRpdmVyZ2luZyBvbmUuXG5cblxuICAgICAgICBsYXN0UG9zID0gaTsgLy8gQWRkIHRoZSBhY3R1YWwgbGluZSB0byB0aGUgcmVzdWx0IGFuZCBjYWNoZSB0aGUgZXhwZWN0ZWQgZGl2ZXJnaW5nXG4gICAgICAgIC8vIGxpbmUgc28gY29uc2VjdXRpdmUgZGl2ZXJnaW5nIGxpbmVzIHNob3cgdXAgYXMgKysrLS0tIGFuZCBub3QgKy0rLSstLlxuXG4gICAgICAgIHJlcyArPSBcIlxcblwiLmNvbmNhdChncmVlbiwgXCIrXCIpLmNvbmNhdCh3aGl0ZSwgXCIgXCIpLmNvbmNhdChhY3R1YWxMaW5lKTtcbiAgICAgICAgb3RoZXIgKz0gXCJcXG5cIi5jb25jYXQocmVkLCBcIi1cIikuY29uY2F0KHdoaXRlLCBcIiBcIikuY29uY2F0KGV4cGVjdGVkTGluZSk7XG4gICAgICAgIHByaW50ZWRMaW5lcyArPSAyOyAvLyBMaW5lcyBhcmUgaWRlbnRpY2FsXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBZGQgYWxsIGNhY2hlZCBpbmZvcm1hdGlvbiB0byB0aGUgcmVzdWx0IGJlZm9yZSBhZGRpbmcgb3RoZXIgdGhpbmdzXG4gICAgICAgIC8vIGFuZCByZXNldCB0aGUgY2FjaGUuXG4gICAgICAgIHJlcyArPSBvdGhlcjtcbiAgICAgICAgb3RoZXIgPSAnJzsgLy8gSWYgdGhlIGxhc3QgZGl2ZXJnaW5nIGxpbmUgaXMgZXhhY3RseSBvbmUgbGluZSBhYm92ZSBvciBpZiBpdCBpcyB0aGVcbiAgICAgICAgLy8gdmVyeSBmaXJzdCBsaW5lLCBhZGQgdGhlIGxpbmUgdG8gdGhlIHJlc3VsdC5cblxuICAgICAgICBpZiAoY3VyID09PSAxIHx8IGkgPT09IDApIHtcbiAgICAgICAgICByZXMgKz0gXCJcXG4gIFwiLmNvbmNhdChhY3R1YWxMaW5lKTtcbiAgICAgICAgICBwcmludGVkTGluZXMrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gSW5zcGVjdGVkIG9iamVjdCB0byBiaWcgKFNob3cgfjIwIHJvd3MgbWF4KVxuXG5cbiAgICBpZiAocHJpbnRlZExpbmVzID4gMjAgJiYgaSA8IG1heExpbmVzIC0gMikge1xuICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KG1zZykuY29uY2F0KHNraXBwZWRNc2csIFwiXFxuXCIpLmNvbmNhdChyZXMsIFwiXFxuXCIpLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUpLmNvbmNhdChvdGhlciwgXCJcXG5cIikgKyBcIlwiLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBcIlwiLmNvbmNhdChtc2cpLmNvbmNhdChza2lwcGVkID8gc2tpcHBlZE1zZyA6ICcnLCBcIlxcblwiKS5jb25jYXQocmVzKS5jb25jYXQob3RoZXIpLmNvbmNhdChlbmQpLmNvbmNhdChpbmRpY2F0b3IpO1xufVxuXG52YXIgQXNzZXJ0aW9uRXJyb3IgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKF9FcnJvcikge1xuICBfaW5oZXJpdHMoQXNzZXJ0aW9uRXJyb3IsIF9FcnJvcik7XG5cbiAgZnVuY3Rpb24gQXNzZXJ0aW9uRXJyb3Iob3B0aW9ucykge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBc3NlcnRpb25FcnJvcik7XG5cbiAgICBpZiAoX3R5cGVvZihvcHRpb25zKSAhPT0gJ29iamVjdCcgfHwgb3B0aW9ucyA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdvcHRpb25zJywgJ09iamVjdCcsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHZhciBtZXNzYWdlID0gb3B0aW9ucy5tZXNzYWdlLFxuICAgICAgICBvcGVyYXRvciA9IG9wdGlvbnMub3BlcmF0b3IsXG4gICAgICAgIHN0YWNrU3RhcnRGbiA9IG9wdGlvbnMuc3RhY2tTdGFydEZuO1xuICAgIHZhciBhY3R1YWwgPSBvcHRpb25zLmFjdHVhbCxcbiAgICAgICAgZXhwZWN0ZWQgPSBvcHRpb25zLmV4cGVjdGVkO1xuICAgIHZhciBsaW1pdCA9IEVycm9yLnN0YWNrVHJhY2VMaW1pdDtcbiAgICBFcnJvci5zdGFja1RyYWNlTGltaXQgPSAwO1xuXG4gICAgaWYgKG1lc3NhZ2UgIT0gbnVsbCkge1xuICAgICAgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoQXNzZXJ0aW9uRXJyb3IpLmNhbGwodGhpcywgU3RyaW5nKG1lc3NhZ2UpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9jZXNzLnN0ZGVyciAmJiBwcm9jZXNzLnN0ZGVyci5pc1RUWSkge1xuICAgICAgICAvLyBSZXNldCBvbiBlYWNoIGNhbGwgdG8gbWFrZSBzdXJlIHdlIGhhbmRsZSBkeW5hbWljYWxseSBzZXQgZW52aXJvbm1lbnRcbiAgICAgICAgLy8gdmFyaWFibGVzIGNvcnJlY3QuXG4gICAgICAgIGlmIChwcm9jZXNzLnN0ZGVyciAmJiBwcm9jZXNzLnN0ZGVyci5nZXRDb2xvckRlcHRoICYmIHByb2Nlc3Muc3RkZXJyLmdldENvbG9yRGVwdGgoKSAhPT0gMSkge1xuICAgICAgICAgIGJsdWUgPSBcIlxceDFCWzM0bVwiO1xuICAgICAgICAgIGdyZWVuID0gXCJcXHgxQlszMm1cIjtcbiAgICAgICAgICB3aGl0ZSA9IFwiXFx4MUJbMzltXCI7XG4gICAgICAgICAgcmVkID0gXCJcXHgxQlszMW1cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBibHVlID0gJyc7XG4gICAgICAgICAgZ3JlZW4gPSAnJztcbiAgICAgICAgICB3aGl0ZSA9ICcnO1xuICAgICAgICAgIHJlZCA9ICcnO1xuICAgICAgICB9XG4gICAgICB9IC8vIFByZXZlbnQgdGhlIGVycm9yIHN0YWNrIGZyb20gYmVpbmcgdmlzaWJsZSBieSBkdXBsaWNhdGluZyB0aGUgZXJyb3JcbiAgICAgIC8vIGluIGEgdmVyeSBjbG9zZSB3YXkgdG8gdGhlIG9yaWdpbmFsIGluIGNhc2UgYm90aCBzaWRlcyBhcmUgYWN0dWFsbHlcbiAgICAgIC8vIGluc3RhbmNlcyBvZiBFcnJvci5cblxuXG4gICAgICBpZiAoX3R5cGVvZihhY3R1YWwpID09PSAnb2JqZWN0JyAmJiBhY3R1YWwgIT09IG51bGwgJiYgX3R5cGVvZihleHBlY3RlZCkgPT09ICdvYmplY3QnICYmIGV4cGVjdGVkICE9PSBudWxsICYmICdzdGFjaycgaW4gYWN0dWFsICYmIGFjdHVhbCBpbnN0YW5jZW9mIEVycm9yICYmICdzdGFjaycgaW4gZXhwZWN0ZWQgJiYgZXhwZWN0ZWQgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBhY3R1YWwgPSBjb3B5RXJyb3IoYWN0dWFsKTtcbiAgICAgICAgZXhwZWN0ZWQgPSBjb3B5RXJyb3IoZXhwZWN0ZWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3BlcmF0b3IgPT09ICdkZWVwU3RyaWN0RXF1YWwnIHx8IG9wZXJhdG9yID09PSAnc3RyaWN0RXF1YWwnKSB7XG4gICAgICAgIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX2dldFByb3RvdHlwZU9mKEFzc2VydGlvbkVycm9yKS5jYWxsKHRoaXMsIGNyZWF0ZUVyckRpZmYoYWN0dWFsLCBleHBlY3RlZCwgb3BlcmF0b3IpKSk7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdG9yID09PSAnbm90RGVlcFN0cmljdEVxdWFsJyB8fCBvcGVyYXRvciA9PT0gJ25vdFN0cmljdEVxdWFsJykge1xuICAgICAgICAvLyBJbiBjYXNlIHRoZSBvYmplY3RzIGFyZSBlcXVhbCBidXQgdGhlIG9wZXJhdG9yIHJlcXVpcmVzIHVuZXF1YWwsIHNob3dcbiAgICAgICAgLy8gdGhlIGZpcnN0IG9iamVjdCBhbmQgc2F5IEEgZXF1YWxzIEJcbiAgICAgICAgdmFyIGJhc2UgPSBrUmVhZGFibGVPcGVyYXRvcltvcGVyYXRvcl07XG4gICAgICAgIHZhciByZXMgPSBpbnNwZWN0VmFsdWUoYWN0dWFsKS5zcGxpdCgnXFxuJyk7IC8vIEluIGNhc2UgXCJhY3R1YWxcIiBpcyBhbiBvYmplY3QsIGl0IHNob3VsZCBub3QgYmUgcmVmZXJlbmNlIGVxdWFsLlxuXG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gJ25vdFN0cmljdEVxdWFsJyAmJiBfdHlwZW9mKGFjdHVhbCkgPT09ICdvYmplY3QnICYmIGFjdHVhbCAhPT0gbnVsbCkge1xuICAgICAgICAgIGJhc2UgPSBrUmVhZGFibGVPcGVyYXRvci5ub3RTdHJpY3RFcXVhbE9iamVjdDtcbiAgICAgICAgfSAvLyBPbmx5IHJlbW92ZSBsaW5lcyBpbiBjYXNlIGl0IG1ha2VzIHNlbnNlIHRvIGNvbGxhcHNlIHRob3NlLlxuICAgICAgICAvLyBUT0RPOiBBY2NlcHQgZW52IHRvIGFsd2F5cyBzaG93IHRoZSBmdWxsIGVycm9yLlxuXG5cbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAzMCkge1xuICAgICAgICAgIHJlc1syNl0gPSBcIlwiLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUpO1xuXG4gICAgICAgICAgd2hpbGUgKHJlcy5sZW5ndGggPiAyNykge1xuICAgICAgICAgICAgcmVzLnBvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBPbmx5IHByaW50IGEgc2luZ2xlIGlucHV0LlxuXG5cbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihBc3NlcnRpb25FcnJvcikuY2FsbCh0aGlzLCBcIlwiLmNvbmNhdChiYXNlLCBcIiBcIikuY29uY2F0KHJlc1swXSkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihBc3NlcnRpb25FcnJvcikuY2FsbCh0aGlzLCBcIlwiLmNvbmNhdChiYXNlLCBcIlxcblxcblwiKS5jb25jYXQocmVzLmpvaW4oJ1xcbicpLCBcIlxcblwiKSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgX3JlcyA9IGluc3BlY3RWYWx1ZShhY3R1YWwpO1xuXG4gICAgICAgIHZhciBvdGhlciA9ICcnO1xuICAgICAgICB2YXIga25vd25PcGVyYXRvcnMgPSBrUmVhZGFibGVPcGVyYXRvcltvcGVyYXRvcl07XG5cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSAnbm90RGVlcEVxdWFsJyB8fCBvcGVyYXRvciA9PT0gJ25vdEVxdWFsJykge1xuICAgICAgICAgIF9yZXMgPSBcIlwiLmNvbmNhdChrUmVhZGFibGVPcGVyYXRvcltvcGVyYXRvcl0sIFwiXFxuXFxuXCIpLmNvbmNhdChfcmVzKTtcblxuICAgICAgICAgIGlmIChfcmVzLmxlbmd0aCA+IDEwMjQpIHtcbiAgICAgICAgICAgIF9yZXMgPSBcIlwiLmNvbmNhdChfcmVzLnNsaWNlKDAsIDEwMjEpLCBcIi4uLlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3RoZXIgPSBcIlwiLmNvbmNhdChpbnNwZWN0VmFsdWUoZXhwZWN0ZWQpKTtcblxuICAgICAgICAgIGlmIChfcmVzLmxlbmd0aCA+IDUxMikge1xuICAgICAgICAgICAgX3JlcyA9IFwiXCIuY29uY2F0KF9yZXMuc2xpY2UoMCwgNTA5KSwgXCIuLi5cIik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG90aGVyLmxlbmd0aCA+IDUxMikge1xuICAgICAgICAgICAgb3RoZXIgPSBcIlwiLmNvbmNhdChvdGhlci5zbGljZSgwLCA1MDkpLCBcIi4uLlwiKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob3BlcmF0b3IgPT09ICdkZWVwRXF1YWwnIHx8IG9wZXJhdG9yID09PSAnZXF1YWwnKSB7XG4gICAgICAgICAgICBfcmVzID0gXCJcIi5jb25jYXQoa25vd25PcGVyYXRvcnMsIFwiXFxuXFxuXCIpLmNvbmNhdChfcmVzLCBcIlxcblxcbnNob3VsZCBlcXVhbFxcblxcblwiKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3RoZXIgPSBcIiBcIi5jb25jYXQob3BlcmF0b3IsIFwiIFwiKS5jb25jYXQob3RoZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX2dldFByb3RvdHlwZU9mKEFzc2VydGlvbkVycm9yKS5jYWxsKHRoaXMsIFwiXCIuY29uY2F0KF9yZXMpLmNvbmNhdChvdGhlcikpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBFcnJvci5zdGFja1RyYWNlTGltaXQgPSBsaW1pdDtcbiAgICBfdGhpcy5nZW5lcmF0ZWRNZXNzYWdlID0gIW1lc3NhZ2U7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCAnbmFtZScsIHtcbiAgICAgIHZhbHVlOiAnQXNzZXJ0aW9uRXJyb3IgW0VSUl9BU1NFUlRJT05dJyxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBfdGhpcy5jb2RlID0gJ0VSUl9BU1NFUlRJT04nO1xuICAgIF90aGlzLmFjdHVhbCA9IGFjdHVhbDtcbiAgICBfdGhpcy5leHBlY3RlZCA9IGV4cGVjdGVkO1xuICAgIF90aGlzLm9wZXJhdG9yID0gb3BlcmF0b3I7XG5cbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIHN0YWNrU3RhcnRGbik7XG4gICAgfSAvLyBDcmVhdGUgZXJyb3IgbWVzc2FnZSBpbmNsdWRpbmcgdGhlIGVycm9yIGNvZGUgaW4gdGhlIG5hbWUuXG5cblxuICAgIF90aGlzLnN0YWNrOyAvLyBSZXNldCB0aGUgbmFtZS5cblxuICAgIF90aGlzLm5hbWUgPSAnQXNzZXJ0aW9uRXJyb3InO1xuICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihfdGhpcyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQXNzZXJ0aW9uRXJyb3IsIFt7XG4gICAga2V5OiBcInRvU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHRoaXMubmFtZSwgXCIgW1wiKS5jb25jYXQodGhpcy5jb2RlLCBcIl06IFwiKS5jb25jYXQodGhpcy5tZXNzYWdlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IGluc3BlY3QuY3VzdG9tLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShyZWN1cnNlVGltZXMsIGN0eCkge1xuICAgICAgLy8gVGhpcyBsaW1pdHMgdGhlIGBhY3R1YWxgIGFuZCBgZXhwZWN0ZWRgIHByb3BlcnR5IGRlZmF1bHQgaW5zcGVjdGlvbiB0b1xuICAgICAgLy8gdGhlIG1pbmltdW0gZGVwdGguIE90aGVyd2lzZSB0aG9zZSB2YWx1ZXMgd291bGQgYmUgdG9vIHZlcmJvc2UgY29tcGFyZWRcbiAgICAgIC8vIHRvIHRoZSBhY3R1YWwgZXJyb3IgbWVzc2FnZSB3aGljaCBjb250YWlucyBhIGNvbWJpbmVkIHZpZXcgb2YgdGhlc2UgdHdvXG4gICAgICAvLyBpbnB1dCB2YWx1ZXMuXG4gICAgICByZXR1cm4gaW5zcGVjdCh0aGlzLCBfb2JqZWN0U3ByZWFkKHt9LCBjdHgsIHtcbiAgICAgICAgY3VzdG9tSW5zcGVjdDogZmFsc2UsXG4gICAgICAgIGRlcHRoOiAwXG4gICAgICB9KSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEFzc2VydGlvbkVycm9yO1xufShfd3JhcE5hdGl2ZVN1cGVyKEVycm9yKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gQXNzZXJ0aW9uRXJyb3I7IiwiLy8gQ3VycmVudGx5IGluIHN5bmMgd2l0aCBOb2RlLmpzIGxpYi9pbnRlcm5hbC9lcnJvcnMuanNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9jb21taXQvM2IwNDQ5NjJjNDhmZTMxMzkwNTg3N2E5NmI1ZDA4OTRhNTQwNGY2ZlxuXG4vKiBlc2xpbnQgbm9kZS1jb3JlL2RvY3VtZW50ZWQtZXJyb3JzOiBcImVycm9yXCIgKi9cblxuLyogZXNsaW50IG5vZGUtY29yZS9hbHBoYWJldGl6ZS1lcnJvcnM6IFwiZXJyb3JcIiAqL1xuXG4vKiBlc2xpbnQgbm9kZS1jb3JlL3ByZWZlci11dGlsLWZvcm1hdC1lcnJvcnM6IFwiZXJyb3JcIiAqL1xuJ3VzZSBzdHJpY3QnOyAvLyBUaGUgd2hvbGUgcG9pbnQgYmVoaW5kIHRoaXMgaW50ZXJuYWwgbW9kdWxlIGlzIHRvIGFsbG93IE5vZGUuanMgdG8gbm9cbi8vIGxvbmdlciBiZSBmb3JjZWQgdG8gdHJlYXQgZXZlcnkgZXJyb3IgbWVzc2FnZSBjaGFuZ2UgYXMgYSBzZW12ZXItbWFqb3Jcbi8vIGNoYW5nZS4gVGhlIE5vZGVFcnJvciBjbGFzc2VzIGhlcmUgYWxsIGV4cG9zZSBhIGBjb2RlYCBwcm9wZXJ0eSB3aG9zZVxuLy8gdmFsdWUgc3RhdGljYWxseSBhbmQgcGVybWFuZW50bHkgaWRlbnRpZmllcyB0aGUgZXJyb3IuIFdoaWxlIHRoZSBlcnJvclxuLy8gbWVzc2FnZSBtYXkgY2hhbmdlLCB0aGUgY29kZSBzaG91bGQgbm90LlxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbnZhciBjb2RlcyA9IHt9OyAvLyBMYXp5IGxvYWRlZFxuXG52YXIgYXNzZXJ0O1xudmFyIHV0aWw7XG5cbmZ1bmN0aW9uIGNyZWF0ZUVycm9yVHlwZShjb2RlLCBtZXNzYWdlLCBCYXNlKSB7XG4gIGlmICghQmFzZSkge1xuICAgIEJhc2UgPSBFcnJvcjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE1lc3NhZ2UoYXJnMSwgYXJnMiwgYXJnMykge1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbWVzc2FnZShhcmcxLCBhcmcyLCBhcmczKTtcbiAgICB9XG4gIH1cblxuICB2YXIgTm9kZUVycm9yID1cbiAgLyojX19QVVJFX18qL1xuICBmdW5jdGlvbiAoX0Jhc2UpIHtcbiAgICBfaW5oZXJpdHMoTm9kZUVycm9yLCBfQmFzZSk7XG5cbiAgICBmdW5jdGlvbiBOb2RlRXJyb3IoYXJnMSwgYXJnMiwgYXJnMykge1xuICAgICAgdmFyIF90aGlzO1xuXG4gICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTm9kZUVycm9yKTtcblxuICAgICAgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoTm9kZUVycm9yKS5jYWxsKHRoaXMsIGdldE1lc3NhZ2UoYXJnMSwgYXJnMiwgYXJnMykpKTtcbiAgICAgIF90aGlzLmNvZGUgPSBjb2RlO1xuICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cblxuICAgIHJldHVybiBOb2RlRXJyb3I7XG4gIH0oQmFzZSk7XG5cbiAgY29kZXNbY29kZV0gPSBOb2RlRXJyb3I7XG59IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL3YxMC44LjAvbGliL2ludGVybmFsL2Vycm9ycy5qc1xuXG5cbmZ1bmN0aW9uIG9uZU9mKGV4cGVjdGVkLCB0aGluZykge1xuICBpZiAoQXJyYXkuaXNBcnJheShleHBlY3RlZCkpIHtcbiAgICB2YXIgbGVuID0gZXhwZWN0ZWQubGVuZ3RoO1xuICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQubWFwKGZ1bmN0aW9uIChpKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKGkpO1xuICAgIH0pO1xuXG4gICAgaWYgKGxlbiA+IDIpIHtcbiAgICAgIHJldHVybiBcIm9uZSBvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWQuc2xpY2UoMCwgbGVuIC0gMSkuam9pbignLCAnKSwgXCIsIG9yIFwiKSArIGV4cGVjdGVkW2xlbiAtIDFdO1xuICAgIH0gZWxzZSBpZiAobGVuID09PSAyKSB7XG4gICAgICByZXR1cm4gXCJvbmUgb2YgXCIuY29uY2F0KHRoaW5nLCBcIiBcIikuY29uY2F0KGV4cGVjdGVkWzBdLCBcIiBvciBcIikuY29uY2F0KGV4cGVjdGVkWzFdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwib2YgXCIuY29uY2F0KHRoaW5nLCBcIiBcIikuY29uY2F0KGV4cGVjdGVkWzBdKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFwib2YgXCIuY29uY2F0KHRoaW5nLCBcIiBcIikuY29uY2F0KFN0cmluZyhleHBlY3RlZCkpO1xuICB9XG59IC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9zdGFydHNXaXRoXG5cblxuZnVuY3Rpb24gc3RhcnRzV2l0aChzdHIsIHNlYXJjaCwgcG9zKSB7XG4gIHJldHVybiBzdHIuc3Vic3RyKCFwb3MgfHwgcG9zIDwgMCA/IDAgOiArcG9zLCBzZWFyY2gubGVuZ3RoKSA9PT0gc2VhcmNoO1xufSAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvZW5kc1dpdGhcblxuXG5mdW5jdGlvbiBlbmRzV2l0aChzdHIsIHNlYXJjaCwgdGhpc19sZW4pIHtcbiAgaWYgKHRoaXNfbGVuID09PSB1bmRlZmluZWQgfHwgdGhpc19sZW4gPiBzdHIubGVuZ3RoKSB7XG4gICAgdGhpc19sZW4gPSBzdHIubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIHN0ci5zdWJzdHJpbmcodGhpc19sZW4gLSBzZWFyY2gubGVuZ3RoLCB0aGlzX2xlbikgPT09IHNlYXJjaDtcbn0gLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nL2luY2x1ZGVzXG5cblxuZnVuY3Rpb24gaW5jbHVkZXMoc3RyLCBzZWFyY2gsIHN0YXJ0KSB7XG4gIGlmICh0eXBlb2Ygc3RhcnQgIT09ICdudW1iZXInKSB7XG4gICAgc3RhcnQgPSAwO1xuICB9XG5cbiAgaWYgKHN0YXJ0ICsgc2VhcmNoLmxlbmd0aCA+IHN0ci5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0ci5pbmRleE9mKHNlYXJjaCwgc3RhcnQpICE9PSAtMTtcbiAgfVxufVxuXG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9BTUJJR1VPVVNfQVJHVU1FTlQnLCAnVGhlIFwiJXNcIiBhcmd1bWVudCBpcyBhbWJpZ3VvdXMuICVzJywgVHlwZUVycm9yKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX0lOVkFMSURfQVJHX1RZUEUnLCBmdW5jdGlvbiAobmFtZSwgZXhwZWN0ZWQsIGFjdHVhbCkge1xuICBpZiAoYXNzZXJ0ID09PSB1bmRlZmluZWQpIGFzc2VydCA9IHJlcXVpcmUoJy4uL2Fzc2VydCcpO1xuICBhc3NlcnQodHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnLCBcIiduYW1lJyBtdXN0IGJlIGEgc3RyaW5nXCIpOyAvLyBkZXRlcm1pbmVyOiAnbXVzdCBiZScgb3IgJ211c3Qgbm90IGJlJ1xuXG4gIHZhciBkZXRlcm1pbmVyO1xuXG4gIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT09ICdzdHJpbmcnICYmIHN0YXJ0c1dpdGgoZXhwZWN0ZWQsICdub3QgJykpIHtcbiAgICBkZXRlcm1pbmVyID0gJ211c3Qgbm90IGJlJztcbiAgICBleHBlY3RlZCA9IGV4cGVjdGVkLnJlcGxhY2UoL15ub3QgLywgJycpO1xuICB9IGVsc2Uge1xuICAgIGRldGVybWluZXIgPSAnbXVzdCBiZSc7XG4gIH1cblxuICB2YXIgbXNnO1xuXG4gIGlmIChlbmRzV2l0aChuYW1lLCAnIGFyZ3VtZW50JykpIHtcbiAgICAvLyBGb3IgY2FzZXMgbGlrZSAnZmlyc3QgYXJndW1lbnQnXG4gICAgbXNnID0gXCJUaGUgXCIuY29uY2F0KG5hbWUsIFwiIFwiKS5jb25jYXQoZGV0ZXJtaW5lciwgXCIgXCIpLmNvbmNhdChvbmVPZihleHBlY3RlZCwgJ3R5cGUnKSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHR5cGUgPSBpbmNsdWRlcyhuYW1lLCAnLicpID8gJ3Byb3BlcnR5JyA6ICdhcmd1bWVudCc7XG4gICAgbXNnID0gXCJUaGUgXFxcIlwiLmNvbmNhdChuYW1lLCBcIlxcXCIgXCIpLmNvbmNhdCh0eXBlLCBcIiBcIikuY29uY2F0KGRldGVybWluZXIsIFwiIFwiKS5jb25jYXQob25lT2YoZXhwZWN0ZWQsICd0eXBlJykpO1xuICB9IC8vIFRPRE8oQnJpZGdlQVIpOiBJbXByb3ZlIHRoZSBvdXRwdXQgYnkgc2hvd2luZyBgbnVsbGAgYW5kIHNpbWlsYXIuXG5cblxuICBtc2cgKz0gXCIuIFJlY2VpdmVkIHR5cGUgXCIuY29uY2F0KF90eXBlb2YoYWN0dWFsKSk7XG4gIHJldHVybiBtc2c7XG59LCBUeXBlRXJyb3IpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfSU5WQUxJRF9BUkdfVkFMVUUnLCBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgdmFyIHJlYXNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogJ2lzIGludmFsaWQnO1xuICBpZiAodXRpbCA9PT0gdW5kZWZpbmVkKSB1dGlsID0gcmVxdWlyZSgndXRpbC8nKTtcbiAgdmFyIGluc3BlY3RlZCA9IHV0aWwuaW5zcGVjdCh2YWx1ZSk7XG5cbiAgaWYgKGluc3BlY3RlZC5sZW5ndGggPiAxMjgpIHtcbiAgICBpbnNwZWN0ZWQgPSBcIlwiLmNvbmNhdChpbnNwZWN0ZWQuc2xpY2UoMCwgMTI4KSwgXCIuLi5cIik7XG4gIH1cblxuICByZXR1cm4gXCJUaGUgYXJndW1lbnQgJ1wiLmNvbmNhdChuYW1lLCBcIicgXCIpLmNvbmNhdChyZWFzb24sIFwiLiBSZWNlaXZlZCBcIikuY29uY2F0KGluc3BlY3RlZCk7XG59LCBUeXBlRXJyb3IsIFJhbmdlRXJyb3IpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUnLCBmdW5jdGlvbiAoaW5wdXQsIG5hbWUsIHZhbHVlKSB7XG4gIHZhciB0eXBlO1xuXG4gIGlmICh2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvciAmJiB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lKSB7XG4gICAgdHlwZSA9IFwiaW5zdGFuY2Ugb2YgXCIuY29uY2F0KHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUpO1xuICB9IGVsc2Uge1xuICAgIHR5cGUgPSBcInR5cGUgXCIuY29uY2F0KF90eXBlb2YodmFsdWUpKTtcbiAgfVxuXG4gIHJldHVybiBcIkV4cGVjdGVkIFwiLmNvbmNhdChpbnB1dCwgXCIgdG8gYmUgcmV0dXJuZWQgZnJvbSB0aGUgXFxcIlwiKS5jb25jYXQobmFtZSwgXCJcXFwiXCIpICsgXCIgZnVuY3Rpb24gYnV0IGdvdCBcIi5jb25jYXQodHlwZSwgXCIuXCIpO1xufSwgVHlwZUVycm9yKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX01JU1NJTkdfQVJHUycsIGZ1bmN0aW9uICgpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIGlmIChhc3NlcnQgPT09IHVuZGVmaW5lZCkgYXNzZXJ0ID0gcmVxdWlyZSgnLi4vYXNzZXJ0Jyk7XG4gIGFzc2VydChhcmdzLmxlbmd0aCA+IDAsICdBdCBsZWFzdCBvbmUgYXJnIG5lZWRzIHRvIGJlIHNwZWNpZmllZCcpO1xuICB2YXIgbXNnID0gJ1RoZSAnO1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIGFyZ3MgPSBhcmdzLm1hcChmdW5jdGlvbiAoYSkge1xuICAgIHJldHVybiBcIlxcXCJcIi5jb25jYXQoYSwgXCJcXFwiXCIpO1xuICB9KTtcblxuICBzd2l0Y2ggKGxlbikge1xuICAgIGNhc2UgMTpcbiAgICAgIG1zZyArPSBcIlwiLmNvbmNhdChhcmdzWzBdLCBcIiBhcmd1bWVudFwiKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAyOlxuICAgICAgbXNnICs9IFwiXCIuY29uY2F0KGFyZ3NbMF0sIFwiIGFuZCBcIikuY29uY2F0KGFyZ3NbMV0sIFwiIGFyZ3VtZW50c1wiKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIG1zZyArPSBhcmdzLnNsaWNlKDAsIGxlbiAtIDEpLmpvaW4oJywgJyk7XG4gICAgICBtc2cgKz0gXCIsIGFuZCBcIi5jb25jYXQoYXJnc1tsZW4gLSAxXSwgXCIgYXJndW1lbnRzXCIpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gXCJcIi5jb25jYXQobXNnLCBcIiBtdXN0IGJlIHNwZWNpZmllZFwiKTtcbn0sIFR5cGVFcnJvcik7XG5tb2R1bGUuZXhwb3J0cy5jb2RlcyA9IGNvZGVzOyIsIi8vIEN1cnJlbnRseSBpbiBzeW5jIHdpdGggTm9kZS5qcyBsaWIvaW50ZXJuYWwvdXRpbC9jb21wYXJpc29ucy5qc1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2NvbW1pdC8xMTJjYzdjMjc1NTEyNTRhYTJiMTcwOThmYjc3NDg2N2YwNWVkMGQ5XG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG52YXIgcmVnZXhGbGFnc1N1cHBvcnRlZCA9IC9hL2cuZmxhZ3MgIT09IHVuZGVmaW5lZDtcblxudmFyIGFycmF5RnJvbVNldCA9IGZ1bmN0aW9uIGFycmF5RnJvbVNldChzZXQpIHtcbiAgdmFyIGFycmF5ID0gW107XG4gIHNldC5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBhcnJheS5wdXNoKHZhbHVlKTtcbiAgfSk7XG4gIHJldHVybiBhcnJheTtcbn07XG5cbnZhciBhcnJheUZyb21NYXAgPSBmdW5jdGlvbiBhcnJheUZyb21NYXAobWFwKSB7XG4gIHZhciBhcnJheSA9IFtdO1xuICBtYXAuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgIHJldHVybiBhcnJheS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gIH0pO1xuICByZXR1cm4gYXJyYXk7XG59O1xuXG52YXIgb2JqZWN0SXMgPSBPYmplY3QuaXMgPyBPYmplY3QuaXMgOiByZXF1aXJlKCdvYmplY3QtaXMnKTtcbnZhciBvYmplY3RHZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID8gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA6IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFtdO1xufTtcbnZhciBudW1iZXJJc05hTiA9IE51bWJlci5pc05hTiA/IE51bWJlci5pc05hTiA6IHJlcXVpcmUoJ2lzLW5hbicpO1xuXG5mdW5jdGlvbiB1bmN1cnJ5VGhpcyhmKSB7XG4gIHJldHVybiBmLmNhbGwuYmluZChmKTtcbn1cblxudmFyIGhhc093blByb3BlcnR5ID0gdW5jdXJyeVRoaXMoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSB1bmN1cnJ5VGhpcyhPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlKTtcbnZhciBvYmplY3RUb1N0cmluZyA9IHVuY3VycnlUaGlzKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpO1xuXG52YXIgX3JlcXVpcmUkdHlwZXMgPSByZXF1aXJlKCd1dGlsLycpLnR5cGVzLFxuICAgIGlzQW55QXJyYXlCdWZmZXIgPSBfcmVxdWlyZSR0eXBlcy5pc0FueUFycmF5QnVmZmVyLFxuICAgIGlzQXJyYXlCdWZmZXJWaWV3ID0gX3JlcXVpcmUkdHlwZXMuaXNBcnJheUJ1ZmZlclZpZXcsXG4gICAgaXNEYXRlID0gX3JlcXVpcmUkdHlwZXMuaXNEYXRlLFxuICAgIGlzTWFwID0gX3JlcXVpcmUkdHlwZXMuaXNNYXAsXG4gICAgaXNSZWdFeHAgPSBfcmVxdWlyZSR0eXBlcy5pc1JlZ0V4cCxcbiAgICBpc1NldCA9IF9yZXF1aXJlJHR5cGVzLmlzU2V0LFxuICAgIGlzTmF0aXZlRXJyb3IgPSBfcmVxdWlyZSR0eXBlcy5pc05hdGl2ZUVycm9yLFxuICAgIGlzQm94ZWRQcmltaXRpdmUgPSBfcmVxdWlyZSR0eXBlcy5pc0JveGVkUHJpbWl0aXZlLFxuICAgIGlzTnVtYmVyT2JqZWN0ID0gX3JlcXVpcmUkdHlwZXMuaXNOdW1iZXJPYmplY3QsXG4gICAgaXNTdHJpbmdPYmplY3QgPSBfcmVxdWlyZSR0eXBlcy5pc1N0cmluZ09iamVjdCxcbiAgICBpc0Jvb2xlYW5PYmplY3QgPSBfcmVxdWlyZSR0eXBlcy5pc0Jvb2xlYW5PYmplY3QsXG4gICAgaXNCaWdJbnRPYmplY3QgPSBfcmVxdWlyZSR0eXBlcy5pc0JpZ0ludE9iamVjdCxcbiAgICBpc1N5bWJvbE9iamVjdCA9IF9yZXF1aXJlJHR5cGVzLmlzU3ltYm9sT2JqZWN0LFxuICAgIGlzRmxvYXQzMkFycmF5ID0gX3JlcXVpcmUkdHlwZXMuaXNGbG9hdDMyQXJyYXksXG4gICAgaXNGbG9hdDY0QXJyYXkgPSBfcmVxdWlyZSR0eXBlcy5pc0Zsb2F0NjRBcnJheTtcblxuZnVuY3Rpb24gaXNOb25JbmRleChrZXkpIHtcbiAgaWYgKGtleS5sZW5ndGggPT09IDAgfHwga2V5Lmxlbmd0aCA+IDEwKSByZXR1cm4gdHJ1ZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjb2RlID0ga2V5LmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGNvZGUgPCA0OCB8fCBjb2RlID4gNTcpIHJldHVybiB0cnVlO1xuICB9IC8vIFRoZSBtYXhpbXVtIHNpemUgZm9yIGFuIGFycmF5IGlzIDIgKiogMzIgLTEuXG5cblxuICByZXR1cm4ga2V5Lmxlbmd0aCA9PT0gMTAgJiYga2V5ID49IE1hdGgucG93KDIsIDMyKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3duTm9uSW5kZXhQcm9wZXJ0aWVzKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZSkuZmlsdGVyKGlzTm9uSW5kZXgpLmNvbmNhdChvYmplY3RHZXRPd25Qcm9wZXJ0eVN5bWJvbHModmFsdWUpLmZpbHRlcihPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmJpbmQodmFsdWUpKSk7XG59IC8vIFRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvYmxvYi82ODBlOWU1ZTQ4OGYyMmFhYzI3NTk5YTU3ZGM4NDRhNjMxNTkyOGRkL2luZGV4LmpzXG4vLyBvcmlnaW5hbCBub3RpY2U6XG5cbi8qIVxuICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGZlcm9zc0BmZXJvc3Mub3JnPiA8aHR0cDovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cblxuXG5mdW5jdGlvbiBjb21wYXJlKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciB4ID0gYS5sZW5ndGg7XG4gIHZhciB5ID0gYi5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IE1hdGgubWluKHgsIHkpOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkge1xuICAgICAgeCA9IGFbaV07XG4gICAgICB5ID0gYltpXTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIGlmICh5IDwgeCkge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgcmV0dXJuIDA7XG59XG5cbnZhciBPTkxZX0VOVU1FUkFCTEUgPSB1bmRlZmluZWQ7XG52YXIga1N0cmljdCA9IHRydWU7XG52YXIga0xvb3NlID0gZmFsc2U7XG52YXIga05vSXRlcmF0b3IgPSAwO1xudmFyIGtJc0FycmF5ID0gMTtcbnZhciBrSXNTZXQgPSAyO1xudmFyIGtJc01hcCA9IDM7IC8vIENoZWNrIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSBzb3VyY2UgYW5kIGZsYWdzXG5cbmZ1bmN0aW9uIGFyZVNpbWlsYXJSZWdFeHBzKGEsIGIpIHtcbiAgcmV0dXJuIHJlZ2V4RmxhZ3NTdXBwb3J0ZWQgPyBhLnNvdXJjZSA9PT0gYi5zb3VyY2UgJiYgYS5mbGFncyA9PT0gYi5mbGFncyA6IFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKSA9PT0gUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIpO1xufVxuXG5mdW5jdGlvbiBhcmVTaW1pbGFyRmxvYXRBcnJheXMoYSwgYikge1xuICBpZiAoYS5ieXRlTGVuZ3RoICE9PSBiLmJ5dGVMZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKHZhciBvZmZzZXQgPSAwOyBvZmZzZXQgPCBhLmJ5dGVMZW5ndGg7IG9mZnNldCsrKSB7XG4gICAgaWYgKGFbb2Zmc2V0XSAhPT0gYltvZmZzZXRdKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGFyZVNpbWlsYXJUeXBlZEFycmF5cyhhLCBiKSB7XG4gIGlmIChhLmJ5dGVMZW5ndGggIT09IGIuYnl0ZUxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBjb21wYXJlKG5ldyBVaW50OEFycmF5KGEuYnVmZmVyLCBhLmJ5dGVPZmZzZXQsIGEuYnl0ZUxlbmd0aCksIG5ldyBVaW50OEFycmF5KGIuYnVmZmVyLCBiLmJ5dGVPZmZzZXQsIGIuYnl0ZUxlbmd0aCkpID09PSAwO1xufVxuXG5mdW5jdGlvbiBhcmVFcXVhbEFycmF5QnVmZmVycyhidWYxLCBidWYyKSB7XG4gIHJldHVybiBidWYxLmJ5dGVMZW5ndGggPT09IGJ1ZjIuYnl0ZUxlbmd0aCAmJiBjb21wYXJlKG5ldyBVaW50OEFycmF5KGJ1ZjEpLCBuZXcgVWludDhBcnJheShidWYyKSkgPT09IDA7XG59XG5cbmZ1bmN0aW9uIGlzRXF1YWxCb3hlZFByaW1pdGl2ZSh2YWwxLCB2YWwyKSB7XG4gIGlmIChpc051bWJlck9iamVjdCh2YWwxKSkge1xuICAgIHJldHVybiBpc051bWJlck9iamVjdCh2YWwyKSAmJiBvYmplY3RJcyhOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh2YWwxKSwgTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodmFsMikpO1xuICB9XG5cbiAgaWYgKGlzU3RyaW5nT2JqZWN0KHZhbDEpKSB7XG4gICAgcmV0dXJuIGlzU3RyaW5nT2JqZWN0KHZhbDIpICYmIFN0cmluZy5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDEpID09PSBTdHJpbmcucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh2YWwyKTtcbiAgfVxuXG4gIGlmIChpc0Jvb2xlYW5PYmplY3QodmFsMSkpIHtcbiAgICByZXR1cm4gaXNCb29sZWFuT2JqZWN0KHZhbDIpICYmIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh2YWwxKSA9PT0gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDIpO1xuICB9XG5cbiAgaWYgKGlzQmlnSW50T2JqZWN0KHZhbDEpKSB7XG4gICAgcmV0dXJuIGlzQmlnSW50T2JqZWN0KHZhbDIpICYmIEJpZ0ludC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDEpID09PSBCaWdJbnQucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh2YWwyKTtcbiAgfVxuXG4gIHJldHVybiBpc1N5bWJvbE9iamVjdCh2YWwyKSAmJiBTeW1ib2wucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh2YWwxKSA9PT0gU3ltYm9sLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodmFsMik7XG59IC8vIE5vdGVzOiBUeXBlIHRhZ3MgYXJlIGhpc3RvcmljYWwgW1tDbGFzc11dIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgc2V0IGJ5XG4vLyBGdW5jdGlvblRlbXBsYXRlOjpTZXRDbGFzc05hbWUoKSBpbiBDKysgb3IgU3ltYm9sLnRvU3RyaW5nVGFnIGluIEpTXG4vLyBhbmQgcmV0cmlldmVkIHVzaW5nIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopIGluIEpTXG4vLyBTZWUgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZ1xuLy8gZm9yIGEgbGlzdCBvZiB0YWdzIHByZS1kZWZpbmVkIGluIHRoZSBzcGVjLlxuLy8gVGhlcmUgYXJlIHNvbWUgdW5zcGVjaWZpZWQgdGFncyBpbiB0aGUgd2lsZCB0b28gKGUuZy4gdHlwZWQgYXJyYXkgdGFncykuXG4vLyBTaW5jZSB0YWdzIGNhbiBiZSBhbHRlcmVkLCB0aGV5IG9ubHkgc2VydmUgZmFzdCBmYWlsdXJlc1xuLy9cbi8vIFR5cGVkIGFycmF5cyBhbmQgYnVmZmVycyBhcmUgY2hlY2tlZCBieSBjb21wYXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlaXJcbi8vIHVuZGVybHlpbmcgQXJyYXlCdWZmZXIuIFRoaXMgb3B0aW1pemF0aW9uIHJlcXVpcmVzIHRoYXQgaXQnc1xuLy8gcmVhc29uYWJsZSB0byBpbnRlcnByZXQgdGhlaXIgdW5kZXJseWluZyBtZW1vcnkgaW4gdGhlIHNhbWUgd2F5LFxuLy8gd2hpY2ggaXMgY2hlY2tlZCBieSBjb21wYXJpbmcgdGhlaXIgdHlwZSB0YWdzLlxuLy8gKGUuZy4gYSBVaW50OEFycmF5IGFuZCBhIFVpbnQxNkFycmF5IHdpdGggdGhlIHNhbWUgbWVtb3J5IGNvbnRlbnRcbi8vIGNvdWxkIHN0aWxsIGJlIGRpZmZlcmVudCBiZWNhdXNlIHRoZXkgd2lsbCBiZSBpbnRlcnByZXRlZCBkaWZmZXJlbnRseSkuXG4vL1xuLy8gRm9yIHN0cmljdCBjb21wYXJpc29uLCBvYmplY3RzIHNob3VsZCBoYXZlXG4vLyBhKSBUaGUgc2FtZSBidWlsdC1pbiB0eXBlIHRhZ3Ncbi8vIGIpIFRoZSBzYW1lIHByb3RvdHlwZXMuXG5cblxuZnVuY3Rpb24gaW5uZXJEZWVwRXF1YWwodmFsMSwgdmFsMiwgc3RyaWN0LCBtZW1vcykge1xuICAvLyBBbGwgaWRlbnRpY2FsIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgYXMgZGV0ZXJtaW5lZCBieSA9PT0uXG4gIGlmICh2YWwxID09PSB2YWwyKSB7XG4gICAgaWYgKHZhbDEgIT09IDApIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBzdHJpY3QgPyBvYmplY3RJcyh2YWwxLCB2YWwyKSA6IHRydWU7XG4gIH0gLy8gQ2hlY2sgbW9yZSBjbG9zZWx5IGlmIHZhbDEgYW5kIHZhbDIgYXJlIGVxdWFsLlxuXG5cbiAgaWYgKHN0cmljdCkge1xuICAgIGlmIChfdHlwZW9mKHZhbDEpICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWwxID09PSAnbnVtYmVyJyAmJiBudW1iZXJJc05hTih2YWwxKSAmJiBudW1iZXJJc05hTih2YWwyKTtcbiAgICB9XG5cbiAgICBpZiAoX3R5cGVvZih2YWwyKSAhPT0gJ29iamVjdCcgfHwgdmFsMSA9PT0gbnVsbCB8fCB2YWwyID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWwxKSAhPT0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbDIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh2YWwxID09PSBudWxsIHx8IF90eXBlb2YodmFsMSkgIT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAodmFsMiA9PT0gbnVsbCB8fCBfdHlwZW9mKHZhbDIpICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgIHJldHVybiB2YWwxID09IHZhbDI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodmFsMiA9PT0gbnVsbCB8fCBfdHlwZW9mKHZhbDIpICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHZhciB2YWwxVGFnID0gb2JqZWN0VG9TdHJpbmcodmFsMSk7XG4gIHZhciB2YWwyVGFnID0gb2JqZWN0VG9TdHJpbmcodmFsMik7XG5cbiAgaWYgKHZhbDFUYWcgIT09IHZhbDJUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwxKSkge1xuICAgIC8vIENoZWNrIGZvciBzcGFyc2UgYXJyYXlzIGFuZCBnZW5lcmFsIGZhc3QgcGF0aFxuICAgIGlmICh2YWwxLmxlbmd0aCAhPT0gdmFsMi5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIga2V5czEgPSBnZXRPd25Ob25JbmRleFByb3BlcnRpZXModmFsMSwgT05MWV9FTlVNRVJBQkxFKTtcbiAgICB2YXIga2V5czIgPSBnZXRPd25Ob25JbmRleFByb3BlcnRpZXModmFsMiwgT05MWV9FTlVNRVJBQkxFKTtcblxuICAgIGlmIChrZXlzMS5sZW5ndGggIT09IGtleXMyLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBrZXlDaGVjayh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW9zLCBrSXNBcnJheSwga2V5czEpO1xuICB9IC8vIFticm93c2VyaWZ5XSBUaGlzIHRyaWdnZXJzIG9uIGNlcnRhaW4gdHlwZXMgaW4gSUUgKE1hcC9TZXQpIHNvIHdlIGRvbid0XG4gIC8vIHdhbid0IHRvIGVhcmx5IHJldHVybiBvdXQgb2YgdGhlIHJlc3Qgb2YgdGhlIGNoZWNrcy4gSG93ZXZlciB3ZSBjYW4gY2hlY2tcbiAgLy8gaWYgdGhlIHNlY29uZCB2YWx1ZSBpcyBvbmUgb2YgdGhlc2UgdmFsdWVzIGFuZCB0aGUgZmlyc3QgaXNuJ3QuXG5cblxuICBpZiAodmFsMVRhZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICAvLyByZXR1cm4ga2V5Q2hlY2sodmFsMSwgdmFsMiwgc3RyaWN0LCBtZW1vcywga05vSXRlcmF0b3IpO1xuICAgIGlmICghaXNNYXAodmFsMSkgJiYgaXNNYXAodmFsMikgfHwgIWlzU2V0KHZhbDEpICYmIGlzU2V0KHZhbDIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKGlzRGF0ZSh2YWwxKSkge1xuICAgIGlmICghaXNEYXRlKHZhbDIpIHx8IERhdGUucHJvdG90eXBlLmdldFRpbWUuY2FsbCh2YWwxKSAhPT0gRGF0ZS5wcm90b3R5cGUuZ2V0VGltZS5jYWxsKHZhbDIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzUmVnRXhwKHZhbDEpKSB7XG4gICAgaWYgKCFpc1JlZ0V4cCh2YWwyKSB8fCAhYXJlU2ltaWxhclJlZ0V4cHModmFsMSwgdmFsMikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNOYXRpdmVFcnJvcih2YWwxKSB8fCB2YWwxIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBEbyBub3QgY29tcGFyZSB0aGUgc3RhY2sgYXMgaXQgbWlnaHQgZGlmZmVyIGV2ZW4gdGhvdWdoIHRoZSBlcnJvciBpdHNlbGZcbiAgICAvLyBpcyBvdGhlcndpc2UgaWRlbnRpY2FsLlxuICAgIGlmICh2YWwxLm1lc3NhZ2UgIT09IHZhbDIubWVzc2FnZSB8fCB2YWwxLm5hbWUgIT09IHZhbDIubmFtZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc0FycmF5QnVmZmVyVmlldyh2YWwxKSkge1xuICAgIGlmICghc3RyaWN0ICYmIChpc0Zsb2F0MzJBcnJheSh2YWwxKSB8fCBpc0Zsb2F0NjRBcnJheSh2YWwxKSkpIHtcbiAgICAgIGlmICghYXJlU2ltaWxhckZsb2F0QXJyYXlzKHZhbDEsIHZhbDIpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFhcmVTaW1pbGFyVHlwZWRBcnJheXModmFsMSwgdmFsMikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIEJ1ZmZlci5jb21wYXJlIHJldHVybnMgdHJ1ZSwgc28gdmFsMS5sZW5ndGggPT09IHZhbDIubGVuZ3RoLiBJZiB0aGV5IGJvdGhcbiAgICAvLyBvbmx5IGNvbnRhaW4gbnVtZXJpYyBrZXlzLCB3ZSBkb24ndCBuZWVkIHRvIGV4YW0gZnVydGhlciB0aGFuIGNoZWNraW5nXG4gICAgLy8gdGhlIHN5bWJvbHMuXG5cblxuICAgIHZhciBfa2V5cyA9IGdldE93bk5vbkluZGV4UHJvcGVydGllcyh2YWwxLCBPTkxZX0VOVU1FUkFCTEUpO1xuXG4gICAgdmFyIF9rZXlzMiA9IGdldE93bk5vbkluZGV4UHJvcGVydGllcyh2YWwyLCBPTkxZX0VOVU1FUkFCTEUpO1xuXG4gICAgaWYgKF9rZXlzLmxlbmd0aCAhPT0gX2tleXMyLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBrZXlDaGVjayh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW9zLCBrTm9JdGVyYXRvciwgX2tleXMpO1xuICB9IGVsc2UgaWYgKGlzU2V0KHZhbDEpKSB7XG4gICAgaWYgKCFpc1NldCh2YWwyKSB8fCB2YWwxLnNpemUgIT09IHZhbDIuc2l6ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBrZXlDaGVjayh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW9zLCBrSXNTZXQpO1xuICB9IGVsc2UgaWYgKGlzTWFwKHZhbDEpKSB7XG4gICAgaWYgKCFpc01hcCh2YWwyKSB8fCB2YWwxLnNpemUgIT09IHZhbDIuc2l6ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBrZXlDaGVjayh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW9zLCBrSXNNYXApO1xuICB9IGVsc2UgaWYgKGlzQW55QXJyYXlCdWZmZXIodmFsMSkpIHtcbiAgICBpZiAoIWFyZUVxdWFsQXJyYXlCdWZmZXJzKHZhbDEsIHZhbDIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzQm94ZWRQcmltaXRpdmUodmFsMSkgJiYgIWlzRXF1YWxCb3hlZFByaW1pdGl2ZSh2YWwxLCB2YWwyKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBrZXlDaGVjayh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW9zLCBrTm9JdGVyYXRvcik7XG59XG5cbmZ1bmN0aW9uIGdldEVudW1lcmFibGVzKHZhbCwga2V5cykge1xuICByZXR1cm4ga2V5cy5maWx0ZXIoZnVuY3Rpb24gKGspIHtcbiAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUodmFsLCBrKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGtleUNoZWNrKHZhbDEsIHZhbDIsIHN0cmljdCwgbWVtb3MsIGl0ZXJhdGlvblR5cGUsIGFLZXlzKSB7XG4gIC8vIEZvciBhbGwgcmVtYWluaW5nIE9iamVjdCBwYWlycywgaW5jbHVkaW5nIEFycmF5LCBvYmplY3RzIGFuZCBNYXBzLFxuICAvLyBlcXVpdmFsZW5jZSBpcyBkZXRlcm1pbmVkIGJ5IGhhdmluZzpcbiAgLy8gYSkgVGhlIHNhbWUgbnVtYmVyIG9mIG93bmVkIGVudW1lcmFibGUgcHJvcGVydGllc1xuICAvLyBiKSBUaGUgc2FtZSBzZXQgb2Yga2V5cy9pbmRleGVzIChhbHRob3VnaCBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgb3JkZXIpXG4gIC8vIGMpIEVxdWl2YWxlbnQgdmFsdWVzIGZvciBldmVyeSBjb3JyZXNwb25kaW5nIGtleS9pbmRleFxuICAvLyBkKSBGb3IgU2V0cyBhbmQgTWFwcywgZXF1YWwgY29udGVudHNcbiAgLy8gTm90ZTogdGhpcyBhY2NvdW50cyBmb3IgYm90aCBuYW1lZCBhbmQgaW5kZXhlZCBwcm9wZXJ0aWVzIG9uIEFycmF5cy5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDUpIHtcbiAgICBhS2V5cyA9IE9iamVjdC5rZXlzKHZhbDEpO1xuICAgIHZhciBiS2V5cyA9IE9iamVjdC5rZXlzKHZhbDIpOyAvLyBUaGUgcGFpciBtdXN0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIG93bmVkIHByb3BlcnRpZXMuXG5cbiAgICBpZiAoYUtleXMubGVuZ3RoICE9PSBiS2V5cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gLy8gQ2hlYXAga2V5IHRlc3RcblxuXG4gIHZhciBpID0gMDtcblxuICBmb3IgKDsgaSA8IGFLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCFoYXNPd25Qcm9wZXJ0eSh2YWwyLCBhS2V5c1tpXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoc3RyaWN0ICYmIGFyZ3VtZW50cy5sZW5ndGggPT09IDUpIHtcbiAgICB2YXIgc3ltYm9sS2V5c0EgPSBvYmplY3RHZXRPd25Qcm9wZXJ0eVN5bWJvbHModmFsMSk7XG5cbiAgICBpZiAoc3ltYm9sS2V5c0EubGVuZ3RoICE9PSAwKSB7XG4gICAgICB2YXIgY291bnQgPSAwO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgc3ltYm9sS2V5c0EubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGtleSA9IHN5bWJvbEtleXNBW2ldO1xuXG4gICAgICAgIGlmIChwcm9wZXJ0eUlzRW51bWVyYWJsZSh2YWwxLCBrZXkpKSB7XG4gICAgICAgICAgaWYgKCFwcm9wZXJ0eUlzRW51bWVyYWJsZSh2YWwyLCBrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYUtleXMucHVzaChrZXkpO1xuICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJc0VudW1lcmFibGUodmFsMiwga2V5KSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgc3ltYm9sS2V5c0IgPSBvYmplY3RHZXRPd25Qcm9wZXJ0eVN5bWJvbHModmFsMik7XG5cbiAgICAgIGlmIChzeW1ib2xLZXlzQS5sZW5ndGggIT09IHN5bWJvbEtleXNCLmxlbmd0aCAmJiBnZXRFbnVtZXJhYmxlcyh2YWwyLCBzeW1ib2xLZXlzQikubGVuZ3RoICE9PSBjb3VudCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfc3ltYm9sS2V5c0IgPSBvYmplY3RHZXRPd25Qcm9wZXJ0eVN5bWJvbHModmFsMik7XG5cbiAgICAgIGlmIChfc3ltYm9sS2V5c0IubGVuZ3RoICE9PSAwICYmIGdldEVudW1lcmFibGVzKHZhbDIsIF9zeW1ib2xLZXlzQikubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoYUtleXMubGVuZ3RoID09PSAwICYmIChpdGVyYXRpb25UeXBlID09PSBrTm9JdGVyYXRvciB8fCBpdGVyYXRpb25UeXBlID09PSBrSXNBcnJheSAmJiB2YWwxLmxlbmd0aCA9PT0gMCB8fCB2YWwxLnNpemUgPT09IDApKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gVXNlIG1lbW9zIHRvIGhhbmRsZSBjeWNsZXMuXG5cblxuICBpZiAobWVtb3MgPT09IHVuZGVmaW5lZCkge1xuICAgIG1lbW9zID0ge1xuICAgICAgdmFsMTogbmV3IE1hcCgpLFxuICAgICAgdmFsMjogbmV3IE1hcCgpLFxuICAgICAgcG9zaXRpb246IDBcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIC8vIFdlIHByZXZlbnQgdXAgdG8gdHdvIG1hcC5oYXMoeCkgY2FsbHMgYnkgZGlyZWN0bHkgcmV0cmlldmluZyB0aGUgdmFsdWVcbiAgICAvLyBhbmQgY2hlY2tpbmcgZm9yIHVuZGVmaW5lZC4gVGhlIG1hcCBjYW4gb25seSBjb250YWluIG51bWJlcnMsIHNvIGl0IGlzXG4gICAgLy8gc2FmZSB0byBjaGVjayBmb3IgdW5kZWZpbmVkIG9ubHkuXG4gICAgdmFyIHZhbDJNZW1vQSA9IG1lbW9zLnZhbDEuZ2V0KHZhbDEpO1xuXG4gICAgaWYgKHZhbDJNZW1vQSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgdmFsMk1lbW9CID0gbWVtb3MudmFsMi5nZXQodmFsMik7XG5cbiAgICAgIGlmICh2YWwyTWVtb0IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdmFsMk1lbW9BID09PSB2YWwyTWVtb0I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWVtb3MucG9zaXRpb24rKztcbiAgfVxuXG4gIG1lbW9zLnZhbDEuc2V0KHZhbDEsIG1lbW9zLnBvc2l0aW9uKTtcbiAgbWVtb3MudmFsMi5zZXQodmFsMiwgbWVtb3MucG9zaXRpb24pO1xuICB2YXIgYXJlRXEgPSBvYmpFcXVpdih2YWwxLCB2YWwyLCBzdHJpY3QsIGFLZXlzLCBtZW1vcywgaXRlcmF0aW9uVHlwZSk7XG4gIG1lbW9zLnZhbDEuZGVsZXRlKHZhbDEpO1xuICBtZW1vcy52YWwyLmRlbGV0ZSh2YWwyKTtcbiAgcmV0dXJuIGFyZUVxO1xufVxuXG5mdW5jdGlvbiBzZXRIYXNFcXVhbEVsZW1lbnQoc2V0LCB2YWwxLCBzdHJpY3QsIG1lbW8pIHtcbiAgLy8gR28gbG9va2luZy5cbiAgdmFyIHNldFZhbHVlcyA9IGFycmF5RnJvbVNldChzZXQpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2V0VmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHZhbDIgPSBzZXRWYWx1ZXNbaV07XG5cbiAgICBpZiAoaW5uZXJEZWVwRXF1YWwodmFsMSwgdmFsMiwgc3RyaWN0LCBtZW1vKSkge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBtYXRjaGluZyBlbGVtZW50IHRvIG1ha2Ugc3VyZSB3ZSBkbyBub3QgY2hlY2sgdGhhdCBhZ2Fpbi5cbiAgICAgIHNldC5kZWxldGUodmFsMik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59IC8vIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L0VxdWFsaXR5X2NvbXBhcmlzb25zX2FuZF9zYW1lbmVzcyNMb29zZV9lcXVhbGl0eV91c2luZ1xuLy8gU2FkbHkgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGRldGVjdCBjb3JyZXNwb25kaW5nIHZhbHVlcyBwcm9wZXJseSBpbiBjYXNlIHRoZVxuLy8gdHlwZSBpcyBhIHN0cmluZywgbnVtYmVyLCBiaWdpbnQgb3IgYm9vbGVhbi4gVGhlIHJlYXNvbiBpcyB0aGF0IHRob3NlIHZhbHVlc1xuLy8gY2FuIG1hdGNoIGxvdHMgb2YgZGlmZmVyZW50IHN0cmluZyB2YWx1ZXMgKGUuZy4sIDFuID09ICcrMDAwMDEnKS5cblxuXG5mdW5jdGlvbiBmaW5kTG9vc2VNYXRjaGluZ1ByaW1pdGl2ZXMocHJpbSkge1xuICBzd2l0Y2ggKF90eXBlb2YocHJpbSkpIHtcbiAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgLy8gT25seSBwYXNzIGluIG51bGwgYXMgb2JqZWN0IVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNhc2UgJ3N5bWJvbCc6XG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcHJpbSA9ICtwcmltO1xuICAgIC8vIExvb3NlIGVxdWFsIGVudHJpZXMgZXhpc3Qgb25seSBpZiB0aGUgc3RyaW5nIGlzIHBvc3NpYmxlIHRvIGNvbnZlcnQgdG9cbiAgICAvLyBhIHJlZ3VsYXIgbnVtYmVyIGFuZCBub3QgTmFOLlxuICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGlmIChudW1iZXJJc05hTihwcmltKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBzZXRNaWdodEhhdmVMb29zZVByaW0oYSwgYiwgcHJpbSkge1xuICB2YXIgYWx0VmFsdWUgPSBmaW5kTG9vc2VNYXRjaGluZ1ByaW1pdGl2ZXMocHJpbSk7XG4gIGlmIChhbHRWYWx1ZSAhPSBudWxsKSByZXR1cm4gYWx0VmFsdWU7XG4gIHJldHVybiBiLmhhcyhhbHRWYWx1ZSkgJiYgIWEuaGFzKGFsdFZhbHVlKTtcbn1cblxuZnVuY3Rpb24gbWFwTWlnaHRIYXZlTG9vc2VQcmltKGEsIGIsIHByaW0sIGl0ZW0sIG1lbW8pIHtcbiAgdmFyIGFsdFZhbHVlID0gZmluZExvb3NlTWF0Y2hpbmdQcmltaXRpdmVzKHByaW0pO1xuXG4gIGlmIChhbHRWYWx1ZSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIGFsdFZhbHVlO1xuICB9XG5cbiAgdmFyIGN1ckIgPSBiLmdldChhbHRWYWx1ZSk7XG5cbiAgaWYgKGN1ckIgPT09IHVuZGVmaW5lZCAmJiAhYi5oYXMoYWx0VmFsdWUpIHx8ICFpbm5lckRlZXBFcXVhbChpdGVtLCBjdXJCLCBmYWxzZSwgbWVtbykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIWEuaGFzKGFsdFZhbHVlKSAmJiBpbm5lckRlZXBFcXVhbChpdGVtLCBjdXJCLCBmYWxzZSwgbWVtbyk7XG59XG5cbmZ1bmN0aW9uIHNldEVxdWl2KGEsIGIsIHN0cmljdCwgbWVtbykge1xuICAvLyBUaGlzIGlzIGEgbGF6aWx5IGluaXRpYXRlZCBTZXQgb2YgZW50cmllcyB3aGljaCBoYXZlIHRvIGJlIGNvbXBhcmVkXG4gIC8vIHBhaXJ3aXNlLlxuICB2YXIgc2V0ID0gbnVsbDtcbiAgdmFyIGFWYWx1ZXMgPSBhcnJheUZyb21TZXQoYSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHZhbCA9IGFWYWx1ZXNbaV07IC8vIE5vdGU6IENoZWNraW5nIGZvciB0aGUgb2JqZWN0cyBmaXJzdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2UgZm9yIG9iamVjdFxuICAgIC8vIGhlYXZ5IHNldHMgYnV0IGl0IGlzIGEgbWlub3Igc2xvdyBkb3duIGZvciBwcmltaXRpdmVzLiBBcyB0aGV5IGFyZSBmYXN0XG4gICAgLy8gdG8gY2hlY2sgdGhpcyBpbXByb3ZlcyB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBpbnN0ZWFkLlxuXG4gICAgaWYgKF90eXBlb2YodmFsKSA9PT0gJ29iamVjdCcgJiYgdmFsICE9PSBudWxsKSB7XG4gICAgICBpZiAoc2V0ID09PSBudWxsKSB7XG4gICAgICAgIHNldCA9IG5ldyBTZXQoKTtcbiAgICAgIH0gLy8gSWYgdGhlIHNwZWNpZmllZCB2YWx1ZSBkb2Vzbid0IGV4aXN0IGluIHRoZSBzZWNvbmQgc2V0IGl0cyBhbiBub3QgbnVsbFxuICAgICAgLy8gb2JqZWN0IChvciBub24gc3RyaWN0IG9ubHk6IGEgbm90IG1hdGNoaW5nIHByaW1pdGl2ZSkgd2UnbGwgbmVlZCB0byBnb1xuICAgICAgLy8gaHVudGluZyBmb3Igc29tZXRoaW5nIHRoYXRzIGRlZXAtKHN0cmljdC0pZXF1YWwgdG8gaXQuIFRvIG1ha2UgdGhpc1xuICAgICAgLy8gTyhuIGxvZyBuKSBjb21wbGV4aXR5IHdlIGhhdmUgdG8gY29weSB0aGVzZSB2YWx1ZXMgaW4gYSBuZXcgc2V0IGZpcnN0LlxuXG5cbiAgICAgIHNldC5hZGQodmFsKTtcbiAgICB9IGVsc2UgaWYgKCFiLmhhcyh2YWwpKSB7XG4gICAgICBpZiAoc3RyaWN0KSByZXR1cm4gZmFsc2U7IC8vIEZhc3QgcGF0aCB0byBkZXRlY3QgbWlzc2luZyBzdHJpbmcsIHN5bWJvbCwgdW5kZWZpbmVkIGFuZCBudWxsIHZhbHVlcy5cblxuICAgICAgaWYgKCFzZXRNaWdodEhhdmVMb29zZVByaW0oYSwgYiwgdmFsKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZXQgPT09IG51bGwpIHtcbiAgICAgICAgc2V0ID0gbmV3IFNldCgpO1xuICAgICAgfVxuXG4gICAgICBzZXQuYWRkKHZhbCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHNldCAhPT0gbnVsbCkge1xuICAgIHZhciBiVmFsdWVzID0gYXJyYXlGcm9tU2V0KGIpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGJWYWx1ZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX3ZhbCA9IGJWYWx1ZXNbX2ldOyAvLyBXZSBoYXZlIHRvIGNoZWNrIGlmIGEgcHJpbWl0aXZlIHZhbHVlIGlzIGFscmVhZHlcbiAgICAgIC8vIG1hdGNoaW5nIGFuZCBvbmx5IGlmIGl0J3Mgbm90LCBnbyBodW50aW5nIGZvciBpdC5cblxuICAgICAgaWYgKF90eXBlb2YoX3ZhbCkgPT09ICdvYmplY3QnICYmIF92YWwgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKCFzZXRIYXNFcXVhbEVsZW1lbnQoc2V0LCBfdmFsLCBzdHJpY3QsIG1lbW8pKSByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgIWEuaGFzKF92YWwpICYmICFzZXRIYXNFcXVhbEVsZW1lbnQoc2V0LCBfdmFsLCBzdHJpY3QsIG1lbW8pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2V0LnNpemUgPT09IDA7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gbWFwSGFzRXF1YWxFbnRyeShzZXQsIG1hcCwga2V5MSwgaXRlbTEsIHN0cmljdCwgbWVtbykge1xuICAvLyBUbyBiZSBhYmxlIHRvIGhhbmRsZSBjYXNlcyBsaWtlOlxuICAvLyAgIE1hcChbW3t9LCAnYSddLCBbe30sICdiJ11dKSB2cyBNYXAoW1t7fSwgJ2InXSwgW3t9LCAnYSddXSlcbiAgLy8gLi4uIHdlIG5lZWQgdG8gY29uc2lkZXIgKmFsbCogbWF0Y2hpbmcga2V5cywgbm90IGp1c3QgdGhlIGZpcnN0IHdlIGZpbmQuXG4gIHZhciBzZXRWYWx1ZXMgPSBhcnJheUZyb21TZXQoc2V0KTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNldFZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkyID0gc2V0VmFsdWVzW2ldO1xuXG4gICAgaWYgKGlubmVyRGVlcEVxdWFsKGtleTEsIGtleTIsIHN0cmljdCwgbWVtbykgJiYgaW5uZXJEZWVwRXF1YWwoaXRlbTEsIG1hcC5nZXQoa2V5MiksIHN0cmljdCwgbWVtbykpIHtcbiAgICAgIHNldC5kZWxldGUoa2V5Mik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG1hcEVxdWl2KGEsIGIsIHN0cmljdCwgbWVtbykge1xuICB2YXIgc2V0ID0gbnVsbDtcbiAgdmFyIGFFbnRyaWVzID0gYXJyYXlGcm9tTWFwKGEpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYUVudHJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgX2FFbnRyaWVzJGkgPSBfc2xpY2VkVG9BcnJheShhRW50cmllc1tpXSwgMiksXG4gICAgICAgIGtleSA9IF9hRW50cmllcyRpWzBdLFxuICAgICAgICBpdGVtMSA9IF9hRW50cmllcyRpWzFdO1xuXG4gICAgaWYgKF90eXBlb2Yoa2V5KSA9PT0gJ29iamVjdCcgJiYga2V5ICE9PSBudWxsKSB7XG4gICAgICBpZiAoc2V0ID09PSBudWxsKSB7XG4gICAgICAgIHNldCA9IG5ldyBTZXQoKTtcbiAgICAgIH1cblxuICAgICAgc2V0LmFkZChrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCeSBkaXJlY3RseSByZXRyaWV2aW5nIHRoZSB2YWx1ZSB3ZSBwcmV2ZW50IGFub3RoZXIgYi5oYXMoa2V5KSBjaGVjayBpblxuICAgICAgLy8gYWxtb3N0IGFsbCBwb3NzaWJsZSBjYXNlcy5cbiAgICAgIHZhciBpdGVtMiA9IGIuZ2V0KGtleSk7XG5cbiAgICAgIGlmIChpdGVtMiA9PT0gdW5kZWZpbmVkICYmICFiLmhhcyhrZXkpIHx8ICFpbm5lckRlZXBFcXVhbChpdGVtMSwgaXRlbTIsIHN0cmljdCwgbWVtbykpIHtcbiAgICAgICAgaWYgKHN0cmljdCkgcmV0dXJuIGZhbHNlOyAvLyBGYXN0IHBhdGggdG8gZGV0ZWN0IG1pc3Npbmcgc3RyaW5nLCBzeW1ib2wsIHVuZGVmaW5lZCBhbmQgbnVsbFxuICAgICAgICAvLyBrZXlzLlxuXG4gICAgICAgIGlmICghbWFwTWlnaHRIYXZlTG9vc2VQcmltKGEsIGIsIGtleSwgaXRlbTEsIG1lbW8pKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgaWYgKHNldCA9PT0gbnVsbCkge1xuICAgICAgICAgIHNldCA9IG5ldyBTZXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldC5hZGQoa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc2V0ICE9PSBudWxsKSB7XG4gICAgdmFyIGJFbnRyaWVzID0gYXJyYXlGcm9tTWFwKGIpO1xuXG4gICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgYkVudHJpZXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgdmFyIF9iRW50cmllcyRfaSA9IF9zbGljZWRUb0FycmF5KGJFbnRyaWVzW19pMl0sIDIpLFxuICAgICAgICAgIGtleSA9IF9iRW50cmllcyRfaVswXSxcbiAgICAgICAgICBpdGVtID0gX2JFbnRyaWVzJF9pWzFdO1xuXG4gICAgICBpZiAoX3R5cGVvZihrZXkpID09PSAnb2JqZWN0JyAmJiBrZXkgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKCFtYXBIYXNFcXVhbEVudHJ5KHNldCwgYSwga2V5LCBpdGVtLCBzdHJpY3QsIG1lbW8pKSByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgKCFhLmhhcyhrZXkpIHx8ICFpbm5lckRlZXBFcXVhbChhLmdldChrZXkpLCBpdGVtLCBmYWxzZSwgbWVtbykpICYmICFtYXBIYXNFcXVhbEVudHJ5KHNldCwgYSwga2V5LCBpdGVtLCBmYWxzZSwgbWVtbykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzZXQuc2l6ZSA9PT0gMDtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBvYmpFcXVpdihhLCBiLCBzdHJpY3QsIGtleXMsIG1lbW9zLCBpdGVyYXRpb25UeXBlKSB7XG4gIC8vIFNldHMgYW5kIG1hcHMgZG9uJ3QgaGF2ZSB0aGVpciBlbnRyaWVzIGFjY2Vzc2libGUgdmlhIG5vcm1hbCBvYmplY3RcbiAgLy8gcHJvcGVydGllcy5cbiAgdmFyIGkgPSAwO1xuXG4gIGlmIChpdGVyYXRpb25UeXBlID09PSBrSXNTZXQpIHtcbiAgICBpZiAoIXNldEVxdWl2KGEsIGIsIHN0cmljdCwgbWVtb3MpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IGVsc2UgaWYgKGl0ZXJhdGlvblR5cGUgPT09IGtJc01hcCkge1xuICAgIGlmICghbWFwRXF1aXYoYSwgYiwgc3RyaWN0LCBtZW1vcykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXRlcmF0aW9uVHlwZSA9PT0ga0lzQXJyYXkpIHtcbiAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShhLCBpKSkge1xuICAgICAgICBpZiAoIWhhc093blByb3BlcnR5KGIsIGkpIHx8ICFpbm5lckRlZXBFcXVhbChhW2ldLCBiW2ldLCBzdHJpY3QsIG1lbW9zKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChoYXNPd25Qcm9wZXJ0eShiLCBpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBcnJheSBpcyBzcGFyc2UuXG4gICAgICAgIHZhciBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xuXG4gICAgICAgIGZvciAoOyBpIDwga2V5c0EubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIga2V5ID0ga2V5c0FbaV07XG5cbiAgICAgICAgICBpZiAoIWhhc093blByb3BlcnR5KGIsIGtleSkgfHwgIWlubmVyRGVlcEVxdWFsKGFba2V5XSwgYltrZXldLCBzdHJpY3QsIG1lbW9zKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChrZXlzQS5sZW5ndGggIT09IE9iamVjdC5rZXlzKGIpLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBUaGUgcGFpciBtdXN0IGhhdmUgZXF1aXZhbGVudCB2YWx1ZXMgZm9yIGV2ZXJ5IGNvcnJlc3BvbmRpbmcga2V5LlxuICAvLyBQb3NzaWJseSBleHBlbnNpdmUgZGVlcCB0ZXN0OlxuXG5cbiAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgX2tleSA9IGtleXNbaV07XG5cbiAgICBpZiAoIWlubmVyRGVlcEVxdWFsKGFbX2tleV0sIGJbX2tleV0sIHN0cmljdCwgbWVtb3MpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzRGVlcEVxdWFsKHZhbDEsIHZhbDIpIHtcbiAgcmV0dXJuIGlubmVyRGVlcEVxdWFsKHZhbDEsIHZhbDIsIGtMb29zZSk7XG59XG5cbmZ1bmN0aW9uIGlzRGVlcFN0cmljdEVxdWFsKHZhbDEsIHZhbDIpIHtcbiAgcmV0dXJuIGlubmVyRGVlcEVxdWFsKHZhbDEsIHZhbDIsIGtTdHJpY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNEZWVwRXF1YWw6IGlzRGVlcEVxdWFsLFxuICBpc0RlZXBTdHJpY3RFcXVhbDogaXNEZWVwU3RyaWN0RXF1YWxcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcG9zc2libGVOYW1lcyA9IFtcblx0J0JpZ0ludDY0QXJyYXknLFxuXHQnQmlnVWludDY0QXJyYXknLFxuXHQnRmxvYXQzMkFycmF5Jyxcblx0J0Zsb2F0NjRBcnJheScsXG5cdCdJbnQxNkFycmF5Jyxcblx0J0ludDMyQXJyYXknLFxuXHQnSW50OEFycmF5Jyxcblx0J1VpbnQxNkFycmF5Jyxcblx0J1VpbnQzMkFycmF5Jyxcblx0J1VpbnQ4QXJyYXknLFxuXHQnVWludDhDbGFtcGVkQXJyYXknXG5dO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGF2YWlsYWJsZVR5cGVkQXJyYXlzKCkge1xuXHR2YXIgb3V0ID0gW107XG5cdGZvciAodmFyIGkgPSAwOyBpIDwgcG9zc2libGVOYW1lcy5sZW5ndGg7IGkrKykge1xuXHRcdGlmICh0eXBlb2YgZ2xvYmFsW3Bvc3NpYmxlTmFtZXNbaV1dID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSBwb3NzaWJsZU5hbWVzW2ldO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb3V0O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvYmFzZTQ1JylcbiIsImNvbnN0IGNoYXJzZXQgPSAnMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaICQlKistLi86J1xuY29uc3QgZGl2bW9kID0gKHgsIHkpID0+IFtNYXRoLmZsb29yKHggLyB5KSwgeCAlIHldXG5cbi8vIEVuY29kZSBhIGJ1ZmZlciAob3IgdWludDhhcnJheSkgdG8gYmFzZTQ1LWVuY29kZWQgc3RyaW5nXG5jb25zdCBlbmNvZGUgPSAoYnVmZmVyKSA9PiB7XG4gIGlmICh0eXBlb2YgKGJ1ZmZlcikgPT09ICdzdHJpbmcnKSBidWZmZXIgPSBCdWZmZXIuZnJvbShidWZmZXIpXG4gIGxldCByZXMgPSAnJ1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkgPSBpICsgMikge1xuICAgIGlmIChidWZmZXIubGVuZ3RoIC0gaSA+IDEpIHtcbiAgICAgIGNvbnN0IHggPSAoYnVmZmVyW2ldIDw8IDgpICsgYnVmZmVyW2kgKyAxXVxuICAgICAgY29uc3QgW2UsIHJlc3RdID0gZGl2bW9kKHgsIDQ1ICogNDUpXG4gICAgICBjb25zdCBbZCwgY10gPSBkaXZtb2QocmVzdCwgNDUpXG4gICAgICByZXMgKz0gY2hhcnNldFtjXSArIGNoYXJzZXRbZF0gKyBjaGFyc2V0W2VdXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IFtkLCBjXSA9IGRpdm1vZChidWZmZXJbaV0sIDQ1KVxuICAgICAgcmVzICs9IGNoYXJzZXRbY10gKyBjaGFyc2V0W2RdXG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLy8gRGVjb2RlIGJhc2U0NS1lbmNvZGVkIGlucHV0XG5jb25zdCBkZWNvZGUgPSAoaW5wdXQpID0+IHtcbiAgY29uc3QgYnVmZmVyID0gQXJyYXkuZnJvbShpbnB1dCkubWFwKGMgPT4gY2hhcnNldC5pbmRleE9mKGMpKVxuICBjb25zdCByZXMgPSBbXVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkgPSBpICsgMykge1xuICAgIGlmIChidWZmZXIubGVuZ3RoIC0gaSA+PSAzKSB7XG4gICAgICBjb25zdCB4ID0gYnVmZmVyW2ldICsgYnVmZmVyW2kgKyAxXSAqIDQ1ICsgYnVmZmVyW2kgKyAyXSAqIDQ1ICogNDVcbiAgICAgIHJlcy5wdXNoKC4uLmRpdm1vZCh4LCAyNTYpKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB4ID0gYnVmZmVyW2ldICsgYnVmZmVyW2kgKyAxXSAqIDQ1XG4gICAgICByZXMucHVzaCh4KVxuICAgIH1cbiAgfVxuICByZXR1cm4gQnVmZmVyLmZyb20ocmVzKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZW5jb2RlLFxuICBkZWNvZGVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5leHBvcnRzLnRvQnl0ZUFycmF5ID0gdG9CeXRlQXJyYXlcbmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXlcblxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcblxudmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcbmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbi8vIFN1cHBvcnQgZGVjb2RpbmcgVVJMLXNhZmUgYmFzZTY0IHN0cmluZ3MsIGFzIE5vZGUuanMgZG9lcy5cbi8vIFNlZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzZTY0I1VSTF9hcHBsaWNhdGlvbnNcbnJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxucmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzXG5cbmZ1bmN0aW9uIGdldExlbnMgKGI2NCkge1xuICB2YXIgbGVuID0gYjY0Lmxlbmd0aFxuXG4gIGlmIChsZW4gJSA0ID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCcpXG4gIH1cblxuICAvLyBUcmltIG9mZiBleHRyYSBieXRlcyBhZnRlciBwbGFjZWhvbGRlciBieXRlcyBhcmUgZm91bmRcbiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmVhdGdhbW1pdC9iYXNlNjQtanMvaXNzdWVzLzQyXG4gIHZhciB2YWxpZExlbiA9IGI2NC5pbmRleE9mKCc9JylcbiAgaWYgKHZhbGlkTGVuID09PSAtMSkgdmFsaWRMZW4gPSBsZW5cblxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gdmFsaWRMZW4gPT09IGxlblxuICAgID8gMFxuICAgIDogNCAtICh2YWxpZExlbiAlIDQpXG5cbiAgcmV0dXJuIFt2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuXVxufVxuXG4vLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkge1xuICB2YXIgbGVucyA9IGdldExlbnMoYjY0KVxuICB2YXIgdmFsaWRMZW4gPSBsZW5zWzBdXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSBsZW5zWzFdXG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiBfYnl0ZUxlbmd0aCAoYjY0LCB2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuKSB7XG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiB0b0J5dGVBcnJheSAoYjY0KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuXG4gIHZhciBhcnIgPSBuZXcgQXJyKF9ieXRlTGVuZ3RoKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikpXG5cbiAgdmFyIGN1ckJ5dGUgPSAwXG5cbiAgLy8gaWYgdGhlcmUgYXJlIHBsYWNlaG9sZGVycywgb25seSBnZXQgdXAgdG8gdGhlIGxhc3QgY29tcGxldGUgNCBjaGFyc1xuICB2YXIgbGVuID0gcGxhY2VIb2xkZXJzTGVuID4gMFxuICAgID8gdmFsaWRMZW4gLSA0XG4gICAgOiB2YWxpZExlblxuXG4gIHZhciBpXG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxOCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDEyKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPDwgNikgfFxuICAgICAgcmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAzKV1cbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gMTYpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnNMZW4gPT09IDIpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldID4+IDQpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAxKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDEwKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgNCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildID4+IDIpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkge1xuICByZXR1cm4gbG9va3VwW251bSA+PiAxOCAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDEyICYgMHgzRl0gK1xuICAgIGxvb2t1cFtudW0gPj4gNiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtICYgMHgzRl1cbn1cblxuZnVuY3Rpb24gZW5jb2RlQ2h1bmsgKHVpbnQ4LCBzdGFydCwgZW5kKSB7XG4gIHZhciB0bXBcbiAgdmFyIG91dHB1dCA9IFtdXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSAzKSB7XG4gICAgdG1wID1cbiAgICAgICgodWludDhbaV0gPDwgMTYpICYgMHhGRjAwMDApICtcbiAgICAgICgodWludDhbaSArIDFdIDw8IDgpICYgMHhGRjAwKSArXG4gICAgICAodWludDhbaSArIDJdICYgMHhGRilcbiAgICBvdXRwdXQucHVzaCh0cmlwbGV0VG9CYXNlNjQodG1wKSlcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIHBhcnRzID0gW11cbiAgdmFyIG1heENodW5rTGVuZ3RoID0gMTYzODMgLy8gbXVzdCBiZSBtdWx0aXBsZSBvZiAzXG5cbiAgLy8gZ28gdGhyb3VnaCB0aGUgYXJyYXkgZXZlcnkgdGhyZWUgYnl0ZXMsIHdlJ2xsIGRlYWwgd2l0aCB0cmFpbGluZyBzdHVmZiBsYXRlclxuICBmb3IgKHZhciBpID0gMCwgbGVuMiA9IGxlbiAtIGV4dHJhQnl0ZXM7IGkgPCBsZW4yOyBpICs9IG1heENodW5rTGVuZ3RoKSB7XG4gICAgcGFydHMucHVzaChlbmNvZGVDaHVuayh1aW50OCwgaSwgKGkgKyBtYXhDaHVua0xlbmd0aCkgPiBsZW4yID8gbGVuMiA6IChpICsgbWF4Q2h1bmtMZW5ndGgpKSlcbiAgfVxuXG4gIC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXNcbiAgaWYgKGV4dHJhQnl0ZXMgPT09IDEpIHtcbiAgICB0bXAgPSB1aW50OFtsZW4gLSAxXVxuICAgIHBhcnRzLnB1c2goXG4gICAgICBsb29rdXBbdG1wID4+IDJdICtcbiAgICAgIGxvb2t1cFsodG1wIDw8IDQpICYgMHgzRl0gK1xuICAgICAgJz09J1xuICAgIClcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgdWludDhbbGVuIC0gMV1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgbG9va3VwW3RtcCA+PiAxMF0gK1xuICAgICAgbG9va3VwWyh0bXAgPj4gNCkgJiAweDNGXSArXG4gICAgICBsb29rdXBbKHRtcCA8PCAyKSAmIDB4M0ZdICtcbiAgICAgICc9J1xuICAgIClcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCcnKVxufVxuIiwiOyhmdW5jdGlvbiAoZ2xvYmFsT2JqZWN0KSB7XHJcbiAgJ3VzZSBzdHJpY3QnO1xyXG5cclxuLypcclxuICogICAgICBiaWdudW1iZXIuanMgdjkuMC4xXHJcbiAqICAgICAgQSBKYXZhU2NyaXB0IGxpYnJhcnkgZm9yIGFyYml0cmFyeS1wcmVjaXNpb24gYXJpdGhtZXRpYy5cclxuICogICAgICBodHRwczovL2dpdGh1Yi5jb20vTWlrZU1jbC9iaWdudW1iZXIuanNcclxuICogICAgICBDb3B5cmlnaHQgKGMpIDIwMjAgTWljaGFlbCBNY2xhdWdobGluIDxNOGNoODhsQGdtYWlsLmNvbT5cclxuICogICAgICBNSVQgTGljZW5zZWQuXHJcbiAqXHJcbiAqICAgICAgQmlnTnVtYmVyLnByb3RvdHlwZSBtZXRob2RzICAgICB8ICBCaWdOdW1iZXIgbWV0aG9kc1xyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIGFic29sdXRlVmFsdWUgICAgICAgICAgICBhYnMgICAgfCAgY2xvbmVcclxuICogICAgICBjb21wYXJlZFRvICAgICAgICAgICAgICAgICAgICAgIHwgIGNvbmZpZyAgICAgICAgICAgICAgIHNldFxyXG4gKiAgICAgIGRlY2ltYWxQbGFjZXMgICAgICAgICAgICBkcCAgICAgfCAgICAgIERFQ0lNQUxfUExBQ0VTXHJcbiAqICAgICAgZGl2aWRlZEJ5ICAgICAgICAgICAgICAgIGRpdiAgICB8ICAgICAgUk9VTkRJTkdfTU9ERVxyXG4gKiAgICAgIGRpdmlkZWRUb0ludGVnZXJCeSAgICAgICBpZGl2ICAgfCAgICAgIEVYUE9ORU5USUFMX0FUXHJcbiAqICAgICAgZXhwb25lbnRpYXRlZEJ5ICAgICAgICAgIHBvdyAgICB8ICAgICAgUkFOR0VcclxuICogICAgICBpbnRlZ2VyVmFsdWUgICAgICAgICAgICAgICAgICAgIHwgICAgICBDUllQVE9cclxuICogICAgICBpc0VxdWFsVG8gICAgICAgICAgICAgICAgZXEgICAgIHwgICAgICBNT0RVTE9fTU9ERVxyXG4gKiAgICAgIGlzRmluaXRlICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgIFBPV19QUkVDSVNJT05cclxuICogICAgICBpc0dyZWF0ZXJUaGFuICAgICAgICAgICAgZ3QgICAgIHwgICAgICBGT1JNQVRcclxuICogICAgICBpc0dyZWF0ZXJUaGFuT3JFcXVhbFRvICAgZ3RlICAgIHwgICAgICBBTFBIQUJFVFxyXG4gKiAgICAgIGlzSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgfCAgaXNCaWdOdW1iZXJcclxuICogICAgICBpc0xlc3NUaGFuICAgICAgICAgICAgICAgbHQgICAgIHwgIG1heGltdW0gICAgICAgICAgICAgIG1heFxyXG4gKiAgICAgIGlzTGVzc1RoYW5PckVxdWFsVG8gICAgICBsdGUgICAgfCAgbWluaW11bSAgICAgICAgICAgICAgbWluXHJcbiAqICAgICAgaXNOYU4gICAgICAgICAgICAgICAgICAgICAgICAgICB8ICByYW5kb21cclxuICogICAgICBpc05lZ2F0aXZlICAgICAgICAgICAgICAgICAgICAgIHwgIHN1bVxyXG4gKiAgICAgIGlzUG9zaXRpdmUgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIGlzWmVybyAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIG1pbnVzICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIG1vZHVsbyAgICAgICAgICAgICAgICAgICBtb2QgICAgfFxyXG4gKiAgICAgIG11bHRpcGxpZWRCeSAgICAgICAgICAgICB0aW1lcyAgfFxyXG4gKiAgICAgIG5lZ2F0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHBsdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHByZWNpc2lvbiAgICAgICAgICAgICAgICBzZCAgICAgfFxyXG4gKiAgICAgIHNoaWZ0ZWRCeSAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHNxdWFyZVJvb3QgICAgICAgICAgICAgICBzcXJ0ICAgfFxyXG4gKiAgICAgIHRvRXhwb25lbnRpYWwgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHRvRml4ZWQgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHRvRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHRvRnJhY3Rpb24gICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHRvSlNPTiAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHRvTnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHRvUHJlY2lzaW9uICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHRvU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHZhbHVlT2YgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKlxyXG4gKi9cclxuXHJcblxyXG4gIHZhciBCaWdOdW1iZXIsXHJcbiAgICBpc051bWVyaWMgPSAvXi0/KD86XFxkKyg/OlxcLlxcZCopP3xcXC5cXGQrKSg/OmVbKy1dP1xcZCspPyQvaSxcclxuICAgIG1hdGhjZWlsID0gTWF0aC5jZWlsLFxyXG4gICAgbWF0aGZsb29yID0gTWF0aC5mbG9vcixcclxuXHJcbiAgICBiaWdudW1iZXJFcnJvciA9ICdbQmlnTnVtYmVyIEVycm9yXSAnLFxyXG4gICAgdG9vTWFueURpZ2l0cyA9IGJpZ251bWJlckVycm9yICsgJ051bWJlciBwcmltaXRpdmUgaGFzIG1vcmUgdGhhbiAxNSBzaWduaWZpY2FudCBkaWdpdHM6ICcsXHJcblxyXG4gICAgQkFTRSA9IDFlMTQsXHJcbiAgICBMT0dfQkFTRSA9IDE0LFxyXG4gICAgTUFYX1NBRkVfSU5URUdFUiA9IDB4MWZmZmZmZmZmZmZmZmYsICAgICAgICAgLy8gMl41MyAtIDFcclxuICAgIC8vIE1BWF9JTlQzMiA9IDB4N2ZmZmZmZmYsICAgICAgICAgICAgICAgICAgIC8vIDJeMzEgLSAxXHJcbiAgICBQT1dTX1RFTiA9IFsxLCAxMCwgMTAwLCAxZTMsIDFlNCwgMWU1LCAxZTYsIDFlNywgMWU4LCAxZTksIDFlMTAsIDFlMTEsIDFlMTIsIDFlMTNdLFxyXG4gICAgU1FSVF9CQVNFID0gMWU3LFxyXG5cclxuICAgIC8vIEVESVRBQkxFXHJcbiAgICAvLyBUaGUgbGltaXQgb24gdGhlIHZhbHVlIG9mIERFQ0lNQUxfUExBQ0VTLCBUT19FWFBfTkVHLCBUT19FWFBfUE9TLCBNSU5fRVhQLCBNQVhfRVhQLCBhbmRcclxuICAgIC8vIHRoZSBhcmd1bWVudHMgdG8gdG9FeHBvbmVudGlhbCwgdG9GaXhlZCwgdG9Gb3JtYXQsIGFuZCB0b1ByZWNpc2lvbi5cclxuICAgIE1BWCA9IDFFOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAgdG8gTUFYX0lOVDMyXHJcblxyXG5cclxuICAvKlxyXG4gICAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgQmlnTnVtYmVyIGNvbnN0cnVjdG9yLlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNsb25lKGNvbmZpZ09iamVjdCkge1xyXG4gICAgdmFyIGRpdiwgY29udmVydEJhc2UsIHBhcnNlTnVtZXJpYyxcclxuICAgICAgUCA9IEJpZ051bWJlci5wcm90b3R5cGUgPSB7IGNvbnN0cnVjdG9yOiBCaWdOdW1iZXIsIHRvU3RyaW5nOiBudWxsLCB2YWx1ZU9mOiBudWxsIH0sXHJcbiAgICAgIE9ORSA9IG5ldyBCaWdOdW1iZXIoMSksXHJcblxyXG5cclxuICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFRElUQUJMRSBDT05GSUcgREVGQVVMVFMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHJcbiAgICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBiZWxvdyBtdXN0IGJlIGludGVnZXJzIHdpdGhpbiB0aGUgaW5jbHVzaXZlIHJhbmdlcyBzdGF0ZWQuXHJcbiAgICAgIC8vIFRoZSB2YWx1ZXMgY2FuIGFsc28gYmUgY2hhbmdlZCBhdCBydW4tdGltZSB1c2luZyBCaWdOdW1iZXIuc2V0LlxyXG5cclxuICAgICAgLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIGZvciBvcGVyYXRpb25zIGludm9sdmluZyBkaXZpc2lvbi5cclxuICAgICAgREVDSU1BTF9QTEFDRVMgPSAyMCwgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIE1BWFxyXG5cclxuICAgICAgLy8gVGhlIHJvdW5kaW5nIG1vZGUgdXNlZCB3aGVuIHJvdW5kaW5nIHRvIHRoZSBhYm92ZSBkZWNpbWFsIHBsYWNlcywgYW5kIHdoZW4gdXNpbmdcclxuICAgICAgLy8gdG9FeHBvbmVudGlhbCwgdG9GaXhlZCwgdG9Gb3JtYXQgYW5kIHRvUHJlY2lzaW9uLCBhbmQgcm91bmQgKGRlZmF1bHQgdmFsdWUpLlxyXG4gICAgICAvLyBVUCAgICAgICAgIDAgQXdheSBmcm9tIHplcm8uXHJcbiAgICAgIC8vIERPV04gICAgICAgMSBUb3dhcmRzIHplcm8uXHJcbiAgICAgIC8vIENFSUwgICAgICAgMiBUb3dhcmRzICtJbmZpbml0eS5cclxuICAgICAgLy8gRkxPT1IgICAgICAzIFRvd2FyZHMgLUluZmluaXR5LlxyXG4gICAgICAvLyBIQUxGX1VQICAgIDQgVG93YXJkcyBuZWFyZXN0IG5laWdoYm91ci4gSWYgZXF1aWRpc3RhbnQsIHVwLlxyXG4gICAgICAvLyBIQUxGX0RPV04gIDUgVG93YXJkcyBuZWFyZXN0IG5laWdoYm91ci4gSWYgZXF1aWRpc3RhbnQsIGRvd24uXHJcbiAgICAgIC8vIEhBTEZfRVZFTiAgNiBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyBldmVuIG5laWdoYm91ci5cclxuICAgICAgLy8gSEFMRl9DRUlMICA3IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCB0b3dhcmRzICtJbmZpbml0eS5cclxuICAgICAgLy8gSEFMRl9GTE9PUiA4IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCB0b3dhcmRzIC1JbmZpbml0eS5cclxuICAgICAgUk9VTkRJTkdfTU9ERSA9IDQsICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIDhcclxuXHJcbiAgICAgIC8vIEVYUE9ORU5USUFMX0FUIDogW1RPX0VYUF9ORUcgLCBUT19FWFBfUE9TXVxyXG5cclxuICAgICAgLy8gVGhlIGV4cG9uZW50IHZhbHVlIGF0IGFuZCBiZW5lYXRoIHdoaWNoIHRvU3RyaW5nIHJldHVybnMgZXhwb25lbnRpYWwgbm90YXRpb24uXHJcbiAgICAgIC8vIE51bWJlciB0eXBlOiAtN1xyXG4gICAgICBUT19FWFBfTkVHID0gLTcsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAgdG8gLU1BWFxyXG5cclxuICAgICAgLy8gVGhlIGV4cG9uZW50IHZhbHVlIGF0IGFuZCBhYm92ZSB3aGljaCB0b1N0cmluZyByZXR1cm5zIGV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICAvLyBOdW1iZXIgdHlwZTogMjFcclxuICAgICAgVE9fRVhQX1BPUyA9IDIxLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIE1BWFxyXG5cclxuICAgICAgLy8gUkFOR0UgOiBbTUlOX0VYUCwgTUFYX0VYUF1cclxuXHJcbiAgICAgIC8vIFRoZSBtaW5pbXVtIGV4cG9uZW50IHZhbHVlLCBiZW5lYXRoIHdoaWNoIHVuZGVyZmxvdyB0byB6ZXJvIG9jY3Vycy5cclxuICAgICAgLy8gTnVtYmVyIHR5cGU6IC0zMjQgICg1ZS0zMjQpXHJcbiAgICAgIE1JTl9FWFAgPSAtMWU3LCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLTEgdG8gLU1BWFxyXG5cclxuICAgICAgLy8gVGhlIG1heGltdW0gZXhwb25lbnQgdmFsdWUsIGFib3ZlIHdoaWNoIG92ZXJmbG93IHRvIEluZmluaXR5IG9jY3Vycy5cclxuICAgICAgLy8gTnVtYmVyIHR5cGU6ICAzMDggICgxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOClcclxuICAgICAgLy8gRm9yIE1BWF9FWFAgPiAxZTcsIGUuZy4gbmV3IEJpZ051bWJlcignMWUxMDAwMDAwMDAnKS5wbHVzKDEpIG1heSBiZSBzbG93LlxyXG4gICAgICBNQVhfRVhQID0gMWU3LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEgdG8gTUFYXHJcblxyXG4gICAgICAvLyBXaGV0aGVyIHRvIHVzZSBjcnlwdG9ncmFwaGljYWxseS1zZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uLCBpZiBhdmFpbGFibGUuXHJcbiAgICAgIENSWVBUTyA9IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJ1ZSBvciBmYWxzZVxyXG5cclxuICAgICAgLy8gVGhlIG1vZHVsbyBtb2RlIHVzZWQgd2hlbiBjYWxjdWxhdGluZyB0aGUgbW9kdWx1czogYSBtb2Qgbi5cclxuICAgICAgLy8gVGhlIHF1b3RpZW50IChxID0gYSAvIG4pIGlzIGNhbGN1bGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJvdW5kaW5nIG1vZGUuXHJcbiAgICAgIC8vIFRoZSByZW1haW5kZXIgKHIpIGlzIGNhbGN1bGF0ZWQgYXM6IHIgPSBhIC0gbiAqIHEuXHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIFVQICAgICAgICAwIFRoZSByZW1haW5kZXIgaXMgcG9zaXRpdmUgaWYgdGhlIGRpdmlkZW5kIGlzIG5lZ2F0aXZlLCBlbHNlIGlzIG5lZ2F0aXZlLlxyXG4gICAgICAvLyBET1dOICAgICAgMSBUaGUgcmVtYWluZGVyIGhhcyB0aGUgc2FtZSBzaWduIGFzIHRoZSBkaXZpZGVuZC5cclxuICAgICAgLy8gICAgICAgICAgICAgVGhpcyBtb2R1bG8gbW9kZSBpcyBjb21tb25seSBrbm93biBhcyAndHJ1bmNhdGVkIGRpdmlzaW9uJyBhbmQgaXNcclxuICAgICAgLy8gICAgICAgICAgICAgZXF1aXZhbGVudCB0byAoYSAlIG4pIGluIEphdmFTY3JpcHQuXHJcbiAgICAgIC8vIEZMT09SICAgICAzIFRoZSByZW1haW5kZXIgaGFzIHRoZSBzYW1lIHNpZ24gYXMgdGhlIGRpdmlzb3IgKFB5dGhvbiAlKS5cclxuICAgICAgLy8gSEFMRl9FVkVOIDYgVGhpcyBtb2R1bG8gbW9kZSBpbXBsZW1lbnRzIHRoZSBJRUVFIDc1NCByZW1haW5kZXIgZnVuY3Rpb24uXHJcbiAgICAgIC8vIEVVQ0xJRCAgICA5IEV1Y2xpZGlhbiBkaXZpc2lvbi4gcSA9IHNpZ24obikgKiBmbG9vcihhIC8gYWJzKG4pKS5cclxuICAgICAgLy8gICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBpcyBhbHdheXMgcG9zaXRpdmUuXHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIFRoZSB0cnVuY2F0ZWQgZGl2aXNpb24sIGZsb29yZWQgZGl2aXNpb24sIEV1Y2xpZGlhbiBkaXZpc2lvbiBhbmQgSUVFRSA3NTQgcmVtYWluZGVyXHJcbiAgICAgIC8vIG1vZGVzIGFyZSBjb21tb25seSB1c2VkIGZvciB0aGUgbW9kdWx1cyBvcGVyYXRpb24uXHJcbiAgICAgIC8vIEFsdGhvdWdoIHRoZSBvdGhlciByb3VuZGluZyBtb2RlcyBjYW4gYWxzbyBiZSB1c2VkLCB0aGV5IG1heSBub3QgZ2l2ZSB1c2VmdWwgcmVzdWx0cy5cclxuICAgICAgTU9EVUxPX01PREUgPSAxLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIDlcclxuXHJcbiAgICAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMgb2YgdGhlIHJlc3VsdCBvZiB0aGUgZXhwb25lbnRpYXRlZEJ5IG9wZXJhdGlvbi5cclxuICAgICAgLy8gSWYgUE9XX1BSRUNJU0lPTiBpcyAwLCB0aGVyZSB3aWxsIGJlIHVubGltaXRlZCBzaWduaWZpY2FudCBkaWdpdHMuXHJcbiAgICAgIFBPV19QUkVDSVNJT04gPSAwLCAgICAgICAgICAgICAgICAgICAgLy8gMCB0byBNQVhcclxuXHJcbiAgICAgIC8vIFRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiB1c2VkIGJ5IHRoZSBCaWdOdW1iZXIucHJvdG90eXBlLnRvRm9ybWF0IG1ldGhvZC5cclxuICAgICAgRk9STUFUID0ge1xyXG4gICAgICAgIHByZWZpeDogJycsXHJcbiAgICAgICAgZ3JvdXBTaXplOiAzLFxyXG4gICAgICAgIHNlY29uZGFyeUdyb3VwU2l6ZTogMCxcclxuICAgICAgICBncm91cFNlcGFyYXRvcjogJywnLFxyXG4gICAgICAgIGRlY2ltYWxTZXBhcmF0b3I6ICcuJyxcclxuICAgICAgICBmcmFjdGlvbkdyb3VwU2l6ZTogMCxcclxuICAgICAgICBmcmFjdGlvbkdyb3VwU2VwYXJhdG9yOiAnXFx4QTAnLCAgICAgIC8vIG5vbi1icmVha2luZyBzcGFjZVxyXG4gICAgICAgIHN1ZmZpeDogJydcclxuICAgICAgfSxcclxuXHJcbiAgICAgIC8vIFRoZSBhbHBoYWJldCB1c2VkIGZvciBiYXNlIGNvbnZlcnNpb24uIEl0IG11c3QgYmUgYXQgbGVhc3QgMiBjaGFyYWN0ZXJzIGxvbmcsIHdpdGggbm8gJysnLFxyXG4gICAgICAvLyAnLScsICcuJywgd2hpdGVzcGFjZSwgb3IgcmVwZWF0ZWQgY2hhcmFjdGVyLlxyXG4gICAgICAvLyAnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVokXydcclxuICAgICAgQUxQSEFCRVQgPSAnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JztcclxuXHJcblxyXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblxyXG4gICAgLy8gQ09OU1RSVUNUT1JcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFRoZSBCaWdOdW1iZXIgY29uc3RydWN0b3IgYW5kIGV4cG9ydGVkIGZ1bmN0aW9uLlxyXG4gICAgICogQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgYSBCaWdOdW1iZXIgb2JqZWN0LlxyXG4gICAgICpcclxuICAgICAqIHYge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfSBBIG51bWVyaWMgdmFsdWUuXHJcbiAgICAgKiBbYl0ge251bWJlcn0gVGhlIGJhc2Ugb2Ygdi4gSW50ZWdlciwgMiB0byBBTFBIQUJFVC5sZW5ndGggaW5jbHVzaXZlLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBCaWdOdW1iZXIodiwgYikge1xyXG4gICAgICB2YXIgYWxwaGFiZXQsIGMsIGNhc2VDaGFuZ2VkLCBlLCBpLCBpc051bSwgbGVuLCBzdHIsXHJcbiAgICAgICAgeCA9IHRoaXM7XHJcblxyXG4gICAgICAvLyBFbmFibGUgY29uc3RydWN0b3IgY2FsbCB3aXRob3V0IGBuZXdgLlxyXG4gICAgICBpZiAoISh4IGluc3RhbmNlb2YgQmlnTnVtYmVyKSkgcmV0dXJuIG5ldyBCaWdOdW1iZXIodiwgYik7XHJcblxyXG4gICAgICBpZiAoYiA9PSBudWxsKSB7XHJcblxyXG4gICAgICAgIGlmICh2ICYmIHYuX2lzQmlnTnVtYmVyID09PSB0cnVlKSB7XHJcbiAgICAgICAgICB4LnMgPSB2LnM7XHJcblxyXG4gICAgICAgICAgaWYgKCF2LmMgfHwgdi5lID4gTUFYX0VYUCkge1xyXG4gICAgICAgICAgICB4LmMgPSB4LmUgPSBudWxsO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh2LmUgPCBNSU5fRVhQKSB7XHJcbiAgICAgICAgICAgIHguYyA9IFt4LmUgPSAwXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHguZSA9IHYuZTtcclxuICAgICAgICAgICAgeC5jID0gdi5jLnNsaWNlKCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKChpc051bSA9IHR5cGVvZiB2ID09ICdudW1iZXInKSAmJiB2ICogMCA9PSAwKSB7XHJcblxyXG4gICAgICAgICAgLy8gVXNlIGAxIC8gbmAgdG8gaGFuZGxlIG1pbnVzIHplcm8gYWxzby5cclxuICAgICAgICAgIHgucyA9IDEgLyB2IDwgMCA/ICh2ID0gLXYsIC0xKSA6IDE7XHJcblxyXG4gICAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBpbnRlZ2Vycywgd2hlcmUgbiA8IDIxNDc0ODM2NDggKDIqKjMxKS5cclxuICAgICAgICAgIGlmICh2ID09PSB+fnYpIHtcclxuICAgICAgICAgICAgZm9yIChlID0gMCwgaSA9IHY7IGkgPj0gMTA7IGkgLz0gMTAsIGUrKyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoZSA+IE1BWF9FWFApIHtcclxuICAgICAgICAgICAgICB4LmMgPSB4LmUgPSBudWxsO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHguZSA9IGU7XHJcbiAgICAgICAgICAgICAgeC5jID0gW3ZdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgc3RyID0gU3RyaW5nKHYpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgaWYgKCFpc051bWVyaWMudGVzdChzdHIgPSBTdHJpbmcodikpKSByZXR1cm4gcGFyc2VOdW1lcmljKHgsIHN0ciwgaXNOdW0pO1xyXG5cclxuICAgICAgICAgIHgucyA9IHN0ci5jaGFyQ29kZUF0KDApID09IDQ1ID8gKHN0ciA9IHN0ci5zbGljZSgxKSwgLTEpIDogMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIERlY2ltYWwgcG9pbnQ/XHJcbiAgICAgICAgaWYgKChlID0gc3RyLmluZGV4T2YoJy4nKSkgPiAtMSkgc3RyID0gc3RyLnJlcGxhY2UoJy4nLCAnJyk7XHJcblxyXG4gICAgICAgIC8vIEV4cG9uZW50aWFsIGZvcm0/XHJcbiAgICAgICAgaWYgKChpID0gc3RyLnNlYXJjaCgvZS9pKSkgPiAwKSB7XHJcblxyXG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIGV4cG9uZW50LlxyXG4gICAgICAgICAgaWYgKGUgPCAwKSBlID0gaTtcclxuICAgICAgICAgIGUgKz0gK3N0ci5zbGljZShpICsgMSk7XHJcbiAgICAgICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIGkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZSA8IDApIHtcclxuXHJcbiAgICAgICAgICAvLyBJbnRlZ2VyLlxyXG4gICAgICAgICAgZSA9IHN0ci5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIEJhc2Uge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2J9J1xyXG4gICAgICAgIGludENoZWNrKGIsIDIsIEFMUEhBQkVULmxlbmd0aCwgJ0Jhc2UnKTtcclxuXHJcbiAgICAgICAgLy8gQWxsb3cgZXhwb25lbnRpYWwgbm90YXRpb24gdG8gYmUgdXNlZCB3aXRoIGJhc2UgMTAgYXJndW1lbnQsIHdoaWxlXHJcbiAgICAgICAgLy8gYWxzbyByb3VuZGluZyB0byBERUNJTUFMX1BMQUNFUyBhcyB3aXRoIG90aGVyIGJhc2VzLlxyXG4gICAgICAgIGlmIChiID09IDEwKSB7XHJcbiAgICAgICAgICB4ID0gbmV3IEJpZ051bWJlcih2KTtcclxuICAgICAgICAgIHJldHVybiByb3VuZCh4LCBERUNJTUFMX1BMQUNFUyArIHguZSArIDEsIFJPVU5ESU5HX01PREUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RyID0gU3RyaW5nKHYpO1xyXG5cclxuICAgICAgICBpZiAoaXNOdW0gPSB0eXBlb2YgdiA9PSAnbnVtYmVyJykge1xyXG5cclxuICAgICAgICAgIC8vIEF2b2lkIHBvdGVudGlhbCBpbnRlcnByZXRhdGlvbiBvZiBJbmZpbml0eSBhbmQgTmFOIGFzIGJhc2UgNDQrIHZhbHVlcy5cclxuICAgICAgICAgIGlmICh2ICogMCAhPSAwKSByZXR1cm4gcGFyc2VOdW1lcmljKHgsIHN0ciwgaXNOdW0sIGIpO1xyXG5cclxuICAgICAgICAgIHgucyA9IDEgLyB2IDwgMCA/IChzdHIgPSBzdHIuc2xpY2UoMSksIC0xKSA6IDE7XHJcblxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE51bWJlciBwcmltaXRpdmUgaGFzIG1vcmUgdGhhbiAxNSBzaWduaWZpY2FudCBkaWdpdHM6IHtufSdcclxuICAgICAgICAgIGlmIChCaWdOdW1iZXIuREVCVUcgJiYgc3RyLnJlcGxhY2UoL14wXFwuMCp8XFwuLywgJycpLmxlbmd0aCA+IDE1KSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAodG9vTWFueURpZ2l0cyArIHYpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB4LnMgPSBzdHIuY2hhckNvZGVBdCgwKSA9PT0gNDUgPyAoc3RyID0gc3RyLnNsaWNlKDEpLCAtMSkgOiAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYWxwaGFiZXQgPSBBTFBIQUJFVC5zbGljZSgwLCBiKTtcclxuICAgICAgICBlID0gaSA9IDA7XHJcblxyXG4gICAgICAgIC8vIENoZWNrIHRoYXQgc3RyIGlzIGEgdmFsaWQgYmFzZSBiIG51bWJlci5cclxuICAgICAgICAvLyBEb24ndCB1c2UgUmVnRXhwLCBzbyBhbHBoYWJldCBjYW4gY29udGFpbiBzcGVjaWFsIGNoYXJhY3RlcnMuXHJcbiAgICAgICAgZm9yIChsZW4gPSBzdHIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgIGlmIChhbHBoYWJldC5pbmRleE9mKGMgPSBzdHIuY2hhckF0KGkpKSA8IDApIHtcclxuICAgICAgICAgICAgaWYgKGMgPT0gJy4nKSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIElmICcuJyBpcyBub3QgdGhlIGZpcnN0IGNoYXJhY3RlciBhbmQgaXQgaGFzIG5vdCBiZSBmb3VuZCBiZWZvcmUuXHJcbiAgICAgICAgICAgICAgaWYgKGkgPiBlKSB7XHJcbiAgICAgICAgICAgICAgICBlID0gbGVuO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFjYXNlQ2hhbmdlZCkge1xyXG5cclxuICAgICAgICAgICAgICAvLyBBbGxvdyBlLmcuIGhleGFkZWNpbWFsICdGRicgYXMgd2VsbCBhcyAnZmYnLlxyXG4gICAgICAgICAgICAgIGlmIChzdHIgPT0gc3RyLnRvVXBwZXJDYXNlKCkgJiYgKHN0ciA9IHN0ci50b0xvd2VyQ2FzZSgpKSB8fFxyXG4gICAgICAgICAgICAgICAgICBzdHIgPT0gc3RyLnRvTG93ZXJDYXNlKCkgJiYgKHN0ciA9IHN0ci50b1VwcGVyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZUNoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaSA9IC0xO1xyXG4gICAgICAgICAgICAgICAgZSA9IDA7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWMoeCwgU3RyaW5nKHYpLCBpc051bSwgYik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBQcmV2ZW50IGxhdGVyIGNoZWNrIGZvciBsZW5ndGggb24gY29udmVydGVkIG51bWJlci5cclxuICAgICAgICBpc051bSA9IGZhbHNlO1xyXG4gICAgICAgIHN0ciA9IGNvbnZlcnRCYXNlKHN0ciwgYiwgMTAsIHgucyk7XHJcblxyXG4gICAgICAgIC8vIERlY2ltYWwgcG9pbnQ/XHJcbiAgICAgICAgaWYgKChlID0gc3RyLmluZGV4T2YoJy4nKSkgPiAtMSkgc3RyID0gc3RyLnJlcGxhY2UoJy4nLCAnJyk7XHJcbiAgICAgICAgZWxzZSBlID0gc3RyLmxlbmd0aDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gRGV0ZXJtaW5lIGxlYWRpbmcgemVyb3MuXHJcbiAgICAgIGZvciAoaSA9IDA7IHN0ci5jaGFyQ29kZUF0KGkpID09PSA0ODsgaSsrKTtcclxuXHJcbiAgICAgIC8vIERldGVybWluZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgZm9yIChsZW4gPSBzdHIubGVuZ3RoOyBzdHIuY2hhckNvZGVBdCgtLWxlbikgPT09IDQ4Oyk7XHJcblxyXG4gICAgICBpZiAoc3RyID0gc3RyLnNsaWNlKGksICsrbGVuKSkge1xyXG4gICAgICAgIGxlbiAtPSBpO1xyXG5cclxuICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gTnVtYmVyIHByaW1pdGl2ZSBoYXMgbW9yZSB0aGFuIDE1IHNpZ25pZmljYW50IGRpZ2l0czoge259J1xyXG4gICAgICAgIGlmIChpc051bSAmJiBCaWdOdW1iZXIuREVCVUcgJiZcclxuICAgICAgICAgIGxlbiA+IDE1ICYmICh2ID4gTUFYX1NBRkVfSU5URUdFUiB8fCB2ICE9PSBtYXRoZmxvb3IodikpKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAodG9vTWFueURpZ2l0cyArICh4LnMgKiB2KSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAgLy8gT3ZlcmZsb3c/XHJcbiAgICAgICAgaWYgKChlID0gZSAtIGkgLSAxKSA+IE1BWF9FWFApIHtcclxuXHJcbiAgICAgICAgICAvLyBJbmZpbml0eS5cclxuICAgICAgICAgIHguYyA9IHguZSA9IG51bGw7XHJcblxyXG4gICAgICAgIC8vIFVuZGVyZmxvdz9cclxuICAgICAgICB9IGVsc2UgaWYgKGUgPCBNSU5fRVhQKSB7XHJcblxyXG4gICAgICAgICAgLy8gWmVyby5cclxuICAgICAgICAgIHguYyA9IFt4LmUgPSAwXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgeC5lID0gZTtcclxuICAgICAgICAgIHguYyA9IFtdO1xyXG5cclxuICAgICAgICAgIC8vIFRyYW5zZm9ybSBiYXNlXHJcblxyXG4gICAgICAgICAgLy8gZSBpcyB0aGUgYmFzZSAxMCBleHBvbmVudC5cclxuICAgICAgICAgIC8vIGkgaXMgd2hlcmUgdG8gc2xpY2Ugc3RyIHRvIGdldCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgY29lZmZpY2llbnQgYXJyYXkuXHJcbiAgICAgICAgICBpID0gKGUgKyAxKSAlIExPR19CQVNFO1xyXG4gICAgICAgICAgaWYgKGUgPCAwKSBpICs9IExPR19CQVNFOyAgLy8gaSA8IDFcclxuXHJcbiAgICAgICAgICBpZiAoaSA8IGxlbikge1xyXG4gICAgICAgICAgICBpZiAoaSkgeC5jLnB1c2goK3N0ci5zbGljZSgwLCBpKSk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxlbiAtPSBMT0dfQkFTRTsgaSA8IGxlbjspIHtcclxuICAgICAgICAgICAgICB4LmMucHVzaCgrc3RyLnNsaWNlKGksIGkgKz0gTE9HX0JBU0UpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaSA9IExPR19CQVNFIC0gKHN0ciA9IHN0ci5zbGljZShpKSkubGVuZ3RoO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaSAtPSBsZW47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgZm9yICg7IGktLTsgc3RyICs9ICcwJyk7XHJcbiAgICAgICAgICB4LmMucHVzaCgrc3RyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgeC5jID0gW3guZSA9IDBdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIENPTlNUUlVDVE9SIFBST1BFUlRJRVNcclxuXHJcblxyXG4gICAgQmlnTnVtYmVyLmNsb25lID0gY2xvbmU7XHJcblxyXG4gICAgQmlnTnVtYmVyLlJPVU5EX1VQID0gMDtcclxuICAgIEJpZ051bWJlci5ST1VORF9ET1dOID0gMTtcclxuICAgIEJpZ051bWJlci5ST1VORF9DRUlMID0gMjtcclxuICAgIEJpZ051bWJlci5ST1VORF9GTE9PUiA9IDM7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfSEFMRl9VUCA9IDQ7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfSEFMRl9ET1dOID0gNTtcclxuICAgIEJpZ051bWJlci5ST1VORF9IQUxGX0VWRU4gPSA2O1xyXG4gICAgQmlnTnVtYmVyLlJPVU5EX0hBTEZfQ0VJTCA9IDc7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfSEFMRl9GTE9PUiA9IDg7XHJcbiAgICBCaWdOdW1iZXIuRVVDTElEID0gOTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIENvbmZpZ3VyZSBpbmZyZXF1ZW50bHktY2hhbmdpbmcgbGlicmFyeS13aWRlIHNldHRpbmdzLlxyXG4gICAgICpcclxuICAgICAqIEFjY2VwdCBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIG9wdGlvbmFsIHByb3BlcnRpZXMgKGlmIHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5IGlzXHJcbiAgICAgKiBhIG51bWJlciwgaXQgbXVzdCBiZSBhbiBpbnRlZ2VyIHdpdGhpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIHN0YXRlZCk6XHJcbiAgICAgKlxyXG4gICAgICogICBERUNJTUFMX1BMQUNFUyAgIHtudW1iZXJ9ICAgICAgICAgICAwIHRvIE1BWFxyXG4gICAgICogICBST1VORElOR19NT0RFICAgIHtudW1iZXJ9ICAgICAgICAgICAwIHRvIDhcclxuICAgICAqICAgRVhQT05FTlRJQUxfQVQgICB7bnVtYmVyfG51bWJlcltdfSAgLU1BWCB0byBNQVggIG9yICBbLU1BWCB0byAwLCAwIHRvIE1BWF1cclxuICAgICAqICAgUkFOR0UgICAgICAgICAgICB7bnVtYmVyfG51bWJlcltdfSAgLU1BWCB0byBNQVggKG5vdCB6ZXJvKSAgb3IgIFstTUFYIHRvIC0xLCAxIHRvIE1BWF1cclxuICAgICAqICAgQ1JZUFRPICAgICAgICAgICB7Ym9vbGVhbn0gICAgICAgICAgdHJ1ZSBvciBmYWxzZVxyXG4gICAgICogICBNT0RVTE9fTU9ERSAgICAgIHtudW1iZXJ9ICAgICAgICAgICAwIHRvIDlcclxuICAgICAqICAgUE9XX1BSRUNJU0lPTiAgICAgICB7bnVtYmVyfSAgICAgICAgICAgMCB0byBNQVhcclxuICAgICAqICAgQUxQSEFCRVQgICAgICAgICB7c3RyaW5nfSAgICAgICAgICAgQSBzdHJpbmcgb2YgdHdvIG9yIG1vcmUgdW5pcXVlIGNoYXJhY3RlcnMgd2hpY2ggZG9lc1xyXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgY29udGFpbiAnLicuXHJcbiAgICAgKiAgIEZPUk1BVCAgICAgICAgICAge29iamVjdH0gICAgICAgICAgIEFuIG9iamVjdCB3aXRoIHNvbWUgb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxyXG4gICAgICogICAgIHByZWZpeCAgICAgICAgICAgICAgICAge3N0cmluZ31cclxuICAgICAqICAgICBncm91cFNpemUgICAgICAgICAgICAgIHtudW1iZXJ9XHJcbiAgICAgKiAgICAgc2Vjb25kYXJ5R3JvdXBTaXplICAgICB7bnVtYmVyfVxyXG4gICAgICogICAgIGdyb3VwU2VwYXJhdG9yICAgICAgICAge3N0cmluZ31cclxuICAgICAqICAgICBkZWNpbWFsU2VwYXJhdG9yICAgICAgIHtzdHJpbmd9XHJcbiAgICAgKiAgICAgZnJhY3Rpb25Hcm91cFNpemUgICAgICB7bnVtYmVyfVxyXG4gICAgICogICAgIGZyYWN0aW9uR3JvdXBTZXBhcmF0b3Ige3N0cmluZ31cclxuICAgICAqICAgICBzdWZmaXggICAgICAgICAgICAgICAgIHtzdHJpbmd9XHJcbiAgICAgKlxyXG4gICAgICogKFRoZSB2YWx1ZXMgYXNzaWduZWQgdG8gdGhlIGFib3ZlIEZPUk1BVCBvYmplY3QgcHJvcGVydGllcyBhcmUgbm90IGNoZWNrZWQgZm9yIHZhbGlkaXR5LilcclxuICAgICAqXHJcbiAgICAgKiBFLmcuXHJcbiAgICAgKiBCaWdOdW1iZXIuY29uZmlnKHsgREVDSU1BTF9QTEFDRVMgOiAyMCwgUk9VTkRJTkdfTU9ERSA6IDQgfSlcclxuICAgICAqXHJcbiAgICAgKiBJZ25vcmUgcHJvcGVydGllcy9wYXJhbWV0ZXJzIHNldCB0byBudWxsIG9yIHVuZGVmaW5lZCwgZXhjZXB0IGZvciBBTFBIQUJFVC5cclxuICAgICAqXHJcbiAgICAgKiBSZXR1cm4gYW4gb2JqZWN0IHdpdGggdGhlIHByb3BlcnRpZXMgY3VycmVudCB2YWx1ZXMuXHJcbiAgICAgKi9cclxuICAgIEJpZ051bWJlci5jb25maWcgPSBCaWdOdW1iZXIuc2V0ID0gZnVuY3Rpb24gKG9iaikge1xyXG4gICAgICB2YXIgcCwgdjtcclxuXHJcbiAgICAgIGlmIChvYmogIT0gbnVsbCkge1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIG9iaiA9PSAnb2JqZWN0Jykge1xyXG5cclxuICAgICAgICAgIC8vIERFQ0lNQUxfUExBQ0VTIHtudW1iZXJ9IEludGVnZXIsIDAgdG8gTUFYIGluY2x1c2l2ZS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBERUNJTUFMX1BMQUNFUyB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnREVDSU1BTF9QTEFDRVMnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG4gICAgICAgICAgICBpbnRDaGVjayh2LCAwLCBNQVgsIHApO1xyXG4gICAgICAgICAgICBERUNJTUFMX1BMQUNFUyA9IHY7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gUk9VTkRJTkdfTU9ERSB7bnVtYmVyfSBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIFJPVU5ESU5HX01PREUge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3Z9J1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ1JPVU5ESU5HX01PREUnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG4gICAgICAgICAgICBpbnRDaGVjayh2LCAwLCA4LCBwKTtcclxuICAgICAgICAgICAgUk9VTkRJTkdfTU9ERSA9IHY7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gRVhQT05FTlRJQUxfQVQge251bWJlcnxudW1iZXJbXX1cclxuICAgICAgICAgIC8vIEludGVnZXIsIC1NQVggdG8gTUFYIGluY2x1c2l2ZSBvclxyXG4gICAgICAgICAgLy8gW2ludGVnZXIgLU1BWCB0byAwIGluY2x1c2l2ZSwgMCB0byBNQVggaW5jbHVzaXZlXS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBFWFBPTkVOVElBTF9BVCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnRVhQT05FTlRJQUxfQVQnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG4gICAgICAgICAgICBpZiAodiAmJiB2LnBvcCkge1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHZbMF0sIC1NQVgsIDAsIHApO1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHZbMV0sIDAsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgICAgVE9fRVhQX05FRyA9IHZbMF07XHJcbiAgICAgICAgICAgICAgVE9fRVhQX1BPUyA9IHZbMV07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaW50Q2hlY2sodiwgLU1BWCwgTUFYLCBwKTtcclxuICAgICAgICAgICAgICBUT19FWFBfTkVHID0gLShUT19FWFBfUE9TID0gdiA8IDAgPyAtdiA6IHYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gUkFOR0Uge251bWJlcnxudW1iZXJbXX0gTm9uLXplcm8gaW50ZWdlciwgLU1BWCB0byBNQVggaW5jbHVzaXZlIG9yXHJcbiAgICAgICAgICAvLyBbaW50ZWdlciAtTUFYIHRvIC0xIGluY2x1c2l2ZSwgaW50ZWdlciAxIHRvIE1BWCBpbmNsdXNpdmVdLlxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIFJBTkdFIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZXxjYW5ub3QgYmUgemVyb306IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdSQU5HRScpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcbiAgICAgICAgICAgIGlmICh2ICYmIHYucG9wKSB7XHJcbiAgICAgICAgICAgICAgaW50Q2hlY2sodlswXSwgLU1BWCwgLTEsIHApO1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHZbMV0sIDEsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgICAgTUlOX0VYUCA9IHZbMF07XHJcbiAgICAgICAgICAgICAgTUFYX0VYUCA9IHZbMV07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaW50Q2hlY2sodiwgLU1BWCwgTUFYLCBwKTtcclxuICAgICAgICAgICAgICBpZiAodikge1xyXG4gICAgICAgICAgICAgICAgTUlOX0VYUCA9IC0oTUFYX0VYUCA9IHYgPCAwID8gLXYgOiB2KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyBwICsgJyBjYW5ub3QgYmUgemVybzogJyArIHYpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIENSWVBUTyB7Ym9vbGVhbn0gdHJ1ZSBvciBmYWxzZS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBDUllQVE8gbm90IHRydWUgb3IgZmFsc2U6IHt2fSdcclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBjcnlwdG8gdW5hdmFpbGFibGUnXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnQ1JZUFRPJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaWYgKHYgPT09ICEhdikge1xyXG4gICAgICAgICAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNyeXB0byAhPSAndW5kZWZpbmVkJyAmJiBjcnlwdG8gJiZcclxuICAgICAgICAgICAgICAgICAoY3J5cHRvLmdldFJhbmRvbVZhbHVlcyB8fCBjcnlwdG8ucmFuZG9tQnl0ZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgIENSWVBUTyA9IHY7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBDUllQVE8gPSAhdjtcclxuICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgICAgICAgIChiaWdudW1iZXJFcnJvciArICdjcnlwdG8gdW5hdmFpbGFibGUnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgQ1JZUFRPID0gdjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgcCArICcgbm90IHRydWUgb3IgZmFsc2U6ICcgKyB2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIE1PRFVMT19NT0RFIHtudW1iZXJ9IEludGVnZXIsIDAgdG8gOSBpbmNsdXNpdmUuXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gTU9EVUxPX01PREUge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3Z9J1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ01PRFVMT19NT0RFJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaW50Q2hlY2sodiwgMCwgOSwgcCk7XHJcbiAgICAgICAgICAgIE1PRFVMT19NT0RFID0gdjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBQT1dfUFJFQ0lTSU9OIHtudW1iZXJ9IEludGVnZXIsIDAgdG8gTUFYIGluY2x1c2l2ZS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBQT1dfUFJFQ0lTSU9OIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdQT1dfUFJFQ0lTSU9OJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaW50Q2hlY2sodiwgMCwgTUFYLCBwKTtcclxuICAgICAgICAgICAgUE9XX1BSRUNJU0lPTiA9IHY7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gRk9STUFUIHtvYmplY3R9XHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gRk9STUFUIG5vdCBhbiBvYmplY3Q6IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdGT1JNQVQnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgPT0gJ29iamVjdCcpIEZPUk1BVCA9IHY7XHJcbiAgICAgICAgICAgIGVsc2UgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgIChiaWdudW1iZXJFcnJvciArIHAgKyAnIG5vdCBhbiBvYmplY3Q6ICcgKyB2KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBBTFBIQUJFVCB7c3RyaW5nfVxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIEFMUEhBQkVUIGludmFsaWQ6IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdBTFBIQUJFVCcpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcblxyXG4gICAgICAgICAgICAvLyBEaXNhbGxvdyBpZiBsZXNzIHRoYW4gdHdvIGNoYXJhY3RlcnMsXHJcbiAgICAgICAgICAgIC8vIG9yIGlmIGl0IGNvbnRhaW5zICcrJywgJy0nLCAnLicsIHdoaXRlc3BhY2UsIG9yIGEgcmVwZWF0ZWQgY2hhcmFjdGVyLlxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgPT0gJ3N0cmluZycgJiYgIS9eLj8kfFsrXFwtLlxcc118KC4pLipcXDEvLnRlc3QodikpIHtcclxuICAgICAgICAgICAgICBBTFBIQUJFVCA9IHY7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgcCArICcgaW52YWxpZDogJyArIHYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE9iamVjdCBleHBlY3RlZDoge3Z9J1xyXG4gICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnT2JqZWN0IGV4cGVjdGVkOiAnICsgb2JqKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgREVDSU1BTF9QTEFDRVM6IERFQ0lNQUxfUExBQ0VTLFxyXG4gICAgICAgIFJPVU5ESU5HX01PREU6IFJPVU5ESU5HX01PREUsXHJcbiAgICAgICAgRVhQT05FTlRJQUxfQVQ6IFtUT19FWFBfTkVHLCBUT19FWFBfUE9TXSxcclxuICAgICAgICBSQU5HRTogW01JTl9FWFAsIE1BWF9FWFBdLFxyXG4gICAgICAgIENSWVBUTzogQ1JZUFRPLFxyXG4gICAgICAgIE1PRFVMT19NT0RFOiBNT0RVTE9fTU9ERSxcclxuICAgICAgICBQT1dfUFJFQ0lTSU9OOiBQT1dfUFJFQ0lTSU9OLFxyXG4gICAgICAgIEZPUk1BVDogRk9STUFULFxyXG4gICAgICAgIEFMUEhBQkVUOiBBTFBIQUJFVFxyXG4gICAgICB9O1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHYgaXMgYSBCaWdOdW1iZXIgaW5zdGFuY2UsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKlxyXG4gICAgICogSWYgQmlnTnVtYmVyLkRFQlVHIGlzIHRydWUsIHRocm93IGlmIGEgQmlnTnVtYmVyIGluc3RhbmNlIGlzIG5vdCB3ZWxsLWZvcm1lZC5cclxuICAgICAqXHJcbiAgICAgKiB2IHthbnl9XHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEludmFsaWQgQmlnTnVtYmVyOiB7dn0nXHJcbiAgICAgKi9cclxuICAgIEJpZ051bWJlci5pc0JpZ051bWJlciA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgIGlmICghdiB8fCB2Ll9pc0JpZ051bWJlciAhPT0gdHJ1ZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBpZiAoIUJpZ051bWJlci5ERUJVRykgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICB2YXIgaSwgbixcclxuICAgICAgICBjID0gdi5jLFxyXG4gICAgICAgIGUgPSB2LmUsXHJcbiAgICAgICAgcyA9IHYucztcclxuXHJcbiAgICAgIG91dDogaWYgKHt9LnRvU3RyaW5nLmNhbGwoYykgPT0gJ1tvYmplY3QgQXJyYXldJykge1xyXG5cclxuICAgICAgICBpZiAoKHMgPT09IDEgfHwgcyA9PT0gLTEpICYmIGUgPj0gLU1BWCAmJiBlIDw9IE1BWCAmJiBlID09PSBtYXRoZmxvb3IoZSkpIHtcclxuXHJcbiAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgZWxlbWVudCBpcyB6ZXJvLCB0aGUgQmlnTnVtYmVyIHZhbHVlIG11c3QgYmUgemVyby5cclxuICAgICAgICAgIGlmIChjWzBdID09PSAwKSB7XHJcbiAgICAgICAgICAgIGlmIChlID09PSAwICYmIGMubGVuZ3RoID09PSAxKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgYnJlYWsgb3V0O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIENhbGN1bGF0ZSBudW1iZXIgb2YgZGlnaXRzIHRoYXQgY1swXSBzaG91bGQgaGF2ZSwgYmFzZWQgb24gdGhlIGV4cG9uZW50LlxyXG4gICAgICAgICAgaSA9IChlICsgMSkgJSBMT0dfQkFTRTtcclxuICAgICAgICAgIGlmIChpIDwgMSkgaSArPSBMT0dfQkFTRTtcclxuXHJcbiAgICAgICAgICAvLyBDYWxjdWxhdGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBjWzBdLlxyXG4gICAgICAgICAgLy9pZiAoTWF0aC5jZWlsKE1hdGgubG9nKGNbMF0gKyAxKSAvIE1hdGguTE4xMCkgPT0gaSkge1xyXG4gICAgICAgICAgaWYgKFN0cmluZyhjWzBdKS5sZW5ndGggPT0gaSkge1xyXG5cclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBuID0gY1tpXTtcclxuICAgICAgICAgICAgICBpZiAobiA8IDAgfHwgbiA+PSBCQVNFIHx8IG4gIT09IG1hdGhmbG9vcihuKSkgYnJlYWsgb3V0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBMYXN0IGVsZW1lbnQgY2Fubm90IGJlIHplcm8sIHVubGVzcyBpdCBpcyB0aGUgb25seSBlbGVtZW50LlxyXG4gICAgICAgICAgICBpZiAobiAhPT0gMCkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgLy8gSW5maW5pdHkvTmFOXHJcbiAgICAgIH0gZWxzZSBpZiAoYyA9PT0gbnVsbCAmJiBlID09PSBudWxsICYmIChzID09PSBudWxsIHx8IHMgPT09IDEgfHwgcyA9PT0gLTEpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ0ludmFsaWQgQmlnTnVtYmVyOiAnICsgdik7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgbWF4aW11bSBvZiB0aGUgYXJndW1lbnRzLlxyXG4gICAgICpcclxuICAgICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xCaWdOdW1iZXJ9XHJcbiAgICAgKi9cclxuICAgIEJpZ051bWJlci5tYXhpbXVtID0gQmlnTnVtYmVyLm1heCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIG1heE9yTWluKGFyZ3VtZW50cywgUC5sdCk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgbWluaW11bSBvZiB0aGUgYXJndW1lbnRzLlxyXG4gICAgICpcclxuICAgICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xCaWdOdW1iZXJ9XHJcbiAgICAgKi9cclxuICAgIEJpZ051bWJlci5taW5pbXVtID0gQmlnTnVtYmVyLm1pbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIG1heE9yTWluKGFyZ3VtZW50cywgUC5ndCk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aXRoIGEgcmFuZG9tIHZhbHVlIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiAwIGFuZCBsZXNzIHRoYW4gMSxcclxuICAgICAqIGFuZCB3aXRoIGRwLCBvciBERUNJTUFMX1BMQUNFUyBpZiBkcCBpcyBvbWl0dGVkLCBkZWNpbWFsIHBsYWNlcyAob3IgbGVzcyBpZiB0cmFpbGluZ1xyXG4gICAgICogemVyb3MgYXJlIHByb2R1Y2VkKS5cclxuICAgICAqXHJcbiAgICAgKiBbZHBdIHtudW1iZXJ9IERlY2ltYWwgcGxhY2VzLiBJbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEFyZ3VtZW50IHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtkcH0nXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gY3J5cHRvIHVuYXZhaWxhYmxlJ1xyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIucmFuZG9tID0gKGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIHBvdzJfNTMgPSAweDIwMDAwMDAwMDAwMDAwO1xyXG5cclxuICAgICAgLy8gUmV0dXJuIGEgNTMgYml0IGludGVnZXIgbiwgd2hlcmUgMCA8PSBuIDwgOTAwNzE5OTI1NDc0MDk5Mi5cclxuICAgICAgLy8gQ2hlY2sgaWYgTWF0aC5yYW5kb20oKSBwcm9kdWNlcyBtb3JlIHRoYW4gMzIgYml0cyBvZiByYW5kb21uZXNzLlxyXG4gICAgICAvLyBJZiBpdCBkb2VzLCBhc3N1bWUgYXQgbGVhc3QgNTMgYml0cyBhcmUgcHJvZHVjZWQsIG90aGVyd2lzZSBhc3N1bWUgYXQgbGVhc3QgMzAgYml0cy5cclxuICAgICAgLy8gMHg0MDAwMDAwMCBpcyAyXjMwLCAweDgwMDAwMCBpcyAyXjIzLCAweDFmZmZmZiBpcyAyXjIxIC0gMS5cclxuICAgICAgdmFyIHJhbmRvbTUzYml0SW50ID0gKE1hdGgucmFuZG9tKCkgKiBwb3cyXzUzKSAmIDB4MWZmZmZmXHJcbiAgICAgICA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1hdGhmbG9vcihNYXRoLnJhbmRvbSgpICogcG93Ml81Myk7IH1cclxuICAgICAgIDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKChNYXRoLnJhbmRvbSgpICogMHg0MDAwMDAwMCB8IDApICogMHg4MDAwMDApICtcclxuICAgICAgICAgKE1hdGgucmFuZG9tKCkgKiAweDgwMDAwMCB8IDApOyB9O1xyXG5cclxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChkcCkge1xyXG4gICAgICAgIHZhciBhLCBiLCBlLCBrLCB2LFxyXG4gICAgICAgICAgaSA9IDAsXHJcbiAgICAgICAgICBjID0gW10sXHJcbiAgICAgICAgICByYW5kID0gbmV3IEJpZ051bWJlcihPTkUpO1xyXG5cclxuICAgICAgICBpZiAoZHAgPT0gbnVsbCkgZHAgPSBERUNJTUFMX1BMQUNFUztcclxuICAgICAgICBlbHNlIGludENoZWNrKGRwLCAwLCBNQVgpO1xyXG5cclxuICAgICAgICBrID0gbWF0aGNlaWwoZHAgLyBMT0dfQkFTRSk7XHJcblxyXG4gICAgICAgIGlmIChDUllQVE8pIHtcclxuXHJcbiAgICAgICAgICAvLyBCcm93c2VycyBzdXBwb3J0aW5nIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMuXHJcbiAgICAgICAgICBpZiAoY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xyXG5cclxuICAgICAgICAgICAgYSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KGsgKj0gMikpO1xyXG5cclxuICAgICAgICAgICAgZm9yICg7IGkgPCBrOykge1xyXG5cclxuICAgICAgICAgICAgICAvLyA1MyBiaXRzOlxyXG4gICAgICAgICAgICAgIC8vICgoTWF0aC5wb3coMiwgMzIpIC0gMSkgKiBNYXRoLnBvdygyLCAyMSkpLnRvU3RyaW5nKDIpXHJcbiAgICAgICAgICAgICAgLy8gMTExMTEgMTExMTExMTEgMTExMTExMTEgMTExMTExMTEgMTExMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDBcclxuICAgICAgICAgICAgICAvLyAoKE1hdGgucG93KDIsIDMyKSAtIDEpID4+PiAxMSkudG9TdHJpbmcoMilcclxuICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMSAxMTExMTExMSAxMTExMTExMVxyXG4gICAgICAgICAgICAgIC8vIDB4MjAwMDAgaXMgMl4yMS5cclxuICAgICAgICAgICAgICB2ID0gYVtpXSAqIDB4MjAwMDAgKyAoYVtpICsgMV0gPj4+IDExKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gUmVqZWN0aW9uIHNhbXBsaW5nOlxyXG4gICAgICAgICAgICAgIC8vIDAgPD0gdiA8IDkwMDcxOTkyNTQ3NDA5OTJcclxuICAgICAgICAgICAgICAvLyBQcm9iYWJpbGl0eSB0aGF0IHYgPj0gOWUxNSwgaXNcclxuICAgICAgICAgICAgICAvLyA3MTk5MjU0NzQwOTkyIC8gOTAwNzE5OTI1NDc0MDk5MiB+PSAwLjAwMDgsIGkuZS4gMSBpbiAxMjUxXHJcbiAgICAgICAgICAgICAgaWYgKHYgPj0gOWUxNSkge1xyXG4gICAgICAgICAgICAgICAgYiA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KDIpKTtcclxuICAgICAgICAgICAgICAgIGFbaV0gPSBiWzBdO1xyXG4gICAgICAgICAgICAgICAgYVtpICsgMV0gPSBiWzFdO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gMCA8PSB2IDw9IDg5OTk5OTk5OTk5OTk5OTlcclxuICAgICAgICAgICAgICAgIC8vIDAgPD0gKHYgJSAxZTE0KSA8PSA5OTk5OTk5OTk5OTk5OVxyXG4gICAgICAgICAgICAgICAgYy5wdXNoKHYgJSAxZTE0KTtcclxuICAgICAgICAgICAgICAgIGkgKz0gMjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaSA9IGsgLyAyO1xyXG5cclxuICAgICAgICAgIC8vIE5vZGUuanMgc3VwcG9ydGluZyBjcnlwdG8ucmFuZG9tQnl0ZXMuXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNyeXB0by5yYW5kb21CeXRlcykge1xyXG5cclxuICAgICAgICAgICAgLy8gYnVmZmVyXHJcbiAgICAgICAgICAgIGEgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoayAqPSA3KTtcclxuXHJcbiAgICAgICAgICAgIGZvciAoOyBpIDwgazspIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gMHgxMDAwMDAwMDAwMDAwIGlzIDJeNDgsIDB4MTAwMDAwMDAwMDAgaXMgMl40MFxyXG4gICAgICAgICAgICAgIC8vIDB4MTAwMDAwMDAwIGlzIDJeMzIsIDB4MTAwMDAwMCBpcyAyXjI0XHJcbiAgICAgICAgICAgICAgLy8gMTExMTEgMTExMTExMTEgMTExMTExMTEgMTExMTExMTEgMTExMTExMTEgMTExMTExMTEgMTExMTExMTFcclxuICAgICAgICAgICAgICAvLyAwIDw9IHYgPCA5MDA3MTk5MjU0NzQwOTkyXHJcbiAgICAgICAgICAgICAgdiA9ICgoYVtpXSAmIDMxKSAqIDB4MTAwMDAwMDAwMDAwMCkgKyAoYVtpICsgMV0gKiAweDEwMDAwMDAwMDAwKSArXHJcbiAgICAgICAgICAgICAgICAgKGFbaSArIDJdICogMHgxMDAwMDAwMDApICsgKGFbaSArIDNdICogMHgxMDAwMDAwKSArXHJcbiAgICAgICAgICAgICAgICAgKGFbaSArIDRdIDw8IDE2KSArIChhW2kgKyA1XSA8PCA4KSArIGFbaSArIDZdO1xyXG5cclxuICAgICAgICAgICAgICBpZiAodiA+PSA5ZTE1KSB7XHJcbiAgICAgICAgICAgICAgICBjcnlwdG8ucmFuZG9tQnl0ZXMoNykuY29weShhLCBpKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIDAgPD0gKHYgJSAxZTE0KSA8PSA5OTk5OTk5OTk5OTk5OVxyXG4gICAgICAgICAgICAgICAgYy5wdXNoKHYgJSAxZTE0KTtcclxuICAgICAgICAgICAgICAgIGkgKz0gNztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaSA9IGsgLyA3O1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgQ1JZUFRPID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnY3J5cHRvIHVuYXZhaWxhYmxlJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBVc2UgTWF0aC5yYW5kb20uXHJcbiAgICAgICAgaWYgKCFDUllQVE8pIHtcclxuXHJcbiAgICAgICAgICBmb3IgKDsgaSA8IGs7KSB7XHJcbiAgICAgICAgICAgIHYgPSByYW5kb201M2JpdEludCgpO1xyXG4gICAgICAgICAgICBpZiAodiA8IDllMTUpIGNbaSsrXSA9IHYgJSAxZTE0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgayA9IGNbLS1pXTtcclxuICAgICAgICBkcCAlPSBMT0dfQkFTRTtcclxuXHJcbiAgICAgICAgLy8gQ29udmVydCB0cmFpbGluZyBkaWdpdHMgdG8gemVyb3MgYWNjb3JkaW5nIHRvIGRwLlxyXG4gICAgICAgIGlmIChrICYmIGRwKSB7XHJcbiAgICAgICAgICB2ID0gUE9XU19URU5bTE9HX0JBU0UgLSBkcF07XHJcbiAgICAgICAgICBjW2ldID0gbWF0aGZsb29yKGsgLyB2KSAqIHY7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZW1vdmUgdHJhaWxpbmcgZWxlbWVudHMgd2hpY2ggYXJlIHplcm8uXHJcbiAgICAgICAgZm9yICg7IGNbaV0gPT09IDA7IGMucG9wKCksIGktLSk7XHJcblxyXG4gICAgICAgIC8vIFplcm8/XHJcbiAgICAgICAgaWYgKGkgPCAwKSB7XHJcbiAgICAgICAgICBjID0gW2UgPSAwXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIFJlbW92ZSBsZWFkaW5nIGVsZW1lbnRzIHdoaWNoIGFyZSB6ZXJvIGFuZCBhZGp1c3QgZXhwb25lbnQgYWNjb3JkaW5nbHkuXHJcbiAgICAgICAgICBmb3IgKGUgPSAtMSA7IGNbMF0gPT09IDA7IGMuc3BsaWNlKDAsIDEpLCBlIC09IExPR19CQVNFKTtcclxuXHJcbiAgICAgICAgICAvLyBDb3VudCB0aGUgZGlnaXRzIG9mIHRoZSBmaXJzdCBlbGVtZW50IG9mIGMgdG8gZGV0ZXJtaW5lIGxlYWRpbmcgemVyb3MsIGFuZC4uLlxyXG4gICAgICAgICAgZm9yIChpID0gMSwgdiA9IGNbMF07IHYgPj0gMTA7IHYgLz0gMTAsIGkrKyk7XHJcblxyXG4gICAgICAgICAgLy8gYWRqdXN0IHRoZSBleHBvbmVudCBhY2NvcmRpbmdseS5cclxuICAgICAgICAgIGlmIChpIDwgTE9HX0JBU0UpIGUgLT0gTE9HX0JBU0UgLSBpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmFuZC5lID0gZTtcclxuICAgICAgICByYW5kLmMgPSBjO1xyXG4gICAgICAgIHJldHVybiByYW5kO1xyXG4gICAgICB9O1xyXG4gICAgfSkoKTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgc3VtIG9mIHRoZSBhcmd1bWVudHMuXHJcbiAgICAgKlxyXG4gICAgICogYXJndW1lbnRzIHtudW1iZXJ8c3RyaW5nfEJpZ051bWJlcn1cclxuICAgICAqL1xyXG4gICAgQmlnTnVtYmVyLnN1bSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIGkgPSAxLFxyXG4gICAgICAgIGFyZ3MgPSBhcmd1bWVudHMsXHJcbiAgICAgICAgc3VtID0gbmV3IEJpZ051bWJlcihhcmdzWzBdKTtcclxuICAgICAgZm9yICg7IGkgPCBhcmdzLmxlbmd0aDspIHN1bSA9IHN1bS5wbHVzKGFyZ3NbaSsrXSk7XHJcbiAgICAgIHJldHVybiBzdW07XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvLyBQUklWQVRFIEZVTkNUSU9OU1xyXG5cclxuXHJcbiAgICAvLyBDYWxsZWQgYnkgQmlnTnVtYmVyIGFuZCBCaWdOdW1iZXIucHJvdG90eXBlLnRvU3RyaW5nLlxyXG4gICAgY29udmVydEJhc2UgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgZGVjaW1hbCA9ICcwMTIzNDU2Nzg5JztcclxuXHJcbiAgICAgIC8qXHJcbiAgICAgICAqIENvbnZlcnQgc3RyaW5nIG9mIGJhc2VJbiB0byBhbiBhcnJheSBvZiBudW1iZXJzIG9mIGJhc2VPdXQuXHJcbiAgICAgICAqIEVnLiB0b0Jhc2VPdXQoJzI1NScsIDEwLCAxNikgcmV0dXJucyBbMTUsIDE1XS5cclxuICAgICAgICogRWcuIHRvQmFzZU91dCgnZmYnLCAxNiwgMTApIHJldHVybnMgWzIsIDUsIDVdLlxyXG4gICAgICAgKi9cclxuICAgICAgZnVuY3Rpb24gdG9CYXNlT3V0KHN0ciwgYmFzZUluLCBiYXNlT3V0LCBhbHBoYWJldCkge1xyXG4gICAgICAgIHZhciBqLFxyXG4gICAgICAgICAgYXJyID0gWzBdLFxyXG4gICAgICAgICAgYXJyTCxcclxuICAgICAgICAgIGkgPSAwLFxyXG4gICAgICAgICAgbGVuID0gc3RyLmxlbmd0aDtcclxuXHJcbiAgICAgICAgZm9yICg7IGkgPCBsZW47KSB7XHJcbiAgICAgICAgICBmb3IgKGFyckwgPSBhcnIubGVuZ3RoOyBhcnJMLS07IGFyclthcnJMXSAqPSBiYXNlSW4pO1xyXG5cclxuICAgICAgICAgIGFyclswXSArPSBhbHBoYWJldC5pbmRleE9mKHN0ci5jaGFyQXQoaSsrKSk7XHJcblxyXG4gICAgICAgICAgZm9yIChqID0gMDsgaiA8IGFyci5sZW5ndGg7IGorKykge1xyXG5cclxuICAgICAgICAgICAgaWYgKGFycltqXSA+IGJhc2VPdXQgLSAxKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGFycltqICsgMV0gPT0gbnVsbCkgYXJyW2ogKyAxXSA9IDA7XHJcbiAgICAgICAgICAgICAgYXJyW2ogKyAxXSArPSBhcnJbal0gLyBiYXNlT3V0IHwgMDtcclxuICAgICAgICAgICAgICBhcnJbal0gJT0gYmFzZU91dDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGFyci5yZXZlcnNlKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIENvbnZlcnQgYSBudW1lcmljIHN0cmluZyBvZiBiYXNlSW4gdG8gYSBudW1lcmljIHN0cmluZyBvZiBiYXNlT3V0LlxyXG4gICAgICAvLyBJZiB0aGUgY2FsbGVyIGlzIHRvU3RyaW5nLCB3ZSBhcmUgY29udmVydGluZyBmcm9tIGJhc2UgMTAgdG8gYmFzZU91dC5cclxuICAgICAgLy8gSWYgdGhlIGNhbGxlciBpcyBCaWdOdW1iZXIsIHdlIGFyZSBjb252ZXJ0aW5nIGZyb20gYmFzZUluIHRvIGJhc2UgMTAuXHJcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoc3RyLCBiYXNlSW4sIGJhc2VPdXQsIHNpZ24sIGNhbGxlcklzVG9TdHJpbmcpIHtcclxuICAgICAgICB2YXIgYWxwaGFiZXQsIGQsIGUsIGssIHIsIHgsIHhjLCB5LFxyXG4gICAgICAgICAgaSA9IHN0ci5pbmRleE9mKCcuJyksXHJcbiAgICAgICAgICBkcCA9IERFQ0lNQUxfUExBQ0VTLFxyXG4gICAgICAgICAgcm0gPSBST1VORElOR19NT0RFO1xyXG5cclxuICAgICAgICAvLyBOb24taW50ZWdlci5cclxuICAgICAgICBpZiAoaSA+PSAwKSB7XHJcbiAgICAgICAgICBrID0gUE9XX1BSRUNJU0lPTjtcclxuXHJcbiAgICAgICAgICAvLyBVbmxpbWl0ZWQgcHJlY2lzaW9uLlxyXG4gICAgICAgICAgUE9XX1BSRUNJU0lPTiA9IDA7XHJcbiAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgnLicsICcnKTtcclxuICAgICAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKGJhc2VJbik7XHJcbiAgICAgICAgICB4ID0geS5wb3coc3RyLmxlbmd0aCAtIGkpO1xyXG4gICAgICAgICAgUE9XX1BSRUNJU0lPTiA9IGs7XHJcblxyXG4gICAgICAgICAgLy8gQ29udmVydCBzdHIgYXMgaWYgYW4gaW50ZWdlciwgdGhlbiByZXN0b3JlIHRoZSBmcmFjdGlvbiBwYXJ0IGJ5IGRpdmlkaW5nIHRoZVxyXG4gICAgICAgICAgLy8gcmVzdWx0IGJ5IGl0cyBiYXNlIHJhaXNlZCB0byBhIHBvd2VyLlxyXG5cclxuICAgICAgICAgIHkuYyA9IHRvQmFzZU91dCh0b0ZpeGVkUG9pbnQoY29lZmZUb1N0cmluZyh4LmMpLCB4LmUsICcwJyksXHJcbiAgICAgICAgICAgMTAsIGJhc2VPdXQsIGRlY2ltYWwpO1xyXG4gICAgICAgICAgeS5lID0geS5jLmxlbmd0aDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENvbnZlcnQgdGhlIG51bWJlciBhcyBpbnRlZ2VyLlxyXG5cclxuICAgICAgICB4YyA9IHRvQmFzZU91dChzdHIsIGJhc2VJbiwgYmFzZU91dCwgY2FsbGVySXNUb1N0cmluZ1xyXG4gICAgICAgICA/IChhbHBoYWJldCA9IEFMUEhBQkVULCBkZWNpbWFsKVxyXG4gICAgICAgICA6IChhbHBoYWJldCA9IGRlY2ltYWwsIEFMUEhBQkVUKSk7XHJcblxyXG4gICAgICAgIC8vIHhjIG5vdyByZXByZXNlbnRzIHN0ciBhcyBhbiBpbnRlZ2VyIGFuZCBjb252ZXJ0ZWQgdG8gYmFzZU91dC4gZSBpcyB0aGUgZXhwb25lbnQuXHJcbiAgICAgICAgZSA9IGsgPSB4Yy5sZW5ndGg7XHJcblxyXG4gICAgICAgIC8vIFJlbW92ZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgICBmb3IgKDsgeGNbLS1rXSA9PSAwOyB4Yy5wb3AoKSk7XHJcblxyXG4gICAgICAgIC8vIFplcm8/XHJcbiAgICAgICAgaWYgKCF4Y1swXSkgcmV0dXJuIGFscGhhYmV0LmNoYXJBdCgwKTtcclxuXHJcbiAgICAgICAgLy8gRG9lcyBzdHIgcmVwcmVzZW50IGFuIGludGVnZXI/IElmIHNvLCBubyBuZWVkIGZvciB0aGUgZGl2aXNpb24uXHJcbiAgICAgICAgaWYgKGkgPCAwKSB7XHJcbiAgICAgICAgICAtLWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHguYyA9IHhjO1xyXG4gICAgICAgICAgeC5lID0gZTtcclxuXHJcbiAgICAgICAgICAvLyBUaGUgc2lnbiBpcyBuZWVkZWQgZm9yIGNvcnJlY3Qgcm91bmRpbmcuXHJcbiAgICAgICAgICB4LnMgPSBzaWduO1xyXG4gICAgICAgICAgeCA9IGRpdih4LCB5LCBkcCwgcm0sIGJhc2VPdXQpO1xyXG4gICAgICAgICAgeGMgPSB4LmM7XHJcbiAgICAgICAgICByID0geC5yO1xyXG4gICAgICAgICAgZSA9IHguZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHhjIG5vdyByZXByZXNlbnRzIHN0ciBjb252ZXJ0ZWQgdG8gYmFzZU91dC5cclxuXHJcbiAgICAgICAgLy8gVEhlIGluZGV4IG9mIHRoZSByb3VuZGluZyBkaWdpdC5cclxuICAgICAgICBkID0gZSArIGRwICsgMTtcclxuXHJcbiAgICAgICAgLy8gVGhlIHJvdW5kaW5nIGRpZ2l0OiB0aGUgZGlnaXQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBkaWdpdCB0aGF0IG1heSBiZSByb3VuZGVkIHVwLlxyXG4gICAgICAgIGkgPSB4Y1tkXTtcclxuXHJcbiAgICAgICAgLy8gTG9vayBhdCB0aGUgcm91bmRpbmcgZGlnaXRzIGFuZCBtb2RlIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHJvdW5kIHVwLlxyXG5cclxuICAgICAgICBrID0gYmFzZU91dCAvIDI7XHJcbiAgICAgICAgciA9IHIgfHwgZCA8IDAgfHwgeGNbZCArIDFdICE9IG51bGw7XHJcblxyXG4gICAgICAgIHIgPSBybSA8IDQgPyAoaSAhPSBudWxsIHx8IHIpICYmIChybSA9PSAwIHx8IHJtID09ICh4LnMgPCAwID8gMyA6IDIpKVxyXG4gICAgICAgICAgICAgIDogaSA+IGsgfHwgaSA9PSBrICYmKHJtID09IDQgfHwgciB8fCBybSA9PSA2ICYmIHhjW2QgLSAxXSAmIDEgfHxcclxuICAgICAgICAgICAgICAgcm0gPT0gKHgucyA8IDAgPyA4IDogNykpO1xyXG5cclxuICAgICAgICAvLyBJZiB0aGUgaW5kZXggb2YgdGhlIHJvdW5kaW5nIGRpZ2l0IGlzIG5vdCBncmVhdGVyIHRoYW4gemVybywgb3IgeGMgcmVwcmVzZW50c1xyXG4gICAgICAgIC8vIHplcm8sIHRoZW4gdGhlIHJlc3VsdCBvZiB0aGUgYmFzZSBjb252ZXJzaW9uIGlzIHplcm8gb3IsIGlmIHJvdW5kaW5nIHVwLCBhIHZhbHVlXHJcbiAgICAgICAgLy8gc3VjaCBhcyAwLjAwMDAxLlxyXG4gICAgICAgIGlmIChkIDwgMSB8fCAheGNbMF0pIHtcclxuXHJcbiAgICAgICAgICAvLyAxXi1kcCBvciAwXHJcbiAgICAgICAgICBzdHIgPSByID8gdG9GaXhlZFBvaW50KGFscGhhYmV0LmNoYXJBdCgxKSwgLWRwLCBhbHBoYWJldC5jaGFyQXQoMCkpIDogYWxwaGFiZXQuY2hhckF0KDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgLy8gVHJ1bmNhdGUgeGMgdG8gdGhlIHJlcXVpcmVkIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcy5cclxuICAgICAgICAgIHhjLmxlbmd0aCA9IGQ7XHJcblxyXG4gICAgICAgICAgLy8gUm91bmQgdXA/XHJcbiAgICAgICAgICBpZiAocikge1xyXG5cclxuICAgICAgICAgICAgLy8gUm91bmRpbmcgdXAgbWF5IG1lYW4gdGhlIHByZXZpb3VzIGRpZ2l0IGhhcyB0byBiZSByb3VuZGVkIHVwIGFuZCBzbyBvbi5cclxuICAgICAgICAgICAgZm9yICgtLWJhc2VPdXQ7ICsreGNbLS1kXSA+IGJhc2VPdXQ7KSB7XHJcbiAgICAgICAgICAgICAgeGNbZF0gPSAwO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoIWQpIHtcclxuICAgICAgICAgICAgICAgICsrZTtcclxuICAgICAgICAgICAgICAgIHhjID0gWzFdLmNvbmNhdCh4Yyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgICAgICAgZm9yIChrID0geGMubGVuZ3RoOyAheGNbLS1rXTspO1xyXG5cclxuICAgICAgICAgIC8vIEUuZy4gWzQsIDExLCAxNV0gYmVjb21lcyA0YmYuXHJcbiAgICAgICAgICBmb3IgKGkgPSAwLCBzdHIgPSAnJzsgaSA8PSBrOyBzdHIgKz0gYWxwaGFiZXQuY2hhckF0KHhjW2krK10pKTtcclxuXHJcbiAgICAgICAgICAvLyBBZGQgbGVhZGluZyB6ZXJvcywgZGVjaW1hbCBwb2ludCBhbmQgdHJhaWxpbmcgemVyb3MgYXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICBzdHIgPSB0b0ZpeGVkUG9pbnQoc3RyLCBlLCBhbHBoYWJldC5jaGFyQXQoMCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVGhlIGNhbGxlciB3aWxsIGFkZCB0aGUgc2lnbi5cclxuICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgICB9O1xyXG4gICAgfSkoKTtcclxuXHJcblxyXG4gICAgLy8gUGVyZm9ybSBkaXZpc2lvbiBpbiB0aGUgc3BlY2lmaWVkIGJhc2UuIENhbGxlZCBieSBkaXYgYW5kIGNvbnZlcnRCYXNlLlxyXG4gICAgZGl2ID0gKGZ1bmN0aW9uICgpIHtcclxuXHJcbiAgICAgIC8vIEFzc3VtZSBub24temVybyB4IGFuZCBrLlxyXG4gICAgICBmdW5jdGlvbiBtdWx0aXBseSh4LCBrLCBiYXNlKSB7XHJcbiAgICAgICAgdmFyIG0sIHRlbXAsIHhsbywgeGhpLFxyXG4gICAgICAgICAgY2FycnkgPSAwLFxyXG4gICAgICAgICAgaSA9IHgubGVuZ3RoLFxyXG4gICAgICAgICAga2xvID0gayAlIFNRUlRfQkFTRSxcclxuICAgICAgICAgIGtoaSA9IGsgLyBTUVJUX0JBU0UgfCAwO1xyXG5cclxuICAgICAgICBmb3IgKHggPSB4LnNsaWNlKCk7IGktLTspIHtcclxuICAgICAgICAgIHhsbyA9IHhbaV0gJSBTUVJUX0JBU0U7XHJcbiAgICAgICAgICB4aGkgPSB4W2ldIC8gU1FSVF9CQVNFIHwgMDtcclxuICAgICAgICAgIG0gPSBraGkgKiB4bG8gKyB4aGkgKiBrbG87XHJcbiAgICAgICAgICB0ZW1wID0ga2xvICogeGxvICsgKChtICUgU1FSVF9CQVNFKSAqIFNRUlRfQkFTRSkgKyBjYXJyeTtcclxuICAgICAgICAgIGNhcnJ5ID0gKHRlbXAgLyBiYXNlIHwgMCkgKyAobSAvIFNRUlRfQkFTRSB8IDApICsga2hpICogeGhpO1xyXG4gICAgICAgICAgeFtpXSA9IHRlbXAgJSBiYXNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNhcnJ5KSB4ID0gW2NhcnJ5XS5jb25jYXQoeCk7XHJcblxyXG4gICAgICAgIHJldHVybiB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmdW5jdGlvbiBjb21wYXJlKGEsIGIsIGFMLCBiTCkge1xyXG4gICAgICAgIHZhciBpLCBjbXA7XHJcblxyXG4gICAgICAgIGlmIChhTCAhPSBiTCkge1xyXG4gICAgICAgICAgY21wID0gYUwgPiBiTCA/IDEgOiAtMTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIGZvciAoaSA9IGNtcCA9IDA7IGkgPCBhTDsgaSsrKSB7XHJcblxyXG4gICAgICAgICAgICBpZiAoYVtpXSAhPSBiW2ldKSB7XHJcbiAgICAgICAgICAgICAgY21wID0gYVtpXSA+IGJbaV0gPyAxIDogLTE7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjbXA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZ1bmN0aW9uIHN1YnRyYWN0KGEsIGIsIGFMLCBiYXNlKSB7XHJcbiAgICAgICAgdmFyIGkgPSAwO1xyXG5cclxuICAgICAgICAvLyBTdWJ0cmFjdCBiIGZyb20gYS5cclxuICAgICAgICBmb3IgKDsgYUwtLTspIHtcclxuICAgICAgICAgIGFbYUxdIC09IGk7XHJcbiAgICAgICAgICBpID0gYVthTF0gPCBiW2FMXSA/IDEgOiAwO1xyXG4gICAgICAgICAgYVthTF0gPSBpICogYmFzZSArIGFbYUxdIC0gYlthTF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZW1vdmUgbGVhZGluZyB6ZXJvcy5cclxuICAgICAgICBmb3IgKDsgIWFbMF0gJiYgYS5sZW5ndGggPiAxOyBhLnNwbGljZSgwLCAxKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHg6IGRpdmlkZW5kLCB5OiBkaXZpc29yLlxyXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHgsIHksIGRwLCBybSwgYmFzZSkge1xyXG4gICAgICAgIHZhciBjbXAsIGUsIGksIG1vcmUsIG4sIHByb2QsIHByb2RMLCBxLCBxYywgcmVtLCByZW1MLCByZW0wLCB4aSwgeEwsIHljMCxcclxuICAgICAgICAgIHlMLCB5eixcclxuICAgICAgICAgIHMgPSB4LnMgPT0geS5zID8gMSA6IC0xLFxyXG4gICAgICAgICAgeGMgPSB4LmMsXHJcbiAgICAgICAgICB5YyA9IHkuYztcclxuXHJcbiAgICAgICAgLy8gRWl0aGVyIE5hTiwgSW5maW5pdHkgb3IgMD9cclxuICAgICAgICBpZiAoIXhjIHx8ICF4Y1swXSB8fCAheWMgfHwgIXljWzBdKSB7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIG5ldyBCaWdOdW1iZXIoXHJcblxyXG4gICAgICAgICAgIC8vIFJldHVybiBOYU4gaWYgZWl0aGVyIE5hTiwgb3IgYm90aCBJbmZpbml0eSBvciAwLlxyXG4gICAgICAgICAgICF4LnMgfHwgIXkucyB8fCAoeGMgPyB5YyAmJiB4Y1swXSA9PSB5Y1swXSA6ICF5YykgPyBOYU4gOlxyXG5cclxuICAgICAgICAgICAgLy8gUmV0dXJuIMKxMCBpZiB4IGlzIMKxMCBvciB5IGlzIMKxSW5maW5pdHksIG9yIHJldHVybiDCsUluZmluaXR5IGFzIHkgaXMgwrEwLlxyXG4gICAgICAgICAgICB4YyAmJiB4Y1swXSA9PSAwIHx8ICF5YyA/IHMgKiAwIDogcyAvIDBcclxuICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHEgPSBuZXcgQmlnTnVtYmVyKHMpO1xyXG4gICAgICAgIHFjID0gcS5jID0gW107XHJcbiAgICAgICAgZSA9IHguZSAtIHkuZTtcclxuICAgICAgICBzID0gZHAgKyBlICsgMTtcclxuXHJcbiAgICAgICAgaWYgKCFiYXNlKSB7XHJcbiAgICAgICAgICBiYXNlID0gQkFTRTtcclxuICAgICAgICAgIGUgPSBiaXRGbG9vcih4LmUgLyBMT0dfQkFTRSkgLSBiaXRGbG9vcih5LmUgLyBMT0dfQkFTRSk7XHJcbiAgICAgICAgICBzID0gcyAvIExPR19CQVNFIHwgMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFJlc3VsdCBleHBvbmVudCBtYXkgYmUgb25lIGxlc3MgdGhlbiB0aGUgY3VycmVudCB2YWx1ZSBvZiBlLlxyXG4gICAgICAgIC8vIFRoZSBjb2VmZmljaWVudHMgb2YgdGhlIEJpZ051bWJlcnMgZnJvbSBjb252ZXJ0QmFzZSBtYXkgaGF2ZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgICBmb3IgKGkgPSAwOyB5Y1tpXSA9PSAoeGNbaV0gfHwgMCk7IGkrKyk7XHJcblxyXG4gICAgICAgIGlmICh5Y1tpXSA+ICh4Y1tpXSB8fCAwKSkgZS0tO1xyXG5cclxuICAgICAgICBpZiAocyA8IDApIHtcclxuICAgICAgICAgIHFjLnB1c2goMSk7XHJcbiAgICAgICAgICBtb3JlID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgeEwgPSB4Yy5sZW5ndGg7XHJcbiAgICAgICAgICB5TCA9IHljLmxlbmd0aDtcclxuICAgICAgICAgIGkgPSAwO1xyXG4gICAgICAgICAgcyArPSAyO1xyXG5cclxuICAgICAgICAgIC8vIE5vcm1hbGlzZSB4YyBhbmQgeWMgc28gaGlnaGVzdCBvcmRlciBkaWdpdCBvZiB5YyBpcyA+PSBiYXNlIC8gMi5cclxuXHJcbiAgICAgICAgICBuID0gbWF0aGZsb29yKGJhc2UgLyAoeWNbMF0gKyAxKSk7XHJcblxyXG4gICAgICAgICAgLy8gTm90IG5lY2Vzc2FyeSwgYnV0IHRvIGhhbmRsZSBvZGQgYmFzZXMgd2hlcmUgeWNbMF0gPT0gKGJhc2UgLyAyKSAtIDEuXHJcbiAgICAgICAgICAvLyBpZiAobiA+IDEgfHwgbisrID09IDEgJiYgeWNbMF0gPCBiYXNlIC8gMikge1xyXG4gICAgICAgICAgaWYgKG4gPiAxKSB7XHJcbiAgICAgICAgICAgIHljID0gbXVsdGlwbHkoeWMsIG4sIGJhc2UpO1xyXG4gICAgICAgICAgICB4YyA9IG11bHRpcGx5KHhjLCBuLCBiYXNlKTtcclxuICAgICAgICAgICAgeUwgPSB5Yy5sZW5ndGg7XHJcbiAgICAgICAgICAgIHhMID0geGMubGVuZ3RoO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHhpID0geUw7XHJcbiAgICAgICAgICByZW0gPSB4Yy5zbGljZSgwLCB5TCk7XHJcbiAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAvLyBBZGQgemVyb3MgdG8gbWFrZSByZW1haW5kZXIgYXMgbG9uZyBhcyBkaXZpc29yLlxyXG4gICAgICAgICAgZm9yICg7IHJlbUwgPCB5TDsgcmVtW3JlbUwrK10gPSAwKTtcclxuICAgICAgICAgIHl6ID0geWMuc2xpY2UoKTtcclxuICAgICAgICAgIHl6ID0gWzBdLmNvbmNhdCh5eik7XHJcbiAgICAgICAgICB5YzAgPSB5Y1swXTtcclxuICAgICAgICAgIGlmICh5Y1sxXSA+PSBiYXNlIC8gMikgeWMwKys7XHJcbiAgICAgICAgICAvLyBOb3QgbmVjZXNzYXJ5LCBidXQgdG8gcHJldmVudCB0cmlhbCBkaWdpdCBuID4gYmFzZSwgd2hlbiB1c2luZyBiYXNlIDMuXHJcbiAgICAgICAgICAvLyBlbHNlIGlmIChiYXNlID09IDMgJiYgeWMwID09IDEpIHljMCA9IDEgKyAxZS0xNTtcclxuXHJcbiAgICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgIG4gPSAwO1xyXG5cclxuICAgICAgICAgICAgLy8gQ29tcGFyZSBkaXZpc29yIGFuZCByZW1haW5kZXIuXHJcbiAgICAgICAgICAgIGNtcCA9IGNvbXBhcmUoeWMsIHJlbSwgeUwsIHJlbUwpO1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgZGl2aXNvciA8IHJlbWFpbmRlci5cclxuICAgICAgICAgICAgaWYgKGNtcCA8IDApIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRyaWFsIGRpZ2l0LCBuLlxyXG5cclxuICAgICAgICAgICAgICByZW0wID0gcmVtWzBdO1xyXG4gICAgICAgICAgICAgIGlmICh5TCAhPSByZW1MKSByZW0wID0gcmVtMCAqIGJhc2UgKyAocmVtWzFdIHx8IDApO1xyXG5cclxuICAgICAgICAgICAgICAvLyBuIGlzIGhvdyBtYW55IHRpbWVzIHRoZSBkaXZpc29yIGdvZXMgaW50byB0aGUgY3VycmVudCByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgbiA9IG1hdGhmbG9vcihyZW0wIC8geWMwKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gIEFsZ29yaXRobTpcclxuICAgICAgICAgICAgICAvLyAgcHJvZHVjdCA9IGRpdmlzb3IgbXVsdGlwbGllZCBieSB0cmlhbCBkaWdpdCAobikuXHJcbiAgICAgICAgICAgICAgLy8gIENvbXBhcmUgcHJvZHVjdCBhbmQgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIC8vICBJZiBwcm9kdWN0IGlzIGdyZWF0ZXIgdGhhbiByZW1haW5kZXI6XHJcbiAgICAgICAgICAgICAgLy8gICAgU3VidHJhY3QgZGl2aXNvciBmcm9tIHByb2R1Y3QsIGRlY3JlbWVudCB0cmlhbCBkaWdpdC5cclxuICAgICAgICAgICAgICAvLyAgU3VidHJhY3QgcHJvZHVjdCBmcm9tIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAvLyAgSWYgcHJvZHVjdCB3YXMgbGVzcyB0aGFuIHJlbWFpbmRlciBhdCB0aGUgbGFzdCBjb21wYXJlOlxyXG4gICAgICAgICAgICAgIC8vICAgIENvbXBhcmUgbmV3IHJlbWFpbmRlciBhbmQgZGl2aXNvci5cclxuICAgICAgICAgICAgICAvLyAgICBJZiByZW1haW5kZXIgaXMgZ3JlYXRlciB0aGFuIGRpdmlzb3I6XHJcbiAgICAgICAgICAgICAgLy8gICAgICBTdWJ0cmFjdCBkaXZpc29yIGZyb20gcmVtYWluZGVyLCBpbmNyZW1lbnQgdHJpYWwgZGlnaXQuXHJcblxyXG4gICAgICAgICAgICAgIGlmIChuID4gMSkge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIG4gbWF5IGJlID4gYmFzZSBvbmx5IHdoZW4gYmFzZSBpcyAzLlxyXG4gICAgICAgICAgICAgICAgaWYgKG4gPj0gYmFzZSkgbiA9IGJhc2UgLSAxO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIHByb2R1Y3QgPSBkaXZpc29yICogdHJpYWwgZGlnaXQuXHJcbiAgICAgICAgICAgICAgICBwcm9kID0gbXVsdGlwbHkoeWMsIG4sIGJhc2UpO1xyXG4gICAgICAgICAgICAgICAgcHJvZEwgPSBwcm9kLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIHJlbUwgPSByZW0ubGVuZ3RoO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENvbXBhcmUgcHJvZHVjdCBhbmQgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgICAgLy8gSWYgcHJvZHVjdCA+IHJlbWFpbmRlciB0aGVuIHRyaWFsIGRpZ2l0IG4gdG9vIGhpZ2guXHJcbiAgICAgICAgICAgICAgICAvLyBuIGlzIDEgdG9vIGhpZ2ggYWJvdXQgNSUgb2YgdGhlIHRpbWUsIGFuZCBpcyBub3Qga25vd24gdG8gaGF2ZVxyXG4gICAgICAgICAgICAgICAgLy8gZXZlciBiZWVuIG1vcmUgdGhhbiAxIHRvbyBoaWdoLlxyXG4gICAgICAgICAgICAgICAgd2hpbGUgKGNvbXBhcmUocHJvZCwgcmVtLCBwcm9kTCwgcmVtTCkgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICBuLS07XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBTdWJ0cmFjdCBkaXZpc29yIGZyb20gcHJvZHVjdC5cclxuICAgICAgICAgICAgICAgICAgc3VidHJhY3QocHJvZCwgeUwgPCBwcm9kTCA/IHl6IDogeWMsIHByb2RMLCBiYXNlKTtcclxuICAgICAgICAgICAgICAgICAgcHJvZEwgPSBwcm9kLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgY21wID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIG4gaXMgMCBvciAxLCBjbXAgaXMgLTEuXHJcbiAgICAgICAgICAgICAgICAvLyBJZiBuIGlzIDAsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY29tcGFyZSB5YyBhbmQgcmVtIGFnYWluIGJlbG93LFxyXG4gICAgICAgICAgICAgICAgLy8gc28gY2hhbmdlIGNtcCB0byAxIHRvIGF2b2lkIGl0LlxyXG4gICAgICAgICAgICAgICAgLy8gSWYgbiBpcyAxLCBsZWF2ZSBjbXAgYXMgLTEsIHNvIHljIGFuZCByZW0gYXJlIGNvbXBhcmVkIGFnYWluLlxyXG4gICAgICAgICAgICAgICAgaWYgKG4gPT0gMCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gZGl2aXNvciA8IHJlbWFpbmRlciwgc28gbiBtdXN0IGJlIGF0IGxlYXN0IDEuXHJcbiAgICAgICAgICAgICAgICAgIGNtcCA9IG4gPSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIHByb2R1Y3QgPSBkaXZpc29yXHJcbiAgICAgICAgICAgICAgICBwcm9kID0geWMuc2xpY2UoKTtcclxuICAgICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAocHJvZEwgPCByZW1MKSBwcm9kID0gWzBdLmNvbmNhdChwcm9kKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gU3VidHJhY3QgcHJvZHVjdCBmcm9tIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICBzdWJ0cmFjdChyZW0sIHByb2QsIHJlbUwsIGJhc2UpO1xyXG4gICAgICAgICAgICAgIHJlbUwgPSByZW0ubGVuZ3RoO1xyXG5cclxuICAgICAgICAgICAgICAgLy8gSWYgcHJvZHVjdCB3YXMgPCByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgaWYgKGNtcCA9PSAtMSkge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENvbXBhcmUgZGl2aXNvciBhbmQgbmV3IHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIC8vIElmIGRpdmlzb3IgPCBuZXcgcmVtYWluZGVyLCBzdWJ0cmFjdCBkaXZpc29yIGZyb20gcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgICAgLy8gVHJpYWwgZGlnaXQgbiB0b28gbG93LlxyXG4gICAgICAgICAgICAgICAgLy8gbiBpcyAxIHRvbyBsb3cgYWJvdXQgNSUgb2YgdGhlIHRpbWUsIGFuZCB2ZXJ5IHJhcmVseSAyIHRvbyBsb3cuXHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoY29tcGFyZSh5YywgcmVtLCB5TCwgcmVtTCkgPCAxKSB7XHJcbiAgICAgICAgICAgICAgICAgIG4rKztcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIFN1YnRyYWN0IGRpdmlzb3IgZnJvbSByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgICAgIHN1YnRyYWN0KHJlbSwgeUwgPCByZW1MID8geXogOiB5YywgcmVtTCwgYmFzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHJlbUwgPSByZW0ubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjbXAgPT09IDApIHtcclxuICAgICAgICAgICAgICBuKys7XHJcbiAgICAgICAgICAgICAgcmVtID0gWzBdO1xyXG4gICAgICAgICAgICB9IC8vIGVsc2UgY21wID09PSAxIGFuZCBuIHdpbGwgYmUgMFxyXG5cclxuICAgICAgICAgICAgLy8gQWRkIHRoZSBuZXh0IGRpZ2l0LCBuLCB0byB0aGUgcmVzdWx0IGFycmF5LlxyXG4gICAgICAgICAgICBxY1tpKytdID0gbjtcclxuXHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICBpZiAocmVtWzBdKSB7XHJcbiAgICAgICAgICAgICAgcmVtW3JlbUwrK10gPSB4Y1t4aV0gfHwgMDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZW0gPSBbeGNbeGldXTtcclxuICAgICAgICAgICAgICByZW1MID0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSB3aGlsZSAoKHhpKysgPCB4TCB8fCByZW1bMF0gIT0gbnVsbCkgJiYgcy0tKTtcclxuXHJcbiAgICAgICAgICBtb3JlID0gcmVtWzBdICE9IG51bGw7XHJcblxyXG4gICAgICAgICAgLy8gTGVhZGluZyB6ZXJvP1xyXG4gICAgICAgICAgaWYgKCFxY1swXSkgcWMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGJhc2UgPT0gQkFTRSkge1xyXG5cclxuICAgICAgICAgIC8vIFRvIGNhbGN1bGF0ZSBxLmUsIGZpcnN0IGdldCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBxY1swXS5cclxuICAgICAgICAgIGZvciAoaSA9IDEsIHMgPSBxY1swXTsgcyA+PSAxMDsgcyAvPSAxMCwgaSsrKTtcclxuXHJcbiAgICAgICAgICByb3VuZChxLCBkcCArIChxLmUgPSBpICsgZSAqIExPR19CQVNFIC0gMSkgKyAxLCBybSwgbW9yZSk7XHJcblxyXG4gICAgICAgIC8vIENhbGxlciBpcyBjb252ZXJ0QmFzZS5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcS5lID0gZTtcclxuICAgICAgICAgIHEuciA9ICttb3JlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHE7XHJcbiAgICAgIH07XHJcbiAgICB9KSgpO1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyIG4gaW4gZml4ZWQtcG9pbnQgb3IgZXhwb25lbnRpYWxcclxuICAgICAqIG5vdGF0aW9uIHJvdW5kZWQgdG8gdGhlIHNwZWNpZmllZCBkZWNpbWFsIHBsYWNlcyBvciBzaWduaWZpY2FudCBkaWdpdHMuXHJcbiAgICAgKlxyXG4gICAgICogbjogYSBCaWdOdW1iZXIuXHJcbiAgICAgKiBpOiB0aGUgaW5kZXggb2YgdGhlIGxhc3QgZGlnaXQgcmVxdWlyZWQgKGkuZS4gdGhlIGRpZ2l0IHRoYXQgbWF5IGJlIHJvdW5kZWQgdXApLlxyXG4gICAgICogcm06IHRoZSByb3VuZGluZyBtb2RlLlxyXG4gICAgICogaWQ6IDEgKHRvRXhwb25lbnRpYWwpIG9yIDIgKHRvUHJlY2lzaW9uKS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gZm9ybWF0KG4sIGksIHJtLCBpZCkge1xyXG4gICAgICB2YXIgYzAsIGUsIG5lLCBsZW4sIHN0cjtcclxuXHJcbiAgICAgIGlmIChybSA9PSBudWxsKSBybSA9IFJPVU5ESU5HX01PREU7XHJcbiAgICAgIGVsc2UgaW50Q2hlY2socm0sIDAsIDgpO1xyXG5cclxuICAgICAgaWYgKCFuLmMpIHJldHVybiBuLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICBjMCA9IG4uY1swXTtcclxuICAgICAgbmUgPSBuLmU7XHJcblxyXG4gICAgICBpZiAoaSA9PSBudWxsKSB7XHJcbiAgICAgICAgc3RyID0gY29lZmZUb1N0cmluZyhuLmMpO1xyXG4gICAgICAgIHN0ciA9IGlkID09IDEgfHwgaWQgPT0gMiAmJiAobmUgPD0gVE9fRVhQX05FRyB8fCBuZSA+PSBUT19FWFBfUE9TKVxyXG4gICAgICAgICA/IHRvRXhwb25lbnRpYWwoc3RyLCBuZSlcclxuICAgICAgICAgOiB0b0ZpeGVkUG9pbnQoc3RyLCBuZSwgJzAnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuID0gcm91bmQobmV3IEJpZ051bWJlcihuKSwgaSwgcm0pO1xyXG5cclxuICAgICAgICAvLyBuLmUgbWF5IGhhdmUgY2hhbmdlZCBpZiB0aGUgdmFsdWUgd2FzIHJvdW5kZWQgdXAuXHJcbiAgICAgICAgZSA9IG4uZTtcclxuXHJcbiAgICAgICAgc3RyID0gY29lZmZUb1N0cmluZyhuLmMpO1xyXG4gICAgICAgIGxlbiA9IHN0ci5sZW5ndGg7XHJcblxyXG4gICAgICAgIC8vIHRvUHJlY2lzaW9uIHJldHVybnMgZXhwb25lbnRpYWwgbm90YXRpb24gaWYgdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHNcclxuICAgICAgICAvLyBzcGVjaWZpZWQgaXMgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgZGlnaXRzIG5lY2Vzc2FyeSB0byByZXByZXNlbnQgdGhlIGludGVnZXJcclxuICAgICAgICAvLyBwYXJ0IG9mIHRoZSB2YWx1ZSBpbiBmaXhlZC1wb2ludCBub3RhdGlvbi5cclxuXHJcbiAgICAgICAgLy8gRXhwb25lbnRpYWwgbm90YXRpb24uXHJcbiAgICAgICAgaWYgKGlkID09IDEgfHwgaWQgPT0gMiAmJiAoaSA8PSBlIHx8IGUgPD0gVE9fRVhQX05FRykpIHtcclxuXHJcbiAgICAgICAgICAvLyBBcHBlbmQgemVyb3M/XHJcbiAgICAgICAgICBmb3IgKDsgbGVuIDwgaTsgc3RyICs9ICcwJywgbGVuKyspO1xyXG4gICAgICAgICAgc3RyID0gdG9FeHBvbmVudGlhbChzdHIsIGUpO1xyXG5cclxuICAgICAgICAvLyBGaXhlZC1wb2ludCBub3RhdGlvbi5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaSAtPSBuZTtcclxuICAgICAgICAgIHN0ciA9IHRvRml4ZWRQb2ludChzdHIsIGUsICcwJyk7XHJcblxyXG4gICAgICAgICAgLy8gQXBwZW5kIHplcm9zP1xyXG4gICAgICAgICAgaWYgKGUgKyAxID4gbGVuKSB7XHJcbiAgICAgICAgICAgIGlmICgtLWkgPiAwKSBmb3IgKHN0ciArPSAnLic7IGktLTsgc3RyICs9ICcwJyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpICs9IGUgLSBsZW47XHJcbiAgICAgICAgICAgIGlmIChpID4gMCkge1xyXG4gICAgICAgICAgICAgIGlmIChlICsgMSA9PSBsZW4pIHN0ciArPSAnLic7XHJcbiAgICAgICAgICAgICAgZm9yICg7IGktLTsgc3RyICs9ICcwJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBuLnMgPCAwICYmIGMwID8gJy0nICsgc3RyIDogc3RyO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBIYW5kbGUgQmlnTnVtYmVyLm1heCBhbmQgQmlnTnVtYmVyLm1pbi5cclxuICAgIGZ1bmN0aW9uIG1heE9yTWluKGFyZ3MsIG1ldGhvZCkge1xyXG4gICAgICB2YXIgbixcclxuICAgICAgICBpID0gMSxcclxuICAgICAgICBtID0gbmV3IEJpZ051bWJlcihhcmdzWzBdKTtcclxuXHJcbiAgICAgIGZvciAoOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIG4gPSBuZXcgQmlnTnVtYmVyKGFyZ3NbaV0pO1xyXG5cclxuICAgICAgICAvLyBJZiBhbnkgbnVtYmVyIGlzIE5hTiwgcmV0dXJuIE5hTi5cclxuICAgICAgICBpZiAoIW4ucykge1xyXG4gICAgICAgICAgbSA9IG47XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKG1ldGhvZC5jYWxsKG0sIG4pKSB7XHJcbiAgICAgICAgICBtID0gbjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBtO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogU3RyaXAgdHJhaWxpbmcgemVyb3MsIGNhbGN1bGF0ZSBiYXNlIDEwIGV4cG9uZW50IGFuZCBjaGVjayBhZ2FpbnN0IE1JTl9FWFAgYW5kIE1BWF9FWFAuXHJcbiAgICAgKiBDYWxsZWQgYnkgbWludXMsIHBsdXMgYW5kIHRpbWVzLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBub3JtYWxpc2UobiwgYywgZSkge1xyXG4gICAgICB2YXIgaSA9IDEsXHJcbiAgICAgICAgaiA9IGMubGVuZ3RoO1xyXG5cclxuICAgICAgIC8vIFJlbW92ZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgZm9yICg7ICFjWy0tal07IGMucG9wKCkpO1xyXG5cclxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBiYXNlIDEwIGV4cG9uZW50LiBGaXJzdCBnZXQgdGhlIG51bWJlciBvZiBkaWdpdHMgb2YgY1swXS5cclxuICAgICAgZm9yIChqID0gY1swXTsgaiA+PSAxMDsgaiAvPSAxMCwgaSsrKTtcclxuXHJcbiAgICAgIC8vIE92ZXJmbG93P1xyXG4gICAgICBpZiAoKGUgPSBpICsgZSAqIExPR19CQVNFIC0gMSkgPiBNQVhfRVhQKSB7XHJcblxyXG4gICAgICAgIC8vIEluZmluaXR5LlxyXG4gICAgICAgIG4uYyA9IG4uZSA9IG51bGw7XHJcblxyXG4gICAgICAvLyBVbmRlcmZsb3c/XHJcbiAgICAgIH0gZWxzZSBpZiAoZSA8IE1JTl9FWFApIHtcclxuXHJcbiAgICAgICAgLy8gWmVyby5cclxuICAgICAgICBuLmMgPSBbbi5lID0gMF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbi5lID0gZTtcclxuICAgICAgICBuLmMgPSBjO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gSGFuZGxlIHZhbHVlcyB0aGF0IGZhaWwgdGhlIHZhbGlkaXR5IHRlc3QgaW4gQmlnTnVtYmVyLlxyXG4gICAgcGFyc2VOdW1lcmljID0gKGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIGJhc2VQcmVmaXggPSAvXigtPykwKFt4Ym9dKSg/PVxcd1tcXHcuXSokKS9pLFxyXG4gICAgICAgIGRvdEFmdGVyID0gL14oW14uXSspXFwuJC8sXHJcbiAgICAgICAgZG90QmVmb3JlID0gL15cXC4oW14uXSspJC8sXHJcbiAgICAgICAgaXNJbmZpbml0eU9yTmFOID0gL14tPyhJbmZpbml0eXxOYU4pJC8sXHJcbiAgICAgICAgd2hpdGVzcGFjZU9yUGx1cyA9IC9eXFxzKlxcKyg/PVtcXHcuXSl8Xlxccyt8XFxzKyQvZztcclxuXHJcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoeCwgc3RyLCBpc051bSwgYikge1xyXG4gICAgICAgIHZhciBiYXNlLFxyXG4gICAgICAgICAgcyA9IGlzTnVtID8gc3RyIDogc3RyLnJlcGxhY2Uod2hpdGVzcGFjZU9yUGx1cywgJycpO1xyXG5cclxuICAgICAgICAvLyBObyBleGNlcHRpb24gb24gwrFJbmZpbml0eSBvciBOYU4uXHJcbiAgICAgICAgaWYgKGlzSW5maW5pdHlPck5hTi50ZXN0KHMpKSB7XHJcbiAgICAgICAgICB4LnMgPSBpc05hTihzKSA/IG51bGwgOiBzIDwgMCA/IC0xIDogMTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCFpc051bSkge1xyXG5cclxuICAgICAgICAgICAgLy8gYmFzZVByZWZpeCA9IC9eKC0/KTAoW3hib10pKD89XFx3W1xcdy5dKiQpL2lcclxuICAgICAgICAgICAgcyA9IHMucmVwbGFjZShiYXNlUHJlZml4LCBmdW5jdGlvbiAobSwgcDEsIHAyKSB7XHJcbiAgICAgICAgICAgICAgYmFzZSA9IChwMiA9IHAyLnRvTG93ZXJDYXNlKCkpID09ICd4JyA/IDE2IDogcDIgPT0gJ2InID8gMiA6IDg7XHJcbiAgICAgICAgICAgICAgcmV0dXJuICFiIHx8IGIgPT0gYmFzZSA/IHAxIDogbTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoYikge1xyXG4gICAgICAgICAgICAgIGJhc2UgPSBiO1xyXG5cclxuICAgICAgICAgICAgICAvLyBFLmcuICcxLicgdG8gJzEnLCAnLjEnIHRvICcwLjEnXHJcbiAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZShkb3RBZnRlciwgJyQxJykucmVwbGFjZShkb3RCZWZvcmUsICcwLiQxJyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChzdHIgIT0gcykgcmV0dXJuIG5ldyBCaWdOdW1iZXIocywgYmFzZSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE5vdCBhIG51bWJlcjoge259J1xyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE5vdCBhIGJhc2Uge2J9IG51bWJlcjoge259J1xyXG4gICAgICAgICAgaWYgKEJpZ051bWJlci5ERUJVRykge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAgIChiaWdudW1iZXJFcnJvciArICdOb3QgYScgKyAoYiA/ICcgYmFzZSAnICsgYiA6ICcnKSArICcgbnVtYmVyOiAnICsgc3RyKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBOYU5cclxuICAgICAgICAgIHgucyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB4LmMgPSB4LmUgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9KSgpO1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUm91bmQgeCB0byBzZCBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBybS4gQ2hlY2sgZm9yIG92ZXIvdW5kZXItZmxvdy5cclxuICAgICAqIElmIHIgaXMgdHJ1dGh5LCBpdCBpcyBrbm93biB0aGF0IHRoZXJlIGFyZSBtb3JlIGRpZ2l0cyBhZnRlciB0aGUgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIHJvdW5kKHgsIHNkLCBybSwgcikge1xyXG4gICAgICB2YXIgZCwgaSwgaiwgaywgbiwgbmksIHJkLFxyXG4gICAgICAgIHhjID0geC5jLFxyXG4gICAgICAgIHBvd3MxMCA9IFBPV1NfVEVOO1xyXG5cclxuICAgICAgLy8gaWYgeCBpcyBub3QgSW5maW5pdHkgb3IgTmFOLi4uXHJcbiAgICAgIGlmICh4Yykge1xyXG5cclxuICAgICAgICAvLyByZCBpcyB0aGUgcm91bmRpbmcgZGlnaXQsIGkuZS4gdGhlIGRpZ2l0IGFmdGVyIHRoZSBkaWdpdCB0aGF0IG1heSBiZSByb3VuZGVkIHVwLlxyXG4gICAgICAgIC8vIG4gaXMgYSBiYXNlIDFlMTQgbnVtYmVyLCB0aGUgdmFsdWUgb2YgdGhlIGVsZW1lbnQgb2YgYXJyYXkgeC5jIGNvbnRhaW5pbmcgcmQuXHJcbiAgICAgICAgLy8gbmkgaXMgdGhlIGluZGV4IG9mIG4gd2l0aGluIHguYy5cclxuICAgICAgICAvLyBkIGlzIHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIG4uXHJcbiAgICAgICAgLy8gaSBpcyB0aGUgaW5kZXggb2YgcmQgd2l0aGluIG4gaW5jbHVkaW5nIGxlYWRpbmcgemVyb3MuXHJcbiAgICAgICAgLy8gaiBpcyB0aGUgYWN0dWFsIGluZGV4IG9mIHJkIHdpdGhpbiBuIChpZiA8IDAsIHJkIGlzIGEgbGVhZGluZyB6ZXJvKS5cclxuICAgICAgICBvdXQ6IHtcclxuXHJcbiAgICAgICAgICAvLyBHZXQgdGhlIG51bWJlciBvZiBkaWdpdHMgb2YgdGhlIGZpcnN0IGVsZW1lbnQgb2YgeGMuXHJcbiAgICAgICAgICBmb3IgKGQgPSAxLCBrID0geGNbMF07IGsgPj0gMTA7IGsgLz0gMTAsIGQrKyk7XHJcbiAgICAgICAgICBpID0gc2QgLSBkO1xyXG5cclxuICAgICAgICAgIC8vIElmIHRoZSByb3VuZGluZyBkaWdpdCBpcyBpbiB0aGUgZmlyc3QgZWxlbWVudCBvZiB4Yy4uLlxyXG4gICAgICAgICAgaWYgKGkgPCAwKSB7XHJcbiAgICAgICAgICAgIGkgKz0gTE9HX0JBU0U7XHJcbiAgICAgICAgICAgIGogPSBzZDtcclxuICAgICAgICAgICAgbiA9IHhjW25pID0gMF07XHJcblxyXG4gICAgICAgICAgICAvLyBHZXQgdGhlIHJvdW5kaW5nIGRpZ2l0IGF0IGluZGV4IGogb2Ygbi5cclxuICAgICAgICAgICAgcmQgPSBuIC8gcG93czEwW2QgLSBqIC0gMV0gJSAxMCB8IDA7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBuaSA9IG1hdGhjZWlsKChpICsgMSkgLyBMT0dfQkFTRSk7XHJcblxyXG4gICAgICAgICAgICBpZiAobmkgPj0geGMubGVuZ3RoKSB7XHJcblxyXG4gICAgICAgICAgICAgIGlmIChyKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gTmVlZGVkIGJ5IHNxcnQuXHJcbiAgICAgICAgICAgICAgICBmb3IgKDsgeGMubGVuZ3RoIDw9IG5pOyB4Yy5wdXNoKDApKTtcclxuICAgICAgICAgICAgICAgIG4gPSByZCA9IDA7XHJcbiAgICAgICAgICAgICAgICBkID0gMTtcclxuICAgICAgICAgICAgICAgIGkgJT0gTE9HX0JBU0U7XHJcbiAgICAgICAgICAgICAgICBqID0gaSAtIExPR19CQVNFICsgMTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYnJlYWsgb3V0O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBuID0gayA9IHhjW25pXTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gR2V0IHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIG4uXHJcbiAgICAgICAgICAgICAgZm9yIChkID0gMTsgayA+PSAxMDsgayAvPSAxMCwgZCsrKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gR2V0IHRoZSBpbmRleCBvZiByZCB3aXRoaW4gbi5cclxuICAgICAgICAgICAgICBpICU9IExPR19CQVNFO1xyXG5cclxuICAgICAgICAgICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHJkIHdpdGhpbiBuLCBhZGp1c3RlZCBmb3IgbGVhZGluZyB6ZXJvcy5cclxuICAgICAgICAgICAgICAvLyBUaGUgbnVtYmVyIG9mIGxlYWRpbmcgemVyb3Mgb2YgbiBpcyBnaXZlbiBieSBMT0dfQkFTRSAtIGQuXHJcbiAgICAgICAgICAgICAgaiA9IGkgLSBMT0dfQkFTRSArIGQ7XHJcblxyXG4gICAgICAgICAgICAgIC8vIEdldCB0aGUgcm91bmRpbmcgZGlnaXQgYXQgaW5kZXggaiBvZiBuLlxyXG4gICAgICAgICAgICAgIHJkID0gaiA8IDAgPyAwIDogbiAvIHBvd3MxMFtkIC0gaiAtIDFdICUgMTAgfCAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgciA9IHIgfHwgc2QgPCAwIHx8XHJcblxyXG4gICAgICAgICAgLy8gQXJlIHRoZXJlIGFueSBub24temVybyBkaWdpdHMgYWZ0ZXIgdGhlIHJvdW5kaW5nIGRpZ2l0P1xyXG4gICAgICAgICAgLy8gVGhlIGV4cHJlc3Npb24gIG4gJSBwb3dzMTBbZCAtIGogLSAxXSAgcmV0dXJucyBhbGwgZGlnaXRzIG9mIG4gdG8gdGhlIHJpZ2h0XHJcbiAgICAgICAgICAvLyBvZiB0aGUgZGlnaXQgYXQgaiwgZS5nLiBpZiBuIGlzIDkwODcxNCBhbmQgaiBpcyAyLCB0aGUgZXhwcmVzc2lvbiBnaXZlcyA3MTQuXHJcbiAgICAgICAgICAgeGNbbmkgKyAxXSAhPSBudWxsIHx8IChqIDwgMCA/IG4gOiBuICUgcG93czEwW2QgLSBqIC0gMV0pO1xyXG5cclxuICAgICAgICAgIHIgPSBybSA8IDRcclxuICAgICAgICAgICA/IChyZCB8fCByKSAmJiAocm0gPT0gMCB8fCBybSA9PSAoeC5zIDwgMCA/IDMgOiAyKSlcclxuICAgICAgICAgICA6IHJkID4gNSB8fCByZCA9PSA1ICYmIChybSA9PSA0IHx8IHIgfHwgcm0gPT0gNiAmJlxyXG5cclxuICAgICAgICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgZGlnaXQgdG8gdGhlIGxlZnQgb2YgdGhlIHJvdW5kaW5nIGRpZ2l0IGlzIG9kZC5cclxuICAgICAgICAgICAgKChpID4gMCA/IGogPiAwID8gbiAvIHBvd3MxMFtkIC0gal0gOiAwIDogeGNbbmkgLSAxXSkgJSAxMCkgJiAxIHx8XHJcbiAgICAgICAgICAgICBybSA9PSAoeC5zIDwgMCA/IDggOiA3KSk7XHJcblxyXG4gICAgICAgICAgaWYgKHNkIDwgMSB8fCAheGNbMF0pIHtcclxuICAgICAgICAgICAgeGMubGVuZ3RoID0gMDtcclxuXHJcbiAgICAgICAgICAgIGlmIChyKSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIENvbnZlcnQgc2QgdG8gZGVjaW1hbCBwbGFjZXMuXHJcbiAgICAgICAgICAgICAgc2QgLT0geC5lICsgMTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gMSwgMC4xLCAwLjAxLCAwLjAwMSwgMC4wMDAxIGV0Yy5cclxuICAgICAgICAgICAgICB4Y1swXSA9IHBvd3MxMFsoTE9HX0JBU0UgLSBzZCAlIExPR19CQVNFKSAlIExPR19CQVNFXTtcclxuICAgICAgICAgICAgICB4LmUgPSAtc2QgfHwgMDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gWmVyby5cclxuICAgICAgICAgICAgICB4Y1swXSA9IHguZSA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB4O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJlbW92ZSBleGNlc3MgZGlnaXRzLlxyXG4gICAgICAgICAgaWYgKGkgPT0gMCkge1xyXG4gICAgICAgICAgICB4Yy5sZW5ndGggPSBuaTtcclxuICAgICAgICAgICAgayA9IDE7XHJcbiAgICAgICAgICAgIG5pLS07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4Yy5sZW5ndGggPSBuaSArIDE7XHJcbiAgICAgICAgICAgIGsgPSBwb3dzMTBbTE9HX0JBU0UgLSBpXTtcclxuXHJcbiAgICAgICAgICAgIC8vIEUuZy4gNTY3MDAgYmVjb21lcyA1NjAwMCBpZiA3IGlzIHRoZSByb3VuZGluZyBkaWdpdC5cclxuICAgICAgICAgICAgLy8gaiA+IDAgbWVhbnMgaSA+IG51bWJlciBvZiBsZWFkaW5nIHplcm9zIG9mIG4uXHJcbiAgICAgICAgICAgIHhjW25pXSA9IGogPiAwID8gbWF0aGZsb29yKG4gLyBwb3dzMTBbZCAtIGpdICUgcG93czEwW2pdKSAqIGsgOiAwO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJvdW5kIHVwP1xyXG4gICAgICAgICAgaWYgKHIpIHtcclxuXHJcbiAgICAgICAgICAgIGZvciAoOyA7KSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIElmIHRoZSBkaWdpdCB0byBiZSByb3VuZGVkIHVwIGlzIGluIHRoZSBmaXJzdCBlbGVtZW50IG9mIHhjLi4uXHJcbiAgICAgICAgICAgICAgaWYgKG5pID09IDApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBpIHdpbGwgYmUgdGhlIGxlbmd0aCBvZiB4Y1swXSBiZWZvcmUgayBpcyBhZGRlZC5cclxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDEsIGogPSB4Y1swXTsgaiA+PSAxMDsgaiAvPSAxMCwgaSsrKTtcclxuICAgICAgICAgICAgICAgIGogPSB4Y1swXSArPSBrO1xyXG4gICAgICAgICAgICAgICAgZm9yIChrID0gMTsgaiA+PSAxMDsgaiAvPSAxMCwgaysrKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBpZiBpICE9IGsgdGhlIGxlbmd0aCBoYXMgaW5jcmVhc2VkLlxyXG4gICAgICAgICAgICAgICAgaWYgKGkgIT0gaykge1xyXG4gICAgICAgICAgICAgICAgICB4LmUrKztcclxuICAgICAgICAgICAgICAgICAgaWYgKHhjWzBdID09IEJBU0UpIHhjWzBdID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgeGNbbmldICs9IGs7XHJcbiAgICAgICAgICAgICAgICBpZiAoeGNbbmldICE9IEJBU0UpIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgeGNbbmktLV0gPSAwO1xyXG4gICAgICAgICAgICAgICAgayA9IDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgICAgICAgZm9yIChpID0geGMubGVuZ3RoOyB4Y1stLWldID09PSAwOyB4Yy5wb3AoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBPdmVyZmxvdz8gSW5maW5pdHkuXHJcbiAgICAgICAgaWYgKHguZSA+IE1BWF9FWFApIHtcclxuICAgICAgICAgIHguYyA9IHguZSA9IG51bGw7XHJcblxyXG4gICAgICAgIC8vIFVuZGVyZmxvdz8gWmVyby5cclxuICAgICAgICB9IGVsc2UgaWYgKHguZSA8IE1JTl9FWFApIHtcclxuICAgICAgICAgIHguYyA9IFt4LmUgPSAwXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB4O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBmdW5jdGlvbiB2YWx1ZU9mKG4pIHtcclxuICAgICAgdmFyIHN0cixcclxuICAgICAgICBlID0gbi5lO1xyXG5cclxuICAgICAgaWYgKGUgPT09IG51bGwpIHJldHVybiBuLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICBzdHIgPSBjb2VmZlRvU3RyaW5nKG4uYyk7XHJcblxyXG4gICAgICBzdHIgPSBlIDw9IFRPX0VYUF9ORUcgfHwgZSA+PSBUT19FWFBfUE9TXHJcbiAgICAgICAgPyB0b0V4cG9uZW50aWFsKHN0ciwgZSlcclxuICAgICAgICA6IHRvRml4ZWRQb2ludChzdHIsIGUsICcwJyk7XHJcblxyXG4gICAgICByZXR1cm4gbi5zIDwgMCA/ICctJyArIHN0ciA6IHN0cjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gUFJPVE9UWVBFL0lOU1RBTkNFIE1FVEhPRFNcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyLlxyXG4gICAgICovXHJcbiAgICBQLmFic29sdXRlVmFsdWUgPSBQLmFicyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIHggPSBuZXcgQmlnTnVtYmVyKHRoaXMpO1xyXG4gICAgICBpZiAoeC5zIDwgMCkgeC5zID0gMTtcclxuICAgICAgcmV0dXJuIHg7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuXHJcbiAgICAgKiAgIDEgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGdyZWF0ZXIgdGhhbiB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyKHksIGIpLFxyXG4gICAgICogICAtMSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgbGVzcyB0aGFuIHRoZSB2YWx1ZSBvZiBCaWdOdW1iZXIoeSwgYiksXHJcbiAgICAgKiAgIDAgaWYgdGhleSBoYXZlIHRoZSBzYW1lIHZhbHVlLFxyXG4gICAgICogICBvciBudWxsIGlmIHRoZSB2YWx1ZSBvZiBlaXRoZXIgaXMgTmFOLlxyXG4gICAgICovXHJcbiAgICBQLmNvbXBhcmVkVG8gPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICByZXR1cm4gY29tcGFyZSh0aGlzLCBuZXcgQmlnTnVtYmVyKHksIGIpKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBJZiBkcCBpcyB1bmRlZmluZWQgb3IgbnVsbCBvciB0cnVlIG9yIGZhbHNlLCByZXR1cm4gdGhlIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyBvZiB0aGVcclxuICAgICAqIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyLCBvciBudWxsIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyDCsUluZmluaXR5IG9yIE5hTi5cclxuICAgICAqXHJcbiAgICAgKiBPdGhlcndpc2UsIGlmIGRwIGlzIGEgbnVtYmVyLCByZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzXHJcbiAgICAgKiBCaWdOdW1iZXIgcm91bmRlZCB0byBhIG1heGltdW0gb2YgZHAgZGVjaW1hbCBwbGFjZXMgdXNpbmcgcm91bmRpbmcgbW9kZSBybSwgb3JcclxuICAgICAqIFJPVU5ESU5HX01PREUgaWYgcm0gaXMgb21pdHRlZC5cclxuICAgICAqXHJcbiAgICAgKiBbZHBdIHtudW1iZXJ9IERlY2ltYWwgcGxhY2VzOiBpbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEFyZ3VtZW50IHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtkcHxybX0nXHJcbiAgICAgKi9cclxuICAgIFAuZGVjaW1hbFBsYWNlcyA9IFAuZHAgPSBmdW5jdGlvbiAoZHAsIHJtKSB7XHJcbiAgICAgIHZhciBjLCBuLCB2LFxyXG4gICAgICAgIHggPSB0aGlzO1xyXG5cclxuICAgICAgaWYgKGRwICE9IG51bGwpIHtcclxuICAgICAgICBpbnRDaGVjayhkcCwgMCwgTUFYKTtcclxuICAgICAgICBpZiAocm0gPT0gbnVsbCkgcm0gPSBST1VORElOR19NT0RFO1xyXG4gICAgICAgIGVsc2UgaW50Q2hlY2socm0sIDAsIDgpO1xyXG5cclxuICAgICAgICByZXR1cm4gcm91bmQobmV3IEJpZ051bWJlcih4KSwgZHAgKyB4LmUgKyAxLCBybSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghKGMgPSB4LmMpKSByZXR1cm4gbnVsbDtcclxuICAgICAgbiA9ICgodiA9IGMubGVuZ3RoIC0gMSkgLSBiaXRGbG9vcih0aGlzLmUgLyBMT0dfQkFTRSkpICogTE9HX0JBU0U7XHJcblxyXG4gICAgICAvLyBTdWJ0cmFjdCB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIHplcm9zIG9mIHRoZSBsYXN0IG51bWJlci5cclxuICAgICAgaWYgKHYgPSBjW3ZdKSBmb3IgKDsgdiAlIDEwID09IDA7IHYgLz0gMTAsIG4tLSk7XHJcbiAgICAgIGlmIChuIDwgMCkgbiA9IDA7XHJcblxyXG4gICAgICByZXR1cm4gbjtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiAgbiAvIDAgPSBJXHJcbiAgICAgKiAgbiAvIE4gPSBOXHJcbiAgICAgKiAgbiAvIEkgPSAwXHJcbiAgICAgKiAgMCAvIG4gPSAwXHJcbiAgICAgKiAgMCAvIDAgPSBOXHJcbiAgICAgKiAgMCAvIE4gPSBOXHJcbiAgICAgKiAgMCAvIEkgPSAwXHJcbiAgICAgKiAgTiAvIG4gPSBOXHJcbiAgICAgKiAgTiAvIDAgPSBOXHJcbiAgICAgKiAgTiAvIE4gPSBOXHJcbiAgICAgKiAgTiAvIEkgPSBOXHJcbiAgICAgKiAgSSAvIG4gPSBJXHJcbiAgICAgKiAgSSAvIDAgPSBJXHJcbiAgICAgKiAgSSAvIE4gPSBOXHJcbiAgICAgKiAgSSAvIEkgPSBOXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgZGl2aWRlZCBieSB0aGUgdmFsdWUgb2ZcclxuICAgICAqIEJpZ051bWJlcih5LCBiKSwgcm91bmRlZCBhY2NvcmRpbmcgdG8gREVDSU1BTF9QTEFDRVMgYW5kIFJPVU5ESU5HX01PREUuXHJcbiAgICAgKi9cclxuICAgIFAuZGl2aWRlZEJ5ID0gUC5kaXYgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICByZXR1cm4gZGl2KHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYiksIERFQ0lNQUxfUExBQ0VTLCBST1VORElOR19NT0RFKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSBpbnRlZ2VyIHBhcnQgb2YgZGl2aWRpbmcgdGhlIHZhbHVlIG9mIHRoaXNcclxuICAgICAqIEJpZ051bWJlciBieSB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyKHksIGIpLlxyXG4gICAgICovXHJcbiAgICBQLmRpdmlkZWRUb0ludGVnZXJCeSA9IFAuaWRpdiA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHJldHVybiBkaXYodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSwgMCwgMSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBleHBvbmVudGlhdGVkIGJ5IG4uXHJcbiAgICAgKlxyXG4gICAgICogSWYgbSBpcyBwcmVzZW50LCByZXR1cm4gdGhlIHJlc3VsdCBtb2R1bG8gbS5cclxuICAgICAqIElmIG4gaXMgbmVnYXRpdmUgcm91bmQgYWNjb3JkaW5nIHRvIERFQ0lNQUxfUExBQ0VTIGFuZCBST1VORElOR19NT0RFLlxyXG4gICAgICogSWYgUE9XX1BSRUNJU0lPTiBpcyBub24temVybyBhbmQgbSBpcyBub3QgcHJlc2VudCwgcm91bmQgdG8gUE9XX1BSRUNJU0lPTiB1c2luZyBST1VORElOR19NT0RFLlxyXG4gICAgICpcclxuICAgICAqIFRoZSBtb2R1bGFyIHBvd2VyIG9wZXJhdGlvbiB3b3JrcyBlZmZpY2llbnRseSB3aGVuIHgsIG4sIGFuZCBtIGFyZSBpbnRlZ2Vycywgb3RoZXJ3aXNlIGl0XHJcbiAgICAgKiBpcyBlcXVpdmFsZW50IHRvIGNhbGN1bGF0aW5nIHguZXhwb25lbnRpYXRlZEJ5KG4pLm1vZHVsbyhtKSB3aXRoIGEgUE9XX1BSRUNJU0lPTiBvZiAwLlxyXG4gICAgICpcclxuICAgICAqIG4ge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfSBUaGUgZXhwb25lbnQuIEFuIGludGVnZXIuXHJcbiAgICAgKiBbbV0ge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfSBUaGUgbW9kdWx1cy5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gRXhwb25lbnQgbm90IGFuIGludGVnZXI6IHtufSdcclxuICAgICAqL1xyXG4gICAgUC5leHBvbmVudGlhdGVkQnkgPSBQLnBvdyA9IGZ1bmN0aW9uIChuLCBtKSB7XHJcbiAgICAgIHZhciBoYWxmLCBpc01vZEV4cCwgaSwgaywgbW9yZSwgbklzQmlnLCBuSXNOZWcsIG5Jc09kZCwgeSxcclxuICAgICAgICB4ID0gdGhpcztcclxuXHJcbiAgICAgIG4gPSBuZXcgQmlnTnVtYmVyKG4pO1xyXG5cclxuICAgICAgLy8gQWxsb3cgTmFOIGFuZCDCsUluZmluaXR5LCBidXQgbm90IG90aGVyIG5vbi1pbnRlZ2Vycy5cclxuICAgICAgaWYgKG4uYyAmJiAhbi5pc0ludGVnZXIoKSkge1xyXG4gICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnRXhwb25lbnQgbm90IGFuIGludGVnZXI6ICcgKyB2YWx1ZU9mKG4pKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG0gIT0gbnVsbCkgbSA9IG5ldyBCaWdOdW1iZXIobSk7XHJcblxyXG4gICAgICAvLyBFeHBvbmVudCBvZiBNQVhfU0FGRV9JTlRFR0VSIGlzIDE1LlxyXG4gICAgICBuSXNCaWcgPSBuLmUgPiAxNDtcclxuXHJcbiAgICAgIC8vIElmIHggaXMgTmFOLCDCsUluZmluaXR5LCDCsTAgb3IgwrExLCBvciBuIGlzIMKxSW5maW5pdHksIE5hTiBvciDCsTAuXHJcbiAgICAgIGlmICgheC5jIHx8ICF4LmNbMF0gfHwgeC5jWzBdID09IDEgJiYgIXguZSAmJiB4LmMubGVuZ3RoID09IDEgfHwgIW4uYyB8fCAhbi5jWzBdKSB7XHJcblxyXG4gICAgICAgIC8vIFRoZSBzaWduIG9mIHRoZSByZXN1bHQgb2YgcG93IHdoZW4geCBpcyBuZWdhdGl2ZSBkZXBlbmRzIG9uIHRoZSBldmVubmVzcyBvZiBuLlxyXG4gICAgICAgIC8vIElmICtuIG92ZXJmbG93cyB0byDCsUluZmluaXR5LCB0aGUgZXZlbm5lc3Mgb2YgbiB3b3VsZCBiZSBub3QgYmUga25vd24uXHJcbiAgICAgICAgeSA9IG5ldyBCaWdOdW1iZXIoTWF0aC5wb3coK3ZhbHVlT2YoeCksIG5Jc0JpZyA/IDIgLSBpc09kZChuKSA6ICt2YWx1ZU9mKG4pKSk7XHJcbiAgICAgICAgcmV0dXJuIG0gPyB5Lm1vZChtKSA6IHk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG5Jc05lZyA9IG4ucyA8IDA7XHJcblxyXG4gICAgICBpZiAobSkge1xyXG5cclxuICAgICAgICAvLyB4ICUgbSByZXR1cm5zIE5hTiBpZiBhYnMobSkgaXMgemVybywgb3IgbSBpcyBOYU4uXHJcbiAgICAgICAgaWYgKG0uYyA/ICFtLmNbMF0gOiAhbS5zKSByZXR1cm4gbmV3IEJpZ051bWJlcihOYU4pO1xyXG5cclxuICAgICAgICBpc01vZEV4cCA9ICFuSXNOZWcgJiYgeC5pc0ludGVnZXIoKSAmJiBtLmlzSW50ZWdlcigpO1xyXG5cclxuICAgICAgICBpZiAoaXNNb2RFeHApIHggPSB4Lm1vZChtKTtcclxuXHJcbiAgICAgIC8vIE92ZXJmbG93IHRvIMKxSW5maW5pdHk6ID49MioqMWUxMCBvciA+PTEuMDAwMDAyNCoqMWUxNS5cclxuICAgICAgLy8gVW5kZXJmbG93IHRvIMKxMDogPD0wLjc5KioxZTEwIG9yIDw9MC45OTk5OTc1KioxZTE1LlxyXG4gICAgICB9IGVsc2UgaWYgKG4uZSA+IDkgJiYgKHguZSA+IDAgfHwgeC5lIDwgLTEgfHwgKHguZSA9PSAwXHJcbiAgICAgICAgLy8gWzEsIDI0MDAwMDAwMF1cclxuICAgICAgICA/IHguY1swXSA+IDEgfHwgbklzQmlnICYmIHguY1sxXSA+PSAyNGU3XHJcbiAgICAgICAgLy8gWzgwMDAwMDAwMDAwMDAwXSAgWzk5OTk5NzUwMDAwMDAwXVxyXG4gICAgICAgIDogeC5jWzBdIDwgOGUxMyB8fCBuSXNCaWcgJiYgeC5jWzBdIDw9IDk5OTk5NzVlNykpKSB7XHJcblxyXG4gICAgICAgIC8vIElmIHggaXMgbmVnYXRpdmUgYW5kIG4gaXMgb2RkLCBrID0gLTAsIGVsc2UgayA9IDAuXHJcbiAgICAgICAgayA9IHgucyA8IDAgJiYgaXNPZGQobikgPyAtMCA6IDA7XHJcblxyXG4gICAgICAgIC8vIElmIHggPj0gMSwgayA9IMKxSW5maW5pdHkuXHJcbiAgICAgICAgaWYgKHguZSA+IC0xKSBrID0gMSAvIGs7XHJcblxyXG4gICAgICAgIC8vIElmIG4gaXMgbmVnYXRpdmUgcmV0dXJuIMKxMCwgZWxzZSByZXR1cm4gwrFJbmZpbml0eS5cclxuICAgICAgICByZXR1cm4gbmV3IEJpZ051bWJlcihuSXNOZWcgPyAxIC8gayA6IGspO1xyXG5cclxuICAgICAgfSBlbHNlIGlmIChQT1dfUFJFQ0lTSU9OKSB7XHJcblxyXG4gICAgICAgIC8vIFRydW5jYXRpbmcgZWFjaCBjb2VmZmljaWVudCBhcnJheSB0byBhIGxlbmd0aCBvZiBrIGFmdGVyIGVhY2ggbXVsdGlwbGljYXRpb25cclxuICAgICAgICAvLyBlcXVhdGVzIHRvIHRydW5jYXRpbmcgc2lnbmlmaWNhbnQgZGlnaXRzIHRvIFBPV19QUkVDSVNJT04gKyBbMjgsIDQxXSxcclxuICAgICAgICAvLyBpLmUuIHRoZXJlIHdpbGwgYmUgYSBtaW5pbXVtIG9mIDI4IGd1YXJkIGRpZ2l0cyByZXRhaW5lZC5cclxuICAgICAgICBrID0gbWF0aGNlaWwoUE9XX1BSRUNJU0lPTiAvIExPR19CQVNFICsgMik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChuSXNCaWcpIHtcclxuICAgICAgICBoYWxmID0gbmV3IEJpZ051bWJlcigwLjUpO1xyXG4gICAgICAgIGlmIChuSXNOZWcpIG4ucyA9IDE7XHJcbiAgICAgICAgbklzT2RkID0gaXNPZGQobik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaSA9IE1hdGguYWJzKCt2YWx1ZU9mKG4pKTtcclxuICAgICAgICBuSXNPZGQgPSBpICUgMjtcclxuICAgICAgfVxyXG5cclxuICAgICAgeSA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuXHJcbiAgICAgIC8vIFBlcmZvcm1zIDU0IGxvb3AgaXRlcmF0aW9ucyBmb3IgbiBvZiA5MDA3MTk5MjU0NzQwOTkxLlxyXG4gICAgICBmb3IgKDsgOykge1xyXG5cclxuICAgICAgICBpZiAobklzT2RkKSB7XHJcbiAgICAgICAgICB5ID0geS50aW1lcyh4KTtcclxuICAgICAgICAgIGlmICgheS5jKSBicmVhaztcclxuXHJcbiAgICAgICAgICBpZiAoaykge1xyXG4gICAgICAgICAgICBpZiAoeS5jLmxlbmd0aCA+IGspIHkuYy5sZW5ndGggPSBrO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChpc01vZEV4cCkge1xyXG4gICAgICAgICAgICB5ID0geS5tb2QobSk7ICAgIC8veSA9IHkubWludXMoZGl2KHksIG0sIDAsIE1PRFVMT19NT0RFKS50aW1lcyhtKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaSkge1xyXG4gICAgICAgICAgaSA9IG1hdGhmbG9vcihpIC8gMik7XHJcbiAgICAgICAgICBpZiAoaSA9PT0gMCkgYnJlYWs7XHJcbiAgICAgICAgICBuSXNPZGQgPSBpICUgMjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbiA9IG4udGltZXMoaGFsZik7XHJcbiAgICAgICAgICByb3VuZChuLCBuLmUgKyAxLCAxKTtcclxuXHJcbiAgICAgICAgICBpZiAobi5lID4gMTQpIHtcclxuICAgICAgICAgICAgbklzT2RkID0gaXNPZGQobik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpID0gK3ZhbHVlT2Yobik7XHJcbiAgICAgICAgICAgIGlmIChpID09PSAwKSBicmVhaztcclxuICAgICAgICAgICAgbklzT2RkID0gaSAlIDI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB4ID0geC50aW1lcyh4KTtcclxuXHJcbiAgICAgICAgaWYgKGspIHtcclxuICAgICAgICAgIGlmICh4LmMgJiYgeC5jLmxlbmd0aCA+IGspIHguYy5sZW5ndGggPSBrO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXNNb2RFeHApIHtcclxuICAgICAgICAgIHggPSB4Lm1vZChtKTsgICAgLy94ID0geC5taW51cyhkaXYoeCwgbSwgMCwgTU9EVUxPX01PREUpLnRpbWVzKG0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpc01vZEV4cCkgcmV0dXJuIHk7XHJcbiAgICAgIGlmIChuSXNOZWcpIHkgPSBPTkUuZGl2KHkpO1xyXG5cclxuICAgICAgcmV0dXJuIG0gPyB5Lm1vZChtKSA6IGsgPyByb3VuZCh5LCBQT1dfUFJFQ0lTSU9OLCBST1VORElOR19NT0RFLCBtb3JlKSA6IHk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgcm91bmRlZCB0byBhbiBpbnRlZ2VyXHJcbiAgICAgKiB1c2luZyByb3VuZGluZyBtb2RlIHJtLCBvciBST1VORElOR19NT0RFIGlmIHJtIGlzIG9taXR0ZWQuXHJcbiAgICAgKlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7cm19J1xyXG4gICAgICovXHJcbiAgICBQLmludGVnZXJWYWx1ZSA9IGZ1bmN0aW9uIChybSkge1xyXG4gICAgICB2YXIgbiA9IG5ldyBCaWdOdW1iZXIodGhpcyk7XHJcbiAgICAgIGlmIChybSA9PSBudWxsKSBybSA9IFJPVU5ESU5HX01PREU7XHJcbiAgICAgIGVsc2UgaW50Q2hlY2socm0sIDAsIDgpO1xyXG4gICAgICByZXR1cm4gcm91bmQobiwgbi5lICsgMSwgcm0pO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBlcXVhbCB0byB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyKHksIGIpLFxyXG4gICAgICogb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc0VxdWFsVG8gPSBQLmVxID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSkgPT09IDA7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGEgZmluaXRlIG51bWJlciwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc0Zpbml0ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuICEhdGhpcy5jO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBncmVhdGVyIHRoYW4gdGhlIHZhbHVlIG9mIEJpZ051bWJlcih5LCBiKSxcclxuICAgICAqIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNHcmVhdGVyVGhhbiA9IFAuZ3QgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICByZXR1cm4gY29tcGFyZSh0aGlzLCBuZXcgQmlnTnVtYmVyKHksIGIpKSA+IDA7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdmFsdWUgb2ZcclxuICAgICAqIEJpZ051bWJlcih5LCBiKSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc0dyZWF0ZXJUaGFuT3JFcXVhbFRvID0gUC5ndGUgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICByZXR1cm4gKGIgPSBjb21wYXJlKHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYikpKSA9PT0gMSB8fCBiID09PSAwO1xyXG5cclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgYW4gaW50ZWdlciwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc0ludGVnZXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiAhIXRoaXMuYyAmJiBiaXRGbG9vcih0aGlzLmUgLyBMT0dfQkFTRSkgPiB0aGlzLmMubGVuZ3RoIC0gMjtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgbGVzcyB0aGFuIHRoZSB2YWx1ZSBvZiBCaWdOdW1iZXIoeSwgYiksXHJcbiAgICAgKiBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICovXHJcbiAgICBQLmlzTGVzc1RoYW4gPSBQLmx0ID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSkgPCAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYiksIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNMZXNzVGhhbk9yRXF1YWxUbyA9IFAubHRlID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIChiID0gY29tcGFyZSh0aGlzLCBuZXcgQmlnTnVtYmVyKHksIGIpKSkgPT09IC0xIHx8IGIgPT09IDA7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIE5hTiwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc05hTiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuICF0aGlzLnM7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIG5lZ2F0aXZlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICovXHJcbiAgICBQLmlzTmVnYXRpdmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnMgPCAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBwb3NpdGl2ZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc1Bvc2l0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zID4gMDtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgMCBvciAtMCwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiAhIXRoaXMuYyAmJiB0aGlzLmNbMF0gPT0gMDtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiAgbiAtIDAgPSBuXHJcbiAgICAgKiAgbiAtIE4gPSBOXHJcbiAgICAgKiAgbiAtIEkgPSAtSVxyXG4gICAgICogIDAgLSBuID0gLW5cclxuICAgICAqICAwIC0gMCA9IDBcclxuICAgICAqICAwIC0gTiA9IE5cclxuICAgICAqICAwIC0gSSA9IC1JXHJcbiAgICAgKiAgTiAtIG4gPSBOXHJcbiAgICAgKiAgTiAtIDAgPSBOXHJcbiAgICAgKiAgTiAtIE4gPSBOXHJcbiAgICAgKiAgTiAtIEkgPSBOXHJcbiAgICAgKiAgSSAtIG4gPSBJXHJcbiAgICAgKiAgSSAtIDAgPSBJXHJcbiAgICAgKiAgSSAtIE4gPSBOXHJcbiAgICAgKiAgSSAtIEkgPSBOXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgbWludXMgdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYikuXHJcbiAgICAgKi9cclxuICAgIFAubWludXMgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICB2YXIgaSwgaiwgdCwgeExUeSxcclxuICAgICAgICB4ID0gdGhpcyxcclxuICAgICAgICBhID0geC5zO1xyXG5cclxuICAgICAgeSA9IG5ldyBCaWdOdW1iZXIoeSwgYik7XHJcbiAgICAgIGIgPSB5LnM7XHJcblxyXG4gICAgICAvLyBFaXRoZXIgTmFOP1xyXG4gICAgICBpZiAoIWEgfHwgIWIpIHJldHVybiBuZXcgQmlnTnVtYmVyKE5hTik7XHJcblxyXG4gICAgICAvLyBTaWducyBkaWZmZXI/XHJcbiAgICAgIGlmIChhICE9IGIpIHtcclxuICAgICAgICB5LnMgPSAtYjtcclxuICAgICAgICByZXR1cm4geC5wbHVzKHkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgeGUgPSB4LmUgLyBMT0dfQkFTRSxcclxuICAgICAgICB5ZSA9IHkuZSAvIExPR19CQVNFLFxyXG4gICAgICAgIHhjID0geC5jLFxyXG4gICAgICAgIHljID0geS5jO1xyXG5cclxuICAgICAgaWYgKCF4ZSB8fCAheWUpIHtcclxuXHJcbiAgICAgICAgLy8gRWl0aGVyIEluZmluaXR5P1xyXG4gICAgICAgIGlmICgheGMgfHwgIXljKSByZXR1cm4geGMgPyAoeS5zID0gLWIsIHkpIDogbmV3IEJpZ051bWJlcih5YyA/IHggOiBOYU4pO1xyXG5cclxuICAgICAgICAvLyBFaXRoZXIgemVybz9cclxuICAgICAgICBpZiAoIXhjWzBdIHx8ICF5Y1swXSkge1xyXG5cclxuICAgICAgICAgIC8vIFJldHVybiB5IGlmIHkgaXMgbm9uLXplcm8sIHggaWYgeCBpcyBub24temVybywgb3IgemVybyBpZiBib3RoIGFyZSB6ZXJvLlxyXG4gICAgICAgICAgcmV0dXJuIHljWzBdID8gKHkucyA9IC1iLCB5KSA6IG5ldyBCaWdOdW1iZXIoeGNbMF0gPyB4IDpcclxuXHJcbiAgICAgICAgICAgLy8gSUVFRSA3NTQgKDIwMDgpIDYuMzogbiAtIG4gPSAtMCB3aGVuIHJvdW5kaW5nIHRvIC1JbmZpbml0eVxyXG4gICAgICAgICAgIFJPVU5ESU5HX01PREUgPT0gMyA/IC0wIDogMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB4ZSA9IGJpdEZsb29yKHhlKTtcclxuICAgICAgeWUgPSBiaXRGbG9vcih5ZSk7XHJcbiAgICAgIHhjID0geGMuc2xpY2UoKTtcclxuXHJcbiAgICAgIC8vIERldGVybWluZSB3aGljaCBpcyB0aGUgYmlnZ2VyIG51bWJlci5cclxuICAgICAgaWYgKGEgPSB4ZSAtIHllKSB7XHJcblxyXG4gICAgICAgIGlmICh4TFR5ID0gYSA8IDApIHtcclxuICAgICAgICAgIGEgPSAtYTtcclxuICAgICAgICAgIHQgPSB4YztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgeWUgPSB4ZTtcclxuICAgICAgICAgIHQgPSB5YztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHQucmV2ZXJzZSgpO1xyXG5cclxuICAgICAgICAvLyBQcmVwZW5kIHplcm9zIHRvIGVxdWFsaXNlIGV4cG9uZW50cy5cclxuICAgICAgICBmb3IgKGIgPSBhOyBiLS07IHQucHVzaCgwKSk7XHJcbiAgICAgICAgdC5yZXZlcnNlKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIC8vIEV4cG9uZW50cyBlcXVhbC4gQ2hlY2sgZGlnaXQgYnkgZGlnaXQuXHJcbiAgICAgICAgaiA9ICh4TFR5ID0gKGEgPSB4Yy5sZW5ndGgpIDwgKGIgPSB5Yy5sZW5ndGgpKSA/IGEgOiBiO1xyXG5cclxuICAgICAgICBmb3IgKGEgPSBiID0gMDsgYiA8IGo7IGIrKykge1xyXG5cclxuICAgICAgICAgIGlmICh4Y1tiXSAhPSB5Y1tiXSkge1xyXG4gICAgICAgICAgICB4TFR5ID0geGNbYl0gPCB5Y1tiXTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyB4IDwgeT8gUG9pbnQgeGMgdG8gdGhlIGFycmF5IG9mIHRoZSBiaWdnZXIgbnVtYmVyLlxyXG4gICAgICBpZiAoeExUeSkgdCA9IHhjLCB4YyA9IHljLCB5YyA9IHQsIHkucyA9IC15LnM7XHJcblxyXG4gICAgICBiID0gKGogPSB5Yy5sZW5ndGgpIC0gKGkgPSB4Yy5sZW5ndGgpO1xyXG5cclxuICAgICAgLy8gQXBwZW5kIHplcm9zIHRvIHhjIGlmIHNob3J0ZXIuXHJcbiAgICAgIC8vIE5vIG5lZWQgdG8gYWRkIHplcm9zIHRvIHljIGlmIHNob3J0ZXIgYXMgc3VidHJhY3Qgb25seSBuZWVkcyB0byBzdGFydCBhdCB5Yy5sZW5ndGguXHJcbiAgICAgIGlmIChiID4gMCkgZm9yICg7IGItLTsgeGNbaSsrXSA9IDApO1xyXG4gICAgICBiID0gQkFTRSAtIDE7XHJcblxyXG4gICAgICAvLyBTdWJ0cmFjdCB5YyBmcm9tIHhjLlxyXG4gICAgICBmb3IgKDsgaiA+IGE7KSB7XHJcblxyXG4gICAgICAgIGlmICh4Y1stLWpdIDwgeWNbal0pIHtcclxuICAgICAgICAgIGZvciAoaSA9IGo7IGkgJiYgIXhjWy0taV07IHhjW2ldID0gYik7XHJcbiAgICAgICAgICAtLXhjW2ldO1xyXG4gICAgICAgICAgeGNbal0gKz0gQkFTRTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHhjW2pdIC09IHljW2pdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZW1vdmUgbGVhZGluZyB6ZXJvcyBhbmQgYWRqdXN0IGV4cG9uZW50IGFjY29yZGluZ2x5LlxyXG4gICAgICBmb3IgKDsgeGNbMF0gPT0gMDsgeGMuc3BsaWNlKDAsIDEpLCAtLXllKTtcclxuXHJcbiAgICAgIC8vIFplcm8/XHJcbiAgICAgIGlmICgheGNbMF0pIHtcclxuXHJcbiAgICAgICAgLy8gRm9sbG93aW5nIElFRUUgNzU0ICgyMDA4KSA2LjMsXHJcbiAgICAgICAgLy8gbiAtIG4gPSArMCAgYnV0ICBuIC0gbiA9IC0wICB3aGVuIHJvdW5kaW5nIHRvd2FyZHMgLUluZmluaXR5LlxyXG4gICAgICAgIHkucyA9IFJPVU5ESU5HX01PREUgPT0gMyA/IC0xIDogMTtcclxuICAgICAgICB5LmMgPSBbeS5lID0gMF07XHJcbiAgICAgICAgcmV0dXJuIHk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE5vIG5lZWQgdG8gY2hlY2sgZm9yIEluZmluaXR5IGFzICt4IC0gK3kgIT0gSW5maW5pdHkgJiYgLXggLSAteSAhPSBJbmZpbml0eVxyXG4gICAgICAvLyBmb3IgZmluaXRlIHggYW5kIHkuXHJcbiAgICAgIHJldHVybiBub3JtYWxpc2UoeSwgeGMsIHllKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiAgIG4gJSAwID0gIE5cclxuICAgICAqICAgbiAlIE4gPSAgTlxyXG4gICAgICogICBuICUgSSA9ICBuXHJcbiAgICAgKiAgIDAgJSBuID0gIDBcclxuICAgICAqICAtMCAlIG4gPSAtMFxyXG4gICAgICogICAwICUgMCA9ICBOXHJcbiAgICAgKiAgIDAgJSBOID0gIE5cclxuICAgICAqICAgMCAlIEkgPSAgMFxyXG4gICAgICogICBOICUgbiA9ICBOXHJcbiAgICAgKiAgIE4gJSAwID0gIE5cclxuICAgICAqICAgTiAlIE4gPSAgTlxyXG4gICAgICogICBOICUgSSA9ICBOXHJcbiAgICAgKiAgIEkgJSBuID0gIE5cclxuICAgICAqICAgSSAlIDAgPSAgTlxyXG4gICAgICogICBJICUgTiA9ICBOXHJcbiAgICAgKiAgIEkgJSBJID0gIE5cclxuICAgICAqXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBtb2R1bG8gdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYikuIFRoZSByZXN1bHQgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgTU9EVUxPX01PREUuXHJcbiAgICAgKi9cclxuICAgIFAubW9kdWxvID0gUC5tb2QgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICB2YXIgcSwgcyxcclxuICAgICAgICB4ID0gdGhpcztcclxuXHJcbiAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKHksIGIpO1xyXG5cclxuICAgICAgLy8gUmV0dXJuIE5hTiBpZiB4IGlzIEluZmluaXR5IG9yIE5hTiwgb3IgeSBpcyBOYU4gb3IgemVyby5cclxuICAgICAgaWYgKCF4LmMgfHwgIXkucyB8fCB5LmMgJiYgIXkuY1swXSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKE5hTik7XHJcblxyXG4gICAgICAvLyBSZXR1cm4geCBpZiB5IGlzIEluZmluaXR5IG9yIHggaXMgemVyby5cclxuICAgICAgfSBlbHNlIGlmICgheS5jIHx8IHguYyAmJiAheC5jWzBdKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdOdW1iZXIoeCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChNT0RVTE9fTU9ERSA9PSA5KSB7XHJcblxyXG4gICAgICAgIC8vIEV1Y2xpZGlhbiBkaXZpc2lvbjogcSA9IHNpZ24oeSkgKiBmbG9vcih4IC8gYWJzKHkpKVxyXG4gICAgICAgIC8vIHIgPSB4IC0gcXkgICAgd2hlcmUgIDAgPD0gciA8IGFicyh5KVxyXG4gICAgICAgIHMgPSB5LnM7XHJcbiAgICAgICAgeS5zID0gMTtcclxuICAgICAgICBxID0gZGl2KHgsIHksIDAsIDMpO1xyXG4gICAgICAgIHkucyA9IHM7XHJcbiAgICAgICAgcS5zICo9IHM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcSA9IGRpdih4LCB5LCAwLCBNT0RVTE9fTU9ERSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHkgPSB4Lm1pbnVzKHEudGltZXMoeSkpO1xyXG5cclxuICAgICAgLy8gVG8gbWF0Y2ggSmF2YVNjcmlwdCAlLCBlbnN1cmUgc2lnbiBvZiB6ZXJvIGlzIHNpZ24gb2YgZGl2aWRlbmQuXHJcbiAgICAgIGlmICgheS5jWzBdICYmIE1PRFVMT19NT0RFID09IDEpIHkucyA9IHgucztcclxuXHJcbiAgICAgIHJldHVybiB5O1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqICBuICogMCA9IDBcclxuICAgICAqICBuICogTiA9IE5cclxuICAgICAqICBuICogSSA9IElcclxuICAgICAqICAwICogbiA9IDBcclxuICAgICAqICAwICogMCA9IDBcclxuICAgICAqICAwICogTiA9IE5cclxuICAgICAqICAwICogSSA9IE5cclxuICAgICAqICBOICogbiA9IE5cclxuICAgICAqICBOICogMCA9IE5cclxuICAgICAqICBOICogTiA9IE5cclxuICAgICAqICBOICogSSA9IE5cclxuICAgICAqICBJICogbiA9IElcclxuICAgICAqICBJICogMCA9IE5cclxuICAgICAqICBJICogTiA9IE5cclxuICAgICAqICBJICogSSA9IElcclxuICAgICAqXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBtdWx0aXBsaWVkIGJ5IHRoZSB2YWx1ZVxyXG4gICAgICogb2YgQmlnTnVtYmVyKHksIGIpLlxyXG4gICAgICovXHJcbiAgICBQLm11bHRpcGxpZWRCeSA9IFAudGltZXMgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICB2YXIgYywgZSwgaSwgaiwgaywgbSwgeGNMLCB4bG8sIHhoaSwgeWNMLCB5bG8sIHloaSwgemMsXHJcbiAgICAgICAgYmFzZSwgc3FydEJhc2UsXHJcbiAgICAgICAgeCA9IHRoaXMsXHJcbiAgICAgICAgeGMgPSB4LmMsXHJcbiAgICAgICAgeWMgPSAoeSA9IG5ldyBCaWdOdW1iZXIoeSwgYikpLmM7XHJcblxyXG4gICAgICAvLyBFaXRoZXIgTmFOLCDCsUluZmluaXR5IG9yIMKxMD9cclxuICAgICAgaWYgKCF4YyB8fCAheWMgfHwgIXhjWzBdIHx8ICF5Y1swXSkge1xyXG5cclxuICAgICAgICAvLyBSZXR1cm4gTmFOIGlmIGVpdGhlciBpcyBOYU4sIG9yIG9uZSBpcyAwIGFuZCB0aGUgb3RoZXIgaXMgSW5maW5pdHkuXHJcbiAgICAgICAgaWYgKCF4LnMgfHwgIXkucyB8fCB4YyAmJiAheGNbMF0gJiYgIXljIHx8IHljICYmICF5Y1swXSAmJiAheGMpIHtcclxuICAgICAgICAgIHkuYyA9IHkuZSA9IHkucyA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHkucyAqPSB4LnM7XHJcblxyXG4gICAgICAgICAgLy8gUmV0dXJuIMKxSW5maW5pdHkgaWYgZWl0aGVyIGlzIMKxSW5maW5pdHkuXHJcbiAgICAgICAgICBpZiAoIXhjIHx8ICF5Yykge1xyXG4gICAgICAgICAgICB5LmMgPSB5LmUgPSBudWxsO1xyXG5cclxuICAgICAgICAgIC8vIFJldHVybiDCsTAgaWYgZWl0aGVyIGlzIMKxMC5cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHkuYyA9IFswXTtcclxuICAgICAgICAgICAgeS5lID0gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB5O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBlID0gYml0Rmxvb3IoeC5lIC8gTE9HX0JBU0UpICsgYml0Rmxvb3IoeS5lIC8gTE9HX0JBU0UpO1xyXG4gICAgICB5LnMgKj0geC5zO1xyXG4gICAgICB4Y0wgPSB4Yy5sZW5ndGg7XHJcbiAgICAgIHljTCA9IHljLmxlbmd0aDtcclxuXHJcbiAgICAgIC8vIEVuc3VyZSB4YyBwb2ludHMgdG8gbG9uZ2VyIGFycmF5IGFuZCB4Y0wgdG8gaXRzIGxlbmd0aC5cclxuICAgICAgaWYgKHhjTCA8IHljTCkgemMgPSB4YywgeGMgPSB5YywgeWMgPSB6YywgaSA9IHhjTCwgeGNMID0geWNMLCB5Y0wgPSBpO1xyXG5cclxuICAgICAgLy8gSW5pdGlhbGlzZSB0aGUgcmVzdWx0IGFycmF5IHdpdGggemVyb3MuXHJcbiAgICAgIGZvciAoaSA9IHhjTCArIHljTCwgemMgPSBbXTsgaS0tOyB6Yy5wdXNoKDApKTtcclxuXHJcbiAgICAgIGJhc2UgPSBCQVNFO1xyXG4gICAgICBzcXJ0QmFzZSA9IFNRUlRfQkFTRTtcclxuXHJcbiAgICAgIGZvciAoaSA9IHljTDsgLS1pID49IDA7KSB7XHJcbiAgICAgICAgYyA9IDA7XHJcbiAgICAgICAgeWxvID0geWNbaV0gJSBzcXJ0QmFzZTtcclxuICAgICAgICB5aGkgPSB5Y1tpXSAvIHNxcnRCYXNlIHwgMDtcclxuXHJcbiAgICAgICAgZm9yIChrID0geGNMLCBqID0gaSArIGs7IGogPiBpOykge1xyXG4gICAgICAgICAgeGxvID0geGNbLS1rXSAlIHNxcnRCYXNlO1xyXG4gICAgICAgICAgeGhpID0geGNba10gLyBzcXJ0QmFzZSB8IDA7XHJcbiAgICAgICAgICBtID0geWhpICogeGxvICsgeGhpICogeWxvO1xyXG4gICAgICAgICAgeGxvID0geWxvICogeGxvICsgKChtICUgc3FydEJhc2UpICogc3FydEJhc2UpICsgemNbal0gKyBjO1xyXG4gICAgICAgICAgYyA9ICh4bG8gLyBiYXNlIHwgMCkgKyAobSAvIHNxcnRCYXNlIHwgMCkgKyB5aGkgKiB4aGk7XHJcbiAgICAgICAgICB6Y1tqLS1dID0geGxvICUgYmFzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHpjW2pdID0gYztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGMpIHtcclxuICAgICAgICArK2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgemMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbm9ybWFsaXNlKHksIHpjLCBlKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBuZWdhdGVkLFxyXG4gICAgICogaS5lLiBtdWx0aXBsaWVkIGJ5IC0xLlxyXG4gICAgICovXHJcbiAgICBQLm5lZ2F0ZWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciB4ID0gbmV3IEJpZ051bWJlcih0aGlzKTtcclxuICAgICAgeC5zID0gLXgucyB8fCBudWxsO1xyXG4gICAgICByZXR1cm4geDtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiAgbiArIDAgPSBuXHJcbiAgICAgKiAgbiArIE4gPSBOXHJcbiAgICAgKiAgbiArIEkgPSBJXHJcbiAgICAgKiAgMCArIG4gPSBuXHJcbiAgICAgKiAgMCArIDAgPSAwXHJcbiAgICAgKiAgMCArIE4gPSBOXHJcbiAgICAgKiAgMCArIEkgPSBJXHJcbiAgICAgKiAgTiArIG4gPSBOXHJcbiAgICAgKiAgTiArIDAgPSBOXHJcbiAgICAgKiAgTiArIE4gPSBOXHJcbiAgICAgKiAgTiArIEkgPSBOXHJcbiAgICAgKiAgSSArIG4gPSBJXHJcbiAgICAgKiAgSSArIDAgPSBJXHJcbiAgICAgKiAgSSArIE4gPSBOXHJcbiAgICAgKiAgSSArIEkgPSBJXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgcGx1cyB0aGUgdmFsdWUgb2ZcclxuICAgICAqIEJpZ051bWJlcih5LCBiKS5cclxuICAgICAqL1xyXG4gICAgUC5wbHVzID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgdmFyIHQsXHJcbiAgICAgICAgeCA9IHRoaXMsXHJcbiAgICAgICAgYSA9IHgucztcclxuXHJcbiAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKHksIGIpO1xyXG4gICAgICBiID0geS5zO1xyXG5cclxuICAgICAgLy8gRWl0aGVyIE5hTj9cclxuICAgICAgaWYgKCFhIHx8ICFiKSByZXR1cm4gbmV3IEJpZ051bWJlcihOYU4pO1xyXG5cclxuICAgICAgLy8gU2lnbnMgZGlmZmVyP1xyXG4gICAgICAgaWYgKGEgIT0gYikge1xyXG4gICAgICAgIHkucyA9IC1iO1xyXG4gICAgICAgIHJldHVybiB4Lm1pbnVzKHkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgeGUgPSB4LmUgLyBMT0dfQkFTRSxcclxuICAgICAgICB5ZSA9IHkuZSAvIExPR19CQVNFLFxyXG4gICAgICAgIHhjID0geC5jLFxyXG4gICAgICAgIHljID0geS5jO1xyXG5cclxuICAgICAgaWYgKCF4ZSB8fCAheWUpIHtcclxuXHJcbiAgICAgICAgLy8gUmV0dXJuIMKxSW5maW5pdHkgaWYgZWl0aGVyIMKxSW5maW5pdHkuXHJcbiAgICAgICAgaWYgKCF4YyB8fCAheWMpIHJldHVybiBuZXcgQmlnTnVtYmVyKGEgLyAwKTtcclxuXHJcbiAgICAgICAgLy8gRWl0aGVyIHplcm8/XHJcbiAgICAgICAgLy8gUmV0dXJuIHkgaWYgeSBpcyBub24temVybywgeCBpZiB4IGlzIG5vbi16ZXJvLCBvciB6ZXJvIGlmIGJvdGggYXJlIHplcm8uXHJcbiAgICAgICAgaWYgKCF4Y1swXSB8fCAheWNbMF0pIHJldHVybiB5Y1swXSA/IHkgOiBuZXcgQmlnTnVtYmVyKHhjWzBdID8geCA6IGEgKiAwKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgeGUgPSBiaXRGbG9vcih4ZSk7XHJcbiAgICAgIHllID0gYml0Rmxvb3IoeWUpO1xyXG4gICAgICB4YyA9IHhjLnNsaWNlKCk7XHJcblxyXG4gICAgICAvLyBQcmVwZW5kIHplcm9zIHRvIGVxdWFsaXNlIGV4cG9uZW50cy4gRmFzdGVyIHRvIHVzZSByZXZlcnNlIHRoZW4gZG8gdW5zaGlmdHMuXHJcbiAgICAgIGlmIChhID0geGUgLSB5ZSkge1xyXG4gICAgICAgIGlmIChhID4gMCkge1xyXG4gICAgICAgICAgeWUgPSB4ZTtcclxuICAgICAgICAgIHQgPSB5YztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYSA9IC1hO1xyXG4gICAgICAgICAgdCA9IHhjO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdC5yZXZlcnNlKCk7XHJcbiAgICAgICAgZm9yICg7IGEtLTsgdC5wdXNoKDApKTtcclxuICAgICAgICB0LnJldmVyc2UoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgYSA9IHhjLmxlbmd0aDtcclxuICAgICAgYiA9IHljLmxlbmd0aDtcclxuXHJcbiAgICAgIC8vIFBvaW50IHhjIHRvIHRoZSBsb25nZXIgYXJyYXksIGFuZCBiIHRvIHRoZSBzaG9ydGVyIGxlbmd0aC5cclxuICAgICAgaWYgKGEgLSBiIDwgMCkgdCA9IHljLCB5YyA9IHhjLCB4YyA9IHQsIGIgPSBhO1xyXG5cclxuICAgICAgLy8gT25seSBzdGFydCBhZGRpbmcgYXQgeWMubGVuZ3RoIC0gMSBhcyB0aGUgZnVydGhlciBkaWdpdHMgb2YgeGMgY2FuIGJlIGlnbm9yZWQuXHJcbiAgICAgIGZvciAoYSA9IDA7IGI7KSB7XHJcbiAgICAgICAgYSA9ICh4Y1stLWJdID0geGNbYl0gKyB5Y1tiXSArIGEpIC8gQkFTRSB8IDA7XHJcbiAgICAgICAgeGNbYl0gPSBCQVNFID09PSB4Y1tiXSA/IDAgOiB4Y1tiXSAlIEJBU0U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChhKSB7XHJcbiAgICAgICAgeGMgPSBbYV0uY29uY2F0KHhjKTtcclxuICAgICAgICArK3llO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBObyBuZWVkIHRvIGNoZWNrIGZvciB6ZXJvLCBhcyAreCArICt5ICE9IDAgJiYgLXggKyAteSAhPSAwXHJcbiAgICAgIC8vIHllID0gTUFYX0VYUCArIDEgcG9zc2libGVcclxuICAgICAgcmV0dXJuIG5vcm1hbGlzZSh5LCB4YywgeWUpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIElmIHNkIGlzIHVuZGVmaW5lZCBvciBudWxsIG9yIHRydWUgb3IgZmFsc2UsIHJldHVybiB0aGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBvZlxyXG4gICAgICogdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyLCBvciBudWxsIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyDCsUluZmluaXR5IG9yIE5hTi5cclxuICAgICAqIElmIHNkIGlzIHRydWUgaW5jbHVkZSBpbnRlZ2VyLXBhcnQgdHJhaWxpbmcgemVyb3MgaW4gdGhlIGNvdW50LlxyXG4gICAgICpcclxuICAgICAqIE90aGVyd2lzZSwgaWYgc2QgaXMgYSBudW1iZXIsIHJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXNcclxuICAgICAqIEJpZ051bWJlciByb3VuZGVkIHRvIGEgbWF4aW11bSBvZiBzZCBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBybSwgb3JcclxuICAgICAqIFJPVU5ESU5HX01PREUgaWYgcm0gaXMgb21pdHRlZC5cclxuICAgICAqXHJcbiAgICAgKiBzZCB7bnVtYmVyfGJvb2xlYW59IG51bWJlcjogc2lnbmlmaWNhbnQgZGlnaXRzOiBpbnRlZ2VyLCAxIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW46IHdoZXRoZXIgdG8gY291bnQgaW50ZWdlci1wYXJ0IHRyYWlsaW5nIHplcm9zOiB0cnVlIG9yIGZhbHNlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7c2R8cm19J1xyXG4gICAgICovXHJcbiAgICBQLnByZWNpc2lvbiA9IFAuc2QgPSBmdW5jdGlvbiAoc2QsIHJtKSB7XHJcbiAgICAgIHZhciBjLCBuLCB2LFxyXG4gICAgICAgIHggPSB0aGlzO1xyXG5cclxuICAgICAgaWYgKHNkICE9IG51bGwgJiYgc2QgIT09ICEhc2QpIHtcclxuICAgICAgICBpbnRDaGVjayhzZCwgMSwgTUFYKTtcclxuICAgICAgICBpZiAocm0gPT0gbnVsbCkgcm0gPSBST1VORElOR19NT0RFO1xyXG4gICAgICAgIGVsc2UgaW50Q2hlY2socm0sIDAsIDgpO1xyXG5cclxuICAgICAgICByZXR1cm4gcm91bmQobmV3IEJpZ051bWJlcih4KSwgc2QsIHJtKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCEoYyA9IHguYykpIHJldHVybiBudWxsO1xyXG4gICAgICB2ID0gYy5sZW5ndGggLSAxO1xyXG4gICAgICBuID0gdiAqIExPR19CQVNFICsgMTtcclxuXHJcbiAgICAgIGlmICh2ID0gY1t2XSkge1xyXG5cclxuICAgICAgICAvLyBTdWJ0cmFjdCB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIHplcm9zIG9mIHRoZSBsYXN0IGVsZW1lbnQuXHJcbiAgICAgICAgZm9yICg7IHYgJSAxMCA9PSAwOyB2IC89IDEwLCBuLS0pO1xyXG5cclxuICAgICAgICAvLyBBZGQgdGhlIG51bWJlciBvZiBkaWdpdHMgb2YgdGhlIGZpcnN0IGVsZW1lbnQuXHJcbiAgICAgICAgZm9yICh2ID0gY1swXTsgdiA+PSAxMDsgdiAvPSAxMCwgbisrKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHNkICYmIHguZSArIDEgPiBuKSBuID0geC5lICsgMTtcclxuXHJcbiAgICAgIHJldHVybiBuO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIHNoaWZ0ZWQgYnkgayBwbGFjZXNcclxuICAgICAqIChwb3dlcnMgb2YgMTApLiBTaGlmdCB0byB0aGUgcmlnaHQgaWYgbiA+IDAsIGFuZCB0byB0aGUgbGVmdCBpZiBuIDwgMC5cclxuICAgICAqXHJcbiAgICAgKiBrIHtudW1iZXJ9IEludGVnZXIsIC1NQVhfU0FGRV9JTlRFR0VSIHRvIE1BWF9TQUZFX0lOVEVHRVIgaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7a30nXHJcbiAgICAgKi9cclxuICAgIFAuc2hpZnRlZEJ5ID0gZnVuY3Rpb24gKGspIHtcclxuICAgICAgaW50Q2hlY2soaywgLU1BWF9TQUZFX0lOVEVHRVIsIE1BWF9TQUZFX0lOVEVHRVIpO1xyXG4gICAgICByZXR1cm4gdGhpcy50aW1lcygnMWUnICsgayk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIHNxcnQoLW4pID0gIE5cclxuICAgICAqICBzcXJ0KE4pID0gIE5cclxuICAgICAqICBzcXJ0KC1JKSA9ICBOXHJcbiAgICAgKiAgc3FydChJKSA9ICBJXHJcbiAgICAgKiAgc3FydCgwKSA9ICAwXHJcbiAgICAgKiAgc3FydCgtMCkgPSAtMFxyXG4gICAgICpcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHNxdWFyZSByb290IG9mIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlcixcclxuICAgICAqIHJvdW5kZWQgYWNjb3JkaW5nIHRvIERFQ0lNQUxfUExBQ0VTIGFuZCBST1VORElOR19NT0RFLlxyXG4gICAgICovXHJcbiAgICBQLnNxdWFyZVJvb3QgPSBQLnNxcnQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBtLCBuLCByLCByZXAsIHQsXHJcbiAgICAgICAgeCA9IHRoaXMsXHJcbiAgICAgICAgYyA9IHguYyxcclxuICAgICAgICBzID0geC5zLFxyXG4gICAgICAgIGUgPSB4LmUsXHJcbiAgICAgICAgZHAgPSBERUNJTUFMX1BMQUNFUyArIDQsXHJcbiAgICAgICAgaGFsZiA9IG5ldyBCaWdOdW1iZXIoJzAuNScpO1xyXG5cclxuICAgICAgLy8gTmVnYXRpdmUvTmFOL0luZmluaXR5L3plcm8/XHJcbiAgICAgIGlmIChzICE9PSAxIHx8ICFjIHx8ICFjWzBdKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdOdW1iZXIoIXMgfHwgcyA8IDAgJiYgKCFjIHx8IGNbMF0pID8gTmFOIDogYyA/IHggOiAxIC8gMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEluaXRpYWwgZXN0aW1hdGUuXHJcbiAgICAgIHMgPSBNYXRoLnNxcnQoK3ZhbHVlT2YoeCkpO1xyXG5cclxuICAgICAgLy8gTWF0aC5zcXJ0IHVuZGVyZmxvdy9vdmVyZmxvdz9cclxuICAgICAgLy8gUGFzcyB4IHRvIE1hdGguc3FydCBhcyBpbnRlZ2VyLCB0aGVuIGFkanVzdCB0aGUgZXhwb25lbnQgb2YgdGhlIHJlc3VsdC5cclxuICAgICAgaWYgKHMgPT0gMCB8fCBzID09IDEgLyAwKSB7XHJcbiAgICAgICAgbiA9IGNvZWZmVG9TdHJpbmcoYyk7XHJcbiAgICAgICAgaWYgKChuLmxlbmd0aCArIGUpICUgMiA9PSAwKSBuICs9ICcwJztcclxuICAgICAgICBzID0gTWF0aC5zcXJ0KCtuKTtcclxuICAgICAgICBlID0gYml0Rmxvb3IoKGUgKyAxKSAvIDIpIC0gKGUgPCAwIHx8IGUgJSAyKTtcclxuXHJcbiAgICAgICAgaWYgKHMgPT0gMSAvIDApIHtcclxuICAgICAgICAgIG4gPSAnNWUnICsgZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbiA9IHMudG9FeHBvbmVudGlhbCgpO1xyXG4gICAgICAgICAgbiA9IG4uc2xpY2UoMCwgbi5pbmRleE9mKCdlJykgKyAxKSArIGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByID0gbmV3IEJpZ051bWJlcihuKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByID0gbmV3IEJpZ051bWJlcihzICsgJycpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDaGVjayBmb3IgemVyby5cclxuICAgICAgLy8gciBjb3VsZCBiZSB6ZXJvIGlmIE1JTl9FWFAgaXMgY2hhbmdlZCBhZnRlciB0aGUgdGhpcyB2YWx1ZSB3YXMgY3JlYXRlZC5cclxuICAgICAgLy8gVGhpcyB3b3VsZCBjYXVzZSBhIGRpdmlzaW9uIGJ5IHplcm8gKHgvdCkgYW5kIGhlbmNlIEluZmluaXR5IGJlbG93LCB3aGljaCB3b3VsZCBjYXVzZVxyXG4gICAgICAvLyBjb2VmZlRvU3RyaW5nIHRvIHRocm93LlxyXG4gICAgICBpZiAoci5jWzBdKSB7XHJcbiAgICAgICAgZSA9IHIuZTtcclxuICAgICAgICBzID0gZSArIGRwO1xyXG4gICAgICAgIGlmIChzIDwgMykgcyA9IDA7XHJcblxyXG4gICAgICAgIC8vIE5ld3Rvbi1SYXBoc29uIGl0ZXJhdGlvbi5cclxuICAgICAgICBmb3IgKDsgOykge1xyXG4gICAgICAgICAgdCA9IHI7XHJcbiAgICAgICAgICByID0gaGFsZi50aW1lcyh0LnBsdXMoZGl2KHgsIHQsIGRwLCAxKSkpO1xyXG5cclxuICAgICAgICAgIGlmIChjb2VmZlRvU3RyaW5nKHQuYykuc2xpY2UoMCwgcykgPT09IChuID0gY29lZmZUb1N0cmluZyhyLmMpKS5zbGljZSgwLCBzKSkge1xyXG5cclxuICAgICAgICAgICAgLy8gVGhlIGV4cG9uZW50IG9mIHIgbWF5IGhlcmUgYmUgb25lIGxlc3MgdGhhbiB0aGUgZmluYWwgcmVzdWx0IGV4cG9uZW50LFxyXG4gICAgICAgICAgICAvLyBlLmcgMC4wMDA5OTk5IChlLTQpIC0tPiAwLjAwMSAoZS0zKSwgc28gYWRqdXN0IHMgc28gdGhlIHJvdW5kaW5nIGRpZ2l0c1xyXG4gICAgICAgICAgICAvLyBhcmUgaW5kZXhlZCBjb3JyZWN0bHkuXHJcbiAgICAgICAgICAgIGlmIChyLmUgPCBlKSAtLXM7XHJcbiAgICAgICAgICAgIG4gPSBuLnNsaWNlKHMgLSAzLCBzICsgMSk7XHJcblxyXG4gICAgICAgICAgICAvLyBUaGUgNHRoIHJvdW5kaW5nIGRpZ2l0IG1heSBiZSBpbiBlcnJvciBieSAtMSBzbyBpZiB0aGUgNCByb3VuZGluZyBkaWdpdHNcclxuICAgICAgICAgICAgLy8gYXJlIDk5OTkgb3IgNDk5OSAoaS5lLiBhcHByb2FjaGluZyBhIHJvdW5kaW5nIGJvdW5kYXJ5KSBjb250aW51ZSB0aGVcclxuICAgICAgICAgICAgLy8gaXRlcmF0aW9uLlxyXG4gICAgICAgICAgICBpZiAobiA9PSAnOTk5OScgfHwgIXJlcCAmJiBuID09ICc0OTk5Jykge1xyXG5cclxuICAgICAgICAgICAgICAvLyBPbiB0aGUgZmlyc3QgaXRlcmF0aW9uIG9ubHksIGNoZWNrIHRvIHNlZSBpZiByb3VuZGluZyB1cCBnaXZlcyB0aGVcclxuICAgICAgICAgICAgICAvLyBleGFjdCByZXN1bHQgYXMgdGhlIG5pbmVzIG1heSBpbmZpbml0ZWx5IHJlcGVhdC5cclxuICAgICAgICAgICAgICBpZiAoIXJlcCkge1xyXG4gICAgICAgICAgICAgICAgcm91bmQodCwgdC5lICsgREVDSU1BTF9QTEFDRVMgKyAyLCAwKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodC50aW1lcyh0KS5lcSh4KSkge1xyXG4gICAgICAgICAgICAgICAgICByID0gdDtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBkcCArPSA0O1xyXG4gICAgICAgICAgICAgIHMgKz0gNDtcclxuICAgICAgICAgICAgICByZXAgPSAxO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAvLyBJZiByb3VuZGluZyBkaWdpdHMgYXJlIG51bGwsIDB7MCw0fSBvciA1MHswLDN9LCBjaGVjayBmb3IgZXhhY3RcclxuICAgICAgICAgICAgICAvLyByZXN1bHQuIElmIG5vdCwgdGhlbiB0aGVyZSBhcmUgZnVydGhlciBkaWdpdHMgYW5kIG0gd2lsbCBiZSB0cnV0aHkuXHJcbiAgICAgICAgICAgICAgaWYgKCErbiB8fCAhK24uc2xpY2UoMSkgJiYgbi5jaGFyQXQoMCkgPT0gJzUnKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gVHJ1bmNhdGUgdG8gdGhlIGZpcnN0IHJvdW5kaW5nIGRpZ2l0LlxyXG4gICAgICAgICAgICAgICAgcm91bmQociwgci5lICsgREVDSU1BTF9QTEFDRVMgKyAyLCAxKTtcclxuICAgICAgICAgICAgICAgIG0gPSAhci50aW1lcyhyKS5lcSh4KTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gcm91bmQociwgci5lICsgREVDSU1BTF9QTEFDRVMgKyAxLCBST1VORElOR19NT0RFLCBtKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpbiBleHBvbmVudGlhbCBub3RhdGlvbiBhbmRcclxuICAgICAqIHJvdW5kZWQgdXNpbmcgUk9VTkRJTkdfTU9ERSB0byBkcCBmaXhlZCBkZWNpbWFsIHBsYWNlcy5cclxuICAgICAqXHJcbiAgICAgKiBbZHBdIHtudW1iZXJ9IERlY2ltYWwgcGxhY2VzLiBJbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEFyZ3VtZW50IHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtkcHxybX0nXHJcbiAgICAgKi9cclxuICAgIFAudG9FeHBvbmVudGlhbCA9IGZ1bmN0aW9uIChkcCwgcm0pIHtcclxuICAgICAgaWYgKGRwICE9IG51bGwpIHtcclxuICAgICAgICBpbnRDaGVjayhkcCwgMCwgTUFYKTtcclxuICAgICAgICBkcCsrO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmb3JtYXQodGhpcywgZHAsIHJtLCAxKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpbiBmaXhlZC1wb2ludCBub3RhdGlvbiByb3VuZGluZ1xyXG4gICAgICogdG8gZHAgZml4ZWQgZGVjaW1hbCBwbGFjZXMgdXNpbmcgcm91bmRpbmcgbW9kZSBybSwgb3IgUk9VTkRJTkdfTU9ERSBpZiBybSBpcyBvbWl0dGVkLlxyXG4gICAgICpcclxuICAgICAqIE5vdGU6IGFzIHdpdGggSmF2YVNjcmlwdCdzIG51bWJlciB0eXBlLCAoLTApLnRvRml4ZWQoMCkgaXMgJzAnLFxyXG4gICAgICogYnV0IGUuZy4gKC0wLjAwMDAxKS50b0ZpeGVkKDApIGlzICctMCcuXHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB8cm19J1xyXG4gICAgICovXHJcbiAgICBQLnRvRml4ZWQgPSBmdW5jdGlvbiAoZHAsIHJtKSB7XHJcbiAgICAgIGlmIChkcCAhPSBudWxsKSB7XHJcbiAgICAgICAgaW50Q2hlY2soZHAsIDAsIE1BWCk7XHJcbiAgICAgICAgZHAgPSBkcCArIHRoaXMuZSArIDE7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZvcm1hdCh0aGlzLCBkcCwgcm0pO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGluIGZpeGVkLXBvaW50IG5vdGF0aW9uIHJvdW5kZWRcclxuICAgICAqIHVzaW5nIHJtIG9yIFJPVU5ESU5HX01PREUgdG8gZHAgZGVjaW1hbCBwbGFjZXMsIGFuZCBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBwcm9wZXJ0aWVzXHJcbiAgICAgKiBvZiB0aGUgZm9ybWF0IG9yIEZPUk1BVCBvYmplY3QgKHNlZSBCaWdOdW1iZXIuc2V0KS5cclxuICAgICAqXHJcbiAgICAgKiBUaGUgZm9ybWF0dGluZyBvYmplY3QgbWF5IGNvbnRhaW4gc29tZSBvciBhbGwgb2YgdGhlIHByb3BlcnRpZXMgc2hvd24gYmVsb3cuXHJcbiAgICAgKlxyXG4gICAgICogRk9STUFUID0ge1xyXG4gICAgICogICBwcmVmaXg6ICcnLFxyXG4gICAgICogICBncm91cFNpemU6IDMsXHJcbiAgICAgKiAgIHNlY29uZGFyeUdyb3VwU2l6ZTogMCxcclxuICAgICAqICAgZ3JvdXBTZXBhcmF0b3I6ICcsJyxcclxuICAgICAqICAgZGVjaW1hbFNlcGFyYXRvcjogJy4nLFxyXG4gICAgICogICBmcmFjdGlvbkdyb3VwU2l6ZTogMCxcclxuICAgICAqICAgZnJhY3Rpb25Hcm91cFNlcGFyYXRvcjogJ1xceEEwJywgICAgICAvLyBub24tYnJlYWtpbmcgc3BhY2VcclxuICAgICAqICAgc3VmZml4OiAnJ1xyXG4gICAgICogfTtcclxuICAgICAqXHJcbiAgICAgKiBbZHBdIHtudW1iZXJ9IERlY2ltYWwgcGxhY2VzLiBJbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICAgKiBbZm9ybWF0XSB7b2JqZWN0fSBGb3JtYXR0aW5nIG9wdGlvbnMuIFNlZSBGT1JNQVQgcGJqZWN0IGFib3ZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB8cm19J1xyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEFyZ3VtZW50IG5vdCBhbiBvYmplY3Q6IHtmb3JtYXR9J1xyXG4gICAgICovXHJcbiAgICBQLnRvRm9ybWF0ID0gZnVuY3Rpb24gKGRwLCBybSwgZm9ybWF0KSB7XHJcbiAgICAgIHZhciBzdHIsXHJcbiAgICAgICAgeCA9IHRoaXM7XHJcblxyXG4gICAgICBpZiAoZm9ybWF0ID09IG51bGwpIHtcclxuICAgICAgICBpZiAoZHAgIT0gbnVsbCAmJiBybSAmJiB0eXBlb2Ygcm0gPT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIGZvcm1hdCA9IHJtO1xyXG4gICAgICAgICAgcm0gPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZHAgJiYgdHlwZW9mIGRwID09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBmb3JtYXQgPSBkcDtcclxuICAgICAgICAgIGRwID0gcm0gPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmb3JtYXQgPSBGT1JNQVQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmb3JtYXQgIT0gJ29iamVjdCcpIHtcclxuICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ0FyZ3VtZW50IG5vdCBhbiBvYmplY3Q6ICcgKyBmb3JtYXQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHIgPSB4LnRvRml4ZWQoZHAsIHJtKTtcclxuXHJcbiAgICAgIGlmICh4LmMpIHtcclxuICAgICAgICB2YXIgaSxcclxuICAgICAgICAgIGFyciA9IHN0ci5zcGxpdCgnLicpLFxyXG4gICAgICAgICAgZzEgPSArZm9ybWF0Lmdyb3VwU2l6ZSxcclxuICAgICAgICAgIGcyID0gK2Zvcm1hdC5zZWNvbmRhcnlHcm91cFNpemUsXHJcbiAgICAgICAgICBncm91cFNlcGFyYXRvciA9IGZvcm1hdC5ncm91cFNlcGFyYXRvciB8fCAnJyxcclxuICAgICAgICAgIGludFBhcnQgPSBhcnJbMF0sXHJcbiAgICAgICAgICBmcmFjdGlvblBhcnQgPSBhcnJbMV0sXHJcbiAgICAgICAgICBpc05lZyA9IHgucyA8IDAsXHJcbiAgICAgICAgICBpbnREaWdpdHMgPSBpc05lZyA/IGludFBhcnQuc2xpY2UoMSkgOiBpbnRQYXJ0LFxyXG4gICAgICAgICAgbGVuID0gaW50RGlnaXRzLmxlbmd0aDtcclxuXHJcbiAgICAgICAgaWYgKGcyKSBpID0gZzEsIGcxID0gZzIsIGcyID0gaSwgbGVuIC09IGk7XHJcblxyXG4gICAgICAgIGlmIChnMSA+IDAgJiYgbGVuID4gMCkge1xyXG4gICAgICAgICAgaSA9IGxlbiAlIGcxIHx8IGcxO1xyXG4gICAgICAgICAgaW50UGFydCA9IGludERpZ2l0cy5zdWJzdHIoMCwgaSk7XHJcbiAgICAgICAgICBmb3IgKDsgaSA8IGxlbjsgaSArPSBnMSkgaW50UGFydCArPSBncm91cFNlcGFyYXRvciArIGludERpZ2l0cy5zdWJzdHIoaSwgZzEpO1xyXG4gICAgICAgICAgaWYgKGcyID4gMCkgaW50UGFydCArPSBncm91cFNlcGFyYXRvciArIGludERpZ2l0cy5zbGljZShpKTtcclxuICAgICAgICAgIGlmIChpc05lZykgaW50UGFydCA9ICctJyArIGludFBhcnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdHIgPSBmcmFjdGlvblBhcnRcclxuICAgICAgICAgPyBpbnRQYXJ0ICsgKGZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yIHx8ICcnKSArICgoZzIgPSArZm9ybWF0LmZyYWN0aW9uR3JvdXBTaXplKVxyXG4gICAgICAgICAgPyBmcmFjdGlvblBhcnQucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxcZHsnICsgZzIgKyAnfVxcXFxCJywgJ2cnKSxcclxuICAgICAgICAgICAnJCYnICsgKGZvcm1hdC5mcmFjdGlvbkdyb3VwU2VwYXJhdG9yIHx8ICcnKSlcclxuICAgICAgICAgIDogZnJhY3Rpb25QYXJ0KVxyXG4gICAgICAgICA6IGludFBhcnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiAoZm9ybWF0LnByZWZpeCB8fCAnJykgKyBzdHIgKyAoZm9ybWF0LnN1ZmZpeCB8fCAnJyk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGFuIGFycmF5IG9mIHR3byBCaWdOdW1iZXJzIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgYXMgYSBzaW1wbGVcclxuICAgICAqIGZyYWN0aW9uIHdpdGggYW4gaW50ZWdlciBudW1lcmF0b3IgYW5kIGFuIGludGVnZXIgZGVub21pbmF0b3IuXHJcbiAgICAgKiBUaGUgZGVub21pbmF0b3Igd2lsbCBiZSBhIHBvc2l0aXZlIG5vbi16ZXJvIHZhbHVlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgc3BlY2lmaWVkXHJcbiAgICAgKiBtYXhpbXVtIGRlbm9taW5hdG9yLiBJZiBhIG1heGltdW0gZGVub21pbmF0b3IgaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlbm9taW5hdG9yIHdpbGwgYmVcclxuICAgICAqIHRoZSBsb3dlc3QgdmFsdWUgbmVjZXNzYXJ5IHRvIHJlcHJlc2VudCB0aGUgbnVtYmVyIGV4YWN0bHkuXHJcbiAgICAgKlxyXG4gICAgICogW21kXSB7bnVtYmVyfHN0cmluZ3xCaWdOdW1iZXJ9IEludGVnZXIgPj0gMSwgb3IgSW5maW5pdHkuIFRoZSBtYXhpbXVtIGRlbm9taW5hdG9yLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfSA6IHttZH0nXHJcbiAgICAgKi9cclxuICAgIFAudG9GcmFjdGlvbiA9IGZ1bmN0aW9uIChtZCkge1xyXG4gICAgICB2YXIgZCwgZDAsIGQxLCBkMiwgZSwgZXhwLCBuLCBuMCwgbjEsIHEsIHIsIHMsXHJcbiAgICAgICAgeCA9IHRoaXMsXHJcbiAgICAgICAgeGMgPSB4LmM7XHJcblxyXG4gICAgICBpZiAobWQgIT0gbnVsbCkge1xyXG4gICAgICAgIG4gPSBuZXcgQmlnTnVtYmVyKG1kKTtcclxuXHJcbiAgICAgICAgLy8gVGhyb3cgaWYgbWQgaXMgbGVzcyB0aGFuIG9uZSBvciBpcyBub3QgYW4gaW50ZWdlciwgdW5sZXNzIGl0IGlzIEluZmluaXR5LlxyXG4gICAgICAgIGlmICghbi5pc0ludGVnZXIoKSAmJiAobi5jIHx8IG4ucyAhPT0gMSkgfHwgbi5sdChPTkUpKSB7XHJcbiAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnQXJndW1lbnQgJyArXHJcbiAgICAgICAgICAgICAgKG4uaXNJbnRlZ2VyKCkgPyAnb3V0IG9mIHJhbmdlOiAnIDogJ25vdCBhbiBpbnRlZ2VyOiAnKSArIHZhbHVlT2YobikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF4YykgcmV0dXJuIG5ldyBCaWdOdW1iZXIoeCk7XHJcblxyXG4gICAgICBkID0gbmV3IEJpZ051bWJlcihPTkUpO1xyXG4gICAgICBuMSA9IGQwID0gbmV3IEJpZ051bWJlcihPTkUpO1xyXG4gICAgICBkMSA9IG4wID0gbmV3IEJpZ051bWJlcihPTkUpO1xyXG4gICAgICBzID0gY29lZmZUb1N0cmluZyh4Yyk7XHJcblxyXG4gICAgICAvLyBEZXRlcm1pbmUgaW5pdGlhbCBkZW5vbWluYXRvci5cclxuICAgICAgLy8gZCBpcyBhIHBvd2VyIG9mIDEwIGFuZCB0aGUgbWluaW11bSBtYXggZGVub21pbmF0b3IgdGhhdCBzcGVjaWZpZXMgdGhlIHZhbHVlIGV4YWN0bHkuXHJcbiAgICAgIGUgPSBkLmUgPSBzLmxlbmd0aCAtIHguZSAtIDE7XHJcbiAgICAgIGQuY1swXSA9IFBPV1NfVEVOWyhleHAgPSBlICUgTE9HX0JBU0UpIDwgMCA/IExPR19CQVNFICsgZXhwIDogZXhwXTtcclxuICAgICAgbWQgPSAhbWQgfHwgbi5jb21wYXJlZFRvKGQpID4gMCA/IChlID4gMCA/IGQgOiBuMSkgOiBuO1xyXG5cclxuICAgICAgZXhwID0gTUFYX0VYUDtcclxuICAgICAgTUFYX0VYUCA9IDEgLyAwO1xyXG4gICAgICBuID0gbmV3IEJpZ051bWJlcihzKTtcclxuXHJcbiAgICAgIC8vIG4wID0gZDEgPSAwXHJcbiAgICAgIG4wLmNbMF0gPSAwO1xyXG5cclxuICAgICAgZm9yICg7IDspICB7XHJcbiAgICAgICAgcSA9IGRpdihuLCBkLCAwLCAxKTtcclxuICAgICAgICBkMiA9IGQwLnBsdXMocS50aW1lcyhkMSkpO1xyXG4gICAgICAgIGlmIChkMi5jb21wYXJlZFRvKG1kKSA9PSAxKSBicmVhaztcclxuICAgICAgICBkMCA9IGQxO1xyXG4gICAgICAgIGQxID0gZDI7XHJcbiAgICAgICAgbjEgPSBuMC5wbHVzKHEudGltZXMoZDIgPSBuMSkpO1xyXG4gICAgICAgIG4wID0gZDI7XHJcbiAgICAgICAgZCA9IG4ubWludXMocS50aW1lcyhkMiA9IGQpKTtcclxuICAgICAgICBuID0gZDI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGQyID0gZGl2KG1kLm1pbnVzKGQwKSwgZDEsIDAsIDEpO1xyXG4gICAgICBuMCA9IG4wLnBsdXMoZDIudGltZXMobjEpKTtcclxuICAgICAgZDAgPSBkMC5wbHVzKGQyLnRpbWVzKGQxKSk7XHJcbiAgICAgIG4wLnMgPSBuMS5zID0geC5zO1xyXG4gICAgICBlID0gZSAqIDI7XHJcblxyXG4gICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggZnJhY3Rpb24gaXMgY2xvc2VyIHRvIHgsIG4wL2QwIG9yIG4xL2QxXHJcbiAgICAgIHIgPSBkaXYobjEsIGQxLCBlLCBST1VORElOR19NT0RFKS5taW51cyh4KS5hYnMoKS5jb21wYXJlZFRvKFxyXG4gICAgICAgICAgZGl2KG4wLCBkMCwgZSwgUk9VTkRJTkdfTU9ERSkubWludXMoeCkuYWJzKCkpIDwgMSA/IFtuMSwgZDFdIDogW24wLCBkMF07XHJcblxyXG4gICAgICBNQVhfRVhQID0gZXhwO1xyXG5cclxuICAgICAgcmV0dXJuIHI7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBjb252ZXJ0ZWQgdG8gYSBudW1iZXIgcHJpbWl0aXZlLlxyXG4gICAgICovXHJcbiAgICBQLnRvTnVtYmVyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gK3ZhbHVlT2YodGhpcyk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgcm91bmRlZCB0byBzZCBzaWduaWZpY2FudCBkaWdpdHNcclxuICAgICAqIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0gb3IgUk9VTkRJTkdfTU9ERS4gSWYgc2QgaXMgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgZGlnaXRzXHJcbiAgICAgKiBuZWNlc3NhcnkgdG8gcmVwcmVzZW50IHRoZSBpbnRlZ2VyIHBhcnQgb2YgdGhlIHZhbHVlIGluIGZpeGVkLXBvaW50IG5vdGF0aW9uLCB0aGVuIHVzZVxyXG4gICAgICogZXhwb25lbnRpYWwgbm90YXRpb24uXHJcbiAgICAgKlxyXG4gICAgICogW3NkXSB7bnVtYmVyfSBTaWduaWZpY2FudCBkaWdpdHMuIEludGVnZXIsIDEgdG8gTUFYIGluY2x1c2l2ZS5cclxuICAgICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3NkfHJtfSdcclxuICAgICAqL1xyXG4gICAgUC50b1ByZWNpc2lvbiA9IGZ1bmN0aW9uIChzZCwgcm0pIHtcclxuICAgICAgaWYgKHNkICE9IG51bGwpIGludENoZWNrKHNkLCAxLCBNQVgpO1xyXG4gICAgICByZXR1cm4gZm9ybWF0KHRoaXMsIHNkLCBybSwgMik7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaW4gYmFzZSBiLCBvciBiYXNlIDEwIGlmIGIgaXNcclxuICAgICAqIG9taXR0ZWQuIElmIGEgYmFzZSBpcyBzcGVjaWZpZWQsIGluY2x1ZGluZyBiYXNlIDEwLCByb3VuZCBhY2NvcmRpbmcgdG8gREVDSU1BTF9QTEFDRVMgYW5kXHJcbiAgICAgKiBST1VORElOR19NT0RFLiBJZiBhIGJhc2UgaXMgbm90IHNwZWNpZmllZCwgYW5kIHRoaXMgQmlnTnVtYmVyIGhhcyBhIHBvc2l0aXZlIGV4cG9uZW50XHJcbiAgICAgKiB0aGF0IGlzIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiBUT19FWFBfUE9TLCBvciBhIG5lZ2F0aXZlIGV4cG9uZW50IGVxdWFsIHRvIG9yIGxlc3MgdGhhblxyXG4gICAgICogVE9fRVhQX05FRywgcmV0dXJuIGV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICpcclxuICAgICAqIFtiXSB7bnVtYmVyfSBJbnRlZ2VyLCAyIHRvIEFMUEhBQkVULmxlbmd0aCBpbmNsdXNpdmUuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEJhc2Uge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2J9J1xyXG4gICAgICovXHJcbiAgICBQLnRvU3RyaW5nID0gZnVuY3Rpb24gKGIpIHtcclxuICAgICAgdmFyIHN0cixcclxuICAgICAgICBuID0gdGhpcyxcclxuICAgICAgICBzID0gbi5zLFxyXG4gICAgICAgIGUgPSBuLmU7XHJcblxyXG4gICAgICAvLyBJbmZpbml0eSBvciBOYU4/XHJcbiAgICAgIGlmIChlID09PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHMpIHtcclxuICAgICAgICAgIHN0ciA9ICdJbmZpbml0eSc7XHJcbiAgICAgICAgICBpZiAocyA8IDApIHN0ciA9ICctJyArIHN0cjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc3RyID0gJ05hTic7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChiID09IG51bGwpIHtcclxuICAgICAgICAgIHN0ciA9IGUgPD0gVE9fRVhQX05FRyB8fCBlID49IFRPX0VYUF9QT1NcclxuICAgICAgICAgICA/IHRvRXhwb25lbnRpYWwoY29lZmZUb1N0cmluZyhuLmMpLCBlKVxyXG4gICAgICAgICAgIDogdG9GaXhlZFBvaW50KGNvZWZmVG9TdHJpbmcobi5jKSwgZSwgJzAnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGIgPT09IDEwKSB7XHJcbiAgICAgICAgICBuID0gcm91bmQobmV3IEJpZ051bWJlcihuKSwgREVDSU1BTF9QTEFDRVMgKyBlICsgMSwgUk9VTkRJTkdfTU9ERSk7XHJcbiAgICAgICAgICBzdHIgPSB0b0ZpeGVkUG9pbnQoY29lZmZUb1N0cmluZyhuLmMpLCBuLmUsICcwJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGludENoZWNrKGIsIDIsIEFMUEhBQkVULmxlbmd0aCwgJ0Jhc2UnKTtcclxuICAgICAgICAgIHN0ciA9IGNvbnZlcnRCYXNlKHRvRml4ZWRQb2ludChjb2VmZlRvU3RyaW5nKG4uYyksIGUsICcwJyksIDEwLCBiLCBzLCB0cnVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzIDwgMCAmJiBuLmNbMF0pIHN0ciA9ICctJyArIHN0cjtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHN0cjtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYXMgdG9TdHJpbmcsIGJ1dCBkbyBub3QgYWNjZXB0IGEgYmFzZSBhcmd1bWVudCwgYW5kIGluY2x1ZGUgdGhlIG1pbnVzIHNpZ24gZm9yXHJcbiAgICAgKiBuZWdhdGl2ZSB6ZXJvLlxyXG4gICAgICovXHJcbiAgICBQLnZhbHVlT2YgPSBQLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlT2YodGhpcyk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICBQLl9pc0JpZ051bWJlciA9IHRydWU7XHJcblxyXG4gICAgaWYgKGNvbmZpZ09iamVjdCAhPSBudWxsKSBCaWdOdW1iZXIuc2V0KGNvbmZpZ09iamVjdCk7XHJcblxyXG4gICAgcmV0dXJuIEJpZ051bWJlcjtcclxuICB9XHJcblxyXG5cclxuICAvLyBQUklWQVRFIEhFTFBFUiBGVU5DVElPTlNcclxuXHJcbiAgLy8gVGhlc2UgZnVuY3Rpb25zIGRvbid0IG5lZWQgYWNjZXNzIHRvIHZhcmlhYmxlcyxcclxuICAvLyBlLmcuIERFQ0lNQUxfUExBQ0VTLCBpbiB0aGUgc2NvcGUgb2YgdGhlIGBjbG9uZWAgZnVuY3Rpb24gYWJvdmUuXHJcblxyXG5cclxuICBmdW5jdGlvbiBiaXRGbG9vcihuKSB7XHJcbiAgICB2YXIgaSA9IG4gfCAwO1xyXG4gICAgcmV0dXJuIG4gPiAwIHx8IG4gPT09IGkgPyBpIDogaSAtIDE7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gUmV0dXJuIGEgY29lZmZpY2llbnQgYXJyYXkgYXMgYSBzdHJpbmcgb2YgYmFzZSAxMCBkaWdpdHMuXHJcbiAgZnVuY3Rpb24gY29lZmZUb1N0cmluZyhhKSB7XHJcbiAgICB2YXIgcywgeixcclxuICAgICAgaSA9IDEsXHJcbiAgICAgIGogPSBhLmxlbmd0aCxcclxuICAgICAgciA9IGFbMF0gKyAnJztcclxuXHJcbiAgICBmb3IgKDsgaSA8IGo7KSB7XHJcbiAgICAgIHMgPSBhW2krK10gKyAnJztcclxuICAgICAgeiA9IExPR19CQVNFIC0gcy5sZW5ndGg7XHJcbiAgICAgIGZvciAoOyB6LS07IHMgPSAnMCcgKyBzKTtcclxuICAgICAgciArPSBzO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIERldGVybWluZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgIGZvciAoaiA9IHIubGVuZ3RoOyByLmNoYXJDb2RlQXQoLS1qKSA9PT0gNDg7KTtcclxuXHJcbiAgICByZXR1cm4gci5zbGljZSgwLCBqICsgMSB8fCAxKTtcclxuICB9XHJcblxyXG5cclxuICAvLyBDb21wYXJlIHRoZSB2YWx1ZSBvZiBCaWdOdW1iZXJzIHggYW5kIHkuXHJcbiAgZnVuY3Rpb24gY29tcGFyZSh4LCB5KSB7XHJcbiAgICB2YXIgYSwgYixcclxuICAgICAgeGMgPSB4LmMsXHJcbiAgICAgIHljID0geS5jLFxyXG4gICAgICBpID0geC5zLFxyXG4gICAgICBqID0geS5zLFxyXG4gICAgICBrID0geC5lLFxyXG4gICAgICBsID0geS5lO1xyXG5cclxuICAgIC8vIEVpdGhlciBOYU4/XHJcbiAgICBpZiAoIWkgfHwgIWopIHJldHVybiBudWxsO1xyXG5cclxuICAgIGEgPSB4YyAmJiAheGNbMF07XHJcbiAgICBiID0geWMgJiYgIXljWzBdO1xyXG5cclxuICAgIC8vIEVpdGhlciB6ZXJvP1xyXG4gICAgaWYgKGEgfHwgYikgcmV0dXJuIGEgPyBiID8gMCA6IC1qIDogaTtcclxuXHJcbiAgICAvLyBTaWducyBkaWZmZXI/XHJcbiAgICBpZiAoaSAhPSBqKSByZXR1cm4gaTtcclxuXHJcbiAgICBhID0gaSA8IDA7XHJcbiAgICBiID0gayA9PSBsO1xyXG5cclxuICAgIC8vIEVpdGhlciBJbmZpbml0eT9cclxuICAgIGlmICgheGMgfHwgIXljKSByZXR1cm4gYiA/IDAgOiAheGMgXiBhID8gMSA6IC0xO1xyXG5cclxuICAgIC8vIENvbXBhcmUgZXhwb25lbnRzLlxyXG4gICAgaWYgKCFiKSByZXR1cm4gayA+IGwgXiBhID8gMSA6IC0xO1xyXG5cclxuICAgIGogPSAoayA9IHhjLmxlbmd0aCkgPCAobCA9IHljLmxlbmd0aCkgPyBrIDogbDtcclxuXHJcbiAgICAvLyBDb21wYXJlIGRpZ2l0IGJ5IGRpZ2l0LlxyXG4gICAgZm9yIChpID0gMDsgaSA8IGo7IGkrKykgaWYgKHhjW2ldICE9IHljW2ldKSByZXR1cm4geGNbaV0gPiB5Y1tpXSBeIGEgPyAxIDogLTE7XHJcblxyXG4gICAgLy8gQ29tcGFyZSBsZW5ndGhzLlxyXG4gICAgcmV0dXJuIGsgPT0gbCA/IDAgOiBrID4gbCBeIGEgPyAxIDogLTE7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBDaGVjayB0aGF0IG4gaXMgYSBwcmltaXRpdmUgbnVtYmVyLCBhbiBpbnRlZ2VyLCBhbmQgaW4gcmFuZ2UsIG90aGVyd2lzZSB0aHJvdy5cclxuICAgKi9cclxuICBmdW5jdGlvbiBpbnRDaGVjayhuLCBtaW4sIG1heCwgbmFtZSkge1xyXG4gICAgaWYgKG4gPCBtaW4gfHwgbiA+IG1heCB8fCBuICE9PSBtYXRoZmxvb3IobikpIHtcclxuICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgIChiaWdudW1iZXJFcnJvciArIChuYW1lIHx8ICdBcmd1bWVudCcpICsgKHR5cGVvZiBuID09ICdudW1iZXInXHJcbiAgICAgICAgID8gbiA8IG1pbiB8fCBuID4gbWF4ID8gJyBvdXQgb2YgcmFuZ2U6ICcgOiAnIG5vdCBhbiBpbnRlZ2VyOiAnXHJcbiAgICAgICAgIDogJyBub3QgYSBwcmltaXRpdmUgbnVtYmVyOiAnKSArIFN0cmluZyhuKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gQXNzdW1lcyBmaW5pdGUgbi5cclxuICBmdW5jdGlvbiBpc09kZChuKSB7XHJcbiAgICB2YXIgayA9IG4uYy5sZW5ndGggLSAxO1xyXG4gICAgcmV0dXJuIGJpdEZsb29yKG4uZSAvIExPR19CQVNFKSA9PSBrICYmIG4uY1trXSAlIDIgIT0gMDtcclxuICB9XHJcblxyXG5cclxuICBmdW5jdGlvbiB0b0V4cG9uZW50aWFsKHN0ciwgZSkge1xyXG4gICAgcmV0dXJuIChzdHIubGVuZ3RoID4gMSA/IHN0ci5jaGFyQXQoMCkgKyAnLicgKyBzdHIuc2xpY2UoMSkgOiBzdHIpICtcclxuICAgICAoZSA8IDAgPyAnZScgOiAnZSsnKSArIGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgZnVuY3Rpb24gdG9GaXhlZFBvaW50KHN0ciwgZSwgeikge1xyXG4gICAgdmFyIGxlbiwgenM7XHJcblxyXG4gICAgLy8gTmVnYXRpdmUgZXhwb25lbnQ/XHJcbiAgICBpZiAoZSA8IDApIHtcclxuXHJcbiAgICAgIC8vIFByZXBlbmQgemVyb3MuXHJcbiAgICAgIGZvciAoenMgPSB6ICsgJy4nOyArK2U7IHpzICs9IHopO1xyXG4gICAgICBzdHIgPSB6cyArIHN0cjtcclxuXHJcbiAgICAvLyBQb3NpdGl2ZSBleHBvbmVudFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGVuID0gc3RyLmxlbmd0aDtcclxuXHJcbiAgICAgIC8vIEFwcGVuZCB6ZXJvcy5cclxuICAgICAgaWYgKCsrZSA+IGxlbikge1xyXG4gICAgICAgIGZvciAoenMgPSB6LCBlIC09IGxlbjsgLS1lOyB6cyArPSB6KTtcclxuICAgICAgICBzdHIgKz0genM7XHJcbiAgICAgIH0gZWxzZSBpZiAoZSA8IGxlbikge1xyXG4gICAgICAgIHN0ciA9IHN0ci5zbGljZSgwLCBlKSArICcuJyArIHN0ci5zbGljZShlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdHI7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gRVhQT1JUXHJcblxyXG5cclxuICBCaWdOdW1iZXIgPSBjbG9uZSgpO1xyXG4gIEJpZ051bWJlclsnZGVmYXVsdCddID0gQmlnTnVtYmVyLkJpZ051bWJlciA9IEJpZ051bWJlcjtcclxuXHJcbiAgLy8gQU1ELlxyXG4gIGlmICh0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xyXG4gICAgZGVmaW5lKGZ1bmN0aW9uICgpIHsgcmV0dXJuIEJpZ051bWJlcjsgfSk7XHJcblxyXG4gIC8vIE5vZGUuanMgYW5kIG90aGVyIGVudmlyb25tZW50cyB0aGF0IHN1cHBvcnQgbW9kdWxlLmV4cG9ydHMuXHJcbiAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XHJcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJpZ051bWJlcjtcclxuXHJcbiAgLy8gQnJvd3Nlci5cclxuICB9IGVsc2Uge1xyXG4gICAgaWYgKCFnbG9iYWxPYmplY3QpIHtcclxuICAgICAgZ2xvYmFsT2JqZWN0ID0gdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZiA/IHNlbGYgOiB3aW5kb3c7XHJcbiAgICB9XHJcblxyXG4gICAgZ2xvYmFsT2JqZWN0LkJpZ051bWJlciA9IEJpZ051bWJlcjtcclxuICB9XHJcbn0pKHRoaXMpO1xyXG4iLCIoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gVXRpbHNcbiAgZnVuY3Rpb24gYXNzZXJ0ICh2YWwsIG1zZykge1xuICAgIGlmICghdmFsKSB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG4gIH1cblxuICAvLyBDb3VsZCB1c2UgYGluaGVyaXRzYCBtb2R1bGUsIGJ1dCBkb24ndCB3YW50IHRvIG1vdmUgZnJvbSBzaW5nbGUgZmlsZVxuICAvLyBhcmNoaXRlY3R1cmUgeWV0LlxuICBmdW5jdGlvbiBpbmhlcml0cyAoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3I7XG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge307XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZTtcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpO1xuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvcjtcbiAgfVxuXG4gIC8vIEJOXG5cbiAgZnVuY3Rpb24gQk4gKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKEJOLmlzQk4obnVtYmVyKSkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB0aGlzLndvcmRzID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICAvLyBSZWR1Y3Rpb24gY29udGV4dFxuICAgIHRoaXMucmVkID0gbnVsbDtcblxuICAgIGlmIChudW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGlmIChiYXNlID09PSAnbGUnIHx8IGJhc2UgPT09ICdiZScpIHtcbiAgICAgICAgZW5kaWFuID0gYmFzZTtcbiAgICAgICAgYmFzZSA9IDEwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbml0KG51bWJlciB8fCAwLCBiYXNlIHx8IDEwLCBlbmRpYW4gfHwgJ2JlJyk7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gQk47XG4gIH0gZWxzZSB7XG4gICAgZXhwb3J0cy5CTiA9IEJOO1xuICB9XG5cbiAgQk4uQk4gPSBCTjtcbiAgQk4ud29yZFNpemUgPSAyNjtcblxuICB2YXIgQnVmZmVyO1xuICB0cnkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIEJ1ZmZlciA9IHdpbmRvdy5CdWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPCBudW1iZXIubGVuZ3RoKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gMTYpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VIZXgobnVtYmVyLCBzdGFydCwgZW5kaWFuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3BhcnNlQmFzZShudW1iZXIsIGJhc2UsIHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXROdW1iZXIgPSBmdW5jdGlvbiBfaW5pdE51bWJlciAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICBudW1iZXIgPSAtbnVtYmVyO1xuICAgIH1cbiAgICBpZiAobnVtYmVyIDwgMHg0MDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW251bWJlciAmIDB4M2ZmZmZmZl07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPCAweDEwMDAwMDAwMDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobnVtYmVyIDwgMHgyMDAwMDAwMDAwMDAwMCk7IC8vIDIgXiA1MyAodW5zYWZlKVxuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZixcbiAgICAgICAgMVxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICAvLyBSZXZlcnNlIHRoZSBieXRlc1xuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXRBcnJheSA9IGZ1bmN0aW9uIF9pbml0QXJyYXkgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgLy8gUGVyaGFwcyBhIFVpbnQ4QXJyYXlcbiAgICBhc3NlcnQodHlwZW9mIG51bWJlci5sZW5ndGggPT09ICdudW1iZXInKTtcbiAgICBpZiAobnVtYmVyLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWzBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwobnVtYmVyLmxlbmd0aCAvIDMpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGosIHc7XG4gICAgdmFyIG9mZiA9IDA7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDEsIGogPSAwOyBpID49IDA7IGkgLT0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpIC0gMV0gPDwgOCkgfCAobnVtYmVyW2kgLSAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSArIDFdIDw8IDgpIHwgKG51bWJlcltpICsgMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4NEJpdHMgKHN0cmluZywgaW5kZXgpIHtcbiAgICB2YXIgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAvLyAnMCcgLSAnOSdcbiAgICBpZiAoYyA+PSA0OCAmJiBjIDw9IDU3KSB7XG4gICAgICByZXR1cm4gYyAtIDQ4O1xuICAgIC8vICdBJyAtICdGJ1xuICAgIH0gZWxzZSBpZiAoYyA+PSA2NSAmJiBjIDw9IDcwKSB7XG4gICAgICByZXR1cm4gYyAtIDU1O1xuICAgIC8vICdhJyAtICdmJ1xuICAgIH0gZWxzZSBpZiAoYyA+PSA5NyAmJiBjIDw9IDEwMikge1xuICAgICAgcmV0dXJuIGMgLSA4NztcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KGZhbHNlLCAnSW52YWxpZCBjaGFyYWN0ZXIgaW4gJyArIHN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXhCeXRlIChzdHJpbmcsIGxvd2VyQm91bmQsIGluZGV4KSB7XG4gICAgdmFyIHIgPSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXgpO1xuICAgIGlmIChpbmRleCAtIDEgPj0gbG93ZXJCb3VuZCkge1xuICAgICAgciB8PSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXggLSAxKSA8PCA0O1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VIZXggPSBmdW5jdGlvbiBfcGFyc2VIZXggKG51bWJlciwgc3RhcnQsIGVuZGlhbikge1xuICAgIC8vIENyZWF0ZSBwb3NzaWJseSBiaWdnZXIgYXJyYXkgdG8gZW5zdXJlIHRoYXQgaXQgZml0cyB0aGUgbnVtYmVyXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwoKG51bWJlci5sZW5ndGggLSBzdGFydCkgLyA2KTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIC8vIDI0LWJpdHMgY2h1bmtzXG4gICAgdmFyIG9mZiA9IDA7XG4gICAgdmFyIGogPSAwO1xuXG4gICAgdmFyIHc7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IGkgLT0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYXJzZUxlbmd0aCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICAgIGZvciAoaSA9IHBhcnNlTGVuZ3RoICUgMiA9PT0gMCA/IHN0YXJ0ICsgMSA6IHN0YXJ0OyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlQmFzZSAoc3RyLCBzdGFydCwgZW5kLCBtdWwpIHtcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIGIgPSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3KSB7XG4gICAgICAgIGIgPSBjIC0gMTcgKyAweGE7XG5cbiAgICAgIC8vICcwJyAtICc5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYiA9IGM7XG4gICAgICB9XG4gICAgICBhc3NlcnQoYyA+PSAwICYmIGIgPCBtdWwsICdJbnZhbGlkIGNoYXJhY3RlcicpO1xuICAgICAgciArPSBiO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VCYXNlID0gZnVuY3Rpb24gX3BhcnNlQmFzZSAobnVtYmVyLCBiYXNlLCBzdGFydCkge1xuICAgIC8vIEluaXRpYWxpemUgYXMgemVyb1xuICAgIHRoaXMud29yZHMgPSBbMF07XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuXG4gICAgLy8gRmluZCBsZW5ndGggb2YgbGltYiBpbiBiYXNlXG4gICAgZm9yICh2YXIgbGltYkxlbiA9IDAsIGxpbWJQb3cgPSAxOyBsaW1iUG93IDw9IDB4M2ZmZmZmZjsgbGltYlBvdyAqPSBiYXNlKSB7XG4gICAgICBsaW1iTGVuKys7XG4gICAgfVxuICAgIGxpbWJMZW4tLTtcbiAgICBsaW1iUG93ID0gKGxpbWJQb3cgLyBiYXNlKSB8IDA7XG5cbiAgICB2YXIgdG90YWwgPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgdmFyIG1vZCA9IHRvdGFsICUgbGltYkxlbjtcbiAgICB2YXIgZW5kID0gTWF0aC5taW4odG90YWwsIHRvdGFsIC0gbW9kKSArIHN0YXJ0O1xuXG4gICAgdmFyIHdvcmQgPSAwO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSBsaW1iTGVuKSB7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgaSArIGxpbWJMZW4sIGJhc2UpO1xuXG4gICAgICB0aGlzLmltdWxuKGxpbWJQb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2QgIT09IDApIHtcbiAgICAgIHZhciBwb3cgPSAxO1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIG51bWJlci5sZW5ndGgsIGJhc2UpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbW9kOyBpKyspIHtcbiAgICAgICAgcG93ICo9IGJhc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW11bG4ocG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBmdW5jdGlvbiBtb3ZlIChkZXN0LCBzcmMpIHtcbiAgICBkZXN0LndvcmRzID0gc3JjLndvcmRzO1xuICAgIGRlc3QubGVuZ3RoID0gc3JjLmxlbmd0aDtcbiAgICBkZXN0Lm5lZ2F0aXZlID0gc3JjLm5lZ2F0aXZlO1xuICAgIGRlc3QucmVkID0gc3JjLnJlZDtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uIF9tb3ZlIChkZXN0KSB7XG4gICAgbW92ZShkZXN0LCB0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLl9zdHJpcCA9IGZ1bmN0aW9uIHN0cmlwICgpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPiAxICYmIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9ub3JtU2lnbiA9IGZ1bmN0aW9uIF9ub3JtU2lnbiAoKSB7XG4gICAgLy8gLTAgPSAwXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBDaGVjayBTeW1ib2wuZm9yIGJlY2F1c2Ugbm90IGV2ZXJ5d2hlcmUgd2hlcmUgU3ltYm9sIGRlZmluZWRcbiAgLy8gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N5bWJvbCNCcm93c2VyX2NvbXBhdGliaWxpdHlcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBTeW1ib2wuZm9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgIEJOLnByb3RvdHlwZVtTeW1ib2wuZm9yKCdub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbScpXSA9IGluc3BlY3Q7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgQk4ucHJvdG90eXBlLmluc3BlY3QgPSBpbnNwZWN0O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBCTi5wcm90b3R5cGUuaW5zcGVjdCA9IGluc3BlY3Q7XG4gIH1cblxuICBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICByZXR1cm4gKHRoaXMucmVkID8gJzxCTi1SOiAnIDogJzxCTjogJykgKyB0aGlzLnRvU3RyaW5nKDE2KSArICc+JztcbiAgfVxuXG4gIC8qXG5cbiAgdmFyIHplcm9zID0gW107XG4gIHZhciBncm91cFNpemVzID0gW107XG4gIHZhciBncm91cEJhc2VzID0gW107XG5cbiAgdmFyIHMgPSAnJztcbiAgdmFyIGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IEJOLndvcmRTaXplKSB7XG4gICAgemVyb3NbaV0gPSBzO1xuICAgIHMgKz0gJzAnO1xuICB9XG4gIGdyb3VwU2l6ZXNbMF0gPSAwO1xuICBncm91cFNpemVzWzFdID0gMDtcbiAgZ3JvdXBCYXNlc1swXSA9IDA7XG4gIGdyb3VwQmFzZXNbMV0gPSAwO1xuICB2YXIgYmFzZSA9IDIgLSAxO1xuICB3aGlsZSAoKytiYXNlIDwgMzYgKyAxKSB7XG4gICAgdmFyIGdyb3VwU2l6ZSA9IDA7XG4gICAgdmFyIGdyb3VwQmFzZSA9IDE7XG4gICAgd2hpbGUgKGdyb3VwQmFzZSA8ICgxIDw8IEJOLndvcmRTaXplKSAvIGJhc2UpIHtcbiAgICAgIGdyb3VwQmFzZSAqPSBiYXNlO1xuICAgICAgZ3JvdXBTaXplICs9IDE7XG4gICAgfVxuICAgIGdyb3VwU2l6ZXNbYmFzZV0gPSBncm91cFNpemU7XG4gICAgZ3JvdXBCYXNlc1tiYXNlXSA9IGdyb3VwQmFzZTtcbiAgfVxuXG4gICovXG5cbiAgdmFyIHplcm9zID0gW1xuICAgICcnLFxuICAgICcwJyxcbiAgICAnMDAnLFxuICAgICcwMDAnLFxuICAgICcwMDAwJyxcbiAgICAnMDAwMDAnLFxuICAgICcwMDAwMDAnLFxuICAgICcwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJ1xuICBdO1xuXG4gIHZhciBncm91cFNpemVzID0gW1xuICAgIDAsIDAsXG4gICAgMjUsIDE2LCAxMiwgMTEsIDEwLCA5LCA4LFxuICAgIDgsIDcsIDcsIDcsIDcsIDYsIDYsXG4gICAgNiwgNiwgNiwgNiwgNiwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDVcbiAgXTtcblxuICB2YXIgZ3JvdXBCYXNlcyA9IFtcbiAgICAwLCAwLFxuICAgIDMzNTU0NDMyLCA0MzA0NjcyMSwgMTY3NzcyMTYsIDQ4ODI4MTI1LCA2MDQ2NjE3NiwgNDAzNTM2MDcsIDE2Nzc3MjE2LFxuICAgIDQzMDQ2NzIxLCAxMDAwMDAwMCwgMTk0ODcxNzEsIDM1ODMxODA4LCA2Mjc0ODUxNywgNzUyOTUzNiwgMTEzOTA2MjUsXG4gICAgMTY3NzcyMTYsIDI0MTM3NTY5LCAzNDAxMjIyNCwgNDcwNDU4ODEsIDY0MDAwMDAwLCA0MDg0MTAxLCA1MTUzNjMyLFxuICAgIDY0MzYzNDMsIDc5NjI2MjQsIDk3NjU2MjUsIDExODgxMzc2LCAxNDM0ODkwNywgMTcyMTAzNjgsIDIwNTExMTQ5LFxuICAgIDI0MzAwMDAwLCAyODYyOTE1MSwgMzM1NTQ0MzIsIDM5MTM1MzkzLCA0NTQzNTQyNCwgNTI1MjE4NzUsIDYwNDY2MTc2XG4gIF07XG5cbiAgQk4ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKGJhc2UsIHBhZGRpbmcpIHtcbiAgICBiYXNlID0gYmFzZSB8fCAxMDtcbiAgICBwYWRkaW5nID0gcGFkZGluZyB8IDAgfHwgMTtcblxuICAgIHZhciBvdXQ7XG4gICAgaWYgKGJhc2UgPT09IDE2IHx8IGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBvZmYgPSAwO1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV07XG4gICAgICAgIHZhciB3b3JkID0gKCgodyA8PCBvZmYpIHwgY2FycnkpICYgMHhmZmZmZmYpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgY2FycnkgPSAodyA+Pj4gKDI0IC0gb2ZmKSkgJiAweGZmZmZmZjtcbiAgICAgICAgaWYgKGNhcnJ5ICE9PSAwIHx8IGkgIT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIG91dCA9IHplcm9zWzYgLSB3b3JkLmxlbmd0aF0gKyB3b3JkICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHdvcmQgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgb2ZmICs9IDI7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgICAgb3V0ID0gY2FycnkudG9TdHJpbmcoMTYpICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpIHtcbiAgICAgIC8vIHZhciBncm91cFNpemUgPSBNYXRoLmZsb29yKEJOLndvcmRTaXplICogTWF0aC5MTjIgLyBNYXRoLmxvZyhiYXNlKSk7XG4gICAgICB2YXIgZ3JvdXBTaXplID0gZ3JvdXBTaXplc1tiYXNlXTtcbiAgICAgIC8vIHZhciBncm91cEJhc2UgPSBNYXRoLnBvdyhiYXNlLCBncm91cFNpemUpO1xuICAgICAgdmFyIGdyb3VwQmFzZSA9IGdyb3VwQmFzZXNbYmFzZV07XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBjID0gdGhpcy5jbG9uZSgpO1xuICAgICAgYy5uZWdhdGl2ZSA9IDA7XG4gICAgICB3aGlsZSAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgdmFyIHIgPSBjLm1vZHJuKGdyb3VwQmFzZSkudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIGMgPSBjLmlkaXZuKGdyb3VwQmFzZSk7XG5cbiAgICAgICAgaWYgKCFjLmlzWmVybygpKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbZ3JvdXBTaXplIC0gci5sZW5ndGhdICsgciArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSByICsgb3V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBhc3NlcnQoZmFsc2UsICdCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Jyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvTnVtYmVyID0gZnVuY3Rpb24gdG9OdW1iZXIgKCkge1xuICAgIHZhciByZXQgPSB0aGlzLndvcmRzWzBdO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0ICs9IHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA9PT0gMyAmJiB0aGlzLndvcmRzWzJdID09PSAweDAxKSB7XG4gICAgICAvLyBOT1RFOiBhdCB0aGlzIHN0YWdlIGl0IGlzIGtub3duIHRoYXQgdGhlIHRvcCBiaXQgaXMgc2V0XG4gICAgICByZXQgKz0gMHgxMDAwMDAwMDAwMDAwMCArICh0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gMikge1xuICAgICAgYXNzZXJ0KGZhbHNlLCAnTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzJyk7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgPyAtcmV0IDogcmV0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKDE2LCAyKTtcbiAgfTtcblxuICBpZiAoQnVmZmVyKSB7XG4gICAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgICB9O1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiB0b0FycmF5IChlbmRpYW4sIGxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgdmFyIGFsbG9jYXRlID0gZnVuY3Rpb24gYWxsb2NhdGUgKEFycmF5VHlwZSwgc2l6ZSkge1xuICAgIGlmIChBcnJheVR5cGUuYWxsb2NVbnNhZmUpIHtcbiAgICAgIHJldHVybiBBcnJheVR5cGUuYWxsb2NVbnNhZmUoc2l6ZSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQXJyYXlUeXBlKHNpemUpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5TGlrZSA9IGZ1bmN0aW9uIHRvQXJyYXlMaWtlIChBcnJheVR5cGUsIGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgdGhpcy5fc3RyaXAoKTtcblxuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHZhciByZXMgPSBhbGxvY2F0ZShBcnJheVR5cGUsIHJlcUxlbmd0aCk7XG4gICAgdmFyIHBvc3RmaXggPSBlbmRpYW4gPT09ICdsZScgPyAnTEUnIDogJ0JFJztcbiAgICB0aGlzWydfdG9BcnJheUxpa2UnICsgcG9zdGZpeF0ocmVzLCBieXRlTGVuZ3RoKTtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fdG9BcnJheUxpa2VMRSA9IGZ1bmN0aW9uIF90b0FycmF5TGlrZUxFIChyZXMsIGJ5dGVMZW5ndGgpIHtcbiAgICB2YXIgcG9zaXRpb24gPSAwO1xuICAgIHZhciBjYXJyeSA9IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMCwgc2hpZnQgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHdvcmQgPSAodGhpcy53b3Jkc1tpXSA8PCBzaGlmdCkgfCBjYXJyeTtcblxuICAgICAgcmVzW3Bvc2l0aW9uKytdID0gd29yZCAmIDB4ZmY7XG4gICAgICBpZiAocG9zaXRpb24gPCByZXMubGVuZ3RoKSB7XG4gICAgICAgIHJlc1twb3NpdGlvbisrXSA9ICh3b3JkID4+IDgpICYgMHhmZjtcbiAgICAgIH1cbiAgICAgIGlmIChwb3NpdGlvbiA8IHJlcy5sZW5ndGgpIHtcbiAgICAgICAgcmVzW3Bvc2l0aW9uKytdID0gKHdvcmQgPj4gMTYpICYgMHhmZjtcbiAgICAgIH1cblxuICAgICAgaWYgKHNoaWZ0ID09PSA2KSB7XG4gICAgICAgIGlmIChwb3NpdGlvbiA8IHJlcy5sZW5ndGgpIHtcbiAgICAgICAgICByZXNbcG9zaXRpb24rK10gPSAod29yZCA+PiAyNCkgJiAweGZmO1xuICAgICAgICB9XG4gICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgICAgc2hpZnQgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3b3JkID4+PiAyNDtcbiAgICAgICAgc2hpZnQgKz0gMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gPCByZXMubGVuZ3RoKSB7XG4gICAgICByZXNbcG9zaXRpb24rK10gPSBjYXJyeTtcblxuICAgICAgd2hpbGUgKHBvc2l0aW9uIDwgcmVzLmxlbmd0aCkge1xuICAgICAgICByZXNbcG9zaXRpb24rK10gPSAwO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX3RvQXJyYXlMaWtlQkUgPSBmdW5jdGlvbiBfdG9BcnJheUxpa2VCRSAocmVzLCBieXRlTGVuZ3RoKSB7XG4gICAgdmFyIHBvc2l0aW9uID0gcmVzLmxlbmd0aCAtIDE7XG4gICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgIGZvciAodmFyIGkgPSAwLCBzaGlmdCA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgd29yZCA9ICh0aGlzLndvcmRzW2ldIDw8IHNoaWZ0KSB8IGNhcnJ5O1xuXG4gICAgICByZXNbcG9zaXRpb24tLV0gPSB3b3JkICYgMHhmZjtcbiAgICAgIGlmIChwb3NpdGlvbiA+PSAwKSB7XG4gICAgICAgIHJlc1twb3NpdGlvbi0tXSA9ICh3b3JkID4+IDgpICYgMHhmZjtcbiAgICAgIH1cbiAgICAgIGlmIChwb3NpdGlvbiA+PSAwKSB7XG4gICAgICAgIHJlc1twb3NpdGlvbi0tXSA9ICh3b3JkID4+IDE2KSAmIDB4ZmY7XG4gICAgICB9XG5cbiAgICAgIGlmIChzaGlmdCA9PT0gNikge1xuICAgICAgICBpZiAocG9zaXRpb24gPj0gMCkge1xuICAgICAgICAgIHJlc1twb3NpdGlvbi0tXSA9ICh3b3JkID4+IDI0KSAmIDB4ZmY7XG4gICAgICAgIH1cbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgICBzaGlmdCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJyeSA9IHdvcmQgPj4+IDI0O1xuICAgICAgICBzaGlmdCArPSAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbiA+PSAwKSB7XG4gICAgICByZXNbcG9zaXRpb24tLV0gPSBjYXJyeTtcblxuICAgICAgd2hpbGUgKHBvc2l0aW9uID49IDApIHtcbiAgICAgICAgcmVzW3Bvc2l0aW9uLS1dID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgaWYgKE1hdGguY2x6MzIpIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHJldHVybiAzMiAtIE1hdGguY2x6MzIodyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHZhciB0ID0gdztcbiAgICAgIHZhciByID0gMDtcbiAgICAgIGlmICh0ID49IDB4MTAwMCkge1xuICAgICAgICByICs9IDEzO1xuICAgICAgICB0ID4+Pj0gMTM7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDQwKSB7XG4gICAgICAgIHIgKz0gNztcbiAgICAgICAgdCA+Pj49IDc7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDgpIHtcbiAgICAgICAgciArPSA0O1xuICAgICAgICB0ID4+Pj0gNDtcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4MDIpIHtcbiAgICAgICAgciArPSAyO1xuICAgICAgICB0ID4+Pj0gMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByICsgdDtcbiAgICB9O1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl96ZXJvQml0cyA9IGZ1bmN0aW9uIF96ZXJvQml0cyAodykge1xuICAgIC8vIFNob3J0LWN1dFxuICAgIGlmICh3ID09PSAwKSByZXR1cm4gMjY7XG5cbiAgICB2YXIgdCA9IHc7XG4gICAgdmFyIHIgPSAwO1xuICAgIGlmICgodCAmIDB4MWZmZikgPT09IDApIHtcbiAgICAgIHIgKz0gMTM7XG4gICAgICB0ID4+Pj0gMTM7XG4gICAgfVxuICAgIGlmICgodCAmIDB4N2YpID09PSAwKSB7XG4gICAgICByICs9IDc7XG4gICAgICB0ID4+Pj0gNztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHhmKSA9PT0gMCkge1xuICAgICAgciArPSA0O1xuICAgICAgdCA+Pj49IDQ7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MykgPT09IDApIHtcbiAgICAgIHIgKz0gMjtcbiAgICAgIHQgPj4+PSAyO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDEpID09PSAwKSB7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIC8vIFJldHVybiBudW1iZXIgb2YgdXNlZCBiaXRzIGluIGEgQk5cbiAgQk4ucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uIGJpdExlbmd0aCAoKSB7XG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV07XG4gICAgdmFyIGhpID0gdGhpcy5fY291bnRCaXRzKHcpO1xuICAgIHJldHVybiAodGhpcy5sZW5ndGggLSAxKSAqIDI2ICsgaGk7XG4gIH07XG5cbiAgZnVuY3Rpb24gdG9CaXRBcnJheSAobnVtKSB7XG4gICAgdmFyIHcgPSBuZXcgQXJyYXkobnVtLmJpdExlbmd0aCgpKTtcblxuICAgIGZvciAodmFyIGJpdCA9IDA7IGJpdCA8IHcubGVuZ3RoOyBiaXQrKykge1xuICAgICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgICAgd1tiaXRdID0gKG51bS53b3Jkc1tvZmZdID4+PiB3Yml0KSAmIDB4MDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHc7XG4gIH1cblxuICAvLyBOdW1iZXIgb2YgdHJhaWxpbmcgemVybyBiaXRzXG4gIEJOLnByb3RvdHlwZS56ZXJvQml0cyA9IGZ1bmN0aW9uIHplcm9CaXRzICgpIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIDA7XG5cbiAgICB2YXIgciA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYiA9IHRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbaV0pO1xuICAgICAgciArPSBiO1xuICAgICAgaWYgKGIgIT09IDI2KSBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmJ5dGVMZW5ndGggPSBmdW5jdGlvbiBieXRlTGVuZ3RoICgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkgLyA4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9Ud29zID0gZnVuY3Rpb24gdG9Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5hYnMoKS5pbm90bih3aWR0aCkuaWFkZG4oMSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21Ud29zID0gZnVuY3Rpb24gZnJvbVR3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMudGVzdG4od2lkdGggLSAxKSkge1xuICAgICAgcmV0dXJuIHRoaXMubm90bih3aWR0aCkuaWFkZG4oMSkuaW5lZygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uIGlzTmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZSAhPT0gMDtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5lZygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbmVnID0gZnVuY3Rpb24gaW5lZyAoKSB7XG4gICAgaWYgKCF0aGlzLmlzWmVybygpKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1b3IgPSBmdW5jdGlvbiBpdW9yIChudW0pIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gfCBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlvciA9IGZ1bmN0aW9uIGlvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVvcihudW0pO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pb3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVvciA9IGZ1bmN0aW9uIHVvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdWFuZCA9IGZ1bmN0aW9uIGl1YW5kIChudW0pIHtcbiAgICAvLyBiID0gbWluLWxlbmd0aChudW0sIHRoaXMpXG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSAmIG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGIubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLml4b3IgPSBmdW5jdGlvbiBpeG9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXhvcihudW0pO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24geG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXhvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXhvciA9IGZ1bmN0aW9uIHV4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXV4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXV4b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gTm90IGBgdGhpc2BgIHdpdGggYGB3aWR0aGBgIGJpdHdpZHRoXG4gIEJOLnByb3RvdHlwZS5pbm90biA9IGZ1bmN0aW9uIGlub3RuICh3aWR0aCkge1xuICAgIGFzc2VydCh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInICYmIHdpZHRoID49IDApO1xuXG4gICAgdmFyIGJ5dGVzTmVlZGVkID0gTWF0aC5jZWlsKHdpZHRoIC8gMjYpIHwgMDtcbiAgICB2YXIgYml0c0xlZnQgPSB3aWR0aCAlIDI2O1xuXG4gICAgLy8gRXh0ZW5kIHRoZSBidWZmZXIgd2l0aCBsZWFkaW5nIHplcm9lc1xuICAgIHRoaXMuX2V4cGFuZChieXRlc05lZWRlZCk7XG5cbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICBieXRlc05lZWRlZC0tO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBjb21wbGV0ZSB3b3Jkc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXNOZWVkZWQ7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgcmVzaWR1ZVxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmICgweDNmZmZmZmYgPj4gKDI2IC0gYml0c0xlZnQpKTtcbiAgICB9XG5cbiAgICAvLyBBbmQgcmVtb3ZlIGxlYWRpbmcgemVyb2VzXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm5vdG4gPSBmdW5jdGlvbiBub3RuICh3aWR0aCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5vdG4od2lkdGgpO1xuICB9O1xuXG4gIC8vIFNldCBgYml0YCBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNldG4gPSBmdW5jdGlvbiBzZXRuIChiaXQsIHZhbCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG5cbiAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgIHRoaXMuX2V4cGFuZChvZmYgKyAxKTtcblxuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSB8ICgxIDw8IHdiaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gJiB+KDEgPDwgd2JpdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1YihudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHNtYWxsTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICB2YXIgbGVuID0gKHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aCkgfCAwO1xuICAgIG91dC5sZW5ndGggPSBsZW47XG4gICAgbGVuID0gKGxlbiAtIDEpIHwgMDtcblxuICAgIC8vIFBlZWwgb25lIGl0ZXJhdGlvbiAoY29tcGlsZXIgY2FuJ3QgZG8gaXQsIGJlY2F1c2Ugb2YgY29kZSBjb21wbGV4aXR5KVxuICAgIHZhciBhID0gc2VsZi53b3Jkc1swXSB8IDA7XG4gICAgdmFyIGIgPSBudW0ud29yZHNbMF0gfCAwO1xuICAgIHZhciByID0gYSAqIGI7XG5cbiAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgIHZhciBjYXJyeSA9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgb3V0LndvcmRzWzBdID0gbG87XG5cbiAgICBmb3IgKHZhciBrID0gMTsgayA8IGxlbjsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGNhcnJ5ID4+PiAyNjtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gKGsgLSBqKSB8IDA7XG4gICAgICAgIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHIgPSBhICogYiArIHJ3b3JkO1xuICAgICAgICBuY2FycnkgKz0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgICAgcndvcmQgPSByICYgMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQgfCAwO1xuICAgICAgY2FycnkgPSBuY2FycnkgfCAwO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5IHwgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuX3N0cmlwKCk7XG4gIH1cblxuICAvLyBUT0RPKGluZHV0bnkpOiBpdCBtYXkgYmUgcmVhc29uYWJsZSB0byBvbWl0IGl0IGZvciB1c2VycyB3aG8gZG9uJ3QgbmVlZFxuICAvLyB0byB3b3JrIHdpdGggMjU2LWJpdCBudW1iZXJzLCBvdGhlcndpc2UgaXQgZ2l2ZXMgMjAlIGltcHJvdmVtZW50IGZvciAyNTYtYml0XG4gIC8vIG11bHRpcGxpY2F0aW9uIChsaWtlIGVsbGlwdGljIHNlY3AyNTZrMSkuXG4gIHZhciBjb21iMTBNdWxUbyA9IGZ1bmN0aW9uIGNvbWIxME11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBhID0gc2VsZi53b3JkcztcbiAgICB2YXIgYiA9IG51bS53b3JkcztcbiAgICB2YXIgbyA9IG91dC53b3JkcztcbiAgICB2YXIgYyA9IDA7XG4gICAgdmFyIGxvO1xuICAgIHZhciBtaWQ7XG4gICAgdmFyIGhpO1xuICAgIHZhciBhMCA9IGFbMF0gfCAwO1xuICAgIHZhciBhbDAgPSBhMCAmIDB4MWZmZjtcbiAgICB2YXIgYWgwID0gYTAgPj4+IDEzO1xuICAgIHZhciBhMSA9IGFbMV0gfCAwO1xuICAgIHZhciBhbDEgPSBhMSAmIDB4MWZmZjtcbiAgICB2YXIgYWgxID0gYTEgPj4+IDEzO1xuICAgIHZhciBhMiA9IGFbMl0gfCAwO1xuICAgIHZhciBhbDIgPSBhMiAmIDB4MWZmZjtcbiAgICB2YXIgYWgyID0gYTIgPj4+IDEzO1xuICAgIHZhciBhMyA9IGFbM10gfCAwO1xuICAgIHZhciBhbDMgPSBhMyAmIDB4MWZmZjtcbiAgICB2YXIgYWgzID0gYTMgPj4+IDEzO1xuICAgIHZhciBhNCA9IGFbNF0gfCAwO1xuICAgIHZhciBhbDQgPSBhNCAmIDB4MWZmZjtcbiAgICB2YXIgYWg0ID0gYTQgPj4+IDEzO1xuICAgIHZhciBhNSA9IGFbNV0gfCAwO1xuICAgIHZhciBhbDUgPSBhNSAmIDB4MWZmZjtcbiAgICB2YXIgYWg1ID0gYTUgPj4+IDEzO1xuICAgIHZhciBhNiA9IGFbNl0gfCAwO1xuICAgIHZhciBhbDYgPSBhNiAmIDB4MWZmZjtcbiAgICB2YXIgYWg2ID0gYTYgPj4+IDEzO1xuICAgIHZhciBhNyA9IGFbN10gfCAwO1xuICAgIHZhciBhbDcgPSBhNyAmIDB4MWZmZjtcbiAgICB2YXIgYWg3ID0gYTcgPj4+IDEzO1xuICAgIHZhciBhOCA9IGFbOF0gfCAwO1xuICAgIHZhciBhbDggPSBhOCAmIDB4MWZmZjtcbiAgICB2YXIgYWg4ID0gYTggPj4+IDEzO1xuICAgIHZhciBhOSA9IGFbOV0gfCAwO1xuICAgIHZhciBhbDkgPSBhOSAmIDB4MWZmZjtcbiAgICB2YXIgYWg5ID0gYTkgPj4+IDEzO1xuICAgIHZhciBiMCA9IGJbMF0gfCAwO1xuICAgIHZhciBibDAgPSBiMCAmIDB4MWZmZjtcbiAgICB2YXIgYmgwID0gYjAgPj4+IDEzO1xuICAgIHZhciBiMSA9IGJbMV0gfCAwO1xuICAgIHZhciBibDEgPSBiMSAmIDB4MWZmZjtcbiAgICB2YXIgYmgxID0gYjEgPj4+IDEzO1xuICAgIHZhciBiMiA9IGJbMl0gfCAwO1xuICAgIHZhciBibDIgPSBiMiAmIDB4MWZmZjtcbiAgICB2YXIgYmgyID0gYjIgPj4+IDEzO1xuICAgIHZhciBiMyA9IGJbM10gfCAwO1xuICAgIHZhciBibDMgPSBiMyAmIDB4MWZmZjtcbiAgICB2YXIgYmgzID0gYjMgPj4+IDEzO1xuICAgIHZhciBiNCA9IGJbNF0gfCAwO1xuICAgIHZhciBibDQgPSBiNCAmIDB4MWZmZjtcbiAgICB2YXIgYmg0ID0gYjQgPj4+IDEzO1xuICAgIHZhciBiNSA9IGJbNV0gfCAwO1xuICAgIHZhciBibDUgPSBiNSAmIDB4MWZmZjtcbiAgICB2YXIgYmg1ID0gYjUgPj4+IDEzO1xuICAgIHZhciBiNiA9IGJbNl0gfCAwO1xuICAgIHZhciBibDYgPSBiNiAmIDB4MWZmZjtcbiAgICB2YXIgYmg2ID0gYjYgPj4+IDEzO1xuICAgIHZhciBiNyA9IGJbN10gfCAwO1xuICAgIHZhciBibDcgPSBiNyAmIDB4MWZmZjtcbiAgICB2YXIgYmg3ID0gYjcgPj4+IDEzO1xuICAgIHZhciBiOCA9IGJbOF0gfCAwO1xuICAgIHZhciBibDggPSBiOCAmIDB4MWZmZjtcbiAgICB2YXIgYmg4ID0gYjggPj4+IDEzO1xuICAgIHZhciBiOSA9IGJbOV0gfCAwO1xuICAgIHZhciBibDkgPSBiOSAmIDB4MWZmZjtcbiAgICB2YXIgYmg5ID0gYjkgPj4+IDEzO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0gc2VsZi5uZWdhdGl2ZSBeIG51bS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gMTk7XG4gICAgLyogayA9IDAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDAsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMCwgYmgwKTtcbiAgICB2YXIgdzAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcwID4+PiAyNikpIHwgMDtcbiAgICB3MCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDEsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDEpKSB8IDA7XG4gICAgdmFyIHcxID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MSA+Pj4gMjYpKSB8IDA7XG4gICAgdzEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwyLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDIsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDIsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMikpIHwgMDtcbiAgICB2YXIgdzIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcyID4+PiAyNikpIHwgMDtcbiAgICB3MiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDMsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMykpIHwgMDtcbiAgICB2YXIgdzMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHczID4+PiAyNikpIHwgMDtcbiAgICB3MyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDQsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDQpKSB8IDA7XG4gICAgdmFyIHc0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NCA+Pj4gMjYpKSB8IDA7XG4gICAgdzQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw1LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDUsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDUsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNSkpIHwgMDtcbiAgICB2YXIgdzUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc1ID4+PiAyNikpIHwgMDtcbiAgICB3NSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDYsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNikpIHwgMDtcbiAgICB2YXIgdzYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc2ID4+PiAyNikpIHwgMDtcbiAgICB3NiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDcsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDcpKSB8IDA7XG4gICAgdmFyIHc3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NyA+Pj4gMjYpKSB8IDA7XG4gICAgdzcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw4LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDgsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDgsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOCkpIHwgMDtcbiAgICB2YXIgdzggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc4ID4+PiAyNikpIHwgMDtcbiAgICB3OCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDkgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzkgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc5ID4+PiAyNikpIHwgMDtcbiAgICB3OSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDEpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTAgPj4+IDI2KSkgfCAwO1xuICAgIHcxMCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDExICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDIpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMSA+Pj4gMjYpKSB8IDA7XG4gICAgdzExICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgzKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwzKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgzKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTIgPj4+IDI2KSkgfCAwO1xuICAgIHcxMiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDQpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEzID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTMgPj4+IDI2KSkgfCAwO1xuICAgIHcxMyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDUpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg2KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw2KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg2KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTUgPj4+IDI2KSkgfCAwO1xuICAgIHcxNSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDcpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTYgPj4+IDI2KSkgfCAwO1xuICAgIHcxNiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDgpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNyA+Pj4gMjYpKSB8IDA7XG4gICAgdzE3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg5KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw5KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg5KTtcbiAgICB2YXIgdzE4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTggPj4+IDI2KSkgfCAwO1xuICAgIHcxOCAmPSAweDNmZmZmZmY7XG4gICAgb1swXSA9IHcwO1xuICAgIG9bMV0gPSB3MTtcbiAgICBvWzJdID0gdzI7XG4gICAgb1szXSA9IHczO1xuICAgIG9bNF0gPSB3NDtcbiAgICBvWzVdID0gdzU7XG4gICAgb1s2XSA9IHc2O1xuICAgIG9bN10gPSB3NztcbiAgICBvWzhdID0gdzg7XG4gICAgb1s5XSA9IHc5O1xuICAgIG9bMTBdID0gdzEwO1xuICAgIG9bMTFdID0gdzExO1xuICAgIG9bMTJdID0gdzEyO1xuICAgIG9bMTNdID0gdzEzO1xuICAgIG9bMTRdID0gdzE0O1xuICAgIG9bMTVdID0gdzE1O1xuICAgIG9bMTZdID0gdzE2O1xuICAgIG9bMTddID0gdzE3O1xuICAgIG9bMThdID0gdzE4O1xuICAgIGlmIChjICE9PSAwKSB7XG4gICAgICBvWzE5XSA9IGM7XG4gICAgICBvdXQubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH07XG5cbiAgLy8gUG9seWZpbGwgY29tYlxuICBpZiAoIU1hdGguaW11bCkge1xuICAgIGNvbWIxME11bFRvID0gc21hbGxNdWxUbztcbiAgfVxuXG4gIGZ1bmN0aW9uIGJpZ011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aDtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgdmFyIGhuY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb3V0Lmxlbmd0aCAtIDE7IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBobmNhcnJ5O1xuICAgICAgaG5jYXJyeSA9IDA7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IGsgLSBqO1xuICAgICAgICB2YXIgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICB2YXIgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHZhciByID0gYSAqIGI7XG5cbiAgICAgICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArICgociAvIDB4NDAwMDAwMCkgfCAwKSkgfCAwO1xuICAgICAgICBsbyA9IChsbyArIHJ3b3JkKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAobG8gPj4+IDI2KSkgfCAwO1xuXG4gICAgICAgIGhuY2FycnkgKz0gbmNhcnJ5ID4+PiAyNjtcbiAgICAgICAgbmNhcnJ5ICY9IDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkO1xuICAgICAgY2FycnkgPSBuY2Fycnk7XG4gICAgICBuY2FycnkgPSBobmNhcnJ5O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5fc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgLy8gVGVtcG9yYXJ5IGRpc2FibGUsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9ibi5qcy9pc3N1ZXMvMjExXG4gICAgLy8gdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIC8vIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICAgIHJldHVybiBiaWdNdWxUbyhzZWxmLCBudW0sIG91dCk7XG4gIH1cblxuICBCTi5wcm90b3R5cGUubXVsVG8gPSBmdW5jdGlvbiBtdWxUbyAobnVtLCBvdXQpIHtcbiAgICB2YXIgcmVzO1xuICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCArIG51bS5sZW5ndGg7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxMCAmJiBudW0ubGVuZ3RoID09PSAxMCkge1xuICAgICAgcmVzID0gY29tYjEwTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgNjMpIHtcbiAgICAgIHJlcyA9IHNtYWxsTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgMTAyNCkge1xuICAgICAgcmVzID0gYmlnTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvb2xleS1UdWtleSBhbGdvcml0aG0gZm9yIEZGVFxuICAvLyBzbGlnaHRseSByZXZpc2l0ZWQgdG8gcmVseSBvbiBsb29waW5nIGluc3RlYWQgb2YgcmVjdXJzaW9uXG5cbiAgZnVuY3Rpb24gRkZUTSAoeCwgeSkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIEZGVE0ucHJvdG90eXBlLm1ha2VSQlQgPSBmdW5jdGlvbiBtYWtlUkJUIChOKSB7XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGwgPSBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyhOKSAtIDE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHRbaV0gPSB0aGlzLnJldkJpbihpLCBsLCBOKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGJpbmFyeS1yZXZlcnNlZCByZXByZXNlbnRhdGlvbiBvZiBgeGBcbiAgRkZUTS5wcm90b3R5cGUucmV2QmluID0gZnVuY3Rpb24gcmV2QmluICh4LCBsLCBOKSB7XG4gICAgaWYgKHggPT09IDAgfHwgeCA9PT0gTiAtIDEpIHJldHVybiB4O1xuXG4gICAgdmFyIHJiID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgcmIgfD0gKHggJiAxKSA8PCAobCAtIGkgLSAxKTtcbiAgICAgIHggPj49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJiO1xuICB9O1xuXG4gIC8vIFBlcmZvcm1zIFwidHdlZWRsaW5nXCIgcGhhc2UsIHRoZXJlZm9yZSAnZW11bGF0aW5nJ1xuICAvLyBiZWhhdmlvdXIgb2YgdGhlIHJlY3Vyc2l2ZSBhbGdvcml0aG1cbiAgRkZUTS5wcm90b3R5cGUucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUgKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcnR3c1tpXSA9IHJ3c1tyYnRbaV1dO1xuICAgICAgaXR3c1tpXSA9IGl3c1tyYnRbaV1dO1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiB0cmFuc2Zvcm0gKHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOLCByYnQpIHtcbiAgICB0aGlzLnBlcm11dGUocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTik7XG5cbiAgICBmb3IgKHZhciBzID0gMTsgcyA8IE47IHMgPDw9IDEpIHtcbiAgICAgIHZhciBsID0gcyA8PCAxO1xuXG4gICAgICB2YXIgcnR3ZGYgPSBNYXRoLmNvcygyICogTWF0aC5QSSAvIGwpO1xuICAgICAgdmFyIGl0d2RmID0gTWF0aC5zaW4oMiAqIE1hdGguUEkgLyBsKTtcblxuICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBOOyBwICs9IGwpIHtcbiAgICAgICAgdmFyIHJ0d2RmXyA9IHJ0d2RmO1xuICAgICAgICB2YXIgaXR3ZGZfID0gaXR3ZGY7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzOyBqKyspIHtcbiAgICAgICAgICB2YXIgcmUgPSBydHdzW3AgKyBqXTtcbiAgICAgICAgICB2YXIgaWUgPSBpdHdzW3AgKyBqXTtcblxuICAgICAgICAgIHZhciBybyA9IHJ0d3NbcCArIGogKyBzXTtcbiAgICAgICAgICB2YXIgaW8gPSBpdHdzW3AgKyBqICsgc107XG5cbiAgICAgICAgICB2YXIgcnggPSBydHdkZl8gKiBybyAtIGl0d2RmXyAqIGlvO1xuXG4gICAgICAgICAgaW8gPSBydHdkZl8gKiBpbyArIGl0d2RmXyAqIHJvO1xuICAgICAgICAgIHJvID0gcng7XG5cbiAgICAgICAgICBydHdzW3AgKyBqXSA9IHJlICsgcm87XG4gICAgICAgICAgaXR3c1twICsgal0gPSBpZSArIGlvO1xuXG4gICAgICAgICAgcnR3c1twICsgaiArIHNdID0gcmUgLSBybztcbiAgICAgICAgICBpdHdzW3AgKyBqICsgc10gPSBpZSAtIGlvO1xuXG4gICAgICAgICAgLyoganNoaW50IG1heGRlcHRoIDogZmFsc2UgKi9cbiAgICAgICAgICBpZiAoaiAhPT0gbCkge1xuICAgICAgICAgICAgcnggPSBydHdkZiAqIHJ0d2RmXyAtIGl0d2RmICogaXR3ZGZfO1xuXG4gICAgICAgICAgICBpdHdkZl8gPSBydHdkZiAqIGl0d2RmXyArIGl0d2RmICogcnR3ZGZfO1xuICAgICAgICAgICAgcnR3ZGZfID0gcng7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmd1ZXNzTGVuMTNiID0gZnVuY3Rpb24gZ3Vlc3NMZW4xM2IgKG4sIG0pIHtcbiAgICB2YXIgTiA9IE1hdGgubWF4KG0sIG4pIHwgMTtcbiAgICB2YXIgb2RkID0gTiAmIDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoTiA9IE4gLyAyIHwgMDsgTjsgTiA9IE4gPj4+IDEpIHtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICByZXR1cm4gMSA8PCBpICsgMSArIG9kZDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb25qdWdhdGUgPSBmdW5jdGlvbiBjb25qdWdhdGUgKHJ3cywgaXdzLCBOKSB7XG4gICAgaWYgKE4gPD0gMSkgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdCA9IHJ3c1tpXTtcblxuICAgICAgcndzW2ldID0gcndzW04gLSBpIC0gMV07XG4gICAgICByd3NbTiAtIGkgLSAxXSA9IHQ7XG5cbiAgICAgIHQgPSBpd3NbaV07XG5cbiAgICAgIGl3c1tpXSA9IC1pd3NbTiAtIGkgLSAxXTtcbiAgICAgIGl3c1tOIC0gaSAtIDFdID0gLXQ7XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm5vcm1hbGl6ZTEzYiA9IGZ1bmN0aW9uIG5vcm1hbGl6ZTEzYiAod3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHcgPSBNYXRoLnJvdW5kKHdzWzIgKiBpICsgMV0gLyBOKSAqIDB4MjAwMCArXG4gICAgICAgIE1hdGgucm91bmQod3NbMiAqIGldIC8gTikgK1xuICAgICAgICBjYXJyeTtcblxuICAgICAgd3NbaV0gPSB3ICYgMHgzZmZmZmZmO1xuXG4gICAgICBpZiAodyA8IDB4NDAwMDAwMCkge1xuICAgICAgICBjYXJyeSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJyeSA9IHcgLyAweDQwMDAwMDAgfCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB3cztcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb252ZXJ0MTNiID0gZnVuY3Rpb24gY29udmVydDEzYiAod3MsIGxlbiwgcndzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjYXJyeSA9IGNhcnJ5ICsgKHdzW2ldIHwgMCk7XG5cbiAgICAgIHJ3c1syICogaV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgICByd3NbMiAqIGkgKyAxXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICB9XG5cbiAgICAvLyBQYWQgd2l0aCB6ZXJvZXNcbiAgICBmb3IgKGkgPSAyICogbGVuOyBpIDwgTjsgKytpKSB7XG4gICAgICByd3NbaV0gPSAwO1xuICAgIH1cblxuICAgIGFzc2VydChjYXJyeSA9PT0gMCk7XG4gICAgYXNzZXJ0KChjYXJyeSAmIH4weDFmZmYpID09PSAwKTtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5zdHViID0gZnVuY3Rpb24gc3R1YiAoTikge1xuICAgIHZhciBwaCA9IG5ldyBBcnJheShOKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcGhbaV0gPSAwO1xuICAgIH1cblxuICAgIHJldHVybiBwaDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5tdWxwID0gZnVuY3Rpb24gbXVscCAoeCwgeSwgb3V0KSB7XG4gICAgdmFyIE4gPSAyICogdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCwgeS5sZW5ndGgpO1xuXG4gICAgdmFyIHJidCA9IHRoaXMubWFrZVJCVChOKTtcblxuICAgIHZhciBfID0gdGhpcy5zdHViKE4pO1xuXG4gICAgdmFyIHJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgcndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBucndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBucndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbml3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgcm13cyA9IG91dC53b3JkcztcbiAgICBybXdzLmxlbmd0aCA9IE47XG5cbiAgICB0aGlzLmNvbnZlcnQxM2IoeC53b3JkcywgeC5sZW5ndGgsIHJ3cywgTik7XG4gICAgdGhpcy5jb252ZXJ0MTNiKHkud29yZHMsIHkubGVuZ3RoLCBucndzLCBOKTtcblxuICAgIHRoaXMudHJhbnNmb3JtKHJ3cywgXywgcndzdCwgaXdzdCwgTiwgcmJ0KTtcbiAgICB0aGlzLnRyYW5zZm9ybShucndzLCBfLCBucndzdCwgbml3c3QsIE4sIHJidCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdmFyIHJ4ID0gcndzdFtpXSAqIG5yd3N0W2ldIC0gaXdzdFtpXSAqIG5pd3N0W2ldO1xuICAgICAgaXdzdFtpXSA9IHJ3c3RbaV0gKiBuaXdzdFtpXSArIGl3c3RbaV0gKiBucndzdFtpXTtcbiAgICAgIHJ3c3RbaV0gPSByeDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmp1Z2F0ZShyd3N0LCBpd3N0LCBOKTtcbiAgICB0aGlzLnRyYW5zZm9ybShyd3N0LCBpd3N0LCBybXdzLCBfLCBOLCByYnQpO1xuICAgIHRoaXMuY29uanVnYXRlKHJtd3MsIF8sIE4pO1xuICAgIHRoaXMubm9ybWFsaXplMTNiKHJtd3MsIE4pO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0geC5uZWdhdGl2ZSBeIHkubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHgubGVuZ3RoICsgeS5sZW5ndGg7XG4gICAgcmV0dXJuIG91dC5fc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICB2YXIgaXNOZWdOdW0gPSBudW0gPCAwO1xuICAgIGlmIChpc05lZ051bSkgbnVtID0gLW51bTtcblxuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG5cbiAgICAvLyBDYXJyeVxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKiBudW07XG4gICAgICB2YXIgbG8gPSAodyAmIDB4M2ZmZmZmZikgKyAoY2FycnkgJiAweDNmZmZmZmYpO1xuICAgICAgY2FycnkgPj49IDI2O1xuICAgICAgY2FycnkgKz0gKHcgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgIC8vIE5PVEU6IGxvIGlzIDI3Yml0IG1heGltdW1cbiAgICAgIGNhcnJ5ICs9IGxvID4+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzTmVnTnVtID8gdGhpcy5pbmVnKCkgOiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaGxuID0gZnVuY3Rpb24gaXNobG4gKGJpdHMpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0IGluLXBsYWNlXG4gIC8vIE5PVEU6IGBoaW50YCBpcyBhIGxvd2VzdCBiaXQgYmVmb3JlIHRyYWlsaW5nIHplcm9lc1xuICAvLyBOT1RFOiBpZiBgZXh0ZW5kZWRgIGlzIHByZXNlbnQgLSBpdCB3aWxsIGJlIGZpbGxlZCB3aXRoIGRlc3Ryb3llZCBiaXRzXG4gIEJOLnByb3RvdHlwZS5pdXNocm4gPSBmdW5jdGlvbiBpdXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciBoO1xuICAgIGlmIChoaW50KSB7XG4gICAgICBoID0gKGhpbnQgLSAoaGludCAlIDI2KSkgLyAyNjtcbiAgICB9IGVsc2Uge1xuICAgICAgaCA9IDA7XG4gICAgfVxuXG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSBNYXRoLm1pbigoYml0cyAtIHIpIC8gMjYsIHRoaXMubGVuZ3RoKTtcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICB2YXIgbWFza2VkV29yZHMgPSBleHRlbmRlZDtcblxuICAgIGggLT0gcztcbiAgICBoID0gTWF0aC5tYXgoMCwgaCk7XG5cbiAgICAvLyBFeHRlbmRlZCBtb2RlLCBjb3B5IG1hc2tlZCBwYXJ0XG4gICAgaWYgKG1hc2tlZFdvcmRzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICBtYXNrZWRXb3Jkcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG4gICAgICBtYXNrZWRXb3Jkcy5sZW5ndGggPSBzO1xuICAgIH1cblxuICAgIGlmIChzID09PSAwKSB7XG4gICAgICAvLyBOby1vcCwgd2Ugc2hvdWxkIG5vdCBtb3ZlIGFueXRoaW5nIGF0IGFsbFxuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiBzKSB7XG4gICAgICB0aGlzLmxlbmd0aCAtPSBzO1xuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaSArIHNdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwICYmIChjYXJyeSAhPT0gMCB8fCBpID49IGgpOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKGNhcnJ5IDw8ICgyNiAtIHIpKSB8ICh3b3JkID4+PiByKTtcbiAgICAgIGNhcnJ5ID0gd29yZCAmIG1hc2s7XG4gICAgfVxuXG4gICAgLy8gUHVzaCBjYXJyaWVkIGJpdHMgYXMgYSBtYXNrXG4gICAgaWYgKG1hc2tlZFdvcmRzICYmIGNhcnJ5ICE9PSAwKSB7XG4gICAgICBtYXNrZWRXb3Jkcy53b3Jkc1ttYXNrZWRXb3Jkcy5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hybiA9IGZ1bmN0aW9uIGlzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNocm4oYml0cywgaGludCwgZXh0ZW5kZWQpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnRcbiAgQk4ucHJvdG90eXBlLnNobG4gPSBmdW5jdGlvbiBzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNobG4gPSBmdW5jdGlvbiB1c2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0XG4gIEJOLnByb3RvdHlwZS5zaHJuID0gZnVuY3Rpb24gc2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaHJuID0gZnVuY3Rpb24gdXNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiaXRzKTtcbiAgfTtcblxuICAvLyBUZXN0IGlmIG4gYml0IGlzIHNldFxuICBCTi5wcm90b3R5cGUudGVzdG4gPSBmdW5jdGlvbiB0ZXN0biAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBiaXQgYW5kIHJldHVyblxuICAgIHZhciB3ID0gdGhpcy53b3Jkc1tzXTtcblxuICAgIHJldHVybiAhISh3ICYgcSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyIChpbi1wbGFjZSlcbiAgQk4ucHJvdG90eXBlLmltYXNrbiA9IGZ1bmN0aW9uIGltYXNrbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcblxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAnaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzJyk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHMrKztcbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1pbihzLCB0aGlzLmxlbmd0aCk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gJj0gbWFzaztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8PSBudW0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSA9IG51bSAtICh0aGlzLndvcmRzWzBdIHwgMCk7XG4gICAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlzdWJuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCB3aXRob3V0IGNoZWNrc1xuICAgIHJldHVybiB0aGlzLl9pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faWFkZG4gPSBmdW5jdGlvbiBfaWFkZG4gKG51bSkge1xuICAgIHRoaXMud29yZHNbMF0gKz0gbnVtO1xuXG4gICAgLy8gQ2FycnlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPj0gMHg0MDAwMDAwOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gLT0gMHg0MDAwMDAwO1xuICAgICAgaWYgKGkgPT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSsrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpICsgMSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBwbGFpbiBudW1iZXIgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlzdWJuID0gZnVuY3Rpb24gaXN1Ym4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlhZGRuKC1udW0pO1xuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkbihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLndvcmRzWzBdIC09IG51bTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdIDwgMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IC10aGlzLndvcmRzWzBdO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENhcnJ5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPCAwOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSArPSAweDQwMDAwMDA7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdIC09IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFkZG4gPSBmdW5jdGlvbiBhZGRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnN1Ym4gPSBmdW5jdGlvbiBzdWJuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhYnMgPSBmdW5jdGlvbiBpYWJzICgpIHtcbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiBhYnMgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFicygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faXNobG5zdWJtdWwgPSBmdW5jdGlvbiBfaXNobG5zdWJtdWwgKG51bSwgbXVsLCBzaGlmdCkge1xuICAgIHZhciBsZW4gPSBudW0ubGVuZ3RoICsgc2hpZnQ7XG4gICAgdmFyIGk7XG5cbiAgICB0aGlzLl9leHBhbmQobGVuKTtcblxuICAgIHZhciB3O1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgdmFyIHJpZ2h0ID0gKG51bS53b3Jkc1tpXSB8IDApICogbXVsO1xuICAgICAgdyAtPSByaWdodCAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gKHcgPj4gMjYpIC0gKChyaWdodCAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBpIDwgdGhpcy5sZW5ndGggLSBzaGlmdDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSA9PT0gMCkgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5fc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX3dvcmREaXYgPSBmdW5jdGlvbiBfd29yZERpdiAobnVtLCBtb2RlKSB7XG4gICAgdmFyIHNoaWZ0ID0gdGhpcy5sZW5ndGggLSBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGEgPSB0aGlzLmNsb25lKCk7XG4gICAgdmFyIGIgPSBudW07XG5cbiAgICAvLyBOb3JtYWxpemVcbiAgICB2YXIgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB2YXIgYmhpQml0cyA9IHRoaXMuX2NvdW50Qml0cyhiaGkpO1xuICAgIHNoaWZ0ID0gMjYgLSBiaGlCaXRzO1xuICAgIGlmIChzaGlmdCAhPT0gMCkge1xuICAgICAgYiA9IGIudXNobG4oc2hpZnQpO1xuICAgICAgYS5pdXNobG4oc2hpZnQpO1xuICAgICAgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIHF1b3RpZW50XG4gICAgdmFyIG0gPSBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuICAgIHZhciBxO1xuXG4gICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICBxID0gbmV3IEJOKG51bGwpO1xuICAgICAgcS5sZW5ndGggPSBtICsgMTtcbiAgICAgIHEud29yZHMgPSBuZXcgQXJyYXkocS5sZW5ndGgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHEud29yZHNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkaWZmID0gYS5jbG9uZSgpLl9pc2hsbnN1Ym11bChiLCAxLCBtKTtcbiAgICBpZiAoZGlmZi5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgYSA9IGRpZmY7XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW21dID0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gbSAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICB2YXIgcWogPSAoYS53b3Jkc1tiLmxlbmd0aCArIGpdIHwgMCkgKiAweDQwMDAwMDAgK1xuICAgICAgICAoYS53b3Jkc1tiLmxlbmd0aCArIGogLSAxXSB8IDApO1xuXG4gICAgICAvLyBOT1RFOiAocWogLyBiaGkpIGlzICgweDNmZmZmZmYgKiAweDQwMDAwMDAgKyAweDNmZmZmZmYpIC8gMHgyMDAwMDAwIG1heFxuICAgICAgLy8gKDB4N2ZmZmZmZilcbiAgICAgIHFqID0gTWF0aC5taW4oKHFqIC8gYmhpKSB8IDAsIDB4M2ZmZmZmZik7XG5cbiAgICAgIGEuX2lzaGxuc3VibXVsKGIsIHFqLCBqKTtcbiAgICAgIHdoaWxlIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIHFqLS07XG4gICAgICAgIGEubmVnYXRpdmUgPSAwO1xuICAgICAgICBhLl9pc2hsbnN1Ym11bChiLCAxLCBqKTtcbiAgICAgICAgaWYgKCFhLmlzWmVybygpKSB7XG4gICAgICAgICAgYS5uZWdhdGl2ZSBePSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW2pdID0gcWo7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxKSB7XG4gICAgICBxLl9zdHJpcCgpO1xuICAgIH1cbiAgICBhLl9zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kcm4obnVtLndvcmRzWzBdKSlcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RybihudW0ud29yZHNbMF0pKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd29yZERpdihudW0sIG1vZGUpO1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgIC8gYG51bWBcbiAgQk4ucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uIGRpdiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ2RpdicsIGZhbHNlKS5kaXY7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgJSBgbnVtYFxuICBCTi5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgZmFsc2UpLm1vZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW1vZCA9IGZ1bmN0aW9uIHVtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCB0cnVlKS5tb2Q7XG4gIH07XG5cbiAgLy8gRmluZCBSb3VuZChgdGhpc2AgLyBgbnVtYClcbiAgQk4ucHJvdG90eXBlLmRpdlJvdW5kID0gZnVuY3Rpb24gZGl2Um91bmQgKG51bSkge1xuICAgIHZhciBkbSA9IHRoaXMuZGl2bW9kKG51bSk7XG5cbiAgICAvLyBGYXN0IGNhc2UgLSBleGFjdCBkaXZpc2lvblxuICAgIGlmIChkbS5tb2QuaXNaZXJvKCkpIHJldHVybiBkbS5kaXY7XG5cbiAgICB2YXIgbW9kID0gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0ubW9kLmlzdWIobnVtKSA6IGRtLm1vZDtcblxuICAgIHZhciBoYWxmID0gbnVtLnVzaHJuKDEpO1xuICAgIHZhciByMiA9IG51bS5hbmRsbigxKTtcbiAgICB2YXIgY21wID0gbW9kLmNtcChoYWxmKTtcblxuICAgIC8vIFJvdW5kIGRvd25cbiAgICBpZiAoY21wIDwgMCB8fCAocjIgPT09IDEgJiYgY21wID09PSAwKSkgcmV0dXJuIGRtLmRpdjtcblxuICAgIC8vIFJvdW5kIHVwXG4gICAgcmV0dXJuIGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLmRpdi5pc3VibigxKSA6IGRtLmRpdi5pYWRkbigxKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubW9kcm4gPSBmdW5jdGlvbiBtb2RybiAobnVtKSB7XG4gICAgdmFyIGlzTmVnTnVtID0gbnVtIDwgMDtcbiAgICBpZiAoaXNOZWdOdW0pIG51bSA9IC1udW07XG5cbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG4gICAgdmFyIHAgPSAoMSA8PCAyNikgJSBudW07XG5cbiAgICB2YXIgYWNjID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgYWNjID0gKHAgKiBhY2MgKyAodGhpcy53b3Jkc1tpXSB8IDApKSAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNOZWdOdW0gPyAtYWNjIDogYWNjO1xuICB9O1xuXG4gIC8vIFdBUk5JTkc6IERFUFJFQ0FURURcbiAgQk4ucHJvdG90eXBlLm1vZG4gPSBmdW5jdGlvbiBtb2RuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5tb2RybihudW0pO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIGRpdmlzaW9uIGJ5IG51bWJlclxuICBCTi5wcm90b3R5cGUuaWRpdm4gPSBmdW5jdGlvbiBpZGl2biAobnVtKSB7XG4gICAgdmFyIGlzTmVnTnVtID0gbnVtIDwgMDtcbiAgICBpZiAoaXNOZWdOdW0pIG51bSA9IC1udW07XG5cbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeSAqIDB4NDAwMDAwMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAodyAvIG51bSkgfCAwO1xuICAgICAgY2FycnkgPSB3ICUgbnVtO1xuICAgIH1cblxuICAgIHRoaXMuX3N0cmlwKCk7XG4gICAgcmV0dXJuIGlzTmVnTnVtID8gdGhpcy5pbmVnKCkgOiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5kaXZuID0gZnVuY3Rpb24gZGl2biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lZ2NkID0gZnVuY3Rpb24gZWdjZCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIHggPSB0aGlzO1xuICAgIHZhciB5ID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKHgubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHggPSB4LnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHggPSB4LmNsb25lKCk7XG4gICAgfVxuXG4gICAgLy8gQSAqIHggKyBCICogeSA9IHhcbiAgICB2YXIgQSA9IG5ldyBCTigxKTtcbiAgICB2YXIgQiA9IG5ldyBCTigwKTtcblxuICAgIC8vIEMgKiB4ICsgRCAqIHkgPSB5XG4gICAgdmFyIEMgPSBuZXcgQk4oMCk7XG4gICAgdmFyIEQgPSBuZXcgQk4oMSk7XG5cbiAgICB2YXIgZyA9IDA7XG5cbiAgICB3aGlsZSAoeC5pc0V2ZW4oKSAmJiB5LmlzRXZlbigpKSB7XG4gICAgICB4Lml1c2hybigxKTtcbiAgICAgIHkuaXVzaHJuKDEpO1xuICAgICAgKytnO1xuICAgIH1cblxuICAgIHZhciB5cCA9IHkuY2xvbmUoKTtcbiAgICB2YXIgeHAgPSB4LmNsb25lKCk7XG5cbiAgICB3aGlsZSAoIXguaXNaZXJvKCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7ICh4LndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgeC5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEEuaXNPZGQoKSB8fCBCLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEEuaWFkZCh5cCk7XG4gICAgICAgICAgICBCLmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEEuaXVzaHJuKDEpO1xuICAgICAgICAgIEIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7ICh5LndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgeS5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEMuaXNPZGQoKSB8fCBELmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEMuaWFkZCh5cCk7XG4gICAgICAgICAgICBELmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEMuaXVzaHJuKDEpO1xuICAgICAgICAgIEQuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh4LmNtcCh5KSA+PSAwKSB7XG4gICAgICAgIHguaXN1Yih5KTtcbiAgICAgICAgQS5pc3ViKEMpO1xuICAgICAgICBCLmlzdWIoRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5LmlzdWIoeCk7XG4gICAgICAgIEMuaXN1YihBKTtcbiAgICAgICAgRC5pc3ViKEIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhOiBDLFxuICAgICAgYjogRCxcbiAgICAgIGdjZDogeS5pdXNobG4oZylcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRoaXMgaXMgcmVkdWNlZCBpbmNhcm5hdGlvbiBvZiB0aGUgYmluYXJ5IEVFQVxuICAvLyBhYm92ZSwgZGVzaWduYXRlZCB0byBpbnZlcnQgbWVtYmVycyBvZiB0aGVcbiAgLy8gX3ByaW1lXyBmaWVsZHMgRihwKSBhdCBhIG1heGltYWwgc3BlZWRcbiAgQk4ucHJvdG90eXBlLl9pbnZtcCA9IGZ1bmN0aW9uIF9pbnZtcCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIGEgPSB0aGlzO1xuICAgIHZhciBiID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGEgPSBhLnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICAgIHZhciB4MiA9IG5ldyBCTigwKTtcblxuICAgIHZhciBkZWx0YSA9IGIuY2xvbmUoKTtcblxuICAgIHdoaWxlIChhLmNtcG4oMSkgPiAwICYmIGIuY21wbigxKSA+IDApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7IChhLndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgYS5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgxLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgxLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgxLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoYi53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIGIuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmICh4Mi5pc09kZCgpKSB7XG4gICAgICAgICAgICB4Mi5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4Mi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGEuY21wKGIpID49IDApIHtcbiAgICAgICAgYS5pc3ViKGIpO1xuICAgICAgICB4MS5pc3ViKHgyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGIuaXN1YihhKTtcbiAgICAgICAgeDIuaXN1Yih4MSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlcztcbiAgICBpZiAoYS5jbXBuKDEpID09PSAwKSB7XG4gICAgICByZXMgPSB4MTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0geDI7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQocCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ2NkID0gZnVuY3Rpb24gZ2NkIChudW0pIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIG51bS5hYnMoKTtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gdGhpcy5hYnMoKTtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtLmNsb25lKCk7XG4gICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgYi5uZWdhdGl2ZSA9IDA7XG5cbiAgICAvLyBSZW1vdmUgY29tbW9uIGZhY3RvciBvZiB0d29cbiAgICBmb3IgKHZhciBzaGlmdCA9IDA7IGEuaXNFdmVuKCkgJiYgYi5pc0V2ZW4oKTsgc2hpZnQrKykge1xuICAgICAgYS5pdXNocm4oMSk7XG4gICAgICBiLml1c2hybigxKTtcbiAgICB9XG5cbiAgICBkbyB7XG4gICAgICB3aGlsZSAoYS5pc0V2ZW4oKSkge1xuICAgICAgICBhLml1c2hybigxKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgIGIuaXVzaHJuKDEpO1xuICAgICAgfVxuXG4gICAgICB2YXIgciA9IGEuY21wKGIpO1xuICAgICAgaWYgKHIgPCAwKSB7XG4gICAgICAgIC8vIFN3YXAgYGFgIGFuZCBgYmAgdG8gbWFrZSBgYWAgYWx3YXlzIGJpZ2dlciB0aGFuIGBiYFxuICAgICAgICB2YXIgdCA9IGE7XG4gICAgICAgIGEgPSBiO1xuICAgICAgICBiID0gdDtcbiAgICAgIH0gZWxzZSBpZiAociA9PT0gMCB8fCBiLmNtcG4oMSkgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGEuaXN1YihiKTtcbiAgICB9IHdoaWxlICh0cnVlKTtcblxuICAgIHJldHVybiBiLml1c2hsbihzaGlmdCk7XG4gIH07XG5cbiAgLy8gSW52ZXJ0IG51bWJlciBpbiB0aGUgZmllbGQgRihudW0pXG4gIEJOLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZWdjZChudW0pLmEudW1vZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiBpc0V2ZW4gKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uIGlzT2RkICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMTtcbiAgfTtcblxuICAvLyBBbmQgZmlyc3Qgd29yZCBhbmQgbnVtXG4gIEJOLnByb3RvdHlwZS5hbmRsbiA9IGZ1bmN0aW9uIGFuZGxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkc1swXSAmIG51bTtcbiAgfTtcblxuICAvLyBJbmNyZW1lbnQgYXQgdGhlIGJpdCBwb3NpdGlvbiBpbi1saW5lXG4gIEJOLnByb3RvdHlwZS5iaW5jbiA9IGZ1bmN0aW9uIGJpbmNuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicpO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHRoaXMuX2V4cGFuZChzICsgMSk7XG4gICAgICB0aGlzLndvcmRzW3NdIHw9IHE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgYml0IGFuZCBwcm9wYWdhdGUsIGlmIG5lZWRlZFxuICAgIHZhciBjYXJyeSA9IHE7XG4gICAgZm9yICh2YXIgaSA9IHM7IGNhcnJ5ICE9PSAwICYmIGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdyArPSBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+Pj4gMjY7XG4gICAgICB3ICY9IDB4M2ZmZmZmZjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiBpc1plcm8gKCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbXBuID0gZnVuY3Rpb24gY21wbiAobnVtKSB7XG4gICAgdmFyIG5lZ2F0aXZlID0gbnVtIDwgMDtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmICFuZWdhdGl2ZSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG5lZ2F0aXZlKSByZXR1cm4gMTtcblxuICAgIHRoaXMuX3N0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyLnN0cmlwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gciBpcyBhIEJOIHY0IGluc3RhbmNlXG4gICAgICAgIHIuc3RyaXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHIgaXMgYSBCTiB2NSBpbnN0YW5jZVxuICAgICAgICByLl9zdHJpcCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dCkge1xuICAgIGlucHV0Lml1c2hybih0aGlzLm4sIDAsIG91dCk7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICByZXR1cm4gbnVtLmltdWwodGhpcy5rKTtcbiAgfTtcblxuICBmdW5jdGlvbiBLMjU2ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnazI1NicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYnKTtcbiAgfVxuICBpbmhlcml0cyhLMjU2LCBNUHJpbWUpO1xuXG4gIEsyNTYucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXRwdXQpIHtcbiAgICAvLyAyNTYgPSA5ICogMjYgKyAyMlxuICAgIHZhciBtYXNrID0gMHgzZmZmZmY7XG5cbiAgICB2YXIgb3V0TGVuID0gTWF0aC5taW4oaW5wdXQubGVuZ3RoLCA5KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG91dExlbjsgaSsrKSB7XG4gICAgICBvdXRwdXQud29yZHNbaV0gPSBpbnB1dC53b3Jkc1tpXTtcbiAgICB9XG4gICAgb3V0cHV0Lmxlbmd0aCA9IG91dExlbjtcblxuICAgIGlmIChpbnB1dC5sZW5ndGggPD0gOSkge1xuICAgICAgaW5wdXQud29yZHNbMF0gPSAwO1xuICAgICAgaW5wdXQubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTaGlmdCBieSA5IGxpbWJzXG4gICAgdmFyIHByZXYgPSBpbnB1dC53b3Jkc1s5XTtcbiAgICBvdXRwdXQud29yZHNbb3V0cHV0Lmxlbmd0aCsrXSA9IHByZXYgJiBtYXNrO1xuXG4gICAgZm9yIChpID0gMTA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5leHQgPSBpbnB1dC53b3Jkc1tpXSB8IDA7XG4gICAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gKChuZXh0ICYgbWFzaykgPDwgNCkgfCAocHJldiA+Pj4gMjIpO1xuICAgICAgcHJldiA9IG5leHQ7XG4gICAgfVxuICAgIHByZXYgPj4+PSAyMjtcbiAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gcHJldjtcbiAgICBpZiAocHJldiA9PT0gMCAmJiBpbnB1dC5sZW5ndGggPiAxMCkge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDEwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gOTtcbiAgICB9XG4gIH07XG5cbiAgSzI1Ni5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTAwMDAwM2QxID0gWyAweDQwLCAweDNkMSBdXG4gICAgbnVtLndvcmRzW251bS5sZW5ndGhdID0gMDtcbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aCArIDFdID0gMDtcbiAgICBudW0ubGVuZ3RoICs9IDI7XG5cbiAgICAvLyBib3VuZGVkIGF0OiAweDQwICogMHgzZmZmZmZmICsgMHgzZDAgPSAweDEwMDAwMDM5MFxuICAgIHZhciBsbyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gbnVtLndvcmRzW2ldIHwgMDtcbiAgICAgIGxvICs9IHcgKiAweDNkMTtcbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgbG8gPSB3ICogMHg0MCArICgobG8gLyAweDQwMDAwMDApIHwgMCk7XG4gICAgfVxuXG4gICAgLy8gRmFzdCBsZW5ndGggcmVkdWN0aW9uXG4gICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICBmdW5jdGlvbiBQMjI0ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDIyNCcsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEnKTtcbiAgfVxuICBpbmhlcml0cyhQMjI0LCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAxOTIgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMTkyJyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicpO1xuICB9XG4gIGluaGVyaXRzKFAxOTIsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDI1NTE5ICgpIHtcbiAgICAvLyAyIF4gMjU1IC0gMTlcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnMjU1MTknLFxuICAgICAgJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnKTtcbiAgfVxuICBpbmhlcml0cyhQMjU1MTksIE1QcmltZSk7XG5cbiAgUDI1NTE5LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxM1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoaSA9IChudW0ud29yZHNbaV0gfCAwKSAqIDB4MTMgKyBjYXJyeTtcbiAgICAgIHZhciBsbyA9IGhpICYgMHgzZmZmZmZmO1xuICAgICAgaGkgPj4+PSAyNjtcblxuICAgICAgbnVtLndvcmRzW2ldID0gbG87XG4gICAgICBjYXJyeSA9IGhpO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgLy8gRXhwb3J0ZWQgbW9zdGx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB1c2UgcGxhaW4gbmFtZSBpbnN0ZWFkXG4gIEJOLl9wcmltZSA9IGZ1bmN0aW9uIHByaW1lIChuYW1lKSB7XG4gICAgLy8gQ2FjaGVkIHZlcnNpb24gb2YgcHJpbWVcbiAgICBpZiAocHJpbWVzW25hbWVdKSByZXR1cm4gcHJpbWVzW25hbWVdO1xuXG4gICAgdmFyIHByaW1lO1xuICAgIGlmIChuYW1lID09PSAnazI1NicpIHtcbiAgICAgIHByaW1lID0gbmV3IEsyNTYoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjI0Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDIyNCgpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AxOTInKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMTkyKCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDI1NTE5Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDI1NTE5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBwcmltZSAnICsgbmFtZSk7XG4gICAgfVxuICAgIHByaW1lc1tuYW1lXSA9IHByaW1lO1xuXG4gICAgcmV0dXJuIHByaW1lO1xuICB9O1xuXG4gIC8vXG4gIC8vIEJhc2UgcmVkdWN0aW9uIGVuZ2luZVxuICAvL1xuICBmdW5jdGlvbiBSZWQgKG0pIHtcbiAgICBpZiAodHlwZW9mIG0gPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgcHJpbWUgPSBCTi5fcHJpbWUobSk7XG4gICAgICB0aGlzLm0gPSBwcmltZS5wO1xuICAgICAgdGhpcy5wcmltZSA9IHByaW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobS5ndG4oMSksICdtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEnKTtcbiAgICAgIHRoaXMubSA9IG07XG4gICAgICB0aGlzLnByaW1lID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkxID0gZnVuY3Rpb24gX3ZlcmlmeTEgKGEpIHtcbiAgICBhc3NlcnQoYS5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkLCAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTIgPSBmdW5jdGlvbiBfdmVyaWZ5MiAoYSwgYikge1xuICAgIGFzc2VydCgoYS5uZWdhdGl2ZSB8IGIubmVnYXRpdmUpID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQgJiYgYS5yZWQgPT09IGIucmVkLFxuICAgICAgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltb2QgPSBmdW5jdGlvbiBpbW9kIChhKSB7XG4gICAgaWYgKHRoaXMucHJpbWUpIHJldHVybiB0aGlzLnByaW1lLmlyZWR1Y2UoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuXG4gICAgbW92ZShhLCBhLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcykpO1xuICAgIHJldHVybiBhO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwidmFyIHI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmFuZChsZW4pIHtcbiAgaWYgKCFyKVxuICAgIHIgPSBuZXcgUmFuZChudWxsKTtcblxuICByZXR1cm4gci5nZW5lcmF0ZShsZW4pO1xufTtcblxuZnVuY3Rpb24gUmFuZChyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQ7XG59XG5tb2R1bGUuZXhwb3J0cy5SYW5kID0gUmFuZDtcblxuUmFuZC5wcm90b3R5cGUuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZShsZW4pIHtcbiAgcmV0dXJuIHRoaXMuX3JhbmQobGVuKTtcbn07XG5cbi8vIEVtdWxhdGUgY3J5cHRvIEFQSSB1c2luZyByYW5keVxuUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gIGlmICh0aGlzLnJhbmQuZ2V0Qnl0ZXMpXG4gICAgcmV0dXJuIHRoaXMucmFuZC5nZXRCeXRlcyhuKTtcblxuICB2YXIgcmVzID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzLmxlbmd0aDsgaSsrKVxuICAgIHJlc1tpXSA9IHRoaXMucmFuZC5nZXRCeXRlKCk7XG4gIHJldHVybiByZXM7XG59O1xuXG5pZiAodHlwZW9mIHNlbGYgPT09ICdvYmplY3QnKSB7XG4gIGlmIChzZWxmLmNyeXB0byAmJiBzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAvLyBNb2Rlcm4gYnJvd3NlcnNcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICAgIHNlbGYuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnIpO1xuICAgICAgcmV0dXJuIGFycjtcbiAgICB9O1xuICB9IGVsc2UgaWYgKHNlbGYubXNDcnlwdG8gJiYgc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAvLyBJRVxuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcblxuICAvLyBTYWZhcmkncyBXZWJXb3JrZXJzIGRvIG5vdCBoYXZlIGBjcnlwdG9gXG4gIH0gZWxzZSBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBPbGQganVua1xuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCB5ZXQnKTtcbiAgICB9O1xuICB9XG59IGVsc2Uge1xuICAvLyBOb2RlLmpzIG9yIFdlYiB3b3JrZXIgd2l0aCBubyBjcnlwdG8gc3VwcG9ydFxuICB0cnkge1xuICAgIHZhciBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcbiAgICBpZiAodHlwZW9mIGNyeXB0by5yYW5kb21CeXRlcyAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCcpO1xuXG4gICAgUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gICAgICByZXR1cm4gY3J5cHRvLnJhbmRvbUJ5dGVzKG4pO1xuICAgIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxufVxuIiwiLy8gYmFzZWQgb24gdGhlIGFlcyBpbXBsaW1lbnRhdGlvbiBpbiB0cmlwbGUgc2VjXG4vLyBodHRwczovL2dpdGh1Yi5jb20va2V5YmFzZS90cmlwbGVzZWNcbi8vIHdoaWNoIGlzIGluIHR1cm4gYmFzZWQgb24gdGhlIG9uZSBmcm9tIGNyeXB0by1qc1xuLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jcnlwdG8tanMvXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG5mdW5jdGlvbiBhc1VJbnQzMkFycmF5IChidWYpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgYnVmID0gQnVmZmVyLmZyb20oYnVmKVxuXG4gIHZhciBsZW4gPSAoYnVmLmxlbmd0aCAvIDQpIHwgMFxuICB2YXIgb3V0ID0gbmV3IEFycmF5KGxlbilcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgb3V0W2ldID0gYnVmLnJlYWRVSW50MzJCRShpICogNClcbiAgfVxuXG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gc2NydWJWZWMgKHYpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgdisrKSB7XG4gICAgdltpXSA9IDBcbiAgfVxufVxuXG5mdW5jdGlvbiBjcnlwdEJsb2NrIChNLCBrZXlTY2hlZHVsZSwgU1VCX01JWCwgU0JPWCwgblJvdW5kcykge1xuICB2YXIgU1VCX01JWDAgPSBTVUJfTUlYWzBdXG4gIHZhciBTVUJfTUlYMSA9IFNVQl9NSVhbMV1cbiAgdmFyIFNVQl9NSVgyID0gU1VCX01JWFsyXVxuICB2YXIgU1VCX01JWDMgPSBTVUJfTUlYWzNdXG5cbiAgdmFyIHMwID0gTVswXSBeIGtleVNjaGVkdWxlWzBdXG4gIHZhciBzMSA9IE1bMV0gXiBrZXlTY2hlZHVsZVsxXVxuICB2YXIgczIgPSBNWzJdIF4ga2V5U2NoZWR1bGVbMl1cbiAgdmFyIHMzID0gTVszXSBeIGtleVNjaGVkdWxlWzNdXG4gIHZhciB0MCwgdDEsIHQyLCB0M1xuICB2YXIga3NSb3cgPSA0XG5cbiAgZm9yICh2YXIgcm91bmQgPSAxOyByb3VuZCA8IG5Sb3VuZHM7IHJvdW5kKyspIHtcbiAgICB0MCA9IFNVQl9NSVgwW3MwID4+PiAyNF0gXiBTVUJfTUlYMVsoczEgPj4+IDE2KSAmIDB4ZmZdIF4gU1VCX01JWDJbKHMyID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWDNbczMgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDEgPSBTVUJfTUlYMFtzMSA+Pj4gMjRdIF4gU1VCX01JWDFbKHMyID4+PiAxNikgJiAweGZmXSBeIFNVQl9NSVgyWyhzMyA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVgzW3MwICYgMHhmZl0gXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICAgIHQyID0gU1VCX01JWDBbczIgPj4+IDI0XSBeIFNVQl9NSVgxWyhzMyA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYMlsoczAgPj4+IDgpICYgMHhmZl0gXiBTVUJfTUlYM1tzMSAmIDB4ZmZdIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgICB0MyA9IFNVQl9NSVgwW3MzID4+PiAyNF0gXiBTVUJfTUlYMVsoczAgPj4+IDE2KSAmIDB4ZmZdIF4gU1VCX01JWDJbKHMxID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWDNbczIgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgczAgPSB0MFxuICAgIHMxID0gdDFcbiAgICBzMiA9IHQyXG4gICAgczMgPSB0M1xuICB9XG5cbiAgdDAgPSAoKFNCT1hbczAgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczEgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMiA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczMgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICB0MSA9ICgoU0JPWFtzMSA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMiA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMzID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMCAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gIHQyID0gKChTQk9YW3MyID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMzID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczAgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MxICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgdDMgPSAoKFNCT1hbczMgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczAgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMSA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczIgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICB0MCA9IHQwID4+PiAwXG4gIHQxID0gdDEgPj4+IDBcbiAgdDIgPSB0MiA+Pj4gMFxuICB0MyA9IHQzID4+PiAwXG5cbiAgcmV0dXJuIFt0MCwgdDEsIHQyLCB0M11cbn1cblxuLy8gQUVTIGNvbnN0YW50c1xudmFyIFJDT04gPSBbMHgwMCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgxYiwgMHgzNl1cbnZhciBHID0gKGZ1bmN0aW9uICgpIHtcbiAgLy8gQ29tcHV0ZSBkb3VibGUgdGFibGVcbiAgdmFyIGQgPSBuZXcgQXJyYXkoMjU2KVxuICBmb3IgKHZhciBqID0gMDsgaiA8IDI1NjsgaisrKSB7XG4gICAgaWYgKGogPCAxMjgpIHtcbiAgICAgIGRbal0gPSBqIDw8IDFcbiAgICB9IGVsc2Uge1xuICAgICAgZFtqXSA9IChqIDw8IDEpIF4gMHgxMWJcbiAgICB9XG4gIH1cblxuICB2YXIgU0JPWCA9IFtdXG4gIHZhciBJTlZfU0JPWCA9IFtdXG4gIHZhciBTVUJfTUlYID0gW1tdLCBbXSwgW10sIFtdXVxuICB2YXIgSU5WX1NVQl9NSVggPSBbW10sIFtdLCBbXSwgW11dXG5cbiAgLy8gV2FsayBHRigyXjgpXG4gIHZhciB4ID0gMFxuICB2YXIgeGkgPSAwXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpIHtcbiAgICAvLyBDb21wdXRlIHNib3hcbiAgICB2YXIgc3ggPSB4aSBeICh4aSA8PCAxKSBeICh4aSA8PCAyKSBeICh4aSA8PCAzKSBeICh4aSA8PCA0KVxuICAgIHN4ID0gKHN4ID4+PiA4KSBeIChzeCAmIDB4ZmYpIF4gMHg2M1xuICAgIFNCT1hbeF0gPSBzeFxuICAgIElOVl9TQk9YW3N4XSA9IHhcblxuICAgIC8vIENvbXB1dGUgbXVsdGlwbGljYXRpb25cbiAgICB2YXIgeDIgPSBkW3hdXG4gICAgdmFyIHg0ID0gZFt4Ml1cbiAgICB2YXIgeDggPSBkW3g0XVxuXG4gICAgLy8gQ29tcHV0ZSBzdWIgYnl0ZXMsIG1peCBjb2x1bW5zIHRhYmxlc1xuICAgIHZhciB0ID0gKGRbc3hdICogMHgxMDEpIF4gKHN4ICogMHgxMDEwMTAwKVxuICAgIFNVQl9NSVhbMF1beF0gPSAodCA8PCAyNCkgfCAodCA+Pj4gOClcbiAgICBTVUJfTUlYWzFdW3hdID0gKHQgPDwgMTYpIHwgKHQgPj4+IDE2KVxuICAgIFNVQl9NSVhbMl1beF0gPSAodCA8PCA4KSB8ICh0ID4+PiAyNClcbiAgICBTVUJfTUlYWzNdW3hdID0gdFxuXG4gICAgLy8gQ29tcHV0ZSBpbnYgc3ViIGJ5dGVzLCBpbnYgbWl4IGNvbHVtbnMgdGFibGVzXG4gICAgdCA9ICh4OCAqIDB4MTAxMDEwMSkgXiAoeDQgKiAweDEwMDAxKSBeICh4MiAqIDB4MTAxKSBeICh4ICogMHgxMDEwMTAwKVxuICAgIElOVl9TVUJfTUlYWzBdW3N4XSA9ICh0IDw8IDI0KSB8ICh0ID4+PiA4KVxuICAgIElOVl9TVUJfTUlYWzFdW3N4XSA9ICh0IDw8IDE2KSB8ICh0ID4+PiAxNilcbiAgICBJTlZfU1VCX01JWFsyXVtzeF0gPSAodCA8PCA4KSB8ICh0ID4+PiAyNClcbiAgICBJTlZfU1VCX01JWFszXVtzeF0gPSB0XG5cbiAgICBpZiAoeCA9PT0gMCkge1xuICAgICAgeCA9IHhpID0gMVxuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geDIgXiBkW2RbZFt4OCBeIHgyXV1dXG4gICAgICB4aSBePSBkW2RbeGldXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgU0JPWDogU0JPWCxcbiAgICBJTlZfU0JPWDogSU5WX1NCT1gsXG4gICAgU1VCX01JWDogU1VCX01JWCxcbiAgICBJTlZfU1VCX01JWDogSU5WX1NVQl9NSVhcbiAgfVxufSkoKVxuXG5mdW5jdGlvbiBBRVMgKGtleSkge1xuICB0aGlzLl9rZXkgPSBhc1VJbnQzMkFycmF5KGtleSlcbiAgdGhpcy5fcmVzZXQoKVxufVxuXG5BRVMuYmxvY2tTaXplID0gNCAqIDRcbkFFUy5rZXlTaXplID0gMjU2IC8gOFxuQUVTLnByb3RvdHlwZS5ibG9ja1NpemUgPSBBRVMuYmxvY2tTaXplXG5BRVMucHJvdG90eXBlLmtleVNpemUgPSBBRVMua2V5U2l6ZVxuQUVTLnByb3RvdHlwZS5fcmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBrZXlXb3JkcyA9IHRoaXMuX2tleVxuICB2YXIga2V5U2l6ZSA9IGtleVdvcmRzLmxlbmd0aFxuICB2YXIgblJvdW5kcyA9IGtleVNpemUgKyA2XG4gIHZhciBrc1Jvd3MgPSAoblJvdW5kcyArIDEpICogNFxuXG4gIHZhciBrZXlTY2hlZHVsZSA9IFtdXG4gIGZvciAodmFyIGsgPSAwOyBrIDwga2V5U2l6ZTsgaysrKSB7XG4gICAga2V5U2NoZWR1bGVba10gPSBrZXlXb3Jkc1trXVxuICB9XG5cbiAgZm9yIChrID0ga2V5U2l6ZTsgayA8IGtzUm93czsgaysrKSB7XG4gICAgdmFyIHQgPSBrZXlTY2hlZHVsZVtrIC0gMV1cblxuICAgIGlmIChrICUga2V5U2l6ZSA9PT0gMCkge1xuICAgICAgdCA9ICh0IDw8IDgpIHwgKHQgPj4+IDI0KVxuICAgICAgdCA9XG4gICAgICAgIChHLlNCT1hbdCA+Pj4gMjRdIDw8IDI0KSB8XG4gICAgICAgIChHLlNCT1hbKHQgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8XG4gICAgICAgIChHLlNCT1hbKHQgPj4+IDgpICYgMHhmZl0gPDwgOCkgfFxuICAgICAgICAoRy5TQk9YW3QgJiAweGZmXSlcblxuICAgICAgdCBePSBSQ09OWyhrIC8ga2V5U2l6ZSkgfCAwXSA8PCAyNFxuICAgIH0gZWxzZSBpZiAoa2V5U2l6ZSA+IDYgJiYgayAlIGtleVNpemUgPT09IDQpIHtcbiAgICAgIHQgPVxuICAgICAgICAoRy5TQk9YW3QgPj4+IDI0XSA8PCAyNCkgfFxuICAgICAgICAoRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXSA8PCAxNikgfFxuICAgICAgICAoRy5TQk9YWyh0ID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHxcbiAgICAgICAgKEcuU0JPWFt0ICYgMHhmZl0pXG4gICAgfVxuXG4gICAga2V5U2NoZWR1bGVba10gPSBrZXlTY2hlZHVsZVtrIC0ga2V5U2l6ZV0gXiB0XG4gIH1cblxuICB2YXIgaW52S2V5U2NoZWR1bGUgPSBbXVxuICBmb3IgKHZhciBpayA9IDA7IGlrIDwga3NSb3dzOyBpaysrKSB7XG4gICAgdmFyIGtzUiA9IGtzUm93cyAtIGlrXG4gICAgdmFyIHR0ID0ga2V5U2NoZWR1bGVba3NSIC0gKGlrICUgNCA/IDAgOiA0KV1cblxuICAgIGlmIChpayA8IDQgfHwga3NSIDw9IDQpIHtcbiAgICAgIGludktleVNjaGVkdWxlW2lrXSA9IHR0XG4gICAgfSBlbHNlIHtcbiAgICAgIGludktleVNjaGVkdWxlW2lrXSA9XG4gICAgICAgIEcuSU5WX1NVQl9NSVhbMF1bRy5TQk9YW3R0ID4+PiAyNF1dIF5cbiAgICAgICAgRy5JTlZfU1VCX01JWFsxXVtHLlNCT1hbKHR0ID4+PiAxNikgJiAweGZmXV0gXlxuICAgICAgICBHLklOVl9TVUJfTUlYWzJdW0cuU0JPWFsodHQgPj4+IDgpICYgMHhmZl1dIF5cbiAgICAgICAgRy5JTlZfU1VCX01JWFszXVtHLlNCT1hbdHQgJiAweGZmXV1cbiAgICB9XG4gIH1cblxuICB0aGlzLl9uUm91bmRzID0gblJvdW5kc1xuICB0aGlzLl9rZXlTY2hlZHVsZSA9IGtleVNjaGVkdWxlXG4gIHRoaXMuX2ludktleVNjaGVkdWxlID0gaW52S2V5U2NoZWR1bGVcbn1cblxuQUVTLnByb3RvdHlwZS5lbmNyeXB0QmxvY2tSYXcgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYXNVSW50MzJBcnJheShNKVxuICByZXR1cm4gY3J5cHRCbG9jayhNLCB0aGlzLl9rZXlTY2hlZHVsZSwgRy5TVUJfTUlYLCBHLlNCT1gsIHRoaXMuX25Sb3VuZHMpXG59XG5cbkFFUy5wcm90b3R5cGUuZW5jcnlwdEJsb2NrID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIG91dCA9IHRoaXMuZW5jcnlwdEJsb2NrUmF3KE0pXG4gIHZhciBidWYgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMTYpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFswXSwgMClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCA0KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMl0sIDgpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFszXSwgMTIpXG4gIHJldHVybiBidWZcbn1cblxuQUVTLnByb3RvdHlwZS5kZWNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYXNVSW50MzJBcnJheShNKVxuXG4gIC8vIHN3YXBcbiAgdmFyIG0xID0gTVsxXVxuICBNWzFdID0gTVszXVxuICBNWzNdID0gbTFcblxuICB2YXIgb3V0ID0gY3J5cHRCbG9jayhNLCB0aGlzLl9pbnZLZXlTY2hlZHVsZSwgRy5JTlZfU1VCX01JWCwgRy5JTlZfU0JPWCwgdGhpcy5fblJvdW5kcylcbiAgdmFyIGJ1ZiA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgxNilcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzBdLCAwKVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDQpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsyXSwgOClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCAxMilcbiAgcmV0dXJuIGJ1ZlxufVxuXG5BRVMucHJvdG90eXBlLnNjcnViID0gZnVuY3Rpb24gKCkge1xuICBzY3J1YlZlYyh0aGlzLl9rZXlTY2hlZHVsZSlcbiAgc2NydWJWZWModGhpcy5faW52S2V5U2NoZWR1bGUpXG4gIHNjcnViVmVjKHRoaXMuX2tleSlcbn1cblxubW9kdWxlLmV4cG9ydHMuQUVTID0gQUVTXG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEdIQVNIID0gcmVxdWlyZSgnLi9naGFzaCcpXG52YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG52YXIgaW5jcjMyID0gcmVxdWlyZSgnLi9pbmNyMzInKVxuXG5mdW5jdGlvbiB4b3JUZXN0IChhLCBiKSB7XG4gIHZhciBvdXQgPSAwXG4gIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIG91dCsrXG5cbiAgdmFyIGxlbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIG91dCArPSAoYVtpXSBeIGJbaV0pXG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIGNhbGNJdiAoc2VsZiwgaXYsIGNrKSB7XG4gIGlmIChpdi5sZW5ndGggPT09IDEyKSB7XG4gICAgc2VsZi5fZmluSUQgPSBCdWZmZXIuY29uY2F0KFtpdiwgQnVmZmVyLmZyb20oWzAsIDAsIDAsIDFdKV0pXG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW2l2LCBCdWZmZXIuZnJvbShbMCwgMCwgMCwgMl0pXSlcbiAgfVxuICB2YXIgZ2hhc2ggPSBuZXcgR0hBU0goY2spXG4gIHZhciBsZW4gPSBpdi5sZW5ndGhcbiAgdmFyIHRvUGFkID0gbGVuICUgMTZcbiAgZ2hhc2gudXBkYXRlKGl2KVxuICBpZiAodG9QYWQpIHtcbiAgICB0b1BhZCA9IDE2IC0gdG9QYWRcbiAgICBnaGFzaC51cGRhdGUoQnVmZmVyLmFsbG9jKHRvUGFkLCAwKSlcbiAgfVxuICBnaGFzaC51cGRhdGUoQnVmZmVyLmFsbG9jKDgsIDApKVxuICB2YXIgaXZCaXRzID0gbGVuICogOFxuICB2YXIgdGFpbCA9IEJ1ZmZlci5hbGxvYyg4KVxuICB0YWlsLndyaXRlVUludEJFKGl2Qml0cywgMCwgOClcbiAgZ2hhc2gudXBkYXRlKHRhaWwpXG4gIHNlbGYuX2ZpbklEID0gZ2hhc2guc3RhdGVcbiAgdmFyIG91dCA9IEJ1ZmZlci5mcm9tKHNlbGYuX2ZpbklEKVxuICBpbmNyMzIob3V0KVxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBTdHJlYW1DaXBoZXIgKG1vZGUsIGtleSwgaXYsIGRlY3J5cHQpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcblxuICB2YXIgaCA9IEJ1ZmZlci5hbGxvYyg0LCAwKVxuXG4gIHRoaXMuX2NpcGhlciA9IG5ldyBhZXMuQUVTKGtleSlcbiAgdmFyIGNrID0gdGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayhoKVxuICB0aGlzLl9naGFzaCA9IG5ldyBHSEFTSChjaylcbiAgaXYgPSBjYWxjSXYodGhpcywgaXYsIGNrKVxuXG4gIHRoaXMuX3ByZXYgPSBCdWZmZXIuZnJvbShpdilcbiAgdGhpcy5fY2FjaGUgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbiAgdGhpcy5fc2VjQ2FjaGUgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbiAgdGhpcy5fZGVjcnlwdCA9IGRlY3J5cHRcbiAgdGhpcy5fYWxlbiA9IDBcbiAgdGhpcy5fbGVuID0gMFxuICB0aGlzLl9tb2RlID0gbW9kZVxuXG4gIHRoaXMuX2F1dGhUYWcgPSBudWxsXG4gIHRoaXMuX2NhbGxlZCA9IGZhbHNlXG59XG5cbmluaGVyaXRzKFN0cmVhbUNpcGhlciwgVHJhbnNmb3JtKVxuXG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgaWYgKCF0aGlzLl9jYWxsZWQgJiYgdGhpcy5fYWxlbikge1xuICAgIHZhciBydW1wID0gMTYgLSAodGhpcy5fYWxlbiAlIDE2KVxuICAgIGlmIChydW1wIDwgMTYpIHtcbiAgICAgIHJ1bXAgPSBCdWZmZXIuYWxsb2MocnVtcCwgMClcbiAgICAgIHRoaXMuX2doYXNoLnVwZGF0ZShydW1wKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuX2NhbGxlZCA9IHRydWVcbiAgdmFyIG91dCA9IHRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLCBjaHVuaylcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUoY2h1bmspXG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fZ2hhc2gudXBkYXRlKG91dClcbiAgfVxuICB0aGlzLl9sZW4gKz0gY2h1bmsubGVuZ3RoXG4gIHJldHVybiBvdXRcbn1cblxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLl9kZWNyeXB0ICYmICF0aGlzLl9hdXRoVGFnKSB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YScpXG5cbiAgdmFyIHRhZyA9IHhvcih0aGlzLl9naGFzaC5maW5hbCh0aGlzLl9hbGVuICogOCwgdGhpcy5fbGVuICogOCksIHRoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2sodGhpcy5fZmluSUQpKVxuICBpZiAodGhpcy5fZGVjcnlwdCAmJiB4b3JUZXN0KHRhZywgdGhpcy5fYXV0aFRhZykpIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgc3RhdGUgb3IgdW5hYmxlIHRvIGF1dGhlbnRpY2F0ZSBkYXRhJylcblxuICB0aGlzLl9hdXRoVGFnID0gdGFnXG4gIHRoaXMuX2NpcGhlci5zY3J1YigpXG59XG5cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuZ2V0QXV0aFRhZyA9IGZ1bmN0aW9uIGdldEF1dGhUYWcgKCkge1xuICBpZiAodGhpcy5fZGVjcnlwdCB8fCAhQnVmZmVyLmlzQnVmZmVyKHRoaXMuX2F1dGhUYWcpKSB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcblxuICByZXR1cm4gdGhpcy5fYXV0aFRhZ1xufVxuXG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLnNldEF1dGhUYWcgPSBmdW5jdGlvbiBzZXRBdXRoVGFnICh0YWcpIHtcbiAgaWYgKCF0aGlzLl9kZWNyeXB0KSB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcblxuICB0aGlzLl9hdXRoVGFnID0gdGFnXG59XG5cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuc2V0QUFEID0gZnVuY3Rpb24gc2V0QUFEIChidWYpIHtcbiAgaWYgKHRoaXMuX2NhbGxlZCkgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIHNldCBBQUQgaW4gdW5zdXBwb3J0ZWQgc3RhdGUnKVxuXG4gIHRoaXMuX2doYXNoLnVwZGF0ZShidWYpXG4gIHRoaXMuX2FsZW4gKz0gYnVmLmxlbmd0aFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0cmVhbUNpcGhlclxuIiwidmFyIGNpcGhlcnMgPSByZXF1aXJlKCcuL2VuY3J5cHRlcicpXG52YXIgZGVjaXBoZXJzID0gcmVxdWlyZSgnLi9kZWNyeXB0ZXInKVxudmFyIG1vZGVzID0gcmVxdWlyZSgnLi9tb2Rlcy9saXN0Lmpzb24nKVxuXG5mdW5jdGlvbiBnZXRDaXBoZXJzICgpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1vZGVzKVxufVxuXG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGV4cG9ydHMuQ2lwaGVyID0gY2lwaGVycy5jcmVhdGVDaXBoZXJcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyaXYgPSBleHBvcnRzLkNpcGhlcml2ID0gY2lwaGVycy5jcmVhdGVDaXBoZXJpdlxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlciA9IGV4cG9ydHMuRGVjaXBoZXIgPSBkZWNpcGhlcnMuY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXJpdiA9IGV4cG9ydHMuRGVjaXBoZXJpdiA9IGRlY2lwaGVycy5jcmVhdGVEZWNpcGhlcml2XG5leHBvcnRzLmxpc3RDaXBoZXJzID0gZXhwb3J0cy5nZXRDaXBoZXJzID0gZ2V0Q2lwaGVyc1xuIiwidmFyIEF1dGhDaXBoZXIgPSByZXF1aXJlKCcuL2F1dGhDaXBoZXInKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgTU9ERVMgPSByZXF1aXJlKCcuL21vZGVzJylcbnZhciBTdHJlYW1DaXBoZXIgPSByZXF1aXJlKCcuL3N0cmVhbUNpcGhlcicpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGFlcyA9IHJlcXVpcmUoJy4vYWVzJylcbnZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5mdW5jdGlvbiBEZWNpcGhlciAobW9kZSwga2V5LCBpdikge1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuXG4gIHRoaXMuX2NhY2hlID0gbmV3IFNwbGl0dGVyKClcbiAgdGhpcy5fbGFzdCA9IHZvaWQgMFxuICB0aGlzLl9jaXBoZXIgPSBuZXcgYWVzLkFFUyhrZXkpXG4gIHRoaXMuX3ByZXYgPSBCdWZmZXIuZnJvbShpdilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5cbmluaGVyaXRzKERlY2lwaGVyLCBUcmFuc2Zvcm0pXG5cbkRlY2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgdGhpcy5fY2FjaGUuYWRkKGRhdGEpXG4gIHZhciBjaHVua1xuICB2YXIgdGhpbmdcbiAgdmFyIG91dCA9IFtdXG4gIHdoaWxlICgoY2h1bmsgPSB0aGlzLl9jYWNoZS5nZXQodGhpcy5fYXV0b3BhZGRpbmcpKSkge1xuICAgIHRoaW5nID0gdGhpcy5fbW9kZS5kZWNyeXB0KHRoaXMsIGNodW5rKVxuICAgIG91dC5wdXNoKHRoaW5nKVxuICB9XG4gIHJldHVybiBCdWZmZXIuY29uY2F0KG91dClcbn1cblxuRGVjaXBoZXIucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNodW5rID0gdGhpcy5fY2FjaGUuZmx1c2goKVxuICBpZiAodGhpcy5fYXV0b3BhZGRpbmcpIHtcbiAgICByZXR1cm4gdW5wYWQodGhpcy5fbW9kZS5kZWNyeXB0KHRoaXMsIGNodW5rKSlcbiAgfSBlbHNlIGlmIChjaHVuaykge1xuICAgIHRocm93IG5ldyBFcnJvcignZGF0YSBub3QgbXVsdGlwbGUgb2YgYmxvY2sgbGVuZ3RoJylcbiAgfVxufVxuXG5EZWNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIFNwbGl0dGVyICgpIHtcbiAgdGhpcy5jYWNoZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxufVxuXG5TcGxpdHRlci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgdGhpcy5jYWNoZSA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuY2FjaGUsIGRhdGFdKVxufVxuXG5TcGxpdHRlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGF1dG9QYWRkaW5nKSB7XG4gIHZhciBvdXRcbiAgaWYgKGF1dG9QYWRkaW5nKSB7XG4gICAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoID4gMTYpIHtcbiAgICAgIG91dCA9IHRoaXMuY2FjaGUuc2xpY2UoMCwgMTYpXG4gICAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICAgIHJldHVybiBvdXRcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoID49IDE2KSB7XG4gICAgICBvdXQgPSB0aGlzLmNhY2hlLnNsaWNlKDAsIDE2KVxuICAgICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGUuc2xpY2UoMTYpXG4gICAgICByZXR1cm4gb3V0XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5jYWNoZS5sZW5ndGgpIHJldHVybiB0aGlzLmNhY2hlXG59XG5cbmZ1bmN0aW9uIHVucGFkIChsYXN0KSB7XG4gIHZhciBwYWRkZWQgPSBsYXN0WzE1XVxuICBpZiAocGFkZGVkIDwgMSB8fCBwYWRkZWQgPiAxNikge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIGRlY3J5cHQgZGF0YScpXG4gIH1cbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgcGFkZGVkKSB7XG4gICAgaWYgKGxhc3RbKGkgKyAoMTYgLSBwYWRkZWQpKV0gIT09IHBhZGRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmFibGUgdG8gZGVjcnlwdCBkYXRhJylcbiAgICB9XG4gIH1cbiAgaWYgKHBhZGRlZCA9PT0gMTYpIHJldHVyblxuXG4gIHJldHVybiBsYXN0LnNsaWNlKDAsIDE2IC0gcGFkZGVkKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWNpcGhlcml2IChzdWl0ZSwgcGFzc3dvcmQsIGl2KSB7XG4gIHZhciBjb25maWcgPSBNT0RFU1tzdWl0ZS50b0xvd2VyQ2FzZSgpXVxuICBpZiAoIWNvbmZpZykgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcblxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykgaXYgPSBCdWZmZXIuZnJvbShpdilcbiAgaWYgKGNvbmZpZy5tb2RlICE9PSAnR0NNJyAmJiBpdi5sZW5ndGggIT09IGNvbmZpZy5pdikgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBpdiBsZW5ndGggJyArIGl2Lmxlbmd0aClcblxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykgcGFzc3dvcmQgPSBCdWZmZXIuZnJvbShwYXNzd29yZClcbiAgaWYgKHBhc3N3b3JkLmxlbmd0aCAhPT0gY29uZmlnLmtleSAvIDgpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuXG4gIGlmIChjb25maWcudHlwZSA9PT0gJ3N0cmVhbScpIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbUNpcGhlcihjb25maWcubW9kdWxlLCBwYXNzd29yZCwgaXYsIHRydWUpXG4gIH0gZWxzZSBpZiAoY29uZmlnLnR5cGUgPT09ICdhdXRoJykge1xuICAgIHJldHVybiBuZXcgQXV0aENpcGhlcihjb25maWcubW9kdWxlLCBwYXNzd29yZCwgaXYsIHRydWUpXG4gIH1cblxuICByZXR1cm4gbmV3IERlY2lwaGVyKGNvbmZpZy5tb2R1bGUsIHBhc3N3b3JkLCBpdilcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gTU9ERVNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG5cbiAgdmFyIGtleXMgPSBlYnRrKHBhc3N3b3JkLCBmYWxzZSwgY29uZmlnLmtleSwgY29uZmlnLml2KVxuICByZXR1cm4gY3JlYXRlRGVjaXBoZXJpdihzdWl0ZSwga2V5cy5rZXksIGtleXMuaXYpXG59XG5cbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBjcmVhdGVEZWNpcGhlclxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlcml2ID0gY3JlYXRlRGVjaXBoZXJpdlxuIiwidmFyIE1PREVTID0gcmVxdWlyZSgnLi9tb2RlcycpXG52YXIgQXV0aENpcGhlciA9IHJlcXVpcmUoJy4vYXV0aENpcGhlcicpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBTdHJlYW1DaXBoZXIgPSByZXF1aXJlKCcuL3N0cmVhbUNpcGhlcicpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGFlcyA9IHJlcXVpcmUoJy4vYWVzJylcbnZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5mdW5jdGlvbiBDaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcblxuICB0aGlzLl9jYWNoZSA9IG5ldyBTcGxpdHRlcigpXG4gIHRoaXMuX2NpcGhlciA9IG5ldyBhZXMuQUVTKGtleSlcbiAgdGhpcy5fcHJldiA9IEJ1ZmZlci5mcm9tKGl2KVxuICB0aGlzLl9tb2RlID0gbW9kZVxuICB0aGlzLl9hdXRvcGFkZGluZyA9IHRydWVcbn1cblxuaW5oZXJpdHMoQ2lwaGVyLCBUcmFuc2Zvcm0pXG5cbkNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2NhY2hlLmFkZChkYXRhKVxuICB2YXIgY2h1bmtcbiAgdmFyIHRoaW5nXG4gIHZhciBvdXQgPSBbXVxuXG4gIHdoaWxlICgoY2h1bmsgPSB0aGlzLl9jYWNoZS5nZXQoKSkpIHtcbiAgICB0aGluZyA9IHRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLCBjaHVuaylcbiAgICBvdXQucHVzaCh0aGluZylcbiAgfVxuXG4gIHJldHVybiBCdWZmZXIuY29uY2F0KG91dClcbn1cblxudmFyIFBBRERJTkcgPSBCdWZmZXIuYWxsb2MoMTYsIDB4MTApXG5cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIGNodW5rID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIHRoaXMuX2NpcGhlci5zY3J1YigpXG4gICAgcmV0dXJuIGNodW5rXG4gIH1cblxuICBpZiAoIWNodW5rLmVxdWFscyhQQURESU5HKSkge1xuICAgIHRoaXMuX2NpcGhlci5zY3J1YigpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGgnKVxuICB9XG59XG5cbkNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIFNwbGl0dGVyICgpIHtcbiAgdGhpcy5jYWNoZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxufVxuXG5TcGxpdHRlci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgdGhpcy5jYWNoZSA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuY2FjaGUsIGRhdGFdKVxufVxuXG5TcGxpdHRlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPiAxNSkge1xuICAgIHZhciBvdXQgPSB0aGlzLmNhY2hlLnNsaWNlKDAsIDE2KVxuICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgIHJldHVybiBvdXRcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG5TcGxpdHRlci5wcm90b3R5cGUuZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsZW4gPSAxNiAtIHRoaXMuY2FjaGUubGVuZ3RoXG4gIHZhciBwYWRCdWZmID0gQnVmZmVyLmFsbG9jVW5zYWZlKGxlbilcblxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBwYWRCdWZmLndyaXRlVUludDgobGVuLCBpKVxuICB9XG5cbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW3RoaXMuY2FjaGUsIHBhZEJ1ZmZdKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDaXBoZXJpdiAoc3VpdGUsIHBhc3N3b3JkLCBpdikge1xuICB2YXIgY29uZmlnID0gTU9ERVNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG5cbiAgaWYgKHR5cGVvZiBwYXNzd29yZCA9PT0gJ3N0cmluZycpIHBhc3N3b3JkID0gQnVmZmVyLmZyb20ocGFzc3dvcmQpXG4gIGlmIChwYXNzd29yZC5sZW5ndGggIT09IGNvbmZpZy5rZXkgLyA4KSB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIGtleSBsZW5ndGggJyArIHBhc3N3b3JkLmxlbmd0aClcblxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykgaXYgPSBCdWZmZXIuZnJvbShpdilcbiAgaWYgKGNvbmZpZy5tb2RlICE9PSAnR0NNJyAmJiBpdi5sZW5ndGggIT09IGNvbmZpZy5pdikgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBpdiBsZW5ndGggJyArIGl2Lmxlbmd0aClcblxuICBpZiAoY29uZmlnLnR5cGUgPT09ICdzdHJlYW0nKSB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW1DaXBoZXIoY29uZmlnLm1vZHVsZSwgcGFzc3dvcmQsIGl2KVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIoY29uZmlnLm1vZHVsZSwgcGFzc3dvcmQsIGl2KVxuICB9XG5cbiAgcmV0dXJuIG5ldyBDaXBoZXIoY29uZmlnLm1vZHVsZSwgcGFzc3dvcmQsIGl2KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gTU9ERVNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG5cbiAgdmFyIGtleXMgPSBlYnRrKHBhc3N3b3JkLCBmYWxzZSwgY29uZmlnLmtleSwgY29uZmlnLml2KVxuICByZXR1cm4gY3JlYXRlQ2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuXG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyID0gY3JlYXRlQ2lwaGVyXG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBaRVJPRVMgPSBCdWZmZXIuYWxsb2MoMTYsIDApXG5cbmZ1bmN0aW9uIHRvQXJyYXkgKGJ1Zikge1xuICByZXR1cm4gW1xuICAgIGJ1Zi5yZWFkVUludDMyQkUoMCksXG4gICAgYnVmLnJlYWRVSW50MzJCRSg0KSxcbiAgICBidWYucmVhZFVJbnQzMkJFKDgpLFxuICAgIGJ1Zi5yZWFkVUludDMyQkUoMTIpXG4gIF1cbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5IChvdXQpIHtcbiAgdmFyIGJ1ZiA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgxNilcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzBdID4+PiAwLCAwKVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMV0gPj4+IDAsIDQpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsyXSA+Pj4gMCwgOClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzNdID4+PiAwLCAxMilcbiAgcmV0dXJuIGJ1ZlxufVxuXG5mdW5jdGlvbiBHSEFTSCAoa2V5KSB7XG4gIHRoaXMuaCA9IGtleVxuICB0aGlzLnN0YXRlID0gQnVmZmVyLmFsbG9jKDE2LCAwKVxuICB0aGlzLmNhY2hlID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApXG59XG5cbi8vIGZyb20gaHR0cDovL2JpdHdpc2VzaGlmdGxlZnQuZ2l0aHViLmlvL3NqY2wvZG9jL3N5bWJvbHMvc3JjL2NvcmVfZ2NtLmpzLmh0bWxcbi8vIGJ5IEp1aG8gVsOkaMOkLUhlcnR0dWFcbkdIQVNILnByb3RvdHlwZS5naGFzaCA9IGZ1bmN0aW9uIChibG9jaykge1xuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBibG9jay5sZW5ndGgpIHtcbiAgICB0aGlzLnN0YXRlW2ldIF49IGJsb2NrW2ldXG4gIH1cbiAgdGhpcy5fbXVsdGlwbHkoKVxufVxuXG5HSEFTSC5wcm90b3R5cGUuX211bHRpcGx5ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgVmkgPSB0b0FycmF5KHRoaXMuaClcbiAgdmFyIFppID0gWzAsIDAsIDAsIDBdXG4gIHZhciBqLCB4aSwgbHNiVmlcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgMTI4KSB7XG4gICAgeGkgPSAodGhpcy5zdGF0ZVt+fihpIC8gOCldICYgKDEgPDwgKDcgLSAoaSAlIDgpKSkpICE9PSAwXG4gICAgaWYgKHhpKSB7XG4gICAgICAvLyBaX2krMSA9IFpfaSBeIFZfaVxuICAgICAgWmlbMF0gXj0gVmlbMF1cbiAgICAgIFppWzFdIF49IFZpWzFdXG4gICAgICBaaVsyXSBePSBWaVsyXVxuICAgICAgWmlbM10gXj0gVmlbM11cbiAgICB9XG5cbiAgICAvLyBTdG9yZSB0aGUgdmFsdWUgb2YgTFNCKFZfaSlcbiAgICBsc2JWaSA9IChWaVszXSAmIDEpICE9PSAwXG5cbiAgICAvLyBWX2krMSA9IFZfaSA+PiAxXG4gICAgZm9yIChqID0gMzsgaiA+IDA7IGotLSkge1xuICAgICAgVmlbal0gPSAoVmlbal0gPj4+IDEpIHwgKChWaVtqIC0gMV0gJiAxKSA8PCAzMSlcbiAgICB9XG4gICAgVmlbMF0gPSBWaVswXSA+Pj4gMVxuXG4gICAgLy8gSWYgTFNCKFZfaSkgaXMgMSwgVl9pKzEgPSAoVl9pID4+IDEpIF4gUlxuICAgIGlmIChsc2JWaSkge1xuICAgICAgVmlbMF0gPSBWaVswXSBeICgweGUxIDw8IDI0KVxuICAgIH1cbiAgfVxuICB0aGlzLnN0YXRlID0gZnJvbUFycmF5KFppKVxufVxuXG5HSEFTSC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGJ1Zikge1xuICB0aGlzLmNhY2hlID0gQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgYnVmXSlcbiAgdmFyIGNodW5rXG4gIHdoaWxlICh0aGlzLmNhY2hlLmxlbmd0aCA+PSAxNikge1xuICAgIGNodW5rID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICB0aGlzLmdoYXNoKGNodW5rKVxuICB9XG59XG5cbkdIQVNILnByb3RvdHlwZS5maW5hbCA9IGZ1bmN0aW9uIChhYmwsIGJsKSB7XG4gIGlmICh0aGlzLmNhY2hlLmxlbmd0aCkge1xuICAgIHRoaXMuZ2hhc2goQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgWkVST0VTXSwgMTYpKVxuICB9XG5cbiAgdGhpcy5naGFzaChmcm9tQXJyYXkoWzAsIGFibCwgMCwgYmxdKSlcbiAgcmV0dXJuIHRoaXMuc3RhdGVcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBHSEFTSFxuIiwiZnVuY3Rpb24gaW5jcjMyIChpdikge1xuICB2YXIgbGVuID0gaXYubGVuZ3RoXG4gIHZhciBpdGVtXG4gIHdoaWxlIChsZW4tLSkge1xuICAgIGl0ZW0gPSBpdi5yZWFkVUludDgobGVuKVxuICAgIGlmIChpdGVtID09PSAyNTUpIHtcbiAgICAgIGl2LndyaXRlVUludDgoMCwgbGVuKVxuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtKytcbiAgICAgIGl2LndyaXRlVUludDgoaXRlbSwgbGVuKVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gaW5jcjMyXG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBibG9jaykge1xuICB2YXIgZGF0YSA9IHhvcihibG9jaywgc2VsZi5fcHJldilcblxuICBzZWxmLl9wcmV2ID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhkYXRhKVxuICByZXR1cm4gc2VsZi5fcHJldlxufVxuXG5leHBvcnRzLmRlY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgdmFyIHBhZCA9IHNlbGYuX3ByZXZcblxuICBzZWxmLl9wcmV2ID0gYmxvY2tcbiAgdmFyIG91dCA9IHNlbGYuX2NpcGhlci5kZWNyeXB0QmxvY2soYmxvY2spXG5cbiAgcmV0dXJuIHhvcihvdXQsIHBhZClcbn1cbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxuXG5mdW5jdGlvbiBlbmNyeXB0U3RhcnQgKHNlbGYsIGRhdGEsIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGRhdGEubGVuZ3RoXG4gIHZhciBvdXQgPSB4b3IoZGF0YSwgc2VsZi5fY2FjaGUpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UobGVuKVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldiwgZGVjcnlwdCA/IGRhdGEgOiBvdXRdKVxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBkYXRhLCBkZWNyeXB0KSB7XG4gIHZhciBvdXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbiAgdmFyIGxlblxuXG4gIHdoaWxlIChkYXRhLmxlbmd0aCkge1xuICAgIGlmIChzZWxmLl9jYWNoZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHNlbGYuX2NhY2hlID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgICAgc2VsZi5fcHJldiA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxuICAgIH1cblxuICAgIGlmIChzZWxmLl9jYWNoZS5sZW5ndGggPD0gZGF0YS5sZW5ndGgpIHtcbiAgICAgIGxlbiA9IHNlbGYuX2NhY2hlLmxlbmd0aFxuICAgICAgb3V0ID0gQnVmZmVyLmNvbmNhdChbb3V0LCBlbmNyeXB0U3RhcnQoc2VsZiwgZGF0YS5zbGljZSgwLCBsZW4pLCBkZWNyeXB0KV0pXG4gICAgICBkYXRhID0gZGF0YS5zbGljZShsZW4pXG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCA9IEJ1ZmZlci5jb25jYXQoW291dCwgZW5jcnlwdFN0YXJ0KHNlbGYsIGRhdGEsIGRlY3J5cHQpXSlcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dFxufVxuIiwidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbmZ1bmN0aW9uIGVuY3J5cHRCeXRlIChzZWxmLCBieXRlUGFyYW0sIGRlY3J5cHQpIHtcbiAgdmFyIHBhZFxuICB2YXIgaSA9IC0xXG4gIHZhciBsZW4gPSA4XG4gIHZhciBvdXQgPSAwXG4gIHZhciBiaXQsIHZhbHVlXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBwYWQgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gICAgYml0ID0gKGJ5dGVQYXJhbSAmICgxIDw8ICg3IC0gaSkpKSA/IDB4ODAgOiAwXG4gICAgdmFsdWUgPSBwYWRbMF0gXiBiaXRcbiAgICBvdXQgKz0gKCh2YWx1ZSAmIDB4ODApID4+IChpICUgOCkpXG4gICAgc2VsZi5fcHJldiA9IHNoaWZ0SW4oc2VsZi5fcHJldiwgZGVjcnlwdCA/IGJpdCA6IHZhbHVlKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gc2hpZnRJbiAoYnVmZmVyLCB2YWx1ZSkge1xuICB2YXIgbGVuID0gYnVmZmVyLmxlbmd0aFxuICB2YXIgaSA9IC0xXG4gIHZhciBvdXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYnVmZmVyLmxlbmd0aClcbiAgYnVmZmVyID0gQnVmZmVyLmNvbmNhdChbYnVmZmVyLCBCdWZmZXIuZnJvbShbdmFsdWVdKV0pXG5cbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIG91dFtpXSA9IGJ1ZmZlcltpXSA8PCAxIHwgYnVmZmVyW2kgKyAxXSA+PiAoNylcbiAgfVxuXG4gIHJldHVybiBvdXRcbn1cblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGNodW5rLCBkZWNyeXB0KSB7XG4gIHZhciBsZW4gPSBjaHVuay5sZW5ndGhcbiAgdmFyIG91dCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW4pXG4gIHZhciBpID0gLTFcblxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gZW5jcnlwdEJ5dGUoc2VsZiwgY2h1bmtbaV0sIGRlY3J5cHQpXG4gIH1cblxuICByZXR1cm4gb3V0XG59XG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxuZnVuY3Rpb24gZW5jcnlwdEJ5dGUgKHNlbGYsIGJ5dGVQYXJhbSwgZGVjcnlwdCkge1xuICB2YXIgcGFkID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICB2YXIgb3V0ID0gcGFkWzBdIF4gYnl0ZVBhcmFtXG5cbiAgc2VsZi5fcHJldiA9IEJ1ZmZlci5jb25jYXQoW1xuICAgIHNlbGYuX3ByZXYuc2xpY2UoMSksXG4gICAgQnVmZmVyLmZyb20oW2RlY3J5cHQgPyBieXRlUGFyYW0gOiBvdXRdKVxuICBdKVxuXG4gIHJldHVybiBvdXRcbn1cblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGNodW5rLCBkZWNyeXB0KSB7XG4gIHZhciBsZW4gPSBjaHVuay5sZW5ndGhcbiAgdmFyIG91dCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW4pXG4gIHZhciBpID0gLTFcblxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gZW5jcnlwdEJ5dGUoc2VsZiwgY2h1bmtbaV0sIGRlY3J5cHQpXG4gIH1cblxuICByZXR1cm4gb3V0XG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBpbmNyMzIgPSByZXF1aXJlKCcuLi9pbmNyMzInKVxuXG5mdW5jdGlvbiBnZXRCbG9jayAoc2VsZikge1xuICB2YXIgb3V0ID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9ja1JhdyhzZWxmLl9wcmV2KVxuICBpbmNyMzIoc2VsZi5fcHJldilcbiAgcmV0dXJuIG91dFxufVxuXG52YXIgYmxvY2tTaXplID0gMTZcbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB2YXIgY2h1bmtOdW0gPSBNYXRoLmNlaWwoY2h1bmsubGVuZ3RoIC8gYmxvY2tTaXplKVxuICB2YXIgc3RhcnQgPSBzZWxmLl9jYWNoZS5sZW5ndGhcbiAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtcbiAgICBzZWxmLl9jYWNoZSxcbiAgICBCdWZmZXIuYWxsb2NVbnNhZmUoY2h1bmtOdW0gKiBibG9ja1NpemUpXG4gIF0pXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2h1bmtOdW07IGkrKykge1xuICAgIHZhciBvdXQgPSBnZXRCbG9jayhzZWxmKVxuICAgIHZhciBvZmZzZXQgPSBzdGFydCArIGkgKiBibG9ja1NpemVcbiAgICBzZWxmLl9jYWNoZS53cml0ZVVJbnQzMkJFKG91dFswXSwgb2Zmc2V0ICsgMClcbiAgICBzZWxmLl9jYWNoZS53cml0ZVVJbnQzMkJFKG91dFsxXSwgb2Zmc2V0ICsgNClcbiAgICBzZWxmLl9jYWNoZS53cml0ZVVJbnQzMkJFKG91dFsyXSwgb2Zmc2V0ICsgOClcbiAgICBzZWxmLl9jYWNoZS53cml0ZVVJbnQzMkJFKG91dFszXSwgb2Zmc2V0ICsgMTIpXG4gIH1cbiAgdmFyIHBhZCA9IHNlbGYuX2NhY2hlLnNsaWNlKDAsIGNodW5rLmxlbmd0aClcbiAgc2VsZi5fY2FjaGUgPSBzZWxmLl9jYWNoZS5zbGljZShjaHVuay5sZW5ndGgpXG4gIHJldHVybiB4b3IoY2h1bmssIHBhZClcbn1cbiIsImV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBibG9jaykge1xuICByZXR1cm4gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhibG9jaylcbn1cblxuZXhwb3J0cy5kZWNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGJsb2NrKSB7XG4gIHJldHVybiBzZWxmLl9jaXBoZXIuZGVjcnlwdEJsb2NrKGJsb2NrKVxufVxuIiwidmFyIG1vZGVNb2R1bGVzID0ge1xuICBFQ0I6IHJlcXVpcmUoJy4vZWNiJyksXG4gIENCQzogcmVxdWlyZSgnLi9jYmMnKSxcbiAgQ0ZCOiByZXF1aXJlKCcuL2NmYicpLFxuICBDRkI4OiByZXF1aXJlKCcuL2NmYjgnKSxcbiAgQ0ZCMTogcmVxdWlyZSgnLi9jZmIxJyksXG4gIE9GQjogcmVxdWlyZSgnLi9vZmInKSxcbiAgQ1RSOiByZXF1aXJlKCcuL2N0cicpLFxuICBHQ006IHJlcXVpcmUoJy4vY3RyJylcbn1cblxudmFyIG1vZGVzID0gcmVxdWlyZSgnLi9saXN0Lmpzb24nKVxuXG5mb3IgKHZhciBrZXkgaW4gbW9kZXMpIHtcbiAgbW9kZXNba2V5XS5tb2R1bGUgPSBtb2RlTW9kdWxlc1ttb2Rlc1trZXldLm1vZGVdXG59XG5cbm1vZHVsZS5leHBvcnRzID0gbW9kZXNcbiIsInZhciB4b3IgPSByZXF1aXJlKCdidWZmZXIteG9yJylcblxuZnVuY3Rpb24gZ2V0QmxvY2sgKHNlbGYpIHtcbiAgc2VsZi5fcHJldiA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soc2VsZi5fcHJldilcbiAgcmV0dXJuIHNlbGYuX3ByZXZcbn1cblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGNodW5rKSB7XG4gIHdoaWxlIChzZWxmLl9jYWNoZS5sZW5ndGggPCBjaHVuay5sZW5ndGgpIHtcbiAgICBzZWxmLl9jYWNoZSA9IEJ1ZmZlci5jb25jYXQoW3NlbGYuX2NhY2hlLCBnZXRCbG9jayhzZWxmKV0pXG4gIH1cblxuICB2YXIgcGFkID0gc2VsZi5fY2FjaGUuc2xpY2UoMCwgY2h1bmsubGVuZ3RoKVxuICBzZWxmLl9jYWNoZSA9IHNlbGYuX2NhY2hlLnNsaWNlKGNodW5rLmxlbmd0aClcbiAgcmV0dXJuIHhvcihjaHVuaywgcGFkKVxufVxuIiwidmFyIGFlcyA9IHJlcXVpcmUoJy4vYWVzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcblxuZnVuY3Rpb24gU3RyZWFtQ2lwaGVyIChtb2RlLCBrZXksIGl2LCBkZWNyeXB0KSB7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG5cbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gQnVmZmVyLmZyb20oaXYpXG4gIHRoaXMuX2NhY2hlID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApXG4gIHRoaXMuX3NlY0NhY2hlID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApXG4gIHRoaXMuX2RlY3J5cHQgPSBkZWNyeXB0XG4gIHRoaXMuX21vZGUgPSBtb2RlXG59XG5cbmluaGVyaXRzKFN0cmVhbUNpcGhlciwgVHJhbnNmb3JtKVxuXG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgcmV0dXJuIHRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLCBjaHVuaywgdGhpcy5fZGVjcnlwdClcbn1cblxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2NpcGhlci5zY3J1YigpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG4iLCJ2YXIgREVTID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1kZXMnKVxudmFyIGFlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL2Jyb3dzZXInKVxudmFyIGFlc01vZGVzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1hZXMvbW9kZXMnKVxudmFyIGRlc01vZGVzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1kZXMvbW9kZXMnKVxudmFyIGVidGsgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG5cbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlciAoc3VpdGUsIHBhc3N3b3JkKSB7XG4gIHN1aXRlID0gc3VpdGUudG9Mb3dlckNhc2UoKVxuXG4gIHZhciBrZXlMZW4sIGl2TGVuXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0ua2V5XG4gICAgaXZMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0uaXZcbiAgfSBlbHNlIGlmIChkZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBkZXNNb2Rlc1tzdWl0ZV0ua2V5ICogOFxuICAgIGl2TGVuID0gZGVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuXG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGtleUxlbiwgaXZMZW4pXG4gIHJldHVybiBjcmVhdGVDaXBoZXJpdihzdWl0ZSwga2V5cy5rZXksIGtleXMuaXYpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG5cbiAgdmFyIGtleUxlbiwgaXZMZW5cbiAgaWYgKGFlc01vZGVzW3N1aXRlXSkge1xuICAgIGtleUxlbiA9IGFlc01vZGVzW3N1aXRlXS5rZXlcbiAgICBpdkxlbiA9IGFlc01vZGVzW3N1aXRlXS5pdlxuICB9IGVsc2UgaWYgKGRlc01vZGVzW3N1aXRlXSkge1xuICAgIGtleUxlbiA9IGRlc01vZGVzW3N1aXRlXS5rZXkgKiA4XG4gICAgaXZMZW4gPSBkZXNNb2Rlc1tzdWl0ZV0uaXZcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG5cbiAgdmFyIGtleXMgPSBlYnRrKHBhc3N3b3JkLCBmYWxzZSwga2V5TGVuLCBpdkxlbilcbiAgcmV0dXJuIGNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDaXBoZXJpdiAoc3VpdGUsIGtleSwgaXYpIHtcbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHJldHVybiBhZXMuY3JlYXRlQ2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIGlmIChkZXNNb2Rlc1tzdWl0ZV0pIHJldHVybiBuZXcgREVTKHsga2V5OiBrZXksIGl2OiBpdiwgbW9kZTogc3VpdGUgfSlcblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWNpcGhlcml2IChzdWl0ZSwga2V5LCBpdikge1xuICBzdWl0ZSA9IHN1aXRlLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFlc01vZGVzW3N1aXRlXSkgcmV0dXJuIGFlcy5jcmVhdGVEZWNpcGhlcml2KHN1aXRlLCBrZXksIGl2KVxuICBpZiAoZGVzTW9kZXNbc3VpdGVdKSByZXR1cm4gbmV3IERFUyh7IGtleToga2V5LCBpdjogaXYsIG1vZGU6IHN1aXRlLCBkZWNyeXB0OiB0cnVlIH0pXG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbn1cblxuZnVuY3Rpb24gZ2V0Q2lwaGVycyAoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhkZXNNb2RlcykuY29uY2F0KGFlcy5nZXRDaXBoZXJzKCkpXG59XG5cbmV4cG9ydHMuY3JlYXRlQ2lwaGVyID0gZXhwb3J0cy5DaXBoZXIgPSBjcmVhdGVDaXBoZXJcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyaXYgPSBleHBvcnRzLkNpcGhlcml2ID0gY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBleHBvcnRzLkRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXJpdiA9IGV4cG9ydHMuRGVjaXBoZXJpdiA9IGNyZWF0ZURlY2lwaGVyaXZcbmV4cG9ydHMubGlzdENpcGhlcnMgPSBleHBvcnRzLmdldENpcGhlcnMgPSBnZXRDaXBoZXJzXG4iLCJ2YXIgQ2lwaGVyQmFzZSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBkZXMgPSByZXF1aXJlKCdkZXMuanMnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBtb2RlcyA9IHtcbiAgJ2Rlcy1lZGUzLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlMyc6IGRlcy5FREUsXG4gICdkZXMtZWRlLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlJzogZGVzLkVERSxcbiAgJ2Rlcy1jYmMnOiBkZXMuQ0JDLmluc3RhbnRpYXRlKGRlcy5ERVMpLFxuICAnZGVzLWVjYic6IGRlcy5ERVNcbn1cbm1vZGVzLmRlcyA9IG1vZGVzWydkZXMtY2JjJ11cbm1vZGVzLmRlczMgPSBtb2Rlc1snZGVzLWVkZTMtY2JjJ11cbm1vZHVsZS5leHBvcnRzID0gREVTXG5pbmhlcml0cyhERVMsIENpcGhlckJhc2UpXG5mdW5jdGlvbiBERVMgKG9wdHMpIHtcbiAgQ2lwaGVyQmFzZS5jYWxsKHRoaXMpXG4gIHZhciBtb2RlTmFtZSA9IG9wdHMubW9kZS50b0xvd2VyQ2FzZSgpXG4gIHZhciBtb2RlID0gbW9kZXNbbW9kZU5hbWVdXG4gIHZhciB0eXBlXG4gIGlmIChvcHRzLmRlY3J5cHQpIHtcbiAgICB0eXBlID0gJ2RlY3J5cHQnXG4gIH0gZWxzZSB7XG4gICAgdHlwZSA9ICdlbmNyeXB0J1xuICB9XG4gIHZhciBrZXkgPSBvcHRzLmtleVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihrZXkpKSB7XG4gICAga2V5ID0gQnVmZmVyLmZyb20oa2V5KVxuICB9XG4gIGlmIChtb2RlTmFtZSA9PT0gJ2Rlcy1lZGUnIHx8IG1vZGVOYW1lID09PSAnZGVzLWVkZS1jYmMnKSB7XG4gICAga2V5ID0gQnVmZmVyLmNvbmNhdChba2V5LCBrZXkuc2xpY2UoMCwgOCldKVxuICB9XG4gIHZhciBpdiA9IG9wdHMuaXZcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoaXYpKSB7XG4gICAgaXYgPSBCdWZmZXIuZnJvbShpdilcbiAgfVxuICB0aGlzLl9kZXMgPSBtb2RlLmNyZWF0ZSh7XG4gICAga2V5OiBrZXksXG4gICAgaXY6IGl2LFxuICAgIHR5cGU6IHR5cGVcbiAgfSlcbn1cbkRFUy5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbSh0aGlzLl9kZXMudXBkYXRlKGRhdGEpKVxufVxuREVTLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbSh0aGlzLl9kZXMuZmluYWwoKSlcbn1cbiIsImV4cG9ydHNbJ2Rlcy1lY2InXSA9IHtcbiAga2V5OiA4LFxuICBpdjogMFxufVxuZXhwb3J0c1snZGVzLWNiYyddID0gZXhwb3J0cy5kZXMgPSB7XG4gIGtleTogOCxcbiAgaXY6IDhcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUzLWNiYyddID0gZXhwb3J0cy5kZXMzID0ge1xuICBrZXk6IDI0LFxuICBpdjogOFxufVxuZXhwb3J0c1snZGVzLWVkZTMnXSA9IHtcbiAga2V5OiAyNCxcbiAgaXY6IDBcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUtY2JjJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiA4XG59XG5leHBvcnRzWydkZXMtZWRlJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiAwXG59XG4iLCJ2YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpXG5cbmZ1bmN0aW9uIGJsaW5kIChwcml2KSB7XG4gIHZhciByID0gZ2V0cihwcml2KVxuICB2YXIgYmxpbmRlciA9IHIudG9SZWQoQk4ubW9udChwcml2Lm1vZHVsdXMpKS5yZWRQb3cobmV3IEJOKHByaXYucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKClcbiAgcmV0dXJuIHsgYmxpbmRlcjogYmxpbmRlciwgdW5ibGluZGVyOiByLmludm0ocHJpdi5tb2R1bHVzKSB9XG59XG5cbmZ1bmN0aW9uIGdldHIgKHByaXYpIHtcbiAgdmFyIGxlbiA9IHByaXYubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgdmFyIHJcbiAgZG8ge1xuICAgIHIgPSBuZXcgQk4ocmFuZG9tQnl0ZXMobGVuKSlcbiAgfSB3aGlsZSAoci5jbXAocHJpdi5tb2R1bHVzKSA+PSAwIHx8ICFyLnVtb2QocHJpdi5wcmltZTEpIHx8ICFyLnVtb2QocHJpdi5wcmltZTIpKVxuICByZXR1cm4gclxufVxuXG5mdW5jdGlvbiBjcnQgKG1zZywgcHJpdikge1xuICB2YXIgYmxpbmRzID0gYmxpbmQocHJpdilcbiAgdmFyIGxlbiA9IHByaXYubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgdmFyIGJsaW5kZWQgPSBuZXcgQk4obXNnKS5tdWwoYmxpbmRzLmJsaW5kZXIpLnVtb2QocHJpdi5tb2R1bHVzKVxuICB2YXIgYzEgPSBibGluZGVkLnRvUmVkKEJOLm1vbnQocHJpdi5wcmltZTEpKVxuICB2YXIgYzIgPSBibGluZGVkLnRvUmVkKEJOLm1vbnQocHJpdi5wcmltZTIpKVxuICB2YXIgcWludiA9IHByaXYuY29lZmZpY2llbnRcbiAgdmFyIHAgPSBwcml2LnByaW1lMVxuICB2YXIgcSA9IHByaXYucHJpbWUyXG4gIHZhciBtMSA9IGMxLnJlZFBvdyhwcml2LmV4cG9uZW50MSkuZnJvbVJlZCgpXG4gIHZhciBtMiA9IGMyLnJlZFBvdyhwcml2LmV4cG9uZW50MikuZnJvbVJlZCgpXG4gIHZhciBoID0gbTEuaXN1YihtMikuaW11bChxaW52KS51bW9kKHApLmltdWwocSlcbiAgcmV0dXJuIG0yLmlhZGQoaCkuaW11bChibGluZHMudW5ibGluZGVyKS51bW9kKHByaXYubW9kdWx1cykudG9BcnJheUxpa2UoQnVmZmVyLCAnYmUnLCBsZW4pXG59XG5jcnQuZ2V0ciA9IGdldHJcblxubW9kdWxlLmV4cG9ydHMgPSBjcnRcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9icm93c2VyL2FsZ29yaXRobXMuanNvbicpXG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxudmFyIHN0cmVhbSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbScpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgc2lnbiA9IHJlcXVpcmUoJy4vc2lnbicpXG52YXIgdmVyaWZ5ID0gcmVxdWlyZSgnLi92ZXJpZnknKVxuXG52YXIgYWxnb3JpdGhtcyA9IHJlcXVpcmUoJy4vYWxnb3JpdGhtcy5qc29uJylcbk9iamVjdC5rZXlzKGFsZ29yaXRobXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBhbGdvcml0aG1zW2tleV0uaWQgPSBCdWZmZXIuZnJvbShhbGdvcml0aG1zW2tleV0uaWQsICdoZXgnKVxuICBhbGdvcml0aG1zW2tleS50b0xvd2VyQ2FzZSgpXSA9IGFsZ29yaXRobXNba2V5XVxufSlcblxuZnVuY3Rpb24gU2lnbiAoYWxnb3JpdGhtKSB7XG4gIHN0cmVhbS5Xcml0YWJsZS5jYWxsKHRoaXMpXG5cbiAgdmFyIGRhdGEgPSBhbGdvcml0aG1zW2FsZ29yaXRobV1cbiAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2hUeXBlID0gZGF0YS5oYXNoXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGRhdGEuaGFzaClcbiAgdGhpcy5fdGFnID0gZGF0YS5pZFxuICB0aGlzLl9zaWduVHlwZSA9IGRhdGEuc2lnblxufVxuaW5oZXJpdHMoU2lnbiwgc3RyZWFtLldyaXRhYmxlKVxuXG5TaWduLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiBfd3JpdGUgKGRhdGEsIF8sIGRvbmUpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgZG9uZSgpXG59XG5cblNpZ24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoZGF0YSwgZW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBlbmMpXG5cbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgcmV0dXJuIHRoaXNcbn1cblxuU2lnbi5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ25NZXRob2QgKGtleSwgZW5jKSB7XG4gIHRoaXMuZW5kKClcbiAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoLmRpZ2VzdCgpXG4gIHZhciBzaWcgPSBzaWduKGhhc2gsIGtleSwgdGhpcy5faGFzaFR5cGUsIHRoaXMuX3NpZ25UeXBlLCB0aGlzLl90YWcpXG5cbiAgcmV0dXJuIGVuYyA/IHNpZy50b1N0cmluZyhlbmMpIDogc2lnXG59XG5cbmZ1bmN0aW9uIFZlcmlmeSAoYWxnb3JpdGhtKSB7XG4gIHN0cmVhbS5Xcml0YWJsZS5jYWxsKHRoaXMpXG5cbiAgdmFyIGRhdGEgPSBhbGdvcml0aG1zW2FsZ29yaXRobV1cbiAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGRhdGEuaGFzaClcbiAgdGhpcy5fdGFnID0gZGF0YS5pZFxuICB0aGlzLl9zaWduVHlwZSA9IGRhdGEuc2lnblxufVxuaW5oZXJpdHMoVmVyaWZ5LCBzdHJlYW0uV3JpdGFibGUpXG5cblZlcmlmeS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gX3dyaXRlIChkYXRhLCBfLCBkb25lKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG4gIGRvbmUoKVxufVxuXG5WZXJpZnkucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoZGF0YSwgZW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBlbmMpXG5cbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgcmV0dXJuIHRoaXNcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnlNZXRob2QgKGtleSwgc2lnLCBlbmMpIHtcbiAgaWYgKHR5cGVvZiBzaWcgPT09ICdzdHJpbmcnKSBzaWcgPSBCdWZmZXIuZnJvbShzaWcsIGVuYylcblxuICB0aGlzLmVuZCgpXG4gIHZhciBoYXNoID0gdGhpcy5faGFzaC5kaWdlc3QoKVxuICByZXR1cm4gdmVyaWZ5KHNpZywgaGFzaCwga2V5LCB0aGlzLl9zaWduVHlwZSwgdGhpcy5fdGFnKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTaWduIChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBTaWduKGFsZ29yaXRobSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlVmVyaWZ5IChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBWZXJpZnkoYWxnb3JpdGhtKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgU2lnbjogY3JlYXRlU2lnbixcbiAgVmVyaWZ5OiBjcmVhdGVWZXJpZnksXG4gIGNyZWF0ZVNpZ246IGNyZWF0ZVNpZ24sXG4gIGNyZWF0ZVZlcmlmeTogY3JlYXRlVmVyaWZ5XG59XG4iLCIvLyBtdWNoIG9mIHRoaXMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvc2VsZi1zaWduZWQvYmxvYi9naC1wYWdlcy9saWIvcnNhLmpzXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBjcmVhdGVIbWFjID0gcmVxdWlyZSgnY3JlYXRlLWhtYWMnKVxudmFyIGNydCA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktcnNhJylcbnZhciBFQyA9IHJlcXVpcmUoJ2VsbGlwdGljJykuZWNcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJylcbnZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJylcbnZhciBjdXJ2ZXMgPSByZXF1aXJlKCcuL2N1cnZlcy5qc29uJylcblxuZnVuY3Rpb24gc2lnbiAoaGFzaCwga2V5LCBoYXNoVHlwZSwgc2lnblR5cGUsIHRhZykge1xuICB2YXIgcHJpdiA9IHBhcnNlS2V5cyhrZXkpXG4gIGlmIChwcml2LmN1cnZlKSB7XG4gICAgLy8gcnNhIGtleXMgY2FuIGJlIGludGVycHJldGVkIGFzIGVjZHNhIG9uZXMgaW4gb3BlbnNzbFxuICAgIGlmIChzaWduVHlwZSAhPT0gJ2VjZHNhJyAmJiBzaWduVHlwZSAhPT0gJ2VjZHNhL3JzYScpIHRocm93IG5ldyBFcnJvcignd3JvbmcgcHJpdmF0ZSBrZXkgdHlwZScpXG4gICAgcmV0dXJuIGVjU2lnbihoYXNoLCBwcml2KVxuICB9IGVsc2UgaWYgKHByaXYudHlwZSA9PT0gJ2RzYScpIHtcbiAgICBpZiAoc2lnblR5cGUgIT09ICdkc2EnKSB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHByaXZhdGUga2V5IHR5cGUnKVxuICAgIHJldHVybiBkc2FTaWduKGhhc2gsIHByaXYsIGhhc2hUeXBlKVxuICB9IGVsc2Uge1xuICAgIGlmIChzaWduVHlwZSAhPT0gJ3JzYScgJiYgc2lnblR5cGUgIT09ICdlY2RzYS9yc2EnKSB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHByaXZhdGUga2V5IHR5cGUnKVxuICB9XG4gIGhhc2ggPSBCdWZmZXIuY29uY2F0KFt0YWcsIGhhc2hdKVxuICB2YXIgbGVuID0gcHJpdi5tb2R1bHVzLmJ5dGVMZW5ndGgoKVxuICB2YXIgcGFkID0gWzAsIDFdXG4gIHdoaWxlIChoYXNoLmxlbmd0aCArIHBhZC5sZW5ndGggKyAxIDwgbGVuKSBwYWQucHVzaCgweGZmKVxuICBwYWQucHVzaCgweDAwKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBoYXNoLmxlbmd0aCkgcGFkLnB1c2goaGFzaFtpXSlcblxuICB2YXIgb3V0ID0gY3J0KHBhZCwgcHJpdilcbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiBlY1NpZ24gKGhhc2gsIHByaXYpIHtcbiAgdmFyIGN1cnZlSWQgPSBjdXJ2ZXNbcHJpdi5jdXJ2ZS5qb2luKCcuJyldXG4gIGlmICghY3VydmVJZCkgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGN1cnZlICcgKyBwcml2LmN1cnZlLmpvaW4oJy4nKSlcblxuICB2YXIgY3VydmUgPSBuZXcgRUMoY3VydmVJZClcbiAgdmFyIGtleSA9IGN1cnZlLmtleUZyb21Qcml2YXRlKHByaXYucHJpdmF0ZUtleSlcbiAgdmFyIG91dCA9IGtleS5zaWduKGhhc2gpXG5cbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKG91dC50b0RFUigpKVxufVxuXG5mdW5jdGlvbiBkc2FTaWduIChoYXNoLCBwcml2LCBhbGdvKSB7XG4gIHZhciB4ID0gcHJpdi5wYXJhbXMucHJpdl9rZXlcbiAgdmFyIHAgPSBwcml2LnBhcmFtcy5wXG4gIHZhciBxID0gcHJpdi5wYXJhbXMucVxuICB2YXIgZyA9IHByaXYucGFyYW1zLmdcbiAgdmFyIHIgPSBuZXcgQk4oMClcbiAgdmFyIGtcbiAgdmFyIEggPSBiaXRzMmludChoYXNoLCBxKS5tb2QocSlcbiAgdmFyIHMgPSBmYWxzZVxuICB2YXIga3YgPSBnZXRLZXkoeCwgcSwgaGFzaCwgYWxnbylcbiAgd2hpbGUgKHMgPT09IGZhbHNlKSB7XG4gICAgayA9IG1ha2VLZXkocSwga3YsIGFsZ28pXG4gICAgciA9IG1ha2VSKGcsIGssIHAsIHEpXG4gICAgcyA9IGsuaW52bShxKS5pbXVsKEguYWRkKHgubXVsKHIpKSkubW9kKHEpXG4gICAgaWYgKHMuY21wbigwKSA9PT0gMCkge1xuICAgICAgcyA9IGZhbHNlXG4gICAgICByID0gbmV3IEJOKDApXG4gICAgfVxuICB9XG4gIHJldHVybiB0b0RFUihyLCBzKVxufVxuXG5mdW5jdGlvbiB0b0RFUiAociwgcykge1xuICByID0gci50b0FycmF5KClcbiAgcyA9IHMudG9BcnJheSgpXG5cbiAgLy8gUGFkIHZhbHVlc1xuICBpZiAoclswXSAmIDB4ODApIHIgPSBbMF0uY29uY2F0KHIpXG4gIGlmIChzWzBdICYgMHg4MCkgcyA9IFswXS5jb25jYXQocylcblxuICB2YXIgdG90YWwgPSByLmxlbmd0aCArIHMubGVuZ3RoICsgNFxuICB2YXIgcmVzID0gWzB4MzAsIHRvdGFsLCAweDAyLCByLmxlbmd0aF1cbiAgcmVzID0gcmVzLmNvbmNhdChyLCBbMHgwMiwgcy5sZW5ndGhdLCBzKVxuICByZXR1cm4gQnVmZmVyLmZyb20ocmVzKVxufVxuXG5mdW5jdGlvbiBnZXRLZXkgKHgsIHEsIGhhc2gsIGFsZ28pIHtcbiAgeCA9IEJ1ZmZlci5mcm9tKHgudG9BcnJheSgpKVxuICBpZiAoeC5sZW5ndGggPCBxLmJ5dGVMZW5ndGgoKSkge1xuICAgIHZhciB6ZXJvcyA9IEJ1ZmZlci5hbGxvYyhxLmJ5dGVMZW5ndGgoKSAtIHgubGVuZ3RoKVxuICAgIHggPSBCdWZmZXIuY29uY2F0KFt6ZXJvcywgeF0pXG4gIH1cbiAgdmFyIGhsZW4gPSBoYXNoLmxlbmd0aFxuICB2YXIgaGJpdHMgPSBiaXRzMm9jdGV0cyhoYXNoLCBxKVxuICB2YXIgdiA9IEJ1ZmZlci5hbGxvYyhobGVuKVxuICB2LmZpbGwoMSlcbiAgdmFyIGsgPSBCdWZmZXIuYWxsb2MoaGxlbilcbiAgayA9IGNyZWF0ZUhtYWMoYWxnbywgaykudXBkYXRlKHYpLnVwZGF0ZShCdWZmZXIuZnJvbShbMF0pKS51cGRhdGUoeCkudXBkYXRlKGhiaXRzKS5kaWdlc3QoKVxuICB2ID0gY3JlYXRlSG1hYyhhbGdvLCBrKS51cGRhdGUodikuZGlnZXN0KClcbiAgayA9IGNyZWF0ZUhtYWMoYWxnbywgaykudXBkYXRlKHYpLnVwZGF0ZShCdWZmZXIuZnJvbShbMV0pKS51cGRhdGUoeCkudXBkYXRlKGhiaXRzKS5kaWdlc3QoKVxuICB2ID0gY3JlYXRlSG1hYyhhbGdvLCBrKS51cGRhdGUodikuZGlnZXN0KClcbiAgcmV0dXJuIHsgazogaywgdjogdiB9XG59XG5cbmZ1bmN0aW9uIGJpdHMyaW50IChvYml0cywgcSkge1xuICB2YXIgYml0cyA9IG5ldyBCTihvYml0cylcbiAgdmFyIHNoaWZ0ID0gKG9iaXRzLmxlbmd0aCA8PCAzKSAtIHEuYml0TGVuZ3RoKClcbiAgaWYgKHNoaWZ0ID4gMCkgYml0cy5pc2hybihzaGlmdClcbiAgcmV0dXJuIGJpdHNcbn1cblxuZnVuY3Rpb24gYml0czJvY3RldHMgKGJpdHMsIHEpIHtcbiAgYml0cyA9IGJpdHMyaW50KGJpdHMsIHEpXG4gIGJpdHMgPSBiaXRzLm1vZChxKVxuICB2YXIgb3V0ID0gQnVmZmVyLmZyb20oYml0cy50b0FycmF5KCkpXG4gIGlmIChvdXQubGVuZ3RoIDwgcS5ieXRlTGVuZ3RoKCkpIHtcbiAgICB2YXIgemVyb3MgPSBCdWZmZXIuYWxsb2MocS5ieXRlTGVuZ3RoKCkgLSBvdXQubGVuZ3RoKVxuICAgIG91dCA9IEJ1ZmZlci5jb25jYXQoW3plcm9zLCBvdXRdKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gbWFrZUtleSAocSwga3YsIGFsZ28pIHtcbiAgdmFyIHRcbiAgdmFyIGtcblxuICBkbyB7XG4gICAgdCA9IEJ1ZmZlci5hbGxvYygwKVxuXG4gICAgd2hpbGUgKHQubGVuZ3RoICogOCA8IHEuYml0TGVuZ3RoKCkpIHtcbiAgICAgIGt2LnYgPSBjcmVhdGVIbWFjKGFsZ28sIGt2LmspLnVwZGF0ZShrdi52KS5kaWdlc3QoKVxuICAgICAgdCA9IEJ1ZmZlci5jb25jYXQoW3QsIGt2LnZdKVxuICAgIH1cblxuICAgIGsgPSBiaXRzMmludCh0LCBxKVxuICAgIGt2LmsgPSBjcmVhdGVIbWFjKGFsZ28sIGt2LmspLnVwZGF0ZShrdi52KS51cGRhdGUoQnVmZmVyLmZyb20oWzBdKSkuZGlnZXN0KClcbiAgICBrdi52ID0gY3JlYXRlSG1hYyhhbGdvLCBrdi5rKS51cGRhdGUoa3YudikuZGlnZXN0KClcbiAgfSB3aGlsZSAoay5jbXAocSkgIT09IC0xKVxuXG4gIHJldHVybiBrXG59XG5cbmZ1bmN0aW9uIG1ha2VSIChnLCBrLCBwLCBxKSB7XG4gIHJldHVybiBnLnRvUmVkKEJOLm1vbnQocCkpLnJlZFBvdyhrKS5mcm9tUmVkKCkubW9kKHEpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2lnblxubW9kdWxlLmV4cG9ydHMuZ2V0S2V5ID0gZ2V0S2V5XG5tb2R1bGUuZXhwb3J0cy5tYWtlS2V5ID0gbWFrZUtleVxuIiwiLy8gbXVjaCBvZiB0aGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L3NlbGYtc2lnbmVkL2Jsb2IvZ2gtcGFnZXMvbGliL3JzYS5qc1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgRUMgPSByZXF1aXJlKCdlbGxpcHRpYycpLmVjXG52YXIgcGFyc2VLZXlzID0gcmVxdWlyZSgncGFyc2UtYXNuMScpXG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi9jdXJ2ZXMuanNvbicpXG5cbmZ1bmN0aW9uIHZlcmlmeSAoc2lnLCBoYXNoLCBrZXksIHNpZ25UeXBlLCB0YWcpIHtcbiAgdmFyIHB1YiA9IHBhcnNlS2V5cyhrZXkpXG4gIGlmIChwdWIudHlwZSA9PT0gJ2VjJykge1xuICAgIC8vIHJzYSBrZXlzIGNhbiBiZSBpbnRlcnByZXRlZCBhcyBlY2RzYSBvbmVzIGluIG9wZW5zc2xcbiAgICBpZiAoc2lnblR5cGUgIT09ICdlY2RzYScgJiYgc2lnblR5cGUgIT09ICdlY2RzYS9yc2EnKSB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgcmV0dXJuIGVjVmVyaWZ5KHNpZywgaGFzaCwgcHViKVxuICB9IGVsc2UgaWYgKHB1Yi50eXBlID09PSAnZHNhJykge1xuICAgIGlmIChzaWduVHlwZSAhPT0gJ2RzYScpIHRocm93IG5ldyBFcnJvcignd3JvbmcgcHVibGljIGtleSB0eXBlJylcbiAgICByZXR1cm4gZHNhVmVyaWZ5KHNpZywgaGFzaCwgcHViKVxuICB9IGVsc2Uge1xuICAgIGlmIChzaWduVHlwZSAhPT0gJ3JzYScgJiYgc2lnblR5cGUgIT09ICdlY2RzYS9yc2EnKSB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gIH1cbiAgaGFzaCA9IEJ1ZmZlci5jb25jYXQoW3RhZywgaGFzaF0pXG4gIHZhciBsZW4gPSBwdWIubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgdmFyIHBhZCA9IFsxXVxuICB2YXIgcGFkTnVtID0gMFxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMiA8IGxlbikge1xuICAgIHBhZC5wdXNoKDB4ZmYpXG4gICAgcGFkTnVtKytcbiAgfVxuICBwYWQucHVzaCgweDAwKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBoYXNoLmxlbmd0aCkge1xuICAgIHBhZC5wdXNoKGhhc2hbaV0pXG4gIH1cbiAgcGFkID0gQnVmZmVyLmZyb20ocGFkKVxuICB2YXIgcmVkID0gQk4ubW9udChwdWIubW9kdWx1cylcbiAgc2lnID0gbmV3IEJOKHNpZykudG9SZWQocmVkKVxuXG4gIHNpZyA9IHNpZy5yZWRQb3cobmV3IEJOKHB1Yi5wdWJsaWNFeHBvbmVudCkpXG4gIHNpZyA9IEJ1ZmZlci5mcm9tKHNpZy5mcm9tUmVkKCkudG9BcnJheSgpKVxuICB2YXIgb3V0ID0gcGFkTnVtIDwgOCA/IDEgOiAwXG4gIGxlbiA9IE1hdGgubWluKHNpZy5sZW5ndGgsIHBhZC5sZW5ndGgpXG4gIGlmIChzaWcubGVuZ3RoICE9PSBwYWQubGVuZ3RoKSBvdXQgPSAxXG5cbiAgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIG91dCB8PSBzaWdbaV0gXiBwYWRbaV1cbiAgcmV0dXJuIG91dCA9PT0gMFxufVxuXG5mdW5jdGlvbiBlY1ZlcmlmeSAoc2lnLCBoYXNoLCBwdWIpIHtcbiAgdmFyIGN1cnZlSWQgPSBjdXJ2ZXNbcHViLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oJy4nKV1cbiAgaWYgKCFjdXJ2ZUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gY3VydmUgJyArIHB1Yi5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBwdWJrZXkgPSBwdWIuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleS5kYXRhXG5cbiAgcmV0dXJuIGN1cnZlLnZlcmlmeShoYXNoLCBzaWcsIHB1YmtleSlcbn1cblxuZnVuY3Rpb24gZHNhVmVyaWZ5IChzaWcsIGhhc2gsIHB1Yikge1xuICB2YXIgcCA9IHB1Yi5kYXRhLnBcbiAgdmFyIHEgPSBwdWIuZGF0YS5xXG4gIHZhciBnID0gcHViLmRhdGEuZ1xuICB2YXIgeSA9IHB1Yi5kYXRhLnB1Yl9rZXlcbiAgdmFyIHVucGFja2VkID0gcGFyc2VLZXlzLnNpZ25hdHVyZS5kZWNvZGUoc2lnLCAnZGVyJylcbiAgdmFyIHMgPSB1bnBhY2tlZC5zXG4gIHZhciByID0gdW5wYWNrZWQuclxuICBjaGVja1ZhbHVlKHMsIHEpXG4gIGNoZWNrVmFsdWUociwgcSlcbiAgdmFyIG1vbnRwID0gQk4ubW9udChwKVxuICB2YXIgdyA9IHMuaW52bShxKVxuICB2YXIgdiA9IGcudG9SZWQobW9udHApXG4gICAgLnJlZFBvdyhuZXcgQk4oaGFzaCkubXVsKHcpLm1vZChxKSlcbiAgICAuZnJvbVJlZCgpXG4gICAgLm11bCh5LnRvUmVkKG1vbnRwKS5yZWRQb3coci5tdWwodykubW9kKHEpKS5mcm9tUmVkKCkpXG4gICAgLm1vZChwKVxuICAgIC5tb2QocSlcbiAgcmV0dXJuIHYuY21wKHIpID09PSAwXG59XG5cbmZ1bmN0aW9uIGNoZWNrVmFsdWUgKGIsIHEpIHtcbiAgaWYgKGIuY21wbigwKSA8PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2lnJylcbiAgaWYgKGIuY21wKHEpID49IHEpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzaWcnKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcmlmeVxuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50IGNhbWVsY2FzZTogXCJvZmZcIiAqL1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7XG5cbnZhciBac3RyZWFtID0gcmVxdWlyZSgncGFrby9saWIvemxpYi96c3RyZWFtJyk7XG52YXIgemxpYl9kZWZsYXRlID0gcmVxdWlyZSgncGFrby9saWIvemxpYi9kZWZsYXRlLmpzJyk7XG52YXIgemxpYl9pbmZsYXRlID0gcmVxdWlyZSgncGFrby9saWIvemxpYi9pbmZsYXRlLmpzJyk7XG52YXIgY29uc3RhbnRzID0gcmVxdWlyZSgncGFrby9saWIvemxpYi9jb25zdGFudHMnKTtcblxuZm9yICh2YXIga2V5IGluIGNvbnN0YW50cykge1xuICBleHBvcnRzW2tleV0gPSBjb25zdGFudHNba2V5XTtcbn1cblxuLy8gemxpYiBtb2Rlc1xuZXhwb3J0cy5OT05FID0gMDtcbmV4cG9ydHMuREVGTEFURSA9IDE7XG5leHBvcnRzLklORkxBVEUgPSAyO1xuZXhwb3J0cy5HWklQID0gMztcbmV4cG9ydHMuR1VOWklQID0gNDtcbmV4cG9ydHMuREVGTEFURVJBVyA9IDU7XG5leHBvcnRzLklORkxBVEVSQVcgPSA2O1xuZXhwb3J0cy5VTlpJUCA9IDc7XG5cbnZhciBHWklQX0hFQURFUl9JRDEgPSAweDFmO1xudmFyIEdaSVBfSEVBREVSX0lEMiA9IDB4OGI7XG5cbi8qKlxuICogRW11bGF0ZSBOb2RlJ3MgemxpYiBDKysgbGF5ZXIgZm9yIHVzZSBieSB0aGUgSlMgbGF5ZXIgaW4gaW5kZXguanNcbiAqL1xuZnVuY3Rpb24gWmxpYihtb2RlKSB7XG4gIGlmICh0eXBlb2YgbW9kZSAhPT0gJ251bWJlcicgfHwgbW9kZSA8IGV4cG9ydHMuREVGTEFURSB8fCBtb2RlID4gZXhwb3J0cy5VTlpJUCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JhZCBhcmd1bWVudCcpO1xuICB9XG5cbiAgdGhpcy5kaWN0aW9uYXJ5ID0gbnVsbDtcbiAgdGhpcy5lcnIgPSAwO1xuICB0aGlzLmZsdXNoID0gMDtcbiAgdGhpcy5pbml0X2RvbmUgPSBmYWxzZTtcbiAgdGhpcy5sZXZlbCA9IDA7XG4gIHRoaXMubWVtTGV2ZWwgPSAwO1xuICB0aGlzLm1vZGUgPSBtb2RlO1xuICB0aGlzLnN0cmF0ZWd5ID0gMDtcbiAgdGhpcy53aW5kb3dCaXRzID0gMDtcbiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IGZhbHNlO1xuICB0aGlzLnBlbmRpbmdfY2xvc2UgPSBmYWxzZTtcbiAgdGhpcy5nemlwX2lkX2J5dGVzX3JlYWQgPSAwO1xufVxuXG5abGliLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MpIHtcbiAgICB0aGlzLnBlbmRpbmdfY2xvc2UgPSB0cnVlO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoaXMucGVuZGluZ19jbG9zZSA9IGZhbHNlO1xuXG4gIGFzc2VydCh0aGlzLmluaXRfZG9uZSwgJ2Nsb3NlIGJlZm9yZSBpbml0Jyk7XG4gIGFzc2VydCh0aGlzLm1vZGUgPD0gZXhwb3J0cy5VTlpJUCk7XG5cbiAgaWYgKHRoaXMubW9kZSA9PT0gZXhwb3J0cy5ERUZMQVRFIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5HWklQIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5ERUZMQVRFUkFXKSB7XG4gICAgemxpYl9kZWZsYXRlLmRlZmxhdGVFbmQodGhpcy5zdHJtKTtcbiAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuSU5GTEFURSB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1VOWklQIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5JTkZMQVRFUkFXIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5VTlpJUCkge1xuICAgIHpsaWJfaW5mbGF0ZS5pbmZsYXRlRW5kKHRoaXMuc3RybSk7XG4gIH1cblxuICB0aGlzLm1vZGUgPSBleHBvcnRzLk5PTkU7XG5cbiAgdGhpcy5kaWN0aW9uYXJ5ID0gbnVsbDtcbn07XG5cblpsaWIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGZsdXNoLCBpbnB1dCwgaW5fb2ZmLCBpbl9sZW4sIG91dCwgb3V0X29mZiwgb3V0X2xlbikge1xuICByZXR1cm4gdGhpcy5fd3JpdGUodHJ1ZSwgZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKTtcbn07XG5cblpsaWIucHJvdG90eXBlLndyaXRlU3luYyA9IGZ1bmN0aW9uIChmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pIHtcbiAgcmV0dXJuIHRoaXMuX3dyaXRlKGZhbHNlLCBmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pO1xufTtcblxuWmxpYi5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGFzeW5jLCBmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pIHtcbiAgYXNzZXJ0LmVxdWFsKGFyZ3VtZW50cy5sZW5ndGgsIDgpO1xuXG4gIGFzc2VydCh0aGlzLmluaXRfZG9uZSwgJ3dyaXRlIGJlZm9yZSBpbml0Jyk7XG4gIGFzc2VydCh0aGlzLm1vZGUgIT09IGV4cG9ydHMuTk9ORSwgJ2FscmVhZHkgZmluYWxpemVkJyk7XG4gIGFzc2VydC5lcXVhbChmYWxzZSwgdGhpcy53cml0ZV9pbl9wcm9ncmVzcywgJ3dyaXRlIGFscmVhZHkgaW4gcHJvZ3Jlc3MnKTtcbiAgYXNzZXJ0LmVxdWFsKGZhbHNlLCB0aGlzLnBlbmRpbmdfY2xvc2UsICdjbG9zZSBpcyBwZW5kaW5nJyk7XG5cbiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IHRydWU7XG5cbiAgYXNzZXJ0LmVxdWFsKGZhbHNlLCBmbHVzaCA9PT0gdW5kZWZpbmVkLCAnbXVzdCBwcm92aWRlIGZsdXNoIHZhbHVlJyk7XG5cbiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IHRydWU7XG5cbiAgaWYgKGZsdXNoICE9PSBleHBvcnRzLlpfTk9fRkxVU0ggJiYgZmx1c2ggIT09IGV4cG9ydHMuWl9QQVJUSUFMX0ZMVVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfU1lOQ19GTFVTSCAmJiBmbHVzaCAhPT0gZXhwb3J0cy5aX0ZVTExfRkxVU0ggJiYgZmx1c2ggIT09IGV4cG9ydHMuWl9GSU5JU0ggJiYgZmx1c2ggIT09IGV4cG9ydHMuWl9CTE9DSykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmbHVzaCB2YWx1ZScpO1xuICB9XG5cbiAgaWYgKGlucHV0ID09IG51bGwpIHtcbiAgICBpbnB1dCA9IEJ1ZmZlci5hbGxvYygwKTtcbiAgICBpbl9sZW4gPSAwO1xuICAgIGluX29mZiA9IDA7XG4gIH1cblxuICB0aGlzLnN0cm0uYXZhaWxfaW4gPSBpbl9sZW47XG4gIHRoaXMuc3RybS5pbnB1dCA9IGlucHV0O1xuICB0aGlzLnN0cm0ubmV4dF9pbiA9IGluX29mZjtcbiAgdGhpcy5zdHJtLmF2YWlsX291dCA9IG91dF9sZW47XG4gIHRoaXMuc3RybS5vdXRwdXQgPSBvdXQ7XG4gIHRoaXMuc3RybS5uZXh0X291dCA9IG91dF9vZmY7XG4gIHRoaXMuZmx1c2ggPSBmbHVzaDtcblxuICBpZiAoIWFzeW5jKSB7XG4gICAgLy8gc3luYyB2ZXJzaW9uXG4gICAgdGhpcy5fcHJvY2VzcygpO1xuXG4gICAgaWYgKHRoaXMuX2NoZWNrRXJyb3IoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2FmdGVyU3luYygpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBhc3luYyB2ZXJzaW9uXG4gIHZhciBzZWxmID0gdGhpcztcbiAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgc2VsZi5fcHJvY2VzcygpO1xuICAgIHNlbGYuX2FmdGVyKCk7XG4gIH0pO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuWmxpYi5wcm90b3R5cGUuX2FmdGVyU3luYyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGF2YWlsX291dCA9IHRoaXMuc3RybS5hdmFpbF9vdXQ7XG4gIHZhciBhdmFpbF9pbiA9IHRoaXMuc3RybS5hdmFpbF9pbjtcblxuICB0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gZmFsc2U7XG5cbiAgcmV0dXJuIFthdmFpbF9pbiwgYXZhaWxfb3V0XTtcbn07XG5cblpsaWIucHJvdG90eXBlLl9wcm9jZXNzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZSA9IG51bGw7XG5cbiAgLy8gSWYgdGhlIGF2YWlsX291dCBpcyBsZWZ0IGF0IDAsIHRoZW4gaXQgbWVhbnMgdGhhdCBpdCByYW4gb3V0XG4gIC8vIG9mIHJvb20uICBJZiB0aGVyZSB3YXMgYXZhaWxfb3V0IGxlZnQgb3ZlciwgdGhlbiBpdCBtZWFuc1xuICAvLyB0aGF0IGFsbCBvZiB0aGUgaW5wdXQgd2FzIGNvbnN1bWVkLlxuICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFOlxuICAgIGNhc2UgZXhwb3J0cy5HWklQOlxuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFUkFXOlxuICAgICAgdGhpcy5lcnIgPSB6bGliX2RlZmxhdGUuZGVmbGF0ZSh0aGlzLnN0cm0sIHRoaXMuZmx1c2gpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBleHBvcnRzLlVOWklQOlxuICAgICAgaWYgKHRoaXMuc3RybS5hdmFpbF9pbiA+IDApIHtcbiAgICAgICAgbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZSA9IHRoaXMuc3RybS5uZXh0X2luO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHRoaXMuZ3ppcF9pZF9ieXRlc19yZWFkKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICBpZiAobmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuc3RybS5pbnB1dFtuZXh0X2V4cGVjdGVkX2hlYWRlcl9ieXRlXSA9PT0gR1pJUF9IRUFERVJfSUQxKSB7XG4gICAgICAgICAgICB0aGlzLmd6aXBfaWRfYnl0ZXNfcmVhZCA9IDE7XG4gICAgICAgICAgICBuZXh0X2V4cGVjdGVkX2hlYWRlcl9ieXRlKys7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnN0cm0uYXZhaWxfaW4gPT09IDEpIHtcbiAgICAgICAgICAgICAgLy8gVGhlIG9ubHkgYXZhaWxhYmxlIGJ5dGUgd2FzIGFscmVhZHkgcmVhZC5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubW9kZSA9IGV4cG9ydHMuSU5GTEFURTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnN0cm0uaW5wdXRbbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZV0gPT09IEdaSVBfSEVBREVSX0lEMikge1xuICAgICAgICAgICAgdGhpcy5nemlwX2lkX2J5dGVzX3JlYWQgPSAyO1xuICAgICAgICAgICAgdGhpcy5tb2RlID0gZXhwb3J0cy5HVU5aSVA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIGFjdHVhbCBkaWZmZXJlbmNlIGJldHdlZW4gSU5GTEFURSBhbmQgSU5GTEFURVJBV1xuICAgICAgICAgICAgLy8gKGFmdGVyIGluaXRpYWxpemF0aW9uKS5cbiAgICAgICAgICAgIHRoaXMubW9kZSA9IGV4cG9ydHMuSU5GTEFURTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbnVtYmVyIG9mIGd6aXAgbWFnaWMgbnVtYmVyIGJ5dGVzIHJlYWQnKTtcbiAgICAgIH1cblxuICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgY2FzZSBleHBvcnRzLklORkxBVEU6XG4gICAgY2FzZSBleHBvcnRzLkdVTlpJUDpcbiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURVJBVzpcbiAgICAgIHRoaXMuZXJyID0gemxpYl9pbmZsYXRlLmluZmxhdGUodGhpcy5zdHJtLCB0aGlzLmZsdXNoXG5cbiAgICAgIC8vIElmIGRhdGEgd2FzIGVuY29kZWQgd2l0aCBkaWN0aW9uYXJ5XG4gICAgICApO2lmICh0aGlzLmVyciA9PT0gZXhwb3J0cy5aX05FRURfRElDVCAmJiB0aGlzLmRpY3Rpb25hcnkpIHtcbiAgICAgICAgLy8gTG9hZCBpdFxuICAgICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlU2V0RGljdGlvbmFyeSh0aGlzLnN0cm0sIHRoaXMuZGljdGlvbmFyeSk7XG4gICAgICAgIGlmICh0aGlzLmVyciA9PT0gZXhwb3J0cy5aX09LKSB7XG4gICAgICAgICAgLy8gQW5kIHRyeSB0byBkZWNvZGUgYWdhaW5cbiAgICAgICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlKHRoaXMuc3RybSwgdGhpcy5mbHVzaCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5lcnIgPT09IGV4cG9ydHMuWl9EQVRBX0VSUk9SKSB7XG4gICAgICAgICAgLy8gQm90aCBpbmZsYXRlU2V0RGljdGlvbmFyeSgpIGFuZCBpbmZsYXRlKCkgcmV0dXJuIFpfREFUQV9FUlJPUi5cbiAgICAgICAgICAvLyBNYWtlIGl0IHBvc3NpYmxlIGZvciBBZnRlcigpIHRvIHRlbGwgYSBiYWQgZGljdGlvbmFyeSBmcm9tIGJhZFxuICAgICAgICAgIC8vIGlucHV0LlxuICAgICAgICAgIHRoaXMuZXJyID0gZXhwb3J0cy5aX05FRURfRElDVDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgd2hpbGUgKHRoaXMuc3RybS5hdmFpbF9pbiA+IDAgJiYgdGhpcy5tb2RlID09PSBleHBvcnRzLkdVTlpJUCAmJiB0aGlzLmVyciA9PT0gZXhwb3J0cy5aX1NUUkVBTV9FTkQgJiYgdGhpcy5zdHJtLm5leHRfaW5bMF0gIT09IDB4MDApIHtcbiAgICAgICAgLy8gQnl0ZXMgcmVtYWluIGluIGlucHV0IGJ1ZmZlci4gUGVyaGFwcyB0aGlzIGlzIGFub3RoZXIgY29tcHJlc3NlZFxuICAgICAgICAvLyBtZW1iZXIgaW4gdGhlIHNhbWUgYXJjaGl2ZSwgb3IganVzdCB0cmFpbGluZyBnYXJiYWdlLlxuICAgICAgICAvLyBUcmFpbGluZyB6ZXJvIGJ5dGVzIGFyZSBva2F5LCB0aG91Z2gsIHNpbmNlIHRoZXkgYXJlIGZyZXF1ZW50bHlcbiAgICAgICAgLy8gdXNlZCBmb3IgcGFkZGluZy5cblxuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMuZXJyID0gemxpYl9pbmZsYXRlLmluZmxhdGUodGhpcy5zdHJtLCB0aGlzLmZsdXNoKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbW9kZSAnICsgdGhpcy5tb2RlKTtcbiAgfVxufTtcblxuWmxpYi5wcm90b3R5cGUuX2NoZWNrRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIEFjY2VwdGFibGUgZXJyb3Igc3RhdGVzIGRlcGVuZCBvbiB0aGUgdHlwZSBvZiB6bGliIHN0cmVhbS5cbiAgc3dpdGNoICh0aGlzLmVycikge1xuICAgIGNhc2UgZXhwb3J0cy5aX09LOlxuICAgIGNhc2UgZXhwb3J0cy5aX0JVRl9FUlJPUjpcbiAgICAgIGlmICh0aGlzLnN0cm0uYXZhaWxfb3V0ICE9PSAwICYmIHRoaXMuZmx1c2ggPT09IGV4cG9ydHMuWl9GSU5JU0gpIHtcbiAgICAgICAgdGhpcy5fZXJyb3IoJ3VuZXhwZWN0ZWQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBleHBvcnRzLlpfU1RSRUFNX0VORDpcbiAgICAgIC8vIG5vcm1hbCBzdGF0dXNlcywgbm90IGZhdGFsXG4gICAgICBicmVhaztcbiAgICBjYXNlIGV4cG9ydHMuWl9ORUVEX0RJQ1Q6XG4gICAgICBpZiAodGhpcy5kaWN0aW9uYXJ5ID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fZXJyb3IoJ01pc3NpbmcgZGljdGlvbmFyeScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZXJyb3IoJ0JhZCBkaWN0aW9uYXJ5Jyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIHNvbWV0aGluZyBlbHNlLlxuICAgICAgdGhpcy5fZXJyb3IoJ1psaWIgZXJyb3InKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuWmxpYi5wcm90b3R5cGUuX2FmdGVyID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXRoaXMuX2NoZWNrRXJyb3IoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBhdmFpbF9vdXQgPSB0aGlzLnN0cm0uYXZhaWxfb3V0O1xuICB2YXIgYXZhaWxfaW4gPSB0aGlzLnN0cm0uYXZhaWxfaW47XG5cbiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IGZhbHNlO1xuXG4gIC8vIGNhbGwgdGhlIHdyaXRlKCkgY2JcbiAgdGhpcy5jYWxsYmFjayhhdmFpbF9pbiwgYXZhaWxfb3V0KTtcblxuICBpZiAodGhpcy5wZW5kaW5nX2Nsb3NlKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG59O1xuXG5abGliLnByb3RvdHlwZS5fZXJyb3IgPSBmdW5jdGlvbiAobWVzc2FnZSkge1xuICBpZiAodGhpcy5zdHJtLm1zZykge1xuICAgIG1lc3NhZ2UgPSB0aGlzLnN0cm0ubXNnO1xuICB9XG4gIHRoaXMub25lcnJvcihtZXNzYWdlLCB0aGlzLmVyclxuXG4gIC8vIG5vIGhvcGUgb2YgcmVzY3VlLlxuICApO3RoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSBmYWxzZTtcbiAgaWYgKHRoaXMucGVuZGluZ19jbG9zZSkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxufTtcblxuWmxpYi5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICh3aW5kb3dCaXRzLCBsZXZlbCwgbWVtTGV2ZWwsIHN0cmF0ZWd5LCBkaWN0aW9uYXJ5KSB7XG4gIGFzc2VydChhcmd1bWVudHMubGVuZ3RoID09PSA0IHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDUsICdpbml0KHdpbmRvd0JpdHMsIGxldmVsLCBtZW1MZXZlbCwgc3RyYXRlZ3ksIFtkaWN0aW9uYXJ5XSknKTtcblxuICBhc3NlcnQod2luZG93Qml0cyA+PSA4ICYmIHdpbmRvd0JpdHMgPD0gMTUsICdpbnZhbGlkIHdpbmRvd0JpdHMnKTtcbiAgYXNzZXJ0KGxldmVsID49IC0xICYmIGxldmVsIDw9IDksICdpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsJyk7XG5cbiAgYXNzZXJ0KG1lbUxldmVsID49IDEgJiYgbWVtTGV2ZWwgPD0gOSwgJ2ludmFsaWQgbWVtbGV2ZWwnKTtcblxuICBhc3NlcnQoc3RyYXRlZ3kgPT09IGV4cG9ydHMuWl9GSUxURVJFRCB8fCBzdHJhdGVneSA9PT0gZXhwb3J0cy5aX0hVRkZNQU5fT05MWSB8fCBzdHJhdGVneSA9PT0gZXhwb3J0cy5aX1JMRSB8fCBzdHJhdGVneSA9PT0gZXhwb3J0cy5aX0ZJWEVEIHx8IHN0cmF0ZWd5ID09PSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWSwgJ2ludmFsaWQgc3RyYXRlZ3knKTtcblxuICB0aGlzLl9pbml0KGxldmVsLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3ksIGRpY3Rpb25hcnkpO1xuICB0aGlzLl9zZXREaWN0aW9uYXJ5KCk7XG59O1xuXG5abGliLnByb3RvdHlwZS5wYXJhbXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignZGVmbGF0ZVBhcmFtcyBOb3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5abGliLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fcmVzZXQoKTtcbiAgdGhpcy5fc2V0RGljdGlvbmFyeSgpO1xufTtcblxuWmxpYi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiAobGV2ZWwsIHdpbmRvd0JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSwgZGljdGlvbmFyeSkge1xuICB0aGlzLmxldmVsID0gbGV2ZWw7XG4gIHRoaXMud2luZG93Qml0cyA9IHdpbmRvd0JpdHM7XG4gIHRoaXMubWVtTGV2ZWwgPSBtZW1MZXZlbDtcbiAgdGhpcy5zdHJhdGVneSA9IHN0cmF0ZWd5O1xuXG4gIHRoaXMuZmx1c2ggPSBleHBvcnRzLlpfTk9fRkxVU0g7XG5cbiAgdGhpcy5lcnIgPSBleHBvcnRzLlpfT0s7XG5cbiAgaWYgKHRoaXMubW9kZSA9PT0gZXhwb3J0cy5HWklQIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5HVU5aSVApIHtcbiAgICB0aGlzLndpbmRvd0JpdHMgKz0gMTY7XG4gIH1cblxuICBpZiAodGhpcy5tb2RlID09PSBleHBvcnRzLlVOWklQKSB7XG4gICAgdGhpcy53aW5kb3dCaXRzICs9IDMyO1xuICB9XG5cbiAgaWYgKHRoaXMubW9kZSA9PT0gZXhwb3J0cy5ERUZMQVRFUkFXIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5JTkZMQVRFUkFXKSB7XG4gICAgdGhpcy53aW5kb3dCaXRzID0gLTEgKiB0aGlzLndpbmRvd0JpdHM7XG4gIH1cblxuICB0aGlzLnN0cm0gPSBuZXcgWnN0cmVhbSgpO1xuXG4gIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgY2FzZSBleHBvcnRzLkRFRkxBVEU6XG4gICAgY2FzZSBleHBvcnRzLkdaSVA6XG4gICAgY2FzZSBleHBvcnRzLkRFRkxBVEVSQVc6XG4gICAgICB0aGlzLmVyciA9IHpsaWJfZGVmbGF0ZS5kZWZsYXRlSW5pdDIodGhpcy5zdHJtLCB0aGlzLmxldmVsLCBleHBvcnRzLlpfREVGTEFURUQsIHRoaXMud2luZG93Qml0cywgdGhpcy5tZW1MZXZlbCwgdGhpcy5zdHJhdGVneSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURTpcbiAgICBjYXNlIGV4cG9ydHMuR1VOWklQOlxuICAgIGNhc2UgZXhwb3J0cy5JTkZMQVRFUkFXOlxuICAgIGNhc2UgZXhwb3J0cy5VTlpJUDpcbiAgICAgIHRoaXMuZXJyID0gemxpYl9pbmZsYXRlLmluZmxhdGVJbml0Mih0aGlzLnN0cm0sIHRoaXMud2luZG93Qml0cyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1vZGUgJyArIHRoaXMubW9kZSk7XG4gIH1cblxuICBpZiAodGhpcy5lcnIgIT09IGV4cG9ydHMuWl9PSykge1xuICAgIHRoaXMuX2Vycm9yKCdJbml0IGVycm9yJyk7XG4gIH1cblxuICB0aGlzLmRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5O1xuXG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSBmYWxzZTtcbiAgdGhpcy5pbml0X2RvbmUgPSB0cnVlO1xufTtcblxuWmxpYi5wcm90b3R5cGUuX3NldERpY3Rpb25hcnkgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmRpY3Rpb25hcnkgPT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoaXMuZXJyID0gZXhwb3J0cy5aX09LO1xuXG4gIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgY2FzZSBleHBvcnRzLkRFRkxBVEU6XG4gICAgY2FzZSBleHBvcnRzLkRFRkxBVEVSQVc6XG4gICAgICB0aGlzLmVyciA9IHpsaWJfZGVmbGF0ZS5kZWZsYXRlU2V0RGljdGlvbmFyeSh0aGlzLnN0cm0sIHRoaXMuZGljdGlvbmFyeSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAodGhpcy5lcnIgIT09IGV4cG9ydHMuWl9PSykge1xuICAgIHRoaXMuX2Vycm9yKCdGYWlsZWQgdG8gc2V0IGRpY3Rpb25hcnknKTtcbiAgfVxufTtcblxuWmxpYi5wcm90b3R5cGUuX3Jlc2V0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmVyciA9IGV4cG9ydHMuWl9PSztcblxuICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFOlxuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFUkFXOlxuICAgIGNhc2UgZXhwb3J0cy5HWklQOlxuICAgICAgdGhpcy5lcnIgPSB6bGliX2RlZmxhdGUuZGVmbGF0ZVJlc2V0KHRoaXMuc3RybSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURTpcbiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURVJBVzpcbiAgICBjYXNlIGV4cG9ydHMuR1VOWklQOlxuICAgICAgdGhpcy5lcnIgPSB6bGliX2luZmxhdGUuaW5mbGF0ZVJlc2V0KHRoaXMuc3RybSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAodGhpcy5lcnIgIT09IGV4cG9ydHMuWl9PSykge1xuICAgIHRoaXMuX2Vycm9yKCdGYWlsZWQgdG8gcmVzZXQgc3RyZWFtJyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuWmxpYiA9IFpsaWI7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ3N0cmVhbScpLlRyYW5zZm9ybTtcbnZhciBiaW5kaW5nID0gcmVxdWlyZSgnLi9iaW5kaW5nJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKS5vaztcbnZhciBrTWF4TGVuZ3RoID0gcmVxdWlyZSgnYnVmZmVyJykua01heExlbmd0aDtcbnZhciBrUmFuZ2VFcnJvck1lc3NhZ2UgPSAnQ2Fubm90IGNyZWF0ZSBmaW5hbCBCdWZmZXIuIEl0IHdvdWxkIGJlIGxhcmdlciAnICsgJ3RoYW4gMHgnICsga01heExlbmd0aC50b1N0cmluZygxNikgKyAnIGJ5dGVzJztcblxuLy8gemxpYiBkb2Vzbid0IHByb3ZpZGUgdGhlc2UsIHNvIGtsdWRnZSB0aGVtIGluIGZvbGxvd2luZyB0aGUgc2FtZVxuLy8gY29uc3QgbmFtaW5nIHNjaGVtZSB6bGliIHVzZXMuXG5iaW5kaW5nLlpfTUlOX1dJTkRPV0JJVFMgPSA4O1xuYmluZGluZy5aX01BWF9XSU5ET1dCSVRTID0gMTU7XG5iaW5kaW5nLlpfREVGQVVMVF9XSU5ET1dCSVRTID0gMTU7XG5cbi8vIGZld2VyIHRoYW4gNjQgYnl0ZXMgcGVyIGNodW5rIGlzIHN0dXBpZC5cbi8vIHRlY2huaWNhbGx5IGl0IGNvdWxkIHdvcmsgd2l0aCBhcyBmZXcgYXMgOCwgYnV0IGV2ZW4gNjQgYnl0ZXNcbi8vIGlzIGFic3VyZGx5IGxvdy4gIFVzdWFsbHkgYSBNQiBvciBtb3JlIGlzIGJlc3QuXG5iaW5kaW5nLlpfTUlOX0NIVU5LID0gNjQ7XG5iaW5kaW5nLlpfTUFYX0NIVU5LID0gSW5maW5pdHk7XG5iaW5kaW5nLlpfREVGQVVMVF9DSFVOSyA9IDE2ICogMTAyNDtcblxuYmluZGluZy5aX01JTl9NRU1MRVZFTCA9IDE7XG5iaW5kaW5nLlpfTUFYX01FTUxFVkVMID0gOTtcbmJpbmRpbmcuWl9ERUZBVUxUX01FTUxFVkVMID0gODtcblxuYmluZGluZy5aX01JTl9MRVZFTCA9IC0xO1xuYmluZGluZy5aX01BWF9MRVZFTCA9IDk7XG5iaW5kaW5nLlpfREVGQVVMVF9MRVZFTCA9IGJpbmRpbmcuWl9ERUZBVUxUX0NPTVBSRVNTSU9OO1xuXG4vLyBleHBvc2UgYWxsIHRoZSB6bGliIGNvbnN0YW50c1xudmFyIGJrZXlzID0gT2JqZWN0LmtleXMoYmluZGluZyk7XG5mb3IgKHZhciBiayA9IDA7IGJrIDwgYmtleXMubGVuZ3RoOyBiaysrKSB7XG4gIHZhciBia2V5ID0gYmtleXNbYmtdO1xuICBpZiAoYmtleS5tYXRjaCgvXlovKSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBia2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogYmluZGluZ1tia2V5XSwgd3JpdGFibGU6IGZhbHNlXG4gICAgfSk7XG4gIH1cbn1cblxuLy8gdHJhbnNsYXRpb24gdGFibGUgZm9yIHJldHVybiBjb2Rlcy5cbnZhciBjb2RlcyA9IHtcbiAgWl9PSzogYmluZGluZy5aX09LLFxuICBaX1NUUkVBTV9FTkQ6IGJpbmRpbmcuWl9TVFJFQU1fRU5ELFxuICBaX05FRURfRElDVDogYmluZGluZy5aX05FRURfRElDVCxcbiAgWl9FUlJOTzogYmluZGluZy5aX0VSUk5PLFxuICBaX1NUUkVBTV9FUlJPUjogYmluZGluZy5aX1NUUkVBTV9FUlJPUixcbiAgWl9EQVRBX0VSUk9SOiBiaW5kaW5nLlpfREFUQV9FUlJPUixcbiAgWl9NRU1fRVJST1I6IGJpbmRpbmcuWl9NRU1fRVJST1IsXG4gIFpfQlVGX0VSUk9SOiBiaW5kaW5nLlpfQlVGX0VSUk9SLFxuICBaX1ZFUlNJT05fRVJST1I6IGJpbmRpbmcuWl9WRVJTSU9OX0VSUk9SXG59O1xuXG52YXIgY2tleXMgPSBPYmplY3Qua2V5cyhjb2Rlcyk7XG5mb3IgKHZhciBjayA9IDA7IGNrIDwgY2tleXMubGVuZ3RoOyBjaysrKSB7XG4gIHZhciBja2V5ID0gY2tleXNbY2tdO1xuICBjb2Rlc1tjb2Rlc1tja2V5XV0gPSBja2V5O1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ2NvZGVzJywge1xuICBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogT2JqZWN0LmZyZWV6ZShjb2RlcyksIHdyaXRhYmxlOiBmYWxzZVxufSk7XG5cbmV4cG9ydHMuRGVmbGF0ZSA9IERlZmxhdGU7XG5leHBvcnRzLkluZmxhdGUgPSBJbmZsYXRlO1xuZXhwb3J0cy5HemlwID0gR3ppcDtcbmV4cG9ydHMuR3VuemlwID0gR3VuemlwO1xuZXhwb3J0cy5EZWZsYXRlUmF3ID0gRGVmbGF0ZVJhdztcbmV4cG9ydHMuSW5mbGF0ZVJhdyA9IEluZmxhdGVSYXc7XG5leHBvcnRzLlVuemlwID0gVW56aXA7XG5cbmV4cG9ydHMuY3JlYXRlRGVmbGF0ZSA9IGZ1bmN0aW9uIChvKSB7XG4gIHJldHVybiBuZXcgRGVmbGF0ZShvKTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlSW5mbGF0ZSA9IGZ1bmN0aW9uIChvKSB7XG4gIHJldHVybiBuZXcgSW5mbGF0ZShvKTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlRGVmbGF0ZVJhdyA9IGZ1bmN0aW9uIChvKSB7XG4gIHJldHVybiBuZXcgRGVmbGF0ZVJhdyhvKTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlSW5mbGF0ZVJhdyA9IGZ1bmN0aW9uIChvKSB7XG4gIHJldHVybiBuZXcgSW5mbGF0ZVJhdyhvKTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlR3ppcCA9IGZ1bmN0aW9uIChvKSB7XG4gIHJldHVybiBuZXcgR3ppcChvKTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlR3VuemlwID0gZnVuY3Rpb24gKG8pIHtcbiAgcmV0dXJuIG5ldyBHdW56aXAobyk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZVVuemlwID0gZnVuY3Rpb24gKG8pIHtcbiAgcmV0dXJuIG5ldyBVbnppcChvKTtcbn07XG5cbi8vIENvbnZlbmllbmNlIG1ldGhvZHMuXG4vLyBjb21wcmVzcy9kZWNvbXByZXNzIGEgc3RyaW5nIG9yIGJ1ZmZlciBpbiBvbmUgc3RlcC5cbmV4cG9ydHMuZGVmbGF0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gb3B0cztcbiAgICBvcHRzID0ge307XG4gIH1cbiAgcmV0dXJuIHpsaWJCdWZmZXIobmV3IERlZmxhdGUob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0cy5kZWZsYXRlU3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHtcbiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBEZWZsYXRlKG9wdHMpLCBidWZmZXIpO1xufTtcblxuZXhwb3J0cy5nemlwID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgR3ppcChvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7XG59O1xuXG5leHBvcnRzLmd6aXBTeW5jID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cykge1xuICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IEd6aXAob3B0cyksIGJ1ZmZlcik7XG59O1xuXG5leHBvcnRzLmRlZmxhdGVSYXcgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG4gIHJldHVybiB6bGliQnVmZmVyKG5ldyBEZWZsYXRlUmF3KG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTtcbn07XG5cbmV4cG9ydHMuZGVmbGF0ZVJhd1N5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgRGVmbGF0ZVJhdyhvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmV4cG9ydHMudW56aXAgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG4gIHJldHVybiB6bGliQnVmZmVyKG5ldyBVbnppcChvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7XG59O1xuXG5leHBvcnRzLnVuemlwU3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHtcbiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBVbnppcChvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmV4cG9ydHMuaW5mbGF0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gb3B0cztcbiAgICBvcHRzID0ge307XG4gIH1cbiAgcmV0dXJuIHpsaWJCdWZmZXIobmV3IEluZmxhdGUob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0cy5pbmZsYXRlU3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHtcbiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBJbmZsYXRlKG9wdHMpLCBidWZmZXIpO1xufTtcblxuZXhwb3J0cy5ndW56aXAgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG4gIHJldHVybiB6bGliQnVmZmVyKG5ldyBHdW56aXAob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0cy5ndW56aXBTeW5jID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cykge1xuICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IEd1bnppcChvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmV4cG9ydHMuaW5mbGF0ZVJhdyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gb3B0cztcbiAgICBvcHRzID0ge307XG4gIH1cbiAgcmV0dXJuIHpsaWJCdWZmZXIobmV3IEluZmxhdGVSYXcob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0cy5pbmZsYXRlUmF3U3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHtcbiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBJbmZsYXRlUmF3KG9wdHMpLCBidWZmZXIpO1xufTtcblxuZnVuY3Rpb24gemxpYkJ1ZmZlcihlbmdpbmUsIGJ1ZmZlciwgY2FsbGJhY2spIHtcbiAgdmFyIGJ1ZmZlcnMgPSBbXTtcbiAgdmFyIG5yZWFkID0gMDtcblxuICBlbmdpbmUub24oJ2Vycm9yJywgb25FcnJvcik7XG4gIGVuZ2luZS5vbignZW5kJywgb25FbmQpO1xuXG4gIGVuZ2luZS5lbmQoYnVmZmVyKTtcbiAgZmxvdygpO1xuXG4gIGZ1bmN0aW9uIGZsb3coKSB7XG4gICAgdmFyIGNodW5rO1xuICAgIHdoaWxlIChudWxsICE9PSAoY2h1bmsgPSBlbmdpbmUucmVhZCgpKSkge1xuICAgICAgYnVmZmVycy5wdXNoKGNodW5rKTtcbiAgICAgIG5yZWFkICs9IGNodW5rLmxlbmd0aDtcbiAgICB9XG4gICAgZW5naW5lLm9uY2UoJ3JlYWRhYmxlJywgZmxvdyk7XG4gIH1cblxuICBmdW5jdGlvbiBvbkVycm9yKGVycikge1xuICAgIGVuZ2luZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25FbmQpO1xuICAgIGVuZ2luZS5yZW1vdmVMaXN0ZW5lcigncmVhZGFibGUnLCBmbG93KTtcbiAgICBjYWxsYmFjayhlcnIpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25FbmQoKSB7XG4gICAgdmFyIGJ1ZjtcbiAgICB2YXIgZXJyID0gbnVsbDtcblxuICAgIGlmIChucmVhZCA+PSBrTWF4TGVuZ3RoKSB7XG4gICAgICBlcnIgPSBuZXcgUmFuZ2VFcnJvcihrUmFuZ2VFcnJvck1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWYgPSBCdWZmZXIuY29uY2F0KGJ1ZmZlcnMsIG5yZWFkKTtcbiAgICB9XG5cbiAgICBidWZmZXJzID0gW107XG4gICAgZW5naW5lLmNsb3NlKCk7XG4gICAgY2FsbGJhY2soZXJyLCBidWYpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHpsaWJCdWZmZXJTeW5jKGVuZ2luZSwgYnVmZmVyKSB7XG4gIGlmICh0eXBlb2YgYnVmZmVyID09PSAnc3RyaW5nJykgYnVmZmVyID0gQnVmZmVyLmZyb20oYnVmZmVyKTtcblxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWZmZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdOb3QgYSBzdHJpbmcgb3IgYnVmZmVyJyk7XG5cbiAgdmFyIGZsdXNoRmxhZyA9IGVuZ2luZS5fZmluaXNoRmx1c2hGbGFnO1xuXG4gIHJldHVybiBlbmdpbmUuX3Byb2Nlc3NDaHVuayhidWZmZXIsIGZsdXNoRmxhZyk7XG59XG5cbi8vIGdlbmVyaWMgemxpYlxuLy8gbWluaW1hbCAyLWJ5dGUgaGVhZGVyXG5mdW5jdGlvbiBEZWZsYXRlKG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERlZmxhdGUpKSByZXR1cm4gbmV3IERlZmxhdGUob3B0cyk7XG4gIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLkRFRkxBVEUpO1xufVxuXG5mdW5jdGlvbiBJbmZsYXRlKG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEluZmxhdGUpKSByZXR1cm4gbmV3IEluZmxhdGUob3B0cyk7XG4gIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLklORkxBVEUpO1xufVxuXG4vLyBnemlwIC0gYmlnZ2VyIGhlYWRlciwgc2FtZSBkZWZsYXRlIGNvbXByZXNzaW9uXG5mdW5jdGlvbiBHemlwKG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEd6aXApKSByZXR1cm4gbmV3IEd6aXAob3B0cyk7XG4gIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLkdaSVApO1xufVxuXG5mdW5jdGlvbiBHdW56aXAob3B0cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgR3VuemlwKSkgcmV0dXJuIG5ldyBHdW56aXAob3B0cyk7XG4gIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLkdVTlpJUCk7XG59XG5cbi8vIHJhdyAtIG5vIGhlYWRlclxuZnVuY3Rpb24gRGVmbGF0ZVJhdyhvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEZWZsYXRlUmF3KSkgcmV0dXJuIG5ldyBEZWZsYXRlUmF3KG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5ERUZMQVRFUkFXKTtcbn1cblxuZnVuY3Rpb24gSW5mbGF0ZVJhdyhvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBJbmZsYXRlUmF3KSkgcmV0dXJuIG5ldyBJbmZsYXRlUmF3KG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5JTkZMQVRFUkFXKTtcbn1cblxuLy8gYXV0by1kZXRlY3QgaGVhZGVyLlxuZnVuY3Rpb24gVW56aXAob3B0cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVW56aXApKSByZXR1cm4gbmV3IFVuemlwKG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5VTlpJUCk7XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRGbHVzaEZsYWcoZmxhZykge1xuICByZXR1cm4gZmxhZyA9PT0gYmluZGluZy5aX05PX0ZMVVNIIHx8IGZsYWcgPT09IGJpbmRpbmcuWl9QQVJUSUFMX0ZMVVNIIHx8IGZsYWcgPT09IGJpbmRpbmcuWl9TWU5DX0ZMVVNIIHx8IGZsYWcgPT09IGJpbmRpbmcuWl9GVUxMX0ZMVVNIIHx8IGZsYWcgPT09IGJpbmRpbmcuWl9GSU5JU0ggfHwgZmxhZyA9PT0gYmluZGluZy5aX0JMT0NLO1xufVxuXG4vLyB0aGUgWmxpYiBjbGFzcyB0aGV5IGFsbCBpbmhlcml0IGZyb21cbi8vIFRoaXMgdGhpbmcgbWFuYWdlcyB0aGUgcXVldWUgb2YgcmVxdWVzdHMsIGFuZCByZXR1cm5zXG4vLyB0cnVlIG9yIGZhbHNlIGlmIHRoZXJlIGlzIGFueXRoaW5nIGluIHRoZSBxdWV1ZSB3aGVuXG4vLyB5b3UgY2FsbCB0aGUgLndyaXRlKCkgbWV0aG9kLlxuXG5mdW5jdGlvbiBabGliKG9wdHMsIG1vZGUpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB0aGlzLl9vcHRzID0gb3B0cyA9IG9wdHMgfHwge307XG4gIHRoaXMuX2NodW5rU2l6ZSA9IG9wdHMuY2h1bmtTaXplIHx8IGV4cG9ydHMuWl9ERUZBVUxUX0NIVU5LO1xuXG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMsIG9wdHMpO1xuXG4gIGlmIChvcHRzLmZsdXNoICYmICFpc1ZhbGlkRmx1c2hGbGFnKG9wdHMuZmx1c2gpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGZsdXNoIGZsYWc6ICcgKyBvcHRzLmZsdXNoKTtcbiAgfVxuICBpZiAob3B0cy5maW5pc2hGbHVzaCAmJiAhaXNWYWxpZEZsdXNoRmxhZyhvcHRzLmZpbmlzaEZsdXNoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmbHVzaCBmbGFnOiAnICsgb3B0cy5maW5pc2hGbHVzaCk7XG4gIH1cblxuICB0aGlzLl9mbHVzaEZsYWcgPSBvcHRzLmZsdXNoIHx8IGJpbmRpbmcuWl9OT19GTFVTSDtcbiAgdGhpcy5fZmluaXNoRmx1c2hGbGFnID0gdHlwZW9mIG9wdHMuZmluaXNoRmx1c2ggIT09ICd1bmRlZmluZWQnID8gb3B0cy5maW5pc2hGbHVzaCA6IGJpbmRpbmcuWl9GSU5JU0g7XG5cbiAgaWYgKG9wdHMuY2h1bmtTaXplKSB7XG4gICAgaWYgKG9wdHMuY2h1bmtTaXplIDwgZXhwb3J0cy5aX01JTl9DSFVOSyB8fCBvcHRzLmNodW5rU2l6ZSA+IGV4cG9ydHMuWl9NQVhfQ0hVTkspIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjaHVuayBzaXplOiAnICsgb3B0cy5jaHVua1NpemUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLndpbmRvd0JpdHMpIHtcbiAgICBpZiAob3B0cy53aW5kb3dCaXRzIDwgZXhwb3J0cy5aX01JTl9XSU5ET1dCSVRTIHx8IG9wdHMud2luZG93Qml0cyA+IGV4cG9ydHMuWl9NQVhfV0lORE9XQklUUykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHdpbmRvd0JpdHM6ICcgKyBvcHRzLndpbmRvd0JpdHMpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLmxldmVsKSB7XG4gICAgaWYgKG9wdHMubGV2ZWwgPCBleHBvcnRzLlpfTUlOX0xFVkVMIHx8IG9wdHMubGV2ZWwgPiBleHBvcnRzLlpfTUFYX0xFVkVMKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29tcHJlc3Npb24gbGV2ZWw6ICcgKyBvcHRzLmxldmVsKTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy5tZW1MZXZlbCkge1xuICAgIGlmIChvcHRzLm1lbUxldmVsIDwgZXhwb3J0cy5aX01JTl9NRU1MRVZFTCB8fCBvcHRzLm1lbUxldmVsID4gZXhwb3J0cy5aX01BWF9NRU1MRVZFTCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1lbUxldmVsOiAnICsgb3B0cy5tZW1MZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdHMuc3RyYXRlZ3kpIHtcbiAgICBpZiAob3B0cy5zdHJhdGVneSAhPSBleHBvcnRzLlpfRklMVEVSRUQgJiYgb3B0cy5zdHJhdGVneSAhPSBleHBvcnRzLlpfSFVGRk1BTl9PTkxZICYmIG9wdHMuc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX1JMRSAmJiBvcHRzLnN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9GSVhFRCAmJiBvcHRzLnN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9ERUZBVUxUX1NUUkFURUdZKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyYXRlZ3k6ICcgKyBvcHRzLnN0cmF0ZWd5KTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy5kaWN0aW9uYXJ5KSB7XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIob3B0cy5kaWN0aW9uYXJ5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRpY3Rpb25hcnk6IGl0IHNob3VsZCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpO1xuICAgIH1cbiAgfVxuXG4gIHRoaXMuX2hhbmRsZSA9IG5ldyBiaW5kaW5nLlpsaWIobW9kZSk7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB0aGlzLl9oYWRFcnJvciA9IGZhbHNlO1xuICB0aGlzLl9oYW5kbGUub25lcnJvciA9IGZ1bmN0aW9uIChtZXNzYWdlLCBlcnJubykge1xuICAgIC8vIHRoZXJlIGlzIG5vIHdheSB0byBjbGVhbmx5IHJlY292ZXIuXG4gICAgLy8gY29udGludWluZyBvbmx5IG9ic2N1cmVzIHByb2JsZW1zLlxuICAgIF9jbG9zZShzZWxmKTtcbiAgICBzZWxmLl9oYWRFcnJvciA9IHRydWU7XG5cbiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgZXJyb3IuZXJybm8gPSBlcnJubztcbiAgICBlcnJvci5jb2RlID0gZXhwb3J0cy5jb2Rlc1tlcnJub107XG4gICAgc2VsZi5lbWl0KCdlcnJvcicsIGVycm9yKTtcbiAgfTtcblxuICB2YXIgbGV2ZWwgPSBleHBvcnRzLlpfREVGQVVMVF9DT01QUkVTU0lPTjtcbiAgaWYgKHR5cGVvZiBvcHRzLmxldmVsID09PSAnbnVtYmVyJykgbGV2ZWwgPSBvcHRzLmxldmVsO1xuXG4gIHZhciBzdHJhdGVneSA9IGV4cG9ydHMuWl9ERUZBVUxUX1NUUkFURUdZO1xuICBpZiAodHlwZW9mIG9wdHMuc3RyYXRlZ3kgPT09ICdudW1iZXInKSBzdHJhdGVneSA9IG9wdHMuc3RyYXRlZ3k7XG5cbiAgdGhpcy5faGFuZGxlLmluaXQob3B0cy53aW5kb3dCaXRzIHx8IGV4cG9ydHMuWl9ERUZBVUxUX1dJTkRPV0JJVFMsIGxldmVsLCBvcHRzLm1lbUxldmVsIHx8IGV4cG9ydHMuWl9ERUZBVUxUX01FTUxFVkVMLCBzdHJhdGVneSwgb3B0cy5kaWN0aW9uYXJ5KTtcblxuICB0aGlzLl9idWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUodGhpcy5fY2h1bmtTaXplKTtcbiAgdGhpcy5fb2Zmc2V0ID0gMDtcbiAgdGhpcy5fbGV2ZWwgPSBsZXZlbDtcbiAgdGhpcy5fc3RyYXRlZ3kgPSBzdHJhdGVneTtcblxuICB0aGlzLm9uY2UoJ2VuZCcsIHRoaXMuY2xvc2UpO1xuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnX2Nsb3NlZCcsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAhX3RoaXMuX2hhbmRsZTtcbiAgICB9LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG51dGlsLmluaGVyaXRzKFpsaWIsIFRyYW5zZm9ybSk7XG5cblpsaWIucHJvdG90eXBlLnBhcmFtcyA9IGZ1bmN0aW9uIChsZXZlbCwgc3RyYXRlZ3ksIGNhbGxiYWNrKSB7XG4gIGlmIChsZXZlbCA8IGV4cG9ydHMuWl9NSU5fTEVWRUwgfHwgbGV2ZWwgPiBleHBvcnRzLlpfTUFYX0xFVkVMKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgY29tcHJlc3Npb24gbGV2ZWw6ICcgKyBsZXZlbCk7XG4gIH1cbiAgaWYgKHN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9GSUxURVJFRCAmJiBzdHJhdGVneSAhPSBleHBvcnRzLlpfSFVGRk1BTl9PTkxZICYmIHN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9STEUgJiYgc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0ZJWEVEICYmIHN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9ERUZBVUxUX1NUUkFURUdZKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBzdHJhdGVneTogJyArIHN0cmF0ZWd5KTtcbiAgfVxuXG4gIGlmICh0aGlzLl9sZXZlbCAhPT0gbGV2ZWwgfHwgdGhpcy5fc3RyYXRlZ3kgIT09IHN0cmF0ZWd5KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuZmx1c2goYmluZGluZy5aX1NZTkNfRkxVU0gsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydChzZWxmLl9oYW5kbGUsICd6bGliIGJpbmRpbmcgY2xvc2VkJyk7XG4gICAgICBzZWxmLl9oYW5kbGUucGFyYW1zKGxldmVsLCBzdHJhdGVneSk7XG4gICAgICBpZiAoIXNlbGYuX2hhZEVycm9yKSB7XG4gICAgICAgIHNlbGYuX2xldmVsID0gbGV2ZWw7XG4gICAgICAgIHNlbGYuX3N0cmF0ZWd5ID0gc3RyYXRlZ3k7XG4gICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTtcbiAgfVxufTtcblxuWmxpYi5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIGFzc2VydCh0aGlzLl9oYW5kbGUsICd6bGliIGJpbmRpbmcgY2xvc2VkJyk7XG4gIHJldHVybiB0aGlzLl9oYW5kbGUucmVzZXQoKTtcbn07XG5cbi8vIFRoaXMgaXMgdGhlIF9mbHVzaCBmdW5jdGlvbiBjYWxsZWQgYnkgdGhlIHRyYW5zZm9ybSBjbGFzcyxcbi8vIGludGVybmFsbHksIHdoZW4gdGhlIGxhc3QgY2h1bmsgaGFzIGJlZW4gd3JpdHRlbi5cblpsaWIucHJvdG90eXBlLl9mbHVzaCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB0aGlzLl90cmFuc2Zvcm0oQnVmZmVyLmFsbG9jKDApLCAnJywgY2FsbGJhY2spO1xufTtcblxuWmxpYi5wcm90b3R5cGUuZmx1c2ggPSBmdW5jdGlvbiAoa2luZCwgY2FsbGJhY2spIHtcbiAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgdmFyIHdzID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAodHlwZW9mIGtpbmQgPT09ICdmdW5jdGlvbicgfHwga2luZCA9PT0gdW5kZWZpbmVkICYmICFjYWxsYmFjaykge1xuICAgIGNhbGxiYWNrID0ga2luZDtcbiAgICBraW5kID0gYmluZGluZy5aX0ZVTExfRkxVU0g7XG4gIH1cblxuICBpZiAod3MuZW5kZWQpIHtcbiAgICBpZiAoY2FsbGJhY2spIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2spO1xuICB9IGVsc2UgaWYgKHdzLmVuZGluZykge1xuICAgIGlmIChjYWxsYmFjaykgdGhpcy5vbmNlKCdlbmQnLCBjYWxsYmFjayk7XG4gIH0gZWxzZSBpZiAod3MubmVlZERyYWluKSB7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLm9uY2UoJ2RyYWluJywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMyLmZsdXNoKGtpbmQsIGNhbGxiYWNrKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9mbHVzaEZsYWcgPSBraW5kO1xuICAgIHRoaXMud3JpdGUoQnVmZmVyLmFsbG9jKDApLCAnJywgY2FsbGJhY2spO1xuICB9XG59O1xuXG5abGliLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBfY2xvc2UodGhpcywgY2FsbGJhY2spO1xuICBwcm9jZXNzLm5leHRUaWNrKGVtaXRDbG9zZU5ULCB0aGlzKTtcbn07XG5cbmZ1bmN0aW9uIF9jbG9zZShlbmdpbmUsIGNhbGxiYWNrKSB7XG4gIGlmIChjYWxsYmFjaykgcHJvY2Vzcy5uZXh0VGljayhjYWxsYmFjayk7XG5cbiAgLy8gQ2FsbGVyIG1heSBpbnZva2UgLmNsb3NlIGFmdGVyIGEgemxpYiBlcnJvciAod2hpY2ggd2lsbCBudWxsIF9oYW5kbGUpLlxuICBpZiAoIWVuZ2luZS5faGFuZGxlKSByZXR1cm47XG5cbiAgZW5naW5lLl9oYW5kbGUuY2xvc2UoKTtcbiAgZW5naW5lLl9oYW5kbGUgPSBudWxsO1xufVxuXG5mdW5jdGlvbiBlbWl0Q2xvc2VOVChzZWxmKSB7XG4gIHNlbGYuZW1pdCgnY2xvc2UnKTtcbn1cblxuWmxpYi5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBmbHVzaEZsYWc7XG4gIHZhciB3cyA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG4gIHZhciBlbmRpbmcgPSB3cy5lbmRpbmcgfHwgd3MuZW5kZWQ7XG4gIHZhciBsYXN0ID0gZW5kaW5nICYmICghY2h1bmsgfHwgd3MubGVuZ3RoID09PSBjaHVuay5sZW5ndGgpO1xuXG4gIGlmIChjaHVuayAhPT0gbnVsbCAmJiAhQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkgcmV0dXJuIGNiKG5ldyBFcnJvcignaW52YWxpZCBpbnB1dCcpKTtcblxuICBpZiAoIXRoaXMuX2hhbmRsZSkgcmV0dXJuIGNiKG5ldyBFcnJvcignemxpYiBiaW5kaW5nIGNsb3NlZCcpKTtcblxuICAvLyBJZiBpdCdzIHRoZSBsYXN0IGNodW5rLCBvciBhIGZpbmFsIGZsdXNoLCB3ZSB1c2UgdGhlIFpfRklOSVNIIGZsdXNoIGZsYWdcbiAgLy8gKG9yIHdoYXRldmVyIGZsYWcgd2FzIHByb3ZpZGVkIHVzaW5nIG9wdHMuZmluaXNoRmx1c2gpLlxuICAvLyBJZiBpdCdzIGV4cGxpY2l0bHkgZmx1c2hpbmcgYXQgc29tZSBvdGhlciB0aW1lLCB0aGVuIHdlIHVzZVxuICAvLyBaX0ZVTExfRkxVU0guIE90aGVyd2lzZSwgdXNlIFpfTk9fRkxVU0ggZm9yIG1heGltdW0gY29tcHJlc3Npb25cbiAgLy8gZ29vZG5lc3MuXG4gIGlmIChsYXN0KSBmbHVzaEZsYWcgPSB0aGlzLl9maW5pc2hGbHVzaEZsYWc7ZWxzZSB7XG4gICAgZmx1c2hGbGFnID0gdGhpcy5fZmx1c2hGbGFnO1xuICAgIC8vIG9uY2Ugd2UndmUgZmx1c2hlZCB0aGUgbGFzdCBvZiB0aGUgcXVldWUsIHN0b3AgZmx1c2hpbmcgYW5kXG4gICAgLy8gZ28gYmFjayB0byB0aGUgbm9ybWFsIGJlaGF2aW9yLlxuICAgIGlmIChjaHVuay5sZW5ndGggPj0gd3MubGVuZ3RoKSB7XG4gICAgICB0aGlzLl9mbHVzaEZsYWcgPSB0aGlzLl9vcHRzLmZsdXNoIHx8IGJpbmRpbmcuWl9OT19GTFVTSDtcbiAgICB9XG4gIH1cblxuICB0aGlzLl9wcm9jZXNzQ2h1bmsoY2h1bmssIGZsdXNoRmxhZywgY2IpO1xufTtcblxuWmxpYi5wcm90b3R5cGUuX3Byb2Nlc3NDaHVuayA9IGZ1bmN0aW9uIChjaHVuaywgZmx1c2hGbGFnLCBjYikge1xuICB2YXIgYXZhaWxJbkJlZm9yZSA9IGNodW5rICYmIGNodW5rLmxlbmd0aDtcbiAgdmFyIGF2YWlsT3V0QmVmb3JlID0gdGhpcy5fY2h1bmtTaXplIC0gdGhpcy5fb2Zmc2V0O1xuICB2YXIgaW5PZmYgPSAwO1xuXG4gIHZhciBzZWxmID0gdGhpcztcblxuICB2YXIgYXN5bmMgPSB0eXBlb2YgY2IgPT09ICdmdW5jdGlvbic7XG5cbiAgaWYgKCFhc3luYykge1xuICAgIHZhciBidWZmZXJzID0gW107XG4gICAgdmFyIG5yZWFkID0gMDtcblxuICAgIHZhciBlcnJvcjtcbiAgICB0aGlzLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcikge1xuICAgICAgZXJyb3IgPSBlcjtcbiAgICB9KTtcblxuICAgIGFzc2VydCh0aGlzLl9oYW5kbGUsICd6bGliIGJpbmRpbmcgY2xvc2VkJyk7XG4gICAgZG8ge1xuICAgICAgdmFyIHJlcyA9IHRoaXMuX2hhbmRsZS53cml0ZVN5bmMoZmx1c2hGbGFnLCBjaHVuaywgLy8gaW5cbiAgICAgIGluT2ZmLCAvLyBpbl9vZmZcbiAgICAgIGF2YWlsSW5CZWZvcmUsIC8vIGluX2xlblxuICAgICAgdGhpcy5fYnVmZmVyLCAvLyBvdXRcbiAgICAgIHRoaXMuX29mZnNldCwgLy9vdXRfb2ZmXG4gICAgICBhdmFpbE91dEJlZm9yZSk7IC8vIG91dF9sZW5cbiAgICB9IHdoaWxlICghdGhpcy5faGFkRXJyb3IgJiYgY2FsbGJhY2socmVzWzBdLCByZXNbMV0pKTtcblxuICAgIGlmICh0aGlzLl9oYWRFcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgaWYgKG5yZWFkID49IGtNYXhMZW5ndGgpIHtcbiAgICAgIF9jbG9zZSh0aGlzKTtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGtSYW5nZUVycm9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgdmFyIGJ1ZiA9IEJ1ZmZlci5jb25jYXQoYnVmZmVycywgbnJlYWQpO1xuICAgIF9jbG9zZSh0aGlzKTtcblxuICAgIHJldHVybiBidWY7XG4gIH1cblxuICBhc3NlcnQodGhpcy5faGFuZGxlLCAnemxpYiBiaW5kaW5nIGNsb3NlZCcpO1xuICB2YXIgcmVxID0gdGhpcy5faGFuZGxlLndyaXRlKGZsdXNoRmxhZywgY2h1bmssIC8vIGluXG4gIGluT2ZmLCAvLyBpbl9vZmZcbiAgYXZhaWxJbkJlZm9yZSwgLy8gaW5fbGVuXG4gIHRoaXMuX2J1ZmZlciwgLy8gb3V0XG4gIHRoaXMuX29mZnNldCwgLy9vdXRfb2ZmXG4gIGF2YWlsT3V0QmVmb3JlKTsgLy8gb3V0X2xlblxuXG4gIHJlcS5idWZmZXIgPSBjaHVuaztcbiAgcmVxLmNhbGxiYWNrID0gY2FsbGJhY2s7XG5cbiAgZnVuY3Rpb24gY2FsbGJhY2soYXZhaWxJbkFmdGVyLCBhdmFpbE91dEFmdGVyKSB7XG4gICAgLy8gV2hlbiB0aGUgY2FsbGJhY2sgaXMgdXNlZCBpbiBhbiBhc3luYyB3cml0ZSwgdGhlIGNhbGxiYWNrJ3NcbiAgICAvLyBjb250ZXh0IGlzIHRoZSBgcmVxYCBvYmplY3QgdGhhdCB3YXMgY3JlYXRlZC4gVGhlIHJlcSBvYmplY3RcbiAgICAvLyBpcyA9PT0gdGhpcy5faGFuZGxlLCBhbmQgdGhhdCdzIHdoeSBpdCdzIGltcG9ydGFudCB0byBudWxsXG4gICAgLy8gb3V0IHRoZSB2YWx1ZXMgYWZ0ZXIgdGhleSBhcmUgZG9uZSBiZWluZyB1c2VkLiBgdGhpcy5faGFuZGxlYFxuICAgIC8vIGNhbiBzdGF5IGluIG1lbW9yeSBsb25nZXIgdGhhbiB0aGUgY2FsbGJhY2sgYW5kIGJ1ZmZlciBhcmUgbmVlZGVkLlxuICAgIGlmICh0aGlzKSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IG51bGw7XG4gICAgICB0aGlzLmNhbGxiYWNrID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoc2VsZi5faGFkRXJyb3IpIHJldHVybjtcblxuICAgIHZhciBoYXZlID0gYXZhaWxPdXRCZWZvcmUgLSBhdmFpbE91dEFmdGVyO1xuICAgIGFzc2VydChoYXZlID49IDAsICdoYXZlIHNob3VsZCBub3QgZ28gZG93bicpO1xuXG4gICAgaWYgKGhhdmUgPiAwKSB7XG4gICAgICB2YXIgb3V0ID0gc2VsZi5fYnVmZmVyLnNsaWNlKHNlbGYuX29mZnNldCwgc2VsZi5fb2Zmc2V0ICsgaGF2ZSk7XG4gICAgICBzZWxmLl9vZmZzZXQgKz0gaGF2ZTtcbiAgICAgIC8vIHNlcnZlIHNvbWUgb3V0cHV0IHRvIHRoZSBjb25zdW1lci5cbiAgICAgIGlmIChhc3luYykge1xuICAgICAgICBzZWxmLnB1c2gob3V0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ1ZmZlcnMucHVzaChvdXQpO1xuICAgICAgICBucmVhZCArPSBvdXQubGVuZ3RoO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGV4aGF1c3RlZCB0aGUgb3V0cHV0IGJ1ZmZlciwgb3IgdXNlZCBhbGwgdGhlIGlucHV0IGNyZWF0ZSBhIG5ldyBvbmUuXG4gICAgaWYgKGF2YWlsT3V0QWZ0ZXIgPT09IDAgfHwgc2VsZi5fb2Zmc2V0ID49IHNlbGYuX2NodW5rU2l6ZSkge1xuICAgICAgYXZhaWxPdXRCZWZvcmUgPSBzZWxmLl9jaHVua1NpemU7XG4gICAgICBzZWxmLl9vZmZzZXQgPSAwO1xuICAgICAgc2VsZi5fYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKHNlbGYuX2NodW5rU2l6ZSk7XG4gICAgfVxuXG4gICAgaWYgKGF2YWlsT3V0QWZ0ZXIgPT09IDApIHtcbiAgICAgIC8vIE5vdCBhY3R1YWxseSBkb25lLiAgTmVlZCB0byByZXByb2Nlc3MuXG4gICAgICAvLyBBbHNvLCB1cGRhdGUgdGhlIGF2YWlsSW5CZWZvcmUgdG8gdGhlIGF2YWlsSW5BZnRlciB2YWx1ZSxcbiAgICAgIC8vIHNvIHRoYXQgaWYgd2UgaGF2ZSB0byBoaXQgaXQgYSB0aGlyZCAoZm91cnRoLCBldGMuKSB0aW1lLFxuICAgICAgLy8gaXQnbGwgaGF2ZSB0aGUgY29ycmVjdCBieXRlIGNvdW50cy5cbiAgICAgIGluT2ZmICs9IGF2YWlsSW5CZWZvcmUgLSBhdmFpbEluQWZ0ZXI7XG4gICAgICBhdmFpbEluQmVmb3JlID0gYXZhaWxJbkFmdGVyO1xuXG4gICAgICBpZiAoIWFzeW5jKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgdmFyIG5ld1JlcSA9IHNlbGYuX2hhbmRsZS53cml0ZShmbHVzaEZsYWcsIGNodW5rLCBpbk9mZiwgYXZhaWxJbkJlZm9yZSwgc2VsZi5fYnVmZmVyLCBzZWxmLl9vZmZzZXQsIHNlbGYuX2NodW5rU2l6ZSk7XG4gICAgICBuZXdSZXEuY2FsbGJhY2sgPSBjYWxsYmFjazsgLy8gdGhpcyBzYW1lIGZ1bmN0aW9uXG4gICAgICBuZXdSZXEuYnVmZmVyID0gY2h1bms7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFhc3luYykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gZmluaXNoZWQgd2l0aCB0aGUgY2h1bmsuXG4gICAgY2IoKTtcbiAgfVxufTtcblxudXRpbC5pbmhlcml0cyhEZWZsYXRlLCBabGliKTtcbnV0aWwuaW5oZXJpdHMoSW5mbGF0ZSwgWmxpYik7XG51dGlsLmluaGVyaXRzKEd6aXAsIFpsaWIpO1xudXRpbC5pbmhlcml0cyhHdW56aXAsIFpsaWIpO1xudXRpbC5pbmhlcml0cyhEZWZsYXRlUmF3LCBabGliKTtcbnV0aWwuaW5oZXJpdHMoSW5mbGF0ZVJhdywgWmxpYik7XG51dGlsLmluaGVyaXRzKFVuemlwLCBabGliKTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHhvciAoYSwgYikge1xuICB2YXIgbGVuZ3RoID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKVxuICB2YXIgYnVmZmVyID0gbmV3IEJ1ZmZlcihsZW5ndGgpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGJ1ZmZlcltpXSA9IGFbaV0gXiBiW2ldXG4gIH1cblxuICByZXR1cm4gYnVmZmVyXG59XG4iLCIvKiFcbiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLlxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCBiYXNlNjQgPSByZXF1aXJlKCdiYXNlNjQtanMnKVxuY29uc3QgaWVlZTc1NCA9IHJlcXVpcmUoJ2llZWU3NTQnKVxuY29uc3QgY3VzdG9tSW5zcGVjdFN5bWJvbCA9XG4gICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBTeW1ib2xbJ2ZvciddID09PSAnZnVuY3Rpb24nKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGRvdC1ub3RhdGlvblxuICAgID8gU3ltYm9sWydmb3InXSgnbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGRvdC1ub3RhdGlvblxuICAgIDogbnVsbFxuXG5leHBvcnRzLkJ1ZmZlciA9IEJ1ZmZlclxuZXhwb3J0cy5TbG93QnVmZmVyID0gU2xvd0J1ZmZlclxuZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFUyA9IDUwXG5cbmNvbnN0IEtfTUFYX0xFTkdUSCA9IDB4N2ZmZmZmZmZcbmV4cG9ydHMua01heExlbmd0aCA9IEtfTUFYX0xFTkdUSFxuXG4vKipcbiAqIElmIGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGA6XG4gKiAgID09PSB0cnVlICAgIFVzZSBVaW50OEFycmF5IGltcGxlbWVudGF0aW9uIChmYXN0ZXN0KVxuICogICA9PT0gZmFsc2UgICBQcmludCB3YXJuaW5nIGFuZCByZWNvbW1lbmQgdXNpbmcgYGJ1ZmZlcmAgdjQueCB3aGljaCBoYXMgYW4gT2JqZWN0XG4gKiAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIChtb3N0IGNvbXBhdGlibGUsIGV2ZW4gSUU2KVxuICpcbiAqIEJyb3dzZXJzIHRoYXQgc3VwcG9ydCB0eXBlZCBhcnJheXMgYXJlIElFIDEwKywgRmlyZWZveCA0KywgQ2hyb21lIDcrLCBTYWZhcmkgNS4xKyxcbiAqIE9wZXJhIDExLjYrLCBpT1MgNC4yKy5cbiAqXG4gKiBXZSByZXBvcnQgdGhhdCB0aGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBpZiB0aGUgYXJlIG5vdCBzdWJjbGFzc2FibGVcbiAqIHVzaW5nIF9fcHJvdG9fXy4gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWBcbiAqIChTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOCkuIElFIDEwIGxhY2tzIHN1cHBvcnRcbiAqIGZvciBfX3Byb3RvX18gYW5kIGhhcyBhIGJ1Z2d5IHR5cGVkIGFycmF5IGltcGxlbWVudGF0aW9uLlxuICovXG5CdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCA9IHR5cGVkQXJyYXlTdXBwb3J0KClcblxuaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICBjb25zb2xlLmVycm9yKFxuICAgICdUaGlzIGJyb3dzZXIgbGFja3MgdHlwZWQgYXJyYXkgKFVpbnQ4QXJyYXkpIHN1cHBvcnQgd2hpY2ggaXMgcmVxdWlyZWQgYnkgJyArXG4gICAgJ2BidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQuJ1xuICApXG59XG5cbmZ1bmN0aW9uIHR5cGVkQXJyYXlTdXBwb3J0ICgpIHtcbiAgLy8gQ2FuIHR5cGVkIGFycmF5IGluc3RhbmNlcyBjYW4gYmUgYXVnbWVudGVkP1xuICB0cnkge1xuICAgIGNvbnN0IGFyciA9IG5ldyBVaW50OEFycmF5KDEpXG4gICAgY29uc3QgcHJvdG8gPSB7IGZvbzogZnVuY3Rpb24gKCkgeyByZXR1cm4gNDIgfSB9XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHByb3RvLCBVaW50OEFycmF5LnByb3RvdHlwZSlcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoYXJyLCBwcm90bylcbiAgICByZXR1cm4gYXJyLmZvbygpID09PSA0MlxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlci5wcm90b3R5cGUsICdwYXJlbnQnLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKHRoaXMpKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyXG4gIH1cbn0pXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIucHJvdG90eXBlLCAnb2Zmc2V0Jywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0aGlzKSkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB0aGlzLmJ5dGVPZmZzZXRcbiAgfVxufSlcblxuZnVuY3Rpb24gY3JlYXRlQnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKGxlbmd0aCA+IEtfTUFYX0xFTkdUSCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInICsgbGVuZ3RoICsgJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcInNpemVcIicpXG4gIH1cbiAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2VcbiAgY29uc3QgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKVxuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoYnVmLCBCdWZmZXIucHJvdG90eXBlKVxuICByZXR1cm4gYnVmXG59XG5cbi8qKlxuICogVGhlIEJ1ZmZlciBjb25zdHJ1Y3RvciByZXR1cm5zIGluc3RhbmNlcyBvZiBgVWludDhBcnJheWAgdGhhdCBoYXZlIHRoZWlyXG4gKiBwcm90b3R5cGUgY2hhbmdlZCB0byBgQnVmZmVyLnByb3RvdHlwZWAuIEZ1cnRoZXJtb3JlLCBgQnVmZmVyYCBpcyBhIHN1YmNsYXNzIG9mXG4gKiBgVWludDhBcnJheWAsIHNvIHRoZSByZXR1cm5lZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGFsbCB0aGUgbm9kZSBgQnVmZmVyYCBtZXRob2RzXG4gKiBhbmQgdGhlIGBVaW50OEFycmF5YCBtZXRob2RzLiBTcXVhcmUgYnJhY2tldCBub3RhdGlvbiB3b3JrcyBhcyBleHBlY3RlZCAtLSBpdFxuICogcmV0dXJucyBhIHNpbmdsZSBvY3RldC5cbiAqXG4gKiBUaGUgYFVpbnQ4QXJyYXlgIHByb3RvdHlwZSByZW1haW5zIHVubW9kaWZpZWQuXG4gKi9cblxuZnVuY3Rpb24gQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICAvLyBDb21tb24gY2FzZS5cbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZ09yT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJ1xuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gYWxsb2NVbnNhZmUoYXJnKVxuICB9XG4gIHJldHVybiBmcm9tKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucG9vbFNpemUgPSA4MTkyIC8vIG5vdCB1c2VkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb25cblxuZnVuY3Rpb24gZnJvbSAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmcm9tU3RyaW5nKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0KVxuICB9XG5cbiAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5Vmlldyh2YWx1ZSlcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCAnICtcbiAgICAgICdvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnICsgKHR5cGVvZiB2YWx1ZSlcbiAgICApXG4gIH1cblxuICBpZiAoaXNJbnN0YW5jZSh2YWx1ZSwgQXJyYXlCdWZmZXIpIHx8XG4gICAgICAodmFsdWUgJiYgaXNJbnN0YW5jZSh2YWx1ZS5idWZmZXIsIEFycmF5QnVmZmVyKSkpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAodHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgKGlzSW5zdGFuY2UodmFsdWUsIFNoYXJlZEFycmF5QnVmZmVyKSB8fFxuICAgICAgKHZhbHVlICYmIGlzSW5zdGFuY2UodmFsdWUuYnVmZmVyLCBTaGFyZWRBcnJheUJ1ZmZlcikpKSkge1xuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJ2YWx1ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlIG51bWJlcidcbiAgICApXG4gIH1cblxuICBjb25zdCB2YWx1ZU9mID0gdmFsdWUudmFsdWVPZiAmJiB2YWx1ZS52YWx1ZU9mKClcbiAgaWYgKHZhbHVlT2YgIT0gbnVsbCAmJiB2YWx1ZU9mICE9PSB2YWx1ZSkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZU9mLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBjb25zdCBiID0gZnJvbU9iamVjdCh2YWx1ZSlcbiAgaWYgKGIpIHJldHVybiBiXG5cbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1ByaW1pdGl2ZSAhPSBudWxsICYmXG4gICAgICB0eXBlb2YgdmFsdWVbU3ltYm9sLnRvUHJpbWl0aXZlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZVtTeW1ib2wudG9QcmltaXRpdmVdKCdzdHJpbmcnKSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAnVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgJyArXG4gICAgJ29yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICcgKyAodHlwZW9mIHZhbHVlKVxuICApXG59XG5cbi8qKlxuICogRnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQnVmZmVyKGFyZywgZW5jb2RpbmcpIGJ1dCB0aHJvd3MgYSBUeXBlRXJyb3JcbiAqIGlmIHZhbHVlIGlzIGEgbnVtYmVyLlxuICogQnVmZmVyLmZyb20oc3RyWywgZW5jb2RpbmddKVxuICogQnVmZmVyLmZyb20oYXJyYXkpXG4gKiBCdWZmZXIuZnJvbShidWZmZXIpXG4gKiBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlclssIGJ5dGVPZmZzZXRbLCBsZW5ndGhdXSlcbiAqKi9cbkJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGZyb20odmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuLy8gTm90ZTogQ2hhbmdlIHByb3RvdHlwZSAqYWZ0ZXIqIEJ1ZmZlci5mcm9tIGlzIGRlZmluZWQgdG8gd29ya2Fyb3VuZCBDaHJvbWUgYnVnOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvcHVsbC8xNDhcbk9iamVjdC5zZXRQcm90b3R5cGVPZihCdWZmZXIucHJvdG90eXBlLCBVaW50OEFycmF5LnByb3RvdHlwZSlcbk9iamVjdC5zZXRQcm90b3R5cGVPZihCdWZmZXIsIFVpbnQ4QXJyYXkpXG5cbmZ1bmN0aW9uIGFzc2VydFNpemUgKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXInKVxuICB9IGVsc2UgaWYgKHNpemUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBcIicgKyBzaXplICsgJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcInNpemVcIicpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgaWYgKHNpemUgPD0gMCkge1xuICAgIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSlcbiAgfVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyBhY2NpZGVudGFsbHkgc2VuZGluZyBpbiBhIG51bWJlciB0aGF0IHdvdWxkXG4gICAgLy8gYmUgaW50ZXJwcmV0ZWQgYXMgYSBzdGFydCBvZmZzZXQuXG4gICAgcmV0dXJuIHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZydcbiAgICAgID8gY3JlYXRlQnVmZmVyKHNpemUpLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgICA6IGNyZWF0ZUJ1ZmZlcihzaXplKS5maWxsKGZpbGwpXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcihzaXplKVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqIGFsbG9jKHNpemVbLCBmaWxsWywgZW5jb2RpbmddXSlcbiAqKi9cbkJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICByZXR1cm4gYWxsb2Moc2l6ZSwgZmlsbCwgZW5jb2RpbmcpXG59XG5cbmZ1bmN0aW9uIGFsbG9jVW5zYWZlIChzaXplKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcihzaXplIDwgMCA/IDAgOiBjaGVja2VkKHNpemUpIHwgMClcbn1cblxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIEJ1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShzaXplKVxufVxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIFNsb3dCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShzaXplKVxufVxuXG5mdW5jdGlvbiBmcm9tU3RyaW5nIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnIHx8IGVuY29kaW5nID09PSAnJykge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgfVxuXG4gIGNvbnN0IGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nLCBlbmNvZGluZykgfCAwXG4gIGxldCBidWYgPSBjcmVhdGVCdWZmZXIobGVuZ3RoKVxuXG4gIGNvbnN0IGFjdHVhbCA9IGJ1Zi53cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuXG4gIGlmIChhY3R1YWwgIT09IGxlbmd0aCkge1xuICAgIC8vIFdyaXRpbmcgYSBoZXggc3RyaW5nLCBmb3IgZXhhbXBsZSwgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgd2lsbFxuICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuXG4gICAgLy8gJ2FieHhjZCcgd2lsbCBiZSB0cmVhdGVkIGFzICdhYicpXG4gICAgYnVmID0gYnVmLnNsaWNlKDAsIGFjdHVhbClcbiAgfVxuXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAoYXJyYXkpIHtcbiAgY29uc3QgbGVuZ3RoID0gYXJyYXkubGVuZ3RoIDwgMCA/IDAgOiBjaGVja2VkKGFycmF5Lmxlbmd0aCkgfCAwXG4gIGNvbnN0IGJ1ZiA9IGNyZWF0ZUJ1ZmZlcihsZW5ndGgpXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICBidWZbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5VmlldyAoYXJyYXlWaWV3KSB7XG4gIGlmIChpc0luc3RhbmNlKGFycmF5VmlldywgVWludDhBcnJheSkpIHtcbiAgICBjb25zdCBjb3B5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlWaWV3KVxuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIoY29weS5idWZmZXIsIGNvcHkuYnl0ZU9mZnNldCwgY29weS5ieXRlTGVuZ3RoKVxuICB9XG4gIHJldHVybiBmcm9tQXJyYXlMaWtlKGFycmF5Vmlldylcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyIChhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmIChieXRlT2Zmc2V0IDwgMCB8fCBhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcIm9mZnNldFwiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQgKyAobGVuZ3RoIHx8IDApKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wibGVuZ3RoXCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGxldCBidWZcbiAgaWYgKGJ5dGVPZmZzZXQgPT09IHVuZGVmaW5lZCAmJiBsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGFycmF5KVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYnVmID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgYnVmID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlXG4gIE9iamVjdC5zZXRQcm90b3R5cGVPZihidWYsIEJ1ZmZlci5wcm90b3R5cGUpXG5cbiAgcmV0dXJuIGJ1ZlxufVxuXG5mdW5jdGlvbiBmcm9tT2JqZWN0IChvYmopIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihvYmopKSB7XG4gICAgY29uc3QgbGVuID0gY2hlY2tlZChvYmoubGVuZ3RoKSB8IDBcbiAgICBjb25zdCBidWYgPSBjcmVhdGVCdWZmZXIobGVuKVxuXG4gICAgaWYgKGJ1Zi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBidWZcbiAgICB9XG5cbiAgICBvYmouY29weShidWYsIDAsIDAsIGxlbilcbiAgICByZXR1cm4gYnVmXG4gIH1cblxuICBpZiAob2JqLmxlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiBvYmoubGVuZ3RoICE9PSAnbnVtYmVyJyB8fCBudW1iZXJJc05hTihvYmoubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcigwKVxuICAgIH1cbiAgICByZXR1cm4gZnJvbUFycmF5TGlrZShvYmopXG4gIH1cblxuICBpZiAob2JqLnR5cGUgPT09ICdCdWZmZXInICYmIEFycmF5LmlzQXJyYXkob2JqLmRhdGEpKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUxpa2Uob2JqLmRhdGEpXG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tlZCAobGVuZ3RoKSB7XG4gIC8vIE5vdGU6IGNhbm5vdCB1c2UgYGxlbmd0aCA8IEtfTUFYX0xFTkdUSGAgaGVyZSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlblxuICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLilcbiAgaWYgKGxlbmd0aCA+PSBLX01BWF9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsgS19NQVhfTEVOR1RILnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKVxuICB9XG4gIHJldHVybiBsZW5ndGggfCAwXG59XG5cbmZ1bmN0aW9uIFNsb3dCdWZmZXIgKGxlbmd0aCkge1xuICBpZiAoK2xlbmd0aCAhPSBsZW5ndGgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBlcWVxZXFcbiAgICBsZW5ndGggPSAwXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5hbGxvYygrbGVuZ3RoKVxufVxuXG5CdWZmZXIuaXNCdWZmZXIgPSBmdW5jdGlvbiBpc0J1ZmZlciAoYikge1xuICByZXR1cm4gYiAhPSBudWxsICYmIGIuX2lzQnVmZmVyID09PSB0cnVlICYmXG4gICAgYiAhPT0gQnVmZmVyLnByb3RvdHlwZSAvLyBzbyBCdWZmZXIuaXNCdWZmZXIoQnVmZmVyLnByb3RvdHlwZSkgd2lsbCBiZSBmYWxzZVxufVxuXG5CdWZmZXIuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGlzSW5zdGFuY2UoYSwgVWludDhBcnJheSkpIGEgPSBCdWZmZXIuZnJvbShhLCBhLm9mZnNldCwgYS5ieXRlTGVuZ3RoKVxuICBpZiAoaXNJbnN0YW5jZShiLCBVaW50OEFycmF5KSkgYiA9IEJ1ZmZlci5mcm9tKGIsIGIub2Zmc2V0LCBiLmJ5dGVMZW5ndGgpXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcImJ1ZjFcIiwgXCJidWYyXCIgYXJndW1lbnRzIG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXknXG4gICAgKVxuICB9XG5cbiAgaWYgKGEgPT09IGIpIHJldHVybiAwXG5cbiAgbGV0IHggPSBhLmxlbmd0aFxuICBsZXQgeSA9IGIubGVuZ3RoXG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IE1hdGgubWluKHgsIHkpOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkge1xuICAgICAgeCA9IGFbaV1cbiAgICAgIHkgPSBiW2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykge1xuICBzd2l0Y2ggKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ2FzY2lpJzpcbiAgICBjYXNlICdsYXRpbjEnOlxuICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuQnVmZmVyLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdCAobGlzdCwgbGVuZ3RoKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gIH1cblxuICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDApXG4gIH1cblxuICBsZXQgaVxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBsZW5ndGggPSAwXG4gICAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICAgIGxlbmd0aCArPSBsaXN0W2ldLmxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW5ndGgpXG4gIGxldCBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgbGV0IGJ1ZiA9IGxpc3RbaV1cbiAgICBpZiAoaXNJbnN0YW5jZShidWYsIFVpbnQ4QXJyYXkpKSB7XG4gICAgICBpZiAocG9zICsgYnVmLmxlbmd0aCA+IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgYnVmID0gQnVmZmVyLmZyb20oYnVmKVxuICAgICAgICBidWYuY29weShidWZmZXIsIHBvcylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICBidWYsXG4gICAgICAgICAgcG9zXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpXG4gICAgfVxuICAgIHBvcyArPSBidWYubGVuZ3RoXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcubGVuZ3RoXG4gIH1cbiAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyhzdHJpbmcpIHx8IGlzSW5zdGFuY2Uoc3RyaW5nLCBBcnJheUJ1ZmZlcikpIHtcbiAgICByZXR1cm4gc3RyaW5nLmJ5dGVMZW5ndGhcbiAgfVxuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIG9yIEFycmF5QnVmZmVyLiAnICtcbiAgICAgICdSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2Ygc3RyaW5nXG4gICAgKVxuICB9XG5cbiAgY29uc3QgbGVuID0gc3RyaW5nLmxlbmd0aFxuICBjb25zdCBtdXN0TWF0Y2ggPSAoYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdID09PSB0cnVlKVxuICBpZiAoIW11c3RNYXRjaCAmJiBsZW4gPT09IDApIHJldHVybiAwXG5cbiAgLy8gVXNlIGEgZm9yIGxvb3AgdG8gYXZvaWQgcmVjdXJzaW9uXG4gIGxldCBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxlblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIGxlbiAqIDJcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBsZW4gPj4+IDFcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHtcbiAgICAgICAgICByZXR1cm4gbXVzdE1hdGNoID8gLTEgOiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aCAvLyBhc3N1bWUgdXRmOFxuICAgICAgICB9XG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5CdWZmZXIuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGhcblxuZnVuY3Rpb24gc2xvd1RvU3RyaW5nIChlbmNvZGluZywgc3RhcnQsIGVuZCkge1xuICBsZXQgbG93ZXJlZENhc2UgPSBmYWxzZVxuXG4gIC8vIE5vIG5lZWQgdG8gdmVyaWZ5IHRoYXQgXCJ0aGlzLmxlbmd0aCA8PSBNQVhfVUlOVDMyXCIgc2luY2UgaXQncyBhIHJlYWQtb25seVxuICAvLyBwcm9wZXJ0eSBvZiBhIHR5cGVkIGFycmF5LlxuXG4gIC8vIFRoaXMgYmVoYXZlcyBuZWl0aGVyIGxpa2UgU3RyaW5nIG5vciBVaW50OEFycmF5IGluIHRoYXQgd2Ugc2V0IHN0YXJ0L2VuZFxuICAvLyB0byB0aGVpciB1cHBlci9sb3dlciBib3VuZHMgaWYgdGhlIHZhbHVlIHBhc3NlZCBpcyBvdXQgb2YgcmFuZ2UuXG4gIC8vIHVuZGVmaW5lZCBpcyBoYW5kbGVkIHNwZWNpYWxseSBhcyBwZXIgRUNNQS0yNjIgNnRoIEVkaXRpb24sXG4gIC8vIFNlY3Rpb24gMTMuMy4zLjcgUnVudGltZSBTZW1hbnRpY3M6IEtleWVkQmluZGluZ0luaXRpYWxpemF0aW9uLlxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCB8fCBzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICAvLyBSZXR1cm4gZWFybHkgaWYgc3RhcnQgPiB0aGlzLmxlbmd0aC4gRG9uZSBoZXJlIHRvIHByZXZlbnQgcG90ZW50aWFsIHVpbnQzMlxuICAvLyBjb2VyY2lvbiBmYWlsIGJlbG93LlxuICBpZiAoc3RhcnQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChlbmQgPD0gMCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgLy8gRm9yY2UgY29lcmNpb24gdG8gdWludDMyLiBUaGlzIHdpbGwgYWxzbyBjb2VyY2UgZmFsc2V5L05hTiB2YWx1ZXMgdG8gMC5cbiAgZW5kID4+Pj0gMFxuICBzdGFydCA+Pj49IDBcblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHV0ZjE2bGVTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuLy8gVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGBCdWZmZXIuaXNCdWZmZXJgIChhbmQgdGhlIGBpcy1idWZmZXJgIG5wbSBwYWNrYWdlKVxuLy8gdG8gZGV0ZWN0IGEgQnVmZmVyIGluc3RhbmNlLiBJdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgYGluc3RhbmNlb2YgQnVmZmVyYFxuLy8gcmVsaWFibHkgaW4gYSBicm93c2VyaWZ5IGNvbnRleHQgYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBkaWZmZXJlbnRcbi8vIGNvcGllcyBvZiB0aGUgJ2J1ZmZlcicgcGFja2FnZSBpbiB1c2UuIFRoaXMgbWV0aG9kIHdvcmtzIGV2ZW4gZm9yIEJ1ZmZlclxuLy8gaW5zdGFuY2VzIHRoYXQgd2VyZSBjcmVhdGVkIGZyb20gYW5vdGhlciBjb3B5IG9mIHRoZSBgYnVmZmVyYCBwYWNrYWdlLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9pc3N1ZXMvMTU0XG5CdWZmZXIucHJvdG90eXBlLl9pc0J1ZmZlciA9IHRydWVcblxuZnVuY3Rpb24gc3dhcCAoYiwgbiwgbSkge1xuICBjb25zdCBpID0gYltuXVxuICBiW25dID0gYlttXVxuICBiW21dID0gaVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAxNiA9IGZ1bmN0aW9uIHN3YXAxNiAoKSB7XG4gIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSAyICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzJylcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMSlcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAzMiA9IGZ1bmN0aW9uIHN3YXAzMiAoKSB7XG4gIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA0ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzJylcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgMilcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXA2NCA9IGZ1bmN0aW9uIHN3YXA2NCAoKSB7XG4gIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA4ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzJylcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSA4KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgNylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgNilcbiAgICBzd2FwKHRoaXMsIGkgKyAyLCBpICsgNSlcbiAgICBzd2FwKHRoaXMsIGkgKyAzLCBpICsgNClcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICBjb25zdCBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gJydcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB1dGY4U2xpY2UodGhpcywgMCwgbGVuZ3RoKVxuICByZXR1cm4gc2xvd1RvU3RyaW5nLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyA9IEJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmdcblxuQnVmZmVyLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiBlcXVhbHMgKGIpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKVxuICBpZiAodGhpcyA9PT0gYikgcmV0dXJuIHRydWVcbiAgcmV0dXJuIEJ1ZmZlci5jb21wYXJlKHRoaXMsIGIpID09PSAwXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICBsZXQgc3RyID0gJydcbiAgY29uc3QgbWF4ID0gZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFU1xuICBzdHIgPSB0aGlzLnRvU3RyaW5nKCdoZXgnLCAwLCBtYXgpLnJlcGxhY2UoLyguezJ9KS9nLCAnJDEgJykudHJpbSgpXG4gIGlmICh0aGlzLmxlbmd0aCA+IG1heCkgc3RyICs9ICcgLi4uICdcbiAgcmV0dXJuICc8QnVmZmVyICcgKyBzdHIgKyAnPidcbn1cbmlmIChjdXN0b21JbnNwZWN0U3ltYm9sKSB7XG4gIEJ1ZmZlci5wcm90b3R5cGVbY3VzdG9tSW5zcGVjdFN5bWJvbF0gPSBCdWZmZXIucHJvdG90eXBlLmluc3BlY3Rcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAodGFyZ2V0LCBzdGFydCwgZW5kLCB0aGlzU3RhcnQsIHRoaXNFbmQpIHtcbiAgaWYgKGlzSW5zdGFuY2UodGFyZ2V0LCBVaW50OEFycmF5KSkge1xuICAgIHRhcmdldCA9IEJ1ZmZlci5mcm9tKHRhcmdldCwgdGFyZ2V0Lm9mZnNldCwgdGFyZ2V0LmJ5dGVMZW5ndGgpXG4gIH1cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGFyZ2V0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIFwidGFyZ2V0XCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheS4gJyArXG4gICAgICAnUmVjZWl2ZWQgdHlwZSAnICsgKHR5cGVvZiB0YXJnZXQpXG4gICAgKVxuICB9XG5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmQgPSB0YXJnZXQgPyB0YXJnZXQubGVuZ3RoIDogMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNTdGFydCA9IDBcbiAgfVxuICBpZiAodGhpc0VuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc0VuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoc3RhcnQgPCAwIHx8IGVuZCA+IHRhcmdldC5sZW5ndGggfHwgdGhpc1N0YXJ0IDwgMCB8fCB0aGlzRW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCAmJiBzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCkge1xuICAgIHJldHVybiAtMVxuICB9XG4gIGlmIChzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMVxuICB9XG5cbiAgc3RhcnQgPj4+PSAwXG4gIGVuZCA+Pj49IDBcbiAgdGhpc1N0YXJ0ID4+Pj0gMFxuICB0aGlzRW5kID4+Pj0gMFxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQpIHJldHVybiAwXG5cbiAgbGV0IHggPSB0aGlzRW5kIC0gdGhpc1N0YXJ0XG4gIGxldCB5ID0gZW5kIC0gc3RhcnRcbiAgY29uc3QgbGVuID0gTWF0aC5taW4oeCwgeSlcblxuICBjb25zdCB0aGlzQ29weSA9IHRoaXMuc2xpY2UodGhpc1N0YXJ0LCB0aGlzRW5kKVxuICBjb25zdCB0YXJnZXRDb3B5ID0gdGFyZ2V0LnNsaWNlKHN0YXJ0LCBlbmQpXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIGlmICh0aGlzQ29weVtpXSAhPT0gdGFyZ2V0Q29weVtpXSkge1xuICAgICAgeCA9IHRoaXNDb3B5W2ldXG4gICAgICB5ID0gdGFyZ2V0Q29weVtpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbi8vIEZpbmRzIGVpdGhlciB0aGUgZmlyc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0ID49IGBieXRlT2Zmc2V0YCxcbi8vIE9SIHRoZSBsYXN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA8PSBgYnl0ZU9mZnNldGAuXG4vL1xuLy8gQXJndW1lbnRzOlxuLy8gLSBidWZmZXIgLSBhIEJ1ZmZlciB0byBzZWFyY2hcbi8vIC0gdmFsIC0gYSBzdHJpbmcsIEJ1ZmZlciwgb3IgbnVtYmVyXG4vLyAtIGJ5dGVPZmZzZXQgLSBhbiBpbmRleCBpbnRvIGBidWZmZXJgOyB3aWxsIGJlIGNsYW1wZWQgdG8gYW4gaW50MzJcbi8vIC0gZW5jb2RpbmcgLSBhbiBvcHRpb25hbCBlbmNvZGluZywgcmVsZXZhbnQgaXMgdmFsIGlzIGEgc3RyaW5nXG4vLyAtIGRpciAtIHRydWUgZm9yIGluZGV4T2YsIGZhbHNlIGZvciBsYXN0SW5kZXhPZlxuZnVuY3Rpb24gYmlkaXJlY3Rpb25hbEluZGV4T2YgKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIC8vIEVtcHR5IGJ1ZmZlciBtZWFucyBubyBtYXRjaFxuICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXRcbiAgaWYgKHR5cGVvZiBieXRlT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gYnl0ZU9mZnNldFxuICAgIGJ5dGVPZmZzZXQgPSAwXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA+IDB4N2ZmZmZmZmYpIHtcbiAgICBieXRlT2Zmc2V0ID0gMHg3ZmZmZmZmZlxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAtMHg4MDAwMDAwMCkge1xuICAgIGJ5dGVPZmZzZXQgPSAtMHg4MDAwMDAwMFxuICB9XG4gIGJ5dGVPZmZzZXQgPSArYnl0ZU9mZnNldCAvLyBDb2VyY2UgdG8gTnVtYmVyLlxuICBpZiAobnVtYmVySXNOYU4oYnl0ZU9mZnNldCkpIHtcbiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCBcImZvb1wiLCBldGMsIHNlYXJjaCB3aG9sZSBidWZmZXJcbiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0OiBuZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggKyBieXRlT2Zmc2V0XG4gIGlmIChieXRlT2Zmc2V0ID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICBpZiAoZGlyKSByZXR1cm4gLTFcbiAgICBlbHNlIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoIC0gMVxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAwKSB7XG4gICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDBcbiAgICBlbHNlIHJldHVybiAtMVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIHZhbFxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICB9XG5cbiAgLy8gRmluYWxseSwgc2VhcmNoIGVpdGhlciBpbmRleE9mIChpZiBkaXIgaXMgdHJ1ZSkgb3IgbGFzdEluZGV4T2ZcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlOiBsb29raW5nIGZvciBlbXB0eSBzdHJpbmcvYnVmZmVyIGFsd2F5cyBmYWlsc1xuICAgIGlmICh2YWwubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gLTFcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDB4RkYgLy8gU2VhcmNoIGZvciBhIGJ5dGUgdmFsdWUgWzAtMjU1XVxuICAgIGlmICh0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKGRpcikge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCBbdmFsXSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbmZ1bmN0aW9uIGFycmF5SW5kZXhPZiAoYXJyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgbGV0IGluZGV4U2l6ZSA9IDFcbiAgbGV0IGFyckxlbmd0aCA9IGFyci5sZW5ndGhcbiAgbGV0IHZhbExlbmd0aCA9IHZhbC5sZW5ndGhcblxuICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgaWYgKGVuY29kaW5nID09PSAndWNzMicgfHwgZW5jb2RpbmcgPT09ICd1Y3MtMicgfHxcbiAgICAgICAgZW5jb2RpbmcgPT09ICd1dGYxNmxlJyB8fCBlbmNvZGluZyA9PT0gJ3V0Zi0xNmxlJykge1xuICAgICAgaWYgKGFyci5sZW5ndGggPCAyIHx8IHZhbC5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiAtMVxuICAgICAgfVxuICAgICAgaW5kZXhTaXplID0gMlxuICAgICAgYXJyTGVuZ3RoIC89IDJcbiAgICAgIHZhbExlbmd0aCAvPSAyXG4gICAgICBieXRlT2Zmc2V0IC89IDJcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWFkIChidWYsIGkpIHtcbiAgICBpZiAoaW5kZXhTaXplID09PSAxKSB7XG4gICAgICByZXR1cm4gYnVmW2ldXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBidWYucmVhZFVJbnQxNkJFKGkgKiBpbmRleFNpemUpXG4gICAgfVxuICB9XG5cbiAgbGV0IGlcbiAgaWYgKGRpcikge1xuICAgIGxldCBmb3VuZEluZGV4ID0gLTFcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpIDwgYXJyTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChyZWFkKGFyciwgaSkgPT09IHJlYWQodmFsLCBmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleCkpIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaVxuICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWxMZW5ndGgpIHJldHVybiBmb3VuZEluZGV4ICogaW5kZXhTaXplXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZm91bmRJbmRleCAhPT0gLTEpIGkgLT0gaSAtIGZvdW5kSW5kZXhcbiAgICAgICAgZm91bmRJbmRleCA9IC0xXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChieXRlT2Zmc2V0ICsgdmFsTGVuZ3RoID4gYXJyTGVuZ3RoKSBieXRlT2Zmc2V0ID0gYXJyTGVuZ3RoIC0gdmFsTGVuZ3RoXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBmb3VuZCA9IHRydWVcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdmFsTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKHJlYWQoYXJyLCBpICsgaikgIT09IHJlYWQodmFsLCBqKSkge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2VcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZm91bmQpIHJldHVybiBpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5jbHVkZXMgPSBmdW5jdGlvbiBpbmNsdWRlcyAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gdGhpcy5pbmRleE9mKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpICE9PSAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBpbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCB0cnVlKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmxhc3RJbmRleE9mID0gZnVuY3Rpb24gbGFzdEluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZhbHNlKVxufVxuXG5mdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDBcbiAgY29uc3QgcmVtYWluaW5nID0gYnVmLmxlbmd0aCAtIG9mZnNldFxuICBpZiAoIWxlbmd0aCkge1xuICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICB9IGVsc2Uge1xuICAgIGxlbmd0aCA9IE51bWJlcihsZW5ndGgpXG4gICAgaWYgKGxlbmd0aCA+IHJlbWFpbmluZykge1xuICAgICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RyTGVuID0gc3RyaW5nLmxlbmd0aFxuXG4gIGlmIChsZW5ndGggPiBzdHJMZW4gLyAyKSB7XG4gICAgbGVuZ3RoID0gc3RyTGVuIC8gMlxuICB9XG4gIGxldCBpXG4gIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHN0cmluZy5zdWJzdHIoaSAqIDIsIDIpLCAxNilcbiAgICBpZiAobnVtYmVySXNOYU4ocGFyc2VkKSkgcmV0dXJuIGlcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSBwYXJzZWRcbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBhc2NpaVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYXNjaWlUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJhc2U2NFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiB1Y3MyV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGYxNmxlVG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gd3JpdGUgKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcpXG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgb2Zmc2V0WywgbGVuZ3RoXVssIGVuY29kaW5nXSlcbiAgfSBlbHNlIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gICAgaWYgKGlzRmluaXRlKGxlbmd0aCkpIHtcbiAgICAgIGxlbmd0aCA9IGxlbmd0aCA+Pj4gMFxuICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgfSBlbHNlIHtcbiAgICAgIGVuY29kaW5nID0gbGVuZ3RoXG4gICAgICBsZW5ndGggPSB1bmRlZmluZWRcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0J1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkJ1xuICAgIClcbiAgfVxuXG4gIGNvbnN0IHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBsZW5ndGggPiByZW1haW5pbmcpIGxlbmd0aCA9IHJlbWFpbmluZ1xuXG4gIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgbGV0IGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGFzY2lpV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgLy8gV2FybmluZzogbWF4TGVuZ3RoIG5vdCB0YWtlbiBpbnRvIGFjY291bnQgaW4gYmFzZTY0V3JpdGVcbiAgICAgICAgcmV0dXJuIGJhc2U2NFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1Y3MyV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnQnVmZmVyJyxcbiAgICBkYXRhOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnIgfHwgdGhpcywgMClcbiAgfVxufVxuXG5mdW5jdGlvbiBiYXNlNjRTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGlmIChzdGFydCA9PT0gMCAmJiBlbmQgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYuc2xpY2Uoc3RhcnQsIGVuZCkpXG4gIH1cbn1cblxuZnVuY3Rpb24gdXRmOFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuICBjb25zdCByZXMgPSBbXVxuXG4gIGxldCBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICBjb25zdCBmaXJzdEJ5dGUgPSBidWZbaV1cbiAgICBsZXQgY29kZVBvaW50ID0gbnVsbFxuICAgIGxldCBieXRlc1BlclNlcXVlbmNlID0gKGZpcnN0Qnl0ZSA+IDB4RUYpXG4gICAgICA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpXG4gICAgICAgICAgPyAzXG4gICAgICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRilcbiAgICAgICAgICAgICAgPyAyXG4gICAgICAgICAgICAgIDogMVxuXG4gICAgaWYgKGkgKyBieXRlc1BlclNlcXVlbmNlIDw9IGVuZCkge1xuICAgICAgbGV0IHNlY29uZEJ5dGUsIHRoaXJkQnl0ZSwgZm91cnRoQnl0ZSwgdGVtcENvZGVQb2ludFxuXG4gICAgICBzd2l0Y2ggKGJ5dGVzUGVyU2VxdWVuY2UpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmIChmaXJzdEJ5dGUgPCAweDgwKSB7XG4gICAgICAgICAgICBjb2RlUG9pbnQgPSBmaXJzdEJ5dGVcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHgxRikgPDwgMHg2IHwgKHNlY29uZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4QyB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKHRoaXJkQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0ZGICYmICh0ZW1wQ29kZVBvaW50IDwgMHhEODAwIHx8IHRlbXBDb2RlUG9pbnQgPiAweERGRkYpKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGZvdXJ0aEJ5dGUgPSBidWZbaSArIDNdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwICYmIChmb3VydGhCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweDEyIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweEMgfCAodGhpcmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKGZvdXJ0aEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweEZGRkYgJiYgdGVtcENvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGVQb2ludCA9PT0gbnVsbCkge1xuICAgICAgLy8gd2UgZGlkIG5vdCBnZW5lcmF0ZSBhIHZhbGlkIGNvZGVQb2ludCBzbyBpbnNlcnQgYVxuICAgICAgLy8gcmVwbGFjZW1lbnQgY2hhciAoVStGRkZEKSBhbmQgYWR2YW5jZSBvbmx5IDEgYnl0ZVxuICAgICAgY29kZVBvaW50ID0gMHhGRkZEXG4gICAgICBieXRlc1BlclNlcXVlbmNlID0gMVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50ID4gMHhGRkZGKSB7XG4gICAgICAvLyBlbmNvZGUgdG8gdXRmMTYgKHN1cnJvZ2F0ZSBwYWlyIGRhbmNlKVxuICAgICAgY29kZVBvaW50IC09IDB4MTAwMDBcbiAgICAgIHJlcy5wdXNoKGNvZGVQb2ludCA+Pj4gMTAgJiAweDNGRiB8IDB4RDgwMClcbiAgICAgIGNvZGVQb2ludCA9IDB4REMwMCB8IGNvZGVQb2ludCAmIDB4M0ZGXG4gICAgfVxuXG4gICAgcmVzLnB1c2goY29kZVBvaW50KVxuICAgIGkgKz0gYnl0ZXNQZXJTZXF1ZW5jZVxuICB9XG5cbiAgcmV0dXJuIGRlY29kZUNvZGVQb2ludHNBcnJheShyZXMpXG59XG5cbi8vIEJhc2VkIG9uIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIyNzQ3MjcyLzY4MDc0MiwgdGhlIGJyb3dzZXIgd2l0aFxuLy8gdGhlIGxvd2VzdCBsaW1pdCBpcyBDaHJvbWUsIHdpdGggMHgxMDAwMCBhcmdzLlxuLy8gV2UgZ28gMSBtYWduaXR1ZGUgbGVzcywgZm9yIHNhZmV0eVxuY29uc3QgTUFYX0FSR1VNRU5UU19MRU5HVEggPSAweDEwMDBcblxuZnVuY3Rpb24gZGVjb2RlQ29kZVBvaW50c0FycmF5IChjb2RlUG9pbnRzKSB7XG4gIGNvbnN0IGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgbGV0IHJlcyA9ICcnXG4gIGxldCBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBsZXQgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGxhdGluMVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgbGV0IHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgY29uc3QgbGVuID0gYnVmLmxlbmd0aFxuXG4gIGlmICghc3RhcnQgfHwgc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgfHwgZW5kIDwgMCB8fCBlbmQgPiBsZW4pIGVuZCA9IGxlblxuXG4gIGxldCBvdXQgPSAnJ1xuICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIG91dCArPSBoZXhTbGljZUxvb2t1cFRhYmxlW2J1ZltpXV1cbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGNvbnN0IGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIGxldCByZXMgPSAnJ1xuICAvLyBJZiBieXRlcy5sZW5ndGggaXMgb2RkLCB0aGUgbGFzdCA4IGJpdHMgbXVzdCBiZSBpZ25vcmVkIChzYW1lIGFzIG5vZGUuanMpXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoIC0gMTsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyAoYnl0ZXNbaSArIDFdICogMjU2KSlcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiBzbGljZSAoc3RhcnQsIGVuZCkge1xuICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aFxuICBzdGFydCA9IH5+c3RhcnRcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiB+fmVuZFxuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCArPSBsZW5cbiAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgfSBlbHNlIGlmIChzdGFydCA+IGxlbikge1xuICAgIHN0YXJ0ID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgMCkge1xuICAgIGVuZCArPSBsZW5cbiAgICBpZiAoZW5kIDwgMCkgZW5kID0gMFxuICB9IGVsc2UgaWYgKGVuZCA+IGxlbikge1xuICAgIGVuZCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIGNvbnN0IG5ld0J1ZiA9IHRoaXMuc3ViYXJyYXkoc3RhcnQsIGVuZClcbiAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2VcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG5ld0J1ZiwgQnVmZmVyLnByb3RvdHlwZSlcblxuICByZXR1cm4gbmV3QnVmXG59XG5cbi8qXG4gKiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGJ1ZmZlciBpc24ndCB0cnlpbmcgdG8gd3JpdGUgb3V0IG9mIGJvdW5kcy5cbiAqL1xuZnVuY3Rpb24gY2hlY2tPZmZzZXQgKG9mZnNldCwgZXh0LCBsZW5ndGgpIHtcbiAgaWYgKChvZmZzZXQgJSAxKSAhPT0gMCB8fCBvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb2Zmc2V0IGlzIG5vdCB1aW50JylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVaW50TEUgPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludExFID0gZnVuY3Rpb24gcmVhZFVJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICBsZXQgdmFsID0gdGhpc1tvZmZzZXRdXG4gIGxldCBtdWwgPSAxXG4gIGxldCBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVpbnRCRSA9XG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50QkUgPSBmdW5jdGlvbiByZWFkVUludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcbiAgfVxuXG4gIGxldCB2YWwgPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF1cbiAgbGV0IG11bCA9IDFcbiAgd2hpbGUgKGJ5dGVMZW5ndGggPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVaW50OCA9XG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50OCA9IGZ1bmN0aW9uIHJlYWRVSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVaW50MTZMRSA9XG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVpbnQxNkJFID1cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkJFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCA4KSB8IHRoaXNbb2Zmc2V0ICsgMV1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludDMyTEUgPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyTEUgPSBmdW5jdGlvbiByZWFkVUludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVaW50MzJCRSA9XG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSAqIDB4MTAwMDAwMCkgK1xuICAgICgodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICB0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRCaWdVSW50NjRMRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiByZWFkQmlnVUludDY0TEUgKG9mZnNldCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgdmFsaWRhdGVOdW1iZXIob2Zmc2V0LCAnb2Zmc2V0JylcbiAgY29uc3QgZmlyc3QgPSB0aGlzW29mZnNldF1cbiAgY29uc3QgbGFzdCA9IHRoaXNbb2Zmc2V0ICsgN11cbiAgaWYgKGZpcnN0ID09PSB1bmRlZmluZWQgfHwgbGFzdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYm91bmRzRXJyb3Iob2Zmc2V0LCB0aGlzLmxlbmd0aCAtIDgpXG4gIH1cblxuICBjb25zdCBsbyA9IGZpcnN0ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogOCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDE2ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMjRcblxuICBjb25zdCBoaSA9IHRoaXNbKytvZmZzZXRdICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogOCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDE2ICtcbiAgICBsYXN0ICogMiAqKiAyNFxuXG4gIHJldHVybiBCaWdJbnQobG8pICsgKEJpZ0ludChoaSkgPDwgQmlnSW50KDMyKSlcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEJpZ1VJbnQ2NEJFID0gZGVmaW5lQmlnSW50TWV0aG9kKGZ1bmN0aW9uIHJlYWRCaWdVSW50NjRCRSAob2Zmc2V0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICB2YWxpZGF0ZU51bWJlcihvZmZzZXQsICdvZmZzZXQnKVxuICBjb25zdCBmaXJzdCA9IHRoaXNbb2Zmc2V0XVxuICBjb25zdCBsYXN0ID0gdGhpc1tvZmZzZXQgKyA3XVxuICBpZiAoZmlyc3QgPT09IHVuZGVmaW5lZCB8fCBsYXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICBib3VuZHNFcnJvcihvZmZzZXQsIHRoaXMubGVuZ3RoIC0gOClcbiAgfVxuXG4gIGNvbnN0IGhpID0gZmlyc3QgKiAyICoqIDI0ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMTYgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiA4ICtcbiAgICB0aGlzWysrb2Zmc2V0XVxuXG4gIGNvbnN0IGxvID0gdGhpc1srK29mZnNldF0gKiAyICoqIDI0ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMTYgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiA4ICtcbiAgICBsYXN0XG5cbiAgcmV0dXJuIChCaWdJbnQoaGkpIDw8IEJpZ0ludCgzMikpICsgQmlnSW50KGxvKVxufSlcblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50TEUgPSBmdW5jdGlvbiByZWFkSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgbGV0IHZhbCA9IHRoaXNbb2Zmc2V0XVxuICBsZXQgbXVsID0gMVxuICBsZXQgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIGxldCBpID0gYnl0ZUxlbmd0aFxuICBsZXQgbXVsID0gMVxuICBsZXQgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWldXG4gIHdoaWxlIChpID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0taV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQ4ID0gZnVuY3Rpb24gcmVhZEludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIGlmICghKHRoaXNbb2Zmc2V0XSAmIDB4ODApKSByZXR1cm4gKHRoaXNbb2Zmc2V0XSlcbiAgcmV0dXJuICgoMHhmZiAtIHRoaXNbb2Zmc2V0XSArIDEpICogLTEpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2TEUgPSBmdW5jdGlvbiByZWFkSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgY29uc3QgdmFsID0gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkJFID0gZnVuY3Rpb24gcmVhZEludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIGNvbnN0IHZhbCA9IHRoaXNbb2Zmc2V0ICsgMV0gfCAodGhpc1tvZmZzZXRdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCAyNCkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRCaWdJbnQ2NExFID0gZGVmaW5lQmlnSW50TWV0aG9kKGZ1bmN0aW9uIHJlYWRCaWdJbnQ2NExFIChvZmZzZXQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIHZhbGlkYXRlTnVtYmVyKG9mZnNldCwgJ29mZnNldCcpXG4gIGNvbnN0IGZpcnN0ID0gdGhpc1tvZmZzZXRdXG4gIGNvbnN0IGxhc3QgPSB0aGlzW29mZnNldCArIDddXG4gIGlmIChmaXJzdCA9PT0gdW5kZWZpbmVkIHx8IGxhc3QgPT09IHVuZGVmaW5lZCkge1xuICAgIGJvdW5kc0Vycm9yKG9mZnNldCwgdGhpcy5sZW5ndGggLSA4KVxuICB9XG5cbiAgY29uc3QgdmFsID0gdGhpc1tvZmZzZXQgKyA0XSArXG4gICAgdGhpc1tvZmZzZXQgKyA1XSAqIDIgKiogOCArXG4gICAgdGhpc1tvZmZzZXQgKyA2XSAqIDIgKiogMTYgK1xuICAgIChsYXN0IDw8IDI0KSAvLyBPdmVyZmxvd1xuXG4gIHJldHVybiAoQmlnSW50KHZhbCkgPDwgQmlnSW50KDMyKSkgK1xuICAgIEJpZ0ludChmaXJzdCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDggK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAxNiArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDI0KVxufSlcblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkQmlnSW50NjRCRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiByZWFkQmlnSW50NjRCRSAob2Zmc2V0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICB2YWxpZGF0ZU51bWJlcihvZmZzZXQsICdvZmZzZXQnKVxuICBjb25zdCBmaXJzdCA9IHRoaXNbb2Zmc2V0XVxuICBjb25zdCBsYXN0ID0gdGhpc1tvZmZzZXQgKyA3XVxuICBpZiAoZmlyc3QgPT09IHVuZGVmaW5lZCB8fCBsYXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICBib3VuZHNFcnJvcihvZmZzZXQsIHRoaXMubGVuZ3RoIC0gOClcbiAgfVxuXG4gIGNvbnN0IHZhbCA9IChmaXJzdCA8PCAyNCkgKyAvLyBPdmVyZmxvd1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAxNiArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDggK1xuICAgIHRoaXNbKytvZmZzZXRdXG5cbiAgcmV0dXJuIChCaWdJbnQodmFsKSA8PCBCaWdJbnQoMzIpKSArXG4gICAgQmlnSW50KHRoaXNbKytvZmZzZXRdICogMiAqKiAyNCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDE2ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogOCArXG4gICAgbGFzdClcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdEJFID0gZnVuY3Rpb24gcmVhZEZsb2F0QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUxFID0gZnVuY3Rpb24gcmVhZERvdWJsZUxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDUyLCA4KVxufVxuXG5mdW5jdGlvbiBjaGVja0ludCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpXG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVWludExFID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjb25zdCBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIGxldCBtdWwgPSAxXG4gIGxldCBpID0gMFxuICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVaW50QkUgPVxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlVUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNvbnN0IG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgbGV0IGkgPSBieXRlTGVuZ3RoIC0gMVxuICBsZXQgbXVsID0gMVxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVpbnQ4ID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50OCA9IGZ1bmN0aW9uIHdyaXRlVUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweGZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVWludDE2TEUgPVxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVpbnQxNkJFID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVaW50MzJMRSA9XG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVWludDMyQkUgPVxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gd3J0QmlnVUludDY0TEUgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbWluLCBtYXgpIHtcbiAgY2hlY2tJbnRCSSh2YWx1ZSwgbWluLCBtYXgsIGJ1Ziwgb2Zmc2V0LCA3KVxuXG4gIGxldCBsbyA9IE51bWJlcih2YWx1ZSAmIEJpZ0ludCgweGZmZmZmZmZmKSlcbiAgYnVmW29mZnNldCsrXSA9IGxvXG4gIGxvID0gbG8gPj4gOFxuICBidWZbb2Zmc2V0KytdID0gbG9cbiAgbG8gPSBsbyA+PiA4XG4gIGJ1ZltvZmZzZXQrK10gPSBsb1xuICBsbyA9IGxvID4+IDhcbiAgYnVmW29mZnNldCsrXSA9IGxvXG4gIGxldCBoaSA9IE51bWJlcih2YWx1ZSA+PiBCaWdJbnQoMzIpICYgQmlnSW50KDB4ZmZmZmZmZmYpKVxuICBidWZbb2Zmc2V0KytdID0gaGlcbiAgaGkgPSBoaSA+PiA4XG4gIGJ1ZltvZmZzZXQrK10gPSBoaVxuICBoaSA9IGhpID4+IDhcbiAgYnVmW29mZnNldCsrXSA9IGhpXG4gIGhpID0gaGkgPj4gOFxuICBidWZbb2Zmc2V0KytdID0gaGlcbiAgcmV0dXJuIG9mZnNldFxufVxuXG5mdW5jdGlvbiB3cnRCaWdVSW50NjRCRSAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBtaW4sIG1heCkge1xuICBjaGVja0ludEJJKHZhbHVlLCBtaW4sIG1heCwgYnVmLCBvZmZzZXQsIDcpXG5cbiAgbGV0IGxvID0gTnVtYmVyKHZhbHVlICYgQmlnSW50KDB4ZmZmZmZmZmYpKVxuICBidWZbb2Zmc2V0ICsgN10gPSBsb1xuICBsbyA9IGxvID4+IDhcbiAgYnVmW29mZnNldCArIDZdID0gbG9cbiAgbG8gPSBsbyA+PiA4XG4gIGJ1ZltvZmZzZXQgKyA1XSA9IGxvXG4gIGxvID0gbG8gPj4gOFxuICBidWZbb2Zmc2V0ICsgNF0gPSBsb1xuICBsZXQgaGkgPSBOdW1iZXIodmFsdWUgPj4gQmlnSW50KDMyKSAmIEJpZ0ludCgweGZmZmZmZmZmKSlcbiAgYnVmW29mZnNldCArIDNdID0gaGlcbiAgaGkgPSBoaSA+PiA4XG4gIGJ1ZltvZmZzZXQgKyAyXSA9IGhpXG4gIGhpID0gaGkgPj4gOFxuICBidWZbb2Zmc2V0ICsgMV0gPSBoaVxuICBoaSA9IGhpID4+IDhcbiAgYnVmW29mZnNldF0gPSBoaVxuICByZXR1cm4gb2Zmc2V0ICsgOFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlQmlnVUludDY0TEUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gd3JpdGVCaWdVSW50NjRMRSAodmFsdWUsIG9mZnNldCA9IDApIHtcbiAgcmV0dXJuIHdydEJpZ1VJbnQ2NExFKHRoaXMsIHZhbHVlLCBvZmZzZXQsIEJpZ0ludCgwKSwgQmlnSW50KCcweGZmZmZmZmZmZmZmZmZmZmYnKSlcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVCaWdVSW50NjRCRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiB3cml0ZUJpZ1VJbnQ2NEJFICh2YWx1ZSwgb2Zmc2V0ID0gMCkge1xuICByZXR1cm4gd3J0QmlnVUludDY0QkUodGhpcywgdmFsdWUsIG9mZnNldCwgQmlnSW50KDApLCBCaWdJbnQoJzB4ZmZmZmZmZmZmZmZmZmZmZicpKVxufSlcblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjb25zdCBsaW1pdCA9IE1hdGgucG93KDIsICg4ICogYnl0ZUxlbmd0aCkgLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICBsZXQgaSA9IDBcbiAgbGV0IG11bCA9IDFcbiAgbGV0IHN1YiA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpIC0gMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludEJFID0gZnVuY3Rpb24gd3JpdGVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjb25zdCBsaW1pdCA9IE1hdGgucG93KDIsICg4ICogYnl0ZUxlbmd0aCkgLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICBsZXQgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIGxldCBtdWwgPSAxXG4gIGxldCBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpICsgMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweDdmLCAtMHg4MClcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlQmlnSW50NjRMRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiB3cml0ZUJpZ0ludDY0TEUgKHZhbHVlLCBvZmZzZXQgPSAwKSB7XG4gIHJldHVybiB3cnRCaWdVSW50NjRMRSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAtQmlnSW50KCcweDgwMDAwMDAwMDAwMDAwMDAnKSwgQmlnSW50KCcweDdmZmZmZmZmZmZmZmZmZmYnKSlcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVCaWdJbnQ2NEJFID0gZGVmaW5lQmlnSW50TWV0aG9kKGZ1bmN0aW9uIHdyaXRlQmlnSW50NjRCRSAodmFsdWUsIG9mZnNldCA9IDApIHtcbiAgcmV0dXJuIHdydEJpZ1VJbnQ2NEJFKHRoaXMsIHZhbHVlLCBvZmZzZXQsIC1CaWdJbnQoJzB4ODAwMDAwMDAwMDAwMDAwMCcpLCBCaWdJbnQoJzB4N2ZmZmZmZmZmZmZmZmZmZicpKVxufSlcblxuZnVuY3Rpb24gY2hlY2tJRUVFNzU0IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxuICBpZiAob2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRmxvYXQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA4LCAxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCwgLTEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDUyLCA4KVxuICByZXR1cm4gb2Zmc2V0ICsgOFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlTEUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVCRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbi8vIGNvcHkodGFyZ2V0QnVmZmVyLCB0YXJnZXRTdGFydD0wLCBzb3VyY2VTdGFydD0wLCBzb3VyY2VFbmQ9YnVmZmVyLmxlbmd0aClcbkJ1ZmZlci5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKHRhcmdldCwgdGFyZ2V0U3RhcnQsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGFyZ2V0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgc2hvdWxkIGJlIGEgQnVmZmVyJylcbiAgaWYgKCFzdGFydCkgc3RhcnQgPSAwXG4gIGlmICghZW5kICYmIGVuZCAhPT0gMCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldFN0YXJ0ID49IHRhcmdldC5sZW5ndGgpIHRhcmdldFN0YXJ0ID0gdGFyZ2V0Lmxlbmd0aFxuICBpZiAoIXRhcmdldFN0YXJ0KSB0YXJnZXRTdGFydCA9IDBcbiAgaWYgKGVuZCA+IDAgJiYgZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgLy8gQ29weSAwIGJ5dGVzOyB3ZSdyZSBkb25lXG4gIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm4gMFxuICBpZiAodGFyZ2V0Lmxlbmd0aCA9PT0gMCB8fCB0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBGYXRhbCBlcnJvciBjb25kaXRpb25zXG4gIGlmICh0YXJnZXRTdGFydCA8IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIH1cbiAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+PSB0aGlzLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIGNvbnN0IGxlbiA9IGVuZCAtIHN0YXJ0XG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCAmJiB0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIFVzZSBidWlsdC1pbiB3aGVuIGF2YWlsYWJsZSwgbWlzc2luZyBmcm9tIElFMTFcbiAgICB0aGlzLmNvcHlXaXRoaW4odGFyZ2V0U3RhcnQsIHN0YXJ0LCBlbmQpXG4gIH0gZWxzZSB7XG4gICAgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoXG4gICAgICB0YXJnZXQsXG4gICAgICB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpLFxuICAgICAgdGFyZ2V0U3RhcnRcbiAgICApXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbi8vIFVzYWdlOlxuLy8gICAgYnVmZmVyLmZpbGwobnVtYmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChidWZmZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKHN0cmluZ1ssIG9mZnNldFssIGVuZF1dWywgZW5jb2RpbmddKVxuQnVmZmVyLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gZmlsbCAodmFsLCBzdGFydCwgZW5kLCBlbmNvZGluZykge1xuICAvLyBIYW5kbGUgc3RyaW5nIGNhc2VzOlxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodHlwZW9mIHN0YXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBzdGFydFxuICAgICAgc3RhcnQgPSAwXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVuZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5kXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH1cbiAgICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nJylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgIH1cbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgY29kZSA9IHZhbC5jaGFyQ29kZUF0KDApXG4gICAgICBpZiAoKGVuY29kaW5nID09PSAndXRmOCcgJiYgY29kZSA8IDEyOCkgfHxcbiAgICAgICAgICBlbmNvZGluZyA9PT0gJ2xhdGluMScpIHtcbiAgICAgICAgLy8gRmFzdCBwYXRoOiBJZiBgdmFsYCBmaXRzIGludG8gYSBzaW5nbGUgYnl0ZSwgdXNlIHRoYXQgbnVtZXJpYyB2YWx1ZS5cbiAgICAgICAgdmFsID0gY29kZVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDI1NVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdib29sZWFuJykge1xuICAgIHZhbCA9IE51bWJlcih2YWwpXG4gIH1cblxuICAvLyBJbnZhbGlkIHJhbmdlcyBhcmUgbm90IHNldCB0byBhIGRlZmF1bHQsIHNvIGNhbiByYW5nZSBjaGVjayBlYXJseS5cbiAgaWYgKHN0YXJ0IDwgMCB8fCB0aGlzLmxlbmd0aCA8IHN0YXJ0IHx8IHRoaXMubGVuZ3RoIDwgZW5kKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ091dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHN0YXJ0ID0gc3RhcnQgPj4+IDBcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyB0aGlzLmxlbmd0aCA6IGVuZCA+Pj4gMFxuXG4gIGlmICghdmFsKSB2YWwgPSAwXG5cbiAgbGV0IGlcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgdGhpc1tpXSA9IHZhbFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBieXRlcyA9IEJ1ZmZlci5pc0J1ZmZlcih2YWwpXG4gICAgICA/IHZhbFxuICAgICAgOiBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICAgIGNvbnN0IGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGlmIChsZW4gPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSB2YWx1ZSBcIicgKyB2YWwgK1xuICAgICAgICAnXCIgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQgXCJ2YWx1ZVwiJylcbiAgICB9XG4gICAgZm9yIChpID0gMDsgaSA8IGVuZCAtIHN0YXJ0OyArK2kpIHtcbiAgICAgIHRoaXNbaSArIHN0YXJ0XSA9IGJ5dGVzW2kgJSBsZW5dXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gQ1VTVE9NIEVSUk9SU1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTaW1wbGlmaWVkIHZlcnNpb25zIGZyb20gTm9kZSwgY2hhbmdlZCBmb3IgQnVmZmVyLW9ubHkgdXNhZ2VcbmNvbnN0IGVycm9ycyA9IHt9XG5mdW5jdGlvbiBFIChzeW0sIGdldE1lc3NhZ2UsIEJhc2UpIHtcbiAgZXJyb3JzW3N5bV0gPSBjbGFzcyBOb2RlRXJyb3IgZXh0ZW5kcyBCYXNlIHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnbWVzc2FnZScsIHtcbiAgICAgICAgdmFsdWU6IGdldE1lc3NhZ2UuYXBwbHkodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgfSlcblxuICAgICAgLy8gQWRkIHRoZSBlcnJvciBjb2RlIHRvIHRoZSBuYW1lIHRvIGluY2x1ZGUgaXQgaW4gdGhlIHN0YWNrIHRyYWNlLlxuICAgICAgdGhpcy5uYW1lID0gYCR7dGhpcy5uYW1lfSBbJHtzeW19XWBcbiAgICAgIC8vIEFjY2VzcyB0aGUgc3RhY2sgdG8gZ2VuZXJhdGUgdGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkaW5nIHRoZSBlcnJvciBjb2RlXG4gICAgICAvLyBmcm9tIHRoZSBuYW1lLlxuICAgICAgdGhpcy5zdGFjayAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuICAgICAgLy8gUmVzZXQgdGhlIG5hbWUgdG8gdGhlIGFjdHVhbCBuYW1lLlxuICAgICAgZGVsZXRlIHRoaXMubmFtZVxuICAgIH1cblxuICAgIGdldCBjb2RlICgpIHtcbiAgICAgIHJldHVybiBzeW1cbiAgICB9XG5cbiAgICBzZXQgY29kZSAodmFsdWUpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnY29kZScsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdG9TdHJpbmcgKCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMubmFtZX0gWyR7c3ltfV06ICR7dGhpcy5tZXNzYWdlfWBcbiAgICB9XG4gIH1cbn1cblxuRSgnRVJSX0JVRkZFUl9PVVRfT0ZfQk9VTkRTJyxcbiAgZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBpZiAobmFtZSkge1xuICAgICAgcmV0dXJuIGAke25hbWV9IGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kc2BcbiAgICB9XG5cbiAgICByZXR1cm4gJ0F0dGVtcHQgdG8gYWNjZXNzIG1lbW9yeSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnXG4gIH0sIFJhbmdlRXJyb3IpXG5FKCdFUlJfSU5WQUxJRF9BUkdfVFlQRScsXG4gIGZ1bmN0aW9uIChuYW1lLCBhY3R1YWwpIHtcbiAgICByZXR1cm4gYFRoZSBcIiR7bmFtZX1cIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIGFjdHVhbH1gXG4gIH0sIFR5cGVFcnJvcilcbkUoJ0VSUl9PVVRfT0ZfUkFOR0UnLFxuICBmdW5jdGlvbiAoc3RyLCByYW5nZSwgaW5wdXQpIHtcbiAgICBsZXQgbXNnID0gYFRoZSB2YWx1ZSBvZiBcIiR7c3RyfVwiIGlzIG91dCBvZiByYW5nZS5gXG4gICAgbGV0IHJlY2VpdmVkID0gaW5wdXRcbiAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihpbnB1dCkgJiYgTWF0aC5hYnMoaW5wdXQpID4gMiAqKiAzMikge1xuICAgICAgcmVjZWl2ZWQgPSBhZGROdW1lcmljYWxTZXBhcmF0b3IoU3RyaW5nKGlucHV0KSlcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgIHJlY2VpdmVkID0gU3RyaW5nKGlucHV0KVxuICAgICAgaWYgKGlucHV0ID4gQmlnSW50KDIpICoqIEJpZ0ludCgzMikgfHwgaW5wdXQgPCAtKEJpZ0ludCgyKSAqKiBCaWdJbnQoMzIpKSkge1xuICAgICAgICByZWNlaXZlZCA9IGFkZE51bWVyaWNhbFNlcGFyYXRvcihyZWNlaXZlZClcbiAgICAgIH1cbiAgICAgIHJlY2VpdmVkICs9ICduJ1xuICAgIH1cbiAgICBtc2cgKz0gYCBJdCBtdXN0IGJlICR7cmFuZ2V9LiBSZWNlaXZlZCAke3JlY2VpdmVkfWBcbiAgICByZXR1cm4gbXNnXG4gIH0sIFJhbmdlRXJyb3IpXG5cbmZ1bmN0aW9uIGFkZE51bWVyaWNhbFNlcGFyYXRvciAodmFsKSB7XG4gIGxldCByZXMgPSAnJ1xuICBsZXQgaSA9IHZhbC5sZW5ndGhcbiAgY29uc3Qgc3RhcnQgPSB2YWxbMF0gPT09ICctJyA/IDEgOiAwXG4gIGZvciAoOyBpID49IHN0YXJ0ICsgNDsgaSAtPSAzKSB7XG4gICAgcmVzID0gYF8ke3ZhbC5zbGljZShpIC0gMywgaSl9JHtyZXN9YFxuICB9XG4gIHJldHVybiBgJHt2YWwuc2xpY2UoMCwgaSl9JHtyZXN9YFxufVxuXG4vLyBDSEVDSyBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBjaGVja0JvdW5kcyAoYnVmLCBvZmZzZXQsIGJ5dGVMZW5ndGgpIHtcbiAgdmFsaWRhdGVOdW1iZXIob2Zmc2V0LCAnb2Zmc2V0JylcbiAgaWYgKGJ1ZltvZmZzZXRdID09PSB1bmRlZmluZWQgfHwgYnVmW29mZnNldCArIGJ5dGVMZW5ndGhdID09PSB1bmRlZmluZWQpIHtcbiAgICBib3VuZHNFcnJvcihvZmZzZXQsIGJ1Zi5sZW5ndGggLSAoYnl0ZUxlbmd0aCArIDEpKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50QkkgKHZhbHVlLCBtaW4sIG1heCwgYnVmLCBvZmZzZXQsIGJ5dGVMZW5ndGgpIHtcbiAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB7XG4gICAgY29uc3QgbiA9IHR5cGVvZiBtaW4gPT09ICdiaWdpbnQnID8gJ24nIDogJydcbiAgICBsZXQgcmFuZ2VcbiAgICBpZiAoYnl0ZUxlbmd0aCA+IDMpIHtcbiAgICAgIGlmIChtaW4gPT09IDAgfHwgbWluID09PSBCaWdJbnQoMCkpIHtcbiAgICAgICAgcmFuZ2UgPSBgPj0gMCR7bn0gYW5kIDwgMiR7bn0gKiogJHsoYnl0ZUxlbmd0aCArIDEpICogOH0ke259YFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmFuZ2UgPSBgPj0gLSgyJHtufSAqKiAkeyhieXRlTGVuZ3RoICsgMSkgKiA4IC0gMX0ke259KSBhbmQgPCAyICoqIGAgK1xuICAgICAgICAgICAgICAgIGAkeyhieXRlTGVuZ3RoICsgMSkgKiA4IC0gMX0ke259YFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByYW5nZSA9IGA+PSAke21pbn0ke259IGFuZCA8PSAke21heH0ke259YFxuICAgIH1cbiAgICB0aHJvdyBuZXcgZXJyb3JzLkVSUl9PVVRfT0ZfUkFOR0UoJ3ZhbHVlJywgcmFuZ2UsIHZhbHVlKVxuICB9XG4gIGNoZWNrQm91bmRzKGJ1Ziwgb2Zmc2V0LCBieXRlTGVuZ3RoKVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZU51bWJlciAodmFsdWUsIG5hbWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkVSUl9JTlZBTElEX0FSR19UWVBFKG5hbWUsICdudW1iZXInLCB2YWx1ZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBib3VuZHNFcnJvciAodmFsdWUsIGxlbmd0aCwgdHlwZSkge1xuICBpZiAoTWF0aC5mbG9vcih2YWx1ZSkgIT09IHZhbHVlKSB7XG4gICAgdmFsaWRhdGVOdW1iZXIodmFsdWUsIHR5cGUpXG4gICAgdGhyb3cgbmV3IGVycm9ycy5FUlJfT1VUX09GX1JBTkdFKHR5cGUgfHwgJ29mZnNldCcsICdhbiBpbnRlZ2VyJywgdmFsdWUpXG4gIH1cblxuICBpZiAobGVuZ3RoIDwgMCkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuRVJSX0JVRkZFUl9PVVRfT0ZfQk9VTkRTKClcbiAgfVxuXG4gIHRocm93IG5ldyBlcnJvcnMuRVJSX09VVF9PRl9SQU5HRSh0eXBlIHx8ICdvZmZzZXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYD49ICR7dHlwZSA/IDEgOiAwfSBhbmQgPD0gJHtsZW5ndGh9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKVxufVxuXG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09XG5cbmNvbnN0IElOVkFMSURfQkFTRTY0X1JFID0gL1teKy8wLTlBLVphLXotX10vZ1xuXG5mdW5jdGlvbiBiYXNlNjRjbGVhbiAoc3RyKSB7XG4gIC8vIE5vZGUgdGFrZXMgZXF1YWwgc2lnbnMgYXMgZW5kIG9mIHRoZSBCYXNlNjQgZW5jb2RpbmdcbiAgc3RyID0gc3RyLnNwbGl0KCc9JylbMF1cbiAgLy8gTm9kZSBzdHJpcHMgb3V0IGludmFsaWQgY2hhcmFjdGVycyBsaWtlIFxcbiBhbmQgXFx0IGZyb20gdGhlIHN0cmluZywgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHN0ciA9IHN0ci50cmltKCkucmVwbGFjZShJTlZBTElEX0JBU0U2NF9SRSwgJycpXG4gIC8vIE5vZGUgY29udmVydHMgc3RyaW5ncyB3aXRoIGxlbmd0aCA8IDIgdG8gJydcbiAgaWYgKHN0ci5sZW5ndGggPCAyKSByZXR1cm4gJydcbiAgLy8gTm9kZSBhbGxvd3MgZm9yIG5vbi1wYWRkZWQgYmFzZTY0IHN0cmluZ3MgKG1pc3NpbmcgdHJhaWxpbmcgPT09KSwgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHdoaWxlIChzdHIubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgIHN0ciA9IHN0ciArICc9J1xuICB9XG4gIHJldHVybiBzdHJcbn1cblxuZnVuY3Rpb24gdXRmOFRvQnl0ZXMgKHN0cmluZywgdW5pdHMpIHtcbiAgdW5pdHMgPSB1bml0cyB8fCBJbmZpbml0eVxuICBsZXQgY29kZVBvaW50XG4gIGNvbnN0IGxlbmd0aCA9IHN0cmluZy5sZW5ndGhcbiAgbGV0IGxlYWRTdXJyb2dhdGUgPSBudWxsXG4gIGNvbnN0IGJ5dGVzID0gW11cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgY29kZVBvaW50ID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcblxuICAgIC8vIGlzIHN1cnJvZ2F0ZSBjb21wb25lbnRcbiAgICBpZiAoY29kZVBvaW50ID4gMHhEN0ZGICYmIGNvZGVQb2ludCA8IDB4RTAwMCkge1xuICAgICAgLy8gbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICghbGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgICAvLyBubyBsZWFkIHlldFxuICAgICAgICBpZiAoY29kZVBvaW50ID4gMHhEQkZGKSB7XG4gICAgICAgICAgLy8gdW5leHBlY3RlZCB0cmFpbFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPT09IGxlbmd0aCkge1xuICAgICAgICAgIC8vIHVucGFpcmVkIGxlYWRcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gdmFsaWQgbGVhZFxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMiBsZWFkcyBpbiBhIHJvd1xuICAgICAgaWYgKGNvZGVQb2ludCA8IDB4REMwMCkge1xuICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyB2YWxpZCBzdXJyb2dhdGUgcGFpclxuICAgICAgY29kZVBvaW50ID0gKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDAgPDwgMTAgfCBjb2RlUG9pbnQgLSAweERDMDApICsgMHgxMDAwMFxuICAgIH0gZWxzZSBpZiAobGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgLy8gdmFsaWQgYm1wIGNoYXIsIGJ1dCBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgfVxuXG4gICAgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcblxuICAgIC8vIGVuY29kZSB1dGY4XG4gICAgaWYgKGNvZGVQb2ludCA8IDB4ODApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMSkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChjb2RlUG9pbnQpXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDgwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2IHwgMHhDMCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyB8IDB4RTAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDQpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDEyIHwgMHhGMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb2RlIHBvaW50JylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlUb0J5dGVzIChzdHIpIHtcbiAgY29uc3QgYnl0ZUFycmF5ID0gW11cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICAvLyBOb2RlJ3MgY29kZSBzZWVtcyB0byBiZSBkb2luZyB0aGlzIGFuZCBub3QgJiAweDdGLi5cbiAgICBieXRlQXJyYXkucHVzaChzdHIuY2hhckNvZGVBdChpKSAmIDB4RkYpXG4gIH1cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiB1dGYxNmxlVG9CeXRlcyAoc3RyLCB1bml0cykge1xuICBsZXQgYywgaGksIGxvXG4gIGNvbnN0IGJ5dGVBcnJheSA9IFtdXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG5cbiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSlcbiAgICBoaSA9IGMgPj4gOFxuICAgIGxvID0gYyAlIDI1NlxuICAgIGJ5dGVBcnJheS5wdXNoKGxvKVxuICAgIGJ5dGVBcnJheS5wdXNoKGhpKVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiBiYXNlNjRUb0J5dGVzIChzdHIpIHtcbiAgcmV0dXJuIGJhc2U2NC50b0J5dGVBcnJheShiYXNlNjRjbGVhbihzdHIpKVxufVxuXG5mdW5jdGlvbiBibGl0QnVmZmVyIChzcmMsIGRzdCwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgbGV0IGlcbiAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgaWYgKChpICsgb2Zmc2V0ID49IGRzdC5sZW5ndGgpIHx8IChpID49IHNyYy5sZW5ndGgpKSBicmVha1xuICAgIGRzdFtpICsgb2Zmc2V0XSA9IHNyY1tpXVxuICB9XG4gIHJldHVybiBpXG59XG5cbi8vIEFycmF5QnVmZmVyIG9yIFVpbnQ4QXJyYXkgb2JqZWN0cyBmcm9tIG90aGVyIGNvbnRleHRzIChpLmUuIGlmcmFtZXMpIGRvIG5vdCBwYXNzXG4vLyB0aGUgYGluc3RhbmNlb2ZgIGNoZWNrIGJ1dCB0aGV5IHNob3VsZCBiZSB0cmVhdGVkIGFzIG9mIHRoYXQgdHlwZS5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvaXNzdWVzLzE2NlxuZnVuY3Rpb24gaXNJbnN0YW5jZSAob2JqLCB0eXBlKSB7XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiB0eXBlIHx8XG4gICAgKG9iaiAhPSBudWxsICYmIG9iai5jb25zdHJ1Y3RvciAhPSBudWxsICYmIG9iai5jb25zdHJ1Y3Rvci5uYW1lICE9IG51bGwgJiZcbiAgICAgIG9iai5jb25zdHJ1Y3Rvci5uYW1lID09PSB0eXBlLm5hbWUpXG59XG5mdW5jdGlvbiBudW1iZXJJc05hTiAob2JqKSB7XG4gIC8vIEZvciBJRTExIHN1cHBvcnRcbiAgcmV0dXJuIG9iaiAhPT0gb2JqIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG59XG5cbi8vIENyZWF0ZSBsb29rdXAgdGFibGUgZm9yIGB0b1N0cmluZygnaGV4JylgXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL2lzc3Vlcy8yMTlcbmNvbnN0IGhleFNsaWNlTG9va3VwVGFibGUgPSAoZnVuY3Rpb24gKCkge1xuICBjb25zdCBhbHBoYWJldCA9ICcwMTIzNDU2Nzg5YWJjZGVmJ1xuICBjb25zdCB0YWJsZSA9IG5ldyBBcnJheSgyNTYpXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTY7ICsraSkge1xuICAgIGNvbnN0IGkxNiA9IGkgKiAxNlxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgMTY7ICsraikge1xuICAgICAgdGFibGVbaTE2ICsgal0gPSBhbHBoYWJldFtpXSArIGFscGhhYmV0W2pdXG4gICAgfVxuICB9XG4gIHJldHVybiB0YWJsZVxufSkoKVxuXG4vLyBSZXR1cm4gbm90IGZ1bmN0aW9uIHdpdGggRXJyb3IgaWYgQmlnSW50IG5vdCBzdXBwb3J0ZWRcbmZ1bmN0aW9uIGRlZmluZUJpZ0ludE1ldGhvZCAoZm4pIHtcbiAgcmV0dXJuIHR5cGVvZiBCaWdJbnQgPT09ICd1bmRlZmluZWQnID8gQnVmZmVyQmlnSW50Tm90RGVmaW5lZCA6IGZuXG59XG5cbmZ1bmN0aW9uIEJ1ZmZlckJpZ0ludE5vdERlZmluZWQgKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ0JpZ0ludCBub3Qgc3VwcG9ydGVkJylcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEdldEludHJpbnNpYyA9IHJlcXVpcmUoJ2dldC1pbnRyaW5zaWMnKTtcblxudmFyIGNhbGxCaW5kID0gcmVxdWlyZSgnLi8nKTtcblxudmFyICRpbmRleE9mID0gY2FsbEJpbmQoR2V0SW50cmluc2ljKCdTdHJpbmcucHJvdG90eXBlLmluZGV4T2YnKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY2FsbEJvdW5kSW50cmluc2ljKG5hbWUsIGFsbG93TWlzc2luZykge1xuXHR2YXIgaW50cmluc2ljID0gR2V0SW50cmluc2ljKG5hbWUsICEhYWxsb3dNaXNzaW5nKTtcblx0aWYgKHR5cGVvZiBpbnRyaW5zaWMgPT09ICdmdW5jdGlvbicgJiYgJGluZGV4T2YobmFtZSwgJy5wcm90b3R5cGUuJykgPiAtMSkge1xuXHRcdHJldHVybiBjYWxsQmluZChpbnRyaW5zaWMpO1xuXHR9XG5cdHJldHVybiBpbnRyaW5zaWM7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYmluZCA9IHJlcXVpcmUoJ2Z1bmN0aW9uLWJpbmQnKTtcbnZhciBHZXRJbnRyaW5zaWMgPSByZXF1aXJlKCdnZXQtaW50cmluc2ljJyk7XG5cbnZhciAkYXBwbHkgPSBHZXRJbnRyaW5zaWMoJyVGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHklJyk7XG52YXIgJGNhbGwgPSBHZXRJbnRyaW5zaWMoJyVGdW5jdGlvbi5wcm90b3R5cGUuY2FsbCUnKTtcbnZhciAkcmVmbGVjdEFwcGx5ID0gR2V0SW50cmluc2ljKCclUmVmbGVjdC5hcHBseSUnLCB0cnVlKSB8fCBiaW5kLmNhbGwoJGNhbGwsICRhcHBseSk7XG5cbnZhciAkZ09QRCA9IEdldEludHJpbnNpYygnJU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IlJywgdHJ1ZSk7XG52YXIgJGRlZmluZVByb3BlcnR5ID0gR2V0SW50cmluc2ljKCclT2JqZWN0LmRlZmluZVByb3BlcnR5JScsIHRydWUpO1xudmFyICRtYXggPSBHZXRJbnRyaW5zaWMoJyVNYXRoLm1heCUnKTtcblxuaWYgKCRkZWZpbmVQcm9wZXJ0eSkge1xuXHR0cnkge1xuXHRcdCRkZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IHZhbHVlOiAxIH0pO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0Ly8gSUUgOCBoYXMgYSBicm9rZW4gZGVmaW5lUHJvcGVydHlcblx0XHQkZGVmaW5lUHJvcGVydHkgPSBudWxsO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY2FsbEJpbmQob3JpZ2luYWxGdW5jdGlvbikge1xuXHR2YXIgZnVuYyA9ICRyZWZsZWN0QXBwbHkoYmluZCwgJGNhbGwsIGFyZ3VtZW50cyk7XG5cdGlmICgkZ09QRCAmJiAkZGVmaW5lUHJvcGVydHkpIHtcblx0XHR2YXIgZGVzYyA9ICRnT1BEKGZ1bmMsICdsZW5ndGgnKTtcblx0XHRpZiAoZGVzYy5jb25maWd1cmFibGUpIHtcblx0XHRcdC8vIG9yaWdpbmFsIGxlbmd0aCwgcGx1cyB0aGUgcmVjZWl2ZXIsIG1pbnVzIGFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoYWZ0ZXIgdGhlIHJlY2VpdmVyKVxuXHRcdFx0JGRlZmluZVByb3BlcnR5KFxuXHRcdFx0XHRmdW5jLFxuXHRcdFx0XHQnbGVuZ3RoJyxcblx0XHRcdFx0eyB2YWx1ZTogMSArICRtYXgoMCwgb3JpZ2luYWxGdW5jdGlvbi5sZW5ndGggLSAoYXJndW1lbnRzLmxlbmd0aCAtIDEpKSB9XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZnVuYztcbn07XG5cbnZhciBhcHBseUJpbmQgPSBmdW5jdGlvbiBhcHBseUJpbmQoKSB7XG5cdHJldHVybiAkcmVmbGVjdEFwcGx5KGJpbmQsICRhcHBseSwgYXJndW1lbnRzKTtcbn07XG5cbmlmICgkZGVmaW5lUHJvcGVydHkpIHtcblx0JGRlZmluZVByb3BlcnR5KG1vZHVsZS5leHBvcnRzLCAnYXBwbHknLCB7IHZhbHVlOiBhcHBseUJpbmQgfSk7XG59IGVsc2Uge1xuXHRtb2R1bGUuZXhwb3J0cy5hcHBseSA9IGFwcGx5QmluZDtcbn1cbiIsIi8qISBGb3IgbGljZW5zZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIGNib3IuanMuTElDRU5TRS50eHQgKi9cbiFmdW5jdGlvbih0LGUpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPWUoZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHJlcXVpcmUoXCJiaWdudW1iZXIuanNcIil9Y2F0Y2godCl7fX0oKSxyZXF1aXJlKFwidXRpbFwiKSk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbLFwidXRpbFwiXSxlKTpcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzLmNib3I9ZShmdW5jdGlvbigpe3RyeXtyZXR1cm4gcmVxdWlyZShcImJpZ251bWJlci5qc1wiKX1jYXRjaCh0KXt9fSgpLHJlcXVpcmUoXCJ1dGlsXCIpKTp0LmNib3I9ZSh0LkJpZ051bWJlcix0LnV0aWwpfSh0aGlzLChmdW5jdGlvbih0LGUpe3JldHVybigoKT0+e3ZhciByPXs3NDI6KHQsZSk9PntcInVzZSBzdHJpY3RcIjtlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24odCl7dmFyIGU9dSh0KSxyPWVbMF0sbj1lWzFdO3JldHVybiAzKihyK24pLzQtbn0sZS50b0J5dGVBcnJheT1mdW5jdGlvbih0KXt2YXIgZSxyLG89dSh0KSxzPW9bMF0sYT1vWzFdLGw9bmV3IGkoZnVuY3Rpb24odCxlLHIpe3JldHVybiAzKihlK3IpLzQtcn0oMCxzLGEpKSxjPTAsZj1hPjA/cy00OnM7Zm9yKHI9MDtyPGY7cis9NCllPW5bdC5jaGFyQ29kZUF0KHIpXTw8MTh8blt0LmNoYXJDb2RlQXQocisxKV08PDEyfG5bdC5jaGFyQ29kZUF0KHIrMildPDw2fG5bdC5jaGFyQ29kZUF0KHIrMyldLGxbYysrXT1lPj4xNiYyNTUsbFtjKytdPWU+PjgmMjU1LGxbYysrXT0yNTUmZTtyZXR1cm4gMj09PWEmJihlPW5bdC5jaGFyQ29kZUF0KHIpXTw8MnxuW3QuY2hhckNvZGVBdChyKzEpXT4+NCxsW2MrK109MjU1JmUpLDE9PT1hJiYoZT1uW3QuY2hhckNvZGVBdChyKV08PDEwfG5bdC5jaGFyQ29kZUF0KHIrMSldPDw0fG5bdC5jaGFyQ29kZUF0KHIrMildPj4yLGxbYysrXT1lPj44JjI1NSxsW2MrK109MjU1JmUpLGx9LGUuZnJvbUJ5dGVBcnJheT1mdW5jdGlvbih0KXtmb3IodmFyIGUsbj10Lmxlbmd0aCxpPW4lMyxvPVtdLHM9MTYzODMsYT0wLHU9bi1pO2E8dTthKz1zKW8ucHVzaChsKHQsYSxhK3M+dT91OmErcykpO3JldHVybiAxPT09aT8oZT10W24tMV0sby5wdXNoKHJbZT4+Ml0rcltlPDw0JjYzXStcIj09XCIpKToyPT09aSYmKGU9KHRbbi0yXTw8OCkrdFtuLTFdLG8ucHVzaChyW2U+PjEwXStyW2U+PjQmNjNdK3JbZTw8MiY2M10rXCI9XCIpKSxvLmpvaW4oXCJcIil9O2Zvcih2YXIgcj1bXSxuPVtdLGk9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxvPVwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL1wiLHM9MCxhPW8ubGVuZ3RoO3M8YTsrK3MpcltzXT1vW3NdLG5bby5jaGFyQ29kZUF0KHMpXT1zO2Z1bmN0aW9uIHUodCl7dmFyIGU9dC5sZW5ndGg7aWYoZSU0PjApdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNFwiKTt2YXIgcj10LmluZGV4T2YoXCI9XCIpO3JldHVybi0xPT09ciYmKHI9ZSksW3Iscj09PWU/MDo0LXIlNF19ZnVuY3Rpb24gbCh0LGUsbil7Zm9yKHZhciBpLG8scz1bXSxhPWU7YTxuO2ErPTMpaT0odFthXTw8MTYmMTY3MTE2ODApKyh0W2ErMV08PDgmNjUyODApKygyNTUmdFthKzJdKSxzLnB1c2goclsobz1pKT4+MTgmNjNdK3Jbbz4+MTImNjNdK3Jbbz4+NiY2M10rcls2MyZvXSk7cmV0dXJuIHMuam9pbihcIlwiKX1uW1wiLVwiLmNoYXJDb2RlQXQoMCldPTYyLG5bXCJfXCIuY2hhckNvZGVBdCgwKV09NjN9LDc2NDoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7Y29uc3Qgbj1yKDc0MiksaT1yKDY0NSksbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbC5mb3I/U3ltYm9sLmZvcihcIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tXCIpOm51bGw7ZS5CdWZmZXI9dSxlLlNsb3dCdWZmZXI9ZnVuY3Rpb24odCl7cmV0dXJuK3QhPXQmJih0PTApLHUuYWxsb2MoK3QpfSxlLklOU1BFQ1RfTUFYX0JZVEVTPTUwO2NvbnN0IHM9MjE0NzQ4MzY0NztmdW5jdGlvbiBhKHQpe2lmKHQ+cyl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIFwiJyt0KydcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKTtjb25zdCBlPW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSx1LnByb3RvdHlwZSksZX1mdW5jdGlvbiB1KHQsZSxyKXtpZihcIm51bWJlclwiPT10eXBlb2YgdCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwic3RyaW5nXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTtyZXR1cm4gZih0KX1yZXR1cm4gbCh0LGUscil9ZnVuY3Rpb24gbCh0LGUscil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJlwiXCIhPT1lfHwoZT1cInV0ZjhcIiksIXUuaXNFbmNvZGluZyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5rbm93biBlbmNvZGluZzogXCIrZSk7Y29uc3Qgcj0wfHkodCxlKTtsZXQgbj1hKHIpO2NvbnN0IGk9bi53cml0ZSh0LGUpO3JldHVybiBpIT09ciYmKG49bi5zbGljZSgwLGkpKSxufSh0LGUpO2lmKEFycmF5QnVmZmVyLmlzVmlldyh0KSlyZXR1cm4gZnVuY3Rpb24odCl7aWYoSyh0LFVpbnQ4QXJyYXkpKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBwKGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpfXJldHVybiBoKHQpfSh0KTtpZihudWxsPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSBcIit0eXBlb2YgdCk7aWYoSyh0LEFycmF5QnVmZmVyKXx8dCYmSyh0LmJ1ZmZlcixBcnJheUJ1ZmZlcikpcmV0dXJuIHAodCxlLHIpO2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciYmKEsodCxTaGFyZWRBcnJheUJ1ZmZlcil8fHQmJksodC5idWZmZXIsU2hhcmVkQXJyYXlCdWZmZXIpKSlyZXR1cm4gcCh0LGUscik7aWYoXCJudW1iZXJcIj09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwidmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTtjb25zdCBuPXQudmFsdWVPZiYmdC52YWx1ZU9mKCk7aWYobnVsbCE9biYmbiE9PXQpcmV0dXJuIHUuZnJvbShuLGUscik7Y29uc3QgaT1mdW5jdGlvbih0KXtpZih1LmlzQnVmZmVyKHQpKXtjb25zdCBlPTB8ZCh0Lmxlbmd0aCkscj1hKGUpO3JldHVybiAwPT09ci5sZW5ndGh8fHQuY29weShyLDAsMCxlKSxyfXJldHVybiB2b2lkIDAhPT10Lmxlbmd0aD9cIm51bWJlclwiIT10eXBlb2YgdC5sZW5ndGh8fFgodC5sZW5ndGgpP2EoMCk6aCh0KTpcIkJ1ZmZlclwiPT09dC50eXBlJiZBcnJheS5pc0FycmF5KHQuZGF0YSk/aCh0LmRhdGEpOnZvaWQgMH0odCk7aWYoaSlyZXR1cm4gaTtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1TeW1ib2wudG9QcmltaXRpdmUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHRbU3ltYm9sLnRvUHJpbWl0aXZlXSlyZXR1cm4gdS5mcm9tKHRbU3ltYm9sLnRvUHJpbWl0aXZlXShcInN0cmluZ1wiKSxlLHIpO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSBcIit0eXBlb2YgdCl9ZnVuY3Rpb24gYyh0KXtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyJyk7aWYodDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInK3QrJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcInNpemVcIicpfWZ1bmN0aW9uIGYodCl7cmV0dXJuIGModCksYSh0PDA/MDowfGQodCkpfWZ1bmN0aW9uIGgodCl7Y29uc3QgZT10Lmxlbmd0aDwwPzA6MHxkKHQubGVuZ3RoKSxyPWEoZSk7Zm9yKGxldCBuPTA7bjxlO24rPTEpcltuXT0yNTUmdFtuXTtyZXR1cm4gcn1mdW5jdGlvbiBwKHQsZSxyKXtpZihlPDB8fHQuYnl0ZUxlbmd0aDxlKXRocm93IG5ldyBSYW5nZUVycm9yKCdcIm9mZnNldFwiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpO2lmKHQuYnl0ZUxlbmd0aDxlKyhyfHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJsZW5ndGhcIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKTtsZXQgbjtyZXR1cm4gbj12b2lkIDA9PT1lJiZ2b2lkIDA9PT1yP25ldyBVaW50OEFycmF5KHQpOnZvaWQgMD09PXI/bmV3IFVpbnQ4QXJyYXkodCxlKTpuZXcgVWludDhBcnJheSh0LGUsciksT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sdS5wcm90b3R5cGUpLG59ZnVuY3Rpb24gZCh0KXtpZih0Pj1zKXRocm93IG5ldyBSYW5nZUVycm9yKFwiQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSBzaXplOiAweFwiK3MudG9TdHJpbmcoMTYpK1wiIGJ5dGVzXCIpO3JldHVybiAwfHR9ZnVuY3Rpb24geSh0LGUpe2lmKHUuaXNCdWZmZXIodCkpcmV0dXJuIHQubGVuZ3RoO2lmKEFycmF5QnVmZmVyLmlzVmlldyh0KXx8Syh0LEFycmF5QnVmZmVyKSlyZXR1cm4gdC5ieXRlTGVuZ3RoO2lmKFwic3RyaW5nXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIG9yIEFycmF5QnVmZmVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIHQpO2NvbnN0IHI9dC5sZW5ndGgsbj1hcmd1bWVudHMubGVuZ3RoPjImJiEwPT09YXJndW1lbnRzWzJdO2lmKCFuJiYwPT09cilyZXR1cm4gMDtsZXQgaT0hMTtmb3IoOzspc3dpdGNoKGUpe2Nhc2VcImFzY2lpXCI6Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuIHI7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cmV0dXJuIFkodCkubGVuZ3RoO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVybiAyKnI7Y2FzZVwiaGV4XCI6cmV0dXJuIHI+Pj4xO2Nhc2VcImJhc2U2NFwiOnJldHVybiBxKHQpLmxlbmd0aDtkZWZhdWx0OmlmKGkpcmV0dXJuIG4/LTE6WSh0KS5sZW5ndGg7ZT0oXCJcIitlKS50b0xvd2VyQ2FzZSgpLGk9ITB9fWZ1bmN0aW9uIGcodCxlLHIpe2xldCBuPSExO2lmKCh2b2lkIDA9PT1lfHxlPDApJiYoZT0wKSxlPnRoaXMubGVuZ3RoKXJldHVyblwiXCI7aWYoKHZvaWQgMD09PXJ8fHI+dGhpcy5sZW5ndGgpJiYocj10aGlzLmxlbmd0aCkscjw9MClyZXR1cm5cIlwiO2lmKChyPj4+PTApPD0oZT4+Pj0wKSlyZXR1cm5cIlwiO2Zvcih0fHwodD1cInV0ZjhcIik7Oylzd2l0Y2godCl7Y2FzZVwiaGV4XCI6cmV0dXJuIFIodGhpcyxlLHIpO2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOnJldHVybiBJKHRoaXMsZSxyKTtjYXNlXCJhc2NpaVwiOnJldHVybiBPKHRoaXMsZSxyKTtjYXNlXCJsYXRpbjFcIjpjYXNlXCJiaW5hcnlcIjpyZXR1cm4geCh0aGlzLGUscik7Y2FzZVwiYmFzZTY0XCI6cmV0dXJuIFQodGhpcyxlLHIpO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVybiBOKHRoaXMsZSxyKTtkZWZhdWx0OmlmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK3QpO3Q9KHQrXCJcIikudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBiKHQsZSxyKXtjb25zdCBuPXRbZV07dFtlXT10W3JdLHRbcl09bn1mdW5jdGlvbiBtKHQsZSxyLG4saSl7aWYoMD09PXQubGVuZ3RoKXJldHVybi0xO2lmKFwic3RyaW5nXCI9PXR5cGVvZiByPyhuPXIscj0wKTpyPjIxNDc0ODM2NDc/cj0yMTQ3NDgzNjQ3OnI8LTIxNDc0ODM2NDgmJihyPS0yMTQ3NDgzNjQ4KSxYKHI9K3IpJiYocj1pPzA6dC5sZW5ndGgtMSkscjwwJiYocj10Lmxlbmd0aCtyKSxyPj10Lmxlbmd0aCl7aWYoaSlyZXR1cm4tMTtyPXQubGVuZ3RoLTF9ZWxzZSBpZihyPDApe2lmKCFpKXJldHVybi0xO3I9MH1pZihcInN0cmluZ1wiPT10eXBlb2YgZSYmKGU9dS5mcm9tKGUsbikpLHUuaXNCdWZmZXIoZSkpcmV0dXJuIDA9PT1lLmxlbmd0aD8tMTp3KHQsZSxyLG4saSk7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpcmV0dXJuIGUmPTI1NSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP2k/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHQsZSxyKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKHQsZSxyKTp3KHQsW2VdLHIsbixpKTt0aHJvdyBuZXcgVHlwZUVycm9yKFwidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyXCIpfWZ1bmN0aW9uIHcodCxlLHIsbixpKXtsZXQgbyxzPTEsYT10Lmxlbmd0aCx1PWUubGVuZ3RoO2lmKHZvaWQgMCE9PW4mJihcInVjczJcIj09PShuPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpKXx8XCJ1Y3MtMlwiPT09bnx8XCJ1dGYxNmxlXCI9PT1ufHxcInV0Zi0xNmxlXCI9PT1uKSl7aWYodC5sZW5ndGg8Mnx8ZS5sZW5ndGg8MilyZXR1cm4tMTtzPTIsYS89Mix1Lz0yLHIvPTJ9ZnVuY3Rpb24gbCh0LGUpe3JldHVybiAxPT09cz90W2VdOnQucmVhZFVJbnQxNkJFKGUqcyl9aWYoaSl7bGV0IG49LTE7Zm9yKG89cjtvPGE7bysrKWlmKGwodCxvKT09PWwoZSwtMT09PW4/MDpvLW4pKXtpZigtMT09PW4mJihuPW8pLG8tbisxPT09dSlyZXR1cm4gbipzfWVsc2UtMSE9PW4mJihvLT1vLW4pLG49LTF9ZWxzZSBmb3Iocit1PmEmJihyPWEtdSksbz1yO28+PTA7by0tKXtsZXQgcj0hMDtmb3IobGV0IG49MDtuPHU7bisrKWlmKGwodCxvK24pIT09bChlLG4pKXtyPSExO2JyZWFrfWlmKHIpcmV0dXJuIG99cmV0dXJuLTF9ZnVuY3Rpb24gXyh0LGUscixuKXtyPU51bWJlcihyKXx8MDtjb25zdCBpPXQubGVuZ3RoLXI7bj8obj1OdW1iZXIobikpPmkmJihuPWkpOm49aTtjb25zdCBvPWUubGVuZ3RoO2xldCBzO2ZvcihuPm8vMiYmKG49by8yKSxzPTA7czxuOysrcyl7Y29uc3Qgbj1wYXJzZUludChlLnN1YnN0cigyKnMsMiksMTYpO2lmKFgobikpcmV0dXJuIHM7dFtyK3NdPW59cmV0dXJuIHN9ZnVuY3Rpb24gRSh0LGUscixuKXtyZXR1cm4gVihZKGUsdC5sZW5ndGgtciksdCxyLG4pfWZ1bmN0aW9uIHYodCxlLHIsbil7cmV0dXJuIFYoZnVuY3Rpb24odCl7Y29uc3QgZT1bXTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoOysrcillLnB1c2goMjU1JnQuY2hhckNvZGVBdChyKSk7cmV0dXJuIGV9KGUpLHQscixuKX1mdW5jdGlvbiBTKHQsZSxyLG4pe3JldHVybiBWKHEoZSksdCxyLG4pfWZ1bmN0aW9uIEEodCxlLHIsbil7cmV0dXJuIFYoZnVuY3Rpb24odCxlKXtsZXQgcixuLGk7Y29uc3Qgbz1bXTtmb3IobGV0IHM9MDtzPHQubGVuZ3RoJiYhKChlLT0yKTwwKTsrK3Mpcj10LmNoYXJDb2RlQXQocyksbj1yPj44LGk9ciUyNTYsby5wdXNoKGkpLG8ucHVzaChuKTtyZXR1cm4gb30oZSx0Lmxlbmd0aC1yKSx0LHIsbil9ZnVuY3Rpb24gVCh0LGUscil7cmV0dXJuIDA9PT1lJiZyPT09dC5sZW5ndGg/bi5mcm9tQnl0ZUFycmF5KHQpOm4uZnJvbUJ5dGVBcnJheSh0LnNsaWNlKGUscikpfWZ1bmN0aW9uIEkodCxlLHIpe3I9TWF0aC5taW4odC5sZW5ndGgscik7Y29uc3Qgbj1bXTtsZXQgaT1lO2Zvcig7aTxyOyl7Y29uc3QgZT10W2ldO2xldCBvPW51bGwscz1lPjIzOT80OmU+MjIzPzM6ZT4xOTE/MjoxO2lmKGkrczw9cil7bGV0IHIsbixhLHU7c3dpdGNoKHMpe2Nhc2UgMTplPDEyOCYmKG89ZSk7YnJlYWs7Y2FzZSAyOnI9dFtpKzFdLDEyOD09KDE5MiZyKSYmKHU9KDMxJmUpPDw2fDYzJnIsdT4xMjcmJihvPXUpKTticmVhaztjYXNlIDM6cj10W2krMV0sbj10W2krMl0sMTI4PT0oMTkyJnIpJiYxMjg9PSgxOTImbikmJih1PSgxNSZlKTw8MTJ8KDYzJnIpPDw2fDYzJm4sdT4yMDQ3JiYodTw1NTI5Nnx8dT41NzM0MykmJihvPXUpKTticmVhaztjYXNlIDQ6cj10W2krMV0sbj10W2krMl0sYT10W2krM10sMTI4PT0oMTkyJnIpJiYxMjg9PSgxOTImbikmJjEyOD09KDE5MiZhKSYmKHU9KDE1JmUpPDwxOHwoNjMmcik8PDEyfCg2MyZuKTw8Nnw2MyZhLHU+NjU1MzUmJnU8MTExNDExMiYmKG89dSkpfX1udWxsPT09bz8obz02NTUzMyxzPTEpOm8+NjU1MzUmJihvLT02NTUzNixuLnB1c2gobz4+PjEwJjEwMjN8NTUyOTYpLG89NTYzMjB8MTAyMyZvKSxuLnB1c2gobyksaSs9c31yZXR1cm4gZnVuY3Rpb24odCl7Y29uc3QgZT10Lmxlbmd0aDtpZihlPD1CKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyx0KTtsZXQgcj1cIlwiLG49MDtmb3IoO248ZTspcis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsdC5zbGljZShuLG4rPUIpKTtyZXR1cm4gcn0obil9ZS5rTWF4TGVuZ3RoPXMsdS5UWVBFRF9BUlJBWV9TVVBQT1JUPWZ1bmN0aW9uKCl7dHJ5e2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoMSksZT17Zm9vOmZ1bmN0aW9uKCl7cmV0dXJuIDQyfX07cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihlLFVpbnQ4QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YodCxlKSw0Mj09PXQuZm9vKCl9Y2F0Y2godCl7cmV0dXJuITF9fSgpLHUuVFlQRURfQVJSQVlfU1VQUE9SVHx8XCJ1bmRlZmluZWRcIj09dHlwZW9mIGNvbnNvbGV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGNvbnNvbGUuZXJyb3J8fGNvbnNvbGUuZXJyb3IoXCJUaGlzIGJyb3dzZXIgbGFja3MgdHlwZWQgYXJyYXkgKFVpbnQ4QXJyYXkpIHN1cHBvcnQgd2hpY2ggaXMgcmVxdWlyZWQgYnkgYGJ1ZmZlcmAgdjUueC4gVXNlIGBidWZmZXJgIHY0LnggaWYgeW91IHJlcXVpcmUgb2xkIGJyb3dzZXIgc3VwcG9ydC5cIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHUucHJvdG90eXBlLFwicGFyZW50XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYodS5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5idWZmZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHUucHJvdG90eXBlLFwib2Zmc2V0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYodS5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5ieXRlT2Zmc2V0fX0pLHUucG9vbFNpemU9ODE5Mix1LmZyb209ZnVuY3Rpb24odCxlLHIpe3JldHVybiBsKHQsZSxyKX0sT2JqZWN0LnNldFByb3RvdHlwZU9mKHUucHJvdG90eXBlLFVpbnQ4QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YodSxVaW50OEFycmF5KSx1LmFsbG9jPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3JldHVybiBjKHQpLHQ8PTA/YSh0KTp2b2lkIDAhPT1lP1wic3RyaW5nXCI9PXR5cGVvZiByP2EodCkuZmlsbChlLHIpOmEodCkuZmlsbChlKTphKHQpfSh0LGUscil9LHUuYWxsb2NVbnNhZmU9ZnVuY3Rpb24odCl7cmV0dXJuIGYodCl9LHUuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKHQpe3JldHVybiBmKHQpfSx1LmlzQnVmZmVyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiYhMD09PXQuX2lzQnVmZmVyJiZ0IT09dS5wcm90b3R5cGV9LHUuY29tcGFyZT1mdW5jdGlvbih0LGUpe2lmKEsodCxVaW50OEFycmF5KSYmKHQ9dS5mcm9tKHQsdC5vZmZzZXQsdC5ieXRlTGVuZ3RoKSksSyhlLFVpbnQ4QXJyYXkpJiYoZT11LmZyb20oZSxlLm9mZnNldCxlLmJ5dGVMZW5ndGgpKSwhdS5pc0J1ZmZlcih0KXx8IXUuaXNCdWZmZXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiYnVmMVwiLCBcImJ1ZjJcIiBhcmd1bWVudHMgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheScpO2lmKHQ9PT1lKXJldHVybiAwO2xldCByPXQubGVuZ3RoLG49ZS5sZW5ndGg7Zm9yKGxldCBpPTAsbz1NYXRoLm1pbihyLG4pO2k8bzsrK2kpaWYodFtpXSE9PWVbaV0pe3I9dFtpXSxuPWVbaV07YnJlYWt9cmV0dXJuIHI8bj8tMTpuPHI/MTowfSx1LmlzRW5jb2Rpbmc9ZnVuY3Rpb24odCl7c3dpdGNoKFN0cmluZyh0KS50b0xvd2VyQ2FzZSgpKXtjYXNlXCJoZXhcIjpjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpjYXNlXCJhc2NpaVwiOmNhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOmNhc2VcImJhc2U2NFwiOmNhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSx1LmNvbmNhdD1mdW5jdGlvbih0LGUpe2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gdS5hbGxvYygwKTtsZXQgcjtpZih2b2lkIDA9PT1lKWZvcihlPTAscj0wO3I8dC5sZW5ndGg7KytyKWUrPXRbcl0ubGVuZ3RoO2NvbnN0IG49dS5hbGxvY1Vuc2FmZShlKTtsZXQgaT0wO2ZvcihyPTA7cjx0Lmxlbmd0aDsrK3Ipe2xldCBlPXRbcl07aWYoSyhlLFVpbnQ4QXJyYXkpKWkrZS5sZW5ndGg+bi5sZW5ndGg/KHUuaXNCdWZmZXIoZSl8fChlPXUuZnJvbShlKSksZS5jb3B5KG4saSkpOlVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKG4sZSxpKTtlbHNle2lmKCF1LmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2UuY29weShuLGkpfWkrPWUubGVuZ3RofXJldHVybiBufSx1LmJ5dGVMZW5ndGg9eSx1LnByb3RvdHlwZS5faXNCdWZmZXI9ITAsdS5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmxlbmd0aDtpZih0JTIhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0c1wiKTtmb3IobGV0IGU9MDtlPHQ7ZSs9MiliKHRoaXMsZSxlKzEpO3JldHVybiB0aGlzfSx1LnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMubGVuZ3RoO2lmKHQlNCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzXCIpO2ZvcihsZXQgZT0wO2U8dDtlKz00KWIodGhpcyxlLGUrMyksYih0aGlzLGUrMSxlKzIpO3JldHVybiB0aGlzfSx1LnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMubGVuZ3RoO2lmKHQlOCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzXCIpO2ZvcihsZXQgZT0wO2U8dDtlKz04KWIodGhpcyxlLGUrNyksYih0aGlzLGUrMSxlKzYpLGIodGhpcyxlKzIsZSs1KSxiKHRoaXMsZSszLGUrNCk7cmV0dXJuIHRoaXN9LHUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmxlbmd0aDtyZXR1cm4gMD09PXQ/XCJcIjowPT09YXJndW1lbnRzLmxlbmd0aD9JKHRoaXMsMCx0KTpnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmc9dS5wcm90b3R5cGUudG9TdHJpbmcsdS5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe2lmKCF1LmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyXCIpO3JldHVybiB0aGlzPT09dHx8MD09PXUuY29tcGFyZSh0aGlzLHQpfSx1LnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7bGV0IHQ9XCJcIjtjb25zdCByPWUuSU5TUEVDVF9NQVhfQllURVM7cmV0dXJuIHQ9dGhpcy50b1N0cmluZyhcImhleFwiLDAscikucmVwbGFjZSgvKC57Mn0pL2csXCIkMSBcIikudHJpbSgpLHRoaXMubGVuZ3RoPnImJih0Kz1cIiAuLi4gXCIpLFwiPEJ1ZmZlciBcIit0K1wiPlwifSxvJiYodS5wcm90b3R5cGVbb109dS5wcm90b3R5cGUuaW5zcGVjdCksdS5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbih0LGUscixuLGkpe2lmKEsodCxVaW50OEFycmF5KSYmKHQ9dS5mcm9tKHQsdC5vZmZzZXQsdC5ieXRlTGVuZ3RoKSksIXUuaXNCdWZmZXIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwidGFyZ2V0XCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheS4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTtpZih2b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT1yJiYocj10P3QubGVuZ3RoOjApLHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PWkmJihpPXRoaXMubGVuZ3RoKSxlPDB8fHI+dC5sZW5ndGh8fG48MHx8aT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIm91dCBvZiByYW5nZSBpbmRleFwiKTtpZihuPj1pJiZlPj1yKXJldHVybiAwO2lmKG4+PWkpcmV0dXJuLTE7aWYoZT49cilyZXR1cm4gMTtpZih0aGlzPT09dClyZXR1cm4gMDtsZXQgbz0oaT4+Pj0wKS0obj4+Pj0wKSxzPShyPj4+PTApLShlPj4+PTApO2NvbnN0IGE9TWF0aC5taW4obyxzKSxsPXRoaXMuc2xpY2UobixpKSxjPXQuc2xpY2UoZSxyKTtmb3IobGV0IHQ9MDt0PGE7Kyt0KWlmKGxbdF0hPT1jW3RdKXtvPWxbdF0scz1jW3RdO2JyZWFrfXJldHVybiBvPHM/LTE6czxvPzE6MH0sdS5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24odCxlLHIpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKHQsZSxyKX0sdS5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbih0LGUscil7cmV0dXJuIG0odGhpcyx0LGUsciwhMCl9LHUucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbSh0aGlzLHQsZSxyLCExKX0sdS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCxlLHIsbil7aWYodm9pZCAwPT09ZSluPVwidXRmOFwiLHI9dGhpcy5sZW5ndGgsZT0wO2Vsc2UgaWYodm9pZCAwPT09ciYmXCJzdHJpbmdcIj09dHlwZW9mIGUpbj1lLHI9dGhpcy5sZW5ndGgsZT0wO2Vsc2V7aWYoIWlzRmluaXRlKGUpKXRocm93IG5ldyBFcnJvcihcIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkXCIpO2U+Pj49MCxpc0Zpbml0ZShyKT8ocj4+Pj0wLHZvaWQgMD09PW4mJihuPVwidXRmOFwiKSk6KG49cixyPXZvaWQgMCl9Y29uc3QgaT10aGlzLmxlbmd0aC1lO2lmKCh2b2lkIDA9PT1yfHxyPmkpJiYocj1pKSx0Lmxlbmd0aD4wJiYocjwwfHxlPDApfHxlPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKFwiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHNcIik7bnx8KG49XCJ1dGY4XCIpO2xldCBvPSExO2Zvcig7Oylzd2l0Y2gobil7Y2FzZVwiaGV4XCI6cmV0dXJuIF8odGhpcyx0LGUscik7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cmV0dXJuIEUodGhpcyx0LGUscik7Y2FzZVwiYXNjaWlcIjpjYXNlXCJsYXRpbjFcIjpjYXNlXCJiaW5hcnlcIjpyZXR1cm4gdih0aGlzLHQsZSxyKTtjYXNlXCJiYXNlNjRcIjpyZXR1cm4gUyh0aGlzLHQsZSxyKTtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4gQSh0aGlzLHQsZSxyKTtkZWZhdWx0OmlmKG8pdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK24pO249KFwiXCIrbikudG9Mb3dlckNhc2UoKSxvPSEwfX0sdS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6XCJCdWZmZXJcIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O2NvbnN0IEI9NDA5NjtmdW5jdGlvbiBPKHQsZSxyKXtsZXQgbj1cIlwiO3I9TWF0aC5taW4odC5sZW5ndGgscik7Zm9yKGxldCBpPWU7aTxyOysraSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZ0W2ldKTtyZXR1cm4gbn1mdW5jdGlvbiB4KHQsZSxyKXtsZXQgbj1cIlwiO3I9TWF0aC5taW4odC5sZW5ndGgscik7Zm9yKGxldCBpPWU7aTxyOysraSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbaV0pO3JldHVybiBufWZ1bmN0aW9uIFIodCxlLHIpe2NvbnN0IG49dC5sZW5ndGg7KCFlfHxlPDApJiYoZT0wKSwoIXJ8fHI8MHx8cj5uKSYmKHI9bik7bGV0IGk9XCJcIjtmb3IobGV0IG49ZTtuPHI7KytuKWkrPUpbdFtuXV07cmV0dXJuIGl9ZnVuY3Rpb24gTih0LGUscil7Y29uc3Qgbj10LnNsaWNlKGUscik7bGV0IGk9XCJcIjtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoLTE7dCs9MilpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG5bdF0rMjU2Km5bdCsxXSk7cmV0dXJuIGl9ZnVuY3Rpb24gTCh0LGUscil7aWYodCUxIT0wfHx0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJvZmZzZXQgaXMgbm90IHVpbnRcIik7aWYodCtlPnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoXCIpfWZ1bmN0aW9uIFAodCxlLHIsbixpLG8pe2lmKCF1LmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpO2lmKGU+aXx8ZTxvKXRocm93IG5ldyBSYW5nZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj50Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKX1mdW5jdGlvbiBNKHQsZSxyLG4saSl7RyhlLG4saSx0LHIsNyk7bGV0IG89TnVtYmVyKGUmQmlnSW50KDQyOTQ5NjcyOTUpKTt0W3IrK109byxvPj49OCx0W3IrK109byxvPj49OCx0W3IrK109byxvPj49OCx0W3IrK109bztsZXQgcz1OdW1iZXIoZT4+QmlnSW50KDMyKSZCaWdJbnQoNDI5NDk2NzI5NSkpO3JldHVybiB0W3IrK109cyxzPj49OCx0W3IrK109cyxzPj49OCx0W3IrK109cyxzPj49OCx0W3IrK109cyxyfWZ1bmN0aW9uIFUodCxlLHIsbixpKXtHKGUsbixpLHQsciw3KTtsZXQgbz1OdW1iZXIoZSZCaWdJbnQoNDI5NDk2NzI5NSkpO3Rbcis3XT1vLG8+Pj04LHRbcis2XT1vLG8+Pj04LHRbcis1XT1vLG8+Pj04LHRbcis0XT1vO2xldCBzPU51bWJlcihlPj5CaWdJbnQoMzIpJkJpZ0ludCg0Mjk0OTY3Mjk1KSk7cmV0dXJuIHRbciszXT1zLHM+Pj04LHRbcisyXT1zLHM+Pj04LHRbcisxXT1zLHM+Pj04LHRbcl09cyxyKzh9ZnVuY3Rpb24gaih0LGUscixuLGksbyl7aWYocituPnQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKFwiSW5kZXggb3V0IG9mIHJhbmdlXCIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKX1mdW5jdGlvbiBrKHQsZSxyLG4sbyl7cmV0dXJuIGU9K2Uscj4+Pj0wLG98fGoodCwwLHIsNCksaS53cml0ZSh0LGUscixuLDIzLDQpLHIrNH1mdW5jdGlvbiAkKHQsZSxyLG4sbyl7cmV0dXJuIGU9K2Uscj4+Pj0wLG98fGoodCwwLHIsOCksaS53cml0ZSh0LGUscixuLDUyLDgpLHIrOH11LnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbih0LGUpe2NvbnN0IHI9dGhpcy5sZW5ndGg7KHQ9fn50KTwwPyh0Kz1yKTwwJiYodD0wKTp0PnImJih0PXIpLChlPXZvaWQgMD09PWU/cjp+fmUpPDA/KGUrPXIpPDAmJihlPTApOmU+ciYmKGU9ciksZTx0JiYoZT10KTtjb25zdCBuPXRoaXMuc3ViYXJyYXkodCxlKTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sdS5wcm90b3R5cGUpLG59LHUucHJvdG90eXBlLnJlYWRVaW50TEU9dS5wcm90b3R5cGUucmVhZFVJbnRMRT1mdW5jdGlvbih0LGUscil7dD4+Pj0wLGU+Pj49MCxyfHxMKHQsZSx0aGlzLmxlbmd0aCk7bGV0IG49dGhpc1t0XSxpPTEsbz0wO2Zvcig7KytvPGUmJihpKj0yNTYpOyluKz10aGlzW3Qrb10qaTtyZXR1cm4gbn0sdS5wcm90b3R5cGUucmVhZFVpbnRCRT11LnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKHQsZSxyKXt0Pj4+PTAsZT4+Pj0wLHJ8fEwodCxlLHRoaXMubGVuZ3RoKTtsZXQgbj10aGlzW3QrLS1lXSxpPTE7Zm9yKDtlPjAmJihpKj0yNTYpOyluKz10aGlzW3QrLS1lXSppO3JldHVybiBufSx1LnByb3RvdHlwZS5yZWFkVWludDg9dS5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsMSx0aGlzLmxlbmd0aCksdGhpc1t0XX0sdS5wcm90b3R5cGUucmVhZFVpbnQxNkxFPXUucHJvdG90eXBlLnJlYWRVSW50MTZMRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8TCh0LDIsdGhpcy5sZW5ndGgpLHRoaXNbdF18dGhpc1t0KzFdPDw4fSx1LnByb3RvdHlwZS5yZWFkVWludDE2QkU9dS5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsMix0aGlzLmxlbmd0aCksdGhpc1t0XTw8OHx0aGlzW3QrMV19LHUucHJvdG90eXBlLnJlYWRVaW50MzJMRT11LnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCw0LHRoaXMubGVuZ3RoKSwodGhpc1t0XXx0aGlzW3QrMV08PDh8dGhpc1t0KzJdPDwxNikrMTY3NzcyMTYqdGhpc1t0KzNdfSx1LnByb3RvdHlwZS5yZWFkVWludDMyQkU9dS5wcm90b3R5cGUucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1t0XSsodGhpc1t0KzFdPDwxNnx0aGlzW3QrMl08PDh8dGhpc1t0KzNdKX0sdS5wcm90b3R5cGUucmVhZEJpZ1VJbnQ2NExFPVooKGZ1bmN0aW9uKHQpe1codD4+Pj0wLFwib2Zmc2V0XCIpO2NvbnN0IGU9dGhpc1t0XSxyPXRoaXNbdCs3XTt2b2lkIDAhPT1lJiZ2b2lkIDAhPT1yfHx6KHQsdGhpcy5sZW5ndGgtOCk7Y29uc3Qgbj1lKzI1Nip0aGlzWysrdF0rNjU1MzYqdGhpc1srK3RdK3RoaXNbKyt0XSoyKioyNCxpPXRoaXNbKyt0XSsyNTYqdGhpc1srK3RdKzY1NTM2KnRoaXNbKyt0XStyKjIqKjI0O3JldHVybiBCaWdJbnQobikrKEJpZ0ludChpKTw8QmlnSW50KDMyKSl9KSksdS5wcm90b3R5cGUucmVhZEJpZ1VJbnQ2NEJFPVooKGZ1bmN0aW9uKHQpe1codD4+Pj0wLFwib2Zmc2V0XCIpO2NvbnN0IGU9dGhpc1t0XSxyPXRoaXNbdCs3XTt2b2lkIDAhPT1lJiZ2b2lkIDAhPT1yfHx6KHQsdGhpcy5sZW5ndGgtOCk7Y29uc3Qgbj1lKjIqKjI0KzY1NTM2KnRoaXNbKyt0XSsyNTYqdGhpc1srK3RdK3RoaXNbKyt0XSxpPXRoaXNbKyt0XSoyKioyNCs2NTUzNip0aGlzWysrdF0rMjU2KnRoaXNbKyt0XStyO3JldHVybihCaWdJbnQobik8PEJpZ0ludCgzMikpK0JpZ0ludChpKX0pKSx1LnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24odCxlLHIpe3Q+Pj49MCxlPj4+PTAscnx8TCh0LGUsdGhpcy5sZW5ndGgpO2xldCBuPXRoaXNbdF0saT0xLG89MDtmb3IoOysrbzxlJiYoaSo9MjU2KTspbis9dGhpc1t0K29dKmk7cmV0dXJuIGkqPTEyOCxuPj1pJiYobi09TWF0aC5wb3coMiw4KmUpKSxufSx1LnByb3RvdHlwZS5yZWFkSW50QkU9ZnVuY3Rpb24odCxlLHIpe3Q+Pj49MCxlPj4+PTAscnx8TCh0LGUsdGhpcy5sZW5ndGgpO2xldCBuPWUsaT0xLG89dGhpc1t0Ky0tbl07Zm9yKDtuPjAmJihpKj0yNTYpOylvKz10aGlzW3QrLS1uXSppO3JldHVybiBpKj0xMjgsbz49aSYmKG8tPU1hdGgucG93KDIsOCplKSksb30sdS5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1t0XT8tMSooMjU1LXRoaXNbdF0rMSk6dGhpc1t0XX0sdS5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24odCxlKXt0Pj4+PTAsZXx8TCh0LDIsdGhpcy5sZW5ndGgpO2NvbnN0IHI9dGhpc1t0XXx0aGlzW3QrMV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LHUucHJvdG90eXBlLnJlYWRJbnQxNkJFPWZ1bmN0aW9uKHQsZSl7dD4+Pj0wLGV8fEwodCwyLHRoaXMubGVuZ3RoKTtjb25zdCByPXRoaXNbdCsxXXx0aGlzW3RdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSx1LnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8TCh0LDQsdGhpcy5sZW5ndGgpLHRoaXNbdF18dGhpc1t0KzFdPDw4fHRoaXNbdCsyXTw8MTZ8dGhpc1t0KzNdPDwyNH0sdS5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCw0LHRoaXMubGVuZ3RoKSx0aGlzW3RdPDwyNHx0aGlzW3QrMV08PDE2fHRoaXNbdCsyXTw8OHx0aGlzW3QrM119LHUucHJvdG90eXBlLnJlYWRCaWdJbnQ2NExFPVooKGZ1bmN0aW9uKHQpe1codD4+Pj0wLFwib2Zmc2V0XCIpO2NvbnN0IGU9dGhpc1t0XSxyPXRoaXNbdCs3XTt2b2lkIDAhPT1lJiZ2b2lkIDAhPT1yfHx6KHQsdGhpcy5sZW5ndGgtOCk7Y29uc3Qgbj10aGlzW3QrNF0rMjU2KnRoaXNbdCs1XSs2NTUzNip0aGlzW3QrNl0rKHI8PDI0KTtyZXR1cm4oQmlnSW50KG4pPDxCaWdJbnQoMzIpKStCaWdJbnQoZSsyNTYqdGhpc1srK3RdKzY1NTM2KnRoaXNbKyt0XSt0aGlzWysrdF0qMioqMjQpfSkpLHUucHJvdG90eXBlLnJlYWRCaWdJbnQ2NEJFPVooKGZ1bmN0aW9uKHQpe1codD4+Pj0wLFwib2Zmc2V0XCIpO2NvbnN0IGU9dGhpc1t0XSxyPXRoaXNbdCs3XTt2b2lkIDAhPT1lJiZ2b2lkIDAhPT1yfHx6KHQsdGhpcy5sZW5ndGgtOCk7Y29uc3Qgbj0oZTw8MjQpKzY1NTM2KnRoaXNbKyt0XSsyNTYqdGhpc1srK3RdK3RoaXNbKyt0XTtyZXR1cm4oQmlnSW50KG4pPDxCaWdJbnQoMzIpKStCaWdJbnQodGhpc1srK3RdKjIqKjI0KzY1NTM2KnRoaXNbKyt0XSsyNTYqdGhpc1srK3RdK3IpfSkpLHUucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsNCx0aGlzLmxlbmd0aCksaS5yZWFkKHRoaXMsdCwhMCwyMyw0KX0sdS5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCw0LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyx0LCExLDIzLDQpfSx1LnByb3RvdHlwZS5yZWFkRG91YmxlTEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCw4LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyx0LCEwLDUyLDgpfSx1LnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCw4LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyx0LCExLDUyLDgpfSx1LnByb3RvdHlwZS53cml0ZVVpbnRMRT11LnByb3RvdHlwZS53cml0ZVVJbnRMRT1mdW5jdGlvbih0LGUscixuKXt0PSt0LGU+Pj49MCxyPj4+PTAsbnx8UCh0aGlzLHQsZSxyLE1hdGgucG93KDIsOCpyKS0xLDApO2xldCBpPTEsbz0wO2Zvcih0aGlzW2VdPTI1NSZ0OysrbzxyJiYoaSo9MjU2KTspdGhpc1tlK29dPXQvaSYyNTU7cmV0dXJuIGUrcn0sdS5wcm90b3R5cGUud3JpdGVVaW50QkU9dS5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24odCxlLHIsbil7dD0rdCxlPj4+PTAscj4+Pj0wLG58fFAodGhpcyx0LGUscixNYXRoLnBvdygyLDgqciktMSwwKTtsZXQgaT1yLTEsbz0xO2Zvcih0aGlzW2UraV09MjU1JnQ7LS1pPj0wJiYobyo9MjU2KTspdGhpc1tlK2ldPXQvbyYyNTU7cmV0dXJuIGUrcn0sdS5wcm90b3R5cGUud3JpdGVVaW50OD11LnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSwxLDI1NSwwKSx0aGlzW2VdPTI1NSZ0LGUrMX0sdS5wcm90b3R5cGUud3JpdGVVaW50MTZMRT11LnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSwyLDY1NTM1LDApLHRoaXNbZV09MjU1JnQsdGhpc1tlKzFdPXQ+Pj44LGUrMn0sdS5wcm90b3R5cGUud3JpdGVVaW50MTZCRT11LnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSwyLDY1NTM1LDApLHRoaXNbZV09dD4+PjgsdGhpc1tlKzFdPTI1NSZ0LGUrMn0sdS5wcm90b3R5cGUud3JpdGVVaW50MzJMRT11LnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSw0LDQyOTQ5NjcyOTUsMCksdGhpc1tlKzNdPXQ+Pj4yNCx0aGlzW2UrMl09dD4+PjE2LHRoaXNbZSsxXT10Pj4+OCx0aGlzW2VdPTI1NSZ0LGUrNH0sdS5wcm90b3R5cGUud3JpdGVVaW50MzJCRT11LnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSw0LDQyOTQ5NjcyOTUsMCksdGhpc1tlXT10Pj4+MjQsdGhpc1tlKzFdPXQ+Pj4xNix0aGlzW2UrMl09dD4+PjgsdGhpc1tlKzNdPTI1NSZ0LGUrNH0sdS5wcm90b3R5cGUud3JpdGVCaWdVSW50NjRMRT1aKChmdW5jdGlvbih0LGU9MCl7cmV0dXJuIE0odGhpcyx0LGUsQmlnSW50KDApLEJpZ0ludChcIjB4ZmZmZmZmZmZmZmZmZmZmZlwiKSl9KSksdS5wcm90b3R5cGUud3JpdGVCaWdVSW50NjRCRT1aKChmdW5jdGlvbih0LGU9MCl7cmV0dXJuIFUodGhpcyx0LGUsQmlnSW50KDApLEJpZ0ludChcIjB4ZmZmZmZmZmZmZmZmZmZmZlwiKSl9KSksdS5wcm90b3R5cGUud3JpdGVJbnRMRT1mdW5jdGlvbih0LGUscixuKXtpZih0PSt0LGU+Pj49MCwhbil7Y29uc3Qgbj1NYXRoLnBvdygyLDgqci0xKTtQKHRoaXMsdCxlLHIsbi0xLC1uKX1sZXQgaT0wLG89MSxzPTA7Zm9yKHRoaXNbZV09MjU1JnQ7KytpPHImJihvKj0yNTYpOyl0PDAmJjA9PT1zJiYwIT09dGhpc1tlK2ktMV0mJihzPTEpLHRoaXNbZStpXT0odC9vPj4wKS1zJjI1NTtyZXR1cm4gZStyfSx1LnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHQ9K3QsZT4+Pj0wLCFuKXtjb25zdCBuPU1hdGgucG93KDIsOCpyLTEpO1AodGhpcyx0LGUscixuLTEsLW4pfWxldCBpPXItMSxvPTEscz0wO2Zvcih0aGlzW2UraV09MjU1JnQ7LS1pPj0wJiYobyo9MjU2KTspdDwwJiYwPT09cyYmMCE9PXRoaXNbZStpKzFdJiYocz0xKSx0aGlzW2UraV09KHQvbz4+MCktcyYyNTU7cmV0dXJuIGUrcn0sdS5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSwxLDEyNywtMTI4KSx0PDAmJih0PTI1NSt0KzEpLHRoaXNbZV09MjU1JnQsZSsxfSx1LnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxQKHRoaXMsdCxlLDIsMzI3NjcsLTMyNzY4KSx0aGlzW2VdPTI1NSZ0LHRoaXNbZSsxXT10Pj4+OCxlKzJ9LHUucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsMiwzMjc2NywtMzI3NjgpLHRoaXNbZV09dD4+PjgsdGhpc1tlKzFdPTI1NSZ0LGUrMn0sdS5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLHRoaXNbZV09MjU1JnQsdGhpc1tlKzFdPXQ+Pj44LHRoaXNbZSsyXT10Pj4+MTYsdGhpc1tlKzNdPXQ+Pj4yNCxlKzR9LHUucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0PDAmJih0PTQyOTQ5NjcyOTUrdCsxKSx0aGlzW2VdPXQ+Pj4yNCx0aGlzW2UrMV09dD4+PjE2LHRoaXNbZSsyXT10Pj4+OCx0aGlzW2UrM109MjU1JnQsZSs0fSx1LnByb3RvdHlwZS53cml0ZUJpZ0ludDY0TEU9WigoZnVuY3Rpb24odCxlPTApe3JldHVybiBNKHRoaXMsdCxlLC1CaWdJbnQoXCIweDgwMDAwMDAwMDAwMDAwMDBcIiksQmlnSW50KFwiMHg3ZmZmZmZmZmZmZmZmZmZmXCIpKX0pKSx1LnByb3RvdHlwZS53cml0ZUJpZ0ludDY0QkU9WigoZnVuY3Rpb24odCxlPTApe3JldHVybiBVKHRoaXMsdCxlLC1CaWdJbnQoXCIweDgwMDAwMDAwMDAwMDAwMDBcIiksQmlnSW50KFwiMHg3ZmZmZmZmZmZmZmZmZmZmXCIpKX0pKSx1LnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBrKHRoaXMsdCxlLCEwLHIpfSx1LnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBrKHRoaXMsdCxlLCExLHIpfSx1LnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gJCh0aGlzLHQsZSwhMCxyKX0sdS5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbih0LGUscil7cmV0dXJuICQodGhpcyx0LGUsITEscil9LHUucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCxlLHIsbil7aWYoIXUuaXNCdWZmZXIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcImFyZ3VtZW50IHNob3VsZCBiZSBhIEJ1ZmZlclwiKTtpZihyfHwocj0wKSxufHwwPT09bnx8KG49dGhpcy5sZW5ndGgpLGU+PXQubGVuZ3RoJiYoZT10Lmxlbmd0aCksZXx8KGU9MCksbj4wJiZuPHImJihuPXIpLG49PT1yKXJldHVybiAwO2lmKDA9PT10Lmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAwO2lmKGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHNcIik7aWYocjwwfHxyPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKTtpZihuPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kc1wiKTtuPnRoaXMubGVuZ3RoJiYobj10aGlzLmxlbmd0aCksdC5sZW5ndGgtZTxuLXImJihuPXQubGVuZ3RoLWUrcik7Y29uc3QgaT1uLXI7cmV0dXJuIHRoaXM9PT10JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluP3RoaXMuY29weVdpdGhpbihlLHIsbik6VWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwodCx0aGlzLnN1YmFycmF5KHIsbiksZSksaX0sdS5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbih0LGUscixuKXtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGU/KG49ZSxlPTAscj10aGlzLmxlbmd0aCk6XCJzdHJpbmdcIj09dHlwZW9mIHImJihuPXIscj10aGlzLmxlbmd0aCksdm9pZCAwIT09biYmXCJzdHJpbmdcIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcihcImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmdcIik7aWYoXCJzdHJpbmdcIj09dHlwZW9mIG4mJiF1LmlzRW5jb2RpbmcobikpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK24pO2lmKDE9PT10Lmxlbmd0aCl7Y29uc3QgZT10LmNoYXJDb2RlQXQoMCk7KFwidXRmOFwiPT09biYmZTwxMjh8fFwibGF0aW4xXCI9PT1uKSYmKHQ9ZSl9fWVsc2VcIm51bWJlclwiPT10eXBlb2YgdD90Jj0yNTU6XCJib29sZWFuXCI9PXR5cGVvZiB0JiYodD1OdW1iZXIodCkpO2lmKGU8MHx8dGhpcy5sZW5ndGg8ZXx8dGhpcy5sZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIk91dCBvZiByYW5nZSBpbmRleFwiKTtpZihyPD1lKXJldHVybiB0aGlzO2xldCBpO2lmKGU+Pj49MCxyPXZvaWQgMD09PXI/dGhpcy5sZW5ndGg6cj4+PjAsdHx8KHQ9MCksXCJudW1iZXJcIj09dHlwZW9mIHQpZm9yKGk9ZTtpPHI7KytpKXRoaXNbaV09dDtlbHNle2NvbnN0IG89dS5pc0J1ZmZlcih0KT90OnUuZnJvbSh0LG4pLHM9by5sZW5ndGg7aWYoMD09PXMpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlIFwiJyt0KydcIiBpcyBpbnZhbGlkIGZvciBhcmd1bWVudCBcInZhbHVlXCInKTtmb3IoaT0wO2k8ci1lOysraSl0aGlzW2krZV09b1tpJXNdfXJldHVybiB0aGlzfTtjb25zdCBGPXt9O2Z1bmN0aW9uIEQodCxlLHIpe0ZbdF09Y2xhc3MgZXh0ZW5kcyBye2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxcIm1lc3NhZ2VcIix7dmFsdWU6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdGhpcy5uYW1lPWAke3RoaXMubmFtZX0gWyR7dH1dYCx0aGlzLnN0YWNrLGRlbGV0ZSB0aGlzLm5hbWV9Z2V0IGNvZGUoKXtyZXR1cm4gdH1zZXQgY29kZSh0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxcImNvZGVcIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6dCx3cml0YWJsZTohMH0pfXRvU3RyaW5nKCl7cmV0dXJuYCR7dGhpcy5uYW1lfSBbJHt0fV06ICR7dGhpcy5tZXNzYWdlfWB9fX1mdW5jdGlvbiBDKHQpe2xldCBlPVwiXCIscj10Lmxlbmd0aDtjb25zdCBuPVwiLVwiPT09dFswXT8xOjA7Zm9yKDtyPj1uKzQ7ci09MyllPWBfJHt0LnNsaWNlKHItMyxyKX0ke2V9YDtyZXR1cm5gJHt0LnNsaWNlKDAscil9JHtlfWB9ZnVuY3Rpb24gRyh0LGUscixuLGksbyl7aWYodD5yfHx0PGUpe2NvbnN0IG49XCJiaWdpbnRcIj09dHlwZW9mIGU/XCJuXCI6XCJcIjtsZXQgaTt0aHJvdyBpPW8+Mz8wPT09ZXx8ZT09PUJpZ0ludCgwKT9gPj0gMCR7bn0gYW5kIDwgMiR7bn0gKiogJHs4KihvKzEpfSR7bn1gOmA+PSAtKDIke259ICoqICR7OCoobysxKS0xfSR7bn0pIGFuZCA8IDIgKiogJHs4KihvKzEpLTF9JHtufWA6YD49ICR7ZX0ke259IGFuZCA8PSAke3J9JHtufWAsbmV3IEYuRVJSX09VVF9PRl9SQU5HRShcInZhbHVlXCIsaSx0KX0hZnVuY3Rpb24odCxlLHIpe1coZSxcIm9mZnNldFwiKSx2b2lkIDAhPT10W2VdJiZ2b2lkIDAhPT10W2Urcl18fHooZSx0Lmxlbmd0aC0ocisxKSl9KG4saSxvKX1mdW5jdGlvbiBXKHQsZSl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEYuRVJSX0lOVkFMSURfQVJHX1RZUEUoZSxcIm51bWJlclwiLHQpfWZ1bmN0aW9uIHoodCxlLHIpe2lmKE1hdGguZmxvb3IodCkhPT10KXRocm93IFcodCxyKSxuZXcgRi5FUlJfT1VUX09GX1JBTkdFKHJ8fFwib2Zmc2V0XCIsXCJhbiBpbnRlZ2VyXCIsdCk7aWYoZTwwKXRocm93IG5ldyBGLkVSUl9CVUZGRVJfT1VUX09GX0JPVU5EUzt0aHJvdyBuZXcgRi5FUlJfT1VUX09GX1JBTkdFKHJ8fFwib2Zmc2V0XCIsYD49ICR7cj8xOjB9IGFuZCA8PSAke2V9YCx0KX1EKFwiRVJSX0JVRkZFUl9PVVRfT0ZfQk9VTkRTXCIsKGZ1bmN0aW9uKHQpe3JldHVybiB0P2Ake3R9IGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kc2A6XCJBdHRlbXB0IHRvIGFjY2VzcyBtZW1vcnkgb3V0c2lkZSBidWZmZXIgYm91bmRzXCJ9KSxSYW5nZUVycm9yKSxEKFwiRVJSX0lOVkFMSURfQVJHX1RZUEVcIiwoZnVuY3Rpb24odCxlKXtyZXR1cm5gVGhlIFwiJHt0fVwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2YgZX1gfSksVHlwZUVycm9yKSxEKFwiRVJSX09VVF9PRl9SQU5HRVwiLChmdW5jdGlvbih0LGUscil7bGV0IG49YFRoZSB2YWx1ZSBvZiBcIiR7dH1cIiBpcyBvdXQgb2YgcmFuZ2UuYCxpPXI7cmV0dXJuIE51bWJlci5pc0ludGVnZXIocikmJk1hdGguYWJzKHIpPjIqKjMyP2k9QyhTdHJpbmcocikpOlwiYmlnaW50XCI9PXR5cGVvZiByJiYoaT1TdHJpbmcociksKHI+QmlnSW50KDIpKipCaWdJbnQoMzIpfHxyPC0oQmlnSW50KDIpKipCaWdJbnQoMzIpKSkmJihpPUMoaSkpLGkrPVwiblwiKSxuKz1gIEl0IG11c3QgYmUgJHtlfS4gUmVjZWl2ZWQgJHtpfWAsbn0pLFJhbmdlRXJyb3IpO2NvbnN0IEg9L1teKy8wLTlBLVphLXotX10vZztmdW5jdGlvbiBZKHQsZSl7bGV0IHI7ZT1lfHwxLzA7Y29uc3Qgbj10Lmxlbmd0aDtsZXQgaT1udWxsO2NvbnN0IG89W107Zm9yKGxldCBzPTA7czxuOysrcyl7aWYocj10LmNoYXJDb2RlQXQocykscj41NTI5NSYmcjw1NzM0NCl7aWYoIWkpe2lmKHI+NTYzMTkpeyhlLT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pZihzKzE9PT1uKXsoZS09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aT1yO2NvbnRpbnVlfWlmKHI8NTYzMjApeyhlLT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KSxpPXI7Y29udGludWV9cj02NTUzNisoaS01NTI5Njw8MTB8ci01NjMyMCl9ZWxzZSBpJiYoZS09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7aWYoaT1udWxsLHI8MTI4KXtpZigoZS09MSk8MClicmVhaztvLnB1c2gocil9ZWxzZSBpZihyPDIwNDgpe2lmKChlLT0yKTwwKWJyZWFrO28ucHVzaChyPj42fDE5Miw2MyZyfDEyOCl9ZWxzZSBpZihyPDY1NTM2KXtpZigoZS09Myk8MClicmVhaztvLnB1c2gocj4+MTJ8MjI0LHI+PjYmNjN8MTI4LDYzJnJ8MTI4KX1lbHNle2lmKCEocjwxMTE0MTEyKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNvZGUgcG9pbnRcIik7aWYoKGUtPTQpPDApYnJlYWs7by5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wxMjgsNjMmcnwxMjgpfX1yZXR1cm4gb31mdW5jdGlvbiBxKHQpe3JldHVybiBuLnRvQnl0ZUFycmF5KGZ1bmN0aW9uKHQpe2lmKCh0PSh0PXQuc3BsaXQoXCI9XCIpWzBdKS50cmltKCkucmVwbGFjZShILFwiXCIpKS5sZW5ndGg8MilyZXR1cm5cIlwiO2Zvcig7dC5sZW5ndGglNCE9MDspdCs9XCI9XCI7cmV0dXJuIHR9KHQpKX1mdW5jdGlvbiBWKHQsZSxyLG4pe2xldCBpO2ZvcihpPTA7aTxuJiYhKGkrcj49ZS5sZW5ndGh8fGk+PXQubGVuZ3RoKTsrK2kpZVtpK3JdPXRbaV07cmV0dXJuIGl9ZnVuY3Rpb24gSyh0LGUpe3JldHVybiB0IGluc3RhbmNlb2YgZXx8bnVsbCE9dCYmbnVsbCE9dC5jb25zdHJ1Y3RvciYmbnVsbCE9dC5jb25zdHJ1Y3Rvci5uYW1lJiZ0LmNvbnN0cnVjdG9yLm5hbWU9PT1lLm5hbWV9ZnVuY3Rpb24gWCh0KXtyZXR1cm4gdCE9dH1jb25zdCBKPWZ1bmN0aW9uKCl7Y29uc3QgdD1cIjAxMjM0NTY3ODlhYmNkZWZcIixlPW5ldyBBcnJheSgyNTYpO2ZvcihsZXQgcj0wO3I8MTY7KytyKXtjb25zdCBuPTE2KnI7Zm9yKGxldCBpPTA7aTwxNjsrK2kpZVtuK2ldPXRbcl0rdFtpXX1yZXR1cm4gZX0oKTtmdW5jdGlvbiBaKHQpe3JldHVyblwidW5kZWZpbmVkXCI9PXR5cGVvZiBCaWdJbnQ/UTp0fWZ1bmN0aW9uIFEoKXt0aHJvdyBuZXcgRXJyb3IoXCJCaWdJbnQgbm90IHN1cHBvcnRlZFwiKX19LDE0MToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7ZS5CaWdOdW1iZXI9cig2NikuQmlnTnVtYmVyLGUuQ29tbWVudGVkPXIoMjApLGUuRGlhZ25vc2U9cig2OTQpLGUuRGVjb2Rlcj1yKDc3NCksZS5FbmNvZGVyPXIoNjY2KSxlLlNpbXBsZT1yKDMyKSxlLlRhZ2dlZD1yKDc4NSksZS5NYXA9cig3MCksZS5VST1lLkNvbW1lbnRlZC5jb21tZW50LGUuZkk9ZS5EZWNvZGVyLmRlY29kZUFsbCxlLmg4PWUuRGVjb2Rlci5kZWNvZGVGaXJzdCxlLmNjPWUuRGVjb2Rlci5kZWNvZGVBbGxTeW5jLGUuJHU9ZS5EZWNvZGVyLmRlY29kZUZpcnN0U3luYyxlLk09ZS5EaWFnbm9zZS5kaWFnbm9zZSxlLmN2PWUuRW5jb2Rlci5lbmNvZGUsZS5OMj1lLkVuY29kZXIuZW5jb2RlQ2Fub25pY2FsLGUuVEc9ZS5FbmNvZGVyLmVuY29kZU9uZSxlLldSPWUuRW5jb2Rlci5lbmNvZGVBc3luYyxlLkp4PWUuRGVjb2Rlci5kZWNvZGVGaXJzdFN5bmMsZS53dz17ZGVjb2RlOmUuRGVjb2Rlci5kZWNvZGVGaXJzdFN5bmMsZW5jb2RlOmUuRW5jb2Rlci5lbmNvZGUsYnVmZmVyOiEwLG5hbWU6XCJjYm9yXCJ9LGUudmM9ITB9LDIwOih0LGUscik9PntcInVzZSBzdHJpY3RcIjtjb25zdCBuPXIoODMwKSxpPXIoODczKSxvPXIoNzc0KSxzPXIoMjAyKSx7TVQ6YSxOVU1CWVRFUzp1LFNZTVM6bH09cig2Nikse0J1ZmZlcjpjfT1yKDc2NCk7ZnVuY3Rpb24gZih0KXtyZXR1cm4gdD4xP1wic1wiOlwiXCJ9Y2xhc3MgaCBleHRlbmRzIG4uVHJhbnNmb3Jte2NvbnN0cnVjdG9yKHQ9e30pe2NvbnN0e2RlcHRoOmU9MSxtYXhfZGVwdGg6cj0xMCxub19zdW1tYXJ5Om49ITEsdGFnczppPXt9LGJpZ2ludDphLHByZWZlcldlYjp1LGVuY29kaW5nOmwsLi4uY309dDtzdXBlcih7Li4uYyxyZWFkYWJsZU9iamVjdE1vZGU6ITEsd3JpdGFibGVPYmplY3RNb2RlOiExfSksdGhpcy5kZXB0aD1lLHRoaXMubWF4X2RlcHRoPXIsdGhpcy5hbGw9bmV3IHMsaVsyNF18fChpWzI0XT10aGlzLl90YWdfMjQuYmluZCh0aGlzKSksdGhpcy5wYXJzZXI9bmV3IG8oe3RhZ3M6aSxtYXhfZGVwdGg6cixiaWdpbnQ6YSxwcmVmZXJXZWI6dSxlbmNvZGluZzpsfSksdGhpcy5wYXJzZXIub24oXCJ2YWx1ZVwiLHRoaXMuX29uX3ZhbHVlLmJpbmQodGhpcykpLHRoaXMucGFyc2VyLm9uKFwic3RhcnRcIix0aGlzLl9vbl9zdGFydC5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcInN0YXJ0LXN0cmluZ1wiLHRoaXMuX29uX3N0YXJ0X3N0cmluZy5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcInN0b3BcIix0aGlzLl9vbl9zdG9wLmJpbmQodGhpcykpLHRoaXMucGFyc2VyLm9uKFwibW9yZS1ieXRlc1wiLHRoaXMuX29uX21vcmUuYmluZCh0aGlzKSksdGhpcy5wYXJzZXIub24oXCJlcnJvclwiLHRoaXMuX29uX2Vycm9yLmJpbmQodGhpcykpLG58fHRoaXMucGFyc2VyLm9uKFwiZGF0YVwiLHRoaXMuX29uX2RhdGEuYmluZCh0aGlzKSksdGhpcy5wYXJzZXIuYnMub24oXCJyZWFkXCIsdGhpcy5fb25fcmVhZC5iaW5kKHRoaXMpKX1fdGFnXzI0KHQpe2NvbnN0IGU9bmV3IGgoe2RlcHRoOnRoaXMuZGVwdGgrMSxub19zdW1tYXJ5OiEwfSk7ZS5vbihcImRhdGFcIiwodD0+dGhpcy5wdXNoKHQpKSksZS5vbihcImVycm9yXCIsKHQ9PnRoaXMuZW1pdChcImVycm9yXCIsdCkpKSxlLmVuZCh0KX1fdHJhbnNmb3JtKHQsZSxyKXt0aGlzLnBhcnNlci53cml0ZSh0LGUscil9X2ZsdXNoKHQpe3JldHVybiB0aGlzLnBhcnNlci5fZmx1c2godCl9c3RhdGljIGNvbW1lbnQodCxlPXt9LHI9bnVsbCl7aWYobnVsbD09dCl0aHJvdyBuZXcgRXJyb3IoXCJpbnB1dCByZXF1aXJlZFwiKTsoe29wdGlvbnM6ZSxjYjpyfT1mdW5jdGlvbih0LGUpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZVwiZnVuY3Rpb25cIjpyZXR1cm57b3B0aW9uczp7fSxjYjp0fTtjYXNlXCJzdHJpbmdcIjpyZXR1cm57b3B0aW9uczp7ZW5jb2Rpbmc6dH0sY2I6ZX07Y2FzZVwibnVtYmVyXCI6cmV0dXJue29wdGlvbnM6e21heF9kZXB0aDp0fSxjYjplfTtjYXNlXCJvYmplY3RcIjpyZXR1cm57b3B0aW9uczp0fHx7fSxjYjplfTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIG9wdGlvbiB0eXBlXCIpfX0oZSxyKSk7Y29uc3Qgbj1uZXcgcyx7ZW5jb2Rpbmc6bz1cImhleFwiLC4uLmF9PWUsdT1uZXcgaChhKTtsZXQgbD1udWxsO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHI/KHUub24oXCJlbmRcIiwoKCk9PntyKG51bGwsbi50b1N0cmluZyhcInV0ZjhcIikpfSkpLHUub24oXCJlcnJvclwiLHIpKTpsPW5ldyBQcm9taXNlKCgodCxlKT0+e3Uub24oXCJlbmRcIiwoKCk9Pnt0KG4udG9TdHJpbmcoXCJ1dGY4XCIpKX0pKSx1Lm9uKFwiZXJyb3JcIixlKX0pKSx1LnBpcGUobiksaS5ndWVzc0VuY29kaW5nKHQsbykucGlwZSh1KSxsfV9vbl9lcnJvcih0KXt0aGlzLnB1c2goXCJFUlJPUjogXCIpLHRoaXMucHVzaCh0LnRvU3RyaW5nKCkpLHRoaXMucHVzaChcIlxcblwiKX1fb25fcmVhZCh0KXt0aGlzLmFsbC53cml0ZSh0KTtjb25zdCBlPXQudG9TdHJpbmcoXCJoZXhcIik7dGhpcy5wdXNoKG5ldyBBcnJheSh0aGlzLmRlcHRoKzEpLmpvaW4oXCIgIFwiKSksdGhpcy5wdXNoKGUpO2xldCByPTIqKHRoaXMubWF4X2RlcHRoLXRoaXMuZGVwdGgpLWUubGVuZ3RoO3JldHVybiByPDEmJihyPTEpLHRoaXMucHVzaChuZXcgQXJyYXkocisxKS5qb2luKFwiIFwiKSksdGhpcy5wdXNoKFwiLS0gXCIpfV9vbl9tb3JlKHQsZSxyLG4pe2xldCBpPVwiXCI7c3dpdGNoKHRoaXMuZGVwdGgrKyx0KXtjYXNlIGEuUE9TX0lOVDppPVwiUG9zaXRpdmUgbnVtYmVyLFwiO2JyZWFrO2Nhc2UgYS5ORUdfSU5UOmk9XCJOZWdhdGl2ZSBudW1iZXIsXCI7YnJlYWs7Y2FzZSBhLkFSUkFZOmk9XCJBcnJheSwgbGVuZ3RoXCI7YnJlYWs7Y2FzZSBhLk1BUDppPVwiTWFwLCBjb3VudFwiO2JyZWFrO2Nhc2UgYS5CWVRFX1NUUklORzppPVwiQnl0ZXMsIGxlbmd0aFwiO2JyZWFrO2Nhc2UgYS5VVEY4X1NUUklORzppPVwiU3RyaW5nLCBsZW5ndGhcIjticmVhaztjYXNlIGEuU0lNUExFX0ZMT0FUOmk9MT09PWU/XCJTaW1wbGUgdmFsdWUsXCI6XCJGbG9hdCxcIn1yZXR1cm4gdGhpcy5wdXNoKGkrXCIgbmV4dCBcIitlK1wiIGJ5dGVcIitmKGUpK1wiXFxuXCIpfV9vbl9zdGFydF9zdHJpbmcodCxlLHIsbil7bGV0IGk9XCJcIjtzd2l0Y2godGhpcy5kZXB0aCsrLHQpe2Nhc2UgYS5CWVRFX1NUUklORzppPVwiQnl0ZXMsIGxlbmd0aDogXCIrZTticmVhaztjYXNlIGEuVVRGOF9TVFJJTkc6aT1cIlN0cmluZywgbGVuZ3RoOiBcIitlLnRvU3RyaW5nKCl9cmV0dXJuIHRoaXMucHVzaChpK1wiXFxuXCIpfV9vbl9zdGFydCh0LGUscixuKXtzd2l0Y2godGhpcy5kZXB0aCsrLHIpe2Nhc2UgYS5BUlJBWTp0aGlzLnB1c2goYFske259XSwgYCk7YnJlYWs7Y2FzZSBhLk1BUDpuJTI/dGhpcy5wdXNoKGB7VmFsOiR7TWF0aC5mbG9vcihuLzIpfX0sIGApOnRoaXMucHVzaChge0tleToke01hdGguZmxvb3Iobi8yKX19LCBgKX1zd2l0Y2godCl7Y2FzZSBhLlRBRzp0aGlzLnB1c2goYFRhZyAjJHtlfWApLDI0PT09ZSYmdGhpcy5wdXNoKFwiIEVuY29kZWQgQ0JPUiBkYXRhIGl0ZW1cIik7YnJlYWs7Y2FzZSBhLkFSUkFZOmU9PT1sLlNUUkVBTT90aGlzLnB1c2goXCJBcnJheSAoc3RyZWFtaW5nKVwiKTp0aGlzLnB1c2goYEFycmF5LCAke2V9IGl0ZW0ke2YoZSl9YCk7YnJlYWs7Y2FzZSBhLk1BUDplPT09bC5TVFJFQU0/dGhpcy5wdXNoKFwiTWFwIChzdHJlYW1pbmcpXCIpOnRoaXMucHVzaChgTWFwLCAke2V9IHBhaXIke2YoZSl9YCk7YnJlYWs7Y2FzZSBhLkJZVEVfU1RSSU5HOnRoaXMucHVzaChcIkJ5dGVzIChzdHJlYW1pbmcpXCIpO2JyZWFrO2Nhc2UgYS5VVEY4X1NUUklORzp0aGlzLnB1c2goXCJTdHJpbmcgKHN0cmVhbWluZylcIil9cmV0dXJuIHRoaXMucHVzaChcIlxcblwiKX1fb25fc3RvcCh0KXtyZXR1cm4gdGhpcy5kZXB0aC0tfV9vbl92YWx1ZSh0LGUscixuKXtpZih0IT09bC5CUkVBSylzd2l0Y2goZSl7Y2FzZSBhLkFSUkFZOnRoaXMucHVzaChgWyR7cn1dLCBgKTticmVhaztjYXNlIGEuTUFQOnIlMj90aGlzLnB1c2goYHtWYWw6JHtNYXRoLmZsb29yKHIvMil9fSwgYCk6dGhpcy5wdXNoKGB7S2V5OiR7TWF0aC5mbG9vcihyLzIpfX0sIGApfWNvbnN0IG89aS5jYm9yVmFsdWVUb1N0cmluZyh0LC0xLzApO3N3aXRjaChcInN0cmluZ1wiPT10eXBlb2YgdHx8Yy5pc0J1ZmZlcih0KT8odC5sZW5ndGg+MCYmKHRoaXMucHVzaChvKSx0aGlzLnB1c2goXCJcXG5cIikpLHRoaXMuZGVwdGgtLSk6KHRoaXMucHVzaChvKSx0aGlzLnB1c2goXCJcXG5cIikpLG4pe2Nhc2UgdS5PTkU6Y2FzZSB1LlRXTzpjYXNlIHUuRk9VUjpjYXNlIHUuRUlHSFQ6dGhpcy5kZXB0aC0tfX1fb25fZGF0YSgpe3JldHVybiB0aGlzLnB1c2goXCIweFwiKSx0aGlzLnB1c2godGhpcy5hbGwucmVhZCgpLnRvU3RyaW5nKFwiaGV4XCIpKSx0aGlzLnB1c2goXCJcXG5cIil9fXQuZXhwb3J0cz1ofSw2NjoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7bGV0IG49bnVsbDt0cnl7bj1yKDkzNykuQmlnTnVtYmVyfWNhdGNoKHQpe31pZihlLkJpZ051bWJlcj1uLGUuTVQ9e1BPU19JTlQ6MCxORUdfSU5UOjEsQllURV9TVFJJTkc6MixVVEY4X1NUUklORzozLEFSUkFZOjQsTUFQOjUsVEFHOjYsU0lNUExFX0ZMT0FUOjd9LGUuVEFHPXtEQVRFX1NUUklORzowLERBVEVfRVBPQ0g6MSxQT1NfQklHSU5UOjIsTkVHX0JJR0lOVDozLERFQ0lNQUxfRlJBQzo0LEJJR0ZMT0FUOjUsQkFTRTY0VVJMX0VYUEVDVEVEOjIxLEJBU0U2NF9FWFBFQ1RFRDoyMixCQVNFMTZfRVhQRUNURUQ6MjMsQ0JPUjoyNCxVUkk6MzIsQkFTRTY0VVJMOjMzLEJBU0U2NDozNCxSRUdFWFA6MzUsTUlNRTozNixTRVQ6MjU4fSxlLk5VTUJZVEVTPXtaRVJPOjAsT05FOjI0LFRXTzoyNSxGT1VSOjI2LEVJR0hUOjI3LElOREVGSU5JVEU6MzF9LGUuU0lNUExFPXtGQUxTRToyMCxUUlVFOjIxLE5VTEw6MjIsVU5ERUZJTkVEOjIzfSxlLlNZTVM9e05VTEw6U3ltYm9sLmZvcihcImdpdGh1Yi5jb20vaGlsZGpqL25vZGUtY2Jvci9udWxsXCIpLFVOREVGSU5FRDpTeW1ib2wuZm9yKFwiZ2l0aHViLmNvbS9oaWxkamovbm9kZS1jYm9yL3VuZGVmXCIpLFBBUkVOVDpTeW1ib2wuZm9yKFwiZ2l0aHViLmNvbS9oaWxkamovbm9kZS1jYm9yL3BhcmVudFwiKSxCUkVBSzpTeW1ib2wuZm9yKFwiZ2l0aHViLmNvbS9oaWxkamovbm9kZS1jYm9yL2JyZWFrXCIpLFNUUkVBTTpTeW1ib2wuZm9yKFwiZ2l0aHViLmNvbS9oaWxkamovbm9kZS1jYm9yL3N0cmVhbVwiKX0sZS5TSElGVDMyPTQyOTQ5NjcyOTYsZS5CST17TUlOVVNfT05FOkJpZ0ludCgtMSksTkVHX01BWDpCaWdJbnQoLTEpLUJpZ0ludChOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiksTUFYSU5UMzI6QmlnSW50KFwiMHhmZmZmZmZmZlwiKSxNQVhJTlQ2NDpCaWdJbnQoXCIweGZmZmZmZmZmZmZmZmZmZmZcIiksU0hJRlQzMjpCaWdJbnQoZS5TSElGVDMyKX0sZS5CaWdOdW1iZXIpe2NvbnN0IHQ9bmV3IGUuQmlnTnVtYmVyKC0xKTtlLkJOPXtNSU5VU19PTkU6dCxORUdfTUFYOnQubWludXMobmV3IGUuQmlnTnVtYmVyKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLnRvU3RyaW5nKDE2KSwxNikpLFRXTzpuZXcgZS5CaWdOdW1iZXIoMiksTUFYSU5UOm5ldyBlLkJpZ051bWJlcihcIjB4MjAwMDAwMDAwMDAwMDBcIiksTUFYSU5UMzI6bmV3IGUuQmlnTnVtYmVyKDQyOTQ5NjcyOTUpLE1BWElOVDY0Om5ldyBlLkJpZ051bWJlcihcIjB4ZmZmZmZmZmZmZmZmZmZmZlwiKSxTSElGVDMyOm5ldyBlLkJpZ051bWJlcihlLlNISUZUMzIpfX19LDc3NDoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7Y29uc3Qgbj1yKDcxKSxpPXIoNzg1KSxvPXIoMzIpLHM9cig4NzMpLGE9cigyMDIpLHU9cig2Nikse01UOmwsTlVNQllURVM6YyxTWU1TOmYsQkk6aH09dSx7QnVmZmVyOnB9PXIoNzY0KSxkPVN5bWJvbChcImNvdW50XCIpLHk9U3ltYm9sKFwibWFqb3IgdHlwZVwiKSxnPVN5bWJvbChcImVycm9yXCIpLGI9U3ltYm9sKFwibm90IGZvdW5kXCIpO2Z1bmN0aW9uIG0odCxlLHIpe2NvbnN0IG49W107cmV0dXJuIG5bZF09cixuW2YuUEFSRU5UXT10LG5beV09ZSxufWZ1bmN0aW9uIHcodCxlKXtjb25zdCByPW5ldyBhO3JldHVybiByW2RdPS0xLHJbZi5QQVJFTlRdPXQsclt5XT1lLHJ9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gcy5idWZmZXJUb0JpZ0ludCh0KX1mdW5jdGlvbiBFKHQpe3JldHVybiBoLk1JTlVTX09ORS1zLmJ1ZmZlclRvQmlnSW50KHQpfWNsYXNzIHYgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKGBVbmV4cGVjdGVkIGRhdGE6IDB4JHt0LnRvU3RyaW5nKDE2KX1gKSx0aGlzLm5hbWU9XCJVbmV4cGVjdGVkRGF0YUVycm9yXCIsdGhpcy5ieXRlPXQsdGhpcy52YWx1ZT1lfX1mdW5jdGlvbiBTKHQsZSl7c3dpdGNoKHR5cGVvZiB0KXtjYXNlXCJmdW5jdGlvblwiOnJldHVybntvcHRpb25zOnt9LGNiOnR9O2Nhc2VcInN0cmluZ1wiOnJldHVybntvcHRpb25zOntlbmNvZGluZzp0fSxjYjplfTtjYXNlXCJvYmplY3RcIjpyZXR1cm57b3B0aW9uczp0fHx7fSxjYjplfTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIG9wdGlvbiB0eXBlXCIpfX1jbGFzcyBBIGV4dGVuZHMgbntjb25zdHJ1Y3Rvcih0PXt9KXtjb25zdHt0YWdzOmU9e30sbWF4X2RlcHRoOnI9LTEsYmlnaW50Om49ITAscHJlZmVyV2ViOmk9ITEscmVxdWlyZWQ6bz0hMSxlbmNvZGluZzpzPVwiaGV4XCIsZXh0ZW5kZWRSZXN1bHRzOnU9ITEsLi4ubH09dDtzdXBlcih7ZGVmYXVsdEVuY29kaW5nOnMsLi4ubH0pLHRoaXMucnVubmluZz0hMCx0aGlzLm1heF9kZXB0aD1yLHRoaXMudGFncz1lLHRoaXMucHJlZmVyV2ViPWksdGhpcy5leHRlbmRlZFJlc3VsdHM9dSx0aGlzLmJpZ2ludD1uLHRoaXMucmVxdWlyZWQ9byx1JiYodGhpcy5icy5vbihcInJlYWRcIix0aGlzLl9vblJlYWQuYmluZCh0aGlzKSksdGhpcy52YWx1ZUJ5dGVzPW5ldyBhKSxuJiYobnVsbD09dGhpcy50YWdzWzJdJiYodGhpcy50YWdzWzJdPV8pLG51bGw9PXRoaXMudGFnc1szXSYmKHRoaXMudGFnc1szXT1FKSl9c3RhdGljIG51bGxjaGVjayh0KXtzd2l0Y2godCl7Y2FzZSBmLk5VTEw6cmV0dXJuIG51bGw7Y2FzZSBmLlVOREVGSU5FRDpyZXR1cm47Y2FzZSBiOnRocm93IG5ldyBFcnJvcihcIlZhbHVlIG5vdCBmb3VuZFwiKTtkZWZhdWx0OnJldHVybiB0fX1zdGF0aWMgZGVjb2RlRmlyc3RTeW5jKHQsZT17fSl7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW5wdXQgcmVxdWlyZWRcIik7KHtvcHRpb25zOmV9PVMoZSkpO2NvbnN0e2VuY29kaW5nOnI9XCJoZXhcIiwuLi5ufT1lLGk9bmV3IEEobiksbz1zLmd1ZXNzRW5jb2RpbmcodCxyKSxhPWkuX3BhcnNlKCk7bGV0IHU9YS5uZXh0KCk7Zm9yKDshdS5kb25lOyl7Y29uc3QgdD1vLnJlYWQodS52YWx1ZSk7aWYobnVsbD09dHx8dC5sZW5ndGghPT11LnZhbHVlKXRocm93IG5ldyBFcnJvcihcIkluc3VmZmljaWVudCBkYXRhXCIpO2kuZXh0ZW5kZWRSZXN1bHRzJiZpLnZhbHVlQnl0ZXMud3JpdGUodCksdT1hLm5leHQodCl9bGV0IGw9bnVsbDtpZihpLmV4dGVuZGVkUmVzdWx0cylsPXUudmFsdWUsbC51bnVzZWQ9by5yZWFkKCk7ZWxzZSBpZihsPUEubnVsbGNoZWNrKHUudmFsdWUpLG8ubGVuZ3RoPjApe2NvbnN0IHQ9by5yZWFkKDEpO3Rocm93IG8udW5zaGlmdCh0KSxuZXcgdih0WzBdLGwpfXJldHVybiBsfXN0YXRpYyBkZWNvZGVBbGxTeW5jKHQsZT17fSl7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW5wdXQgcmVxdWlyZWRcIik7KHtvcHRpb25zOmV9PVMoZSkpO2NvbnN0e2VuY29kaW5nOnI9XCJoZXhcIiwuLi5ufT1lLGk9bmV3IEEobiksbz1zLmd1ZXNzRW5jb2RpbmcodCxyKSxhPVtdO2Zvcig7by5sZW5ndGg+MDspe2NvbnN0IHQ9aS5fcGFyc2UoKTtsZXQgZT10Lm5leHQoKTtmb3IoOyFlLmRvbmU7KXtjb25zdCByPW8ucmVhZChlLnZhbHVlKTtpZihudWxsPT1yfHxyLmxlbmd0aCE9PWUudmFsdWUpdGhyb3cgbmV3IEVycm9yKFwiSW5zdWZmaWNpZW50IGRhdGFcIik7aS5leHRlbmRlZFJlc3VsdHMmJmkudmFsdWVCeXRlcy53cml0ZShyKSxlPXQubmV4dChyKX1hLnB1c2goQS5udWxsY2hlY2soZS52YWx1ZSkpfXJldHVybiBhfXN0YXRpYyBkZWNvZGVGaXJzdCh0LGU9e30scj1udWxsKXtpZihudWxsPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnB1dCByZXF1aXJlZFwiKTsoe29wdGlvbnM6ZSxjYjpyfT1TKGUscikpO2NvbnN0e2VuY29kaW5nOm49XCJoZXhcIixyZXF1aXJlZDppPSExLC4uLm99PWUsYT1uZXcgQShvKTtsZXQgdT1iO2NvbnN0IGw9cy5ndWVzc0VuY29kaW5nKHQsbiksYz1uZXcgUHJvbWlzZSgoKHQsZSk9PnthLm9uKFwiZGF0YVwiLCh0PT57dT1BLm51bGxjaGVjayh0KSxhLmNsb3NlKCl9KSksYS5vbmNlKFwiZXJyb3JcIiwocj0+YS5leHRlbmRlZFJlc3VsdHMmJnIgaW5zdGFuY2VvZiB2Pyh1LnVudXNlZD1hLmJzLnNsaWNlKCksdCh1KSk6KHUhPT1iJiYoci52YWx1ZT11KSx1PWcsYS5jbG9zZSgpLGUocikpKSksYS5vbmNlKFwiZW5kXCIsKCgpPT57c3dpdGNoKHUpe2Nhc2UgYjpyZXR1cm4gaT9lKG5ldyBFcnJvcihcIk5vIENCT1IgZm91bmRcIikpOnQodSk7Y2FzZSBnOnJldHVybjtkZWZhdWx0OnJldHVybiB0KHUpfX0pKX0pKTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiByJiZjLnRoZW4oKHQ9PnIobnVsbCx0KSksciksbC5waXBlKGEpLGN9c3RhdGljIGRlY29kZUFsbCh0LGU9e30scj1udWxsKXtpZihudWxsPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnB1dCByZXF1aXJlZFwiKTsoe29wdGlvbnM6ZSxjYjpyfT1TKGUscikpO2NvbnN0e2VuY29kaW5nOm49XCJoZXhcIiwuLi5pfT1lLG89bmV3IEEoaSksYT1bXTtvLm9uKFwiZGF0YVwiLCh0PT5hLnB1c2goQS5udWxsY2hlY2sodCkpKSk7Y29uc3QgdT1uZXcgUHJvbWlzZSgoKHQsZSk9PntvLm9uKFwiZXJyb3JcIixlKSxvLm9uKFwiZW5kXCIsKCgpPT50KGEpKSl9KSk7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgciYmdS50aGVuKCh0PT5yKHZvaWQgMCx0KSksKHQ9PnIodCx2b2lkIDApKSkscy5ndWVzc0VuY29kaW5nKHQsbikucGlwZShvKSx1fWNsb3NlKCl7dGhpcy5ydW5uaW5nPSExLHRoaXMuX19mcmVzaD0hMH1fb25SZWFkKHQpe3RoaXMudmFsdWVCeXRlcy53cml0ZSh0KX0qX3BhcnNlKCl7bGV0IHQ9bnVsbCxlPTAscj1udWxsO2Zvcig7Oyl7aWYodGhpcy5tYXhfZGVwdGg+PTAmJmU+dGhpcy5tYXhfZGVwdGgpdGhyb3cgbmV3IEVycm9yKFwiTWF4aW11bSBkZXB0aCBcIit0aGlzLm1heF9kZXB0aCtcIiBleGNlZWRlZFwiKTtjb25zdFtuXT15aWVsZCAxO2lmKCF0aGlzLnJ1bm5pbmcpdGhyb3cgdGhpcy5icy51bnNoaWZ0KHAuZnJvbShbbl0pKSxuZXcgdihuKTtjb25zdCBnPW4+PjUsYj0zMSZuLF89bnVsbCE9dD90W3ldOnZvaWQgMCxFPW51bGwhPXQ/dC5sZW5ndGg6dm9pZCAwO3N3aXRjaChiKXtjYXNlIGMuT05FOnRoaXMuZW1pdChcIm1vcmUtYnl0ZXNcIixnLDEsXyxFKSxbcl09eWllbGQgMTticmVhaztjYXNlIGMuVFdPOmNhc2UgYy5GT1VSOmNhc2UgYy5FSUdIVDp7Y29uc3QgdD0xPDxiLTI0O3RoaXMuZW1pdChcIm1vcmUtYnl0ZXNcIixnLHQsXyxFKTtjb25zdCBlPXlpZWxkIHQ7cj1nPT09bC5TSU1QTEVfRkxPQVQ/ZTpzLnBhcnNlQ0JPUmludChiLGUsdGhpcy5iaWdpbnQpO2JyZWFrfWNhc2UgMjg6Y2FzZSAyOTpjYXNlIDMwOnRocm93IHRoaXMucnVubmluZz0hMSxuZXcgRXJyb3IoXCJBZGRpdGlvbmFsIGluZm8gbm90IGltcGxlbWVudGVkOiBcIitiKTtjYXNlIGMuSU5ERUZJTklURTpzd2l0Y2goZyl7Y2FzZSBsLlBPU19JTlQ6Y2FzZSBsLk5FR19JTlQ6Y2FzZSBsLlRBRzp0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaW5kZWZpbml0ZSBlbmNvZGluZyBmb3IgTVQgJHtnfWApfXI9LTE7YnJlYWs7ZGVmYXVsdDpyPWJ9c3dpdGNoKGcpe2Nhc2UgbC5QT1NfSU5UOmJyZWFrO2Nhc2UgbC5ORUdfSU5UOmlmKHI9PT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUilpZih0aGlzLmJpZ2ludClyPWguTkVHX01BWDtlbHNle2lmKCF1LkJpZ051bWJlcil0aHJvdyBuZXcgRXJyb3IoXCJObyBiaWdpbnQgYW5kIG5vIGJpZ251bWJlci5qc1wiKTtyPXUuQk4uTkVHX01BWH1lbHNlIHI9dS5CaWdOdW1iZXImJnIgaW5zdGFuY2VvZiB1LkJpZ051bWJlcj91LkJOLk1JTlVTX09ORS5taW51cyhyKTpcImJpZ2ludFwiPT10eXBlb2Ygcj9oLk1JTlVTX09ORS1yOi0xLXI7YnJlYWs7Y2FzZSBsLkJZVEVfU1RSSU5HOmNhc2UgbC5VVEY4X1NUUklORzpzd2l0Y2gocil7Y2FzZSAwOnRoaXMuZW1pdChcInN0YXJ0LXN0cmluZ1wiLGcscixfLEUpLHI9Zz09PWwuVVRGOF9TVFJJTkc/XCJcIjp0aGlzLnByZWZlcldlYj9uZXcgVWludDhBcnJheSgwKTpwLmFsbG9jVW5zYWZlKDApO2JyZWFrO2Nhc2UtMTp0aGlzLmVtaXQoXCJzdGFydFwiLGcsZi5TVFJFQU0sXyxFKSx0PXcodCxnKSxlKys7Y29udGludWU7ZGVmYXVsdDp0aGlzLmVtaXQoXCJzdGFydC1zdHJpbmdcIixnLHIsXyxFKSxyPXlpZWxkIHIsZz09PWwuVVRGOF9TVFJJTkc/cj1zLnV0Zjgocik6dGhpcy5wcmVmZXJXZWImJihyPW5ldyBVaW50OEFycmF5KHIuYnVmZmVyLHIuYnl0ZU9mZnNldCxyLmxlbmd0aCkpfWJyZWFrO2Nhc2UgbC5BUlJBWTpjYXNlIGwuTUFQOnN3aXRjaChyKXtjYXNlIDA6cj1nPT09bC5NQVA/e306W107YnJlYWs7Y2FzZS0xOnRoaXMuZW1pdChcInN0YXJ0XCIsZyxmLlNUUkVBTSxfLEUpLHQ9bSh0LGcsLTEpLGUrKztjb250aW51ZTtkZWZhdWx0OnRoaXMuZW1pdChcInN0YXJ0XCIsZyxyLF8sRSksdD1tKHQsZyxyKihnLTMpKSxlKys7Y29udGludWV9YnJlYWs7Y2FzZSBsLlRBRzp0aGlzLmVtaXQoXCJzdGFydFwiLGcscixfLEUpLHQ9bSh0LGcsMSksdC5wdXNoKHIpLGUrKztjb250aW51ZTtjYXNlIGwuU0lNUExFX0ZMT0FUOmlmKFwibnVtYmVyXCI9PXR5cGVvZiByKXtpZihiPT09Yy5PTkUmJnI8MzIpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHR3by1ieXRlIGVuY29kaW5nIG9mIHNpbXBsZSB2YWx1ZSAke3J9YCk7Y29uc3QgZT1udWxsIT10O3I9by5kZWNvZGUocixlLGUmJnRbZF08MCl9ZWxzZSByPXMucGFyc2VDQk9SZmxvYXQocil9dGhpcy5lbWl0KFwidmFsdWVcIixyLF8sRSxiKTtsZXQgUz0hMTtmb3IoO251bGwhPXQ7KXtzd2l0Y2goITEpe2Nhc2UgciE9PWYuQlJFQUs6dFtkXT0xO2JyZWFrO2Nhc2UhQXJyYXkuaXNBcnJheSh0KTp0LnB1c2gocik7YnJlYWs7Y2FzZSEodCBpbnN0YW5jZW9mIGEpOntjb25zdCBlPXRbeV07aWYobnVsbCE9ZSYmZSE9PWcpdGhyb3cgdGhpcy5ydW5uaW5nPSExLG5ldyBFcnJvcihcIkludmFsaWQgbWFqb3IgdHlwZSBpbiBpbmRlZmluaXRlIGVuY29kaW5nXCIpO3Qud3JpdGUocil9fWlmKDAhPS0tdFtkXSl7Uz0hMDticmVha31pZigtLWUsZGVsZXRlIHRbZF0sQXJyYXkuaXNBcnJheSh0KSlzd2l0Y2godFt5XSl7Y2FzZSBsLkFSUkFZOnI9dDticmVhaztjYXNlIGwuTUFQOntsZXQgZT0hMDtpZih0Lmxlbmd0aCUyIT0wKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbWFwIGxlbmd0aDogXCIrdC5sZW5ndGgpO2ZvcihsZXQgcj0wLG49dC5sZW5ndGg7cjxuO3IrPTIpaWYoXCJzdHJpbmdcIiE9dHlwZW9mIHRbcl18fFwiX19wcm90b19fXCI9PT10W3JdKXtlPSExO2JyZWFrfWlmKGUpe3I9e307Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSs9MilyW3RbZV1dPXRbZSsxXX1lbHNle3I9bmV3IE1hcDtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKz0yKXIuc2V0KHRbZV0sdFtlKzFdKX1icmVha31jYXNlIGwuVEFHOnI9bmV3IGkodFswXSx0WzFdKS5jb252ZXJ0KHRoaXMudGFncyl9ZWxzZSBpZih0IGluc3RhbmNlb2YgYSlzd2l0Y2godFt5XSl7Y2FzZSBsLkJZVEVfU1RSSU5HOnI9dC5zbGljZSgpLHRoaXMucHJlZmVyV2ViJiYocj1uZXcgVWludDhBcnJheShyLmJ1ZmZlcixyLmJ5dGVPZmZzZXQsci5sZW5ndGgpKTticmVhaztjYXNlIGwuVVRGOF9TVFJJTkc6cj10LnRvU3RyaW5nKFwidXRmLThcIil9dGhpcy5lbWl0KFwic3RvcFwiLHRbeV0pO2NvbnN0IG49dDt0PXRbZi5QQVJFTlRdLGRlbGV0ZSBuW2YuUEFSRU5UXSxkZWxldGUgblt5XX1pZighUyl7aWYodGhpcy5leHRlbmRlZFJlc3VsdHMpe2NvbnN0IHQ9dGhpcy52YWx1ZUJ5dGVzLnNsaWNlKCksZT17dmFsdWU6QS5udWxsY2hlY2sociksYnl0ZXM6dCxsZW5ndGg6dC5sZW5ndGh9O3JldHVybiB0aGlzLnZhbHVlQnl0ZXM9bmV3IGEsZX1yZXR1cm4gcn19fX1BLk5PVF9GT1VORD1iLHQuZXhwb3J0cz1BfSw2OTQ6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0IG49cig4MzApLGk9cig3NzQpLG89cig4NzMpLHM9cigyMDIpLHtNVDphLFNZTVM6dX09cig2Nik7Y2xhc3MgbCBleHRlbmRzIG4uVHJhbnNmb3Jte2NvbnN0cnVjdG9yKHQ9e30pe2NvbnN0e3NlcGFyYXRvcjplPVwiXFxuXCIsc3RyZWFtX2Vycm9yczpyPSExLHRhZ3M6bixtYXhfZGVwdGg6byxiaWdpbnQ6cyxwcmVmZXJXZWI6YSxlbmNvZGluZzp1LC4uLmx9PXQ7c3VwZXIoey4uLmwscmVhZGFibGVPYmplY3RNb2RlOiExLHdyaXRhYmxlT2JqZWN0TW9kZTohMX0pLHRoaXMuZmxvYXRfYnl0ZXM9LTEsdGhpcy5zZXBhcmF0b3I9ZSx0aGlzLnN0cmVhbV9lcnJvcnM9cix0aGlzLnBhcnNlcj1uZXcgaSh7dGFnczpuLG1heF9kZXB0aDpvLGJpZ2ludDpzLHByZWZlcldlYjphLGVuY29kaW5nOnV9KSx0aGlzLnBhcnNlci5vbihcIm1vcmUtYnl0ZXNcIix0aGlzLl9vbl9tb3JlLmJpbmQodGhpcykpLHRoaXMucGFyc2VyLm9uKFwidmFsdWVcIix0aGlzLl9vbl92YWx1ZS5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcInN0YXJ0XCIsdGhpcy5fb25fc3RhcnQuYmluZCh0aGlzKSksdGhpcy5wYXJzZXIub24oXCJzdG9wXCIsdGhpcy5fb25fc3RvcC5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcImRhdGFcIix0aGlzLl9vbl9kYXRhLmJpbmQodGhpcykpLHRoaXMucGFyc2VyLm9uKFwiZXJyb3JcIix0aGlzLl9vbl9lcnJvci5iaW5kKHRoaXMpKX1fdHJhbnNmb3JtKHQsZSxyKXtyZXR1cm4gdGhpcy5wYXJzZXIud3JpdGUodCxlLHIpfV9mbHVzaCh0KXtyZXR1cm4gdGhpcy5wYXJzZXIuX2ZsdXNoKChlPT50aGlzLnN0cmVhbV9lcnJvcnM/KGUmJnRoaXMuX29uX2Vycm9yKGUpLHQoKSk6dChlKSkpfXN0YXRpYyBkaWFnbm9zZSh0LGU9e30scj1udWxsKXtpZihudWxsPT10KXRocm93IG5ldyBFcnJvcihcImlucHV0IHJlcXVpcmVkXCIpOyh7b3B0aW9uczplLGNiOnJ9PWZ1bmN0aW9uKHQsZSl7c3dpdGNoKHR5cGVvZiB0KXtjYXNlXCJmdW5jdGlvblwiOnJldHVybntvcHRpb25zOnt9LGNiOnR9O2Nhc2VcInN0cmluZ1wiOnJldHVybntvcHRpb25zOntlbmNvZGluZzp0fSxjYjplfTtjYXNlXCJvYmplY3RcIjpyZXR1cm57b3B0aW9uczp0fHx7fSxjYjplfTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIG9wdGlvbiB0eXBlXCIpfX0oZSxyKSk7Y29uc3R7ZW5jb2Rpbmc6bj1cImhleFwiLC4uLml9PWUsYT1uZXcgcyx1PW5ldyBsKGkpO2xldCBjPW51bGw7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2Ygcj8odS5vbihcImVuZFwiLCgoKT0+cihudWxsLGEudG9TdHJpbmcoXCJ1dGY4XCIpKSkpLHUub24oXCJlcnJvclwiLHIpKTpjPW5ldyBQcm9taXNlKCgodCxlKT0+e3Uub24oXCJlbmRcIiwoKCk9PnQoYS50b1N0cmluZyhcInV0ZjhcIikpKSksdS5vbihcImVycm9yXCIsZSl9KSksdS5waXBlKGEpLG8uZ3Vlc3NFbmNvZGluZyh0LG4pLnBpcGUodSksY31fb25fZXJyb3IodCl7cmV0dXJuIHRoaXMuc3RyZWFtX2Vycm9ycz90aGlzLnB1c2godC50b1N0cmluZygpKTp0aGlzLmVtaXQoXCJlcnJvclwiLHQpfV9vbl9tb3JlKHQsZSxyLG4pe3Q9PT1hLlNJTVBMRV9GTE9BVCYmKHRoaXMuZmxvYXRfYnl0ZXM9ezI6MSw0OjIsODozfVtlXSl9X2ZvcmUodCxlKXtzd2l0Y2godCl7Y2FzZSBhLkJZVEVfU1RSSU5HOmNhc2UgYS5VVEY4X1NUUklORzpjYXNlIGEuQVJSQVk6ZT4wJiZ0aGlzLnB1c2goXCIsIFwiKTticmVhaztjYXNlIGEuTUFQOmU+MCYmKGUlMj90aGlzLnB1c2goXCI6IFwiKTp0aGlzLnB1c2goXCIsIFwiKSl9fV9vbl92YWx1ZSh0LGUscil7aWYodD09PXUuQlJFQUspcmV0dXJuO3RoaXMuX2ZvcmUoZSxyKTtjb25zdCBuPXRoaXMuZmxvYXRfYnl0ZXM7dGhpcy5mbG9hdF9ieXRlcz0tMSx0aGlzLnB1c2goby5jYm9yVmFsdWVUb1N0cmluZyh0LG4pKX1fb25fc3RhcnQodCxlLHIsbil7c3dpdGNoKHRoaXMuX2ZvcmUocixuKSx0KXtjYXNlIGEuVEFHOnRoaXMucHVzaChgJHtlfShgKTticmVhaztjYXNlIGEuQVJSQVk6dGhpcy5wdXNoKFwiW1wiKTticmVhaztjYXNlIGEuTUFQOnRoaXMucHVzaChcIntcIik7YnJlYWs7Y2FzZSBhLkJZVEVfU1RSSU5HOmNhc2UgYS5VVEY4X1NUUklORzp0aGlzLnB1c2goXCIoXCIpfWU9PT11LlNUUkVBTSYmdGhpcy5wdXNoKFwiXyBcIil9X29uX3N0b3AodCl7c3dpdGNoKHQpe2Nhc2UgYS5UQUc6dGhpcy5wdXNoKFwiKVwiKTticmVhaztjYXNlIGEuQVJSQVk6dGhpcy5wdXNoKFwiXVwiKTticmVhaztjYXNlIGEuTUFQOnRoaXMucHVzaChcIn1cIik7YnJlYWs7Y2FzZSBhLkJZVEVfU1RSSU5HOmNhc2UgYS5VVEY4X1NUUklORzp0aGlzLnB1c2goXCIpXCIpfX1fb25fZGF0YSgpe3RoaXMucHVzaCh0aGlzLnNlcGFyYXRvcil9fXQuZXhwb3J0cz1sfSw2NjY6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0IG49cig4MzApLGk9cigyMDIpLG89cig4NzMpLHM9cig2Nikse01UOmEsTlVNQllURVM6dSxTSElGVDMyOmwsU0lNUExFOmMsU1lNUzpmLFRBRzpoLEJJOnB9PXMse0J1ZmZlcjpkfT1yKDc2NCkseT1hLlNJTVBMRV9GTE9BVDw8NXx1LlRXTyxnPWEuU0lNUExFX0ZMT0FUPDw1fHUuRk9VUixiPWEuU0lNUExFX0ZMT0FUPDw1fHUuRUlHSFQsbT1hLlNJTVBMRV9GTE9BVDw8NXxjLlRSVUUsdz1hLlNJTVBMRV9GTE9BVDw8NXxjLkZBTFNFLF89YS5TSU1QTEVfRkxPQVQ8PDV8Yy5VTkRFRklORUQsRT1hLlNJTVBMRV9GTE9BVDw8NXxjLk5VTEwsdj1kLmZyb20oWzI1NV0pLFM9ZC5mcm9tKFwiZjk3ZTAwXCIsXCJoZXhcIiksQT1kLmZyb20oXCJmOWZjMDBcIixcImhleFwiKSxUPWQuZnJvbShcImY5N2MwMFwiLFwiaGV4XCIpLEk9ZC5mcm9tKFwiZjk4MDAwXCIsXCJoZXhcIik7Y2xhc3MgQiBleHRlbmRzIG4uVHJhbnNmb3Jte2NvbnN0cnVjdG9yKHQ9e30pe2NvbnN0e2Nhbm9uaWNhbDplPSExLGVuY29kZVVuZGVmaW5lZDpyLGRpc2FsbG93VW5kZWZpbmVkS2V5czpuPSExLGRhdGVUeXBlOm89XCJudW1iZXJcIixjb2xsYXBzZUJpZ0ludGVnZXJzOmE9ITEsZGV0ZWN0TG9vcHM6dT0hMSxvbWl0VW5kZWZpbmVkUHJvcGVydGllczpsPSExLGdlblR5cGVzOmM9W10sLi4uZn09dDtpZihzdXBlcih7Li4uZixyZWFkYWJsZU9iamVjdE1vZGU6ITEsd3JpdGFibGVPYmplY3RNb2RlOiEwfSksdGhpcy5jYW5vbmljYWw9ZSx0aGlzLmVuY29kZVVuZGVmaW5lZD1yLHRoaXMuZGlzYWxsb3dVbmRlZmluZWRLZXlzPW4sdGhpcy5kYXRlVHlwZT1mdW5jdGlvbih0KXtpZighdClyZXR1cm5cIm51bWJlclwiO3N3aXRjaCh0LnRvTG93ZXJDYXNlKCkpe2Nhc2VcIm51bWJlclwiOnJldHVyblwibnVtYmVyXCI7Y2FzZVwiZmxvYXRcIjpyZXR1cm5cImZsb2F0XCI7Y2FzZVwiaW50XCI6cmV0dXJuXCJpbnRcIjtjYXNlXCJzdHJpbmdcIjpyZXR1cm5cInN0cmluZ1wifXRocm93IG5ldyBUeXBlRXJyb3IoYGRhdGVUeXBlIGludmFsaWQsIGdvdCBcIiR7dH1cImApfShvKSx0aGlzLmNvbGxhcHNlQmlnSW50ZWdlcnM9ISF0aGlzLmNhbm9uaWNhbHx8YSx0aGlzLmRldGVjdExvb3BzPXUsXCJib29sZWFuXCI9PXR5cGVvZiB1KXUmJih0aGlzLmRldGVjdExvb3BzPW5ldyBXZWFrU2V0KTtlbHNlIGlmKCEodSBpbnN0YW5jZW9mIFdlYWtTZXQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJkZXRlY3RMb29wcyBtdXN0IGJlIGJvb2xlYW4gb3IgV2Vha1NldFwiKTtpZih0aGlzLm9taXRVbmRlZmluZWRQcm9wZXJ0aWVzPWwsdGhpcy5zZW1hbnRpY1R5cGVzPXtBcnJheTp0aGlzLl9wdXNoQXJyYXksRGF0ZTp0aGlzLl9wdXNoRGF0ZSxCdWZmZXI6dGhpcy5fcHVzaEJ1ZmZlcixbZC5uYW1lXTp0aGlzLl9wdXNoQnVmZmVyLE1hcDp0aGlzLl9wdXNoTWFwLE5vRmlsdGVyOnRoaXMuX3B1c2hOb0ZpbHRlcixbaS5uYW1lXTp0aGlzLl9wdXNoTm9GaWx0ZXIsUmVnRXhwOnRoaXMuX3B1c2hSZWdleHAsU2V0OnRoaXMuX3B1c2hTZXQsQXJyYXlCdWZmZXI6dGhpcy5fcHVzaEFycmF5QnVmZmVyLFVpbnQ4Q2xhbXBlZEFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LFVpbnQ4QXJyYXk6dGhpcy5fcHVzaFR5cGVkQXJyYXksVWludDE2QXJyYXk6dGhpcy5fcHVzaFR5cGVkQXJyYXksVWludDMyQXJyYXk6dGhpcy5fcHVzaFR5cGVkQXJyYXksSW50OEFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LEludDE2QXJyYXk6dGhpcy5fcHVzaFR5cGVkQXJyYXksSW50MzJBcnJheTp0aGlzLl9wdXNoVHlwZWRBcnJheSxGbG9hdDMyQXJyYXk6dGhpcy5fcHVzaFR5cGVkQXJyYXksRmxvYXQ2NEFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LFVSTDp0aGlzLl9wdXNoVVJMLEJvb2xlYW46dGhpcy5fcHVzaEJveGVkLE51bWJlcjp0aGlzLl9wdXNoQm94ZWQsU3RyaW5nOnRoaXMuX3B1c2hCb3hlZH0scy5CaWdOdW1iZXImJih0aGlzLnNlbWFudGljVHlwZXNbcy5CaWdOdW1iZXIubmFtZV09dGhpcy5fcHVzaEJpZ051bWJlciksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEJpZ1VpbnQ2NEFycmF5JiYodGhpcy5zZW1hbnRpY1R5cGVzW0JpZ1VpbnQ2NEFycmF5Lm5hbWVdPXRoaXMuX3B1c2hUeXBlZEFycmF5KSxcInVuZGVmaW5lZFwiIT10eXBlb2YgQmlnSW50NjRBcnJheSYmKHRoaXMuc2VtYW50aWNUeXBlc1tCaWdJbnQ2NEFycmF5Lm5hbWVdPXRoaXMuX3B1c2hUeXBlZEFycmF5KSxBcnJheS5pc0FycmF5KGMpKWZvcihsZXQgdD0wLGU9Yy5sZW5ndGg7dDxlO3QrPTIpdGhpcy5hZGRTZW1hbnRpY1R5cGUoY1t0XSxjW3QrMV0pO2Vsc2UgZm9yKGNvbnN0W3QsZV1vZiBPYmplY3QuZW50cmllcyhjKSl0aGlzLmFkZFNlbWFudGljVHlwZSh0LGUpfV90cmFuc2Zvcm0odCxlLHIpe3JldHVybiByKCExPT09dGhpcy5wdXNoQW55KHQpP25ldyBFcnJvcihcIlB1c2ggRXJyb3JcIik6dm9pZCAwKX1fZmx1c2godCl7cmV0dXJuIHQoKX1hZGRTZW1hbnRpY1R5cGUodCxlKXtjb25zdCByPVwic3RyaW5nXCI9PXR5cGVvZiB0P3Q6dC5uYW1lLG49dGhpcy5zZW1hbnRpY1R5cGVzW3JdO2lmKGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcImZ1biBtdXN0IGJlIG9mIHR5cGUgZnVuY3Rpb25cIik7dGhpcy5zZW1hbnRpY1R5cGVzW3JdPWV9ZWxzZSBuJiZkZWxldGUgdGhpcy5zZW1hbnRpY1R5cGVzW3JdO3JldHVybiBufV9wdXNoVUludDgodCl7Y29uc3QgZT1kLmFsbG9jVW5zYWZlKDEpO3JldHVybiBlLndyaXRlVUludDgodCwwKSx0aGlzLnB1c2goZSl9X3B1c2hVSW50MTZCRSh0KXtjb25zdCBlPWQuYWxsb2NVbnNhZmUoMik7cmV0dXJuIGUud3JpdGVVSW50MTZCRSh0LDApLHRoaXMucHVzaChlKX1fcHVzaFVJbnQzMkJFKHQpe2NvbnN0IGU9ZC5hbGxvY1Vuc2FmZSg0KTtyZXR1cm4gZS53cml0ZVVJbnQzMkJFKHQsMCksdGhpcy5wdXNoKGUpfV9wdXNoRmxvYXRCRSh0KXtjb25zdCBlPWQuYWxsb2NVbnNhZmUoNCk7cmV0dXJuIGUud3JpdGVGbG9hdEJFKHQsMCksdGhpcy5wdXNoKGUpfV9wdXNoRG91YmxlQkUodCl7Y29uc3QgZT1kLmFsbG9jVW5zYWZlKDgpO3JldHVybiBlLndyaXRlRG91YmxlQkUodCwwKSx0aGlzLnB1c2goZSl9X3B1c2hOYU4oKXtyZXR1cm4gdGhpcy5wdXNoKFMpfV9wdXNoSW5maW5pdHkodCl7Y29uc3QgZT10PDA/QTpUO3JldHVybiB0aGlzLnB1c2goZSl9X3B1c2hGbG9hdCh0KXtpZih0aGlzLmNhbm9uaWNhbCl7Y29uc3QgZT1kLmFsbG9jVW5zYWZlKDIpO2lmKG8ud3JpdGVIYWxmKGUsdCkpcmV0dXJuIHRoaXMuX3B1c2hVSW50OCh5KSYmdGhpcy5wdXNoKGUpfXJldHVybiBNYXRoLmZyb3VuZCh0KT09PXQ/dGhpcy5fcHVzaFVJbnQ4KGcpJiZ0aGlzLl9wdXNoRmxvYXRCRSh0KTp0aGlzLl9wdXNoVUludDgoYikmJnRoaXMuX3B1c2hEb3VibGVCRSh0KX1fcHVzaEludCh0LGUscil7Y29uc3Qgbj1lPDw1O3N3aXRjaCghMSl7Y2FzZSEodDwyNCk6cmV0dXJuIHRoaXMuX3B1c2hVSW50OChufHQpO2Nhc2UhKHQ8PTI1NSk6cmV0dXJuIHRoaXMuX3B1c2hVSW50OChufHUuT05FKSYmdGhpcy5fcHVzaFVJbnQ4KHQpO2Nhc2UhKHQ8PTY1NTM1KTpyZXR1cm4gdGhpcy5fcHVzaFVJbnQ4KG58dS5UV08pJiZ0aGlzLl9wdXNoVUludDE2QkUodCk7Y2FzZSEodDw9NDI5NDk2NzI5NSk6cmV0dXJuIHRoaXMuX3B1c2hVSW50OChufHUuRk9VUikmJnRoaXMuX3B1c2hVSW50MzJCRSh0KTtjYXNlISh0PD1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUik6cmV0dXJuIHRoaXMuX3B1c2hVSW50OChufHUuRUlHSFQpJiZ0aGlzLl9wdXNoVUludDMyQkUoTWF0aC5mbG9vcih0L2wpKSYmdGhpcy5fcHVzaFVJbnQzMkJFKHQlbCk7ZGVmYXVsdDpyZXR1cm4gZT09PWEuTkVHX0lOVD90aGlzLl9wdXNoRmxvYXQocik6dGhpcy5fcHVzaEZsb2F0KHQpfX1fcHVzaEludE51bSh0KXtyZXR1cm4gT2JqZWN0LmlzKHQsLTApP3RoaXMucHVzaChJKTp0PDA/dGhpcy5fcHVzaEludCgtdC0xLGEuTkVHX0lOVCx0KTp0aGlzLl9wdXNoSW50KHQsYS5QT1NfSU5UKX1fcHVzaE51bWJlcih0KXtzd2l0Y2goITEpe2Nhc2UhaXNOYU4odCk6cmV0dXJuIHRoaXMuX3B1c2hOYU4oKTtjYXNlIGlzRmluaXRlKHQpOnJldHVybiB0aGlzLl9wdXNoSW5maW5pdHkodCk7Y2FzZSBNYXRoLnJvdW5kKHQpIT09dDpyZXR1cm4gdGhpcy5fcHVzaEludE51bSh0KTtkZWZhdWx0OnJldHVybiB0aGlzLl9wdXNoRmxvYXQodCl9fV9wdXNoU3RyaW5nKHQpe2NvbnN0IGU9ZC5ieXRlTGVuZ3RoKHQsXCJ1dGY4XCIpO3JldHVybiB0aGlzLl9wdXNoSW50KGUsYS5VVEY4X1NUUklORykmJnRoaXMucHVzaCh0LFwidXRmOFwiKX1fcHVzaEJvb2xlYW4odCl7cmV0dXJuIHRoaXMuX3B1c2hVSW50OCh0P206dyl9X3B1c2hVbmRlZmluZWQodCl7c3dpdGNoKHR5cGVvZiB0aGlzLmVuY29kZVVuZGVmaW5lZCl7Y2FzZVwidW5kZWZpbmVkXCI6cmV0dXJuIHRoaXMuX3B1c2hVSW50OChfKTtjYXNlXCJmdW5jdGlvblwiOnJldHVybiB0aGlzLnB1c2hBbnkodGhpcy5lbmNvZGVVbmRlZmluZWQuY2FsbCh0aGlzLHQpKTtjYXNlXCJvYmplY3RcIjp7Y29uc3QgdD1vLmJ1ZmZlcmlzaFRvQnVmZmVyKHRoaXMuZW5jb2RlVW5kZWZpbmVkKTtpZih0KXJldHVybiB0aGlzLnB1c2godCl9fXJldHVybiB0aGlzLnB1c2hBbnkodGhpcy5lbmNvZGVVbmRlZmluZWQpfV9wdXNoTnVsbCh0KXtyZXR1cm4gdGhpcy5fcHVzaFVJbnQ4KEUpfV9wdXNoQXJyYXkodCxlLHIpe3I9e2luZGVmaW5pdGU6ITEsLi4ucn07Y29uc3Qgbj1lLmxlbmd0aDtpZihyLmluZGVmaW5pdGUpe2lmKCF0Ll9wdXNoVUludDgoYS5BUlJBWTw8NXx1LklOREVGSU5JVEUpKXJldHVybiExfWVsc2UgaWYoIXQuX3B1c2hJbnQobixhLkFSUkFZKSlyZXR1cm4hMTtmb3IobGV0IHI9MDtyPG47cisrKWlmKCF0LnB1c2hBbnkoZVtyXSkpcmV0dXJuITE7cmV0dXJuIShyLmluZGVmaW5pdGUmJiF0LnB1c2godikpfV9wdXNoVGFnKHQpe3JldHVybiB0aGlzLl9wdXNoSW50KHQsYS5UQUcpfV9wdXNoRGF0ZSh0LGUpe3N3aXRjaCh0LmRhdGVUeXBlKXtjYXNlXCJzdHJpbmdcIjpyZXR1cm4gdC5fcHVzaFRhZyhoLkRBVEVfU1RSSU5HKSYmdC5fcHVzaFN0cmluZyhlLnRvSVNPU3RyaW5nKCkpO2Nhc2VcImludFwiOmNhc2VcImludGVnZXJcIjpyZXR1cm4gdC5fcHVzaFRhZyhoLkRBVEVfRVBPQ0gpJiZ0Ll9wdXNoSW50TnVtKE1hdGgucm91bmQoZS8xZTMpKTtjYXNlXCJmbG9hdFwiOnJldHVybiB0Ll9wdXNoVGFnKGguREFURV9FUE9DSCkmJnQuX3B1c2hGbG9hdChlLzFlMyk7Y2FzZVwibnVtYmVyXCI6ZGVmYXVsdDpyZXR1cm4gdC5fcHVzaFRhZyhoLkRBVEVfRVBPQ0gpJiZ0LnB1c2hBbnkoZS8xZTMpfX1fcHVzaEJ1ZmZlcih0LGUpe3JldHVybiB0Ll9wdXNoSW50KGUubGVuZ3RoLGEuQllURV9TVFJJTkcpJiZ0LnB1c2goZSl9X3B1c2hOb0ZpbHRlcih0LGUpe3JldHVybiB0Ll9wdXNoQnVmZmVyKHQsZS5zbGljZSgpKX1fcHVzaFJlZ2V4cCh0LGUpe3JldHVybiB0Ll9wdXNoVGFnKGguUkVHRVhQKSYmdC5wdXNoQW55KGUuc291cmNlKX1fcHVzaFNldCh0LGUpe2lmKCF0Ll9wdXNoVGFnKGguU0VUKSlyZXR1cm4hMTtpZighdC5fcHVzaEludChlLnNpemUsYS5BUlJBWSkpcmV0dXJuITE7Zm9yKGNvbnN0IHIgb2YgZSlpZighdC5wdXNoQW55KHIpKXJldHVybiExO3JldHVybiEwfV9wdXNoVVJMKHQsZSl7cmV0dXJuIHQuX3B1c2hUYWcoaC5VUkkpJiZ0LnB1c2hBbnkoZS50b1N0cmluZygpKX1fcHVzaEJveGVkKHQsZSl7cmV0dXJuIHQuX3B1c2hBbnkoZS52YWx1ZU9mKCkpfV9wdXNoQmlnaW50KHQpe2xldCBlPWEuUE9TX0lOVCxyPWguUE9TX0JJR0lOVDtpZih0LmlzTmVnYXRpdmUoKSYmKHQ9dC5uZWdhdGVkKCkubWludXMoMSksZT1hLk5FR19JTlQscj1oLk5FR19CSUdJTlQpLHRoaXMuY29sbGFwc2VCaWdJbnRlZ2VycyYmdC5sdGUocy5CTi5NQVhJTlQ2NCkpcmV0dXJuIHQubHRlKHMuQk4uTUFYSU5UMzIpP3RoaXMuX3B1c2hJbnQodC50b051bWJlcigpLGUpOnRoaXMuX3B1c2hVSW50OChlPDw1fHUuRUlHSFQpJiZ0aGlzLl9wdXNoVUludDMyQkUodC5kaXZpZGVkVG9JbnRlZ2VyQnkocy5CTi5TSElGVDMyKS50b051bWJlcigpKSYmdGhpcy5fcHVzaFVJbnQzMkJFKHQubW9kKHMuQk4uU0hJRlQzMikudG9OdW1iZXIoKSk7bGV0IG49dC50b1N0cmluZygxNik7bi5sZW5ndGglMiYmKG49XCIwXCIrbik7Y29uc3QgaT1kLmZyb20obixcImhleFwiKTtyZXR1cm4gdGhpcy5fcHVzaFRhZyhyKSYmdGhpcy5fcHVzaEJ1ZmZlcih0aGlzLGkpfV9wdXNoSlNCaWdpbnQodCl7bGV0IGU9YS5QT1NfSU5ULHI9aC5QT1NfQklHSU5UO2lmKHQ8MCYmKHQ9LXQrcC5NSU5VU19PTkUsZT1hLk5FR19JTlQscj1oLk5FR19CSUdJTlQpLHRoaXMuY29sbGFwc2VCaWdJbnRlZ2VycyYmdDw9cC5NQVhJTlQ2NClyZXR1cm4gdDw9NDI5NDk2NzI5NT90aGlzLl9wdXNoSW50KE51bWJlcih0KSxlKTp0aGlzLl9wdXNoVUludDgoZTw8NXx1LkVJR0hUKSYmdGhpcy5fcHVzaFVJbnQzMkJFKE51bWJlcih0L3AuU0hJRlQzMikpJiZ0aGlzLl9wdXNoVUludDMyQkUoTnVtYmVyKHQlcC5TSElGVDMyKSk7bGV0IG49dC50b1N0cmluZygxNik7bi5sZW5ndGglMiYmKG49XCIwXCIrbik7Y29uc3QgaT1kLmZyb20obixcImhleFwiKTtyZXR1cm4gdGhpcy5fcHVzaFRhZyhyKSYmdGhpcy5fcHVzaEJ1ZmZlcih0aGlzLGkpfV9wdXNoQmlnTnVtYmVyKHQsZSl7aWYoZS5pc05hTigpKXJldHVybiB0Ll9wdXNoTmFOKCk7aWYoIWUuaXNGaW5pdGUoKSlyZXR1cm4gdC5fcHVzaEluZmluaXR5KGUuaXNOZWdhdGl2ZSgpPy0xLzA6MS8wKTtpZihlLmlzSW50ZWdlcigpKXJldHVybiB0Ll9wdXNoQmlnaW50KGUpO2lmKCF0Ll9wdXNoVGFnKGguREVDSU1BTF9GUkFDKXx8IXQuX3B1c2hJbnQoMixhLkFSUkFZKSlyZXR1cm4hMTtjb25zdCByPWUuZGVjaW1hbFBsYWNlcygpLG49ZS5zaGlmdGVkQnkocik7cmV0dXJuISF0Ll9wdXNoSW50TnVtKC1yKSYmKG4uYWJzKCkuaXNMZXNzVGhhbihzLkJOLk1BWElOVCk/dC5fcHVzaEludE51bShuLnRvTnVtYmVyKCkpOnQuX3B1c2hCaWdpbnQobikpfV9wdXNoTWFwKHQsZSxyKXtyPXtpbmRlZmluaXRlOiExLC4uLnJ9O2xldCBuPVsuLi5lLmVudHJpZXMoKV07aWYodC5vbWl0VW5kZWZpbmVkUHJvcGVydGllcyYmKG49bi5maWx0ZXIoKChbdCxlXSk9PnZvaWQgMCE9PWUpKSksci5pbmRlZmluaXRlKXtpZighdC5fcHVzaFVJbnQ4KGEuTUFQPDw1fHUuSU5ERUZJTklURSkpcmV0dXJuITF9ZWxzZSBpZighdC5fcHVzaEludChuLmxlbmd0aCxhLk1BUCkpcmV0dXJuITE7aWYodC5jYW5vbmljYWwpe2NvbnN0IGU9bmV3IEIoe2dlblR5cGVzOnQuc2VtYW50aWNUeXBlcyxjYW5vbmljYWw6dC5jYW5vbmljYWwsZGV0ZWN0TG9vcHM6ISF0LmRldGVjdExvb3BzLGRhdGVUeXBlOnQuZGF0ZVR5cGUsZGlzYWxsb3dVbmRlZmluZWRLZXlzOnQuZGlzYWxsb3dVbmRlZmluZWRLZXlzLGNvbGxhcHNlQmlnSW50ZWdlcnM6dC5jb2xsYXBzZUJpZ0ludGVnZXJzfSkscj1uZXcgaSh7aGlnaFdhdGVyTWFyazp0LnJlYWRhYmxlSGlnaFdhdGVyTWFya30pO2UucGlwZShyKSxuLnNvcnQoKChbdF0sW25dKT0+e2UucHVzaEFueSh0KTtjb25zdCBpPXIucmVhZCgpO2UucHVzaEFueShuKTtjb25zdCBvPXIucmVhZCgpO3JldHVybiBpLmNvbXBhcmUobyl9KSk7Zm9yKGNvbnN0W2Uscl1vZiBuKXtpZih0LmRpc2FsbG93VW5kZWZpbmVkS2V5cyYmdm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIE1hcCBrZXk6IHVuZGVmaW5lZFwiKTtpZighdC5wdXNoQW55KGUpfHwhdC5wdXNoQW55KHIpKXJldHVybiExfX1lbHNlIGZvcihjb25zdFtlLHJdb2Ygbil7aWYodC5kaXNhbGxvd1VuZGVmaW5lZEtleXMmJnZvaWQgMD09PWUpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBNYXAga2V5OiB1bmRlZmluZWRcIik7aWYoIXQucHVzaEFueShlKXx8IXQucHVzaEFueShyKSlyZXR1cm4hMX1yZXR1cm4hKHIuaW5kZWZpbml0ZSYmIXQucHVzaCh2KSl9X3B1c2hUeXBlZEFycmF5KHQsZSl7bGV0IHI9NjQsbj1lLkJZVEVTX1BFUl9FTEVNRU5UO2NvbnN0e25hbWU6aX09ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gaS5zdGFydHNXaXRoKFwiRmxvYXRcIik/KHJ8PTE2LG4vPTIpOmkuaW5jbHVkZXMoXCJVXCIpfHwocnw9OCksKGkuaW5jbHVkZXMoXCJDbGFtcGVkXCIpfHwxIT09biYmIW8uaXNCaWdFbmRpYW4oKSkmJihyfD00KSxyfD17MTowLDI6MSw0OjIsODozfVtuXSwhIXQuX3B1c2hUYWcocikmJnQuX3B1c2hCdWZmZXIodCxkLmZyb20oZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCkpfV9wdXNoQXJyYXlCdWZmZXIodCxlKXtyZXR1cm4gdC5fcHVzaEJ1ZmZlcih0LGQuZnJvbShlKSl9cmVtb3ZlTG9vcERldGVjdG9ycygpe3JldHVybiEhdGhpcy5kZXRlY3RMb29wcyYmKHRoaXMuZGV0ZWN0TG9vcHM9bmV3IFdlYWtTZXQsITApfV9wdXNoT2JqZWN0KHQsZSl7aWYoIXQpcmV0dXJuIHRoaXMuX3B1c2hOdWxsKHQpO2lmKCEoZT17aW5kZWZpbml0ZTohMSxza2lwVHlwZXM6ITEsLi4uZX0pLmluZGVmaW5pdGUmJnRoaXMuZGV0ZWN0TG9vcHMpe2lmKHRoaXMuZGV0ZWN0TG9vcHMuaGFzKHQpKXRocm93IG5ldyBFcnJvcihcIkxvb3AgZGV0ZWN0ZWQgd2hpbGUgQ0JPUiBlbmNvZGluZy5cXG5DYWxsIHJlbW92ZUxvb3BEZXRlY3RvcnMgYmVmb3JlIHJlc3VtaW5nLlwiKTt0aGlzLmRldGVjdExvb3BzLmFkZCh0KX1pZighZS5za2lwVHlwZXMpe2NvbnN0IGU9dC5lbmNvZGVDQk9SO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUpcmV0dXJuIGUuY2FsbCh0LHRoaXMpO2NvbnN0IHI9dGhpcy5zZW1hbnRpY1R5cGVzW3QuY29uc3RydWN0b3IubmFtZV07aWYocilyZXR1cm4gci5jYWxsKHQsdGhpcyx0KX1jb25zdCByPU9iamVjdC5rZXlzKHQpLmZpbHRlcigoZT0+e2NvbnN0IHI9dHlwZW9mIHRbZV07cmV0dXJuXCJmdW5jdGlvblwiIT09ciYmKCF0aGlzLm9taXRVbmRlZmluZWRQcm9wZXJ0aWVzfHxcInVuZGVmaW5lZFwiIT09cil9KSksbj17fTtpZih0aGlzLmNhbm9uaWNhbCYmci5zb3J0KCgodCxlKT0+e2NvbnN0IHI9blt0XXx8KG5bdF09Qi5lbmNvZGUodCkpLGk9bltlXXx8KG5bZV09Qi5lbmNvZGUoZSkpO3JldHVybiByLmNvbXBhcmUoaSl9KSksZS5pbmRlZmluaXRlKXtpZighdGhpcy5fcHVzaFVJbnQ4KGEuTUFQPDw1fHUuSU5ERUZJTklURSkpcmV0dXJuITF9ZWxzZSBpZighdGhpcy5fcHVzaEludChyLmxlbmd0aCxhLk1BUCkpcmV0dXJuITE7bGV0IGk9bnVsbDtmb3IobGV0IGU9MCxvPXIubGVuZ3RoO2U8bztlKyspe2NvbnN0IG89cltlXTtpZih0aGlzLmNhbm9uaWNhbCYmKGk9bltvXSkpe2lmKCF0aGlzLnB1c2goaSkpcmV0dXJuITF9ZWxzZSBpZighdGhpcy5fcHVzaFN0cmluZyhvKSlyZXR1cm4hMTtpZighdGhpcy5wdXNoQW55KHRbb10pKXJldHVybiExfWlmKGUuaW5kZWZpbml0ZSl7aWYoIXRoaXMucHVzaCh2KSlyZXR1cm4hMX1lbHNlIHRoaXMuZGV0ZWN0TG9vcHMmJnRoaXMuZGV0ZWN0TG9vcHMuZGVsZXRlKHQpO3JldHVybiEwfXB1c2hBbnkodCl7c3dpdGNoKHR5cGVvZiB0KXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gdGhpcy5fcHVzaE51bWJlcih0KTtjYXNlXCJiaWdpbnRcIjpyZXR1cm4gdGhpcy5fcHVzaEpTQmlnaW50KHQpO2Nhc2VcInN0cmluZ1wiOnJldHVybiB0aGlzLl9wdXNoU3RyaW5nKHQpO2Nhc2VcImJvb2xlYW5cIjpyZXR1cm4gdGhpcy5fcHVzaEJvb2xlYW4odCk7Y2FzZVwidW5kZWZpbmVkXCI6cmV0dXJuIHRoaXMuX3B1c2hVbmRlZmluZWQodCk7Y2FzZVwib2JqZWN0XCI6cmV0dXJuIHRoaXMuX3B1c2hPYmplY3QodCk7Y2FzZVwic3ltYm9sXCI6c3dpdGNoKHQpe2Nhc2UgZi5OVUxMOnJldHVybiB0aGlzLl9wdXNoTnVsbChudWxsKTtjYXNlIGYuVU5ERUZJTkVEOnJldHVybiB0aGlzLl9wdXNoVW5kZWZpbmVkKHZvaWQgMCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHN5bWJvbDogXCIrdC50b1N0cmluZygpKX1kZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIlVua25vd24gdHlwZTogXCIrdHlwZW9mIHQrXCIsIFwiKyh0LnRvU3RyaW5nP3QudG9TdHJpbmcoKTpcIlwiKSl9fV9wdXNoQW55KHQpe3JldHVybiB0aGlzLnB1c2hBbnkodCl9X2VuY29kZUFsbCh0KXtjb25zdCBlPW5ldyBpKHtoaWdoV2F0ZXJNYXJrOnRoaXMucmVhZGFibGVIaWdoV2F0ZXJNYXJrfSk7dGhpcy5waXBlKGUpO2Zvcihjb25zdCBlIG9mIHQpdGhpcy5wdXNoQW55KGUpO3JldHVybiB0aGlzLmVuZCgpLGUucmVhZCgpfXN0YXRpYyBlbmNvZGVJbmRlZmluaXRlKHQsZSxyPXt9KXtpZihudWxsPT1lKXtpZihudWxsPT10aGlzKXRocm93IG5ldyBFcnJvcihcIk5vIG9iamVjdCB0byBlbmNvZGVcIik7ZT10aGlzfWNvbnN0e2NodW5rU2l6ZTpuPTQwOTZ9PXI7bGV0IGk9ITA7Y29uc3Qgcz10eXBlb2YgZTtsZXQgbD1udWxsO2lmKFwic3RyaW5nXCI9PT1zKXtpPWkmJnQuX3B1c2hVSW50OChhLlVURjhfU1RSSU5HPDw1fHUuSU5ERUZJTklURSk7bGV0IHI9MDtmb3IoO3I8ZS5sZW5ndGg7KXtjb25zdCBvPXIrbjtpPWkmJnQuX3B1c2hTdHJpbmcoZS5zbGljZShyLG8pKSxyPW99aT1pJiZ0LnB1c2godil9ZWxzZSBpZihsPW8uYnVmZmVyaXNoVG9CdWZmZXIoZSkpe2k9aSYmdC5fcHVzaFVJbnQ4KGEuQllURV9TVFJJTkc8PDV8dS5JTkRFRklOSVRFKTtsZXQgZT0wO2Zvcig7ZTxsLmxlbmd0aDspe2NvbnN0IHI9ZStuO2k9aSYmdC5fcHVzaEJ1ZmZlcih0LGwuc2xpY2UoZSxyKSksZT1yfWk9aSYmdC5wdXNoKHYpfWVsc2UgaWYoQXJyYXkuaXNBcnJheShlKSlpPWkmJnQuX3B1c2hBcnJheSh0LGUse2luZGVmaW5pdGU6ITB9KTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBNYXApaT1pJiZ0Ll9wdXNoTWFwKHQsZSx7aW5kZWZpbml0ZTohMH0pO2Vsc2V7aWYoXCJvYmplY3RcIiE9PXMpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbmRlZmluaXRlIGVuY29kaW5nXCIpO2k9aSYmdC5fcHVzaE9iamVjdChlLHtpbmRlZmluaXRlOiEwLHNraXBUeXBlczohMH0pfXJldHVybiBpfXN0YXRpYyBlbmNvZGUoLi4udCl7cmV0dXJuKG5ldyBCKS5fZW5jb2RlQWxsKHQpfXN0YXRpYyBlbmNvZGVDYW5vbmljYWwoLi4udCl7cmV0dXJuIG5ldyBCKHtjYW5vbmljYWw6ITB9KS5fZW5jb2RlQWxsKHQpfXN0YXRpYyBlbmNvZGVPbmUodCxlKXtyZXR1cm4gbmV3IEIoZSkuX2VuY29kZUFsbChbdF0pfXN0YXRpYyBlbmNvZGVBc3luYyh0LGUpe3JldHVybiBuZXcgUHJvbWlzZSgoKHIsbik9Pntjb25zdCBpPVtdLG89bmV3IEIoZSk7by5vbihcImRhdGFcIiwodD0+aS5wdXNoKHQpKSksby5vbihcImVycm9yXCIsbiksby5vbihcImZpbmlzaFwiLCgoKT0+cihkLmNvbmNhdChpKSkpKSxvLnB1c2hBbnkodCksby5lbmQoKX0pKX19dC5leHBvcnRzPUJ9LDcwOih0LGUscik9PntcInVzZSBzdHJpY3RcIjtjb25zdHtCdWZmZXI6bn09cig3NjQpLGk9cig2NjYpLG89cig3NzQpLHtNVDpzfT1yKDY2KTtjbGFzcyBhIGV4dGVuZHMgTWFwe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfXN0YXRpYyBfZW5jb2RlKHQpe3JldHVybiBpLmVuY29kZUNhbm9uaWNhbCh0KS50b1N0cmluZyhcImJhc2U2NFwiKX1zdGF0aWMgX2RlY29kZSh0KXtyZXR1cm4gby5kZWNvZGVGaXJzdFN5bmModCxcImJhc2U2NFwiKX1nZXQodCl7cmV0dXJuIHN1cGVyLmdldChhLl9lbmNvZGUodCkpfXNldCh0LGUpe3JldHVybiBzdXBlci5zZXQoYS5fZW5jb2RlKHQpLGUpfWRlbGV0ZSh0KXtyZXR1cm4gc3VwZXIuZGVsZXRlKGEuX2VuY29kZSh0KSl9aGFzKHQpe3JldHVybiBzdXBlci5oYXMoYS5fZW5jb2RlKHQpKX0qa2V5cygpe2Zvcihjb25zdCB0IG9mIHN1cGVyLmtleXMoKSl5aWVsZCBhLl9kZWNvZGUodCl9KmVudHJpZXMoKXtmb3IoY29uc3QgdCBvZiBzdXBlci5lbnRyaWVzKCkpeWllbGRbYS5fZGVjb2RlKHRbMF0pLHRbMV1dfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuZW50cmllcygpfWZvckVhY2godCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJNdXN0IGJlIGZ1bmN0aW9uXCIpO2Zvcihjb25zdCBlIG9mIHN1cGVyLmVudHJpZXMoKSl0LmNhbGwodGhpcyxlWzFdLGEuX2RlY29kZShlWzBdKSx0aGlzKX1lbmNvZGVDQk9SKHQpe2lmKCF0Ll9wdXNoSW50KHRoaXMuc2l6ZSxzLk1BUCkpcmV0dXJuITE7aWYodC5jYW5vbmljYWwpe2NvbnN0IGU9QXJyYXkuZnJvbShzdXBlci5lbnRyaWVzKCkpLm1hcCgodD0+W24uZnJvbSh0WzBdLFwiYmFzZTY0XCIpLHRbMV1dKSk7ZS5zb3J0KCgodCxlKT0+dFswXS5jb21wYXJlKGVbMF0pKSk7Zm9yKGNvbnN0IHIgb2YgZSlpZighdC5wdXNoKHJbMF0pfHwhdC5wdXNoQW55KHJbMV0pKXJldHVybiExfWVsc2UgZm9yKGNvbnN0IGUgb2Ygc3VwZXIuZW50cmllcygpKWlmKCF0LnB1c2gobi5mcm9tKGVbMF0sXCJiYXNlNjRcIikpfHwhdC5wdXNoQW55KGVbMV0pKXJldHVybiExO3JldHVybiEwfX10LmV4cG9ydHM9YX0sMzI6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0e01UOm4sU0lNUExFOmksU1lNUzpvfT1yKDY2KTtjbGFzcyBze2NvbnN0cnVjdG9yKHQpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgU2ltcGxlIHR5cGU6IFwiK3R5cGVvZiB0KTtpZih0PDB8fHQ+MjU1fHwoMHx0KSE9PXQpdGhyb3cgbmV3IEVycm9yKFwidmFsdWUgbXVzdCBiZSBhIHNtYWxsIHBvc2l0aXZlIGludGVnZXI6IFwiK3QpO3RoaXMudmFsdWU9dH10b1N0cmluZygpe3JldHVyblwic2ltcGxlKFwiK3RoaXMudmFsdWUrXCIpXCJ9aW5zcGVjdCh0LGUpe3JldHVyblwic2ltcGxlKFwiK3RoaXMudmFsdWUrXCIpXCJ9ZW5jb2RlQ0JPUih0KXtyZXR1cm4gdC5fcHVzaEludCh0aGlzLnZhbHVlLG4uU0lNUExFX0ZMT0FUKX1zdGF0aWMgaXNTaW1wbGUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBzfXN0YXRpYyBkZWNvZGUodCxlPSEwLHI9ITEpe3N3aXRjaCh0KXtjYXNlIGkuRkFMU0U6cmV0dXJuITE7Y2FzZSBpLlRSVUU6cmV0dXJuITA7Y2FzZSBpLk5VTEw6cmV0dXJuIGU/bnVsbDpvLk5VTEw7Y2FzZSBpLlVOREVGSU5FRDppZihlKXJldHVybjtyZXR1cm4gby5VTkRFRklORUQ7Y2FzZS0xOmlmKCFlfHwhcil0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEJSRUFLXCIpO3JldHVybiBvLkJSRUFLO2RlZmF1bHQ6cmV0dXJuIG5ldyBzKHQpfX19dC5leHBvcnRzPXN9LDc4NToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7Y29uc3Qgbj1yKDY2KSxpPXIoODczKTtmdW5jdGlvbiBvKHQsZSl7aWYoaS5pc0J1ZmZlcmlzaCh0KSl0LnRvSlNPTj1lO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgciBvZiB0KW8ocixlKTtlbHNlIGlmKHQmJlwib2JqZWN0XCI9PXR5cGVvZiB0JiYoISh0IGluc3RhbmNlb2YgdSl8fHQudGFnPDIxfHx0LnRhZz4yMykpZm9yKGNvbnN0IHIgb2YgT2JqZWN0LnZhbHVlcyh0KSlvKHIsZSl9Y29uc3Qgcz17NjQ6VWludDhBcnJheSw2NTpVaW50MTZBcnJheSw2NjpVaW50MzJBcnJheSw2ODpVaW50OENsYW1wZWRBcnJheSw2OTpVaW50MTZBcnJheSw3MDpVaW50MzJBcnJheSw3MjpJbnQ4QXJyYXksNzM6SW50MTZBcnJheSw3NDpJbnQzMkFycmF5LDc3OkludDE2QXJyYXksNzg6SW50MzJBcnJheSw4MTpGbG9hdDMyQXJyYXksODI6RmxvYXQ2NEFycmF5LDg1OkZsb2F0MzJBcnJheSw4NjpGbG9hdDY0QXJyYXl9O1widW5kZWZpbmVkXCIhPXR5cGVvZiBCaWdVaW50NjRBcnJheSYmKHNbNjddPUJpZ1VpbnQ2NEFycmF5LHNbNzFdPUJpZ1VpbnQ2NEFycmF5KSxcInVuZGVmaW5lZFwiIT10eXBlb2YgQmlnSW50NjRBcnJheSYmKHNbNzVdPUJpZ0ludDY0QXJyYXksc1s3OV09QmlnSW50NjRBcnJheSk7Y29uc3QgYT1TeW1ib2woXCJJTlRFUk5BTF9KU09OXCIpO2NsYXNzIHV7Y29uc3RydWN0b3IodCxlLHIpe2lmKHRoaXMudGFnPXQsdGhpcy52YWx1ZT1lLHRoaXMuZXJyPXIsXCJudW1iZXJcIiE9dHlwZW9mIHRoaXMudGFnKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdGFnIHR5cGUgKFwiK3R5cGVvZiB0aGlzLnRhZytcIilcIik7aWYodGhpcy50YWc8MHx8KDB8dGhpcy50YWcpIT09dGhpcy50YWcpdGhyb3cgbmV3IEVycm9yKFwiVGFnIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyOiBcIit0aGlzLnRhZyl9dG9KU09OKCl7aWYodGhpc1thXSlyZXR1cm4gdGhpc1thXSgpO2NvbnN0IHQ9e3RhZzp0aGlzLnRhZyx2YWx1ZTp0aGlzLnZhbHVlfTtyZXR1cm4gdGhpcy5lcnImJih0LmVycj10aGlzLmVyciksdH10b1N0cmluZygpe3JldHVybmAke3RoaXMudGFnfSgke0pTT04uc3RyaW5naWZ5KHRoaXMudmFsdWUpfSlgfWVuY29kZUNCT1IodCl7cmV0dXJuIHQuX3B1c2hUYWcodGhpcy50YWcpLHQucHVzaEFueSh0aGlzLnZhbHVlKX1jb252ZXJ0KHQpe2xldCBlPW51bGwhPXQ/dFt0aGlzLnRhZ106dm9pZCAwO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJihlPXVbXCJfdGFnX1wiK3RoaXMudGFnXSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKSl7aWYoZT1zW3RoaXMudGFnXSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXJldHVybiB0aGlzO2U9dGhpcy5fdG9UeXBlZEFycmF5fXRyeXtyZXR1cm4gZS5jYWxsKHRoaXMsdGhpcy52YWx1ZSl9Y2F0Y2godCl7cmV0dXJuIHQmJnQubWVzc2FnZSYmdC5tZXNzYWdlLmxlbmd0aD4wP3RoaXMuZXJyPXQubWVzc2FnZTp0aGlzLmVycj10LHRoaXN9fV90b1R5cGVkQXJyYXkodCl7Y29uc3R7dGFnOmV9PXRoaXMscj1zW2VdO2lmKCFyKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0eXBlZCBhcnJheSB0YWc6ICR7ZX1gKTtjb25zdCBuPTIqKigoKDE2JmUpPj40KSsoMyZlKSk7cmV0dXJuISg0JmUpIT09aS5pc0JpZ0VuZGlhbigpJiZuPjEmJmZ1bmN0aW9uKHQsZSxyLG4pe2NvbnN0IGk9bmV3IERhdGFWaWV3KHQpLFtvLHNdPXsyOltpLmdldFVpbnQxNixpLnNldFVpbnQxNl0sNDpbaS5nZXRVaW50MzIsaS5zZXRVaW50MzJdLDg6W2kuZ2V0QmlnVWludDY0LGkuc2V0QmlnVWludDY0XX1bZV0sYT1yK247Zm9yKGxldCB0PXI7dDxhO3QrPWUpcy5jYWxsKGksdCxvLmNhbGwoaSx0LCEwKSl9KHQuYnVmZmVyLG4sdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCksbmV3IHIodC5idWZmZXIuc2xpY2UodC5ieXRlT2Zmc2V0LHQuYnl0ZU9mZnNldCt0LmJ5dGVMZW5ndGgpKX1zdGF0aWMgX3RhZ18wKHQpe3JldHVybiBuZXcgRGF0ZSh0KX1zdGF0aWMgX3RhZ18xKHQpe3JldHVybiBuZXcgRGF0ZSgxZTMqdCl9c3RhdGljIF90YWdfMih0KXtyZXR1cm4gaS5idWZmZXJUb0JpZ251bWJlcih0KX1zdGF0aWMgX3RhZ18zKHQpe2NvbnN0IGU9aS5idWZmZXJUb0JpZ251bWJlcih0KTtyZXR1cm4gbi5CTi5NSU5VU19PTkUubWludXMoZSl9c3RhdGljIF90YWdfNCh0KXtpZighbi5CaWdOdW1iZXIpdGhyb3cgbmV3IEVycm9yKFwiTm8gYmlnbnVtYmVyLmpzXCIpO3JldHVybiBuZXcgbi5CaWdOdW1iZXIodFsxXSkuc2hpZnRlZEJ5KHRbMF0pfXN0YXRpYyBfdGFnXzUodCl7aWYoIW4uQmlnTnVtYmVyKXRocm93IG5ldyBFcnJvcihcIk5vIGJpZ251bWJlci5qc1wiKTtyZXR1cm4gbi5CTi5UV08ucG93KHRbMF0pLnRpbWVzKHRbMV0pfXN0YXRpYyBfdGFnXzIxKHQpe3JldHVybiBpLmlzQnVmZmVyaXNoKHQpP3RoaXNbYV09KCk9PmkuYmFzZTY0dXJsKHQpOm8odCwoZnVuY3Rpb24oKXtyZXR1cm4gaS5iYXNlNjR1cmwodGhpcyl9KSksdGhpc31zdGF0aWMgX3RhZ18yMih0KXtyZXR1cm4gaS5pc0J1ZmZlcmlzaCh0KT90aGlzW2FdPSgpPT5pLmJhc2U2NCh0KTpvKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIGkuYmFzZTY0KHRoaXMpfSkpLHRoaXN9c3RhdGljIF90YWdfMjModCl7cmV0dXJuIGkuaXNCdWZmZXJpc2godCk/dGhpc1thXT0oKT0+dC50b1N0cmluZyhcImhleFwiKTpvKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoXCJoZXhcIil9KSksdGhpc31zdGF0aWMgX3RhZ18zMih0KXtyZXR1cm4gbmV3IFVSTCh0KX1zdGF0aWMgX3RhZ18zMyh0KXtpZighdC5tYXRjaCgvXlthLXpBLVowLTlfLV0rJC8pKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0dXJsIGNoYXJhY3RlcnNcIik7Y29uc3QgZT10Lmxlbmd0aCU0O2lmKDE9PT1lKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0dXJsIGxlbmd0aFwiKTtpZigyPT09ZSl7aWYoLTE9PT1cIkFRZ3dcIi5pbmRleE9mKHRbdC5sZW5ndGgtMV0pKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0IHBhZGRpbmdcIil9ZWxzZSBpZigzPT09ZSYmLTE9PT1cIkFFSU1RVVljZ2tvc3cwNDhcIi5pbmRleE9mKHRbdC5sZW5ndGgtMV0pKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0IHBhZGRpbmdcIik7cmV0dXJuIHRoaXN9c3RhdGljIF90YWdfMzQodCl7Y29uc3QgZT10Lm1hdGNoKC9eW2EtekEtWjAtOSsvXSsoPXswLDJ9KSQvKTtpZighZSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NHVybCBjaGFyYWN0ZXJzXCIpO2lmKHQubGVuZ3RoJTQhPTApdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBiYXNlNjR1cmwgbGVuZ3RoXCIpO2lmKFwiPVwiPT09ZVsxXSl7aWYoLTE9PT1cIkFRZ3dcIi5pbmRleE9mKHRbdC5sZW5ndGgtMl0pKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0IHBhZGRpbmdcIil9ZWxzZSBpZihcIj09XCI9PT1lWzFdJiYtMT09PVwiQUVJTVFVWWNna29zdzA0OFwiLmluZGV4T2YodFt0Lmxlbmd0aC0zXSkpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBiYXNlNjQgcGFkZGluZ1wiKTtyZXR1cm4gdGhpc31zdGF0aWMgX3RhZ18zNSh0KXtyZXR1cm4gbmV3IFJlZ0V4cCh0KX1zdGF0aWMgX3RhZ18yNTgodCl7cmV0dXJuIG5ldyBTZXQodCl9fXUuSU5URVJOQUxfSlNPTj1hLHQuZXhwb3J0cz11fSw4NzM6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0e0J1ZmZlcjpufT1yKDc2NCksaT1yKDIwMiksbz1yKDgzMCkscz1yKDk2MCksYT1yKDY2KSx7TlVNQllURVM6dSxTSElGVDMyOmwsQkk6YyxTWU1TOmZ9PWE7bGV0IGg9bnVsbDt0cnl7aD1yKDY2OSl9Y2F0Y2godCl7aD1yKDU5NSl9ZS5pbnNwZWN0PWguaW5zcGVjdDtjb25zdCBwPW5ldyBzKFwidXRmOFwiLHtmYXRhbDohMCxpZ25vcmVCT006ITB9KTtlLnV0Zjg9dD0+cC5kZWNvZGUodCksZS51dGY4LmNoZWNrc1VURjg9ITAsZS5pc0J1ZmZlcmlzaD1mdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJvYmplY3RcIj09dHlwZW9mIHQmJihuLmlzQnVmZmVyKHQpfHx0IGluc3RhbmNlb2YgVWludDhBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHx0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fHQgaW5zdGFuY2VvZiBEYXRhVmlldyl9LGUuYnVmZmVyaXNoVG9CdWZmZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG4uaXNCdWZmZXIodCk/dDpBcnJheUJ1ZmZlci5pc1ZpZXcodCk/bi5mcm9tKHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpOnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9uLmZyb20odCk6bnVsbH0sZS5wYXJzZUNCT1JpbnQ9ZnVuY3Rpb24odCxlLHI9ITApe3N3aXRjaCh0KXtjYXNlIHUuT05FOnJldHVybiBlLnJlYWRVSW50OCgwKTtjYXNlIHUuVFdPOnJldHVybiBlLnJlYWRVSW50MTZCRSgwKTtjYXNlIHUuRk9VUjpyZXR1cm4gZS5yZWFkVUludDMyQkUoMCk7Y2FzZSB1LkVJR0hUOntjb25zdCB0PWUucmVhZFVJbnQzMkJFKDApLG49ZS5yZWFkVUludDMyQkUoNCk7aWYodD4yMDk3MTUxKXtpZihyKXJldHVybiBCaWdJbnQodCkqYy5TSElGVDMyK0JpZ0ludChuKTtpZighYS5CaWdOdW1iZXIpdGhyb3cgbmV3IEVycm9yKFwiTm8gYmlnaW50IGFuZCBubyBiaWdudW1iZXIuanNcIik7cmV0dXJuIG5ldyBhLkJpZ051bWJlcih0KS50aW1lcyhsKS5wbHVzKG4pfXJldHVybiB0Kmwrbn1kZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYWRkaXRpb25hbCBpbmZvIGZvciBpbnQ6IFwiK3QpfX0sZS53cml0ZUhhbGY9ZnVuY3Rpb24odCxlKXtjb25zdCByPW4uYWxsb2NVbnNhZmUoNCk7ci53cml0ZUZsb2F0QkUoZSwwKTtjb25zdCBpPXIucmVhZFVJbnQzMkJFKDApO2lmKDAhPSg4MTkxJmkpKXJldHVybiExO2xldCBvPWk+PjE2JjMyNzY4O2NvbnN0IHM9aT4+MjMmMjU1LGE9ODM4ODYwNyZpO2lmKHM+PTExMyYmczw9MTQyKW8rPShzLTExMjw8MTApKyhhPj4xMyk7ZWxzZXtpZighKHM+PTEwMyYmczwxMTMpKXJldHVybiExO2lmKGEmKDE8PDEyNi1zKS0xKXJldHVybiExO28rPWErODM4ODYwOD4+MTI2LXN9cmV0dXJuIHQud3JpdGVVSW50MTZCRShvKSwhMH0sZS5wYXJzZUhhbGY9ZnVuY3Rpb24odCl7Y29uc3QgZT0xMjgmdFswXT8tMToxLHI9KDEyNCZ0WzBdKT4+MixuPSgzJnRbMF0pPDw4fHRbMV07cmV0dXJuIHI/MzE9PT1yP2UqKG4/TmFOOkluZmluaXR5KTplKk1hdGgucG93KDIsci0yNSkqKDEwMjQrbik6NS45NjA0NjQ0Nzc1MzkwNjNlLTgqZSpufSxlLnBhcnNlQ0JPUmZsb2F0PWZ1bmN0aW9uKHQpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAyOnJldHVybiBlLnBhcnNlSGFsZih0KTtjYXNlIDQ6cmV0dXJuIHQucmVhZEZsb2F0QkUoMCk7Y2FzZSA4OnJldHVybiB0LnJlYWREb3VibGVCRSgwKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZmxvYXQgc2l6ZTogXCIrdC5sZW5ndGgpfX0sZS5oZXg9ZnVuY3Rpb24odCl7cmV0dXJuIG4uZnJvbSh0LnJlcGxhY2UoL14weC8sXCJcIiksXCJoZXhcIil9LGUuYmluPWZ1bmN0aW9uKHQpe2xldCBlPTAscj0odD10LnJlcGxhY2UoL1xccy9nLFwiXCIpKS5sZW5ndGglOHx8ODtjb25zdCBpPVtdO2Zvcig7cjw9dC5sZW5ndGg7KWkucHVzaChwYXJzZUludCh0LnNsaWNlKGUsciksMikpLGU9cixyKz04O3JldHVybiBuLmZyb20oaSl9LGUuYXJyYXlFcXVhbD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10JiZudWxsPT1lfHxudWxsIT10JiZudWxsIT1lJiZ0Lmxlbmd0aD09PWUubGVuZ3RoJiZ0LmV2ZXJ5KCgodCxyKT0+dD09PWVbcl0pKX0sZS5idWZmZXJUb0JpZ251bWJlcj1mdW5jdGlvbih0KXtpZighYS5CaWdOdW1iZXIpdGhyb3cgbmV3IEVycm9yKFwiTm8gYmlnaW50IGFuZCBubyBiaWdudW1iZXIuanNcIik7cmV0dXJuIG5ldyBhLkJpZ051bWJlcih0LnRvU3RyaW5nKFwiaGV4XCIpLDE2KX0sZS5idWZmZXJUb0JpZ0ludD1mdW5jdGlvbih0KXtyZXR1cm4gQmlnSW50KFwiMHhcIit0LnRvU3RyaW5nKFwiaGV4XCIpKX0sZS5jYm9yVmFsdWVUb1N0cmluZz1mdW5jdGlvbih0LHI9LTEpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZVwic3ltYm9sXCI6e3N3aXRjaCh0KXtjYXNlIGYuTlVMTDpyZXR1cm5cIm51bGxcIjtjYXNlIGYuVU5ERUZJTkVEOnJldHVyblwidW5kZWZpbmVkXCI7Y2FzZSBmLkJSRUFLOnJldHVyblwiQlJFQUtcIn1pZih0LmRlc2NyaXB0aW9uKXJldHVybiB0LmRlc2NyaXB0aW9uO2NvbnN0IGU9dC50b1N0cmluZygpLm1hdGNoKC9eU3ltYm9sXFwoKC4qKVxcKS8pO3JldHVybiBlJiZlWzFdP2VbMV06XCJTeW1ib2xcIn1jYXNlXCJzdHJpbmdcIjpyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCk7Y2FzZVwiYmlnaW50XCI6cmV0dXJuIHQudG9TdHJpbmcoKTtjYXNlXCJudW1iZXJcIjpyZXR1cm4gcj4wP2guaW5zcGVjdCh0KStcIl9cIityOmguaW5zcGVjdCh0KX1jb25zdCBuPWUuYnVmZmVyaXNoVG9CdWZmZXIodCk7aWYobil7Y29uc3QgdD1uLnRvU3RyaW5nKFwiaGV4XCIpO3JldHVybiByPT09LTEvMD90OmBoJyR7dH0nYH1yZXR1cm4gYS5CaWdOdW1iZXImJmEuQmlnTnVtYmVyLmlzQmlnTnVtYmVyKHQpP3QudG9TdHJpbmcoKTp0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0Lmluc3BlY3Q/dC5pbnNwZWN0KCk6aC5pbnNwZWN0KHQpfSxlLmd1ZXNzRW5jb2Rpbmc9ZnVuY3Rpb24odCxyKXtpZihcInN0cmluZ1wiPT10eXBlb2YgdClyZXR1cm4gbmV3IGkodCxudWxsIT1yP3I6XCJoZXhcIik7Y29uc3Qgbj1lLmJ1ZmZlcmlzaFRvQnVmZmVyKHQpO2lmKG4pcmV0dXJuIG5ldyBpKG4pO2lmKChzPXQpaW5zdGFuY2VvZiBvLlJlYWRhYmxlfHxbXCJyZWFkXCIsXCJvblwiLFwicGlwZVwiXS5ldmVyeSgodD0+XCJmdW5jdGlvblwiPT10eXBlb2Ygc1t0XSkpKXJldHVybiB0O3ZhciBzO3Rocm93IG5ldyBFcnJvcihcIlVua25vd24gaW5wdXQgdHlwZVwiKX07Y29uc3QgZD17XCI9XCI6XCJcIixcIitcIjpcIi1cIixcIi9cIjpcIl9cIn07ZS5iYXNlNjR1cmw9ZnVuY3Rpb24odCl7cmV0dXJuIGUuYnVmZmVyaXNoVG9CdWZmZXIodCkudG9TdHJpbmcoXCJiYXNlNjRcIikucmVwbGFjZSgvWz0rL10vZywodD0+ZFt0XSkpfSxlLmJhc2U2ND1mdW5jdGlvbih0KXtyZXR1cm4gZS5idWZmZXJpc2hUb0J1ZmZlcih0KS50b1N0cmluZyhcImJhc2U2NFwiKX0sZS5pc0JpZ0VuZGlhbj1mdW5jdGlvbigpe2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoNCk7cmV0dXJuISgobmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyKVswXT0xKSZ0WzBdKX19LDk2MDoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7bGV0IG49bnVsbDtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBUZXh0RGVjb2RlciluPVRleHREZWNvZGVyO2Vsc2UgaWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyluPXdpbmRvdy5UZXh0RGVjb2RlcjtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmKW49c2VsZi5UZXh0RGVjb2RlcjtlbHNlIHRyeXtjb25zdCB0PXIoNjY5KTtcImZ1bmN0aW9uXCIhPXR5cGVvZiBuJiYobj10LlRleHREZWNvZGVyKX1jYXRjaCh0KXt9aWYoXCJmdW5jdGlvblwiIT10eXBlb2Ygbil7Y2xhc3MgdHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMudXRmTGFiZWw9dCx0aGlzLm9wdGlvbnM9ZX1kZWNvZGUodCl7Y29uc3QgZT10LnRvU3RyaW5nKHRoaXMudXRmTGFiZWwpO2lmKHRoaXMub3B0aW9ucy5mYXRhbClmb3IoY29uc3QgdCBvZiBlKWlmKDY1NTMzPT09dC5jb2RlUG9pbnRBdCgwKSl7Y29uc3QgdD1uZXcgVHlwZUVycm9yKFwiW0VSUl9FTkNPRElOR19JTlZBTElEX0VOQ09ERURfREFUQV06IFRoZSBlbmNvZGVkIGRhdGEgd2FzIG5vdCB2YWxpZCBmb3IgZW5jb2RpbmcgXCIrdGhpcy51dGZMYWJlbCk7dGhyb3cgdC5jb2RlPVwiRVJSX0VOQ09ESU5HX0lOVkFMSURfRU5DT0RFRF9EQVRBXCIsdC5lcnJubz0xMix0fXJldHVybiBlfX1uPXR9dC5leHBvcnRzPW59LDIwMjoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7Y29uc3Qgbj1yKDgzMCkse0J1ZmZlcjppfT1yKDc2NCksbz1yKDk2MCk7bGV0IHM9bnVsbCxhPVN5bWJvbC5mb3IoXCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbVwiKTt0cnl7cz1yKDY2OSksYT1zLmluc3BlY3QuY3VzdG9tfWNhdGNoKHQpe31jb25zdCB1PW5ldyBvKFwidXRmOFwiLHtmYXRhbDohMCxpZ25vcmVCT006ITB9KTtjbGFzcyBsIGV4dGVuZHMgbi5UcmFuc2Zvcm17Y29uc3RydWN0b3IodCxlLHIpe251bGw9PXImJihyPXt9KTtsZXQgbj1udWxsLG89bnVsbDtzd2l0Y2godHlwZW9mIHQpe2Nhc2VcIm9iamVjdFwiOmkuaXNCdWZmZXIodCk/KG49dCxudWxsIT1lJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmKHI9ZSkpOnI9dDticmVhaztjYXNlXCJzdHJpbmdcIjpuPXQsbnVsbCE9ZSYmXCJvYmplY3RcIj09dHlwZW9mIGU/cj1lOm89ZX1udWxsPT1yJiYocj17fSksbnVsbD09biYmKG49ci5pbnB1dCksbnVsbD09byYmKG89ci5pbnB1dEVuY29kaW5nKSxkZWxldGUgci5pbnB1dCxkZWxldGUgci5pbnB1dEVuY29kaW5nO2NvbnN0IHM9bnVsbD09ci53YXRjaFBpcGV8fHIud2F0Y2hQaXBlO2RlbGV0ZSByLndhdGNoUGlwZTtjb25zdCBhPSEhci5yZWFkRXJyb3I7ZGVsZXRlIHIucmVhZEVycm9yLHN1cGVyKHIpLHRoaXMucmVhZEVycm9yPWEscyYmdGhpcy5vbihcInBpcGVcIiwodD0+e2NvbnN0IGU9dC5fcmVhZGFibGVTdGF0ZS5vYmplY3RNb2RlO2lmKHRoaXMubGVuZ3RoPjAmJmUhPT10aGlzLl9yZWFkYWJsZVN0YXRlLm9iamVjdE1vZGUpdGhyb3cgbmV3IEVycm9yKFwiRG8gbm90IHN3aXRjaCBvYmplY3RNb2RlIGluIHRoZSBtaWRkbGUgb2YgdGhlIHN0cmVhbVwiKTt0aGlzLl9yZWFkYWJsZVN0YXRlLm9iamVjdE1vZGU9ZSx0aGlzLl93cml0YWJsZVN0YXRlLm9iamVjdE1vZGU9ZX0pKSxudWxsIT1uJiZ0aGlzLmVuZChuLG8pfXN0YXRpYyBpc05vRmlsdGVyKHQpe3JldHVybiB0IGluc3RhbmNlb2YgdGhpc31zdGF0aWMgY29tcGFyZSh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIHRoaXMpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudHMgbXVzdCBiZSBOb0ZpbHRlcnNcIik7cmV0dXJuIHQ9PT1lPzA6dC5jb21wYXJlKGUpfXN0YXRpYyBjb25jYXQodCxlKXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwibGlzdCBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIE5vRmlsdGVyc1wiKTtpZigwPT09dC5sZW5ndGh8fDA9PT1lKXJldHVybiBpLmFsbG9jKDApO251bGw9PWUmJihlPXQucmVkdWNlKCgodCxlKT0+e2lmKCEoZSBpbnN0YW5jZW9mIGwpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJsaXN0IGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgTm9GaWx0ZXJzXCIpO3JldHVybiB0K2UubGVuZ3RofSksMCkpO2xldCByPSEwLG49ITA7Y29uc3Qgbz10Lm1hcCgodD0+e2lmKCEodCBpbnN0YW5jZW9mIGwpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJsaXN0IGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgTm9GaWx0ZXJzXCIpO2NvbnN0IGU9dC5zbGljZSgpO3JldHVybiBpLmlzQnVmZmVyKGUpP249ITE6cj0hMSxlfSkpO2lmKHIpcmV0dXJuIGkuY29uY2F0KG8sZSk7aWYobilyZXR1cm5bXS5jb25jYXQoLi4ubykuc2xpY2UoMCxlKTt0aHJvdyBuZXcgRXJyb3IoXCJDb25jYXRlbmF0aW5nIG1peGVkIG9iamVjdCBhbmQgYnl0ZSBzdHJlYW1zIG5vdCBzdXBwb3J0ZWRcIil9X3RyYW5zZm9ybSh0LGUscil7dGhpcy5fcmVhZGFibGVTdGF0ZS5vYmplY3RNb2RlfHxpLmlzQnVmZmVyKHQpfHwodD1pLmZyb20odCxlKSksdGhpcy5wdXNoKHQpLHIoKX1fYnVmQXJyYXkoKXtsZXQgdD10aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlcjtpZighQXJyYXkuaXNBcnJheSh0KSl7bGV0IGU9dC5oZWFkO2Zvcih0PVtdO251bGwhPWU7KXQucHVzaChlLmRhdGEpLGU9ZS5uZXh0fXJldHVybiB0fXJlYWQodCl7Y29uc3QgZT1zdXBlci5yZWFkKHQpO2lmKG51bGwhPWUpe2lmKHRoaXMuZW1pdChcInJlYWRcIixlKSx0aGlzLnJlYWRFcnJvciYmZS5sZW5ndGg8dCl0aHJvdyBuZXcgRXJyb3IoYFJlYWQgJHtlLmxlbmd0aH0sIHdhbnRlZCAke3R9YCl9ZWxzZSBpZih0aGlzLnJlYWRFcnJvcil0aHJvdyBuZXcgRXJyb3IoYE5vIGRhdGEgYXZhaWxhYmxlLCB3YW50ZWQgJHt0fWApO3JldHVybiBlfXByb21pc2UodCl7bGV0IGU9ITE7cmV0dXJuIG5ldyBQcm9taXNlKCgocixuKT0+e3RoaXMub24oXCJmaW5pc2hcIiwoKCk9Pntjb25zdCBuPXRoaXMucmVhZCgpO251bGw9PXR8fGV8fChlPSEwLHQobnVsbCxuKSkscihuKX0pKSx0aGlzLm9uKFwiZXJyb3JcIiwocj0+e251bGw9PXR8fGV8fChlPSEwLHQocikpLG4ocil9KSl9KSl9Y29tcGFyZSh0KXtpZighKHQgaW5zdGFuY2VvZiBsKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnRzIG11c3QgYmUgTm9GaWx0ZXJzXCIpO2lmKHRoaXM9PT10KXJldHVybiAwO2NvbnN0IGU9dGhpcy5zbGljZSgpLHI9dC5zbGljZSgpO2lmKGkuaXNCdWZmZXIoZSkmJmkuaXNCdWZmZXIocikpcmV0dXJuIGUuY29tcGFyZShyKTt0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY29tcGFyZSBzdHJlYW1zIGluIG9iamVjdCBtb2RlXCIpfWVxdWFscyh0KXtyZXR1cm4gMD09PXRoaXMuY29tcGFyZSh0KX1zbGljZSh0LGUpe2lmKHRoaXMuX3JlYWRhYmxlU3RhdGUub2JqZWN0TW9kZSlyZXR1cm4gdGhpcy5fYnVmQXJyYXkoKS5zbGljZSh0LGUpO2NvbnN0IHI9dGhpcy5fYnVmQXJyYXkoKTtzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gaS5hbGxvYygwKTtjYXNlIDE6cmV0dXJuIHJbMF0uc2xpY2UodCxlKTtkZWZhdWx0OnJldHVybiBpLmNvbmNhdChyKS5zbGljZSh0LGUpfX1nZXQodCl7cmV0dXJuIHRoaXMuc2xpY2UoKVt0XX10b0pTT04oKXtjb25zdCB0PXRoaXMuc2xpY2UoKTtyZXR1cm4gaS5pc0J1ZmZlcih0KT90LnRvSlNPTigpOnR9dG9TdHJpbmcodCxlLHIpe2NvbnN0IG49dGhpcy5zbGljZShlLHIpO3JldHVybiBpLmlzQnVmZmVyKG4pP3QmJlwidXRmOFwiIT09dD9uLnRvU3RyaW5nKHQsZSxyKTp1LmRlY29kZShuKTpKU09OLnN0cmluZ2lmeShuKX1pbnNwZWN0KHQsZSl7cmV0dXJuIHRoaXNbYV0odCxlKX1bYV0odCxlKXtjb25zdCByPXRoaXMuX2J1ZkFycmF5KCkubWFwKCh0PT5pLmlzQnVmZmVyKHQpPyhudWxsIT1lP2Uuc3R5bGl6ZTp2b2lkIDApP2Uuc3R5bGl6ZSh0LnRvU3RyaW5nKFwiaGV4XCIpLFwic3RyaW5nXCIpOnQudG9TdHJpbmcoXCJoZXhcIik6cz9zLmluc3BlY3QodCxlKTp0LnRvU3RyaW5nKCkpKS5qb2luKFwiLCBcIik7cmV0dXJuYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSBbJHtyfV1gfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGh9d3JpdGVCaWdJbnQodCl7bGV0IGU9dC50b1N0cmluZygxNik7aWYodDwwKXtjb25zdCByPUJpZ0ludChNYXRoLmZsb29yKGUubGVuZ3RoLzIpKTtlPSh0PShCaWdJbnQoMSk8PHIqQmlnSW50KDgpKSt0KS50b1N0cmluZygxNil9cmV0dXJuIGUubGVuZ3RoJTImJihlPVwiMFwiK2UpLHRoaXMucHVzaChpLmZyb20oZSxcImhleFwiKSl9cmVhZFVCaWdJbnQodCl7Y29uc3QgZT10aGlzLnJlYWQodCk7cmV0dXJuIGkuaXNCdWZmZXIoZSk/QmlnSW50KFwiMHhcIitlLnRvU3RyaW5nKFwiaGV4XCIpKTpudWxsfXJlYWRCaWdJbnQodCl7Y29uc3QgZT10aGlzLnJlYWQodCk7aWYoIWkuaXNCdWZmZXIoZSkpcmV0dXJuIG51bGw7bGV0IHI9QmlnSW50KFwiMHhcIitlLnRvU3RyaW5nKFwiaGV4XCIpKTtyZXR1cm4gMTI4JmVbMF0mJihyLT1CaWdJbnQoMSk8PEJpZ0ludChlLmxlbmd0aCkqQmlnSW50KDgpKSxyfX1mdW5jdGlvbiBjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe2NvbnN0IG49dGhpcy5yZWFkKGUpO3JldHVybiBpLmlzQnVmZmVyKG4pP25bdF0uY2FsbChuLDAsITApOm51bGx9fWZ1bmN0aW9uIGYodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7Y29uc3Qgbj1pLmFsbG9jKGUpO3JldHVybiBuW3RdLmNhbGwobixyLDAsITApLHRoaXMucHVzaChuKX19T2JqZWN0LmFzc2lnbihsLnByb3RvdHlwZSx7d3JpdGVVSW50ODpmKFwid3JpdGVVSW50OFwiLDEpLHdyaXRlVUludDE2TEU6ZihcIndyaXRlVUludDE2TEVcIiwyKSx3cml0ZVVJbnQxNkJFOmYoXCJ3cml0ZVVJbnQxNkJFXCIsMiksd3JpdGVVSW50MzJMRTpmKFwid3JpdGVVSW50MzJMRVwiLDQpLHdyaXRlVUludDMyQkU6ZihcIndyaXRlVUludDMyQkVcIiw0KSx3cml0ZUludDg6ZihcIndyaXRlSW50OFwiLDEpLHdyaXRlSW50MTZMRTpmKFwid3JpdGVJbnQxNkxFXCIsMiksd3JpdGVJbnQxNkJFOmYoXCJ3cml0ZUludDE2QkVcIiwyKSx3cml0ZUludDMyTEU6ZihcIndyaXRlSW50MzJMRVwiLDQpLHdyaXRlSW50MzJCRTpmKFwid3JpdGVJbnQzMkJFXCIsNCksd3JpdGVGbG9hdExFOmYoXCJ3cml0ZUZsb2F0TEVcIiw0KSx3cml0ZUZsb2F0QkU6ZihcIndyaXRlRmxvYXRCRVwiLDQpLHdyaXRlRG91YmxlTEU6ZihcIndyaXRlRG91YmxlTEVcIiw4KSx3cml0ZURvdWJsZUJFOmYoXCJ3cml0ZURvdWJsZUJFXCIsOCkscmVhZFVJbnQ4OmMoXCJyZWFkVUludDhcIiwxKSxyZWFkVUludDE2TEU6YyhcInJlYWRVSW50MTZMRVwiLDIpLHJlYWRVSW50MTZCRTpjKFwicmVhZFVJbnQxNkJFXCIsMikscmVhZFVJbnQzMkxFOmMoXCJyZWFkVUludDMyTEVcIiw0KSxyZWFkVUludDMyQkU6YyhcInJlYWRVSW50MzJCRVwiLDQpLHJlYWRJbnQ4OmMoXCJyZWFkSW50OFwiLDEpLHJlYWRJbnQxNkxFOmMoXCJyZWFkSW50MTZMRVwiLDIpLHJlYWRJbnQxNkJFOmMoXCJyZWFkSW50MTZCRVwiLDIpLHJlYWRJbnQzMkxFOmMoXCJyZWFkSW50MzJMRVwiLDQpLHJlYWRJbnQzMkJFOmMoXCJyZWFkSW50MzJCRVwiLDQpLHJlYWRGbG9hdExFOmMoXCJyZWFkRmxvYXRMRVwiLDQpLHJlYWRGbG9hdEJFOmMoXCJyZWFkRmxvYXRCRVwiLDQpLHJlYWREb3VibGVMRTpjKFwicmVhZERvdWJsZUxFXCIsOCkscmVhZERvdWJsZUJFOmMoXCJyZWFkRG91YmxlQkVcIiw4KX0pLHQuZXhwb3J0cz1sfSw3MToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7Y29uc3Qgbj1yKDgzMCksaT1yKDIwMiksbz1uLlRyYW5zZm9ybTt0LmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBve2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuX3dyaXRhYmxlU3RhdGUub2JqZWN0TW9kZT0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLm9iamVjdE1vZGU9ITAsdGhpcy5icz1uZXcgaSx0aGlzLl9fcmVzdGFydCgpfV90cmFuc2Zvcm0odCxlLHIpe2Zvcih0aGlzLmJzLndyaXRlKHQpO3RoaXMuYnMubGVuZ3RoPj10aGlzLl9fbmVlZGVkOyl7bGV0IHQ9bnVsbDtjb25zdCBlPW51bGw9PT10aGlzLl9fbmVlZGVkP3ZvaWQgMDp0aGlzLmJzLnJlYWQodGhpcy5fX25lZWRlZCk7dHJ5e3Q9dGhpcy5fX3BhcnNlci5uZXh0KGUpfWNhdGNoKHQpe3JldHVybiByKHQpfXRoaXMuX19uZWVkZWQmJih0aGlzLl9fZnJlc2g9ITEpLHQuZG9uZT8odGhpcy5wdXNoKHQudmFsdWUpLHRoaXMuX19yZXN0YXJ0KCkpOnRoaXMuX19uZWVkZWQ9dC52YWx1ZXx8MS8wfXJldHVybiByKCl9Kl9wYXJzZSgpe3Rocm93IG5ldyBFcnJvcihcIk11c3QgYmUgaW1wbGVtZW50ZWQgaW4gc3ViY2xhc3NcIil9X19yZXN0YXJ0KCl7dGhpcy5fX25lZWRlZD1udWxsLHRoaXMuX19wYXJzZXI9dGhpcy5fcGFyc2UoKSx0aGlzLl9fZnJlc2g9ITB9X2ZsdXNoKHQpe3QodGhpcy5fX2ZyZXNoP251bGw6bmV3IEVycm9yKFwidW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIikpfX19LDE4Nzp0PT57XCJ1c2Ugc3RyaWN0XCI7dmFyIGUscj1cIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdD9SZWZsZWN0Om51bGwsbj1yJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiByLmFwcGx5P3IuYXBwbHk6ZnVuY3Rpb24odCxlLHIpe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbCh0LGUscil9O2U9ciYmXCJmdW5jdGlvblwiPT10eXBlb2Ygci5vd25LZXlzP3Iub3duS2V5czpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KSl9OmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KX07dmFyIGk9TnVtYmVyLmlzTmFOfHxmdW5jdGlvbih0KXtyZXR1cm4gdCE9dH07ZnVuY3Rpb24gbygpe28uaW5pdC5jYWxsKHRoaXMpfXQuZXhwb3J0cz1vLHQuZXhwb3J0cy5vbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG4pe2Z1bmN0aW9uIGkocil7dC5yZW1vdmVMaXN0ZW5lcihlLG8pLG4ocil9ZnVuY3Rpb24gbygpe1wiZnVuY3Rpb25cIj09dHlwZW9mIHQucmVtb3ZlTGlzdGVuZXImJnQucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLGkpLHIoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX15KHQsZSxvLHtvbmNlOiEwfSksXCJlcnJvclwiIT09ZSYmZnVuY3Rpb24odCxlLHIpe1wiZnVuY3Rpb25cIj09dHlwZW9mIHQub24mJnkodCxcImVycm9yXCIsZSx7b25jZTohMH0pfSh0LGkpfSkpfSxvLkV2ZW50RW1pdHRlcj1vLG8ucHJvdG90eXBlLl9ldmVudHM9dm9pZCAwLG8ucHJvdG90eXBlLl9ldmVudHNDb3VudD0wLG8ucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnM9dm9pZCAwO3ZhciBzPTEwO2Z1bmN0aW9uIGEodCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KX1mdW5jdGlvbiB1KHQpe3JldHVybiB2b2lkIDA9PT10Ll9tYXhMaXN0ZW5lcnM/by5kZWZhdWx0TWF4TGlzdGVuZXJzOnQuX21heExpc3RlbmVyc31mdW5jdGlvbiBsKHQsZSxyLG4pe3ZhciBpLG8scyxsO2lmKGEociksdm9pZCAwPT09KG89dC5fZXZlbnRzKT8obz10Ll9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0Ll9ldmVudHNDb3VudD0wKToodm9pZCAwIT09by5uZXdMaXN0ZW5lciYmKHQuZW1pdChcIm5ld0xpc3RlbmVyXCIsZSxyLmxpc3RlbmVyP3IubGlzdGVuZXI6ciksbz10Ll9ldmVudHMpLHM9b1tlXSksdm9pZCAwPT09cylzPW9bZV09ciwrK3QuX2V2ZW50c0NvdW50O2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcz9zPW9bZV09bj9bcixzXTpbcyxyXTpuP3MudW5zaGlmdChyKTpzLnB1c2gociksKGk9dSh0KSk+MCYmcy5sZW5ndGg+aSYmIXMud2FybmVkKXtzLndhcm5lZD0hMDt2YXIgYz1uZXcgRXJyb3IoXCJQb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5IGxlYWsgZGV0ZWN0ZWQuIFwiK3MubGVuZ3RoK1wiIFwiK1N0cmluZyhlKStcIiBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0XCIpO2MubmFtZT1cIk1heExpc3RlbmVyc0V4Y2VlZGVkV2FybmluZ1wiLGMuZW1pdHRlcj10LGMudHlwZT1lLGMuY291bnQ9cy5sZW5ndGgsbD1jLGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKGwpfXJldHVybiB0fWZ1bmN0aW9uIGMoKXtpZighdGhpcy5maXJlZClyZXR1cm4gdGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBlLHRoaXMud3JhcEZuKSx0aGlzLmZpcmVkPSEwLDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk6dGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCxhcmd1bWVudHMpfWZ1bmN0aW9uIGYodCxlLHIpe3ZhciBuPXtmaXJlZDohMSx3cmFwRm46dm9pZCAwLHRhcmdldDp0LHR5cGU6ZSxsaXN0ZW5lcjpyfSxpPWMuYmluZChuKTtyZXR1cm4gaS5saXN0ZW5lcj1yLG4ud3JhcEZuPWksaX1mdW5jdGlvbiBoKHQsZSxyKXt2YXIgbj10Ll9ldmVudHM7aWYodm9pZCAwPT09bilyZXR1cm5bXTt2YXIgaT1uW2VdO3JldHVybiB2b2lkIDA9PT1pP1tdOlwiZnVuY3Rpb25cIj09dHlwZW9mIGk/cj9baS5saXN0ZW5lcnx8aV06W2ldOnI/ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0Lmxlbmd0aCkscj0wO3I8ZS5sZW5ndGg7KytyKWVbcl09dFtyXS5saXN0ZW5lcnx8dFtyXTtyZXR1cm4gZX0oaSk6ZChpLGkubGVuZ3RoKX1mdW5jdGlvbiBwKHQpe3ZhciBlPXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT1lKXt2YXIgcj1lW3RdO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpcmV0dXJuIDE7aWYodm9pZCAwIT09cilyZXR1cm4gci5sZW5ndGh9cmV0dXJuIDB9ZnVuY3Rpb24gZCh0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkoZSksbj0wO248ZTsrK24pcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIHkodCxlLHIsbil7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC5vbiluLm9uY2U/dC5vbmNlKGUscik6dC5vbihlLHIpO2Vsc2V7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdC5hZGRFdmVudExpc3RlbmVyKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImVtaXR0ZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRXZlbnRFbWl0dGVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIHQpO3QuYWRkRXZlbnRMaXN0ZW5lcihlLChmdW5jdGlvbiBpKG8pe24ub25jZSYmdC5yZW1vdmVFdmVudExpc3RlbmVyKGUsaSkscihvKX0pKX19T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHN9LHNldDpmdW5jdGlvbih0KXtpZihcIm51bWJlclwiIT10eXBlb2YgdHx8dDwwfHxpKHQpKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyt0K1wiLlwiKTtzPXR9fSksby5pbml0PWZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5fZXZlbnRzJiZ0aGlzLl9ldmVudHMhPT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2V2ZW50c3x8KHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApLHRoaXMuX21heExpc3RlbmVycz10aGlzLl9tYXhMaXN0ZW5lcnN8fHZvaWQgMH0sby5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKHQpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0fHx0PDB8fGkodCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcIm5cIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnK3QrXCIuXCIpO3JldHVybiB0aGlzLl9tYXhMaXN0ZW5lcnM9dCx0aGlzfSxvLnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdSh0aGlzKX0sby5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10scj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspZS5wdXNoKGFyZ3VtZW50c1tyXSk7dmFyIGk9XCJlcnJvclwiPT09dCxvPXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT1vKWk9aSYmdm9pZCAwPT09by5lcnJvcjtlbHNlIGlmKCFpKXJldHVybiExO2lmKGkpe3ZhciBzO2lmKGUubGVuZ3RoPjAmJihzPWVbMF0pLHMgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBzO3ZhciBhPW5ldyBFcnJvcihcIlVuaGFuZGxlZCBlcnJvci5cIisocz9cIiAoXCIrcy5tZXNzYWdlK1wiKVwiOlwiXCIpKTt0aHJvdyBhLmNvbnRleHQ9cyxhfXZhciB1PW9bdF07aWYodm9pZCAwPT09dSlyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB1KW4odSx0aGlzLGUpO2Vsc2V7dmFyIGw9dS5sZW5ndGgsYz1kKHUsbCk7Zm9yKHI9MDtyPGw7KytyKW4oY1tyXSx0aGlzLGUpfXJldHVybiEwfSxvLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3JldHVybiBsKHRoaXMsdCxlLCExKX0sby5wcm90b3R5cGUub249by5wcm90b3R5cGUuYWRkTGlzdGVuZXIsby5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGwodGhpcyx0LGUsITApfSxvLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEoZSksdGhpcy5vbih0LGYodGhpcyx0LGUpKSx0aGlzfSxvLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEoZSksdGhpcy5wcmVwZW5kTGlzdGVuZXIodCxmKHRoaXMsdCxlKSksdGhpc30sby5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGksbyxzO2lmKGEoZSksdm9pZCAwPT09KG49dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT0ocj1uW3RdKSlyZXR1cm4gdGhpcztpZihyPT09ZXx8ci5saXN0ZW5lcj09PWUpMD09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTooZGVsZXRlIG5bdF0sbi5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KFwicmVtb3ZlTGlzdGVuZXJcIix0LHIubGlzdGVuZXJ8fGUpKTtlbHNlIGlmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHIpe2ZvcihpPS0xLG89ci5sZW5ndGgtMTtvPj0wO28tLSlpZihyW29dPT09ZXx8cltvXS5saXN0ZW5lcj09PWUpe3M9cltvXS5saXN0ZW5lcixpPW87YnJlYWt9aWYoaTwwKXJldHVybiB0aGlzOzA9PT1pP3Iuc2hpZnQoKTpmdW5jdGlvbih0LGUpe2Zvcig7ZSsxPHQubGVuZ3RoO2UrKyl0W2VdPXRbZSsxXTt0LnBvcCgpfShyLGkpLDE9PT1yLmxlbmd0aCYmKG5bdF09clswXSksdm9pZCAwIT09bi5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KFwicmVtb3ZlTGlzdGVuZXJcIix0LHN8fGUpfXJldHVybiB0aGlzfSxvLnByb3RvdHlwZS5vZmY9by5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIsby5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbjtpZih2b2lkIDA9PT0ocj10aGlzLl9ldmVudHMpKXJldHVybiB0aGlzO2lmKHZvaWQgMD09PXIucmVtb3ZlTGlzdGVuZXIpcmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoPyh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKTp2b2lkIDAhPT1yW3RdJiYoMD09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTpkZWxldGUgclt0XSksdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIGksbz1PYmplY3Qua2V5cyhyKTtmb3Iobj0wO248by5sZW5ndGg7KytuKVwicmVtb3ZlTGlzdGVuZXJcIiE9PShpPW9bbl0pJiZ0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhpKTtyZXR1cm4gdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoXCJyZW1vdmVMaXN0ZW5lclwiKSx0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wLHRoaXN9aWYoXCJmdW5jdGlvblwiPT10eXBlb2YoZT1yW3RdKSl0aGlzLnJlbW92ZUxpc3RlbmVyKHQsZSk7ZWxzZSBpZih2b2lkIDAhPT1lKWZvcihuPWUubGVuZ3RoLTE7bj49MDtuLS0pdGhpcy5yZW1vdmVMaXN0ZW5lcih0LGVbbl0pO3JldHVybiB0aGlzfSxvLnByb3RvdHlwZS5saXN0ZW5lcnM9ZnVuY3Rpb24odCl7cmV0dXJuIGgodGhpcyx0LCEwKX0sby5wcm90b3R5cGUucmF3TGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3JldHVybiBoKHRoaXMsdCwhMSl9LG8ubGlzdGVuZXJDb3VudD1mdW5jdGlvbih0LGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQubGlzdGVuZXJDb3VudD90Lmxpc3RlbmVyQ291bnQoZSk6cC5jYWxsKHQsZSl9LG8ucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9cCxvLnByb3RvdHlwZS5ldmVudE5hbWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50PjA/ZSh0aGlzLl9ldmVudHMpOltdfX0sNjQ1Oih0LGUpPT57ZS5yZWFkPWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIG8scyxhPTgqaS1uLTEsdT0oMTw8YSktMSxsPXU+PjEsYz0tNyxmPXI/aS0xOjAsaD1yPy0xOjEscD10W2UrZl07Zm9yKGYrPWgsbz1wJigxPDwtYyktMSxwPj49LWMsYys9YTtjPjA7bz0yNTYqbyt0W2UrZl0sZis9aCxjLT04KTtmb3Iocz1vJigxPDwtYyktMSxvPj49LWMsYys9bjtjPjA7cz0yNTYqcyt0W2UrZl0sZis9aCxjLT04KTtpZigwPT09bylvPTEtbDtlbHNle2lmKG89PT11KXJldHVybiBzP05hTjoxLzAqKHA/LTE6MSk7cys9TWF0aC5wb3coMixuKSxvLT1sfXJldHVybihwPy0xOjEpKnMqTWF0aC5wb3coMixvLW4pfSxlLndyaXRlPWZ1bmN0aW9uKHQsZSxyLG4saSxvKXt2YXIgcyxhLHUsbD04Km8taS0xLGM9KDE8PGwpLTEsZj1jPj4xLGg9MjM9PT1pP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxwPW4/MDpvLTEsZD1uPzE6LTEseT1lPDB8fDA9PT1lJiYxL2U8MD8xOjA7Zm9yKGU9TWF0aC5hYnMoZSksaXNOYU4oZSl8fGU9PT0xLzA/KGE9aXNOYU4oZSk/MTowLHM9Yyk6KHM9TWF0aC5mbG9vcihNYXRoLmxvZyhlKS9NYXRoLkxOMiksZSoodT1NYXRoLnBvdygyLC1zKSk8MSYmKHMtLSx1Kj0yKSwoZSs9cytmPj0xP2gvdTpoKk1hdGgucG93KDIsMS1mKSkqdT49MiYmKHMrKyx1Lz0yKSxzK2Y+PWM/KGE9MCxzPWMpOnMrZj49MT8oYT0oZSp1LTEpKk1hdGgucG93KDIsaSkscys9Zik6KGE9ZSpNYXRoLnBvdygyLGYtMSkqTWF0aC5wb3coMixpKSxzPTApKTtpPj04O3RbcitwXT0yNTUmYSxwKz1kLGEvPTI1NixpLT04KTtmb3Iocz1zPDxpfGEsbCs9aTtsPjA7dFtyK3BdPTI1NSZzLHArPWQscy89MjU2LGwtPTgpO3RbcitwLWRdfD0xMjgqeX19LDcxNzp0PT57XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT90LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlJiYodC5zdXBlcl89ZSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSl9OnQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKGUpe3Quc3VwZXJfPWU7dmFyIHI9ZnVuY3Rpb24oKXt9O3IucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyByLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9fX0sNTk1OmZ1bmN0aW9uKHQpe3QuZXhwb3J0cz0oKCk9PntcInVzZSBzdHJpY3RcIjt2YXIgdD17MjU1Oih0LGUpPT57ZS5sPWNsYXNze2hleFNsaWNlKHQ9MCxlKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKHRoaXMuc2xpY2UodCxlKSwodD0+KFwiMDBcIit0LnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKSkuam9pbihcIlwiKX19fSw0ODoodCxlLHIpPT57Y29uc3Qgbj1yKDc2NSkse2ludGVybmFsQmluZGluZzppLEFycmF5Om8sQXJyYXlJc0FycmF5OnMsQXJyYXlQcm90b3R5cGVGaWx0ZXI6YSxBcnJheVByb3RvdHlwZUZvckVhY2g6dSxBcnJheVByb3RvdHlwZVB1c2g6bCxBcnJheVByb3RvdHlwZVB1c2hBcHBseTpjLEFycmF5UHJvdG90eXBlU29ydDpmLEFycmF5UHJvdG90eXBlVW5zaGlmdDpoLEJpZ0ludFByb3RvdHlwZVZhbHVlT2Y6cCxCb29sZWFuUHJvdG90eXBlVmFsdWVPZjpkLERhdGVQcm90b3R5cGVHZXRUaW1lOnksRGF0ZVByb3RvdHlwZVRvSVNPU3RyaW5nOmcsRGF0ZVByb3RvdHlwZVRvU3RyaW5nOmIsRXJyb3JQcm90b3R5cGVUb1N0cmluZzptLEZ1bmN0aW9uUHJvdG90eXBlQ2FsbDp3LEZ1bmN0aW9uUHJvdG90eXBlVG9TdHJpbmc6XyxKU09OU3RyaW5naWZ5OkUsTWFwUHJvdG90eXBlR2V0U2l6ZTp2LE1hcFByb3RvdHlwZUVudHJpZXM6UyxNYXRoRmxvb3I6QSxNYXRoTWF4OlQsTWF0aE1pbjpJLE1hdGhSb3VuZDpCLE1hdGhTcXJ0Ok8sTnVtYmVyOngsTnVtYmVySXNOYU46UixOdW1iZXJQYXJzZUZsb2F0Ok4sTnVtYmVyUGFyc2VJbnQ6TCxOdW1iZXJQcm90b3R5cGVWYWx1ZU9mOlAsT2JqZWN0Ok0sT2JqZWN0QXNzaWduOlUsT2JqZWN0Q3JlYXRlOmosT2JqZWN0RGVmaW5lUHJvcGVydHk6ayxPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6JCxPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOkYsT2JqZWN0R2V0T3duUHJvcGVydHlTeW1ib2xzOkQsT2JqZWN0R2V0UHJvdG90eXBlT2Y6QyxPYmplY3RJczpHLE9iamVjdEtleXM6VyxPYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eTp6LE9iamVjdFByb3RvdHlwZVByb3BlcnR5SXNFbnVtZXJhYmxlOkgsT2JqZWN0U2VhbDpZLE9iamVjdFNldFByb3RvdHlwZU9mOnEsUmVmbGVjdE93bktleXM6VixSZWdFeHA6SyxSZWdFeHBQcm90b3R5cGVUZXN0OlgsUmVnRXhwUHJvdG90eXBlVG9TdHJpbmc6SixTYWZlU3RyaW5nSXRlcmF0b3I6WixTYWZlTWFwOlEsU2FmZVNldDp0dCxTZXRQcm90b3R5cGVHZXRTaXplOmV0LFNldFByb3RvdHlwZVZhbHVlczpydCxTdHJpbmc6bnQsU3RyaW5nUHJvdG90eXBlQ2hhckNvZGVBdDppdCxTdHJpbmdQcm90b3R5cGVDb2RlUG9pbnRBdDpvdCxTdHJpbmdQcm90b3R5cGVJbmNsdWRlczpzdCxTdHJpbmdQcm90b3R5cGVOb3JtYWxpemU6YXQsU3RyaW5nUHJvdG90eXBlUGFkRW5kOnV0LFN0cmluZ1Byb3RvdHlwZVBhZFN0YXJ0Omx0LFN0cmluZ1Byb3RvdHlwZVJlcGVhdDpjdCxTdHJpbmdQcm90b3R5cGVSZXBsYWNlOmZ0LFN0cmluZ1Byb3RvdHlwZVNsaWNlOmh0LFN0cmluZ1Byb3RvdHlwZVNwbGl0OnB0LFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlOmR0LFN0cmluZ1Byb3RvdHlwZVRyaW06eXQsU3RyaW5nUHJvdG90eXBlVmFsdWVPZjpndCxTeW1ib2xQcm90b3R5cGVUb1N0cmluZzpidCxTeW1ib2xQcm90b3R5cGVWYWx1ZU9mOm10LFN5bWJvbEl0ZXJhdG9yOnd0LFN5bWJvbFRvU3RyaW5nVGFnOl90LFR5cGVkQXJyYXlQcm90b3R5cGVHZXRMZW5ndGg6RXQsVHlwZWRBcnJheVByb3RvdHlwZUdldFN5bWJvbFRvU3RyaW5nVGFnOnZ0LFVpbnQ4QXJyYXk6U3QsdW5jdXJyeVRoaXM6QXR9PW4se2dldE93bk5vbkluZGV4UHJvcGVydGllczpUdCxnZXRQcm9taXNlRGV0YWlsczpJdCxnZXRQcm94eURldGFpbHM6QnQsa1BlbmRpbmc6T3Qsa1JlamVjdGVkOnh0LHByZXZpZXdFbnRyaWVzOlJ0LGdldENvbnN0cnVjdG9yTmFtZTpOdCxnZXRFeHRlcm5hbFZhbHVlOkx0LHByb3BlcnR5RmlsdGVyOntBTExfUFJPUEVSVElFUzpQdCxPTkxZX0VOVU1FUkFCTEU6TXR9LFByb3h5OlV0fT1yKDg5MSkse2N1c3RvbUluc3BlY3RTeW1ib2w6anQsaXNFcnJvcjprdCxqb2luOiR0LHJlbW92ZUNvbG9yczpGdH09cigzMzUpLHtjb2Rlczp7RVJSX0lOVkFMSURfQVJHX1RZUEU6RHR9LGlzU3RhY2tPdmVyZmxvd0Vycm9yOkN0fT1yKDEwMSkse2lzQXN5bmNGdW5jdGlvbjpHdCxpc0dlbmVyYXRvckZ1bmN0aW9uOld0LGlzQW55QXJyYXlCdWZmZXI6enQsaXNBcnJheUJ1ZmZlcjpIdCxpc0FyZ3VtZW50c09iamVjdDpZdCxpc0JveGVkUHJpbWl0aXZlOnF0LGlzRGF0YVZpZXc6VnQsaXNFeHRlcm5hbDpLdCxpc01hcDpYdCxpc01hcEl0ZXJhdG9yOkp0LGlzTW9kdWxlTmFtZXNwYWNlT2JqZWN0Olp0LGlzTmF0aXZlRXJyb3I6UXQsaXNQcm9taXNlOnRlLGlzU2V0OmVlLGlzU2V0SXRlcmF0b3I6cmUsaXNXZWFrTWFwOm5lLGlzV2Vha1NldDppZSxpc1JlZ0V4cDpvZSxpc0RhdGU6c2UsaXNUeXBlZEFycmF5OmFlLGlzU3RyaW5nT2JqZWN0OnVlLGlzTnVtYmVyT2JqZWN0OmxlLGlzQm9vbGVhbk9iamVjdDpjZSxpc0JpZ0ludE9iamVjdDpmZX09cig2MyksaGU9cigxODMpLHtOYXRpdmVNb2R1bGU6cGV9PXIoOTkyKSx7dmFsaWRhdGVPYmplY3Q6ZGV9PXIoMzU2KTtsZXQgeWU7Y29uc3QgZ2U9bmV3IHR0KGEoRihyLmcpLCh0PT5YKC9eW0EtWl1bYS16QS1aMC05XSskLyx0KSkpKSxiZT10PT52b2lkIDA9PT10JiZ2b2lkIDAhPT10LG1lPVkoe3Nob3dIaWRkZW46ITEsZGVwdGg6Mixjb2xvcnM6ITEsY3VzdG9tSW5zcGVjdDohMCxzaG93UHJveHk6ITEsbWF4QXJyYXlMZW5ndGg6MTAwLG1heFN0cmluZ0xlbmd0aDoxZTQsYnJlYWtMZW5ndGg6ODAsY29tcGFjdDozLHNvcnRlZDohMSxnZXR0ZXJzOiExfSksd2U9L1tcXHgwMC1cXHgxZlxceDI3XFx4NWNcXHg3Zi1cXHg5Zl0vLF9lPS9bXFx4MDAtXFx4MWZcXHgyN1xceDVjXFx4N2YtXFx4OWZdL2csRWU9L1tcXHgwMC1cXHgxZlxceDVjXFx4N2YtXFx4OWZdLyx2ZT0vW1xceDAwLVxceDFmXFx4NWNcXHg3Zi1cXHg5Zl0vZyxTZT0vXlthLXpBLVpfXVthLXpBLVpfMC05XSokLyxBZT0vXigwfFsxLTldWzAtOV0qKSQvLFRlPS9eICAgIGF0ICg/OlteL1xcXFwoXSsgXFwofClub2RlOiguKyk6XFxkKzpcXGQrXFwpPyQvLEllPS9eICAgIGF0ICg/OlteL1xcXFwoXSsgXFwofCkoLispXFwuanM6XFxkKzpcXGQrXFwpPyQvLEJlPS9bL1xcXFxdbm9kZV9tb2R1bGVzWy9cXFxcXSguKz8pKD89Wy9cXFxcXSkvZyxPZT0vXihcXHMrW14oXSo/KVxccyp7Lyx4ZT0vKFxcL1xcLy4qP1xcbil8KFxcL1xcKigufFxcbikqP1xcKlxcLykvZyxSZT1bXCJcXFxceDAwXCIsXCJcXFxceDAxXCIsXCJcXFxceDAyXCIsXCJcXFxceDAzXCIsXCJcXFxceDA0XCIsXCJcXFxceDA1XCIsXCJcXFxceDA2XCIsXCJcXFxceDA3XCIsXCJcXFxcYlwiLFwiXFxcXHRcIixcIlxcXFxuXCIsXCJcXFxceDBCXCIsXCJcXFxcZlwiLFwiXFxcXHJcIixcIlxcXFx4MEVcIixcIlxcXFx4MEZcIixcIlxcXFx4MTBcIixcIlxcXFx4MTFcIixcIlxcXFx4MTJcIixcIlxcXFx4MTNcIixcIlxcXFx4MTRcIixcIlxcXFx4MTVcIixcIlxcXFx4MTZcIixcIlxcXFx4MTdcIixcIlxcXFx4MThcIixcIlxcXFx4MTlcIixcIlxcXFx4MUFcIixcIlxcXFx4MUJcIixcIlxcXFx4MUNcIixcIlxcXFx4MURcIixcIlxcXFx4MUVcIixcIlxcXFx4MUZcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXFxcXCdcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXFxcXFxcXFxcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXFxcXHg3RlwiLFwiXFxcXHg4MFwiLFwiXFxcXHg4MVwiLFwiXFxcXHg4MlwiLFwiXFxcXHg4M1wiLFwiXFxcXHg4NFwiLFwiXFxcXHg4NVwiLFwiXFxcXHg4NlwiLFwiXFxcXHg4N1wiLFwiXFxcXHg4OFwiLFwiXFxcXHg4OVwiLFwiXFxcXHg4QVwiLFwiXFxcXHg4QlwiLFwiXFxcXHg4Q1wiLFwiXFxcXHg4RFwiLFwiXFxcXHg4RVwiLFwiXFxcXHg4RlwiLFwiXFxcXHg5MFwiLFwiXFxcXHg5MVwiLFwiXFxcXHg5MlwiLFwiXFxcXHg5M1wiLFwiXFxcXHg5NFwiLFwiXFxcXHg5NVwiLFwiXFxcXHg5NlwiLFwiXFxcXHg5N1wiLFwiXFxcXHg5OFwiLFwiXFxcXHg5OVwiLFwiXFxcXHg5QVwiLFwiXFxcXHg5QlwiLFwiXFxcXHg5Q1wiLFwiXFxcXHg5RFwiLFwiXFxcXHg5RVwiLFwiXFxcXHg5RlwiXSxOZT1uZXcgSyhcIltcXFxcdTAwMUJcXFxcdTAwOUJdW1tcXFxcXSgpIzs/XSooPzooPzooPzpbYS16QS1aXFxcXGRdKig/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSopKik/XFxcXHUwMDA3KXwoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW50cXJ5PT48fl0pKVwiLFwiZ1wiKTtsZXQgTGU7ZnVuY3Rpb24gUGUodCxlKXtjb25zdCByPXtidWRnZXQ6e30saW5kZW50YXRpb25Mdmw6MCxzZWVuOltdLGN1cnJlbnREZXB0aDowLHN0eWxpemU6Q2Usc2hvd0hpZGRlbjptZS5zaG93SGlkZGVuLGRlcHRoOm1lLmRlcHRoLGNvbG9yczptZS5jb2xvcnMsY3VzdG9tSW5zcGVjdDptZS5jdXN0b21JbnNwZWN0LHNob3dQcm94eTptZS5zaG93UHJveHksbWF4QXJyYXlMZW5ndGg6bWUubWF4QXJyYXlMZW5ndGgsbWF4U3RyaW5nTGVuZ3RoOm1lLm1heFN0cmluZ0xlbmd0aCxicmVha0xlbmd0aDptZS5icmVha0xlbmd0aCxjb21wYWN0Om1lLmNvbXBhY3Qsc29ydGVkOm1lLnNvcnRlZCxnZXR0ZXJzOm1lLmdldHRlcnN9O2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlpZihhcmd1bWVudHMubGVuZ3RoPjImJih2b2lkIDAhPT1hcmd1bWVudHNbMl0mJihyLmRlcHRoPWFyZ3VtZW50c1syXSksYXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJihyLmNvbG9ycz1hcmd1bWVudHNbM10pKSxcImJvb2xlYW5cIj09dHlwZW9mIGUpci5zaG93SGlkZGVuPWU7ZWxzZSBpZihlKXtjb25zdCB0PVcoZSk7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDsrK24pe2NvbnN0IGk9dFtuXTt6KG1lLGkpfHxcInN0eWxpemVcIj09PWk/cltpXT1lW2ldOnZvaWQgMD09PXIudXNlck9wdGlvbnMmJihyLnVzZXJPcHRpb25zPWUpfX1yZXR1cm4gci5jb2xvcnMmJihyLnN0eWxpemU9RGUpLG51bGw9PT1yLm1heEFycmF5TGVuZ3RoJiYoci5tYXhBcnJheUxlbmd0aD0xLzApLG51bGw9PT1yLm1heFN0cmluZ0xlbmd0aCYmKHIubWF4U3RyaW5nTGVuZ3RoPTEvMCksS2Uocix0LDApfVBlLmN1c3RvbT1qdCxrKFBlLFwiZGVmYXVsdE9wdGlvbnNcIix7Z2V0OigpPT5tZSxzZXQ6dD0+KGRlKHQsXCJvcHRpb25zXCIpLFUobWUsdCkpfSk7Y29uc3QgTWU9MzksVWU9NDk7ZnVuY3Rpb24gamUodCxlKXtrKFBlLmNvbG9ycyxlLHtnZXQoKXtyZXR1cm4gdGhpc1t0XX0sc2V0KGUpe3RoaXNbdF09ZX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITF9KX1mdW5jdGlvbiBrZSh0LGUpe3JldHVybi0xPT09ZT9gXCIke3R9XCJgOi0yPT09ZT9gXFxgJHt0fVxcYGA6YCcke3R9J2B9UGUuY29sb3JzPVUoaihudWxsKSx7cmVzZXQ6WzAsMF0sYm9sZDpbMSwyMl0sZGltOlsyLDIyXSxpdGFsaWM6WzMsMjNdLHVuZGVybGluZTpbNCwyNF0sYmxpbms6WzUsMjVdLGludmVyc2U6WzcsMjddLGhpZGRlbjpbOCwyOF0sc3RyaWtldGhyb3VnaDpbOSwyOV0sZG91YmxldW5kZXJsaW5lOlsyMSwyNF0sYmxhY2s6WzMwLE1lXSxyZWQ6WzMxLE1lXSxncmVlbjpbMzIsTWVdLHllbGxvdzpbMzMsTWVdLGJsdWU6WzM0LE1lXSxtYWdlbnRhOlszNSxNZV0sY3lhbjpbMzYsTWVdLHdoaXRlOlszNyxNZV0sYmdCbGFjazpbNDAsVWVdLGJnUmVkOls0MSxVZV0sYmdHcmVlbjpbNDIsVWVdLGJnWWVsbG93Ols0MyxVZV0sYmdCbHVlOls0NCxVZV0sYmdNYWdlbnRhOls0NSxVZV0sYmdDeWFuOls0NixVZV0sYmdXaGl0ZTpbNDcsVWVdLGZyYW1lZDpbNTEsNTRdLG92ZXJsaW5lZDpbNTMsNTVdLGdyYXk6WzkwLE1lXSxyZWRCcmlnaHQ6WzkxLE1lXSxncmVlbkJyaWdodDpbOTIsTWVdLHllbGxvd0JyaWdodDpbOTMsTWVdLGJsdWVCcmlnaHQ6Wzk0LE1lXSxtYWdlbnRhQnJpZ2h0Ols5NSxNZV0sY3lhbkJyaWdodDpbOTYsTWVdLHdoaXRlQnJpZ2h0Ols5NyxNZV0sYmdHcmF5OlsxMDAsVWVdLGJnUmVkQnJpZ2h0OlsxMDEsVWVdLGJnR3JlZW5CcmlnaHQ6WzEwMixVZV0sYmdZZWxsb3dCcmlnaHQ6WzEwMyxVZV0sYmdCbHVlQnJpZ2h0OlsxMDQsVWVdLGJnTWFnZW50YUJyaWdodDpbMTA1LFVlXSxiZ0N5YW5CcmlnaHQ6WzEwNixVZV0sYmdXaGl0ZUJyaWdodDpbMTA3LFVlXX0pLGplKFwiZ3JheVwiLFwiZ3JleVwiKSxqZShcImdyYXlcIixcImJsYWNrQnJpZ2h0XCIpLGplKFwiYmdHcmF5XCIsXCJiZ0dyZXlcIiksamUoXCJiZ0dyYXlcIixcImJnQmxhY2tCcmlnaHRcIiksamUoXCJkaW1cIixcImZhaW50XCIpLGplKFwic3RyaWtldGhyb3VnaFwiLFwiY3Jvc3NlZG91dFwiKSxqZShcInN0cmlrZXRocm91Z2hcIixcInN0cmlrZVRocm91Z2hcIiksamUoXCJzdHJpa2V0aHJvdWdoXCIsXCJjcm9zc2VkT3V0XCIpLGplKFwiaGlkZGVuXCIsXCJjb25jZWFsXCIpLGplKFwiaW52ZXJzZVwiLFwic3dhcENvbG9yc1wiKSxqZShcImludmVyc2VcIixcInN3YXBjb2xvcnNcIiksamUoXCJkb3VibGV1bmRlcmxpbmVcIixcImRvdWJsZVVuZGVybGluZVwiKSxQZS5zdHlsZXM9VShqKG51bGwpLHtzcGVjaWFsOlwiY3lhblwiLG51bWJlcjpcInllbGxvd1wiLGJpZ2ludDpcInllbGxvd1wiLGJvb2xlYW46XCJ5ZWxsb3dcIix1bmRlZmluZWQ6XCJncmV5XCIsbnVsbDpcImJvbGRcIixzdHJpbmc6XCJncmVlblwiLHN5bWJvbDpcImdyZWVuXCIsZGF0ZTpcIm1hZ2VudGFcIixyZWdleHA6XCJyZWRcIixtb2R1bGU6XCJ1bmRlcmxpbmVcIn0pO2NvbnN0ICRlPXQ9PlJlW2l0KHQpXTtmdW5jdGlvbiBGZSh0KXtsZXQgZT13ZSxyPV9lLG49Mzk7aWYoc3QodCxcIidcIikmJihzdCh0LCdcIicpP3N0KHQsXCJgXCIpfHxzdCh0LFwiJHtcIil8fChuPS0yKTpuPS0xLDM5IT09biYmKGU9RWUscj12ZSkpLHQubGVuZ3RoPDVlMyYmIVgoZSx0KSlyZXR1cm4ga2UodCxuKTtpZih0Lmxlbmd0aD4xMDApcmV0dXJuIGtlKHQ9ZnQodCxyLCRlKSxuKTtsZXQgaT1cIlwiLG89MDtjb25zdCBzPXQubGVuZ3RoO2ZvcihsZXQgZT0wO2U8cztlKyspe2NvbnN0IHI9aXQodCxlKTsocj09PW58fDkyPT09cnx8cjwzMnx8cj4xMjYmJnI8MTYwKSYmKGkrPW89PT1lP1JlW3JdOmAke2h0KHQsbyxlKX0ke1JlW3JdfWAsbz1lKzEpfXJldHVybiBvIT09cyYmKGkrPWh0KHQsbykpLGtlKGksbil9ZnVuY3Rpb24gRGUodCxlKXtjb25zdCByPVBlLnN0eWxlc1tlXTtpZih2b2lkIDAhPT1yKXtjb25zdCBlPVBlLmNvbG9yc1tyXTtpZih2b2lkIDAhPT1lKXJldHVybmBcdTAwMWJbJHtlWzBdfW0ke3R9XHUwMDFiWyR7ZVsxXX1tYH1yZXR1cm4gdH1mdW5jdGlvbiBDZSh0KXtyZXR1cm4gdH1mdW5jdGlvbiBHZSgpe3JldHVybltdfWZ1bmN0aW9uIFdlKHQsZSl7dHJ5e3JldHVybiB0IGluc3RhbmNlb2YgZX1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24gemUodCxlLHIsbil7bGV0IGk7Y29uc3Qgbz10O2Zvcig7dHx8YmUodCk7KXtjb25zdCBzPSQodCxcImNvbnN0cnVjdG9yXCIpO2lmKHZvaWQgMCE9PXMmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHMudmFsdWUmJlwiXCIhPT1zLnZhbHVlLm5hbWUmJldlKG8scy52YWx1ZSkpcmV0dXJuIHZvaWQgMD09PW58fGk9PT10JiZnZS5oYXMocy52YWx1ZS5uYW1lKXx8SGUoZSxvLGl8fG8scixuKSxzLnZhbHVlLm5hbWU7dD1DKHQpLHZvaWQgMD09PWkmJihpPXQpfWlmKG51bGw9PT1pKXJldHVybiBudWxsO2NvbnN0IHM9TnQobyk7aWYocj5lLmRlcHRoJiZudWxsIT09ZS5kZXB0aClyZXR1cm5gJHtzfSA8Q29tcGxleCBwcm90b3R5cGU+YDtjb25zdCBhPXplKGksZSxyKzEsbik7cmV0dXJuIG51bGw9PT1hP2Ake3N9IDwke1BlKGksey4uLmUsY3VzdG9tSW5zcGVjdDohMSxkZXB0aDotMX0pfT5gOmAke3N9IDwke2F9PmB9ZnVuY3Rpb24gSGUodCxlLHIsbixpKXtsZXQgbyxzLGE9MDtkb3tpZigwIT09YXx8ZT09PXIpe2lmKG51bGw9PT0ocj1DKHIpKSlyZXR1cm47Y29uc3QgdD0kKHIsXCJjb25zdHJ1Y3RvclwiKTtpZih2b2lkIDAhPT10JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnZhbHVlJiZnZS5oYXModC52YWx1ZS5uYW1lKSlyZXR1cm59MD09PWE/cz1uZXcgdHQ6dShvLCh0PT5zLmFkZCh0KSkpLG89VihyKTtmb3IoY29uc3QgdSBvZiBvKXtpZihcImNvbnN0cnVjdG9yXCI9PT11fHx6KGUsdSl8fDAhPT1hJiZzLmhhcyh1KSljb250aW51ZTtjb25zdCBvPSQocix1KTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBvLnZhbHVlKWNvbnRpbnVlO2NvbnN0IGM9ZHIodCxyLG4sdSwwLG8sZSk7dC5jb2xvcnM/bChpLGBcdTAwMWJbMm0ke2N9XHUwMDFiWzIybWApOmwoaSxjKX19d2hpbGUoMyE9KythKX1mdW5jdGlvbiBZZSh0LGUscixuPVwiXCIpe3JldHVybiBudWxsPT09dD9cIlwiIT09ZSYmciE9PWU/YFske3J9JHtufTogbnVsbCBwcm90b3R5cGVdIFske2V9XSBgOmBbJHtyfSR7bn06IG51bGwgcHJvdG90eXBlXSBgOlwiXCIhPT1lJiZ0IT09ZT9gJHt0fSR7bn0gWyR7ZX1dIGA6YCR7dH0ke259IGB9ZnVuY3Rpb24gcWUodCxlKXtsZXQgcjtjb25zdCBuPUQodCk7aWYoZSlyPUYodCksMCE9PW4ubGVuZ3RoJiZjKHIsbik7ZWxzZXt0cnl7cj1XKHQpfWNhdGNoKGUpe2hlKFF0KGUpJiZcIlJlZmVyZW5jZUVycm9yXCI9PT1lLm5hbWUmJlp0KHQpKSxyPUYodCl9MCE9PW4ubGVuZ3RoJiZjKHIsYShuLChlPT5IKHQsZSkpKSl9cmV0dXJuIHJ9ZnVuY3Rpb24gVmUodCxlLHIpe2xldCBuPVwiXCI7cmV0dXJuIG51bGw9PT1lJiYobj1OdCh0KSxuPT09ciYmKG49XCJPYmplY3RcIikpLFllKGUscixuKX1mdW5jdGlvbiBLZSh0LGUscixpKXtpZihcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmIWJlKGUpKXJldHVybiBRZSh0LnN0eWxpemUsZSx0KTtpZihudWxsPT09ZSlyZXR1cm4gdC5zdHlsaXplKFwibnVsbFwiLFwibnVsbFwiKTtjb25zdCBvPWUsYT1CdChlLCEhdC5zaG93UHJveHkpO2lmKHZvaWQgMCE9PWEpe2lmKHQuc2hvd1Byb3h5KXJldHVybiBmdW5jdGlvbih0LGUscil7aWYocj50LmRlcHRoJiZudWxsIT09dC5kZXB0aClyZXR1cm4gdC5zdHlsaXplKFwiUHJveHkgW0FycmF5XVwiLFwic3BlY2lhbFwiKTtyKz0xLHQuaW5kZW50YXRpb25MdmwrPTI7Y29uc3Qgbj1bS2UodCxlWzBdLHIpLEtlKHQsZVsxXSxyKV07cmV0dXJuIHQuaW5kZW50YXRpb25MdmwtPTIsZ3IodCxuLFwiXCIsW1wiUHJveHkgW1wiLFwiXVwiXSwyLHIpfSh0LGEscik7ZT1hfWlmKHQuY3VzdG9tSW5zcGVjdCl7Y29uc3Qgbj1lW2p0XTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuJiZuIT09UGUmJighZS5jb25zdHJ1Y3Rvcnx8ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUhPT1lKSl7Y29uc3QgZT1udWxsPT09dC5kZXB0aD9udWxsOnQuZGVwdGgtcixpPXcobixvLGUsZnVuY3Rpb24odCxlKXtjb25zdCByPXtzdHlsaXplOnQuc3R5bGl6ZSxzaG93SGlkZGVuOnQuc2hvd0hpZGRlbixkZXB0aDp0LmRlcHRoLGNvbG9yczp0LmNvbG9ycyxjdXN0b21JbnNwZWN0OnQuY3VzdG9tSW5zcGVjdCxzaG93UHJveHk6dC5zaG93UHJveHksbWF4QXJyYXlMZW5ndGg6dC5tYXhBcnJheUxlbmd0aCxtYXhTdHJpbmdMZW5ndGg6dC5tYXhTdHJpbmdMZW5ndGgsYnJlYWtMZW5ndGg6dC5icmVha0xlbmd0aCxjb21wYWN0OnQuY29tcGFjdCxzb3J0ZWQ6dC5zb3J0ZWQsZ2V0dGVyczp0LmdldHRlcnMsLi4udC51c2VyT3B0aW9uc307aWYoZSl7cShyLG51bGwpO2Zvcihjb25zdCB0IG9mIFcocikpXCJvYmplY3RcIiE9dHlwZW9mIHJbdF0mJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHJbdF18fG51bGw9PT1yW3RdfHxkZWxldGUgclt0XTtyLnN0eWxpemU9cSgoKGUscik9PntsZXQgbjt0cnl7bj1gJHt0LnN0eWxpemUoZSxyKX1gfWNhdGNoe31yZXR1cm5cInN0cmluZ1wiIT10eXBlb2Ygbj9lOm59KSxudWxsKX1yZXR1cm4gcn0odCx2b2lkIDAhPT1hfHwhKG8gaW5zdGFuY2VvZiBNKSkpO2lmKGkhPT1vKXJldHVyblwic3RyaW5nXCIhPXR5cGVvZiBpP0tlKHQsaSxyKTppLnJlcGxhY2UoL1xcbi9nLGBcXG4ke1wiIFwiLnJlcGVhdCh0LmluZGVudGF0aW9uTHZsKX1gKX19aWYodC5zZWVuLmluY2x1ZGVzKGUpKXtsZXQgcj0xO3JldHVybiB2b2lkIDA9PT10LmNpcmN1bGFyPyh0LmNpcmN1bGFyPW5ldyBRLHQuY2lyY3VsYXIuc2V0KGUscikpOihyPXQuY2lyY3VsYXIuZ2V0KGUpLHZvaWQgMD09PXImJihyPXQuY2lyY3VsYXIuc2l6ZSsxLHQuY2lyY3VsYXIuc2V0KGUscikpKSx0LnN0eWxpemUoYFtDaXJjdWxhciAqJHtyfV1gLFwic3BlY2lhbFwiKX1yZXR1cm4gZnVuY3Rpb24odCxlLHIsaSl7bGV0IG8sYTt0LnNob3dIaWRkZW4mJihyPD10LmRlcHRofHxudWxsPT09dC5kZXB0aCkmJihhPVtdKTtjb25zdCB1PXplKGUsdCxyLGEpO3ZvaWQgMCE9PWEmJjA9PT1hLmxlbmd0aCYmKGE9dm9pZCAwKTtsZXQgbD1lW190XTsoXCJzdHJpbmdcIiE9dHlwZW9mIGx8fFwiXCIhPT1sJiYodC5zaG93SGlkZGVuP3o6SCkoZSxfdCkpJiYobD1cIlwiKTtsZXQgYyxmPVwiXCIsdz1HZSxFPSEwLEE9MDtjb25zdCBUPXQuc2hvd0hpZGRlbj9QdDpNdDtsZXQgSSxCPTA7aWYoZVt3dF18fG51bGw9PT11KWlmKEU9ITEscyhlKSl7Y29uc3QgdD1cIkFycmF5XCIhPT11fHxcIlwiIT09bD9ZZSh1LGwsXCJBcnJheVwiLGAoJHtlLmxlbmd0aH0pYCk6XCJcIjtpZihvPVR0KGUsVCksYz1bYCR7dH1bYCxcIl1cIl0sMD09PWUubGVuZ3RoJiYwPT09by5sZW5ndGgmJnZvaWQgMD09PWEpcmV0dXJuYCR7Y1swXX1dYDtCPTIsdz1ucn1lbHNlIGlmKGVlKGUpKXtjb25zdCByPWV0KGUpLG49WWUodSxsLFwiU2V0XCIsYCgke3J9KWApO2lmKG89cWUoZSx0LnNob3dIaWRkZW4pLHc9bnVsbCE9PXU/b3IuYmluZChudWxsLGUpOm9yLmJpbmQobnVsbCxydChlKSksMD09PXImJjA9PT1vLmxlbmd0aCYmdm9pZCAwPT09YSlyZXR1cm5gJHtufXt9YDtjPVtgJHtufXtgLFwifVwiXX1lbHNlIGlmKFh0KGUpKXtjb25zdCByPXYoZSksbj1ZZSh1LGwsXCJNYXBcIixgKCR7cn0pYCk7aWYobz1xZShlLHQuc2hvd0hpZGRlbiksdz1udWxsIT09dT9zci5iaW5kKG51bGwsZSk6c3IuYmluZChudWxsLFMoZSkpLDA9PT1yJiYwPT09by5sZW5ndGgmJnZvaWQgMD09PWEpcmV0dXJuYCR7bn17fWA7Yz1bYCR7bn17YCxcIn1cIl19ZWxzZSBpZihhZShlKSl7bz1UdChlLFQpO2xldCByPWUsaT1cIlwiO251bGw9PT11JiYoaT12dChlKSxyPW5ldyBuW2ldKGUpKTtjb25zdCBzPUV0KGUpO2lmKGM9W2Ake1llKHUsbCxpLGAoJHtzfSlgKX1bYCxcIl1cIl0sMD09PWUubGVuZ3RoJiYwPT09by5sZW5ndGgmJiF0LnNob3dIaWRkZW4pcmV0dXJuYCR7Y1swXX1dYDt3PWlyLmJpbmQobnVsbCxyLHMpLEI9Mn1lbHNlIEp0KGUpPyhvPXFlKGUsdC5zaG93SGlkZGVuKSxjPVhlKFwiTWFwXCIsbCksdz1oci5iaW5kKG51bGwsYykpOnJlKGUpPyhvPXFlKGUsdC5zaG93SGlkZGVuKSxjPVhlKFwiU2V0XCIsbCksdz1oci5iaW5kKG51bGwsYykpOkU9ITA7aWYoRSlpZihvPXFlKGUsdC5zaG93SGlkZGVuKSxjPVtcIntcIixcIn1cIl0sXCJPYmplY3RcIj09PXUpe2lmKFl0KGUpP2NbMF09XCJbQXJndW1lbnRzXSB7XCI6XCJcIiE9PWwmJihjWzBdPWAke1llKHUsbCxcIk9iamVjdFwiKX17YCksMD09PW8ubGVuZ3RoJiZ2b2lkIDA9PT1hKXJldHVybmAke2NbMF19fWB9ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKXtpZihmPWZ1bmN0aW9uKHQsZSxyKXtjb25zdCBuPV8odCk7aWYoXCJjbGFzc1wiPT09bi5zbGljZSgwLDUpJiZuLmVuZHNXaXRoKFwifVwiKSl7Y29uc3QgaT1uLnNsaWNlKDUsLTEpLG89aS5pbmRleE9mKFwie1wiKTtpZigtMSE9PW8mJighaS5zbGljZSgwLG8pLmluY2x1ZGVzKFwiKFwiKXx8T2UudGVzdChpLnJlcGxhY2UoeGUpKSkpcmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXtsZXQgbj1gY2xhc3MgJHt6KHQsXCJuYW1lXCIpJiZ0Lm5hbWV8fFwiKGFub255bW91cylcIn1gO2lmKFwiRnVuY3Rpb25cIiE9PWUmJm51bGwhPT1lJiYobis9YCBbJHtlfV1gKSxcIlwiIT09ciYmZSE9PXImJihuKz1gIFske3J9XWApLG51bGwhPT1lKXtjb25zdCBlPUModCkubmFtZTtlJiYobis9YCBleHRlbmRzICR7ZX1gKX1lbHNlIG4rPVwiIGV4dGVuZHMgW251bGwgcHJvdG90eXBlXVwiO3JldHVybmBbJHtufV1gfSh0LGUscil9bGV0IGk9XCJGdW5jdGlvblwiO1d0KHQpJiYoaT1gR2VuZXJhdG9yJHtpfWApLEd0KHQpJiYoaT1gQXN5bmMke2l9YCk7bGV0IG89YFske2l9YDtyZXR1cm4gbnVsbD09PWUmJihvKz1cIiAobnVsbCBwcm90b3R5cGUpXCIpLFwiXCI9PT10Lm5hbWU/bys9XCIgKGFub255bW91cylcIjpvKz1gOiAke3QubmFtZX1gLG8rPVwiXVwiLGUhPT1pJiZudWxsIT09ZSYmKG8rPWAgJHtlfWApLFwiXCIhPT1yJiZlIT09ciYmKG8rPWAgWyR7cn1dYCksb30oZSx1LGwpLDA9PT1vLmxlbmd0aCYmdm9pZCAwPT09YSlyZXR1cm4gdC5zdHlsaXplKGYsXCJzcGVjaWFsXCIpfWVsc2UgaWYob2UoZSkpe2Y9SihudWxsIT09dT9lOm5ldyBLKGUpKTtjb25zdCBuPVllKHUsbCxcIlJlZ0V4cFwiKTtpZihcIlJlZ0V4cCBcIiE9PW4mJihmPWAke259JHtmfWApLDA9PT1vLmxlbmd0aCYmdm9pZCAwPT09YXx8cj50LmRlcHRoJiZudWxsIT09dC5kZXB0aClyZXR1cm4gdC5zdHlsaXplKGYsXCJyZWdleHBcIil9ZWxzZSBpZihzZShlKSl7Zj1SKHkoZSkpP2IoZSk6ZyhlKTtjb25zdCByPVllKHUsbCxcIkRhdGVcIik7aWYoXCJEYXRlIFwiIT09ciYmKGY9YCR7cn0ke2Z9YCksMD09PW8ubGVuZ3RoJiZ2b2lkIDA9PT1hKXJldHVybiB0LnN0eWxpemUoZixcImRhdGVcIil9ZWxzZSBpZihrdChlKSl7aWYoZj1mdW5jdGlvbih0LGUscixuLGkpe2NvbnN0IG89bnVsbCE9dC5uYW1lP250KHQubmFtZSk6XCJFcnJvclwiO2xldCBzPW8ubGVuZ3RoLGE9dC5zdGFjaz9udCh0LnN0YWNrKTptKHQpO2lmKCFuLnNob3dIaWRkZW4mJjAhPT1pLmxlbmd0aClmb3IoY29uc3QgZSBvZltcIm5hbWVcIixcIm1lc3NhZ2VcIixcInN0YWNrXCJdKXtjb25zdCByPWkuaW5kZXhPZihlKTstMSE9PXImJmEuaW5jbHVkZXModFtlXSkmJmkuc3BsaWNlKHIsMSl9aWYobnVsbD09PWV8fG8uZW5kc1dpdGgoXCJFcnJvclwiKSYmYS5zdGFydHNXaXRoKG8pJiYoYS5sZW5ndGg9PT1zfHxcIjpcIj09PWFbc118fFwiXFxuXCI9PT1hW3NdKSl7bGV0IHQ9XCJFcnJvclwiO2lmKG51bGw9PT1lKXtjb25zdCBlPWEubWF0Y2goL14oW0EtWl1bYS16XyBBLVowLTlbXFxdKCktXSspKD86OnxcXG4gezR9YXQpLyl8fGEubWF0Y2goL14oW2Etel9BLVowLTktXSpFcnJvcikkLyk7dD1lJiZlWzFdfHxcIlwiLHM9dC5sZW5ndGgsdD10fHxcIkVycm9yXCJ9Y29uc3Qgbj1ZZShlLHIsdCkuc2xpY2UoMCwtMSk7byE9PW4mJihhPW4uaW5jbHVkZXMobyk/MD09PXM/YCR7bn06ICR7YX1gOmAke259JHthLnNsaWNlKHMpfWA6YCR7bn0gWyR7b31dJHthLnNsaWNlKHMpfWApfWxldCB1PXQubWVzc2FnZSYmYS5pbmRleE9mKHQubWVzc2FnZSl8fC0xOy0xIT09dSYmKHUrPXQubWVzc2FnZS5sZW5ndGgpO2NvbnN0IGw9YS5pbmRleE9mKFwiXFxuICAgIGF0XCIsdSk7aWYoLTE9PT1sKWE9YFske2F9XWA7ZWxzZSBpZihuLmNvbG9ycyl7bGV0IHQ9YS5zbGljZSgwLGwpO2NvbnN0IGU9YS5zbGljZShsKzEpLnNwbGl0KFwiXFxuXCIpO2Zvcihjb25zdCByIG9mIGUpe2NvbnN0IGU9ci5tYXRjaChUZSl8fHIubWF0Y2goSWUpO2lmKG51bGwhPT1lJiZwZS5leGlzdHMoZVsxXSkpdCs9YFxcbiR7bi5zdHlsaXplKHIsXCJ1bmRlZmluZWRcIil9YDtlbHNle2xldCBlO3QrPVwiXFxuXCI7bGV0IGk9MDtmb3IoO2U9QmUuZXhlYyhyKTspdCs9ci5zbGljZShpLGUuaW5kZXgrMTQpLHQrPW4uc3R5bGl6ZShlWzFdLFwibW9kdWxlXCIpLGk9ZS5pbmRleCtlWzBdLmxlbmd0aDt0Kz0wPT09aT9yOnIuc2xpY2UoaSl9fWE9dH1pZigwIT09bi5pbmRlbnRhdGlvbkx2bCl7Y29uc3QgdD1cIiBcIi5yZXBlYXQobi5pbmRlbnRhdGlvbkx2bCk7YT1hLnJlcGxhY2UoL1xcbi9nLGBcXG4ke3R9YCl9cmV0dXJuIGF9KGUsdSxsLHQsbyksMD09PW8ubGVuZ3RoJiZ2b2lkIDA9PT1hKXJldHVybiBmfWVsc2UgaWYoenQoZSkpe2NvbnN0IHI9WWUodSxsLEh0KGUpP1wiQXJyYXlCdWZmZXJcIjpcIlNoYXJlZEFycmF5QnVmZmVyXCIpO2lmKHZvaWQgMD09PWkpdz1ycjtlbHNlIGlmKDA9PT1vLmxlbmd0aCYmdm9pZCAwPT09YSlyZXR1cm4gcitgeyBieXRlTGVuZ3RoOiAke0plKHQuc3R5bGl6ZSxlLmJ5dGVMZW5ndGgpfSB9YDtjWzBdPWAke3J9e2AsaChvLFwiYnl0ZUxlbmd0aFwiKX1lbHNlIGlmKFZ0KGUpKWNbMF09YCR7WWUodSxsLFwiRGF0YVZpZXdcIil9e2AsaChvLFwiYnl0ZUxlbmd0aFwiLFwiYnl0ZU9mZnNldFwiLFwiYnVmZmVyXCIpO2Vsc2UgaWYodGUoZSkpY1swXT1gJHtZZSh1LGwsXCJQcm9taXNlXCIpfXtgLHc9cHI7ZWxzZSBpZihpZShlKSljWzBdPWAke1llKHUsbCxcIldlYWtTZXRcIil9e2Asdz10LnNob3dIaWRkZW4/Y3I6bHI7ZWxzZSBpZihuZShlKSljWzBdPWAke1llKHUsbCxcIldlYWtNYXBcIil9e2Asdz10LnNob3dIaWRkZW4/ZnI6bHI7ZWxzZSBpZihadChlKSljWzBdPWAke1llKHUsbCxcIk1vZHVsZVwiKX17YCx3PXRyLmJpbmQobnVsbCxvKTtlbHNlIGlmKHF0KGUpKXtpZihmPWZ1bmN0aW9uKHQsZSxyLG4saSl7bGV0IG8scztsZSh0KT8obz1QLHM9XCJOdW1iZXJcIik6dWUodCk/KG89Z3Qscz1cIlN0cmluZ1wiLHIuc3BsaWNlKDAsdC5sZW5ndGgpKTpjZSh0KT8obz1kLHM9XCJCb29sZWFuXCIpOmZlKHQpPyhvPXAscz1cIkJpZ0ludFwiKToobz1tdCxzPVwiU3ltYm9sXCIpO2xldCBhPWBbJHtzfWA7cmV0dXJuIHMhPT1uJiYoYSs9bnVsbD09PW4/XCIgKG51bGwgcHJvdG90eXBlKVwiOmAgKCR7bn0pYCksYSs9YDogJHtRZShDZSxvKHQpLGUpfV1gLFwiXCIhPT1pJiZpIT09biYmKGErPWAgWyR7aX1dYCksMCE9PXIubGVuZ3RofHxlLnN0eWxpemU9PT1DZT9hOmUuc3R5bGl6ZShhLGR0KHMpKX0oZSx0LG8sdSxsKSwwPT09by5sZW5ndGgmJnZvaWQgMD09PWEpcmV0dXJuIGZ9ZWxzZXtpZigwPT09by5sZW5ndGgmJnZvaWQgMD09PWEpe2lmKEt0KGUpKXtjb25zdCByPUx0KGUpLnRvU3RyaW5nKDE2KTtyZXR1cm4gdC5zdHlsaXplKGBbRXh0ZXJuYWw6ICR7cn1dYCxcInNwZWNpYWxcIil9cmV0dXJuYCR7VmUoZSx1LGwpfXt9YH1jWzBdPWAke1ZlKGUsdSxsKX17YH1pZihyPnQuZGVwdGgmJm51bGwhPT10LmRlcHRoKXtsZXQgcj1WZShlLHUsbCkuc2xpY2UoMCwtMSk7cmV0dXJuIG51bGwhPT11JiYocj1gWyR7cn1dYCksdC5zdHlsaXplKHIsXCJzcGVjaWFsXCIpfXIrPTEsdC5zZWVuLnB1c2goZSksdC5jdXJyZW50RGVwdGg9cjtjb25zdCBPPXQuaW5kZW50YXRpb25Mdmw7dHJ5e2ZvcihJPXcodCxlLHIpLEE9MDtBPG8ubGVuZ3RoO0ErKylJLnB1c2goZHIodCxlLHIsb1tBXSxCKSk7dm9pZCAwIT09YSYmSS5wdXNoKC4uLmEpfWNhdGNoKHIpe3JldHVybiBmdW5jdGlvbih0LGUscixuKXtpZihDdChlKSlyZXR1cm4gdC5zZWVuLnBvcCgpLHQuaW5kZW50YXRpb25Mdmw9bix0LnN0eWxpemUoYFske3J9OiBJbnNwZWN0aW9uIGludGVycnVwdGVkIHByZW1hdHVyZWx5LiBNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC5dYCxcInNwZWNpYWxcIik7aGUuZmFpbChlLnN0YWNrKX0odCxyLFZlKGUsdSxsKS5zbGljZSgwLC0xKSxPKX1pZih2b2lkIDAhPT10LmNpcmN1bGFyKXtjb25zdCByPXQuY2lyY3VsYXIuZ2V0KGUpO2lmKHZvaWQgMCE9PXIpe2NvbnN0IGU9dC5zdHlsaXplKGA8cmVmICoke3J9PmAsXCJzcGVjaWFsXCIpOyEwIT09dC5jb21wYWN0P2Y9XCJcIj09PWY/ZTpgJHtlfSAke2Z9YDpjWzBdPWAke2V9ICR7Y1swXX1gfX1pZih0LnNlZW4ucG9wKCksdC5zb3J0ZWQpe2NvbnN0IGU9ITA9PT10LnNvcnRlZD92b2lkIDA6dC5zb3J0ZWQ7aWYoMD09PUIpST1JLnNvcnQoZSk7ZWxzZSBpZihvLmxlbmd0aD4xKXtjb25zdCB0PUkuc2xpY2UoSS5sZW5ndGgtby5sZW5ndGgpLnNvcnQoZSk7SS5zcGxpY2UoSS5sZW5ndGgtby5sZW5ndGgsby5sZW5ndGgsLi4udCl9fWNvbnN0IHg9Z3IodCxJLGYsYyxCLHIsZSksTj0odC5idWRnZXRbdC5pbmRlbnRhdGlvbkx2bF18fDApK3gubGVuZ3RoO3JldHVybiB0LmJ1ZGdldFt0LmluZGVudGF0aW9uTHZsXT1OLE4+MioqMjcmJih0LmRlcHRoPS0xKSx4fSh0LGUscixpKX1mdW5jdGlvbiBYZSh0LGUpe3JldHVybiBlIT09YCR7dH0gSXRlcmF0b3JgJiYoXCJcIiE9PWUmJihlKz1cIl0gW1wiKSxlKz1gJHt0fSBJdGVyYXRvcmApLFtgWyR7ZX1dIHtgLFwifVwiXX1mdW5jdGlvbiBKZSh0LGUpe3JldHVybiB0KEcoZSwtMCk/XCItMFwiOmAke2V9YCxcIm51bWJlclwiKX1mdW5jdGlvbiBaZSh0LGUpe3JldHVybiB0KGAke2V9bmAsXCJiaWdpbnRcIil9ZnVuY3Rpb24gUWUodCxlLHIpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXtsZXQgbj1cIlwiO2lmKGUubGVuZ3RoPnIubWF4U3RyaW5nTGVuZ3RoKXtjb25zdCB0PWUubGVuZ3RoLXIubWF4U3RyaW5nTGVuZ3RoO2U9ZS5zbGljZSgwLHIubWF4U3RyaW5nTGVuZ3RoKSxuPWAuLi4gJHt0fSBtb3JlIGNoYXJhY3RlciR7dD4xP1wic1wiOlwiXCJ9YH1yZXR1cm4hMCE9PXIuY29tcGFjdCYmZS5sZW5ndGg+MTYmJmUubGVuZ3RoPnIuYnJlYWtMZW5ndGgtci5pbmRlbnRhdGlvbkx2bC00P2Uuc3BsaXQoL1xcbi8pLm1hcCgoKGUscixuKT0+dChGZShlKyhyPT09bi5sZW5ndGgtMT9cIlwiOlwiXFxuXCIpKSxcInN0cmluZ1wiKSkpLmpvaW4oYCArXFxuJHtcIiBcIi5yZXBlYXQoci5pbmRlbnRhdGlvbkx2bCsyKX1gKStuOnQoRmUoZSksXCJzdHJpbmdcIikrbn1yZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT9KZSh0LGUpOlwiYmlnaW50XCI9PXR5cGVvZiBlP1plKHQsZSk6XCJib29sZWFuXCI9PXR5cGVvZiBlP3QoYCR7ZX1gLFwiYm9vbGVhblwiKTp2b2lkIDA9PT1lP3QoXCJ1bmRlZmluZWRcIixcInVuZGVmaW5lZFwiKTp0KGJ0KGUpLFwic3ltYm9sXCIpfWZ1bmN0aW9uIHRyKHQsZSxyLG4pe2NvbnN0IGk9bmV3IG8odC5sZW5ndGgpO2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKXRyeXtpW29dPWRyKGUscixuLHRbb10sMCl9Y2F0Y2gocil7aWYoIVF0KHIpfHxcIlJlZmVyZW5jZUVycm9yXCIhPT1yLm5hbWUpdGhyb3cgcjtjb25zdCBzPXtbdFtvXV06XCJcIn07aVtvXT1kcihlLHMsbix0W29dLDApO2NvbnN0IGE9aVtvXS5sYXN0SW5kZXhPZihcIiBcIik7aVtvXT1pW29dLnNsaWNlKDAsYSsxKStlLnN0eWxpemUoXCI8dW5pbml0aWFsaXplZD5cIixcInNwZWNpYWxcIil9cmV0dXJuIHQubGVuZ3RoPTAsaX1mdW5jdGlvbiBlcih0LGUscixuLGksbyl7Y29uc3Qgcz1XKGUpO2xldCBhPW87Zm9yKDtvPHMubGVuZ3RoJiZpLmxlbmd0aDxuO28rKyl7Y29uc3QgdT1zW29dLGw9K3U7aWYobD4yKiozMi0yKWJyZWFrO2lmKGAke2F9YCE9PXUpe2lmKCFBZS50ZXN0KHUpKWJyZWFrO2NvbnN0IGU9bC1hLHI9YDwke2V9IGVtcHR5IGl0ZW0ke2U+MT9cInNcIjpcIlwifT5gO2lmKGkucHVzaCh0LnN0eWxpemUocixcInVuZGVmaW5lZFwiKSksYT1sLGkubGVuZ3RoPT09bilicmVha31pLnB1c2goZHIodCxlLHIsdSwxKSksYSsrfWNvbnN0IHU9ZS5sZW5ndGgtYTtpZihpLmxlbmd0aCE9PW4pe2lmKHU+MCl7Y29uc3QgZT1gPCR7dX0gZW1wdHkgaXRlbSR7dT4xP1wic1wiOlwiXCJ9PmA7aS5wdXNoKHQuc3R5bGl6ZShlLFwidW5kZWZpbmVkXCIpKX19ZWxzZSB1PjAmJmkucHVzaChgLi4uICR7dX0gbW9yZSBpdGVtJHt1PjE/XCJzXCI6XCJcIn1gKTtyZXR1cm4gaX1mdW5jdGlvbiBycih0LGUpe2xldCBuO3RyeXtuPW5ldyBTdChlKX1jYXRjaHtyZXR1cm5bdC5zdHlsaXplKFwiKGRldGFjaGVkKVwiLFwic3BlY2lhbFwiKV19dm9pZCAwPT09eWUmJih5ZT1BdChyKDI1NSkubC5wcm90b3R5cGUuaGV4U2xpY2UpKTtsZXQgaT15dChmdCh5ZShuLDAsSSh0Lm1heEFycmF5TGVuZ3RoLG4ubGVuZ3RoKSksLyguezJ9KS9nLFwiJDEgXCIpKTtjb25zdCBvPW4ubGVuZ3RoLXQubWF4QXJyYXlMZW5ndGg7cmV0dXJuIG8+MCYmKGkrPWAgLi4uICR7b30gbW9yZSBieXRlJHtvPjE/XCJzXCI6XCJcIn1gKSxbYCR7dC5zdHlsaXplKFwiW1VpbnQ4Q29udGVudHNdXCIsXCJzcGVjaWFsXCIpfTogPCR7aX0+YF19ZnVuY3Rpb24gbnIodCxlLHIpe2NvbnN0IG49ZS5sZW5ndGgsaT1JKFQoMCx0Lm1heEFycmF5TGVuZ3RoKSxuKSxvPW4taSxzPVtdO2ZvcihsZXQgbj0wO248aTtuKyspe2lmKCF6KGUsbikpcmV0dXJuIGVyKHQsZSxyLGkscyxuKTtzLnB1c2goZHIodCxlLHIsbiwxKSl9cmV0dXJuIG8+MCYmcy5wdXNoKGAuLi4gJHtvfSBtb3JlIGl0ZW0ke28+MT9cInNcIjpcIlwifWApLHN9ZnVuY3Rpb24gaXIodCxlLHIsbixpKXtjb25zdCBzPUkoVCgwLHIubWF4QXJyYXlMZW5ndGgpLGUpLGE9dC5sZW5ndGgtcyx1PW5ldyBvKHMpLGM9dC5sZW5ndGg+MCYmXCJudW1iZXJcIj09dHlwZW9mIHRbMF0/SmU6WmU7Zm9yKGxldCBlPTA7ZTxzOysrZSl1W2VdPWMoci5zdHlsaXplLHRbZV0pO2lmKGE+MCYmKHVbc109YC4uLiAke2F9IG1vcmUgaXRlbSR7YT4xP1wic1wiOlwiXCJ9YCksci5zaG93SGlkZGVuKXtyLmluZGVudGF0aW9uTHZsKz0yO2Zvcihjb25zdCBlIG9mW1wiQllURVNfUEVSX0VMRU1FTlRcIixcImxlbmd0aFwiLFwiYnl0ZUxlbmd0aFwiLFwiYnl0ZU9mZnNldFwiLFwiYnVmZmVyXCJdKXtjb25zdCBuPUtlKHIsdFtlXSxpLCEwKTtsKHUsYFske2V9XTogJHtufWApfXIuaW5kZW50YXRpb25MdmwtPTJ9cmV0dXJuIHV9ZnVuY3Rpb24gb3IodCxlLHIsbil7Y29uc3QgaT1bXTtlLmluZGVudGF0aW9uTHZsKz0yO2Zvcihjb25zdCByIG9mIHQpbChpLEtlKGUscixuKSk7cmV0dXJuIGUuaW5kZW50YXRpb25MdmwtPTIsaX1mdW5jdGlvbiBzcih0LGUscixuKXtjb25zdCBpPVtdO2UuaW5kZW50YXRpb25MdmwrPTI7Zm9yKGNvbnN0ezA6ciwxOm99b2YgdClpLnB1c2goYCR7S2UoZSxyLG4pfSA9PiBgK0tlKGUsbyxuKSk7cmV0dXJuIGUuaW5kZW50YXRpb25MdmwtPTIsaX1mdW5jdGlvbiBhcih0LGUscixuKXtjb25zdCBpPVQodC5tYXhBcnJheUxlbmd0aCwwKSxzPUkoaSxyLmxlbmd0aCksYT1uZXcgbyhzKTt0LmluZGVudGF0aW9uTHZsKz0yO2ZvcihsZXQgbj0wO248cztuKyspYVtuXT1LZSh0LHJbbl0sZSk7dC5pbmRlbnRhdGlvbkx2bC09MiwwIT09bnx8dC5zb3J0ZWR8fGYoYSk7Y29uc3QgdT1yLmxlbmd0aC1zO3JldHVybiB1PjAmJmwoYSxgLi4uICR7dX0gbW9yZSBpdGVtJHt1PjE/XCJzXCI6XCJcIn1gKSxhfWZ1bmN0aW9uIHVyKHQsZSxyLG4pe2NvbnN0IGk9VCh0Lm1heEFycmF5TGVuZ3RoLDApLHM9ci5sZW5ndGgvMixhPXMtaSx1PUkoaSxzKTtsZXQgbD1uZXcgbyh1KSxjPTA7aWYodC5pbmRlbnRhdGlvbkx2bCs9MiwwPT09bil7Zm9yKDtjPHU7YysrKXtjb25zdCBuPTIqYztsW2NdPWAke0tlKHQscltuXSxlKX0gPT4gJHtLZSh0LHJbbisxXSxlKX1gfXQuc29ydGVkfHwobD1sLnNvcnQoKSl9ZWxzZSBmb3IoO2M8dTtjKyspe2NvbnN0IG49MipjLGk9W0tlKHQscltuXSxlKSxLZSh0LHJbbisxXSxlKV07bFtjXT1ncih0LGksXCJcIixbXCJbXCIsXCJdXCJdLDIsZSl9cmV0dXJuIHQuaW5kZW50YXRpb25MdmwtPTIsYT4wJiZsLnB1c2goYC4uLiAke2F9IG1vcmUgaXRlbSR7YT4xP1wic1wiOlwiXCJ9YCksbH1mdW5jdGlvbiBscih0KXtyZXR1cm5bdC5zdHlsaXplKFwiPGl0ZW1zIHVua25vd24+XCIsXCJzcGVjaWFsXCIpXX1mdW5jdGlvbiBjcih0LGUscil7cmV0dXJuIGFyKHQscixSdChlKSwwKX1mdW5jdGlvbiBmcih0LGUscil7cmV0dXJuIHVyKHQscixSdChlKSwwKX1mdW5jdGlvbiBocih0LGUscixuKXtjb25zdHswOmksMTpvfT1SdChyLCEwKTtyZXR1cm4gbz8odFswXT10WzBdLnJlcGxhY2UoLyBJdGVyYXRvcl0geyQvLFwiIEVudHJpZXNdIHtcIiksdXIoZSxuLGksMikpOmFyKGUsbixpLDEpfWZ1bmN0aW9uIHByKHQsZSxyKXtsZXQgbjtjb25zdHswOmksMTpvfT1JdChlKTtpZihpPT09T3Qpbj1bdC5zdHlsaXplKFwiPHBlbmRpbmc+XCIsXCJzcGVjaWFsXCIpXTtlbHNle3QuaW5kZW50YXRpb25MdmwrPTI7Y29uc3QgZT1LZSh0LG8scik7dC5pbmRlbnRhdGlvbkx2bC09MixuPVtpPT09eHQ/YCR7dC5zdHlsaXplKFwiPHJlamVjdGVkPlwiLFwic3BlY2lhbFwiKX0gJHtlfWA6ZV19cmV0dXJuIG59ZnVuY3Rpb24gZHIodCxlLHIsbixpLG8scz1lKXtsZXQgYSx1LGw9XCIgXCI7aWYodm9pZCAwIT09KG89b3x8JChlLG4pfHx7dmFsdWU6ZVtuXSxlbnVtZXJhYmxlOiEwfSkudmFsdWUpe2NvbnN0IGU9ITAhPT10LmNvbXBhY3R8fDAhPT1pPzI6Mzt0LmluZGVudGF0aW9uTHZsKz1lLHU9S2UodCxvLnZhbHVlLHIpLDM9PT1lJiZ0LmJyZWFrTGVuZ3RoPExlKHUsdC5jb2xvcnMpJiYobD1gXFxuJHtcIiBcIi5yZXBlYXQodC5pbmRlbnRhdGlvbkx2bCl9YCksdC5pbmRlbnRhdGlvbkx2bC09ZX1lbHNlIGlmKHZvaWQgMCE9PW8uZ2V0KXtjb25zdCBlPXZvaWQgMCE9PW8uc2V0P1wiR2V0dGVyL1NldHRlclwiOlwiR2V0dGVyXCIsbj10LnN0eWxpemUsaT1cInNwZWNpYWxcIjtpZih0LmdldHRlcnMmJighMD09PXQuZ2V0dGVyc3x8XCJnZXRcIj09PXQuZ2V0dGVycyYmdm9pZCAwPT09by5zZXR8fFwic2V0XCI9PT10LmdldHRlcnMmJnZvaWQgMCE9PW8uc2V0KSl0cnl7Y29uc3QgYT13KG8uZ2V0LHMpO2lmKHQuaW5kZW50YXRpb25MdmwrPTIsbnVsbD09PWEpdT1gJHtuKGBbJHtlfTpgLGkpfSAke24oXCJudWxsXCIsXCJudWxsXCIpfSR7bihcIl1cIixpKX1gO2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIGEpdT1gJHtuKGBbJHtlfV1gLGkpfSAke0tlKHQsYSxyKX1gO2Vsc2V7Y29uc3Qgcj1RZShuLGEsdCk7dT1gJHtuKGBbJHtlfTpgLGkpfSAke3J9JHtuKFwiXVwiLGkpfWB9dC5pbmRlbnRhdGlvbkx2bC09Mn1jYXRjaCh0KXtjb25zdCByPWA8SW5zcGVjdGlvbiB0aHJldyAoJHt0Lm1lc3NhZ2V9KT5gO3U9YCR7bihgWyR7ZX06YCxpKX0gJHtyfSR7bihcIl1cIixpKX1gfWVsc2UgdT10LnN0eWxpemUoYFske2V9XWAsaSl9ZWxzZSB1PXZvaWQgMCE9PW8uc2V0P3Quc3R5bGl6ZShcIltTZXR0ZXJdXCIsXCJzcGVjaWFsXCIpOnQuc3R5bGl6ZShcInVuZGVmaW5lZFwiLFwidW5kZWZpbmVkXCIpO2lmKDE9PT1pKXJldHVybiB1O2lmKFwic3ltYm9sXCI9PXR5cGVvZiBuKXtjb25zdCBlPWZ0KGJ0KG4pLF9lLCRlKTthPWBbJHt0LnN0eWxpemUoZSxcInN5bWJvbFwiKX1dYH1lbHNlIGE9XCJfX3Byb3RvX19cIj09PW4/XCJbJ19fcHJvdG9fXyddXCI6ITE9PT1vLmVudW1lcmFibGU/YFske2Z0KG4sX2UsJGUpfV1gOlgoU2Usbik/dC5zdHlsaXplKG4sXCJuYW1lXCIpOnQuc3R5bGl6ZShGZShuKSxcInN0cmluZ1wiKTtyZXR1cm5gJHthfToke2x9JHt1fWB9ZnVuY3Rpb24geXIodCxlLHIsbil7bGV0IGk9ZS5sZW5ndGgrcjtpZihpK2UubGVuZ3RoPnQuYnJlYWtMZW5ndGgpcmV0dXJuITE7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspaWYodC5jb2xvcnM/aSs9RnQoZVtyXSkubGVuZ3RoOmkrPWVbcl0ubGVuZ3RoLGk+dC5icmVha0xlbmd0aClyZXR1cm4hMTtyZXR1cm5cIlwiPT09bnx8IXN0KG4sXCJcXG5cIil9ZnVuY3Rpb24gZ3IodCxlLHIsbixpLHMsYSl7aWYoITAhPT10LmNvbXBhY3Qpe2lmKFwibnVtYmVyXCI9PXR5cGVvZiB0LmNvbXBhY3QmJnQuY29tcGFjdD49MSl7Y29uc3QgdT1lLmxlbmd0aDtpZigyPT09aSYmdT42JiYoZT1mdW5jdGlvbih0LGUscil7bGV0IG49MCxpPTAscz0wLGE9ZS5sZW5ndGg7dC5tYXhBcnJheUxlbmd0aDxlLmxlbmd0aCYmYS0tO2NvbnN0IHU9bmV3IG8oYSk7Zm9yKDtzPGE7cysrKXtjb25zdCByPUxlKGVbc10sdC5jb2xvcnMpO3Vbc109cixuKz1yKzIsaTxyJiYoaT1yKX1jb25zdCBjPWkrMjtpZigzKmMrdC5pbmRlbnRhdGlvbkx2bDx0LmJyZWFrTGVuZ3RoJiYobi9jPjV8fGk8PTYpKXtjb25zdCBpPTIuNSxvPU8oYy1uL2UubGVuZ3RoKSxzPVQoYy0zLW8sMSksZj1JKEIoTyhpKnMqYSkvcyksQSgodC5icmVha0xlbmd0aC10LmluZGVudGF0aW9uTHZsKS9jKSw0KnQuY29tcGFjdCwxNSk7aWYoZjw9MSlyZXR1cm4gZTtjb25zdCBoPVtdLHA9W107Zm9yKGxldCB0PTA7dDxmO3QrKyl7bGV0IHI9MDtmb3IobGV0IG49dDtuPGUubGVuZ3RoO24rPWYpdVtuXT5yJiYocj11W25dKTtyKz0yLHBbdF09cn1sZXQgZD1sdDtpZih2b2lkIDAhPT1yKWZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKFwibnVtYmVyXCIhPXR5cGVvZiByW3RdJiZcImJpZ2ludFwiIT10eXBlb2Ygclt0XSl7ZD11dDticmVha31mb3IobGV0IHQ9MDt0PGE7dCs9Zil7Y29uc3Qgcj1JKHQrZixhKTtsZXQgbj1cIlwiLGk9dDtmb3IoO2k8ci0xO2krKyl7Y29uc3Qgcj1wW2ktdF0rZVtpXS5sZW5ndGgtdVtpXTtuKz1kKGAke2VbaV19LCBgLHIsXCIgXCIpfWlmKGQ9PT1sdCl7Y29uc3Qgcj1wW2ktdF0rZVtpXS5sZW5ndGgtdVtpXS0yO24rPWx0KGVbaV0scixcIiBcIil9ZWxzZSBuKz1lW2ldO2woaCxuKX10Lm1heEFycmF5TGVuZ3RoPGUubGVuZ3RoJiZsKGgsZVthXSksZT1ofXJldHVybiBlfSh0LGUsYSkpLHQuY3VycmVudERlcHRoLXM8dC5jb21wYWN0JiZ1PT09ZS5sZW5ndGgmJnlyKHQsZSxlLmxlbmd0aCt0LmluZGVudGF0aW9uTHZsK25bMF0ubGVuZ3RoK3IubGVuZ3RoKzEwLHIpKXJldHVybmAke3I/YCR7cn0gYDpcIlwifSR7blswXX0gJHskdChlLFwiLCBcIil9ICR7blsxXX1gfWNvbnN0IHU9YFxcbiR7Y3QoXCIgXCIsdC5pbmRlbnRhdGlvbkx2bCl9YDtyZXR1cm5gJHtyP2Ake3J9IGA6XCJcIn0ke25bMF19JHt1fSAgJHskdChlLGAsJHt1fSAgYCl9JHt1fSR7blsxXX1gfWlmKHlyKHQsZSwwLHIpKXJldHVybmAke25bMF19JHtyP2AgJHtyfWA6XCJcIn0gJHskdChlLFwiLCBcIil9IGArblsxXTtjb25zdCB1PWN0KFwiIFwiLHQuaW5kZW50YXRpb25MdmwpLGM9XCJcIj09PXImJjE9PT1uWzBdLmxlbmd0aD9cIiBcIjpgJHtyP2AgJHtyfWA6XCJcIn1cXG4ke3V9ICBgO3JldHVybmAke25bMF19JHtjfSR7JHQoZSxgLFxcbiR7dX0gIGApfSAke25bMV19YH1mdW5jdGlvbiBicih0KXtjb25zdCBlPUJ0KHQsITEpO2lmKHZvaWQgMCE9PWUmJih0PWUpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQudG9TdHJpbmcpcmV0dXJuITA7aWYoeih0LFwidG9TdHJpbmdcIikpcmV0dXJuITE7bGV0IHI9dDtkb3tyPUMocil9d2hpbGUoIXoocixcInRvU3RyaW5nXCIpKTtjb25zdCBuPSQocixcImNvbnN0cnVjdG9yXCIpO3JldHVybiB2b2lkIDAhPT1uJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLnZhbHVlJiZnZS5oYXMobi52YWx1ZS5uYW1lKX1jb25zdCBtcj10PT5wdCh0Lm1lc3NhZ2UsXCJcXG5cIiwxKVswXTtsZXQgd3I7ZnVuY3Rpb24gX3IodCl7dHJ5e3JldHVybiBFKHQpfWNhdGNoKHQpe2lmKCF3cil0cnl7Y29uc3QgdD17fTt0LmE9dCxFKHQpfWNhdGNoKHQpe3dyPW1yKHQpfWlmKFwiVHlwZUVycm9yXCI9PT10Lm5hbWUmJm1yKHQpPT09d3IpcmV0dXJuXCJbQ2lyY3VsYXJdXCI7dGhyb3cgdH19ZnVuY3Rpb24gRXIodCxlKXtjb25zdCByPWVbMF07bGV0IG49MCxpPVwiXCIsbz1cIlwiO2lmKFwic3RyaW5nXCI9PXR5cGVvZiByKXtpZigxPT09ZS5sZW5ndGgpcmV0dXJuIHI7bGV0IHMsYT0wO2ZvcihsZXQgbz0wO288ci5sZW5ndGgtMTtvKyspaWYoMzc9PT1pdChyLG8pKXtjb25zdCB1PWl0KHIsKytvKTtpZihuKzEhPT1lLmxlbmd0aCl7c3dpdGNoKHUpe2Nhc2UgMTE1OmNvbnN0IHU9ZVsrK25dO3M9XCJudW1iZXJcIj09dHlwZW9mIHU/SmUoQ2UsdSk6XCJiaWdpbnRcIj09dHlwZW9mIHU/YCR7dX1uYDpcIm9iamVjdFwiPT10eXBlb2YgdSYmbnVsbCE9PXUmJmJyKHUpP1BlKHUsey4uLnQsY29tcGFjdDozLGNvbG9yczohMSxkZXB0aDowfSk6bnQodSk7YnJlYWs7Y2FzZSAxMDY6cz1fcihlWysrbl0pO2JyZWFrO2Nhc2UgMTAwOmNvbnN0IGw9ZVsrK25dO3M9XCJiaWdpbnRcIj09dHlwZW9mIGw/YCR7bH1uYDpcInN5bWJvbFwiPT10eXBlb2YgbD9cIk5hTlwiOkplKENlLHgobCkpO2JyZWFrO2Nhc2UgNzk6cz1QZShlWysrbl0sdCk7YnJlYWs7Y2FzZSAxMTE6cz1QZShlWysrbl0sey4uLnQsc2hvd0hpZGRlbjohMCxzaG93UHJveHk6ITAsZGVwdGg6NH0pO2JyZWFrO2Nhc2UgMTA1OmNvbnN0IGM9ZVsrK25dO3M9XCJiaWdpbnRcIj09dHlwZW9mIGM/YCR7Y31uYDpcInN5bWJvbFwiPT10eXBlb2YgYz9cIk5hTlwiOkplKENlLEwoYykpO2JyZWFrO2Nhc2UgMTAyOmNvbnN0IGY9ZVsrK25dO3M9XCJzeW1ib2xcIj09dHlwZW9mIGY/XCJOYU5cIjpKZShDZSxOKGYpKTticmVhaztjYXNlIDk5Om4rPTEscz1cIlwiO2JyZWFrO2Nhc2UgMzc6aSs9aHQocixhLG8pLGE9bysxO2NvbnRpbnVlO2RlZmF1bHQ6Y29udGludWV9YSE9PW8tMSYmKGkrPWh0KHIsYSxvLTEpKSxpKz1zLGE9bysxfWVsc2UgMzc9PT11JiYoaSs9aHQocixhLG8pLGE9bysxKX0wIT09YSYmKG4rKyxvPVwiIFwiLGE8ci5sZW5ndGgmJihpKz1odChyLGEpKSl9Zm9yKDtuPGUubGVuZ3RoOyl7Y29uc3Qgcj1lW25dO2krPW8saSs9XCJzdHJpbmdcIiE9dHlwZW9mIHI/UGUocix0KTpyLG89XCIgXCIsbisrfXJldHVybiBpfWlmKGkoXCJjb25maWdcIikuaGFzSW50bCl7Y29uc3QgdD1pKFwiaWN1XCIpO0xlPWZ1bmN0aW9uKGUscj0hMCl7bGV0IG49MDtyJiYoZT12cihlKSk7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2NvbnN0IGk9ZS5jaGFyQ29kZUF0KHIpO2lmKGk+PTEyNyl7bis9dC5nZXRTdHJpbmdXaWR0aChlLnNsaWNlKHIpLm5vcm1hbGl6ZShcIk5GQ1wiKSk7YnJlYWt9bis9aT49MzI/MTowfXJldHVybiBufX1lbHNle0xlPWZ1bmN0aW9uKHIsbj0hMCl7bGV0IGk9MDtuJiYocj12cihyKSkscj1hdChyLFwiTkZDXCIpO2Zvcihjb25zdCBuIG9mIG5ldyBaKHIpKXtjb25zdCByPW90KG4sMCk7dChyKT9pKz0yOmUocil8fGkrK31yZXR1cm4gaX07Y29uc3QgdD10PT50Pj00MzUyJiYodDw9NDQ0N3x8OTAwMT09PXR8fDkwMDI9PT10fHx0Pj0xMTkwNCYmdDw9MTI4NzEmJjEyMzUxIT09dHx8dD49MTI4ODAmJnQ8PTE5OTAzfHx0Pj0xOTk2OCYmdDw9NDIxODJ8fHQ+PTQzMzYwJiZ0PD00MzM4OHx8dD49NDQwMzImJnQ8PTU1MjAzfHx0Pj02Mzc0NCYmdDw9NjQyNTV8fHQ+PTY1MDQwJiZ0PD02NTA0OXx8dD49NjUwNzImJnQ8PTY1MTMxfHx0Pj02NTI4MSYmdDw9NjUzNzZ8fHQ+PTY1NTA0JiZ0PD02NTUxMHx8dD49MTEwNTkyJiZ0PD0xMTA1OTN8fHQ+PTEyNzQ4OCYmdDw9MTI3NTY5fHx0Pj0xMjc3NDQmJnQ8PTEyODU5MXx8dD49MTMxMDcyJiZ0PD0yNjIxNDEpLGU9dD0+dDw9MzF8fHQ+PTEyNyYmdDw9MTU5fHx0Pj03NjgmJnQ8PTg3OXx8dD49ODIwMyYmdDw9ODIwN3x8dD49ODQwMCYmdDw9ODQ0N3x8dD49NjUwMjQmJnQ8PTY1MDM5fHx0Pj02NTA1NiYmdDw9NjUwNzF8fHQ+PTkxNzc2MCYmdDw9OTE3OTk5fWZ1bmN0aW9uIHZyKHQpe3JldHVybiB0LnJlcGxhY2UoTmUsXCJcIil9dC5leHBvcnRzPXtpbnNwZWN0OlBlLGZvcm1hdDpmdW5jdGlvbiguLi50KXtyZXR1cm4gRXIodm9pZCAwLHQpfSxmb3JtYXRXaXRoT3B0aW9uczpmdW5jdGlvbih0LC4uLmUpe2lmKFwib2JqZWN0XCIhPXR5cGVvZiB0fHxudWxsPT09dCl0aHJvdyBuZXcgRHQoXCJpbnNwZWN0T3B0aW9uc1wiLFwib2JqZWN0XCIsdCk7cmV0dXJuIEVyKHQsZSl9LGdldFN0cmluZ1dpZHRoOkxlLGluc3BlY3REZWZhdWx0T3B0aW9uczptZSxzdHJpcFZUQ29udHJvbENoYXJhY3RlcnM6dnIsc3R5bGl6ZVdpdGhDb2xvcjpEZSxzdHlsaXplV2l0aEhUTUwodCxlKXtjb25zdCByPVBlLnN0eWxlc1tlXTtyZXR1cm4gdm9pZCAwIT09cj9gPHNwYW4gc3R5bGU9XCJjb2xvcjoke3J9O1wiPiR7dH08L3NwYW4+YDp0fSxQcm94eTpVdH19LDE4Mzp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcihcIkFzc2VydGlvbiBmYWlsZWRcIil9fSw5OTI6KHQsZSk9PntlLk5hdGl2ZU1vZHVsZT17ZXhpc3RzOnQ9PiF0LnN0YXJ0c1dpdGgoXCIvXCIpfX0sMTAxOih0LGUscik9Pntjb25zdHtBcnJheUlzQXJyYXk6bixBcnJheVByb3RvdHlwZUluY2x1ZGVzOmksQXJyYXlQcm90b3R5cGVJbmRleE9mOm8sQXJyYXlQcm90b3R5cGVKb2luOnMsQXJyYXlQcm90b3R5cGVQb3A6YSxBcnJheVByb3RvdHlwZVB1c2g6dSxBcnJheVByb3RvdHlwZVNwbGljZTpsLEVycm9yQ2FwdHVyZVN0YWNrVHJhY2U6YyxPYmplY3REZWZpbmVQcm9wZXJ0eTpmLFJlZmxlY3RBcHBseTpoLFJlZ0V4cFByb3RvdHlwZVRlc3Q6cCxTYWZlTWFwOmQsU3RyaW5nUHJvdG90eXBlRW5kc1dpdGg6eSxTdHJpbmdQcm90b3R5cGVJbmNsdWRlczpnLFN0cmluZ1Byb3RvdHlwZVNsaWNlOmIsU3RyaW5nUHJvdG90eXBlVG9Mb3dlckNhc2U6bX09cig3NjUpLHc9bmV3IGQsXz17fSxFPS9eKFtBLVpdW2EtejAtOV0qKSskLyx2PVtcInN0cmluZ1wiLFwiZnVuY3Rpb25cIixcIm51bWJlclwiLFwib2JqZWN0XCIsXCJGdW5jdGlvblwiLFwiT2JqZWN0XCIsXCJib29sZWFuXCIsXCJiaWdpbnRcIixcInN5bWJvbFwiXTtsZXQgUyxBLFQ9bnVsbDtmdW5jdGlvbiBJKCl7cmV0dXJuIFR8fChUPXIoNDgpKSxUfWNvbnN0IEI9TygoZnVuY3Rpb24odCxlLHIpeyh0PXgodCkpLm5hbWU9YCR7ZX0gWyR7cn1dYCx0LnN0YWNrLGRlbGV0ZSB0Lm5hbWV9KSk7ZnVuY3Rpb24gTyh0KXtjb25zdCBlPVwiX19ub2RlX2ludGVybmFsX1wiK3QubmFtZTtyZXR1cm4gZih0LFwibmFtZVwiLHt2YWx1ZTplfSksdH1jb25zdCB4PU8oKGZ1bmN0aW9uKHQpe3JldHVybiBTPUVycm9yLnN0YWNrVHJhY2VMaW1pdCxFcnJvci5zdGFja1RyYWNlTGltaXQ9MS8wLGModCksRXJyb3Iuc3RhY2tUcmFjZUxpbWl0PVMsdH0pKTtsZXQgUixOO3ZhciBMLFAsTSxVLGo7dC5leHBvcnRzPXtjb2RlczpfLGhpZGVTdGFja0ZyYW1lczpPLGlzU3RhY2tPdmVyZmxvd0Vycm9yOmZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PU4pdHJ5eyFmdW5jdGlvbiB0KCl7dCgpfSgpfWNhdGNoKHQpe049dC5tZXNzYWdlLFI9dC5uYW1lfXJldHVybiB0JiZ0Lm5hbWU9PT1SJiZ0Lm1lc3NhZ2U9PT1OfX0sTD1cIkVSUl9JTlZBTElEX0FSR19UWVBFXCIsUD0odCxlLHIpPT57QShcInN0cmluZ1wiPT10eXBlb2YgdCxcIiduYW1lJyBtdXN0IGJlIGEgc3RyaW5nXCIpLG4oZSl8fChlPVtlXSk7bGV0IGM9XCJUaGUgXCI7eSh0LFwiIGFyZ3VtZW50XCIpP2MrPWAke3R9IGA6Yys9YFwiJHt0fVwiICR7Zyh0LFwiLlwiKT9cInByb3BlcnR5XCI6XCJhcmd1bWVudFwifSBgLGMrPVwibXVzdCBiZSBcIjtjb25zdCBmPVtdLGg9W10sZD1bXTtmb3IoY29uc3QgdCBvZiBlKUEoXCJzdHJpbmdcIj09dHlwZW9mIHQsXCJBbGwgZXhwZWN0ZWQgZW50cmllcyBoYXZlIHRvIGJlIG9mIHR5cGUgc3RyaW5nXCIpLGkodix0KT91KGYsbSh0KSk6cChFLHQpP3UoaCx0KTooQShcIm9iamVjdFwiIT09dCwnVGhlIHZhbHVlIFwib2JqZWN0XCIgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgXCJPYmplY3RcIicpLHUoZCx0KSk7aWYoaC5sZW5ndGg+MCl7Y29uc3QgdD1vKGYsXCJvYmplY3RcIik7LTEhPT10JiYobChmLHQsMSksdShoLFwiT2JqZWN0XCIpKX1pZihmLmxlbmd0aD4wKXtpZihmLmxlbmd0aD4yKXtjb25zdCB0PWEoZik7Yys9YG9uZSBvZiB0eXBlICR7cyhmLFwiLCBcIil9LCBvciAke3R9YH1lbHNlIGMrPTI9PT1mLmxlbmd0aD9gb25lIG9mIHR5cGUgJHtmWzBdfSBvciAke2ZbMV19YDpgb2YgdHlwZSAke2ZbMF19YDsoaC5sZW5ndGg+MHx8ZC5sZW5ndGg+MCkmJihjKz1cIiBvciBcIil9aWYoaC5sZW5ndGg+MCl7aWYoaC5sZW5ndGg+Mil7Y29uc3QgdD1hKGgpO2MrPWBhbiBpbnN0YW5jZSBvZiAke3MoaCxcIiwgXCIpfSwgb3IgJHt0fWB9ZWxzZSBjKz1gYW4gaW5zdGFuY2Ugb2YgJHtoWzBdfWAsMj09PWgubGVuZ3RoJiYoYys9YCBvciAke2hbMV19YCk7ZC5sZW5ndGg+MCYmKGMrPVwiIG9yIFwiKX1pZihkLmxlbmd0aD4wKWlmKGQubGVuZ3RoPjIpe2NvbnN0IHQ9YShkKTtjKz1gb25lIG9mICR7cyhkLFwiLCBcIil9LCBvciAke3R9YH1lbHNlIDI9PT1kLmxlbmd0aD9jKz1gb25lIG9mICR7ZFswXX0gb3IgJHtkWzFdfWA6KG0oZFswXSkhPT1kWzBdJiYoYys9XCJhbiBcIiksYys9YCR7ZFswXX1gKTtpZihudWxsPT1yKWMrPWAuIFJlY2VpdmVkICR7cn1gO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgciYmci5uYW1lKWMrPWAuIFJlY2VpdmVkIGZ1bmN0aW9uICR7ci5uYW1lfWA7ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgcilyLmNvbnN0cnVjdG9yJiZyLmNvbnN0cnVjdG9yLm5hbWU/Yys9YC4gUmVjZWl2ZWQgYW4gaW5zdGFuY2Ugb2YgJHtyLmNvbnN0cnVjdG9yLm5hbWV9YDpjKz1gLiBSZWNlaXZlZCAke0koKS5pbnNwZWN0KHIse2RlcHRoOi0xfSl9YDtlbHNle2xldCB0PUkoKS5pbnNwZWN0KHIse2NvbG9yczohMX0pO3QubGVuZ3RoPjI1JiYodD1gJHtiKHQsMCwyNSl9Li4uYCksYys9YC4gUmVjZWl2ZWQgdHlwZSAke3R5cGVvZiByfSAoJHt0fSlgfXJldHVybiBjfSxNPVR5cGVFcnJvcix3LnNldChMLFApLF9bTF09KFU9TSxqPUwsZnVuY3Rpb24oLi4udCl7Y29uc3QgZT1FcnJvci5zdGFja1RyYWNlTGltaXQ7RXJyb3Iuc3RhY2tUcmFjZUxpbWl0PTA7Y29uc3Qgbj1uZXcgVTtFcnJvci5zdGFja1RyYWNlTGltaXQ9ZTtjb25zdCBpPWZ1bmN0aW9uKHQsZSxuKXtjb25zdCBpPXcuZ2V0KHQpO3JldHVybiB2b2lkIDA9PT1BJiYoQT1yKDE4MykpLEEoXCJmdW5jdGlvblwiPT10eXBlb2YgaSksQShpLmxlbmd0aDw9ZS5sZW5ndGgsYENvZGU6ICR7dH07IFRoZSBwcm92aWRlZCBhcmd1bWVudHMgbGVuZ3RoICgke2UubGVuZ3RofSkgZG9lcyBub3QgbWF0Y2ggdGhlIHJlcXVpcmVkIG9uZXMgKCR7aS5sZW5ndGh9KS5gKSxoKGksbixlKX0oaix0LG4pO3JldHVybiBmKG4sXCJtZXNzYWdlXCIse3ZhbHVlOmksZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxmKG4sXCJ0b1N0cmluZ1wiLHt2YWx1ZSgpe3JldHVybmAke3RoaXMubmFtZX0gWyR7an1dOiAke3RoaXMubWVzc2FnZX1gfSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLEIobixVLm5hbWUsaiksbi5jb2RlPWosbn0pfSwzMzU6dD0+e2NvbnN0IGU9L1xcdTAwMWJcXFtcXGRcXGQ/bS9nO3QuZXhwb3J0cz17Y3VzdG9tSW5zcGVjdFN5bWJvbDpTeW1ib2wuZm9yKFwibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b21cIiksaXNFcnJvcjp0PT50IGluc3RhbmNlb2YgRXJyb3Isam9pbjpBcnJheS5wcm90b3R5cGUuam9pbi5jYWxsLmJpbmQoQXJyYXkucHJvdG90eXBlLmpvaW4pLHJlbW92ZUNvbG9yczp0PT5TdHJpbmcucHJvdG90eXBlLnJlcGxhY2UuY2FsbCh0LGUsXCJcIil9fSw2MzoodCxlLHIpPT57Y29uc3R7Z2V0Q29uc3RydWN0b3JOYW1lOm59PXIoODkxKTtmdW5jdGlvbiBpKHQsLi4uZSl7Zm9yKGNvbnN0IHIgb2YgZSl7Y29uc3QgZT1nbG9iYWxUaGlzW3JdO2lmKGUmJnQgaW5zdGFuY2VvZiBlKXJldHVybiEwfWZvcig7dDspe2lmKFwib2JqZWN0XCIhPXR5cGVvZiB0KXJldHVybiExO2lmKGUuaW5kZXhPZihuKHQpKT49MClyZXR1cm4hMDt0PU9iamVjdC5nZXRQcm90b3R5cGVPZih0KX1yZXR1cm4hMX1mdW5jdGlvbiBvKHQpe3JldHVybiBlPT57aWYoIWkoZSx0Lm5hbWUpKXJldHVybiExO3RyeXt0LnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoZSl9Y2F0Y2h7cmV0dXJuITF9cmV0dXJuITB9fVwib2JqZWN0XCIhPXR5cGVvZiBnbG9iYWxUaGlzJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsXCJfX21hZ2ljX19cIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGNvbmZpZ3VyYWJsZTohMH0pLF9fbWFnaWNfXy5nbG9iYWxUaGlzPV9fbWFnaWNfXyxkZWxldGUgT2JqZWN0LnByb3RvdHlwZS5fX21hZ2ljX18pO2NvbnN0IHM9byhTdHJpbmcpLGE9byhOdW1iZXIpLHU9byhCb29sZWFuKSxsPW8oQmlnSW50KSxjPW8oU3ltYm9sKTt0LmV4cG9ydHM9e2lzQXN5bmNGdW5jdGlvbjp0PT5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zdGFydHNXaXRoKFwiYXN5bmNcIiksaXNHZW5lcmF0b3JGdW5jdGlvbjp0PT5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5tYXRjaCgvXihhc3luY1xccyspP2Z1bmN0aW9uICpcXCovKSxpc0FueUFycmF5QnVmZmVyOnQ9PmkodCxcIkFycmF5QnVmZmVyXCIsXCJTaGFyZWRBcnJheUJ1ZmZlclwiKSxpc0FycmF5QnVmZmVyOnQ9PmkodCxcIkFycmF5QnVmZmVyXCIpLGlzQXJndW1lbnRzT2JqZWN0OnQ9PiExLGlzQm94ZWRQcmltaXRpdmU6dD0+YSh0KXx8cyh0KXx8dSh0KXx8bCh0KXx8Yyh0KSxpc0RhdGFWaWV3OnQ9PmkodCxcIkRhdGFWaWV3XCIpLGlzRXh0ZXJuYWw6dD0+XCJvYmplY3RcIj09dHlwZW9mIHQmJk9iamVjdC5pc0Zyb3plbih0KSYmbnVsbD09T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpLGlzTWFwKHQpe2lmKCFpKHQsXCJNYXBcIikpcmV0dXJuITE7dHJ5e3QuaGFzKCl9Y2F0Y2h7cmV0dXJuITF9cmV0dXJuITB9LGlzTWFwSXRlcmF0b3I6dD0+XCJbb2JqZWN0IE1hcCBJdGVyYXRvcl1cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLGlzTW9kdWxlTmFtZXNwYWNlT2JqZWN0OnQ9PnQmJlwib2JqZWN0XCI9PXR5cGVvZiB0JiZcIk1vZHVsZVwiPT09dFtTeW1ib2wudG9TdHJpbmdUYWddLGlzTmF0aXZlRXJyb3I6dD0+dCBpbnN0YW5jZW9mIEVycm9yJiZpKHQsXCJFcnJvclwiLFwiRXZhbEVycm9yXCIsXCJSYW5nZUVycm9yXCIsXCJSZWZlcmVuY2VFcnJvclwiLFwiU3ludGF4RXJyb3JcIixcIlR5cGVFcnJvclwiLFwiVVJJRXJyb3JcIixcIkFnZ3JlZ2F0ZUVycm9yXCIpLGlzUHJvbWlzZTp0PT5pKHQsXCJQcm9taXNlXCIpLGlzU2V0KHQpe2lmKCFpKHQsXCJTZXRcIikpcmV0dXJuITE7dHJ5e3QuaGFzKCl9Y2F0Y2h7cmV0dXJuITF9cmV0dXJuITB9LGlzU2V0SXRlcmF0b3I6dD0+XCJbb2JqZWN0IFNldCBJdGVyYXRvcl1cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLGlzV2Vha01hcDp0PT5pKHQsXCJXZWFrTWFwXCIpLGlzV2Vha1NldDp0PT5pKHQsXCJXZWFrU2V0XCIpLGlzUmVnRXhwOnQ9PmkodCxcIlJlZ0V4cFwiKSxpc0RhdGUodCl7aWYoaSh0LFwiRGF0ZVwiKSl0cnl7cmV0dXJuIERhdGUucHJvdG90eXBlLmdldFRpbWUuY2FsbCh0KSwhMH1jYXRjaHt9cmV0dXJuITF9LGlzVHlwZWRBcnJheTp0PT5pKHQsXCJJbnQ4QXJyYXlcIixcIlVpbnQ4QXJyYXlcIixcIlVpbnQ4Q2xhbXBlZEFycmF5XCIsXCJJbnQxNkFycmF5XCIsXCJVaW50MTZBcnJheVwiLFwiSW50MzJBcnJheVwiLFwiVWludDMyQXJyYXlcIixcIkZsb2F0MzJBcnJheVwiLFwiRmxvYXQ2NEFycmF5XCIsXCJCaWdJbnQ2NEFycmF5XCIsXCJCaWdVaW50NjRBcnJheVwiKSxpc1N0cmluZ09iamVjdDpzLGlzTnVtYmVyT2JqZWN0OmEsaXNCb29sZWFuT2JqZWN0OnUsaXNCaWdJbnRPYmplY3Q6bCxpc1N5bWJvbE9iamVjdDpjfX0sMzU2Oih0LGUscik9Pntjb25zdHtoaWRlU3RhY2tGcmFtZXM6bixjb2Rlczp7RVJSX0lOVkFMSURfQVJHX1RZUEU6aX19PXIoMTAxKTtlLnZhbGlkYXRlT2JqZWN0PW4oKCh0LGUse251bGxhYmxlOnI9ITF9PXt9KT0+e2lmKCFyJiZudWxsPT09dHx8QXJyYXkuaXNBcnJheSh0KXx8XCJvYmplY3RcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IGkoZSxcIk9iamVjdFwiLHQpfSkpfSw3NjU6dD0+e2NvbnN0IGU9KHQsZSk9PntjbGFzcyBye2NvbnN0cnVjdG9yKGUpe3RoaXMuX2l0ZXJhdG9yPXQoZSl9bmV4dCgpe3JldHVybiBlKHRoaXMuX2l0ZXJhdG9yKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzfX1yZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHIucHJvdG90eXBlLG51bGwpLE9iamVjdC5mcmVlemUoci5wcm90b3R5cGUpLE9iamVjdC5mcmVlemUocikscn07ZnVuY3Rpb24gcih0LGUpe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKHQucHJvdG90eXBlLl9fbG9va3VwR2V0dGVyX18oZSkpfWZ1bmN0aW9uIG4odCl7cmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQodCl9Y29uc3QgaT0odCxlKT0+e0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoUmVmbGVjdC5vd25LZXlzKHQpLChyPT57UmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxyKXx8UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKSl9KSl9LG89KHQscik9PntpZihTeW1ib2wuaXRlcmF0b3IgaW4gdC5wcm90b3R5cGUpe2NvbnN0IGk9bmV3IHQ7bGV0IG87QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChSZWZsZWN0Lm93bktleXModC5wcm90b3R5cGUpLChzPT57aWYoIVJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIucHJvdG90eXBlLHMpKXtjb25zdCBhPVJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQucHJvdG90eXBlLHMpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGEudmFsdWUmJjA9PT1hLnZhbHVlLmxlbmd0aCYmU3ltYm9sLml0ZXJhdG9yIGluKEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmNhbGwoYS52YWx1ZSxpKXx8e30pKXtjb25zdCB0PW4oYS52YWx1ZSk7bnVsbD09byYmKG89bih0KGkpLm5leHQpKTtjb25zdCByPWUodCxvKTthLnZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyByKHRoaXMpfX1SZWZsZWN0LmRlZmluZVByb3BlcnR5KHIucHJvdG90eXBlLHMsYSl9fSkpfWVsc2UgaSh0LnByb3RvdHlwZSxyLnByb3RvdHlwZSk7cmV0dXJuIGkodCxyKSxPYmplY3Quc2V0UHJvdG90eXBlT2Yoci5wcm90b3R5cGUsbnVsbCksT2JqZWN0LmZyZWV6ZShyLnByb3RvdHlwZSksT2JqZWN0LmZyZWV6ZShyKSxyfSxzPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdKSxhPVJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocyhcIlwiKSk7dC5leHBvcnRzPXttYWtlU2FmZTpvLGludGVybmFsQmluZGluZyh0KXtpZihcImNvbmZpZ1wiPT09dClyZXR1cm57aGFzSW50bDohMX07dGhyb3cgbmV3IEVycm9yKGB1bmtub3duIG1vZHVsZTogXCIke3R9XCJgKX0sQXJyYXksQXJyYXlJc0FycmF5OkFycmF5LmlzQXJyYXksQXJyYXlQcm90b3R5cGVGaWx0ZXI6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUuZmlsdGVyKSxBcnJheVByb3RvdHlwZUZvckVhY2g6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUuZm9yRWFjaCksQXJyYXlQcm90b3R5cGVJbmNsdWRlczpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEFycmF5LnByb3RvdHlwZS5pbmNsdWRlcyksQXJyYXlQcm90b3R5cGVJbmRleE9mOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoQXJyYXkucHJvdG90eXBlLmluZGV4T2YpLEFycmF5UHJvdG90eXBlSm9pbjpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEFycmF5LnByb3RvdHlwZS5qb2luKSxBcnJheVByb3RvdHlwZVBvcDpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEFycmF5LnByb3RvdHlwZS5wb3ApLEFycmF5UHJvdG90eXBlUHVzaDpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEFycmF5LnByb3RvdHlwZS5wdXNoKSxBcnJheVByb3RvdHlwZVB1c2hBcHBseTpGdW5jdGlvbi5hcHBseS5iaW5kKEFycmF5LnByb3RvdHlwZS5wdXNoKSxBcnJheVByb3RvdHlwZVNvcnQ6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUuc29ydCksQXJyYXlQcm90b3R5cGVTcGxpY2U6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUuc2xpY2UpLEFycmF5UHJvdG90eXBlVW5zaGlmdDpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEFycmF5LnByb3RvdHlwZS51bnNoaWZ0KSxCaWdJbnRQcm90b3R5cGVWYWx1ZU9mOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoQmlnSW50LnByb3RvdHlwZS52YWx1ZU9mKSxCb29sZWFuUHJvdG90eXBlVmFsdWVPZjpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YpLERhdGVQcm90b3R5cGVHZXRUaW1lOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VGltZSksRGF0ZVByb3RvdHlwZVRvSVNPU3RyaW5nOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcpLERhdGVQcm90b3R5cGVUb1N0cmluZzpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKERhdGUucHJvdG90eXBlLnRvU3RyaW5nKSxFcnJvckNhcHR1cmVTdGFja1RyYWNlOmZ1bmN0aW9uKHQpe2NvbnN0IGU9KG5ldyBFcnJvcikuc3RhY2s7dC5zdGFjaz1lLnJlcGxhY2UoLy4qXFxuLiovLFwiJDFcIil9LEVycm9yUHJvdG90eXBlVG9TdHJpbmc6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChFcnJvci5wcm90b3R5cGUudG9TdHJpbmcpLEZ1bmN0aW9uUHJvdG90eXBlQ2FsbDpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsKSxGdW5jdGlvblByb3RvdHlwZVRvU3RyaW5nOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nKSxKU09OU3RyaW5naWZ5OkpTT04uc3RyaW5naWZ5LE1hcFByb3RvdHlwZUdldFNpemU6cihNYXAsXCJzaXplXCIpLE1hcFByb3RvdHlwZUVudHJpZXM6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChNYXAucHJvdG90eXBlLmVudHJpZXMpLE1hdGhGbG9vcjpNYXRoLmZsb29yLE1hdGhNYXg6TWF0aC5tYXgsTWF0aE1pbjpNYXRoLm1pbixNYXRoUm91bmQ6TWF0aC5yb3VuZCxNYXRoU3FydDpNYXRoLnNxcnQsTnVtYmVyLE51bWJlcklzTmFOOk51bWJlci5pc05hTixOdW1iZXJQYXJzZUZsb2F0Ok51bWJlci5wYXJzZUZsb2F0LE51bWJlclBhcnNlSW50Ok51bWJlci5wYXJzZUludCxOdW1iZXJQcm90b3R5cGVWYWx1ZU9mOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mKSxPYmplY3QsT2JqZWN0QXNzaWduOk9iamVjdC5hc3NpZ24sT2JqZWN0Q3JlYXRlOk9iamVjdC5jcmVhdGUsT2JqZWN0RGVmaW5lUHJvcGVydHk6T2JqZWN0LmRlZmluZVByb3BlcnR5LE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcjpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLE9iamVjdEdldE93blByb3BlcnR5TmFtZXM6T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMsT2JqZWN0R2V0T3duUHJvcGVydHlTeW1ib2xzOk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsT2JqZWN0R2V0UHJvdG90eXBlT2Y6T2JqZWN0LmdldFByb3RvdHlwZU9mLE9iamVjdElzOk9iamVjdC5pcyxPYmplY3RLZXlzOk9iamVjdC5rZXlzLE9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5OkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSksT2JqZWN0UHJvdG90eXBlUHJvcGVydHlJc0VudW1lcmFibGU6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlKSxPYmplY3RTZWFsOk9iamVjdC5zZWFsLE9iamVjdFNldFByb3RvdHlwZU9mOk9iamVjdC5zZXRQcm90b3R5cGVPZixSZWZsZWN0QXBwbHk6UmVmbGVjdC5hcHBseSxSZWZsZWN0T3duS2V5czpSZWZsZWN0Lm93bktleXMsUmVnRXhwLFJlZ0V4cFByb3RvdHlwZVRlc3Q6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChSZWdFeHAucHJvdG90eXBlLnRlc3QpLFJlZ0V4cFByb3RvdHlwZVRvU3RyaW5nOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZyksU2FmZVN0cmluZ0l0ZXJhdG9yOmUocyxGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKGEubmV4dCkpLFNhZmVNYXA6byhNYXAsY2xhc3MgZXh0ZW5kcyBNYXB7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9fSksU2FmZVNldDpvKFNldCxjbGFzcyBleHRlbmRzIFNldHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX19KSxTZXRQcm90b3R5cGVHZXRTaXplOnIoU2V0LFwic2l6ZVwiKSxTZXRQcm90b3R5cGVWYWx1ZXM6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTZXQucHJvdG90eXBlLnZhbHVlcyksU3RyaW5nLFN0cmluZ1Byb3RvdHlwZUNoYXJDb2RlQXQ6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLmNoYXJDb2RlQXQpLFN0cmluZ1Byb3RvdHlwZUNvZGVQb2ludEF0OkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdCksU3RyaW5nUHJvdG90eXBlRW5kc1dpdGg6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoKSxTdHJpbmdQcm90b3R5cGVJbmNsdWRlczpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMpLFN0cmluZ1Byb3RvdHlwZU5vcm1hbGl6ZTpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplKSxTdHJpbmdQcm90b3R5cGVQYWRFbmQ6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnBhZEVuZCksU3RyaW5nUHJvdG90eXBlUGFkU3RhcnQ6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnBhZFN0YXJ0KSxTdHJpbmdQcm90b3R5cGVSZXBlYXQ6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnJlcGVhdCksU3RyaW5nUHJvdG90eXBlUmVwbGFjZTpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSksU3RyaW5nUHJvdG90eXBlU2xpY2U6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnNsaWNlKSxTdHJpbmdQcm90b3R5cGVTcGxpdDpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUuc3BsaXQpLFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS50b0xvd2VyQ2FzZSksU3RyaW5nUHJvdG90eXBlVHJpbTpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUudHJpbSksU3RyaW5nUHJvdG90eXBlVmFsdWVPZjpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUudmFsdWVPZiksU3ltYm9sUHJvdG90eXBlVG9TdHJpbmc6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTeW1ib2wucHJvdG90eXBlLnRvU3RyaW5nKSxTeW1ib2xQcm90b3R5cGVWYWx1ZU9mOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3ltYm9sLnByb3RvdHlwZS52YWx1ZU9mKSxTeW1ib2xJdGVyYXRvcjpTeW1ib2wuaXRlcmF0b3IsU3ltYm9sRm9yOlN5bWJvbC5mb3IsU3ltYm9sVG9TdHJpbmdUYWc6U3ltYm9sLnRvU3RyaW5nVGFnLFR5cGVkQXJyYXlQcm90b3R5cGVHZXRMZW5ndGg6dD0+dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUuX19sb29rdXBHZXR0ZXJfXyhcImxlbmd0aFwiKS5jYWxsKHQpLFVpbnQ4QXJyYXksdW5jdXJyeVRoaXM6bn19LDE2MTp0PT57Y29uc3QgZT1uZXcgV2Vha01hcDtjbGFzcyBye2NvbnN0cnVjdG9yKHQscil7Y29uc3Qgbj1uZXcgUHJveHkodCxyKTtyZXR1cm4gZS5zZXQobixbdCxyXSksbn1zdGF0aWMgZ2V0UHJveHlEZXRhaWxzKHQscj0hMCl7Y29uc3Qgbj1lLmdldCh0KTtpZihuKXJldHVybiByP246blswXX19dC5leHBvcnRzPXtnZXRQcm94eURldGFpbHM6ci5nZXRQcm94eURldGFpbHMuYmluZChyKSxQcm94eTpyfX0sODkxOih0LGUscik9Pntjb25zdCBuPXIoMTYxKSxpPVN5bWJvbChcImtQZW5kaW5nXCIpLG89U3ltYm9sKFwia1JlamVjdGVkXCIpO3QuZXhwb3J0cz17Z2V0T3duTm9uSW5kZXhQcm9wZXJ0aWVzOmZ1bmN0aW9uKHQsZT0yKXtjb25zdCByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpLG49W107Zm9yKGNvbnN0W3QsaV1vZiBPYmplY3QuZW50cmllcyhyKSlpZighL14oMHxbMS05XVswLTldKikkLy50ZXN0KHQpfHxwYXJzZUludCh0LDEwKT49MioqMzItMSl7aWYoMj09PWUmJiFpLmVudW1lcmFibGUpY29udGludWU7bi5wdXNoKHQpfWZvcihjb25zdCByIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCkpe2NvbnN0IGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpOygyIT09ZXx8aS5lbnVtZXJhYmxlKSYmbi5wdXNoKHIpfXJldHVybiBufSxnZXRQcm9taXNlRGV0YWlsczooKT0+W2ksdm9pZCAwXSxnZXRQcm94eURldGFpbHM6bi5nZXRQcm94eURldGFpbHMsUHJveHk6bi5Qcm94eSxrUGVuZGluZzppLGtSZWplY3RlZDpvLHByZXZpZXdFbnRyaWVzOnQ9PltbXSwhMV0sZ2V0Q29uc3RydWN0b3JOYW1lKHQpe2lmKCF0fHxcIm9iamVjdFwiIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG9iamVjdFwiKTtpZih0LmNvbnN0cnVjdG9yJiZ0LmNvbnN0cnVjdG9yLm5hbWUpcmV0dXJuIHQuY29uc3RydWN0b3IubmFtZTtjb25zdCBlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5tYXRjaCgvXlxcW29iamVjdCAoW15cXF1dKylcXF0vKTtyZXR1cm4gZT9lWzFdOlwiT2JqZWN0XCJ9LGdldEV4dGVybmFsVmFsdWU6KCk9PkJpZ0ludCgwKSxwcm9wZXJ0eUZpbHRlcjp7QUxMX1BST1BFUlRJRVM6MCxPTkxZX0VOVU1FUkFCTEU6Mn19fX0sZT17fTtmdW5jdGlvbiByKG4pe3ZhciBpPWVbbl07aWYodm9pZCAwIT09aSlyZXR1cm4gaS5leHBvcnRzO3ZhciBvPWVbbl09e2V4cG9ydHM6e319O3JldHVybiB0W25dKG8sby5leHBvcnRzLHIpLG8uZXhwb3J0c31yZXR1cm4gci5nPWZ1bmN0aW9uKCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbFRoaXMpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfWNhdGNoKHQpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvd319KCkscig0OCl9KSgpfSwxNTU6dD0+e3ZhciBlLHIsbj10LmV4cG9ydHM9e307ZnVuY3Rpb24gaSgpe3Rocm93IG5ldyBFcnJvcihcInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWRcIil9ZnVuY3Rpb24gbygpe3Rocm93IG5ldyBFcnJvcihcImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZFwiKX1mdW5jdGlvbiBzKHQpe2lmKGU9PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KHQsMCk7aWYoKGU9PT1pfHwhZSkmJnNldFRpbWVvdXQpcmV0dXJuIGU9c2V0VGltZW91dCxzZXRUaW1lb3V0KHQsMCk7dHJ5e3JldHVybiBlKHQsMCl9Y2F0Y2gocil7dHJ5e3JldHVybiBlLmNhbGwobnVsbCx0LDApfWNhdGNoKHIpe3JldHVybiBlLmNhbGwodGhpcyx0LDApfX19IWZ1bmN0aW9uKCl7dHJ5e2U9XCJmdW5jdGlvblwiPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Oml9Y2F0Y2godCl7ZT1pfXRyeXtyPVwiZnVuY3Rpb25cIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6b31jYXRjaCh0KXtyPW99fSgpO3ZhciBhLHU9W10sbD0hMSxjPS0xO2Z1bmN0aW9uIGYoKXtsJiZhJiYobD0hMSxhLmxlbmd0aD91PWEuY29uY2F0KHUpOmM9LTEsdS5sZW5ndGgmJmgoKSl9ZnVuY3Rpb24gaCgpe2lmKCFsKXt2YXIgdD1zKGYpO2w9ITA7Zm9yKHZhciBlPXUubGVuZ3RoO2U7KXtmb3IoYT11LHU9W107KytjPGU7KWEmJmFbY10ucnVuKCk7Yz0tMSxlPXUubGVuZ3RofWE9bnVsbCxsPSExLGZ1bmN0aW9uKHQpe2lmKHI9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dCh0KTtpZigocj09PW98fCFyKSYmY2xlYXJUaW1lb3V0KXJldHVybiByPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQodCk7dHJ5e3IodCl9Y2F0Y2goZSl7dHJ5e3JldHVybiByLmNhbGwobnVsbCx0KX1jYXRjaChlKXtyZXR1cm4gci5jYWxsKHRoaXMsdCl9fX0odCl9fWZ1bmN0aW9uIHAodCxlKXt0aGlzLmZ1bj10LHRoaXMuYXJyYXk9ZX1mdW5jdGlvbiBkKCl7fW4ubmV4dFRpY2s9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspZVtyLTFdPWFyZ3VtZW50c1tyXTt1LnB1c2gobmV3IHAodCxlKSksMSE9PXUubGVuZ3RofHxsfHxzKGgpfSxwLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxuLnRpdGxlPVwiYnJvd3NlclwiLG4uYnJvd3Nlcj0hMCxuLmVudj17fSxuLmFyZ3Y9W10sbi52ZXJzaW9uPVwiXCIsbi52ZXJzaW9ucz17fSxuLm9uPWQsbi5hZGRMaXN0ZW5lcj1kLG4ub25jZT1kLG4ub2ZmPWQsbi5yZW1vdmVMaXN0ZW5lcj1kLG4ucmVtb3ZlQWxsTGlzdGVuZXJzPWQsbi5lbWl0PWQsbi5wcmVwZW5kTGlzdGVuZXI9ZCxuLnByZXBlbmRPbmNlTGlzdGVuZXI9ZCxuLmxpc3RlbmVycz1mdW5jdGlvbih0KXtyZXR1cm5bXX0sbi5iaW5kaW5nPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcihcInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkXCIpfSxuLmN3ZD1mdW5jdGlvbigpe3JldHVyblwiL1wifSxuLmNoZGlyPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcihcInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZFwiKX0sbi51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0sMjgxOnQ9PntcInVzZSBzdHJpY3RcIjt2YXIgZT17fTtmdW5jdGlvbiByKHQscixuKXtufHwobj1FcnJvcik7dmFyIGk9ZnVuY3Rpb24odCl7dmFyIGUsbjtmdW5jdGlvbiBpKGUsbixpKXtyZXR1cm4gdC5jYWxsKHRoaXMsZnVuY3Rpb24odCxlLG4pe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiByP3I6cih0LGUsbil9KGUsbixpKSl8fHRoaXN9cmV0dXJuIG49dCwoZT1pKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLl9fcHJvdG9fXz1uLGl9KG4pO2kucHJvdG90eXBlLm5hbWU9bi5uYW1lLGkucHJvdG90eXBlLmNvZGU9dCxlW3RdPWl9ZnVuY3Rpb24gbih0LGUpe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciByPXQubGVuZ3RoO3JldHVybiB0PXQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKHQpfSkpLHI+Mj9cIm9uZSBvZiBcIi5jb25jYXQoZSxcIiBcIikuY29uY2F0KHQuc2xpY2UoMCxyLTEpLmpvaW4oXCIsIFwiKSxcIiwgb3IgXCIpK3Rbci0xXToyPT09cj9cIm9uZSBvZiBcIi5jb25jYXQoZSxcIiBcIikuY29uY2F0KHRbMF0sXCIgb3IgXCIpLmNvbmNhdCh0WzFdKTpcIm9mIFwiLmNvbmNhdChlLFwiIFwiKS5jb25jYXQodFswXSl9cmV0dXJuXCJvZiBcIi5jb25jYXQoZSxcIiBcIikuY29uY2F0KFN0cmluZyh0KSl9cihcIkVSUl9JTlZBTElEX09QVF9WQUxVRVwiLChmdW5jdGlvbih0LGUpe3JldHVybidUaGUgdmFsdWUgXCInK2UrJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcIicrdCsnXCInfSksVHlwZUVycm9yKSxyKFwiRVJSX0lOVkFMSURfQVJHX1RZUEVcIiwoZnVuY3Rpb24odCxlLHIpe3ZhciBpLG8scyxhLHU7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJihvPVwibm90IFwiLGUuc3Vic3RyKDAsby5sZW5ndGgpPT09byk/KGk9XCJtdXN0IG5vdCBiZVwiLGU9ZS5yZXBsYWNlKC9ebm90IC8sXCJcIikpOmk9XCJtdXN0IGJlXCIsZnVuY3Rpb24odCxlLHIpe3JldHVybih2b2lkIDA9PT1yfHxyPnQubGVuZ3RoKSYmKHI9dC5sZW5ndGgpLHQuc3Vic3RyaW5nKHItZS5sZW5ndGgscik9PT1lfSh0LFwiIGFyZ3VtZW50XCIpKXM9XCJUaGUgXCIuY29uY2F0KHQsXCIgXCIpLmNvbmNhdChpLFwiIFwiKS5jb25jYXQobihlLFwidHlwZVwiKSk7ZWxzZXt2YXIgbD0oXCJudW1iZXJcIiE9dHlwZW9mIHUmJih1PTApLHUrXCIuXCIubGVuZ3RoPihhPXQpLmxlbmd0aHx8LTE9PT1hLmluZGV4T2YoXCIuXCIsdSk/XCJhcmd1bWVudFwiOlwicHJvcGVydHlcIik7cz0nVGhlIFwiJy5jb25jYXQodCwnXCIgJykuY29uY2F0KGwsXCIgXCIpLmNvbmNhdChpLFwiIFwiKS5jb25jYXQobihlLFwidHlwZVwiKSl9cmV0dXJuIHMrXCIuIFJlY2VpdmVkIHR5cGUgXCIuY29uY2F0KHR5cGVvZiByKX0pLFR5cGVFcnJvcikscihcIkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0ZcIixcInN0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GXCIpLHIoXCJFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRFwiLChmdW5jdGlvbih0KXtyZXR1cm5cIlRoZSBcIit0K1wiIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWRcIn0pKSxyKFwiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0VcIixcIlByZW1hdHVyZSBjbG9zZVwiKSxyKFwiRVJSX1NUUkVBTV9ERVNUUk9ZRURcIiwoZnVuY3Rpb24odCl7cmV0dXJuXCJDYW5ub3QgY2FsbCBcIit0K1wiIGFmdGVyIGEgc3RyZWFtIHdhcyBkZXN0cm95ZWRcIn0pKSxyKFwiRVJSX01VTFRJUExFX0NBTExCQUNLXCIsXCJDYWxsYmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXNcIikscihcIkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEVcIixcIkNhbm5vdCBwaXBlLCBub3QgcmVhZGFibGVcIikscihcIkVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5EXCIsXCJ3cml0ZSBhZnRlciBlbmRcIikscihcIkVSUl9TVFJFQU1fTlVMTF9WQUxVRVNcIixcIk1heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtXCIsVHlwZUVycm9yKSxyKFwiRVJSX1VOS05PV05fRU5DT0RJTkdcIiwoZnVuY3Rpb24odCl7cmV0dXJuXCJVbmtub3duIGVuY29kaW5nOiBcIit0fSksVHlwZUVycm9yKSxyKFwiRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVFwiLFwic3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnRcIiksdC5leHBvcnRzLnE9ZX0sNzUzOih0LGUscik9PntcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDE1NSksaT1PYmplY3Qua2V5c3x8ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciByIGluIHQpZS5wdXNoKHIpO3JldHVybiBlfTt0LmV4cG9ydHM9Yzt2YXIgbz1yKDQ4MSkscz1yKDIyOSk7cig3MTcpKGMsbyk7Zm9yKHZhciBhPWkocy5wcm90b3R5cGUpLHU9MDt1PGEubGVuZ3RoO3UrKyl7dmFyIGw9YVt1XTtjLnByb3RvdHlwZVtsXXx8KGMucHJvdG90eXBlW2xdPXMucHJvdG90eXBlW2xdKX1mdW5jdGlvbiBjKHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGMpKXJldHVybiBuZXcgYyh0KTtvLmNhbGwodGhpcyx0KSxzLmNhbGwodGhpcyx0KSx0aGlzLmFsbG93SGFsZk9wZW49ITAsdCYmKCExPT09dC5yZWFkYWJsZSYmKHRoaXMucmVhZGFibGU9ITEpLCExPT09dC53cml0YWJsZSYmKHRoaXMud3JpdGFibGU9ITEpLCExPT09dC5hbGxvd0hhbGZPcGVuJiYodGhpcy5hbGxvd0hhbGZPcGVuPSExLHRoaXMub25jZShcImVuZFwiLGYpKSl9ZnVuY3Rpb24gZigpe3RoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWR8fG4ubmV4dFRpY2soaCx0aGlzKX1mdW5jdGlvbiBoKHQpe3QuZW5kKCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGMucHJvdG90eXBlLFwid3JpdGFibGVIaWdoV2F0ZXJNYXJrXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYy5wcm90b3R5cGUsXCJ3cml0YWJsZUJ1ZmZlclwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmdldEJ1ZmZlcigpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLnByb3RvdHlwZSxcIndyaXRhYmxlTGVuZ3RoXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLnByb3RvdHlwZSxcImRlc3Ryb3llZFwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbih0KXt2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9dCx0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD10KX19KX0sNzI1Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9aTt2YXIgbj1yKDYwNSk7ZnVuY3Rpb24gaSh0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBpKSlyZXR1cm4gbmV3IGkodCk7bi5jYWxsKHRoaXMsdCl9cig3MTcpKGksbiksaS5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbih0LGUscil7cihudWxsLHQpfX0sNDgxOih0LGUscik9PntcInVzZSBzdHJpY3RcIjt2YXIgbixpPXIoMTU1KTt0LmV4cG9ydHM9VCxULlJlYWRhYmxlU3RhdGU9QSxyKDE4NykuRXZlbnRFbWl0dGVyO3ZhciBvLHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5saXN0ZW5lcnMoZSkubGVuZ3RofSxhPXIoNTAzKSx1PXIoNzY0KS5CdWZmZXIsbD1yLmcuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9LGM9cig2NjkpO289YyYmYy5kZWJ1Z2xvZz9jLmRlYnVnbG9nKFwic3RyZWFtXCIpOmZ1bmN0aW9uKCl7fTt2YXIgZixoLHAsZD1yKDMyNykseT1yKDE5NSksZz1yKDQ1NykuZ2V0SGlnaFdhdGVyTWFyayxiPXIoMjgxKS5xLG09Yi5FUlJfSU5WQUxJRF9BUkdfVFlQRSx3PWIuRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRixfPWIuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsRT1iLkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQ7cig3MTcpKFQsYSk7dmFyIHY9eS5lcnJvck9yRGVzdHJveSxTPVtcImVycm9yXCIsXCJjbG9zZVwiLFwiZGVzdHJveVwiLFwicGF1c2VcIixcInJlc3VtZVwiXTtmdW5jdGlvbiBBKHQsZSxpKXtuPW58fHIoNzUzKSx0PXR8fHt9LFwiYm9vbGVhblwiIT10eXBlb2YgaSYmKGk9ZSBpbnN0YW5jZW9mIG4pLHRoaXMub2JqZWN0TW9kZT0hIXQub2JqZWN0TW9kZSxpJiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISF0LnJlYWRhYmxlT2JqZWN0TW9kZSksdGhpcy5oaWdoV2F0ZXJNYXJrPWcodGhpcyx0LFwicmVhZGFibGVIaWdoV2F0ZXJNYXJrXCIsaSksdGhpcy5idWZmZXI9bmV3IGQsdGhpcy5sZW5ndGg9MCx0aGlzLnBpcGVzPW51bGwsdGhpcy5waXBlc0NvdW50PTAsdGhpcy5mbG93aW5nPW51bGwsdGhpcy5lbmRlZD0hMSx0aGlzLmVuZEVtaXR0ZWQ9ITEsdGhpcy5yZWFkaW5nPSExLHRoaXMuc3luYz0hMCx0aGlzLm5lZWRSZWFkYWJsZT0hMSx0aGlzLmVtaXR0ZWRSZWFkYWJsZT0hMSx0aGlzLnJlYWRhYmxlTGlzdGVuaW5nPSExLHRoaXMucmVzdW1lU2NoZWR1bGVkPSExLHRoaXMucGF1c2VkPSEwLHRoaXMuZW1pdENsb3NlPSExIT09dC5lbWl0Q2xvc2UsdGhpcy5hdXRvRGVzdHJveT0hIXQuYXV0b0Rlc3Ryb3ksdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5kZWZhdWx0RW5jb2Rpbmc9dC5kZWZhdWx0RW5jb2Rpbmd8fFwidXRmOFwiLHRoaXMuYXdhaXREcmFpbj0wLHRoaXMucmVhZGluZ01vcmU9ITEsdGhpcy5kZWNvZGVyPW51bGwsdGhpcy5lbmNvZGluZz1udWxsLHQuZW5jb2RpbmcmJihmfHwoZj1yKDU1MykucyksdGhpcy5kZWNvZGVyPW5ldyBmKHQuZW5jb2RpbmcpLHRoaXMuZW5jb2Rpbmc9dC5lbmNvZGluZyl9ZnVuY3Rpb24gVCh0KXtpZihuPW58fHIoNzUzKSwhKHRoaXMgaW5zdGFuY2VvZiBUKSlyZXR1cm4gbmV3IFQodCk7dmFyIGU9dGhpcyBpbnN0YW5jZW9mIG47dGhpcy5fcmVhZGFibGVTdGF0ZT1uZXcgQSh0LHRoaXMsZSksdGhpcy5yZWFkYWJsZT0hMCx0JiYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC5yZWFkJiYodGhpcy5fcmVhZD10LnJlYWQpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZGVzdHJveSYmKHRoaXMuX2Rlc3Ryb3k9dC5kZXN0cm95KSksYS5jYWxsKHRoaXMpfWZ1bmN0aW9uIEkodCxlLHIsbixpKXtvKFwicmVhZGFibGVBZGRDaHVua1wiLGUpO3ZhciBzLGE9dC5fcmVhZGFibGVTdGF0ZTtpZihudWxsPT09ZSlhLnJlYWRpbmc9ITEsZnVuY3Rpb24odCxlKXtpZihvKFwib25Fb2ZDaHVua1wiKSwhZS5lbmRlZCl7aWYoZS5kZWNvZGVyKXt2YXIgcj1lLmRlY29kZXIuZW5kKCk7ciYmci5sZW5ndGgmJihlLmJ1ZmZlci5wdXNoKHIpLGUubGVuZ3RoKz1lLm9iamVjdE1vZGU/MTpyLmxlbmd0aCl9ZS5lbmRlZD0hMCxlLnN5bmM/Uih0KTooZS5uZWVkUmVhZGFibGU9ITEsZS5lbWl0dGVkUmVhZGFibGV8fChlLmVtaXR0ZWRSZWFkYWJsZT0hMCxOKHQpKSl9fSh0LGEpO2Vsc2UgaWYoaXx8KHM9ZnVuY3Rpb24odCxlKXt2YXIgcixuO3JldHVybiBuPWUsdS5pc0J1ZmZlcihuKXx8biBpbnN0YW5jZW9mIGx8fFwic3RyaW5nXCI9PXR5cGVvZiBlfHx2b2lkIDA9PT1lfHx0Lm9iamVjdE1vZGV8fChyPW5ldyBtKFwiY2h1bmtcIixbXCJzdHJpbmdcIixcIkJ1ZmZlclwiLFwiVWludDhBcnJheVwiXSxlKSkscn0oYSxlKSkscyl2KHQscyk7ZWxzZSBpZihhLm9iamVjdE1vZGV8fGUmJmUubGVuZ3RoPjApaWYoXCJzdHJpbmdcIj09dHlwZW9mIGV8fGEub2JqZWN0TW9kZXx8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09dS5wcm90b3R5cGV8fChlPWZ1bmN0aW9uKHQpe3JldHVybiB1LmZyb20odCl9KGUpKSxuKWEuZW5kRW1pdHRlZD92KHQsbmV3IEUpOkIodCxhLGUsITApO2Vsc2UgaWYoYS5lbmRlZCl2KHQsbmV3IHcpO2Vsc2V7aWYoYS5kZXN0cm95ZWQpcmV0dXJuITE7YS5yZWFkaW5nPSExLGEuZGVjb2RlciYmIXI/KGU9YS5kZWNvZGVyLndyaXRlKGUpLGEub2JqZWN0TW9kZXx8MCE9PWUubGVuZ3RoP0IodCxhLGUsITEpOkwodCxhKSk6Qih0LGEsZSwhMSl9ZWxzZSBufHwoYS5yZWFkaW5nPSExLEwodCxhKSk7cmV0dXJuIWEuZW5kZWQmJihhLmxlbmd0aDxhLmhpZ2hXYXRlck1hcmt8fDA9PT1hLmxlbmd0aCl9ZnVuY3Rpb24gQih0LGUscixuKXtlLmZsb3dpbmcmJjA9PT1lLmxlbmd0aCYmIWUuc3luYz8oZS5hd2FpdERyYWluPTAsdC5lbWl0KFwiZGF0YVwiLHIpKTooZS5sZW5ndGgrPWUub2JqZWN0TW9kZT8xOnIubGVuZ3RoLG4/ZS5idWZmZXIudW5zaGlmdChyKTplLmJ1ZmZlci5wdXNoKHIpLGUubmVlZFJlYWRhYmxlJiZSKHQpKSxMKHQsZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLFwiZGVzdHJveWVkXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPXQpfX0pLFQucHJvdG90eXBlLmRlc3Ryb3k9eS5kZXN0cm95LFQucHJvdG90eXBlLl91bmRlc3Ryb3k9eS51bmRlc3Ryb3ksVC5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24odCxlKXtlKHQpfSxULnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiBuLm9iamVjdE1vZGU/cj0hMDpcInN0cmluZ1wiPT10eXBlb2YgdCYmKChlPWV8fG4uZGVmYXVsdEVuY29kaW5nKSE9PW4uZW5jb2RpbmcmJih0PXUuZnJvbSh0LGUpLGU9XCJcIikscj0hMCksSSh0aGlzLHQsZSwhMSxyKX0sVC5wcm90b3R5cGUudW5zaGlmdD1mdW5jdGlvbih0KXtyZXR1cm4gSSh0aGlzLHQsbnVsbCwhMCwhMSl9LFQucHJvdG90eXBlLmlzUGF1c2VkPWZ1bmN0aW9uKCl7cmV0dXJuITE9PT10aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmd9LFQucHJvdG90eXBlLnNldEVuY29kaW5nPWZ1bmN0aW9uKHQpe2Z8fChmPXIoNTUzKS5zKTt2YXIgZT1uZXcgZih0KTt0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXI9ZSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nPXRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlci5lbmNvZGluZztmb3IodmFyIG49dGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIuaGVhZCxpPVwiXCI7bnVsbCE9PW47KWkrPWUud3JpdGUobi5kYXRhKSxuPW4ubmV4dDtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIuY2xlYXIoKSxcIlwiIT09aSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIucHVzaChpKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmxlbmd0aD1pLmxlbmd0aCx0aGlzfTt2YXIgTz0xMDczNzQxODI0O2Z1bmN0aW9uIHgodCxlKXtyZXR1cm4gdDw9MHx8MD09PWUubGVuZ3RoJiZlLmVuZGVkPzA6ZS5vYmplY3RNb2RlPzE6dCE9dD9lLmZsb3dpbmcmJmUubGVuZ3RoP2UuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg6ZS5sZW5ndGg6KHQ+ZS5oaWdoV2F0ZXJNYXJrJiYoZS5oaWdoV2F0ZXJNYXJrPWZ1bmN0aW9uKHQpe3JldHVybiB0Pj1PP3Q9TzoodC0tLHR8PXQ+Pj4xLHR8PXQ+Pj4yLHR8PXQ+Pj40LHR8PXQ+Pj44LHR8PXQ+Pj4xNix0KyspLHR9KHQpKSx0PD1lLmxlbmd0aD90OmUuZW5kZWQ/ZS5sZW5ndGg6KGUubmVlZFJlYWRhYmxlPSEwLDApKX1mdW5jdGlvbiBSKHQpe3ZhciBlPXQuX3JlYWRhYmxlU3RhdGU7byhcImVtaXRSZWFkYWJsZVwiLGUubmVlZFJlYWRhYmxlLGUuZW1pdHRlZFJlYWRhYmxlKSxlLm5lZWRSZWFkYWJsZT0hMSxlLmVtaXR0ZWRSZWFkYWJsZXx8KG8oXCJlbWl0UmVhZGFibGVcIixlLmZsb3dpbmcpLGUuZW1pdHRlZFJlYWRhYmxlPSEwLGkubmV4dFRpY2soTix0KSl9ZnVuY3Rpb24gTih0KXt2YXIgZT10Ll9yZWFkYWJsZVN0YXRlO28oXCJlbWl0UmVhZGFibGVfXCIsZS5kZXN0cm95ZWQsZS5sZW5ndGgsZS5lbmRlZCksZS5kZXN0cm95ZWR8fCFlLmxlbmd0aCYmIWUuZW5kZWR8fCh0LmVtaXQoXCJyZWFkYWJsZVwiKSxlLmVtaXR0ZWRSZWFkYWJsZT0hMSksZS5uZWVkUmVhZGFibGU9IWUuZmxvd2luZyYmIWUuZW5kZWQmJmUubGVuZ3RoPD1lLmhpZ2hXYXRlck1hcmssayh0KX1mdW5jdGlvbiBMKHQsZSl7ZS5yZWFkaW5nTW9yZXx8KGUucmVhZGluZ01vcmU9ITAsaS5uZXh0VGljayhQLHQsZSkpfWZ1bmN0aW9uIFAodCxlKXtmb3IoOyFlLnJlYWRpbmcmJiFlLmVuZGVkJiYoZS5sZW5ndGg8ZS5oaWdoV2F0ZXJNYXJrfHxlLmZsb3dpbmcmJjA9PT1lLmxlbmd0aCk7KXt2YXIgcj1lLmxlbmd0aDtpZihvKFwibWF5YmVSZWFkTW9yZSByZWFkIDBcIiksdC5yZWFkKDApLHI9PT1lLmxlbmd0aClicmVha31lLnJlYWRpbmdNb3JlPSExfWZ1bmN0aW9uIE0odCl7dmFyIGU9dC5fcmVhZGFibGVTdGF0ZTtlLnJlYWRhYmxlTGlzdGVuaW5nPXQubGlzdGVuZXJDb3VudChcInJlYWRhYmxlXCIpPjAsZS5yZXN1bWVTY2hlZHVsZWQmJiFlLnBhdXNlZD9lLmZsb3dpbmc9ITA6dC5saXN0ZW5lckNvdW50KFwiZGF0YVwiKT4wJiZ0LnJlc3VtZSgpfWZ1bmN0aW9uIFUodCl7byhcInJlYWRhYmxlIG5leHR0aWNrIHJlYWQgMFwiKSx0LnJlYWQoMCl9ZnVuY3Rpb24gaih0LGUpe28oXCJyZXN1bWVcIixlLnJlYWRpbmcpLGUucmVhZGluZ3x8dC5yZWFkKDApLGUucmVzdW1lU2NoZWR1bGVkPSExLHQuZW1pdChcInJlc3VtZVwiKSxrKHQpLGUuZmxvd2luZyYmIWUucmVhZGluZyYmdC5yZWFkKDApfWZ1bmN0aW9uIGsodCl7dmFyIGU9dC5fcmVhZGFibGVTdGF0ZTtmb3IobyhcImZsb3dcIixlLmZsb3dpbmcpO2UuZmxvd2luZyYmbnVsbCE9PXQucmVhZCgpOyk7fWZ1bmN0aW9uICQodCxlKXtyZXR1cm4gMD09PWUubGVuZ3RoP251bGw6KGUub2JqZWN0TW9kZT9yPWUuYnVmZmVyLnNoaWZ0KCk6IXR8fHQ+PWUubGVuZ3RoPyhyPWUuZGVjb2Rlcj9lLmJ1ZmZlci5qb2luKFwiXCIpOjE9PT1lLmJ1ZmZlci5sZW5ndGg/ZS5idWZmZXIuZmlyc3QoKTplLmJ1ZmZlci5jb25jYXQoZS5sZW5ndGgpLGUuYnVmZmVyLmNsZWFyKCkpOnI9ZS5idWZmZXIuY29uc3VtZSh0LGUuZGVjb2Rlcikscik7dmFyIHJ9ZnVuY3Rpb24gRih0KXt2YXIgZT10Ll9yZWFkYWJsZVN0YXRlO28oXCJlbmRSZWFkYWJsZVwiLGUuZW5kRW1pdHRlZCksZS5lbmRFbWl0dGVkfHwoZS5lbmRlZD0hMCxpLm5leHRUaWNrKEQsZSx0KSl9ZnVuY3Rpb24gRCh0LGUpe2lmKG8oXCJlbmRSZWFkYWJsZU5UXCIsdC5lbmRFbWl0dGVkLHQubGVuZ3RoKSwhdC5lbmRFbWl0dGVkJiYwPT09dC5sZW5ndGgmJih0LmVuZEVtaXR0ZWQ9ITAsZS5yZWFkYWJsZT0hMSxlLmVtaXQoXCJlbmRcIiksdC5hdXRvRGVzdHJveSkpe3ZhciByPWUuX3dyaXRhYmxlU3RhdGU7KCFyfHxyLmF1dG9EZXN0cm95JiZyLmZpbmlzaGVkKSYmZS5kZXN0cm95KCl9fWZ1bmN0aW9uIEModCxlKXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspaWYodFtyXT09PWUpcmV0dXJuIHI7cmV0dXJuLTF9VC5wcm90b3R5cGUucmVhZD1mdW5jdGlvbih0KXtvKFwicmVhZFwiLHQpLHQ9cGFyc2VJbnQodCwxMCk7dmFyIGU9dGhpcy5fcmVhZGFibGVTdGF0ZSxyPXQ7aWYoMCE9PXQmJihlLmVtaXR0ZWRSZWFkYWJsZT0hMSksMD09PXQmJmUubmVlZFJlYWRhYmxlJiYoKDAhPT1lLmhpZ2hXYXRlck1hcms/ZS5sZW5ndGg+PWUuaGlnaFdhdGVyTWFyazplLmxlbmd0aD4wKXx8ZS5lbmRlZCkpcmV0dXJuIG8oXCJyZWFkOiBlbWl0UmVhZGFibGVcIixlLmxlbmd0aCxlLmVuZGVkKSwwPT09ZS5sZW5ndGgmJmUuZW5kZWQ/Rih0aGlzKTpSKHRoaXMpLG51bGw7aWYoMD09PSh0PXgodCxlKSkmJmUuZW5kZWQpcmV0dXJuIDA9PT1lLmxlbmd0aCYmRih0aGlzKSxudWxsO3ZhciBuLGk9ZS5uZWVkUmVhZGFibGU7cmV0dXJuIG8oXCJuZWVkIHJlYWRhYmxlXCIsaSksKDA9PT1lLmxlbmd0aHx8ZS5sZW5ndGgtdDxlLmhpZ2hXYXRlck1hcmspJiZvKFwibGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmtcIixpPSEwKSxlLmVuZGVkfHxlLnJlYWRpbmc/byhcInJlYWRpbmcgb3IgZW5kZWRcIixpPSExKTppJiYobyhcImRvIHJlYWRcIiksZS5yZWFkaW5nPSEwLGUuc3luYz0hMCwwPT09ZS5sZW5ndGgmJihlLm5lZWRSZWFkYWJsZT0hMCksdGhpcy5fcmVhZChlLmhpZ2hXYXRlck1hcmspLGUuc3luYz0hMSxlLnJlYWRpbmd8fCh0PXgocixlKSkpLG51bGw9PT0obj10PjA/JCh0LGUpOm51bGwpPyhlLm5lZWRSZWFkYWJsZT1lLmxlbmd0aDw9ZS5oaWdoV2F0ZXJNYXJrLHQ9MCk6KGUubGVuZ3RoLT10LGUuYXdhaXREcmFpbj0wKSwwPT09ZS5sZW5ndGgmJihlLmVuZGVkfHwoZS5uZWVkUmVhZGFibGU9ITApLHIhPT10JiZlLmVuZGVkJiZGKHRoaXMpKSxudWxsIT09biYmdGhpcy5lbWl0KFwiZGF0YVwiLG4pLG59LFQucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKHQpe3YodGhpcyxuZXcgXyhcIl9yZWFkKClcIikpfSxULnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcyxuPXRoaXMuX3JlYWRhYmxlU3RhdGU7c3dpdGNoKG4ucGlwZXNDb3VudCl7Y2FzZSAwOm4ucGlwZXM9dDticmVhaztjYXNlIDE6bi5waXBlcz1bbi5waXBlcyx0XTticmVhaztkZWZhdWx0Om4ucGlwZXMucHVzaCh0KX1uLnBpcGVzQ291bnQrPTEsbyhcInBpcGUgY291bnQ9JWQgb3B0cz0lalwiLG4ucGlwZXNDb3VudCxlKTt2YXIgYT1lJiYhMT09PWUuZW5kfHx0PT09aS5zdGRvdXR8fHQ9PT1pLnN0ZGVycj95OnU7ZnVuY3Rpb24gdSgpe28oXCJvbmVuZFwiKSx0LmVuZCgpfW4uZW5kRW1pdHRlZD9pLm5leHRUaWNrKGEpOnIub25jZShcImVuZFwiLGEpLHQub24oXCJ1bnBpcGVcIiwoZnVuY3Rpb24gZShpLHMpe28oXCJvbnVucGlwZVwiKSxpPT09ciYmcyYmITE9PT1zLmhhc1VucGlwZWQmJihzLmhhc1VucGlwZWQ9ITAsbyhcImNsZWFudXBcIiksdC5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIscCksdC5yZW1vdmVMaXN0ZW5lcihcImZpbmlzaFwiLGQpLHQucmVtb3ZlTGlzdGVuZXIoXCJkcmFpblwiLGwpLHQucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLGgpLHQucmVtb3ZlTGlzdGVuZXIoXCJ1bnBpcGVcIixlKSxyLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsdSksci5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLHkpLHIucmVtb3ZlTGlzdGVuZXIoXCJkYXRhXCIsZiksYz0hMCwhbi5hd2FpdERyYWlufHx0Ll93cml0YWJsZVN0YXRlJiYhdC5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW58fGwoKSl9KSk7dmFyIGw9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5fcmVhZGFibGVTdGF0ZTtvKFwicGlwZU9uRHJhaW5cIixlLmF3YWl0RHJhaW4pLGUuYXdhaXREcmFpbiYmZS5hd2FpdERyYWluLS0sMD09PWUuYXdhaXREcmFpbiYmcyh0LFwiZGF0YVwiKSYmKGUuZmxvd2luZz0hMCxrKHQpKX19KHIpO3Qub24oXCJkcmFpblwiLGwpO3ZhciBjPSExO2Z1bmN0aW9uIGYoZSl7byhcIm9uZGF0YVwiKTt2YXIgaT10LndyaXRlKGUpO28oXCJkZXN0LndyaXRlXCIsaSksITE9PT1pJiYoKDE9PT1uLnBpcGVzQ291bnQmJm4ucGlwZXM9PT10fHxuLnBpcGVzQ291bnQ+MSYmLTEhPT1DKG4ucGlwZXMsdCkpJiYhYyYmKG8oXCJmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2VcIixuLmF3YWl0RHJhaW4pLG4uYXdhaXREcmFpbisrKSxyLnBhdXNlKCkpfWZ1bmN0aW9uIGgoZSl7byhcIm9uZXJyb3JcIixlKSx5KCksdC5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsaCksMD09PXModCxcImVycm9yXCIpJiZ2KHQsZSl9ZnVuY3Rpb24gcCgpe3QucmVtb3ZlTGlzdGVuZXIoXCJmaW5pc2hcIixkKSx5KCl9ZnVuY3Rpb24gZCgpe28oXCJvbmZpbmlzaFwiKSx0LnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIixwKSx5KCl9ZnVuY3Rpb24geSgpe28oXCJ1bnBpcGVcIiksci51bnBpcGUodCl9cmV0dXJuIHIub24oXCJkYXRhXCIsZiksZnVuY3Rpb24odCxlLHIpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQucHJlcGVuZExpc3RlbmVyKXJldHVybiB0LnByZXBlbmRMaXN0ZW5lcihlLHIpO3QuX2V2ZW50cyYmdC5fZXZlbnRzLmVycm9yP0FycmF5LmlzQXJyYXkodC5fZXZlbnRzLmVycm9yKT90Ll9ldmVudHMuZXJyb3IudW5zaGlmdChyKTp0Ll9ldmVudHMuZXJyb3I9W3IsdC5fZXZlbnRzLmVycm9yXTp0Lm9uKGUscil9KHQsXCJlcnJvclwiLGgpLHQub25jZShcImNsb3NlXCIscCksdC5vbmNlKFwiZmluaXNoXCIsZCksdC5lbWl0KFwicGlwZVwiLHIpLG4uZmxvd2luZ3x8KG8oXCJwaXBlIHJlc3VtZVwiKSxyLnJlc3VtZSgpKSx0fSxULnByb3RvdHlwZS51bnBpcGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcmVhZGFibGVTdGF0ZSxyPXtoYXNVbnBpcGVkOiExfTtpZigwPT09ZS5waXBlc0NvdW50KXJldHVybiB0aGlzO2lmKDE9PT1lLnBpcGVzQ291bnQpcmV0dXJuIHQmJnQhPT1lLnBpcGVzfHwodHx8KHQ9ZS5waXBlcyksZS5waXBlcz1udWxsLGUucGlwZXNDb3VudD0wLGUuZmxvd2luZz0hMSx0JiZ0LmVtaXQoXCJ1bnBpcGVcIix0aGlzLHIpKSx0aGlzO2lmKCF0KXt2YXIgbj1lLnBpcGVzLGk9ZS5waXBlc0NvdW50O2UucGlwZXM9bnVsbCxlLnBpcGVzQ291bnQ9MCxlLmZsb3dpbmc9ITE7Zm9yKHZhciBvPTA7bzxpO28rKyluW29dLmVtaXQoXCJ1bnBpcGVcIix0aGlzLHtoYXNVbnBpcGVkOiExfSk7cmV0dXJuIHRoaXN9dmFyIHM9QyhlLnBpcGVzLHQpO3JldHVybi0xPT09c3x8KGUucGlwZXMuc3BsaWNlKHMsMSksZS5waXBlc0NvdW50LT0xLDE9PT1lLnBpcGVzQ291bnQmJihlLnBpcGVzPWUucGlwZXNbMF0pLHQuZW1pdChcInVucGlwZVwiLHRoaXMscikpLHRoaXN9LFQucHJvdG90eXBlLm9uPWZ1bmN0aW9uKHQsZSl7dmFyIHI9YS5wcm90b3R5cGUub24uY2FsbCh0aGlzLHQsZSksbj10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVyblwiZGF0YVwiPT09dD8obi5yZWFkYWJsZUxpc3RlbmluZz10aGlzLmxpc3RlbmVyQ291bnQoXCJyZWFkYWJsZVwiKT4wLCExIT09bi5mbG93aW5nJiZ0aGlzLnJlc3VtZSgpKTpcInJlYWRhYmxlXCI9PT10JiYobi5lbmRFbWl0dGVkfHxuLnJlYWRhYmxlTGlzdGVuaW5nfHwobi5yZWFkYWJsZUxpc3RlbmluZz1uLm5lZWRSZWFkYWJsZT0hMCxuLmZsb3dpbmc9ITEsbi5lbWl0dGVkUmVhZGFibGU9ITEsbyhcIm9uIHJlYWRhYmxlXCIsbi5sZW5ndGgsbi5yZWFkaW5nKSxuLmxlbmd0aD9SKHRoaXMpOm4ucmVhZGluZ3x8aS5uZXh0VGljayhVLHRoaXMpKSkscn0sVC5wcm90b3R5cGUuYWRkTGlzdGVuZXI9VC5wcm90b3R5cGUub24sVC5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24odCxlKXt2YXIgcj1hLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lci5jYWxsKHRoaXMsdCxlKTtyZXR1cm5cInJlYWRhYmxlXCI9PT10JiZpLm5leHRUaWNrKE0sdGhpcykscn0sVC5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3ZhciBlPWEucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuXCJyZWFkYWJsZVwiIT09dCYmdm9pZCAwIT09dHx8aS5uZXh0VGljayhNLHRoaXMpLGV9LFQucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuIHQuZmxvd2luZ3x8KG8oXCJyZXN1bWVcIiksdC5mbG93aW5nPSF0LnJlYWRhYmxlTGlzdGVuaW5nLGZ1bmN0aW9uKHQsZSl7ZS5yZXN1bWVTY2hlZHVsZWR8fChlLnJlc3VtZVNjaGVkdWxlZD0hMCxpLm5leHRUaWNrKGosdCxlKSl9KHRoaXMsdCkpLHQucGF1c2VkPSExLHRoaXN9LFQucHJvdG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7cmV0dXJuIG8oXCJjYWxsIHBhdXNlIGZsb3dpbmc9JWpcIix0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpLCExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiYobyhcInBhdXNlXCIpLHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz0hMSx0aGlzLmVtaXQoXCJwYXVzZVwiKSksdGhpcy5fcmVhZGFibGVTdGF0ZS5wYXVzZWQ9ITAsdGhpc30sVC5wcm90b3R5cGUud3JhcD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLHI9dGhpcy5fcmVhZGFibGVTdGF0ZSxuPSExO2Zvcih2YXIgaSBpbiB0Lm9uKFwiZW5kXCIsKGZ1bmN0aW9uKCl7aWYobyhcIndyYXBwZWQgZW5kXCIpLHIuZGVjb2RlciYmIXIuZW5kZWQpe3ZhciB0PXIuZGVjb2Rlci5lbmQoKTt0JiZ0Lmxlbmd0aCYmZS5wdXNoKHQpfWUucHVzaChudWxsKX0pKSx0Lm9uKFwiZGF0YVwiLChmdW5jdGlvbihpKXtvKFwid3JhcHBlZCBkYXRhXCIpLHIuZGVjb2RlciYmKGk9ci5kZWNvZGVyLndyaXRlKGkpKSxyLm9iamVjdE1vZGUmJm51bGw9PWl8fChyLm9iamVjdE1vZGV8fGkmJmkubGVuZ3RoKSYmKGUucHVzaChpKXx8KG49ITAsdC5wYXVzZSgpKSl9KSksdCl2b2lkIDA9PT10aGlzW2ldJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0W2ldJiYodGhpc1tpXT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdFtlXS5hcHBseSh0LGFyZ3VtZW50cyl9fShpKSk7Zm9yKHZhciBzPTA7czxTLmxlbmd0aDtzKyspdC5vbihTW3NdLHRoaXMuZW1pdC5iaW5kKHRoaXMsU1tzXSkpO3JldHVybiB0aGlzLl9yZWFkPWZ1bmN0aW9uKGUpe28oXCJ3cmFwcGVkIF9yZWFkXCIsZSksbiYmKG49ITEsdC5yZXN1bWUoKSl9LHRoaXN9LFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmKFQucHJvdG90eXBlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1oJiYoaD1yKDg1MCkpLGgodGhpcyl9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsXCJyZWFkYWJsZUhpZ2hXYXRlck1hcmtcIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcInJlYWRhYmxlQnVmZmVyXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcInJlYWRhYmxlRmxvd2luZ1wiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmd9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPXQpfX0pLFQuX2Zyb21MaXN0PSQsT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLFwicmVhZGFibGVMZW5ndGhcIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGh9fSksXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiYoVC5mcm9tPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PXAmJihwPXIoMTY3KSkscChULHQsZSl9KX0sNjA1Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9Yzt2YXIgbj1yKDI4MSkucSxpPW4uRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsbz1uLkVSUl9NVUxUSVBMRV9DQUxMQkFDSyxzPW4uRVJSX1RSQU5TRk9STV9BTFJFQURZX1RSQU5TRk9STUlORyxhPW4uRVJSX1RSQU5TRk9STV9XSVRIX0xFTkdUSF8wLHU9cig3NTMpO2Z1bmN0aW9uIGwodCxlKXt2YXIgcj10aGlzLl90cmFuc2Zvcm1TdGF0ZTtyLnRyYW5zZm9ybWluZz0hMTt2YXIgbj1yLndyaXRlY2I7aWYobnVsbD09PW4pcmV0dXJuIHRoaXMuZW1pdChcImVycm9yXCIsbmV3IG8pO3Iud3JpdGVjaHVuaz1udWxsLHIud3JpdGVjYj1udWxsLG51bGwhPWUmJnRoaXMucHVzaChlKSxuKHQpO3ZhciBpPXRoaXMuX3JlYWRhYmxlU3RhdGU7aS5yZWFkaW5nPSExLChpLm5lZWRSZWFkYWJsZXx8aS5sZW5ndGg8aS5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZChpLmhpZ2hXYXRlck1hcmspfWZ1bmN0aW9uIGModCl7aWYoISh0aGlzIGluc3RhbmNlb2YgYykpcmV0dXJuIG5ldyBjKHQpO3UuY2FsbCh0aGlzLHQpLHRoaXMuX3RyYW5zZm9ybVN0YXRlPXthZnRlclRyYW5zZm9ybTpsLmJpbmQodGhpcyksbmVlZFRyYW5zZm9ybTohMSx0cmFuc2Zvcm1pbmc6ITEsd3JpdGVjYjpudWxsLHdyaXRlY2h1bms6bnVsbCx3cml0ZWVuY29kaW5nOm51bGx9LHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlPSEwLHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYz0hMSx0JiYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC50cmFuc2Zvcm0mJih0aGlzLl90cmFuc2Zvcm09dC50cmFuc2Zvcm0pLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZmx1c2gmJih0aGlzLl9mbHVzaD10LmZsdXNoKSksdGhpcy5vbihcInByZWZpbmlzaFwiLGYpfWZ1bmN0aW9uIGYoKXt2YXIgdD10aGlzO1wiZnVuY3Rpb25cIiE9dHlwZW9mIHRoaXMuX2ZsdXNofHx0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD9oKHRoaXMsbnVsbCxudWxsKTp0aGlzLl9mbHVzaCgoZnVuY3Rpb24oZSxyKXtoKHQsZSxyKX0pKX1mdW5jdGlvbiBoKHQsZSxyKXtpZihlKXJldHVybiB0LmVtaXQoXCJlcnJvclwiLGUpO2lmKG51bGwhPXImJnQucHVzaChyKSx0Ll93cml0YWJsZVN0YXRlLmxlbmd0aCl0aHJvdyBuZXcgYTtpZih0Ll90cmFuc2Zvcm1TdGF0ZS50cmFuc2Zvcm1pbmcpdGhyb3cgbmV3IHM7cmV0dXJuIHQucHVzaChudWxsKX1yKDcxNykoYyx1KSxjLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3RyYW5zZm9ybVN0YXRlLm5lZWRUcmFuc2Zvcm09ITEsdS5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsdCxlKX0sYy5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbih0LGUscil7cihuZXcgaShcIl90cmFuc2Zvcm0oKVwiKSl9LGMucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5fdHJhbnNmb3JtU3RhdGU7aWYobi53cml0ZWNiPXIsbi53cml0ZWNodW5rPXQsbi53cml0ZWVuY29kaW5nPWUsIW4udHJhbnNmb3JtaW5nKXt2YXIgaT10aGlzLl9yZWFkYWJsZVN0YXRlOyhuLm5lZWRUcmFuc2Zvcm18fGkubmVlZFJlYWRhYmxlfHxpLmxlbmd0aDxpLmhpZ2hXYXRlck1hcmspJiZ0aGlzLl9yZWFkKGkuaGlnaFdhdGVyTWFyayl9fSxjLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl90cmFuc2Zvcm1TdGF0ZTtudWxsPT09ZS53cml0ZWNodW5rfHxlLnRyYW5zZm9ybWluZz9lLm5lZWRUcmFuc2Zvcm09ITA6KGUudHJhbnNmb3JtaW5nPSEwLHRoaXMuX3RyYW5zZm9ybShlLndyaXRlY2h1bmssZS53cml0ZWVuY29kaW5nLGUuYWZ0ZXJUcmFuc2Zvcm0pKX0sYy5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24odCxlKXt1LnByb3RvdHlwZS5fZGVzdHJveS5jYWxsKHRoaXMsdCwoZnVuY3Rpb24odCl7ZSh0KX0pKX19LDIyOToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG4saT1yKDE1NSk7ZnVuY3Rpb24gbyh0KXt2YXIgZT10aGlzO3RoaXMubmV4dD1udWxsLHRoaXMuZW50cnk9bnVsbCx0aGlzLmZpbmlzaD1mdW5jdGlvbigpeyFmdW5jdGlvbih0LGUscil7dmFyIG49dC5lbnRyeTtmb3IodC5lbnRyeT1udWxsO247KXt2YXIgaT1uLmNhbGxiYWNrO2UucGVuZGluZ2NiLS0saSh1bmRlZmluZWQpLG49bi5uZXh0fWUuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQ9dH0oZSx0KX19dC5leHBvcnRzPVQsVC5Xcml0YWJsZVN0YXRlPUE7dmFyIHMsYT17ZGVwcmVjYXRlOnIoOTI3KX0sdT1yKDUwMyksbD1yKDc2NCkuQnVmZmVyLGM9ci5nLlVpbnQ4QXJyYXl8fGZ1bmN0aW9uKCl7fSxmPXIoMTk1KSxoPXIoNDU3KS5nZXRIaWdoV2F0ZXJNYXJrLHA9cigyODEpLnEsZD1wLkVSUl9JTlZBTElEX0FSR19UWVBFLHk9cC5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxnPXAuRVJSX01VTFRJUExFX0NBTExCQUNLLGI9cC5FUlJfU1RSRUFNX0NBTk5PVF9QSVBFLG09cC5FUlJfU1RSRUFNX0RFU1RST1lFRCx3PXAuRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUyxfPXAuRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQsRT1wLkVSUl9VTktOT1dOX0VOQ09ESU5HLHY9Zi5lcnJvck9yRGVzdHJveTtmdW5jdGlvbiBTKCl7fWZ1bmN0aW9uIEEodCxlLHMpe249bnx8cig3NTMpLHQ9dHx8e30sXCJib29sZWFuXCIhPXR5cGVvZiBzJiYocz1lIGluc3RhbmNlb2YgbiksdGhpcy5vYmplY3RNb2RlPSEhdC5vYmplY3RNb2RlLHMmJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIXQud3JpdGFibGVPYmplY3RNb2RlKSx0aGlzLmhpZ2hXYXRlck1hcms9aCh0aGlzLHQsXCJ3cml0YWJsZUhpZ2hXYXRlck1hcmtcIixzKSx0aGlzLmZpbmFsQ2FsbGVkPSExLHRoaXMubmVlZERyYWluPSExLHRoaXMuZW5kaW5nPSExLHRoaXMuZW5kZWQ9ITEsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMTt2YXIgYT0hMT09PXQuZGVjb2RlU3RyaW5nczt0aGlzLmRlY29kZVN0cmluZ3M9IWEsdGhpcy5kZWZhdWx0RW5jb2Rpbmc9dC5kZWZhdWx0RW5jb2Rpbmd8fFwidXRmOFwiLHRoaXMubGVuZ3RoPTAsdGhpcy53cml0aW5nPSExLHRoaXMuY29ya2VkPTAsdGhpcy5zeW5jPSEwLHRoaXMuYnVmZmVyUHJvY2Vzc2luZz0hMSx0aGlzLm9ud3JpdGU9ZnVuY3Rpb24odCl7IWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5fd3JpdGFibGVTdGF0ZSxuPXIuc3luYyxvPXIud3JpdGVjYjtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBvKXRocm93IG5ldyBnO2lmKGZ1bmN0aW9uKHQpe3Qud3JpdGluZz0hMSx0LndyaXRlY2I9bnVsbCx0Lmxlbmd0aC09dC53cml0ZWxlbix0LndyaXRlbGVuPTB9KHIpLGUpIWZ1bmN0aW9uKHQsZSxyLG4sbyl7LS1lLnBlbmRpbmdjYixyPyhpLm5leHRUaWNrKG8sbiksaS5uZXh0VGljayhOLHQsZSksdC5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsdih0LG4pKToobyhuKSx0Ll93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCx2KHQsbiksTih0LGUpKX0odCxyLG4sZSxvKTtlbHNle3ZhciBzPXgocil8fHQuZGVzdHJveWVkO3N8fHIuY29ya2VkfHxyLmJ1ZmZlclByb2Nlc3Npbmd8fCFyLmJ1ZmZlcmVkUmVxdWVzdHx8Tyh0LHIpLG4/aS5uZXh0VGljayhCLHQscixzLG8pOkIodCxyLHMsbyl9fShlLHQpfSx0aGlzLndyaXRlY2I9bnVsbCx0aGlzLndyaXRlbGVuPTAsdGhpcy5idWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLnBlbmRpbmdjYj0wLHRoaXMucHJlZmluaXNoZWQ9ITEsdGhpcy5lcnJvckVtaXR0ZWQ9ITEsdGhpcy5lbWl0Q2xvc2U9ITEhPT10LmVtaXRDbG9zZSx0aGlzLmF1dG9EZXN0cm95PSEhdC5hdXRvRGVzdHJveSx0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50PTAsdGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IG8odGhpcyl9ZnVuY3Rpb24gVCh0KXt2YXIgZT10aGlzIGluc3RhbmNlb2Yobj1ufHxyKDc1MykpO2lmKCFlJiYhcy5jYWxsKFQsdGhpcykpcmV0dXJuIG5ldyBUKHQpO3RoaXMuX3dyaXRhYmxlU3RhdGU9bmV3IEEodCx0aGlzLGUpLHRoaXMud3JpdGFibGU9ITAsdCYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQud3JpdGUmJih0aGlzLl93cml0ZT10LndyaXRlKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LndyaXRldiYmKHRoaXMuX3dyaXRldj10LndyaXRldiksXCJmdW5jdGlvblwiPT10eXBlb2YgdC5kZXN0cm95JiYodGhpcy5fZGVzdHJveT10LmRlc3Ryb3kpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZmluYWwmJih0aGlzLl9maW5hbD10LmZpbmFsKSksdS5jYWxsKHRoaXMpfWZ1bmN0aW9uIEkodCxlLHIsbixpLG8scyl7ZS53cml0ZWxlbj1uLGUud3JpdGVjYj1zLGUud3JpdGluZz0hMCxlLnN5bmM9ITAsZS5kZXN0cm95ZWQ/ZS5vbndyaXRlKG5ldyBtKFwid3JpdGVcIikpOnI/dC5fd3JpdGV2KGksZS5vbndyaXRlKTp0Ll93cml0ZShpLG8sZS5vbndyaXRlKSxlLnN5bmM9ITF9ZnVuY3Rpb24gQih0LGUscixuKXtyfHxmdW5jdGlvbih0LGUpezA9PT1lLmxlbmd0aCYmZS5uZWVkRHJhaW4mJihlLm5lZWREcmFpbj0hMSx0LmVtaXQoXCJkcmFpblwiKSl9KHQsZSksZS5wZW5kaW5nY2ItLSxuKCksTih0LGUpfWZ1bmN0aW9uIE8odCxlKXtlLmJ1ZmZlclByb2Nlc3Npbmc9ITA7dmFyIHI9ZS5idWZmZXJlZFJlcXVlc3Q7aWYodC5fd3JpdGV2JiZyJiZyLm5leHQpe3ZhciBuPWUuYnVmZmVyZWRSZXF1ZXN0Q291bnQsaT1uZXcgQXJyYXkobikscz1lLmNvcmtlZFJlcXVlc3RzRnJlZTtzLmVudHJ5PXI7Zm9yKHZhciBhPTAsdT0hMDtyOylpW2FdPXIsci5pc0J1Znx8KHU9ITEpLHI9ci5uZXh0LGErPTE7aS5hbGxCdWZmZXJzPXUsSSh0LGUsITAsZS5sZW5ndGgsaSxcIlwiLHMuZmluaXNoKSxlLnBlbmRpbmdjYisrLGUubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsLHMubmV4dD8oZS5jb3JrZWRSZXF1ZXN0c0ZyZWU9cy5uZXh0LHMubmV4dD1udWxsKTplLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgbyhlKSxlLmJ1ZmZlcmVkUmVxdWVzdENvdW50PTB9ZWxzZXtmb3IoO3I7KXt2YXIgbD1yLmNodW5rLGM9ci5lbmNvZGluZyxmPXIuY2FsbGJhY2s7aWYoSSh0LGUsITEsZS5vYmplY3RNb2RlPzE6bC5sZW5ndGgsbCxjLGYpLHI9ci5uZXh0LGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQtLSxlLndyaXRpbmcpYnJlYWt9bnVsbD09PXImJihlLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCl9ZS5idWZmZXJlZFJlcXVlc3Q9cixlLmJ1ZmZlclByb2Nlc3Npbmc9ITF9ZnVuY3Rpb24geCh0KXtyZXR1cm4gdC5lbmRpbmcmJjA9PT10Lmxlbmd0aCYmbnVsbD09PXQuYnVmZmVyZWRSZXF1ZXN0JiYhdC5maW5pc2hlZCYmIXQud3JpdGluZ31mdW5jdGlvbiBSKHQsZSl7dC5fZmluYWwoKGZ1bmN0aW9uKHIpe2UucGVuZGluZ2NiLS0sciYmdih0LHIpLGUucHJlZmluaXNoZWQ9ITAsdC5lbWl0KFwicHJlZmluaXNoXCIpLE4odCxlKX0pKX1mdW5jdGlvbiBOKHQsZSl7dmFyIHI9eChlKTtpZihyJiYoZnVuY3Rpb24odCxlKXtlLnByZWZpbmlzaGVkfHxlLmZpbmFsQ2FsbGVkfHwoXCJmdW5jdGlvblwiIT10eXBlb2YgdC5fZmluYWx8fGUuZGVzdHJveWVkPyhlLnByZWZpbmlzaGVkPSEwLHQuZW1pdChcInByZWZpbmlzaFwiKSk6KGUucGVuZGluZ2NiKyssZS5maW5hbENhbGxlZD0hMCxpLm5leHRUaWNrKFIsdCxlKSkpfSh0LGUpLDA9PT1lLnBlbmRpbmdjYiYmKGUuZmluaXNoZWQ9ITAsdC5lbWl0KFwiZmluaXNoXCIpLGUuYXV0b0Rlc3Ryb3kpKSl7dmFyIG49dC5fcmVhZGFibGVTdGF0ZTsoIW58fG4uYXV0b0Rlc3Ryb3kmJm4uZW5kRW1pdHRlZCkmJnQuZGVzdHJveSgpfXJldHVybiByfXIoNzE3KShULHUpLEEucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLmJ1ZmZlcmVkUmVxdWVzdCxlPVtdO3Q7KWUucHVzaCh0KSx0PXQubmV4dDtyZXR1cm4gZX0sZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLFwiYnVmZmVyXCIse2dldDphLmRlcHJlY2F0ZSgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCdWZmZXIoKX0pLFwiX3dyaXRhYmxlU3RhdGUuYnVmZmVyIGlzIGRlcHJlY2F0ZWQuIFVzZSBfd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIgaW5zdGVhZC5cIixcIkRFUDAwMDNcIil9KX1jYXRjaCh0KXt9fSgpLFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmhhc0luc3RhbmNlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXT8ocz1GdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVCxTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiEhcy5jYWxsKHRoaXMsdCl8fHRoaXM9PT1UJiZ0JiZ0Ll93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgQX19KSk6cz1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHRoaXN9LFQucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oKXt2KHRoaXMsbmV3IGIpfSxULnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0LGUscil7dmFyIG4sbz10aGlzLl93cml0YWJsZVN0YXRlLHM9ITEsYT0hby5vYmplY3RNb2RlJiYobj10LGwuaXNCdWZmZXIobil8fG4gaW5zdGFuY2VvZiBjKTtyZXR1cm4gYSYmIWwuaXNCdWZmZXIodCkmJih0PWZ1bmN0aW9uKHQpe3JldHVybiBsLmZyb20odCl9KHQpKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiYocj1lLGU9bnVsbCksYT9lPVwiYnVmZmVyXCI6ZXx8KGU9by5kZWZhdWx0RW5jb2RpbmcpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIHImJihyPVMpLG8uZW5kaW5nP2Z1bmN0aW9uKHQsZSl7dmFyIHI9bmV3IF87dih0LHIpLGkubmV4dFRpY2soZSxyKX0odGhpcyxyKTooYXx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG87cmV0dXJuIG51bGw9PT1yP289bmV3IHc6XCJzdHJpbmdcIj09dHlwZW9mIHJ8fGUub2JqZWN0TW9kZXx8KG89bmV3IGQoXCJjaHVua1wiLFtcInN0cmluZ1wiLFwiQnVmZmVyXCJdLHIpKSwhb3x8KHYodCxvKSxpLm5leHRUaWNrKG4sbyksITEpfSh0aGlzLG8sdCxyKSkmJihvLnBlbmRpbmdjYisrLHM9ZnVuY3Rpb24odCxlLHIsbixpLG8pe2lmKCFyKXt2YXIgcz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQub2JqZWN0TW9kZXx8ITE9PT10LmRlY29kZVN0cmluZ3N8fFwic3RyaW5nXCIhPXR5cGVvZiBlfHwoZT1sLmZyb20oZSxyKSksZX0oZSxuLGkpO24hPT1zJiYocj0hMCxpPVwiYnVmZmVyXCIsbj1zKX12YXIgYT1lLm9iamVjdE1vZGU/MTpuLmxlbmd0aDtlLmxlbmd0aCs9YTt2YXIgdT1lLmxlbmd0aDxlLmhpZ2hXYXRlck1hcms7aWYodXx8KGUubmVlZERyYWluPSEwKSxlLndyaXRpbmd8fGUuY29ya2VkKXt2YXIgYz1lLmxhc3RCdWZmZXJlZFJlcXVlc3Q7ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PXtjaHVuazpuLGVuY29kaW5nOmksaXNCdWY6cixjYWxsYmFjazpvLG5leHQ6bnVsbH0sYz9jLm5leHQ9ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0OmUuYnVmZmVyZWRSZXF1ZXN0PWUubGFzdEJ1ZmZlcmVkUmVxdWVzdCxlLmJ1ZmZlcmVkUmVxdWVzdENvdW50Kz0xfWVsc2UgSSh0LGUsITEsYSxuLGksbyk7cmV0dXJuIHV9KHRoaXMsbyxhLHQsZSxyKSksc30sVC5wcm90b3R5cGUuY29yaz1mdW5jdGlvbigpe3RoaXMuX3dyaXRhYmxlU3RhdGUuY29ya2VkKyt9LFQucHJvdG90eXBlLnVuY29yaz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3dyaXRhYmxlU3RhdGU7dC5jb3JrZWQmJih0LmNvcmtlZC0tLHQud3JpdGluZ3x8dC5jb3JrZWR8fHQuYnVmZmVyUHJvY2Vzc2luZ3x8IXQuYnVmZmVyZWRSZXF1ZXN0fHxPKHRoaXMsdCkpfSxULnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2Rpbmc9ZnVuY3Rpb24odCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PXQudG9Mb3dlckNhc2UoKSksIShbXCJoZXhcIixcInV0ZjhcIixcInV0Zi04XCIsXCJhc2NpaVwiLFwiYmluYXJ5XCIsXCJiYXNlNjRcIixcInVjczJcIixcInVjcy0yXCIsXCJ1dGYxNmxlXCIsXCJ1dGYtMTZsZVwiLFwicmF3XCJdLmluZGV4T2YoKHQrXCJcIikudG9Mb3dlckNhc2UoKSk+LTEpKXRocm93IG5ldyBFKHQpO3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZz10LHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcIndyaXRhYmxlQnVmZmVyXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyKCl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLFwid3JpdGFibGVIaWdoV2F0ZXJNYXJrXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxULnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24odCxlLHIpe3IobmV3IHkoXCJfd3JpdGUoKVwiKSl9LFQucHJvdG90eXBlLl93cml0ZXY9bnVsbCxULnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMuX3dyaXRhYmxlU3RhdGU7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdD8ocj10LHQ9bnVsbCxlPW51bGwpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJihyPWUsZT1udWxsKSxudWxsIT10JiZ0aGlzLndyaXRlKHQsZSksbi5jb3JrZWQmJihuLmNvcmtlZD0xLHRoaXMudW5jb3JrKCkpLG4uZW5kaW5nfHxmdW5jdGlvbih0LGUscil7ZS5lbmRpbmc9ITAsTih0LGUpLHImJihlLmZpbmlzaGVkP2kubmV4dFRpY2socik6dC5vbmNlKFwiZmluaXNoXCIscikpLGUuZW5kZWQ9ITAsdC53cml0YWJsZT0hMX0odGhpcyxuLHIpLHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcIndyaXRhYmxlTGVuZ3RoXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcImRlc3Ryb3llZFwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD10KX19KSxULnByb3RvdHlwZS5kZXN0cm95PWYuZGVzdHJveSxULnByb3RvdHlwZS5fdW5kZXN0cm95PWYudW5kZXN0cm95LFQucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKHQsZSl7ZSh0KX19LDg1MDoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG4saT1yKDE1NSk7ZnVuY3Rpb24gbyh0LGUscil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1yLHR9dmFyIHM9cig2MTApLGE9U3ltYm9sKFwibGFzdFJlc29sdmVcIiksdT1TeW1ib2woXCJsYXN0UmVqZWN0XCIpLGw9U3ltYm9sKFwiZXJyb3JcIiksYz1TeW1ib2woXCJlbmRlZFwiKSxmPVN5bWJvbChcImxhc3RQcm9taXNlXCIpLGg9U3ltYm9sKFwiaGFuZGxlUHJvbWlzZVwiKSxwPVN5bWJvbChcInN0cmVhbVwiKTtmdW5jdGlvbiBkKHQsZSl7cmV0dXJue3ZhbHVlOnQsZG9uZTplfX1mdW5jdGlvbiB5KHQpe3ZhciBlPXRbYV07aWYobnVsbCE9PWUpe3ZhciByPXRbcF0ucmVhZCgpO251bGwhPT1yJiYodFtmXT1udWxsLHRbYV09bnVsbCx0W3VdPW51bGwsZShkKHIsITEpKSl9fWZ1bmN0aW9uIGcodCl7aS5uZXh0VGljayh5LHQpfXZhciBiPU9iamVjdC5nZXRQcm90b3R5cGVPZigoZnVuY3Rpb24oKXt9KSksbT1PYmplY3Quc2V0UHJvdG90eXBlT2YoKG8obj17Z2V0IHN0cmVhbSgpe3JldHVybiB0aGlzW3BdfSxuZXh0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXNbbF07aWYobnVsbCE9PWUpcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO2lmKHRoaXNbY10pcmV0dXJuIFByb21pc2UucmVzb2x2ZShkKHZvaWQgMCwhMCkpO2lmKHRoaXNbcF0uZGVzdHJveWVkKXJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxyKXtpLm5leHRUaWNrKChmdW5jdGlvbigpe3RbbF0/cih0W2xdKTplKGQodm9pZCAwLCEwKSl9KSl9KSk7dmFyIHIsbj10aGlzW2ZdO2lmKG4pcj1uZXcgUHJvbWlzZShmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyLG4pe3QudGhlbigoZnVuY3Rpb24oKXtlW2NdP3IoZCh2b2lkIDAsITApKTplW2hdKHIsbil9KSxuKX19KG4sdGhpcykpO2Vsc2V7dmFyIG89dGhpc1twXS5yZWFkKCk7aWYobnVsbCE9PW8pcmV0dXJuIFByb21pc2UucmVzb2x2ZShkKG8sITEpKTtyPW5ldyBQcm9taXNlKHRoaXNbaF0pfXJldHVybiB0aGlzW2ZdPXIscn19LFN5bWJvbC5hc3luY0l0ZXJhdG9yLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLG8obixcInJldHVyblwiLChmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHIpe3RbcF0uZGVzdHJveShudWxsLChmdW5jdGlvbih0KXt0P3IodCk6ZShkKHZvaWQgMCwhMCkpfSkpfSkpfSkpLG4pLGIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxyPU9iamVjdC5jcmVhdGUobSwobyhlPXt9LHAse3ZhbHVlOnQsd3JpdGFibGU6ITB9KSxvKGUsYSx7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLG8oZSx1LHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksbyhlLGwse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxvKGUsYyx7dmFsdWU6dC5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkLHdyaXRhYmxlOiEwfSksbyhlLGgse3ZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIG49cltwXS5yZWFkKCk7bj8ocltmXT1udWxsLHJbYV09bnVsbCxyW3VdPW51bGwsdChkKG4sITEpKSk6KHJbYV09dCxyW3VdPWUpfSx3cml0YWJsZTohMH0pLGUpKTtyZXR1cm4gcltmXT1udWxsLHModCwoZnVuY3Rpb24odCl7aWYodCYmXCJFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRVwiIT09dC5jb2RlKXt2YXIgZT1yW3VdO3JldHVybiBudWxsIT09ZSYmKHJbZl09bnVsbCxyW2FdPW51bGwsclt1XT1udWxsLGUodCkpLHZvaWQocltsXT10KX12YXIgbj1yW2FdO251bGwhPT1uJiYocltmXT1udWxsLHJbYV09bnVsbCxyW3VdPW51bGwsbihkKHZvaWQgMCwhMCkpKSxyW2NdPSEwfSkpLHQub24oXCJyZWFkYWJsZVwiLGcuYmluZChudWxsLHIpKSxyfX0sMzI3Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYobj1uLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxyLnB1c2guYXBwbHkocixuKX1yZXR1cm4gcn1mdW5jdGlvbiBpKHQsZSxyKXtyZXR1cm4gZSBpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPXIsdH1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4ua2V5LG4pfX12YXIgcz1yKDc2NCkuQnVmZmVyLGE9cig2NjkpLmluc3BlY3QsdT1hJiZhLmN1c3RvbXx8XCJpbnNwZWN0XCI7dC5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyFmdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsdCksdGhpcy5oZWFkPW51bGwsdGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH12YXIgZSxyO3JldHVybiBlPXQsKHI9W3trZXk6XCJwdXNoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9e2RhdGE6dCxuZXh0Om51bGx9O3RoaXMubGVuZ3RoPjA/dGhpcy50YWlsLm5leHQ9ZTp0aGlzLmhlYWQ9ZSx0aGlzLnRhaWw9ZSwrK3RoaXMubGVuZ3RofX0se2tleTpcInVuc2hpZnRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT17ZGF0YTp0LG5leHQ6dGhpcy5oZWFkfTswPT09dGhpcy5sZW5ndGgmJih0aGlzLnRhaWw9ZSksdGhpcy5oZWFkPWUsKyt0aGlzLmxlbmd0aH19LHtrZXk6XCJzaGlmdFwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoMCE9PXRoaXMubGVuZ3RoKXt2YXIgdD10aGlzLmhlYWQuZGF0YTtyZXR1cm4gMT09PXRoaXMubGVuZ3RoP3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbDp0aGlzLmhlYWQ9dGhpcy5oZWFkLm5leHQsLS10aGlzLmxlbmd0aCx0fX19LHtrZXk6XCJjbGVhclwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oZWFkPXRoaXMudGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9fSx7a2V5Olwiam9pblwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKDA9PT10aGlzLmxlbmd0aClyZXR1cm5cIlwiO2Zvcih2YXIgZT10aGlzLmhlYWQscj1cIlwiK2UuZGF0YTtlPWUubmV4dDspcis9dCtlLmRhdGE7cmV0dXJuIHJ9fSx7a2V5OlwiY29uY2F0XCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiBzLmFsbG9jKDApO2Zvcih2YXIgZSxyLG4saT1zLmFsbG9jVW5zYWZlKHQ+Pj4wKSxvPXRoaXMuaGVhZCxhPTA7bzspZT1vLmRhdGEscj1pLG49YSxzLnByb3RvdHlwZS5jb3B5LmNhbGwoZSxyLG4pLGErPW8uZGF0YS5sZW5ndGgsbz1vLm5leHQ7cmV0dXJuIGl9fSx7a2V5OlwiY29uc3VtZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIHI7cmV0dXJuIHQ8dGhpcy5oZWFkLmRhdGEubGVuZ3RoPyhyPXRoaXMuaGVhZC5kYXRhLnNsaWNlKDAsdCksdGhpcy5oZWFkLmRhdGE9dGhpcy5oZWFkLmRhdGEuc2xpY2UodCkpOnI9dD09PXRoaXMuaGVhZC5kYXRhLmxlbmd0aD90aGlzLnNoaWZ0KCk6ZT90aGlzLl9nZXRTdHJpbmcodCk6dGhpcy5fZ2V0QnVmZmVyKHQpLHJ9fSx7a2V5OlwiZmlyc3RcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlYWQuZGF0YX19LHtrZXk6XCJfZ2V0U3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5oZWFkLHI9MSxuPWUuZGF0YTtmb3IodC09bi5sZW5ndGg7ZT1lLm5leHQ7KXt2YXIgaT1lLmRhdGEsbz10PmkubGVuZ3RoP2kubGVuZ3RoOnQ7aWYobz09PWkubGVuZ3RoP24rPWk6bis9aS5zbGljZSgwLHQpLDA9PSh0LT1vKSl7bz09PWkubGVuZ3RoPygrK3IsZS5uZXh0P3RoaXMuaGVhZD1lLm5leHQ6dGhpcy5oZWFkPXRoaXMudGFpbD1udWxsKToodGhpcy5oZWFkPWUsZS5kYXRhPWkuc2xpY2UobykpO2JyZWFrfSsrcn1yZXR1cm4gdGhpcy5sZW5ndGgtPXIsbn19LHtrZXk6XCJfZ2V0QnVmZmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9cy5hbGxvY1Vuc2FmZSh0KSxyPXRoaXMuaGVhZCxuPTE7Zm9yKHIuZGF0YS5jb3B5KGUpLHQtPXIuZGF0YS5sZW5ndGg7cj1yLm5leHQ7KXt2YXIgaT1yLmRhdGEsbz10PmkubGVuZ3RoP2kubGVuZ3RoOnQ7aWYoaS5jb3B5KGUsZS5sZW5ndGgtdCwwLG8pLDA9PSh0LT1vKSl7bz09PWkubGVuZ3RoPygrK24sci5uZXh0P3RoaXMuaGVhZD1yLm5leHQ6dGhpcy5oZWFkPXRoaXMudGFpbD1udWxsKToodGhpcy5oZWFkPXIsci5kYXRhPWkuc2xpY2UobykpO2JyZWFrfSsrbn1yZXR1cm4gdGhpcy5sZW5ndGgtPW4sZX19LHtrZXk6dSx2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBhKHRoaXMsZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIHI9bnVsbCE9YXJndW1lbnRzW2VdP2FyZ3VtZW50c1tlXTp7fTtlJTI/bihPYmplY3QociksITApLmZvckVhY2goKGZ1bmN0aW9uKGUpe2kodCxlLHJbZV0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOm4oT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKSl9KSl9cmV0dXJuIHR9KHt9LGUse2RlcHRoOjAsY3VzdG9tSW5zcGVjdDohMX0pKX19XSkmJm8oZS5wcm90b3R5cGUsciksdH0oKX0sMTk1Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDE1NSk7ZnVuY3Rpb24gaSh0LGUpe3ModCxlKSxvKHQpfWZ1bmN0aW9uIG8odCl7dC5fd3JpdGFibGVTdGF0ZSYmIXQuX3dyaXRhYmxlU3RhdGUuZW1pdENsb3NlfHx0Ll9yZWFkYWJsZVN0YXRlJiYhdC5fcmVhZGFibGVTdGF0ZS5lbWl0Q2xvc2V8fHQuZW1pdChcImNsb3NlXCIpfWZ1bmN0aW9uIHModCxlKXt0LmVtaXQoXCJlcnJvclwiLGUpfXQuZXhwb3J0cz17ZGVzdHJveTpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXMsYT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCx1PXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO3JldHVybiBhfHx1PyhlP2UodCk6dCYmKHRoaXMuX3dyaXRhYmxlU3RhdGU/dGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWR8fCh0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxuLm5leHRUaWNrKHMsdGhpcyx0KSk6bi5uZXh0VGljayhzLHRoaXMsdCkpLHRoaXMpOih0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITApLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMCksdGhpcy5fZGVzdHJveSh0fHxudWxsLChmdW5jdGlvbih0KXshZSYmdD9yLl93cml0YWJsZVN0YXRlP3IuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkP24ubmV4dFRpY2sobyxyKTooci5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsbi5uZXh0VGljayhpLHIsdCkpOm4ubmV4dFRpY2soaSxyLHQpOmU/KG4ubmV4dFRpY2sobyxyKSxlKHQpKTpuLm5leHRUaWNrKG8scil9KSksdGhpcyl9LHVuZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmc9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZD0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQ9ITEpLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluYWxDYWxsZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5wcmVmaW5pc2hlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSExKX0sZXJyb3JPckRlc3Ryb3k6ZnVuY3Rpb24odCxlKXt2YXIgcj10Ll9yZWFkYWJsZVN0YXRlLG49dC5fd3JpdGFibGVTdGF0ZTtyJiZyLmF1dG9EZXN0cm95fHxuJiZuLmF1dG9EZXN0cm95P3QuZGVzdHJveShlKTp0LmVtaXQoXCJlcnJvclwiLGUpfX19LDYxMDoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigyODEpLnEuRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0U7ZnVuY3Rpb24gaSgpe310LmV4cG9ydHM9ZnVuY3Rpb24gdChlLHIsbyl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgcilyZXR1cm4gdChlLG51bGwscik7cnx8KHI9e30pLG89ZnVuY3Rpb24odCl7dmFyIGU9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIWUpe2U9ITA7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkociksaT0wO2k8cjtpKyspbltpXT1hcmd1bWVudHNbaV07dC5hcHBseSh0aGlzLG4pfX19KG98fGkpO3ZhciBzPXIucmVhZGFibGV8fCExIT09ci5yZWFkYWJsZSYmZS5yZWFkYWJsZSxhPXIud3JpdGFibGV8fCExIT09ci53cml0YWJsZSYmZS53cml0YWJsZSx1PWZ1bmN0aW9uKCl7ZS53cml0YWJsZXx8YygpfSxsPWUuX3dyaXRhYmxlU3RhdGUmJmUuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQsYz1mdW5jdGlvbigpe2E9ITEsbD0hMCxzfHxvLmNhbGwoZSl9LGY9ZS5fcmVhZGFibGVTdGF0ZSYmZS5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkLGg9ZnVuY3Rpb24oKXtzPSExLGY9ITAsYXx8by5jYWxsKGUpfSxwPWZ1bmN0aW9uKHQpe28uY2FsbChlLHQpfSxkPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIHMmJiFmPyhlLl9yZWFkYWJsZVN0YXRlJiZlLl9yZWFkYWJsZVN0YXRlLmVuZGVkfHwodD1uZXcgbiksby5jYWxsKGUsdCkpOmEmJiFsPyhlLl93cml0YWJsZVN0YXRlJiZlLl93cml0YWJsZVN0YXRlLmVuZGVkfHwodD1uZXcgbiksby5jYWxsKGUsdCkpOnZvaWQgMH0seT1mdW5jdGlvbigpe2UucmVxLm9uKFwiZmluaXNoXCIsYyl9O3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdC5zZXRIZWFkZXImJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQuYWJvcnR9KGUpPyhlLm9uKFwiY29tcGxldGVcIixjKSxlLm9uKFwiYWJvcnRcIixkKSxlLnJlcT95KCk6ZS5vbihcInJlcXVlc3RcIix5KSk6YSYmIWUuX3dyaXRhYmxlU3RhdGUmJihlLm9uKFwiZW5kXCIsdSksZS5vbihcImNsb3NlXCIsdSkpLGUub24oXCJlbmRcIixoKSxlLm9uKFwiZmluaXNoXCIsYyksITEhPT1yLmVycm9yJiZlLm9uKFwiZXJyb3JcIixwKSxlLm9uKFwiY2xvc2VcIixkKSxmdW5jdGlvbigpe2UucmVtb3ZlTGlzdGVuZXIoXCJjb21wbGV0ZVwiLGMpLGUucmVtb3ZlTGlzdGVuZXIoXCJhYm9ydFwiLGQpLGUucmVtb3ZlTGlzdGVuZXIoXCJyZXF1ZXN0XCIseSksZS5yZXEmJmUucmVxLnJlbW92ZUxpc3RlbmVyKFwiZmluaXNoXCIsYyksZS5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLHUpLGUucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLHUpLGUucmVtb3ZlTGlzdGVuZXIoXCJmaW5pc2hcIixjKSxlLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsaCksZS5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIscCksZS5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsZCl9fX0sMTY3OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJSZWFkYWJsZS5mcm9tIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJyb3dzZXJcIil9fSw5NDY6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO3ZhciBuLGk9cigyODEpLnEsbz1pLkVSUl9NSVNTSU5HX0FSR1Mscz1pLkVSUl9TVFJFQU1fREVTVFJPWUVEO2Z1bmN0aW9uIGEodCl7aWYodCl0aHJvdyB0fWZ1bmN0aW9uIHUodCxlLGksbyl7bz1mdW5jdGlvbih0KXt2YXIgZT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtlfHwoZT0hMCx0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKX19KG8pO3ZhciBhPSExO3Qub24oXCJjbG9zZVwiLChmdW5jdGlvbigpe2E9ITB9KSksdm9pZCAwPT09biYmKG49cig2MTApKSxuKHQse3JlYWRhYmxlOmUsd3JpdGFibGU6aX0sKGZ1bmN0aW9uKHQpe2lmKHQpcmV0dXJuIG8odCk7YT0hMCxvKCl9KSk7dmFyIHU9ITE7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCFhJiYhdSlyZXR1cm4gdT0hMCxmdW5jdGlvbih0KXtyZXR1cm4gdC5zZXRIZWFkZXImJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQuYWJvcnR9KHQpP3QuYWJvcnQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmRlc3Ryb3k/dC5kZXN0cm95KCk6dm9pZCBvKGV8fG5ldyBzKFwicGlwZVwiKSl9fWZ1bmN0aW9uIGwodCl7dCgpfWZ1bmN0aW9uIGModCxlKXtyZXR1cm4gdC5waXBlKGUpfWZ1bmN0aW9uIGYodCl7cmV0dXJuIHQubGVuZ3RoP1wiZnVuY3Rpb25cIiE9dHlwZW9mIHRbdC5sZW5ndGgtMV0/YTp0LnBvcCgpOmF9dC5leHBvcnRzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsZT1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspZVtyXT1hcmd1bWVudHNbcl07dmFyIG4saT1mKGUpO2lmKEFycmF5LmlzQXJyYXkoZVswXSkmJihlPWVbMF0pLGUubGVuZ3RoPDIpdGhyb3cgbmV3IG8oXCJzdHJlYW1zXCIpO3ZhciBzPWUubWFwKChmdW5jdGlvbih0LHIpe3ZhciBvPXI8ZS5sZW5ndGgtMTtyZXR1cm4gdSh0LG8scj4wLChmdW5jdGlvbih0KXtufHwobj10KSx0JiZzLmZvckVhY2gobCksb3x8KHMuZm9yRWFjaChsKSxpKG4pKX0pKX0pKTtyZXR1cm4gZS5yZWR1Y2UoYyl9fSw0NTc6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO3ZhciBuPXIoMjgxKS5xLkVSUl9JTlZBTElEX09QVF9WQUxVRTt0LmV4cG9ydHM9e2dldEhpZ2hXYXRlck1hcms6ZnVuY3Rpb24odCxlLHIsaSl7dmFyIG89ZnVuY3Rpb24odCxlLHIpe3JldHVybiBudWxsIT10LmhpZ2hXYXRlck1hcms/dC5oaWdoV2F0ZXJNYXJrOmU/dFtyXTpudWxsfShlLGkscik7aWYobnVsbCE9byl7aWYoIWlzRmluaXRlKG8pfHxNYXRoLmZsb29yKG8pIT09b3x8bzwwKXRocm93IG5ldyBuKGk/cjpcImhpZ2hXYXRlck1hcmtcIixvKTtyZXR1cm4gTWF0aC5mbG9vcihvKX1yZXR1cm4gdC5vYmplY3RNb2RlPzE2OjE2Mzg0fX19LDUwMzoodCxlLHIpPT57dC5leHBvcnRzPXIoMTg3KS5FdmVudEVtaXR0ZXJ9LDUwOToodCxlLHIpPT57dmFyIG49cig3NjQpLGk9bi5CdWZmZXI7ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgciBpbiB0KWVbcl09dFtyXX1mdW5jdGlvbiBzKHQsZSxyKXtyZXR1cm4gaSh0LGUscil9aS5mcm9tJiZpLmFsbG9jJiZpLmFsbG9jVW5zYWZlJiZpLmFsbG9jVW5zYWZlU2xvdz90LmV4cG9ydHM9bjoobyhuLGUpLGUuQnVmZmVyPXMpLHMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLG8oaSxzKSxzLmZyb209ZnVuY3Rpb24odCxlLHIpe2lmKFwibnVtYmVyXCI9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlclwiKTtyZXR1cm4gaSh0LGUscil9LHMuYWxsb2M9ZnVuY3Rpb24odCxlLHIpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyXCIpO3ZhciBuPWkodCk7cmV0dXJuIHZvaWQgMCE9PWU/XCJzdHJpbmdcIj09dHlwZW9mIHI/bi5maWxsKGUscik6bi5maWxsKGUpOm4uZmlsbCgwKSxufSxzLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKHQpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyXCIpO3JldHVybiBpKHQpfSxzLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbih0KXtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwiKTtyZXR1cm4gbi5TbG93QnVmZmVyKHQpfX0sODMwOih0LGUscik9Pnt0LmV4cG9ydHM9aTt2YXIgbj1yKDE4NykuRXZlbnRFbWl0dGVyO2Z1bmN0aW9uIGkoKXtuLmNhbGwodGhpcyl9cig3MTcpKGksbiksaS5SZWFkYWJsZT1yKDQ4MSksaS5Xcml0YWJsZT1yKDIyOSksaS5EdXBsZXg9cig3NTMpLGkuVHJhbnNmb3JtPXIoNjA1KSxpLlBhc3NUaHJvdWdoPXIoNzI1KSxpLmZpbmlzaGVkPXIoNjEwKSxpLnBpcGVsaW5lPXIoOTQ2KSxpLlN0cmVhbT1pLGkucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzO2Z1bmN0aW9uIGkoZSl7dC53cml0YWJsZSYmITE9PT10LndyaXRlKGUpJiZyLnBhdXNlJiZyLnBhdXNlKCl9ZnVuY3Rpb24gbygpe3IucmVhZGFibGUmJnIucmVzdW1lJiZyLnJlc3VtZSgpfXIub24oXCJkYXRhXCIsaSksdC5vbihcImRyYWluXCIsbyksdC5faXNTdGRpb3x8ZSYmITE9PT1lLmVuZHx8KHIub24oXCJlbmRcIixhKSxyLm9uKFwiY2xvc2VcIix1KSk7dmFyIHM9ITE7ZnVuY3Rpb24gYSgpe3N8fChzPSEwLHQuZW5kKCkpfWZ1bmN0aW9uIHUoKXtzfHwocz0hMCxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmRlc3Ryb3kmJnQuZGVzdHJveSgpKX1mdW5jdGlvbiBsKHQpe2lmKGMoKSwwPT09bi5saXN0ZW5lckNvdW50KHRoaXMsXCJlcnJvclwiKSl0aHJvdyB0fWZ1bmN0aW9uIGMoKXtyLnJlbW92ZUxpc3RlbmVyKFwiZGF0YVwiLGkpLHQucmVtb3ZlTGlzdGVuZXIoXCJkcmFpblwiLG8pLHIucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIixhKSxyLnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIix1KSxyLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixsKSx0LnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixsKSxyLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsYyksci5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsYyksdC5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsYyl9cmV0dXJuIHIub24oXCJlcnJvclwiLGwpLHQub24oXCJlcnJvclwiLGwpLHIub24oXCJlbmRcIixjKSxyLm9uKFwiY2xvc2VcIixjKSx0Lm9uKFwiY2xvc2VcIixjKSx0LmVtaXQoXCJwaXBlXCIsciksdH19LDU1MzoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cig1MDkpLkJ1ZmZlcixpPW4uaXNFbmNvZGluZ3x8ZnVuY3Rpb24odCl7c3dpdGNoKCh0PVwiXCIrdCkmJnQudG9Mb3dlckNhc2UoKSl7Y2FzZVwiaGV4XCI6Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6Y2FzZVwiYXNjaWlcIjpjYXNlXCJiaW5hcnlcIjpjYXNlXCJiYXNlNjRcIjpjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpjYXNlXCJyYXdcIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX07ZnVuY3Rpb24gbyh0KXt2YXIgZTtzd2l0Y2godGhpcy5lbmNvZGluZz1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0KXtpZighdClyZXR1cm5cInV0ZjhcIjtmb3IodmFyIGU7Oylzd2l0Y2godCl7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cmV0dXJuXCJ1dGY4XCI7Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6cmV0dXJuXCJ1dGYxNmxlXCI7Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuXCJsYXRpbjFcIjtjYXNlXCJiYXNlNjRcIjpjYXNlXCJhc2NpaVwiOmNhc2VcImhleFwiOnJldHVybiB0O2RlZmF1bHQ6aWYoZSlyZXR1cm47dD0oXCJcIit0KS50b0xvd2VyQ2FzZSgpLGU9ITB9fSh0KTtpZihcInN0cmluZ1wiIT10eXBlb2YgZSYmKG4uaXNFbmNvZGluZz09PWl8fCFpKHQpKSl0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIit0KTtyZXR1cm4gZXx8dH0odCksdGhpcy5lbmNvZGluZyl7Y2FzZVwidXRmMTZsZVwiOnRoaXMudGV4dD11LHRoaXMuZW5kPWwsZT00O2JyZWFrO2Nhc2VcInV0ZjhcIjp0aGlzLmZpbGxMYXN0PWEsZT00O2JyZWFrO2Nhc2VcImJhc2U2NFwiOnRoaXMudGV4dD1jLHRoaXMuZW5kPWYsZT0zO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHRoaXMud3JpdGU9aCx2b2lkKHRoaXMuZW5kPXApfXRoaXMubGFzdE5lZWQ9MCx0aGlzLmxhc3RUb3RhbD0wLHRoaXMubGFzdENoYXI9bi5hbGxvY1Vuc2FmZShlKX1mdW5jdGlvbiBzKHQpe3JldHVybiB0PD0xMjc/MDp0Pj41PT02PzI6dD4+ND09MTQ/Mzp0Pj4zPT0zMD80OnQ+PjY9PTI/LTE6LTJ9ZnVuY3Rpb24gYSh0KXt2YXIgZT10aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLHI9ZnVuY3Rpb24odCxlLHIpe2lmKDEyOCE9KDE5MiZlWzBdKSlyZXR1cm4gdC5sYXN0TmVlZD0wLFwi77+9XCI7aWYodC5sYXN0TmVlZD4xJiZlLmxlbmd0aD4xKXtpZigxMjghPSgxOTImZVsxXSkpcmV0dXJuIHQubGFzdE5lZWQ9MSxcIu+/vVwiO2lmKHQubGFzdE5lZWQ+MiYmZS5sZW5ndGg+MiYmMTI4IT0oMTkyJmVbMl0pKXJldHVybiB0Lmxhc3ROZWVkPTIsXCLvv71cIn19KHRoaXMsdCk7cmV0dXJuIHZvaWQgMCE9PXI/cjp0aGlzLmxhc3ROZWVkPD10Lmxlbmd0aD8odC5jb3B5KHRoaXMubGFzdENoYXIsZSwwLHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKSk6KHQuY29weSh0aGlzLmxhc3RDaGFyLGUsMCx0Lmxlbmd0aCksdm9pZCh0aGlzLmxhc3ROZWVkLT10Lmxlbmd0aCkpfWZ1bmN0aW9uIHUodCxlKXtpZigodC5sZW5ndGgtZSklMj09MCl7dmFyIHI9dC50b1N0cmluZyhcInV0ZjE2bGVcIixlKTtpZihyKXt2YXIgbj1yLmNoYXJDb2RlQXQoci5sZW5ndGgtMSk7aWYobj49NTUyOTYmJm48PTU2MzE5KXJldHVybiB0aGlzLmxhc3ROZWVkPTIsdGhpcy5sYXN0VG90YWw9NCx0aGlzLmxhc3RDaGFyWzBdPXRbdC5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT10W3QubGVuZ3RoLTFdLHIuc2xpY2UoMCwtMSl9cmV0dXJuIHJ9cmV0dXJuIHRoaXMubGFzdE5lZWQ9MSx0aGlzLmxhc3RUb3RhbD0yLHRoaXMubGFzdENoYXJbMF09dFt0Lmxlbmd0aC0xXSx0LnRvU3RyaW5nKFwidXRmMTZsZVwiLGUsdC5sZW5ndGgtMSl9ZnVuY3Rpb24gbCh0KXt2YXIgZT10JiZ0Lmxlbmd0aD90aGlzLndyaXRlKHQpOlwiXCI7aWYodGhpcy5sYXN0TmVlZCl7dmFyIHI9dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZDtyZXR1cm4gZSt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKFwidXRmMTZsZVwiLDAscil9cmV0dXJuIGV9ZnVuY3Rpb24gYyh0LGUpe3ZhciByPSh0Lmxlbmd0aC1lKSUzO3JldHVybiAwPT09cj90LnRvU3RyaW5nKFwiYmFzZTY0XCIsZSk6KHRoaXMubGFzdE5lZWQ9My1yLHRoaXMubGFzdFRvdGFsPTMsMT09PXI/dGhpcy5sYXN0Q2hhclswXT10W3QubGVuZ3RoLTFdOih0aGlzLmxhc3RDaGFyWzBdPXRbdC5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT10W3QubGVuZ3RoLTFdKSx0LnRvU3RyaW5nKFwiYmFzZTY0XCIsZSx0Lmxlbmd0aC1yKSl9ZnVuY3Rpb24gZih0KXt2YXIgZT10JiZ0Lmxlbmd0aD90aGlzLndyaXRlKHQpOlwiXCI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/ZSt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKFwiYmFzZTY0XCIsMCwzLXRoaXMubGFzdE5lZWQpOmV9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdC50b1N0cmluZyh0aGlzLmVuY29kaW5nKX1mdW5jdGlvbiBwKHQpe3JldHVybiB0JiZ0Lmxlbmd0aD90aGlzLndyaXRlKHQpOlwiXCJ9ZS5zPW8sby5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7aWYoMD09PXQubGVuZ3RoKXJldHVyblwiXCI7dmFyIGUscjtpZih0aGlzLmxhc3ROZWVkKXtpZih2b2lkIDA9PT0oZT10aGlzLmZpbGxMYXN0KHQpKSlyZXR1cm5cIlwiO3I9dGhpcy5sYXN0TmVlZCx0aGlzLmxhc3ROZWVkPTB9ZWxzZSByPTA7cmV0dXJuIHI8dC5sZW5ndGg/ZT9lK3RoaXMudGV4dCh0LHIpOnRoaXMudGV4dCh0LHIpOmV8fFwiXCJ9LG8ucHJvdG90eXBlLmVuZD1mdW5jdGlvbih0KXt2YXIgZT10JiZ0Lmxlbmd0aD90aGlzLndyaXRlKHQpOlwiXCI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/ZStcIu+/vVwiOmV9LG8ucHJvdG90eXBlLnRleHQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1mdW5jdGlvbih0LGUscil7dmFyIG49ZS5sZW5ndGgtMTtpZihuPHIpcmV0dXJuIDA7dmFyIGk9cyhlW25dKTtyZXR1cm4gaT49MD8oaT4wJiYodC5sYXN0TmVlZD1pLTEpLGkpOi0tbjxyfHwtMj09PWk/MDooaT1zKGVbbl0pKT49MD8oaT4wJiYodC5sYXN0TmVlZD1pLTIpLGkpOi0tbjxyfHwtMj09PWk/MDooaT1zKGVbbl0pKT49MD8oaT4wJiYoMj09PWk/aT0wOnQubGFzdE5lZWQ9aS0zKSxpKTowfSh0aGlzLHQsZSk7aWYoIXRoaXMubGFzdE5lZWQpcmV0dXJuIHQudG9TdHJpbmcoXCJ1dGY4XCIsZSk7dGhpcy5sYXN0VG90YWw9cjt2YXIgbj10Lmxlbmd0aC0oci10aGlzLmxhc3ROZWVkKTtyZXR1cm4gdC5jb3B5KHRoaXMubGFzdENoYXIsMCxuKSx0LnRvU3RyaW5nKFwidXRmOFwiLGUsbil9LG8ucHJvdG90eXBlLmZpbGxMYXN0PWZ1bmN0aW9uKHQpe2lmKHRoaXMubGFzdE5lZWQ8PXQubGVuZ3RoKXJldHVybiB0LmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAsdGhpcy5sYXN0TmVlZCksdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsdGhpcy5sYXN0VG90YWwpO3QuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCx0Lmxlbmd0aCksdGhpcy5sYXN0TmVlZC09dC5sZW5ndGh9fSw5Mjc6KHQsZSxyKT0+e2Z1bmN0aW9uIG4odCl7dHJ5e2lmKCFyLmcubG9jYWxTdG9yYWdlKXJldHVybiExfWNhdGNoKHQpe3JldHVybiExfXZhciBlPXIuZy5sb2NhbFN0b3JhZ2VbdF07cmV0dXJuIG51bGwhPWUmJlwidHJ1ZVwiPT09U3RyaW5nKGUpLnRvTG93ZXJDYXNlKCl9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYobihcIm5vRGVwcmVjYXRpb25cIikpcmV0dXJuIHQ7dmFyIHI9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIXIpe2lmKG4oXCJ0aHJvd0RlcHJlY2F0aW9uXCIpKXRocm93IG5ldyBFcnJvcihlKTtuKFwidHJhY2VEZXByZWNhdGlvblwiKT9jb25zb2xlLnRyYWNlKGUpOmNvbnNvbGUud2FybihlKSxyPSEwfXJldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSw2Njk6dD0+e1widXNlIHN0cmljdFwiO3QuZXhwb3J0cz1lfSw5Mzc6ZT0+e1widXNlIHN0cmljdFwiO2lmKHZvaWQgMD09PXQpe3ZhciByPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAndW5kZWZpbmVkJ1wiKTt0aHJvdyByLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIscn1lLmV4cG9ydHM9dH19LG49e307ZnVuY3Rpb24gaSh0KXt2YXIgZT1uW3RdO2lmKHZvaWQgMCE9PWUpcmV0dXJuIGUuZXhwb3J0czt2YXIgbz1uW3RdPXtleHBvcnRzOnt9fTtyZXR1cm4gclt0XS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxpKSxvLmV4cG9ydHN9aS5kPSh0LGUpPT57Zm9yKHZhciByIGluIGUpaS5vKGUscikmJiFpLm8odCxyKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscix7ZW51bWVyYWJsZTohMCxnZXQ6ZVtyXX0pfSxpLmc9ZnVuY3Rpb24oKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsVGhpcylyZXR1cm4gZ2xvYmFsVGhpczt0cnl7cmV0dXJuIHRoaXN8fG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCl9Y2F0Y2godCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93fX0oKSxpLm89KHQsZSk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpLGkucj10PT57XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX07dmFyIG89e307cmV0dXJuKCgpPT57XCJ1c2Ugc3RyaWN0XCI7aS5yKG8pLGkuZChvLHtCaWdOdW1iZXI6KCk9PnQuQmlnTnVtYmVyLENvbW1lbnRlZDooKT0+dC5Db21tZW50ZWQsRGVjb2RlcjooKT0+dC5EZWNvZGVyLERpYWdub3NlOigpPT50LkRpYWdub3NlLEVuY29kZXI6KCk9PnQuRW5jb2RlcixNYXA6KCk9PnQuTWFwLFNpbXBsZTooKT0+dC5TaW1wbGUsVGFnZ2VkOigpPT50LlRhZ2dlZCxjb21tZW50OigpPT50LlVJLGRlY29kZTooKT0+dC5KeCxkZWNvZGVBbGw6KCk9PnQuZkksZGVjb2RlQWxsU3luYzooKT0+dC5jYyxkZWNvZGVGaXJzdDooKT0+dC5oOCxkZWNvZGVGaXJzdFN5bmM6KCk9PnQuJHUsZGlhZ25vc2U6KCk9PnQuTSxlbmNvZGU6KCk9PnQuY3YsZW5jb2RlQXN5bmM6KCk9PnQuV1IsZW5jb2RlQ2Fub25pY2FsOigpPT50Lk4yLGVuY29kZU9uZTooKT0+dC5URyxoYXNCaWdJbnQ6KCk9PnQudmMsbGV2ZWxkYjooKT0+dC53d30pO3ZhciB0PWkoMTQxKX0pKCksb30pKCl9KSk7IiwidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnc3RyZWFtJykuVHJhbnNmb3JtXG52YXIgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyJykuU3RyaW5nRGVjb2RlclxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5mdW5jdGlvbiBDaXBoZXJCYXNlIChoYXNoTW9kZSkge1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuICB0aGlzLmhhc2hNb2RlID0gdHlwZW9mIGhhc2hNb2RlID09PSAnc3RyaW5nJ1xuICBpZiAodGhpcy5oYXNoTW9kZSkge1xuICAgIHRoaXNbaGFzaE1vZGVdID0gdGhpcy5fZmluYWxPckRpZ2VzdFxuICB9IGVsc2Uge1xuICAgIHRoaXMuZmluYWwgPSB0aGlzLl9maW5hbE9yRGlnZXN0XG4gIH1cbiAgaWYgKHRoaXMuX2ZpbmFsKSB7XG4gICAgdGhpcy5fX2ZpbmFsID0gdGhpcy5fZmluYWxcbiAgICB0aGlzLl9maW5hbCA9IG51bGxcbiAgfVxuICB0aGlzLl9kZWNvZGVyID0gbnVsbFxuICB0aGlzLl9lbmNvZGluZyA9IG51bGxcbn1cbmluaGVyaXRzKENpcGhlckJhc2UsIFRyYW5zZm9ybSlcblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGlucHV0RW5jLCBvdXRwdXRFbmMpIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBpbnB1dEVuYylcbiAgfVxuXG4gIHZhciBvdXREYXRhID0gdGhpcy5fdXBkYXRlKGRhdGEpXG4gIGlmICh0aGlzLmhhc2hNb2RlKSByZXR1cm4gdGhpc1xuXG4gIGlmIChvdXRwdXRFbmMpIHtcbiAgICBvdXREYXRhID0gdGhpcy5fdG9TdHJpbmcob3V0RGF0YSwgb3V0cHV0RW5jKVxuICB9XG5cbiAgcmV0dXJuIG91dERhdGFcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoKSB7fVxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuZ2V0QXV0aFRhZyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuc2V0QXV0aFRhZyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuc2V0QUFEID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3RyeWluZyB0byBzZXQgYWFkIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChkYXRhLCBfLCBuZXh0KSB7XG4gIHZhciBlcnJcbiAgdHJ5IHtcbiAgICBpZiAodGhpcy5oYXNoTW9kZSkge1xuICAgICAgdGhpcy5fdXBkYXRlKGRhdGEpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaCh0aGlzLl91cGRhdGUoZGF0YSkpXG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyID0gZVxuICB9IGZpbmFsbHkge1xuICAgIG5leHQoZXJyKVxuICB9XG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbiAoZG9uZSkge1xuICB2YXIgZXJyXG4gIHRyeSB7XG4gICAgdGhpcy5wdXNoKHRoaXMuX19maW5hbCgpKVxuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyID0gZVxuICB9XG5cbiAgZG9uZShlcnIpXG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS5fZmluYWxPckRpZ2VzdCA9IGZ1bmN0aW9uIChvdXRwdXRFbmMpIHtcbiAgdmFyIG91dERhdGEgPSB0aGlzLl9fZmluYWwoKSB8fCBCdWZmZXIuYWxsb2MoMClcbiAgaWYgKG91dHB1dEVuYykge1xuICAgIG91dERhdGEgPSB0aGlzLl90b1N0cmluZyhvdXREYXRhLCBvdXRwdXRFbmMsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG91dERhdGFcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX3RvU3RyaW5nID0gZnVuY3Rpb24gKHZhbHVlLCBlbmMsIGZpbikge1xuICBpZiAoIXRoaXMuX2RlY29kZXIpIHtcbiAgICB0aGlzLl9kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoZW5jKVxuICAgIHRoaXMuX2VuY29kaW5nID0gZW5jXG4gIH1cblxuICBpZiAodGhpcy5fZW5jb2RpbmcgIT09IGVuYykgdGhyb3cgbmV3IEVycm9yKCdjYW5cXCd0IHN3aXRjaCBlbmNvZGluZ3MnKVxuXG4gIHZhciBvdXQgPSB0aGlzLl9kZWNvZGVyLndyaXRlKHZhbHVlKVxuICBpZiAoZmluKSB7XG4gICAgb3V0ICs9IHRoaXMuX2RlY29kZXIuZW5kKClcbiAgfVxuXG4gIHJldHVybiBvdXRcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBDaXBoZXJCYXNlXG4iLCJ2YXIgZWxsaXB0aWMgPSByZXF1aXJlKCdlbGxpcHRpYycpXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlRUNESCAoY3VydmUpIHtcbiAgcmV0dXJuIG5ldyBFQ0RIKGN1cnZlKVxufVxuXG52YXIgYWxpYXNlcyA9IHtcbiAgc2VjcDI1NmsxOiB7XG4gICAgbmFtZTogJ3NlY3AyNTZrMScsXG4gICAgYnl0ZUxlbmd0aDogMzJcbiAgfSxcbiAgc2VjcDIyNHIxOiB7XG4gICAgbmFtZTogJ3AyMjQnLFxuICAgIGJ5dGVMZW5ndGg6IDI4XG4gIH0sXG4gIHByaW1lMjU2djE6IHtcbiAgICBuYW1lOiAncDI1NicsXG4gICAgYnl0ZUxlbmd0aDogMzJcbiAgfSxcbiAgcHJpbWUxOTJ2MToge1xuICAgIG5hbWU6ICdwMTkyJyxcbiAgICBieXRlTGVuZ3RoOiAyNFxuICB9LFxuICBlZDI1NTE5OiB7XG4gICAgbmFtZTogJ2VkMjU1MTknLFxuICAgIGJ5dGVMZW5ndGg6IDMyXG4gIH0sXG4gIHNlY3AzODRyMToge1xuICAgIG5hbWU6ICdwMzg0JyxcbiAgICBieXRlTGVuZ3RoOiA0OFxuICB9LFxuICBzZWNwNTIxcjE6IHtcbiAgICBuYW1lOiAncDUyMScsXG4gICAgYnl0ZUxlbmd0aDogNjZcbiAgfVxufVxuXG5hbGlhc2VzLnAyMjQgPSBhbGlhc2VzLnNlY3AyMjRyMVxuYWxpYXNlcy5wMjU2ID0gYWxpYXNlcy5zZWNwMjU2cjEgPSBhbGlhc2VzLnByaW1lMjU2djFcbmFsaWFzZXMucDE5MiA9IGFsaWFzZXMuc2VjcDE5MnIxID0gYWxpYXNlcy5wcmltZTE5MnYxXG5hbGlhc2VzLnAzODQgPSBhbGlhc2VzLnNlY3AzODRyMVxuYWxpYXNlcy5wNTIxID0gYWxpYXNlcy5zZWNwNTIxcjFcblxuZnVuY3Rpb24gRUNESCAoY3VydmUpIHtcbiAgdGhpcy5jdXJ2ZVR5cGUgPSBhbGlhc2VzW2N1cnZlXVxuICBpZiAoIXRoaXMuY3VydmVUeXBlKSB7XG4gICAgdGhpcy5jdXJ2ZVR5cGUgPSB7XG4gICAgICBuYW1lOiBjdXJ2ZVxuICAgIH1cbiAgfVxuICB0aGlzLmN1cnZlID0gbmV3IGVsbGlwdGljLmVjKHRoaXMuY3VydmVUeXBlLm5hbWUpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuICB0aGlzLmtleXMgPSB2b2lkIDBcbn1cblxuRUNESC5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzID0gZnVuY3Rpb24gKGVuYywgZm9ybWF0KSB7XG4gIHRoaXMua2V5cyA9IHRoaXMuY3VydmUuZ2VuS2V5UGFpcigpXG4gIHJldHVybiB0aGlzLmdldFB1YmxpY0tleShlbmMsIGZvcm1hdClcbn1cblxuRUNESC5wcm90b3R5cGUuY29tcHV0ZVNlY3JldCA9IGZ1bmN0aW9uIChvdGhlciwgaW5lbmMsIGVuYykge1xuICBpbmVuYyA9IGluZW5jIHx8ICd1dGY4J1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihvdGhlcikpIHtcbiAgICBvdGhlciA9IG5ldyBCdWZmZXIob3RoZXIsIGluZW5jKVxuICB9XG4gIHZhciBvdGhlclB1YiA9IHRoaXMuY3VydmUua2V5RnJvbVB1YmxpYyhvdGhlcikuZ2V0UHVibGljKClcbiAgdmFyIG91dCA9IG90aGVyUHViLm11bCh0aGlzLmtleXMuZ2V0UHJpdmF0ZSgpKS5nZXRYKClcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKG91dCwgZW5jLCB0aGlzLmN1cnZlVHlwZS5ieXRlTGVuZ3RoKVxufVxuXG5FQ0RILnByb3RvdHlwZS5nZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiAoZW5jLCBmb3JtYXQpIHtcbiAgdmFyIGtleSA9IHRoaXMua2V5cy5nZXRQdWJsaWMoZm9ybWF0ID09PSAnY29tcHJlc3NlZCcsIHRydWUpXG4gIGlmIChmb3JtYXQgPT09ICdoeWJyaWQnKSB7XG4gICAgaWYgKGtleVtrZXkubGVuZ3RoIC0gMV0gJSAyKSB7XG4gICAgICBrZXlbMF0gPSA3XG4gICAgfSBlbHNlIHtcbiAgICAgIGtleVswXSA9IDZcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKGtleSwgZW5jKVxufVxuXG5FQ0RILnByb3RvdHlwZS5nZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gKGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5rZXlzLmdldFByaXZhdGUoKSwgZW5jKVxufVxuXG5FQ0RILnByb3RvdHlwZS5zZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiAocHViLCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4J1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwdWIpKSB7XG4gICAgcHViID0gbmV3IEJ1ZmZlcihwdWIsIGVuYylcbiAgfVxuICB0aGlzLmtleXMuX2ltcG9ydFB1YmxpYyhwdWIpXG4gIHJldHVybiB0aGlzXG59XG5cbkVDREgucHJvdG90eXBlLnNldFByaXZhdGVLZXkgPSBmdW5jdGlvbiAocHJpdiwgZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAndXRmOCdcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpdikpIHtcbiAgICBwcml2ID0gbmV3IEJ1ZmZlcihwcml2LCBlbmMpXG4gIH1cblxuICB2YXIgX3ByaXYgPSBuZXcgQk4ocHJpdilcbiAgX3ByaXYgPSBfcHJpdi50b1N0cmluZygxNilcbiAgdGhpcy5rZXlzID0gdGhpcy5jdXJ2ZS5nZW5LZXlQYWlyKClcbiAgdGhpcy5rZXlzLl9pbXBvcnRQcml2YXRlKF9wcml2KVxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiBmb3JtYXRSZXR1cm5WYWx1ZSAoYm4sIGVuYywgbGVuKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShibikpIHtcbiAgICBibiA9IGJuLnRvQXJyYXkoKVxuICB9XG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKGJuKVxuICBpZiAobGVuICYmIGJ1Zi5sZW5ndGggPCBsZW4pIHtcbiAgICB2YXIgemVyb3MgPSBuZXcgQnVmZmVyKGxlbiAtIGJ1Zi5sZW5ndGgpXG4gICAgemVyb3MuZmlsbCgwKVxuICAgIGJ1ZiA9IEJ1ZmZlci5jb25jYXQoW3plcm9zLCBidWZdKVxuICB9XG4gIGlmICghZW5jKSB7XG4gICAgcmV0dXJuIGJ1ZlxuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWYudG9TdHJpbmcoZW5jKVxuICB9XG59XG4iLCIoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gVXRpbHNcbiAgZnVuY3Rpb24gYXNzZXJ0ICh2YWwsIG1zZykge1xuICAgIGlmICghdmFsKSB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG4gIH1cblxuICAvLyBDb3VsZCB1c2UgYGluaGVyaXRzYCBtb2R1bGUsIGJ1dCBkb24ndCB3YW50IHRvIG1vdmUgZnJvbSBzaW5nbGUgZmlsZVxuICAvLyBhcmNoaXRlY3R1cmUgeWV0LlxuICBmdW5jdGlvbiBpbmhlcml0cyAoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3I7XG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge307XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZTtcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpO1xuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvcjtcbiAgfVxuXG4gIC8vIEJOXG5cbiAgZnVuY3Rpb24gQk4gKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKEJOLmlzQk4obnVtYmVyKSkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB0aGlzLndvcmRzID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICAvLyBSZWR1Y3Rpb24gY29udGV4dFxuICAgIHRoaXMucmVkID0gbnVsbDtcblxuICAgIGlmIChudW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGlmIChiYXNlID09PSAnbGUnIHx8IGJhc2UgPT09ICdiZScpIHtcbiAgICAgICAgZW5kaWFuID0gYmFzZTtcbiAgICAgICAgYmFzZSA9IDEwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbml0KG51bWJlciB8fCAwLCBiYXNlIHx8IDEwLCBlbmRpYW4gfHwgJ2JlJyk7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gQk47XG4gIH0gZWxzZSB7XG4gICAgZXhwb3J0cy5CTiA9IEJOO1xuICB9XG5cbiAgQk4uQk4gPSBCTjtcbiAgQk4ud29yZFNpemUgPSAyNjtcblxuICB2YXIgQnVmZmVyO1xuICB0cnkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIEJ1ZmZlciA9IHdpbmRvdy5CdWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPCBudW1iZXIubGVuZ3RoKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gMTYpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VIZXgobnVtYmVyLCBzdGFydCwgZW5kaWFuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3BhcnNlQmFzZShudW1iZXIsIGJhc2UsIHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXROdW1iZXIgPSBmdW5jdGlvbiBfaW5pdE51bWJlciAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICBudW1iZXIgPSAtbnVtYmVyO1xuICAgIH1cbiAgICBpZiAobnVtYmVyIDwgMHg0MDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyBudW1iZXIgJiAweDNmZmZmZmYgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKG51bWJlciA8IDB4MTAwMDAwMDAwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmZcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChudW1iZXIgPCAweDIwMDAwMDAwMDAwMDAwKTsgLy8gMiBeIDUzICh1bnNhZmUpXG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmLFxuICAgICAgICAxXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAzO1xuICAgIH1cblxuICAgIGlmIChlbmRpYW4gIT09ICdsZScpIHJldHVybjtcblxuICAgIC8vIFJldmVyc2UgdGhlIGJ5dGVzXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdEFycmF5ID0gZnVuY3Rpb24gX2luaXRBcnJheSAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICAvLyBQZXJoYXBzIGEgVWludDhBcnJheVxuICAgIGFzc2VydCh0eXBlb2YgbnVtYmVyLmxlbmd0aCA9PT0gJ251bWJlcicpO1xuICAgIGlmIChudW1iZXIubGVuZ3RoIDw9IDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKG51bWJlci5sZW5ndGggLyAzKTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIHZhciBqLCB3O1xuICAgIHZhciBvZmYgPSAwO1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxLCBqID0gMDsgaSA+PSAwOyBpIC09IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSAtIDFdIDw8IDgpIHwgKG51bWJlcltpIC0gMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgKyAxXSA8PCA4KSB8IChudW1iZXJbaSArIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4NEJpdHMgKHN0cmluZywgaW5kZXgpIHtcbiAgICB2YXIgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAvLyAnQScgLSAnRidcbiAgICBpZiAoYyA+PSA2NSAmJiBjIDw9IDcwKSB7XG4gICAgICByZXR1cm4gYyAtIDU1O1xuICAgIC8vICdhJyAtICdmJ1xuICAgIH0gZWxzZSBpZiAoYyA+PSA5NyAmJiBjIDw9IDEwMikge1xuICAgICAgcmV0dXJuIGMgLSA4NztcbiAgICAvLyAnMCcgLSAnOSdcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChjIC0gNDgpICYgMHhmO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4Qnl0ZSAoc3RyaW5nLCBsb3dlckJvdW5kLCBpbmRleCkge1xuICAgIHZhciByID0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4KTtcbiAgICBpZiAoaW5kZXggLSAxID49IGxvd2VyQm91bmQpIHtcbiAgICAgIHIgfD0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4IC0gMSkgPDwgNDtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlSGV4ID0gZnVuY3Rpb24gX3BhcnNlSGV4IChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICAvLyAyNC1iaXRzIGNodW5rc1xuICAgIHZhciBvZmYgPSAwO1xuICAgIHZhciBqID0gMDtcblxuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyBpIC09IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFyc2VMZW5ndGggPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgICBmb3IgKGkgPSBwYXJzZUxlbmd0aCAlIDIgPT09IDAgPyBzdGFydCArIDEgOiBzdGFydDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlQmFzZSAoc3RyLCBzdGFydCwgZW5kLCBtdWwpIHtcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKHN0ci5sZW5ndGgsIGVuZCk7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBjID0gc3RyLmNoYXJDb2RlQXQoaSkgLSA0ODtcblxuICAgICAgciAqPSBtdWw7XG5cbiAgICAgIC8vICdhJ1xuICAgICAgaWYgKGMgPj0gNDkpIHtcbiAgICAgICAgciArPSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3KSB7XG4gICAgICAgIHIgKz0gYyAtIDE3ICsgMHhhO1xuXG4gICAgICAvLyAnMCcgLSAnOSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIgKz0gYztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlQmFzZSA9IGZ1bmN0aW9uIF9wYXJzZUJhc2UgKG51bWJlciwgYmFzZSwgc3RhcnQpIHtcbiAgICAvLyBJbml0aWFsaXplIGFzIHplcm9cbiAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuXG4gICAgLy8gRmluZCBsZW5ndGggb2YgbGltYiBpbiBiYXNlXG4gICAgZm9yICh2YXIgbGltYkxlbiA9IDAsIGxpbWJQb3cgPSAxOyBsaW1iUG93IDw9IDB4M2ZmZmZmZjsgbGltYlBvdyAqPSBiYXNlKSB7XG4gICAgICBsaW1iTGVuKys7XG4gICAgfVxuICAgIGxpbWJMZW4tLTtcbiAgICBsaW1iUG93ID0gKGxpbWJQb3cgLyBiYXNlKSB8IDA7XG5cbiAgICB2YXIgdG90YWwgPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgdmFyIG1vZCA9IHRvdGFsICUgbGltYkxlbjtcbiAgICB2YXIgZW5kID0gTWF0aC5taW4odG90YWwsIHRvdGFsIC0gbW9kKSArIHN0YXJ0O1xuXG4gICAgdmFyIHdvcmQgPSAwO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSBsaW1iTGVuKSB7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgaSArIGxpbWJMZW4sIGJhc2UpO1xuXG4gICAgICB0aGlzLmltdWxuKGxpbWJQb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2QgIT09IDApIHtcbiAgICAgIHZhciBwb3cgPSAxO1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIG51bWJlci5sZW5ndGgsIGJhc2UpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbW9kOyBpKyspIHtcbiAgICAgICAgcG93ICo9IGJhc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW11bG4ocG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5IChkZXN0KSB7XG4gICAgZGVzdC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXN0LndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICB9XG4gICAgZGVzdC5sZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICBkZXN0Lm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICBkZXN0LnJlZCA9IHRoaXMucmVkO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICB2YXIgciA9IG5ldyBCTihudWxsKTtcbiAgICB0aGlzLmNvcHkocik7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9leHBhbmQgPSBmdW5jdGlvbiBfZXhwYW5kIChzaXplKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgc2l6ZSkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFJlbW92ZSBsZWFkaW5nIGAwYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3RyaXAgPSBmdW5jdGlvbiBzdHJpcCAoKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoID4gMSAmJiB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fbm9ybVNpZ24gPSBmdW5jdGlvbiBfbm9ybVNpZ24gKCkge1xuICAgIC8vIC0wID0gMFxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICByZXR1cm4gKHRoaXMucmVkID8gJzxCTi1SOiAnIDogJzxCTjogJykgKyB0aGlzLnRvU3RyaW5nKDE2KSArICc+JztcbiAgfTtcblxuICAvKlxuXG4gIHZhciB6ZXJvcyA9IFtdO1xuICB2YXIgZ3JvdXBTaXplcyA9IFtdO1xuICB2YXIgZ3JvdXBCYXNlcyA9IFtdO1xuXG4gIHZhciBzID0gJyc7XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBCTi53b3JkU2l6ZSkge1xuICAgIHplcm9zW2ldID0gcztcbiAgICBzICs9ICcwJztcbiAgfVxuICBncm91cFNpemVzWzBdID0gMDtcbiAgZ3JvdXBTaXplc1sxXSA9IDA7XG4gIGdyb3VwQmFzZXNbMF0gPSAwO1xuICBncm91cEJhc2VzWzFdID0gMDtcbiAgdmFyIGJhc2UgPSAyIC0gMTtcbiAgd2hpbGUgKCsrYmFzZSA8IDM2ICsgMSkge1xuICAgIHZhciBncm91cFNpemUgPSAwO1xuICAgIHZhciBncm91cEJhc2UgPSAxO1xuICAgIHdoaWxlIChncm91cEJhc2UgPCAoMSA8PCBCTi53b3JkU2l6ZSkgLyBiYXNlKSB7XG4gICAgICBncm91cEJhc2UgKj0gYmFzZTtcbiAgICAgIGdyb3VwU2l6ZSArPSAxO1xuICAgIH1cbiAgICBncm91cFNpemVzW2Jhc2VdID0gZ3JvdXBTaXplO1xuICAgIGdyb3VwQmFzZXNbYmFzZV0gPSBncm91cEJhc2U7XG4gIH1cblxuICAqL1xuXG4gIHZhciB6ZXJvcyA9IFtcbiAgICAnJyxcbiAgICAnMCcsXG4gICAgJzAwJyxcbiAgICAnMDAwJyxcbiAgICAnMDAwMCcsXG4gICAgJzAwMDAwJyxcbiAgICAnMDAwMDAwJyxcbiAgICAnMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCdcbiAgXTtcblxuICB2YXIgZ3JvdXBTaXplcyA9IFtcbiAgICAwLCAwLFxuICAgIDI1LCAxNiwgMTIsIDExLCAxMCwgOSwgOCxcbiAgICA4LCA3LCA3LCA3LCA3LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1XG4gIF07XG5cbiAgdmFyIGdyb3VwQmFzZXMgPSBbXG4gICAgMCwgMCxcbiAgICAzMzU1NDQzMiwgNDMwNDY3MjEsIDE2Nzc3MjE2LCA0ODgyODEyNSwgNjA0NjYxNzYsIDQwMzUzNjA3LCAxNjc3NzIxNixcbiAgICA0MzA0NjcyMSwgMTAwMDAwMDAsIDE5NDg3MTcxLCAzNTgzMTgwOCwgNjI3NDg1MTcsIDc1Mjk1MzYsIDExMzkwNjI1LFxuICAgIDE2Nzc3MjE2LCAyNDEzNzU2OSwgMzQwMTIyMjQsIDQ3MDQ1ODgxLCA2NDAwMDAwMCwgNDA4NDEwMSwgNTE1MzYzMixcbiAgICA2NDM2MzQzLCA3OTYyNjI0LCA5NzY1NjI1LCAxMTg4MTM3NiwgMTQzNDg5MDcsIDE3MjEwMzY4LCAyMDUxMTE0OSxcbiAgICAyNDMwMDAwMCwgMjg2MjkxNTEsIDMzNTU0NDMyLCAzOTEzNTM5MywgNDU0MzU0MjQsIDUyNTIxODc1LCA2MDQ2NjE3NlxuICBdO1xuXG4gIEJOLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nIChiYXNlLCBwYWRkaW5nKSB7XG4gICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgcGFkZGluZyA9IHBhZGRpbmcgfCAwIHx8IDE7XG5cbiAgICB2YXIgb3V0O1xuICAgIGlmIChiYXNlID09PSAxNiB8fCBiYXNlID09PSAnaGV4Jykge1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgb2ZmID0gMDtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldO1xuICAgICAgICB2YXIgd29yZCA9ICgoKHcgPDwgb2ZmKSB8IGNhcnJ5KSAmIDB4ZmZmZmZmKS50b1N0cmluZygxNik7XG4gICAgICAgIGNhcnJ5ID0gKHcgPj4+ICgyNCAtIG9mZikpICYgMHhmZmZmZmY7XG4gICAgICAgIGlmIChjYXJyeSAhPT0gMCB8fCBpICE9PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1s2IC0gd29yZC5sZW5ndGhdICsgd29yZCArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSB3b3JkICsgb3V0O1xuICAgICAgICB9XG4gICAgICAgIG9mZiArPSAyO1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICAgIG91dCA9IGNhcnJ5LnRvU3RyaW5nKDE2KSArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KSB7XG4gICAgICAvLyB2YXIgZ3JvdXBTaXplID0gTWF0aC5mbG9vcihCTi53b3JkU2l6ZSAqIE1hdGguTE4yIC8gTWF0aC5sb2coYmFzZSkpO1xuICAgICAgdmFyIGdyb3VwU2l6ZSA9IGdyb3VwU2l6ZXNbYmFzZV07XG4gICAgICAvLyB2YXIgZ3JvdXBCYXNlID0gTWF0aC5wb3coYmFzZSwgZ3JvdXBTaXplKTtcbiAgICAgIHZhciBncm91cEJhc2UgPSBncm91cEJhc2VzW2Jhc2VdO1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgYyA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGMubmVnYXRpdmUgPSAwO1xuICAgICAgd2hpbGUgKCFjLmlzWmVybygpKSB7XG4gICAgICAgIHZhciByID0gYy5tb2RuKGdyb3VwQmFzZSkudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIGMgPSBjLmlkaXZuKGdyb3VwQmFzZSk7XG5cbiAgICAgICAgaWYgKCFjLmlzWmVybygpKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbZ3JvdXBTaXplIC0gci5sZW5ndGhdICsgciArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSByICsgb3V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBhc3NlcnQoZmFsc2UsICdCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Jyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvTnVtYmVyID0gZnVuY3Rpb24gdG9OdW1iZXIgKCkge1xuICAgIHZhciByZXQgPSB0aGlzLndvcmRzWzBdO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0ICs9IHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA9PT0gMyAmJiB0aGlzLndvcmRzWzJdID09PSAweDAxKSB7XG4gICAgICAvLyBOT1RFOiBhdCB0aGlzIHN0YWdlIGl0IGlzIGtub3duIHRoYXQgdGhlIHRvcCBiaXQgaXMgc2V0XG4gICAgICByZXQgKz0gMHgxMDAwMDAwMDAwMDAwMCArICh0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gMikge1xuICAgICAgYXNzZXJ0KGZhbHNlLCAnTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzJyk7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgPyAtcmV0IDogcmV0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKDE2KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9CdWZmZXIgPSBmdW5jdGlvbiB0b0J1ZmZlciAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpO1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEJ1ZmZlciwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gdG9BcnJheSAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5TGlrZSA9IGZ1bmN0aW9uIHRvQXJyYXlMaWtlIChBcnJheVR5cGUsIGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgdmFyIGJ5dGVMZW5ndGggPSB0aGlzLmJ5dGVMZW5ndGgoKTtcbiAgICB2YXIgcmVxTGVuZ3RoID0gbGVuZ3RoIHx8IE1hdGgubWF4KDEsIGJ5dGVMZW5ndGgpO1xuICAgIGFzc2VydChieXRlTGVuZ3RoIDw9IHJlcUxlbmd0aCwgJ2J5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgnKTtcbiAgICBhc3NlcnQocmVxTGVuZ3RoID4gMCwgJ1JlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCcpO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuICAgIHZhciBsaXR0bGVFbmRpYW4gPSBlbmRpYW4gPT09ICdsZSc7XG4gICAgdmFyIHJlcyA9IG5ldyBBcnJheVR5cGUocmVxTGVuZ3RoKTtcblxuICAgIHZhciBiLCBpO1xuICAgIHZhciBxID0gdGhpcy5jbG9uZSgpO1xuICAgIGlmICghbGl0dGxlRW5kaWFuKSB7XG4gICAgICAvLyBBc3N1bWUgYmlnLWVuZGlhblxuICAgICAgZm9yIChpID0gMDsgaSA8IHJlcUxlbmd0aCAtIGJ5dGVMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbcmVxTGVuZ3RoIC0gaSAtIDFdID0gYjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW2ldID0gYjtcbiAgICAgIH1cblxuICAgICAgZm9yICg7IGkgPCByZXFMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgaWYgKE1hdGguY2x6MzIpIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHJldHVybiAzMiAtIE1hdGguY2x6MzIodyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHZhciB0ID0gdztcbiAgICAgIHZhciByID0gMDtcbiAgICAgIGlmICh0ID49IDB4MTAwMCkge1xuICAgICAgICByICs9IDEzO1xuICAgICAgICB0ID4+Pj0gMTM7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDQwKSB7XG4gICAgICAgIHIgKz0gNztcbiAgICAgICAgdCA+Pj49IDc7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDgpIHtcbiAgICAgICAgciArPSA0O1xuICAgICAgICB0ID4+Pj0gNDtcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4MDIpIHtcbiAgICAgICAgciArPSAyO1xuICAgICAgICB0ID4+Pj0gMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByICsgdDtcbiAgICB9O1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl96ZXJvQml0cyA9IGZ1bmN0aW9uIF96ZXJvQml0cyAodykge1xuICAgIC8vIFNob3J0LWN1dFxuICAgIGlmICh3ID09PSAwKSByZXR1cm4gMjY7XG5cbiAgICB2YXIgdCA9IHc7XG4gICAgdmFyIHIgPSAwO1xuICAgIGlmICgodCAmIDB4MWZmZikgPT09IDApIHtcbiAgICAgIHIgKz0gMTM7XG4gICAgICB0ID4+Pj0gMTM7XG4gICAgfVxuICAgIGlmICgodCAmIDB4N2YpID09PSAwKSB7XG4gICAgICByICs9IDc7XG4gICAgICB0ID4+Pj0gNztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHhmKSA9PT0gMCkge1xuICAgICAgciArPSA0O1xuICAgICAgdCA+Pj49IDQ7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MykgPT09IDApIHtcbiAgICAgIHIgKz0gMjtcbiAgICAgIHQgPj4+PSAyO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDEpID09PSAwKSB7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIC8vIFJldHVybiBudW1iZXIgb2YgdXNlZCBiaXRzIGluIGEgQk5cbiAgQk4ucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uIGJpdExlbmd0aCAoKSB7XG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV07XG4gICAgdmFyIGhpID0gdGhpcy5fY291bnRCaXRzKHcpO1xuICAgIHJldHVybiAodGhpcy5sZW5ndGggLSAxKSAqIDI2ICsgaGk7XG4gIH07XG5cbiAgZnVuY3Rpb24gdG9CaXRBcnJheSAobnVtKSB7XG4gICAgdmFyIHcgPSBuZXcgQXJyYXkobnVtLmJpdExlbmd0aCgpKTtcblxuICAgIGZvciAodmFyIGJpdCA9IDA7IGJpdCA8IHcubGVuZ3RoOyBiaXQrKykge1xuICAgICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgICAgd1tiaXRdID0gKG51bS53b3Jkc1tvZmZdICYgKDEgPDwgd2JpdCkpID4+PiB3Yml0O1xuICAgIH1cblxuICAgIHJldHVybiB3O1xuICB9XG5cbiAgLy8gTnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0c1xuICBCTi5wcm90b3R5cGUuemVyb0JpdHMgPSBmdW5jdGlvbiB6ZXJvQml0cyAoKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiAwO1xuXG4gICAgdmFyIHIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGIgPSB0aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2ldKTtcbiAgICAgIHIgKz0gYjtcbiAgICAgIGlmIChiICE9PSAyNikgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ieXRlTGVuZ3RoID0gZnVuY3Rpb24gYnl0ZUxlbmd0aCAoKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpIC8gOCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvVHdvcyA9IGZ1bmN0aW9uIHRvVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWJzKCkuaW5vdG4od2lkdGgpLmlhZGRuKDEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tVHdvcyA9IGZ1bmN0aW9uIGZyb21Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLnRlc3RuKHdpZHRoIC0gMSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdG4od2lkdGgpLmlhZGRuKDEpLmluZWcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiBpc05lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmUgIT09IDA7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5lZyA9IGZ1bmN0aW9uIGluZWcgKCkge1xuICAgIGlmICghdGhpcy5pc1plcm8oKSkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdW9yID0gZnVuY3Rpb24gaXVvciAobnVtKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldIHwgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlvciA9IGZ1bmN0aW9uIGlvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVvcihudW0pO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pb3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVvciA9IGZ1bmN0aW9uIHVvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdWFuZCA9IGZ1bmN0aW9uIGl1YW5kIChudW0pIHtcbiAgICAvLyBiID0gbWluLWxlbmd0aChudW0sIHRoaXMpXG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSAmIG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGIubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFuZCA9IGZ1bmN0aW9uIGlhbmQgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1YW5kKG51bSk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiBhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYW5kKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51YW5kID0gZnVuY3Rpb24gdWFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdWFuZCh0aGlzKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1eG9yID0gZnVuY3Rpb24gaXV4b3IgKG51bSkge1xuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYTtcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldIF4gYi53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcyAhPT0gYSkge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5peG9yID0gZnVuY3Rpb24gaXhvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXV4b3IobnVtKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIHhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5peG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml4b3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnV4b3IgPSBmdW5jdGlvbiB1eG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1eG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1eG9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIE5vdCBgYHRoaXNgYCB3aXRoIGBgd2lkdGhgYCBiaXR3aWR0aFxuICBCTi5wcm90b3R5cGUuaW5vdG4gPSBmdW5jdGlvbiBpbm90biAod2lkdGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyAmJiB3aWR0aCA+PSAwKTtcblxuICAgIHZhciBieXRlc05lZWRlZCA9IE1hdGguY2VpbCh3aWR0aCAvIDI2KSB8IDA7XG4gICAgdmFyIGJpdHNMZWZ0ID0gd2lkdGggJSAyNjtcblxuICAgIC8vIEV4dGVuZCB0aGUgYnVmZmVyIHdpdGggbGVhZGluZyB6ZXJvZXNcbiAgICB0aGlzLl9leHBhbmQoYnl0ZXNOZWVkZWQpO1xuXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgYnl0ZXNOZWVkZWQtLTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgY29tcGxldGUgd29yZHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzTmVlZGVkOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIHJlc2lkdWVcbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAoMHgzZmZmZmZmID4+ICgyNiAtIGJpdHNMZWZ0KSk7XG4gICAgfVxuXG4gICAgLy8gQW5kIHJlbW92ZSBsZWFkaW5nIHplcm9lc1xuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm5vdG4gPSBmdW5jdGlvbiBub3RuICh3aWR0aCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5vdG4od2lkdGgpO1xuICB9O1xuXG4gIC8vIFNldCBgYml0YCBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNldG4gPSBmdW5jdGlvbiBzZXRuIChiaXQsIHZhbCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG5cbiAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgIHRoaXMuX2V4cGFuZChvZmYgKyAxKTtcblxuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSB8ICgxIDw8IHdiaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gJiB+KDEgPDwgd2JpdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAobnVtKSB7XG4gICAgdmFyIHI7XG5cbiAgICAvLyBuZWdhdGl2ZSArIHBvc2l0aXZlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gcG9zaXRpdmUgKyBuZWdhdGl2ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhLCBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAvLyBDb3B5IHRoZSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIH0gZWxzZSBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAobnVtKSB7XG4gICAgdmFyIHJlcztcbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwICYmIHRoaXMubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSB0aGlzLnN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSBpZiAobnVtLm5lZ2F0aXZlID09PSAwICYmIHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gbnVtLnN1Yih0aGlzKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGQobnVtKTtcblxuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYWRkKHRoaXMpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAobnVtKSB7XG4gICAgLy8gdGhpcyAtICgtbnVtKSA9IHRoaXMgKyBudW1cbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgdmFyIHIgPSB0aGlzLmlhZGQobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcblxuICAgIC8vIC10aGlzIC0gbnVtID0gLSh0aGlzICsgbnVtKVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGQobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlXG4gICAgdmFyIGNtcCA9IHRoaXMuY21wKG51bSk7XG5cbiAgICAvLyBPcHRpbWl6YXRpb24gLSB6ZXJvaWZ5XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIGEgPiBiXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGNtcCA+IDApIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSAtIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBDb3B5IHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgaWYgKGNhcnJ5ID09PSAwICYmIGkgPCBhLmxlbmd0aCAmJiBhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSk7XG5cbiAgICBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBzbWFsbE11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgdmFyIGxlbiA9IChzZWxmLmxlbmd0aCArIG51bS5sZW5ndGgpIHwgMDtcbiAgICBvdXQubGVuZ3RoID0gbGVuO1xuICAgIGxlbiA9IChsZW4gLSAxKSB8IDA7XG5cbiAgICAvLyBQZWVsIG9uZSBpdGVyYXRpb24gKGNvbXBpbGVyIGNhbid0IGRvIGl0LCBiZWNhdXNlIG9mIGNvZGUgY29tcGxleGl0eSlcbiAgICB2YXIgYSA9IHNlbGYud29yZHNbMF0gfCAwO1xuICAgIHZhciBiID0gbnVtLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICB2YXIgY2FycnkgPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgIG91dC53b3Jkc1swXSA9IGxvO1xuXG4gICAgZm9yICh2YXIgayA9IDE7IGsgPCBsZW47IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBjYXJyeSA+Pj4gMjY7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IChrIC0gaikgfCAwO1xuICAgICAgICBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICByID0gYSAqIGIgKyByd29yZDtcbiAgICAgICAgbmNhcnJ5ICs9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkIHwgMDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5IHwgMDtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeSB8IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICAvLyBUT0RPKGluZHV0bnkpOiBpdCBtYXkgYmUgcmVhc29uYWJsZSB0byBvbWl0IGl0IGZvciB1c2VycyB3aG8gZG9uJ3QgbmVlZFxuICAvLyB0byB3b3JrIHdpdGggMjU2LWJpdCBudW1iZXJzLCBvdGhlcndpc2UgaXQgZ2l2ZXMgMjAlIGltcHJvdmVtZW50IGZvciAyNTYtYml0XG4gIC8vIG11bHRpcGxpY2F0aW9uIChsaWtlIGVsbGlwdGljIHNlY3AyNTZrMSkuXG4gIHZhciBjb21iMTBNdWxUbyA9IGZ1bmN0aW9uIGNvbWIxME11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBhID0gc2VsZi53b3JkcztcbiAgICB2YXIgYiA9IG51bS53b3JkcztcbiAgICB2YXIgbyA9IG91dC53b3JkcztcbiAgICB2YXIgYyA9IDA7XG4gICAgdmFyIGxvO1xuICAgIHZhciBtaWQ7XG4gICAgdmFyIGhpO1xuICAgIHZhciBhMCA9IGFbMF0gfCAwO1xuICAgIHZhciBhbDAgPSBhMCAmIDB4MWZmZjtcbiAgICB2YXIgYWgwID0gYTAgPj4+IDEzO1xuICAgIHZhciBhMSA9IGFbMV0gfCAwO1xuICAgIHZhciBhbDEgPSBhMSAmIDB4MWZmZjtcbiAgICB2YXIgYWgxID0gYTEgPj4+IDEzO1xuICAgIHZhciBhMiA9IGFbMl0gfCAwO1xuICAgIHZhciBhbDIgPSBhMiAmIDB4MWZmZjtcbiAgICB2YXIgYWgyID0gYTIgPj4+IDEzO1xuICAgIHZhciBhMyA9IGFbM10gfCAwO1xuICAgIHZhciBhbDMgPSBhMyAmIDB4MWZmZjtcbiAgICB2YXIgYWgzID0gYTMgPj4+IDEzO1xuICAgIHZhciBhNCA9IGFbNF0gfCAwO1xuICAgIHZhciBhbDQgPSBhNCAmIDB4MWZmZjtcbiAgICB2YXIgYWg0ID0gYTQgPj4+IDEzO1xuICAgIHZhciBhNSA9IGFbNV0gfCAwO1xuICAgIHZhciBhbDUgPSBhNSAmIDB4MWZmZjtcbiAgICB2YXIgYWg1ID0gYTUgPj4+IDEzO1xuICAgIHZhciBhNiA9IGFbNl0gfCAwO1xuICAgIHZhciBhbDYgPSBhNiAmIDB4MWZmZjtcbiAgICB2YXIgYWg2ID0gYTYgPj4+IDEzO1xuICAgIHZhciBhNyA9IGFbN10gfCAwO1xuICAgIHZhciBhbDcgPSBhNyAmIDB4MWZmZjtcbiAgICB2YXIgYWg3ID0gYTcgPj4+IDEzO1xuICAgIHZhciBhOCA9IGFbOF0gfCAwO1xuICAgIHZhciBhbDggPSBhOCAmIDB4MWZmZjtcbiAgICB2YXIgYWg4ID0gYTggPj4+IDEzO1xuICAgIHZhciBhOSA9IGFbOV0gfCAwO1xuICAgIHZhciBhbDkgPSBhOSAmIDB4MWZmZjtcbiAgICB2YXIgYWg5ID0gYTkgPj4+IDEzO1xuICAgIHZhciBiMCA9IGJbMF0gfCAwO1xuICAgIHZhciBibDAgPSBiMCAmIDB4MWZmZjtcbiAgICB2YXIgYmgwID0gYjAgPj4+IDEzO1xuICAgIHZhciBiMSA9IGJbMV0gfCAwO1xuICAgIHZhciBibDEgPSBiMSAmIDB4MWZmZjtcbiAgICB2YXIgYmgxID0gYjEgPj4+IDEzO1xuICAgIHZhciBiMiA9IGJbMl0gfCAwO1xuICAgIHZhciBibDIgPSBiMiAmIDB4MWZmZjtcbiAgICB2YXIgYmgyID0gYjIgPj4+IDEzO1xuICAgIHZhciBiMyA9IGJbM10gfCAwO1xuICAgIHZhciBibDMgPSBiMyAmIDB4MWZmZjtcbiAgICB2YXIgYmgzID0gYjMgPj4+IDEzO1xuICAgIHZhciBiNCA9IGJbNF0gfCAwO1xuICAgIHZhciBibDQgPSBiNCAmIDB4MWZmZjtcbiAgICB2YXIgYmg0ID0gYjQgPj4+IDEzO1xuICAgIHZhciBiNSA9IGJbNV0gfCAwO1xuICAgIHZhciBibDUgPSBiNSAmIDB4MWZmZjtcbiAgICB2YXIgYmg1ID0gYjUgPj4+IDEzO1xuICAgIHZhciBiNiA9IGJbNl0gfCAwO1xuICAgIHZhciBibDYgPSBiNiAmIDB4MWZmZjtcbiAgICB2YXIgYmg2ID0gYjYgPj4+IDEzO1xuICAgIHZhciBiNyA9IGJbN10gfCAwO1xuICAgIHZhciBibDcgPSBiNyAmIDB4MWZmZjtcbiAgICB2YXIgYmg3ID0gYjcgPj4+IDEzO1xuICAgIHZhciBiOCA9IGJbOF0gfCAwO1xuICAgIHZhciBibDggPSBiOCAmIDB4MWZmZjtcbiAgICB2YXIgYmg4ID0gYjggPj4+IDEzO1xuICAgIHZhciBiOSA9IGJbOV0gfCAwO1xuICAgIHZhciBibDkgPSBiOSAmIDB4MWZmZjtcbiAgICB2YXIgYmg5ID0gYjkgPj4+IDEzO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0gc2VsZi5uZWdhdGl2ZSBeIG51bS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gMTk7XG4gICAgLyogayA9IDAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDAsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMCwgYmgwKTtcbiAgICB2YXIgdzAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcwID4+PiAyNikpIHwgMDtcbiAgICB3MCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDEsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDEpKSB8IDA7XG4gICAgdmFyIHcxID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MSA+Pj4gMjYpKSB8IDA7XG4gICAgdzEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwyLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDIsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDIsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMikpIHwgMDtcbiAgICB2YXIgdzIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcyID4+PiAyNikpIHwgMDtcbiAgICB3MiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDMsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMykpIHwgMDtcbiAgICB2YXIgdzMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHczID4+PiAyNikpIHwgMDtcbiAgICB3MyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDQsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDQpKSB8IDA7XG4gICAgdmFyIHc0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NCA+Pj4gMjYpKSB8IDA7XG4gICAgdzQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw1LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDUsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDUsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNSkpIHwgMDtcbiAgICB2YXIgdzUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc1ID4+PiAyNikpIHwgMDtcbiAgICB3NSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDYsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNikpIHwgMDtcbiAgICB2YXIgdzYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc2ID4+PiAyNikpIHwgMDtcbiAgICB3NiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDcsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDcpKSB8IDA7XG4gICAgdmFyIHc3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NyA+Pj4gMjYpKSB8IDA7XG4gICAgdzcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw4LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDgsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDgsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOCkpIHwgMDtcbiAgICB2YXIgdzggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc4ID4+PiAyNikpIHwgMDtcbiAgICB3OCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDkgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzkgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc5ID4+PiAyNikpIHwgMDtcbiAgICB3OSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDEpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTAgPj4+IDI2KSkgfCAwO1xuICAgIHcxMCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDExICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDIpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMSA+Pj4gMjYpKSB8IDA7XG4gICAgdzExICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgzKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwzKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgzKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTIgPj4+IDI2KSkgfCAwO1xuICAgIHcxMiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDQpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEzID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTMgPj4+IDI2KSkgfCAwO1xuICAgIHcxMyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDUpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg2KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw2KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg2KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTUgPj4+IDI2KSkgfCAwO1xuICAgIHcxNSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDcpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTYgPj4+IDI2KSkgfCAwO1xuICAgIHcxNiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDgpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNyA+Pj4gMjYpKSB8IDA7XG4gICAgdzE3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg5KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw5KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg5KTtcbiAgICB2YXIgdzE4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTggPj4+IDI2KSkgfCAwO1xuICAgIHcxOCAmPSAweDNmZmZmZmY7XG4gICAgb1swXSA9IHcwO1xuICAgIG9bMV0gPSB3MTtcbiAgICBvWzJdID0gdzI7XG4gICAgb1szXSA9IHczO1xuICAgIG9bNF0gPSB3NDtcbiAgICBvWzVdID0gdzU7XG4gICAgb1s2XSA9IHc2O1xuICAgIG9bN10gPSB3NztcbiAgICBvWzhdID0gdzg7XG4gICAgb1s5XSA9IHc5O1xuICAgIG9bMTBdID0gdzEwO1xuICAgIG9bMTFdID0gdzExO1xuICAgIG9bMTJdID0gdzEyO1xuICAgIG9bMTNdID0gdzEzO1xuICAgIG9bMTRdID0gdzE0O1xuICAgIG9bMTVdID0gdzE1O1xuICAgIG9bMTZdID0gdzE2O1xuICAgIG9bMTddID0gdzE3O1xuICAgIG9bMThdID0gdzE4O1xuICAgIGlmIChjICE9PSAwKSB7XG4gICAgICBvWzE5XSA9IGM7XG4gICAgICBvdXQubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH07XG5cbiAgLy8gUG9seWZpbGwgY29tYlxuICBpZiAoIU1hdGguaW11bCkge1xuICAgIGNvbWIxME11bFRvID0gc21hbGxNdWxUbztcbiAgfVxuXG4gIGZ1bmN0aW9uIGJpZ011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aDtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgdmFyIGhuY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb3V0Lmxlbmd0aCAtIDE7IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBobmNhcnJ5O1xuICAgICAgaG5jYXJyeSA9IDA7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IGsgLSBqO1xuICAgICAgICB2YXIgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICB2YXIgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHZhciByID0gYSAqIGI7XG5cbiAgICAgICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArICgociAvIDB4NDAwMDAwMCkgfCAwKSkgfCAwO1xuICAgICAgICBsbyA9IChsbyArIHJ3b3JkKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAobG8gPj4+IDI2KSkgfCAwO1xuXG4gICAgICAgIGhuY2FycnkgKz0gbmNhcnJ5ID4+PiAyNjtcbiAgICAgICAgbmNhcnJ5ICY9IDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkO1xuICAgICAgY2FycnkgPSBuY2Fycnk7XG4gICAgICBuY2FycnkgPSBobmNhcnJ5O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgZnVuY3Rpb24ganVtYm9NdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgZmZ0bSA9IG5ldyBGRlRNKCk7XG4gICAgcmV0dXJuIGZmdG0ubXVscChzZWxmLCBudW0sIG91dCk7XG4gIH1cblxuICBCTi5wcm90b3R5cGUubXVsVG8gPSBmdW5jdGlvbiBtdWxUbyAobnVtLCBvdXQpIHtcbiAgICB2YXIgcmVzO1xuICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCArIG51bS5sZW5ndGg7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxMCAmJiBudW0ubGVuZ3RoID09PSAxMCkge1xuICAgICAgcmVzID0gY29tYjEwTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgNjMpIHtcbiAgICAgIHJlcyA9IHNtYWxsTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgMTAyNCkge1xuICAgICAgcmVzID0gYmlnTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvb2xleS1UdWtleSBhbGdvcml0aG0gZm9yIEZGVFxuICAvLyBzbGlnaHRseSByZXZpc2l0ZWQgdG8gcmVseSBvbiBsb29waW5nIGluc3RlYWQgb2YgcmVjdXJzaW9uXG5cbiAgZnVuY3Rpb24gRkZUTSAoeCwgeSkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIEZGVE0ucHJvdG90eXBlLm1ha2VSQlQgPSBmdW5jdGlvbiBtYWtlUkJUIChOKSB7XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGwgPSBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyhOKSAtIDE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHRbaV0gPSB0aGlzLnJldkJpbihpLCBsLCBOKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGJpbmFyeS1yZXZlcnNlZCByZXByZXNlbnRhdGlvbiBvZiBgeGBcbiAgRkZUTS5wcm90b3R5cGUucmV2QmluID0gZnVuY3Rpb24gcmV2QmluICh4LCBsLCBOKSB7XG4gICAgaWYgKHggPT09IDAgfHwgeCA9PT0gTiAtIDEpIHJldHVybiB4O1xuXG4gICAgdmFyIHJiID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgcmIgfD0gKHggJiAxKSA8PCAobCAtIGkgLSAxKTtcbiAgICAgIHggPj49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJiO1xuICB9O1xuXG4gIC8vIFBlcmZvcm1zIFwidHdlZWRsaW5nXCIgcGhhc2UsIHRoZXJlZm9yZSAnZW11bGF0aW5nJ1xuICAvLyBiZWhhdmlvdXIgb2YgdGhlIHJlY3Vyc2l2ZSBhbGdvcml0aG1cbiAgRkZUTS5wcm90b3R5cGUucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUgKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcnR3c1tpXSA9IHJ3c1tyYnRbaV1dO1xuICAgICAgaXR3c1tpXSA9IGl3c1tyYnRbaV1dO1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiB0cmFuc2Zvcm0gKHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOLCByYnQpIHtcbiAgICB0aGlzLnBlcm11dGUocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTik7XG5cbiAgICBmb3IgKHZhciBzID0gMTsgcyA8IE47IHMgPDw9IDEpIHtcbiAgICAgIHZhciBsID0gcyA8PCAxO1xuXG4gICAgICB2YXIgcnR3ZGYgPSBNYXRoLmNvcygyICogTWF0aC5QSSAvIGwpO1xuICAgICAgdmFyIGl0d2RmID0gTWF0aC5zaW4oMiAqIE1hdGguUEkgLyBsKTtcblxuICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBOOyBwICs9IGwpIHtcbiAgICAgICAgdmFyIHJ0d2RmXyA9IHJ0d2RmO1xuICAgICAgICB2YXIgaXR3ZGZfID0gaXR3ZGY7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzOyBqKyspIHtcbiAgICAgICAgICB2YXIgcmUgPSBydHdzW3AgKyBqXTtcbiAgICAgICAgICB2YXIgaWUgPSBpdHdzW3AgKyBqXTtcblxuICAgICAgICAgIHZhciBybyA9IHJ0d3NbcCArIGogKyBzXTtcbiAgICAgICAgICB2YXIgaW8gPSBpdHdzW3AgKyBqICsgc107XG5cbiAgICAgICAgICB2YXIgcnggPSBydHdkZl8gKiBybyAtIGl0d2RmXyAqIGlvO1xuXG4gICAgICAgICAgaW8gPSBydHdkZl8gKiBpbyArIGl0d2RmXyAqIHJvO1xuICAgICAgICAgIHJvID0gcng7XG5cbiAgICAgICAgICBydHdzW3AgKyBqXSA9IHJlICsgcm87XG4gICAgICAgICAgaXR3c1twICsgal0gPSBpZSArIGlvO1xuXG4gICAgICAgICAgcnR3c1twICsgaiArIHNdID0gcmUgLSBybztcbiAgICAgICAgICBpdHdzW3AgKyBqICsgc10gPSBpZSAtIGlvO1xuXG4gICAgICAgICAgLyoganNoaW50IG1heGRlcHRoIDogZmFsc2UgKi9cbiAgICAgICAgICBpZiAoaiAhPT0gbCkge1xuICAgICAgICAgICAgcnggPSBydHdkZiAqIHJ0d2RmXyAtIGl0d2RmICogaXR3ZGZfO1xuXG4gICAgICAgICAgICBpdHdkZl8gPSBydHdkZiAqIGl0d2RmXyArIGl0d2RmICogcnR3ZGZfO1xuICAgICAgICAgICAgcnR3ZGZfID0gcng7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmd1ZXNzTGVuMTNiID0gZnVuY3Rpb24gZ3Vlc3NMZW4xM2IgKG4sIG0pIHtcbiAgICB2YXIgTiA9IE1hdGgubWF4KG0sIG4pIHwgMTtcbiAgICB2YXIgb2RkID0gTiAmIDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoTiA9IE4gLyAyIHwgMDsgTjsgTiA9IE4gPj4+IDEpIHtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICByZXR1cm4gMSA8PCBpICsgMSArIG9kZDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb25qdWdhdGUgPSBmdW5jdGlvbiBjb25qdWdhdGUgKHJ3cywgaXdzLCBOKSB7XG4gICAgaWYgKE4gPD0gMSkgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdCA9IHJ3c1tpXTtcblxuICAgICAgcndzW2ldID0gcndzW04gLSBpIC0gMV07XG4gICAgICByd3NbTiAtIGkgLSAxXSA9IHQ7XG5cbiAgICAgIHQgPSBpd3NbaV07XG5cbiAgICAgIGl3c1tpXSA9IC1pd3NbTiAtIGkgLSAxXTtcbiAgICAgIGl3c1tOIC0gaSAtIDFdID0gLXQ7XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm5vcm1hbGl6ZTEzYiA9IGZ1bmN0aW9uIG5vcm1hbGl6ZTEzYiAod3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHcgPSBNYXRoLnJvdW5kKHdzWzIgKiBpICsgMV0gLyBOKSAqIDB4MjAwMCArXG4gICAgICAgIE1hdGgucm91bmQod3NbMiAqIGldIC8gTikgK1xuICAgICAgICBjYXJyeTtcblxuICAgICAgd3NbaV0gPSB3ICYgMHgzZmZmZmZmO1xuXG4gICAgICBpZiAodyA8IDB4NDAwMDAwMCkge1xuICAgICAgICBjYXJyeSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJyeSA9IHcgLyAweDQwMDAwMDAgfCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB3cztcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb252ZXJ0MTNiID0gZnVuY3Rpb24gY29udmVydDEzYiAod3MsIGxlbiwgcndzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjYXJyeSA9IGNhcnJ5ICsgKHdzW2ldIHwgMCk7XG5cbiAgICAgIHJ3c1syICogaV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgICByd3NbMiAqIGkgKyAxXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICB9XG5cbiAgICAvLyBQYWQgd2l0aCB6ZXJvZXNcbiAgICBmb3IgKGkgPSAyICogbGVuOyBpIDwgTjsgKytpKSB7XG4gICAgICByd3NbaV0gPSAwO1xuICAgIH1cblxuICAgIGFzc2VydChjYXJyeSA9PT0gMCk7XG4gICAgYXNzZXJ0KChjYXJyeSAmIH4weDFmZmYpID09PSAwKTtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5zdHViID0gZnVuY3Rpb24gc3R1YiAoTikge1xuICAgIHZhciBwaCA9IG5ldyBBcnJheShOKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcGhbaV0gPSAwO1xuICAgIH1cblxuICAgIHJldHVybiBwaDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5tdWxwID0gZnVuY3Rpb24gbXVscCAoeCwgeSwgb3V0KSB7XG4gICAgdmFyIE4gPSAyICogdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCwgeS5sZW5ndGgpO1xuXG4gICAgdmFyIHJidCA9IHRoaXMubWFrZVJCVChOKTtcblxuICAgIHZhciBfID0gdGhpcy5zdHViKE4pO1xuXG4gICAgdmFyIHJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgcndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBucndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBucndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbml3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgcm13cyA9IG91dC53b3JkcztcbiAgICBybXdzLmxlbmd0aCA9IE47XG5cbiAgICB0aGlzLmNvbnZlcnQxM2IoeC53b3JkcywgeC5sZW5ndGgsIHJ3cywgTik7XG4gICAgdGhpcy5jb252ZXJ0MTNiKHkud29yZHMsIHkubGVuZ3RoLCBucndzLCBOKTtcblxuICAgIHRoaXMudHJhbnNmb3JtKHJ3cywgXywgcndzdCwgaXdzdCwgTiwgcmJ0KTtcbiAgICB0aGlzLnRyYW5zZm9ybShucndzLCBfLCBucndzdCwgbml3c3QsIE4sIHJidCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdmFyIHJ4ID0gcndzdFtpXSAqIG5yd3N0W2ldIC0gaXdzdFtpXSAqIG5pd3N0W2ldO1xuICAgICAgaXdzdFtpXSA9IHJ3c3RbaV0gKiBuaXdzdFtpXSArIGl3c3RbaV0gKiBucndzdFtpXTtcbiAgICAgIHJ3c3RbaV0gPSByeDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmp1Z2F0ZShyd3N0LCBpd3N0LCBOKTtcbiAgICB0aGlzLnRyYW5zZm9ybShyd3N0LCBpd3N0LCBybXdzLCBfLCBOLCByYnQpO1xuICAgIHRoaXMuY29uanVnYXRlKHJtd3MsIF8sIE4pO1xuICAgIHRoaXMubm9ybWFsaXplMTNiKHJtd3MsIE4pO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0geC5uZWdhdGl2ZSBeIHkubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHgubGVuZ3RoICsgeS5sZW5ndGg7XG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGB0aGlzYCBieSBgbnVtYFxuICBCTi5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiB0aGlzLm11bFRvKG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBlbXBsb3lpbmcgRkZUXG4gIEJOLnByb3RvdHlwZS5tdWxmID0gZnVuY3Rpb24gbXVsZiAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgTXVsdGlwbGljYXRpb25cbiAgQk4ucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKG51bSwgdGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmltdWxuID0gZnVuY3Rpb24gaW11bG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG5cbiAgICAvLyBDYXJyeVxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKiBudW07XG4gICAgICB2YXIgbG8gPSAodyAmIDB4M2ZmZmZmZikgKyAoY2FycnkgJiAweDNmZmZmZmYpO1xuICAgICAgY2FycnkgPj49IDI2O1xuICAgICAgY2FycnkgKz0gKHcgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgIC8vIE5PVEU6IGxvIGlzIDI3Yml0IG1heGltdW1cbiAgICAgIGNhcnJ5ICs9IGxvID4+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm11bG4gPSBmdW5jdGlvbiBtdWxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKG51bSk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLm11bCh0aGlzKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSk7XG4gIH07XG5cbiAgLy8gTWF0aC5wb3coYHRoaXNgLCBgbnVtYClcbiAgQk4ucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAobnVtKSB7XG4gICAgdmFyIHcgPSB0b0JpdEFycmF5KG51bSk7XG4gICAgaWYgKHcubGVuZ3RoID09PSAwKSByZXR1cm4gbmV3IEJOKDEpO1xuXG4gICAgLy8gU2tpcCBsZWFkaW5nIHplcm9lc1xuICAgIHZhciByZXMgPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdy5sZW5ndGg7IGkrKywgcmVzID0gcmVzLnNxcigpKSB7XG4gICAgICBpZiAod1tpXSAhPT0gMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKCsraSA8IHcubGVuZ3RoKSB7XG4gICAgICBmb3IgKHZhciBxID0gcmVzLnNxcigpOyBpIDwgdy5sZW5ndGg7IGkrKywgcSA9IHEuc3FyKCkpIHtcbiAgICAgICAgaWYgKHdbaV0gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHJlcy5tdWwocSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0IGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXNobG4gPSBmdW5jdGlvbiBpdXNobG4gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG4gICAgdmFyIGNhcnJ5TWFzayA9ICgweDNmZmZmZmYgPj4+ICgyNiAtIHIpKSA8PCAoMjYgLSByKTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbmV3Q2FycnkgPSB0aGlzLndvcmRzW2ldICYgY2FycnlNYXNrO1xuICAgICAgICB2YXIgYyA9ICgodGhpcy53b3Jkc1tpXSB8IDApIC0gbmV3Q2FycnkpIDw8IHI7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjIHwgY2Fycnk7XG4gICAgICAgIGNhcnJ5ID0gbmV3Q2FycnkgPj4+ICgyNiAtIHIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2FycnkpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzICE9PSAwKSB7XG4gICAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIHNdID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggKz0gcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hsbiA9IGZ1bmN0aW9uIGlzaGxuIChiaXRzKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodCBpbi1wbGFjZVxuICAvLyBOT1RFOiBgaGludGAgaXMgYSBsb3dlc3QgYml0IGJlZm9yZSB0cmFpbGluZyB6ZXJvZXNcbiAgLy8gTk9URTogaWYgYGV4dGVuZGVkYCBpcyBwcmVzZW50IC0gaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBkZXN0cm95ZWQgYml0c1xuICBCTi5wcm90b3R5cGUuaXVzaHJuID0gZnVuY3Rpb24gaXVzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgaDtcbiAgICBpZiAoaGludCkge1xuICAgICAgaCA9IChoaW50IC0gKGhpbnQgJSAyNikpIC8gMjY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGggPSAwO1xuICAgIH1cblxuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gTWF0aC5taW4oKGJpdHMgLSByKSAvIDI2LCB0aGlzLmxlbmd0aCk7XG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgdmFyIG1hc2tlZFdvcmRzID0gZXh0ZW5kZWQ7XG5cbiAgICBoIC09IHM7XG4gICAgaCA9IE1hdGgubWF4KDAsIGgpO1xuXG4gICAgLy8gRXh0ZW5kZWQgbW9kZSwgY29weSBtYXNrZWQgcGFydFxuICAgIGlmIChtYXNrZWRXb3Jkcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgbWFza2VkV29yZHMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuICAgICAgbWFza2VkV29yZHMubGVuZ3RoID0gcztcbiAgICB9XG5cbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgLy8gTm8tb3AsIHdlIHNob3VsZCBub3QgbW92ZSBhbnl0aGluZyBhdCBhbGxcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gcykge1xuICAgICAgdGhpcy5sZW5ndGggLT0gcztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2kgKyBzXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiAoY2FycnkgIT09IDAgfHwgaSA+PSBoKTsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IChjYXJyeSA8PCAoMjYgLSByKSkgfCAod29yZCA+Pj4gcik7XG4gICAgICBjYXJyeSA9IHdvcmQgJiBtYXNrO1xuICAgIH1cblxuICAgIC8vIFB1c2ggY2FycmllZCBiaXRzIGFzIGEgbWFza1xuICAgIGlmIChtYXNrZWRXb3JkcyAmJiBjYXJyeSAhPT0gMCkge1xuICAgICAgbWFza2VkV29yZHMud29yZHNbbWFza2VkV29yZHMubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hybiA9IGZ1bmN0aW9uIGlzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNocm4oYml0cywgaGludCwgZXh0ZW5kZWQpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnRcbiAgQk4ucHJvdG90eXBlLnNobG4gPSBmdW5jdGlvbiBzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNobG4gPSBmdW5jdGlvbiB1c2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0XG4gIEJOLnByb3RvdHlwZS5zaHJuID0gZnVuY3Rpb24gc2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaHJuID0gZnVuY3Rpb24gdXNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiaXRzKTtcbiAgfTtcblxuICAvLyBUZXN0IGlmIG4gYml0IGlzIHNldFxuICBCTi5wcm90b3R5cGUudGVzdG4gPSBmdW5jdGlvbiB0ZXN0biAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBiaXQgYW5kIHJldHVyblxuICAgIHZhciB3ID0gdGhpcy53b3Jkc1tzXTtcblxuICAgIHJldHVybiAhISh3ICYgcSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyIChpbi1wbGFjZSlcbiAgQk4ucHJvdG90eXBlLmltYXNrbiA9IGZ1bmN0aW9uIGltYXNrbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcblxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAnaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzJyk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHMrKztcbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1pbihzLCB0aGlzLmxlbmd0aCk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gJj0gbWFzaztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlclxuICBCTi5wcm90b3R5cGUubWFza24gPSBmdW5jdGlvbiBtYXNrbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGJpdHMpO1xuICB9O1xuXG4gIC8vIEFkZCBwbGFpbiBudW1iZXIgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pYWRkbiA9IGZ1bmN0aW9uIGlhZGRuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pc3VibigtbnVtKTtcblxuICAgIC8vIFBvc3NpYmxlIHNpZ24gY2hhbmdlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiAodGhpcy53b3Jkc1swXSB8IDApIDwgbnVtKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gPSBudW0gLSAodGhpcy53b3Jkc1swXSB8IDApO1xuICAgICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pc3VibihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aG91dCBjaGVja3NcbiAgICByZXR1cm4gdGhpcy5faWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lhZGRuID0gZnVuY3Rpb24gX2lhZGRuIChudW0pIHtcbiAgICB0aGlzLndvcmRzWzBdICs9IG51bTtcblxuICAgIC8vIENhcnJ5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldID49IDB4NDAwMDAwMDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldIC09IDB4NDAwMDAwMDtcbiAgICAgIGlmIChpID09PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0rKztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSArIDEpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgcGxhaW4gbnVtYmVyIGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pc3VibiA9IGZ1bmN0aW9uIGlzdWJuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pYWRkbigtbnVtKTtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZG4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy53b3Jkc1swXSAtPSBudW07XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA8IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAtdGhpcy53b3Jkc1swXTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDYXJyeVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldIDwgMDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gKz0gMHg0MDAwMDAwO1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSAtPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFkZG4gPSBmdW5jdGlvbiBhZGRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnN1Ym4gPSBmdW5jdGlvbiBzdWJuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhYnMgPSBmdW5jdGlvbiBpYWJzICgpIHtcbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiBhYnMgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFicygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faXNobG5zdWJtdWwgPSBmdW5jdGlvbiBfaXNobG5zdWJtdWwgKG51bSwgbXVsLCBzaGlmdCkge1xuICAgIHZhciBsZW4gPSBudW0ubGVuZ3RoICsgc2hpZnQ7XG4gICAgdmFyIGk7XG5cbiAgICB0aGlzLl9leHBhbmQobGVuKTtcblxuICAgIHZhciB3O1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgdmFyIHJpZ2h0ID0gKG51bS53b3Jkc1tpXSB8IDApICogbXVsO1xuICAgICAgdyAtPSByaWdodCAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gKHcgPj4gMjYpIC0gKChyaWdodCAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBpIDwgdGhpcy5sZW5ndGggLSBzaGlmdDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSA9PT0gMCkgcmV0dXJuIHRoaXMuc3RyaXAoKTtcblxuICAgIC8vIFN1YnRyYWN0aW9uIG92ZXJmbG93XG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAtMSk7XG4gICAgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gLSh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICB0aGlzLm5lZ2F0aXZlID0gMTtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl93b3JkRGl2ID0gZnVuY3Rpb24gX3dvcmREaXYgKG51bSwgbW9kZSkge1xuICAgIHZhciBzaGlmdCA9IHRoaXMubGVuZ3RoIC0gbnVtLmxlbmd0aDtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtO1xuXG4gICAgLy8gTm9ybWFsaXplXG4gICAgdmFyIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgdmFyIGJoaUJpdHMgPSB0aGlzLl9jb3VudEJpdHMoYmhpKTtcbiAgICBzaGlmdCA9IDI2IC0gYmhpQml0cztcbiAgICBpZiAoc2hpZnQgIT09IDApIHtcbiAgICAgIGIgPSBiLnVzaGxuKHNoaWZ0KTtcbiAgICAgIGEuaXVzaGxuKHNoaWZ0KTtcbiAgICAgIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBxdW90aWVudFxuICAgIHZhciBtID0gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAgICB2YXIgcTtcblxuICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgcSA9IG5ldyBCTihudWxsKTtcbiAgICAgIHEubGVuZ3RoID0gbSArIDE7XG4gICAgICBxLndvcmRzID0gbmV3IEFycmF5KHEubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcS5sZW5ndGg7IGkrKykge1xuICAgICAgICBxLndvcmRzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGlmZiA9IGEuY2xvbmUoKS5faXNobG5zdWJtdWwoYiwgMSwgbSk7XG4gICAgaWYgKGRpZmYubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIGEgPSBkaWZmO1xuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1ttXSA9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IG0gLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgdmFyIHFqID0gKGEud29yZHNbYi5sZW5ndGggKyBqXSB8IDApICogMHg0MDAwMDAwICtcbiAgICAgICAgKGEud29yZHNbYi5sZW5ndGggKyBqIC0gMV0gfCAwKTtcblxuICAgICAgLy8gTk9URTogKHFqIC8gYmhpKSBpcyAoMHgzZmZmZmZmICogMHg0MDAwMDAwICsgMHgzZmZmZmZmKSAvIDB4MjAwMDAwMCBtYXhcbiAgICAgIC8vICgweDdmZmZmZmYpXG4gICAgICBxaiA9IE1hdGgubWluKChxaiAvIGJoaSkgfCAwLCAweDNmZmZmZmYpO1xuXG4gICAgICBhLl9pc2hsbnN1Ym11bChiLCBxaiwgaik7XG4gICAgICB3aGlsZSAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBxai0tO1xuICAgICAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgYS5faXNobG5zdWJtdWwoYiwgMSwgaik7XG4gICAgICAgIGlmICghYS5pc1plcm8oKSkge1xuICAgICAgICAgIGEubmVnYXRpdmUgXj0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1tqXSA9IHFqO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocSkge1xuICAgICAgcS5zdHJpcCgpO1xuICAgIH1cbiAgICBhLnN0cmlwKCk7XG5cbiAgICAvLyBEZW5vcm1hbGl6ZVxuICAgIGlmIChtb2RlICE9PSAnZGl2JyAmJiBzaGlmdCAhPT0gMCkge1xuICAgICAgYS5pdXNocm4oc2hpZnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaXY6IHEgfHwgbnVsbCxcbiAgICAgIG1vZDogYVxuICAgIH07XG4gIH07XG5cbiAgLy8gTk9URTogMSkgYG1vZGVgIGNhbiBiZSBzZXQgdG8gYG1vZGAgdG8gcmVxdWVzdCBtb2Qgb25seSxcbiAgLy8gICAgICAgdG8gYGRpdmAgdG8gcmVxdWVzdCBkaXYgb25seSwgb3IgYmUgYWJzZW50IHRvXG4gIC8vICAgICAgIHJlcXVlc3QgYm90aCBkaXYgJiBtb2RcbiAgLy8gICAgICAgMikgYHBvc2l0aXZlYCBpcyB0cnVlIGlmIHVuc2lnbmVkIG1vZCBpcyByZXF1ZXN0ZWRcbiAgQk4ucHJvdG90eXBlLmRpdm1vZCA9IGZ1bmN0aW9uIGRpdm1vZCAobnVtLCBtb2RlLCBwb3NpdGl2ZSkge1xuICAgIGFzc2VydCghbnVtLmlzWmVybygpKTtcblxuICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiBuZXcgQk4oMClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRpdiwgbW9kLCByZXM7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0sIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaWFkZChudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiByZXMubW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICgodGhpcy5uZWdhdGl2ZSAmIG51bS5uZWdhdGl2ZSkgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlzdWIobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHJlcy5kaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmUgYXQgdGhpcyBwb2ludFxuXG4gICAgLy8gU3RyaXAgYm90aCBudW1iZXJzIHRvIGFwcHJveGltYXRlIHNoaWZ0IHZhbHVlXG4gICAgaWYgKG51bS5sZW5ndGggPiB0aGlzLmxlbmd0aCB8fCB0aGlzLmNtcChudW0pIDwgMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogdGhpc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBWZXJ5IHNob3J0IHJlZHVjdGlvblxuICAgIGlmIChudW0ubGVuZ3RoID09PSAxKSB7XG4gICAgICBpZiAobW9kZSA9PT0gJ2RpdicpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICAgIG1vZDogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSA9PT0gJ21vZCcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IG51bGwsXG4gICAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd29yZERpdihudW0sIG1vZGUpO1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgIC8gYG51bWBcbiAgQk4ucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uIGRpdiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ2RpdicsIGZhbHNlKS5kaXY7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgJSBgbnVtYFxuICBCTi5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgZmFsc2UpLm1vZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW1vZCA9IGZ1bmN0aW9uIHVtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCB0cnVlKS5tb2Q7XG4gIH07XG5cbiAgLy8gRmluZCBSb3VuZChgdGhpc2AgLyBgbnVtYClcbiAgQk4ucHJvdG90eXBlLmRpdlJvdW5kID0gZnVuY3Rpb24gZGl2Um91bmQgKG51bSkge1xuICAgIHZhciBkbSA9IHRoaXMuZGl2bW9kKG51bSk7XG5cbiAgICAvLyBGYXN0IGNhc2UgLSBleGFjdCBkaXZpc2lvblxuICAgIGlmIChkbS5tb2QuaXNaZXJvKCkpIHJldHVybiBkbS5kaXY7XG5cbiAgICB2YXIgbW9kID0gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0ubW9kLmlzdWIobnVtKSA6IGRtLm1vZDtcblxuICAgIHZhciBoYWxmID0gbnVtLnVzaHJuKDEpO1xuICAgIHZhciByMiA9IG51bS5hbmRsbigxKTtcbiAgICB2YXIgY21wID0gbW9kLmNtcChoYWxmKTtcblxuICAgIC8vIFJvdW5kIGRvd25cbiAgICBpZiAoY21wIDwgMCB8fCByMiA9PT0gMSAmJiBjbXAgPT09IDApIHJldHVybiBkbS5kaXY7XG5cbiAgICAvLyBSb3VuZCB1cFxuICAgIHJldHVybiBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5kaXYuaXN1Ym4oMSkgOiBkbS5kaXYuaWFkZG4oMSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm1vZG4gPSBmdW5jdGlvbiBtb2RuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG4gICAgdmFyIHAgPSAoMSA8PCAyNikgJSBudW07XG5cbiAgICB2YXIgYWNjID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgYWNjID0gKHAgKiBhY2MgKyAodGhpcy53b3Jkc1tpXSB8IDApKSAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIGRpdmlzaW9uIGJ5IG51bWJlclxuICBCTi5wcm90b3R5cGUuaWRpdm4gPSBmdW5jdGlvbiBpZGl2biAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICsgY2FycnkgKiAweDQwMDAwMDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKHcgLyBudW0pIHwgMDtcbiAgICAgIGNhcnJ5ID0gdyAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5kaXZuID0gZnVuY3Rpb24gZGl2biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lZ2NkID0gZnVuY3Rpb24gZWdjZCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIHggPSB0aGlzO1xuICAgIHZhciB5ID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKHgubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHggPSB4LnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHggPSB4LmNsb25lKCk7XG4gICAgfVxuXG4gICAgLy8gQSAqIHggKyBCICogeSA9IHhcbiAgICB2YXIgQSA9IG5ldyBCTigxKTtcbiAgICB2YXIgQiA9IG5ldyBCTigwKTtcblxuICAgIC8vIEMgKiB4ICsgRCAqIHkgPSB5XG4gICAgdmFyIEMgPSBuZXcgQk4oMCk7XG4gICAgdmFyIEQgPSBuZXcgQk4oMSk7XG5cbiAgICB2YXIgZyA9IDA7XG5cbiAgICB3aGlsZSAoeC5pc0V2ZW4oKSAmJiB5LmlzRXZlbigpKSB7XG4gICAgICB4Lml1c2hybigxKTtcbiAgICAgIHkuaXVzaHJuKDEpO1xuICAgICAgKytnO1xuICAgIH1cblxuICAgIHZhciB5cCA9IHkuY2xvbmUoKTtcbiAgICB2YXIgeHAgPSB4LmNsb25lKCk7XG5cbiAgICB3aGlsZSAoIXguaXNaZXJvKCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7ICh4LndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgeC5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEEuaXNPZGQoKSB8fCBCLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEEuaWFkZCh5cCk7XG4gICAgICAgICAgICBCLmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEEuaXVzaHJuKDEpO1xuICAgICAgICAgIEIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7ICh5LndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgeS5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEMuaXNPZGQoKSB8fCBELmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEMuaWFkZCh5cCk7XG4gICAgICAgICAgICBELmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEMuaXVzaHJuKDEpO1xuICAgICAgICAgIEQuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh4LmNtcCh5KSA+PSAwKSB7XG4gICAgICAgIHguaXN1Yih5KTtcbiAgICAgICAgQS5pc3ViKEMpO1xuICAgICAgICBCLmlzdWIoRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5LmlzdWIoeCk7XG4gICAgICAgIEMuaXN1YihBKTtcbiAgICAgICAgRC5pc3ViKEIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhOiBDLFxuICAgICAgYjogRCxcbiAgICAgIGdjZDogeS5pdXNobG4oZylcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRoaXMgaXMgcmVkdWNlZCBpbmNhcm5hdGlvbiBvZiB0aGUgYmluYXJ5IEVFQVxuICAvLyBhYm92ZSwgZGVzaWduYXRlZCB0byBpbnZlcnQgbWVtYmVycyBvZiB0aGVcbiAgLy8gX3ByaW1lXyBmaWVsZHMgRihwKSBhdCBhIG1heGltYWwgc3BlZWRcbiAgQk4ucHJvdG90eXBlLl9pbnZtcCA9IGZ1bmN0aW9uIF9pbnZtcCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIGEgPSB0aGlzO1xuICAgIHZhciBiID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGEgPSBhLnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICAgIHZhciB4MiA9IG5ldyBCTigwKTtcblxuICAgIHZhciBkZWx0YSA9IGIuY2xvbmUoKTtcblxuICAgIHdoaWxlIChhLmNtcG4oMSkgPiAwICYmIGIuY21wbigxKSA+IDApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7IChhLndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgYS5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgxLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgxLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgxLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoYi53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIGIuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmICh4Mi5pc09kZCgpKSB7XG4gICAgICAgICAgICB4Mi5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4Mi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGEuY21wKGIpID49IDApIHtcbiAgICAgICAgYS5pc3ViKGIpO1xuICAgICAgICB4MS5pc3ViKHgyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGIuaXN1YihhKTtcbiAgICAgICAgeDIuaXN1Yih4MSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlcztcbiAgICBpZiAoYS5jbXBuKDEpID09PSAwKSB7XG4gICAgICByZXMgPSB4MTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0geDI7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQocCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ2NkID0gZnVuY3Rpb24gZ2NkIChudW0pIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIG51bS5hYnMoKTtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gdGhpcy5hYnMoKTtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtLmNsb25lKCk7XG4gICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgYi5uZWdhdGl2ZSA9IDA7XG5cbiAgICAvLyBSZW1vdmUgY29tbW9uIGZhY3RvciBvZiB0d29cbiAgICBmb3IgKHZhciBzaGlmdCA9IDA7IGEuaXNFdmVuKCkgJiYgYi5pc0V2ZW4oKTsgc2hpZnQrKykge1xuICAgICAgYS5pdXNocm4oMSk7XG4gICAgICBiLml1c2hybigxKTtcbiAgICB9XG5cbiAgICBkbyB7XG4gICAgICB3aGlsZSAoYS5pc0V2ZW4oKSkge1xuICAgICAgICBhLml1c2hybigxKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgIGIuaXVzaHJuKDEpO1xuICAgICAgfVxuXG4gICAgICB2YXIgciA9IGEuY21wKGIpO1xuICAgICAgaWYgKHIgPCAwKSB7XG4gICAgICAgIC8vIFN3YXAgYGFgIGFuZCBgYmAgdG8gbWFrZSBgYWAgYWx3YXlzIGJpZ2dlciB0aGFuIGBiYFxuICAgICAgICB2YXIgdCA9IGE7XG4gICAgICAgIGEgPSBiO1xuICAgICAgICBiID0gdDtcbiAgICAgIH0gZWxzZSBpZiAociA9PT0gMCB8fCBiLmNtcG4oMSkgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGEuaXN1YihiKTtcbiAgICB9IHdoaWxlICh0cnVlKTtcblxuICAgIHJldHVybiBiLml1c2hsbihzaGlmdCk7XG4gIH07XG5cbiAgLy8gSW52ZXJ0IG51bWJlciBpbiB0aGUgZmllbGQgRihudW0pXG4gIEJOLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZWdjZChudW0pLmEudW1vZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiBpc0V2ZW4gKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uIGlzT2RkICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMTtcbiAgfTtcblxuICAvLyBBbmQgZmlyc3Qgd29yZCBhbmQgbnVtXG4gIEJOLnByb3RvdHlwZS5hbmRsbiA9IGZ1bmN0aW9uIGFuZGxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkc1swXSAmIG51bTtcbiAgfTtcblxuICAvLyBJbmNyZW1lbnQgYXQgdGhlIGJpdCBwb3NpdGlvbiBpbi1saW5lXG4gIEJOLnByb3RvdHlwZS5iaW5jbiA9IGZ1bmN0aW9uIGJpbmNuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicpO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHRoaXMuX2V4cGFuZChzICsgMSk7XG4gICAgICB0aGlzLndvcmRzW3NdIHw9IHE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgYml0IGFuZCBwcm9wYWdhdGUsIGlmIG5lZWRlZFxuICAgIHZhciBjYXJyeSA9IHE7XG4gICAgZm9yICh2YXIgaSA9IHM7IGNhcnJ5ICE9PSAwICYmIGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdyArPSBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+Pj4gMjY7XG4gICAgICB3ICY9IDB4M2ZmZmZmZjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiBpc1plcm8gKCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbXBuID0gZnVuY3Rpb24gY21wbiAobnVtKSB7XG4gICAgdmFyIG5lZ2F0aXZlID0gbnVtIDwgMDtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmICFuZWdhdGl2ZSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG5lZ2F0aXZlKSByZXR1cm4gMTtcblxuICAgIHRoaXMuc3RyaXAoKTtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gMSkge1xuICAgICAgcmVzID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5lZ2F0aXZlKSB7XG4gICAgICAgIG51bSA9IC1udW07XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmLCAnTnVtYmVyIGlzIHRvbyBiaWcnKTtcblxuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzWzBdIHwgMDtcbiAgICAgIHJlcyA9IHcgPT09IG51bSA/IDAgOiB3IDwgbnVtID8gLTEgOiAxO1xuICAgIH1cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29tcGFyZSB0d28gbnVtYmVycyBhbmQgcmV0dXJuOlxuICAvLyAxIC0gaWYgYHRoaXNgID4gYG51bWBcbiAgLy8gMCAtIGlmIGB0aGlzYCA9PSBgbnVtYFxuICAvLyAtMSAtIGlmIGB0aGlzYCA8IGBudW1gXG4gIEJOLnByb3RvdHlwZS5jbXAgPSBmdW5jdGlvbiBjbXAgKG51bSkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIDE7XG5cbiAgICB2YXIgcmVzID0gdGhpcy51Y21wKG51bSk7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFVuc2lnbmVkIGNvbXBhcmlzb25cbiAgQk4ucHJvdG90eXBlLnVjbXAgPSBmdW5jdGlvbiB1Y21wIChudW0pIHtcbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBoYXZlIHRoZSBzYW1lIHNpZ25cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSByZXR1cm4gLTE7XG5cbiAgICB2YXIgcmVzID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGEgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHZhciBiID0gbnVtLndvcmRzW2ldIHwgMDtcblxuICAgICAgaWYgKGEgPT09IGIpIGNvbnRpbnVlO1xuICAgICAgaWYgKGEgPCBiKSB7XG4gICAgICAgIHJlcyA9IC0xO1xuICAgICAgfSBlbHNlIGlmIChhID4gYikge1xuICAgICAgICByZXMgPSAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0biA9IGZ1bmN0aW9uIGd0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndCA9IGZ1bmN0aW9uIGd0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlbiA9IGZ1bmN0aW9uIGd0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGUgPSBmdW5jdGlvbiBndGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0biA9IGZ1bmN0aW9uIGx0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHQgPSBmdW5jdGlvbiBsdCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGVuID0gZnVuY3Rpb24gbHRlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZSA9IGZ1bmN0aW9uIGx0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXFuID0gZnVuY3Rpb24gZXFuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAwO1xuICB9O1xuXG4gIC8vXG4gIC8vIEEgcmVkdWNlIGNvbnRleHQsIGNvdWxkIGJlIHVzaW5nIG1vbnRnb21lcnkgb3Igc29tZXRoaW5nIGJldHRlciwgZGVwZW5kaW5nXG4gIC8vIG9uIHRoZSBgbWAgaXRzZWxmLlxuICAvL1xuICBCTi5yZWQgPSBmdW5jdGlvbiByZWQgKG51bSkge1xuICAgIHJldHVybiBuZXcgUmVkKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvUmVkID0gZnVuY3Rpb24gdG9SZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIHJldHVybiBjdHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tUmVkID0gZnVuY3Rpb24gZnJvbVJlZCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAnZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2ZvcmNlUmVkID0gZnVuY3Rpb24gX2ZvcmNlUmVkIChjdHgpIHtcbiAgICB0aGlzLnJlZCA9IGN0eDtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZm9yY2VSZWQgPSBmdW5jdGlvbiBmb3JjZVJlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkQWRkID0gZnVuY3Rpb24gcmVkQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJQWRkID0gZnVuY3Rpb24gcmVkSUFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaWFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTdWIgPSBmdW5jdGlvbiByZWRTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTdWIgPSBmdW5jdGlvbiByZWRJU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNobCA9IGZ1bmN0aW9uIHJlZFNobCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zaGwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkTXVsID0gZnVuY3Rpb24gcmVkTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElNdWwgPSBmdW5jdGlvbiByZWRJTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTcXIgPSBmdW5jdGlvbiByZWRTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FyKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3FyID0gZnVuY3Rpb24gcmVkSVNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXNxcih0aGlzKTtcbiAgfTtcblxuICAvLyBTcXVhcmUgcm9vdCBvdmVyIHBcbiAgQk4ucHJvdG90eXBlLnJlZFNxcnQgPSBmdW5jdGlvbiByZWRTcXJ0ICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXJ0KHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJbnZtID0gZnVuY3Rpb24gcmVkSW52bSAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW52bSh0aGlzKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgICUgYHJlZCBtb2R1bG9gXG4gIEJOLnByb3RvdHlwZS5yZWROZWcgPSBmdW5jdGlvbiByZWROZWcgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubmVnKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRQb3cgPSBmdW5jdGlvbiByZWRQb3cgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCAmJiAhbnVtLnJlZCwgJ3JlZFBvdyhub3JtYWxOdW0pJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnBvdyh0aGlzLCBudW0pO1xuICB9O1xuXG4gIC8vIFByaW1lIG51bWJlcnMgd2l0aCBlZmZpY2llbnQgcmVkdWN0aW9uXG4gIHZhciBwcmltZXMgPSB7XG4gICAgazI1NjogbnVsbCxcbiAgICBwMjI0OiBudWxsLFxuICAgIHAxOTI6IG51bGwsXG4gICAgcDI1NTE5OiBudWxsXG4gIH07XG5cbiAgLy8gUHNldWRvLU1lcnNlbm5lIHByaW1lXG4gIGZ1bmN0aW9uIE1QcmltZSAobmFtZSwgcCkge1xuICAgIC8vIFAgPSAyIF4gTiAtIEtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMucCA9IG5ldyBCTihwLCAxNik7XG4gICAgdGhpcy5uID0gdGhpcy5wLmJpdExlbmd0aCgpO1xuICAgIHRoaXMuayA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCk7XG5cbiAgICB0aGlzLnRtcCA9IHRoaXMuX3RtcCgpO1xuICB9XG5cbiAgTVByaW1lLnByb3RvdHlwZS5fdG1wID0gZnVuY3Rpb24gX3RtcCAoKSB7XG4gICAgdmFyIHRtcCA9IG5ldyBCTihudWxsKTtcbiAgICB0bXAud29yZHMgPSBuZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubiAvIDEzKSk7XG4gICAgcmV0dXJuIHRtcDtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmlyZWR1Y2UgPSBmdW5jdGlvbiBpcmVkdWNlIChudW0pIHtcbiAgICAvLyBBc3N1bWVzIHRoYXQgYG51bWAgaXMgbGVzcyB0aGFuIGBQXjJgXG4gICAgLy8gbnVtID0gSEkgKiAoMiBeIE4gLSBLKSArIEhJICogSyArIExPID0gSEkgKiBLICsgTE8gKG1vZCBQKVxuICAgIHZhciByID0gbnVtO1xuICAgIHZhciBybGVuO1xuXG4gICAgZG8ge1xuICAgICAgdGhpcy5zcGxpdChyLCB0aGlzLnRtcCk7XG4gICAgICByID0gdGhpcy5pbXVsSyhyKTtcbiAgICAgIHIgPSByLmlhZGQodGhpcy50bXApO1xuICAgICAgcmxlbiA9IHIuYml0TGVuZ3RoKCk7XG4gICAgfSB3aGlsZSAocmxlbiA+IHRoaXMubik7XG5cbiAgICB2YXIgY21wID0gcmxlbiA8IHRoaXMubiA/IC0xIDogci51Y21wKHRoaXMucCk7XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgci53b3Jkc1swXSA9IDA7XG4gICAgICByLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgICByLmlzdWIodGhpcy5wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHIuc3RyaXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyByIGlzIEJOIHY0IGluc3RhbmNlXG4gICAgICAgIHIuc3RyaXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHIgaXMgQk4gdjUgaW5zdGFuY2VcbiAgICAgICAgci5fc3RyaXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwiJ3VzZSBzdHJpY3QnXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgTUQ1ID0gcmVxdWlyZSgnbWQ1LmpzJylcbnZhciBSSVBFTUQxNjAgPSByZXF1aXJlKCdyaXBlbWQxNjAnKVxudmFyIHNoYSA9IHJlcXVpcmUoJ3NoYS5qcycpXG52YXIgQmFzZSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcblxuZnVuY3Rpb24gSGFzaCAoaGFzaCkge1xuICBCYXNlLmNhbGwodGhpcywgJ2RpZ2VzdCcpXG5cbiAgdGhpcy5faGFzaCA9IGhhc2hcbn1cblxuaW5oZXJpdHMoSGFzaCwgQmFzZSlcblxuSGFzaC5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG59XG5cbkhhc2gucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX2hhc2guZGlnZXN0KClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVIYXNoIChhbGcpIHtcbiAgYWxnID0gYWxnLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFsZyA9PT0gJ21kNScpIHJldHVybiBuZXcgTUQ1KClcbiAgaWYgKGFsZyA9PT0gJ3JtZDE2MCcgfHwgYWxnID09PSAncmlwZW1kMTYwJykgcmV0dXJuIG5ldyBSSVBFTUQxNjAoKVxuXG4gIHJldHVybiBuZXcgSGFzaChzaGEoYWxnKSlcbn1cbiIsInZhciBNRDUgPSByZXF1aXJlKCdtZDUuanMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChidWZmZXIpIHtcbiAgcmV0dXJuIG5ldyBNRDUoKS51cGRhdGUoYnVmZmVyKS5kaWdlc3QoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgTGVnYWN5ID0gcmVxdWlyZSgnLi9sZWdhY3knKVxudmFyIEJhc2UgPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBtZDUgPSByZXF1aXJlKCdjcmVhdGUtaGFzaC9tZDUnKVxudmFyIFJJUEVNRDE2MCA9IHJlcXVpcmUoJ3JpcGVtZDE2MCcpXG5cbnZhciBzaGEgPSByZXF1aXJlKCdzaGEuanMnKVxuXG52YXIgWkVST1MgPSBCdWZmZXIuYWxsb2MoMTI4KVxuXG5mdW5jdGlvbiBIbWFjIChhbGcsIGtleSkge1xuICBCYXNlLmNhbGwodGhpcywgJ2RpZ2VzdCcpXG4gIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykge1xuICAgIGtleSA9IEJ1ZmZlci5mcm9tKGtleSlcbiAgfVxuXG4gIHZhciBibG9ja3NpemUgPSAoYWxnID09PSAnc2hhNTEyJyB8fCBhbGcgPT09ICdzaGEzODQnKSA/IDEyOCA6IDY0XG5cbiAgdGhpcy5fYWxnID0gYWxnXG4gIHRoaXMuX2tleSA9IGtleVxuICBpZiAoa2V5Lmxlbmd0aCA+IGJsb2Nrc2l6ZSkge1xuICAgIHZhciBoYXNoID0gYWxnID09PSAncm1kMTYwJyA/IG5ldyBSSVBFTUQxNjAoKSA6IHNoYShhbGcpXG4gICAga2V5ID0gaGFzaC51cGRhdGUoa2V5KS5kaWdlc3QoKVxuICB9IGVsc2UgaWYgKGtleS5sZW5ndGggPCBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBCdWZmZXIuY29uY2F0KFtrZXksIFpFUk9TXSwgYmxvY2tzaXplKVxuICB9XG5cbiAgdmFyIGlwYWQgPSB0aGlzLl9pcGFkID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2Nrc2l6ZSlcbiAgdmFyIG9wYWQgPSB0aGlzLl9vcGFkID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2Nrc2l6ZSlcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGJsb2Nrc2l6ZTsgaSsrKSB7XG4gICAgaXBhZFtpXSA9IGtleVtpXSBeIDB4MzZcbiAgICBvcGFkW2ldID0ga2V5W2ldIF4gMHg1Q1xuICB9XG4gIHRoaXMuX2hhc2ggPSBhbGcgPT09ICdybWQxNjAnID8gbmV3IFJJUEVNRDE2MCgpIDogc2hhKGFsZylcbiAgdGhpcy5faGFzaC51cGRhdGUoaXBhZClcbn1cblxuaW5oZXJpdHMoSG1hYywgQmFzZSlcblxuSG1hYy5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG59XG5cbkhtYWMucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGggPSB0aGlzLl9oYXNoLmRpZ2VzdCgpXG4gIHZhciBoYXNoID0gdGhpcy5fYWxnID09PSAncm1kMTYwJyA/IG5ldyBSSVBFTUQxNjAoKSA6IHNoYSh0aGlzLl9hbGcpXG4gIHJldHVybiBoYXNoLnVwZGF0ZSh0aGlzLl9vcGFkKS51cGRhdGUoaCkuZGlnZXN0KClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVIbWFjIChhbGcsIGtleSkge1xuICBhbGcgPSBhbGcudG9Mb3dlckNhc2UoKVxuICBpZiAoYWxnID09PSAncm1kMTYwJyB8fCBhbGcgPT09ICdyaXBlbWQxNjAnKSB7XG4gICAgcmV0dXJuIG5ldyBIbWFjKCdybWQxNjAnLCBrZXkpXG4gIH1cbiAgaWYgKGFsZyA9PT0gJ21kNScpIHtcbiAgICByZXR1cm4gbmV3IExlZ2FjeShtZDUsIGtleSlcbiAgfVxuICByZXR1cm4gbmV3IEhtYWMoYWxnLCBrZXkpXG59XG4iLCIndXNlIHN0cmljdCdcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgQmFzZSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcblxudmFyIFpFUk9TID0gQnVmZmVyLmFsbG9jKDEyOClcbnZhciBibG9ja3NpemUgPSA2NFxuXG5mdW5jdGlvbiBIbWFjIChhbGcsIGtleSkge1xuICBCYXNlLmNhbGwodGhpcywgJ2RpZ2VzdCcpXG4gIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykge1xuICAgIGtleSA9IEJ1ZmZlci5mcm9tKGtleSlcbiAgfVxuXG4gIHRoaXMuX2FsZyA9IGFsZ1xuICB0aGlzLl9rZXkgPSBrZXlcblxuICBpZiAoa2V5Lmxlbmd0aCA+IGJsb2Nrc2l6ZSkge1xuICAgIGtleSA9IGFsZyhrZXkpXG4gIH0gZWxzZSBpZiAoa2V5Lmxlbmd0aCA8IGJsb2Nrc2l6ZSkge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwgWkVST1NdLCBibG9ja3NpemUpXG4gIH1cblxuICB2YXIgaXBhZCA9IHRoaXMuX2lwYWQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYmxvY2tzaXplKVxuICB2YXIgb3BhZCA9IHRoaXMuX29wYWQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYmxvY2tzaXplKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tzaXplOyBpKyspIHtcbiAgICBpcGFkW2ldID0ga2V5W2ldIF4gMHgzNlxuICAgIG9wYWRbaV0gPSBrZXlbaV0gXiAweDVDXG4gIH1cblxuICB0aGlzLl9oYXNoID0gW2lwYWRdXG59XG5cbmluaGVyaXRzKEhtYWMsIEJhc2UpXG5cbkhtYWMucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9oYXNoLnB1c2goZGF0YSlcbn1cblxuSG1hYy5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaCA9IHRoaXMuX2FsZyhCdWZmZXIuY29uY2F0KHRoaXMuX2hhc2gpKVxuICByZXR1cm4gdGhpcy5fYWxnKEJ1ZmZlci5jb25jYXQoW3RoaXMuX29wYWQsIGhdKSlcbn1cbm1vZHVsZS5leHBvcnRzID0gSG1hY1xuIiwiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydHMucmFuZG9tQnl0ZXMgPSBleHBvcnRzLnJuZyA9IGV4cG9ydHMucHNldWRvUmFuZG9tQnl0ZXMgPSBleHBvcnRzLnBybmcgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpXG5leHBvcnRzLmNyZWF0ZUhhc2ggPSBleHBvcnRzLkhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpXG5leHBvcnRzLmNyZWF0ZUhtYWMgPSBleHBvcnRzLkhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG5cbnZhciBhbGdvcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktc2lnbi9hbGdvcycpXG52YXIgYWxnb0tleXMgPSBPYmplY3Qua2V5cyhhbGdvcylcbnZhciBoYXNoZXMgPSBbJ3NoYTEnLCAnc2hhMjI0JywgJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJywgJ21kNScsICdybWQxNjAnXS5jb25jYXQoYWxnb0tleXMpXG5leHBvcnRzLmdldEhhc2hlcyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGhhc2hlc1xufVxuXG52YXIgcCA9IHJlcXVpcmUoJ3Bia2RmMicpXG5leHBvcnRzLnBia2RmMiA9IHAucGJrZGYyXG5leHBvcnRzLnBia2RmMlN5bmMgPSBwLnBia2RmMlN5bmNcblxudmFyIGFlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktY2lwaGVyJylcblxuZXhwb3J0cy5DaXBoZXIgPSBhZXMuQ2lwaGVyXG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGFlcy5jcmVhdGVDaXBoZXJcbmV4cG9ydHMuQ2lwaGVyaXYgPSBhZXMuQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyaXYgPSBhZXMuY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuRGVjaXBoZXIgPSBhZXMuRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBhZXMuY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuRGVjaXBoZXJpdiA9IGFlcy5EZWNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyaXYgPSBhZXMuY3JlYXRlRGVjaXBoZXJpdlxuZXhwb3J0cy5nZXRDaXBoZXJzID0gYWVzLmdldENpcGhlcnNcbmV4cG9ydHMubGlzdENpcGhlcnMgPSBhZXMubGlzdENpcGhlcnNcblxudmFyIGRoID0gcmVxdWlyZSgnZGlmZmllLWhlbGxtYW4nKVxuXG5leHBvcnRzLkRpZmZpZUhlbGxtYW5Hcm91cCA9IGRoLkRpZmZpZUhlbGxtYW5Hcm91cFxuZXhwb3J0cy5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXAgPSBkaC5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXBcbmV4cG9ydHMuZ2V0RGlmZmllSGVsbG1hbiA9IGRoLmdldERpZmZpZUhlbGxtYW5cbmV4cG9ydHMuY3JlYXRlRGlmZmllSGVsbG1hbiA9IGRoLmNyZWF0ZURpZmZpZUhlbGxtYW5cbmV4cG9ydHMuRGlmZmllSGVsbG1hbiA9IGRoLkRpZmZpZUhlbGxtYW5cblxudmFyIHNpZ24gPSByZXF1aXJlKCdicm93c2VyaWZ5LXNpZ24nKVxuXG5leHBvcnRzLmNyZWF0ZVNpZ24gPSBzaWduLmNyZWF0ZVNpZ25cbmV4cG9ydHMuU2lnbiA9IHNpZ24uU2lnblxuZXhwb3J0cy5jcmVhdGVWZXJpZnkgPSBzaWduLmNyZWF0ZVZlcmlmeVxuZXhwb3J0cy5WZXJpZnkgPSBzaWduLlZlcmlmeVxuXG5leHBvcnRzLmNyZWF0ZUVDREggPSByZXF1aXJlKCdjcmVhdGUtZWNkaCcpXG5cbnZhciBwdWJsaWNFbmNyeXB0ID0gcmVxdWlyZSgncHVibGljLWVuY3J5cHQnKVxuXG5leHBvcnRzLnB1YmxpY0VuY3J5cHQgPSBwdWJsaWNFbmNyeXB0LnB1YmxpY0VuY3J5cHRcbmV4cG9ydHMucHJpdmF0ZUVuY3J5cHQgPSBwdWJsaWNFbmNyeXB0LnByaXZhdGVFbmNyeXB0XG5leHBvcnRzLnB1YmxpY0RlY3J5cHQgPSBwdWJsaWNFbmNyeXB0LnB1YmxpY0RlY3J5cHRcbmV4cG9ydHMucHJpdmF0ZURlY3J5cHQgPSBwdWJsaWNFbmNyeXB0LnByaXZhdGVEZWNyeXB0XG5cbi8vIHRoZSBsZWFzdCBJIGNhbiBkbyBpcyBtYWtlIGVycm9yIG1lc3NhZ2VzIGZvciB0aGUgcmVzdCBvZiB0aGUgbm9kZS5qcy9jcnlwdG8gYXBpLlxuLy8gO1tcbi8vICAgJ2NyZWF0ZUNyZWRlbnRpYWxzJ1xuLy8gXS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4vLyAgIGV4cG9ydHNbbmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4vLyAgICAgdGhyb3cgbmV3IEVycm9yKFtcbi8vICAgICAgICdzb3JyeSwgJyArIG5hbWUgKyAnIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQnLFxuLy8gICAgICAgJ3dlIGFjY2VwdCBwdWxsIHJlcXVlc3RzJyxcbi8vICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vY3J5cHRvLWJyb3dzZXJpZnkvY3J5cHRvLWJyb3dzZXJpZnknXG4vLyAgICAgXS5qb2luKCdcXG4nKSlcbi8vICAgfVxuLy8gfSlcblxudmFyIHJmID0gcmVxdWlyZSgncmFuZG9tZmlsbCcpXG5cbmV4cG9ydHMucmFuZG9tRmlsbCA9IHJmLnJhbmRvbUZpbGxcbmV4cG9ydHMucmFuZG9tRmlsbFN5bmMgPSByZi5yYW5kb21GaWxsU3luY1xuXG5leHBvcnRzLmNyZWF0ZUNyZWRlbnRpYWxzID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoW1xuICAgICdzb3JyeSwgY3JlYXRlQ3JlZGVudGlhbHMgaXMgbm90IGltcGxlbWVudGVkIHlldCcsXG4gICAgJ3dlIGFjY2VwdCBwdWxsIHJlcXVlc3RzJyxcbiAgICAnaHR0cHM6Ly9naXRodWIuY29tL2NyeXB0by1icm93c2VyaWZ5L2NyeXB0by1icm93c2VyaWZ5J1xuICBdLmpvaW4oJ1xcbicpKVxufVxuXG5leHBvcnRzLmNvbnN0YW50cyA9IHtcbiAgJ0RIX0NIRUNLX1BfTk9UX1NBRkVfUFJJTUUnOiAyLFxuICAnREhfQ0hFQ0tfUF9OT1RfUFJJTUUnOiAxLFxuICAnREhfVU5BQkxFX1RPX0NIRUNLX0dFTkVSQVRPUic6IDQsXG4gICdESF9OT1RfU1VJVEFCTEVfR0VORVJBVE9SJzogOCxcbiAgJ05QTl9FTkFCTEVEJzogMSxcbiAgJ0FMUE5fRU5BQkxFRCc6IDEsXG4gICdSU0FfUEtDUzFfUEFERElORyc6IDEsXG4gICdSU0FfU1NMVjIzX1BBRERJTkcnOiAyLFxuICAnUlNBX05PX1BBRERJTkcnOiAzLFxuICAnUlNBX1BLQ1MxX09BRVBfUEFERElORyc6IDQsXG4gICdSU0FfWDkzMV9QQURESU5HJzogNSxcbiAgJ1JTQV9QS0NTMV9QU1NfUEFERElORyc6IDYsXG4gICdQT0lOVF9DT05WRVJTSU9OX0NPTVBSRVNTRUQnOiAyLFxuICAnUE9JTlRfQ09OVkVSU0lPTl9VTkNPTVBSRVNTRUQnOiA0LFxuICAnUE9JTlRfQ09OVkVSU0lPTl9IWUJSSUQnOiA2XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBrZXlzID0gcmVxdWlyZSgnb2JqZWN0LWtleXMnKTtcbnZhciBoYXNTeW1ib2xzID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgU3ltYm9sKCdmb28nKSA9PT0gJ3N5bWJvbCc7XG5cbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgY29uY2F0ID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdDtcbnZhciBvcmlnRGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbnZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gKGZuKSB7XG5cdHJldHVybiB0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicgJiYgdG9TdHIuY2FsbChmbikgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG59O1xuXG52YXIgYXJlUHJvcGVydHlEZXNjcmlwdG9yc1N1cHBvcnRlZCA9IGZ1bmN0aW9uICgpIHtcblx0dmFyIG9iaiA9IHt9O1xuXHR0cnkge1xuXHRcdG9yaWdEZWZpbmVQcm9wZXJ0eShvYmosICd4JywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IG9iaiB9KTtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG5cdFx0Zm9yICh2YXIgXyBpbiBvYmopIHsgLy8ganNjczppZ25vcmUgZGlzYWxsb3dVbnVzZWRWYXJpYWJsZXNcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIG9iai54ID09PSBvYmo7XG5cdH0gY2F0Y2ggKGUpIHsgLyogdGhpcyBpcyBJRSA4LiAqL1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufTtcbnZhciBzdXBwb3J0c0Rlc2NyaXB0b3JzID0gb3JpZ0RlZmluZVByb3BlcnR5ICYmIGFyZVByb3BlcnR5RGVzY3JpcHRvcnNTdXBwb3J0ZWQoKTtcblxudmFyIGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZSwgdmFsdWUsIHByZWRpY2F0ZSkge1xuXHRpZiAobmFtZSBpbiBvYmplY3QgJiYgKCFpc0Z1bmN0aW9uKHByZWRpY2F0ZSkgfHwgIXByZWRpY2F0ZSgpKSkge1xuXHRcdHJldHVybjtcblx0fVxuXHRpZiAoc3VwcG9ydHNEZXNjcmlwdG9ycykge1xuXHRcdG9yaWdEZWZpbmVQcm9wZXJ0eShvYmplY3QsIG5hbWUsIHtcblx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdGVudW1lcmFibGU6IGZhbHNlLFxuXHRcdFx0dmFsdWU6IHZhbHVlLFxuXHRcdFx0d3JpdGFibGU6IHRydWVcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRvYmplY3RbbmFtZV0gPSB2YWx1ZTtcblx0fVxufTtcblxudmFyIGRlZmluZVByb3BlcnRpZXMgPSBmdW5jdGlvbiAob2JqZWN0LCBtYXApIHtcblx0dmFyIHByZWRpY2F0ZXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHt9O1xuXHR2YXIgcHJvcHMgPSBrZXlzKG1hcCk7XG5cdGlmIChoYXNTeW1ib2xzKSB7XG5cdFx0cHJvcHMgPSBjb25jYXQuY2FsbChwcm9wcywgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhtYXApKTtcblx0fVxuXHRmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSArPSAxKSB7XG5cdFx0ZGVmaW5lUHJvcGVydHkob2JqZWN0LCBwcm9wc1tpXSwgbWFwW3Byb3BzW2ldXSwgcHJlZGljYXRlc1twcm9wc1tpXV0pO1xuXHR9XG59O1xuXG5kZWZpbmVQcm9wZXJ0aWVzLnN1cHBvcnRzRGVzY3JpcHRvcnMgPSAhIXN1cHBvcnRzRGVzY3JpcHRvcnM7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmaW5lUHJvcGVydGllcztcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy51dGlscyA9IHJlcXVpcmUoJy4vZGVzL3V0aWxzJyk7XG5leHBvcnRzLkNpcGhlciA9IHJlcXVpcmUoJy4vZGVzL2NpcGhlcicpO1xuZXhwb3J0cy5ERVMgPSByZXF1aXJlKCcuL2Rlcy9kZXMnKTtcbmV4cG9ydHMuQ0JDID0gcmVxdWlyZSgnLi9kZXMvY2JjJyk7XG5leHBvcnRzLkVERSA9IHJlcXVpcmUoJy4vZGVzL2VkZScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIHByb3RvID0ge307XG5cbmZ1bmN0aW9uIENCQ1N0YXRlKGl2KSB7XG4gIGFzc2VydC5lcXVhbChpdi5sZW5ndGgsIDgsICdJbnZhbGlkIElWIGxlbmd0aCcpO1xuXG4gIHRoaXMuaXYgPSBuZXcgQXJyYXkoOCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5pdi5sZW5ndGg7IGkrKylcbiAgICB0aGlzLml2W2ldID0gaXZbaV07XG59XG5cbmZ1bmN0aW9uIGluc3RhbnRpYXRlKEJhc2UpIHtcbiAgZnVuY3Rpb24gQ0JDKG9wdGlvbnMpIHtcbiAgICBCYXNlLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gICAgdGhpcy5fY2JjSW5pdCgpO1xuICB9XG4gIGluaGVyaXRzKENCQywgQmFzZSk7XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhwcm90byk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIENCQy5wcm90b3R5cGVba2V5XSA9IHByb3RvW2tleV07XG4gIH1cblxuICBDQkMuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IENCQyhvcHRpb25zKTtcbiAgfTtcblxuICByZXR1cm4gQ0JDO1xufVxuXG5leHBvcnRzLmluc3RhbnRpYXRlID0gaW5zdGFudGlhdGU7XG5cbnByb3RvLl9jYmNJbml0ID0gZnVuY3Rpb24gX2NiY0luaXQoKSB7XG4gIHZhciBzdGF0ZSA9IG5ldyBDQkNTdGF0ZSh0aGlzLm9wdGlvbnMuaXYpO1xuICB0aGlzLl9jYmNTdGF0ZSA9IHN0YXRlO1xufTtcblxucHJvdG8uX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUoaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fY2JjU3RhdGU7XG4gIHZhciBzdXBlclByb3RvID0gdGhpcy5jb25zdHJ1Y3Rvci5zdXBlcl8ucHJvdG90eXBlO1xuXG4gIHZhciBpdiA9IHN0YXRlLml2O1xuICBpZiAodGhpcy50eXBlID09PSAnZW5jcnlwdCcpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBpdltpXSBePSBpbnBbaW5PZmYgKyBpXTtcblxuICAgIHN1cGVyUHJvdG8uX3VwZGF0ZS5jYWxsKHRoaXMsIGl2LCAwLCBvdXQsIG91dE9mZik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBpdltpXSA9IG91dFtvdXRPZmYgKyBpXTtcbiAgfSBlbHNlIHtcbiAgICBzdXBlclByb3RvLl91cGRhdGUuY2FsbCh0aGlzLCBpbnAsIGluT2ZmLCBvdXQsIG91dE9mZik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBvdXRbb3V0T2ZmICsgaV0gXj0gaXZbaV07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBpdltpXSA9IGlucFtpbk9mZiArIGldO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG5mdW5jdGlvbiBDaXBoZXIob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gIHRoaXMudHlwZSA9IHRoaXMub3B0aW9ucy50eXBlO1xuICB0aGlzLmJsb2NrU2l6ZSA9IDg7XG4gIHRoaXMuX2luaXQoKTtcblxuICB0aGlzLmJ1ZmZlciA9IG5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7XG4gIHRoaXMuYnVmZmVyT2ZmID0gMDtcbn1cbm1vZHVsZS5leHBvcnRzID0gQ2lwaGVyO1xuXG5DaXBoZXIucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gX2luaXQoKSB7XG4gIC8vIE1pZ2h0IGJlIG92ZXJyaWRlZFxufTtcblxuQ2lwaGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUoZGF0YSkge1xuICBpZiAoZGF0YS5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIFtdO1xuXG4gIGlmICh0aGlzLnR5cGUgPT09ICdkZWNyeXB0JylcbiAgICByZXR1cm4gdGhpcy5fdXBkYXRlRGVjcnlwdChkYXRhKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl91cGRhdGVFbmNyeXB0KGRhdGEpO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fYnVmZmVyID0gZnVuY3Rpb24gX2J1ZmZlcihkYXRhLCBvZmYpIHtcbiAgLy8gQXBwZW5kIGRhdGEgdG8gYnVmZmVyXG4gIHZhciBtaW4gPSBNYXRoLm1pbih0aGlzLmJ1ZmZlci5sZW5ndGggLSB0aGlzLmJ1ZmZlck9mZiwgZGF0YS5sZW5ndGggLSBvZmYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1pbjsgaSsrKVxuICAgIHRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmICsgaV0gPSBkYXRhW29mZiArIGldO1xuICB0aGlzLmJ1ZmZlck9mZiArPSBtaW47XG5cbiAgLy8gU2hpZnQgbmV4dFxuICByZXR1cm4gbWluO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fZmx1c2hCdWZmZXIgPSBmdW5jdGlvbiBfZmx1c2hCdWZmZXIob3V0LCBvZmYpIHtcbiAgdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLCAwLCBvdXQsIG9mZik7XG4gIHRoaXMuYnVmZmVyT2ZmID0gMDtcbiAgcmV0dXJuIHRoaXMuYmxvY2tTaXplO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlRW5jcnlwdCA9IGZ1bmN0aW9uIF91cGRhdGVFbmNyeXB0KGRhdGEpIHtcbiAgdmFyIGlucHV0T2ZmID0gMDtcbiAgdmFyIG91dHB1dE9mZiA9IDA7XG5cbiAgdmFyIGNvdW50ID0gKCh0aGlzLmJ1ZmZlck9mZiArIGRhdGEubGVuZ3RoKSAvIHRoaXMuYmxvY2tTaXplKSB8IDA7XG4gIHZhciBvdXQgPSBuZXcgQXJyYXkoY291bnQgKiB0aGlzLmJsb2NrU2l6ZSk7XG5cbiAgaWYgKHRoaXMuYnVmZmVyT2ZmICE9PSAwKSB7XG4gICAgaW5wdXRPZmYgKz0gdGhpcy5fYnVmZmVyKGRhdGEsIGlucHV0T2ZmKTtcblxuICAgIGlmICh0aGlzLmJ1ZmZlck9mZiA9PT0gdGhpcy5idWZmZXIubGVuZ3RoKVxuICAgICAgb3V0cHV0T2ZmICs9IHRoaXMuX2ZsdXNoQnVmZmVyKG91dCwgb3V0cHV0T2ZmKTtcbiAgfVxuXG4gIC8vIFdyaXRlIGJsb2Nrc1xuICB2YXIgbWF4ID0gZGF0YS5sZW5ndGggLSAoKGRhdGEubGVuZ3RoIC0gaW5wdXRPZmYpICUgdGhpcy5ibG9ja1NpemUpO1xuICBmb3IgKDsgaW5wdXRPZmYgPCBtYXg7IGlucHV0T2ZmICs9IHRoaXMuYmxvY2tTaXplKSB7XG4gICAgdGhpcy5fdXBkYXRlKGRhdGEsIGlucHV0T2ZmLCBvdXQsIG91dHB1dE9mZik7XG4gICAgb3V0cHV0T2ZmICs9IHRoaXMuYmxvY2tTaXplO1xuICB9XG5cbiAgLy8gUXVldWUgcmVzdFxuICBmb3IgKDsgaW5wdXRPZmYgPCBkYXRhLmxlbmd0aDsgaW5wdXRPZmYrKywgdGhpcy5idWZmZXJPZmYrKylcbiAgICB0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZl0gPSBkYXRhW2lucHV0T2ZmXTtcblxuICByZXR1cm4gb3V0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlRGVjcnlwdCA9IGZ1bmN0aW9uIF91cGRhdGVEZWNyeXB0KGRhdGEpIHtcbiAgdmFyIGlucHV0T2ZmID0gMDtcbiAgdmFyIG91dHB1dE9mZiA9IDA7XG5cbiAgdmFyIGNvdW50ID0gTWF0aC5jZWlsKCh0aGlzLmJ1ZmZlck9mZiArIGRhdGEubGVuZ3RoKSAvIHRoaXMuYmxvY2tTaXplKSAtIDE7XG4gIHZhciBvdXQgPSBuZXcgQXJyYXkoY291bnQgKiB0aGlzLmJsb2NrU2l6ZSk7XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogb3B0aW1pemUgaXQsIHRoaXMgaXMgZmFyIGZyb20gb3B0aW1hbFxuICBmb3IgKDsgY291bnQgPiAwOyBjb3VudC0tKSB7XG4gICAgaW5wdXRPZmYgKz0gdGhpcy5fYnVmZmVyKGRhdGEsIGlucHV0T2ZmKTtcbiAgICBvdXRwdXRPZmYgKz0gdGhpcy5fZmx1c2hCdWZmZXIob3V0LCBvdXRwdXRPZmYpO1xuICB9XG5cbiAgLy8gQnVmZmVyIHJlc3Qgb2YgdGhlIGlucHV0XG4gIGlucHV0T2ZmICs9IHRoaXMuX2J1ZmZlcihkYXRhLCBpbnB1dE9mZik7XG5cbiAgcmV0dXJuIG91dDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuZmluYWwgPSBmdW5jdGlvbiBmaW5hbChidWZmZXIpIHtcbiAgdmFyIGZpcnN0O1xuICBpZiAoYnVmZmVyKVxuICAgIGZpcnN0ID0gdGhpcy51cGRhdGUoYnVmZmVyKTtcblxuICB2YXIgbGFzdDtcbiAgaWYgKHRoaXMudHlwZSA9PT0gJ2VuY3J5cHQnKVxuICAgIGxhc3QgPSB0aGlzLl9maW5hbEVuY3J5cHQoKTtcbiAgZWxzZVxuICAgIGxhc3QgPSB0aGlzLl9maW5hbERlY3J5cHQoKTtcblxuICBpZiAoZmlyc3QpXG4gICAgcmV0dXJuIGZpcnN0LmNvbmNhdChsYXN0KTtcbiAgZWxzZVxuICAgIHJldHVybiBsYXN0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fcGFkID0gZnVuY3Rpb24gX3BhZChidWZmZXIsIG9mZikge1xuICBpZiAob2ZmID09PSAwKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB3aGlsZSAob2ZmIDwgYnVmZmVyLmxlbmd0aClcbiAgICBidWZmZXJbb2ZmKytdID0gMDtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsRW5jcnlwdCA9IGZ1bmN0aW9uIF9maW5hbEVuY3J5cHQoKSB7XG4gIGlmICghdGhpcy5fcGFkKHRoaXMuYnVmZmVyLCB0aGlzLmJ1ZmZlck9mZikpXG4gICAgcmV0dXJuIFtdO1xuXG4gIHZhciBvdXQgPSBuZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO1xuICB0aGlzLl91cGRhdGUodGhpcy5idWZmZXIsIDAsIG91dCwgMCk7XG4gIHJldHVybiBvdXQ7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl91bnBhZCA9IGZ1bmN0aW9uIF91bnBhZChidWZmZXIpIHtcbiAgcmV0dXJuIGJ1ZmZlcjtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsRGVjcnlwdCA9IGZ1bmN0aW9uIF9maW5hbERlY3J5cHQoKSB7XG4gIGFzc2VydC5lcXVhbCh0aGlzLmJ1ZmZlck9mZiwgdGhpcy5ibG9ja1NpemUsICdOb3QgZW5vdWdoIGRhdGEgdG8gZGVjcnlwdCcpO1xuICB2YXIgb3V0ID0gbmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtcbiAgdGhpcy5fZmx1c2hCdWZmZXIob3V0LCAwKTtcblxuICByZXR1cm4gdGhpcy5fdW5wYWQob3V0KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgQ2lwaGVyID0gcmVxdWlyZSgnLi9jaXBoZXInKTtcblxuZnVuY3Rpb24gREVTU3RhdGUoKSB7XG4gIHRoaXMudG1wID0gbmV3IEFycmF5KDIpO1xuICB0aGlzLmtleXMgPSBudWxsO1xufVxuXG5mdW5jdGlvbiBERVMob3B0aW9ucykge1xuICBDaXBoZXIuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICB2YXIgc3RhdGUgPSBuZXcgREVTU3RhdGUoKTtcbiAgdGhpcy5fZGVzU3RhdGUgPSBzdGF0ZTtcblxuICB0aGlzLmRlcml2ZUtleXMoc3RhdGUsIG9wdGlvbnMua2V5KTtcbn1cbmluaGVyaXRzKERFUywgQ2lwaGVyKTtcbm1vZHVsZS5leHBvcnRzID0gREVTO1xuXG5ERVMuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBERVMob3B0aW9ucyk7XG59O1xuXG52YXIgc2hpZnRUYWJsZSA9IFtcbiAgMSwgMSwgMiwgMiwgMiwgMiwgMiwgMixcbiAgMSwgMiwgMiwgMiwgMiwgMiwgMiwgMVxuXTtcblxuREVTLnByb3RvdHlwZS5kZXJpdmVLZXlzID0gZnVuY3Rpb24gZGVyaXZlS2V5cyhzdGF0ZSwga2V5KSB7XG4gIHN0YXRlLmtleXMgPSBuZXcgQXJyYXkoMTYgKiAyKTtcblxuICBhc3NlcnQuZXF1YWwoa2V5Lmxlbmd0aCwgdGhpcy5ibG9ja1NpemUsICdJbnZhbGlkIGtleSBsZW5ndGgnKTtcblxuICB2YXIga0wgPSB1dGlscy5yZWFkVUludDMyQkUoa2V5LCAwKTtcbiAgdmFyIGtSID0gdXRpbHMucmVhZFVJbnQzMkJFKGtleSwgNCk7XG5cbiAgdXRpbHMucGMxKGtMLCBrUiwgc3RhdGUudG1wLCAwKTtcbiAga0wgPSBzdGF0ZS50bXBbMF07XG4gIGtSID0gc3RhdGUudG1wWzFdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLmtleXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIgc2hpZnQgPSBzaGlmdFRhYmxlW2kgPj4+IDFdO1xuICAgIGtMID0gdXRpbHMucjI4c2hsKGtMLCBzaGlmdCk7XG4gICAga1IgPSB1dGlscy5yMjhzaGwoa1IsIHNoaWZ0KTtcbiAgICB1dGlscy5wYzIoa0wsIGtSLCBzdGF0ZS5rZXlzLCBpKTtcbiAgfVxufTtcblxuREVTLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9kZXNTdGF0ZTtcblxuICB2YXIgbCA9IHV0aWxzLnJlYWRVSW50MzJCRShpbnAsIGluT2ZmKTtcbiAgdmFyIHIgPSB1dGlscy5yZWFkVUludDMyQkUoaW5wLCBpbk9mZiArIDQpO1xuXG4gIC8vIEluaXRpYWwgUGVybXV0YXRpb25cbiAgdXRpbHMuaXAobCwgciwgc3RhdGUudG1wLCAwKTtcbiAgbCA9IHN0YXRlLnRtcFswXTtcbiAgciA9IHN0YXRlLnRtcFsxXTtcblxuICBpZiAodGhpcy50eXBlID09PSAnZW5jcnlwdCcpXG4gICAgdGhpcy5fZW5jcnlwdChzdGF0ZSwgbCwgciwgc3RhdGUudG1wLCAwKTtcbiAgZWxzZVxuICAgIHRoaXMuX2RlY3J5cHQoc3RhdGUsIGwsIHIsIHN0YXRlLnRtcCwgMCk7XG5cbiAgbCA9IHN0YXRlLnRtcFswXTtcbiAgciA9IHN0YXRlLnRtcFsxXTtcblxuICB1dGlscy53cml0ZVVJbnQzMkJFKG91dCwgbCwgb3V0T2ZmKTtcbiAgdXRpbHMud3JpdGVVSW50MzJCRShvdXQsIHIsIG91dE9mZiArIDQpO1xufTtcblxuREVTLnByb3RvdHlwZS5fcGFkID0gZnVuY3Rpb24gX3BhZChidWZmZXIsIG9mZikge1xuICB2YXIgdmFsdWUgPSBidWZmZXIubGVuZ3RoIC0gb2ZmO1xuICBmb3IgKHZhciBpID0gb2ZmOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSsrKVxuICAgIGJ1ZmZlcltpXSA9IHZhbHVlO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuREVTLnByb3RvdHlwZS5fdW5wYWQgPSBmdW5jdGlvbiBfdW5wYWQoYnVmZmVyKSB7XG4gIHZhciBwYWQgPSBidWZmZXJbYnVmZmVyLmxlbmd0aCAtIDFdO1xuICBmb3IgKHZhciBpID0gYnVmZmVyLmxlbmd0aCAtIHBhZDsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkrKylcbiAgICBhc3NlcnQuZXF1YWwoYnVmZmVyW2ldLCBwYWQpO1xuXG4gIHJldHVybiBidWZmZXIuc2xpY2UoMCwgYnVmZmVyLmxlbmd0aCAtIHBhZCk7XG59O1xuXG5ERVMucHJvdG90eXBlLl9lbmNyeXB0ID0gZnVuY3Rpb24gX2VuY3J5cHQoc3RhdGUsIGxTdGFydCwgclN0YXJ0LCBvdXQsIG9mZikge1xuICB2YXIgbCA9IGxTdGFydDtcbiAgdmFyIHIgPSByU3RhcnQ7XG5cbiAgLy8gQXBwbHkgZigpIHgxNiB0aW1lc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLmtleXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIga2V5TCA9IHN0YXRlLmtleXNbaV07XG4gICAgdmFyIGtleVIgPSBzdGF0ZS5rZXlzW2kgKyAxXTtcblxuICAgIC8vIGYociwgaylcbiAgICB1dGlscy5leHBhbmQociwgc3RhdGUudG1wLCAwKTtcblxuICAgIGtleUwgXj0gc3RhdGUudG1wWzBdO1xuICAgIGtleVIgXj0gc3RhdGUudG1wWzFdO1xuICAgIHZhciBzID0gdXRpbHMuc3Vic3RpdHV0ZShrZXlMLCBrZXlSKTtcbiAgICB2YXIgZiA9IHV0aWxzLnBlcm11dGUocyk7XG5cbiAgICB2YXIgdCA9IHI7XG4gICAgciA9IChsIF4gZikgPj4+IDA7XG4gICAgbCA9IHQ7XG4gIH1cblxuICAvLyBSZXZlcnNlIEluaXRpYWwgUGVybXV0YXRpb25cbiAgdXRpbHMucmlwKHIsIGwsIG91dCwgb2ZmKTtcbn07XG5cbkRFUy5wcm90b3R5cGUuX2RlY3J5cHQgPSBmdW5jdGlvbiBfZGVjcnlwdChzdGF0ZSwgbFN0YXJ0LCByU3RhcnQsIG91dCwgb2ZmKSB7XG4gIHZhciBsID0gclN0YXJ0O1xuICB2YXIgciA9IGxTdGFydDtcblxuICAvLyBBcHBseSBmKCkgeDE2IHRpbWVzXG4gIGZvciAodmFyIGkgPSBzdGF0ZS5rZXlzLmxlbmd0aCAtIDI7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgdmFyIGtleUwgPSBzdGF0ZS5rZXlzW2ldO1xuICAgIHZhciBrZXlSID0gc3RhdGUua2V5c1tpICsgMV07XG5cbiAgICAvLyBmKHIsIGspXG4gICAgdXRpbHMuZXhwYW5kKGwsIHN0YXRlLnRtcCwgMCk7XG5cbiAgICBrZXlMIF49IHN0YXRlLnRtcFswXTtcbiAgICBrZXlSIF49IHN0YXRlLnRtcFsxXTtcbiAgICB2YXIgcyA9IHV0aWxzLnN1YnN0aXR1dGUoa2V5TCwga2V5Uik7XG4gICAgdmFyIGYgPSB1dGlscy5wZXJtdXRlKHMpO1xuXG4gICAgdmFyIHQgPSBsO1xuICAgIGwgPSAociBeIGYpID4+PiAwO1xuICAgIHIgPSB0O1xuICB9XG5cbiAgLy8gUmV2ZXJzZSBJbml0aWFsIFBlcm11dGF0aW9uXG4gIHV0aWxzLnJpcChsLCByLCBvdXQsIG9mZik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIENpcGhlciA9IHJlcXVpcmUoJy4vY2lwaGVyJyk7XG52YXIgREVTID0gcmVxdWlyZSgnLi9kZXMnKTtcblxuZnVuY3Rpb24gRURFU3RhdGUodHlwZSwga2V5KSB7XG4gIGFzc2VydC5lcXVhbChrZXkubGVuZ3RoLCAyNCwgJ0ludmFsaWQga2V5IGxlbmd0aCcpO1xuXG4gIHZhciBrMSA9IGtleS5zbGljZSgwLCA4KTtcbiAgdmFyIGsyID0ga2V5LnNsaWNlKDgsIDE2KTtcbiAgdmFyIGszID0ga2V5LnNsaWNlKDE2LCAyNCk7XG5cbiAgaWYgKHR5cGUgPT09ICdlbmNyeXB0Jykge1xuICAgIHRoaXMuY2lwaGVycyA9IFtcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZW5jcnlwdCcsIGtleTogazEgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2RlY3J5cHQnLCBrZXk6IGsyIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdlbmNyeXB0Jywga2V5OiBrMyB9KVxuICAgIF07XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5jaXBoZXJzID0gW1xuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdkZWNyeXB0Jywga2V5OiBrMyB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZW5jcnlwdCcsIGtleTogazIgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2RlY3J5cHQnLCBrZXk6IGsxIH0pXG4gICAgXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBFREUob3B0aW9ucykge1xuICBDaXBoZXIuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICB2YXIgc3RhdGUgPSBuZXcgRURFU3RhdGUodGhpcy50eXBlLCB0aGlzLm9wdGlvbnMua2V5KTtcbiAgdGhpcy5fZWRlU3RhdGUgPSBzdGF0ZTtcbn1cbmluaGVyaXRzKEVERSwgQ2lwaGVyKTtcblxubW9kdWxlLmV4cG9ydHMgPSBFREU7XG5cbkVERS5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUob3B0aW9ucykge1xuICByZXR1cm4gbmV3IEVERShvcHRpb25zKTtcbn07XG5cbkVERS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUoaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fZWRlU3RhdGU7XG5cbiAgc3RhdGUuY2lwaGVyc1swXS5fdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKTtcbiAgc3RhdGUuY2lwaGVyc1sxXS5fdXBkYXRlKG91dCwgb3V0T2ZmLCBvdXQsIG91dE9mZik7XG4gIHN0YXRlLmNpcGhlcnNbMl0uX3VwZGF0ZShvdXQsIG91dE9mZiwgb3V0LCBvdXRPZmYpO1xufTtcblxuRURFLnByb3RvdHlwZS5fcGFkID0gREVTLnByb3RvdHlwZS5fcGFkO1xuRURFLnByb3RvdHlwZS5fdW5wYWQgPSBERVMucHJvdG90eXBlLl91bnBhZDtcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5yZWFkVUludDMyQkUgPSBmdW5jdGlvbiByZWFkVUludDMyQkUoYnl0ZXMsIG9mZikge1xuICB2YXIgcmVzID0gIChieXRlc1swICsgb2ZmXSA8PCAyNCkgfFxuICAgICAgICAgICAgIChieXRlc1sxICsgb2ZmXSA8PCAxNikgfFxuICAgICAgICAgICAgIChieXRlc1syICsgb2ZmXSA8PCA4KSB8XG4gICAgICAgICAgICAgYnl0ZXNbMyArIG9mZl07XG4gIHJldHVybiByZXMgPj4+IDA7XG59O1xuXG5leHBvcnRzLndyaXRlVUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkJFKGJ5dGVzLCB2YWx1ZSwgb2ZmKSB7XG4gIGJ5dGVzWzAgKyBvZmZdID0gdmFsdWUgPj4+IDI0O1xuICBieXRlc1sxICsgb2ZmXSA9ICh2YWx1ZSA+Pj4gMTYpICYgMHhmZjtcbiAgYnl0ZXNbMiArIG9mZl0gPSAodmFsdWUgPj4+IDgpICYgMHhmZjtcbiAgYnl0ZXNbMyArIG9mZl0gPSB2YWx1ZSAmIDB4ZmY7XG59O1xuXG5leHBvcnRzLmlwID0gZnVuY3Rpb24gaXAoaW5MLCBpblIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIGZvciAodmFyIGkgPSA2OyBpID49IDA7IGkgLT0gMikge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluTCA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIGkgPSA2OyBpID49IDA7IGkgLT0gMikge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IDI1OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gMjU7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluTCA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLnJpcCA9IGZ1bmN0aW9uIHJpcChpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMjQ7IGogPj0gMDsgaiAtPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5SID4+PiAoaiArIGkpKSAmIDE7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG4gIGZvciAodmFyIGkgPSA0OyBpIDwgODsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDI0OyBqID49IDA7IGogLT0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluTCA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLnBjMSA9IGZ1bmN0aW9uIHBjMShpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgLy8gNywgMTUsIDIzLCAzMSwgMzksIDQ3LCA1NSwgNjNcbiAgLy8gNiwgMTQsIDIyLCAzMCwgMzksIDQ3LCA1NSwgNjNcbiAgLy8gNSwgMTMsIDIxLCAyOSwgMzksIDQ3LCA1NSwgNjNcbiAgLy8gNCwgMTIsIDIwLCAyOFxuICBmb3IgKHZhciBpID0gNzsgaSA+PSA1OyBpLS0pIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5SID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluTCA+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG4gIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICBvdXRMIDw8PSAxO1xuICAgIG91dEwgfD0gKGluUiA+PiAoaiArIGkpKSAmIDE7XG4gIH1cblxuICAvLyAxLCA5LCAxNywgMjUsIDMzLCA0MSwgNDksIDU3XG4gIC8vIDIsIDEwLCAxOCwgMjYsIDM0LCA0MiwgNTAsIDU4XG4gIC8vIDMsIDExLCAxOSwgMjcsIDM1LCA0MywgNTEsIDU5XG4gIC8vIDM2LCA0NCwgNTIsIDYwXG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IDM7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpblIgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5MID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgIG91dFIgPDw9IDE7XG4gICAgb3V0UiB8PSAoaW5MID4+IChqICsgaSkpICYgMTtcbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLnIyOHNobCA9IGZ1bmN0aW9uIHIyOHNobChudW0sIHNoaWZ0KSB7XG4gIHJldHVybiAoKG51bSA8PCBzaGlmdCkgJiAweGZmZmZmZmYpIHwgKG51bSA+Pj4gKDI4IC0gc2hpZnQpKTtcbn07XG5cbnZhciBwYzJ0YWJsZSA9IFtcbiAgLy8gaW5MID0+IG91dExcbiAgMTQsIDExLCAxNywgNCwgMjcsIDIzLCAyNSwgMCxcbiAgMTMsIDIyLCA3LCAxOCwgNSwgOSwgMTYsIDI0LFxuICAyLCAyMCwgMTIsIDIxLCAxLCA4LCAxNSwgMjYsXG5cbiAgLy8gaW5SID0+IG91dFJcbiAgMTUsIDQsIDI1LCAxOSwgOSwgMSwgMjYsIDE2LFxuICA1LCAxMSwgMjMsIDgsIDEyLCA3LCAxNywgMCxcbiAgMjIsIDMsIDEwLCAxNCwgNiwgMjAsIDI3LCAyNFxuXTtcblxuZXhwb3J0cy5wYzIgPSBmdW5jdGlvbiBwYzIoaW5MLCBpblIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIHZhciBsZW4gPSBwYzJ0YWJsZS5sZW5ndGggPj4+IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBvdXRMIDw8PSAxO1xuICAgIG91dEwgfD0gKGluTCA+Pj4gcGMydGFibGVbaV0pICYgMHgxO1xuICB9XG4gIGZvciAodmFyIGkgPSBsZW47IGkgPCBwYzJ0YWJsZS5sZW5ndGg7IGkrKykge1xuICAgIG91dFIgPDw9IDE7XG4gICAgb3V0UiB8PSAoaW5SID4+PiBwYzJ0YWJsZVtpXSkgJiAweDE7XG4gIH1cblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxuZXhwb3J0cy5leHBhbmQgPSBmdW5jdGlvbiBleHBhbmQociwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgb3V0TCA9ICgociAmIDEpIDw8IDUpIHwgKHIgPj4+IDI3KTtcbiAgZm9yICh2YXIgaSA9IDIzOyBpID49IDE1OyBpIC09IDQpIHtcbiAgICBvdXRMIDw8PSA2O1xuICAgIG91dEwgfD0gKHIgPj4+IGkpICYgMHgzZjtcbiAgfVxuICBmb3IgKHZhciBpID0gMTE7IGkgPj0gMzsgaSAtPSA0KSB7XG4gICAgb3V0UiB8PSAociA+Pj4gaSkgJiAweDNmO1xuICAgIG91dFIgPDw9IDY7XG4gIH1cbiAgb3V0UiB8PSAoKHIgJiAweDFmKSA8PCAxKSB8IChyID4+PiAzMSk7XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbnZhciBzVGFibGUgPSBbXG4gIDE0LCAwLCA0LCAxNSwgMTMsIDcsIDEsIDQsIDIsIDE0LCAxNSwgMiwgMTEsIDEzLCA4LCAxLFxuICAzLCAxMCwgMTAsIDYsIDYsIDEyLCAxMiwgMTEsIDUsIDksIDksIDUsIDAsIDMsIDcsIDgsXG4gIDQsIDE1LCAxLCAxMiwgMTQsIDgsIDgsIDIsIDEzLCA0LCA2LCA5LCAyLCAxLCAxMSwgNyxcbiAgMTUsIDUsIDEyLCAxMSwgOSwgMywgNywgMTQsIDMsIDEwLCAxMCwgMCwgNSwgNiwgMCwgMTMsXG5cbiAgMTUsIDMsIDEsIDEzLCA4LCA0LCAxNCwgNywgNiwgMTUsIDExLCAyLCAzLCA4LCA0LCAxNCxcbiAgOSwgMTIsIDcsIDAsIDIsIDEsIDEzLCAxMCwgMTIsIDYsIDAsIDksIDUsIDExLCAxMCwgNSxcbiAgMCwgMTMsIDE0LCA4LCA3LCAxMCwgMTEsIDEsIDEwLCAzLCA0LCAxNSwgMTMsIDQsIDEsIDIsXG4gIDUsIDExLCA4LCA2LCAxMiwgNywgNiwgMTIsIDksIDAsIDMsIDUsIDIsIDE0LCAxNSwgOSxcblxuICAxMCwgMTMsIDAsIDcsIDksIDAsIDE0LCA5LCA2LCAzLCAzLCA0LCAxNSwgNiwgNSwgMTAsXG4gIDEsIDIsIDEzLCA4LCAxMiwgNSwgNywgMTQsIDExLCAxMiwgNCwgMTEsIDIsIDE1LCA4LCAxLFxuICAxMywgMSwgNiwgMTAsIDQsIDEzLCA5LCAwLCA4LCA2LCAxNSwgOSwgMywgOCwgMCwgNyxcbiAgMTEsIDQsIDEsIDE1LCAyLCAxNCwgMTIsIDMsIDUsIDExLCAxMCwgNSwgMTQsIDIsIDcsIDEyLFxuXG4gIDcsIDEzLCAxMywgOCwgMTQsIDExLCAzLCA1LCAwLCA2LCA2LCAxNSwgOSwgMCwgMTAsIDMsXG4gIDEsIDQsIDIsIDcsIDgsIDIsIDUsIDEyLCAxMSwgMSwgMTIsIDEwLCA0LCAxNCwgMTUsIDksXG4gIDEwLCAzLCA2LCAxNSwgOSwgMCwgMCwgNiwgMTIsIDEwLCAxMSwgMSwgNywgMTMsIDEzLCA4LFxuICAxNSwgOSwgMSwgNCwgMywgNSwgMTQsIDExLCA1LCAxMiwgMiwgNywgOCwgMiwgNCwgMTQsXG5cbiAgMiwgMTQsIDEyLCAxMSwgNCwgMiwgMSwgMTIsIDcsIDQsIDEwLCA3LCAxMSwgMTMsIDYsIDEsXG4gIDgsIDUsIDUsIDAsIDMsIDE1LCAxNSwgMTAsIDEzLCAzLCAwLCA5LCAxNCwgOCwgOSwgNixcbiAgNCwgMTEsIDIsIDgsIDEsIDEyLCAxMSwgNywgMTAsIDEsIDEzLCAxNCwgNywgMiwgOCwgMTMsXG4gIDE1LCA2LCA5LCAxNSwgMTIsIDAsIDUsIDksIDYsIDEwLCAzLCA0LCAwLCA1LCAxNCwgMyxcblxuICAxMiwgMTAsIDEsIDE1LCAxMCwgNCwgMTUsIDIsIDksIDcsIDIsIDEyLCA2LCA5LCA4LCA1LFxuICAwLCA2LCAxMywgMSwgMywgMTMsIDQsIDE0LCAxNCwgMCwgNywgMTEsIDUsIDMsIDExLCA4LFxuICA5LCA0LCAxNCwgMywgMTUsIDIsIDUsIDEyLCAyLCA5LCA4LCA1LCAxMiwgMTUsIDMsIDEwLFxuICA3LCAxMSwgMCwgMTQsIDQsIDEsIDEwLCA3LCAxLCA2LCAxMywgMCwgMTEsIDgsIDYsIDEzLFxuXG4gIDQsIDEzLCAxMSwgMCwgMiwgMTEsIDE0LCA3LCAxNSwgNCwgMCwgOSwgOCwgMSwgMTMsIDEwLFxuICAzLCAxNCwgMTIsIDMsIDksIDUsIDcsIDEyLCA1LCAyLCAxMCwgMTUsIDYsIDgsIDEsIDYsXG4gIDEsIDYsIDQsIDExLCAxMSwgMTMsIDEzLCA4LCAxMiwgMSwgMywgNCwgNywgMTAsIDE0LCA3LFxuICAxMCwgOSwgMTUsIDUsIDYsIDAsIDgsIDE1LCAwLCAxNCwgNSwgMiwgOSwgMywgMiwgMTIsXG5cbiAgMTMsIDEsIDIsIDE1LCA4LCAxMywgNCwgOCwgNiwgMTAsIDE1LCAzLCAxMSwgNywgMSwgNCxcbiAgMTAsIDEyLCA5LCA1LCAzLCA2LCAxNCwgMTEsIDUsIDAsIDAsIDE0LCAxMiwgOSwgNywgMixcbiAgNywgMiwgMTEsIDEsIDQsIDE0LCAxLCA3LCA5LCA0LCAxMiwgMTAsIDE0LCA4LCAyLCAxMyxcbiAgMCwgMTUsIDYsIDEyLCAxMCwgOSwgMTMsIDAsIDE1LCAzLCAzLCA1LCA1LCA2LCA4LCAxMVxuXTtcblxuZXhwb3J0cy5zdWJzdGl0dXRlID0gZnVuY3Rpb24gc3Vic3RpdHV0ZShpbkwsIGluUikge1xuICB2YXIgb3V0ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgYiA9IChpbkwgPj4+ICgxOCAtIGkgKiA2KSkgJiAweDNmO1xuICAgIHZhciBzYiA9IHNUYWJsZVtpICogMHg0MCArIGJdO1xuXG4gICAgb3V0IDw8PSA0O1xuICAgIG91dCB8PSBzYjtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgIHZhciBiID0gKGluUiA+Pj4gKDE4IC0gaSAqIDYpKSAmIDB4M2Y7XG4gICAgdmFyIHNiID0gc1RhYmxlWzQgKiAweDQwICsgaSAqIDB4NDAgKyBiXTtcblxuICAgIG91dCA8PD0gNDtcbiAgICBvdXQgfD0gc2I7XG4gIH1cbiAgcmV0dXJuIG91dCA+Pj4gMDtcbn07XG5cbnZhciBwZXJtdXRlVGFibGUgPSBbXG4gIDE2LCAyNSwgMTIsIDExLCAzLCAyMCwgNCwgMTUsIDMxLCAxNywgOSwgNiwgMjcsIDE0LCAxLCAyMixcbiAgMzAsIDI0LCA4LCAxOCwgMCwgNSwgMjksIDIzLCAxMywgMTksIDIsIDI2LCAxMCwgMjEsIDI4LCA3XG5dO1xuXG5leHBvcnRzLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlKG51bSkge1xuICB2YXIgb3V0ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwZXJtdXRlVGFibGUubGVuZ3RoOyBpKyspIHtcbiAgICBvdXQgPDw9IDE7XG4gICAgb3V0IHw9IChudW0gPj4+IHBlcm11dGVUYWJsZVtpXSkgJiAweDE7XG4gIH1cbiAgcmV0dXJuIG91dCA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucGFkU3BsaXQgPSBmdW5jdGlvbiBwYWRTcGxpdChudW0sIHNpemUsIGdyb3VwKSB7XG4gIHZhciBzdHIgPSBudW0udG9TdHJpbmcoMik7XG4gIHdoaWxlIChzdHIubGVuZ3RoIDwgc2l6ZSlcbiAgICBzdHIgPSAnMCcgKyBzdHI7XG5cbiAgdmFyIG91dCA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gZ3JvdXApXG4gICAgb3V0LnB1c2goc3RyLnNsaWNlKGksIGkgKyBncm91cCkpO1xuICByZXR1cm4gb3V0LmpvaW4oJyAnKTtcbn07XG4iLCJ2YXIgZ2VuZXJhdGVQcmltZSA9IHJlcXVpcmUoJy4vbGliL2dlbmVyYXRlUHJpbWUnKVxudmFyIHByaW1lcyA9IHJlcXVpcmUoJy4vbGliL3ByaW1lcy5qc29uJylcblxudmFyIERIID0gcmVxdWlyZSgnLi9saWIvZGgnKVxuXG5mdW5jdGlvbiBnZXREaWZmaWVIZWxsbWFuIChtb2QpIHtcbiAgdmFyIHByaW1lID0gbmV3IEJ1ZmZlcihwcmltZXNbbW9kXS5wcmltZSwgJ2hleCcpXG4gIHZhciBnZW4gPSBuZXcgQnVmZmVyKHByaW1lc1ttb2RdLmdlbiwgJ2hleCcpXG5cbiAgcmV0dXJuIG5ldyBESChwcmltZSwgZ2VuKVxufVxuXG52YXIgRU5DT0RJTkdTID0ge1xuICAnYmluYXJ5JzogdHJ1ZSwgJ2hleCc6IHRydWUsICdiYXNlNjQnOiB0cnVlXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURpZmZpZUhlbGxtYW4gKHByaW1lLCBlbmMsIGdlbmVyYXRvciwgZ2VuYykge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGVuYykgfHwgRU5DT0RJTkdTW2VuY10gPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBjcmVhdGVEaWZmaWVIZWxsbWFuKHByaW1lLCAnYmluYXJ5JywgZW5jLCBnZW5lcmF0b3IpXG4gIH1cblxuICBlbmMgPSBlbmMgfHwgJ2JpbmFyeSdcbiAgZ2VuYyA9IGdlbmMgfHwgJ2JpbmFyeSdcbiAgZ2VuZXJhdG9yID0gZ2VuZXJhdG9yIHx8IG5ldyBCdWZmZXIoWzJdKVxuXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGdlbmVyYXRvcikpIHtcbiAgICBnZW5lcmF0b3IgPSBuZXcgQnVmZmVyKGdlbmVyYXRvciwgZ2VuYylcbiAgfVxuXG4gIGlmICh0eXBlb2YgcHJpbWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIG5ldyBESChnZW5lcmF0ZVByaW1lKHByaW1lLCBnZW5lcmF0b3IpLCBnZW5lcmF0b3IsIHRydWUpXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwcmltZSkpIHtcbiAgICBwcmltZSA9IG5ldyBCdWZmZXIocHJpbWUsIGVuYylcbiAgfVxuXG4gIHJldHVybiBuZXcgREgocHJpbWUsIGdlbmVyYXRvciwgdHJ1ZSlcbn1cblxuZXhwb3J0cy5EaWZmaWVIZWxsbWFuR3JvdXAgPSBleHBvcnRzLmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cCA9IGV4cG9ydHMuZ2V0RGlmZmllSGVsbG1hbiA9IGdldERpZmZpZUhlbGxtYW5cbmV4cG9ydHMuY3JlYXRlRGlmZmllSGVsbG1hbiA9IGV4cG9ydHMuRGlmZmllSGVsbG1hbiA9IGNyZWF0ZURpZmZpZUhlbGxtYW5cbiIsInZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgTWlsbGVyUmFiaW4gPSByZXF1aXJlKCdtaWxsZXItcmFiaW4nKTtcbnZhciBtaWxsZXJSYWJpbiA9IG5ldyBNaWxsZXJSYWJpbigpO1xudmFyIFRXRU5UWUZPVVIgPSBuZXcgQk4oMjQpO1xudmFyIEVMRVZFTiA9IG5ldyBCTigxMSk7XG52YXIgVEVOID0gbmV3IEJOKDEwKTtcbnZhciBUSFJFRSA9IG5ldyBCTigzKTtcbnZhciBTRVZFTiA9IG5ldyBCTig3KTtcbnZhciBwcmltZXMgPSByZXF1aXJlKCcuL2dlbmVyYXRlUHJpbWUnKTtcbnZhciByYW5kb21CeXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IERIO1xuXG5mdW5jdGlvbiBzZXRQdWJsaWNLZXkocHViLCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4JztcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHViKSkge1xuICAgIHB1YiA9IG5ldyBCdWZmZXIocHViLCBlbmMpO1xuICB9XG4gIHRoaXMuX3B1YiA9IG5ldyBCTihwdWIpO1xuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gc2V0UHJpdmF0ZUtleShwcml2LCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4JztcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpdikpIHtcbiAgICBwcml2ID0gbmV3IEJ1ZmZlcihwcml2LCBlbmMpO1xuICB9XG4gIHRoaXMuX3ByaXYgPSBuZXcgQk4ocHJpdik7XG4gIHJldHVybiB0aGlzO1xufVxuXG52YXIgcHJpbWVDYWNoZSA9IHt9O1xuZnVuY3Rpb24gY2hlY2tQcmltZShwcmltZSwgZ2VuZXJhdG9yKSB7XG4gIHZhciBnZW4gPSBnZW5lcmF0b3IudG9TdHJpbmcoJ2hleCcpO1xuICB2YXIgaGV4ID0gW2dlbiwgcHJpbWUudG9TdHJpbmcoMTYpXS5qb2luKCdfJyk7XG4gIGlmIChoZXggaW4gcHJpbWVDYWNoZSkge1xuICAgIHJldHVybiBwcmltZUNhY2hlW2hleF07XG4gIH1cbiAgdmFyIGVycm9yID0gMDtcblxuICBpZiAocHJpbWUuaXNFdmVuKCkgfHxcbiAgICAhcHJpbWVzLnNpbXBsZVNpZXZlIHx8XG4gICAgIXByaW1lcy5mZXJtYXRUZXN0KHByaW1lKSB8fFxuICAgICFtaWxsZXJSYWJpbi50ZXN0KHByaW1lKSkge1xuICAgIC8vbm90IGEgcHJpbWUgc28gKzFcbiAgICBlcnJvciArPSAxO1xuXG4gICAgaWYgKGdlbiA9PT0gJzAyJyB8fCBnZW4gPT09ICcwNScpIHtcbiAgICAgIC8vIHdlJ2QgYmUgYWJsZSB0byBjaGVjayB0aGUgZ2VuZXJhdG9yXG4gICAgICAvLyBpdCB3b3VsZCBmYWlsIHNvICs4XG4gICAgICBlcnJvciArPSA4O1xuICAgIH0gZWxzZSB7XG4gICAgICAvL3dlIHdvdWxkbid0IGJlIGFibGUgdG8gdGVzdCB0aGUgZ2VuZXJhdG9yXG4gICAgICAvLyBzbyArNFxuICAgICAgZXJyb3IgKz0gNDtcbiAgICB9XG4gICAgcHJpbWVDYWNoZVtoZXhdID0gZXJyb3I7XG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG4gIGlmICghbWlsbGVyUmFiaW4udGVzdChwcmltZS5zaHJuKDEpKSkge1xuICAgIC8vbm90IGEgc2FmZSBwcmltZVxuICAgIGVycm9yICs9IDI7XG4gIH1cbiAgdmFyIHJlbTtcbiAgc3dpdGNoIChnZW4pIHtcbiAgICBjYXNlICcwMic6XG4gICAgICBpZiAocHJpbWUubW9kKFRXRU5UWUZPVVIpLmNtcChFTEVWRU4pKSB7XG4gICAgICAgIC8vIHVuc3VpZGFibGUgZ2VuZXJhdG9yXG4gICAgICAgIGVycm9yICs9IDg7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICcwNSc6XG4gICAgICByZW0gPSBwcmltZS5tb2QoVEVOKTtcbiAgICAgIGlmIChyZW0uY21wKFRIUkVFKSAmJiByZW0uY21wKFNFVkVOKSkge1xuICAgICAgICAvLyBwcmltZSBtb2QgMTAgbmVlZHMgdG8gZXF1YWwgMyBvciA3XG4gICAgICAgIGVycm9yICs9IDg7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgZXJyb3IgKz0gNDtcbiAgfVxuICBwcmltZUNhY2hlW2hleF0gPSBlcnJvcjtcbiAgcmV0dXJuIGVycm9yO1xufVxuXG5mdW5jdGlvbiBESChwcmltZSwgZ2VuZXJhdG9yLCBtYWxsZWFibGUpIHtcbiAgdGhpcy5zZXRHZW5lcmF0b3IoZ2VuZXJhdG9yKTtcbiAgdGhpcy5fX3ByaW1lID0gbmV3IEJOKHByaW1lKTtcbiAgdGhpcy5fcHJpbWUgPSBCTi5tb250KHRoaXMuX19wcmltZSk7XG4gIHRoaXMuX3ByaW1lTGVuID0gcHJpbWUubGVuZ3RoO1xuICB0aGlzLl9wdWIgPSB1bmRlZmluZWQ7XG4gIHRoaXMuX3ByaXYgPSB1bmRlZmluZWQ7XG4gIHRoaXMuX3ByaW1lQ29kZSA9IHVuZGVmaW5lZDtcbiAgaWYgKG1hbGxlYWJsZSkge1xuICAgIHRoaXMuc2V0UHVibGljS2V5ID0gc2V0UHVibGljS2V5O1xuICAgIHRoaXMuc2V0UHJpdmF0ZUtleSA9IHNldFByaXZhdGVLZXk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fcHJpbWVDb2RlID0gODtcbiAgfVxufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KERILnByb3RvdHlwZSwgJ3ZlcmlmeUVycm9yJywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuX3ByaW1lQ29kZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRoaXMuX3ByaW1lQ29kZSA9IGNoZWNrUHJpbWUodGhpcy5fX3ByaW1lLCB0aGlzLl9fZ2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3ByaW1lQ29kZTtcbiAgfVxufSk7XG5ESC5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXRoaXMuX3ByaXYpIHtcbiAgICB0aGlzLl9wcml2ID0gbmV3IEJOKHJhbmRvbUJ5dGVzKHRoaXMuX3ByaW1lTGVuKSk7XG4gIH1cbiAgdGhpcy5fcHViID0gdGhpcy5fZ2VuLnRvUmVkKHRoaXMuX3ByaW1lKS5yZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpO1xuICByZXR1cm4gdGhpcy5nZXRQdWJsaWNLZXkoKTtcbn07XG5cbkRILnByb3RvdHlwZS5jb21wdXRlU2VjcmV0ID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gIG90aGVyID0gbmV3IEJOKG90aGVyKTtcbiAgb3RoZXIgPSBvdGhlci50b1JlZCh0aGlzLl9wcmltZSk7XG4gIHZhciBzZWNyZXQgPSBvdGhlci5yZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpO1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihzZWNyZXQudG9BcnJheSgpKTtcbiAgdmFyIHByaW1lID0gdGhpcy5nZXRQcmltZSgpO1xuICBpZiAob3V0Lmxlbmd0aCA8IHByaW1lLmxlbmd0aCkge1xuICAgIHZhciBmcm9udCA9IG5ldyBCdWZmZXIocHJpbWUubGVuZ3RoIC0gb3V0Lmxlbmd0aCk7XG4gICAgZnJvbnQuZmlsbCgwKTtcbiAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFtmcm9udCwgb3V0XSk7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn07XG5cbkRILnByb3RvdHlwZS5nZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiBnZXRQdWJsaWNLZXkoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9wdWIsIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleSA9IGZ1bmN0aW9uIGdldFByaXZhdGVLZXkoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9wcml2LCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLmdldFByaW1lID0gZnVuY3Rpb24gKGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fX3ByaW1lLCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLmdldEdlbmVyYXRvciA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX2dlbiwgZW5jKTtcbn07XG5cbkRILnByb3RvdHlwZS5zZXRHZW5lcmF0b3IgPSBmdW5jdGlvbiAoZ2VuLCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4JztcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoZ2VuKSkge1xuICAgIGdlbiA9IG5ldyBCdWZmZXIoZ2VuLCBlbmMpO1xuICB9XG4gIHRoaXMuX19nZW4gPSBnZW47XG4gIHRoaXMuX2dlbiA9IG5ldyBCTihnZW4pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIGZvcm1hdFJldHVyblZhbHVlKGJuLCBlbmMpIHtcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoYm4udG9BcnJheSgpKTtcbiAgaWYgKCFlbmMpIHtcbiAgICByZXR1cm4gYnVmO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWYudG9TdHJpbmcoZW5jKTtcbiAgfVxufVxuIiwidmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gZmluZFByaW1lO1xuZmluZFByaW1lLnNpbXBsZVNpZXZlID0gc2ltcGxlU2lldmU7XG5maW5kUHJpbWUuZmVybWF0VGVzdCA9IGZlcm1hdFRlc3Q7XG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIFRXRU5UWUZPVVIgPSBuZXcgQk4oMjQpO1xudmFyIE1pbGxlclJhYmluID0gcmVxdWlyZSgnbWlsbGVyLXJhYmluJyk7XG52YXIgbWlsbGVyUmFiaW4gPSBuZXcgTWlsbGVyUmFiaW4oKTtcbnZhciBPTkUgPSBuZXcgQk4oMSk7XG52YXIgVFdPID0gbmV3IEJOKDIpO1xudmFyIEZJVkUgPSBuZXcgQk4oNSk7XG52YXIgU0lYVEVFTiA9IG5ldyBCTigxNik7XG52YXIgRUlHSFQgPSBuZXcgQk4oOCk7XG52YXIgVEVOID0gbmV3IEJOKDEwKTtcbnZhciBUSFJFRSA9IG5ldyBCTigzKTtcbnZhciBTRVZFTiA9IG5ldyBCTig3KTtcbnZhciBFTEVWRU4gPSBuZXcgQk4oMTEpO1xudmFyIEZPVVIgPSBuZXcgQk4oNCk7XG52YXIgVFdFTFZFID0gbmV3IEJOKDEyKTtcbnZhciBwcmltZXMgPSBudWxsO1xuXG5mdW5jdGlvbiBfZ2V0UHJpbWVzKCkge1xuICBpZiAocHJpbWVzICE9PSBudWxsKVxuICAgIHJldHVybiBwcmltZXM7XG5cbiAgdmFyIGxpbWl0ID0gMHgxMDAwMDA7XG4gIHZhciByZXMgPSBbXTtcbiAgcmVzWzBdID0gMjtcbiAgZm9yICh2YXIgaSA9IDEsIGsgPSAzOyBrIDwgbGltaXQ7IGsgKz0gMikge1xuICAgIHZhciBzcXJ0ID0gTWF0aC5jZWlsKE1hdGguc3FydChrKSk7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBpICYmIHJlc1tqXSA8PSBzcXJ0OyBqKyspXG4gICAgICBpZiAoayAlIHJlc1tqXSA9PT0gMClcbiAgICAgICAgYnJlYWs7XG5cbiAgICBpZiAoaSAhPT0gaiAmJiByZXNbal0gPD0gc3FydClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgcmVzW2krK10gPSBrO1xuICB9XG4gIHByaW1lcyA9IHJlcztcbiAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gc2ltcGxlU2lldmUocCkge1xuICB2YXIgcHJpbWVzID0gX2dldFByaW1lcygpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJpbWVzLmxlbmd0aDsgaSsrKVxuICAgIGlmIChwLm1vZG4ocHJpbWVzW2ldKSA9PT0gMCkge1xuICAgICAgaWYgKHAuY21wbihwcmltZXNbaV0pID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZmVybWF0VGVzdChwKSB7XG4gIHZhciByZWQgPSBCTi5tb250KHApO1xuICByZXR1cm4gVFdPLnRvUmVkKHJlZCkucmVkUG93KHAuc3VibigxKSkuZnJvbVJlZCgpLmNtcG4oMSkgPT09IDA7XG59XG5cbmZ1bmN0aW9uIGZpbmRQcmltZShiaXRzLCBnZW4pIHtcbiAgaWYgKGJpdHMgPCAxNikge1xuICAgIC8vIHRoaXMgaXMgd2hhdCBvcGVuc3NsIGRvZXNcbiAgICBpZiAoZ2VuID09PSAyIHx8IGdlbiA9PT0gNSkge1xuICAgICAgcmV0dXJuIG5ldyBCTihbMHg4YywgMHg3Yl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IEJOKFsweDhjLCAweDI3XSk7XG4gICAgfVxuICB9XG4gIGdlbiA9IG5ldyBCTihnZW4pO1xuXG4gIHZhciBudW0sIG4yO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgbnVtID0gbmV3IEJOKHJhbmRvbUJ5dGVzKE1hdGguY2VpbChiaXRzIC8gOCkpKTtcbiAgICB3aGlsZSAobnVtLmJpdExlbmd0aCgpID4gYml0cykge1xuICAgICAgbnVtLmlzaHJuKDEpO1xuICAgIH1cbiAgICBpZiAobnVtLmlzRXZlbigpKSB7XG4gICAgICBudW0uaWFkZChPTkUpO1xuICAgIH1cbiAgICBpZiAoIW51bS50ZXN0bigxKSkge1xuICAgICAgbnVtLmlhZGQoVFdPKTtcbiAgICB9XG4gICAgaWYgKCFnZW4uY21wKFRXTykpIHtcbiAgICAgIHdoaWxlIChudW0ubW9kKFRXRU5UWUZPVVIpLmNtcChFTEVWRU4pKSB7XG4gICAgICAgIG51bS5pYWRkKEZPVVIpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWdlbi5jbXAoRklWRSkpIHtcbiAgICAgIHdoaWxlIChudW0ubW9kKFRFTikuY21wKFRIUkVFKSkge1xuICAgICAgICBudW0uaWFkZChGT1VSKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbjIgPSBudW0uc2hybigxKTtcbiAgICBpZiAoc2ltcGxlU2lldmUobjIpICYmIHNpbXBsZVNpZXZlKG51bSkgJiZcbiAgICAgIGZlcm1hdFRlc3QobjIpICYmIGZlcm1hdFRlc3QobnVtKSAmJlxuICAgICAgbWlsbGVyUmFiaW4udGVzdChuMikgJiYgbWlsbGVyUmFiaW4udGVzdChudW0pKSB7XG4gICAgICByZXR1cm4gbnVtO1xuICAgIH1cbiAgfVxuXG59XG4iLCIoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gVXRpbHNcbiAgZnVuY3Rpb24gYXNzZXJ0ICh2YWwsIG1zZykge1xuICAgIGlmICghdmFsKSB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG4gIH1cblxuICAvLyBDb3VsZCB1c2UgYGluaGVyaXRzYCBtb2R1bGUsIGJ1dCBkb24ndCB3YW50IHRvIG1vdmUgZnJvbSBzaW5nbGUgZmlsZVxuICAvLyBhcmNoaXRlY3R1cmUgeWV0LlxuICBmdW5jdGlvbiBpbmhlcml0cyAoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3I7XG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge307XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZTtcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpO1xuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvcjtcbiAgfVxuXG4gIC8vIEJOXG5cbiAgZnVuY3Rpb24gQk4gKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKEJOLmlzQk4obnVtYmVyKSkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB0aGlzLndvcmRzID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICAvLyBSZWR1Y3Rpb24gY29udGV4dFxuICAgIHRoaXMucmVkID0gbnVsbDtcblxuICAgIGlmIChudW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGlmIChiYXNlID09PSAnbGUnIHx8IGJhc2UgPT09ICdiZScpIHtcbiAgICAgICAgZW5kaWFuID0gYmFzZTtcbiAgICAgICAgYmFzZSA9IDEwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbml0KG51bWJlciB8fCAwLCBiYXNlIHx8IDEwLCBlbmRpYW4gfHwgJ2JlJyk7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gQk47XG4gIH0gZWxzZSB7XG4gICAgZXhwb3J0cy5CTiA9IEJOO1xuICB9XG5cbiAgQk4uQk4gPSBCTjtcbiAgQk4ud29yZFNpemUgPSAyNjtcblxuICB2YXIgQnVmZmVyO1xuICB0cnkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIEJ1ZmZlciA9IHdpbmRvdy5CdWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPCBudW1iZXIubGVuZ3RoKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gMTYpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VIZXgobnVtYmVyLCBzdGFydCwgZW5kaWFuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3BhcnNlQmFzZShudW1iZXIsIGJhc2UsIHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXROdW1iZXIgPSBmdW5jdGlvbiBfaW5pdE51bWJlciAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICBudW1iZXIgPSAtbnVtYmVyO1xuICAgIH1cbiAgICBpZiAobnVtYmVyIDwgMHg0MDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyBudW1iZXIgJiAweDNmZmZmZmYgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKG51bWJlciA8IDB4MTAwMDAwMDAwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmZcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChudW1iZXIgPCAweDIwMDAwMDAwMDAwMDAwKTsgLy8gMiBeIDUzICh1bnNhZmUpXG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmLFxuICAgICAgICAxXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAzO1xuICAgIH1cblxuICAgIGlmIChlbmRpYW4gIT09ICdsZScpIHJldHVybjtcblxuICAgIC8vIFJldmVyc2UgdGhlIGJ5dGVzXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdEFycmF5ID0gZnVuY3Rpb24gX2luaXRBcnJheSAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICAvLyBQZXJoYXBzIGEgVWludDhBcnJheVxuICAgIGFzc2VydCh0eXBlb2YgbnVtYmVyLmxlbmd0aCA9PT0gJ251bWJlcicpO1xuICAgIGlmIChudW1iZXIubGVuZ3RoIDw9IDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKG51bWJlci5sZW5ndGggLyAzKTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIHZhciBqLCB3O1xuICAgIHZhciBvZmYgPSAwO1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxLCBqID0gMDsgaSA+PSAwOyBpIC09IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSAtIDFdIDw8IDgpIHwgKG51bWJlcltpIC0gMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgKyAxXSA8PCA4KSB8IChudW1iZXJbaSArIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4NEJpdHMgKHN0cmluZywgaW5kZXgpIHtcbiAgICB2YXIgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAvLyAnQScgLSAnRidcbiAgICBpZiAoYyA+PSA2NSAmJiBjIDw9IDcwKSB7XG4gICAgICByZXR1cm4gYyAtIDU1O1xuICAgIC8vICdhJyAtICdmJ1xuICAgIH0gZWxzZSBpZiAoYyA+PSA5NyAmJiBjIDw9IDEwMikge1xuICAgICAgcmV0dXJuIGMgLSA4NztcbiAgICAvLyAnMCcgLSAnOSdcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChjIC0gNDgpICYgMHhmO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4Qnl0ZSAoc3RyaW5nLCBsb3dlckJvdW5kLCBpbmRleCkge1xuICAgIHZhciByID0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4KTtcbiAgICBpZiAoaW5kZXggLSAxID49IGxvd2VyQm91bmQpIHtcbiAgICAgIHIgfD0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4IC0gMSkgPDwgNDtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlSGV4ID0gZnVuY3Rpb24gX3BhcnNlSGV4IChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICAvLyAyNC1iaXRzIGNodW5rc1xuICAgIHZhciBvZmYgPSAwO1xuICAgIHZhciBqID0gMDtcblxuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyBpIC09IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFyc2VMZW5ndGggPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgICBmb3IgKGkgPSBwYXJzZUxlbmd0aCAlIDIgPT09IDAgPyBzdGFydCArIDEgOiBzdGFydDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlQmFzZSAoc3RyLCBzdGFydCwgZW5kLCBtdWwpIHtcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKHN0ci5sZW5ndGgsIGVuZCk7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBjID0gc3RyLmNoYXJDb2RlQXQoaSkgLSA0ODtcblxuICAgICAgciAqPSBtdWw7XG5cbiAgICAgIC8vICdhJ1xuICAgICAgaWYgKGMgPj0gNDkpIHtcbiAgICAgICAgciArPSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3KSB7XG4gICAgICAgIHIgKz0gYyAtIDE3ICsgMHhhO1xuXG4gICAgICAvLyAnMCcgLSAnOSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIgKz0gYztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlQmFzZSA9IGZ1bmN0aW9uIF9wYXJzZUJhc2UgKG51bWJlciwgYmFzZSwgc3RhcnQpIHtcbiAgICAvLyBJbml0aWFsaXplIGFzIHplcm9cbiAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuXG4gICAgLy8gRmluZCBsZW5ndGggb2YgbGltYiBpbiBiYXNlXG4gICAgZm9yICh2YXIgbGltYkxlbiA9IDAsIGxpbWJQb3cgPSAxOyBsaW1iUG93IDw9IDB4M2ZmZmZmZjsgbGltYlBvdyAqPSBiYXNlKSB7XG4gICAgICBsaW1iTGVuKys7XG4gICAgfVxuICAgIGxpbWJMZW4tLTtcbiAgICBsaW1iUG93ID0gKGxpbWJQb3cgLyBiYXNlKSB8IDA7XG5cbiAgICB2YXIgdG90YWwgPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgdmFyIG1vZCA9IHRvdGFsICUgbGltYkxlbjtcbiAgICB2YXIgZW5kID0gTWF0aC5taW4odG90YWwsIHRvdGFsIC0gbW9kKSArIHN0YXJ0O1xuXG4gICAgdmFyIHdvcmQgPSAwO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSBsaW1iTGVuKSB7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgaSArIGxpbWJMZW4sIGJhc2UpO1xuXG4gICAgICB0aGlzLmltdWxuKGxpbWJQb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2QgIT09IDApIHtcbiAgICAgIHZhciBwb3cgPSAxO1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIG51bWJlci5sZW5ndGgsIGJhc2UpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbW9kOyBpKyspIHtcbiAgICAgICAgcG93ICo9IGJhc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW11bG4ocG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5IChkZXN0KSB7XG4gICAgZGVzdC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXN0LndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICB9XG4gICAgZGVzdC5sZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICBkZXN0Lm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICBkZXN0LnJlZCA9IHRoaXMucmVkO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICB2YXIgciA9IG5ldyBCTihudWxsKTtcbiAgICB0aGlzLmNvcHkocik7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9leHBhbmQgPSBmdW5jdGlvbiBfZXhwYW5kIChzaXplKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgc2l6ZSkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFJlbW92ZSBsZWFkaW5nIGAwYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3RyaXAgPSBmdW5jdGlvbiBzdHJpcCAoKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoID4gMSAmJiB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fbm9ybVNpZ24gPSBmdW5jdGlvbiBfbm9ybVNpZ24gKCkge1xuICAgIC8vIC0wID0gMFxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICByZXR1cm4gKHRoaXMucmVkID8gJzxCTi1SOiAnIDogJzxCTjogJykgKyB0aGlzLnRvU3RyaW5nKDE2KSArICc+JztcbiAgfTtcblxuICAvKlxuXG4gIHZhciB6ZXJvcyA9IFtdO1xuICB2YXIgZ3JvdXBTaXplcyA9IFtdO1xuICB2YXIgZ3JvdXBCYXNlcyA9IFtdO1xuXG4gIHZhciBzID0gJyc7XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBCTi53b3JkU2l6ZSkge1xuICAgIHplcm9zW2ldID0gcztcbiAgICBzICs9ICcwJztcbiAgfVxuICBncm91cFNpemVzWzBdID0gMDtcbiAgZ3JvdXBTaXplc1sxXSA9IDA7XG4gIGdyb3VwQmFzZXNbMF0gPSAwO1xuICBncm91cEJhc2VzWzFdID0gMDtcbiAgdmFyIGJhc2UgPSAyIC0gMTtcbiAgd2hpbGUgKCsrYmFzZSA8IDM2ICsgMSkge1xuICAgIHZhciBncm91cFNpemUgPSAwO1xuICAgIHZhciBncm91cEJhc2UgPSAxO1xuICAgIHdoaWxlIChncm91cEJhc2UgPCAoMSA8PCBCTi53b3JkU2l6ZSkgLyBiYXNlKSB7XG4gICAgICBncm91cEJhc2UgKj0gYmFzZTtcbiAgICAgIGdyb3VwU2l6ZSArPSAxO1xuICAgIH1cbiAgICBncm91cFNpemVzW2Jhc2VdID0gZ3JvdXBTaXplO1xuICAgIGdyb3VwQmFzZXNbYmFzZV0gPSBncm91cEJhc2U7XG4gIH1cblxuICAqL1xuXG4gIHZhciB6ZXJvcyA9IFtcbiAgICAnJyxcbiAgICAnMCcsXG4gICAgJzAwJyxcbiAgICAnMDAwJyxcbiAgICAnMDAwMCcsXG4gICAgJzAwMDAwJyxcbiAgICAnMDAwMDAwJyxcbiAgICAnMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCdcbiAgXTtcblxuICB2YXIgZ3JvdXBTaXplcyA9IFtcbiAgICAwLCAwLFxuICAgIDI1LCAxNiwgMTIsIDExLCAxMCwgOSwgOCxcbiAgICA4LCA3LCA3LCA3LCA3LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1XG4gIF07XG5cbiAgdmFyIGdyb3VwQmFzZXMgPSBbXG4gICAgMCwgMCxcbiAgICAzMzU1NDQzMiwgNDMwNDY3MjEsIDE2Nzc3MjE2LCA0ODgyODEyNSwgNjA0NjYxNzYsIDQwMzUzNjA3LCAxNjc3NzIxNixcbiAgICA0MzA0NjcyMSwgMTAwMDAwMDAsIDE5NDg3MTcxLCAzNTgzMTgwOCwgNjI3NDg1MTcsIDc1Mjk1MzYsIDExMzkwNjI1LFxuICAgIDE2Nzc3MjE2LCAyNDEzNzU2OSwgMzQwMTIyMjQsIDQ3MDQ1ODgxLCA2NDAwMDAwMCwgNDA4NDEwMSwgNTE1MzYzMixcbiAgICA2NDM2MzQzLCA3OTYyNjI0LCA5NzY1NjI1LCAxMTg4MTM3NiwgMTQzNDg5MDcsIDE3MjEwMzY4LCAyMDUxMTE0OSxcbiAgICAyNDMwMDAwMCwgMjg2MjkxNTEsIDMzNTU0NDMyLCAzOTEzNTM5MywgNDU0MzU0MjQsIDUyNTIxODc1LCA2MDQ2NjE3NlxuICBdO1xuXG4gIEJOLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nIChiYXNlLCBwYWRkaW5nKSB7XG4gICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgcGFkZGluZyA9IHBhZGRpbmcgfCAwIHx8IDE7XG5cbiAgICB2YXIgb3V0O1xuICAgIGlmIChiYXNlID09PSAxNiB8fCBiYXNlID09PSAnaGV4Jykge1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgb2ZmID0gMDtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldO1xuICAgICAgICB2YXIgd29yZCA9ICgoKHcgPDwgb2ZmKSB8IGNhcnJ5KSAmIDB4ZmZmZmZmKS50b1N0cmluZygxNik7XG4gICAgICAgIGNhcnJ5ID0gKHcgPj4+ICgyNCAtIG9mZikpICYgMHhmZmZmZmY7XG4gICAgICAgIGlmIChjYXJyeSAhPT0gMCB8fCBpICE9PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1s2IC0gd29yZC5sZW5ndGhdICsgd29yZCArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSB3b3JkICsgb3V0O1xuICAgICAgICB9XG4gICAgICAgIG9mZiArPSAyO1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICAgIG91dCA9IGNhcnJ5LnRvU3RyaW5nKDE2KSArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KSB7XG4gICAgICAvLyB2YXIgZ3JvdXBTaXplID0gTWF0aC5mbG9vcihCTi53b3JkU2l6ZSAqIE1hdGguTE4yIC8gTWF0aC5sb2coYmFzZSkpO1xuICAgICAgdmFyIGdyb3VwU2l6ZSA9IGdyb3VwU2l6ZXNbYmFzZV07XG4gICAgICAvLyB2YXIgZ3JvdXBCYXNlID0gTWF0aC5wb3coYmFzZSwgZ3JvdXBTaXplKTtcbiAgICAgIHZhciBncm91cEJhc2UgPSBncm91cEJhc2VzW2Jhc2VdO1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgYyA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGMubmVnYXRpdmUgPSAwO1xuICAgICAgd2hpbGUgKCFjLmlzWmVybygpKSB7XG4gICAgICAgIHZhciByID0gYy5tb2RuKGdyb3VwQmFzZSkudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIGMgPSBjLmlkaXZuKGdyb3VwQmFzZSk7XG5cbiAgICAgICAgaWYgKCFjLmlzWmVybygpKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbZ3JvdXBTaXplIC0gci5sZW5ndGhdICsgciArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSByICsgb3V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBhc3NlcnQoZmFsc2UsICdCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Jyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvTnVtYmVyID0gZnVuY3Rpb24gdG9OdW1iZXIgKCkge1xuICAgIHZhciByZXQgPSB0aGlzLndvcmRzWzBdO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0ICs9IHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA9PT0gMyAmJiB0aGlzLndvcmRzWzJdID09PSAweDAxKSB7XG4gICAgICAvLyBOT1RFOiBhdCB0aGlzIHN0YWdlIGl0IGlzIGtub3duIHRoYXQgdGhlIHRvcCBiaXQgaXMgc2V0XG4gICAgICByZXQgKz0gMHgxMDAwMDAwMDAwMDAwMCArICh0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gMikge1xuICAgICAgYXNzZXJ0KGZhbHNlLCAnTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzJyk7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgPyAtcmV0IDogcmV0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKDE2KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9CdWZmZXIgPSBmdW5jdGlvbiB0b0J1ZmZlciAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpO1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEJ1ZmZlciwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gdG9BcnJheSAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5TGlrZSA9IGZ1bmN0aW9uIHRvQXJyYXlMaWtlIChBcnJheVR5cGUsIGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgdmFyIGJ5dGVMZW5ndGggPSB0aGlzLmJ5dGVMZW5ndGgoKTtcbiAgICB2YXIgcmVxTGVuZ3RoID0gbGVuZ3RoIHx8IE1hdGgubWF4KDEsIGJ5dGVMZW5ndGgpO1xuICAgIGFzc2VydChieXRlTGVuZ3RoIDw9IHJlcUxlbmd0aCwgJ2J5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgnKTtcbiAgICBhc3NlcnQocmVxTGVuZ3RoID4gMCwgJ1JlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCcpO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuICAgIHZhciBsaXR0bGVFbmRpYW4gPSBlbmRpYW4gPT09ICdsZSc7XG4gICAgdmFyIHJlcyA9IG5ldyBBcnJheVR5cGUocmVxTGVuZ3RoKTtcblxuICAgIHZhciBiLCBpO1xuICAgIHZhciBxID0gdGhpcy5jbG9uZSgpO1xuICAgIGlmICghbGl0dGxlRW5kaWFuKSB7XG4gICAgICAvLyBBc3N1bWUgYmlnLWVuZGlhblxuICAgICAgZm9yIChpID0gMDsgaSA8IHJlcUxlbmd0aCAtIGJ5dGVMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbcmVxTGVuZ3RoIC0gaSAtIDFdID0gYjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW2ldID0gYjtcbiAgICAgIH1cblxuICAgICAgZm9yICg7IGkgPCByZXFMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgaWYgKE1hdGguY2x6MzIpIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHJldHVybiAzMiAtIE1hdGguY2x6MzIodyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHZhciB0ID0gdztcbiAgICAgIHZhciByID0gMDtcbiAgICAgIGlmICh0ID49IDB4MTAwMCkge1xuICAgICAgICByICs9IDEzO1xuICAgICAgICB0ID4+Pj0gMTM7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDQwKSB7XG4gICAgICAgIHIgKz0gNztcbiAgICAgICAgdCA+Pj49IDc7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDgpIHtcbiAgICAgICAgciArPSA0O1xuICAgICAgICB0ID4+Pj0gNDtcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4MDIpIHtcbiAgICAgICAgciArPSAyO1xuICAgICAgICB0ID4+Pj0gMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByICsgdDtcbiAgICB9O1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl96ZXJvQml0cyA9IGZ1bmN0aW9uIF96ZXJvQml0cyAodykge1xuICAgIC8vIFNob3J0LWN1dFxuICAgIGlmICh3ID09PSAwKSByZXR1cm4gMjY7XG5cbiAgICB2YXIgdCA9IHc7XG4gICAgdmFyIHIgPSAwO1xuICAgIGlmICgodCAmIDB4MWZmZikgPT09IDApIHtcbiAgICAgIHIgKz0gMTM7XG4gICAgICB0ID4+Pj0gMTM7XG4gICAgfVxuICAgIGlmICgodCAmIDB4N2YpID09PSAwKSB7XG4gICAgICByICs9IDc7XG4gICAgICB0ID4+Pj0gNztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHhmKSA9PT0gMCkge1xuICAgICAgciArPSA0O1xuICAgICAgdCA+Pj49IDQ7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MykgPT09IDApIHtcbiAgICAgIHIgKz0gMjtcbiAgICAgIHQgPj4+PSAyO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDEpID09PSAwKSB7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIC8vIFJldHVybiBudW1iZXIgb2YgdXNlZCBiaXRzIGluIGEgQk5cbiAgQk4ucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uIGJpdExlbmd0aCAoKSB7XG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV07XG4gICAgdmFyIGhpID0gdGhpcy5fY291bnRCaXRzKHcpO1xuICAgIHJldHVybiAodGhpcy5sZW5ndGggLSAxKSAqIDI2ICsgaGk7XG4gIH07XG5cbiAgZnVuY3Rpb24gdG9CaXRBcnJheSAobnVtKSB7XG4gICAgdmFyIHcgPSBuZXcgQXJyYXkobnVtLmJpdExlbmd0aCgpKTtcblxuICAgIGZvciAodmFyIGJpdCA9IDA7IGJpdCA8IHcubGVuZ3RoOyBiaXQrKykge1xuICAgICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgICAgd1tiaXRdID0gKG51bS53b3Jkc1tvZmZdICYgKDEgPDwgd2JpdCkpID4+PiB3Yml0O1xuICAgIH1cblxuICAgIHJldHVybiB3O1xuICB9XG5cbiAgLy8gTnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0c1xuICBCTi5wcm90b3R5cGUuemVyb0JpdHMgPSBmdW5jdGlvbiB6ZXJvQml0cyAoKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiAwO1xuXG4gICAgdmFyIHIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGIgPSB0aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2ldKTtcbiAgICAgIHIgKz0gYjtcbiAgICAgIGlmIChiICE9PSAyNikgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ieXRlTGVuZ3RoID0gZnVuY3Rpb24gYnl0ZUxlbmd0aCAoKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpIC8gOCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvVHdvcyA9IGZ1bmN0aW9uIHRvVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWJzKCkuaW5vdG4od2lkdGgpLmlhZGRuKDEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tVHdvcyA9IGZ1bmN0aW9uIGZyb21Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLnRlc3RuKHdpZHRoIC0gMSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdG4od2lkdGgpLmlhZGRuKDEpLmluZWcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiBpc05lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmUgIT09IDA7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5lZyA9IGZ1bmN0aW9uIGluZWcgKCkge1xuICAgIGlmICghdGhpcy5pc1plcm8oKSkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdW9yID0gZnVuY3Rpb24gaXVvciAobnVtKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldIHwgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlvciA9IGZ1bmN0aW9uIGlvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVvcihudW0pO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pb3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVvciA9IGZ1bmN0aW9uIHVvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdWFuZCA9IGZ1bmN0aW9uIGl1YW5kIChudW0pIHtcbiAgICAvLyBiID0gbWluLWxlbmd0aChudW0sIHRoaXMpXG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSAmIG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGIubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFuZCA9IGZ1bmN0aW9uIGlhbmQgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1YW5kKG51bSk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiBhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYW5kKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51YW5kID0gZnVuY3Rpb24gdWFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdWFuZCh0aGlzKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1eG9yID0gZnVuY3Rpb24gaXV4b3IgKG51bSkge1xuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYTtcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldIF4gYi53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcyAhPT0gYSkge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5peG9yID0gZnVuY3Rpb24gaXhvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXV4b3IobnVtKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIHhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5peG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml4b3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnV4b3IgPSBmdW5jdGlvbiB1eG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1eG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1eG9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIE5vdCBgYHRoaXNgYCB3aXRoIGBgd2lkdGhgYCBiaXR3aWR0aFxuICBCTi5wcm90b3R5cGUuaW5vdG4gPSBmdW5jdGlvbiBpbm90biAod2lkdGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyAmJiB3aWR0aCA+PSAwKTtcblxuICAgIHZhciBieXRlc05lZWRlZCA9IE1hdGguY2VpbCh3aWR0aCAvIDI2KSB8IDA7XG4gICAgdmFyIGJpdHNMZWZ0ID0gd2lkdGggJSAyNjtcblxuICAgIC8vIEV4dGVuZCB0aGUgYnVmZmVyIHdpdGggbGVhZGluZyB6ZXJvZXNcbiAgICB0aGlzLl9leHBhbmQoYnl0ZXNOZWVkZWQpO1xuXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgYnl0ZXNOZWVkZWQtLTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgY29tcGxldGUgd29yZHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzTmVlZGVkOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIHJlc2lkdWVcbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAoMHgzZmZmZmZmID4+ICgyNiAtIGJpdHNMZWZ0KSk7XG4gICAgfVxuXG4gICAgLy8gQW5kIHJlbW92ZSBsZWFkaW5nIHplcm9lc1xuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm5vdG4gPSBmdW5jdGlvbiBub3RuICh3aWR0aCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5vdG4od2lkdGgpO1xuICB9O1xuXG4gIC8vIFNldCBgYml0YCBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNldG4gPSBmdW5jdGlvbiBzZXRuIChiaXQsIHZhbCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG5cbiAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgIHRoaXMuX2V4cGFuZChvZmYgKyAxKTtcblxuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSB8ICgxIDw8IHdiaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gJiB+KDEgPDwgd2JpdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAobnVtKSB7XG4gICAgdmFyIHI7XG5cbiAgICAvLyBuZWdhdGl2ZSArIHBvc2l0aXZlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gcG9zaXRpdmUgKyBuZWdhdGl2ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhLCBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAvLyBDb3B5IHRoZSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIH0gZWxzZSBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAobnVtKSB7XG4gICAgdmFyIHJlcztcbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwICYmIHRoaXMubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSB0aGlzLnN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSBpZiAobnVtLm5lZ2F0aXZlID09PSAwICYmIHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gbnVtLnN1Yih0aGlzKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGQobnVtKTtcblxuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYWRkKHRoaXMpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAobnVtKSB7XG4gICAgLy8gdGhpcyAtICgtbnVtKSA9IHRoaXMgKyBudW1cbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgdmFyIHIgPSB0aGlzLmlhZGQobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcblxuICAgIC8vIC10aGlzIC0gbnVtID0gLSh0aGlzICsgbnVtKVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGQobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlXG4gICAgdmFyIGNtcCA9IHRoaXMuY21wKG51bSk7XG5cbiAgICAvLyBPcHRpbWl6YXRpb24gLSB6ZXJvaWZ5XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIGEgPiBiXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGNtcCA+IDApIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSAtIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBDb3B5IHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgaWYgKGNhcnJ5ID09PSAwICYmIGkgPCBhLmxlbmd0aCAmJiBhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSk7XG5cbiAgICBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBzbWFsbE11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgdmFyIGxlbiA9IChzZWxmLmxlbmd0aCArIG51bS5sZW5ndGgpIHwgMDtcbiAgICBvdXQubGVuZ3RoID0gbGVuO1xuICAgIGxlbiA9IChsZW4gLSAxKSB8IDA7XG5cbiAgICAvLyBQZWVsIG9uZSBpdGVyYXRpb24gKGNvbXBpbGVyIGNhbid0IGRvIGl0LCBiZWNhdXNlIG9mIGNvZGUgY29tcGxleGl0eSlcbiAgICB2YXIgYSA9IHNlbGYud29yZHNbMF0gfCAwO1xuICAgIHZhciBiID0gbnVtLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICB2YXIgY2FycnkgPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgIG91dC53b3Jkc1swXSA9IGxvO1xuXG4gICAgZm9yICh2YXIgayA9IDE7IGsgPCBsZW47IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBjYXJyeSA+Pj4gMjY7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IChrIC0gaikgfCAwO1xuICAgICAgICBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICByID0gYSAqIGIgKyByd29yZDtcbiAgICAgICAgbmNhcnJ5ICs9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkIHwgMDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5IHwgMDtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeSB8IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICAvLyBUT0RPKGluZHV0bnkpOiBpdCBtYXkgYmUgcmVhc29uYWJsZSB0byBvbWl0IGl0IGZvciB1c2VycyB3aG8gZG9uJ3QgbmVlZFxuICAvLyB0byB3b3JrIHdpdGggMjU2LWJpdCBudW1iZXJzLCBvdGhlcndpc2UgaXQgZ2l2ZXMgMjAlIGltcHJvdmVtZW50IGZvciAyNTYtYml0XG4gIC8vIG11bHRpcGxpY2F0aW9uIChsaWtlIGVsbGlwdGljIHNlY3AyNTZrMSkuXG4gIHZhciBjb21iMTBNdWxUbyA9IGZ1bmN0aW9uIGNvbWIxME11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBhID0gc2VsZi53b3JkcztcbiAgICB2YXIgYiA9IG51bS53b3JkcztcbiAgICB2YXIgbyA9IG91dC53b3JkcztcbiAgICB2YXIgYyA9IDA7XG4gICAgdmFyIGxvO1xuICAgIHZhciBtaWQ7XG4gICAgdmFyIGhpO1xuICAgIHZhciBhMCA9IGFbMF0gfCAwO1xuICAgIHZhciBhbDAgPSBhMCAmIDB4MWZmZjtcbiAgICB2YXIgYWgwID0gYTAgPj4+IDEzO1xuICAgIHZhciBhMSA9IGFbMV0gfCAwO1xuICAgIHZhciBhbDEgPSBhMSAmIDB4MWZmZjtcbiAgICB2YXIgYWgxID0gYTEgPj4+IDEzO1xuICAgIHZhciBhMiA9IGFbMl0gfCAwO1xuICAgIHZhciBhbDIgPSBhMiAmIDB4MWZmZjtcbiAgICB2YXIgYWgyID0gYTIgPj4+IDEzO1xuICAgIHZhciBhMyA9IGFbM10gfCAwO1xuICAgIHZhciBhbDMgPSBhMyAmIDB4MWZmZjtcbiAgICB2YXIgYWgzID0gYTMgPj4+IDEzO1xuICAgIHZhciBhNCA9IGFbNF0gfCAwO1xuICAgIHZhciBhbDQgPSBhNCAmIDB4MWZmZjtcbiAgICB2YXIgYWg0ID0gYTQgPj4+IDEzO1xuICAgIHZhciBhNSA9IGFbNV0gfCAwO1xuICAgIHZhciBhbDUgPSBhNSAmIDB4MWZmZjtcbiAgICB2YXIgYWg1ID0gYTUgPj4+IDEzO1xuICAgIHZhciBhNiA9IGFbNl0gfCAwO1xuICAgIHZhciBhbDYgPSBhNiAmIDB4MWZmZjtcbiAgICB2YXIgYWg2ID0gYTYgPj4+IDEzO1xuICAgIHZhciBhNyA9IGFbN10gfCAwO1xuICAgIHZhciBhbDcgPSBhNyAmIDB4MWZmZjtcbiAgICB2YXIgYWg3ID0gYTcgPj4+IDEzO1xuICAgIHZhciBhOCA9IGFbOF0gfCAwO1xuICAgIHZhciBhbDggPSBhOCAmIDB4MWZmZjtcbiAgICB2YXIgYWg4ID0gYTggPj4+IDEzO1xuICAgIHZhciBhOSA9IGFbOV0gfCAwO1xuICAgIHZhciBhbDkgPSBhOSAmIDB4MWZmZjtcbiAgICB2YXIgYWg5ID0gYTkgPj4+IDEzO1xuICAgIHZhciBiMCA9IGJbMF0gfCAwO1xuICAgIHZhciBibDAgPSBiMCAmIDB4MWZmZjtcbiAgICB2YXIgYmgwID0gYjAgPj4+IDEzO1xuICAgIHZhciBiMSA9IGJbMV0gfCAwO1xuICAgIHZhciBibDEgPSBiMSAmIDB4MWZmZjtcbiAgICB2YXIgYmgxID0gYjEgPj4+IDEzO1xuICAgIHZhciBiMiA9IGJbMl0gfCAwO1xuICAgIHZhciBibDIgPSBiMiAmIDB4MWZmZjtcbiAgICB2YXIgYmgyID0gYjIgPj4+IDEzO1xuICAgIHZhciBiMyA9IGJbM10gfCAwO1xuICAgIHZhciBibDMgPSBiMyAmIDB4MWZmZjtcbiAgICB2YXIgYmgzID0gYjMgPj4+IDEzO1xuICAgIHZhciBiNCA9IGJbNF0gfCAwO1xuICAgIHZhciBibDQgPSBiNCAmIDB4MWZmZjtcbiAgICB2YXIgYmg0ID0gYjQgPj4+IDEzO1xuICAgIHZhciBiNSA9IGJbNV0gfCAwO1xuICAgIHZhciBibDUgPSBiNSAmIDB4MWZmZjtcbiAgICB2YXIgYmg1ID0gYjUgPj4+IDEzO1xuICAgIHZhciBiNiA9IGJbNl0gfCAwO1xuICAgIHZhciBibDYgPSBiNiAmIDB4MWZmZjtcbiAgICB2YXIgYmg2ID0gYjYgPj4+IDEzO1xuICAgIHZhciBiNyA9IGJbN10gfCAwO1xuICAgIHZhciBibDcgPSBiNyAmIDB4MWZmZjtcbiAgICB2YXIgYmg3ID0gYjcgPj4+IDEzO1xuICAgIHZhciBiOCA9IGJbOF0gfCAwO1xuICAgIHZhciBibDggPSBiOCAmIDB4MWZmZjtcbiAgICB2YXIgYmg4ID0gYjggPj4+IDEzO1xuICAgIHZhciBiOSA9IGJbOV0gfCAwO1xuICAgIHZhciBibDkgPSBiOSAmIDB4MWZmZjtcbiAgICB2YXIgYmg5ID0gYjkgPj4+IDEzO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0gc2VsZi5uZWdhdGl2ZSBeIG51bS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gMTk7XG4gICAgLyogayA9IDAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDAsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMCwgYmgwKTtcbiAgICB2YXIgdzAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcwID4+PiAyNikpIHwgMDtcbiAgICB3MCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDEsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDEpKSB8IDA7XG4gICAgdmFyIHcxID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MSA+Pj4gMjYpKSB8IDA7XG4gICAgdzEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwyLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDIsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDIsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMikpIHwgMDtcbiAgICB2YXIgdzIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcyID4+PiAyNikpIHwgMDtcbiAgICB3MiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDMsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMykpIHwgMDtcbiAgICB2YXIgdzMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHczID4+PiAyNikpIHwgMDtcbiAgICB3MyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDQsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDQpKSB8IDA7XG4gICAgdmFyIHc0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NCA+Pj4gMjYpKSB8IDA7XG4gICAgdzQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw1LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDUsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDUsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNSkpIHwgMDtcbiAgICB2YXIgdzUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc1ID4+PiAyNikpIHwgMDtcbiAgICB3NSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDYsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNikpIHwgMDtcbiAgICB2YXIgdzYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc2ID4+PiAyNikpIHwgMDtcbiAgICB3NiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDcsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDcpKSB8IDA7XG4gICAgdmFyIHc3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NyA+Pj4gMjYpKSB8IDA7XG4gICAgdzcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw4LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDgsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDgsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOCkpIHwgMDtcbiAgICB2YXIgdzggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc4ID4+PiAyNikpIHwgMDtcbiAgICB3OCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDkgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzkgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc5ID4+PiAyNikpIHwgMDtcbiAgICB3OSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDEpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTAgPj4+IDI2KSkgfCAwO1xuICAgIHcxMCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDExICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDIpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMSA+Pj4gMjYpKSB8IDA7XG4gICAgdzExICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgzKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwzKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgzKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTIgPj4+IDI2KSkgfCAwO1xuICAgIHcxMiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDQpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEzID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTMgPj4+IDI2KSkgfCAwO1xuICAgIHcxMyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDUpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg2KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw2KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg2KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTUgPj4+IDI2KSkgfCAwO1xuICAgIHcxNSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDcpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTYgPj4+IDI2KSkgfCAwO1xuICAgIHcxNiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDgpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNyA+Pj4gMjYpKSB8IDA7XG4gICAgdzE3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg5KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw5KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg5KTtcbiAgICB2YXIgdzE4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTggPj4+IDI2KSkgfCAwO1xuICAgIHcxOCAmPSAweDNmZmZmZmY7XG4gICAgb1swXSA9IHcwO1xuICAgIG9bMV0gPSB3MTtcbiAgICBvWzJdID0gdzI7XG4gICAgb1szXSA9IHczO1xuICAgIG9bNF0gPSB3NDtcbiAgICBvWzVdID0gdzU7XG4gICAgb1s2XSA9IHc2O1xuICAgIG9bN10gPSB3NztcbiAgICBvWzhdID0gdzg7XG4gICAgb1s5XSA9IHc5O1xuICAgIG9bMTBdID0gdzEwO1xuICAgIG9bMTFdID0gdzExO1xuICAgIG9bMTJdID0gdzEyO1xuICAgIG9bMTNdID0gdzEzO1xuICAgIG9bMTRdID0gdzE0O1xuICAgIG9bMTVdID0gdzE1O1xuICAgIG9bMTZdID0gdzE2O1xuICAgIG9bMTddID0gdzE3O1xuICAgIG9bMThdID0gdzE4O1xuICAgIGlmIChjICE9PSAwKSB7XG4gICAgICBvWzE5XSA9IGM7XG4gICAgICBvdXQubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH07XG5cbiAgLy8gUG9seWZpbGwgY29tYlxuICBpZiAoIU1hdGguaW11bCkge1xuICAgIGNvbWIxME11bFRvID0gc21hbGxNdWxUbztcbiAgfVxuXG4gIGZ1bmN0aW9uIGJpZ011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aDtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgdmFyIGhuY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb3V0Lmxlbmd0aCAtIDE7IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBobmNhcnJ5O1xuICAgICAgaG5jYXJyeSA9IDA7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IGsgLSBqO1xuICAgICAgICB2YXIgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICB2YXIgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHZhciByID0gYSAqIGI7XG5cbiAgICAgICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArICgociAvIDB4NDAwMDAwMCkgfCAwKSkgfCAwO1xuICAgICAgICBsbyA9IChsbyArIHJ3b3JkKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAobG8gPj4+IDI2KSkgfCAwO1xuXG4gICAgICAgIGhuY2FycnkgKz0gbmNhcnJ5ID4+PiAyNjtcbiAgICAgICAgbmNhcnJ5ICY9IDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkO1xuICAgICAgY2FycnkgPSBuY2Fycnk7XG4gICAgICBuY2FycnkgPSBobmNhcnJ5O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgZnVuY3Rpb24ganVtYm9NdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgZmZ0bSA9IG5ldyBGRlRNKCk7XG4gICAgcmV0dXJuIGZmdG0ubXVscChzZWxmLCBudW0sIG91dCk7XG4gIH1cblxuICBCTi5wcm90b3R5cGUubXVsVG8gPSBmdW5jdGlvbiBtdWxUbyAobnVtLCBvdXQpIHtcbiAgICB2YXIgcmVzO1xuICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCArIG51bS5sZW5ndGg7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxMCAmJiBudW0ubGVuZ3RoID09PSAxMCkge1xuICAgICAgcmVzID0gY29tYjEwTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgNjMpIHtcbiAgICAgIHJlcyA9IHNtYWxsTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgMTAyNCkge1xuICAgICAgcmVzID0gYmlnTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvb2xleS1UdWtleSBhbGdvcml0aG0gZm9yIEZGVFxuICAvLyBzbGlnaHRseSByZXZpc2l0ZWQgdG8gcmVseSBvbiBsb29waW5nIGluc3RlYWQgb2YgcmVjdXJzaW9uXG5cbiAgZnVuY3Rpb24gRkZUTSAoeCwgeSkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIEZGVE0ucHJvdG90eXBlLm1ha2VSQlQgPSBmdW5jdGlvbiBtYWtlUkJUIChOKSB7XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGwgPSBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyhOKSAtIDE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHRbaV0gPSB0aGlzLnJldkJpbihpLCBsLCBOKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGJpbmFyeS1yZXZlcnNlZCByZXByZXNlbnRhdGlvbiBvZiBgeGBcbiAgRkZUTS5wcm90b3R5cGUucmV2QmluID0gZnVuY3Rpb24gcmV2QmluICh4LCBsLCBOKSB7XG4gICAgaWYgKHggPT09IDAgfHwgeCA9PT0gTiAtIDEpIHJldHVybiB4O1xuXG4gICAgdmFyIHJiID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgcmIgfD0gKHggJiAxKSA8PCAobCAtIGkgLSAxKTtcbiAgICAgIHggPj49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJiO1xuICB9O1xuXG4gIC8vIFBlcmZvcm1zIFwidHdlZWRsaW5nXCIgcGhhc2UsIHRoZXJlZm9yZSAnZW11bGF0aW5nJ1xuICAvLyBiZWhhdmlvdXIgb2YgdGhlIHJlY3Vyc2l2ZSBhbGdvcml0aG1cbiAgRkZUTS5wcm90b3R5cGUucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUgKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcnR3c1tpXSA9IHJ3c1tyYnRbaV1dO1xuICAgICAgaXR3c1tpXSA9IGl3c1tyYnRbaV1dO1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiB0cmFuc2Zvcm0gKHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOLCByYnQpIHtcbiAgICB0aGlzLnBlcm11dGUocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTik7XG5cbiAgICBmb3IgKHZhciBzID0gMTsgcyA8IE47IHMgPDw9IDEpIHtcbiAgICAgIHZhciBsID0gcyA8PCAxO1xuXG4gICAgICB2YXIgcnR3ZGYgPSBNYXRoLmNvcygyICogTWF0aC5QSSAvIGwpO1xuICAgICAgdmFyIGl0d2RmID0gTWF0aC5zaW4oMiAqIE1hdGguUEkgLyBsKTtcblxuICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBOOyBwICs9IGwpIHtcbiAgICAgICAgdmFyIHJ0d2RmXyA9IHJ0d2RmO1xuICAgICAgICB2YXIgaXR3ZGZfID0gaXR3ZGY7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzOyBqKyspIHtcbiAgICAgICAgICB2YXIgcmUgPSBydHdzW3AgKyBqXTtcbiAgICAgICAgICB2YXIgaWUgPSBpdHdzW3AgKyBqXTtcblxuICAgICAgICAgIHZhciBybyA9IHJ0d3NbcCArIGogKyBzXTtcbiAgICAgICAgICB2YXIgaW8gPSBpdHdzW3AgKyBqICsgc107XG5cbiAgICAgICAgICB2YXIgcnggPSBydHdkZl8gKiBybyAtIGl0d2RmXyAqIGlvO1xuXG4gICAgICAgICAgaW8gPSBydHdkZl8gKiBpbyArIGl0d2RmXyAqIHJvO1xuICAgICAgICAgIHJvID0gcng7XG5cbiAgICAgICAgICBydHdzW3AgKyBqXSA9IHJlICsgcm87XG4gICAgICAgICAgaXR3c1twICsgal0gPSBpZSArIGlvO1xuXG4gICAgICAgICAgcnR3c1twICsgaiArIHNdID0gcmUgLSBybztcbiAgICAgICAgICBpdHdzW3AgKyBqICsgc10gPSBpZSAtIGlvO1xuXG4gICAgICAgICAgLyoganNoaW50IG1heGRlcHRoIDogZmFsc2UgKi9cbiAgICAgICAgICBpZiAoaiAhPT0gbCkge1xuICAgICAgICAgICAgcnggPSBydHdkZiAqIHJ0d2RmXyAtIGl0d2RmICogaXR3ZGZfO1xuXG4gICAgICAgICAgICBpdHdkZl8gPSBydHdkZiAqIGl0d2RmXyArIGl0d2RmICogcnR3ZGZfO1xuICAgICAgICAgICAgcnR3ZGZfID0gcng7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmd1ZXNzTGVuMTNiID0gZnVuY3Rpb24gZ3Vlc3NMZW4xM2IgKG4sIG0pIHtcbiAgICB2YXIgTiA9IE1hdGgubWF4KG0sIG4pIHwgMTtcbiAgICB2YXIgb2RkID0gTiAmIDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoTiA9IE4gLyAyIHwgMDsgTjsgTiA9IE4gPj4+IDEpIHtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICByZXR1cm4gMSA8PCBpICsgMSArIG9kZDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb25qdWdhdGUgPSBmdW5jdGlvbiBjb25qdWdhdGUgKHJ3cywgaXdzLCBOKSB7XG4gICAgaWYgKE4gPD0gMSkgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdCA9IHJ3c1tpXTtcblxuICAgICAgcndzW2ldID0gcndzW04gLSBpIC0gMV07XG4gICAgICByd3NbTiAtIGkgLSAxXSA9IHQ7XG5cbiAgICAgIHQgPSBpd3NbaV07XG5cbiAgICAgIGl3c1tpXSA9IC1pd3NbTiAtIGkgLSAxXTtcbiAgICAgIGl3c1tOIC0gaSAtIDFdID0gLXQ7XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm5vcm1hbGl6ZTEzYiA9IGZ1bmN0aW9uIG5vcm1hbGl6ZTEzYiAod3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHcgPSBNYXRoLnJvdW5kKHdzWzIgKiBpICsgMV0gLyBOKSAqIDB4MjAwMCArXG4gICAgICAgIE1hdGgucm91bmQod3NbMiAqIGldIC8gTikgK1xuICAgICAgICBjYXJyeTtcblxuICAgICAgd3NbaV0gPSB3ICYgMHgzZmZmZmZmO1xuXG4gICAgICBpZiAodyA8IDB4NDAwMDAwMCkge1xuICAgICAgICBjYXJyeSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJyeSA9IHcgLyAweDQwMDAwMDAgfCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB3cztcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb252ZXJ0MTNiID0gZnVuY3Rpb24gY29udmVydDEzYiAod3MsIGxlbiwgcndzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjYXJyeSA9IGNhcnJ5ICsgKHdzW2ldIHwgMCk7XG5cbiAgICAgIHJ3c1syICogaV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgICByd3NbMiAqIGkgKyAxXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICB9XG5cbiAgICAvLyBQYWQgd2l0aCB6ZXJvZXNcbiAgICBmb3IgKGkgPSAyICogbGVuOyBpIDwgTjsgKytpKSB7XG4gICAgICByd3NbaV0gPSAwO1xuICAgIH1cblxuICAgIGFzc2VydChjYXJyeSA9PT0gMCk7XG4gICAgYXNzZXJ0KChjYXJyeSAmIH4weDFmZmYpID09PSAwKTtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5zdHViID0gZnVuY3Rpb24gc3R1YiAoTikge1xuICAgIHZhciBwaCA9IG5ldyBBcnJheShOKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcGhbaV0gPSAwO1xuICAgIH1cblxuICAgIHJldHVybiBwaDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5tdWxwID0gZnVuY3Rpb24gbXVscCAoeCwgeSwgb3V0KSB7XG4gICAgdmFyIE4gPSAyICogdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCwgeS5sZW5ndGgpO1xuXG4gICAgdmFyIHJidCA9IHRoaXMubWFrZVJCVChOKTtcblxuICAgIHZhciBfID0gdGhpcy5zdHViKE4pO1xuXG4gICAgdmFyIHJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgcndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBucndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBucndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbml3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgcm13cyA9IG91dC53b3JkcztcbiAgICBybXdzLmxlbmd0aCA9IE47XG5cbiAgICB0aGlzLmNvbnZlcnQxM2IoeC53b3JkcywgeC5sZW5ndGgsIHJ3cywgTik7XG4gICAgdGhpcy5jb252ZXJ0MTNiKHkud29yZHMsIHkubGVuZ3RoLCBucndzLCBOKTtcblxuICAgIHRoaXMudHJhbnNmb3JtKHJ3cywgXywgcndzdCwgaXdzdCwgTiwgcmJ0KTtcbiAgICB0aGlzLnRyYW5zZm9ybShucndzLCBfLCBucndzdCwgbml3c3QsIE4sIHJidCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdmFyIHJ4ID0gcndzdFtpXSAqIG5yd3N0W2ldIC0gaXdzdFtpXSAqIG5pd3N0W2ldO1xuICAgICAgaXdzdFtpXSA9IHJ3c3RbaV0gKiBuaXdzdFtpXSArIGl3c3RbaV0gKiBucndzdFtpXTtcbiAgICAgIHJ3c3RbaV0gPSByeDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmp1Z2F0ZShyd3N0LCBpd3N0LCBOKTtcbiAgICB0aGlzLnRyYW5zZm9ybShyd3N0LCBpd3N0LCBybXdzLCBfLCBOLCByYnQpO1xuICAgIHRoaXMuY29uanVnYXRlKHJtd3MsIF8sIE4pO1xuICAgIHRoaXMubm9ybWFsaXplMTNiKHJtd3MsIE4pO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0geC5uZWdhdGl2ZSBeIHkubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHgubGVuZ3RoICsgeS5sZW5ndGg7XG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGB0aGlzYCBieSBgbnVtYFxuICBCTi5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiB0aGlzLm11bFRvKG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBlbXBsb3lpbmcgRkZUXG4gIEJOLnByb3RvdHlwZS5tdWxmID0gZnVuY3Rpb24gbXVsZiAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgTXVsdGlwbGljYXRpb25cbiAgQk4ucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKG51bSwgdGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmltdWxuID0gZnVuY3Rpb24gaW11bG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG5cbiAgICAvLyBDYXJyeVxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKiBudW07XG4gICAgICB2YXIgbG8gPSAodyAmIDB4M2ZmZmZmZikgKyAoY2FycnkgJiAweDNmZmZmZmYpO1xuICAgICAgY2FycnkgPj49IDI2O1xuICAgICAgY2FycnkgKz0gKHcgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgIC8vIE5PVEU6IGxvIGlzIDI3Yml0IG1heGltdW1cbiAgICAgIGNhcnJ5ICs9IGxvID4+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm11bG4gPSBmdW5jdGlvbiBtdWxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKG51bSk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLm11bCh0aGlzKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSk7XG4gIH07XG5cbiAgLy8gTWF0aC5wb3coYHRoaXNgLCBgbnVtYClcbiAgQk4ucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAobnVtKSB7XG4gICAgdmFyIHcgPSB0b0JpdEFycmF5KG51bSk7XG4gICAgaWYgKHcubGVuZ3RoID09PSAwKSByZXR1cm4gbmV3IEJOKDEpO1xuXG4gICAgLy8gU2tpcCBsZWFkaW5nIHplcm9lc1xuICAgIHZhciByZXMgPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdy5sZW5ndGg7IGkrKywgcmVzID0gcmVzLnNxcigpKSB7XG4gICAgICBpZiAod1tpXSAhPT0gMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKCsraSA8IHcubGVuZ3RoKSB7XG4gICAgICBmb3IgKHZhciBxID0gcmVzLnNxcigpOyBpIDwgdy5sZW5ndGg7IGkrKywgcSA9IHEuc3FyKCkpIHtcbiAgICAgICAgaWYgKHdbaV0gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHJlcy5tdWwocSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0IGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXNobG4gPSBmdW5jdGlvbiBpdXNobG4gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG4gICAgdmFyIGNhcnJ5TWFzayA9ICgweDNmZmZmZmYgPj4+ICgyNiAtIHIpKSA8PCAoMjYgLSByKTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbmV3Q2FycnkgPSB0aGlzLndvcmRzW2ldICYgY2FycnlNYXNrO1xuICAgICAgICB2YXIgYyA9ICgodGhpcy53b3Jkc1tpXSB8IDApIC0gbmV3Q2FycnkpIDw8IHI7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjIHwgY2Fycnk7XG4gICAgICAgIGNhcnJ5ID0gbmV3Q2FycnkgPj4+ICgyNiAtIHIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2FycnkpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzICE9PSAwKSB7XG4gICAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIHNdID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggKz0gcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hsbiA9IGZ1bmN0aW9uIGlzaGxuIChiaXRzKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodCBpbi1wbGFjZVxuICAvLyBOT1RFOiBgaGludGAgaXMgYSBsb3dlc3QgYml0IGJlZm9yZSB0cmFpbGluZyB6ZXJvZXNcbiAgLy8gTk9URTogaWYgYGV4dGVuZGVkYCBpcyBwcmVzZW50IC0gaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBkZXN0cm95ZWQgYml0c1xuICBCTi5wcm90b3R5cGUuaXVzaHJuID0gZnVuY3Rpb24gaXVzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgaDtcbiAgICBpZiAoaGludCkge1xuICAgICAgaCA9IChoaW50IC0gKGhpbnQgJSAyNikpIC8gMjY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGggPSAwO1xuICAgIH1cblxuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gTWF0aC5taW4oKGJpdHMgLSByKSAvIDI2LCB0aGlzLmxlbmd0aCk7XG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgdmFyIG1hc2tlZFdvcmRzID0gZXh0ZW5kZWQ7XG5cbiAgICBoIC09IHM7XG4gICAgaCA9IE1hdGgubWF4KDAsIGgpO1xuXG4gICAgLy8gRXh0ZW5kZWQgbW9kZSwgY29weSBtYXNrZWQgcGFydFxuICAgIGlmIChtYXNrZWRXb3Jkcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgbWFza2VkV29yZHMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuICAgICAgbWFza2VkV29yZHMubGVuZ3RoID0gcztcbiAgICB9XG5cbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgLy8gTm8tb3AsIHdlIHNob3VsZCBub3QgbW92ZSBhbnl0aGluZyBhdCBhbGxcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gcykge1xuICAgICAgdGhpcy5sZW5ndGggLT0gcztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2kgKyBzXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiAoY2FycnkgIT09IDAgfHwgaSA+PSBoKTsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IChjYXJyeSA8PCAoMjYgLSByKSkgfCAod29yZCA+Pj4gcik7XG4gICAgICBjYXJyeSA9IHdvcmQgJiBtYXNrO1xuICAgIH1cblxuICAgIC8vIFB1c2ggY2FycmllZCBiaXRzIGFzIGEgbWFza1xuICAgIGlmIChtYXNrZWRXb3JkcyAmJiBjYXJyeSAhPT0gMCkge1xuICAgICAgbWFza2VkV29yZHMud29yZHNbbWFza2VkV29yZHMubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hybiA9IGZ1bmN0aW9uIGlzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNocm4oYml0cywgaGludCwgZXh0ZW5kZWQpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnRcbiAgQk4ucHJvdG90eXBlLnNobG4gPSBmdW5jdGlvbiBzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNobG4gPSBmdW5jdGlvbiB1c2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0XG4gIEJOLnByb3RvdHlwZS5zaHJuID0gZnVuY3Rpb24gc2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaHJuID0gZnVuY3Rpb24gdXNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiaXRzKTtcbiAgfTtcblxuICAvLyBUZXN0IGlmIG4gYml0IGlzIHNldFxuICBCTi5wcm90b3R5cGUudGVzdG4gPSBmdW5jdGlvbiB0ZXN0biAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBiaXQgYW5kIHJldHVyblxuICAgIHZhciB3ID0gdGhpcy53b3Jkc1tzXTtcblxuICAgIHJldHVybiAhISh3ICYgcSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyIChpbi1wbGFjZSlcbiAgQk4ucHJvdG90eXBlLmltYXNrbiA9IGZ1bmN0aW9uIGltYXNrbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcblxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAnaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzJyk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHMrKztcbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1pbihzLCB0aGlzLmxlbmd0aCk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gJj0gbWFzaztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlclxuICBCTi5wcm90b3R5cGUubWFza24gPSBmdW5jdGlvbiBtYXNrbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGJpdHMpO1xuICB9O1xuXG4gIC8vIEFkZCBwbGFpbiBudW1iZXIgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pYWRkbiA9IGZ1bmN0aW9uIGlhZGRuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pc3VibigtbnVtKTtcblxuICAgIC8vIFBvc3NpYmxlIHNpZ24gY2hhbmdlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiAodGhpcy53b3Jkc1swXSB8IDApIDwgbnVtKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gPSBudW0gLSAodGhpcy53b3Jkc1swXSB8IDApO1xuICAgICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pc3VibihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aG91dCBjaGVja3NcbiAgICByZXR1cm4gdGhpcy5faWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lhZGRuID0gZnVuY3Rpb24gX2lhZGRuIChudW0pIHtcbiAgICB0aGlzLndvcmRzWzBdICs9IG51bTtcblxuICAgIC8vIENhcnJ5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldID49IDB4NDAwMDAwMDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldIC09IDB4NDAwMDAwMDtcbiAgICAgIGlmIChpID09PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0rKztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSArIDEpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgcGxhaW4gbnVtYmVyIGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pc3VibiA9IGZ1bmN0aW9uIGlzdWJuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pYWRkbigtbnVtKTtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZG4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy53b3Jkc1swXSAtPSBudW07XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA8IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAtdGhpcy53b3Jkc1swXTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDYXJyeVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldIDwgMDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gKz0gMHg0MDAwMDAwO1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSAtPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFkZG4gPSBmdW5jdGlvbiBhZGRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnN1Ym4gPSBmdW5jdGlvbiBzdWJuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhYnMgPSBmdW5jdGlvbiBpYWJzICgpIHtcbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiBhYnMgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFicygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faXNobG5zdWJtdWwgPSBmdW5jdGlvbiBfaXNobG5zdWJtdWwgKG51bSwgbXVsLCBzaGlmdCkge1xuICAgIHZhciBsZW4gPSBudW0ubGVuZ3RoICsgc2hpZnQ7XG4gICAgdmFyIGk7XG5cbiAgICB0aGlzLl9leHBhbmQobGVuKTtcblxuICAgIHZhciB3O1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgdmFyIHJpZ2h0ID0gKG51bS53b3Jkc1tpXSB8IDApICogbXVsO1xuICAgICAgdyAtPSByaWdodCAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gKHcgPj4gMjYpIC0gKChyaWdodCAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBpIDwgdGhpcy5sZW5ndGggLSBzaGlmdDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSA9PT0gMCkgcmV0dXJuIHRoaXMuc3RyaXAoKTtcblxuICAgIC8vIFN1YnRyYWN0aW9uIG92ZXJmbG93XG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAtMSk7XG4gICAgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gLSh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICB0aGlzLm5lZ2F0aXZlID0gMTtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl93b3JkRGl2ID0gZnVuY3Rpb24gX3dvcmREaXYgKG51bSwgbW9kZSkge1xuICAgIHZhciBzaGlmdCA9IHRoaXMubGVuZ3RoIC0gbnVtLmxlbmd0aDtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtO1xuXG4gICAgLy8gTm9ybWFsaXplXG4gICAgdmFyIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgdmFyIGJoaUJpdHMgPSB0aGlzLl9jb3VudEJpdHMoYmhpKTtcbiAgICBzaGlmdCA9IDI2IC0gYmhpQml0cztcbiAgICBpZiAoc2hpZnQgIT09IDApIHtcbiAgICAgIGIgPSBiLnVzaGxuKHNoaWZ0KTtcbiAgICAgIGEuaXVzaGxuKHNoaWZ0KTtcbiAgICAgIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBxdW90aWVudFxuICAgIHZhciBtID0gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAgICB2YXIgcTtcblxuICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgcSA9IG5ldyBCTihudWxsKTtcbiAgICAgIHEubGVuZ3RoID0gbSArIDE7XG4gICAgICBxLndvcmRzID0gbmV3IEFycmF5KHEubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcS5sZW5ndGg7IGkrKykge1xuICAgICAgICBxLndvcmRzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGlmZiA9IGEuY2xvbmUoKS5faXNobG5zdWJtdWwoYiwgMSwgbSk7XG4gICAgaWYgKGRpZmYubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIGEgPSBkaWZmO1xuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1ttXSA9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IG0gLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgdmFyIHFqID0gKGEud29yZHNbYi5sZW5ndGggKyBqXSB8IDApICogMHg0MDAwMDAwICtcbiAgICAgICAgKGEud29yZHNbYi5sZW5ndGggKyBqIC0gMV0gfCAwKTtcblxuICAgICAgLy8gTk9URTogKHFqIC8gYmhpKSBpcyAoMHgzZmZmZmZmICogMHg0MDAwMDAwICsgMHgzZmZmZmZmKSAvIDB4MjAwMDAwMCBtYXhcbiAgICAgIC8vICgweDdmZmZmZmYpXG4gICAgICBxaiA9IE1hdGgubWluKChxaiAvIGJoaSkgfCAwLCAweDNmZmZmZmYpO1xuXG4gICAgICBhLl9pc2hsbnN1Ym11bChiLCBxaiwgaik7XG4gICAgICB3aGlsZSAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBxai0tO1xuICAgICAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgYS5faXNobG5zdWJtdWwoYiwgMSwgaik7XG4gICAgICAgIGlmICghYS5pc1plcm8oKSkge1xuICAgICAgICAgIGEubmVnYXRpdmUgXj0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1tqXSA9IHFqO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocSkge1xuICAgICAgcS5zdHJpcCgpO1xuICAgIH1cbiAgICBhLnN0cmlwKCk7XG5cbiAgICAvLyBEZW5vcm1hbGl6ZVxuICAgIGlmIChtb2RlICE9PSAnZGl2JyAmJiBzaGlmdCAhPT0gMCkge1xuICAgICAgYS5pdXNocm4oc2hpZnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaXY6IHEgfHwgbnVsbCxcbiAgICAgIG1vZDogYVxuICAgIH07XG4gIH07XG5cbiAgLy8gTk9URTogMSkgYG1vZGVgIGNhbiBiZSBzZXQgdG8gYG1vZGAgdG8gcmVxdWVzdCBtb2Qgb25seSxcbiAgLy8gICAgICAgdG8gYGRpdmAgdG8gcmVxdWVzdCBkaXYgb25seSwgb3IgYmUgYWJzZW50IHRvXG4gIC8vICAgICAgIHJlcXVlc3QgYm90aCBkaXYgJiBtb2RcbiAgLy8gICAgICAgMikgYHBvc2l0aXZlYCBpcyB0cnVlIGlmIHVuc2lnbmVkIG1vZCBpcyByZXF1ZXN0ZWRcbiAgQk4ucHJvdG90eXBlLmRpdm1vZCA9IGZ1bmN0aW9uIGRpdm1vZCAobnVtLCBtb2RlLCBwb3NpdGl2ZSkge1xuICAgIGFzc2VydCghbnVtLmlzWmVybygpKTtcblxuICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiBuZXcgQk4oMClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRpdiwgbW9kLCByZXM7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0sIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaWFkZChudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiByZXMubW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICgodGhpcy5uZWdhdGl2ZSAmIG51bS5uZWdhdGl2ZSkgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlzdWIobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHJlcy5kaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmUgYXQgdGhpcyBwb2ludFxuXG4gICAgLy8gU3RyaXAgYm90aCBudW1iZXJzIHRvIGFwcHJveGltYXRlIHNoaWZ0IHZhbHVlXG4gICAgaWYgKG51bS5sZW5ndGggPiB0aGlzLmxlbmd0aCB8fCB0aGlzLmNtcChudW0pIDwgMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogdGhpc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBWZXJ5IHNob3J0IHJlZHVjdGlvblxuICAgIGlmIChudW0ubGVuZ3RoID09PSAxKSB7XG4gICAgICBpZiAobW9kZSA9PT0gJ2RpdicpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICAgIG1vZDogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSA9PT0gJ21vZCcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IG51bGwsXG4gICAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd29yZERpdihudW0sIG1vZGUpO1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgIC8gYG51bWBcbiAgQk4ucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uIGRpdiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ2RpdicsIGZhbHNlKS5kaXY7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgJSBgbnVtYFxuICBCTi5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgZmFsc2UpLm1vZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW1vZCA9IGZ1bmN0aW9uIHVtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCB0cnVlKS5tb2Q7XG4gIH07XG5cbiAgLy8gRmluZCBSb3VuZChgdGhpc2AgLyBgbnVtYClcbiAgQk4ucHJvdG90eXBlLmRpdlJvdW5kID0gZnVuY3Rpb24gZGl2Um91bmQgKG51bSkge1xuICAgIHZhciBkbSA9IHRoaXMuZGl2bW9kKG51bSk7XG5cbiAgICAvLyBGYXN0IGNhc2UgLSBleGFjdCBkaXZpc2lvblxuICAgIGlmIChkbS5tb2QuaXNaZXJvKCkpIHJldHVybiBkbS5kaXY7XG5cbiAgICB2YXIgbW9kID0gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0ubW9kLmlzdWIobnVtKSA6IGRtLm1vZDtcblxuICAgIHZhciBoYWxmID0gbnVtLnVzaHJuKDEpO1xuICAgIHZhciByMiA9IG51bS5hbmRsbigxKTtcbiAgICB2YXIgY21wID0gbW9kLmNtcChoYWxmKTtcblxuICAgIC8vIFJvdW5kIGRvd25cbiAgICBpZiAoY21wIDwgMCB8fCByMiA9PT0gMSAmJiBjbXAgPT09IDApIHJldHVybiBkbS5kaXY7XG5cbiAgICAvLyBSb3VuZCB1cFxuICAgIHJldHVybiBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5kaXYuaXN1Ym4oMSkgOiBkbS5kaXYuaWFkZG4oMSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm1vZG4gPSBmdW5jdGlvbiBtb2RuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG4gICAgdmFyIHAgPSAoMSA8PCAyNikgJSBudW07XG5cbiAgICB2YXIgYWNjID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgYWNjID0gKHAgKiBhY2MgKyAodGhpcy53b3Jkc1tpXSB8IDApKSAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIGRpdmlzaW9uIGJ5IG51bWJlclxuICBCTi5wcm90b3R5cGUuaWRpdm4gPSBmdW5jdGlvbiBpZGl2biAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICsgY2FycnkgKiAweDQwMDAwMDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKHcgLyBudW0pIHwgMDtcbiAgICAgIGNhcnJ5ID0gdyAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5kaXZuID0gZnVuY3Rpb24gZGl2biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lZ2NkID0gZnVuY3Rpb24gZWdjZCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIHggPSB0aGlzO1xuICAgIHZhciB5ID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKHgubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHggPSB4LnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHggPSB4LmNsb25lKCk7XG4gICAgfVxuXG4gICAgLy8gQSAqIHggKyBCICogeSA9IHhcbiAgICB2YXIgQSA9IG5ldyBCTigxKTtcbiAgICB2YXIgQiA9IG5ldyBCTigwKTtcblxuICAgIC8vIEMgKiB4ICsgRCAqIHkgPSB5XG4gICAgdmFyIEMgPSBuZXcgQk4oMCk7XG4gICAgdmFyIEQgPSBuZXcgQk4oMSk7XG5cbiAgICB2YXIgZyA9IDA7XG5cbiAgICB3aGlsZSAoeC5pc0V2ZW4oKSAmJiB5LmlzRXZlbigpKSB7XG4gICAgICB4Lml1c2hybigxKTtcbiAgICAgIHkuaXVzaHJuKDEpO1xuICAgICAgKytnO1xuICAgIH1cblxuICAgIHZhciB5cCA9IHkuY2xvbmUoKTtcbiAgICB2YXIgeHAgPSB4LmNsb25lKCk7XG5cbiAgICB3aGlsZSAoIXguaXNaZXJvKCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7ICh4LndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgeC5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEEuaXNPZGQoKSB8fCBCLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEEuaWFkZCh5cCk7XG4gICAgICAgICAgICBCLmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEEuaXVzaHJuKDEpO1xuICAgICAgICAgIEIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7ICh5LndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgeS5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEMuaXNPZGQoKSB8fCBELmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEMuaWFkZCh5cCk7XG4gICAgICAgICAgICBELmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEMuaXVzaHJuKDEpO1xuICAgICAgICAgIEQuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh4LmNtcCh5KSA+PSAwKSB7XG4gICAgICAgIHguaXN1Yih5KTtcbiAgICAgICAgQS5pc3ViKEMpO1xuICAgICAgICBCLmlzdWIoRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5LmlzdWIoeCk7XG4gICAgICAgIEMuaXN1YihBKTtcbiAgICAgICAgRC5pc3ViKEIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhOiBDLFxuICAgICAgYjogRCxcbiAgICAgIGdjZDogeS5pdXNobG4oZylcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRoaXMgaXMgcmVkdWNlZCBpbmNhcm5hdGlvbiBvZiB0aGUgYmluYXJ5IEVFQVxuICAvLyBhYm92ZSwgZGVzaWduYXRlZCB0byBpbnZlcnQgbWVtYmVycyBvZiB0aGVcbiAgLy8gX3ByaW1lXyBmaWVsZHMgRihwKSBhdCBhIG1heGltYWwgc3BlZWRcbiAgQk4ucHJvdG90eXBlLl9pbnZtcCA9IGZ1bmN0aW9uIF9pbnZtcCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIGEgPSB0aGlzO1xuICAgIHZhciBiID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGEgPSBhLnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICAgIHZhciB4MiA9IG5ldyBCTigwKTtcblxuICAgIHZhciBkZWx0YSA9IGIuY2xvbmUoKTtcblxuICAgIHdoaWxlIChhLmNtcG4oMSkgPiAwICYmIGIuY21wbigxKSA+IDApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7IChhLndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgYS5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgxLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgxLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgxLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoYi53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIGIuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmICh4Mi5pc09kZCgpKSB7XG4gICAgICAgICAgICB4Mi5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4Mi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGEuY21wKGIpID49IDApIHtcbiAgICAgICAgYS5pc3ViKGIpO1xuICAgICAgICB4MS5pc3ViKHgyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGIuaXN1YihhKTtcbiAgICAgICAgeDIuaXN1Yih4MSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlcztcbiAgICBpZiAoYS5jbXBuKDEpID09PSAwKSB7XG4gICAgICByZXMgPSB4MTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0geDI7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQocCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ2NkID0gZnVuY3Rpb24gZ2NkIChudW0pIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIG51bS5hYnMoKTtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gdGhpcy5hYnMoKTtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtLmNsb25lKCk7XG4gICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgYi5uZWdhdGl2ZSA9IDA7XG5cbiAgICAvLyBSZW1vdmUgY29tbW9uIGZhY3RvciBvZiB0d29cbiAgICBmb3IgKHZhciBzaGlmdCA9IDA7IGEuaXNFdmVuKCkgJiYgYi5pc0V2ZW4oKTsgc2hpZnQrKykge1xuICAgICAgYS5pdXNocm4oMSk7XG4gICAgICBiLml1c2hybigxKTtcbiAgICB9XG5cbiAgICBkbyB7XG4gICAgICB3aGlsZSAoYS5pc0V2ZW4oKSkge1xuICAgICAgICBhLml1c2hybigxKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgIGIuaXVzaHJuKDEpO1xuICAgICAgfVxuXG4gICAgICB2YXIgciA9IGEuY21wKGIpO1xuICAgICAgaWYgKHIgPCAwKSB7XG4gICAgICAgIC8vIFN3YXAgYGFgIGFuZCBgYmAgdG8gbWFrZSBgYWAgYWx3YXlzIGJpZ2dlciB0aGFuIGBiYFxuICAgICAgICB2YXIgdCA9IGE7XG4gICAgICAgIGEgPSBiO1xuICAgICAgICBiID0gdDtcbiAgICAgIH0gZWxzZSBpZiAociA9PT0gMCB8fCBiLmNtcG4oMSkgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGEuaXN1YihiKTtcbiAgICB9IHdoaWxlICh0cnVlKTtcblxuICAgIHJldHVybiBiLml1c2hsbihzaGlmdCk7XG4gIH07XG5cbiAgLy8gSW52ZXJ0IG51bWJlciBpbiB0aGUgZmllbGQgRihudW0pXG4gIEJOLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZWdjZChudW0pLmEudW1vZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiBpc0V2ZW4gKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uIGlzT2RkICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMTtcbiAgfTtcblxuICAvLyBBbmQgZmlyc3Qgd29yZCBhbmQgbnVtXG4gIEJOLnByb3RvdHlwZS5hbmRsbiA9IGZ1bmN0aW9uIGFuZGxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkc1swXSAmIG51bTtcbiAgfTtcblxuICAvLyBJbmNyZW1lbnQgYXQgdGhlIGJpdCBwb3NpdGlvbiBpbi1saW5lXG4gIEJOLnByb3RvdHlwZS5iaW5jbiA9IGZ1bmN0aW9uIGJpbmNuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicpO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHRoaXMuX2V4cGFuZChzICsgMSk7XG4gICAgICB0aGlzLndvcmRzW3NdIHw9IHE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgYml0IGFuZCBwcm9wYWdhdGUsIGlmIG5lZWRlZFxuICAgIHZhciBjYXJyeSA9IHE7XG4gICAgZm9yICh2YXIgaSA9IHM7IGNhcnJ5ICE9PSAwICYmIGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdyArPSBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+Pj4gMjY7XG4gICAgICB3ICY9IDB4M2ZmZmZmZjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiBpc1plcm8gKCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbXBuID0gZnVuY3Rpb24gY21wbiAobnVtKSB7XG4gICAgdmFyIG5lZ2F0aXZlID0gbnVtIDwgMDtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmICFuZWdhdGl2ZSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG5lZ2F0aXZlKSByZXR1cm4gMTtcblxuICAgIHRoaXMuc3RyaXAoKTtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gMSkge1xuICAgICAgcmVzID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5lZ2F0aXZlKSB7XG4gICAgICAgIG51bSA9IC1udW07XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmLCAnTnVtYmVyIGlzIHRvbyBiaWcnKTtcblxuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzWzBdIHwgMDtcbiAgICAgIHJlcyA9IHcgPT09IG51bSA/IDAgOiB3IDwgbnVtID8gLTEgOiAxO1xuICAgIH1cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29tcGFyZSB0d28gbnVtYmVycyBhbmQgcmV0dXJuOlxuICAvLyAxIC0gaWYgYHRoaXNgID4gYG51bWBcbiAgLy8gMCAtIGlmIGB0aGlzYCA9PSBgbnVtYFxuICAvLyAtMSAtIGlmIGB0aGlzYCA8IGBudW1gXG4gIEJOLnByb3RvdHlwZS5jbXAgPSBmdW5jdGlvbiBjbXAgKG51bSkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIDE7XG5cbiAgICB2YXIgcmVzID0gdGhpcy51Y21wKG51bSk7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFVuc2lnbmVkIGNvbXBhcmlzb25cbiAgQk4ucHJvdG90eXBlLnVjbXAgPSBmdW5jdGlvbiB1Y21wIChudW0pIHtcbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBoYXZlIHRoZSBzYW1lIHNpZ25cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSByZXR1cm4gLTE7XG5cbiAgICB2YXIgcmVzID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGEgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHZhciBiID0gbnVtLndvcmRzW2ldIHwgMDtcblxuICAgICAgaWYgKGEgPT09IGIpIGNvbnRpbnVlO1xuICAgICAgaWYgKGEgPCBiKSB7XG4gICAgICAgIHJlcyA9IC0xO1xuICAgICAgfSBlbHNlIGlmIChhID4gYikge1xuICAgICAgICByZXMgPSAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0biA9IGZ1bmN0aW9uIGd0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndCA9IGZ1bmN0aW9uIGd0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlbiA9IGZ1bmN0aW9uIGd0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGUgPSBmdW5jdGlvbiBndGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0biA9IGZ1bmN0aW9uIGx0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHQgPSBmdW5jdGlvbiBsdCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGVuID0gZnVuY3Rpb24gbHRlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZSA9IGZ1bmN0aW9uIGx0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXFuID0gZnVuY3Rpb24gZXFuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAwO1xuICB9O1xuXG4gIC8vXG4gIC8vIEEgcmVkdWNlIGNvbnRleHQsIGNvdWxkIGJlIHVzaW5nIG1vbnRnb21lcnkgb3Igc29tZXRoaW5nIGJldHRlciwgZGVwZW5kaW5nXG4gIC8vIG9uIHRoZSBgbWAgaXRzZWxmLlxuICAvL1xuICBCTi5yZWQgPSBmdW5jdGlvbiByZWQgKG51bSkge1xuICAgIHJldHVybiBuZXcgUmVkKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvUmVkID0gZnVuY3Rpb24gdG9SZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIHJldHVybiBjdHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tUmVkID0gZnVuY3Rpb24gZnJvbVJlZCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAnZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2ZvcmNlUmVkID0gZnVuY3Rpb24gX2ZvcmNlUmVkIChjdHgpIHtcbiAgICB0aGlzLnJlZCA9IGN0eDtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZm9yY2VSZWQgPSBmdW5jdGlvbiBmb3JjZVJlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkQWRkID0gZnVuY3Rpb24gcmVkQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJQWRkID0gZnVuY3Rpb24gcmVkSUFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaWFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTdWIgPSBmdW5jdGlvbiByZWRTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTdWIgPSBmdW5jdGlvbiByZWRJU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNobCA9IGZ1bmN0aW9uIHJlZFNobCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zaGwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkTXVsID0gZnVuY3Rpb24gcmVkTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElNdWwgPSBmdW5jdGlvbiByZWRJTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTcXIgPSBmdW5jdGlvbiByZWRTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FyKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3FyID0gZnVuY3Rpb24gcmVkSVNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXNxcih0aGlzKTtcbiAgfTtcblxuICAvLyBTcXVhcmUgcm9vdCBvdmVyIHBcbiAgQk4ucHJvdG90eXBlLnJlZFNxcnQgPSBmdW5jdGlvbiByZWRTcXJ0ICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXJ0KHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJbnZtID0gZnVuY3Rpb24gcmVkSW52bSAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW52bSh0aGlzKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgICUgYHJlZCBtb2R1bG9gXG4gIEJOLnByb3RvdHlwZS5yZWROZWcgPSBmdW5jdGlvbiByZWROZWcgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubmVnKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRQb3cgPSBmdW5jdGlvbiByZWRQb3cgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCAmJiAhbnVtLnJlZCwgJ3JlZFBvdyhub3JtYWxOdW0pJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnBvdyh0aGlzLCBudW0pO1xuICB9O1xuXG4gIC8vIFByaW1lIG51bWJlcnMgd2l0aCBlZmZpY2llbnQgcmVkdWN0aW9uXG4gIHZhciBwcmltZXMgPSB7XG4gICAgazI1NjogbnVsbCxcbiAgICBwMjI0OiBudWxsLFxuICAgIHAxOTI6IG51bGwsXG4gICAgcDI1NTE5OiBudWxsXG4gIH07XG5cbiAgLy8gUHNldWRvLU1lcnNlbm5lIHByaW1lXG4gIGZ1bmN0aW9uIE1QcmltZSAobmFtZSwgcCkge1xuICAgIC8vIFAgPSAyIF4gTiAtIEtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMucCA9IG5ldyBCTihwLCAxNik7XG4gICAgdGhpcy5uID0gdGhpcy5wLmJpdExlbmd0aCgpO1xuICAgIHRoaXMuayA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCk7XG5cbiAgICB0aGlzLnRtcCA9IHRoaXMuX3RtcCgpO1xuICB9XG5cbiAgTVByaW1lLnByb3RvdHlwZS5fdG1wID0gZnVuY3Rpb24gX3RtcCAoKSB7XG4gICAgdmFyIHRtcCA9IG5ldyBCTihudWxsKTtcbiAgICB0bXAud29yZHMgPSBuZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubiAvIDEzKSk7XG4gICAgcmV0dXJuIHRtcDtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmlyZWR1Y2UgPSBmdW5jdGlvbiBpcmVkdWNlIChudW0pIHtcbiAgICAvLyBBc3N1bWVzIHRoYXQgYG51bWAgaXMgbGVzcyB0aGFuIGBQXjJgXG4gICAgLy8gbnVtID0gSEkgKiAoMiBeIE4gLSBLKSArIEhJICogSyArIExPID0gSEkgKiBLICsgTE8gKG1vZCBQKVxuICAgIHZhciByID0gbnVtO1xuICAgIHZhciBybGVuO1xuXG4gICAgZG8ge1xuICAgICAgdGhpcy5zcGxpdChyLCB0aGlzLnRtcCk7XG4gICAgICByID0gdGhpcy5pbXVsSyhyKTtcbiAgICAgIHIgPSByLmlhZGQodGhpcy50bXApO1xuICAgICAgcmxlbiA9IHIuYml0TGVuZ3RoKCk7XG4gICAgfSB3aGlsZSAocmxlbiA+IHRoaXMubik7XG5cbiAgICB2YXIgY21wID0gcmxlbiA8IHRoaXMubiA/IC0xIDogci51Y21wKHRoaXMucCk7XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgci53b3Jkc1swXSA9IDA7XG4gICAgICByLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgICByLmlzdWIodGhpcy5wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHIuc3RyaXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyByIGlzIEJOIHY0IGluc3RhbmNlXG4gICAgICAgIHIuc3RyaXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHIgaXMgQk4gdjUgaW5zdGFuY2VcbiAgICAgICAgci5fc3RyaXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZWxsaXB0aWMgPSBleHBvcnRzO1xuXG5lbGxpcHRpYy52ZXJzaW9uID0gcmVxdWlyZSgnLi4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcbmVsbGlwdGljLnV0aWxzID0gcmVxdWlyZSgnLi9lbGxpcHRpYy91dGlscycpO1xuZWxsaXB0aWMucmFuZCA9IHJlcXVpcmUoJ2Jyb3JhbmQnKTtcbmVsbGlwdGljLmN1cnZlID0gcmVxdWlyZSgnLi9lbGxpcHRpYy9jdXJ2ZScpO1xuZWxsaXB0aWMuY3VydmVzID0gcmVxdWlyZSgnLi9lbGxpcHRpYy9jdXJ2ZXMnKTtcblxuLy8gUHJvdG9jb2xzXG5lbGxpcHRpYy5lYyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvZWMnKTtcbmVsbGlwdGljLmVkZHNhID0gcmVxdWlyZSgnLi9lbGxpcHRpYy9lZGRzYScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBnZXROQUYgPSB1dGlscy5nZXROQUY7XG52YXIgZ2V0SlNGID0gdXRpbHMuZ2V0SlNGO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gQmFzZUN1cnZlKHR5cGUsIGNvbmYpIHtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5wID0gbmV3IEJOKGNvbmYucCwgMTYpO1xuXG4gIC8vIFVzZSBNb250Z29tZXJ5LCB3aGVuIHRoZXJlIGlzIG5vIGZhc3QgcmVkdWN0aW9uIGZvciB0aGUgcHJpbWVcbiAgdGhpcy5yZWQgPSBjb25mLnByaW1lID8gQk4ucmVkKGNvbmYucHJpbWUpIDogQk4ubW9udCh0aGlzLnApO1xuXG4gIC8vIFVzZWZ1bCBmb3IgbWFueSBjdXJ2ZXNcbiAgdGhpcy56ZXJvID0gbmV3IEJOKDApLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5vbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLnR3byA9IG5ldyBCTigyKS50b1JlZCh0aGlzLnJlZCk7XG5cbiAgLy8gQ3VydmUgY29uZmlndXJhdGlvbiwgb3B0aW9uYWxcbiAgdGhpcy5uID0gY29uZi5uICYmIG5ldyBCTihjb25mLm4sIDE2KTtcbiAgdGhpcy5nID0gY29uZi5nICYmIHRoaXMucG9pbnRGcm9tSlNPTihjb25mLmcsIGNvbmYuZ1JlZCk7XG5cbiAgLy8gVGVtcG9yYXJ5IGFycmF5c1xuICB0aGlzLl93bmFmVDEgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX3duYWZUMiA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fd25hZlQzID0gbmV3IEFycmF5KDQpO1xuICB0aGlzLl93bmFmVDQgPSBuZXcgQXJyYXkoNCk7XG5cbiAgdGhpcy5fYml0TGVuZ3RoID0gdGhpcy5uID8gdGhpcy5uLmJpdExlbmd0aCgpIDogMDtcblxuICAvLyBHZW5lcmFsaXplZCBHcmVnIE1heHdlbGwncyB0cmlja1xuICB2YXIgYWRqdXN0Q291bnQgPSB0aGlzLm4gJiYgdGhpcy5wLmRpdih0aGlzLm4pO1xuICBpZiAoIWFkanVzdENvdW50IHx8IGFkanVzdENvdW50LmNtcG4oMTAwKSA+IDApIHtcbiAgICB0aGlzLnJlZE4gPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX21heHdlbGxUcmljayA9IHRydWU7XG4gICAgdGhpcy5yZWROID0gdGhpcy5uLnRvUmVkKHRoaXMucmVkKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBCYXNlQ3VydmU7XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUucG9pbnQgPSBmdW5jdGlvbiBwb2ludCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUuX2ZpeGVkTmFmTXVsID0gZnVuY3Rpb24gX2ZpeGVkTmFmTXVsKHAsIGspIHtcbiAgYXNzZXJ0KHAucHJlY29tcHV0ZWQpO1xuICB2YXIgZG91YmxlcyA9IHAuX2dldERvdWJsZXMoKTtcblxuICB2YXIgbmFmID0gZ2V0TkFGKGssIDEsIHRoaXMuX2JpdExlbmd0aCk7XG4gIHZhciBJID0gKDEgPDwgKGRvdWJsZXMuc3RlcCArIDEpKSAtIChkb3VibGVzLnN0ZXAgJSAyID09PSAwID8gMiA6IDEpO1xuICBJIC89IDM7XG5cbiAgLy8gVHJhbnNsYXRlIGludG8gbW9yZSB3aW5kb3dlZCBmb3JtXG4gIHZhciByZXByID0gW107XG4gIHZhciBqO1xuICB2YXIgbmFmVztcbiAgZm9yIChqID0gMDsgaiA8IG5hZi5sZW5ndGg7IGogKz0gZG91Ymxlcy5zdGVwKSB7XG4gICAgbmFmVyA9IDA7XG4gICAgZm9yICh2YXIgbCA9IGogKyBkb3VibGVzLnN0ZXAgLSAxOyBsID49IGo7IGwtLSlcbiAgICAgIG5hZlcgPSAobmFmVyA8PCAxKSArIG5hZltsXTtcbiAgICByZXByLnB1c2gobmFmVyk7XG4gIH1cblxuICB2YXIgYSA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICB2YXIgYiA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICBmb3IgKHZhciBpID0gSTsgaSA+IDA7IGktLSkge1xuICAgIGZvciAoaiA9IDA7IGogPCByZXByLmxlbmd0aDsgaisrKSB7XG4gICAgICBuYWZXID0gcmVwcltqXTtcbiAgICAgIGlmIChuYWZXID09PSBpKVxuICAgICAgICBiID0gYi5taXhlZEFkZChkb3VibGVzLnBvaW50c1tqXSk7XG4gICAgICBlbHNlIGlmIChuYWZXID09PSAtaSlcbiAgICAgICAgYiA9IGIubWl4ZWRBZGQoZG91Ymxlcy5wb2ludHNbal0ubmVnKCkpO1xuICAgIH1cbiAgICBhID0gYS5hZGQoYik7XG4gIH1cbiAgcmV0dXJuIGEudG9QKCk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLl93bmFmTXVsID0gZnVuY3Rpb24gX3duYWZNdWwocCwgaykge1xuICB2YXIgdyA9IDQ7XG5cbiAgLy8gUHJlY29tcHV0ZSB3aW5kb3dcbiAgdmFyIG5hZlBvaW50cyA9IHAuX2dldE5BRlBvaW50cyh3KTtcbiAgdyA9IG5hZlBvaW50cy53bmQ7XG4gIHZhciB3bmQgPSBuYWZQb2ludHMucG9pbnRzO1xuXG4gIC8vIEdldCBOQUYgZm9ybVxuICB2YXIgbmFmID0gZ2V0TkFGKGssIHcsIHRoaXMuX2JpdExlbmd0aCk7XG5cbiAgLy8gQWRkIGB0aGlzYCooTisxKSBmb3IgZXZlcnkgdy1OQUYgaW5kZXhcbiAgdmFyIGFjYyA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICBmb3IgKHZhciBpID0gbmFmLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgLy8gQ291bnQgemVyb2VzXG4gICAgZm9yICh2YXIgbCA9IDA7IGkgPj0gMCAmJiBuYWZbaV0gPT09IDA7IGktLSlcbiAgICAgIGwrKztcbiAgICBpZiAoaSA+PSAwKVxuICAgICAgbCsrO1xuICAgIGFjYyA9IGFjYy5kYmxwKGwpO1xuXG4gICAgaWYgKGkgPCAwKVxuICAgICAgYnJlYWs7XG4gICAgdmFyIHogPSBuYWZbaV07XG4gICAgYXNzZXJ0KHogIT09IDApO1xuICAgIGlmIChwLnR5cGUgPT09ICdhZmZpbmUnKSB7XG4gICAgICAvLyBKICstIFBcbiAgICAgIGlmICh6ID4gMClcbiAgICAgICAgYWNjID0gYWNjLm1peGVkQWRkKHduZFsoeiAtIDEpID4+IDFdKTtcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjID0gYWNjLm1peGVkQWRkKHduZFsoLXogLSAxKSA+PiAxXS5uZWcoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEogKy0gSlxuICAgICAgaWYgKHogPiAwKVxuICAgICAgICBhY2MgPSBhY2MuYWRkKHduZFsoeiAtIDEpID4+IDFdKTtcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjID0gYWNjLmFkZCh3bmRbKC16IC0gMSkgPj4gMV0ubmVnKCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcC50eXBlID09PSAnYWZmaW5lJyA/IGFjYy50b1AoKSA6IGFjYztcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUuX3duYWZNdWxBZGQgPSBmdW5jdGlvbiBfd25hZk11bEFkZChkZWZXLFxuICBwb2ludHMsXG4gIGNvZWZmcyxcbiAgbGVuLFxuICBqYWNvYmlhblJlc3VsdCkge1xuICB2YXIgd25kV2lkdGggPSB0aGlzLl93bmFmVDE7XG4gIHZhciB3bmQgPSB0aGlzLl93bmFmVDI7XG4gIHZhciBuYWYgPSB0aGlzLl93bmFmVDM7XG5cbiAgLy8gRmlsbCBhbGwgYXJyYXlzXG4gIHZhciBtYXggPSAwO1xuICB2YXIgaTtcbiAgdmFyIGo7XG4gIHZhciBwO1xuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBwID0gcG9pbnRzW2ldO1xuICAgIHZhciBuYWZQb2ludHMgPSBwLl9nZXROQUZQb2ludHMoZGVmVyk7XG4gICAgd25kV2lkdGhbaV0gPSBuYWZQb2ludHMud25kO1xuICAgIHduZFtpXSA9IG5hZlBvaW50cy5wb2ludHM7XG4gIH1cblxuICAvLyBDb21iIHNtYWxsIHdpbmRvdyBOQUZzXG4gIGZvciAoaSA9IGxlbiAtIDE7IGkgPj0gMTsgaSAtPSAyKSB7XG4gICAgdmFyIGEgPSBpIC0gMTtcbiAgICB2YXIgYiA9IGk7XG4gICAgaWYgKHduZFdpZHRoW2FdICE9PSAxIHx8IHduZFdpZHRoW2JdICE9PSAxKSB7XG4gICAgICBuYWZbYV0gPSBnZXROQUYoY29lZmZzW2FdLCB3bmRXaWR0aFthXSwgdGhpcy5fYml0TGVuZ3RoKTtcbiAgICAgIG5hZltiXSA9IGdldE5BRihjb2VmZnNbYl0sIHduZFdpZHRoW2JdLCB0aGlzLl9iaXRMZW5ndGgpO1xuICAgICAgbWF4ID0gTWF0aC5tYXgobmFmW2FdLmxlbmd0aCwgbWF4KTtcbiAgICAgIG1heCA9IE1hdGgubWF4KG5hZltiXS5sZW5ndGgsIG1heCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgY29tYiA9IFtcbiAgICAgIHBvaW50c1thXSwgLyogMSAqL1xuICAgICAgbnVsbCwgLyogMyAqL1xuICAgICAgbnVsbCwgLyogNSAqL1xuICAgICAgcG9pbnRzW2JdLCAvKiA3ICovXG4gICAgXTtcblxuICAgIC8vIFRyeSB0byBhdm9pZCBQcm9qZWN0aXZlIHBvaW50cywgaWYgcG9zc2libGVcbiAgICBpZiAocG9pbnRzW2FdLnkuY21wKHBvaW50c1tiXS55KSA9PT0gMCkge1xuICAgICAgY29tYlsxXSA9IHBvaW50c1thXS5hZGQocG9pbnRzW2JdKTtcbiAgICAgIGNvbWJbMl0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdLm5lZygpKTtcbiAgICB9IGVsc2UgaWYgKHBvaW50c1thXS55LmNtcChwb2ludHNbYl0ueS5yZWROZWcoKSkgPT09IDApIHtcbiAgICAgIGNvbWJbMV0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdKTtcbiAgICAgIGNvbWJbMl0gPSBwb2ludHNbYV0uYWRkKHBvaW50c1tiXS5uZWcoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbWJbMV0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdKTtcbiAgICAgIGNvbWJbMl0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdLm5lZygpKTtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBbXG4gICAgICAtMywgLyogLTEgLTEgKi9cbiAgICAgIC0xLCAvKiAtMSAwICovXG4gICAgICAtNSwgLyogLTEgMSAqL1xuICAgICAgLTcsIC8qIDAgLTEgKi9cbiAgICAgIDAsIC8qIDAgMCAqL1xuICAgICAgNywgLyogMCAxICovXG4gICAgICA1LCAvKiAxIC0xICovXG4gICAgICAxLCAvKiAxIDAgKi9cbiAgICAgIDMsICAvKiAxIDEgKi9cbiAgICBdO1xuXG4gICAgdmFyIGpzZiA9IGdldEpTRihjb2VmZnNbYV0sIGNvZWZmc1tiXSk7XG4gICAgbWF4ID0gTWF0aC5tYXgoanNmWzBdLmxlbmd0aCwgbWF4KTtcbiAgICBuYWZbYV0gPSBuZXcgQXJyYXkobWF4KTtcbiAgICBuYWZbYl0gPSBuZXcgQXJyYXkobWF4KTtcbiAgICBmb3IgKGogPSAwOyBqIDwgbWF4OyBqKyspIHtcbiAgICAgIHZhciBqYSA9IGpzZlswXVtqXSB8IDA7XG4gICAgICB2YXIgamIgPSBqc2ZbMV1bal0gfCAwO1xuXG4gICAgICBuYWZbYV1bal0gPSBpbmRleFsoamEgKyAxKSAqIDMgKyAoamIgKyAxKV07XG4gICAgICBuYWZbYl1bal0gPSAwO1xuICAgICAgd25kW2FdID0gY29tYjtcbiAgICB9XG4gIH1cblxuICB2YXIgYWNjID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIHZhciB0bXAgPSB0aGlzLl93bmFmVDQ7XG4gIGZvciAoaSA9IG1heDsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgayA9IDA7XG5cbiAgICB3aGlsZSAoaSA+PSAwKSB7XG4gICAgICB2YXIgemVybyA9IHRydWU7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgICAgdG1wW2pdID0gbmFmW2pdW2ldIHwgMDtcbiAgICAgICAgaWYgKHRtcFtqXSAhPT0gMClcbiAgICAgICAgICB6ZXJvID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIXplcm8pXG4gICAgICAgIGJyZWFrO1xuICAgICAgaysrO1xuICAgICAgaS0tO1xuICAgIH1cbiAgICBpZiAoaSA+PSAwKVxuICAgICAgaysrO1xuICAgIGFjYyA9IGFjYy5kYmxwKGspO1xuICAgIGlmIChpIDwgMClcbiAgICAgIGJyZWFrO1xuXG4gICAgZm9yIChqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICB2YXIgeiA9IHRtcFtqXTtcbiAgICAgIHA7XG4gICAgICBpZiAoeiA9PT0gMClcbiAgICAgICAgY29udGludWU7XG4gICAgICBlbHNlIGlmICh6ID4gMClcbiAgICAgICAgcCA9IHduZFtqXVsoeiAtIDEpID4+IDFdO1xuICAgICAgZWxzZSBpZiAoeiA8IDApXG4gICAgICAgIHAgPSB3bmRbal1bKC16IC0gMSkgPj4gMV0ubmVnKCk7XG5cbiAgICAgIGlmIChwLnR5cGUgPT09ICdhZmZpbmUnKVxuICAgICAgICBhY2MgPSBhY2MubWl4ZWRBZGQocCk7XG4gICAgICBlbHNlXG4gICAgICAgIGFjYyA9IGFjYy5hZGQocCk7XG4gICAgfVxuICB9XG4gIC8vIFplcm9pZnkgcmVmZXJlbmNlc1xuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgd25kW2ldID0gbnVsbDtcblxuICBpZiAoamFjb2JpYW5SZXN1bHQpXG4gICAgcmV0dXJuIGFjYztcbiAgZWxzZVxuICAgIHJldHVybiBhY2MudG9QKCk7XG59O1xuXG5mdW5jdGlvbiBCYXNlUG9pbnQoY3VydmUsIHR5cGUpIHtcbiAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICB0aGlzLnR5cGUgPSB0eXBlO1xuICB0aGlzLnByZWNvbXB1dGVkID0gbnVsbDtcbn1cbkJhc2VDdXJ2ZS5CYXNlUG9pbnQgPSBCYXNlUG9pbnQ7XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcSgvKm90aGVyKi8pIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUudmFsaWRhdGUodGhpcyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLmRlY29kZVBvaW50ID0gZnVuY3Rpb24gZGVjb2RlUG9pbnQoYnl0ZXMsIGVuYykge1xuICBieXRlcyA9IHV0aWxzLnRvQXJyYXkoYnl0ZXMsIGVuYyk7XG5cbiAgdmFyIGxlbiA9IHRoaXMucC5ieXRlTGVuZ3RoKCk7XG5cbiAgLy8gdW5jb21wcmVzc2VkLCBoeWJyaWQtb2RkLCBoeWJyaWQtZXZlblxuICBpZiAoKGJ5dGVzWzBdID09PSAweDA0IHx8IGJ5dGVzWzBdID09PSAweDA2IHx8IGJ5dGVzWzBdID09PSAweDA3KSAmJlxuICAgICAgYnl0ZXMubGVuZ3RoIC0gMSA9PT0gMiAqIGxlbikge1xuICAgIGlmIChieXRlc1swXSA9PT0gMHgwNilcbiAgICAgIGFzc2VydChieXRlc1tieXRlcy5sZW5ndGggLSAxXSAlIDIgPT09IDApO1xuICAgIGVsc2UgaWYgKGJ5dGVzWzBdID09PSAweDA3KVxuICAgICAgYXNzZXJ0KGJ5dGVzW2J5dGVzLmxlbmd0aCAtIDFdICUgMiA9PT0gMSk7XG5cbiAgICB2YXIgcmVzID0gIHRoaXMucG9pbnQoYnl0ZXMuc2xpY2UoMSwgMSArIGxlbiksXG4gICAgICBieXRlcy5zbGljZSgxICsgbGVuLCAxICsgMiAqIGxlbikpO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSBlbHNlIGlmICgoYnl0ZXNbMF0gPT09IDB4MDIgfHwgYnl0ZXNbMF0gPT09IDB4MDMpICYmXG4gICAgICAgICAgICAgIGJ5dGVzLmxlbmd0aCAtIDEgPT09IGxlbikge1xuICAgIHJldHVybiB0aGlzLnBvaW50RnJvbVgoYnl0ZXMuc2xpY2UoMSwgMSArIGxlbiksIGJ5dGVzWzBdID09PSAweDAzKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcG9pbnQgZm9ybWF0Jyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVuY29kZUNvbXByZXNzZWQgPSBmdW5jdGlvbiBlbmNvZGVDb21wcmVzc2VkKGVuYykge1xuICByZXR1cm4gdGhpcy5lbmNvZGUoZW5jLCB0cnVlKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2VuY29kZSA9IGZ1bmN0aW9uIF9lbmNvZGUoY29tcGFjdCkge1xuICB2YXIgbGVuID0gdGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIHggPSB0aGlzLmdldFgoKS50b0FycmF5KCdiZScsIGxlbik7XG5cbiAgaWYgKGNvbXBhY3QpXG4gICAgcmV0dXJuIFsgdGhpcy5nZXRZKCkuaXNFdmVuKCkgPyAweDAyIDogMHgwMyBdLmNvbmNhdCh4KTtcblxuICByZXR1cm4gWyAweDA0IF0uY29uY2F0KHgsIHRoaXMuZ2V0WSgpLnRvQXJyYXkoJ2JlJywgbGVuKSk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShlbmMsIGNvbXBhY3QpIHtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLl9lbmNvZGUoY29tcGFjdCksIGVuYyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLnByZWNvbXB1dGUgPSBmdW5jdGlvbiBwcmVjb21wdXRlKHBvd2VyKSB7XG4gIGlmICh0aGlzLnByZWNvbXB1dGVkKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIHZhciBwcmVjb21wdXRlZCA9IHtcbiAgICBkb3VibGVzOiBudWxsLFxuICAgIG5hZjogbnVsbCxcbiAgICBiZXRhOiBudWxsLFxuICB9O1xuICBwcmVjb21wdXRlZC5uYWYgPSB0aGlzLl9nZXROQUZQb2ludHMoOCk7XG4gIHByZWNvbXB1dGVkLmRvdWJsZXMgPSB0aGlzLl9nZXREb3VibGVzKDQsIHBvd2VyKTtcbiAgcHJlY29tcHV0ZWQuYmV0YSA9IHRoaXMuX2dldEJldGEoKTtcbiAgdGhpcy5wcmVjb21wdXRlZCA9IHByZWNvbXB1dGVkO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5faGFzRG91YmxlcyA9IGZ1bmN0aW9uIF9oYXNEb3VibGVzKGspIHtcbiAgaWYgKCF0aGlzLnByZWNvbXB1dGVkKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgZG91YmxlcyA9IHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztcbiAgaWYgKCFkb3VibGVzKVxuICAgIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gZG91Ymxlcy5wb2ludHMubGVuZ3RoID49IE1hdGguY2VpbCgoay5iaXRMZW5ndGgoKSArIDEpIC8gZG91Ymxlcy5zdGVwKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2dldERvdWJsZXMgPSBmdW5jdGlvbiBfZ2V0RG91YmxlcyhzdGVwLCBwb3dlcikge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZCAmJiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMpXG4gICAgcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztcblxuICB2YXIgZG91YmxlcyA9IFsgdGhpcyBdO1xuICB2YXIgYWNjID0gdGhpcztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3dlcjsgaSArPSBzdGVwKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzdGVwOyBqKyspXG4gICAgICBhY2MgPSBhY2MuZGJsKCk7XG4gICAgZG91Ymxlcy5wdXNoKGFjYyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdGVwOiBzdGVwLFxuICAgIHBvaW50czogZG91YmxlcyxcbiAgfTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2dldE5BRlBvaW50cyA9IGZ1bmN0aW9uIF9nZXROQUZQb2ludHMod25kKSB7XG4gIGlmICh0aGlzLnByZWNvbXB1dGVkICYmIHRoaXMucHJlY29tcHV0ZWQubmFmKVxuICAgIHJldHVybiB0aGlzLnByZWNvbXB1dGVkLm5hZjtcblxuICB2YXIgcmVzID0gWyB0aGlzIF07XG4gIHZhciBtYXggPSAoMSA8PCB3bmQpIC0gMTtcbiAgdmFyIGRibCA9IG1heCA9PT0gMSA/IG51bGwgOiB0aGlzLmRibCgpO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IG1heDsgaSsrKVxuICAgIHJlc1tpXSA9IHJlc1tpIC0gMV0uYWRkKGRibCk7XG4gIHJldHVybiB7XG4gICAgd25kOiB3bmQsXG4gICAgcG9pbnRzOiByZXMsXG4gIH07XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9nZXRCZXRhID0gZnVuY3Rpb24gX2dldEJldGEoKSB7XG4gIHJldHVybiBudWxsO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5kYmxwID0gZnVuY3Rpb24gZGJscChrKSB7XG4gIHZhciByID0gdGhpcztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrOyBpKyspXG4gICAgciA9IHIuZGJsKCk7XG4gIHJldHVybiByO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcblxudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gRWR3YXJkc0N1cnZlKGNvbmYpIHtcbiAgLy8gTk9URTogSW1wb3J0YW50IGFzIHdlIGFyZSBjcmVhdGluZyBwb2ludCBpbiBCYXNlLmNhbGwoKVxuICB0aGlzLnR3aXN0ZWQgPSAoY29uZi5hIHwgMCkgIT09IDE7XG4gIHRoaXMubU9uZUEgPSB0aGlzLnR3aXN0ZWQgJiYgKGNvbmYuYSB8IDApID09PSAtMTtcbiAgdGhpcy5leHRlbmRlZCA9IHRoaXMubU9uZUE7XG5cbiAgQmFzZS5jYWxsKHRoaXMsICdlZHdhcmRzJywgY29uZik7XG5cbiAgdGhpcy5hID0gbmV3IEJOKGNvbmYuYSwgMTYpLnVtb2QodGhpcy5yZWQubSk7XG4gIHRoaXMuYSA9IHRoaXMuYS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYyA9IG5ldyBCTihjb25mLmMsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYzIgPSB0aGlzLmMucmVkU3FyKCk7XG4gIHRoaXMuZCA9IG5ldyBCTihjb25mLmQsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuZGQgPSB0aGlzLmQucmVkQWRkKHRoaXMuZCk7XG5cbiAgYXNzZXJ0KCF0aGlzLnR3aXN0ZWQgfHwgdGhpcy5jLmZyb21SZWQoKS5jbXBuKDEpID09PSAwKTtcbiAgdGhpcy5vbmVDID0gKGNvbmYuYyB8IDApID09PSAxO1xufVxuaW5oZXJpdHMoRWR3YXJkc0N1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gRWR3YXJkc0N1cnZlO1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLl9tdWxBID0gZnVuY3Rpb24gX211bEEobnVtKSB7XG4gIGlmICh0aGlzLm1PbmVBKVxuICAgIHJldHVybiBudW0ucmVkTmVnKCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5hLnJlZE11bChudW0pO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5fbXVsQyA9IGZ1bmN0aW9uIF9tdWxDKG51bSkge1xuICBpZiAodGhpcy5vbmVDKVxuICAgIHJldHVybiBudW07XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jLnJlZE11bChudW0pO1xufTtcblxuLy8gSnVzdCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNob3J0IGN1cnZlXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLmpwb2ludCA9IGZ1bmN0aW9uIGpwb2ludCh4LCB5LCB6LCB0KSB7XG4gIHJldHVybiB0aGlzLnBvaW50KHgsIHksIHosIHQpO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludEZyb21YID0gZnVuY3Rpb24gcG9pbnRGcm9tWCh4LCBvZGQpIHtcbiAgeCA9IG5ldyBCTih4LCAxNik7XG4gIGlmICgheC5yZWQpXG4gICAgeCA9IHgudG9SZWQodGhpcy5yZWQpO1xuXG4gIHZhciB4MiA9IHgucmVkU3FyKCk7XG4gIHZhciByaHMgPSB0aGlzLmMyLnJlZFN1Yih0aGlzLmEucmVkTXVsKHgyKSk7XG4gIHZhciBsaHMgPSB0aGlzLm9uZS5yZWRTdWIodGhpcy5jMi5yZWRNdWwodGhpcy5kKS5yZWRNdWwoeDIpKTtcblxuICB2YXIgeTIgPSByaHMucmVkTXVsKGxocy5yZWRJbnZtKCkpO1xuICB2YXIgeSA9IHkyLnJlZFNxcnQoKTtcbiAgaWYgKHkucmVkU3FyKCkucmVkU3ViKHkyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICB2YXIgaXNPZGQgPSB5LmZyb21SZWQoKS5pc09kZCgpO1xuICBpZiAob2RkICYmICFpc09kZCB8fCAhb2RkICYmIGlzT2RkKVxuICAgIHkgPSB5LnJlZE5lZygpO1xuXG4gIHJldHVybiB0aGlzLnBvaW50KHgsIHkpO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludEZyb21ZID0gZnVuY3Rpb24gcG9pbnRGcm9tWSh5LCBvZGQpIHtcbiAgeSA9IG5ldyBCTih5LCAxNik7XG4gIGlmICgheS5yZWQpXG4gICAgeSA9IHkudG9SZWQodGhpcy5yZWQpO1xuXG4gIC8vIHheMiA9ICh5XjIgLSBjXjIpIC8gKGNeMiBkIHleMiAtIGEpXG4gIHZhciB5MiA9IHkucmVkU3FyKCk7XG4gIHZhciBsaHMgPSB5Mi5yZWRTdWIodGhpcy5jMik7XG4gIHZhciByaHMgPSB5Mi5yZWRNdWwodGhpcy5kKS5yZWRNdWwodGhpcy5jMikucmVkU3ViKHRoaXMuYSk7XG4gIHZhciB4MiA9IGxocy5yZWRNdWwocmhzLnJlZEludm0oKSk7XG5cbiAgaWYgKHgyLmNtcCh0aGlzLnplcm8pID09PSAwKSB7XG4gICAgaWYgKG9kZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLnBvaW50KHRoaXMuemVybywgeSk7XG4gIH1cblxuICB2YXIgeCA9IHgyLnJlZFNxcnQoKTtcbiAgaWYgKHgucmVkU3FyKCkucmVkU3ViKHgyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICBpZiAoeC5mcm9tUmVkKCkuaXNPZGQoKSAhPT0gb2RkKVxuICAgIHggPSB4LnJlZE5lZygpO1xuXG4gIHJldHVybiB0aGlzLnBvaW50KHgsIHkpO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKHBvaW50KSB7XG4gIGlmIChwb2ludC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgLy8gQ3VydmU6IEEgKiBYXjIgKyBZXjIgPSBDXjIgKiAoMSArIEQgKiBYXjIgKiBZXjIpXG4gIHBvaW50Lm5vcm1hbGl6ZSgpO1xuXG4gIHZhciB4MiA9IHBvaW50LngucmVkU3FyKCk7XG4gIHZhciB5MiA9IHBvaW50LnkucmVkU3FyKCk7XG4gIHZhciBsaHMgPSB4Mi5yZWRNdWwodGhpcy5hKS5yZWRBZGQoeTIpO1xuICB2YXIgcmhzID0gdGhpcy5jMi5yZWRNdWwodGhpcy5vbmUucmVkQWRkKHRoaXMuZC5yZWRNdWwoeDIpLnJlZE11bCh5MikpKTtcblxuICByZXR1cm4gbGhzLmNtcChyaHMpID09PSAwO1xufTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHksIHosIHQpIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ3Byb2plY3RpdmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICAgIHRoaXMueSA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMudCA9IHRoaXMuY3VydmUuemVybztcbiAgICB0aGlzLnpPbmUgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy55ID0gbmV3IEJOKHksIDE2KTtcbiAgICB0aGlzLnogPSB6ID8gbmV3IEJOKHosIDE2KSA6IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMudCA9IHQgJiYgbmV3IEJOKHQsIDE2KTtcbiAgICBpZiAoIXRoaXMueC5yZWQpXG4gICAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy55LnJlZClcbiAgICAgIHRoaXMueSA9IHRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnoucmVkKVxuICAgICAgdGhpcy56ID0gdGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAodGhpcy50ICYmICF0aGlzLnQucmVkKVxuICAgICAgdGhpcy50ID0gdGhpcy50LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB0aGlzLnpPbmUgPSB0aGlzLnogPT09IHRoaXMuY3VydmUub25lO1xuXG4gICAgLy8gVXNlIGV4dGVuZGVkIGNvb3JkaW5hdGVzXG4gICAgaWYgKHRoaXMuY3VydmUuZXh0ZW5kZWQgJiYgIXRoaXMudCkge1xuICAgICAgdGhpcy50ID0gdGhpcy54LnJlZE11bCh0aGlzLnkpO1xuICAgICAgaWYgKCF0aGlzLnpPbmUpXG4gICAgICAgIHRoaXMudCA9IHRoaXMudC5yZWRNdWwodGhpcy56LnJlZEludm0oKSk7XG4gICAgfVxuICB9XG59XG5pbmhlcml0cyhQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnBvaW50RnJvbUpTT04gPSBmdW5jdGlvbiBwb2ludEZyb21KU09OKG9iaikge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqKTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnQgPSBmdW5jdGlvbiBwb2ludCh4LCB5LCB6LCB0KSB7XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcywgeCwgeSwgeiwgdCk7XG59O1xuXG5Qb2ludC5mcm9tSlNPTiA9IGZ1bmN0aW9uIGZyb21KU09OKGN1cnZlLCBvYmopIHtcbiAgcmV0dXJuIG5ldyBQb2ludChjdXJ2ZSwgb2JqWzBdLCBvYmpbMV0sIG9ialsyXSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gJzxFQyBQb2ludCBJbmZpbml0eT4nO1xuICByZXR1cm4gJzxFQyBQb2ludCB4OiAnICsgdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB5OiAnICsgdGhpcy55LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB6OiAnICsgdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgKyAnPic7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuaXNJbmZpbml0eSA9IGZ1bmN0aW9uIGlzSW5maW5pdHkoKSB7XG4gIC8vIFhYWCBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IHplcm8gaXMgYWx3YXlzIHplcm8gaW4gcmVkXG4gIHJldHVybiB0aGlzLnguY21wbigwKSA9PT0gMCAmJlxuICAgICh0aGlzLnkuY21wKHRoaXMueikgPT09IDAgfHxcbiAgICAodGhpcy56T25lICYmIHRoaXMueS5jbXAodGhpcy5jdXJ2ZS5jKSA9PT0gMCkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9leHREYmwgPSBmdW5jdGlvbiBfZXh0RGJsKCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1leHRlbmRlZC0xLmh0bWxcbiAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOC1od2NkXG4gIC8vIDRNICsgNFNcblxuICAvLyBBID0gWDFeMlxuICB2YXIgYSA9IHRoaXMueC5yZWRTcXIoKTtcbiAgLy8gQiA9IFkxXjJcbiAgdmFyIGIgPSB0aGlzLnkucmVkU3FyKCk7XG4gIC8vIEMgPSAyICogWjFeMlxuICB2YXIgYyA9IHRoaXMuei5yZWRTcXIoKTtcbiAgYyA9IGMucmVkSUFkZChjKTtcbiAgLy8gRCA9IGEgKiBBXG4gIHZhciBkID0gdGhpcy5jdXJ2ZS5fbXVsQShhKTtcbiAgLy8gRSA9IChYMSArIFkxKV4yIC0gQSAtIEJcbiAgdmFyIGUgPSB0aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCkucmVkSVN1YihhKS5yZWRJU3ViKGIpO1xuICAvLyBHID0gRCArIEJcbiAgdmFyIGcgPSBkLnJlZEFkZChiKTtcbiAgLy8gRiA9IEcgLSBDXG4gIHZhciBmID0gZy5yZWRTdWIoYyk7XG4gIC8vIEggPSBEIC0gQlxuICB2YXIgaCA9IGQucmVkU3ViKGIpO1xuICAvLyBYMyA9IEUgKiBGXG4gIHZhciBueCA9IGUucmVkTXVsKGYpO1xuICAvLyBZMyA9IEcgKiBIXG4gIHZhciBueSA9IGcucmVkTXVsKGgpO1xuICAvLyBUMyA9IEUgKiBIXG4gIHZhciBudCA9IGUucmVkTXVsKGgpO1xuICAvLyBaMyA9IEYgKiBHXG4gIHZhciBueiA9IGYucmVkTXVsKGcpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56LCBudCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX3Byb2pEYmwgPSBmdW5jdGlvbiBfcHJvakRibCgpIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtcHJvamVjdGl2ZS5odG1sXG4gIC8vICAgICAjZG91YmxpbmctZGJsLTIwMDgtYmJqbHBcbiAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwNy1ibFxuICAvLyBhbmQgb3RoZXJzXG4gIC8vIEdlbmVyYWxseSAzTSArIDRTIG9yIDJNICsgNFNcblxuICAvLyBCID0gKFgxICsgWTEpXjJcbiAgdmFyIGIgPSB0aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCk7XG4gIC8vIEMgPSBYMV4yXG4gIHZhciBjID0gdGhpcy54LnJlZFNxcigpO1xuICAvLyBEID0gWTFeMlxuICB2YXIgZCA9IHRoaXMueS5yZWRTcXIoKTtcblxuICB2YXIgbng7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICB2YXIgZTtcbiAgdmFyIGg7XG4gIHZhciBqO1xuICBpZiAodGhpcy5jdXJ2ZS50d2lzdGVkKSB7XG4gICAgLy8gRSA9IGEgKiBDXG4gICAgZSA9IHRoaXMuY3VydmUuX211bEEoYyk7XG4gICAgLy8gRiA9IEUgKyBEXG4gICAgdmFyIGYgPSBlLnJlZEFkZChkKTtcbiAgICBpZiAodGhpcy56T25lKSB7XG4gICAgICAvLyBYMyA9IChCIC0gQyAtIEQpICogKEYgLSAyKVxuICAgICAgbnggPSBiLnJlZFN1YihjKS5yZWRTdWIoZCkucmVkTXVsKGYucmVkU3ViKHRoaXMuY3VydmUudHdvKSk7XG4gICAgICAvLyBZMyA9IEYgKiAoRSAtIEQpXG4gICAgICBueSA9IGYucmVkTXVsKGUucmVkU3ViKGQpKTtcbiAgICAgIC8vIFozID0gRl4yIC0gMiAqIEZcbiAgICAgIG56ID0gZi5yZWRTcXIoKS5yZWRTdWIoZikucmVkU3ViKGYpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIID0gWjFeMlxuICAgICAgaCA9IHRoaXMuei5yZWRTcXIoKTtcbiAgICAgIC8vIEogPSBGIC0gMiAqIEhcbiAgICAgIGogPSBmLnJlZFN1YihoKS5yZWRJU3ViKGgpO1xuICAgICAgLy8gWDMgPSAoQi1DLUQpKkpcbiAgICAgIG54ID0gYi5yZWRTdWIoYykucmVkSVN1YihkKS5yZWRNdWwoaik7XG4gICAgICAvLyBZMyA9IEYgKiAoRSAtIEQpXG4gICAgICBueSA9IGYucmVkTXVsKGUucmVkU3ViKGQpKTtcbiAgICAgIC8vIFozID0gRiAqIEpcbiAgICAgIG56ID0gZi5yZWRNdWwoaik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEUgPSBDICsgRFxuICAgIGUgPSBjLnJlZEFkZChkKTtcbiAgICAvLyBIID0gKGMgKiBaMSleMlxuICAgIGggPSB0aGlzLmN1cnZlLl9tdWxDKHRoaXMueikucmVkU3FyKCk7XG4gICAgLy8gSiA9IEUgLSAyICogSFxuICAgIGogPSBlLnJlZFN1YihoKS5yZWRTdWIoaCk7XG4gICAgLy8gWDMgPSBjICogKEIgLSBFKSAqIEpcbiAgICBueCA9IHRoaXMuY3VydmUuX211bEMoYi5yZWRJU3ViKGUpKS5yZWRNdWwoaik7XG4gICAgLy8gWTMgPSBjICogRSAqIChDIC0gRClcbiAgICBueSA9IHRoaXMuY3VydmUuX211bEMoZSkucmVkTXVsKGMucmVkSVN1YihkKSk7XG4gICAgLy8gWjMgPSBFICogSlxuICAgIG56ID0gZS5yZWRNdWwoaik7XG4gIH1cbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gRG91YmxlIGluIGV4dGVuZGVkIGNvb3JkaW5hdGVzXG4gIGlmICh0aGlzLmN1cnZlLmV4dGVuZGVkKVxuICAgIHJldHVybiB0aGlzLl9leHREYmwoKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl9wcm9qRGJsKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX2V4dEFkZCA9IGZ1bmN0aW9uIF9leHRBZGQocCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1leHRlbmRlZC0xLmh0bWxcbiAgLy8gICAgICNhZGRpdGlvbi1hZGQtMjAwOC1od2NkLTNcbiAgLy8gOE1cblxuICAvLyBBID0gKFkxIC0gWDEpICogKFkyIC0gWDIpXG4gIHZhciBhID0gdGhpcy55LnJlZFN1Yih0aGlzLngpLnJlZE11bChwLnkucmVkU3ViKHAueCkpO1xuICAvLyBCID0gKFkxICsgWDEpICogKFkyICsgWDIpXG4gIHZhciBiID0gdGhpcy55LnJlZEFkZCh0aGlzLngpLnJlZE11bChwLnkucmVkQWRkKHAueCkpO1xuICAvLyBDID0gVDEgKiBrICogVDJcbiAgdmFyIGMgPSB0aGlzLnQucmVkTXVsKHRoaXMuY3VydmUuZGQpLnJlZE11bChwLnQpO1xuICAvLyBEID0gWjEgKiAyICogWjJcbiAgdmFyIGQgPSB0aGlzLnoucmVkTXVsKHAuei5yZWRBZGQocC56KSk7XG4gIC8vIEUgPSBCIC0gQVxuICB2YXIgZSA9IGIucmVkU3ViKGEpO1xuICAvLyBGID0gRCAtIENcbiAgdmFyIGYgPSBkLnJlZFN1YihjKTtcbiAgLy8gRyA9IEQgKyBDXG4gIHZhciBnID0gZC5yZWRBZGQoYyk7XG4gIC8vIEggPSBCICsgQVxuICB2YXIgaCA9IGIucmVkQWRkKGEpO1xuICAvLyBYMyA9IEUgKiBGXG4gIHZhciBueCA9IGUucmVkTXVsKGYpO1xuICAvLyBZMyA9IEcgKiBIXG4gIHZhciBueSA9IGcucmVkTXVsKGgpO1xuICAvLyBUMyA9IEUgKiBIXG4gIHZhciBudCA9IGUucmVkTXVsKGgpO1xuICAvLyBaMyA9IEYgKiBHXG4gIHZhciBueiA9IGYucmVkTXVsKGcpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56LCBudCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX3Byb2pBZGQgPSBmdW5jdGlvbiBfcHJvakFkZChwKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLXByb2plY3RpdmUuaHRtbFxuICAvLyAgICAgI2FkZGl0aW9uLWFkZC0yMDA4LWJiamxwXG4gIC8vICAgICAjYWRkaXRpb24tYWRkLTIwMDctYmxcbiAgLy8gMTBNICsgMVNcblxuICAvLyBBID0gWjEgKiBaMlxuICB2YXIgYSA9IHRoaXMuei5yZWRNdWwocC56KTtcbiAgLy8gQiA9IEFeMlxuICB2YXIgYiA9IGEucmVkU3FyKCk7XG4gIC8vIEMgPSBYMSAqIFgyXG4gIHZhciBjID0gdGhpcy54LnJlZE11bChwLngpO1xuICAvLyBEID0gWTEgKiBZMlxuICB2YXIgZCA9IHRoaXMueS5yZWRNdWwocC55KTtcbiAgLy8gRSA9IGQgKiBDICogRFxuICB2YXIgZSA9IHRoaXMuY3VydmUuZC5yZWRNdWwoYykucmVkTXVsKGQpO1xuICAvLyBGID0gQiAtIEVcbiAgdmFyIGYgPSBiLnJlZFN1YihlKTtcbiAgLy8gRyA9IEIgKyBFXG4gIHZhciBnID0gYi5yZWRBZGQoZSk7XG4gIC8vIFgzID0gQSAqIEYgKiAoKFgxICsgWTEpICogKFgyICsgWTIpIC0gQyAtIEQpXG4gIHZhciB0bXAgPSB0aGlzLngucmVkQWRkKHRoaXMueSkucmVkTXVsKHAueC5yZWRBZGQocC55KSkucmVkSVN1YihjKS5yZWRJU3ViKGQpO1xuICB2YXIgbnggPSBhLnJlZE11bChmKS5yZWRNdWwodG1wKTtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIGlmICh0aGlzLmN1cnZlLnR3aXN0ZWQpIHtcbiAgICAvLyBZMyA9IEEgKiBHICogKEQgLSBhICogQylcbiAgICBueSA9IGEucmVkTXVsKGcpLnJlZE11bChkLnJlZFN1Yih0aGlzLmN1cnZlLl9tdWxBKGMpKSk7XG4gICAgLy8gWjMgPSBGICogR1xuICAgIG56ID0gZi5yZWRNdWwoZyk7XG4gIH0gZWxzZSB7XG4gICAgLy8gWTMgPSBBICogRyAqIChEIC0gQylcbiAgICBueSA9IGEucmVkTXVsKGcpLnJlZE11bChkLnJlZFN1YihjKSk7XG4gICAgLy8gWjMgPSBjICogRiAqIEdcbiAgICBueiA9IHRoaXMuY3VydmUuX211bEMoZikucmVkTXVsKGcpO1xuICB9XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChwKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gcDtcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIGlmICh0aGlzLmN1cnZlLmV4dGVuZGVkKVxuICAgIHJldHVybiB0aGlzLl9leHRBZGQocCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fcHJvakFkZChwKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwoaykge1xuICBpZiAodGhpcy5faGFzRG91YmxlcyhrKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcywgayk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLCBrKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWxBZGQgPSBmdW5jdGlvbiBtdWxBZGQoazEsIHAsIGsyKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIFsgdGhpcywgcCBdLCBbIGsxLCBrMiBdLCAyLCBmYWxzZSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuam11bEFkZCA9IGZ1bmN0aW9uIGptdWxBZGQoazEsIHAsIGsyKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIFsgdGhpcywgcCBdLCBbIGsxLCBrMiBdLCAyLCB0cnVlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gIGlmICh0aGlzLnpPbmUpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gTm9ybWFsaXplIGNvb3JkaW5hdGVzXG4gIHZhciB6aSA9IHRoaXMuei5yZWRJbnZtKCk7XG4gIHRoaXMueCA9IHRoaXMueC5yZWRNdWwoemkpO1xuICB0aGlzLnkgPSB0aGlzLnkucmVkTXVsKHppKTtcbiAgaWYgKHRoaXMudClcbiAgICB0aGlzLnQgPSB0aGlzLnQucmVkTXVsKHppKTtcbiAgdGhpcy56ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gIHRoaXMuek9uZSA9IHRydWU7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZygpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE5lZygpLFxuICAgIHRoaXMueSxcbiAgICB0aGlzLnosXG4gICAgdGhpcy50ICYmIHRoaXMudC5yZWROZWcoKSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uIGdldFgoKSB7XG4gIHRoaXMubm9ybWFsaXplKCk7XG4gIHJldHVybiB0aGlzLnguZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFkgPSBmdW5jdGlvbiBnZXRZKCkge1xuICB0aGlzLm5vcm1hbGl6ZSgpO1xuICByZXR1cm4gdGhpcy55LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKG90aGVyKSB7XG4gIHJldHVybiB0aGlzID09PSBvdGhlciB8fFxuICAgICAgICAgdGhpcy5nZXRYKCkuY21wKG90aGVyLmdldFgoKSkgPT09IDAgJiZcbiAgICAgICAgIHRoaXMuZ2V0WSgpLmNtcChvdGhlci5nZXRZKCkpID09PSAwO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmVxWFRvUCA9IGZ1bmN0aW9uIGVxWFRvUCh4KSB7XG4gIHZhciByeCA9IHgudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh0aGlzLnopO1xuICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgdmFyIHhjID0geC5jbG9uZSgpO1xuICB2YXIgdCA9IHRoaXMuY3VydmUucmVkTi5yZWRNdWwodGhpcy56KTtcbiAgZm9yICg7Oykge1xuICAgIHhjLmlhZGQodGhpcy5jdXJ2ZS5uKTtcbiAgICBpZiAoeGMuY21wKHRoaXMuY3VydmUucCkgPj0gMClcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJ4LnJlZElBZGQodCk7XG4gICAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG5cbi8vIENvbXBhdGliaWxpdHkgd2l0aCBCYXNlQ3VydmVcblBvaW50LnByb3RvdHlwZS50b1AgPSBQb2ludC5wcm90b3R5cGUubm9ybWFsaXplO1xuUG9pbnQucHJvdG90eXBlLm1peGVkQWRkID0gUG9pbnQucHJvdG90eXBlLmFkZDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlID0gZXhwb3J0cztcblxuY3VydmUuYmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpO1xuY3VydmUuc2hvcnQgPSByZXF1aXJlKCcuL3Nob3J0Jyk7XG5jdXJ2ZS5tb250ID0gcmVxdWlyZSgnLi9tb250Jyk7XG5jdXJ2ZS5lZHdhcmRzID0gcmVxdWlyZSgnLi9lZHdhcmRzJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gTW9udEN1cnZlKGNvbmYpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdtb250JywgY29uZik7XG5cbiAgdGhpcy5hID0gbmV3IEJOKGNvbmYuYSwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5iID0gbmV3IEJOKGNvbmYuYiwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5pNCA9IG5ldyBCTig0KS50b1JlZCh0aGlzLnJlZCkucmVkSW52bSgpO1xuICB0aGlzLnR3byA9IG5ldyBCTigyKS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYTI0ID0gdGhpcy5pNC5yZWRNdWwodGhpcy5hLnJlZEFkZCh0aGlzLnR3bykpO1xufVxuaW5oZXJpdHMoTW9udEN1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gTW9udEN1cnZlO1xuXG5Nb250Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgdmFyIHggPSBwb2ludC5ub3JtYWxpemUoKS54O1xuICB2YXIgeDIgPSB4LnJlZFNxcigpO1xuICB2YXIgcmhzID0geDIucmVkTXVsKHgpLnJlZEFkZCh4Mi5yZWRNdWwodGhpcy5hKSkucmVkQWRkKHgpO1xuICB2YXIgeSA9IHJocy5yZWRTcXJ0KCk7XG5cbiAgcmV0dXJuIHkucmVkU3FyKCkuY21wKHJocykgPT09IDA7XG59O1xuXG5mdW5jdGlvbiBQb2ludChjdXJ2ZSwgeCwgeikge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAncHJvamVjdGl2ZScpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy56ID0gbmV3IEJOKHosIDE2KTtcbiAgICBpZiAoIXRoaXMueC5yZWQpXG4gICAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy56LnJlZClcbiAgICAgIHRoaXMueiA9IHRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUuZGVjb2RlUG9pbnQgPSBmdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcywgZW5jKSB7XG4gIHJldHVybiB0aGlzLnBvaW50KHV0aWxzLnRvQXJyYXkoYnl0ZXMsIGVuYyksIDEpO1xufTtcblxuTW9udEN1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHopIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB6KTtcbn07XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqKSB7XG4gIHJldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLCBvYmopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLnByZWNvbXB1dGUgPSBmdW5jdGlvbiBwcmVjb21wdXRlKCkge1xuICAvLyBOby1vcFxufTtcblxuUG9pbnQucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBfZW5jb2RlKCkge1xuICByZXR1cm4gdGhpcy5nZXRYKCkudG9BcnJheSgnYmUnLCB0aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpKTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaikge1xuICByZXR1cm4gbmV3IFBvaW50KGN1cnZlLCBvYmpbMF0sIG9ialsxXSB8fCBjdXJ2ZS5vbmUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy56LmNtcG4oMCkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICAvLyBodHRwOi8vaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLW1vbnRnb20teHouaHRtbCNkb3VibGluZy1kYmwtMTk4Ny1tLTNcbiAgLy8gMk0gKyAyUyArIDRBXG5cbiAgLy8gQSA9IFgxICsgWjFcbiAgdmFyIGEgPSB0aGlzLngucmVkQWRkKHRoaXMueik7XG4gIC8vIEFBID0gQV4yXG4gIHZhciBhYSA9IGEucmVkU3FyKCk7XG4gIC8vIEIgPSBYMSAtIFoxXG4gIHZhciBiID0gdGhpcy54LnJlZFN1Yih0aGlzLnopO1xuICAvLyBCQiA9IEJeMlxuICB2YXIgYmIgPSBiLnJlZFNxcigpO1xuICAvLyBDID0gQUEgLSBCQlxuICB2YXIgYyA9IGFhLnJlZFN1YihiYik7XG4gIC8vIFgzID0gQUEgKiBCQlxuICB2YXIgbnggPSBhYS5yZWRNdWwoYmIpO1xuICAvLyBaMyA9IEMgKiAoQkIgKyBBMjQgKiBDKVxuICB2YXIgbnogPSBjLnJlZE11bChiYi5yZWRBZGQodGhpcy5jdXJ2ZS5hMjQucmVkTXVsKGMpKSk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZScpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRpZmZBZGQgPSBmdW5jdGlvbiBkaWZmQWRkKHAsIGRpZmYpIHtcbiAgLy8gaHR0cDovL2h5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1tb250Z29tLXh6Lmh0bWwjZGlmZmFkZC1kYWRkLTE5ODctbS0zXG4gIC8vIDRNICsgMlMgKyA2QVxuXG4gIC8vIEEgPSBYMiArIFoyXG4gIHZhciBhID0gdGhpcy54LnJlZEFkZCh0aGlzLnopO1xuICAvLyBCID0gWDIgLSBaMlxuICB2YXIgYiA9IHRoaXMueC5yZWRTdWIodGhpcy56KTtcbiAgLy8gQyA9IFgzICsgWjNcbiAgdmFyIGMgPSBwLngucmVkQWRkKHAueik7XG4gIC8vIEQgPSBYMyAtIFozXG4gIHZhciBkID0gcC54LnJlZFN1YihwLnopO1xuICAvLyBEQSA9IEQgKiBBXG4gIHZhciBkYSA9IGQucmVkTXVsKGEpO1xuICAvLyBDQiA9IEMgKiBCXG4gIHZhciBjYiA9IGMucmVkTXVsKGIpO1xuICAvLyBYNSA9IFoxICogKERBICsgQ0IpXjJcbiAgdmFyIG54ID0gZGlmZi56LnJlZE11bChkYS5yZWRBZGQoY2IpLnJlZFNxcigpKTtcbiAgLy8gWjUgPSBYMSAqIChEQSAtIENCKV4yXG4gIHZhciBueiA9IGRpZmYueC5yZWRNdWwoZGEucmVkSVN1YihjYikucmVkU3FyKCkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIHZhciB0ID0gay5jbG9uZSgpO1xuICB2YXIgYSA9IHRoaXM7IC8vIChOIC8gMikgKiBRICsgUVxuICB2YXIgYiA9IHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7IC8vIChOIC8gMikgKiBRXG4gIHZhciBjID0gdGhpczsgLy8gUVxuXG4gIGZvciAodmFyIGJpdHMgPSBbXTsgdC5jbXBuKDApICE9PSAwOyB0Lml1c2hybigxKSlcbiAgICBiaXRzLnB1c2godC5hbmRsbigxKSk7XG5cbiAgZm9yICh2YXIgaSA9IGJpdHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoYml0c1tpXSA9PT0gMCkge1xuICAgICAgLy8gTiAqIFEgKyBRID0gKChOIC8gMikgKiBRICsgUSkpICsgKE4gLyAyKSAqIFFcbiAgICAgIGEgPSBhLmRpZmZBZGQoYiwgYyk7XG4gICAgICAvLyBOICogUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKSlcbiAgICAgIGIgPSBiLmRibCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOICogUSA9ICgoTiAvIDIpICogUSArIFEpICsgKChOIC8gMikgKiBRKVxuICAgICAgYiA9IGEuZGlmZkFkZChiLCBjKTtcbiAgICAgIC8vIE4gKiBRICsgUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKVxuICAgICAgYSA9IGEuZGJsKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBiO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qdW1sQWRkID0gZnVuY3Rpb24ganVtbEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKG90aGVyKSB7XG4gIHJldHVybiB0aGlzLmdldFgoKS5jbXAob3RoZXIuZ2V0WCgpKSA9PT0gMDtcbn07XG5cblBvaW50LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gIHRoaXMueCA9IHRoaXMueC5yZWRNdWwodGhpcy56LnJlZEludm0oKSk7XG4gIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICByZXR1cm4gdGhpcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgLy8gTm9ybWFsaXplIGNvb3JkaW5hdGVzXG4gIHRoaXMubm9ybWFsaXplKCk7XG5cbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpO1xuXG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBTaG9ydEN1cnZlKGNvbmYpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdzaG9ydCcsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYiA9IG5ldyBCTihjb25mLmIsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMudGludiA9IHRoaXMudHdvLnJlZEludm0oKTtcblxuICB0aGlzLnplcm9BID0gdGhpcy5hLmZyb21SZWQoKS5jbXBuKDApID09PSAwO1xuICB0aGlzLnRocmVlQSA9IHRoaXMuYS5mcm9tUmVkKCkuc3ViKHRoaXMucCkuY21wbigtMykgPT09IDA7XG5cbiAgLy8gSWYgdGhlIGN1cnZlIGlzIGVuZG9tb3JwaGljLCBwcmVjYWxjdWxhdGUgYmV0YSBhbmQgbGFtYmRhXG4gIHRoaXMuZW5kbyA9IHRoaXMuX2dldEVuZG9tb3JwaGlzbShjb25mKTtcbiAgdGhpcy5fZW5kb1duYWZUMSA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fZW5kb1duYWZUMiA9IG5ldyBBcnJheSg0KTtcbn1cbmluaGVyaXRzKFNob3J0Q3VydmUsIEJhc2UpO1xubW9kdWxlLmV4cG9ydHMgPSBTaG9ydEN1cnZlO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZ2V0RW5kb21vcnBoaXNtID0gZnVuY3Rpb24gX2dldEVuZG9tb3JwaGlzbShjb25mKSB7XG4gIC8vIE5vIGVmZmljaWVudCBlbmRvbW9ycGhpc21cbiAgaWYgKCF0aGlzLnplcm9BIHx8ICF0aGlzLmcgfHwgIXRoaXMubiB8fCB0aGlzLnAubW9kbigzKSAhPT0gMSlcbiAgICByZXR1cm47XG5cbiAgLy8gQ29tcHV0ZSBiZXRhIGFuZCBsYW1iZGEsIHRoYXQgbGFtYmRhICogUCA9IChiZXRhICogUHg7IFB5KVxuICB2YXIgYmV0YTtcbiAgdmFyIGxhbWJkYTtcbiAgaWYgKGNvbmYuYmV0YSkge1xuICAgIGJldGEgPSBuZXcgQk4oY29uZi5iZXRhLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB9IGVsc2Uge1xuICAgIHZhciBiZXRhcyA9IHRoaXMuX2dldEVuZG9Sb290cyh0aGlzLnApO1xuICAgIC8vIENob29zZSB0aGUgc21hbGxlc3QgYmV0YVxuICAgIGJldGEgPSBiZXRhc1swXS5jbXAoYmV0YXNbMV0pIDwgMCA/IGJldGFzWzBdIDogYmV0YXNbMV07XG4gICAgYmV0YSA9IGJldGEudG9SZWQodGhpcy5yZWQpO1xuICB9XG4gIGlmIChjb25mLmxhbWJkYSkge1xuICAgIGxhbWJkYSA9IG5ldyBCTihjb25mLmxhbWJkYSwgMTYpO1xuICB9IGVsc2Uge1xuICAgIC8vIENob29zZSB0aGUgbGFtYmRhIHRoYXQgaXMgbWF0Y2hpbmcgc2VsZWN0ZWQgYmV0YVxuICAgIHZhciBsYW1iZGFzID0gdGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMubik7XG4gICAgaWYgKHRoaXMuZy5tdWwobGFtYmRhc1swXSkueC5jbXAodGhpcy5nLngucmVkTXVsKGJldGEpKSA9PT0gMCkge1xuICAgICAgbGFtYmRhID0gbGFtYmRhc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFtYmRhID0gbGFtYmRhc1sxXTtcbiAgICAgIGFzc2VydCh0aGlzLmcubXVsKGxhbWJkYSkueC5jbXAodGhpcy5nLngucmVkTXVsKGJldGEpKSA9PT0gMCk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2V0IGJhc2lzIHZlY3RvcnMsIHVzZWQgZm9yIGJhbGFuY2VkIGxlbmd0aC10d28gcmVwcmVzZW50YXRpb25cbiAgdmFyIGJhc2lzO1xuICBpZiAoY29uZi5iYXNpcykge1xuICAgIGJhc2lzID0gY29uZi5iYXNpcy5tYXAoZnVuY3Rpb24odmVjKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhOiBuZXcgQk4odmVjLmEsIDE2KSxcbiAgICAgICAgYjogbmV3IEJOKHZlYy5iLCAxNiksXG4gICAgICB9O1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGJhc2lzID0gdGhpcy5fZ2V0RW5kb0Jhc2lzKGxhbWJkYSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJldGE6IGJldGEsXG4gICAgbGFtYmRhOiBsYW1iZGEsXG4gICAgYmFzaXM6IGJhc2lzLFxuICB9O1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9Sb290cyA9IGZ1bmN0aW9uIF9nZXRFbmRvUm9vdHMobnVtKSB7XG4gIC8vIEZpbmQgcm9vdHMgb2YgZm9yIHheMiArIHggKyAxIGluIEZcbiAgLy8gUm9vdCA9ICgtMSArLSBTcXJ0KC0zKSkgLyAyXG4gIC8vXG4gIHZhciByZWQgPSBudW0gPT09IHRoaXMucCA/IHRoaXMucmVkIDogQk4ubW9udChudW0pO1xuICB2YXIgdGludiA9IG5ldyBCTigyKS50b1JlZChyZWQpLnJlZEludm0oKTtcbiAgdmFyIG50aW52ID0gdGludi5yZWROZWcoKTtcblxuICB2YXIgcyA9IG5ldyBCTigzKS50b1JlZChyZWQpLnJlZE5lZygpLnJlZFNxcnQoKS5yZWRNdWwodGludik7XG5cbiAgdmFyIGwxID0gbnRpbnYucmVkQWRkKHMpLmZyb21SZWQoKTtcbiAgdmFyIGwyID0gbnRpbnYucmVkU3ViKHMpLmZyb21SZWQoKTtcbiAgcmV0dXJuIFsgbDEsIGwyIF07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZ2V0RW5kb0Jhc2lzID0gZnVuY3Rpb24gX2dldEVuZG9CYXNpcyhsYW1iZGEpIHtcbiAgLy8gYXByeFNxcnQgPj0gc3FydCh0aGlzLm4pXG4gIHZhciBhcHJ4U3FydCA9IHRoaXMubi51c2hybihNYXRoLmZsb29yKHRoaXMubi5iaXRMZW5ndGgoKSAvIDIpKTtcblxuICAvLyAzLjc0XG4gIC8vIFJ1biBFR0NELCB1bnRpbCByKEwgKyAxKSA8IGFwcnhTcXJ0XG4gIHZhciB1ID0gbGFtYmRhO1xuICB2YXIgdiA9IHRoaXMubi5jbG9uZSgpO1xuICB2YXIgeDEgPSBuZXcgQk4oMSk7XG4gIHZhciB5MSA9IG5ldyBCTigwKTtcbiAgdmFyIHgyID0gbmV3IEJOKDApO1xuICB2YXIgeTIgPSBuZXcgQk4oMSk7XG5cbiAgLy8gTk9URTogYWxsIHZlY3RvcnMgYXJlIHJvb3RzIG9mOiBhICsgYiAqIGxhbWJkYSA9IDAgKG1vZCBuKVxuICB2YXIgYTA7XG4gIHZhciBiMDtcbiAgLy8gRmlyc3QgdmVjdG9yXG4gIHZhciBhMTtcbiAgdmFyIGIxO1xuICAvLyBTZWNvbmQgdmVjdG9yXG4gIHZhciBhMjtcbiAgdmFyIGIyO1xuXG4gIHZhciBwcmV2UjtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcjtcbiAgdmFyIHg7XG4gIHdoaWxlICh1LmNtcG4oMCkgIT09IDApIHtcbiAgICB2YXIgcSA9IHYuZGl2KHUpO1xuICAgIHIgPSB2LnN1YihxLm11bCh1KSk7XG4gICAgeCA9IHgyLnN1YihxLm11bCh4MSkpO1xuICAgIHZhciB5ID0geTIuc3ViKHEubXVsKHkxKSk7XG5cbiAgICBpZiAoIWExICYmIHIuY21wKGFwcnhTcXJ0KSA8IDApIHtcbiAgICAgIGEwID0gcHJldlIubmVnKCk7XG4gICAgICBiMCA9IHgxO1xuICAgICAgYTEgPSByLm5lZygpO1xuICAgICAgYjEgPSB4O1xuICAgIH0gZWxzZSBpZiAoYTEgJiYgKytpID09PSAyKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcHJldlIgPSByO1xuXG4gICAgdiA9IHU7XG4gICAgdSA9IHI7XG4gICAgeDIgPSB4MTtcbiAgICB4MSA9IHg7XG4gICAgeTIgPSB5MTtcbiAgICB5MSA9IHk7XG4gIH1cbiAgYTIgPSByLm5lZygpO1xuICBiMiA9IHg7XG5cbiAgdmFyIGxlbjEgPSBhMS5zcXIoKS5hZGQoYjEuc3FyKCkpO1xuICB2YXIgbGVuMiA9IGEyLnNxcigpLmFkZChiMi5zcXIoKSk7XG4gIGlmIChsZW4yLmNtcChsZW4xKSA+PSAwKSB7XG4gICAgYTIgPSBhMDtcbiAgICBiMiA9IGIwO1xuICB9XG5cbiAgLy8gTm9ybWFsaXplIHNpZ25zXG4gIGlmIChhMS5uZWdhdGl2ZSkge1xuICAgIGExID0gYTEubmVnKCk7XG4gICAgYjEgPSBiMS5uZWcoKTtcbiAgfVxuICBpZiAoYTIubmVnYXRpdmUpIHtcbiAgICBhMiA9IGEyLm5lZygpO1xuICAgIGIyID0gYjIubmVnKCk7XG4gIH1cblxuICByZXR1cm4gW1xuICAgIHsgYTogYTEsIGI6IGIxIH0sXG4gICAgeyBhOiBhMiwgYjogYjIgfSxcbiAgXTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvU3BsaXQgPSBmdW5jdGlvbiBfZW5kb1NwbGl0KGspIHtcbiAgdmFyIGJhc2lzID0gdGhpcy5lbmRvLmJhc2lzO1xuICB2YXIgdjEgPSBiYXNpc1swXTtcbiAgdmFyIHYyID0gYmFzaXNbMV07XG5cbiAgdmFyIGMxID0gdjIuYi5tdWwoaykuZGl2Um91bmQodGhpcy5uKTtcbiAgdmFyIGMyID0gdjEuYi5uZWcoKS5tdWwoaykuZGl2Um91bmQodGhpcy5uKTtcblxuICB2YXIgcDEgPSBjMS5tdWwodjEuYSk7XG4gIHZhciBwMiA9IGMyLm11bCh2Mi5hKTtcbiAgdmFyIHExID0gYzEubXVsKHYxLmIpO1xuICB2YXIgcTIgPSBjMi5tdWwodjIuYik7XG5cbiAgLy8gQ2FsY3VsYXRlIGFuc3dlclxuICB2YXIgazEgPSBrLnN1YihwMSkuc3ViKHAyKTtcbiAgdmFyIGsyID0gcTEuYWRkKHEyKS5uZWcoKTtcbiAgcmV0dXJuIHsgazE6IGsxLCBrMjogazIgfTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnBvaW50RnJvbVggPSBmdW5jdGlvbiBwb2ludEZyb21YKHgsIG9kZCkge1xuICB4ID0gbmV3IEJOKHgsIDE2KTtcbiAgaWYgKCF4LnJlZClcbiAgICB4ID0geC50b1JlZCh0aGlzLnJlZCk7XG5cbiAgdmFyIHkyID0geC5yZWRTcXIoKS5yZWRNdWwoeCkucmVkSUFkZCh4LnJlZE11bCh0aGlzLmEpKS5yZWRJQWRkKHRoaXMuYik7XG4gIHZhciB5ID0geTIucmVkU3FydCgpO1xuICBpZiAoeS5yZWRTcXIoKS5yZWRTdWIoeTIpLmNtcCh0aGlzLnplcm8pICE9PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuXG4gIC8vIFhYWCBJcyB0aGVyZSBhbnkgd2F5IHRvIHRlbGwgaWYgdGhlIG51bWJlciBpcyBvZGQgd2l0aG91dCBjb252ZXJ0aW5nIGl0XG4gIC8vIHRvIG5vbi1yZWQgZm9ybT9cbiAgdmFyIGlzT2RkID0geS5mcm9tUmVkKCkuaXNPZGQoKTtcbiAgaWYgKG9kZCAmJiAhaXNPZGQgfHwgIW9kZCAmJiBpc09kZClcbiAgICB5ID0geS5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgaWYgKHBvaW50LmluZilcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeCA9IHBvaW50Lng7XG4gIHZhciB5ID0gcG9pbnQueTtcblxuICB2YXIgYXggPSB0aGlzLmEucmVkTXVsKHgpO1xuICB2YXIgcmhzID0geC5yZWRTcXIoKS5yZWRNdWwoeCkucmVkSUFkZChheCkucmVkSUFkZCh0aGlzLmIpO1xuICByZXR1cm4geS5yZWRTcXIoKS5yZWRJU3ViKHJocykuY21wbigwKSA9PT0gMDtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvV25hZk11bEFkZCA9XG4gICAgZnVuY3Rpb24gX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzLCBqYWNvYmlhblJlc3VsdCkge1xuICAgICAgdmFyIG5wb2ludHMgPSB0aGlzLl9lbmRvV25hZlQxO1xuICAgICAgdmFyIG5jb2VmZnMgPSB0aGlzLl9lbmRvV25hZlQyO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gdGhpcy5fZW5kb1NwbGl0KGNvZWZmc1tpXSk7XG4gICAgICAgIHZhciBwID0gcG9pbnRzW2ldO1xuICAgICAgICB2YXIgYmV0YSA9IHAuX2dldEJldGEoKTtcblxuICAgICAgICBpZiAoc3BsaXQuazEubmVnYXRpdmUpIHtcbiAgICAgICAgICBzcGxpdC5rMS5pbmVnKCk7XG4gICAgICAgICAgcCA9IHAubmVnKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzcGxpdC5rMi5uZWdhdGl2ZSkge1xuICAgICAgICAgIHNwbGl0LmsyLmluZWcoKTtcbiAgICAgICAgICBiZXRhID0gYmV0YS5uZWcodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBucG9pbnRzW2kgKiAyXSA9IHA7XG4gICAgICAgIG5wb2ludHNbaSAqIDIgKyAxXSA9IGJldGE7XG4gICAgICAgIG5jb2VmZnNbaSAqIDJdID0gc3BsaXQuazE7XG4gICAgICAgIG5jb2VmZnNbaSAqIDIgKyAxXSA9IHNwbGl0LmsyO1xuICAgICAgfVxuICAgICAgdmFyIHJlcyA9IHRoaXMuX3duYWZNdWxBZGQoMSwgbnBvaW50cywgbmNvZWZmcywgaSAqIDIsIGphY29iaWFuUmVzdWx0KTtcblxuICAgICAgLy8gQ2xlYW4tdXAgcmVmZXJlbmNlcyB0byBwb2ludHMgYW5kIGNvZWZmaWNpZW50c1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpICogMjsgaisrKSB7XG4gICAgICAgIG5wb2ludHNbal0gPSBudWxsO1xuICAgICAgICBuY29lZmZzW2pdID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHksIGlzUmVkKSB7XG4gIEJhc2UuQmFzZVBvaW50LmNhbGwodGhpcywgY3VydmUsICdhZmZpbmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IG51bGw7XG4gICAgdGhpcy55ID0gbnVsbDtcbiAgICB0aGlzLmluZiA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnkgPSBuZXcgQk4oeSwgMTYpO1xuICAgIC8vIEZvcmNlIHJlZGdvbWVyeSByZXByZXNlbnRhdGlvbiB3aGVuIGxvYWRpbmcgZnJvbSBKU09OXG4gICAgaWYgKGlzUmVkKSB7XG4gICAgICB0aGlzLnguZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgICAgdGhpcy55LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLngucmVkKVxuICAgICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMueS5yZWQpXG4gICAgICB0aGlzLnkgPSB0aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIHRoaXMuaW5mID0gZmFsc2U7XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoeCwgeSwgaXNSZWQpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB5LCBpc1JlZCk7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludEZyb21KU09OID0gZnVuY3Rpb24gcG9pbnRGcm9tSlNPTihvYmosIHJlZCkge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqLCByZWQpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9nZXRCZXRhID0gZnVuY3Rpb24gX2dldEJldGEoKSB7XG4gIGlmICghdGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybjtcblxuICB2YXIgcHJlID0gdGhpcy5wcmVjb21wdXRlZDtcbiAgaWYgKHByZSAmJiBwcmUuYmV0YSlcbiAgICByZXR1cm4gcHJlLmJldGE7XG5cbiAgdmFyIGJldGEgPSB0aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWRNdWwodGhpcy5jdXJ2ZS5lbmRvLmJldGEpLCB0aGlzLnkpO1xuICBpZiAocHJlKSB7XG4gICAgdmFyIGN1cnZlID0gdGhpcy5jdXJ2ZTtcbiAgICB2YXIgZW5kb011bCA9IGZ1bmN0aW9uKHApIHtcbiAgICAgIHJldHVybiBjdXJ2ZS5wb2ludChwLngucmVkTXVsKGN1cnZlLmVuZG8uYmV0YSksIHAueSk7XG4gICAgfTtcbiAgICBwcmUuYmV0YSA9IGJldGE7XG4gICAgYmV0YS5wcmVjb21wdXRlZCA9IHtcbiAgICAgIGJldGE6IG51bGwsXG4gICAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgICBwb2ludHM6IHByZS5uYWYucG9pbnRzLm1hcChlbmRvTXVsKSxcbiAgICAgIH0sXG4gICAgICBkb3VibGVzOiBwcmUuZG91YmxlcyAmJiB7XG4gICAgICAgIHN0ZXA6IHByZS5kb3VibGVzLnN0ZXAsXG4gICAgICAgIHBvaW50czogcHJlLmRvdWJsZXMucG9pbnRzLm1hcChlbmRvTXVsKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICByZXR1cm4gYmV0YTtcbn07XG5cblBvaW50LnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gIGlmICghdGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gWyB0aGlzLngsIHRoaXMueSBdO1xuXG4gIHJldHVybiBbIHRoaXMueCwgdGhpcy55LCB0aGlzLnByZWNvbXB1dGVkICYmIHtcbiAgICBkb3VibGVzOiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMgJiYge1xuICAgICAgc3RlcDogdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnN0ZXAsXG4gICAgICBwb2ludHM6IHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5wb2ludHMuc2xpY2UoMSksXG4gICAgfSxcbiAgICBuYWY6IHRoaXMucHJlY29tcHV0ZWQubmFmICYmIHtcbiAgICAgIHduZDogdGhpcy5wcmVjb21wdXRlZC5uYWYud25kLFxuICAgICAgcG9pbnRzOiB0aGlzLnByZWNvbXB1dGVkLm5hZi5wb2ludHMuc2xpY2UoMSksXG4gICAgfSxcbiAgfSBdO1xufTtcblxuUG9pbnQuZnJvbUpTT04gPSBmdW5jdGlvbiBmcm9tSlNPTihjdXJ2ZSwgb2JqLCByZWQpIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKVxuICAgIG9iaiA9IEpTT04ucGFyc2Uob2JqKTtcbiAgdmFyIHJlcyA9IGN1cnZlLnBvaW50KG9ialswXSwgb2JqWzFdLCByZWQpO1xuICBpZiAoIW9ialsyXSlcbiAgICByZXR1cm4gcmVzO1xuXG4gIGZ1bmN0aW9uIG9iajJwb2ludChvYmopIHtcbiAgICByZXR1cm4gY3VydmUucG9pbnQob2JqWzBdLCBvYmpbMV0sIHJlZCk7XG4gIH1cblxuICB2YXIgcHJlID0gb2JqWzJdO1xuICByZXMucHJlY29tcHV0ZWQgPSB7XG4gICAgYmV0YTogbnVsbCxcbiAgICBkb3VibGVzOiBwcmUuZG91YmxlcyAmJiB7XG4gICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgcG9pbnRzOiBbIHJlcyBdLmNvbmNhdChwcmUuZG91Ymxlcy5wb2ludHMubWFwKG9iajJwb2ludCkpLFxuICAgIH0sXG4gICAgbmFmOiBwcmUubmFmICYmIHtcbiAgICAgIHduZDogcHJlLm5hZi53bmQsXG4gICAgICBwb2ludHM6IFsgcmVzIF0uY29uY2F0KHByZS5uYWYucG9pbnRzLm1hcChvYmoycG9pbnQpKSxcbiAgICB9LFxuICB9O1xuICByZXR1cm4gcmVzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgeTogJyArIHRoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICByZXR1cm4gdGhpcy5pbmY7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gcDtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIFAgKyBQID0gMlBcbiAgaWYgKHRoaXMuZXEocCkpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCk7XG5cbiAgLy8gUCArICgtUCkgPSBPXG4gIGlmICh0aGlzLm5lZygpLmVxKHApKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIC8vIFAgKyBRID0gT1xuICBpZiAodGhpcy54LmNtcChwLngpID09PSAwKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciBjID0gdGhpcy55LnJlZFN1YihwLnkpO1xuICBpZiAoYy5jbXBuKDApICE9PSAwKVxuICAgIGMgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKHAueCkucmVkSW52bSgpKTtcbiAgdmFyIG54ID0gYy5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueCkucmVkSVN1YihwLngpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKG54KSkucmVkSVN1Yih0aGlzLnkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDJQID0gT1xuICB2YXIgeXMxID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICBpZiAoeXMxLmNtcG4oMCkgPT09IDApXG4gICAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7XG5cbiAgdmFyIGEgPSB0aGlzLmN1cnZlLmE7XG5cbiAgdmFyIHgyID0gdGhpcy54LnJlZFNxcigpO1xuICB2YXIgZHlpbnYgPSB5czEucmVkSW52bSgpO1xuICB2YXIgYyA9IHgyLnJlZEFkZCh4MikucmVkSUFkZCh4MikucmVkSUFkZChhKS5yZWRNdWwoZHlpbnYpO1xuXG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0aGlzLngucmVkQWRkKHRoaXMueCkpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKG54KSkucmVkSVN1Yih0aGlzLnkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFggPSBmdW5jdGlvbiBnZXRYKCkge1xuICByZXR1cm4gdGhpcy54LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gZ2V0WSgpIHtcbiAgcmV0dXJuIHRoaXMueS5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGspIHtcbiAgayA9IG5ldyBCTihrLCAxNik7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcbiAgZWxzZSBpZiAodGhpcy5faGFzRG91YmxlcyhrKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcywgayk7XG4gIGVsc2UgaWYgKHRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQoWyB0aGlzIF0sIFsgayBdKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsIGspO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZChrMSwgcDIsIGsyKSB7XG4gIHZhciBwb2ludHMgPSBbIHRoaXMsIHAyIF07XG4gIHZhciBjb2VmZnMgPSBbIGsxLCBrMiBdO1xuICBpZiAodGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChwb2ludHMsIGNvZWZmcyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLCBwb2ludHMsIGNvZWZmcywgMik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuam11bEFkZCA9IGZ1bmN0aW9uIGptdWxBZGQoazEsIHAyLCBrMikge1xuICB2YXIgcG9pbnRzID0gWyB0aGlzLCBwMiBdO1xuICB2YXIgY29lZmZzID0gWyBrMSwgazIgXTtcbiAgaWYgKHRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQocG9pbnRzLCBjb2VmZnMsIHRydWUpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgcG9pbnRzLCBjb2VmZnMsIDIsIHRydWUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEocCkge1xuICByZXR1cm4gdGhpcyA9PT0gcCB8fFxuICAgICAgICAgdGhpcy5pbmYgPT09IHAuaW5mICYmXG4gICAgICAgICAgICAgKHRoaXMuaW5mIHx8IHRoaXMueC5jbXAocC54KSA9PT0gMCAmJiB0aGlzLnkuY21wKHAueSkgPT09IDApO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyhfcHJlY29tcHV0ZSkge1xuICBpZiAodGhpcy5pbmYpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgdmFyIHJlcyA9IHRoaXMuY3VydmUucG9pbnQodGhpcy54LCB0aGlzLnkucmVkTmVnKCkpO1xuICBpZiAoX3ByZWNvbXB1dGUgJiYgdGhpcy5wcmVjb21wdXRlZCkge1xuICAgIHZhciBwcmUgPSB0aGlzLnByZWNvbXB1dGVkO1xuICAgIHZhciBuZWdhdGUgPSBmdW5jdGlvbihwKSB7XG4gICAgICByZXR1cm4gcC5uZWcoKTtcbiAgICB9O1xuICAgIHJlcy5wcmVjb21wdXRlZCA9IHtcbiAgICAgIG5hZjogcHJlLm5hZiAmJiB7XG4gICAgICAgIHduZDogcHJlLm5hZi53bmQsXG4gICAgICAgIHBvaW50czogcHJlLm5hZi5wb2ludHMubWFwKG5lZ2F0ZSksXG4gICAgICB9LFxuICAgICAgZG91YmxlczogcHJlLmRvdWJsZXMgJiYge1xuICAgICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgICBwb2ludHM6IHByZS5kb3VibGVzLnBvaW50cy5tYXAobmVnYXRlKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLnRvSiA9IGZ1bmN0aW9uIHRvSigpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcblxuICB2YXIgcmVzID0gdGhpcy5jdXJ2ZS5qcG9pbnQodGhpcy54LCB0aGlzLnksIHRoaXMuY3VydmUub25lKTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbmZ1bmN0aW9uIEpQb2ludChjdXJ2ZSwgeCwgeSwgeikge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAnamFjb2JpYW4nKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy55ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gbmV3IEJOKDApO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy55ID0gbmV3IEJOKHksIDE2KTtcbiAgICB0aGlzLnogPSBuZXcgQk4oeiwgMTYpO1xuICB9XG4gIGlmICghdGhpcy54LnJlZClcbiAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICBpZiAoIXRoaXMueS5yZWQpXG4gICAgdGhpcy55ID0gdGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgaWYgKCF0aGlzLnoucmVkKVxuICAgIHRoaXMueiA9IHRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG5cbiAgdGhpcy56T25lID0gdGhpcy56ID09PSB0aGlzLmN1cnZlLm9uZTtcbn1cbmluaGVyaXRzKEpQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5qcG9pbnQgPSBmdW5jdGlvbiBqcG9pbnQoeCwgeSwgeikge1xuICByZXR1cm4gbmV3IEpQb2ludCh0aGlzLCB4LCB5LCB6KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUudG9QID0gZnVuY3Rpb24gdG9QKCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7XG5cbiAgdmFyIHppbnYgPSB0aGlzLnoucmVkSW52bSgpO1xuICB2YXIgemludjIgPSB6aW52LnJlZFNxcigpO1xuICB2YXIgYXggPSB0aGlzLngucmVkTXVsKHppbnYyKTtcbiAgdmFyIGF5ID0gdGhpcy55LnJlZE11bCh6aW52MikucmVkTXVsKHppbnYpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KGF4LCBheSk7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZygpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KHRoaXMueCwgdGhpcy55LnJlZE5lZygpLCB0aGlzLnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQocCkge1xuICAvLyBPICsgUCA9IFBcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiBwO1xuXG4gIC8vIFAgKyBPID0gUFxuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gMTJNICsgNFMgKyA3QVxuICB2YXIgcHoyID0gcC56LnJlZFNxcigpO1xuICB2YXIgejIgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciB1MSA9IHRoaXMueC5yZWRNdWwocHoyKTtcbiAgdmFyIHUyID0gcC54LnJlZE11bCh6Mik7XG4gIHZhciBzMSA9IHRoaXMueS5yZWRNdWwocHoyLnJlZE11bChwLnopKTtcbiAgdmFyIHMyID0gcC55LnJlZE11bCh6Mi5yZWRNdWwodGhpcy56KSk7XG5cbiAgdmFyIGggPSB1MS5yZWRTdWIodTIpO1xuICB2YXIgciA9IHMxLnJlZFN1YihzMik7XG4gIGlmIChoLmNtcG4oMCkgPT09IDApIHtcbiAgICBpZiAoci5jbXBuKDApICE9PSAwKVxuICAgICAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLmRibCgpO1xuICB9XG5cbiAgdmFyIGgyID0gaC5yZWRTcXIoKTtcbiAgdmFyIGgzID0gaDIucmVkTXVsKGgpO1xuICB2YXIgdiA9IHUxLnJlZE11bChoMik7XG5cbiAgdmFyIG54ID0gci5yZWRTcXIoKS5yZWRJQWRkKGgzKS5yZWRJU3ViKHYpLnJlZElTdWIodik7XG4gIHZhciBueSA9IHIucmVkTXVsKHYucmVkSVN1YihueCkpLnJlZElTdWIoczEucmVkTXVsKGgzKSk7XG4gIHZhciBueiA9IHRoaXMuei5yZWRNdWwocC56KS5yZWRNdWwoaCk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5taXhlZEFkZCA9IGZ1bmN0aW9uIG1peGVkQWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gcC50b0ooKTtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDhNICsgM1MgKyA3QVxuICB2YXIgejIgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciB1MSA9IHRoaXMueDtcbiAgdmFyIHUyID0gcC54LnJlZE11bCh6Mik7XG4gIHZhciBzMSA9IHRoaXMueTtcbiAgdmFyIHMyID0gcC55LnJlZE11bCh6MikucmVkTXVsKHRoaXMueik7XG5cbiAgdmFyIGggPSB1MS5yZWRTdWIodTIpO1xuICB2YXIgciA9IHMxLnJlZFN1YihzMik7XG4gIGlmIChoLmNtcG4oMCkgPT09IDApIHtcbiAgICBpZiAoci5jbXBuKDApICE9PSAwKVxuICAgICAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLmRibCgpO1xuICB9XG5cbiAgdmFyIGgyID0gaC5yZWRTcXIoKTtcbiAgdmFyIGgzID0gaDIucmVkTXVsKGgpO1xuICB2YXIgdiA9IHUxLnJlZE11bChoMik7XG5cbiAgdmFyIG54ID0gci5yZWRTcXIoKS5yZWRJQWRkKGgzKS5yZWRJU3ViKHYpLnJlZElTdWIodik7XG4gIHZhciBueSA9IHIucmVkTXVsKHYucmVkSVN1YihueCkpLnJlZElTdWIoczEucmVkTXVsKGgzKSk7XG4gIHZhciBueiA9IHRoaXMuei5yZWRNdWwoaCk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5kYmxwID0gZnVuY3Rpb24gZGJscChwb3cpIHtcbiAgaWYgKHBvdyA9PT0gMClcbiAgICByZXR1cm4gdGhpcztcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuICBpZiAoIXBvdylcbiAgICByZXR1cm4gdGhpcy5kYmwoKTtcblxuICB2YXIgaTtcbiAgaWYgKHRoaXMuY3VydmUuemVyb0EgfHwgdGhpcy5jdXJ2ZS50aHJlZUEpIHtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgZm9yIChpID0gMDsgaSA8IHBvdzsgaSsrKVxuICAgICAgciA9IHIuZGJsKCk7XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICAvLyAxTSArIDJTICsgMUEgKyBOICogKDRTICsgNU0gKyA4QSlcbiAgLy8gTiA9IDEgPT4gNk0gKyA2UyArIDlBXG4gIHZhciBhID0gdGhpcy5jdXJ2ZS5hO1xuICB2YXIgdGludiA9IHRoaXMuY3VydmUudGludjtcblxuICB2YXIganggPSB0aGlzLng7XG4gIHZhciBqeSA9IHRoaXMueTtcbiAgdmFyIGp6ID0gdGhpcy56O1xuICB2YXIgano0ID0ganoucmVkU3FyKCkucmVkU3FyKCk7XG5cbiAgLy8gUmV1c2UgcmVzdWx0c1xuICB2YXIganlkID0gankucmVkQWRkKGp5KTtcbiAgZm9yIChpID0gMDsgaSA8IHBvdzsgaSsrKSB7XG4gICAgdmFyIGp4MiA9IGp4LnJlZFNxcigpO1xuICAgIHZhciBqeWQyID0ganlkLnJlZFNxcigpO1xuICAgIHZhciBqeWQ0ID0ganlkMi5yZWRTcXIoKTtcbiAgICB2YXIgYyA9IGp4Mi5yZWRBZGQoangyKS5yZWRJQWRkKGp4MikucmVkSUFkZChhLnJlZE11bChqejQpKTtcblxuICAgIHZhciB0MSA9IGp4LnJlZE11bChqeWQyKTtcbiAgICB2YXIgbnggPSBjLnJlZFNxcigpLnJlZElTdWIodDEucmVkQWRkKHQxKSk7XG4gICAgdmFyIHQyID0gdDEucmVkSVN1YihueCk7XG4gICAgdmFyIGRueSA9IGMucmVkTXVsKHQyKTtcbiAgICBkbnkgPSBkbnkucmVkSUFkZChkbnkpLnJlZElTdWIoanlkNCk7XG4gICAgdmFyIG56ID0ganlkLnJlZE11bChqeik7XG4gICAgaWYgKGkgKyAxIDwgcG93KVxuICAgICAgano0ID0gano0LnJlZE11bChqeWQ0KTtcblxuICAgIGp4ID0gbng7XG4gICAganogPSBuejtcbiAgICBqeWQgPSBkbnk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoangsIGp5ZC5yZWRNdWwodGludiksIGp6KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgaWYgKHRoaXMuY3VydmUuemVyb0EpXG4gICAgcmV0dXJuIHRoaXMuX3plcm9EYmwoKTtcbiAgZWxzZSBpZiAodGhpcy5jdXJ2ZS50aHJlZUEpXG4gICAgcmV0dXJuIHRoaXMuX3RocmVlRGJsKCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fZGJsKCk7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLl96ZXJvRGJsID0gZnVuY3Rpb24gX3plcm9EYmwoKSB7XG4gIHZhciBueDtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIC8vIFogPSAxXG4gIGlmICh0aGlzLnpPbmUpIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTAuaHRtbFxuICAgIC8vICAgICAjZG91YmxpbmctbWRibC0yMDA3LWJsXG4gICAgLy8gMU0gKyA1UyArIDE0QVxuXG4gICAgLy8gWFggPSBYMV4yXG4gICAgdmFyIHh4ID0gdGhpcy54LnJlZFNxcigpO1xuICAgIC8vIFlZID0gWTFeMlxuICAgIHZhciB5eSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBZWVlZID0gWVleMlxuICAgIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gICAgLy8gUyA9IDIgKiAoKFgxICsgWVkpXjIgLSBYWCAtIFlZWVkpXG4gICAgdmFyIHMgPSB0aGlzLngucmVkQWRkKHl5KS5yZWRTcXIoKS5yZWRJU3ViKHh4KS5yZWRJU3ViKHl5eXkpO1xuICAgIHMgPSBzLnJlZElBZGQocyk7XG4gICAgLy8gTSA9IDMgKiBYWCArIGE7IGEgPSAwXG4gICAgdmFyIG0gPSB4eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpO1xuICAgIC8vIFQgPSBNIF4gMiAtIDIqU1xuICAgIHZhciB0ID0gbS5yZWRTcXIoKS5yZWRJU3ViKHMpLnJlZElTdWIocyk7XG5cbiAgICAvLyA4ICogWVlZWVxuICAgIHZhciB5eXl5OCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG5cbiAgICAvLyBYMyA9IFRcbiAgICBueCA9IHQ7XG4gICAgLy8gWTMgPSBNICogKFMgLSBUKSAtIDggKiBZWVlZXG4gICAgbnkgPSBtLnJlZE11bChzLnJlZElTdWIodCkpLnJlZElTdWIoeXl5eTgpO1xuICAgIC8vIFozID0gMipZMVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICB9IGVsc2Uge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMC5odG1sXG4gICAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOS1sXG4gICAgLy8gMk0gKyA1UyArIDEzQVxuXG4gICAgLy8gQSA9IFgxXjJcbiAgICB2YXIgYSA9IHRoaXMueC5yZWRTcXIoKTtcbiAgICAvLyBCID0gWTFeMlxuICAgIHZhciBiID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIEMgPSBCXjJcbiAgICB2YXIgYyA9IGIucmVkU3FyKCk7XG4gICAgLy8gRCA9IDIgKiAoKFgxICsgQileMiAtIEEgLSBDKVxuICAgIHZhciBkID0gdGhpcy54LnJlZEFkZChiKS5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYyk7XG4gICAgZCA9IGQucmVkSUFkZChkKTtcbiAgICAvLyBFID0gMyAqIEFcbiAgICB2YXIgZSA9IGEucmVkQWRkKGEpLnJlZElBZGQoYSk7XG4gICAgLy8gRiA9IEVeMlxuICAgIHZhciBmID0gZS5yZWRTcXIoKTtcblxuICAgIC8vIDggKiBDXG4gICAgdmFyIGM4ID0gYy5yZWRJQWRkKGMpO1xuICAgIGM4ID0gYzgucmVkSUFkZChjOCk7XG4gICAgYzggPSBjOC5yZWRJQWRkKGM4KTtcblxuICAgIC8vIFgzID0gRiAtIDIgKiBEXG4gICAgbnggPSBmLnJlZElTdWIoZCkucmVkSVN1YihkKTtcbiAgICAvLyBZMyA9IEUgKiAoRCAtIFgzKSAtIDggKiBDXG4gICAgbnkgPSBlLnJlZE11bChkLnJlZElTdWIobngpKS5yZWRJU3ViKGM4KTtcbiAgICAvLyBaMyA9IDIgKiBZMSAqIFoxXG4gICAgbnogPSB0aGlzLnkucmVkTXVsKHRoaXMueik7XG4gICAgbnogPSBuei5yZWRJQWRkKG56KTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuX3RocmVlRGJsID0gZnVuY3Rpb24gX3RocmVlRGJsKCkge1xuICB2YXIgbng7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICAvLyBaID0gMVxuICBpZiAodGhpcy56T25lKSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0zLmh0bWxcbiAgICAvLyAgICAgI2RvdWJsaW5nLW1kYmwtMjAwNy1ibFxuICAgIC8vIDFNICsgNVMgKyAxNUFcblxuICAgIC8vIFhYID0gWDFeMlxuICAgIHZhciB4eCA9IHRoaXMueC5yZWRTcXIoKTtcbiAgICAvLyBZWSA9IFkxXjJcbiAgICB2YXIgeXkgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gWVlZWSA9IFlZXjJcbiAgICB2YXIgeXl5eSA9IHl5LnJlZFNxcigpO1xuICAgIC8vIFMgPSAyICogKChYMSArIFlZKV4yIC0gWFggLSBZWVlZKVxuICAgIHZhciBzID0gdGhpcy54LnJlZEFkZCh5eSkucmVkU3FyKCkucmVkSVN1Yih4eCkucmVkSVN1Yih5eXl5KTtcbiAgICBzID0gcy5yZWRJQWRkKHMpO1xuICAgIC8vIE0gPSAzICogWFggKyBhXG4gICAgdmFyIG0gPSB4eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpLnJlZElBZGQodGhpcy5jdXJ2ZS5hKTtcbiAgICAvLyBUID0gTV4yIC0gMiAqIFNcbiAgICB2YXIgdCA9IG0ucmVkU3FyKCkucmVkSVN1YihzKS5yZWRJU3ViKHMpO1xuICAgIC8vIFgzID0gVFxuICAgIG54ID0gdDtcbiAgICAvLyBZMyA9IE0gKiAoUyAtIFQpIC0gOCAqIFlZWVlcbiAgICB2YXIgeXl5eTggPSB5eXl5LnJlZElBZGQoeXl5eSk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIG55ID0gbS5yZWRNdWwocy5yZWRJU3ViKHQpKS5yZWRJU3ViKHl5eXk4KTtcbiAgICAvLyBaMyA9IDIgKiBZMVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICB9IGVsc2Uge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMy5odG1sI2RvdWJsaW5nLWRibC0yMDAxLWJcbiAgICAvLyAzTSArIDVTXG5cbiAgICAvLyBkZWx0YSA9IFoxXjJcbiAgICB2YXIgZGVsdGEgPSB0aGlzLnoucmVkU3FyKCk7XG4gICAgLy8gZ2FtbWEgPSBZMV4yXG4gICAgdmFyIGdhbW1hID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIGJldGEgPSBYMSAqIGdhbW1hXG4gICAgdmFyIGJldGEgPSB0aGlzLngucmVkTXVsKGdhbW1hKTtcbiAgICAvLyBhbHBoYSA9IDMgKiAoWDEgLSBkZWx0YSkgKiAoWDEgKyBkZWx0YSlcbiAgICB2YXIgYWxwaGEgPSB0aGlzLngucmVkU3ViKGRlbHRhKS5yZWRNdWwodGhpcy54LnJlZEFkZChkZWx0YSkpO1xuICAgIGFscGhhID0gYWxwaGEucmVkQWRkKGFscGhhKS5yZWRJQWRkKGFscGhhKTtcbiAgICAvLyBYMyA9IGFscGhhXjIgLSA4ICogYmV0YVxuICAgIHZhciBiZXRhNCA9IGJldGEucmVkSUFkZChiZXRhKTtcbiAgICBiZXRhNCA9IGJldGE0LnJlZElBZGQoYmV0YTQpO1xuICAgIHZhciBiZXRhOCA9IGJldGE0LnJlZEFkZChiZXRhNCk7XG4gICAgbnggPSBhbHBoYS5yZWRTcXIoKS5yZWRJU3ViKGJldGE4KTtcbiAgICAvLyBaMyA9IChZMSArIFoxKV4yIC0gZ2FtbWEgLSBkZWx0YVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIoZ2FtbWEpLnJlZElTdWIoZGVsdGEpO1xuICAgIC8vIFkzID0gYWxwaGEgKiAoNCAqIGJldGEgLSBYMykgLSA4ICogZ2FtbWFeMlxuICAgIHZhciBnZ2FtbWE4ID0gZ2FtbWEucmVkU3FyKCk7XG4gICAgZ2dhbW1hOCA9IGdnYW1tYTgucmVkSUFkZChnZ2FtbWE4KTtcbiAgICBnZ2FtbWE4ID0gZ2dhbW1hOC5yZWRJQWRkKGdnYW1tYTgpO1xuICAgIGdnYW1tYTggPSBnZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7XG4gICAgbnkgPSBhbHBoYS5yZWRNdWwoYmV0YTQucmVkSVN1YihueCkpLnJlZElTdWIoZ2dhbW1hOCk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLl9kYmwgPSBmdW5jdGlvbiBfZGJsKCkge1xuICB2YXIgYSA9IHRoaXMuY3VydmUuYTtcblxuICAvLyA0TSArIDZTICsgMTBBXG4gIHZhciBqeCA9IHRoaXMueDtcbiAgdmFyIGp5ID0gdGhpcy55O1xuICB2YXIganogPSB0aGlzLno7XG4gIHZhciBqejQgPSBqei5yZWRTcXIoKS5yZWRTcXIoKTtcblxuICB2YXIgangyID0gangucmVkU3FyKCk7XG4gIHZhciBqeTIgPSBqeS5yZWRTcXIoKTtcblxuICB2YXIgYyA9IGp4Mi5yZWRBZGQoangyKS5yZWRJQWRkKGp4MikucmVkSUFkZChhLnJlZE11bChqejQpKTtcblxuICB2YXIganhkNCA9IGp4LnJlZEFkZChqeCk7XG4gIGp4ZDQgPSBqeGQ0LnJlZElBZGQoanhkNCk7XG4gIHZhciB0MSA9IGp4ZDQucmVkTXVsKGp5Mik7XG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0MS5yZWRBZGQodDEpKTtcbiAgdmFyIHQyID0gdDEucmVkSVN1YihueCk7XG5cbiAgdmFyIGp5ZDggPSBqeTIucmVkU3FyKCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIHZhciBueSA9IGMucmVkTXVsKHQyKS5yZWRJU3ViKGp5ZDgpO1xuICB2YXIgbnogPSBqeS5yZWRBZGQoankpLnJlZE11bChqeik7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS50cnBsID0gZnVuY3Rpb24gdHJwbCgpIHtcbiAgaWYgKCF0aGlzLmN1cnZlLnplcm9BKVxuICAgIHJldHVybiB0aGlzLmRibCgpLmFkZCh0aGlzKTtcblxuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTAuaHRtbCN0cmlwbGluZy10cGwtMjAwNy1ibFxuICAvLyA1TSArIDEwUyArIC4uLlxuXG4gIC8vIFhYID0gWDFeMlxuICB2YXIgeHggPSB0aGlzLngucmVkU3FyKCk7XG4gIC8vIFlZID0gWTFeMlxuICB2YXIgeXkgPSB0aGlzLnkucmVkU3FyKCk7XG4gIC8vIFpaID0gWjFeMlxuICB2YXIgenogPSB0aGlzLnoucmVkU3FyKCk7XG4gIC8vIFlZWVkgPSBZWV4yXG4gIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gIC8vIE0gPSAzICogWFggKyBhICogWloyOyBhID0gMFxuICB2YXIgbSA9IHh4LnJlZEFkZCh4eCkucmVkSUFkZCh4eCk7XG4gIC8vIE1NID0gTV4yXG4gIHZhciBtbSA9IG0ucmVkU3FyKCk7XG4gIC8vIEUgPSA2ICogKChYMSArIFlZKV4yIC0gWFggLSBZWVlZKSAtIE1NXG4gIHZhciBlID0gdGhpcy54LnJlZEFkZCh5eSkucmVkU3FyKCkucmVkSVN1Yih4eCkucmVkSVN1Yih5eXl5KTtcbiAgZSA9IGUucmVkSUFkZChlKTtcbiAgZSA9IGUucmVkQWRkKGUpLnJlZElBZGQoZSk7XG4gIGUgPSBlLnJlZElTdWIobW0pO1xuICAvLyBFRSA9IEVeMlxuICB2YXIgZWUgPSBlLnJlZFNxcigpO1xuICAvLyBUID0gMTYqWVlZWVxuICB2YXIgdCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgLy8gVSA9IChNICsgRSleMiAtIE1NIC0gRUUgLSBUXG4gIHZhciB1ID0gbS5yZWRJQWRkKGUpLnJlZFNxcigpLnJlZElTdWIobW0pLnJlZElTdWIoZWUpLnJlZElTdWIodCk7XG4gIC8vIFgzID0gNCAqIChYMSAqIEVFIC0gNCAqIFlZICogVSlcbiAgdmFyIHl5dTQgPSB5eS5yZWRNdWwodSk7XG4gIHl5dTQgPSB5eXU0LnJlZElBZGQoeXl1NCk7XG4gIHl5dTQgPSB5eXU0LnJlZElBZGQoeXl1NCk7XG4gIHZhciBueCA9IHRoaXMueC5yZWRNdWwoZWUpLnJlZElTdWIoeXl1NCk7XG4gIG54ID0gbngucmVkSUFkZChueCk7XG4gIG54ID0gbngucmVkSUFkZChueCk7XG4gIC8vIFkzID0gOCAqIFkxICogKFUgKiAoVCAtIFUpIC0gRSAqIEVFKVxuICB2YXIgbnkgPSB0aGlzLnkucmVkTXVsKHUucmVkTXVsKHQucmVkSVN1Yih1KSkucmVkSVN1YihlLnJlZE11bChlZSkpKTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgLy8gWjMgPSAoWjEgKyBFKV4yIC0gWlogLSBFRVxuICB2YXIgbnogPSB0aGlzLnoucmVkQWRkKGUpLnJlZFNxcigpLnJlZElTdWIoenopLnJlZElTdWIoZWUpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGssIGtiYXNlKSB7XG4gIGsgPSBuZXcgQk4oaywga2Jhc2UpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsIGspO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKHApIHtcbiAgaWYgKHAudHlwZSA9PT0gJ2FmZmluZScpXG4gICAgcmV0dXJuIHRoaXMuZXEocC50b0ooKSk7XG5cbiAgaWYgKHRoaXMgPT09IHApXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgLy8geDEgKiB6Ml4yID09IHgyICogejFeMlxuICB2YXIgejIgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciBwejIgPSBwLnoucmVkU3FyKCk7XG4gIGlmICh0aGlzLngucmVkTXVsKHB6MikucmVkSVN1YihwLngucmVkTXVsKHoyKSkuY21wbigwKSAhPT0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8geTEgKiB6Ml4zID09IHkyICogejFeM1xuICB2YXIgejMgPSB6Mi5yZWRNdWwodGhpcy56KTtcbiAgdmFyIHB6MyA9IHB6Mi5yZWRNdWwocC56KTtcbiAgcmV0dXJuIHRoaXMueS5yZWRNdWwocHozKS5yZWRJU3ViKHAueS5yZWRNdWwoejMpKS5jbXBuKDApID09PSAwO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5lcVhUb1AgPSBmdW5jdGlvbiBlcVhUb1AoeCkge1xuICB2YXIgenMgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciByeCA9IHgudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh6cyk7XG4gIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeGMgPSB4LmNsb25lKCk7XG4gIHZhciB0ID0gdGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh6cyk7XG4gIGZvciAoOzspIHtcbiAgICB4Yy5pYWRkKHRoaXMuY3VydmUubik7XG4gICAgaWYgKHhjLmNtcCh0aGlzLmN1cnZlLnApID49IDApXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICByeC5yZWRJQWRkKHQpO1xuICAgIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgSlBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIEpQb2ludCB4OiAnICsgdGhpcy54LnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHk6ICcgKyB0aGlzLnkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei50b1N0cmluZygxNiwgMikgKyAnPic7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy56LmNtcG4oMCkgPT09IDA7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmVzID0gZXhwb3J0cztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgY3VydmUgPSByZXF1aXJlKCcuL2N1cnZlJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIFByZXNldEN1cnZlKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ3Nob3J0JylcbiAgICB0aGlzLmN1cnZlID0gbmV3IGN1cnZlLnNob3J0KG9wdGlvbnMpO1xuICBlbHNlIGlmIChvcHRpb25zLnR5cGUgPT09ICdlZHdhcmRzJylcbiAgICB0aGlzLmN1cnZlID0gbmV3IGN1cnZlLmVkd2FyZHMob3B0aW9ucyk7XG4gIGVsc2VcbiAgICB0aGlzLmN1cnZlID0gbmV3IGN1cnZlLm1vbnQob3B0aW9ucyk7XG4gIHRoaXMuZyA9IHRoaXMuY3VydmUuZztcbiAgdGhpcy5uID0gdGhpcy5jdXJ2ZS5uO1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2g7XG5cbiAgYXNzZXJ0KHRoaXMuZy52YWxpZGF0ZSgpLCAnSW52YWxpZCBjdXJ2ZScpO1xuICBhc3NlcnQodGhpcy5nLm11bCh0aGlzLm4pLmlzSW5maW5pdHkoKSwgJ0ludmFsaWQgY3VydmUsIEcqTiAhPSBPJyk7XG59XG5jdXJ2ZXMuUHJlc2V0Q3VydmUgPSBQcmVzZXRDdXJ2ZTtcblxuZnVuY3Rpb24gZGVmaW5lQ3VydmUobmFtZSwgb3B0aW9ucykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3VydmVzLCBuYW1lLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjdXJ2ZSA9IG5ldyBQcmVzZXRDdXJ2ZShvcHRpb25zKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdXJ2ZXMsIG5hbWUsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogY3VydmUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjdXJ2ZTtcbiAgICB9LFxuICB9KTtcbn1cblxuZGVmaW5lQ3VydmUoJ3AxOTInLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAncDE5MicsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicsXG4gIGE6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICc2NDIxMDUxOSBlNTljODBlNyAwZmE3ZTlhYiA3MjI0MzA0OSBmZWI4ZGVlYyBjMTQ2YjliMScsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiA5OWRlZjgzNiAxNDZiYzliMSBiNGQyMjgzMScsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcxODhkYTgwZSBiMDMwOTBmNiA3Y2JmMjBlYiA0M2ExODgwMCBmNGZmMGFmZCA4MmZmMTAxMicsXG4gICAgJzA3MTkyYjk1IGZmYzhkYTc4IDYzMTAxMWVkIDZiMjRjZGQ1IDczZjk3N2ExIDFlNzk0ODExJyxcbiAgXSxcbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDIyNCcsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6ICdwMjI0JyxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyxcbiAgYTogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlJyxcbiAgYjogJ2I0MDUwYTg1IDBjMDRiM2FiIGY1NDEzMjU2IDUwNDRiMGI3IGQ3YmZkOGJhIDI3MGIzOTQzIDIzNTVmZmI0JyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmYxNmEyIGUwYjhmMDNlIDEzZGQyOTQ1IDVjNWMyYTNkJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJ2I3MGUwY2JkIDZiYjRiZjdmIDMyMTM5MGI5IDRhMDNjMWQzIDU2YzIxMTIyIDM0MzI4MGQ2IDExNWMxZDIxJyxcbiAgICAnYmQzNzYzODggYjVmNzIzZmIgNGMyMmRmZTYgY2Q0Mzc1YTAgNWEwNzQ3NjQgNDRkNTgxOTkgODUwMDdlMzQnLFxuICBdLFxufSk7XG5cbmRlZmluZUN1cnZlKCdwMjU2Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJ2ZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmJyxcbiAgYTogJ2ZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjJyxcbiAgYjogJzVhYzYzNWQ4IGFhM2E5M2U3IGIzZWJiZDU1IDc2OTg4NmJjIDY1MWQwNmIwIGNjNTNiMGY2IDNiY2UzYzNlIDI3ZDI2MDRiJyxcbiAgbjogJ2ZmZmZmZmZmIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGJjZTZmYWFkIGE3MTc5ZTg0IGYzYjljYWMyIGZjNjMyNTUxJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzZiMTdkMWYyIGUxMmM0MjQ3IGY4YmNlNmU1IDYzYTQ0MGYyIDc3MDM3ZDgxIDJkZWIzM2EwIGY0YTEzOTQ1IGQ4OThjMjk2JyxcbiAgICAnNGZlMzQyZTIgZmUxYTdmOWIgOGVlN2ViNGEgN2MwZjllMTYgMmJjZTMzNTcgNmIzMTVlY2UgY2JiNjQwNjggMzdiZjUxZjUnLFxuICBdLFxufSk7XG5cbmRlZmluZUN1cnZlKCdwMzg0Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmYycsXG4gIGI6ICdiMzMxMmZhNyBlMjNlZTdlNCA5ODhlMDU2YiBlM2Y4MmQxOSAxODFkOWM2ZSBmZTgxNDExMiAwMzE0MDg4ZiAnICtcbiAgICAgJzUwMTM4NzVhIGM2NTYzOThkIDhhMmVkMTlkIDJhODVjOGVkIGQzZWMyYWVmJyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGM3NjM0ZDgxICcgK1xuICAgICAnZjQzNzJkZGYgNTgxYTBkYjIgNDhiMGE3N2EgZWNlYzE5NmEgY2NjNTI5NzMnLFxuICBoYXNoOiBoYXNoLnNoYTM4NCxcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnYWE4N2NhMjIgYmU4YjA1MzcgOGViMWM3MWUgZjMyMGFkNzQgNmUxZDNiNjIgOGJhNzliOTggNTlmNzQxZTAgODI1NDJhMzggJyArXG4gICAgJzU1MDJmMjVkIGJmNTUyOTZjIDNhNTQ1ZTM4IDcyNzYwYWI3JyxcbiAgICAnMzYxN2RlNGEgOTYyNjJjNmYgNWQ5ZTk4YmYgOTI5MmRjMjkgZjhmNDFkYmQgMjg5YTE0N2MgZTlkYTMxMTMgYjVmMGI4YzAgJyArXG4gICAgJzBhNjBiMWNlIDFkN2U4MTlkIDdhNDMxZDdjIDkwZWEwZTVmJyxcbiAgXSxcbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDUyMScsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6IG51bGwsXG4gIHA6ICcwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYnLFxuICBhOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjJyxcbiAgYjogJzAwMDAwMDUxIDk1M2ViOTYxIDhlMWM5YTFmIDkyOWEyMWEwIGI2ODU0MGVlIGEyZGE3MjViICcgK1xuICAgICAnOTliMzE1ZjMgYjhiNDg5OTEgOGVmMTA5ZTEgNTYxOTM5NTEgZWM3ZTkzN2IgMTY1MmMwYmQgJyArXG4gICAgICczYmIxYmYwNyAzNTczZGY4OCAzZDJjMzRmMSBlZjQ1MWZkNCA2YjUwM2YwMCcsXG4gIG46ICcwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZhIDUxODY4NzgzIGJmMmY5NjZiIDdmY2MwMTQ4ICcgK1xuICAgICAnZjcwOWE1ZDAgM2JiNWM5YjggODk5YzQ3YWUgYmI2ZmI3MWUgOTEzODY0MDknLFxuICBoYXNoOiBoYXNoLnNoYTUxMixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnMDAwMDAwYzYgODU4ZTA2YjcgMDQwNGU5Y2QgOWUzZWNiNjYgMjM5NWI0NDIgOWM2NDgxMzkgJyArXG4gICAgJzA1M2ZiNTIxIGY4MjhhZjYwIDZiNGQzZGJhIGExNGI1ZTc3IGVmZTc1OTI4IGZlMWRjMTI3ICcgK1xuICAgICdhMmZmYThkZSAzMzQ4YjNjMSA4NTZhNDI5YiBmOTdlN2UzMSBjMmU1YmQ2NicsXG4gICAgJzAwMDAwMTE4IDM5Mjk2YTc4IDlhM2JjMDA0IDVjOGE1ZmI0IDJjN2QxYmQ5IDk4ZjU0NDQ5ICcgK1xuICAgICc1NzliNDQ2OCAxN2FmYmQxNyAyNzNlNjYyYyA5N2VlNzI5OSA1ZWY0MjY0MCBjNTUwYjkwMSAnICtcbiAgICAnM2ZhZDA3NjEgMzUzYzcwODYgYTI3MmMyNDAgODhiZTk0NzYgOWZkMTY2NTAnLFxuICBdLFxufSk7XG5cbmRlZmluZUN1cnZlKCdjdXJ2ZTI1NTE5Jywge1xuICB0eXBlOiAnbW9udCcsXG4gIHByaW1lOiAncDI1NTE5JyxcbiAgcDogJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnLFxuICBhOiAnNzZkMDYnLFxuICBiOiAnMScsXG4gIG46ICcxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3OWNkNiA1ODEyNjMxYTVjZjVkM2VkJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzknLFxuICBdLFxufSk7XG5cbmRlZmluZUN1cnZlKCdlZDI1NTE5Jywge1xuICB0eXBlOiAnZWR3YXJkcycsXG4gIHByaW1lOiAncDI1NTE5JyxcbiAgcDogJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnLFxuICBhOiAnLTEnLFxuICBjOiAnMScsXG4gIC8vIC0xMjE2NjUgKiAoMTIxNjY2XigtMSkpIChtb2QgUClcbiAgZDogJzUyMDM2Y2VlMmI2ZmZlNzMgOGNjNzQwNzk3Nzc5ZTg5OCAwMDcwMGE0ZDQxNDFkOGFiIDc1ZWI0ZGNhMTM1OTc4YTMnLFxuICBuOiAnMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcyMTY5MzZkM2NkNmU1M2ZlYzBhNGUyMzFmZGQ2ZGM1YzY5MmNjNzYwOTUyNWE3YjJjOTU2MmQ2MDhmMjVkNTFhJyxcblxuICAgIC8vIDQvNVxuICAgICc2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjU4JyxcbiAgXSxcbn0pO1xuXG52YXIgcHJlO1xudHJ5IHtcbiAgcHJlID0gcmVxdWlyZSgnLi9wcmVjb21wdXRlZC9zZWNwMjU2azEnKTtcbn0gY2F0Y2ggKGUpIHtcbiAgcHJlID0gdW5kZWZpbmVkO1xufVxuXG5kZWZpbmVDdXJ2ZSgnc2VjcDI1NmsxJywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogJ2syNTYnLFxuICBwOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYnLFxuICBhOiAnMCcsXG4gIGI6ICc3JyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGJhYWVkY2U2IGFmNDhhMDNiIGJmZDI1ZThjIGQwMzY0MTQxJyxcbiAgaDogJzEnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcblxuICAvLyBQcmVjb21wdXRlZCBlbmRvbW9ycGhpc21cbiAgYmV0YTogJzdhZTk2YTJiNjU3YzA3MTA2ZTY0NDc5ZWFjMzQzNGU5OWNmMDQ5NzUxMmY1ODk5NWMxMzk2YzI4NzE5NTAxZWUnLFxuICBsYW1iZGE6ICc1MzYzYWQ0Y2MwNWMzMGUwYTUyNjFjMDI4ODEyNjQ1YTEyMmUyMmVhMjA4MTY2NzhkZjAyOTY3YzFiMjNiZDcyJyxcbiAgYmFzaXM6IFtcbiAgICB7XG4gICAgICBhOiAnMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUnLFxuICAgICAgYjogJy1lNDQzN2VkNjAxMGU4ODI4NmY1NDdmYTkwYWJmZTRjMycsXG4gICAgfSxcbiAgICB7XG4gICAgICBhOiAnMTE0Y2E1MGY3YThlMmYzZjY1N2MxMTA4ZDlkNDRjZmQ4JyxcbiAgICAgIGI6ICczMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNScsXG4gICAgfSxcbiAgXSxcblxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICc3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4JyxcbiAgICAnNDgzYWRhNzcyNmEzYzQ2NTVkYTRmYmZjMGUxMTA4YThmZDE3YjQ0OGE2ODU1NDE5OWM0N2QwOGZmYjEwZDRiOCcsXG4gICAgcHJlLFxuICBdLFxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgSG1hY0RSQkcgPSByZXF1aXJlKCdobWFjLWRyYmcnKTtcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi4vY3VydmVzJyk7XG52YXIgcmFuZCA9IHJlcXVpcmUoJ2Jyb3JhbmQnKTtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbnZhciBLZXlQYWlyID0gcmVxdWlyZSgnLi9rZXknKTtcbnZhciBTaWduYXR1cmUgPSByZXF1aXJlKCcuL3NpZ25hdHVyZScpO1xuXG5mdW5jdGlvbiBFQyhvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFQykpXG4gICAgcmV0dXJuIG5ldyBFQyhvcHRpb25zKTtcblxuICAvLyBTaG9ydGN1dCBgZWxsaXB0aWMuZWMoY3VydmUtbmFtZSlgXG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICBhc3NlcnQoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGN1cnZlcywgb3B0aW9ucyksXG4gICAgICAnVW5rbm93biBjdXJ2ZSAnICsgb3B0aW9ucyk7XG5cbiAgICBvcHRpb25zID0gY3VydmVzW29wdGlvbnNdO1xuICB9XG5cbiAgLy8gU2hvcnRjdXQgZm9yIGBlbGxpcHRpYy5lYyhlbGxpcHRpYy5jdXJ2ZXMuY3VydmVOYW1lKWBcbiAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBjdXJ2ZXMuUHJlc2V0Q3VydmUpXG4gICAgb3B0aW9ucyA9IHsgY3VydmU6IG9wdGlvbnMgfTtcblxuICB0aGlzLmN1cnZlID0gb3B0aW9ucy5jdXJ2ZS5jdXJ2ZTtcbiAgdGhpcy5uID0gdGhpcy5jdXJ2ZS5uO1xuICB0aGlzLm5oID0gdGhpcy5uLnVzaHJuKDEpO1xuICB0aGlzLmcgPSB0aGlzLmN1cnZlLmc7XG5cbiAgLy8gUG9pbnQgb24gY3VydmVcbiAgdGhpcy5nID0gb3B0aW9ucy5jdXJ2ZS5nO1xuICB0aGlzLmcucHJlY29tcHV0ZShvcHRpb25zLmN1cnZlLm4uYml0TGVuZ3RoKCkgKyAxKTtcblxuICAvLyBIYXNoIGZvciBmdW5jdGlvbiBmb3IgRFJCR1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2ggfHwgb3B0aW9ucy5jdXJ2ZS5oYXNoO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFQztcblxuRUMucHJvdG90eXBlLmtleVBhaXIgPSBmdW5jdGlvbiBrZXlQYWlyKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKHRoaXMsIG9wdGlvbnMpO1xufTtcblxuRUMucHJvdG90eXBlLmtleUZyb21Qcml2YXRlID0gZnVuY3Rpb24ga2V5RnJvbVByaXZhdGUocHJpdiwgZW5jKSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21Qcml2YXRlKHRoaXMsIHByaXYsIGVuYyk7XG59O1xuXG5FQy5wcm90b3R5cGUua2V5RnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGtleUZyb21QdWJsaWMocHViLCBlbmMpIHtcbiAgcmV0dXJuIEtleVBhaXIuZnJvbVB1YmxpYyh0aGlzLCBwdWIsIGVuYyk7XG59O1xuXG5FQy5wcm90b3R5cGUuZ2VuS2V5UGFpciA9IGZ1bmN0aW9uIGdlbktleVBhaXIob3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpXG4gICAgb3B0aW9ucyA9IHt9O1xuXG4gIC8vIEluc3RhbnRpYXRlIEhtYWNfRFJCR1xuICB2YXIgZHJiZyA9IG5ldyBIbWFjRFJCRyh7XG4gICAgaGFzaDogdGhpcy5oYXNoLFxuICAgIHBlcnM6IG9wdGlvbnMucGVycyxcbiAgICBwZXJzRW5jOiBvcHRpb25zLnBlcnNFbmMgfHwgJ3V0ZjgnLFxuICAgIGVudHJvcHk6IG9wdGlvbnMuZW50cm9weSB8fCByYW5kKHRoaXMuaGFzaC5obWFjU3RyZW5ndGgpLFxuICAgIGVudHJvcHlFbmM6IG9wdGlvbnMuZW50cm9weSAmJiBvcHRpb25zLmVudHJvcHlFbmMgfHwgJ3V0ZjgnLFxuICAgIG5vbmNlOiB0aGlzLm4udG9BcnJheSgpLFxuICB9KTtcblxuICB2YXIgYnl0ZXMgPSB0aGlzLm4uYnl0ZUxlbmd0aCgpO1xuICB2YXIgbnMyID0gdGhpcy5uLnN1YihuZXcgQk4oMikpO1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIHByaXYgPSBuZXcgQk4oZHJiZy5nZW5lcmF0ZShieXRlcykpO1xuICAgIGlmIChwcml2LmNtcChuczIpID4gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgcHJpdi5pYWRkbigxKTtcbiAgICByZXR1cm4gdGhpcy5rZXlGcm9tUHJpdmF0ZShwcml2KTtcbiAgfVxufTtcblxuRUMucHJvdG90eXBlLl90cnVuY2F0ZVRvTiA9IGZ1bmN0aW9uIF90cnVuY2F0ZVRvTihtc2csIHRydW5jT25seSkge1xuICB2YXIgZGVsdGEgPSBtc2cuYnl0ZUxlbmd0aCgpICogOCAtIHRoaXMubi5iaXRMZW5ndGgoKTtcbiAgaWYgKGRlbHRhID4gMClcbiAgICBtc2cgPSBtc2cudXNocm4oZGVsdGEpO1xuICBpZiAoIXRydW5jT25seSAmJiBtc2cuY21wKHRoaXMubikgPj0gMClcbiAgICByZXR1cm4gbXNnLnN1Yih0aGlzLm4pO1xuICBlbHNlXG4gICAgcmV0dXJuIG1zZztcbn07XG5cbkVDLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbihtc2csIGtleSwgZW5jLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgZW5jID09PSAnb2JqZWN0Jykge1xuICAgIG9wdGlvbnMgPSBlbmM7XG4gICAgZW5jID0gbnVsbDtcbiAgfVxuICBpZiAoIW9wdGlvbnMpXG4gICAgb3B0aW9ucyA9IHt9O1xuXG4gIGtleSA9IHRoaXMua2V5RnJvbVByaXZhdGUoa2V5LCBlbmMpO1xuICBtc2cgPSB0aGlzLl90cnVuY2F0ZVRvTihuZXcgQk4obXNnLCAxNikpO1xuXG4gIC8vIFplcm8tZXh0ZW5kIGtleSB0byBwcm92aWRlIGVub3VnaCBlbnRyb3B5XG4gIHZhciBieXRlcyA9IHRoaXMubi5ieXRlTGVuZ3RoKCk7XG4gIHZhciBia2V5ID0ga2V5LmdldFByaXZhdGUoKS50b0FycmF5KCdiZScsIGJ5dGVzKTtcblxuICAvLyBaZXJvLWV4dGVuZCBub25jZSB0byBoYXZlIHRoZSBzYW1lIGJ5dGUgc2l6ZSBhcyBOXG4gIHZhciBub25jZSA9IG1zZy50b0FycmF5KCdiZScsIGJ5dGVzKTtcblxuICAvLyBJbnN0YW50aWF0ZSBIbWFjX0RSQkdcbiAgdmFyIGRyYmcgPSBuZXcgSG1hY0RSQkcoe1xuICAgIGhhc2g6IHRoaXMuaGFzaCxcbiAgICBlbnRyb3B5OiBia2V5LFxuICAgIG5vbmNlOiBub25jZSxcbiAgICBwZXJzOiBvcHRpb25zLnBlcnMsXG4gICAgcGVyc0VuYzogb3B0aW9ucy5wZXJzRW5jIHx8ICd1dGY4JyxcbiAgfSk7XG5cbiAgLy8gTnVtYmVyIG9mIGJ5dGVzIHRvIGdlbmVyYXRlXG4gIHZhciBuczEgPSB0aGlzLm4uc3ViKG5ldyBCTigxKSk7XG5cbiAgZm9yICh2YXIgaXRlciA9IDA7IDsgaXRlcisrKSB7XG4gICAgdmFyIGsgPSBvcHRpb25zLmsgP1xuICAgICAgb3B0aW9ucy5rKGl0ZXIpIDpcbiAgICAgIG5ldyBCTihkcmJnLmdlbmVyYXRlKHRoaXMubi5ieXRlTGVuZ3RoKCkpKTtcbiAgICBrID0gdGhpcy5fdHJ1bmNhdGVUb04oaywgdHJ1ZSk7XG4gICAgaWYgKGsuY21wbigxKSA8PSAwIHx8IGsuY21wKG5zMSkgPj0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIGtwID0gdGhpcy5nLm11bChrKTtcbiAgICBpZiAoa3AuaXNJbmZpbml0eSgpKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIga3BYID0ga3AuZ2V0WCgpO1xuICAgIHZhciByID0ga3BYLnVtb2QodGhpcy5uKTtcbiAgICBpZiAoci5jbXBuKDApID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIgcyA9IGsuaW52bSh0aGlzLm4pLm11bChyLm11bChrZXkuZ2V0UHJpdmF0ZSgpKS5pYWRkKG1zZykpO1xuICAgIHMgPSBzLnVtb2QodGhpcy5uKTtcbiAgICBpZiAocy5jbXBuKDApID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIgcmVjb3ZlcnlQYXJhbSA9IChrcC5nZXRZKCkuaXNPZGQoKSA/IDEgOiAwKSB8XG4gICAgICAgICAgICAgICAgICAgICAgICAoa3BYLmNtcChyKSAhPT0gMCA/IDIgOiAwKTtcblxuICAgIC8vIFVzZSBjb21wbGVtZW50IG9mIGBzYCwgaWYgaXQgaXMgPiBgbiAvIDJgXG4gICAgaWYgKG9wdGlvbnMuY2Fub25pY2FsICYmIHMuY21wKHRoaXMubmgpID4gMCkge1xuICAgICAgcyA9IHRoaXMubi5zdWIocyk7XG4gICAgICByZWNvdmVyeVBhcmFtIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTaWduYXR1cmUoeyByOiByLCBzOiBzLCByZWNvdmVyeVBhcmFtOiByZWNvdmVyeVBhcmFtIH0pO1xuICB9XG59O1xuXG5FQy5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1zZywgc2lnbmF0dXJlLCBrZXksIGVuYykge1xuICBtc2cgPSB0aGlzLl90cnVuY2F0ZVRvTihuZXcgQk4obXNnLCAxNikpO1xuICBrZXkgPSB0aGlzLmtleUZyb21QdWJsaWMoa2V5LCBlbmMpO1xuICBzaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlKHNpZ25hdHVyZSwgJ2hleCcpO1xuXG4gIC8vIFBlcmZvcm0gcHJpbWl0aXZlIHZhbHVlcyB2YWxpZGF0aW9uXG4gIHZhciByID0gc2lnbmF0dXJlLnI7XG4gIHZhciBzID0gc2lnbmF0dXJlLnM7XG4gIGlmIChyLmNtcG4oMSkgPCAwIHx8IHIuY21wKHRoaXMubikgPj0gMClcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmIChzLmNtcG4oMSkgPCAwIHx8IHMuY21wKHRoaXMubikgPj0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gVmFsaWRhdGUgc2lnbmF0dXJlXG4gIHZhciBzaW52ID0gcy5pbnZtKHRoaXMubik7XG4gIHZhciB1MSA9IHNpbnYubXVsKG1zZykudW1vZCh0aGlzLm4pO1xuICB2YXIgdTIgPSBzaW52Lm11bChyKS51bW9kKHRoaXMubik7XG4gIHZhciBwO1xuXG4gIGlmICghdGhpcy5jdXJ2ZS5fbWF4d2VsbFRyaWNrKSB7XG4gICAgcCA9IHRoaXMuZy5tdWxBZGQodTEsIGtleS5nZXRQdWJsaWMoKSwgdTIpO1xuICAgIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiBwLmdldFgoKS51bW9kKHRoaXMubikuY21wKHIpID09PSAwO1xuICB9XG5cbiAgLy8gTk9URTogR3JlZyBNYXh3ZWxsJ3MgdHJpY2ssIGluc3BpcmVkIGJ5OlxuICAvLyBodHRwczovL2dpdC5pby92YWQzS1xuXG4gIHAgPSB0aGlzLmcuam11bEFkZCh1MSwga2V5LmdldFB1YmxpYygpLCB1Mik7XG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gQ29tcGFyZSBgcC54YCBvZiBKYWNvYmlhbiBwb2ludCB3aXRoIGByYCxcbiAgLy8gdGhpcyB3aWxsIGRvIGBwLnggPT0gciAqIHAuel4yYCBpbnN0ZWFkIG9mIG11bHRpcGx5aW5nIGBwLnhgIGJ5IHRoZVxuICAvLyBpbnZlcnNlIG9mIGBwLnpeMmBcbiAgcmV0dXJuIHAuZXFYVG9QKHIpO1xufTtcblxuRUMucHJvdG90eXBlLnJlY292ZXJQdWJLZXkgPSBmdW5jdGlvbihtc2csIHNpZ25hdHVyZSwgaiwgZW5jKSB7XG4gIGFzc2VydCgoMyAmIGopID09PSBqLCAnVGhlIHJlY292ZXJ5IHBhcmFtIGlzIG1vcmUgdGhhbiB0d28gYml0cycpO1xuICBzaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlKHNpZ25hdHVyZSwgZW5jKTtcblxuICB2YXIgbiA9IHRoaXMubjtcbiAgdmFyIGUgPSBuZXcgQk4obXNnKTtcbiAgdmFyIHIgPSBzaWduYXR1cmUucjtcbiAgdmFyIHMgPSBzaWduYXR1cmUucztcblxuICAvLyBBIHNldCBMU0Igc2lnbmlmaWVzIHRoYXQgdGhlIHktY29vcmRpbmF0ZSBpcyBvZGRcbiAgdmFyIGlzWU9kZCA9IGogJiAxO1xuICB2YXIgaXNTZWNvbmRLZXkgPSBqID4+IDE7XG4gIGlmIChyLmNtcCh0aGlzLmN1cnZlLnAudW1vZCh0aGlzLmN1cnZlLm4pKSA+PSAwICYmIGlzU2Vjb25kS2V5KVxuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgc2VuY29uZCBrZXkgY2FuZGluYXRlJyk7XG5cbiAgLy8gMS4xLiBMZXQgeCA9IHIgKyBqbi5cbiAgaWYgKGlzU2Vjb25kS2V5KVxuICAgIHIgPSB0aGlzLmN1cnZlLnBvaW50RnJvbVgoci5hZGQodGhpcy5jdXJ2ZS5uKSwgaXNZT2RkKTtcbiAgZWxzZVxuICAgIHIgPSB0aGlzLmN1cnZlLnBvaW50RnJvbVgociwgaXNZT2RkKTtcblxuICB2YXIgckludiA9IHNpZ25hdHVyZS5yLmludm0obik7XG4gIHZhciBzMSA9IG4uc3ViKGUpLm11bChySW52KS51bW9kKG4pO1xuICB2YXIgczIgPSBzLm11bChySW52KS51bW9kKG4pO1xuXG4gIC8vIDEuNi4xIENvbXB1dGUgUSA9IHJeLTEgKHNSIC0gIGVHKVxuICAvLyAgICAgICAgICAgICAgIFEgPSByXi0xIChzUiArIC1lRylcbiAgcmV0dXJuIHRoaXMuZy5tdWxBZGQoczEsIHIsIHMyKTtcbn07XG5cbkVDLnByb3RvdHlwZS5nZXRLZXlSZWNvdmVyeVBhcmFtID0gZnVuY3Rpb24oZSwgc2lnbmF0dXJlLCBRLCBlbmMpIHtcbiAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShzaWduYXR1cmUsIGVuYyk7XG4gIGlmIChzaWduYXR1cmUucmVjb3ZlcnlQYXJhbSAhPT0gbnVsbClcbiAgICByZXR1cm4gc2lnbmF0dXJlLnJlY292ZXJ5UGFyYW07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgUXByaW1lO1xuICAgIHRyeSB7XG4gICAgICBRcHJpbWUgPSB0aGlzLnJlY292ZXJQdWJLZXkoZSwgc2lnbmF0dXJlLCBpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoUXByaW1lLmVxKFEpKVxuICAgICAgcmV0dXJuIGk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCB2YWxpZCByZWNvdmVyeSBmYWN0b3InKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gS2V5UGFpcihlYywgb3B0aW9ucykge1xuICB0aGlzLmVjID0gZWM7XG4gIHRoaXMucHJpdiA9IG51bGw7XG4gIHRoaXMucHViID0gbnVsbDtcblxuICAvLyBLZXlQYWlyKGVjLCB7IHByaXY6IC4uLiwgcHViOiAuLi4gfSlcbiAgaWYgKG9wdGlvbnMucHJpdilcbiAgICB0aGlzLl9pbXBvcnRQcml2YXRlKG9wdGlvbnMucHJpdiwgb3B0aW9ucy5wcml2RW5jKTtcbiAgaWYgKG9wdGlvbnMucHViKVxuICAgIHRoaXMuX2ltcG9ydFB1YmxpYyhvcHRpb25zLnB1Yiwgb3B0aW9ucy5wdWJFbmMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBLZXlQYWlyO1xuXG5LZXlQYWlyLmZyb21QdWJsaWMgPSBmdW5jdGlvbiBmcm9tUHVibGljKGVjLCBwdWIsIGVuYykge1xuICBpZiAocHViIGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHViO1xuXG4gIHJldHVybiBuZXcgS2V5UGFpcihlYywge1xuICAgIHB1YjogcHViLFxuICAgIHB1YkVuYzogZW5jLFxuICB9KTtcbn07XG5cbktleVBhaXIuZnJvbVByaXZhdGUgPSBmdW5jdGlvbiBmcm9tUHJpdmF0ZShlYywgcHJpdiwgZW5jKSB7XG4gIGlmIChwcml2IGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHJpdjtcblxuICByZXR1cm4gbmV3IEtleVBhaXIoZWMsIHtcbiAgICBwcml2OiBwcml2LFxuICAgIHByaXZFbmM6IGVuYyxcbiAgfSk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xuICB2YXIgcHViID0gdGhpcy5nZXRQdWJsaWMoKTtcblxuICBpZiAocHViLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4geyByZXN1bHQ6IGZhbHNlLCByZWFzb246ICdJbnZhbGlkIHB1YmxpYyBrZXknIH07XG4gIGlmICghcHViLnZhbGlkYXRlKCkpXG4gICAgcmV0dXJuIHsgcmVzdWx0OiBmYWxzZSwgcmVhc29uOiAnUHVibGljIGtleSBpcyBub3QgYSBwb2ludCcgfTtcbiAgaWYgKCFwdWIubXVsKHRoaXMuZWMuY3VydmUubikuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB7IHJlc3VsdDogZmFsc2UsIHJlYXNvbjogJ1B1YmxpYyBrZXkgKiBOICE9IE8nIH07XG5cbiAgcmV0dXJuIHsgcmVzdWx0OiB0cnVlLCByZWFzb246IG51bGwgfTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFB1YmxpYyA9IGZ1bmN0aW9uIGdldFB1YmxpYyhjb21wYWN0LCBlbmMpIHtcbiAgLy8gY29tcGFjdCBpcyBvcHRpb25hbCBhcmd1bWVudFxuICBpZiAodHlwZW9mIGNvbXBhY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jID0gY29tcGFjdDtcbiAgICBjb21wYWN0ID0gbnVsbDtcbiAgfVxuXG4gIGlmICghdGhpcy5wdWIpXG4gICAgdGhpcy5wdWIgPSB0aGlzLmVjLmcubXVsKHRoaXMucHJpdik7XG5cbiAgaWYgKCFlbmMpXG4gICAgcmV0dXJuIHRoaXMucHViO1xuXG4gIHJldHVybiB0aGlzLnB1Yi5lbmNvZGUoZW5jLCBjb21wYWN0KTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFByaXZhdGUgPSBmdW5jdGlvbiBnZXRQcml2YXRlKGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdGhpcy5wcml2LnRvU3RyaW5nKDE2LCAyKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLnByaXY7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5faW1wb3J0UHJpdmF0ZSA9IGZ1bmN0aW9uIF9pbXBvcnRQcml2YXRlKGtleSwgZW5jKSB7XG4gIHRoaXMucHJpdiA9IG5ldyBCTihrZXksIGVuYyB8fCAxNik7XG5cbiAgLy8gRW5zdXJlIHRoYXQgdGhlIHByaXYgd29uJ3QgYmUgYmlnZ2VyIHRoYW4gbiwgb3RoZXJ3aXNlIHdlIG1heSBmYWlsXG4gIC8vIGluIGZpeGVkIG11bHRpcGxpY2F0aW9uIG1ldGhvZFxuICB0aGlzLnByaXYgPSB0aGlzLnByaXYudW1vZCh0aGlzLmVjLmN1cnZlLm4pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuX2ltcG9ydFB1YmxpYyA9IGZ1bmN0aW9uIF9pbXBvcnRQdWJsaWMoa2V5LCBlbmMpIHtcbiAgaWYgKGtleS54IHx8IGtleS55KSB7XG4gICAgLy8gTW9udGdvbWVyeSBwb2ludHMgb25seSBoYXZlIGFuIGB4YCBjb29yZGluYXRlLlxuICAgIC8vIFdlaWVyc3RyYXNzL0Vkd2FyZHMgcG9pbnRzIG9uIHRoZSBvdGhlciBoYW5kIGhhdmUgYm90aCBgeGAgYW5kXG4gICAgLy8gYHlgIGNvb3JkaW5hdGVzLlxuICAgIGlmICh0aGlzLmVjLmN1cnZlLnR5cGUgPT09ICdtb250Jykge1xuICAgICAgYXNzZXJ0KGtleS54LCAnTmVlZCB4IGNvb3JkaW5hdGUnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZWMuY3VydmUudHlwZSA9PT0gJ3Nob3J0JyB8fFxuICAgICAgICAgICAgICAgdGhpcy5lYy5jdXJ2ZS50eXBlID09PSAnZWR3YXJkcycpIHtcbiAgICAgIGFzc2VydChrZXkueCAmJiBrZXkueSwgJ05lZWQgYm90aCB4IGFuZCB5IGNvb3JkaW5hdGUnKTtcbiAgICB9XG4gICAgdGhpcy5wdWIgPSB0aGlzLmVjLmN1cnZlLnBvaW50KGtleS54LCBrZXkueSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRoaXMucHViID0gdGhpcy5lYy5jdXJ2ZS5kZWNvZGVQb2ludChrZXksIGVuYyk7XG59O1xuXG4vLyBFQ0RIXG5LZXlQYWlyLnByb3RvdHlwZS5kZXJpdmUgPSBmdW5jdGlvbiBkZXJpdmUocHViKSB7XG4gIGlmKCFwdWIudmFsaWRhdGUoKSkge1xuICAgIGFzc2VydChwdWIudmFsaWRhdGUoKSwgJ3B1YmxpYyBwb2ludCBub3QgdmFsaWRhdGVkJyk7XG4gIH1cbiAgcmV0dXJuIHB1Yi5tdWwodGhpcy5wcml2KS5nZXRYKCk7XG59O1xuXG4vLyBFQ0RTQVxuS2V5UGFpci5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obXNnLCBlbmMsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHRoaXMuZWMuc2lnbihtc2csIHRoaXMsIGVuYywgb3B0aW9ucyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobXNnLCBzaWduYXR1cmUpIHtcbiAgcmV0dXJuIHRoaXMuZWMudmVyaWZ5KG1zZywgc2lnbmF0dXJlLCB0aGlzKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICByZXR1cm4gJzxLZXkgcHJpdjogJyArICh0aGlzLnByaXYgJiYgdGhpcy5wcml2LnRvU3RyaW5nKDE2LCAyKSkgK1xuICAgICAgICAgJyBwdWI6ICcgKyAodGhpcy5wdWIgJiYgdGhpcy5wdWIuaW5zcGVjdCgpKSArICcgPic7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gU2lnbmF0dXJlKG9wdGlvbnMsIGVuYykge1xuICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIFNpZ25hdHVyZSlcbiAgICByZXR1cm4gb3B0aW9ucztcblxuICBpZiAodGhpcy5faW1wb3J0REVSKG9wdGlvbnMsIGVuYykpXG4gICAgcmV0dXJuO1xuXG4gIGFzc2VydChvcHRpb25zLnIgJiYgb3B0aW9ucy5zLCAnU2lnbmF0dXJlIHdpdGhvdXQgciBvciBzJyk7XG4gIHRoaXMuciA9IG5ldyBCTihvcHRpb25zLnIsIDE2KTtcbiAgdGhpcy5zID0gbmV3IEJOKG9wdGlvbnMucywgMTYpO1xuICBpZiAob3B0aW9ucy5yZWNvdmVyeVBhcmFtID09PSB1bmRlZmluZWQpXG4gICAgdGhpcy5yZWNvdmVyeVBhcmFtID0gbnVsbDtcbiAgZWxzZVxuICAgIHRoaXMucmVjb3ZlcnlQYXJhbSA9IG9wdGlvbnMucmVjb3ZlcnlQYXJhbTtcbn1cbm1vZHVsZS5leHBvcnRzID0gU2lnbmF0dXJlO1xuXG5mdW5jdGlvbiBQb3NpdGlvbigpIHtcbiAgdGhpcy5wbGFjZSA9IDA7XG59XG5cbmZ1bmN0aW9uIGdldExlbmd0aChidWYsIHApIHtcbiAgdmFyIGluaXRpYWwgPSBidWZbcC5wbGFjZSsrXTtcbiAgaWYgKCEoaW5pdGlhbCAmIDB4ODApKSB7XG4gICAgcmV0dXJuIGluaXRpYWw7XG4gIH1cbiAgdmFyIG9jdGV0TGVuID0gaW5pdGlhbCAmIDB4ZjtcblxuICAvLyBJbmRlZmluaXRlIGxlbmd0aCBvciBvdmVyZmxvd1xuICBpZiAob2N0ZXRMZW4gPT09IDAgfHwgb2N0ZXRMZW4gPiA0KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIHZhbCA9IDA7XG4gIGZvciAodmFyIGkgPSAwLCBvZmYgPSBwLnBsYWNlOyBpIDwgb2N0ZXRMZW47IGkrKywgb2ZmKyspIHtcbiAgICB2YWwgPDw9IDg7XG4gICAgdmFsIHw9IGJ1ZltvZmZdO1xuICAgIHZhbCA+Pj49IDA7XG4gIH1cblxuICAvLyBMZWFkaW5nIHplcm9lc1xuICBpZiAodmFsIDw9IDB4N2YpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwLnBsYWNlID0gb2ZmO1xuICByZXR1cm4gdmFsO1xufVxuXG5mdW5jdGlvbiBybVBhZGRpbmcoYnVmKSB7XG4gIHZhciBpID0gMDtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGggLSAxO1xuICB3aGlsZSAoIWJ1ZltpXSAmJiAhKGJ1ZltpICsgMV0gJiAweDgwKSAmJiBpIDwgbGVuKSB7XG4gICAgaSsrO1xuICB9XG4gIGlmIChpID09PSAwKSB7XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuICByZXR1cm4gYnVmLnNsaWNlKGkpO1xufVxuXG5TaWduYXR1cmUucHJvdG90eXBlLl9pbXBvcnRERVIgPSBmdW5jdGlvbiBfaW1wb3J0REVSKGRhdGEsIGVuYykge1xuICBkYXRhID0gdXRpbHMudG9BcnJheShkYXRhLCBlbmMpO1xuICB2YXIgcCA9IG5ldyBQb3NpdGlvbigpO1xuICBpZiAoZGF0YVtwLnBsYWNlKytdICE9PSAweDMwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIGlmIChsZW4gPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICgobGVuICsgcC5wbGFjZSkgIT09IGRhdGEubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChkYXRhW3AucGxhY2UrK10gIT09IDB4MDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHJsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIGlmIChybGVuID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgciA9IGRhdGEuc2xpY2UocC5wbGFjZSwgcmxlbiArIHAucGxhY2UpO1xuICBwLnBsYWNlICs9IHJsZW47XG4gIGlmIChkYXRhW3AucGxhY2UrK10gIT09IDB4MDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHNsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIGlmIChzbGVuID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoZGF0YS5sZW5ndGggIT09IHNsZW4gKyBwLnBsYWNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBzID0gZGF0YS5zbGljZShwLnBsYWNlLCBzbGVuICsgcC5wbGFjZSk7XG4gIGlmIChyWzBdID09PSAwKSB7XG4gICAgaWYgKHJbMV0gJiAweDgwKSB7XG4gICAgICByID0gci5zbGljZSgxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGVhZGluZyB6ZXJvZXNcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKHNbMF0gPT09IDApIHtcbiAgICBpZiAoc1sxXSAmIDB4ODApIHtcbiAgICAgIHMgPSBzLnNsaWNlKDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBMZWFkaW5nIHplcm9lc1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHRoaXMuciA9IG5ldyBCTihyKTtcbiAgdGhpcy5zID0gbmV3IEJOKHMpO1xuICB0aGlzLnJlY292ZXJ5UGFyYW0gPSBudWxsO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZnVuY3Rpb24gY29uc3RydWN0TGVuZ3RoKGFyciwgbGVuKSB7XG4gIGlmIChsZW4gPCAweDgwKSB7XG4gICAgYXJyLnB1c2gobGVuKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG9jdGV0cyA9IDEgKyAoTWF0aC5sb2cobGVuKSAvIE1hdGguTE4yID4+PiAzKTtcbiAgYXJyLnB1c2gob2N0ZXRzIHwgMHg4MCk7XG4gIHdoaWxlICgtLW9jdGV0cykge1xuICAgIGFyci5wdXNoKChsZW4gPj4+IChvY3RldHMgPDwgMykpICYgMHhmZik7XG4gIH1cbiAgYXJyLnB1c2gobGVuKTtcbn1cblxuU2lnbmF0dXJlLnByb3RvdHlwZS50b0RFUiA9IGZ1bmN0aW9uIHRvREVSKGVuYykge1xuICB2YXIgciA9IHRoaXMuci50b0FycmF5KCk7XG4gIHZhciBzID0gdGhpcy5zLnRvQXJyYXkoKTtcblxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChyWzBdICYgMHg4MClcbiAgICByID0gWyAwIF0uY29uY2F0KHIpO1xuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChzWzBdICYgMHg4MClcbiAgICBzID0gWyAwIF0uY29uY2F0KHMpO1xuXG4gIHIgPSBybVBhZGRpbmcocik7XG4gIHMgPSBybVBhZGRpbmcocyk7XG5cbiAgd2hpbGUgKCFzWzBdICYmICEoc1sxXSAmIDB4ODApKSB7XG4gICAgcyA9IHMuc2xpY2UoMSk7XG4gIH1cbiAgdmFyIGFyciA9IFsgMHgwMiBdO1xuICBjb25zdHJ1Y3RMZW5ndGgoYXJyLCByLmxlbmd0aCk7XG4gIGFyciA9IGFyci5jb25jYXQocik7XG4gIGFyci5wdXNoKDB4MDIpO1xuICBjb25zdHJ1Y3RMZW5ndGgoYXJyLCBzLmxlbmd0aCk7XG4gIHZhciBiYWNrSGFsZiA9IGFyci5jb25jYXQocyk7XG4gIHZhciByZXMgPSBbIDB4MzAgXTtcbiAgY29uc3RydWN0TGVuZ3RoKHJlcywgYmFja0hhbGYubGVuZ3RoKTtcbiAgcmVzID0gcmVzLmNvbmNhdChiYWNrSGFsZik7XG4gIHJldHVybiB1dGlscy5lbmNvZGUocmVzLCBlbmMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi4vY3VydmVzJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcbnZhciBwYXJzZUJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcztcbnZhciBLZXlQYWlyID0gcmVxdWlyZSgnLi9rZXknKTtcbnZhciBTaWduYXR1cmUgPSByZXF1aXJlKCcuL3NpZ25hdHVyZScpO1xuXG5mdW5jdGlvbiBFRERTQShjdXJ2ZSkge1xuICBhc3NlcnQoY3VydmUgPT09ICdlZDI1NTE5JywgJ29ubHkgdGVzdGVkIHdpdGggZWQyNTUxOSBzbyBmYXInKTtcblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRUREU0EpKVxuICAgIHJldHVybiBuZXcgRUREU0EoY3VydmUpO1xuXG4gIGN1cnZlID0gY3VydmVzW2N1cnZlXS5jdXJ2ZTtcbiAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICB0aGlzLmcgPSBjdXJ2ZS5nO1xuICB0aGlzLmcucHJlY29tcHV0ZShjdXJ2ZS5uLmJpdExlbmd0aCgpICsgMSk7XG5cbiAgdGhpcy5wb2ludENsYXNzID0gY3VydmUucG9pbnQoKS5jb25zdHJ1Y3RvcjtcbiAgdGhpcy5lbmNvZGluZ0xlbmd0aCA9IE1hdGguY2VpbChjdXJ2ZS5uLmJpdExlbmd0aCgpIC8gOCk7XG4gIHRoaXMuaGFzaCA9IGhhc2guc2hhNTEyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVERFNBO1xuXG4vKipcbiogQHBhcmFtIHtBcnJheXxTdHJpbmd9IG1lc3NhZ2UgLSBtZXNzYWdlIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfEtleVBhaXJ9IHNlY3JldCAtIHNlY3JldCBieXRlcyBvciBhIGtleXBhaXJcbiogQHJldHVybnMge1NpZ25hdHVyZX0gLSBzaWduYXR1cmVcbiovXG5FRERTQS5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obWVzc2FnZSwgc2VjcmV0KSB7XG4gIG1lc3NhZ2UgPSBwYXJzZUJ5dGVzKG1lc3NhZ2UpO1xuICB2YXIga2V5ID0gdGhpcy5rZXlGcm9tU2VjcmV0KHNlY3JldCk7XG4gIHZhciByID0gdGhpcy5oYXNoSW50KGtleS5tZXNzYWdlUHJlZml4KCksIG1lc3NhZ2UpO1xuICB2YXIgUiA9IHRoaXMuZy5tdWwocik7XG4gIHZhciBSZW5jb2RlZCA9IHRoaXMuZW5jb2RlUG9pbnQoUik7XG4gIHZhciBzXyA9IHRoaXMuaGFzaEludChSZW5jb2RlZCwga2V5LnB1YkJ5dGVzKCksIG1lc3NhZ2UpXG4gICAgLm11bChrZXkucHJpdigpKTtcbiAgdmFyIFMgPSByLmFkZChzXykudW1vZCh0aGlzLmN1cnZlLm4pO1xuICByZXR1cm4gdGhpcy5tYWtlU2lnbmF0dXJlKHsgUjogUiwgUzogUywgUmVuY29kZWQ6IFJlbmNvZGVkIH0pO1xufTtcblxuLyoqXG4qIEBwYXJhbSB7QXJyYXl9IG1lc3NhZ2UgLSBtZXNzYWdlIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfFNpZ25hdHVyZX0gc2lnIC0gc2lnIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfFBvaW50fEtleVBhaXJ9IHB1YiAtIHB1YmxpYyBrZXlcbiogQHJldHVybnMge0Jvb2xlYW59IC0gdHJ1ZSBpZiBwdWJsaWMga2V5IG1hdGNoZXMgc2lnIG9mIG1lc3NhZ2VcbiovXG5FRERTQS5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1lc3NhZ2UsIHNpZywgcHViKSB7XG4gIG1lc3NhZ2UgPSBwYXJzZUJ5dGVzKG1lc3NhZ2UpO1xuICBzaWcgPSB0aGlzLm1ha2VTaWduYXR1cmUoc2lnKTtcbiAgdmFyIGtleSA9IHRoaXMua2V5RnJvbVB1YmxpYyhwdWIpO1xuICB2YXIgaCA9IHRoaXMuaGFzaEludChzaWcuUmVuY29kZWQoKSwga2V5LnB1YkJ5dGVzKCksIG1lc3NhZ2UpO1xuICB2YXIgU0cgPSB0aGlzLmcubXVsKHNpZy5TKCkpO1xuICB2YXIgUnBsdXNBaCA9IHNpZy5SKCkuYWRkKGtleS5wdWIoKS5tdWwoaCkpO1xuICByZXR1cm4gUnBsdXNBaC5lcShTRyk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuaGFzaEludCA9IGZ1bmN0aW9uIGhhc2hJbnQoKSB7XG4gIHZhciBoYXNoID0gdGhpcy5oYXNoKCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxuICAgIGhhc2gudXBkYXRlKGFyZ3VtZW50c1tpXSk7XG4gIHJldHVybiB1dGlscy5pbnRGcm9tTEUoaGFzaC5kaWdlc3QoKSkudW1vZCh0aGlzLmN1cnZlLm4pO1xufTtcblxuRUREU0EucHJvdG90eXBlLmtleUZyb21QdWJsaWMgPSBmdW5jdGlvbiBrZXlGcm9tUHVibGljKHB1Yikge1xuICByZXR1cm4gS2V5UGFpci5mcm9tUHVibGljKHRoaXMsIHB1Yik7XG59O1xuXG5FRERTQS5wcm90b3R5cGUua2V5RnJvbVNlY3JldCA9IGZ1bmN0aW9uIGtleUZyb21TZWNyZXQoc2VjcmV0KSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21TZWNyZXQodGhpcywgc2VjcmV0KTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5tYWtlU2lnbmF0dXJlID0gZnVuY3Rpb24gbWFrZVNpZ25hdHVyZShzaWcpIHtcbiAgaWYgKHNpZyBpbnN0YW5jZW9mIFNpZ25hdHVyZSlcbiAgICByZXR1cm4gc2lnO1xuICByZXR1cm4gbmV3IFNpZ25hdHVyZSh0aGlzLCBzaWcpO1xufTtcblxuLyoqXG4qICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWpvc2Vmc3Nvbi1lZGRzYS1lZDI1NTE5LTAzI3NlY3Rpb24tNS4yXG4qXG4qIEVERFNBIGRlZmluZXMgbWV0aG9kcyBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHBvaW50cyBhbmQgaW50ZWdlcnMuIFRoZXNlIGFyZVxuKiBoZWxwZXIgY29udmVuaWVuY2UgbWV0aG9kcywgdGhhdCBwYXNzIGFsb25nIHRvIHV0aWxpdHkgZnVuY3Rpb25zIGltcGxpZWRcbiogcGFyYW1ldGVycy5cbipcbiovXG5FRERTQS5wcm90b3R5cGUuZW5jb2RlUG9pbnQgPSBmdW5jdGlvbiBlbmNvZGVQb2ludChwb2ludCkge1xuICB2YXIgZW5jID0gcG9pbnQuZ2V0WSgpLnRvQXJyYXkoJ2xlJywgdGhpcy5lbmNvZGluZ0xlbmd0aCk7XG4gIGVuY1t0aGlzLmVuY29kaW5nTGVuZ3RoIC0gMV0gfD0gcG9pbnQuZ2V0WCgpLmlzT2RkKCkgPyAweDgwIDogMDtcbiAgcmV0dXJuIGVuYztcbn07XG5cbkVERFNBLnByb3RvdHlwZS5kZWNvZGVQb2ludCA9IGZ1bmN0aW9uIGRlY29kZVBvaW50KGJ5dGVzKSB7XG4gIGJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcyhieXRlcyk7XG5cbiAgdmFyIGxhc3RJeCA9IGJ5dGVzLmxlbmd0aCAtIDE7XG4gIHZhciBub3JtZWQgPSBieXRlcy5zbGljZSgwLCBsYXN0SXgpLmNvbmNhdChieXRlc1tsYXN0SXhdICYgfjB4ODApO1xuICB2YXIgeElzT2RkID0gKGJ5dGVzW2xhc3RJeF0gJiAweDgwKSAhPT0gMDtcblxuICB2YXIgeSA9IHV0aWxzLmludEZyb21MRShub3JtZWQpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludEZyb21ZKHksIHhJc09kZCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZW5jb2RlSW50ID0gZnVuY3Rpb24gZW5jb2RlSW50KG51bSkge1xuICByZXR1cm4gbnVtLnRvQXJyYXkoJ2xlJywgdGhpcy5lbmNvZGluZ0xlbmd0aCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZGVjb2RlSW50ID0gZnVuY3Rpb24gZGVjb2RlSW50KGJ5dGVzKSB7XG4gIHJldHVybiB1dGlscy5pbnRGcm9tTEUoYnl0ZXMpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmlzUG9pbnQgPSBmdW5jdGlvbiBpc1BvaW50KHZhbCkge1xuICByZXR1cm4gdmFsIGluc3RhbmNlb2YgdGhpcy5wb2ludENsYXNzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG52YXIgY2FjaGVkUHJvcGVydHkgPSB1dGlscy5jYWNoZWRQcm9wZXJ0eTtcblxuLyoqXG4qIEBwYXJhbSB7RUREU0F9IGVkZHNhIC0gaW5zdGFuY2VcbiogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIHB1YmxpYy9wcml2YXRlIGtleSBwYXJhbWV0ZXJzXG4qXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZT59IFtwYXJhbXMuc2VjcmV0XSAtIHNlY3JldCBzZWVkIGJ5dGVzXG4qIEBwYXJhbSB7UG9pbnR9IFtwYXJhbXMucHViXSAtIHB1YmxpYyBrZXkgcG9pbnQgKGFrYSBgQWAgaW4gZWRkc2EgdGVybXMpXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZT59IFtwYXJhbXMucHViXSAtIHB1YmxpYyBrZXkgcG9pbnQgZW5jb2RlZCBhcyBieXRlc1xuKlxuKi9cbmZ1bmN0aW9uIEtleVBhaXIoZWRkc2EsIHBhcmFtcykge1xuICB0aGlzLmVkZHNhID0gZWRkc2E7XG4gIHRoaXMuX3NlY3JldCA9IHBhcnNlQnl0ZXMocGFyYW1zLnNlY3JldCk7XG4gIGlmIChlZGRzYS5pc1BvaW50KHBhcmFtcy5wdWIpKVxuICAgIHRoaXMuX3B1YiA9IHBhcmFtcy5wdWI7XG4gIGVsc2VcbiAgICB0aGlzLl9wdWJCeXRlcyA9IHBhcnNlQnl0ZXMocGFyYW1zLnB1Yik7XG59XG5cbktleVBhaXIuZnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGZyb21QdWJsaWMoZWRkc2EsIHB1Yikge1xuICBpZiAocHViIGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHViO1xuICByZXR1cm4gbmV3IEtleVBhaXIoZWRkc2EsIHsgcHViOiBwdWIgfSk7XG59O1xuXG5LZXlQYWlyLmZyb21TZWNyZXQgPSBmdW5jdGlvbiBmcm9tU2VjcmV0KGVkZHNhLCBzZWNyZXQpIHtcbiAgaWYgKHNlY3JldCBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHNlY3JldDtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVkZHNhLCB7IHNlY3JldDogc2VjcmV0IH0pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuc2VjcmV0ID0gZnVuY3Rpb24gc2VjcmV0KCkge1xuICByZXR1cm4gdGhpcy5fc2VjcmV0O1xufTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3B1YkJ5dGVzJywgZnVuY3Rpb24gcHViQnl0ZXMoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMucHViKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwdWInLCBmdW5jdGlvbiBwdWIoKSB7XG4gIGlmICh0aGlzLl9wdWJCeXRlcylcbiAgICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLl9wdWJCeXRlcyk7XG4gIHJldHVybiB0aGlzLmVkZHNhLmcubXVsKHRoaXMucHJpdigpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHJpdkJ5dGVzJywgZnVuY3Rpb24gcHJpdkJ5dGVzKCkge1xuICB2YXIgZWRkc2EgPSB0aGlzLmVkZHNhO1xuICB2YXIgaGFzaCA9IHRoaXMuaGFzaCgpO1xuICB2YXIgbGFzdEl4ID0gZWRkc2EuZW5jb2RpbmdMZW5ndGggLSAxO1xuXG4gIHZhciBhID0gaGFzaC5zbGljZSgwLCBlZGRzYS5lbmNvZGluZ0xlbmd0aCk7XG4gIGFbMF0gJj0gMjQ4O1xuICBhW2xhc3RJeF0gJj0gMTI3O1xuICBhW2xhc3RJeF0gfD0gNjQ7XG5cbiAgcmV0dXJuIGE7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3ByaXYnLCBmdW5jdGlvbiBwcml2KCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5wcml2Qnl0ZXMoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ2hhc2gnLCBmdW5jdGlvbiBoYXNoKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5oYXNoKCkudXBkYXRlKHRoaXMuc2VjcmV0KCkpLmRpZ2VzdCgpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdtZXNzYWdlUHJlZml4JywgZnVuY3Rpb24gbWVzc2FnZVByZWZpeCgpIHtcbiAgcmV0dXJuIHRoaXMuaGFzaCgpLnNsaWNlKHRoaXMuZWRkc2EuZW5jb2RpbmdMZW5ndGgpO1xufSk7XG5cbktleVBhaXIucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1lc3NhZ2UpIHtcbiAgYXNzZXJ0KHRoaXMuX3NlY3JldCwgJ0tleVBhaXIgY2FuIG9ubHkgdmVyaWZ5Jyk7XG4gIHJldHVybiB0aGlzLmVkZHNhLnNpZ24obWVzc2FnZSwgdGhpcyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobWVzc2FnZSwgc2lnKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLnZlcmlmeShtZXNzYWdlLCBzaWcsIHRoaXMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuZ2V0U2VjcmV0ID0gZnVuY3Rpb24gZ2V0U2VjcmV0KGVuYykge1xuICBhc3NlcnQodGhpcy5fc2VjcmV0LCAnS2V5UGFpciBpcyBwdWJsaWMgb25seScpO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHRoaXMuc2VjcmV0KCksIGVuYyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRQdWJsaWMgPSBmdW5jdGlvbiBnZXRQdWJsaWMoZW5jKSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy5wdWJCeXRlcygpLCBlbmMpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBLZXlQYWlyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG52YXIgY2FjaGVkUHJvcGVydHkgPSB1dGlscy5jYWNoZWRQcm9wZXJ0eTtcbnZhciBwYXJzZUJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcztcblxuLyoqXG4qIEBwYXJhbSB7RUREU0F9IGVkZHNhIC0gZWRkc2EgaW5zdGFuY2VcbiogQHBhcmFtIHtBcnJheTxCeXRlcz58T2JqZWN0fSBzaWcgLVxuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPnxQb2ludH0gW3NpZy5SXSAtIFIgcG9pbnQgYXMgUG9pbnQgb3IgYnl0ZXNcbiogQHBhcmFtIHtBcnJheTxCeXRlcz58Ym59IFtzaWcuU10gLSBTIHNjYWxhciBhcyBibiBvciBieXRlc1xuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPn0gW3NpZy5SZW5jb2RlZF0gLSBSIHBvaW50IGVuY29kZWRcbiogQHBhcmFtIHtBcnJheTxCeXRlcz59IFtzaWcuU2VuY29kZWRdIC0gUyBzY2FsYXIgZW5jb2RlZFxuKi9cbmZ1bmN0aW9uIFNpZ25hdHVyZShlZGRzYSwgc2lnKSB7XG4gIHRoaXMuZWRkc2EgPSBlZGRzYTtcblxuICBpZiAodHlwZW9mIHNpZyAhPT0gJ29iamVjdCcpXG4gICAgc2lnID0gcGFyc2VCeXRlcyhzaWcpO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHNpZykpIHtcbiAgICBzaWcgPSB7XG4gICAgICBSOiBzaWcuc2xpY2UoMCwgZWRkc2EuZW5jb2RpbmdMZW5ndGgpLFxuICAgICAgUzogc2lnLnNsaWNlKGVkZHNhLmVuY29kaW5nTGVuZ3RoKSxcbiAgICB9O1xuICB9XG5cbiAgYXNzZXJ0KHNpZy5SICYmIHNpZy5TLCAnU2lnbmF0dXJlIHdpdGhvdXQgUiBvciBTJyk7XG5cbiAgaWYgKGVkZHNhLmlzUG9pbnQoc2lnLlIpKVxuICAgIHRoaXMuX1IgPSBzaWcuUjtcbiAgaWYgKHNpZy5TIGluc3RhbmNlb2YgQk4pXG4gICAgdGhpcy5fUyA9IHNpZy5TO1xuXG4gIHRoaXMuX1JlbmNvZGVkID0gQXJyYXkuaXNBcnJheShzaWcuUikgPyBzaWcuUiA6IHNpZy5SZW5jb2RlZDtcbiAgdGhpcy5fU2VuY29kZWQgPSBBcnJheS5pc0FycmF5KHNpZy5TKSA/IHNpZy5TIDogc2lnLlNlbmNvZGVkO1xufVxuXG5jYWNoZWRQcm9wZXJ0eShTaWduYXR1cmUsICdTJywgZnVuY3Rpb24gUygpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMuU2VuY29kZWQoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUicsIGZ1bmN0aW9uIFIoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuUmVuY29kZWQoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUmVuY29kZWQnLCBmdW5jdGlvbiBSZW5jb2RlZCgpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5SKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1NlbmNvZGVkJywgZnVuY3Rpb24gU2VuY29kZWQoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZUludCh0aGlzLlMoKSk7XG59KTtcblxuU2lnbmF0dXJlLnByb3RvdHlwZS50b0J5dGVzID0gZnVuY3Rpb24gdG9CeXRlcygpIHtcbiAgcmV0dXJuIHRoaXMuUmVuY29kZWQoKS5jb25jYXQodGhpcy5TZW5jb2RlZCgpKTtcbn07XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9IZXggPSBmdW5jdGlvbiB0b0hleCgpIHtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLnRvQnl0ZXMoKSwgJ2hleCcpLnRvVXBwZXJDYXNlKCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNpZ25hdHVyZTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBkb3VibGVzOiB7XG4gICAgc3RlcDogNCxcbiAgICBwb2ludHM6IFtcbiAgICAgIFtcbiAgICAgICAgJ2U2MGZjZTkzYjU5ZTllYzUzMDExYWFiYzIxYzIzZTk3YjJhMzEzNjliODdhNWFlOWM0NGVlODllMmE2ZGVjMGEnLFxuICAgICAgICAnZjdlMzUwNzM5OWU1OTU5MjlkYjk5ZjM0ZjU3OTM3MTAxMjk2ODkxZTQ0ZDIzZjBiZTFmMzJjY2U2OTYxNjgyMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODI4MjI2MzIxMmM2MDlkOWVhMmE2ZTNlMTcyZGUyMzhkOGMzOWNhYmQ1YWMxY2ExMDY0NmUyM2ZkNWY1MTUwOCcsXG4gICAgICAgICcxMWY4YTgwOTg1NTdkZmU0NWU4MjU2ZTgzMGI2MGFjZTYyZDYxM2FjMmY3YjE3YmVkMzFiNmVhZmY2ZTI2Y2FmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzVlMTU5ZjcyOGI4NjVhNzJmOTljYzZjNmZjODQ2ZGUwYjkzODMzZmQyMjIyZWQ3M2ZjZTViNTUxZTViNzM5JyxcbiAgICAgICAgJ2QzNTA2ZTBkOWUzYzc5ZWJhNGVmOTdhNTFmZjcxZjVlYWNiNTk1NWFkZDI0MzQ1YzZlZmE2ZmZlZTlmZWQ2OTUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM2M2Q5MGQ0NDdiMDBjOWM5OWNlYWMwNWI2MjYyZWUwNTM0NDFjN2U1NTU1MmZmZTUyNmJhZDhmODNmZjQ2NDAnLFxuICAgICAgICAnNGUyNzNhZGZjNzMyMjIxOTUzYjQ0NTM5N2YzMzYzMTQ1YjlhODkwMDgxOTllY2I2MjAwM2M3ZjNiZWU5ZGU5JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4YjRiNWYxNjVkZjNjMmJlOGM2MjQ0YjViNzQ1NjM4ODQzZTRhNzgxYTE1YmNkMWI2OWY3OWE1NWRmZmRmODBjJyxcbiAgICAgICAgJzRhYWQwYTZmNjhkMzA4YjRiM2ZiZDc4MTNhYjBkYTA0ZjllMzM2NTQ2MTYyZWU1NmIzZWZmMGM2NWZkNGZkMzYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzcyM2NiYWE2ZTVkYjk5NmQ2YmY3NzFjMDBiZDU0OGM3YjcwMGRiZmZhNmMwZTc3YmNiNjExNTkyNTIzMmZjZGEnLFxuICAgICAgICAnOTZlODY3YjU1OTVjYzQ5OGE5MjExMzc0ODg4MjRkNmUyNjYwYTA2NTM3Nzk0OTQ4MDFkYzA2OWQ5ZWIzOWY1ZicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWViZmE0ZDQ5M2JlYmY5OGJhNWZlZWM4MTJjMmQzYjUwOTQ3OTYxMjM3YTkxOTgzOWE1MzNlY2EwZTdkZDdmYScsXG4gICAgICAgICc1ZDlhOGNhMzk3MGVmMGYyNjllZTdlZGFmMTc4MDg5ZDlhZTRjZGMzYTcxMWY3MTJkZGZkNGZkYWUxZGU4OTk5JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxMDBmNDRkYTY5NmU3MTY3Mjc5MWQwYTA5YjdiZGU0NTlmMTIxNWEyOWIzYzAzYmZlZmQ3ODM1YjM5YTQ4ZGIwJyxcbiAgICAgICAgJ2NkZDllMTMxOTJhMDBiNzcyZWM4ZjMzMDBjMDkwNjY2YjdmZjRhMThmZjUxOTVhYzBmYmQ1Y2Q2MmJjNjVhMDknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UxMDMxYmUyNjJjN2VkMWIxZGM5MjI3YTRhMDRjMDE3YTc3ZjhkNDQ2NGYzYjM4NTJjOGFjZGU2ZTUzNGZkMmQnLFxuICAgICAgICAnOWQ3MDYxOTI4OTQwNDA1ZTZiYjZhNDE3NjU5NzUzNWFmMjkyZGQ0MTllMWNlZDc5YTQ0ZjE4ZjI5NDU2YTAwZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmVlYTZjYWU0NmQ1NWI1MzBhYzI4MzlmMTQzYmQ3ZWM1Y2Y4YjI2NmE0MWQ2YWY1MmQ1ZTY4OGQ5MDk0Njk2ZCcsXG4gICAgICAgICdlNTdjNmI2Yzk3ZGNlMWJhYjA2ZTRlMTJiZjNlY2Q1Yzk4MWM4OTU3Y2M0MTQ0MmQzMTU1ZGViZjE4MDkwMDg4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkYTY3YTkxZDkxMDQ5Y2RjYjM2N2JlNGJlNmZmY2EzY2ZlZWQ2NTdkODA4NTgzZGUzM2ZhOTc4YmMxZWM2Y2IxJyxcbiAgICAgICAgJzliYWNhYTM1NDgxNjQyYmM0MWY0NjNmN2VjOTc4MGU1ZGVjN2FkYzUwOGY3NDBhMTdlOWVhOGUyN2E2OGJlMWQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUzOTA0ZmFhMGIzMzRjZGRhNmUwMDA5MzVlZjIyMTUxZWMwOGQwZjdiYjExMDY5ZjU3NTQ1Y2NjMWEzN2I3YzAnLFxuICAgICAgICAnNWJjMDg3ZDBiYzgwMTA2ZDg4YzllY2NhYzIwZDNjMWMxMzk5OTk4MWUxNDQzNDY5OWRjYjA5NmIwMjI3NzFjOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGU3YmNkMGJkMzU5ODNhNzcxOWNjYTc3NjRjYTkwNjc3OWI1M2EwNDNhOWI4YmNhZWZmOTU5ZjQzYWQ4NjA0NycsXG4gICAgICAgICcxMGI3NzcwYjJhM2RhNGIzOTQwMzEwNDIwY2E5NTE0NTc5ZTg4ZTJlNDdmZDY4YjNlYTEwMDQ3ZTg0NjAzNzJhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczODVlZWQzNGMxY2RmZjIxZTZkMDgxODY4OWI4MWJkZTcxYTdmNGYxODM5N2U2NjkwYTg0MWUxNTk5YzQzODYyJyxcbiAgICAgICAgJzI4M2JlYmMzZThlYTIzZjU2NzAxZGUxOWU5ZWJmNDU3NmIzMDRlZWMyMDg2ZGM4Y2MwNDU4ZmU1NTQyZTU0NTMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzZmOWQ5YjgwM2VjZjE5MTYzN2M3M2E0NDEzZGZhMTgwZmRkZjg0YTU5NDdmYmM5YzYwNmVkODZjM2ZhYzNhNycsXG4gICAgICAgICc3YzgwYzY4ZTYwMzA1OWJhNjliOGUyYTMwZTQ1YzRkNDdlYTRkZDJmNWMyODEwMDJkODY4OTA2MDNhODQyMTYwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMzIyZDQwMTI0M2M0ZTI1ODJhMjE0N2MxMDRkNmVjYmY3NzRkMTYzZGIwZjVlNTMxM2I3ZTBlNzQyZDBlNmJkJyxcbiAgICAgICAgJzU2ZTcwNzk3ZTk2NjRlZjViZmIwMTliYzRkZGFmOWI3MjgwNWY2M2VhMjg3M2FmNjI0ZjNhMmU5NmMyOGIyYTAnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg1NjcyYzdkMmRlMGI3ZGEyYmQxNzcwZDg5NjY1ODY4NzQxYjNmOWFmNzY0MzM5NzcyMWQ3NGQyODEzNGFiODMnLFxuICAgICAgICAnN2M0ODFiOWI1YjQzYjJlYjYzNzQwNDliZmE2MmMyZTVlNzdmMTdmY2M1Mjk4ZjQ0YzhlMzA5NGY3OTAzMTNhNicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTQ4YmY4MDliMTk4OGE0NmIwNmM5ZjE5MTk0MTNiMTBmOTIyNmM2MGY2Njg4MzJmZmQ5NTlhZjYwYzgyYTBhJyxcbiAgICAgICAgJzUzYTU2Mjg1NmRjYjY2NDZkYzZiNzRjNWQxYzM0MThjNmQ0ZGZmMDhjOTdjZDJiZWQ0Y2I3Zjg4ZDhjOGU1ODknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYyNjBjZTdmNDYxODAxYzM0ZjA2N2NlMGYwMjg3M2E4ZjFiMGU0NGRmYzY5NzUyYWNjZWNkODE5ZjM4ZmQ4ZTgnLFxuICAgICAgICAnYmMyZGE4MmI2ZmE1YjU3MWE3ZjA5MDQ5Nzc2YTFlZjdlY2QyOTIyMzgwNTFjMTk4YzFhODRlOTViMmI0YWUxNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTUwMzdkZTBhZmMxZDhkNDNkODM0ODQxNGJiZjQxMDMwNDNlYzhmNTc1YmZkYzQzMjk1M2NjOGQyMDM3ZmEyZCcsXG4gICAgICAgICc0NTcxNTM0YmFhOTRkM2I1ZjlmOThkMDlmYjk5MGJkZGJkNWY1YjAzZWM0ODFmMTBlMGU1ZGM4NDFkNzU1YmRhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMDYzNzJiMGY0YTIwN2FkZjVlYTkwNWU4ZjE3NzFiNGU3ZThkYmQxYzZhNmM1YjcyNTg2NmEwYWU0ZmNlNzI1JyxcbiAgICAgICAgJzdhOTA4OTc0YmNlMThjZmUxMmEyN2JiMmFkNWE0ODhjZDc0ODRhNzc4NzEwNDg3MGIyNzAzNGY5NGVlZTMxZGQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzIxM2M3YTcxNWNkNWQ0NTM1OGQwYmJmOWRjMGNlMDIyMDRiMTBiZGRlMmEzZjU4NTQwYWQ2OTA4ZDA1NTk3NTQnLFxuICAgICAgICAnNGI2ZGFkMGI1YWU0NjI1MDcwMTNhZDA2MjQ1YmExOTBiYjQ4NTBmNWYzNmE3ZWVkZGZmMmMyNzUzNGI0NThmMicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGU3YzI3MmE3YWY0YjM0ZThkYmI5MzUyYTU0MTlhODdlMjgzOGM3MGFkYzYyY2RkZjBjYzNhM2IwOGZiZDUzYycsXG4gICAgICAgICcxNzc0OWM3NjZjOWQwYjE4ZTE2ZmQwOWY2ZGVmNjgxYjUzMGI5NjE0YmZmN2RkMzNlMGIzOTQxODE3ZGNhYWU2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmZWE3NGUzZGJlNzc4YjFiMTBmMjM4YWQ2MTY4NmFhNWM3NmUzZGIyYmU0MzA1NzYzMjQyN2UyODQwZmIyN2I2JyxcbiAgICAgICAgJzZlMDU2OGRiOWIwYjEzMjk3Y2Y2NzRkZWNjYjZhZjkzMTI2YjU5NmI5NzNmN2I3NzcwMWQzZGI3ZjIzY2I5NmYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2ZTY0MTEzZjY3N2NmMGUxMGEyNTcwZDU5OTk2OGQzMTU0NGUxNzliNzYwNDMyOTUyYzAyYTQ0MTdiZGRlMzknLFxuICAgICAgICAnYzkwZGRmOGRlZTRlOTVjZjU3NzA2NmQ3MDY4MWYwZDM1ZTJhMzNkMmI1NmQyMDMyYjRiMTc1MmQxOTAxYWMwMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzczOGM1NmIwM2IyYWJlMWU4MjgxYmFhNzQzZjhmOWE4ZjdjYzY0M2RmMjZjYmVlM2FiMTUwMjQyYmNiYjg5MScsXG4gICAgICAgICc4OTNmYjU3ODk1MWFkMjUzN2Y3MThmMmVhY2JmYmJiYjgyMzE0ZWVmNzg4MGNmZTkxN2U3MzVkOTY5OWE4NGMzJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkODk1NjI2NTQ4YjY1YjgxZTI2NGM3NjM3Yzk3Mjg3N2QxZDcyZTVmM2E5MjUwMTQzNzJlOWY2NTg4ZjZjMTRiJyxcbiAgICAgICAgJ2ZlYmZhYTM4ZjJiYzdlYWU3MjhlYzYwODE4YzM0MGViMDM0MjhkNjMyYmIwNjdlMTc5MzYzZWQ3NWQ3ZDk5MWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2I4ZGE5NDAzMmE5NTc1MThlYjBmNjQzMzU3MWU4NzYxY2VmZmM3MzY5M2U4NGVkZDQ5MTUwYTU2NGY2NzZlMDMnLFxuICAgICAgICAnMjgwNGRmYTQ0ODA1YTFlNGQ3Yzk5Y2M5NzYyODA4YjA5MmNjNTg0ZDk1ZmYzYjUxMTQ4OGU0ZTc0ZWZkZjZlNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTgwZmVhMTQ0NDFmYjMzYTdkOGFkYWI5NDc1ZDdmYWIyMDE5ZWZmYjUxNTZhNzkyZjFhMTE3NzhlM2MwZGY1ZCcsXG4gICAgICAgICdlZWQxZGU3ZjYzOGUwMDc3MWU4OTc2OGNhM2NhOTQ0NzJkMTU1ZTgwYWYzMjJlYTlmY2I0MjkxYjZhYzllYzc4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhMzAxNjk3YmRmY2Q3MDQzMTNiYTQ4ZTUxZDU2NzU0M2YyYTE4MjAzMWVmZDY5MTVkZGMwN2JiY2M0ZTE2MDcwJyxcbiAgICAgICAgJzczNzBmOTFjZmI2N2U0ZjUwODE4MDlmYTI1ZDQwZjliMTczNWRiZjdjMGExMWExMzBjMGQxYTA0MWUxNzdlYTEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzkwYWQ4NWIzODlkNmI5MzY0NjNmOWQwNTEyNjc4ZGUyMDhjYzMzMGIxMTMwN2ZmZmFiN2FjNjNlM2ZiMDRlZDQnLFxuICAgICAgICAnZTUwN2EzNjIwYTM4MjYxYWZmZGNiZDk0MjcyMjJiODM5YWVmYWJlMTU4Mjg5NGQ5OTFkNGQ0OGNiNmVmMTUwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZjY4YjlkMmY2M2I1ZjMzOTIzOWMxYWQ5ODFmMTYyZWU4OGM1Njc4NzIzZWEzMzUxYjdiNDQ0YzllYzRjMGRhJyxcbiAgICAgICAgJzY2MmE5ZjJkYmEwNjM5ODZkZTFkOTBjMmI2YmUyMTVkYmJlYTJjZmU5NTUxMGJmZGYyM2NiZjc5NTAxZmZmODInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U0ZjNmYjAxNzZhZjg1ZDY1ZmY5OWZmOTE5OGMzNjA5MWY0OGU4NjUwMzY4MWUzZTY2ODZmZDUwNTMyMzFlMTEnLFxuICAgICAgICAnMWU2MzYzM2FkMGVmNGYxYzE2NjFhNmQwZWEwMmI3Mjg2Y2M3ZTc0ZWM5NTFkMWM5ODIyYzM4NTc2ZmViNzNiYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGMwMGZhOWIxOGViZjMzMWViOTYxNTM3YTQ1YTQyNjZjNzAzNGYyZjBkNGUxZDA3MTZmYjZlYWUyMGVhZTI5ZScsXG4gICAgICAgICdlZmE0NzI2N2ZlYTUyMWExYTlkYzM0M2EzNzM2Yzk3NGMyZmFkYWZhODFlMzZjNTRlN2QyYTRjNjY3MDI0MTRiJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlN2EyNmNlNjlkZDQ4MjlmM2UxMGNlYzBhOWU5OGVkMzE0M2QwODRmMzA4YjkyYzA5OTdmZGRmYzYwY2IzZTQxJyxcbiAgICAgICAgJzJhNzU4ZTMwMGZhNzk4NGI0NzFiMDA2YTFhYWZiYjE4ZDBhNmIyYzA0MjBlODNlMjBlOGE5NDIxY2YyY2ZkNTEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2I2NDU5ZTBlZTM2NjJlYzhkMjM1NDBjMjIzYmNiZGM1NzFjYmNiOTY3ZDc5NDI0ZjNjZjI5ZWIzZGU2YjgwZWYnLFxuICAgICAgICAnNjdjODc2ZDA2ZjNlMDZkZTFkYWRmMTZlNTY2MWRiM2M0YjNhZTZkNDhlMzViMmZmMzBiZjBiNjFhNzFiYTQ1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNjhhODBjODI4MGJiODQwNzkzMjM0YWExMThmMDYyMzFkNmYxZmM2N2U3M2M1YTVkZWRhMGY1YjQ5Njk0M2U4JyxcbiAgICAgICAgJ2RiOGJhOWZmZjRiNTg2ZDAwYzRiMWY5MTc3YjBlMjhiNWIwZTdiOGY3ODQ1Mjk1YTI5NGM4NDI2NmIxMzMxMjAnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyNGFlZDdkZjY1YzgwNDI1MmRjMDI3MDkwN2EzMGIwOTYxMmFlYjk3MzQ0OWNlYTQwOTU5ODBmYzI4ZDNkNWQnLFxuICAgICAgICAnNjQ4YTM2NTc3NGI2MWYyZmYxMzBjMGMzNWFlYzFmNGYxOTIxM2IwYzdlMzMyODQzOTY3MjI0YWY5NmFiN2M4NCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGRmOWMxNDkxOWNkZTYxZjZkNTFkZmRiZTVmZWU1ZGNlZWM0MTQzYmE4ZDFjYTg4OGU4YmQzNzNmZDA1NGM5NicsXG4gICAgICAgICczNWVjNTEwOTJkODcyODA1MDk3NGMyM2ExZDg1ZDRiNWQ1MDZjZGMyODg0OTAxOTJlYmFjMDZjYWQxMGQ1ZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOWMzOTE5YTg0YTQ3NDg3MGZhZWQ4YTljMWNjNjYwMjE1MjM0ODkwNTRkN2YwMzA4Y2JmYzk5YzhhYzFmOThjZCcsXG4gICAgICAgICdkZGI4NGYwZjRhNGRkZDU3NTg0ZjA0NGJmMjYwZTY0MTkwNTMyNmY3NmM2NGM4ZTZiZTdlNWUwM2Q0ZmM1OTlkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MDU3MTcwYjFkZDEyZmRmOGRlMDVmMjgxZDhlMDZiYjkxZTE0OTNhOGI5MWQ0Y2M1YTIxMzgyMTIwYTk1OWU1JyxcbiAgICAgICAgJzlhMWFmMGIyNmE2YTQ4MDdhZGQ5YTJkYWY3MWRmMjYyNDY1MTUyYmMzZWUyNGM2NWU4OTliZTkzMjM4NWEyYTgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E1NzZkZjhlMjNhMDg0MTE0MjE0MzlhNDUxOGRhMzE4ODBjZWYwZmJhN2Q0ZGYxMmIxYTY5NzNlZWNiOTQyNjYnLFxuICAgICAgICAnNDBhNmJmMjBlNzY2NDBiMmM5MmI5N2FmZTU4Y2Q4MmM0MzJlMTBhN2Y1MTRkOWYzZWU4YmUxMWFlMWIyOGVjOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzc3OGE3OGMyOGRlYzNlMzBhMDVmZTk2MjlkZThjMzhiYjMwZDFmNWNmOWEzYTIwOGY3NjM4ODliZTU4YWQ3MScsXG4gICAgICAgICczNDYyNmQ5YWI1YTViMjJmZjcwOThlMTJmMmZmNTgwMDg3YjM4NDExZmYyNGFjNTYzYjUxM2ZjMWZkOWY0M2FjJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5Mjg5NTVlZTYzN2E4NDQ2MzcyOWZkMzBlN2FmZDJlZDVmOTYyNzRlNWFkN2U1Y2IwOWVkYTljMDZkOTAzYWMnLFxuICAgICAgICAnYzI1NjIxMDAzZDNmNDJhODI3Yjc4YTEzMDkzYTk1ZWVhYzNkMjZlZmE4YThkODNmYzUxODBlOTM1YmNkMDkxZicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODVkMGZlZjNlYzZkYjEwOTM5OTA2NGYzYTBlM2IyODU1NjQ1YjRhOTA3YWQzNTQ1MjdhYWU3NTE2M2Q4Mjc1MScsXG4gICAgICAgICcxZjAzNjQ4NDEzYTM4YzBiZTI5ZDQ5NmU1ODJjZjU2NjNlODc1MWU5Njg3NzMzMTU4MmMyMzdhMjRlYjFmOTYyJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmZjJiMGRjZTk3ZWVjZTk3YzFjOWI2MDQxNzk4Yjg1ZGZkZmI2ZDg4ODJkYTIwMzA4ZjU0MDQ4MjQ1MjYwODdlJyxcbiAgICAgICAgJzQ5M2QxM2ZlZjUyNGJhMTg4YWY0YzRkYzU0ZDA3OTM2YzdiN2VkNmZiOTBlMmNlYjJjOTUxZTAxZjBjMjk5MDcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgyN2ZiYmU0YjFlODgwZWE5ZWQyYjJlNjMwMWIyMTJiNTdmMWVlMTQ4Y2Q2ZGQyODc4MGU1ZTJjZjg1NmUyNDEnLFxuICAgICAgICAnYzYwZjljOTIzYzcyN2IwYjcxYmVmMmM2N2QxZDEyNjg3ZmY3YTYzMTg2OTAzMTY2ZDYwNWI2OGJhZWMyOTNlYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWFhNjQ5ZjIxZjUxYmRiYWU3YmU0YWUzNGNlNmU1MjE3YTU4ZmRjZTdmNDdmOWFhN2YzYjU4ZmEyMTIwZTJiMycsXG4gICAgICAgICdiZTMyNzllZDViYmJiMDNhYzY5YTgwZjg5ODc5YWE1YTAxYTZiOTY1ZjEzZjdlNTlkNDdhNTMwNWJhNWFkOTNkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNGE0MmQ0M2M1Y2YxNjlkOTM5MWRmNmRlY2Y0MmVlNTQxYjZkOGYwYzlhMTM3NDAxZTIzNjMyZGRhMzRkMjRmJyxcbiAgICAgICAgJzRkOWY5MmU3MTZkMWM3MzUyNmZjOTljY2ZiOGFkMzRjZTg4NmVlZGZhOGQ4ZTRmMTNhN2Y3MTMxZGViYTk0MTQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzFlYzgwZmVmMzYwY2JkZDk1NDE2MGZhZGFiMzUyYjZiOTJiNTM1NzZhODhmZWE0OTQ3MTczYjlkNDMwMGJmMTknLFxuICAgICAgICAnYWVlZmU5Mzc1NmI1MzQwZDJmM2E0OTU4YTdhYmJmNWUwMTQ2ZTc3ZjYyOTVhMDdiNjcxY2RjMWNjMTA3Y2VmZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTQ2YTc3OGMwNDY3MGMyZjkxYjAwYWY0NjgwZGZhOGJjZTM0OTA3MTdkNThiYTg4OWRkYjU5MjgzNjY2NDJiZScsXG4gICAgICAgICdiMzE4ZTBlYzMzNTQwMjhhZGQ2Njk4MjdmOWQ0YjI4NzBhYWE5NzFkMmY3ZTVlZDFkMGIyOTc0ODNkODNlZmQwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmYTUwYzBmNjFkMjJlNWYwN2UzYWNlYmIxYWEwN2IxMjhkMDAxMjIwOWEyOGI5Nzc2ZDc2YTg3OTMxODBlZWY5JyxcbiAgICAgICAgJzZiODRjNjkyMjM5N2ViYTliNzJjZDI4NzIyODFhNjhhNWU2ODMyOTNhNTdhMjEzYjM4Y2Q4ZDdkM2Y0ZjI4MTEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhMWQ2MWQwY2E3MjFhMTFiMWE1YmY2YjdkODhlODQyMWEyODhhYjVkNWJiYTUyMjBlNTNkMzJiNWYwNjdlYzInLFxuICAgICAgICAnODE1N2Y1NWE3Yzk5MzA2Yzc5YzA3NjYxNjFjOTFlMjk2NmE3Mzg5OWQyNzliNDhhNjU1ZmJhMGYxYWQ4MzZmMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYThlMjgyZmYwYzk3MDY5MDcyMTVmZjk4ZThmZDQxNjYxNTMxMWRlMDQ0NmYxZTA2MmE3M2IwNjEwZDA2NGUxMycsXG4gICAgICAgICc3Zjk3MzU1YjhkYjgxYzA5YWJmYjdmM2M1YjI1MTU4ODhiNjc5YTNlNTBkZDZiZDZjZWY3YzczMTExZjRjYzBjJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzRhNTNiOWM5YTI4NTg3MmQzOWU1NmU2OTEzY2FiMTVkNTliMWZhNTEyNTA4YzAyMmYzODJkZTgzMTk0OTdjJyxcbiAgICAgICAgJ2NjYzlkYzM3YWJmYzljMTY1N2I0MTU1ZjJjNDdmOWU2NjQ2YjNhMWQ4Y2I5ODU0MzgzZGExM2FjMDc5YWZhNzMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzk1OTM5Njk4MTk0Mzc4NWMzZDNlNTdlZGY1MDE4Y2RiZTAzOWU3MzBlNDkxOGIzZDg4NGZkZmYwOTQ3NWI3YmEnLFxuICAgICAgICAnMmU3ZTU1Mjg4OGMzMzFkZDhiYTAzODZhNGI5Y2Q2ODQ5YzY1M2Y2NGM4NzA5Mzg1ZTliOGFiZjg3NTI0ZjJmZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDJhNjNhNTBhZTQwMWU1NmQ2NDVhMTE1M2IxMDlhOGZjY2EwYTQzZDU2MWZiYTJkYmI1MTM0MGM5ZDgyYjE1MScsXG4gICAgICAgICdlODJkODZmYjY0NDNmY2I3NTY1YWVlNThiMjk0ODIyMGE3MGY3NTBhZjQ4NGNhNTJkNDE0MjE3NGRjZjg5NDA1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2NDU4N2UyMzM1NDcxZWI4OTBlZTc4OTZkN2NmZGM4NjZiYWNiZGJkMzgzOTMxN2IzNDM2ZjliNDU2MTdlMDczJyxcbiAgICAgICAgJ2Q5OWZjZGQ1YmY2OTAyZTJhZTk2ZGQ2NDQ3YzI5OWExODViOTBhMzkxMzNhZWFiMzU4Mjk5ZTVlOWZhZjY1ODknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg0ODFiZGUwZTRlNGQ4ODViM2E1NDZkM2U1NDlkZTA0MmYwYWE2Y2VhMjUwZTdmZDM1OGQ2Yzg2ZGQ0NWU0NTgnLFxuICAgICAgICAnMzhlZTdiOGNiYTU0MDRkZDg0YTI1YmYzOWNlY2IyY2E5MDBhNzljNDJiMjYyZTU1NmQ2NGIxYjU5Nzc5MDU3ZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTM0NjRhNTdhNzgxMDJhYTYyYjY5NzlhZTgxN2Y0NjM3ZmZjZmVkM2M0YjFjZTMwYmNkNjMwM2Y2Y2FmNjY2YicsXG4gICAgICAgICc2OWJlMTU5MDA0NjE0NTgwZWY3ZTQzMzQ1M2NjYjBjYTQ4ZjMwMGE4MWQwOTQyZTEzZjQ5NWE5MDdmNmVjYzI3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiYzRhOWRmNWI3MTNmZTJlOWFlZjQzMGJjYzFkYzk3YTBjZDljY2VkZTJmMjg1ODhjYWRhM2EwZDJkODNmMzY2JyxcbiAgICAgICAgJ2QzYTgxY2E2ZTc4NWMwNjM4MzkzN2FkZjRiNzk4Y2FhNmU4YTlmYmZhNTQ3YjE2ZDc1OGQ2NjY1ODFmMzNjMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGMyOGE5N2JmODI5OGJjMGQyM2Q4Yzc0OTQ1MmEzMmU2OTRiNjVlMzBhOTQ3MmEzOTU0YWIzMGZlNTMyNGNhYScsXG4gICAgICAgICc0MGEzMDQ2M2EzMzA1MTkzMzc4ZmVkZjMxZjdjYzBlYjdhZTc4NGYwNDUxY2I5NDU5ZTcxZGM3M2NiZWY5NDgyJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZWE5NjY2MTM5NTI3YThjMWRkOTRjZTRmMDcxZmQyM2M4YjM1MGM1YTRiYjMzNzQ4YzRiYTExMWZhY2NhZTAnLFxuICAgICAgICAnNjIwZWZhYmJjOGVlMjc4MmUyNGU3YzBjZmI5NWM1ZDczNWI3ODNiZTljZjBmOGU5NTVhZjM0YTMwZTYyYjk0NScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGQzNjI1ZmFlZjViYTA2MDc0NjY5NzE2YmJkMzc4OGQ4OWJkZGU4MTU5NTk5NjgwOTJmNzZjYzRlYjlhOTc4NycsXG4gICAgICAgICc3YTE4OGZhMzUyMGUzMGQ0NjFkYTI1MDEwNDU3MzFjYTk0MTQ2MTk4Mjg4MzM5NTkzN2Y2OGQwMGM2NDRhNTczJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmNzEwZDc5ZDllYjk2MjI5N2U0ZjYyMzJiNDBlOGY3ZmViMmJjNjM4MTQ2MTRkNjkyYzEyZGU3NTI0MDgyMjFlJyxcbiAgICAgICAgJ2VhOThlNjcyMzJkM2IzMjk1ZDNiNTM1NTMyMTE1Y2NhYzg2MTJjNzIxODUxNjE3NTI2YWU0N2E5Yzc3YmZjODInLFxuICAgICAgXSxcbiAgICBdLFxuICB9LFxuICBuYWY6IHtcbiAgICB3bmQ6IDcsXG4gICAgcG9pbnRzOiBbXG4gICAgICBbXG4gICAgICAgICdmOTMwOGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2JjZTAzNmY5JyxcbiAgICAgICAgJzM4OGY3YjBmNjMyZGU4MTQwZmUzMzdlNjJhMzdmMzU2NjUwMGE5OTkzNGMyMjMxYjZjYjlmZDc1ODRiOGU2NzInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzJmOGJkZTRkMWEwNzIwOTM1NWI0YTcyNTBhNWM1MTI4ZTg4Yjg0YmRkYzYxOWFiN2NiYThkNTY5YjI0MGVmZTQnLFxuICAgICAgICAnZDhhYzIyMjYzNmU1ZTNkNmQ0ZGJhOWRkYTZjOWM0MjZmNzg4MjcxYmFiMGQ2ODQwZGNhODdkM2FhNmFjNjJkNicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNWNiZGYwNjQ2ZTVkYjRlYWEzOThmMzY1ZjJlYTdhMGUzZDQxOWI3ZTAzMzBlMzljZTkyYmRkZWRjYWM0ZjliYycsXG4gICAgICAgICc2YWViY2E0MGJhMjU1OTYwYTMxNzhkNmQ4NjFhNTRkYmE4MTNkMGI4MTNmZGU3YjVhNTA4MjYyODA4NzI2NGRhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRjMzVmMTEwZGZjMjdjY2JlJyxcbiAgICAgICAgJ2NjMzM4OTIxYjBhN2Q5ZmQ2NDM4MDk3MTc2M2I2MWU5YWRkODg4YTQzNzVmOGUwZjA1Y2MyNjJhYzY0ZjljMzcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NGFlN2Y4NThhOTQxMWU1ZWY0MjQ2YjcwYzY1YWFjNTY0OTk4MGJlNWMxNzg5MWJiZWMxNzg5NWRhMDA4Y2InLFxuICAgICAgICAnZDk4NGEwMzJlYjZiNWUxOTAyNDNkZDU2ZDdiN2IzNjUzNzJkYjFlMmRmZjlkNmE4MzAxZDc0YzljOTUzYzYxYicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjI4NzczYzJkOTc1Mjg4YmM3ZDFkMjA1YzM3NDg2NTFiMDc1ZmJjNjYxMGU1OGNkZGVlZGRmOGYxOTQwNWFhOCcsXG4gICAgICAgICdhYjA5MDJlOGQ4ODBhODk3NTgyMTJlYjY1Y2RhZjQ3M2ExYTA2ZGE1MjFmYTkxZjI5YjVjYjUyZGIwM2VkODEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q3OTI0ZDRmN2Q0M2VhOTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGUnLFxuICAgICAgICAnNTgxZTI4NzJhODZjNzJhNjgzODQyZWMyMjhjYzZkZWZlYTQwYWYyYmQ4OTZkM2E1YzUwNGRjOWZmNmEyNmI1OCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGVmZGVhNGNkYjY3Nzc1MGE0MjBmZWU4MDdlYWNmMjFlYjk4OThhZTc5Yjk3Njg3NjZlNGZhYTA0YTJkNGEzNCcsXG4gICAgICAgICc0MjExYWIwNjk0NjM1MTY4ZTk5N2IwZWFkMmE5M2RhZWNlZDFmNGEwNGE5NWMwZjZjZmIxOTlmNjllNTZlYjc3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyYjRlYTBhNzk3YTQ0M2QyOTNlZjVjZmY0NDRmNDk3OWYwNmFjZmViZDdlODZkMjc3NDc1NjU2MTM4Mzg1YjZjJyxcbiAgICAgICAgJzg1ZTg5YmMwMzc5NDVkOTNiMzQzMDgzYjVhMWM4NjEzMWEwMWY2MGM1MDI2OTc2M2I1NzBjODU0ZTVjMDliN2EnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjViZTU5ZDUnLFxuICAgICAgICAnMzIxZWI0MDc1MzQ4ZjUzNGQ1OWMxODI1OWRkYTNlMWY0YTFiM2IyZTcxYjEwMzljNjdiZDNkOGJjZjgxOTk4YycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmZhMjEwNGQ2YjM4ZDExYjAyMzAwMTA1NTk4NzkxMjRlNDJhYjhkZmVmZjVmZjI5ZGM5Y2RhZGQ0ZWNhY2MzZicsXG4gICAgICAgICcyZGUxMDY4Mjk1ZGQ4NjViNjQ1NjkzMzViZDVkZDgwMTgxZDcwZWNmYzg4MjY0ODQyM2JhNzZiNTMyYjdkNjcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzkyNDgyNzliMDliNGQ2OGRhYjIxYTliMDY2ZWRkYTgzMjYzYzNkODRlMDk1NzJlMjY5Y2EwY2Q3ZjU0NTM3MTQnLFxuICAgICAgICAnNzMwMTZmN2JmMjM0YWFkZTVkMWFhNzFiZGVhMmIxZmYzZmMwZGUyYTg4NzkxMmZmZTU0YTMyY2U5N2NiMzQwMicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJmYjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOScsXG4gICAgICAgICdhNjlkY2U0YTdkNmM5OGU4ZDRhMWFjYTg3ZWY4ZDcwMDNmODNjMjMwZjNhZmE3MjZhYjQwZTUyMjkwYmUxYzU1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNDRkMTJjNzA2NWQ4MTJlOGFjZjI4ZDdjYmIxOWY5MDExZWNkOWU5ZmRmMjgxYjBlNmEzYjVlODdkMjJlN2RiJyxcbiAgICAgICAgJzIxMTlhNDYwY2UzMjZjZGM3NmM0NTkyNmM5ODJmZGFjMGUxMDZlODYxZWRmNjFjNWEwMzkwNjNmMGUwZTY0ODInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzZhMjQ1YmY2ZGM2OTg1MDRjODlhMjBjZmRlZDYwODUzMTUyYjY5NTMzNmMyODA2M2I2MWM2NWNiZDI2OWU2YjQnLFxuICAgICAgICAnZTAyMmNmNDJjMmJkNGE3MDhiM2Y1MTI2ZjE2YTI0YWQ4YjMzYmE0OGQwNDIzYjZlZmQ1ZTYzNDgxMDBkOGE4MicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTY5N2ZmYTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNScsXG4gICAgICAgICdiOWMzOThmMTg2ODA2ZjVkMjc1NjE1MDZlNDU1NzQzM2EyY2YxNTAwOWU0OThhZTdhZGVlOWQ2M2QwMWIyMzk2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MDViZGIwMTk5ODE3MThiOTg2ZDBmMDdlODM0Y2IwZDlkZWI4MzYwZmZiN2Y2MWRmOTgyMzQ1ZWYyN2E3NDc5JyxcbiAgICAgICAgJzI5NzJkMmRlNGY4ZDIwNjgxYTc4ZDkzZWM5NmZlMjNjMjZiZmFlODRmYjE0ZGI0M2IwMWUxZTkwNTZiOGM0OScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjJkMTRkYWI0MTUwYmY0OTc0MDJmZGM0NWEyMTVlMTBkY2IwMWMzNTQ5NTliMTBjZmUzMWM3ZTlkODdmZjMzZCcsXG4gICAgICAgICc4MGZjMDZiZDhjYzViMDEwOTgwODhhMTk1MGVlZDBkYjAxYWExMzI5NjdhYjQ3MjIzNWY1NjQyNDgzYjI1ZWFmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJjNTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmJyxcbiAgICAgICAgJzFjMzgzMDNmMWNjNWMzMGYyNmU2NmJhZDdmZTcyZjcwYTY1ZWVkNGNiZTcwMjRlYjFhYTAxZjU2NDMwYmQ1N2EnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzdhOTM3NWFkNjE2N2FkNTRhYTc0YzYzNDhjYzU0ZDM0NGNjNWRjOTQ4N2Q4NDcwNDlkNWVhYmIwZmEwM2M4ZmInLFxuICAgICAgICAnZDBlM2ZhOWVjYTg3MjY5MDk1NTllMGQ3OTI2OTA0NmJkYzU5ZWExMGM3MGNlMmIwMmQ0OTllYzIyNGRjN2Y3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNTI4ZWNkOWI2OTZiNTRjOTA3YTllZDA0NTQ0N2E3OWJiNDA4ZWMzOWI2OGRmNTA0YmI1MWY0NTliYzNmZmM5JyxcbiAgICAgICAgJ2VlY2Y0MTI1MzEzNmU1Zjk5OTY2ZjIxODgxZmQ2NTZlYmM0MzQ1NDA1YzUyMGRiYzA2MzQ2NWI1MjE0MDk5MzMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ5MzcwYTRiNWY0MzQxMmVhMjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2MycsXG4gICAgICAgICc3NThmM2Y0MWFmZDZlZDQyOGIzMDgxYjA1MTJmZDYyYTU0YzNmM2FmYmI1YjY3NjRiNjUzMDUyYTEyOTQ5YzlhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3N2YyMzA5MzZlZTg4Y2JiZDczZGY5MzBkNjQ3MDJlZjg4MWQ4MTFlMGUxNDk4ZTJmMWMxM2ViMWZjMzQ1ZDc0JyxcbiAgICAgICAgJzk1OGVmNDJhNzg4NmI2NDAwYTA4MjY2ZTliYTFiMzc4OTZjOTUzMzBkOTcwNzdjYmJlOGViM2M3NjcxYzYwZDYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YyZGFjOTkxY2M0Y2U0YjllYTQ0ODg3ZTVjN2MwYmNlNThjODAwNzRhYjlkNGRiYWViMjg1MzFiNzczOWY1MzAnLFxuICAgICAgICAnZTBkZWRjOWIzYjJmOGRhZDRkYTFmMzJkZWMyNTMxZGY5ZWI1ZmJlYjA1OThlNGZkMWExMTdkYmE3MDNhM2MzNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDYzYjNkOWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFlM2RlYmNiYTQ4NTBjNjkwZDQ1YicsXG4gICAgICAgICc1ZWQ0MzBkNzhjMjk2YzM1NDMxMTQzMDZkZDg2MjJkN2M2MjJlMjdjOTcwYTFkZTMxY2IzNzdiMDFhZjczMDdlJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMTZmODA0MjQ0ZTQ2ZTJhMDkyMzJkNGFmZjNiNTk5NzZiOThmYWMxNDMyOGEyZDFhMzI0OTZiNDk5OThmMjQ3JyxcbiAgICAgICAgJ2NlZGFiZDliODIyMDNmN2UxM2QyMDZmY2RmNGUzM2Q5MmE2YzUzYzI2ZTVjY2UyNmQ2NTc5OTYyYzRlMzFkZjYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2NhZjc1NDI3MmRjODQ1NjNiMDM1MmI3YTE0MzExYWY1NWQyNDUzMTVhY2UyN2M2NTM2OWUxNWY3MTUxZDQxZDEnLFxuICAgICAgICAnY2I0NzQ2NjBlZjM1ZjVmMmE0MWI2NDNmYTVlNDYwNTc1ZjRmYTliNzk2MjIzMmE1YzMyZjkwODMxOGEwNDQ3NicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjYwMGNhNGIyODJjYjk4NmY4NWQwZjE3MDk5NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMCcsXG4gICAgICAgICc0MTE5Yjg4NzUzYzE1YmQ2YTY5M2IwM2ZjZGRiYjQ1ZDVhYzZiZTc0YWI1ZjBlZjQ0YjBiZTk0NzVhN2U0YjQwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NjM1Y2E3MmQ3ZTg0MzJjMzM4ZWM1M2NkMTIyMjBiYzAxYzQ4Njg1ZTI0ZjdkYzhjNjAyYTc3NDY5OThlNDM1JyxcbiAgICAgICAgJzkxYjY0OTYwOTQ4OWQ2MTNkMWQ1ZTU5MGY3OGU2ZDc0ZWNmYzA2MWQ1NzA0OGJhZDllNzZmMzAyYzViOWM2MScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzU0ZTMyMzlmMzI1NTcwY2RiYmY0YTg3ZGVlZThhNjZiN2YyYjMzNDc5ZDQ2OGZiYzFhNTA3NDNiZjU2Y2MxOCcsXG4gICAgICAgICc2NzNmYjg2ZTViZGEzMGZiM2NkMGVkMzA0ZWE0OWEwMjNlZTMzZDAxOTdhNjk1ZDBjNWQ5ODA5M2M1MzY2ODMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzZTZiZDEwNzFhMWU5NmFmZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2OTFkOWI5ZTgnLFxuICAgICAgICAnNTljOWUwYmJhMzk0ZTc2ZjQwYzBhYTU4Mzc5YTNjYjZhNWEyMjgzOTkzZTkwYzQxNjcwMDJhZjQ5MjBlMzdmNScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTg2YjQ4M2QwNTZhMDMzODI2YWU3M2Q4OGY3MzI5ODVjNGNjYjFmMzJiYTM1ZjRiNGNjNDdmZGNmMDRhYTZlYicsXG4gICAgICAgICczYjk1MmQzMmM2N2NmNzdlMmUxNzQ0NmUyMDQxODBhYjIxZmI4MDkwODk1MTM4YjRhNGE3OTdmODZlODA4ODhiJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZjlkNzBhNmI5ODc2Y2U1NDRjOTg1NjFmNGJlNGY3MjU0NDJlNmQyYjczN2Q5YzkxYTgzMjE3MjRjZTA5NjNmJyxcbiAgICAgICAgJzU1ZWIyZGFmZDg0ZDZjY2Q1Zjg2MmI3ODVkYzM5ZDRhYjE1NzIyMjcyMGVmOWRhMjE3YjhjNDVjZjJiYTI0MTcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4YWI1MjU1NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDMnLFxuICAgICAgICAnZWZhZTljOGRiYzE0MTMwNjYxZThjZWMwMzBjODlhZDBjMTNjNjZjMGQxN2EyOTA1Y2RjNzA2YWI3Mzk5YTg2OCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjkwNzk4YzJiNjQ3NjgzMGRhMTJmZTAyMjg3ZTllNzc3YWEzZmJhMWMzNTViMTdhNzIyZDM2MmY4NDYxNGZiYScsXG4gICAgICAgICdlMzhkYTc2ZGNkNDQwNjIxOTg4ZDAwYmNmNzlhZjI1ZDViMjljMDk0ZGIyYTIzMTQ2ZDAwM2FmZDQxOTQzZTdhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhZjNjNDIzYTk1ZDlmNWIzMDU0NzU0ZWZhMTUwYWMzOWNkMjk1NTJmZTM2MDI1NzM2MmRmZGVjZWY0MDUzYjQ1JyxcbiAgICAgICAgJ2Y5OGEzZmQ4MzFlYjJiNzQ5YTkzYjBlNmYzNWNmYjQwYzhjZDVhYTY2N2ExNTU4MWJjMmZlZGVkNDk4ZmQ5YzYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4Yzk5YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWEnLFxuICAgICAgICAnNzQ0YjExNTJlYWNiZTVlMzhkY2M4ODc5ODBkYTM4Yjg5NzU4NGE2NWZhMDZjZWRkMmM5MjRmOTdjYmFjNTk5NicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTlkYmY0NmY4Yzk0NzU5YmEyMTI3N2MzMzc4NGY0MTY0NWY3YjQ0ZjZjNTk2YTU4Y2U5MmU2NjYxOTFhYmUzZScsXG4gICAgICAgICdjNTM0YWQ0NDE3NWZiYzMwMGY0ZWE2Y2U2NDgzMDlhMDQyY2U3MzlhNzkxOTc5OGNkODVlMjE2YzRhMzA3ZjZlJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMTNhZGE5NTEwM2M0NTM3MzA1ZTY5MWU3NGU5YTRhOGRkNjQ3ZTcxMWE5NWU3M2NiNjJkYzYwMThjZmQ4N2I4JyxcbiAgICAgICAgJ2UxMzgxN2I0NGVlMTRkZTY2M2JmNGJjODA4MzQxZjMyNjk0OWUyMWE2YTc1YzI1NzA3Nzg0MTliZGFmNTczM2QnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2ZWJhZGZiNjQ4ODU1MDAxNWE4ODUyMmMnLFxuICAgICAgICAnMzBlOTNlODY0ZTY2OWQ4MjIyNGI5NjdjMzAyMGI4ZmE4ZDFlNGUzNTBiNmNiY2M1MzdhNDhiNTc4NDExNjNhMicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTQ4ZGNhZGY1OTkwZTA0OGFhMzg3NGQ0NmFiZWY5ZDcwMTg1OGY5NWRlODA0MWQyYTY4MjhjOTllMjI2MjUxOScsXG4gICAgICAgICdlNDkxYTQyNTM3ZjZlNTk3ZDVkMjhhMzIyNGIxYmMyNWRmOTE1NGVmYmQyZWYxZDJjYmJhMmNhZTUzNDdkNTdlJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3OTYyNDE0NDUwYzc2YzE2ODljN2I0OGY4MjAyZWMzN2ZiMjI0Y2Y1YWMwYmZhMTU3MDMyOGE4YTNkN2M3N2FiJyxcbiAgICAgICAgJzEwMGI2MTBlYzRmZmI0NzYwZDVjMWZjMTMzZWY2ZjZiMTI1MDdhMDUxZjA0YWM1NzYwYWZhNWIyOWRiODM0MzcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4NWExNjk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2EnLFxuICAgICAgICAnZWYwYWZiYjIwNTYyMDU0NDhlMTY1MmM0OGU4MTI3ZmM2MDM5ZTc3YzE1YzIzNzhiN2U3ZDE1YTBkZTI5MzMxMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDNjYzMwYWQ2YjQ4M2U0YmM3OWNlMmM5ZGQ4YmM1NDk5M2U5NDdlYjhkZjc4N2I0NDI5NDNkM2Y3YjUyN2VhZicsXG4gICAgICAgICc4YjM3OGEyMmQ4MjcyNzhkODljNWU5YmU4Zjk1MDhhZTNjMmFkNDYyOTAzNTg2MzBhZmIzNGRiMDRlZWRlMGE0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNjI0ZDg0NzgwNzMyODYwY2UxYzc4ZmNiZmVmZTA4YjJiMjk4MjNkYjkxM2Y2NDkzOTc1YmEwZmY0ODQ3NjEwJyxcbiAgICAgICAgJzY4NjUxY2Y5YjZkYTkwM2UwOTE0NDQ4YzZjZDlkNGNhODk2ODc4ZjUyODJiZTRjOGNjMDZlMmE0MDQwNzg1NzUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZkZjdiNGZkNWZjNjFjZDQnLFxuICAgICAgICAnZjU0MzVhMmJkMmJhZGY3ZDQ4NWE0ZDhiOGRiOWZjY2UzZTFlZjhlMDIwMWU0NTc4YzU0NjczYmMxZGM1ZWExZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTVkOTQ0MTI1NDk0NTA2NGNmMWExYzMzYmJkM2I0OWY4OTY2YzUwOTIxNzFlNjk5ZWYyNThkZmFiODFjMDQ1YycsXG4gICAgICAgICdkNTZlYjMwYjY5NDYzZTcyMzRmNTEzN2I3M2I4NDE3NzQzNDgwMGJhY2ViZmM2ODVmYzM3YmJlOWVmZTQwNzBkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhMWQwZmNmMmVjOWRlNjc1YjYxMjEzNmU1Y2U3MGQyNzFjMjE0MTdjOWQyYjhhYWFhYzEzODU5OWQwNzE3OTQwJyxcbiAgICAgICAgJ2VkZDc3ZjUwYmNiNWEzY2FiMmU5MDczNzMwOTY2N2YyNjQxNDYyYTU0MDcwZjNkNTE5MjEyZDM5YzE5N2E2MjknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVlODI0NWMwNmM3Y2EzNzMzMWNiMzY5ODAnLFxuICAgICAgICAnYTg1NWJhYmFkNWNkNjBjODhiNDMwYTY5ZjUzYTFhN2EzODI4OTE1NDk2NDc5OWJlNDNkMDZkNzdkMzFkYTA2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMTEwOTFkZDk4NjBlOGUyMGVlMTM0NzNjMTE1NWY1ZjY5NjM1ZTM5NDcwNGVhYTc0MDA5NDUyMjQ2Y2ZhOWIzJyxcbiAgICAgICAgJzY2ZGI2NTZmODdkMWYwNGZmZmQxZjA0Nzg4YzA2ODMwODcxZWM1YTY0ZmVlZTY4NWJkODBmMGIxMjg2ZDgzNzQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM0YzFmZDA0ZDMwMWJlODliMzFjMDQ0MmQzZTZhYzI0ODgzOTI4YjQ1YTkzNDA3ODE4NjdkNDIzMmVjMmRiZGYnLFxuICAgICAgICAnOTQxNDY4NWU5N2IxYjU5NTRiZDQ2ZjczMDE3NDEzNmQ1N2YxY2VlYjQ4NzQ0M2RjNTMyMTg1N2JhNzNhYmVlJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMjE5ZWE1ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4ZDYzJyxcbiAgICAgICAgJzRjYjk1OTU3ZTgzZDQwYjBmNzNhZjQ1NDRjY2NmNmIxZjRiMDhkM2MwN2IyN2ZiOGQ4YzI5NjJhNDAwNzY2ZDEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q3Yjg3NDBmNzRhOGZiYWFiMWY2ODNkYjhmNDVkZTI2NTQzYTU0OTBiY2E2MjcwODcyMzY5MTI0NjlhMGI0NDgnLFxuICAgICAgICAnZmE3Nzk2ODEyOGQ5YzkyZWUxMDEwZjMzN2FkNDcxN2VmZjE1ZGI1ZWQzYzA0OWIzNDExZTAzMTVlYWE0NTkzYicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzJkMzFjMjIyZjhmNmYwZWY4NmY3Yzk4ZDNhMzMzNWVhZDViY2QzMmFiZGQ5NDI4OWZlNGQzMDkxYWE4MjRiZicsXG4gICAgICAgICc1ZjMwMzJmNTg5MjE1NmUzOWNjZDNkNzkxNWI5ZTFkYTJlNmRhYzllNmYyNmU5NjExMThkMTRiODQ2MmUxNjYxJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBmODZjYmMxODM0N2I1JyxcbiAgICAgICAgJzhlYzBiYTIzOGI5NmJlYzBjYmRkZGNhZTBhYTQ0MjU0MmVlZTFmZjUwYzk4NmVhNmIzOTg0N2IzY2MwOTJmZjYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlMDc5YWRiMWRmMTg2MDA3NDM1NmEyNWFhMzgyMDZhNmQ3MTZiMmMzZTY3NDUzZDI4NzY5OGJhZDdiMmIyZDYnLFxuICAgICAgICAnOGRjMjQxMmFhZmUzYmU1YzRjNWYzN2UwZWNjNWY5ZjZhNDQ2OTg5YWYwNGM0ZTI1ZWJhYWM0NzllYzFjOGMxZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTZlYzkzZTQ0N2VjODNmMDQ2N2IxODMwMmVlNjIwZjdlNjVkZTMzMTg3NGM5ZGM3MmJmZDg2MTZiYTlkYTZiNScsXG4gICAgICAgICc1ZTQ2MzExNTBlNjJmYjQwZDBlOGMyYTdjYTU4MDRhMzlkNTgxODZhNTBlNDk3MTM5NjI2Nzc4ZTI1YjA2NzRkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYWE1Zjk4MGMyNDVmNmYwMzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5JyxcbiAgICAgICAgJ2Y2NWY1ZDNlMjkyYzJlMDgxOWE1MjgzOTFjOTk0NjI0ZDc4NDg2OWQ3ZTZlYTY3ZmIxODA0MTAyNGVkYzA3ZGMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc4Yzk0MDc1NDRhYzEzMjY5MmVlMTkxMGEwMjQzOTk1OGFlMDQ4NzcxNTEzNDJlYTk2YzRiNmIzNWE0OWY1MScsXG4gICAgICAgICdmM2UwMzE5MTY5ZWI5Yjg1ZDU0MDQ3OTU1MzlhNWU2OGZhMWZiZDU4M2MwNjRkMjQ2MmI2NzVmMTk0YTNkZGI0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0OTRmNGJlMjE5YTFhNzcwMTZkY2Q4Mzg0MzFhZWEwMDAxY2RjOGFlN2E2ZmM2ODg3MjY1NzhkOTcwMjg1N2E1JyxcbiAgICAgICAgJzQyMjQyYTk2OTI4M2E1ZjMzOWJhN2YwNzVlMzZiYTJhZjkyNWNlMzBkNzY3ZWQ2ZTU1ZjRiMDMxODgwZDU2MmMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5YjUnLFxuICAgICAgICAnMjA0YjVkNmY4NDgyMmMzMDdlNGI0YTcxNDA3MzdhZWMyM2ZjNjNiNjViMzVmODZhMTAwMjZkYmQyZDg2NGU2YicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzQxOTE2MzY1YWJiMmI1ZDA5MTkyZjVmMmRiZWFmZWMyMDhmMDIwZjEyNTcwYTE4NGRiYWRjM2U1ODU5NTk5NycsXG4gICAgICAgICc0ZjE0MzUxZDAwODdlZmE0OWQyNDViMzI4OTg0OTg5ZDVjYWY5NDUwZjM0YmZjMGVkMTZlOTZiNThmYTk5MTMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg0MWQ2MDYzYTU4NmZhNDc1YTcyNDYwNGRhMDNiYzViOTJhMmUwZDJlMGEzNmFjZmU0YzczYTU1MTQ3NDI4ODEnLFxuICAgICAgICAnNzM4NjdmNTljMDY1OWU4MTkwNGY5YTFjNzU0MzY5OGU2MjU2MmQ2NzQ0YzE2OWNlN2EzNmRlMDFhOGQ2MTU0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODliZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1JyxcbiAgICAgICAgJzM5ZjIzZjM2NjgwOTA4NWJlZWJmYzcxMTgxMzEzNzc1YTk5YzlhZWQ3ZDhiYTM4YjE2MTM4NGM3NDYwMTI4NjUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM2ZTQ2NDFhNTM5NDhmZDQ3NmMzOWY4YTk5ZmQ5NzRlNWVjMDc1NjRiNTMxNWQ4YmY5OTQ3MWJjYTBlZjJmNjYnLFxuICAgICAgICAnZDI0MjRiMWIxYWJlNGViODE2NDIyN2IwODVjOWFhOTQ1NmVhMTM0OTNmZDU2M2UwNmZkNTFjZjU2OTRjNzhmYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzM2NTgxZWE3YmZiYmIyOTBjMTkxYTJmNTA3YTQxY2Y1NjQzODQyMTcwZTkxNGZhZWFiMjdjMmM1NzlmNzI2JyxcbiAgICAgICAgJ2VhZDEyMTY4NTk1ZmUxYmU5OTI1MjEyOWI2ZTU2YjMzOTFmN2FiMTQxMGNkMWUwZWYzZGNkY2FiZDJmZGEyMjQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhhYjg5ODE2ZGFkZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGUnLFxuICAgICAgICAnNmZkY2VmMDlmMmY2ZDBhMDQ0ZTY1NGFlZjYyNDEzNmY1MDNkNDU5YzNlODk4NDU4NThhNDdhOTEyOWNkZDI0ZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMWUzM2YxYTc0NmM5YzU3NzgxMzMzNDRkOTI5OWZjYWEyMGIwOTM4ZThhY2ZmMjU0NGJiNDAyODRiOGM1ZmI5NCcsXG4gICAgICAgICc2MDY2MDI1N2RkMTFiM2FhOWM4ZWQ2MThkMjRlZGZmMjMwNmQzMjBmMWQwMzAxMGUzM2E3ZDIwNTdmM2IzYjYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg1YjdjMWRjYjNjZWMxYjdlZTdmMzBkZWQ3OWRkMjBhMGVkMWY0Y2MxOGNiY2ZjZmE0MTAzNjFmZDhmMDhmMzEnLFxuICAgICAgICAnM2Q5OGE5Y2RkMDI2ZGQ0M2YzOTA0OGYyNWE4ODQ3ZjRmY2FmYWQxODk1ZDdhNjMzYzZmZWQzYzM1ZTk5OTUxMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEzYjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MScsXG4gICAgICAgICdiNGM0ZmU5OWM3NzVhNjA2ZTJkODg2MjE3OTEzOWZmZGE2MWRjODYxYzAxOWU1NWNkMjg3NmViMmEyN2Q4NGInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2EwYjFjYWUwNmIwYTg0N2EzZmVhNmU2NzFhYWY4YWRmZGZlNThjYTJmNzY4MTA1YzgwODJiMmU0NDlmY2UyNTInLFxuICAgICAgICAnYWU0MzQxMDJlZGRlMDk1OGVjNGIxOWQ5MTdhNmEyOGU2YjcyZGExODM0YWZmMGU2NTBmMDQ5NTAzYTI5NmNmMicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGU4Y2VhZmI5YjNlOWExMzZkYzdmZjY3ZTg0MDI5NWI0OTlkZmIzYjIxMzNlNGJhMTEzZjJlNGMwZTEyMWU1JyxcbiAgICAgICAgJ2NmMjE3NDExOGM4YjZkN2E0YjQ4ZjZkNTM0Y2U1Yzc5NDIyYzA4NmE2MzQ2MDUwMmI4MjdjZTYyYTMyNjY4M2MnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QyNGE0NGUwNDdlMTliNmY1YWZiODFjN2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2InLFxuICAgICAgICAnNmZiOGQ1NTkxYjQ2NmY4ZmM2M2RiNTBmMWMwZjFjNjkwMTNmOTk2ODg3YjgyNDRkMmNkZWM0MTdhZmVhOGZhMycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWEwMTYwNmE3YTZjOWNkZDI0OWZkZmNmYWNiOTk1ODQwMDFlZGQyOGFiYmFiNzdiNTEwNGU5OGU4ZTNiMzVkNCcsXG4gICAgICAgICczMjJhZjQ5MDhjNzMxMmIwY2ZiZmUzNjlmN2E3YjNjZGI3ZDQ0OTRiYzI4MjM3MDBjZmQ2NTIxODhhM2VhOThkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhZjhhZGRiZjJiNjYxYzhhNmM2MzI4NjU1ZWI5NjY1MTI1MjAwN2Q4YzVlYTMxYmU0YWQxOTZkZThjZTIxMzFmJyxcbiAgICAgICAgJzY3NDllNjdjMDI5Yjg1ZjUyYTAzNGVhZmQwOTY4MzZiMjUyMDgxODY4MGUyNmFjOGYzZGZiY2RiNzE3NDk3MDAnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzYWUxOTc0NTY2Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJmMGUzNDUwZjQ1ODg5JyxcbiAgICAgICAgJzJhZWFiZTdlNDUzMTUxMDExNjIxN2YwN2JmNGQwNzMwMGRlOTdlNDg3NGY4MWY1MzM0MjBhNzJlZWIwYmQ2YTQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzU5MWVlMzU1MzEzZDk5NzIxY2Y2OTkzZmZlZDFlM2UzMDE5OTNmZjNlZDI1ODgwMjA3NWVhOGNlZDM5N2UyNDYnLFxuICAgICAgICAnYjBlYTU1OGExMTNjMzBiZWE2MGZjNDc3NTQ2MGM3OTAxZmYwYjA1M2QyNWNhMmJkZWVlOThmMWE0YmU1ZDE5NicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTEzOTZkNTVmZGE1NGM0OWYxOWFhOTczMThkOGRhNjFmYTg1ODRlNDdiMDg0OTQ1MDc3Y2YwMzI1NWI1Mjk4NCcsXG4gICAgICAgICc5OThjNzRhOGNkNDVhYzAxMjg5ZDU4MzNhN2JlYjQ3NDRmZjUzNmIwMWIyNTdiZTRjNTc2N2JlYTkzZWE1N2E0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUwYzQwYjhkY2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhJyxcbiAgICAgICAgJ2IyMjg0Mjc5OTk1YTM0ZTJmOWQ0ZGU3Mzk2ZmMxOGI4MGY5YjhiOWZkZDI3MGY2NjYxZjc5Y2E0YzgxYmQyNTcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2NjODcwNGI4YTYwYTBkZWZhM2E5OWE3Mjk5ZjJlOWMzZmJjMzk1YWZiMDRhYzA3ODQyNWVmOGExNzkzY2MwMzAnLFxuICAgICAgICAnYmRkNDYwMzlmZWVkMTc4ODFkMWUwODYyZGIzNDdmOGNmMzk1Yjc0ZmM0YmNkYzRlOTQwYjc0ZTNhYzFmMWIxMycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzUzM2U0ZjdlYTg1NTVhYWNkOTc3N2FjNWNhZDI5Yjk3ZGQ0ZGVmY2NjNTNlZTdlYTIwNDExOWIyODg5YjE5NycsXG4gICAgICAgICc2ZjBhMjU2YmM1ZWZkZjQyOWEyZmI2MjQyZjFhNDNhMmQ5YjkyNWJiNGE0YjNhMjZiYjhlMGY0NWViNTk2MDk2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjMTRmOGYyY2NiMjdkNmYxMDlmNmQwOGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1OTMnLFxuICAgICAgICAnYzM1OWQ2OTIzYmIzOThmN2ZkNDQ3M2UxNmZlMWMyODQ3NWI3NDBkZDA5ODA3NWU2YzBlODY0OTExM2RjM2EzOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTZjYmMzMDQ2YmM2YTQ1MGJhYzI0Nzg5ZmExNzExNWE0Yzk3MzllZDc1ZjhmMjFjZTQ0MWY3MmUwYjkwZTZlZicsXG4gICAgICAgICcyMWFlN2Y0NjgwZTg4OWJiMTMwNjE5ZTJjMGY5NWEzNjBjZWI1NzNjNzA2MDMxMzk4NjJhZmQ2MTdmYTliOWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM0N2Q2ZDlhMDJjNDg5MjdlYmZiODZjMTM1OWIxY2FmMTMwYTNjMDI2N2QxMWNlNjM0NGIzOWY5OWQ0M2NjMzgnLFxuICAgICAgICAnNjBlYTdmNjFhMzUzNTI0ZDFjOTg3ZjZlY2VjOTJmMDg2ZDU2NWFiNjg3ODcwY2IxMjY4OWZmMWUzMWM3NDQ0OCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdiMWJmMzFjOGNmODU1ZWY3NDM3YjcyNjU2YScsXG4gICAgICAgICc0OWI5NjcxNWFiNjg3OGE3OWU3OGYwN2NlNTY4MGM1ZDY2NzMwNTFiNDkzNWJkODk3ZmVhODI0Yjc3ZGMyMDhhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNDA3NDdjYzlkMDEyY2IxYTEzYjgxNDgzMDljNmRlN2VjMjVkNjk0NWQ2NTcxNDZiOWQ1OTk0YjhmZWIxMTExJyxcbiAgICAgICAgJzVjYTU2MDc1M2JlMmExMmZjNmRlNmNhZjJjYjQ4OTU2NWRiOTM2MTU2Yjk1MTRlMWJiNWU4MzAzN2UwZmEyZDQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRlNDJjOGVjODJjOTk3OThjY2YzYTYxMGJlODcwZTc4MzM4YzdmNzEzMzQ4YmQzNGM4MjAzZWY0MDM3ZjM1MDInLFxuICAgICAgICAnNzU3MWQ3NGVlNWUwZmI5MmE3YThiMzNhMDc3ODMzNDFhNTQ5MjE0NGNjNTRiY2M0MGE5NDQ3MzY5MzYwNjQzNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIyMzZkMjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYScsXG4gICAgICAgICdiZTUyZDEwN2JjZmEwOWQ4YmNiOTczNmE4MjhjZmE3ZmFjOGRiMTdiZjdhNzZhMmM0MmFkOTYxNDA5MDE4Y2Y3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjZWUzMWNiZjdlMzRlYzM3OWQ5NGZiODE0ZDNkNzc1YWQ5NTQ1OTVkMTMxNGJhODg0Njk1OWUzZTgyZjc0ZTI2JyxcbiAgICAgICAgJzhmZDY0YTE0YzA2YjU4OWMyNmI5NDdhZTJiY2Y2YmZhMDE0OWVmMGJlMTRlZDRkODBmNDQ4YTAxYzQzYjFjNmQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2I0ZjllYWVhMDliNjkxNzYxOWY2ZWE2YTRlYjU0NjRlZmRkYjU4ZmQ0NWIxZWJlZmNkYzFhMDFkMDhiNDc5ODYnLFxuICAgICAgICAnMzllNWM5OTI1YjVhNTRiMDc0MzNhNGYxOGM2MTcyNmY4YmIxMzFjMDEyY2E1NDJlYjI0YThhYzA3MjAwNjgyYScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2MxYjc3OTA3NzkyZWJjYzYwZScsXG4gICAgICAgICc2MmRmYWYwN2EwZjc4ZmViMzBlMzBkNjI5NTg1M2NlMTg5ZTEyNzc2MGFkNmNmN2ZhZTE2NGUxMjJhMjA4ZDU0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ODQ1NzUyNDgyMGZhNjVhNGY4ZDM1ZWI2OTMwODU3YzAwMzJhY2MwYTRhMmRlNDIyMjMzZWVkYTg5NzYxMmM0JyxcbiAgICAgICAgJzI1YTc0OGFiMzY3OTc5ZDk4NzMzYzM4YTFmYTFjMmU3ZGM2Y2MwN2RiMmQ2MGE5YWU3YTc2YWFhNDliZDBmNzcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RmZWVlZjE4ODExMDFmMmNiMTE2NDRmM2EyYWZkZmMyMDQ1ZTE5OTE5MTUyOTIzZjM2N2ExNzY3YzExY2NlZGEnLFxuICAgICAgICAnZWNmYjcwNTZjZjFkZTA0MmY5NDIwYmFiMzk2NzkzYzBjMzkwYmRlNzRiNGJiZGZmMTZhODNhZTA5YTlhNzUxNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNiYzYwNjJjZWQzNmM4MmRmODNiOGZhZTg1OScsXG4gICAgICAgICdjZDQ1MGVjMzM1NDM4OTg2ZGZlZmExMGM1N2ZlYTliY2M1MjFhMDk1OWIyZDgwYmJmNzRiMTkwZGNhNzEyZDEwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNzU2MDVkNTkxMDJhNWEyNjg0NTAwZDNiOTkxZjJlM2YzYzg4YjkzMjI1NTQ3MDM1YWYyNWFmNjZlMDQ1NDFmJyxcbiAgICAgICAgJ2Y1YzU0NzU0YThmNzFlZTU0MGI5YjQ4NzI4NDczZTMxNGY3MjlhYzUzMDhiMDY5MzgzNjA5OTBlMmJmYWQxMjUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ViOTg2NjBmNGM0ZGZhYTA2YTJiZTQ1M2Q1MDIwYmM5OWEwYzJlNjBhYmUzODg0NTdkZDQzZmVmYjFlZDYyMGMnLFxuICAgICAgICAnNmNiOWE4ODc2ZDljYjg1MjA2MDlhZjNhZGQyNmNkMjBhMGE3Y2Q4YTk0MTExMzFjZTg1ZjQ0MTAwMDk5MjIzZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTNlODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNiOGRiYTk0MicsXG4gICAgICAgICdmZWY1YTNjNjgwNTlhNmRlYzVkNjI0MTE0YmYxZTkxYWFjMmI5ZGE1NjhkNmFiZWIyNTcwZDU1NjQ2YjhhZGYxJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlZTE2MzAyNmU5ZmQ2ZmUwMTdjMzhmMDZhNWJlNmZjMTI1NDI0YjM3MWNlMjcwOGU3YmY0NDkxNjkxZTU3NjRhJyxcbiAgICAgICAgJzFhY2IyNTBmMjU1ZGQ2MWM0M2Q5NGNjYzY3MGQwZjU4ZjQ5YWUzZmExNWI5NjYyM2U1NDMwZGEwYWQ2YzYyYjInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2IyNjhmNWVmOWFkNTFlNGQ3OGRlM2E3NTBjMmRjODliMWU2MjZkNDM1MDU4Njc5OTk5MzJlNWRiMzNhZjNkODAnLFxuICAgICAgICAnNWYzMTBkNGIzYzk5YjllYmIxOWY3N2Q0MWMxZGVlMDE4Y2YwZDM0ZmQ0MTkxNjE0MDAzZTk0NWExMjE2ZTQyMycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEzYmY3ZmZkYmE5M2M0NzUwZCcsXG4gICAgICAgICc0MzgxMzZkNjAzZTg1OGEzYTVjNDQwYzM4ZWNjYmFkZGMxZDI5NDIxMTRlMmVkZGQ0NzQwZDA5OGNlZDFmMGQ4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZDhiOTg1NWM3YzA1MmEzNDE0NmZkMjBmZmI2NThiZWE0YjlmNjllMGQ4MjVlYmVjMTZlOGMzY2UyYjUyNmExJyxcbiAgICAgICAgJ2NkYjU1OWVlZGMyZDc5ZjkyNmJhZjQ0ZmI4NGVhNGQ0NGJjZjUwZmVlNTFkN2NlYjMwZTJlN2Y0NjMwMzY3NTgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUyZGIwYjUzODRkZmJmMDViZmE5ZDQ3MmQ3YWUyNmRmZTRiODUxY2VjYTkxYjFlYmE1NDI2MzE4MGRhMzJiNjMnLFxuICAgICAgICAnYzNiOTk3ZDA1MGVlNWQ0MjNlYmFmNjZhNmRiOWY1N2IzMTgwYzkwMjg3NTY3OWRlOTI0YjY5ZDg0YTdiMzc1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNjJmOTQ5MGQzZDUxZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyJyxcbiAgICAgICAgJzZkODlhZDdiYTQ4NzZiMGIyMmMyY2EyODBjNjgyODYyZjM0MmM4NTkxZjFkYWY1MTcwZTA3YmZkOWNjYWZhN2QnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzdmMzBlYTI0NzZiMzk5YjQ5NTc1MDljODhmNzdkMDE5MWFmYTJmZjVjYjdiMTRmZDZkOGU3ZDY1YWFhYjExOTMnLFxuICAgICAgICAnY2E1ZWY3ZDRiMjMxYzk0YzNiMTUzODlhNWY2MzExZTlkYWZmN2JiNjdiMTAzZTk4ODBlZjRiZmY2MzdhY2FlYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTA5OGZmMWUxZDlmMTRmYjQ2YTIxMGZhZGE2YzkwM2ZlZjBmYjdiNGExZGQxZDlhYzYwYTAzNjE4MDBiN2EwMCcsXG4gICAgICAgICc5NzMxMTQxZDgxZmM4ZjgwODRkMzdjNmU3NTQyMDA2YjNlZTFiNDBkNjBkZmU1MzYyYTViMTMyZmQxN2RkYzAnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3OGFkNTgnLFxuICAgICAgICAnZWUxODQ5ZjUxM2RmNzFlMzJlZmMzODk2ZWUyODI2MGM3M2JiODA1NDdhZTIyNzViYTQ5NzIzNzc5NGM4NzUzYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTJjYjc0ZmRkYzhlOWZiY2QwNzZlZWYyYTdjNzJiMGNlMzdkNTBmMDgyNjlkZmMwNzRiNTgxNTUwNTQ3YTRmNycsXG4gICAgICAgICdkM2FhMmVkNzFjOWRkMjI0N2E2MmRmMDYyNzM2ZWIwYmFkZGVhOWUzNjEyMmQyYmU4NjQxYWJjYjAwNWNjNGE0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NDM4NDQ3NTY2ZDRkN2JlZGFkYzI5OTQ5NmFiMzU3NDI2MDA5YTM1ZjIzNWNiMTQxYmUwZDk5Y2QxMGFlM2E4JyxcbiAgICAgICAgJ2M0ZTEwMjA5MTY5ODBhNGRhNWQwMWFjNWU2YWQzMzA3MzRlZjBkNzkwNjYzMWM0ZjIzOTA0MjZiMmVkZDc5MWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2UnLFxuICAgICAgICAnNjcxNjNlOTAzMjM2Mjg5Zjc3NmYyMmMyNWZiOGEzYWZjMTczMmYyYjg0YjRlOTVkYmRhNDdhZTVhMDg1MjY0OScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnM2ZhZDNmYTg0Y2FmMGYzNGYwZjg5YmZkMmRjZjU0ZmMxNzVkNzY3YWVjM2U1MDY4NGYzYmE0YTRiZjVmNjgzZCcsXG4gICAgICAgICdjZDFiYzdjYjZjYzQwN2JiMmYwY2E2NDdjNzE4YTczMGNmNzE4NzJlN2QwZDJhNTNmYTIwZWZjZGZlNjE4MjYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzY3NGYyNjAwYTMwMDdhMDA1NjhjMWE3Y2UwNWQwODE2YzFmYjg0YmYxMzcwNzk4ZjFjNjk1MzJmYWViMWE4NmInLFxuICAgICAgICAnMjk5ZDIxZjk0MTNmMzNiM2VkZjQzYjI1NzAwNDU4MGI3MGRiNTdkYTBiMTgyMjU5ZTA5ZWVjYzY5ZTBkMzhhNScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDMyZjRkYTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZicsXG4gICAgICAgICdmOTQyOWU3MzhiOGU1M2I5NjhlOTkwMTZjMDU5NzA3NzgyZTE0ZjQ1MzUzNTlkNTgyZmM0MTY5MTBiM2VlYTg3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMGU0ZTY3MDQzNTM4NTU1NmU1OTM2NTcxMzU4NDVkMzZmYmI2OTMxZjcyYjA4Y2IxZWQ5NTRmMWUzY2UzZmY2JyxcbiAgICAgICAgJzQ2MmY5YmNlNjE5ODk4NjM4NDk5MzUwMTEzYmJjOWIxMGE4NzhkMzVkYTcwNzQwZGM2OTVhNTU5ZWI4OGRiN2InLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2JlMjA2MjAwM2M1MWNjMzAwNDY4MjkwNDMzMGU0ZGVlN2YzZGNkMTBiMDFlNTgwYmYxOTcxYjA0ZDRjYWQyOTcnLFxuICAgICAgICAnNjIxODhiYzQ5ZDYxZTU0Mjg1NzNkNDhhNzRlMWM2NTViMWM2MTA5MDkwNTY4MmEwZDU1NThlZDcyZGNjYjliYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFjYjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YScsXG4gICAgICAgICc3YzEwZGZiMTY0YzM0MjVmNWM3MWEzZjlkNzk5MjAzOGYxMDY1MjI0ZjcyYmI5ZDFkOTAyYTZkMTMwMzdiNDdjJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiMDE1ZjgwNDRmNWZjYmRjZjIxY2EyNmQ2YzM0ZmI4MTk3ODI5MjA1YzdiN2QyYTdjYjY2NDE4YzE1N2IxMTJjJyxcbiAgICAgICAgJ2FiOGMxZTA4NmQwNGU4MTM3NDRhNjU1YjJkZjhkNWY4M2IzY2RjNmZhYTMwODhjMWQzYWVhMTQ1NGUzYTFkNWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q1ZTllMWRhNjQ5ZDk3ZDg5ZTQ4NjgxMTdhNDY1YTNhNGY4YTE4ZGU1N2ExNDBkMzZiM2YyYWYzNDFhMjFiNTInLFxuICAgICAgICAnNGNiMDQ0MzdmMzkxZWQ3MzExMWExM2NjMWQ0ZGQwZGIxNjkzNDY1YzIyNDA0ODBkODk1NWU4NTkyZjI3NDQ3YScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDNhZTQxMDQ3ZGQ3Y2EwNjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYicsXG4gICAgICAgICdiZDFhZWIyMWFkMjJlYmIyMmExMGYwMzAzNDE3YzZkOTY0ZjhjZGQ3ZGYwYWNhNjE0YjEwZGMxNGQxMjVhYzQ2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0NjNlMjc2M2Q4ODVmOTU4ZmM2NmNkZDIyODAwZjBhNDg3MTk3ZDBhODJlMzc3YjQ5ZjgwYWY4N2M4OTdiMDY1JyxcbiAgICAgICAgJ2JmZWZhY2RiMGU1ZDBmZDdkZjNhMzExYTk0ZGUwNjJiMjZiODBjNjFmYmM5NzUwOGI3OTk5MjY3MWVmN2NhN2YnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc5ODVmZGZkMTI3YzA1NjdjNmY1M2VjMWJiNjNlYzMxNThlNTk3YzQwYmZlNzQ3YzgzY2RkZmM5MTA2NDE5MTcnLFxuICAgICAgICAnNjAzYzEyZGFmM2Q5ODYyZWYyYjI1ZmUxZGUyODlhZWQyNGVkMjkxZTBlYzY3MDg3MDNhNWJkNTY3ZjMyZWQwMycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzRhMWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4M2QyZDBlZDVmZjE1NDNkYTc3MDNlOScsXG4gICAgICAgICdjYzYxNTdlZjE4YzljNjNjZDYxOTNkODM2MzFiYmVhMDA5M2UwOTY4OTQyZThjMzNkNTczN2ZkNzkwZTBkYjA4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMDY4MmE1MDcwMzM3NWY2MDJkNDE2NjY0YmExOWI3ZmM5YmFiNDJjNzI3NDc0NjNhNzFkMDg5NmIyMmY2ZGEzJyxcbiAgICAgICAgJzU1M2UwNGY2YjAxOGI0ZmE2YzhmMzllN2YzMTFkMzE3NjI5MGQwZTBmMTljYTczZjE3NzE0ZDk5NzdhMjJmZjgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzllMjE1OGYwZDdjMGQ1ZjI2YzM3OTFlZmVmYTc5NTk3NjU0ZTdhMmIyNDY0ZjUyYjFlZTZjMTM0Nzc2OWVmNTcnLFxuICAgICAgICAnNzEyZmNkZDFiOTA1M2YwOTAwM2EzNDgxZmE3NzYyZTlmZmQ3YzhlZjM1YTM4NTA5ZTJmYmYyNjI5MDA4MzczJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzZlMjY5ODlhNDNjOWNmZWJhNDAyOWMyMDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2JyxcbiAgICAgICAgJ2VkOGNjOWQwNGIyOWViODc3ZDI3MGI0ODc4ZGM0M2MxOWFlZmQzMWY0ZWVlMDllZTdiNDc4MzRjMWZhNGIxYzMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc1ZDQ2ZWZlYTM3NzFlNmU2OGFiYjg5YTEzYWQ3NDdlY2YxODkyMzkzZGZjNGYxYjcwMDQ3ODhjNTAzNzRkYTgnLFxuICAgICAgICAnOTg1MjM5MGE5OTUwNzY3OWZkMGI4NmZkMmIzOWE4NjhkN2VmYzIyMTUxMzQ2ZTFhM2NhNDcyNjU4NmE2YmVkOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODA5YTIwYzY3ZDY0OTAwZmZiNjk4YzRjODI1ZjZkNWYyMzEwZmIwNDUxYzg2OTM0NWI3MzE5ZjY0NTYwNTcyMScsXG4gICAgICAgICc5ZTk5NDk4MGQ5OTE3ZTIyYjc2YjA2MTkyN2ZhMDQxNDNkMDk2Y2NjNTQ5NjNlNmE1ZWJmYTVmM2Y4ZTI4NmMxJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxYjM4OTAzYTQzZjdmMTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2MzQ0NmY5NzJjMTgwJyxcbiAgICAgICAgJzQwMzZlZGM5MzFhNjBhZTg4OTM1M2Y3N2ZkNTNkZTRhMjcwOGIyNmI2ZjVkYTcyYWQzMzk0MTE5ZGFmNDA4ZjknLFxuICAgICAgXSxcbiAgICBdLFxuICB9LFxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gZXhwb3J0cztcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgbWluQXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIG1pblV0aWxzID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWNyeXB0by11dGlscycpO1xuXG51dGlscy5hc3NlcnQgPSBtaW5Bc3NlcnQ7XG51dGlscy50b0FycmF5ID0gbWluVXRpbHMudG9BcnJheTtcbnV0aWxzLnplcm8yID0gbWluVXRpbHMuemVybzI7XG51dGlscy50b0hleCA9IG1pblV0aWxzLnRvSGV4O1xudXRpbHMuZW5jb2RlID0gbWluVXRpbHMuZW5jb2RlO1xuXG4vLyBSZXByZXNlbnQgbnVtIGluIGEgdy1OQUYgZm9ybVxuZnVuY3Rpb24gZ2V0TkFGKG51bSwgdywgYml0cykge1xuICB2YXIgbmFmID0gbmV3IEFycmF5KE1hdGgubWF4KG51bS5iaXRMZW5ndGgoKSwgYml0cykgKyAxKTtcbiAgbmFmLmZpbGwoMCk7XG5cbiAgdmFyIHdzID0gMSA8PCAodyArIDEpO1xuICB2YXIgayA9IG51bS5jbG9uZSgpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbmFmLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHo7XG4gICAgdmFyIG1vZCA9IGsuYW5kbG4od3MgLSAxKTtcbiAgICBpZiAoay5pc09kZCgpKSB7XG4gICAgICBpZiAobW9kID4gKHdzID4+IDEpIC0gMSlcbiAgICAgICAgeiA9ICh3cyA+PiAxKSAtIG1vZDtcbiAgICAgIGVsc2VcbiAgICAgICAgeiA9IG1vZDtcbiAgICAgIGsuaXN1Ym4oeik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHogPSAwO1xuICAgIH1cblxuICAgIG5hZltpXSA9IHo7XG4gICAgay5pdXNocm4oMSk7XG4gIH1cblxuICByZXR1cm4gbmFmO1xufVxudXRpbHMuZ2V0TkFGID0gZ2V0TkFGO1xuXG4vLyBSZXByZXNlbnQgazEsIGsyIGluIGEgSm9pbnQgU3BhcnNlIEZvcm1cbmZ1bmN0aW9uIGdldEpTRihrMSwgazIpIHtcbiAgdmFyIGpzZiA9IFtcbiAgICBbXSxcbiAgICBbXSxcbiAgXTtcblxuICBrMSA9IGsxLmNsb25lKCk7XG4gIGsyID0gazIuY2xvbmUoKTtcbiAgdmFyIGQxID0gMDtcbiAgdmFyIGQyID0gMDtcbiAgdmFyIG04O1xuICB3aGlsZSAoazEuY21wbigtZDEpID4gMCB8fCBrMi5jbXBuKC1kMikgPiAwKSB7XG4gICAgLy8gRmlyc3QgcGhhc2VcbiAgICB2YXIgbTE0ID0gKGsxLmFuZGxuKDMpICsgZDEpICYgMztcbiAgICB2YXIgbTI0ID0gKGsyLmFuZGxuKDMpICsgZDIpICYgMztcbiAgICBpZiAobTE0ID09PSAzKVxuICAgICAgbTE0ID0gLTE7XG4gICAgaWYgKG0yNCA9PT0gMylcbiAgICAgIG0yNCA9IC0xO1xuICAgIHZhciB1MTtcbiAgICBpZiAoKG0xNCAmIDEpID09PSAwKSB7XG4gICAgICB1MSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG04ID0gKGsxLmFuZGxuKDcpICsgZDEpICYgNztcbiAgICAgIGlmICgobTggPT09IDMgfHwgbTggPT09IDUpICYmIG0yNCA9PT0gMilcbiAgICAgICAgdTEgPSAtbTE0O1xuICAgICAgZWxzZVxuICAgICAgICB1MSA9IG0xNDtcbiAgICB9XG4gICAganNmWzBdLnB1c2godTEpO1xuXG4gICAgdmFyIHUyO1xuICAgIGlmICgobTI0ICYgMSkgPT09IDApIHtcbiAgICAgIHUyID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgbTggPSAoazIuYW5kbG4oNykgKyBkMikgJiA3O1xuICAgICAgaWYgKChtOCA9PT0gMyB8fCBtOCA9PT0gNSkgJiYgbTE0ID09PSAyKVxuICAgICAgICB1MiA9IC1tMjQ7XG4gICAgICBlbHNlXG4gICAgICAgIHUyID0gbTI0O1xuICAgIH1cbiAgICBqc2ZbMV0ucHVzaCh1Mik7XG5cbiAgICAvLyBTZWNvbmQgcGhhc2VcbiAgICBpZiAoMiAqIGQxID09PSB1MSArIDEpXG4gICAgICBkMSA9IDEgLSBkMTtcbiAgICBpZiAoMiAqIGQyID09PSB1MiArIDEpXG4gICAgICBkMiA9IDEgLSBkMjtcbiAgICBrMS5pdXNocm4oMSk7XG4gICAgazIuaXVzaHJuKDEpO1xuICB9XG5cbiAgcmV0dXJuIGpzZjtcbn1cbnV0aWxzLmdldEpTRiA9IGdldEpTRjtcblxuZnVuY3Rpb24gY2FjaGVkUHJvcGVydHkob2JqLCBuYW1lLCBjb21wdXRlcikge1xuICB2YXIga2V5ID0gJ18nICsgbmFtZTtcbiAgb2JqLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uIGNhY2hlZFByb3BlcnR5KCkge1xuICAgIHJldHVybiB0aGlzW2tleV0gIT09IHVuZGVmaW5lZCA/IHRoaXNba2V5XSA6XG4gICAgICB0aGlzW2tleV0gPSBjb21wdXRlci5jYWxsKHRoaXMpO1xuICB9O1xufVxudXRpbHMuY2FjaGVkUHJvcGVydHkgPSBjYWNoZWRQcm9wZXJ0eTtcblxuZnVuY3Rpb24gcGFyc2VCeXRlcyhieXRlcykge1xuICByZXR1cm4gdHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJyA/IHV0aWxzLnRvQXJyYXkoYnl0ZXMsICdoZXgnKSA6XG4gICAgYnl0ZXM7XG59XG51dGlscy5wYXJzZUJ5dGVzID0gcGFyc2VCeXRlcztcblxuZnVuY3Rpb24gaW50RnJvbUxFKGJ5dGVzKSB7XG4gIHJldHVybiBuZXcgQk4oYnl0ZXMsICdoZXgnLCAnbGUnKTtcbn1cbnV0aWxzLmludEZyb21MRSA9IGludEZyb21MRTtcblxuIiwiKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFV0aWxzXG4gIGZ1bmN0aW9uIGFzc2VydCAodmFsLCBtc2cpIHtcbiAgICBpZiAoIXZhbCkgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xuICB9XG5cbiAgLy8gQ291bGQgdXNlIGBpbmhlcml0c2AgbW9kdWxlLCBidXQgZG9uJ3Qgd2FudCB0byBtb3ZlIGZyb20gc2luZ2xlIGZpbGVcbiAgLy8gYXJjaGl0ZWN0dXJlIHlldC5cbiAgZnVuY3Rpb24gaW5oZXJpdHMgKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGU7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKTtcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gIH1cblxuICAvLyBCTlxuXG4gIGZ1bmN0aW9uIEJOIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChCTi5pc0JOKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgdGhpcy53b3JkcyA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgLy8gUmVkdWN0aW9uIGNvbnRleHRcbiAgICB0aGlzLnJlZCA9IG51bGw7XG5cbiAgICBpZiAobnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gJ2xlJyB8fCBiYXNlID09PSAnYmUnKSB7XG4gICAgICAgIGVuZGlhbiA9IGJhc2U7XG4gICAgICAgIGJhc2UgPSAxMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdChudW1iZXIgfHwgMCwgYmFzZSB8fCAxMCwgZW5kaWFuIHx8ICdiZScpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJOO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQk4gPSBCTjtcbiAgfVxuXG4gIEJOLkJOID0gQk47XG4gIEJOLndvcmRTaXplID0gMjY7XG5cbiAgdmFyIEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5CdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBCdWZmZXIgPSB3aW5kb3cuQnVmZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gIH1cblxuICBCTi5pc0JOID0gZnVuY3Rpb24gaXNCTiAobnVtKSB7XG4gICAgaWYgKG51bSBpbnN0YW5jZW9mIEJOKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVtICE9PSBudWxsICYmIHR5cGVvZiBudW0gPT09ICdvYmplY3QnICYmXG4gICAgICBudW0uY29uc3RydWN0b3Iud29yZFNpemUgPT09IEJOLndvcmRTaXplICYmIEFycmF5LmlzQXJyYXkobnVtLndvcmRzKTtcbiAgfTtcblxuICBCTi5tYXggPSBmdW5jdGlvbiBtYXggKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA+IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5taW4gPSBmdW5jdGlvbiBtaW4gKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA8IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXROdW1iZXIobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXRBcnJheShudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBiYXNlID0gMTY7XG4gICAgfVxuICAgIGFzc2VydChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KTtcblxuICAgIG51bWJlciA9IG51bWJlci50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICBzdGFydCsrO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0IDwgbnVtYmVyLmxlbmd0aCkge1xuICAgICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICAgIHRoaXMuX3BhcnNlSGV4KG51bWJlciwgc3RhcnQsIGVuZGlhbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wYXJzZUJhc2UobnVtYmVyLCBiYXNlLCBzdGFydCk7XG4gICAgICAgIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgICAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0TnVtYmVyID0gZnVuY3Rpb24gX2luaXROdW1iZXIgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDB4NDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgbnVtYmVyICYgMHgzZmZmZmZmIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPCAweDEwMDAwMDAwMDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobnVtYmVyIDwgMHgyMDAwMDAwMDAwMDAwMCk7IC8vIDIgXiA1MyAodW5zYWZlKVxuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZixcbiAgICAgICAgMVxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICAvLyBSZXZlcnNlIHRoZSBieXRlc1xuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXRBcnJheSA9IGZ1bmN0aW9uIF9pbml0QXJyYXkgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgLy8gUGVyaGFwcyBhIFVpbnQ4QXJyYXlcbiAgICBhc3NlcnQodHlwZW9mIG51bWJlci5sZW5ndGggPT09ICdudW1iZXInKTtcbiAgICBpZiAobnVtYmVyLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbChudW1iZXIubGVuZ3RoIC8gMyk7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMSwgaiA9IDA7IGkgPj0gMDsgaSAtPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgLSAxXSA8PCA4KSB8IChudW1iZXJbaSAtIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpICsgMV0gPDwgOCkgfCAobnVtYmVyW2kgKyAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUhleDRCaXRzIChzdHJpbmcsIGluZGV4KSB7XG4gICAgdmFyIGMgPSBzdHJpbmcuY2hhckNvZGVBdChpbmRleCk7XG4gICAgLy8gJ0EnIC0gJ0YnXG4gICAgaWYgKGMgPj0gNjUgJiYgYyA8PSA3MCkge1xuICAgICAgcmV0dXJuIGMgLSA1NTtcbiAgICAvLyAnYScgLSAnZidcbiAgICB9IGVsc2UgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMDIpIHtcbiAgICAgIHJldHVybiBjIC0gODc7XG4gICAgLy8gJzAnIC0gJzknXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoYyAtIDQ4KSAmIDB4ZjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUhleEJ5dGUgKHN0cmluZywgbG93ZXJCb3VuZCwgaW5kZXgpIHtcbiAgICB2YXIgciA9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCk7XG4gICAgaWYgKGluZGV4IC0gMSA+PSBsb3dlckJvdW5kKSB7XG4gICAgICByIHw9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCAtIDEpIDw8IDQ7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUhleCA9IGZ1bmN0aW9uIF9wYXJzZUhleCAobnVtYmVyLCBzdGFydCwgZW5kaWFuKSB7XG4gICAgLy8gQ3JlYXRlIHBvc3NpYmx5IGJpZ2dlciBhcnJheSB0byBlbnN1cmUgdGhhdCBpdCBmaXRzIHRoZSBudW1iZXJcbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbCgobnVtYmVyLmxlbmd0aCAtIHN0YXJ0KSAvIDYpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgLy8gMjQtYml0cyBjaHVua3NcbiAgICB2YXIgb2ZmID0gMDtcbiAgICB2YXIgaiA9IDA7XG5cbiAgICB2YXIgdztcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMTsgaSA+PSBzdGFydDsgaSAtPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhcnNlTGVuZ3RoID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgICAgZm9yIChpID0gcGFyc2VMZW5ndGggJSAyID09PSAwID8gc3RhcnQgKyAxIDogc3RhcnQ7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIHIgKz0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICByICs9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUJhc2UgPSBmdW5jdGlvbiBfcGFyc2VCYXNlIChudW1iZXIsIGJhc2UsIHN0YXJ0KSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBhcyB6ZXJvXG4gICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA+IDEgJiYgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX25vcm1TaWduID0gZnVuY3Rpb24gX25vcm1TaWduICgpIHtcbiAgICAvLyAtMCA9IDBcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH07XG5cbiAgLypcblxuICB2YXIgemVyb3MgPSBbXTtcbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXTtcbiAgdmFyIGdyb3VwQmFzZXMgPSBbXTtcblxuICB2YXIgcyA9ICcnO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgQk4ud29yZFNpemUpIHtcbiAgICB6ZXJvc1tpXSA9IHM7XG4gICAgcyArPSAnMCc7XG4gIH1cbiAgZ3JvdXBTaXplc1swXSA9IDA7XG4gIGdyb3VwU2l6ZXNbMV0gPSAwO1xuICBncm91cEJhc2VzWzBdID0gMDtcbiAgZ3JvdXBCYXNlc1sxXSA9IDA7XG4gIHZhciBiYXNlID0gMiAtIDE7XG4gIHdoaWxlICgrK2Jhc2UgPCAzNiArIDEpIHtcbiAgICB2YXIgZ3JvdXBTaXplID0gMDtcbiAgICB2YXIgZ3JvdXBCYXNlID0gMTtcbiAgICB3aGlsZSAoZ3JvdXBCYXNlIDwgKDEgPDwgQk4ud29yZFNpemUpIC8gYmFzZSkge1xuICAgICAgZ3JvdXBCYXNlICo9IGJhc2U7XG4gICAgICBncm91cFNpemUgKz0gMTtcbiAgICB9XG4gICAgZ3JvdXBTaXplc1tiYXNlXSA9IGdyb3VwU2l6ZTtcbiAgICBncm91cEJhc2VzW2Jhc2VdID0gZ3JvdXBCYXNlO1xuICB9XG5cbiAgKi9cblxuICB2YXIgemVyb3MgPSBbXG4gICAgJycsXG4gICAgJzAnLFxuICAgICcwMCcsXG4gICAgJzAwMCcsXG4gICAgJzAwMDAnLFxuICAgICcwMDAwMCcsXG4gICAgJzAwMDAwMCcsXG4gICAgJzAwMDAwMDAnLFxuICAgICcwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gIF07XG5cbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXG4gICAgMCwgMCxcbiAgICAyNSwgMTYsIDEyLCAxMSwgMTAsIDksIDgsXG4gICAgOCwgNywgNywgNywgNywgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNVxuICBdO1xuXG4gIHZhciBncm91cEJhc2VzID0gW1xuICAgIDAsIDAsXG4gICAgMzM1NTQ0MzIsIDQzMDQ2NzIxLCAxNjc3NzIxNiwgNDg4MjgxMjUsIDYwNDY2MTc2LCA0MDM1MzYwNywgMTY3NzcyMTYsXG4gICAgNDMwNDY3MjEsIDEwMDAwMDAwLCAxOTQ4NzE3MSwgMzU4MzE4MDgsIDYyNzQ4NTE3LCA3NTI5NTM2LCAxMTM5MDYyNSxcbiAgICAxNjc3NzIxNiwgMjQxMzc1NjksIDM0MDEyMjI0LCA0NzA0NTg4MSwgNjQwMDAwMDAsIDQwODQxMDEsIDUxNTM2MzIsXG4gICAgNjQzNjM0MywgNzk2MjYyNCwgOTc2NTYyNSwgMTE4ODEzNzYsIDE0MzQ4OTA3LCAxNzIxMDM2OCwgMjA1MTExNDksXG4gICAgMjQzMDAwMDAsIDI4NjI5MTUxLCAzMzU1NDQzMiwgMzkxMzUzOTMsIDQ1NDM1NDI0LCA1MjUyMTg3NSwgNjA0NjYxNzZcbiAgXTtcblxuICBCTi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYmFzZSwgcGFkZGluZykge1xuICAgIGJhc2UgPSBiYXNlIHx8IDEwO1xuICAgIHBhZGRpbmcgPSBwYWRkaW5nIHwgMCB8fCAxO1xuXG4gICAgdmFyIG91dDtcbiAgICBpZiAoYmFzZSA9PT0gMTYgfHwgYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIG9mZiA9IDA7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgICAgdmFyIHdvcmQgPSAoKCh3IDw8IG9mZikgfCBjYXJyeSkgJiAweGZmZmZmZikudG9TdHJpbmcoMTYpO1xuICAgICAgICBjYXJyeSA9ICh3ID4+PiAoMjQgLSBvZmYpKSAmIDB4ZmZmZmZmO1xuICAgICAgICBpZiAoY2FycnkgIT09IDAgfHwgaSAhPT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbNiAtIHdvcmQubGVuZ3RoXSArIHdvcmQgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gd29yZCArIG91dDtcbiAgICAgICAgfVxuICAgICAgICBvZmYgKz0gMjtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgICBvdXQgPSBjYXJyeS50b1N0cmluZygxNikgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNikge1xuICAgICAgLy8gdmFyIGdyb3VwU2l6ZSA9IE1hdGguZmxvb3IoQk4ud29yZFNpemUgKiBNYXRoLkxOMiAvIE1hdGgubG9nKGJhc2UpKTtcbiAgICAgIHZhciBncm91cFNpemUgPSBncm91cFNpemVzW2Jhc2VdO1xuICAgICAgLy8gdmFyIGdyb3VwQmFzZSA9IE1hdGgucG93KGJhc2UsIGdyb3VwU2l6ZSk7XG4gICAgICB2YXIgZ3JvdXBCYXNlID0gZ3JvdXBCYXNlc1tiYXNlXTtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIGMgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjLm5lZ2F0aXZlID0gMDtcbiAgICAgIHdoaWxlICghYy5pc1plcm8oKSkge1xuICAgICAgICB2YXIgciA9IGMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgICB2YXIgbGl0dGxlRW5kaWFuID0gZW5kaWFuID09PSAnbGUnO1xuICAgIHZhciByZXMgPSBuZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7XG5cbiAgICB2YXIgYiwgaTtcbiAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKTtcbiAgICBpZiAoIWxpdHRsZUVuZGlhbikge1xuICAgICAgLy8gQXNzdW1lIGJpZy1lbmRpYW5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXFMZW5ndGggLSBieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW3JlcUxlbmd0aCAtIGkgLSAxXSA9IGI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tpXSA9IGI7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBpIDwgcmVxTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSAmICgxIDw8IHdiaXQpKSA+Pj4gd2JpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdztcbiAgfVxuXG4gIC8vIE51bWJlciBvZiB0cmFpbGluZyB6ZXJvIGJpdHNcbiAgQk4ucHJvdG90eXBlLnplcm9CaXRzID0gZnVuY3Rpb24gemVyb0JpdHMgKCkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gMDtcblxuICAgIHZhciByID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBiID0gdGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7XG4gICAgICByICs9IGI7XG4gICAgICBpZiAoYiAhPT0gMjYpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIGJ5dGVMZW5ndGggKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKSAvIDgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1R3b3MgPSBmdW5jdGlvbiB0b1R3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVR3b3MgPSBmdW5jdGlvbiBmcm9tVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy50ZXN0bih3aWR0aCAtIDEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RuKHdpZHRoKS5pYWRkbigxKS5pbmVnKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gaXNOZWcgKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlICE9PSAwO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluZWcgPSBmdW5jdGlvbiBpbmVnICgpIHtcbiAgICBpZiAoIXRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVvciA9IGZ1bmN0aW9uIGl1b3IgKG51bSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSB8IG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXhvciA9IGZ1bmN0aW9uIGl4b3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1eG9yKG51bSk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5peG9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51eG9yID0gZnVuY3Rpb24gdXhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKTtcbiAgfTtcblxuICAvLyBOb3QgYGB0aGlzYGAgd2l0aCBgYHdpZHRoYGAgYml0d2lkdGhcbiAgQk4ucHJvdG90eXBlLmlub3RuID0gZnVuY3Rpb24gaW5vdG4gKHdpZHRoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgJiYgd2lkdGggPj0gMCk7XG5cbiAgICB2YXIgYnl0ZXNOZWVkZWQgPSBNYXRoLmNlaWwod2lkdGggLyAyNikgfCAwO1xuICAgIHZhciBiaXRzTGVmdCA9IHdpZHRoICUgMjY7XG5cbiAgICAvLyBFeHRlbmQgdGhlIGJ1ZmZlciB3aXRoIGxlYWRpbmcgemVyb2VzXG4gICAgdGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtcblxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIGJ5dGVzTmVlZGVkLS07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRlIHdvcmRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlc05lZWRlZDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRoZSByZXNpZHVlXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgKDB4M2ZmZmZmZiA+PiAoMjYgLSBiaXRzTGVmdCkpO1xuICAgIH1cblxuICAgIC8vIEFuZCByZW1vdmUgbGVhZGluZyB6ZXJvZXNcbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gc21hbGxNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIHZhciBsZW4gPSAoc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoKSB8IDA7XG4gICAgb3V0Lmxlbmd0aCA9IGxlbjtcbiAgICBsZW4gPSAobGVuIC0gMSkgfCAwO1xuXG4gICAgLy8gUGVlbCBvbmUgaXRlcmF0aW9uIChjb21waWxlciBjYW4ndCBkbyBpdCwgYmVjYXVzZSBvZiBjb2RlIGNvbXBsZXhpdHkpXG4gICAgdmFyIGEgPSBzZWxmLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgYiA9IG51bS53b3Jkc1swXSB8IDA7XG4gICAgdmFyIHIgPSBhICogYjtcblxuICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgdmFyIGNhcnJ5ID0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICBvdXQud29yZHNbMF0gPSBsbztcblxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gY2FycnkgPj4+IDI2O1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSAoayAtIGopIHwgMDtcbiAgICAgICAgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgciA9IGEgKiBiICsgcndvcmQ7XG4gICAgICAgIG5jYXJyeSArPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgICByd29yZCA9IHIgJiAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZCB8IDA7XG4gICAgICBjYXJyeSA9IG5jYXJyeSB8IDA7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2FycnkgfCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNobG4gPSBmdW5jdGlvbiBpc2hsbiAoYml0cykge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHQgaW4tcGxhY2VcbiAgLy8gTk9URTogYGhpbnRgIGlzIGEgbG93ZXN0IGJpdCBiZWZvcmUgdHJhaWxpbmcgemVyb2VzXG4gIC8vIE5PVEU6IGlmIGBleHRlbmRlZGAgaXMgcHJlc2VudCAtIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggZGVzdHJveWVkIGJpdHNcbiAgQk4ucHJvdG90eXBlLml1c2hybiA9IGZ1bmN0aW9uIGl1c2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIGg7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIGggPSAoaGludCAtIChoaW50ICUgMjYpKSAvIDI2O1xuICAgIH0gZWxzZSB7XG4gICAgICBoID0gMDtcbiAgICB9XG5cbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IE1hdGgubWluKChiaXRzIC0gcikgLyAyNiwgdGhpcy5sZW5ndGgpO1xuICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgIHZhciBtYXNrZWRXb3JkcyA9IGV4dGVuZGVkO1xuXG4gICAgaCAtPSBzO1xuICAgIGggPSBNYXRoLm1heCgwLCBoKTtcblxuICAgIC8vIEV4dGVuZGVkIG1vZGUsIGNvcHkgbWFza2VkIHBhcnRcbiAgICBpZiAobWFza2VkV29yZHMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIG1hc2tlZFdvcmRzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICAgIG1hc2tlZFdvcmRzLmxlbmd0aCA9IHM7XG4gICAgfVxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIC8vIE5vLW9wLCB3ZSBzaG91bGQgbm90IG1vdmUgYW55dGhpbmcgYXQgYWxsXG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IHMpIHtcbiAgICAgIHRoaXMubGVuZ3RoIC09IHM7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpICsgc107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDAgJiYgKGNhcnJ5ICE9PSAwIHx8IGkgPj0gaCk7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAoY2FycnkgPDwgKDI2IC0gcikpIHwgKHdvcmQgPj4+IHIpO1xuICAgICAgY2FycnkgPSB3b3JkICYgbWFzaztcbiAgICB9XG5cbiAgICAvLyBQdXNoIGNhcnJpZWQgYml0cyBhcyBhIG1hc2tcbiAgICBpZiAobWFza2VkV29yZHMgJiYgY2FycnkgIT09IDApIHtcbiAgICAgIG1hc2tlZFdvcmRzLndvcmRzW21hc2tlZFdvcmRzLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyLnN0cmlwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NCBpbnN0YW5jZVxuICAgICAgICByLnN0cmlwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByIGlzIEJOIHY1IGluc3RhbmNlXG4gICAgICAgIHIuX3N0cmlwKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0KSB7XG4gICAgaW5wdXQuaXVzaHJuKHRoaXMubiwgMCwgb3V0KTtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIHJldHVybiBudW0uaW11bCh0aGlzLmspO1xuICB9O1xuXG4gIGZ1bmN0aW9uIEsyNTYgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdrMjU2JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZicpO1xuICB9XG4gIGluaGVyaXRzKEsyNTYsIE1QcmltZSk7XG5cbiAgSzI1Ni5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dHB1dCkge1xuICAgIC8vIDI1NiA9IDkgKiAyNiArIDIyXG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZjtcblxuICAgIHZhciBvdXRMZW4gPSBNYXRoLm1pbihpbnB1dC5sZW5ndGgsIDkpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0TGVuOyBpKyspIHtcbiAgICAgIG91dHB1dC53b3Jkc1tpXSA9IGlucHV0LndvcmRzW2ldO1xuICAgIH1cbiAgICBvdXRwdXQubGVuZ3RoID0gb3V0TGVuO1xuXG4gICAgaWYgKGlucHV0Lmxlbmd0aCA8PSA5KSB7XG4gICAgICBpbnB1dC53b3Jkc1swXSA9IDA7XG4gICAgICBpbnB1dC5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNoaWZ0IGJ5IDkgbGltYnNcbiAgICB2YXIgcHJldiA9IGlucHV0LndvcmRzWzldO1xuICAgIG91dHB1dC53b3Jkc1tvdXRwdXQubGVuZ3RoKytdID0gcHJldiAmIG1hc2s7XG5cbiAgICBmb3IgKGkgPSAxMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmV4dCA9IGlucHV0LndvcmRzW2ldIHwgMDtcbiAgICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSAoKG5leHQgJiBtYXNrKSA8PCA0KSB8IChwcmV2ID4+PiAyMik7XG4gICAgICBwcmV2ID0gbmV4dDtcbiAgICB9XG4gICAgcHJldiA+Pj49IDIyO1xuICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSBwcmV2O1xuICAgIGlmIChwcmV2ID09PSAwICYmIGlucHV0Lmxlbmd0aCA+IDEwKSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gMTA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSA5O1xuICAgIH1cbiAgfTtcblxuICBLMjU2LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxMDAwMDAzZDEgPSBbIDB4NDAsIDB4M2QxIF1cbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aF0gPSAwO1xuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoICsgMV0gPSAwO1xuICAgIG51bS5sZW5ndGggKz0gMjtcblxuICAgIC8vIGJvdW5kZWQgYXQ6IDB4NDAgKiAweDNmZmZmZmYgKyAweDNkMCA9IDB4MTAwMDAwMzkwXG4gICAgdmFyIGxvID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSBudW0ud29yZHNbaV0gfCAwO1xuICAgICAgbG8gKz0gdyAqIDB4M2QxO1xuICAgICAgbnVtLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICBsbyA9IHcgKiAweDQwICsgKChsbyAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICB9XG5cbiAgICAvLyBGYXN0IGxlbmd0aCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIGZ1bmN0aW9uIFAyMjQgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMjI0JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScpO1xuICB9XG4gIGluaGVyaXRzKFAyMjQsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDE5MiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AxOTInLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDE5MiwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMjU1MTkgKCkge1xuICAgIC8vIDIgXiAyNTUgLSAxOVxuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICcyNTUxOScsXG4gICAgICAnN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCcpO1xuICB9XG4gIGluaGVyaXRzKFAyNTUxOSwgTVByaW1lKTtcblxuICBQMjU1MTkucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEzXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGhpID0gKG51bS53b3Jkc1tpXSB8IDApICogMHgxMyArIGNhcnJ5O1xuICAgICAgdmFyIGxvID0gaGkgJiAweDNmZmZmZmY7XG4gICAgICBoaSA+Pj49IDI2O1xuXG4gICAgICBudW0ud29yZHNbaV0gPSBsbztcbiAgICAgIGNhcnJ5ID0gaGk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgbnVtLndvcmRzW251bS5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICAvLyBFeHBvcnRlZCBtb3N0bHkgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHVzZSBwbGFpbiBuYW1lIGluc3RlYWRcbiAgQk4uX3ByaW1lID0gZnVuY3Rpb24gcHJpbWUgKG5hbWUpIHtcbiAgICAvLyBDYWNoZWQgdmVyc2lvbiBvZiBwcmltZVxuICAgIGlmIChwcmltZXNbbmFtZV0pIHJldHVybiBwcmltZXNbbmFtZV07XG5cbiAgICB2YXIgcHJpbWU7XG4gICAgaWYgKG5hbWUgPT09ICdrMjU2Jykge1xuICAgICAgcHJpbWUgPSBuZXcgSzI1NigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyMjQnKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjI0KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDE5MicpIHtcbiAgICAgIHByaW1lID0gbmV3IFAxOTIoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjU1MTknKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjU1MTkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByaW1lICcgKyBuYW1lKTtcbiAgICB9XG4gICAgcHJpbWVzW25hbWVdID0gcHJpbWU7XG5cbiAgICByZXR1cm4gcHJpbWU7XG4gIH07XG5cbiAgLy9cbiAgLy8gQmFzZSByZWR1Y3Rpb24gZW5naW5lXG4gIC8vXG4gIGZ1bmN0aW9uIFJlZCAobSkge1xuICAgIGlmICh0eXBlb2YgbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBwcmltZSA9IEJOLl9wcmltZShtKTtcbiAgICAgIHRoaXMubSA9IHByaW1lLnA7XG4gICAgICB0aGlzLnByaW1lID0gcHJpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChtLmd0bigxKSwgJ21vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMScpO1xuICAgICAgdGhpcy5tID0gbTtcbiAgICAgIHRoaXMucHJpbWUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTEgPSBmdW5jdGlvbiBfdmVyaWZ5MSAoYSkge1xuICAgIGFzc2VydChhLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQsICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MiA9IGZ1bmN0aW9uIF92ZXJpZnkyIChhLCBiKSB7XG4gICAgYXNzZXJ0KChhLm5lZ2F0aXZlIHwgYi5uZWdhdGl2ZSkgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCAmJiBhLnJlZCA9PT0gYi5yZWQsXG4gICAgICAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW1vZCA9IGZ1bmN0aW9uIGltb2QgKGEpIHtcbiAgICBpZiAodGhpcy5wcmltZSkgcmV0dXJuIHRoaXMucHJpbWUuaXJlZHVjZShhKS5fZm9yY2VSZWQodGhpcyk7XG4gICAgcmV0dXJuIGEudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm0uc3ViKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5hZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlhZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLnN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlzdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNobCA9IGZ1bmN0aW9uIHNobCAoYSwgbnVtKSB7XG4gICAgdGhpcy5fdmVyaWZ5MShhKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEudXNobG4obnVtKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLmltdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEubXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bChhLCBhLmNsb25lKCkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKGEsIGEpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FydCA9IGZ1bmN0aW9uIHNxcnQgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciBtb2QzID0gdGhpcy5tLmFuZGxuKDMpO1xuICAgIGFzc2VydChtb2QzICUgMiA9PT0gMSk7XG5cbiAgICAvLyBGYXN0IGNhc2VcbiAgICBpZiAobW9kMyA9PT0gMykge1xuICAgICAgdmFyIHBvdyA9IHRoaXMubS5hZGQobmV3IEJOKDEpKS5pdXNocm4oMik7XG4gICAgICByZXR1cm4gdGhpcy5wb3coYSwgcG93KTtcbiAgICB9XG5cbiAgICAvLyBUb25lbGxpLVNoYW5rcyBhbGdvcml0aG0gKFRvdGFsbHkgdW5vcHRpbWl6ZWQgYW5kIHNsb3cpXG4gICAgLy9cbiAgICAvLyBGaW5kIFEgYW5kIFMsIHRoYXQgUSAqIDIgXiBTID0gKFAgLSAxKVxuICAgIHZhciBxID0gdGhpcy5tLnN1Ym4oMSk7XG4gICAgdmFyIHMgPSAwO1xuICAgIHdoaWxlICghcS5pc1plcm8oKSAmJiBxLmFuZGxuKDEpID09PSAwKSB7XG4gICAgICBzKys7XG4gICAgICBxLml1c2hybigxKTtcbiAgICB9XG4gICAgYXNzZXJ0KCFxLmlzWmVybygpKTtcblxuICAgIHZhciBvbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgdmFyIG5PbmUgPSBvbmUucmVkTmVnKCk7XG5cbiAgICAvLyBGaW5kIHF1YWRyYXRpYyBub24tcmVzaWR1ZVxuICAgIC8vIE5PVEU6IE1heCBpcyBzdWNoIGJlY2F1c2Ugb2YgZ2VuZXJhbGl6ZWQgUmllbWFubiBoeXBvdGhlc2lzLlxuICAgIHZhciBscG93ID0gdGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpO1xuICAgIHZhciB6ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIHogPSBuZXcgQk4oMiAqIHogKiB6KS50b1JlZCh0aGlzKTtcblxuICAgIHdoaWxlICh0aGlzLnBvdyh6LCBscG93KS5jbXAobk9uZSkgIT09IDApIHtcbiAgICAgIHoucmVkSUFkZChuT25lKTtcbiAgICB9XG5cbiAgICB2YXIgYyA9IHRoaXMucG93KHosIHEpO1xuICAgIHZhciByID0gdGhpcy5wb3coYSwgcS5hZGRuKDEpLml1c2hybigxKSk7XG4gICAgdmFyIHQgPSB0aGlzLnBvdyhhLCBxKTtcbiAgICB2YXIgbSA9IHM7XG4gICAgd2hpbGUgKHQuY21wKG9uZSkgIT09IDApIHtcbiAgICAgIHZhciB0bXAgPSB0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IHRtcC5jbXAob25lKSAhPT0gMDsgaSsrKSB7XG4gICAgICAgIHRtcCA9IHRtcC5yZWRTcXIoKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydChpIDwgbSk7XG4gICAgICB2YXIgYiA9IHRoaXMucG93KGMsIG5ldyBCTigxKS5pdXNobG4obSAtIGkgLSAxKSk7XG5cbiAgICAgIHIgPSByLnJlZE11bChiKTtcbiAgICAgIGMgPSBiLnJlZFNxcigpO1xuICAgICAgdCA9IHQucmVkTXVsKGMpO1xuICAgICAgbSA9IGk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIHZhciBpbnYgPSBhLl9pbnZtcCh0aGlzLm0pO1xuICAgIGlmIChpbnYubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGludi5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludikucmVkTmVnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KTtcbiAgICB9XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKGEsIG51bSkge1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgaWYgKG51bS5jbXBuKDEpID09PSAwKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIHdpbmRvd1NpemUgPSA0O1xuICAgIHZhciB3bmQgPSBuZXcgQXJyYXkoMSA8PCB3aW5kb3dTaXplKTtcbiAgICB3bmRbMF0gPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgd25kWzFdID0gYTtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IHduZC5sZW5ndGg7IGkrKykge1xuICAgICAgd25kW2ldID0gdGhpcy5tdWwod25kW2kgLSAxXSwgYSk7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IHduZFswXTtcbiAgICB2YXIgY3VycmVudCA9IDA7XG4gICAgdmFyIGN1cnJlbnRMZW4gPSAwO1xuICAgIHZhciBzdGFydCA9IG51bS5iaXRMZW5ndGgoKSAlIDI2O1xuICAgIGlmIChzdGFydCA9PT0gMCkge1xuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSBudW0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gbnVtLndvcmRzW2ldO1xuICAgICAgZm9yICh2YXIgaiA9IHN0YXJ0IC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgdmFyIGJpdCA9ICh3b3JkID4+IGopICYgMTtcbiAgICAgICAgaWYgKHJlcyAhPT0gd25kWzBdKSB7XG4gICAgICAgICAgcmVzID0gdGhpcy5zcXIocmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXQgPT09IDAgJiYgY3VycmVudCA9PT0gMCkge1xuICAgICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudCA8PD0gMTtcbiAgICAgICAgY3VycmVudCB8PSBiaXQ7XG4gICAgICAgIGN1cnJlbnRMZW4rKztcbiAgICAgICAgaWYgKGN1cnJlbnRMZW4gIT09IHdpbmRvd1NpemUgJiYgKGkgIT09IDAgfHwgaiAhPT0gMCkpIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHRoaXMubXVsKHJlcywgd25kW2N1cnJlbnRdKTtcbiAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgIGN1cnJlbnQgPSAwO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICB2YXIgciA9IG51bS51bW9kKHRoaXMubSk7XG5cbiAgICByZXR1cm4gciA9PT0gbnVtID8gci5jbG9uZSgpIDogcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByZXMgPSBudW0uY2xvbmUoKTtcbiAgICByZXMucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vXG4gIC8vIE1vbnRnb21lcnkgbWV0aG9kIGVuZ2luZVxuICAvL1xuXG4gIEJOLm1vbnQgPSBmdW5jdGlvbiBtb250IChudW0pIHtcbiAgICByZXR1cm4gbmV3IE1vbnQobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBNb250IChtKSB7XG4gICAgUmVkLmNhbGwodGhpcywgbSk7XG5cbiAgICB0aGlzLnNoaWZ0ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIGlmICh0aGlzLnNoaWZ0ICUgMjYgIT09IDApIHtcbiAgICAgIHRoaXMuc2hpZnQgKz0gMjYgLSAodGhpcy5zaGlmdCAlIDI2KTtcbiAgICB9XG5cbiAgICB0aGlzLnIgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpO1xuICAgIHRoaXMucjIgPSB0aGlzLmltb2QodGhpcy5yLnNxcigpKTtcbiAgICB0aGlzLnJpbnYgPSB0aGlzLnIuX2ludm1wKHRoaXMubSk7XG5cbiAgICB0aGlzLm1pbnYgPSB0aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSk7XG4gICAgdGhpcy5taW52ID0gdGhpcy5taW52LnVtb2QodGhpcy5yKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLnIuc3ViKHRoaXMubWludik7XG4gIH1cbiAgaW5oZXJpdHMoTW9udCwgUmVkKTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmltb2QobnVtLnVzaGxuKHRoaXMuc2hpZnQpKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgciA9IHRoaXMuaW1vZChudW0ubXVsKHRoaXMucmludikpO1xuICAgIHIucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHtcbiAgICAgIGEud29yZHNbMF0gPSAwO1xuICAgICAgYS5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgdmFyIHQgPSBhLmltdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG5cbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMCkuX2ZvcmNlUmVkKHRoaXMpO1xuXG4gICAgdmFyIHQgPSBhLm11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgLy8gKEFSKV4tMSAqIFJeMiA9IChBXi0xICogUl4tMSkgKiBSXjIgPSBBXi0xICogUlxuICAgIHZhciByZXMgPSB0aGlzLmltb2QoYS5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpO1xuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xufSkodHlwZW9mIG1vZHVsZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbW9kdWxlLCB0aGlzKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEdldEludHJpbnNpYyA9IHJlcXVpcmUoJ2dldC1pbnRyaW5zaWMnKTtcblxudmFyICRnT1BEID0gR2V0SW50cmluc2ljKCclT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciUnKTtcbmlmICgkZ09QRCkge1xuXHR0cnkge1xuXHRcdCRnT1BEKFtdLCAnbGVuZ3RoJyk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHQvLyBJRSA4IGhhcyBhIGJyb2tlbiBnT1BEXG5cdFx0JGdPUEQgPSBudWxsO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gJGdPUEQ7XG4iLCIvKipcbiAqIENvZGUgcmVmYWN0b3JlZCBmcm9tIE1vemlsbGEgRGV2ZWxvcGVyIE5ldHdvcms6XG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvYXNzaWduXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBmaXJzdFNvdXJjZSkge1xuICBpZiAodGFyZ2V0ID09PSB1bmRlZmluZWQgfHwgdGFyZ2V0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgZmlyc3QgYXJndW1lbnQgdG8gb2JqZWN0Jyk7XG4gIH1cblxuICB2YXIgdG8gPSBPYmplY3QodGFyZ2V0KTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbmV4dFNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICBpZiAobmV4dFNvdXJjZSA9PT0gdW5kZWZpbmVkIHx8IG5leHRTb3VyY2UgPT09IG51bGwpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBrZXlzQXJyYXkgPSBPYmplY3Qua2V5cyhPYmplY3QobmV4dFNvdXJjZSkpO1xuICAgIGZvciAodmFyIG5leHRJbmRleCA9IDAsIGxlbiA9IGtleXNBcnJheS5sZW5ndGg7IG5leHRJbmRleCA8IGxlbjsgbmV4dEluZGV4KyspIHtcbiAgICAgIHZhciBuZXh0S2V5ID0ga2V5c0FycmF5W25leHRJbmRleF07XG4gICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobmV4dFNvdXJjZSwgbmV4dEtleSk7XG4gICAgICBpZiAoZGVzYyAhPT0gdW5kZWZpbmVkICYmIGRlc2MuZW51bWVyYWJsZSkge1xuICAgICAgICB0b1tuZXh0S2V5XSA9IG5leHRTb3VyY2VbbmV4dEtleV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0bztcbn1cblxuZnVuY3Rpb24gcG9seWZpbGwoKSB7XG4gIGlmICghT2JqZWN0LmFzc2lnbikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QsICdhc3NpZ24nLCB7XG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IGFzc2lnblxuICAgIH0pO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhc3NpZ246IGFzc2lnbixcbiAgcG9seWZpbGw6IHBvbHlmaWxsXG59O1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFIgPSB0eXBlb2YgUmVmbGVjdCA9PT0gJ29iamVjdCcgPyBSZWZsZWN0IDogbnVsbFxudmFyIFJlZmxlY3RBcHBseSA9IFIgJiYgdHlwZW9mIFIuYXBwbHkgPT09ICdmdW5jdGlvbidcbiAgPyBSLmFwcGx5XG4gIDogZnVuY3Rpb24gUmVmbGVjdEFwcGx5KHRhcmdldCwgcmVjZWl2ZXIsIGFyZ3MpIHtcbiAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwodGFyZ2V0LCByZWNlaXZlciwgYXJncyk7XG4gIH1cblxudmFyIFJlZmxlY3RPd25LZXlzXG5pZiAoUiAmJiB0eXBlb2YgUi5vd25LZXlzID09PSAnZnVuY3Rpb24nKSB7XG4gIFJlZmxlY3RPd25LZXlzID0gUi5vd25LZXlzXG59IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgUmVmbGVjdE93bktleXMgPSBmdW5jdGlvbiBSZWZsZWN0T3duS2V5cyh0YXJnZXQpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KVxuICAgICAgLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHRhcmdldCkpO1xuICB9O1xufSBlbHNlIHtcbiAgUmVmbGVjdE93bktleXMgPSBmdW5jdGlvbiBSZWZsZWN0T3duS2V5cyh0YXJnZXQpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gUHJvY2Vzc0VtaXRXYXJuaW5nKHdhcm5pbmcpIHtcbiAgaWYgKGNvbnNvbGUgJiYgY29uc29sZS53YXJuKSBjb25zb2xlLndhcm4od2FybmluZyk7XG59XG5cbnZhciBOdW1iZXJJc05hTiA9IE51bWJlci5pc05hTiB8fCBmdW5jdGlvbiBOdW1iZXJJc05hTih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBFdmVudEVtaXR0ZXIoKSB7XG4gIEV2ZW50RW1pdHRlci5pbml0LmNhbGwodGhpcyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50RW1pdHRlcjtcbm1vZHVsZS5leHBvcnRzLm9uY2UgPSBvbmNlO1xuXG4vLyBCYWNrd2FyZHMtY29tcGF0IHdpdGggbm9kZSAwLjEwLnhcbkV2ZW50RW1pdHRlci5FdmVudEVtaXR0ZXIgPSBFdmVudEVtaXR0ZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50cyA9IHVuZGVmaW5lZDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50c0NvdW50ID0gMDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX21heExpc3RlbmVycyA9IHVuZGVmaW5lZDtcblxuLy8gQnkgZGVmYXVsdCBFdmVudEVtaXR0ZXJzIHdpbGwgcHJpbnQgYSB3YXJuaW5nIGlmIG1vcmUgdGhhbiAxMCBsaXN0ZW5lcnMgYXJlXG4vLyBhZGRlZCB0byBpdC4gVGhpcyBpcyBhIHVzZWZ1bCBkZWZhdWx0IHdoaWNoIGhlbHBzIGZpbmRpbmcgbWVtb3J5IGxlYWtzLlxudmFyIGRlZmF1bHRNYXhMaXN0ZW5lcnMgPSAxMDtcblxuZnVuY3Rpb24gY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcikge1xuICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwibGlzdGVuZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBsaXN0ZW5lcik7XG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEV2ZW50RW1pdHRlciwgJ2RlZmF1bHRNYXhMaXN0ZW5lcnMnLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24oYXJnKSB7XG4gICAgaWYgKHR5cGVvZiBhcmcgIT09ICdudW1iZXInIHx8IGFyZyA8IDAgfHwgTnVtYmVySXNOYU4oYXJnKSkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcImRlZmF1bHRNYXhMaXN0ZW5lcnNcIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnICsgYXJnICsgJy4nKTtcbiAgICB9XG4gICAgZGVmYXVsdE1heExpc3RlbmVycyA9IGFyZztcbiAgfVxufSk7XG5cbkV2ZW50RW1pdHRlci5pbml0ID0gZnVuY3Rpb24oKSB7XG5cbiAgaWYgKHRoaXMuX2V2ZW50cyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICB0aGlzLl9ldmVudHMgPT09IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5fZXZlbnRzKSB7XG4gICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gIH1cblxuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSB0aGlzLl9tYXhMaXN0ZW5lcnMgfHwgdW5kZWZpbmVkO1xufTtcblxuLy8gT2J2aW91c2x5IG5vdCBhbGwgRW1pdHRlcnMgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gMTAuIFRoaXMgZnVuY3Rpb24gYWxsb3dzXG4vLyB0aGF0IHRvIGJlIGluY3JlYXNlZC4gU2V0IHRvIHplcm8gZm9yIHVubGltaXRlZC5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24gc2V0TWF4TGlzdGVuZXJzKG4pIHtcbiAgaWYgKHR5cGVvZiBuICE9PSAnbnVtYmVyJyB8fCBuIDwgMCB8fCBOdW1iZXJJc05hTihuKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJuXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyArIG4gKyAnLicpO1xuICB9XG4gIHRoaXMuX21heExpc3RlbmVycyA9IG47XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gX2dldE1heExpc3RlbmVycyh0aGF0KSB7XG4gIGlmICh0aGF0Ll9tYXhMaXN0ZW5lcnMgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gIHJldHVybiB0aGF0Ll9tYXhMaXN0ZW5lcnM7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZ2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24gZ2V0TWF4TGlzdGVuZXJzKCkge1xuICByZXR1cm4gX2dldE1heExpc3RlbmVycyh0aGlzKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZW1pdCA9IGZ1bmN0aW9uIGVtaXQodHlwZSkge1xuICB2YXIgYXJncyA9IFtdO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgYXJncy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gIHZhciBkb0Vycm9yID0gKHR5cGUgPT09ICdlcnJvcicpO1xuXG4gIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gIGlmIChldmVudHMgIT09IHVuZGVmaW5lZClcbiAgICBkb0Vycm9yID0gKGRvRXJyb3IgJiYgZXZlbnRzLmVycm9yID09PSB1bmRlZmluZWQpO1xuICBlbHNlIGlmICghZG9FcnJvcilcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gSWYgdGhlcmUgaXMgbm8gJ2Vycm9yJyBldmVudCBsaXN0ZW5lciB0aGVuIHRocm93LlxuICBpZiAoZG9FcnJvcikge1xuICAgIHZhciBlcjtcbiAgICBpZiAoYXJncy5sZW5ndGggPiAwKVxuICAgICAgZXIgPSBhcmdzWzBdO1xuICAgIGlmIChlciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAvLyBOb3RlOiBUaGUgY29tbWVudHMgb24gdGhlIGB0aHJvd2AgbGluZXMgYXJlIGludGVudGlvbmFsLCB0aGV5IHNob3dcbiAgICAgIC8vIHVwIGluIE5vZGUncyBvdXRwdXQgaWYgdGhpcyByZXN1bHRzIGluIGFuIHVuaGFuZGxlZCBleGNlcHRpb24uXG4gICAgICB0aHJvdyBlcjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgICB9XG4gICAgLy8gQXQgbGVhc3QgZ2l2ZSBzb21lIGtpbmQgb2YgY29udGV4dCB0byB0aGUgdXNlclxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1VuaGFuZGxlZCBlcnJvci4nICsgKGVyID8gJyAoJyArIGVyLm1lc3NhZ2UgKyAnKScgOiAnJykpO1xuICAgIGVyci5jb250ZXh0ID0gZXI7XG4gICAgdGhyb3cgZXJyOyAvLyBVbmhhbmRsZWQgJ2Vycm9yJyBldmVudFxuICB9XG5cbiAgdmFyIGhhbmRsZXIgPSBldmVudHNbdHlwZV07XG5cbiAgaWYgKGhhbmRsZXIgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgUmVmbGVjdEFwcGx5KGhhbmRsZXIsIHRoaXMsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIHZhciBsZW4gPSBoYW5kbGVyLmxlbmd0aDtcbiAgICB2YXIgbGlzdGVuZXJzID0gYXJyYXlDbG9uZShoYW5kbGVyLCBsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpXG4gICAgICBSZWZsZWN0QXBwbHkobGlzdGVuZXJzW2ldLCB0aGlzLCBhcmdzKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZnVuY3Rpb24gX2FkZExpc3RlbmVyKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIsIHByZXBlbmQpIHtcbiAgdmFyIG07XG4gIHZhciBldmVudHM7XG4gIHZhciBleGlzdGluZztcblxuICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcblxuICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcbiAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRhcmdldC5fZXZlbnRzQ291bnQgPSAwO1xuICB9IGVsc2Uge1xuICAgIC8vIFRvIGF2b2lkIHJlY3Vyc2lvbiBpbiB0aGUgY2FzZSB0aGF0IHR5cGUgPT09IFwibmV3TGlzdGVuZXJcIiEgQmVmb3JlXG4gICAgLy8gYWRkaW5nIGl0IHRvIHRoZSBsaXN0ZW5lcnMsIGZpcnN0IGVtaXQgXCJuZXdMaXN0ZW5lclwiLlxuICAgIGlmIChldmVudHMubmV3TGlzdGVuZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGFyZ2V0LmVtaXQoJ25ld0xpc3RlbmVyJywgdHlwZSxcbiAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbmVyID8gbGlzdGVuZXIubGlzdGVuZXIgOiBsaXN0ZW5lcik7XG5cbiAgICAgIC8vIFJlLWFzc2lnbiBgZXZlbnRzYCBiZWNhdXNlIGEgbmV3TGlzdGVuZXIgaGFuZGxlciBjb3VsZCBoYXZlIGNhdXNlZCB0aGVcbiAgICAgIC8vIHRoaXMuX2V2ZW50cyB0byBiZSBhc3NpZ25lZCB0byBhIG5ldyBvYmplY3RcbiAgICAgIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuICAgIH1cbiAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXTtcbiAgfVxuXG4gIGlmIChleGlzdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT3B0aW1pemUgdGhlIGNhc2Ugb2Ygb25lIGxpc3RlbmVyLiBEb24ndCBuZWVkIHRoZSBleHRyYSBhcnJheSBvYmplY3QuXG4gICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV0gPSBsaXN0ZW5lcjtcbiAgICArK3RhcmdldC5fZXZlbnRzQ291bnQ7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiBleGlzdGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gQWRkaW5nIHRoZSBzZWNvbmQgZWxlbWVudCwgbmVlZCB0byBjaGFuZ2UgdG8gYXJyYXkuXG4gICAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXSA9XG4gICAgICAgIHByZXBlbmQgPyBbbGlzdGVuZXIsIGV4aXN0aW5nXSA6IFtleGlzdGluZywgbGlzdGVuZXJdO1xuICAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBnb3QgYW4gYXJyYXksIGp1c3QgYXBwZW5kLlxuICAgIH0gZWxzZSBpZiAocHJlcGVuZCkge1xuICAgICAgZXhpc3RpbmcudW5zaGlmdChsaXN0ZW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4aXN0aW5nLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBsaXN0ZW5lciBsZWFrXG4gICAgbSA9IF9nZXRNYXhMaXN0ZW5lcnModGFyZ2V0KTtcbiAgICBpZiAobSA+IDAgJiYgZXhpc3RpbmcubGVuZ3RoID4gbSAmJiAhZXhpc3Rpbmcud2FybmVkKSB7XG4gICAgICBleGlzdGluZy53YXJuZWQgPSB0cnVlO1xuICAgICAgLy8gTm8gZXJyb3IgY29kZSBmb3IgdGhpcyBzaW5jZSBpdCBpcyBhIFdhcm5pbmdcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgdmFyIHcgPSBuZXcgRXJyb3IoJ1Bvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgbGVhayBkZXRlY3RlZC4gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nLmxlbmd0aCArICcgJyArIFN0cmluZyh0eXBlKSArICcgbGlzdGVuZXJzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5jcmVhc2UgbGltaXQnKTtcbiAgICAgIHcubmFtZSA9ICdNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmcnO1xuICAgICAgdy5lbWl0dGVyID0gdGFyZ2V0O1xuICAgICAgdy50eXBlID0gdHlwZTtcbiAgICAgIHcuY291bnQgPSBleGlzdGluZy5sZW5ndGg7XG4gICAgICBQcm9jZXNzRW1pdFdhcm5pbmcodyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uIGFkZExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gIHJldHVybiBfYWRkTGlzdGVuZXIodGhpcywgdHlwZSwgbGlzdGVuZXIsIGZhbHNlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICByZXR1cm4gX2FkZExpc3RlbmVyKHRoaXMsIHR5cGUsIGxpc3RlbmVyLCB0cnVlKTtcbiAgICB9O1xuXG5mdW5jdGlvbiBvbmNlV3JhcHBlcigpIHtcbiAgaWYgKCF0aGlzLmZpcmVkKSB7XG4gICAgdGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBlLCB0aGlzLndyYXBGbik7XG4gICAgdGhpcy5maXJlZCA9IHRydWU7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gdGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0KTtcbiAgICByZXR1cm4gdGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCwgYXJndW1lbnRzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfb25jZVdyYXAodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgc3RhdGUgPSB7IGZpcmVkOiBmYWxzZSwgd3JhcEZuOiB1bmRlZmluZWQsIHRhcmdldDogdGFyZ2V0LCB0eXBlOiB0eXBlLCBsaXN0ZW5lcjogbGlzdGVuZXIgfTtcbiAgdmFyIHdyYXBwZWQgPSBvbmNlV3JhcHBlci5iaW5kKHN0YXRlKTtcbiAgd3JhcHBlZC5saXN0ZW5lciA9IGxpc3RlbmVyO1xuICBzdGF0ZS53cmFwRm4gPSB3cmFwcGVkO1xuICByZXR1cm4gd3JhcHBlZDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24gb25jZSh0eXBlLCBsaXN0ZW5lcikge1xuICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcbiAgdGhpcy5vbih0eXBlLCBfb25jZVdyYXAodGhpcywgdHlwZSwgbGlzdGVuZXIpKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHByZXBlbmRPbmNlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuICAgICAgdGhpcy5wcmVwZW5kTGlzdGVuZXIodHlwZSwgX29uY2VXcmFwKHRoaXMsIHR5cGUsIGxpc3RlbmVyKSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG4vLyBFbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWYgYW5kIG9ubHkgaWYgdGhlIGxpc3RlbmVyIHdhcyByZW1vdmVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIHZhciBsaXN0LCBldmVudHMsIHBvc2l0aW9uLCBpLCBvcmlnaW5hbExpc3RlbmVyO1xuXG4gICAgICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcblxuICAgICAgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICAgICAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgbGlzdCA9IGV2ZW50c1t0eXBlXTtcbiAgICAgIGlmIChsaXN0ID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICBpZiAobGlzdCA9PT0gbGlzdGVuZXIgfHwgbGlzdC5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKC0tdGhpcy5fZXZlbnRzQ291bnQgPT09IDApXG4gICAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIGV2ZW50c1t0eXBlXTtcbiAgICAgICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3QubGlzdGVuZXIgfHwgbGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBsaXN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHBvc2l0aW9uID0gLTE7XG5cbiAgICAgICAgZm9yIChpID0gbGlzdC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIGlmIChsaXN0W2ldID09PSBsaXN0ZW5lciB8fCBsaXN0W2ldLmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICAgICAgb3JpZ2luYWxMaXN0ZW5lciA9IGxpc3RbaV0ubGlzdGVuZXI7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zaXRpb24gPCAwKVxuICAgICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICAgIGlmIChwb3NpdGlvbiA9PT0gMClcbiAgICAgICAgICBsaXN0LnNoaWZ0KCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHNwbGljZU9uZShsaXN0LCBwb3NpdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGlzdC5sZW5ndGggPT09IDEpXG4gICAgICAgICAgZXZlbnRzW3R5cGVdID0gbGlzdFswXTtcblxuICAgICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIG9yaWdpbmFsTGlzdGVuZXIgfHwgbGlzdGVuZXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9mZiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzID1cbiAgICBmdW5jdGlvbiByZW1vdmVBbGxMaXN0ZW5lcnModHlwZSkge1xuICAgICAgdmFyIGxpc3RlbmVycywgZXZlbnRzLCBpO1xuXG4gICAgICBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gICAgICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICAvLyBub3QgbGlzdGVuaW5nIGZvciByZW1vdmVMaXN0ZW5lciwgbm8gbmVlZCB0byBlbWl0XG4gICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudHNbdHlwZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmICgtLXRoaXMuX2V2ZW50c0NvdW50ID09PSAwKVxuICAgICAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBkZWxldGUgZXZlbnRzW3R5cGVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICAvLyBlbWl0IHJlbW92ZUxpc3RlbmVyIGZvciBhbGwgbGlzdGVuZXJzIG9uIGFsbCBldmVudHNcbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZXZlbnRzKTtcbiAgICAgICAgdmFyIGtleTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgICAgIGlmIChrZXkgPT09ICdyZW1vdmVMaXN0ZW5lcicpIGNvbnRpbnVlO1xuICAgICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ3JlbW92ZUxpc3RlbmVyJyk7XG4gICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIGxpc3RlbmVycyA9IGV2ZW50c1t0eXBlXTtcblxuICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnMpO1xuICAgICAgfSBlbHNlIGlmIChsaXN0ZW5lcnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBMSUZPIG9yZGVyXG4gICAgICAgIGZvciAoaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG5mdW5jdGlvbiBfbGlzdGVuZXJzKHRhcmdldCwgdHlwZSwgdW53cmFwKSB7XG4gIHZhciBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcblxuICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIFtdO1xuXG4gIHZhciBldmxpc3RlbmVyID0gZXZlbnRzW3R5cGVdO1xuICBpZiAoZXZsaXN0ZW5lciA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBbXTtcblxuICBpZiAodHlwZW9mIGV2bGlzdGVuZXIgPT09ICdmdW5jdGlvbicpXG4gICAgcmV0dXJuIHVud3JhcCA/IFtldmxpc3RlbmVyLmxpc3RlbmVyIHx8IGV2bGlzdGVuZXJdIDogW2V2bGlzdGVuZXJdO1xuXG4gIHJldHVybiB1bndyYXAgP1xuICAgIHVud3JhcExpc3RlbmVycyhldmxpc3RlbmVyKSA6IGFycmF5Q2xvbmUoZXZsaXN0ZW5lciwgZXZsaXN0ZW5lci5sZW5ndGgpO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uIGxpc3RlbmVycyh0eXBlKSB7XG4gIHJldHVybiBfbGlzdGVuZXJzKHRoaXMsIHR5cGUsIHRydWUpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yYXdMaXN0ZW5lcnMgPSBmdW5jdGlvbiByYXdMaXN0ZW5lcnModHlwZSkge1xuICByZXR1cm4gX2xpc3RlbmVycyh0aGlzLCB0eXBlLCBmYWxzZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIubGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uKGVtaXR0ZXIsIHR5cGUpIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLmxpc3RlbmVyQ291bnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZW1pdHRlci5saXN0ZW5lckNvdW50KHR5cGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsaXN0ZW5lckNvdW50LmNhbGwoZW1pdHRlciwgdHlwZSk7XG4gIH1cbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJDb3VudCA9IGxpc3RlbmVyQ291bnQ7XG5mdW5jdGlvbiBsaXN0ZW5lckNvdW50KHR5cGUpIHtcbiAgdmFyIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcblxuICBpZiAoZXZlbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgZXZsaXN0ZW5lciA9IGV2ZW50c1t0eXBlXTtcblxuICAgIGlmICh0eXBlb2YgZXZsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIGlmIChldmxpc3RlbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBldmxpc3RlbmVyLmxlbmd0aDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5ldmVudE5hbWVzID0gZnVuY3Rpb24gZXZlbnROYW1lcygpIHtcbiAgcmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50ID4gMCA/IFJlZmxlY3RPd25LZXlzKHRoaXMuX2V2ZW50cykgOiBbXTtcbn07XG5cbmZ1bmN0aW9uIGFycmF5Q2xvbmUoYXJyLCBuKSB7XG4gIHZhciBjb3B5ID0gbmV3IEFycmF5KG4pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSlcbiAgICBjb3B5W2ldID0gYXJyW2ldO1xuICByZXR1cm4gY29weTtcbn1cblxuZnVuY3Rpb24gc3BsaWNlT25lKGxpc3QsIGluZGV4KSB7XG4gIGZvciAoOyBpbmRleCArIDEgPCBsaXN0Lmxlbmd0aDsgaW5kZXgrKylcbiAgICBsaXN0W2luZGV4XSA9IGxpc3RbaW5kZXggKyAxXTtcbiAgbGlzdC5wb3AoKTtcbn1cblxuZnVuY3Rpb24gdW53cmFwTGlzdGVuZXJzKGFycikge1xuICB2YXIgcmV0ID0gbmV3IEFycmF5KGFyci5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHJldC5sZW5ndGg7ICsraSkge1xuICAgIHJldFtpXSA9IGFycltpXS5saXN0ZW5lciB8fCBhcnJbaV07XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gb25jZShlbWl0dGVyLCBuYW1lKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZnVuY3Rpb24gZXJyb3JMaXN0ZW5lcihlcnIpIHtcbiAgICAgIGVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIobmFtZSwgcmVzb2x2ZXIpO1xuICAgICAgcmVqZWN0KGVycik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVzb2x2ZXIoKSB7XG4gICAgICBpZiAodHlwZW9mIGVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZW1pdHRlci5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBlcnJvckxpc3RlbmVyKTtcbiAgICAgIH1cbiAgICAgIHJlc29sdmUoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgICB9O1xuXG4gICAgZXZlbnRUYXJnZXRBZ25vc3RpY0FkZExpc3RlbmVyKGVtaXR0ZXIsIG5hbWUsIHJlc29sdmVyLCB7IG9uY2U6IHRydWUgfSk7XG4gICAgaWYgKG5hbWUgIT09ICdlcnJvcicpIHtcbiAgICAgIGFkZEVycm9ySGFuZGxlcklmRXZlbnRFbWl0dGVyKGVtaXR0ZXIsIGVycm9yTGlzdGVuZXIsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRFcnJvckhhbmRsZXJJZkV2ZW50RW1pdHRlcihlbWl0dGVyLCBoYW5kbGVyLCBmbGFncykge1xuICBpZiAodHlwZW9mIGVtaXR0ZXIub24gPT09ICdmdW5jdGlvbicpIHtcbiAgICBldmVudFRhcmdldEFnbm9zdGljQWRkTGlzdGVuZXIoZW1pdHRlciwgJ2Vycm9yJywgaGFuZGxlciwgZmxhZ3MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGV2ZW50VGFyZ2V0QWdub3N0aWNBZGRMaXN0ZW5lcihlbWl0dGVyLCBuYW1lLCBsaXN0ZW5lciwgZmxhZ3MpIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLm9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKGZsYWdzLm9uY2UpIHtcbiAgICAgIGVtaXR0ZXIub25jZShuYW1lLCBsaXN0ZW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVtaXR0ZXIub24obmFtZSwgbGlzdGVuZXIpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgZW1pdHRlci5hZGRFdmVudExpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gRXZlbnRUYXJnZXQgZG9lcyBub3QgaGF2ZSBgZXJyb3JgIGV2ZW50IHNlbWFudGljcyBsaWtlIE5vZGVcbiAgICAvLyBFdmVudEVtaXR0ZXJzLCB3ZSBkbyBub3QgbGlzdGVuIGZvciBgZXJyb3JgIGV2ZW50cyBoZXJlLlxuICAgIGVtaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBmdW5jdGlvbiB3cmFwTGlzdGVuZXIoYXJnKSB7XG4gICAgICAvLyBJRSBkb2VzIG5vdCBoYXZlIGJ1aWx0aW4gYHsgb25jZTogdHJ1ZSB9YCBzdXBwb3J0IHNvIHdlXG4gICAgICAvLyBoYXZlIHRvIGRvIGl0IG1hbnVhbGx5LlxuICAgICAgaWYgKGZsYWdzLm9uY2UpIHtcbiAgICAgICAgZW1pdHRlci5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIHdyYXBMaXN0ZW5lcik7XG4gICAgICB9XG4gICAgICBsaXN0ZW5lcihhcmcpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImVtaXR0ZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRXZlbnRFbWl0dGVyLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgZW1pdHRlcik7XG4gIH1cbn1cbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIE1ENSA9IHJlcXVpcmUoJ21kNS5qcycpXG5cbi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuZnVuY3Rpb24gRVZQX0J5dGVzVG9LZXkgKHBhc3N3b3JkLCBzYWx0LCBrZXlCaXRzLCBpdkxlbikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwYXNzd29yZCkpIHBhc3N3b3JkID0gQnVmZmVyLmZyb20ocGFzc3dvcmQsICdiaW5hcnknKVxuICBpZiAoc2FsdCkge1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKHNhbHQpKSBzYWx0ID0gQnVmZmVyLmZyb20oc2FsdCwgJ2JpbmFyeScpXG4gICAgaWYgKHNhbHQubGVuZ3RoICE9PSA4KSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc2FsdCBzaG91bGQgYmUgQnVmZmVyIHdpdGggOCBieXRlIGxlbmd0aCcpXG4gIH1cblxuICB2YXIga2V5TGVuID0ga2V5Qml0cyAvIDhcbiAgdmFyIGtleSA9IEJ1ZmZlci5hbGxvYyhrZXlMZW4pXG4gIHZhciBpdiA9IEJ1ZmZlci5hbGxvYyhpdkxlbiB8fCAwKVxuICB2YXIgdG1wID0gQnVmZmVyLmFsbG9jKDApXG5cbiAgd2hpbGUgKGtleUxlbiA+IDAgfHwgaXZMZW4gPiAwKSB7XG4gICAgdmFyIGhhc2ggPSBuZXcgTUQ1KClcbiAgICBoYXNoLnVwZGF0ZSh0bXApXG4gICAgaGFzaC51cGRhdGUocGFzc3dvcmQpXG4gICAgaWYgKHNhbHQpIGhhc2gudXBkYXRlKHNhbHQpXG4gICAgdG1wID0gaGFzaC5kaWdlc3QoKVxuXG4gICAgdmFyIHVzZWQgPSAwXG5cbiAgICBpZiAoa2V5TGVuID4gMCkge1xuICAgICAgdmFyIGtleVN0YXJ0ID0ga2V5Lmxlbmd0aCAtIGtleUxlblxuICAgICAgdXNlZCA9IE1hdGgubWluKGtleUxlbiwgdG1wLmxlbmd0aClcbiAgICAgIHRtcC5jb3B5KGtleSwga2V5U3RhcnQsIDAsIHVzZWQpXG4gICAgICBrZXlMZW4gLT0gdXNlZFxuICAgIH1cblxuICAgIGlmICh1c2VkIDwgdG1wLmxlbmd0aCAmJiBpdkxlbiA+IDApIHtcbiAgICAgIHZhciBpdlN0YXJ0ID0gaXYubGVuZ3RoIC0gaXZMZW5cbiAgICAgIHZhciBsZW5ndGggPSBNYXRoLm1pbihpdkxlbiwgdG1wLmxlbmd0aCAtIHVzZWQpXG4gICAgICB0bXAuY29weShpdiwgaXZTdGFydCwgdXNlZCwgdXNlZCArIGxlbmd0aClcbiAgICAgIGl2TGVuIC09IGxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIHRtcC5maWxsKDApXG4gIHJldHVybiB7IGtleToga2V5LCBpdjogaXYgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVWUF9CeXRlc1RvS2V5XG4iLCJcbnZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmb3JFYWNoIChvYmosIGZuLCBjdHgpIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChmbikgIT09ICdbb2JqZWN0IEZ1bmN0aW9uXScpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaXRlcmF0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuICAgIHZhciBsID0gb2JqLmxlbmd0aDtcbiAgICBpZiAobCA9PT0gK2wpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIGZuLmNhbGwoY3R4LCBvYmpbaV0sIGksIG9iaik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBrIGluIG9iaikge1xuICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKG9iaiwgaykpIHtcbiAgICAgICAgICAgICAgICBmbi5jYWxsKGN0eCwgb2JqW2tdLCBrLCBvYmopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBlc2xpbnQgbm8taW52YWxpZC10aGlzOiAxICovXG5cbnZhciBFUlJPUl9NRVNTQUdFID0gJ0Z1bmN0aW9uLnByb3RvdHlwZS5iaW5kIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgJztcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgZnVuY1R5cGUgPSAnW29iamVjdCBGdW5jdGlvbl0nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJpbmQodGhhdCkge1xuICAgIHZhciB0YXJnZXQgPSB0aGlzO1xuICAgIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAnZnVuY3Rpb24nIHx8IHRvU3RyLmNhbGwodGFyZ2V0KSAhPT0gZnVuY1R5cGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihFUlJPUl9NRVNTQUdFICsgdGFyZ2V0KTtcbiAgICB9XG4gICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG5cbiAgICB2YXIgYm91bmQ7XG4gICAgdmFyIGJpbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBib3VuZCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRhcmdldC5hcHBseShcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIGFyZ3MuY29uY2F0KHNsaWNlLmNhbGwoYXJndW1lbnRzKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoT2JqZWN0KHJlc3VsdCkgPT09IHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQuYXBwbHkoXG4gICAgICAgICAgICAgICAgdGhhdCxcbiAgICAgICAgICAgICAgICBhcmdzLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cykpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHZhciBib3VuZExlbmd0aCA9IE1hdGgubWF4KDAsIHRhcmdldC5sZW5ndGggLSBhcmdzLmxlbmd0aCk7XG4gICAgdmFyIGJvdW5kQXJncyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm91bmRMZW5ndGg7IGkrKykge1xuICAgICAgICBib3VuZEFyZ3MucHVzaCgnJCcgKyBpKTtcbiAgICB9XG5cbiAgICBib3VuZCA9IEZ1bmN0aW9uKCdiaW5kZXInLCAncmV0dXJuIGZ1bmN0aW9uICgnICsgYm91bmRBcmdzLmpvaW4oJywnKSArICcpeyByZXR1cm4gYmluZGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsgfScpKGJpbmRlcik7XG5cbiAgICBpZiAodGFyZ2V0LnByb3RvdHlwZSkge1xuICAgICAgICB2YXIgRW1wdHkgPSBmdW5jdGlvbiBFbXB0eSgpIHt9O1xuICAgICAgICBFbXB0eS5wcm90b3R5cGUgPSB0YXJnZXQucHJvdG90eXBlO1xuICAgICAgICBib3VuZC5wcm90b3R5cGUgPSBuZXcgRW1wdHkoKTtcbiAgICAgICAgRW1wdHkucHJvdG90eXBlID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gYm91bmQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgfHwgaW1wbGVtZW50YXRpb247XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1bmRlZmluZWQ7XG5cbnZhciAkU3ludGF4RXJyb3IgPSBTeW50YXhFcnJvcjtcbnZhciAkRnVuY3Rpb24gPSBGdW5jdGlvbjtcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbnZhciBnZXRFdmFsbGVkQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoZXhwcmVzc2lvblN5bnRheCkge1xuXHR0cnkge1xuXHRcdHJldHVybiAkRnVuY3Rpb24oJ1widXNlIHN0cmljdFwiOyByZXR1cm4gKCcgKyBleHByZXNzaW9uU3ludGF4ICsgJykuY29uc3RydWN0b3I7JykoKTtcblx0fSBjYXRjaCAoZSkge31cbn07XG5cbnZhciAkZ09QRCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5pZiAoJGdPUEQpIHtcblx0dHJ5IHtcblx0XHQkZ09QRCh7fSwgJycpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0JGdPUEQgPSBudWxsOyAvLyB0aGlzIGlzIElFIDgsIHdoaWNoIGhhcyBhIGJyb2tlbiBnT1BEXG5cdH1cbn1cblxudmFyIHRocm93VHlwZUVycm9yID0gZnVuY3Rpb24gKCkge1xuXHR0aHJvdyBuZXcgJFR5cGVFcnJvcigpO1xufTtcbnZhciBUaHJvd1R5cGVFcnJvciA9ICRnT1BEXG5cdD8gKGZ1bmN0aW9uICgpIHtcblx0XHR0cnkge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC1leHByZXNzaW9ucywgbm8tY2FsbGVyLCBuby1yZXN0cmljdGVkLXByb3BlcnRpZXNcblx0XHRcdGFyZ3VtZW50cy5jYWxsZWU7IC8vIElFIDggZG9lcyBub3QgdGhyb3cgaGVyZVxuXHRcdFx0cmV0dXJuIHRocm93VHlwZUVycm9yO1xuXHRcdH0gY2F0Y2ggKGNhbGxlZVRocm93cykge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Ly8gSUUgOCB0aHJvd3Mgb24gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICcnKVxuXHRcdFx0XHRyZXR1cm4gJGdPUEQoYXJndW1lbnRzLCAnY2FsbGVlJykuZ2V0O1xuXHRcdFx0fSBjYXRjaCAoZ09QRHRocm93cykge1xuXHRcdFx0XHRyZXR1cm4gdGhyb3dUeXBlRXJyb3I7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KCkpXG5cdDogdGhyb3dUeXBlRXJyb3I7XG5cbnZhciBoYXNTeW1ib2xzID0gcmVxdWlyZSgnaGFzLXN5bWJvbHMnKSgpO1xuXG52YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHguX19wcm90b19fOyB9OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXByb3RvXG5cbnZhciBuZWVkc0V2YWwgPSB7fTtcblxudmFyIFR5cGVkQXJyYXkgPSB0eXBlb2YgVWludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBnZXRQcm90byhVaW50OEFycmF5KTtcblxudmFyIElOVFJJTlNJQ1MgPSB7XG5cdCclQWdncmVnYXRlRXJyb3IlJzogdHlwZW9mIEFnZ3JlZ2F0ZUVycm9yID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEFnZ3JlZ2F0ZUVycm9yLFxuXHQnJUFycmF5JSc6IEFycmF5LFxuXHQnJUFycmF5QnVmZmVyJSc6IHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBBcnJheUJ1ZmZlcixcblx0JyVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJSc6IGhhc1N5bWJvbHMgPyBnZXRQcm90byhbXVtTeW1ib2wuaXRlcmF0b3JdKCkpIDogdW5kZWZpbmVkLFxuXHQnJUFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSUnOiB1bmRlZmluZWQsXG5cdCclQXN5bmNGdW5jdGlvbiUnOiBuZWVkc0V2YWwsXG5cdCclQXN5bmNHZW5lcmF0b3IlJzogbmVlZHNFdmFsLFxuXHQnJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lJzogbmVlZHNFdmFsLFxuXHQnJUFzeW5jSXRlcmF0b3JQcm90b3R5cGUlJzogbmVlZHNFdmFsLFxuXHQnJUF0b21pY3MlJzogdHlwZW9mIEF0b21pY3MgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogQXRvbWljcyxcblx0JyVCaWdJbnQlJzogdHlwZW9mIEJpZ0ludCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBCaWdJbnQsXG5cdCclQm9vbGVhbiUnOiBCb29sZWFuLFxuXHQnJURhdGFWaWV3JSc6IHR5cGVvZiBEYXRhVmlldyA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBEYXRhVmlldyxcblx0JyVEYXRlJSc6IERhdGUsXG5cdCclZGVjb2RlVVJJJSc6IGRlY29kZVVSSSxcblx0JyVkZWNvZGVVUklDb21wb25lbnQlJzogZGVjb2RlVVJJQ29tcG9uZW50LFxuXHQnJWVuY29kZVVSSSUnOiBlbmNvZGVVUkksXG5cdCclZW5jb2RlVVJJQ29tcG9uZW50JSc6IGVuY29kZVVSSUNvbXBvbmVudCxcblx0JyVFcnJvciUnOiBFcnJvcixcblx0JyVldmFsJSc6IGV2YWwsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXZhbFxuXHQnJUV2YWxFcnJvciUnOiBFdmFsRXJyb3IsXG5cdCclRmxvYXQzMkFycmF5JSc6IHR5cGVvZiBGbG9hdDMyQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRmxvYXQzMkFycmF5LFxuXHQnJUZsb2F0NjRBcnJheSUnOiB0eXBlb2YgRmxvYXQ2NEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZsb2F0NjRBcnJheSxcblx0JyVGaW5hbGl6YXRpb25SZWdpc3RyeSUnOiB0eXBlb2YgRmluYWxpemF0aW9uUmVnaXN0cnkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRmluYWxpemF0aW9uUmVnaXN0cnksXG5cdCclRnVuY3Rpb24lJzogJEZ1bmN0aW9uLFxuXHQnJUdlbmVyYXRvckZ1bmN0aW9uJSc6IG5lZWRzRXZhbCxcblx0JyVJbnQ4QXJyYXklJzogdHlwZW9mIEludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBJbnQ4QXJyYXksXG5cdCclSW50MTZBcnJheSUnOiB0eXBlb2YgSW50MTZBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBJbnQxNkFycmF5LFxuXHQnJUludDMyQXJyYXklJzogdHlwZW9mIEludDMyQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogSW50MzJBcnJheSxcblx0JyVpc0Zpbml0ZSUnOiBpc0Zpbml0ZSxcblx0JyVpc05hTiUnOiBpc05hTixcblx0JyVJdGVyYXRvclByb3RvdHlwZSUnOiBoYXNTeW1ib2xzID8gZ2V0UHJvdG8oZ2V0UHJvdG8oW11bU3ltYm9sLml0ZXJhdG9yXSgpKSkgOiB1bmRlZmluZWQsXG5cdCclSlNPTiUnOiB0eXBlb2YgSlNPTiA9PT0gJ29iamVjdCcgPyBKU09OIDogdW5kZWZpbmVkLFxuXHQnJU1hcCUnOiB0eXBlb2YgTWFwID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IE1hcCxcblx0JyVNYXBJdGVyYXRvclByb3RvdHlwZSUnOiB0eXBlb2YgTWFwID09PSAndW5kZWZpbmVkJyB8fCAhaGFzU3ltYm9scyA/IHVuZGVmaW5lZCA6IGdldFByb3RvKG5ldyBNYXAoKVtTeW1ib2wuaXRlcmF0b3JdKCkpLFxuXHQnJU1hdGglJzogTWF0aCxcblx0JyVOdW1iZXIlJzogTnVtYmVyLFxuXHQnJU9iamVjdCUnOiBPYmplY3QsXG5cdCclcGFyc2VGbG9hdCUnOiBwYXJzZUZsb2F0LFxuXHQnJXBhcnNlSW50JSc6IHBhcnNlSW50LFxuXHQnJVByb21pc2UlJzogdHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogUHJvbWlzZSxcblx0JyVQcm94eSUnOiB0eXBlb2YgUHJveHkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogUHJveHksXG5cdCclUmFuZ2VFcnJvciUnOiBSYW5nZUVycm9yLFxuXHQnJVJlZmVyZW5jZUVycm9yJSc6IFJlZmVyZW5jZUVycm9yLFxuXHQnJVJlZmxlY3QlJzogdHlwZW9mIFJlZmxlY3QgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogUmVmbGVjdCxcblx0JyVSZWdFeHAlJzogUmVnRXhwLFxuXHQnJVNldCUnOiB0eXBlb2YgU2V0ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFNldCxcblx0JyVTZXRJdGVyYXRvclByb3RvdHlwZSUnOiB0eXBlb2YgU2V0ID09PSAndW5kZWZpbmVkJyB8fCAhaGFzU3ltYm9scyA/IHVuZGVmaW5lZCA6IGdldFByb3RvKG5ldyBTZXQoKVtTeW1ib2wuaXRlcmF0b3JdKCkpLFxuXHQnJVNoYXJlZEFycmF5QnVmZmVyJSc6IHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBTaGFyZWRBcnJheUJ1ZmZlcixcblx0JyVTdHJpbmclJzogU3RyaW5nLFxuXHQnJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJSc6IGhhc1N5bWJvbHMgPyBnZXRQcm90bygnJ1tTeW1ib2wuaXRlcmF0b3JdKCkpIDogdW5kZWZpbmVkLFxuXHQnJVN5bWJvbCUnOiBoYXNTeW1ib2xzID8gU3ltYm9sIDogdW5kZWZpbmVkLFxuXHQnJVN5bnRheEVycm9yJSc6ICRTeW50YXhFcnJvcixcblx0JyVUaHJvd1R5cGVFcnJvciUnOiBUaHJvd1R5cGVFcnJvcixcblx0JyVUeXBlZEFycmF5JSc6IFR5cGVkQXJyYXksXG5cdCclVHlwZUVycm9yJSc6ICRUeXBlRXJyb3IsXG5cdCclVWludDhBcnJheSUnOiB0eXBlb2YgVWludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50OEFycmF5LFxuXHQnJVVpbnQ4Q2xhbXBlZEFycmF5JSc6IHR5cGVvZiBVaW50OENsYW1wZWRBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50OENsYW1wZWRBcnJheSxcblx0JyVVaW50MTZBcnJheSUnOiB0eXBlb2YgVWludDE2QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDE2QXJyYXksXG5cdCclVWludDMyQXJyYXklJzogdHlwZW9mIFVpbnQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFVpbnQzMkFycmF5LFxuXHQnJVVSSUVycm9yJSc6IFVSSUVycm9yLFxuXHQnJVdlYWtNYXAlJzogdHlwZW9mIFdlYWtNYXAgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogV2Vha01hcCxcblx0JyVXZWFrUmVmJSc6IHR5cGVvZiBXZWFrUmVmID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFdlYWtSZWYsXG5cdCclV2Vha1NldCUnOiB0eXBlb2YgV2Vha1NldCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBXZWFrU2V0XG59O1xuXG52YXIgZG9FdmFsID0gZnVuY3Rpb24gZG9FdmFsKG5hbWUpIHtcblx0dmFyIHZhbHVlO1xuXHRpZiAobmFtZSA9PT0gJyVBc3luY0Z1bmN0aW9uJScpIHtcblx0XHR2YWx1ZSA9IGdldEV2YWxsZWRDb25zdHJ1Y3RvcignYXN5bmMgZnVuY3Rpb24gKCkge30nKTtcblx0fSBlbHNlIGlmIChuYW1lID09PSAnJUdlbmVyYXRvckZ1bmN0aW9uJScpIHtcblx0XHR2YWx1ZSA9IGdldEV2YWxsZWRDb25zdHJ1Y3RvcignZnVuY3Rpb24qICgpIHt9Jyk7XG5cdH0gZWxzZSBpZiAobmFtZSA9PT0gJyVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJScpIHtcblx0XHR2YWx1ZSA9IGdldEV2YWxsZWRDb25zdHJ1Y3RvcignYXN5bmMgZnVuY3Rpb24qICgpIHt9Jyk7XG5cdH0gZWxzZSBpZiAobmFtZSA9PT0gJyVBc3luY0dlbmVyYXRvciUnKSB7XG5cdFx0dmFyIGZuID0gZG9FdmFsKCclQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiUnKTtcblx0XHRpZiAoZm4pIHtcblx0XHRcdHZhbHVlID0gZm4ucHJvdG90eXBlO1xuXHRcdH1cblx0fSBlbHNlIGlmIChuYW1lID09PSAnJUFzeW5jSXRlcmF0b3JQcm90b3R5cGUlJykge1xuXHRcdHZhciBnZW4gPSBkb0V2YWwoJyVBc3luY0dlbmVyYXRvciUnKTtcblx0XHRpZiAoZ2VuKSB7XG5cdFx0XHR2YWx1ZSA9IGdldFByb3RvKGdlbi5wcm90b3R5cGUpO1xuXHRcdH1cblx0fVxuXG5cdElOVFJJTlNJQ1NbbmFtZV0gPSB2YWx1ZTtcblxuXHRyZXR1cm4gdmFsdWU7XG59O1xuXG52YXIgTEVHQUNZX0FMSUFTRVMgPSB7XG5cdCclQXJyYXlCdWZmZXJQcm90b3R5cGUlJzogWydBcnJheUJ1ZmZlcicsICdwcm90b3R5cGUnXSxcblx0JyVBcnJheVByb3RvdHlwZSUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUFycmF5UHJvdG9fZW50cmllcyUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZScsICdlbnRyaWVzJ10sXG5cdCclQXJyYXlQcm90b19mb3JFYWNoJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJywgJ2ZvckVhY2gnXSxcblx0JyVBcnJheVByb3RvX2tleXMlJzogWydBcnJheScsICdwcm90b3R5cGUnLCAna2V5cyddLFxuXHQnJUFycmF5UHJvdG9fdmFsdWVzJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJywgJ3ZhbHVlcyddLFxuXHQnJUFzeW5jRnVuY3Rpb25Qcm90b3R5cGUlJzogWydBc3luY0Z1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUFzeW5jR2VuZXJhdG9yJSc6IFsnQXN5bmNHZW5lcmF0b3JGdW5jdGlvbicsICdwcm90b3R5cGUnXSxcblx0JyVBc3luY0dlbmVyYXRvclByb3RvdHlwZSUnOiBbJ0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24nLCAncHJvdG90eXBlJywgJ3Byb3RvdHlwZSddLFxuXHQnJUJvb2xlYW5Qcm90b3R5cGUlJzogWydCb29sZWFuJywgJ3Byb3RvdHlwZSddLFxuXHQnJURhdGFWaWV3UHJvdG90eXBlJSc6IFsnRGF0YVZpZXcnLCAncHJvdG90eXBlJ10sXG5cdCclRGF0ZVByb3RvdHlwZSUnOiBbJ0RhdGUnLCAncHJvdG90eXBlJ10sXG5cdCclRXJyb3JQcm90b3R5cGUlJzogWydFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVFdmFsRXJyb3JQcm90b3R5cGUlJzogWydFdmFsRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclRmxvYXQzMkFycmF5UHJvdG90eXBlJSc6IFsnRmxvYXQzMkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUZsb2F0NjRBcnJheVByb3RvdHlwZSUnOiBbJ0Zsb2F0NjRBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVGdW5jdGlvblByb3RvdHlwZSUnOiBbJ0Z1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUdlbmVyYXRvciUnOiBbJ0dlbmVyYXRvckZ1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUdlbmVyYXRvclByb3RvdHlwZSUnOiBbJ0dlbmVyYXRvckZ1bmN0aW9uJywgJ3Byb3RvdHlwZScsICdwcm90b3R5cGUnXSxcblx0JyVJbnQ4QXJyYXlQcm90b3R5cGUlJzogWydJbnQ4QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclSW50MTZBcnJheVByb3RvdHlwZSUnOiBbJ0ludDE2QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclSW50MzJBcnJheVByb3RvdHlwZSUnOiBbJ0ludDMyQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclSlNPTlBhcnNlJSc6IFsnSlNPTicsICdwYXJzZSddLFxuXHQnJUpTT05TdHJpbmdpZnklJzogWydKU09OJywgJ3N0cmluZ2lmeSddLFxuXHQnJU1hcFByb3RvdHlwZSUnOiBbJ01hcCcsICdwcm90b3R5cGUnXSxcblx0JyVOdW1iZXJQcm90b3R5cGUlJzogWydOdW1iZXInLCAncHJvdG90eXBlJ10sXG5cdCclT2JqZWN0UHJvdG90eXBlJSc6IFsnT2JqZWN0JywgJ3Byb3RvdHlwZSddLFxuXHQnJU9ialByb3RvX3RvU3RyaW5nJSc6IFsnT2JqZWN0JywgJ3Byb3RvdHlwZScsICd0b1N0cmluZyddLFxuXHQnJU9ialByb3RvX3ZhbHVlT2YlJzogWydPYmplY3QnLCAncHJvdG90eXBlJywgJ3ZhbHVlT2YnXSxcblx0JyVQcm9taXNlUHJvdG90eXBlJSc6IFsnUHJvbWlzZScsICdwcm90b3R5cGUnXSxcblx0JyVQcm9taXNlUHJvdG9fdGhlbiUnOiBbJ1Byb21pc2UnLCAncHJvdG90eXBlJywgJ3RoZW4nXSxcblx0JyVQcm9taXNlX2FsbCUnOiBbJ1Byb21pc2UnLCAnYWxsJ10sXG5cdCclUHJvbWlzZV9yZWplY3QlJzogWydQcm9taXNlJywgJ3JlamVjdCddLFxuXHQnJVByb21pc2VfcmVzb2x2ZSUnOiBbJ1Byb21pc2UnLCAncmVzb2x2ZSddLFxuXHQnJVJhbmdlRXJyb3JQcm90b3R5cGUlJzogWydSYW5nZUVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJVJlZmVyZW5jZUVycm9yUHJvdG90eXBlJSc6IFsnUmVmZXJlbmNlRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclUmVnRXhwUHJvdG90eXBlJSc6IFsnUmVnRXhwJywgJ3Byb3RvdHlwZSddLFxuXHQnJVNldFByb3RvdHlwZSUnOiBbJ1NldCcsICdwcm90b3R5cGUnXSxcblx0JyVTaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZSUnOiBbJ1NoYXJlZEFycmF5QnVmZmVyJywgJ3Byb3RvdHlwZSddLFxuXHQnJVN0cmluZ1Byb3RvdHlwZSUnOiBbJ1N0cmluZycsICdwcm90b3R5cGUnXSxcblx0JyVTeW1ib2xQcm90b3R5cGUlJzogWydTeW1ib2wnLCAncHJvdG90eXBlJ10sXG5cdCclU3ludGF4RXJyb3JQcm90b3R5cGUlJzogWydTeW50YXhFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVUeXBlZEFycmF5UHJvdG90eXBlJSc6IFsnVHlwZWRBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVUeXBlRXJyb3JQcm90b3R5cGUlJzogWydUeXBlRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclVWludDhBcnJheVByb3RvdHlwZSUnOiBbJ1VpbnQ4QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVWludDhDbGFtcGVkQXJyYXlQcm90b3R5cGUlJzogWydVaW50OENsYW1wZWRBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVVaW50MTZBcnJheVByb3RvdHlwZSUnOiBbJ1VpbnQxNkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJVVpbnQzMkFycmF5UHJvdG90eXBlJSc6IFsnVWludDMyQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVVJJRXJyb3JQcm90b3R5cGUlJzogWydVUklFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVXZWFrTWFwUHJvdG90eXBlJSc6IFsnV2Vha01hcCcsICdwcm90b3R5cGUnXSxcblx0JyVXZWFrU2V0UHJvdG90eXBlJSc6IFsnV2Vha1NldCcsICdwcm90b3R5cGUnXVxufTtcblxudmFyIGJpbmQgPSByZXF1aXJlKCdmdW5jdGlvbi1iaW5kJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnaGFzJyk7XG52YXIgJGNvbmNhdCA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCBBcnJheS5wcm90b3R5cGUuY29uY2F0KTtcbnZhciAkc3BsaWNlQXBwbHkgPSBiaW5kLmNhbGwoRnVuY3Rpb24uYXBwbHksIEFycmF5LnByb3RvdHlwZS5zcGxpY2UpO1xudmFyICRyZXBsYWNlID0gYmluZC5jYWxsKEZ1bmN0aW9uLmNhbGwsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSk7XG52YXIgJHN0clNsaWNlID0gYmluZC5jYWxsKEZ1bmN0aW9uLmNhbGwsIFN0cmluZy5wcm90b3R5cGUuc2xpY2UpO1xuXG4vKiBhZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvYmxvYi80LjE3LjE1L2Rpc3QvbG9kYXNoLmpzI0w2NzM1LUw2NzQ0ICovXG52YXIgcmVQcm9wTmFtZSA9IC9bXiUuW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JSQpKS9nO1xudmFyIHJlRXNjYXBlQ2hhciA9IC9cXFxcKFxcXFwpPy9nOyAvKiogVXNlZCB0byBtYXRjaCBiYWNrc2xhc2hlcyBpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciBzdHJpbmdUb1BhdGggPSBmdW5jdGlvbiBzdHJpbmdUb1BhdGgoc3RyaW5nKSB7XG5cdHZhciBmaXJzdCA9ICRzdHJTbGljZShzdHJpbmcsIDAsIDEpO1xuXHR2YXIgbGFzdCA9ICRzdHJTbGljZShzdHJpbmcsIC0xKTtcblx0aWYgKGZpcnN0ID09PSAnJScgJiYgbGFzdCAhPT0gJyUnKSB7XG5cdFx0dGhyb3cgbmV3ICRTeW50YXhFcnJvcignaW52YWxpZCBpbnRyaW5zaWMgc3ludGF4LCBleHBlY3RlZCBjbG9zaW5nIGAlYCcpO1xuXHR9IGVsc2UgaWYgKGxhc3QgPT09ICclJyAmJiBmaXJzdCAhPT0gJyUnKSB7XG5cdFx0dGhyb3cgbmV3ICRTeW50YXhFcnJvcignaW52YWxpZCBpbnRyaW5zaWMgc3ludGF4LCBleHBlY3RlZCBvcGVuaW5nIGAlYCcpO1xuXHR9XG5cdHZhciByZXN1bHQgPSBbXTtcblx0JHJlcGxhY2Uoc3RyaW5nLCByZVByb3BOYW1lLCBmdW5jdGlvbiAobWF0Y2gsIG51bWJlciwgcXVvdGUsIHN1YlN0cmluZykge1xuXHRcdHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHF1b3RlID8gJHJlcGxhY2Uoc3ViU3RyaW5nLCByZUVzY2FwZUNoYXIsICckMScpIDogbnVtYmVyIHx8IG1hdGNoO1xuXHR9KTtcblx0cmV0dXJuIHJlc3VsdDtcbn07XG4vKiBlbmQgYWRhcHRhdGlvbiAqL1xuXG52YXIgZ2V0QmFzZUludHJpbnNpYyA9IGZ1bmN0aW9uIGdldEJhc2VJbnRyaW5zaWMobmFtZSwgYWxsb3dNaXNzaW5nKSB7XG5cdHZhciBpbnRyaW5zaWNOYW1lID0gbmFtZTtcblx0dmFyIGFsaWFzO1xuXHRpZiAoaGFzT3duKExFR0FDWV9BTElBU0VTLCBpbnRyaW5zaWNOYW1lKSkge1xuXHRcdGFsaWFzID0gTEVHQUNZX0FMSUFTRVNbaW50cmluc2ljTmFtZV07XG5cdFx0aW50cmluc2ljTmFtZSA9ICclJyArIGFsaWFzWzBdICsgJyUnO1xuXHR9XG5cblx0aWYgKGhhc093bihJTlRSSU5TSUNTLCBpbnRyaW5zaWNOYW1lKSkge1xuXHRcdHZhciB2YWx1ZSA9IElOVFJJTlNJQ1NbaW50cmluc2ljTmFtZV07XG5cdFx0aWYgKHZhbHVlID09PSBuZWVkc0V2YWwpIHtcblx0XHRcdHZhbHVlID0gZG9FdmFsKGludHJpbnNpY05hbWUpO1xuXHRcdH1cblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyAmJiAhYWxsb3dNaXNzaW5nKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignaW50cmluc2ljICcgKyBuYW1lICsgJyBleGlzdHMsIGJ1dCBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgZmlsZSBhbiBpc3N1ZSEnKTtcblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0YWxpYXM6IGFsaWFzLFxuXHRcdFx0bmFtZTogaW50cmluc2ljTmFtZSxcblx0XHRcdHZhbHVlOiB2YWx1ZVxuXHRcdH07XG5cdH1cblxuXHR0aHJvdyBuZXcgJFN5bnRheEVycm9yKCdpbnRyaW5zaWMgJyArIG5hbWUgKyAnIGRvZXMgbm90IGV4aXN0IScpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBHZXRJbnRyaW5zaWMobmFtZSwgYWxsb3dNaXNzaW5nKSB7XG5cdGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycgfHwgbmFtZS5sZW5ndGggPT09IDApIHtcblx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignaW50cmluc2ljIG5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcblx0fVxuXHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlwZW9mIGFsbG93TWlzc2luZyAhPT0gJ2Jvb2xlYW4nKSB7XG5cdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ1wiYWxsb3dNaXNzaW5nXCIgYXJndW1lbnQgbXVzdCBiZSBhIGJvb2xlYW4nKTtcblx0fVxuXG5cdHZhciBwYXJ0cyA9IHN0cmluZ1RvUGF0aChuYW1lKTtcblx0dmFyIGludHJpbnNpY0Jhc2VOYW1lID0gcGFydHMubGVuZ3RoID4gMCA/IHBhcnRzWzBdIDogJyc7XG5cblx0dmFyIGludHJpbnNpYyA9IGdldEJhc2VJbnRyaW5zaWMoJyUnICsgaW50cmluc2ljQmFzZU5hbWUgKyAnJScsIGFsbG93TWlzc2luZyk7XG5cdHZhciBpbnRyaW5zaWNSZWFsTmFtZSA9IGludHJpbnNpYy5uYW1lO1xuXHR2YXIgdmFsdWUgPSBpbnRyaW5zaWMudmFsdWU7XG5cdHZhciBza2lwRnVydGhlckNhY2hpbmcgPSBmYWxzZTtcblxuXHR2YXIgYWxpYXMgPSBpbnRyaW5zaWMuYWxpYXM7XG5cdGlmIChhbGlhcykge1xuXHRcdGludHJpbnNpY0Jhc2VOYW1lID0gYWxpYXNbMF07XG5cdFx0JHNwbGljZUFwcGx5KHBhcnRzLCAkY29uY2F0KFswLCAxXSwgYWxpYXMpKTtcblx0fVxuXG5cdGZvciAodmFyIGkgPSAxLCBpc093biA9IHRydWU7IGkgPCBwYXJ0cy5sZW5ndGg7IGkgKz0gMSkge1xuXHRcdHZhciBwYXJ0ID0gcGFydHNbaV07XG5cdFx0dmFyIGZpcnN0ID0gJHN0clNsaWNlKHBhcnQsIDAsIDEpO1xuXHRcdHZhciBsYXN0ID0gJHN0clNsaWNlKHBhcnQsIC0xKTtcblx0XHRpZiAoXG5cdFx0XHQoXG5cdFx0XHRcdChmaXJzdCA9PT0gJ1wiJyB8fCBmaXJzdCA9PT0gXCInXCIgfHwgZmlyc3QgPT09ICdgJylcblx0XHRcdFx0fHwgKGxhc3QgPT09ICdcIicgfHwgbGFzdCA9PT0gXCInXCIgfHwgbGFzdCA9PT0gJ2AnKVxuXHRcdFx0KVxuXHRcdFx0JiYgZmlyc3QgIT09IGxhc3Rcblx0XHQpIHtcblx0XHRcdHRocm93IG5ldyAkU3ludGF4RXJyb3IoJ3Byb3BlcnR5IG5hbWVzIHdpdGggcXVvdGVzIG11c3QgaGF2ZSBtYXRjaGluZyBxdW90ZXMnKTtcblx0XHR9XG5cdFx0aWYgKHBhcnQgPT09ICdjb25zdHJ1Y3RvcicgfHwgIWlzT3duKSB7XG5cdFx0XHRza2lwRnVydGhlckNhY2hpbmcgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGludHJpbnNpY0Jhc2VOYW1lICs9ICcuJyArIHBhcnQ7XG5cdFx0aW50cmluc2ljUmVhbE5hbWUgPSAnJScgKyBpbnRyaW5zaWNCYXNlTmFtZSArICclJztcblxuXHRcdGlmIChoYXNPd24oSU5UUklOU0lDUywgaW50cmluc2ljUmVhbE5hbWUpKSB7XG5cdFx0XHR2YWx1ZSA9IElOVFJJTlNJQ1NbaW50cmluc2ljUmVhbE5hbWVdO1xuXHRcdH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuXHRcdFx0aWYgKCEocGFydCBpbiB2YWx1ZSkpIHtcblx0XHRcdFx0aWYgKCFhbGxvd01pc3NpbmcpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignYmFzZSBpbnRyaW5zaWMgZm9yICcgKyBuYW1lICsgJyBleGlzdHMsIGJ1dCB0aGUgcHJvcGVydHkgaXMgbm90IGF2YWlsYWJsZS4nKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdm9pZCB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0XHRpZiAoJGdPUEQgJiYgKGkgKyAxKSA+PSBwYXJ0cy5sZW5ndGgpIHtcblx0XHRcdFx0dmFyIGRlc2MgPSAkZ09QRCh2YWx1ZSwgcGFydCk7XG5cdFx0XHRcdGlzT3duID0gISFkZXNjO1xuXG5cdFx0XHRcdC8vIEJ5IGNvbnZlbnRpb24sIHdoZW4gYSBkYXRhIHByb3BlcnR5IGlzIGNvbnZlcnRlZCB0byBhbiBhY2Nlc3NvclxuXHRcdFx0XHQvLyBwcm9wZXJ0eSB0byBlbXVsYXRlIGEgZGF0YSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IHN1ZmZlciBmcm9tXG5cdFx0XHRcdC8vIHRoZSBvdmVycmlkZSBtaXN0YWtlLCB0aGF0IGFjY2Vzc29yJ3MgZ2V0dGVyIGlzIG1hcmtlZCB3aXRoXG5cdFx0XHRcdC8vIGFuIGBvcmlnaW5hbFZhbHVlYCBwcm9wZXJ0eS4gSGVyZSwgd2hlbiB3ZSBkZXRlY3QgdGhpcywgd2Vcblx0XHRcdFx0Ly8gdXBob2xkIHRoZSBpbGx1c2lvbiBieSBwcmV0ZW5kaW5nIHRvIHNlZSB0aGF0IG9yaWdpbmFsIGRhdGFcblx0XHRcdFx0Ly8gcHJvcGVydHksIGkuZS4sIHJldHVybmluZyB0aGUgdmFsdWUgcmF0aGVyIHRoYW4gdGhlIGdldHRlclxuXHRcdFx0XHQvLyBpdHNlbGYuXG5cdFx0XHRcdGlmIChpc093biAmJiAnZ2V0JyBpbiBkZXNjICYmICEoJ29yaWdpbmFsVmFsdWUnIGluIGRlc2MuZ2V0KSkge1xuXHRcdFx0XHRcdHZhbHVlID0gZGVzYy5nZXQ7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dmFsdWUgPSB2YWx1ZVtwYXJ0XTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aXNPd24gPSBoYXNPd24odmFsdWUsIHBhcnQpO1xuXHRcdFx0XHR2YWx1ZSA9IHZhbHVlW3BhcnRdO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaXNPd24gJiYgIXNraXBGdXJ0aGVyQ2FjaGluZykge1xuXHRcdFx0XHRJTlRSSU5TSUNTW2ludHJpbnNpY1JlYWxOYW1lXSA9IHZhbHVlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gdmFsdWU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgb3JpZ1N5bWJvbCA9IHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbDtcbnZhciBoYXNTeW1ib2xTaGFtID0gcmVxdWlyZSgnLi9zaGFtcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGhhc05hdGl2ZVN5bWJvbHMoKSB7XG5cdGlmICh0eXBlb2Ygb3JpZ1N5bWJvbCAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm4gZmFsc2U7IH1cblx0aWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICh0eXBlb2Ygb3JpZ1N5bWJvbCgnZm9vJykgIT09ICdzeW1ib2wnKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAodHlwZW9mIFN5bWJvbCgnYmFyJykgIT09ICdzeW1ib2wnKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdHJldHVybiBoYXNTeW1ib2xTaGFtKCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBlc2xpbnQgY29tcGxleGl0eTogWzIsIDE4XSwgbWF4LXN0YXRlbWVudHM6IFsyLCAzM10gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaGFzU3ltYm9scygpIHtcblx0aWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICh0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSAnc3ltYm9sJykgeyByZXR1cm4gdHJ1ZTsgfVxuXG5cdHZhciBvYmogPSB7fTtcblx0dmFyIHN5bSA9IFN5bWJvbCgndGVzdCcpO1xuXHR2YXIgc3ltT2JqID0gT2JqZWN0KHN5bSk7XG5cdGlmICh0eXBlb2Ygc3ltID09PSAnc3RyaW5nJykgeyByZXR1cm4gZmFsc2U7IH1cblxuXHRpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHN5bSkgIT09ICdbb2JqZWN0IFN5bWJvbF0nKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHN5bU9iaikgIT09ICdbb2JqZWN0IFN5bWJvbF0nKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdC8vIHRlbXAgZGlzYWJsZWQgcGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9samhhcmIvb2JqZWN0LmFzc2lnbi9pc3N1ZXMvMTdcblx0Ly8gaWYgKHN5bSBpbnN0YW5jZW9mIFN5bWJvbCkgeyByZXR1cm4gZmFsc2U7IH1cblx0Ly8gdGVtcCBkaXNhYmxlZCBwZXIgaHR0cHM6Ly9naXRodWIuY29tL1dlYlJlZmxlY3Rpb24vZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzL2lzc3Vlcy80XG5cdC8vIGlmICghKHN5bU9iaiBpbnN0YW5jZW9mIFN5bWJvbCkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0Ly8gaWYgKHR5cGVvZiBTeW1ib2wucHJvdG90eXBlLnRvU3RyaW5nICE9PSAnZnVuY3Rpb24nKSB7IHJldHVybiBmYWxzZTsgfVxuXHQvLyBpZiAoU3RyaW5nKHN5bSkgIT09IFN5bWJvbC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzeW0pKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdHZhciBzeW1WYWwgPSA0Mjtcblx0b2JqW3N5bV0gPSBzeW1WYWw7XG5cdGZvciAoc3ltIGluIG9iaikgeyByZXR1cm4gZmFsc2U7IH0gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheCwgbm8tdW5yZWFjaGFibGUtbG9vcFxuXHRpZiAodHlwZW9mIE9iamVjdC5rZXlzID09PSAnZnVuY3Rpb24nICYmIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoICE9PSAwKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdGlmICh0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgPT09ICdmdW5jdGlvbicgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5sZW5ndGggIT09IDApIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0dmFyIHN5bXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iaik7XG5cdGlmIChzeW1zLmxlbmd0aCAhPT0gMSB8fCBzeW1zWzBdICE9PSBzeW0pIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0aWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwob2JqLCBzeW0pKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdGlmICh0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIHN5bSk7XG5cdFx0aWYgKGRlc2NyaXB0b3IudmFsdWUgIT09IHN5bVZhbCB8fCBkZXNjcmlwdG9yLmVudW1lcmFibGUgIT09IHRydWUpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdH1cblxuXHRyZXR1cm4gdHJ1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnZnVuY3Rpb24tYmluZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcbiIsIid1c2Ugc3RyaWN0J1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtJykuVHJhbnNmb3JtXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbmZ1bmN0aW9uIHRocm93SWZOb3RTdHJpbmdPckJ1ZmZlciAodmFsLCBwcmVmaXgpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodmFsKSAmJiB0eXBlb2YgdmFsICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocHJlZml4ICsgJyBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgYnVmZmVyJylcbiAgfVxufVxuXG5mdW5jdGlvbiBIYXNoQmFzZSAoYmxvY2tTaXplKSB7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG5cbiAgdGhpcy5fYmxvY2sgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYmxvY2tTaXplKVxuICB0aGlzLl9ibG9ja1NpemUgPSBibG9ja1NpemVcbiAgdGhpcy5fYmxvY2tPZmZzZXQgPSAwXG4gIHRoaXMuX2xlbmd0aCA9IFswLCAwLCAwLCAwXVxuXG4gIHRoaXMuX2ZpbmFsaXplZCA9IGZhbHNlXG59XG5cbmluaGVyaXRzKEhhc2hCYXNlLCBUcmFuc2Zvcm0pXG5cbkhhc2hCYXNlLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2FsbGJhY2spIHtcbiAgdmFyIGVycm9yID0gbnVsbFxuICB0cnkge1xuICAgIHRoaXMudXBkYXRlKGNodW5rLCBlbmNvZGluZylcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZXJyb3IgPSBlcnJcbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9yKVxufVxuXG5IYXNoQmFzZS5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHZhciBlcnJvciA9IG51bGxcbiAgdHJ5IHtcbiAgICB0aGlzLnB1c2godGhpcy5kaWdlc3QoKSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZXJyb3IgPSBlcnJcbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9yKVxufVxuXG5IYXNoQmFzZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuY29kaW5nKSB7XG4gIHRocm93SWZOb3RTdHJpbmdPckJ1ZmZlcihkYXRhLCAnRGF0YScpXG4gIGlmICh0aGlzLl9maW5hbGl6ZWQpIHRocm93IG5ldyBFcnJvcignRGlnZXN0IGFscmVhZHkgY2FsbGVkJylcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoZGF0YSkpIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBlbmNvZGluZylcblxuICAvLyBjb25zdW1lIGRhdGFcbiAgdmFyIGJsb2NrID0gdGhpcy5fYmxvY2tcbiAgdmFyIG9mZnNldCA9IDBcbiAgd2hpbGUgKHRoaXMuX2Jsb2NrT2Zmc2V0ICsgZGF0YS5sZW5ndGggLSBvZmZzZXQgPj0gdGhpcy5fYmxvY2tTaXplKSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuX2Jsb2NrT2Zmc2V0OyBpIDwgdGhpcy5fYmxvY2tTaXplOykgYmxvY2tbaSsrXSA9IGRhdGFbb2Zmc2V0KytdXG4gICAgdGhpcy5fdXBkYXRlKClcbiAgICB0aGlzLl9ibG9ja09mZnNldCA9IDBcbiAgfVxuICB3aGlsZSAob2Zmc2V0IDwgZGF0YS5sZW5ndGgpIGJsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdID0gZGF0YVtvZmZzZXQrK11cblxuICAvLyB1cGRhdGUgbGVuZ3RoXG4gIGZvciAodmFyIGogPSAwLCBjYXJyeSA9IGRhdGEubGVuZ3RoICogODsgY2FycnkgPiAwOyArK2opIHtcbiAgICB0aGlzLl9sZW5ndGhbal0gKz0gY2FycnlcbiAgICBjYXJyeSA9ICh0aGlzLl9sZW5ndGhbal0gLyAweDAxMDAwMDAwMDApIHwgMFxuICAgIGlmIChjYXJyeSA+IDApIHRoaXMuX2xlbmd0aFtqXSAtPSAweDAxMDAwMDAwMDAgKiBjYXJyeVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuSGFzaEJhc2UucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignX3VwZGF0ZSBpcyBub3QgaW1wbGVtZW50ZWQnKVxufVxuXG5IYXNoQmFzZS5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gKGVuY29kaW5nKSB7XG4gIGlmICh0aGlzLl9maW5hbGl6ZWQpIHRocm93IG5ldyBFcnJvcignRGlnZXN0IGFscmVhZHkgY2FsbGVkJylcbiAgdGhpcy5fZmluYWxpemVkID0gdHJ1ZVxuXG4gIHZhciBkaWdlc3QgPSB0aGlzLl9kaWdlc3QoKVxuICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCkgZGlnZXN0ID0gZGlnZXN0LnRvU3RyaW5nKGVuY29kaW5nKVxuXG4gIC8vIHJlc2V0IHN0YXRlXG4gIHRoaXMuX2Jsb2NrLmZpbGwoMClcbiAgdGhpcy5fYmxvY2tPZmZzZXQgPSAwXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgKytpKSB0aGlzLl9sZW5ndGhbaV0gPSAwXG5cbiAgcmV0dXJuIGRpZ2VzdFxufVxuXG5IYXNoQmFzZS5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdfZGlnZXN0IGlzIG5vdCBpbXBsZW1lbnRlZCcpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaEJhc2VcbiIsInZhciBoYXNoID0gZXhwb3J0cztcblxuaGFzaC51dGlscyA9IHJlcXVpcmUoJy4vaGFzaC91dGlscycpO1xuaGFzaC5jb21tb24gPSByZXF1aXJlKCcuL2hhc2gvY29tbW9uJyk7XG5oYXNoLnNoYSA9IHJlcXVpcmUoJy4vaGFzaC9zaGEnKTtcbmhhc2gucmlwZW1kID0gcmVxdWlyZSgnLi9oYXNoL3JpcGVtZCcpO1xuaGFzaC5obWFjID0gcmVxdWlyZSgnLi9oYXNoL2htYWMnKTtcblxuLy8gUHJveHkgaGFzaCBmdW5jdGlvbnMgdG8gdGhlIG1haW4gb2JqZWN0XG5oYXNoLnNoYTEgPSBoYXNoLnNoYS5zaGExO1xuaGFzaC5zaGEyNTYgPSBoYXNoLnNoYS5zaGEyNTY7XG5oYXNoLnNoYTIyNCA9IGhhc2guc2hhLnNoYTIyNDtcbmhhc2guc2hhMzg0ID0gaGFzaC5zaGEuc2hhMzg0O1xuaGFzaC5zaGE1MTIgPSBoYXNoLnNoYS5zaGE1MTI7XG5oYXNoLnJpcGVtZDE2MCA9IGhhc2gucmlwZW1kLnJpcGVtZDE2MDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxuZnVuY3Rpb24gQmxvY2tIYXNoKCkge1xuICB0aGlzLnBlbmRpbmcgPSBudWxsO1xuICB0aGlzLnBlbmRpbmdUb3RhbCA9IDA7XG4gIHRoaXMuYmxvY2tTaXplID0gdGhpcy5jb25zdHJ1Y3Rvci5ibG9ja1NpemU7XG4gIHRoaXMub3V0U2l6ZSA9IHRoaXMuY29uc3RydWN0b3Iub3V0U2l6ZTtcbiAgdGhpcy5obWFjU3RyZW5ndGggPSB0aGlzLmNvbnN0cnVjdG9yLmhtYWNTdHJlbmd0aDtcbiAgdGhpcy5wYWRMZW5ndGggPSB0aGlzLmNvbnN0cnVjdG9yLnBhZExlbmd0aCAvIDg7XG4gIHRoaXMuZW5kaWFuID0gJ2JpZyc7XG5cbiAgdGhpcy5fZGVsdGE4ID0gdGhpcy5ibG9ja1NpemUgLyA4O1xuICB0aGlzLl9kZWx0YTMyID0gdGhpcy5ibG9ja1NpemUgLyAzMjtcbn1cbmV4cG9ydHMuQmxvY2tIYXNoID0gQmxvY2tIYXNoO1xuXG5CbG9ja0hhc2gucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShtc2csIGVuYykge1xuICAvLyBDb252ZXJ0IG1lc3NhZ2UgdG8gYXJyYXksIHBhZCBpdCwgYW5kIGpvaW4gaW50byAzMmJpdCBibG9ja3NcbiAgbXNnID0gdXRpbHMudG9BcnJheShtc2csIGVuYyk7XG4gIGlmICghdGhpcy5wZW5kaW5nKVxuICAgIHRoaXMucGVuZGluZyA9IG1zZztcbiAgZWxzZVxuICAgIHRoaXMucGVuZGluZyA9IHRoaXMucGVuZGluZy5jb25jYXQobXNnKTtcbiAgdGhpcy5wZW5kaW5nVG90YWwgKz0gbXNnLmxlbmd0aDtcblxuICAvLyBFbm91Z2ggZGF0YSwgdHJ5IHVwZGF0aW5nXG4gIGlmICh0aGlzLnBlbmRpbmcubGVuZ3RoID49IHRoaXMuX2RlbHRhOCkge1xuICAgIG1zZyA9IHRoaXMucGVuZGluZztcblxuICAgIC8vIFByb2Nlc3MgcGVuZGluZyBkYXRhIGluIGJsb2Nrc1xuICAgIHZhciByID0gbXNnLmxlbmd0aCAlIHRoaXMuX2RlbHRhODtcbiAgICB0aGlzLnBlbmRpbmcgPSBtc2cuc2xpY2UobXNnLmxlbmd0aCAtIHIsIG1zZy5sZW5ndGgpO1xuICAgIGlmICh0aGlzLnBlbmRpbmcubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5wZW5kaW5nID0gbnVsbDtcblxuICAgIG1zZyA9IHV0aWxzLmpvaW4zMihtc2csIDAsIG1zZy5sZW5ndGggLSByLCB0aGlzLmVuZGlhbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpICs9IHRoaXMuX2RlbHRhMzIpXG4gICAgICB0aGlzLl91cGRhdGUobXNnLCBpLCBpICsgdGhpcy5fZGVsdGEzMik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkJsb2NrSGFzaC5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICB0aGlzLnVwZGF0ZSh0aGlzLl9wYWQoKSk7XG4gIGFzc2VydCh0aGlzLnBlbmRpbmcgPT09IG51bGwpO1xuXG4gIHJldHVybiB0aGlzLl9kaWdlc3QoZW5jKTtcbn07XG5cbkJsb2NrSGFzaC5wcm90b3R5cGUuX3BhZCA9IGZ1bmN0aW9uIHBhZCgpIHtcbiAgdmFyIGxlbiA9IHRoaXMucGVuZGluZ1RvdGFsO1xuICB2YXIgYnl0ZXMgPSB0aGlzLl9kZWx0YTg7XG4gIHZhciBrID0gYnl0ZXMgLSAoKGxlbiArIHRoaXMucGFkTGVuZ3RoKSAlIGJ5dGVzKTtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShrICsgdGhpcy5wYWRMZW5ndGgpO1xuICByZXNbMF0gPSAweDgwO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGs7IGkrKylcbiAgICByZXNbaV0gPSAwO1xuXG4gIC8vIEFwcGVuZCBsZW5ndGhcbiAgbGVuIDw8PSAzO1xuICBpZiAodGhpcy5lbmRpYW4gPT09ICdiaWcnKSB7XG4gICAgZm9yICh2YXIgdCA9IDg7IHQgPCB0aGlzLnBhZExlbmd0aDsgdCsrKVxuICAgICAgcmVzW2krK10gPSAwO1xuXG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMjQpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDE2KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiA4KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSBsZW4gJiAweGZmO1xuICB9IGVsc2Uge1xuICAgIHJlc1tpKytdID0gbGVuICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDgpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDE2KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAyNCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcblxuICAgIGZvciAodCA9IDg7IHQgPCB0aGlzLnBhZExlbmd0aDsgdCsrKVxuICAgICAgcmVzW2krK10gPSAwO1xuICB9XG5cbiAgcmV0dXJuIHJlcztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbmZ1bmN0aW9uIEhtYWMoaGFzaCwga2V5LCBlbmMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEhtYWMpKVxuICAgIHJldHVybiBuZXcgSG1hYyhoYXNoLCBrZXksIGVuYyk7XG4gIHRoaXMuSGFzaCA9IGhhc2g7XG4gIHRoaXMuYmxvY2tTaXplID0gaGFzaC5ibG9ja1NpemUgLyA4O1xuICB0aGlzLm91dFNpemUgPSBoYXNoLm91dFNpemUgLyA4O1xuICB0aGlzLmlubmVyID0gbnVsbDtcbiAgdGhpcy5vdXRlciA9IG51bGw7XG5cbiAgdGhpcy5faW5pdCh1dGlscy50b0FycmF5KGtleSwgZW5jKSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEhtYWM7XG5cbkhtYWMucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdChrZXkpIHtcbiAgLy8gU2hvcnRlbiBrZXksIGlmIG5lZWRlZFxuICBpZiAoa2V5Lmxlbmd0aCA+IHRoaXMuYmxvY2tTaXplKVxuICAgIGtleSA9IG5ldyB0aGlzLkhhc2goKS51cGRhdGUoa2V5KS5kaWdlc3QoKTtcbiAgYXNzZXJ0KGtleS5sZW5ndGggPD0gdGhpcy5ibG9ja1NpemUpO1xuXG4gIC8vIEFkZCBwYWRkaW5nIHRvIGtleVxuICBmb3IgKHZhciBpID0ga2V5Lmxlbmd0aDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAga2V5LnB1c2goMCk7XG5cbiAgZm9yIChpID0gMDsgaSA8IGtleS5sZW5ndGg7IGkrKylcbiAgICBrZXlbaV0gXj0gMHgzNjtcbiAgdGhpcy5pbm5lciA9IG5ldyB0aGlzLkhhc2goKS51cGRhdGUoa2V5KTtcblxuICAvLyAweDM2IF4gMHg1YyA9IDB4NmFcbiAgZm9yIChpID0gMDsgaSA8IGtleS5sZW5ndGg7IGkrKylcbiAgICBrZXlbaV0gXj0gMHg2YTtcbiAgdGhpcy5vdXRlciA9IG5ldyB0aGlzLkhhc2goKS51cGRhdGUoa2V5KTtcbn07XG5cbkhtYWMucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShtc2csIGVuYykge1xuICB0aGlzLmlubmVyLnVwZGF0ZShtc2csIGVuYyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuSG1hYy5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICB0aGlzLm91dGVyLnVwZGF0ZSh0aGlzLmlubmVyLmRpZ2VzdCgpKTtcbiAgcmV0dXJuIHRoaXMub3V0ZXIuZGlnZXN0KGVuYyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi9jb21tb24nKTtcblxudmFyIHJvdGwzMiA9IHV0aWxzLnJvdGwzMjtcbnZhciBzdW0zMiA9IHV0aWxzLnN1bTMyO1xudmFyIHN1bTMyXzMgPSB1dGlscy5zdW0zMl8zO1xudmFyIHN1bTMyXzQgPSB1dGlscy5zdW0zMl80O1xudmFyIEJsb2NrSGFzaCA9IGNvbW1vbi5CbG9ja0hhc2g7XG5cbmZ1bmN0aW9uIFJJUEVNRDE2MCgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJJUEVNRDE2MCkpXG4gICAgcmV0dXJuIG5ldyBSSVBFTUQxNjAoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcblxuICB0aGlzLmggPSBbIDB4Njc0NTIzMDEsIDB4ZWZjZGFiODksIDB4OThiYWRjZmUsIDB4MTAzMjU0NzYsIDB4YzNkMmUxZjAgXTtcbiAgdGhpcy5lbmRpYW4gPSAnbGl0dGxlJztcbn1cbnV0aWxzLmluaGVyaXRzKFJJUEVNRDE2MCwgQmxvY2tIYXNoKTtcbmV4cG9ydHMucmlwZW1kMTYwID0gUklQRU1EMTYwO1xuXG5SSVBFTUQxNjAuYmxvY2tTaXplID0gNTEyO1xuUklQRU1EMTYwLm91dFNpemUgPSAxNjA7XG5SSVBFTUQxNjAuaG1hY1N0cmVuZ3RoID0gMTkyO1xuUklQRU1EMTYwLnBhZExlbmd0aCA9IDY0O1xuXG5SSVBFTUQxNjAucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgQSA9IHRoaXMuaFswXTtcbiAgdmFyIEIgPSB0aGlzLmhbMV07XG4gIHZhciBDID0gdGhpcy5oWzJdO1xuICB2YXIgRCA9IHRoaXMuaFszXTtcbiAgdmFyIEUgPSB0aGlzLmhbNF07XG4gIHZhciBBaCA9IEE7XG4gIHZhciBCaCA9IEI7XG4gIHZhciBDaCA9IEM7XG4gIHZhciBEaCA9IEQ7XG4gIHZhciBFaCA9IEU7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgODA7IGorKykge1xuICAgIHZhciBUID0gc3VtMzIoXG4gICAgICByb3RsMzIoXG4gICAgICAgIHN1bTMyXzQoQSwgZihqLCBCLCBDLCBEKSwgbXNnW3Jbal0gKyBzdGFydF0sIEsoaikpLFxuICAgICAgICBzW2pdKSxcbiAgICAgIEUpO1xuICAgIEEgPSBFO1xuICAgIEUgPSBEO1xuICAgIEQgPSByb3RsMzIoQywgMTApO1xuICAgIEMgPSBCO1xuICAgIEIgPSBUO1xuICAgIFQgPSBzdW0zMihcbiAgICAgIHJvdGwzMihcbiAgICAgICAgc3VtMzJfNChBaCwgZig3OSAtIGosIEJoLCBDaCwgRGgpLCBtc2dbcmhbal0gKyBzdGFydF0sIEtoKGopKSxcbiAgICAgICAgc2hbal0pLFxuICAgICAgRWgpO1xuICAgIEFoID0gRWg7XG4gICAgRWggPSBEaDtcbiAgICBEaCA9IHJvdGwzMihDaCwgMTApO1xuICAgIENoID0gQmg7XG4gICAgQmggPSBUO1xuICB9XG4gIFQgPSBzdW0zMl8zKHRoaXMuaFsxXSwgQywgRGgpO1xuICB0aGlzLmhbMV0gPSBzdW0zMl8zKHRoaXMuaFsyXSwgRCwgRWgpO1xuICB0aGlzLmhbMl0gPSBzdW0zMl8zKHRoaXMuaFszXSwgRSwgQWgpO1xuICB0aGlzLmhbM10gPSBzdW0zMl8zKHRoaXMuaFs0XSwgQSwgQmgpO1xuICB0aGlzLmhbNF0gPSBzdW0zMl8zKHRoaXMuaFswXSwgQiwgQ2gpO1xuICB0aGlzLmhbMF0gPSBUO1xufTtcblxuUklQRU1EMTYwLnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdsaXR0bGUnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2xpdHRsZScpO1xufTtcblxuZnVuY3Rpb24gZihqLCB4LCB5LCB6KSB7XG4gIGlmIChqIDw9IDE1KVxuICAgIHJldHVybiB4IF4geSBeIHo7XG4gIGVsc2UgaWYgKGogPD0gMzEpXG4gICAgcmV0dXJuICh4ICYgeSkgfCAoKH54KSAmIHopO1xuICBlbHNlIGlmIChqIDw9IDQ3KVxuICAgIHJldHVybiAoeCB8ICh+eSkpIF4gejtcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gKHggJiB6KSB8ICh5ICYgKH56KSk7XG4gIGVsc2VcbiAgICByZXR1cm4geCBeICh5IHwgKH56KSk7XG59XG5cbmZ1bmN0aW9uIEsoaikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4gMHgwMDAwMDAwMDtcbiAgZWxzZSBpZiAoaiA8PSAzMSlcbiAgICByZXR1cm4gMHg1YTgyNzk5OTtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gMHg2ZWQ5ZWJhMTtcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gMHg4ZjFiYmNkYztcbiAgZWxzZVxuICAgIHJldHVybiAweGE5NTNmZDRlO1xufVxuXG5mdW5jdGlvbiBLaChqKSB7XG4gIGlmIChqIDw9IDE1KVxuICAgIHJldHVybiAweDUwYTI4YmU2O1xuICBlbHNlIGlmIChqIDw9IDMxKVxuICAgIHJldHVybiAweDVjNGRkMTI0O1xuICBlbHNlIGlmIChqIDw9IDQ3KVxuICAgIHJldHVybiAweDZkNzAzZWYzO1xuICBlbHNlIGlmIChqIDw9IDYzKVxuICAgIHJldHVybiAweDdhNmQ3NmU5O1xuICBlbHNlXG4gICAgcmV0dXJuIDB4MDAwMDAwMDA7XG59XG5cbnZhciByID0gW1xuICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LFxuICA3LCA0LCAxMywgMSwgMTAsIDYsIDE1LCAzLCAxMiwgMCwgOSwgNSwgMiwgMTQsIDExLCA4LFxuICAzLCAxMCwgMTQsIDQsIDksIDE1LCA4LCAxLCAyLCA3LCAwLCA2LCAxMywgMTEsIDUsIDEyLFxuICAxLCA5LCAxMSwgMTAsIDAsIDgsIDEyLCA0LCAxMywgMywgNywgMTUsIDE0LCA1LCA2LCAyLFxuICA0LCAwLCA1LCA5LCA3LCAxMiwgMiwgMTAsIDE0LCAxLCAzLCA4LCAxMSwgNiwgMTUsIDEzXG5dO1xuXG52YXIgcmggPSBbXG4gIDUsIDE0LCA3LCAwLCA5LCAyLCAxMSwgNCwgMTMsIDYsIDE1LCA4LCAxLCAxMCwgMywgMTIsXG4gIDYsIDExLCAzLCA3LCAwLCAxMywgNSwgMTAsIDE0LCAxNSwgOCwgMTIsIDQsIDksIDEsIDIsXG4gIDE1LCA1LCAxLCAzLCA3LCAxNCwgNiwgOSwgMTEsIDgsIDEyLCAyLCAxMCwgMCwgNCwgMTMsXG4gIDgsIDYsIDQsIDEsIDMsIDExLCAxNSwgMCwgNSwgMTIsIDIsIDEzLCA5LCA3LCAxMCwgMTQsXG4gIDEyLCAxNSwgMTAsIDQsIDEsIDUsIDgsIDcsIDYsIDIsIDEzLCAxNCwgMCwgMywgOSwgMTFcbl07XG5cbnZhciBzID0gW1xuICAxMSwgMTQsIDE1LCAxMiwgNSwgOCwgNywgOSwgMTEsIDEzLCAxNCwgMTUsIDYsIDcsIDksIDgsXG4gIDcsIDYsIDgsIDEzLCAxMSwgOSwgNywgMTUsIDcsIDEyLCAxNSwgOSwgMTEsIDcsIDEzLCAxMixcbiAgMTEsIDEzLCA2LCA3LCAxNCwgOSwgMTMsIDE1LCAxNCwgOCwgMTMsIDYsIDUsIDEyLCA3LCA1LFxuICAxMSwgMTIsIDE0LCAxNSwgMTQsIDE1LCA5LCA4LCA5LCAxNCwgNSwgNiwgOCwgNiwgNSwgMTIsXG4gIDksIDE1LCA1LCAxMSwgNiwgOCwgMTMsIDEyLCA1LCAxMiwgMTMsIDE0LCAxMSwgOCwgNSwgNlxuXTtcblxudmFyIHNoID0gW1xuICA4LCA5LCA5LCAxMSwgMTMsIDE1LCAxNSwgNSwgNywgNywgOCwgMTEsIDE0LCAxNCwgMTIsIDYsXG4gIDksIDEzLCAxNSwgNywgMTIsIDgsIDksIDExLCA3LCA3LCAxMiwgNywgNiwgMTUsIDEzLCAxMSxcbiAgOSwgNywgMTUsIDExLCA4LCA2LCA2LCAxNCwgMTIsIDEzLCA1LCAxNCwgMTMsIDEzLCA3LCA1LFxuICAxNSwgNSwgOCwgMTEsIDE0LCAxNCwgNiwgMTQsIDYsIDksIDEyLCA5LCAxMiwgNSwgMTUsIDgsXG4gIDgsIDUsIDEyLCA5LCAxMiwgNSwgMTQsIDYsIDgsIDEzLCA2LCA1LCAxNSwgMTMsIDExLCAxMVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5zaGExID0gcmVxdWlyZSgnLi9zaGEvMScpO1xuZXhwb3J0cy5zaGEyMjQgPSByZXF1aXJlKCcuL3NoYS8yMjQnKTtcbmV4cG9ydHMuc2hhMjU2ID0gcmVxdWlyZSgnLi9zaGEvMjU2Jyk7XG5leHBvcnRzLnNoYTM4NCA9IHJlcXVpcmUoJy4vc2hhLzM4NCcpO1xuZXhwb3J0cy5zaGE1MTIgPSByZXF1aXJlKCcuL3NoYS81MTInKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBjb21tb24gPSByZXF1aXJlKCcuLi9jb21tb24nKTtcbnZhciBzaGFDb21tb24gPSByZXF1aXJlKCcuL2NvbW1vbicpO1xuXG52YXIgcm90bDMyID0gdXRpbHMucm90bDMyO1xudmFyIHN1bTMyID0gdXRpbHMuc3VtMzI7XG52YXIgc3VtMzJfNSA9IHV0aWxzLnN1bTMyXzU7XG52YXIgZnRfMSA9IHNoYUNvbW1vbi5mdF8xO1xudmFyIEJsb2NrSGFzaCA9IGNvbW1vbi5CbG9ja0hhc2g7XG5cbnZhciBzaGExX0sgPSBbXG4gIDB4NUE4Mjc5OTksIDB4NkVEOUVCQTEsXG4gIDB4OEYxQkJDREMsIDB4Q0E2MkMxRDZcbl07XG5cbmZ1bmN0aW9uIFNIQTEoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEExKSlcbiAgICByZXR1cm4gbmV3IFNIQTEoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gW1xuICAgIDB4Njc0NTIzMDEsIDB4ZWZjZGFiODksIDB4OThiYWRjZmUsXG4gICAgMHgxMDMyNTQ3NiwgMHhjM2QyZTFmMCBdO1xuICB0aGlzLlcgPSBuZXcgQXJyYXkoODApO1xufVxuXG51dGlscy5pbmhlcml0cyhTSEExLCBCbG9ja0hhc2gpO1xubW9kdWxlLmV4cG9ydHMgPSBTSEExO1xuXG5TSEExLmJsb2NrU2l6ZSA9IDUxMjtcblNIQTEub3V0U2l6ZSA9IDE2MDtcblNIQTEuaG1hY1N0cmVuZ3RoID0gODA7XG5TSEExLnBhZExlbmd0aCA9IDY0O1xuXG5TSEExLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7IGkrKylcbiAgICBXW2ldID0gbXNnW3N0YXJ0ICsgaV07XG5cbiAgZm9yKDsgaSA8IFcubGVuZ3RoOyBpKyspXG4gICAgV1tpXSA9IHJvdGwzMihXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdLCAxKTtcblxuICB2YXIgYSA9IHRoaXMuaFswXTtcbiAgdmFyIGIgPSB0aGlzLmhbMV07XG4gIHZhciBjID0gdGhpcy5oWzJdO1xuICB2YXIgZCA9IHRoaXMuaFszXTtcbiAgdmFyIGUgPSB0aGlzLmhbNF07XG5cbiAgZm9yIChpID0gMDsgaSA8IFcubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcyA9IH5+KGkgLyAyMCk7XG4gICAgdmFyIHQgPSBzdW0zMl81KHJvdGwzMihhLCA1KSwgZnRfMShzLCBiLCBjLCBkKSwgZSwgV1tpXSwgc2hhMV9LW3NdKTtcbiAgICBlID0gZDtcbiAgICBkID0gYztcbiAgICBjID0gcm90bDMyKGIsIDMwKTtcbiAgICBiID0gYTtcbiAgICBhID0gdDtcbiAgfVxuXG4gIHRoaXMuaFswXSA9IHN1bTMyKHRoaXMuaFswXSwgYSk7XG4gIHRoaXMuaFsxXSA9IHN1bTMyKHRoaXMuaFsxXSwgYik7XG4gIHRoaXMuaFsyXSA9IHN1bTMyKHRoaXMuaFsyXSwgYyk7XG4gIHRoaXMuaFszXSA9IHN1bTMyKHRoaXMuaFszXSwgZCk7XG4gIHRoaXMuaFs0XSA9IHN1bTMyKHRoaXMuaFs0XSwgZSk7XG59O1xuXG5TSEExLnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2JpZycpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBTSEEyNTYgPSByZXF1aXJlKCcuLzI1NicpO1xuXG5mdW5jdGlvbiBTSEEyMjQoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEEyMjQpKVxuICAgIHJldHVybiBuZXcgU0hBMjI0KCk7XG5cbiAgU0hBMjU2LmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFtcbiAgICAweGMxMDU5ZWQ4LCAweDM2N2NkNTA3LCAweDMwNzBkZDE3LCAweGY3MGU1OTM5LFxuICAgIDB4ZmZjMDBiMzEsIDB4Njg1ODE1MTEsIDB4NjRmOThmYTcsIDB4YmVmYTRmYTQgXTtcbn1cbnV0aWxzLmluaGVyaXRzKFNIQTIyNCwgU0hBMjU2KTtcbm1vZHVsZS5leHBvcnRzID0gU0hBMjI0O1xuXG5TSEEyMjQuYmxvY2tTaXplID0gNTEyO1xuU0hBMjI0Lm91dFNpemUgPSAyMjQ7XG5TSEEyMjQuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBMjI0LnBhZExlbmd0aCA9IDY0O1xuXG5TSEEyMjQucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIC8vIEp1c3QgdHJ1bmNhdGUgb3V0cHV0XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaC5zbGljZSgwLCA3KSwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsIDcpLCAnYmlnJyk7XG59O1xuXG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi4vY29tbW9uJyk7XG52YXIgc2hhQ29tbW9uID0gcmVxdWlyZSgnLi9jb21tb24nKTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbnZhciBzdW0zMiA9IHV0aWxzLnN1bTMyO1xudmFyIHN1bTMyXzQgPSB1dGlscy5zdW0zMl80O1xudmFyIHN1bTMyXzUgPSB1dGlscy5zdW0zMl81O1xudmFyIGNoMzIgPSBzaGFDb21tb24uY2gzMjtcbnZhciBtYWozMiA9IHNoYUNvbW1vbi5tYWozMjtcbnZhciBzMF8yNTYgPSBzaGFDb21tb24uczBfMjU2O1xudmFyIHMxXzI1NiA9IHNoYUNvbW1vbi5zMV8yNTY7XG52YXIgZzBfMjU2ID0gc2hhQ29tbW9uLmcwXzI1NjtcbnZhciBnMV8yNTYgPSBzaGFDb21tb24uZzFfMjU2O1xuXG52YXIgQmxvY2tIYXNoID0gY29tbW9uLkJsb2NrSGFzaDtcblxudmFyIHNoYTI1Nl9LID0gW1xuICAweDQyOGEyZjk4LCAweDcxMzc0NDkxLCAweGI1YzBmYmNmLCAweGU5YjVkYmE1LFxuICAweDM5NTZjMjViLCAweDU5ZjExMWYxLCAweDkyM2Y4MmE0LCAweGFiMWM1ZWQ1LFxuICAweGQ4MDdhYTk4LCAweDEyODM1YjAxLCAweDI0MzE4NWJlLCAweDU1MGM3ZGMzLFxuICAweDcyYmU1ZDc0LCAweDgwZGViMWZlLCAweDliZGMwNmE3LCAweGMxOWJmMTc0LFxuICAweGU0OWI2OWMxLCAweGVmYmU0Nzg2LCAweDBmYzE5ZGM2LCAweDI0MGNhMWNjLFxuICAweDJkZTkyYzZmLCAweDRhNzQ4NGFhLCAweDVjYjBhOWRjLCAweDc2Zjk4OGRhLFxuICAweDk4M2U1MTUyLCAweGE4MzFjNjZkLCAweGIwMDMyN2M4LCAweGJmNTk3ZmM3LFxuICAweGM2ZTAwYmYzLCAweGQ1YTc5MTQ3LCAweDA2Y2E2MzUxLCAweDE0MjkyOTY3LFxuICAweDI3YjcwYTg1LCAweDJlMWIyMTM4LCAweDRkMmM2ZGZjLCAweDUzMzgwZDEzLFxuICAweDY1MGE3MzU0LCAweDc2NmEwYWJiLCAweDgxYzJjOTJlLCAweDkyNzIyYzg1LFxuICAweGEyYmZlOGExLCAweGE4MWE2NjRiLCAweGMyNGI4YjcwLCAweGM3NmM1MWEzLFxuICAweGQxOTJlODE5LCAweGQ2OTkwNjI0LCAweGY0MGUzNTg1LCAweDEwNmFhMDcwLFxuICAweDE5YTRjMTE2LCAweDFlMzc2YzA4LCAweDI3NDg3NzRjLCAweDM0YjBiY2I1LFxuICAweDM5MWMwY2IzLCAweDRlZDhhYTRhLCAweDViOWNjYTRmLCAweDY4MmU2ZmYzLFxuICAweDc0OGY4MmVlLCAweDc4YTU2MzZmLCAweDg0Yzg3ODE0LCAweDhjYzcwMjA4LFxuICAweDkwYmVmZmZhLCAweGE0NTA2Y2ViLCAweGJlZjlhM2Y3LCAweGM2NzE3OGYyXG5dO1xuXG5mdW5jdGlvbiBTSEEyNTYoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEEyNTYpKVxuICAgIHJldHVybiBuZXcgU0hBMjU2KCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFtcbiAgICAweDZhMDllNjY3LCAweGJiNjdhZTg1LCAweDNjNmVmMzcyLCAweGE1NGZmNTNhLFxuICAgIDB4NTEwZTUyN2YsIDB4OWIwNTY4OGMsIDB4MWY4M2Q5YWIsIDB4NWJlMGNkMTlcbiAgXTtcbiAgdGhpcy5rID0gc2hhMjU2X0s7XG4gIHRoaXMuVyA9IG5ldyBBcnJheSg2NCk7XG59XG51dGlscy5pbmhlcml0cyhTSEEyNTYsIEJsb2NrSGFzaCk7XG5tb2R1bGUuZXhwb3J0cyA9IFNIQTI1NjtcblxuU0hBMjU2LmJsb2NrU2l6ZSA9IDUxMjtcblNIQTI1Ni5vdXRTaXplID0gMjU2O1xuU0hBMjU2LmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTI1Ni5wYWRMZW5ndGggPSA2NDtcblxuU0hBMjU2LnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7IGkrKylcbiAgICBXW2ldID0gbXNnW3N0YXJ0ICsgaV07XG4gIGZvciAoOyBpIDwgVy5sZW5ndGg7IGkrKylcbiAgICBXW2ldID0gc3VtMzJfNChnMV8yNTYoV1tpIC0gMl0pLCBXW2kgLSA3XSwgZzBfMjU2KFdbaSAtIDE1XSksIFdbaSAtIDE2XSk7XG5cbiAgdmFyIGEgPSB0aGlzLmhbMF07XG4gIHZhciBiID0gdGhpcy5oWzFdO1xuICB2YXIgYyA9IHRoaXMuaFsyXTtcbiAgdmFyIGQgPSB0aGlzLmhbM107XG4gIHZhciBlID0gdGhpcy5oWzRdO1xuICB2YXIgZiA9IHRoaXMuaFs1XTtcbiAgdmFyIGcgPSB0aGlzLmhbNl07XG4gIHZhciBoID0gdGhpcy5oWzddO1xuXG4gIGFzc2VydCh0aGlzLmsubGVuZ3RoID09PSBXLmxlbmd0aCk7XG4gIGZvciAoaSA9IDA7IGkgPCBXLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIFQxID0gc3VtMzJfNShoLCBzMV8yNTYoZSksIGNoMzIoZSwgZiwgZyksIHRoaXMua1tpXSwgV1tpXSk7XG4gICAgdmFyIFQyID0gc3VtMzIoczBfMjU2KGEpLCBtYWozMihhLCBiLCBjKSk7XG4gICAgaCA9IGc7XG4gICAgZyA9IGY7XG4gICAgZiA9IGU7XG4gICAgZSA9IHN1bTMyKGQsIFQxKTtcbiAgICBkID0gYztcbiAgICBjID0gYjtcbiAgICBiID0gYTtcbiAgICBhID0gc3VtMzIoVDEsIFQyKTtcbiAgfVxuXG4gIHRoaXMuaFswXSA9IHN1bTMyKHRoaXMuaFswXSwgYSk7XG4gIHRoaXMuaFsxXSA9IHN1bTMyKHRoaXMuaFsxXSwgYik7XG4gIHRoaXMuaFsyXSA9IHN1bTMyKHRoaXMuaFsyXSwgYyk7XG4gIHRoaXMuaFszXSA9IHN1bTMyKHRoaXMuaFszXSwgZCk7XG4gIHRoaXMuaFs0XSA9IHN1bTMyKHRoaXMuaFs0XSwgZSk7XG4gIHRoaXMuaFs1XSA9IHN1bTMyKHRoaXMuaFs1XSwgZik7XG4gIHRoaXMuaFs2XSA9IHN1bTMyKHRoaXMuaFs2XSwgZyk7XG4gIHRoaXMuaFs3XSA9IHN1bTMyKHRoaXMuaFs3XSwgaCk7XG59O1xuXG5TSEEyNTYucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCAnYmlnJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG52YXIgU0hBNTEyID0gcmVxdWlyZSgnLi81MTInKTtcblxuZnVuY3Rpb24gU0hBMzg0KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMzg0KSlcbiAgICByZXR1cm4gbmV3IFNIQTM4NCgpO1xuXG4gIFNIQTUxMi5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbXG4gICAgMHhjYmJiOWQ1ZCwgMHhjMTA1OWVkOCxcbiAgICAweDYyOWEyOTJhLCAweDM2N2NkNTA3LFxuICAgIDB4OTE1OTAxNWEsIDB4MzA3MGRkMTcsXG4gICAgMHgxNTJmZWNkOCwgMHhmNzBlNTkzOSxcbiAgICAweDY3MzMyNjY3LCAweGZmYzAwYjMxLFxuICAgIDB4OGViNDRhODcsIDB4Njg1ODE1MTEsXG4gICAgMHhkYjBjMmUwZCwgMHg2NGY5OGZhNyxcbiAgICAweDQ3YjU0ODFkLCAweGJlZmE0ZmE0IF07XG59XG51dGlscy5pbmhlcml0cyhTSEEzODQsIFNIQTUxMik7XG5tb2R1bGUuZXhwb3J0cyA9IFNIQTM4NDtcblxuU0hBMzg0LmJsb2NrU2l6ZSA9IDEwMjQ7XG5TSEEzODQub3V0U2l6ZSA9IDM4NDtcblNIQTM4NC5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEEzODQucGFkTGVuZ3RoID0gMTI4O1xuXG5TSEEzODQucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaC5zbGljZSgwLCAxMiksICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaC5zbGljZSgwLCAxMiksICdiaWcnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi4vY29tbW9uJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG52YXIgcm90cjY0X2hpID0gdXRpbHMucm90cjY0X2hpO1xudmFyIHJvdHI2NF9sbyA9IHV0aWxzLnJvdHI2NF9sbztcbnZhciBzaHI2NF9oaSA9IHV0aWxzLnNocjY0X2hpO1xudmFyIHNocjY0X2xvID0gdXRpbHMuc2hyNjRfbG87XG52YXIgc3VtNjQgPSB1dGlscy5zdW02NDtcbnZhciBzdW02NF9oaSA9IHV0aWxzLnN1bTY0X2hpO1xudmFyIHN1bTY0X2xvID0gdXRpbHMuc3VtNjRfbG87XG52YXIgc3VtNjRfNF9oaSA9IHV0aWxzLnN1bTY0XzRfaGk7XG52YXIgc3VtNjRfNF9sbyA9IHV0aWxzLnN1bTY0XzRfbG87XG52YXIgc3VtNjRfNV9oaSA9IHV0aWxzLnN1bTY0XzVfaGk7XG52YXIgc3VtNjRfNV9sbyA9IHV0aWxzLnN1bTY0XzVfbG87XG5cbnZhciBCbG9ja0hhc2ggPSBjb21tb24uQmxvY2tIYXNoO1xuXG52YXIgc2hhNTEyX0sgPSBbXG4gIDB4NDI4YTJmOTgsIDB4ZDcyOGFlMjIsIDB4NzEzNzQ0OTEsIDB4MjNlZjY1Y2QsXG4gIDB4YjVjMGZiY2YsIDB4ZWM0ZDNiMmYsIDB4ZTliNWRiYTUsIDB4ODE4OWRiYmMsXG4gIDB4Mzk1NmMyNWIsIDB4ZjM0OGI1MzgsIDB4NTlmMTExZjEsIDB4YjYwNWQwMTksXG4gIDB4OTIzZjgyYTQsIDB4YWYxOTRmOWIsIDB4YWIxYzVlZDUsIDB4ZGE2ZDgxMTgsXG4gIDB4ZDgwN2FhOTgsIDB4YTMwMzAyNDIsIDB4MTI4MzViMDEsIDB4NDU3MDZmYmUsXG4gIDB4MjQzMTg1YmUsIDB4NGVlNGIyOGMsIDB4NTUwYzdkYzMsIDB4ZDVmZmI0ZTIsXG4gIDB4NzJiZTVkNzQsIDB4ZjI3Yjg5NmYsIDB4ODBkZWIxZmUsIDB4M2IxNjk2YjEsXG4gIDB4OWJkYzA2YTcsIDB4MjVjNzEyMzUsIDB4YzE5YmYxNzQsIDB4Y2Y2OTI2OTQsXG4gIDB4ZTQ5YjY5YzEsIDB4OWVmMTRhZDIsIDB4ZWZiZTQ3ODYsIDB4Mzg0ZjI1ZTMsXG4gIDB4MGZjMTlkYzYsIDB4OGI4Y2Q1YjUsIDB4MjQwY2ExY2MsIDB4NzdhYzljNjUsXG4gIDB4MmRlOTJjNmYsIDB4NTkyYjAyNzUsIDB4NGE3NDg0YWEsIDB4NmVhNmU0ODMsXG4gIDB4NWNiMGE5ZGMsIDB4YmQ0MWZiZDQsIDB4NzZmOTg4ZGEsIDB4ODMxMTUzYjUsXG4gIDB4OTgzZTUxNTIsIDB4ZWU2NmRmYWIsIDB4YTgzMWM2NmQsIDB4MmRiNDMyMTAsXG4gIDB4YjAwMzI3YzgsIDB4OThmYjIxM2YsIDB4YmY1OTdmYzcsIDB4YmVlZjBlZTQsXG4gIDB4YzZlMDBiZjMsIDB4M2RhODhmYzIsIDB4ZDVhNzkxNDcsIDB4OTMwYWE3MjUsXG4gIDB4MDZjYTYzNTEsIDB4ZTAwMzgyNmYsIDB4MTQyOTI5NjcsIDB4MGEwZTZlNzAsXG4gIDB4MjdiNzBhODUsIDB4NDZkMjJmZmMsIDB4MmUxYjIxMzgsIDB4NWMyNmM5MjYsXG4gIDB4NGQyYzZkZmMsIDB4NWFjNDJhZWQsIDB4NTMzODBkMTMsIDB4OWQ5NWIzZGYsXG4gIDB4NjUwYTczNTQsIDB4OGJhZjYzZGUsIDB4NzY2YTBhYmIsIDB4M2M3N2IyYTgsXG4gIDB4ODFjMmM5MmUsIDB4NDdlZGFlZTYsIDB4OTI3MjJjODUsIDB4MTQ4MjM1M2IsXG4gIDB4YTJiZmU4YTEsIDB4NGNmMTAzNjQsIDB4YTgxYTY2NGIsIDB4YmM0MjMwMDEsXG4gIDB4YzI0YjhiNzAsIDB4ZDBmODk3OTEsIDB4Yzc2YzUxYTMsIDB4MDY1NGJlMzAsXG4gIDB4ZDE5MmU4MTksIDB4ZDZlZjUyMTgsIDB4ZDY5OTA2MjQsIDB4NTU2NWE5MTAsXG4gIDB4ZjQwZTM1ODUsIDB4NTc3MTIwMmEsIDB4MTA2YWEwNzAsIDB4MzJiYmQxYjgsXG4gIDB4MTlhNGMxMTYsIDB4YjhkMmQwYzgsIDB4MWUzNzZjMDgsIDB4NTE0MWFiNTMsXG4gIDB4Mjc0ODc3NGMsIDB4ZGY4ZWViOTksIDB4MzRiMGJjYjUsIDB4ZTE5YjQ4YTgsXG4gIDB4MzkxYzBjYjMsIDB4YzVjOTVhNjMsIDB4NGVkOGFhNGEsIDB4ZTM0MThhY2IsXG4gIDB4NWI5Y2NhNGYsIDB4Nzc2M2UzNzMsIDB4NjgyZTZmZjMsIDB4ZDZiMmI4YTMsXG4gIDB4NzQ4ZjgyZWUsIDB4NWRlZmIyZmMsIDB4NzhhNTYzNmYsIDB4NDMxNzJmNjAsXG4gIDB4ODRjODc4MTQsIDB4YTFmMGFiNzIsIDB4OGNjNzAyMDgsIDB4MWE2NDM5ZWMsXG4gIDB4OTBiZWZmZmEsIDB4MjM2MzFlMjgsIDB4YTQ1MDZjZWIsIDB4ZGU4MmJkZTksXG4gIDB4YmVmOWEzZjcsIDB4YjJjNjc5MTUsIDB4YzY3MTc4ZjIsIDB4ZTM3MjUzMmIsXG4gIDB4Y2EyNzNlY2UsIDB4ZWEyNjYxOWMsIDB4ZDE4NmI4YzcsIDB4MjFjMGMyMDcsXG4gIDB4ZWFkYTdkZDYsIDB4Y2RlMGViMWUsIDB4ZjU3ZDRmN2YsIDB4ZWU2ZWQxNzgsXG4gIDB4MDZmMDY3YWEsIDB4NzIxNzZmYmEsIDB4MGE2MzdkYzUsIDB4YTJjODk4YTYsXG4gIDB4MTEzZjk4MDQsIDB4YmVmOTBkYWUsIDB4MWI3MTBiMzUsIDB4MTMxYzQ3MWIsXG4gIDB4MjhkYjc3ZjUsIDB4MjMwNDdkODQsIDB4MzJjYWFiN2IsIDB4NDBjNzI0OTMsXG4gIDB4M2M5ZWJlMGEsIDB4MTVjOWJlYmMsIDB4NDMxZDY3YzQsIDB4OWMxMDBkNGMsXG4gIDB4NGNjNWQ0YmUsIDB4Y2IzZTQyYjYsIDB4NTk3ZjI5OWMsIDB4ZmM2NTdlMmEsXG4gIDB4NWZjYjZmYWIsIDB4M2FkNmZhZWMsIDB4NmM0NDE5OGMsIDB4NGE0NzU4MTdcbl07XG5cbmZ1bmN0aW9uIFNIQTUxMigpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTUxMikpXG4gICAgcmV0dXJuIG5ldyBTSEE1MTIoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gW1xuICAgIDB4NmEwOWU2NjcsIDB4ZjNiY2M5MDgsXG4gICAgMHhiYjY3YWU4NSwgMHg4NGNhYTczYixcbiAgICAweDNjNmVmMzcyLCAweGZlOTRmODJiLFxuICAgIDB4YTU0ZmY1M2EsIDB4NWYxZDM2ZjEsXG4gICAgMHg1MTBlNTI3ZiwgMHhhZGU2ODJkMSxcbiAgICAweDliMDU2ODhjLCAweDJiM2U2YzFmLFxuICAgIDB4MWY4M2Q5YWIsIDB4ZmI0MWJkNmIsXG4gICAgMHg1YmUwY2QxOSwgMHgxMzdlMjE3OSBdO1xuICB0aGlzLmsgPSBzaGE1MTJfSztcbiAgdGhpcy5XID0gbmV3IEFycmF5KDE2MCk7XG59XG51dGlscy5pbmhlcml0cyhTSEE1MTIsIEJsb2NrSGFzaCk7XG5tb2R1bGUuZXhwb3J0cyA9IFNIQTUxMjtcblxuU0hBNTEyLmJsb2NrU2l6ZSA9IDEwMjQ7XG5TSEE1MTIub3V0U2l6ZSA9IDUxMjtcblNIQTUxMi5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEE1MTIucGFkTGVuZ3RoID0gMTI4O1xuXG5TSEE1MTIucHJvdG90eXBlLl9wcmVwYXJlQmxvY2sgPSBmdW5jdGlvbiBfcHJlcGFyZUJsb2NrKG1zZywgc3RhcnQpIHtcbiAgdmFyIFcgPSB0aGlzLlc7XG5cbiAgLy8gMzIgeCAzMmJpdCB3b3Jkc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDMyOyBpKyspXG4gICAgV1tpXSA9IG1zZ1tzdGFydCArIGldO1xuICBmb3IgKDsgaSA8IFcubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIgYzBfaGkgPSBnMV81MTJfaGkoV1tpIC0gNF0sIFdbaSAtIDNdKTsgIC8vIGkgLSAyXG4gICAgdmFyIGMwX2xvID0gZzFfNTEyX2xvKFdbaSAtIDRdLCBXW2kgLSAzXSk7XG4gICAgdmFyIGMxX2hpID0gV1tpIC0gMTRdOyAgLy8gaSAtIDdcbiAgICB2YXIgYzFfbG8gPSBXW2kgLSAxM107XG4gICAgdmFyIGMyX2hpID0gZzBfNTEyX2hpKFdbaSAtIDMwXSwgV1tpIC0gMjldKTsgIC8vIGkgLSAxNVxuICAgIHZhciBjMl9sbyA9IGcwXzUxMl9sbyhXW2kgLSAzMF0sIFdbaSAtIDI5XSk7XG4gICAgdmFyIGMzX2hpID0gV1tpIC0gMzJdOyAgLy8gaSAtIDE2XG4gICAgdmFyIGMzX2xvID0gV1tpIC0gMzFdO1xuXG4gICAgV1tpXSA9IHN1bTY0XzRfaGkoXG4gICAgICBjMF9oaSwgYzBfbG8sXG4gICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICBjM19oaSwgYzNfbG8pO1xuICAgIFdbaSArIDFdID0gc3VtNjRfNF9sbyhcbiAgICAgIGMwX2hpLCBjMF9sbyxcbiAgICAgIGMxX2hpLCBjMV9sbyxcbiAgICAgIGMyX2hpLCBjMl9sbyxcbiAgICAgIGMzX2hpLCBjM19sbyk7XG4gIH1cbn07XG5cblNIQTUxMi5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB0aGlzLl9wcmVwYXJlQmxvY2sobXNnLCBzdGFydCk7XG5cbiAgdmFyIFcgPSB0aGlzLlc7XG5cbiAgdmFyIGFoID0gdGhpcy5oWzBdO1xuICB2YXIgYWwgPSB0aGlzLmhbMV07XG4gIHZhciBiaCA9IHRoaXMuaFsyXTtcbiAgdmFyIGJsID0gdGhpcy5oWzNdO1xuICB2YXIgY2ggPSB0aGlzLmhbNF07XG4gIHZhciBjbCA9IHRoaXMuaFs1XTtcbiAgdmFyIGRoID0gdGhpcy5oWzZdO1xuICB2YXIgZGwgPSB0aGlzLmhbN107XG4gIHZhciBlaCA9IHRoaXMuaFs4XTtcbiAgdmFyIGVsID0gdGhpcy5oWzldO1xuICB2YXIgZmggPSB0aGlzLmhbMTBdO1xuICB2YXIgZmwgPSB0aGlzLmhbMTFdO1xuICB2YXIgZ2ggPSB0aGlzLmhbMTJdO1xuICB2YXIgZ2wgPSB0aGlzLmhbMTNdO1xuICB2YXIgaGggPSB0aGlzLmhbMTRdO1xuICB2YXIgaGwgPSB0aGlzLmhbMTVdO1xuXG4gIGFzc2VydCh0aGlzLmsubGVuZ3RoID09PSBXLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBjMF9oaSA9IGhoO1xuICAgIHZhciBjMF9sbyA9IGhsO1xuICAgIHZhciBjMV9oaSA9IHMxXzUxMl9oaShlaCwgZWwpO1xuICAgIHZhciBjMV9sbyA9IHMxXzUxMl9sbyhlaCwgZWwpO1xuICAgIHZhciBjMl9oaSA9IGNoNjRfaGkoZWgsIGVsLCBmaCwgZmwsIGdoLCBnbCk7XG4gICAgdmFyIGMyX2xvID0gY2g2NF9sbyhlaCwgZWwsIGZoLCBmbCwgZ2gsIGdsKTtcbiAgICB2YXIgYzNfaGkgPSB0aGlzLmtbaV07XG4gICAgdmFyIGMzX2xvID0gdGhpcy5rW2kgKyAxXTtcbiAgICB2YXIgYzRfaGkgPSBXW2ldO1xuICAgIHZhciBjNF9sbyA9IFdbaSArIDFdO1xuXG4gICAgdmFyIFQxX2hpID0gc3VtNjRfNV9oaShcbiAgICAgIGMwX2hpLCBjMF9sbyxcbiAgICAgIGMxX2hpLCBjMV9sbyxcbiAgICAgIGMyX2hpLCBjMl9sbyxcbiAgICAgIGMzX2hpLCBjM19sbyxcbiAgICAgIGM0X2hpLCBjNF9sbyk7XG4gICAgdmFyIFQxX2xvID0gc3VtNjRfNV9sbyhcbiAgICAgIGMwX2hpLCBjMF9sbyxcbiAgICAgIGMxX2hpLCBjMV9sbyxcbiAgICAgIGMyX2hpLCBjMl9sbyxcbiAgICAgIGMzX2hpLCBjM19sbyxcbiAgICAgIGM0X2hpLCBjNF9sbyk7XG5cbiAgICBjMF9oaSA9IHMwXzUxMl9oaShhaCwgYWwpO1xuICAgIGMwX2xvID0gczBfNTEyX2xvKGFoLCBhbCk7XG4gICAgYzFfaGkgPSBtYWo2NF9oaShhaCwgYWwsIGJoLCBibCwgY2gsIGNsKTtcbiAgICBjMV9sbyA9IG1hajY0X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wpO1xuXG4gICAgdmFyIFQyX2hpID0gc3VtNjRfaGkoYzBfaGksIGMwX2xvLCBjMV9oaSwgYzFfbG8pO1xuICAgIHZhciBUMl9sbyA9IHN1bTY0X2xvKGMwX2hpLCBjMF9sbywgYzFfaGksIGMxX2xvKTtcblxuICAgIGhoID0gZ2g7XG4gICAgaGwgPSBnbDtcblxuICAgIGdoID0gZmg7XG4gICAgZ2wgPSBmbDtcblxuICAgIGZoID0gZWg7XG4gICAgZmwgPSBlbDtcblxuICAgIGVoID0gc3VtNjRfaGkoZGgsIGRsLCBUMV9oaSwgVDFfbG8pO1xuICAgIGVsID0gc3VtNjRfbG8oZGwsIGRsLCBUMV9oaSwgVDFfbG8pO1xuXG4gICAgZGggPSBjaDtcbiAgICBkbCA9IGNsO1xuXG4gICAgY2ggPSBiaDtcbiAgICBjbCA9IGJsO1xuXG4gICAgYmggPSBhaDtcbiAgICBibCA9IGFsO1xuXG4gICAgYWggPSBzdW02NF9oaShUMV9oaSwgVDFfbG8sIFQyX2hpLCBUMl9sbyk7XG4gICAgYWwgPSBzdW02NF9sbyhUMV9oaSwgVDFfbG8sIFQyX2hpLCBUMl9sbyk7XG4gIH1cblxuICBzdW02NCh0aGlzLmgsIDAsIGFoLCBhbCk7XG4gIHN1bTY0KHRoaXMuaCwgMiwgYmgsIGJsKTtcbiAgc3VtNjQodGhpcy5oLCA0LCBjaCwgY2wpO1xuICBzdW02NCh0aGlzLmgsIDYsIGRoLCBkbCk7XG4gIHN1bTY0KHRoaXMuaCwgOCwgZWgsIGVsKTtcbiAgc3VtNjQodGhpcy5oLCAxMCwgZmgsIGZsKTtcbiAgc3VtNjQodGhpcy5oLCAxMiwgZ2gsIGdsKTtcbiAgc3VtNjQodGhpcy5oLCAxNCwgaGgsIGhsKTtcbn07XG5cblNIQTUxMi5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdiaWcnKTtcbn07XG5cbmZ1bmN0aW9uIGNoNjRfaGkoeGgsIHhsLCB5aCwgeWwsIHpoKSB7XG4gIHZhciByID0gKHhoICYgeWgpIF4gKCh+eGgpICYgemgpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGNoNjRfbG8oeGgsIHhsLCB5aCwgeWwsIHpoLCB6bCkge1xuICB2YXIgciA9ICh4bCAmIHlsKSBeICgofnhsKSAmIHpsKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBtYWo2NF9oaSh4aCwgeGwsIHloLCB5bCwgemgpIHtcbiAgdmFyIHIgPSAoeGggJiB5aCkgXiAoeGggJiB6aCkgXiAoeWggJiB6aCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gbWFqNjRfbG8oeGgsIHhsLCB5aCwgeWwsIHpoLCB6bCkge1xuICB2YXIgciA9ICh4bCAmIHlsKSBeICh4bCAmIHpsKSBeICh5bCAmIHpsKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMF81MTJfaGkoeGgsIHhsKSB7XG4gIHZhciBjMF9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDI4KTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhsLCB4aCwgMik7ICAvLyAzNFxuICB2YXIgYzJfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCA3KTsgIC8vIDM5XG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczBfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAyOCk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDIpOyAgLy8gMzRcbiAgdmFyIGMyX2xvID0gcm90cjY0X2xvKHhsLCB4aCwgNyk7ICAvLyAzOVxuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIHMxXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTQpO1xuICB2YXIgYzFfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAxOCk7XG4gIHZhciBjMl9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDkpOyAgLy8gNDFcblxuICB2YXIgciA9IGMwX2hpIF4gYzFfaGkgXiBjMl9oaTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMV81MTJfbG8oeGgsIHhsKSB7XG4gIHZhciBjMF9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDE0KTtcbiAgdmFyIGMxX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMTgpO1xuICB2YXIgYzJfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCA5KTsgIC8vIDQxXG5cbiAgdmFyIHIgPSBjMF9sbyBeIGMxX2xvIF4gYzJfbG87XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzBfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAxKTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgOCk7XG4gIHZhciBjMl9oaSA9IHNocjY0X2hpKHhoLCB4bCwgNyk7XG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzBfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxKTtcbiAgdmFyIGMxX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgOCk7XG4gIHZhciBjMl9sbyA9IHNocjY0X2xvKHhoLCB4bCwgNyk7XG5cbiAgdmFyIHIgPSBjMF9sbyBeIGMxX2xvIF4gYzJfbG87XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzFfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAxOSk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDI5KTsgIC8vIDYxXG4gIHZhciBjMl9oaSA9IHNocjY0X2hpKHhoLCB4bCwgNik7XG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzFfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxOSk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDI5KTsgIC8vIDYxXG4gIHZhciBjMl9sbyA9IHNocjY0X2xvKHhoLCB4bCwgNik7XG5cbiAgdmFyIHIgPSBjMF9sbyBeIGMxX2xvIF4gYzJfbG87XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciByb3RyMzIgPSB1dGlscy5yb3RyMzI7XG5cbmZ1bmN0aW9uIGZ0XzEocywgeCwgeSwgeikge1xuICBpZiAocyA9PT0gMClcbiAgICByZXR1cm4gY2gzMih4LCB5LCB6KTtcbiAgaWYgKHMgPT09IDEgfHwgcyA9PT0gMylcbiAgICByZXR1cm4gcDMyKHgsIHksIHopO1xuICBpZiAocyA9PT0gMilcbiAgICByZXR1cm4gbWFqMzIoeCwgeSwgeik7XG59XG5leHBvcnRzLmZ0XzEgPSBmdF8xO1xuXG5mdW5jdGlvbiBjaDMyKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgXiAoKH54KSAmIHopO1xufVxuZXhwb3J0cy5jaDMyID0gY2gzMjtcblxuZnVuY3Rpb24gbWFqMzIoeCwgeSwgeikge1xuICByZXR1cm4gKHggJiB5KSBeICh4ICYgeikgXiAoeSAmIHopO1xufVxuZXhwb3J0cy5tYWozMiA9IG1hajMyO1xuXG5mdW5jdGlvbiBwMzIoeCwgeSwgeikge1xuICByZXR1cm4geCBeIHkgXiB6O1xufVxuZXhwb3J0cy5wMzIgPSBwMzI7XG5cbmZ1bmN0aW9uIHMwXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgMikgXiByb3RyMzIoeCwgMTMpIF4gcm90cjMyKHgsIDIyKTtcbn1cbmV4cG9ydHMuczBfMjU2ID0gczBfMjU2O1xuXG5mdW5jdGlvbiBzMV8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDYpIF4gcm90cjMyKHgsIDExKSBeIHJvdHIzMih4LCAyNSk7XG59XG5leHBvcnRzLnMxXzI1NiA9IHMxXzI1NjtcblxuZnVuY3Rpb24gZzBfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCA3KSBeIHJvdHIzMih4LCAxOCkgXiAoeCA+Pj4gMyk7XG59XG5leHBvcnRzLmcwXzI1NiA9IGcwXzI1NjtcblxuZnVuY3Rpb24gZzFfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCAxNykgXiByb3RyMzIoeCwgMTkpIF4gKHggPj4+IDEwKTtcbn1cbmV4cG9ydHMuZzFfMjU2ID0gZzFfMjU2O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZXhwb3J0cy5pbmhlcml0cyA9IGluaGVyaXRzO1xuXG5mdW5jdGlvbiBpc1N1cnJvZ2F0ZVBhaXIobXNnLCBpKSB7XG4gIGlmICgobXNnLmNoYXJDb2RlQXQoaSkgJiAweEZDMDApICE9PSAweEQ4MDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGkgPCAwIHx8IGkgKyAxID49IG1zZy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChtc2cuY2hhckNvZGVBdChpICsgMSkgJiAweEZDMDApID09PSAweERDMDA7XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkobXNnLCBlbmMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobXNnKSlcbiAgICByZXR1cm4gbXNnLnNsaWNlKCk7XG4gIGlmICghbXNnKVxuICAgIHJldHVybiBbXTtcbiAgdmFyIHJlcyA9IFtdO1xuICBpZiAodHlwZW9mIG1zZyA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIWVuYykge1xuICAgICAgLy8gSW5zcGlyZWQgYnkgc3RyaW5nVG9VdGY4Qnl0ZUFycmF5KCkgaW4gY2xvc3VyZS1saWJyYXJ5IGJ5IEdvb2dsZVxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvYmxvYi84NTk4ZDg3MjQyYWY1OWFhYzIzMzI3MDc0MmM4OTg0ZTJiMmJkYmUwL2Nsb3N1cmUvZ29vZy9jcnlwdC9jcnlwdC5qcyNMMTE3LUwxNDNcbiAgICAgIC8vIEFwYWNoZSBMaWNlbnNlIDIuMFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICAgICAgdmFyIHAgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGMgPSBtc2cuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGMgPCAxMjgpIHtcbiAgICAgICAgICByZXNbcCsrXSA9IGM7XG4gICAgICAgIH0gZWxzZSBpZiAoYyA8IDIwNDgpIHtcbiAgICAgICAgICByZXNbcCsrXSA9IChjID4+IDYpIHwgMTkyO1xuICAgICAgICAgIHJlc1twKytdID0gKGMgJiA2MykgfCAxMjg7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNTdXJyb2dhdGVQYWlyKG1zZywgaSkpIHtcbiAgICAgICAgICBjID0gMHgxMDAwMCArICgoYyAmIDB4MDNGRikgPDwgMTApICsgKG1zZy5jaGFyQ29kZUF0KCsraSkgJiAweDAzRkYpO1xuICAgICAgICAgIHJlc1twKytdID0gKGMgPj4gMTgpIHwgMjQwO1xuICAgICAgICAgIHJlc1twKytdID0gKChjID4+IDEyKSAmIDYzKSB8IDEyODtcbiAgICAgICAgICByZXNbcCsrXSA9ICgoYyA+PiA2KSAmIDYzKSB8IDEyODtcbiAgICAgICAgICByZXNbcCsrXSA9IChjICYgNjMpIHwgMTI4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc1twKytdID0gKGMgPj4gMTIpIHwgMjI0O1xuICAgICAgICAgIHJlc1twKytdID0gKChjID4+IDYpICYgNjMpIHwgMTI4O1xuICAgICAgICAgIHJlc1twKytdID0gKGMgJiA2MykgfCAxMjg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuYyA9PT0gJ2hleCcpIHtcbiAgICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgICBpZiAobXNnLmxlbmd0aCAlIDIgIT09IDApXG4gICAgICAgIG1zZyA9ICcwJyArIG1zZztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpICs9IDIpXG4gICAgICAgIHJlcy5wdXNoKHBhcnNlSW50KG1zZ1tpXSArIG1zZ1tpICsgMV0sIDE2KSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAoaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspXG4gICAgICByZXNbaV0gPSBtc2dbaV0gfCAwO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5leHBvcnRzLnRvQXJyYXkgPSB0b0FycmF5O1xuXG5mdW5jdGlvbiB0b0hleChtc2cpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICByZXMgKz0gemVybzIobXNnW2ldLnRvU3RyaW5nKDE2KSk7XG4gIHJldHVybiByZXM7XG59XG5leHBvcnRzLnRvSGV4ID0gdG9IZXg7XG5cbmZ1bmN0aW9uIGh0b25sKHcpIHtcbiAgdmFyIHJlcyA9ICh3ID4+PiAyNCkgfFxuICAgICAgICAgICAgKCh3ID4+PiA4KSAmIDB4ZmYwMCkgfFxuICAgICAgICAgICAgKCh3IDw8IDgpICYgMHhmZjAwMDApIHxcbiAgICAgICAgICAgICgodyAmIDB4ZmYpIDw8IDI0KTtcbiAgcmV0dXJuIHJlcyA+Pj4gMDtcbn1cbmV4cG9ydHMuaHRvbmwgPSBodG9ubDtcblxuZnVuY3Rpb24gdG9IZXgzMihtc2csIGVuZGlhbikge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHcgPSBtc2dbaV07XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2xpdHRsZScpXG4gICAgICB3ID0gaHRvbmwodyk7XG4gICAgcmVzICs9IHplcm84KHcudG9TdHJpbmcoMTYpKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuZXhwb3J0cy50b0hleDMyID0gdG9IZXgzMjtcblxuZnVuY3Rpb24gemVybzIod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbmV4cG9ydHMuemVybzIgPSB6ZXJvMjtcblxuZnVuY3Rpb24gemVybzgod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDcpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA2KVxuICAgIHJldHVybiAnMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDUpXG4gICAgcmV0dXJuICcwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDQpXG4gICAgcmV0dXJuICcwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAzKVxuICAgIHJldHVybiAnMDAwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDIpXG4gICAgcmV0dXJuICcwMDAwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwMDAwMDAwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbmV4cG9ydHMuemVybzggPSB6ZXJvODtcblxuZnVuY3Rpb24gam9pbjMyKG1zZywgc3RhcnQsIGVuZCwgZW5kaWFuKSB7XG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydDtcbiAgYXNzZXJ0KGxlbiAlIDQgPT09IDApO1xuICB2YXIgcmVzID0gbmV3IEFycmF5KGxlbiAvIDQpO1xuICBmb3IgKHZhciBpID0gMCwgayA9IHN0YXJ0OyBpIDwgcmVzLmxlbmd0aDsgaSsrLCBrICs9IDQpIHtcbiAgICB2YXIgdztcbiAgICBpZiAoZW5kaWFuID09PSAnYmlnJylcbiAgICAgIHcgPSAobXNnW2tdIDw8IDI0KSB8IChtc2dbayArIDFdIDw8IDE2KSB8IChtc2dbayArIDJdIDw8IDgpIHwgbXNnW2sgKyAzXTtcbiAgICBlbHNlXG4gICAgICB3ID0gKG1zZ1trICsgM10gPDwgMjQpIHwgKG1zZ1trICsgMl0gPDwgMTYpIHwgKG1zZ1trICsgMV0gPDwgOCkgfCBtc2dba107XG4gICAgcmVzW2ldID0gdyA+Pj4gMDtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuZXhwb3J0cy5qb2luMzIgPSBqb2luMzI7XG5cbmZ1bmN0aW9uIHNwbGl0MzIobXNnLCBlbmRpYW4pIHtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShtc2cubGVuZ3RoICogNCk7XG4gIGZvciAodmFyIGkgPSAwLCBrID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKywgayArPSA0KSB7XG4gICAgdmFyIG0gPSBtc2dbaV07XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JpZycpIHtcbiAgICAgIHJlc1trXSA9IG0gPj4+IDI0O1xuICAgICAgcmVzW2sgKyAxXSA9IChtID4+PiAxNikgJiAweGZmO1xuICAgICAgcmVzW2sgKyAyXSA9IChtID4+PiA4KSAmIDB4ZmY7XG4gICAgICByZXNbayArIDNdID0gbSAmIDB4ZmY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1trICsgM10gPSBtID4+PiAyNDtcbiAgICAgIHJlc1trICsgMl0gPSAobSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgIHJlc1trICsgMV0gPSAobSA+Pj4gOCkgJiAweGZmO1xuICAgICAgcmVzW2tdID0gbSAmIDB4ZmY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG5leHBvcnRzLnNwbGl0MzIgPSBzcGxpdDMyO1xuXG5mdW5jdGlvbiByb3RyMzIodywgYikge1xuICByZXR1cm4gKHcgPj4+IGIpIHwgKHcgPDwgKDMyIC0gYikpO1xufVxuZXhwb3J0cy5yb3RyMzIgPSByb3RyMzI7XG5cbmZ1bmN0aW9uIHJvdGwzMih3LCBiKSB7XG4gIHJldHVybiAodyA8PCBiKSB8ICh3ID4+PiAoMzIgLSBiKSk7XG59XG5leHBvcnRzLnJvdGwzMiA9IHJvdGwzMjtcblxuZnVuY3Rpb24gc3VtMzIoYSwgYikge1xuICByZXR1cm4gKGEgKyBiKSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtMzIgPSBzdW0zMjtcblxuZnVuY3Rpb24gc3VtMzJfMyhhLCBiLCBjKSB7XG4gIHJldHVybiAoYSArIGIgKyBjKSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtMzJfMyA9IHN1bTMyXzM7XG5cbmZ1bmN0aW9uIHN1bTMyXzQoYSwgYiwgYywgZCkge1xuICByZXR1cm4gKGEgKyBiICsgYyArIGQpID4+PiAwO1xufVxuZXhwb3J0cy5zdW0zMl80ID0gc3VtMzJfNDtcblxuZnVuY3Rpb24gc3VtMzJfNShhLCBiLCBjLCBkLCBlKSB7XG4gIHJldHVybiAoYSArIGIgKyBjICsgZCArIGUpID4+PiAwO1xufVxuZXhwb3J0cy5zdW0zMl81ID0gc3VtMzJfNTtcblxuZnVuY3Rpb24gc3VtNjQoYnVmLCBwb3MsIGFoLCBhbCkge1xuICB2YXIgYmggPSBidWZbcG9zXTtcbiAgdmFyIGJsID0gYnVmW3BvcyArIDFdO1xuXG4gIHZhciBsbyA9IChhbCArIGJsKSA+Pj4gMDtcbiAgdmFyIGhpID0gKGxvIDwgYWwgPyAxIDogMCkgKyBhaCArIGJoO1xuICBidWZbcG9zXSA9IGhpID4+PiAwO1xuICBidWZbcG9zICsgMV0gPSBsbztcbn1cbmV4cG9ydHMuc3VtNjQgPSBzdW02NDtcblxuZnVuY3Rpb24gc3VtNjRfaGkoYWgsIGFsLCBiaCwgYmwpIHtcbiAgdmFyIGxvID0gKGFsICsgYmwpID4+PiAwO1xuICB2YXIgaGkgPSAobG8gPCBhbCA/IDEgOiAwKSArIGFoICsgYmg7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtNjRfaGkgPSBzdW02NF9oaTtcblxuZnVuY3Rpb24gc3VtNjRfbG8oYWgsIGFsLCBiaCwgYmwpIHtcbiAgdmFyIGxvID0gYWwgKyBibDtcbiAgcmV0dXJuIGxvID4+PiAwO1xufVxuZXhwb3J0cy5zdW02NF9sbyA9IHN1bTY0X2xvO1xuXG5mdW5jdGlvbiBzdW02NF80X2hpKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCkge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgbG8gPSBhbDtcbiAgbG8gPSAobG8gKyBibCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgYWwgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBjbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgY2wgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBkbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgZGwgPyAxIDogMDtcblxuICB2YXIgaGkgPSBhaCArIGJoICsgY2ggKyBkaCArIGNhcnJ5O1xuICByZXR1cm4gaGkgPj4+IDA7XG59XG5leHBvcnRzLnN1bTY0XzRfaGkgPSBzdW02NF80X2hpO1xuXG5mdW5jdGlvbiBzdW02NF80X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCkge1xuICB2YXIgbG8gPSBhbCArIGJsICsgY2wgKyBkbDtcbiAgcmV0dXJuIGxvID4+PiAwO1xufVxuZXhwb3J0cy5zdW02NF80X2xvID0gc3VtNjRfNF9sbztcblxuZnVuY3Rpb24gc3VtNjRfNV9oaShhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwsIGVoLCBlbCkge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgbG8gPSBhbDtcbiAgbG8gPSAobG8gKyBibCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgYWwgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBjbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgY2wgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBkbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgZGwgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBlbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgZWwgPyAxIDogMDtcblxuICB2YXIgaGkgPSBhaCArIGJoICsgY2ggKyBkaCArIGVoICsgY2Fycnk7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtNjRfNV9oaSA9IHN1bTY0XzVfaGk7XG5cbmZ1bmN0aW9uIHN1bTY0XzVfbG8oYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsLCBlaCwgZWwpIHtcbiAgdmFyIGxvID0gYWwgKyBibCArIGNsICsgZGwgKyBlbDtcblxuICByZXR1cm4gbG8gPj4+IDA7XG59XG5leHBvcnRzLnN1bTY0XzVfbG8gPSBzdW02NF81X2xvO1xuXG5mdW5jdGlvbiByb3RyNjRfaGkoYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWwgPDwgKDMyIC0gbnVtKSkgfCAoYWggPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufVxuZXhwb3J0cy5yb3RyNjRfaGkgPSByb3RyNjRfaGk7XG5cbmZ1bmN0aW9uIHJvdHI2NF9sbyhhaCwgYWwsIG51bSkge1xuICB2YXIgciA9IChhaCA8PCAoMzIgLSBudW0pKSB8IChhbCA+Pj4gbnVtKTtcbiAgcmV0dXJuIHIgPj4+IDA7XG59XG5leHBvcnRzLnJvdHI2NF9sbyA9IHJvdHI2NF9sbztcblxuZnVuY3Rpb24gc2hyNjRfaGkoYWgsIGFsLCBudW0pIHtcbiAgcmV0dXJuIGFoID4+PiBudW07XG59XG5leHBvcnRzLnNocjY0X2hpID0gc2hyNjRfaGk7XG5cbmZ1bmN0aW9uIHNocjY0X2xvKGFoLCBhbCwgbnVtKSB7XG4gIHZhciByID0gKGFoIDw8ICgzMiAtIG51bSkpIHwgKGFsID4+PiBudW0pO1xuICByZXR1cm4gciA+Pj4gMDtcbn1cbmV4cG9ydHMuc2hyNjRfbG8gPSBzaHI2NF9sbztcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtY3J5cHRvLXV0aWxzJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG5mdW5jdGlvbiBIbWFjRFJCRyhvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBIbWFjRFJCRykpXG4gICAgcmV0dXJuIG5ldyBIbWFjRFJCRyhvcHRpb25zKTtcbiAgdGhpcy5oYXNoID0gb3B0aW9ucy5oYXNoO1xuICB0aGlzLnByZWRSZXNpc3QgPSAhIW9wdGlvbnMucHJlZFJlc2lzdDtcblxuICB0aGlzLm91dExlbiA9IHRoaXMuaGFzaC5vdXRTaXplO1xuICB0aGlzLm1pbkVudHJvcHkgPSBvcHRpb25zLm1pbkVudHJvcHkgfHwgdGhpcy5oYXNoLmhtYWNTdHJlbmd0aDtcblxuICB0aGlzLl9yZXNlZWQgPSBudWxsO1xuICB0aGlzLnJlc2VlZEludGVydmFsID0gbnVsbDtcbiAgdGhpcy5LID0gbnVsbDtcbiAgdGhpcy5WID0gbnVsbDtcblxuICB2YXIgZW50cm9weSA9IHV0aWxzLnRvQXJyYXkob3B0aW9ucy5lbnRyb3B5LCBvcHRpb25zLmVudHJvcHlFbmMgfHwgJ2hleCcpO1xuICB2YXIgbm9uY2UgPSB1dGlscy50b0FycmF5KG9wdGlvbnMubm9uY2UsIG9wdGlvbnMubm9uY2VFbmMgfHwgJ2hleCcpO1xuICB2YXIgcGVycyA9IHV0aWxzLnRvQXJyYXkob3B0aW9ucy5wZXJzLCBvcHRpb25zLnBlcnNFbmMgfHwgJ2hleCcpO1xuICBhc3NlcnQoZW50cm9weS5sZW5ndGggPj0gKHRoaXMubWluRW50cm9weSAvIDgpLFxuICAgICAgICAgJ05vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogJyArIHRoaXMubWluRW50cm9weSArICcgYml0cycpO1xuICB0aGlzLl9pbml0KGVudHJvcHksIG5vbmNlLCBwZXJzKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gSG1hY0RSQkc7XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQoZW50cm9weSwgbm9uY2UsIHBlcnMpIHtcbiAgdmFyIHNlZWQgPSBlbnRyb3B5LmNvbmNhdChub25jZSkuY29uY2F0KHBlcnMpO1xuXG4gIHRoaXMuSyA9IG5ldyBBcnJheSh0aGlzLm91dExlbiAvIDgpO1xuICB0aGlzLlYgPSBuZXcgQXJyYXkodGhpcy5vdXRMZW4gLyA4KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLlYubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLktbaV0gPSAweDAwO1xuICAgIHRoaXMuVltpXSA9IDB4MDE7XG4gIH1cblxuICB0aGlzLl91cGRhdGUoc2VlZCk7XG4gIHRoaXMuX3Jlc2VlZCA9IDE7XG4gIHRoaXMucmVzZWVkSW50ZXJ2YWwgPSAweDEwMDAwMDAwMDAwMDA7ICAvLyAyXjQ4XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuX2htYWMgPSBmdW5jdGlvbiBobWFjKCkge1xuICByZXR1cm4gbmV3IGhhc2guaG1hYyh0aGlzLmhhc2gsIHRoaXMuSyk7XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShzZWVkKSB7XG4gIHZhciBrbWFjID0gdGhpcy5faG1hYygpXG4gICAgICAgICAgICAgICAgIC51cGRhdGUodGhpcy5WKVxuICAgICAgICAgICAgICAgICAudXBkYXRlKFsgMHgwMCBdKTtcbiAgaWYgKHNlZWQpXG4gICAga21hYyA9IGttYWMudXBkYXRlKHNlZWQpO1xuICB0aGlzLksgPSBrbWFjLmRpZ2VzdCgpO1xuICB0aGlzLlYgPSB0aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7XG4gIGlmICghc2VlZClcbiAgICByZXR1cm47XG5cbiAgdGhpcy5LID0gdGhpcy5faG1hYygpXG4gICAgICAgICAgICAgICAudXBkYXRlKHRoaXMuVilcbiAgICAgICAgICAgICAgIC51cGRhdGUoWyAweDAxIF0pXG4gICAgICAgICAgICAgICAudXBkYXRlKHNlZWQpXG4gICAgICAgICAgICAgICAuZGlnZXN0KCk7XG4gIHRoaXMuViA9IHRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKTtcbn07XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5yZXNlZWQgPSBmdW5jdGlvbiByZXNlZWQoZW50cm9weSwgZW50cm9weUVuYywgYWRkLCBhZGRFbmMpIHtcbiAgLy8gT3B0aW9uYWwgZW50cm9weSBlbmNcbiAgaWYgKHR5cGVvZiBlbnRyb3B5RW5jICE9PSAnc3RyaW5nJykge1xuICAgIGFkZEVuYyA9IGFkZDtcbiAgICBhZGQgPSBlbnRyb3B5RW5jO1xuICAgIGVudHJvcHlFbmMgPSBudWxsO1xuICB9XG5cbiAgZW50cm9weSA9IHV0aWxzLnRvQXJyYXkoZW50cm9weSwgZW50cm9weUVuYyk7XG4gIGFkZCA9IHV0aWxzLnRvQXJyYXkoYWRkLCBhZGRFbmMpO1xuXG4gIGFzc2VydChlbnRyb3B5Lmxlbmd0aCA+PSAodGhpcy5taW5FbnRyb3B5IC8gOCksXG4gICAgICAgICAnTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAnICsgdGhpcy5taW5FbnRyb3B5ICsgJyBiaXRzJyk7XG5cbiAgdGhpcy5fdXBkYXRlKGVudHJvcHkuY29uY2F0KGFkZCB8fCBbXSkpO1xuICB0aGlzLl9yZXNlZWQgPSAxO1xufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLmdlbmVyYXRlID0gZnVuY3Rpb24gZ2VuZXJhdGUobGVuLCBlbmMsIGFkZCwgYWRkRW5jKSB7XG4gIGlmICh0aGlzLl9yZXNlZWQgPiB0aGlzLnJlc2VlZEludGVydmFsKVxuICAgIHRocm93IG5ldyBFcnJvcignUmVzZWVkIGlzIHJlcXVpcmVkJyk7XG5cbiAgLy8gT3B0aW9uYWwgZW5jb2RpbmdcbiAgaWYgKHR5cGVvZiBlbmMgIT09ICdzdHJpbmcnKSB7XG4gICAgYWRkRW5jID0gYWRkO1xuICAgIGFkZCA9IGVuYztcbiAgICBlbmMgPSBudWxsO1xuICB9XG5cbiAgLy8gT3B0aW9uYWwgYWRkaXRpb25hbCBkYXRhXG4gIGlmIChhZGQpIHtcbiAgICBhZGQgPSB1dGlscy50b0FycmF5KGFkZCwgYWRkRW5jIHx8ICdoZXgnKTtcbiAgICB0aGlzLl91cGRhdGUoYWRkKTtcbiAgfVxuXG4gIHZhciB0ZW1wID0gW107XG4gIHdoaWxlICh0ZW1wLmxlbmd0aCA8IGxlbikge1xuICAgIHRoaXMuViA9IHRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKTtcbiAgICB0ZW1wID0gdGVtcC5jb25jYXQodGhpcy5WKTtcbiAgfVxuXG4gIHZhciByZXMgPSB0ZW1wLnNsaWNlKDAsIGxlbik7XG4gIHRoaXMuX3VwZGF0ZShhZGQpO1xuICB0aGlzLl9yZXNlZWQrKztcbiAgcmV0dXJuIHV0aWxzLmVuY29kZShyZXMsIGVuYyk7XG59O1xuIiwiLyohIGllZWU3NTQuIEJTRC0zLUNsYXVzZSBMaWNlbnNlLiBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmcvb3BlbnNvdXJjZT4gKi9cbmV4cG9ydHMucmVhZCA9IGZ1bmN0aW9uIChidWZmZXIsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlLCBtXG4gIHZhciBlTGVuID0gKG5CeXRlcyAqIDgpIC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBuQml0cyA9IC03XG4gIHZhciBpID0gaXNMRSA/IChuQnl0ZXMgLSAxKSA6IDBcbiAgdmFyIGQgPSBpc0xFID8gLTEgOiAxXG4gIHZhciBzID0gYnVmZmVyW29mZnNldCArIGldXG5cbiAgaSArPSBkXG5cbiAgZSA9IHMgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgcyA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gZUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBlID0gKGUgKiAyNTYpICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgbSA9IGUgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgZSA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gbUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBtID0gKG0gKiAyNTYpICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgaWYgKGUgPT09IDApIHtcbiAgICBlID0gMSAtIGVCaWFzXG4gIH0gZWxzZSBpZiAoZSA9PT0gZU1heCkge1xuICAgIHJldHVybiBtID8gTmFOIDogKChzID8gLTEgOiAxKSAqIEluZmluaXR5KVxuICB9IGVsc2Uge1xuICAgIG0gPSBtICsgTWF0aC5wb3coMiwgbUxlbilcbiAgICBlID0gZSAtIGVCaWFzXG4gIH1cbiAgcmV0dXJuIChzID8gLTEgOiAxKSAqIG0gKiBNYXRoLnBvdygyLCBlIC0gbUxlbilcbn1cblxuZXhwb3J0cy53cml0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIHZhbHVlLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbSwgY1xuICB2YXIgZUxlbiA9IChuQnl0ZXMgKiA4KSAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgcnQgPSAobUxlbiA9PT0gMjMgPyBNYXRoLnBvdygyLCAtMjQpIC0gTWF0aC5wb3coMiwgLTc3KSA6IDApXG4gIHZhciBpID0gaXNMRSA/IDAgOiAobkJ5dGVzIC0gMSlcbiAgdmFyIGQgPSBpc0xFID8gMSA6IC0xXG4gIHZhciBzID0gdmFsdWUgPCAwIHx8ICh2YWx1ZSA9PT0gMCAmJiAxIC8gdmFsdWUgPCAwKSA/IDEgOiAwXG5cbiAgdmFsdWUgPSBNYXRoLmFicyh2YWx1ZSlcblxuICBpZiAoaXNOYU4odmFsdWUpIHx8IHZhbHVlID09PSBJbmZpbml0eSkge1xuICAgIG0gPSBpc05hTih2YWx1ZSkgPyAxIDogMFxuICAgIGUgPSBlTWF4XG4gIH0gZWxzZSB7XG4gICAgZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsdWUpIC8gTWF0aC5MTjIpXG4gICAgaWYgKHZhbHVlICogKGMgPSBNYXRoLnBvdygyLCAtZSkpIDwgMSkge1xuICAgICAgZS0tXG4gICAgICBjICo9IDJcbiAgICB9XG4gICAgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICB2YWx1ZSArPSBydCAvIGNcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgKz0gcnQgKiBNYXRoLnBvdygyLCAxIC0gZUJpYXMpXG4gICAgfVxuICAgIGlmICh2YWx1ZSAqIGMgPj0gMikge1xuICAgICAgZSsrXG4gICAgICBjIC89IDJcbiAgICB9XG5cbiAgICBpZiAoZSArIGVCaWFzID49IGVNYXgpIHtcbiAgICAgIG0gPSAwXG4gICAgICBlID0gZU1heFxuICAgIH0gZWxzZSBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIG0gPSAoKHZhbHVlICogYykgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gZSArIGVCaWFzXG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSB2YWx1ZSAqIE1hdGgucG93KDIsIGVCaWFzIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IDBcbiAgICB9XG4gIH1cblxuICBmb3IgKDsgbUxlbiA+PSA4OyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBtICYgMHhmZiwgaSArPSBkLCBtIC89IDI1NiwgbUxlbiAtPSA4KSB7fVxuXG4gIGUgPSAoZSA8PCBtTGVuKSB8IG1cbiAgZUxlbiArPSBtTGVuXG4gIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW29mZnNldCArIGldID0gZSAmIDB4ZmYsIGkgKz0gZCwgZSAvPSAyNTYsIGVMZW4gLT0gOCkge31cblxuICBidWZmZXJbb2Zmc2V0ICsgaSAtIGRdIHw9IHMgKiAxMjhcbn1cbiIsImlmICh0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAvLyBpbXBsZW1lbnRhdGlvbiBmcm9tIHN0YW5kYXJkIG5vZGUuanMgJ3V0aWwnIG1vZHVsZVxuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGlmIChzdXBlckN0b3IpIHtcbiAgICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgICBjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDdG9yLnByb3RvdHlwZSwge1xuICAgICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICAgIHZhbHVlOiBjdG9yLFxuICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIG9sZCBzY2hvb2wgc2hpbSBmb3Igb2xkIGJyb3dzZXJzXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgaWYgKHN1cGVyQ3Rvcikge1xuICAgICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9XG4gICAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlXG4gICAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpXG4gICAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3JcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhc1RvU3RyaW5nVGFnID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgU3ltYm9sLnRvU3RyaW5nVGFnID09PSAnc3ltYm9sJztcbnZhciBjYWxsQm91bmQgPSByZXF1aXJlKCdjYWxsLWJpbmQvY2FsbEJvdW5kJyk7XG5cbnZhciAkdG9TdHJpbmcgPSBjYWxsQm91bmQoJ09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcnKTtcblxudmFyIGlzU3RhbmRhcmRBcmd1bWVudHMgPSBmdW5jdGlvbiBpc0FyZ3VtZW50cyh2YWx1ZSkge1xuXHRpZiAoaGFzVG9TdHJpbmdUYWcgJiYgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBTeW1ib2wudG9TdHJpbmdUYWcgaW4gdmFsdWUpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuICR0b1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xufTtcblxudmFyIGlzTGVnYWN5QXJndW1lbnRzID0gZnVuY3Rpb24gaXNBcmd1bWVudHModmFsdWUpIHtcblx0aWYgKGlzU3RhbmRhcmRBcmd1bWVudHModmFsdWUpKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0cmV0dXJuIHZhbHVlICE9PSBudWxsICYmXG5cdFx0dHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuXHRcdHR5cGVvZiB2YWx1ZS5sZW5ndGggPT09ICdudW1iZXInICYmXG5cdFx0dmFsdWUubGVuZ3RoID49IDAgJiZcblx0XHQkdG9TdHJpbmcodmFsdWUpICE9PSAnW29iamVjdCBBcnJheV0nICYmXG5cdFx0JHRvU3RyaW5nKHZhbHVlLmNhbGxlZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG59O1xuXG52YXIgc3VwcG9ydHNTdGFuZGFyZEFyZ3VtZW50cyA9IChmdW5jdGlvbiAoKSB7XG5cdHJldHVybiBpc1N0YW5kYXJkQXJndW1lbnRzKGFyZ3VtZW50cyk7XG59KCkpO1xuXG5pc1N0YW5kYXJkQXJndW1lbnRzLmlzTGVnYWN5QXJndW1lbnRzID0gaXNMZWdhY3lBcmd1bWVudHM7IC8vIGZvciB0ZXN0c1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN1cHBvcnRzU3RhbmRhcmRBcmd1bWVudHMgPyBpc1N0YW5kYXJkQXJndW1lbnRzIDogaXNMZWdhY3lBcmd1bWVudHM7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgZm5Ub1N0ciA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztcbnZhciBpc0ZuUmVnZXggPSAvXlxccyooPzpmdW5jdGlvbik/XFwqLztcbnZhciBoYXNUb1N0cmluZ1RhZyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIFN5bWJvbC50b1N0cmluZ1RhZyA9PT0gJ3N5bWJvbCc7XG52YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG52YXIgZ2V0R2VuZXJhdG9yRnVuYyA9IGZ1bmN0aW9uICgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjb25zaXN0ZW50LXJldHVyblxuXHRpZiAoIWhhc1RvU3RyaW5nVGFnKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdHRyeSB7XG5cdFx0cmV0dXJuIEZ1bmN0aW9uKCdyZXR1cm4gZnVuY3Rpb24qKCkge30nKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdH1cbn07XG52YXIgR2VuZXJhdG9yRnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNHZW5lcmF0b3JGdW5jdGlvbihmbikge1xuXHRpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGlmIChpc0ZuUmVnZXgudGVzdChmblRvU3RyLmNhbGwoZm4pKSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdGlmICghaGFzVG9TdHJpbmdUYWcpIHtcblx0XHR2YXIgc3RyID0gdG9TdHIuY2FsbChmbik7XG5cdFx0cmV0dXJuIHN0ciA9PT0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJztcblx0fVxuXHRpZiAoIWdldFByb3RvKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGlmICh0eXBlb2YgR2VuZXJhdG9yRnVuY3Rpb24gPT09ICd1bmRlZmluZWQnKSB7XG5cdFx0dmFyIGdlbmVyYXRvckZ1bmMgPSBnZXRHZW5lcmF0b3JGdW5jKCk7XG5cdFx0R2VuZXJhdG9yRnVuY3Rpb24gPSBnZW5lcmF0b3JGdW5jID8gZ2V0UHJvdG8oZ2VuZXJhdG9yRnVuYykgOiBmYWxzZTtcblx0fVxuXHRyZXR1cm4gZ2V0UHJvdG8oZm4pID09PSBHZW5lcmF0b3JGdW5jdGlvbjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1udW1iZXIuaXNuYW4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc05hTih2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGNhbGxCaW5kID0gcmVxdWlyZSgnY2FsbC1iaW5kJyk7XG52YXIgZGVmaW5lID0gcmVxdWlyZSgnZGVmaW5lLXByb3BlcnRpZXMnKTtcblxudmFyIGltcGxlbWVudGF0aW9uID0gcmVxdWlyZSgnLi9pbXBsZW1lbnRhdGlvbicpO1xudmFyIGdldFBvbHlmaWxsID0gcmVxdWlyZSgnLi9wb2x5ZmlsbCcpO1xudmFyIHNoaW0gPSByZXF1aXJlKCcuL3NoaW0nKTtcblxudmFyIHBvbHlmaWxsID0gY2FsbEJpbmQoZ2V0UG9seWZpbGwoKSwgTnVtYmVyKTtcblxuLyogaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW51bWJlci5pc25hbiAqL1xuXG5kZWZpbmUocG9seWZpbGwsIHtcblx0Z2V0UG9seWZpbGw6IGdldFBvbHlmaWxsLFxuXHRpbXBsZW1lbnRhdGlvbjogaW1wbGVtZW50YXRpb24sXG5cdHNoaW06IHNoaW1cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBvbHlmaWxsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2V0UG9seWZpbGwoKSB7XG5cdGlmIChOdW1iZXIuaXNOYU4gJiYgTnVtYmVyLmlzTmFOKE5hTikgJiYgIU51bWJlci5pc05hTignYScpKSB7XG5cdFx0cmV0dXJuIE51bWJlci5pc05hTjtcblx0fVxuXHRyZXR1cm4gaW1wbGVtZW50YXRpb247XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZGVmaW5lID0gcmVxdWlyZSgnZGVmaW5lLXByb3BlcnRpZXMnKTtcbnZhciBnZXRQb2x5ZmlsbCA9IHJlcXVpcmUoJy4vcG9seWZpbGwnKTtcblxuLyogaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW51bWJlci5pc25hbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNoaW1OdW1iZXJJc05hTigpIHtcblx0dmFyIHBvbHlmaWxsID0gZ2V0UG9seWZpbGwoKTtcblx0ZGVmaW5lKE51bWJlciwgeyBpc05hTjogcG9seWZpbGwgfSwge1xuXHRcdGlzTmFOOiBmdW5jdGlvbiB0ZXN0SXNOYU4oKSB7XG5cdFx0XHRyZXR1cm4gTnVtYmVyLmlzTmFOICE9PSBwb2x5ZmlsbDtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gcG9seWZpbGw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZm9yRWFjaCA9IHJlcXVpcmUoJ2ZvcmVhY2gnKTtcbnZhciBhdmFpbGFibGVUeXBlZEFycmF5cyA9IHJlcXVpcmUoJ2F2YWlsYWJsZS10eXBlZC1hcnJheXMnKTtcbnZhciBjYWxsQm91bmQgPSByZXF1aXJlKCdjYWxsLWJpbmQvY2FsbEJvdW5kJyk7XG5cbnZhciAkdG9TdHJpbmcgPSBjYWxsQm91bmQoJ09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcnKTtcbnZhciBoYXNTeW1ib2xzID0gcmVxdWlyZSgnaGFzLXN5bWJvbHMnKSgpO1xudmFyIGhhc1RvU3RyaW5nVGFnID0gaGFzU3ltYm9scyAmJiB0eXBlb2YgU3ltYm9sLnRvU3RyaW5nVGFnID09PSAnc3ltYm9sJztcblxudmFyIHR5cGVkQXJyYXlzID0gYXZhaWxhYmxlVHlwZWRBcnJheXMoKTtcblxudmFyICRpbmRleE9mID0gY2FsbEJvdW5kKCdBcnJheS5wcm90b3R5cGUuaW5kZXhPZicsIHRydWUpIHx8IGZ1bmN0aW9uIGluZGV4T2YoYXJyYXksIHZhbHVlKSB7XG5cdGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpICs9IDEpIHtcblx0XHRpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG5cdFx0XHRyZXR1cm4gaTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIC0xO1xufTtcbnZhciAkc2xpY2UgPSBjYWxsQm91bmQoJ1N0cmluZy5wcm90b3R5cGUuc2xpY2UnKTtcbnZhciB0b1N0clRhZ3MgPSB7fTtcbnZhciBnT1BEID0gcmVxdWlyZSgnZXMtYWJzdHJhY3QvaGVscGVycy9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjsgLy8gcmVxdWlyZSgnZ2V0cHJvdG90eXBlb2YnKTtcbmlmIChoYXNUb1N0cmluZ1RhZyAmJiBnT1BEICYmIGdldFByb3RvdHlwZU9mKSB7XG5cdGZvckVhY2godHlwZWRBcnJheXMsIGZ1bmN0aW9uICh0eXBlZEFycmF5KSB7XG5cdFx0dmFyIGFyciA9IG5ldyBnbG9iYWxbdHlwZWRBcnJheV0oKTtcblx0XHRpZiAoIShTeW1ib2wudG9TdHJpbmdUYWcgaW4gYXJyKSkge1xuXHRcdFx0dGhyb3cgbmV3IEV2YWxFcnJvcigndGhpcyBlbmdpbmUgaGFzIHN1cHBvcnQgZm9yIFN5bWJvbC50b1N0cmluZ1RhZywgYnV0ICcgKyB0eXBlZEFycmF5ICsgJyBkb2VzIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSEgUGxlYXNlIHJlcG9ydCB0aGlzLicpO1xuXHRcdH1cblx0XHR2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGVPZihhcnIpO1xuXHRcdHZhciBkZXNjcmlwdG9yID0gZ09QRChwcm90bywgU3ltYm9sLnRvU3RyaW5nVGFnKTtcblx0XHRpZiAoIWRlc2NyaXB0b3IpIHtcblx0XHRcdHZhciBzdXBlclByb3RvID0gZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuXHRcdFx0ZGVzY3JpcHRvciA9IGdPUEQoc3VwZXJQcm90bywgU3ltYm9sLnRvU3RyaW5nVGFnKTtcblx0XHR9XG5cdFx0dG9TdHJUYWdzW3R5cGVkQXJyYXldID0gZGVzY3JpcHRvci5nZXQ7XG5cdH0pO1xufVxuXG52YXIgdHJ5VHlwZWRBcnJheXMgPSBmdW5jdGlvbiB0cnlBbGxUeXBlZEFycmF5cyh2YWx1ZSkge1xuXHR2YXIgYW55VHJ1ZSA9IGZhbHNlO1xuXHRmb3JFYWNoKHRvU3RyVGFncywgZnVuY3Rpb24gKGdldHRlciwgdHlwZWRBcnJheSkge1xuXHRcdGlmICghYW55VHJ1ZSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0YW55VHJ1ZSA9IGdldHRlci5jYWxsKHZhbHVlKSA9PT0gdHlwZWRBcnJheTtcblx0XHRcdH0gY2F0Y2ggKGUpIHsgLyoqLyB9XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGFueVRydWU7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzVHlwZWRBcnJheSh2YWx1ZSkge1xuXHRpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICghaGFzVG9TdHJpbmdUYWcpIHtcblx0XHR2YXIgdGFnID0gJHNsaWNlKCR0b1N0cmluZyh2YWx1ZSksIDgsIC0xKTtcblx0XHRyZXR1cm4gJGluZGV4T2YodHlwZWRBcnJheXMsIHRhZykgPiAtMTtcblx0fVxuXHRpZiAoIWdPUEQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdHJldHVybiB0cnlUeXBlZEFycmF5cyh2YWx1ZSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaEJhc2UgPSByZXF1aXJlKCdoYXNoLWJhc2UnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBBUlJBWTE2ID0gbmV3IEFycmF5KDE2KVxuXG5mdW5jdGlvbiBNRDUgKCkge1xuICBIYXNoQmFzZS5jYWxsKHRoaXMsIDY0KVxuXG4gIC8vIHN0YXRlXG4gIHRoaXMuX2EgPSAweDY3NDUyMzAxXG4gIHRoaXMuX2IgPSAweGVmY2RhYjg5XG4gIHRoaXMuX2MgPSAweDk4YmFkY2ZlXG4gIHRoaXMuX2QgPSAweDEwMzI1NDc2XG59XG5cbmluaGVyaXRzKE1ENSwgSGFzaEJhc2UpXG5cbk1ENS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIE0gPSBBUlJBWTE2XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgTVtpXSA9IHRoaXMuX2Jsb2NrLnJlYWRJbnQzMkxFKGkgKiA0KVxuXG4gIHZhciBhID0gdGhpcy5fYVxuICB2YXIgYiA9IHRoaXMuX2JcbiAgdmFyIGMgPSB0aGlzLl9jXG4gIHZhciBkID0gdGhpcy5fZFxuXG4gIGEgPSBmbkYoYSwgYiwgYywgZCwgTVswXSwgMHhkNzZhYTQ3OCwgNylcbiAgZCA9IGZuRihkLCBhLCBiLCBjLCBNWzFdLCAweGU4YzdiNzU2LCAxMilcbiAgYyA9IGZuRihjLCBkLCBhLCBiLCBNWzJdLCAweDI0MjA3MGRiLCAxNylcbiAgYiA9IGZuRihiLCBjLCBkLCBhLCBNWzNdLCAweGMxYmRjZWVlLCAyMilcbiAgYSA9IGZuRihhLCBiLCBjLCBkLCBNWzRdLCAweGY1N2MwZmFmLCA3KVxuICBkID0gZm5GKGQsIGEsIGIsIGMsIE1bNV0sIDB4NDc4N2M2MmEsIDEyKVxuICBjID0gZm5GKGMsIGQsIGEsIGIsIE1bNl0sIDB4YTgzMDQ2MTMsIDE3KVxuICBiID0gZm5GKGIsIGMsIGQsIGEsIE1bN10sIDB4ZmQ0Njk1MDEsIDIyKVxuICBhID0gZm5GKGEsIGIsIGMsIGQsIE1bOF0sIDB4Njk4MDk4ZDgsIDcpXG4gIGQgPSBmbkYoZCwgYSwgYiwgYywgTVs5XSwgMHg4YjQ0ZjdhZiwgMTIpXG4gIGMgPSBmbkYoYywgZCwgYSwgYiwgTVsxMF0sIDB4ZmZmZjViYjEsIDE3KVxuICBiID0gZm5GKGIsIGMsIGQsIGEsIE1bMTFdLCAweDg5NWNkN2JlLCAyMilcbiAgYSA9IGZuRihhLCBiLCBjLCBkLCBNWzEyXSwgMHg2YjkwMTEyMiwgNylcbiAgZCA9IGZuRihkLCBhLCBiLCBjLCBNWzEzXSwgMHhmZDk4NzE5MywgMTIpXG4gIGMgPSBmbkYoYywgZCwgYSwgYiwgTVsxNF0sIDB4YTY3OTQzOGUsIDE3KVxuICBiID0gZm5GKGIsIGMsIGQsIGEsIE1bMTVdLCAweDQ5YjQwODIxLCAyMilcblxuICBhID0gZm5HKGEsIGIsIGMsIGQsIE1bMV0sIDB4ZjYxZTI1NjIsIDUpXG4gIGQgPSBmbkcoZCwgYSwgYiwgYywgTVs2XSwgMHhjMDQwYjM0MCwgOSlcbiAgYyA9IGZuRyhjLCBkLCBhLCBiLCBNWzExXSwgMHgyNjVlNWE1MSwgMTQpXG4gIGIgPSBmbkcoYiwgYywgZCwgYSwgTVswXSwgMHhlOWI2YzdhYSwgMjApXG4gIGEgPSBmbkcoYSwgYiwgYywgZCwgTVs1XSwgMHhkNjJmMTA1ZCwgNSlcbiAgZCA9IGZuRyhkLCBhLCBiLCBjLCBNWzEwXSwgMHgwMjQ0MTQ1MywgOSlcbiAgYyA9IGZuRyhjLCBkLCBhLCBiLCBNWzE1XSwgMHhkOGExZTY4MSwgMTQpXG4gIGIgPSBmbkcoYiwgYywgZCwgYSwgTVs0XSwgMHhlN2QzZmJjOCwgMjApXG4gIGEgPSBmbkcoYSwgYiwgYywgZCwgTVs5XSwgMHgyMWUxY2RlNiwgNSlcbiAgZCA9IGZuRyhkLCBhLCBiLCBjLCBNWzE0XSwgMHhjMzM3MDdkNiwgOSlcbiAgYyA9IGZuRyhjLCBkLCBhLCBiLCBNWzNdLCAweGY0ZDUwZDg3LCAxNClcbiAgYiA9IGZuRyhiLCBjLCBkLCBhLCBNWzhdLCAweDQ1NWExNGVkLCAyMClcbiAgYSA9IGZuRyhhLCBiLCBjLCBkLCBNWzEzXSwgMHhhOWUzZTkwNSwgNSlcbiAgZCA9IGZuRyhkLCBhLCBiLCBjLCBNWzJdLCAweGZjZWZhM2Y4LCA5KVxuICBjID0gZm5HKGMsIGQsIGEsIGIsIE1bN10sIDB4Njc2ZjAyZDksIDE0KVxuICBiID0gZm5HKGIsIGMsIGQsIGEsIE1bMTJdLCAweDhkMmE0YzhhLCAyMClcblxuICBhID0gZm5IKGEsIGIsIGMsIGQsIE1bNV0sIDB4ZmZmYTM5NDIsIDQpXG4gIGQgPSBmbkgoZCwgYSwgYiwgYywgTVs4XSwgMHg4NzcxZjY4MSwgMTEpXG4gIGMgPSBmbkgoYywgZCwgYSwgYiwgTVsxMV0sIDB4NmQ5ZDYxMjIsIDE2KVxuICBiID0gZm5IKGIsIGMsIGQsIGEsIE1bMTRdLCAweGZkZTUzODBjLCAyMylcbiAgYSA9IGZuSChhLCBiLCBjLCBkLCBNWzFdLCAweGE0YmVlYTQ0LCA0KVxuICBkID0gZm5IKGQsIGEsIGIsIGMsIE1bNF0sIDB4NGJkZWNmYTksIDExKVxuICBjID0gZm5IKGMsIGQsIGEsIGIsIE1bN10sIDB4ZjZiYjRiNjAsIDE2KVxuICBiID0gZm5IKGIsIGMsIGQsIGEsIE1bMTBdLCAweGJlYmZiYzcwLCAyMylcbiAgYSA9IGZuSChhLCBiLCBjLCBkLCBNWzEzXSwgMHgyODliN2VjNiwgNClcbiAgZCA9IGZuSChkLCBhLCBiLCBjLCBNWzBdLCAweGVhYTEyN2ZhLCAxMSlcbiAgYyA9IGZuSChjLCBkLCBhLCBiLCBNWzNdLCAweGQ0ZWYzMDg1LCAxNilcbiAgYiA9IGZuSChiLCBjLCBkLCBhLCBNWzZdLCAweDA0ODgxZDA1LCAyMylcbiAgYSA9IGZuSChhLCBiLCBjLCBkLCBNWzldLCAweGQ5ZDRkMDM5LCA0KVxuICBkID0gZm5IKGQsIGEsIGIsIGMsIE1bMTJdLCAweGU2ZGI5OWU1LCAxMSlcbiAgYyA9IGZuSChjLCBkLCBhLCBiLCBNWzE1XSwgMHgxZmEyN2NmOCwgMTYpXG4gIGIgPSBmbkgoYiwgYywgZCwgYSwgTVsyXSwgMHhjNGFjNTY2NSwgMjMpXG5cbiAgYSA9IGZuSShhLCBiLCBjLCBkLCBNWzBdLCAweGY0MjkyMjQ0LCA2KVxuICBkID0gZm5JKGQsIGEsIGIsIGMsIE1bN10sIDB4NDMyYWZmOTcsIDEwKVxuICBjID0gZm5JKGMsIGQsIGEsIGIsIE1bMTRdLCAweGFiOTQyM2E3LCAxNSlcbiAgYiA9IGZuSShiLCBjLCBkLCBhLCBNWzVdLCAweGZjOTNhMDM5LCAyMSlcbiAgYSA9IGZuSShhLCBiLCBjLCBkLCBNWzEyXSwgMHg2NTViNTljMywgNilcbiAgZCA9IGZuSShkLCBhLCBiLCBjLCBNWzNdLCAweDhmMGNjYzkyLCAxMClcbiAgYyA9IGZuSShjLCBkLCBhLCBiLCBNWzEwXSwgMHhmZmVmZjQ3ZCwgMTUpXG4gIGIgPSBmbkkoYiwgYywgZCwgYSwgTVsxXSwgMHg4NTg0NWRkMSwgMjEpXG4gIGEgPSBmbkkoYSwgYiwgYywgZCwgTVs4XSwgMHg2ZmE4N2U0ZiwgNilcbiAgZCA9IGZuSShkLCBhLCBiLCBjLCBNWzE1XSwgMHhmZTJjZTZlMCwgMTApXG4gIGMgPSBmbkkoYywgZCwgYSwgYiwgTVs2XSwgMHhhMzAxNDMxNCwgMTUpXG4gIGIgPSBmbkkoYiwgYywgZCwgYSwgTVsxM10sIDB4NGUwODExYTEsIDIxKVxuICBhID0gZm5JKGEsIGIsIGMsIGQsIE1bNF0sIDB4Zjc1MzdlODIsIDYpXG4gIGQgPSBmbkkoZCwgYSwgYiwgYywgTVsxMV0sIDB4YmQzYWYyMzUsIDEwKVxuICBjID0gZm5JKGMsIGQsIGEsIGIsIE1bMl0sIDB4MmFkN2QyYmIsIDE1KVxuICBiID0gZm5JKGIsIGMsIGQsIGEsIE1bOV0sIDB4ZWI4NmQzOTEsIDIxKVxuXG4gIHRoaXMuX2EgPSAodGhpcy5fYSArIGEpIHwgMFxuICB0aGlzLl9iID0gKHRoaXMuX2IgKyBiKSB8IDBcbiAgdGhpcy5fYyA9ICh0aGlzLl9jICsgYykgfCAwXG4gIHRoaXMuX2QgPSAodGhpcy5fZCArIGQpIHwgMFxufVxuXG5NRDUucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIGNyZWF0ZSBwYWRkaW5nIGFuZCBoYW5kbGUgYmxvY2tzXG4gIHRoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdID0gMHg4MFxuICBpZiAodGhpcy5fYmxvY2tPZmZzZXQgPiA1Nikge1xuICAgIHRoaXMuX2Jsb2NrLmZpbGwoMCwgdGhpcy5fYmxvY2tPZmZzZXQsIDY0KVxuICAgIHRoaXMuX3VwZGF0ZSgpXG4gICAgdGhpcy5fYmxvY2tPZmZzZXQgPSAwXG4gIH1cblxuICB0aGlzLl9ibG9jay5maWxsKDAsIHRoaXMuX2Jsb2NrT2Zmc2V0LCA1NilcbiAgdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMF0sIDU2KVxuICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFsxXSwgNjApXG4gIHRoaXMuX3VwZGF0ZSgpXG5cbiAgLy8gcHJvZHVjZSByZXN1bHRcbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgxNilcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9hLCAwKVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2IsIDQpXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fYywgOClcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9kLCAxMilcbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiByb3RsICh4LCBuKSB7XG4gIHJldHVybiAoeCA8PCBuKSB8ICh4ID4+PiAoMzIgLSBuKSlcbn1cblxuZnVuY3Rpb24gZm5GIChhLCBiLCBjLCBkLCBtLCBrLCBzKSB7XG4gIHJldHVybiAocm90bCgoYSArICgoYiAmIGMpIHwgKCh+YikgJiBkKSkgKyBtICsgaykgfCAwLCBzKSArIGIpIHwgMFxufVxuXG5mdW5jdGlvbiBmbkcgKGEsIGIsIGMsIGQsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKChiICYgZCkgfCAoYyAmICh+ZCkpKSArIG0gKyBrKSB8IDAsIHMpICsgYikgfCAwXG59XG5cbmZ1bmN0aW9uIGZuSCAoYSwgYiwgYywgZCwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoYiBeIGMgXiBkKSArIG0gKyBrKSB8IDAsIHMpICsgYikgfCAwXG59XG5cbmZ1bmN0aW9uIGZuSSAoYSwgYiwgYywgZCwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoKGMgXiAoYiB8ICh+ZCkpKSkgKyBtICsgaykgfCAwLCBzKSArIGIpIHwgMFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1ENVxuIiwidmFyIGJuID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBicm9yYW5kID0gcmVxdWlyZSgnYnJvcmFuZCcpO1xuXG5mdW5jdGlvbiBNaWxsZXJSYWJpbihyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQgfHwgbmV3IGJyb3JhbmQuUmFuZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBNaWxsZXJSYWJpbjtcblxuTWlsbGVyUmFiaW4uY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKHJhbmQpIHtcbiAgcmV0dXJuIG5ldyBNaWxsZXJSYWJpbihyYW5kKTtcbn07XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS5fcmFuZGJlbG93ID0gZnVuY3Rpb24gX3JhbmRiZWxvdyhuKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgbWluX2J5dGVzID0gTWF0aC5jZWlsKGxlbiAvIDgpO1xuXG4gIC8vIEdlbmVyYWdlIHJhbmRvbSBieXRlcyB1bnRpbCBhIG51bWJlciBsZXNzIHRoYW4gbiBpcyBmb3VuZC5cbiAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgMC4ubi0xIGhhdmUgYW4gZXF1YWwgcHJvYmFiaWxpdHkgb2YgYmVpbmcgc2VsZWN0ZWQuXG4gIGRvXG4gICAgdmFyIGEgPSBuZXcgYm4odGhpcy5yYW5kLmdlbmVyYXRlKG1pbl9ieXRlcykpO1xuICB3aGlsZSAoYS5jbXAobikgPj0gMCk7XG5cbiAgcmV0dXJuIGE7XG59O1xuXG5NaWxsZXJSYWJpbi5wcm90b3R5cGUuX3JhbmRyYW5nZSA9IGZ1bmN0aW9uIF9yYW5kcmFuZ2Uoc3RhcnQsIHN0b3ApIHtcbiAgLy8gR2VuZXJhdGUgYSByYW5kb20gbnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBzdGFydCBhbmQgbGVzcyB0aGFuIHN0b3AuXG4gIHZhciBzaXplID0gc3RvcC5zdWIoc3RhcnQpO1xuICByZXR1cm4gc3RhcnQuYWRkKHRoaXMuX3JhbmRiZWxvdyhzaXplKSk7XG59O1xuXG5NaWxsZXJSYWJpbi5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uIHRlc3QobiwgaywgY2IpIHtcbiAgdmFyIGxlbiA9IG4uYml0TGVuZ3RoKCk7XG4gIHZhciByZWQgPSBibi5tb250KG4pO1xuICB2YXIgcm9uZSA9IG5ldyBibigxKS50b1JlZChyZWQpO1xuXG4gIGlmICghaylcbiAgICBrID0gTWF0aC5tYXgoMSwgKGxlbiAvIDQ4KSB8IDApO1xuXG4gIC8vIEZpbmQgZCBhbmQgcywgKG4gLSAxKSA9ICgyIF4gcykgKiBkO1xuICB2YXIgbjEgPSBuLnN1Ym4oMSk7XG4gIGZvciAodmFyIHMgPSAwOyAhbjEudGVzdG4ocyk7IHMrKykge31cbiAgdmFyIGQgPSBuLnNocm4ocyk7XG5cbiAgdmFyIHJuMSA9IG4xLnRvUmVkKHJlZCk7XG5cbiAgdmFyIHByaW1lID0gdHJ1ZTtcbiAgZm9yICg7IGsgPiAwOyBrLS0pIHtcbiAgICB2YXIgYSA9IHRoaXMuX3JhbmRyYW5nZShuZXcgYm4oMiksIG4xKTtcbiAgICBpZiAoY2IpXG4gICAgICBjYihhKTtcblxuICAgIHZhciB4ID0gYS50b1JlZChyZWQpLnJlZFBvdyhkKTtcbiAgICBpZiAoeC5jbXAocm9uZSkgPT09IDAgfHwgeC5jbXAocm4xKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzOyBpKyspIHtcbiAgICAgIHggPSB4LnJlZFNxcigpO1xuXG4gICAgICBpZiAoeC5jbXAocm9uZSkgPT09IDApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICh4LmNtcChybjEpID09PSAwKVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gcylcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBwcmltZTtcbn07XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS5nZXREaXZpc29yID0gZnVuY3Rpb24gZ2V0RGl2aXNvcihuLCBrKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgcmVkID0gYm4ubW9udChuKTtcbiAgdmFyIHJvbmUgPSBuZXcgYm4oMSkudG9SZWQocmVkKTtcblxuICBpZiAoIWspXG4gICAgayA9IE1hdGgubWF4KDEsIChsZW4gLyA0OCkgfCAwKTtcblxuICAvLyBGaW5kIGQgYW5kIHMsIChuIC0gMSkgPSAoMiBeIHMpICogZDtcbiAgdmFyIG4xID0gbi5zdWJuKDEpO1xuICBmb3IgKHZhciBzID0gMDsgIW4xLnRlc3RuKHMpOyBzKyspIHt9XG4gIHZhciBkID0gbi5zaHJuKHMpO1xuXG4gIHZhciBybjEgPSBuMS50b1JlZChyZWQpO1xuXG4gIGZvciAoOyBrID4gMDsgay0tKSB7XG4gICAgdmFyIGEgPSB0aGlzLl9yYW5kcmFuZ2UobmV3IGJuKDIpLCBuMSk7XG5cbiAgICB2YXIgZyA9IG4uZ2NkKGEpO1xuICAgIGlmIChnLmNtcG4oMSkgIT09IDApXG4gICAgICByZXR1cm4gZztcblxuICAgIHZhciB4ID0gYS50b1JlZChyZWQpLnJlZFBvdyhkKTtcbiAgICBpZiAoeC5jbXAocm9uZSkgPT09IDAgfHwgeC5jbXAocm4xKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzOyBpKyspIHtcbiAgICAgIHggPSB4LnJlZFNxcigpO1xuXG4gICAgICBpZiAoeC5jbXAocm9uZSkgPT09IDApXG4gICAgICAgIHJldHVybiB4LmZyb21SZWQoKS5zdWJuKDEpLmdjZChuKTtcbiAgICAgIGlmICh4LmNtcChybjEpID09PSAwKVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gcykge1xuICAgICAgeCA9IHgucmVkU3FyKCk7XG4gICAgICByZXR1cm4geC5mcm9tUmVkKCkuc3VibigxKS5nY2Qobik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcbiIsIihmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBVdGlsc1xuICBmdW5jdGlvbiBhc3NlcnQgKHZhbCwgbXNnKSB7XG4gICAgaWYgKCF2YWwpIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbiAgfVxuXG4gIC8vIENvdWxkIHVzZSBgaW5oZXJpdHNgIG1vZHVsZSwgYnV0IGRvbid0IHdhbnQgdG8gbW92ZSBmcm9tIHNpbmdsZSBmaWxlXG4gIC8vIGFyY2hpdGVjdHVyZSB5ZXQuXG4gIGZ1bmN0aW9uIGluaGVyaXRzIChjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvcjtcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlO1xuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKCk7XG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yO1xuICB9XG5cbiAgLy8gQk5cblxuICBmdW5jdGlvbiBCTiAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAoQk4uaXNCTihudW1iZXIpKSB7XG4gICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cblxuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIHRoaXMud29yZHMgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcblxuICAgIC8vIFJlZHVjdGlvbiBjb250ZXh0XG4gICAgdGhpcy5yZWQgPSBudWxsO1xuXG4gICAgaWYgKG51bWJlciAhPT0gbnVsbCkge1xuICAgICAgaWYgKGJhc2UgPT09ICdsZScgfHwgYmFzZSA9PT0gJ2JlJykge1xuICAgICAgICBlbmRpYW4gPSBiYXNlO1xuICAgICAgICBiYXNlID0gMTA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2luaXQobnVtYmVyIHx8IDAsIGJhc2UgfHwgMTAsIGVuZGlhbiB8fCAnYmUnKTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBCTjtcbiAgfSBlbHNlIHtcbiAgICBleHBvcnRzLkJOID0gQk47XG4gIH1cblxuICBCTi5CTiA9IEJOO1xuICBCTi53b3JkU2l6ZSA9IDI2O1xuXG4gIHZhciBCdWZmZXI7XG4gIHRyeSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuQnVmZmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgQnVmZmVyID0gd2luZG93LkJ1ZmZlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICB9XG5cbiAgQk4uaXNCTiA9IGZ1bmN0aW9uIGlzQk4gKG51bSkge1xuICAgIGlmIChudW0gaW5zdGFuY2VvZiBCTikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bSAhPT0gbnVsbCAmJiB0eXBlb2YgbnVtID09PSAnb2JqZWN0JyAmJlxuICAgICAgbnVtLmNvbnN0cnVjdG9yLndvcmRTaXplID09PSBCTi53b3JkU2l6ZSAmJiBBcnJheS5pc0FycmF5KG51bS53b3Jkcyk7XG4gIH07XG5cbiAgQk4ubWF4ID0gZnVuY3Rpb24gbWF4IChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPiAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ubWluID0gZnVuY3Rpb24gbWluIChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPCAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdCAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0TnVtYmVyKG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0QXJyYXkobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAnaGV4Jykge1xuICAgICAgYmFzZSA9IDE2O1xuICAgIH1cbiAgICBhc3NlcnQoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNik7XG5cbiAgICBudW1iZXIgPSBudW1iZXIudG9TdHJpbmcoKS5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGlmIChudW1iZXJbMF0gPT09ICctJykge1xuICAgICAgc3RhcnQrKztcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA8IG51bWJlci5sZW5ndGgpIHtcbiAgICAgIGlmIChiYXNlID09PSAxNikge1xuICAgICAgICB0aGlzLl9wYXJzZUhleChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcGFyc2VCYXNlKG51bWJlciwgYmFzZSwgc3RhcnQpO1xuICAgICAgICBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICAgICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdE51bWJlciA9IGZ1bmN0aW9uIF9pbml0TnVtYmVyIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIG51bWJlciA9IC1udW1iZXI7XG4gICAgfVxuICAgIGlmIChudW1iZXIgPCAweDQwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIG51bWJlciAmIDB4M2ZmZmZmZiBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMHgxMDAwMDAwMDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZlxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG51bWJlciA8IDB4MjAwMDAwMDAwMDAwMDApOyAvLyAyIF4gNTMgKHVuc2FmZSlcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmYsXG4gICAgICAgIDFcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDM7XG4gICAgfVxuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgLy8gUmV2ZXJzZSB0aGUgYnl0ZXNcbiAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0QXJyYXkgPSBmdW5jdGlvbiBfaW5pdEFycmF5IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIC8vIFBlcmhhcHMgYSBVaW50OEFycmF5XG4gICAgYXNzZXJ0KHR5cGVvZiBudW1iZXIubGVuZ3RoID09PSAnbnVtYmVyJyk7XG4gICAgaWYgKG51bWJlci5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwobnVtYmVyLmxlbmd0aCAvIDMpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGosIHc7XG4gICAgdmFyIG9mZiA9IDA7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDEsIGogPSAwOyBpID49IDA7IGkgLT0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpIC0gMV0gPDwgOCkgfCAobnVtYmVyW2kgLSAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSArIDFdIDw8IDgpIHwgKG51bWJlcltpICsgMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXg0Qml0cyAoc3RyaW5nLCBpbmRleCkge1xuICAgIHZhciBjID0gc3RyaW5nLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgIC8vICdBJyAtICdGJ1xuICAgIGlmIChjID49IDY1ICYmIGMgPD0gNzApIHtcbiAgICAgIHJldHVybiBjIC0gNTU7XG4gICAgLy8gJ2EnIC0gJ2YnXG4gICAgfSBlbHNlIGlmIChjID49IDk3ICYmIGMgPD0gMTAyKSB7XG4gICAgICByZXR1cm4gYyAtIDg3O1xuICAgIC8vICcwJyAtICc5J1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKGMgLSA0OCkgJiAweGY7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXhCeXRlIChzdHJpbmcsIGxvd2VyQm91bmQsIGluZGV4KSB7XG4gICAgdmFyIHIgPSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXgpO1xuICAgIGlmIChpbmRleCAtIDEgPj0gbG93ZXJCb3VuZCkge1xuICAgICAgciB8PSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXggLSAxKSA8PCA0O1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VIZXggPSBmdW5jdGlvbiBfcGFyc2VIZXggKG51bWJlciwgc3RhcnQsIGVuZGlhbikge1xuICAgIC8vIENyZWF0ZSBwb3NzaWJseSBiaWdnZXIgYXJyYXkgdG8gZW5zdXJlIHRoYXQgaXQgZml0cyB0aGUgbnVtYmVyXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwoKG51bWJlci5sZW5ndGggLSBzdGFydCkgLyA2KTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIC8vIDI0LWJpdHMgY2h1bmtzXG4gICAgdmFyIG9mZiA9IDA7XG4gICAgdmFyIGogPSAwO1xuXG4gICAgdmFyIHc7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IGkgLT0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYXJzZUxlbmd0aCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICAgIGZvciAoaSA9IHBhcnNlTGVuZ3RoICUgMiA9PT0gMCA/IHN0YXJ0ICsgMSA6IHN0YXJ0OyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VCYXNlIChzdHIsIHN0YXJ0LCBlbmQsIG11bCkge1xuICAgIHZhciByID0gMDtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oc3RyLmxlbmd0aCwgZW5kKTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKSAtIDQ4O1xuXG4gICAgICByICo9IG11bDtcblxuICAgICAgLy8gJ2EnXG4gICAgICBpZiAoYyA+PSA0OSkge1xuICAgICAgICByICs9IGMgLSA0OSArIDB4YTtcblxuICAgICAgLy8gJ0EnXG4gICAgICB9IGVsc2UgaWYgKGMgPj0gMTcpIHtcbiAgICAgICAgciArPSBjIC0gMTcgKyAweGE7XG5cbiAgICAgIC8vICcwJyAtICc5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgciArPSBjO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VCYXNlID0gZnVuY3Rpb24gX3BhcnNlQmFzZSAobnVtYmVyLCBiYXNlLCBzdGFydCkge1xuICAgIC8vIEluaXRpYWxpemUgYXMgemVyb1xuICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICB0aGlzLmxlbmd0aCA9IDE7XG5cbiAgICAvLyBGaW5kIGxlbmd0aCBvZiBsaW1iIGluIGJhc2VcbiAgICBmb3IgKHZhciBsaW1iTGVuID0gMCwgbGltYlBvdyA9IDE7IGxpbWJQb3cgPD0gMHgzZmZmZmZmOyBsaW1iUG93ICo9IGJhc2UpIHtcbiAgICAgIGxpbWJMZW4rKztcbiAgICB9XG4gICAgbGltYkxlbi0tO1xuICAgIGxpbWJQb3cgPSAobGltYlBvdyAvIGJhc2UpIHwgMDtcblxuICAgIHZhciB0b3RhbCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICB2YXIgbW9kID0gdG90YWwgJSBsaW1iTGVuO1xuICAgIHZhciBlbmQgPSBNYXRoLm1pbih0b3RhbCwgdG90YWwgLSBtb2QpICsgc3RhcnQ7XG5cbiAgICB2YXIgd29yZCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpICs9IGxpbWJMZW4pIHtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBpICsgbGltYkxlbiwgYmFzZSk7XG5cbiAgICAgIHRoaXMuaW11bG4obGltYlBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZCAhPT0gMCkge1xuICAgICAgdmFyIHBvdyA9IDE7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgbnVtYmVyLmxlbmd0aCwgYmFzZSk7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBtb2Q7IGkrKykge1xuICAgICAgICBwb3cgKj0gYmFzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pbXVsbihwb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKGRlc3QpIHtcbiAgICBkZXN0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlc3Qud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgIH1cbiAgICBkZXN0Lmxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIGRlc3QubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIGRlc3QucmVkID0gdGhpcy5yZWQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUgKCkge1xuICAgIHZhciByID0gbmV3IEJOKG51bGwpO1xuICAgIHRoaXMuY29weShyKTtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2V4cGFuZCA9IGZ1bmN0aW9uIF9leHBhbmQgKHNpemUpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBzaXplKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gUmVtb3ZlIGxlYWRpbmcgYDBgIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdHJpcCA9IGZ1bmN0aW9uIHN0cmlwICgpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPiAxICYmIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9ub3JtU2lnbiA9IGZ1bmN0aW9uIF9ub3JtU2lnbiAoKSB7XG4gICAgLy8gLTAgPSAwXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICAgIHJldHVybiAodGhpcy5yZWQgPyAnPEJOLVI6ICcgOiAnPEJOOiAnKSArIHRoaXMudG9TdHJpbmcoMTYpICsgJz4nO1xuICB9O1xuXG4gIC8qXG5cbiAgdmFyIHplcm9zID0gW107XG4gIHZhciBncm91cFNpemVzID0gW107XG4gIHZhciBncm91cEJhc2VzID0gW107XG5cbiAgdmFyIHMgPSAnJztcbiAgdmFyIGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IEJOLndvcmRTaXplKSB7XG4gICAgemVyb3NbaV0gPSBzO1xuICAgIHMgKz0gJzAnO1xuICB9XG4gIGdyb3VwU2l6ZXNbMF0gPSAwO1xuICBncm91cFNpemVzWzFdID0gMDtcbiAgZ3JvdXBCYXNlc1swXSA9IDA7XG4gIGdyb3VwQmFzZXNbMV0gPSAwO1xuICB2YXIgYmFzZSA9IDIgLSAxO1xuICB3aGlsZSAoKytiYXNlIDwgMzYgKyAxKSB7XG4gICAgdmFyIGdyb3VwU2l6ZSA9IDA7XG4gICAgdmFyIGdyb3VwQmFzZSA9IDE7XG4gICAgd2hpbGUgKGdyb3VwQmFzZSA8ICgxIDw8IEJOLndvcmRTaXplKSAvIGJhc2UpIHtcbiAgICAgIGdyb3VwQmFzZSAqPSBiYXNlO1xuICAgICAgZ3JvdXBTaXplICs9IDE7XG4gICAgfVxuICAgIGdyb3VwU2l6ZXNbYmFzZV0gPSBncm91cFNpemU7XG4gICAgZ3JvdXBCYXNlc1tiYXNlXSA9IGdyb3VwQmFzZTtcbiAgfVxuXG4gICovXG5cbiAgdmFyIHplcm9zID0gW1xuICAgICcnLFxuICAgICcwJyxcbiAgICAnMDAnLFxuICAgICcwMDAnLFxuICAgICcwMDAwJyxcbiAgICAnMDAwMDAnLFxuICAgICcwMDAwMDAnLFxuICAgICcwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJ1xuICBdO1xuXG4gIHZhciBncm91cFNpemVzID0gW1xuICAgIDAsIDAsXG4gICAgMjUsIDE2LCAxMiwgMTEsIDEwLCA5LCA4LFxuICAgIDgsIDcsIDcsIDcsIDcsIDYsIDYsXG4gICAgNiwgNiwgNiwgNiwgNiwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDVcbiAgXTtcblxuICB2YXIgZ3JvdXBCYXNlcyA9IFtcbiAgICAwLCAwLFxuICAgIDMzNTU0NDMyLCA0MzA0NjcyMSwgMTY3NzcyMTYsIDQ4ODI4MTI1LCA2MDQ2NjE3NiwgNDAzNTM2MDcsIDE2Nzc3MjE2LFxuICAgIDQzMDQ2NzIxLCAxMDAwMDAwMCwgMTk0ODcxNzEsIDM1ODMxODA4LCA2Mjc0ODUxNywgNzUyOTUzNiwgMTEzOTA2MjUsXG4gICAgMTY3NzcyMTYsIDI0MTM3NTY5LCAzNDAxMjIyNCwgNDcwNDU4ODEsIDY0MDAwMDAwLCA0MDg0MTAxLCA1MTUzNjMyLFxuICAgIDY0MzYzNDMsIDc5NjI2MjQsIDk3NjU2MjUsIDExODgxMzc2LCAxNDM0ODkwNywgMTcyMTAzNjgsIDIwNTExMTQ5LFxuICAgIDI0MzAwMDAwLCAyODYyOTE1MSwgMzM1NTQ0MzIsIDM5MTM1MzkzLCA0NTQzNTQyNCwgNTI1MjE4NzUsIDYwNDY2MTc2XG4gIF07XG5cbiAgQk4ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKGJhc2UsIHBhZGRpbmcpIHtcbiAgICBiYXNlID0gYmFzZSB8fCAxMDtcbiAgICBwYWRkaW5nID0gcGFkZGluZyB8IDAgfHwgMTtcblxuICAgIHZhciBvdXQ7XG4gICAgaWYgKGJhc2UgPT09IDE2IHx8IGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBvZmYgPSAwO1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV07XG4gICAgICAgIHZhciB3b3JkID0gKCgodyA8PCBvZmYpIHwgY2FycnkpICYgMHhmZmZmZmYpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgY2FycnkgPSAodyA+Pj4gKDI0IC0gb2ZmKSkgJiAweGZmZmZmZjtcbiAgICAgICAgaWYgKGNhcnJ5ICE9PSAwIHx8IGkgIT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIG91dCA9IHplcm9zWzYgLSB3b3JkLmxlbmd0aF0gKyB3b3JkICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHdvcmQgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgb2ZmICs9IDI7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgICAgb3V0ID0gY2FycnkudG9TdHJpbmcoMTYpICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpIHtcbiAgICAgIC8vIHZhciBncm91cFNpemUgPSBNYXRoLmZsb29yKEJOLndvcmRTaXplICogTWF0aC5MTjIgLyBNYXRoLmxvZyhiYXNlKSk7XG4gICAgICB2YXIgZ3JvdXBTaXplID0gZ3JvdXBTaXplc1tiYXNlXTtcbiAgICAgIC8vIHZhciBncm91cEJhc2UgPSBNYXRoLnBvdyhiYXNlLCBncm91cFNpemUpO1xuICAgICAgdmFyIGdyb3VwQmFzZSA9IGdyb3VwQmFzZXNbYmFzZV07XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBjID0gdGhpcy5jbG9uZSgpO1xuICAgICAgYy5uZWdhdGl2ZSA9IDA7XG4gICAgICB3aGlsZSAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgdmFyIHIgPSBjLm1vZG4oZ3JvdXBCYXNlKS50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgYyA9IGMuaWRpdm4oZ3JvdXBCYXNlKTtcblxuICAgICAgICBpZiAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1tncm91cFNpemUgLSByLmxlbmd0aF0gKyByICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHIgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGFzc2VydChmYWxzZSwgJ0Jhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYnKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9OdW1iZXIgPSBmdW5jdGlvbiB0b051bWJlciAoKSB7XG4gICAgdmFyIHJldCA9IHRoaXMud29yZHNbMF07XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAyKSB7XG4gICAgICByZXQgKz0gdGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMDtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID09PSAzICYmIHRoaXMud29yZHNbMl0gPT09IDB4MDEpIHtcbiAgICAgIC8vIE5PVEU6IGF0IHRoaXMgc3RhZ2UgaXQgaXMga25vd24gdGhhdCB0aGUgdG9wIGJpdCBpcyBzZXRcbiAgICAgIHJldCArPSAweDEwMDAwMDAwMDAwMDAwICsgKHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiAyKSB7XG4gICAgICBhc3NlcnQoZmFsc2UsICdOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMnKTtcbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLm5lZ2F0aXZlICE9PSAwKSA/IC1yZXQgOiByZXQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0J1ZmZlciA9IGZ1bmN0aW9uIHRvQnVmZmVyIChlbmRpYW4sIGxlbmd0aCkge1xuICAgIGFzc2VydCh0eXBlb2YgQnVmZmVyICE9PSAndW5kZWZpbmVkJyk7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQnVmZmVyLCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiB0b0FycmF5IChlbmRpYW4sIGxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXlMaWtlID0gZnVuY3Rpb24gdG9BcnJheUxpa2UgKEFycmF5VHlwZSwgZW5kaWFuLCBsZW5ndGgpIHtcbiAgICB2YXIgYnl0ZUxlbmd0aCA9IHRoaXMuYnl0ZUxlbmd0aCgpO1xuICAgIHZhciByZXFMZW5ndGggPSBsZW5ndGggfHwgTWF0aC5tYXgoMSwgYnl0ZUxlbmd0aCk7XG4gICAgYXNzZXJ0KGJ5dGVMZW5ndGggPD0gcmVxTGVuZ3RoLCAnYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCcpO1xuICAgIGFzc2VydChyZXFMZW5ndGggPiAwLCAnUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwJyk7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gICAgdmFyIGxpdHRsZUVuZGlhbiA9IGVuZGlhbiA9PT0gJ2xlJztcbiAgICB2YXIgcmVzID0gbmV3IEFycmF5VHlwZShyZXFMZW5ndGgpO1xuXG4gICAgdmFyIGIsIGk7XG4gICAgdmFyIHEgPSB0aGlzLmNsb25lKCk7XG4gICAgaWYgKCFsaXR0bGVFbmRpYW4pIHtcbiAgICAgIC8vIEFzc3VtZSBiaWctZW5kaWFuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgcmVxTGVuZ3RoIC0gYnl0ZUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tyZXFMZW5ndGggLSBpIC0gMV0gPSBiO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbaV0gPSBiO1xuICAgICAgfVxuXG4gICAgICBmb3IgKDsgaSA8IHJlcUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBpZiAoTWF0aC5jbHozMikge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgcmV0dXJuIDMyIC0gTWF0aC5jbHozMih3KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgdmFyIHQgPSB3O1xuICAgICAgdmFyIHIgPSAwO1xuICAgICAgaWYgKHQgPj0gMHgxMDAwKSB7XG4gICAgICAgIHIgKz0gMTM7XG4gICAgICAgIHQgPj4+PSAxMztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4NDApIHtcbiAgICAgICAgciArPSA3O1xuICAgICAgICB0ID4+Pj0gNztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4OCkge1xuICAgICAgICByICs9IDQ7XG4gICAgICAgIHQgPj4+PSA0O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHgwMikge1xuICAgICAgICByICs9IDI7XG4gICAgICAgIHQgPj4+PSAyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHIgKyB0O1xuICAgIH07XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3plcm9CaXRzID0gZnVuY3Rpb24gX3plcm9CaXRzICh3KSB7XG4gICAgLy8gU2hvcnQtY3V0XG4gICAgaWYgKHcgPT09IDApIHJldHVybiAyNjtcblxuICAgIHZhciB0ID0gdztcbiAgICB2YXIgciA9IDA7XG4gICAgaWYgKCh0ICYgMHgxZmZmKSA9PT0gMCkge1xuICAgICAgciArPSAxMztcbiAgICAgIHQgPj4+PSAxMztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHg3ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNztcbiAgICAgIHQgPj4+PSA3O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweGYpID09PSAwKSB7XG4gICAgICByICs9IDQ7XG4gICAgICB0ID4+Pj0gNDtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgzKSA9PT0gMCkge1xuICAgICAgciArPSAyO1xuICAgICAgdCA+Pj49IDI7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MSkgPT09IDApIHtcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG51bWJlciBvZiB1c2VkIGJpdHMgaW4gYSBCTlxuICBCTi5wcm90b3R5cGUuYml0TGVuZ3RoID0gZnVuY3Rpb24gYml0TGVuZ3RoICgpIHtcbiAgICB2YXIgdyA9IHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXTtcbiAgICB2YXIgaGkgPSB0aGlzLl9jb3VudEJpdHModyk7XG4gICAgcmV0dXJuICh0aGlzLmxlbmd0aCAtIDEpICogMjYgKyBoaTtcbiAgfTtcblxuICBmdW5jdGlvbiB0b0JpdEFycmF5IChudW0pIHtcbiAgICB2YXIgdyA9IG5ldyBBcnJheShudW0uYml0TGVuZ3RoKCkpO1xuXG4gICAgZm9yICh2YXIgYml0ID0gMDsgYml0IDwgdy5sZW5ndGg7IGJpdCsrKSB7XG4gICAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgICB3W2JpdF0gPSAobnVtLndvcmRzW29mZl0gJiAoMSA8PCB3Yml0KSkgPj4+IHdiaXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHc7XG4gIH1cblxuICAvLyBOdW1iZXIgb2YgdHJhaWxpbmcgemVybyBiaXRzXG4gIEJOLnByb3RvdHlwZS56ZXJvQml0cyA9IGZ1bmN0aW9uIHplcm9CaXRzICgpIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIDA7XG5cbiAgICB2YXIgciA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYiA9IHRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbaV0pO1xuICAgICAgciArPSBiO1xuICAgICAgaWYgKGIgIT09IDI2KSBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmJ5dGVMZW5ndGggPSBmdW5jdGlvbiBieXRlTGVuZ3RoICgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkgLyA4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9Ud29zID0gZnVuY3Rpb24gdG9Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5hYnMoKS5pbm90bih3aWR0aCkuaWFkZG4oMSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21Ud29zID0gZnVuY3Rpb24gZnJvbVR3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMudGVzdG4od2lkdGggLSAxKSkge1xuICAgICAgcmV0dXJuIHRoaXMubm90bih3aWR0aCkuaWFkZG4oMSkuaW5lZygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uIGlzTmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZSAhPT0gMDtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5lZygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbmVnID0gZnVuY3Rpb24gaW5lZyAoKSB7XG4gICAgaWYgKCF0aGlzLmlzWmVybygpKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1b3IgPSBmdW5jdGlvbiBpdW9yIChudW0pIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gfCBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW9yID0gZnVuY3Rpb24gaW9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdW9yKG51bSk7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gb3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW9yID0gZnVuY3Rpb24gdW9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVvcih0aGlzKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1YW5kID0gZnVuY3Rpb24gaXVhbmQgKG51bSkge1xuICAgIC8vIGIgPSBtaW4tbGVuZ3RoKG51bSwgdGhpcylcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldICYgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYi5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYW5kID0gZnVuY3Rpb24gaWFuZCAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVhbmQobnVtKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIGFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhbmQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVhbmQgPSBmdW5jdGlvbiB1YW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1YW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1YW5kKHRoaXMpO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXV4b3IgPSBmdW5jdGlvbiBpdXhvciAobnVtKSB7XG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhO1xuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV0gXiBiLndvcmRzW2ldO1xuICAgIH1cblxuICAgIGlmICh0aGlzICE9PSBhKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLml4b3IgPSBmdW5jdGlvbiBpeG9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXhvcihudW0pO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24geG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXhvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXhvciA9IGZ1bmN0aW9uIHV4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXV4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXV4b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gTm90IGBgdGhpc2BgIHdpdGggYGB3aWR0aGBgIGJpdHdpZHRoXG4gIEJOLnByb3RvdHlwZS5pbm90biA9IGZ1bmN0aW9uIGlub3RuICh3aWR0aCkge1xuICAgIGFzc2VydCh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInICYmIHdpZHRoID49IDApO1xuXG4gICAgdmFyIGJ5dGVzTmVlZGVkID0gTWF0aC5jZWlsKHdpZHRoIC8gMjYpIHwgMDtcbiAgICB2YXIgYml0c0xlZnQgPSB3aWR0aCAlIDI2O1xuXG4gICAgLy8gRXh0ZW5kIHRoZSBidWZmZXIgd2l0aCBsZWFkaW5nIHplcm9lc1xuICAgIHRoaXMuX2V4cGFuZChieXRlc05lZWRlZCk7XG5cbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICBieXRlc05lZWRlZC0tO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBjb21wbGV0ZSB3b3Jkc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXNOZWVkZWQ7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgcmVzaWR1ZVxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmICgweDNmZmZmZmYgPj4gKDI2IC0gYml0c0xlZnQpKTtcbiAgICB9XG5cbiAgICAvLyBBbmQgcmVtb3ZlIGxlYWRpbmcgemVyb2VzXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubm90biA9IGZ1bmN0aW9uIG5vdG4gKHdpZHRoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bih3aWR0aCk7XG4gIH07XG5cbiAgLy8gU2V0IGBiaXRgIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc2V0biA9IGZ1bmN0aW9uIHNldG4gKGJpdCwgdmFsKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcblxuICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgdGhpcy5fZXhwYW5kKG9mZiArIDEpO1xuXG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdIHwgKDEgPDwgd2JpdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSAmIH4oMSA8PCB3Yml0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChudW0pIHtcbiAgICB2YXIgcjtcblxuICAgIC8vIG5lZ2F0aXZlICsgcG9zaXRpdmVcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG5cbiAgICAvLyBwb3NpdGl2ZSArIG5lZ2F0aXZlXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGhdID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIC8vIENvcHkgdGhlIHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgfSBlbHNlIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChudW0pIHtcbiAgICB2YXIgcmVzO1xuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDAgJiYgdGhpcy5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IHRoaXMuc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIGlmIChudW0ubmVnYXRpdmUgPT09IDAgJiYgdGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSBudW0uc3ViKHRoaXMpO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZChudW0pO1xuXG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhZGQodGhpcyk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChudW0pIHtcbiAgICAvLyB0aGlzIC0gKC1udW0pID0gdGhpcyArIG51bVxuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICB2YXIgciA9IHRoaXMuaWFkZChudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gLXRoaXMgLSBudW0gPSAtKHRoaXMgKyBudW0pXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZChudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmVcbiAgICB2YXIgY21wID0gdGhpcy5jbXAobnVtKTtcblxuICAgIC8vIE9wdGltaXphdGlvbiAtIHplcm9pZnlcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gYSA+IGJcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoY21wID4gMCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApIC0gKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIENvcHkgcmVzdCBvZiB0aGUgd29yZHNcbiAgICBpZiAoY2FycnkgPT09IDAgJiYgaSA8IGEubGVuZ3RoICYmIGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpKTtcblxuICAgIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1YihudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHNtYWxsTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICB2YXIgbGVuID0gKHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aCkgfCAwO1xuICAgIG91dC5sZW5ndGggPSBsZW47XG4gICAgbGVuID0gKGxlbiAtIDEpIHwgMDtcblxuICAgIC8vIFBlZWwgb25lIGl0ZXJhdGlvbiAoY29tcGlsZXIgY2FuJ3QgZG8gaXQsIGJlY2F1c2Ugb2YgY29kZSBjb21wbGV4aXR5KVxuICAgIHZhciBhID0gc2VsZi53b3Jkc1swXSB8IDA7XG4gICAgdmFyIGIgPSBudW0ud29yZHNbMF0gfCAwO1xuICAgIHZhciByID0gYSAqIGI7XG5cbiAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgIHZhciBjYXJyeSA9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgb3V0LndvcmRzWzBdID0gbG87XG5cbiAgICBmb3IgKHZhciBrID0gMTsgayA8IGxlbjsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGNhcnJ5ID4+PiAyNjtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gKGsgLSBqKSB8IDA7XG4gICAgICAgIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHIgPSBhICogYiArIHJ3b3JkO1xuICAgICAgICBuY2FycnkgKz0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgICAgcndvcmQgPSByICYgMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQgfCAwO1xuICAgICAgY2FycnkgPSBuY2FycnkgfCAwO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5IHwgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIC8vIFRPRE8oaW5kdXRueSk6IGl0IG1heSBiZSByZWFzb25hYmxlIHRvIG9taXQgaXQgZm9yIHVzZXJzIHdobyBkb24ndCBuZWVkXG4gIC8vIHRvIHdvcmsgd2l0aCAyNTYtYml0IG51bWJlcnMsIG90aGVyd2lzZSBpdCBnaXZlcyAyMCUgaW1wcm92ZW1lbnQgZm9yIDI1Ni1iaXRcbiAgLy8gbXVsdGlwbGljYXRpb24gKGxpa2UgZWxsaXB0aWMgc2VjcDI1NmsxKS5cbiAgdmFyIGNvbWIxME11bFRvID0gZnVuY3Rpb24gY29tYjEwTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGEgPSBzZWxmLndvcmRzO1xuICAgIHZhciBiID0gbnVtLndvcmRzO1xuICAgIHZhciBvID0gb3V0LndvcmRzO1xuICAgIHZhciBjID0gMDtcbiAgICB2YXIgbG87XG4gICAgdmFyIG1pZDtcbiAgICB2YXIgaGk7XG4gICAgdmFyIGEwID0gYVswXSB8IDA7XG4gICAgdmFyIGFsMCA9IGEwICYgMHgxZmZmO1xuICAgIHZhciBhaDAgPSBhMCA+Pj4gMTM7XG4gICAgdmFyIGExID0gYVsxXSB8IDA7XG4gICAgdmFyIGFsMSA9IGExICYgMHgxZmZmO1xuICAgIHZhciBhaDEgPSBhMSA+Pj4gMTM7XG4gICAgdmFyIGEyID0gYVsyXSB8IDA7XG4gICAgdmFyIGFsMiA9IGEyICYgMHgxZmZmO1xuICAgIHZhciBhaDIgPSBhMiA+Pj4gMTM7XG4gICAgdmFyIGEzID0gYVszXSB8IDA7XG4gICAgdmFyIGFsMyA9IGEzICYgMHgxZmZmO1xuICAgIHZhciBhaDMgPSBhMyA+Pj4gMTM7XG4gICAgdmFyIGE0ID0gYVs0XSB8IDA7XG4gICAgdmFyIGFsNCA9IGE0ICYgMHgxZmZmO1xuICAgIHZhciBhaDQgPSBhNCA+Pj4gMTM7XG4gICAgdmFyIGE1ID0gYVs1XSB8IDA7XG4gICAgdmFyIGFsNSA9IGE1ICYgMHgxZmZmO1xuICAgIHZhciBhaDUgPSBhNSA+Pj4gMTM7XG4gICAgdmFyIGE2ID0gYVs2XSB8IDA7XG4gICAgdmFyIGFsNiA9IGE2ICYgMHgxZmZmO1xuICAgIHZhciBhaDYgPSBhNiA+Pj4gMTM7XG4gICAgdmFyIGE3ID0gYVs3XSB8IDA7XG4gICAgdmFyIGFsNyA9IGE3ICYgMHgxZmZmO1xuICAgIHZhciBhaDcgPSBhNyA+Pj4gMTM7XG4gICAgdmFyIGE4ID0gYVs4XSB8IDA7XG4gICAgdmFyIGFsOCA9IGE4ICYgMHgxZmZmO1xuICAgIHZhciBhaDggPSBhOCA+Pj4gMTM7XG4gICAgdmFyIGE5ID0gYVs5XSB8IDA7XG4gICAgdmFyIGFsOSA9IGE5ICYgMHgxZmZmO1xuICAgIHZhciBhaDkgPSBhOSA+Pj4gMTM7XG4gICAgdmFyIGIwID0gYlswXSB8IDA7XG4gICAgdmFyIGJsMCA9IGIwICYgMHgxZmZmO1xuICAgIHZhciBiaDAgPSBiMCA+Pj4gMTM7XG4gICAgdmFyIGIxID0gYlsxXSB8IDA7XG4gICAgdmFyIGJsMSA9IGIxICYgMHgxZmZmO1xuICAgIHZhciBiaDEgPSBiMSA+Pj4gMTM7XG4gICAgdmFyIGIyID0gYlsyXSB8IDA7XG4gICAgdmFyIGJsMiA9IGIyICYgMHgxZmZmO1xuICAgIHZhciBiaDIgPSBiMiA+Pj4gMTM7XG4gICAgdmFyIGIzID0gYlszXSB8IDA7XG4gICAgdmFyIGJsMyA9IGIzICYgMHgxZmZmO1xuICAgIHZhciBiaDMgPSBiMyA+Pj4gMTM7XG4gICAgdmFyIGI0ID0gYls0XSB8IDA7XG4gICAgdmFyIGJsNCA9IGI0ICYgMHgxZmZmO1xuICAgIHZhciBiaDQgPSBiNCA+Pj4gMTM7XG4gICAgdmFyIGI1ID0gYls1XSB8IDA7XG4gICAgdmFyIGJsNSA9IGI1ICYgMHgxZmZmO1xuICAgIHZhciBiaDUgPSBiNSA+Pj4gMTM7XG4gICAgdmFyIGI2ID0gYls2XSB8IDA7XG4gICAgdmFyIGJsNiA9IGI2ICYgMHgxZmZmO1xuICAgIHZhciBiaDYgPSBiNiA+Pj4gMTM7XG4gICAgdmFyIGI3ID0gYls3XSB8IDA7XG4gICAgdmFyIGJsNyA9IGI3ICYgMHgxZmZmO1xuICAgIHZhciBiaDcgPSBiNyA+Pj4gMTM7XG4gICAgdmFyIGI4ID0gYls4XSB8IDA7XG4gICAgdmFyIGJsOCA9IGI4ICYgMHgxZmZmO1xuICAgIHZhciBiaDggPSBiOCA+Pj4gMTM7XG4gICAgdmFyIGI5ID0gYls5XSB8IDA7XG4gICAgdmFyIGJsOSA9IGI5ICYgMHgxZmZmO1xuICAgIHZhciBiaDkgPSBiOSA+Pj4gMTM7XG5cbiAgICBvdXQubmVnYXRpdmUgPSBzZWxmLm5lZ2F0aXZlIF4gbnVtLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSAxOTtcbiAgICAvKiBrID0gMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwwLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgwLCBiaDApO1xuICAgIHZhciB3MCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzAgPj4+IDI2KSkgfCAwO1xuICAgIHcwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwxLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgxLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMSkpIHwgMDtcbiAgICB2YXIgdzEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxID4+PiAyNikpIHwgMDtcbiAgICB3MSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDIsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgyKSkgfCAwO1xuICAgIHZhciB3MiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzIgPj4+IDI2KSkgfCAwO1xuICAgIHcyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwzLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgzLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgzKSkgfCAwO1xuICAgIHZhciB3MyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzMgPj4+IDI2KSkgfCAwO1xuICAgIHczICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw0LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg0LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNCkpIHwgMDtcbiAgICB2YXIgdzQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc0ID4+PiAyNikpIHwgMDtcbiAgICB3NCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDUsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg1KSkgfCAwO1xuICAgIHZhciB3NSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzUgPj4+IDI2KSkgfCAwO1xuICAgIHc1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw2LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg2LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg2KSkgfCAwO1xuICAgIHZhciB3NiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzYgPj4+IDI2KSkgfCAwO1xuICAgIHc2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw3LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg3LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNykpIHwgMDtcbiAgICB2YXIgdzcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc3ID4+PiAyNikpIHwgMDtcbiAgICB3NyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDgsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg4KSkgfCAwO1xuICAgIHZhciB3OCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzggPj4+IDI2KSkgfCAwO1xuICAgIHc4ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg5KSkgfCAwO1xuICAgIHZhciB3OSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzkgPj4+IDI2KSkgfCAwO1xuICAgIHc5ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgxKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwxKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgxKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMCA+Pj4gMjYpKSB8IDA7XG4gICAgdzEwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgyKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwyKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgyKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzExID4+PiAyNikpIHwgMDtcbiAgICB3MTEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwzKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDMpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDMpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDMpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMiA+Pj4gMjYpKSB8IDA7XG4gICAgdzEyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg0KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw0KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg0KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMyA+Pj4gMjYpKSB8IDA7XG4gICAgdzEzICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg1KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw1KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg1KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE0ID4+PiAyNikpIHwgMDtcbiAgICB3MTQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw2KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDYpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDYpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDYpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNSA+Pj4gMjYpKSB8IDA7XG4gICAgdzE1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg3KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw3KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg3KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNiA+Pj4gMjYpKSB8IDA7XG4gICAgdzE2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg4KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw4KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg4KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE3ID4+PiAyNikpIHwgMDtcbiAgICB3MTcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw5KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDkpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDkpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDkpO1xuICAgIHZhciB3MTggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxOCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE4ICY9IDB4M2ZmZmZmZjtcbiAgICBvWzBdID0gdzA7XG4gICAgb1sxXSA9IHcxO1xuICAgIG9bMl0gPSB3MjtcbiAgICBvWzNdID0gdzM7XG4gICAgb1s0XSA9IHc0O1xuICAgIG9bNV0gPSB3NTtcbiAgICBvWzZdID0gdzY7XG4gICAgb1s3XSA9IHc3O1xuICAgIG9bOF0gPSB3ODtcbiAgICBvWzldID0gdzk7XG4gICAgb1sxMF0gPSB3MTA7XG4gICAgb1sxMV0gPSB3MTE7XG4gICAgb1sxMl0gPSB3MTI7XG4gICAgb1sxM10gPSB3MTM7XG4gICAgb1sxNF0gPSB3MTQ7XG4gICAgb1sxNV0gPSB3MTU7XG4gICAgb1sxNl0gPSB3MTY7XG4gICAgb1sxN10gPSB3MTc7XG4gICAgb1sxOF0gPSB3MTg7XG4gICAgaWYgKGMgIT09IDApIHtcbiAgICAgIG9bMTldID0gYztcbiAgICAgIG91dC5sZW5ndGgrKztcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfTtcblxuICAvLyBQb2x5ZmlsbCBjb21iXG4gIGlmICghTWF0aC5pbXVsKSB7XG4gICAgY29tYjEwTXVsVG8gPSBzbWFsbE11bFRvO1xuICB9XG5cbiAgZnVuY3Rpb24gYmlnTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICB2YXIgaG5jYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBvdXQubGVuZ3RoIC0gMTsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgICBobmNhcnJ5ID0gMDtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gayAtIGo7XG4gICAgICAgIHZhciBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIHZhciBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgdmFyIHIgPSBhICogYjtcblxuICAgICAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKChyIC8gMHg0MDAwMDAwKSB8IDApKSB8IDA7XG4gICAgICAgIGxvID0gKGxvICsgcndvcmQpIHwgMDtcbiAgICAgICAgcndvcmQgPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArIChsbyA+Pj4gMjYpKSB8IDA7XG5cbiAgICAgICAgaG5jYXJyeSArPSBuY2FycnkgPj4+IDI2O1xuICAgICAgICBuY2FycnkgJj0gMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQ7XG4gICAgICBjYXJyeSA9IG5jYXJyeTtcbiAgICAgIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2Fycnk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICBmdW5jdGlvbiBqdW1ib011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBmZnRtID0gbmV3IEZGVE0oKTtcbiAgICByZXR1cm4gZmZ0bS5tdWxwKHNlbGYsIG51bSwgb3V0KTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5tdWxUbyA9IGZ1bmN0aW9uIG11bFRvIChudW0sIG91dCkge1xuICAgIHZhciByZXM7XG4gICAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aDtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEwICYmIG51bS5sZW5ndGggPT09IDEwKSB7XG4gICAgICByZXMgPSBjb21iMTBNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCA2Mykge1xuICAgICAgcmVzID0gc21hbGxNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCAxMDI0KSB7XG4gICAgICByZXMgPSBiaWdNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29vbGV5LVR1a2V5IGFsZ29yaXRobSBmb3IgRkZUXG4gIC8vIHNsaWdodGx5IHJldmlzaXRlZCB0byByZWx5IG9uIGxvb3BpbmcgaW5zdGVhZCBvZiByZWN1cnNpb25cblxuICBmdW5jdGlvbiBGRlRNICh4LCB5KSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICB9XG5cbiAgRkZUTS5wcm90b3R5cGUubWFrZVJCVCA9IGZ1bmN0aW9uIG1ha2VSQlQgKE4pIHtcbiAgICB2YXIgdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbCA9IEJOLnByb3RvdHlwZS5fY291bnRCaXRzKE4pIC0gMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdFtpXSA9IHRoaXMucmV2QmluKGksIGwsIE4pO1xuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYmluYXJ5LXJldmVyc2VkIHJlcHJlc2VudGF0aW9uIG9mIGB4YFxuICBGRlRNLnByb3RvdHlwZS5yZXZCaW4gPSBmdW5jdGlvbiByZXZCaW4gKHgsIGwsIE4pIHtcbiAgICBpZiAoeCA9PT0gMCB8fCB4ID09PSBOIC0gMSkgcmV0dXJuIHg7XG5cbiAgICB2YXIgcmIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICByYiB8PSAoeCAmIDEpIDw8IChsIC0gaSAtIDEpO1xuICAgICAgeCA+Pj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmI7XG4gIH07XG5cbiAgLy8gUGVyZm9ybXMgXCJ0d2VlZGxpbmdcIiBwaGFzZSwgdGhlcmVmb3JlICdlbXVsYXRpbmcnXG4gIC8vIGJlaGF2aW91ciBvZiB0aGUgcmVjdXJzaXZlIGFsZ29yaXRobVxuICBGRlRNLnByb3RvdHlwZS5wZXJtdXRlID0gZnVuY3Rpb24gcGVybXV0ZSAocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBydHdzW2ldID0gcndzW3JidFtpXV07XG4gICAgICBpdHdzW2ldID0gaXdzW3JidFtpXV07XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uIHRyYW5zZm9ybSAocndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4sIHJidCkge1xuICAgIHRoaXMucGVybXV0ZShyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKTtcblxuICAgIGZvciAodmFyIHMgPSAxOyBzIDwgTjsgcyA8PD0gMSkge1xuICAgICAgdmFyIGwgPSBzIDw8IDE7XG5cbiAgICAgIHZhciBydHdkZiA9IE1hdGguY29zKDIgKiBNYXRoLlBJIC8gbCk7XG4gICAgICB2YXIgaXR3ZGYgPSBNYXRoLnNpbigyICogTWF0aC5QSSAvIGwpO1xuXG4gICAgICBmb3IgKHZhciBwID0gMDsgcCA8IE47IHAgKz0gbCkge1xuICAgICAgICB2YXIgcnR3ZGZfID0gcnR3ZGY7XG4gICAgICAgIHZhciBpdHdkZl8gPSBpdHdkZjtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHM7IGorKykge1xuICAgICAgICAgIHZhciByZSA9IHJ0d3NbcCArIGpdO1xuICAgICAgICAgIHZhciBpZSA9IGl0d3NbcCArIGpdO1xuXG4gICAgICAgICAgdmFyIHJvID0gcnR3c1twICsgaiArIHNdO1xuICAgICAgICAgIHZhciBpbyA9IGl0d3NbcCArIGogKyBzXTtcblxuICAgICAgICAgIHZhciByeCA9IHJ0d2RmXyAqIHJvIC0gaXR3ZGZfICogaW87XG5cbiAgICAgICAgICBpbyA9IHJ0d2RmXyAqIGlvICsgaXR3ZGZfICogcm87XG4gICAgICAgICAgcm8gPSByeDtcblxuICAgICAgICAgIHJ0d3NbcCArIGpdID0gcmUgKyBybztcbiAgICAgICAgICBpdHdzW3AgKyBqXSA9IGllICsgaW87XG5cbiAgICAgICAgICBydHdzW3AgKyBqICsgc10gPSByZSAtIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGogKyBzXSA9IGllIC0gaW87XG5cbiAgICAgICAgICAvKiBqc2hpbnQgbWF4ZGVwdGggOiBmYWxzZSAqL1xuICAgICAgICAgIGlmIChqICE9PSBsKSB7XG4gICAgICAgICAgICByeCA9IHJ0d2RmICogcnR3ZGZfIC0gaXR3ZGYgKiBpdHdkZl87XG5cbiAgICAgICAgICAgIGl0d2RmXyA9IHJ0d2RmICogaXR3ZGZfICsgaXR3ZGYgKiBydHdkZl87XG4gICAgICAgICAgICBydHdkZl8gPSByeDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2IgPSBmdW5jdGlvbiBndWVzc0xlbjEzYiAobiwgbSkge1xuICAgIHZhciBOID0gTWF0aC5tYXgobSwgbikgfCAxO1xuICAgIHZhciBvZGQgPSBOICYgMTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yIChOID0gTiAvIDIgfCAwOyBOOyBOID0gTiA+Pj4gMSkge1xuICAgICAgaSsrO1xuICAgIH1cblxuICAgIHJldHVybiAxIDw8IGkgKyAxICsgb2RkO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbmp1Z2F0ZSA9IGZ1bmN0aW9uIGNvbmp1Z2F0ZSAocndzLCBpd3MsIE4pIHtcbiAgICBpZiAoTiA8PSAxKSByZXR1cm47XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB0ID0gcndzW2ldO1xuXG4gICAgICByd3NbaV0gPSByd3NbTiAtIGkgLSAxXTtcbiAgICAgIHJ3c1tOIC0gaSAtIDFdID0gdDtcblxuICAgICAgdCA9IGl3c1tpXTtcblxuICAgICAgaXdzW2ldID0gLWl3c1tOIC0gaSAtIDFdO1xuICAgICAgaXdzW04gLSBpIC0gMV0gPSAtdDtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubm9ybWFsaXplMTNiID0gZnVuY3Rpb24gbm9ybWFsaXplMTNiICh3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdyA9IE1hdGgucm91bmQod3NbMiAqIGkgKyAxXSAvIE4pICogMHgyMDAwICtcbiAgICAgICAgTWF0aC5yb3VuZCh3c1syICogaV0gLyBOKSArXG4gICAgICAgIGNhcnJ5O1xuXG4gICAgICB3c1tpXSA9IHcgJiAweDNmZmZmZmY7XG5cbiAgICAgIGlmICh3IDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhcnJ5ID0gdyAvIDB4NDAwMDAwMCB8IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHdzO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbnZlcnQxM2IgPSBmdW5jdGlvbiBjb252ZXJ0MTNiICh3cywgbGVuLCByd3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNhcnJ5ID0gY2FycnkgKyAod3NbaV0gfCAwKTtcblxuICAgICAgcndzWzIgKiBpXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICAgIHJ3c1syICogaSArIDFdID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgIH1cblxuICAgIC8vIFBhZCB3aXRoIHplcm9lc1xuICAgIGZvciAoaSA9IDIgKiBsZW47IGkgPCBOOyArK2kpIHtcbiAgICAgIHJ3c1tpXSA9IDA7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAwKTtcbiAgICBhc3NlcnQoKGNhcnJ5ICYgfjB4MWZmZikgPT09IDApO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnN0dWIgPSBmdW5jdGlvbiBzdHViIChOKSB7XG4gICAgdmFyIHBoID0gbmV3IEFycmF5KE4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBwaFtpXSA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBoO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm11bHAgPSBmdW5jdGlvbiBtdWxwICh4LCB5LCBvdXQpIHtcbiAgICB2YXIgTiA9IDIgKiB0aGlzLmd1ZXNzTGVuMTNiKHgubGVuZ3RoLCB5Lmxlbmd0aCk7XG5cbiAgICB2YXIgcmJ0ID0gdGhpcy5tYWtlUkJUKE4pO1xuXG4gICAgdmFyIF8gPSB0aGlzLnN0dWIoTik7XG5cbiAgICB2YXIgcndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciByd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBpd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIG5yd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5yd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBuaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBybXdzID0gb3V0LndvcmRzO1xuICAgIHJtd3MubGVuZ3RoID0gTjtcblxuICAgIHRoaXMuY29udmVydDEzYih4LndvcmRzLCB4Lmxlbmd0aCwgcndzLCBOKTtcbiAgICB0aGlzLmNvbnZlcnQxM2IoeS53b3JkcywgeS5sZW5ndGgsIG5yd3MsIE4pO1xuXG4gICAgdGhpcy50cmFuc2Zvcm0ocndzLCBfLCByd3N0LCBpd3N0LCBOLCByYnQpO1xuICAgIHRoaXMudHJhbnNmb3JtKG5yd3MsIF8sIG5yd3N0LCBuaXdzdCwgTiwgcmJ0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB2YXIgcnggPSByd3N0W2ldICogbnJ3c3RbaV0gLSBpd3N0W2ldICogbml3c3RbaV07XG4gICAgICBpd3N0W2ldID0gcndzdFtpXSAqIG5pd3N0W2ldICsgaXdzdFtpXSAqIG5yd3N0W2ldO1xuICAgICAgcndzdFtpXSA9IHJ4O1xuICAgIH1cblxuICAgIHRoaXMuY29uanVnYXRlKHJ3c3QsIGl3c3QsIE4pO1xuICAgIHRoaXMudHJhbnNmb3JtKHJ3c3QsIGl3c3QsIHJtd3MsIF8sIE4sIHJidCk7XG4gICAgdGhpcy5jb25qdWdhdGUocm13cywgXywgTik7XG4gICAgdGhpcy5ub3JtYWxpemUxM2Iocm13cywgTik7XG5cbiAgICBvdXQubmVnYXRpdmUgPSB4Lm5lZ2F0aXZlIF4geS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0geC5sZW5ndGggKyB5Lmxlbmd0aDtcbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgYHRoaXNgIGJ5IGBudW1gXG4gIEJOLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRoaXMubXVsVG8obnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGVtcGxveWluZyBGRlRcbiAgQk4ucHJvdG90eXBlLm11bGYgPSBmdW5jdGlvbiBtdWxmIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBNdWx0aXBsaWNhdGlvblxuICBCTi5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkubXVsVG8obnVtLCB0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW11bG4gPSBmdW5jdGlvbiBpbXVsbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcblxuICAgIC8vIENhcnJ5XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSAqIG51bTtcbiAgICAgIHZhciBsbyA9ICh3ICYgMHgzZmZmZmZmKSArIChjYXJyeSAmIDB4M2ZmZmZmZik7XG4gICAgICBjYXJyeSA+Pj0gMjY7XG4gICAgICBjYXJyeSArPSAodyAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgLy8gTk9URTogbG8gaXMgMjdiaXQgbWF4aW11bVxuICAgICAgY2FycnkgKz0gbG8gPj4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubXVsbiA9IGZ1bmN0aW9uIG11bG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW11bG4obnVtKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKHRoaXMpO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKTtcbiAgfTtcblxuICAvLyBNYXRoLnBvdyhgdGhpc2AsIGBudW1gKVxuICBCTi5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChudW0pIHtcbiAgICB2YXIgdyA9IHRvQml0QXJyYXkobnVtKTtcbiAgICBpZiAody5sZW5ndGggPT09IDApIHJldHVybiBuZXcgQk4oMSk7XG5cbiAgICAvLyBTa2lwIGxlYWRpbmcgemVyb2VzXG4gICAgdmFyIHJlcyA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3Lmxlbmd0aDsgaSsrLCByZXMgPSByZXMuc3FyKCkpIHtcbiAgICAgIGlmICh3W2ldICE9PSAwKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoKytpIDwgdy5sZW5ndGgpIHtcbiAgICAgIGZvciAodmFyIHEgPSByZXMuc3FyKCk7IGkgPCB3Lmxlbmd0aDsgaSsrLCBxID0gcS5zcXIoKSkge1xuICAgICAgICBpZiAod1tpXSA9PT0gMCkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gcmVzLm11bChxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnQgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1c2hsbiA9IGZ1bmN0aW9uIGl1c2hsbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcbiAgICB2YXIgY2FycnlNYXNrID0gKDB4M2ZmZmZmZiA+Pj4gKDI2IC0gcikpIDw8ICgyNiAtIHIpO1xuICAgIHZhciBpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBuZXdDYXJyeSA9IHRoaXMud29yZHNbaV0gJiBjYXJyeU1hc2s7XG4gICAgICAgIHZhciBjID0gKCh0aGlzLndvcmRzW2ldIHwgMCkgLSBuZXdDYXJyeSkgPDwgcjtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGMgfCBjYXJyeTtcbiAgICAgICAgY2FycnkgPSBuZXdDYXJyeSA+Pj4gKDI2IC0gcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYXJyeSkge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHMgIT09IDApIHtcbiAgICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgc10gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCArPSBzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaGxuID0gZnVuY3Rpb24gaXNobG4gKGJpdHMpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0IGluLXBsYWNlXG4gIC8vIE5PVEU6IGBoaW50YCBpcyBhIGxvd2VzdCBiaXQgYmVmb3JlIHRyYWlsaW5nIHplcm9lc1xuICAvLyBOT1RFOiBpZiBgZXh0ZW5kZWRgIGlzIHByZXNlbnQgLSBpdCB3aWxsIGJlIGZpbGxlZCB3aXRoIGRlc3Ryb3llZCBiaXRzXG4gIEJOLnByb3RvdHlwZS5pdXNocm4gPSBmdW5jdGlvbiBpdXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciBoO1xuICAgIGlmIChoaW50KSB7XG4gICAgICBoID0gKGhpbnQgLSAoaGludCAlIDI2KSkgLyAyNjtcbiAgICB9IGVsc2Uge1xuICAgICAgaCA9IDA7XG4gICAgfVxuXG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSBNYXRoLm1pbigoYml0cyAtIHIpIC8gMjYsIHRoaXMubGVuZ3RoKTtcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICB2YXIgbWFza2VkV29yZHMgPSBleHRlbmRlZDtcblxuICAgIGggLT0gcztcbiAgICBoID0gTWF0aC5tYXgoMCwgaCk7XG5cbiAgICAvLyBFeHRlbmRlZCBtb2RlLCBjb3B5IG1hc2tlZCBwYXJ0XG4gICAgaWYgKG1hc2tlZFdvcmRzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICBtYXNrZWRXb3Jkcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG4gICAgICBtYXNrZWRXb3Jkcy5sZW5ndGggPSBzO1xuICAgIH1cblxuICAgIGlmIChzID09PSAwKSB7XG4gICAgICAvLyBOby1vcCwgd2Ugc2hvdWxkIG5vdCBtb3ZlIGFueXRoaW5nIGF0IGFsbFxuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiBzKSB7XG4gICAgICB0aGlzLmxlbmd0aCAtPSBzO1xuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaSArIHNdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwICYmIChjYXJyeSAhPT0gMCB8fCBpID49IGgpOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKGNhcnJ5IDw8ICgyNiAtIHIpKSB8ICh3b3JkID4+PiByKTtcbiAgICAgIGNhcnJ5ID0gd29yZCAmIG1hc2s7XG4gICAgfVxuXG4gICAgLy8gUHVzaCBjYXJyaWVkIGJpdHMgYXMgYSBtYXNrXG4gICAgaWYgKG1hc2tlZFdvcmRzICYmIGNhcnJ5ICE9PSAwKSB7XG4gICAgICBtYXNrZWRXb3Jkcy53b3Jkc1ttYXNrZWRXb3Jkcy5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaHJuID0gZnVuY3Rpb24gaXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hybihiaXRzLCBoaW50LCBleHRlbmRlZCk7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdFxuICBCTi5wcm90b3R5cGUuc2hsbiA9IGZ1bmN0aW9uIHNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hsbiA9IGZ1bmN0aW9uIHVzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHRcbiAgQk4ucHJvdG90eXBlLnNocm4gPSBmdW5jdGlvbiBzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNocm4gPSBmdW5jdGlvbiB1c2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFRlc3QgaWYgbiBiaXQgaXMgc2V0XG4gIEJOLnByb3RvdHlwZS50ZXN0biA9IGZ1bmN0aW9uIHRlc3RuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGJpdCBhbmQgcmV0dXJuXG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3NdO1xuXG4gICAgcmV0dXJuICEhKHcgJiBxKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXIgKGluLXBsYWNlKVxuICBCTi5wcm90b3R5cGUuaW1hc2tuID0gZnVuY3Rpb24gaW1hc2tuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMnKTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgcysrO1xuICAgIH1cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWluKHMsIHRoaXMubGVuZ3RoKTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSAmPSBtYXNrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyXG4gIEJOLnByb3RvdHlwZS5tYXNrbiA9IGZ1bmN0aW9uIG1hc2tuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oYml0cyk7XG4gIH07XG5cbiAgLy8gQWRkIHBsYWluIG51bWJlciBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlhZGRuID0gZnVuY3Rpb24gaWFkZG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlzdWJuKC1udW0pO1xuXG4gICAgLy8gUG9zc2libGUgc2lnbiBjaGFuZ2VcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmICh0aGlzLndvcmRzWzBdIHwgMCkgPCBudW0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSA9IG51bSAtICh0aGlzLndvcmRzWzBdIHwgMCk7XG4gICAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlzdWJuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCB3aXRob3V0IGNoZWNrc1xuICAgIHJldHVybiB0aGlzLl9pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faWFkZG4gPSBmdW5jdGlvbiBfaWFkZG4gKG51bSkge1xuICAgIHRoaXMud29yZHNbMF0gKz0gbnVtO1xuXG4gICAgLy8gQ2FycnlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPj0gMHg0MDAwMDAwOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gLT0gMHg0MDAwMDAwO1xuICAgICAgaWYgKGkgPT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSsrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpICsgMSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBwbGFpbiBudW1iZXIgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlzdWJuID0gZnVuY3Rpb24gaXN1Ym4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlhZGRuKC1udW0pO1xuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkbihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLndvcmRzWzBdIC09IG51bTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdIDwgMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IC10aGlzLndvcmRzWzBdO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENhcnJ5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPCAwOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSArPSAweDQwMDAwMDA7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdIC09IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWRkbiA9IGZ1bmN0aW9uIGFkZG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuc3VibiA9IGZ1bmN0aW9uIHN1Ym4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFicyA9IGZ1bmN0aW9uIGlhYnMgKCkge1xuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uIGFicyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pc2hsbnN1Ym11bCA9IGZ1bmN0aW9uIF9pc2hsbnN1Ym11bCAobnVtLCBtdWwsIHNoaWZ0KSB7XG4gICAgdmFyIGxlbiA9IG51bS5sZW5ndGggKyBzaGlmdDtcbiAgICB2YXIgaTtcblxuICAgIHRoaXMuX2V4cGFuZChsZW4pO1xuXG4gICAgdmFyIHc7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICB2YXIgcmlnaHQgPSAobnVtLndvcmRzW2ldIHwgMCkgKiBtdWw7XG4gICAgICB3IC09IHJpZ2h0ICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSAodyA+PiAyNikgLSAoKHJpZ2h0IC8gMHg0MDAwMDAwKSB8IDApO1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGkgPCB0aGlzLmxlbmd0aCAtIHNoaWZ0OyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ID09PSAwKSByZXR1cm4gdGhpcy5zdHJpcCgpO1xuXG4gICAgLy8gU3VidHJhY3Rpb24gb3ZlcmZsb3dcbiAgICBhc3NlcnQoY2FycnkgPT09IC0xKTtcbiAgICBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAtKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX3dvcmREaXYgPSBmdW5jdGlvbiBfd29yZERpdiAobnVtLCBtb2RlKSB7XG4gICAgdmFyIHNoaWZ0ID0gdGhpcy5sZW5ndGggLSBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGEgPSB0aGlzLmNsb25lKCk7XG4gICAgdmFyIGIgPSBudW07XG5cbiAgICAvLyBOb3JtYWxpemVcbiAgICB2YXIgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB2YXIgYmhpQml0cyA9IHRoaXMuX2NvdW50Qml0cyhiaGkpO1xuICAgIHNoaWZ0ID0gMjYgLSBiaGlCaXRzO1xuICAgIGlmIChzaGlmdCAhPT0gMCkge1xuICAgICAgYiA9IGIudXNobG4oc2hpZnQpO1xuICAgICAgYS5pdXNobG4oc2hpZnQpO1xuICAgICAgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIHF1b3RpZW50XG4gICAgdmFyIG0gPSBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuICAgIHZhciBxO1xuXG4gICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICBxID0gbmV3IEJOKG51bGwpO1xuICAgICAgcS5sZW5ndGggPSBtICsgMTtcbiAgICAgIHEud29yZHMgPSBuZXcgQXJyYXkocS5sZW5ndGgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHEud29yZHNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkaWZmID0gYS5jbG9uZSgpLl9pc2hsbnN1Ym11bChiLCAxLCBtKTtcbiAgICBpZiAoZGlmZi5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgYSA9IGRpZmY7XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW21dID0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gbSAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICB2YXIgcWogPSAoYS53b3Jkc1tiLmxlbmd0aCArIGpdIHwgMCkgKiAweDQwMDAwMDAgK1xuICAgICAgICAoYS53b3Jkc1tiLmxlbmd0aCArIGogLSAxXSB8IDApO1xuXG4gICAgICAvLyBOT1RFOiAocWogLyBiaGkpIGlzICgweDNmZmZmZmYgKiAweDQwMDAwMDAgKyAweDNmZmZmZmYpIC8gMHgyMDAwMDAwIG1heFxuICAgICAgLy8gKDB4N2ZmZmZmZilcbiAgICAgIHFqID0gTWF0aC5taW4oKHFqIC8gYmhpKSB8IDAsIDB4M2ZmZmZmZik7XG5cbiAgICAgIGEuX2lzaGxuc3VibXVsKGIsIHFqLCBqKTtcbiAgICAgIHdoaWxlIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIHFqLS07XG4gICAgICAgIGEubmVnYXRpdmUgPSAwO1xuICAgICAgICBhLl9pc2hsbnN1Ym11bChiLCAxLCBqKTtcbiAgICAgICAgaWYgKCFhLmlzWmVybygpKSB7XG4gICAgICAgICAgYS5uZWdhdGl2ZSBePSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW2pdID0gcWo7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxKSB7XG4gICAgICBxLnN0cmlwKCk7XG4gICAgfVxuICAgIGEuc3RyaXAoKTtcblxuICAgIC8vIERlbm9ybWFsaXplXG4gICAgaWYgKG1vZGUgIT09ICdkaXYnICYmIHNoaWZ0ICE9PSAwKSB7XG4gICAgICBhLml1c2hybihzaGlmdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpdjogcSB8fCBudWxsLFxuICAgICAgbW9kOiBhXG4gICAgfTtcbiAgfTtcblxuICAvLyBOT1RFOiAxKSBgbW9kZWAgY2FuIGJlIHNldCB0byBgbW9kYCB0byByZXF1ZXN0IG1vZCBvbmx5LFxuICAvLyAgICAgICB0byBgZGl2YCB0byByZXF1ZXN0IGRpdiBvbmx5LCBvciBiZSBhYnNlbnQgdG9cbiAgLy8gICAgICAgcmVxdWVzdCBib3RoIGRpdiAmIG1vZFxuICAvLyAgICAgICAyKSBgcG9zaXRpdmVgIGlzIHRydWUgaWYgdW5zaWduZWQgbW9kIGlzIHJlcXVlc3RlZFxuICBCTi5wcm90b3R5cGUuZGl2bW9kID0gZnVuY3Rpb24gZGl2bW9kIChudW0sIG1vZGUsIHBvc2l0aXZlKSB7XG4gICAgYXNzZXJ0KCFudW0uaXNaZXJvKCkpO1xuXG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IG5ldyBCTigwKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZGl2LCBtb2QsIHJlcztcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pYWRkKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IHJlcy5tb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCh0aGlzLm5lZ2F0aXZlICYgbnVtLm5lZ2F0aXZlKSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaXN1YihudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogcmVzLmRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZSBhdCB0aGlzIHBvaW50XG5cbiAgICAvLyBTdHJpcCBib3RoIG51bWJlcnMgdG8gYXBwcm94aW1hdGUgc2hpZnQgdmFsdWVcbiAgICBpZiAobnVtLmxlbmd0aCA+IHRoaXMubGVuZ3RoIHx8IHRoaXMuY21wKG51bSkgPCAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiB0aGlzXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFZlcnkgc2hvcnQgcmVkdWN0aW9uXG4gICAgaWYgKG51bS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGlmIChtb2RlID09PSAnZGl2Jykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgICAgbW9kOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlID09PSAnbW9kJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogbnVsbCxcbiAgICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl93b3JkRGl2KG51bSwgbW9kZSk7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgLyBgbnVtYFxuICBCTi5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gZGl2IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnZGl2JywgZmFsc2UpLmRpdjtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAlIGBudW1gXG4gIEJOLnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiBtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCBmYWxzZSkubW9kO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51bW9kID0gZnVuY3Rpb24gdW1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIHRydWUpLm1vZDtcbiAgfTtcblxuICAvLyBGaW5kIFJvdW5kKGB0aGlzYCAvIGBudW1gKVxuICBCTi5wcm90b3R5cGUuZGl2Um91bmQgPSBmdW5jdGlvbiBkaXZSb3VuZCAobnVtKSB7XG4gICAgdmFyIGRtID0gdGhpcy5kaXZtb2QobnVtKTtcblxuICAgIC8vIEZhc3QgY2FzZSAtIGV4YWN0IGRpdmlzaW9uXG4gICAgaWYgKGRtLm1vZC5pc1plcm8oKSkgcmV0dXJuIGRtLmRpdjtcblxuICAgIHZhciBtb2QgPSBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5tb2QuaXN1YihudW0pIDogZG0ubW9kO1xuXG4gICAgdmFyIGhhbGYgPSBudW0udXNocm4oMSk7XG4gICAgdmFyIHIyID0gbnVtLmFuZGxuKDEpO1xuICAgIHZhciBjbXAgPSBtb2QuY21wKGhhbGYpO1xuXG4gICAgLy8gUm91bmQgZG93blxuICAgIGlmIChjbXAgPCAwIHx8IHIyID09PSAxICYmIGNtcCA9PT0gMCkgcmV0dXJuIGRtLmRpdjtcblxuICAgIC8vIFJvdW5kIHVwXG4gICAgcmV0dXJuIGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLmRpdi5pc3VibigxKSA6IGRtLmRpdi5pYWRkbigxKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubW9kbiA9IGZ1bmN0aW9uIG1vZG4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcbiAgICB2YXIgcCA9ICgxIDw8IDI2KSAlIG51bTtcblxuICAgIHZhciBhY2MgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBhY2MgPSAocCAqIGFjYyArICh0aGlzLndvcmRzW2ldIHwgMCkpICUgbnVtO1xuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgZGl2aXNpb24gYnkgbnVtYmVyXG4gIEJOLnByb3RvdHlwZS5pZGl2biA9IGZ1bmN0aW9uIGlkaXZuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeSAqIDB4NDAwMDAwMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAodyAvIG51bSkgfCAwO1xuICAgICAgY2FycnkgPSB3ICUgbnVtO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmRpdm4gPSBmdW5jdGlvbiBkaXZuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVnY2QgPSBmdW5jdGlvbiBlZ2NkIChwKSB7XG4gICAgYXNzZXJ0KHAubmVnYXRpdmUgPT09IDApO1xuICAgIGFzc2VydCghcC5pc1plcm8oKSk7XG5cbiAgICB2YXIgeCA9IHRoaXM7XG4gICAgdmFyIHkgPSBwLmNsb25lKCk7XG5cbiAgICBpZiAoeC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgeCA9IHgudW1vZChwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHguY2xvbmUoKTtcbiAgICB9XG5cbiAgICAvLyBBICogeCArIEIgKiB5ID0geFxuICAgIHZhciBBID0gbmV3IEJOKDEpO1xuICAgIHZhciBCID0gbmV3IEJOKDApO1xuXG4gICAgLy8gQyAqIHggKyBEICogeSA9IHlcbiAgICB2YXIgQyA9IG5ldyBCTigwKTtcbiAgICB2YXIgRCA9IG5ldyBCTigxKTtcblxuICAgIHZhciBnID0gMDtcblxuICAgIHdoaWxlICh4LmlzRXZlbigpICYmIHkuaXNFdmVuKCkpIHtcbiAgICAgIHguaXVzaHJuKDEpO1xuICAgICAgeS5pdXNocm4oMSk7XG4gICAgICArK2c7XG4gICAgfVxuXG4gICAgdmFyIHlwID0geS5jbG9uZSgpO1xuICAgIHZhciB4cCA9IHguY2xvbmUoKTtcblxuICAgIHdoaWxlICgheC5pc1plcm8oKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGltID0gMTsgKHgud29yZHNbMF0gJiBpbSkgPT09IDAgJiYgaSA8IDI2OyArK2ksIGltIDw8PSAxKTtcbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICB4Lml1c2hybihpKTtcbiAgICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgICBpZiAoQS5pc09kZCgpIHx8IEIuaXNPZGQoKSkge1xuICAgICAgICAgICAgQS5pYWRkKHlwKTtcbiAgICAgICAgICAgIEIuaXN1Yih4cCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQS5pdXNocm4oMSk7XG4gICAgICAgICAgQi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKHkud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICB5Lml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoQy5pc09kZCgpIHx8IEQuaXNPZGQoKSkge1xuICAgICAgICAgICAgQy5pYWRkKHlwKTtcbiAgICAgICAgICAgIEQuaXN1Yih4cCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQy5pdXNocm4oMSk7XG4gICAgICAgICAgRC5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHguY21wKHkpID49IDApIHtcbiAgICAgICAgeC5pc3ViKHkpO1xuICAgICAgICBBLmlzdWIoQyk7XG4gICAgICAgIEIuaXN1YihEKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHkuaXN1Yih4KTtcbiAgICAgICAgQy5pc3ViKEEpO1xuICAgICAgICBELmlzdWIoQik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGE6IEMsXG4gICAgICBiOiBELFxuICAgICAgZ2NkOiB5Lml1c2hsbihnKVxuICAgIH07XG4gIH07XG5cbiAgLy8gVGhpcyBpcyByZWR1Y2VkIGluY2FybmF0aW9uIG9mIHRoZSBiaW5hcnkgRUVBXG4gIC8vIGFib3ZlLCBkZXNpZ25hdGVkIHRvIGludmVydCBtZW1iZXJzIG9mIHRoZVxuICAvLyBfcHJpbWVfIGZpZWxkcyBGKHApIGF0IGEgbWF4aW1hbCBzcGVlZFxuICBCTi5wcm90b3R5cGUuX2ludm1wID0gZnVuY3Rpb24gX2ludm1wIChwKSB7XG4gICAgYXNzZXJ0KHAubmVnYXRpdmUgPT09IDApO1xuICAgIGFzc2VydCghcC5pc1plcm8oKSk7XG5cbiAgICB2YXIgYSA9IHRoaXM7XG4gICAgdmFyIGIgPSBwLmNsb25lKCk7XG5cbiAgICBpZiAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgYSA9IGEudW1vZChwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IGEuY2xvbmUoKTtcbiAgICB9XG5cbiAgICB2YXIgeDEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIHgyID0gbmV3IEJOKDApO1xuXG4gICAgdmFyIGRlbHRhID0gYi5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKGEuY21wbigxKSA+IDAgJiYgYi5jbXBuKDEpID4gMCkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGltID0gMTsgKGEud29yZHNbMF0gJiBpbSkgPT09IDAgJiYgaSA8IDI2OyArK2ksIGltIDw8PSAxKTtcbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICBhLml1c2hybihpKTtcbiAgICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDEuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDEuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDEuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7IChiLndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgYi5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgyLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgyLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgyLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYS5jbXAoYikgPj0gMCkge1xuICAgICAgICBhLmlzdWIoYik7XG4gICAgICAgIHgxLmlzdWIoeDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYi5pc3ViKGEpO1xuICAgICAgICB4Mi5pc3ViKHgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmIChhLmNtcG4oMSkgPT09IDApIHtcbiAgICAgIHJlcyA9IHgxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSB4MjtcbiAgICB9XG5cbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZChwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5nY2QgPSBmdW5jdGlvbiBnY2QgKG51bSkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gbnVtLmFicygpO1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiB0aGlzLmFicygpO1xuXG4gICAgdmFyIGEgPSB0aGlzLmNsb25lKCk7XG4gICAgdmFyIGIgPSBudW0uY2xvbmUoKTtcbiAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICBiLm5lZ2F0aXZlID0gMDtcblxuICAgIC8vIFJlbW92ZSBjb21tb24gZmFjdG9yIG9mIHR3b1xuICAgIGZvciAodmFyIHNoaWZ0ID0gMDsgYS5pc0V2ZW4oKSAmJiBiLmlzRXZlbigpOyBzaGlmdCsrKSB7XG4gICAgICBhLml1c2hybigxKTtcbiAgICAgIGIuaXVzaHJuKDEpO1xuICAgIH1cblxuICAgIGRvIHtcbiAgICAgIHdoaWxlIChhLmlzRXZlbigpKSB7XG4gICAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKGIuaXNFdmVuKCkpIHtcbiAgICAgICAgYi5pdXNocm4oMSk7XG4gICAgICB9XG5cbiAgICAgIHZhciByID0gYS5jbXAoYik7XG4gICAgICBpZiAociA8IDApIHtcbiAgICAgICAgLy8gU3dhcCBgYWAgYW5kIGBiYCB0byBtYWtlIGBhYCBhbHdheXMgYmlnZ2VyIHRoYW4gYGJgXG4gICAgICAgIHZhciB0ID0gYTtcbiAgICAgICAgYSA9IGI7XG4gICAgICAgIGIgPSB0O1xuICAgICAgfSBlbHNlIGlmIChyID09PSAwIHx8IGIuY21wbigxKSA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgYS5pc3ViKGIpO1xuICAgIH0gd2hpbGUgKHRydWUpO1xuXG4gICAgcmV0dXJuIGIuaXVzaGxuKHNoaWZ0KTtcbiAgfTtcblxuICAvLyBJbnZlcnQgbnVtYmVyIGluIHRoZSBmaWVsZCBGKG51bSlcbiAgQk4ucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5lZ2NkKG51bSkuYS51bW9kKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzRXZlbiA9IGZ1bmN0aW9uIGlzRXZlbiAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gaXNPZGQgKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAxO1xuICB9O1xuXG4gIC8vIEFuZCBmaXJzdCB3b3JkIGFuZCBudW1cbiAgQk4ucHJvdG90eXBlLmFuZGxuID0gZnVuY3Rpb24gYW5kbG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLndvcmRzWzBdICYgbnVtO1xuICB9O1xuXG4gIC8vIEluY3JlbWVudCBhdCB0aGUgYml0IHBvc2l0aW9uIGluLWxpbmVcbiAgQk4ucHJvdG90eXBlLmJpbmNuID0gZnVuY3Rpb24gYmluY24gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgdGhpcy5fZXhwYW5kKHMgKyAxKTtcbiAgICAgIHRoaXMud29yZHNbc10gfD0gcTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBiaXQgYW5kIHByb3BhZ2F0ZSwgaWYgbmVlZGVkXG4gICAgdmFyIGNhcnJ5ID0gcTtcbiAgICBmb3IgKHZhciBpID0gczsgY2FycnkgIT09IDAgJiYgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB3ICs9IGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+PiAyNjtcbiAgICAgIHcgJj0gMHgzZmZmZmZmO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHc7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uIGlzWmVybyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNtcG4gPSBmdW5jdGlvbiBjbXBuIChudW0pIHtcbiAgICB2YXIgbmVnYXRpdmUgPSBudW0gPCAwO1xuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgIW5lZ2F0aXZlKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbmVnYXRpdmUpIHJldHVybiAxO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuXG4gICAgdmFyIHJlcztcbiAgICBpZiAodGhpcy5sZW5ndGggPiAxKSB7XG4gICAgICByZXMgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobmVnYXRpdmUpIHtcbiAgICAgICAgbnVtID0gLW51bTtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYsICdOdW1iZXIgaXMgdG9vIGJpZycpO1xuXG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbMF0gfCAwO1xuICAgICAgcmVzID0gdyA9PT0gbnVtID8gMCA6IHcgPCBudW0gPyAtMSA6IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb21wYXJlIHR3byBudW1iZXJzIGFuZCByZXR1cm46XG4gIC8vIDEgLSBpZiBgdGhpc2AgPiBgbnVtYFxuICAvLyAwIC0gaWYgYHRoaXNgID09IGBudW1gXG4gIC8vIC0xIC0gaWYgYHRoaXNgIDwgYG51bWBcbiAgQk4ucHJvdG90eXBlLmNtcCA9IGZ1bmN0aW9uIGNtcCAobnVtKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gMTtcblxuICAgIHZhciByZXMgPSB0aGlzLnVjbXAobnVtKTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gVW5zaWduZWQgY29tcGFyaXNvblxuICBCTi5wcm90b3R5cGUudWNtcCA9IGZ1bmN0aW9uIHVjbXAgKG51bSkge1xuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGhhdmUgdGhlIHNhbWUgc2lnblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiAxO1xuICAgIGlmICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHJldHVybiAtMTtcblxuICAgIHZhciByZXMgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgYSA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdmFyIGIgPSBudW0ud29yZHNbaV0gfCAwO1xuXG4gICAgICBpZiAoYSA9PT0gYikgY29udGludWU7XG4gICAgICBpZiAoYSA8IGIpIHtcbiAgICAgICAgcmVzID0gLTE7XG4gICAgICB9IGVsc2UgaWYgKGEgPiBiKSB7XG4gICAgICAgIHJlcyA9IDE7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RuID0gZnVuY3Rpb24gZ3RuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ID0gZnVuY3Rpb24gZ3QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGVuID0gZnVuY3Rpb24gZ3RlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZSA9IGZ1bmN0aW9uIGd0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRuID0gZnVuY3Rpb24gbHRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdCA9IGZ1bmN0aW9uIGx0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZW4gPSBmdW5jdGlvbiBsdGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlID0gZnVuY3Rpb24gbHRlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcW4gPSBmdW5jdGlvbiBlcW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDA7XG4gIH07XG5cbiAgLy9cbiAgLy8gQSByZWR1Y2UgY29udGV4dCwgY291bGQgYmUgdXNpbmcgbW9udGdvbWVyeSBvciBzb21ldGhpbmcgYmV0dGVyLCBkZXBlbmRpbmdcbiAgLy8gb24gdGhlIGBtYCBpdHNlbGYuXG4gIC8vXG4gIEJOLnJlZCA9IGZ1bmN0aW9uIHJlZCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBSZWQobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9SZWQgPSBmdW5jdGlvbiB0b1JlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgcmV0dXJuIGN0eC5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21SZWQgPSBmdW5jdGlvbiBmcm9tUmVkICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZm9yY2VSZWQgPSBmdW5jdGlvbiBfZm9yY2VSZWQgKGN0eCkge1xuICAgIHRoaXMucmVkID0gY3R4O1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mb3JjZVJlZCA9IGZ1bmN0aW9uIGZvcmNlUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRBZGQgPSBmdW5jdGlvbiByZWRBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElBZGQgPSBmdW5jdGlvbiByZWRJQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFN1YiA9IGZ1bmN0aW9uIHJlZFN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVN1YiA9IGZ1bmN0aW9uIHJlZElTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU2hsID0gZnVuY3Rpb24gcmVkU2hsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNobCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRNdWwgPSBmdW5jdGlvbiByZWRNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5tdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSU11bCA9IGZ1bmN0aW9uIHJlZElNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNxciA9IGZ1bmN0aW9uIHJlZFNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXIodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTcXIgPSBmdW5jdGlvbiByZWRJU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3FyKHRoaXMpO1xuICB9O1xuXG4gIC8vIFNxdWFyZSByb290IG92ZXIgcFxuICBCTi5wcm90b3R5cGUucmVkU3FydCA9IGZ1bmN0aW9uIHJlZFNxcnQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcnQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEludm0gPSBmdW5jdGlvbiByZWRJbnZtICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbnZtKHRoaXMpO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2AgJSBgcmVkIG1vZHVsb2BcbiAgQk4ucHJvdG90eXBlLnJlZE5lZyA9IGZ1bmN0aW9uIHJlZE5lZyAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5uZWcodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFBvdyA9IGZ1bmN0aW9uIHJlZFBvdyAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkICYmICFudW0ucmVkLCAncmVkUG93KG5vcm1hbE51bSknKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQucG93KHRoaXMsIG51bSk7XG4gIH07XG5cbiAgLy8gUHJpbWUgbnVtYmVycyB3aXRoIGVmZmljaWVudCByZWR1Y3Rpb25cbiAgdmFyIHByaW1lcyA9IHtcbiAgICBrMjU2OiBudWxsLFxuICAgIHAyMjQ6IG51bGwsXG4gICAgcDE5MjogbnVsbCxcbiAgICBwMjU1MTk6IG51bGxcbiAgfTtcblxuICAvLyBQc2V1ZG8tTWVyc2VubmUgcHJpbWVcbiAgZnVuY3Rpb24gTVByaW1lIChuYW1lLCBwKSB7XG4gICAgLy8gUCA9IDIgXiBOIC0gS1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wID0gbmV3IEJOKHAsIDE2KTtcbiAgICB0aGlzLm4gPSB0aGlzLnAuYml0TGVuZ3RoKCk7XG4gICAgdGhpcy5rID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKTtcblxuICAgIHRoaXMudG1wID0gdGhpcy5fdG1wKCk7XG4gIH1cblxuICBNUHJpbWUucHJvdG90eXBlLl90bXAgPSBmdW5jdGlvbiBfdG1wICgpIHtcbiAgICB2YXIgdG1wID0gbmV3IEJOKG51bGwpO1xuICAgIHRtcC53b3JkcyA9IG5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uIC8gMTMpKTtcbiAgICByZXR1cm4gdG1wO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaXJlZHVjZSA9IGZ1bmN0aW9uIGlyZWR1Y2UgKG51bSkge1xuICAgIC8vIEFzc3VtZXMgdGhhdCBgbnVtYCBpcyBsZXNzIHRoYW4gYFBeMmBcbiAgICAvLyBudW0gPSBISSAqICgyIF4gTiAtIEspICsgSEkgKiBLICsgTE8gPSBISSAqIEsgKyBMTyAobW9kIFApXG4gICAgdmFyIHIgPSBudW07XG4gICAgdmFyIHJsZW47XG5cbiAgICBkbyB7XG4gICAgICB0aGlzLnNwbGl0KHIsIHRoaXMudG1wKTtcbiAgICAgIHIgPSB0aGlzLmltdWxLKHIpO1xuICAgICAgciA9IHIuaWFkZCh0aGlzLnRtcCk7XG4gICAgICBybGVuID0gci5iaXRMZW5ndGgoKTtcbiAgICB9IHdoaWxlIChybGVuID4gdGhpcy5uKTtcblxuICAgIHZhciBjbXAgPSBybGVuIDwgdGhpcy5uID8gLTEgOiByLnVjbXAodGhpcy5wKTtcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICByLndvcmRzWzBdID0gMDtcbiAgICAgIHIubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKGNtcCA+IDApIHtcbiAgICAgIHIuaXN1Yih0aGlzLnApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoci5zdHJpcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIHIgaXMgQk4gdjQgaW5zdGFuY2VcbiAgICAgICAgci5zdHJpcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NSBpbnN0YW5jZVxuICAgICAgICByLl9zdHJpcCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dCkge1xuICAgIGlucHV0Lml1c2hybih0aGlzLm4sIDAsIG91dCk7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICByZXR1cm4gbnVtLmltdWwodGhpcy5rKTtcbiAgfTtcblxuICBmdW5jdGlvbiBLMjU2ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnazI1NicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYnKTtcbiAgfVxuICBpbmhlcml0cyhLMjU2LCBNUHJpbWUpO1xuXG4gIEsyNTYucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXRwdXQpIHtcbiAgICAvLyAyNTYgPSA5ICogMjYgKyAyMlxuICAgIHZhciBtYXNrID0gMHgzZmZmZmY7XG5cbiAgICB2YXIgb3V0TGVuID0gTWF0aC5taW4oaW5wdXQubGVuZ3RoLCA5KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG91dExlbjsgaSsrKSB7XG4gICAgICBvdXRwdXQud29yZHNbaV0gPSBpbnB1dC53b3Jkc1tpXTtcbiAgICB9XG4gICAgb3V0cHV0Lmxlbmd0aCA9IG91dExlbjtcblxuICAgIGlmIChpbnB1dC5sZW5ndGggPD0gOSkge1xuICAgICAgaW5wdXQud29yZHNbMF0gPSAwO1xuICAgICAgaW5wdXQubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTaGlmdCBieSA5IGxpbWJzXG4gICAgdmFyIHByZXYgPSBpbnB1dC53b3Jkc1s5XTtcbiAgICBvdXRwdXQud29yZHNbb3V0cHV0Lmxlbmd0aCsrXSA9IHByZXYgJiBtYXNrO1xuXG4gICAgZm9yIChpID0gMTA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5leHQgPSBpbnB1dC53b3Jkc1tpXSB8IDA7XG4gICAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gKChuZXh0ICYgbWFzaykgPDwgNCkgfCAocHJldiA+Pj4gMjIpO1xuICAgICAgcHJldiA9IG5leHQ7XG4gICAgfVxuICAgIHByZXYgPj4+PSAyMjtcbiAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gcHJldjtcbiAgICBpZiAocHJldiA9PT0gMCAmJiBpbnB1dC5sZW5ndGggPiAxMCkge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDEwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gOTtcbiAgICB9XG4gIH07XG5cbiAgSzI1Ni5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTAwMDAwM2QxID0gWyAweDQwLCAweDNkMSBdXG4gICAgbnVtLndvcmRzW251bS5sZW5ndGhdID0gMDtcbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aCArIDFdID0gMDtcbiAgICBudW0ubGVuZ3RoICs9IDI7XG5cbiAgICAvLyBib3VuZGVkIGF0OiAweDQwICogMHgzZmZmZmZmICsgMHgzZDAgPSAweDEwMDAwMDM5MFxuICAgIHZhciBsbyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gbnVtLndvcmRzW2ldIHwgMDtcbiAgICAgIGxvICs9IHcgKiAweDNkMTtcbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgbG8gPSB3ICogMHg0MCArICgobG8gLyAweDQwMDAwMDApIHwgMCk7XG4gICAgfVxuXG4gICAgLy8gRmFzdCBsZW5ndGggcmVkdWN0aW9uXG4gICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICBmdW5jdGlvbiBQMjI0ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDIyNCcsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEnKTtcbiAgfVxuICBpbmhlcml0cyhQMjI0LCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAxOTIgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMTkyJyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicpO1xuICB9XG4gIGluaGVyaXRzKFAxOTIsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDI1NTE5ICgpIHtcbiAgICAvLyAyIF4gMjU1IC0gMTlcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnMjU1MTknLFxuICAgICAgJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnKTtcbiAgfVxuICBpbmhlcml0cyhQMjU1MTksIE1QcmltZSk7XG5cbiAgUDI1NTE5LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxM1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoaSA9IChudW0ud29yZHNbaV0gfCAwKSAqIDB4MTMgKyBjYXJyeTtcbiAgICAgIHZhciBsbyA9IGhpICYgMHgzZmZmZmZmO1xuICAgICAgaGkgPj4+PSAyNjtcblxuICAgICAgbnVtLndvcmRzW2ldID0gbG87XG4gICAgICBjYXJyeSA9IGhpO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgLy8gRXhwb3J0ZWQgbW9zdGx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB1c2UgcGxhaW4gbmFtZSBpbnN0ZWFkXG4gIEJOLl9wcmltZSA9IGZ1bmN0aW9uIHByaW1lIChuYW1lKSB7XG4gICAgLy8gQ2FjaGVkIHZlcnNpb24gb2YgcHJpbWVcbiAgICBpZiAocHJpbWVzW25hbWVdKSByZXR1cm4gcHJpbWVzW25hbWVdO1xuXG4gICAgdmFyIHByaW1lO1xuICAgIGlmIChuYW1lID09PSAnazI1NicpIHtcbiAgICAgIHByaW1lID0gbmV3IEsyNTYoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjI0Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDIyNCgpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AxOTInKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMTkyKCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDI1NTE5Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDI1NTE5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBwcmltZSAnICsgbmFtZSk7XG4gICAgfVxuICAgIHByaW1lc1tuYW1lXSA9IHByaW1lO1xuXG4gICAgcmV0dXJuIHByaW1lO1xuICB9O1xuXG4gIC8vXG4gIC8vIEJhc2UgcmVkdWN0aW9uIGVuZ2luZVxuICAvL1xuICBmdW5jdGlvbiBSZWQgKG0pIHtcbiAgICBpZiAodHlwZW9mIG0gPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgcHJpbWUgPSBCTi5fcHJpbWUobSk7XG4gICAgICB0aGlzLm0gPSBwcmltZS5wO1xuICAgICAgdGhpcy5wcmltZSA9IHByaW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobS5ndG4oMSksICdtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEnKTtcbiAgICAgIHRoaXMubSA9IG07XG4gICAgICB0aGlzLnByaW1lID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkxID0gZnVuY3Rpb24gX3ZlcmlmeTEgKGEpIHtcbiAgICBhc3NlcnQoYS5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkLCAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTIgPSBmdW5jdGlvbiBfdmVyaWZ5MiAoYSwgYikge1xuICAgIGFzc2VydCgoYS5uZWdhdGl2ZSB8IGIubmVnYXRpdmUpID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQgJiYgYS5yZWQgPT09IGIucmVkLFxuICAgICAgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltb2QgPSBmdW5jdGlvbiBpbW9kIChhKSB7XG4gICAgaWYgKHRoaXMucHJpbWUpIHJldHVybiB0aGlzLnByaW1lLmlyZWR1Y2UoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICAgIHJldHVybiBhLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIGEuY2xvbmUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tLnN1YihhKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5zdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zaGwgPSBmdW5jdGlvbiBzaGwgKGEsIG51bSkge1xuICAgIHRoaXMuX3ZlcmlmeTEoYSk7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLnVzaGxuKG51bSkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5pbXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLm11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLmltdWwoYSwgYS5jbG9uZSgpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLm11bChhLCBhKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxcnQgPSBmdW5jdGlvbiBzcXJ0IChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgbW9kMyA9IHRoaXMubS5hbmRsbigzKTtcbiAgICBhc3NlcnQobW9kMyAlIDIgPT09IDEpO1xuXG4gICAgLy8gRmFzdCBjYXNlXG4gICAgaWYgKG1vZDMgPT09IDMpIHtcbiAgICAgIHZhciBwb3cgPSB0aGlzLm0uYWRkKG5ldyBCTigxKSkuaXVzaHJuKDIpO1xuICAgICAgcmV0dXJuIHRoaXMucG93KGEsIHBvdyk7XG4gICAgfVxuXG4gICAgLy8gVG9uZWxsaS1TaGFua3MgYWxnb3JpdGhtIChUb3RhbGx5IHVub3B0aW1pemVkIGFuZCBzbG93KVxuICAgIC8vXG4gICAgLy8gRmluZCBRIGFuZCBTLCB0aGF0IFEgKiAyIF4gUyA9IChQIC0gMSlcbiAgICB2YXIgcSA9IHRoaXMubS5zdWJuKDEpO1xuICAgIHZhciBzID0gMDtcbiAgICB3aGlsZSAoIXEuaXNaZXJvKCkgJiYgcS5hbmRsbigxKSA9PT0gMCkge1xuICAgICAgcysrO1xuICAgICAgcS5pdXNocm4oMSk7XG4gICAgfVxuICAgIGFzc2VydCghcS5pc1plcm8oKSk7XG5cbiAgICB2YXIgb25lID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHZhciBuT25lID0gb25lLnJlZE5lZygpO1xuXG4gICAgLy8gRmluZCBxdWFkcmF0aWMgbm9uLXJlc2lkdWVcbiAgICAvLyBOT1RFOiBNYXggaXMgc3VjaCBiZWNhdXNlIG9mIGdlbmVyYWxpemVkIFJpZW1hbm4gaHlwb3RoZXNpcy5cbiAgICB2YXIgbHBvdyA9IHRoaXMubS5zdWJuKDEpLml1c2hybigxKTtcbiAgICB2YXIgeiA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICB6ID0gbmV3IEJOKDIgKiB6ICogeikudG9SZWQodGhpcyk7XG5cbiAgICB3aGlsZSAodGhpcy5wb3coeiwgbHBvdykuY21wKG5PbmUpICE9PSAwKSB7XG4gICAgICB6LnJlZElBZGQobk9uZSk7XG4gICAgfVxuXG4gICAgdmFyIGMgPSB0aGlzLnBvdyh6LCBxKTtcbiAgICB2YXIgciA9IHRoaXMucG93KGEsIHEuYWRkbigxKS5pdXNocm4oMSkpO1xuICAgIHZhciB0ID0gdGhpcy5wb3coYSwgcSk7XG4gICAgdmFyIG0gPSBzO1xuICAgIHdoaWxlICh0LmNtcChvbmUpICE9PSAwKSB7XG4gICAgICB2YXIgdG1wID0gdDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyB0bXAuY21wKG9uZSkgIT09IDA7IGkrKykge1xuICAgICAgICB0bXAgPSB0bXAucmVkU3FyKCk7XG4gICAgICB9XG4gICAgICBhc3NlcnQoaSA8IG0pO1xuICAgICAgdmFyIGIgPSB0aGlzLnBvdyhjLCBuZXcgQk4oMSkuaXVzaGxuKG0gLSBpIC0gMSkpO1xuXG4gICAgICByID0gci5yZWRNdWwoYik7XG4gICAgICBjID0gYi5yZWRTcXIoKTtcbiAgICAgIHQgPSB0LnJlZE11bChjKTtcbiAgICAgIG0gPSBpO1xuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICB2YXIgaW52ID0gYS5faW52bXAodGhpcy5tKTtcbiAgICBpZiAoaW52Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpbnYubmVnYXRpdmUgPSAwO1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpLnJlZE5lZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludik7XG4gICAgfVxuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChhLCBudW0pIHtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIGlmIChudW0uY21wbigxKSA9PT0gMCkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciB3aW5kb3dTaXplID0gNDtcbiAgICB2YXIgd25kID0gbmV3IEFycmF5KDEgPDwgd2luZG93U2l6ZSk7XG4gICAgd25kWzBdID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHduZFsxXSA9IGE7XG4gICAgZm9yICh2YXIgaSA9IDI7IGkgPCB3bmQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHduZFtpXSA9IHRoaXMubXVsKHduZFtpIC0gMV0sIGEpO1xuICAgIH1cblxuICAgIHZhciByZXMgPSB3bmRbMF07XG4gICAgdmFyIGN1cnJlbnQgPSAwO1xuICAgIHZhciBjdXJyZW50TGVuID0gMDtcbiAgICB2YXIgc3RhcnQgPSBudW0uYml0TGVuZ3RoKCkgJSAyNjtcbiAgICBpZiAoc3RhcnQgPT09IDApIHtcbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgZm9yIChpID0gbnVtLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IG51bS53b3Jkc1tpXTtcbiAgICAgIGZvciAodmFyIGogPSBzdGFydCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgIHZhciBiaXQgPSAod29yZCA+PiBqKSAmIDE7XG4gICAgICAgIGlmIChyZXMgIT09IHduZFswXSkge1xuICAgICAgICAgIHJlcyA9IHRoaXMuc3FyKHJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYml0ID09PSAwICYmIGN1cnJlbnQgPT09IDApIHtcbiAgICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnQgPDw9IDE7XG4gICAgICAgIGN1cnJlbnQgfD0gYml0O1xuICAgICAgICBjdXJyZW50TGVuKys7XG4gICAgICAgIGlmIChjdXJyZW50TGVuICE9PSB3aW5kb3dTaXplICYmIChpICE9PSAwIHx8IGogIT09IDApKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSB0aGlzLm11bChyZXMsIHduZFtjdXJyZW50XSk7XG4gICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICBjdXJyZW50ID0gMDtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgdmFyIHIgPSBudW0udW1vZCh0aGlzLm0pO1xuXG4gICAgcmV0dXJuIHIgPT09IG51bSA/IHIuY2xvbmUoKSA6IHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgcmVzID0gbnVtLmNsb25lKCk7XG4gICAgcmVzLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvL1xuICAvLyBNb250Z29tZXJ5IG1ldGhvZCBlbmdpbmVcbiAgLy9cblxuICBCTi5tb250ID0gZnVuY3Rpb24gbW9udCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBNb250KG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gTW9udCAobSkge1xuICAgIFJlZC5jYWxsKHRoaXMsIG0pO1xuXG4gICAgdGhpcy5zaGlmdCA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICBpZiAodGhpcy5zaGlmdCAlIDI2ICE9PSAwKSB7XG4gICAgICB0aGlzLnNoaWZ0ICs9IDI2IC0gKHRoaXMuc2hpZnQgJSAyNik7XG4gICAgfVxuXG4gICAgdGhpcy5yID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLnNoaWZ0KTtcbiAgICB0aGlzLnIyID0gdGhpcy5pbW9kKHRoaXMuci5zcXIoKSk7XG4gICAgdGhpcy5yaW52ID0gdGhpcy5yLl9pbnZtcCh0aGlzLm0pO1xuXG4gICAgdGhpcy5taW52ID0gdGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pO1xuICAgIHRoaXMubWludiA9IHRoaXMubWludi51bW9kKHRoaXMucik7XG4gICAgdGhpcy5taW52ID0gdGhpcy5yLnN1Yih0aGlzLm1pbnYpO1xuICB9XG4gIGluaGVyaXRzKE1vbnQsIFJlZCk7XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5pbW9kKG51bS51c2hsbih0aGlzLnNoaWZ0KSk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHIgPSB0aGlzLmltb2QobnVtLm11bCh0aGlzLnJpbnYpKTtcbiAgICByLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSB7XG4gICAgICBhLndvcmRzWzBdID0gMDtcbiAgICAgIGEubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiBhO1xuICAgIH1cblxuICAgIHZhciB0ID0gYS5pbXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuXG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDApLl9mb3JjZVJlZCh0aGlzKTtcblxuICAgIHZhciB0ID0gYS5tdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIC8vIChBUileLTEgKiBSXjIgPSAoQV4tMSAqIFJeLTEpICogUl4yID0gQV4tMSAqIFJcbiAgICB2YXIgcmVzID0gdGhpcy5pbW9kKGEuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKTtcbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcbn0pKHR5cGVvZiBtb2R1bGUgPT09ICd1bmRlZmluZWQnIHx8IG1vZHVsZSwgdGhpcyk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGFzc2VydDtcblxuZnVuY3Rpb24gYXNzZXJ0KHZhbCwgbXNnKSB7XG4gIGlmICghdmFsKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbn1cblxuYXNzZXJ0LmVxdWFsID0gZnVuY3Rpb24gYXNzZXJ0RXF1YWwobCwgciwgbXNnKSB7XG4gIGlmIChsICE9IHIpXG4gICAgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAoJ0Fzc2VydGlvbiBmYWlsZWQ6ICcgKyBsICsgJyAhPSAnICsgcikpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gZXhwb3J0cztcblxuZnVuY3Rpb24gdG9BcnJheShtc2csIGVuYykge1xuICBpZiAoQXJyYXkuaXNBcnJheShtc2cpKVxuICAgIHJldHVybiBtc2cuc2xpY2UoKTtcbiAgaWYgKCFtc2cpXG4gICAgcmV0dXJuIFtdO1xuICB2YXIgcmVzID0gW107XG4gIGlmICh0eXBlb2YgbXNnICE9PSAnc3RyaW5nJykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgICAgcmVzW2ldID0gbXNnW2ldIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIGlmIChlbmMgPT09ICdoZXgnKSB7XG4gICAgbXNnID0gbXNnLnJlcGxhY2UoL1teYS16MC05XSsvaWcsICcnKTtcbiAgICBpZiAobXNnLmxlbmd0aCAlIDIgIT09IDApXG4gICAgICBtc2cgPSAnMCcgKyBtc2c7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpICs9IDIpXG4gICAgICByZXMucHVzaChwYXJzZUludChtc2dbaV0gKyBtc2dbaSArIDFdLCAxNikpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IG1zZy5jaGFyQ29kZUF0KGkpO1xuICAgICAgdmFyIGhpID0gYyA+PiA4O1xuICAgICAgdmFyIGxvID0gYyAmIDB4ZmY7XG4gICAgICBpZiAoaGkpXG4gICAgICAgIHJlcy5wdXNoKGhpLCBsbyk7XG4gICAgICBlbHNlXG4gICAgICAgIHJlcy5wdXNoKGxvKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvQXJyYXkgPSB0b0FycmF5O1xuXG5mdW5jdGlvbiB6ZXJvMih3b3JkKSB7XG4gIGlmICh3b3JkLmxlbmd0aCA9PT0gMSlcbiAgICByZXR1cm4gJzAnICsgd29yZDtcbiAgZWxzZVxuICAgIHJldHVybiB3b3JkO1xufVxudXRpbHMuemVybzIgPSB6ZXJvMjtcblxuZnVuY3Rpb24gdG9IZXgobXNnKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspXG4gICAgcmVzICs9IHplcm8yKG1zZ1tpXS50b1N0cmluZygxNikpO1xuICByZXR1cm4gcmVzO1xufVxudXRpbHMudG9IZXggPSB0b0hleDtcblxudXRpbHMuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGFyciwgZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB0b0hleChhcnIpO1xuICBlbHNlXG4gICAgcmV0dXJuIGFycjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBudW1iZXJJc05hTiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpcyhhLCBiKSB7XG5cdGlmIChhID09PSAwICYmIGIgPT09IDApIHtcblx0XHRyZXR1cm4gMSAvIGEgPT09IDEgLyBiO1xuXHR9XG5cdGlmIChhID09PSBiKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0aWYgKG51bWJlcklzTmFOKGEpICYmIG51bWJlcklzTmFOKGIpKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZGVmaW5lID0gcmVxdWlyZSgnZGVmaW5lLXByb3BlcnRpZXMnKTtcbnZhciBjYWxsQmluZCA9IHJlcXVpcmUoJ2NhbGwtYmluZCcpO1xuXG52YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG52YXIgZ2V0UG9seWZpbGwgPSByZXF1aXJlKCcuL3BvbHlmaWxsJyk7XG52YXIgc2hpbSA9IHJlcXVpcmUoJy4vc2hpbScpO1xuXG52YXIgcG9seWZpbGwgPSBjYWxsQmluZChnZXRQb2x5ZmlsbCgpLCBPYmplY3QpO1xuXG5kZWZpbmUocG9seWZpbGwsIHtcblx0Z2V0UG9seWZpbGw6IGdldFBvbHlmaWxsLFxuXHRpbXBsZW1lbnRhdGlvbjogaW1wbGVtZW50YXRpb24sXG5cdHNoaW06IHNoaW1cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBvbHlmaWxsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2V0UG9seWZpbGwoKSB7XG5cdHJldHVybiB0eXBlb2YgT2JqZWN0LmlzID09PSAnZnVuY3Rpb24nID8gT2JqZWN0LmlzIDogaW1wbGVtZW50YXRpb247XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZ2V0UG9seWZpbGwgPSByZXF1aXJlKCcuL3BvbHlmaWxsJyk7XG52YXIgZGVmaW5lID0gcmVxdWlyZSgnZGVmaW5lLXByb3BlcnRpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzaGltT2JqZWN0SXMoKSB7XG5cdHZhciBwb2x5ZmlsbCA9IGdldFBvbHlmaWxsKCk7XG5cdGRlZmluZShPYmplY3QsIHsgaXM6IHBvbHlmaWxsIH0sIHtcblx0XHRpczogZnVuY3Rpb24gdGVzdE9iamVjdElzKCkge1xuXHRcdFx0cmV0dXJuIE9iamVjdC5pcyAhPT0gcG9seWZpbGw7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIHBvbHlmaWxsO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGtleXNTaGltO1xuaWYgKCFPYmplY3Qua2V5cykge1xuXHQvLyBtb2RpZmllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9lcy1zaGltcy9lczUtc2hpbVxuXHR2YXIgaGFzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0dmFyIHRvU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblx0dmFyIGlzQXJncyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBnbG9iYWwtcmVxdWlyZVxuXHR2YXIgaXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblx0dmFyIGhhc0RvbnRFbnVtQnVnID0gIWlzRW51bWVyYWJsZS5jYWxsKHsgdG9TdHJpbmc6IG51bGwgfSwgJ3RvU3RyaW5nJyk7XG5cdHZhciBoYXNQcm90b0VudW1CdWcgPSBpc0VudW1lcmFibGUuY2FsbChmdW5jdGlvbiAoKSB7fSwgJ3Byb3RvdHlwZScpO1xuXHR2YXIgZG9udEVudW1zID0gW1xuXHRcdCd0b1N0cmluZycsXG5cdFx0J3RvTG9jYWxlU3RyaW5nJyxcblx0XHQndmFsdWVPZicsXG5cdFx0J2hhc093blByb3BlcnR5Jyxcblx0XHQnaXNQcm90b3R5cGVPZicsXG5cdFx0J3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcblx0XHQnY29uc3RydWN0b3InXG5cdF07XG5cdHZhciBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZSA9IGZ1bmN0aW9uIChvKSB7XG5cdFx0dmFyIGN0b3IgPSBvLmNvbnN0cnVjdG9yO1xuXHRcdHJldHVybiBjdG9yICYmIGN0b3IucHJvdG90eXBlID09PSBvO1xuXHR9O1xuXHR2YXIgZXhjbHVkZWRLZXlzID0ge1xuXHRcdCRhcHBsaWNhdGlvbkNhY2hlOiB0cnVlLFxuXHRcdCRjb25zb2xlOiB0cnVlLFxuXHRcdCRleHRlcm5hbDogdHJ1ZSxcblx0XHQkZnJhbWU6IHRydWUsXG5cdFx0JGZyYW1lRWxlbWVudDogdHJ1ZSxcblx0XHQkZnJhbWVzOiB0cnVlLFxuXHRcdCRpbm5lckhlaWdodDogdHJ1ZSxcblx0XHQkaW5uZXJXaWR0aDogdHJ1ZSxcblx0XHQkb25tb3pmdWxsc2NyZWVuY2hhbmdlOiB0cnVlLFxuXHRcdCRvbm1vemZ1bGxzY3JlZW5lcnJvcjogdHJ1ZSxcblx0XHQkb3V0ZXJIZWlnaHQ6IHRydWUsXG5cdFx0JG91dGVyV2lkdGg6IHRydWUsXG5cdFx0JHBhZ2VYT2Zmc2V0OiB0cnVlLFxuXHRcdCRwYWdlWU9mZnNldDogdHJ1ZSxcblx0XHQkcGFyZW50OiB0cnVlLFxuXHRcdCRzY3JvbGxMZWZ0OiB0cnVlLFxuXHRcdCRzY3JvbGxUb3A6IHRydWUsXG5cdFx0JHNjcm9sbFg6IHRydWUsXG5cdFx0JHNjcm9sbFk6IHRydWUsXG5cdFx0JHNlbGY6IHRydWUsXG5cdFx0JHdlYmtpdEluZGV4ZWREQjogdHJ1ZSxcblx0XHQkd2Via2l0U3RvcmFnZUluZm86IHRydWUsXG5cdFx0JHdpbmRvdzogdHJ1ZVxuXHR9O1xuXHR2YXIgaGFzQXV0b21hdGlvbkVxdWFsaXR5QnVnID0gKGZ1bmN0aW9uICgpIHtcblx0XHQvKiBnbG9iYWwgd2luZG93ICovXG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7IHJldHVybiBmYWxzZTsgfVxuXHRcdGZvciAodmFyIGsgaW4gd2luZG93KSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpZiAoIWV4Y2x1ZGVkS2V5c1snJCcgKyBrXSAmJiBoYXMuY2FsbCh3aW5kb3csIGspICYmIHdpbmRvd1trXSAhPT0gbnVsbCAmJiB0eXBlb2Ygd2luZG93W2tdID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZSh3aW5kb3dba10pO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9KCkpO1xuXHR2YXIgZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGVJZk5vdEJ1Z2d5ID0gZnVuY3Rpb24gKG8pIHtcblx0XHQvKiBnbG9iYWwgd2luZG93ICovXG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICFoYXNBdXRvbWF0aW9uRXF1YWxpdHlCdWcpIHtcblx0XHRcdHJldHVybiBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZShvKTtcblx0XHR9XG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZShvKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9O1xuXG5cdGtleXNTaGltID0gZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcblx0XHR2YXIgaXNPYmplY3QgPSBvYmplY3QgIT09IG51bGwgJiYgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCc7XG5cdFx0dmFyIGlzRnVuY3Rpb24gPSB0b1N0ci5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG5cdFx0dmFyIGlzQXJndW1lbnRzID0gaXNBcmdzKG9iamVjdCk7XG5cdFx0dmFyIGlzU3RyaW5nID0gaXNPYmplY3QgJiYgdG9TdHIuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBTdHJpbmddJztcblx0XHR2YXIgdGhlS2V5cyA9IFtdO1xuXG5cdFx0aWYgKCFpc09iamVjdCAmJiAhaXNGdW5jdGlvbiAmJiAhaXNBcmd1bWVudHMpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5rZXlzIGNhbGxlZCBvbiBhIG5vbi1vYmplY3QnKTtcblx0XHR9XG5cblx0XHR2YXIgc2tpcFByb3RvID0gaGFzUHJvdG9FbnVtQnVnICYmIGlzRnVuY3Rpb247XG5cdFx0aWYgKGlzU3RyaW5nICYmIG9iamVjdC5sZW5ndGggPiAwICYmICFoYXMuY2FsbChvYmplY3QsIDApKSB7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IG9iamVjdC5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHR0aGVLZXlzLnB1c2goU3RyaW5nKGkpKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoaXNBcmd1bWVudHMgJiYgb2JqZWN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgb2JqZWN0Lmxlbmd0aDsgKytqKSB7XG5cdFx0XHRcdHRoZUtleXMucHVzaChTdHJpbmcoaikpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKHZhciBuYW1lIGluIG9iamVjdCkge1xuXHRcdFx0XHRpZiAoIShza2lwUHJvdG8gJiYgbmFtZSA9PT0gJ3Byb3RvdHlwZScpICYmIGhhcy5jYWxsKG9iamVjdCwgbmFtZSkpIHtcblx0XHRcdFx0XHR0aGVLZXlzLnB1c2goU3RyaW5nKG5hbWUpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChoYXNEb250RW51bUJ1Zykge1xuXHRcdFx0dmFyIHNraXBDb25zdHJ1Y3RvciA9IGVxdWFsc0NvbnN0cnVjdG9yUHJvdG90eXBlSWZOb3RCdWdneShvYmplY3QpO1xuXG5cdFx0XHRmb3IgKHZhciBrID0gMDsgayA8IGRvbnRFbnVtcy5sZW5ndGg7ICsraykge1xuXHRcdFx0XHRpZiAoIShza2lwQ29uc3RydWN0b3IgJiYgZG9udEVudW1zW2tdID09PSAnY29uc3RydWN0b3InKSAmJiBoYXMuY2FsbChvYmplY3QsIGRvbnRFbnVtc1trXSkpIHtcblx0XHRcdFx0XHR0aGVLZXlzLnB1c2goZG9udEVudW1zW2tdKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdGhlS2V5cztcblx0fTtcbn1cbm1vZHVsZS5leHBvcnRzID0ga2V5c1NoaW07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbnZhciBpc0FyZ3MgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyk7XG5cbnZhciBvcmlnS2V5cyA9IE9iamVjdC5rZXlzO1xudmFyIGtleXNTaGltID0gb3JpZ0tleXMgPyBmdW5jdGlvbiBrZXlzKG8pIHsgcmV0dXJuIG9yaWdLZXlzKG8pOyB9IDogcmVxdWlyZSgnLi9pbXBsZW1lbnRhdGlvbicpO1xuXG52YXIgb3JpZ2luYWxLZXlzID0gT2JqZWN0LmtleXM7XG5cbmtleXNTaGltLnNoaW0gPSBmdW5jdGlvbiBzaGltT2JqZWN0S2V5cygpIHtcblx0aWYgKE9iamVjdC5rZXlzKSB7XG5cdFx0dmFyIGtleXNXb3Jrc1dpdGhBcmd1bWVudHMgPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0Ly8gU2FmYXJpIDUuMCBidWdcblx0XHRcdHZhciBhcmdzID0gT2JqZWN0LmtleXMoYXJndW1lbnRzKTtcblx0XHRcdHJldHVybiBhcmdzICYmIGFyZ3MubGVuZ3RoID09PSBhcmd1bWVudHMubGVuZ3RoO1xuXHRcdH0oMSwgMikpO1xuXHRcdGlmICgha2V5c1dvcmtzV2l0aEFyZ3VtZW50cykge1xuXHRcdFx0T2JqZWN0LmtleXMgPSBmdW5jdGlvbiBrZXlzKG9iamVjdCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGZ1bmMtbmFtZS1tYXRjaGluZ1xuXHRcdFx0XHRpZiAoaXNBcmdzKG9iamVjdCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gb3JpZ2luYWxLZXlzKHNsaWNlLmNhbGwob2JqZWN0KSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG9yaWdpbmFsS2V5cyhvYmplY3QpO1xuXHRcdFx0fTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0T2JqZWN0LmtleXMgPSBrZXlzU2hpbTtcblx0fVxuXHRyZXR1cm4gT2JqZWN0LmtleXMgfHwga2V5c1NoaW07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXNTaGltO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdG9TdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQXJndW1lbnRzKHZhbHVlKSB7XG5cdHZhciBzdHIgPSB0b1N0ci5jYWxsKHZhbHVlKTtcblx0dmFyIGlzQXJncyA9IHN0ciA9PT0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cdGlmICghaXNBcmdzKSB7XG5cdFx0aXNBcmdzID0gc3RyICE9PSAnW29iamVjdCBBcnJheV0nICYmXG5cdFx0XHR2YWx1ZSAhPT0gbnVsbCAmJlxuXHRcdFx0dHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuXHRcdFx0dHlwZW9mIHZhbHVlLmxlbmd0aCA9PT0gJ251bWJlcicgJiZcblx0XHRcdHZhbHVlLmxlbmd0aCA+PSAwICYmXG5cdFx0XHR0b1N0ci5jYWxsKHZhbHVlLmNhbGxlZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG5cdH1cblx0cmV0dXJuIGlzQXJncztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cblxudmFyIFRZUEVEX09LID0gICh0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcpICYmXG4gICAgICAgICAgICAgICAgKHR5cGVvZiBVaW50MTZBcnJheSAhPT0gJ3VuZGVmaW5lZCcpICYmXG4gICAgICAgICAgICAgICAgKHR5cGVvZiBJbnQzMkFycmF5ICE9PSAndW5kZWZpbmVkJyk7XG5cbmZ1bmN0aW9uIF9oYXMob2JqLCBrZXkpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSk7XG59XG5cbmV4cG9ydHMuYXNzaWduID0gZnVuY3Rpb24gKG9iaiAvKmZyb20xLCBmcm9tMiwgZnJvbTMsIC4uLiovKSB7XG4gIHZhciBzb3VyY2VzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgd2hpbGUgKHNvdXJjZXMubGVuZ3RoKSB7XG4gICAgdmFyIHNvdXJjZSA9IHNvdXJjZXMuc2hpZnQoKTtcbiAgICBpZiAoIXNvdXJjZSkgeyBjb250aW51ZTsgfVxuXG4gICAgaWYgKHR5cGVvZiBzb3VyY2UgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHNvdXJjZSArICdtdXN0IGJlIG5vbi1vYmplY3QnKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBwIGluIHNvdXJjZSkge1xuICAgICAgaWYgKF9oYXMoc291cmNlLCBwKSkge1xuICAgICAgICBvYmpbcF0gPSBzb3VyY2VbcF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iajtcbn07XG5cblxuLy8gcmVkdWNlIGJ1ZmZlciBzaXplLCBhdm9pZGluZyBtZW0gY29weVxuZXhwb3J0cy5zaHJpbmtCdWYgPSBmdW5jdGlvbiAoYnVmLCBzaXplKSB7XG4gIGlmIChidWYubGVuZ3RoID09PSBzaXplKSB7IHJldHVybiBidWY7IH1cbiAgaWYgKGJ1Zi5zdWJhcnJheSkgeyByZXR1cm4gYnVmLnN1YmFycmF5KDAsIHNpemUpOyB9XG4gIGJ1Zi5sZW5ndGggPSBzaXplO1xuICByZXR1cm4gYnVmO1xufTtcblxuXG52YXIgZm5UeXBlZCA9IHtcbiAgYXJyYXlTZXQ6IGZ1bmN0aW9uIChkZXN0LCBzcmMsIHNyY19vZmZzLCBsZW4sIGRlc3Rfb2Zmcykge1xuICAgIGlmIChzcmMuc3ViYXJyYXkgJiYgZGVzdC5zdWJhcnJheSkge1xuICAgICAgZGVzdC5zZXQoc3JjLnN1YmFycmF5KHNyY19vZmZzLCBzcmNfb2ZmcyArIGxlbiksIGRlc3Rfb2Zmcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIEZhbGxiYWNrIHRvIG9yZGluYXJ5IGFycmF5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgZGVzdFtkZXN0X29mZnMgKyBpXSA9IHNyY1tzcmNfb2ZmcyArIGldO1xuICAgIH1cbiAgfSxcbiAgLy8gSm9pbiBhcnJheSBvZiBjaHVua3MgdG8gc2luZ2xlIGFycmF5LlxuICBmbGF0dGVuQ2h1bmtzOiBmdW5jdGlvbiAoY2h1bmtzKSB7XG4gICAgdmFyIGksIGwsIGxlbiwgcG9zLCBjaHVuaywgcmVzdWx0O1xuXG4gICAgLy8gY2FsY3VsYXRlIGRhdGEgbGVuZ3RoXG4gICAgbGVuID0gMDtcbiAgICBmb3IgKGkgPSAwLCBsID0gY2h1bmtzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgbGVuICs9IGNodW5rc1tpXS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLy8gam9pbiBjaHVua3NcbiAgICByZXN1bHQgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIHBvcyA9IDA7XG4gICAgZm9yIChpID0gMCwgbCA9IGNodW5rcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNodW5rID0gY2h1bmtzW2ldO1xuICAgICAgcmVzdWx0LnNldChjaHVuaywgcG9zKTtcbiAgICAgIHBvcyArPSBjaHVuay5sZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcblxudmFyIGZuVW50eXBlZCA9IHtcbiAgYXJyYXlTZXQ6IGZ1bmN0aW9uIChkZXN0LCBzcmMsIHNyY19vZmZzLCBsZW4sIGRlc3Rfb2Zmcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGRlc3RbZGVzdF9vZmZzICsgaV0gPSBzcmNbc3JjX29mZnMgKyBpXTtcbiAgICB9XG4gIH0sXG4gIC8vIEpvaW4gYXJyYXkgb2YgY2h1bmtzIHRvIHNpbmdsZSBhcnJheS5cbiAgZmxhdHRlbkNodW5rczogZnVuY3Rpb24gKGNodW5rcykge1xuICAgIHJldHVybiBbXS5jb25jYXQuYXBwbHkoW10sIGNodW5rcyk7XG4gIH1cbn07XG5cblxuLy8gRW5hYmxlL0Rpc2FibGUgdHlwZWQgYXJyYXlzIHVzZSwgZm9yIHRlc3Rpbmdcbi8vXG5leHBvcnRzLnNldFR5cGVkID0gZnVuY3Rpb24gKG9uKSB7XG4gIGlmIChvbikge1xuICAgIGV4cG9ydHMuQnVmOCAgPSBVaW50OEFycmF5O1xuICAgIGV4cG9ydHMuQnVmMTYgPSBVaW50MTZBcnJheTtcbiAgICBleHBvcnRzLkJ1ZjMyID0gSW50MzJBcnJheTtcbiAgICBleHBvcnRzLmFzc2lnbihleHBvcnRzLCBmblR5cGVkKTtcbiAgfSBlbHNlIHtcbiAgICBleHBvcnRzLkJ1ZjggID0gQXJyYXk7XG4gICAgZXhwb3J0cy5CdWYxNiA9IEFycmF5O1xuICAgIGV4cG9ydHMuQnVmMzIgPSBBcnJheTtcbiAgICBleHBvcnRzLmFzc2lnbihleHBvcnRzLCBmblVudHlwZWQpO1xuICB9XG59O1xuXG5leHBvcnRzLnNldFR5cGVkKFRZUEVEX09LKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gTm90ZTogYWRsZXIzMiB0YWtlcyAxMiUgZm9yIGxldmVsIDAgYW5kIDIlIGZvciBsZXZlbCA2LlxuLy8gSXQgaXNuJ3Qgd29ydGggaXQgdG8gbWFrZSBhZGRpdGlvbmFsIG9wdGltaXphdGlvbnMgYXMgaW4gb3JpZ2luYWwuXG4vLyBTbWFsbCBzaXplIGlzIHByZWZlcmFibGUuXG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxuZnVuY3Rpb24gYWRsZXIzMihhZGxlciwgYnVmLCBsZW4sIHBvcykge1xuICB2YXIgczEgPSAoYWRsZXIgJiAweGZmZmYpIHwwLFxuICAgICAgczIgPSAoKGFkbGVyID4+PiAxNikgJiAweGZmZmYpIHwwLFxuICAgICAgbiA9IDA7XG5cbiAgd2hpbGUgKGxlbiAhPT0gMCkge1xuICAgIC8vIFNldCBsaW1pdCB+IHR3aWNlIGxlc3MgdGhhbiA1NTUyLCB0byBrZWVwXG4gICAgLy8gczIgaW4gMzEtYml0cywgYmVjYXVzZSB3ZSBmb3JjZSBzaWduZWQgaW50cy5cbiAgICAvLyBpbiBvdGhlciBjYXNlICU9IHdpbGwgZmFpbC5cbiAgICBuID0gbGVuID4gMjAwMCA/IDIwMDAgOiBsZW47XG4gICAgbGVuIC09IG47XG5cbiAgICBkbyB7XG4gICAgICBzMSA9IChzMSArIGJ1Zltwb3MrK10pIHwwO1xuICAgICAgczIgPSAoczIgKyBzMSkgfDA7XG4gICAgfSB3aGlsZSAoLS1uKTtcblxuICAgIHMxICU9IDY1NTIxO1xuICAgIHMyICU9IDY1NTIxO1xuICB9XG5cbiAgcmV0dXJuIChzMSB8IChzMiA8PCAxNikpIHwwO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gYWRsZXIzMjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcblxuICAvKiBBbGxvd2VkIGZsdXNoIHZhbHVlczsgc2VlIGRlZmxhdGUoKSBhbmQgaW5mbGF0ZSgpIGJlbG93IGZvciBkZXRhaWxzICovXG4gIFpfTk9fRkxVU0g6ICAgICAgICAgMCxcbiAgWl9QQVJUSUFMX0ZMVVNIOiAgICAxLFxuICBaX1NZTkNfRkxVU0g6ICAgICAgIDIsXG4gIFpfRlVMTF9GTFVTSDogICAgICAgMyxcbiAgWl9GSU5JU0g6ICAgICAgICAgICA0LFxuICBaX0JMT0NLOiAgICAgICAgICAgIDUsXG4gIFpfVFJFRVM6ICAgICAgICAgICAgNixcblxuICAvKiBSZXR1cm4gY29kZXMgZm9yIHRoZSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGZ1bmN0aW9ucy4gTmVnYXRpdmUgdmFsdWVzXG4gICogYXJlIGVycm9ycywgcG9zaXRpdmUgdmFsdWVzIGFyZSB1c2VkIGZvciBzcGVjaWFsIGJ1dCBub3JtYWwgZXZlbnRzLlxuICAqL1xuICBaX09LOiAgICAgICAgICAgICAgIDAsXG4gIFpfU1RSRUFNX0VORDogICAgICAgMSxcbiAgWl9ORUVEX0RJQ1Q6ICAgICAgICAyLFxuICBaX0VSUk5POiAgICAgICAgICAgLTEsXG4gIFpfU1RSRUFNX0VSUk9SOiAgICAtMixcbiAgWl9EQVRBX0VSUk9SOiAgICAgIC0zLFxuICAvL1pfTUVNX0VSUk9SOiAgICAgLTQsXG4gIFpfQlVGX0VSUk9SOiAgICAgICAtNSxcbiAgLy9aX1ZFUlNJT05fRVJST1I6IC02LFxuXG4gIC8qIGNvbXByZXNzaW9uIGxldmVscyAqL1xuICBaX05PX0NPTVBSRVNTSU9OOiAgICAgICAgIDAsXG4gIFpfQkVTVF9TUEVFRDogICAgICAgICAgICAgMSxcbiAgWl9CRVNUX0NPTVBSRVNTSU9OOiAgICAgICA5LFxuICBaX0RFRkFVTFRfQ09NUFJFU1NJT046ICAgLTEsXG5cblxuICBaX0ZJTFRFUkVEOiAgICAgICAgICAgICAgIDEsXG4gIFpfSFVGRk1BTl9PTkxZOiAgICAgICAgICAgMixcbiAgWl9STEU6ICAgICAgICAgICAgICAgICAgICAzLFxuICBaX0ZJWEVEOiAgICAgICAgICAgICAgICAgIDQsXG4gIFpfREVGQVVMVF9TVFJBVEVHWTogICAgICAgMCxcblxuICAvKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovXG4gIFpfQklOQVJZOiAgICAgICAgICAgICAgICAgMCxcbiAgWl9URVhUOiAgICAgICAgICAgICAgICAgICAxLFxuICAvL1pfQVNDSUk6ICAgICAgICAgICAgICAgIDEsIC8vID0gWl9URVhUIChkZXByZWNhdGVkKVxuICBaX1VOS05PV046ICAgICAgICAgICAgICAgIDIsXG5cbiAgLyogVGhlIGRlZmxhdGUgY29tcHJlc3Npb24gbWV0aG9kICovXG4gIFpfREVGTEFURUQ6ICAgICAgICAgICAgICAgOFxuICAvL1pfTlVMTDogICAgICAgICAgICAgICAgIG51bGwgLy8gVXNlIC0xIG9yIG51bGwgaW5saW5lLCBkZXBlbmRpbmcgb24gdmFyIHR5cGVcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIE5vdGU6IHdlIGNhbid0IGdldCBzaWduaWZpY2FudCBzcGVlZCBib29zdCBoZXJlLlxuLy8gU28gd3JpdGUgY29kZSB0byBtaW5pbWl6ZSBzaXplIC0gbm8gcHJlZ2VuZXJhdGVkIHRhYmxlc1xuLy8gYW5kIGFycmF5IHRvb2xzIGRlcGVuZGVuY2llcy5cblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG4vLyBVc2Ugb3JkaW5hcnkgYXJyYXksIHNpbmNlIHVudHlwZWQgbWFrZXMgbm8gYm9vc3QgaGVyZVxuZnVuY3Rpb24gbWFrZVRhYmxlKCkge1xuICB2YXIgYywgdGFibGUgPSBbXTtcblxuICBmb3IgKHZhciBuID0gMDsgbiA8IDI1NjsgbisrKSB7XG4gICAgYyA9IG47XG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCA4OyBrKyspIHtcbiAgICAgIGMgPSAoKGMgJiAxKSA/ICgweEVEQjg4MzIwIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG4gICAgfVxuICAgIHRhYmxlW25dID0gYztcbiAgfVxuXG4gIHJldHVybiB0YWJsZTtcbn1cblxuLy8gQ3JlYXRlIHRhYmxlIG9uIGxvYWQuIEp1c3QgMjU1IHNpZ25lZCBsb25ncy4gTm90IGEgcHJvYmxlbS5cbnZhciBjcmNUYWJsZSA9IG1ha2VUYWJsZSgpO1xuXG5cbmZ1bmN0aW9uIGNyYzMyKGNyYywgYnVmLCBsZW4sIHBvcykge1xuICB2YXIgdCA9IGNyY1RhYmxlLFxuICAgICAgZW5kID0gcG9zICsgbGVuO1xuXG4gIGNyYyBePSAtMTtcblxuICBmb3IgKHZhciBpID0gcG9zOyBpIDwgZW5kOyBpKyspIHtcbiAgICBjcmMgPSAoY3JjID4+PiA4KSBeIHRbKGNyYyBeIGJ1ZltpXSkgJiAweEZGXTtcbiAgfVxuXG4gIHJldHVybiAoY3JjIF4gKC0xKSk7IC8vID4+PiAwO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gY3JjMzI7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxudmFyIHV0aWxzICAgPSByZXF1aXJlKCcuLi91dGlscy9jb21tb24nKTtcbnZhciB0cmVlcyAgID0gcmVxdWlyZSgnLi90cmVlcycpO1xudmFyIGFkbGVyMzIgPSByZXF1aXJlKCcuL2FkbGVyMzInKTtcbnZhciBjcmMzMiAgID0gcmVxdWlyZSgnLi9jcmMzMicpO1xudmFyIG1zZyAgICAgPSByZXF1aXJlKCcuL21lc3NhZ2VzJyk7XG5cbi8qIFB1YmxpYyBjb25zdGFudHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cbi8qIEFsbG93ZWQgZmx1c2ggdmFsdWVzOyBzZWUgZGVmbGF0ZSgpIGFuZCBpbmZsYXRlKCkgYmVsb3cgZm9yIGRldGFpbHMgKi9cbnZhciBaX05PX0ZMVVNIICAgICAgPSAwO1xudmFyIFpfUEFSVElBTF9GTFVTSCA9IDE7XG4vL3ZhciBaX1NZTkNfRkxVU0ggICAgPSAyO1xudmFyIFpfRlVMTF9GTFVTSCAgICA9IDM7XG52YXIgWl9GSU5JU0ggICAgICAgID0gNDtcbnZhciBaX0JMT0NLICAgICAgICAgPSA1O1xuLy92YXIgWl9UUkVFUyAgICAgICAgID0gNjtcblxuXG4vKiBSZXR1cm4gY29kZXMgZm9yIHRoZSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGZ1bmN0aW9ucy4gTmVnYXRpdmUgdmFsdWVzXG4gKiBhcmUgZXJyb3JzLCBwb3NpdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgZm9yIHNwZWNpYWwgYnV0IG5vcm1hbCBldmVudHMuXG4gKi9cbnZhciBaX09LICAgICAgICAgICAgPSAwO1xudmFyIFpfU1RSRUFNX0VORCAgICA9IDE7XG4vL3ZhciBaX05FRURfRElDVCAgICAgPSAyO1xuLy92YXIgWl9FUlJOTyAgICAgICAgID0gLTE7XG52YXIgWl9TVFJFQU1fRVJST1IgID0gLTI7XG52YXIgWl9EQVRBX0VSUk9SICAgID0gLTM7XG4vL3ZhciBaX01FTV9FUlJPUiAgICAgPSAtNDtcbnZhciBaX0JVRl9FUlJPUiAgICAgPSAtNTtcbi8vdmFyIFpfVkVSU0lPTl9FUlJPUiA9IC02O1xuXG5cbi8qIGNvbXByZXNzaW9uIGxldmVscyAqL1xuLy92YXIgWl9OT19DT01QUkVTU0lPTiAgICAgID0gMDtcbi8vdmFyIFpfQkVTVF9TUEVFRCAgICAgICAgICA9IDE7XG4vL3ZhciBaX0JFU1RfQ09NUFJFU1NJT04gICAgPSA5O1xudmFyIFpfREVGQVVMVF9DT01QUkVTU0lPTiA9IC0xO1xuXG5cbnZhciBaX0ZJTFRFUkVEICAgICAgICAgICAgPSAxO1xudmFyIFpfSFVGRk1BTl9PTkxZICAgICAgICA9IDI7XG52YXIgWl9STEUgICAgICAgICAgICAgICAgID0gMztcbnZhciBaX0ZJWEVEICAgICAgICAgICAgICAgPSA0O1xudmFyIFpfREVGQVVMVF9TVFJBVEVHWSAgICA9IDA7XG5cbi8qIFBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgZGF0YV90eXBlIGZpZWxkICh0aG91Z2ggc2VlIGluZmxhdGUoKSkgKi9cbi8vdmFyIFpfQklOQVJZICAgICAgICAgICAgICA9IDA7XG4vL3ZhciBaX1RFWFQgICAgICAgICAgICAgICAgPSAxO1xuLy92YXIgWl9BU0NJSSAgICAgICAgICAgICAgID0gMTsgLy8gPSBaX1RFWFRcbnZhciBaX1VOS05PV04gICAgICAgICAgICAgPSAyO1xuXG5cbi8qIFRoZSBkZWZsYXRlIGNvbXByZXNzaW9uIG1ldGhvZCAqL1xudmFyIFpfREVGTEFURUQgID0gODtcblxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG52YXIgTUFYX01FTV9MRVZFTCA9IDk7XG4vKiBNYXhpbXVtIHZhbHVlIGZvciBtZW1MZXZlbCBpbiBkZWZsYXRlSW5pdDIgKi9cbnZhciBNQVhfV0JJVFMgPSAxNTtcbi8qIDMySyBMWjc3IHdpbmRvdyAqL1xudmFyIERFRl9NRU1fTEVWRUwgPSA4O1xuXG5cbnZhciBMRU5HVEhfQ09ERVMgID0gMjk7XG4vKiBudW1iZXIgb2YgbGVuZ3RoIGNvZGVzLCBub3QgY291bnRpbmcgdGhlIHNwZWNpYWwgRU5EX0JMT0NLIGNvZGUgKi9cbnZhciBMSVRFUkFMUyAgICAgID0gMjU2O1xuLyogbnVtYmVyIG9mIGxpdGVyYWwgYnl0ZXMgMC4uMjU1ICovXG52YXIgTF9DT0RFUyAgICAgICA9IExJVEVSQUxTICsgMSArIExFTkdUSF9DT0RFUztcbi8qIG51bWJlciBvZiBMaXRlcmFsIG9yIExlbmd0aCBjb2RlcywgaW5jbHVkaW5nIHRoZSBFTkRfQkxPQ0sgY29kZSAqL1xudmFyIERfQ09ERVMgICAgICAgPSAzMDtcbi8qIG51bWJlciBvZiBkaXN0YW5jZSBjb2RlcyAqL1xudmFyIEJMX0NPREVTICAgICAgPSAxOTtcbi8qIG51bWJlciBvZiBjb2RlcyB1c2VkIHRvIHRyYW5zZmVyIHRoZSBiaXQgbGVuZ3RocyAqL1xudmFyIEhFQVBfU0laRSAgICAgPSAyICogTF9DT0RFUyArIDE7XG4vKiBtYXhpbXVtIGhlYXAgc2l6ZSAqL1xudmFyIE1BWF9CSVRTICA9IDE1O1xuLyogQWxsIGNvZGVzIG11c3Qgbm90IGV4Y2VlZCBNQVhfQklUUyBiaXRzICovXG5cbnZhciBNSU5fTUFUQ0ggPSAzO1xudmFyIE1BWF9NQVRDSCA9IDI1ODtcbnZhciBNSU5fTE9PS0FIRUFEID0gKE1BWF9NQVRDSCArIE1JTl9NQVRDSCArIDEpO1xuXG52YXIgUFJFU0VUX0RJQ1QgPSAweDIwO1xuXG52YXIgSU5JVF9TVEFURSA9IDQyO1xudmFyIEVYVFJBX1NUQVRFID0gNjk7XG52YXIgTkFNRV9TVEFURSA9IDczO1xudmFyIENPTU1FTlRfU1RBVEUgPSA5MTtcbnZhciBIQ1JDX1NUQVRFID0gMTAzO1xudmFyIEJVU1lfU1RBVEUgPSAxMTM7XG52YXIgRklOSVNIX1NUQVRFID0gNjY2O1xuXG52YXIgQlNfTkVFRF9NT1JFICAgICAgPSAxOyAvKiBibG9jayBub3QgY29tcGxldGVkLCBuZWVkIG1vcmUgaW5wdXQgb3IgbW9yZSBvdXRwdXQgKi9cbnZhciBCU19CTE9DS19ET05FICAgICA9IDI7IC8qIGJsb2NrIGZsdXNoIHBlcmZvcm1lZCAqL1xudmFyIEJTX0ZJTklTSF9TVEFSVEVEID0gMzsgLyogZmluaXNoIHN0YXJ0ZWQsIG5lZWQgb25seSBtb3JlIG91dHB1dCBhdCBuZXh0IGRlZmxhdGUgKi9cbnZhciBCU19GSU5JU0hfRE9ORSAgICA9IDQ7IC8qIGZpbmlzaCBkb25lLCBhY2NlcHQgbm8gbW9yZSBpbnB1dCBvciBvdXRwdXQgKi9cblxudmFyIE9TX0NPREUgPSAweDAzOyAvLyBVbml4IDopIC4gRG9uJ3QgZGV0ZWN0LCB1c2UgdGhpcyBkZWZhdWx0LlxuXG5mdW5jdGlvbiBlcnIoc3RybSwgZXJyb3JDb2RlKSB7XG4gIHN0cm0ubXNnID0gbXNnW2Vycm9yQ29kZV07XG4gIHJldHVybiBlcnJvckNvZGU7XG59XG5cbmZ1bmN0aW9uIHJhbmsoZikge1xuICByZXR1cm4gKChmKSA8PCAxKSAtICgoZikgPiA0ID8gOSA6IDApO1xufVxuXG5mdW5jdGlvbiB6ZXJvKGJ1ZikgeyB2YXIgbGVuID0gYnVmLmxlbmd0aDsgd2hpbGUgKC0tbGVuID49IDApIHsgYnVmW2xlbl0gPSAwOyB9IH1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBGbHVzaCBhcyBtdWNoIHBlbmRpbmcgb3V0cHV0IGFzIHBvc3NpYmxlLiBBbGwgZGVmbGF0ZSgpIG91dHB1dCBnb2VzXG4gKiB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gc28gc29tZSBhcHBsaWNhdGlvbnMgbWF5IHdpc2ggdG8gbW9kaWZ5IGl0XG4gKiB0byBhdm9pZCBhbGxvY2F0aW5nIGEgbGFyZ2Ugc3RybS0+b3V0cHV0IGJ1ZmZlciBhbmQgY29weWluZyBpbnRvIGl0LlxuICogKFNlZSBhbHNvIHJlYWRfYnVmKCkpLlxuICovXG5mdW5jdGlvbiBmbHVzaF9wZW5kaW5nKHN0cm0pIHtcbiAgdmFyIHMgPSBzdHJtLnN0YXRlO1xuXG4gIC8vX3RyX2ZsdXNoX2JpdHMocyk7XG4gIHZhciBsZW4gPSBzLnBlbmRpbmc7XG4gIGlmIChsZW4gPiBzdHJtLmF2YWlsX291dCkge1xuICAgIGxlbiA9IHN0cm0uYXZhaWxfb3V0O1xuICB9XG4gIGlmIChsZW4gPT09IDApIHsgcmV0dXJuOyB9XG5cbiAgdXRpbHMuYXJyYXlTZXQoc3RybS5vdXRwdXQsIHMucGVuZGluZ19idWYsIHMucGVuZGluZ19vdXQsIGxlbiwgc3RybS5uZXh0X291dCk7XG4gIHN0cm0ubmV4dF9vdXQgKz0gbGVuO1xuICBzLnBlbmRpbmdfb3V0ICs9IGxlbjtcbiAgc3RybS50b3RhbF9vdXQgKz0gbGVuO1xuICBzdHJtLmF2YWlsX291dCAtPSBsZW47XG4gIHMucGVuZGluZyAtPSBsZW47XG4gIGlmIChzLnBlbmRpbmcgPT09IDApIHtcbiAgICBzLnBlbmRpbmdfb3V0ID0gMDtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGZsdXNoX2Jsb2NrX29ubHkocywgbGFzdCkge1xuICB0cmVlcy5fdHJfZmx1c2hfYmxvY2socywgKHMuYmxvY2tfc3RhcnQgPj0gMCA/IHMuYmxvY2tfc3RhcnQgOiAtMSksIHMuc3Ryc3RhcnQgLSBzLmJsb2NrX3N0YXJ0LCBsYXN0KTtcbiAgcy5ibG9ja19zdGFydCA9IHMuc3Ryc3RhcnQ7XG4gIGZsdXNoX3BlbmRpbmcocy5zdHJtKTtcbn1cblxuXG5mdW5jdGlvbiBwdXRfYnl0ZShzLCBiKSB7XG4gIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gYjtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBQdXQgYSBzaG9ydCBpbiB0aGUgcGVuZGluZyBidWZmZXIuIFRoZSAxNi1iaXQgdmFsdWUgaXMgcHV0IGluIE1TQiBvcmRlci5cbiAqIElOIGFzc2VydGlvbjogdGhlIHN0cmVhbSBzdGF0ZSBpcyBjb3JyZWN0IGFuZCB0aGVyZSBpcyBlbm91Z2ggcm9vbSBpblxuICogcGVuZGluZ19idWYuXG4gKi9cbmZ1bmN0aW9uIHB1dFNob3J0TVNCKHMsIGIpIHtcbi8vICBwdXRfYnl0ZShzLCAoQnl0ZSkoYiA+PiA4KSk7XG4vLyAgcHV0X2J5dGUocywgKEJ5dGUpKGIgJiAweGZmKSk7XG4gIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gKGIgPj4+IDgpICYgMHhmZjtcbiAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSBiICYgMHhmZjtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFJlYWQgYSBuZXcgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnQgaW5wdXQgc3RyZWFtLCB1cGRhdGUgdGhlIGFkbGVyMzJcbiAqIGFuZCB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gIEFsbCBkZWZsYXRlKCkgaW5wdXQgZ29lcyB0aHJvdWdoXG4gKiB0aGlzIGZ1bmN0aW9uIHNvIHNvbWUgYXBwbGljYXRpb25zIG1heSB3aXNoIHRvIG1vZGlmeSBpdCB0byBhdm9pZFxuICogYWxsb2NhdGluZyBhIGxhcmdlIHN0cm0tPmlucHV0IGJ1ZmZlciBhbmQgY29weWluZyBmcm9tIGl0LlxuICogKFNlZSBhbHNvIGZsdXNoX3BlbmRpbmcoKSkuXG4gKi9cbmZ1bmN0aW9uIHJlYWRfYnVmKHN0cm0sIGJ1Ziwgc3RhcnQsIHNpemUpIHtcbiAgdmFyIGxlbiA9IHN0cm0uYXZhaWxfaW47XG5cbiAgaWYgKGxlbiA+IHNpemUpIHsgbGVuID0gc2l6ZTsgfVxuICBpZiAobGVuID09PSAwKSB7IHJldHVybiAwOyB9XG5cbiAgc3RybS5hdmFpbF9pbiAtPSBsZW47XG5cbiAgLy8gem1lbWNweShidWYsIHN0cm0tPm5leHRfaW4sIGxlbik7XG4gIHV0aWxzLmFycmF5U2V0KGJ1Ziwgc3RybS5pbnB1dCwgc3RybS5uZXh0X2luLCBsZW4sIHN0YXJ0KTtcbiAgaWYgKHN0cm0uc3RhdGUud3JhcCA9PT0gMSkge1xuICAgIHN0cm0uYWRsZXIgPSBhZGxlcjMyKHN0cm0uYWRsZXIsIGJ1ZiwgbGVuLCBzdGFydCk7XG4gIH1cblxuICBlbHNlIGlmIChzdHJtLnN0YXRlLndyYXAgPT09IDIpIHtcbiAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgYnVmLCBsZW4sIHN0YXJ0KTtcbiAgfVxuXG4gIHN0cm0ubmV4dF9pbiArPSBsZW47XG4gIHN0cm0udG90YWxfaW4gKz0gbGVuO1xuXG4gIHJldHVybiBsZW47XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZXQgbWF0Y2hfc3RhcnQgdG8gdGhlIGxvbmdlc3QgbWF0Y2ggc3RhcnRpbmcgYXQgdGhlIGdpdmVuIHN0cmluZyBhbmRcbiAqIHJldHVybiBpdHMgbGVuZ3RoLiBNYXRjaGVzIHNob3J0ZXIgb3IgZXF1YWwgdG8gcHJldl9sZW5ndGggYXJlIGRpc2NhcmRlZCxcbiAqIGluIHdoaWNoIGNhc2UgdGhlIHJlc3VsdCBpcyBlcXVhbCB0byBwcmV2X2xlbmd0aCBhbmQgbWF0Y2hfc3RhcnQgaXNcbiAqIGdhcmJhZ2UuXG4gKiBJTiBhc3NlcnRpb25zOiBjdXJfbWF0Y2ggaXMgdGhlIGhlYWQgb2YgdGhlIGhhc2ggY2hhaW4gZm9yIHRoZSBjdXJyZW50XG4gKiAgIHN0cmluZyAoc3Ryc3RhcnQpIGFuZCBpdHMgZGlzdGFuY2UgaXMgPD0gTUFYX0RJU1QsIGFuZCBwcmV2X2xlbmd0aCA+PSAxXG4gKiBPVVQgYXNzZXJ0aW9uOiB0aGUgbWF0Y2ggbGVuZ3RoIGlzIG5vdCBncmVhdGVyIHRoYW4gcy0+bG9va2FoZWFkLlxuICovXG5mdW5jdGlvbiBsb25nZXN0X21hdGNoKHMsIGN1cl9tYXRjaCkge1xuICB2YXIgY2hhaW5fbGVuZ3RoID0gcy5tYXhfY2hhaW5fbGVuZ3RoOyAgICAgIC8qIG1heCBoYXNoIGNoYWluIGxlbmd0aCAqL1xuICB2YXIgc2NhbiA9IHMuc3Ryc3RhcnQ7IC8qIGN1cnJlbnQgc3RyaW5nICovXG4gIHZhciBtYXRjaDsgICAgICAgICAgICAgICAgICAgICAgIC8qIG1hdGNoZWQgc3RyaW5nICovXG4gIHZhciBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgbWF0Y2ggKi9cbiAgdmFyIGJlc3RfbGVuID0gcy5wcmV2X2xlbmd0aDsgICAgICAgICAgICAgIC8qIGJlc3QgbWF0Y2ggbGVuZ3RoIHNvIGZhciAqL1xuICB2YXIgbmljZV9tYXRjaCA9IHMubmljZV9tYXRjaDsgICAgICAgICAgICAgLyogc3RvcCBpZiBtYXRjaCBsb25nIGVub3VnaCAqL1xuICB2YXIgbGltaXQgPSAocy5zdHJzdGFydCA+IChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpKSA/XG4gICAgICBzLnN0cnN0YXJ0IC0gKHMud19zaXplIC0gTUlOX0xPT0tBSEVBRCkgOiAwLypOSUwqLztcblxuICB2YXIgX3dpbiA9IHMud2luZG93OyAvLyBzaG9ydGN1dFxuXG4gIHZhciB3bWFzayA9IHMud19tYXNrO1xuICB2YXIgcHJldiAgPSBzLnByZXY7XG5cbiAgLyogU3RvcCB3aGVuIGN1cl9tYXRjaCBiZWNvbWVzIDw9IGxpbWl0LiBUbyBzaW1wbGlmeSB0aGUgY29kZSxcbiAgICogd2UgcHJldmVudCBtYXRjaGVzIHdpdGggdGhlIHN0cmluZyBvZiB3aW5kb3cgaW5kZXggMC5cbiAgICovXG5cbiAgdmFyIHN0cmVuZCA9IHMuc3Ryc3RhcnQgKyBNQVhfTUFUQ0g7XG4gIHZhciBzY2FuX2VuZDEgID0gX3dpbltzY2FuICsgYmVzdF9sZW4gLSAxXTtcbiAgdmFyIHNjYW5fZW5kICAgPSBfd2luW3NjYW4gKyBiZXN0X2xlbl07XG5cbiAgLyogVGhlIGNvZGUgaXMgb3B0aW1pemVkIGZvciBIQVNIX0JJVFMgPj0gOCBhbmQgTUFYX01BVENILTIgbXVsdGlwbGUgb2YgMTYuXG4gICAqIEl0IGlzIGVhc3kgdG8gZ2V0IHJpZCBvZiB0aGlzIG9wdGltaXphdGlvbiBpZiBuZWNlc3NhcnkuXG4gICAqL1xuICAvLyBBc3NlcnQocy0+aGFzaF9iaXRzID49IDggJiYgTUFYX01BVENIID09IDI1OCwgXCJDb2RlIHRvbyBjbGV2ZXJcIik7XG5cbiAgLyogRG8gbm90IHdhc3RlIHRvbyBtdWNoIHRpbWUgaWYgd2UgYWxyZWFkeSBoYXZlIGEgZ29vZCBtYXRjaDogKi9cbiAgaWYgKHMucHJldl9sZW5ndGggPj0gcy5nb29kX21hdGNoKSB7XG4gICAgY2hhaW5fbGVuZ3RoID4+PSAyO1xuICB9XG4gIC8qIERvIG5vdCBsb29rIGZvciBtYXRjaGVzIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBpbnB1dC4gVGhpcyBpcyBuZWNlc3NhcnlcbiAgICogdG8gbWFrZSBkZWZsYXRlIGRldGVybWluaXN0aWMuXG4gICAqL1xuICBpZiAobmljZV9tYXRjaCA+IHMubG9va2FoZWFkKSB7IG5pY2VfbWF0Y2ggPSBzLmxvb2thaGVhZDsgfVxuXG4gIC8vIEFzc2VydCgodWxnKXMtPnN0cnN0YXJ0IDw9IHMtPndpbmRvd19zaXplLU1JTl9MT09LQUhFQUQsIFwibmVlZCBsb29rYWhlYWRcIik7XG5cbiAgZG8ge1xuICAgIC8vIEFzc2VydChjdXJfbWF0Y2ggPCBzLT5zdHJzdGFydCwgXCJubyBmdXR1cmVcIik7XG4gICAgbWF0Y2ggPSBjdXJfbWF0Y2g7XG5cbiAgICAvKiBTa2lwIHRvIG5leHQgbWF0Y2ggaWYgdGhlIG1hdGNoIGxlbmd0aCBjYW5ub3QgaW5jcmVhc2VcbiAgICAgKiBvciBpZiB0aGUgbWF0Y2ggbGVuZ3RoIGlzIGxlc3MgdGhhbiAyLiAgTm90ZSB0aGF0IHRoZSBjaGVja3MgYmVsb3dcbiAgICAgKiBmb3IgaW5zdWZmaWNpZW50IGxvb2thaGVhZCBvbmx5IG9jY3VyIG9jY2FzaW9uYWxseSBmb3IgcGVyZm9ybWFuY2VcbiAgICAgKiByZWFzb25zLiAgVGhlcmVmb3JlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHdpbGwgYmUgYWNjZXNzZWQsIGFuZFxuICAgICAqIGNvbmRpdGlvbmFsIGp1bXBzIHdpbGwgYmUgbWFkZSB0aGF0IGRlcGVuZCBvbiB0aG9zZSB2YWx1ZXMuXG4gICAgICogSG93ZXZlciB0aGUgbGVuZ3RoIG9mIHRoZSBtYXRjaCBpcyBsaW1pdGVkIHRvIHRoZSBsb29rYWhlYWQsIHNvXG4gICAgICogdGhlIG91dHB1dCBvZiBkZWZsYXRlIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgdW5pbml0aWFsaXplZCB2YWx1ZXMuXG4gICAgICovXG5cbiAgICBpZiAoX3dpblttYXRjaCArIGJlc3RfbGVuXSAgICAgIT09IHNjYW5fZW5kICB8fFxuICAgICAgICBfd2luW21hdGNoICsgYmVzdF9sZW4gLSAxXSAhPT0gc2Nhbl9lbmQxIHx8XG4gICAgICAgIF93aW5bbWF0Y2hdICAgICAgICAgICAgICAgICE9PSBfd2luW3NjYW5dIHx8XG4gICAgICAgIF93aW5bKyttYXRjaF0gICAgICAgICAgICAgICE9PSBfd2luW3NjYW4gKyAxXSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyogVGhlIGNoZWNrIGF0IGJlc3RfbGVuLTEgY2FuIGJlIHJlbW92ZWQgYmVjYXVzZSBpdCB3aWxsIGJlIG1hZGVcbiAgICAgKiBhZ2FpbiBsYXRlci4gKFRoaXMgaGV1cmlzdGljIGlzIG5vdCBhbHdheXMgYSB3aW4uKVxuICAgICAqIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY29tcGFyZSBzY2FuWzJdIGFuZCBtYXRjaFsyXSBzaW5jZSB0aGV5XG4gICAgICogYXJlIGFsd2F5cyBlcXVhbCB3aGVuIHRoZSBvdGhlciBieXRlcyBtYXRjaCwgZ2l2ZW4gdGhhdFxuICAgICAqIHRoZSBoYXNoIGtleXMgYXJlIGVxdWFsIGFuZCB0aGF0IEhBU0hfQklUUyA+PSA4LlxuICAgICAqL1xuICAgIHNjYW4gKz0gMjtcbiAgICBtYXRjaCsrO1xuICAgIC8vIEFzc2VydCgqc2NhbiA9PSAqbWF0Y2gsIFwibWF0Y2hbMl0/XCIpO1xuXG4gICAgLyogV2UgY2hlY2sgZm9yIGluc3VmZmljaWVudCBsb29rYWhlYWQgb25seSBldmVyeSA4dGggY29tcGFyaXNvbjtcbiAgICAgKiB0aGUgMjU2dGggY2hlY2sgd2lsbCBiZSBtYWRlIGF0IHN0cnN0YXJ0KzI1OC5cbiAgICAgKi9cbiAgICBkbyB7XG4gICAgICAvKmpzaGludCBub2VtcHR5OmZhbHNlKi9cbiAgICB9IHdoaWxlIChfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmXG4gICAgICAgICAgICAgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmIF93aW5bKytzY2FuXSA9PT0gX3dpblsrK21hdGNoXSAmJlxuICAgICAgICAgICAgIF93aW5bKytzY2FuXSA9PT0gX3dpblsrK21hdGNoXSAmJiBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiZcbiAgICAgICAgICAgICBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmXG4gICAgICAgICAgICAgc2NhbiA8IHN0cmVuZCk7XG5cbiAgICAvLyBBc3NlcnQoc2NhbiA8PSBzLT53aW5kb3crKHVuc2lnbmVkKShzLT53aW5kb3dfc2l6ZS0xKSwgXCJ3aWxkIHNjYW5cIik7XG5cbiAgICBsZW4gPSBNQVhfTUFUQ0ggLSAoc3RyZW5kIC0gc2Nhbik7XG4gICAgc2NhbiA9IHN0cmVuZCAtIE1BWF9NQVRDSDtcblxuICAgIGlmIChsZW4gPiBiZXN0X2xlbikge1xuICAgICAgcy5tYXRjaF9zdGFydCA9IGN1cl9tYXRjaDtcbiAgICAgIGJlc3RfbGVuID0gbGVuO1xuICAgICAgaWYgKGxlbiA+PSBuaWNlX21hdGNoKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgc2Nhbl9lbmQxICA9IF93aW5bc2NhbiArIGJlc3RfbGVuIC0gMV07XG4gICAgICBzY2FuX2VuZCAgID0gX3dpbltzY2FuICsgYmVzdF9sZW5dO1xuICAgIH1cbiAgfSB3aGlsZSAoKGN1cl9tYXRjaCA9IHByZXZbY3VyX21hdGNoICYgd21hc2tdKSA+IGxpbWl0ICYmIC0tY2hhaW5fbGVuZ3RoICE9PSAwKTtcblxuICBpZiAoYmVzdF9sZW4gPD0gcy5sb29rYWhlYWQpIHtcbiAgICByZXR1cm4gYmVzdF9sZW47XG4gIH1cbiAgcmV0dXJuIHMubG9va2FoZWFkO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogRmlsbCB0aGUgd2luZG93IHdoZW4gdGhlIGxvb2thaGVhZCBiZWNvbWVzIGluc3VmZmljaWVudC5cbiAqIFVwZGF0ZXMgc3Ryc3RhcnQgYW5kIGxvb2thaGVhZC5cbiAqXG4gKiBJTiBhc3NlcnRpb246IGxvb2thaGVhZCA8IE1JTl9MT09LQUhFQURcbiAqIE9VVCBhc3NlcnRpb25zOiBzdHJzdGFydCA8PSB3aW5kb3dfc2l6ZS1NSU5fTE9PS0FIRUFEXG4gKiAgICBBdCBsZWFzdCBvbmUgYnl0ZSBoYXMgYmVlbiByZWFkLCBvciBhdmFpbF9pbiA9PSAwOyByZWFkcyBhcmVcbiAqICAgIHBlcmZvcm1lZCBmb3IgYXQgbGVhc3QgdHdvIGJ5dGVzIChyZXF1aXJlZCBmb3IgdGhlIHppcCB0cmFuc2xhdGVfZW9sXG4gKiAgICBvcHRpb24gLS0gbm90IHN1cHBvcnRlZCBoZXJlKS5cbiAqL1xuZnVuY3Rpb24gZmlsbF93aW5kb3cocykge1xuICB2YXIgX3dfc2l6ZSA9IHMud19zaXplO1xuICB2YXIgcCwgbiwgbSwgbW9yZSwgc3RyO1xuXG4gIC8vQXNzZXJ0KHMtPmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQsIFwiYWxyZWFkeSBlbm91Z2ggbG9va2FoZWFkXCIpO1xuXG4gIGRvIHtcbiAgICBtb3JlID0gcy53aW5kb3dfc2l6ZSAtIHMubG9va2FoZWFkIC0gcy5zdHJzdGFydDtcblxuICAgIC8vIEpTIGludHMgaGF2ZSAzMiBiaXQsIGJsb2NrIGJlbG93IG5vdCBuZWVkZWRcbiAgICAvKiBEZWFsIHdpdGggIUAjJCUgNjRLIGxpbWl0OiAqL1xuICAgIC8vaWYgKHNpemVvZihpbnQpIDw9IDIpIHtcbiAgICAvLyAgICBpZiAobW9yZSA9PSAwICYmIHMtPnN0cnN0YXJ0ID09IDAgJiYgcy0+bG9va2FoZWFkID09IDApIHtcbiAgICAvLyAgICAgICAgbW9yZSA9IHdzaXplO1xuICAgIC8vXG4gICAgLy8gIH0gZWxzZSBpZiAobW9yZSA9PSAodW5zaWduZWQpKC0xKSkge1xuICAgIC8vICAgICAgICAvKiBWZXJ5IHVubGlrZWx5LCBidXQgcG9zc2libGUgb24gMTYgYml0IG1hY2hpbmUgaWZcbiAgICAvLyAgICAgICAgICogc3Ryc3RhcnQgPT0gMCAmJiBsb29rYWhlYWQgPT0gMSAoaW5wdXQgZG9uZSBhIGJ5dGUgYXQgdGltZSlcbiAgICAvLyAgICAgICAgICovXG4gICAgLy8gICAgICAgIG1vcmUtLTtcbiAgICAvLyAgICB9XG4gICAgLy99XG5cblxuICAgIC8qIElmIHRoZSB3aW5kb3cgaXMgYWxtb3N0IGZ1bGwgYW5kIHRoZXJlIGlzIGluc3VmZmljaWVudCBsb29rYWhlYWQsXG4gICAgICogbW92ZSB0aGUgdXBwZXIgaGFsZiB0byB0aGUgbG93ZXIgb25lIHRvIG1ha2Ugcm9vbSBpbiB0aGUgdXBwZXIgaGFsZi5cbiAgICAgKi9cbiAgICBpZiAocy5zdHJzdGFydCA+PSBfd19zaXplICsgKF93X3NpemUgLSBNSU5fTE9PS0FIRUFEKSkge1xuXG4gICAgICB1dGlscy5hcnJheVNldChzLndpbmRvdywgcy53aW5kb3csIF93X3NpemUsIF93X3NpemUsIDApO1xuICAgICAgcy5tYXRjaF9zdGFydCAtPSBfd19zaXplO1xuICAgICAgcy5zdHJzdGFydCAtPSBfd19zaXplO1xuICAgICAgLyogd2Ugbm93IGhhdmUgc3Ryc3RhcnQgPj0gTUFYX0RJU1QgKi9cbiAgICAgIHMuYmxvY2tfc3RhcnQgLT0gX3dfc2l6ZTtcblxuICAgICAgLyogU2xpZGUgdGhlIGhhc2ggdGFibGUgKGNvdWxkIGJlIGF2b2lkZWQgd2l0aCAzMiBiaXQgdmFsdWVzXG4gICAgICAgYXQgdGhlIGV4cGVuc2Ugb2YgbWVtb3J5IHVzYWdlKS4gV2Ugc2xpZGUgZXZlbiB3aGVuIGxldmVsID09IDBcbiAgICAgICB0byBrZWVwIHRoZSBoYXNoIHRhYmxlIGNvbnNpc3RlbnQgaWYgd2Ugc3dpdGNoIGJhY2sgdG8gbGV2ZWwgPiAwXG4gICAgICAgbGF0ZXIuIChVc2luZyBsZXZlbCAwIHBlcm1hbmVudGx5IGlzIG5vdCBhbiBvcHRpbWFsIHVzYWdlIG9mXG4gICAgICAgemxpYiwgc28gd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGlzIHBhdGhvbG9naWNhbCBjYXNlLilcbiAgICAgICAqL1xuXG4gICAgICBuID0gcy5oYXNoX3NpemU7XG4gICAgICBwID0gbjtcbiAgICAgIGRvIHtcbiAgICAgICAgbSA9IHMuaGVhZFstLXBdO1xuICAgICAgICBzLmhlYWRbcF0gPSAobSA+PSBfd19zaXplID8gbSAtIF93X3NpemUgOiAwKTtcbiAgICAgIH0gd2hpbGUgKC0tbik7XG5cbiAgICAgIG4gPSBfd19zaXplO1xuICAgICAgcCA9IG47XG4gICAgICBkbyB7XG4gICAgICAgIG0gPSBzLnByZXZbLS1wXTtcbiAgICAgICAgcy5wcmV2W3BdID0gKG0gPj0gX3dfc2l6ZSA/IG0gLSBfd19zaXplIDogMCk7XG4gICAgICAgIC8qIElmIG4gaXMgbm90IG9uIGFueSBoYXNoIGNoYWluLCBwcmV2W25dIGlzIGdhcmJhZ2UgYnV0XG4gICAgICAgICAqIGl0cyB2YWx1ZSB3aWxsIG5ldmVyIGJlIHVzZWQuXG4gICAgICAgICAqL1xuICAgICAgfSB3aGlsZSAoLS1uKTtcblxuICAgICAgbW9yZSArPSBfd19zaXplO1xuICAgIH1cbiAgICBpZiAocy5zdHJtLmF2YWlsX2luID09PSAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvKiBJZiB0aGVyZSB3YXMgbm8gc2xpZGluZzpcbiAgICAgKiAgICBzdHJzdGFydCA8PSBXU0laRStNQVhfRElTVC0xICYmIGxvb2thaGVhZCA8PSBNSU5fTE9PS0FIRUFEIC0gMSAmJlxuICAgICAqICAgIG1vcmUgPT0gd2luZG93X3NpemUgLSBsb29rYWhlYWQgLSBzdHJzdGFydFxuICAgICAqID0+IG1vcmUgPj0gd2luZG93X3NpemUgLSAoTUlOX0xPT0tBSEVBRC0xICsgV1NJWkUgKyBNQVhfRElTVC0xKVxuICAgICAqID0+IG1vcmUgPj0gd2luZG93X3NpemUgLSAyKldTSVpFICsgMlxuICAgICAqIEluIHRoZSBCSUdfTUVNIG9yIE1NQVAgY2FzZSAobm90IHlldCBzdXBwb3J0ZWQpLFxuICAgICAqICAgd2luZG93X3NpemUgPT0gaW5wdXRfc2l6ZSArIE1JTl9MT09LQUhFQUQgICYmXG4gICAgICogICBzdHJzdGFydCArIHMtPmxvb2thaGVhZCA8PSBpbnB1dF9zaXplID0+IG1vcmUgPj0gTUlOX0xPT0tBSEVBRC5cbiAgICAgKiBPdGhlcndpc2UsIHdpbmRvd19zaXplID09IDIqV1NJWkUgc28gbW9yZSA+PSAyLlxuICAgICAqIElmIHRoZXJlIHdhcyBzbGlkaW5nLCBtb3JlID49IFdTSVpFLiBTbyBpbiBhbGwgY2FzZXMsIG1vcmUgPj0gMi5cbiAgICAgKi9cbiAgICAvL0Fzc2VydChtb3JlID49IDIsIFwibW9yZSA8IDJcIik7XG4gICAgbiA9IHJlYWRfYnVmKHMuc3RybSwgcy53aW5kb3csIHMuc3Ryc3RhcnQgKyBzLmxvb2thaGVhZCwgbW9yZSk7XG4gICAgcy5sb29rYWhlYWQgKz0gbjtcblxuICAgIC8qIEluaXRpYWxpemUgdGhlIGhhc2ggdmFsdWUgbm93IHRoYXQgd2UgaGF2ZSBzb21lIGlucHV0OiAqL1xuICAgIGlmIChzLmxvb2thaGVhZCArIHMuaW5zZXJ0ID49IE1JTl9NQVRDSCkge1xuICAgICAgc3RyID0gcy5zdHJzdGFydCAtIHMuaW5zZXJ0O1xuICAgICAgcy5pbnNfaCA9IHMud2luZG93W3N0cl07XG5cbiAgICAgIC8qIFVQREFURV9IQVNIKHMsIHMtPmluc19oLCBzLT53aW5kb3dbc3RyICsgMV0pOyAqL1xuICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbc3RyICsgMV0pICYgcy5oYXNoX21hc2s7XG4vLyNpZiBNSU5fTUFUQ0ggIT0gM1xuLy8gICAgICAgIENhbGwgdXBkYXRlX2hhc2goKSBNSU5fTUFUQ0gtMyBtb3JlIHRpbWVzXG4vLyNlbmRpZlxuICAgICAgd2hpbGUgKHMuaW5zZXJ0KSB7XG4gICAgICAgIC8qIFVQREFURV9IQVNIKHMsIHMtPmluc19oLCBzLT53aW5kb3dbc3RyICsgTUlOX01BVENILTFdKTsgKi9cbiAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbc3RyICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG5cbiAgICAgICAgcy5wcmV2W3N0ciAmIHMud19tYXNrXSA9IHMuaGVhZFtzLmluc19oXTtcbiAgICAgICAgcy5oZWFkW3MuaW5zX2hdID0gc3RyO1xuICAgICAgICBzdHIrKztcbiAgICAgICAgcy5pbnNlcnQtLTtcbiAgICAgICAgaWYgKHMubG9va2FoZWFkICsgcy5pbnNlcnQgPCBNSU5fTUFUQ0gpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvKiBJZiB0aGUgd2hvbGUgaW5wdXQgaGFzIGxlc3MgdGhhbiBNSU5fTUFUQ0ggYnl0ZXMsIGluc19oIGlzIGdhcmJhZ2UsXG4gICAgICogYnV0IHRoaXMgaXMgbm90IGltcG9ydGFudCBzaW5jZSBvbmx5IGxpdGVyYWwgYnl0ZXMgd2lsbCBiZSBlbWl0dGVkLlxuICAgICAqL1xuXG4gIH0gd2hpbGUgKHMubG9va2FoZWFkIDwgTUlOX0xPT0tBSEVBRCAmJiBzLnN0cm0uYXZhaWxfaW4gIT09IDApO1xuXG4gIC8qIElmIHRoZSBXSU5fSU5JVCBieXRlcyBhZnRlciB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGRhdGEgaGF2ZSBuZXZlciBiZWVuXG4gICAqIHdyaXR0ZW4sIHRoZW4gemVybyB0aG9zZSBieXRlcyBpbiBvcmRlciB0byBhdm9pZCBtZW1vcnkgY2hlY2sgcmVwb3J0cyBvZlxuICAgKiB0aGUgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgKG9yIHVuaW5pdGlhbGlzZWQgYXMgSnVsaWFuIHdyaXRlcykgYnl0ZXMgYnlcbiAgICogdGhlIGxvbmdlc3QgbWF0Y2ggcm91dGluZXMuICBVcGRhdGUgdGhlIGhpZ2ggd2F0ZXIgbWFyayBmb3IgdGhlIG5leHRcbiAgICogdGltZSB0aHJvdWdoIGhlcmUuICBXSU5fSU5JVCBpcyBzZXQgdG8gTUFYX01BVENIIHNpbmNlIHRoZSBsb25nZXN0IG1hdGNoXG4gICAqIHJvdXRpbmVzIGFsbG93IHNjYW5uaW5nIHRvIHN0cnN0YXJ0ICsgTUFYX01BVENILCBpZ25vcmluZyBsb29rYWhlYWQuXG4gICAqL1xuLy8gIGlmIChzLmhpZ2hfd2F0ZXIgPCBzLndpbmRvd19zaXplKSB7XG4vLyAgICB2YXIgY3VyciA9IHMuc3Ryc3RhcnQgKyBzLmxvb2thaGVhZDtcbi8vICAgIHZhciBpbml0ID0gMDtcbi8vXG4vLyAgICBpZiAocy5oaWdoX3dhdGVyIDwgY3Vycikge1xuLy8gICAgICAvKiBQcmV2aW91cyBoaWdoIHdhdGVyIG1hcmsgYmVsb3cgY3VycmVudCBkYXRhIC0tIHplcm8gV0lOX0lOSVRcbi8vICAgICAgICogYnl0ZXMgb3IgdXAgdG8gZW5kIG9mIHdpbmRvdywgd2hpY2hldmVyIGlzIGxlc3MuXG4vLyAgICAgICAqL1xuLy8gICAgICBpbml0ID0gcy53aW5kb3dfc2l6ZSAtIGN1cnI7XG4vLyAgICAgIGlmIChpbml0ID4gV0lOX0lOSVQpXG4vLyAgICAgICAgaW5pdCA9IFdJTl9JTklUO1xuLy8gICAgICB6bWVtemVybyhzLT53aW5kb3cgKyBjdXJyLCAodW5zaWduZWQpaW5pdCk7XG4vLyAgICAgIHMtPmhpZ2hfd2F0ZXIgPSBjdXJyICsgaW5pdDtcbi8vICAgIH1cbi8vICAgIGVsc2UgaWYgKHMtPmhpZ2hfd2F0ZXIgPCAodWxnKWN1cnIgKyBXSU5fSU5JVCkge1xuLy8gICAgICAvKiBIaWdoIHdhdGVyIG1hcmsgYXQgb3IgYWJvdmUgY3VycmVudCBkYXRhLCBidXQgYmVsb3cgY3VycmVudCBkYXRhXG4vLyAgICAgICAqIHBsdXMgV0lOX0lOSVQgLS0gemVybyBvdXQgdG8gY3VycmVudCBkYXRhIHBsdXMgV0lOX0lOSVQsIG9yIHVwXG4vLyAgICAgICAqIHRvIGVuZCBvZiB3aW5kb3csIHdoaWNoZXZlciBpcyBsZXNzLlxuLy8gICAgICAgKi9cbi8vICAgICAgaW5pdCA9ICh1bGcpY3VyciArIFdJTl9JTklUIC0gcy0+aGlnaF93YXRlcjtcbi8vICAgICAgaWYgKGluaXQgPiBzLT53aW5kb3dfc2l6ZSAtIHMtPmhpZ2hfd2F0ZXIpXG4vLyAgICAgICAgaW5pdCA9IHMtPndpbmRvd19zaXplIC0gcy0+aGlnaF93YXRlcjtcbi8vICAgICAgem1lbXplcm8ocy0+d2luZG93ICsgcy0+aGlnaF93YXRlciwgKHVuc2lnbmVkKWluaXQpO1xuLy8gICAgICBzLT5oaWdoX3dhdGVyICs9IGluaXQ7XG4vLyAgICB9XG4vLyAgfVxuLy9cbi8vICBBc3NlcnQoKHVsZylzLT5zdHJzdGFydCA8PSBzLT53aW5kb3dfc2l6ZSAtIE1JTl9MT09LQUhFQUQsXG4vLyAgICBcIm5vdCBlbm91Z2ggcm9vbSBmb3Igc2VhcmNoXCIpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvcHkgd2l0aG91dCBjb21wcmVzc2lvbiBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gdGhlIGlucHV0IHN0cmVhbSwgcmV0dXJuXG4gKiB0aGUgY3VycmVudCBibG9jayBzdGF0ZS5cbiAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgaW5zZXJ0IG5ldyBzdHJpbmdzIGluIHRoZSBkaWN0aW9uYXJ5IHNpbmNlXG4gKiB1bmNvbXByZXNzaWJsZSBkYXRhIGlzIHByb2JhYmx5IG5vdCB1c2VmdWwuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZFxuICogb25seSBmb3IgdGhlIGxldmVsPTAgY29tcHJlc3Npb24gb3B0aW9uLlxuICogTk9URTogdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgb3B0aW1pemVkIHRvIGF2b2lkIGV4dHJhIGNvcHlpbmcgZnJvbVxuICogd2luZG93IHRvIHBlbmRpbmdfYnVmLlxuICovXG5mdW5jdGlvbiBkZWZsYXRlX3N0b3JlZChzLCBmbHVzaCkge1xuICAvKiBTdG9yZWQgYmxvY2tzIGFyZSBsaW1pdGVkIHRvIDB4ZmZmZiBieXRlcywgcGVuZGluZ19idWYgaXMgbGltaXRlZFxuICAgKiB0byBwZW5kaW5nX2J1Zl9zaXplLCBhbmQgZWFjaCBzdG9yZWQgYmxvY2sgaGFzIGEgNSBieXRlIGhlYWRlcjpcbiAgICovXG4gIHZhciBtYXhfYmxvY2tfc2l6ZSA9IDB4ZmZmZjtcblxuICBpZiAobWF4X2Jsb2NrX3NpemUgPiBzLnBlbmRpbmdfYnVmX3NpemUgLSA1KSB7XG4gICAgbWF4X2Jsb2NrX3NpemUgPSBzLnBlbmRpbmdfYnVmX3NpemUgLSA1O1xuICB9XG5cbiAgLyogQ29weSBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gaW5wdXQgdG8gb3V0cHV0OiAqL1xuICBmb3IgKDs7KSB7XG4gICAgLyogRmlsbCB0aGUgd2luZG93IGFzIG11Y2ggYXMgcG9zc2libGU6ICovXG4gICAgaWYgKHMubG9va2FoZWFkIDw9IDEpIHtcblxuICAgICAgLy9Bc3NlcnQocy0+c3Ryc3RhcnQgPCBzLT53X3NpemUrTUFYX0RJU1QocykgfHxcbiAgICAgIC8vICBzLT5ibG9ja19zdGFydCA+PSAobG9uZylzLT53X3NpemUsIFwic2xpZGUgdG9vIGxhdGVcIik7XG4vLyAgICAgIGlmICghKHMuc3Ryc3RhcnQgPCBzLndfc2l6ZSArIChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpIHx8XG4vLyAgICAgICAgcy5ibG9ja19zdGFydCA+PSBzLndfc2l6ZSkpIHtcbi8vICAgICAgICB0aHJvdyAgbmV3IEVycm9yKFwic2xpZGUgdG9vIGxhdGVcIik7XG4vLyAgICAgIH1cblxuICAgICAgZmlsbF93aW5kb3cocyk7XG4gICAgICBpZiAocy5sb29rYWhlYWQgPT09IDAgJiYgZmx1c2ggPT09IFpfTk9fRkxVU0gpIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cblxuICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLyogZmx1c2ggdGhlIGN1cnJlbnQgYmxvY2sgKi9cbiAgICB9XG4gICAgLy9Bc3NlcnQocy0+YmxvY2tfc3RhcnQgPj0gMEwsIFwiYmxvY2sgZ29uZVwiKTtcbi8vICAgIGlmIChzLmJsb2NrX3N0YXJ0IDwgMCkgdGhyb3cgbmV3IEVycm9yKFwiYmxvY2sgZ29uZVwiKTtcblxuICAgIHMuc3Ryc3RhcnQgKz0gcy5sb29rYWhlYWQ7XG4gICAgcy5sb29rYWhlYWQgPSAwO1xuXG4gICAgLyogRW1pdCBhIHN0b3JlZCBibG9jayBpZiBwZW5kaW5nX2J1ZiB3aWxsIGJlIGZ1bGw6ICovXG4gICAgdmFyIG1heF9zdGFydCA9IHMuYmxvY2tfc3RhcnQgKyBtYXhfYmxvY2tfc2l6ZTtcblxuICAgIGlmIChzLnN0cnN0YXJ0ID09PSAwIHx8IHMuc3Ryc3RhcnQgPj0gbWF4X3N0YXJ0KSB7XG4gICAgICAvKiBzdHJzdGFydCA9PSAwIGlzIHBvc3NpYmxlIHdoZW4gd3JhcGFyb3VuZCBvbiAxNi1iaXQgbWFjaGluZSAqL1xuICAgICAgcy5sb29rYWhlYWQgPSBzLnN0cnN0YXJ0IC0gbWF4X3N0YXJ0O1xuICAgICAgcy5zdHJzdGFydCA9IG1heF9zdGFydDtcbiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIC8qKiovXG5cblxuICAgIH1cbiAgICAvKiBGbHVzaCBpZiB3ZSBtYXkgaGF2ZSB0byBzbGlkZSwgb3RoZXJ3aXNlIGJsb2NrX3N0YXJ0IG1heSBiZWNvbWVcbiAgICAgKiBuZWdhdGl2ZSBhbmQgdGhlIGRhdGEgd2lsbCBiZSBnb25lOlxuICAgICAqL1xuICAgIGlmIChzLnN0cnN0YXJ0IC0gcy5ibG9ja19zdGFydCA+PSAocy53X3NpemUgLSBNSU5fTE9PS0FIRUFEKSkge1xuICAgICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7XG4gICAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgICAgfVxuICAgICAgLyoqKi9cbiAgICB9XG4gIH1cblxuICBzLmluc2VydCA9IDA7XG5cbiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMSk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7XG4gICAgfVxuICAgIC8qKiovXG4gICAgcmV0dXJuIEJTX0ZJTklTSF9ET05FO1xuICB9XG5cbiAgaWYgKHMuc3Ryc3RhcnQgPiBzLmJsb2NrX3N0YXJ0KSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgIH1cbiAgICAvKioqL1xuICB9XG5cbiAgcmV0dXJuIEJTX05FRURfTU9SRTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb21wcmVzcyBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gdGhlIGlucHV0IHN0cmVhbSwgcmV0dXJuIHRoZSBjdXJyZW50XG4gKiBibG9jayBzdGF0ZS5cbiAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcGVyZm9ybSBsYXp5IGV2YWx1YXRpb24gb2YgbWF0Y2hlcyBhbmQgaW5zZXJ0c1xuICogbmV3IHN0cmluZ3MgaW4gdGhlIGRpY3Rpb25hcnkgb25seSBmb3IgdW5tYXRjaGVkIHN0cmluZ3Mgb3IgZm9yIHNob3J0XG4gKiBtYXRjaGVzLiBJdCBpcyB1c2VkIG9ubHkgZm9yIHRoZSBmYXN0IGNvbXByZXNzaW9uIG9wdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIGRlZmxhdGVfZmFzdChzLCBmbHVzaCkge1xuICB2YXIgaGFzaF9oZWFkOyAgICAgICAgLyogaGVhZCBvZiB0aGUgaGFzaCBjaGFpbiAqL1xuICB2YXIgYmZsdXNoOyAgICAgICAgICAgLyogc2V0IGlmIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkICovXG5cbiAgZm9yICg7Oykge1xuICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGVub3VnaCBsb29rYWhlYWQsIGV4Y2VwdFxuICAgICAqIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0IGZpbGUuIFdlIG5lZWQgTUFYX01BVENIIGJ5dGVzXG4gICAgICogZm9yIHRoZSBuZXh0IG1hdGNoLCBwbHVzIE1JTl9NQVRDSCBieXRlcyB0byBpbnNlcnQgdGhlXG4gICAgICogc3RyaW5nIGZvbGxvd2luZyB0aGUgbmV4dCBtYXRjaC5cbiAgICAgKi9cbiAgICBpZiAocy5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEKSB7XG4gICAgICBmaWxsX3dpbmRvdyhzKTtcbiAgICAgIGlmIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQgJiYgZmx1c2ggPT09IFpfTk9fRkxVU0gpIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkge1xuICAgICAgICBicmVhazsgLyogZmx1c2ggdGhlIGN1cnJlbnQgYmxvY2sgKi9cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBJbnNlcnQgdGhlIHN0cmluZyB3aW5kb3dbc3Ryc3RhcnQgLi4gc3Ryc3RhcnQrMl0gaW4gdGhlXG4gICAgICogZGljdGlvbmFyeSwgYW5kIHNldCBoYXNoX2hlYWQgdG8gdGhlIGhlYWQgb2YgdGhlIGhhc2ggY2hhaW46XG4gICAgICovXG4gICAgaGFzaF9oZWFkID0gMC8qTklMKi87XG4gICAgaWYgKHMubG9va2FoZWFkID49IE1JTl9NQVRDSCkge1xuICAgICAgLyoqKiBJTlNFUlRfU1RSSU5HKHMsIHMuc3Ryc3RhcnQsIGhhc2hfaGVhZCk7ICoqKi9cbiAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3Muc3Ryc3RhcnQgKyBNSU5fTUFUQ0ggLSAxXSkgJiBzLmhhc2hfbWFzaztcbiAgICAgIGhhc2hfaGVhZCA9IHMucHJldltzLnN0cnN0YXJ0ICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdO1xuICAgICAgcy5oZWFkW3MuaW5zX2hdID0gcy5zdHJzdGFydDtcbiAgICAgIC8qKiovXG4gICAgfVxuXG4gICAgLyogRmluZCB0aGUgbG9uZ2VzdCBtYXRjaCwgZGlzY2FyZGluZyB0aG9zZSA8PSBwcmV2X2xlbmd0aC5cbiAgICAgKiBBdCB0aGlzIHBvaW50IHdlIGhhdmUgYWx3YXlzIG1hdGNoX2xlbmd0aCA8IE1JTl9NQVRDSFxuICAgICAqL1xuICAgIGlmIChoYXNoX2hlYWQgIT09IDAvKk5JTCovICYmICgocy5zdHJzdGFydCAtIGhhc2hfaGVhZCkgPD0gKHMud19zaXplIC0gTUlOX0xPT0tBSEVBRCkpKSB7XG4gICAgICAvKiBUbyBzaW1wbGlmeSB0aGUgY29kZSwgd2UgcHJldmVudCBtYXRjaGVzIHdpdGggdGhlIHN0cmluZ1xuICAgICAgICogb2Ygd2luZG93IGluZGV4IDAgKGluIHBhcnRpY3VsYXIgd2UgaGF2ZSB0byBhdm9pZCBhIG1hdGNoXG4gICAgICAgKiBvZiB0aGUgc3RyaW5nIHdpdGggaXRzZWxmIGF0IHRoZSBzdGFydCBvZiB0aGUgaW5wdXQgZmlsZSkuXG4gICAgICAgKi9cbiAgICAgIHMubWF0Y2hfbGVuZ3RoID0gbG9uZ2VzdF9tYXRjaChzLCBoYXNoX2hlYWQpO1xuICAgICAgLyogbG9uZ2VzdF9tYXRjaCgpIHNldHMgbWF0Y2hfc3RhcnQgKi9cbiAgICB9XG4gICAgaWYgKHMubWF0Y2hfbGVuZ3RoID49IE1JTl9NQVRDSCkge1xuICAgICAgLy8gY2hlY2tfbWF0Y2gocywgcy5zdHJzdGFydCwgcy5tYXRjaF9zdGFydCwgcy5tYXRjaF9sZW5ndGgpOyAvLyBmb3IgZGVidWcgb25seVxuXG4gICAgICAvKioqIF90cl90YWxseV9kaXN0KHMsIHMuc3Ryc3RhcnQgLSBzLm1hdGNoX3N0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gsIGJmbHVzaCk7ICoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCBzLnN0cnN0YXJ0IC0gcy5tYXRjaF9zdGFydCwgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gpO1xuXG4gICAgICBzLmxvb2thaGVhZCAtPSBzLm1hdGNoX2xlbmd0aDtcblxuICAgICAgLyogSW5zZXJ0IG5ldyBzdHJpbmdzIGluIHRoZSBoYXNoIHRhYmxlIG9ubHkgaWYgdGhlIG1hdGNoIGxlbmd0aFxuICAgICAgICogaXMgbm90IHRvbyBsYXJnZS4gVGhpcyBzYXZlcyB0aW1lIGJ1dCBkZWdyYWRlcyBjb21wcmVzc2lvbi5cbiAgICAgICAqL1xuICAgICAgaWYgKHMubWF0Y2hfbGVuZ3RoIDw9IHMubWF4X2xhenlfbWF0Y2gvKm1heF9pbnNlcnRfbGVuZ3RoKi8gJiYgcy5sb29rYWhlYWQgPj0gTUlOX01BVENIKSB7XG4gICAgICAgIHMubWF0Y2hfbGVuZ3RoLS07IC8qIHN0cmluZyBhdCBzdHJzdGFydCBhbHJlYWR5IGluIHRhYmxlICovXG4gICAgICAgIGRvIHtcbiAgICAgICAgICBzLnN0cnN0YXJ0Kys7XG4gICAgICAgICAgLyoqKiBJTlNFUlRfU1RSSU5HKHMsIHMuc3Ryc3RhcnQsIGhhc2hfaGVhZCk7ICoqKi9cbiAgICAgICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG4gICAgICAgICAgaGFzaF9oZWFkID0gcy5wcmV2W3Muc3Ryc3RhcnQgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07XG4gICAgICAgICAgcy5oZWFkW3MuaW5zX2hdID0gcy5zdHJzdGFydDtcbiAgICAgICAgICAvKioqL1xuICAgICAgICAgIC8qIHN0cnN0YXJ0IG5ldmVyIGV4Y2VlZHMgV1NJWkUtTUFYX01BVENILCBzbyB0aGVyZSBhcmVcbiAgICAgICAgICAgKiBhbHdheXMgTUlOX01BVENIIGJ5dGVzIGFoZWFkLlxuICAgICAgICAgICAqL1xuICAgICAgICB9IHdoaWxlICgtLXMubWF0Y2hfbGVuZ3RoICE9PSAwKTtcbiAgICAgICAgcy5zdHJzdGFydCsrO1xuICAgICAgfSBlbHNlXG4gICAgICB7XG4gICAgICAgIHMuc3Ryc3RhcnQgKz0gcy5tYXRjaF9sZW5ndGg7XG4gICAgICAgIHMubWF0Y2hfbGVuZ3RoID0gMDtcbiAgICAgICAgcy5pbnNfaCA9IHMud2luZG93W3Muc3Ryc3RhcnRdO1xuICAgICAgICAvKiBVUERBVEVfSEFTSChzLCBzLmluc19oLCBzLndpbmRvd1tzLnN0cnN0YXJ0KzFdKTsgKi9cbiAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIDFdKSAmIHMuaGFzaF9tYXNrO1xuXG4vLyNpZiBNSU5fTUFUQ0ggIT0gM1xuLy8gICAgICAgICAgICAgICAgQ2FsbCBVUERBVEVfSEFTSCgpIE1JTl9NQVRDSC0zIG1vcmUgdGltZXNcbi8vI2VuZGlmXG4gICAgICAgIC8qIElmIGxvb2thaGVhZCA8IE1JTl9NQVRDSCwgaW5zX2ggaXMgZ2FyYmFnZSwgYnV0IGl0IGRvZXMgbm90XG4gICAgICAgICAqIG1hdHRlciBzaW5jZSBpdCB3aWxsIGJlIHJlY29tcHV0ZWQgYXQgbmV4dCBkZWZsYXRlIGNhbGwuXG4gICAgICAgICAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvKiBObyBtYXRjaCwgb3V0cHV0IGEgbGl0ZXJhbCBieXRlICovXG4gICAgICAvL1RyYWNldnYoKHN0ZGVycixcIiVjXCIsIHMud2luZG93W3Muc3Ryc3RhcnRdKSk7XG4gICAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydF0sIGJmbHVzaCk7ICoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSk7XG5cbiAgICAgIHMubG9va2FoZWFkLS07XG4gICAgICBzLnN0cnN0YXJ0Kys7XG4gICAgfVxuICAgIGlmIChiZmx1c2gpIHtcbiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIC8qKiovXG4gICAgfVxuICB9XG4gIHMuaW5zZXJ0ID0gKChzLnN0cnN0YXJ0IDwgKE1JTl9NQVRDSCAtIDEpKSA/IHMuc3Ryc3RhcnQgOiBNSU5fTUFUQ0ggLSAxKTtcbiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMSk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7XG4gICAgfVxuICAgIC8qKiovXG4gICAgcmV0dXJuIEJTX0ZJTklTSF9ET05FO1xuICB9XG4gIGlmIChzLmxhc3RfbGl0KSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgIH1cbiAgICAvKioqL1xuICB9XG4gIHJldHVybiBCU19CTE9DS19ET05FO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNhbWUgYXMgYWJvdmUsIGJ1dCBhY2hpZXZlcyBiZXR0ZXIgY29tcHJlc3Npb24uIFdlIHVzZSBhIGxhenlcbiAqIGV2YWx1YXRpb24gZm9yIG1hdGNoZXM6IGEgbWF0Y2ggaXMgZmluYWxseSBhZG9wdGVkIG9ubHkgaWYgdGhlcmUgaXNcbiAqIG5vIGJldHRlciBtYXRjaCBhdCB0aGUgbmV4dCB3aW5kb3cgcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGRlZmxhdGVfc2xvdyhzLCBmbHVzaCkge1xuICB2YXIgaGFzaF9oZWFkOyAgICAgICAgICAvKiBoZWFkIG9mIGhhc2ggY2hhaW4gKi9cbiAgdmFyIGJmbHVzaDsgICAgICAgICAgICAgIC8qIHNldCBpZiBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZCAqL1xuXG4gIHZhciBtYXhfaW5zZXJ0O1xuXG4gIC8qIFByb2Nlc3MgdGhlIGlucHV0IGJsb2NrLiAqL1xuICBmb3IgKDs7KSB7XG4gICAgLyogTWFrZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGhhdmUgZW5vdWdoIGxvb2thaGVhZCwgZXhjZXB0XG4gICAgICogYXQgdGhlIGVuZCBvZiB0aGUgaW5wdXQgZmlsZS4gV2UgbmVlZCBNQVhfTUFUQ0ggYnl0ZXNcbiAgICAgKiBmb3IgdGhlIG5leHQgbWF0Y2gsIHBsdXMgTUlOX01BVENIIGJ5dGVzIHRvIGluc2VydCB0aGVcbiAgICAgKiBzdHJpbmcgZm9sbG93aW5nIHRoZSBuZXh0IG1hdGNoLlxuICAgICAqL1xuICAgIGlmIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQpIHtcbiAgICAgIGZpbGxfd2luZG93KHMpO1xuICAgICAgaWYgKHMubG9va2FoZWFkIDwgTUlOX0xPT0tBSEVBRCAmJiBmbHVzaCA9PT0gWl9OT19GTFVTSCkge1xuICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgICAgfVxuICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7IGJyZWFrOyB9IC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovXG4gICAgfVxuXG4gICAgLyogSW5zZXJ0IHRoZSBzdHJpbmcgd2luZG93W3N0cnN0YXJ0IC4uIHN0cnN0YXJ0KzJdIGluIHRoZVxuICAgICAqIGRpY3Rpb25hcnksIGFuZCBzZXQgaGFzaF9oZWFkIHRvIHRoZSBoZWFkIG9mIHRoZSBoYXNoIGNoYWluOlxuICAgICAqL1xuICAgIGhhc2hfaGVhZCA9IDAvKk5JTCovO1xuICAgIGlmIChzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0gpIHtcbiAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovXG4gICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG4gICAgICBoYXNoX2hlYWQgPSBzLnByZXZbcy5zdHJzdGFydCAmIHMud19tYXNrXSA9IHMuaGVhZFtzLmluc19oXTtcbiAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7XG4gICAgICAvKioqL1xuICAgIH1cblxuICAgIC8qIEZpbmQgdGhlIGxvbmdlc3QgbWF0Y2gsIGRpc2NhcmRpbmcgdGhvc2UgPD0gcHJldl9sZW5ndGguXG4gICAgICovXG4gICAgcy5wcmV2X2xlbmd0aCA9IHMubWF0Y2hfbGVuZ3RoO1xuICAgIHMucHJldl9tYXRjaCA9IHMubWF0Y2hfc3RhcnQ7XG4gICAgcy5tYXRjaF9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxO1xuXG4gICAgaWYgKGhhc2hfaGVhZCAhPT0gMC8qTklMKi8gJiYgcy5wcmV2X2xlbmd0aCA8IHMubWF4X2xhenlfbWF0Y2ggJiZcbiAgICAgICAgcy5zdHJzdGFydCAtIGhhc2hfaGVhZCA8PSAocy53X3NpemUgLSBNSU5fTE9PS0FIRUFEKS8qTUFYX0RJU1QocykqLykge1xuICAgICAgLyogVG8gc2ltcGxpZnkgdGhlIGNvZGUsIHdlIHByZXZlbnQgbWF0Y2hlcyB3aXRoIHRoZSBzdHJpbmdcbiAgICAgICAqIG9mIHdpbmRvdyBpbmRleCAwIChpbiBwYXJ0aWN1bGFyIHdlIGhhdmUgdG8gYXZvaWQgYSBtYXRjaFxuICAgICAgICogb2YgdGhlIHN0cmluZyB3aXRoIGl0c2VsZiBhdCB0aGUgc3RhcnQgb2YgdGhlIGlucHV0IGZpbGUpLlxuICAgICAgICovXG4gICAgICBzLm1hdGNoX2xlbmd0aCA9IGxvbmdlc3RfbWF0Y2gocywgaGFzaF9oZWFkKTtcbiAgICAgIC8qIGxvbmdlc3RfbWF0Y2goKSBzZXRzIG1hdGNoX3N0YXJ0ICovXG5cbiAgICAgIGlmIChzLm1hdGNoX2xlbmd0aCA8PSA1ICYmXG4gICAgICAgICAocy5zdHJhdGVneSA9PT0gWl9GSUxURVJFRCB8fCAocy5tYXRjaF9sZW5ndGggPT09IE1JTl9NQVRDSCAmJiBzLnN0cnN0YXJ0IC0gcy5tYXRjaF9zdGFydCA+IDQwOTYvKlRPT19GQVIqLykpKSB7XG5cbiAgICAgICAgLyogSWYgcHJldl9tYXRjaCBpcyBhbHNvIE1JTl9NQVRDSCwgbWF0Y2hfc3RhcnQgaXMgZ2FyYmFnZVxuICAgICAgICAgKiBidXQgd2Ugd2lsbCBpZ25vcmUgdGhlIGN1cnJlbnQgbWF0Y2ggYW55d2F5LlxuICAgICAgICAgKi9cbiAgICAgICAgcy5tYXRjaF9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxO1xuICAgICAgfVxuICAgIH1cbiAgICAvKiBJZiB0aGVyZSB3YXMgYSBtYXRjaCBhdCB0aGUgcHJldmlvdXMgc3RlcCBhbmQgdGhlIGN1cnJlbnRcbiAgICAgKiBtYXRjaCBpcyBub3QgYmV0dGVyLCBvdXRwdXQgdGhlIHByZXZpb3VzIG1hdGNoOlxuICAgICAqL1xuICAgIGlmIChzLnByZXZfbGVuZ3RoID49IE1JTl9NQVRDSCAmJiBzLm1hdGNoX2xlbmd0aCA8PSBzLnByZXZfbGVuZ3RoKSB7XG4gICAgICBtYXhfaW5zZXJ0ID0gcy5zdHJzdGFydCArIHMubG9va2FoZWFkIC0gTUlOX01BVENIO1xuICAgICAgLyogRG8gbm90IGluc2VydCBzdHJpbmdzIGluIGhhc2ggdGFibGUgYmV5b25kIHRoaXMuICovXG5cbiAgICAgIC8vY2hlY2tfbWF0Y2gocywgcy5zdHJzdGFydC0xLCBzLnByZXZfbWF0Y2gsIHMucHJldl9sZW5ndGgpO1xuXG4gICAgICAvKioqX3RyX3RhbGx5X2Rpc3Qocywgcy5zdHJzdGFydCAtIDEgLSBzLnByZXZfbWF0Y2gsXG4gICAgICAgICAgICAgICAgICAgICBzLnByZXZfbGVuZ3RoIC0gTUlOX01BVENILCBiZmx1c2gpOyoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCBzLnN0cnN0YXJ0IC0gMSAtIHMucHJldl9tYXRjaCwgcy5wcmV2X2xlbmd0aCAtIE1JTl9NQVRDSCk7XG4gICAgICAvKiBJbnNlcnQgaW4gaGFzaCB0YWJsZSBhbGwgc3RyaW5ncyB1cCB0byB0aGUgZW5kIG9mIHRoZSBtYXRjaC5cbiAgICAgICAqIHN0cnN0YXJ0LTEgYW5kIHN0cnN0YXJ0IGFyZSBhbHJlYWR5IGluc2VydGVkLiBJZiB0aGVyZSBpcyBub3RcbiAgICAgICAqIGVub3VnaCBsb29rYWhlYWQsIHRoZSBsYXN0IHR3byBzdHJpbmdzIGFyZSBub3QgaW5zZXJ0ZWQgaW5cbiAgICAgICAqIHRoZSBoYXNoIHRhYmxlLlxuICAgICAgICovXG4gICAgICBzLmxvb2thaGVhZCAtPSBzLnByZXZfbGVuZ3RoIC0gMTtcbiAgICAgIHMucHJldl9sZW5ndGggLT0gMjtcbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKCsrcy5zdHJzdGFydCA8PSBtYXhfaW5zZXJ0KSB7XG4gICAgICAgICAgLyoqKiBJTlNFUlRfU1RSSU5HKHMsIHMuc3Ryc3RhcnQsIGhhc2hfaGVhZCk7ICoqKi9cbiAgICAgICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG4gICAgICAgICAgaGFzaF9oZWFkID0gcy5wcmV2W3Muc3Ryc3RhcnQgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07XG4gICAgICAgICAgcy5oZWFkW3MuaW5zX2hdID0gcy5zdHJzdGFydDtcbiAgICAgICAgICAvKioqL1xuICAgICAgICB9XG4gICAgICB9IHdoaWxlICgtLXMucHJldl9sZW5ndGggIT09IDApO1xuICAgICAgcy5tYXRjaF9hdmFpbGFibGUgPSAwO1xuICAgICAgcy5tYXRjaF9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxO1xuICAgICAgcy5zdHJzdGFydCsrO1xuXG4gICAgICBpZiAoYmZsdXNoKSB7XG4gICAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7XG4gICAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgICAgfVxuICAgICAgICAvKioqL1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmIChzLm1hdGNoX2F2YWlsYWJsZSkge1xuICAgICAgLyogSWYgdGhlcmUgd2FzIG5vIG1hdGNoIGF0IHRoZSBwcmV2aW91cyBwb3NpdGlvbiwgb3V0cHV0IGFcbiAgICAgICAqIHNpbmdsZSBsaXRlcmFsLiBJZiB0aGVyZSB3YXMgYSBtYXRjaCBidXQgdGhlIGN1cnJlbnQgbWF0Y2hcbiAgICAgICAqIGlzIGxvbmdlciwgdHJ1bmNhdGUgdGhlIHByZXZpb3VzIG1hdGNoIHRvIGEgc2luZ2xlIGxpdGVyYWwuXG4gICAgICAgKi9cbiAgICAgIC8vVHJhY2V2digoc3RkZXJyLFwiJWNcIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0LTFdKSk7XG4gICAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydC0xXSwgYmZsdXNoKTsgKioqL1xuICAgICAgYmZsdXNoID0gdHJlZXMuX3RyX3RhbGx5KHMsIDAsIHMud2luZG93W3Muc3Ryc3RhcnQgLSAxXSk7XG5cbiAgICAgIGlmIChiZmx1c2gpIHtcbiAgICAgICAgLyoqKiBGTFVTSF9CTE9DS19PTkxZKHMsIDApICoqKi9cbiAgICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7XG4gICAgICAgIC8qKiovXG4gICAgICB9XG4gICAgICBzLnN0cnN0YXJ0Kys7XG4gICAgICBzLmxvb2thaGVhZC0tO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLyogVGhlcmUgaXMgbm8gcHJldmlvdXMgbWF0Y2ggdG8gY29tcGFyZSB3aXRoLCB3YWl0IGZvclxuICAgICAgICogdGhlIG5leHQgc3RlcCB0byBkZWNpZGUuXG4gICAgICAgKi9cbiAgICAgIHMubWF0Y2hfYXZhaWxhYmxlID0gMTtcbiAgICAgIHMuc3Ryc3RhcnQrKztcbiAgICAgIHMubG9va2FoZWFkLS07XG4gICAgfVxuICB9XG4gIC8vQXNzZXJ0IChmbHVzaCAhPSBaX05PX0ZMVVNILCBcIm5vIGZsdXNoP1wiKTtcbiAgaWYgKHMubWF0Y2hfYXZhaWxhYmxlKSB7XG4gICAgLy9UcmFjZXZ2KChzdGRlcnIsXCIlY1wiLCBzLT53aW5kb3dbcy0+c3Ryc3RhcnQtMV0pKTtcbiAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydC0xXSwgYmZsdXNoKTsgKioqL1xuICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0IC0gMV0pO1xuXG4gICAgcy5tYXRjaF9hdmFpbGFibGUgPSAwO1xuICB9XG4gIHMuaW5zZXJ0ID0gcy5zdHJzdGFydCA8IE1JTl9NQVRDSCAtIDEgPyBzLnN0cnN0YXJ0IDogTUlOX01BVENIIC0gMTtcbiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMSk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7XG4gICAgfVxuICAgIC8qKiovXG4gICAgcmV0dXJuIEJTX0ZJTklTSF9ET05FO1xuICB9XG4gIGlmIChzLmxhc3RfbGl0KSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgIH1cbiAgICAvKioqL1xuICB9XG5cbiAgcmV0dXJuIEJTX0JMT0NLX0RPTkU7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBGb3IgWl9STEUsIHNpbXBseSBsb29rIGZvciBydW5zIG9mIGJ5dGVzLCBnZW5lcmF0ZSBtYXRjaGVzIG9ubHkgb2YgZGlzdGFuY2VcbiAqIG9uZS4gIERvIG5vdCBtYWludGFpbiBhIGhhc2ggdGFibGUuICAoSXQgd2lsbCBiZSByZWdlbmVyYXRlZCBpZiB0aGlzIHJ1biBvZlxuICogZGVmbGF0ZSBzd2l0Y2hlcyBhd2F5IGZyb20gWl9STEUuKVxuICovXG5mdW5jdGlvbiBkZWZsYXRlX3JsZShzLCBmbHVzaCkge1xuICB2YXIgYmZsdXNoOyAgICAgICAgICAgIC8qIHNldCBpZiBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZCAqL1xuICB2YXIgcHJldjsgICAgICAgICAgICAgIC8qIGJ5dGUgYXQgZGlzdGFuY2Ugb25lIHRvIG1hdGNoICovXG4gIHZhciBzY2FuLCBzdHJlbmQ7ICAgICAgLyogc2NhbiBnb2VzIHVwIHRvIHN0cmVuZCBmb3IgbGVuZ3RoIG9mIHJ1biAqL1xuXG4gIHZhciBfd2luID0gcy53aW5kb3c7XG5cbiAgZm9yICg7Oykge1xuICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGVub3VnaCBsb29rYWhlYWQsIGV4Y2VwdFxuICAgICAqIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0IGZpbGUuIFdlIG5lZWQgTUFYX01BVENIIGJ5dGVzXG4gICAgICogZm9yIHRoZSBsb25nZXN0IHJ1biwgcGx1cyBvbmUgZm9yIHRoZSB1bnJvbGxlZCBsb29wLlxuICAgICAqL1xuICAgIGlmIChzLmxvb2thaGVhZCA8PSBNQVhfTUFUQ0gpIHtcbiAgICAgIGZpbGxfd2luZG93KHMpO1xuICAgICAgaWYgKHMubG9va2FoZWFkIDw9IE1BWF9NQVRDSCAmJiBmbHVzaCA9PT0gWl9OT19GTFVTSCkge1xuICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgICAgfVxuICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7IGJyZWFrOyB9IC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovXG4gICAgfVxuXG4gICAgLyogU2VlIGhvdyBtYW55IHRpbWVzIHRoZSBwcmV2aW91cyBieXRlIHJlcGVhdHMgKi9cbiAgICBzLm1hdGNoX2xlbmd0aCA9IDA7XG4gICAgaWYgKHMubG9va2FoZWFkID49IE1JTl9NQVRDSCAmJiBzLnN0cnN0YXJ0ID4gMCkge1xuICAgICAgc2NhbiA9IHMuc3Ryc3RhcnQgLSAxO1xuICAgICAgcHJldiA9IF93aW5bc2Nhbl07XG4gICAgICBpZiAocHJldiA9PT0gX3dpblsrK3NjYW5dICYmIHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0pIHtcbiAgICAgICAgc3RyZW5kID0gcy5zdHJzdGFydCArIE1BWF9NQVRDSDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIC8qanNoaW50IG5vZW1wdHk6ZmFsc2UqL1xuICAgICAgICB9IHdoaWxlIChwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmXG4gICAgICAgICAgICAgICAgIHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiZcbiAgICAgICAgICAgICAgICAgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmIHByZXYgPT09IF93aW5bKytzY2FuXSAmJlxuICAgICAgICAgICAgICAgICBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmXG4gICAgICAgICAgICAgICAgIHNjYW4gPCBzdHJlbmQpO1xuICAgICAgICBzLm1hdGNoX2xlbmd0aCA9IE1BWF9NQVRDSCAtIChzdHJlbmQgLSBzY2FuKTtcbiAgICAgICAgaWYgKHMubWF0Y2hfbGVuZ3RoID4gcy5sb29rYWhlYWQpIHtcbiAgICAgICAgICBzLm1hdGNoX2xlbmd0aCA9IHMubG9va2FoZWFkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvL0Fzc2VydChzY2FuIDw9IHMtPndpbmRvdysodUludCkocy0+d2luZG93X3NpemUtMSksIFwid2lsZCBzY2FuXCIpO1xuICAgIH1cblxuICAgIC8qIEVtaXQgbWF0Y2ggaWYgaGF2ZSBydW4gb2YgTUlOX01BVENIIG9yIGxvbmdlciwgZWxzZSBlbWl0IGxpdGVyYWwgKi9cbiAgICBpZiAocy5tYXRjaF9sZW5ndGggPj0gTUlOX01BVENIKSB7XG4gICAgICAvL2NoZWNrX21hdGNoKHMsIHMuc3Ryc3RhcnQsIHMuc3Ryc3RhcnQgLSAxLCBzLm1hdGNoX2xlbmd0aCk7XG5cbiAgICAgIC8qKiogX3RyX3RhbGx5X2Rpc3QocywgMSwgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gsIGJmbHVzaCk7ICoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAxLCBzLm1hdGNoX2xlbmd0aCAtIE1JTl9NQVRDSCk7XG5cbiAgICAgIHMubG9va2FoZWFkIC09IHMubWF0Y2hfbGVuZ3RoO1xuICAgICAgcy5zdHJzdGFydCArPSBzLm1hdGNoX2xlbmd0aDtcbiAgICAgIHMubWF0Y2hfbGVuZ3RoID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogTm8gbWF0Y2gsIG91dHB1dCBhIGxpdGVyYWwgYnl0ZSAqL1xuICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsXCIlY1wiLCBzLT53aW5kb3dbcy0+c3Ryc3RhcnRdKSk7XG4gICAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydF0sIGJmbHVzaCk7ICoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSk7XG5cbiAgICAgIHMubG9va2FoZWFkLS07XG4gICAgICBzLnN0cnN0YXJ0Kys7XG4gICAgfVxuICAgIGlmIChiZmx1c2gpIHtcbiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIC8qKiovXG4gICAgfVxuICB9XG4gIHMuaW5zZXJ0ID0gMDtcbiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMSk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7XG4gICAgfVxuICAgIC8qKiovXG4gICAgcmV0dXJuIEJTX0ZJTklTSF9ET05FO1xuICB9XG4gIGlmIChzLmxhc3RfbGl0KSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgIH1cbiAgICAvKioqL1xuICB9XG4gIHJldHVybiBCU19CTE9DS19ET05FO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEZvciBaX0hVRkZNQU5fT05MWSwgZG8gbm90IGxvb2sgZm9yIG1hdGNoZXMuICBEbyBub3QgbWFpbnRhaW4gYSBoYXNoIHRhYmxlLlxuICogKEl0IHdpbGwgYmUgcmVnZW5lcmF0ZWQgaWYgdGhpcyBydW4gb2YgZGVmbGF0ZSBzd2l0Y2hlcyBhd2F5IGZyb20gSHVmZm1hbi4pXG4gKi9cbmZ1bmN0aW9uIGRlZmxhdGVfaHVmZihzLCBmbHVzaCkge1xuICB2YXIgYmZsdXNoOyAgICAgICAgICAgICAvKiBzZXQgaWYgY3VycmVudCBibG9jayBtdXN0IGJlIGZsdXNoZWQgKi9cblxuICBmb3IgKDs7KSB7XG4gICAgLyogTWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSBhIGxpdGVyYWwgdG8gd3JpdGUuICovXG4gICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7XG4gICAgICBmaWxsX3dpbmRvdyhzKTtcbiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkge1xuICAgICAgICBpZiAoZmx1c2ggPT09IFpfTk9fRkxVU0gpIHtcbiAgICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrOyAgICAgIC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovXG4gICAgICB9XG4gICAgfVxuXG4gICAgLyogT3V0cHV0IGEgbGl0ZXJhbCBieXRlICovXG4gICAgcy5tYXRjaF9sZW5ndGggPSAwO1xuICAgIC8vVHJhY2V2digoc3RkZXJyLFwiJWNcIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0XSkpO1xuICAgIC8qKiogX3RyX3RhbGx5X2xpdChzLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSwgYmZsdXNoKTsgKioqL1xuICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSk7XG4gICAgcy5sb29rYWhlYWQtLTtcbiAgICBzLnN0cnN0YXJ0Kys7XG4gICAgaWYgKGJmbHVzaCkge1xuICAgICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7XG4gICAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgICAgfVxuICAgICAgLyoqKi9cbiAgICB9XG4gIH1cbiAgcy5pbnNlcnQgPSAwO1xuICBpZiAoZmx1c2ggPT09IFpfRklOSVNIKSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAxKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgdHJ1ZSk7XG4gICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgIHJldHVybiBCU19GSU5JU0hfU1RBUlRFRDtcbiAgICB9XG4gICAgLyoqKi9cbiAgICByZXR1cm4gQlNfRklOSVNIX0RPTkU7XG4gIH1cbiAgaWYgKHMubGFzdF9saXQpIHtcbiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovXG4gICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7XG4gICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgfVxuICAgIC8qKiovXG4gIH1cbiAgcmV0dXJuIEJTX0JMT0NLX0RPTkU7XG59XG5cbi8qIFZhbHVlcyBmb3IgbWF4X2xhenlfbWF0Y2gsIGdvb2RfbWF0Y2ggYW5kIG1heF9jaGFpbl9sZW5ndGgsIGRlcGVuZGluZyBvblxuICogdGhlIGRlc2lyZWQgcGFjayBsZXZlbCAoMC4uOSkuIFRoZSB2YWx1ZXMgZ2l2ZW4gYmVsb3cgaGF2ZSBiZWVuIHR1bmVkIHRvXG4gKiBleGNsdWRlIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2UgZm9yIHBhdGhvbG9naWNhbCBmaWxlcy4gQmV0dGVyIHZhbHVlcyBtYXkgYmVcbiAqIGZvdW5kIGZvciBzcGVjaWZpYyBmaWxlcy5cbiAqL1xuZnVuY3Rpb24gQ29uZmlnKGdvb2RfbGVuZ3RoLCBtYXhfbGF6eSwgbmljZV9sZW5ndGgsIG1heF9jaGFpbiwgZnVuYykge1xuICB0aGlzLmdvb2RfbGVuZ3RoID0gZ29vZF9sZW5ndGg7XG4gIHRoaXMubWF4X2xhenkgPSBtYXhfbGF6eTtcbiAgdGhpcy5uaWNlX2xlbmd0aCA9IG5pY2VfbGVuZ3RoO1xuICB0aGlzLm1heF9jaGFpbiA9IG1heF9jaGFpbjtcbiAgdGhpcy5mdW5jID0gZnVuYztcbn1cblxudmFyIGNvbmZpZ3VyYXRpb25fdGFibGU7XG5cbmNvbmZpZ3VyYXRpb25fdGFibGUgPSBbXG4gIC8qICAgICAgZ29vZCBsYXp5IG5pY2UgY2hhaW4gKi9cbiAgbmV3IENvbmZpZygwLCAwLCAwLCAwLCBkZWZsYXRlX3N0b3JlZCksICAgICAgICAgIC8qIDAgc3RvcmUgb25seSAqL1xuICBuZXcgQ29uZmlnKDQsIDQsIDgsIDQsIGRlZmxhdGVfZmFzdCksICAgICAgICAgICAgLyogMSBtYXggc3BlZWQsIG5vIGxhenkgbWF0Y2hlcyAqL1xuICBuZXcgQ29uZmlnKDQsIDUsIDE2LCA4LCBkZWZsYXRlX2Zhc3QpLCAgICAgICAgICAgLyogMiAqL1xuICBuZXcgQ29uZmlnKDQsIDYsIDMyLCAzMiwgZGVmbGF0ZV9mYXN0KSwgICAgICAgICAgLyogMyAqL1xuXG4gIG5ldyBDb25maWcoNCwgNCwgMTYsIDE2LCBkZWZsYXRlX3Nsb3cpLCAgICAgICAgICAvKiA0IGxhenkgbWF0Y2hlcyAqL1xuICBuZXcgQ29uZmlnKDgsIDE2LCAzMiwgMzIsIGRlZmxhdGVfc2xvdyksICAgICAgICAgLyogNSAqL1xuICBuZXcgQ29uZmlnKDgsIDE2LCAxMjgsIDEyOCwgZGVmbGF0ZV9zbG93KSwgICAgICAgLyogNiAqL1xuICBuZXcgQ29uZmlnKDgsIDMyLCAxMjgsIDI1NiwgZGVmbGF0ZV9zbG93KSwgICAgICAgLyogNyAqL1xuICBuZXcgQ29uZmlnKDMyLCAxMjgsIDI1OCwgMTAyNCwgZGVmbGF0ZV9zbG93KSwgICAgLyogOCAqL1xuICBuZXcgQ29uZmlnKDMyLCAyNTgsIDI1OCwgNDA5NiwgZGVmbGF0ZV9zbG93KSAgICAgLyogOSBtYXggY29tcHJlc3Npb24gKi9cbl07XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBJbml0aWFsaXplIHRoZSBcImxvbmdlc3QgbWF0Y2hcIiByb3V0aW5lcyBmb3IgYSBuZXcgemxpYiBzdHJlYW1cbiAqL1xuZnVuY3Rpb24gbG1faW5pdChzKSB7XG4gIHMud2luZG93X3NpemUgPSAyICogcy53X3NpemU7XG5cbiAgLyoqKiBDTEVBUl9IQVNIKHMpOyAqKiovXG4gIHplcm8ocy5oZWFkKTsgLy8gRmlsbCB3aXRoIE5JTCAoPSAwKTtcblxuICAvKiBTZXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzOlxuICAgKi9cbiAgcy5tYXhfbGF6eV9tYXRjaCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0ubWF4X2xhenk7XG4gIHMuZ29vZF9tYXRjaCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0uZ29vZF9sZW5ndGg7XG4gIHMubmljZV9tYXRjaCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0ubmljZV9sZW5ndGg7XG4gIHMubWF4X2NoYWluX2xlbmd0aCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0ubWF4X2NoYWluO1xuXG4gIHMuc3Ryc3RhcnQgPSAwO1xuICBzLmJsb2NrX3N0YXJ0ID0gMDtcbiAgcy5sb29rYWhlYWQgPSAwO1xuICBzLmluc2VydCA9IDA7XG4gIHMubWF0Y2hfbGVuZ3RoID0gcy5wcmV2X2xlbmd0aCA9IE1JTl9NQVRDSCAtIDE7XG4gIHMubWF0Y2hfYXZhaWxhYmxlID0gMDtcbiAgcy5pbnNfaCA9IDA7XG59XG5cblxuZnVuY3Rpb24gRGVmbGF0ZVN0YXRlKCkge1xuICB0aGlzLnN0cm0gPSBudWxsOyAgICAgICAgICAgIC8qIHBvaW50ZXIgYmFjayB0byB0aGlzIHpsaWIgc3RyZWFtICovXG4gIHRoaXMuc3RhdHVzID0gMDsgICAgICAgICAgICAvKiBhcyB0aGUgbmFtZSBpbXBsaWVzICovXG4gIHRoaXMucGVuZGluZ19idWYgPSBudWxsOyAgICAgIC8qIG91dHB1dCBzdGlsbCBwZW5kaW5nICovXG4gIHRoaXMucGVuZGluZ19idWZfc2l6ZSA9IDA7ICAvKiBzaXplIG9mIHBlbmRpbmdfYnVmICovXG4gIHRoaXMucGVuZGluZ19vdXQgPSAwOyAgICAgICAvKiBuZXh0IHBlbmRpbmcgYnl0ZSB0byBvdXRwdXQgdG8gdGhlIHN0cmVhbSAqL1xuICB0aGlzLnBlbmRpbmcgPSAwOyAgICAgICAgICAgLyogbmIgb2YgYnl0ZXMgaW4gdGhlIHBlbmRpbmcgYnVmZmVyICovXG4gIHRoaXMud3JhcCA9IDA7ICAgICAgICAgICAgICAvKiBiaXQgMCB0cnVlIGZvciB6bGliLCBiaXQgMSB0cnVlIGZvciBnemlwICovXG4gIHRoaXMuZ3poZWFkID0gbnVsbDsgICAgICAgICAvKiBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiB0byB3cml0ZSAqL1xuICB0aGlzLmd6aW5kZXggPSAwOyAgICAgICAgICAgLyogd2hlcmUgaW4gZXh0cmEsIG5hbWUsIG9yIGNvbW1lbnQgKi9cbiAgdGhpcy5tZXRob2QgPSBaX0RFRkxBVEVEOyAvKiBjYW4gb25seSBiZSBERUZMQVRFRCAqL1xuICB0aGlzLmxhc3RfZmx1c2ggPSAtMTsgICAvKiB2YWx1ZSBvZiBmbHVzaCBwYXJhbSBmb3IgcHJldmlvdXMgZGVmbGF0ZSBjYWxsICovXG5cbiAgdGhpcy53X3NpemUgPSAwOyAgLyogTFo3NyB3aW5kb3cgc2l6ZSAoMzJLIGJ5IGRlZmF1bHQpICovXG4gIHRoaXMud19iaXRzID0gMDsgIC8qIGxvZzIod19zaXplKSAgKDguLjE2KSAqL1xuICB0aGlzLndfbWFzayA9IDA7ICAvKiB3X3NpemUgLSAxICovXG5cbiAgdGhpcy53aW5kb3cgPSBudWxsO1xuICAvKiBTbGlkaW5nIHdpbmRvdy4gSW5wdXQgYnl0ZXMgYXJlIHJlYWQgaW50byB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIHdpbmRvdyxcbiAgICogYW5kIG1vdmUgdG8gdGhlIGZpcnN0IGhhbGYgbGF0ZXIgdG8ga2VlcCBhIGRpY3Rpb25hcnkgb2YgYXQgbGVhc3Qgd1NpemVcbiAgICogYnl0ZXMuIFdpdGggdGhpcyBvcmdhbml6YXRpb24sIG1hdGNoZXMgYXJlIGxpbWl0ZWQgdG8gYSBkaXN0YW5jZSBvZlxuICAgKiB3U2l6ZS1NQVhfTUFUQ0ggYnl0ZXMsIGJ1dCB0aGlzIGVuc3VyZXMgdGhhdCBJTyBpcyBhbHdheXNcbiAgICogcGVyZm9ybWVkIHdpdGggYSBsZW5ndGggbXVsdGlwbGUgb2YgdGhlIGJsb2NrIHNpemUuXG4gICAqL1xuXG4gIHRoaXMud2luZG93X3NpemUgPSAwO1xuICAvKiBBY3R1YWwgc2l6ZSBvZiB3aW5kb3c6IDIqd1NpemUsIGV4Y2VwdCB3aGVuIHRoZSB1c2VyIGlucHV0IGJ1ZmZlclxuICAgKiBpcyBkaXJlY3RseSB1c2VkIGFzIHNsaWRpbmcgd2luZG93LlxuICAgKi9cblxuICB0aGlzLnByZXYgPSBudWxsO1xuICAvKiBMaW5rIHRvIG9sZGVyIHN0cmluZyB3aXRoIHNhbWUgaGFzaCBpbmRleC4gVG8gbGltaXQgdGhlIHNpemUgb2YgdGhpc1xuICAgKiBhcnJheSB0byA2NEssIHRoaXMgbGluayBpcyBtYWludGFpbmVkIG9ubHkgZm9yIHRoZSBsYXN0IDMySyBzdHJpbmdzLlxuICAgKiBBbiBpbmRleCBpbiB0aGlzIGFycmF5IGlzIHRodXMgYSB3aW5kb3cgaW5kZXggbW9kdWxvIDMySy5cbiAgICovXG5cbiAgdGhpcy5oZWFkID0gbnVsbDsgICAvKiBIZWFkcyBvZiB0aGUgaGFzaCBjaGFpbnMgb3IgTklMLiAqL1xuXG4gIHRoaXMuaW5zX2ggPSAwOyAgICAgICAvKiBoYXNoIGluZGV4IG9mIHN0cmluZyB0byBiZSBpbnNlcnRlZCAqL1xuICB0aGlzLmhhc2hfc2l6ZSA9IDA7ICAgLyogbnVtYmVyIG9mIGVsZW1lbnRzIGluIGhhc2ggdGFibGUgKi9cbiAgdGhpcy5oYXNoX2JpdHMgPSAwOyAgIC8qIGxvZzIoaGFzaF9zaXplKSAqL1xuICB0aGlzLmhhc2hfbWFzayA9IDA7ICAgLyogaGFzaF9zaXplLTEgKi9cblxuICB0aGlzLmhhc2hfc2hpZnQgPSAwO1xuICAvKiBOdW1iZXIgb2YgYml0cyBieSB3aGljaCBpbnNfaCBtdXN0IGJlIHNoaWZ0ZWQgYXQgZWFjaCBpbnB1dFxuICAgKiBzdGVwLiBJdCBtdXN0IGJlIHN1Y2ggdGhhdCBhZnRlciBNSU5fTUFUQ0ggc3RlcHMsIHRoZSBvbGRlc3RcbiAgICogYnl0ZSBubyBsb25nZXIgdGFrZXMgcGFydCBpbiB0aGUgaGFzaCBrZXksIHRoYXQgaXM6XG4gICAqICAgaGFzaF9zaGlmdCAqIE1JTl9NQVRDSCA+PSBoYXNoX2JpdHNcbiAgICovXG5cbiAgdGhpcy5ibG9ja19zdGFydCA9IDA7XG4gIC8qIFdpbmRvdyBwb3NpdGlvbiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IG91dHB1dCBibG9jay4gR2V0c1xuICAgKiBuZWdhdGl2ZSB3aGVuIHRoZSB3aW5kb3cgaXMgbW92ZWQgYmFja3dhcmRzLlxuICAgKi9cblxuICB0aGlzLm1hdGNoX2xlbmd0aCA9IDA7ICAgICAgLyogbGVuZ3RoIG9mIGJlc3QgbWF0Y2ggKi9cbiAgdGhpcy5wcmV2X21hdGNoID0gMDsgICAgICAgIC8qIHByZXZpb3VzIG1hdGNoICovXG4gIHRoaXMubWF0Y2hfYXZhaWxhYmxlID0gMDsgICAvKiBzZXQgaWYgcHJldmlvdXMgbWF0Y2ggZXhpc3RzICovXG4gIHRoaXMuc3Ryc3RhcnQgPSAwOyAgICAgICAgICAvKiBzdGFydCBvZiBzdHJpbmcgdG8gaW5zZXJ0ICovXG4gIHRoaXMubWF0Y2hfc3RhcnQgPSAwOyAgICAgICAvKiBzdGFydCBvZiBtYXRjaGluZyBzdHJpbmcgKi9cbiAgdGhpcy5sb29rYWhlYWQgPSAwOyAgICAgICAgIC8qIG51bWJlciBvZiB2YWxpZCBieXRlcyBhaGVhZCBpbiB3aW5kb3cgKi9cblxuICB0aGlzLnByZXZfbGVuZ3RoID0gMDtcbiAgLyogTGVuZ3RoIG9mIHRoZSBiZXN0IG1hdGNoIGF0IHByZXZpb3VzIHN0ZXAuIE1hdGNoZXMgbm90IGdyZWF0ZXIgdGhhbiB0aGlzXG4gICAqIGFyZSBkaXNjYXJkZWQuIFRoaXMgaXMgdXNlZCBpbiB0aGUgbGF6eSBtYXRjaCBldmFsdWF0aW9uLlxuICAgKi9cblxuICB0aGlzLm1heF9jaGFpbl9sZW5ndGggPSAwO1xuICAvKiBUbyBzcGVlZCB1cCBkZWZsYXRpb24sIGhhc2ggY2hhaW5zIGFyZSBuZXZlciBzZWFyY2hlZCBiZXlvbmQgdGhpc1xuICAgKiBsZW5ndGguICBBIGhpZ2hlciBsaW1pdCBpbXByb3ZlcyBjb21wcmVzc2lvbiByYXRpbyBidXQgZGVncmFkZXMgdGhlXG4gICAqIHNwZWVkLlxuICAgKi9cblxuICB0aGlzLm1heF9sYXp5X21hdGNoID0gMDtcbiAgLyogQXR0ZW1wdCB0byBmaW5kIGEgYmV0dGVyIG1hdGNoIG9ubHkgd2hlbiB0aGUgY3VycmVudCBtYXRjaCBpcyBzdHJpY3RseVxuICAgKiBzbWFsbGVyIHRoYW4gdGhpcyB2YWx1ZS4gVGhpcyBtZWNoYW5pc20gaXMgdXNlZCBvbmx5IGZvciBjb21wcmVzc2lvblxuICAgKiBsZXZlbHMgPj0gNC5cbiAgICovXG4gIC8vIFRoYXQncyBhbGlhcyB0byBtYXhfbGF6eV9tYXRjaCwgZG9uJ3QgdXNlIGRpcmVjdGx5XG4gIC8vdGhpcy5tYXhfaW5zZXJ0X2xlbmd0aCA9IDA7XG4gIC8qIEluc2VydCBuZXcgc3RyaW5ncyBpbiB0aGUgaGFzaCB0YWJsZSBvbmx5IGlmIHRoZSBtYXRjaCBsZW5ndGggaXMgbm90XG4gICAqIGdyZWF0ZXIgdGhhbiB0aGlzIGxlbmd0aC4gVGhpcyBzYXZlcyB0aW1lIGJ1dCBkZWdyYWRlcyBjb21wcmVzc2lvbi5cbiAgICogbWF4X2luc2VydF9sZW5ndGggaXMgdXNlZCBvbmx5IGZvciBjb21wcmVzc2lvbiBsZXZlbHMgPD0gMy5cbiAgICovXG5cbiAgdGhpcy5sZXZlbCA9IDA7ICAgICAvKiBjb21wcmVzc2lvbiBsZXZlbCAoMS4uOSkgKi9cbiAgdGhpcy5zdHJhdGVneSA9IDA7ICAvKiBmYXZvciBvciBmb3JjZSBIdWZmbWFuIGNvZGluZyovXG5cbiAgdGhpcy5nb29kX21hdGNoID0gMDtcbiAgLyogVXNlIGEgZmFzdGVyIHNlYXJjaCB3aGVuIHRoZSBwcmV2aW91cyBtYXRjaCBpcyBsb25nZXIgdGhhbiB0aGlzICovXG5cbiAgdGhpcy5uaWNlX21hdGNoID0gMDsgLyogU3RvcCBzZWFyY2hpbmcgd2hlbiBjdXJyZW50IG1hdGNoIGV4Y2VlZHMgdGhpcyAqL1xuXG4gICAgICAgICAgICAgIC8qIHVzZWQgYnkgdHJlZXMuYzogKi9cblxuICAvKiBEaWRuJ3QgdXNlIGN0X2RhdGEgdHlwZWRlZiBiZWxvdyB0byBzdXBwcmVzcyBjb21waWxlciB3YXJuaW5nICovXG5cbiAgLy8gc3RydWN0IGN0X2RhdGFfcyBkeW5fbHRyZWVbSEVBUF9TSVpFXTsgICAvKiBsaXRlcmFsIGFuZCBsZW5ndGggdHJlZSAqL1xuICAvLyBzdHJ1Y3QgY3RfZGF0YV9zIGR5bl9kdHJlZVsyKkRfQ09ERVMrMV07IC8qIGRpc3RhbmNlIHRyZWUgKi9cbiAgLy8gc3RydWN0IGN0X2RhdGFfcyBibF90cmVlWzIqQkxfQ09ERVMrMV07ICAvKiBIdWZmbWFuIHRyZWUgZm9yIGJpdCBsZW5ndGhzICovXG5cbiAgLy8gVXNlIGZsYXQgYXJyYXkgb2YgRE9VQkxFIHNpemUsIHdpdGggaW50ZXJsZWF2ZWQgZmF0YSxcbiAgLy8gYmVjYXVzZSBKUyBkb2VzIG5vdCBzdXBwb3J0IGVmZmVjdGl2ZVxuICB0aGlzLmR5bl9sdHJlZSAgPSBuZXcgdXRpbHMuQnVmMTYoSEVBUF9TSVpFICogMik7XG4gIHRoaXMuZHluX2R0cmVlICA9IG5ldyB1dGlscy5CdWYxNigoMiAqIERfQ09ERVMgKyAxKSAqIDIpO1xuICB0aGlzLmJsX3RyZWUgICAgPSBuZXcgdXRpbHMuQnVmMTYoKDIgKiBCTF9DT0RFUyArIDEpICogMik7XG4gIHplcm8odGhpcy5keW5fbHRyZWUpO1xuICB6ZXJvKHRoaXMuZHluX2R0cmVlKTtcbiAgemVybyh0aGlzLmJsX3RyZWUpO1xuXG4gIHRoaXMubF9kZXNjICAgPSBudWxsOyAgICAgICAgIC8qIGRlc2MuIGZvciBsaXRlcmFsIHRyZWUgKi9cbiAgdGhpcy5kX2Rlc2MgICA9IG51bGw7ICAgICAgICAgLyogZGVzYy4gZm9yIGRpc3RhbmNlIHRyZWUgKi9cbiAgdGhpcy5ibF9kZXNjICA9IG51bGw7ICAgICAgICAgLyogZGVzYy4gZm9yIGJpdCBsZW5ndGggdHJlZSAqL1xuXG4gIC8vdXNoIGJsX2NvdW50W01BWF9CSVRTKzFdO1xuICB0aGlzLmJsX2NvdW50ID0gbmV3IHV0aWxzLkJ1ZjE2KE1BWF9CSVRTICsgMSk7XG4gIC8qIG51bWJlciBvZiBjb2RlcyBhdCBlYWNoIGJpdCBsZW5ndGggZm9yIGFuIG9wdGltYWwgdHJlZSAqL1xuXG4gIC8vaW50IGhlYXBbMipMX0NPREVTKzFdOyAgICAgIC8qIGhlYXAgdXNlZCB0byBidWlsZCB0aGUgSHVmZm1hbiB0cmVlcyAqL1xuICB0aGlzLmhlYXAgPSBuZXcgdXRpbHMuQnVmMTYoMiAqIExfQ09ERVMgKyAxKTsgIC8qIGhlYXAgdXNlZCB0byBidWlsZCB0aGUgSHVmZm1hbiB0cmVlcyAqL1xuICB6ZXJvKHRoaXMuaGVhcCk7XG5cbiAgdGhpcy5oZWFwX2xlbiA9IDA7ICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBoZWFwICovXG4gIHRoaXMuaGVhcF9tYXggPSAwOyAgICAgICAgICAgICAgIC8qIGVsZW1lbnQgb2YgbGFyZ2VzdCBmcmVxdWVuY3kgKi9cbiAgLyogVGhlIHNvbnMgb2YgaGVhcFtuXSBhcmUgaGVhcFsyKm5dIGFuZCBoZWFwWzIqbisxXS4gaGVhcFswXSBpcyBub3QgdXNlZC5cbiAgICogVGhlIHNhbWUgaGVhcCBhcnJheSBpcyB1c2VkIHRvIGJ1aWxkIGFsbCB0cmVlcy5cbiAgICovXG5cbiAgdGhpcy5kZXB0aCA9IG5ldyB1dGlscy5CdWYxNigyICogTF9DT0RFUyArIDEpOyAvL3VjaCBkZXB0aFsyKkxfQ09ERVMrMV07XG4gIHplcm8odGhpcy5kZXB0aCk7XG4gIC8qIERlcHRoIG9mIGVhY2ggc3VidHJlZSB1c2VkIGFzIHRpZSBicmVha2VyIGZvciB0cmVlcyBvZiBlcXVhbCBmcmVxdWVuY3lcbiAgICovXG5cbiAgdGhpcy5sX2J1ZiA9IDA7ICAgICAgICAgIC8qIGJ1ZmZlciBpbmRleCBmb3IgbGl0ZXJhbHMgb3IgbGVuZ3RocyAqL1xuXG4gIHRoaXMubGl0X2J1ZnNpemUgPSAwO1xuICAvKiBTaXplIG9mIG1hdGNoIGJ1ZmZlciBmb3IgbGl0ZXJhbHMvbGVuZ3Rocy4gIFRoZXJlIGFyZSA0IHJlYXNvbnMgZm9yXG4gICAqIGxpbWl0aW5nIGxpdF9idWZzaXplIHRvIDY0SzpcbiAgICogICAtIGZyZXF1ZW5jaWVzIGNhbiBiZSBrZXB0IGluIDE2IGJpdCBjb3VudGVyc1xuICAgKiAgIC0gaWYgY29tcHJlc3Npb24gaXMgbm90IHN1Y2Nlc3NmdWwgZm9yIHRoZSBmaXJzdCBibG9jaywgYWxsIGlucHV0XG4gICAqICAgICBkYXRhIGlzIHN0aWxsIGluIHRoZSB3aW5kb3cgc28gd2UgY2FuIHN0aWxsIGVtaXQgYSBzdG9yZWQgYmxvY2sgZXZlblxuICAgKiAgICAgd2hlbiBpbnB1dCBjb21lcyBmcm9tIHN0YW5kYXJkIGlucHV0LiAgKFRoaXMgY2FuIGFsc28gYmUgZG9uZSBmb3JcbiAgICogICAgIGFsbCBibG9ja3MgaWYgbGl0X2J1ZnNpemUgaXMgbm90IGdyZWF0ZXIgdGhhbiAzMksuKVxuICAgKiAgIC0gaWYgY29tcHJlc3Npb24gaXMgbm90IHN1Y2Nlc3NmdWwgZm9yIGEgZmlsZSBzbWFsbGVyIHRoYW4gNjRLLCB3ZSBjYW5cbiAgICogICAgIGV2ZW4gZW1pdCBhIHN0b3JlZCBmaWxlIGluc3RlYWQgb2YgYSBzdG9yZWQgYmxvY2sgKHNhdmluZyA1IGJ5dGVzKS5cbiAgICogICAgIFRoaXMgaXMgYXBwbGljYWJsZSBvbmx5IGZvciB6aXAgKG5vdCBnemlwIG9yIHpsaWIpLlxuICAgKiAgIC0gY3JlYXRpbmcgbmV3IEh1ZmZtYW4gdHJlZXMgbGVzcyBmcmVxdWVudGx5IG1heSBub3QgcHJvdmlkZSBmYXN0XG4gICAqICAgICBhZGFwdGF0aW9uIHRvIGNoYW5nZXMgaW4gdGhlIGlucHV0IGRhdGEgc3RhdGlzdGljcy4gKFRha2UgZm9yXG4gICAqICAgICBleGFtcGxlIGEgYmluYXJ5IGZpbGUgd2l0aCBwb29ybHkgY29tcHJlc3NpYmxlIGNvZGUgZm9sbG93ZWQgYnlcbiAgICogICAgIGEgaGlnaGx5IGNvbXByZXNzaWJsZSBzdHJpbmcgdGFibGUuKSBTbWFsbGVyIGJ1ZmZlciBzaXplcyBnaXZlXG4gICAqICAgICBmYXN0IGFkYXB0YXRpb24gYnV0IGhhdmUgb2YgY291cnNlIHRoZSBvdmVyaGVhZCBvZiB0cmFuc21pdHRpbmdcbiAgICogICAgIHRyZWVzIG1vcmUgZnJlcXVlbnRseS5cbiAgICogICAtIEkgY2FuJ3QgY291bnQgYWJvdmUgNFxuICAgKi9cblxuICB0aGlzLmxhc3RfbGl0ID0gMDsgICAgICAvKiBydW5uaW5nIGluZGV4IGluIGxfYnVmICovXG5cbiAgdGhpcy5kX2J1ZiA9IDA7XG4gIC8qIEJ1ZmZlciBpbmRleCBmb3IgZGlzdGFuY2VzLiBUbyBzaW1wbGlmeSB0aGUgY29kZSwgZF9idWYgYW5kIGxfYnVmIGhhdmVcbiAgICogdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1lbnRzLiBUbyB1c2UgZGlmZmVyZW50IGxlbmd0aHMsIGFuIGV4dHJhIGZsYWdcbiAgICogYXJyYXkgd291bGQgYmUgbmVjZXNzYXJ5LlxuICAgKi9cblxuICB0aGlzLm9wdF9sZW4gPSAwOyAgICAgICAvKiBiaXQgbGVuZ3RoIG9mIGN1cnJlbnQgYmxvY2sgd2l0aCBvcHRpbWFsIHRyZWVzICovXG4gIHRoaXMuc3RhdGljX2xlbiA9IDA7ICAgIC8qIGJpdCBsZW5ndGggb2YgY3VycmVudCBibG9jayB3aXRoIHN0YXRpYyB0cmVlcyAqL1xuICB0aGlzLm1hdGNoZXMgPSAwOyAgICAgICAvKiBudW1iZXIgb2Ygc3RyaW5nIG1hdGNoZXMgaW4gY3VycmVudCBibG9jayAqL1xuICB0aGlzLmluc2VydCA9IDA7ICAgICAgICAvKiBieXRlcyBhdCBlbmQgb2Ygd2luZG93IGxlZnQgdG8gaW5zZXJ0ICovXG5cblxuICB0aGlzLmJpX2J1ZiA9IDA7XG4gIC8qIE91dHB1dCBidWZmZXIuIGJpdHMgYXJlIGluc2VydGVkIHN0YXJ0aW5nIGF0IHRoZSBib3R0b20gKGxlYXN0XG4gICAqIHNpZ25pZmljYW50IGJpdHMpLlxuICAgKi9cbiAgdGhpcy5iaV92YWxpZCA9IDA7XG4gIC8qIE51bWJlciBvZiB2YWxpZCBiaXRzIGluIGJpX2J1Zi4gIEFsbCBiaXRzIGFib3ZlIHRoZSBsYXN0IHZhbGlkIGJpdFxuICAgKiBhcmUgYWx3YXlzIHplcm8uXG4gICAqL1xuXG4gIC8vIFVzZWQgZm9yIHdpbmRvdyBtZW1vcnkgaW5pdC4gV2Ugc2FmZWx5IGlnbm9yZSBpdCBmb3IgSlMuIFRoYXQgbWFrZXNcbiAgLy8gc2Vuc2Ugb25seSBmb3IgcG9pbnRlcnMgYW5kIG1lbW9yeSBjaGVjayB0b29scy5cbiAgLy90aGlzLmhpZ2hfd2F0ZXIgPSAwO1xuICAvKiBIaWdoIHdhdGVyIG1hcmsgb2Zmc2V0IGluIHdpbmRvdyBmb3IgaW5pdGlhbGl6ZWQgYnl0ZXMgLS0gYnl0ZXMgYWJvdmVcbiAgICogdGhpcyBhcmUgc2V0IHRvIHplcm8gaW4gb3JkZXIgdG8gYXZvaWQgbWVtb3J5IGNoZWNrIHdhcm5pbmdzIHdoZW5cbiAgICogbG9uZ2VzdCBtYXRjaCByb3V0aW5lcyBhY2Nlc3MgYnl0ZXMgcGFzdCB0aGUgaW5wdXQuICBUaGlzIGlzIHRoZW5cbiAgICogdXBkYXRlZCB0byB0aGUgbmV3IGhpZ2ggd2F0ZXIgbWFyay5cbiAgICovXG59XG5cblxuZnVuY3Rpb24gZGVmbGF0ZVJlc2V0S2VlcChzdHJtKSB7XG4gIHZhciBzO1xuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkge1xuICAgIHJldHVybiBlcnIoc3RybSwgWl9TVFJFQU1fRVJST1IpO1xuICB9XG5cbiAgc3RybS50b3RhbF9pbiA9IHN0cm0udG90YWxfb3V0ID0gMDtcbiAgc3RybS5kYXRhX3R5cGUgPSBaX1VOS05PV047XG5cbiAgcyA9IHN0cm0uc3RhdGU7XG4gIHMucGVuZGluZyA9IDA7XG4gIHMucGVuZGluZ19vdXQgPSAwO1xuXG4gIGlmIChzLndyYXAgPCAwKSB7XG4gICAgcy53cmFwID0gLXMud3JhcDtcbiAgICAvKiB3YXMgbWFkZSBuZWdhdGl2ZSBieSBkZWZsYXRlKC4uLiwgWl9GSU5JU0gpOyAqL1xuICB9XG4gIHMuc3RhdHVzID0gKHMud3JhcCA/IElOSVRfU1RBVEUgOiBCVVNZX1NUQVRFKTtcbiAgc3RybS5hZGxlciA9IChzLndyYXAgPT09IDIpID9cbiAgICAwICAvLyBjcmMzMigwLCBaX05VTEwsIDApXG4gIDpcbiAgICAxOyAvLyBhZGxlcjMyKDAsIFpfTlVMTCwgMClcbiAgcy5sYXN0X2ZsdXNoID0gWl9OT19GTFVTSDtcbiAgdHJlZXMuX3RyX2luaXQocyk7XG4gIHJldHVybiBaX09LO1xufVxuXG5cbmZ1bmN0aW9uIGRlZmxhdGVSZXNldChzdHJtKSB7XG4gIHZhciByZXQgPSBkZWZsYXRlUmVzZXRLZWVwKHN0cm0pO1xuICBpZiAocmV0ID09PSBaX09LKSB7XG4gICAgbG1faW5pdChzdHJtLnN0YXRlKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5cbmZ1bmN0aW9uIGRlZmxhdGVTZXRIZWFkZXIoc3RybSwgaGVhZCkge1xuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUpIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIGlmIChzdHJtLnN0YXRlLndyYXAgIT09IDIpIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIHN0cm0uc3RhdGUuZ3poZWFkID0gaGVhZDtcbiAgcmV0dXJuIFpfT0s7XG59XG5cblxuZnVuY3Rpb24gZGVmbGF0ZUluaXQyKHN0cm0sIGxldmVsLCBtZXRob2QsIHdpbmRvd0JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSkge1xuICBpZiAoIXN0cm0pIHsgLy8gPT09IFpfTlVMTFxuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuICB2YXIgd3JhcCA9IDE7XG5cbiAgaWYgKGxldmVsID09PSBaX0RFRkFVTFRfQ09NUFJFU1NJT04pIHtcbiAgICBsZXZlbCA9IDY7XG4gIH1cblxuICBpZiAod2luZG93Qml0cyA8IDApIHsgLyogc3VwcHJlc3MgemxpYiB3cmFwcGVyICovXG4gICAgd3JhcCA9IDA7XG4gICAgd2luZG93Qml0cyA9IC13aW5kb3dCaXRzO1xuICB9XG5cbiAgZWxzZSBpZiAod2luZG93Qml0cyA+IDE1KSB7XG4gICAgd3JhcCA9IDI7ICAgICAgICAgICAvKiB3cml0ZSBnemlwIHdyYXBwZXIgaW5zdGVhZCAqL1xuICAgIHdpbmRvd0JpdHMgLT0gMTY7XG4gIH1cblxuXG4gIGlmIChtZW1MZXZlbCA8IDEgfHwgbWVtTGV2ZWwgPiBNQVhfTUVNX0xFVkVMIHx8IG1ldGhvZCAhPT0gWl9ERUZMQVRFRCB8fFxuICAgIHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSB8fCBsZXZlbCA8IDAgfHwgbGV2ZWwgPiA5IHx8XG4gICAgc3RyYXRlZ3kgPCAwIHx8IHN0cmF0ZWd5ID4gWl9GSVhFRCkge1xuICAgIHJldHVybiBlcnIoc3RybSwgWl9TVFJFQU1fRVJST1IpO1xuICB9XG5cblxuICBpZiAod2luZG93Qml0cyA9PT0gOCkge1xuICAgIHdpbmRvd0JpdHMgPSA5O1xuICB9XG4gIC8qIHVudGlsIDI1Ni1ieXRlIHdpbmRvdyBidWcgZml4ZWQgKi9cblxuICB2YXIgcyA9IG5ldyBEZWZsYXRlU3RhdGUoKTtcblxuICBzdHJtLnN0YXRlID0gcztcbiAgcy5zdHJtID0gc3RybTtcblxuICBzLndyYXAgPSB3cmFwO1xuICBzLmd6aGVhZCA9IG51bGw7XG4gIHMud19iaXRzID0gd2luZG93Qml0cztcbiAgcy53X3NpemUgPSAxIDw8IHMud19iaXRzO1xuICBzLndfbWFzayA9IHMud19zaXplIC0gMTtcblxuICBzLmhhc2hfYml0cyA9IG1lbUxldmVsICsgNztcbiAgcy5oYXNoX3NpemUgPSAxIDw8IHMuaGFzaF9iaXRzO1xuICBzLmhhc2hfbWFzayA9IHMuaGFzaF9zaXplIC0gMTtcbiAgcy5oYXNoX3NoaWZ0ID0gfn4oKHMuaGFzaF9iaXRzICsgTUlOX01BVENIIC0gMSkgLyBNSU5fTUFUQ0gpO1xuXG4gIHMud2luZG93ID0gbmV3IHV0aWxzLkJ1Zjgocy53X3NpemUgKiAyKTtcbiAgcy5oZWFkID0gbmV3IHV0aWxzLkJ1ZjE2KHMuaGFzaF9zaXplKTtcbiAgcy5wcmV2ID0gbmV3IHV0aWxzLkJ1ZjE2KHMud19zaXplKTtcblxuICAvLyBEb24ndCBuZWVkIG1lbSBpbml0IG1hZ2ljIGZvciBKUy5cbiAgLy9zLmhpZ2hfd2F0ZXIgPSAwOyAgLyogbm90aGluZyB3cml0dGVuIHRvIHMtPndpbmRvdyB5ZXQgKi9cblxuICBzLmxpdF9idWZzaXplID0gMSA8PCAobWVtTGV2ZWwgKyA2KTsgLyogMTZLIGVsZW1lbnRzIGJ5IGRlZmF1bHQgKi9cblxuICBzLnBlbmRpbmdfYnVmX3NpemUgPSBzLmxpdF9idWZzaXplICogNDtcblxuICAvL292ZXJsYXkgPSAodXNoZiAqKSBaQUxMT0Moc3RybSwgcy0+bGl0X2J1ZnNpemUsIHNpemVvZih1c2gpKzIpO1xuICAvL3MtPnBlbmRpbmdfYnVmID0gKHVjaGYgKikgb3ZlcmxheTtcbiAgcy5wZW5kaW5nX2J1ZiA9IG5ldyB1dGlscy5CdWY4KHMucGVuZGluZ19idWZfc2l6ZSk7XG5cbiAgLy8gSXQgaXMgb2Zmc2V0IGZyb20gYHMucGVuZGluZ19idWZgIChzaXplIGlzIGBzLmxpdF9idWZzaXplICogMmApXG4gIC8vcy0+ZF9idWYgPSBvdmVybGF5ICsgcy0+bGl0X2J1ZnNpemUvc2l6ZW9mKHVzaCk7XG4gIHMuZF9idWYgPSAxICogcy5saXRfYnVmc2l6ZTtcblxuICAvL3MtPmxfYnVmID0gcy0+cGVuZGluZ19idWYgKyAoMStzaXplb2YodXNoKSkqcy0+bGl0X2J1ZnNpemU7XG4gIHMubF9idWYgPSAoMSArIDIpICogcy5saXRfYnVmc2l6ZTtcblxuICBzLmxldmVsID0gbGV2ZWw7XG4gIHMuc3RyYXRlZ3kgPSBzdHJhdGVneTtcbiAgcy5tZXRob2QgPSBtZXRob2Q7XG5cbiAgcmV0dXJuIGRlZmxhdGVSZXNldChzdHJtKTtcbn1cblxuZnVuY3Rpb24gZGVmbGF0ZUluaXQoc3RybSwgbGV2ZWwpIHtcbiAgcmV0dXJuIGRlZmxhdGVJbml0MihzdHJtLCBsZXZlbCwgWl9ERUZMQVRFRCwgTUFYX1dCSVRTLCBERUZfTUVNX0xFVkVMLCBaX0RFRkFVTFRfU1RSQVRFR1kpO1xufVxuXG5cbmZ1bmN0aW9uIGRlZmxhdGUoc3RybSwgZmx1c2gpIHtcbiAgdmFyIG9sZF9mbHVzaCwgcztcbiAgdmFyIGJlZywgdmFsOyAvLyBmb3IgZ3ppcCBoZWFkZXIgd3JpdGUgb25seVxuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSB8fFxuICAgIGZsdXNoID4gWl9CTE9DSyB8fCBmbHVzaCA8IDApIHtcbiAgICByZXR1cm4gc3RybSA/IGVycihzdHJtLCBaX1NUUkVBTV9FUlJPUikgOiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuXG4gIHMgPSBzdHJtLnN0YXRlO1xuXG4gIGlmICghc3RybS5vdXRwdXQgfHxcbiAgICAgICghc3RybS5pbnB1dCAmJiBzdHJtLmF2YWlsX2luICE9PSAwKSB8fFxuICAgICAgKHMuc3RhdHVzID09PSBGSU5JU0hfU1RBVEUgJiYgZmx1c2ggIT09IFpfRklOSVNIKSkge1xuICAgIHJldHVybiBlcnIoc3RybSwgKHN0cm0uYXZhaWxfb3V0ID09PSAwKSA/IFpfQlVGX0VSUk9SIDogWl9TVFJFQU1fRVJST1IpO1xuICB9XG5cbiAgcy5zdHJtID0gc3RybTsgLyoganVzdCBpbiBjYXNlICovXG4gIG9sZF9mbHVzaCA9IHMubGFzdF9mbHVzaDtcbiAgcy5sYXN0X2ZsdXNoID0gZmx1c2g7XG5cbiAgLyogV3JpdGUgdGhlIGhlYWRlciAqL1xuICBpZiAocy5zdGF0dXMgPT09IElOSVRfU1RBVEUpIHtcblxuICAgIGlmIChzLndyYXAgPT09IDIpIHsgLy8gR1pJUCBoZWFkZXJcbiAgICAgIHN0cm0uYWRsZXIgPSAwOyAgLy9jcmMzMigwTCwgWl9OVUxMLCAwKTtcbiAgICAgIHB1dF9ieXRlKHMsIDMxKTtcbiAgICAgIHB1dF9ieXRlKHMsIDEzOSk7XG4gICAgICBwdXRfYnl0ZShzLCA4KTtcbiAgICAgIGlmICghcy5nemhlYWQpIHsgLy8gcy0+Z3poZWFkID09IFpfTlVMTFxuICAgICAgICBwdXRfYnl0ZShzLCAwKTtcbiAgICAgICAgcHV0X2J5dGUocywgMCk7XG4gICAgICAgIHB1dF9ieXRlKHMsIDApO1xuICAgICAgICBwdXRfYnl0ZShzLCAwKTtcbiAgICAgICAgcHV0X2J5dGUocywgMCk7XG4gICAgICAgIHB1dF9ieXRlKHMsIHMubGV2ZWwgPT09IDkgPyAyIDpcbiAgICAgICAgICAgICAgICAgICAgKHMuc3RyYXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy5sZXZlbCA8IDIgP1xuICAgICAgICAgICAgICAgICAgICAgNCA6IDApKTtcbiAgICAgICAgcHV0X2J5dGUocywgT1NfQ09ERSk7XG4gICAgICAgIHMuc3RhdHVzID0gQlVTWV9TVEFURTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGV4dCA/IDEgOiAwKSArXG4gICAgICAgICAgICAgICAgICAgIChzLmd6aGVhZC5oY3JjID8gMiA6IDApICtcbiAgICAgICAgICAgICAgICAgICAgKCFzLmd6aGVhZC5leHRyYSA/IDAgOiA0KSArXG4gICAgICAgICAgICAgICAgICAgICghcy5nemhlYWQubmFtZSA/IDAgOiA4KSArXG4gICAgICAgICAgICAgICAgICAgICghcy5nemhlYWQuY29tbWVudCA/IDAgOiAxNilcbiAgICAgICAgKTtcbiAgICAgICAgcHV0X2J5dGUocywgcy5nemhlYWQudGltZSAmIDB4ZmYpO1xuICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGltZSA+PiA4KSAmIDB4ZmYpO1xuICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGltZSA+PiAxNikgJiAweGZmKTtcbiAgICAgICAgcHV0X2J5dGUocywgKHMuZ3poZWFkLnRpbWUgPj4gMjQpICYgMHhmZik7XG4gICAgICAgIHB1dF9ieXRlKHMsIHMubGV2ZWwgPT09IDkgPyAyIDpcbiAgICAgICAgICAgICAgICAgICAgKHMuc3RyYXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy5sZXZlbCA8IDIgP1xuICAgICAgICAgICAgICAgICAgICAgNCA6IDApKTtcbiAgICAgICAgcHV0X2J5dGUocywgcy5nemhlYWQub3MgJiAweGZmKTtcbiAgICAgICAgaWYgKHMuZ3poZWFkLmV4dHJhICYmIHMuZ3poZWFkLmV4dHJhLmxlbmd0aCkge1xuICAgICAgICAgIHB1dF9ieXRlKHMsIHMuZ3poZWFkLmV4dHJhLmxlbmd0aCAmIDB4ZmYpO1xuICAgICAgICAgIHB1dF9ieXRlKHMsIChzLmd6aGVhZC5leHRyYS5sZW5ndGggPj4gOCkgJiAweGZmKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocy5nemhlYWQuaGNyYykge1xuICAgICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcsIDApO1xuICAgICAgICB9XG4gICAgICAgIHMuZ3ppbmRleCA9IDA7XG4gICAgICAgIHMuc3RhdHVzID0gRVhUUkFfU1RBVEU7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgLy8gREVGTEFURSBoZWFkZXJcbiAgICB7XG4gICAgICB2YXIgaGVhZGVyID0gKFpfREVGTEFURUQgKyAoKHMud19iaXRzIC0gOCkgPDwgNCkpIDw8IDg7XG4gICAgICB2YXIgbGV2ZWxfZmxhZ3MgPSAtMTtcblxuICAgICAgaWYgKHMuc3RyYXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy5sZXZlbCA8IDIpIHtcbiAgICAgICAgbGV2ZWxfZmxhZ3MgPSAwO1xuICAgICAgfSBlbHNlIGlmIChzLmxldmVsIDwgNikge1xuICAgICAgICBsZXZlbF9mbGFncyA9IDE7XG4gICAgICB9IGVsc2UgaWYgKHMubGV2ZWwgPT09IDYpIHtcbiAgICAgICAgbGV2ZWxfZmxhZ3MgPSAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV2ZWxfZmxhZ3MgPSAzO1xuICAgICAgfVxuICAgICAgaGVhZGVyIHw9IChsZXZlbF9mbGFncyA8PCA2KTtcbiAgICAgIGlmIChzLnN0cnN0YXJ0ICE9PSAwKSB7IGhlYWRlciB8PSBQUkVTRVRfRElDVDsgfVxuICAgICAgaGVhZGVyICs9IDMxIC0gKGhlYWRlciAlIDMxKTtcblxuICAgICAgcy5zdGF0dXMgPSBCVVNZX1NUQVRFO1xuICAgICAgcHV0U2hvcnRNU0IocywgaGVhZGVyKTtcblxuICAgICAgLyogU2F2ZSB0aGUgYWRsZXIzMiBvZiB0aGUgcHJlc2V0IGRpY3Rpb25hcnk6ICovXG4gICAgICBpZiAocy5zdHJzdGFydCAhPT0gMCkge1xuICAgICAgICBwdXRTaG9ydE1TQihzLCBzdHJtLmFkbGVyID4+PiAxNik7XG4gICAgICAgIHB1dFNob3J0TVNCKHMsIHN0cm0uYWRsZXIgJiAweGZmZmYpO1xuICAgICAgfVxuICAgICAgc3RybS5hZGxlciA9IDE7IC8vIGFkbGVyMzIoMEwsIFpfTlVMTCwgMCk7XG4gICAgfVxuICB9XG5cbi8vI2lmZGVmIEdaSVBcbiAgaWYgKHMuc3RhdHVzID09PSBFWFRSQV9TVEFURSkge1xuICAgIGlmIChzLmd6aGVhZC5leHRyYS8qICE9IFpfTlVMTCovKSB7XG4gICAgICBiZWcgPSBzLnBlbmRpbmc7ICAvKiBzdGFydCBvZiBieXRlcyB0byB1cGRhdGUgY3JjICovXG5cbiAgICAgIHdoaWxlIChzLmd6aW5kZXggPCAocy5nemhlYWQuZXh0cmEubGVuZ3RoICYgMHhmZmZmKSkge1xuICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHtcbiAgICAgICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gICAgICAgICAgYmVnID0gcy5wZW5kaW5nO1xuICAgICAgICAgIGlmIChzLnBlbmRpbmcgPT09IHMucGVuZGluZ19idWZfc2l6ZSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHB1dF9ieXRlKHMsIHMuZ3poZWFkLmV4dHJhW3MuZ3ppbmRleF0gJiAweGZmKTtcbiAgICAgICAgcy5nemluZGV4Kys7XG4gICAgICB9XG4gICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHtcbiAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTtcbiAgICAgIH1cbiAgICAgIGlmIChzLmd6aW5kZXggPT09IHMuZ3poZWFkLmV4dHJhLmxlbmd0aCkge1xuICAgICAgICBzLmd6aW5kZXggPSAwO1xuICAgICAgICBzLnN0YXR1cyA9IE5BTUVfU1RBVEU7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcy5zdGF0dXMgPSBOQU1FX1NUQVRFO1xuICAgIH1cbiAgfVxuICBpZiAocy5zdGF0dXMgPT09IE5BTUVfU1RBVEUpIHtcbiAgICBpZiAocy5nemhlYWQubmFtZS8qICE9IFpfTlVMTCovKSB7XG4gICAgICBiZWcgPSBzLnBlbmRpbmc7ICAvKiBzdGFydCBvZiBieXRlcyB0byB1cGRhdGUgY3JjICovXG4gICAgICAvL2ludCB2YWw7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgICAgaWYgKHMuZ3poZWFkLmhjcmMgJiYgcy5wZW5kaW5nID4gYmVnKSB7XG4gICAgICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nIC0gYmVnLCBiZWcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pO1xuICAgICAgICAgIGJlZyA9IHMucGVuZGluZztcbiAgICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgICAgIHZhbCA9IDE7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gSlMgc3BlY2lmaWM6IGxpdHRsZSBtYWdpYyB0byBhZGQgemVybyB0ZXJtaW5hdG9yIHRvIGVuZCBvZiBzdHJpbmdcbiAgICAgICAgaWYgKHMuZ3ppbmRleCA8IHMuZ3poZWFkLm5hbWUubGVuZ3RoKSB7XG4gICAgICAgICAgdmFsID0gcy5nemhlYWQubmFtZS5jaGFyQ29kZUF0KHMuZ3ppbmRleCsrKSAmIDB4ZmY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICBwdXRfYnl0ZShzLCB2YWwpO1xuICAgICAgfSB3aGlsZSAodmFsICE9PSAwKTtcblxuICAgICAgaWYgKHMuZ3poZWFkLmhjcmMgJiYgcy5wZW5kaW5nID4gYmVnKSB7XG4gICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7XG4gICAgICB9XG4gICAgICBpZiAodmFsID09PSAwKSB7XG4gICAgICAgIHMuZ3ppbmRleCA9IDA7XG4gICAgICAgIHMuc3RhdHVzID0gQ09NTUVOVF9TVEFURTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBzLnN0YXR1cyA9IENPTU1FTlRfU1RBVEU7XG4gICAgfVxuICB9XG4gIGlmIChzLnN0YXR1cyA9PT0gQ09NTUVOVF9TVEFURSkge1xuICAgIGlmIChzLmd6aGVhZC5jb21tZW50LyogIT0gWl9OVUxMKi8pIHtcbiAgICAgIGJlZyA9IHMucGVuZGluZzsgIC8qIHN0YXJ0IG9mIGJ5dGVzIHRvIHVwZGF0ZSBjcmMgKi9cbiAgICAgIC8vaW50IHZhbDtcblxuICAgICAgZG8ge1xuICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHtcbiAgICAgICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gICAgICAgICAgYmVnID0gcy5wZW5kaW5nO1xuICAgICAgICAgIGlmIChzLnBlbmRpbmcgPT09IHMucGVuZGluZ19idWZfc2l6ZSkge1xuICAgICAgICAgICAgdmFsID0gMTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBKUyBzcGVjaWZpYzogbGl0dGxlIG1hZ2ljIHRvIGFkZCB6ZXJvIHRlcm1pbmF0b3IgdG8gZW5kIG9mIHN0cmluZ1xuICAgICAgICBpZiAocy5nemluZGV4IDwgcy5nemhlYWQuY29tbWVudC5sZW5ndGgpIHtcbiAgICAgICAgICB2YWwgPSBzLmd6aGVhZC5jb21tZW50LmNoYXJDb2RlQXQocy5nemluZGV4KyspICYgMHhmZjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWwgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHB1dF9ieXRlKHMsIHZhbCk7XG4gICAgICB9IHdoaWxlICh2YWwgIT09IDApO1xuXG4gICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHtcbiAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWwgPT09IDApIHtcbiAgICAgICAgcy5zdGF0dXMgPSBIQ1JDX1NUQVRFO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHMuc3RhdHVzID0gSENSQ19TVEFURTtcbiAgICB9XG4gIH1cbiAgaWYgKHMuc3RhdHVzID09PSBIQ1JDX1NUQVRFKSB7XG4gICAgaWYgKHMuZ3poZWFkLmhjcmMpIHtcbiAgICAgIGlmIChzLnBlbmRpbmcgKyAyID4gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gICAgICB9XG4gICAgICBpZiAocy5wZW5kaW5nICsgMiA8PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgcHV0X2J5dGUocywgc3RybS5hZGxlciAmIDB4ZmYpO1xuICAgICAgICBwdXRfYnl0ZShzLCAoc3RybS5hZGxlciA+PiA4KSAmIDB4ZmYpO1xuICAgICAgICBzdHJtLmFkbGVyID0gMDsgLy9jcmMzMigwTCwgWl9OVUxMLCAwKTtcbiAgICAgICAgcy5zdGF0dXMgPSBCVVNZX1NUQVRFO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHMuc3RhdHVzID0gQlVTWV9TVEFURTtcbiAgICB9XG4gIH1cbi8vI2VuZGlmXG5cbiAgLyogRmx1c2ggYXMgbXVjaCBwZW5kaW5nIG91dHB1dCBhcyBwb3NzaWJsZSAqL1xuICBpZiAocy5wZW5kaW5nICE9PSAwKSB7XG4gICAgZmx1c2hfcGVuZGluZyhzdHJtKTtcbiAgICBpZiAoc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgIC8qIFNpbmNlIGF2YWlsX291dCBpcyAwLCBkZWZsYXRlIHdpbGwgYmUgY2FsbGVkIGFnYWluIHdpdGhcbiAgICAgICAqIG1vcmUgb3V0cHV0IHNwYWNlLCBidXQgcG9zc2libHkgd2l0aCBib3RoIHBlbmRpbmcgYW5kXG4gICAgICAgKiBhdmFpbF9pbiBlcXVhbCB0byB6ZXJvLiBUaGVyZSB3b24ndCBiZSBhbnl0aGluZyB0byBkbyxcbiAgICAgICAqIGJ1dCB0aGlzIGlzIG5vdCBhbiBlcnJvciBzaXR1YXRpb24gc28gbWFrZSBzdXJlIHdlXG4gICAgICAgKiByZXR1cm4gT0sgaW5zdGVhZCBvZiBCVUZfRVJST1IgYXQgbmV4dCBjYWxsIG9mIGRlZmxhdGU6XG4gICAgICAgKi9cbiAgICAgIHMubGFzdF9mbHVzaCA9IC0xO1xuICAgICAgcmV0dXJuIFpfT0s7XG4gICAgfVxuXG4gICAgLyogTWFrZSBzdXJlIHRoZXJlIGlzIHNvbWV0aGluZyB0byBkbyBhbmQgYXZvaWQgZHVwbGljYXRlIGNvbnNlY3V0aXZlXG4gICAgICogZmx1c2hlcy4gRm9yIHJlcGVhdGVkIGFuZCB1c2VsZXNzIGNhbGxzIHdpdGggWl9GSU5JU0gsIHdlIGtlZXBcbiAgICAgKiByZXR1cm5pbmcgWl9TVFJFQU1fRU5EIGluc3RlYWQgb2YgWl9CVUZfRVJST1IuXG4gICAgICovXG4gIH0gZWxzZSBpZiAoc3RybS5hdmFpbF9pbiA9PT0gMCAmJiByYW5rKGZsdXNoKSA8PSByYW5rKG9sZF9mbHVzaCkgJiZcbiAgICBmbHVzaCAhPT0gWl9GSU5JU0gpIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIFpfQlVGX0VSUk9SKTtcbiAgfVxuXG4gIC8qIFVzZXIgbXVzdCBub3QgcHJvdmlkZSBtb3JlIGlucHV0IGFmdGVyIHRoZSBmaXJzdCBGSU5JU0g6ICovXG4gIGlmIChzLnN0YXR1cyA9PT0gRklOSVNIX1NUQVRFICYmIHN0cm0uYXZhaWxfaW4gIT09IDApIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIFpfQlVGX0VSUk9SKTtcbiAgfVxuXG4gIC8qIFN0YXJ0IGEgbmV3IGJsb2NrIG9yIGNvbnRpbnVlIHRoZSBjdXJyZW50IG9uZS5cbiAgICovXG4gIGlmIChzdHJtLmF2YWlsX2luICE9PSAwIHx8IHMubG9va2FoZWFkICE9PSAwIHx8XG4gICAgKGZsdXNoICE9PSBaX05PX0ZMVVNIICYmIHMuc3RhdHVzICE9PSBGSU5JU0hfU1RBVEUpKSB7XG4gICAgdmFyIGJzdGF0ZSA9IChzLnN0cmF0ZWd5ID09PSBaX0hVRkZNQU5fT05MWSkgPyBkZWZsYXRlX2h1ZmYocywgZmx1c2gpIDpcbiAgICAgIChzLnN0cmF0ZWd5ID09PSBaX1JMRSA/IGRlZmxhdGVfcmxlKHMsIGZsdXNoKSA6XG4gICAgICAgIGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0uZnVuYyhzLCBmbHVzaCkpO1xuXG4gICAgaWYgKGJzdGF0ZSA9PT0gQlNfRklOSVNIX1NUQVJURUQgfHwgYnN0YXRlID09PSBCU19GSU5JU0hfRE9ORSkge1xuICAgICAgcy5zdGF0dXMgPSBGSU5JU0hfU1RBVEU7XG4gICAgfVxuICAgIGlmIChic3RhdGUgPT09IEJTX05FRURfTU9SRSB8fCBic3RhdGUgPT09IEJTX0ZJTklTSF9TVEFSVEVEKSB7XG4gICAgICBpZiAoc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcy5sYXN0X2ZsdXNoID0gLTE7XG4gICAgICAgIC8qIGF2b2lkIEJVRl9FUlJPUiBuZXh0IGNhbGwsIHNlZSBhYm92ZSAqL1xuICAgICAgfVxuICAgICAgcmV0dXJuIFpfT0s7XG4gICAgICAvKiBJZiBmbHVzaCAhPSBaX05PX0ZMVVNIICYmIGF2YWlsX291dCA9PSAwLCB0aGUgbmV4dCBjYWxsXG4gICAgICAgKiBvZiBkZWZsYXRlIHNob3VsZCB1c2UgdGhlIHNhbWUgZmx1c2ggcGFyYW1ldGVyIHRvIG1ha2Ugc3VyZVxuICAgICAgICogdGhhdCB0aGUgZmx1c2ggaXMgY29tcGxldGUuIFNvIHdlIGRvbid0IGhhdmUgdG8gb3V0cHV0IGFuXG4gICAgICAgKiBlbXB0eSBibG9jayBoZXJlLCB0aGlzIHdpbGwgYmUgZG9uZSBhdCBuZXh0IGNhbGwuIFRoaXMgYWxzb1xuICAgICAgICogZW5zdXJlcyB0aGF0IGZvciBhIHZlcnkgc21hbGwgb3V0cHV0IGJ1ZmZlciwgd2UgZW1pdCBhdCBtb3N0XG4gICAgICAgKiBvbmUgZW1wdHkgYmxvY2suXG4gICAgICAgKi9cbiAgICB9XG4gICAgaWYgKGJzdGF0ZSA9PT0gQlNfQkxPQ0tfRE9ORSkge1xuICAgICAgaWYgKGZsdXNoID09PSBaX1BBUlRJQUxfRkxVU0gpIHtcbiAgICAgICAgdHJlZXMuX3RyX2FsaWduKHMpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoZmx1c2ggIT09IFpfQkxPQ0spIHsgLyogRlVMTF9GTFVTSCBvciBTWU5DX0ZMVVNIICovXG5cbiAgICAgICAgdHJlZXMuX3RyX3N0b3JlZF9ibG9jayhzLCAwLCAwLCBmYWxzZSk7XG4gICAgICAgIC8qIEZvciBhIGZ1bGwgZmx1c2gsIHRoaXMgZW1wdHkgYmxvY2sgd2lsbCBiZSByZWNvZ25pemVkXG4gICAgICAgICAqIGFzIGEgc3BlY2lhbCBtYXJrZXIgYnkgaW5mbGF0ZV9zeW5jKCkuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoZmx1c2ggPT09IFpfRlVMTF9GTFVTSCkge1xuICAgICAgICAgIC8qKiogQ0xFQVJfSEFTSChzKTsgKioqLyAgICAgICAgICAgICAvKiBmb3JnZXQgaGlzdG9yeSAqL1xuICAgICAgICAgIHplcm8ocy5oZWFkKTsgLy8gRmlsbCB3aXRoIE5JTCAoPSAwKTtcblxuICAgICAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkge1xuICAgICAgICAgICAgcy5zdHJzdGFydCA9IDA7XG4gICAgICAgICAgICBzLmJsb2NrX3N0YXJ0ID0gMDtcbiAgICAgICAgICAgIHMuaW5zZXJ0ID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gICAgICBpZiAoc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcy5sYXN0X2ZsdXNoID0gLTE7IC8qIGF2b2lkIEJVRl9FUlJPUiBhdCBuZXh0IGNhbGwsIHNlZSBhYm92ZSAqL1xuICAgICAgICByZXR1cm4gWl9PSztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy9Bc3NlcnQoc3RybS0+YXZhaWxfb3V0ID4gMCwgXCJidWcyXCIpO1xuICAvL2lmIChzdHJtLmF2YWlsX291dCA8PSAwKSB7IHRocm93IG5ldyBFcnJvcihcImJ1ZzJcIik7fVxuXG4gIGlmIChmbHVzaCAhPT0gWl9GSU5JU0gpIHsgcmV0dXJuIFpfT0s7IH1cbiAgaWYgKHMud3JhcCA8PSAwKSB7IHJldHVybiBaX1NUUkVBTV9FTkQ7IH1cblxuICAvKiBXcml0ZSB0aGUgdHJhaWxlciAqL1xuICBpZiAocy53cmFwID09PSAyKSB7XG4gICAgcHV0X2J5dGUocywgc3RybS5hZGxlciAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIChzdHJtLmFkbGVyID4+IDgpICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgKHN0cm0uYWRsZXIgPj4gMTYpICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgKHN0cm0uYWRsZXIgPj4gMjQpICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgc3RybS50b3RhbF9pbiAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIChzdHJtLnRvdGFsX2luID4+IDgpICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgKHN0cm0udG90YWxfaW4gPj4gMTYpICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgKHN0cm0udG90YWxfaW4gPj4gMjQpICYgMHhmZik7XG4gIH1cbiAgZWxzZVxuICB7XG4gICAgcHV0U2hvcnRNU0Iocywgc3RybS5hZGxlciA+Pj4gMTYpO1xuICAgIHB1dFNob3J0TVNCKHMsIHN0cm0uYWRsZXIgJiAweGZmZmYpO1xuICB9XG5cbiAgZmx1c2hfcGVuZGluZyhzdHJtKTtcbiAgLyogSWYgYXZhaWxfb3V0IGlzIHplcm8sIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGNhbGwgZGVmbGF0ZSBhZ2FpblxuICAgKiB0byBmbHVzaCB0aGUgcmVzdC5cbiAgICovXG4gIGlmIChzLndyYXAgPiAwKSB7IHMud3JhcCA9IC1zLndyYXA7IH1cbiAgLyogd3JpdGUgdGhlIHRyYWlsZXIgb25seSBvbmNlISAqL1xuICByZXR1cm4gcy5wZW5kaW5nICE9PSAwID8gWl9PSyA6IFpfU1RSRUFNX0VORDtcbn1cblxuZnVuY3Rpb24gZGVmbGF0ZUVuZChzdHJtKSB7XG4gIHZhciBzdGF0dXM7XG5cbiAgaWYgKCFzdHJtLyo9PSBaX05VTEwqLyB8fCAhc3RybS5zdGF0ZS8qPT0gWl9OVUxMKi8pIHtcbiAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gIH1cblxuICBzdGF0dXMgPSBzdHJtLnN0YXRlLnN0YXR1cztcbiAgaWYgKHN0YXR1cyAhPT0gSU5JVF9TVEFURSAmJlxuICAgIHN0YXR1cyAhPT0gRVhUUkFfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IE5BTUVfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IENPTU1FTlRfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IEhDUkNfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IEJVU1lfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IEZJTklTSF9TVEFURVxuICApIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIFpfU1RSRUFNX0VSUk9SKTtcbiAgfVxuXG4gIHN0cm0uc3RhdGUgPSBudWxsO1xuXG4gIHJldHVybiBzdGF0dXMgPT09IEJVU1lfU1RBVEUgPyBlcnIoc3RybSwgWl9EQVRBX0VSUk9SKSA6IFpfT0s7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW5pdGlhbGl6ZXMgdGhlIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkgZnJvbSB0aGUgZ2l2ZW4gYnl0ZVxuICogc2VxdWVuY2Ugd2l0aG91dCBwcm9kdWNpbmcgYW55IGNvbXByZXNzZWQgb3V0cHV0LlxuICovXG5mdW5jdGlvbiBkZWZsYXRlU2V0RGljdGlvbmFyeShzdHJtLCBkaWN0aW9uYXJ5KSB7XG4gIHZhciBkaWN0TGVuZ3RoID0gZGljdGlvbmFyeS5sZW5ndGg7XG5cbiAgdmFyIHM7XG4gIHZhciBzdHIsIG47XG4gIHZhciB3cmFwO1xuICB2YXIgYXZhaWw7XG4gIHZhciBuZXh0O1xuICB2YXIgaW5wdXQ7XG4gIHZhciB0bXBEaWN0O1xuXG4gIGlmICghc3RybS8qPT0gWl9OVUxMKi8gfHwgIXN0cm0uc3RhdGUvKj09IFpfTlVMTCovKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgcyA9IHN0cm0uc3RhdGU7XG4gIHdyYXAgPSBzLndyYXA7XG5cbiAgaWYgKHdyYXAgPT09IDIgfHwgKHdyYXAgPT09IDEgJiYgcy5zdGF0dXMgIT09IElOSVRfU1RBVEUpIHx8IHMubG9va2FoZWFkKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgLyogd2hlbiB1c2luZyB6bGliIHdyYXBwZXJzLCBjb21wdXRlIEFkbGVyLTMyIGZvciBwcm92aWRlZCBkaWN0aW9uYXJ5ICovXG4gIGlmICh3cmFwID09PSAxKSB7XG4gICAgLyogYWRsZXIzMihzdHJtLT5hZGxlciwgZGljdGlvbmFyeSwgZGljdExlbmd0aCk7ICovXG4gICAgc3RybS5hZGxlciA9IGFkbGVyMzIoc3RybS5hZGxlciwgZGljdGlvbmFyeSwgZGljdExlbmd0aCwgMCk7XG4gIH1cblxuICBzLndyYXAgPSAwOyAgIC8qIGF2b2lkIGNvbXB1dGluZyBBZGxlci0zMiBpbiByZWFkX2J1ZiAqL1xuXG4gIC8qIGlmIGRpY3Rpb25hcnkgd291bGQgZmlsbCB3aW5kb3csIGp1c3QgcmVwbGFjZSB0aGUgaGlzdG9yeSAqL1xuICBpZiAoZGljdExlbmd0aCA+PSBzLndfc2l6ZSkge1xuICAgIGlmICh3cmFwID09PSAwKSB7ICAgICAgICAgICAgLyogYWxyZWFkeSBlbXB0eSBvdGhlcndpc2UgKi9cbiAgICAgIC8qKiogQ0xFQVJfSEFTSChzKTsgKioqL1xuICAgICAgemVybyhzLmhlYWQpOyAvLyBGaWxsIHdpdGggTklMICg9IDApO1xuICAgICAgcy5zdHJzdGFydCA9IDA7XG4gICAgICBzLmJsb2NrX3N0YXJ0ID0gMDtcbiAgICAgIHMuaW5zZXJ0ID0gMDtcbiAgICB9XG4gICAgLyogdXNlIHRoZSB0YWlsICovXG4gICAgLy8gZGljdGlvbmFyeSA9IGRpY3Rpb25hcnkuc2xpY2UoZGljdExlbmd0aCAtIHMud19zaXplKTtcbiAgICB0bXBEaWN0ID0gbmV3IHV0aWxzLkJ1Zjgocy53X3NpemUpO1xuICAgIHV0aWxzLmFycmF5U2V0KHRtcERpY3QsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGggLSBzLndfc2l6ZSwgcy53X3NpemUsIDApO1xuICAgIGRpY3Rpb25hcnkgPSB0bXBEaWN0O1xuICAgIGRpY3RMZW5ndGggPSBzLndfc2l6ZTtcbiAgfVxuICAvKiBpbnNlcnQgZGljdGlvbmFyeSBpbnRvIHdpbmRvdyBhbmQgaGFzaCAqL1xuICBhdmFpbCA9IHN0cm0uYXZhaWxfaW47XG4gIG5leHQgPSBzdHJtLm5leHRfaW47XG4gIGlucHV0ID0gc3RybS5pbnB1dDtcbiAgc3RybS5hdmFpbF9pbiA9IGRpY3RMZW5ndGg7XG4gIHN0cm0ubmV4dF9pbiA9IDA7XG4gIHN0cm0uaW5wdXQgPSBkaWN0aW9uYXJ5O1xuICBmaWxsX3dpbmRvdyhzKTtcbiAgd2hpbGUgKHMubG9va2FoZWFkID49IE1JTl9NQVRDSCkge1xuICAgIHN0ciA9IHMuc3Ryc3RhcnQ7XG4gICAgbiA9IHMubG9va2FoZWFkIC0gKE1JTl9NQVRDSCAtIDEpO1xuICAgIGRvIHtcbiAgICAgIC8qIFVQREFURV9IQVNIKHMsIHMtPmluc19oLCBzLT53aW5kb3dbc3RyICsgTUlOX01BVENILTFdKTsgKi9cbiAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3N0ciArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrO1xuXG4gICAgICBzLnByZXZbc3RyICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdO1xuXG4gICAgICBzLmhlYWRbcy5pbnNfaF0gPSBzdHI7XG4gICAgICBzdHIrKztcbiAgICB9IHdoaWxlICgtLW4pO1xuICAgIHMuc3Ryc3RhcnQgPSBzdHI7XG4gICAgcy5sb29rYWhlYWQgPSBNSU5fTUFUQ0ggLSAxO1xuICAgIGZpbGxfd2luZG93KHMpO1xuICB9XG4gIHMuc3Ryc3RhcnQgKz0gcy5sb29rYWhlYWQ7XG4gIHMuYmxvY2tfc3RhcnQgPSBzLnN0cnN0YXJ0O1xuICBzLmluc2VydCA9IHMubG9va2FoZWFkO1xuICBzLmxvb2thaGVhZCA9IDA7XG4gIHMubWF0Y2hfbGVuZ3RoID0gcy5wcmV2X2xlbmd0aCA9IE1JTl9NQVRDSCAtIDE7XG4gIHMubWF0Y2hfYXZhaWxhYmxlID0gMDtcbiAgc3RybS5uZXh0X2luID0gbmV4dDtcbiAgc3RybS5pbnB1dCA9IGlucHV0O1xuICBzdHJtLmF2YWlsX2luID0gYXZhaWw7XG4gIHMud3JhcCA9IHdyYXA7XG4gIHJldHVybiBaX09LO1xufVxuXG5cbmV4cG9ydHMuZGVmbGF0ZUluaXQgPSBkZWZsYXRlSW5pdDtcbmV4cG9ydHMuZGVmbGF0ZUluaXQyID0gZGVmbGF0ZUluaXQyO1xuZXhwb3J0cy5kZWZsYXRlUmVzZXQgPSBkZWZsYXRlUmVzZXQ7XG5leHBvcnRzLmRlZmxhdGVSZXNldEtlZXAgPSBkZWZsYXRlUmVzZXRLZWVwO1xuZXhwb3J0cy5kZWZsYXRlU2V0SGVhZGVyID0gZGVmbGF0ZVNldEhlYWRlcjtcbmV4cG9ydHMuZGVmbGF0ZSA9IGRlZmxhdGU7XG5leHBvcnRzLmRlZmxhdGVFbmQgPSBkZWZsYXRlRW5kO1xuZXhwb3J0cy5kZWZsYXRlU2V0RGljdGlvbmFyeSA9IGRlZmxhdGVTZXREaWN0aW9uYXJ5O1xuZXhwb3J0cy5kZWZsYXRlSW5mbyA9ICdwYWtvIGRlZmxhdGUgKGZyb20gTm9kZWNhIHByb2plY3QpJztcblxuLyogTm90IGltcGxlbWVudGVkXG5leHBvcnRzLmRlZmxhdGVCb3VuZCA9IGRlZmxhdGVCb3VuZDtcbmV4cG9ydHMuZGVmbGF0ZUNvcHkgPSBkZWZsYXRlQ29weTtcbmV4cG9ydHMuZGVmbGF0ZVBhcmFtcyA9IGRlZmxhdGVQYXJhbXM7XG5leHBvcnRzLmRlZmxhdGVQZW5kaW5nID0gZGVmbGF0ZVBlbmRpbmc7XG5leHBvcnRzLmRlZmxhdGVQcmltZSA9IGRlZmxhdGVQcmltZTtcbmV4cG9ydHMuZGVmbGF0ZVR1bmUgPSBkZWZsYXRlVHVuZTtcbiovXG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxuLy8gU2VlIHN0YXRlIGRlZnMgZnJvbSBpbmZsYXRlLmpzXG52YXIgQkFEID0gMzA7ICAgICAgIC8qIGdvdCBhIGRhdGEgZXJyb3IgLS0gcmVtYWluIGhlcmUgdW50aWwgcmVzZXQgKi9cbnZhciBUWVBFID0gMTI7ICAgICAgLyogaTogd2FpdGluZyBmb3IgdHlwZSBiaXRzLCBpbmNsdWRpbmcgbGFzdC1mbGFnIGJpdCAqL1xuXG4vKlxuICAgRGVjb2RlIGxpdGVyYWwsIGxlbmd0aCwgYW5kIGRpc3RhbmNlIGNvZGVzIGFuZCB3cml0ZSBvdXQgdGhlIHJlc3VsdGluZ1xuICAgbGl0ZXJhbCBhbmQgbWF0Y2ggYnl0ZXMgdW50aWwgZWl0aGVyIG5vdCBlbm91Z2ggaW5wdXQgb3Igb3V0cHV0IGlzXG4gICBhdmFpbGFibGUsIGFuIGVuZC1vZi1ibG9jayBpcyBlbmNvdW50ZXJlZCwgb3IgYSBkYXRhIGVycm9yIGlzIGVuY291bnRlcmVkLlxuICAgV2hlbiBsYXJnZSBlbm91Z2ggaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzIGFyZSBzdXBwbGllZCB0byBpbmZsYXRlKCksIGZvclxuICAgZXhhbXBsZSwgYSAxNksgaW5wdXQgYnVmZmVyIGFuZCBhIDY0SyBvdXRwdXQgYnVmZmVyLCBtb3JlIHRoYW4gOTUlIG9mIHRoZVxuICAgaW5mbGF0ZSBleGVjdXRpb24gdGltZSBpcyBzcGVudCBpbiB0aGlzIHJvdXRpbmUuXG5cbiAgIEVudHJ5IGFzc3VtcHRpb25zOlxuXG4gICAgICAgIHN0YXRlLm1vZGUgPT09IExFTlxuICAgICAgICBzdHJtLmF2YWlsX2luID49IDZcbiAgICAgICAgc3RybS5hdmFpbF9vdXQgPj0gMjU4XG4gICAgICAgIHN0YXJ0ID49IHN0cm0uYXZhaWxfb3V0XG4gICAgICAgIHN0YXRlLmJpdHMgPCA4XG5cbiAgIE9uIHJldHVybiwgc3RhdGUubW9kZSBpcyBvbmUgb2Y6XG5cbiAgICAgICAgTEVOIC0tIHJhbiBvdXQgb2YgZW5vdWdoIG91dHB1dCBzcGFjZSBvciBlbm91Z2ggYXZhaWxhYmxlIGlucHV0XG4gICAgICAgIFRZUEUgLS0gcmVhY2hlZCBlbmQgb2YgYmxvY2sgY29kZSwgaW5mbGF0ZSgpIHRvIGludGVycHJldCBuZXh0IGJsb2NrXG4gICAgICAgIEJBRCAtLSBlcnJvciBpbiBibG9jayBkYXRhXG5cbiAgIE5vdGVzOlxuXG4gICAgLSBUaGUgbWF4aW11bSBpbnB1dCBiaXRzIHVzZWQgYnkgYSBsZW5ndGgvZGlzdGFuY2UgcGFpciBpcyAxNSBiaXRzIGZvciB0aGVcbiAgICAgIGxlbmd0aCBjb2RlLCA1IGJpdHMgZm9yIHRoZSBsZW5ndGggZXh0cmEsIDE1IGJpdHMgZm9yIHRoZSBkaXN0YW5jZSBjb2RlLFxuICAgICAgYW5kIDEzIGJpdHMgZm9yIHRoZSBkaXN0YW5jZSBleHRyYS4gIFRoaXMgdG90YWxzIDQ4IGJpdHMsIG9yIHNpeCBieXRlcy5cbiAgICAgIFRoZXJlZm9yZSBpZiBzdHJtLmF2YWlsX2luID49IDYsIHRoZW4gdGhlcmUgaXMgZW5vdWdoIGlucHV0IHRvIGF2b2lkXG4gICAgICBjaGVja2luZyBmb3IgYXZhaWxhYmxlIGlucHV0IHdoaWxlIGRlY29kaW5nLlxuXG4gICAgLSBUaGUgbWF4aW11bSBieXRlcyB0aGF0IGEgc2luZ2xlIGxlbmd0aC9kaXN0YW5jZSBwYWlyIGNhbiBvdXRwdXQgaXMgMjU4XG4gICAgICBieXRlcywgd2hpY2ggaXMgdGhlIG1heGltdW0gbGVuZ3RoIHRoYXQgY2FuIGJlIGNvZGVkLiAgaW5mbGF0ZV9mYXN0KClcbiAgICAgIHJlcXVpcmVzIHN0cm0uYXZhaWxfb3V0ID49IDI1OCBmb3IgZWFjaCBsb29wIHRvIGF2b2lkIGNoZWNraW5nIGZvclxuICAgICAgb3V0cHV0IHNwYWNlLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluZmxhdGVfZmFzdChzdHJtLCBzdGFydCkge1xuICB2YXIgc3RhdGU7XG4gIHZhciBfaW47ICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLmlucHV0ICovXG4gIHZhciBsYXN0OyAgICAgICAgICAgICAgICAgICAvKiBoYXZlIGVub3VnaCBpbnB1dCB3aGlsZSBpbiA8IGxhc3QgKi9cbiAgdmFyIF9vdXQ7ICAgICAgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0ub3V0cHV0ICovXG4gIHZhciBiZWc7ICAgICAgICAgICAgICAgICAgICAvKiBpbmZsYXRlKCkncyBpbml0aWFsIHN0cm0ub3V0cHV0ICovXG4gIHZhciBlbmQ7ICAgICAgICAgICAgICAgICAgICAvKiB3aGlsZSBvdXQgPCBlbmQsIGVub3VnaCBzcGFjZSBhdmFpbGFibGUgKi9cbi8vI2lmZGVmIElORkxBVEVfU1RSSUNUXG4gIHZhciBkbWF4OyAgICAgICAgICAgICAgICAgICAvKiBtYXhpbXVtIGRpc3RhbmNlIGZyb20gemxpYiBoZWFkZXIgKi9cbi8vI2VuZGlmXG4gIHZhciB3c2l6ZTsgICAgICAgICAgICAgICAgICAvKiB3aW5kb3cgc2l6ZSBvciB6ZXJvIGlmIG5vdCB1c2luZyB3aW5kb3cgKi9cbiAgdmFyIHdoYXZlOyAgICAgICAgICAgICAgICAgIC8qIHZhbGlkIGJ5dGVzIGluIHRoZSB3aW5kb3cgKi9cbiAgdmFyIHduZXh0OyAgICAgICAgICAgICAgICAgIC8qIHdpbmRvdyB3cml0ZSBpbmRleCAqL1xuICAvLyBVc2UgYHNfd2luZG93YCBpbnN0ZWFkIGB3aW5kb3dgLCBhdm9pZCBjb25mbGljdCB3aXRoIGluc3RydW1lbnRhdGlvbiB0b29sc1xuICB2YXIgc193aW5kb3c7ICAgICAgICAgICAgICAgLyogYWxsb2NhdGVkIHNsaWRpbmcgd2luZG93LCBpZiB3c2l6ZSAhPSAwICovXG4gIHZhciBob2xkOyAgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLmhvbGQgKi9cbiAgdmFyIGJpdHM7ICAgICAgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0uYml0cyAqL1xuICB2YXIgbGNvZGU7ICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5sZW5jb2RlICovXG4gIHZhciBkY29kZTsgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLmRpc3Rjb2RlICovXG4gIHZhciBsbWFzazsgICAgICAgICAgICAgICAgICAvKiBtYXNrIGZvciBmaXJzdCBsZXZlbCBvZiBsZW5ndGggY29kZXMgKi9cbiAgdmFyIGRtYXNrOyAgICAgICAgICAgICAgICAgIC8qIG1hc2sgZm9yIGZpcnN0IGxldmVsIG9mIGRpc3RhbmNlIGNvZGVzICovXG4gIHZhciBoZXJlOyAgICAgICAgICAgICAgICAgICAvKiByZXRyaWV2ZWQgdGFibGUgZW50cnkgKi9cbiAgdmFyIG9wOyAgICAgICAgICAgICAgICAgICAgIC8qIGNvZGUgYml0cywgb3BlcmF0aW9uLCBleHRyYSBiaXRzLCBvciAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIHdpbmRvdyBwb3NpdGlvbiwgd2luZG93IGJ5dGVzIHRvIGNvcHkgKi9cbiAgdmFyIGxlbjsgICAgICAgICAgICAgICAgICAgIC8qIG1hdGNoIGxlbmd0aCwgdW51c2VkIGJ5dGVzICovXG4gIHZhciBkaXN0OyAgICAgICAgICAgICAgICAgICAvKiBtYXRjaCBkaXN0YW5jZSAqL1xuICB2YXIgZnJvbTsgICAgICAgICAgICAgICAgICAgLyogd2hlcmUgdG8gY29weSBtYXRjaCBmcm9tICovXG4gIHZhciBmcm9tX3NvdXJjZTtcblxuXG4gIHZhciBpbnB1dCwgb3V0cHV0OyAvLyBKUyBzcGVjaWZpYywgYmVjYXVzZSB3ZSBoYXZlIG5vIHBvaW50ZXJzXG5cbiAgLyogY29weSBzdGF0ZSB0byBsb2NhbCB2YXJpYWJsZXMgKi9cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuICAvL2hlcmUgPSBzdGF0ZS5oZXJlO1xuICBfaW4gPSBzdHJtLm5leHRfaW47XG4gIGlucHV0ID0gc3RybS5pbnB1dDtcbiAgbGFzdCA9IF9pbiArIChzdHJtLmF2YWlsX2luIC0gNSk7XG4gIF9vdXQgPSBzdHJtLm5leHRfb3V0O1xuICBvdXRwdXQgPSBzdHJtLm91dHB1dDtcbiAgYmVnID0gX291dCAtIChzdGFydCAtIHN0cm0uYXZhaWxfb3V0KTtcbiAgZW5kID0gX291dCArIChzdHJtLmF2YWlsX291dCAtIDI1Nyk7XG4vLyNpZmRlZiBJTkZMQVRFX1NUUklDVFxuICBkbWF4ID0gc3RhdGUuZG1heDtcbi8vI2VuZGlmXG4gIHdzaXplID0gc3RhdGUud3NpemU7XG4gIHdoYXZlID0gc3RhdGUud2hhdmU7XG4gIHduZXh0ID0gc3RhdGUud25leHQ7XG4gIHNfd2luZG93ID0gc3RhdGUud2luZG93O1xuICBob2xkID0gc3RhdGUuaG9sZDtcbiAgYml0cyA9IHN0YXRlLmJpdHM7XG4gIGxjb2RlID0gc3RhdGUubGVuY29kZTtcbiAgZGNvZGUgPSBzdGF0ZS5kaXN0Y29kZTtcbiAgbG1hc2sgPSAoMSA8PCBzdGF0ZS5sZW5iaXRzKSAtIDE7XG4gIGRtYXNrID0gKDEgPDwgc3RhdGUuZGlzdGJpdHMpIC0gMTtcblxuXG4gIC8qIGRlY29kZSBsaXRlcmFscyBhbmQgbGVuZ3RoL2Rpc3RhbmNlcyB1bnRpbCBlbmQtb2YtYmxvY2sgb3Igbm90IGVub3VnaFxuICAgICBpbnB1dCBkYXRhIG9yIG91dHB1dCBzcGFjZSAqL1xuXG4gIHRvcDpcbiAgZG8ge1xuICAgIGlmIChiaXRzIDwgMTUpIHtcbiAgICAgIGhvbGQgKz0gaW5wdXRbX2luKytdIDw8IGJpdHM7XG4gICAgICBiaXRzICs9IDg7XG4gICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgYml0cyArPSA4O1xuICAgIH1cblxuICAgIGhlcmUgPSBsY29kZVtob2xkICYgbG1hc2tdO1xuXG4gICAgZG9sZW46XG4gICAgZm9yICg7OykgeyAvLyBHb3RvIGVtdWxhdGlvblxuICAgICAgb3AgPSBoZXJlID4+PiAyNC8qaGVyZS5iaXRzKi87XG4gICAgICBob2xkID4+Pj0gb3A7XG4gICAgICBiaXRzIC09IG9wO1xuICAgICAgb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZi8qaGVyZS5vcCovO1xuICAgICAgaWYgKG9wID09PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsaXRlcmFsICovXG4gICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCBoZXJlLnZhbCA+PSAweDIwICYmIGhlcmUudmFsIDwgMHg3ZiA/XG4gICAgICAgIC8vICAgICAgICBcImluZmxhdGU6ICAgICAgICAgbGl0ZXJhbCAnJWMnXFxuXCIgOlxuICAgICAgICAvLyAgICAgICAgXCJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgMHglMDJ4XFxuXCIsIGhlcmUudmFsKSk7XG4gICAgICAgIG91dHB1dFtfb3V0KytdID0gaGVyZSAmIDB4ZmZmZi8qaGVyZS52YWwqLztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKG9wICYgMTYpIHsgICAgICAgICAgICAgICAgICAgICAvKiBsZW5ndGggYmFzZSAqL1xuICAgICAgICBsZW4gPSBoZXJlICYgMHhmZmZmLypoZXJlLnZhbCovO1xuICAgICAgICBvcCAmPSAxNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZXh0cmEgYml0cyAqL1xuICAgICAgICBpZiAob3ApIHtcbiAgICAgICAgICBpZiAoYml0cyA8IG9wKSB7XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZW4gKz0gaG9sZCAmICgoMSA8PCBvcCkgLSAxKTtcbiAgICAgICAgICBob2xkID4+Pj0gb3A7XG4gICAgICAgICAgYml0cyAtPSBvcDtcbiAgICAgICAgfVxuICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICAgIGxlbmd0aCAldVxcblwiLCBsZW4pKTtcbiAgICAgICAgaWYgKGJpdHMgPCAxNSkge1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbX2luKytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbX2luKytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICB9XG4gICAgICAgIGhlcmUgPSBkY29kZVtob2xkICYgZG1hc2tdO1xuXG4gICAgICAgIGRvZGlzdDpcbiAgICAgICAgZm9yICg7OykgeyAvLyBnb3RvIGVtdWxhdGlvblxuICAgICAgICAgIG9wID0gaGVyZSA+Pj4gMjQvKmhlcmUuYml0cyovO1xuICAgICAgICAgIGhvbGQgPj4+PSBvcDtcbiAgICAgICAgICBiaXRzIC09IG9wO1xuICAgICAgICAgIG9wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmYvKmhlcmUub3AqLztcblxuICAgICAgICAgIGlmIChvcCAmIDE2KSB7ICAgICAgICAgICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhc2UgKi9cbiAgICAgICAgICAgIGRpc3QgPSBoZXJlICYgMHhmZmZmLypoZXJlLnZhbCovO1xuICAgICAgICAgICAgb3AgJj0gMTU7ICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZXh0cmEgYml0cyAqL1xuICAgICAgICAgICAgaWYgKGJpdHMgPCBvcCkge1xuICAgICAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgICAgIGlmIChiaXRzIDwgb3ApIHtcbiAgICAgICAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlzdCArPSBob2xkICYgKCgxIDw8IG9wKSAtIDEpO1xuLy8jaWZkZWYgSU5GTEFURV9TVFJJQ1RcbiAgICAgICAgICAgIGlmIChkaXN0ID4gZG1heCkge1xuICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayc7XG4gICAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICAgIGJyZWFrIHRvcDtcbiAgICAgICAgICAgIH1cbi8vI2VuZGlmXG4gICAgICAgICAgICBob2xkID4+Pj0gb3A7XG4gICAgICAgICAgICBiaXRzIC09IG9wO1xuICAgICAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBkaXN0YW5jZSAldVxcblwiLCBkaXN0KSk7XG4gICAgICAgICAgICBvcCA9IF9vdXQgLSBiZWc7ICAgICAgICAgICAgICAgIC8qIG1heCBkaXN0YW5jZSBpbiBvdXRwdXQgKi9cbiAgICAgICAgICAgIGlmIChkaXN0ID4gb3ApIHsgICAgICAgICAgICAgICAgLyogc2VlIGlmIGNvcHkgZnJvbSB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgb3AgPSBkaXN0IC0gb3A7ICAgICAgICAgICAgICAgLyogZGlzdGFuY2UgYmFjayBpbiB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgaWYgKG9wID4gd2hhdmUpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUuc2FuZSkge1xuICAgICAgICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2snO1xuICAgICAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrIHRvcDtcbiAgICAgICAgICAgICAgICB9XG5cbi8vICghKSBUaGlzIGJsb2NrIGlzIGRpc2FibGVkIGluIHpsaWIgZGVmYXVsdHMsXG4vLyBkb24ndCBlbmFibGUgaXQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5XG4vLyNpZmRlZiBJTkZMQVRFX0FMTE9XX0lOVkFMSURfRElTVEFOQ0VfVE9PRkFSX0FSUlJcbi8vICAgICAgICAgICAgICAgIGlmIChsZW4gPD0gb3AgLSB3aGF2ZSkge1xuLy8gICAgICAgICAgICAgICAgICBkbyB7XG4vLyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSAwO1xuLy8gICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLWxlbik7XG4vLyAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHRvcDtcbi8vICAgICAgICAgICAgICAgIH1cbi8vICAgICAgICAgICAgICAgIGxlbiAtPSBvcCAtIHdoYXZlO1xuLy8gICAgICAgICAgICAgICAgZG8ge1xuLy8gICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IDA7XG4vLyAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wID4gd2hhdmUpO1xuLy8gICAgICAgICAgICAgICAgaWYgKG9wID09PSAwKSB7XG4vLyAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDtcbi8vICAgICAgICAgICAgICAgICAgZG8ge1xuLy8gICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107XG4vLyAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tbGVuKTtcbi8vICAgICAgICAgICAgICAgICAgY29udGludWUgdG9wO1xuLy8gICAgICAgICAgICAgICAgfVxuLy8jZW5kaWZcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBmcm9tID0gMDsgLy8gd2luZG93IGluZGV4XG4gICAgICAgICAgICAgIGZyb21fc291cmNlID0gc193aW5kb3c7XG4gICAgICAgICAgICAgIGlmICh3bmV4dCA9PT0gMCkgeyAgICAgICAgICAgLyogdmVyeSBjb21tb24gY2FzZSAqL1xuICAgICAgICAgICAgICAgIGZyb20gKz0gd3NpemUgLSBvcDtcbiAgICAgICAgICAgICAgICBpZiAob3AgPCBsZW4pIHsgICAgICAgICAvKiBzb21lIGZyb20gd2luZG93ICovXG4gICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7XG4gICAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gc193aW5kb3dbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3ApO1xuICAgICAgICAgICAgICAgICAgZnJvbSA9IF9vdXQgLSBkaXN0OyAgLyogcmVzdCBmcm9tIG91dHB1dCAqL1xuICAgICAgICAgICAgICAgICAgZnJvbV9zb3VyY2UgPSBvdXRwdXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGVsc2UgaWYgKHduZXh0IDwgb3ApIHsgICAgICAvKiB3cmFwIGFyb3VuZCB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgICBmcm9tICs9IHdzaXplICsgd25leHQgLSBvcDtcbiAgICAgICAgICAgICAgICBvcCAtPSB3bmV4dDtcbiAgICAgICAgICAgICAgICBpZiAob3AgPCBsZW4pIHsgICAgICAgICAvKiBzb21lIGZyb20gZW5kIG9mIHdpbmRvdyAqL1xuICAgICAgICAgICAgICAgICAgbGVuIC09IG9wO1xuICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IHNfd2luZG93W2Zyb20rK107XG4gICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wKTtcbiAgICAgICAgICAgICAgICAgIGZyb20gPSAwO1xuICAgICAgICAgICAgICAgICAgaWYgKHduZXh0IDwgbGVuKSB7ICAvKiBzb21lIGZyb20gc3RhcnQgb2Ygd2luZG93ICovXG4gICAgICAgICAgICAgICAgICAgIG9wID0gd25leHQ7XG4gICAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDtcbiAgICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gc193aW5kb3dbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7XG4gICAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsgICAgICAvKiByZXN0IGZyb20gb3V0cHV0ICovXG4gICAgICAgICAgICAgICAgICAgIGZyb21fc291cmNlID0gb3V0cHV0O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgLyogY29udGlndW91cyBpbiB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgICBmcm9tICs9IHduZXh0IC0gb3A7XG4gICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAgLyogc29tZSBmcm9tIHdpbmRvdyAqL1xuICAgICAgICAgICAgICAgICAgbGVuIC09IG9wO1xuICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IHNfd2luZG93W2Zyb20rK107XG4gICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wKTtcbiAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsgIC8qIHJlc3QgZnJvbSBvdXRwdXQgKi9cbiAgICAgICAgICAgICAgICAgIGZyb21fc291cmNlID0gb3V0cHV0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB3aGlsZSAobGVuID4gMikge1xuICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gZnJvbV9zb3VyY2VbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107XG4gICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBmcm9tX3NvdXJjZVtmcm9tKytdO1xuICAgICAgICAgICAgICAgIGxlbiAtPSAzO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107XG4gICAgICAgICAgICAgICAgaWYgKGxlbiA+IDEpIHtcbiAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gZnJvbV9zb3VyY2VbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICBmcm9tID0gX291dCAtIGRpc3Q7ICAgICAgICAgIC8qIGNvcHkgZGlyZWN0IGZyb20gb3V0cHV0ICovXG4gICAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAvKiBtaW5pbXVtIGxlbmd0aCBpcyB0aHJlZSAqL1xuICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107XG4gICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBvdXRwdXRbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdO1xuICAgICAgICAgICAgICAgIGxlbiAtPSAzO1xuICAgICAgICAgICAgICB9IHdoaWxlIChsZW4gPiAyKTtcbiAgICAgICAgICAgICAgaWYgKGxlbikge1xuICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107XG4gICAgICAgICAgICAgICAgaWYgKGxlbiA+IDEpIHtcbiAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKChvcCAmIDY0KSA9PT0gMCkgeyAgICAgICAgICAvKiAybmQgbGV2ZWwgZGlzdGFuY2UgY29kZSAqL1xuICAgICAgICAgICAgaGVyZSA9IGRjb2RlWyhoZXJlICYgMHhmZmZmKS8qaGVyZS52YWwqLyArIChob2xkICYgKCgxIDw8IG9wKSAtIDEpKV07XG4gICAgICAgICAgICBjb250aW51ZSBkb2Rpc3Q7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBkaXN0YW5jZSBjb2RlJztcbiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICBicmVhayB0b3A7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7IC8vIG5lZWQgdG8gZW11bGF0ZSBnb3RvIHZpYSBcImNvbnRpbnVlXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoKG9wICYgNjQpID09PSAwKSB7ICAgICAgICAgICAgICAvKiAybmQgbGV2ZWwgbGVuZ3RoIGNvZGUgKi9cbiAgICAgICAgaGVyZSA9IGxjb2RlWyhoZXJlICYgMHhmZmZmKS8qaGVyZS52YWwqLyArIChob2xkICYgKCgxIDw8IG9wKSAtIDEpKV07XG4gICAgICAgIGNvbnRpbnVlIGRvbGVuO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAob3AgJiAzMikgeyAgICAgICAgICAgICAgICAgICAgIC8qIGVuZC1vZi1ibG9jayAqL1xuICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICAgIGVuZCBvZiBibG9ja1xcblwiKSk7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFO1xuICAgICAgICBicmVhayB0b3A7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlJztcbiAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgYnJlYWsgdG9wO1xuICAgICAgfVxuXG4gICAgICBicmVhazsgLy8gbmVlZCB0byBlbXVsYXRlIGdvdG8gdmlhIFwiY29udGludWVcIlxuICAgIH1cbiAgfSB3aGlsZSAoX2luIDwgbGFzdCAmJiBfb3V0IDwgZW5kKTtcblxuICAvKiByZXR1cm4gdW51c2VkIGJ5dGVzIChvbiBlbnRyeSwgYml0cyA8IDgsIHNvIGluIHdvbid0IGdvIHRvbyBmYXIgYmFjaykgKi9cbiAgbGVuID0gYml0cyA+PiAzO1xuICBfaW4gLT0gbGVuO1xuICBiaXRzIC09IGxlbiA8PCAzO1xuICBob2xkICY9ICgxIDw8IGJpdHMpIC0gMTtcblxuICAvKiB1cGRhdGUgc3RhdGUgYW5kIHJldHVybiAqL1xuICBzdHJtLm5leHRfaW4gPSBfaW47XG4gIHN0cm0ubmV4dF9vdXQgPSBfb3V0O1xuICBzdHJtLmF2YWlsX2luID0gKF9pbiA8IGxhc3QgPyA1ICsgKGxhc3QgLSBfaW4pIDogNSAtIChfaW4gLSBsYXN0KSk7XG4gIHN0cm0uYXZhaWxfb3V0ID0gKF9vdXQgPCBlbmQgPyAyNTcgKyAoZW5kIC0gX291dCkgOiAyNTcgLSAoX291dCAtIGVuZCkpO1xuICBzdGF0ZS5ob2xkID0gaG9sZDtcbiAgc3RhdGUuYml0cyA9IGJpdHM7XG4gIHJldHVybjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxudmFyIHV0aWxzICAgICAgICAgPSByZXF1aXJlKCcuLi91dGlscy9jb21tb24nKTtcbnZhciBhZGxlcjMyICAgICAgID0gcmVxdWlyZSgnLi9hZGxlcjMyJyk7XG52YXIgY3JjMzIgICAgICAgICA9IHJlcXVpcmUoJy4vY3JjMzInKTtcbnZhciBpbmZsYXRlX2Zhc3QgID0gcmVxdWlyZSgnLi9pbmZmYXN0Jyk7XG52YXIgaW5mbGF0ZV90YWJsZSA9IHJlcXVpcmUoJy4vaW5mdHJlZXMnKTtcblxudmFyIENPREVTID0gMDtcbnZhciBMRU5TID0gMTtcbnZhciBESVNUUyA9IDI7XG5cbi8qIFB1YmxpYyBjb25zdGFudHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cbi8qIEFsbG93ZWQgZmx1c2ggdmFsdWVzOyBzZWUgZGVmbGF0ZSgpIGFuZCBpbmZsYXRlKCkgYmVsb3cgZm9yIGRldGFpbHMgKi9cbi8vdmFyIFpfTk9fRkxVU0ggICAgICA9IDA7XG4vL3ZhciBaX1BBUlRJQUxfRkxVU0ggPSAxO1xuLy92YXIgWl9TWU5DX0ZMVVNIICAgID0gMjtcbi8vdmFyIFpfRlVMTF9GTFVTSCAgICA9IDM7XG52YXIgWl9GSU5JU0ggICAgICAgID0gNDtcbnZhciBaX0JMT0NLICAgICAgICAgPSA1O1xudmFyIFpfVFJFRVMgICAgICAgICA9IDY7XG5cblxuLyogUmV0dXJuIGNvZGVzIGZvciB0aGUgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBmdW5jdGlvbnMuIE5lZ2F0aXZlIHZhbHVlc1xuICogYXJlIGVycm9ycywgcG9zaXRpdmUgdmFsdWVzIGFyZSB1c2VkIGZvciBzcGVjaWFsIGJ1dCBub3JtYWwgZXZlbnRzLlxuICovXG52YXIgWl9PSyAgICAgICAgICAgID0gMDtcbnZhciBaX1NUUkVBTV9FTkQgICAgPSAxO1xudmFyIFpfTkVFRF9ESUNUICAgICA9IDI7XG4vL3ZhciBaX0VSUk5PICAgICAgICAgPSAtMTtcbnZhciBaX1NUUkVBTV9FUlJPUiAgPSAtMjtcbnZhciBaX0RBVEFfRVJST1IgICAgPSAtMztcbnZhciBaX01FTV9FUlJPUiAgICAgPSAtNDtcbnZhciBaX0JVRl9FUlJPUiAgICAgPSAtNTtcbi8vdmFyIFpfVkVSU0lPTl9FUlJPUiA9IC02O1xuXG4vKiBUaGUgZGVmbGF0ZSBjb21wcmVzc2lvbiBtZXRob2QgKi9cbnZhciBaX0RFRkxBVEVEICA9IDg7XG5cblxuLyogU1RBVEVTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblxudmFyICAgIEhFQUQgPSAxOyAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBtYWdpYyBoZWFkZXIgKi9cbnZhciAgICBGTEFHUyA9IDI7ICAgICAgLyogaTogd2FpdGluZyBmb3IgbWV0aG9kIGFuZCBmbGFncyAoZ3ppcCkgKi9cbnZhciAgICBUSU1FID0gMzsgICAgICAgLyogaTogd2FpdGluZyBmb3IgbW9kaWZpY2F0aW9uIHRpbWUgKGd6aXApICovXG52YXIgICAgT1MgPSA0OyAgICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGV4dHJhIGZsYWdzIGFuZCBvcGVyYXRpbmcgc3lzdGVtIChnemlwKSAqL1xudmFyICAgIEVYTEVOID0gNTsgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBsZW5ndGggKGd6aXApICovXG52YXIgICAgRVhUUkEgPSA2OyAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGV4dHJhIGJ5dGVzIChnemlwKSAqL1xudmFyICAgIE5BTUUgPSA3OyAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBlbmQgb2YgZmlsZSBuYW1lIChnemlwKSAqL1xudmFyICAgIENPTU1FTlQgPSA4OyAgICAvKiBpOiB3YWl0aW5nIGZvciBlbmQgb2YgY29tbWVudCAoZ3ppcCkgKi9cbnZhciAgICBIQ1JDID0gOTsgICAgICAgLyogaTogd2FpdGluZyBmb3IgaGVhZGVyIGNyYyAoZ3ppcCkgKi9cbnZhciAgICBESUNUSUQgPSAxMDsgICAgLyogaTogd2FpdGluZyBmb3IgZGljdGlvbmFyeSBjaGVjayB2YWx1ZSAqL1xudmFyICAgIERJQ1QgPSAxMTsgICAgICAvKiB3YWl0aW5nIGZvciBpbmZsYXRlU2V0RGljdGlvbmFyeSgpIGNhbGwgKi9cbnZhciAgICAgICAgVFlQRSA9IDEyOyAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIHR5cGUgYml0cywgaW5jbHVkaW5nIGxhc3QtZmxhZyBiaXQgKi9cbnZhciAgICAgICAgVFlQRURPID0gMTM7ICAgIC8qIGk6IHNhbWUsIGJ1dCBza2lwIGNoZWNrIHRvIGV4aXQgaW5mbGF0ZSBvbiBuZXcgYmxvY2sgKi9cbnZhciAgICAgICAgU1RPUkVEID0gMTQ7ICAgIC8qIGk6IHdhaXRpbmcgZm9yIHN0b3JlZCBzaXplIChsZW5ndGggYW5kIGNvbXBsZW1lbnQpICovXG52YXIgICAgICAgIENPUFlfID0gMTU7ICAgICAvKiBpL286IHNhbWUgYXMgQ09QWSBiZWxvdywgYnV0IG9ubHkgZmlyc3QgdGltZSBpbiAqL1xudmFyICAgICAgICBDT1BZID0gMTY7ICAgICAgLyogaS9vOiB3YWl0aW5nIGZvciBpbnB1dCBvciBvdXRwdXQgdG8gY29weSBzdG9yZWQgYmxvY2sgKi9cbnZhciAgICAgICAgVEFCTEUgPSAxNzsgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGR5bmFtaWMgYmxvY2sgdGFibGUgbGVuZ3RocyAqL1xudmFyICAgICAgICBMRU5MRU5TID0gMTg7ICAgLyogaTogd2FpdGluZyBmb3IgY29kZSBsZW5ndGggY29kZSBsZW5ndGhzICovXG52YXIgICAgICAgIENPREVMRU5TID0gMTk7ICAvKiBpOiB3YWl0aW5nIGZvciBsZW5ndGgvbGl0IGFuZCBkaXN0YW5jZSBjb2RlIGxlbmd0aHMgKi9cbnZhciAgICAgICAgICAgIExFTl8gPSAyMDsgICAgICAvKiBpOiBzYW1lIGFzIExFTiBiZWxvdywgYnV0IG9ubHkgZmlyc3QgdGltZSBpbiAqL1xudmFyICAgICAgICAgICAgTEVOID0gMjE7ICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGxlbmd0aC9saXQvZW9iIGNvZGUgKi9cbnZhciAgICAgICAgICAgIExFTkVYVCA9IDIyOyAgICAvKiBpOiB3YWl0aW5nIGZvciBsZW5ndGggZXh0cmEgYml0cyAqL1xudmFyICAgICAgICAgICAgRElTVCA9IDIzOyAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGRpc3RhbmNlIGNvZGUgKi9cbnZhciAgICAgICAgICAgIERJU1RFWFQgPSAyNDsgICAvKiBpOiB3YWl0aW5nIGZvciBkaXN0YW5jZSBleHRyYSBiaXRzICovXG52YXIgICAgICAgICAgICBNQVRDSCA9IDI1OyAgICAgLyogbzogd2FpdGluZyBmb3Igb3V0cHV0IHNwYWNlIHRvIGNvcHkgc3RyaW5nICovXG52YXIgICAgICAgICAgICBMSVQgPSAyNjsgICAgICAgLyogbzogd2FpdGluZyBmb3Igb3V0cHV0IHNwYWNlIHRvIHdyaXRlIGxpdGVyYWwgKi9cbnZhciAgICBDSEVDSyA9IDI3OyAgICAgLyogaTogd2FpdGluZyBmb3IgMzItYml0IGNoZWNrIHZhbHVlICovXG52YXIgICAgTEVOR1RIID0gMjg7ICAgIC8qIGk6IHdhaXRpbmcgZm9yIDMyLWJpdCBsZW5ndGggKGd6aXApICovXG52YXIgICAgRE9ORSA9IDI5OyAgICAgIC8qIGZpbmlzaGVkIGNoZWNrLCBkb25lIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovXG52YXIgICAgQkFEID0gMzA7ICAgICAgIC8qIGdvdCBhIGRhdGEgZXJyb3IgLS0gcmVtYWluIGhlcmUgdW50aWwgcmVzZXQgKi9cbnZhciAgICBNRU0gPSAzMTsgICAgICAgLyogZ290IGFuIGluZmxhdGUoKSBtZW1vcnkgZXJyb3IgLS0gcmVtYWluIGhlcmUgdW50aWwgcmVzZXQgKi9cbnZhciAgICBTWU5DID0gMzI7ICAgICAgLyogbG9va2luZyBmb3Igc3luY2hyb25pemF0aW9uIGJ5dGVzIHRvIHJlc3RhcnQgaW5mbGF0ZSgpICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblxuXG52YXIgRU5PVUdIX0xFTlMgPSA4NTI7XG52YXIgRU5PVUdIX0RJU1RTID0gNTkyO1xuLy92YXIgRU5PVUdIID0gIChFTk9VR0hfTEVOUytFTk9VR0hfRElTVFMpO1xuXG52YXIgTUFYX1dCSVRTID0gMTU7XG4vKiAzMksgTFo3NyB3aW5kb3cgKi9cbnZhciBERUZfV0JJVFMgPSBNQVhfV0JJVFM7XG5cblxuZnVuY3Rpb24genN3YXAzMihxKSB7XG4gIHJldHVybiAgKCgocSA+Pj4gMjQpICYgMHhmZikgK1xuICAgICAgICAgICgocSA+Pj4gOCkgJiAweGZmMDApICtcbiAgICAgICAgICAoKHEgJiAweGZmMDApIDw8IDgpICtcbiAgICAgICAgICAoKHEgJiAweGZmKSA8PCAyNCkpO1xufVxuXG5cbmZ1bmN0aW9uIEluZmxhdGVTdGF0ZSgpIHtcbiAgdGhpcy5tb2RlID0gMDsgICAgICAgICAgICAgLyogY3VycmVudCBpbmZsYXRlIG1vZGUgKi9cbiAgdGhpcy5sYXN0ID0gZmFsc2U7ICAgICAgICAgIC8qIHRydWUgaWYgcHJvY2Vzc2luZyBsYXN0IGJsb2NrICovXG4gIHRoaXMud3JhcCA9IDA7ICAgICAgICAgICAgICAvKiBiaXQgMCB0cnVlIGZvciB6bGliLCBiaXQgMSB0cnVlIGZvciBnemlwICovXG4gIHRoaXMuaGF2ZWRpY3QgPSBmYWxzZTsgICAgICAvKiB0cnVlIGlmIGRpY3Rpb25hcnkgcHJvdmlkZWQgKi9cbiAgdGhpcy5mbGFncyA9IDA7ICAgICAgICAgICAgIC8qIGd6aXAgaGVhZGVyIG1ldGhvZCBhbmQgZmxhZ3MgKDAgaWYgemxpYikgKi9cbiAgdGhpcy5kbWF4ID0gMDsgICAgICAgICAgICAgIC8qIHpsaWIgaGVhZGVyIG1heCBkaXN0YW5jZSAoSU5GTEFURV9TVFJJQ1QpICovXG4gIHRoaXMuY2hlY2sgPSAwOyAgICAgICAgICAgICAvKiBwcm90ZWN0ZWQgY29weSBvZiBjaGVjayB2YWx1ZSAqL1xuICB0aGlzLnRvdGFsID0gMDsgICAgICAgICAgICAgLyogcHJvdGVjdGVkIGNvcHkgb2Ygb3V0cHV0IGNvdW50ICovXG4gIC8vIFRPRE86IG1heSBiZSB7fVxuICB0aGlzLmhlYWQgPSBudWxsOyAgICAgICAgICAgLyogd2hlcmUgdG8gc2F2ZSBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiAqL1xuXG4gIC8qIHNsaWRpbmcgd2luZG93ICovXG4gIHRoaXMud2JpdHMgPSAwOyAgICAgICAgICAgICAvKiBsb2cgYmFzZSAyIG9mIHJlcXVlc3RlZCB3aW5kb3cgc2l6ZSAqL1xuICB0aGlzLndzaXplID0gMDsgICAgICAgICAgICAgLyogd2luZG93IHNpemUgb3IgemVybyBpZiBub3QgdXNpbmcgd2luZG93ICovXG4gIHRoaXMud2hhdmUgPSAwOyAgICAgICAgICAgICAvKiB2YWxpZCBieXRlcyBpbiB0aGUgd2luZG93ICovXG4gIHRoaXMud25leHQgPSAwOyAgICAgICAgICAgICAvKiB3aW5kb3cgd3JpdGUgaW5kZXggKi9cbiAgdGhpcy53aW5kb3cgPSBudWxsOyAgICAgICAgIC8qIGFsbG9jYXRlZCBzbGlkaW5nIHdpbmRvdywgaWYgbmVlZGVkICovXG5cbiAgLyogYml0IGFjY3VtdWxhdG9yICovXG4gIHRoaXMuaG9sZCA9IDA7ICAgICAgICAgICAgICAvKiBpbnB1dCBiaXQgYWNjdW11bGF0b3IgKi9cbiAgdGhpcy5iaXRzID0gMDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBiaXRzIGluIFwiaW5cIiAqL1xuXG4gIC8qIGZvciBzdHJpbmcgYW5kIHN0b3JlZCBibG9jayBjb3B5aW5nICovXG4gIHRoaXMubGVuZ3RoID0gMDsgICAgICAgICAgICAvKiBsaXRlcmFsIG9yIGxlbmd0aCBvZiBkYXRhIHRvIGNvcHkgKi9cbiAgdGhpcy5vZmZzZXQgPSAwOyAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhY2sgdG8gY29weSBzdHJpbmcgZnJvbSAqL1xuXG4gIC8qIGZvciB0YWJsZSBhbmQgY29kZSBkZWNvZGluZyAqL1xuICB0aGlzLmV4dHJhID0gMDsgICAgICAgICAgICAgLyogZXh0cmEgYml0cyBuZWVkZWQgKi9cblxuICAvKiBmaXhlZCBhbmQgZHluYW1pYyBjb2RlIHRhYmxlcyAqL1xuICB0aGlzLmxlbmNvZGUgPSBudWxsOyAgICAgICAgICAvKiBzdGFydGluZyB0YWJsZSBmb3IgbGVuZ3RoL2xpdGVyYWwgY29kZXMgKi9cbiAgdGhpcy5kaXN0Y29kZSA9IG51bGw7ICAgICAgICAgLyogc3RhcnRpbmcgdGFibGUgZm9yIGRpc3RhbmNlIGNvZGVzICovXG4gIHRoaXMubGVuYml0cyA9IDA7ICAgICAgICAgICAvKiBpbmRleCBiaXRzIGZvciBsZW5jb2RlICovXG4gIHRoaXMuZGlzdGJpdHMgPSAwOyAgICAgICAgICAvKiBpbmRleCBiaXRzIGZvciBkaXN0Y29kZSAqL1xuXG4gIC8qIGR5bmFtaWMgdGFibGUgYnVpbGRpbmcgKi9cbiAgdGhpcy5uY29kZSA9IDA7ICAgICAgICAgICAgIC8qIG51bWJlciBvZiBjb2RlIGxlbmd0aCBjb2RlIGxlbmd0aHMgKi9cbiAgdGhpcy5ubGVuID0gMDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBsZW5ndGggY29kZSBsZW5ndGhzICovXG4gIHRoaXMubmRpc3QgPSAwOyAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZGlzdGFuY2UgY29kZSBsZW5ndGhzICovXG4gIHRoaXMuaGF2ZSA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZSBsZW5ndGhzIGluIGxlbnNbXSAqL1xuICB0aGlzLm5leHQgPSBudWxsOyAgICAgICAgICAgICAgLyogbmV4dCBhdmFpbGFibGUgc3BhY2UgaW4gY29kZXNbXSAqL1xuXG4gIHRoaXMubGVucyA9IG5ldyB1dGlscy5CdWYxNigzMjApOyAvKiB0ZW1wb3Jhcnkgc3RvcmFnZSBmb3IgY29kZSBsZW5ndGhzICovXG4gIHRoaXMud29yayA9IG5ldyB1dGlscy5CdWYxNigyODgpOyAvKiB3b3JrIGFyZWEgZm9yIGNvZGUgdGFibGUgYnVpbGRpbmcgKi9cblxuICAvKlxuICAgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIHBvaW50ZXJzIGluIGpzLCB3ZSB1c2UgbGVuY29kZSBhbmQgZGlzdGNvZGUgZGlyZWN0bHlcbiAgIGFzIGJ1ZmZlcnMgc28gd2UgZG9uJ3QgbmVlZCBjb2Rlc1xuICAqL1xuICAvL3RoaXMuY29kZXMgPSBuZXcgdXRpbHMuQnVmMzIoRU5PVUdIKTsgICAgICAgLyogc3BhY2UgZm9yIGNvZGUgdGFibGVzICovXG4gIHRoaXMubGVuZHluID0gbnVsbDsgICAgICAgICAgICAgIC8qIGR5bmFtaWMgdGFibGUgZm9yIGxlbmd0aC9saXRlcmFsIGNvZGVzIChKUyBzcGVjaWZpYykgKi9cbiAgdGhpcy5kaXN0ZHluID0gbnVsbDsgICAgICAgICAgICAgLyogZHluYW1pYyB0YWJsZSBmb3IgZGlzdGFuY2UgY29kZXMgKEpTIHNwZWNpZmljKSAqL1xuICB0aGlzLnNhbmUgPSAwOyAgICAgICAgICAgICAgICAgICAvKiBpZiBmYWxzZSwgYWxsb3cgaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyICovXG4gIHRoaXMuYmFjayA9IDA7ICAgICAgICAgICAgICAgICAgIC8qIGJpdHMgYmFjayBvZiBsYXN0IHVucHJvY2Vzc2VkIGxlbmd0aC9saXQgKi9cbiAgdGhpcy53YXMgPSAwOyAgICAgICAgICAgICAgICAgICAgLyogaW5pdGlhbCBsZW5ndGggb2YgbWF0Y2ggKi9cbn1cblxuZnVuY3Rpb24gaW5mbGF0ZVJlc2V0S2VlcChzdHJtKSB7XG4gIHZhciBzdGF0ZTtcblxuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUpIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIHN0YXRlID0gc3RybS5zdGF0ZTtcbiAgc3RybS50b3RhbF9pbiA9IHN0cm0udG90YWxfb3V0ID0gc3RhdGUudG90YWwgPSAwO1xuICBzdHJtLm1zZyA9ICcnOyAvKlpfTlVMTCovXG4gIGlmIChzdGF0ZS53cmFwKSB7ICAgICAgIC8qIHRvIHN1cHBvcnQgaWxsLWNvbmNlaXZlZCBKYXZhIHRlc3Qgc3VpdGUgKi9cbiAgICBzdHJtLmFkbGVyID0gc3RhdGUud3JhcCAmIDE7XG4gIH1cbiAgc3RhdGUubW9kZSA9IEhFQUQ7XG4gIHN0YXRlLmxhc3QgPSAwO1xuICBzdGF0ZS5oYXZlZGljdCA9IDA7XG4gIHN0YXRlLmRtYXggPSAzMjc2ODtcbiAgc3RhdGUuaGVhZCA9IG51bGwvKlpfTlVMTCovO1xuICBzdGF0ZS5ob2xkID0gMDtcbiAgc3RhdGUuYml0cyA9IDA7XG4gIC8vc3RhdGUubGVuY29kZSA9IHN0YXRlLmRpc3Rjb2RlID0gc3RhdGUubmV4dCA9IHN0YXRlLmNvZGVzO1xuICBzdGF0ZS5sZW5jb2RlID0gc3RhdGUubGVuZHluID0gbmV3IHV0aWxzLkJ1ZjMyKEVOT1VHSF9MRU5TKTtcbiAgc3RhdGUuZGlzdGNvZGUgPSBzdGF0ZS5kaXN0ZHluID0gbmV3IHV0aWxzLkJ1ZjMyKEVOT1VHSF9ESVNUUyk7XG5cbiAgc3RhdGUuc2FuZSA9IDE7XG4gIHN0YXRlLmJhY2sgPSAtMTtcbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiByZXNldFxcblwiKSk7XG4gIHJldHVybiBaX09LO1xufVxuXG5mdW5jdGlvbiBpbmZsYXRlUmVzZXQoc3RybSkge1xuICB2YXIgc3RhdGU7XG5cbiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfVxuICBzdGF0ZSA9IHN0cm0uc3RhdGU7XG4gIHN0YXRlLndzaXplID0gMDtcbiAgc3RhdGUud2hhdmUgPSAwO1xuICBzdGF0ZS53bmV4dCA9IDA7XG4gIHJldHVybiBpbmZsYXRlUmVzZXRLZWVwKHN0cm0pO1xuXG59XG5cbmZ1bmN0aW9uIGluZmxhdGVSZXNldDIoc3RybSwgd2luZG93Qml0cykge1xuICB2YXIgd3JhcDtcbiAgdmFyIHN0YXRlO1xuXG4gIC8qIGdldCB0aGUgc3RhdGUgKi9cbiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfVxuICBzdGF0ZSA9IHN0cm0uc3RhdGU7XG5cbiAgLyogZXh0cmFjdCB3cmFwIHJlcXVlc3QgZnJvbSB3aW5kb3dCaXRzIHBhcmFtZXRlciAqL1xuICBpZiAod2luZG93Qml0cyA8IDApIHtcbiAgICB3cmFwID0gMDtcbiAgICB3aW5kb3dCaXRzID0gLXdpbmRvd0JpdHM7XG4gIH1cbiAgZWxzZSB7XG4gICAgd3JhcCA9ICh3aW5kb3dCaXRzID4+IDQpICsgMTtcbiAgICBpZiAod2luZG93Qml0cyA8IDQ4KSB7XG4gICAgICB3aW5kb3dCaXRzICY9IDE1O1xuICAgIH1cbiAgfVxuXG4gIC8qIHNldCBudW1iZXIgb2Ygd2luZG93IGJpdHMsIGZyZWUgd2luZG93IGlmIGRpZmZlcmVudCAqL1xuICBpZiAod2luZG93Qml0cyAmJiAod2luZG93Qml0cyA8IDggfHwgd2luZG93Qml0cyA+IDE1KSkge1xuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuICBpZiAoc3RhdGUud2luZG93ICE9PSBudWxsICYmIHN0YXRlLndiaXRzICE9PSB3aW5kb3dCaXRzKSB7XG4gICAgc3RhdGUud2luZG93ID0gbnVsbDtcbiAgfVxuXG4gIC8qIHVwZGF0ZSBzdGF0ZSBhbmQgcmVzZXQgdGhlIHJlc3Qgb2YgaXQgKi9cbiAgc3RhdGUud3JhcCA9IHdyYXA7XG4gIHN0YXRlLndiaXRzID0gd2luZG93Qml0cztcbiAgcmV0dXJuIGluZmxhdGVSZXNldChzdHJtKTtcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZUluaXQyKHN0cm0sIHdpbmRvd0JpdHMpIHtcbiAgdmFyIHJldDtcbiAgdmFyIHN0YXRlO1xuXG4gIGlmICghc3RybSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgLy9zdHJtLm1zZyA9IFpfTlVMTDsgICAgICAgICAgICAgICAgIC8qIGluIGNhc2Ugd2UgcmV0dXJuIGFuIGVycm9yICovXG5cbiAgc3RhdGUgPSBuZXcgSW5mbGF0ZVN0YXRlKCk7XG5cbiAgLy9pZiAoc3RhdGUgPT09IFpfTlVMTCkgcmV0dXJuIFpfTUVNX0VSUk9SO1xuICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6IGFsbG9jYXRlZFxcblwiKSk7XG4gIHN0cm0uc3RhdGUgPSBzdGF0ZTtcbiAgc3RhdGUud2luZG93ID0gbnVsbC8qWl9OVUxMKi87XG4gIHJldCA9IGluZmxhdGVSZXNldDIoc3RybSwgd2luZG93Qml0cyk7XG4gIGlmIChyZXQgIT09IFpfT0spIHtcbiAgICBzdHJtLnN0YXRlID0gbnVsbC8qWl9OVUxMKi87XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZUluaXQoc3RybSkge1xuICByZXR1cm4gaW5mbGF0ZUluaXQyKHN0cm0sIERFRl9XQklUUyk7XG59XG5cblxuLypcbiBSZXR1cm4gc3RhdGUgd2l0aCBsZW5ndGggYW5kIGRpc3RhbmNlIGRlY29kaW5nIHRhYmxlcyBhbmQgaW5kZXggc2l6ZXMgc2V0IHRvXG4gZml4ZWQgY29kZSBkZWNvZGluZy4gIE5vcm1hbGx5IHRoaXMgcmV0dXJucyBmaXhlZCB0YWJsZXMgZnJvbSBpbmZmaXhlZC5oLlxuIElmIEJVSUxERklYRUQgaXMgZGVmaW5lZCwgdGhlbiBpbnN0ZWFkIHRoaXMgcm91dGluZSBidWlsZHMgdGhlIHRhYmxlcyB0aGVcbiBmaXJzdCB0aW1lIGl0J3MgY2FsbGVkLCBhbmQgcmV0dXJucyB0aG9zZSB0YWJsZXMgdGhlIGZpcnN0IHRpbWUgYW5kXG4gdGhlcmVhZnRlci4gIFRoaXMgcmVkdWNlcyB0aGUgc2l6ZSBvZiB0aGUgY29kZSBieSBhYm91dCAySyBieXRlcywgaW5cbiBleGNoYW5nZSBmb3IgYSBsaXR0bGUgZXhlY3V0aW9uIHRpbWUuICBIb3dldmVyLCBCVUlMREZJWEVEIHNob3VsZCBub3QgYmVcbiB1c2VkIGZvciB0aHJlYWRlZCBhcHBsaWNhdGlvbnMsIHNpbmNlIHRoZSByZXdyaXRpbmcgb2YgdGhlIHRhYmxlcyBhbmQgdmlyZ2luXG4gbWF5IG5vdCBiZSB0aHJlYWQtc2FmZS5cbiAqL1xudmFyIHZpcmdpbiA9IHRydWU7XG5cbnZhciBsZW5maXgsIGRpc3RmaXg7IC8vIFdlIGhhdmUgbm8gcG9pbnRlcnMgaW4gSlMsIHNvIGtlZXAgdGFibGVzIHNlcGFyYXRlXG5cbmZ1bmN0aW9uIGZpeGVkdGFibGVzKHN0YXRlKSB7XG4gIC8qIGJ1aWxkIGZpeGVkIGh1ZmZtYW4gdGFibGVzIGlmIGZpcnN0IGNhbGwgKG1heSBub3QgYmUgdGhyZWFkIHNhZmUpICovXG4gIGlmICh2aXJnaW4pIHtcbiAgICB2YXIgc3ltO1xuXG4gICAgbGVuZml4ID0gbmV3IHV0aWxzLkJ1ZjMyKDUxMik7XG4gICAgZGlzdGZpeCA9IG5ldyB1dGlscy5CdWYzMigzMik7XG5cbiAgICAvKiBsaXRlcmFsL2xlbmd0aCB0YWJsZSAqL1xuICAgIHN5bSA9IDA7XG4gICAgd2hpbGUgKHN5bSA8IDE0NCkgeyBzdGF0ZS5sZW5zW3N5bSsrXSA9IDg7IH1cbiAgICB3aGlsZSAoc3ltIDwgMjU2KSB7IHN0YXRlLmxlbnNbc3ltKytdID0gOTsgfVxuICAgIHdoaWxlIChzeW0gPCAyODApIHsgc3RhdGUubGVuc1tzeW0rK10gPSA3OyB9XG4gICAgd2hpbGUgKHN5bSA8IDI4OCkgeyBzdGF0ZS5sZW5zW3N5bSsrXSA9IDg7IH1cblxuICAgIGluZmxhdGVfdGFibGUoTEVOUywgIHN0YXRlLmxlbnMsIDAsIDI4OCwgbGVuZml4LCAgIDAsIHN0YXRlLndvcmssIHsgYml0czogOSB9KTtcblxuICAgIC8qIGRpc3RhbmNlIHRhYmxlICovXG4gICAgc3ltID0gMDtcbiAgICB3aGlsZSAoc3ltIDwgMzIpIHsgc3RhdGUubGVuc1tzeW0rK10gPSA1OyB9XG5cbiAgICBpbmZsYXRlX3RhYmxlKERJU1RTLCBzdGF0ZS5sZW5zLCAwLCAzMiwgICBkaXN0Zml4LCAwLCBzdGF0ZS53b3JrLCB7IGJpdHM6IDUgfSk7XG5cbiAgICAvKiBkbyB0aGlzIGp1c3Qgb25jZSAqL1xuICAgIHZpcmdpbiA9IGZhbHNlO1xuICB9XG5cbiAgc3RhdGUubGVuY29kZSA9IGxlbmZpeDtcbiAgc3RhdGUubGVuYml0cyA9IDk7XG4gIHN0YXRlLmRpc3Rjb2RlID0gZGlzdGZpeDtcbiAgc3RhdGUuZGlzdGJpdHMgPSA1O1xufVxuXG5cbi8qXG4gVXBkYXRlIHRoZSB3aW5kb3cgd2l0aCB0aGUgbGFzdCB3c2l6ZSAobm9ybWFsbHkgMzJLKSBieXRlcyB3cml0dGVuIGJlZm9yZVxuIHJldHVybmluZy4gIElmIHdpbmRvdyBkb2VzIG5vdCBleGlzdCB5ZXQsIGNyZWF0ZSBpdC4gIFRoaXMgaXMgb25seSBjYWxsZWRcbiB3aGVuIGEgd2luZG93IGlzIGFscmVhZHkgaW4gdXNlLCBvciB3aGVuIG91dHB1dCBoYXMgYmVlbiB3cml0dGVuIGR1cmluZyB0aGlzXG4gaW5mbGF0ZSBjYWxsLCBidXQgdGhlIGVuZCBvZiB0aGUgZGVmbGF0ZSBzdHJlYW0gaGFzIG5vdCBiZWVuIHJlYWNoZWQgeWV0LlxuIEl0IGlzIGFsc28gY2FsbGVkIHRvIGNyZWF0ZSBhIHdpbmRvdyBmb3IgZGljdGlvbmFyeSBkYXRhIHdoZW4gYSBkaWN0aW9uYXJ5XG4gaXMgbG9hZGVkLlxuXG4gUHJvdmlkaW5nIG91dHB1dCBidWZmZXJzIGxhcmdlciB0aGFuIDMySyB0byBpbmZsYXRlKCkgc2hvdWxkIHByb3ZpZGUgYSBzcGVlZFxuIGFkdmFudGFnZSwgc2luY2Ugb25seSB0aGUgbGFzdCAzMksgb2Ygb3V0cHV0IGlzIGNvcGllZCB0byB0aGUgc2xpZGluZyB3aW5kb3dcbiB1cG9uIHJldHVybiBmcm9tIGluZmxhdGUoKSwgYW5kIHNpbmNlIGFsbCBkaXN0YW5jZXMgYWZ0ZXIgdGhlIGZpcnN0IDMySyBvZlxuIG91dHB1dCB3aWxsIGZhbGwgaW4gdGhlIG91dHB1dCBkYXRhLCBtYWtpbmcgbWF0Y2ggY29waWVzIHNpbXBsZXIgYW5kIGZhc3Rlci5cbiBUaGUgYWR2YW50YWdlIG1heSBiZSBkZXBlbmRlbnQgb24gdGhlIHNpemUgb2YgdGhlIHByb2Nlc3NvcidzIGRhdGEgY2FjaGVzLlxuICovXG5mdW5jdGlvbiB1cGRhdGV3aW5kb3coc3RybSwgc3JjLCBlbmQsIGNvcHkpIHtcbiAgdmFyIGRpc3Q7XG4gIHZhciBzdGF0ZSA9IHN0cm0uc3RhdGU7XG5cbiAgLyogaWYgaXQgaGFzbid0IGJlZW4gZG9uZSBhbHJlYWR5LCBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIHdpbmRvdyAqL1xuICBpZiAoc3RhdGUud2luZG93ID09PSBudWxsKSB7XG4gICAgc3RhdGUud3NpemUgPSAxIDw8IHN0YXRlLndiaXRzO1xuICAgIHN0YXRlLnduZXh0ID0gMDtcbiAgICBzdGF0ZS53aGF2ZSA9IDA7XG5cbiAgICBzdGF0ZS53aW5kb3cgPSBuZXcgdXRpbHMuQnVmOChzdGF0ZS53c2l6ZSk7XG4gIH1cblxuICAvKiBjb3B5IHN0YXRlLT53c2l6ZSBvciBsZXNzIG91dHB1dCBieXRlcyBpbnRvIHRoZSBjaXJjdWxhciB3aW5kb3cgKi9cbiAgaWYgKGNvcHkgPj0gc3RhdGUud3NpemUpIHtcbiAgICB1dGlscy5hcnJheVNldChzdGF0ZS53aW5kb3csIHNyYywgZW5kIC0gc3RhdGUud3NpemUsIHN0YXRlLndzaXplLCAwKTtcbiAgICBzdGF0ZS53bmV4dCA9IDA7XG4gICAgc3RhdGUud2hhdmUgPSBzdGF0ZS53c2l6ZTtcbiAgfVxuICBlbHNlIHtcbiAgICBkaXN0ID0gc3RhdGUud3NpemUgLSBzdGF0ZS53bmV4dDtcbiAgICBpZiAoZGlzdCA+IGNvcHkpIHtcbiAgICAgIGRpc3QgPSBjb3B5O1xuICAgIH1cbiAgICAvL3ptZW1jcHkoc3RhdGUtPndpbmRvdyArIHN0YXRlLT53bmV4dCwgZW5kIC0gY29weSwgZGlzdCk7XG4gICAgdXRpbHMuYXJyYXlTZXQoc3RhdGUud2luZG93LCBzcmMsIGVuZCAtIGNvcHksIGRpc3QsIHN0YXRlLnduZXh0KTtcbiAgICBjb3B5IC09IGRpc3Q7XG4gICAgaWYgKGNvcHkpIHtcbiAgICAgIC8vem1lbWNweShzdGF0ZS0+d2luZG93LCBlbmQgLSBjb3B5LCBjb3B5KTtcbiAgICAgIHV0aWxzLmFycmF5U2V0KHN0YXRlLndpbmRvdywgc3JjLCBlbmQgLSBjb3B5LCBjb3B5LCAwKTtcbiAgICAgIHN0YXRlLnduZXh0ID0gY29weTtcbiAgICAgIHN0YXRlLndoYXZlID0gc3RhdGUud3NpemU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc3RhdGUud25leHQgKz0gZGlzdDtcbiAgICAgIGlmIChzdGF0ZS53bmV4dCA9PT0gc3RhdGUud3NpemUpIHsgc3RhdGUud25leHQgPSAwOyB9XG4gICAgICBpZiAoc3RhdGUud2hhdmUgPCBzdGF0ZS53c2l6ZSkgeyBzdGF0ZS53aGF2ZSArPSBkaXN0OyB9XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG5mdW5jdGlvbiBpbmZsYXRlKHN0cm0sIGZsdXNoKSB7XG4gIHZhciBzdGF0ZTtcbiAgdmFyIGlucHV0LCBvdXRwdXQ7ICAgICAgICAgIC8vIGlucHV0L291dHB1dCBidWZmZXJzXG4gIHZhciBuZXh0OyAgICAgICAgICAgICAgICAgICAvKiBuZXh0IGlucHV0IElOREVYICovXG4gIHZhciBwdXQ7ICAgICAgICAgICAgICAgICAgICAvKiBuZXh0IG91dHB1dCBJTkRFWCAqL1xuICB2YXIgaGF2ZSwgbGVmdDsgICAgICAgICAgICAgLyogYXZhaWxhYmxlIGlucHV0IGFuZCBvdXRwdXQgKi9cbiAgdmFyIGhvbGQ7ICAgICAgICAgICAgICAgICAgIC8qIGJpdCBidWZmZXIgKi9cbiAgdmFyIGJpdHM7ICAgICAgICAgICAgICAgICAgIC8qIGJpdHMgaW4gYml0IGJ1ZmZlciAqL1xuICB2YXIgX2luLCBfb3V0OyAgICAgICAgICAgICAgLyogc2F2ZSBzdGFydGluZyBhdmFpbGFibGUgaW5wdXQgYW5kIG91dHB1dCAqL1xuICB2YXIgY29weTsgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIHN0b3JlZCBvciBtYXRjaCBieXRlcyB0byBjb3B5ICovXG4gIHZhciBmcm9tOyAgICAgICAgICAgICAgICAgICAvKiB3aGVyZSB0byBjb3B5IG1hdGNoIGJ5dGVzIGZyb20gKi9cbiAgdmFyIGZyb21fc291cmNlO1xuICB2YXIgaGVyZSA9IDA7ICAgICAgICAgICAgICAgLyogY3VycmVudCBkZWNvZGluZyB0YWJsZSBlbnRyeSAqL1xuICB2YXIgaGVyZV9iaXRzLCBoZXJlX29wLCBoZXJlX3ZhbDsgLy8gcGFrZWQgXCJoZXJlXCIgZGVub3JtYWxpemVkIChKUyBzcGVjaWZpYylcbiAgLy92YXIgbGFzdDsgICAgICAgICAgICAgICAgICAgLyogcGFyZW50IHRhYmxlIGVudHJ5ICovXG4gIHZhciBsYXN0X2JpdHMsIGxhc3Rfb3AsIGxhc3RfdmFsOyAvLyBwYWtlZCBcImxhc3RcIiBkZW5vcm1hbGl6ZWQgKEpTIHNwZWNpZmljKVxuICB2YXIgbGVuOyAgICAgICAgICAgICAgICAgICAgLyogbGVuZ3RoIHRvIGNvcHkgZm9yIHJlcGVhdHMsIGJpdHMgdG8gZHJvcCAqL1xuICB2YXIgcmV0OyAgICAgICAgICAgICAgICAgICAgLyogcmV0dXJuIGNvZGUgKi9cbiAgdmFyIGhidWYgPSBuZXcgdXRpbHMuQnVmOCg0KTsgICAgLyogYnVmZmVyIGZvciBnemlwIGhlYWRlciBjcmMgY2FsY3VsYXRpb24gKi9cbiAgdmFyIG9wdHM7XG5cbiAgdmFyIG47IC8vIHRlbXBvcmFyeSB2YXIgZm9yIE5FRURfQklUU1xuXG4gIHZhciBvcmRlciA9IC8qIHBlcm11dGF0aW9uIG9mIGNvZGUgbGVuZ3RocyAqL1xuICAgIFsgMTYsIDE3LCAxOCwgMCwgOCwgNywgOSwgNiwgMTAsIDUsIDExLCA0LCAxMiwgMywgMTMsIDIsIDE0LCAxLCAxNSBdO1xuXG5cbiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlIHx8ICFzdHJtLm91dHB1dCB8fFxuICAgICAgKCFzdHJtLmlucHV0ICYmIHN0cm0uYXZhaWxfaW4gIT09IDApKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuICBpZiAoc3RhdGUubW9kZSA9PT0gVFlQRSkgeyBzdGF0ZS5tb2RlID0gVFlQRURPOyB9ICAgIC8qIHNraXAgY2hlY2sgKi9cblxuXG4gIC8vLS0tIExPQUQoKSAtLS1cbiAgcHV0ID0gc3RybS5uZXh0X291dDtcbiAgb3V0cHV0ID0gc3RybS5vdXRwdXQ7XG4gIGxlZnQgPSBzdHJtLmF2YWlsX291dDtcbiAgbmV4dCA9IHN0cm0ubmV4dF9pbjtcbiAgaW5wdXQgPSBzdHJtLmlucHV0O1xuICBoYXZlID0gc3RybS5hdmFpbF9pbjtcbiAgaG9sZCA9IHN0YXRlLmhvbGQ7XG4gIGJpdHMgPSBzdGF0ZS5iaXRzO1xuICAvLy0tLVxuXG4gIF9pbiA9IGhhdmU7XG4gIF9vdXQgPSBsZWZ0O1xuICByZXQgPSBaX09LO1xuXG4gIGluZl9sZWF2ZTogLy8gZ290byBlbXVsYXRpb25cbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoc3RhdGUubW9kZSkge1xuICAgICAgY2FzZSBIRUFEOlxuICAgICAgICBpZiAoc3RhdGUud3JhcCA9PT0gMCkge1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFRE87XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0gTkVFREJJVFMoMTYpO1xuICAgICAgICB3aGlsZSAoYml0cyA8IDE2KSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIGlmICgoc3RhdGUud3JhcCAmIDIpICYmIGhvbGQgPT09IDB4OGIxZikgeyAgLyogZ3ppcCBoZWFkZXIgKi9cbiAgICAgICAgICBzdGF0ZS5jaGVjayA9IDAvKmNyYzMyKDBMLCBaX05VTEwsIDApKi87XG4gICAgICAgICAgLy89PT0gQ1JDMihzdGF0ZS5jaGVjaywgaG9sZCk7XG4gICAgICAgICAgaGJ1ZlswXSA9IGhvbGQgJiAweGZmO1xuICAgICAgICAgIGhidWZbMV0gPSAoaG9sZCA+Pj4gOCkgJiAweGZmO1xuICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDIsIDApO1xuICAgICAgICAgIC8vPT09Ly9cblxuICAgICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgICAgYml0cyA9IDA7XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBGTEFHUztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5mbGFncyA9IDA7ICAgICAgICAgICAvKiBleHBlY3QgemxpYiBoZWFkZXIgKi9cbiAgICAgICAgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgICBzdGF0ZS5oZWFkLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIShzdGF0ZS53cmFwICYgMSkgfHwgICAvKiBjaGVjayBpZiB6bGliIGhlYWRlciBhbGxvd2VkICovXG4gICAgICAgICAgKCgoaG9sZCAmIDB4ZmYpLypCSVRTKDgpKi8gPDwgOCkgKyAoaG9sZCA+PiA4KSkgJSAzMSkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2luY29ycmVjdCBoZWFkZXIgY2hlY2snO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChob2xkICYgMHgwZikvKkJJVFMoNCkqLyAhPT0gWl9ERUZMQVRFRCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ3Vua25vd24gY29tcHJlc3Npb24gbWV0aG9kJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vLS0tIERST1BCSVRTKDQpIC0tLS8vXG4gICAgICAgIGhvbGQgPj4+PSA0O1xuICAgICAgICBiaXRzIC09IDQ7XG4gICAgICAgIC8vLS0tLy9cbiAgICAgICAgbGVuID0gKGhvbGQgJiAweDBmKS8qQklUUyg0KSovICsgODtcbiAgICAgICAgaWYgKHN0YXRlLndiaXRzID09PSAwKSB7XG4gICAgICAgICAgc3RhdGUud2JpdHMgPSBsZW47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobGVuID4gc3RhdGUud2JpdHMpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIHdpbmRvdyBzaXplJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLmRtYXggPSAxIDw8IGxlbjtcbiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgIHpsaWIgaGVhZGVyIG9rXFxuXCIpKTtcbiAgICAgICAgc3RybS5hZGxlciA9IHN0YXRlLmNoZWNrID0gMS8qYWRsZXIzMigwTCwgWl9OVUxMLCAwKSovO1xuICAgICAgICBzdGF0ZS5tb2RlID0gaG9sZCAmIDB4MjAwID8gRElDVElEIDogVFlQRTtcbiAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAvLz09PS8vXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBGTEFHUzpcbiAgICAgICAgLy89PT0gTkVFREJJVFMoMTYpOyAqL1xuICAgICAgICB3aGlsZSAoYml0cyA8IDE2KSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLmZsYWdzID0gaG9sZDtcbiAgICAgICAgaWYgKChzdGF0ZS5mbGFncyAmIDB4ZmYpICE9PSBaX0RFRkxBVEVEKSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAndW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QnO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHhlMDAwKSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAndW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0JztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgc3RhdGUuaGVhZC50ZXh0ID0gKChob2xkID4+IDgpICYgMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgLy89PT0gQ1JDMihzdGF0ZS5jaGVjaywgaG9sZCk7XG4gICAgICAgICAgaGJ1ZlswXSA9IGhvbGQgJiAweGZmO1xuICAgICAgICAgIGhidWZbMV0gPSAoaG9sZCA+Pj4gOCkgJiAweGZmO1xuICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDIsIDApO1xuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgfVxuICAgICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgICBob2xkID0gMDtcbiAgICAgICAgYml0cyA9IDA7XG4gICAgICAgIC8vPT09Ly9cbiAgICAgICAgc3RhdGUubW9kZSA9IFRJTUU7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgVElNRTpcbiAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpOyAqL1xuICAgICAgICB3aGlsZSAoYml0cyA8IDMyKSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgc3RhdGUuaGVhZC50aW1lID0gaG9sZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgICAvLz09PSBDUkM0KHN0YXRlLmNoZWNrLCBob2xkKVxuICAgICAgICAgIGhidWZbMF0gPSBob2xkICYgMHhmZjtcbiAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjtcbiAgICAgICAgICBoYnVmWzJdID0gKGhvbGQgPj4+IDE2KSAmIDB4ZmY7XG4gICAgICAgICAgaGJ1ZlszXSA9IChob2xkID4+PiAyNCkgJiAweGZmO1xuICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDQsIDApO1xuICAgICAgICAgIC8vPT09XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLm1vZGUgPSBPUztcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBPUzpcbiAgICAgICAgLy89PT0gTkVFREJJVFMoMTYpOyAqL1xuICAgICAgICB3aGlsZSAoYml0cyA8IDE2KSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgc3RhdGUuaGVhZC54ZmxhZ3MgPSAoaG9sZCAmIDB4ZmYpO1xuICAgICAgICAgIHN0YXRlLmhlYWQub3MgPSAoaG9sZCA+PiA4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgICAvLz09PSBDUkMyKHN0YXRlLmNoZWNrLCBob2xkKTtcbiAgICAgICAgICBoYnVmWzBdID0gaG9sZCAmIDB4ZmY7XG4gICAgICAgICAgaGJ1ZlsxXSA9IChob2xkID4+PiA4KSAmIDB4ZmY7XG4gICAgICAgICAgc3RhdGUuY2hlY2sgPSBjcmMzMihzdGF0ZS5jaGVjaywgaGJ1ZiwgMiwgMCk7XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICB9XG4gICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgIGhvbGQgPSAwO1xuICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5tb2RlID0gRVhMRU47XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgRVhMRU46XG4gICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDQwMCkge1xuICAgICAgICAgIC8vPT09IE5FRURCSVRTKDE2KTsgKi9cbiAgICAgICAgICB3aGlsZSAoYml0cyA8IDE2KSB7XG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgc3RhdGUubGVuZ3RoID0gaG9sZDtcbiAgICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgICAgc3RhdGUuaGVhZC5leHRyYV9sZW4gPSBob2xkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgICAgIC8vPT09IENSQzIoc3RhdGUuY2hlY2ssIGhvbGQpO1xuICAgICAgICAgICAgaGJ1ZlswXSA9IGhvbGQgJiAweGZmO1xuICAgICAgICAgICAgaGJ1ZlsxXSA9IChob2xkID4+PiA4KSAmIDB4ZmY7XG4gICAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBoYnVmLCAyLCAwKTtcbiAgICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgICBob2xkID0gMDtcbiAgICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQuZXh0cmEgPSBudWxsLypaX05VTEwqLztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5tb2RlID0gRVhUUkE7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgRVhUUkE6XG4gICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDQwMCkge1xuICAgICAgICAgIGNvcHkgPSBzdGF0ZS5sZW5ndGg7XG4gICAgICAgICAgaWYgKGNvcHkgPiBoYXZlKSB7IGNvcHkgPSBoYXZlOyB9XG4gICAgICAgICAgaWYgKGNvcHkpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgICAgIGxlbiA9IHN0YXRlLmhlYWQuZXh0cmFfbGVuIC0gc3RhdGUubGVuZ3RoO1xuICAgICAgICAgICAgICBpZiAoIXN0YXRlLmhlYWQuZXh0cmEpIHtcbiAgICAgICAgICAgICAgICAvLyBVc2UgdW50eXBlZCBhcnJheSBmb3IgbW9yZSBjb252ZW5pZW50IHByb2Nlc3NpbmcgbGF0ZXJcbiAgICAgICAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhID0gbmV3IEFycmF5KHN0YXRlLmhlYWQuZXh0cmFfbGVuKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB1dGlscy5hcnJheVNldChcbiAgICAgICAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIG5leHQsXG4gICAgICAgICAgICAgICAgLy8gZXh0cmEgZmllbGQgaXMgbGltaXRlZCB0byA2NTUzNiBieXRlc1xuICAgICAgICAgICAgICAgIC8vIC0gbm8gbmVlZCBmb3IgYWRkaXRpb25hbCBzaXplIGNoZWNrXG4gICAgICAgICAgICAgICAgY29weSxcbiAgICAgICAgICAgICAgICAvKmxlbiArIGNvcHkgPiBzdGF0ZS5oZWFkLmV4dHJhX21heCAtIGxlbiA/IHN0YXRlLmhlYWQuZXh0cmFfbWF4IDogY29weSwqL1xuICAgICAgICAgICAgICAgIGxlblxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAvL3ptZW1jcHkoc3RhdGUuaGVhZC5leHRyYSArIGxlbiwgbmV4dCxcbiAgICAgICAgICAgICAgLy8gICAgICAgIGxlbiArIGNvcHkgPiBzdGF0ZS5oZWFkLmV4dHJhX21heCA/XG4gICAgICAgICAgICAgIC8vICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhX21heCAtIGxlbiA6IGNvcHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGlucHV0LCBjb3B5LCBuZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhdmUgLT0gY29weTtcbiAgICAgICAgICAgIG5leHQgKz0gY29weTtcbiAgICAgICAgICAgIHN0YXRlLmxlbmd0aCAtPSBjb3B5O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc3RhdGUubGVuZ3RoKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICB9XG4gICAgICAgIHN0YXRlLmxlbmd0aCA9IDA7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBOQU1FO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIE5BTUU6XG4gICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDgwMCkge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGNvcHkgPSAwO1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIC8vIFRPRE86IDIgb3IgMSBieXRlcz9cbiAgICAgICAgICAgIGxlbiA9IGlucHV0W25leHQgKyBjb3B5KytdO1xuICAgICAgICAgICAgLyogdXNlIGNvbnN0YW50IGxpbWl0IGJlY2F1c2UgaW4ganMgd2Ugc2hvdWxkIG5vdCBwcmVhbGxvY2F0ZSBtZW1vcnkgKi9cbiAgICAgICAgICAgIGlmIChzdGF0ZS5oZWFkICYmIGxlbiAmJlxuICAgICAgICAgICAgICAgIChzdGF0ZS5sZW5ndGggPCA2NTUzNiAvKnN0YXRlLmhlYWQubmFtZV9tYXgqLykpIHtcbiAgICAgICAgICAgICAgc3RhdGUuaGVhZC5uYW1lICs9IFN0cmluZy5mcm9tQ2hhckNvZGUobGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IHdoaWxlIChsZW4gJiYgY29weSA8IGhhdmUpO1xuXG4gICAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBpbnB1dCwgY29weSwgbmV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGhhdmUgLT0gY29weTtcbiAgICAgICAgICBuZXh0ICs9IGNvcHk7XG4gICAgICAgICAgaWYgKGxlbikgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgc3RhdGUuaGVhZC5uYW1lID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5sZW5ndGggPSAwO1xuICAgICAgICBzdGF0ZS5tb2RlID0gQ09NTUVOVDtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBDT01NRU5UOlxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDEwMDApIHtcbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBjb3B5ID0gMDtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBsZW4gPSBpbnB1dFtuZXh0ICsgY29weSsrXTtcbiAgICAgICAgICAgIC8qIHVzZSBjb25zdGFudCBsaW1pdCBiZWNhdXNlIGluIGpzIHdlIHNob3VsZCBub3QgcHJlYWxsb2NhdGUgbWVtb3J5ICovXG4gICAgICAgICAgICBpZiAoc3RhdGUuaGVhZCAmJiBsZW4gJiZcbiAgICAgICAgICAgICAgICAoc3RhdGUubGVuZ3RoIDwgNjU1MzYgLypzdGF0ZS5oZWFkLmNvbW1fbWF4Ki8pKSB7XG4gICAgICAgICAgICAgIHN0YXRlLmhlYWQuY29tbWVudCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGxlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSB3aGlsZSAobGVuICYmIGNvcHkgPCBoYXZlKTtcbiAgICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGlucHV0LCBjb3B5LCBuZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaGF2ZSAtPSBjb3B5O1xuICAgICAgICAgIG5leHQgKz0gY29weTtcbiAgICAgICAgICBpZiAobGVuKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgICBzdGF0ZS5oZWFkLmNvbW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLm1vZGUgPSBIQ1JDO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIEhDUkM6XG4gICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkge1xuICAgICAgICAgIC8vPT09IE5FRURCSVRTKDE2KTsgKi9cbiAgICAgICAgICB3aGlsZSAoYml0cyA8IDE2KSB7XG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgaWYgKGhvbGQgIT09IChzdGF0ZS5jaGVjayAmIDB4ZmZmZikpIHtcbiAgICAgICAgICAgIHN0cm0ubXNnID0gJ2hlYWRlciBjcmMgbWlzbWF0Y2gnO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgICAgIGhvbGQgPSAwO1xuICAgICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQuaGNyYyA9ICgoc3RhdGUuZmxhZ3MgPj4gOSkgJiAxKTtcbiAgICAgICAgICBzdGF0ZS5oZWFkLmRvbmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9IDA7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRElDVElEOlxuICAgICAgICAvLz09PSBORUVEQklUUygzMik7ICovXG4gICAgICAgIHdoaWxlIChiaXRzIDwgMzIpIHtcbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICB9XG4gICAgICAgIC8vPT09Ly9cbiAgICAgICAgc3RybS5hZGxlciA9IHN0YXRlLmNoZWNrID0genN3YXAzMihob2xkKTtcbiAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLm1vZGUgPSBESUNUO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIERJQ1Q6XG4gICAgICAgIGlmIChzdGF0ZS5oYXZlZGljdCA9PT0gMCkge1xuICAgICAgICAgIC8vLS0tIFJFU1RPUkUoKSAtLS1cbiAgICAgICAgICBzdHJtLm5leHRfb3V0ID0gcHV0O1xuICAgICAgICAgIHN0cm0uYXZhaWxfb3V0ID0gbGVmdDtcbiAgICAgICAgICBzdHJtLm5leHRfaW4gPSBuZXh0O1xuICAgICAgICAgIHN0cm0uYXZhaWxfaW4gPSBoYXZlO1xuICAgICAgICAgIHN0YXRlLmhvbGQgPSBob2xkO1xuICAgICAgICAgIHN0YXRlLmJpdHMgPSBiaXRzO1xuICAgICAgICAgIC8vLS0tXG4gICAgICAgICAgcmV0dXJuIFpfTkVFRF9ESUNUO1xuICAgICAgICB9XG4gICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9IDEvKmFkbGVyMzIoMEwsIFpfTlVMTCwgMCkqLztcbiAgICAgICAgc3RhdGUubW9kZSA9IFRZUEU7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgVFlQRTpcbiAgICAgICAgaWYgKGZsdXNoID09PSBaX0JMT0NLIHx8IGZsdXNoID09PSBaX1RSRUVTKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIFRZUEVETzpcbiAgICAgICAgaWYgKHN0YXRlLmxhc3QpIHtcbiAgICAgICAgICAvLy0tLSBCWVRFQklUUygpIC0tLS8vXG4gICAgICAgICAgaG9sZCA+Pj49IGJpdHMgJiA3O1xuICAgICAgICAgIGJpdHMgLT0gYml0cyAmIDc7XG4gICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBDSEVDSztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLz09PSBORUVEQklUUygzKTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAzKSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLmxhc3QgPSAoaG9sZCAmIDB4MDEpLypCSVRTKDEpKi87XG4gICAgICAgIC8vLS0tIERST1BCSVRTKDEpIC0tLS8vXG4gICAgICAgIGhvbGQgPj4+PSAxO1xuICAgICAgICBiaXRzIC09IDE7XG4gICAgICAgIC8vLS0tLy9cblxuICAgICAgICBzd2l0Y2ggKChob2xkICYgMHgwMykvKkJJVFMoMikqLykge1xuICAgICAgICAgIGNhc2UgMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0b3JlZCBibG9jayAqL1xuICAgICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgc3RvcmVkIGJsb2NrJXNcXG5cIixcbiAgICAgICAgICAgIC8vICAgICAgICBzdGF0ZS5sYXN0ID8gXCIgKGxhc3QpXCIgOiBcIlwiKSk7XG4gICAgICAgICAgICBzdGF0ZS5tb2RlID0gU1RPUkVEO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZml4ZWQgYmxvY2sgKi9cbiAgICAgICAgICAgIGZpeGVkdGFibGVzKHN0YXRlKTtcbiAgICAgICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgIGZpeGVkIGNvZGVzIGJsb2NrJXNcXG5cIixcbiAgICAgICAgICAgIC8vICAgICAgICBzdGF0ZS5sYXN0ID8gXCIgKGxhc3QpXCIgOiBcIlwiKSk7XG4gICAgICAgICAgICBzdGF0ZS5tb2RlID0gTEVOXzsgICAgICAgICAgICAgLyogZGVjb2RlIGNvZGVzICovXG4gICAgICAgICAgICBpZiAoZmx1c2ggPT09IFpfVFJFRVMpIHtcbiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMikgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IDI7XG4gICAgICAgICAgICAgIGJpdHMgLT0gMjtcbiAgICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgICBicmVhayBpbmZfbGVhdmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkeW5hbWljIGJsb2NrICovXG4gICAgICAgICAgICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgICBkeW5hbWljIGNvZGVzIGJsb2NrJXNcXG5cIixcbiAgICAgICAgICAgIC8vICAgICAgICBzdGF0ZS5sYXN0ID8gXCIgKGxhc3QpXCIgOiBcIlwiKSk7XG4gICAgICAgICAgICBzdGF0ZS5tb2RlID0gVEFCTEU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGJsb2NrIHR5cGUnO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgfVxuICAgICAgICAvLy0tLSBEUk9QQklUUygyKSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gMjtcbiAgICAgICAgYml0cyAtPSAyO1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTVE9SRUQ6XG4gICAgICAgIC8vLS0tIEJZVEVCSVRTKCkgLS0tLy8gLyogZ28gdG8gYnl0ZSBib3VuZGFyeSAqL1xuICAgICAgICBob2xkID4+Pj0gYml0cyAmIDc7XG4gICAgICAgIGJpdHMgLT0gYml0cyAmIDc7XG4gICAgICAgIC8vLS0tLy9cbiAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpOyAqL1xuICAgICAgICB3aGlsZSAoYml0cyA8IDMyKSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIGlmICgoaG9sZCAmIDB4ZmZmZikgIT09ICgoaG9sZCA+Pj4gMTYpIF4gMHhmZmZmKSkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMnO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUubGVuZ3RoID0gaG9sZCAmIDB4ZmZmZjtcbiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICBzdG9yZWQgbGVuZ3RoICV1XFxuXCIsXG4gICAgICAgIC8vICAgICAgICBzdGF0ZS5sZW5ndGgpKTtcbiAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLm1vZGUgPSBDT1BZXztcbiAgICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIENPUFlfOlxuICAgICAgICBzdGF0ZS5tb2RlID0gQ09QWTtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBDT1BZOlxuICAgICAgICBjb3B5ID0gc3RhdGUubGVuZ3RoO1xuICAgICAgICBpZiAoY29weSkge1xuICAgICAgICAgIGlmIChjb3B5ID4gaGF2ZSkgeyBjb3B5ID0gaGF2ZTsgfVxuICAgICAgICAgIGlmIChjb3B5ID4gbGVmdCkgeyBjb3B5ID0gbGVmdDsgfVxuICAgICAgICAgIGlmIChjb3B5ID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIC8vLS0tIHptZW1jcHkocHV0LCBuZXh0LCBjb3B5KTsgLS0tXG4gICAgICAgICAgdXRpbHMuYXJyYXlTZXQob3V0cHV0LCBpbnB1dCwgbmV4dCwgY29weSwgcHV0KTtcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgaGF2ZSAtPSBjb3B5O1xuICAgICAgICAgIG5leHQgKz0gY29weTtcbiAgICAgICAgICBsZWZ0IC09IGNvcHk7XG4gICAgICAgICAgcHV0ICs9IGNvcHk7XG4gICAgICAgICAgc3RhdGUubGVuZ3RoIC09IGNvcHk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICBzdG9yZWQgZW5kXFxuXCIpKTtcbiAgICAgICAgc3RhdGUubW9kZSA9IFRZUEU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUQUJMRTpcbiAgICAgICAgLy89PT0gTkVFREJJVFMoMTQpOyAqL1xuICAgICAgICB3aGlsZSAoYml0cyA8IDE0KSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLm5sZW4gPSAoaG9sZCAmIDB4MWYpLypCSVRTKDUpKi8gKyAyNTc7XG4gICAgICAgIC8vLS0tIERST1BCSVRTKDUpIC0tLS8vXG4gICAgICAgIGhvbGQgPj4+PSA1O1xuICAgICAgICBiaXRzIC09IDU7XG4gICAgICAgIC8vLS0tLy9cbiAgICAgICAgc3RhdGUubmRpc3QgPSAoaG9sZCAmIDB4MWYpLypCSVRTKDUpKi8gKyAxO1xuICAgICAgICAvLy0tLSBEUk9QQklUUyg1KSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gNTtcbiAgICAgICAgYml0cyAtPSA1O1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIHN0YXRlLm5jb2RlID0gKGhvbGQgJiAweDBmKS8qQklUUyg0KSovICsgNDtcbiAgICAgICAgLy8tLS0gRFJPUEJJVFMoNCkgLS0tLy9cbiAgICAgICAgaG9sZCA+Pj49IDQ7XG4gICAgICAgIGJpdHMgLT0gNDtcbiAgICAgICAgLy8tLS0vL1xuLy8jaWZuZGVmIFBLWklQX0JVR19XT1JLQVJPVU5EXG4gICAgICAgIGlmIChzdGF0ZS5ubGVuID4gMjg2IHx8IHN0YXRlLm5kaXN0ID4gMzApIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICd0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scyc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuLy8jZW5kaWZcbiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICB0YWJsZSBzaXplcyBva1xcblwiKSk7XG4gICAgICAgIHN0YXRlLmhhdmUgPSAwO1xuICAgICAgICBzdGF0ZS5tb2RlID0gTEVOTEVOUztcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBMRU5MRU5TOlxuICAgICAgICB3aGlsZSAoc3RhdGUuaGF2ZSA8IHN0YXRlLm5jb2RlKSB7XG4gICAgICAgICAgLy89PT0gTkVFREJJVFMoMyk7XG4gICAgICAgICAgd2hpbGUgKGJpdHMgPCAzKSB7XG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgc3RhdGUubGVuc1tvcmRlcltzdGF0ZS5oYXZlKytdXSA9IChob2xkICYgMHgwNyk7Ly9CSVRTKDMpO1xuICAgICAgICAgIC8vLS0tIERST1BCSVRTKDMpIC0tLS8vXG4gICAgICAgICAgaG9sZCA+Pj49IDM7XG4gICAgICAgICAgYml0cyAtPSAzO1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoc3RhdGUuaGF2ZSA8IDE5KSB7XG4gICAgICAgICAgc3RhdGUubGVuc1tvcmRlcltzdGF0ZS5oYXZlKytdXSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2UgaGF2ZSBzZXBhcmF0ZSB0YWJsZXMgJiBubyBwb2ludGVycy4gMiBjb21tZW50ZWQgbGluZXMgYmVsb3cgbm90IG5lZWRlZC5cbiAgICAgICAgLy9zdGF0ZS5uZXh0ID0gc3RhdGUuY29kZXM7XG4gICAgICAgIC8vc3RhdGUubGVuY29kZSA9IHN0YXRlLm5leHQ7XG4gICAgICAgIC8vIFN3aXRjaCB0byB1c2UgZHluYW1pYyB0YWJsZVxuICAgICAgICBzdGF0ZS5sZW5jb2RlID0gc3RhdGUubGVuZHluO1xuICAgICAgICBzdGF0ZS5sZW5iaXRzID0gNztcblxuICAgICAgICBvcHRzID0geyBiaXRzOiBzdGF0ZS5sZW5iaXRzIH07XG4gICAgICAgIHJldCA9IGluZmxhdGVfdGFibGUoQ09ERVMsIHN0YXRlLmxlbnMsIDAsIDE5LCBzdGF0ZS5sZW5jb2RlLCAwLCBzdGF0ZS53b3JrLCBvcHRzKTtcbiAgICAgICAgc3RhdGUubGVuYml0cyA9IG9wdHMuYml0cztcblxuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0JztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgY29kZSBsZW5ndGhzIG9rXFxuXCIpKTtcbiAgICAgICAgc3RhdGUuaGF2ZSA9IDA7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBDT0RFTEVOUztcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBDT0RFTEVOUzpcbiAgICAgICAgd2hpbGUgKHN0YXRlLmhhdmUgPCBzdGF0ZS5ubGVuICsgc3RhdGUubmRpc3QpIHtcbiAgICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBoZXJlID0gc3RhdGUubGVuY29kZVtob2xkICYgKCgxIDw8IHN0YXRlLmxlbmJpdHMpIC0gMSldOy8qQklUUyhzdGF0ZS5sZW5iaXRzKSovXG4gICAgICAgICAgICBoZXJlX2JpdHMgPSBoZXJlID4+PiAyNDtcbiAgICAgICAgICAgIGhlcmVfb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgICAgICAgIGhlcmVfdmFsID0gaGVyZSAmIDB4ZmZmZjtcblxuICAgICAgICAgICAgaWYgKChoZXJlX2JpdHMpIDw9IGJpdHMpIHsgYnJlYWs7IH1cbiAgICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy9cbiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoZXJlX3ZhbCA8IDE2KSB7XG4gICAgICAgICAgICAvLy0tLSBEUk9QQklUUyhoZXJlLmJpdHMpIC0tLS8vXG4gICAgICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzO1xuICAgICAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7XG4gICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgICBzdGF0ZS5sZW5zW3N0YXRlLmhhdmUrK10gPSBoZXJlX3ZhbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoaGVyZV92YWwgPT09IDE2KSB7XG4gICAgICAgICAgICAgIC8vPT09IE5FRURCSVRTKGhlcmUuYml0cyArIDIpO1xuICAgICAgICAgICAgICBuID0gaGVyZV9iaXRzICsgMjtcbiAgICAgICAgICAgICAgd2hpbGUgKGJpdHMgPCBuKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7XG4gICAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICAgICAgaWYgKHN0YXRlLmhhdmUgPT09IDApIHtcbiAgICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0JztcbiAgICAgICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxlbiA9IHN0YXRlLmxlbnNbc3RhdGUuaGF2ZSAtIDFdO1xuICAgICAgICAgICAgICBjb3B5ID0gMyArIChob2xkICYgMHgwMyk7Ly9CSVRTKDIpO1xuICAgICAgICAgICAgICAvLy0tLSBEUk9QQklUUygyKSAtLS0vL1xuICAgICAgICAgICAgICBob2xkID4+Pj0gMjtcbiAgICAgICAgICAgICAgYml0cyAtPSAyO1xuICAgICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChoZXJlX3ZhbCA9PT0gMTcpIHtcbiAgICAgICAgICAgICAgLy89PT0gTkVFREJJVFMoaGVyZS5iaXRzICsgMyk7XG4gICAgICAgICAgICAgIG4gPSBoZXJlX2JpdHMgKyAzO1xuICAgICAgICAgICAgICB3aGlsZSAoYml0cyA8IG4pIHtcbiAgICAgICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoaGVyZS5iaXRzKSAtLS0vL1xuICAgICAgICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzO1xuICAgICAgICAgICAgICBiaXRzIC09IGhlcmVfYml0cztcbiAgICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgICBsZW4gPSAwO1xuICAgICAgICAgICAgICBjb3B5ID0gMyArIChob2xkICYgMHgwNyk7Ly9CSVRTKDMpO1xuICAgICAgICAgICAgICAvLy0tLSBEUk9QQklUUygzKSAtLS0vL1xuICAgICAgICAgICAgICBob2xkID4+Pj0gMztcbiAgICAgICAgICAgICAgYml0cyAtPSAzO1xuICAgICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgLy89PT0gTkVFREJJVFMoaGVyZS5iaXRzICsgNyk7XG4gICAgICAgICAgICAgIG4gPSBoZXJlX2JpdHMgKyA3O1xuICAgICAgICAgICAgICB3aGlsZSAoYml0cyA8IG4pIHtcbiAgICAgICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoaGVyZS5iaXRzKSAtLS0vL1xuICAgICAgICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzO1xuICAgICAgICAgICAgICBiaXRzIC09IGhlcmVfYml0cztcbiAgICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgICBsZW4gPSAwO1xuICAgICAgICAgICAgICBjb3B5ID0gMTEgKyAoaG9sZCAmIDB4N2YpOy8vQklUUyg3KTtcbiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoNykgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IDc7XG4gICAgICAgICAgICAgIGJpdHMgLT0gNztcbiAgICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRlLmhhdmUgKyBjb3B5ID4gc3RhdGUubmxlbiArIHN0YXRlLm5kaXN0KSB7XG4gICAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgYml0IGxlbmd0aCByZXBlYXQnO1xuICAgICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChjb3B5LS0pIHtcbiAgICAgICAgICAgICAgc3RhdGUubGVuc1tzdGF0ZS5oYXZlKytdID0gbGVuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGhhbmRsZSBlcnJvciBicmVha3MgaW4gd2hpbGUgKi9cbiAgICAgICAgaWYgKHN0YXRlLm1vZGUgPT09IEJBRCkgeyBicmVhazsgfVxuXG4gICAgICAgIC8qIGNoZWNrIGZvciBlbmQtb2YtYmxvY2sgY29kZSAoYmV0dGVyIGhhdmUgb25lKSAqL1xuICAgICAgICBpZiAoc3RhdGUubGVuc1syNTZdID09PSAwKSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogYnVpbGQgY29kZSB0YWJsZXMgLS0gbm90ZTogZG8gbm90IGNoYW5nZSB0aGUgbGVuYml0cyBvciBkaXN0Yml0c1xuICAgICAgICAgICB2YWx1ZXMgaGVyZSAoOSBhbmQgNikgd2l0aG91dCByZWFkaW5nIHRoZSBjb21tZW50cyBpbiBpbmZ0cmVlcy5oXG4gICAgICAgICAgIGNvbmNlcm5pbmcgdGhlIEVOT1VHSCBjb25zdGFudHMsIHdoaWNoIGRlcGVuZCBvbiB0aG9zZSB2YWx1ZXMgKi9cbiAgICAgICAgc3RhdGUubGVuYml0cyA9IDk7XG5cbiAgICAgICAgb3B0cyA9IHsgYml0czogc3RhdGUubGVuYml0cyB9O1xuICAgICAgICByZXQgPSBpbmZsYXRlX3RhYmxlKExFTlMsIHN0YXRlLmxlbnMsIDAsIHN0YXRlLm5sZW4sIHN0YXRlLmxlbmNvZGUsIDAsIHN0YXRlLndvcmssIG9wdHMpO1xuICAgICAgICAvLyBXZSBoYXZlIHNlcGFyYXRlIHRhYmxlcyAmIG5vIHBvaW50ZXJzLiAyIGNvbW1lbnRlZCBsaW5lcyBiZWxvdyBub3QgbmVlZGVkLlxuICAgICAgICAvLyBzdGF0ZS5uZXh0X2luZGV4ID0gb3B0cy50YWJsZV9pbmRleDtcbiAgICAgICAgc3RhdGUubGVuYml0cyA9IG9wdHMuYml0cztcbiAgICAgICAgLy8gc3RhdGUubGVuY29kZSA9IHN0YXRlLm5leHQ7XG5cbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldCc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlLmRpc3RiaXRzID0gNjtcbiAgICAgICAgLy9zdGF0ZS5kaXN0Y29kZS5jb3B5KHN0YXRlLmNvZGVzKTtcbiAgICAgICAgLy8gU3dpdGNoIHRvIHVzZSBkeW5hbWljIHRhYmxlXG4gICAgICAgIHN0YXRlLmRpc3Rjb2RlID0gc3RhdGUuZGlzdGR5bjtcbiAgICAgICAgb3B0cyA9IHsgYml0czogc3RhdGUuZGlzdGJpdHMgfTtcbiAgICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShESVNUUywgc3RhdGUubGVucywgc3RhdGUubmxlbiwgc3RhdGUubmRpc3QsIHN0YXRlLmRpc3Rjb2RlLCAwLCBzdGF0ZS53b3JrLCBvcHRzKTtcbiAgICAgICAgLy8gV2UgaGF2ZSBzZXBhcmF0ZSB0YWJsZXMgJiBubyBwb2ludGVycy4gMiBjb21tZW50ZWQgbGluZXMgYmVsb3cgbm90IG5lZWRlZC5cbiAgICAgICAgLy8gc3RhdGUubmV4dF9pbmRleCA9IG9wdHMudGFibGVfaW5kZXg7XG4gICAgICAgIHN0YXRlLmRpc3RiaXRzID0gb3B0cy5iaXRzO1xuICAgICAgICAvLyBzdGF0ZS5kaXN0Y29kZSA9IHN0YXRlLm5leHQ7XG5cbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2VzIHNldCc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvL1RyYWNldigoc3RkZXJyLCAnaW5mbGF0ZTogICAgICAgY29kZXMgb2tcXG4nKSk7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBMRU5fO1xuICAgICAgICBpZiAoZmx1c2ggPT09IFpfVFJFRVMpIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgTEVOXzpcbiAgICAgICAgc3RhdGUubW9kZSA9IExFTjtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBMRU46XG4gICAgICAgIGlmIChoYXZlID49IDYgJiYgbGVmdCA+PSAyNTgpIHtcbiAgICAgICAgICAvLy0tLSBSRVNUT1JFKCkgLS0tXG4gICAgICAgICAgc3RybS5uZXh0X291dCA9IHB1dDtcbiAgICAgICAgICBzdHJtLmF2YWlsX291dCA9IGxlZnQ7XG4gICAgICAgICAgc3RybS5uZXh0X2luID0gbmV4dDtcbiAgICAgICAgICBzdHJtLmF2YWlsX2luID0gaGF2ZTtcbiAgICAgICAgICBzdGF0ZS5ob2xkID0gaG9sZDtcbiAgICAgICAgICBzdGF0ZS5iaXRzID0gYml0cztcbiAgICAgICAgICAvLy0tLVxuICAgICAgICAgIGluZmxhdGVfZmFzdChzdHJtLCBfb3V0KTtcbiAgICAgICAgICAvLy0tLSBMT0FEKCkgLS0tXG4gICAgICAgICAgcHV0ID0gc3RybS5uZXh0X291dDtcbiAgICAgICAgICBvdXRwdXQgPSBzdHJtLm91dHB1dDtcbiAgICAgICAgICBsZWZ0ID0gc3RybS5hdmFpbF9vdXQ7XG4gICAgICAgICAgbmV4dCA9IHN0cm0ubmV4dF9pbjtcbiAgICAgICAgICBpbnB1dCA9IHN0cm0uaW5wdXQ7XG4gICAgICAgICAgaGF2ZSA9IHN0cm0uYXZhaWxfaW47XG4gICAgICAgICAgaG9sZCA9IHN0YXRlLmhvbGQ7XG4gICAgICAgICAgYml0cyA9IHN0YXRlLmJpdHM7XG4gICAgICAgICAgLy8tLS1cblxuICAgICAgICAgIGlmIChzdGF0ZS5tb2RlID09PSBUWVBFKSB7XG4gICAgICAgICAgICBzdGF0ZS5iYWNrID0gLTE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLmJhY2sgPSAwO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgaGVyZSA9IHN0YXRlLmxlbmNvZGVbaG9sZCAmICgoMSA8PCBzdGF0ZS5sZW5iaXRzKSAtIDEpXTsgIC8qQklUUyhzdGF0ZS5sZW5iaXRzKSovXG4gICAgICAgICAgaGVyZV9iaXRzID0gaGVyZSA+Pj4gMjQ7XG4gICAgICAgICAgaGVyZV9vcCA9IChoZXJlID4+PiAxNikgJiAweGZmO1xuICAgICAgICAgIGhlcmVfdmFsID0gaGVyZSAmIDB4ZmZmZjtcblxuICAgICAgICAgIGlmIChoZXJlX2JpdHMgPD0gYml0cykgeyBicmVhazsgfVxuICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy9cbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgfVxuICAgICAgICBpZiAoaGVyZV9vcCAmJiAoaGVyZV9vcCAmIDB4ZjApID09PSAwKSB7XG4gICAgICAgICAgbGFzdF9iaXRzID0gaGVyZV9iaXRzO1xuICAgICAgICAgIGxhc3Rfb3AgPSBoZXJlX29wO1xuICAgICAgICAgIGxhc3RfdmFsID0gaGVyZV92YWw7XG4gICAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgaGVyZSA9IHN0YXRlLmxlbmNvZGVbbGFzdF92YWwgK1xuICAgICAgICAgICAgICAgICAgICAoKGhvbGQgJiAoKDEgPDwgKGxhc3RfYml0cyArIGxhc3Rfb3ApKSAtIDEpKS8qQklUUyhsYXN0LmJpdHMgKyBsYXN0Lm9wKSovID4+IGxhc3RfYml0cyldO1xuICAgICAgICAgICAgaGVyZV9iaXRzID0gaGVyZSA+Pj4gMjQ7XG4gICAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7XG4gICAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgICAgIGlmICgobGFzdF9iaXRzICsgaGVyZV9iaXRzKSA8PSBiaXRzKSB7IGJyZWFrOyB9XG4gICAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vXG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLy0tLSBEUk9QQklUUyhsYXN0LmJpdHMpIC0tLS8vXG4gICAgICAgICAgaG9sZCA+Pj49IGxhc3RfYml0cztcbiAgICAgICAgICBiaXRzIC09IGxhc3RfYml0cztcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgc3RhdGUuYmFjayArPSBsYXN0X2JpdHM7XG4gICAgICAgIH1cbiAgICAgICAgLy8tLS0gRFJPUEJJVFMoaGVyZS5iaXRzKSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzO1xuICAgICAgICBiaXRzIC09IGhlcmVfYml0cztcbiAgICAgICAgLy8tLS0vL1xuICAgICAgICBzdGF0ZS5iYWNrICs9IGhlcmVfYml0cztcbiAgICAgICAgc3RhdGUubGVuZ3RoID0gaGVyZV92YWw7XG4gICAgICAgIGlmIChoZXJlX29wID09PSAwKSB7XG4gICAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIGhlcmUudmFsID49IDB4MjAgJiYgaGVyZS52YWwgPCAweDdmID9cbiAgICAgICAgICAvLyAgICAgICAgXCJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgJyVjJ1xcblwiIDpcbiAgICAgICAgICAvLyAgICAgICAgXCJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgMHglMDJ4XFxuXCIsIGhlcmUudmFsKSk7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IExJVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGVyZV9vcCAmIDMyKSB7XG4gICAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBlbmQgb2YgYmxvY2tcXG5cIikpO1xuICAgICAgICAgIHN0YXRlLmJhY2sgPSAtMTtcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGVyZV9vcCAmIDY0KSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLmV4dHJhID0gaGVyZV9vcCAmIDE1O1xuICAgICAgICBzdGF0ZS5tb2RlID0gTEVORVhUO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIExFTkVYVDpcbiAgICAgICAgaWYgKHN0YXRlLmV4dHJhKSB7XG4gICAgICAgICAgLy89PT0gTkVFREJJVFMoc3RhdGUuZXh0cmEpO1xuICAgICAgICAgIG4gPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgICB3aGlsZSAoYml0cyA8IG4pIHtcbiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICBzdGF0ZS5sZW5ndGggKz0gaG9sZCAmICgoMSA8PCBzdGF0ZS5leHRyYSkgLSAxKS8qQklUUyhzdGF0ZS5leHRyYSkqLztcbiAgICAgICAgICAvLy0tLSBEUk9QQklUUyhzdGF0ZS5leHRyYSkgLS0tLy9cbiAgICAgICAgICBob2xkID4+Pj0gc3RhdGUuZXh0cmE7XG4gICAgICAgICAgYml0cyAtPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgc3RhdGUuYmFjayArPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgfVxuICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICAgIGxlbmd0aCAldVxcblwiLCBzdGF0ZS5sZW5ndGgpKTtcbiAgICAgICAgc3RhdGUud2FzID0gc3RhdGUubGVuZ3RoO1xuICAgICAgICBzdGF0ZS5tb2RlID0gRElTVDtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBESVNUOlxuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgaGVyZSA9IHN0YXRlLmRpc3Rjb2RlW2hvbGQgJiAoKDEgPDwgc3RhdGUuZGlzdGJpdHMpIC0gMSldOy8qQklUUyhzdGF0ZS5kaXN0Yml0cykqL1xuICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0O1xuICAgICAgICAgIGhlcmVfb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgICBpZiAoKGhlcmVfYml0cykgPD0gYml0cykgeyBicmVhazsgfVxuICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy9cbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgfVxuICAgICAgICBpZiAoKGhlcmVfb3AgJiAweGYwKSA9PT0gMCkge1xuICAgICAgICAgIGxhc3RfYml0cyA9IGhlcmVfYml0cztcbiAgICAgICAgICBsYXN0X29wID0gaGVyZV9vcDtcbiAgICAgICAgICBsYXN0X3ZhbCA9IGhlcmVfdmFsO1xuICAgICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGhlcmUgPSBzdGF0ZS5kaXN0Y29kZVtsYXN0X3ZhbCArXG4gICAgICAgICAgICAgICAgICAgICgoaG9sZCAmICgoMSA8PCAobGFzdF9iaXRzICsgbGFzdF9vcCkpIC0gMSkpLypCSVRTKGxhc3QuYml0cyArIGxhc3Qub3ApKi8gPj4gbGFzdF9iaXRzKV07XG4gICAgICAgICAgICBoZXJlX2JpdHMgPSBoZXJlID4+PiAyNDtcbiAgICAgICAgICAgIGhlcmVfb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgICAgICAgIGhlcmVfdmFsID0gaGVyZSAmIDB4ZmZmZjtcblxuICAgICAgICAgICAgaWYgKChsYXN0X2JpdHMgKyBoZXJlX2JpdHMpIDw9IGJpdHMpIHsgYnJlYWs7IH1cbiAgICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy9cbiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vLS0tIERST1BCSVRTKGxhc3QuYml0cykgLS0tLy9cbiAgICAgICAgICBob2xkID4+Pj0gbGFzdF9iaXRzO1xuICAgICAgICAgIGJpdHMgLT0gbGFzdF9iaXRzO1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICBzdGF0ZS5iYWNrICs9IGxhc3RfYml0cztcbiAgICAgICAgfVxuICAgICAgICAvLy0tLSBEUk9QQklUUyhoZXJlLmJpdHMpIC0tLS8vXG4gICAgICAgIGhvbGQgPj4+PSBoZXJlX2JpdHM7XG4gICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzO1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIHN0YXRlLmJhY2sgKz0gaGVyZV9iaXRzO1xuICAgICAgICBpZiAoaGVyZV9vcCAmIDY0KSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBkaXN0YW5jZSBjb2RlJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLm9mZnNldCA9IGhlcmVfdmFsO1xuICAgICAgICBzdGF0ZS5leHRyYSA9IChoZXJlX29wKSAmIDE1O1xuICAgICAgICBzdGF0ZS5tb2RlID0gRElTVEVYVDtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBESVNURVhUOlxuICAgICAgICBpZiAoc3RhdGUuZXh0cmEpIHtcbiAgICAgICAgICAvLz09PSBORUVEQklUUyhzdGF0ZS5leHRyYSk7XG4gICAgICAgICAgbiA9IHN0YXRlLmV4dHJhO1xuICAgICAgICAgIHdoaWxlIChiaXRzIDwgbikge1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIHN0YXRlLm9mZnNldCArPSBob2xkICYgKCgxIDw8IHN0YXRlLmV4dHJhKSAtIDEpLypCSVRTKHN0YXRlLmV4dHJhKSovO1xuICAgICAgICAgIC8vLS0tIERST1BCSVRTKHN0YXRlLmV4dHJhKSAtLS0vL1xuICAgICAgICAgIGhvbGQgPj4+PSBzdGF0ZS5leHRyYTtcbiAgICAgICAgICBiaXRzIC09IHN0YXRlLmV4dHJhO1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICBzdGF0ZS5iYWNrICs9IHN0YXRlLmV4dHJhO1xuICAgICAgICB9XG4vLyNpZmRlZiBJTkZMQVRFX1NUUklDVFxuICAgICAgICBpZiAoc3RhdGUub2Zmc2V0ID4gc3RhdGUuZG1heCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4vLyNlbmRpZlxuICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICAgIGRpc3RhbmNlICV1XFxuXCIsIHN0YXRlLm9mZnNldCkpO1xuICAgICAgICBzdGF0ZS5tb2RlID0gTUFUQ0g7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgTUFUQ0g6XG4gICAgICAgIGlmIChsZWZ0ID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICBjb3B5ID0gX291dCAtIGxlZnQ7XG4gICAgICAgIGlmIChzdGF0ZS5vZmZzZXQgPiBjb3B5KSB7ICAgICAgICAgLyogY29weSBmcm9tIHdpbmRvdyAqL1xuICAgICAgICAgIGNvcHkgPSBzdGF0ZS5vZmZzZXQgLSBjb3B5O1xuICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUud2hhdmUpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5zYW5lKSB7XG4gICAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrJztcbiAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4vLyAoISkgVGhpcyBibG9jayBpcyBkaXNhYmxlZCBpbiB6bGliIGRlZmF1bHRzLFxuLy8gZG9uJ3QgZW5hYmxlIGl0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eVxuLy8jaWZkZWYgSU5GTEFURV9BTExPV19JTlZBTElEX0RJU1RBTkNFX1RPT0ZBUl9BUlJSXG4vLyAgICAgICAgICBUcmFjZSgoc3RkZXJyLCBcImluZmxhdGUuYyB0b28gZmFyXFxuXCIpKTtcbi8vICAgICAgICAgIGNvcHkgLT0gc3RhdGUud2hhdmU7XG4vLyAgICAgICAgICBpZiAoY29weSA+IHN0YXRlLmxlbmd0aCkgeyBjb3B5ID0gc3RhdGUubGVuZ3RoOyB9XG4vLyAgICAgICAgICBpZiAoY29weSA+IGxlZnQpIHsgY29weSA9IGxlZnQ7IH1cbi8vICAgICAgICAgIGxlZnQgLT0gY29weTtcbi8vICAgICAgICAgIHN0YXRlLmxlbmd0aCAtPSBjb3B5O1xuLy8gICAgICAgICAgZG8ge1xuLy8gICAgICAgICAgICBvdXRwdXRbcHV0KytdID0gMDtcbi8vICAgICAgICAgIH0gd2hpbGUgKC0tY29weSk7XG4vLyAgICAgICAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSB7IHN0YXRlLm1vZGUgPSBMRU47IH1cbi8vICAgICAgICAgIGJyZWFrO1xuLy8jZW5kaWZcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNvcHkgPiBzdGF0ZS53bmV4dCkge1xuICAgICAgICAgICAgY29weSAtPSBzdGF0ZS53bmV4dDtcbiAgICAgICAgICAgIGZyb20gPSBzdGF0ZS53c2l6ZSAtIGNvcHk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZnJvbSA9IHN0YXRlLnduZXh0IC0gY29weTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNvcHkgPiBzdGF0ZS5sZW5ndGgpIHsgY29weSA9IHN0YXRlLmxlbmd0aDsgfVxuICAgICAgICAgIGZyb21fc291cmNlID0gc3RhdGUud2luZG93O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvcHkgZnJvbSBvdXRwdXQgKi9cbiAgICAgICAgICBmcm9tX3NvdXJjZSA9IG91dHB1dDtcbiAgICAgICAgICBmcm9tID0gcHV0IC0gc3RhdGUub2Zmc2V0O1xuICAgICAgICAgIGNvcHkgPSBzdGF0ZS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvcHkgPiBsZWZ0KSB7IGNvcHkgPSBsZWZ0OyB9XG4gICAgICAgIGxlZnQgLT0gY29weTtcbiAgICAgICAgc3RhdGUubGVuZ3RoIC09IGNvcHk7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBvdXRwdXRbcHV0KytdID0gZnJvbV9zb3VyY2VbZnJvbSsrXTtcbiAgICAgICAgfSB3aGlsZSAoLS1jb3B5KTtcbiAgICAgICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgeyBzdGF0ZS5tb2RlID0gTEVOOyB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMSVQ6XG4gICAgICAgIGlmIChsZWZ0ID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICBvdXRwdXRbcHV0KytdID0gc3RhdGUubGVuZ3RoO1xuICAgICAgICBsZWZ0LS07XG4gICAgICAgIHN0YXRlLm1vZGUgPSBMRU47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDSEVDSzpcbiAgICAgICAgaWYgKHN0YXRlLndyYXApIHtcbiAgICAgICAgICAvLz09PSBORUVEQklUUygzMik7XG4gICAgICAgICAgd2hpbGUgKGJpdHMgPCAzMikge1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICAvLyBVc2UgJ3wnIGluc3RlYWQgb2YgJysnIHRvIG1ha2Ugc3VyZSB0aGF0IHJlc3VsdCBpcyBzaWduZWRcbiAgICAgICAgICAgIGhvbGQgfD0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgX291dCAtPSBsZWZ0O1xuICAgICAgICAgIHN0cm0udG90YWxfb3V0ICs9IF9vdXQ7XG4gICAgICAgICAgc3RhdGUudG90YWwgKz0gX291dDtcbiAgICAgICAgICBpZiAoX291dCkge1xuICAgICAgICAgICAgc3RybS5hZGxlciA9IHN0YXRlLmNoZWNrID1cbiAgICAgICAgICAgICAgICAvKlVQREFURShzdGF0ZS5jaGVjaywgcHV0IC0gX291dCwgX291dCk7Ki9cbiAgICAgICAgICAgICAgICAoc3RhdGUuZmxhZ3MgPyBjcmMzMihzdGF0ZS5jaGVjaywgb3V0cHV0LCBfb3V0LCBwdXQgLSBfb3V0KSA6IGFkbGVyMzIoc3RhdGUuY2hlY2ssIG91dHB1dCwgX291dCwgcHV0IC0gX291dCkpO1xuXG4gICAgICAgICAgfVxuICAgICAgICAgIF9vdXQgPSBsZWZ0O1xuICAgICAgICAgIC8vIE5COiBjcmMzMiBzdG9yZWQgYXMgc2lnbmVkIDMyLWJpdCBpbnQsIHpzd2FwMzIgcmV0dXJucyBzaWduZWQgdG9vXG4gICAgICAgICAgaWYgKChzdGF0ZS5mbGFncyA/IGhvbGQgOiB6c3dhcDMyKGhvbGQpKSAhPT0gc3RhdGUuY2hlY2spIHtcbiAgICAgICAgICAgIHN0cm0ubXNnID0gJ2luY29ycmVjdCBkYXRhIGNoZWNrJztcbiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgICBob2xkID0gMDtcbiAgICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgIGNoZWNrIG1hdGNoZXMgdHJhaWxlclxcblwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUubW9kZSA9IExFTkdUSDtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBMRU5HVEg6XG4gICAgICAgIGlmIChzdGF0ZS53cmFwICYmIHN0YXRlLmZsYWdzKSB7XG4gICAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpO1xuICAgICAgICAgIHdoaWxlIChiaXRzIDwgMzIpIHtcbiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICBpZiAoaG9sZCAhPT0gKHN0YXRlLnRvdGFsICYgMHhmZmZmZmZmZikpIHtcbiAgICAgICAgICAgIHN0cm0ubXNnID0gJ2luY29ycmVjdCBsZW5ndGggY2hlY2snO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgICAgIGhvbGQgPSAwO1xuICAgICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgbGVuZ3RoIG1hdGNoZXMgdHJhaWxlclxcblwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUubW9kZSA9IERPTkU7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgRE9ORTpcbiAgICAgICAgcmV0ID0gWl9TVFJFQU1fRU5EO1xuICAgICAgICBicmVhayBpbmZfbGVhdmU7XG4gICAgICBjYXNlIEJBRDpcbiAgICAgICAgcmV0ID0gWl9EQVRBX0VSUk9SO1xuICAgICAgICBicmVhayBpbmZfbGVhdmU7XG4gICAgICBjYXNlIE1FTTpcbiAgICAgICAgcmV0dXJuIFpfTUVNX0VSUk9SO1xuICAgICAgY2FzZSBTWU5DOlxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gICAgfVxuICB9XG5cbiAgLy8gaW5mX2xlYXZlIDwtIGhlcmUgaXMgcmVhbCBwbGFjZSBmb3IgXCJnb3RvIGluZl9sZWF2ZVwiLCBlbXVsYXRlZCB2aWEgXCJicmVhayBpbmZfbGVhdmVcIlxuXG4gIC8qXG4gICAgIFJldHVybiBmcm9tIGluZmxhdGUoKSwgdXBkYXRpbmcgdGhlIHRvdGFsIGNvdW50cyBhbmQgdGhlIGNoZWNrIHZhbHVlLlxuICAgICBJZiB0aGVyZSB3YXMgbm8gcHJvZ3Jlc3MgZHVyaW5nIHRoZSBpbmZsYXRlKCkgY2FsbCwgcmV0dXJuIGEgYnVmZmVyXG4gICAgIGVycm9yLiAgQ2FsbCB1cGRhdGV3aW5kb3coKSB0byBjcmVhdGUgYW5kL29yIHVwZGF0ZSB0aGUgd2luZG93IHN0YXRlLlxuICAgICBOb3RlOiBhIG1lbW9yeSBlcnJvciBmcm9tIGluZmxhdGUoKSBpcyBub24tcmVjb3ZlcmFibGUuXG4gICAqL1xuXG4gIC8vLS0tIFJFU1RPUkUoKSAtLS1cbiAgc3RybS5uZXh0X291dCA9IHB1dDtcbiAgc3RybS5hdmFpbF9vdXQgPSBsZWZ0O1xuICBzdHJtLm5leHRfaW4gPSBuZXh0O1xuICBzdHJtLmF2YWlsX2luID0gaGF2ZTtcbiAgc3RhdGUuaG9sZCA9IGhvbGQ7XG4gIHN0YXRlLmJpdHMgPSBiaXRzO1xuICAvLy0tLVxuXG4gIGlmIChzdGF0ZS53c2l6ZSB8fCAoX291dCAhPT0gc3RybS5hdmFpbF9vdXQgJiYgc3RhdGUubW9kZSA8IEJBRCAmJlxuICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZS5tb2RlIDwgQ0hFQ0sgfHwgZmx1c2ggIT09IFpfRklOSVNIKSkpIHtcbiAgICBpZiAodXBkYXRld2luZG93KHN0cm0sIHN0cm0ub3V0cHV0LCBzdHJtLm5leHRfb3V0LCBfb3V0IC0gc3RybS5hdmFpbF9vdXQpKSB7XG4gICAgICBzdGF0ZS5tb2RlID0gTUVNO1xuICAgICAgcmV0dXJuIFpfTUVNX0VSUk9SO1xuICAgIH1cbiAgfVxuICBfaW4gLT0gc3RybS5hdmFpbF9pbjtcbiAgX291dCAtPSBzdHJtLmF2YWlsX291dDtcbiAgc3RybS50b3RhbF9pbiArPSBfaW47XG4gIHN0cm0udG90YWxfb3V0ICs9IF9vdXQ7XG4gIHN0YXRlLnRvdGFsICs9IF9vdXQ7XG4gIGlmIChzdGF0ZS53cmFwICYmIF9vdXQpIHtcbiAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSAvKlVQREFURShzdGF0ZS5jaGVjaywgc3RybS5uZXh0X291dCAtIF9vdXQsIF9vdXQpOyovXG4gICAgICAoc3RhdGUuZmxhZ3MgPyBjcmMzMihzdGF0ZS5jaGVjaywgb3V0cHV0LCBfb3V0LCBzdHJtLm5leHRfb3V0IC0gX291dCkgOiBhZGxlcjMyKHN0YXRlLmNoZWNrLCBvdXRwdXQsIF9vdXQsIHN0cm0ubmV4dF9vdXQgLSBfb3V0KSk7XG4gIH1cbiAgc3RybS5kYXRhX3R5cGUgPSBzdGF0ZS5iaXRzICsgKHN0YXRlLmxhc3QgPyA2NCA6IDApICtcbiAgICAgICAgICAgICAgICAgICAgKHN0YXRlLm1vZGUgPT09IFRZUEUgPyAxMjggOiAwKSArXG4gICAgICAgICAgICAgICAgICAgIChzdGF0ZS5tb2RlID09PSBMRU5fIHx8IHN0YXRlLm1vZGUgPT09IENPUFlfID8gMjU2IDogMCk7XG4gIGlmICgoKF9pbiA9PT0gMCAmJiBfb3V0ID09PSAwKSB8fCBmbHVzaCA9PT0gWl9GSU5JU0gpICYmIHJldCA9PT0gWl9PSykge1xuICAgIHJldCA9IFpfQlVGX0VSUk9SO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGluZmxhdGVFbmQoc3RybSkge1xuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSAvKnx8IHN0cm0tPnpmcmVlID09IChmcmVlX2Z1bmMpMCovKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgdmFyIHN0YXRlID0gc3RybS5zdGF0ZTtcbiAgaWYgKHN0YXRlLndpbmRvdykge1xuICAgIHN0YXRlLndpbmRvdyA9IG51bGw7XG4gIH1cbiAgc3RybS5zdGF0ZSA9IG51bGw7XG4gIHJldHVybiBaX09LO1xufVxuXG5mdW5jdGlvbiBpbmZsYXRlR2V0SGVhZGVyKHN0cm0sIGhlYWQpIHtcbiAgdmFyIHN0YXRlO1xuXG4gIC8qIGNoZWNrIHN0YXRlICovXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuICBpZiAoKHN0YXRlLndyYXAgJiAyKSA9PT0gMCkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cblxuICAvKiBzYXZlIGhlYWRlciBzdHJ1Y3R1cmUgKi9cbiAgc3RhdGUuaGVhZCA9IGhlYWQ7XG4gIGhlYWQuZG9uZSA9IGZhbHNlO1xuICByZXR1cm4gWl9PSztcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZVNldERpY3Rpb25hcnkoc3RybSwgZGljdGlvbmFyeSkge1xuICB2YXIgZGljdExlbmd0aCA9IGRpY3Rpb25hcnkubGVuZ3RoO1xuXG4gIHZhciBzdGF0ZTtcbiAgdmFyIGRpY3RpZDtcbiAgdmFyIHJldDtcblxuICAvKiBjaGVjayBzdGF0ZSAqL1xuICBpZiAoIXN0cm0gLyogPT0gWl9OVUxMICovIHx8ICFzdHJtLnN0YXRlIC8qID09IFpfTlVMTCAqLykgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuXG4gIGlmIChzdGF0ZS53cmFwICE9PSAwICYmIHN0YXRlLm1vZGUgIT09IERJQ1QpIHtcbiAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gIH1cblxuICAvKiBjaGVjayBmb3IgY29ycmVjdCBkaWN0aW9uYXJ5IGlkZW50aWZpZXIgKi9cbiAgaWYgKHN0YXRlLm1vZGUgPT09IERJQ1QpIHtcbiAgICBkaWN0aWQgPSAxOyAvKiBhZGxlcjMyKDAsIG51bGwsIDApKi9cbiAgICAvKiBkaWN0aWQgPSBhZGxlcjMyKGRpY3RpZCwgZGljdGlvbmFyeSwgZGljdExlbmd0aCk7ICovXG4gICAgZGljdGlkID0gYWRsZXIzMihkaWN0aWQsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgsIDApO1xuICAgIGlmIChkaWN0aWQgIT09IHN0YXRlLmNoZWNrKSB7XG4gICAgICByZXR1cm4gWl9EQVRBX0VSUk9SO1xuICAgIH1cbiAgfVxuICAvKiBjb3B5IGRpY3Rpb25hcnkgdG8gd2luZG93IHVzaW5nIHVwZGF0ZXdpbmRvdygpLCB3aGljaCB3aWxsIGFtZW5kIHRoZVxuICAgZXhpc3RpbmcgZGljdGlvbmFyeSBpZiBhcHByb3ByaWF0ZSAqL1xuICByZXQgPSB1cGRhdGV3aW5kb3coc3RybSwgZGljdGlvbmFyeSwgZGljdExlbmd0aCwgZGljdExlbmd0aCk7XG4gIGlmIChyZXQpIHtcbiAgICBzdGF0ZS5tb2RlID0gTUVNO1xuICAgIHJldHVybiBaX01FTV9FUlJPUjtcbiAgfVxuICBzdGF0ZS5oYXZlZGljdCA9IDE7XG4gIC8vIFRyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgZGljdGlvbmFyeSBzZXRcXG5cIikpO1xuICByZXR1cm4gWl9PSztcbn1cblxuZXhwb3J0cy5pbmZsYXRlUmVzZXQgPSBpbmZsYXRlUmVzZXQ7XG5leHBvcnRzLmluZmxhdGVSZXNldDIgPSBpbmZsYXRlUmVzZXQyO1xuZXhwb3J0cy5pbmZsYXRlUmVzZXRLZWVwID0gaW5mbGF0ZVJlc2V0S2VlcDtcbmV4cG9ydHMuaW5mbGF0ZUluaXQgPSBpbmZsYXRlSW5pdDtcbmV4cG9ydHMuaW5mbGF0ZUluaXQyID0gaW5mbGF0ZUluaXQyO1xuZXhwb3J0cy5pbmZsYXRlID0gaW5mbGF0ZTtcbmV4cG9ydHMuaW5mbGF0ZUVuZCA9IGluZmxhdGVFbmQ7XG5leHBvcnRzLmluZmxhdGVHZXRIZWFkZXIgPSBpbmZsYXRlR2V0SGVhZGVyO1xuZXhwb3J0cy5pbmZsYXRlU2V0RGljdGlvbmFyeSA9IGluZmxhdGVTZXREaWN0aW9uYXJ5O1xuZXhwb3J0cy5pbmZsYXRlSW5mbyA9ICdwYWtvIGluZmxhdGUgKGZyb20gTm9kZWNhIHByb2plY3QpJztcblxuLyogTm90IGltcGxlbWVudGVkXG5leHBvcnRzLmluZmxhdGVDb3B5ID0gaW5mbGF0ZUNvcHk7XG5leHBvcnRzLmluZmxhdGVHZXREaWN0aW9uYXJ5ID0gaW5mbGF0ZUdldERpY3Rpb25hcnk7XG5leHBvcnRzLmluZmxhdGVNYXJrID0gaW5mbGF0ZU1hcms7XG5leHBvcnRzLmluZmxhdGVQcmltZSA9IGluZmxhdGVQcmltZTtcbmV4cG9ydHMuaW5mbGF0ZVN5bmMgPSBpbmZsYXRlU3luYztcbmV4cG9ydHMuaW5mbGF0ZVN5bmNQb2ludCA9IGluZmxhdGVTeW5jUG9pbnQ7XG5leHBvcnRzLmluZmxhdGVVbmRlcm1pbmUgPSBpbmZsYXRlVW5kZXJtaW5lO1xuKi9cbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy9jb21tb24nKTtcblxudmFyIE1BWEJJVFMgPSAxNTtcbnZhciBFTk9VR0hfTEVOUyA9IDg1MjtcbnZhciBFTk9VR0hfRElTVFMgPSA1OTI7XG4vL3ZhciBFTk9VR0ggPSAoRU5PVUdIX0xFTlMrRU5PVUdIX0RJU1RTKTtcblxudmFyIENPREVTID0gMDtcbnZhciBMRU5TID0gMTtcbnZhciBESVNUUyA9IDI7XG5cbnZhciBsYmFzZSA9IFsgLyogTGVuZ3RoIGNvZGVzIDI1Ny4uMjg1IGJhc2UgKi9cbiAgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMywgMTUsIDE3LCAxOSwgMjMsIDI3LCAzMSxcbiAgMzUsIDQzLCA1MSwgNTksIDY3LCA4MywgOTksIDExNSwgMTMxLCAxNjMsIDE5NSwgMjI3LCAyNTgsIDAsIDBcbl07XG5cbnZhciBsZXh0ID0gWyAvKiBMZW5ndGggY29kZXMgMjU3Li4yODUgZXh0cmEgKi9cbiAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNywgMTcsIDE3LCAxNywgMTgsIDE4LCAxOCwgMTgsXG4gIDE5LCAxOSwgMTksIDE5LCAyMCwgMjAsIDIwLCAyMCwgMjEsIDIxLCAyMSwgMjEsIDE2LCA3MiwgNzhcbl07XG5cbnZhciBkYmFzZSA9IFsgLyogRGlzdGFuY2UgY29kZXMgMC4uMjkgYmFzZSAqL1xuICAxLCAyLCAzLCA0LCA1LCA3LCA5LCAxMywgMTcsIDI1LCAzMywgNDksIDY1LCA5NywgMTI5LCAxOTMsXG4gIDI1NywgMzg1LCA1MTMsIDc2OSwgMTAyNSwgMTUzNywgMjA0OSwgMzA3MywgNDA5NywgNjE0NSxcbiAgODE5MywgMTIyODksIDE2Mzg1LCAyNDU3NywgMCwgMFxuXTtcblxudmFyIGRleHQgPSBbIC8qIERpc3RhbmNlIGNvZGVzIDAuLjI5IGV4dHJhICovXG4gIDE2LCAxNiwgMTYsIDE2LCAxNywgMTcsIDE4LCAxOCwgMTksIDE5LCAyMCwgMjAsIDIxLCAyMSwgMjIsIDIyLFxuICAyMywgMjMsIDI0LCAyNCwgMjUsIDI1LCAyNiwgMjYsIDI3LCAyNyxcbiAgMjgsIDI4LCAyOSwgMjksIDY0LCA2NFxuXTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmZsYXRlX3RhYmxlKHR5cGUsIGxlbnMsIGxlbnNfaW5kZXgsIGNvZGVzLCB0YWJsZSwgdGFibGVfaW5kZXgsIHdvcmssIG9wdHMpXG57XG4gIHZhciBiaXRzID0gb3B0cy5iaXRzO1xuICAgICAgLy9oZXJlID0gb3B0cy5oZXJlOyAvKiB0YWJsZSBlbnRyeSBmb3IgZHVwbGljYXRpb24gKi9cblxuICB2YXIgbGVuID0gMDsgICAgICAgICAgICAgICAvKiBhIGNvZGUncyBsZW5ndGggaW4gYml0cyAqL1xuICB2YXIgc3ltID0gMDsgICAgICAgICAgICAgICAvKiBpbmRleCBvZiBjb2RlIHN5bWJvbHMgKi9cbiAgdmFyIG1pbiA9IDAsIG1heCA9IDA7ICAgICAgICAgIC8qIG1pbmltdW0gYW5kIG1heGltdW0gY29kZSBsZW5ndGhzICovXG4gIHZhciByb290ID0gMDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBpbmRleCBiaXRzIGZvciByb290IHRhYmxlICovXG4gIHZhciBjdXJyID0gMDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBpbmRleCBiaXRzIGZvciBjdXJyZW50IHRhYmxlICovXG4gIHZhciBkcm9wID0gMDsgICAgICAgICAgICAgIC8qIGNvZGUgYml0cyB0byBkcm9wIGZvciBzdWItdGFibGUgKi9cbiAgdmFyIGxlZnQgPSAwOyAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgcHJlZml4IGNvZGVzIGF2YWlsYWJsZSAqL1xuICB2YXIgdXNlZCA9IDA7ICAgICAgICAgICAgICAvKiBjb2RlIGVudHJpZXMgaW4gdGFibGUgdXNlZCAqL1xuICB2YXIgaHVmZiA9IDA7ICAgICAgICAgICAgICAvKiBIdWZmbWFuIGNvZGUgKi9cbiAgdmFyIGluY3I7ICAgICAgICAgICAgICAvKiBmb3IgaW5jcmVtZW50aW5nIGNvZGUsIGluZGV4ICovXG4gIHZhciBmaWxsOyAgICAgICAgICAgICAgLyogaW5kZXggZm9yIHJlcGxpY2F0aW5nIGVudHJpZXMgKi9cbiAgdmFyIGxvdzsgICAgICAgICAgICAgICAvKiBsb3cgYml0cyBmb3IgY3VycmVudCByb290IGVudHJ5ICovXG4gIHZhciBtYXNrOyAgICAgICAgICAgICAgLyogbWFzayBmb3IgbG93IHJvb3QgYml0cyAqL1xuICB2YXIgbmV4dDsgICAgICAgICAgICAgLyogbmV4dCBhdmFpbGFibGUgc3BhY2UgaW4gdGFibGUgKi9cbiAgdmFyIGJhc2UgPSBudWxsOyAgICAgLyogYmFzZSB2YWx1ZSB0YWJsZSB0byB1c2UgKi9cbiAgdmFyIGJhc2VfaW5kZXggPSAwO1xuLy8gIHZhciBzaG9leHRyYTsgICAgLyogZXh0cmEgYml0cyB0YWJsZSB0byB1c2UgKi9cbiAgdmFyIGVuZDsgICAgICAgICAgICAgICAgICAgIC8qIHVzZSBiYXNlIGFuZCBleHRyYSBmb3Igc3ltYm9sID4gZW5kICovXG4gIHZhciBjb3VudCA9IG5ldyB1dGlscy5CdWYxNihNQVhCSVRTICsgMSk7IC8vW01BWEJJVFMrMV07ICAgIC8qIG51bWJlciBvZiBjb2RlcyBvZiBlYWNoIGxlbmd0aCAqL1xuICB2YXIgb2ZmcyA9IG5ldyB1dGlscy5CdWYxNihNQVhCSVRTICsgMSk7IC8vW01BWEJJVFMrMV07ICAgICAvKiBvZmZzZXRzIGluIHRhYmxlIGZvciBlYWNoIGxlbmd0aCAqL1xuICB2YXIgZXh0cmEgPSBudWxsO1xuICB2YXIgZXh0cmFfaW5kZXggPSAwO1xuXG4gIHZhciBoZXJlX2JpdHMsIGhlcmVfb3AsIGhlcmVfdmFsO1xuXG4gIC8qXG4gICBQcm9jZXNzIGEgc2V0IG9mIGNvZGUgbGVuZ3RocyB0byBjcmVhdGUgYSBjYW5vbmljYWwgSHVmZm1hbiBjb2RlLiAgVGhlXG4gICBjb2RlIGxlbmd0aHMgYXJlIGxlbnNbMC4uY29kZXMtMV0uICBFYWNoIGxlbmd0aCBjb3JyZXNwb25kcyB0byB0aGVcbiAgIHN5bWJvbHMgMC4uY29kZXMtMS4gIFRoZSBIdWZmbWFuIGNvZGUgaXMgZ2VuZXJhdGVkIGJ5IGZpcnN0IHNvcnRpbmcgdGhlXG4gICBzeW1ib2xzIGJ5IGxlbmd0aCBmcm9tIHNob3J0IHRvIGxvbmcsIGFuZCByZXRhaW5pbmcgdGhlIHN5bWJvbCBvcmRlclxuICAgZm9yIGNvZGVzIHdpdGggZXF1YWwgbGVuZ3Rocy4gIFRoZW4gdGhlIGNvZGUgc3RhcnRzIHdpdGggYWxsIHplcm8gYml0c1xuICAgZm9yIHRoZSBmaXJzdCBjb2RlIG9mIHRoZSBzaG9ydGVzdCBsZW5ndGgsIGFuZCB0aGUgY29kZXMgYXJlIGludGVnZXJcbiAgIGluY3JlbWVudHMgZm9yIHRoZSBzYW1lIGxlbmd0aCwgYW5kIHplcm9zIGFyZSBhcHBlbmRlZCBhcyB0aGUgbGVuZ3RoXG4gICBpbmNyZWFzZXMuICBGb3IgdGhlIGRlZmxhdGUgZm9ybWF0LCB0aGVzZSBiaXRzIGFyZSBzdG9yZWQgYmFja3dhcmRzXG4gICBmcm9tIHRoZWlyIG1vcmUgbmF0dXJhbCBpbnRlZ2VyIGluY3JlbWVudCBvcmRlcmluZywgYW5kIHNvIHdoZW4gdGhlXG4gICBkZWNvZGluZyB0YWJsZXMgYXJlIGJ1aWx0IGluIHRoZSBsYXJnZSBsb29wIGJlbG93LCB0aGUgaW50ZWdlciBjb2Rlc1xuICAgYXJlIGluY3JlbWVudGVkIGJhY2t3YXJkcy5cblxuICAgVGhpcyByb3V0aW5lIGFzc3VtZXMsIGJ1dCBkb2VzIG5vdCBjaGVjaywgdGhhdCBhbGwgb2YgdGhlIGVudHJpZXMgaW5cbiAgIGxlbnNbXSBhcmUgaW4gdGhlIHJhbmdlIDAuLk1BWEJJVFMuICBUaGUgY2FsbGVyIG11c3QgYXNzdXJlIHRoaXMuXG4gICAxLi5NQVhCSVRTIGlzIGludGVycHJldGVkIGFzIHRoYXQgY29kZSBsZW5ndGguICB6ZXJvIG1lYW5zIHRoYXQgdGhhdFxuICAgc3ltYm9sIGRvZXMgbm90IG9jY3VyIGluIHRoaXMgY29kZS5cblxuICAgVGhlIGNvZGVzIGFyZSBzb3J0ZWQgYnkgY29tcHV0aW5nIGEgY291bnQgb2YgY29kZXMgZm9yIGVhY2ggbGVuZ3RoLFxuICAgY3JlYXRpbmcgZnJvbSB0aGF0IGEgdGFibGUgb2Ygc3RhcnRpbmcgaW5kaWNlcyBmb3IgZWFjaCBsZW5ndGggaW4gdGhlXG4gICBzb3J0ZWQgdGFibGUsIGFuZCB0aGVuIGVudGVyaW5nIHRoZSBzeW1ib2xzIGluIG9yZGVyIGluIHRoZSBzb3J0ZWRcbiAgIHRhYmxlLiAgVGhlIHNvcnRlZCB0YWJsZSBpcyB3b3JrW10sIHdpdGggdGhhdCBzcGFjZSBiZWluZyBwcm92aWRlZCBieVxuICAgdGhlIGNhbGxlci5cblxuICAgVGhlIGxlbmd0aCBjb3VudHMgYXJlIHVzZWQgZm9yIG90aGVyIHB1cnBvc2VzIGFzIHdlbGwsIGkuZS4gZmluZGluZ1xuICAgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gbGVuZ3RoIGNvZGVzLCBkZXRlcm1pbmluZyBpZiB0aGVyZSBhcmUgYW55XG4gICBjb2RlcyBhdCBhbGwsIGNoZWNraW5nIGZvciBhIHZhbGlkIHNldCBvZiBsZW5ndGhzLCBhbmQgbG9va2luZyBhaGVhZFxuICAgYXQgbGVuZ3RoIGNvdW50cyB0byBkZXRlcm1pbmUgc3ViLXRhYmxlIHNpemVzIHdoZW4gYnVpbGRpbmcgdGhlXG4gICBkZWNvZGluZyB0YWJsZXMuXG4gICAqL1xuXG4gIC8qIGFjY3VtdWxhdGUgbGVuZ3RocyBmb3IgY29kZXMgKGFzc3VtZXMgbGVuc1tdIGFsbCBpbiAwLi5NQVhCSVRTKSAqL1xuICBmb3IgKGxlbiA9IDA7IGxlbiA8PSBNQVhCSVRTOyBsZW4rKykge1xuICAgIGNvdW50W2xlbl0gPSAwO1xuICB9XG4gIGZvciAoc3ltID0gMDsgc3ltIDwgY29kZXM7IHN5bSsrKSB7XG4gICAgY291bnRbbGVuc1tsZW5zX2luZGV4ICsgc3ltXV0rKztcbiAgfVxuXG4gIC8qIGJvdW5kIGNvZGUgbGVuZ3RocywgZm9yY2Ugcm9vdCB0byBiZSB3aXRoaW4gY29kZSBsZW5ndGhzICovXG4gIHJvb3QgPSBiaXRzO1xuICBmb3IgKG1heCA9IE1BWEJJVFM7IG1heCA+PSAxOyBtYXgtLSkge1xuICAgIGlmIChjb3VudFttYXhdICE9PSAwKSB7IGJyZWFrOyB9XG4gIH1cbiAgaWYgKHJvb3QgPiBtYXgpIHtcbiAgICByb290ID0gbWF4O1xuICB9XG4gIGlmIChtYXggPT09IDApIHsgICAgICAgICAgICAgICAgICAgICAvKiBubyBzeW1ib2xzIHRvIGNvZGUgYXQgYWxsICovXG4gICAgLy90YWJsZS5vcFtvcHRzLnRhYmxlX2luZGV4XSA9IDY0OyAgLy9oZXJlLm9wID0gKHZhciBjaGFyKTY0OyAgICAvKiBpbnZhbGlkIGNvZGUgbWFya2VyICovXG4gICAgLy90YWJsZS5iaXRzW29wdHMudGFibGVfaW5kZXhdID0gMTsgICAvL2hlcmUuYml0cyA9ICh2YXIgY2hhcikxO1xuICAgIC8vdGFibGUudmFsW29wdHMudGFibGVfaW5kZXgrK10gPSAwOyAgIC8vaGVyZS52YWwgPSAodmFyIHNob3J0KTA7XG4gICAgdGFibGVbdGFibGVfaW5kZXgrK10gPSAoMSA8PCAyNCkgfCAoNjQgPDwgMTYpIHwgMDtcblxuXG4gICAgLy90YWJsZS5vcFtvcHRzLnRhYmxlX2luZGV4XSA9IDY0O1xuICAgIC8vdGFibGUuYml0c1tvcHRzLnRhYmxlX2luZGV4XSA9IDE7XG4gICAgLy90YWJsZS52YWxbb3B0cy50YWJsZV9pbmRleCsrXSA9IDA7XG4gICAgdGFibGVbdGFibGVfaW5kZXgrK10gPSAoMSA8PCAyNCkgfCAoNjQgPDwgMTYpIHwgMDtcblxuICAgIG9wdHMuYml0cyA9IDE7XG4gICAgcmV0dXJuIDA7ICAgICAvKiBubyBzeW1ib2xzLCBidXQgd2FpdCBmb3IgZGVjb2RpbmcgdG8gcmVwb3J0IGVycm9yICovXG4gIH1cbiAgZm9yIChtaW4gPSAxOyBtaW4gPCBtYXg7IG1pbisrKSB7XG4gICAgaWYgKGNvdW50W21pbl0gIT09IDApIHsgYnJlYWs7IH1cbiAgfVxuICBpZiAocm9vdCA8IG1pbikge1xuICAgIHJvb3QgPSBtaW47XG4gIH1cblxuICAvKiBjaGVjayBmb3IgYW4gb3Zlci1zdWJzY3JpYmVkIG9yIGluY29tcGxldGUgc2V0IG9mIGxlbmd0aHMgKi9cbiAgbGVmdCA9IDE7XG4gIGZvciAobGVuID0gMTsgbGVuIDw9IE1BWEJJVFM7IGxlbisrKSB7XG4gICAgbGVmdCA8PD0gMTtcbiAgICBsZWZ0IC09IGNvdW50W2xlbl07XG4gICAgaWYgKGxlZnQgPCAwKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfSAgICAgICAgLyogb3Zlci1zdWJzY3JpYmVkICovXG4gIH1cbiAgaWYgKGxlZnQgPiAwICYmICh0eXBlID09PSBDT0RFUyB8fCBtYXggIT09IDEpKSB7XG4gICAgcmV0dXJuIC0xOyAgICAgICAgICAgICAgICAgICAgICAvKiBpbmNvbXBsZXRlIHNldCAqL1xuICB9XG5cbiAgLyogZ2VuZXJhdGUgb2Zmc2V0cyBpbnRvIHN5bWJvbCB0YWJsZSBmb3IgZWFjaCBsZW5ndGggZm9yIHNvcnRpbmcgKi9cbiAgb2Zmc1sxXSA9IDA7XG4gIGZvciAobGVuID0gMTsgbGVuIDwgTUFYQklUUzsgbGVuKyspIHtcbiAgICBvZmZzW2xlbiArIDFdID0gb2Zmc1tsZW5dICsgY291bnRbbGVuXTtcbiAgfVxuXG4gIC8qIHNvcnQgc3ltYm9scyBieSBsZW5ndGgsIGJ5IHN5bWJvbCBvcmRlciB3aXRoaW4gZWFjaCBsZW5ndGggKi9cbiAgZm9yIChzeW0gPSAwOyBzeW0gPCBjb2Rlczsgc3ltKyspIHtcbiAgICBpZiAobGVuc1tsZW5zX2luZGV4ICsgc3ltXSAhPT0gMCkge1xuICAgICAgd29ya1tvZmZzW2xlbnNbbGVuc19pbmRleCArIHN5bV1dKytdID0gc3ltO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gICBDcmVhdGUgYW5kIGZpbGwgaW4gZGVjb2RpbmcgdGFibGVzLiAgSW4gdGhpcyBsb29wLCB0aGUgdGFibGUgYmVpbmdcbiAgIGZpbGxlZCBpcyBhdCBuZXh0IGFuZCBoYXMgY3VyciBpbmRleCBiaXRzLiAgVGhlIGNvZGUgYmVpbmcgdXNlZCBpcyBodWZmXG4gICB3aXRoIGxlbmd0aCBsZW4uICBUaGF0IGNvZGUgaXMgY29udmVydGVkIHRvIGFuIGluZGV4IGJ5IGRyb3BwaW5nIGRyb3BcbiAgIGJpdHMgb2ZmIG9mIHRoZSBib3R0b20uICBGb3IgY29kZXMgd2hlcmUgbGVuIGlzIGxlc3MgdGhhbiBkcm9wICsgY3VycixcbiAgIHRob3NlIHRvcCBkcm9wICsgY3VyciAtIGxlbiBiaXRzIGFyZSBpbmNyZW1lbnRlZCB0aHJvdWdoIGFsbCB2YWx1ZXMgdG9cbiAgIGZpbGwgdGhlIHRhYmxlIHdpdGggcmVwbGljYXRlZCBlbnRyaWVzLlxuXG4gICByb290IGlzIHRoZSBudW1iZXIgb2YgaW5kZXggYml0cyBmb3IgdGhlIHJvb3QgdGFibGUuICBXaGVuIGxlbiBleGNlZWRzXG4gICByb290LCBzdWItdGFibGVzIGFyZSBjcmVhdGVkIHBvaW50ZWQgdG8gYnkgdGhlIHJvb3QgZW50cnkgd2l0aCBhbiBpbmRleFxuICAgb2YgdGhlIGxvdyByb290IGJpdHMgb2YgaHVmZi4gIFRoaXMgaXMgc2F2ZWQgaW4gbG93IHRvIGNoZWNrIGZvciB3aGVuIGFcbiAgIG5ldyBzdWItdGFibGUgc2hvdWxkIGJlIHN0YXJ0ZWQuICBkcm9wIGlzIHplcm8gd2hlbiB0aGUgcm9vdCB0YWJsZSBpc1xuICAgYmVpbmcgZmlsbGVkLCBhbmQgZHJvcCBpcyByb290IHdoZW4gc3ViLXRhYmxlcyBhcmUgYmVpbmcgZmlsbGVkLlxuXG4gICBXaGVuIGEgbmV3IHN1Yi10YWJsZSBpcyBuZWVkZWQsIGl0IGlzIG5lY2Vzc2FyeSB0byBsb29rIGFoZWFkIGluIHRoZVxuICAgY29kZSBsZW5ndGhzIHRvIGRldGVybWluZSB3aGF0IHNpemUgc3ViLXRhYmxlIGlzIG5lZWRlZC4gIFRoZSBsZW5ndGhcbiAgIGNvdW50cyBhcmUgdXNlZCBmb3IgdGhpcywgYW5kIHNvIGNvdW50W10gaXMgZGVjcmVtZW50ZWQgYXMgY29kZXMgYXJlXG4gICBlbnRlcmVkIGluIHRoZSB0YWJsZXMuXG5cbiAgIHVzZWQga2VlcHMgdHJhY2sgb2YgaG93IG1hbnkgdGFibGUgZW50cmllcyBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gdGhlXG4gICBwcm92aWRlZCAqdGFibGUgc3BhY2UuICBJdCBpcyBjaGVja2VkIGZvciBMRU5TIGFuZCBESVNUIHRhYmxlcyBhZ2FpbnN0XG4gICB0aGUgY29uc3RhbnRzIEVOT1VHSF9MRU5TIGFuZCBFTk9VR0hfRElTVFMgdG8gZ3VhcmQgYWdhaW5zdCBjaGFuZ2VzIGluXG4gICB0aGUgaW5pdGlhbCByb290IHRhYmxlIHNpemUgY29uc3RhbnRzLiAgU2VlIHRoZSBjb21tZW50cyBpbiBpbmZ0cmVlcy5oXG4gICBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxuICAgc3ltIGluY3JlbWVudHMgdGhyb3VnaCBhbGwgc3ltYm9scywgYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMgd2hlblxuICAgYWxsIGNvZGVzIG9mIGxlbmd0aCBtYXgsIGkuZS4gYWxsIGNvZGVzLCBoYXZlIGJlZW4gcHJvY2Vzc2VkLiAgVGhpc1xuICAgcm91dGluZSBwZXJtaXRzIGluY29tcGxldGUgY29kZXMsIHNvIGFub3RoZXIgbG9vcCBhZnRlciB0aGlzIG9uZSBmaWxsc1xuICAgaW4gdGhlIHJlc3Qgb2YgdGhlIGRlY29kaW5nIHRhYmxlcyB3aXRoIGludmFsaWQgY29kZSBtYXJrZXJzLlxuICAgKi9cblxuICAvKiBzZXQgdXAgZm9yIGNvZGUgdHlwZSAqL1xuICAvLyBwb29yIG1hbiBvcHRpbWl6YXRpb24gLSB1c2UgaWYtZWxzZSBpbnN0ZWFkIG9mIHN3aXRjaCxcbiAgLy8gdG8gYXZvaWQgZGVvcHRzIGluIG9sZCB2OFxuICBpZiAodHlwZSA9PT0gQ09ERVMpIHtcbiAgICBiYXNlID0gZXh0cmEgPSB3b3JrOyAgICAvKiBkdW1teSB2YWx1ZS0tbm90IHVzZWQgKi9cbiAgICBlbmQgPSAxOTtcblxuICB9IGVsc2UgaWYgKHR5cGUgPT09IExFTlMpIHtcbiAgICBiYXNlID0gbGJhc2U7XG4gICAgYmFzZV9pbmRleCAtPSAyNTc7XG4gICAgZXh0cmEgPSBsZXh0O1xuICAgIGV4dHJhX2luZGV4IC09IDI1NztcbiAgICBlbmQgPSAyNTY7XG5cbiAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgIC8qIERJU1RTICovXG4gICAgYmFzZSA9IGRiYXNlO1xuICAgIGV4dHJhID0gZGV4dDtcbiAgICBlbmQgPSAtMTtcbiAgfVxuXG4gIC8qIGluaXRpYWxpemUgb3B0cyBmb3IgbG9vcCAqL1xuICBodWZmID0gMDsgICAgICAgICAgICAgICAgICAgLyogc3RhcnRpbmcgY29kZSAqL1xuICBzeW0gPSAwOyAgICAgICAgICAgICAgICAgICAgLyogc3RhcnRpbmcgY29kZSBzeW1ib2wgKi9cbiAgbGVuID0gbWluOyAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0aW5nIGNvZGUgbGVuZ3RoICovXG4gIG5leHQgPSB0YWJsZV9pbmRleDsgICAgICAgICAgICAgIC8qIGN1cnJlbnQgdGFibGUgdG8gZmlsbCBpbiAqL1xuICBjdXJyID0gcm9vdDsgICAgICAgICAgICAgICAgLyogY3VycmVudCB0YWJsZSBpbmRleCBiaXRzICovXG4gIGRyb3AgPSAwOyAgICAgICAgICAgICAgICAgICAvKiBjdXJyZW50IGJpdHMgdG8gZHJvcCBmcm9tIGNvZGUgZm9yIGluZGV4ICovXG4gIGxvdyA9IC0xOyAgICAgICAgICAgICAgICAgICAvKiB0cmlnZ2VyIG5ldyBzdWItdGFibGUgd2hlbiBsZW4gPiByb290ICovXG4gIHVzZWQgPSAxIDw8IHJvb3Q7ICAgICAgICAgIC8qIHVzZSByb290IHRhYmxlIGVudHJpZXMgKi9cbiAgbWFzayA9IHVzZWQgLSAxOyAgICAgICAgICAgIC8qIG1hc2sgZm9yIGNvbXBhcmluZyBsb3cgKi9cblxuICAvKiBjaGVjayBhdmFpbGFibGUgdGFibGUgc3BhY2UgKi9cbiAgaWYgKCh0eXBlID09PSBMRU5TICYmIHVzZWQgPiBFTk9VR0hfTEVOUykgfHxcbiAgICAodHlwZSA9PT0gRElTVFMgJiYgdXNlZCA+IEVOT1VHSF9ESVNUUykpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8qIHByb2Nlc3MgYWxsIGNvZGVzIGFuZCBtYWtlIHRhYmxlIGVudHJpZXMgKi9cbiAgZm9yICg7Oykge1xuICAgIC8qIGNyZWF0ZSB0YWJsZSBlbnRyeSAqL1xuICAgIGhlcmVfYml0cyA9IGxlbiAtIGRyb3A7XG4gICAgaWYgKHdvcmtbc3ltXSA8IGVuZCkge1xuICAgICAgaGVyZV9vcCA9IDA7XG4gICAgICBoZXJlX3ZhbCA9IHdvcmtbc3ltXTtcbiAgICB9XG4gICAgZWxzZSBpZiAod29ya1tzeW1dID4gZW5kKSB7XG4gICAgICBoZXJlX29wID0gZXh0cmFbZXh0cmFfaW5kZXggKyB3b3JrW3N5bV1dO1xuICAgICAgaGVyZV92YWwgPSBiYXNlW2Jhc2VfaW5kZXggKyB3b3JrW3N5bV1dO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGhlcmVfb3AgPSAzMiArIDY0OyAgICAgICAgIC8qIGVuZCBvZiBibG9jayAqL1xuICAgICAgaGVyZV92YWwgPSAwO1xuICAgIH1cblxuICAgIC8qIHJlcGxpY2F0ZSBmb3IgdGhvc2UgaW5kaWNlcyB3aXRoIGxvdyBsZW4gYml0cyBlcXVhbCB0byBodWZmICovXG4gICAgaW5jciA9IDEgPDwgKGxlbiAtIGRyb3ApO1xuICAgIGZpbGwgPSAxIDw8IGN1cnI7XG4gICAgbWluID0gZmlsbDsgICAgICAgICAgICAgICAgIC8qIHNhdmUgb2Zmc2V0IHRvIG5leHQgdGFibGUgKi9cbiAgICBkbyB7XG4gICAgICBmaWxsIC09IGluY3I7XG4gICAgICB0YWJsZVtuZXh0ICsgKGh1ZmYgPj4gZHJvcCkgKyBmaWxsXSA9IChoZXJlX2JpdHMgPDwgMjQpIHwgKGhlcmVfb3AgPDwgMTYpIHwgaGVyZV92YWwgfDA7XG4gICAgfSB3aGlsZSAoZmlsbCAhPT0gMCk7XG5cbiAgICAvKiBiYWNrd2FyZHMgaW5jcmVtZW50IHRoZSBsZW4tYml0IGNvZGUgaHVmZiAqL1xuICAgIGluY3IgPSAxIDw8IChsZW4gLSAxKTtcbiAgICB3aGlsZSAoaHVmZiAmIGluY3IpIHtcbiAgICAgIGluY3IgPj49IDE7XG4gICAgfVxuICAgIGlmIChpbmNyICE9PSAwKSB7XG4gICAgICBodWZmICY9IGluY3IgLSAxO1xuICAgICAgaHVmZiArPSBpbmNyO1xuICAgIH0gZWxzZSB7XG4gICAgICBodWZmID0gMDtcbiAgICB9XG5cbiAgICAvKiBnbyB0byBuZXh0IHN5bWJvbCwgdXBkYXRlIGNvdW50LCBsZW4gKi9cbiAgICBzeW0rKztcbiAgICBpZiAoLS1jb3VudFtsZW5dID09PSAwKSB7XG4gICAgICBpZiAobGVuID09PSBtYXgpIHsgYnJlYWs7IH1cbiAgICAgIGxlbiA9IGxlbnNbbGVuc19pbmRleCArIHdvcmtbc3ltXV07XG4gICAgfVxuXG4gICAgLyogY3JlYXRlIG5ldyBzdWItdGFibGUgaWYgbmVlZGVkICovXG4gICAgaWYgKGxlbiA+IHJvb3QgJiYgKGh1ZmYgJiBtYXNrKSAhPT0gbG93KSB7XG4gICAgICAvKiBpZiBmaXJzdCB0aW1lLCB0cmFuc2l0aW9uIHRvIHN1Yi10YWJsZXMgKi9cbiAgICAgIGlmIChkcm9wID09PSAwKSB7XG4gICAgICAgIGRyb3AgPSByb290O1xuICAgICAgfVxuXG4gICAgICAvKiBpbmNyZW1lbnQgcGFzdCBsYXN0IHRhYmxlICovXG4gICAgICBuZXh0ICs9IG1pbjsgICAgICAgICAgICAvKiBoZXJlIG1pbiBpcyAxIDw8IGN1cnIgKi9cblxuICAgICAgLyogZGV0ZXJtaW5lIGxlbmd0aCBvZiBuZXh0IHRhYmxlICovXG4gICAgICBjdXJyID0gbGVuIC0gZHJvcDtcbiAgICAgIGxlZnQgPSAxIDw8IGN1cnI7XG4gICAgICB3aGlsZSAoY3VyciArIGRyb3AgPCBtYXgpIHtcbiAgICAgICAgbGVmdCAtPSBjb3VudFtjdXJyICsgZHJvcF07XG4gICAgICAgIGlmIChsZWZ0IDw9IDApIHsgYnJlYWs7IH1cbiAgICAgICAgY3VycisrO1xuICAgICAgICBsZWZ0IDw8PSAxO1xuICAgICAgfVxuXG4gICAgICAvKiBjaGVjayBmb3IgZW5vdWdoIHNwYWNlICovXG4gICAgICB1c2VkICs9IDEgPDwgY3VycjtcbiAgICAgIGlmICgodHlwZSA9PT0gTEVOUyAmJiB1c2VkID4gRU5PVUdIX0xFTlMpIHx8XG4gICAgICAgICh0eXBlID09PSBESVNUUyAmJiB1c2VkID4gRU5PVUdIX0RJU1RTKSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cblxuICAgICAgLyogcG9pbnQgZW50cnkgaW4gcm9vdCB0YWJsZSB0byBzdWItdGFibGUgKi9cbiAgICAgIGxvdyA9IGh1ZmYgJiBtYXNrO1xuICAgICAgLyp0YWJsZS5vcFtsb3ddID0gY3VycjtcbiAgICAgIHRhYmxlLmJpdHNbbG93XSA9IHJvb3Q7XG4gICAgICB0YWJsZS52YWxbbG93XSA9IG5leHQgLSBvcHRzLnRhYmxlX2luZGV4OyovXG4gICAgICB0YWJsZVtsb3ddID0gKHJvb3QgPDwgMjQpIHwgKGN1cnIgPDwgMTYpIHwgKG5leHQgLSB0YWJsZV9pbmRleCkgfDA7XG4gICAgfVxuICB9XG5cbiAgLyogZmlsbCBpbiByZW1haW5pbmcgdGFibGUgZW50cnkgaWYgY29kZSBpcyBpbmNvbXBsZXRlIChndWFyYW50ZWVkIHRvIGhhdmVcbiAgIGF0IG1vc3Qgb25lIHJlbWFpbmluZyBlbnRyeSwgc2luY2UgaWYgdGhlIGNvZGUgaXMgaW5jb21wbGV0ZSwgdGhlXG4gICBtYXhpbXVtIGNvZGUgbGVuZ3RoIHRoYXQgd2FzIGFsbG93ZWQgdG8gZ2V0IHRoaXMgZmFyIGlzIG9uZSBiaXQpICovXG4gIGlmIChodWZmICE9PSAwKSB7XG4gICAgLy90YWJsZS5vcFtuZXh0ICsgaHVmZl0gPSA2NDsgICAgICAgICAgICAvKiBpbnZhbGlkIGNvZGUgbWFya2VyICovXG4gICAgLy90YWJsZS5iaXRzW25leHQgKyBodWZmXSA9IGxlbiAtIGRyb3A7XG4gICAgLy90YWJsZS52YWxbbmV4dCArIGh1ZmZdID0gMDtcbiAgICB0YWJsZVtuZXh0ICsgaHVmZl0gPSAoKGxlbiAtIGRyb3ApIDw8IDI0KSB8ICg2NCA8PCAxNikgfDA7XG4gIH1cblxuICAvKiBzZXQgcmV0dXJuIHBhcmFtZXRlcnMgKi9cbiAgLy9vcHRzLnRhYmxlX2luZGV4ICs9IHVzZWQ7XG4gIG9wdHMuYml0cyA9IHJvb3Q7XG4gIHJldHVybiAwO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgMjogICAgICAnbmVlZCBkaWN0aW9uYXJ5JywgICAgIC8qIFpfTkVFRF9ESUNUICAgICAgIDIgICovXG4gIDE6ICAgICAgJ3N0cmVhbSBlbmQnLCAgICAgICAgICAvKiBaX1NUUkVBTV9FTkQgICAgICAxICAqL1xuICAwOiAgICAgICcnLCAgICAgICAgICAgICAgICAgICAgLyogWl9PSyAgICAgICAgICAgICAgMCAgKi9cbiAgJy0xJzogICAnZmlsZSBlcnJvcicsICAgICAgICAgIC8qIFpfRVJSTk8gICAgICAgICAoLTEpICovXG4gICctMic6ICAgJ3N0cmVhbSBlcnJvcicsICAgICAgICAvKiBaX1NUUkVBTV9FUlJPUiAgKC0yKSAqL1xuICAnLTMnOiAgICdkYXRhIGVycm9yJywgICAgICAgICAgLyogWl9EQVRBX0VSUk9SICAgICgtMykgKi9cbiAgJy00JzogICAnaW5zdWZmaWNpZW50IG1lbW9yeScsIC8qIFpfTUVNX0VSUk9SICAgICAoLTQpICovXG4gICctNSc6ICAgJ2J1ZmZlciBlcnJvcicsICAgICAgICAvKiBaX0JVRl9FUlJPUiAgICAgKC01KSAqL1xuICAnLTYnOiAgICdpbmNvbXBhdGlibGUgdmVyc2lvbicgLyogWl9WRVJTSU9OX0VSUk9SICgtNikgKi9cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxuLyogZXNsaW50LWRpc2FibGUgc3BhY2UtdW5hcnktb3BzICovXG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzL2NvbW1vbicpO1xuXG4vKiBQdWJsaWMgY29uc3RhbnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG4vL3ZhciBaX0ZJTFRFUkVEICAgICAgICAgID0gMTtcbi8vdmFyIFpfSFVGRk1BTl9PTkxZICAgICAgPSAyO1xuLy92YXIgWl9STEUgICAgICAgICAgICAgICA9IDM7XG52YXIgWl9GSVhFRCAgICAgICAgICAgICAgID0gNDtcbi8vdmFyIFpfREVGQVVMVF9TVFJBVEVHWSAgPSAwO1xuXG4vKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovXG52YXIgWl9CSU5BUlkgICAgICAgICAgICAgID0gMDtcbnZhciBaX1RFWFQgICAgICAgICAgICAgICAgPSAxO1xuLy92YXIgWl9BU0NJSSAgICAgICAgICAgICA9IDE7IC8vID0gWl9URVhUXG52YXIgWl9VTktOT1dOICAgICAgICAgICAgID0gMjtcblxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG5mdW5jdGlvbiB6ZXJvKGJ1ZikgeyB2YXIgbGVuID0gYnVmLmxlbmd0aDsgd2hpbGUgKC0tbGVuID49IDApIHsgYnVmW2xlbl0gPSAwOyB9IH1cblxuLy8gRnJvbSB6dXRpbC5oXG5cbnZhciBTVE9SRURfQkxPQ0sgPSAwO1xudmFyIFNUQVRJQ19UUkVFUyA9IDE7XG52YXIgRFlOX1RSRUVTICAgID0gMjtcbi8qIFRoZSB0aHJlZSBraW5kcyBvZiBibG9jayB0eXBlICovXG5cbnZhciBNSU5fTUFUQ0ggICAgPSAzO1xudmFyIE1BWF9NQVRDSCAgICA9IDI1ODtcbi8qIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIG1hdGNoIGxlbmd0aHMgKi9cblxuLy8gRnJvbSBkZWZsYXRlLmhcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW50ZXJuYWwgY29tcHJlc3Npb24gc3RhdGUuXG4gKi9cblxudmFyIExFTkdUSF9DT0RFUyAgPSAyOTtcbi8qIG51bWJlciBvZiBsZW5ndGggY29kZXMsIG5vdCBjb3VudGluZyB0aGUgc3BlY2lhbCBFTkRfQkxPQ0sgY29kZSAqL1xuXG52YXIgTElURVJBTFMgICAgICA9IDI1Njtcbi8qIG51bWJlciBvZiBsaXRlcmFsIGJ5dGVzIDAuLjI1NSAqL1xuXG52YXIgTF9DT0RFUyAgICAgICA9IExJVEVSQUxTICsgMSArIExFTkdUSF9DT0RFUztcbi8qIG51bWJlciBvZiBMaXRlcmFsIG9yIExlbmd0aCBjb2RlcywgaW5jbHVkaW5nIHRoZSBFTkRfQkxPQ0sgY29kZSAqL1xuXG52YXIgRF9DT0RFUyAgICAgICA9IDMwO1xuLyogbnVtYmVyIG9mIGRpc3RhbmNlIGNvZGVzICovXG5cbnZhciBCTF9DT0RFUyAgICAgID0gMTk7XG4vKiBudW1iZXIgb2YgY29kZXMgdXNlZCB0byB0cmFuc2ZlciB0aGUgYml0IGxlbmd0aHMgKi9cblxudmFyIEhFQVBfU0laRSAgICAgPSAyICogTF9DT0RFUyArIDE7XG4vKiBtYXhpbXVtIGhlYXAgc2l6ZSAqL1xuXG52YXIgTUFYX0JJVFMgICAgICA9IDE1O1xuLyogQWxsIGNvZGVzIG11c3Qgbm90IGV4Y2VlZCBNQVhfQklUUyBiaXRzICovXG5cbnZhciBCdWZfc2l6ZSAgICAgID0gMTY7XG4vKiBzaXplIG9mIGJpdCBidWZmZXIgaW4gYmlfYnVmICovXG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb25zdGFudHNcbiAqL1xuXG52YXIgTUFYX0JMX0JJVFMgPSA3O1xuLyogQml0IGxlbmd0aCBjb2RlcyBtdXN0IG5vdCBleGNlZWQgTUFYX0JMX0JJVFMgYml0cyAqL1xuXG52YXIgRU5EX0JMT0NLICAgPSAyNTY7XG4vKiBlbmQgb2YgYmxvY2sgbGl0ZXJhbCBjb2RlICovXG5cbnZhciBSRVBfM182ICAgICA9IDE2O1xuLyogcmVwZWF0IHByZXZpb3VzIGJpdCBsZW5ndGggMy02IHRpbWVzICgyIGJpdHMgb2YgcmVwZWF0IGNvdW50KSAqL1xuXG52YXIgUkVQWl8zXzEwICAgPSAxNztcbi8qIHJlcGVhdCBhIHplcm8gbGVuZ3RoIDMtMTAgdGltZXMgICgzIGJpdHMgb2YgcmVwZWF0IGNvdW50KSAqL1xuXG52YXIgUkVQWl8xMV8xMzggPSAxODtcbi8qIHJlcGVhdCBhIHplcm8gbGVuZ3RoIDExLTEzOCB0aW1lcyAgKDcgYml0cyBvZiByZXBlYXQgY291bnQpICovXG5cbi8qIGVzbGludC1kaXNhYmxlIGNvbW1hLXNwYWNpbmcsYXJyYXktYnJhY2tldC1zcGFjaW5nICovXG52YXIgZXh0cmFfbGJpdHMgPSAgIC8qIGV4dHJhIGJpdHMgZm9yIGVhY2ggbGVuZ3RoIGNvZGUgKi9cbiAgWzAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDIsMiwyLDIsMywzLDMsMyw0LDQsNCw0LDUsNSw1LDUsMF07XG5cbnZhciBleHRyYV9kYml0cyA9ICAgLyogZXh0cmEgYml0cyBmb3IgZWFjaCBkaXN0YW5jZSBjb2RlICovXG4gIFswLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw2LDcsNyw4LDgsOSw5LDEwLDEwLDExLDExLDEyLDEyLDEzLDEzXTtcblxudmFyIGV4dHJhX2JsYml0cyA9ICAvKiBleHRyYSBiaXRzIGZvciBlYWNoIGJpdCBsZW5ndGggY29kZSAqL1xuICBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDMsN107XG5cbnZhciBibF9vcmRlciA9XG4gIFsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XTtcbi8qIGVzbGludC1lbmFibGUgY29tbWEtc3BhY2luZyxhcnJheS1icmFja2V0LXNwYWNpbmcgKi9cblxuLyogVGhlIGxlbmd0aHMgb2YgdGhlIGJpdCBsZW5ndGggY29kZXMgYXJlIHNlbnQgaW4gb3JkZXIgb2YgZGVjcmVhc2luZ1xuICogcHJvYmFiaWxpdHksIHRvIGF2b2lkIHRyYW5zbWl0dGluZyB0aGUgbGVuZ3RocyBmb3IgdW51c2VkIGJpdCBsZW5ndGggY29kZXMuXG4gKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBMb2NhbCBkYXRhLiBUaGVzZSBhcmUgaW5pdGlhbGl6ZWQgb25seSBvbmNlLlxuICovXG5cbi8vIFdlIHByZS1maWxsIGFycmF5cyB3aXRoIDAgdG8gYXZvaWQgdW5pbml0aWFsaXplZCBnYXBzXG5cbnZhciBESVNUX0NPREVfTEVOID0gNTEyOyAvKiBzZWUgZGVmaW5pdGlvbiBvZiBhcnJheSBkaXN0X2NvZGUgYmVsb3cgKi9cblxuLy8gISEhISBVc2UgZmxhdCBhcnJheSBpbnN0ZWFkIG9mIHN0cnVjdHVyZSwgRnJlcSA9IGkqMiwgTGVuID0gaSoyKzFcbnZhciBzdGF0aWNfbHRyZWUgID0gbmV3IEFycmF5KChMX0NPREVTICsgMikgKiAyKTtcbnplcm8oc3RhdGljX2x0cmVlKTtcbi8qIFRoZSBzdGF0aWMgbGl0ZXJhbCB0cmVlLiBTaW5jZSB0aGUgYml0IGxlbmd0aHMgYXJlIGltcG9zZWQsIHRoZXJlIGlzIG5vXG4gKiBuZWVkIGZvciB0aGUgTF9DT0RFUyBleHRyYSBjb2RlcyB1c2VkIGR1cmluZyBoZWFwIGNvbnN0cnVjdGlvbi4gSG93ZXZlclxuICogVGhlIGNvZGVzIDI4NiBhbmQgMjg3IGFyZSBuZWVkZWQgdG8gYnVpbGQgYSBjYW5vbmljYWwgdHJlZSAoc2VlIF90cl9pbml0XG4gKiBiZWxvdykuXG4gKi9cblxudmFyIHN0YXRpY19kdHJlZSAgPSBuZXcgQXJyYXkoRF9DT0RFUyAqIDIpO1xuemVybyhzdGF0aWNfZHRyZWUpO1xuLyogVGhlIHN0YXRpYyBkaXN0YW5jZSB0cmVlLiAoQWN0dWFsbHkgYSB0cml2aWFsIHRyZWUgc2luY2UgYWxsIGNvZGVzIHVzZVxuICogNSBiaXRzLilcbiAqL1xuXG52YXIgX2Rpc3RfY29kZSAgICA9IG5ldyBBcnJheShESVNUX0NPREVfTEVOKTtcbnplcm8oX2Rpc3RfY29kZSk7XG4vKiBEaXN0YW5jZSBjb2Rlcy4gVGhlIGZpcnN0IDI1NiB2YWx1ZXMgY29ycmVzcG9uZCB0byB0aGUgZGlzdGFuY2VzXG4gKiAzIC4uIDI1OCwgdGhlIGxhc3QgMjU2IHZhbHVlcyBjb3JyZXNwb25kIHRvIHRoZSB0b3AgOCBiaXRzIG9mXG4gKiB0aGUgMTUgYml0IGRpc3RhbmNlcy5cbiAqL1xuXG52YXIgX2xlbmd0aF9jb2RlICA9IG5ldyBBcnJheShNQVhfTUFUQ0ggLSBNSU5fTUFUQ0ggKyAxKTtcbnplcm8oX2xlbmd0aF9jb2RlKTtcbi8qIGxlbmd0aCBjb2RlIGZvciBlYWNoIG5vcm1hbGl6ZWQgbWF0Y2ggbGVuZ3RoICgwID09IE1JTl9NQVRDSCkgKi9cblxudmFyIGJhc2VfbGVuZ3RoICAgPSBuZXcgQXJyYXkoTEVOR1RIX0NPREVTKTtcbnplcm8oYmFzZV9sZW5ndGgpO1xuLyogRmlyc3Qgbm9ybWFsaXplZCBsZW5ndGggZm9yIGVhY2ggY29kZSAoMCA9IE1JTl9NQVRDSCkgKi9cblxudmFyIGJhc2VfZGlzdCAgICAgPSBuZXcgQXJyYXkoRF9DT0RFUyk7XG56ZXJvKGJhc2VfZGlzdCk7XG4vKiBGaXJzdCBub3JtYWxpemVkIGRpc3RhbmNlIGZvciBlYWNoIGNvZGUgKDAgPSBkaXN0YW5jZSBvZiAxKSAqL1xuXG5cbmZ1bmN0aW9uIFN0YXRpY1RyZWVEZXNjKHN0YXRpY190cmVlLCBleHRyYV9iaXRzLCBleHRyYV9iYXNlLCBlbGVtcywgbWF4X2xlbmd0aCkge1xuXG4gIHRoaXMuc3RhdGljX3RyZWUgID0gc3RhdGljX3RyZWU7ICAvKiBzdGF0aWMgdHJlZSBvciBOVUxMICovXG4gIHRoaXMuZXh0cmFfYml0cyAgID0gZXh0cmFfYml0czsgICAvKiBleHRyYSBiaXRzIGZvciBlYWNoIGNvZGUgb3IgTlVMTCAqL1xuICB0aGlzLmV4dHJhX2Jhc2UgICA9IGV4dHJhX2Jhc2U7ICAgLyogYmFzZSBpbmRleCBmb3IgZXh0cmFfYml0cyAqL1xuICB0aGlzLmVsZW1zICAgICAgICA9IGVsZW1zOyAgICAgICAgLyogbWF4IG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdHJlZSAqL1xuICB0aGlzLm1heF9sZW5ndGggICA9IG1heF9sZW5ndGg7ICAgLyogbWF4IGJpdCBsZW5ndGggZm9yIHRoZSBjb2RlcyAqL1xuXG4gIC8vIHNob3cgaWYgYHN0YXRpY190cmVlYCBoYXMgZGF0YSBvciBkdW1teSAtIG5lZWRlZCBmb3IgbW9ub21vcnBoaWMgb2JqZWN0c1xuICB0aGlzLmhhc19zdHJlZSAgICA9IHN0YXRpY190cmVlICYmIHN0YXRpY190cmVlLmxlbmd0aDtcbn1cblxuXG52YXIgc3RhdGljX2xfZGVzYztcbnZhciBzdGF0aWNfZF9kZXNjO1xudmFyIHN0YXRpY19ibF9kZXNjO1xuXG5cbmZ1bmN0aW9uIFRyZWVEZXNjKGR5bl90cmVlLCBzdGF0X2Rlc2MpIHtcbiAgdGhpcy5keW5fdHJlZSA9IGR5bl90cmVlOyAgICAgLyogdGhlIGR5bmFtaWMgdHJlZSAqL1xuICB0aGlzLm1heF9jb2RlID0gMDsgICAgICAgICAgICAvKiBsYXJnZXN0IGNvZGUgd2l0aCBub24gemVybyBmcmVxdWVuY3kgKi9cbiAgdGhpcy5zdGF0X2Rlc2MgPSBzdGF0X2Rlc2M7ICAgLyogdGhlIGNvcnJlc3BvbmRpbmcgc3RhdGljIHRyZWUgKi9cbn1cblxuXG5cbmZ1bmN0aW9uIGRfY29kZShkaXN0KSB7XG4gIHJldHVybiBkaXN0IDwgMjU2ID8gX2Rpc3RfY29kZVtkaXN0XSA6IF9kaXN0X2NvZGVbMjU2ICsgKGRpc3QgPj4+IDcpXTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIE91dHB1dCBhIHNob3J0IExTQiBmaXJzdCBvbiB0aGUgc3RyZWFtLlxuICogSU4gYXNzZXJ0aW9uOiB0aGVyZSBpcyBlbm91Z2ggcm9vbSBpbiBwZW5kaW5nQnVmLlxuICovXG5mdW5jdGlvbiBwdXRfc2hvcnQocywgdykge1xuLy8gICAgcHV0X2J5dGUocywgKHVjaCkoKHcpICYgMHhmZikpO1xuLy8gICAgcHV0X2J5dGUocywgKHVjaCkoKHVzaCkodykgPj4gOCkpO1xuICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9ICh3KSAmIDB4ZmY7XG4gIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gKHcgPj4+IDgpICYgMHhmZjtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNlbmQgYSB2YWx1ZSBvbiBhIGdpdmVuIG51bWJlciBvZiBiaXRzLlxuICogSU4gYXNzZXJ0aW9uOiBsZW5ndGggPD0gMTYgYW5kIHZhbHVlIGZpdHMgaW4gbGVuZ3RoIGJpdHMuXG4gKi9cbmZ1bmN0aW9uIHNlbmRfYml0cyhzLCB2YWx1ZSwgbGVuZ3RoKSB7XG4gIGlmIChzLmJpX3ZhbGlkID4gKEJ1Zl9zaXplIC0gbGVuZ3RoKSkge1xuICAgIHMuYmlfYnVmIHw9ICh2YWx1ZSA8PCBzLmJpX3ZhbGlkKSAmIDB4ZmZmZjtcbiAgICBwdXRfc2hvcnQocywgcy5iaV9idWYpO1xuICAgIHMuYmlfYnVmID0gdmFsdWUgPj4gKEJ1Zl9zaXplIC0gcy5iaV92YWxpZCk7XG4gICAgcy5iaV92YWxpZCArPSBsZW5ndGggLSBCdWZfc2l6ZTtcbiAgfSBlbHNlIHtcbiAgICBzLmJpX2J1ZiB8PSAodmFsdWUgPDwgcy5iaV92YWxpZCkgJiAweGZmZmY7XG4gICAgcy5iaV92YWxpZCArPSBsZW5ndGg7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBzZW5kX2NvZGUocywgYywgdHJlZSkge1xuICBzZW5kX2JpdHMocywgdHJlZVtjICogMl0vKi5Db2RlKi8sIHRyZWVbYyAqIDIgKyAxXS8qLkxlbiovKTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFJldmVyc2UgdGhlIGZpcnN0IGxlbiBiaXRzIG9mIGEgY29kZSwgdXNpbmcgc3RyYWlnaHRmb3J3YXJkIGNvZGUgKGEgZmFzdGVyXG4gKiBtZXRob2Qgd291bGQgdXNlIGEgdGFibGUpXG4gKiBJTiBhc3NlcnRpb246IDEgPD0gbGVuIDw9IDE1XG4gKi9cbmZ1bmN0aW9uIGJpX3JldmVyc2UoY29kZSwgbGVuKSB7XG4gIHZhciByZXMgPSAwO1xuICBkbyB7XG4gICAgcmVzIHw9IGNvZGUgJiAxO1xuICAgIGNvZGUgPj4+PSAxO1xuICAgIHJlcyA8PD0gMTtcbiAgfSB3aGlsZSAoLS1sZW4gPiAwKTtcbiAgcmV0dXJuIHJlcyA+Pj4gMTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEZsdXNoIHRoZSBiaXQgYnVmZmVyLCBrZWVwaW5nIGF0IG1vc3QgNyBiaXRzIGluIGl0LlxuICovXG5mdW5jdGlvbiBiaV9mbHVzaChzKSB7XG4gIGlmIChzLmJpX3ZhbGlkID09PSAxNikge1xuICAgIHB1dF9zaG9ydChzLCBzLmJpX2J1Zik7XG4gICAgcy5iaV9idWYgPSAwO1xuICAgIHMuYmlfdmFsaWQgPSAwO1xuXG4gIH0gZWxzZSBpZiAocy5iaV92YWxpZCA+PSA4KSB7XG4gICAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSBzLmJpX2J1ZiAmIDB4ZmY7XG4gICAgcy5iaV9idWYgPj49IDg7XG4gICAgcy5iaV92YWxpZCAtPSA4O1xuICB9XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb21wdXRlIHRoZSBvcHRpbWFsIGJpdCBsZW5ndGhzIGZvciBhIHRyZWUgYW5kIHVwZGF0ZSB0aGUgdG90YWwgYml0IGxlbmd0aFxuICogZm9yIHRoZSBjdXJyZW50IGJsb2NrLlxuICogSU4gYXNzZXJ0aW9uOiB0aGUgZmllbGRzIGZyZXEgYW5kIGRhZCBhcmUgc2V0LCBoZWFwW2hlYXBfbWF4XSBhbmRcbiAqICAgIGFib3ZlIGFyZSB0aGUgdHJlZSBub2RlcyBzb3J0ZWQgYnkgaW5jcmVhc2luZyBmcmVxdWVuY3kuXG4gKiBPVVQgYXNzZXJ0aW9uczogdGhlIGZpZWxkIGxlbiBpcyBzZXQgdG8gdGhlIG9wdGltYWwgYml0IGxlbmd0aCwgdGhlXG4gKiAgICAgYXJyYXkgYmxfY291bnQgY29udGFpbnMgdGhlIGZyZXF1ZW5jaWVzIGZvciBlYWNoIGJpdCBsZW5ndGguXG4gKiAgICAgVGhlIGxlbmd0aCBvcHRfbGVuIGlzIHVwZGF0ZWQ7IHN0YXRpY19sZW4gaXMgYWxzbyB1cGRhdGVkIGlmIHN0cmVlIGlzXG4gKiAgICAgbm90IG51bGwuXG4gKi9cbmZ1bmN0aW9uIGdlbl9iaXRsZW4ocywgZGVzYylcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICB0cmVlX2Rlc2MgKmRlc2M7ICAgIC8qIHRoZSB0cmVlIGRlc2NyaXB0b3IgKi9cbntcbiAgdmFyIHRyZWUgICAgICAgICAgICA9IGRlc2MuZHluX3RyZWU7XG4gIHZhciBtYXhfY29kZSAgICAgICAgPSBkZXNjLm1heF9jb2RlO1xuICB2YXIgc3RyZWUgICAgICAgICAgID0gZGVzYy5zdGF0X2Rlc2Muc3RhdGljX3RyZWU7XG4gIHZhciBoYXNfc3RyZWUgICAgICAgPSBkZXNjLnN0YXRfZGVzYy5oYXNfc3RyZWU7XG4gIHZhciBleHRyYSAgICAgICAgICAgPSBkZXNjLnN0YXRfZGVzYy5leHRyYV9iaXRzO1xuICB2YXIgYmFzZSAgICAgICAgICAgID0gZGVzYy5zdGF0X2Rlc2MuZXh0cmFfYmFzZTtcbiAgdmFyIG1heF9sZW5ndGggICAgICA9IGRlc2Muc3RhdF9kZXNjLm1heF9sZW5ndGg7XG4gIHZhciBoOyAgICAgICAgICAgICAgLyogaGVhcCBpbmRleCAqL1xuICB2YXIgbiwgbTsgICAgICAgICAgIC8qIGl0ZXJhdGUgb3ZlciB0aGUgdHJlZSBlbGVtZW50cyAqL1xuICB2YXIgYml0czsgICAgICAgICAgIC8qIGJpdCBsZW5ndGggKi9cbiAgdmFyIHhiaXRzOyAgICAgICAgICAvKiBleHRyYSBiaXRzICovXG4gIHZhciBmOyAgICAgICAgICAgICAgLyogZnJlcXVlbmN5ICovXG4gIHZhciBvdmVyZmxvdyA9IDA7ICAgLyogbnVtYmVyIG9mIGVsZW1lbnRzIHdpdGggYml0IGxlbmd0aCB0b28gbGFyZ2UgKi9cblxuICBmb3IgKGJpdHMgPSAwOyBiaXRzIDw9IE1BWF9CSVRTOyBiaXRzKyspIHtcbiAgICBzLmJsX2NvdW50W2JpdHNdID0gMDtcbiAgfVxuXG4gIC8qIEluIGEgZmlyc3QgcGFzcywgY29tcHV0ZSB0aGUgb3B0aW1hbCBiaXQgbGVuZ3RocyAod2hpY2ggbWF5XG4gICAqIG92ZXJmbG93IGluIHRoZSBjYXNlIG9mIHRoZSBiaXQgbGVuZ3RoIHRyZWUpLlxuICAgKi9cbiAgdHJlZVtzLmhlYXBbcy5oZWFwX21heF0gKiAyICsgMV0vKi5MZW4qLyA9IDA7IC8qIHJvb3Qgb2YgdGhlIGhlYXAgKi9cblxuICBmb3IgKGggPSBzLmhlYXBfbWF4ICsgMTsgaCA8IEhFQVBfU0laRTsgaCsrKSB7XG4gICAgbiA9IHMuaGVhcFtoXTtcbiAgICBiaXRzID0gdHJlZVt0cmVlW24gKiAyICsgMV0vKi5EYWQqLyAqIDIgKyAxXS8qLkxlbiovICsgMTtcbiAgICBpZiAoYml0cyA+IG1heF9sZW5ndGgpIHtcbiAgICAgIGJpdHMgPSBtYXhfbGVuZ3RoO1xuICAgICAgb3ZlcmZsb3crKztcbiAgICB9XG4gICAgdHJlZVtuICogMiArIDFdLyouTGVuKi8gPSBiaXRzO1xuICAgIC8qIFdlIG92ZXJ3cml0ZSB0cmVlW25dLkRhZCB3aGljaCBpcyBubyBsb25nZXIgbmVlZGVkICovXG5cbiAgICBpZiAobiA+IG1heF9jb2RlKSB7IGNvbnRpbnVlOyB9IC8qIG5vdCBhIGxlYWYgbm9kZSAqL1xuXG4gICAgcy5ibF9jb3VudFtiaXRzXSsrO1xuICAgIHhiaXRzID0gMDtcbiAgICBpZiAobiA+PSBiYXNlKSB7XG4gICAgICB4Yml0cyA9IGV4dHJhW24gLSBiYXNlXTtcbiAgICB9XG4gICAgZiA9IHRyZWVbbiAqIDJdLyouRnJlcSovO1xuICAgIHMub3B0X2xlbiArPSBmICogKGJpdHMgKyB4Yml0cyk7XG4gICAgaWYgKGhhc19zdHJlZSkge1xuICAgICAgcy5zdGF0aWNfbGVuICs9IGYgKiAoc3RyZWVbbiAqIDIgKyAxXS8qLkxlbiovICsgeGJpdHMpO1xuICAgIH1cbiAgfVxuICBpZiAob3ZlcmZsb3cgPT09IDApIHsgcmV0dXJuOyB9XG5cbiAgLy8gVHJhY2UoKHN0ZGVycixcIlxcbmJpdCBsZW5ndGggb3ZlcmZsb3dcXG5cIikpO1xuICAvKiBUaGlzIGhhcHBlbnMgZm9yIGV4YW1wbGUgb24gb2JqMiBhbmQgcGljIG9mIHRoZSBDYWxnYXJ5IGNvcnB1cyAqL1xuXG4gIC8qIEZpbmQgdGhlIGZpcnN0IGJpdCBsZW5ndGggd2hpY2ggY291bGQgaW5jcmVhc2U6ICovXG4gIGRvIHtcbiAgICBiaXRzID0gbWF4X2xlbmd0aCAtIDE7XG4gICAgd2hpbGUgKHMuYmxfY291bnRbYml0c10gPT09IDApIHsgYml0cy0tOyB9XG4gICAgcy5ibF9jb3VudFtiaXRzXS0tOyAgICAgIC8qIG1vdmUgb25lIGxlYWYgZG93biB0aGUgdHJlZSAqL1xuICAgIHMuYmxfY291bnRbYml0cyArIDFdICs9IDI7IC8qIG1vdmUgb25lIG92ZXJmbG93IGl0ZW0gYXMgaXRzIGJyb3RoZXIgKi9cbiAgICBzLmJsX2NvdW50W21heF9sZW5ndGhdLS07XG4gICAgLyogVGhlIGJyb3RoZXIgb2YgdGhlIG92ZXJmbG93IGl0ZW0gYWxzbyBtb3ZlcyBvbmUgc3RlcCB1cCxcbiAgICAgKiBidXQgdGhpcyBkb2VzIG5vdCBhZmZlY3QgYmxfY291bnRbbWF4X2xlbmd0aF1cbiAgICAgKi9cbiAgICBvdmVyZmxvdyAtPSAyO1xuICB9IHdoaWxlIChvdmVyZmxvdyA+IDApO1xuXG4gIC8qIE5vdyByZWNvbXB1dGUgYWxsIGJpdCBsZW5ndGhzLCBzY2FubmluZyBpbiBpbmNyZWFzaW5nIGZyZXF1ZW5jeS5cbiAgICogaCBpcyBzdGlsbCBlcXVhbCB0byBIRUFQX1NJWkUuIChJdCBpcyBzaW1wbGVyIHRvIHJlY29uc3RydWN0IGFsbFxuICAgKiBsZW5ndGhzIGluc3RlYWQgb2YgZml4aW5nIG9ubHkgdGhlIHdyb25nIG9uZXMuIFRoaXMgaWRlYSBpcyB0YWtlblxuICAgKiBmcm9tICdhcicgd3JpdHRlbiBieSBIYXJ1aGlrbyBPa3VtdXJhLilcbiAgICovXG4gIGZvciAoYml0cyA9IG1heF9sZW5ndGg7IGJpdHMgIT09IDA7IGJpdHMtLSkge1xuICAgIG4gPSBzLmJsX2NvdW50W2JpdHNdO1xuICAgIHdoaWxlIChuICE9PSAwKSB7XG4gICAgICBtID0gcy5oZWFwWy0taF07XG4gICAgICBpZiAobSA+IG1heF9jb2RlKSB7IGNvbnRpbnVlOyB9XG4gICAgICBpZiAodHJlZVttICogMiArIDFdLyouTGVuKi8gIT09IGJpdHMpIHtcbiAgICAgICAgLy8gVHJhY2UoKHN0ZGVycixcImNvZGUgJWQgYml0cyAlZC0+JWRcXG5cIiwgbSwgdHJlZVttXS5MZW4sIGJpdHMpKTtcbiAgICAgICAgcy5vcHRfbGVuICs9IChiaXRzIC0gdHJlZVttICogMiArIDFdLyouTGVuKi8pICogdHJlZVttICogMl0vKi5GcmVxKi87XG4gICAgICAgIHRyZWVbbSAqIDIgKyAxXS8qLkxlbiovID0gYml0cztcbiAgICAgIH1cbiAgICAgIG4tLTtcbiAgICB9XG4gIH1cbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEdlbmVyYXRlIHRoZSBjb2RlcyBmb3IgYSBnaXZlbiB0cmVlIGFuZCBiaXQgY291bnRzICh3aGljaCBuZWVkIG5vdCBiZVxuICogb3B0aW1hbCkuXG4gKiBJTiBhc3NlcnRpb246IHRoZSBhcnJheSBibF9jb3VudCBjb250YWlucyB0aGUgYml0IGxlbmd0aCBzdGF0aXN0aWNzIGZvclxuICogdGhlIGdpdmVuIHRyZWUgYW5kIHRoZSBmaWVsZCBsZW4gaXMgc2V0IGZvciBhbGwgdHJlZSBlbGVtZW50cy5cbiAqIE9VVCBhc3NlcnRpb246IHRoZSBmaWVsZCBjb2RlIGlzIHNldCBmb3IgYWxsIHRyZWUgZWxlbWVudHMgb2Ygbm9uXG4gKiAgICAgemVybyBjb2RlIGxlbmd0aC5cbiAqL1xuZnVuY3Rpb24gZ2VuX2NvZGVzKHRyZWUsIG1heF9jb2RlLCBibF9jb3VudClcbi8vICAgIGN0X2RhdGEgKnRyZWU7ICAgICAgICAgICAgIC8qIHRoZSB0cmVlIHRvIGRlY29yYXRlICovXG4vLyAgICBpbnQgbWF4X2NvZGU7ICAgICAgICAgICAgICAvKiBsYXJnZXN0IGNvZGUgd2l0aCBub24gemVybyBmcmVxdWVuY3kgKi9cbi8vICAgIHVzaGYgKmJsX2NvdW50OyAgICAgICAgICAgIC8qIG51bWJlciBvZiBjb2RlcyBhdCBlYWNoIGJpdCBsZW5ndGggKi9cbntcbiAgdmFyIG5leHRfY29kZSA9IG5ldyBBcnJheShNQVhfQklUUyArIDEpOyAvKiBuZXh0IGNvZGUgdmFsdWUgZm9yIGVhY2ggYml0IGxlbmd0aCAqL1xuICB2YXIgY29kZSA9IDA7ICAgICAgICAgICAgICAvKiBydW5uaW5nIGNvZGUgdmFsdWUgKi9cbiAgdmFyIGJpdHM7ICAgICAgICAgICAgICAgICAgLyogYml0IGluZGV4ICovXG4gIHZhciBuOyAgICAgICAgICAgICAgICAgICAgIC8qIGNvZGUgaW5kZXggKi9cblxuICAvKiBUaGUgZGlzdHJpYnV0aW9uIGNvdW50cyBhcmUgZmlyc3QgdXNlZCB0byBnZW5lcmF0ZSB0aGUgY29kZSB2YWx1ZXNcbiAgICogd2l0aG91dCBiaXQgcmV2ZXJzYWwuXG4gICAqL1xuICBmb3IgKGJpdHMgPSAxOyBiaXRzIDw9IE1BWF9CSVRTOyBiaXRzKyspIHtcbiAgICBuZXh0X2NvZGVbYml0c10gPSBjb2RlID0gKGNvZGUgKyBibF9jb3VudFtiaXRzIC0gMV0pIDw8IDE7XG4gIH1cbiAgLyogQ2hlY2sgdGhhdCB0aGUgYml0IGNvdW50cyBpbiBibF9jb3VudCBhcmUgY29uc2lzdGVudC4gVGhlIGxhc3QgY29kZVxuICAgKiBtdXN0IGJlIGFsbCBvbmVzLlxuICAgKi9cbiAgLy9Bc3NlcnQgKGNvZGUgKyBibF9jb3VudFtNQVhfQklUU10tMSA9PSAoMTw8TUFYX0JJVFMpLTEsXG4gIC8vICAgICAgICBcImluY29uc2lzdGVudCBiaXQgY291bnRzXCIpO1xuICAvL1RyYWNldigoc3RkZXJyLFwiXFxuZ2VuX2NvZGVzOiBtYXhfY29kZSAlZCBcIiwgbWF4X2NvZGUpKTtcblxuICBmb3IgKG4gPSAwOyAgbiA8PSBtYXhfY29kZTsgbisrKSB7XG4gICAgdmFyIGxlbiA9IHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovO1xuICAgIGlmIChsZW4gPT09IDApIHsgY29udGludWU7IH1cbiAgICAvKiBOb3cgcmV2ZXJzZSB0aGUgYml0cyAqL1xuICAgIHRyZWVbbiAqIDJdLyouQ29kZSovID0gYmlfcmV2ZXJzZShuZXh0X2NvZGVbbGVuXSsrLCBsZW4pO1xuXG4gICAgLy9UcmFjZWN2KHRyZWUgIT0gc3RhdGljX2x0cmVlLCAoc3RkZXJyLFwiXFxubiAlM2QgJWMgbCAlMmQgYyAlNHggKCV4KSBcIixcbiAgICAvLyAgICAgbiwgKGlzZ3JhcGgobikgPyBuIDogJyAnKSwgbGVuLCB0cmVlW25dLkNvZGUsIG5leHRfY29kZVtsZW5dLTEpKTtcbiAgfVxufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW5pdGlhbGl6ZSB0aGUgdmFyaW91cyAnY29uc3RhbnQnIHRhYmxlcy5cbiAqL1xuZnVuY3Rpb24gdHJfc3RhdGljX2luaXQoKSB7XG4gIHZhciBuOyAgICAgICAgLyogaXRlcmF0ZXMgb3ZlciB0cmVlIGVsZW1lbnRzICovXG4gIHZhciBiaXRzOyAgICAgLyogYml0IGNvdW50ZXIgKi9cbiAgdmFyIGxlbmd0aDsgICAvKiBsZW5ndGggdmFsdWUgKi9cbiAgdmFyIGNvZGU7ICAgICAvKiBjb2RlIHZhbHVlICovXG4gIHZhciBkaXN0OyAgICAgLyogZGlzdGFuY2UgaW5kZXggKi9cbiAgdmFyIGJsX2NvdW50ID0gbmV3IEFycmF5KE1BWF9CSVRTICsgMSk7XG4gIC8qIG51bWJlciBvZiBjb2RlcyBhdCBlYWNoIGJpdCBsZW5ndGggZm9yIGFuIG9wdGltYWwgdHJlZSAqL1xuXG4gIC8vIGRvIGNoZWNrIGluIF90cl9pbml0KClcbiAgLy9pZiAoc3RhdGljX2luaXRfZG9uZSkgcmV0dXJuO1xuXG4gIC8qIEZvciBzb21lIGVtYmVkZGVkIHRhcmdldHMsIGdsb2JhbCB2YXJpYWJsZXMgYXJlIG5vdCBpbml0aWFsaXplZDogKi9cbi8qI2lmZGVmIE5PX0lOSVRfR0xPQkFMX1BPSU5URVJTXG4gIHN0YXRpY19sX2Rlc2Muc3RhdGljX3RyZWUgPSBzdGF0aWNfbHRyZWU7XG4gIHN0YXRpY19sX2Rlc2MuZXh0cmFfYml0cyA9IGV4dHJhX2xiaXRzO1xuICBzdGF0aWNfZF9kZXNjLnN0YXRpY190cmVlID0gc3RhdGljX2R0cmVlO1xuICBzdGF0aWNfZF9kZXNjLmV4dHJhX2JpdHMgPSBleHRyYV9kYml0cztcbiAgc3RhdGljX2JsX2Rlc2MuZXh0cmFfYml0cyA9IGV4dHJhX2JsYml0cztcbiNlbmRpZiovXG5cbiAgLyogSW5pdGlhbGl6ZSB0aGUgbWFwcGluZyBsZW5ndGggKDAuLjI1NSkgLT4gbGVuZ3RoIGNvZGUgKDAuLjI4KSAqL1xuICBsZW5ndGggPSAwO1xuICBmb3IgKGNvZGUgPSAwOyBjb2RlIDwgTEVOR1RIX0NPREVTIC0gMTsgY29kZSsrKSB7XG4gICAgYmFzZV9sZW5ndGhbY29kZV0gPSBsZW5ndGg7XG4gICAgZm9yIChuID0gMDsgbiA8ICgxIDw8IGV4dHJhX2xiaXRzW2NvZGVdKTsgbisrKSB7XG4gICAgICBfbGVuZ3RoX2NvZGVbbGVuZ3RoKytdID0gY29kZTtcbiAgICB9XG4gIH1cbiAgLy9Bc3NlcnQgKGxlbmd0aCA9PSAyNTYsIFwidHJfc3RhdGljX2luaXQ6IGxlbmd0aCAhPSAyNTZcIik7XG4gIC8qIE5vdGUgdGhhdCB0aGUgbGVuZ3RoIDI1NSAobWF0Y2ggbGVuZ3RoIDI1OCkgY2FuIGJlIHJlcHJlc2VudGVkXG4gICAqIGluIHR3byBkaWZmZXJlbnQgd2F5czogY29kZSAyODQgKyA1IGJpdHMgb3IgY29kZSAyODUsIHNvIHdlXG4gICAqIG92ZXJ3cml0ZSBsZW5ndGhfY29kZVsyNTVdIHRvIHVzZSB0aGUgYmVzdCBlbmNvZGluZzpcbiAgICovXG4gIF9sZW5ndGhfY29kZVtsZW5ndGggLSAxXSA9IGNvZGU7XG5cbiAgLyogSW5pdGlhbGl6ZSB0aGUgbWFwcGluZyBkaXN0ICgwLi4zMkspIC0+IGRpc3QgY29kZSAoMC4uMjkpICovXG4gIGRpc3QgPSAwO1xuICBmb3IgKGNvZGUgPSAwOyBjb2RlIDwgMTY7IGNvZGUrKykge1xuICAgIGJhc2VfZGlzdFtjb2RlXSA9IGRpc3Q7XG4gICAgZm9yIChuID0gMDsgbiA8ICgxIDw8IGV4dHJhX2RiaXRzW2NvZGVdKTsgbisrKSB7XG4gICAgICBfZGlzdF9jb2RlW2Rpc3QrK10gPSBjb2RlO1xuICAgIH1cbiAgfVxuICAvL0Fzc2VydCAoZGlzdCA9PSAyNTYsIFwidHJfc3RhdGljX2luaXQ6IGRpc3QgIT0gMjU2XCIpO1xuICBkaXN0ID4+PSA3OyAvKiBmcm9tIG5vdyBvbiwgYWxsIGRpc3RhbmNlcyBhcmUgZGl2aWRlZCBieSAxMjggKi9cbiAgZm9yICg7IGNvZGUgPCBEX0NPREVTOyBjb2RlKyspIHtcbiAgICBiYXNlX2Rpc3RbY29kZV0gPSBkaXN0IDw8IDc7XG4gICAgZm9yIChuID0gMDsgbiA8ICgxIDw8IChleHRyYV9kYml0c1tjb2RlXSAtIDcpKTsgbisrKSB7XG4gICAgICBfZGlzdF9jb2RlWzI1NiArIGRpc3QrK10gPSBjb2RlO1xuICAgIH1cbiAgfVxuICAvL0Fzc2VydCAoZGlzdCA9PSAyNTYsIFwidHJfc3RhdGljX2luaXQ6IDI1NitkaXN0ICE9IDUxMlwiKTtcblxuICAvKiBDb25zdHJ1Y3QgdGhlIGNvZGVzIG9mIHRoZSBzdGF0aWMgbGl0ZXJhbCB0cmVlICovXG4gIGZvciAoYml0cyA9IDA7IGJpdHMgPD0gTUFYX0JJVFM7IGJpdHMrKykge1xuICAgIGJsX2NvdW50W2JpdHNdID0gMDtcbiAgfVxuXG4gIG4gPSAwO1xuICB3aGlsZSAobiA8PSAxNDMpIHtcbiAgICBzdGF0aWNfbHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gODtcbiAgICBuKys7XG4gICAgYmxfY291bnRbOF0rKztcbiAgfVxuICB3aGlsZSAobiA8PSAyNTUpIHtcbiAgICBzdGF0aWNfbHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gOTtcbiAgICBuKys7XG4gICAgYmxfY291bnRbOV0rKztcbiAgfVxuICB3aGlsZSAobiA8PSAyNzkpIHtcbiAgICBzdGF0aWNfbHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gNztcbiAgICBuKys7XG4gICAgYmxfY291bnRbN10rKztcbiAgfVxuICB3aGlsZSAobiA8PSAyODcpIHtcbiAgICBzdGF0aWNfbHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gODtcbiAgICBuKys7XG4gICAgYmxfY291bnRbOF0rKztcbiAgfVxuICAvKiBDb2RlcyAyODYgYW5kIDI4NyBkbyBub3QgZXhpc3QsIGJ1dCB3ZSBtdXN0IGluY2x1ZGUgdGhlbSBpbiB0aGVcbiAgICogdHJlZSBjb25zdHJ1Y3Rpb24gdG8gZ2V0IGEgY2Fub25pY2FsIEh1ZmZtYW4gdHJlZSAobG9uZ2VzdCBjb2RlXG4gICAqIGFsbCBvbmVzKVxuICAgKi9cbiAgZ2VuX2NvZGVzKHN0YXRpY19sdHJlZSwgTF9DT0RFUyArIDEsIGJsX2NvdW50KTtcblxuICAvKiBUaGUgc3RhdGljIGRpc3RhbmNlIHRyZWUgaXMgdHJpdmlhbDogKi9cbiAgZm9yIChuID0gMDsgbiA8IERfQ09ERVM7IG4rKykge1xuICAgIHN0YXRpY19kdHJlZVtuICogMiArIDFdLyouTGVuKi8gPSA1O1xuICAgIHN0YXRpY19kdHJlZVtuICogMl0vKi5Db2RlKi8gPSBiaV9yZXZlcnNlKG4sIDUpO1xuICB9XG5cbiAgLy8gTm93IGRhdGEgcmVhZHkgYW5kIHdlIGNhbiBpbml0IHN0YXRpYyB0cmVlc1xuICBzdGF0aWNfbF9kZXNjID0gbmV3IFN0YXRpY1RyZWVEZXNjKHN0YXRpY19sdHJlZSwgZXh0cmFfbGJpdHMsIExJVEVSQUxTICsgMSwgTF9DT0RFUywgTUFYX0JJVFMpO1xuICBzdGF0aWNfZF9kZXNjID0gbmV3IFN0YXRpY1RyZWVEZXNjKHN0YXRpY19kdHJlZSwgZXh0cmFfZGJpdHMsIDAsICAgICAgICAgIERfQ09ERVMsIE1BWF9CSVRTKTtcbiAgc3RhdGljX2JsX2Rlc2MgPSBuZXcgU3RhdGljVHJlZURlc2MobmV3IEFycmF5KDApLCBleHRyYV9ibGJpdHMsIDAsICAgICAgICAgQkxfQ09ERVMsIE1BWF9CTF9CSVRTKTtcblxuICAvL3N0YXRpY19pbml0X2RvbmUgPSB0cnVlO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW5pdGlhbGl6ZSBhIG5ldyBibG9jay5cbiAqL1xuZnVuY3Rpb24gaW5pdF9ibG9jayhzKSB7XG4gIHZhciBuOyAvKiBpdGVyYXRlcyBvdmVyIHRyZWUgZWxlbWVudHMgKi9cblxuICAvKiBJbml0aWFsaXplIHRoZSB0cmVlcy4gKi9cbiAgZm9yIChuID0gMDsgbiA8IExfQ09ERVM7ICBuKyspIHsgcy5keW5fbHRyZWVbbiAqIDJdLyouRnJlcSovID0gMDsgfVxuICBmb3IgKG4gPSAwOyBuIDwgRF9DT0RFUzsgIG4rKykgeyBzLmR5bl9kdHJlZVtuICogMl0vKi5GcmVxKi8gPSAwOyB9XG4gIGZvciAobiA9IDA7IG4gPCBCTF9DT0RFUzsgbisrKSB7IHMuYmxfdHJlZVtuICogMl0vKi5GcmVxKi8gPSAwOyB9XG5cbiAgcy5keW5fbHRyZWVbRU5EX0JMT0NLICogMl0vKi5GcmVxKi8gPSAxO1xuICBzLm9wdF9sZW4gPSBzLnN0YXRpY19sZW4gPSAwO1xuICBzLmxhc3RfbGl0ID0gcy5tYXRjaGVzID0gMDtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEZsdXNoIHRoZSBiaXQgYnVmZmVyIGFuZCBhbGlnbiB0aGUgb3V0cHV0IG9uIGEgYnl0ZSBib3VuZGFyeVxuICovXG5mdW5jdGlvbiBiaV93aW5kdXAocylcbntcbiAgaWYgKHMuYmlfdmFsaWQgPiA4KSB7XG4gICAgcHV0X3Nob3J0KHMsIHMuYmlfYnVmKTtcbiAgfSBlbHNlIGlmIChzLmJpX3ZhbGlkID4gMCkge1xuICAgIC8vcHV0X2J5dGUocywgKEJ5dGUpcy0+YmlfYnVmKTtcbiAgICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9IHMuYmlfYnVmO1xuICB9XG4gIHMuYmlfYnVmID0gMDtcbiAgcy5iaV92YWxpZCA9IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29weSBhIHN0b3JlZCBibG9jaywgc3RvcmluZyBmaXJzdCB0aGUgbGVuZ3RoIGFuZCBpdHNcbiAqIG9uZSdzIGNvbXBsZW1lbnQgaWYgcmVxdWVzdGVkLlxuICovXG5mdW5jdGlvbiBjb3B5X2Jsb2NrKHMsIGJ1ZiwgbGVuLCBoZWFkZXIpXG4vL0RlZmxhdGVTdGF0ZSAqcztcbi8vY2hhcmYgICAgKmJ1ZjsgICAgLyogdGhlIGlucHV0IGRhdGEgKi9cbi8vdW5zaWduZWQgbGVuOyAgICAgLyogaXRzIGxlbmd0aCAqL1xuLy9pbnQgICAgICBoZWFkZXI7ICAvKiB0cnVlIGlmIGJsb2NrIGhlYWRlciBtdXN0IGJlIHdyaXR0ZW4gKi9cbntcbiAgYmlfd2luZHVwKHMpOyAgICAgICAgLyogYWxpZ24gb24gYnl0ZSBib3VuZGFyeSAqL1xuXG4gIGlmIChoZWFkZXIpIHtcbiAgICBwdXRfc2hvcnQocywgbGVuKTtcbiAgICBwdXRfc2hvcnQocywgfmxlbik7XG4gIH1cbi8vICB3aGlsZSAobGVuLS0pIHtcbi8vICAgIHB1dF9ieXRlKHMsICpidWYrKyk7XG4vLyAgfVxuICB1dGlscy5hcnJheVNldChzLnBlbmRpbmdfYnVmLCBzLndpbmRvdywgYnVmLCBsZW4sIHMucGVuZGluZyk7XG4gIHMucGVuZGluZyArPSBsZW47XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29tcGFyZXMgdG8gc3VidHJlZXMsIHVzaW5nIHRoZSB0cmVlIGRlcHRoIGFzIHRpZSBicmVha2VyIHdoZW5cbiAqIHRoZSBzdWJ0cmVlcyBoYXZlIGVxdWFsIGZyZXF1ZW5jeS4gVGhpcyBtaW5pbWl6ZXMgdGhlIHdvcnN0IGNhc2UgbGVuZ3RoLlxuICovXG5mdW5jdGlvbiBzbWFsbGVyKHRyZWUsIG4sIG0sIGRlcHRoKSB7XG4gIHZhciBfbjIgPSBuICogMjtcbiAgdmFyIF9tMiA9IG0gKiAyO1xuICByZXR1cm4gKHRyZWVbX24yXS8qLkZyZXEqLyA8IHRyZWVbX20yXS8qLkZyZXEqLyB8fFxuICAgICAgICAgKHRyZWVbX24yXS8qLkZyZXEqLyA9PT0gdHJlZVtfbTJdLyouRnJlcSovICYmIGRlcHRoW25dIDw9IGRlcHRoW21dKSk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogUmVzdG9yZSB0aGUgaGVhcCBwcm9wZXJ0eSBieSBtb3ZpbmcgZG93biB0aGUgdHJlZSBzdGFydGluZyBhdCBub2RlIGssXG4gKiBleGNoYW5naW5nIGEgbm9kZSB3aXRoIHRoZSBzbWFsbGVzdCBvZiBpdHMgdHdvIHNvbnMgaWYgbmVjZXNzYXJ5LCBzdG9wcGluZ1xuICogd2hlbiB0aGUgaGVhcCBwcm9wZXJ0eSBpcyByZS1lc3RhYmxpc2hlZCAoZWFjaCBmYXRoZXIgc21hbGxlciB0aGFuIGl0c1xuICogdHdvIHNvbnMpLlxuICovXG5mdW5jdGlvbiBwcWRvd25oZWFwKHMsIHRyZWUsIGspXG4vLyAgICBkZWZsYXRlX3N0YXRlICpzO1xuLy8gICAgY3RfZGF0YSAqdHJlZTsgIC8qIHRoZSB0cmVlIHRvIHJlc3RvcmUgKi9cbi8vICAgIGludCBrOyAgICAgICAgICAgICAgIC8qIG5vZGUgdG8gbW92ZSBkb3duICovXG57XG4gIHZhciB2ID0gcy5oZWFwW2tdO1xuICB2YXIgaiA9IGsgPDwgMTsgIC8qIGxlZnQgc29uIG9mIGsgKi9cbiAgd2hpbGUgKGogPD0gcy5oZWFwX2xlbikge1xuICAgIC8qIFNldCBqIHRvIHRoZSBzbWFsbGVzdCBvZiB0aGUgdHdvIHNvbnM6ICovXG4gICAgaWYgKGogPCBzLmhlYXBfbGVuICYmXG4gICAgICBzbWFsbGVyKHRyZWUsIHMuaGVhcFtqICsgMV0sIHMuaGVhcFtqXSwgcy5kZXB0aCkpIHtcbiAgICAgIGorKztcbiAgICB9XG4gICAgLyogRXhpdCBpZiB2IGlzIHNtYWxsZXIgdGhhbiBib3RoIHNvbnMgKi9cbiAgICBpZiAoc21hbGxlcih0cmVlLCB2LCBzLmhlYXBbal0sIHMuZGVwdGgpKSB7IGJyZWFrOyB9XG5cbiAgICAvKiBFeGNoYW5nZSB2IHdpdGggdGhlIHNtYWxsZXN0IHNvbiAqL1xuICAgIHMuaGVhcFtrXSA9IHMuaGVhcFtqXTtcbiAgICBrID0gajtcblxuICAgIC8qIEFuZCBjb250aW51ZSBkb3duIHRoZSB0cmVlLCBzZXR0aW5nIGogdG8gdGhlIGxlZnQgc29uIG9mIGsgKi9cbiAgICBqIDw8PSAxO1xuICB9XG4gIHMuaGVhcFtrXSA9IHY7XG59XG5cblxuLy8gaW5saW5lZCBtYW51YWxseVxuLy8gdmFyIFNNQUxMRVNUID0gMTtcblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZW5kIHRoZSBibG9jayBkYXRhIGNvbXByZXNzZWQgdXNpbmcgdGhlIGdpdmVuIEh1ZmZtYW4gdHJlZXNcbiAqL1xuZnVuY3Rpb24gY29tcHJlc3NfYmxvY2socywgbHRyZWUsIGR0cmVlKVxuLy8gICAgZGVmbGF0ZV9zdGF0ZSAqcztcbi8vICAgIGNvbnN0IGN0X2RhdGEgKmx0cmVlOyAvKiBsaXRlcmFsIHRyZWUgKi9cbi8vICAgIGNvbnN0IGN0X2RhdGEgKmR0cmVlOyAvKiBkaXN0YW5jZSB0cmVlICovXG57XG4gIHZhciBkaXN0OyAgICAgICAgICAgLyogZGlzdGFuY2Ugb2YgbWF0Y2hlZCBzdHJpbmcgKi9cbiAgdmFyIGxjOyAgICAgICAgICAgICAvKiBtYXRjaCBsZW5ndGggb3IgdW5tYXRjaGVkIGNoYXIgKGlmIGRpc3QgPT0gMCkgKi9cbiAgdmFyIGx4ID0gMDsgICAgICAgICAvKiBydW5uaW5nIGluZGV4IGluIGxfYnVmICovXG4gIHZhciBjb2RlOyAgICAgICAgICAgLyogdGhlIGNvZGUgdG8gc2VuZCAqL1xuICB2YXIgZXh0cmE7ICAgICAgICAgIC8qIG51bWJlciBvZiBleHRyYSBiaXRzIHRvIHNlbmQgKi9cblxuICBpZiAocy5sYXN0X2xpdCAhPT0gMCkge1xuICAgIGRvIHtcbiAgICAgIGRpc3QgPSAocy5wZW5kaW5nX2J1ZltzLmRfYnVmICsgbHggKiAyXSA8PCA4KSB8IChzLnBlbmRpbmdfYnVmW3MuZF9idWYgKyBseCAqIDIgKyAxXSk7XG4gICAgICBsYyA9IHMucGVuZGluZ19idWZbcy5sX2J1ZiArIGx4XTtcbiAgICAgIGx4Kys7XG5cbiAgICAgIGlmIChkaXN0ID09PSAwKSB7XG4gICAgICAgIHNlbmRfY29kZShzLCBsYywgbHRyZWUpOyAvKiBzZW5kIGEgbGl0ZXJhbCBieXRlICovXG4gICAgICAgIC8vVHJhY2Vjdihpc2dyYXBoKGxjKSwgKHN0ZGVycixcIiAnJWMnIFwiLCBsYykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogSGVyZSwgbGMgaXMgdGhlIG1hdGNoIGxlbmd0aCAtIE1JTl9NQVRDSCAqL1xuICAgICAgICBjb2RlID0gX2xlbmd0aF9jb2RlW2xjXTtcbiAgICAgICAgc2VuZF9jb2RlKHMsIGNvZGUgKyBMSVRFUkFMUyArIDEsIGx0cmVlKTsgLyogc2VuZCB0aGUgbGVuZ3RoIGNvZGUgKi9cbiAgICAgICAgZXh0cmEgPSBleHRyYV9sYml0c1tjb2RlXTtcbiAgICAgICAgaWYgKGV4dHJhICE9PSAwKSB7XG4gICAgICAgICAgbGMgLT0gYmFzZV9sZW5ndGhbY29kZV07XG4gICAgICAgICAgc2VuZF9iaXRzKHMsIGxjLCBleHRyYSk7ICAgICAgIC8qIHNlbmQgdGhlIGV4dHJhIGxlbmd0aCBiaXRzICovXG4gICAgICAgIH1cbiAgICAgICAgZGlzdC0tOyAvKiBkaXN0IGlzIG5vdyB0aGUgbWF0Y2ggZGlzdGFuY2UgLSAxICovXG4gICAgICAgIGNvZGUgPSBkX2NvZGUoZGlzdCk7XG4gICAgICAgIC8vQXNzZXJ0IChjb2RlIDwgRF9DT0RFUywgXCJiYWQgZF9jb2RlXCIpO1xuXG4gICAgICAgIHNlbmRfY29kZShzLCBjb2RlLCBkdHJlZSk7ICAgICAgIC8qIHNlbmQgdGhlIGRpc3RhbmNlIGNvZGUgKi9cbiAgICAgICAgZXh0cmEgPSBleHRyYV9kYml0c1tjb2RlXTtcbiAgICAgICAgaWYgKGV4dHJhICE9PSAwKSB7XG4gICAgICAgICAgZGlzdCAtPSBiYXNlX2Rpc3RbY29kZV07XG4gICAgICAgICAgc2VuZF9iaXRzKHMsIGRpc3QsIGV4dHJhKTsgICAvKiBzZW5kIHRoZSBleHRyYSBkaXN0YW5jZSBiaXRzICovXG4gICAgICAgIH1cbiAgICAgIH0gLyogbGl0ZXJhbCBvciBtYXRjaCBwYWlyID8gKi9cblxuICAgICAgLyogQ2hlY2sgdGhhdCB0aGUgb3ZlcmxheSBiZXR3ZWVuIHBlbmRpbmdfYnVmIGFuZCBkX2J1ZitsX2J1ZiBpcyBvazogKi9cbiAgICAgIC8vQXNzZXJ0KCh1SW50KShzLT5wZW5kaW5nKSA8IHMtPmxpdF9idWZzaXplICsgMipseCxcbiAgICAgIC8vICAgICAgIFwicGVuZGluZ0J1ZiBvdmVyZmxvd1wiKTtcblxuICAgIH0gd2hpbGUgKGx4IDwgcy5sYXN0X2xpdCk7XG4gIH1cblxuICBzZW5kX2NvZGUocywgRU5EX0JMT0NLLCBsdHJlZSk7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb25zdHJ1Y3Qgb25lIEh1ZmZtYW4gdHJlZSBhbmQgYXNzaWducyB0aGUgY29kZSBiaXQgc3RyaW5ncyBhbmQgbGVuZ3Rocy5cbiAqIFVwZGF0ZSB0aGUgdG90YWwgYml0IGxlbmd0aCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suXG4gKiBJTiBhc3NlcnRpb246IHRoZSBmaWVsZCBmcmVxIGlzIHNldCBmb3IgYWxsIHRyZWUgZWxlbWVudHMuXG4gKiBPVVQgYXNzZXJ0aW9uczogdGhlIGZpZWxkcyBsZW4gYW5kIGNvZGUgYXJlIHNldCB0byB0aGUgb3B0aW1hbCBiaXQgbGVuZ3RoXG4gKiAgICAgYW5kIGNvcnJlc3BvbmRpbmcgY29kZS4gVGhlIGxlbmd0aCBvcHRfbGVuIGlzIHVwZGF0ZWQ7IHN0YXRpY19sZW4gaXNcbiAqICAgICBhbHNvIHVwZGF0ZWQgaWYgc3RyZWUgaXMgbm90IG51bGwuIFRoZSBmaWVsZCBtYXhfY29kZSBpcyBzZXQuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkX3RyZWUocywgZGVzYylcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICB0cmVlX2Rlc2MgKmRlc2M7IC8qIHRoZSB0cmVlIGRlc2NyaXB0b3IgKi9cbntcbiAgdmFyIHRyZWUgICAgID0gZGVzYy5keW5fdHJlZTtcbiAgdmFyIHN0cmVlICAgID0gZGVzYy5zdGF0X2Rlc2Muc3RhdGljX3RyZWU7XG4gIHZhciBoYXNfc3RyZWUgPSBkZXNjLnN0YXRfZGVzYy5oYXNfc3RyZWU7XG4gIHZhciBlbGVtcyAgICA9IGRlc2Muc3RhdF9kZXNjLmVsZW1zO1xuICB2YXIgbiwgbTsgICAgICAgICAgLyogaXRlcmF0ZSBvdmVyIGhlYXAgZWxlbWVudHMgKi9cbiAgdmFyIG1heF9jb2RlID0gLTE7IC8qIGxhcmdlc3QgY29kZSB3aXRoIG5vbiB6ZXJvIGZyZXF1ZW5jeSAqL1xuICB2YXIgbm9kZTsgICAgICAgICAgLyogbmV3IG5vZGUgYmVpbmcgY3JlYXRlZCAqL1xuXG4gIC8qIENvbnN0cnVjdCB0aGUgaW5pdGlhbCBoZWFwLCB3aXRoIGxlYXN0IGZyZXF1ZW50IGVsZW1lbnQgaW5cbiAgICogaGVhcFtTTUFMTEVTVF0uIFRoZSBzb25zIG9mIGhlYXBbbl0gYXJlIGhlYXBbMipuXSBhbmQgaGVhcFsyKm4rMV0uXG4gICAqIGhlYXBbMF0gaXMgbm90IHVzZWQuXG4gICAqL1xuICBzLmhlYXBfbGVuID0gMDtcbiAgcy5oZWFwX21heCA9IEhFQVBfU0laRTtcblxuICBmb3IgKG4gPSAwOyBuIDwgZWxlbXM7IG4rKykge1xuICAgIGlmICh0cmVlW24gKiAyXS8qLkZyZXEqLyAhPT0gMCkge1xuICAgICAgcy5oZWFwWysrcy5oZWFwX2xlbl0gPSBtYXhfY29kZSA9IG47XG4gICAgICBzLmRlcHRoW25dID0gMDtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDA7XG4gICAgfVxuICB9XG5cbiAgLyogVGhlIHBremlwIGZvcm1hdCByZXF1aXJlcyB0aGF0IGF0IGxlYXN0IG9uZSBkaXN0YW5jZSBjb2RlIGV4aXN0cyxcbiAgICogYW5kIHRoYXQgYXQgbGVhc3Qgb25lIGJpdCBzaG91bGQgYmUgc2VudCBldmVuIGlmIHRoZXJlIGlzIG9ubHkgb25lXG4gICAqIHBvc3NpYmxlIGNvZGUuIFNvIHRvIGF2b2lkIHNwZWNpYWwgY2hlY2tzIGxhdGVyIG9uIHdlIGZvcmNlIGF0IGxlYXN0XG4gICAqIHR3byBjb2RlcyBvZiBub24gemVybyBmcmVxdWVuY3kuXG4gICAqL1xuICB3aGlsZSAocy5oZWFwX2xlbiA8IDIpIHtcbiAgICBub2RlID0gcy5oZWFwWysrcy5oZWFwX2xlbl0gPSAobWF4X2NvZGUgPCAyID8gKyttYXhfY29kZSA6IDApO1xuICAgIHRyZWVbbm9kZSAqIDJdLyouRnJlcSovID0gMTtcbiAgICBzLmRlcHRoW25vZGVdID0gMDtcbiAgICBzLm9wdF9sZW4tLTtcblxuICAgIGlmIChoYXNfc3RyZWUpIHtcbiAgICAgIHMuc3RhdGljX2xlbiAtPSBzdHJlZVtub2RlICogMiArIDFdLyouTGVuKi87XG4gICAgfVxuICAgIC8qIG5vZGUgaXMgMCBvciAxIHNvIGl0IGRvZXMgbm90IGhhdmUgZXh0cmEgYml0cyAqL1xuICB9XG4gIGRlc2MubWF4X2NvZGUgPSBtYXhfY29kZTtcblxuICAvKiBUaGUgZWxlbWVudHMgaGVhcFtoZWFwX2xlbi8yKzEgLi4gaGVhcF9sZW5dIGFyZSBsZWF2ZXMgb2YgdGhlIHRyZWUsXG4gICAqIGVzdGFibGlzaCBzdWItaGVhcHMgb2YgaW5jcmVhc2luZyBsZW5ndGhzOlxuICAgKi9cbiAgZm9yIChuID0gKHMuaGVhcF9sZW4gPj4gMS8qaW50IC8yKi8pOyBuID49IDE7IG4tLSkgeyBwcWRvd25oZWFwKHMsIHRyZWUsIG4pOyB9XG5cbiAgLyogQ29uc3RydWN0IHRoZSBIdWZmbWFuIHRyZWUgYnkgcmVwZWF0ZWRseSBjb21iaW5pbmcgdGhlIGxlYXN0IHR3b1xuICAgKiBmcmVxdWVudCBub2Rlcy5cbiAgICovXG4gIG5vZGUgPSBlbGVtczsgICAgICAgICAgICAgIC8qIG5leHQgaW50ZXJuYWwgbm9kZSBvZiB0aGUgdHJlZSAqL1xuICBkbyB7XG4gICAgLy9wcXJlbW92ZShzLCB0cmVlLCBuKTsgIC8qIG4gPSBub2RlIG9mIGxlYXN0IGZyZXF1ZW5jeSAqL1xuICAgIC8qKiogcHFyZW1vdmUgKioqL1xuICAgIG4gPSBzLmhlYXBbMS8qU01BTExFU1QqL107XG4gICAgcy5oZWFwWzEvKlNNQUxMRVNUKi9dID0gcy5oZWFwW3MuaGVhcF9sZW4tLV07XG4gICAgcHFkb3duaGVhcChzLCB0cmVlLCAxLypTTUFMTEVTVCovKTtcbiAgICAvKioqL1xuXG4gICAgbSA9IHMuaGVhcFsxLypTTUFMTEVTVCovXTsgLyogbSA9IG5vZGUgb2YgbmV4dCBsZWFzdCBmcmVxdWVuY3kgKi9cblxuICAgIHMuaGVhcFstLXMuaGVhcF9tYXhdID0gbjsgLyoga2VlcCB0aGUgbm9kZXMgc29ydGVkIGJ5IGZyZXF1ZW5jeSAqL1xuICAgIHMuaGVhcFstLXMuaGVhcF9tYXhdID0gbTtcblxuICAgIC8qIENyZWF0ZSBhIG5ldyBub2RlIGZhdGhlciBvZiBuIGFuZCBtICovXG4gICAgdHJlZVtub2RlICogMl0vKi5GcmVxKi8gPSB0cmVlW24gKiAyXS8qLkZyZXEqLyArIHRyZWVbbSAqIDJdLyouRnJlcSovO1xuICAgIHMuZGVwdGhbbm9kZV0gPSAocy5kZXB0aFtuXSA+PSBzLmRlcHRoW21dID8gcy5kZXB0aFtuXSA6IHMuZGVwdGhbbV0pICsgMTtcbiAgICB0cmVlW24gKiAyICsgMV0vKi5EYWQqLyA9IHRyZWVbbSAqIDIgKyAxXS8qLkRhZCovID0gbm9kZTtcblxuICAgIC8qIGFuZCBpbnNlcnQgdGhlIG5ldyBub2RlIGluIHRoZSBoZWFwICovXG4gICAgcy5oZWFwWzEvKlNNQUxMRVNUKi9dID0gbm9kZSsrO1xuICAgIHBxZG93bmhlYXAocywgdHJlZSwgMS8qU01BTExFU1QqLyk7XG5cbiAgfSB3aGlsZSAocy5oZWFwX2xlbiA+PSAyKTtcblxuICBzLmhlYXBbLS1zLmhlYXBfbWF4XSA9IHMuaGVhcFsxLypTTUFMTEVTVCovXTtcblxuICAvKiBBdCB0aGlzIHBvaW50LCB0aGUgZmllbGRzIGZyZXEgYW5kIGRhZCBhcmUgc2V0LiBXZSBjYW4gbm93XG4gICAqIGdlbmVyYXRlIHRoZSBiaXQgbGVuZ3Rocy5cbiAgICovXG4gIGdlbl9iaXRsZW4ocywgZGVzYyk7XG5cbiAgLyogVGhlIGZpZWxkIGxlbiBpcyBub3cgc2V0LCB3ZSBjYW4gZ2VuZXJhdGUgdGhlIGJpdCBjb2RlcyAqL1xuICBnZW5fY29kZXModHJlZSwgbWF4X2NvZGUsIHMuYmxfY291bnQpO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2NhbiBhIGxpdGVyYWwgb3IgZGlzdGFuY2UgdHJlZSB0byBkZXRlcm1pbmUgdGhlIGZyZXF1ZW5jaWVzIG9mIHRoZSBjb2Rlc1xuICogaW4gdGhlIGJpdCBsZW5ndGggdHJlZS5cbiAqL1xuZnVuY3Rpb24gc2Nhbl90cmVlKHMsIHRyZWUsIG1heF9jb2RlKVxuLy8gICAgZGVmbGF0ZV9zdGF0ZSAqcztcbi8vICAgIGN0X2RhdGEgKnRyZWU7ICAgLyogdGhlIHRyZWUgdG8gYmUgc2Nhbm5lZCAqL1xuLy8gICAgaW50IG1heF9jb2RlOyAgICAvKiBhbmQgaXRzIGxhcmdlc3QgY29kZSBvZiBub24gemVybyBmcmVxdWVuY3kgKi9cbntcbiAgdmFyIG47ICAgICAgICAgICAgICAgICAgICAgLyogaXRlcmF0ZXMgb3ZlciBhbGwgdHJlZSBlbGVtZW50cyAqL1xuICB2YXIgcHJldmxlbiA9IC0xOyAgICAgICAgICAvKiBsYXN0IGVtaXR0ZWQgbGVuZ3RoICovXG4gIHZhciBjdXJsZW47ICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBvZiBjdXJyZW50IGNvZGUgKi9cblxuICB2YXIgbmV4dGxlbiA9IHRyZWVbMCAqIDIgKyAxXS8qLkxlbiovOyAvKiBsZW5ndGggb2YgbmV4dCBjb2RlICovXG5cbiAgdmFyIGNvdW50ID0gMDsgICAgICAgICAgICAgLyogcmVwZWF0IGNvdW50IG9mIHRoZSBjdXJyZW50IGNvZGUgKi9cbiAgdmFyIG1heF9jb3VudCA9IDc7ICAgICAgICAgLyogbWF4IHJlcGVhdCBjb3VudCAqL1xuICB2YXIgbWluX2NvdW50ID0gNDsgICAgICAgICAvKiBtaW4gcmVwZWF0IGNvdW50ICovXG5cbiAgaWYgKG5leHRsZW4gPT09IDApIHtcbiAgICBtYXhfY291bnQgPSAxMzg7XG4gICAgbWluX2NvdW50ID0gMztcbiAgfVxuICB0cmVlWyhtYXhfY29kZSArIDEpICogMiArIDFdLyouTGVuKi8gPSAweGZmZmY7IC8qIGd1YXJkICovXG5cbiAgZm9yIChuID0gMDsgbiA8PSBtYXhfY29kZTsgbisrKSB7XG4gICAgY3VybGVuID0gbmV4dGxlbjtcbiAgICBuZXh0bGVuID0gdHJlZVsobiArIDEpICogMiArIDFdLyouTGVuKi87XG5cbiAgICBpZiAoKytjb3VudCA8IG1heF9jb3VudCAmJiBjdXJsZW4gPT09IG5leHRsZW4pIHtcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgfSBlbHNlIGlmIChjb3VudCA8IG1pbl9jb3VudCkge1xuICAgICAgcy5ibF90cmVlW2N1cmxlbiAqIDJdLyouRnJlcSovICs9IGNvdW50O1xuXG4gICAgfSBlbHNlIGlmIChjdXJsZW4gIT09IDApIHtcblxuICAgICAgaWYgKGN1cmxlbiAhPT0gcHJldmxlbikgeyBzLmJsX3RyZWVbY3VybGVuICogMl0vKi5GcmVxKi8rKzsgfVxuICAgICAgcy5ibF90cmVlW1JFUF8zXzYgKiAyXS8qLkZyZXEqLysrO1xuXG4gICAgfSBlbHNlIGlmIChjb3VudCA8PSAxMCkge1xuICAgICAgcy5ibF90cmVlW1JFUFpfM18xMCAqIDJdLyouRnJlcSovKys7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgcy5ibF90cmVlW1JFUFpfMTFfMTM4ICogMl0vKi5GcmVxKi8rKztcbiAgICB9XG5cbiAgICBjb3VudCA9IDA7XG4gICAgcHJldmxlbiA9IGN1cmxlbjtcblxuICAgIGlmIChuZXh0bGVuID09PSAwKSB7XG4gICAgICBtYXhfY291bnQgPSAxMzg7XG4gICAgICBtaW5fY291bnQgPSAzO1xuXG4gICAgfSBlbHNlIGlmIChjdXJsZW4gPT09IG5leHRsZW4pIHtcbiAgICAgIG1heF9jb3VudCA9IDY7XG4gICAgICBtaW5fY291bnQgPSAzO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIG1heF9jb3VudCA9IDc7XG4gICAgICBtaW5fY291bnQgPSA0O1xuICAgIH1cbiAgfVxufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2VuZCBhIGxpdGVyYWwgb3IgZGlzdGFuY2UgdHJlZSBpbiBjb21wcmVzc2VkIGZvcm0sIHVzaW5nIHRoZSBjb2RlcyBpblxuICogYmxfdHJlZS5cbiAqL1xuZnVuY3Rpb24gc2VuZF90cmVlKHMsIHRyZWUsIG1heF9jb2RlKVxuLy8gICAgZGVmbGF0ZV9zdGF0ZSAqcztcbi8vICAgIGN0X2RhdGEgKnRyZWU7IC8qIHRoZSB0cmVlIHRvIGJlIHNjYW5uZWQgKi9cbi8vICAgIGludCBtYXhfY29kZTsgICAgICAgLyogYW5kIGl0cyBsYXJnZXN0IGNvZGUgb2Ygbm9uIHplcm8gZnJlcXVlbmN5ICovXG57XG4gIHZhciBuOyAgICAgICAgICAgICAgICAgICAgIC8qIGl0ZXJhdGVzIG92ZXIgYWxsIHRyZWUgZWxlbWVudHMgKi9cbiAgdmFyIHByZXZsZW4gPSAtMTsgICAgICAgICAgLyogbGFzdCBlbWl0dGVkIGxlbmd0aCAqL1xuICB2YXIgY3VybGVuOyAgICAgICAgICAgICAgICAvKiBsZW5ndGggb2YgY3VycmVudCBjb2RlICovXG5cbiAgdmFyIG5leHRsZW4gPSB0cmVlWzAgKiAyICsgMV0vKi5MZW4qLzsgLyogbGVuZ3RoIG9mIG5leHQgY29kZSAqL1xuXG4gIHZhciBjb3VudCA9IDA7ICAgICAgICAgICAgIC8qIHJlcGVhdCBjb3VudCBvZiB0aGUgY3VycmVudCBjb2RlICovXG4gIHZhciBtYXhfY291bnQgPSA3OyAgICAgICAgIC8qIG1heCByZXBlYXQgY291bnQgKi9cbiAgdmFyIG1pbl9jb3VudCA9IDQ7ICAgICAgICAgLyogbWluIHJlcGVhdCBjb3VudCAqL1xuXG4gIC8qIHRyZWVbbWF4X2NvZGUrMV0uTGVuID0gLTE7ICovICAvKiBndWFyZCBhbHJlYWR5IHNldCAqL1xuICBpZiAobmV4dGxlbiA9PT0gMCkge1xuICAgIG1heF9jb3VudCA9IDEzODtcbiAgICBtaW5fY291bnQgPSAzO1xuICB9XG5cbiAgZm9yIChuID0gMDsgbiA8PSBtYXhfY29kZTsgbisrKSB7XG4gICAgY3VybGVuID0gbmV4dGxlbjtcbiAgICBuZXh0bGVuID0gdHJlZVsobiArIDEpICogMiArIDFdLyouTGVuKi87XG5cbiAgICBpZiAoKytjb3VudCA8IG1heF9jb3VudCAmJiBjdXJsZW4gPT09IG5leHRsZW4pIHtcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgfSBlbHNlIGlmIChjb3VudCA8IG1pbl9jb3VudCkge1xuICAgICAgZG8geyBzZW5kX2NvZGUocywgY3VybGVuLCBzLmJsX3RyZWUpOyB9IHdoaWxlICgtLWNvdW50ICE9PSAwKTtcblxuICAgIH0gZWxzZSBpZiAoY3VybGVuICE9PSAwKSB7XG4gICAgICBpZiAoY3VybGVuICE9PSBwcmV2bGVuKSB7XG4gICAgICAgIHNlbmRfY29kZShzLCBjdXJsZW4sIHMuYmxfdHJlZSk7XG4gICAgICAgIGNvdW50LS07XG4gICAgICB9XG4gICAgICAvL0Fzc2VydChjb3VudCA+PSAzICYmIGNvdW50IDw9IDYsIFwiIDNfNj9cIik7XG4gICAgICBzZW5kX2NvZGUocywgUkVQXzNfNiwgcy5ibF90cmVlKTtcbiAgICAgIHNlbmRfYml0cyhzLCBjb3VudCAtIDMsIDIpO1xuXG4gICAgfSBlbHNlIGlmIChjb3VudCA8PSAxMCkge1xuICAgICAgc2VuZF9jb2RlKHMsIFJFUFpfM18xMCwgcy5ibF90cmVlKTtcbiAgICAgIHNlbmRfYml0cyhzLCBjb3VudCAtIDMsIDMpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbmRfY29kZShzLCBSRVBaXzExXzEzOCwgcy5ibF90cmVlKTtcbiAgICAgIHNlbmRfYml0cyhzLCBjb3VudCAtIDExLCA3KTtcbiAgICB9XG5cbiAgICBjb3VudCA9IDA7XG4gICAgcHJldmxlbiA9IGN1cmxlbjtcbiAgICBpZiAobmV4dGxlbiA9PT0gMCkge1xuICAgICAgbWF4X2NvdW50ID0gMTM4O1xuICAgICAgbWluX2NvdW50ID0gMztcblxuICAgIH0gZWxzZSBpZiAoY3VybGVuID09PSBuZXh0bGVuKSB7XG4gICAgICBtYXhfY291bnQgPSA2O1xuICAgICAgbWluX2NvdW50ID0gMztcblxuICAgIH0gZWxzZSB7XG4gICAgICBtYXhfY291bnQgPSA3O1xuICAgICAgbWluX2NvdW50ID0gNDtcbiAgICB9XG4gIH1cbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvbnN0cnVjdCB0aGUgSHVmZm1hbiB0cmVlIGZvciB0aGUgYml0IGxlbmd0aHMgYW5kIHJldHVybiB0aGUgaW5kZXggaW5cbiAqIGJsX29yZGVyIG9mIHRoZSBsYXN0IGJpdCBsZW5ndGggY29kZSB0byBzZW5kLlxuICovXG5mdW5jdGlvbiBidWlsZF9ibF90cmVlKHMpIHtcbiAgdmFyIG1heF9ibGluZGV4OyAgLyogaW5kZXggb2YgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgb2Ygbm9uIHplcm8gZnJlcSAqL1xuXG4gIC8qIERldGVybWluZSB0aGUgYml0IGxlbmd0aCBmcmVxdWVuY2llcyBmb3IgbGl0ZXJhbCBhbmQgZGlzdGFuY2UgdHJlZXMgKi9cbiAgc2Nhbl90cmVlKHMsIHMuZHluX2x0cmVlLCBzLmxfZGVzYy5tYXhfY29kZSk7XG4gIHNjYW5fdHJlZShzLCBzLmR5bl9kdHJlZSwgcy5kX2Rlc2MubWF4X2NvZGUpO1xuXG4gIC8qIEJ1aWxkIHRoZSBiaXQgbGVuZ3RoIHRyZWU6ICovXG4gIGJ1aWxkX3RyZWUocywgcy5ibF9kZXNjKTtcbiAgLyogb3B0X2xlbiBub3cgaW5jbHVkZXMgdGhlIGxlbmd0aCBvZiB0aGUgdHJlZSByZXByZXNlbnRhdGlvbnMsIGV4Y2VwdFxuICAgKiB0aGUgbGVuZ3RocyBvZiB0aGUgYml0IGxlbmd0aHMgY29kZXMgYW5kIHRoZSA1KzUrNCBiaXRzIGZvciB0aGUgY291bnRzLlxuICAgKi9cblxuICAvKiBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBiaXQgbGVuZ3RoIGNvZGVzIHRvIHNlbmQuIFRoZSBwa3ppcCBmb3JtYXRcbiAgICogcmVxdWlyZXMgdGhhdCBhdCBsZWFzdCA0IGJpdCBsZW5ndGggY29kZXMgYmUgc2VudC4gKGFwcG5vdGUudHh0IHNheXNcbiAgICogMyBidXQgdGhlIGFjdHVhbCB2YWx1ZSB1c2VkIGlzIDQuKVxuICAgKi9cbiAgZm9yIChtYXhfYmxpbmRleCA9IEJMX0NPREVTIC0gMTsgbWF4X2JsaW5kZXggPj0gMzsgbWF4X2JsaW5kZXgtLSkge1xuICAgIGlmIChzLmJsX3RyZWVbYmxfb3JkZXJbbWF4X2JsaW5kZXhdICogMiArIDFdLyouTGVuKi8gIT09IDApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICAvKiBVcGRhdGUgb3B0X2xlbiB0byBpbmNsdWRlIHRoZSBiaXQgbGVuZ3RoIHRyZWUgYW5kIGNvdW50cyAqL1xuICBzLm9wdF9sZW4gKz0gMyAqIChtYXhfYmxpbmRleCArIDEpICsgNSArIDUgKyA0O1xuICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmR5biB0cmVlczogZHluICVsZCwgc3RhdCAlbGRcIixcbiAgLy8gICAgICAgIHMtPm9wdF9sZW4sIHMtPnN0YXRpY19sZW4pKTtcblxuICByZXR1cm4gbWF4X2JsaW5kZXg7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZW5kIHRoZSBoZWFkZXIgZm9yIGEgYmxvY2sgdXNpbmcgZHluYW1pYyBIdWZmbWFuIHRyZWVzOiB0aGUgY291bnRzLCB0aGVcbiAqIGxlbmd0aHMgb2YgdGhlIGJpdCBsZW5ndGggY29kZXMsIHRoZSBsaXRlcmFsIHRyZWUgYW5kIHRoZSBkaXN0YW5jZSB0cmVlLlxuICogSU4gYXNzZXJ0aW9uOiBsY29kZXMgPj0gMjU3LCBkY29kZXMgPj0gMSwgYmxjb2RlcyA+PSA0LlxuICovXG5mdW5jdGlvbiBzZW5kX2FsbF90cmVlcyhzLCBsY29kZXMsIGRjb2RlcywgYmxjb2Rlcylcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICBpbnQgbGNvZGVzLCBkY29kZXMsIGJsY29kZXM7IC8qIG51bWJlciBvZiBjb2RlcyBmb3IgZWFjaCB0cmVlICovXG57XG4gIHZhciByYW5rOyAgICAgICAgICAgICAgICAgICAgLyogaW5kZXggaW4gYmxfb3JkZXIgKi9cblxuICAvL0Fzc2VydCAobGNvZGVzID49IDI1NyAmJiBkY29kZXMgPj0gMSAmJiBibGNvZGVzID49IDQsIFwibm90IGVub3VnaCBjb2Rlc1wiKTtcbiAgLy9Bc3NlcnQgKGxjb2RlcyA8PSBMX0NPREVTICYmIGRjb2RlcyA8PSBEX0NPREVTICYmIGJsY29kZXMgPD0gQkxfQ09ERVMsXG4gIC8vICAgICAgICBcInRvbyBtYW55IGNvZGVzXCIpO1xuICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmJsIGNvdW50czogXCIpKTtcbiAgc2VuZF9iaXRzKHMsIGxjb2RlcyAtIDI1NywgNSk7IC8qIG5vdCArMjU1IGFzIHN0YXRlZCBpbiBhcHBub3RlLnR4dCAqL1xuICBzZW5kX2JpdHMocywgZGNvZGVzIC0gMSwgICA1KTtcbiAgc2VuZF9iaXRzKHMsIGJsY29kZXMgLSA0LCAgNCk7IC8qIG5vdCAtMyBhcyBzdGF0ZWQgaW4gYXBwbm90ZS50eHQgKi9cbiAgZm9yIChyYW5rID0gMDsgcmFuayA8IGJsY29kZXM7IHJhbmsrKykge1xuICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiXFxuYmwgY29kZSAlMmQgXCIsIGJsX29yZGVyW3JhbmtdKSk7XG4gICAgc2VuZF9iaXRzKHMsIHMuYmxfdHJlZVtibF9vcmRlcltyYW5rXSAqIDIgKyAxXS8qLkxlbiovLCAzKTtcbiAgfVxuICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmJsIHRyZWU6IHNlbnQgJWxkXCIsIHMtPmJpdHNfc2VudCkpO1xuXG4gIHNlbmRfdHJlZShzLCBzLmR5bl9sdHJlZSwgbGNvZGVzIC0gMSk7IC8qIGxpdGVyYWwgdHJlZSAqL1xuICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmxpdCB0cmVlOiBzZW50ICVsZFwiLCBzLT5iaXRzX3NlbnQpKTtcblxuICBzZW5kX3RyZWUocywgcy5keW5fZHRyZWUsIGRjb2RlcyAtIDEpOyAvKiBkaXN0YW5jZSB0cmVlICovXG4gIC8vVHJhY2V2KChzdGRlcnIsIFwiXFxuZGlzdCB0cmVlOiBzZW50ICVsZFwiLCBzLT5iaXRzX3NlbnQpKTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENoZWNrIGlmIHRoZSBkYXRhIHR5cGUgaXMgVEVYVCBvciBCSU5BUlksIHVzaW5nIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOlxuICogLSBURVhUIGlmIHRoZSB0d28gY29uZGl0aW9ucyBiZWxvdyBhcmUgc2F0aXNmaWVkOlxuICogICAgYSkgVGhlcmUgYXJlIG5vIG5vbi1wb3J0YWJsZSBjb250cm9sIGNoYXJhY3RlcnMgYmVsb25naW5nIHRvIHRoZVxuICogICAgICAgXCJibGFjayBsaXN0XCIgKDAuLjYsIDE0Li4yNSwgMjguLjMxKS5cbiAqICAgIGIpIFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwcmludGFibGUgY2hhcmFjdGVyIGJlbG9uZ2luZyB0byB0aGVcbiAqICAgICAgIFwid2hpdGUgbGlzdFwiICg5IHtUQUJ9LCAxMCB7TEZ9LCAxMyB7Q1J9LCAzMi4uMjU1KS5cbiAqIC0gQklOQVJZIG90aGVyd2lzZS5cbiAqIC0gVGhlIGZvbGxvd2luZyBwYXJ0aWFsbHktcG9ydGFibGUgY29udHJvbCBjaGFyYWN0ZXJzIGZvcm0gYVxuICogICBcImdyYXkgbGlzdFwiIHRoYXQgaXMgaWdub3JlZCBpbiB0aGlzIGRldGVjdGlvbiBhbGdvcml0aG06XG4gKiAgICg3IHtCRUx9LCA4IHtCU30sIDExIHtWVH0sIDEyIHtGRn0sIDI2IHtTVUJ9LCAyNyB7RVNDfSkuXG4gKiBJTiBhc3NlcnRpb246IHRoZSBmaWVsZHMgRnJlcSBvZiBkeW5fbHRyZWUgYXJlIHNldC5cbiAqL1xuZnVuY3Rpb24gZGV0ZWN0X2RhdGFfdHlwZShzKSB7XG4gIC8qIGJsYWNrX21hc2sgaXMgdGhlIGJpdCBtYXNrIG9mIGJsYWNrLWxpc3RlZCBieXRlc1xuICAgKiBzZXQgYml0cyAwLi42LCAxNC4uMjUsIGFuZCAyOC4uMzFcbiAgICogMHhmM2ZmYzA3ZiA9IGJpbmFyeSAxMTExMDAxMTExMTExMTExMTEwMDAwMDAwMTExMTExMVxuICAgKi9cbiAgdmFyIGJsYWNrX21hc2sgPSAweGYzZmZjMDdmO1xuICB2YXIgbjtcblxuICAvKiBDaGVjayBmb3Igbm9uLXRleHR1YWwgKFwiYmxhY2stbGlzdGVkXCIpIGJ5dGVzLiAqL1xuICBmb3IgKG4gPSAwOyBuIDw9IDMxOyBuKyssIGJsYWNrX21hc2sgPj4+PSAxKSB7XG4gICAgaWYgKChibGFja19tYXNrICYgMSkgJiYgKHMuZHluX2x0cmVlW24gKiAyXS8qLkZyZXEqLyAhPT0gMCkpIHtcbiAgICAgIHJldHVybiBaX0JJTkFSWTtcbiAgICB9XG4gIH1cblxuICAvKiBDaGVjayBmb3IgdGV4dHVhbCAoXCJ3aGl0ZS1saXN0ZWRcIikgYnl0ZXMuICovXG4gIGlmIChzLmR5bl9sdHJlZVs5ICogMl0vKi5GcmVxKi8gIT09IDAgfHwgcy5keW5fbHRyZWVbMTAgKiAyXS8qLkZyZXEqLyAhPT0gMCB8fFxuICAgICAgcy5keW5fbHRyZWVbMTMgKiAyXS8qLkZyZXEqLyAhPT0gMCkge1xuICAgIHJldHVybiBaX1RFWFQ7XG4gIH1cbiAgZm9yIChuID0gMzI7IG4gPCBMSVRFUkFMUzsgbisrKSB7XG4gICAgaWYgKHMuZHluX2x0cmVlW24gKiAyXS8qLkZyZXEqLyAhPT0gMCkge1xuICAgICAgcmV0dXJuIFpfVEVYVDtcbiAgICB9XG4gIH1cblxuICAvKiBUaGVyZSBhcmUgbm8gXCJibGFjay1saXN0ZWRcIiBvciBcIndoaXRlLWxpc3RlZFwiIGJ5dGVzOlxuICAgKiB0aGlzIHN0cmVhbSBlaXRoZXIgaXMgZW1wdHkgb3IgaGFzIHRvbGVyYXRlZCAoXCJncmF5LWxpc3RlZFwiKSBieXRlcyBvbmx5LlxuICAgKi9cbiAgcmV0dXJuIFpfQklOQVJZO1xufVxuXG5cbnZhciBzdGF0aWNfaW5pdF9kb25lID0gZmFsc2U7XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW5pdGlhbGl6ZSB0aGUgdHJlZSBkYXRhIHN0cnVjdHVyZXMgZm9yIGEgbmV3IHpsaWIgc3RyZWFtLlxuICovXG5mdW5jdGlvbiBfdHJfaW5pdChzKVxue1xuXG4gIGlmICghc3RhdGljX2luaXRfZG9uZSkge1xuICAgIHRyX3N0YXRpY19pbml0KCk7XG4gICAgc3RhdGljX2luaXRfZG9uZSA9IHRydWU7XG4gIH1cblxuICBzLmxfZGVzYyAgPSBuZXcgVHJlZURlc2Mocy5keW5fbHRyZWUsIHN0YXRpY19sX2Rlc2MpO1xuICBzLmRfZGVzYyAgPSBuZXcgVHJlZURlc2Mocy5keW5fZHRyZWUsIHN0YXRpY19kX2Rlc2MpO1xuICBzLmJsX2Rlc2MgPSBuZXcgVHJlZURlc2Mocy5ibF90cmVlLCBzdGF0aWNfYmxfZGVzYyk7XG5cbiAgcy5iaV9idWYgPSAwO1xuICBzLmJpX3ZhbGlkID0gMDtcblxuICAvKiBJbml0aWFsaXplIHRoZSBmaXJzdCBibG9jayBvZiB0aGUgZmlyc3QgZmlsZTogKi9cbiAgaW5pdF9ibG9jayhzKTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNlbmQgYSBzdG9yZWQgYmxvY2tcbiAqL1xuZnVuY3Rpb24gX3RyX3N0b3JlZF9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIGxhc3QpXG4vL0RlZmxhdGVTdGF0ZSAqcztcbi8vY2hhcmYgKmJ1ZjsgICAgICAgLyogaW5wdXQgYmxvY2sgKi9cbi8vdWxnIHN0b3JlZF9sZW47ICAgLyogbGVuZ3RoIG9mIGlucHV0IGJsb2NrICovXG4vL2ludCBsYXN0OyAgICAgICAgIC8qIG9uZSBpZiB0aGlzIGlzIHRoZSBsYXN0IGJsb2NrIGZvciBhIGZpbGUgKi9cbntcbiAgc2VuZF9iaXRzKHMsIChTVE9SRURfQkxPQ0sgPDwgMSkgKyAobGFzdCA/IDEgOiAwKSwgMyk7ICAgIC8qIHNlbmQgYmxvY2sgdHlwZSAqL1xuICBjb3B5X2Jsb2NrKHMsIGJ1Ziwgc3RvcmVkX2xlbiwgdHJ1ZSk7IC8qIHdpdGggaGVhZGVyICovXG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZW5kIG9uZSBlbXB0eSBzdGF0aWMgYmxvY2sgdG8gZ2l2ZSBlbm91Z2ggbG9va2FoZWFkIGZvciBpbmZsYXRlLlxuICogVGhpcyB0YWtlcyAxMCBiaXRzLCBvZiB3aGljaCA3IG1heSByZW1haW4gaW4gdGhlIGJpdCBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIF90cl9hbGlnbihzKSB7XG4gIHNlbmRfYml0cyhzLCBTVEFUSUNfVFJFRVMgPDwgMSwgMyk7XG4gIHNlbmRfY29kZShzLCBFTkRfQkxPQ0ssIHN0YXRpY19sdHJlZSk7XG4gIGJpX2ZsdXNoKHMpO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogRGV0ZXJtaW5lIHRoZSBiZXN0IGVuY29kaW5nIGZvciB0aGUgY3VycmVudCBibG9jazogZHluYW1pYyB0cmVlcywgc3RhdGljXG4gKiB0cmVlcyBvciBzdG9yZSwgYW5kIG91dHB1dCB0aGUgZW5jb2RlZCBibG9jayB0byB0aGUgemlwIGZpbGUuXG4gKi9cbmZ1bmN0aW9uIF90cl9mbHVzaF9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIGxhc3QpXG4vL0RlZmxhdGVTdGF0ZSAqcztcbi8vY2hhcmYgKmJ1ZjsgICAgICAgLyogaW5wdXQgYmxvY2ssIG9yIE5VTEwgaWYgdG9vIG9sZCAqL1xuLy91bGcgc3RvcmVkX2xlbjsgICAvKiBsZW5ndGggb2YgaW5wdXQgYmxvY2sgKi9cbi8vaW50IGxhc3Q7ICAgICAgICAgLyogb25lIGlmIHRoaXMgaXMgdGhlIGxhc3QgYmxvY2sgZm9yIGEgZmlsZSAqL1xue1xuICB2YXIgb3B0X2xlbmIsIHN0YXRpY19sZW5iOyAgLyogb3B0X2xlbiBhbmQgc3RhdGljX2xlbiBpbiBieXRlcyAqL1xuICB2YXIgbWF4X2JsaW5kZXggPSAwOyAgICAgICAgLyogaW5kZXggb2YgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgb2Ygbm9uIHplcm8gZnJlcSAqL1xuXG4gIC8qIEJ1aWxkIHRoZSBIdWZmbWFuIHRyZWVzIHVubGVzcyBhIHN0b3JlZCBibG9jayBpcyBmb3JjZWQgKi9cbiAgaWYgKHMubGV2ZWwgPiAwKSB7XG5cbiAgICAvKiBDaGVjayBpZiB0aGUgZmlsZSBpcyBiaW5hcnkgb3IgdGV4dCAqL1xuICAgIGlmIChzLnN0cm0uZGF0YV90eXBlID09PSBaX1VOS05PV04pIHtcbiAgICAgIHMuc3RybS5kYXRhX3R5cGUgPSBkZXRlY3RfZGF0YV90eXBlKHMpO1xuICAgIH1cblxuICAgIC8qIENvbnN0cnVjdCB0aGUgbGl0ZXJhbCBhbmQgZGlzdGFuY2UgdHJlZXMgKi9cbiAgICBidWlsZF90cmVlKHMsIHMubF9kZXNjKTtcbiAgICAvLyBUcmFjZXYoKHN0ZGVyciwgXCJcXG5saXQgZGF0YTogZHluICVsZCwgc3RhdCAlbGRcIiwgcy0+b3B0X2xlbixcbiAgICAvLyAgICAgICAgcy0+c3RhdGljX2xlbikpO1xuXG4gICAgYnVpbGRfdHJlZShzLCBzLmRfZGVzYyk7XG4gICAgLy8gVHJhY2V2KChzdGRlcnIsIFwiXFxuZGlzdCBkYXRhOiBkeW4gJWxkLCBzdGF0ICVsZFwiLCBzLT5vcHRfbGVuLFxuICAgIC8vICAgICAgICBzLT5zdGF0aWNfbGVuKSk7XG4gICAgLyogQXQgdGhpcyBwb2ludCwgb3B0X2xlbiBhbmQgc3RhdGljX2xlbiBhcmUgdGhlIHRvdGFsIGJpdCBsZW5ndGhzIG9mXG4gICAgICogdGhlIGNvbXByZXNzZWQgYmxvY2sgZGF0YSwgZXhjbHVkaW5nIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9ucy5cbiAgICAgKi9cblxuICAgIC8qIEJ1aWxkIHRoZSBiaXQgbGVuZ3RoIHRyZWUgZm9yIHRoZSBhYm92ZSB0d28gdHJlZXMsIGFuZCBnZXQgdGhlIGluZGV4XG4gICAgICogaW4gYmxfb3JkZXIgb2YgdGhlIGxhc3QgYml0IGxlbmd0aCBjb2RlIHRvIHNlbmQuXG4gICAgICovXG4gICAgbWF4X2JsaW5kZXggPSBidWlsZF9ibF90cmVlKHMpO1xuXG4gICAgLyogRGV0ZXJtaW5lIHRoZSBiZXN0IGVuY29kaW5nLiBDb21wdXRlIHRoZSBibG9jayBsZW5ndGhzIGluIGJ5dGVzLiAqL1xuICAgIG9wdF9sZW5iID0gKHMub3B0X2xlbiArIDMgKyA3KSA+Pj4gMztcbiAgICBzdGF0aWNfbGVuYiA9IChzLnN0YXRpY19sZW4gKyAzICsgNykgPj4+IDM7XG5cbiAgICAvLyBUcmFjZXYoKHN0ZGVyciwgXCJcXG5vcHQgJWx1KCVsdSkgc3RhdCAlbHUoJWx1KSBzdG9yZWQgJWx1IGxpdCAldSBcIixcbiAgICAvLyAgICAgICAgb3B0X2xlbmIsIHMtPm9wdF9sZW4sIHN0YXRpY19sZW5iLCBzLT5zdGF0aWNfbGVuLCBzdG9yZWRfbGVuLFxuICAgIC8vICAgICAgICBzLT5sYXN0X2xpdCkpO1xuXG4gICAgaWYgKHN0YXRpY19sZW5iIDw9IG9wdF9sZW5iKSB7IG9wdF9sZW5iID0gc3RhdGljX2xlbmI7IH1cblxuICB9IGVsc2Uge1xuICAgIC8vIEFzc2VydChidWYgIT0gKGNoYXIqKTAsIFwibG9zdCBidWZcIik7XG4gICAgb3B0X2xlbmIgPSBzdGF0aWNfbGVuYiA9IHN0b3JlZF9sZW4gKyA1OyAvKiBmb3JjZSBhIHN0b3JlZCBibG9jayAqL1xuICB9XG5cbiAgaWYgKChzdG9yZWRfbGVuICsgNCA8PSBvcHRfbGVuYikgJiYgKGJ1ZiAhPT0gLTEpKSB7XG4gICAgLyogNDogdHdvIHdvcmRzIGZvciB0aGUgbGVuZ3RocyAqL1xuXG4gICAgLyogVGhlIHRlc3QgYnVmICE9IE5VTEwgaXMgb25seSBuZWNlc3NhcnkgaWYgTElUX0JVRlNJWkUgPiBXU0laRS5cbiAgICAgKiBPdGhlcndpc2Ugd2UgY2FuJ3QgaGF2ZSBwcm9jZXNzZWQgbW9yZSB0aGFuIFdTSVpFIGlucHV0IGJ5dGVzIHNpbmNlXG4gICAgICogdGhlIGxhc3QgYmxvY2sgZmx1c2gsIGJlY2F1c2UgY29tcHJlc3Npb24gd291bGQgaGF2ZSBiZWVuXG4gICAgICogc3VjY2Vzc2Z1bC4gSWYgTElUX0JVRlNJWkUgPD0gV1NJWkUsIGl0IGlzIG5ldmVyIHRvbyBsYXRlIHRvXG4gICAgICogdHJhbnNmb3JtIGEgYmxvY2sgaW50byBhIHN0b3JlZCBibG9jay5cbiAgICAgKi9cbiAgICBfdHJfc3RvcmVkX2Jsb2NrKHMsIGJ1Ziwgc3RvcmVkX2xlbiwgbGFzdCk7XG5cbiAgfSBlbHNlIGlmIChzLnN0cmF0ZWd5ID09PSBaX0ZJWEVEIHx8IHN0YXRpY19sZW5iID09PSBvcHRfbGVuYikge1xuXG4gICAgc2VuZF9iaXRzKHMsIChTVEFUSUNfVFJFRVMgPDwgMSkgKyAobGFzdCA/IDEgOiAwKSwgMyk7XG4gICAgY29tcHJlc3NfYmxvY2socywgc3RhdGljX2x0cmVlLCBzdGF0aWNfZHRyZWUpO1xuXG4gIH0gZWxzZSB7XG4gICAgc2VuZF9iaXRzKHMsIChEWU5fVFJFRVMgPDwgMSkgKyAobGFzdCA/IDEgOiAwKSwgMyk7XG4gICAgc2VuZF9hbGxfdHJlZXMocywgcy5sX2Rlc2MubWF4X2NvZGUgKyAxLCBzLmRfZGVzYy5tYXhfY29kZSArIDEsIG1heF9ibGluZGV4ICsgMSk7XG4gICAgY29tcHJlc3NfYmxvY2socywgcy5keW5fbHRyZWUsIHMuZHluX2R0cmVlKTtcbiAgfVxuICAvLyBBc3NlcnQgKHMtPmNvbXByZXNzZWRfbGVuID09IHMtPmJpdHNfc2VudCwgXCJiYWQgY29tcHJlc3NlZCBzaXplXCIpO1xuICAvKiBUaGUgYWJvdmUgY2hlY2sgaXMgbWFkZSBtb2QgMl4zMiwgZm9yIGZpbGVzIGxhcmdlciB0aGFuIDUxMiBNQlxuICAgKiBhbmQgdUxvbmcgaW1wbGVtZW50ZWQgb24gMzIgYml0cy5cbiAgICovXG4gIGluaXRfYmxvY2socyk7XG5cbiAgaWYgKGxhc3QpIHtcbiAgICBiaV93aW5kdXAocyk7XG4gIH1cbiAgLy8gVHJhY2V2KChzdGRlcnIsXCJcXG5jb21wcmxlbiAlbHUoJWx1KSBcIiwgcy0+Y29tcHJlc3NlZF9sZW4+PjMsXG4gIC8vICAgICAgIHMtPmNvbXByZXNzZWRfbGVuLTcqbGFzdCkpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNhdmUgdGhlIG1hdGNoIGluZm8gYW5kIHRhbGx5IHRoZSBmcmVxdWVuY3kgY291bnRzLiBSZXR1cm4gdHJ1ZSBpZlxuICogdGhlIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkLlxuICovXG5mdW5jdGlvbiBfdHJfdGFsbHkocywgZGlzdCwgbGMpXG4vLyAgICBkZWZsYXRlX3N0YXRlICpzO1xuLy8gICAgdW5zaWduZWQgZGlzdDsgIC8qIGRpc3RhbmNlIG9mIG1hdGNoZWQgc3RyaW5nICovXG4vLyAgICB1bnNpZ25lZCBsYzsgICAgLyogbWF0Y2ggbGVuZ3RoLU1JTl9NQVRDSCBvciB1bm1hdGNoZWQgY2hhciAoaWYgZGlzdD09MCkgKi9cbntcbiAgLy92YXIgb3V0X2xlbmd0aCwgaW5fbGVuZ3RoLCBkY29kZTtcblxuICBzLnBlbmRpbmdfYnVmW3MuZF9idWYgKyBzLmxhc3RfbGl0ICogMl0gICAgID0gKGRpc3QgPj4+IDgpICYgMHhmZjtcbiAgcy5wZW5kaW5nX2J1ZltzLmRfYnVmICsgcy5sYXN0X2xpdCAqIDIgKyAxXSA9IGRpc3QgJiAweGZmO1xuXG4gIHMucGVuZGluZ19idWZbcy5sX2J1ZiArIHMubGFzdF9saXRdID0gbGMgJiAweGZmO1xuICBzLmxhc3RfbGl0Kys7XG5cbiAgaWYgKGRpc3QgPT09IDApIHtcbiAgICAvKiBsYyBpcyB0aGUgdW5tYXRjaGVkIGNoYXIgKi9cbiAgICBzLmR5bl9sdHJlZVtsYyAqIDJdLyouRnJlcSovKys7XG4gIH0gZWxzZSB7XG4gICAgcy5tYXRjaGVzKys7XG4gICAgLyogSGVyZSwgbGMgaXMgdGhlIG1hdGNoIGxlbmd0aCAtIE1JTl9NQVRDSCAqL1xuICAgIGRpc3QtLTsgICAgICAgICAgICAgLyogZGlzdCA9IG1hdGNoIGRpc3RhbmNlIC0gMSAqL1xuICAgIC8vQXNzZXJ0KCh1c2gpZGlzdCA8ICh1c2gpTUFYX0RJU1QocykgJiZcbiAgICAvLyAgICAgICAodXNoKWxjIDw9ICh1c2gpKE1BWF9NQVRDSC1NSU5fTUFUQ0gpICYmXG4gICAgLy8gICAgICAgKHVzaClkX2NvZGUoZGlzdCkgPCAodXNoKURfQ09ERVMsICBcIl90cl90YWxseTogYmFkIG1hdGNoXCIpO1xuXG4gICAgcy5keW5fbHRyZWVbKF9sZW5ndGhfY29kZVtsY10gKyBMSVRFUkFMUyArIDEpICogMl0vKi5GcmVxKi8rKztcbiAgICBzLmR5bl9kdHJlZVtkX2NvZGUoZGlzdCkgKiAyXS8qLkZyZXEqLysrO1xuICB9XG5cbi8vICghKSBUaGlzIGJsb2NrIGlzIGRpc2FibGVkIGluIHpsaWIgZGVmYXVsdHMsXG4vLyBkb24ndCBlbmFibGUgaXQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5XG5cbi8vI2lmZGVmIFRSVU5DQVRFX0JMT0NLXG4vLyAgLyogVHJ5IHRvIGd1ZXNzIGlmIGl0IGlzIHByb2ZpdGFibGUgdG8gc3RvcCB0aGUgY3VycmVudCBibG9jayBoZXJlICovXG4vLyAgaWYgKChzLmxhc3RfbGl0ICYgMHgxZmZmKSA9PT0gMCAmJiBzLmxldmVsID4gMikge1xuLy8gICAgLyogQ29tcHV0ZSBhbiB1cHBlciBib3VuZCBmb3IgdGhlIGNvbXByZXNzZWQgbGVuZ3RoICovXG4vLyAgICBvdXRfbGVuZ3RoID0gcy5sYXN0X2xpdCo4O1xuLy8gICAgaW5fbGVuZ3RoID0gcy5zdHJzdGFydCAtIHMuYmxvY2tfc3RhcnQ7XG4vL1xuLy8gICAgZm9yIChkY29kZSA9IDA7IGRjb2RlIDwgRF9DT0RFUzsgZGNvZGUrKykge1xuLy8gICAgICBvdXRfbGVuZ3RoICs9IHMuZHluX2R0cmVlW2Rjb2RlKjJdLyouRnJlcSovICogKDUgKyBleHRyYV9kYml0c1tkY29kZV0pO1xuLy8gICAgfVxuLy8gICAgb3V0X2xlbmd0aCA+Pj49IDM7XG4vLyAgICAvL1RyYWNldigoc3RkZXJyLFwiXFxubGFzdF9saXQgJXUsIGluICVsZCwgb3V0IH4lbGQoJWxkJSUpIFwiLFxuLy8gICAgLy8gICAgICAgcy0+bGFzdF9saXQsIGluX2xlbmd0aCwgb3V0X2xlbmd0aCxcbi8vICAgIC8vICAgICAgIDEwMEwgLSBvdXRfbGVuZ3RoKjEwMEwvaW5fbGVuZ3RoKSk7XG4vLyAgICBpZiAocy5tYXRjaGVzIDwgKHMubGFzdF9saXQ+PjEpLyppbnQgLzIqLyAmJiBvdXRfbGVuZ3RoIDwgKGluX2xlbmd0aD4+MSkvKmludCAvMiovKSB7XG4vLyAgICAgIHJldHVybiB0cnVlO1xuLy8gICAgfVxuLy8gIH1cbi8vI2VuZGlmXG5cbiAgcmV0dXJuIChzLmxhc3RfbGl0ID09PSBzLmxpdF9idWZzaXplIC0gMSk7XG4gIC8qIFdlIGF2b2lkIGVxdWFsaXR5IHdpdGggbGl0X2J1ZnNpemUgYmVjYXVzZSBvZiB3cmFwYXJvdW5kIGF0IDY0S1xuICAgKiBvbiAxNiBiaXQgbWFjaGluZXMgYW5kIGJlY2F1c2Ugc3RvcmVkIGJsb2NrcyBhcmUgcmVzdHJpY3RlZCB0b1xuICAgKiA2NEstMSBieXRlcy5cbiAgICovXG59XG5cbmV4cG9ydHMuX3RyX2luaXQgID0gX3RyX2luaXQ7XG5leHBvcnRzLl90cl9zdG9yZWRfYmxvY2sgPSBfdHJfc3RvcmVkX2Jsb2NrO1xuZXhwb3J0cy5fdHJfZmx1c2hfYmxvY2sgID0gX3RyX2ZsdXNoX2Jsb2NrO1xuZXhwb3J0cy5fdHJfdGFsbHkgPSBfdHJfdGFsbHk7XG5leHBvcnRzLl90cl9hbGlnbiA9IF90cl9hbGlnbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG5mdW5jdGlvbiBaU3RyZWFtKCkge1xuICAvKiBuZXh0IGlucHV0IGJ5dGUgKi9cbiAgdGhpcy5pbnB1dCA9IG51bGw7IC8vIEpTIHNwZWNpZmljLCBiZWNhdXNlIHdlIGhhdmUgbm8gcG9pbnRlcnNcbiAgdGhpcy5uZXh0X2luID0gMDtcbiAgLyogbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBhdCBpbnB1dCAqL1xuICB0aGlzLmF2YWlsX2luID0gMDtcbiAgLyogdG90YWwgbnVtYmVyIG9mIGlucHV0IGJ5dGVzIHJlYWQgc28gZmFyICovXG4gIHRoaXMudG90YWxfaW4gPSAwO1xuICAvKiBuZXh0IG91dHB1dCBieXRlIHNob3VsZCBiZSBwdXQgdGhlcmUgKi9cbiAgdGhpcy5vdXRwdXQgPSBudWxsOyAvLyBKUyBzcGVjaWZpYywgYmVjYXVzZSB3ZSBoYXZlIG5vIHBvaW50ZXJzXG4gIHRoaXMubmV4dF9vdXQgPSAwO1xuICAvKiByZW1haW5pbmcgZnJlZSBzcGFjZSBhdCBvdXRwdXQgKi9cbiAgdGhpcy5hdmFpbF9vdXQgPSAwO1xuICAvKiB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgb3V0cHV0IHNvIGZhciAqL1xuICB0aGlzLnRvdGFsX291dCA9IDA7XG4gIC8qIGxhc3QgZXJyb3IgbWVzc2FnZSwgTlVMTCBpZiBubyBlcnJvciAqL1xuICB0aGlzLm1zZyA9ICcnLypaX05VTEwqLztcbiAgLyogbm90IHZpc2libGUgYnkgYXBwbGljYXRpb25zICovXG4gIHRoaXMuc3RhdGUgPSBudWxsO1xuICAvKiBiZXN0IGd1ZXNzIGFib3V0IHRoZSBkYXRhIHR5cGU6IGJpbmFyeSBvciB0ZXh0ICovXG4gIHRoaXMuZGF0YV90eXBlID0gMi8qWl9VTktOT1dOKi87XG4gIC8qIGFkbGVyMzIgdmFsdWUgb2YgdGhlIHVuY29tcHJlc3NlZCBkYXRhICovXG4gIHRoaXMuYWRsZXIgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFpTdHJlYW07XG4iLCIvLyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L3NlbGYtc2lnbmVkL2Jsb2IvZ2gtcGFnZXMvbGliL2FzbjEuanNcbi8vIEZlZG9yLCB5b3UgYXJlIGFtYXppbmcuXG4ndXNlIHN0cmljdCdcblxudmFyIGFzbjEgPSByZXF1aXJlKCdhc24xLmpzJylcblxuZXhwb3J0cy5jZXJ0aWZpY2F0ZSA9IHJlcXVpcmUoJy4vY2VydGlmaWNhdGUnKVxuXG52YXIgUlNBUHJpdmF0ZUtleSA9IGFzbjEuZGVmaW5lKCdSU0FQcml2YXRlS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdtb2R1bHVzJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3B1YmxpY0V4cG9uZW50JykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaXZhdGVFeHBvbmVudCcpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcmltZTEnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpbWUyJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2V4cG9uZW50MScpLmludCgpLFxuICAgIHRoaXMua2V5KCdleHBvbmVudDInKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnY29lZmZpY2llbnQnKS5pbnQoKVxuICApXG59KVxuZXhwb3J0cy5SU0FQcml2YXRlS2V5ID0gUlNBUHJpdmF0ZUtleVxuXG52YXIgUlNBUHVibGljS2V5ID0gYXNuMS5kZWZpbmUoJ1JTQVB1YmxpY0tleScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ21vZHVsdXMnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHVibGljRXhwb25lbnQnKS5pbnQoKVxuICApXG59KVxuZXhwb3J0cy5SU0FQdWJsaWNLZXkgPSBSU0FQdWJsaWNLZXlcblxudmFyIFB1YmxpY0tleSA9IGFzbjEuZGVmaW5lKCdTdWJqZWN0UHVibGljS2V5SW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFB1YmxpY0tleScpLmJpdHN0cigpXG4gIClcbn0pXG5leHBvcnRzLlB1YmxpY0tleSA9IFB1YmxpY0tleVxuXG52YXIgQWxnb3JpdGhtSWRlbnRpZmllciA9IGFzbjEuZGVmaW5lKCdBbGdvcml0aG1JZGVudGlmaWVyJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnYWxnb3JpdGhtJykub2JqaWQoKSxcbiAgICB0aGlzLmtleSgnbm9uZScpLm51bGxfKCkub3B0aW9uYWwoKSxcbiAgICB0aGlzLmtleSgnY3VydmUnKS5vYmppZCgpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ3BhcmFtcycpLnNlcSgpLm9iaihcbiAgICAgIHRoaXMua2V5KCdwJykuaW50KCksXG4gICAgICB0aGlzLmtleSgncScpLmludCgpLFxuICAgICAgdGhpcy5rZXkoJ2cnKS5pbnQoKVxuICAgICkub3B0aW9uYWwoKVxuICApXG59KVxuXG52YXIgUHJpdmF0ZUtleUluZm8gPSBhc24xLmRlZmluZSgnUHJpdmF0ZUtleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFByaXZhdGVLZXknKS5vY3RzdHIoKVxuICApXG59KVxuZXhwb3J0cy5Qcml2YXRlS2V5ID0gUHJpdmF0ZUtleUluZm9cbnZhciBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyA9IGFzbjEuZGVmaW5lKCdFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnNlcSgpLm9iaihcbiAgICAgIHRoaXMua2V5KCdpZCcpLm9iamlkKCksXG4gICAgICB0aGlzLmtleSgnZGVjcnlwdCcpLnNlcSgpLm9iaihcbiAgICAgICAgdGhpcy5rZXkoJ2tkZScpLnNlcSgpLm9iaihcbiAgICAgICAgICB0aGlzLmtleSgnaWQnKS5vYmppZCgpLFxuICAgICAgICAgIHRoaXMua2V5KCdrZGVwYXJhbXMnKS5zZXEoKS5vYmooXG4gICAgICAgICAgICB0aGlzLmtleSgnc2FsdCcpLm9jdHN0cigpLFxuICAgICAgICAgICAgdGhpcy5rZXkoJ2l0ZXJzJykuaW50KClcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRoaXMua2V5KCdjaXBoZXInKS5zZXEoKS5vYmooXG4gICAgICAgICAgdGhpcy5rZXkoJ2FsZ28nKS5vYmppZCgpLFxuICAgICAgICAgIHRoaXMua2V5KCdpdicpLm9jdHN0cigpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIHRoaXMua2V5KCdzdWJqZWN0UHJpdmF0ZUtleScpLm9jdHN0cigpXG4gIClcbn0pXG5cbmV4cG9ydHMuRW5jcnlwdGVkUHJpdmF0ZUtleSA9IEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvXG5cbnZhciBEU0FQcml2YXRlS2V5ID0gYXNuMS5kZWZpbmUoJ0RTQVByaXZhdGVLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3AnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncScpLmludCgpLFxuICAgIHRoaXMua2V5KCdnJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3B1Yl9rZXknKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpdl9rZXknKS5pbnQoKVxuICApXG59KVxuZXhwb3J0cy5EU0FQcml2YXRlS2V5ID0gRFNBUHJpdmF0ZUtleVxuXG5leHBvcnRzLkRTQXBhcmFtID0gYXNuMS5kZWZpbmUoJ0RTQXBhcmFtJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLmludCgpXG59KVxuXG52YXIgRUNQcml2YXRlS2V5ID0gYXNuMS5kZWZpbmUoJ0VDUHJpdmF0ZUtleScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3ZlcnNpb24nKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpdmF0ZUtleScpLm9jdHN0cigpLFxuICAgIHRoaXMua2V5KCdwYXJhbWV0ZXJzJykub3B0aW9uYWwoKS5leHBsaWNpdCgwKS51c2UoRUNQYXJhbWV0ZXJzKSxcbiAgICB0aGlzLmtleSgncHVibGljS2V5Jykub3B0aW9uYWwoKS5leHBsaWNpdCgxKS5iaXRzdHIoKVxuICApXG59KVxuZXhwb3J0cy5FQ1ByaXZhdGVLZXkgPSBFQ1ByaXZhdGVLZXlcblxudmFyIEVDUGFyYW1ldGVycyA9IGFzbjEuZGVmaW5lKCdFQ1BhcmFtZXRlcnMnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2hvaWNlKHtcbiAgICBuYW1lZEN1cnZlOiB0aGlzLm9iamlkKClcbiAgfSlcbn0pXG5cbmV4cG9ydHMuc2lnbmF0dXJlID0gYXNuMS5kZWZpbmUoJ3NpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3InKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncycpLmludCgpXG4gIClcbn0pXG4iLCIvLyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9SYW50YW5lbi9ub2RlLWR0bHMvYmxvYi8yNWE3ZGM4NjFiZGEzOGNmZWFjOTNhNzIzNTAwZWVhNGYwYWMyZTg2L0NlcnRpZmljYXRlLmpzXG4vLyB0aGFua3MgdG8gQFJhbnRhbmVuXG5cbid1c2Ugc3RyaWN0J1xuXG52YXIgYXNuID0gcmVxdWlyZSgnYXNuMS5qcycpXG5cbnZhciBUaW1lID0gYXNuLmRlZmluZSgnVGltZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jaG9pY2Uoe1xuICAgIHV0Y1RpbWU6IHRoaXMudXRjdGltZSgpLFxuICAgIGdlbmVyYWxUaW1lOiB0aGlzLmdlbnRpbWUoKVxuICB9KVxufSlcblxudmFyIEF0dHJpYnV0ZVR5cGVWYWx1ZSA9IGFzbi5kZWZpbmUoJ0F0dHJpYnV0ZVR5cGVWYWx1ZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3R5cGUnKS5vYmppZCgpLFxuICAgIHRoaXMua2V5KCd2YWx1ZScpLmFueSgpXG4gIClcbn0pXG5cbnZhciBBbGdvcml0aG1JZGVudGlmaWVyID0gYXNuLmRlZmluZSgnQWxnb3JpdGhtSWRlbnRpZmllcicsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLm9iamlkKCksXG4gICAgdGhpcy5rZXkoJ3BhcmFtZXRlcnMnKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdjdXJ2ZScpLm9iamlkKCkub3B0aW9uYWwoKVxuICApXG59KVxuXG52YXIgU3ViamVjdFB1YmxpY0tleUluZm8gPSBhc24uZGVmaW5lKCdTdWJqZWN0UHVibGljS2V5SW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFB1YmxpY0tleScpLmJpdHN0cigpXG4gIClcbn0pXG5cbnZhciBSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lID0gYXNuLmRlZmluZSgnUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXRvZihBdHRyaWJ1dGVUeXBlVmFsdWUpXG59KVxuXG52YXIgUkROU2VxdWVuY2UgPSBhc24uZGVmaW5lKCdSRE5TZXF1ZW5jZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXFvZihSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lKVxufSlcblxudmFyIE5hbWUgPSBhc24uZGVmaW5lKCdOYW1lJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLmNob2ljZSh7XG4gICAgcmRuU2VxdWVuY2U6IHRoaXMudXNlKFJETlNlcXVlbmNlKVxuICB9KVxufSlcblxudmFyIFZhbGlkaXR5ID0gYXNuLmRlZmluZSgnVmFsaWRpdHknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdub3RCZWZvcmUnKS51c2UoVGltZSksXG4gICAgdGhpcy5rZXkoJ25vdEFmdGVyJykudXNlKFRpbWUpXG4gIClcbn0pXG5cbnZhciBFeHRlbnNpb24gPSBhc24uZGVmaW5lKCdFeHRlbnNpb24nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdleHRuSUQnKS5vYmppZCgpLFxuICAgIHRoaXMua2V5KCdjcml0aWNhbCcpLmJvb2woKS5kZWYoZmFsc2UpLFxuICAgIHRoaXMua2V5KCdleHRuVmFsdWUnKS5vY3RzdHIoKVxuICApXG59KVxuXG52YXIgVEJTQ2VydGlmaWNhdGUgPSBhc24uZGVmaW5lKCdUQlNDZXJ0aWZpY2F0ZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3ZlcnNpb24nKS5leHBsaWNpdCgwKS5pbnQoKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdzZXJpYWxOdW1iZXInKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnc2lnbmF0dXJlJykudXNlKEFsZ29yaXRobUlkZW50aWZpZXIpLFxuICAgIHRoaXMua2V5KCdpc3N1ZXInKS51c2UoTmFtZSksXG4gICAgdGhpcy5rZXkoJ3ZhbGlkaXR5JykudXNlKFZhbGlkaXR5KSxcbiAgICB0aGlzLmtleSgnc3ViamVjdCcpLnVzZShOYW1lKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFB1YmxpY0tleUluZm8nKS51c2UoU3ViamVjdFB1YmxpY0tleUluZm8pLFxuICAgIHRoaXMua2V5KCdpc3N1ZXJVbmlxdWVJRCcpLmltcGxpY2l0KDEpLmJpdHN0cigpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RVbmlxdWVJRCcpLmltcGxpY2l0KDIpLmJpdHN0cigpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ2V4dGVuc2lvbnMnKS5leHBsaWNpdCgzKS5zZXFvZihFeHRlbnNpb24pLm9wdGlvbmFsKClcbiAgKVxufSlcblxudmFyIFg1MDlDZXJ0aWZpY2F0ZSA9IGFzbi5kZWZpbmUoJ1g1MDlDZXJ0aWZpY2F0ZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3Ric0NlcnRpZmljYXRlJykudXNlKFRCU0NlcnRpZmljYXRlKSxcbiAgICB0aGlzLmtleSgnc2lnbmF0dXJlQWxnb3JpdGhtJykudXNlKEFsZ29yaXRobUlkZW50aWZpZXIpLFxuICAgIHRoaXMua2V5KCdzaWduYXR1cmVWYWx1ZScpLmJpdHN0cigpXG4gIClcbn0pXG5cbm1vZHVsZS5leHBvcnRzID0gWDUwOUNlcnRpZmljYXRlXG4iLCIvLyBhZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FwYXRpbC9wZW1zdHJpcFxudmFyIGZpbmRQcm9jID0gL1Byb2MtVHlwZTogNCxFTkNSWVBURURbXFxuXFxyXStERUstSW5mbzogQUVTLSgoPzoxMjgpfCg/OjE5Mil8KD86MjU2KSktQ0JDLChbMC05QS1IXSspW1xcblxccl0rKFswLTlBLXpcXG5cXHIrLz1dKylbXFxuXFxyXSsvbVxudmFyIHN0YXJ0UmVnZXggPSAvXi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tL21cbnZhciBmdWxsUmVnZXggPSAvXi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tKFswLTlBLXpcXG5cXHIrLz1dKyktLS0tLUVORCBcXDEtLS0tLSQvbVxudmFyIGV2cCA9IHJlcXVpcmUoJ2V2cF9ieXRlc3Rva2V5JylcbnZhciBjaXBoZXJzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1hZXMnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChva2V5LCBwYXNzd29yZCkge1xuICB2YXIga2V5ID0gb2tleS50b1N0cmluZygpXG4gIHZhciBtYXRjaCA9IGtleS5tYXRjaChmaW5kUHJvYylcbiAgdmFyIGRlY3J5cHRlZFxuICBpZiAoIW1hdGNoKSB7XG4gICAgdmFyIG1hdGNoMiA9IGtleS5tYXRjaChmdWxsUmVnZXgpXG4gICAgZGVjcnlwdGVkID0gQnVmZmVyLmZyb20obWF0Y2gyWzJdLnJlcGxhY2UoL1tcXHJcXG5dL2csICcnKSwgJ2Jhc2U2NCcpXG4gIH0gZWxzZSB7XG4gICAgdmFyIHN1aXRlID0gJ2FlcycgKyBtYXRjaFsxXVxuICAgIHZhciBpdiA9IEJ1ZmZlci5mcm9tKG1hdGNoWzJdLCAnaGV4JylcbiAgICB2YXIgY2lwaGVyVGV4dCA9IEJ1ZmZlci5mcm9tKG1hdGNoWzNdLnJlcGxhY2UoL1tcXHJcXG5dL2csICcnKSwgJ2Jhc2U2NCcpXG4gICAgdmFyIGNpcGhlcktleSA9IGV2cChwYXNzd29yZCwgaXYuc2xpY2UoMCwgOCksIHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpLmtleVxuICAgIHZhciBvdXQgPSBbXVxuICAgIHZhciBjaXBoZXIgPSBjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGNpcGhlcktleSwgaXYpXG4gICAgb3V0LnB1c2goY2lwaGVyLnVwZGF0ZShjaXBoZXJUZXh0KSlcbiAgICBvdXQucHVzaChjaXBoZXIuZmluYWwoKSlcbiAgICBkZWNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KG91dClcbiAgfVxuICB2YXIgdGFnID0ga2V5Lm1hdGNoKHN0YXJ0UmVnZXgpWzFdXG4gIHJldHVybiB7XG4gICAgdGFnOiB0YWcsXG4gICAgZGF0YTogZGVjcnlwdGVkXG4gIH1cbn1cbiIsInZhciBhc24xID0gcmVxdWlyZSgnLi9hc24xJylcbnZhciBhZXNpZCA9IHJlcXVpcmUoJy4vYWVzaWQuanNvbicpXG52YXIgZml4UHJvYyA9IHJlcXVpcmUoJy4vZml4UHJvYycpXG52YXIgY2lwaGVycyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzJylcbnZhciBjb21wYXQgPSByZXF1aXJlKCdwYmtkZjInKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlS2V5c1xuXG5mdW5jdGlvbiBwYXJzZUtleXMgKGJ1ZmZlcikge1xuICB2YXIgcGFzc3dvcmRcbiAgaWYgKHR5cGVvZiBidWZmZXIgPT09ICdvYmplY3QnICYmICFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSkge1xuICAgIHBhc3N3b3JkID0gYnVmZmVyLnBhc3NwaHJhc2VcbiAgICBidWZmZXIgPSBidWZmZXIua2V5XG4gIH1cbiAgaWYgKHR5cGVvZiBidWZmZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgYnVmZmVyID0gQnVmZmVyLmZyb20oYnVmZmVyKVxuICB9XG5cbiAgdmFyIHN0cmlwcGVkID0gZml4UHJvYyhidWZmZXIsIHBhc3N3b3JkKVxuXG4gIHZhciB0eXBlID0gc3RyaXBwZWQudGFnXG4gIHZhciBkYXRhID0gc3RyaXBwZWQuZGF0YVxuICB2YXIgc3VidHlwZSwgbmRhdGFcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnQ0VSVElGSUNBVEUnOlxuICAgICAgbmRhdGEgPSBhc24xLmNlcnRpZmljYXRlLmRlY29kZShkYXRhLCAnZGVyJykudGJzQ2VydGlmaWNhdGUuc3ViamVjdFB1YmxpY0tleUluZm9cbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICBjYXNlICdQVUJMSUMgS0VZJzpcbiAgICAgIGlmICghbmRhdGEpIHtcbiAgICAgICAgbmRhdGEgPSBhc24xLlB1YmxpY0tleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICB9XG4gICAgICBzdWJ0eXBlID0gbmRhdGEuYWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKCcuJylcbiAgICAgIHN3aXRjaCAoc3VidHlwZSkge1xuICAgICAgICBjYXNlICcxLjIuODQwLjExMzU0OS4xLjEuMSc6XG4gICAgICAgICAgcmV0dXJuIGFzbjEuUlNBUHVibGljS2V5LmRlY29kZShuZGF0YS5zdWJqZWN0UHVibGljS2V5LmRhdGEsICdkZXInKVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQ1LjIuMSc6XG4gICAgICAgICAgbmRhdGEuc3ViamVjdFByaXZhdGVLZXkgPSBuZGF0YS5zdWJqZWN0UHVibGljS2V5XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdlYycsXG4gICAgICAgICAgICBkYXRhOiBuZGF0YVxuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0MC40LjEnOlxuICAgICAgICAgIG5kYXRhLmFsZ29yaXRobS5wYXJhbXMucHViX2tleSA9IGFzbjEuRFNBcGFyYW0uZGVjb2RlKG5kYXRhLnN1YmplY3RQdWJsaWNLZXkuZGF0YSwgJ2RlcicpXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdkc2EnLFxuICAgICAgICAgICAgZGF0YTogbmRhdGEuYWxnb3JpdGhtLnBhcmFtc1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSBpZCAnICsgc3VidHlwZSlcbiAgICAgIH1cbiAgICAgIC8vIHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgdHlwZSAnICsgdHlwZSlcbiAgICBjYXNlICdFTkNSWVBURUQgUFJJVkFURSBLRVknOlxuICAgICAgZGF0YSA9IGFzbjEuRW5jcnlwdGVkUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICBkYXRhID0gZGVjcnlwdChkYXRhLCBwYXNzd29yZClcbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICBjYXNlICdQUklWQVRFIEtFWSc6XG4gICAgICBuZGF0YSA9IGFzbjEuUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICBzdWJ0eXBlID0gbmRhdGEuYWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKCcuJylcbiAgICAgIHN3aXRjaCAoc3VidHlwZSkge1xuICAgICAgICBjYXNlICcxLjIuODQwLjExMzU0OS4xLjEuMSc6XG4gICAgICAgICAgcmV0dXJuIGFzbjEuUlNBUHJpdmF0ZUtleS5kZWNvZGUobmRhdGEuc3ViamVjdFByaXZhdGVLZXksICdkZXInKVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQ1LjIuMSc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGN1cnZlOiBuZGF0YS5hbGdvcml0aG0uY3VydmUsXG4gICAgICAgICAgICBwcml2YXRlS2V5OiBhc24xLkVDUHJpdmF0ZUtleS5kZWNvZGUobmRhdGEuc3ViamVjdFByaXZhdGVLZXksICdkZXInKS5wcml2YXRlS2V5XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQwLjQuMSc6XG4gICAgICAgICAgbmRhdGEuYWxnb3JpdGhtLnBhcmFtcy5wcml2X2tleSA9IGFzbjEuRFNBcGFyYW0uZGVjb2RlKG5kYXRhLnN1YmplY3RQcml2YXRlS2V5LCAnZGVyJylcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2RzYScsXG4gICAgICAgICAgICBwYXJhbXM6IG5kYXRhLmFsZ29yaXRobS5wYXJhbXNcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgaWQgJyArIHN1YnR5cGUpXG4gICAgICB9XG4gICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IHR5cGUgJyArIHR5cGUpXG4gICAgY2FzZSAnUlNBIFBVQkxJQyBLRVknOlxuICAgICAgcmV0dXJuIGFzbjEuUlNBUHVibGljS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICBjYXNlICdSU0EgUFJJVkFURSBLRVknOlxuICAgICAgcmV0dXJuIGFzbjEuUlNBUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgY2FzZSAnRFNBIFBSSVZBVEUgS0VZJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdkc2EnLFxuICAgICAgICBwYXJhbXM6IGFzbjEuRFNBUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICB9XG4gICAgY2FzZSAnRUMgUFJJVkFURSBLRVknOlxuICAgICAgZGF0YSA9IGFzbjEuRUNQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGN1cnZlOiBkYXRhLnBhcmFtZXRlcnMudmFsdWUsXG4gICAgICAgIHByaXZhdGVLZXk6IGRhdGEucHJpdmF0ZUtleVxuICAgICAgfVxuICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgdHlwZSAnICsgdHlwZSlcbiAgfVxufVxucGFyc2VLZXlzLnNpZ25hdHVyZSA9IGFzbjEuc2lnbmF0dXJlXG5mdW5jdGlvbiBkZWNyeXB0IChkYXRhLCBwYXNzd29yZCkge1xuICB2YXIgc2FsdCA9IGRhdGEuYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5zYWx0XG4gIHZhciBpdGVycyA9IHBhcnNlSW50KGRhdGEuYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5pdGVycy50b1N0cmluZygpLCAxMClcbiAgdmFyIGFsZ28gPSBhZXNpZFtkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5hbGdvLmpvaW4oJy4nKV1cbiAgdmFyIGl2ID0gZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuaXZcbiAgdmFyIGNpcGhlclRleHQgPSBkYXRhLnN1YmplY3RQcml2YXRlS2V5XG4gIHZhciBrZXlsZW4gPSBwYXJzZUludChhbGdvLnNwbGl0KCctJylbMV0sIDEwKSAvIDhcbiAgdmFyIGtleSA9IGNvbXBhdC5wYmtkZjJTeW5jKHBhc3N3b3JkLCBzYWx0LCBpdGVycywga2V5bGVuLCAnc2hhMScpXG4gIHZhciBjaXBoZXIgPSBjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXYoYWxnbywga2V5LCBpdilcbiAgdmFyIG91dCA9IFtdXG4gIG91dC5wdXNoKGNpcGhlci51cGRhdGUoY2lwaGVyVGV4dCkpXG4gIG91dC5wdXNoKGNpcGhlci5maW5hbCgpKVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG4iLCJleHBvcnRzLnBia2RmMiA9IHJlcXVpcmUoJy4vbGliL2FzeW5jJylcbmV4cG9ydHMucGJrZGYyU3luYyA9IHJlcXVpcmUoJy4vbGliL3N5bmMnKVxuIiwidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBjaGVja1BhcmFtZXRlcnMgPSByZXF1aXJlKCcuL3ByZWNvbmRpdGlvbicpXG52YXIgZGVmYXVsdEVuY29kaW5nID0gcmVxdWlyZSgnLi9kZWZhdWx0LWVuY29kaW5nJylcbnZhciBzeW5jID0gcmVxdWlyZSgnLi9zeW5jJylcbnZhciB0b0J1ZmZlciA9IHJlcXVpcmUoJy4vdG8tYnVmZmVyJylcblxudmFyIFpFUk9fQlVGXG52YXIgc3VidGxlID0gZ2xvYmFsLmNyeXB0byAmJiBnbG9iYWwuY3J5cHRvLnN1YnRsZVxudmFyIHRvQnJvd3NlciA9IHtcbiAgc2hhOiAnU0hBLTEnLFxuICAnc2hhLTEnOiAnU0hBLTEnLFxuICBzaGExOiAnU0hBLTEnLFxuICBzaGEyNTY6ICdTSEEtMjU2JyxcbiAgJ3NoYS0yNTYnOiAnU0hBLTI1NicsXG4gIHNoYTM4NDogJ1NIQS0zODQnLFxuICAnc2hhLTM4NCc6ICdTSEEtMzg0JyxcbiAgJ3NoYS01MTInOiAnU0hBLTUxMicsXG4gIHNoYTUxMjogJ1NIQS01MTInXG59XG52YXIgY2hlY2tzID0gW11cbmZ1bmN0aW9uIGNoZWNrTmF0aXZlIChhbGdvKSB7XG4gIGlmIChnbG9iYWwucHJvY2VzcyAmJiAhZ2xvYmFsLnByb2Nlc3MuYnJvd3Nlcikge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpXG4gIH1cbiAgaWYgKCFzdWJ0bGUgfHwgIXN1YnRsZS5pbXBvcnRLZXkgfHwgIXN1YnRsZS5kZXJpdmVCaXRzKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSlcbiAgfVxuICBpZiAoY2hlY2tzW2FsZ29dICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gY2hlY2tzW2FsZ29dXG4gIH1cbiAgWkVST19CVUYgPSBaRVJPX0JVRiB8fCBCdWZmZXIuYWxsb2MoOClcbiAgdmFyIHByb20gPSBicm93c2VyUGJrZGYyKFpFUk9fQlVGLCBaRVJPX0JVRiwgMTAsIDEyOCwgYWxnbylcbiAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gIGNoZWNrc1thbGdvXSA9IHByb21cbiAgcmV0dXJuIHByb21cbn1cbnZhciBuZXh0VGlja1xuZnVuY3Rpb24gZ2V0TmV4dFRpY2sgKCkge1xuICBpZiAobmV4dFRpY2spIHtcbiAgICByZXR1cm4gbmV4dFRpY2tcbiAgfVxuICBpZiAoZ2xvYmFsLnByb2Nlc3MgJiYgZ2xvYmFsLnByb2Nlc3MubmV4dFRpY2spIHtcbiAgICBuZXh0VGljayA9IGdsb2JhbC5wcm9jZXNzLm5leHRUaWNrXG4gIH0gZWxzZSBpZiAoZ2xvYmFsLnF1ZXVlTWljcm90YXNrKSB7XG4gICAgbmV4dFRpY2sgPSBnbG9iYWwucXVldWVNaWNyb3Rhc2tcbiAgfSBlbHNlIGlmIChnbG9iYWwuc2V0SW1tZWRpYXRlKSB7XG4gICAgbmV4dFRpY2sgPSBnbG9iYWwuc2V0SW1tZWRpYXRlXG4gIH0gZWxzZSB7XG4gICAgbmV4dFRpY2sgPSBnbG9iYWwuc2V0VGltZW91dFxuICB9XG4gIHJldHVybiBuZXh0VGlja1xufVxuZnVuY3Rpb24gYnJvd3NlclBia2RmMiAocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGxlbmd0aCwgYWxnbykge1xuICByZXR1cm4gc3VidGxlLmltcG9ydEtleShcbiAgICAncmF3JywgcGFzc3dvcmQsIHsgbmFtZTogJ1BCS0RGMicgfSwgZmFsc2UsIFsnZGVyaXZlQml0cyddXG4gICkudGhlbihmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHN1YnRsZS5kZXJpdmVCaXRzKHtcbiAgICAgIG5hbWU6ICdQQktERjInLFxuICAgICAgc2FsdDogc2FsdCxcbiAgICAgIGl0ZXJhdGlvbnM6IGl0ZXJhdGlvbnMsXG4gICAgICBoYXNoOiB7XG4gICAgICAgIG5hbWU6IGFsZ29cbiAgICAgIH1cbiAgICB9LCBrZXksIGxlbmd0aCA8PCAzKVxuICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20ocmVzKVxuICB9KVxufVxuXG5mdW5jdGlvbiByZXNvbHZlUHJvbWlzZSAocHJvbWlzZSwgY2FsbGJhY2spIHtcbiAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChvdXQpIHtcbiAgICBnZXROZXh0VGljaygpKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxiYWNrKG51bGwsIG91dClcbiAgICB9KVxuICB9LCBmdW5jdGlvbiAoZSkge1xuICAgIGdldE5leHRUaWNrKCkoZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbGJhY2soZSlcbiAgICB9KVxuICB9KVxufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0LCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIGRpZ2VzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gZGlnZXN0XG4gICAgZGlnZXN0ID0gdW5kZWZpbmVkXG4gIH1cblxuICBkaWdlc3QgPSBkaWdlc3QgfHwgJ3NoYTEnXG4gIHZhciBhbGdvID0gdG9Ccm93c2VyW2RpZ2VzdC50b0xvd2VyQ2FzZSgpXVxuXG4gIGlmICghYWxnbyB8fCB0eXBlb2YgZ2xvYmFsLlByb21pc2UgIT09ICdmdW5jdGlvbicpIHtcbiAgICBnZXROZXh0VGljaygpKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBvdXRcbiAgICAgIHRyeSB7XG4gICAgICAgIG91dCA9IHN5bmMocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0KVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2soZSlcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKG51bGwsIG91dClcbiAgICB9KVxuICAgIHJldHVyblxuICB9XG5cbiAgY2hlY2tQYXJhbWV0ZXJzKGl0ZXJhdGlvbnMsIGtleWxlbilcbiAgcGFzc3dvcmQgPSB0b0J1ZmZlcihwYXNzd29yZCwgZGVmYXVsdEVuY29kaW5nLCAnUGFzc3dvcmQnKVxuICBzYWx0ID0gdG9CdWZmZXIoc2FsdCwgZGVmYXVsdEVuY29kaW5nLCAnU2FsdCcpXG4gIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBFcnJvcignTm8gY2FsbGJhY2sgcHJvdmlkZWQgdG8gcGJrZGYyJylcblxuICByZXNvbHZlUHJvbWlzZShjaGVja05hdGl2ZShhbGdvKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7XG4gICAgaWYgKHJlc3ApIHJldHVybiBicm93c2VyUGJrZGYyKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGFsZ28pXG5cbiAgICByZXR1cm4gc3luYyhwYXNzd29yZCwgc2FsdCwgaXRlcmF0aW9ucywga2V5bGVuLCBkaWdlc3QpXG4gIH0pLCBjYWxsYmFjaylcbn1cbiIsInZhciBkZWZhdWx0RW5jb2Rpbmdcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5pZiAoZ2xvYmFsLnByb2Nlc3MgJiYgZ2xvYmFsLnByb2Nlc3MuYnJvd3Nlcikge1xuICBkZWZhdWx0RW5jb2RpbmcgPSAndXRmLTgnXG59IGVsc2UgaWYgKGdsb2JhbC5wcm9jZXNzICYmIGdsb2JhbC5wcm9jZXNzLnZlcnNpb24pIHtcbiAgdmFyIHBWZXJzaW9uTWFqb3IgPSBwYXJzZUludChwcm9jZXNzLnZlcnNpb24uc3BsaXQoJy4nKVswXS5zbGljZSgxKSwgMTApXG5cbiAgZGVmYXVsdEVuY29kaW5nID0gcFZlcnNpb25NYWpvciA+PSA2ID8gJ3V0Zi04JyA6ICdiaW5hcnknXG59IGVsc2Uge1xuICBkZWZhdWx0RW5jb2RpbmcgPSAndXRmLTgnXG59XG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRFbmNvZGluZ1xuIiwidmFyIE1BWF9BTExPQyA9IE1hdGgucG93KDIsIDMwKSAtIDEgLy8gZGVmYXVsdCBpbiBpb2pzXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdGlvbnMsIGtleWxlbikge1xuICBpZiAodHlwZW9mIGl0ZXJhdGlvbnMgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSXRlcmF0aW9ucyBub3QgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKGl0ZXJhdGlvbnMgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQmFkIGl0ZXJhdGlvbnMnKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBrZXlsZW4gIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignS2V5IGxlbmd0aCBub3QgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKGtleWxlbiA8IDAgfHwga2V5bGVuID4gTUFYX0FMTE9DIHx8IGtleWxlbiAhPT0ga2V5bGVuKSB7IC8qIGVzbGludCBuby1zZWxmLWNvbXBhcmU6IDAgKi9cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCYWQga2V5IGxlbmd0aCcpXG4gIH1cbn1cbiIsInZhciBtZDUgPSByZXF1aXJlKCdjcmVhdGUtaGFzaC9tZDUnKVxudmFyIFJJUEVNRDE2MCA9IHJlcXVpcmUoJ3JpcGVtZDE2MCcpXG52YXIgc2hhID0gcmVxdWlyZSgnc2hhLmpzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgY2hlY2tQYXJhbWV0ZXJzID0gcmVxdWlyZSgnLi9wcmVjb25kaXRpb24nKVxudmFyIGRlZmF1bHRFbmNvZGluZyA9IHJlcXVpcmUoJy4vZGVmYXVsdC1lbmNvZGluZycpXG52YXIgdG9CdWZmZXIgPSByZXF1aXJlKCcuL3RvLWJ1ZmZlcicpXG5cbnZhciBaRVJPUyA9IEJ1ZmZlci5hbGxvYygxMjgpXG52YXIgc2l6ZXMgPSB7XG4gIG1kNTogMTYsXG4gIHNoYTE6IDIwLFxuICBzaGEyMjQ6IDI4LFxuICBzaGEyNTY6IDMyLFxuICBzaGEzODQ6IDQ4LFxuICBzaGE1MTI6IDY0LFxuICBybWQxNjA6IDIwLFxuICByaXBlbWQxNjA6IDIwXG59XG5cbmZ1bmN0aW9uIEhtYWMgKGFsZywga2V5LCBzYWx0TGVuKSB7XG4gIHZhciBoYXNoID0gZ2V0RGlnZXN0KGFsZylcbiAgdmFyIGJsb2Nrc2l6ZSA9IChhbGcgPT09ICdzaGE1MTInIHx8IGFsZyA9PT0gJ3NoYTM4NCcpID8gMTI4IDogNjRcblxuICBpZiAoa2V5Lmxlbmd0aCA+IGJsb2Nrc2l6ZSkge1xuICAgIGtleSA9IGhhc2goa2V5KVxuICB9IGVsc2UgaWYgKGtleS5sZW5ndGggPCBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBCdWZmZXIuY29uY2F0KFtrZXksIFpFUk9TXSwgYmxvY2tzaXplKVxuICB9XG5cbiAgdmFyIGlwYWQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYmxvY2tzaXplICsgc2l6ZXNbYWxnXSlcbiAgdmFyIG9wYWQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYmxvY2tzaXplICsgc2l6ZXNbYWxnXSlcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja3NpemU7IGkrKykge1xuICAgIGlwYWRbaV0gPSBrZXlbaV0gXiAweDM2XG4gICAgb3BhZFtpXSA9IGtleVtpXSBeIDB4NUNcbiAgfVxuXG4gIHZhciBpcGFkMSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja3NpemUgKyBzYWx0TGVuICsgNClcbiAgaXBhZC5jb3B5KGlwYWQxLCAwLCAwLCBibG9ja3NpemUpXG4gIHRoaXMuaXBhZDEgPSBpcGFkMVxuICB0aGlzLmlwYWQyID0gaXBhZFxuICB0aGlzLm9wYWQgPSBvcGFkXG4gIHRoaXMuYWxnID0gYWxnXG4gIHRoaXMuYmxvY2tzaXplID0gYmxvY2tzaXplXG4gIHRoaXMuaGFzaCA9IGhhc2hcbiAgdGhpcy5zaXplID0gc2l6ZXNbYWxnXVxufVxuXG5IbWFjLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoZGF0YSwgaXBhZCkge1xuICBkYXRhLmNvcHkoaXBhZCwgdGhpcy5ibG9ja3NpemUpXG4gIHZhciBoID0gdGhpcy5oYXNoKGlwYWQpXG4gIGguY29weSh0aGlzLm9wYWQsIHRoaXMuYmxvY2tzaXplKVxuICByZXR1cm4gdGhpcy5oYXNoKHRoaXMub3BhZClcbn1cblxuZnVuY3Rpb24gZ2V0RGlnZXN0IChhbGcpIHtcbiAgZnVuY3Rpb24gc2hhRnVuYyAoZGF0YSkge1xuICAgIHJldHVybiBzaGEoYWxnKS51cGRhdGUoZGF0YSkuZGlnZXN0KClcbiAgfVxuICBmdW5jdGlvbiBybWQxNjBGdW5jIChkYXRhKSB7XG4gICAgcmV0dXJuIG5ldyBSSVBFTUQxNjAoKS51cGRhdGUoZGF0YSkuZGlnZXN0KClcbiAgfVxuXG4gIGlmIChhbGcgPT09ICdybWQxNjAnIHx8IGFsZyA9PT0gJ3JpcGVtZDE2MCcpIHJldHVybiBybWQxNjBGdW5jXG4gIGlmIChhbGcgPT09ICdtZDUnKSByZXR1cm4gbWQ1XG4gIHJldHVybiBzaGFGdW5jXG59XG5cbmZ1bmN0aW9uIHBia2RmMiAocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0KSB7XG4gIGNoZWNrUGFyYW1ldGVycyhpdGVyYXRpb25zLCBrZXlsZW4pXG4gIHBhc3N3b3JkID0gdG9CdWZmZXIocGFzc3dvcmQsIGRlZmF1bHRFbmNvZGluZywgJ1Bhc3N3b3JkJylcbiAgc2FsdCA9IHRvQnVmZmVyKHNhbHQsIGRlZmF1bHRFbmNvZGluZywgJ1NhbHQnKVxuXG4gIGRpZ2VzdCA9IGRpZ2VzdCB8fCAnc2hhMSdcblxuICB2YXIgaG1hYyA9IG5ldyBIbWFjKGRpZ2VzdCwgcGFzc3dvcmQsIHNhbHQubGVuZ3RoKVxuXG4gIHZhciBESyA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShrZXlsZW4pXG4gIHZhciBibG9jazEgPSBCdWZmZXIuYWxsb2NVbnNhZmUoc2FsdC5sZW5ndGggKyA0KVxuICBzYWx0LmNvcHkoYmxvY2sxLCAwLCAwLCBzYWx0Lmxlbmd0aClcblxuICB2YXIgZGVzdFBvcyA9IDBcbiAgdmFyIGhMZW4gPSBzaXplc1tkaWdlc3RdXG4gIHZhciBsID0gTWF0aC5jZWlsKGtleWxlbiAvIGhMZW4pXG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gbDsgaSsrKSB7XG4gICAgYmxvY2sxLndyaXRlVUludDMyQkUoaSwgc2FsdC5sZW5ndGgpXG5cbiAgICB2YXIgVCA9IGhtYWMucnVuKGJsb2NrMSwgaG1hYy5pcGFkMSlcbiAgICB2YXIgVSA9IFRcblxuICAgIGZvciAodmFyIGogPSAxOyBqIDwgaXRlcmF0aW9uczsgaisrKSB7XG4gICAgICBVID0gaG1hYy5ydW4oVSwgaG1hYy5pcGFkMilcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaExlbjsgaysrKSBUW2tdIF49IFVba11cbiAgICB9XG5cbiAgICBULmNvcHkoREssIGRlc3RQb3MpXG4gICAgZGVzdFBvcyArPSBoTGVuXG4gIH1cblxuICByZXR1cm4gREtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwYmtkZjJcbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGluZywgZW5jb2RpbmcsIG5hbWUpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih0aGluZykpIHtcbiAgICByZXR1cm4gdGhpbmdcbiAgfSBlbHNlIGlmICh0eXBlb2YgdGhpbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcodGhpbmcpKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaW5nLmJ1ZmZlcilcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKG5hbWUgKyAnIG11c3QgYmUgYSBzdHJpbmcsIGEgQnVmZmVyLCBhIHR5cGVkIGFycmF5IG9yIGEgRGF0YVZpZXcnKVxuICB9XG59XG4iLCIvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcbnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLy8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHViIGl0XG4vLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXNcbi8vIHdyYXBwZWQgaW4gc3RyaWN0IG1vZGUgY29kZSB3aGljaCBkb2Vzbid0IGRlZmluZSBhbnkgZ2xvYmFscy4gIEl0J3MgaW5zaWRlIGFcbi8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXG5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dDtcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xlYXJUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgIH1cbn0gKCkpXG5mdW5jdGlvbiBydW5UaW1lb3V0KGZ1bikge1xuICAgIGlmIChjYWNoZWRTZXRUaW1lb3V0ID09PSBzZXRUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2FjaGVkU2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGRlZmF1bHRDbGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yLlxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG59XG52YXIgcXVldWUgPSBbXTtcbnZhciBkcmFpbmluZyA9IGZhbHNlO1xudmFyIGN1cnJlbnRRdWV1ZTtcbnZhciBxdWV1ZUluZGV4ID0gLTE7XG5cbmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHtcbiAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50UXVldWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIGRyYWluUXVldWUoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuXG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAgICAgIHF1ZXVlID0gW107XG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7XG59XG5cbnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuICAgIH1cbn07XG5cbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRPbmNlTGlzdGVuZXIgPSBub29wO1xuXG5wcm9jZXNzLmxpc3RlbmVycyA9IGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBbXSB9XG5cbnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcblxucHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuIiwiZXhwb3J0cy5wdWJsaWNFbmNyeXB0ID0gcmVxdWlyZSgnLi9wdWJsaWNFbmNyeXB0JylcbmV4cG9ydHMucHJpdmF0ZURlY3J5cHQgPSByZXF1aXJlKCcuL3ByaXZhdGVEZWNyeXB0JylcblxuZXhwb3J0cy5wcml2YXRlRW5jcnlwdCA9IGZ1bmN0aW9uIHByaXZhdGVFbmNyeXB0IChrZXksIGJ1Zikge1xuICByZXR1cm4gZXhwb3J0cy5wdWJsaWNFbmNyeXB0KGtleSwgYnVmLCB0cnVlKVxufVxuXG5leHBvcnRzLnB1YmxpY0RlY3J5cHQgPSBmdW5jdGlvbiBwdWJsaWNEZWNyeXB0IChrZXksIGJ1Zikge1xuICByZXR1cm4gZXhwb3J0cy5wcml2YXRlRGVjcnlwdChrZXksIGJ1ZiwgdHJ1ZSlcbn1cbiIsInZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHNlZWQsIGxlbikge1xuICB2YXIgdCA9IEJ1ZmZlci5hbGxvYygwKVxuICB2YXIgaSA9IDBcbiAgdmFyIGNcbiAgd2hpbGUgKHQubGVuZ3RoIDwgbGVuKSB7XG4gICAgYyA9IGkyb3BzKGkrKylcbiAgICB0ID0gQnVmZmVyLmNvbmNhdChbdCwgY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShzZWVkKS51cGRhdGUoYykuZGlnZXN0KCldKVxuICB9XG4gIHJldHVybiB0LnNsaWNlKDAsIGxlbilcbn1cblxuZnVuY3Rpb24gaTJvcHMgKGMpIHtcbiAgdmFyIG91dCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSg0KVxuICBvdXQud3JpdGVVSW50MzJCRShjLCAwKVxuICByZXR1cm4gb3V0XG59XG4iLCIoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gVXRpbHNcbiAgZnVuY3Rpb24gYXNzZXJ0ICh2YWwsIG1zZykge1xuICAgIGlmICghdmFsKSB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG4gIH1cblxuICAvLyBDb3VsZCB1c2UgYGluaGVyaXRzYCBtb2R1bGUsIGJ1dCBkb24ndCB3YW50IHRvIG1vdmUgZnJvbSBzaW5nbGUgZmlsZVxuICAvLyBhcmNoaXRlY3R1cmUgeWV0LlxuICBmdW5jdGlvbiBpbmhlcml0cyAoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3I7XG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge307XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZTtcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpO1xuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvcjtcbiAgfVxuXG4gIC8vIEJOXG5cbiAgZnVuY3Rpb24gQk4gKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKEJOLmlzQk4obnVtYmVyKSkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB0aGlzLndvcmRzID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICAvLyBSZWR1Y3Rpb24gY29udGV4dFxuICAgIHRoaXMucmVkID0gbnVsbDtcblxuICAgIGlmIChudW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGlmIChiYXNlID09PSAnbGUnIHx8IGJhc2UgPT09ICdiZScpIHtcbiAgICAgICAgZW5kaWFuID0gYmFzZTtcbiAgICAgICAgYmFzZSA9IDEwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbml0KG51bWJlciB8fCAwLCBiYXNlIHx8IDEwLCBlbmRpYW4gfHwgJ2JlJyk7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gQk47XG4gIH0gZWxzZSB7XG4gICAgZXhwb3J0cy5CTiA9IEJOO1xuICB9XG5cbiAgQk4uQk4gPSBCTjtcbiAgQk4ud29yZFNpemUgPSAyNjtcblxuICB2YXIgQnVmZmVyO1xuICB0cnkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIEJ1ZmZlciA9IHdpbmRvdy5CdWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPCBudW1iZXIubGVuZ3RoKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gMTYpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VIZXgobnVtYmVyLCBzdGFydCwgZW5kaWFuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3BhcnNlQmFzZShudW1iZXIsIGJhc2UsIHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXROdW1iZXIgPSBmdW5jdGlvbiBfaW5pdE51bWJlciAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICBudW1iZXIgPSAtbnVtYmVyO1xuICAgIH1cbiAgICBpZiAobnVtYmVyIDwgMHg0MDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyBudW1iZXIgJiAweDNmZmZmZmYgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKG51bWJlciA8IDB4MTAwMDAwMDAwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmZcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChudW1iZXIgPCAweDIwMDAwMDAwMDAwMDAwKTsgLy8gMiBeIDUzICh1bnNhZmUpXG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmLFxuICAgICAgICAxXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAzO1xuICAgIH1cblxuICAgIGlmIChlbmRpYW4gIT09ICdsZScpIHJldHVybjtcblxuICAgIC8vIFJldmVyc2UgdGhlIGJ5dGVzXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdEFycmF5ID0gZnVuY3Rpb24gX2luaXRBcnJheSAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICAvLyBQZXJoYXBzIGEgVWludDhBcnJheVxuICAgIGFzc2VydCh0eXBlb2YgbnVtYmVyLmxlbmd0aCA9PT0gJ251bWJlcicpO1xuICAgIGlmIChudW1iZXIubGVuZ3RoIDw9IDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKG51bWJlci5sZW5ndGggLyAzKTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIHZhciBqLCB3O1xuICAgIHZhciBvZmYgPSAwO1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxLCBqID0gMDsgaSA+PSAwOyBpIC09IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSAtIDFdIDw8IDgpIHwgKG51bWJlcltpIC0gMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgKyAxXSA8PCA4KSB8IChudW1iZXJbaSArIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4NEJpdHMgKHN0cmluZywgaW5kZXgpIHtcbiAgICB2YXIgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAvLyAnQScgLSAnRidcbiAgICBpZiAoYyA+PSA2NSAmJiBjIDw9IDcwKSB7XG4gICAgICByZXR1cm4gYyAtIDU1O1xuICAgIC8vICdhJyAtICdmJ1xuICAgIH0gZWxzZSBpZiAoYyA+PSA5NyAmJiBjIDw9IDEwMikge1xuICAgICAgcmV0dXJuIGMgLSA4NztcbiAgICAvLyAnMCcgLSAnOSdcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChjIC0gNDgpICYgMHhmO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4Qnl0ZSAoc3RyaW5nLCBsb3dlckJvdW5kLCBpbmRleCkge1xuICAgIHZhciByID0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4KTtcbiAgICBpZiAoaW5kZXggLSAxID49IGxvd2VyQm91bmQpIHtcbiAgICAgIHIgfD0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4IC0gMSkgPDwgNDtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlSGV4ID0gZnVuY3Rpb24gX3BhcnNlSGV4IChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICAvLyAyNC1iaXRzIGNodW5rc1xuICAgIHZhciBvZmYgPSAwO1xuICAgIHZhciBqID0gMDtcblxuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyBpIC09IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFyc2VMZW5ndGggPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgICBmb3IgKGkgPSBwYXJzZUxlbmd0aCAlIDIgPT09IDAgPyBzdGFydCArIDEgOiBzdGFydDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlQmFzZSAoc3RyLCBzdGFydCwgZW5kLCBtdWwpIHtcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKHN0ci5sZW5ndGgsIGVuZCk7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBjID0gc3RyLmNoYXJDb2RlQXQoaSkgLSA0ODtcblxuICAgICAgciAqPSBtdWw7XG5cbiAgICAgIC8vICdhJ1xuICAgICAgaWYgKGMgPj0gNDkpIHtcbiAgICAgICAgciArPSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3KSB7XG4gICAgICAgIHIgKz0gYyAtIDE3ICsgMHhhO1xuXG4gICAgICAvLyAnMCcgLSAnOSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIgKz0gYztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlQmFzZSA9IGZ1bmN0aW9uIF9wYXJzZUJhc2UgKG51bWJlciwgYmFzZSwgc3RhcnQpIHtcbiAgICAvLyBJbml0aWFsaXplIGFzIHplcm9cbiAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuXG4gICAgLy8gRmluZCBsZW5ndGggb2YgbGltYiBpbiBiYXNlXG4gICAgZm9yICh2YXIgbGltYkxlbiA9IDAsIGxpbWJQb3cgPSAxOyBsaW1iUG93IDw9IDB4M2ZmZmZmZjsgbGltYlBvdyAqPSBiYXNlKSB7XG4gICAgICBsaW1iTGVuKys7XG4gICAgfVxuICAgIGxpbWJMZW4tLTtcbiAgICBsaW1iUG93ID0gKGxpbWJQb3cgLyBiYXNlKSB8IDA7XG5cbiAgICB2YXIgdG90YWwgPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgdmFyIG1vZCA9IHRvdGFsICUgbGltYkxlbjtcbiAgICB2YXIgZW5kID0gTWF0aC5taW4odG90YWwsIHRvdGFsIC0gbW9kKSArIHN0YXJ0O1xuXG4gICAgdmFyIHdvcmQgPSAwO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSBsaW1iTGVuKSB7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgaSArIGxpbWJMZW4sIGJhc2UpO1xuXG4gICAgICB0aGlzLmltdWxuKGxpbWJQb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2QgIT09IDApIHtcbiAgICAgIHZhciBwb3cgPSAxO1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIG51bWJlci5sZW5ndGgsIGJhc2UpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbW9kOyBpKyspIHtcbiAgICAgICAgcG93ICo9IGJhc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW11bG4ocG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5IChkZXN0KSB7XG4gICAgZGVzdC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXN0LndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICB9XG4gICAgZGVzdC5sZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICBkZXN0Lm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICBkZXN0LnJlZCA9IHRoaXMucmVkO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICB2YXIgciA9IG5ldyBCTihudWxsKTtcbiAgICB0aGlzLmNvcHkocik7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9leHBhbmQgPSBmdW5jdGlvbiBfZXhwYW5kIChzaXplKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgc2l6ZSkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFJlbW92ZSBsZWFkaW5nIGAwYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3RyaXAgPSBmdW5jdGlvbiBzdHJpcCAoKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoID4gMSAmJiB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fbm9ybVNpZ24gPSBmdW5jdGlvbiBfbm9ybVNpZ24gKCkge1xuICAgIC8vIC0wID0gMFxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICByZXR1cm4gKHRoaXMucmVkID8gJzxCTi1SOiAnIDogJzxCTjogJykgKyB0aGlzLnRvU3RyaW5nKDE2KSArICc+JztcbiAgfTtcblxuICAvKlxuXG4gIHZhciB6ZXJvcyA9IFtdO1xuICB2YXIgZ3JvdXBTaXplcyA9IFtdO1xuICB2YXIgZ3JvdXBCYXNlcyA9IFtdO1xuXG4gIHZhciBzID0gJyc7XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBCTi53b3JkU2l6ZSkge1xuICAgIHplcm9zW2ldID0gcztcbiAgICBzICs9ICcwJztcbiAgfVxuICBncm91cFNpemVzWzBdID0gMDtcbiAgZ3JvdXBTaXplc1sxXSA9IDA7XG4gIGdyb3VwQmFzZXNbMF0gPSAwO1xuICBncm91cEJhc2VzWzFdID0gMDtcbiAgdmFyIGJhc2UgPSAyIC0gMTtcbiAgd2hpbGUgKCsrYmFzZSA8IDM2ICsgMSkge1xuICAgIHZhciBncm91cFNpemUgPSAwO1xuICAgIHZhciBncm91cEJhc2UgPSAxO1xuICAgIHdoaWxlIChncm91cEJhc2UgPCAoMSA8PCBCTi53b3JkU2l6ZSkgLyBiYXNlKSB7XG4gICAgICBncm91cEJhc2UgKj0gYmFzZTtcbiAgICAgIGdyb3VwU2l6ZSArPSAxO1xuICAgIH1cbiAgICBncm91cFNpemVzW2Jhc2VdID0gZ3JvdXBTaXplO1xuICAgIGdyb3VwQmFzZXNbYmFzZV0gPSBncm91cEJhc2U7XG4gIH1cblxuICAqL1xuXG4gIHZhciB6ZXJvcyA9IFtcbiAgICAnJyxcbiAgICAnMCcsXG4gICAgJzAwJyxcbiAgICAnMDAwJyxcbiAgICAnMDAwMCcsXG4gICAgJzAwMDAwJyxcbiAgICAnMDAwMDAwJyxcbiAgICAnMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCdcbiAgXTtcblxuICB2YXIgZ3JvdXBTaXplcyA9IFtcbiAgICAwLCAwLFxuICAgIDI1LCAxNiwgMTIsIDExLCAxMCwgOSwgOCxcbiAgICA4LCA3LCA3LCA3LCA3LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1XG4gIF07XG5cbiAgdmFyIGdyb3VwQmFzZXMgPSBbXG4gICAgMCwgMCxcbiAgICAzMzU1NDQzMiwgNDMwNDY3MjEsIDE2Nzc3MjE2LCA0ODgyODEyNSwgNjA0NjYxNzYsIDQwMzUzNjA3LCAxNjc3NzIxNixcbiAgICA0MzA0NjcyMSwgMTAwMDAwMDAsIDE5NDg3MTcxLCAzNTgzMTgwOCwgNjI3NDg1MTcsIDc1Mjk1MzYsIDExMzkwNjI1LFxuICAgIDE2Nzc3MjE2LCAyNDEzNzU2OSwgMzQwMTIyMjQsIDQ3MDQ1ODgxLCA2NDAwMDAwMCwgNDA4NDEwMSwgNTE1MzYzMixcbiAgICA2NDM2MzQzLCA3OTYyNjI0LCA5NzY1NjI1LCAxMTg4MTM3NiwgMTQzNDg5MDcsIDE3MjEwMzY4LCAyMDUxMTE0OSxcbiAgICAyNDMwMDAwMCwgMjg2MjkxNTEsIDMzNTU0NDMyLCAzOTEzNTM5MywgNDU0MzU0MjQsIDUyNTIxODc1LCA2MDQ2NjE3NlxuICBdO1xuXG4gIEJOLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nIChiYXNlLCBwYWRkaW5nKSB7XG4gICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgcGFkZGluZyA9IHBhZGRpbmcgfCAwIHx8IDE7XG5cbiAgICB2YXIgb3V0O1xuICAgIGlmIChiYXNlID09PSAxNiB8fCBiYXNlID09PSAnaGV4Jykge1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgb2ZmID0gMDtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldO1xuICAgICAgICB2YXIgd29yZCA9ICgoKHcgPDwgb2ZmKSB8IGNhcnJ5KSAmIDB4ZmZmZmZmKS50b1N0cmluZygxNik7XG4gICAgICAgIGNhcnJ5ID0gKHcgPj4+ICgyNCAtIG9mZikpICYgMHhmZmZmZmY7XG4gICAgICAgIGlmIChjYXJyeSAhPT0gMCB8fCBpICE9PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1s2IC0gd29yZC5sZW5ndGhdICsgd29yZCArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSB3b3JkICsgb3V0O1xuICAgICAgICB9XG4gICAgICAgIG9mZiArPSAyO1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICAgIG91dCA9IGNhcnJ5LnRvU3RyaW5nKDE2KSArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KSB7XG4gICAgICAvLyB2YXIgZ3JvdXBTaXplID0gTWF0aC5mbG9vcihCTi53b3JkU2l6ZSAqIE1hdGguTE4yIC8gTWF0aC5sb2coYmFzZSkpO1xuICAgICAgdmFyIGdyb3VwU2l6ZSA9IGdyb3VwU2l6ZXNbYmFzZV07XG4gICAgICAvLyB2YXIgZ3JvdXBCYXNlID0gTWF0aC5wb3coYmFzZSwgZ3JvdXBTaXplKTtcbiAgICAgIHZhciBncm91cEJhc2UgPSBncm91cEJhc2VzW2Jhc2VdO1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgYyA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGMubmVnYXRpdmUgPSAwO1xuICAgICAgd2hpbGUgKCFjLmlzWmVybygpKSB7XG4gICAgICAgIHZhciByID0gYy5tb2RuKGdyb3VwQmFzZSkudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIGMgPSBjLmlkaXZuKGdyb3VwQmFzZSk7XG5cbiAgICAgICAgaWYgKCFjLmlzWmVybygpKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbZ3JvdXBTaXplIC0gci5sZW5ndGhdICsgciArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSByICsgb3V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBhc3NlcnQoZmFsc2UsICdCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Jyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvTnVtYmVyID0gZnVuY3Rpb24gdG9OdW1iZXIgKCkge1xuICAgIHZhciByZXQgPSB0aGlzLndvcmRzWzBdO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0ICs9IHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA9PT0gMyAmJiB0aGlzLndvcmRzWzJdID09PSAweDAxKSB7XG4gICAgICAvLyBOT1RFOiBhdCB0aGlzIHN0YWdlIGl0IGlzIGtub3duIHRoYXQgdGhlIHRvcCBiaXQgaXMgc2V0XG4gICAgICByZXQgKz0gMHgxMDAwMDAwMDAwMDAwMCArICh0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gMikge1xuICAgICAgYXNzZXJ0KGZhbHNlLCAnTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzJyk7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgPyAtcmV0IDogcmV0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKDE2KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9CdWZmZXIgPSBmdW5jdGlvbiB0b0J1ZmZlciAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpO1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEJ1ZmZlciwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gdG9BcnJheSAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5TGlrZSA9IGZ1bmN0aW9uIHRvQXJyYXlMaWtlIChBcnJheVR5cGUsIGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgdmFyIGJ5dGVMZW5ndGggPSB0aGlzLmJ5dGVMZW5ndGgoKTtcbiAgICB2YXIgcmVxTGVuZ3RoID0gbGVuZ3RoIHx8IE1hdGgubWF4KDEsIGJ5dGVMZW5ndGgpO1xuICAgIGFzc2VydChieXRlTGVuZ3RoIDw9IHJlcUxlbmd0aCwgJ2J5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgnKTtcbiAgICBhc3NlcnQocmVxTGVuZ3RoID4gMCwgJ1JlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCcpO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuICAgIHZhciBsaXR0bGVFbmRpYW4gPSBlbmRpYW4gPT09ICdsZSc7XG4gICAgdmFyIHJlcyA9IG5ldyBBcnJheVR5cGUocmVxTGVuZ3RoKTtcblxuICAgIHZhciBiLCBpO1xuICAgIHZhciBxID0gdGhpcy5jbG9uZSgpO1xuICAgIGlmICghbGl0dGxlRW5kaWFuKSB7XG4gICAgICAvLyBBc3N1bWUgYmlnLWVuZGlhblxuICAgICAgZm9yIChpID0gMDsgaSA8IHJlcUxlbmd0aCAtIGJ5dGVMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbcmVxTGVuZ3RoIC0gaSAtIDFdID0gYjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW2ldID0gYjtcbiAgICAgIH1cblxuICAgICAgZm9yICg7IGkgPCByZXFMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgaWYgKE1hdGguY2x6MzIpIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHJldHVybiAzMiAtIE1hdGguY2x6MzIodyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHZhciB0ID0gdztcbiAgICAgIHZhciByID0gMDtcbiAgICAgIGlmICh0ID49IDB4MTAwMCkge1xuICAgICAgICByICs9IDEzO1xuICAgICAgICB0ID4+Pj0gMTM7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDQwKSB7XG4gICAgICAgIHIgKz0gNztcbiAgICAgICAgdCA+Pj49IDc7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDgpIHtcbiAgICAgICAgciArPSA0O1xuICAgICAgICB0ID4+Pj0gNDtcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4MDIpIHtcbiAgICAgICAgciArPSAyO1xuICAgICAgICB0ID4+Pj0gMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByICsgdDtcbiAgICB9O1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl96ZXJvQml0cyA9IGZ1bmN0aW9uIF96ZXJvQml0cyAodykge1xuICAgIC8vIFNob3J0LWN1dFxuICAgIGlmICh3ID09PSAwKSByZXR1cm4gMjY7XG5cbiAgICB2YXIgdCA9IHc7XG4gICAgdmFyIHIgPSAwO1xuICAgIGlmICgodCAmIDB4MWZmZikgPT09IDApIHtcbiAgICAgIHIgKz0gMTM7XG4gICAgICB0ID4+Pj0gMTM7XG4gICAgfVxuICAgIGlmICgodCAmIDB4N2YpID09PSAwKSB7XG4gICAgICByICs9IDc7XG4gICAgICB0ID4+Pj0gNztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHhmKSA9PT0gMCkge1xuICAgICAgciArPSA0O1xuICAgICAgdCA+Pj49IDQ7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MykgPT09IDApIHtcbiAgICAgIHIgKz0gMjtcbiAgICAgIHQgPj4+PSAyO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDEpID09PSAwKSB7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIC8vIFJldHVybiBudW1iZXIgb2YgdXNlZCBiaXRzIGluIGEgQk5cbiAgQk4ucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uIGJpdExlbmd0aCAoKSB7XG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV07XG4gICAgdmFyIGhpID0gdGhpcy5fY291bnRCaXRzKHcpO1xuICAgIHJldHVybiAodGhpcy5sZW5ndGggLSAxKSAqIDI2ICsgaGk7XG4gIH07XG5cbiAgZnVuY3Rpb24gdG9CaXRBcnJheSAobnVtKSB7XG4gICAgdmFyIHcgPSBuZXcgQXJyYXkobnVtLmJpdExlbmd0aCgpKTtcblxuICAgIGZvciAodmFyIGJpdCA9IDA7IGJpdCA8IHcubGVuZ3RoOyBiaXQrKykge1xuICAgICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgICAgd1tiaXRdID0gKG51bS53b3Jkc1tvZmZdICYgKDEgPDwgd2JpdCkpID4+PiB3Yml0O1xuICAgIH1cblxuICAgIHJldHVybiB3O1xuICB9XG5cbiAgLy8gTnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0c1xuICBCTi5wcm90b3R5cGUuemVyb0JpdHMgPSBmdW5jdGlvbiB6ZXJvQml0cyAoKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiAwO1xuXG4gICAgdmFyIHIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGIgPSB0aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2ldKTtcbiAgICAgIHIgKz0gYjtcbiAgICAgIGlmIChiICE9PSAyNikgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ieXRlTGVuZ3RoID0gZnVuY3Rpb24gYnl0ZUxlbmd0aCAoKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpIC8gOCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvVHdvcyA9IGZ1bmN0aW9uIHRvVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWJzKCkuaW5vdG4od2lkdGgpLmlhZGRuKDEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tVHdvcyA9IGZ1bmN0aW9uIGZyb21Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLnRlc3RuKHdpZHRoIC0gMSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdG4od2lkdGgpLmlhZGRuKDEpLmluZWcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiBpc05lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmUgIT09IDA7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5lZyA9IGZ1bmN0aW9uIGluZWcgKCkge1xuICAgIGlmICghdGhpcy5pc1plcm8oKSkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdW9yID0gZnVuY3Rpb24gaXVvciAobnVtKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldIHwgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlvciA9IGZ1bmN0aW9uIGlvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVvcihudW0pO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pb3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVvciA9IGZ1bmN0aW9uIHVvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdWFuZCA9IGZ1bmN0aW9uIGl1YW5kIChudW0pIHtcbiAgICAvLyBiID0gbWluLWxlbmd0aChudW0sIHRoaXMpXG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSAmIG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGIubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFuZCA9IGZ1bmN0aW9uIGlhbmQgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1YW5kKG51bSk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiBhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYW5kKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51YW5kID0gZnVuY3Rpb24gdWFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdWFuZCh0aGlzKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1eG9yID0gZnVuY3Rpb24gaXV4b3IgKG51bSkge1xuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYTtcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldIF4gYi53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcyAhPT0gYSkge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5peG9yID0gZnVuY3Rpb24gaXhvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXV4b3IobnVtKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIHhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5peG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml4b3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnV4b3IgPSBmdW5jdGlvbiB1eG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1eG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1eG9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIE5vdCBgYHRoaXNgYCB3aXRoIGBgd2lkdGhgYCBiaXR3aWR0aFxuICBCTi5wcm90b3R5cGUuaW5vdG4gPSBmdW5jdGlvbiBpbm90biAod2lkdGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyAmJiB3aWR0aCA+PSAwKTtcblxuICAgIHZhciBieXRlc05lZWRlZCA9IE1hdGguY2VpbCh3aWR0aCAvIDI2KSB8IDA7XG4gICAgdmFyIGJpdHNMZWZ0ID0gd2lkdGggJSAyNjtcblxuICAgIC8vIEV4dGVuZCB0aGUgYnVmZmVyIHdpdGggbGVhZGluZyB6ZXJvZXNcbiAgICB0aGlzLl9leHBhbmQoYnl0ZXNOZWVkZWQpO1xuXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgYnl0ZXNOZWVkZWQtLTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgY29tcGxldGUgd29yZHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzTmVlZGVkOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIHJlc2lkdWVcbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAoMHgzZmZmZmZmID4+ICgyNiAtIGJpdHNMZWZ0KSk7XG4gICAgfVxuXG4gICAgLy8gQW5kIHJlbW92ZSBsZWFkaW5nIHplcm9lc1xuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm5vdG4gPSBmdW5jdGlvbiBub3RuICh3aWR0aCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5vdG4od2lkdGgpO1xuICB9O1xuXG4gIC8vIFNldCBgYml0YCBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNldG4gPSBmdW5jdGlvbiBzZXRuIChiaXQsIHZhbCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG5cbiAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgIHRoaXMuX2V4cGFuZChvZmYgKyAxKTtcblxuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSB8ICgxIDw8IHdiaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gJiB+KDEgPDwgd2JpdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAobnVtKSB7XG4gICAgdmFyIHI7XG5cbiAgICAvLyBuZWdhdGl2ZSArIHBvc2l0aXZlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gcG9zaXRpdmUgKyBuZWdhdGl2ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhLCBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAvLyBDb3B5IHRoZSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIH0gZWxzZSBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAobnVtKSB7XG4gICAgdmFyIHJlcztcbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwICYmIHRoaXMubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSB0aGlzLnN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSBpZiAobnVtLm5lZ2F0aXZlID09PSAwICYmIHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gbnVtLnN1Yih0aGlzKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGQobnVtKTtcblxuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYWRkKHRoaXMpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAobnVtKSB7XG4gICAgLy8gdGhpcyAtICgtbnVtKSA9IHRoaXMgKyBudW1cbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgdmFyIHIgPSB0aGlzLmlhZGQobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcblxuICAgIC8vIC10aGlzIC0gbnVtID0gLSh0aGlzICsgbnVtKVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGQobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlXG4gICAgdmFyIGNtcCA9IHRoaXMuY21wKG51bSk7XG5cbiAgICAvLyBPcHRpbWl6YXRpb24gLSB6ZXJvaWZ5XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIGEgPiBiXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGNtcCA+IDApIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSAtIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBDb3B5IHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgaWYgKGNhcnJ5ID09PSAwICYmIGkgPCBhLmxlbmd0aCAmJiBhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSk7XG5cbiAgICBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBzbWFsbE11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgdmFyIGxlbiA9IChzZWxmLmxlbmd0aCArIG51bS5sZW5ndGgpIHwgMDtcbiAgICBvdXQubGVuZ3RoID0gbGVuO1xuICAgIGxlbiA9IChsZW4gLSAxKSB8IDA7XG5cbiAgICAvLyBQZWVsIG9uZSBpdGVyYXRpb24gKGNvbXBpbGVyIGNhbid0IGRvIGl0LCBiZWNhdXNlIG9mIGNvZGUgY29tcGxleGl0eSlcbiAgICB2YXIgYSA9IHNlbGYud29yZHNbMF0gfCAwO1xuICAgIHZhciBiID0gbnVtLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICB2YXIgY2FycnkgPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgIG91dC53b3Jkc1swXSA9IGxvO1xuXG4gICAgZm9yICh2YXIgayA9IDE7IGsgPCBsZW47IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBjYXJyeSA+Pj4gMjY7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IChrIC0gaikgfCAwO1xuICAgICAgICBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICByID0gYSAqIGIgKyByd29yZDtcbiAgICAgICAgbmNhcnJ5ICs9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkIHwgMDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5IHwgMDtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeSB8IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICAvLyBUT0RPKGluZHV0bnkpOiBpdCBtYXkgYmUgcmVhc29uYWJsZSB0byBvbWl0IGl0IGZvciB1c2VycyB3aG8gZG9uJ3QgbmVlZFxuICAvLyB0byB3b3JrIHdpdGggMjU2LWJpdCBudW1iZXJzLCBvdGhlcndpc2UgaXQgZ2l2ZXMgMjAlIGltcHJvdmVtZW50IGZvciAyNTYtYml0XG4gIC8vIG11bHRpcGxpY2F0aW9uIChsaWtlIGVsbGlwdGljIHNlY3AyNTZrMSkuXG4gIHZhciBjb21iMTBNdWxUbyA9IGZ1bmN0aW9uIGNvbWIxME11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBhID0gc2VsZi53b3JkcztcbiAgICB2YXIgYiA9IG51bS53b3JkcztcbiAgICB2YXIgbyA9IG91dC53b3JkcztcbiAgICB2YXIgYyA9IDA7XG4gICAgdmFyIGxvO1xuICAgIHZhciBtaWQ7XG4gICAgdmFyIGhpO1xuICAgIHZhciBhMCA9IGFbMF0gfCAwO1xuICAgIHZhciBhbDAgPSBhMCAmIDB4MWZmZjtcbiAgICB2YXIgYWgwID0gYTAgPj4+IDEzO1xuICAgIHZhciBhMSA9IGFbMV0gfCAwO1xuICAgIHZhciBhbDEgPSBhMSAmIDB4MWZmZjtcbiAgICB2YXIgYWgxID0gYTEgPj4+IDEzO1xuICAgIHZhciBhMiA9IGFbMl0gfCAwO1xuICAgIHZhciBhbDIgPSBhMiAmIDB4MWZmZjtcbiAgICB2YXIgYWgyID0gYTIgPj4+IDEzO1xuICAgIHZhciBhMyA9IGFbM10gfCAwO1xuICAgIHZhciBhbDMgPSBhMyAmIDB4MWZmZjtcbiAgICB2YXIgYWgzID0gYTMgPj4+IDEzO1xuICAgIHZhciBhNCA9IGFbNF0gfCAwO1xuICAgIHZhciBhbDQgPSBhNCAmIDB4MWZmZjtcbiAgICB2YXIgYWg0ID0gYTQgPj4+IDEzO1xuICAgIHZhciBhNSA9IGFbNV0gfCAwO1xuICAgIHZhciBhbDUgPSBhNSAmIDB4MWZmZjtcbiAgICB2YXIgYWg1ID0gYTUgPj4+IDEzO1xuICAgIHZhciBhNiA9IGFbNl0gfCAwO1xuICAgIHZhciBhbDYgPSBhNiAmIDB4MWZmZjtcbiAgICB2YXIgYWg2ID0gYTYgPj4+IDEzO1xuICAgIHZhciBhNyA9IGFbN10gfCAwO1xuICAgIHZhciBhbDcgPSBhNyAmIDB4MWZmZjtcbiAgICB2YXIgYWg3ID0gYTcgPj4+IDEzO1xuICAgIHZhciBhOCA9IGFbOF0gfCAwO1xuICAgIHZhciBhbDggPSBhOCAmIDB4MWZmZjtcbiAgICB2YXIgYWg4ID0gYTggPj4+IDEzO1xuICAgIHZhciBhOSA9IGFbOV0gfCAwO1xuICAgIHZhciBhbDkgPSBhOSAmIDB4MWZmZjtcbiAgICB2YXIgYWg5ID0gYTkgPj4+IDEzO1xuICAgIHZhciBiMCA9IGJbMF0gfCAwO1xuICAgIHZhciBibDAgPSBiMCAmIDB4MWZmZjtcbiAgICB2YXIgYmgwID0gYjAgPj4+IDEzO1xuICAgIHZhciBiMSA9IGJbMV0gfCAwO1xuICAgIHZhciBibDEgPSBiMSAmIDB4MWZmZjtcbiAgICB2YXIgYmgxID0gYjEgPj4+IDEzO1xuICAgIHZhciBiMiA9IGJbMl0gfCAwO1xuICAgIHZhciBibDIgPSBiMiAmIDB4MWZmZjtcbiAgICB2YXIgYmgyID0gYjIgPj4+IDEzO1xuICAgIHZhciBiMyA9IGJbM10gfCAwO1xuICAgIHZhciBibDMgPSBiMyAmIDB4MWZmZjtcbiAgICB2YXIgYmgzID0gYjMgPj4+IDEzO1xuICAgIHZhciBiNCA9IGJbNF0gfCAwO1xuICAgIHZhciBibDQgPSBiNCAmIDB4MWZmZjtcbiAgICB2YXIgYmg0ID0gYjQgPj4+IDEzO1xuICAgIHZhciBiNSA9IGJbNV0gfCAwO1xuICAgIHZhciBibDUgPSBiNSAmIDB4MWZmZjtcbiAgICB2YXIgYmg1ID0gYjUgPj4+IDEzO1xuICAgIHZhciBiNiA9IGJbNl0gfCAwO1xuICAgIHZhciBibDYgPSBiNiAmIDB4MWZmZjtcbiAgICB2YXIgYmg2ID0gYjYgPj4+IDEzO1xuICAgIHZhciBiNyA9IGJbN10gfCAwO1xuICAgIHZhciBibDcgPSBiNyAmIDB4MWZmZjtcbiAgICB2YXIgYmg3ID0gYjcgPj4+IDEzO1xuICAgIHZhciBiOCA9IGJbOF0gfCAwO1xuICAgIHZhciBibDggPSBiOCAmIDB4MWZmZjtcbiAgICB2YXIgYmg4ID0gYjggPj4+IDEzO1xuICAgIHZhciBiOSA9IGJbOV0gfCAwO1xuICAgIHZhciBibDkgPSBiOSAmIDB4MWZmZjtcbiAgICB2YXIgYmg5ID0gYjkgPj4+IDEzO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0gc2VsZi5uZWdhdGl2ZSBeIG51bS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gMTk7XG4gICAgLyogayA9IDAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDAsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMCwgYmgwKTtcbiAgICB2YXIgdzAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcwID4+PiAyNikpIHwgMDtcbiAgICB3MCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDEsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDEpKSB8IDA7XG4gICAgdmFyIHcxID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MSA+Pj4gMjYpKSB8IDA7XG4gICAgdzEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwyLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDIsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDIsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMikpIHwgMDtcbiAgICB2YXIgdzIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcyID4+PiAyNikpIHwgMDtcbiAgICB3MiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDMsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMykpIHwgMDtcbiAgICB2YXIgdzMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHczID4+PiAyNikpIHwgMDtcbiAgICB3MyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDQsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDQpKSB8IDA7XG4gICAgdmFyIHc0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NCA+Pj4gMjYpKSB8IDA7XG4gICAgdzQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw1LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDUsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDUsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNSkpIHwgMDtcbiAgICB2YXIgdzUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc1ID4+PiAyNikpIHwgMDtcbiAgICB3NSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDYsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNikpIHwgMDtcbiAgICB2YXIgdzYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc2ID4+PiAyNikpIHwgMDtcbiAgICB3NiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDcsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDcpKSB8IDA7XG4gICAgdmFyIHc3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NyA+Pj4gMjYpKSB8IDA7XG4gICAgdzcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw4LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDgsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDgsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOCkpIHwgMDtcbiAgICB2YXIgdzggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc4ID4+PiAyNikpIHwgMDtcbiAgICB3OCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDkgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzkgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc5ID4+PiAyNikpIHwgMDtcbiAgICB3OSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDEpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTAgPj4+IDI2KSkgfCAwO1xuICAgIHcxMCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDExICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDIpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMSA+Pj4gMjYpKSB8IDA7XG4gICAgdzExICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgzKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwzKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgzKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTIgPj4+IDI2KSkgfCAwO1xuICAgIHcxMiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDQpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEzID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTMgPj4+IDI2KSkgfCAwO1xuICAgIHcxMyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDUpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg2KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw2KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg2KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTUgPj4+IDI2KSkgfCAwO1xuICAgIHcxNSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDcpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTYgPj4+IDI2KSkgfCAwO1xuICAgIHcxNiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDgpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNyA+Pj4gMjYpKSB8IDA7XG4gICAgdzE3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg5KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw5KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg5KTtcbiAgICB2YXIgdzE4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTggPj4+IDI2KSkgfCAwO1xuICAgIHcxOCAmPSAweDNmZmZmZmY7XG4gICAgb1swXSA9IHcwO1xuICAgIG9bMV0gPSB3MTtcbiAgICBvWzJdID0gdzI7XG4gICAgb1szXSA9IHczO1xuICAgIG9bNF0gPSB3NDtcbiAgICBvWzVdID0gdzU7XG4gICAgb1s2XSA9IHc2O1xuICAgIG9bN10gPSB3NztcbiAgICBvWzhdID0gdzg7XG4gICAgb1s5XSA9IHc5O1xuICAgIG9bMTBdID0gdzEwO1xuICAgIG9bMTFdID0gdzExO1xuICAgIG9bMTJdID0gdzEyO1xuICAgIG9bMTNdID0gdzEzO1xuICAgIG9bMTRdID0gdzE0O1xuICAgIG9bMTVdID0gdzE1O1xuICAgIG9bMTZdID0gdzE2O1xuICAgIG9bMTddID0gdzE3O1xuICAgIG9bMThdID0gdzE4O1xuICAgIGlmIChjICE9PSAwKSB7XG4gICAgICBvWzE5XSA9IGM7XG4gICAgICBvdXQubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH07XG5cbiAgLy8gUG9seWZpbGwgY29tYlxuICBpZiAoIU1hdGguaW11bCkge1xuICAgIGNvbWIxME11bFRvID0gc21hbGxNdWxUbztcbiAgfVxuXG4gIGZ1bmN0aW9uIGJpZ011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aDtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgdmFyIGhuY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb3V0Lmxlbmd0aCAtIDE7IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBobmNhcnJ5O1xuICAgICAgaG5jYXJyeSA9IDA7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IGsgLSBqO1xuICAgICAgICB2YXIgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICB2YXIgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHZhciByID0gYSAqIGI7XG5cbiAgICAgICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArICgociAvIDB4NDAwMDAwMCkgfCAwKSkgfCAwO1xuICAgICAgICBsbyA9IChsbyArIHJ3b3JkKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAobG8gPj4+IDI2KSkgfCAwO1xuXG4gICAgICAgIGhuY2FycnkgKz0gbmNhcnJ5ID4+PiAyNjtcbiAgICAgICAgbmNhcnJ5ICY9IDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkO1xuICAgICAgY2FycnkgPSBuY2Fycnk7XG4gICAgICBuY2FycnkgPSBobmNhcnJ5O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgZnVuY3Rpb24ganVtYm9NdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgZmZ0bSA9IG5ldyBGRlRNKCk7XG4gICAgcmV0dXJuIGZmdG0ubXVscChzZWxmLCBudW0sIG91dCk7XG4gIH1cblxuICBCTi5wcm90b3R5cGUubXVsVG8gPSBmdW5jdGlvbiBtdWxUbyAobnVtLCBvdXQpIHtcbiAgICB2YXIgcmVzO1xuICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCArIG51bS5sZW5ndGg7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxMCAmJiBudW0ubGVuZ3RoID09PSAxMCkge1xuICAgICAgcmVzID0gY29tYjEwTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgNjMpIHtcbiAgICAgIHJlcyA9IHNtYWxsTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgMTAyNCkge1xuICAgICAgcmVzID0gYmlnTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvb2xleS1UdWtleSBhbGdvcml0aG0gZm9yIEZGVFxuICAvLyBzbGlnaHRseSByZXZpc2l0ZWQgdG8gcmVseSBvbiBsb29waW5nIGluc3RlYWQgb2YgcmVjdXJzaW9uXG5cbiAgZnVuY3Rpb24gRkZUTSAoeCwgeSkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIEZGVE0ucHJvdG90eXBlLm1ha2VSQlQgPSBmdW5jdGlvbiBtYWtlUkJUIChOKSB7XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGwgPSBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyhOKSAtIDE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHRbaV0gPSB0aGlzLnJldkJpbihpLCBsLCBOKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGJpbmFyeS1yZXZlcnNlZCByZXByZXNlbnRhdGlvbiBvZiBgeGBcbiAgRkZUTS5wcm90b3R5cGUucmV2QmluID0gZnVuY3Rpb24gcmV2QmluICh4LCBsLCBOKSB7XG4gICAgaWYgKHggPT09IDAgfHwgeCA9PT0gTiAtIDEpIHJldHVybiB4O1xuXG4gICAgdmFyIHJiID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgcmIgfD0gKHggJiAxKSA8PCAobCAtIGkgLSAxKTtcbiAgICAgIHggPj49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJiO1xuICB9O1xuXG4gIC8vIFBlcmZvcm1zIFwidHdlZWRsaW5nXCIgcGhhc2UsIHRoZXJlZm9yZSAnZW11bGF0aW5nJ1xuICAvLyBiZWhhdmlvdXIgb2YgdGhlIHJlY3Vyc2l2ZSBhbGdvcml0aG1cbiAgRkZUTS5wcm90b3R5cGUucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUgKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcnR3c1tpXSA9IHJ3c1tyYnRbaV1dO1xuICAgICAgaXR3c1tpXSA9IGl3c1tyYnRbaV1dO1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiB0cmFuc2Zvcm0gKHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOLCByYnQpIHtcbiAgICB0aGlzLnBlcm11dGUocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTik7XG5cbiAgICBmb3IgKHZhciBzID0gMTsgcyA8IE47IHMgPDw9IDEpIHtcbiAgICAgIHZhciBsID0gcyA8PCAxO1xuXG4gICAgICB2YXIgcnR3ZGYgPSBNYXRoLmNvcygyICogTWF0aC5QSSAvIGwpO1xuICAgICAgdmFyIGl0d2RmID0gTWF0aC5zaW4oMiAqIE1hdGguUEkgLyBsKTtcblxuICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBOOyBwICs9IGwpIHtcbiAgICAgICAgdmFyIHJ0d2RmXyA9IHJ0d2RmO1xuICAgICAgICB2YXIgaXR3ZGZfID0gaXR3ZGY7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzOyBqKyspIHtcbiAgICAgICAgICB2YXIgcmUgPSBydHdzW3AgKyBqXTtcbiAgICAgICAgICB2YXIgaWUgPSBpdHdzW3AgKyBqXTtcblxuICAgICAgICAgIHZhciBybyA9IHJ0d3NbcCArIGogKyBzXTtcbiAgICAgICAgICB2YXIgaW8gPSBpdHdzW3AgKyBqICsgc107XG5cbiAgICAgICAgICB2YXIgcnggPSBydHdkZl8gKiBybyAtIGl0d2RmXyAqIGlvO1xuXG4gICAgICAgICAgaW8gPSBydHdkZl8gKiBpbyArIGl0d2RmXyAqIHJvO1xuICAgICAgICAgIHJvID0gcng7XG5cbiAgICAgICAgICBydHdzW3AgKyBqXSA9IHJlICsgcm87XG4gICAgICAgICAgaXR3c1twICsgal0gPSBpZSArIGlvO1xuXG4gICAgICAgICAgcnR3c1twICsgaiArIHNdID0gcmUgLSBybztcbiAgICAgICAgICBpdHdzW3AgKyBqICsgc10gPSBpZSAtIGlvO1xuXG4gICAgICAgICAgLyoganNoaW50IG1heGRlcHRoIDogZmFsc2UgKi9cbiAgICAgICAgICBpZiAoaiAhPT0gbCkge1xuICAgICAgICAgICAgcnggPSBydHdkZiAqIHJ0d2RmXyAtIGl0d2RmICogaXR3ZGZfO1xuXG4gICAgICAgICAgICBpdHdkZl8gPSBydHdkZiAqIGl0d2RmXyArIGl0d2RmICogcnR3ZGZfO1xuICAgICAgICAgICAgcnR3ZGZfID0gcng7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmd1ZXNzTGVuMTNiID0gZnVuY3Rpb24gZ3Vlc3NMZW4xM2IgKG4sIG0pIHtcbiAgICB2YXIgTiA9IE1hdGgubWF4KG0sIG4pIHwgMTtcbiAgICB2YXIgb2RkID0gTiAmIDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoTiA9IE4gLyAyIHwgMDsgTjsgTiA9IE4gPj4+IDEpIHtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICByZXR1cm4gMSA8PCBpICsgMSArIG9kZDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb25qdWdhdGUgPSBmdW5jdGlvbiBjb25qdWdhdGUgKHJ3cywgaXdzLCBOKSB7XG4gICAgaWYgKE4gPD0gMSkgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdCA9IHJ3c1tpXTtcblxuICAgICAgcndzW2ldID0gcndzW04gLSBpIC0gMV07XG4gICAgICByd3NbTiAtIGkgLSAxXSA9IHQ7XG5cbiAgICAgIHQgPSBpd3NbaV07XG5cbiAgICAgIGl3c1tpXSA9IC1pd3NbTiAtIGkgLSAxXTtcbiAgICAgIGl3c1tOIC0gaSAtIDFdID0gLXQ7XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm5vcm1hbGl6ZTEzYiA9IGZ1bmN0aW9uIG5vcm1hbGl6ZTEzYiAod3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHcgPSBNYXRoLnJvdW5kKHdzWzIgKiBpICsgMV0gLyBOKSAqIDB4MjAwMCArXG4gICAgICAgIE1hdGgucm91bmQod3NbMiAqIGldIC8gTikgK1xuICAgICAgICBjYXJyeTtcblxuICAgICAgd3NbaV0gPSB3ICYgMHgzZmZmZmZmO1xuXG4gICAgICBpZiAodyA8IDB4NDAwMDAwMCkge1xuICAgICAgICBjYXJyeSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJyeSA9IHcgLyAweDQwMDAwMDAgfCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB3cztcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb252ZXJ0MTNiID0gZnVuY3Rpb24gY29udmVydDEzYiAod3MsIGxlbiwgcndzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjYXJyeSA9IGNhcnJ5ICsgKHdzW2ldIHwgMCk7XG5cbiAgICAgIHJ3c1syICogaV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgICByd3NbMiAqIGkgKyAxXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICB9XG5cbiAgICAvLyBQYWQgd2l0aCB6ZXJvZXNcbiAgICBmb3IgKGkgPSAyICogbGVuOyBpIDwgTjsgKytpKSB7XG4gICAgICByd3NbaV0gPSAwO1xuICAgIH1cblxuICAgIGFzc2VydChjYXJyeSA9PT0gMCk7XG4gICAgYXNzZXJ0KChjYXJyeSAmIH4weDFmZmYpID09PSAwKTtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5zdHViID0gZnVuY3Rpb24gc3R1YiAoTikge1xuICAgIHZhciBwaCA9IG5ldyBBcnJheShOKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcGhbaV0gPSAwO1xuICAgIH1cblxuICAgIHJldHVybiBwaDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5tdWxwID0gZnVuY3Rpb24gbXVscCAoeCwgeSwgb3V0KSB7XG4gICAgdmFyIE4gPSAyICogdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCwgeS5sZW5ndGgpO1xuXG4gICAgdmFyIHJidCA9IHRoaXMubWFrZVJCVChOKTtcblxuICAgIHZhciBfID0gdGhpcy5zdHViKE4pO1xuXG4gICAgdmFyIHJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgcndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBucndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBucndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbml3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgcm13cyA9IG91dC53b3JkcztcbiAgICBybXdzLmxlbmd0aCA9IE47XG5cbiAgICB0aGlzLmNvbnZlcnQxM2IoeC53b3JkcywgeC5sZW5ndGgsIHJ3cywgTik7XG4gICAgdGhpcy5jb252ZXJ0MTNiKHkud29yZHMsIHkubGVuZ3RoLCBucndzLCBOKTtcblxuICAgIHRoaXMudHJhbnNmb3JtKHJ3cywgXywgcndzdCwgaXdzdCwgTiwgcmJ0KTtcbiAgICB0aGlzLnRyYW5zZm9ybShucndzLCBfLCBucndzdCwgbml3c3QsIE4sIHJidCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdmFyIHJ4ID0gcndzdFtpXSAqIG5yd3N0W2ldIC0gaXdzdFtpXSAqIG5pd3N0W2ldO1xuICAgICAgaXdzdFtpXSA9IHJ3c3RbaV0gKiBuaXdzdFtpXSArIGl3c3RbaV0gKiBucndzdFtpXTtcbiAgICAgIHJ3c3RbaV0gPSByeDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmp1Z2F0ZShyd3N0LCBpd3N0LCBOKTtcbiAgICB0aGlzLnRyYW5zZm9ybShyd3N0LCBpd3N0LCBybXdzLCBfLCBOLCByYnQpO1xuICAgIHRoaXMuY29uanVnYXRlKHJtd3MsIF8sIE4pO1xuICAgIHRoaXMubm9ybWFsaXplMTNiKHJtd3MsIE4pO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0geC5uZWdhdGl2ZSBeIHkubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHgubGVuZ3RoICsgeS5sZW5ndGg7XG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGB0aGlzYCBieSBgbnVtYFxuICBCTi5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiB0aGlzLm11bFRvKG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBlbXBsb3lpbmcgRkZUXG4gIEJOLnByb3RvdHlwZS5tdWxmID0gZnVuY3Rpb24gbXVsZiAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgTXVsdGlwbGljYXRpb25cbiAgQk4ucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKG51bSwgdGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmltdWxuID0gZnVuY3Rpb24gaW11bG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG5cbiAgICAvLyBDYXJyeVxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKiBudW07XG4gICAgICB2YXIgbG8gPSAodyAmIDB4M2ZmZmZmZikgKyAoY2FycnkgJiAweDNmZmZmZmYpO1xuICAgICAgY2FycnkgPj49IDI2O1xuICAgICAgY2FycnkgKz0gKHcgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgIC8vIE5PVEU6IGxvIGlzIDI3Yml0IG1heGltdW1cbiAgICAgIGNhcnJ5ICs9IGxvID4+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm11bG4gPSBmdW5jdGlvbiBtdWxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKG51bSk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLm11bCh0aGlzKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSk7XG4gIH07XG5cbiAgLy8gTWF0aC5wb3coYHRoaXNgLCBgbnVtYClcbiAgQk4ucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAobnVtKSB7XG4gICAgdmFyIHcgPSB0b0JpdEFycmF5KG51bSk7XG4gICAgaWYgKHcubGVuZ3RoID09PSAwKSByZXR1cm4gbmV3IEJOKDEpO1xuXG4gICAgLy8gU2tpcCBsZWFkaW5nIHplcm9lc1xuICAgIHZhciByZXMgPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdy5sZW5ndGg7IGkrKywgcmVzID0gcmVzLnNxcigpKSB7XG4gICAgICBpZiAod1tpXSAhPT0gMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKCsraSA8IHcubGVuZ3RoKSB7XG4gICAgICBmb3IgKHZhciBxID0gcmVzLnNxcigpOyBpIDwgdy5sZW5ndGg7IGkrKywgcSA9IHEuc3FyKCkpIHtcbiAgICAgICAgaWYgKHdbaV0gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHJlcy5tdWwocSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0IGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXNobG4gPSBmdW5jdGlvbiBpdXNobG4gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG4gICAgdmFyIGNhcnJ5TWFzayA9ICgweDNmZmZmZmYgPj4+ICgyNiAtIHIpKSA8PCAoMjYgLSByKTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbmV3Q2FycnkgPSB0aGlzLndvcmRzW2ldICYgY2FycnlNYXNrO1xuICAgICAgICB2YXIgYyA9ICgodGhpcy53b3Jkc1tpXSB8IDApIC0gbmV3Q2FycnkpIDw8IHI7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjIHwgY2Fycnk7XG4gICAgICAgIGNhcnJ5ID0gbmV3Q2FycnkgPj4+ICgyNiAtIHIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2FycnkpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzICE9PSAwKSB7XG4gICAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIHNdID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggKz0gcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hsbiA9IGZ1bmN0aW9uIGlzaGxuIChiaXRzKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodCBpbi1wbGFjZVxuICAvLyBOT1RFOiBgaGludGAgaXMgYSBsb3dlc3QgYml0IGJlZm9yZSB0cmFpbGluZyB6ZXJvZXNcbiAgLy8gTk9URTogaWYgYGV4dGVuZGVkYCBpcyBwcmVzZW50IC0gaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBkZXN0cm95ZWQgYml0c1xuICBCTi5wcm90b3R5cGUuaXVzaHJuID0gZnVuY3Rpb24gaXVzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgaDtcbiAgICBpZiAoaGludCkge1xuICAgICAgaCA9IChoaW50IC0gKGhpbnQgJSAyNikpIC8gMjY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGggPSAwO1xuICAgIH1cblxuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gTWF0aC5taW4oKGJpdHMgLSByKSAvIDI2LCB0aGlzLmxlbmd0aCk7XG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgdmFyIG1hc2tlZFdvcmRzID0gZXh0ZW5kZWQ7XG5cbiAgICBoIC09IHM7XG4gICAgaCA9IE1hdGgubWF4KDAsIGgpO1xuXG4gICAgLy8gRXh0ZW5kZWQgbW9kZSwgY29weSBtYXNrZWQgcGFydFxuICAgIGlmIChtYXNrZWRXb3Jkcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgbWFza2VkV29yZHMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuICAgICAgbWFza2VkV29yZHMubGVuZ3RoID0gcztcbiAgICB9XG5cbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgLy8gTm8tb3AsIHdlIHNob3VsZCBub3QgbW92ZSBhbnl0aGluZyBhdCBhbGxcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gcykge1xuICAgICAgdGhpcy5sZW5ndGggLT0gcztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2kgKyBzXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiAoY2FycnkgIT09IDAgfHwgaSA+PSBoKTsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IChjYXJyeSA8PCAoMjYgLSByKSkgfCAod29yZCA+Pj4gcik7XG4gICAgICBjYXJyeSA9IHdvcmQgJiBtYXNrO1xuICAgIH1cblxuICAgIC8vIFB1c2ggY2FycmllZCBiaXRzIGFzIGEgbWFza1xuICAgIGlmIChtYXNrZWRXb3JkcyAmJiBjYXJyeSAhPT0gMCkge1xuICAgICAgbWFza2VkV29yZHMud29yZHNbbWFza2VkV29yZHMubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hybiA9IGZ1bmN0aW9uIGlzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNocm4oYml0cywgaGludCwgZXh0ZW5kZWQpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnRcbiAgQk4ucHJvdG90eXBlLnNobG4gPSBmdW5jdGlvbiBzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNobG4gPSBmdW5jdGlvbiB1c2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0XG4gIEJOLnByb3RvdHlwZS5zaHJuID0gZnVuY3Rpb24gc2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaHJuID0gZnVuY3Rpb24gdXNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiaXRzKTtcbiAgfTtcblxuICAvLyBUZXN0IGlmIG4gYml0IGlzIHNldFxuICBCTi5wcm90b3R5cGUudGVzdG4gPSBmdW5jdGlvbiB0ZXN0biAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBiaXQgYW5kIHJldHVyblxuICAgIHZhciB3ID0gdGhpcy53b3Jkc1tzXTtcblxuICAgIHJldHVybiAhISh3ICYgcSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyIChpbi1wbGFjZSlcbiAgQk4ucHJvdG90eXBlLmltYXNrbiA9IGZ1bmN0aW9uIGltYXNrbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcblxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAnaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzJyk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHMrKztcbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1pbihzLCB0aGlzLmxlbmd0aCk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gJj0gbWFzaztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlclxuICBCTi5wcm90b3R5cGUubWFza24gPSBmdW5jdGlvbiBtYXNrbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGJpdHMpO1xuICB9O1xuXG4gIC8vIEFkZCBwbGFpbiBudW1iZXIgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pYWRkbiA9IGZ1bmN0aW9uIGlhZGRuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pc3VibigtbnVtKTtcblxuICAgIC8vIFBvc3NpYmxlIHNpZ24gY2hhbmdlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiAodGhpcy53b3Jkc1swXSB8IDApIDwgbnVtKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gPSBudW0gLSAodGhpcy53b3Jkc1swXSB8IDApO1xuICAgICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pc3VibihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aG91dCBjaGVja3NcbiAgICByZXR1cm4gdGhpcy5faWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lhZGRuID0gZnVuY3Rpb24gX2lhZGRuIChudW0pIHtcbiAgICB0aGlzLndvcmRzWzBdICs9IG51bTtcblxuICAgIC8vIENhcnJ5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldID49IDB4NDAwMDAwMDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldIC09IDB4NDAwMDAwMDtcbiAgICAgIGlmIChpID09PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0rKztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSArIDEpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgcGxhaW4gbnVtYmVyIGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pc3VibiA9IGZ1bmN0aW9uIGlzdWJuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pYWRkbigtbnVtKTtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZG4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy53b3Jkc1swXSAtPSBudW07XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA8IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAtdGhpcy53b3Jkc1swXTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDYXJyeVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldIDwgMDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gKz0gMHg0MDAwMDAwO1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSAtPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFkZG4gPSBmdW5jdGlvbiBhZGRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnN1Ym4gPSBmdW5jdGlvbiBzdWJuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhYnMgPSBmdW5jdGlvbiBpYWJzICgpIHtcbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiBhYnMgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFicygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faXNobG5zdWJtdWwgPSBmdW5jdGlvbiBfaXNobG5zdWJtdWwgKG51bSwgbXVsLCBzaGlmdCkge1xuICAgIHZhciBsZW4gPSBudW0ubGVuZ3RoICsgc2hpZnQ7XG4gICAgdmFyIGk7XG5cbiAgICB0aGlzLl9leHBhbmQobGVuKTtcblxuICAgIHZhciB3O1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgdmFyIHJpZ2h0ID0gKG51bS53b3Jkc1tpXSB8IDApICogbXVsO1xuICAgICAgdyAtPSByaWdodCAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gKHcgPj4gMjYpIC0gKChyaWdodCAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBpIDwgdGhpcy5sZW5ndGggLSBzaGlmdDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSA9PT0gMCkgcmV0dXJuIHRoaXMuc3RyaXAoKTtcblxuICAgIC8vIFN1YnRyYWN0aW9uIG92ZXJmbG93XG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAtMSk7XG4gICAgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gLSh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICB0aGlzLm5lZ2F0aXZlID0gMTtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl93b3JkRGl2ID0gZnVuY3Rpb24gX3dvcmREaXYgKG51bSwgbW9kZSkge1xuICAgIHZhciBzaGlmdCA9IHRoaXMubGVuZ3RoIC0gbnVtLmxlbmd0aDtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtO1xuXG4gICAgLy8gTm9ybWFsaXplXG4gICAgdmFyIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgdmFyIGJoaUJpdHMgPSB0aGlzLl9jb3VudEJpdHMoYmhpKTtcbiAgICBzaGlmdCA9IDI2IC0gYmhpQml0cztcbiAgICBpZiAoc2hpZnQgIT09IDApIHtcbiAgICAgIGIgPSBiLnVzaGxuKHNoaWZ0KTtcbiAgICAgIGEuaXVzaGxuKHNoaWZ0KTtcbiAgICAgIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBxdW90aWVudFxuICAgIHZhciBtID0gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAgICB2YXIgcTtcblxuICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgcSA9IG5ldyBCTihudWxsKTtcbiAgICAgIHEubGVuZ3RoID0gbSArIDE7XG4gICAgICBxLndvcmRzID0gbmV3IEFycmF5KHEubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcS5sZW5ndGg7IGkrKykge1xuICAgICAgICBxLndvcmRzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGlmZiA9IGEuY2xvbmUoKS5faXNobG5zdWJtdWwoYiwgMSwgbSk7XG4gICAgaWYgKGRpZmYubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIGEgPSBkaWZmO1xuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1ttXSA9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IG0gLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgdmFyIHFqID0gKGEud29yZHNbYi5sZW5ndGggKyBqXSB8IDApICogMHg0MDAwMDAwICtcbiAgICAgICAgKGEud29yZHNbYi5sZW5ndGggKyBqIC0gMV0gfCAwKTtcblxuICAgICAgLy8gTk9URTogKHFqIC8gYmhpKSBpcyAoMHgzZmZmZmZmICogMHg0MDAwMDAwICsgMHgzZmZmZmZmKSAvIDB4MjAwMDAwMCBtYXhcbiAgICAgIC8vICgweDdmZmZmZmYpXG4gICAgICBxaiA9IE1hdGgubWluKChxaiAvIGJoaSkgfCAwLCAweDNmZmZmZmYpO1xuXG4gICAgICBhLl9pc2hsbnN1Ym11bChiLCBxaiwgaik7XG4gICAgICB3aGlsZSAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBxai0tO1xuICAgICAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgYS5faXNobG5zdWJtdWwoYiwgMSwgaik7XG4gICAgICAgIGlmICghYS5pc1plcm8oKSkge1xuICAgICAgICAgIGEubmVnYXRpdmUgXj0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1tqXSA9IHFqO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocSkge1xuICAgICAgcS5zdHJpcCgpO1xuICAgIH1cbiAgICBhLnN0cmlwKCk7XG5cbiAgICAvLyBEZW5vcm1hbGl6ZVxuICAgIGlmIChtb2RlICE9PSAnZGl2JyAmJiBzaGlmdCAhPT0gMCkge1xuICAgICAgYS5pdXNocm4oc2hpZnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaXY6IHEgfHwgbnVsbCxcbiAgICAgIG1vZDogYVxuICAgIH07XG4gIH07XG5cbiAgLy8gTk9URTogMSkgYG1vZGVgIGNhbiBiZSBzZXQgdG8gYG1vZGAgdG8gcmVxdWVzdCBtb2Qgb25seSxcbiAgLy8gICAgICAgdG8gYGRpdmAgdG8gcmVxdWVzdCBkaXYgb25seSwgb3IgYmUgYWJzZW50IHRvXG4gIC8vICAgICAgIHJlcXVlc3QgYm90aCBkaXYgJiBtb2RcbiAgLy8gICAgICAgMikgYHBvc2l0aXZlYCBpcyB0cnVlIGlmIHVuc2lnbmVkIG1vZCBpcyByZXF1ZXN0ZWRcbiAgQk4ucHJvdG90eXBlLmRpdm1vZCA9IGZ1bmN0aW9uIGRpdm1vZCAobnVtLCBtb2RlLCBwb3NpdGl2ZSkge1xuICAgIGFzc2VydCghbnVtLmlzWmVybygpKTtcblxuICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiBuZXcgQk4oMClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRpdiwgbW9kLCByZXM7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0sIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaWFkZChudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiByZXMubW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICgodGhpcy5uZWdhdGl2ZSAmIG51bS5uZWdhdGl2ZSkgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlzdWIobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHJlcy5kaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmUgYXQgdGhpcyBwb2ludFxuXG4gICAgLy8gU3RyaXAgYm90aCBudW1iZXJzIHRvIGFwcHJveGltYXRlIHNoaWZ0IHZhbHVlXG4gICAgaWYgKG51bS5sZW5ndGggPiB0aGlzLmxlbmd0aCB8fCB0aGlzLmNtcChudW0pIDwgMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogdGhpc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBWZXJ5IHNob3J0IHJlZHVjdGlvblxuICAgIGlmIChudW0ubGVuZ3RoID09PSAxKSB7XG4gICAgICBpZiAobW9kZSA9PT0gJ2RpdicpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICAgIG1vZDogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSA9PT0gJ21vZCcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IG51bGwsXG4gICAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd29yZERpdihudW0sIG1vZGUpO1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgIC8gYG51bWBcbiAgQk4ucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uIGRpdiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ2RpdicsIGZhbHNlKS5kaXY7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgJSBgbnVtYFxuICBCTi5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgZmFsc2UpLm1vZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW1vZCA9IGZ1bmN0aW9uIHVtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCB0cnVlKS5tb2Q7XG4gIH07XG5cbiAgLy8gRmluZCBSb3VuZChgdGhpc2AgLyBgbnVtYClcbiAgQk4ucHJvdG90eXBlLmRpdlJvdW5kID0gZnVuY3Rpb24gZGl2Um91bmQgKG51bSkge1xuICAgIHZhciBkbSA9IHRoaXMuZGl2bW9kKG51bSk7XG5cbiAgICAvLyBGYXN0IGNhc2UgLSBleGFjdCBkaXZpc2lvblxuICAgIGlmIChkbS5tb2QuaXNaZXJvKCkpIHJldHVybiBkbS5kaXY7XG5cbiAgICB2YXIgbW9kID0gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0ubW9kLmlzdWIobnVtKSA6IGRtLm1vZDtcblxuICAgIHZhciBoYWxmID0gbnVtLnVzaHJuKDEpO1xuICAgIHZhciByMiA9IG51bS5hbmRsbigxKTtcbiAgICB2YXIgY21wID0gbW9kLmNtcChoYWxmKTtcblxuICAgIC8vIFJvdW5kIGRvd25cbiAgICBpZiAoY21wIDwgMCB8fCByMiA9PT0gMSAmJiBjbXAgPT09IDApIHJldHVybiBkbS5kaXY7XG5cbiAgICAvLyBSb3VuZCB1cFxuICAgIHJldHVybiBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5kaXYuaXN1Ym4oMSkgOiBkbS5kaXYuaWFkZG4oMSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm1vZG4gPSBmdW5jdGlvbiBtb2RuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG4gICAgdmFyIHAgPSAoMSA8PCAyNikgJSBudW07XG5cbiAgICB2YXIgYWNjID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgYWNjID0gKHAgKiBhY2MgKyAodGhpcy53b3Jkc1tpXSB8IDApKSAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIGRpdmlzaW9uIGJ5IG51bWJlclxuICBCTi5wcm90b3R5cGUuaWRpdm4gPSBmdW5jdGlvbiBpZGl2biAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICsgY2FycnkgKiAweDQwMDAwMDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKHcgLyBudW0pIHwgMDtcbiAgICAgIGNhcnJ5ID0gdyAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5kaXZuID0gZnVuY3Rpb24gZGl2biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lZ2NkID0gZnVuY3Rpb24gZWdjZCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIHggPSB0aGlzO1xuICAgIHZhciB5ID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKHgubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHggPSB4LnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHggPSB4LmNsb25lKCk7XG4gICAgfVxuXG4gICAgLy8gQSAqIHggKyBCICogeSA9IHhcbiAgICB2YXIgQSA9IG5ldyBCTigxKTtcbiAgICB2YXIgQiA9IG5ldyBCTigwKTtcblxuICAgIC8vIEMgKiB4ICsgRCAqIHkgPSB5XG4gICAgdmFyIEMgPSBuZXcgQk4oMCk7XG4gICAgdmFyIEQgPSBuZXcgQk4oMSk7XG5cbiAgICB2YXIgZyA9IDA7XG5cbiAgICB3aGlsZSAoeC5pc0V2ZW4oKSAmJiB5LmlzRXZlbigpKSB7XG4gICAgICB4Lml1c2hybigxKTtcbiAgICAgIHkuaXVzaHJuKDEpO1xuICAgICAgKytnO1xuICAgIH1cblxuICAgIHZhciB5cCA9IHkuY2xvbmUoKTtcbiAgICB2YXIgeHAgPSB4LmNsb25lKCk7XG5cbiAgICB3aGlsZSAoIXguaXNaZXJvKCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7ICh4LndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgeC5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEEuaXNPZGQoKSB8fCBCLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEEuaWFkZCh5cCk7XG4gICAgICAgICAgICBCLmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEEuaXVzaHJuKDEpO1xuICAgICAgICAgIEIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7ICh5LndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgeS5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEMuaXNPZGQoKSB8fCBELmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEMuaWFkZCh5cCk7XG4gICAgICAgICAgICBELmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEMuaXVzaHJuKDEpO1xuICAgICAgICAgIEQuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh4LmNtcCh5KSA+PSAwKSB7XG4gICAgICAgIHguaXN1Yih5KTtcbiAgICAgICAgQS5pc3ViKEMpO1xuICAgICAgICBCLmlzdWIoRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5LmlzdWIoeCk7XG4gICAgICAgIEMuaXN1YihBKTtcbiAgICAgICAgRC5pc3ViKEIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhOiBDLFxuICAgICAgYjogRCxcbiAgICAgIGdjZDogeS5pdXNobG4oZylcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRoaXMgaXMgcmVkdWNlZCBpbmNhcm5hdGlvbiBvZiB0aGUgYmluYXJ5IEVFQVxuICAvLyBhYm92ZSwgZGVzaWduYXRlZCB0byBpbnZlcnQgbWVtYmVycyBvZiB0aGVcbiAgLy8gX3ByaW1lXyBmaWVsZHMgRihwKSBhdCBhIG1heGltYWwgc3BlZWRcbiAgQk4ucHJvdG90eXBlLl9pbnZtcCA9IGZ1bmN0aW9uIF9pbnZtcCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIGEgPSB0aGlzO1xuICAgIHZhciBiID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGEgPSBhLnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICAgIHZhciB4MiA9IG5ldyBCTigwKTtcblxuICAgIHZhciBkZWx0YSA9IGIuY2xvbmUoKTtcblxuICAgIHdoaWxlIChhLmNtcG4oMSkgPiAwICYmIGIuY21wbigxKSA+IDApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7IChhLndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgYS5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgxLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgxLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgxLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoYi53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIGIuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmICh4Mi5pc09kZCgpKSB7XG4gICAgICAgICAgICB4Mi5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4Mi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGEuY21wKGIpID49IDApIHtcbiAgICAgICAgYS5pc3ViKGIpO1xuICAgICAgICB4MS5pc3ViKHgyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGIuaXN1YihhKTtcbiAgICAgICAgeDIuaXN1Yih4MSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlcztcbiAgICBpZiAoYS5jbXBuKDEpID09PSAwKSB7XG4gICAgICByZXMgPSB4MTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0geDI7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQocCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ2NkID0gZnVuY3Rpb24gZ2NkIChudW0pIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIG51bS5hYnMoKTtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gdGhpcy5hYnMoKTtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtLmNsb25lKCk7XG4gICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgYi5uZWdhdGl2ZSA9IDA7XG5cbiAgICAvLyBSZW1vdmUgY29tbW9uIGZhY3RvciBvZiB0d29cbiAgICBmb3IgKHZhciBzaGlmdCA9IDA7IGEuaXNFdmVuKCkgJiYgYi5pc0V2ZW4oKTsgc2hpZnQrKykge1xuICAgICAgYS5pdXNocm4oMSk7XG4gICAgICBiLml1c2hybigxKTtcbiAgICB9XG5cbiAgICBkbyB7XG4gICAgICB3aGlsZSAoYS5pc0V2ZW4oKSkge1xuICAgICAgICBhLml1c2hybigxKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgIGIuaXVzaHJuKDEpO1xuICAgICAgfVxuXG4gICAgICB2YXIgciA9IGEuY21wKGIpO1xuICAgICAgaWYgKHIgPCAwKSB7XG4gICAgICAgIC8vIFN3YXAgYGFgIGFuZCBgYmAgdG8gbWFrZSBgYWAgYWx3YXlzIGJpZ2dlciB0aGFuIGBiYFxuICAgICAgICB2YXIgdCA9IGE7XG4gICAgICAgIGEgPSBiO1xuICAgICAgICBiID0gdDtcbiAgICAgIH0gZWxzZSBpZiAociA9PT0gMCB8fCBiLmNtcG4oMSkgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGEuaXN1YihiKTtcbiAgICB9IHdoaWxlICh0cnVlKTtcblxuICAgIHJldHVybiBiLml1c2hsbihzaGlmdCk7XG4gIH07XG5cbiAgLy8gSW52ZXJ0IG51bWJlciBpbiB0aGUgZmllbGQgRihudW0pXG4gIEJOLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZWdjZChudW0pLmEudW1vZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiBpc0V2ZW4gKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uIGlzT2RkICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMTtcbiAgfTtcblxuICAvLyBBbmQgZmlyc3Qgd29yZCBhbmQgbnVtXG4gIEJOLnByb3RvdHlwZS5hbmRsbiA9IGZ1bmN0aW9uIGFuZGxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkc1swXSAmIG51bTtcbiAgfTtcblxuICAvLyBJbmNyZW1lbnQgYXQgdGhlIGJpdCBwb3NpdGlvbiBpbi1saW5lXG4gIEJOLnByb3RvdHlwZS5iaW5jbiA9IGZ1bmN0aW9uIGJpbmNuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicpO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHRoaXMuX2V4cGFuZChzICsgMSk7XG4gICAgICB0aGlzLndvcmRzW3NdIHw9IHE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgYml0IGFuZCBwcm9wYWdhdGUsIGlmIG5lZWRlZFxuICAgIHZhciBjYXJyeSA9IHE7XG4gICAgZm9yICh2YXIgaSA9IHM7IGNhcnJ5ICE9PSAwICYmIGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdyArPSBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+Pj4gMjY7XG4gICAgICB3ICY9IDB4M2ZmZmZmZjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiBpc1plcm8gKCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbXBuID0gZnVuY3Rpb24gY21wbiAobnVtKSB7XG4gICAgdmFyIG5lZ2F0aXZlID0gbnVtIDwgMDtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmICFuZWdhdGl2ZSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG5lZ2F0aXZlKSByZXR1cm4gMTtcblxuICAgIHRoaXMuc3RyaXAoKTtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gMSkge1xuICAgICAgcmVzID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5lZ2F0aXZlKSB7XG4gICAgICAgIG51bSA9IC1udW07XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmLCAnTnVtYmVyIGlzIHRvbyBiaWcnKTtcblxuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzWzBdIHwgMDtcbiAgICAgIHJlcyA9IHcgPT09IG51bSA/IDAgOiB3IDwgbnVtID8gLTEgOiAxO1xuICAgIH1cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29tcGFyZSB0d28gbnVtYmVycyBhbmQgcmV0dXJuOlxuICAvLyAxIC0gaWYgYHRoaXNgID4gYG51bWBcbiAgLy8gMCAtIGlmIGB0aGlzYCA9PSBgbnVtYFxuICAvLyAtMSAtIGlmIGB0aGlzYCA8IGBudW1gXG4gIEJOLnByb3RvdHlwZS5jbXAgPSBmdW5jdGlvbiBjbXAgKG51bSkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIDE7XG5cbiAgICB2YXIgcmVzID0gdGhpcy51Y21wKG51bSk7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFVuc2lnbmVkIGNvbXBhcmlzb25cbiAgQk4ucHJvdG90eXBlLnVjbXAgPSBmdW5jdGlvbiB1Y21wIChudW0pIHtcbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBoYXZlIHRoZSBzYW1lIHNpZ25cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSByZXR1cm4gLTE7XG5cbiAgICB2YXIgcmVzID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGEgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHZhciBiID0gbnVtLndvcmRzW2ldIHwgMDtcblxuICAgICAgaWYgKGEgPT09IGIpIGNvbnRpbnVlO1xuICAgICAgaWYgKGEgPCBiKSB7XG4gICAgICAgIHJlcyA9IC0xO1xuICAgICAgfSBlbHNlIGlmIChhID4gYikge1xuICAgICAgICByZXMgPSAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0biA9IGZ1bmN0aW9uIGd0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndCA9IGZ1bmN0aW9uIGd0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlbiA9IGZ1bmN0aW9uIGd0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGUgPSBmdW5jdGlvbiBndGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0biA9IGZ1bmN0aW9uIGx0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHQgPSBmdW5jdGlvbiBsdCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGVuID0gZnVuY3Rpb24gbHRlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZSA9IGZ1bmN0aW9uIGx0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXFuID0gZnVuY3Rpb24gZXFuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAwO1xuICB9O1xuXG4gIC8vXG4gIC8vIEEgcmVkdWNlIGNvbnRleHQsIGNvdWxkIGJlIHVzaW5nIG1vbnRnb21lcnkgb3Igc29tZXRoaW5nIGJldHRlciwgZGVwZW5kaW5nXG4gIC8vIG9uIHRoZSBgbWAgaXRzZWxmLlxuICAvL1xuICBCTi5yZWQgPSBmdW5jdGlvbiByZWQgKG51bSkge1xuICAgIHJldHVybiBuZXcgUmVkKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvUmVkID0gZnVuY3Rpb24gdG9SZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIHJldHVybiBjdHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tUmVkID0gZnVuY3Rpb24gZnJvbVJlZCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAnZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2ZvcmNlUmVkID0gZnVuY3Rpb24gX2ZvcmNlUmVkIChjdHgpIHtcbiAgICB0aGlzLnJlZCA9IGN0eDtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZm9yY2VSZWQgPSBmdW5jdGlvbiBmb3JjZVJlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkQWRkID0gZnVuY3Rpb24gcmVkQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJQWRkID0gZnVuY3Rpb24gcmVkSUFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaWFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTdWIgPSBmdW5jdGlvbiByZWRTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTdWIgPSBmdW5jdGlvbiByZWRJU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNobCA9IGZ1bmN0aW9uIHJlZFNobCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zaGwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkTXVsID0gZnVuY3Rpb24gcmVkTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElNdWwgPSBmdW5jdGlvbiByZWRJTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTcXIgPSBmdW5jdGlvbiByZWRTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FyKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3FyID0gZnVuY3Rpb24gcmVkSVNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXNxcih0aGlzKTtcbiAgfTtcblxuICAvLyBTcXVhcmUgcm9vdCBvdmVyIHBcbiAgQk4ucHJvdG90eXBlLnJlZFNxcnQgPSBmdW5jdGlvbiByZWRTcXJ0ICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXJ0KHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJbnZtID0gZnVuY3Rpb24gcmVkSW52bSAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW52bSh0aGlzKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgICUgYHJlZCBtb2R1bG9gXG4gIEJOLnByb3RvdHlwZS5yZWROZWcgPSBmdW5jdGlvbiByZWROZWcgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubmVnKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRQb3cgPSBmdW5jdGlvbiByZWRQb3cgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCAmJiAhbnVtLnJlZCwgJ3JlZFBvdyhub3JtYWxOdW0pJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnBvdyh0aGlzLCBudW0pO1xuICB9O1xuXG4gIC8vIFByaW1lIG51bWJlcnMgd2l0aCBlZmZpY2llbnQgcmVkdWN0aW9uXG4gIHZhciBwcmltZXMgPSB7XG4gICAgazI1NjogbnVsbCxcbiAgICBwMjI0OiBudWxsLFxuICAgIHAxOTI6IG51bGwsXG4gICAgcDI1NTE5OiBudWxsXG4gIH07XG5cbiAgLy8gUHNldWRvLU1lcnNlbm5lIHByaW1lXG4gIGZ1bmN0aW9uIE1QcmltZSAobmFtZSwgcCkge1xuICAgIC8vIFAgPSAyIF4gTiAtIEtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMucCA9IG5ldyBCTihwLCAxNik7XG4gICAgdGhpcy5uID0gdGhpcy5wLmJpdExlbmd0aCgpO1xuICAgIHRoaXMuayA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCk7XG5cbiAgICB0aGlzLnRtcCA9IHRoaXMuX3RtcCgpO1xuICB9XG5cbiAgTVByaW1lLnByb3RvdHlwZS5fdG1wID0gZnVuY3Rpb24gX3RtcCAoKSB7XG4gICAgdmFyIHRtcCA9IG5ldyBCTihudWxsKTtcbiAgICB0bXAud29yZHMgPSBuZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubiAvIDEzKSk7XG4gICAgcmV0dXJuIHRtcDtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmlyZWR1Y2UgPSBmdW5jdGlvbiBpcmVkdWNlIChudW0pIHtcbiAgICAvLyBBc3N1bWVzIHRoYXQgYG51bWAgaXMgbGVzcyB0aGFuIGBQXjJgXG4gICAgLy8gbnVtID0gSEkgKiAoMiBeIE4gLSBLKSArIEhJICogSyArIExPID0gSEkgKiBLICsgTE8gKG1vZCBQKVxuICAgIHZhciByID0gbnVtO1xuICAgIHZhciBybGVuO1xuXG4gICAgZG8ge1xuICAgICAgdGhpcy5zcGxpdChyLCB0aGlzLnRtcCk7XG4gICAgICByID0gdGhpcy5pbXVsSyhyKTtcbiAgICAgIHIgPSByLmlhZGQodGhpcy50bXApO1xuICAgICAgcmxlbiA9IHIuYml0TGVuZ3RoKCk7XG4gICAgfSB3aGlsZSAocmxlbiA+IHRoaXMubik7XG5cbiAgICB2YXIgY21wID0gcmxlbiA8IHRoaXMubiA/IC0xIDogci51Y21wKHRoaXMucCk7XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgci53b3Jkc1swXSA9IDA7XG4gICAgICByLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgICByLmlzdWIodGhpcy5wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHIuc3RyaXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyByIGlzIEJOIHY0IGluc3RhbmNlXG4gICAgICAgIHIuc3RyaXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHIgaXMgQk4gdjUgaW5zdGFuY2VcbiAgICAgICAgci5fc3RyaXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwidmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKVxudmFyIG1nZiA9IHJlcXVpcmUoJy4vbWdmJylcbnZhciB4b3IgPSByZXF1aXJlKCcuL3hvcicpXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKVxudmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpXG52YXIgd2l0aFB1YmxpYyA9IHJlcXVpcmUoJy4vd2l0aFB1YmxpYycpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwcml2YXRlRGVjcnlwdCAocHJpdmF0ZUtleSwgZW5jLCByZXZlcnNlKSB7XG4gIHZhciBwYWRkaW5nXG4gIGlmIChwcml2YXRlS2V5LnBhZGRpbmcpIHtcbiAgICBwYWRkaW5nID0gcHJpdmF0ZUtleS5wYWRkaW5nXG4gIH0gZWxzZSBpZiAocmV2ZXJzZSkge1xuICAgIHBhZGRpbmcgPSAxXG4gIH0gZWxzZSB7XG4gICAgcGFkZGluZyA9IDRcbiAgfVxuXG4gIHZhciBrZXkgPSBwYXJzZUtleXMocHJpdmF0ZUtleSlcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgaWYgKGVuYy5sZW5ndGggPiBrIHx8IG5ldyBCTihlbmMpLmNtcChrZXkubW9kdWx1cykgPj0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpXG4gIH1cbiAgdmFyIG1zZ1xuICBpZiAocmV2ZXJzZSkge1xuICAgIG1zZyA9IHdpdGhQdWJsaWMobmV3IEJOKGVuYyksIGtleSlcbiAgfSBlbHNlIHtcbiAgICBtc2cgPSBjcnQoZW5jLCBrZXkpXG4gIH1cbiAgdmFyIHpCdWZmZXIgPSBCdWZmZXIuYWxsb2MoayAtIG1zZy5sZW5ndGgpXG4gIG1zZyA9IEJ1ZmZlci5jb25jYXQoW3pCdWZmZXIsIG1zZ10sIGspXG4gIGlmIChwYWRkaW5nID09PSA0KSB7XG4gICAgcmV0dXJuIG9hZXAoa2V5LCBtc2cpXG4gIH0gZWxzZSBpZiAocGFkZGluZyA9PT0gMSkge1xuICAgIHJldHVybiBwa2NzMShrZXksIG1zZywgcmV2ZXJzZSlcbiAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAzKSB7XG4gICAgcmV0dXJuIG1zZ1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBwYWRkaW5nJylcbiAgfVxufVxuXG5mdW5jdGlvbiBvYWVwIChrZXksIG1zZykge1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKVxuICB2YXIgaUhhc2ggPSBjcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKEJ1ZmZlci5hbGxvYygwKSkuZGlnZXN0KClcbiAgdmFyIGhMZW4gPSBpSGFzaC5sZW5ndGhcbiAgaWYgKG1zZ1swXSAhPT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpXG4gIH1cbiAgdmFyIG1hc2tlZFNlZWQgPSBtc2cuc2xpY2UoMSwgaExlbiArIDEpXG4gIHZhciBtYXNrZWREYiA9IG1zZy5zbGljZShoTGVuICsgMSlcbiAgdmFyIHNlZWQgPSB4b3IobWFza2VkU2VlZCwgbWdmKG1hc2tlZERiLCBoTGVuKSlcbiAgdmFyIGRiID0geG9yKG1hc2tlZERiLCBtZ2Yoc2VlZCwgayAtIGhMZW4gLSAxKSlcbiAgaWYgKGNvbXBhcmUoaUhhc2gsIGRiLnNsaWNlKDAsIGhMZW4pKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpXG4gIH1cbiAgdmFyIGkgPSBoTGVuXG4gIHdoaWxlIChkYltpXSA9PT0gMCkge1xuICAgIGkrK1xuICB9XG4gIGlmIChkYltpKytdICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJylcbiAgfVxuICByZXR1cm4gZGIuc2xpY2UoaSlcbn1cblxuZnVuY3Rpb24gcGtjczEgKGtleSwgbXNnLCByZXZlcnNlKSB7XG4gIHZhciBwMSA9IG1zZy5zbGljZSgwLCAyKVxuICB2YXIgaSA9IDJcbiAgdmFyIHN0YXR1cyA9IDBcbiAgd2hpbGUgKG1zZ1tpKytdICE9PSAwKSB7XG4gICAgaWYgKGkgPj0gbXNnLmxlbmd0aCkge1xuICAgICAgc3RhdHVzKytcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG4gIHZhciBwcyA9IG1zZy5zbGljZSgyLCBpIC0gMSlcblxuICBpZiAoKHAxLnRvU3RyaW5nKCdoZXgnKSAhPT0gJzAwMDInICYmICFyZXZlcnNlKSB8fCAocDEudG9TdHJpbmcoJ2hleCcpICE9PSAnMDAwMScgJiYgcmV2ZXJzZSkpIHtcbiAgICBzdGF0dXMrK1xuICB9XG4gIGlmIChwcy5sZW5ndGggPCA4KSB7XG4gICAgc3RhdHVzKytcbiAgfVxuICBpZiAoc3RhdHVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJylcbiAgfVxuICByZXR1cm4gbXNnLnNsaWNlKGkpXG59XG5mdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGEgPSBCdWZmZXIuZnJvbShhKVxuICBiID0gQnVmZmVyLmZyb20oYilcbiAgdmFyIGRpZiA9IDBcbiAgdmFyIGxlbiA9IGEubGVuZ3RoXG4gIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICBkaWYrK1xuICAgIGxlbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aClcbiAgfVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBkaWYgKz0gKGFbaV0gXiBiW2ldKVxuICB9XG4gIHJldHVybiBkaWZcbn1cbiIsInZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJylcbnZhciByYW5kb21CeXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJylcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxudmFyIG1nZiA9IHJlcXVpcmUoJy4vbWdmJylcbnZhciB4b3IgPSByZXF1aXJlKCcuL3hvcicpXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgd2l0aFB1YmxpYyA9IHJlcXVpcmUoJy4vd2l0aFB1YmxpYycpXG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcHVibGljRW5jcnlwdCAocHVibGljS2V5LCBtc2csIHJldmVyc2UpIHtcbiAgdmFyIHBhZGRpbmdcbiAgaWYgKHB1YmxpY0tleS5wYWRkaW5nKSB7XG4gICAgcGFkZGluZyA9IHB1YmxpY0tleS5wYWRkaW5nXG4gIH0gZWxzZSBpZiAocmV2ZXJzZSkge1xuICAgIHBhZGRpbmcgPSAxXG4gIH0gZWxzZSB7XG4gICAgcGFkZGluZyA9IDRcbiAgfVxuICB2YXIga2V5ID0gcGFyc2VLZXlzKHB1YmxpY0tleSlcbiAgdmFyIHBhZGRlZE1zZ1xuICBpZiAocGFkZGluZyA9PT0gNCkge1xuICAgIHBhZGRlZE1zZyA9IG9hZXAoa2V5LCBtc2cpXG4gIH0gZWxzZSBpZiAocGFkZGluZyA9PT0gMSkge1xuICAgIHBhZGRlZE1zZyA9IHBrY3MxKGtleSwgbXNnLCByZXZlcnNlKVxuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDMpIHtcbiAgICBwYWRkZWRNc2cgPSBuZXcgQk4obXNnKVxuICAgIGlmIChwYWRkZWRNc2cuY21wKGtleS5tb2R1bHVzKSA+PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgdG9vIGxvbmcgZm9yIG1vZHVsdXMnKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gcGFkZGluZycpXG4gIH1cbiAgaWYgKHJldmVyc2UpIHtcbiAgICByZXR1cm4gY3J0KHBhZGRlZE1zZywga2V5KVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB3aXRoUHVibGljKHBhZGRlZE1zZywga2V5KVxuICB9XG59XG5cbmZ1bmN0aW9uIG9hZXAgKGtleSwgbXNnKSB7XG4gIHZhciBrID0ga2V5Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBtTGVuID0gbXNnLmxlbmd0aFxuICB2YXIgaUhhc2ggPSBjcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKEJ1ZmZlci5hbGxvYygwKSkuZGlnZXN0KClcbiAgdmFyIGhMZW4gPSBpSGFzaC5sZW5ndGhcbiAgdmFyIGhMZW4yID0gMiAqIGhMZW5cbiAgaWYgKG1MZW4gPiBrIC0gaExlbjIgLSAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXNzYWdlIHRvbyBsb25nJylcbiAgfVxuICB2YXIgcHMgPSBCdWZmZXIuYWxsb2MoayAtIG1MZW4gLSBoTGVuMiAtIDIpXG4gIHZhciBkYmxlbiA9IGsgLSBoTGVuIC0gMVxuICB2YXIgc2VlZCA9IHJhbmRvbUJ5dGVzKGhMZW4pXG4gIHZhciBtYXNrZWREYiA9IHhvcihCdWZmZXIuY29uY2F0KFtpSGFzaCwgcHMsIEJ1ZmZlci5hbGxvYygxLCAxKSwgbXNnXSwgZGJsZW4pLCBtZ2Yoc2VlZCwgZGJsZW4pKVxuICB2YXIgbWFza2VkU2VlZCA9IHhvcihzZWVkLCBtZ2YobWFza2VkRGIsIGhMZW4pKVxuICByZXR1cm4gbmV3IEJOKEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5hbGxvYygxKSwgbWFza2VkU2VlZCwgbWFza2VkRGJdLCBrKSlcbn1cbmZ1bmN0aW9uIHBrY3MxIChrZXksIG1zZywgcmV2ZXJzZSkge1xuICB2YXIgbUxlbiA9IG1zZy5sZW5ndGhcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgaWYgKG1MZW4gPiBrIC0gMTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UgdG9vIGxvbmcnKVxuICB9XG4gIHZhciBwc1xuICBpZiAocmV2ZXJzZSkge1xuICAgIHBzID0gQnVmZmVyLmFsbG9jKGsgLSBtTGVuIC0gMywgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBwcyA9IG5vblplcm8oayAtIG1MZW4gLSAzKVxuICB9XG4gIHJldHVybiBuZXcgQk4oQnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oWzAsIHJldmVyc2UgPyAxIDogMl0pLCBwcywgQnVmZmVyLmFsbG9jKDEpLCBtc2ddLCBrKSlcbn1cbmZ1bmN0aW9uIG5vblplcm8gKGxlbikge1xuICB2YXIgb3V0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKGxlbilcbiAgdmFyIGkgPSAwXG4gIHZhciBjYWNoZSA9IHJhbmRvbUJ5dGVzKGxlbiAqIDIpXG4gIHZhciBjdXIgPSAwXG4gIHZhciBudW1cbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICBpZiAoY3VyID09PSBjYWNoZS5sZW5ndGgpIHtcbiAgICAgIGNhY2hlID0gcmFuZG9tQnl0ZXMobGVuICogMilcbiAgICAgIGN1ciA9IDBcbiAgICB9XG4gICAgbnVtID0gY2FjaGVbY3VyKytdXG4gICAgaWYgKG51bSkge1xuICAgICAgb3V0W2krK10gPSBudW1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dFxufVxuIiwidmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbmZ1bmN0aW9uIHdpdGhQdWJsaWMgKHBhZGRlZE1zZywga2V5KSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShwYWRkZWRNc2dcbiAgICAudG9SZWQoQk4ubW9udChrZXkubW9kdWx1cykpXG4gICAgLnJlZFBvdyhuZXcgQk4oa2V5LnB1YmxpY0V4cG9uZW50KSlcbiAgICAuZnJvbVJlZCgpXG4gICAgLnRvQXJyYXkoKSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3aXRoUHVibGljXG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHhvciAoYSwgYikge1xuICB2YXIgbGVuID0gYS5sZW5ndGhcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgYVtpXSBePSBiW2ldXG4gIH1cbiAgcmV0dXJuIGFcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG4vLyBsaW1pdCBvZiBDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKClcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9DcnlwdG8vZ2V0UmFuZG9tVmFsdWVzXG52YXIgTUFYX0JZVEVTID0gNjU1MzZcblxuLy8gTm9kZSBzdXBwb3J0cyByZXF1ZXN0aW5nIHVwIHRvIHRoaXMgbnVtYmVyIG9mIGJ5dGVzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9tYXN0ZXIvbGliL2ludGVybmFsL2NyeXB0by9yYW5kb20uanMjTDQ4XG52YXIgTUFYX1VJTlQzMiA9IDQyOTQ5NjcyOTVcblxuZnVuY3Rpb24gb2xkQnJvd3NlciAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cXG5Vc2UgQ2hyb21lLCBGaXJlZm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExJylcbn1cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgY3J5cHRvID0gZ2xvYmFsLmNyeXB0byB8fCBnbG9iYWwubXNDcnlwdG9cblxuaWYgKGNyeXB0byAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmFuZG9tQnl0ZXNcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gb2xkQnJvd3NlclxufVxuXG5mdW5jdGlvbiByYW5kb21CeXRlcyAoc2l6ZSwgY2IpIHtcbiAgLy8gcGhhbnRvbWpzIG5lZWRzIHRvIHRocm93XG4gIGlmIChzaXplID4gTUFYX1VJTlQzMikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3JlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMnKVxuXG4gIHZhciBieXRlcyA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShzaXplKVxuXG4gIGlmIChzaXplID4gMCkgeyAgLy8gZ2V0UmFuZG9tVmFsdWVzIGZhaWxzIG9uIElFIGlmIHNpemUgPT0gMFxuICAgIGlmIChzaXplID4gTUFYX0JZVEVTKSB7IC8vIHRoaXMgaXMgdGhlIG1heCBieXRlcyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzXG4gICAgICAvLyBjYW4gZG8gYXQgb25jZSBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL3dpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzXG4gICAgICBmb3IgKHZhciBnZW5lcmF0ZWQgPSAwOyBnZW5lcmF0ZWQgPCBzaXplOyBnZW5lcmF0ZWQgKz0gTUFYX0JZVEVTKSB7XG4gICAgICAgIC8vIGJ1ZmZlci5zbGljZSBhdXRvbWF0aWNhbGx5IGNoZWNrcyBpZiB0aGUgZW5kIGlzIHBhc3QgdGhlIGVuZCBvZlxuICAgICAgICAvLyB0aGUgYnVmZmVyIHNvIHdlIGRvbid0IGhhdmUgdG8gaGVyZVxuICAgICAgICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGJ5dGVzLnNsaWNlKGdlbmVyYXRlZCwgZ2VuZXJhdGVkICsgTUFYX0JZVEVTKSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhieXRlcylcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgY2IobnVsbCwgYnl0ZXMpXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmZ1bmN0aW9uIG9sZEJyb3dzZXIgKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3NlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXJcXG51c2UgY2hyb21lLCBGaXJlRm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExJylcbn1cbnZhciBzYWZlQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKVxudmFyIHJhbmRvbWJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKVxudmFyIEJ1ZmZlciA9IHNhZmVCdWZmZXIuQnVmZmVyXG52YXIga0J1ZmZlck1heExlbmd0aCA9IHNhZmVCdWZmZXIua01heExlbmd0aFxudmFyIGNyeXB0byA9IGdsb2JhbC5jcnlwdG8gfHwgZ2xvYmFsLm1zQ3J5cHRvXG52YXIga01heFVpbnQzMiA9IE1hdGgucG93KDIsIDMyKSAtIDFcbmZ1bmN0aW9uIGFzc2VydE9mZnNldCAob2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAhPT0gb2Zmc2V0KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb2Zmc2V0IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKG9mZnNldCA+IGtNYXhVaW50MzIgfHwgb2Zmc2V0IDwgMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29mZnNldCBtdXN0IGJlIGEgdWludDMyJylcbiAgfVxuXG4gIGlmIChvZmZzZXQgPiBrQnVmZmVyTWF4TGVuZ3RoIHx8IG9mZnNldCA+IGxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgb3V0IG9mIHJhbmdlJylcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplLCBvZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInIHx8IHNpemUgIT09IHNpemUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplIG11c3QgYmUgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKHNpemUgPiBrTWF4VWludDMyIHx8IHNpemUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2l6ZSBtdXN0IGJlIGEgdWludDMyJylcbiAgfVxuXG4gIGlmIChzaXplICsgb2Zmc2V0ID4gbGVuZ3RoIHx8IHNpemUgPiBrQnVmZmVyTWF4TGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2J1ZmZlciB0b28gc21hbGwnKVxuICB9XG59XG5pZiAoKGNyeXB0byAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB8fCAhcHJvY2Vzcy5icm93c2VyKSB7XG4gIGV4cG9ydHMucmFuZG9tRmlsbCA9IHJhbmRvbUZpbGxcbiAgZXhwb3J0cy5yYW5kb21GaWxsU3luYyA9IHJhbmRvbUZpbGxTeW5jXG59IGVsc2Uge1xuICBleHBvcnRzLnJhbmRvbUZpbGwgPSBvbGRCcm93c2VyXG4gIGV4cG9ydHMucmFuZG9tRmlsbFN5bmMgPSBvbGRCcm93c2VyXG59XG5mdW5jdGlvbiByYW5kb21GaWxsIChidWYsIG9mZnNldCwgc2l6ZSwgY2IpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSAmJiAhKGJ1ZiBpbnN0YW5jZW9mIGdsb2JhbC5VaW50OEFycmF5KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBvciBVaW50OEFycmF5JylcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBvZmZzZXRcbiAgICBvZmZzZXQgPSAwXG4gICAgc2l6ZSA9IGJ1Zi5sZW5ndGhcbiAgfSBlbHNlIGlmICh0eXBlb2Ygc2l6ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gc2l6ZVxuICAgIHNpemUgPSBidWYubGVuZ3RoIC0gb2Zmc2V0XG4gIH0gZWxzZSBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJjYlwiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpXG4gIH1cbiAgYXNzZXJ0T2Zmc2V0KG9mZnNldCwgYnVmLmxlbmd0aClcbiAgYXNzZXJ0U2l6ZShzaXplLCBvZmZzZXQsIGJ1Zi5sZW5ndGgpXG4gIHJldHVybiBhY3R1YWxGaWxsKGJ1Ziwgb2Zmc2V0LCBzaXplLCBjYilcbn1cblxuZnVuY3Rpb24gYWN0dWFsRmlsbCAoYnVmLCBvZmZzZXQsIHNpemUsIGNiKSB7XG4gIGlmIChwcm9jZXNzLmJyb3dzZXIpIHtcbiAgICB2YXIgb3VyQnVmID0gYnVmLmJ1ZmZlclxuICAgIHZhciB1aW50ID0gbmV3IFVpbnQ4QXJyYXkob3VyQnVmLCBvZmZzZXQsIHNpemUpXG4gICAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh1aW50KVxuICAgIGlmIChjYikge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNiKG51bGwsIGJ1ZilcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgcmV0dXJuIGJ1ZlxuICB9XG4gIGlmIChjYikge1xuICAgIHJhbmRvbWJ5dGVzKHNpemUsIGZ1bmN0aW9uIChlcnIsIGJ5dGVzKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBjYihlcnIpXG4gICAgICB9XG4gICAgICBieXRlcy5jb3B5KGJ1Ziwgb2Zmc2V0KVxuICAgICAgY2IobnVsbCwgYnVmKVxuICAgIH0pXG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGJ5dGVzID0gcmFuZG9tYnl0ZXMoc2l6ZSlcbiAgYnl0ZXMuY29weShidWYsIG9mZnNldClcbiAgcmV0dXJuIGJ1ZlxufVxuZnVuY3Rpb24gcmFuZG9tRmlsbFN5bmMgKGJ1Ziwgb2Zmc2V0LCBzaXplKSB7XG4gIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAndW5kZWZpbmVkJykge1xuICAgIG9mZnNldCA9IDBcbiAgfVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpICYmICEoYnVmIGluc3RhbmNlb2YgZ2xvYmFsLlVpbnQ4QXJyYXkpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJidWZcIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKVxuICB9XG5cbiAgYXNzZXJ0T2Zmc2V0KG9mZnNldCwgYnVmLmxlbmd0aClcblxuICBpZiAoc2l6ZSA9PT0gdW5kZWZpbmVkKSBzaXplID0gYnVmLmxlbmd0aCAtIG9mZnNldFxuXG4gIGFzc2VydFNpemUoc2l6ZSwgb2Zmc2V0LCBidWYubGVuZ3RoKVxuXG4gIHJldHVybiBhY3R1YWxGaWxsKGJ1Ziwgb2Zmc2V0LCBzaXplKVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBfaW5oZXJpdHNMb29zZShzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MucHJvdG90eXBlKTsgc3ViQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gc3ViQ2xhc3M7IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIGNvZGVzID0ge307XG5cbmZ1bmN0aW9uIGNyZWF0ZUVycm9yVHlwZShjb2RlLCBtZXNzYWdlLCBCYXNlKSB7XG4gIGlmICghQmFzZSkge1xuICAgIEJhc2UgPSBFcnJvcjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE1lc3NhZ2UoYXJnMSwgYXJnMiwgYXJnMykge1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbWVzc2FnZShhcmcxLCBhcmcyLCBhcmczKTtcbiAgICB9XG4gIH1cblxuICB2YXIgTm9kZUVycm9yID1cbiAgLyojX19QVVJFX18qL1xuICBmdW5jdGlvbiAoX0Jhc2UpIHtcbiAgICBfaW5oZXJpdHNMb29zZShOb2RlRXJyb3IsIF9CYXNlKTtcblxuICAgIGZ1bmN0aW9uIE5vZGVFcnJvcihhcmcxLCBhcmcyLCBhcmczKSB7XG4gICAgICByZXR1cm4gX0Jhc2UuY2FsbCh0aGlzLCBnZXRNZXNzYWdlKGFyZzEsIGFyZzIsIGFyZzMpKSB8fCB0aGlzO1xuICAgIH1cblxuICAgIHJldHVybiBOb2RlRXJyb3I7XG4gIH0oQmFzZSk7XG5cbiAgTm9kZUVycm9yLnByb3RvdHlwZS5uYW1lID0gQmFzZS5uYW1lO1xuICBOb2RlRXJyb3IucHJvdG90eXBlLmNvZGUgPSBjb2RlO1xuICBjb2Rlc1tjb2RlXSA9IE5vZGVFcnJvcjtcbn0gLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvdjEwLjguMC9saWIvaW50ZXJuYWwvZXJyb3JzLmpzXG5cblxuZnVuY3Rpb24gb25lT2YoZXhwZWN0ZWQsIHRoaW5nKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGV4cGVjdGVkKSkge1xuICAgIHZhciBsZW4gPSBleHBlY3RlZC5sZW5ndGg7XG4gICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5tYXAoZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBTdHJpbmcoaSk7XG4gICAgfSk7XG5cbiAgICBpZiAobGVuID4gMikge1xuICAgICAgcmV0dXJuIFwib25lIG9mIFwiLmNvbmNhdCh0aGluZywgXCIgXCIpLmNvbmNhdChleHBlY3RlZC5zbGljZSgwLCBsZW4gLSAxKS5qb2luKCcsICcpLCBcIiwgb3IgXCIpICsgZXhwZWN0ZWRbbGVuIC0gMV07XG4gICAgfSBlbHNlIGlmIChsZW4gPT09IDIpIHtcbiAgICAgIHJldHVybiBcIm9uZSBvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWRbMF0sIFwiIG9yIFwiKS5jb25jYXQoZXhwZWN0ZWRbMV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWRbMF0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXCJvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoU3RyaW5nKGV4cGVjdGVkKSk7XG4gIH1cbn0gLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nL3N0YXJ0c1dpdGhcblxuXG5mdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgc2VhcmNoLCBwb3MpIHtcbiAgcmV0dXJuIHN0ci5zdWJzdHIoIXBvcyB8fCBwb3MgPCAwID8gMCA6ICtwb3MsIHNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7XG59IC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9lbmRzV2l0aFxuXG5cbmZ1bmN0aW9uIGVuZHNXaXRoKHN0ciwgc2VhcmNoLCB0aGlzX2xlbikge1xuICBpZiAodGhpc19sZW4gPT09IHVuZGVmaW5lZCB8fCB0aGlzX2xlbiA+IHN0ci5sZW5ndGgpIHtcbiAgICB0aGlzX2xlbiA9IHN0ci5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gc3RyLnN1YnN0cmluZyh0aGlzX2xlbiAtIHNlYXJjaC5sZW5ndGgsIHRoaXNfbGVuKSA9PT0gc2VhcmNoO1xufSAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvaW5jbHVkZXNcblxuXG5mdW5jdGlvbiBpbmNsdWRlcyhzdHIsIHNlYXJjaCwgc3RhcnQpIHtcbiAgaWYgKHR5cGVvZiBzdGFydCAhPT0gJ251bWJlcicpIHtcbiAgICBzdGFydCA9IDA7XG4gIH1cblxuICBpZiAoc3RhcnQgKyBzZWFyY2gubGVuZ3RoID4gc3RyLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RyLmluZGV4T2Yoc2VhcmNoLCBzdGFydCkgIT09IC0xO1xuICB9XG59XG5cbmNyZWF0ZUVycm9yVHlwZSgnRVJSX0lOVkFMSURfT1BUX1ZBTFVFJywgZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiAnVGhlIHZhbHVlIFwiJyArIHZhbHVlICsgJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcIicgKyBuYW1lICsgJ1wiJztcbn0sIFR5cGVFcnJvcik7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9JTlZBTElEX0FSR19UWVBFJywgZnVuY3Rpb24gKG5hbWUsIGV4cGVjdGVkLCBhY3R1YWwpIHtcbiAgLy8gZGV0ZXJtaW5lcjogJ211c3QgYmUnIG9yICdtdXN0IG5vdCBiZSdcbiAgdmFyIGRldGVybWluZXI7XG5cbiAgaWYgKHR5cGVvZiBleHBlY3RlZCA9PT0gJ3N0cmluZycgJiYgc3RhcnRzV2l0aChleHBlY3RlZCwgJ25vdCAnKSkge1xuICAgIGRldGVybWluZXIgPSAnbXVzdCBub3QgYmUnO1xuICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQucmVwbGFjZSgvXm5vdCAvLCAnJyk7XG4gIH0gZWxzZSB7XG4gICAgZGV0ZXJtaW5lciA9ICdtdXN0IGJlJztcbiAgfVxuXG4gIHZhciBtc2c7XG5cbiAgaWYgKGVuZHNXaXRoKG5hbWUsICcgYXJndW1lbnQnKSkge1xuICAgIC8vIEZvciBjYXNlcyBsaWtlICdmaXJzdCBhcmd1bWVudCdcbiAgICBtc2cgPSBcIlRoZSBcIi5jb25jYXQobmFtZSwgXCIgXCIpLmNvbmNhdChkZXRlcm1pbmVyLCBcIiBcIikuY29uY2F0KG9uZU9mKGV4cGVjdGVkLCAndHlwZScpKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdHlwZSA9IGluY2x1ZGVzKG5hbWUsICcuJykgPyAncHJvcGVydHknIDogJ2FyZ3VtZW50JztcbiAgICBtc2cgPSBcIlRoZSBcXFwiXCIuY29uY2F0KG5hbWUsIFwiXFxcIiBcIikuY29uY2F0KHR5cGUsIFwiIFwiKS5jb25jYXQoZGV0ZXJtaW5lciwgXCIgXCIpLmNvbmNhdChvbmVPZihleHBlY3RlZCwgJ3R5cGUnKSk7XG4gIH1cblxuICBtc2cgKz0gXCIuIFJlY2VpdmVkIHR5cGUgXCIuY29uY2F0KHR5cGVvZiBhY3R1YWwpO1xuICByZXR1cm4gbXNnO1xufSwgVHlwZUVycm9yKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRicsICdzdHJlYW0ucHVzaCgpIGFmdGVyIEVPRicpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCcsIGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiAnVGhlICcgKyBuYW1lICsgJyBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkJztcbn0pO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRScsICdQcmVtYXR1cmUgY2xvc2UnKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX1NUUkVBTV9ERVNUUk9ZRUQnLCBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gJ0Nhbm5vdCBjYWxsICcgKyBuYW1lICsgJyBhZnRlciBhIHN0cmVhbSB3YXMgZGVzdHJveWVkJztcbn0pO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfTVVMVElQTEVfQ0FMTEJBQ0snLCAnQ2FsbGJhY2sgY2FsbGVkIG11bHRpcGxlIHRpbWVzJyk7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9TVFJFQU1fQ0FOTk9UX1BJUEUnLCAnQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZScpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCcsICd3cml0ZSBhZnRlciBlbmQnKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUycsICdNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbScsIFR5cGVFcnJvcik7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9VTktOT1dOX0VOQ09ESU5HJywgZnVuY3Rpb24gKGFyZykge1xuICByZXR1cm4gJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBhcmc7XG59LCBUeXBlRXJyb3IpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UJywgJ3N0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50Jyk7XG5tb2R1bGUuZXhwb3J0cy5jb2RlcyA9IGNvZGVzO1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4vLyBhIGR1cGxleCBzdHJlYW0gaXMganVzdCBhIHN0cmVhbSB0aGF0IGlzIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLlxuLy8gU2luY2UgSlMgZG9lc24ndCBoYXZlIG11bHRpcGxlIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UsIHRoaXMgY2xhc3Ncbi8vIHByb3RvdHlwYWxseSBpbmhlcml0cyBmcm9tIFJlYWRhYmxlLCBhbmQgdGhlbiBwYXJhc2l0aWNhbGx5IGZyb21cbi8vIFdyaXRhYmxlLlxuJ3VzZSBzdHJpY3QnO1xuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciBrZXlzID0gW107XG5cbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGtleXMucHVzaChrZXkpO1xuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cblxubW9kdWxlLmV4cG9ydHMgPSBEdXBsZXg7XG5cbnZhciBSZWFkYWJsZSA9IHJlcXVpcmUoJy4vX3N0cmVhbV9yZWFkYWJsZScpO1xuXG52YXIgV3JpdGFibGUgPSByZXF1aXJlKCcuL19zdHJlYW1fd3JpdGFibGUnKTtcblxucmVxdWlyZSgnaW5oZXJpdHMnKShEdXBsZXgsIFJlYWRhYmxlKTtcblxue1xuICAvLyBBbGxvdyB0aGUga2V5cyBhcnJheSB0byBiZSBHQydlZC5cbiAgdmFyIGtleXMgPSBvYmplY3RLZXlzKFdyaXRhYmxlLnByb3RvdHlwZSk7XG5cbiAgZm9yICh2YXIgdiA9IDA7IHYgPCBrZXlzLmxlbmd0aDsgdisrKSB7XG4gICAgdmFyIG1ldGhvZCA9IGtleXNbdl07XG4gICAgaWYgKCFEdXBsZXgucHJvdG90eXBlW21ldGhvZF0pIER1cGxleC5wcm90b3R5cGVbbWV0aG9kXSA9IFdyaXRhYmxlLnByb3RvdHlwZVttZXRob2RdO1xuICB9XG59XG5cbmZ1bmN0aW9uIER1cGxleChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKSByZXR1cm4gbmV3IER1cGxleChvcHRpb25zKTtcbiAgUmVhZGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgV3JpdGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgdGhpcy5hbGxvd0hhbGZPcGVuID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLnJlYWRhYmxlID09PSBmYWxzZSkgdGhpcy5yZWFkYWJsZSA9IGZhbHNlO1xuICAgIGlmIChvcHRpb25zLndyaXRhYmxlID09PSBmYWxzZSkgdGhpcy53cml0YWJsZSA9IGZhbHNlO1xuXG4gICAgaWYgKG9wdGlvbnMuYWxsb3dIYWxmT3BlbiA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuYWxsb3dIYWxmT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5vbmNlKCdlbmQnLCBvbmVuZCk7XG4gICAgfVxuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLCAnd3JpdGFibGVIaWdoV2F0ZXJNYXJrJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLCAnd3JpdGFibGVCdWZmZXInLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlICYmIHRoaXMuX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyKCk7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICd3cml0YWJsZUxlbmd0aCcsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RoO1xuICB9XG59KTsgLy8gdGhlIG5vLWhhbGYtb3BlbiBlbmZvcmNlclxuXG5mdW5jdGlvbiBvbmVuZCgpIHtcbiAgLy8gSWYgdGhlIHdyaXRhYmxlIHNpZGUgZW5kZWQsIHRoZW4gd2UncmUgb2suXG4gIGlmICh0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkKSByZXR1cm47IC8vIG5vIG1vcmUgZGF0YSBjYW4gYmUgd3JpdHRlbi5cbiAgLy8gQnV0IGFsbG93IG1vcmUgd3JpdGVzIHRvIGhhcHBlbiBpbiB0aGlzIHRpY2suXG5cbiAgcHJvY2Vzcy5uZXh0VGljayhvbkVuZE5ULCB0aGlzKTtcbn1cblxuZnVuY3Rpb24gb25FbmROVChzZWxmKSB7XG4gIHNlbGYuZW5kKCk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLCAnZGVzdHJveWVkJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCAmJiB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAvLyB3ZSBpZ25vcmUgdGhlIHZhbHVlIGlmIHRoZSBzdHJlYW1cbiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRoZSB1c2VyIGlzIGV4cGxpY2l0bHlcbiAgICAvLyBtYW5hZ2luZyBkZXN0cm95ZWRcblxuXG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTsiLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbi8vIGEgcGFzc3Rocm91Z2ggc3RyZWFtLlxuLy8gYmFzaWNhbGx5IGp1c3QgdGhlIG1vc3QgbWluaW1hbCBzb3J0IG9mIFRyYW5zZm9ybSBzdHJlYW0uXG4vLyBFdmVyeSB3cml0dGVuIGNodW5rIGdldHMgb3V0cHV0IGFzLWlzLlxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhc3NUaHJvdWdoO1xuXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9fc3RyZWFtX3RyYW5zZm9ybScpO1xuXG5yZXF1aXJlKCdpbmhlcml0cycpKFBhc3NUaHJvdWdoLCBUcmFuc2Zvcm0pO1xuXG5mdW5jdGlvbiBQYXNzVGhyb3VnaChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQYXNzVGhyb3VnaCkpIHJldHVybiBuZXcgUGFzc1Rocm91Z2gob3B0aW9ucyk7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xufVxuXG5QYXNzVGhyb3VnaC5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIGNiKG51bGwsIGNodW5rKTtcbn07IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhZGFibGU7XG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgRHVwbGV4O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cblJlYWRhYmxlLlJlYWRhYmxlU3RhdGUgPSBSZWFkYWJsZVN0YXRlO1xuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEVFID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xuXG52YXIgRUVsaXN0ZW5lckNvdW50ID0gZnVuY3Rpb24gRUVsaXN0ZW5lckNvdW50KGVtaXR0ZXIsIHR5cGUpIHtcbiAgcmV0dXJuIGVtaXR0ZXIubGlzdGVuZXJzKHR5cGUpLmxlbmd0aDtcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxuXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcblxudmFyIE91clVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheSB8fCBmdW5jdGlvbiAoKSB7fTtcblxuZnVuY3Rpb24gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuaykge1xuICByZXR1cm4gQnVmZmVyLmZyb20oY2h1bmspO1xufVxuXG5mdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikge1xuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKG9iaikgfHwgb2JqIGluc3RhbmNlb2YgT3VyVWludDhBcnJheTtcbn1cbi8qPHJlcGxhY2VtZW50PiovXG5cblxudmFyIGRlYnVnVXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxudmFyIGRlYnVnO1xuXG5pZiAoZGVidWdVdGlsICYmIGRlYnVnVXRpbC5kZWJ1Z2xvZykge1xuICBkZWJ1ZyA9IGRlYnVnVXRpbC5kZWJ1Z2xvZygnc3RyZWFtJyk7XG59IGVsc2Uge1xuICBkZWJ1ZyA9IGZ1bmN0aW9uIGRlYnVnKCkge307XG59XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuXG52YXIgQnVmZmVyTGlzdCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9idWZmZXJfbGlzdCcpO1xuXG52YXIgZGVzdHJveUltcGwgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveScpO1xuXG52YXIgX3JlcXVpcmUgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvc3RhdGUnKSxcbiAgICBnZXRIaWdoV2F0ZXJNYXJrID0gX3JlcXVpcmUuZ2V0SGlnaFdhdGVyTWFyaztcblxudmFyIF9yZXF1aXJlJGNvZGVzID0gcmVxdWlyZSgnLi4vZXJyb3JzJykuY29kZXMsXG4gICAgRVJSX0lOVkFMSURfQVJHX1RZUEUgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfSU5WQUxJRF9BUkdfVFlQRSxcbiAgICBFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GID0gX3JlcXVpcmUkY29kZXMuRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRixcbiAgICBFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCA9IF9yZXF1aXJlJGNvZGVzLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELFxuICAgIEVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UOyAvLyBMYXp5IGxvYWRlZCB0byBpbXByb3ZlIHRoZSBzdGFydHVwIHBlcmZvcm1hbmNlLlxuXG5cbnZhciBTdHJpbmdEZWNvZGVyO1xudmFyIGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvcjtcbnZhciBmcm9tO1xuXG5yZXF1aXJlKCdpbmhlcml0cycpKFJlYWRhYmxlLCBTdHJlYW0pO1xuXG52YXIgZXJyb3JPckRlc3Ryb3kgPSBkZXN0cm95SW1wbC5lcnJvck9yRGVzdHJveTtcbnZhciBrUHJveHlFdmVudHMgPSBbJ2Vycm9yJywgJ2Nsb3NlJywgJ2Rlc3Ryb3knLCAncGF1c2UnLCAncmVzdW1lJ107XG5cbmZ1bmN0aW9uIHByZXBlbmRMaXN0ZW5lcihlbWl0dGVyLCBldmVudCwgZm4pIHtcbiAgLy8gU2FkbHkgdGhpcyBpcyBub3QgY2FjaGVhYmxlIGFzIHNvbWUgbGlicmFyaWVzIGJ1bmRsZSB0aGVpciBvd25cbiAgLy8gZXZlbnQgZW1pdHRlciBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZW0uXG4gIGlmICh0eXBlb2YgZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHJldHVybiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lcihldmVudCwgZm4pOyAvLyBUaGlzIGlzIGEgaGFjayB0byBtYWtlIHN1cmUgdGhhdCBvdXIgZXJyb3IgaGFuZGxlciBpcyBhdHRhY2hlZCBiZWZvcmUgYW55XG4gIC8vIHVzZXJsYW5kIG9uZXMuICBORVZFUiBETyBUSElTLiBUaGlzIGlzIGhlcmUgb25seSBiZWNhdXNlIHRoaXMgY29kZSBuZWVkc1xuICAvLyB0byBjb250aW51ZSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgTm9kZS5qcyB0aGF0IGRvIG5vdCBpbmNsdWRlXG4gIC8vIHRoZSBwcmVwZW5kTGlzdGVuZXIoKSBtZXRob2QuIFRoZSBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgcmVtb3ZlIHRoaXMgaGFjay5cblxuICBpZiAoIWVtaXR0ZXIuX2V2ZW50cyB8fCAhZW1pdHRlci5fZXZlbnRzW2V2ZW50XSkgZW1pdHRlci5vbihldmVudCwgZm4pO2Vsc2UgaWYgKEFycmF5LmlzQXJyYXkoZW1pdHRlci5fZXZlbnRzW2V2ZW50XSkpIGVtaXR0ZXIuX2V2ZW50c1tldmVudF0udW5zaGlmdChmbik7ZWxzZSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdID0gW2ZuLCBlbWl0dGVyLl9ldmVudHNbZXZlbnRdXTtcbn1cblxuZnVuY3Rpb24gUmVhZGFibGVTdGF0ZShvcHRpb25zLCBzdHJlYW0sIGlzRHVwbGV4KSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OyAvLyBEdXBsZXggc3RyZWFtcyBhcmUgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUsIGJ1dCBzaGFyZVxuICAvLyB0aGUgc2FtZSBvcHRpb25zIG9iamVjdC5cbiAgLy8gSG93ZXZlciwgc29tZSBjYXNlcyByZXF1aXJlIHNldHRpbmcgb3B0aW9ucyB0byBkaWZmZXJlbnRcbiAgLy8gdmFsdWVzIGZvciB0aGUgcmVhZGFibGUgYW5kIHRoZSB3cml0YWJsZSBzaWRlcyBvZiB0aGUgZHVwbGV4IHN0cmVhbS5cbiAgLy8gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgcHJvdmlkZWQgc2VwYXJhdGVseSBhcyByZWFkYWJsZVhYWCBhbmQgd3JpdGFibGVYWFguXG5cbiAgaWYgKHR5cGVvZiBpc0R1cGxleCAhPT0gJ2Jvb2xlYW4nKSBpc0R1cGxleCA9IHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleDsgLy8gb2JqZWN0IHN0cmVhbSBmbGFnLiBVc2VkIHRvIG1ha2UgcmVhZChuKSBpZ25vcmUgbiBhbmQgdG9cbiAgLy8gbWFrZSBhbGwgdGhlIGJ1ZmZlciBtZXJnaW5nIGFuZCBsZW5ndGggY2hlY2tzIGdvIGF3YXlcblxuICB0aGlzLm9iamVjdE1vZGUgPSAhIW9wdGlvbnMub2JqZWN0TW9kZTtcbiAgaWYgKGlzRHVwbGV4KSB0aGlzLm9iamVjdE1vZGUgPSB0aGlzLm9iamVjdE1vZGUgfHwgISFvcHRpb25zLnJlYWRhYmxlT2JqZWN0TW9kZTsgLy8gdGhlIHBvaW50IGF0IHdoaWNoIGl0IHN0b3BzIGNhbGxpbmcgX3JlYWQoKSB0byBmaWxsIHRoZSBidWZmZXJcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyBcImRvbid0IGNhbGwgX3JlYWQgcHJlZW1wdGl2ZWx5IGV2ZXJcIlxuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IGdldEhpZ2hXYXRlck1hcmsodGhpcywgb3B0aW9ucywgJ3JlYWRhYmxlSGlnaFdhdGVyTWFyaycsIGlzRHVwbGV4KTsgLy8gQSBsaW5rZWQgbGlzdCBpcyB1c2VkIHRvIHN0b3JlIGRhdGEgY2h1bmtzIGluc3RlYWQgb2YgYW4gYXJyYXkgYmVjYXVzZSB0aGVcbiAgLy8gbGlua2VkIGxpc3QgY2FuIHJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSBiZWdpbm5pbmcgZmFzdGVyIHRoYW5cbiAgLy8gYXJyYXkuc2hpZnQoKVxuXG4gIHRoaXMuYnVmZmVyID0gbmV3IEJ1ZmZlckxpc3QoKTtcbiAgdGhpcy5sZW5ndGggPSAwO1xuICB0aGlzLnBpcGVzID0gbnVsbDtcbiAgdGhpcy5waXBlc0NvdW50ID0gMDtcbiAgdGhpcy5mbG93aW5nID0gbnVsbDtcbiAgdGhpcy5lbmRlZCA9IGZhbHNlO1xuICB0aGlzLmVuZEVtaXR0ZWQgPSBmYWxzZTtcbiAgdGhpcy5yZWFkaW5nID0gZmFsc2U7IC8vIGEgZmxhZyB0byBiZSBhYmxlIHRvIHRlbGwgaWYgdGhlIGV2ZW50ICdyZWFkYWJsZScvJ2RhdGEnIGlzIGVtaXR0ZWRcbiAgLy8gaW1tZWRpYXRlbHksIG9yIG9uIGEgbGF0ZXIgdGljay4gIFdlIHNldCB0aGlzIHRvIHRydWUgYXQgZmlyc3QsIGJlY2F1c2VcbiAgLy8gYW55IGFjdGlvbnMgdGhhdCBzaG91bGRuJ3QgaGFwcGVuIHVudGlsIFwibGF0ZXJcIiBzaG91bGQgZ2VuZXJhbGx5IGFsc29cbiAgLy8gbm90IGhhcHBlbiBiZWZvcmUgdGhlIGZpcnN0IHJlYWQgY2FsbC5cblxuICB0aGlzLnN5bmMgPSB0cnVlOyAvLyB3aGVuZXZlciB3ZSByZXR1cm4gbnVsbCwgdGhlbiB3ZSBzZXQgYSBmbGFnIHRvIHNheVxuICAvLyB0aGF0IHdlJ3JlIGF3YWl0aW5nIGEgJ3JlYWRhYmxlJyBldmVudCBlbWlzc2lvbi5cblxuICB0aGlzLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLnJlYWRhYmxlTGlzdGVuaW5nID0gZmFsc2U7XG4gIHRoaXMucmVzdW1lU2NoZWR1bGVkID0gZmFsc2U7XG4gIHRoaXMucGF1c2VkID0gdHJ1ZTsgLy8gU2hvdWxkIGNsb3NlIGJlIGVtaXR0ZWQgb24gZGVzdHJveS4gRGVmYXVsdHMgdG8gdHJ1ZS5cblxuICB0aGlzLmVtaXRDbG9zZSA9IG9wdGlvbnMuZW1pdENsb3NlICE9PSBmYWxzZTsgLy8gU2hvdWxkIC5kZXN0cm95KCkgYmUgY2FsbGVkIGFmdGVyICdlbmQnIChhbmQgcG90ZW50aWFsbHkgJ2ZpbmlzaCcpXG5cbiAgdGhpcy5hdXRvRGVzdHJveSA9ICEhb3B0aW9ucy5hdXRvRGVzdHJveTsgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkXG5cbiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTsgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cblxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JzsgLy8gdGhlIG51bWJlciBvZiB3cml0ZXJzIHRoYXQgYXJlIGF3YWl0aW5nIGEgZHJhaW4gZXZlbnQgaW4gLnBpcGUoKXNcblxuICB0aGlzLmF3YWl0RHJhaW4gPSAwOyAvLyBpZiB0cnVlLCBhIG1heWJlUmVhZE1vcmUgaGFzIGJlZW4gc2NoZWR1bGVkXG5cbiAgdGhpcy5yZWFkaW5nTW9yZSA9IGZhbHNlO1xuICB0aGlzLmRlY29kZXIgPSBudWxsO1xuICB0aGlzLmVuY29kaW5nID0gbnVsbDtcblxuICBpZiAob3B0aW9ucy5lbmNvZGluZykge1xuICAgIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gICAgdGhpcy5kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIob3B0aW9ucy5lbmNvZGluZyk7XG4gICAgdGhpcy5lbmNvZGluZyA9IG9wdGlvbnMuZW5jb2Rpbmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gUmVhZGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVhZGFibGUpKSByZXR1cm4gbmV3IFJlYWRhYmxlKG9wdGlvbnMpOyAvLyBDaGVja2luZyBmb3IgYSBTdHJlYW0uRHVwbGV4IGluc3RhbmNlIGlzIGZhc3RlciBoZXJlIGluc3RlYWQgb2YgaW5zaWRlXG4gIC8vIHRoZSBSZWFkYWJsZVN0YXRlIGNvbnN0cnVjdG9yLCBhdCBsZWFzdCB3aXRoIFY4IDYuNVxuXG4gIHZhciBpc0R1cGxleCA9IHRoaXMgaW5zdGFuY2VvZiBEdXBsZXg7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUgPSBuZXcgUmVhZGFibGVTdGF0ZShvcHRpb25zLCB0aGlzLCBpc0R1cGxleCk7IC8vIGxlZ2FjeVxuXG4gIHRoaXMucmVhZGFibGUgPSB0cnVlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnJlYWQgPT09ICdmdW5jdGlvbicpIHRoaXMuX3JlYWQgPSBvcHRpb25zLnJlYWQ7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHRoaXMuX2Rlc3Ryb3kgPSBvcHRpb25zLmRlc3Ryb3k7XG4gIH1cblxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ2Rlc3Ryb3llZCcsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAvLyB3ZSBpZ25vcmUgdGhlIHZhbHVlIGlmIHRoZSBzdHJlYW1cbiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG4gICAgaWYgKCF0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG5cblxuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7XG4gIH1cbn0pO1xuUmVhZGFibGUucHJvdG90eXBlLmRlc3Ryb3kgPSBkZXN0cm95SW1wbC5kZXN0cm95O1xuUmVhZGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3kgPSBkZXN0cm95SW1wbC51bmRlc3Ryb3k7XG5cblJlYWRhYmxlLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIGNiKGVycik7XG59OyAvLyBNYW51YWxseSBzaG92ZSBzb21ldGhpbmcgaW50byB0aGUgcmVhZCgpIGJ1ZmZlci5cbi8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIHRoZSBoaWdoV2F0ZXJNYXJrIGhhcyBub3QgYmVlbiBoaXQgeWV0LFxuLy8gc2ltaWxhciB0byBob3cgV3JpdGFibGUud3JpdGUoKSByZXR1cm5zIHRydWUgaWYgeW91IHNob3VsZFxuLy8gd3JpdGUoKSBzb21lIG1vcmUuXG5cblxuUmVhZGFibGUucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBza2lwQ2h1bmtDaGVjaztcblxuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBpZiAodHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZyB8fCBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG5cbiAgICAgIGlmIChlbmNvZGluZyAhPT0gc3RhdGUuZW5jb2RpbmcpIHtcbiAgICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpO1xuICAgICAgICBlbmNvZGluZyA9ICcnO1xuICAgICAgfVxuXG4gICAgICBza2lwQ2h1bmtDaGVjayA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHNraXBDaHVua0NoZWNrID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBlbmNvZGluZywgZmFsc2UsIHNraXBDaHVua0NoZWNrKTtcbn07IC8vIFVuc2hpZnQgc2hvdWxkICphbHdheXMqIGJlIHNvbWV0aGluZyBkaXJlY3RseSBvdXQgb2YgcmVhZCgpXG5cblxuUmVhZGFibGUucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgcmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcywgY2h1bmssIG51bGwsIHRydWUsIGZhbHNlKTtcbn07XG5cbmZ1bmN0aW9uIHJlYWRhYmxlQWRkQ2h1bmsoc3RyZWFtLCBjaHVuaywgZW5jb2RpbmcsIGFkZFRvRnJvbnQsIHNraXBDaHVua0NoZWNrKSB7XG4gIGRlYnVnKCdyZWFkYWJsZUFkZENodW5rJywgY2h1bmspO1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG5cbiAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGVyO1xuICAgIGlmICghc2tpcENodW5rQ2hlY2spIGVyID0gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuayk7XG5cbiAgICBpZiAoZXIpIHtcbiAgICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXIpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUub2JqZWN0TW9kZSB8fCBjaHVuayAmJiBjaHVuay5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiAhc3RhdGUub2JqZWN0TW9kZSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY2h1bmspICE9PSBCdWZmZXIucHJvdG90eXBlKSB7XG4gICAgICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhZGRUb0Zyb250KSB7XG4gICAgICAgIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBlcnJvck9yRGVzdHJveShzdHJlYW0sIG5ldyBFUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UKCkpO2Vsc2UgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5lbmRlZCkge1xuICAgICAgICBlcnJvck9yRGVzdHJveShzdHJlYW0sIG5ldyBFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GKCkpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5kZXN0cm95ZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChzdGF0ZS5kZWNvZGVyICYmICFlbmNvZGluZykge1xuICAgICAgICAgIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG4gICAgICAgICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgfHwgY2h1bmsubGVuZ3RoICE9PSAwKSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpO2Vsc2UgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghYWRkVG9Gcm9udCkge1xuICAgICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgICAgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKTtcbiAgICB9XG4gIH0gLy8gV2UgY2FuIHB1c2ggbW9yZSBkYXRhIGlmIHdlIGFyZSBiZWxvdyB0aGUgaGlnaFdhdGVyTWFyay5cbiAgLy8gQWxzbywgaWYgd2UgaGF2ZSBubyBkYXRhIHlldCwgd2UgY2FuIHN0YW5kIHNvbWUgbW9yZSBieXRlcy5cbiAgLy8gVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBjYXNlcyB3aGVyZSBod209MCwgc3VjaCBhcyB0aGUgcmVwbC5cblxuXG4gIHJldHVybiAhc3RhdGUuZW5kZWQgJiYgKHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUubGVuZ3RoID09PSAwKTtcbn1cblxuZnVuY3Rpb24gYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGFkZFRvRnJvbnQpIHtcbiAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmICFzdGF0ZS5zeW5jKSB7XG4gICAgc3RhdGUuYXdhaXREcmFpbiA9IDA7XG4gICAgc3RyZWFtLmVtaXQoJ2RhdGEnLCBjaHVuayk7XG4gIH0gZWxzZSB7XG4gICAgLy8gdXBkYXRlIHRoZSBidWZmZXIgaW5mby5cbiAgICBzdGF0ZS5sZW5ndGggKz0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG4gICAgaWYgKGFkZFRvRnJvbnQpIHN0YXRlLmJ1ZmZlci51bnNoaWZ0KGNodW5rKTtlbHNlIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKTtcbiAgICBpZiAoc3RhdGUubmVlZFJlYWRhYmxlKSBlbWl0UmVhZGFibGUoc3RyZWFtKTtcbiAgfVxuXG4gIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspIHtcbiAgdmFyIGVyO1xuXG4gIGlmICghX2lzVWludDhBcnJheShjaHVuaykgJiYgdHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiBjaHVuayAhPT0gdW5kZWZpbmVkICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgZXIgPSBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ2NodW5rJywgWydzdHJpbmcnLCAnQnVmZmVyJywgJ1VpbnQ4QXJyYXknXSwgY2h1bmspO1xuICB9XG5cbiAgcmV0dXJuIGVyO1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUuaXNQYXVzZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPT09IGZhbHNlO1xufTsgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5cblxuUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nID0gZnVuY3Rpb24gKGVuYykge1xuICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICB2YXIgZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKGVuYyk7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2RlciA9IGRlY29kZXI7IC8vIElmIHNldEVuY29kaW5nKG51bGwpLCBkZWNvZGVyLmVuY29kaW5nIGVxdWFscyB1dGY4XG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZyA9IHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlci5lbmNvZGluZzsgLy8gSXRlcmF0ZSBvdmVyIGN1cnJlbnQgYnVmZmVyIHRvIGNvbnZlcnQgYWxyZWFkeSBzdG9yZWQgQnVmZmVyczpcblxuICB2YXIgcCA9IHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmhlYWQ7XG4gIHZhciBjb250ZW50ID0gJyc7XG5cbiAgd2hpbGUgKHAgIT09IG51bGwpIHtcbiAgICBjb250ZW50ICs9IGRlY29kZXIud3JpdGUocC5kYXRhKTtcbiAgICBwID0gcC5uZXh0O1xuICB9XG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIuY2xlYXIoKTtcblxuICBpZiAoY29udGVudCAhPT0gJycpIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLnB1c2goY29udGVudCk7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RoID0gY29udGVudC5sZW5ndGg7XG4gIHJldHVybiB0aGlzO1xufTsgLy8gRG9uJ3QgcmFpc2UgdGhlIGh3bSA+IDFHQlxuXG5cbnZhciBNQVhfSFdNID0gMHg0MDAwMDAwMDtcblxuZnVuY3Rpb24gY29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsobikge1xuICBpZiAobiA+PSBNQVhfSFdNKSB7XG4gICAgLy8gVE9ETyhyb25hZyk6IFRocm93IEVSUl9WQUxVRV9PVVRfT0ZfUkFOR0UuXG4gICAgbiA9IE1BWF9IV007XG4gIH0gZWxzZSB7XG4gICAgLy8gR2V0IHRoZSBuZXh0IGhpZ2hlc3QgcG93ZXIgb2YgMiB0byBwcmV2ZW50IGluY3JlYXNpbmcgaHdtIGV4Y2Vzc2l2ZWx5IGluXG4gICAgLy8gdGlueSBhbW91bnRzXG4gICAgbi0tO1xuICAgIG4gfD0gbiA+Pj4gMTtcbiAgICBuIHw9IG4gPj4+IDI7XG4gICAgbiB8PSBuID4+PiA0O1xuICAgIG4gfD0gbiA+Pj4gODtcbiAgICBuIHw9IG4gPj4+IDE2O1xuICAgIG4rKztcbiAgfVxuXG4gIHJldHVybiBuO1xufSAvLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cblxuXG5mdW5jdGlvbiBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKSB7XG4gIGlmIChuIDw9IDAgfHwgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSByZXR1cm4gMDtcbiAgaWYgKHN0YXRlLm9iamVjdE1vZGUpIHJldHVybiAxO1xuXG4gIGlmIChuICE9PSBuKSB7XG4gICAgLy8gT25seSBmbG93IG9uZSBidWZmZXIgYXQgYSB0aW1lXG4gICAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoKSByZXR1cm4gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg7ZWxzZSByZXR1cm4gc3RhdGUubGVuZ3RoO1xuICB9IC8vIElmIHdlJ3JlIGFza2luZyBmb3IgbW9yZSB0aGFuIHRoZSBjdXJyZW50IGh3bSwgdGhlbiByYWlzZSB0aGUgaHdtLlxuXG5cbiAgaWYgKG4gPiBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSBzdGF0ZS5oaWdoV2F0ZXJNYXJrID0gY29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsobik7XG4gIGlmIChuIDw9IHN0YXRlLmxlbmd0aCkgcmV0dXJuIG47IC8vIERvbid0IGhhdmUgZW5vdWdoXG5cbiAgaWYgKCFzdGF0ZS5lbmRlZCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gc3RhdGUubGVuZ3RoO1xufSAvLyB5b3UgY2FuIG92ZXJyaWRlIGVpdGhlciB0aGlzIG1ldGhvZCwgb3IgdGhlIGFzeW5jIF9yZWFkKG4pIGJlbG93LlxuXG5cblJlYWRhYmxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgZGVidWcoJ3JlYWQnLCBuKTtcbiAgbiA9IHBhcnNlSW50KG4sIDEwKTtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIG5PcmlnID0gbjtcbiAgaWYgKG4gIT09IDApIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlOyAvLyBpZiB3ZSdyZSBkb2luZyByZWFkKDApIHRvIHRyaWdnZXIgYSByZWFkYWJsZSBldmVudCwgYnV0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhIGJ1bmNoIG9mIGRhdGEgaW4gdGhlIGJ1ZmZlciwgdGhlbiBqdXN0IHRyaWdnZXJcbiAgLy8gdGhlICdyZWFkYWJsZScgZXZlbnQgYW5kIG1vdmUgb24uXG5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUubmVlZFJlYWRhYmxlICYmICgoc3RhdGUuaGlnaFdhdGVyTWFyayAhPT0gMCA/IHN0YXRlLmxlbmd0aCA+PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrIDogc3RhdGUubGVuZ3RoID4gMCkgfHwgc3RhdGUuZW5kZWQpKSB7XG4gICAgZGVidWcoJ3JlYWQ6IGVtaXRSZWFkYWJsZScsIHN0YXRlLmxlbmd0aCwgc3RhdGUuZW5kZWQpO1xuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpO2Vsc2UgZW1pdFJlYWRhYmxlKHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbiA9IGhvd011Y2hUb1JlYWQobiwgc3RhdGUpOyAvLyBpZiB3ZSd2ZSBlbmRlZCwgYW5kIHdlJ3JlIG5vdyBjbGVhciwgdGhlbiBmaW5pc2ggaXQgdXAuXG5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUuZW5kZWQpIHtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBlbmRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSAvLyBBbGwgdGhlIGFjdHVhbCBjaHVuayBnZW5lcmF0aW9uIGxvZ2ljIG5lZWRzIHRvIGJlXG4gIC8vICpiZWxvdyogdGhlIGNhbGwgdG8gX3JlYWQuICBUaGUgcmVhc29uIGlzIHRoYXQgaW4gY2VydGFpblxuICAvLyBzeW50aGV0aWMgc3RyZWFtIGNhc2VzLCBzdWNoIGFzIHBhc3N0aHJvdWdoIHN0cmVhbXMsIF9yZWFkXG4gIC8vIG1heSBiZSBhIGNvbXBsZXRlbHkgc3luY2hyb25vdXMgb3BlcmF0aW9uIHdoaWNoIG1heSBjaGFuZ2VcbiAgLy8gdGhlIHN0YXRlIG9mIHRoZSByZWFkIGJ1ZmZlciwgcHJvdmlkaW5nIGVub3VnaCBkYXRhIHdoZW5cbiAgLy8gYmVmb3JlIHRoZXJlIHdhcyAqbm90KiBlbm91Z2guXG4gIC8vXG4gIC8vIFNvLCB0aGUgc3RlcHMgYXJlOlxuICAvLyAxLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHN0YXRlIG9mIHRoaW5ncyB3aWxsIGJlIGFmdGVyIHdlIGRvXG4gIC8vIGEgcmVhZCBmcm9tIHRoZSBidWZmZXIuXG4gIC8vXG4gIC8vIDIuIElmIHRoYXQgcmVzdWx0aW5nIHN0YXRlIHdpbGwgdHJpZ2dlciBhIF9yZWFkLCB0aGVuIGNhbGwgX3JlYWQuXG4gIC8vIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBhc3luY2hyb25vdXMsIG9yIHN5bmNocm9ub3VzLiAgWWVzLCBpdCBpc1xuICAvLyBkZWVwbHkgdWdseSB0byB3cml0ZSBBUElzIHRoaXMgd2F5LCBidXQgdGhhdCBzdGlsbCBkb2Vzbid0IG1lYW5cbiAgLy8gdGhhdCB0aGUgUmVhZGFibGUgY2xhc3Mgc2hvdWxkIGJlaGF2ZSBpbXByb3Blcmx5LCBhcyBzdHJlYW1zIGFyZVxuICAvLyBkZXNpZ25lZCB0byBiZSBzeW5jL2FzeW5jIGFnbm9zdGljLlxuICAvLyBUYWtlIG5vdGUgaWYgdGhlIF9yZWFkIGNhbGwgaXMgc3luYyBvciBhc3luYyAoaWUsIGlmIHRoZSByZWFkIGNhbGxcbiAgLy8gaGFzIHJldHVybmVkIHlldCksIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyIG9yIG5vdCBpdCdzIHNhZmUgdG8gZW1pdFxuICAvLyAncmVhZGFibGUnIGV0Yy5cbiAgLy9cbiAgLy8gMy4gQWN0dWFsbHkgcHVsbCB0aGUgcmVxdWVzdGVkIGNodW5rcyBvdXQgb2YgdGhlIGJ1ZmZlciBhbmQgcmV0dXJuLlxuICAvLyBpZiB3ZSBuZWVkIGEgcmVhZGFibGUgZXZlbnQsIHRoZW4gd2UgbmVlZCB0byBkbyBzb21lIHJlYWRpbmcuXG5cblxuICB2YXIgZG9SZWFkID0gc3RhdGUubmVlZFJlYWRhYmxlO1xuICBkZWJ1ZygnbmVlZCByZWFkYWJsZScsIGRvUmVhZCk7IC8vIGlmIHdlIGN1cnJlbnRseSBoYXZlIGxlc3MgdGhhbiB0aGUgaGlnaFdhdGVyTWFyaywgdGhlbiBhbHNvIHJlYWQgc29tZVxuXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgfHwgc3RhdGUubGVuZ3RoIC0gbiA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHtcbiAgICBkb1JlYWQgPSB0cnVlO1xuICAgIGRlYnVnKCdsZW5ndGggbGVzcyB0aGFuIHdhdGVybWFyaycsIGRvUmVhZCk7XG4gIH0gLy8gaG93ZXZlciwgaWYgd2UndmUgZW5kZWQsIHRoZW4gdGhlcmUncyBubyBwb2ludCwgYW5kIGlmIHdlJ3JlIGFscmVhZHlcbiAgLy8gcmVhZGluZywgdGhlbiBpdCdzIHVubmVjZXNzYXJ5LlxuXG5cbiAgaWYgKHN0YXRlLmVuZGVkIHx8IHN0YXRlLnJlYWRpbmcpIHtcbiAgICBkb1JlYWQgPSBmYWxzZTtcbiAgICBkZWJ1ZygncmVhZGluZyBvciBlbmRlZCcsIGRvUmVhZCk7XG4gIH0gZWxzZSBpZiAoZG9SZWFkKSB7XG4gICAgZGVidWcoJ2RvIHJlYWQnKTtcbiAgICBzdGF0ZS5yZWFkaW5nID0gdHJ1ZTtcbiAgICBzdGF0ZS5zeW5jID0gdHJ1ZTsgLy8gaWYgdGhlIGxlbmd0aCBpcyBjdXJyZW50bHkgemVybywgdGhlbiB3ZSAqbmVlZCogYSByZWFkYWJsZSBldmVudC5cblxuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7IC8vIGNhbGwgaW50ZXJuYWwgcmVhZCBtZXRob2RcblxuICAgIHRoaXMuX3JlYWQoc3RhdGUuaGlnaFdhdGVyTWFyayk7XG5cbiAgICBzdGF0ZS5zeW5jID0gZmFsc2U7IC8vIElmIF9yZWFkIHB1c2hlZCBkYXRhIHN5bmNocm9ub3VzbHksIHRoZW4gYHJlYWRpbmdgIHdpbGwgYmUgZmFsc2UsXG4gICAgLy8gYW5kIHdlIG5lZWQgdG8gcmUtZXZhbHVhdGUgaG93IG11Y2ggZGF0YSB3ZSBjYW4gcmV0dXJuIHRvIHRoZSB1c2VyLlxuXG4gICAgaWYgKCFzdGF0ZS5yZWFkaW5nKSBuID0gaG93TXVjaFRvUmVhZChuT3JpZywgc3RhdGUpO1xuICB9XG5cbiAgdmFyIHJldDtcbiAgaWYgKG4gPiAwKSByZXQgPSBmcm9tTGlzdChuLCBzdGF0ZSk7ZWxzZSByZXQgPSBudWxsO1xuXG4gIGlmIChyZXQgPT09IG51bGwpIHtcbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSBzdGF0ZS5sZW5ndGggPD0gc3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgICBuID0gMDtcbiAgfSBlbHNlIHtcbiAgICBzdGF0ZS5sZW5ndGggLT0gbjtcbiAgICBzdGF0ZS5hd2FpdERyYWluID0gMDtcbiAgfVxuXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICAvLyBJZiB3ZSBoYXZlIG5vdGhpbmcgaW4gdGhlIGJ1ZmZlciwgdGhlbiB3ZSB3YW50IHRvIGtub3dcbiAgICAvLyBhcyBzb29uIGFzIHdlICpkbyogZ2V0IHNvbWV0aGluZyBpbnRvIHRoZSBidWZmZXIuXG4gICAgaWYgKCFzdGF0ZS5lbmRlZCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTsgLy8gSWYgd2UgdHJpZWQgdG8gcmVhZCgpIHBhc3QgdGhlIEVPRiwgdGhlbiBlbWl0IGVuZCBvbiB0aGUgbmV4dCB0aWNrLlxuXG4gICAgaWYgKG5PcmlnICE9PSBuICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtcbiAgfVxuXG4gIGlmIChyZXQgIT09IG51bGwpIHRoaXMuZW1pdCgnZGF0YScsIHJldCk7XG4gIHJldHVybiByZXQ7XG59O1xuXG5mdW5jdGlvbiBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpIHtcbiAgZGVidWcoJ29uRW9mQ2h1bmsnKTtcbiAgaWYgKHN0YXRlLmVuZGVkKSByZXR1cm47XG5cbiAgaWYgKHN0YXRlLmRlY29kZXIpIHtcbiAgICB2YXIgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLmVuZCgpO1xuXG4gICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkge1xuICAgICAgc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLmVuZGVkID0gdHJ1ZTtcblxuICBpZiAoc3RhdGUuc3luYykge1xuICAgIC8vIGlmIHdlIGFyZSBzeW5jLCB3YWl0IHVudGlsIG5leHQgdGljayB0byBlbWl0IHRoZSBkYXRhLlxuICAgIC8vIE90aGVyd2lzZSB3ZSByaXNrIGVtaXR0aW5nIGRhdGEgaW4gdGhlIGZsb3coKVxuICAgIC8vIHRoZSByZWFkYWJsZSBjb2RlIHRyaWdnZXJzIGR1cmluZyBhIHJlYWQoKSBjYWxsXG4gICAgZW1pdFJlYWRhYmxlKHN0cmVhbSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gZW1pdCAncmVhZGFibGUnIG5vdyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBwaWNrZWQgdXAuXG4gICAgc3RhdGUubmVlZFJlYWRhYmxlID0gZmFsc2U7XG5cbiAgICBpZiAoIXN0YXRlLmVtaXR0ZWRSZWFkYWJsZSkge1xuICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAgIGVtaXRSZWFkYWJsZV8oc3RyZWFtKTtcbiAgICB9XG4gIH1cbn0gLy8gRG9uJ3QgZW1pdCByZWFkYWJsZSByaWdodCBhd2F5IGluIHN5bmMgbW9kZSwgYmVjYXVzZSB0aGlzIGNhbiB0cmlnZ2VyXG4vLyBhbm90aGVyIHJlYWQoKSBjYWxsID0+IHN0YWNrIG92ZXJmbG93LiAgVGhpcyB3YXksIGl0IG1pZ2h0IHRyaWdnZXJcbi8vIGEgbmV4dFRpY2sgcmVjdXJzaW9uIHdhcm5pbmcsIGJ1dCB0aGF0J3Mgbm90IHNvIGJhZC5cblxuXG5mdW5jdGlvbiBlbWl0UmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgZGVidWcoJ2VtaXRSZWFkYWJsZScsIHN0YXRlLm5lZWRSZWFkYWJsZSwgc3RhdGUuZW1pdHRlZFJlYWRhYmxlKTtcbiAgc3RhdGUubmVlZFJlYWRhYmxlID0gZmFsc2U7XG5cbiAgaWYgKCFzdGF0ZS5lbWl0dGVkUmVhZGFibGUpIHtcbiAgICBkZWJ1ZygnZW1pdFJlYWRhYmxlJywgc3RhdGUuZmxvd2luZyk7XG4gICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGVtaXRSZWFkYWJsZV8sIHN0cmVhbSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlXyhzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBkZWJ1ZygnZW1pdFJlYWRhYmxlXycsIHN0YXRlLmRlc3Ryb3llZCwgc3RhdGUubGVuZ3RoLCBzdGF0ZS5lbmRlZCk7XG5cbiAgaWYgKCFzdGF0ZS5kZXN0cm95ZWQgJiYgKHN0YXRlLmxlbmd0aCB8fCBzdGF0ZS5lbmRlZCkpIHtcbiAgICBzdHJlYW0uZW1pdCgncmVhZGFibGUnKTtcbiAgICBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcbiAgfSAvLyBUaGUgc3RyZWFtIG5lZWRzIGFub3RoZXIgcmVhZGFibGUgZXZlbnQgaWZcbiAgLy8gMS4gSXQgaXMgbm90IGZsb3dpbmcsIGFzIHRoZSBmbG93IG1lY2hhbmlzbSB3aWxsIHRha2VcbiAgLy8gICAgY2FyZSBvZiBpdC5cbiAgLy8gMi4gSXQgaXMgbm90IGVuZGVkLlxuICAvLyAzLiBJdCBpcyBiZWxvdyB0aGUgaGlnaFdhdGVyTWFyaywgc28gd2UgY2FuIHNjaGVkdWxlXG4gIC8vICAgIGFub3RoZXIgcmVhZGFibGUgbGF0ZXIuXG5cblxuICBzdGF0ZS5uZWVkUmVhZGFibGUgPSAhc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUuZW5kZWQgJiYgc3RhdGUubGVuZ3RoIDw9IHN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIGZsb3coc3RyZWFtKTtcbn0gLy8gYXQgdGhpcyBwb2ludCwgdGhlIHVzZXIgaGFzIHByZXN1bWFibHkgc2VlbiB0aGUgJ3JlYWRhYmxlJyBldmVudCxcbi8vIGFuZCBjYWxsZWQgcmVhZCgpIHRvIGNvbnN1bWUgc29tZSBkYXRhLiAgdGhhdCBtYXkgaGF2ZSB0cmlnZ2VyZWRcbi8vIGluIHR1cm4gYW5vdGhlciBfcmVhZChuKSBjYWxsLCBpbiB3aGljaCBjYXNlIHJlYWRpbmcgPSB0cnVlIGlmXG4vLyBpdCdzIGluIHByb2dyZXNzLlxuLy8gSG93ZXZlciwgaWYgd2UncmUgbm90IGVuZGVkLCBvciByZWFkaW5nLCBhbmQgdGhlIGxlbmd0aCA8IGh3bSxcbi8vIHRoZW4gZ28gYWhlYWQgYW5kIHRyeSB0byByZWFkIHNvbWUgbW9yZSBwcmVlbXB0aXZlbHkuXG5cblxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVhZGluZ01vcmUpIHtcbiAgICBzdGF0ZS5yZWFkaW5nTW9yZSA9IHRydWU7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhtYXliZVJlYWRNb3JlXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZV8oc3RyZWFtLCBzdGF0ZSkge1xuICAvLyBBdHRlbXB0IHRvIHJlYWQgbW9yZSBkYXRhIGlmIHdlIHNob3VsZC5cbiAgLy9cbiAgLy8gVGhlIGNvbmRpdGlvbnMgZm9yIHJlYWRpbmcgbW9yZSBkYXRhIGFyZSAob25lIG9mKTpcbiAgLy8gLSBOb3QgZW5vdWdoIGRhdGEgYnVmZmVyZWQgKHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmspLiBUaGUgbG9vcFxuICAvLyAgIGlzIHJlc3BvbnNpYmxlIGZvciBmaWxsaW5nIHRoZSBidWZmZXIgd2l0aCBlbm91Z2ggZGF0YSBpZiBzdWNoIGRhdGFcbiAgLy8gICBpcyBhdmFpbGFibGUuIElmIGhpZ2hXYXRlck1hcmsgaXMgMCBhbmQgd2UgYXJlIG5vdCBpbiB0aGUgZmxvd2luZyBtb2RlXG4gIC8vICAgd2Ugc2hvdWxkIF9ub3RfIGF0dGVtcHQgdG8gYnVmZmVyIGFueSBleHRyYSBkYXRhLiBXZSdsbCBnZXQgbW9yZSBkYXRhXG4gIC8vICAgd2hlbiB0aGUgc3RyZWFtIGNvbnN1bWVyIGNhbGxzIHJlYWQoKSBpbnN0ZWFkLlxuICAvLyAtIE5vIGRhdGEgaW4gdGhlIGJ1ZmZlciwgYW5kIHRoZSBzdHJlYW0gaXMgaW4gZmxvd2luZyBtb2RlLiBJbiB0aGlzIG1vZGVcbiAgLy8gICB0aGUgbG9vcCBiZWxvdyBpcyByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgcmVhZCgpIGlzIGNhbGxlZC4gRmFpbGluZyB0b1xuICAvLyAgIGNhbGwgcmVhZCBoZXJlIHdvdWxkIGFib3J0IHRoZSBmbG93IGFuZCB0aGVyZSdzIG5vIG90aGVyIG1lY2hhbmlzbSBmb3JcbiAgLy8gICBjb250aW51aW5nIHRoZSBmbG93IGlmIHRoZSBzdHJlYW0gY29uc3VtZXIgaGFzIGp1c3Qgc3Vic2NyaWJlZCB0byB0aGVcbiAgLy8gICAnZGF0YScgZXZlbnQuXG4gIC8vXG4gIC8vIEluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBjb25kaXRpb25zIHRvIGtlZXAgcmVhZGluZyBkYXRhLCB0aGUgZm9sbG93aW5nXG4gIC8vIGNvbmRpdGlvbnMgcHJldmVudCB0aGUgZGF0YSBmcm9tIGJlaW5nIHJlYWQ6XG4gIC8vIC0gVGhlIHN0cmVhbSBoYXMgZW5kZWQgKHN0YXRlLmVuZGVkKS5cbiAgLy8gLSBUaGVyZSBpcyBhbHJlYWR5IGEgcGVuZGluZyAncmVhZCcgb3BlcmF0aW9uIChzdGF0ZS5yZWFkaW5nKS4gVGhpcyBpcyBhXG4gIC8vICAgY2FzZSB3aGVyZSB0aGUgdGhlIHN0cmVhbSBoYXMgY2FsbGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIF9yZWFkKClcbiAgLy8gICBtZXRob2QsIGJ1dCB0aGV5IGFyZSBwcm9jZXNzaW5nIHRoZSBjYWxsIGFzeW5jaHJvbm91c2x5IGFuZCBoYXZlIF9ub3RfXG4gIC8vICAgY2FsbGVkIHB1c2goKSB3aXRoIG5ldyBkYXRhLiBJbiB0aGlzIGNhc2Ugd2Ugc2tpcCBwZXJmb3JtaW5nIG1vcmVcbiAgLy8gICByZWFkKClzLiBUaGUgZXhlY3V0aW9uIGVuZHMgaW4gdGhpcyBtZXRob2QgYWdhaW4gYWZ0ZXIgdGhlIF9yZWFkKCkgZW5kc1xuICAvLyAgIHVwIGNhbGxpbmcgcHVzaCgpIHdpdGggbW9yZSBkYXRhLlxuICB3aGlsZSAoIXN0YXRlLnJlYWRpbmcgJiYgIXN0YXRlLmVuZGVkICYmIChzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwKSkge1xuICAgIHZhciBsZW4gPSBzdGF0ZS5sZW5ndGg7XG4gICAgZGVidWcoJ21heWJlUmVhZE1vcmUgcmVhZCAwJyk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gICAgaWYgKGxlbiA9PT0gc3RhdGUubGVuZ3RoKSAvLyBkaWRuJ3QgZ2V0IGFueSBkYXRhLCBzdG9wIHNwaW5uaW5nLlxuICAgICAgYnJlYWs7XG4gIH1cblxuICBzdGF0ZS5yZWFkaW5nTW9yZSA9IGZhbHNlO1xufSAvLyBhYnN0cmFjdCBtZXRob2QuICB0byBiZSBvdmVycmlkZGVuIGluIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyBjYWxsIGNiKGVyLCBkYXRhKSB3aGVyZSBkYXRhIGlzIDw9IG4gaW4gbGVuZ3RoLlxuLy8gZm9yIHZpcnR1YWwgKG5vbi1zdHJpbmcsIG5vbi1idWZmZXIpIHN0cmVhbXMsIFwibGVuZ3RoXCIgaXMgc29tZXdoYXRcbi8vIGFyYml0cmFyeSwgYW5kIHBlcmhhcHMgbm90IHZlcnkgbWVhbmluZ2Z1bC5cblxuXG5SZWFkYWJsZS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICBlcnJvck9yRGVzdHJveSh0aGlzLCBuZXcgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQoJ19yZWFkKCknKSk7XG59O1xuXG5SZWFkYWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uIChkZXN0LCBwaXBlT3B0cykge1xuICB2YXIgc3JjID0gdGhpcztcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICBzd2l0Y2ggKHN0YXRlLnBpcGVzQ291bnQpIHtcbiAgICBjYXNlIDA6XG4gICAgICBzdGF0ZS5waXBlcyA9IGRlc3Q7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgMTpcbiAgICAgIHN0YXRlLnBpcGVzID0gW3N0YXRlLnBpcGVzLCBkZXN0XTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHN0YXRlLnBpcGVzLnB1c2goZGVzdCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHN0YXRlLnBpcGVzQ291bnQgKz0gMTtcbiAgZGVidWcoJ3BpcGUgY291bnQ9JWQgb3B0cz0laicsIHN0YXRlLnBpcGVzQ291bnQsIHBpcGVPcHRzKTtcbiAgdmFyIGRvRW5kID0gKCFwaXBlT3B0cyB8fCBwaXBlT3B0cy5lbmQgIT09IGZhbHNlKSAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZG91dCAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZGVycjtcbiAgdmFyIGVuZEZuID0gZG9FbmQgPyBvbmVuZCA6IHVucGlwZTtcbiAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHByb2Nlc3MubmV4dFRpY2soZW5kRm4pO2Vsc2Ugc3JjLm9uY2UoJ2VuZCcsIGVuZEZuKTtcbiAgZGVzdC5vbigndW5waXBlJywgb251bnBpcGUpO1xuXG4gIGZ1bmN0aW9uIG9udW5waXBlKHJlYWRhYmxlLCB1bnBpcGVJbmZvKSB7XG4gICAgZGVidWcoJ29udW5waXBlJyk7XG5cbiAgICBpZiAocmVhZGFibGUgPT09IHNyYykge1xuICAgICAgaWYgKHVucGlwZUluZm8gJiYgdW5waXBlSW5mby5oYXNVbnBpcGVkID09PSBmYWxzZSkge1xuICAgICAgICB1bnBpcGVJbmZvLmhhc1VucGlwZWQgPSB0cnVlO1xuICAgICAgICBjbGVhbnVwKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgZGVidWcoJ29uZW5kJyk7XG4gICAgZGVzdC5lbmQoKTtcbiAgfSAvLyB3aGVuIHRoZSBkZXN0IGRyYWlucywgaXQgcmVkdWNlcyB0aGUgYXdhaXREcmFpbiBjb3VudGVyXG4gIC8vIG9uIHRoZSBzb3VyY2UuICBUaGlzIHdvdWxkIGJlIG1vcmUgZWxlZ2FudCB3aXRoIGEgLm9uY2UoKVxuICAvLyBoYW5kbGVyIGluIGZsb3coKSwgYnV0IGFkZGluZyBhbmQgcmVtb3ZpbmcgcmVwZWF0ZWRseSBpc1xuICAvLyB0b28gc2xvdy5cblxuXG4gIHZhciBvbmRyYWluID0gcGlwZU9uRHJhaW4oc3JjKTtcbiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKTtcbiAgdmFyIGNsZWFuZWRVcCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgZGVidWcoJ2NsZWFudXAnKTsgLy8gY2xlYW51cCBldmVudCBoYW5kbGVycyBvbmNlIHRoZSBwaXBlIGlzIGJyb2tlblxuXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZHJhaW4nLCBvbmRyYWluKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ3VucGlwZScsIG9udW5waXBlKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIHVucGlwZSk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKTtcbiAgICBjbGVhbmVkVXAgPSB0cnVlOyAvLyBpZiB0aGUgcmVhZGVyIGlzIHdhaXRpbmcgZm9yIGEgZHJhaW4gZXZlbnQgZnJvbSB0aGlzXG4gICAgLy8gc3BlY2lmaWMgd3JpdGVyLCB0aGVuIGl0IHdvdWxkIGNhdXNlIGl0IHRvIG5ldmVyIHN0YXJ0XG4gICAgLy8gZmxvd2luZyBhZ2Fpbi5cbiAgICAvLyBTbywgaWYgdGhpcyBpcyBhd2FpdGluZyBhIGRyYWluLCB0aGVuIHdlIGp1c3QgY2FsbCBpdCBub3cuXG4gICAgLy8gSWYgd2UgZG9uJ3Qga25vdywgdGhlbiBhc3N1bWUgdGhhdCB3ZSBhcmUgd2FpdGluZyBmb3Igb25lLlxuXG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gJiYgKCFkZXN0Ll93cml0YWJsZVN0YXRlIHx8IGRlc3QuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluKSkgb25kcmFpbigpO1xuICB9XG5cbiAgc3JjLm9uKCdkYXRhJywgb25kYXRhKTtcblxuICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHtcbiAgICBkZWJ1Zygnb25kYXRhJyk7XG4gICAgdmFyIHJldCA9IGRlc3Qud3JpdGUoY2h1bmspO1xuICAgIGRlYnVnKCdkZXN0LndyaXRlJywgcmV0KTtcblxuICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICAvLyBJZiB0aGUgdXNlciB1bnBpcGVkIGR1cmluZyBgZGVzdC53cml0ZSgpYCwgaXQgaXMgcG9zc2libGVcbiAgICAgIC8vIHRvIGdldCBzdHVjayBpbiBhIHBlcm1hbmVudGx5IHBhdXNlZCBzdGF0ZSBpZiB0aGF0IHdyaXRlXG4gICAgICAvLyBhbHNvIHJldHVybmVkIGZhbHNlLlxuICAgICAgLy8gPT4gQ2hlY2sgd2hldGhlciBgZGVzdGAgaXMgc3RpbGwgYSBwaXBpbmcgZGVzdGluYXRpb24uXG4gICAgICBpZiAoKHN0YXRlLnBpcGVzQ291bnQgPT09IDEgJiYgc3RhdGUucGlwZXMgPT09IGRlc3QgfHwgc3RhdGUucGlwZXNDb3VudCA+IDEgJiYgaW5kZXhPZihzdGF0ZS5waXBlcywgZGVzdCkgIT09IC0xKSAmJiAhY2xlYW5lZFVwKSB7XG4gICAgICAgIGRlYnVnKCdmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UnLCBzdGF0ZS5hd2FpdERyYWluKTtcbiAgICAgICAgc3RhdGUuYXdhaXREcmFpbisrO1xuICAgICAgfVxuXG4gICAgICBzcmMucGF1c2UoKTtcbiAgICB9XG4gIH0gLy8gaWYgdGhlIGRlc3QgaGFzIGFuIGVycm9yLCB0aGVuIHN0b3AgcGlwaW5nIGludG8gaXQuXG4gIC8vIGhvd2V2ZXIsIGRvbid0IHN1cHByZXNzIHRoZSB0aHJvd2luZyBiZWhhdmlvciBmb3IgdGhpcy5cblxuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBkZWJ1Zygnb25lcnJvcicsIGVyKTtcbiAgICB1bnBpcGUoKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGlmIChFRWxpc3RlbmVyQ291bnQoZGVzdCwgJ2Vycm9yJykgPT09IDApIGVycm9yT3JEZXN0cm95KGRlc3QsIGVyKTtcbiAgfSAvLyBNYWtlIHN1cmUgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIHVzZXJsYW5kIG9uZXMuXG5cblxuICBwcmVwZW5kTGlzdGVuZXIoZGVzdCwgJ2Vycm9yJywgb25lcnJvcik7IC8vIEJvdGggY2xvc2UgYW5kIGZpbmlzaCBzaG91bGQgdHJpZ2dlciB1bnBpcGUsIGJ1dCBvbmx5IG9uY2UuXG5cbiAgZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgdW5waXBlKCk7XG4gIH1cblxuICBkZXN0Lm9uY2UoJ2Nsb3NlJywgb25jbG9zZSk7XG5cbiAgZnVuY3Rpb24gb25maW5pc2goKSB7XG4gICAgZGVidWcoJ29uZmluaXNoJyk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICB1bnBpcGUoKTtcbiAgfVxuXG4gIGRlc3Qub25jZSgnZmluaXNoJywgb25maW5pc2gpO1xuXG4gIGZ1bmN0aW9uIHVucGlwZSgpIHtcbiAgICBkZWJ1ZygndW5waXBlJyk7XG4gICAgc3JjLnVucGlwZShkZXN0KTtcbiAgfSAvLyB0ZWxsIHRoZSBkZXN0IHRoYXQgaXQncyBiZWluZyBwaXBlZCB0b1xuXG5cbiAgZGVzdC5lbWl0KCdwaXBlJywgc3JjKTsgLy8gc3RhcnQgdGhlIGZsb3cgaWYgaXQgaGFzbid0IGJlZW4gc3RhcnRlZCBhbHJlYWR5LlxuXG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwaXBlIHJlc3VtZScpO1xuICAgIHNyYy5yZXN1bWUoKTtcbiAgfVxuXG4gIHJldHVybiBkZXN0O1xufTtcblxuZnVuY3Rpb24gcGlwZU9uRHJhaW4oc3JjKSB7XG4gIHJldHVybiBmdW5jdGlvbiBwaXBlT25EcmFpbkZ1bmN0aW9uUmVzdWx0KCkge1xuICAgIHZhciBzdGF0ZSA9IHNyYy5fcmVhZGFibGVTdGF0ZTtcbiAgICBkZWJ1ZygncGlwZU9uRHJhaW4nLCBzdGF0ZS5hd2FpdERyYWluKTtcbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbikgc3RhdGUuYXdhaXREcmFpbi0tO1xuXG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gPT09IDAgJiYgRUVsaXN0ZW5lckNvdW50KHNyYywgJ2RhdGEnKSkge1xuICAgICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgICBmbG93KHNyYyk7XG4gICAgfVxuICB9O1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUudW5waXBlID0gZnVuY3Rpb24gKGRlc3QpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIHVucGlwZUluZm8gPSB7XG4gICAgaGFzVW5waXBlZDogZmFsc2VcbiAgfTsgLy8gaWYgd2UncmUgbm90IHBpcGluZyBhbnl3aGVyZSwgdGhlbiBkbyBub3RoaW5nLlxuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAwKSByZXR1cm4gdGhpczsgLy8ganVzdCBvbmUgZGVzdGluYXRpb24uICBtb3N0IGNvbW1vbiBjYXNlLlxuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSB7XG4gICAgLy8gcGFzc2VkIGluIG9uZSwgYnV0IGl0J3Mgbm90IHRoZSByaWdodCBvbmUuXG4gICAgaWYgKGRlc3QgJiYgZGVzdCAhPT0gc3RhdGUucGlwZXMpIHJldHVybiB0aGlzO1xuICAgIGlmICghZGVzdCkgZGVzdCA9IHN0YXRlLnBpcGVzOyAvLyBnb3QgYSBtYXRjaC5cblxuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgaWYgKGRlc3QpIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gLy8gc2xvdyBjYXNlLiBtdWx0aXBsZSBwaXBlIGRlc3RpbmF0aW9ucy5cblxuXG4gIGlmICghZGVzdCkge1xuICAgIC8vIHJlbW92ZSBhbGwuXG4gICAgdmFyIGRlc3RzID0gc3RhdGUucGlwZXM7XG4gICAgdmFyIGxlbiA9IHN0YXRlLnBpcGVzQ291bnQ7XG4gICAgc3RhdGUucGlwZXMgPSBudWxsO1xuICAgIHN0YXRlLnBpcGVzQ291bnQgPSAwO1xuICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGRlc3RzW2ldLmVtaXQoJ3VucGlwZScsIHRoaXMsIHtcbiAgICAgICAgaGFzVW5waXBlZDogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9IC8vIHRyeSB0byBmaW5kIHRoZSByaWdodCBvbmUuXG5cblxuICB2YXIgaW5kZXggPSBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KTtcbiAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHRoaXM7XG4gIHN0YXRlLnBpcGVzLnNwbGljZShpbmRleCwgMSk7XG4gIHN0YXRlLnBpcGVzQ291bnQgLT0gMTtcbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDEpIHN0YXRlLnBpcGVzID0gc3RhdGUucGlwZXNbMF07XG4gIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7XG4gIHJldHVybiB0aGlzO1xufTsgLy8gc2V0IHVwIGRhdGEgZXZlbnRzIGlmIHRoZXkgYXJlIGFza2VkIGZvclxuLy8gRW5zdXJlIHJlYWRhYmxlIGxpc3RlbmVycyBldmVudHVhbGx5IGdldCBzb21ldGhpbmdcblxuXG5SZWFkYWJsZS5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXYsIGZuKSB7XG4gIHZhciByZXMgPSBTdHJlYW0ucHJvdG90eXBlLm9uLmNhbGwodGhpcywgZXYsIGZuKTtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICBpZiAoZXYgPT09ICdkYXRhJykge1xuICAgIC8vIHVwZGF0ZSByZWFkYWJsZUxpc3RlbmluZyBzbyB0aGF0IHJlc3VtZSgpIG1heSBiZSBhIG5vLW9wXG4gICAgLy8gYSBmZXcgbGluZXMgZG93bi4gVGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCBvbmNlKCdyZWFkYWJsZScpLlxuICAgIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gdGhpcy5saXN0ZW5lckNvdW50KCdyZWFkYWJsZScpID4gMDsgLy8gVHJ5IHN0YXJ0IGZsb3dpbmcgb24gbmV4dCB0aWNrIGlmIHN0cmVhbSBpc24ndCBleHBsaWNpdGx5IHBhdXNlZFxuXG4gICAgaWYgKHN0YXRlLmZsb3dpbmcgIT09IGZhbHNlKSB0aGlzLnJlc3VtZSgpO1xuICB9IGVsc2UgaWYgKGV2ID09PSAncmVhZGFibGUnKSB7XG4gICAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmICFzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZykge1xuICAgICAgc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcgPSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gICAgICBkZWJ1Zygnb24gcmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLnJlYWRpbmcpO1xuXG4gICAgICBpZiAoc3RhdGUubGVuZ3RoKSB7XG4gICAgICAgIGVtaXRSZWFkYWJsZSh0aGlzKTtcbiAgICAgIH0gZWxzZSBpZiAoIXN0YXRlLnJlYWRpbmcpIHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhuUmVhZGluZ05leHRUaWNrLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblxuUmVhZGFibGUucHJvdG90eXBlLmFkZExpc3RlbmVyID0gUmVhZGFibGUucHJvdG90eXBlLm9uO1xuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPSBmdW5jdGlvbiAoZXYsIGZuKSB7XG4gIHZhciByZXMgPSBTdHJlYW0ucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLmNhbGwodGhpcywgZXYsIGZuKTtcblxuICBpZiAoZXYgPT09ICdyZWFkYWJsZScpIHtcbiAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIHNvbWVvbmUgc3RpbGwgbGlzdGVuaW5nIHRvXG4gICAgLy8gcmVhZGFibGUgYW5kIHJlc2V0IHRoZSBzdGF0ZS4gSG93ZXZlciB0aGlzIG5lZWRzIHRvIGhhcHBlblxuICAgIC8vIGFmdGVyIHJlYWRhYmxlIGhhcyBiZWVuIGVtaXR0ZWQgYnV0IGJlZm9yZSBJL08gKG5leHRUaWNrKSB0b1xuICAgIC8vIHN1cHBvcnQgb25jZSgncmVhZGFibGUnLCBmbikgY3ljbGVzLiBUaGlzIG1lYW5zIHRoYXQgY2FsbGluZ1xuICAgIC8vIHJlc3VtZSB3aXRoaW4gdGhlIHNhbWUgdGljayB3aWxsIGhhdmUgbm9cbiAgICAvLyBlZmZlY3QuXG4gICAgcHJvY2Vzcy5uZXh0VGljayh1cGRhdGVSZWFkYWJsZUxpc3RlbmluZywgdGhpcyk7XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblxuUmVhZGFibGUucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0aW9uIChldikge1xuICB2YXIgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICBpZiAoZXYgPT09ICdyZWFkYWJsZScgfHwgZXYgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgaXMgc29tZW9uZSBzdGlsbCBsaXN0ZW5pbmcgdG9cbiAgICAvLyByZWFkYWJsZSBhbmQgcmVzZXQgdGhlIHN0YXRlLiBIb3dldmVyIHRoaXMgbmVlZHMgdG8gaGFwcGVuXG4gICAgLy8gYWZ0ZXIgcmVhZGFibGUgaGFzIGJlZW4gZW1pdHRlZCBidXQgYmVmb3JlIEkvTyAobmV4dFRpY2spIHRvXG4gICAgLy8gc3VwcG9ydCBvbmNlKCdyZWFkYWJsZScsIGZuKSBjeWNsZXMuIFRoaXMgbWVhbnMgdGhhdCBjYWxsaW5nXG4gICAgLy8gcmVzdW1lIHdpdGhpbiB0aGUgc2FtZSB0aWNrIHdpbGwgaGF2ZSBub1xuICAgIC8vIGVmZmVjdC5cbiAgICBwcm9jZXNzLm5leHRUaWNrKHVwZGF0ZVJlYWRhYmxlTGlzdGVuaW5nLCB0aGlzKTtcbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuXG5mdW5jdGlvbiB1cGRhdGVSZWFkYWJsZUxpc3RlbmluZyhzZWxmKSB7XG4gIHZhciBzdGF0ZSA9IHNlbGYuX3JlYWRhYmxlU3RhdGU7XG4gIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gc2VsZi5saXN0ZW5lckNvdW50KCdyZWFkYWJsZScpID4gMDtcblxuICBpZiAoc3RhdGUucmVzdW1lU2NoZWR1bGVkICYmICFzdGF0ZS5wYXVzZWQpIHtcbiAgICAvLyBmbG93aW5nIG5lZWRzIHRvIGJlIHNldCB0byB0cnVlIG5vdywgb3RoZXJ3aXNlXG4gICAgLy8gdGhlIHVwY29taW5nIHJlc3VtZSB3aWxsIG5vdCBmbG93LlxuICAgIHN0YXRlLmZsb3dpbmcgPSB0cnVlOyAvLyBjcnVkZSB3YXkgdG8gY2hlY2sgaWYgd2Ugc2hvdWxkIHJlc3VtZVxuICB9IGVsc2UgaWYgKHNlbGYubGlzdGVuZXJDb3VudCgnZGF0YScpID4gMCkge1xuICAgIHNlbGYucmVzdW1lKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gblJlYWRpbmdOZXh0VGljayhzZWxmKSB7XG4gIGRlYnVnKCdyZWFkYWJsZSBuZXh0dGljayByZWFkIDAnKTtcbiAgc2VsZi5yZWFkKDApO1xufSAvLyBwYXVzZSgpIGFuZCByZXN1bWUoKSBhcmUgcmVtbmFudHMgb2YgdGhlIGxlZ2FjeSByZWFkYWJsZSBzdHJlYW0gQVBJXG4vLyBJZiB0aGUgdXNlciB1c2VzIHRoZW0sIHRoZW4gc3dpdGNoIGludG8gb2xkIG1vZGUuXG5cblxuUmVhZGFibGUucHJvdG90eXBlLnJlc3VtZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICBpZiAoIXN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncmVzdW1lJyk7IC8vIHdlIGZsb3cgb25seSBpZiB0aGVyZSBpcyBubyBvbmUgbGlzdGVuaW5nXG4gICAgLy8gZm9yIHJlYWRhYmxlLCBidXQgd2Ugc3RpbGwgaGF2ZSB0byBjYWxsXG4gICAgLy8gcmVzdW1lKClcblxuICAgIHN0YXRlLmZsb3dpbmcgPSAhc3RhdGUucmVhZGFibGVMaXN0ZW5pbmc7XG4gICAgcmVzdW1lKHRoaXMsIHN0YXRlKTtcbiAgfVxuXG4gIHN0YXRlLnBhdXNlZCA9IGZhbHNlO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIHJlc3VtZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVzdW1lU2NoZWR1bGVkKSB7XG4gICAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBwcm9jZXNzLm5leHRUaWNrKHJlc3VtZV8sIHN0cmVhbSwgc3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc3VtZV8oc3RyZWFtLCBzdGF0ZSkge1xuICBkZWJ1ZygncmVzdW1lJywgc3RhdGUucmVhZGluZyk7XG5cbiAgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gIH1cblxuICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTtcbiAgc3RyZWFtLmVtaXQoJ3Jlc3VtZScpO1xuICBmbG93KHN0cmVhbSk7XG4gIGlmIChzdGF0ZS5mbG93aW5nICYmICFzdGF0ZS5yZWFkaW5nKSBzdHJlYW0ucmVhZCgwKTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICBkZWJ1ZygnY2FsbCBwYXVzZSBmbG93aW5nPSVqJywgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKTtcblxuICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nICE9PSBmYWxzZSkge1xuICAgIGRlYnVnKCdwYXVzZScpO1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdCgncGF1c2UnKTtcbiAgfVxuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUucGF1c2VkID0gdHJ1ZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBmbG93KHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGRlYnVnKCdmbG93Jywgc3RhdGUuZmxvd2luZyk7XG5cbiAgd2hpbGUgKHN0YXRlLmZsb3dpbmcgJiYgc3RyZWFtLnJlYWQoKSAhPT0gbnVsbCkge1xuICAgIDtcbiAgfVxufSAvLyB3cmFwIGFuIG9sZC1zdHlsZSBzdHJlYW0gYXMgdGhlIGFzeW5jIGRhdGEgc291cmNlLlxuLy8gVGhpcyBpcyAqbm90KiBwYXJ0IG9mIHRoZSByZWFkYWJsZSBzdHJlYW0gaW50ZXJmYWNlLlxuLy8gSXQgaXMgYW4gdWdseSB1bmZvcnR1bmF0ZSBtZXNzIG9mIGhpc3RvcnkuXG5cblxuUmVhZGFibGUucHJvdG90eXBlLndyYXAgPSBmdW5jdGlvbiAoc3RyZWFtKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIHBhdXNlZCA9IGZhbHNlO1xuICBzdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBlbmQnKTtcblxuICAgIGlmIChzdGF0ZS5kZWNvZGVyICYmICFzdGF0ZS5lbmRlZCkge1xuICAgICAgdmFyIGNodW5rID0gc3RhdGUuZGVjb2Rlci5lbmQoKTtcbiAgICAgIGlmIChjaHVuayAmJiBjaHVuay5sZW5ndGgpIF90aGlzLnB1c2goY2h1bmspO1xuICAgIH1cblxuICAgIF90aGlzLnB1c2gobnVsbCk7XG4gIH0pO1xuICBzdHJlYW0ub24oJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBkYXRhJyk7XG4gICAgaWYgKHN0YXRlLmRlY29kZXIpIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7IC8vIGRvbid0IHNraXAgb3ZlciBmYWxzeSB2YWx1ZXMgaW4gb2JqZWN0TW9kZVxuXG4gICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgJiYgKGNodW5rID09PSBudWxsIHx8IGNodW5rID09PSB1bmRlZmluZWQpKSByZXR1cm47ZWxzZSBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgKCFjaHVuayB8fCAhY2h1bmsubGVuZ3RoKSkgcmV0dXJuO1xuXG4gICAgdmFyIHJldCA9IF90aGlzLnB1c2goY2h1bmspO1xuXG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIHBhdXNlZCA9IHRydWU7XG4gICAgICBzdHJlYW0ucGF1c2UoKTtcbiAgICB9XG4gIH0pOyAvLyBwcm94eSBhbGwgdGhlIG90aGVyIG1ldGhvZHMuXG4gIC8vIGltcG9ydGFudCB3aGVuIHdyYXBwaW5nIGZpbHRlcnMgYW5kIGR1cGxleGVzLlxuXG4gIGZvciAodmFyIGkgaW4gc3RyZWFtKSB7XG4gICAgaWYgKHRoaXNbaV0gPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygc3RyZWFtW2ldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2ldID0gZnVuY3Rpb24gbWV0aG9kV3JhcChtZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIG1ldGhvZFdyYXBSZXR1cm5GdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gc3RyZWFtW21ldGhvZF0uYXBwbHkoc3RyZWFtLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgfShpKTtcbiAgICB9XG4gIH0gLy8gcHJveHkgY2VydGFpbiBpbXBvcnRhbnQgZXZlbnRzLlxuXG5cbiAgZm9yICh2YXIgbiA9IDA7IG4gPCBrUHJveHlFdmVudHMubGVuZ3RoOyBuKyspIHtcbiAgICBzdHJlYW0ub24oa1Byb3h5RXZlbnRzW25dLCB0aGlzLmVtaXQuYmluZCh0aGlzLCBrUHJveHlFdmVudHNbbl0pKTtcbiAgfSAvLyB3aGVuIHdlIHRyeSB0byBjb25zdW1lIHNvbWUgbW9yZSBieXRlcywgc2ltcGx5IHVucGF1c2UgdGhlXG4gIC8vIHVuZGVybHlpbmcgc3RyZWFtLlxuXG5cbiAgdGhpcy5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgX3JlYWQnLCBuKTtcblxuICAgIGlmIChwYXVzZWQpIHtcbiAgICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgICAgc3RyZWFtLnJlc3VtZSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbmlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nKSB7XG4gIFJlYWRhYmxlLnByb3RvdHlwZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3IgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvYXN5bmNfaXRlcmF0b3InKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3JlYXRlUmVhZGFibGVTdHJlYW1Bc3luY0l0ZXJhdG9yKHRoaXMpO1xuICB9O1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhZGFibGUucHJvdG90eXBlLCAncmVhZGFibGVIaWdoV2F0ZXJNYXJrJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdyZWFkYWJsZUJ1ZmZlcicsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUgJiYgdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXI7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ3JlYWRhYmxlRmxvd2luZycsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZztcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiBzZXQoc3RhdGUpIHtcbiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID0gc3RhdGU7XG4gICAgfVxuICB9XG59KTsgLy8gZXhwb3NlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5LlxuXG5SZWFkYWJsZS5fZnJvbUxpc3QgPSBmcm9tTGlzdDtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdyZWFkYWJsZUxlbmd0aCcsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RoO1xuICB9XG59KTsgLy8gUGx1Y2sgb2ZmIG4gYnl0ZXMgZnJvbSBhbiBhcnJheSBvZiBidWZmZXJzLlxuLy8gTGVuZ3RoIGlzIHRoZSBjb21iaW5lZCBsZW5ndGhzIG9mIGFsbCB0aGUgYnVmZmVycyBpbiB0aGUgbGlzdC5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuXG5mdW5jdGlvbiBmcm9tTGlzdChuLCBzdGF0ZSkge1xuICAvLyBub3RoaW5nIGJ1ZmZlcmVkXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuICB2YXIgcmV0O1xuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0ID0gc3RhdGUuYnVmZmVyLnNoaWZ0KCk7ZWxzZSBpZiAoIW4gfHwgbiA+PSBzdGF0ZS5sZW5ndGgpIHtcbiAgICAvLyByZWFkIGl0IGFsbCwgdHJ1bmNhdGUgdGhlIGxpc3RcbiAgICBpZiAoc3RhdGUuZGVjb2RlcikgcmV0ID0gc3RhdGUuYnVmZmVyLmpvaW4oJycpO2Vsc2UgaWYgKHN0YXRlLmJ1ZmZlci5sZW5ndGggPT09IDEpIHJldCA9IHN0YXRlLmJ1ZmZlci5maXJzdCgpO2Vsc2UgcmV0ID0gc3RhdGUuYnVmZmVyLmNvbmNhdChzdGF0ZS5sZW5ndGgpO1xuICAgIHN0YXRlLmJ1ZmZlci5jbGVhcigpO1xuICB9IGVsc2Uge1xuICAgIC8vIHJlYWQgcGFydCBvZiBsaXN0XG4gICAgcmV0ID0gc3RhdGUuYnVmZmVyLmNvbnN1bWUobiwgc3RhdGUuZGVjb2Rlcik7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgZGVidWcoJ2VuZFJlYWRhYmxlJywgc3RhdGUuZW5kRW1pdHRlZCk7XG5cbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkKSB7XG4gICAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICAgIHByb2Nlc3MubmV4dFRpY2soZW5kUmVhZGFibGVOVCwgc3RhdGUsIHN0cmVhbSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGVOVChzdGF0ZSwgc3RyZWFtKSB7XG4gIGRlYnVnKCdlbmRSZWFkYWJsZU5UJywgc3RhdGUuZW5kRW1pdHRlZCwgc3RhdGUubGVuZ3RoKTsgLy8gQ2hlY2sgdGhhdCB3ZSBkaWRuJ3QgZ2V0IG9uZSBsYXN0IHVuc2hpZnQuXG5cbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmIHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIHN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5yZWFkYWJsZSA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdlbmQnKTtcblxuICAgIGlmIChzdGF0ZS5hdXRvRGVzdHJveSkge1xuICAgICAgLy8gSW4gY2FzZSBvZiBkdXBsZXggc3RyZWFtcyB3ZSBuZWVkIGEgd2F5IHRvIGRldGVjdFxuICAgICAgLy8gaWYgdGhlIHdyaXRhYmxlIHNpZGUgaXMgcmVhZHkgZm9yIGF1dG9EZXN0cm95IGFzIHdlbGxcbiAgICAgIHZhciB3U3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGU7XG5cbiAgICAgIGlmICghd1N0YXRlIHx8IHdTdGF0ZS5hdXRvRGVzdHJveSAmJiB3U3RhdGUuZmluaXNoZWQpIHtcbiAgICAgICAgc3RyZWFtLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicpIHtcbiAgUmVhZGFibGUuZnJvbSA9IGZ1bmN0aW9uIChpdGVyYWJsZSwgb3B0cykge1xuICAgIGlmIChmcm9tID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGZyb20gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvZnJvbScpO1xuICAgIH1cblxuICAgIHJldHVybiBmcm9tKFJlYWRhYmxlLCBpdGVyYWJsZSwgb3B0cyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluZGV4T2YoeHMsIHgpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSB4cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoeHNbaV0gPT09IHgpIHJldHVybiBpO1xuICB9XG5cbiAgcmV0dXJuIC0xO1xufSIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuLy8gYSB0cmFuc2Zvcm0gc3RyZWFtIGlzIGEgcmVhZGFibGUvd3JpdGFibGUgc3RyZWFtIHdoZXJlIHlvdSBkb1xuLy8gc29tZXRoaW5nIHdpdGggdGhlIGRhdGEuICBTb21ldGltZXMgaXQncyBjYWxsZWQgYSBcImZpbHRlclwiLFxuLy8gYnV0IHRoYXQncyBub3QgYSBncmVhdCBuYW1lIGZvciBpdCwgc2luY2UgdGhhdCBpbXBsaWVzIGEgdGhpbmcgd2hlcmVcbi8vIHNvbWUgYml0cyBwYXNzIHRocm91Z2gsIGFuZCBvdGhlcnMgYXJlIHNpbXBseSBpZ25vcmVkLiAgKFRoYXQgd291bGRcbi8vIGJlIGEgdmFsaWQgZXhhbXBsZSBvZiBhIHRyYW5zZm9ybSwgb2YgY291cnNlLilcbi8vXG4vLyBXaGlsZSB0aGUgb3V0cHV0IGlzIGNhdXNhbGx5IHJlbGF0ZWQgdG8gdGhlIGlucHV0LCBpdCdzIG5vdCBhXG4vLyBuZWNlc3NhcmlseSBzeW1tZXRyaWMgb3Igc3luY2hyb25vdXMgdHJhbnNmb3JtYXRpb24uICBGb3IgZXhhbXBsZSxcbi8vIGEgemxpYiBzdHJlYW0gbWlnaHQgdGFrZSBtdWx0aXBsZSBwbGFpbi10ZXh0IHdyaXRlcygpLCBhbmQgdGhlblxuLy8gZW1pdCBhIHNpbmdsZSBjb21wcmVzc2VkIGNodW5rIHNvbWUgdGltZSBpbiB0aGUgZnV0dXJlLlxuLy9cbi8vIEhlcmUncyBob3cgdGhpcyB3b3Jrczpcbi8vXG4vLyBUaGUgVHJhbnNmb3JtIHN0cmVhbSBoYXMgYWxsIHRoZSBhc3BlY3RzIG9mIHRoZSByZWFkYWJsZSBhbmQgd3JpdGFibGVcbi8vIHN0cmVhbSBjbGFzc2VzLiAgV2hlbiB5b3Ugd3JpdGUoY2h1bmspLCB0aGF0IGNhbGxzIF93cml0ZShjaHVuayxjYilcbi8vIGludGVybmFsbHksIGFuZCByZXR1cm5zIGZhbHNlIGlmIHRoZXJlJ3MgYSBsb3Qgb2YgcGVuZGluZyB3cml0ZXNcbi8vIGJ1ZmZlcmVkIHVwLiAgV2hlbiB5b3UgY2FsbCByZWFkKCksIHRoYXQgY2FsbHMgX3JlYWQobikgdW50aWxcbi8vIHRoZXJlJ3MgZW5vdWdoIHBlbmRpbmcgcmVhZGFibGUgZGF0YSBidWZmZXJlZCB1cC5cbi8vXG4vLyBJbiBhIHRyYW5zZm9ybSBzdHJlYW0sIHRoZSB3cml0dGVuIGRhdGEgaXMgcGxhY2VkIGluIGEgYnVmZmVyLiAgV2hlblxuLy8gX3JlYWQobikgaXMgY2FsbGVkLCBpdCB0cmFuc2Zvcm1zIHRoZSBxdWV1ZWQgdXAgZGF0YSwgY2FsbGluZyB0aGVcbi8vIGJ1ZmZlcmVkIF93cml0ZSBjYidzIGFzIGl0IGNvbnN1bWVzIGNodW5rcy4gIElmIGNvbnN1bWluZyBhIHNpbmdsZVxuLy8gd3JpdHRlbiBjaHVuayB3b3VsZCByZXN1bHQgaW4gbXVsdGlwbGUgb3V0cHV0IGNodW5rcywgdGhlbiB0aGUgZmlyc3Rcbi8vIG91dHB1dHRlZCBiaXQgY2FsbHMgdGhlIHJlYWRjYiwgYW5kIHN1YnNlcXVlbnQgY2h1bmtzIGp1c3QgZ28gaW50b1xuLy8gdGhlIHJlYWQgYnVmZmVyLCBhbmQgd2lsbCBjYXVzZSBpdCB0byBlbWl0ICdyZWFkYWJsZScgaWYgbmVjZXNzYXJ5LlxuLy9cbi8vIFRoaXMgd2F5LCBiYWNrLXByZXNzdXJlIGlzIGFjdHVhbGx5IGRldGVybWluZWQgYnkgdGhlIHJlYWRpbmcgc2lkZSxcbi8vIHNpbmNlIF9yZWFkIGhhcyB0byBiZSBjYWxsZWQgdG8gc3RhcnQgcHJvY2Vzc2luZyBhIG5ldyBjaHVuay4gIEhvd2V2ZXIsXG4vLyBhIHBhdGhvbG9naWNhbCBpbmZsYXRlIHR5cGUgb2YgdHJhbnNmb3JtIGNhbiBjYXVzZSBleGNlc3NpdmUgYnVmZmVyaW5nXG4vLyBoZXJlLiAgRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBzdHJlYW0gd2hlcmUgZXZlcnkgYnl0ZSBvZiBpbnB1dCBpc1xuLy8gaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlciBmcm9tIDAtMjU1LCBhbmQgdGhlbiByZXN1bHRzIGluIHRoYXQgbWFueVxuLy8gYnl0ZXMgb2Ygb3V0cHV0LiAgV3JpdGluZyB0aGUgNCBieXRlcyB7ZmYsZmYsZmYsZmZ9IHdvdWxkIHJlc3VsdCBpblxuLy8gMWtiIG9mIGRhdGEgYmVpbmcgb3V0cHV0LiAgSW4gdGhpcyBjYXNlLCB5b3UgY291bGQgd3JpdGUgYSB2ZXJ5IHNtYWxsXG4vLyBhbW91bnQgb2YgaW5wdXQsIGFuZCBlbmQgdXAgd2l0aCBhIHZlcnkgbGFyZ2UgYW1vdW50IG9mIG91dHB1dC4gIEluXG4vLyBzdWNoIGEgcGF0aG9sb2dpY2FsIGluZmxhdGluZyBtZWNoYW5pc20sIHRoZXJlJ2QgYmUgbm8gd2F5IHRvIHRlbGxcbi8vIHRoZSBzeXN0ZW0gdG8gc3RvcCBkb2luZyB0aGUgdHJhbnNmb3JtLiAgQSBzaW5nbGUgNE1CIHdyaXRlIGNvdWxkXG4vLyBjYXVzZSB0aGUgc3lzdGVtIHRvIHJ1biBvdXQgb2YgbWVtb3J5LlxuLy9cbi8vIEhvd2V2ZXIsIGV2ZW4gaW4gc3VjaCBhIHBhdGhvbG9naWNhbCBjYXNlLCBvbmx5IGEgc2luZ2xlIHdyaXR0ZW4gY2h1bmtcbi8vIHdvdWxkIGJlIGNvbnN1bWVkLCBhbmQgdGhlbiB0aGUgcmVzdCB3b3VsZCB3YWl0ICh1bi10cmFuc2Zvcm1lZCkgdW50aWxcbi8vIHRoZSByZXN1bHRzIG9mIHRoZSBwcmV2aW91cyB0cmFuc2Zvcm1lZCBjaHVuayB3ZXJlIGNvbnN1bWVkLlxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zZm9ybTtcblxudmFyIF9yZXF1aXJlJGNvZGVzID0gcmVxdWlyZSgnLi4vZXJyb3JzJykuY29kZXMsXG4gICAgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxcbiAgICBFUlJfTVVMVElQTEVfQ0FMTEJBQ0sgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssXG4gICAgRVJSX1RSQU5TRk9STV9BTFJFQURZX1RSQU5TRk9STUlORyA9IF9yZXF1aXJlJGNvZGVzLkVSUl9UUkFOU0ZPUk1fQUxSRUFEWV9UUkFOU0ZPUk1JTkcsXG4gICAgRVJSX1RSQU5TRk9STV9XSVRIX0xFTkdUSF8wID0gX3JlcXVpcmUkY29kZXMuRVJSX1RSQU5TRk9STV9XSVRIX0xFTkdUSF8wO1xuXG52YXIgRHVwbGV4ID0gcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG5yZXF1aXJlKCdpbmhlcml0cycpKFRyYW5zZm9ybSwgRHVwbGV4KTtcblxuZnVuY3Rpb24gYWZ0ZXJUcmFuc2Zvcm0oZXIsIGRhdGEpIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG4gIHRzLnRyYW5zZm9ybWluZyA9IGZhbHNlO1xuICB2YXIgY2IgPSB0cy53cml0ZWNiO1xuXG4gIGlmIChjYiA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVSUl9NVUxUSVBMRV9DQUxMQkFDSygpKTtcbiAgfVxuXG4gIHRzLndyaXRlY2h1bmsgPSBudWxsO1xuICB0cy53cml0ZWNiID0gbnVsbDtcbiAgaWYgKGRhdGEgIT0gbnVsbCkgLy8gc2luZ2xlIGVxdWFscyBjaGVjayBmb3IgYm90aCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgXG4gICAgdGhpcy5wdXNoKGRhdGEpO1xuICBjYihlcik7XG4gIHZhciBycyA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHJzLnJlYWRpbmcgPSBmYWxzZTtcblxuICBpZiAocnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHtcbiAgICB0aGlzLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59XG5cbmZ1bmN0aW9uIFRyYW5zZm9ybShvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBUcmFuc2Zvcm0pKSByZXR1cm4gbmV3IFRyYW5zZm9ybShvcHRpb25zKTtcbiAgRHVwbGV4LmNhbGwodGhpcywgb3B0aW9ucyk7XG4gIHRoaXMuX3RyYW5zZm9ybVN0YXRlID0ge1xuICAgIGFmdGVyVHJhbnNmb3JtOiBhZnRlclRyYW5zZm9ybS5iaW5kKHRoaXMpLFxuICAgIG5lZWRUcmFuc2Zvcm06IGZhbHNlLFxuICAgIHRyYW5zZm9ybWluZzogZmFsc2UsXG4gICAgd3JpdGVjYjogbnVsbCxcbiAgICB3cml0ZWNodW5rOiBudWxsLFxuICAgIHdyaXRlZW5jb2Rpbmc6IG51bGxcbiAgfTsgLy8gc3RhcnQgb3V0IGFza2luZyBmb3IgYSByZWFkYWJsZSBldmVudCBvbmNlIGRhdGEgaXMgdHJhbnNmb3JtZWQuXG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlOyAvLyB3ZSBoYXZlIGltcGxlbWVudGVkIHRoZSBfcmVhZCBtZXRob2QsIGFuZCBkb25lIHRoZSBvdGhlciB0aGluZ3NcbiAgLy8gdGhhdCBSZWFkYWJsZSB3YW50cyBiZWZvcmUgdGhlIGZpcnN0IF9yZWFkIGNhbGwsIHNvIHVuc2V0IHRoZVxuICAvLyBzeW5jIGd1YXJkIGZsYWcuXG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMudHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB0aGlzLl90cmFuc2Zvcm0gPSBvcHRpb25zLnRyYW5zZm9ybTtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmx1c2ggPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZsdXNoID0gb3B0aW9ucy5mbHVzaDtcbiAgfSAvLyBXaGVuIHRoZSB3cml0YWJsZSBzaWRlIGZpbmlzaGVzLCB0aGVuIGZsdXNoIG91dCBhbnl0aGluZyByZW1haW5pbmcuXG5cblxuICB0aGlzLm9uKCdwcmVmaW5pc2gnLCBwcmVmaW5pc2gpO1xufVxuXG5mdW5jdGlvbiBwcmVmaW5pc2goKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgaWYgKHR5cGVvZiB0aGlzLl9mbHVzaCA9PT0gJ2Z1bmN0aW9uJyAmJiAhdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQpIHtcbiAgICB0aGlzLl9mbHVzaChmdW5jdGlvbiAoZXIsIGRhdGEpIHtcbiAgICAgIGRvbmUoX3RoaXMsIGVyLCBkYXRhKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBkb25lKHRoaXMsIG51bGwsIG51bGwpO1xuICB9XG59XG5cblRyYW5zZm9ybS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5zZm9ybSA9IGZhbHNlO1xuICByZXR1cm4gRHVwbGV4LnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcywgY2h1bmssIGVuY29kaW5nKTtcbn07IC8vIFRoaXMgaXMgdGhlIHBhcnQgd2hlcmUgeW91IGRvIHN0dWZmIVxuLy8gb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiBpbiBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gJ2NodW5rJyBpcyBhbiBpbnB1dCBjaHVuay5cbi8vXG4vLyBDYWxsIGBwdXNoKG5ld0NodW5rKWAgdG8gcGFzcyBhbG9uZyB0cmFuc2Zvcm1lZCBvdXRwdXRcbi8vIHRvIHRoZSByZWFkYWJsZSBzaWRlLiAgWW91IG1heSBjYWxsICdwdXNoJyB6ZXJvIG9yIG1vcmUgdGltZXMuXG4vL1xuLy8gQ2FsbCBgY2IoZXJyKWAgd2hlbiB5b3UgYXJlIGRvbmUgd2l0aCB0aGlzIGNodW5rLiAgSWYgeW91IHBhc3Ncbi8vIGFuIGVycm9yLCB0aGVuIHRoYXQnbGwgcHV0IHRoZSBodXJ0IG9uIHRoZSB3aG9sZSBvcGVyYXRpb24uICBJZiB5b3Vcbi8vIG5ldmVyIGNhbGwgY2IoKSwgdGhlbiB5b3UnbGwgbmV2ZXIgZ2V0IGFub3RoZXIgY2h1bmsuXG5cblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobmV3IEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEKCdfdHJhbnNmb3JtKCknKSk7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciB0cyA9IHRoaXMuX3RyYW5zZm9ybVN0YXRlO1xuICB0cy53cml0ZWNiID0gY2I7XG4gIHRzLndyaXRlY2h1bmsgPSBjaHVuaztcbiAgdHMud3JpdGVlbmNvZGluZyA9IGVuY29kaW5nO1xuXG4gIGlmICghdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdmFyIHJzID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgICBpZiAodHMubmVlZFRyYW5zZm9ybSB8fCBycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykgdGhpcy5fcmVhZChycy5oaWdoV2F0ZXJNYXJrKTtcbiAgfVxufTsgLy8gRG9lc24ndCBtYXR0ZXIgd2hhdCB0aGUgYXJncyBhcmUgaGVyZS5cbi8vIF90cmFuc2Zvcm0gZG9lcyBhbGwgdGhlIHdvcmsuXG4vLyBUaGF0IHdlIGdvdCBoZXJlIG1lYW5zIHRoYXQgdGhlIHJlYWRhYmxlIHNpZGUgd2FudHMgbW9yZSBkYXRhLlxuXG5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcblxuICBpZiAodHMud3JpdGVjaHVuayAhPT0gbnVsbCAmJiAhdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdHMudHJhbnNmb3JtaW5nID0gdHJ1ZTtcblxuICAgIHRoaXMuX3RyYW5zZm9ybSh0cy53cml0ZWNodW5rLCB0cy53cml0ZWVuY29kaW5nLCB0cy5hZnRlclRyYW5zZm9ybSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gbWFyayB0aGF0IHdlIG5lZWQgYSB0cmFuc2Zvcm0sIHNvIHRoYXQgYW55IGRhdGEgdGhhdCBjb21lcyBpblxuICAgIC8vIHdpbGwgZ2V0IHByb2Nlc3NlZCwgbm93IHRoYXQgd2UndmUgYXNrZWQgZm9yIGl0LlxuICAgIHRzLm5lZWRUcmFuc2Zvcm0gPSB0cnVlO1xuICB9XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgRHVwbGV4LnByb3RvdHlwZS5fZGVzdHJveS5jYWxsKHRoaXMsIGVyciwgZnVuY3Rpb24gKGVycjIpIHtcbiAgICBjYihlcnIyKTtcbiAgfSk7XG59O1xuXG5mdW5jdGlvbiBkb25lKHN0cmVhbSwgZXIsIGRhdGEpIHtcbiAgaWYgKGVyKSByZXR1cm4gc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICBpZiAoZGF0YSAhPSBudWxsKSAvLyBzaW5nbGUgZXF1YWxzIGNoZWNrIGZvciBib3RoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGBcbiAgICBzdHJlYW0ucHVzaChkYXRhKTsgLy8gVE9ETyhCcmlkZ2VBUik6IFdyaXRlIGEgdGVzdCBmb3IgdGhlc2UgdHdvIGVycm9yIGNhc2VzXG4gIC8vIGlmIHRoZXJlJ3Mgbm90aGluZyBpbiB0aGUgd3JpdGUgYnVmZmVyLCB0aGVuIHRoYXQgbWVhbnNcbiAgLy8gdGhhdCBub3RoaW5nIG1vcmUgd2lsbCBldmVyIGJlIHByb3ZpZGVkXG5cbiAgaWYgKHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5sZW5ndGgpIHRocm93IG5ldyBFUlJfVFJBTlNGT1JNX1dJVEhfTEVOR1RIXzAoKTtcbiAgaWYgKHN0cmVhbS5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKSB0aHJvdyBuZXcgRVJSX1RSQU5TRk9STV9BTFJFQURZX1RSQU5TRk9STUlORygpO1xuICByZXR1cm4gc3RyZWFtLnB1c2gobnVsbCk7XG59IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4vLyBBIGJpdCBzaW1wbGVyIHRoYW4gcmVhZGFibGUgc3RyZWFtcy5cbi8vIEltcGxlbWVudCBhbiBhc3luYyAuX3dyaXRlKGNodW5rLCBlbmNvZGluZywgY2IpLCBhbmQgaXQnbGwgaGFuZGxlIGFsbFxuLy8gdGhlIGRyYWluIGV2ZW50IGVtaXNzaW9uIGFuZCBidWZmZXJpbmcuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gV3JpdGFibGU7XG4vKiA8cmVwbGFjZW1lbnQ+ICovXG5cbmZ1bmN0aW9uIFdyaXRlUmVxKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdGhpcy5jaHVuayA9IGNodW5rO1xuICB0aGlzLmVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHRoaXMuY2FsbGJhY2sgPSBjYjtcbiAgdGhpcy5uZXh0ID0gbnVsbDtcbn0gLy8gSXQgc2VlbXMgYSBsaW5rZWQgbGlzdCBidXQgaXQgaXMgbm90XG4vLyB0aGVyZSB3aWxsIGJlIG9ubHkgMiBvZiB0aGVzZSBmb3IgZWFjaCBzdHJlYW1cblxuXG5mdW5jdGlvbiBDb3JrZWRSZXF1ZXN0KHN0YXRlKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgdGhpcy5lbnRyeSA9IG51bGw7XG5cbiAgdGhpcy5maW5pc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgb25Db3JrZWRGaW5pc2goX3RoaXMsIHN0YXRlKTtcbiAgfTtcbn1cbi8qIDwvcmVwbGFjZW1lbnQ+ICovXG5cbi8qPHJlcGxhY2VtZW50PiovXG5cblxudmFyIER1cGxleDtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5Xcml0YWJsZS5Xcml0YWJsZVN0YXRlID0gV3JpdGFibGVTdGF0ZTtcbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBpbnRlcm5hbFV0aWwgPSB7XG4gIGRlcHJlY2F0ZTogcmVxdWlyZSgndXRpbC1kZXByZWNhdGUnKVxufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcblxudmFyIE91clVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheSB8fCBmdW5jdGlvbiAoKSB7fTtcblxuZnVuY3Rpb24gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuaykge1xuICByZXR1cm4gQnVmZmVyLmZyb20oY2h1bmspO1xufVxuXG5mdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikge1xuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKG9iaikgfHwgb2JqIGluc3RhbmNlb2YgT3VyVWludDhBcnJheTtcbn1cblxudmFyIGRlc3Ryb3lJbXBsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3knKTtcblxudmFyIF9yZXF1aXJlID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0YXRlJyksXG4gICAgZ2V0SGlnaFdhdGVyTWFyayA9IF9yZXF1aXJlLmdldEhpZ2hXYXRlck1hcms7XG5cbnZhciBfcmVxdWlyZSRjb2RlcyA9IHJlcXVpcmUoJy4uL2Vycm9ycycpLmNvZGVzLFxuICAgIEVSUl9JTlZBTElEX0FSR19UWVBFID0gX3JlcXVpcmUkY29kZXMuRVJSX0lOVkFMSURfQVJHX1RZUEUsXG4gICAgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxcbiAgICBFUlJfTVVMVElQTEVfQ0FMTEJBQ0sgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssXG4gICAgRVJSX1NUUkVBTV9DQU5OT1RfUElQRSA9IF9yZXF1aXJlJGNvZGVzLkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUsXG4gICAgRVJSX1NUUkVBTV9ERVNUUk9ZRUQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfU1RSRUFNX0RFU1RST1lFRCxcbiAgICBFUlJfU1RSRUFNX05VTExfVkFMVUVTID0gX3JlcXVpcmUkY29kZXMuRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUyxcbiAgICBFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCA9IF9yZXF1aXJlJGNvZGVzLkVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5ELFxuICAgIEVSUl9VTktOT1dOX0VOQ09ESU5HID0gX3JlcXVpcmUkY29kZXMuRVJSX1VOS05PV05fRU5DT0RJTkc7XG5cbnZhciBlcnJvck9yRGVzdHJveSA9IGRlc3Ryb3lJbXBsLmVycm9yT3JEZXN0cm95O1xuXG5yZXF1aXJlKCdpbmhlcml0cycpKFdyaXRhYmxlLCBTdHJlYW0pO1xuXG5mdW5jdGlvbiBub3AoKSB7fVxuXG5mdW5jdGlvbiBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSwgaXNEdXBsZXgpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307IC8vIER1cGxleCBzdHJlYW1zIGFyZSBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZSwgYnV0IHNoYXJlXG4gIC8vIHRoZSBzYW1lIG9wdGlvbnMgb2JqZWN0LlxuICAvLyBIb3dldmVyLCBzb21lIGNhc2VzIHJlcXVpcmUgc2V0dGluZyBvcHRpb25zIHRvIGRpZmZlcmVudFxuICAvLyB2YWx1ZXMgZm9yIHRoZSByZWFkYWJsZSBhbmQgdGhlIHdyaXRhYmxlIHNpZGVzIG9mIHRoZSBkdXBsZXggc3RyZWFtLFxuICAvLyBlLmcuIG9wdGlvbnMucmVhZGFibGVPYmplY3RNb2RlIHZzLiBvcHRpb25zLndyaXRhYmxlT2JqZWN0TW9kZSwgZXRjLlxuXG4gIGlmICh0eXBlb2YgaXNEdXBsZXggIT09ICdib29sZWFuJykgaXNEdXBsZXggPSBzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXg7IC8vIG9iamVjdCBzdHJlYW0gZmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGlzIHN0cmVhbVxuICAvLyBjb250YWlucyBidWZmZXJzIG9yIG9iamVjdHMuXG5cbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG4gIGlmIChpc0R1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy53cml0YWJsZU9iamVjdE1vZGU7IC8vIHRoZSBwb2ludCBhdCB3aGljaCB3cml0ZSgpIHN0YXJ0cyByZXR1cm5pbmcgZmFsc2VcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyB0aGF0IHdlIGFsd2F5cyByZXR1cm4gZmFsc2UgaWZcbiAgLy8gdGhlIGVudGlyZSBidWZmZXIgaXMgbm90IGZsdXNoZWQgaW1tZWRpYXRlbHkgb24gd3JpdGUoKVxuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IGdldEhpZ2hXYXRlck1hcmsodGhpcywgb3B0aW9ucywgJ3dyaXRhYmxlSGlnaFdhdGVyTWFyaycsIGlzRHVwbGV4KTsgLy8gaWYgX2ZpbmFsIGhhcyBiZWVuIGNhbGxlZFxuXG4gIHRoaXMuZmluYWxDYWxsZWQgPSBmYWxzZTsgLy8gZHJhaW4gZXZlbnQgZmxhZy5cblxuICB0aGlzLm5lZWREcmFpbiA9IGZhbHNlOyAvLyBhdCB0aGUgc3RhcnQgb2YgY2FsbGluZyBlbmQoKVxuXG4gIHRoaXMuZW5kaW5nID0gZmFsc2U7IC8vIHdoZW4gZW5kKCkgaGFzIGJlZW4gY2FsbGVkLCBhbmQgcmV0dXJuZWRcblxuICB0aGlzLmVuZGVkID0gZmFsc2U7IC8vIHdoZW4gJ2ZpbmlzaCcgaXMgZW1pdHRlZFxuXG4gIHRoaXMuZmluaXNoZWQgPSBmYWxzZTsgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkXG5cbiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTsgLy8gc2hvdWxkIHdlIGRlY29kZSBzdHJpbmdzIGludG8gYnVmZmVycyBiZWZvcmUgcGFzc2luZyB0byBfd3JpdGU/XG4gIC8vIHRoaXMgaXMgaGVyZSBzbyB0aGF0IHNvbWUgbm9kZS1jb3JlIHN0cmVhbXMgY2FuIG9wdGltaXplIHN0cmluZ1xuICAvLyBoYW5kbGluZyBhdCBhIGxvd2VyIGxldmVsLlxuXG4gIHZhciBub0RlY29kZSA9IG9wdGlvbnMuZGVjb2RlU3RyaW5ncyA9PT0gZmFsc2U7XG4gIHRoaXMuZGVjb2RlU3RyaW5ncyA9ICFub0RlY29kZTsgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cblxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JzsgLy8gbm90IGFuIGFjdHVhbCBidWZmZXIgd2Uga2VlcCB0cmFjayBvZiwgYnV0IGEgbWVhc3VyZW1lbnRcbiAgLy8gb2YgaG93IG11Y2ggd2UncmUgd2FpdGluZyB0byBnZXQgcHVzaGVkIHRvIHNvbWUgdW5kZXJseWluZ1xuICAvLyBzb2NrZXQgb3IgZmlsZS5cblxuICB0aGlzLmxlbmd0aCA9IDA7IC8vIGEgZmxhZyB0byBzZWUgd2hlbiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGEgd3JpdGUuXG5cbiAgdGhpcy53cml0aW5nID0gZmFsc2U7IC8vIHdoZW4gdHJ1ZSBhbGwgd3JpdGVzIHdpbGwgYmUgYnVmZmVyZWQgdW50aWwgLnVuY29yaygpIGNhbGxcblxuICB0aGlzLmNvcmtlZCA9IDA7IC8vIGEgZmxhZyB0byBiZSBhYmxlIHRvIHRlbGwgaWYgdGhlIG9ud3JpdGUgY2IgaXMgY2FsbGVkIGltbWVkaWF0ZWx5LFxuICAvLyBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlIGFueVxuICAvLyBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCB3cml0ZSBjYWxsLlxuXG4gIHRoaXMuc3luYyA9IHRydWU7IC8vIGEgZmxhZyB0byBrbm93IGlmIHdlJ3JlIHByb2Nlc3NpbmcgcHJldmlvdXNseSBidWZmZXJlZCBpdGVtcywgd2hpY2hcbiAgLy8gbWF5IGNhbGwgdGhlIF93cml0ZSgpIGNhbGxiYWNrIGluIHRoZSBzYW1lIHRpY2ssIHNvIHRoYXQgd2UgZG9uJ3RcbiAgLy8gZW5kIHVwIGluIGFuIG92ZXJsYXBwZWQgb253cml0ZSBzaXR1YXRpb24uXG5cbiAgdGhpcy5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7IC8vIHRoZSBjYWxsYmFjayB0aGF0J3MgcGFzc2VkIHRvIF93cml0ZShjaHVuayxjYilcblxuICB0aGlzLm9ud3JpdGUgPSBmdW5jdGlvbiAoZXIpIHtcbiAgICBvbndyaXRlKHN0cmVhbSwgZXIpO1xuICB9OyAvLyB0aGUgY2FsbGJhY2sgdGhhdCB0aGUgdXNlciBzdXBwbGllcyB0byB3cml0ZShjaHVuayxlbmNvZGluZyxjYilcblxuXG4gIHRoaXMud3JpdGVjYiA9IG51bGw7IC8vIHRoZSBhbW91bnQgdGhhdCBpcyBiZWluZyB3cml0dGVuIHdoZW4gX3dyaXRlIGlzIGNhbGxlZC5cblxuICB0aGlzLndyaXRlbGVuID0gMDtcbiAgdGhpcy5idWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsOyAvLyBudW1iZXIgb2YgcGVuZGluZyB1c2VyLXN1cHBsaWVkIHdyaXRlIGNhbGxiYWNrc1xuICAvLyB0aGlzIG11c3QgYmUgMCBiZWZvcmUgJ2ZpbmlzaCcgY2FuIGJlIGVtaXR0ZWRcblxuICB0aGlzLnBlbmRpbmdjYiA9IDA7IC8vIGVtaXQgcHJlZmluaXNoIGlmIHRoZSBvbmx5IHRoaW5nIHdlJ3JlIHdhaXRpbmcgZm9yIGlzIF93cml0ZSBjYnNcbiAgLy8gVGhpcyBpcyByZWxldmFudCBmb3Igc3luY2hyb25vdXMgVHJhbnNmb3JtIHN0cmVhbXNcblxuICB0aGlzLnByZWZpbmlzaGVkID0gZmFsc2U7IC8vIFRydWUgaWYgdGhlIGVycm9yIHdhcyBhbHJlYWR5IGVtaXR0ZWQgYW5kIHNob3VsZCBub3QgYmUgdGhyb3duIGFnYWluXG5cbiAgdGhpcy5lcnJvckVtaXR0ZWQgPSBmYWxzZTsgLy8gU2hvdWxkIGNsb3NlIGJlIGVtaXR0ZWQgb24gZGVzdHJveS4gRGVmYXVsdHMgdG8gdHJ1ZS5cblxuICB0aGlzLmVtaXRDbG9zZSA9IG9wdGlvbnMuZW1pdENsb3NlICE9PSBmYWxzZTsgLy8gU2hvdWxkIC5kZXN0cm95KCkgYmUgY2FsbGVkIGFmdGVyICdmaW5pc2gnIChhbmQgcG90ZW50aWFsbHkgJ2VuZCcpXG5cbiAgdGhpcy5hdXRvRGVzdHJveSA9ICEhb3B0aW9ucy5hdXRvRGVzdHJveTsgLy8gY291bnQgYnVmZmVyZWQgcmVxdWVzdHNcblxuICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDsgLy8gYWxsb2NhdGUgdGhlIGZpcnN0IENvcmtlZFJlcXVlc3QsIHRoZXJlIGlzIGFsd2F5c1xuICAvLyBvbmUgYWxsb2NhdGVkIGFuZCBmcmVlIHRvIHVzZSwgYW5kIHdlIG1haW50YWluIGF0IG1vc3QgdHdvXG5cbiAgdGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBuZXcgQ29ya2VkUmVxdWVzdCh0aGlzKTtcbn1cblxuV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUuZ2V0QnVmZmVyID0gZnVuY3Rpb24gZ2V0QnVmZmVyKCkge1xuICB2YXIgY3VycmVudCA9IHRoaXMuYnVmZmVyZWRSZXF1ZXN0O1xuICB2YXIgb3V0ID0gW107XG5cbiAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICBvdXQucHVzaChjdXJyZW50KTtcbiAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICB9XG5cbiAgcmV0dXJuIG91dDtcbn07XG5cbihmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlU3RhdGUucHJvdG90eXBlLCAnYnVmZmVyJywge1xuICAgICAgZ2V0OiBpbnRlcm5hbFV0aWwuZGVwcmVjYXRlKGZ1bmN0aW9uIHdyaXRhYmxlU3RhdGVCdWZmZXJHZXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ1ZmZlcigpO1xuICAgICAgfSwgJ193cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyICcgKyAnaW5zdGVhZC4nLCAnREVQMDAwMycpXG4gICAgfSk7XG4gIH0gY2F0Y2ggKF8pIHt9XG59KSgpOyAvLyBUZXN0IF93cml0YWJsZVN0YXRlIGZvciBpbmhlcml0YW5jZSB0byBhY2NvdW50IGZvciBEdXBsZXggc3RyZWFtcyxcbi8vIHdob3NlIHByb3RvdHlwZSBjaGFpbiBvbmx5IHBvaW50cyB0byBSZWFkYWJsZS5cblxuXG52YXIgcmVhbEhhc0luc3RhbmNlO1xuXG5pZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaGFzSW5zdGFuY2UgJiYgdHlwZW9mIEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdID09PSAnZnVuY3Rpb24nKSB7XG4gIHJlYWxIYXNJbnN0YW5jZSA9IEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUsIFN5bWJvbC5oYXNJbnN0YW5jZSwge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShvYmplY3QpIHtcbiAgICAgIGlmIChyZWFsSGFzSW5zdGFuY2UuY2FsbCh0aGlzLCBvYmplY3QpKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmICh0aGlzICE9PSBXcml0YWJsZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBvYmplY3QuX3dyaXRhYmxlU3RhdGUgaW5zdGFuY2VvZiBXcml0YWJsZVN0YXRlO1xuICAgIH1cbiAgfSk7XG59IGVsc2Uge1xuICByZWFsSGFzSW5zdGFuY2UgPSBmdW5jdGlvbiByZWFsSGFzSW5zdGFuY2Uob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCBpbnN0YW5jZW9mIHRoaXM7XG4gIH07XG59XG5cbmZ1bmN0aW9uIFdyaXRhYmxlKG9wdGlvbnMpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTsgLy8gV3JpdGFibGUgY3RvciBpcyBhcHBsaWVkIHRvIER1cGxleGVzLCB0b28uXG4gIC8vIGByZWFsSGFzSW5zdGFuY2VgIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHVzaW5nIHBsYWluIGBpbnN0YW5jZW9mYFxuICAvLyB3b3VsZCByZXR1cm4gZmFsc2UsIGFzIG5vIGBfd3JpdGFibGVTdGF0ZWAgcHJvcGVydHkgaXMgYXR0YWNoZWQuXG4gIC8vIFRyeWluZyB0byB1c2UgdGhlIGN1c3RvbSBgaW5zdGFuY2VvZmAgZm9yIFdyaXRhYmxlIGhlcmUgd2lsbCBhbHNvIGJyZWFrIHRoZVxuICAvLyBOb2RlLmpzIExhenlUcmFuc2Zvcm0gaW1wbGVtZW50YXRpb24sIHdoaWNoIGhhcyBhIG5vbi10cml2aWFsIGdldHRlciBmb3JcbiAgLy8gYF93cml0YWJsZVN0YXRlYCB0aGF0IHdvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uLlxuICAvLyBDaGVja2luZyBmb3IgYSBTdHJlYW0uRHVwbGV4IGluc3RhbmNlIGlzIGZhc3RlciBoZXJlIGluc3RlYWQgb2YgaW5zaWRlXG4gIC8vIHRoZSBXcml0YWJsZVN0YXRlIGNvbnN0cnVjdG9yLCBhdCBsZWFzdCB3aXRoIFY4IDYuNVxuXG4gIHZhciBpc0R1cGxleCA9IHRoaXMgaW5zdGFuY2VvZiBEdXBsZXg7XG4gIGlmICghaXNEdXBsZXggJiYgIXJlYWxIYXNJbnN0YW5jZS5jYWxsKFdyaXRhYmxlLCB0aGlzKSkgcmV0dXJuIG5ldyBXcml0YWJsZShvcHRpb25zKTtcbiAgdGhpcy5fd3JpdGFibGVTdGF0ZSA9IG5ldyBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMsIGlzRHVwbGV4KTsgLy8gbGVnYWN5LlxuXG4gIHRoaXMud3JpdGFibGUgPSB0cnVlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRlID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZSA9IG9wdGlvbnMud3JpdGU7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRldiA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fd3JpdGV2ID0gb3B0aW9ucy53cml0ZXY7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHRoaXMuX2Rlc3Ryb3kgPSBvcHRpb25zLmRlc3Ryb3k7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZpbmFsID09PSAnZnVuY3Rpb24nKSB0aGlzLl9maW5hbCA9IG9wdGlvbnMuZmluYWw7XG4gIH1cblxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn0gLy8gT3RoZXJ3aXNlIHBlb3BsZSBjYW4gcGlwZSBXcml0YWJsZSBzdHJlYW1zLCB3aGljaCBpcyBqdXN0IHdyb25nLlxuXG5cbldyaXRhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKCkge1xuICBlcnJvck9yRGVzdHJveSh0aGlzLCBuZXcgRVJSX1NUUkVBTV9DQU5OT1RfUElQRSgpKTtcbn07XG5cbmZ1bmN0aW9uIHdyaXRlQWZ0ZXJFbmQoc3RyZWFtLCBjYikge1xuICB2YXIgZXIgPSBuZXcgRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQoKTsgLy8gVE9ETzogZGVmZXIgZXJyb3IgZXZlbnRzIGNvbnNpc3RlbnRseSBldmVyeXdoZXJlLCBub3QganVzdCB0aGUgY2JcblxuICBlcnJvck9yRGVzdHJveShzdHJlYW0sIGVyKTtcbiAgcHJvY2Vzcy5uZXh0VGljayhjYiwgZXIpO1xufSAvLyBDaGVja3MgdGhhdCBhIHVzZXItc3VwcGxpZWQgY2h1bmsgaXMgdmFsaWQsIGVzcGVjaWFsbHkgZm9yIHRoZSBwYXJ0aWN1bGFyXG4vLyBtb2RlIHRoZSBzdHJlYW0gaXMgaW4uIEN1cnJlbnRseSB0aGlzIG1lYW5zIHRoYXQgYG51bGxgIGlzIG5ldmVyIGFjY2VwdGVkXG4vLyBhbmQgdW5kZWZpbmVkL25vbi1zdHJpbmcgdmFsdWVzIGFyZSBvbmx5IGFsbG93ZWQgaW4gb2JqZWN0IG1vZGUuXG5cblxuZnVuY3Rpb24gdmFsaWRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgY2IpIHtcbiAgdmFyIGVyO1xuXG4gIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIGVyID0gbmV3IEVSUl9TVFJFQU1fTlVMTF9WQUxVRVMoKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgZXIgPSBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ2NodW5rJywgWydzdHJpbmcnLCAnQnVmZmVyJ10sIGNodW5rKTtcbiAgfVxuXG4gIGlmIChlcikge1xuICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXIpO1xuICAgIHByb2Nlc3MubmV4dFRpY2soY2IsIGVyKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuV3JpdGFibGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHJldCA9IGZhbHNlO1xuXG4gIHZhciBpc0J1ZiA9ICFzdGF0ZS5vYmplY3RNb2RlICYmIF9pc1VpbnQ4QXJyYXkoY2h1bmspO1xuXG4gIGlmIChpc0J1ZiAmJiAhQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkge1xuICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7XG4gIH1cblxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBlbmNvZGluZztcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH1cblxuICBpZiAoaXNCdWYpIGVuY29kaW5nID0gJ2J1ZmZlcic7ZWxzZSBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9IHN0YXRlLmRlZmF1bHRFbmNvZGluZztcbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgY2IgPSBub3A7XG4gIGlmIChzdGF0ZS5lbmRpbmcpIHdyaXRlQWZ0ZXJFbmQodGhpcywgY2IpO2Vsc2UgaWYgKGlzQnVmIHx8IHZhbGlkQ2h1bmsodGhpcywgc3RhdGUsIGNodW5rLCBjYikpIHtcbiAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICByZXQgPSB3cml0ZU9yQnVmZmVyKHRoaXMsIHN0YXRlLCBpc0J1ZiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl93cml0YWJsZVN0YXRlLmNvcmtlZCsrO1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLnVuY29yayA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkLS07XG4gICAgaWYgKCFzdGF0ZS53cml0aW5nICYmICFzdGF0ZS5jb3JrZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSBjbGVhckJ1ZmZlcih0aGlzLCBzdGF0ZSk7XG4gIH1cbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2RpbmcgPSBmdW5jdGlvbiBzZXREZWZhdWx0RW5jb2RpbmcoZW5jb2RpbmcpIHtcbiAgLy8gbm9kZTo6UGFyc2VFbmNvZGluZygpIHJlcXVpcmVzIGxvd2VyIGNhc2UuXG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnKSBlbmNvZGluZyA9IGVuY29kaW5nLnRvTG93ZXJDYXNlKCk7XG4gIGlmICghKFsnaGV4JywgJ3V0ZjgnLCAndXRmLTgnLCAnYXNjaWknLCAnYmluYXJ5JywgJ2Jhc2U2NCcsICd1Y3MyJywgJ3Vjcy0yJywgJ3V0ZjE2bGUnLCAndXRmLTE2bGUnLCAncmF3J10uaW5kZXhPZigoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHRocm93IG5ldyBFUlJfVU5LTk9XTl9FTkNPRElORyhlbmNvZGluZyk7XG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHJldHVybiB0aGlzO1xufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLnByb3RvdHlwZSwgJ3dyaXRhYmxlQnVmZmVyJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSAmJiB0aGlzLl93cml0YWJsZVN0YXRlLmdldEJ1ZmZlcigpO1xuICB9XG59KTtcblxuZnVuY3Rpb24gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZykge1xuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgc3RhdGUuZGVjb2RlU3RyaW5ncyAhPT0gZmFsc2UgJiYgdHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgfVxuXG4gIHJldHVybiBjaHVuaztcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLnByb3RvdHlwZSwgJ3dyaXRhYmxlSGlnaFdhdGVyTWFyaycsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgfVxufSk7IC8vIGlmIHdlJ3JlIGFscmVhZHkgd3JpdGluZyBzb21ldGhpbmcsIHRoZW4ganVzdCBwdXQgdGhpc1xuLy8gaW4gdGhlIHF1ZXVlLCBhbmQgd2FpdCBvdXIgdHVybi4gIE90aGVyd2lzZSwgY2FsbCBfd3JpdGVcbi8vIElmIHdlIHJldHVybiBmYWxzZSwgdGhlbiB3ZSBuZWVkIGEgZHJhaW4gZXZlbnQsIHNvIHNldCB0aGF0IGZsYWcuXG5cbmZ1bmN0aW9uIHdyaXRlT3JCdWZmZXIoc3RyZWFtLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgaWYgKCFpc0J1Zikge1xuICAgIHZhciBuZXdDaHVuayA9IGRlY29kZUNodW5rKHN0YXRlLCBjaHVuaywgZW5jb2RpbmcpO1xuXG4gICAgaWYgKGNodW5rICE9PSBuZXdDaHVuaykge1xuICAgICAgaXNCdWYgPSB0cnVlO1xuICAgICAgZW5jb2RpbmcgPSAnYnVmZmVyJztcbiAgICAgIGNodW5rID0gbmV3Q2h1bms7XG4gICAgfVxuICB9XG5cbiAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICBzdGF0ZS5sZW5ndGggKz0gbGVuO1xuICB2YXIgcmV0ID0gc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyazsgLy8gd2UgbXVzdCBlbnN1cmUgdGhhdCBwcmV2aW91cyBuZWVkRHJhaW4gd2lsbCBub3QgYmUgcmVzZXQgdG8gZmFsc2UuXG5cbiAgaWYgKCFyZXQpIHN0YXRlLm5lZWREcmFpbiA9IHRydWU7XG5cbiAgaWYgKHN0YXRlLndyaXRpbmcgfHwgc3RhdGUuY29ya2VkKSB7XG4gICAgdmFyIGxhc3QgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSB7XG4gICAgICBjaHVuazogY2h1bmssXG4gICAgICBlbmNvZGluZzogZW5jb2RpbmcsXG4gICAgICBpc0J1ZjogaXNCdWYsXG4gICAgICBjYWxsYmFjazogY2IsXG4gICAgICBuZXh0OiBudWxsXG4gICAgfTtcblxuICAgIGlmIChsYXN0KSB7XG4gICAgICBsYXN0Lm5leHQgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIH1cblxuICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ICs9IDE7XG4gIH0gZWxzZSB7XG4gICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgd3JpdGV2LCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgc3RhdGUud3JpdGVsZW4gPSBsZW47XG4gIHN0YXRlLndyaXRlY2IgPSBjYjtcbiAgc3RhdGUud3JpdGluZyA9IHRydWU7XG4gIHN0YXRlLnN5bmMgPSB0cnVlO1xuICBpZiAoc3RhdGUuZGVzdHJveWVkKSBzdGF0ZS5vbndyaXRlKG5ldyBFUlJfU1RSRUFNX0RFU1RST1lFRCgnd3JpdGUnKSk7ZWxzZSBpZiAod3JpdGV2KSBzdHJlYW0uX3dyaXRldihjaHVuaywgc3RhdGUub253cml0ZSk7ZWxzZSBzdHJlYW0uX3dyaXRlKGNodW5rLCBlbmNvZGluZywgc3RhdGUub253cml0ZSk7XG4gIHN0YXRlLnN5bmMgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYikge1xuICAtLXN0YXRlLnBlbmRpbmdjYjtcblxuICBpZiAoc3luYykge1xuICAgIC8vIGRlZmVyIHRoZSBjYWxsYmFjayBpZiB3ZSBhcmUgYmVpbmcgY2FsbGVkIHN5bmNocm9ub3VzbHlcbiAgICAvLyB0byBhdm9pZCBwaWxpbmcgdXAgdGhpbmdzIG9uIHRoZSBzdGFja1xuICAgIHByb2Nlc3MubmV4dFRpY2soY2IsIGVyKTsgLy8gdGhpcyBjYW4gZW1pdCBmaW5pc2gsIGFuZCBpdCB3aWxsIGFsd2F5cyBoYXBwZW5cbiAgICAvLyBhZnRlciBlcnJvclxuXG4gICAgcHJvY2Vzcy5uZXh0VGljayhmaW5pc2hNYXliZSwgc3RyZWFtLCBzdGF0ZSk7XG4gICAgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBlcik7XG4gIH0gZWxzZSB7XG4gICAgLy8gdGhlIGNhbGxlciBleHBlY3QgdGhpcyB0byBoYXBwZW4gYmVmb3JlIGlmXG4gICAgLy8gaXQgaXMgYXN5bmNcbiAgICBjYihlcik7XG4gICAgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBlcik7IC8vIHRoaXMgY2FuIGVtaXQgZmluaXNoLCBidXQgZmluaXNoIG11c3RcbiAgICAvLyBhbHdheXMgZm9sbG93IGVycm9yXG5cbiAgICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpIHtcbiAgc3RhdGUud3JpdGluZyA9IGZhbHNlO1xuICBzdGF0ZS53cml0ZWNiID0gbnVsbDtcbiAgc3RhdGUubGVuZ3RoIC09IHN0YXRlLndyaXRlbGVuO1xuICBzdGF0ZS53cml0ZWxlbiA9IDA7XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGUoc3RyZWFtLCBlcikge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGU7XG4gIHZhciBzeW5jID0gc3RhdGUuc3luYztcbiAgdmFyIGNiID0gc3RhdGUud3JpdGVjYjtcbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgdGhyb3cgbmV3IEVSUl9NVUxUSVBMRV9DQUxMQkFDSygpO1xuICBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpO1xuICBpZiAoZXIpIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpO2Vsc2Uge1xuICAgIC8vIENoZWNrIGlmIHdlJ3JlIGFjdHVhbGx5IHJlYWR5IHRvIGZpbmlzaCwgYnV0IGRvbid0IGVtaXQgeWV0XG4gICAgdmFyIGZpbmlzaGVkID0gbmVlZEZpbmlzaChzdGF0ZSkgfHwgc3RyZWFtLmRlc3Ryb3llZDtcblxuICAgIGlmICghZmluaXNoZWQgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QpIHtcbiAgICAgIGNsZWFyQnVmZmVyKHN0cmVhbSwgc3RhdGUpO1xuICAgIH1cblxuICAgIGlmIChzeW5jKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGFmdGVyV3JpdGUsIHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWZ0ZXJXcml0ZShzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpIHtcbiAgaWYgKCFmaW5pc2hlZCkgb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpO1xuICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgY2IoKTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG59IC8vIE11c3QgZm9yY2UgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIG9uIG5leHRUaWNrLCBzbyB0aGF0IHdlIGRvbid0XG4vLyBlbWl0ICdkcmFpbicgYmVmb3JlIHRoZSB3cml0ZSgpIGNvbnN1bWVyIGdldHMgdGhlICdmYWxzZScgcmV0dXJuXG4vLyB2YWx1ZSwgYW5kIGhhcyBhIGNoYW5jZSB0byBhdHRhY2ggYSAnZHJhaW4nIGxpc3RlbmVyLlxuXG5cbmZ1bmN0aW9uIG9ud3JpdGVEcmFpbihzdHJlYW0sIHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUubmVlZERyYWluKSB7XG4gICAgc3RhdGUubmVlZERyYWluID0gZmFsc2U7XG4gICAgc3RyZWFtLmVtaXQoJ2RyYWluJyk7XG4gIH1cbn0gLy8gaWYgdGhlcmUncyBzb21ldGhpbmcgaW4gdGhlIGJ1ZmZlciB3YWl0aW5nLCB0aGVuIHByb2Nlc3MgaXRcblxuXG5mdW5jdGlvbiBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKSB7XG4gIHN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgPSB0cnVlO1xuICB2YXIgZW50cnkgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3Q7XG5cbiAgaWYgKHN0cmVhbS5fd3JpdGV2ICYmIGVudHJ5ICYmIGVudHJ5Lm5leHQpIHtcbiAgICAvLyBGYXN0IGNhc2UsIHdyaXRlIGV2ZXJ5dGhpbmcgdXNpbmcgX3dyaXRldigpXG4gICAgdmFyIGwgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudDtcbiAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5KGwpO1xuICAgIHZhciBob2xkZXIgPSBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU7XG4gICAgaG9sZGVyLmVudHJ5ID0gZW50cnk7XG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICB2YXIgYWxsQnVmZmVycyA9IHRydWU7XG5cbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIGJ1ZmZlcltjb3VudF0gPSBlbnRyeTtcbiAgICAgIGlmICghZW50cnkuaXNCdWYpIGFsbEJ1ZmZlcnMgPSBmYWxzZTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuXG4gICAgYnVmZmVyLmFsbEJ1ZmZlcnMgPSBhbGxCdWZmZXJzO1xuICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgdHJ1ZSwgc3RhdGUubGVuZ3RoLCBidWZmZXIsICcnLCBob2xkZXIuZmluaXNoKTsgLy8gZG9Xcml0ZSBpcyBhbG1vc3QgYWx3YXlzIGFzeW5jLCBkZWZlciB0aGVzZSB0byBzYXZlIGEgYml0IG9mIHRpbWVcbiAgICAvLyBhcyB0aGUgaG90IHBhdGggZW5kcyB3aXRoIGRvV3JpdGVcblxuICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuXG4gICAgaWYgKGhvbGRlci5uZXh0KSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBob2xkZXIubmV4dDtcbiAgICAgIGhvbGRlci5uZXh0ID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gbmV3IENvcmtlZFJlcXVlc3Qoc3RhdGUpO1xuICAgIH1cblxuICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDtcbiAgfSBlbHNlIHtcbiAgICAvLyBTbG93IGNhc2UsIHdyaXRlIGNodW5rcyBvbmUtYnktb25lXG4gICAgd2hpbGUgKGVudHJ5KSB7XG4gICAgICB2YXIgY2h1bmsgPSBlbnRyeS5jaHVuaztcbiAgICAgIHZhciBlbmNvZGluZyA9IGVudHJ5LmVuY29kaW5nO1xuICAgICAgdmFyIGNiID0gZW50cnkuY2FsbGJhY2s7XG4gICAgICB2YXIgbGVuID0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG4gICAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQtLTsgLy8gaWYgd2UgZGlkbid0IGNhbGwgdGhlIG9ud3JpdGUgaW1tZWRpYXRlbHksIHRoZW5cbiAgICAgIC8vIGl0IG1lYW5zIHRoYXQgd2UgbmVlZCB0byB3YWl0IHVudGlsIGl0IGRvZXMuXG4gICAgICAvLyBhbHNvLCB0aGF0IG1lYW5zIHRoYXQgdGhlIGNodW5rIGFuZCBjYiBhcmUgY3VycmVudGx5XG4gICAgICAvLyBiZWluZyBwcm9jZXNzZWQsIHNvIG1vdmUgdGhlIGJ1ZmZlciBjb3VudGVyIHBhc3QgdGhlbS5cblxuICAgICAgaWYgKHN0YXRlLndyaXRpbmcpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVudHJ5ID09PSBudWxsKSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IGVudHJ5O1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG59XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihuZXcgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQoJ193cml0ZSgpJykpO1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLl93cml0ZXYgPSBudWxsO1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAodHlwZW9mIGNodW5rID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBjaHVuaztcbiAgICBjaHVuayA9IG51bGw7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gZW5jb2Rpbmc7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9XG5cbiAgaWYgKGNodW5rICE9PSBudWxsICYmIGNodW5rICE9PSB1bmRlZmluZWQpIHRoaXMud3JpdGUoY2h1bmssIGVuY29kaW5nKTsgLy8gLmVuZCgpIGZ1bGx5IHVuY29ya3NcblxuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkID0gMTtcbiAgICB0aGlzLnVuY29yaygpO1xuICB9IC8vIGlnbm9yZSB1bm5lY2Vzc2FyeSBlbmQoKSBjYWxscy5cblxuXG4gIGlmICghc3RhdGUuZW5kaW5nKSBlbmRXcml0YWJsZSh0aGlzLCBzdGF0ZSwgY2IpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICd3cml0YWJsZUxlbmd0aCcsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RoO1xuICB9XG59KTtcblxuZnVuY3Rpb24gbmVlZEZpbmlzaChzdGF0ZSkge1xuICByZXR1cm4gc3RhdGUuZW5kaW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPT09IG51bGwgJiYgIXN0YXRlLmZpbmlzaGVkICYmICFzdGF0ZS53cml0aW5nO1xufVxuXG5mdW5jdGlvbiBjYWxsRmluYWwoc3RyZWFtLCBzdGF0ZSkge1xuICBzdHJlYW0uX2ZpbmFsKGZ1bmN0aW9uIChlcnIpIHtcbiAgICBzdGF0ZS5wZW5kaW5nY2ItLTtcblxuICAgIGlmIChlcnIpIHtcbiAgICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXJyKTtcbiAgICB9XG5cbiAgICBzdGF0ZS5wcmVmaW5pc2hlZCA9IHRydWU7XG4gICAgc3RyZWFtLmVtaXQoJ3ByZWZpbmlzaCcpO1xuICAgIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5wcmVmaW5pc2hlZCAmJiAhc3RhdGUuZmluYWxDYWxsZWQpIHtcbiAgICBpZiAodHlwZW9mIHN0cmVhbS5fZmluYWwgPT09ICdmdW5jdGlvbicgJiYgIXN0YXRlLmRlc3Ryb3llZCkge1xuICAgICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgICBzdGF0ZS5maW5hbENhbGxlZCA9IHRydWU7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxGaW5hbCwgc3RyZWFtLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnByZWZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5lbWl0KCdwcmVmaW5pc2gnKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSkge1xuICB2YXIgbmVlZCA9IG5lZWRGaW5pc2goc3RhdGUpO1xuXG4gIGlmIChuZWVkKSB7XG4gICAgcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpO1xuXG4gICAgaWYgKHN0YXRlLnBlbmRpbmdjYiA9PT0gMCkge1xuICAgICAgc3RhdGUuZmluaXNoZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLmVtaXQoJ2ZpbmlzaCcpO1xuXG4gICAgICBpZiAoc3RhdGUuYXV0b0Rlc3Ryb3kpIHtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBkdXBsZXggc3RyZWFtcyB3ZSBuZWVkIGEgd2F5IHRvIGRldGVjdFxuICAgICAgICAvLyBpZiB0aGUgcmVhZGFibGUgc2lkZSBpcyByZWFkeSBmb3IgYXV0b0Rlc3Ryb3kgYXMgd2VsbFxuICAgICAgICB2YXIgclN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuXG4gICAgICAgIGlmICghclN0YXRlIHx8IHJTdGF0ZS5hdXRvRGVzdHJveSAmJiByU3RhdGUuZW5kRW1pdHRlZCkge1xuICAgICAgICAgIHN0cmVhbS5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmVlZDtcbn1cblxuZnVuY3Rpb24gZW5kV3JpdGFibGUoc3RyZWFtLCBzdGF0ZSwgY2IpIHtcbiAgc3RhdGUuZW5kaW5nID0gdHJ1ZTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG5cbiAgaWYgKGNiKSB7XG4gICAgaWYgKHN0YXRlLmZpbmlzaGVkKSBwcm9jZXNzLm5leHRUaWNrKGNiKTtlbHNlIHN0cmVhbS5vbmNlKCdmaW5pc2gnLCBjYik7XG4gIH1cblxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gIHN0cmVhbS53cml0YWJsZSA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBvbkNvcmtlZEZpbmlzaChjb3JrUmVxLCBzdGF0ZSwgZXJyKSB7XG4gIHZhciBlbnRyeSA9IGNvcmtSZXEuZW50cnk7XG4gIGNvcmtSZXEuZW50cnkgPSBudWxsO1xuXG4gIHdoaWxlIChlbnRyeSkge1xuICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgIHN0YXRlLnBlbmRpbmdjYi0tO1xuICAgIGNiKGVycik7XG4gICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICB9IC8vIHJldXNlIHRoZSBmcmVlIGNvcmtSZXEuXG5cblxuICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dCA9IGNvcmtSZXE7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIGlmICh0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtXG4gICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgIGlmICghdGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseVxuICAgIC8vIG1hbmFnaW5nIGRlc3Ryb3llZFxuXG5cbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTtcbldyaXRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTtcbldyaXRhYmxlLnByb3RvdHlwZS5fdW5kZXN0cm95ID0gZGVzdHJveUltcGwudW5kZXN0cm95O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICBjYihlcnIpO1xufTsiLCIndXNlIHN0cmljdCc7XG5cbnZhciBfT2JqZWN0JHNldFByb3RvdHlwZU87XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbnZhciBmaW5pc2hlZCA9IHJlcXVpcmUoJy4vZW5kLW9mLXN0cmVhbScpO1xuXG52YXIga0xhc3RSZXNvbHZlID0gU3ltYm9sKCdsYXN0UmVzb2x2ZScpO1xudmFyIGtMYXN0UmVqZWN0ID0gU3ltYm9sKCdsYXN0UmVqZWN0Jyk7XG52YXIga0Vycm9yID0gU3ltYm9sKCdlcnJvcicpO1xudmFyIGtFbmRlZCA9IFN5bWJvbCgnZW5kZWQnKTtcbnZhciBrTGFzdFByb21pc2UgPSBTeW1ib2woJ2xhc3RQcm9taXNlJyk7XG52YXIga0hhbmRsZVByb21pc2UgPSBTeW1ib2woJ2hhbmRsZVByb21pc2UnKTtcbnZhciBrU3RyZWFtID0gU3ltYm9sKCdzdHJlYW0nKTtcblxuZnVuY3Rpb24gY3JlYXRlSXRlclJlc3VsdCh2YWx1ZSwgZG9uZSkge1xuICByZXR1cm4ge1xuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBkb25lOiBkb25lXG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlYWRBbmRSZXNvbHZlKGl0ZXIpIHtcbiAgdmFyIHJlc29sdmUgPSBpdGVyW2tMYXN0UmVzb2x2ZV07XG5cbiAgaWYgKHJlc29sdmUgIT09IG51bGwpIHtcbiAgICB2YXIgZGF0YSA9IGl0ZXJba1N0cmVhbV0ucmVhZCgpOyAvLyB3ZSBkZWZlciBpZiBkYXRhIGlzIG51bGxcbiAgICAvLyB3ZSBjYW4gYmUgZXhwZWN0aW5nIGVpdGhlciAnZW5kJyBvclxuICAgIC8vICdlcnJvcidcblxuICAgIGlmIChkYXRhICE9PSBudWxsKSB7XG4gICAgICBpdGVyW2tMYXN0UHJvbWlzZV0gPSBudWxsO1xuICAgICAgaXRlcltrTGFzdFJlc29sdmVdID0gbnVsbDtcbiAgICAgIGl0ZXJba0xhc3RSZWplY3RdID0gbnVsbDtcbiAgICAgIHJlc29sdmUoY3JlYXRlSXRlclJlc3VsdChkYXRhLCBmYWxzZSkpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBvblJlYWRhYmxlKGl0ZXIpIHtcbiAgLy8gd2Ugd2FpdCBmb3IgdGhlIG5leHQgdGljaywgYmVjYXVzZSBpdCBtaWdodFxuICAvLyBlbWl0IGFuIGVycm9yIHdpdGggcHJvY2Vzcy5uZXh0VGlja1xuICBwcm9jZXNzLm5leHRUaWNrKHJlYWRBbmRSZXNvbHZlLCBpdGVyKTtcbn1cblxuZnVuY3Rpb24gd3JhcEZvck5leHQobGFzdFByb21pc2UsIGl0ZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBsYXN0UHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChpdGVyW2tFbmRlZF0pIHtcbiAgICAgICAgcmVzb2x2ZShjcmVhdGVJdGVyUmVzdWx0KHVuZGVmaW5lZCwgdHJ1ZSkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGl0ZXJba0hhbmRsZVByb21pc2VdKHJlc29sdmUsIHJlamVjdCk7XG4gICAgfSwgcmVqZWN0KTtcbiAgfTtcbn1cblxudmFyIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZnVuY3Rpb24gKCkge30pO1xudmFyIFJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvclByb3RvdHlwZSA9IE9iamVjdC5zZXRQcm90b3R5cGVPZigoX09iamVjdCRzZXRQcm90b3R5cGVPID0ge1xuICBnZXQgc3RyZWFtKCkge1xuICAgIHJldHVybiB0aGlzW2tTdHJlYW1dO1xuICB9LFxuXG4gIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIC8vIGlmIHdlIGhhdmUgZGV0ZWN0ZWQgYW4gZXJyb3IgaW4gdGhlIG1lYW53aGlsZVxuICAgIC8vIHJlamVjdCBzdHJhaWdodCBhd2F5XG4gICAgdmFyIGVycm9yID0gdGhpc1trRXJyb3JdO1xuXG4gICAgaWYgKGVycm9yICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgIH1cblxuICAgIGlmICh0aGlzW2tFbmRlZF0pIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY3JlYXRlSXRlclJlc3VsdCh1bmRlZmluZWQsIHRydWUpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpc1trU3RyZWFtXS5kZXN0cm95ZWQpIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gZGVmZXIgdmlhIG5leHRUaWNrIGJlY2F1c2UgaWYgLmRlc3Ryb3koZXJyKSBpc1xuICAgICAgLy8gY2FsbGVkLCB0aGUgZXJyb3Igd2lsbCBiZSBlbWl0dGVkIHZpYSBuZXh0VGljaywgYW5kXG4gICAgICAvLyB3ZSBjYW5ub3QgZ3VhcmFudGVlIHRoYXQgdGhlcmUgaXMgbm8gZXJyb3IgbGluZ2VyaW5nIGFyb3VuZFxuICAgICAgLy8gd2FpdGluZyB0byBiZSBlbWl0dGVkLlxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKF90aGlzW2tFcnJvcl0pIHtcbiAgICAgICAgICAgIHJlamVjdChfdGhpc1trRXJyb3JdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShjcmVhdGVJdGVyUmVzdWx0KHVuZGVmaW5lZCwgdHJ1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IC8vIGlmIHdlIGhhdmUgbXVsdGlwbGUgbmV4dCgpIGNhbGxzXG4gICAgLy8gd2Ugd2lsbCB3YWl0IGZvciB0aGUgcHJldmlvdXMgUHJvbWlzZSB0byBmaW5pc2hcbiAgICAvLyB0aGlzIGxvZ2ljIGlzIG9wdGltaXplZCB0byBzdXBwb3J0IGZvciBhd2FpdCBsb29wcyxcbiAgICAvLyB3aGVyZSBuZXh0KCkgaXMgb25seSBjYWxsZWQgb25jZSBhdCBhIHRpbWVcblxuXG4gICAgdmFyIGxhc3RQcm9taXNlID0gdGhpc1trTGFzdFByb21pc2VdO1xuICAgIHZhciBwcm9taXNlO1xuXG4gICAgaWYgKGxhc3RQcm9taXNlKSB7XG4gICAgICBwcm9taXNlID0gbmV3IFByb21pc2Uod3JhcEZvck5leHQobGFzdFByb21pc2UsIHRoaXMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZmFzdCBwYXRoIG5lZWRlZCB0byBzdXBwb3J0IG11bHRpcGxlIHRoaXMucHVzaCgpXG4gICAgICAvLyB3aXRob3V0IHRyaWdnZXJpbmcgdGhlIG5leHQoKSBxdWV1ZVxuICAgICAgdmFyIGRhdGEgPSB0aGlzW2tTdHJlYW1dLnJlYWQoKTtcblxuICAgICAgaWYgKGRhdGEgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjcmVhdGVJdGVyUmVzdWx0KGRhdGEsIGZhbHNlKSk7XG4gICAgICB9XG5cbiAgICAgIHByb21pc2UgPSBuZXcgUHJvbWlzZSh0aGlzW2tIYW5kbGVQcm9taXNlXSk7XG4gICAgfVxuXG4gICAgdGhpc1trTGFzdFByb21pc2VdID0gcHJvbWlzZTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxufSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3Qkc2V0UHJvdG90eXBlTywgU3ltYm9sLmFzeW5jSXRlcmF0b3IsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXM7XG59KSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3Qkc2V0UHJvdG90eXBlTywgXCJyZXR1cm5cIiwgZnVuY3Rpb24gX3JldHVybigpIHtcbiAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgLy8gZGVzdHJveShlcnIsIGNiKSBpcyBhIHByaXZhdGUgQVBJXG4gIC8vIHdlIGNhbiBndWFyYW50ZWUgd2UgaGF2ZSB0aGF0IGhlcmUsIGJlY2F1c2Ugd2UgY29udHJvbCB0aGVcbiAgLy8gUmVhZGFibGUgY2xhc3MgdGhpcyBpcyBhdHRhY2hlZCB0b1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIF90aGlzMltrU3RyZWFtXS5kZXN0cm95KG51bGwsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZShjcmVhdGVJdGVyUmVzdWx0KHVuZGVmaW5lZCwgdHJ1ZSkpO1xuICAgIH0pO1xuICB9KTtcbn0pLCBfT2JqZWN0JHNldFByb3RvdHlwZU8pLCBBc3luY0l0ZXJhdG9yUHJvdG90eXBlKTtcblxudmFyIGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvciA9IGZ1bmN0aW9uIGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvcihzdHJlYW0pIHtcbiAgdmFyIF9PYmplY3QkY3JlYXRlO1xuXG4gIHZhciBpdGVyYXRvciA9IE9iamVjdC5jcmVhdGUoUmVhZGFibGVTdHJlYW1Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLCAoX09iamVjdCRjcmVhdGUgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3QkY3JlYXRlLCBrU3RyZWFtLCB7XG4gICAgdmFsdWU6IHN0cmVhbSxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3QkY3JlYXRlLCBrTGFzdFJlc29sdmUsIHtcbiAgICB2YWx1ZTogbnVsbCxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3QkY3JlYXRlLCBrTGFzdFJlamVjdCwge1xuICAgIHZhbHVlOiBudWxsLFxuICAgIHdyaXRhYmxlOiB0cnVlXG4gIH0pLCBfZGVmaW5lUHJvcGVydHkoX09iamVjdCRjcmVhdGUsIGtFcnJvciwge1xuICAgIHZhbHVlOiBudWxsLFxuICAgIHdyaXRhYmxlOiB0cnVlXG4gIH0pLCBfZGVmaW5lUHJvcGVydHkoX09iamVjdCRjcmVhdGUsIGtFbmRlZCwge1xuICAgIHZhbHVlOiBzdHJlYW0uX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3QkY3JlYXRlLCBrSGFuZGxlUHJvbWlzZSwge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBkYXRhID0gaXRlcmF0b3Jba1N0cmVhbV0ucmVhZCgpO1xuXG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBpdGVyYXRvcltrTGFzdFByb21pc2VdID0gbnVsbDtcbiAgICAgICAgaXRlcmF0b3Jba0xhc3RSZXNvbHZlXSA9IG51bGw7XG4gICAgICAgIGl0ZXJhdG9yW2tMYXN0UmVqZWN0XSA9IG51bGw7XG4gICAgICAgIHJlc29sdmUoY3JlYXRlSXRlclJlc3VsdChkYXRhLCBmYWxzZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlcmF0b3Jba0xhc3RSZXNvbHZlXSA9IHJlc29sdmU7XG4gICAgICAgIGl0ZXJhdG9yW2tMYXN0UmVqZWN0XSA9IHJlamVjdDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHdyaXRhYmxlOiB0cnVlXG4gIH0pLCBfT2JqZWN0JGNyZWF0ZSkpO1xuICBpdGVyYXRvcltrTGFzdFByb21pc2VdID0gbnVsbDtcbiAgZmluaXNoZWQoc3RyZWFtLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKGVyciAmJiBlcnIuY29kZSAhPT0gJ0VSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFJykge1xuICAgICAgdmFyIHJlamVjdCA9IGl0ZXJhdG9yW2tMYXN0UmVqZWN0XTsgLy8gcmVqZWN0IGlmIHdlIGFyZSB3YWl0aW5nIGZvciBkYXRhIGluIHRoZSBQcm9taXNlXG4gICAgICAvLyByZXR1cm5lZCBieSBuZXh0KCkgYW5kIHN0b3JlIHRoZSBlcnJvclxuXG4gICAgICBpZiAocmVqZWN0ICE9PSBudWxsKSB7XG4gICAgICAgIGl0ZXJhdG9yW2tMYXN0UHJvbWlzZV0gPSBudWxsO1xuICAgICAgICBpdGVyYXRvcltrTGFzdFJlc29sdmVdID0gbnVsbDtcbiAgICAgICAgaXRlcmF0b3Jba0xhc3RSZWplY3RdID0gbnVsbDtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9XG5cbiAgICAgIGl0ZXJhdG9yW2tFcnJvcl0gPSBlcnI7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHJlc29sdmUgPSBpdGVyYXRvcltrTGFzdFJlc29sdmVdO1xuXG4gICAgaWYgKHJlc29sdmUgIT09IG51bGwpIHtcbiAgICAgIGl0ZXJhdG9yW2tMYXN0UHJvbWlzZV0gPSBudWxsO1xuICAgICAgaXRlcmF0b3Jba0xhc3RSZXNvbHZlXSA9IG51bGw7XG4gICAgICBpdGVyYXRvcltrTGFzdFJlamVjdF0gPSBudWxsO1xuICAgICAgcmVzb2x2ZShjcmVhdGVJdGVyUmVzdWx0KHVuZGVmaW5lZCwgdHJ1ZSkpO1xuICAgIH1cblxuICAgIGl0ZXJhdG9yW2tFbmRlZF0gPSB0cnVlO1xuICB9KTtcbiAgc3RyZWFtLm9uKCdyZWFkYWJsZScsIG9uUmVhZGFibGUuYmluZChudWxsLCBpdGVyYXRvcikpO1xuICByZXR1cm4gaXRlcmF0b3I7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvcjsiLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbnZhciBfcmVxdWlyZSA9IHJlcXVpcmUoJ2J1ZmZlcicpLFxuICAgIEJ1ZmZlciA9IF9yZXF1aXJlLkJ1ZmZlcjtcblxudmFyIF9yZXF1aXJlMiA9IHJlcXVpcmUoJ3V0aWwnKSxcbiAgICBpbnNwZWN0ID0gX3JlcXVpcmUyLmluc3BlY3Q7XG5cbnZhciBjdXN0b20gPSBpbnNwZWN0ICYmIGluc3BlY3QuY3VzdG9tIHx8ICdpbnNwZWN0JztcblxuZnVuY3Rpb24gY29weUJ1ZmZlcihzcmMsIHRhcmdldCwgb2Zmc2V0KSB7XG4gIEJ1ZmZlci5wcm90b3R5cGUuY29weS5jYWxsKHNyYywgdGFyZ2V0LCBvZmZzZXQpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEJ1ZmZlckxpc3QoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJ1ZmZlckxpc3QpO1xuXG4gICAgdGhpcy5oZWFkID0gbnVsbDtcbiAgICB0aGlzLnRhaWwgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhCdWZmZXJMaXN0LCBbe1xuICAgIGtleTogXCJwdXNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1c2godikge1xuICAgICAgdmFyIGVudHJ5ID0ge1xuICAgICAgICBkYXRhOiB2LFxuICAgICAgICBuZXh0OiBudWxsXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID4gMCkgdGhpcy50YWlsLm5leHQgPSBlbnRyeTtlbHNlIHRoaXMuaGVhZCA9IGVudHJ5O1xuICAgICAgdGhpcy50YWlsID0gZW50cnk7XG4gICAgICArK3RoaXMubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1bnNoaWZ0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVuc2hpZnQodikge1xuICAgICAgdmFyIGVudHJ5ID0ge1xuICAgICAgICBkYXRhOiB2LFxuICAgICAgICBuZXh0OiB0aGlzLmhlYWRcbiAgICAgIH07XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHRoaXMudGFpbCA9IGVudHJ5O1xuICAgICAgdGhpcy5oZWFkID0gZW50cnk7XG4gICAgICArK3RoaXMubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzaGlmdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaGlmdCgpIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgICAgdmFyIHJldCA9IHRoaXMuaGVhZC5kYXRhO1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO2Vsc2UgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7XG4gICAgICAtLXRoaXMubGVuZ3RoO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY2xlYXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgICB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO1xuICAgICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJqb2luXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGpvaW4ocykge1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gICAgICB2YXIgcCA9IHRoaXMuaGVhZDtcbiAgICAgIHZhciByZXQgPSAnJyArIHAuZGF0YTtcblxuICAgICAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICAgICAgcmV0ICs9IHMgKyBwLmRhdGE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbmNhdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb25jYXQobikge1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gQnVmZmVyLmFsbG9jKDApO1xuICAgICAgdmFyIHJldCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuID4+PiAwKTtcbiAgICAgIHZhciBwID0gdGhpcy5oZWFkO1xuICAgICAgdmFyIGkgPSAwO1xuXG4gICAgICB3aGlsZSAocCkge1xuICAgICAgICBjb3B5QnVmZmVyKHAuZGF0YSwgcmV0LCBpKTtcbiAgICAgICAgaSArPSBwLmRhdGEubGVuZ3RoO1xuICAgICAgICBwID0gcC5uZXh0O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gLy8gQ29uc3VtZXMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIGJ5dGVzIG9yIGNoYXJhY3RlcnMgZnJvbSB0aGUgYnVmZmVyZWQgZGF0YS5cblxuICB9LCB7XG4gICAga2V5OiBcImNvbnN1bWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29uc3VtZShuLCBoYXNTdHJpbmdzKSB7XG4gICAgICB2YXIgcmV0O1xuXG4gICAgICBpZiAobiA8IHRoaXMuaGVhZC5kYXRhLmxlbmd0aCkge1xuICAgICAgICAvLyBgc2xpY2VgIGlzIHRoZSBzYW1lIGZvciBidWZmZXJzIGFuZCBzdHJpbmdzLlxuICAgICAgICByZXQgPSB0aGlzLmhlYWQuZGF0YS5zbGljZSgwLCBuKTtcbiAgICAgICAgdGhpcy5oZWFkLmRhdGEgPSB0aGlzLmhlYWQuZGF0YS5zbGljZShuKTtcbiAgICAgIH0gZWxzZSBpZiAobiA9PT0gdGhpcy5oZWFkLmRhdGEubGVuZ3RoKSB7XG4gICAgICAgIC8vIEZpcnN0IGNodW5rIGlzIGEgcGVyZmVjdCBtYXRjaC5cbiAgICAgICAgcmV0ID0gdGhpcy5zaGlmdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUmVzdWx0IHNwYW5zIG1vcmUgdGhhbiBvbmUgYnVmZmVyLlxuICAgICAgICByZXQgPSBoYXNTdHJpbmdzID8gdGhpcy5fZ2V0U3RyaW5nKG4pIDogdGhpcy5fZ2V0QnVmZmVyKG4pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmaXJzdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmaXJzdCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmhlYWQuZGF0YTtcbiAgICB9IC8vIENvbnN1bWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBjaGFyYWN0ZXJzIGZyb20gdGhlIGJ1ZmZlcmVkIGRhdGEuXG5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0U3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRTdHJpbmcobikge1xuICAgICAgdmFyIHAgPSB0aGlzLmhlYWQ7XG4gICAgICB2YXIgYyA9IDE7XG4gICAgICB2YXIgcmV0ID0gcC5kYXRhO1xuICAgICAgbiAtPSByZXQubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgICAgICB2YXIgc3RyID0gcC5kYXRhO1xuICAgICAgICB2YXIgbmIgPSBuID4gc3RyLmxlbmd0aCA/IHN0ci5sZW5ndGggOiBuO1xuICAgICAgICBpZiAobmIgPT09IHN0ci5sZW5ndGgpIHJldCArPSBzdHI7ZWxzZSByZXQgKz0gc3RyLnNsaWNlKDAsIG4pO1xuICAgICAgICBuIC09IG5iO1xuXG4gICAgICAgIGlmIChuID09PSAwKSB7XG4gICAgICAgICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSB7XG4gICAgICAgICAgICArK2M7XG4gICAgICAgICAgICBpZiAocC5uZXh0KSB0aGlzLmhlYWQgPSBwLm5leHQ7ZWxzZSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhlYWQgPSBwO1xuICAgICAgICAgICAgcC5kYXRhID0gc3RyLnNsaWNlKG5iKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgICsrYztcbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggLT0gYztcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSAvLyBDb25zdW1lcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgYnVmZmVyZWQgZGF0YS5cblxuICB9LCB7XG4gICAga2V5OiBcIl9nZXRCdWZmZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2dldEJ1ZmZlcihuKSB7XG4gICAgICB2YXIgcmV0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKG4pO1xuICAgICAgdmFyIHAgPSB0aGlzLmhlYWQ7XG4gICAgICB2YXIgYyA9IDE7XG4gICAgICBwLmRhdGEuY29weShyZXQpO1xuICAgICAgbiAtPSBwLmRhdGEubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgICAgICB2YXIgYnVmID0gcC5kYXRhO1xuICAgICAgICB2YXIgbmIgPSBuID4gYnVmLmxlbmd0aCA/IGJ1Zi5sZW5ndGggOiBuO1xuICAgICAgICBidWYuY29weShyZXQsIHJldC5sZW5ndGggLSBuLCAwLCBuYik7XG4gICAgICAgIG4gLT0gbmI7XG5cbiAgICAgICAgaWYgKG4gPT09IDApIHtcbiAgICAgICAgICBpZiAobmIgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgICAgICsrYztcbiAgICAgICAgICAgIGlmIChwLm5leHQpIHRoaXMuaGVhZCA9IHAubmV4dDtlbHNlIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGVhZCA9IHA7XG4gICAgICAgICAgICBwLmRhdGEgPSBidWYuc2xpY2UobmIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgKytjO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCAtPSBjO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IC8vIE1ha2Ugc3VyZSB0aGUgbGlua2VkIGxpc3Qgb25seSBzaG93cyB0aGUgbWluaW1hbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24uXG5cbiAgfSwge1xuICAgIGtleTogY3VzdG9tLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShfLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gaW5zcGVjdCh0aGlzLCBfb2JqZWN0U3ByZWFkKHt9LCBvcHRpb25zLCB7XG4gICAgICAgIC8vIE9ubHkgaW5zcGVjdCBvbmUgbGV2ZWwuXG4gICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAvLyBJdCBzaG91bGQgbm90IHJlY3Vyc2UuXG4gICAgICAgIGN1c3RvbUluc3BlY3Q6IGZhbHNlXG4gICAgICB9KSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEJ1ZmZlckxpc3Q7XG59KCk7IiwiJ3VzZSBzdHJpY3QnOyAvLyB1bmRvY3VtZW50ZWQgY2IoKSBBUEksIG5lZWRlZCBmb3IgY29yZSwgbm90IGZvciBwdWJsaWMgQVBJXG5cbmZ1bmN0aW9uIGRlc3Ryb3koZXJyLCBjYikge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHZhciByZWFkYWJsZURlc3Ryb3llZCA9IHRoaXMuX3JlYWRhYmxlU3RhdGUgJiYgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIHZhciB3cml0YWJsZURlc3Ryb3llZCA9IHRoaXMuX3dyaXRhYmxlU3RhdGUgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG5cbiAgaWYgKHJlYWRhYmxlRGVzdHJveWVkIHx8IHdyaXRhYmxlRGVzdHJveWVkKSB7XG4gICAgaWYgKGNiKSB7XG4gICAgICBjYihlcnIpO1xuICAgIH0gZWxzZSBpZiAoZXJyKSB7XG4gICAgICBpZiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0RXJyb3JOVCwgdGhpcywgZXJyKTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkKSB7XG4gICAgICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0RXJyb3JOVCwgdGhpcywgZXJyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSAvLyB3ZSBzZXQgZGVzdHJveWVkIHRvIHRydWUgYmVmb3JlIGZpcmluZyBlcnJvciBjYWxsYmFja3MgaW4gb3JkZXJcbiAgLy8gdG8gbWFrZSBpdCByZS1lbnRyYW5jZSBzYWZlIGluIGNhc2UgZGVzdHJveSgpIGlzIGNhbGxlZCB3aXRoaW4gY2FsbGJhY2tzXG5cblxuICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfSAvLyBpZiB0aGlzIGlzIGEgZHVwbGV4IHN0cmVhbSBtYXJrIHRoZSB3cml0YWJsZSBwYXJ0IGFzIGRlc3Ryb3llZCBhcyB3ZWxsXG5cblxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHRoaXMuX2Rlc3Ryb3koZXJyIHx8IG51bGwsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICBpZiAoIWNiICYmIGVycikge1xuICAgICAgaWYgKCFfdGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGVtaXRFcnJvckFuZENsb3NlTlQsIF90aGlzLCBlcnIpO1xuICAgICAgfSBlbHNlIGlmICghX3RoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkKSB7XG4gICAgICAgIF90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yQW5kQ2xvc2VOVCwgX3RoaXMsIGVycik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGVtaXRDbG9zZU5ULCBfdGhpcyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYikge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0Q2xvc2VOVCwgX3RoaXMpO1xuICAgICAgY2IoZXJyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0Q2xvc2VOVCwgX3RoaXMpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIGVtaXRFcnJvckFuZENsb3NlTlQoc2VsZiwgZXJyKSB7XG4gIGVtaXRFcnJvck5UKHNlbGYsIGVycik7XG4gIGVtaXRDbG9zZU5UKHNlbGYpO1xufVxuXG5mdW5jdGlvbiBlbWl0Q2xvc2VOVChzZWxmKSB7XG4gIGlmIChzZWxmLl93cml0YWJsZVN0YXRlICYmICFzZWxmLl93cml0YWJsZVN0YXRlLmVtaXRDbG9zZSkgcmV0dXJuO1xuICBpZiAoc2VsZi5fcmVhZGFibGVTdGF0ZSAmJiAhc2VsZi5fcmVhZGFibGVTdGF0ZS5lbWl0Q2xvc2UpIHJldHVybjtcbiAgc2VsZi5lbWl0KCdjbG9zZScpO1xufVxuXG5mdW5jdGlvbiB1bmRlc3Ryb3koKSB7XG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5hbENhbGxlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUucHJlZmluaXNoZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWl0RXJyb3JOVChzZWxmLCBlcnIpIHtcbiAgc2VsZi5lbWl0KCdlcnJvcicsIGVycik7XG59XG5cbmZ1bmN0aW9uIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXJyKSB7XG4gIC8vIFdlIGhhdmUgdGVzdHMgdGhhdCByZWx5IG9uIGVycm9ycyBiZWluZyBlbWl0dGVkXG4gIC8vIGluIHRoZSBzYW1lIHRpY2ssIHNvIGNoYW5naW5nIHRoaXMgaXMgc2VtdmVyIG1ham9yLlxuICAvLyBGb3Igbm93IHdoZW4geW91IG9wdC1pbiB0byBhdXRvRGVzdHJveSB3ZSBhbGxvd1xuICAvLyB0aGUgZXJyb3IgdG8gYmUgZW1pdHRlZCBuZXh0VGljay4gSW4gYSBmdXR1cmVcbiAgLy8gc2VtdmVyIG1ham9yIHVwZGF0ZSB3ZSBzaG91bGQgY2hhbmdlIHRoZSBkZWZhdWx0IHRvIHRoaXMuXG4gIHZhciByU3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIHZhciB3U3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGU7XG4gIGlmIChyU3RhdGUgJiYgclN0YXRlLmF1dG9EZXN0cm95IHx8IHdTdGF0ZSAmJiB3U3RhdGUuYXV0b0Rlc3Ryb3kpIHN0cmVhbS5kZXN0cm95KGVycik7ZWxzZSBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZGVzdHJveTogZGVzdHJveSxcbiAgdW5kZXN0cm95OiB1bmRlc3Ryb3ksXG4gIGVycm9yT3JEZXN0cm95OiBlcnJvck9yRGVzdHJveVxufTsiLCIvLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL2VuZC1vZi1zdHJlYW0gd2l0aFxuLy8gcGVybWlzc2lvbiBmcm9tIHRoZSBhdXRob3IsIE1hdGhpYXMgQnV1cyAoQG1hZmludG9zaCkuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRSA9IHJlcXVpcmUoJy4uLy4uLy4uL2Vycm9ycycpLmNvZGVzLkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFO1xuXG5mdW5jdGlvbiBvbmNlKGNhbGxiYWNrKSB7XG4gIHZhciBjYWxsZWQgPSBmYWxzZTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoY2FsbGVkKSByZXR1cm47XG4gICAgY2FsbGVkID0gdHJ1ZTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBjYWxsYmFjay5hcHBseSh0aGlzLCBhcmdzKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbmZ1bmN0aW9uIGlzUmVxdWVzdChzdHJlYW0pIHtcbiAgcmV0dXJuIHN0cmVhbS5zZXRIZWFkZXIgJiYgdHlwZW9mIHN0cmVhbS5hYm9ydCA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gZW9zKHN0cmVhbSwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSByZXR1cm4gZW9zKHN0cmVhbSwgbnVsbCwgb3B0cyk7XG4gIGlmICghb3B0cykgb3B0cyA9IHt9O1xuICBjYWxsYmFjayA9IG9uY2UoY2FsbGJhY2sgfHwgbm9vcCk7XG4gIHZhciByZWFkYWJsZSA9IG9wdHMucmVhZGFibGUgfHwgb3B0cy5yZWFkYWJsZSAhPT0gZmFsc2UgJiYgc3RyZWFtLnJlYWRhYmxlO1xuICB2YXIgd3JpdGFibGUgPSBvcHRzLndyaXRhYmxlIHx8IG9wdHMud3JpdGFibGUgIT09IGZhbHNlICYmIHN0cmVhbS53cml0YWJsZTtcblxuICB2YXIgb25sZWdhY3lmaW5pc2ggPSBmdW5jdGlvbiBvbmxlZ2FjeWZpbmlzaCgpIHtcbiAgICBpZiAoIXN0cmVhbS53cml0YWJsZSkgb25maW5pc2goKTtcbiAgfTtcblxuICB2YXIgd3JpdGFibGVFbmRlZCA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZSAmJiBzdHJlYW0uX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQ7XG5cbiAgdmFyIG9uZmluaXNoID0gZnVuY3Rpb24gb25maW5pc2goKSB7XG4gICAgd3JpdGFibGUgPSBmYWxzZTtcbiAgICB3cml0YWJsZUVuZGVkID0gdHJ1ZTtcbiAgICBpZiAoIXJlYWRhYmxlKSBjYWxsYmFjay5jYWxsKHN0cmVhbSk7XG4gIH07XG5cbiAgdmFyIHJlYWRhYmxlRW5kZWQgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGUgJiYgc3RyZWFtLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQ7XG5cbiAgdmFyIG9uZW5kID0gZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgcmVhZGFibGUgPSBmYWxzZTtcbiAgICByZWFkYWJsZUVuZGVkID0gdHJ1ZTtcbiAgICBpZiAoIXdyaXRhYmxlKSBjYWxsYmFjay5jYWxsKHN0cmVhbSk7XG4gIH07XG5cbiAgdmFyIG9uZXJyb3IgPSBmdW5jdGlvbiBvbmVycm9yKGVycikge1xuICAgIGNhbGxiYWNrLmNhbGwoc3RyZWFtLCBlcnIpO1xuICB9O1xuXG4gIHZhciBvbmNsb3NlID0gZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICB2YXIgZXJyO1xuXG4gICAgaWYgKHJlYWRhYmxlICYmICFyZWFkYWJsZUVuZGVkKSB7XG4gICAgICBpZiAoIXN0cmVhbS5fcmVhZGFibGVTdGF0ZSB8fCAhc3RyZWFtLl9yZWFkYWJsZVN0YXRlLmVuZGVkKSBlcnIgPSBuZXcgRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UoKTtcbiAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKHN0cmVhbSwgZXJyKTtcbiAgICB9XG5cbiAgICBpZiAod3JpdGFibGUgJiYgIXdyaXRhYmxlRW5kZWQpIHtcbiAgICAgIGlmICghc3RyZWFtLl93cml0YWJsZVN0YXRlIHx8ICFzdHJlYW0uX3dyaXRhYmxlU3RhdGUuZW5kZWQpIGVyciA9IG5ldyBFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRSgpO1xuICAgICAgcmV0dXJuIGNhbGxiYWNrLmNhbGwoc3RyZWFtLCBlcnIpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgb25yZXF1ZXN0ID0gZnVuY3Rpb24gb25yZXF1ZXN0KCkge1xuICAgIHN0cmVhbS5yZXEub24oJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgfTtcblxuICBpZiAoaXNSZXF1ZXN0KHN0cmVhbSkpIHtcbiAgICBzdHJlYW0ub24oJ2NvbXBsZXRlJywgb25maW5pc2gpO1xuICAgIHN0cmVhbS5vbignYWJvcnQnLCBvbmNsb3NlKTtcbiAgICBpZiAoc3RyZWFtLnJlcSkgb25yZXF1ZXN0KCk7ZWxzZSBzdHJlYW0ub24oJ3JlcXVlc3QnLCBvbnJlcXVlc3QpO1xuICB9IGVsc2UgaWYgKHdyaXRhYmxlICYmICFzdHJlYW0uX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAvLyBsZWdhY3kgc3RyZWFtc1xuICAgIHN0cmVhbS5vbignZW5kJywgb25sZWdhY3lmaW5pc2gpO1xuICAgIHN0cmVhbS5vbignY2xvc2UnLCBvbmxlZ2FjeWZpbmlzaCk7XG4gIH1cblxuICBzdHJlYW0ub24oJ2VuZCcsIG9uZW5kKTtcbiAgc3RyZWFtLm9uKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gIGlmIChvcHRzLmVycm9yICE9PSBmYWxzZSkgc3RyZWFtLm9uKCdlcnJvcicsIG9uZXJyb3IpO1xuICBzdHJlYW0ub24oJ2Nsb3NlJywgb25jbG9zZSk7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdjb21wbGV0ZScsIG9uZmluaXNoKTtcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Fib3J0Jywgb25jbG9zZSk7XG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdyZXF1ZXN0Jywgb25yZXF1ZXN0KTtcbiAgICBpZiAoc3RyZWFtLnJlcSkgc3RyZWFtLnJlcS5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25sZWdhY3lmaW5pc2gpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmxlZ2FjeWZpbmlzaCk7XG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlb3M7IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignUmVhZGFibGUuZnJvbSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyJylcbn07XG4iLCIvLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL3B1bXAgd2l0aFxuLy8gcGVybWlzc2lvbiBmcm9tIHRoZSBhdXRob3IsIE1hdGhpYXMgQnV1cyAoQG1hZmludG9zaCkuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlb3M7XG5cbmZ1bmN0aW9uIG9uY2UoY2FsbGJhY2spIHtcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmIChjYWxsZWQpIHJldHVybjtcbiAgICBjYWxsZWQgPSB0cnVlO1xuICAgIGNhbGxiYWNrLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxudmFyIF9yZXF1aXJlJGNvZGVzID0gcmVxdWlyZSgnLi4vLi4vLi4vZXJyb3JzJykuY29kZXMsXG4gICAgRVJSX01JU1NJTkdfQVJHUyA9IF9yZXF1aXJlJGNvZGVzLkVSUl9NSVNTSU5HX0FSR1MsXG4gICAgRVJSX1NUUkVBTV9ERVNUUk9ZRUQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfU1RSRUFNX0RFU1RST1lFRDtcblxuZnVuY3Rpb24gbm9vcChlcnIpIHtcbiAgLy8gUmV0aHJvdyB0aGUgZXJyb3IgaWYgaXQgZXhpc3RzIHRvIGF2b2lkIHN3YWxsb3dpbmcgaXRcbiAgaWYgKGVycikgdGhyb3cgZXJyO1xufVxuXG5mdW5jdGlvbiBpc1JlcXVlc3Qoc3RyZWFtKSB7XG4gIHJldHVybiBzdHJlYW0uc2V0SGVhZGVyICYmIHR5cGVvZiBzdHJlYW0uYWJvcnQgPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGRlc3Ryb3llcihzdHJlYW0sIHJlYWRpbmcsIHdyaXRpbmcsIGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrID0gb25jZShjYWxsYmFjayk7XG4gIHZhciBjbG9zZWQgPSBmYWxzZTtcbiAgc3RyZWFtLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICBjbG9zZWQgPSB0cnVlO1xuICB9KTtcbiAgaWYgKGVvcyA9PT0gdW5kZWZpbmVkKSBlb3MgPSByZXF1aXJlKCcuL2VuZC1vZi1zdHJlYW0nKTtcbiAgZW9zKHN0cmVhbSwge1xuICAgIHJlYWRhYmxlOiByZWFkaW5nLFxuICAgIHdyaXRhYmxlOiB3cml0aW5nXG4gIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICBjbG9zZWQgPSB0cnVlO1xuICAgIGNhbGxiYWNrKCk7XG4gIH0pO1xuICB2YXIgZGVzdHJveWVkID0gZmFsc2U7XG4gIHJldHVybiBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKGNsb3NlZCkgcmV0dXJuO1xuICAgIGlmIChkZXN0cm95ZWQpIHJldHVybjtcbiAgICBkZXN0cm95ZWQgPSB0cnVlOyAvLyByZXF1ZXN0LmRlc3Ryb3kganVzdCBkbyAuZW5kIC0gLmFib3J0IGlzIHdoYXQgd2Ugd2FudFxuXG4gICAgaWYgKGlzUmVxdWVzdChzdHJlYW0pKSByZXR1cm4gc3RyZWFtLmFib3J0KCk7XG4gICAgaWYgKHR5cGVvZiBzdHJlYW0uZGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHN0cmVhbS5kZXN0cm95KCk7XG4gICAgY2FsbGJhY2soZXJyIHx8IG5ldyBFUlJfU1RSRUFNX0RFU1RST1lFRCgncGlwZScpKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2FsbChmbikge1xuICBmbigpO1xufVxuXG5mdW5jdGlvbiBwaXBlKGZyb20sIHRvKSB7XG4gIHJldHVybiBmcm9tLnBpcGUodG8pO1xufVxuXG5mdW5jdGlvbiBwb3BDYWxsYmFjayhzdHJlYW1zKSB7XG4gIGlmICghc3RyZWFtcy5sZW5ndGgpIHJldHVybiBub29wO1xuICBpZiAodHlwZW9mIHN0cmVhbXNbc3RyZWFtcy5sZW5ndGggLSAxXSAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIG5vb3A7XG4gIHJldHVybiBzdHJlYW1zLnBvcCgpO1xufVxuXG5mdW5jdGlvbiBwaXBlbGluZSgpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHN0cmVhbXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgc3RyZWFtc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHZhciBjYWxsYmFjayA9IHBvcENhbGxiYWNrKHN0cmVhbXMpO1xuICBpZiAoQXJyYXkuaXNBcnJheShzdHJlYW1zWzBdKSkgc3RyZWFtcyA9IHN0cmVhbXNbMF07XG5cbiAgaWYgKHN0cmVhbXMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFUlJfTUlTU0lOR19BUkdTKCdzdHJlYW1zJyk7XG4gIH1cblxuICB2YXIgZXJyb3I7XG4gIHZhciBkZXN0cm95cyA9IHN0cmVhbXMubWFwKGZ1bmN0aW9uIChzdHJlYW0sIGkpIHtcbiAgICB2YXIgcmVhZGluZyA9IGkgPCBzdHJlYW1zLmxlbmd0aCAtIDE7XG4gICAgdmFyIHdyaXRpbmcgPSBpID4gMDtcbiAgICByZXR1cm4gZGVzdHJveWVyKHN0cmVhbSwgcmVhZGluZywgd3JpdGluZywgZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKCFlcnJvcikgZXJyb3IgPSBlcnI7XG4gICAgICBpZiAoZXJyKSBkZXN0cm95cy5mb3JFYWNoKGNhbGwpO1xuICAgICAgaWYgKHJlYWRpbmcpIHJldHVybjtcbiAgICAgIGRlc3Ryb3lzLmZvckVhY2goY2FsbCk7XG4gICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gc3RyZWFtcy5yZWR1Y2UocGlwZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGlwZWxpbmU7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgRVJSX0lOVkFMSURfT1BUX1ZBTFVFID0gcmVxdWlyZSgnLi4vLi4vLi4vZXJyb3JzJykuY29kZXMuRVJSX0lOVkFMSURfT1BUX1ZBTFVFO1xuXG5mdW5jdGlvbiBoaWdoV2F0ZXJNYXJrRnJvbShvcHRpb25zLCBpc0R1cGxleCwgZHVwbGV4S2V5KSB7XG4gIHJldHVybiBvcHRpb25zLmhpZ2hXYXRlck1hcmsgIT0gbnVsbCA/IG9wdGlvbnMuaGlnaFdhdGVyTWFyayA6IGlzRHVwbGV4ID8gb3B0aW9uc1tkdXBsZXhLZXldIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0SGlnaFdhdGVyTWFyayhzdGF0ZSwgb3B0aW9ucywgZHVwbGV4S2V5LCBpc0R1cGxleCkge1xuICB2YXIgaHdtID0gaGlnaFdhdGVyTWFya0Zyb20ob3B0aW9ucywgaXNEdXBsZXgsIGR1cGxleEtleSk7XG5cbiAgaWYgKGh3bSAhPSBudWxsKSB7XG4gICAgaWYgKCEoaXNGaW5pdGUoaHdtKSAmJiBNYXRoLmZsb29yKGh3bSkgPT09IGh3bSkgfHwgaHdtIDwgMCkge1xuICAgICAgdmFyIG5hbWUgPSBpc0R1cGxleCA/IGR1cGxleEtleSA6ICdoaWdoV2F0ZXJNYXJrJztcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9PUFRfVkFMVUUobmFtZSwgaHdtKTtcbiAgICB9XG5cbiAgICByZXR1cm4gTWF0aC5mbG9vcihod20pO1xuICB9IC8vIERlZmF1bHQgdmFsdWVcblxuXG4gIHJldHVybiBzdGF0ZS5vYmplY3RNb2RlID8gMTYgOiAxNiAqIDEwMjQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBnZXRIaWdoV2F0ZXJNYXJrOiBnZXRIaWdoV2F0ZXJNYXJrXG59OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xuIiwiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcycpO1xuZXhwb3J0cy5TdHJlYW0gPSBleHBvcnRzO1xuZXhwb3J0cy5SZWFkYWJsZSA9IGV4cG9ydHM7XG5leHBvcnRzLldyaXRhYmxlID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcycpO1xuZXhwb3J0cy5EdXBsZXggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX2R1cGxleC5qcycpO1xuZXhwb3J0cy5UcmFuc2Zvcm0gPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcycpO1xuZXhwb3J0cy5QYXNzVGhyb3VnaCA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMnKTtcbmV4cG9ydHMuZmluaXNoZWQgPSByZXF1aXJlKCcuL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2VuZC1vZi1zdHJlYW0uanMnKTtcbmV4cG9ydHMucGlwZWxpbmUgPSByZXF1aXJlKCcuL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3BpcGVsaW5lLmpzJyk7XG4iLCIndXNlIHN0cmljdCdcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXJcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoQmFzZSA9IHJlcXVpcmUoJ2hhc2gtYmFzZScpXG5cbnZhciBBUlJBWTE2ID0gbmV3IEFycmF5KDE2KVxuXG52YXIgemwgPSBbXG4gIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsXG4gIDcsIDQsIDEzLCAxLCAxMCwgNiwgMTUsIDMsIDEyLCAwLCA5LCA1LCAyLCAxNCwgMTEsIDgsXG4gIDMsIDEwLCAxNCwgNCwgOSwgMTUsIDgsIDEsIDIsIDcsIDAsIDYsIDEzLCAxMSwgNSwgMTIsXG4gIDEsIDksIDExLCAxMCwgMCwgOCwgMTIsIDQsIDEzLCAzLCA3LCAxNSwgMTQsIDUsIDYsIDIsXG4gIDQsIDAsIDUsIDksIDcsIDEyLCAyLCAxMCwgMTQsIDEsIDMsIDgsIDExLCA2LCAxNSwgMTNcbl1cblxudmFyIHpyID0gW1xuICA1LCAxNCwgNywgMCwgOSwgMiwgMTEsIDQsIDEzLCA2LCAxNSwgOCwgMSwgMTAsIDMsIDEyLFxuICA2LCAxMSwgMywgNywgMCwgMTMsIDUsIDEwLCAxNCwgMTUsIDgsIDEyLCA0LCA5LCAxLCAyLFxuICAxNSwgNSwgMSwgMywgNywgMTQsIDYsIDksIDExLCA4LCAxMiwgMiwgMTAsIDAsIDQsIDEzLFxuICA4LCA2LCA0LCAxLCAzLCAxMSwgMTUsIDAsIDUsIDEyLCAyLCAxMywgOSwgNywgMTAsIDE0LFxuICAxMiwgMTUsIDEwLCA0LCAxLCA1LCA4LCA3LCA2LCAyLCAxMywgMTQsIDAsIDMsIDksIDExXG5dXG5cbnZhciBzbCA9IFtcbiAgMTEsIDE0LCAxNSwgMTIsIDUsIDgsIDcsIDksIDExLCAxMywgMTQsIDE1LCA2LCA3LCA5LCA4LFxuICA3LCA2LCA4LCAxMywgMTEsIDksIDcsIDE1LCA3LCAxMiwgMTUsIDksIDExLCA3LCAxMywgMTIsXG4gIDExLCAxMywgNiwgNywgMTQsIDksIDEzLCAxNSwgMTQsIDgsIDEzLCA2LCA1LCAxMiwgNywgNSxcbiAgMTEsIDEyLCAxNCwgMTUsIDE0LCAxNSwgOSwgOCwgOSwgMTQsIDUsIDYsIDgsIDYsIDUsIDEyLFxuICA5LCAxNSwgNSwgMTEsIDYsIDgsIDEzLCAxMiwgNSwgMTIsIDEzLCAxNCwgMTEsIDgsIDUsIDZcbl1cblxudmFyIHNyID0gW1xuICA4LCA5LCA5LCAxMSwgMTMsIDE1LCAxNSwgNSwgNywgNywgOCwgMTEsIDE0LCAxNCwgMTIsIDYsXG4gIDksIDEzLCAxNSwgNywgMTIsIDgsIDksIDExLCA3LCA3LCAxMiwgNywgNiwgMTUsIDEzLCAxMSxcbiAgOSwgNywgMTUsIDExLCA4LCA2LCA2LCAxNCwgMTIsIDEzLCA1LCAxNCwgMTMsIDEzLCA3LCA1LFxuICAxNSwgNSwgOCwgMTEsIDE0LCAxNCwgNiwgMTQsIDYsIDksIDEyLCA5LCAxMiwgNSwgMTUsIDgsXG4gIDgsIDUsIDEyLCA5LCAxMiwgNSwgMTQsIDYsIDgsIDEzLCA2LCA1LCAxNSwgMTMsIDExLCAxMVxuXVxuXG52YXIgaGwgPSBbMHgwMDAwMDAwMCwgMHg1YTgyNzk5OSwgMHg2ZWQ5ZWJhMSwgMHg4ZjFiYmNkYywgMHhhOTUzZmQ0ZV1cbnZhciBociA9IFsweDUwYTI4YmU2LCAweDVjNGRkMTI0LCAweDZkNzAzZWYzLCAweDdhNmQ3NmU5LCAweDAwMDAwMDAwXVxuXG5mdW5jdGlvbiBSSVBFTUQxNjAgKCkge1xuICBIYXNoQmFzZS5jYWxsKHRoaXMsIDY0KVxuXG4gIC8vIHN0YXRlXG4gIHRoaXMuX2EgPSAweDY3NDUyMzAxXG4gIHRoaXMuX2IgPSAweGVmY2RhYjg5XG4gIHRoaXMuX2MgPSAweDk4YmFkY2ZlXG4gIHRoaXMuX2QgPSAweDEwMzI1NDc2XG4gIHRoaXMuX2UgPSAweGMzZDJlMWYwXG59XG5cbmluaGVyaXRzKFJJUEVNRDE2MCwgSGFzaEJhc2UpXG5cblJJUEVNRDE2MC5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHdvcmRzID0gQVJSQVkxNlxuICBmb3IgKHZhciBqID0gMDsgaiA8IDE2OyArK2opIHdvcmRzW2pdID0gdGhpcy5fYmxvY2sucmVhZEludDMyTEUoaiAqIDQpXG5cbiAgdmFyIGFsID0gdGhpcy5fYSB8IDBcbiAgdmFyIGJsID0gdGhpcy5fYiB8IDBcbiAgdmFyIGNsID0gdGhpcy5fYyB8IDBcbiAgdmFyIGRsID0gdGhpcy5fZCB8IDBcbiAgdmFyIGVsID0gdGhpcy5fZSB8IDBcblxuICB2YXIgYXIgPSB0aGlzLl9hIHwgMFxuICB2YXIgYnIgPSB0aGlzLl9iIHwgMFxuICB2YXIgY3IgPSB0aGlzLl9jIHwgMFxuICB2YXIgZHIgPSB0aGlzLl9kIHwgMFxuICB2YXIgZXIgPSB0aGlzLl9lIHwgMFxuXG4gIC8vIGNvbXB1dGF0aW9uXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgODA7IGkgKz0gMSkge1xuICAgIHZhciB0bFxuICAgIHZhciB0clxuICAgIGlmIChpIDwgMTYpIHtcbiAgICAgIHRsID0gZm4xKGFsLCBibCwgY2wsIGRsLCBlbCwgd29yZHNbemxbaV1dLCBobFswXSwgc2xbaV0pXG4gICAgICB0ciA9IGZuNShhciwgYnIsIGNyLCBkciwgZXIsIHdvcmRzW3pyW2ldXSwgaHJbMF0sIHNyW2ldKVxuICAgIH0gZWxzZSBpZiAoaSA8IDMyKSB7XG4gICAgICB0bCA9IGZuMihhbCwgYmwsIGNsLCBkbCwgZWwsIHdvcmRzW3psW2ldXSwgaGxbMV0sIHNsW2ldKVxuICAgICAgdHIgPSBmbjQoYXIsIGJyLCBjciwgZHIsIGVyLCB3b3Jkc1t6cltpXV0sIGhyWzFdLCBzcltpXSlcbiAgICB9IGVsc2UgaWYgKGkgPCA0OCkge1xuICAgICAgdGwgPSBmbjMoYWwsIGJsLCBjbCwgZGwsIGVsLCB3b3Jkc1t6bFtpXV0sIGhsWzJdLCBzbFtpXSlcbiAgICAgIHRyID0gZm4zKGFyLCBiciwgY3IsIGRyLCBlciwgd29yZHNbenJbaV1dLCBoclsyXSwgc3JbaV0pXG4gICAgfSBlbHNlIGlmIChpIDwgNjQpIHtcbiAgICAgIHRsID0gZm40KGFsLCBibCwgY2wsIGRsLCBlbCwgd29yZHNbemxbaV1dLCBobFszXSwgc2xbaV0pXG4gICAgICB0ciA9IGZuMihhciwgYnIsIGNyLCBkciwgZXIsIHdvcmRzW3pyW2ldXSwgaHJbM10sIHNyW2ldKVxuICAgIH0gZWxzZSB7IC8vIGlmIChpPDgwKSB7XG4gICAgICB0bCA9IGZuNShhbCwgYmwsIGNsLCBkbCwgZWwsIHdvcmRzW3psW2ldXSwgaGxbNF0sIHNsW2ldKVxuICAgICAgdHIgPSBmbjEoYXIsIGJyLCBjciwgZHIsIGVyLCB3b3Jkc1t6cltpXV0sIGhyWzRdLCBzcltpXSlcbiAgICB9XG5cbiAgICBhbCA9IGVsXG4gICAgZWwgPSBkbFxuICAgIGRsID0gcm90bChjbCwgMTApXG4gICAgY2wgPSBibFxuICAgIGJsID0gdGxcblxuICAgIGFyID0gZXJcbiAgICBlciA9IGRyXG4gICAgZHIgPSByb3RsKGNyLCAxMClcbiAgICBjciA9IGJyXG4gICAgYnIgPSB0clxuICB9XG5cbiAgLy8gdXBkYXRlIHN0YXRlXG4gIHZhciB0ID0gKHRoaXMuX2IgKyBjbCArIGRyKSB8IDBcbiAgdGhpcy5fYiA9ICh0aGlzLl9jICsgZGwgKyBlcikgfCAwXG4gIHRoaXMuX2MgPSAodGhpcy5fZCArIGVsICsgYXIpIHwgMFxuICB0aGlzLl9kID0gKHRoaXMuX2UgKyBhbCArIGJyKSB8IDBcbiAgdGhpcy5fZSA9ICh0aGlzLl9hICsgYmwgKyBjcikgfCAwXG4gIHRoaXMuX2EgPSB0XG59XG5cblJJUEVNRDE2MC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gY3JlYXRlIHBhZGRpbmcgYW5kIGhhbmRsZSBibG9ja3NcbiAgdGhpcy5fYmxvY2tbdGhpcy5fYmxvY2tPZmZzZXQrK10gPSAweDgwXG4gIGlmICh0aGlzLl9ibG9ja09mZnNldCA+IDU2KSB7XG4gICAgdGhpcy5fYmxvY2suZmlsbCgwLCB0aGlzLl9ibG9ja09mZnNldCwgNjQpXG4gICAgdGhpcy5fdXBkYXRlKClcbiAgICB0aGlzLl9ibG9ja09mZnNldCA9IDBcbiAgfVxuXG4gIHRoaXMuX2Jsb2NrLmZpbGwoMCwgdGhpcy5fYmxvY2tPZmZzZXQsIDU2KVxuICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFswXSwgNTYpXG4gIHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzFdLCA2MClcbiAgdGhpcy5fdXBkYXRlKClcblxuICAvLyBwcm9kdWNlIHJlc3VsdFxuICB2YXIgYnVmZmVyID0gQnVmZmVyLmFsbG9jID8gQnVmZmVyLmFsbG9jKDIwKSA6IG5ldyBCdWZmZXIoMjApXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fYSwgMClcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9iLCA0KVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2MsIDgpXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fZCwgMTIpXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fZSwgMTYpXG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gcm90bCAoeCwgbikge1xuICByZXR1cm4gKHggPDwgbikgfCAoeCA+Pj4gKDMyIC0gbikpXG59XG5cbmZ1bmN0aW9uIGZuMSAoYSwgYiwgYywgZCwgZSwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoYiBeIGMgXiBkKSArIG0gKyBrKSB8IDAsIHMpICsgZSkgfCAwXG59XG5cbmZ1bmN0aW9uIGZuMiAoYSwgYiwgYywgZCwgZSwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoKGIgJiBjKSB8ICgofmIpICYgZCkpICsgbSArIGspIHwgMCwgcykgKyBlKSB8IDBcbn1cblxuZnVuY3Rpb24gZm4zIChhLCBiLCBjLCBkLCBlLCBtLCBrLCBzKSB7XG4gIHJldHVybiAocm90bCgoYSArICgoYiB8ICh+YykpIF4gZCkgKyBtICsgaykgfCAwLCBzKSArIGUpIHwgMFxufVxuXG5mdW5jdGlvbiBmbjQgKGEsIGIsIGMsIGQsIGUsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKChiICYgZCkgfCAoYyAmICh+ZCkpKSArIG0gKyBrKSB8IDAsIHMpICsgZSkgfCAwXG59XG5cbmZ1bmN0aW9uIGZuNSAoYSwgYiwgYywgZCwgZSwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoYiBeIChjIHwgKH5kKSkpICsgbSArIGspIHwgMCwgcykgKyBlKSB8IDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSSVBFTUQxNjBcbiIsIi8qISBzYWZlLWJ1ZmZlci4gTUlUIExpY2Vuc2UuIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZy9vcGVuc291cmNlPiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm9kZS9uby1kZXByZWNhdGVkLWFwaSAqL1xudmFyIGJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpXG52YXIgQnVmZmVyID0gYnVmZmVyLkJ1ZmZlclxuXG4vLyBhbHRlcm5hdGl2ZSB0byB1c2luZyBPYmplY3Qua2V5cyBmb3Igb2xkIGJyb3dzZXJzXG5mdW5jdGlvbiBjb3B5UHJvcHMgKHNyYywgZHN0KSB7XG4gIGZvciAodmFyIGtleSBpbiBzcmMpIHtcbiAgICBkc3Rba2V5XSA9IHNyY1trZXldXG4gIH1cbn1cbmlmIChCdWZmZXIuZnJvbSAmJiBCdWZmZXIuYWxsb2MgJiYgQnVmZmVyLmFsbG9jVW5zYWZlICYmIEJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBidWZmZXJcbn0gZWxzZSB7XG4gIC8vIENvcHkgcHJvcGVydGllcyBmcm9tIHJlcXVpcmUoJ2J1ZmZlcicpXG4gIGNvcHlQcm9wcyhidWZmZXIsIGV4cG9ydHMpXG4gIGV4cG9ydHMuQnVmZmVyID0gU2FmZUJ1ZmZlclxufVxuXG5mdW5jdGlvbiBTYWZlQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5TYWZlQnVmZmVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQnVmZmVyLnByb3RvdHlwZSlcblxuLy8gQ29weSBzdGF0aWMgbWV0aG9kcyBmcm9tIEJ1ZmZlclxuY29weVByb3BzKEJ1ZmZlciwgU2FmZUJ1ZmZlcilcblxuU2FmZUJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5TYWZlQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICB2YXIgYnVmID0gQnVmZmVyKHNpemUpXG4gIGlmIChmaWxsICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykge1xuICAgICAgYnVmLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGJ1Zi5maWxsKDApXG4gIH1cbiAgcmV0dXJuIGJ1ZlxufVxuXG5TYWZlQnVmZmVyLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBCdWZmZXIoc2l6ZSlcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlci5TbG93QnVmZmVyKHNpemUpXG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBub2RlL25vLWRlcHJlY2F0ZWQtYXBpICovXG5cbid1c2Ugc3RyaWN0J1xuXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJylcbnZhciBCdWZmZXIgPSBidWZmZXIuQnVmZmVyXG5cbnZhciBzYWZlciA9IHt9XG5cbnZhciBrZXlcblxuZm9yIChrZXkgaW4gYnVmZmVyKSB7XG4gIGlmICghYnVmZmVyLmhhc093blByb3BlcnR5KGtleSkpIGNvbnRpbnVlXG4gIGlmIChrZXkgPT09ICdTbG93QnVmZmVyJyB8fCBrZXkgPT09ICdCdWZmZXInKSBjb250aW51ZVxuICBzYWZlcltrZXldID0gYnVmZmVyW2tleV1cbn1cblxudmFyIFNhZmVyID0gc2FmZXIuQnVmZmVyID0ge31cbmZvciAoa2V5IGluIEJ1ZmZlcikge1xuICBpZiAoIUJ1ZmZlci5oYXNPd25Qcm9wZXJ0eShrZXkpKSBjb250aW51ZVxuICBpZiAoa2V5ID09PSAnYWxsb2NVbnNhZmUnIHx8IGtleSA9PT0gJ2FsbG9jVW5zYWZlU2xvdycpIGNvbnRpbnVlXG4gIFNhZmVyW2tleV0gPSBCdWZmZXJba2V5XVxufVxuXG5zYWZlci5CdWZmZXIucHJvdG90eXBlID0gQnVmZmVyLnByb3RvdHlwZVxuXG5pZiAoIVNhZmVyLmZyb20gfHwgU2FmZXIuZnJvbSA9PT0gVWludDhBcnJheS5mcm9tKSB7XG4gIFNhZmVyLmZyb20gPSBmdW5jdGlvbiAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJ2YWx1ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgdmFsdWUpXG4gICAgfVxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUubGVuZ3RoID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiB2YWx1ZSlcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlcih2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG59XG5cbmlmICghU2FmZXIuYWxsb2MpIHtcbiAgU2FmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJzaXplXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIHNpemUpXG4gICAgfVxuICAgIGlmIChzaXplIDwgMCB8fCBzaXplID49IDIgKiAoMSA8PCAzMCkpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInICsgc2l6ZSArICdcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKVxuICAgIH1cbiAgICB2YXIgYnVmID0gQnVmZmVyKHNpemUpXG4gICAgaWYgKCFmaWxsIHx8IGZpbGwubGVuZ3RoID09PSAwKSB7XG4gICAgICBidWYuZmlsbCgwKVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykge1xuICAgICAgYnVmLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwpXG4gICAgfVxuICAgIHJldHVybiBidWZcbiAgfVxufVxuXG5pZiAoIXNhZmVyLmtTdHJpbmdNYXhMZW5ndGgpIHtcbiAgdHJ5IHtcbiAgICBzYWZlci5rU3RyaW5nTWF4TGVuZ3RoID0gcHJvY2Vzcy5iaW5kaW5nKCdidWZmZXInKS5rU3RyaW5nTWF4TGVuZ3RoXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyB3ZSBjYW4ndCBkZXRlcm1pbmUga1N0cmluZ01heExlbmd0aCBpbiBlbnZpcm9ubWVudHMgd2hlcmUgcHJvY2Vzcy5iaW5kaW5nXG4gICAgLy8gaXMgdW5zdXBwb3J0ZWQsIHNvIGxldCdzIG5vdCBzZXQgaXRcbiAgfVxufVxuXG5pZiAoIXNhZmVyLmNvbnN0YW50cykge1xuICBzYWZlci5jb25zdGFudHMgPSB7XG4gICAgTUFYX0xFTkdUSDogc2FmZXIua01heExlbmd0aFxuICB9XG4gIGlmIChzYWZlci5rU3RyaW5nTWF4TGVuZ3RoKSB7XG4gICAgc2FmZXIuY29uc3RhbnRzLk1BWF9TVFJJTkdfTEVOR1RIID0gc2FmZXIua1N0cmluZ01heExlbmd0aFxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2FmZXJcbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG4vLyBwcm90b3R5cGUgY2xhc3MgZm9yIGhhc2ggZnVuY3Rpb25zXG5mdW5jdGlvbiBIYXNoIChibG9ja1NpemUsIGZpbmFsU2l6ZSkge1xuICB0aGlzLl9ibG9jayA9IEJ1ZmZlci5hbGxvYyhibG9ja1NpemUpXG4gIHRoaXMuX2ZpbmFsU2l6ZSA9IGZpbmFsU2l6ZVxuICB0aGlzLl9ibG9ja1NpemUgPSBibG9ja1NpemVcbiAgdGhpcy5fbGVuID0gMFxufVxuXG5IYXNoLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSwgZW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmMgPSBlbmMgfHwgJ3V0ZjgnXG4gICAgZGF0YSA9IEJ1ZmZlci5mcm9tKGRhdGEsIGVuYylcbiAgfVxuXG4gIHZhciBibG9jayA9IHRoaXMuX2Jsb2NrXG4gIHZhciBibG9ja1NpemUgPSB0aGlzLl9ibG9ja1NpemVcbiAgdmFyIGxlbmd0aCA9IGRhdGEubGVuZ3RoXG4gIHZhciBhY2N1bSA9IHRoaXMuX2xlblxuXG4gIGZvciAodmFyIG9mZnNldCA9IDA7IG9mZnNldCA8IGxlbmd0aDspIHtcbiAgICB2YXIgYXNzaWduZWQgPSBhY2N1bSAlIGJsb2NrU2l6ZVxuICAgIHZhciByZW1haW5kZXIgPSBNYXRoLm1pbihsZW5ndGggLSBvZmZzZXQsIGJsb2NrU2l6ZSAtIGFzc2lnbmVkKVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZW1haW5kZXI7IGkrKykge1xuICAgICAgYmxvY2tbYXNzaWduZWQgKyBpXSA9IGRhdGFbb2Zmc2V0ICsgaV1cbiAgICB9XG5cbiAgICBhY2N1bSArPSByZW1haW5kZXJcbiAgICBvZmZzZXQgKz0gcmVtYWluZGVyXG5cbiAgICBpZiAoKGFjY3VtICUgYmxvY2tTaXplKSA9PT0gMCkge1xuICAgICAgdGhpcy5fdXBkYXRlKGJsb2NrKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuX2xlbiArPSBsZW5ndGhcbiAgcmV0dXJuIHRoaXNcbn1cblxuSGFzaC5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gKGVuYykge1xuICB2YXIgcmVtID0gdGhpcy5fbGVuICUgdGhpcy5fYmxvY2tTaXplXG5cbiAgdGhpcy5fYmxvY2tbcmVtXSA9IDB4ODBcblxuICAvLyB6ZXJvIChyZW0gKyAxKSB0cmFpbGluZyBiaXRzLCB3aGVyZSAocmVtICsgMSkgaXMgdGhlIHNtYWxsZXN0XG4gIC8vIG5vbi1uZWdhdGl2ZSBzb2x1dGlvbiB0byB0aGUgZXF1YXRpb24gKGxlbmd0aCArIDEgKyAocmVtICsgMSkpID09PSBmaW5hbFNpemUgbW9kIGJsb2NrU2l6ZVxuICB0aGlzLl9ibG9jay5maWxsKDAsIHJlbSArIDEpXG5cbiAgaWYgKHJlbSA+PSB0aGlzLl9maW5hbFNpemUpIHtcbiAgICB0aGlzLl91cGRhdGUodGhpcy5fYmxvY2spXG4gICAgdGhpcy5fYmxvY2suZmlsbCgwKVxuICB9XG5cbiAgdmFyIGJpdHMgPSB0aGlzLl9sZW4gKiA4XG5cbiAgLy8gdWludDMyXG4gIGlmIChiaXRzIDw9IDB4ZmZmZmZmZmYpIHtcbiAgICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKGJpdHMsIHRoaXMuX2Jsb2NrU2l6ZSAtIDQpXG5cbiAgLy8gdWludDY0XG4gIH0gZWxzZSB7XG4gICAgdmFyIGxvd0JpdHMgPSAoYml0cyAmIDB4ZmZmZmZmZmYpID4+PiAwXG4gICAgdmFyIGhpZ2hCaXRzID0gKGJpdHMgLSBsb3dCaXRzKSAvIDB4MTAwMDAwMDAwXG5cbiAgICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKGhpZ2hCaXRzLCB0aGlzLl9ibG9ja1NpemUgLSA4KVxuICAgIHRoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUobG93Qml0cywgdGhpcy5fYmxvY2tTaXplIC0gNClcbiAgfVxuXG4gIHRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jaylcbiAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoKClcblxuICByZXR1cm4gZW5jID8gaGFzaC50b1N0cmluZyhlbmMpIDogaGFzaFxufVxuXG5IYXNoLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ191cGRhdGUgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzcycpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaFxuIiwidmFyIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIFNIQSAoYWxnb3JpdGhtKSB7XG4gIGFsZ29yaXRobSA9IGFsZ29yaXRobS50b0xvd2VyQ2FzZSgpXG5cbiAgdmFyIEFsZ29yaXRobSA9IGV4cG9ydHNbYWxnb3JpdGhtXVxuICBpZiAoIUFsZ29yaXRobSkgdGhyb3cgbmV3IEVycm9yKGFsZ29yaXRobSArICcgaXMgbm90IHN1cHBvcnRlZCAod2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMpJylcblxuICByZXR1cm4gbmV3IEFsZ29yaXRobSgpXG59XG5cbmV4cG9ydHMuc2hhID0gcmVxdWlyZSgnLi9zaGEnKVxuZXhwb3J0cy5zaGExID0gcmVxdWlyZSgnLi9zaGExJylcbmV4cG9ydHMuc2hhMjI0ID0gcmVxdWlyZSgnLi9zaGEyMjQnKVxuZXhwb3J0cy5zaGEyNTYgPSByZXF1aXJlKCcuL3NoYTI1NicpXG5leHBvcnRzLnNoYTM4NCA9IHJlcXVpcmUoJy4vc2hhMzg0JylcbmV4cG9ydHMuc2hhNTEyID0gcmVxdWlyZSgnLi9zaGE1MTInKVxuIiwiLypcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMCwgYXMgZGVmaW5lZFxuICogaW4gRklQUyBQVUIgMTgwLTFcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgZGVyaXZlZCBmcm9tIHNoYTEuanMgb2YgdGhlIHNhbWUgcmVwb3NpdG9yeS5cbiAqIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gU0hBLTAgYW5kIFNIQS0xIGlzIGp1c3QgYSBiaXR3aXNlIHJvdGF0ZSBsZWZ0XG4gKiBvcGVyYXRpb24gd2FzIGFkZGVkLlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgSyA9IFtcbiAgMHg1YTgyNzk5OSwgMHg2ZWQ5ZWJhMSwgMHg4ZjFiYmNkYyB8IDAsIDB4Y2E2MmMxZDYgfCAwXG5dXG5cbnZhciBXID0gbmV3IEFycmF5KDgwKVxuXG5mdW5jdGlvbiBTaGEgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYSwgSGFzaClcblxuU2hhLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2NzQ1MjMwMVxuICB0aGlzLl9iID0gMHhlZmNkYWI4OVxuICB0aGlzLl9jID0gMHg5OGJhZGNmZVxuICB0aGlzLl9kID0gMHgxMDMyNTQ3NlxuICB0aGlzLl9lID0gMHhjM2QyZTFmMFxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIHJvdGw1IChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgNSkgfCAobnVtID4+PiAyNylcbn1cblxuZnVuY3Rpb24gcm90bDMwIChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgMzApIHwgKG51bSA+Pj4gMilcbn1cblxuZnVuY3Rpb24gZnQgKHMsIGIsIGMsIGQpIHtcbiAgaWYgKHMgPT09IDApIHJldHVybiAoYiAmIGMpIHwgKCh+YikgJiBkKVxuICBpZiAocyA9PT0gMikgcmV0dXJuIChiICYgYykgfCAoYiAmIGQpIHwgKGMgJiBkKVxuICByZXR1cm4gYiBeIGMgXiBkXG59XG5cblNoYS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBXID0gdGhpcy5fd1xuXG4gIHZhciBhID0gdGhpcy5fYSB8IDBcbiAgdmFyIGIgPSB0aGlzLl9iIHwgMFxuICB2YXIgYyA9IHRoaXMuX2MgfCAwXG4gIHZhciBkID0gdGhpcy5fZCB8IDBcbiAgdmFyIGUgPSB0aGlzLl9lIHwgMFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgV1tpXSA9IE0ucmVhZEludDMyQkUoaSAqIDQpXG4gIGZvciAoOyBpIDwgODA7ICsraSkgV1tpXSA9IFdbaSAtIDNdIF4gV1tpIC0gOF0gXiBXW2kgLSAxNF0gXiBXW2kgLSAxNl1cblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyArK2opIHtcbiAgICB2YXIgcyA9IH5+KGogLyAyMClcbiAgICB2YXIgdCA9IChyb3RsNShhKSArIGZ0KHMsIGIsIGMsIGQpICsgZSArIFdbal0gKyBLW3NdKSB8IDBcblxuICAgIGUgPSBkXG4gICAgZCA9IGNcbiAgICBjID0gcm90bDMwKGIpXG4gICAgYiA9IGFcbiAgICBhID0gdFxuICB9XG5cbiAgdGhpcy5fYSA9IChhICsgdGhpcy5fYSkgfCAwXG4gIHRoaXMuX2IgPSAoYiArIHRoaXMuX2IpIHwgMFxuICB0aGlzLl9jID0gKGMgKyB0aGlzLl9jKSB8IDBcbiAgdGhpcy5fZCA9IChkICsgdGhpcy5fZCkgfCAwXG4gIHRoaXMuX2UgPSAoZSArIHRoaXMuX2UpIHwgMFxufVxuXG5TaGEucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgyMClcblxuICBILndyaXRlSW50MzJCRSh0aGlzLl9hIHwgMCwgMClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYiB8IDAsIDQpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2MgfCAwLCA4KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9kIHwgMCwgMTIpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2UgfCAwLCAxNilcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYVxuIiwiLypcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMSwgYXMgZGVmaW5lZFxuICogaW4gRklQUyBQVUIgMTgwLTFcbiAqIFZlcnNpb24gMi4xYSBDb3B5cmlnaHQgUGF1bCBKb2huc3RvbiAyMDAwIC0gMjAwMi5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCU0QgTGljZW5zZVxuICogU2VlIGh0dHA6Ly9wYWpob21lLm9yZy51ay9jcnlwdC9tZDUgZm9yIGRldGFpbHMuXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBLID0gW1xuICAweDVhODI3OTk5LCAweDZlZDllYmExLCAweDhmMWJiY2RjIHwgMCwgMHhjYTYyYzFkNiB8IDBcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoODApXG5cbmZ1bmN0aW9uIFNoYTEgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTEsIEhhc2gpXG5cblNoYTEucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweDY3NDUyMzAxXG4gIHRoaXMuX2IgPSAweGVmY2RhYjg5XG4gIHRoaXMuX2MgPSAweDk4YmFkY2ZlXG4gIHRoaXMuX2QgPSAweDEwMzI1NDc2XG4gIHRoaXMuX2UgPSAweGMzZDJlMWYwXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gcm90bDEgKG51bSkge1xuICByZXR1cm4gKG51bSA8PCAxKSB8IChudW0gPj4+IDMxKVxufVxuXG5mdW5jdGlvbiByb3RsNSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDUpIHwgKG51bSA+Pj4gMjcpXG59XG5cbmZ1bmN0aW9uIHJvdGwzMCAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDMwKSB8IChudW0gPj4+IDIpXG59XG5cbmZ1bmN0aW9uIGZ0IChzLCBiLCBjLCBkKSB7XG4gIGlmIChzID09PSAwKSByZXR1cm4gKGIgJiBjKSB8ICgofmIpICYgZClcbiAgaWYgKHMgPT09IDIpIHJldHVybiAoYiAmIGMpIHwgKGIgJiBkKSB8IChjICYgZClcbiAgcmV0dXJuIGIgXiBjIF4gZFxufVxuXG5TaGExLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA4MDsgKytpKSBXW2ldID0gcm90bDEoV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XSlcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyArK2opIHtcbiAgICB2YXIgcyA9IH5+KGogLyAyMClcbiAgICB2YXIgdCA9IChyb3RsNShhKSArIGZ0KHMsIGIsIGMsIGQpICsgZSArIFdbal0gKyBLW3NdKSB8IDBcblxuICAgIGUgPSBkXG4gICAgZCA9IGNcbiAgICBjID0gcm90bDMwKGIpXG4gICAgYiA9IGFcbiAgICBhID0gdFxuICB9XG5cbiAgdGhpcy5fYSA9IChhICsgdGhpcy5fYSkgfCAwXG4gIHRoaXMuX2IgPSAoYiArIHRoaXMuX2IpIHwgMFxuICB0aGlzLl9jID0gKGMgKyB0aGlzLl9jKSB8IDBcbiAgdGhpcy5fZCA9IChkICsgdGhpcy5fZCkgfCAwXG4gIHRoaXMuX2UgPSAoZSArIHRoaXMuX2UpIHwgMFxufVxuXG5TaGExLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBCdWZmZXIuYWxsb2NVbnNhZmUoMjApXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSB8IDAsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IgfCAwLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jIHwgMCwgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCB8IDAsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lIHwgMCwgMTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGExXG4iLCIvKipcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMjU2LCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIDE4MC0yXG4gKiBWZXJzaW9uIDIuMi1iZXRhIENvcHlyaWdodCBBbmdlbCBNYXJpbiwgUGF1bCBKb2huc3RvbiAyMDAwIC0gMjAwOS5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIFNoYTI1NiA9IHJlcXVpcmUoJy4vc2hhMjU2JylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgVyA9IG5ldyBBcnJheSg2NClcblxuZnVuY3Rpb24gU2hhMjI0ICgpIHtcbiAgdGhpcy5pbml0KClcblxuICB0aGlzLl93ID0gVyAvLyBuZXcgQXJyYXkoNjQpXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDY0LCA1Nilcbn1cblxuaW5oZXJpdHMoU2hhMjI0LCBTaGEyNTYpXG5cblNoYTIyNC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYSA9IDB4YzEwNTllZDhcbiAgdGhpcy5fYiA9IDB4MzY3Y2Q1MDdcbiAgdGhpcy5fYyA9IDB4MzA3MGRkMTdcbiAgdGhpcy5fZCA9IDB4ZjcwZTU5MzlcbiAgdGhpcy5fZSA9IDB4ZmZjMDBiMzFcbiAgdGhpcy5fZiA9IDB4Njg1ODE1MTFcbiAgdGhpcy5fZyA9IDB4NjRmOThmYTdcbiAgdGhpcy5faCA9IDB4YmVmYTRmYTRcblxuICByZXR1cm4gdGhpc1xufVxuXG5TaGEyMjQucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgyOClcblxuICBILndyaXRlSW50MzJCRSh0aGlzLl9hLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jLCA4KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9kLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSwgMTYpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2YsIDIwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9nLCAyNClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTIyNFxuIiwiLyoqXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTI1NiwgYXMgZGVmaW5lZFxuICogaW4gRklQUyAxODAtMlxuICogVmVyc2lvbiAyLjItYmV0YSBDb3B5cmlnaHQgQW5nZWwgTWFyaW4sIFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDkuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgSyA9IFtcbiAgMHg0MjhBMkY5OCwgMHg3MTM3NDQ5MSwgMHhCNUMwRkJDRiwgMHhFOUI1REJBNSxcbiAgMHgzOTU2QzI1QiwgMHg1OUYxMTFGMSwgMHg5MjNGODJBNCwgMHhBQjFDNUVENSxcbiAgMHhEODA3QUE5OCwgMHgxMjgzNUIwMSwgMHgyNDMxODVCRSwgMHg1NTBDN0RDMyxcbiAgMHg3MkJFNUQ3NCwgMHg4MERFQjFGRSwgMHg5QkRDMDZBNywgMHhDMTlCRjE3NCxcbiAgMHhFNDlCNjlDMSwgMHhFRkJFNDc4NiwgMHgwRkMxOURDNiwgMHgyNDBDQTFDQyxcbiAgMHgyREU5MkM2RiwgMHg0QTc0ODRBQSwgMHg1Q0IwQTlEQywgMHg3NkY5ODhEQSxcbiAgMHg5ODNFNTE1MiwgMHhBODMxQzY2RCwgMHhCMDAzMjdDOCwgMHhCRjU5N0ZDNyxcbiAgMHhDNkUwMEJGMywgMHhENUE3OTE0NywgMHgwNkNBNjM1MSwgMHgxNDI5Mjk2NyxcbiAgMHgyN0I3MEE4NSwgMHgyRTFCMjEzOCwgMHg0RDJDNkRGQywgMHg1MzM4MEQxMyxcbiAgMHg2NTBBNzM1NCwgMHg3NjZBMEFCQiwgMHg4MUMyQzkyRSwgMHg5MjcyMkM4NSxcbiAgMHhBMkJGRThBMSwgMHhBODFBNjY0QiwgMHhDMjRCOEI3MCwgMHhDNzZDNTFBMyxcbiAgMHhEMTkyRTgxOSwgMHhENjk5MDYyNCwgMHhGNDBFMzU4NSwgMHgxMDZBQTA3MCxcbiAgMHgxOUE0QzExNiwgMHgxRTM3NkMwOCwgMHgyNzQ4Nzc0QywgMHgzNEIwQkNCNSxcbiAgMHgzOTFDMENCMywgMHg0RUQ4QUE0QSwgMHg1QjlDQ0E0RiwgMHg2ODJFNkZGMyxcbiAgMHg3NDhGODJFRSwgMHg3OEE1NjM2RiwgMHg4NEM4NzgxNCwgMHg4Q0M3MDIwOCxcbiAgMHg5MEJFRkZGQSwgMHhBNDUwNkNFQiwgMHhCRUY5QTNGNywgMHhDNjcxNzhGMlxuXVxuXG52YXIgVyA9IG5ldyBBcnJheSg2NClcblxuZnVuY3Rpb24gU2hhMjU2ICgpIHtcbiAgdGhpcy5pbml0KClcblxuICB0aGlzLl93ID0gVyAvLyBuZXcgQXJyYXkoNjQpXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDY0LCA1Nilcbn1cblxuaW5oZXJpdHMoU2hhMjU2LCBIYXNoKVxuXG5TaGEyNTYucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweDZhMDllNjY3XG4gIHRoaXMuX2IgPSAweGJiNjdhZTg1XG4gIHRoaXMuX2MgPSAweDNjNmVmMzcyXG4gIHRoaXMuX2QgPSAweGE1NGZmNTNhXG4gIHRoaXMuX2UgPSAweDUxMGU1MjdmXG4gIHRoaXMuX2YgPSAweDliMDU2ODhjXG4gIHRoaXMuX2cgPSAweDFmODNkOWFiXG4gIHRoaXMuX2ggPSAweDViZTBjZDE5XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gY2ggKHgsIHksIHopIHtcbiAgcmV0dXJuIHogXiAoeCAmICh5IF4geikpXG59XG5cbmZ1bmN0aW9uIG1haiAoeCwgeSwgeikge1xuICByZXR1cm4gKHggJiB5KSB8ICh6ICYgKHggfCB5KSlcbn1cblxuZnVuY3Rpb24gc2lnbWEwICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gMiB8IHggPDwgMzApIF4gKHggPj4+IDEzIHwgeCA8PCAxOSkgXiAoeCA+Pj4gMjIgfCB4IDw8IDEwKVxufVxuXG5mdW5jdGlvbiBzaWdtYTEgKHgpIHtcbiAgcmV0dXJuICh4ID4+PiA2IHwgeCA8PCAyNikgXiAoeCA+Pj4gMTEgfCB4IDw8IDIxKSBeICh4ID4+PiAyNSB8IHggPDwgNylcbn1cblxuZnVuY3Rpb24gZ2FtbWEwICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gNyB8IHggPDwgMjUpIF4gKHggPj4+IDE4IHwgeCA8PCAxNCkgXiAoeCA+Pj4gMylcbn1cblxuZnVuY3Rpb24gZ2FtbWExICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gMTcgfCB4IDw8IDE1KSBeICh4ID4+PiAxOSB8IHggPDwgMTMpIF4gKHggPj4+IDEwKVxufVxuXG5TaGEyNTYucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYSA9IHRoaXMuX2EgfCAwXG4gIHZhciBiID0gdGhpcy5fYiB8IDBcbiAgdmFyIGMgPSB0aGlzLl9jIHwgMFxuICB2YXIgZCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlID0gdGhpcy5fZSB8IDBcbiAgdmFyIGYgPSB0aGlzLl9mIHwgMFxuICB2YXIgZyA9IHRoaXMuX2cgfCAwXG4gIHZhciBoID0gdGhpcy5faCB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICBmb3IgKDsgaSA8IDY0OyArK2kpIFdbaV0gPSAoZ2FtbWExKFdbaSAtIDJdKSArIFdbaSAtIDddICsgZ2FtbWEwKFdbaSAtIDE1XSkgKyBXW2kgLSAxNl0pIHwgMFxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgNjQ7ICsraikge1xuICAgIHZhciBUMSA9IChoICsgc2lnbWExKGUpICsgY2goZSwgZiwgZykgKyBLW2pdICsgV1tqXSkgfCAwXG4gICAgdmFyIFQyID0gKHNpZ21hMChhKSArIG1haihhLCBiLCBjKSkgfCAwXG5cbiAgICBoID0gZ1xuICAgIGcgPSBmXG4gICAgZiA9IGVcbiAgICBlID0gKGQgKyBUMSkgfCAwXG4gICAgZCA9IGNcbiAgICBjID0gYlxuICAgIGIgPSBhXG4gICAgYSA9IChUMSArIFQyKSB8IDBcbiAgfVxuXG4gIHRoaXMuX2EgPSAoYSArIHRoaXMuX2EpIHwgMFxuICB0aGlzLl9iID0gKGIgKyB0aGlzLl9iKSB8IDBcbiAgdGhpcy5fYyA9IChjICsgdGhpcy5fYykgfCAwXG4gIHRoaXMuX2QgPSAoZCArIHRoaXMuX2QpIHwgMFxuICB0aGlzLl9lID0gKGUgKyB0aGlzLl9lKSB8IDBcbiAgdGhpcy5fZiA9IChmICsgdGhpcy5fZikgfCAwXG4gIHRoaXMuX2cgPSAoZyArIHRoaXMuX2cpIHwgMFxuICB0aGlzLl9oID0gKGggKyB0aGlzLl9oKSB8IDBcbn1cblxuU2hhMjU2LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBCdWZmZXIuYWxsb2NVbnNhZmUoMzIpXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSwgMClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYiwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYywgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCwgMTIpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2UsIDE2KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9mLCAyMClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZywgMjQpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2gsIDI4KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMjU2XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgU0hBNTEyID0gcmVxdWlyZSgnLi9zaGE1MTInKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBXID0gbmV3IEFycmF5KDE2MClcblxuZnVuY3Rpb24gU2hhMzg0ICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgMTI4LCAxMTIpXG59XG5cbmluaGVyaXRzKFNoYTM4NCwgU0hBNTEyKVxuXG5TaGEzODQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2FoID0gMHhjYmJiOWQ1ZFxuICB0aGlzLl9iaCA9IDB4NjI5YTI5MmFcbiAgdGhpcy5fY2ggPSAweDkxNTkwMTVhXG4gIHRoaXMuX2RoID0gMHgxNTJmZWNkOFxuICB0aGlzLl9laCA9IDB4NjczMzI2NjdcbiAgdGhpcy5fZmggPSAweDhlYjQ0YTg3XG4gIHRoaXMuX2doID0gMHhkYjBjMmUwZFxuICB0aGlzLl9oaCA9IDB4NDdiNTQ4MWRcblxuICB0aGlzLl9hbCA9IDB4YzEwNTllZDhcbiAgdGhpcy5fYmwgPSAweDM2N2NkNTA3XG4gIHRoaXMuX2NsID0gMHgzMDcwZGQxN1xuICB0aGlzLl9kbCA9IDB4ZjcwZTU5MzlcbiAgdGhpcy5fZWwgPSAweGZmYzAwYjMxXG4gIHRoaXMuX2ZsID0gMHg2ODU4MTUxMVxuICB0aGlzLl9nbCA9IDB4NjRmOThmYTdcbiAgdGhpcy5faGwgPSAweGJlZmE0ZmE0XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuU2hhMzg0LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBCdWZmZXIuYWxsb2NVbnNhZmUoNDgpXG5cbiAgZnVuY3Rpb24gd3JpdGVJbnQ2NEJFIChoLCBsLCBvZmZzZXQpIHtcbiAgICBILndyaXRlSW50MzJCRShoLCBvZmZzZXQpXG4gICAgSC53cml0ZUludDMyQkUobCwgb2Zmc2V0ICsgNClcbiAgfVxuXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9haCwgdGhpcy5fYWwsIDApXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9iaCwgdGhpcy5fYmwsIDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9jaCwgdGhpcy5fY2wsIDE2KVxuICB3cml0ZUludDY0QkUodGhpcy5fZGgsIHRoaXMuX2RsLCAyNClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2VoLCB0aGlzLl9lbCwgMzIpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9maCwgdGhpcy5fZmwsIDQwKVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMzg0XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIEsgPSBbXG4gIDB4NDI4YTJmOTgsIDB4ZDcyOGFlMjIsIDB4NzEzNzQ0OTEsIDB4MjNlZjY1Y2QsXG4gIDB4YjVjMGZiY2YsIDB4ZWM0ZDNiMmYsIDB4ZTliNWRiYTUsIDB4ODE4OWRiYmMsXG4gIDB4Mzk1NmMyNWIsIDB4ZjM0OGI1MzgsIDB4NTlmMTExZjEsIDB4YjYwNWQwMTksXG4gIDB4OTIzZjgyYTQsIDB4YWYxOTRmOWIsIDB4YWIxYzVlZDUsIDB4ZGE2ZDgxMTgsXG4gIDB4ZDgwN2FhOTgsIDB4YTMwMzAyNDIsIDB4MTI4MzViMDEsIDB4NDU3MDZmYmUsXG4gIDB4MjQzMTg1YmUsIDB4NGVlNGIyOGMsIDB4NTUwYzdkYzMsIDB4ZDVmZmI0ZTIsXG4gIDB4NzJiZTVkNzQsIDB4ZjI3Yjg5NmYsIDB4ODBkZWIxZmUsIDB4M2IxNjk2YjEsXG4gIDB4OWJkYzA2YTcsIDB4MjVjNzEyMzUsIDB4YzE5YmYxNzQsIDB4Y2Y2OTI2OTQsXG4gIDB4ZTQ5YjY5YzEsIDB4OWVmMTRhZDIsIDB4ZWZiZTQ3ODYsIDB4Mzg0ZjI1ZTMsXG4gIDB4MGZjMTlkYzYsIDB4OGI4Y2Q1YjUsIDB4MjQwY2ExY2MsIDB4NzdhYzljNjUsXG4gIDB4MmRlOTJjNmYsIDB4NTkyYjAyNzUsIDB4NGE3NDg0YWEsIDB4NmVhNmU0ODMsXG4gIDB4NWNiMGE5ZGMsIDB4YmQ0MWZiZDQsIDB4NzZmOTg4ZGEsIDB4ODMxMTUzYjUsXG4gIDB4OTgzZTUxNTIsIDB4ZWU2NmRmYWIsIDB4YTgzMWM2NmQsIDB4MmRiNDMyMTAsXG4gIDB4YjAwMzI3YzgsIDB4OThmYjIxM2YsIDB4YmY1OTdmYzcsIDB4YmVlZjBlZTQsXG4gIDB4YzZlMDBiZjMsIDB4M2RhODhmYzIsIDB4ZDVhNzkxNDcsIDB4OTMwYWE3MjUsXG4gIDB4MDZjYTYzNTEsIDB4ZTAwMzgyNmYsIDB4MTQyOTI5NjcsIDB4MGEwZTZlNzAsXG4gIDB4MjdiNzBhODUsIDB4NDZkMjJmZmMsIDB4MmUxYjIxMzgsIDB4NWMyNmM5MjYsXG4gIDB4NGQyYzZkZmMsIDB4NWFjNDJhZWQsIDB4NTMzODBkMTMsIDB4OWQ5NWIzZGYsXG4gIDB4NjUwYTczNTQsIDB4OGJhZjYzZGUsIDB4NzY2YTBhYmIsIDB4M2M3N2IyYTgsXG4gIDB4ODFjMmM5MmUsIDB4NDdlZGFlZTYsIDB4OTI3MjJjODUsIDB4MTQ4MjM1M2IsXG4gIDB4YTJiZmU4YTEsIDB4NGNmMTAzNjQsIDB4YTgxYTY2NGIsIDB4YmM0MjMwMDEsXG4gIDB4YzI0YjhiNzAsIDB4ZDBmODk3OTEsIDB4Yzc2YzUxYTMsIDB4MDY1NGJlMzAsXG4gIDB4ZDE5MmU4MTksIDB4ZDZlZjUyMTgsIDB4ZDY5OTA2MjQsIDB4NTU2NWE5MTAsXG4gIDB4ZjQwZTM1ODUsIDB4NTc3MTIwMmEsIDB4MTA2YWEwNzAsIDB4MzJiYmQxYjgsXG4gIDB4MTlhNGMxMTYsIDB4YjhkMmQwYzgsIDB4MWUzNzZjMDgsIDB4NTE0MWFiNTMsXG4gIDB4Mjc0ODc3NGMsIDB4ZGY4ZWViOTksIDB4MzRiMGJjYjUsIDB4ZTE5YjQ4YTgsXG4gIDB4MzkxYzBjYjMsIDB4YzVjOTVhNjMsIDB4NGVkOGFhNGEsIDB4ZTM0MThhY2IsXG4gIDB4NWI5Y2NhNGYsIDB4Nzc2M2UzNzMsIDB4NjgyZTZmZjMsIDB4ZDZiMmI4YTMsXG4gIDB4NzQ4ZjgyZWUsIDB4NWRlZmIyZmMsIDB4NzhhNTYzNmYsIDB4NDMxNzJmNjAsXG4gIDB4ODRjODc4MTQsIDB4YTFmMGFiNzIsIDB4OGNjNzAyMDgsIDB4MWE2NDM5ZWMsXG4gIDB4OTBiZWZmZmEsIDB4MjM2MzFlMjgsIDB4YTQ1MDZjZWIsIDB4ZGU4MmJkZTksXG4gIDB4YmVmOWEzZjcsIDB4YjJjNjc5MTUsIDB4YzY3MTc4ZjIsIDB4ZTM3MjUzMmIsXG4gIDB4Y2EyNzNlY2UsIDB4ZWEyNjYxOWMsIDB4ZDE4NmI4YzcsIDB4MjFjMGMyMDcsXG4gIDB4ZWFkYTdkZDYsIDB4Y2RlMGViMWUsIDB4ZjU3ZDRmN2YsIDB4ZWU2ZWQxNzgsXG4gIDB4MDZmMDY3YWEsIDB4NzIxNzZmYmEsIDB4MGE2MzdkYzUsIDB4YTJjODk4YTYsXG4gIDB4MTEzZjk4MDQsIDB4YmVmOTBkYWUsIDB4MWI3MTBiMzUsIDB4MTMxYzQ3MWIsXG4gIDB4MjhkYjc3ZjUsIDB4MjMwNDdkODQsIDB4MzJjYWFiN2IsIDB4NDBjNzI0OTMsXG4gIDB4M2M5ZWJlMGEsIDB4MTVjOWJlYmMsIDB4NDMxZDY3YzQsIDB4OWMxMDBkNGMsXG4gIDB4NGNjNWQ0YmUsIDB4Y2IzZTQyYjYsIDB4NTk3ZjI5OWMsIDB4ZmM2NTdlMmEsXG4gIDB4NWZjYjZmYWIsIDB4M2FkNmZhZWMsIDB4NmM0NDE5OGMsIDB4NGE0NzU4MTdcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoMTYwKVxuXG5mdW5jdGlvbiBTaGE1MTIgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCAxMjgsIDExMilcbn1cblxuaW5oZXJpdHMoU2hhNTEyLCBIYXNoKVxuXG5TaGE1MTIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2FoID0gMHg2YTA5ZTY2N1xuICB0aGlzLl9iaCA9IDB4YmI2N2FlODVcbiAgdGhpcy5fY2ggPSAweDNjNmVmMzcyXG4gIHRoaXMuX2RoID0gMHhhNTRmZjUzYVxuICB0aGlzLl9laCA9IDB4NTEwZTUyN2ZcbiAgdGhpcy5fZmggPSAweDliMDU2ODhjXG4gIHRoaXMuX2doID0gMHgxZjgzZDlhYlxuICB0aGlzLl9oaCA9IDB4NWJlMGNkMTlcblxuICB0aGlzLl9hbCA9IDB4ZjNiY2M5MDhcbiAgdGhpcy5fYmwgPSAweDg0Y2FhNzNiXG4gIHRoaXMuX2NsID0gMHhmZTk0ZjgyYlxuICB0aGlzLl9kbCA9IDB4NWYxZDM2ZjFcbiAgdGhpcy5fZWwgPSAweGFkZTY4MmQxXG4gIHRoaXMuX2ZsID0gMHgyYjNlNmMxZlxuICB0aGlzLl9nbCA9IDB4ZmI0MWJkNmJcbiAgdGhpcy5faGwgPSAweDEzN2UyMTc5XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gQ2ggKHgsIHksIHopIHtcbiAgcmV0dXJuIHogXiAoeCAmICh5IF4geikpXG59XG5cbmZ1bmN0aW9uIG1haiAoeCwgeSwgeikge1xuICByZXR1cm4gKHggJiB5KSB8ICh6ICYgKHggfCB5KSlcbn1cblxuZnVuY3Rpb24gc2lnbWEwICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDI4IHwgeGwgPDwgNCkgXiAoeGwgPj4+IDIgfCB4IDw8IDMwKSBeICh4bCA+Pj4gNyB8IHggPDwgMjUpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMSAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxNCB8IHhsIDw8IDE4KSBeICh4ID4+PiAxOCB8IHhsIDw8IDE0KSBeICh4bCA+Pj4gOSB8IHggPDwgMjMpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxIHwgeGwgPDwgMzEpIF4gKHggPj4+IDggfCB4bCA8PCAyNCkgXiAoeCA+Pj4gNylcbn1cblxuZnVuY3Rpb24gR2FtbWEwbCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxIHwgeGwgPDwgMzEpIF4gKHggPj4+IDggfCB4bCA8PCAyNCkgXiAoeCA+Pj4gNyB8IHhsIDw8IDI1KVxufVxuXG5mdW5jdGlvbiBHYW1tYTEgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMTkgfCB4bCA8PCAxMykgXiAoeGwgPj4+IDI5IHwgeCA8PCAzKSBeICh4ID4+PiA2KVxufVxuXG5mdW5jdGlvbiBHYW1tYTFsICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDE5IHwgeGwgPDwgMTMpIF4gKHhsID4+PiAyOSB8IHggPDwgMykgXiAoeCA+Pj4gNiB8IHhsIDw8IDI2KVxufVxuXG5mdW5jdGlvbiBnZXRDYXJyeSAoYSwgYikge1xuICByZXR1cm4gKGEgPj4+IDApIDwgKGIgPj4+IDApID8gMSA6IDBcbn1cblxuU2hhNTEyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGFoID0gdGhpcy5fYWggfCAwXG4gIHZhciBiaCA9IHRoaXMuX2JoIHwgMFxuICB2YXIgY2ggPSB0aGlzLl9jaCB8IDBcbiAgdmFyIGRoID0gdGhpcy5fZGggfCAwXG4gIHZhciBlaCA9IHRoaXMuX2VoIHwgMFxuICB2YXIgZmggPSB0aGlzLl9maCB8IDBcbiAgdmFyIGdoID0gdGhpcy5fZ2ggfCAwXG4gIHZhciBoaCA9IHRoaXMuX2hoIHwgMFxuXG4gIHZhciBhbCA9IHRoaXMuX2FsIHwgMFxuICB2YXIgYmwgPSB0aGlzLl9ibCB8IDBcbiAgdmFyIGNsID0gdGhpcy5fY2wgfCAwXG4gIHZhciBkbCA9IHRoaXMuX2RsIHwgMFxuICB2YXIgZWwgPSB0aGlzLl9lbCB8IDBcbiAgdmFyIGZsID0gdGhpcy5fZmwgfCAwXG4gIHZhciBnbCA9IHRoaXMuX2dsIHwgMFxuICB2YXIgaGwgPSB0aGlzLl9obCB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDMyOyBpICs9IDIpIHtcbiAgICBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgICBXW2kgKyAxXSA9IE0ucmVhZEludDMyQkUoaSAqIDQgKyA0KVxuICB9XG4gIGZvciAoOyBpIDwgMTYwOyBpICs9IDIpIHtcbiAgICB2YXIgeGggPSBXW2kgLSAxNSAqIDJdXG4gICAgdmFyIHhsID0gV1tpIC0gMTUgKiAyICsgMV1cbiAgICB2YXIgZ2FtbWEwID0gR2FtbWEwKHhoLCB4bClcbiAgICB2YXIgZ2FtbWEwbCA9IEdhbW1hMGwoeGwsIHhoKVxuXG4gICAgeGggPSBXW2kgLSAyICogMl1cbiAgICB4bCA9IFdbaSAtIDIgKiAyICsgMV1cbiAgICB2YXIgZ2FtbWExID0gR2FtbWExKHhoLCB4bClcbiAgICB2YXIgZ2FtbWExbCA9IEdhbW1hMWwoeGwsIHhoKVxuXG4gICAgLy8gV1tpXSA9IGdhbW1hMCArIFdbaSAtIDddICsgZ2FtbWExICsgV1tpIC0gMTZdXG4gICAgdmFyIFdpN2ggPSBXW2kgLSA3ICogMl1cbiAgICB2YXIgV2k3bCA9IFdbaSAtIDcgKiAyICsgMV1cblxuICAgIHZhciBXaTE2aCA9IFdbaSAtIDE2ICogMl1cbiAgICB2YXIgV2kxNmwgPSBXW2kgLSAxNiAqIDIgKyAxXVxuXG4gICAgdmFyIFdpbCA9IChnYW1tYTBsICsgV2k3bCkgfCAwXG4gICAgdmFyIFdpaCA9IChnYW1tYTAgKyBXaTdoICsgZ2V0Q2FycnkoV2lsLCBnYW1tYTBsKSkgfCAwXG4gICAgV2lsID0gKFdpbCArIGdhbW1hMWwpIHwgMFxuICAgIFdpaCA9IChXaWggKyBnYW1tYTEgKyBnZXRDYXJyeShXaWwsIGdhbW1hMWwpKSB8IDBcbiAgICBXaWwgPSAoV2lsICsgV2kxNmwpIHwgMFxuICAgIFdpaCA9IChXaWggKyBXaTE2aCArIGdldENhcnJ5KFdpbCwgV2kxNmwpKSB8IDBcblxuICAgIFdbaV0gPSBXaWhcbiAgICBXW2kgKyAxXSA9IFdpbFxuICB9XG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCAxNjA7IGogKz0gMikge1xuICAgIFdpaCA9IFdbal1cbiAgICBXaWwgPSBXW2ogKyAxXVxuXG4gICAgdmFyIG1hamggPSBtYWooYWgsIGJoLCBjaClcbiAgICB2YXIgbWFqbCA9IG1haihhbCwgYmwsIGNsKVxuXG4gICAgdmFyIHNpZ21hMGggPSBzaWdtYTAoYWgsIGFsKVxuICAgIHZhciBzaWdtYTBsID0gc2lnbWEwKGFsLCBhaClcbiAgICB2YXIgc2lnbWExaCA9IHNpZ21hMShlaCwgZWwpXG4gICAgdmFyIHNpZ21hMWwgPSBzaWdtYTEoZWwsIGVoKVxuXG4gICAgLy8gdDEgPSBoICsgc2lnbWExICsgY2ggKyBLW2pdICsgV1tqXVxuICAgIHZhciBLaWggPSBLW2pdXG4gICAgdmFyIEtpbCA9IEtbaiArIDFdXG5cbiAgICB2YXIgY2hoID0gQ2goZWgsIGZoLCBnaClcbiAgICB2YXIgY2hsID0gQ2goZWwsIGZsLCBnbClcblxuICAgIHZhciB0MWwgPSAoaGwgKyBzaWdtYTFsKSB8IDBcbiAgICB2YXIgdDFoID0gKGhoICsgc2lnbWExaCArIGdldENhcnJ5KHQxbCwgaGwpKSB8IDBcbiAgICB0MWwgPSAodDFsICsgY2hsKSB8IDBcbiAgICB0MWggPSAodDFoICsgY2hoICsgZ2V0Q2FycnkodDFsLCBjaGwpKSB8IDBcbiAgICB0MWwgPSAodDFsICsgS2lsKSB8IDBcbiAgICB0MWggPSAodDFoICsgS2loICsgZ2V0Q2FycnkodDFsLCBLaWwpKSB8IDBcbiAgICB0MWwgPSAodDFsICsgV2lsKSB8IDBcbiAgICB0MWggPSAodDFoICsgV2loICsgZ2V0Q2FycnkodDFsLCBXaWwpKSB8IDBcblxuICAgIC8vIHQyID0gc2lnbWEwICsgbWFqXG4gICAgdmFyIHQybCA9IChzaWdtYTBsICsgbWFqbCkgfCAwXG4gICAgdmFyIHQyaCA9IChzaWdtYTBoICsgbWFqaCArIGdldENhcnJ5KHQybCwgc2lnbWEwbCkpIHwgMFxuXG4gICAgaGggPSBnaFxuICAgIGhsID0gZ2xcbiAgICBnaCA9IGZoXG4gICAgZ2wgPSBmbFxuICAgIGZoID0gZWhcbiAgICBmbCA9IGVsXG4gICAgZWwgPSAoZGwgKyB0MWwpIHwgMFxuICAgIGVoID0gKGRoICsgdDFoICsgZ2V0Q2FycnkoZWwsIGRsKSkgfCAwXG4gICAgZGggPSBjaFxuICAgIGRsID0gY2xcbiAgICBjaCA9IGJoXG4gICAgY2wgPSBibFxuICAgIGJoID0gYWhcbiAgICBibCA9IGFsXG4gICAgYWwgPSAodDFsICsgdDJsKSB8IDBcbiAgICBhaCA9ICh0MWggKyB0MmggKyBnZXRDYXJyeShhbCwgdDFsKSkgfCAwXG4gIH1cblxuICB0aGlzLl9hbCA9ICh0aGlzLl9hbCArIGFsKSB8IDBcbiAgdGhpcy5fYmwgPSAodGhpcy5fYmwgKyBibCkgfCAwXG4gIHRoaXMuX2NsID0gKHRoaXMuX2NsICsgY2wpIHwgMFxuICB0aGlzLl9kbCA9ICh0aGlzLl9kbCArIGRsKSB8IDBcbiAgdGhpcy5fZWwgPSAodGhpcy5fZWwgKyBlbCkgfCAwXG4gIHRoaXMuX2ZsID0gKHRoaXMuX2ZsICsgZmwpIHwgMFxuICB0aGlzLl9nbCA9ICh0aGlzLl9nbCArIGdsKSB8IDBcbiAgdGhpcy5faGwgPSAodGhpcy5faGwgKyBobCkgfCAwXG5cbiAgdGhpcy5fYWggPSAodGhpcy5fYWggKyBhaCArIGdldENhcnJ5KHRoaXMuX2FsLCBhbCkpIHwgMFxuICB0aGlzLl9iaCA9ICh0aGlzLl9iaCArIGJoICsgZ2V0Q2FycnkodGhpcy5fYmwsIGJsKSkgfCAwXG4gIHRoaXMuX2NoID0gKHRoaXMuX2NoICsgY2ggKyBnZXRDYXJyeSh0aGlzLl9jbCwgY2wpKSB8IDBcbiAgdGhpcy5fZGggPSAodGhpcy5fZGggKyBkaCArIGdldENhcnJ5KHRoaXMuX2RsLCBkbCkpIHwgMFxuICB0aGlzLl9laCA9ICh0aGlzLl9laCArIGVoICsgZ2V0Q2FycnkodGhpcy5fZWwsIGVsKSkgfCAwXG4gIHRoaXMuX2ZoID0gKHRoaXMuX2ZoICsgZmggKyBnZXRDYXJyeSh0aGlzLl9mbCwgZmwpKSB8IDBcbiAgdGhpcy5fZ2ggPSAodGhpcy5fZ2ggKyBnaCArIGdldENhcnJ5KHRoaXMuX2dsLCBnbCkpIHwgMFxuICB0aGlzLl9oaCA9ICh0aGlzLl9oaCArIGhoICsgZ2V0Q2FycnkodGhpcy5faGwsIGhsKSkgfCAwXG59XG5cblNoYTUxMi5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gQnVmZmVyLmFsbG9jVW5zYWZlKDY0KVxuXG4gIGZ1bmN0aW9uIHdyaXRlSW50NjRCRSAoaCwgbCwgb2Zmc2V0KSB7XG4gICAgSC53cml0ZUludDMyQkUoaCwgb2Zmc2V0KVxuICAgIEgud3JpdGVJbnQzMkJFKGwsIG9mZnNldCArIDQpXG4gIH1cblxuICB3cml0ZUludDY0QkUodGhpcy5fYWgsIHRoaXMuX2FsLCAwKVxuICB3cml0ZUludDY0QkUodGhpcy5fYmgsIHRoaXMuX2JsLCA4KVxuICB3cml0ZUludDY0QkUodGhpcy5fY2gsIHRoaXMuX2NsLCAxNilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2RoLCB0aGlzLl9kbCwgMjQpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9laCwgdGhpcy5fZWwsIDMyKVxuICB3cml0ZUludDY0QkUodGhpcy5fZmgsIHRoaXMuX2ZsLCA0MClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2doLCB0aGlzLl9nbCwgNDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9oaCwgdGhpcy5faGwsIDU2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhNTEyXG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxubW9kdWxlLmV4cG9ydHMgPSBTdHJlYW07XG5cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmluaGVyaXRzKFN0cmVhbSwgRUUpO1xuU3RyZWFtLlJlYWRhYmxlID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3JlYWRhYmxlLmpzJyk7XG5TdHJlYW0uV3JpdGFibGUgPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fd3JpdGFibGUuanMnKTtcblN0cmVhbS5EdXBsZXggPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fZHVwbGV4LmpzJyk7XG5TdHJlYW0uVHJhbnNmb3JtID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcycpO1xuU3RyZWFtLlBhc3NUaHJvdWdoID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzJyk7XG5TdHJlYW0uZmluaXNoZWQgPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvZW5kLW9mLXN0cmVhbS5qcycpXG5TdHJlYW0ucGlwZWxpbmUgPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvcGlwZWxpbmUuanMnKVxuXG4vLyBCYWNrd2FyZHMtY29tcGF0IHdpdGggbm9kZSAwLjQueFxuU3RyZWFtLlN0cmVhbSA9IFN0cmVhbTtcblxuXG5cbi8vIG9sZC1zdHlsZSBzdHJlYW1zLiAgTm90ZSB0aGF0IHRoZSBwaXBlIG1ldGhvZCAodGhlIG9ubHkgcmVsZXZhbnRcbi8vIHBhcnQgb2YgdGhpcyBjbGFzcykgaXMgb3ZlcnJpZGRlbiBpbiB0aGUgUmVhZGFibGUgY2xhc3MuXG5cbmZ1bmN0aW9uIFN0cmVhbSgpIHtcbiAgRUUuY2FsbCh0aGlzKTtcbn1cblxuU3RyZWFtLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24oZGVzdCwgb3B0aW9ucykge1xuICB2YXIgc291cmNlID0gdGhpcztcblxuICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHtcbiAgICBpZiAoZGVzdC53cml0YWJsZSkge1xuICAgICAgaWYgKGZhbHNlID09PSBkZXN0LndyaXRlKGNodW5rKSAmJiBzb3VyY2UucGF1c2UpIHtcbiAgICAgICAgc291cmNlLnBhdXNlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc291cmNlLm9uKCdkYXRhJywgb25kYXRhKTtcblxuICBmdW5jdGlvbiBvbmRyYWluKCkge1xuICAgIGlmIChzb3VyY2UucmVhZGFibGUgJiYgc291cmNlLnJlc3VtZSkge1xuICAgICAgc291cmNlLnJlc3VtZSgpO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbik7XG5cbiAgLy8gSWYgdGhlICdlbmQnIG9wdGlvbiBpcyBub3Qgc3VwcGxpZWQsIGRlc3QuZW5kKCkgd2lsbCBiZSBjYWxsZWQgd2hlblxuICAvLyBzb3VyY2UgZ2V0cyB0aGUgJ2VuZCcgb3IgJ2Nsb3NlJyBldmVudHMuICBPbmx5IGRlc3QuZW5kKCkgb25jZS5cbiAgaWYgKCFkZXN0Ll9pc1N0ZGlvICYmICghb3B0aW9ucyB8fCBvcHRpb25zLmVuZCAhPT0gZmFsc2UpKSB7XG4gICAgc291cmNlLm9uKCdlbmQnLCBvbmVuZCk7XG4gICAgc291cmNlLm9uKCdjbG9zZScsIG9uY2xvc2UpO1xuICB9XG5cbiAgdmFyIGRpZE9uRW5kID0gZmFsc2U7XG4gIGZ1bmN0aW9uIG9uZW5kKCkge1xuICAgIGlmIChkaWRPbkVuZCkgcmV0dXJuO1xuICAgIGRpZE9uRW5kID0gdHJ1ZTtcblxuICAgIGRlc3QuZW5kKCk7XG4gIH1cblxuXG4gIGZ1bmN0aW9uIG9uY2xvc2UoKSB7XG4gICAgaWYgKGRpZE9uRW5kKSByZXR1cm47XG4gICAgZGlkT25FbmQgPSB0cnVlO1xuXG4gICAgaWYgKHR5cGVvZiBkZXN0LmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIGRlc3QuZGVzdHJveSgpO1xuICB9XG5cbiAgLy8gZG9uJ3QgbGVhdmUgZGFuZ2xpbmcgcGlwZXMgd2hlbiB0aGVyZSBhcmUgZXJyb3JzLlxuICBmdW5jdGlvbiBvbmVycm9yKGVyKSB7XG4gICAgY2xlYW51cCgpO1xuICAgIGlmIChFRS5saXN0ZW5lckNvdW50KHRoaXMsICdlcnJvcicpID09PSAwKSB7XG4gICAgICB0aHJvdyBlcjsgLy8gVW5oYW5kbGVkIHN0cmVhbSBlcnJvciBpbiBwaXBlLlxuICAgIH1cbiAgfVxuXG4gIHNvdXJjZS5vbignZXJyb3InLCBvbmVycm9yKTtcbiAgZGVzdC5vbignZXJyb3InLCBvbmVycm9yKTtcblxuICAvLyByZW1vdmUgYWxsIHRoZSBldmVudCBsaXN0ZW5lcnMgdGhhdCB3ZXJlIGFkZGVkLlxuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZGF0YScsIG9uZGF0YSk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZHJhaW4nLCBvbmRyYWluKTtcblxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpO1xuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcblxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBjbGVhbnVwKTtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgY2xlYW51cCk7XG5cbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIGNsZWFudXApO1xuICB9XG5cbiAgc291cmNlLm9uKCdlbmQnLCBjbGVhbnVwKTtcbiAgc291cmNlLm9uKCdjbG9zZScsIGNsZWFudXApO1xuXG4gIGRlc3Qub24oJ2Nsb3NlJywgY2xlYW51cCk7XG5cbiAgZGVzdC5lbWl0KCdwaXBlJywgc291cmNlKTtcblxuICAvLyBBbGxvdyBmb3IgdW5peC1saWtlIHVzYWdlOiBBLnBpcGUoQikucGlwZShDKVxuICByZXR1cm4gZGVzdDtcbn07XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXI7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIGlzRW5jb2RpbmcgPSBCdWZmZXIuaXNFbmNvZGluZyB8fCBmdW5jdGlvbiAoZW5jb2RpbmcpIHtcbiAgZW5jb2RpbmcgPSAnJyArIGVuY29kaW5nO1xuICBzd2l0Y2ggKGVuY29kaW5nICYmIGVuY29kaW5nLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOmNhc2UgJ3V0ZjgnOmNhc2UgJ3V0Zi04JzpjYXNlICdhc2NpaSc6Y2FzZSAnYmluYXJ5JzpjYXNlICdiYXNlNjQnOmNhc2UgJ3VjczInOmNhc2UgJ3Vjcy0yJzpjYXNlICd1dGYxNmxlJzpjYXNlICd1dGYtMTZsZSc6Y2FzZSAncmF3JzpcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9ub3JtYWxpemVFbmNvZGluZyhlbmMpIHtcbiAgaWYgKCFlbmMpIHJldHVybiAndXRmOCc7XG4gIHZhciByZXRyaWVkO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jKSB7XG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuICd1dGY4JztcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiAndXRmMTZsZSc7XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuICdsYXRpbjEnO1xuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBlbmM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAocmV0cmllZCkgcmV0dXJuOyAvLyB1bmRlZmluZWRcbiAgICAgICAgZW5jID0gKCcnICsgZW5jKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXRyaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIERvIG5vdCBjYWNoZSBgQnVmZmVyLmlzRW5jb2RpbmdgIHdoZW4gY2hlY2tpbmcgZW5jb2RpbmcgbmFtZXMgYXMgc29tZVxuLy8gbW9kdWxlcyBtb25rZXktcGF0Y2ggaXQgdG8gc3VwcG9ydCBhZGRpdGlvbmFsIGVuY29kaW5nc1xuZnVuY3Rpb24gbm9ybWFsaXplRW5jb2RpbmcoZW5jKSB7XG4gIHZhciBuZW5jID0gX25vcm1hbGl6ZUVuY29kaW5nKGVuYyk7XG4gIGlmICh0eXBlb2YgbmVuYyAhPT0gJ3N0cmluZycgJiYgKEJ1ZmZlci5pc0VuY29kaW5nID09PSBpc0VuY29kaW5nIHx8ICFpc0VuY29kaW5nKGVuYykpKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmMpO1xuICByZXR1cm4gbmVuYyB8fCBlbmM7XG59XG5cbi8vIFN0cmluZ0RlY29kZXIgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciBlZmZpY2llbnRseSBzcGxpdHRpbmcgYSBzZXJpZXMgb2Zcbi8vIGJ1ZmZlcnMgaW50byBhIHNlcmllcyBvZiBKUyBzdHJpbmdzIHdpdGhvdXQgYnJlYWtpbmcgYXBhcnQgbXVsdGktYnl0ZVxuLy8gY2hhcmFjdGVycy5cbmV4cG9ydHMuU3RyaW5nRGVjb2RlciA9IFN0cmluZ0RlY29kZXI7XG5mdW5jdGlvbiBTdHJpbmdEZWNvZGVyKGVuY29kaW5nKSB7XG4gIHRoaXMuZW5jb2RpbmcgPSBub3JtYWxpemVFbmNvZGluZyhlbmNvZGluZyk7XG4gIHZhciBuYjtcbiAgc3dpdGNoICh0aGlzLmVuY29kaW5nKSB7XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICB0aGlzLnRleHQgPSB1dGYxNlRleHQ7XG4gICAgICB0aGlzLmVuZCA9IHV0ZjE2RW5kO1xuICAgICAgbmIgPSA0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndXRmOCc6XG4gICAgICB0aGlzLmZpbGxMYXN0ID0gdXRmOEZpbGxMYXN0O1xuICAgICAgbmIgPSA0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIHRoaXMudGV4dCA9IGJhc2U2NFRleHQ7XG4gICAgICB0aGlzLmVuZCA9IGJhc2U2NEVuZDtcbiAgICAgIG5iID0gMztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aGlzLndyaXRlID0gc2ltcGxlV3JpdGU7XG4gICAgICB0aGlzLmVuZCA9IHNpbXBsZUVuZDtcbiAgICAgIHJldHVybjtcbiAgfVxuICB0aGlzLmxhc3ROZWVkID0gMDtcbiAgdGhpcy5sYXN0VG90YWwgPSAwO1xuICB0aGlzLmxhc3RDaGFyID0gQnVmZmVyLmFsbG9jVW5zYWZlKG5iKTtcbn1cblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIGlmIChidWYubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIHZhciByO1xuICB2YXIgaTtcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHtcbiAgICByID0gdGhpcy5maWxsTGFzdChidWYpO1xuICAgIGlmIChyID09PSB1bmRlZmluZWQpIHJldHVybiAnJztcbiAgICBpID0gdGhpcy5sYXN0TmVlZDtcbiAgICB0aGlzLmxhc3ROZWVkID0gMDtcbiAgfSBlbHNlIHtcbiAgICBpID0gMDtcbiAgfVxuICBpZiAoaSA8IGJ1Zi5sZW5ndGgpIHJldHVybiByID8gciArIHRoaXMudGV4dChidWYsIGkpIDogdGhpcy50ZXh0KGJ1ZiwgaSk7XG4gIHJldHVybiByIHx8ICcnO1xufTtcblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gdXRmOEVuZDtcblxuLy8gUmV0dXJucyBvbmx5IGNvbXBsZXRlIGNoYXJhY3RlcnMgaW4gYSBCdWZmZXJcblN0cmluZ0RlY29kZXIucHJvdG90eXBlLnRleHQgPSB1dGY4VGV4dDtcblxuLy8gQXR0ZW1wdHMgdG8gY29tcGxldGUgYSBwYXJ0aWFsIG5vbi1VVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlclxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZmlsbExhc3QgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIGlmICh0aGlzLmxhc3ROZWVkIDw9IGJ1Zi5sZW5ndGgpIHtcbiAgICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIHRoaXMubGFzdE5lZWQpO1xuICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTtcbiAgfVxuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIGJ1Zi5sZW5ndGgpO1xuICB0aGlzLmxhc3ROZWVkIC09IGJ1Zi5sZW5ndGg7XG59O1xuXG4vLyBDaGVja3MgdGhlIHR5cGUgb2YgYSBVVEYtOCBieXRlLCB3aGV0aGVyIGl0J3MgQVNDSUksIGEgbGVhZGluZyBieXRlLCBvciBhXG4vLyBjb250aW51YXRpb24gYnl0ZS4gSWYgYW4gaW52YWxpZCBieXRlIGlzIGRldGVjdGVkLCAtMiBpcyByZXR1cm5lZC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0J5dGUoYnl0ZSkge1xuICBpZiAoYnl0ZSA8PSAweDdGKSByZXR1cm4gMDtlbHNlIGlmIChieXRlID4+IDUgPT09IDB4MDYpIHJldHVybiAyO2Vsc2UgaWYgKGJ5dGUgPj4gNCA9PT0gMHgwRSkgcmV0dXJuIDM7ZWxzZSBpZiAoYnl0ZSA+PiAzID09PSAweDFFKSByZXR1cm4gNDtcbiAgcmV0dXJuIGJ5dGUgPj4gNiA9PT0gMHgwMiA/IC0xIDogLTI7XG59XG5cbi8vIENoZWNrcyBhdCBtb3N0IDMgYnl0ZXMgYXQgdGhlIGVuZCBvZiBhIEJ1ZmZlciBpbiBvcmRlciB0byBkZXRlY3QgYW5cbi8vIGluY29tcGxldGUgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIuIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgKDIsIDMsIG9yIDQpXG4vLyBuZWVkZWQgdG8gY29tcGxldGUgdGhlIFVURi04IGNoYXJhY3RlciAoaWYgYXBwbGljYWJsZSkgYXJlIHJldHVybmVkLlxuZnVuY3Rpb24gdXRmOENoZWNrSW5jb21wbGV0ZShzZWxmLCBidWYsIGkpIHtcbiAgdmFyIGogPSBidWYubGVuZ3RoIC0gMTtcbiAgaWYgKGogPCBpKSByZXR1cm4gMDtcbiAgdmFyIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHNlbGYubGFzdE5lZWQgPSBuYiAtIDE7XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIGlmICgtLWogPCBpIHx8IG5iID09PSAtMikgcmV0dXJuIDA7XG4gIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHNlbGYubGFzdE5lZWQgPSBuYiAtIDI7XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIGlmICgtLWogPCBpIHx8IG5iID09PSAtMikgcmV0dXJuIDA7XG4gIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHtcbiAgICAgIGlmIChuYiA9PT0gMikgbmIgPSAwO2Vsc2Ugc2VsZi5sYXN0TmVlZCA9IG5iIC0gMztcbiAgICB9XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vLyBWYWxpZGF0ZXMgYXMgbWFueSBjb250aW51YXRpb24gYnl0ZXMgZm9yIGEgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIgYXNcbi8vIG5lZWRlZCBvciBhcmUgYXZhaWxhYmxlLiBJZiB3ZSBzZWUgYSBub24tY29udGludWF0aW9uIGJ5dGUgd2hlcmUgd2UgZXhwZWN0XG4vLyBvbmUsIHdlIFwicmVwbGFjZVwiIHRoZSB2YWxpZGF0ZWQgY29udGludWF0aW9uIGJ5dGVzIHdlJ3ZlIHNlZW4gc28gZmFyIHdpdGhcbi8vIGEgc2luZ2xlIFVURi04IHJlcGxhY2VtZW50IGNoYXJhY3RlciAoJ1xcdWZmZmQnKSwgdG8gbWF0Y2ggdjgncyBVVEYtOCBkZWNvZGluZ1xuLy8gYmVoYXZpb3IuIFRoZSBjb250aW51YXRpb24gYnl0ZSBjaGVjayBpcyBpbmNsdWRlZCB0aHJlZSB0aW1lcyBpbiB0aGUgY2FzZVxuLy8gd2hlcmUgYWxsIG9mIHRoZSBjb250aW51YXRpb24gYnl0ZXMgZm9yIGEgY2hhcmFjdGVyIGV4aXN0IGluIHRoZSBzYW1lIGJ1ZmZlci5cbi8vIEl0IGlzIGFsc28gZG9uZSB0aGlzIHdheSBhcyBhIHNsaWdodCBwZXJmb3JtYW5jZSBpbmNyZWFzZSBpbnN0ZWFkIG9mIHVzaW5nIGFcbi8vIGxvb3AuXG5mdW5jdGlvbiB1dGY4Q2hlY2tFeHRyYUJ5dGVzKHNlbGYsIGJ1ZiwgcCkge1xuICBpZiAoKGJ1ZlswXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgc2VsZi5sYXN0TmVlZCA9IDA7XG4gICAgcmV0dXJuICdcXHVmZmZkJztcbiAgfVxuICBpZiAoc2VsZi5sYXN0TmVlZCA+IDEgJiYgYnVmLmxlbmd0aCA+IDEpIHtcbiAgICBpZiAoKGJ1ZlsxXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgICBzZWxmLmxhc3ROZWVkID0gMTtcbiAgICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gICAgfVxuICAgIGlmIChzZWxmLmxhc3ROZWVkID4gMiAmJiBidWYubGVuZ3RoID4gMikge1xuICAgICAgaWYgKChidWZbMl0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgICAgICBzZWxmLmxhc3ROZWVkID0gMjtcbiAgICAgICAgcmV0dXJuICdcXHVmZmZkJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gQXR0ZW1wdHMgdG8gY29tcGxldGUgYSBtdWx0aS1ieXRlIFVURi04IGNoYXJhY3RlciB1c2luZyBieXRlcyBmcm9tIGEgQnVmZmVyLlxuZnVuY3Rpb24gdXRmOEZpbGxMYXN0KGJ1Zikge1xuICB2YXIgcCA9IHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZDtcbiAgdmFyIHIgPSB1dGY4Q2hlY2tFeHRyYUJ5dGVzKHRoaXMsIGJ1ZiwgcCk7XG4gIGlmIChyICE9PSB1bmRlZmluZWQpIHJldHVybiByO1xuICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7XG4gICAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgcCwgMCwgdGhpcy5sYXN0TmVlZCk7XG4gICAgcmV0dXJuIHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywgMCwgdGhpcy5sYXN0VG90YWwpO1xuICB9XG4gIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHAsIDAsIGJ1Zi5sZW5ndGgpO1xuICB0aGlzLmxhc3ROZWVkIC09IGJ1Zi5sZW5ndGg7XG59XG5cbi8vIFJldHVybnMgYWxsIGNvbXBsZXRlIFVURi04IGNoYXJhY3RlcnMgaW4gYSBCdWZmZXIuIElmIHRoZSBCdWZmZXIgZW5kZWQgb24gYVxuLy8gcGFydGlhbCBjaGFyYWN0ZXIsIHRoZSBjaGFyYWN0ZXIncyBieXRlcyBhcmUgYnVmZmVyZWQgdW50aWwgdGhlIHJlcXVpcmVkXG4vLyBudW1iZXIgb2YgYnl0ZXMgYXJlIGF2YWlsYWJsZS5cbmZ1bmN0aW9uIHV0ZjhUZXh0KGJ1ZiwgaSkge1xuICB2YXIgdG90YWwgPSB1dGY4Q2hlY2tJbmNvbXBsZXRlKHRoaXMsIGJ1ZiwgaSk7XG4gIGlmICghdGhpcy5sYXN0TmVlZCkgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmOCcsIGkpO1xuICB0aGlzLmxhc3RUb3RhbCA9IHRvdGFsO1xuICB2YXIgZW5kID0gYnVmLmxlbmd0aCAtICh0b3RhbCAtIHRoaXMubGFzdE5lZWQpO1xuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCAwLCBlbmQpO1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGY4JywgaSwgZW5kKTtcbn1cblxuLy8gRm9yIFVURi04LCBhIHJlcGxhY2VtZW50IGNoYXJhY3RlciBpcyBhZGRlZCB3aGVuIGVuZGluZyBvbiBhIHBhcnRpYWxcbi8vIGNoYXJhY3Rlci5cbmZ1bmN0aW9uIHV0ZjhFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHJldHVybiByICsgJ1xcdWZmZmQnO1xuICByZXR1cm4gcjtcbn1cblxuLy8gVVRGLTE2TEUgdHlwaWNhbGx5IG5lZWRzIHR3byBieXRlcyBwZXIgY2hhcmFjdGVyLCBidXQgZXZlbiBpZiB3ZSBoYXZlIGFuIGV2ZW5cbi8vIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUsIHdlIG5lZWQgdG8gY2hlY2sgaWYgd2UgZW5kIG9uIGEgbGVhZGluZy9oaWdoXG4vLyBzdXJyb2dhdGUuIEluIHRoYXQgY2FzZSwgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgbmV4dCB0d28gYnl0ZXMgaW4gb3JkZXIgdG9cbi8vIGRlY29kZSB0aGUgbGFzdCBjaGFyYWN0ZXIgcHJvcGVybHkuXG5mdW5jdGlvbiB1dGYxNlRleHQoYnVmLCBpKSB7XG4gIGlmICgoYnVmLmxlbmd0aCAtIGkpICUgMiA9PT0gMCkge1xuICAgIHZhciByID0gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJywgaSk7XG4gICAgaWYgKHIpIHtcbiAgICAgIHZhciBjID0gci5jaGFyQ29kZUF0KHIubGVuZ3RoIC0gMSk7XG4gICAgICBpZiAoYyA+PSAweEQ4MDAgJiYgYyA8PSAweERCRkYpIHtcbiAgICAgICAgdGhpcy5sYXN0TmVlZCA9IDI7XG4gICAgICAgIHRoaXMubGFzdFRvdGFsID0gNDtcbiAgICAgICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMl07XG4gICAgICAgIHRoaXMubGFzdENoYXJbMV0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICAgICAgICByZXR1cm4gci5zbGljZSgwLCAtMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG4gIHRoaXMubGFzdE5lZWQgPSAxO1xuICB0aGlzLmxhc3RUb3RhbCA9IDI7XG4gIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJywgaSwgYnVmLmxlbmd0aCAtIDEpO1xufVxuXG4vLyBGb3IgVVRGLTE2TEUgd2UgZG8gbm90IGV4cGxpY2l0bHkgYXBwZW5kIHNwZWNpYWwgcmVwbGFjZW1lbnQgY2hhcmFjdGVycyBpZiB3ZVxuLy8gZW5kIG9uIGEgcGFydGlhbCBjaGFyYWN0ZXIsIHdlIHNpbXBseSBsZXQgdjggaGFuZGxlIHRoYXQuXG5mdW5jdGlvbiB1dGYxNkVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkge1xuICAgIHZhciBlbmQgPSB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQ7XG4gICAgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCd1dGYxNmxlJywgMCwgZW5kKTtcbiAgfVxuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gYmFzZTY0VGV4dChidWYsIGkpIHtcbiAgdmFyIG4gPSAoYnVmLmxlbmd0aCAtIGkpICUgMztcbiAgaWYgKG4gPT09IDApIHJldHVybiBidWYudG9TdHJpbmcoJ2Jhc2U2NCcsIGkpO1xuICB0aGlzLmxhc3ROZWVkID0gMyAtIG47XG4gIHRoaXMubGFzdFRvdGFsID0gMztcbiAgaWYgKG4gPT09IDEpIHtcbiAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAyXTtcbiAgICB0aGlzLmxhc3RDaGFyWzFdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgfVxuICByZXR1cm4gYnVmLnRvU3RyaW5nKCdiYXNlNjQnLCBpLCBidWYubGVuZ3RoIC0gbik7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NEVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCdiYXNlNjQnLCAwLCAzIC0gdGhpcy5sYXN0TmVlZCk7XG4gIHJldHVybiByO1xufVxuXG4vLyBQYXNzIGJ5dGVzIG9uIHRocm91Z2ggZm9yIHNpbmdsZS1ieXRlIGVuY29kaW5ncyAoZS5nLiBhc2NpaSwgbGF0aW4xLCBoZXgpXG5mdW5jdGlvbiBzaW1wbGVXcml0ZShidWYpIHtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZyh0aGlzLmVuY29kaW5nKTtcbn1cblxuZnVuY3Rpb24gc2ltcGxlRW5kKGJ1Zikge1xuICByZXR1cm4gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbn0iLCIvKlxuICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlIGNvbnRyaWJ1dG9yXG4gKiBsaWNlbnNlIGFncmVlbWVudHM7IGFuZCB0byBZb3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gXCJcbiAqL1xuLyogV3JpdHRlbiBieSBTY29wZXZpc2lvIEFHIDIwMjEgKi9cblxuLyogVGhlIGxpc3Qgb2YgY2VydGljYXRlcyB0aGF0IGFyZSB0cnVzdHdvcnRoeSBmb3IgdmFsaWRhdGlvbi5cbiAqIFxuICogVGhlIGxpc3QgaXMgYWNjZXNzZWQgdmlhIHRoaXMgc2luZ2xldG9uIGNsYXNzIGFuZCBvcmlnaW5hdGVzXG4gKiBmcm9tIFxuICogIGh0dHBzOi8vZGUuZHNjZy51YmlyY2guY29tL3RydXN0TGlzdC9EU0MvXG4gKi9cblxuaW1wb3J0IGRhdGEgZnJvbSAnLi9jZXJ0cy5qc29uJ1xuXG5cbi8qIENlcnRpZmljYXRlIGluZm9ybWF0aW9uLiBUaGlzIGluZm9ybWF0aW5vIGlkZW50aWZpZXMgdGhlIGNlcnRpZmljYXRlXG4gKiB0aGF0IGhhcyB2YWxpZGF0ZWQgdGhlIGdpdmVuIFFSLUNvZGUuIFRoZSBjZXJ0aWZpY2F0ZSBpcyBhIFg1MDkgXG4gKiBzdGFuZGFyZCBjZXJ0aWZpY2F0ZSwgaG93ZXZlciB0aGlzIGRhdGFzdHJ1Y3R1cmUgcHJvdmlkZXMgY29udmVuaWVudCBmaWVsZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2VydEluZm8ge1xuICAgIHN1YmplY3Q6IHN0cmluZzsgICAgICAgLy8gc3ViamVjdCBvZiB0aGUgY2VydGlmaWNhdGVcbiAgICBpc3N1ZXI6IHN0cmluZzsgICAgICAgIC8vIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB0aGUgaXNzdWVyIG9mIHRoZSBjZXJ0aWZpY3RlXG4gICAgbm90YmVmb3JlOiBudW1iZXI7ICAgICAvLyBkYXRlIGJlZm9yZSB3aGljaCB0aGUgY2VydGlmaWNhdGUgc2hvdWxkIGJlIGNvbnNpZGVyZWQgaW52YWxpZFxuICAgIG5vdGFmdGVyOiBudW1iZXI7ICAgICAgLy8gZGF0ZSBhZnRlciB3aGljaCB0aGUgY2VydGlmaWNhdGUgc2hvdWxkIGJlIGNvbnNpZGVyZWQgaW52YWxpZFxuICAgIHB1YmtleTogc3RyaW5nOyAgICAgICAgLy8gdGhlIHB1YmxpY2tleSBvZiB0aGUgY2VydGlmaWNhdGUgaW4gYSB3YXkgdGhhdCB0aGUgYnJvd3Nlci1jcnlwdG8gYXBpIGNhbiBwcm9jZXNzIGl0XG4gICAgcmF3WDUwOWRhdGE6IHN0cmluZzsgICAvLyB0aGUgWDUwOSBjZXJ0aWZpY2F0ZSBpbiBiaW5hcnkgREVSIGZvcm1hdCwgZW5jb2RlZCBhcyBiYXNlNjRcbiAgICAvLyB0aGUgcmF3WDUwOSBzdHJpbmcgY29udGFpbnMgYWxsIHRoZSBvdGhlciBmaWVsZHMsIGJ1dCBuZWVkcyB0byBiZSBkZWNvZGVkIHRvIGFjY2VzcyB0aGF0IGluZm9ybWF0aW9uXG4gICAgLy8gb25lIHdheSB0byBkbyB0aGF0IGlzIHVzaW5nICBvcGVuc3NsIC1pbmZvcm0gREVSIC10ZXh0IFxufVxuXG5cblxuZXhwb3J0IGNsYXNzIFRydXN0bGlzdCB7XG4gICAgc3RhdGljIGluc3RhbmNlID0gbmV3IFRydXN0bGlzdCgpXG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVkID0gZmFsc2VcbiAgICBwcml2YXRlIGNlcnRJbmZvczogQ2VydEluZm9bXSA9IFtdXG5cbiAgICBhc3luYyBnZXRDZXJ0SW5mb3MoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWVcbiAgICAgICAgICAgIGNvbnN0IGNlcnRzID0gZGF0YS5jZXJ0cyBhcyBDZXJ0SW5mb1tdXG4gICAgICAgICAgICB0aGlzLmNlcnRJbmZvcy5wdXNoKC4uLmNlcnRzKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNlcnRJbmZvc1xuICAgIH1cblxuXG59XG5cbiIsIi8qXG4gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUgY29udHJpYnV0b3JcbiAqIGxpY2Vuc2UgYWdyZWVtZW50czsgYW5kIHRvIFlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBcIlxuICovXG4vKiBXcml0dGVuIGJ5IFNjb3BldmlzaW8gQUcgMjAyMSAqL1xuXG4vKiBwYXJzZSB0aGUgY29udGVudHMgb2YgYSBjYm9yL2N3dC96bGliL2Jhc2U0NSBkZ2MgXG4gKiB0aGlzIGZpbGUgY29udGFpbnMgZXZlcnl0aGluZyBuZWVkZWQgaW50ZXJuYWxseSBmb3IgdmFsaWRhdGlvblxuICovXG5cbmltcG9ydCAqIGFzIGNib3IgZnJvbSAnY2Jvci13ZWInXG5pbXBvcnQgYmFzZTQ1IGZyb20gJ2Jhc2U0NSdcbmltcG9ydCB6bGliIGZyb20gJ3psaWInXG5pbXBvcnQgeyBCdWZmZXJ9IGZyb20gJ2J1ZmZlcidcblxuXG5cbmV4cG9ydCBjbGFzcyBDb3NlMSB7XG5cbiAgICBwcm90ZWN0ZWRfOiBCdWZmZXJcbiAgICB1bnByb3RlY3RlZDogTWFwPGFueSwgYW55PlxuICAgIHBheWxvYWQ6IEJ1ZmZlclxuICAgIHNpZ25hdHVyZXM6IEJ1ZmZlclxuXG4gICAgc3RhdGljIGFzeW5jIGRlY29kZUNib3JBc3luYyhkYXRhOiBCdWZmZXIpOiBQcm9taXNlPG51bGx8YW55PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjYm9yLmRlY29kZUZpcnN0KGRhdGEsIGZ1bmN0aW9uIChlcnJvcjogYW55LCBvYmo6IGFueSkge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoXCJmYWlsZWQgY2JvcjogXCIgKyBlcnJvcilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvYmopXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyB2YWx1ZU9mKGVuY29kZWREYXRhOiBzdHJpbmcpOiBQcm9taXNlPENvc2UxIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKGVuY29kZWREYXRhLmluZGV4T2YoXCJIQzE6XCIpID09IDApIHtcbiAgICAgICAgICAgICAgICBlbmNvZGVkRGF0YSA9IGVuY29kZWREYXRhLnN1YnN0cmluZyg0KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkRGF0YSA9IGJhc2U0NS5kZWNvZGUoZW5jb2RlZERhdGEpXG4gICAgICAgICAgICB6bGliLmluZmxhdGUoZGVjb2RlZERhdGEsIGZ1bmN0aW9uIChlcnJvcjogYW55LCBidWY6IGFueSkge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoXCJmYWlsZWQgY29zZTE6IFwiICsgZXJyb3IpXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYm9yLmRlY29kZUZpcnN0KGJ1ZiwgZnVuY3Rpb24gKGVycm9yOiBhbnksIG9iajogYW55KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KFwiZmFpbGVkIGNvc2UxOiBcIiArIGVycm9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IG9ialxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm90ZWN0ZWRfID0gdC52YWx1ZVswXVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnByb3RlY3RlZCA9IHQudmFsdWVbMV1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IHQudmFsdWVbMl1cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlcyA9IHQudmFsdWVbM11cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29zZTEgPSBuZXcgQ29zZTEocHJvdGVjdGVkXywgdW5wcm90ZWN0ZWQsIHBheWxvYWQsIHNpZ25hdHVyZXMpXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoY29zZTEpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkXzogQnVmZmVyLCB1bnByb3RlY3RlZDogTWFwPGFueSwgYW55PiwgcGF5bG9hZDogQnVmZmVyLCBzaWduYXR1cmVzOiBCdWZmZXIpIHtcbiAgICAgICAgdGhpcy5wcm90ZWN0ZWRfID0gcHJvdGVjdGVkX1xuICAgICAgICB0aGlzLnVucHJvdGVjdGVkID0gdW5wcm90ZWN0ZWRcbiAgICAgICAgdGhpcy5wYXlsb2FkID0gcGF5bG9hZFxuICAgICAgICB0aGlzLnNpZ25hdHVyZXMgPSBzaWduYXR1cmVzXG4gICAgfVxuXG5cbiAgICBtYWtlRGF0YUZvclZlcmlmaWNhdGlvbigpIHtcbiAgICAgICAgLy8gdGhpcyBhcHByb2FjaCBzaG91bGQgd29yayBidXQgZG9lc24ndFxuICAgICAgICAvKlxuICAgICAgICBjb25zdCByYXcgPSBjYm9yLmVuY29kZShcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBcIlNpZ25hdHVyZTFcIiwgXG4gICAgICAgICAgICAgICAgY29zZTEucHJvdGVjdGVkXywgXG4gICAgICAgICAgICAgICAgLy9VaW50OEFycmF5LmZyb20oW10pLCBcbiAgICAgICAgICAgICAgICA2NCxcbiAgICAgICAgICAgICAgICA2NCxcbiAgICAgICAgICAgICAgICBjb3NlMS5wYXlsb2FkLFxuICAgICAgICAgICAgXVxuICAgICAgICApIGFzIFVpbnQ4QXJyYXlcbiAgICAgICAgKi9cblxuICAgICAgICAvLyBzaW5jZSB0aGUgYWJvdmUgZG9lc24ndCB3b3JrLCB3ZSBkbyB0aGUgY2JvciBzZW1pLW1hbnVhbGx5XG4gICAgICAgIC8vIHdlIG1ha2UgMiBjaHVua3MsIGluc2VydCBhIDY0IChlbXB0eSB0YWcpIGFuZCB0aGVuIGFzc2lnbiAweDg0XG4gICAgICAgIC8vIHRvIG1hcmsgdGhlIHN0cnVjdHVyZSBhcyBhIDQgZW50cnkgY2JvclxuICAgICAgICBjb25zdCByYXcxID0gY2Jvci5lbmNvZGUoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgXCJTaWduYXR1cmUxXCIsIFxuICAgICAgICAgICAgICAgIHRoaXMucHJvdGVjdGVkXywgXG4gICAgICAgICAgICBdXG4gICAgICAgICkgYXMgVWludDhBcnJheVxuICAgICAgICBjb25zdCByYXcyID0gY2Jvci5lbmNvZGUoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgdGhpcy5wYXlsb2FkLFxuICAgICAgICAgICAgXVxuICAgICAgICApIGFzIFVpbnQ4QXJyYXlcbiAgICAgICAgY29uc3QgcmF3ID0gbmV3IFVpbnQ4QXJyYXkocmF3MS5sZW5ndGggKyByYXcyLmxlbmd0aClcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSByYXcxLmxlbmd0aDsgaSA8IG47IGkrKykgcmF3W2ldID0gcmF3MVtpXVxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbiA9IHJhdzIubGVuZ3RoOyBpIDwgbjsgaSsrKSByYXdbcmF3MS5sZW5ndGggKyBpXSA9IHJhdzJbaV1cbiAgICAgICAgcmF3W3JhdzEubGVuZ3RoXSA9IDY0IC8vIGVtcHR5IHNsb3RcbiAgICAgICAgcmF3WzBdID0gMHg4NCAvLyBhcnJheSBvZiBsZW5ndGggNFxuICAgICAgICByZXR1cm4gcmF3XG4gICAgfVxuXG4gICAgLy8gc21hbGwgYXNuMSB1dGlsaXR5XG4gICAgZW5jb2RlZFVuc2lnbmVkSW50ZWdlcihpOiBVaW50OEFycmF5KSAge1xuICAgICAgICBsZXQgcGFkID0gMFxuICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgICAgd2hpbGUgKG9mZnNldCA8IGkubGVuZ3RoICYmIGlbb2Zmc2V0XSA9PSAwKSB7XG4gICAgICAgICAgICBvZmZzZXQrK1xuICAgICAgICB9XG4gICAgICAgIGlmIChvZmZzZXQgPT0gaS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShbIDB4MDIsIDB4MDEsIDB4MDAgXSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGlbb2Zmc2V0XSAmIDB4ODApICE9IDApIHtcbiAgICAgICAgICAgIHBhZCsrXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVuZ3RoID0gaS5sZW5ndGggLSBvZmZzZXRcbiAgICAgICAgY29uc3QgZGVyID0gbmV3IFVpbnQ4QXJyYXkoMiArIGxlbmd0aCArIHBhZClcbiAgICAgICAgZGVyWzBdID0gMHgwMlxuICAgICAgICBkZXJbMV0gPSBsZW5ndGggKyBwYWRcbiAgICAgICAgZm9yIChsZXQgcHRyID0gMDsgcHRyIDwgbGVuZ3RoOyArK3B0cikge1xuICAgICAgICAgICAgZGVyWzIgKyBwYWQgKyBwdHJdID0gaVtvZmZzZXQgKyBwdHJdXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlclxuICAgIH1cblxuICAgIC8vIHNtYWxsIGFzbjEgdXRpbGl0eSAoQWdhaW4pXG4gICAgY29tcHV0ZUxlbmd0aCh4OiBudW1iZXIpICB7XG4gICAgICAgIGlmICh4IDw9IDEyNykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KFsgeCBdKVxuICAgICAgICB9IGVsc2UgaWYgKHggPCAyNTYpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShbMHg4MSwgeF0pXG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgXCJ0b28gbG9uZ1wiXG4gICAgfVxuXG4gICAgLy8gYXJyYXljb3B5XG4gICAgc3RhdGljIHNldChzcmM6IFVpbnQ4QXJyYXksIHNyY3BvczogbnVtYmVyLCBkZXN0OiBVaW50OEFycmF5LCBkZXN0cG9zOiBudW1iZXIsIG46IG51bWJlcikge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgZGVzdFtkZXN0cG9zICsgaV0gPSBzcmNbc3JjcG9zICsgaV1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGVuY29kZSB0aGUgY29zZTEgc2lnbmF0dXJlIGludG8gYXNuMSByL3MgdHlwZSBvZiBmb3JtYXQgKGluIGFzbjEpXG4gICAgZW5jb2RlU2lnbmF0dXJlKHJhdzogVWludDhBcnJheSkge1xuICAgICAgICBjb25zdCByID0gbmV3IFVpbnQ4QXJyYXkocmF3Lmxlbmd0aCAvIDIpXG4gICAgICAgIGNvbnN0IHMgPSBuZXcgVWludDhBcnJheShyYXcubGVuZ3RoIC8gMilcbiAgICAgICAgQ29zZTEuc2V0KHJhdywgMCwgciwgMCwgci5sZW5ndGgpXG4gICAgICAgIENvc2UxLnNldChyYXcsIHMubGVuZ3RoLCBzLCAwLCBzLmxlbmd0aClcbiAgICAgICAgY29uc3QgcmUgPSB0aGlzLmVuY29kZWRVbnNpZ25lZEludGVnZXIocilcbiAgICAgICAgY29uc3Qgc2UgPSB0aGlzLmVuY29kZWRVbnNpZ25lZEludGVnZXIocylcbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5jb21wdXRlTGVuZ3RoKHJlLmxlbmd0aCArIHNlLmxlbmd0aClcbiAgICAgICAgY29uc3Qgc2lnID0gbmV3IFVpbnQ4QXJyYXkoMSArIGxlbi5sZW5ndGggKyByZS5sZW5ndGggKyBzZS5sZW5ndGgpXG4gICAgICAgIHNpZ1swXSA9IDB4MzBcbiAgICAgICAgQ29zZTEuc2V0KGxlbiwgMCwgc2lnLCAxLCBsZW4ubGVuZ3RoKVxuICAgICAgICBDb3NlMS5zZXQocmUsIDAsIHNpZywgMSArIGxlbi5sZW5ndGgsIHJlLmxlbmd0aClcbiAgICAgICAgQ29zZTEuc2V0KHNlLCAwLCBzaWcsIDEgKyBsZW4ubGVuZ3RoICsgcmUubGVuZ3RoLCBzZS5sZW5ndGgpXG4gICAgICAgIHJldHVybiBzaWdcbiAgICB9XG4gICAgXG4gICAgXG5cbn1cblxuY29uc29sZS5sb2coXCJjb3NlMS50c1wiKVxuIiwiLypcbiAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZSBjb250cmlidXRvclxuICogbGljZW5zZSBhZ3JlZW1lbnRzOyBhbmQgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFwiXG4gKi9cbi8qIFdyaXR0ZW4gYnkgU2NvcGV2aXNpbyBBRyAyMDIxICovXG5cbi8qIFxuICogcGFyc2UgdGhlIGNvbnRlbnRzIG9mIGEgY2Jvci9jd3QvemxpYi9iYXNlNDUgZGdjXG4gKlxuICogU3BlY3MgY2FuIGJlIGZvdW5kIGF0OlxuICogaHR0cHM6Ly9naXRodWIuY29tL2Vobi1kY2MtZGV2ZWxvcG1lbnQvaGNlcnQtc3BlYy9ibG9iL21haW4vaGNlcnRfc3BlYy5tZFxuICovXG5cbmltcG9ydCAqIGFzIGNib3IgZnJvbSAnY2Jvci13ZWInXG5pbXBvcnQgYmFzZTQ1IGZyb20gJ2Jhc2U0NSdcbmltcG9ydCB6bGliIGZyb20gJ3psaWInXG5pbXBvcnQgeyBDZXJ0SW5mbywgVHJ1c3RsaXN0IH0gZnJvbSAnLi90cnVzdGxpc3QnXG5pbXBvcnQgeyBDb3NlMSB9IGZyb20gJy4vY29zZTEnXG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInXG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0by1icm93c2VyaWZ5J1xuXG5cbmNvbnN0IENsYWltS2V5SGNlcnQgPSAtMjYwXG5jb25zdCBDbGFpbUtleUV1RGdjVjEgPSAxXG5cbi8qXG4gKiBldWRnYyByZWNvcmRcbiAqXG4gKiBjb250YWlucyBhbiBhcnJheSBvZiB2YWNjaW5hdGlvbnNcbiAqIGFuZCB1c2VyIGluZm9ybWF0aW9uXG4gKiBcbiAqIGhvd2V2ZXIgaWYgdGhpcyBpcyB0byBiZSB0cmFuc3BvcnRlZCBpbnNpZGUgYSBxcmNvZGUsIG1vc3RcbiAqIGxpa2VseSB0aGVyZSB3aWxsIGJlIG9ubHkgb25lIHZhY2NpbmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXVEZ2NDZXJ0IHtcbiAgICBcInZcIjogRXVEZ2NWYWNjaW5jYXRpb25bXTsgICAgLy8gYW4gYXJyYXkgb2YgdmFjY2luYXRpb25zLCBwcm9iYWJseSBqdXN0IDEgcmlnaHQgbm93XG4gICAgXCJkb2JcIjogc3RyaW5nOyAgICAgICAgICAgICAgIC8vIGRhdGUgb2YgYmlydGggXCIxOTcwLTAxLTMxXCIsXG4gICAgXCJuYW1cIjoge1xuICAgICAgICBcImZuXCI6IHN0cmluZzsgICAgICAgICAgICAvLyBmYW1pbGl5IG5hbWVcbiAgICAgICAgXCJnblwiOiBzdHJpbmc7ICAgICAgICAgICAgLy8gZmlyc3RuYW1lXG4gICAgICAgIFwiZm50XCI6IHN0cmluZzsgICAgICAgICAgIC8vIGZuIGluIGNhcHMgYW5kIHdpdGhvdXQgVW1sYXV0cyBcbiAgICAgICAgXCJnbnRcIjogc3RyaW5nOyAgICAgICAgICAgLy8gZ24gaW4gY2FwcyBhbmQgd2l0aG91dCBVbWxhdXRzXG4gICAgfTtcbiAgICBcInZlclwiOiBzdHJpbmc7ICAvLyBcIjEuMC4wXCIgP1xufVxuXG4vKlxuICogZXVkZ2MgdmFjY2luYXRpb24gcmVjb3JkXG4gKlxuICogZnVsbCBpbW11bml6YXRpb24gaXMgZ2l2ZW4gd2hlbiB7IGRuID09IHNkIH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdURnY1ZhY2NpbmNhdGlvbiB7XG4gICAgXCJjaVwiOiBzdHJpbmc7ICAvLyBcIlVSTjpVVkNJOjAxREUvLi4uLi5cIiAgVW5pcXVlIENlcnRpZmljYXRlIElkZW50aWZpZXI6IFVWQ0lcbiAgICBcImNvXCI6IHN0cmluZzsgIC8vIFwiREVcIiwgdmFjY2luYXRpb24gbnVtYmVyXG4gICAgXCJkblwiOiBudW1iZXI7ICAvLyAxLCAyIC4uLiBudW1iZXIgb2YgZG9zZVxuICAgIFwiZHRcIjogc3RyaW5nOyAgLy8gXCIyMDIxLTAyLTI4XCIsIGRhdGUgb2YgdmFjY2luYXRpb25cbiAgICBcImlzXCI6IHN0cmluZzsgIC8vIGVnIFwiUm9iZXJ0IEtvY2gtSW5zdGl0dXRcIiwgaXNzdWVyXG4gICAgXCJtYVwiOiBzdHJpbmc7ICAvLyBNYXJrZXRpbmcgQXV0aG9yaXphdGlvbiBIb2xkZXIgLSBpZiBubyBNQUggcHJlc2VudCwgdGhlbiBtYW51ZmFjdHVyZXJcbiAgICBcIm1wXCI6IHN0cmluZzsgIC8vIFZhY2NpbmUgbWVkaWNpbmFsIHByb2R1Y3RcbiAgICBcInNkXCI6IG51bWJlcjsgIC8vIFRvdGFsIFNlcmllcyBvZiBEb3Nlc1xuICAgIFwidGdcIjogc3RyaW5nOyAgLy8gRGlzZWFzZSBvciBhZ2VudCB0YXJnZXRlZFxuICAgIFwidnBcIjogc3RyaW5nOyAgLy8gVmFjY2luZSBvciBwcm9waHlsYXhpc1xufVxuXG5cbi8qXG4gKiBPYmplY3QgdGhhdCBjb250YWlucyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgdG8gdGhlIHZhbGlkYXRlIG1ldGhvZC5cbiAqXG4gKiBZb3UgY2FuIHBhc3MgaW4gYSBmaWx0ZXIgb24gd2hhdCBjZXJ0aWZpY2F0ZXMgdG8gdXNlXG4gKiBvciBhbiBleHBsaWNpdCBsaXN0IG9mIGNlcnRpZmljYXRlcy4gU2VlIGJlbG93IGZvciBhdmFpbGFibGUgb3B0aW9ucy5cbiAqXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbk9wdGlvbnMge1xuXG4gICAgLyogY2VydEZpbHRlcjogaXMgYW4gb3B0aW9uYWwgZmlsdGVyIHByZWRpY2F0ZSBmdW5jdGlvbi4gSXQgaXMgcGFzc2VkIGVhY2ggXG4gICAgICogY2VydEluZm8gYW5kIHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIGNlcnRpZmljYXRlcyB0aGF0IHNob3VsZCBiZSBza2lwcGVkXG4gICAgICogZHVyaW5nIHZhbGlkYXRpb24uIElmIHRoZSBjZXJ0RmlsdGVyIGlzIHVuZGVmaW5lZCBvciBudWxsLCB0aGVuIGFsbCBcbiAgICAgKiBjZXJ0cyB3aWxsIGJlIHVzZWQgZm9yIHZhbGlkYXRpb24uXG4gICAgICovXG4gICAgY2VydEZpbHRlcj86IChjZXJ0SW5mbzogQ2VydEluZm8pID0+IGJvb2xlYW47XG5cbiAgICAvKiBleHBsaWNpdENlcnRzOiBhbiBvcHRpb25hbCBhcnJheSBvZiBjZXJ0aWZpY2F0ZXMgdG8gdXNlIGZvciBcbiAgICAgKiB2YWxpZGF0aW9uLiB0aGlzIGFsbG93cyB0byBwYXNzIGluIG1vcmUgcmVjZW50IGNlcnRpZmljYXRlcyBvciBvdGhlclxuICAgICAqIGNlcnRpZmljYXRlcy4gXG4gICAgICogXG4gICAgICogUGxlYXNlIG5vdGUgdGhhdCBvbmUgY2FuIG9idGFpbiB3cm9uZyBhbmQgaW52YWxpZCghKVxuICAgICAqIHJlc3VsdHMgYnkgZG9pbmcgc28uIFRoZSByZXNwb25zaWJpbGl0eSB0byBvbmx5IGluZGljYXRlIHJlYWxseVxuICAgICAqIHZhbGlkIGNlcnRpZmljYXRlcyBhcyB2YWxpZCBpbiB5b3VyIHByb2R1Y3QgaXMgdXAgdG8geW91LiBcbiAgICAgKiBUaGlzIGlzIGFsc28gcG90ZW50aWFsbHkgdXNlZnVsbCBmb3IgZGVidWdnaW5nLlxuICAgICAqL1xuICAgIGV4cGxpY2l0Q2VydHM/OiBDZXJ0SW5mb1tdO1xufVxuXG5cbmV4cG9ydCBjbGFzcyBFdURnYyB7XG4gICAgICAgXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSBkYXRhIG9mIGEgZGlnaXRhbCB2YWNjaW5hdGlvbiBxcmNvZGUgYW5kIHJldHVybnMgYSBwcm9taXNlIFxuICAgICAqIFxuICAgICAqIEBwYXJhbSBlbmNvZGVkRGF0YSB0aGUgZGF0YSBpbnNpZGUgdGhlIHFyLWNvZGUuXG4gICAgICogQHJldHVybnMgYSBqYXZhc2NyaXAgc3RydWN0dXJlIHdpdGggdGhlIGNvbnRlbnRzIFxuICAgICAqL1xuICAgIHN0YXRpYyBhc3luYyBwYXJzZShlbmNvZGVkRGF0YTogc3RyaW5nKTogUHJvbWlzZTxFdURnY0NlcnQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmIChlbmNvZGVkRGF0YS5pbmRleE9mKFwiSEMxOlwiKSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgZW5jb2RlZERhdGEgPSBlbmNvZGVkRGF0YS5zdWJzdHJpbmcoNCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkRGF0YSA9IGJhc2U0NS5kZWNvZGUoZW5jb2RlZERhdGEpO1xuICAgICAgICAgICAgemxpYi5pbmZsYXRlKGRlY29kZWREYXRhLCBmdW5jdGlvbiAoZXJyb3I6IGFueSwgYnVmOiBhbnkpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKGJ1Zi50b1N0cmluZyhcImhleFwiKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2JvcldlYiA9IGNib3JcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjYm9yV2ViLmRlY29kZUZpcnN0KGJ1ZiwgZnVuY3Rpb24gKGVycm9yOiBhbnksIG9iajogYW55KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gb2JqXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjd3QgPSB0LnRvSlNPTigpLnZhbHVlWzJdXG4gICAgICAgICAgICAgICAgICAgICAgICBjYm9yLmRlY29kZUZpcnN0KGN3dCwgZnVuY3Rpb24gKGVycm9yOiBhbnksIG9iajogYW55KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQyID0gb2JqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGNlcnRSYXcgPSB0Mi5nZXQoQ2xhaW1LZXlIY2VydClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBldWRnYyA9IGhjZXJ0UmF3LmdldChDbGFpbUtleUV1RGdjVjEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZXVkZ2MsIG51bGwsIDQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZXVkZ2MpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pOyAgXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLypcbiAgICAgKiAuLi4gcGVyZm9ybSB0aGUgdmFsaWRhdGlvblxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgdGhlIGNlcnQgaXMgaW52YWxpZC5cbiAgICAgKiB0aGlzIGNhbiBiZSB0aGUgY2FzZSBpZiBcbiAgICAgKiBcbiAgICAgKiAxLiB0aGUgY2VydCBmYWxzZWx5IGNsYWltcyB0byBiZSBzaWduZWQgYnkgb25lIG9mIHRoZSBzaWduYXR1cmVzIGluIHRoZSBcbiAgICAgKiAgICB0cnVzdGxpc3QgXG4gICAgICogMi4gb3IgaWYgdGhlIGNlcnQgaXMgbm90IHNpZ25lZCBjb3JyZWN0bHkgYXQgYWxsXG4gICAgICogMy4gb3IgaWYgdGhlIGNlcnQgaXMgc2lnbmVkIGNvcnJlY3RseSBieSBzb21lIHVua25vd24gc2lnbmF0dXJlIFxuICAgICAqIFxuICAgICAqIGFsbCB0aHJlZSBjYXNlcyByZXN1bHQgaW4gYW4gaW52YWxpZCBjZXJ0aWZpY2F0ZVxuICAgICAqIFxuICAgICAqIHRoZSBzZWNvbmQgb3B0aW9uYWwgYXJndW1lbnQgY29udHJvbGxzIHNldmVyYWwgYXNwZWN0cyBvZiBob3cgdGhlIFxuICAgICAqIHZhbGlkYXRpb24gbWV0aG9kIHNob3VsZCB3b3JrLlxuICAgICAqICBcbiAgICAgKiBDZXJ0aWZpY2F0ZXMgdGhhdCBjYW5ub3QgYmUgaGFuZGxlZCBieSB0aGUgY2xpZW50LXNpZGUgYnJvd3NlciBjcnlwdG8gYXJlIGFsc28gc2tpcHBlZFxuICAgICAqIGFuZCBhIHdhcm5pbmcgbWVzc2FnZSBpcyBwcmludGVkIG9uIHRoZSBjb25zb2xlLiBcbiAgICAgKiBcbiAgICAgKi9cbiAgICBzdGF0aWMgYXN5bmMgdmFsaWRhdGUoZW5jb2RlZERhdGE6IHN0cmluZywgb3B0aW9ucz86IFZhbGlkYXRpb25PcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGNvc2UxID0gYXdhaXQgQ29zZTEudmFsdWVPZihlbmNvZGVkRGF0YSlcbiAgICAgICAgaWYgKCFjb3NlMSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByYXcgPSBjb3NlMS5tYWtlRGF0YUZvclZlcmlmaWNhdGlvbigpXG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IEJ1ZmZlci5mcm9tKGNvc2UxLmVuY29kZVNpZ25hdHVyZShjb3NlMS5zaWduYXR1cmVzKSkudG9TdHJpbmcoXCJoZXhcIilcbiAgICAgICAgdmFyIGNlcnRJbmZvcyA9IGF3YWl0IFRydXN0bGlzdC5pbnN0YW5jZS5nZXRDZXJ0SW5mb3MoKVxuICAgICAgICBpZiAob3B0aW9ucz8uZXhwbGljaXRDZXJ0cykge1xuICAgICAgICAgICAgY2VydEluZm9zID0gWy4uLm9wdGlvbnM/LmV4cGxpY2l0Q2VydHNdXG4gICAgICAgIH1cbiAgICAgICAgLy8gZmlsdGVyIGNlcnRzXG4gICAgICAgIGlmIChvcHRpb25zPy5jZXJ0RmlsdGVyKSB7XG4gICAgICAgICAgICBjb25zdCBvbGRDb3VudCA9IGNlcnRJbmZvcy5sZW5ndGhcbiAgICAgICAgICAgIGNlcnRJbmZvcyA9IGNlcnRJbmZvcy5maWx0ZXIob3B0aW9ucz8uY2VydEZpbHRlcilcbiAgICAgICAgICAgIGlmIChjZXJ0SW5mb3MubGVuZ3RoICE9IG9sZENvdW50KSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKFwiI1wiICsgKG9sZENvdW50IC0gY2VydEluZm9zLmxlbmd0aCkgKyBcIiBvZiBcIiArIG9sZENvdW50ICsgXCIgY2VydGlmY2F0ZXMgcmVtb3ZlZCBieSBmaWx0ZXJcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbiA9IGNlcnRJbmZvcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNlcnRJbmZvID0gY2VydEluZm9zW2ldXG4gICAgICAgICAgICAvLyBpZiB3ZSBydW4gaW50byBhbiBleGNlcHRpb24gb24gb25lIGNlcnRpbmZvLCBjb250aW51ZSB3aXRoIHRoZSBvdGhlcnNcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmVyaWZ5ID0gY3J5cHRvLmNyZWF0ZVZlcmlmeShcInNoYTI1NlwiKVxuICAgICAgICAgICAgICAgIHZlcmlmeS51cGRhdGUocmF3KVxuICAgICAgICAgICAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHZlcmlmeS52ZXJpZnkoY2VydEluZm8ucHVia2V5LCBzaWduYXR1cmUsIFwiaGV4XCIpXG4gICAgICAgICAgICAgICAgaWYgKHZlcmlmaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBmb3IgZGF0ZSAodmFsaWRpdHkgZGF0ZXMgb2YgeDUwOSBjZXJ0aWZpY2F0ZSlcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZVZhbGlkID0gbm93ID49IGNlcnRJbmZvLm5vdGJlZm9yZSAmJiBub3cgPD0gY2VydEluZm8ubm90YWZ0ZXJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWVWYWxpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNlcnRJbmZvXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwidW5hYmxlIHRvIGhhbmRsZSBjZXJ0IFwiICsgKGkgKyAxKSArIFwiIG9mIFwiICsgbiArIFwiOiBcIiArIGNlcnRJbmZvLnN1YmplY3QgKyBcIjogXCIgKyBlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IFwiTm90IG1hdGNoaW5nIGNlcnRpZmljYXRlIGZvdW5kXCJcbiAgICB9XG59XG5cblxuZXhwb3J0IGNvbnN0IEV1RGdjX3BhcnNlID0gRXVEZ2MucGFyc2U7XG5leHBvcnQgY29uc3QgRXVEZ2NfdmFsaWRhdGUgPSBFdURnYy52YWxpZGF0ZTtcblxuLy8gZGVmaW5lIGEgXCJnbG9iYWxcIiBtZXRob2QgaW4gdGhlIGJyb3dzZXJzIHdpbmRvdyBvYmplY3QgaWZmIHJ1bm5pbmdcbi8vIGluIGEgYnJvd3NlciBlbnZpcm9ubWVudFxuaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAod2luZG93IGFzIGFueSkuRXVEZ2NfcGFyc2UgPSBFdURnYy5wYXJzZTtcbiAgICAod2luZG93IGFzIGFueSkuRXVEZ2NfdmFsaWRhdGUgPSBFdURnYy52YWxpZGF0ZTtcbn1cblxuY29uc29sZS5sb2coXCJldWRnYy50c1wiKVxuIiwiLypcbiAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZSBjb250cmlidXRvclxuICogbGljZW5zZSBhZ3JlZW1lbnRzOyBhbmQgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFwiXG4gKi9cbi8qXG4gKiBXcml0dGVuIGJ5IFNjb3BldmlzaW8gQUcgMjAyMVxuICovXG5pbXBvcnQgXCIuL2V1ZGdjXCJcbmltcG9ydCBcIi4vY29zZTFcIlxuXG5jb25zb2xlLmxvZyhcIkVVREdDIGJ5IFNjb3BldmlzaW8gQUdcIikiLCJcbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBkZXByZWNhdGU7XG5cbi8qKlxuICogTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbiAqIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS5ub0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50aHJvd0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIHRocm93IGFuIEVycm9yIHdoZW4gaW52b2tlZC5cbiAqXG4gKiBJZiBgbG9jYWxTdG9yYWdlLnRyYWNlRGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gZGVwcmVjYXRlZCBmdW5jdGlvbnNcbiAqIHdpbGwgaW52b2tlIGBjb25zb2xlLnRyYWNlKClgIGluc3RlYWQgb2YgYGNvbnNvbGUuZXJyb3IoKWAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSB0aGUgZnVuY3Rpb24gdG8gZGVwcmVjYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gbXNnIC0gdGhlIHN0cmluZyB0byBwcmludCB0byB0aGUgY29uc29sZSB3aGVuIGBmbmAgaXMgaW52b2tlZFxuICogQHJldHVybnMge0Z1bmN0aW9ufSBhIG5ldyBcImRlcHJlY2F0ZWRcIiB2ZXJzaW9uIG9mIGBmbmBcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVwcmVjYXRlIChmbiwgbXNnKSB7XG4gIGlmIChjb25maWcoJ25vRGVwcmVjYXRpb24nKSkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgaWYgKGNvbmZpZygndGhyb3dEZXByZWNhdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChjb25maWcoJ3RyYWNlRGVwcmVjYXRpb24nKSkge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgIH1cbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGBsb2NhbFN0b3JhZ2VgIGZvciBib29sZWFuIHZhbHVlcyBmb3IgdGhlIGdpdmVuIGBuYW1lYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb25maWcgKG5hbWUpIHtcbiAgLy8gYWNjZXNzaW5nIGdsb2JhbC5sb2NhbFN0b3JhZ2UgY2FuIHRyaWdnZXIgYSBET01FeGNlcHRpb24gaW4gc2FuZGJveGVkIGlmcmFtZXNcbiAgdHJ5IHtcbiAgICBpZiAoIWdsb2JhbC5sb2NhbFN0b3JhZ2UpIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdmFsID0gZ2xvYmFsLmxvY2FsU3RvcmFnZVtuYW1lXTtcbiAgaWYgKG51bGwgPT0gdmFsKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBTdHJpbmcodmFsKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQnVmZmVyKGFyZykge1xuICByZXR1cm4gYXJnICYmIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnXG4gICAgJiYgdHlwZW9mIGFyZy5jb3B5ID09PSAnZnVuY3Rpb24nXG4gICAgJiYgdHlwZW9mIGFyZy5maWxsID09PSAnZnVuY3Rpb24nXG4gICAgJiYgdHlwZW9mIGFyZy5yZWFkVUludDggPT09ICdmdW5jdGlvbic7XG59IiwiLy8gQ3VycmVudGx5IGluIHN5bmMgd2l0aCBOb2RlLmpzIGxpYi9pbnRlcm5hbC91dGlsL3R5cGVzLmpzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvY29tbWl0LzExMmNjN2MyNzU1MTI1NGFhMmIxNzA5OGZiNzc0ODY3ZjA1ZWQwZDlcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBcmd1bWVudHNPYmplY3QgPSByZXF1aXJlKCdpcy1hcmd1bWVudHMnKTtcbnZhciBpc0dlbmVyYXRvckZ1bmN0aW9uID0gcmVxdWlyZSgnaXMtZ2VuZXJhdG9yLWZ1bmN0aW9uJyk7XG52YXIgd2hpY2hUeXBlZEFycmF5ID0gcmVxdWlyZSgnd2hpY2gtdHlwZWQtYXJyYXknKTtcbnZhciBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCdpcy10eXBlZC1hcnJheScpO1xuXG5mdW5jdGlvbiB1bmN1cnJ5VGhpcyhmKSB7XG4gIHJldHVybiBmLmNhbGwuYmluZChmKTtcbn1cblxudmFyIEJpZ0ludFN1cHBvcnRlZCA9IHR5cGVvZiBCaWdJbnQgIT09ICd1bmRlZmluZWQnO1xudmFyIFN5bWJvbFN1cHBvcnRlZCA9IHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnO1xuXG52YXIgT2JqZWN0VG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyhPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKTtcblxudmFyIG51bWJlclZhbHVlID0gdW5jdXJyeVRoaXMoTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mKTtcbnZhciBzdHJpbmdWYWx1ZSA9IHVuY3VycnlUaGlzKFN0cmluZy5wcm90b3R5cGUudmFsdWVPZik7XG52YXIgYm9vbGVhblZhbHVlID0gdW5jdXJyeVRoaXMoQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZik7XG5cbmlmIChCaWdJbnRTdXBwb3J0ZWQpIHtcbiAgdmFyIGJpZ0ludFZhbHVlID0gdW5jdXJyeVRoaXMoQmlnSW50LnByb3RvdHlwZS52YWx1ZU9mKTtcbn1cblxuaWYgKFN5bWJvbFN1cHBvcnRlZCkge1xuICB2YXIgc3ltYm9sVmFsdWUgPSB1bmN1cnJ5VGhpcyhTeW1ib2wucHJvdG90eXBlLnZhbHVlT2YpO1xufVxuXG5mdW5jdGlvbiBjaGVja0JveGVkUHJpbWl0aXZlKHZhbHVlLCBwcm90b3R5cGVWYWx1ZU9mKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgcHJvdG90eXBlVmFsdWVPZih2YWx1ZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2goZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnRzLmlzQXJndW1lbnRzT2JqZWN0ID0gaXNBcmd1bWVudHNPYmplY3Q7XG5leHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBpc0dlbmVyYXRvckZ1bmN0aW9uO1xuZXhwb3J0cy5pc1R5cGVkQXJyYXkgPSBpc1R5cGVkQXJyYXk7XG5cbi8vIFRha2VuIGZyb20gaGVyZSBhbmQgbW9kaWZpZWQgZm9yIGJldHRlciBicm93c2VyIHN1cHBvcnRcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvcC1pcy1wcm9taXNlL2Jsb2IvY2RhMzVhNTEzYmRhMDNmOTc3YWQ1Y2RlM2EwNzlkMjM3ZTgyZDdlZi9pbmRleC5qc1xuZnVuY3Rpb24gaXNQcm9taXNlKGlucHV0KSB7XG5cdHJldHVybiAoXG5cdFx0KFxuXHRcdFx0dHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnICYmXG5cdFx0XHRpbnB1dCBpbnN0YW5jZW9mIFByb21pc2Vcblx0XHQpIHx8XG5cdFx0KFxuXHRcdFx0aW5wdXQgIT09IG51bGwgJiZcblx0XHRcdHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcgJiZcblx0XHRcdHR5cGVvZiBpbnB1dC50aGVuID09PSAnZnVuY3Rpb24nICYmXG5cdFx0XHR0eXBlb2YgaW5wdXQuY2F0Y2ggPT09ICdmdW5jdGlvbidcblx0XHQpXG5cdCk7XG59XG5leHBvcnRzLmlzUHJvbWlzZSA9IGlzUHJvbWlzZTtcblxuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlclZpZXcodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgQXJyYXlCdWZmZXIuaXNWaWV3KSB7XG4gICAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIGlzVHlwZWRBcnJheSh2YWx1ZSkgfHxcbiAgICBpc0RhdGFWaWV3KHZhbHVlKVxuICApO1xufVxuZXhwb3J0cy5pc0FycmF5QnVmZmVyVmlldyA9IGlzQXJyYXlCdWZmZXJWaWV3O1xuXG5cbmZ1bmN0aW9uIGlzVWludDhBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ1VpbnQ4QXJyYXknO1xufVxuZXhwb3J0cy5pc1VpbnQ4QXJyYXkgPSBpc1VpbnQ4QXJyYXk7XG5cbmZ1bmN0aW9uIGlzVWludDhDbGFtcGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkgPT09ICdVaW50OENsYW1wZWRBcnJheSc7XG59XG5leHBvcnRzLmlzVWludDhDbGFtcGVkQXJyYXkgPSBpc1VpbnQ4Q2xhbXBlZEFycmF5O1xuXG5mdW5jdGlvbiBpc1VpbnQxNkFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnVWludDE2QXJyYXknO1xufVxuZXhwb3J0cy5pc1VpbnQxNkFycmF5ID0gaXNVaW50MTZBcnJheTtcblxuZnVuY3Rpb24gaXNVaW50MzJBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ1VpbnQzMkFycmF5Jztcbn1cbmV4cG9ydHMuaXNVaW50MzJBcnJheSA9IGlzVWludDMyQXJyYXk7XG5cbmZ1bmN0aW9uIGlzSW50OEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnSW50OEFycmF5Jztcbn1cbmV4cG9ydHMuaXNJbnQ4QXJyYXkgPSBpc0ludDhBcnJheTtcblxuZnVuY3Rpb24gaXNJbnQxNkFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnSW50MTZBcnJheSc7XG59XG5leHBvcnRzLmlzSW50MTZBcnJheSA9IGlzSW50MTZBcnJheTtcblxuZnVuY3Rpb24gaXNJbnQzMkFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnSW50MzJBcnJheSc7XG59XG5leHBvcnRzLmlzSW50MzJBcnJheSA9IGlzSW50MzJBcnJheTtcblxuZnVuY3Rpb24gaXNGbG9hdDMyQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkgPT09ICdGbG9hdDMyQXJyYXknO1xufVxuZXhwb3J0cy5pc0Zsb2F0MzJBcnJheSA9IGlzRmxvYXQzMkFycmF5O1xuXG5mdW5jdGlvbiBpc0Zsb2F0NjRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ0Zsb2F0NjRBcnJheSc7XG59XG5leHBvcnRzLmlzRmxvYXQ2NEFycmF5ID0gaXNGbG9hdDY0QXJyYXk7XG5cbmZ1bmN0aW9uIGlzQmlnSW50NjRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ0JpZ0ludDY0QXJyYXknO1xufVxuZXhwb3J0cy5pc0JpZ0ludDY0QXJyYXkgPSBpc0JpZ0ludDY0QXJyYXk7XG5cbmZ1bmN0aW9uIGlzQmlnVWludDY0QXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkgPT09ICdCaWdVaW50NjRBcnJheSc7XG59XG5leHBvcnRzLmlzQmlnVWludDY0QXJyYXkgPSBpc0JpZ1VpbnQ2NEFycmF5O1xuXG5mdW5jdGlvbiBpc01hcFRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IE1hcF0nO1xufVxuaXNNYXBUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgTWFwICE9PSAndW5kZWZpbmVkJyAmJlxuICBpc01hcFRvU3RyaW5nKG5ldyBNYXAoKSlcbik7XG5cbmZ1bmN0aW9uIGlzTWFwKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgTWFwID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBpc01hcFRvU3RyaW5nLndvcmtpbmdcbiAgICA/IGlzTWFwVG9TdHJpbmcodmFsdWUpXG4gICAgOiB2YWx1ZSBpbnN0YW5jZW9mIE1hcDtcbn1cbmV4cG9ydHMuaXNNYXAgPSBpc01hcDtcblxuZnVuY3Rpb24gaXNTZXRUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBTZXRdJztcbn1cbmlzU2V0VG9TdHJpbmcud29ya2luZyA9IChcbiAgdHlwZW9mIFNldCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgaXNTZXRUb1N0cmluZyhuZXcgU2V0KCkpXG4pO1xuZnVuY3Rpb24gaXNTZXQodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBTZXQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzU2V0VG9TdHJpbmcud29ya2luZ1xuICAgID8gaXNTZXRUb1N0cmluZyh2YWx1ZSlcbiAgICA6IHZhbHVlIGluc3RhbmNlb2YgU2V0O1xufVxuZXhwb3J0cy5pc1NldCA9IGlzU2V0O1xuXG5mdW5jdGlvbiBpc1dlYWtNYXBUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBXZWFrTWFwXSc7XG59XG5pc1dlYWtNYXBUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgV2Vha01hcCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgaXNXZWFrTWFwVG9TdHJpbmcobmV3IFdlYWtNYXAoKSlcbik7XG5mdW5jdGlvbiBpc1dlYWtNYXAodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBXZWFrTWFwID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBpc1dlYWtNYXBUb1N0cmluZy53b3JraW5nXG4gICAgPyBpc1dlYWtNYXBUb1N0cmluZyh2YWx1ZSlcbiAgICA6IHZhbHVlIGluc3RhbmNlb2YgV2Vha01hcDtcbn1cbmV4cG9ydHMuaXNXZWFrTWFwID0gaXNXZWFrTWFwO1xuXG5mdW5jdGlvbiBpc1dlYWtTZXRUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBXZWFrU2V0XSc7XG59XG5pc1dlYWtTZXRUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgV2Vha1NldCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgaXNXZWFrU2V0VG9TdHJpbmcobmV3IFdlYWtTZXQoKSlcbik7XG5mdW5jdGlvbiBpc1dlYWtTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzV2Vha1NldFRvU3RyaW5nKHZhbHVlKTtcbn1cbmV4cG9ydHMuaXNXZWFrU2V0ID0gaXNXZWFrU2V0O1xuXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyVG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdFRvU3RyaW5nKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcbn1cbmlzQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmXG4gIGlzQXJyYXlCdWZmZXJUb1N0cmluZyhuZXcgQXJyYXlCdWZmZXIoKSlcbik7XG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nXG4gICAgPyBpc0FycmF5QnVmZmVyVG9TdHJpbmcodmFsdWUpXG4gICAgOiB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyO1xufVxuZXhwb3J0cy5pc0FycmF5QnVmZmVyID0gaXNBcnJheUJ1ZmZlcjtcblxuZnVuY3Rpb24gaXNEYXRhVmlld1RvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IERhdGFWaWV3XSc7XG59XG5pc0RhdGFWaWV3VG9TdHJpbmcud29ya2luZyA9IChcbiAgdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJlxuICB0eXBlb2YgRGF0YVZpZXcgIT09ICd1bmRlZmluZWQnICYmXG4gIGlzRGF0YVZpZXdUb1N0cmluZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpLCAwLCAxKSlcbik7XG5mdW5jdGlvbiBpc0RhdGFWaWV3KHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgRGF0YVZpZXcgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzRGF0YVZpZXdUb1N0cmluZy53b3JraW5nXG4gICAgPyBpc0RhdGFWaWV3VG9TdHJpbmcodmFsdWUpXG4gICAgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGFWaWV3O1xufVxuZXhwb3J0cy5pc0RhdGFWaWV3ID0gaXNEYXRhVmlldztcblxuLy8gU3RvcmUgYSBjb3B5IG9mIFNoYXJlZEFycmF5QnVmZmVyIGluIGNhc2UgaXQncyBkZWxldGVkIGVsc2V3aGVyZVxudmFyIFNoYXJlZEFycmF5QnVmZmVyQ29weSA9IHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgPyBTaGFyZWRBcnJheUJ1ZmZlciA6IHVuZGVmaW5lZDtcbmZ1bmN0aW9uIGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBTaGFyZWRBcnJheUJ1ZmZlcl0nO1xufVxuZnVuY3Rpb24gaXNTaGFyZWRBcnJheUJ1ZmZlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyQ29weSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nID09PSAndW5kZWZpbmVkJykge1xuICAgIGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nID0gaXNTaGFyZWRBcnJheUJ1ZmZlclRvU3RyaW5nKG5ldyBTaGFyZWRBcnJheUJ1ZmZlckNvcHkoKSk7XG4gIH1cblxuICByZXR1cm4gaXNTaGFyZWRBcnJheUJ1ZmZlclRvU3RyaW5nLndvcmtpbmdcbiAgICA/IGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZyh2YWx1ZSlcbiAgICA6IHZhbHVlIGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXJDb3B5O1xufVxuZXhwb3J0cy5pc1NoYXJlZEFycmF5QnVmZmVyID0gaXNTaGFyZWRBcnJheUJ1ZmZlcjtcblxuZnVuY3Rpb24gaXNBc3luY0Z1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJztcbn1cbmV4cG9ydHMuaXNBc3luY0Z1bmN0aW9uID0gaXNBc3luY0Z1bmN0aW9uO1xuXG5mdW5jdGlvbiBpc01hcEl0ZXJhdG9yKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IE1hcCBJdGVyYXRvcl0nO1xufVxuZXhwb3J0cy5pc01hcEl0ZXJhdG9yID0gaXNNYXBJdGVyYXRvcjtcblxuZnVuY3Rpb24gaXNTZXRJdGVyYXRvcih2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBTZXQgSXRlcmF0b3JdJztcbn1cbmV4cG9ydHMuaXNTZXRJdGVyYXRvciA9IGlzU2V0SXRlcmF0b3I7XG5cbmZ1bmN0aW9uIGlzR2VuZXJhdG9yT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IEdlbmVyYXRvcl0nO1xufVxuZXhwb3J0cy5pc0dlbmVyYXRvck9iamVjdCA9IGlzR2VuZXJhdG9yT2JqZWN0O1xuXG5mdW5jdGlvbiBpc1dlYkFzc2VtYmx5Q29tcGlsZWRNb2R1bGUodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdFRvU3RyaW5nKHZhbHVlKSA9PT0gJ1tvYmplY3QgV2ViQXNzZW1ibHkuTW9kdWxlXSc7XG59XG5leHBvcnRzLmlzV2ViQXNzZW1ibHlDb21waWxlZE1vZHVsZSA9IGlzV2ViQXNzZW1ibHlDb21waWxlZE1vZHVsZTtcblxuZnVuY3Rpb24gaXNOdW1iZXJPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGNoZWNrQm94ZWRQcmltaXRpdmUodmFsdWUsIG51bWJlclZhbHVlKTtcbn1cbmV4cG9ydHMuaXNOdW1iZXJPYmplY3QgPSBpc051bWJlck9iamVjdDtcblxuZnVuY3Rpb24gaXNTdHJpbmdPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGNoZWNrQm94ZWRQcmltaXRpdmUodmFsdWUsIHN0cmluZ1ZhbHVlKTtcbn1cbmV4cG9ydHMuaXNTdHJpbmdPYmplY3QgPSBpc1N0cmluZ09iamVjdDtcblxuZnVuY3Rpb24gaXNCb29sZWFuT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBjaGVja0JveGVkUHJpbWl0aXZlKHZhbHVlLCBib29sZWFuVmFsdWUpO1xufVxuZXhwb3J0cy5pc0Jvb2xlYW5PYmplY3QgPSBpc0Jvb2xlYW5PYmplY3Q7XG5cbmZ1bmN0aW9uIGlzQmlnSW50T2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBCaWdJbnRTdXBwb3J0ZWQgJiYgY2hlY2tCb3hlZFByaW1pdGl2ZSh2YWx1ZSwgYmlnSW50VmFsdWUpO1xufVxuZXhwb3J0cy5pc0JpZ0ludE9iamVjdCA9IGlzQmlnSW50T2JqZWN0O1xuXG5mdW5jdGlvbiBpc1N5bWJvbE9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gU3ltYm9sU3VwcG9ydGVkICYmIGNoZWNrQm94ZWRQcmltaXRpdmUodmFsdWUsIHN5bWJvbFZhbHVlKTtcbn1cbmV4cG9ydHMuaXNTeW1ib2xPYmplY3QgPSBpc1N5bWJvbE9iamVjdDtcblxuZnVuY3Rpb24gaXNCb3hlZFByaW1pdGl2ZSh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIGlzTnVtYmVyT2JqZWN0KHZhbHVlKSB8fFxuICAgIGlzU3RyaW5nT2JqZWN0KHZhbHVlKSB8fFxuICAgIGlzQm9vbGVhbk9iamVjdCh2YWx1ZSkgfHxcbiAgICBpc0JpZ0ludE9iamVjdCh2YWx1ZSkgfHxcbiAgICBpc1N5bWJvbE9iamVjdCh2YWx1ZSlcbiAgKTtcbn1cbmV4cG9ydHMuaXNCb3hlZFByaW1pdGl2ZSA9IGlzQm94ZWRQcmltaXRpdmU7XG5cbmZ1bmN0aW9uIGlzQW55QXJyYXlCdWZmZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyAmJiAoXG4gICAgaXNBcnJheUJ1ZmZlcih2YWx1ZSkgfHxcbiAgICBpc1NoYXJlZEFycmF5QnVmZmVyKHZhbHVlKVxuICApO1xufVxuZXhwb3J0cy5pc0FueUFycmF5QnVmZmVyID0gaXNBbnlBcnJheUJ1ZmZlcjtcblxuWydpc1Byb3h5JywgJ2lzRXh0ZXJuYWwnLCAnaXNNb2R1bGVOYW1lc3BhY2VPYmplY3QnXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbWV0aG9kLCB7XG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgdmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1ldGhvZCArICcgaXMgbm90IHN1cHBvcnRlZCBpbiB1c2VybGFuZCcpO1xuICAgIH1cbiAgfSk7XG59KTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIHx8XG4gIGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKSB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgIHZhciBkZXNjcmlwdG9ycyA9IHt9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzY3JpcHRvcnNba2V5c1tpXV0gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5c1tpXSk7XG4gICAgfVxuICAgIHJldHVybiBkZXNjcmlwdG9ycztcbiAgfTtcblxudmFyIGZvcm1hdFJlZ0V4cCA9IC8lW3NkaiVdL2c7XG5leHBvcnRzLmZvcm1hdCA9IGZ1bmN0aW9uKGYpIHtcbiAgaWYgKCFpc1N0cmluZyhmKSkge1xuICAgIHZhciBvYmplY3RzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIG9iamVjdHMucHVzaChpbnNwZWN0KGFyZ3VtZW50c1tpXSkpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0cy5qb2luKCcgJyk7XG4gIH1cblxuICB2YXIgaSA9IDE7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBzdHIgPSBTdHJpbmcoZikucmVwbGFjZShmb3JtYXRSZWdFeHAsIGZ1bmN0aW9uKHgpIHtcbiAgICBpZiAoeCA9PT0gJyUlJykgcmV0dXJuICclJztcbiAgICBpZiAoaSA+PSBsZW4pIHJldHVybiB4O1xuICAgIHN3aXRjaCAoeCkge1xuICAgICAgY2FzZSAnJXMnOiByZXR1cm4gU3RyaW5nKGFyZ3NbaSsrXSk7XG4gICAgICBjYXNlICclZCc6IHJldHVybiBOdW1iZXIoYXJnc1tpKytdKTtcbiAgICAgIGNhc2UgJyVqJzpcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJnc1tpKytdKTtcbiAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgfSk7XG4gIGZvciAodmFyIHggPSBhcmdzW2ldOyBpIDwgbGVuOyB4ID0gYXJnc1srK2ldKSB7XG4gICAgaWYgKGlzTnVsbCh4KSB8fCAhaXNPYmplY3QoeCkpIHtcbiAgICAgIHN0ciArPSAnICcgKyB4O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgKz0gJyAnICsgaW5zcGVjdCh4KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn07XG5cblxuLy8gTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbi8vIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4vLyBJZiAtLW5vLWRlcHJlY2F0aW9uIGlzIHNldCwgdGhlbiBpdCBpcyBhIG5vLW9wLlxuZXhwb3J0cy5kZXByZWNhdGUgPSBmdW5jdGlvbihmbiwgbXNnKSB7XG4gIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5ub0RlcHJlY2F0aW9uID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgLy8gQWxsb3cgZm9yIGRlcHJlY2F0aW5nIHRoaW5ncyBpbiB0aGUgcHJvY2VzcyBvZiBzdGFydGluZyB1cC5cbiAgaWYgKHR5cGVvZiBwcm9jZXNzID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBleHBvcnRzLmRlcHJlY2F0ZShmbiwgbXNnKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cblxuICB2YXIgd2FybmVkID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGRlcHJlY2F0ZWQoKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIGlmIChwcm9jZXNzLnRocm93RGVwcmVjYXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICB9IGVsc2UgaWYgKHByb2Nlc3MudHJhY2VEZXByZWNhdGlvbikge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7XG4gICAgICB9XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIHJldHVybiBkZXByZWNhdGVkO1xufTtcblxuXG52YXIgZGVidWdzID0ge307XG52YXIgZGVidWdFbnZSZWdleCA9IC9eJC87XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0RFQlVHKSB7XG4gIHZhciBkZWJ1Z0VudiA9IHByb2Nlc3MuZW52Lk5PREVfREVCVUc7XG4gIGRlYnVnRW52ID0gZGVidWdFbnYucmVwbGFjZSgvW3xcXFxce30oKVtcXF1eJCs/Ll0vZywgJ1xcXFwkJicpXG4gICAgLnJlcGxhY2UoL1xcKi9nLCAnLionKVxuICAgIC5yZXBsYWNlKC8sL2csICckfF4nKVxuICAgIC50b1VwcGVyQ2FzZSgpO1xuICBkZWJ1Z0VudlJlZ2V4ID0gbmV3IFJlZ0V4cCgnXicgKyBkZWJ1Z0VudiArICckJywgJ2knKTtcbn1cbmV4cG9ydHMuZGVidWdsb2cgPSBmdW5jdGlvbihzZXQpIHtcbiAgc2V0ID0gc2V0LnRvVXBwZXJDYXNlKCk7XG4gIGlmICghZGVidWdzW3NldF0pIHtcbiAgICBpZiAoZGVidWdFbnZSZWdleC50ZXN0KHNldCkpIHtcbiAgICAgIHZhciBwaWQgPSBwcm9jZXNzLnBpZDtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBtc2cgPSBleHBvcnRzLmZvcm1hdC5hcHBseShleHBvcnRzLCBhcmd1bWVudHMpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCclcyAlZDogJXMnLCBzZXQsIHBpZCwgbXNnKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlYnVnc1tzZXRdO1xufTtcblxuXG4vKipcbiAqIEVjaG9zIHRoZSB2YWx1ZSBvZiBhIHZhbHVlLiBUcnlzIHRvIHByaW50IHRoZSB2YWx1ZSBvdXRcbiAqIGluIHRoZSBiZXN0IHdheSBwb3NzaWJsZSBnaXZlbiB0aGUgZGlmZmVyZW50IHR5cGVzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBwcmludCBvdXQuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25hbCBvcHRpb25zIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgb3V0cHV0LlxuICovXG4vKiBsZWdhY3k6IG9iaiwgc2hvd0hpZGRlbiwgZGVwdGgsIGNvbG9ycyovXG5mdW5jdGlvbiBpbnNwZWN0KG9iaiwgb3B0cykge1xuICAvLyBkZWZhdWx0IG9wdGlvbnNcbiAgdmFyIGN0eCA9IHtcbiAgICBzZWVuOiBbXSxcbiAgICBzdHlsaXplOiBzdHlsaXplTm9Db2xvclxuICB9O1xuICAvLyBsZWdhY3kuLi5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gMykgY3R4LmRlcHRoID0gYXJndW1lbnRzWzJdO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+PSA0KSBjdHguY29sb3JzID0gYXJndW1lbnRzWzNdO1xuICBpZiAoaXNCb29sZWFuKG9wdHMpKSB7XG4gICAgLy8gbGVnYWN5Li4uXG4gICAgY3R4LnNob3dIaWRkZW4gPSBvcHRzO1xuICB9IGVsc2UgaWYgKG9wdHMpIHtcbiAgICAvLyBnb3QgYW4gXCJvcHRpb25zXCIgb2JqZWN0XG4gICAgZXhwb3J0cy5fZXh0ZW5kKGN0eCwgb3B0cyk7XG4gIH1cbiAgLy8gc2V0IGRlZmF1bHQgb3B0aW9uc1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LnNob3dIaWRkZW4pKSBjdHguc2hvd0hpZGRlbiA9IGZhbHNlO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmRlcHRoKSkgY3R4LmRlcHRoID0gMjtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jb2xvcnMpKSBjdHguY29sb3JzID0gZmFsc2U7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguY3VzdG9tSW5zcGVjdCkpIGN0eC5jdXN0b21JbnNwZWN0ID0gdHJ1ZTtcbiAgaWYgKGN0eC5jb2xvcnMpIGN0eC5zdHlsaXplID0gc3R5bGl6ZVdpdGhDb2xvcjtcbiAgcmV0dXJuIGZvcm1hdFZhbHVlKGN0eCwgb2JqLCBjdHguZGVwdGgpO1xufVxuZXhwb3J0cy5pbnNwZWN0ID0gaW5zcGVjdDtcblxuXG4vLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FOU0lfZXNjYXBlX2NvZGUjZ3JhcGhpY3Ncbmluc3BlY3QuY29sb3JzID0ge1xuICAnYm9sZCcgOiBbMSwgMjJdLFxuICAnaXRhbGljJyA6IFszLCAyM10sXG4gICd1bmRlcmxpbmUnIDogWzQsIDI0XSxcbiAgJ2ludmVyc2UnIDogWzcsIDI3XSxcbiAgJ3doaXRlJyA6IFszNywgMzldLFxuICAnZ3JleScgOiBbOTAsIDM5XSxcbiAgJ2JsYWNrJyA6IFszMCwgMzldLFxuICAnYmx1ZScgOiBbMzQsIDM5XSxcbiAgJ2N5YW4nIDogWzM2LCAzOV0sXG4gICdncmVlbicgOiBbMzIsIDM5XSxcbiAgJ21hZ2VudGEnIDogWzM1LCAzOV0sXG4gICdyZWQnIDogWzMxLCAzOV0sXG4gICd5ZWxsb3cnIDogWzMzLCAzOV1cbn07XG5cbi8vIERvbid0IHVzZSAnYmx1ZScgbm90IHZpc2libGUgb24gY21kLmV4ZVxuaW5zcGVjdC5zdHlsZXMgPSB7XG4gICdzcGVjaWFsJzogJ2N5YW4nLFxuICAnbnVtYmVyJzogJ3llbGxvdycsXG4gICdib29sZWFuJzogJ3llbGxvdycsXG4gICd1bmRlZmluZWQnOiAnZ3JleScsXG4gICdudWxsJzogJ2JvbGQnLFxuICAnc3RyaW5nJzogJ2dyZWVuJyxcbiAgJ2RhdGUnOiAnbWFnZW50YScsXG4gIC8vIFwibmFtZVwiOiBpbnRlbnRpb25hbGx5IG5vdCBzdHlsaW5nXG4gICdyZWdleHAnOiAncmVkJ1xufTtcblxuXG5mdW5jdGlvbiBzdHlsaXplV2l0aENvbG9yKHN0ciwgc3R5bGVUeXBlKSB7XG4gIHZhciBzdHlsZSA9IGluc3BlY3Quc3R5bGVzW3N0eWxlVHlwZV07XG5cbiAgaWYgKHN0eWxlKSB7XG4gICAgcmV0dXJuICdcXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMF0gKyAnbScgKyBzdHIgK1xuICAgICAgICAgICAnXFx1MDAxYlsnICsgaW5zcGVjdC5jb2xvcnNbc3R5bGVdWzFdICsgJ20nO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdHI7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBzdHlsaXplTm9Db2xvcihzdHIsIHN0eWxlVHlwZSkge1xuICByZXR1cm4gc3RyO1xufVxuXG5cbmZ1bmN0aW9uIGFycmF5VG9IYXNoKGFycmF5KSB7XG4gIHZhciBoYXNoID0ge307XG5cbiAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbih2YWwsIGlkeCkge1xuICAgIGhhc2hbdmFsXSA9IHRydWU7XG4gIH0pO1xuXG4gIHJldHVybiBoYXNoO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdFZhbHVlKGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcykge1xuICAvLyBQcm92aWRlIGEgaG9vayBmb3IgdXNlci1zcGVjaWZpZWQgaW5zcGVjdCBmdW5jdGlvbnMuXG4gIC8vIENoZWNrIHRoYXQgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYW4gaW5zcGVjdCBmdW5jdGlvbiBvbiBpdFxuICBpZiAoY3R4LmN1c3RvbUluc3BlY3QgJiZcbiAgICAgIHZhbHVlICYmXG4gICAgICBpc0Z1bmN0aW9uKHZhbHVlLmluc3BlY3QpICYmXG4gICAgICAvLyBGaWx0ZXIgb3V0IHRoZSB1dGlsIG1vZHVsZSwgaXQncyBpbnNwZWN0IGZ1bmN0aW9uIGlzIHNwZWNpYWxcbiAgICAgIHZhbHVlLmluc3BlY3QgIT09IGV4cG9ydHMuaW5zcGVjdCAmJlxuICAgICAgLy8gQWxzbyBmaWx0ZXIgb3V0IGFueSBwcm90b3R5cGUgb2JqZWN0cyB1c2luZyB0aGUgY2lyY3VsYXIgY2hlY2suXG4gICAgICAhKHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gdmFsdWUpKSB7XG4gICAgdmFyIHJldCA9IHZhbHVlLmluc3BlY3QocmVjdXJzZVRpbWVzLCBjdHgpO1xuICAgIGlmICghaXNTdHJpbmcocmV0KSkge1xuICAgICAgcmV0ID0gZm9ybWF0VmFsdWUoY3R4LCByZXQsIHJlY3Vyc2VUaW1lcyk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvLyBQcmltaXRpdmUgdHlwZXMgY2Fubm90IGhhdmUgcHJvcGVydGllc1xuICB2YXIgcHJpbWl0aXZlID0gZm9ybWF0UHJpbWl0aXZlKGN0eCwgdmFsdWUpO1xuICBpZiAocHJpbWl0aXZlKSB7XG4gICAgcmV0dXJuIHByaW1pdGl2ZTtcbiAgfVxuXG4gIC8vIExvb2sgdXAgdGhlIGtleXMgb2YgdGhlIG9iamVjdC5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gIHZhciB2aXNpYmxlS2V5cyA9IGFycmF5VG9IYXNoKGtleXMpO1xuXG4gIGlmIChjdHguc2hvd0hpZGRlbikge1xuICAgIGtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh2YWx1ZSk7XG4gIH1cblxuICAvLyBJRSBkb2Vzbid0IG1ha2UgZXJyb3IgZmllbGRzIG5vbi1lbnVtZXJhYmxlXG4gIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9kd3c1MnNidCh2PXZzLjk0KS5hc3B4XG4gIGlmIChpc0Vycm9yKHZhbHVlKVxuICAgICAgJiYgKGtleXMuaW5kZXhPZignbWVzc2FnZScpID49IDAgfHwga2V5cy5pbmRleE9mKCdkZXNjcmlwdGlvbicpID49IDApKSB7XG4gICAgcmV0dXJuIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgfVxuXG4gIC8vIFNvbWUgdHlwZSBvZiBvYmplY3Qgd2l0aG91dCBwcm9wZXJ0aWVzIGNhbiBiZSBzaG9ydGN1dHRlZC5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICB2YXIgbmFtZSA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKCdbRnVuY3Rpb24nICsgbmFtZSArICddJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTtcbiAgICB9XG4gICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ2RhdGUnKTtcbiAgICB9XG4gICAgaWYgKGlzRXJyb3IodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNlID0gJycsIGFycmF5ID0gZmFsc2UsIGJyYWNlcyA9IFsneycsICd9J107XG5cbiAgLy8gTWFrZSBBcnJheSBzYXkgdGhhdCB0aGV5IGFyZSBBcnJheVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBhcnJheSA9IHRydWU7XG4gICAgYnJhY2VzID0gWydbJywgJ10nXTtcbiAgfVxuXG4gIC8vIE1ha2UgZnVuY3Rpb25zIHNheSB0aGF0IHRoZXkgYXJlIGZ1bmN0aW9uc1xuICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICB2YXIgbiA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgIGJhc2UgPSAnIFtGdW5jdGlvbicgKyBuICsgJ10nO1xuICB9XG5cbiAgLy8gTWFrZSBSZWdFeHBzIHNheSB0aGF0IHRoZXkgYXJlIFJlZ0V4cHNcbiAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBkYXRlcyB3aXRoIHByb3BlcnRpZXMgZmlyc3Qgc2F5IHRoZSBkYXRlXG4gIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIERhdGUucHJvdG90eXBlLnRvVVRDU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBlcnJvciB3aXRoIG1lc3NhZ2UgZmlyc3Qgc2F5IHRoZSBlcnJvclxuICBpZiAoaXNFcnJvcih2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgZm9ybWF0RXJyb3IodmFsdWUpO1xuICB9XG5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwICYmICghYXJyYXkgfHwgdmFsdWUubGVuZ3RoID09IDApKSB7XG4gICAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyBicmFjZXNbMV07XG4gIH1cblxuICBpZiAocmVjdXJzZVRpbWVzIDwgMCkge1xuICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAncmVnZXhwJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW09iamVjdF0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuXG4gIGN0eC5zZWVuLnB1c2godmFsdWUpO1xuXG4gIHZhciBvdXRwdXQ7XG4gIGlmIChhcnJheSkge1xuICAgIG91dHB1dCA9IGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpO1xuICB9IGVsc2Uge1xuICAgIG91dHB1dCA9IGtleXMubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpO1xuICAgIH0pO1xuICB9XG5cbiAgY3R4LnNlZW4ucG9wKCk7XG5cbiAgcmV0dXJuIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSkge1xuICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgndW5kZWZpbmVkJywgJ3VuZGVmaW5lZCcpO1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgdmFyIHNpbXBsZSA9ICdcXCcnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpLnJlcGxhY2UoL15cInxcIiQvZywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFwiL2csICdcIicpICsgJ1xcJyc7XG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKHNpbXBsZSwgJ3N0cmluZycpO1xuICB9XG4gIGlmIChpc051bWJlcih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdudW1iZXInKTtcbiAgaWYgKGlzQm9vbGVhbih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdib29sZWFuJyk7XG4gIC8vIEZvciBzb21lIHJlYXNvbiB0eXBlb2YgbnVsbCBpcyBcIm9iamVjdFwiLCBzbyBzcGVjaWFsIGNhc2UgaGVyZS5cbiAgaWYgKGlzTnVsbCh2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCdudWxsJywgJ251bGwnKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRFcnJvcih2YWx1ZSkge1xuICByZXR1cm4gJ1snICsgRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpICsgJ10nO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eSh2YWx1ZSwgU3RyaW5nKGkpKSkge1xuICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cyxcbiAgICAgICAgICBTdHJpbmcoaSksIHRydWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goJycpO1xuICAgIH1cbiAgfVxuICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKCFrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLFxuICAgICAgICAgIGtleSwgdHJ1ZSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvdXRwdXQ7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5LCBhcnJheSkge1xuICB2YXIgbmFtZSwgc3RyLCBkZXNjO1xuICBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih2YWx1ZSwga2V5KSB8fCB7IHZhbHVlOiB2YWx1ZVtrZXldIH07XG4gIGlmIChkZXNjLmdldCkge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tHZXR0ZXIvU2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tTZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFoYXNPd25Qcm9wZXJ0eSh2aXNpYmxlS2V5cywga2V5KSkge1xuICAgIG5hbWUgPSAnWycgKyBrZXkgKyAnXSc7XG4gIH1cbiAgaWYgKCFzdHIpIHtcbiAgICBpZiAoY3R4LnNlZW4uaW5kZXhPZihkZXNjLnZhbHVlKSA8IDApIHtcbiAgICAgIGlmIChpc051bGwocmVjdXJzZVRpbWVzKSkge1xuICAgICAgICBzdHIgPSBmb3JtYXRWYWx1ZShjdHgsIGRlc2MudmFsdWUsIG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBkZXNjLnZhbHVlLCByZWN1cnNlVGltZXMgLSAxKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdHIuaW5kZXhPZignXFxuJykgPiAtMSkge1xuICAgICAgICBpZiAoYXJyYXkpIHtcbiAgICAgICAgICBzdHIgPSBzdHIuc3BsaXQoJ1xcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gJyAgJyArIGxpbmU7XG4gICAgICAgICAgfSkuam9pbignXFxuJykuc3Vic3RyKDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0ciA9ICdcXG4nICsgc3RyLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuICcgICAnICsgbGluZTtcbiAgICAgICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0NpcmN1bGFyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG4gIGlmIChpc1VuZGVmaW5lZChuYW1lKSkge1xuICAgIGlmIChhcnJheSAmJiBrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBuYW1lID0gSlNPTi5zdHJpbmdpZnkoJycgKyBrZXkpO1xuICAgIGlmIChuYW1lLm1hdGNoKC9eXCIoW2EtekEtWl9dW2EtekEtWl8wLTldKilcIiQvKSkge1xuICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyKDEsIG5hbWUubGVuZ3RoIC0gMik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ25hbWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJylcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyheXCJ8XCIkKS9nLCBcIidcIik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ3N0cmluZycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYW1lICsgJzogJyArIHN0cjtcbn1cblxuXG5mdW5jdGlvbiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQsIGJhc2UsIGJyYWNlcykge1xuICB2YXIgbnVtTGluZXNFc3QgPSAwO1xuICB2YXIgbGVuZ3RoID0gb3V0cHV0LnJlZHVjZShmdW5jdGlvbihwcmV2LCBjdXIpIHtcbiAgICBudW1MaW5lc0VzdCsrO1xuICAgIGlmIChjdXIuaW5kZXhPZignXFxuJykgPj0gMCkgbnVtTGluZXNFc3QrKztcbiAgICByZXR1cm4gcHJldiArIGN1ci5yZXBsYWNlKC9cXHUwMDFiXFxbXFxkXFxkP20vZywgJycpLmxlbmd0aCArIDE7XG4gIH0sIDApO1xuXG4gIGlmIChsZW5ndGggPiA2MCkge1xuICAgIHJldHVybiBicmFjZXNbMF0gK1xuICAgICAgICAgICAoYmFzZSA9PT0gJycgPyAnJyA6IGJhc2UgKyAnXFxuICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgb3V0cHV0LmpvaW4oJyxcXG4gICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgYnJhY2VzWzFdO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyAnICcgKyBvdXRwdXQuam9pbignLCAnKSArICcgJyArIGJyYWNlc1sxXTtcbn1cblxuXG4vLyBOT1RFOiBUaGVzZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBgaW5zdGFuY2VvZmBcbi8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3aXRoIGBPYmplY3QuY3JlYXRlKClgLlxuZXhwb3J0cy50eXBlcyA9IHJlcXVpcmUoJy4vc3VwcG9ydC90eXBlcycpO1xuXG5mdW5jdGlvbiBpc0FycmF5KGFyKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGFyKTtcbn1cbmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJztcbn1cbmV4cG9ydHMuaXNCb29sZWFuID0gaXNCb29sZWFuO1xuXG5mdW5jdGlvbiBpc051bGwoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbCA9IGlzTnVsbDtcblxuZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydHMuaXNOdW1iZXIgPSBpc051bWJlcjtcblxuZnVuY3Rpb24gaXNTdHJpbmcoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3RyaW5nJztcbn1cbmV4cG9ydHMuaXNTdHJpbmcgPSBpc1N0cmluZztcblxuZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cbmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDtcblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbmV4cG9ydHMuaXNVbmRlZmluZWQgPSBpc1VuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNSZWdFeHAocmUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHJlKSAmJiBvYmplY3RUb1N0cmluZyhyZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuZXhwb3J0cy5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuZXhwb3J0cy50eXBlcy5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuXG5mdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNPYmplY3QgPSBpc09iamVjdDtcblxuZnVuY3Rpb24gaXNEYXRlKGQpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGQpICYmIG9iamVjdFRvU3RyaW5nKGQpID09PSAnW29iamVjdCBEYXRlXSc7XG59XG5leHBvcnRzLmlzRGF0ZSA9IGlzRGF0ZTtcbmV4cG9ydHMudHlwZXMuaXNEYXRlID0gaXNEYXRlO1xuXG5mdW5jdGlvbiBpc0Vycm9yKGUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGUpICYmXG4gICAgICAob2JqZWN0VG9TdHJpbmcoZSkgPT09ICdbb2JqZWN0IEVycm9yXScgfHwgZSBpbnN0YW5jZW9mIEVycm9yKTtcbn1cbmV4cG9ydHMuaXNFcnJvciA9IGlzRXJyb3I7XG5leHBvcnRzLnR5cGVzLmlzTmF0aXZlRXJyb3IgPSBpc0Vycm9yO1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuZXhwb3J0cy5pc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlO1xuXG5leHBvcnRzLmlzQnVmZmVyID0gcmVxdWlyZSgnLi9zdXBwb3J0L2lzQnVmZmVyJyk7XG5cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTtcbn1cblxuXG5mdW5jdGlvbiBwYWQobikge1xuICByZXR1cm4gbiA8IDEwID8gJzAnICsgbi50b1N0cmluZygxMCkgOiBuLnRvU3RyaW5nKDEwKTtcbn1cblxuXG52YXIgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsXG4gICAgICAgICAgICAgICdPY3QnLCAnTm92JywgJ0RlYyddO1xuXG4vLyAyNiBGZWIgMTY6MTk6MzRcbmZ1bmN0aW9uIHRpbWVzdGFtcCgpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSgpO1xuICB2YXIgdGltZSA9IFtwYWQoZC5nZXRIb3VycygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0TWludXRlcygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0U2Vjb25kcygpKV0uam9pbignOicpO1xuICByZXR1cm4gW2QuZ2V0RGF0ZSgpLCBtb250aHNbZC5nZXRNb250aCgpXSwgdGltZV0uam9pbignICcpO1xufVxuXG5cbi8vIGxvZyBpcyBqdXN0IGEgdGhpbiB3cmFwcGVyIHRvIGNvbnNvbGUubG9nIHRoYXQgcHJlcGVuZHMgYSB0aW1lc3RhbXBcbmV4cG9ydHMubG9nID0gZnVuY3Rpb24oKSB7XG4gIGNvbnNvbGUubG9nKCclcyAtICVzJywgdGltZXN0YW1wKCksIGV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsIGFyZ3VtZW50cykpO1xufTtcblxuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlci5cbiAqXG4gKiBUaGUgRnVuY3Rpb24ucHJvdG90eXBlLmluaGVyaXRzIGZyb20gbGFuZy5qcyByZXdyaXR0ZW4gYXMgYSBzdGFuZGFsb25lXG4gKiBmdW5jdGlvbiAobm90IG9uIEZ1bmN0aW9uLnByb3RvdHlwZSkuIE5PVEU6IElmIHRoaXMgZmlsZSBpcyB0byBiZSBsb2FkZWRcbiAqIGR1cmluZyBib290c3RyYXBwaW5nIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcmV3cml0dGVuIHVzaW5nIHNvbWUgbmF0aXZlXG4gKiBmdW5jdGlvbnMgYXMgcHJvdG90eXBlIHNldHVwIHVzaW5nIG5vcm1hbCBKYXZhU2NyaXB0IGRvZXMgbm90IHdvcmsgYXNcbiAqIGV4cGVjdGVkIGR1cmluZyBib290c3RyYXBwaW5nIChzZWUgbWlycm9yLmpzIGluIHIxMTQ5MDMpLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gd2hpY2ggbmVlZHMgdG8gaW5oZXJpdCB0aGVcbiAqICAgICBwcm90b3R5cGUuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gdG8gaW5oZXJpdCBwcm90b3R5cGUgZnJvbS5cbiAqL1xuZXhwb3J0cy5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmV4cG9ydHMuX2V4dGVuZCA9IGZ1bmN0aW9uKG9yaWdpbiwgYWRkKSB7XG4gIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIGFkZCBpc24ndCBhbiBvYmplY3RcbiAgaWYgKCFhZGQgfHwgIWlzT2JqZWN0KGFkZCkpIHJldHVybiBvcmlnaW47XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhZGQpO1xuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgb3JpZ2luW2tleXNbaV1dID0gYWRkW2tleXNbaV1dO1xuICB9XG4gIHJldHVybiBvcmlnaW47XG59O1xuXG5mdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxuXG52YXIga0N1c3RvbVByb21pc2lmaWVkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgPyBTeW1ib2woJ3V0aWwucHJvbWlzaWZ5LmN1c3RvbScpIDogdW5kZWZpbmVkO1xuXG5leHBvcnRzLnByb21pc2lmeSA9IGZ1bmN0aW9uIHByb21pc2lmeShvcmlnaW5hbCkge1xuICBpZiAodHlwZW9mIG9yaWdpbmFsICE9PSAnZnVuY3Rpb24nKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcIm9yaWdpbmFsXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uJyk7XG5cbiAgaWYgKGtDdXN0b21Qcm9taXNpZmllZFN5bWJvbCAmJiBvcmlnaW5hbFtrQ3VzdG9tUHJvbWlzaWZpZWRTeW1ib2xdKSB7XG4gICAgdmFyIGZuID0gb3JpZ2luYWxba0N1c3RvbVByb21pc2lmaWVkU3ltYm9sXTtcbiAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJ1dGlsLnByb21pc2lmeS5jdXN0b21cIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCBrQ3VzdG9tUHJvbWlzaWZpZWRTeW1ib2wsIHtcbiAgICAgIHZhbHVlOiBmbiwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgZnVuY3Rpb24gZm4oKSB7XG4gICAgdmFyIHByb21pc2VSZXNvbHZlLCBwcm9taXNlUmVqZWN0O1xuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgcHJvbWlzZVJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgcHJvbWlzZVJlamVjdCA9IHJlamVjdDtcbiAgICB9KTtcblxuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cbiAgICBhcmdzLnB1c2goZnVuY3Rpb24gKGVyciwgdmFsdWUpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcHJvbWlzZVJlamVjdChlcnIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvbWlzZVJlc29sdmUodmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcHJvbWlzZVJlamVjdChlcnIpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGZuLCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob3JpZ2luYWwpKTtcblxuICBpZiAoa0N1c3RvbVByb21pc2lmaWVkU3ltYm9sKSBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sIGtDdXN0b21Qcm9taXNpZmllZFN5bWJvbCwge1xuICAgIHZhbHVlOiBmbiwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoXG4gICAgZm4sXG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvcmlnaW5hbClcbiAgKTtcbn1cblxuZXhwb3J0cy5wcm9taXNpZnkuY3VzdG9tID0ga0N1c3RvbVByb21pc2lmaWVkU3ltYm9sXG5cbmZ1bmN0aW9uIGNhbGxiYWNraWZ5T25SZWplY3RlZChyZWFzb24sIGNiKSB7XG4gIC8vIGAhcmVhc29uYCBndWFyZCBpbnNwaXJlZCBieSBibHVlYmlyZCAoUmVmOiBodHRwczovL2dvby5nbC90NUlTNk0pLlxuICAvLyBCZWNhdXNlIGBudWxsYCBpcyBhIHNwZWNpYWwgZXJyb3IgdmFsdWUgaW4gY2FsbGJhY2tzIHdoaWNoIG1lYW5zIFwibm8gZXJyb3JcbiAgLy8gb2NjdXJyZWRcIiwgd2UgZXJyb3Itd3JhcCBzbyB0aGUgY2FsbGJhY2sgY29uc3VtZXIgY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW5cbiAgLy8gXCJ0aGUgcHJvbWlzZSByZWplY3RlZCB3aXRoIG51bGxcIiBvciBcInRoZSBwcm9taXNlIGZ1bGZpbGxlZCB3aXRoIHVuZGVmaW5lZFwiLlxuICBpZiAoIXJlYXNvbikge1xuICAgIHZhciBuZXdSZWFzb24gPSBuZXcgRXJyb3IoJ1Byb21pc2Ugd2FzIHJlamVjdGVkIHdpdGggYSBmYWxzeSB2YWx1ZScpO1xuICAgIG5ld1JlYXNvbi5yZWFzb24gPSByZWFzb247XG4gICAgcmVhc29uID0gbmV3UmVhc29uO1xuICB9XG4gIHJldHVybiBjYihyZWFzb24pO1xufVxuXG5mdW5jdGlvbiBjYWxsYmFja2lmeShvcmlnaW5hbCkge1xuICBpZiAodHlwZW9mIG9yaWdpbmFsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3JpZ2luYWxcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtcbiAgfVxuXG4gIC8vIFdlIERPIE5PVCByZXR1cm4gdGhlIHByb21pc2UgYXMgaXQgZ2l2ZXMgdGhlIHVzZXIgYSBmYWxzZSBzZW5zZSB0aGF0XG4gIC8vIHRoZSBwcm9taXNlIGlzIGFjdHVhbGx5IHNvbWVob3cgcmVsYXRlZCB0byB0aGUgY2FsbGJhY2sncyBleGVjdXRpb25cbiAgLy8gYW5kIHRoYXQgdGhlIGNhbGxiYWNrIHRocm93aW5nIHdpbGwgcmVqZWN0IHRoZSBwcm9taXNlLlxuICBmdW5jdGlvbiBjYWxsYmFja2lmaWVkKCkge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cblxuICAgIHZhciBtYXliZUNiID0gYXJncy5wb3AoKTtcbiAgICBpZiAodHlwZW9mIG1heWJlQ2IgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBsYXN0IGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbicpO1xuICAgIH1cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNiID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gbWF5YmVDYi5hcHBseShzZWxmLCBhcmd1bWVudHMpO1xuICAgIH07XG4gICAgLy8gSW4gdHJ1ZSBub2RlIHN0eWxlIHdlIHByb2Nlc3MgdGhlIGNhbGxiYWNrIG9uIGBuZXh0VGlja2Agd2l0aCBhbGwgdGhlXG4gICAgLy8gaW1wbGljYXRpb25zIChzdGFjaywgYHVuY2F1Z2h0RXhjZXB0aW9uYCwgYGFzeW5jX2hvb2tzYClcbiAgICBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKVxuICAgICAgLnRoZW4oZnVuY3Rpb24ocmV0KSB7IHByb2Nlc3MubmV4dFRpY2soY2IuYmluZChudWxsLCBudWxsLCByZXQpKSB9LFxuICAgICAgICAgICAgZnVuY3Rpb24ocmVqKSB7IHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2tpZnlPblJlamVjdGVkLmJpbmQobnVsbCwgcmVqLCBjYikpIH0pO1xuICB9XG5cbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGNhbGxiYWNraWZpZWQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihvcmlnaW5hbCkpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjYWxsYmFja2lmaWVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9yaWdpbmFsKSk7XG4gIHJldHVybiBjYWxsYmFja2lmaWVkO1xufVxuZXhwb3J0cy5jYWxsYmFja2lmeSA9IGNhbGxiYWNraWZ5O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZm9yRWFjaCA9IHJlcXVpcmUoJ2ZvcmVhY2gnKTtcbnZhciBhdmFpbGFibGVUeXBlZEFycmF5cyA9IHJlcXVpcmUoJ2F2YWlsYWJsZS10eXBlZC1hcnJheXMnKTtcbnZhciBjYWxsQm91bmQgPSByZXF1aXJlKCdjYWxsLWJpbmQvY2FsbEJvdW5kJyk7XG5cbnZhciAkdG9TdHJpbmcgPSBjYWxsQm91bmQoJ09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcnKTtcbnZhciBoYXNTeW1ib2xzID0gcmVxdWlyZSgnaGFzLXN5bWJvbHMnKSgpO1xudmFyIGhhc1RvU3RyaW5nVGFnID0gaGFzU3ltYm9scyAmJiB0eXBlb2YgU3ltYm9sLnRvU3RyaW5nVGFnID09PSAnc3ltYm9sJztcblxudmFyIHR5cGVkQXJyYXlzID0gYXZhaWxhYmxlVHlwZWRBcnJheXMoKTtcblxudmFyICRzbGljZSA9IGNhbGxCb3VuZCgnU3RyaW5nLnByb3RvdHlwZS5zbGljZScpO1xudmFyIHRvU3RyVGFncyA9IHt9O1xudmFyIGdPUEQgPSByZXF1aXJlKCdlcy1hYnN0cmFjdC9oZWxwZXJzL2dldE93blByb3BlcnR5RGVzY3JpcHRvcicpO1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mOyAvLyByZXF1aXJlKCdnZXRwcm90b3R5cGVvZicpO1xuaWYgKGhhc1RvU3RyaW5nVGFnICYmIGdPUEQgJiYgZ2V0UHJvdG90eXBlT2YpIHtcblx0Zm9yRWFjaCh0eXBlZEFycmF5cywgZnVuY3Rpb24gKHR5cGVkQXJyYXkpIHtcblx0XHRpZiAodHlwZW9mIGdsb2JhbFt0eXBlZEFycmF5XSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dmFyIGFyciA9IG5ldyBnbG9iYWxbdHlwZWRBcnJheV0oKTtcblx0XHRcdGlmICghKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBhcnIpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFdmFsRXJyb3IoJ3RoaXMgZW5naW5lIGhhcyBzdXBwb3J0IGZvciBTeW1ib2wudG9TdHJpbmdUYWcsIGJ1dCAnICsgdHlwZWRBcnJheSArICcgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVydHkhIFBsZWFzZSByZXBvcnQgdGhpcy4nKTtcblx0XHRcdH1cblx0XHRcdHZhciBwcm90byA9IGdldFByb3RvdHlwZU9mKGFycik7XG5cdFx0XHR2YXIgZGVzY3JpcHRvciA9IGdPUEQocHJvdG8sIFN5bWJvbC50b1N0cmluZ1RhZyk7XG5cdFx0XHRpZiAoIWRlc2NyaXB0b3IpIHtcblx0XHRcdFx0dmFyIHN1cGVyUHJvdG8gPSBnZXRQcm90b3R5cGVPZihwcm90byk7XG5cdFx0XHRcdGRlc2NyaXB0b3IgPSBnT1BEKHN1cGVyUHJvdG8sIFN5bWJvbC50b1N0cmluZ1RhZyk7XG5cdFx0XHR9XG5cdFx0XHR0b1N0clRhZ3NbdHlwZWRBcnJheV0gPSBkZXNjcmlwdG9yLmdldDtcblx0XHR9XG5cdH0pO1xufVxuXG52YXIgdHJ5VHlwZWRBcnJheXMgPSBmdW5jdGlvbiB0cnlBbGxUeXBlZEFycmF5cyh2YWx1ZSkge1xuXHR2YXIgZm91bmROYW1lID0gZmFsc2U7XG5cdGZvckVhY2godG9TdHJUYWdzLCBmdW5jdGlvbiAoZ2V0dGVyLCB0eXBlZEFycmF5KSB7XG5cdFx0aWYgKCFmb3VuZE5hbWUpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHZhciBuYW1lID0gZ2V0dGVyLmNhbGwodmFsdWUpO1xuXHRcdFx0XHRpZiAobmFtZSA9PT0gdHlwZWRBcnJheSkge1xuXHRcdFx0XHRcdGZvdW5kTmFtZSA9IG5hbWU7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGUpIHt9XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGZvdW5kTmFtZTtcbn07XG5cbnZhciBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCdpcy10eXBlZC1hcnJheScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkge1xuXHRpZiAoIWlzVHlwZWRBcnJheSh2YWx1ZSkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICghaGFzVG9TdHJpbmdUYWcpIHsgcmV0dXJuICRzbGljZSgkdG9TdHJpbmcodmFsdWUpLCA4LCAtMSk7IH1cblx0cmV0dXJuIHRyeVR5cGVkQXJyYXlzKHZhbHVlKTtcbn07XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIl9fd2VicGFja19yZXF1aXJlX18ubm1kID0gKG1vZHVsZSkgPT4ge1xuXHRtb2R1bGUucGF0aHMgPSBbXTtcblx0aWYgKCFtb2R1bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xuXHRyZXR1cm4gbW9kdWxlO1xufTsiLCIvLyBzdGFydHVwXG4vLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8vIFRoaXMgZW50cnkgbW9kdWxlIGRvZXNuJ3QgdGVsbCBhYm91dCBpdCdzIHRvcC1sZXZlbCBkZWNsYXJhdGlvbnMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg2NzcpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +(()=>{var t={9809:(t,e,r)=>{"use strict";const i=e;i.bignum=r(4590),i.define=r(2500).define,i.base=r(1979),i.constants=r(6826),i.decoders=r(8307),i.encoders=r(6579)},2500:(t,e,r)=>{"use strict";const i=r(6579),n=r(8307),o=r(5717);function s(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}e.define=function(t,e){return new s(t,e)},s.prototype._createNamed=function(t){const e=this.name;function r(t){this._initNamed(t,e)}return o(r,t),r.prototype._initNamed=function(e,r){t.call(this,e,r)},new r(this)},s.prototype._getDecoder=function(t){return t=t||"der",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(n[t])),this.decoders[t]},s.prototype.decode=function(t,e,r){return this._getDecoder(e).decode(t,r)},s.prototype._getEncoder=function(t){return t=t||"der",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(i[t])),this.encoders[t]},s.prototype.encode=function(t,e,r){return this._getEncoder(e).encode(t,r)}},6625:(t,e,r)=>{"use strict";const i=r(5717),n=r(8465).b,o=r(2399).Buffer;function s(t,e){n.call(this,e),o.isBuffer(t)?(this.base=t,this.offset=0,this.length=t.length):this.error("Input not Buffer")}function a(t,e){if(Array.isArray(t))this.length=0,this.value=t.map((function(t){return a.isEncoderBuffer(t)||(t=new a(t,e)),this.length+=t.length,t}),this);else if("number"==typeof t){if(!(0<=t&&t<=255))return e.error("non-byte EncoderBuffer value");this.value=t,this.length=1}else if("string"==typeof t)this.value=t,this.length=o.byteLength(t);else{if(!o.isBuffer(t))return e.error("Unsupported type: "+typeof t);this.value=t,this.length=t.length}}i(s,n),e.C=s,s.isDecoderBuffer=function(t){return t instanceof s||"object"==typeof t&&o.isBuffer(t.base)&&"DecoderBuffer"===t.constructor.name&&"number"==typeof t.offset&&"number"==typeof t.length&&"function"==typeof t.save&&"function"==typeof t.restore&&"function"==typeof t.isEmpty&&"function"==typeof t.readUInt8&&"function"==typeof t.skip&&"function"==typeof t.raw},s.prototype.save=function(){return{offset:this.offset,reporter:n.prototype.save.call(this)}},s.prototype.restore=function(t){const e=new s(this.base);return e.offset=t.offset,e.length=this.offset,this.offset=t.offset,n.prototype.restore.call(this,t.reporter),e},s.prototype.isEmpty=function(){return this.offset===this.length},s.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||"DecoderBuffer overrun")},s.prototype.skip=function(t,e){if(!(this.offset+t<=this.length))return this.error(e||"DecoderBuffer overrun");const r=new s(this.base);return r._reporterState=this._reporterState,r.offset=this.offset,r.length=this.offset+t,this.offset+=t,r},s.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)},e.R=a,a.isEncoderBuffer=function(t){return t instanceof a||"object"==typeof t&&"EncoderBuffer"===t.constructor.name&&"number"==typeof t.length&&"function"==typeof t.join},a.prototype.join=function(t,e){return t||(t=o.alloc(this.length)),e||(e=0),0===this.length||(Array.isArray(this.value)?this.value.forEach((function(r){r.join(t,e),e+=r.length})):("number"==typeof this.value?t[e]=this.value:"string"==typeof this.value?t.write(this.value,e):o.isBuffer(this.value)&&this.value.copy(t,e),e+=this.length)),t}},1979:(t,e,r)=>{"use strict";const i=e;i.Reporter=r(8465).b,i.DecoderBuffer=r(6625).C,i.EncoderBuffer=r(6625).R,i.Node=r(1949)},1949:(t,e,r)=>{"use strict";const i=r(8465).b,n=r(6625).R,o=r(6625).C,s=r(9746),a=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],h=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(a);function u(t,e,r){const i={};this._baseState=i,i.name=r,i.enc=t,i.parent=e||null,i.children=null,i.tag=null,i.args=null,i.reverseArgs=null,i.choice=null,i.optional=!1,i.any=!1,i.obj=!1,i.use=null,i.useDecoder=null,i.key=null,i.default=null,i.explicit=null,i.implicit=null,i.contains=null,i.parent||(i.children=[],this._wrap())}t.exports=u;const c=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];u.prototype.clone=function(){const t=this._baseState,e={};c.forEach((function(r){e[r]=t[r]}));const r=new this.constructor(e.parent);return r._baseState=e,r},u.prototype._wrap=function(){const t=this._baseState;h.forEach((function(e){this[e]=function(){const r=new this.constructor(this);return t.children.push(r),r[e].apply(r,arguments)}}),this)},u.prototype._init=function(t){const e=this._baseState;s(null===e.parent),t.call(this),e.children=e.children.filter((function(t){return t._baseState.parent===this}),this),s.equal(e.children.length,1,"Root node can have only one child")},u.prototype._useArgs=function(t){const e=this._baseState,r=t.filter((function(t){return t instanceof this.constructor}),this);t=t.filter((function(t){return!(t instanceof this.constructor)}),this),0!==r.length&&(s(null===e.children),e.children=r,r.forEach((function(t){t._baseState.parent=this}),this)),0!==t.length&&(s(null===e.args),e.args=t,e.reverseArgs=t.map((function(t){if("object"!=typeof t||t.constructor!==Object)return t;const e={};return Object.keys(t).forEach((function(r){r==(0|r)&&(r|=0);const i=t[r];e[i]=r})),e})))},["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"].forEach((function(t){u.prototype[t]=function(){const e=this._baseState;throw new Error(t+" not implemented for encoding: "+e.enc)}})),a.forEach((function(t){u.prototype[t]=function(){const e=this._baseState,r=Array.prototype.slice.call(arguments);return s(null===e.tag),e.tag=t,this._useArgs(r),this}})),u.prototype.use=function(t){s(t);const e=this._baseState;return s(null===e.use),e.use=t,this},u.prototype.optional=function(){return this._baseState.optional=!0,this},u.prototype.def=function(t){const e=this._baseState;return s(null===e.default),e.default=t,e.optional=!0,this},u.prototype.explicit=function(t){const e=this._baseState;return s(null===e.explicit&&null===e.implicit),e.explicit=t,this},u.prototype.implicit=function(t){const e=this._baseState;return s(null===e.explicit&&null===e.implicit),e.implicit=t,this},u.prototype.obj=function(){const t=this._baseState,e=Array.prototype.slice.call(arguments);return t.obj=!0,0!==e.length&&this._useArgs(e),this},u.prototype.key=function(t){const e=this._baseState;return s(null===e.key),e.key=t,this},u.prototype.any=function(){return this._baseState.any=!0,this},u.prototype.choice=function(t){const e=this._baseState;return s(null===e.choice),e.choice=t,this._useArgs(Object.keys(t).map((function(e){return t[e]}))),this},u.prototype.contains=function(t){const e=this._baseState;return s(null===e.use),e.contains=t,this},u.prototype._decode=function(t,e){const r=this._baseState;if(null===r.parent)return t.wrapResult(r.children[0]._decode(t,e));let i,n=r.default,s=!0,a=null;if(null!==r.key&&(a=t.enterKey(r.key)),r.optional){let i=null;if(null!==r.explicit?i=r.explicit:null!==r.implicit?i=r.implicit:null!==r.tag&&(i=r.tag),null!==i||r.any){if(s=this._peekTag(t,i,r.any),t.isError(s))return s}else{const i=t.save();try{null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),s=!0}catch(t){s=!1}t.restore(i)}}if(r.obj&&s&&(i=t.enterObject()),s){if(null!==r.explicit){const e=this._decodeTag(t,r.explicit);if(t.isError(e))return e;t=e}const i=t.offset;if(null===r.use&&null===r.choice){let e;r.any&&(e=t.save());const i=this._decodeTag(t,null!==r.implicit?r.implicit:r.tag,r.any);if(t.isError(i))return i;r.any?n=t.raw(e):t=i}if(e&&e.track&&null!==r.tag&&e.track(t.path(),i,t.length,"tagged"),e&&e.track&&null!==r.tag&&e.track(t.path(),t.offset,t.length,"content"),r.any||(n=null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e)),t.isError(n))return n;if(r.any||null!==r.choice||null===r.children||r.children.forEach((function(r){r._decode(t,e)})),r.contains&&("octstr"===r.tag||"bitstr"===r.tag)){const i=new o(n);n=this._getUse(r.contains,t._reporterState.obj)._decode(i,e)}}return r.obj&&s&&(n=t.leaveObject(i)),null===r.key||null===n&&!0!==s?null!==a&&t.exitKey(a):t.leaveKey(a,r.key,n),n},u.prototype._decodeGeneric=function(t,e,r){const i=this._baseState;return"seq"===t||"set"===t?null:"seqof"===t||"setof"===t?this._decodeList(e,t,i.args[0],r):/str$/.test(t)?this._decodeStr(e,t,r):"objid"===t&&i.args?this._decodeObjid(e,i.args[0],i.args[1],r):"objid"===t?this._decodeObjid(e,null,null,r):"gentime"===t||"utctime"===t?this._decodeTime(e,t,r):"null_"===t?this._decodeNull(e,r):"bool"===t?this._decodeBool(e,r):"objDesc"===t?this._decodeStr(e,t,r):"int"===t||"enum"===t?this._decodeInt(e,i.args&&i.args[0],r):null!==i.use?this._getUse(i.use,e._reporterState.obj)._decode(e,r):e.error("unknown tag: "+t)},u.prototype._getUse=function(t,e){const r=this._baseState;return r.useDecoder=this._use(t,e),s(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},u.prototype._decodeChoice=function(t,e){const r=this._baseState;let i=null,n=!1;return Object.keys(r.choice).some((function(o){const s=t.save(),a=r.choice[o];try{const r=a._decode(t,e);if(t.isError(r))return!1;i={type:o,value:r},n=!0}catch(e){return t.restore(s),!1}return!0}),this),n?i:t.error("Choice not matched")},u.prototype._createEncoderBuffer=function(t){return new n(t,this.reporter)},u.prototype._encode=function(t,e,r){const i=this._baseState;if(null!==i.default&&i.default===t)return;const n=this._encodeValue(t,e,r);return void 0===n||this._skipDefault(n,e,r)?void 0:n},u.prototype._encodeValue=function(t,e,r){const n=this._baseState;if(null===n.parent)return n.children[0]._encode(t,e||new i);let o=null;if(this.reporter=e,n.optional&&void 0===t){if(null===n.default)return;t=n.default}let s=null,a=!1;if(n.any)o=this._createEncoderBuffer(t);else if(n.choice)o=this._encodeChoice(t,e);else if(n.contains)s=this._getUse(n.contains,r)._encode(t,e),a=!0;else if(n.children)s=n.children.map((function(r){if("null_"===r._baseState.tag)return r._encode(null,e,t);if(null===r._baseState.key)return e.error("Child should have a key");const i=e.enterKey(r._baseState.key);if("object"!=typeof t)return e.error("Child expected, but input is not object");const n=r._encode(t[r._baseState.key],e,t);return e.leaveKey(i),n}),this).filter((function(t){return t})),s=this._createEncoderBuffer(s);else if("seqof"===n.tag||"setof"===n.tag){if(!n.args||1!==n.args.length)return e.error("Too many args for : "+n.tag);if(!Array.isArray(t))return e.error("seqof/setof, but data is not Array");const r=this.clone();r._baseState.implicit=null,s=this._createEncoderBuffer(t.map((function(r){const i=this._baseState;return this._getUse(i.args[0],t)._encode(r,e)}),r))}else null!==n.use?o=this._getUse(n.use,r)._encode(t,e):(s=this._encodePrimitive(n.tag,t),a=!0);if(!n.any&&null===n.choice){const t=null!==n.implicit?n.implicit:n.tag,r=null===n.implicit?"universal":"context";null===t?null===n.use&&e.error("Tag could be omitted only for .use()"):null===n.use&&(o=this._encodeComposite(t,a,r,s))}return null!==n.explicit&&(o=this._encodeComposite(n.explicit,!1,"context",o)),o},u.prototype._encodeChoice=function(t,e){const r=this._baseState,i=r.choice[t.type];return i||s(!1,t.type+" not found in "+JSON.stringify(Object.keys(r.choice))),i._encode(t.value,e)},u.prototype._encodePrimitive=function(t,e){const r=this._baseState;if(/str$/.test(t))return this._encodeStr(e,t);if("objid"===t&&r.args)return this._encodeObjid(e,r.reverseArgs[0],r.args[1]);if("objid"===t)return this._encodeObjid(e,null,null);if("gentime"===t||"utctime"===t)return this._encodeTime(e,t);if("null_"===t)return this._encodeNull();if("int"===t||"enum"===t)return this._encodeInt(e,r.args&&r.reverseArgs[0]);if("bool"===t)return this._encodeBool(e);if("objDesc"===t)return this._encodeStr(e,t);throw new Error("Unsupported tag: "+t)},u.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},u.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(t)}},8465:(t,e,r)=>{"use strict";const i=r(5717);function n(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function o(t,e){this.path=t,this.rethrow(e)}e.b=n,n.prototype.isError=function(t){return t instanceof o},n.prototype.save=function(){const t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},n.prototype.restore=function(t){const e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},n.prototype.enterKey=function(t){return this._reporterState.path.push(t)},n.prototype.exitKey=function(t){const e=this._reporterState;e.path=e.path.slice(0,t-1)},n.prototype.leaveKey=function(t,e,r){const i=this._reporterState;this.exitKey(t),null!==i.obj&&(i.obj[e]=r)},n.prototype.path=function(){return this._reporterState.path.join("/")},n.prototype.enterObject=function(){const t=this._reporterState,e=t.obj;return t.obj={},e},n.prototype.leaveObject=function(t){const e=this._reporterState,r=e.obj;return e.obj=t,r},n.prototype.error=function(t){let e;const r=this._reporterState,i=t instanceof o;if(e=i?t:new o(r.path.map((function(t){return"["+JSON.stringify(t)+"]"})).join(""),t.message||t,t.stack),!r.options.partial)throw e;return i||r.errors.push(e),e},n.prototype.wrapResult=function(t){const e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},i(o,Error),o.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,o),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},160:(t,e)=>{"use strict";function r(t){const e={};return Object.keys(t).forEach((function(r){(0|r)==r&&(r|=0);const i=t[r];e[i]=r})),e}e.tagClass={0:"universal",1:"application",2:"context",3:"private"},e.tagClassByName=r(e.tagClass),e.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},e.tagByName=r(e.tag)},6826:(t,e,r)=>{"use strict";const i=e;i._reverse=function(t){const e={};return Object.keys(t).forEach((function(r){(0|r)==r&&(r|=0);const i=t[r];e[i]=r})),e},i.der=r(160)},1671:(t,e,r)=>{"use strict";const i=r(5717),n=r(4590),o=r(6625).C,s=r(1949),a=r(160);function h(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new u,this.tree._init(t.body)}function u(t){s.call(this,"der",t)}function c(t,e){let r=t.readUInt8(e);if(t.isError(r))return r;const i=a.tagClass[r>>6],n=0==(32&r);if(31==(31&r)){let i=r;for(r=0;128==(128&i);){if(i=t.readUInt8(e),t.isError(i))return i;r<<=7,r|=127&i}}else r&=31;return{cls:i,primitive:n,tag:r,tagStr:a.tag[r]}}function l(t,e,r){let i=t.readUInt8(r);if(t.isError(i))return i;if(!e&&128===i)return null;if(0==(128&i))return i;const n=127&i;if(n>4)return t.error("length octect is too long");i=0;for(let e=0;e{"use strict";const i=e;i.der=r(1671),i.pem=r(9631)},9631:(t,e,r)=>{"use strict";const i=r(5717),n=r(2399).Buffer,o=r(1671);function s(t){o.call(this,t),this.enc="pem"}i(s,o),t.exports=s,s.prototype.decode=function(t,e){const r=t.toString().split(/[\r\n]+/g),i=e.label.toUpperCase(),s=/^-----(BEGIN|END) ([^-]+)-----$/;let a=-1,h=-1;for(let t=0;t{"use strict";const i=r(5717),n=r(2399).Buffer,o=r(1949),s=r(160);function a(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new h,this.tree._init(t.body)}function h(t){o.call(this,"der",t)}function u(t){return t<10?"0"+t:t}t.exports=a,a.prototype.encode=function(t,e){return this.tree._encode(t,e).join()},i(h,o),h.prototype._encodeComposite=function(t,e,r,i){const o=function(t,e,r,i){let n;if("seqof"===t?t="seq":"setof"===t&&(t="set"),s.tagByName.hasOwnProperty(t))n=s.tagByName[t];else{if("number"!=typeof t||(0|t)!==t)return i.error("Unknown tag: "+t);n=t}return n>=31?i.error("Multi-octet tag encoding unsupported"):(e||(n|=32),n|=s.tagClassByName[r||"universal"]<<6,n)}(t,e,r,this.reporter);if(i.length<128){const t=n.alloc(2);return t[0]=o,t[1]=i.length,this._createEncoderBuffer([t,i])}let a=1;for(let t=i.length;t>=256;t>>=8)a++;const h=n.alloc(2+a);h[0]=o,h[1]=128|a;for(let t=1+a,e=i.length;e>0;t--,e>>=8)h[t]=255&e;return this._createEncoderBuffer([h,i])},h.prototype._encodeStr=function(t,e){if("bitstr"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if("bmpstr"===e){const e=n.alloc(2*t.length);for(let r=0;r=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,40*t[0]+t[1])}let i=0;for(let e=0;e=128;r>>=7)i++}const o=n.alloc(i);let s=o.length-1;for(let e=t.length-1;e>=0;e--){let r=t[e];for(o[s--]=127&r;(r>>=7)>0;)o[s--]=128|127&r}return this._createEncoderBuffer(o)},h.prototype._encodeTime=function(t,e){let r;const i=new Date(t);return"gentime"===e?r=[u(i.getUTCFullYear()),u(i.getUTCMonth()+1),u(i.getUTCDate()),u(i.getUTCHours()),u(i.getUTCMinutes()),u(i.getUTCSeconds()),"Z"].join(""):"utctime"===e?r=[u(i.getUTCFullYear()%100),u(i.getUTCMonth()+1),u(i.getUTCDate()),u(i.getUTCHours()),u(i.getUTCMinutes()),u(i.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+e+" time is not supported yet"),this._encodeStr(r,"octstr")},h.prototype._encodeNull=function(){return this._createEncoderBuffer("")},h.prototype._encodeInt=function(t,e){if("string"==typeof t){if(!e)return this.reporter.error("String int or enum given, but no values map");if(!e.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=e[t]}if("number"!=typeof t&&!n.isBuffer(t)){const e=t.toArray();!t.sign&&128&e[0]&&e.unshift(0),t=n.from(e)}if(n.isBuffer(t)){let e=t.length;0===t.length&&e++;const r=n.alloc(e);return t.copy(r),0===t.length&&(r[0]=0),this._createEncoderBuffer(r)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);let r=1;for(let e=t;e>=256;e>>=8)r++;const i=new Array(r);for(let e=i.length-1;e>=0;e--)i[e]=255&t,t>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(n.from(i))},h.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},h.prototype._use=function(t,e){return"function"==typeof t&&(t=t(e)),t._getEncoder("der").tree},h.prototype._skipDefault=function(t,e,r){const i=this._baseState;let n;if(null===i.default)return!1;const o=t.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,e,r).join()),o.length!==i.defaultBuffer.length)return!1;for(n=0;n{"use strict";const i=e;i.der=r(6984),i.pem=r(2883)},2883:(t,e,r)=>{"use strict";const i=r(5717),n=r(6984);function o(t){n.call(this,t),this.enc="pem"}i(o,n),t.exports=o,o.prototype.encode=function(t,e){const r=n.prototype.encode.call(this,t).toString("base64"),i=["-----BEGIN "+e.label+"-----"];for(let t=0;t=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,c=r;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,d=Math.min(u,e.length-1),f=Math.max(0,u-t.length+1);f<=d;f++){var A=u-f|0;c+=(s=(n=0|t.words[A])*(o=0|e.words[f])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|c}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?c[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=l[t],f=d[t];r="";var A=this.clone();for(A.negative=0;!A.isZero();){var g=A.modn(f).toString(t);r=(A=A.idivn(f)).isZero()?g+r:c[u-g.length]+g+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),c=this.clone();if(h){for(a=0;!c.isZero();a++)s=c.andln(255),c.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],A=8191&f,g=f>>>13,M=0|s[2],B=8191&M,w=M>>>13,E=0|s[3],p=8191&E,m=E>>>13,y=0|s[4],b=8191&y,Q=y>>>13,I=0|s[5],C=8191&I,D=I>>>13,N=0|s[6],v=8191&N,G=N>>>13,R=0|s[7],Y=8191&R,U=R>>>13,V=0|s[8],T=8191&V,S=V>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,H=j>>>13,z=0|a[1],x=8191&z,O=z>>>13,W=0|a[2],J=8191&W,X=W>>>13,K=0|a[3],P=8191&K,_=K>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ct=0|a[8],lt=8191&ct,dt=ct>>>13,ft=0|a[9],At=8191&ft,gt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(l,Z))|0)+((8191&(n=(n=Math.imul(l,H))+Math.imul(d,Z)|0))<<13)|0;u=((o=Math.imul(d,H))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(A,Z),n=(n=Math.imul(A,H))+Math.imul(g,Z)|0,o=Math.imul(g,H);var Bt=(u+(i=i+Math.imul(l,x)|0)|0)+((8191&(n=(n=n+Math.imul(l,O)|0)+Math.imul(d,x)|0))<<13)|0;u=((o=o+Math.imul(d,O)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(B,Z),n=(n=Math.imul(B,H))+Math.imul(w,Z)|0,o=Math.imul(w,H),i=i+Math.imul(A,x)|0,n=(n=n+Math.imul(A,O)|0)+Math.imul(g,x)|0,o=o+Math.imul(g,O)|0;var wt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(d,J)|0))<<13)|0;u=((o=o+Math.imul(d,X)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,H))+Math.imul(m,Z)|0,o=Math.imul(m,H),i=i+Math.imul(B,x)|0,n=(n=n+Math.imul(B,O)|0)+Math.imul(w,x)|0,o=o+Math.imul(w,O)|0,i=i+Math.imul(A,J)|0,n=(n=n+Math.imul(A,X)|0)+Math.imul(g,J)|0,o=o+Math.imul(g,X)|0;var Et=(u+(i=i+Math.imul(l,P)|0)|0)+((8191&(n=(n=n+Math.imul(l,_)|0)+Math.imul(d,P)|0))<<13)|0;u=((o=o+Math.imul(d,_)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,H))+Math.imul(Q,Z)|0,o=Math.imul(Q,H),i=i+Math.imul(p,x)|0,n=(n=n+Math.imul(p,O)|0)+Math.imul(m,x)|0,o=o+Math.imul(m,O)|0,i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,X)|0)+Math.imul(w,J)|0,o=o+Math.imul(w,X)|0,i=i+Math.imul(A,P)|0,n=(n=n+Math.imul(A,_)|0)+Math.imul(g,P)|0,o=o+Math.imul(g,_)|0;var pt=(u+(i=i+Math.imul(l,$)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(d,$)|0))<<13)|0;u=((o=o+Math.imul(d,tt)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,H))+Math.imul(D,Z)|0,o=Math.imul(D,H),i=i+Math.imul(b,x)|0,n=(n=n+Math.imul(b,O)|0)+Math.imul(Q,x)|0,o=o+Math.imul(Q,O)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0,i=i+Math.imul(B,P)|0,n=(n=n+Math.imul(B,_)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,_)|0,i=i+Math.imul(A,$)|0,n=(n=n+Math.imul(A,tt)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,tt)|0;var mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(d,rt)|0))<<13)|0;u=((o=o+Math.imul(d,it)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(v,Z),n=(n=Math.imul(v,H))+Math.imul(G,Z)|0,o=Math.imul(G,H),i=i+Math.imul(C,x)|0,n=(n=n+Math.imul(C,O)|0)+Math.imul(D,x)|0,o=o+Math.imul(D,O)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(Q,J)|0,o=o+Math.imul(Q,X)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,_)|0)+Math.imul(m,P)|0,o=o+Math.imul(m,_)|0,i=i+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(A,rt)|0,n=(n=n+Math.imul(A,it)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0;var yt=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(d,ot)|0))<<13)|0;u=((o=o+Math.imul(d,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Y,Z),n=(n=Math.imul(Y,H))+Math.imul(U,Z)|0,o=Math.imul(U,H),i=i+Math.imul(v,x)|0,n=(n=n+Math.imul(v,O)|0)+Math.imul(G,x)|0,o=o+Math.imul(G,O)|0,i=i+Math.imul(C,J)|0,n=(n=n+Math.imul(C,X)|0)+Math.imul(D,J)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,_)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,_)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0,i=i+Math.imul(B,rt)|0,n=(n=n+Math.imul(B,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(A,ot)|0,n=(n=n+Math.imul(A,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var bt=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(d,ht)|0))<<13)|0;u=((o=o+Math.imul(d,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,H))+Math.imul(S,Z)|0,o=Math.imul(S,H),i=i+Math.imul(Y,x)|0,n=(n=n+Math.imul(Y,O)|0)+Math.imul(U,x)|0,o=o+Math.imul(U,O)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(G,J)|0,o=o+Math.imul(G,X)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,_)|0)+Math.imul(D,P)|0,o=o+Math.imul(D,_)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0,i=i+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(A,ht)|0,n=(n=n+Math.imul(A,ut)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,ut)|0;var Qt=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,dt)|0)+Math.imul(d,lt)|0))<<13)|0;u=((o=o+Math.imul(d,dt)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,H))+Math.imul(L,Z)|0,o=Math.imul(L,H),i=i+Math.imul(T,x)|0,n=(n=n+Math.imul(T,O)|0)+Math.imul(S,x)|0,o=o+Math.imul(S,O)|0,i=i+Math.imul(Y,J)|0,n=(n=n+Math.imul(Y,X)|0)+Math.imul(U,J)|0,o=o+Math.imul(U,X)|0,i=i+Math.imul(v,P)|0,n=(n=n+Math.imul(v,_)|0)+Math.imul(G,P)|0,o=o+Math.imul(G,_)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0,i=i+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(A,lt)|0,n=(n=n+Math.imul(A,dt)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,dt)|0;var It=(u+(i=i+Math.imul(l,At)|0)|0)+((8191&(n=(n=n+Math.imul(l,gt)|0)+Math.imul(d,At)|0))<<13)|0;u=((o=o+Math.imul(d,gt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,x),n=(n=Math.imul(F,O))+Math.imul(L,x)|0,o=Math.imul(L,O),i=i+Math.imul(T,J)|0,n=(n=n+Math.imul(T,X)|0)+Math.imul(S,J)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(Y,P)|0,n=(n=n+Math.imul(Y,_)|0)+Math.imul(U,P)|0,o=o+Math.imul(U,_)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(G,$)|0,o=o+Math.imul(G,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(D,rt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0,i=i+Math.imul(B,lt)|0,n=(n=n+Math.imul(B,dt)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,dt)|0;var Ct=(u+(i=i+Math.imul(A,At)|0)|0)+((8191&(n=(n=n+Math.imul(A,gt)|0)+Math.imul(g,At)|0))<<13)|0;u=((o=o+Math.imul(g,gt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,X))+Math.imul(L,J)|0,o=Math.imul(L,X),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,_)|0)+Math.imul(S,P)|0,o=o+Math.imul(S,_)|0,i=i+Math.imul(Y,$)|0,n=(n=n+Math.imul(Y,tt)|0)+Math.imul(U,$)|0,o=o+Math.imul(U,tt)|0,i=i+Math.imul(v,rt)|0,n=(n=n+Math.imul(v,it)|0)+Math.imul(G,rt)|0,o=o+Math.imul(G,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,dt)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,dt)|0;var Dt=(u+(i=i+Math.imul(B,At)|0)|0)+((8191&(n=(n=n+Math.imul(B,gt)|0)+Math.imul(w,At)|0))<<13)|0;u=((o=o+Math.imul(w,gt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,_))+Math.imul(L,P)|0,o=Math.imul(L,_),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(S,$)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(Y,rt)|0,n=(n=n+Math.imul(Y,it)|0)+Math.imul(U,rt)|0,o=o+Math.imul(U,it)|0,i=i+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,st)|0)+Math.imul(G,ot)|0,o=o+Math.imul(G,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,dt)|0)+Math.imul(Q,lt)|0,o=o+Math.imul(Q,dt)|0;var Nt=(u+(i=i+Math.imul(p,At)|0)|0)+((8191&(n=(n=n+Math.imul(p,gt)|0)+Math.imul(m,At)|0))<<13)|0;u=((o=o+Math.imul(m,gt)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(Y,ot)|0,n=(n=n+Math.imul(Y,st)|0)+Math.imul(U,ot)|0,o=o+Math.imul(U,st)|0,i=i+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(G,ht)|0,o=o+Math.imul(G,ut)|0,i=i+Math.imul(C,lt)|0,n=(n=n+Math.imul(C,dt)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,dt)|0;var vt=(u+(i=i+Math.imul(b,At)|0)|0)+((8191&(n=(n=n+Math.imul(b,gt)|0)+Math.imul(Q,At)|0))<<13)|0;u=((o=o+Math.imul(Q,gt)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(Y,ht)|0,n=(n=n+Math.imul(Y,ut)|0)+Math.imul(U,ht)|0,o=o+Math.imul(U,ut)|0,i=i+Math.imul(v,lt)|0,n=(n=n+Math.imul(v,dt)|0)+Math.imul(G,lt)|0,o=o+Math.imul(G,dt)|0;var Gt=(u+(i=i+Math.imul(C,At)|0)|0)+((8191&(n=(n=n+Math.imul(C,gt)|0)+Math.imul(D,At)|0))<<13)|0;u=((o=o+Math.imul(D,gt)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,ut)|0,i=i+Math.imul(Y,lt)|0,n=(n=n+Math.imul(Y,dt)|0)+Math.imul(U,lt)|0,o=o+Math.imul(U,dt)|0;var Rt=(u+(i=i+Math.imul(v,At)|0)|0)+((8191&(n=(n=n+Math.imul(v,gt)|0)+Math.imul(G,At)|0))<<13)|0;u=((o=o+Math.imul(G,gt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,lt)|0,n=(n=n+Math.imul(T,dt)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,dt)|0;var Yt=(u+(i=i+Math.imul(Y,At)|0)|0)+((8191&(n=(n=n+Math.imul(Y,gt)|0)+Math.imul(U,At)|0))<<13)|0;u=((o=o+Math.imul(U,gt)|0)+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(F,lt),n=(n=Math.imul(F,dt))+Math.imul(L,lt)|0,o=Math.imul(L,dt);var Ut=(u+(i=i+Math.imul(T,At)|0)|0)+((8191&(n=(n=n+Math.imul(T,gt)|0)+Math.imul(S,At)|0))<<13)|0;u=((o=o+Math.imul(S,gt)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863;var Vt=(u+(i=Math.imul(F,At))|0)+((8191&(n=(n=Math.imul(F,gt))+Math.imul(L,At)|0))<<13)|0;return u=((o=Math.imul(L,gt))+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,h[0]=Mt,h[1]=Bt,h[2]=wt,h[3]=Et,h[4]=pt,h[5]=mt,h[6]=yt,h[7]=bt,h[8]=Qt,h[9]=It,h[10]=Ct,h[11]=Dt,h[12]=Nt,h[13]=vt,h[14]=Gt,h[15]=Rt,h[16]=Yt,h[17]=Ut,h[18]=Vt,0!==u&&(h[19]=u,r.length++),r};function g(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(A=f),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?A(this,t,e):r<63?f(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):g(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==c||u>=n);u--){var l=0|this.words[u];this.words[u]=c<<26-o|l>>>o,c=l&a}return h&&0!==c&&(h.words[h.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var d=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(n,d,l);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=d)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var c=r.clone(),l=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(c),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var A=0,g=1;0==(r.words[0]&g)&&A<26;++A,g<<=1);if(A>0)for(r.iushrn(A);A-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(c),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,c=1;0==(e.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,d=1;0==(r.words[0]&d)&&l<26;++l,d<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var B={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function E(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function p(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function m(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function Q(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(E,w),E.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},E.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(B[t])return B[t];var e;if("k256"===t)e=new E;else if("p224"===t)e=new p;else if("p192"===t)e=new m;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return B[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);0!==this.pow(c,u).cmp(h);)c.redIAdd(h);for(var l=this.pow(c,n),d=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),A=s;0!==f.cmp(a);){for(var g=f,M=0;0!==g.cmp(a);M++)g=g.redSqr();i(M=0;i--){for(var u=e.words[i],c=h-1;c>=0;c--){var l=u>>c&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4==++a||0===i&&0===c)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new Q(t)},n(Q,b),Q.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},Q.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},Q.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},Q.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},Q.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},9282:(t,e,r)=>{"use strict";var i=r(4155);function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var o,s,a=r(2136).codes,h=a.ERR_AMBIGUOUS_ARGUMENT,u=a.ERR_INVALID_ARG_TYPE,c=a.ERR_INVALID_ARG_VALUE,l=a.ERR_INVALID_RETURN_VALUE,d=a.ERR_MISSING_ARGS,f=r(5961),A=r(9539).inspect,g=r(9539).types,M=g.isPromise,B=g.isRegExp,w=Object.assign?Object.assign:r(8091).assign,E=Object.is?Object.is:r(609);function p(){var t=r(9158);o=t.isDeepEqual,s=t.isDeepStrictEqual}new Map;var m=!1,y=t.exports=C,b={};function Q(t){if(t.message instanceof Error)throw t.message;throw new f(t)}function I(t,e,r,i){if(!r){var n=!1;if(0===e)n=!0,i="No value argument passed to `assert.ok()`";else if(i instanceof Error)throw i;var o=new f({actual:r,expected:!0,message:i,operator:"==",stackStartFn:t});throw o.generatedMessage=n,o}}function C(){for(var t=arguments.length,e=new Array(t),r=0;r1?r-1:0),n=1;n1?r-1:0),n=1;n1?r-1:0),n=1;n1?r-1:0),n=1;n{"use strict";var i=r(4155);function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){for(var r=0;rt.length)&&(r=t.length),t.substring(r-e.length,r)===e}var B="",w="",E="",p="",m={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"};function y(t){var e=Object.keys(t),r=Object.create(Object.getPrototypeOf(t));return e.forEach((function(e){r[e]=t[e]})),Object.defineProperty(r,"message",{value:t.message}),r}function b(t){return A(t,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}var Q=function(t){function e(t){var r;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),"object"!==f(t)||null===t)throw new g("options","Object",t);var n=t.message,o=t.operator,h=t.stackStartFn,u=t.actual,c=t.expected,l=Error.stackTraceLimit;if(Error.stackTraceLimit=0,null!=n)r=s(this,d(e).call(this,String(n)));else if(i.stderr&&i.stderr.isTTY&&(i.stderr&&i.stderr.getColorDepth&&1!==i.stderr.getColorDepth()?(B="",w="",p="",E=""):(B="",w="",p="",E="")),"object"===f(u)&&null!==u&&"object"===f(c)&&null!==c&&"stack"in u&&u instanceof Error&&"stack"in c&&c instanceof Error&&(u=y(u),c=y(c)),"deepStrictEqual"===o||"strictEqual"===o)r=s(this,d(e).call(this,function(t,e,r){var n="",o="",s=0,a="",h=!1,u=b(t),c=u.split("\n"),l=b(e).split("\n"),d=0,A="";if("strictEqual"===r&&"object"===f(t)&&"object"===f(e)&&null!==t&&null!==e&&(r="strictEqualObject"),1===c.length&&1===l.length&&c[0]!==l[0]){var g=c[0].length+l[0].length;if(g<=10){if(!("object"===f(t)&&null!==t||"object"===f(e)&&null!==e||0===t&&0===e))return"".concat(m[r],"\n\n")+"".concat(c[0]," !== ").concat(l[0],"\n")}else if("strictEqualObject"!==r&&g<(i.stderr&&i.stderr.isTTY?i.stderr.columns:80)){for(;c[0][d]===l[0][d];)d++;d>2&&(A="\n ".concat(function(t,e){if(e=Math.floor(e),0==t.length||0==e)return"";var r=t.length*e;for(e=Math.floor(Math.log(e)/Math.log(2));e;)t+=t,e--;return t+t.substring(0,r-t.length)}(" ",d),"^"),d=0)}}for(var y=c[c.length-1],Q=l[l.length-1];y===Q&&(d++<2?a="\n ".concat(y).concat(a):n=y,c.pop(),l.pop(),0!==c.length&&0!==l.length);)y=c[c.length-1],Q=l[l.length-1];var I=Math.max(c.length,l.length);if(0===I){var C=u.split("\n");if(C.length>30)for(C[26]="".concat(B,"...").concat(p);C.length>27;)C.pop();return"".concat(m.notIdentical,"\n\n").concat(C.join("\n"),"\n")}d>3&&(a="\n".concat(B,"...").concat(p).concat(a),h=!0),""!==n&&(a="\n ".concat(n).concat(a),n="");var D=0,N=m[r]+"\n".concat(w,"+ actual").concat(p," ").concat(E,"- expected").concat(p),v=" ".concat(B,"...").concat(p," Lines skipped");for(d=0;d1&&d>2&&(G>4?(o+="\n".concat(B,"...").concat(p),h=!0):G>3&&(o+="\n ".concat(l[d-2]),D++),o+="\n ".concat(l[d-1]),D++),s=d,n+="\n".concat(E,"-").concat(p," ").concat(l[d]),D++;else if(l.length1&&d>2&&(G>4?(o+="\n".concat(B,"...").concat(p),h=!0):G>3&&(o+="\n ".concat(c[d-2]),D++),o+="\n ".concat(c[d-1]),D++),s=d,o+="\n".concat(w,"+").concat(p," ").concat(c[d]),D++;else{var R=l[d],Y=c[d],U=Y!==R&&(!M(Y,",")||Y.slice(0,-1)!==R);U&&M(R,",")&&R.slice(0,-1)===Y&&(U=!1,Y+=","),U?(G>1&&d>2&&(G>4?(o+="\n".concat(B,"...").concat(p),h=!0):G>3&&(o+="\n ".concat(c[d-2]),D++),o+="\n ".concat(c[d-1]),D++),s=d,o+="\n".concat(w,"+").concat(p," ").concat(Y),n+="\n".concat(E,"-").concat(p," ").concat(R),D+=2):(o+=n,n="",1!==G&&0!==d||(o+="\n ".concat(Y),D++))}if(D>20&&d30)for(Q[26]="".concat(B,"...").concat(p);Q.length>27;)Q.pop();r=1===Q.length?s(this,d(e).call(this,"".concat(A," ").concat(Q[0]))):s(this,d(e).call(this,"".concat(A,"\n\n").concat(Q.join("\n"),"\n")))}else{var I=b(u),C="",D=m[o];"notDeepEqual"===o||"notEqual"===o?(I="".concat(m[o],"\n\n").concat(I)).length>1024&&(I="".concat(I.slice(0,1021),"...")):(C="".concat(b(c)),I.length>512&&(I="".concat(I.slice(0,509),"...")),C.length>512&&(C="".concat(C.slice(0,509),"...")),"deepEqual"===o||"equal"===o?I="".concat(D,"\n\n").concat(I,"\n\nshould equal\n\n"):C=" ".concat(o," ").concat(C)),r=s(this,d(e).call(this,"".concat(I).concat(C)))}return Error.stackTraceLimit=l,r.generatedMessage=!n,Object.defineProperty(a(r),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),r.code="ERR_ASSERTION",r.actual=u,r.expected=c,r.operator=o,Error.captureStackTrace&&Error.captureStackTrace(a(r),h),r.stack,r.name="AssertionError",s(r)}var r,h;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&l(t,e)}(e,t),r=e,(h=[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:A.custom,value:function(t,e){return A(this,function(t){for(var e=1;e{"use strict";function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function n(t){return(n=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function o(t,e){return(o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var s,a,h={};function u(t,e,r){r||(r=Error);var s=function(r){function s(r,o,a){var h;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,s),(h=function(t,e){return!e||"object"!==i(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}(this,n(s).call(this,function(t,r,i){return"string"==typeof e?e:e(t,r,i)}(r,o,a)))).code=t,h}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(s,r),s}(r);h[t]=s}function c(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map((function(t){return String(t)})),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}u("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError),u("ERR_INVALID_ARG_TYPE",(function(t,e,n){var o,a,h,u,l;if(void 0===s&&(s=r(9282)),s("string"==typeof t,"'name' must be a string"),"string"==typeof e&&(a="not ",e.substr(0,a.length)===a)?(o="must not be",e=e.replace(/^not /,"")):o="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t," argument"))h="The ".concat(t," ").concat(o," ").concat(c(e,"type"));else{var d=("number"!=typeof l&&(l=0),l+".".length>(u=t).length||-1===u.indexOf(".",l)?"argument":"property");h='The "'.concat(t,'" ').concat(d," ").concat(o," ").concat(c(e,"type"))}return h+". Received type ".concat(i(n))}),TypeError),u("ERR_INVALID_ARG_VALUE",(function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"is invalid";void 0===a&&(a=r(9539));var n=a.inspect(e);return n.length>128&&(n="".concat(n.slice(0,128),"...")),"The argument '".concat(t,"' ").concat(i,". Received ").concat(n)}),TypeError,RangeError),u("ERR_INVALID_RETURN_VALUE",(function(t,e,r){var n;return n=r&&r.constructor&&r.constructor.name?"instance of ".concat(r.constructor.name):"type ".concat(i(r)),"Expected ".concat(t,' to be returned from the "').concat(e,'"')+" function but got ".concat(n,".")}),TypeError),u("ERR_MISSING_ARGS",(function(){for(var t=arguments.length,e=new Array(t),i=0;i0,"At least one arg needs to be specified");var n="The ",o=e.length;switch(e=e.map((function(t){return'"'.concat(t,'"')})),o){case 1:n+="".concat(e[0]," argument");break;case 2:n+="".concat(e[0]," and ").concat(e[1]," arguments");break;default:n+=e.slice(0,o-1).join(", "),n+=", and ".concat(e[o-1]," arguments")}return"".concat(n," must be specified")}),TypeError),t.exports.codes=h},9158:(t,e,r)=>{"use strict";function i(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=[],i=!0,n=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(r.push(s.value),!e||r.length!==e);i=!0);}catch(t){n=!0,o=t}finally{try{i||null==a.return||a.return()}finally{if(n)throw o}}return r}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var o=void 0!==/a/g.flags,s=function(t){var e=[];return t.forEach((function(t){return e.push(t)})),e},a=function(t){var e=[];return t.forEach((function(t,r){return e.push([r,t])})),e},h=Object.is?Object.is:r(609),u=Object.getOwnPropertySymbols?Object.getOwnPropertySymbols:function(){return[]},c=Number.isNaN?Number.isNaN:r(360);function l(t){return t.call.bind(t)}var d=l(Object.prototype.hasOwnProperty),f=l(Object.prototype.propertyIsEnumerable),A=l(Object.prototype.toString),g=r(9539).types,M=g.isAnyArrayBuffer,B=g.isArrayBufferView,w=g.isDate,E=g.isMap,p=g.isRegExp,m=g.isSet,y=g.isNativeError,b=g.isBoxedPrimitive,Q=g.isNumberObject,I=g.isStringObject,C=g.isBooleanObject,D=g.isBigIntObject,N=g.isSymbolObject,v=g.isFloat32Array,G=g.isFloat64Array;function R(t){if(0===t.length||t.length>10)return!0;for(var e=0;e57)return!0}return 10===t.length&&t>=Math.pow(2,32)}function Y(t){return Object.keys(t).filter(R).concat(u(t).filter(Object.prototype.propertyIsEnumerable.bind(t)))}function U(t,e){if(t===e)return 0;for(var r=t.length,i=e.length,n=0,o=Math.min(r,i);n{"use strict";var i=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"];t.exports=function(){for(var t=[],e=0;e{t.exports=r(5267)},5267:(t,e,r)=>{var i=r(8764).Buffer;const n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",o=(t,e)=>[Math.floor(t/e),t%e];t.exports={encode:t=>{"string"==typeof t&&(t=i.from(t));let e="";for(let r=0;r1){const i=(t[r]<<8)+t[r+1],[s,a]=o(i,2025),[h,u]=o(a,45);e+=n[u]+n[h]+n[s]}else{const[i,s]=o(t[r],45);e+=n[s]+n[i]}return e},decode:t=>{const e=Array.from(t).map((t=>n.indexOf(t))),r=[];for(let t=0;t=3){const i=e[t]+45*e[t+1]+45*e[t+2]*45;if(i>65535)throw new Error("Invalid base45 string");r.push(...o(i,256))}else{const i=e[t]+45*e[t+1];if(i>255)throw new Error("Invalid base45 string");r.push(i)}return i.from(r)}}},9742:(t,e)=>{"use strict";e.byteLength=function(t){var e=h(t),r=e[0],i=e[1];return 3*(r+i)/4-i},e.toByteArray=function(t){var e,r,o=h(t),s=o[0],a=o[1],u=new n(function(t,e,r){return 3*(e+r)/4-r}(0,s,a)),c=0,l=a>0?s-4:s;for(r=0;r>16&255,u[c++]=e>>8&255,u[c++]=255&e;return 2===a&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,u[c++]=255&e),1===a&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,u[c++]=e>>8&255,u[c++]=255&e),u},e.fromByteArray=function(t){for(var e,i=t.length,n=i%3,o=[],s=16383,a=0,h=i-n;ah?h:a+s));return 1===n?(e=t[i-1],o.push(r[e>>2]+r[e<<4&63]+"==")):2===n&&(e=(t[i-2]<<8)+t[i-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),o.join("")};for(var r=[],i=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,a=o.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,i){for(var n,o,s=[],a=e;a>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},4431:function(t,e,r){var i;!function(n){"use strict";var o,s=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,a=Math.ceil,h=Math.floor,u="[BigNumber Error] ",c=u+"Number primitive has more than 15 significant digits: ",l=1e14,d=14,f=9007199254740991,A=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],g=1e7,M=1e9;function B(t){var e=0|t;return t>0||t===e?e:e-1}function w(t){for(var e,r,i=1,n=t.length,o=t[0]+"";iu^r?1:-1;for(a=(h=n.length)<(u=o.length)?h:u,s=0;so[s]^r?1:-1;return h==u?0:h>u^r?1:-1}function p(t,e,r,i){if(tr||t!==h(t))throw Error(u+(i||"Argument")+("number"==typeof t?tr?" out of range: ":" not an integer: ":" not a primitive number: ")+String(t))}function m(t){var e=t.c.length-1;return B(t.e/d)==e&&t.c[e]%2!=0}function y(t,e){return(t.length>1?t.charAt(0)+"."+t.slice(1):t)+(e<0?"e":"e+")+e}function b(t,e,r){var i,n;if(e<0){for(n=r+".";++e;n+=r);t=n+t}else if(++e>(i=t.length)){for(n=r,e-=i;--e;n+=r);t+=n}else ek?B.c=B.e=null:t.e=10;l/=10,u++);return void(u>k?B.c=B.e=null:(B.e=u,B.c=[t]))}M=String(t)}else{if(!s.test(M=String(t)))return n(B,M,A);B.s=45==M.charCodeAt(0)?(M=M.slice(1),-1):1}(u=M.indexOf("."))>-1&&(M=M.replace(".","")),(l=M.search(/e/i))>0?(u<0&&(u=l),u+=+M.slice(l+1),M=M.substring(0,l)):u<0&&(u=M.length)}else{if(p(e,2,H.length,"Base"),10==e)return J(B=new z(t),Y+B.e+1,U);if(M=String(t),A="number"==typeof t){if(0*t!=0)return n(B,M,A,e);if(B.s=1/t<0?(M=M.slice(1),-1):1,z.DEBUG&&M.replace(/^0\.0*|\./,"").length>15)throw Error(c+t)}else B.s=45===M.charCodeAt(0)?(M=M.slice(1),-1):1;for(r=H.slice(0,e),u=l=0,g=M.length;lu){u=g;continue}}else if(!a&&(M==M.toUpperCase()&&(M=M.toLowerCase())||M==M.toLowerCase()&&(M=M.toUpperCase()))){a=!0,l=-1,u=0;continue}return n(B,String(t),A,e)}A=!1,(u=(M=i(M,e,10,B.s)).indexOf("."))>-1?M=M.replace(".",""):u=M.length}for(l=0;48===M.charCodeAt(l);l++);for(g=M.length;48===M.charCodeAt(--g););if(M=M.slice(l,++g)){if(g-=l,A&&z.DEBUG&&g>15&&(t>f||t!==h(t)))throw Error(c+B.s*t);if((u=u-l-1)>k)B.c=B.e=null;else if(u=T)?y(h,s):b(h,s,"0");else if(o=(t=J(new z(t),e,r)).e,a=(h=w(t.c)).length,1==i||2==i&&(e<=o||o<=V)){for(;aa){if(--e>0)for(h+=".";e--;h+="0");}else if((e+=o-a)>0)for(o+1==a&&(h+=".");e--;h+="0");return t.s<0&&n?"-"+h:h}function O(t,e){for(var r,i=1,n=new z(t[0]);i=10;n/=10,i++);return(r=i+r*d-1)>k?t.c=t.e=null:r=10;u/=10,n++);if((o=e-n)<0)o+=d,s=e,g=(c=M[f=0])/B[n-s-1]%10|0;else if((f=a((o+1)/d))>=M.length){if(!i)break t;for(;M.length<=f;M.push(0));c=g=0,n=1,s=(o%=d)-d+1}else{for(c=u=M[f],n=1;u>=10;u/=10,n++);g=(s=(o%=d)-d+n)<0?0:c/B[n-s-1]%10|0}if(i=i||e<0||null!=M[f+1]||(s<0?c:c%B[n-s-1]),i=r<4?(g||i)&&(0==r||r==(t.s<0?3:2)):g>5||5==g&&(4==r||i||6==r&&(o>0?s>0?c/B[n-s]:0:M[f-1])%10&1||r==(t.s<0?8:7)),e<1||!M[0])return M.length=0,i?(e-=t.e+1,M[0]=B[(d-e%d)%d],t.e=-e||0):M[0]=t.e=0,t;if(0==o?(M.length=f,u=1,f--):(M.length=f+1,u=B[d-o],M[f]=s>0?h(c/B[n-s]%B[s])*u:0),i)for(;;){if(0==f){for(o=1,s=M[0];s>=10;s/=10,o++);for(s=M[0]+=u,u=1;s>=10;s/=10,u++);o!=u&&(t.e++,M[0]==l&&(M[0]=1));break}if(M[f]+=u,M[f]!=l)break;M[f--]=0,u=1}for(o=M.length;0===M[--o];M.pop());}t.e>k?t.c=t.e=null:t.e=T?y(e,r):b(e,r,"0"),t.s<0?"-"+e:e)}return z.clone=t,z.ROUND_UP=0,z.ROUND_DOWN=1,z.ROUND_CEIL=2,z.ROUND_FLOOR=3,z.ROUND_HALF_UP=4,z.ROUND_HALF_DOWN=5,z.ROUND_HALF_EVEN=6,z.ROUND_HALF_CEIL=7,z.ROUND_HALF_FLOOR=8,z.EUCLID=9,z.config=z.set=function(t){var e,r;if(null!=t){if("object"!=typeof t)throw Error(u+"Object expected: "+t);if(t.hasOwnProperty(e="DECIMAL_PLACES")&&(p(r=t[e],0,M,e),Y=r),t.hasOwnProperty(e="ROUNDING_MODE")&&(p(r=t[e],0,8,e),U=r),t.hasOwnProperty(e="EXPONENTIAL_AT")&&((r=t[e])&&r.pop?(p(r[0],-M,0,e),p(r[1],0,M,e),V=r[0],T=r[1]):(p(r,-M,M,e),V=-(T=r<0?-r:r))),t.hasOwnProperty(e="RANGE"))if((r=t[e])&&r.pop)p(r[0],-M,-1,e),p(r[1],1,M,e),S=r[0],k=r[1];else{if(p(r,-M,M,e),!r)throw Error(u+e+" cannot be zero: "+r);S=-(k=r<0?-r:r)}if(t.hasOwnProperty(e="CRYPTO")){if((r=t[e])!==!!r)throw Error(u+e+" not true or false: "+r);if(r){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw F=!r,Error(u+"crypto unavailable");F=r}else F=r}if(t.hasOwnProperty(e="MODULO_MODE")&&(p(r=t[e],0,9,e),L=r),t.hasOwnProperty(e="POW_PRECISION")&&(p(r=t[e],0,M,e),j=r),t.hasOwnProperty(e="FORMAT")){if("object"!=typeof(r=t[e]))throw Error(u+e+" not an object: "+r);Z=r}if(t.hasOwnProperty(e="ALPHABET")){if("string"!=typeof(r=t[e])||/^.?$|[+\-.\s]|(.).*\1/.test(r))throw Error(u+e+" invalid: "+r);H=r}}return{DECIMAL_PLACES:Y,ROUNDING_MODE:U,EXPONENTIAL_AT:[V,T],RANGE:[S,k],CRYPTO:F,MODULO_MODE:L,POW_PRECISION:j,FORMAT:Z,ALPHABET:H}},z.isBigNumber=function(t){if(!t||!0!==t._isBigNumber)return!1;if(!z.DEBUG)return!0;var e,r,i=t.c,n=t.e,o=t.s;t:if("[object Array]"=={}.toString.call(i)){if((1===o||-1===o)&&n>=-M&&n<=M&&n===h(n)){if(0===i[0]){if(0===n&&1===i.length)return!0;break t}if((e=(n+1)%d)<1&&(e+=d),String(i[0]).length==e){for(e=0;e=l||r!==h(r))break t;if(0!==r)return!0}}}else if(null===i&&null===n&&(null===o||1===o||-1===o))return!0;throw Error(u+"Invalid BigNumber: "+t)},z.maximum=z.max=function(){return O(arguments,G.lt)},z.minimum=z.min=function(){return O(arguments,G.gt)},z.random=(o=9007199254740992,Q=Math.random()*o&2097151?function(){return h(Math.random()*o)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(t){var e,r,i,n,o,s=0,c=[],l=new z(R);if(null==t?t=Y:p(t,0,M),n=a(t/d),F)if(crypto.getRandomValues){for(e=crypto.getRandomValues(new Uint32Array(n*=2));s>>11))>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),e[s]=r[0],e[s+1]=r[1]):(c.push(o%1e14),s+=2);s=n/2}else{if(!crypto.randomBytes)throw F=!1,Error(u+"crypto unavailable");for(e=crypto.randomBytes(n*=7);s=9e15?crypto.randomBytes(7).copy(e,s):(c.push(o%1e14),s+=7);s=n/7}if(!F)for(;s=10;o/=10,s++);sr-1&&(null==s[n+1]&&(s[n+1]=0),s[n+1]+=s[n]/r|0,s[n]%=r)}return s.reverse()}return function(i,n,o,s,a){var h,u,c,l,d,f,A,g,M=i.indexOf("."),B=Y,E=U;for(M>=0&&(l=j,j=0,i=i.replace(".",""),f=(g=new z(n)).pow(i.length-M),j=l,g.c=e(b(w(f.c),f.e,"0"),10,o,t),g.e=g.c.length),c=l=(A=e(i,n,o,a?(h=H,t):(h=t,H))).length;0==A[--l];A.pop());if(!A[0])return h.charAt(0);if(M<0?--c:(f.c=A,f.e=c,f.s=s,A=(f=r(f,g,B,E,o)).c,d=f.r,c=f.e),M=A[u=c+B+1],l=o/2,d=d||u<0||null!=A[u+1],d=E<4?(null!=M||d)&&(0==E||E==(f.s<0?3:2)):M>l||M==l&&(4==E||d||6==E&&1&A[u-1]||E==(f.s<0?8:7)),u<1||!A[0])i=d?b(h.charAt(1),-B,h.charAt(0)):h.charAt(0);else{if(A.length=u,d)for(--o;++A[--u]>o;)A[u]=0,u||(++c,A=[1].concat(A));for(l=A.length;!A[--l];);for(M=0,i="";M<=l;i+=h.charAt(A[M++]));i=b(i,c,h.charAt(0))}return i}}(),r=function(){function t(t,e,r){var i,n,o,s,a=0,h=t.length,u=e%g,c=e/g|0;for(t=t.slice();h--;)a=((n=u*(o=t[h]%g)+(i=c*o+(s=t[h]/g|0)*u)%g*g+a)/r|0)+(i/g|0)+c*s,t[h]=n%r;return a&&(t=[a].concat(t)),t}function e(t,e,r,i){var n,o;if(r!=i)o=r>i?1:-1;else for(n=o=0;ne[n]?1:-1;break}return o}function r(t,e,r,i){for(var n=0;r--;)t[r]-=n,n=t[r]1;t.splice(0,1));}return function(i,n,o,s,a){var u,c,f,A,g,M,w,E,p,m,y,b,Q,I,C,D,N,v=i.s==n.s?1:-1,G=i.c,R=n.c;if(!(G&&G[0]&&R&&R[0]))return new z(i.s&&n.s&&(G?!R||G[0]!=R[0]:R)?G&&0==G[0]||!R?0*v:v/0:NaN);for(p=(E=new z(v)).c=[],v=o+(c=i.e-n.e)+1,a||(a=l,c=B(i.e/d)-B(n.e/d),v=v/d|0),f=0;R[f]==(G[f]||0);f++);if(R[f]>(G[f]||0)&&c--,v<0)p.push(1),A=!0;else{for(I=G.length,D=R.length,f=0,v+=2,(g=h(a/(R[0]+1)))>1&&(R=t(R,g,a),G=t(G,g,a),D=R.length,I=G.length),Q=D,y=(m=G.slice(0,D)).length;y=a/2&&C++;do{if(g=0,(u=e(R,m,D,y))<0){if(b=m[0],D!=y&&(b=b*a+(m[1]||0)),(g=h(b/C))>1)for(g>=a&&(g=a-1),w=(M=t(R,g,a)).length,y=m.length;1==e(M,m,w,y);)g--,r(M,D=10;v/=10,f++);J(E,o+(E.e=f+c*d-1)+1,s,A)}else E.e=c,E.r=+A;return E}}(),I=/^(-?)0([xbo])(?=\w[\w.]*$)/i,C=/^([^.]+)\.$/,D=/^\.([^.]+)$/,N=/^-?(Infinity|NaN)$/,v=/^\s*\+(?=[\w.])|^\s+|\s+$/g,n=function(t,e,r,i){var n,o=r?e:e.replace(v,"");if(N.test(o))t.s=isNaN(o)?null:o<0?-1:1;else{if(!r&&(o=o.replace(I,(function(t,e,r){return n="x"==(r=r.toLowerCase())?16:"b"==r?2:8,i&&i!=n?t:e})),i&&(n=i,o=o.replace(C,"$1").replace(D,"0.$1")),e!=o))return new z(o,n);if(z.DEBUG)throw Error(u+"Not a"+(i?" base "+i:"")+" number: "+e);t.s=null}t.c=t.e=null},G.absoluteValue=G.abs=function(){var t=new z(this);return t.s<0&&(t.s=1),t},G.comparedTo=function(t,e){return E(this,new z(t,e))},G.decimalPlaces=G.dp=function(t,e){var r,i,n,o=this;if(null!=t)return p(t,0,M),null==e?e=U:p(e,0,8),J(new z(o),t+o.e+1,e);if(!(r=o.c))return null;if(i=((n=r.length-1)-B(this.e/d))*d,n=r[n])for(;n%10==0;n/=10,i--);return i<0&&(i=0),i},G.dividedBy=G.div=function(t,e){return r(this,new z(t,e),Y,U)},G.dividedToIntegerBy=G.idiv=function(t,e){return r(this,new z(t,e),0,1)},G.exponentiatedBy=G.pow=function(t,e){var r,i,n,o,s,c,l,f,A=this;if((t=new z(t)).c&&!t.isInteger())throw Error(u+"Exponent not an integer: "+X(t));if(null!=e&&(e=new z(e)),s=t.e>14,!A.c||!A.c[0]||1==A.c[0]&&!A.e&&1==A.c.length||!t.c||!t.c[0])return f=new z(Math.pow(+X(A),s?2-m(t):+X(t))),e?f.mod(e):f;if(c=t.s<0,e){if(e.c?!e.c[0]:!e.s)return new z(NaN);(i=!c&&A.isInteger()&&e.isInteger())&&(A=A.mod(e))}else{if(t.e>9&&(A.e>0||A.e<-1||(0==A.e?A.c[0]>1||s&&A.c[1]>=24e7:A.c[0]<8e13||s&&A.c[0]<=9999975e7)))return o=A.s<0&&m(t)?-0:0,A.e>-1&&(o=1/o),new z(c?1/o:o);j&&(o=a(j/d+2))}for(s?(r=new z(.5),c&&(t.s=1),l=m(t)):l=(n=Math.abs(+X(t)))%2,f=new z(R);;){if(l){if(!(f=f.times(A)).c)break;o?f.c.length>o&&(f.c.length=o):i&&(f=f.mod(e))}if(n){if(0===(n=h(n/2)))break;l=n%2}else if(J(t=t.times(r),t.e+1,1),t.e>14)l=m(t);else{if(0==(n=+X(t)))break;l=n%2}A=A.times(A),o?A.c&&A.c.length>o&&(A.c.length=o):i&&(A=A.mod(e))}return i?f:(c&&(f=R.div(f)),e?f.mod(e):o?J(f,j,U,void 0):f)},G.integerValue=function(t){var e=new z(this);return null==t?t=U:p(t,0,8),J(e,e.e+1,t)},G.isEqualTo=G.eq=function(t,e){return 0===E(this,new z(t,e))},G.isFinite=function(){return!!this.c},G.isGreaterThan=G.gt=function(t,e){return E(this,new z(t,e))>0},G.isGreaterThanOrEqualTo=G.gte=function(t,e){return 1===(e=E(this,new z(t,e)))||0===e},G.isInteger=function(){return!!this.c&&B(this.e/d)>this.c.length-2},G.isLessThan=G.lt=function(t,e){return E(this,new z(t,e))<0},G.isLessThanOrEqualTo=G.lte=function(t,e){return-1===(e=E(this,new z(t,e)))||0===e},G.isNaN=function(){return!this.s},G.isNegative=function(){return this.s<0},G.isPositive=function(){return this.s>0},G.isZero=function(){return!!this.c&&0==this.c[0]},G.minus=function(t,e){var r,i,n,o,s=this,a=s.s;if(e=(t=new z(t,e)).s,!a||!e)return new z(NaN);if(a!=e)return t.s=-e,s.plus(t);var h=s.e/d,u=t.e/d,c=s.c,f=t.c;if(!h||!u){if(!c||!f)return c?(t.s=-e,t):new z(f?s:NaN);if(!c[0]||!f[0])return f[0]?(t.s=-e,t):new z(c[0]?s:3==U?-0:0)}if(h=B(h),u=B(u),c=c.slice(),a=h-u){for((o=a<0)?(a=-a,n=c):(u=h,n=f),n.reverse(),e=a;e--;n.push(0));n.reverse()}else for(i=(o=(a=c.length)<(e=f.length))?a:e,a=e=0;e0)for(;e--;c[r++]=0);for(e=l-1;i>a;){if(c[--i]=0;){for(r=0,A=b[n]%p,M=b[n]/p|0,o=n+(s=h);o>n;)r=((u=A*(u=y[--s]%p)+(a=M*u+(c=y[s]/p|0)*A)%p*p+w[o]+r)/E|0)+(a/p|0)+M*c,w[o--]=u%E;w[o]=r}return r?++i:w.splice(0,1),W(t,w,i)},G.negated=function(){var t=new z(this);return t.s=-t.s||null,t},G.plus=function(t,e){var r,i=this,n=i.s;if(e=(t=new z(t,e)).s,!n||!e)return new z(NaN);if(n!=e)return t.s=-e,i.minus(t);var o=i.e/d,s=t.e/d,a=i.c,h=t.c;if(!o||!s){if(!a||!h)return new z(n/0);if(!a[0]||!h[0])return h[0]?t:new z(a[0]?i:0*n)}if(o=B(o),s=B(s),a=a.slice(),n=o-s){for(n>0?(s=o,r=h):(n=-n,r=a),r.reverse();n--;r.push(0));r.reverse()}for((n=a.length)-(e=h.length)<0&&(r=h,h=a,a=r,e=n),n=0;e;)n=(a[--e]=a[e]+h[e]+n)/l|0,a[e]=l===a[e]?0:a[e]%l;return n&&(a=[n].concat(a),++s),W(t,a,s)},G.precision=G.sd=function(t,e){var r,i,n,o=this;if(null!=t&&t!==!!t)return p(t,1,M),null==e?e=U:p(e,0,8),J(new z(o),t,e);if(!(r=o.c))return null;if(i=(n=r.length-1)*d+1,n=r[n]){for(;n%10==0;n/=10,i--);for(n=r[0];n>=10;n/=10,i++);}return t&&o.e+1>i&&(i=o.e+1),i},G.shiftedBy=function(t){return p(t,-9007199254740991,f),this.times("1e"+t)},G.squareRoot=G.sqrt=function(){var t,e,i,n,o,s=this,a=s.c,h=s.s,u=s.e,c=Y+4,l=new z("0.5");if(1!==h||!a||!a[0])return new z(!h||h<0&&(!a||a[0])?NaN:a?s:1/0);if(0==(h=Math.sqrt(+X(s)))||h==1/0?(((e=w(a)).length+u)%2==0&&(e+="0"),h=Math.sqrt(+e),u=B((u+1)/2)-(u<0||u%2),i=new z(e=h==1/0?"5e"+u:(e=h.toExponential()).slice(0,e.indexOf("e")+1)+u)):i=new z(h+""),i.c[0])for((h=(u=i.e)+c)<3&&(h=0);;)if(o=i,i=l.times(o.plus(r(s,o,c,1))),w(o.c).slice(0,h)===(e=w(i.c)).slice(0,h)){if(i.e0&&g>0){for(o=g%a||a,l=A.substr(0,o);o0&&(l+=c+A.slice(o)),f&&(l="-"+l)}i=d?l+(r.decimalSeparator||"")+((h=+r.fractionGroupSize)?d.replace(new RegExp("\\d{"+h+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):d):l}return(r.prefix||"")+i+(r.suffix||"")},G.toFraction=function(t){var e,i,n,o,s,a,h,c,l,f,g,M,B=this,E=B.c;if(null!=t&&(!(h=new z(t)).isInteger()&&(h.c||1!==h.s)||h.lt(R)))throw Error(u+"Argument "+(h.isInteger()?"out of range: ":"not an integer: ")+X(h));if(!E)return new z(B);for(e=new z(R),l=i=new z(R),n=c=new z(R),M=w(E),s=e.e=M.length-B.e-1,e.c[0]=A[(a=s%d)<0?d+a:a],t=!t||h.comparedTo(e)>0?s>0?e:l:h,a=k,k=1/0,h=new z(M),c.c[0]=0;f=r(h,e,0,1),1!=(o=i.plus(f.times(n))).comparedTo(t);)i=n,n=o,l=c.plus(f.times(o=l)),c=o,e=h.minus(f.times(o=e)),h=o;return o=r(t.minus(i),n,0,1),c=c.plus(o.times(l)),i=i.plus(o.times(n)),c.s=l.s=B.s,g=r(l,n,s*=2,U).minus(B).abs().comparedTo(r(c,i,s,U).minus(B).abs())<1?[l,n]:[c,i],k=a,g},G.toNumber=function(){return+X(this)},G.toPrecision=function(t,e){return null!=t&&p(t,1,M),x(this,t,e,2)},G.toString=function(t){var e,r=this,n=r.s,o=r.e;return null===o?n?(e="Infinity",n<0&&(e="-"+e)):e="NaN":(null==t?e=o<=V||o>=T?y(w(r.c),o):b(w(r.c),o,"0"):10===t?e=b(w((r=J(new z(r),Y+o+1,U)).c),r.e,"0"):(p(t,2,H.length,"Base"),e=i(b(w(r.c),o,"0"),10,t,n,!0)),n<0&&r.c[0]&&(e="-"+e)),e},G.valueOf=G.toJSON=function(){return X(this)},G._isBigNumber=!0,null!=e&&z.set(e),z}()).default=o.BigNumber=o,void 0===(i=function(){return o}.call(e,r,e,t))||(t.exports=i)}()},3550:function(t,e,r){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(6601).Buffer}catch(t){}function a(t,e){var r=t.charCodeAt(e);return r>=48&&r<=57?r-48:r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:void i(!1,"Invalid character in "+t)}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,n){for(var o=0,s=0,a=Math.min(t.length,r),h=e;h=49?u-49+10:u>=17?u-17+10:u,i(u>=0&&s0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this._strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this._strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,c=r;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=l}catch(t){o.prototype.inspect=l}else o.prototype.inspect=l;function l(){return(this.red?""}var d=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],A=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function g(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,d=Math.min(u,e.length-1),f=Math.max(0,u-t.length+1);f<=d;f++){var A=u-f|0;c+=(s=(n=0|t.words[A])*(o=0|e.words[f])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|c}return 0!==h?r.words[u]=0|h:r.length--,r._strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?d[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=f[t],c=A[t];r="";var l=this.clone();for(l.negative=0;!l.isZero();){var g=l.modrn(c).toString(t);r=(l=l.idivn(c)).isZero()?g+r:d[u-g.length]+g+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16,2)},s&&(o.prototype.toBuffer=function(t,e){return this.toArrayLike(s,t,e)}),o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){this._strip();var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0");var s=function(t,e){return t.allocUnsafe?t.allocUnsafe(e):new t(e)}(t,o);return this["_toArrayLike"+("le"===e?"LE":"BE")](s,n),s},o.prototype._toArrayLikeLE=function(t,e){for(var r=0,i=0,n=0,o=0;n>8&255),r>16&255),6===o?(r>24&255),i=0,o=0):(i=s>>>24,o+=2)}if(r=0&&(t[r--]=s>>8&255),r>=0&&(t[r--]=s>>16&255),6===o?(r>=0&&(t[r--]=s>>24&255),i=0,o=0):(i=s>>>24,o+=2)}if(r>=0)for(t[r--]=i;r>=0;)t[r--]=0},Math.clz32?o.prototype._countBits=function(t){return 32-Math.clz32(t)}:o.prototype._countBits=function(t){var e=t,r=0;return e>=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this._strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],A=8191&f,g=f>>>13,M=0|s[2],B=8191&M,w=M>>>13,E=0|s[3],p=8191&E,m=E>>>13,y=0|s[4],b=8191&y,Q=y>>>13,I=0|s[5],C=8191&I,D=I>>>13,N=0|s[6],v=8191&N,G=N>>>13,R=0|s[7],Y=8191&R,U=R>>>13,V=0|s[8],T=8191&V,S=V>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,H=j>>>13,z=0|a[1],x=8191&z,O=z>>>13,W=0|a[2],J=8191&W,X=W>>>13,K=0|a[3],P=8191&K,_=K>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ct=0|a[8],lt=8191&ct,dt=ct>>>13,ft=0|a[9],At=8191&ft,gt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(l,Z))|0)+((8191&(n=(n=Math.imul(l,H))+Math.imul(d,Z)|0))<<13)|0;u=((o=Math.imul(d,H))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(A,Z),n=(n=Math.imul(A,H))+Math.imul(g,Z)|0,o=Math.imul(g,H);var Bt=(u+(i=i+Math.imul(l,x)|0)|0)+((8191&(n=(n=n+Math.imul(l,O)|0)+Math.imul(d,x)|0))<<13)|0;u=((o=o+Math.imul(d,O)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(B,Z),n=(n=Math.imul(B,H))+Math.imul(w,Z)|0,o=Math.imul(w,H),i=i+Math.imul(A,x)|0,n=(n=n+Math.imul(A,O)|0)+Math.imul(g,x)|0,o=o+Math.imul(g,O)|0;var wt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(d,J)|0))<<13)|0;u=((o=o+Math.imul(d,X)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,H))+Math.imul(m,Z)|0,o=Math.imul(m,H),i=i+Math.imul(B,x)|0,n=(n=n+Math.imul(B,O)|0)+Math.imul(w,x)|0,o=o+Math.imul(w,O)|0,i=i+Math.imul(A,J)|0,n=(n=n+Math.imul(A,X)|0)+Math.imul(g,J)|0,o=o+Math.imul(g,X)|0;var Et=(u+(i=i+Math.imul(l,P)|0)|0)+((8191&(n=(n=n+Math.imul(l,_)|0)+Math.imul(d,P)|0))<<13)|0;u=((o=o+Math.imul(d,_)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,H))+Math.imul(Q,Z)|0,o=Math.imul(Q,H),i=i+Math.imul(p,x)|0,n=(n=n+Math.imul(p,O)|0)+Math.imul(m,x)|0,o=o+Math.imul(m,O)|0,i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,X)|0)+Math.imul(w,J)|0,o=o+Math.imul(w,X)|0,i=i+Math.imul(A,P)|0,n=(n=n+Math.imul(A,_)|0)+Math.imul(g,P)|0,o=o+Math.imul(g,_)|0;var pt=(u+(i=i+Math.imul(l,$)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(d,$)|0))<<13)|0;u=((o=o+Math.imul(d,tt)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,H))+Math.imul(D,Z)|0,o=Math.imul(D,H),i=i+Math.imul(b,x)|0,n=(n=n+Math.imul(b,O)|0)+Math.imul(Q,x)|0,o=o+Math.imul(Q,O)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0,i=i+Math.imul(B,P)|0,n=(n=n+Math.imul(B,_)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,_)|0,i=i+Math.imul(A,$)|0,n=(n=n+Math.imul(A,tt)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,tt)|0;var mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(d,rt)|0))<<13)|0;u=((o=o+Math.imul(d,it)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(v,Z),n=(n=Math.imul(v,H))+Math.imul(G,Z)|0,o=Math.imul(G,H),i=i+Math.imul(C,x)|0,n=(n=n+Math.imul(C,O)|0)+Math.imul(D,x)|0,o=o+Math.imul(D,O)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(Q,J)|0,o=o+Math.imul(Q,X)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,_)|0)+Math.imul(m,P)|0,o=o+Math.imul(m,_)|0,i=i+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(A,rt)|0,n=(n=n+Math.imul(A,it)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0;var yt=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(d,ot)|0))<<13)|0;u=((o=o+Math.imul(d,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Y,Z),n=(n=Math.imul(Y,H))+Math.imul(U,Z)|0,o=Math.imul(U,H),i=i+Math.imul(v,x)|0,n=(n=n+Math.imul(v,O)|0)+Math.imul(G,x)|0,o=o+Math.imul(G,O)|0,i=i+Math.imul(C,J)|0,n=(n=n+Math.imul(C,X)|0)+Math.imul(D,J)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,_)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,_)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0,i=i+Math.imul(B,rt)|0,n=(n=n+Math.imul(B,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(A,ot)|0,n=(n=n+Math.imul(A,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var bt=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(d,ht)|0))<<13)|0;u=((o=o+Math.imul(d,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,H))+Math.imul(S,Z)|0,o=Math.imul(S,H),i=i+Math.imul(Y,x)|0,n=(n=n+Math.imul(Y,O)|0)+Math.imul(U,x)|0,o=o+Math.imul(U,O)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(G,J)|0,o=o+Math.imul(G,X)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,_)|0)+Math.imul(D,P)|0,o=o+Math.imul(D,_)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0,i=i+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(A,ht)|0,n=(n=n+Math.imul(A,ut)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,ut)|0;var Qt=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,dt)|0)+Math.imul(d,lt)|0))<<13)|0;u=((o=o+Math.imul(d,dt)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,H))+Math.imul(L,Z)|0,o=Math.imul(L,H),i=i+Math.imul(T,x)|0,n=(n=n+Math.imul(T,O)|0)+Math.imul(S,x)|0,o=o+Math.imul(S,O)|0,i=i+Math.imul(Y,J)|0,n=(n=n+Math.imul(Y,X)|0)+Math.imul(U,J)|0,o=o+Math.imul(U,X)|0,i=i+Math.imul(v,P)|0,n=(n=n+Math.imul(v,_)|0)+Math.imul(G,P)|0,o=o+Math.imul(G,_)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0,i=i+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(A,lt)|0,n=(n=n+Math.imul(A,dt)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,dt)|0;var It=(u+(i=i+Math.imul(l,At)|0)|0)+((8191&(n=(n=n+Math.imul(l,gt)|0)+Math.imul(d,At)|0))<<13)|0;u=((o=o+Math.imul(d,gt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,x),n=(n=Math.imul(F,O))+Math.imul(L,x)|0,o=Math.imul(L,O),i=i+Math.imul(T,J)|0,n=(n=n+Math.imul(T,X)|0)+Math.imul(S,J)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(Y,P)|0,n=(n=n+Math.imul(Y,_)|0)+Math.imul(U,P)|0,o=o+Math.imul(U,_)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(G,$)|0,o=o+Math.imul(G,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(D,rt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0,i=i+Math.imul(B,lt)|0,n=(n=n+Math.imul(B,dt)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,dt)|0;var Ct=(u+(i=i+Math.imul(A,At)|0)|0)+((8191&(n=(n=n+Math.imul(A,gt)|0)+Math.imul(g,At)|0))<<13)|0;u=((o=o+Math.imul(g,gt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,X))+Math.imul(L,J)|0,o=Math.imul(L,X),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,_)|0)+Math.imul(S,P)|0,o=o+Math.imul(S,_)|0,i=i+Math.imul(Y,$)|0,n=(n=n+Math.imul(Y,tt)|0)+Math.imul(U,$)|0,o=o+Math.imul(U,tt)|0,i=i+Math.imul(v,rt)|0,n=(n=n+Math.imul(v,it)|0)+Math.imul(G,rt)|0,o=o+Math.imul(G,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,dt)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,dt)|0;var Dt=(u+(i=i+Math.imul(B,At)|0)|0)+((8191&(n=(n=n+Math.imul(B,gt)|0)+Math.imul(w,At)|0))<<13)|0;u=((o=o+Math.imul(w,gt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,_))+Math.imul(L,P)|0,o=Math.imul(L,_),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(S,$)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(Y,rt)|0,n=(n=n+Math.imul(Y,it)|0)+Math.imul(U,rt)|0,o=o+Math.imul(U,it)|0,i=i+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,st)|0)+Math.imul(G,ot)|0,o=o+Math.imul(G,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,dt)|0)+Math.imul(Q,lt)|0,o=o+Math.imul(Q,dt)|0;var Nt=(u+(i=i+Math.imul(p,At)|0)|0)+((8191&(n=(n=n+Math.imul(p,gt)|0)+Math.imul(m,At)|0))<<13)|0;u=((o=o+Math.imul(m,gt)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(Y,ot)|0,n=(n=n+Math.imul(Y,st)|0)+Math.imul(U,ot)|0,o=o+Math.imul(U,st)|0,i=i+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(G,ht)|0,o=o+Math.imul(G,ut)|0,i=i+Math.imul(C,lt)|0,n=(n=n+Math.imul(C,dt)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,dt)|0;var vt=(u+(i=i+Math.imul(b,At)|0)|0)+((8191&(n=(n=n+Math.imul(b,gt)|0)+Math.imul(Q,At)|0))<<13)|0;u=((o=o+Math.imul(Q,gt)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(Y,ht)|0,n=(n=n+Math.imul(Y,ut)|0)+Math.imul(U,ht)|0,o=o+Math.imul(U,ut)|0,i=i+Math.imul(v,lt)|0,n=(n=n+Math.imul(v,dt)|0)+Math.imul(G,lt)|0,o=o+Math.imul(G,dt)|0;var Gt=(u+(i=i+Math.imul(C,At)|0)|0)+((8191&(n=(n=n+Math.imul(C,gt)|0)+Math.imul(D,At)|0))<<13)|0;u=((o=o+Math.imul(D,gt)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,ut)|0,i=i+Math.imul(Y,lt)|0,n=(n=n+Math.imul(Y,dt)|0)+Math.imul(U,lt)|0,o=o+Math.imul(U,dt)|0;var Rt=(u+(i=i+Math.imul(v,At)|0)|0)+((8191&(n=(n=n+Math.imul(v,gt)|0)+Math.imul(G,At)|0))<<13)|0;u=((o=o+Math.imul(G,gt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,lt)|0,n=(n=n+Math.imul(T,dt)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,dt)|0;var Yt=(u+(i=i+Math.imul(Y,At)|0)|0)+((8191&(n=(n=n+Math.imul(Y,gt)|0)+Math.imul(U,At)|0))<<13)|0;u=((o=o+Math.imul(U,gt)|0)+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(F,lt),n=(n=Math.imul(F,dt))+Math.imul(L,lt)|0,o=Math.imul(L,dt);var Ut=(u+(i=i+Math.imul(T,At)|0)|0)+((8191&(n=(n=n+Math.imul(T,gt)|0)+Math.imul(S,At)|0))<<13)|0;u=((o=o+Math.imul(S,gt)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863;var Vt=(u+(i=Math.imul(F,At))|0)+((8191&(n=(n=Math.imul(F,gt))+Math.imul(L,At)|0))<<13)|0;return u=((o=Math.imul(L,gt))+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,h[0]=Mt,h[1]=Bt,h[2]=wt,h[3]=Et,h[4]=pt,h[5]=mt,h[6]=yt,h[7]=bt,h[8]=Qt,h[9]=It,h[10]=Ct,h[11]=Dt,h[12]=Nt,h[13]=vt,h[14]=Gt,h[15]=Rt,h[16]=Yt,h[17]=Ut,h[18]=Vt,0!==u&&(h[19]=u,r.length++),r};function B(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r._strip()}function w(t,e,r){return B(t,e,r)}function E(t,e){this.x=t,this.y=e}Math.imul||(M=g),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?M(this,t,e):r<63?g(this,t,e):r<1024?B(this,t,e):w(this,t,e)},E.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},E.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,r+=o/67108864|0,r+=s>>>26,this.words[n]=67108863&s}return 0!==r&&(this.words[n]=r,this.length++),e?this.ineg():this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n&1}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==c||u>=n);u--){var l=0|this.words[u];this.words[u]=c<<26-o|l>>>o,c=l&a}return h&&0!==c&&(h.words[h.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this._strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this._strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var d=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(n,d,l);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=d)}return a&&a._strip(),i._strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modrn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modrn=function(t){var e=t<0;e&&(t=-t),i(t<=67108863);for(var r=(1<<26)%t,n=0,o=this.length-1;o>=0;o--)n=(r*n+(0|this.words[o]))%t;return e?-n:n},o.prototype.modn=function(t){return this.modrn(t)},o.prototype.idivn=function(t){var e=t<0;e&&(t=-t),i(t<=67108863);for(var r=0,n=this.length-1;n>=0;n--){var o=(0|this.words[n])+67108864*r;this.words[n]=o/t|0,r=o%t}return this._strip(),e?this.ineg():this},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var c=r.clone(),l=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(c),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var A=0,g=1;0==(r.words[0]&g)&&A<26;++A,g<<=1);if(A>0)for(r.iushrn(A);A-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(c),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,c=1;0==(e.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,d=1;0==(r.words[0]&d)&&l<26;++l,d<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this._strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new C(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var p={k256:null,p224:null,p192:null,p25519:null};function m(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function y(){m.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){m.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function Q(){m.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function I(){m.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function C(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function D(t){C.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}m.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},m.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},m.prototype.split=function(t,e){t.iushrn(this.n,0,e)},m.prototype.imulK=function(t){return t.imul(this.k)},n(y,m),y.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},y.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(p[t])return p[t];var e;if("k256"===t)e=new y;else if("p224"===t)e=new b;else if("p192"===t)e=new Q;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new I}return p[t]=e,e},C.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},C.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},C.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(c(t,t.umod(this.m)._forceRed(this)),t)},C.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},C.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},C.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},C.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},C.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},C.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},C.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},C.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},C.prototype.isqr=function(t){return this.imul(t,t.clone())},C.prototype.sqr=function(t){return this.mul(t,t)},C.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);0!==this.pow(c,u).cmp(h);)c.redIAdd(h);for(var l=this.pow(c,n),d=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),A=s;0!==f.cmp(a);){for(var g=f,M=0;0!==g.cmp(a);M++)g=g.redSqr();i(M=0;i--){for(var u=e.words[i],c=h-1;c>=0;c--){var l=u>>c&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4==++a||0===i&&0===c)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},C.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},C.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new D(t)},n(D,C),D.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},D.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},D.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},D.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},D.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},9931:(t,e,r)=>{var i;function n(t){this.rand=t}if(t.exports=function(t){return i||(i=new n(null)),i.generate(t)},t.exports.Rand=n,n.prototype.generate=function(t){return this._rand(t)},n.prototype._rand=function(t){if(this.rand.getBytes)return this.rand.getBytes(t);for(var e=new Uint8Array(t),r=0;r{var i=r(9509).Buffer;function n(t){i.isBuffer(t)||(t=i.from(t));for(var e=t.length/4|0,r=new Array(e),n=0;n>>24]^c[A>>>16&255]^l[g>>>8&255]^d[255&M]^e[B++],s=u[A>>>24]^c[g>>>16&255]^l[M>>>8&255]^d[255&f]^e[B++],a=u[g>>>24]^c[M>>>16&255]^l[f>>>8&255]^d[255&A]^e[B++],h=u[M>>>24]^c[f>>>16&255]^l[A>>>8&255]^d[255&g]^e[B++],f=o,A=s,g=a,M=h;return o=(i[f>>>24]<<24|i[A>>>16&255]<<16|i[g>>>8&255]<<8|i[255&M])^e[B++],s=(i[A>>>24]<<24|i[g>>>16&255]<<16|i[M>>>8&255]<<8|i[255&f])^e[B++],a=(i[g>>>24]<<24|i[M>>>16&255]<<16|i[f>>>8&255]<<8|i[255&A])^e[B++],h=(i[M>>>24]<<24|i[f>>>16&255]<<16|i[A>>>8&255]<<8|i[255&g])^e[B++],[o>>>=0,s>>>=0,a>>>=0,h>>>=0]}var a=[0,1,2,4,8,16,32,64,128,27,54],h=function(){for(var t=new Array(256),e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;for(var r=[],i=[],n=[[],[],[],[]],o=[[],[],[],[]],s=0,a=0,h=0;h<256;++h){var u=a^a<<1^a<<2^a<<3^a<<4;u=u>>>8^255&u^99,r[s]=u,i[u]=s;var c=t[s],l=t[c],d=t[l],f=257*t[u]^16843008*u;n[0][s]=f<<24|f>>>8,n[1][s]=f<<16|f>>>16,n[2][s]=f<<8|f>>>24,n[3][s]=f,f=16843009*d^65537*l^257*c^16843008*s,o[0][u]=f<<24|f>>>8,o[1][u]=f<<16|f>>>16,o[2][u]=f<<8|f>>>24,o[3][u]=f,0===s?s=a=1:(s=c^t[t[t[d^c]]],a^=t[t[a]])}return{SBOX:r,INV_SBOX:i,SUB_MIX:n,INV_SUB_MIX:o}}();function u(t){this._key=n(t),this._reset()}u.blockSize=16,u.keySize=32,u.prototype.blockSize=u.blockSize,u.prototype.keySize=u.keySize,u.prototype._reset=function(){for(var t=this._key,e=t.length,r=e+6,i=4*(r+1),n=[],o=0;o>>24,s=h.SBOX[s>>>24]<<24|h.SBOX[s>>>16&255]<<16|h.SBOX[s>>>8&255]<<8|h.SBOX[255&s],s^=a[o/e|0]<<24):e>6&&o%e==4&&(s=h.SBOX[s>>>24]<<24|h.SBOX[s>>>16&255]<<16|h.SBOX[s>>>8&255]<<8|h.SBOX[255&s]),n[o]=n[o-e]^s}for(var u=[],c=0;c>>24]]^h.INV_SUB_MIX[1][h.SBOX[d>>>16&255]]^h.INV_SUB_MIX[2][h.SBOX[d>>>8&255]]^h.INV_SUB_MIX[3][h.SBOX[255&d]]}this._nRounds=r,this._keySchedule=n,this._invKeySchedule=u},u.prototype.encryptBlockRaw=function(t){return s(t=n(t),this._keySchedule,h.SUB_MIX,h.SBOX,this._nRounds)},u.prototype.encryptBlock=function(t){var e=this.encryptBlockRaw(t),r=i.allocUnsafe(16);return r.writeUInt32BE(e[0],0),r.writeUInt32BE(e[1],4),r.writeUInt32BE(e[2],8),r.writeUInt32BE(e[3],12),r},u.prototype.decryptBlock=function(t){var e=(t=n(t))[1];t[1]=t[3],t[3]=e;var r=s(t,this._invKeySchedule,h.INV_SUB_MIX,h.INV_SBOX,this._nRounds),o=i.allocUnsafe(16);return o.writeUInt32BE(r[0],0),o.writeUInt32BE(r[3],4),o.writeUInt32BE(r[2],8),o.writeUInt32BE(r[1],12),o},u.prototype.scrub=function(){o(this._keySchedule),o(this._invKeySchedule),o(this._key)},t.exports.AES=u},2422:(t,e,r)=>{var i=r(4497),n=r(9509).Buffer,o=r(1027),s=r(5717),a=r(3288),h=r(7295),u=r(685);function c(t,e,r,s){o.call(this);var h=n.alloc(4,0);this._cipher=new i.AES(e);var c=this._cipher.encryptBlock(h);this._ghash=new a(c),r=function(t,e,r){if(12===e.length)return t._finID=n.concat([e,n.from([0,0,0,1])]),n.concat([e,n.from([0,0,0,2])]);var i=new a(r),o=e.length,s=o%16;i.update(e),s&&(s=16-s,i.update(n.alloc(s,0))),i.update(n.alloc(8,0));var h=8*o,c=n.alloc(8);c.writeUIntBE(h,0,8),i.update(c),t._finID=i.state;var l=n.from(t._finID);return u(l),l}(this,r,c),this._prev=n.from(r),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=s,this._alen=0,this._len=0,this._mode=t,this._authTag=null,this._called=!1}s(c,o),c.prototype._update=function(t){if(!this._called&&this._alen){var e=16-this._alen%16;e<16&&(e=n.alloc(e,0),this._ghash.update(e))}this._called=!0;var r=this._mode.encrypt(this,t);return this._decrypt?this._ghash.update(t):this._ghash.update(r),this._len+=t.length,r},c.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error("Unsupported state or unable to authenticate data");var t=h(this._ghash.final(8*this._alen,8*this._len),this._cipher.encryptBlock(this._finID));if(this._decrypt&&function(t,e){var r=0;t.length!==e.length&&r++;for(var i=Math.min(t.length,e.length),n=0;n{var i=r(1494),n=r(6193),o=r(5415);e.createCipher=e.Cipher=i.createCipher,e.createCipheriv=e.Cipheriv=i.createCipheriv,e.createDecipher=e.Decipher=n.createDecipher,e.createDecipheriv=e.Decipheriv=n.createDecipheriv,e.listCiphers=e.getCiphers=function(){return Object.keys(o)}},6193:(t,e,r)=>{var i=r(2422),n=r(9509).Buffer,o=r(45),s=r(5969),a=r(1027),h=r(4497),u=r(3048);function c(t,e,r){a.call(this),this._cache=new l,this._last=void 0,this._cipher=new h.AES(e),this._prev=n.from(r),this._mode=t,this._autopadding=!0}function l(){this.cache=n.allocUnsafe(0)}function d(t,e,r){var a=o[t.toLowerCase()];if(!a)throw new TypeError("invalid suite type");if("string"==typeof r&&(r=n.from(r)),"GCM"!==a.mode&&r.length!==a.iv)throw new TypeError("invalid iv length "+r.length);if("string"==typeof e&&(e=n.from(e)),e.length!==a.key/8)throw new TypeError("invalid key length "+e.length);return"stream"===a.type?new s(a.module,e,r,!0):"auth"===a.type?new i(a.module,e,r,!0):new c(a.module,e,r)}r(5717)(c,a),c.prototype._update=function(t){var e,r;this._cache.add(t);for(var i=[];e=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,e),i.push(r);return n.concat(i)},c.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return function(t){var e=t[15];if(e<1||e>16)throw new Error("unable to decrypt data");for(var r=-1;++r16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},l.prototype.flush=function(){if(this.cache.length)return this.cache},e.createDecipher=function(t,e){var r=o[t.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=u(e,!1,r.key,r.iv);return d(t,i.key,i.iv)},e.createDecipheriv=d},1494:(t,e,r)=>{var i=r(45),n=r(2422),o=r(9509).Buffer,s=r(5969),a=r(1027),h=r(4497),u=r(3048);function c(t,e,r){a.call(this),this._cache=new d,this._cipher=new h.AES(e),this._prev=o.from(r),this._mode=t,this._autopadding=!0}r(5717)(c,a),c.prototype._update=function(t){var e,r;this._cache.add(t);for(var i=[];e=this._cache.get();)r=this._mode.encrypt(this,e),i.push(r);return o.concat(i)};var l=o.alloc(16,16);function d(){this.cache=o.allocUnsafe(0)}function f(t,e,r){var a=i[t.toLowerCase()];if(!a)throw new TypeError("invalid suite type");if("string"==typeof e&&(e=o.from(e)),e.length!==a.key/8)throw new TypeError("invalid key length "+e.length);if("string"==typeof r&&(r=o.from(r)),"GCM"!==a.mode&&r.length!==a.iv)throw new TypeError("invalid iv length "+r.length);return"stream"===a.type?new s(a.module,e,r):"auth"===a.type?new n(a.module,e,r):new c(a.module,e,r)}c.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(!t.equals(l))throw this._cipher.scrub(),new Error("data not multiple of block length")},c.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},d.prototype.add=function(t){this.cache=o.concat([this.cache,t])},d.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},d.prototype.flush=function(){for(var t=16-this.cache.length,e=o.allocUnsafe(t),r=-1;++r{var i=r(9509).Buffer,n=i.alloc(16,0);function o(t){var e=i.allocUnsafe(16);return e.writeUInt32BE(t[0]>>>0,0),e.writeUInt32BE(t[1]>>>0,4),e.writeUInt32BE(t[2]>>>0,8),e.writeUInt32BE(t[3]>>>0,12),e}function s(t){this.h=t,this.state=i.alloc(16,0),this.cache=i.allocUnsafe(0)}s.prototype.ghash=function(t){for(var e=-1;++e0;e--)i[e]=i[e]>>>1|(1&i[e-1])<<31;i[0]=i[0]>>>1,r&&(i[0]=i[0]^225<<24)}this.state=o(n)},s.prototype.update=function(t){var e;for(this.cache=i.concat([this.cache,t]);this.cache.length>=16;)e=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(e)},s.prototype.final=function(t,e){return this.cache.length&&this.ghash(i.concat([this.cache,n],16)),this.ghash(o([0,t,0,e])),this.state},t.exports=s},685:t=>{t.exports=function(t){for(var e,r=t.length;r--;){if(255!==(e=t.readUInt8(r))){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}},5292:(t,e,r)=>{var i=r(7295);e.encrypt=function(t,e){var r=i(e,t._prev);return t._prev=t._cipher.encryptBlock(r),t._prev},e.decrypt=function(t,e){var r=t._prev;t._prev=e;var n=t._cipher.decryptBlock(e);return i(n,r)}},6311:(t,e,r)=>{var i=r(9509).Buffer,n=r(7295);function o(t,e,r){var o=e.length,s=n(e,t._cache);return t._cache=t._cache.slice(o),t._prev=i.concat([t._prev,r?e:s]),s}e.encrypt=function(t,e,r){for(var n,s=i.allocUnsafe(0);e.length;){if(0===t._cache.length&&(t._cache=t._cipher.encryptBlock(t._prev),t._prev=i.allocUnsafe(0)),!(t._cache.length<=e.length)){s=i.concat([s,o(t,e,r)]);break}n=t._cache.length,s=i.concat([s,o(t,e.slice(0,n),r)]),e=e.slice(n)}return s}},1510:(t,e,r)=>{var i=r(9509).Buffer;function n(t,e,r){for(var i,n,s=-1,a=0;++s<8;)i=e&1<<7-s?128:0,a+=(128&(n=t._cipher.encryptBlock(t._prev)[0]^i))>>s%8,t._prev=o(t._prev,r?i:n);return a}function o(t,e){var r=t.length,n=-1,o=i.allocUnsafe(t.length);for(t=i.concat([t,i.from([e])]);++n>7;return o}e.encrypt=function(t,e,r){for(var o=e.length,s=i.allocUnsafe(o),a=-1;++a{var i=r(9509).Buffer;function n(t,e,r){var n=t._cipher.encryptBlock(t._prev)[0]^e;return t._prev=i.concat([t._prev.slice(1),i.from([r?e:n])]),n}e.encrypt=function(t,e,r){for(var o=e.length,s=i.allocUnsafe(o),a=-1;++a{var i=r(7295),n=r(9509).Buffer,o=r(685);function s(t){var e=t._cipher.encryptBlockRaw(t._prev);return o(t._prev),e}e.encrypt=function(t,e){var r=Math.ceil(e.length/16),o=t._cache.length;t._cache=n.concat([t._cache,n.allocUnsafe(16*r)]);for(var a=0;a{e.encrypt=function(t,e){return t._cipher.encryptBlock(e)},e.decrypt=function(t,e){return t._cipher.decryptBlock(e)}},45:(t,e,r)=>{var i={ECB:r(1084),CBC:r(5292),CFB:r(6311),CFB8:r(1964),CFB1:r(1510),OFB:r(8861),CTR:r(6009),GCM:r(6009)},n=r(5415);for(var o in n)n[o].module=i[n[o].mode];t.exports=n},5415:t=>{"use strict";t.exports=JSON.parse('{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}')},8861:(t,e,r)=>{var i=r(8764).Buffer,n=r(7295);function o(t){return t._prev=t._cipher.encryptBlock(t._prev),t._prev}e.encrypt=function(t,e){for(;t._cache.length{var i=r(4497),n=r(9509).Buffer,o=r(1027);function s(t,e,r,s){o.call(this),this._cipher=new i.AES(e),this._prev=n.from(r),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=s,this._mode=t}r(5717)(s,o),s.prototype._update=function(t){return this._mode.encrypt(this,t,this._decrypt)},s.prototype._final=function(){this._cipher.scrub()},t.exports=s},3614:(t,e,r)=>{var i=r(7667),n=r(4696),o=r(45),s=r(9715),a=r(3048);function h(t,e,r){if(t=t.toLowerCase(),o[t])return n.createCipheriv(t,e,r);if(s[t])return new i({key:e,iv:r,mode:t});throw new TypeError("invalid suite type")}function u(t,e,r){if(t=t.toLowerCase(),o[t])return n.createDecipheriv(t,e,r);if(s[t])return new i({key:e,iv:r,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}e.createCipher=e.Cipher=function(t,e){var r,i;if(t=t.toLowerCase(),o[t])r=o[t].key,i=o[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");r=8*s[t].key,i=s[t].iv}var n=a(e,!1,r,i);return h(t,n.key,n.iv)},e.createCipheriv=e.Cipheriv=h,e.createDecipher=e.Decipher=function(t,e){var r,i;if(t=t.toLowerCase(),o[t])r=o[t].key,i=o[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");r=8*s[t].key,i=s[t].iv}var n=a(e,!1,r,i);return u(t,n.key,n.iv)},e.createDecipheriv=e.Decipheriv=u,e.listCiphers=e.getCiphers=function(){return Object.keys(s).concat(n.getCiphers())}},7667:(t,e,r)=>{var i=r(1027),n=r(5251),o=r(5717),s=r(9509).Buffer,a={"des-ede3-cbc":n.CBC.instantiate(n.EDE),"des-ede3":n.EDE,"des-ede-cbc":n.CBC.instantiate(n.EDE),"des-ede":n.EDE,"des-cbc":n.CBC.instantiate(n.DES),"des-ecb":n.DES};function h(t){i.call(this);var e,r=t.mode.toLowerCase(),n=a[r];e=t.decrypt?"decrypt":"encrypt";var o=t.key;s.isBuffer(o)||(o=s.from(o)),"des-ede"!==r&&"des-ede-cbc"!==r||(o=s.concat([o,o.slice(0,8)]));var h=t.iv;s.isBuffer(h)||(h=s.from(h)),this._des=n.create({key:o,iv:h,type:e})}a.des=a["des-cbc"],a.des3=a["des-ede3-cbc"],t.exports=h,o(h,i),h.prototype._update=function(t){return s.from(this._des.update(t))},h.prototype._final=function(){return s.from(this._des.final())}},9715:(t,e)=>{e["des-ecb"]={key:8,iv:0},e["des-cbc"]=e.des={key:8,iv:8},e["des-ede3-cbc"]=e.des3={key:24,iv:8},e["des-ede3"]={key:24,iv:0},e["des-ede-cbc"]={key:16,iv:8},e["des-ede"]={key:16,iv:0}},3663:(t,e,r)=>{var i=r(8764).Buffer,n=r(3550),o=r(1798);function s(t){var e,r=t.modulus.byteLength();do{e=new n(o(r))}while(e.cmp(t.modulus)>=0||!e.umod(t.prime1)||!e.umod(t.prime2));return e}function a(t,e){var r=function(t){var e=s(t);return{blinder:e.toRed(n.mont(t.modulus)).redPow(new n(t.publicExponent)).fromRed(),unblinder:e.invm(t.modulus)}}(e),o=e.modulus.byteLength(),a=new n(t).mul(r.blinder).umod(e.modulus),h=a.toRed(n.mont(e.prime1)),u=a.toRed(n.mont(e.prime2)),c=e.coefficient,l=e.prime1,d=e.prime2,f=h.redPow(e.exponent1).fromRed(),A=u.redPow(e.exponent2).fromRed(),g=f.isub(A).imul(c).umod(l).imul(d);return A.iadd(g).imul(r.unblinder).umod(e.modulus).toArrayLike(i,"be",o)}a.getr=s,t.exports=a},6042:(t,e,r)=>{t.exports=r(2063)},2063:t=>{"use strict";t.exports=JSON.parse('{"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}}')},2236:t=>{"use strict";t.exports=JSON.parse('{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}')},4743:(t,e,r)=>{var i=r(9509).Buffer,n=r(3482),o=r(8473),s=r(5717),a=r(2957),h=r(7753),u=r(2063);function c(t){o.Writable.call(this);var e=u[t];if(!e)throw new Error("Unknown message digest");this._hashType=e.hash,this._hash=n(e.hash),this._tag=e.id,this._signType=e.sign}function l(t){o.Writable.call(this);var e=u[t];if(!e)throw new Error("Unknown message digest");this._hash=n(e.hash),this._tag=e.id,this._signType=e.sign}function d(t){return new c(t)}function f(t){return new l(t)}Object.keys(u).forEach((function(t){u[t].id=i.from(u[t].id,"hex"),u[t.toLowerCase()]=u[t]})),s(c,o.Writable),c.prototype._write=function(t,e,r){this._hash.update(t),r()},c.prototype.update=function(t,e){return"string"==typeof t&&(t=i.from(t,e)),this._hash.update(t),this},c.prototype.sign=function(t,e){this.end();var r=this._hash.digest(),i=a(r,t,this._hashType,this._signType,this._tag);return e?i.toString(e):i},s(l,o.Writable),l.prototype._write=function(t,e,r){this._hash.update(t),r()},l.prototype.update=function(t,e){return"string"==typeof t&&(t=i.from(t,e)),this._hash.update(t),this},l.prototype.verify=function(t,e,r){"string"==typeof e&&(e=i.from(e,r)),this.end();var n=this._hash.digest();return h(e,n,t,this._signType,this._tag)},t.exports={Sign:d,Verify:f,createSign:d,createVerify:f}},2957:(t,e,r)=>{var i=r(9509).Buffer,n=r(8355),o=r(3663),s=r(6266).ec,a=r(3550),h=r(980),u=r(2236);function c(t,e,r,o){if((t=i.from(t.toArray())).length0&&r.ishrn(i),r}function d(t,e,r){var o,s;do{for(o=i.alloc(0);8*o.length{var i=r(9509).Buffer,n=r(3550),o=r(6266).ec,s=r(980),a=r(2236);function h(t,e){if(t.cmpn(0)<=0)throw new Error("invalid sig");if(t.cmp(e)>=e)throw new Error("invalid sig")}t.exports=function(t,e,r,u,c){var l=s(r);if("ec"===l.type){if("ecdsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");return function(t,e,r){var i=a[r.data.algorithm.curve.join(".")];if(!i)throw new Error("unknown curve "+r.data.algorithm.curve.join("."));var n=new o(i),s=r.data.subjectPrivateKey.data;return n.verify(e,t,s)}(t,e,l)}if("dsa"===l.type){if("dsa"!==u)throw new Error("wrong public key type");return function(t,e,r){var i=r.data.p,o=r.data.q,a=r.data.g,u=r.data.pub_key,c=s.signature.decode(t,"der"),l=c.s,d=c.r;h(l,o),h(d,o);var f=n.mont(i),A=l.invm(o);return 0===a.toRed(f).redPow(new n(e).mul(A).mod(o)).fromRed().mul(u.toRed(f).redPow(d.mul(A).mod(o)).fromRed()).mod(i).mod(o).cmp(d)}(t,e,l)}if("rsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");e=i.concat([c,e]);for(var d=l.modulus.byteLength(),f=[1],A=0;e.length+f.length+2{"use strict";var i=r(8764).Buffer,n=r(4155),o=r(9282),s=r(4860),a=r(2233),h=r(3001),u=r(7162);for(var c in u)e[c]=u[c];function l(t){if("number"!=typeof t||te.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=t,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}e.NONE=0,e.DEFLATE=1,e.INFLATE=2,e.GZIP=3,e.GUNZIP=4,e.DEFLATERAW=5,e.INFLATERAW=6,e.UNZIP=7,l.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,o(this.init_done,"close before init"),o(this.mode<=e.UNZIP),this.mode===e.DEFLATE||this.mode===e.GZIP||this.mode===e.DEFLATERAW?a.deflateEnd(this.strm):this.mode!==e.INFLATE&&this.mode!==e.GUNZIP&&this.mode!==e.INFLATERAW&&this.mode!==e.UNZIP||h.inflateEnd(this.strm),this.mode=e.NONE,this.dictionary=null)},l.prototype.write=function(t,e,r,i,n,o,s){return this._write(!0,t,e,r,i,n,o,s)},l.prototype.writeSync=function(t,e,r,i,n,o,s){return this._write(!1,t,e,r,i,n,o,s)},l.prototype._write=function(t,r,s,a,h,u,c,l){if(o.equal(arguments.length,8),o(this.init_done,"write before init"),o(this.mode!==e.NONE,"already finalized"),o.equal(!1,this.write_in_progress,"write already in progress"),o.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,o.equal(!1,void 0===r,"must provide flush value"),this.write_in_progress=!0,r!==e.Z_NO_FLUSH&&r!==e.Z_PARTIAL_FLUSH&&r!==e.Z_SYNC_FLUSH&&r!==e.Z_FULL_FLUSH&&r!==e.Z_FINISH&&r!==e.Z_BLOCK)throw new Error("Invalid flush value");if(null==s&&(s=i.alloc(0),h=0,a=0),this.strm.avail_in=h,this.strm.input=s,this.strm.next_in=a,this.strm.avail_out=l,this.strm.output=u,this.strm.next_out=c,this.flush=r,!t)return this._process(),this._checkError()?this._afterSync():void 0;var d=this;return n.nextTick((function(){d._process(),d._after()})),this},l.prototype._afterSync=function(){var t=this.strm.avail_out,e=this.strm.avail_in;return this.write_in_progress=!1,[e,t]},l.prototype._process=function(){var t=null;switch(this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:this.err=a.deflate(this.strm,this.flush);break;case e.UNZIP:switch(this.strm.avail_in>0&&(t=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===t)break;if(31!==this.strm.input[t]){this.mode=e.INFLATE;break}if(this.gzip_id_bytes_read=1,t++,1===this.strm.avail_in)break;case 1:if(null===t)break;139===this.strm.input[t]?(this.gzip_id_bytes_read=2,this.mode=e.GUNZIP):this.mode=e.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:for(this.err=h.inflate(this.strm,this.flush),this.err===e.Z_NEED_DICT&&this.dictionary&&(this.err=h.inflateSetDictionary(this.strm,this.dictionary),this.err===e.Z_OK?this.err=h.inflate(this.strm,this.flush):this.err===e.Z_DATA_ERROR&&(this.err=e.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===e.GUNZIP&&this.err===e.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=h.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},l.prototype._checkError=function(){switch(this.err){case e.Z_OK:case e.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===e.Z_FINISH)return this._error("unexpected end of file"),!1;break;case e.Z_STREAM_END:break;case e.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},l.prototype._after=function(){if(this._checkError()){var t=this.strm.avail_out,e=this.strm.avail_in;this.write_in_progress=!1,this.callback(e,t),this.pending_close&&this.close()}},l.prototype._error=function(t){this.strm.msg&&(t=this.strm.msg),this.onerror(t,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},l.prototype.init=function(t,r,i,n,s){o(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),o(t>=8&&t<=15,"invalid windowBits"),o(r>=-1&&r<=9,"invalid compression level"),o(i>=1&&i<=9,"invalid memlevel"),o(n===e.Z_FILTERED||n===e.Z_HUFFMAN_ONLY||n===e.Z_RLE||n===e.Z_FIXED||n===e.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(r,t,i,n,s),this._setDictionary()},l.prototype.params=function(){throw new Error("deflateParams Not supported")},l.prototype.reset=function(){this._reset(),this._setDictionary()},l.prototype._init=function(t,r,i,n,o){switch(this.level=t,this.windowBits=r,this.memLevel=i,this.strategy=n,this.flush=e.Z_NO_FLUSH,this.err=e.Z_OK,this.mode!==e.GZIP&&this.mode!==e.GUNZIP||(this.windowBits+=16),this.mode===e.UNZIP&&(this.windowBits+=32),this.mode!==e.DEFLATERAW&&this.mode!==e.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new s,this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:this.err=a.deflateInit2(this.strm,this.level,e.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:case e.UNZIP:this.err=h.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==e.Z_OK&&this._error("Init error"),this.dictionary=o,this.write_in_progress=!1,this.init_done=!0},l.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=e.Z_OK,this.mode){case e.DEFLATE:case e.DEFLATERAW:this.err=a.deflateSetDictionary(this.strm,this.dictionary)}this.err!==e.Z_OK&&this._error("Failed to set dictionary")}},l.prototype._reset=function(){switch(this.err=e.Z_OK,this.mode){case e.DEFLATE:case e.DEFLATERAW:case e.GZIP:this.err=a.deflateReset(this.strm);break;case e.INFLATE:case e.INFLATERAW:case e.GUNZIP:this.err=h.inflateReset(this.strm)}this.err!==e.Z_OK&&this._error("Failed to reset stream")},e.Zlib=l},2635:(t,e,r)=>{"use strict";var i=r(4155),n=r(8764).Buffer,o=r(2830).Transform,s=r(4505),a=r(9539),h=r(9282).ok,u=r(8764).kMaxLength,c="Cannot create final Buffer. It would be larger than 0x"+u.toString(16)+" bytes";s.Z_MIN_WINDOWBITS=8,s.Z_MAX_WINDOWBITS=15,s.Z_DEFAULT_WINDOWBITS=15,s.Z_MIN_CHUNK=64,s.Z_MAX_CHUNK=1/0,s.Z_DEFAULT_CHUNK=16384,s.Z_MIN_MEMLEVEL=1,s.Z_MAX_MEMLEVEL=9,s.Z_DEFAULT_MEMLEVEL=8,s.Z_MIN_LEVEL=-1,s.Z_MAX_LEVEL=9,s.Z_DEFAULT_LEVEL=s.Z_DEFAULT_COMPRESSION;for(var l=Object.keys(s),d=0;d=u?s=new RangeError(c):e=n.concat(i,o),i=[],t.close(),r(s,e)}t.on("error",(function(e){t.removeListener("end",a),t.removeListener("readable",s),r(e)})),t.on("end",a),t.end(e),s()}function E(t,e){if("string"==typeof e&&(e=n.from(e)),!n.isBuffer(e))throw new TypeError("Not a string or buffer");var r=t._finishFlushFlag;return t._processChunk(e,r)}function p(t){if(!(this instanceof p))return new p(t);N.call(this,t,s.DEFLATE)}function m(t){if(!(this instanceof m))return new m(t);N.call(this,t,s.INFLATE)}function y(t){if(!(this instanceof y))return new y(t);N.call(this,t,s.GZIP)}function b(t){if(!(this instanceof b))return new b(t);N.call(this,t,s.GUNZIP)}function Q(t){if(!(this instanceof Q))return new Q(t);N.call(this,t,s.DEFLATERAW)}function I(t){if(!(this instanceof I))return new I(t);N.call(this,t,s.INFLATERAW)}function C(t){if(!(this instanceof C))return new C(t);N.call(this,t,s.UNZIP)}function D(t){return t===s.Z_NO_FLUSH||t===s.Z_PARTIAL_FLUSH||t===s.Z_SYNC_FLUSH||t===s.Z_FULL_FLUSH||t===s.Z_FINISH||t===s.Z_BLOCK}function N(t,r){var i=this;if(this._opts=t=t||{},this._chunkSize=t.chunkSize||e.Z_DEFAULT_CHUNK,o.call(this,t),t.flush&&!D(t.flush))throw new Error("Invalid flush flag: "+t.flush);if(t.finishFlush&&!D(t.finishFlush))throw new Error("Invalid flush flag: "+t.finishFlush);if(this._flushFlag=t.flush||s.Z_NO_FLUSH,this._finishFlushFlag=void 0!==t.finishFlush?t.finishFlush:s.Z_FINISH,t.chunkSize&&(t.chunkSizee.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+t.chunkSize);if(t.windowBits&&(t.windowBitse.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+t.windowBits);if(t.level&&(t.levele.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+t.level);if(t.memLevel&&(t.memLevele.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+t.memLevel);if(t.strategy&&t.strategy!=e.Z_FILTERED&&t.strategy!=e.Z_HUFFMAN_ONLY&&t.strategy!=e.Z_RLE&&t.strategy!=e.Z_FIXED&&t.strategy!=e.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+t.strategy);if(t.dictionary&&!n.isBuffer(t.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new s.Zlib(r);var a=this;this._hadError=!1,this._handle.onerror=function(t,r){v(a),a._hadError=!0;var i=new Error(t);i.errno=r,i.code=e.codes[r],a.emit("error",i)};var h=e.Z_DEFAULT_COMPRESSION;"number"==typeof t.level&&(h=t.level);var u=e.Z_DEFAULT_STRATEGY;"number"==typeof t.strategy&&(u=t.strategy),this._handle.init(t.windowBits||e.Z_DEFAULT_WINDOWBITS,h,t.memLevel||e.Z_DEFAULT_MEMLEVEL,u,t.dictionary),this._buffer=n.allocUnsafe(this._chunkSize),this._offset=0,this._level=h,this._strategy=u,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!i._handle},configurable:!0,enumerable:!0})}function v(t,e){e&&i.nextTick(e),t._handle&&(t._handle.close(),t._handle=null)}function G(t){t.emit("close")}Object.defineProperty(e,"codes",{enumerable:!0,value:Object.freeze(A),writable:!1}),e.Deflate=p,e.Inflate=m,e.Gzip=y,e.Gunzip=b,e.DeflateRaw=Q,e.InflateRaw=I,e.Unzip=C,e.createDeflate=function(t){return new p(t)},e.createInflate=function(t){return new m(t)},e.createDeflateRaw=function(t){return new Q(t)},e.createInflateRaw=function(t){return new I(t)},e.createGzip=function(t){return new y(t)},e.createGunzip=function(t){return new b(t)},e.createUnzip=function(t){return new C(t)},e.deflate=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new p(e),t,r)},e.deflateSync=function(t,e){return E(new p(e),t)},e.gzip=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new y(e),t,r)},e.gzipSync=function(t,e){return E(new y(e),t)},e.deflateRaw=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new Q(e),t,r)},e.deflateRawSync=function(t,e){return E(new Q(e),t)},e.unzip=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new C(e),t,r)},e.unzipSync=function(t,e){return E(new C(e),t)},e.inflate=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new m(e),t,r)},e.inflateSync=function(t,e){return E(new m(e),t)},e.gunzip=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new b(e),t,r)},e.gunzipSync=function(t,e){return E(new b(e),t)},e.inflateRaw=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new I(e),t,r)},e.inflateRawSync=function(t,e){return E(new I(e),t)},a.inherits(N,o),N.prototype.params=function(t,r,n){if(te.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+t);if(r!=e.Z_FILTERED&&r!=e.Z_HUFFMAN_ONLY&&r!=e.Z_RLE&&r!=e.Z_FIXED&&r!=e.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+r);if(this._level!==t||this._strategy!==r){var o=this;this.flush(s.Z_SYNC_FLUSH,(function(){h(o._handle,"zlib binding closed"),o._handle.params(t,r),o._hadError||(o._level=t,o._strategy=r,n&&n())}))}else i.nextTick(n)},N.prototype.reset=function(){return h(this._handle,"zlib binding closed"),this._handle.reset()},N.prototype._flush=function(t){this._transform(n.alloc(0),"",t)},N.prototype.flush=function(t,e){var r=this,o=this._writableState;("function"==typeof t||void 0===t&&!e)&&(e=t,t=s.Z_FULL_FLUSH),o.ended?e&&i.nextTick(e):o.ending?e&&this.once("end",e):o.needDrain?e&&this.once("drain",(function(){return r.flush(t,e)})):(this._flushFlag=t,this.write(n.alloc(0),"",e))},N.prototype.close=function(t){v(this,t),i.nextTick(G,this)},N.prototype._transform=function(t,e,r){var i,o=this._writableState,a=(o.ending||o.ended)&&(!t||o.length===t.length);return null===t||n.isBuffer(t)?this._handle?(a?i=this._finishFlushFlag:(i=this._flushFlag,t.length>=o.length&&(this._flushFlag=this._opts.flush||s.Z_NO_FLUSH)),void this._processChunk(t,i,r)):r(new Error("zlib binding closed")):r(new Error("invalid input"))},N.prototype._processChunk=function(t,e,r){var i=t&&t.length,o=this._chunkSize-this._offset,s=0,a=this,l="function"==typeof r;if(!l){var d,f=[],A=0;this.on("error",(function(t){d=t})),h(this._handle,"zlib binding closed");do{var g=this._handle.writeSync(e,t,s,i,this._buffer,this._offset,o)}while(!this._hadError&&w(g[0],g[1]));if(this._hadError)throw d;if(A>=u)throw v(this),new RangeError(c);var M=n.concat(f,A);return v(this),M}h(this._handle,"zlib binding closed");var B=this._handle.write(e,t,s,i,this._buffer,this._offset,o);function w(u,c){if(this&&(this.buffer=null,this.callback=null),!a._hadError){var d=o-c;if(h(d>=0,"have should not go down"),d>0){var g=a._buffer.slice(a._offset,a._offset+d);a._offset+=d,l?a.push(g):(f.push(g),A+=g.length)}if((0===c||a._offset>=a._chunkSize)&&(o=a._chunkSize,a._offset=0,a._buffer=n.allocUnsafe(a._chunkSize)),0===c){if(s+=i-u,i=u,!l)return!0;var M=a._handle.write(e,t,s,i,a._buffer,a._offset,a._chunkSize);return M.callback=w,void(M.buffer=t)}if(!l)return!1;r()}}B.buffer=t,B.callback=w},a.inherits(p,N),a.inherits(m,N),a.inherits(y,N),a.inherits(b,N),a.inherits(Q,N),a.inherits(I,N),a.inherits(C,N)},6907:(t,e)=>{"use strict";var r="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var r=e.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var n in r)i(r,n)&&(t[n]=r[n])}}return t},e.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var n={arraySet:function(t,e,r,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(r,r+i),n);else for(var o=0;o{"use strict";t.exports=function(t,e,r,i){for(var n=65535&t|0,o=t>>>16&65535|0,s=0;0!==r;){r-=s=r>2e3?2e3:r;do{o=o+(n=n+e[i++]|0)|0}while(--s);n%=65521,o%=65521}return n|o<<16|0}},7162:t=>{"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},3415:t=>{"use strict";var e=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();t.exports=function(t,r,i,n){var o=e,s=n+i;t^=-1;for(var a=n;a>>8^o[255&(t^r[a])];return-1^t}},2233:(t,e,r)=>{"use strict";var i,n=r(6907),o=r(1339),s=r(7575),a=r(3415),h=r(9364),u=-2,c=258,l=262,d=103,f=113,A=666;function g(t,e){return t.msg=h[e],e}function M(t){return(t<<1)-(t>4?9:0)}function B(t){for(var e=t.length;--e>=0;)t[e]=0}function w(t){var e=t.state,r=e.pending;r>t.avail_out&&(r=t.avail_out),0!==r&&(n.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))}function E(t,e){o._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,w(t.strm)}function p(t,e){t.pending_buf[t.pending++]=e}function m(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function y(t,e){var r,i,n=t.max_chain_length,o=t.strstart,s=t.prev_length,a=t.nice_match,h=t.strstart>t.w_size-l?t.strstart-(t.w_size-l):0,u=t.window,d=t.w_mask,f=t.prev,A=t.strstart+c,g=u[o+s-1],M=u[o+s];t.prev_length>=t.good_match&&(n>>=2),a>t.lookahead&&(a=t.lookahead);do{if(u[(r=e)+s]===M&&u[r+s-1]===g&&u[r]===u[o]&&u[++r]===u[o+1]){o+=2,r++;do{}while(u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&os){if(t.match_start=e,s=i,i>=a)break;g=u[o+s-1],M=u[o+s]}}}while((e=f[e&d])>h&&0!=--n);return s<=t.lookahead?s:t.lookahead}function b(t){var e,r,i,o,h,u,c,d,f,A,g=t.w_size;do{if(o=t.window_size-t.lookahead-t.strstart,t.strstart>=g+(g-l)){n.arraySet(t.window,t.window,g,g,0),t.match_start-=g,t.strstart-=g,t.block_start-=g,e=r=t.hash_size;do{i=t.head[--e],t.head[e]=i>=g?i-g:0}while(--r);e=r=g;do{i=t.prev[--e],t.prev[e]=i>=g?i-g:0}while(--r);o+=g}if(0===t.strm.avail_in)break;if(u=t.strm,c=t.window,d=t.strstart+t.lookahead,f=o,A=void 0,(A=u.avail_in)>f&&(A=f),r=0===A?0:(u.avail_in-=A,n.arraySet(c,u.input,u.next_in,A,d),1===u.state.wrap?u.adler=s(u.adler,c,A,d):2===u.state.wrap&&(u.adler=a(u.adler,c,A,d)),u.next_in+=A,u.total_in+=A,A),t.lookahead+=r,t.lookahead+t.insert>=3)for(h=t.strstart-t.insert,t.ins_h=t.window[h],t.ins_h=(t.ins_h<=3&&(t.ins_h=(t.ins_h<=3)if(i=o._tr_tally(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<=3&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=o._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=(t.ins_h<15&&(a=2,i-=16),o<1||o>9||8!==r||i<8||i>15||e<0||e>9||s<0||s>4)return g(t,u);8===i&&(i=9);var h=new D;return t.state=h,h.strm=t,h.wrap=a,h.gzhead=null,h.w_bits=i,h.w_size=1<t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(b(t),0===t.lookahead&&0===e)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+r;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,E(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-l&&(E(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(E(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(E(t,!1),t.strm.avail_out),1)})),new C(4,4,8,4,Q),new C(4,5,16,8,Q),new C(4,6,32,32,Q),new C(4,4,16,16,I),new C(8,16,32,32,I),new C(8,16,128,128,I),new C(8,32,128,256,I),new C(32,128,258,1024,I),new C(32,258,258,4096,I)],e.deflateInit=function(t,e){return G(t,e,8,15,8,0)},e.deflateInit2=G,e.deflateReset=v,e.deflateResetKeep=N,e.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?u:(t.state.gzhead=e,0):u},e.deflate=function(t,e){var r,n,s,h;if(!t||!t.state||e>5||e<0)return t?g(t,u):u;if(n=t.state,!t.output||!t.input&&0!==t.avail_in||n.status===A&&4!==e)return g(t,0===t.avail_out?-5:u);if(n.strm=t,r=n.last_flush,n.last_flush=e,42===n.status)if(2===n.wrap)t.adler=0,p(n,31),p(n,139),p(n,8),n.gzhead?(p(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),p(n,255&n.gzhead.time),p(n,n.gzhead.time>>8&255),p(n,n.gzhead.time>>16&255),p(n,n.gzhead.time>>24&255),p(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),p(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(p(n,255&n.gzhead.extra.length),p(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=a(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(p(n,0),p(n,0),p(n,0),p(n,0),p(n,0),p(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),p(n,3),n.status=f);else{var l=8+(n.w_bits-8<<4)<<8;l|=(n.strategy>=2||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(l|=32),l+=31-l%31,n.status=f,m(n,l),0!==n.strstart&&(m(n,t.adler>>>16),m(n,65535&t.adler)),t.adler=1}if(69===n.status)if(n.gzhead.extra){for(s=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),w(t),s=n.pending,n.pending!==n.pending_buf_size));)p(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){s=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),w(t),s=n.pending,n.pending===n.pending_buf_size)){h=1;break}h=n.gzindexs&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),0===h&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){s=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),w(t),s=n.pending,n.pending===n.pending_buf_size)){h=1;break}h=n.gzindexs&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),0===h&&(n.status=d)}else n.status=d;if(n.status===d&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&w(t),n.pending+2<=n.pending_buf_size&&(p(n,255&t.adler),p(n,t.adler>>8&255),t.adler=0,n.status=f)):n.status=f),0!==n.pending){if(w(t),0===t.avail_out)return n.last_flush=-1,0}else if(0===t.avail_in&&M(e)<=M(r)&&4!==e)return g(t,-5);if(n.status===A&&0!==t.avail_in)return g(t,-5);if(0!==t.avail_in||0!==n.lookahead||0!==e&&n.status!==A){var y=2===n.strategy?function(t,e){for(var r;;){if(0===t.lookahead&&(b(t),0===t.lookahead)){if(0===e)return 1;break}if(t.match_length=0,r=o._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(E(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(E(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(E(t,!1),0===t.strm.avail_out)?1:2}(n,e):3===n.strategy?function(t,e){for(var r,i,n,s,a=t.window;;){if(t.lookahead<=c){if(b(t),t.lookahead<=c&&0===e)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(i=a[n=t.strstart-1])===a[++n]&&i===a[++n]&&i===a[++n]){s=t.strstart+c;do{}while(i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(r=o._tr_tally(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=o._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(E(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(E(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(E(t,!1),0===t.strm.avail_out)?1:2}(n,e):i[n.level].func(n,e);if(3!==y&&4!==y||(n.status=A),1===y||3===y)return 0===t.avail_out&&(n.last_flush=-1),0;if(2===y&&(1===e?o._tr_align(n):5!==e&&(o._tr_stored_block(n,0,0,!1),3===e&&(B(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),w(t),0===t.avail_out))return n.last_flush=-1,0}return 4!==e?0:n.wrap<=0?1:(2===n.wrap?(p(n,255&t.adler),p(n,t.adler>>8&255),p(n,t.adler>>16&255),p(n,t.adler>>24&255),p(n,255&t.total_in),p(n,t.total_in>>8&255),p(n,t.total_in>>16&255),p(n,t.total_in>>24&255)):(m(n,t.adler>>>16),m(n,65535&t.adler)),w(t),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?0:1)},e.deflateEnd=function(t){var e;return t&&t.state?42!==(e=t.state.status)&&69!==e&&73!==e&&91!==e&&e!==d&&e!==f&&e!==A?g(t,u):(t.state=null,e===f?g(t,-3):0):u},e.deflateSetDictionary=function(t,e){var r,i,o,a,h,c,l,d,f=e.length;if(!t||!t.state)return u;if(2===(a=(r=t.state).wrap)||1===a&&42!==r.status||r.lookahead)return u;for(1===a&&(t.adler=s(t.adler,e,f,0)),r.wrap=0,f>=r.w_size&&(0===a&&(B(r.head),r.strstart=0,r.block_start=0,r.insert=0),d=new n.Buf8(r.w_size),n.arraySet(d,e,f-r.w_size,r.w_size,0),e=d,f=r.w_size),h=t.avail_in,c=t.next_in,l=t.input,t.avail_in=f,t.next_in=0,t.input=e,b(r);r.lookahead>=3;){i=r.strstart,o=r.lookahead-2;do{r.ins_h=(r.ins_h<{"use strict";t.exports=function(t,e){var r,i,n,o,s,a,h,u,c,l,d,f,A,g,M,B,w,E,p,m,y,b,Q,I,C;r=t.state,i=t.next_in,I=t.input,n=i+(t.avail_in-5),o=t.next_out,C=t.output,s=o-(e-t.avail_out),a=o+(t.avail_out-257),h=r.dmax,u=r.wsize,c=r.whave,l=r.wnext,d=r.window,f=r.hold,A=r.bits,g=r.lencode,M=r.distcode,B=(1<>>=p=E>>>24,A-=p,0==(p=E>>>16&255))C[o++]=65535&E;else{if(!(16&p)){if(0==(64&p)){E=g[(65535&E)+(f&(1<>>=p,A-=p),A<15&&(f+=I[i++]<>>=p=E>>>24,A-=p,!(16&(p=E>>>16&255))){if(0==(64&p)){E=M[(65535&E)+(f&(1<h){t.msg="invalid distance too far back",r.mode=30;break t}if(f>>>=p,A-=p,y>(p=o-s)){if((p=y-p)>c&&r.sane){t.msg="invalid distance too far back",r.mode=30;break t}if(b=0,Q=d,0===l){if(b+=u-p,p2;)C[o++]=Q[b++],C[o++]=Q[b++],C[o++]=Q[b++],m-=3;m&&(C[o++]=Q[b++],m>1&&(C[o++]=Q[b++]))}else{b=o-y;do{C[o++]=C[b++],C[o++]=C[b++],C[o++]=C[b++],m-=3}while(m>2);m&&(C[o++]=C[b++],m>1&&(C[o++]=C[b++]))}break}}break}}while(i>3,f&=(1<<(A-=m<<3))-1,t.next_in=i,t.next_out=o,t.avail_in=i{"use strict";var i=r(6907),n=r(7575),o=r(3415),s=r(6438),a=r(1375),h=-2,u=12,c=30;function l(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function d(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new i.Buf32(852),e.distcode=e.distdyn=new i.Buf32(592),e.sane=1,e.back=-1,0):h}function A(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,f(t)):h}function g(t,e){var r,i;return t&&t.state?(i=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?h:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=r,i.wbits=e,A(t))):h}function M(t,e){var r,i;return t?(i=new d,t.state=i,i.window=null,0!==(r=g(t,e))&&(t.state=null),r):h}var B,w,E=!0;function p(t){if(E){var e;for(B=new i.Buf32(512),w=new i.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(a(1,t.lens,0,288,B,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;a(2,t.lens,0,32,w,0,t.work,{bits:5}),E=!1}t.lencode=B,t.lenbits=9,t.distcode=w,t.distbits=5}function m(t,e,r,n){var o,s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(i.arraySet(s.window,e,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):((o=s.wsize-s.wnext)>n&&(o=n),i.arraySet(s.window,e,r-n,o,s.wnext),(n-=o)?(i.arraySet(s.window,e,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=o,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=o(r.check,F,2,0),w=0,E=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&w)<<8)+(w>>8))%31){t.msg="incorrect header check",r.mode=c;break}if(8!=(15&w)){t.msg="unknown compression method",r.mode=c;break}if(E-=4,U=8+(15&(w>>>=4)),0===r.wbits)r.wbits=U;else if(U>r.wbits){t.msg="invalid window size",r.mode=c;break}r.dmax=1<>8&1),512&r.flags&&(F[0]=255&w,F[1]=w>>>8&255,r.check=o(r.check,F,2,0)),w=0,E=0,r.mode=3;case 3:for(;E<32;){if(0===M)break t;M--,w+=d[A++]<>>8&255,F[2]=w>>>16&255,F[3]=w>>>24&255,r.check=o(r.check,F,4,0)),w=0,E=0,r.mode=4;case 4:for(;E<16;){if(0===M)break t;M--,w+=d[A++]<>8),512&r.flags&&(F[0]=255&w,F[1]=w>>>8&255,r.check=o(r.check,F,2,0)),w=0,E=0,r.mode=5;case 5:if(1024&r.flags){for(;E<16;){if(0===M)break t;M--,w+=d[A++]<>>8&255,r.check=o(r.check,F,2,0)),w=0,E=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((Q=r.length)>M&&(Q=M),Q&&(r.head&&(U=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),i.arraySet(r.head.extra,d,A,Q,U)),512&r.flags&&(r.check=o(r.check,d,Q,A)),M-=Q,A+=Q,r.length-=Q),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===M)break t;Q=0;do{U=d[A+Q++],r.head&&U&&r.length<65536&&(r.head.name+=String.fromCharCode(U))}while(U&&Q>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=u;break;case 10:for(;E<32;){if(0===M)break t;M--,w+=d[A++]<>>=7&E,E-=7&E,r.mode=27;break}for(;E<3;){if(0===M)break t;M--,w+=d[A++]<>>=1)){case 0:r.mode=14;break;case 1:if(p(r),r.mode=20,6===e){w>>>=2,E-=2;break t}break;case 2:r.mode=17;break;case 3:t.msg="invalid block type",r.mode=c}w>>>=2,E-=2;break;case 14:for(w>>>=7&E,E-=7&E;E<32;){if(0===M)break t;M--,w+=d[A++]<>>16^65535)){t.msg="invalid stored block lengths",r.mode=c;break}if(r.length=65535&w,w=0,E=0,r.mode=15,6===e)break t;case 15:r.mode=16;case 16:if(Q=r.length){if(Q>M&&(Q=M),Q>B&&(Q=B),0===Q)break t;i.arraySet(f,d,A,Q,g),M-=Q,A+=Q,B-=Q,g+=Q,r.length-=Q;break}r.mode=u;break;case 17:for(;E<14;){if(0===M)break t;M--,w+=d[A++]<>>=5,E-=5,r.ndist=1+(31&w),w>>>=5,E-=5,r.ncode=4+(15&w),w>>>=4,E-=4,r.nlen>286||r.ndist>30){t.msg="too many length or distance symbols",r.mode=c;break}r.have=0,r.mode=18;case 18:for(;r.have>>=3,E-=3}for(;r.have<19;)r.lens[L[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,T={bits:r.lenbits},V=a(0,r.lens,0,19,r.lencode,0,r.work,T),r.lenbits=T.bits,V){t.msg="invalid code lengths set",r.mode=c;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,v=65535&k,!((D=k>>>24)<=E);){if(0===M)break t;M--,w+=d[A++]<>>=D,E-=D,r.lens[r.have++]=v;else{if(16===v){for(S=D+2;E>>=D,E-=D,0===r.have){t.msg="invalid bit length repeat",r.mode=c;break}U=r.lens[r.have-1],Q=3+(3&w),w>>>=2,E-=2}else if(17===v){for(S=D+3;E>>=D)),w>>>=3,E-=3}else{for(S=D+7;E>>=D)),w>>>=7,E-=7}if(r.have+Q>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=c;break}for(;Q--;)r.lens[r.have++]=U}}if(r.mode===c)break;if(0===r.lens[256]){t.msg="invalid code -- missing end-of-block",r.mode=c;break}if(r.lenbits=9,T={bits:r.lenbits},V=a(1,r.lens,0,r.nlen,r.lencode,0,r.work,T),r.lenbits=T.bits,V){t.msg="invalid literal/lengths set",r.mode=c;break}if(r.distbits=6,r.distcode=r.distdyn,T={bits:r.distbits},V=a(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,T),r.distbits=T.bits,V){t.msg="invalid distances set",r.mode=c;break}if(r.mode=20,6===e)break t;case 20:r.mode=21;case 21:if(M>=6&&B>=258){t.next_out=g,t.avail_out=B,t.next_in=A,t.avail_in=M,r.hold=w,r.bits=E,s(t,b),g=t.next_out,f=t.output,B=t.avail_out,A=t.next_in,d=t.input,M=t.avail_in,w=r.hold,E=r.bits,r.mode===u&&(r.back=-1);break}for(r.back=0;N=(k=r.lencode[w&(1<>>16&255,v=65535&k,!((D=k>>>24)<=E);){if(0===M)break t;M--,w+=d[A++]<>G)])>>>16&255,v=65535&k,!(G+(D=k>>>24)<=E);){if(0===M)break t;M--,w+=d[A++]<>>=G,E-=G,r.back+=G}if(w>>>=D,E-=D,r.back+=D,r.length=v,0===N){r.mode=26;break}if(32&N){r.back=-1,r.mode=u;break}if(64&N){t.msg="invalid literal/length code",r.mode=c;break}r.extra=15&N,r.mode=22;case 22:if(r.extra){for(S=r.extra;E>>=r.extra,E-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;N=(k=r.distcode[w&(1<>>16&255,v=65535&k,!((D=k>>>24)<=E);){if(0===M)break t;M--,w+=d[A++]<>G)])>>>16&255,v=65535&k,!(G+(D=k>>>24)<=E);){if(0===M)break t;M--,w+=d[A++]<>>=G,E-=G,r.back+=G}if(w>>>=D,E-=D,r.back+=D,64&N){t.msg="invalid distance code",r.mode=c;break}r.offset=v,r.extra=15&N,r.mode=24;case 24:if(r.extra){for(S=r.extra;E>>=r.extra,E-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=c;break}r.mode=25;case 25:if(0===B)break t;if(Q=b-B,r.offset>Q){if((Q=r.offset-Q)>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=c;break}Q>r.wnext?(Q-=r.wnext,I=r.wsize-Q):I=r.wnext-Q,Q>r.length&&(Q=r.length),C=r.window}else C=f,I=g-r.offset,Q=r.length;Q>B&&(Q=B),B-=Q,r.length-=Q;do{f[g++]=C[I++]}while(--Q);0===r.length&&(r.mode=21);break;case 26:if(0===B)break t;f[g++]=r.length,B--,r.mode=21;break;case 27:if(r.wrap){for(;E<32;){if(0===M)break t;M--,w|=d[A++]<{"use strict";var i=r(6907),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],o=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],s=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],a=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(t,e,r,h,u,c,l,d){var f,A,g,M,B,w,E,p,m,y=d.bits,b=0,Q=0,I=0,C=0,D=0,N=0,v=0,G=0,R=0,Y=0,U=null,V=0,T=new i.Buf16(16),S=new i.Buf16(16),k=null,F=0;for(b=0;b<=15;b++)T[b]=0;for(Q=0;Q=1&&0===T[C];C--);if(D>C&&(D=C),0===C)return u[c++]=20971520,u[c++]=20971520,d.bits=1,0;for(I=1;I0&&(0===t||1!==C))return-1;for(S[1]=0,b=1;b<15;b++)S[b+1]=S[b]+T[b];for(Q=0;Q852||2===t&&R>592)return 1;for(;;){E=b-v,l[Q]w?(p=k[F+l[Q]],m=U[V+l[Q]]):(p=96,m=0),f=1<>v)+(A-=f)]=E<<24|p<<16|m|0}while(0!==A);for(f=1<>=1;if(0!==f?(Y&=f-1,Y+=f):Y=0,Q++,0==--T[b]){if(b===C)break;b=e[r+l[Q]]}if(b>D&&(Y&M)!==g){for(0===v&&(v=D),B+=I,G=1<<(N=b-v);N+v852||2===t&&R>592)return 1;u[g=Y&M]=D<<24|N<<16|B-c|0}}return 0!==Y&&(u[B+Y]=b-v<<24|64<<16|0),d.bits=D,0}},9364:t=>{"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},1339:(t,e,r)=>{"use strict";var i=r(6907);function n(t){for(var e=t.length;--e>=0;)t[e]=0}var o=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],s=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],h=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],u=new Array(576);n(u);var c=new Array(60);n(c);var l=new Array(512);n(l);var d=new Array(256);n(d);var f=new Array(29);n(f);var A,g,M,B=new Array(30);function w(t,e,r,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function E(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function p(t){return t<256?l[t]:l[256+(t>>>7)]}function m(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function y(t,e,r){t.bi_valid>16-r?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=r-16):(t.bi_buf|=e<>>=1,r<<=1}while(--e>0);return r>>>1}function I(t,e,r){var i,n,o=new Array(16),s=0;for(i=1;i<=15;i++)o[i]=s=s+r[i-1]<<1;for(n=0;n<=e;n++){var a=t[2*n+1];0!==a&&(t[2*n]=Q(o[a]++,a))}}function C(t){var e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function D(t){t.bi_valid>8?m(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function N(t,e,r,i){var n=2*e,o=2*r;return t[n]>1;r>=1;r--)v(t,o,r);n=h;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],v(t,o,1),i=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=i,o[2*n]=o[2*r]+o[2*i],t.depth[n]=(t.depth[r]>=t.depth[i]?t.depth[r]:t.depth[i])+1,o[2*r+1]=o[2*i+1]=n,t.heap[1]=n++,v(t,o,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var r,i,n,o,s,a,h=e.dyn_tree,u=e.max_code,c=e.stat_desc.static_tree,l=e.stat_desc.has_stree,d=e.stat_desc.extra_bits,f=e.stat_desc.extra_base,A=e.stat_desc.max_length,g=0;for(o=0;o<=15;o++)t.bl_count[o]=0;for(h[2*t.heap[t.heap_max]+1]=0,r=t.heap_max+1;r<573;r++)(o=h[2*h[2*(i=t.heap[r])+1]+1]+1)>A&&(o=A,g++),h[2*i+1]=o,i>u||(t.bl_count[o]++,s=0,i>=f&&(s=d[i-f]),a=h[2*i],t.opt_len+=a*(o+s),l&&(t.static_len+=a*(c[2*i+1]+s)));if(0!==g){do{for(o=A-1;0===t.bl_count[o];)o--;t.bl_count[o]--,t.bl_count[o+1]+=2,t.bl_count[A]--,g-=2}while(g>0);for(o=A;0!==o;o--)for(i=t.bl_count[o];0!==i;)(n=t.heap[--r])>u||(h[2*n+1]!==o&&(t.opt_len+=(o-h[2*n+1])*h[2*n],h[2*n+1]=o),i--)}}(t,e),I(o,u,t.bl_count)}function Y(t,e,r){var i,n,o=-1,s=e[1],a=0,h=7,u=4;for(0===s&&(h=138,u=3),e[2*(r+1)+1]=65535,i=0;i<=r;i++)n=s,s=e[2*(i+1)+1],++a>=7;i<30;i++)for(B[i]=n<<7,t=0;t<1<0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,r=4093624447;for(e=0;e<=31;e++,r>>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),R(t,t.l_desc),R(t,t.d_desc),s=function(t){var e;for(Y(t,t.dyn_ltree,t.l_desc.max_code),Y(t,t.dyn_dtree,t.d_desc.max_code),R(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),n=t.opt_len+3+7>>>3,(o=t.static_len+3+7>>>3)<=n&&(n=o)):n=o=r+5,r+4<=n&&-1!==e?T(t,e,r,i):4===t.strategy||o===n?(y(t,2+(i?1:0),3),G(t,u,c)):(y(t,4+(i?1:0),3),function(t,e,r,i){var n;for(y(t,e-257,5),y(t,r-1,5),y(t,i-4,4),n=0;n>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(d[r]+256+1)]++,t.dyn_dtree[2*p(e)]++),t.last_lit===t.lit_bufsize-1},e._tr_align=function(t){y(t,2,3),b(t,256,u),function(t){16===t.bi_valid?(m(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},4860:t=>{"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},7295:(t,e,r)=>{var i=r(8764).Buffer;t.exports=function(t,e){for(var r=Math.min(t.length,e.length),n=new i(r),o=0;o{"use strict";const i=r(9742),n=r(645),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=h,e.SlowBuffer=function(t){return+t!=t&&(t=0),h.alloc(+t)},e.INSPECT_MAX_BYTES=50;const s=2147483647;function a(t){if(t>s)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,h.prototype),e}function h(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return l(t)}return u(t,e,r)}function u(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!h.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|g(t,e);let i=a(r);const n=i.write(t,e);return n!==r&&(i=i.slice(0,n)),i}(t,e);if(ArrayBuffer.isView(t))return function(t){if(K(t,Uint8Array)){const e=new Uint8Array(t);return f(e.buffer,e.byteOffset,e.byteLength)}return d(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(K(t,ArrayBuffer)||t&&K(t.buffer,ArrayBuffer))return f(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(K(t,SharedArrayBuffer)||t&&K(t.buffer,SharedArrayBuffer)))return f(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const i=t.valueOf&&t.valueOf();if(null!=i&&i!==t)return h.from(i,e,r);const n=function(t){if(h.isBuffer(t)){const e=0|A(t.length),r=a(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||P(t.length)?a(0):d(t):"Buffer"===t.type&&Array.isArray(t.data)?d(t.data):void 0}(t);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return h.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function c(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function l(t){return c(t),a(t<0?0:0|A(t))}function d(t){const e=t.length<0?0:0|A(t.length),r=a(e);for(let i=0;i=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|t}function g(t,e){if(h.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||K(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;let n=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return W(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return J(t).length;default:if(n)return i?-1:W(t).length;e=(""+e).toLowerCase(),n=!0}}function M(t,e,r){let i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return G(this,e,r);case"utf8":case"utf-8":return C(this,e,r);case"ascii":return N(this,e,r);case"latin1":case"binary":return v(this,e,r);case"base64":return I(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function B(t,e,r){const i=t[e];t[e]=t[r],t[r]=i}function w(t,e,r,i,n){if(0===t.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),P(r=+r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof e&&(e=h.from(e,i)),h.isBuffer(e))return 0===e.length?-1:E(t,e,r,i,n);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):E(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function E(t,e,r,i,n){let o,s=1,a=t.length,h=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;s=2,a/=2,h/=2,r/=2}function u(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(n){let i=-1;for(o=r;oa&&(r=a-h),o=r;o>=0;o--){let r=!0;for(let i=0;in&&(i=n):i=n;const o=e.length;let s;for(i>o/2&&(i=o/2),s=0;s>8,n=r%256,o.push(n),o.push(i);return o}(e,t.length-r),t,r,i)}function I(t,e,r){return 0===e&&r===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,r))}function C(t,e,r){r=Math.min(t.length,r);const i=[];let n=e;for(;n239?4:e>223?3:e>191?2:1;if(n+s<=r){let r,i,a,h;switch(s){case 1:e<128&&(o=e);break;case 2:r=t[n+1],128==(192&r)&&(h=(31&e)<<6|63&r,h>127&&(o=h));break;case 3:r=t[n+1],i=t[n+2],128==(192&r)&&128==(192&i)&&(h=(15&e)<<12|(63&r)<<6|63&i,h>2047&&(h<55296||h>57343)&&(o=h));break;case 4:r=t[n+1],i=t[n+2],a=t[n+3],128==(192&r)&&128==(192&i)&&128==(192&a)&&(h=(15&e)<<18|(63&r)<<12|(63&i)<<6|63&a,h>65535&&h<1114112&&(o=h))}}null===o?(o=65533,s=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|1023&o),i.push(o),n+=s}return function(t){const e=t.length;if(e<=D)return String.fromCharCode.apply(String,t);let r="",i=0;for(;ii.length?(h.isBuffer(e)||(e=h.from(e)),e.copy(i,n)):Uint8Array.prototype.set.call(i,e,n);else{if(!h.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(i,n)}n+=e.length}return i},h.byteLength=g,h.prototype._isBuffer=!0,h.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},o&&(h.prototype[o]=h.prototype.inspect),h.prototype.compare=function(t,e,r,i,n){if(K(t,Uint8Array)&&(t=h.from(t,t.offset,t.byteLength)),!h.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),e<0||r>t.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&e>=r)return 0;if(i>=n)return-1;if(e>=r)return 1;if(this===t)return 0;let o=(n>>>=0)-(i>>>=0),s=(r>>>=0)-(e>>>=0);const a=Math.min(o,s),u=this.slice(i,n),c=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i="utf8")):(i=r,r=void 0)}const n=this.length-e;if((void 0===r||r>n)&&(r=n),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return p(this,t,e,r);case"utf8":case"utf-8":return m(this,t,e,r);case"ascii":case"latin1":case"binary":return y(this,t,e,r);case"base64":return b(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Q(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const D=4096;function N(t,e,r){let i="";r=Math.min(t.length,r);for(let n=e;ni)&&(r=i);let n="";for(let i=e;ir)throw new RangeError("Trying to access beyond buffer length")}function U(t,e,r,i,n,o){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}function V(t,e,r,i,n){H(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,r}function T(t,e,r,i,n){H(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=s,s>>=8,t[r+2]=s,s>>=8,t[r+1]=s,s>>=8,t[r]=s,r+8}function S(t,e,r,i,n,o){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(t,e,r,i,o){return e=+e,r>>>=0,o||S(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function F(t,e,r,i,o){return e=+e,r>>>=0,o||S(t,0,r,8),n.write(t,e,r,i,52,8),r+8}h.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||Y(t,e,this.length);let i=this[t],n=1,o=0;for(;++o>>=0,e>>>=0,r||Y(t,e,this.length);let i=this[t+--e],n=1;for(;e>0&&(n*=256);)i+=this[t+--e]*n;return i},h.prototype.readUint8=h.prototype.readUInt8=function(t,e){return t>>>=0,e||Y(t,1,this.length),this[t]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(t,e){return t>>>=0,e||Y(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(t,e){return t>>>=0,e||Y(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(t,e){return t>>>=0,e||Y(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(t,e){return t>>>=0,e||Y(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readBigUInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,n=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(i)+(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=e*2**24+65536*this[++t]+256*this[++t]+this[++t],n=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(i)<>>=0,e>>>=0,r||Y(t,e,this.length);let i=this[t],n=1,o=0;for(;++o=n&&(i-=Math.pow(2,8*e)),i},h.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||Y(t,e,this.length);let i=e,n=1,o=this[t+--i];for(;i>0&&(n*=256);)o+=this[t+--i]*n;return n*=128,o>=n&&(o-=Math.pow(2,8*e)),o},h.prototype.readInt8=function(t,e){return t>>>=0,e||Y(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){t>>>=0,e||Y(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt16BE=function(t,e){t>>>=0,e||Y(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt32LE=function(t,e){return t>>>=0,e||Y(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return t>>>=0,e||Y(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readBigInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(i)<>>=0,e||Y(t,4,this.length),n.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return t>>>=0,e||Y(t,4,this.length),n.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return t>>>=0,e||Y(t,8,this.length),n.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return t>>>=0,e||Y(t,8,this.length),n.read(this,t,!1,52,8)},h.prototype.writeUintLE=h.prototype.writeUIntLE=function(t,e,r,i){t=+t,e>>>=0,r>>>=0,i||U(this,t,e,r,Math.pow(2,8*r)-1,0);let n=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,i||U(this,t,e,r,Math.pow(2,8*r)-1,0);let n=r-1,o=1;for(this[e+n]=255&t;--n>=0&&(o*=256);)this[e+n]=t/o&255;return e+r},h.prototype.writeUint8=h.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,1,255,0),this[e]=255&t,e+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigUInt64LE=q((function(t,e=0){return V(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeBigUInt64BE=q((function(t,e=0){return T(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeIntLE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);U(this,t,e,r,i-1,-i)}let n=0,o=1,s=0;for(this[e]=255&t;++n>0)-s&255;return e+r},h.prototype.writeIntBE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);U(this,t,e,r,i-1,-i)}let n=r-1,o=1,s=0;for(this[e+n]=255&t;--n>=0&&(o*=256);)t<0&&0===s&&0!==this[e+n+1]&&(s=1),this[e+n]=(t/o>>0)-s&255;return e+r},h.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},h.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigInt64LE=q((function(t,e=0){return V(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeBigInt64BE=q((function(t,e=0){return T(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeFloatLE=function(t,e,r){return k(this,t,e,!0,r)},h.prototype.writeFloatBE=function(t,e,r){return k(this,t,e,!1,r)},h.prototype.writeDoubleLE=function(t,e,r){return F(this,t,e,!0,r)},h.prototype.writeDoubleBE=function(t,e,r){return F(this,t,e,!1,r)},h.prototype.copy=function(t,e,r,i){if(!h.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(n=e;n=i+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function H(t,e,r,i,n,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${i} and < 2${i} ** ${8*(o+1)}${i}`:`>= -(2${i} ** ${8*(o+1)-1}${i}) and < 2 ** ${8*(o+1)-1}${i}`:`>= ${e}${i} and <= ${r}${i}`,new L.ERR_OUT_OF_RANGE("value",n,t)}!function(t,e,r){z(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||x(e,t.length-(r+1))}(i,n,o)}function z(t,e){if("number"!=typeof t)throw new L.ERR_INVALID_ARG_TYPE(e,"number",t)}function x(t,e,r){if(Math.floor(t)!==t)throw z(t,r),new L.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new L.ERR_BUFFER_OUT_OF_BOUNDS;throw new L.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}j("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),j("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),j("ERR_OUT_OF_RANGE",(function(t,e,r){let i=`The value of "${t}" is out of range.`,n=r;return Number.isInteger(r)&&Math.abs(r)>2**32?n=Z(String(r)):"bigint"==typeof r&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=Z(n)),n+="n"),i+=` It must be ${e}. Received ${n}`,i}),RangeError);const O=/[^+/0-9A-Za-z-_]/g;function W(t,e){let r;e=e||1/0;const i=t.length;let n=null;const o=[];for(let s=0;s55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===i){(e-=3)>-1&&o.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(e-=3)>-1&&o.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function J(t){return i.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(O,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function X(t,e,r,i){let n;for(n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}function K(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function P(t){return t!=t}const _=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const i=16*r;for(let n=0;n<16;++n)e[i+n]=t[r]+t[n]}return e}();function q(t){return"undefined"==typeof BigInt?$:t}function $(){throw new Error("BigInt not supported")}},1924:(t,e,r)=>{"use strict";var i=r(210),n=r(5559),o=n(i("String.prototype.indexOf"));t.exports=function(t,e){var r=i(t,!!e);return"function"==typeof r&&o(t,".prototype.")>-1?n(r):r}},5559:(t,e,r)=>{"use strict";var i=r(8612),n=r(210),o=n("%Function.prototype.apply%"),s=n("%Function.prototype.call%"),a=n("%Reflect.apply%",!0)||i.call(s,o),h=n("%Object.getOwnPropertyDescriptor%",!0),u=n("%Object.defineProperty%",!0),c=n("%Math.max%");if(u)try{u({},"a",{value:1})}catch(t){u=null}t.exports=function(t){var e=a(i,s,arguments);if(h&&u){var r=h(e,"length");r.configurable&&u(e,"length",{value:1+c(0,t.length-(arguments.length-1))})}return e};var l=function(){return a(i,o,arguments)};u?u(t.exports,"apply",{value:l}):t.exports.apply=l},5581:function(t,e,r){var i,n;t.exports=(i=function(){try{return r(4431)}catch(t){}}(),n=r(9539),(()=>{var t={742:(t,e)=>{"use strict";e.byteLength=function(t){var e=h(t),r=e[0],i=e[1];return 3*(r+i)/4-i},e.toByteArray=function(t){var e,r,o=h(t),s=o[0],a=o[1],u=new n(function(t,e,r){return 3*(e+r)/4-r}(0,s,a)),c=0,l=a>0?s-4:s;for(r=0;r>16&255,u[c++]=e>>8&255,u[c++]=255&e;return 2===a&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,u[c++]=255&e),1===a&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,u[c++]=e>>8&255,u[c++]=255&e),u},e.fromByteArray=function(t){for(var e,i=t.length,n=i%3,o=[],s=16383,a=0,h=i-n;ah?h:a+s));return 1===n?(e=t[i-1],o.push(r[e>>2]+r[e<<4&63]+"==")):2===n&&(e=(t[i-2]<<8)+t[i-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),o.join("")};for(var r=[],i=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,a=o.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,i){for(var n,o,s=[],a=e;a>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},764:(t,e,r)=>{"use strict";const i=r(742),n=r(645),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=h,e.SlowBuffer=function(t){return+t!=t&&(t=0),h.alloc(+t)},e.INSPECT_MAX_BYTES=50;const s=2147483647;function a(t){if(t>s)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,h.prototype),e}function h(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return l(t)}return u(t,e,r)}function u(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!h.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|g(t,e);let i=a(r);const n=i.write(t,e);return n!==r&&(i=i.slice(0,n)),i}(t,e);if(ArrayBuffer.isView(t))return function(t){if(K(t,Uint8Array)){const e=new Uint8Array(t);return f(e.buffer,e.byteOffset,e.byteLength)}return d(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(K(t,ArrayBuffer)||t&&K(t.buffer,ArrayBuffer))return f(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(K(t,SharedArrayBuffer)||t&&K(t.buffer,SharedArrayBuffer)))return f(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const i=t.valueOf&&t.valueOf();if(null!=i&&i!==t)return h.from(i,e,r);const n=function(t){if(h.isBuffer(t)){const e=0|A(t.length),r=a(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||P(t.length)?a(0):d(t):"Buffer"===t.type&&Array.isArray(t.data)?d(t.data):void 0}(t);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return h.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function c(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function l(t){return c(t),a(t<0?0:0|A(t))}function d(t){const e=t.length<0?0:0|A(t.length),r=a(e);for(let i=0;i=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|t}function g(t,e){if(h.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||K(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;let n=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return W(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return J(t).length;default:if(n)return i?-1:W(t).length;e=(""+e).toLowerCase(),n=!0}}function M(t,e,r){let i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return G(this,e,r);case"utf8":case"utf-8":return C(this,e,r);case"ascii":return N(this,e,r);case"latin1":case"binary":return v(this,e,r);case"base64":return I(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function B(t,e,r){const i=t[e];t[e]=t[r],t[r]=i}function w(t,e,r,i,n){if(0===t.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),P(r=+r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof e&&(e=h.from(e,i)),h.isBuffer(e))return 0===e.length?-1:E(t,e,r,i,n);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):E(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function E(t,e,r,i,n){let o,s=1,a=t.length,h=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;s=2,a/=2,h/=2,r/=2}function u(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(n){let i=-1;for(o=r;oa&&(r=a-h),o=r;o>=0;o--){let r=!0;for(let i=0;in&&(i=n):i=n;const o=e.length;let s;for(i>o/2&&(i=o/2),s=0;s>8,n=r%256,o.push(n),o.push(i);return o}(e,t.length-r),t,r,i)}function I(t,e,r){return 0===e&&r===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,r))}function C(t,e,r){r=Math.min(t.length,r);const i=[];let n=e;for(;n239?4:e>223?3:e>191?2:1;if(n+s<=r){let r,i,a,h;switch(s){case 1:e<128&&(o=e);break;case 2:r=t[n+1],128==(192&r)&&(h=(31&e)<<6|63&r,h>127&&(o=h));break;case 3:r=t[n+1],i=t[n+2],128==(192&r)&&128==(192&i)&&(h=(15&e)<<12|(63&r)<<6|63&i,h>2047&&(h<55296||h>57343)&&(o=h));break;case 4:r=t[n+1],i=t[n+2],a=t[n+3],128==(192&r)&&128==(192&i)&&128==(192&a)&&(h=(15&e)<<18|(63&r)<<12|(63&i)<<6|63&a,h>65535&&h<1114112&&(o=h))}}null===o?(o=65533,s=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|1023&o),i.push(o),n+=s}return function(t){const e=t.length;if(e<=D)return String.fromCharCode.apply(String,t);let r="",i=0;for(;ii.length?(h.isBuffer(e)||(e=h.from(e)),e.copy(i,n)):Uint8Array.prototype.set.call(i,e,n);else{if(!h.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(i,n)}n+=e.length}return i},h.byteLength=g,h.prototype._isBuffer=!0,h.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},o&&(h.prototype[o]=h.prototype.inspect),h.prototype.compare=function(t,e,r,i,n){if(K(t,Uint8Array)&&(t=h.from(t,t.offset,t.byteLength)),!h.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),e<0||r>t.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&e>=r)return 0;if(i>=n)return-1;if(e>=r)return 1;if(this===t)return 0;let o=(n>>>=0)-(i>>>=0),s=(r>>>=0)-(e>>>=0);const a=Math.min(o,s),u=this.slice(i,n),c=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i="utf8")):(i=r,r=void 0)}const n=this.length-e;if((void 0===r||r>n)&&(r=n),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return p(this,t,e,r);case"utf8":case"utf-8":return m(this,t,e,r);case"ascii":case"latin1":case"binary":return y(this,t,e,r);case"base64":return b(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Q(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const D=4096;function N(t,e,r){let i="";r=Math.min(t.length,r);for(let n=e;ni)&&(r=i);let n="";for(let i=e;ir)throw new RangeError("Trying to access beyond buffer length")}function U(t,e,r,i,n,o){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}function V(t,e,r,i,n){H(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,r}function T(t,e,r,i,n){H(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=s,s>>=8,t[r+2]=s,s>>=8,t[r+1]=s,s>>=8,t[r]=s,r+8}function S(t,e,r,i,n,o){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(t,e,r,i,o){return e=+e,r>>>=0,o||S(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function F(t,e,r,i,o){return e=+e,r>>>=0,o||S(t,0,r,8),n.write(t,e,r,i,52,8),r+8}h.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||Y(t,e,this.length);let i=this[t],n=1,o=0;for(;++o>>=0,e>>>=0,r||Y(t,e,this.length);let i=this[t+--e],n=1;for(;e>0&&(n*=256);)i+=this[t+--e]*n;return i},h.prototype.readUint8=h.prototype.readUInt8=function(t,e){return t>>>=0,e||Y(t,1,this.length),this[t]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(t,e){return t>>>=0,e||Y(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(t,e){return t>>>=0,e||Y(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(t,e){return t>>>=0,e||Y(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(t,e){return t>>>=0,e||Y(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readBigUInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,n=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(i)+(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=e*2**24+65536*this[++t]+256*this[++t]+this[++t],n=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(i)<>>=0,e>>>=0,r||Y(t,e,this.length);let i=this[t],n=1,o=0;for(;++o=n&&(i-=Math.pow(2,8*e)),i},h.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||Y(t,e,this.length);let i=e,n=1,o=this[t+--i];for(;i>0&&(n*=256);)o+=this[t+--i]*n;return n*=128,o>=n&&(o-=Math.pow(2,8*e)),o},h.prototype.readInt8=function(t,e){return t>>>=0,e||Y(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){t>>>=0,e||Y(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt16BE=function(t,e){t>>>=0,e||Y(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt32LE=function(t,e){return t>>>=0,e||Y(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return t>>>=0,e||Y(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readBigInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(i)<>>=0,e||Y(t,4,this.length),n.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return t>>>=0,e||Y(t,4,this.length),n.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return t>>>=0,e||Y(t,8,this.length),n.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return t>>>=0,e||Y(t,8,this.length),n.read(this,t,!1,52,8)},h.prototype.writeUintLE=h.prototype.writeUIntLE=function(t,e,r,i){t=+t,e>>>=0,r>>>=0,i||U(this,t,e,r,Math.pow(2,8*r)-1,0);let n=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,i||U(this,t,e,r,Math.pow(2,8*r)-1,0);let n=r-1,o=1;for(this[e+n]=255&t;--n>=0&&(o*=256);)this[e+n]=t/o&255;return e+r},h.prototype.writeUint8=h.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,1,255,0),this[e]=255&t,e+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigUInt64LE=q((function(t,e=0){return V(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeBigUInt64BE=q((function(t,e=0){return T(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeIntLE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);U(this,t,e,r,i-1,-i)}let n=0,o=1,s=0;for(this[e]=255&t;++n>0)-s&255;return e+r},h.prototype.writeIntBE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);U(this,t,e,r,i-1,-i)}let n=r-1,o=1,s=0;for(this[e+n]=255&t;--n>=0&&(o*=256);)t<0&&0===s&&0!==this[e+n+1]&&(s=1),this[e+n]=(t/o>>0)-s&255;return e+r},h.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},h.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigInt64LE=q((function(t,e=0){return V(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeBigInt64BE=q((function(t,e=0){return T(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeFloatLE=function(t,e,r){return k(this,t,e,!0,r)},h.prototype.writeFloatBE=function(t,e,r){return k(this,t,e,!1,r)},h.prototype.writeDoubleLE=function(t,e,r){return F(this,t,e,!0,r)},h.prototype.writeDoubleBE=function(t,e,r){return F(this,t,e,!1,r)},h.prototype.copy=function(t,e,r,i){if(!h.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(n=e;n=i+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function H(t,e,r,i,n,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${i} and < 2${i} ** ${8*(o+1)}${i}`:`>= -(2${i} ** ${8*(o+1)-1}${i}) and < 2 ** ${8*(o+1)-1}${i}`:`>= ${e}${i} and <= ${r}${i}`,new L.ERR_OUT_OF_RANGE("value",n,t)}!function(t,e,r){z(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||x(e,t.length-(r+1))}(i,n,o)}function z(t,e){if("number"!=typeof t)throw new L.ERR_INVALID_ARG_TYPE(e,"number",t)}function x(t,e,r){if(Math.floor(t)!==t)throw z(t,r),new L.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new L.ERR_BUFFER_OUT_OF_BOUNDS;throw new L.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}j("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),j("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),j("ERR_OUT_OF_RANGE",(function(t,e,r){let i=`The value of "${t}" is out of range.`,n=r;return Number.isInteger(r)&&Math.abs(r)>2**32?n=Z(String(r)):"bigint"==typeof r&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=Z(n)),n+="n"),i+=` It must be ${e}. Received ${n}`,i}),RangeError);const O=/[^+/0-9A-Za-z-_]/g;function W(t,e){let r;e=e||1/0;const i=t.length;let n=null;const o=[];for(let s=0;s55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===i){(e-=3)>-1&&o.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(e-=3)>-1&&o.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function J(t){return i.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(O,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function X(t,e,r,i){let n;for(n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}function K(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function P(t){return t!=t}const _=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const i=16*r;for(let n=0;n<16;++n)e[i+n]=t[r]+t[n]}return e}();function q(t){return"undefined"==typeof BigInt?$:t}function $(){throw new Error("BigInt not supported")}},141:(t,e,r)=>{"use strict";e.BigNumber=r(66).BigNumber,e.Commented=r(20),e.Diagnose=r(694),e.Decoder=r(774),e.Encoder=r(666),e.Simple=r(32),e.Tagged=r(785),e.Map=r(70),e.UI=e.Commented.comment,e.fI=e.Decoder.decodeAll,e.h8=e.Decoder.decodeFirst,e.cc=e.Decoder.decodeAllSync,e.$u=e.Decoder.decodeFirstSync,e.M=e.Diagnose.diagnose,e.cv=e.Encoder.encode,e.N2=e.Encoder.encodeCanonical,e.TG=e.Encoder.encodeOne,e.WR=e.Encoder.encodeAsync,e.Jx=e.Decoder.decodeFirstSync,e.ww={decode:e.Decoder.decodeFirstSync,encode:e.Encoder.encode,buffer:!0,name:"cbor"},e.vc=!0},20:(t,e,r)=>{"use strict";const i=r(830),n=r(873),o=r(774),s=r(202),{MT:a,NUMBYTES:h,SYMS:u}=r(66),{Buffer:c}=r(764);function l(t){return t>1?"s":""}class d extends i.Transform{constructor(t={}){const{depth:e=1,max_depth:r=10,no_summary:i=!1,tags:n={},bigint:a,preferWeb:h,encoding:u,...c}=t;super({...c,readableObjectMode:!1,writableObjectMode:!1}),this.depth=e,this.max_depth=r,this.all=new s,n[24]||(n[24]=this._tag_24.bind(this)),this.parser=new o({tags:n,max_depth:r,bigint:a,preferWeb:h,encoding:u}),this.parser.on("value",this._on_value.bind(this)),this.parser.on("start",this._on_start.bind(this)),this.parser.on("start-string",this._on_start_string.bind(this)),this.parser.on("stop",this._on_stop.bind(this)),this.parser.on("more-bytes",this._on_more.bind(this)),this.parser.on("error",this._on_error.bind(this)),i||this.parser.on("data",this._on_data.bind(this)),this.parser.bs.on("read",this._on_read.bind(this))}_tag_24(t){const e=new d({depth:this.depth+1,no_summary:!0});e.on("data",(t=>this.push(t))),e.on("error",(t=>this.emit("error",t))),e.end(t)}_transform(t,e,r){this.parser.write(t,e,r)}_flush(t){return this.parser._flush(t)}static comment(t,e={},r=null){if(null==t)throw new Error("input required");({options:e,cb:r}=function(t,e){switch(typeof t){case"function":return{options:{},cb:t};case"string":return{options:{encoding:t},cb:e};case"number":return{options:{max_depth:t},cb:e};case"object":return{options:t||{},cb:e};default:throw new TypeError("Unknown option type")}}(e,r));const i=new s,{encoding:o="hex",...a}=e,h=new d(a);let u=null;return"function"==typeof r?(h.on("end",(()=>{r(null,i.toString("utf8"))})),h.on("error",r)):u=new Promise(((t,e)=>{h.on("end",(()=>{t(i.toString("utf8"))})),h.on("error",e)})),h.pipe(i),n.guessEncoding(t,o).pipe(h),u}_on_error(t){this.push("ERROR: "),this.push(t.toString()),this.push("\n")}_on_read(t){this.all.write(t);const e=t.toString("hex");this.push(new Array(this.depth+1).join(" ")),this.push(e);let r=2*(this.max_depth-this.depth)-e.length;return r<1&&(r=1),this.push(new Array(r+1).join(" ")),this.push("-- ")}_on_more(t,e,r,i){let n="";switch(this.depth++,t){case a.POS_INT:n="Positive number,";break;case a.NEG_INT:n="Negative number,";break;case a.ARRAY:n="Array, length";break;case a.MAP:n="Map, count";break;case a.BYTE_STRING:n="Bytes, length";break;case a.UTF8_STRING:n="String, length";break;case a.SIMPLE_FLOAT:n=1===e?"Simple value,":"Float,"}return this.push(n+" next "+e+" byte"+l(e)+"\n")}_on_start_string(t,e,r,i){let n="";switch(this.depth++,t){case a.BYTE_STRING:n="Bytes, length: "+e;break;case a.UTF8_STRING:n="String, length: "+e.toString()}return this.push(n+"\n")}_on_start(t,e,r,i){switch(this.depth++,r){case a.ARRAY:this.push(`[${i}], `);break;case a.MAP:i%2?this.push(`{Val:${Math.floor(i/2)}}, `):this.push(`{Key:${Math.floor(i/2)}}, `)}switch(t){case a.TAG:this.push(`Tag #${e}`),24===e&&this.push(" Encoded CBOR data item");break;case a.ARRAY:e===u.STREAM?this.push("Array (streaming)"):this.push(`Array, ${e} item${l(e)}`);break;case a.MAP:e===u.STREAM?this.push("Map (streaming)"):this.push(`Map, ${e} pair${l(e)}`);break;case a.BYTE_STRING:this.push("Bytes (streaming)");break;case a.UTF8_STRING:this.push("String (streaming)")}return this.push("\n")}_on_stop(t){return this.depth--}_on_value(t,e,r,i){if(t!==u.BREAK)switch(e){case a.ARRAY:this.push(`[${r}], `);break;case a.MAP:r%2?this.push(`{Val:${Math.floor(r/2)}}, `):this.push(`{Key:${Math.floor(r/2)}}, `)}const o=n.cborValueToString(t,-1/0);switch("string"==typeof t||c.isBuffer(t)?(t.length>0&&(this.push(o),this.push("\n")),this.depth--):(this.push(o),this.push("\n")),i){case h.ONE:case h.TWO:case h.FOUR:case h.EIGHT:this.depth--}}_on_data(){return this.push("0x"),this.push(this.all.read().toString("hex")),this.push("\n")}}t.exports=d},66:(t,e,r)=>{"use strict";let i=null;try{i=r(937).BigNumber}catch(t){}if(e.BigNumber=i,e.MT={POS_INT:0,NEG_INT:1,BYTE_STRING:2,UTF8_STRING:3,ARRAY:4,MAP:5,TAG:6,SIMPLE_FLOAT:7},e.TAG={DATE_STRING:0,DATE_EPOCH:1,POS_BIGINT:2,NEG_BIGINT:3,DECIMAL_FRAC:4,BIGFLOAT:5,BASE64URL_EXPECTED:21,BASE64_EXPECTED:22,BASE16_EXPECTED:23,CBOR:24,URI:32,BASE64URL:33,BASE64:34,REGEXP:35,MIME:36,SET:258},e.NUMBYTES={ZERO:0,ONE:24,TWO:25,FOUR:26,EIGHT:27,INDEFINITE:31},e.SIMPLE={FALSE:20,TRUE:21,NULL:22,UNDEFINED:23},e.SYMS={NULL:Symbol.for("github.com/hildjj/node-cbor/null"),UNDEFINED:Symbol.for("github.com/hildjj/node-cbor/undef"),PARENT:Symbol.for("github.com/hildjj/node-cbor/parent"),BREAK:Symbol.for("github.com/hildjj/node-cbor/break"),STREAM:Symbol.for("github.com/hildjj/node-cbor/stream")},e.SHIFT32=4294967296,e.BI={MINUS_ONE:BigInt(-1),NEG_MAX:BigInt(-1)-BigInt(Number.MAX_SAFE_INTEGER),MAXINT32:BigInt("0xffffffff"),MAXINT64:BigInt("0xffffffffffffffff"),SHIFT32:BigInt(e.SHIFT32)},e.BigNumber){const t=new e.BigNumber(-1);e.BN={MINUS_ONE:t,NEG_MAX:t.minus(new e.BigNumber(Number.MAX_SAFE_INTEGER.toString(16),16)),TWO:new e.BigNumber(2),MAXINT:new e.BigNumber("0x20000000000000"),MAXINT32:new e.BigNumber(4294967295),MAXINT64:new e.BigNumber("0xffffffffffffffff"),SHIFT32:new e.BigNumber(e.SHIFT32)}}},774:(t,e,r)=>{"use strict";const i=r(71),n=r(785),o=r(32),s=r(873),a=r(202),h=r(66),{MT:u,NUMBYTES:c,SYMS:l,BI:d}=h,{Buffer:f}=r(764),A=Symbol("count"),g=Symbol("major type"),M=Symbol("error"),B=Symbol("not found");function w(t,e,r){const i=[];return i[A]=r,i[l.PARENT]=t,i[g]=e,i}function E(t,e){const r=new a;return r[A]=-1,r[l.PARENT]=t,r[g]=e,r}function p(t){return s.bufferToBigInt(t)}function m(t){return d.MINUS_ONE-s.bufferToBigInt(t)}class y extends Error{constructor(t,e){super(`Unexpected data: 0x${t.toString(16)}`),this.name="UnexpectedDataError",this.byte=t,this.value=e}}function b(t,e){switch(typeof t){case"function":return{options:{},cb:t};case"string":return{options:{encoding:t},cb:e};case"object":return{options:t||{},cb:e};default:throw new TypeError("Unknown option type")}}class Q extends i{constructor(t={}){const{tags:e={},max_depth:r=-1,bigint:i=!0,preferWeb:n=!1,required:o=!1,encoding:s="hex",extendedResults:h=!1,...u}=t;super({defaultEncoding:s,...u}),this.running=!0,this.max_depth=r,this.tags=e,this.preferWeb=n,this.extendedResults=h,this.bigint=i,this.required=o,h&&(this.bs.on("read",this._onRead.bind(this)),this.valueBytes=new a),i&&(null==this.tags[2]&&(this.tags[2]=p),null==this.tags[3]&&(this.tags[3]=m))}static nullcheck(t){switch(t){case l.NULL:return null;case l.UNDEFINED:return;case B:throw new Error("Value not found");default:return t}}static decodeFirstSync(t,e={}){if(null==t)throw new TypeError("input required");({options:e}=b(e));const{encoding:r="hex",...i}=e,n=new Q(i),o=s.guessEncoding(t,r),a=n._parse();let h=a.next();for(;!h.done;){const t=o.read(h.value);if(null==t||t.length!==h.value)throw new Error("Insufficient data");n.extendedResults&&n.valueBytes.write(t),h=a.next(t)}let u=null;if(n.extendedResults)u=h.value,u.unused=o.read();else if(u=Q.nullcheck(h.value),o.length>0){const t=o.read(1);throw o.unshift(t),new y(t[0],u)}return u}static decodeAllSync(t,e={}){if(null==t)throw new TypeError("input required");({options:e}=b(e));const{encoding:r="hex",...i}=e,n=new Q(i),o=s.guessEncoding(t,r),a=[];for(;o.length>0;){const t=n._parse();let e=t.next();for(;!e.done;){const r=o.read(e.value);if(null==r||r.length!==e.value)throw new Error("Insufficient data");n.extendedResults&&n.valueBytes.write(r),e=t.next(r)}a.push(Q.nullcheck(e.value))}return a}static decodeFirst(t,e={},r=null){if(null==t)throw new TypeError("input required");({options:e,cb:r}=b(e,r));const{encoding:i="hex",required:n=!1,...o}=e,a=new Q(o);let h=B;const u=s.guessEncoding(t,i),c=new Promise(((t,e)=>{a.on("data",(t=>{h=Q.nullcheck(t),a.close()})),a.once("error",(r=>a.extendedResults&&r instanceof y?(h.unused=a.bs.slice(),t(h)):(h!==B&&(r.value=h),h=M,a.close(),e(r)))),a.once("end",(()=>{switch(h){case B:return n?e(new Error("No CBOR found")):t(h);case M:return;default:return t(h)}}))}));return"function"==typeof r&&c.then((t=>r(null,t)),r),u.pipe(a),c}static decodeAll(t,e={},r=null){if(null==t)throw new TypeError("input required");({options:e,cb:r}=b(e,r));const{encoding:i="hex",...n}=e,o=new Q(n),a=[];o.on("data",(t=>a.push(Q.nullcheck(t))));const h=new Promise(((t,e)=>{o.on("error",e),o.on("end",(()=>t(a)))}));return"function"==typeof r&&h.then((t=>r(void 0,t)),(t=>r(t,void 0))),s.guessEncoding(t,i).pipe(o),h}close(){this.running=!1,this.__fresh=!0}_onRead(t){this.valueBytes.write(t)}*_parse(){let t=null,e=0,r=null;for(;;){if(this.max_depth>=0&&e>this.max_depth)throw new Error("Maximum depth "+this.max_depth+" exceeded");const[i]=yield 1;if(!this.running)throw this.bs.unshift(f.from([i])),new y(i);const M=i>>5,B=31&i,p=null!=t?t[g]:void 0,m=null!=t?t.length:void 0;switch(B){case c.ONE:this.emit("more-bytes",M,1,p,m),[r]=yield 1;break;case c.TWO:case c.FOUR:case c.EIGHT:{const t=1<{"use strict";const i=r(830),n=r(774),o=r(873),s=r(202),{MT:a,SYMS:h}=r(66);class u extends i.Transform{constructor(t={}){const{separator:e="\n",stream_errors:r=!1,tags:i,max_depth:o,bigint:s,preferWeb:a,encoding:h,...u}=t;super({...u,readableObjectMode:!1,writableObjectMode:!1}),this.float_bytes=-1,this.separator=e,this.stream_errors=r,this.parser=new n({tags:i,max_depth:o,bigint:s,preferWeb:a,encoding:h}),this.parser.on("more-bytes",this._on_more.bind(this)),this.parser.on("value",this._on_value.bind(this)),this.parser.on("start",this._on_start.bind(this)),this.parser.on("stop",this._on_stop.bind(this)),this.parser.on("data",this._on_data.bind(this)),this.parser.on("error",this._on_error.bind(this))}_transform(t,e,r){return this.parser.write(t,e,r)}_flush(t){return this.parser._flush((e=>this.stream_errors?(e&&this._on_error(e),t()):t(e)))}static diagnose(t,e={},r=null){if(null==t)throw new Error("input required");({options:e,cb:r}=function(t,e){switch(typeof t){case"function":return{options:{},cb:t};case"string":return{options:{encoding:t},cb:e};case"object":return{options:t||{},cb:e};default:throw new TypeError("Unknown option type")}}(e,r));const{encoding:i="hex",...n}=e,a=new s,h=new u(n);let c=null;return"function"==typeof r?(h.on("end",(()=>r(null,a.toString("utf8")))),h.on("error",r)):c=new Promise(((t,e)=>{h.on("end",(()=>t(a.toString("utf8")))),h.on("error",e)})),h.pipe(a),o.guessEncoding(t,i).pipe(h),c}_on_error(t){return this.stream_errors?this.push(t.toString()):this.emit("error",t)}_on_more(t,e,r,i){t===a.SIMPLE_FLOAT&&(this.float_bytes={2:1,4:2,8:3}[e])}_fore(t,e){switch(t){case a.BYTE_STRING:case a.UTF8_STRING:case a.ARRAY:e>0&&this.push(", ");break;case a.MAP:e>0&&(e%2?this.push(": "):this.push(", "))}}_on_value(t,e,r){if(t===h.BREAK)return;this._fore(e,r);const i=this.float_bytes;this.float_bytes=-1,this.push(o.cborValueToString(t,i))}_on_start(t,e,r,i){switch(this._fore(r,i),t){case a.TAG:this.push(`${e}(`);break;case a.ARRAY:this.push("[");break;case a.MAP:this.push("{");break;case a.BYTE_STRING:case a.UTF8_STRING:this.push("(")}e===h.STREAM&&this.push("_ ")}_on_stop(t){switch(t){case a.TAG:this.push(")");break;case a.ARRAY:this.push("]");break;case a.MAP:this.push("}");break;case a.BYTE_STRING:case a.UTF8_STRING:this.push(")")}}_on_data(){this.push(this.separator)}}t.exports=u},666:(t,e,r)=>{"use strict";const i=r(830),n=r(202),o=r(873),s=r(66),{MT:a,NUMBYTES:h,SHIFT32:u,SIMPLE:c,SYMS:l,TAG:d,BI:f}=s,{Buffer:A}=r(764),g=a.SIMPLE_FLOAT<<5|h.TWO,M=a.SIMPLE_FLOAT<<5|h.FOUR,B=a.SIMPLE_FLOAT<<5|h.EIGHT,w=a.SIMPLE_FLOAT<<5|c.TRUE,E=a.SIMPLE_FLOAT<<5|c.FALSE,p=a.SIMPLE_FLOAT<<5|c.UNDEFINED,m=a.SIMPLE_FLOAT<<5|c.NULL,y=A.from([255]),b=A.from("f97e00","hex"),Q=A.from("f9fc00","hex"),I=A.from("f97c00","hex"),C=A.from("f98000","hex");class D extends i.Transform{constructor(t={}){const{canonical:e=!1,encodeUndefined:r,disallowUndefinedKeys:i=!1,dateType:o="number",collapseBigIntegers:a=!1,detectLoops:h=!1,omitUndefinedProperties:u=!1,genTypes:c=[],...l}=t;if(super({...l,readableObjectMode:!1,writableObjectMode:!0}),this.canonical=e,this.encodeUndefined=r,this.disallowUndefinedKeys=i,this.dateType=function(t){if(!t)return"number";switch(t.toLowerCase()){case"number":return"number";case"float":return"float";case"int":return"int";case"string":return"string"}throw new TypeError(`dateType invalid, got "${t}"`)}(o),this.collapseBigIntegers=!!this.canonical||a,this.detectLoops=h,"boolean"==typeof h)h&&(this.detectLoops=new WeakSet);else if(!(h instanceof WeakSet))throw new TypeError("detectLoops must be boolean or WeakSet");if(this.omitUndefinedProperties=u,this.semanticTypes={Array:this._pushArray,Date:this._pushDate,Buffer:this._pushBuffer,[A.name]:this._pushBuffer,Map:this._pushMap,NoFilter:this._pushNoFilter,[n.name]:this._pushNoFilter,RegExp:this._pushRegexp,Set:this._pushSet,ArrayBuffer:this._pushArrayBuffer,Uint8ClampedArray:this._pushTypedArray,Uint8Array:this._pushTypedArray,Uint16Array:this._pushTypedArray,Uint32Array:this._pushTypedArray,Int8Array:this._pushTypedArray,Int16Array:this._pushTypedArray,Int32Array:this._pushTypedArray,Float32Array:this._pushTypedArray,Float64Array:this._pushTypedArray,URL:this._pushURL,Boolean:this._pushBoxed,Number:this._pushBoxed,String:this._pushBoxed},s.BigNumber&&(this.semanticTypes[s.BigNumber.name]=this._pushBigNumber),"undefined"!=typeof BigUint64Array&&(this.semanticTypes[BigUint64Array.name]=this._pushTypedArray),"undefined"!=typeof BigInt64Array&&(this.semanticTypes[BigInt64Array.name]=this._pushTypedArray),Array.isArray(c))for(let t=0,e=c.length;tvoid 0!==e))),r.indefinite){if(!t._pushUInt8(a.MAP<<5|h.INDEFINITE))return!1}else if(!t._pushInt(i.length,a.MAP))return!1;if(t.canonical){const e=new D({genTypes:t.semanticTypes,canonical:t.canonical,detectLoops:!!t.detectLoops,dateType:t.dateType,disallowUndefinedKeys:t.disallowUndefinedKeys,collapseBigIntegers:t.collapseBigIntegers}),r=new n({highWaterMark:t.readableHighWaterMark});e.pipe(r),i.sort((([t],[i])=>{e.pushAny(t);const n=r.read();e.pushAny(i);const o=r.read();return n.compare(o)}));for(const[e,r]of i){if(t.disallowUndefinedKeys&&void 0===e)throw new Error("Invalid Map key: undefined");if(!t.pushAny(e)||!t.pushAny(r))return!1}}else for(const[e,r]of i){if(t.disallowUndefinedKeys&&void 0===e)throw new Error("Invalid Map key: undefined");if(!t.pushAny(e)||!t.pushAny(r))return!1}return!(r.indefinite&&!t.push(y))}_pushTypedArray(t,e){let r=64,i=e.BYTES_PER_ELEMENT;const{name:n}=e.constructor;return n.startsWith("Float")?(r|=16,i/=2):n.includes("U")||(r|=8),(n.includes("Clamped")||1!==i&&!o.isBigEndian())&&(r|=4),r|={1:0,2:1,4:2,8:3}[i],!!t._pushTag(r)&&t._pushBuffer(t,A.from(e.buffer,e.byteOffset,e.byteLength))}_pushArrayBuffer(t,e){return t._pushBuffer(t,A.from(e))}removeLoopDetectors(){return!!this.detectLoops&&(this.detectLoops=new WeakSet,!0)}_pushObject(t,e){if(!t)return this._pushNull(t);if(!(e={indefinite:!1,skipTypes:!1,...e}).indefinite&&this.detectLoops){if(this.detectLoops.has(t))throw new Error("Loop detected while CBOR encoding.\nCall removeLoopDetectors before resuming.");this.detectLoops.add(t)}if(!e.skipTypes){const e=t.encodeCBOR;if("function"==typeof e)return e.call(t,this);const r=this.semanticTypes[t.constructor.name];if(r)return r.call(t,this,t)}const r=Object.keys(t).filter((e=>{const r=typeof t[e];return"function"!==r&&(!this.omitUndefinedProperties||"undefined"!==r)})),i={};if(this.canonical&&r.sort(((t,e)=>{const r=i[t]||(i[t]=D.encode(t)),n=i[e]||(i[e]=D.encode(e));return r.compare(n)})),e.indefinite){if(!this._pushUInt8(a.MAP<<5|h.INDEFINITE))return!1}else if(!this._pushInt(r.length,a.MAP))return!1;let n=null;for(let e=0,o=r.length;e{const n=[],o=new D(e);o.on("data",(t=>n.push(t))),o.on("error",i),o.on("finish",(()=>r(A.concat(n)))),o.pushAny(t),o.end()}))}}t.exports=D},70:(t,e,r)=>{"use strict";const{Buffer:i}=r(764),n=r(666),o=r(774),{MT:s}=r(66);class a extends Map{constructor(t){super(t)}static _encode(t){return n.encodeCanonical(t).toString("base64")}static _decode(t){return o.decodeFirstSync(t,"base64")}get(t){return super.get(a._encode(t))}set(t,e){return super.set(a._encode(t),e)}delete(t){return super.delete(a._encode(t))}has(t){return super.has(a._encode(t))}*keys(){for(const t of super.keys())yield a._decode(t)}*entries(){for(const t of super.entries())yield[a._decode(t[0]),t[1]]}[Symbol.iterator](){return this.entries()}forEach(t,e){if("function"!=typeof t)throw new TypeError("Must be function");for(const e of super.entries())t.call(this,e[1],a._decode(e[0]),this)}encodeCBOR(t){if(!t._pushInt(this.size,s.MAP))return!1;if(t.canonical){const e=Array.from(super.entries()).map((t=>[i.from(t[0],"base64"),t[1]]));e.sort(((t,e)=>t[0].compare(e[0])));for(const r of e)if(!t.push(r[0])||!t.pushAny(r[1]))return!1}else for(const e of super.entries())if(!t.push(i.from(e[0],"base64"))||!t.pushAny(e[1]))return!1;return!0}}t.exports=a},32:(t,e,r)=>{"use strict";const{MT:i,SIMPLE:n,SYMS:o}=r(66);class s{constructor(t){if("number"!=typeof t)throw new Error("Invalid Simple type: "+typeof t);if(t<0||t>255||(0|t)!==t)throw new Error("value must be a small positive integer: "+t);this.value=t}toString(){return"simple("+this.value+")"}inspect(t,e){return"simple("+this.value+")"}encodeCBOR(t){return t._pushInt(this.value,i.SIMPLE_FLOAT)}static isSimple(t){return t instanceof s}static decode(t,e=!0,r=!1){switch(t){case n.FALSE:return!1;case n.TRUE:return!0;case n.NULL:return e?null:o.NULL;case n.UNDEFINED:if(e)return;return o.UNDEFINED;case-1:if(!e||!r)throw new Error("Invalid BREAK");return o.BREAK;default:return new s(t)}}}t.exports=s},785:(t,e,r)=>{"use strict";const i=r(66),n=r(873);function o(t,e){if(n.isBufferish(t))t.toJSON=e;else if(Array.isArray(t))for(const r of t)o(r,e);else if(t&&"object"==typeof t&&(!(t instanceof h)||t.tag<21||t.tag>23))for(const r of Object.values(t))o(r,e)}const s={64:Uint8Array,65:Uint16Array,66:Uint32Array,68:Uint8ClampedArray,69:Uint16Array,70:Uint32Array,72:Int8Array,73:Int16Array,74:Int32Array,77:Int16Array,78:Int32Array,81:Float32Array,82:Float64Array,85:Float32Array,86:Float64Array};"undefined"!=typeof BigUint64Array&&(s[67]=BigUint64Array,s[71]=BigUint64Array),"undefined"!=typeof BigInt64Array&&(s[75]=BigInt64Array,s[79]=BigInt64Array);const a=Symbol("INTERNAL_JSON");class h{constructor(t,e,r){if(this.tag=t,this.value=e,this.err=r,"number"!=typeof this.tag)throw new Error("Invalid tag type ("+typeof this.tag+")");if(this.tag<0||(0|this.tag)!==this.tag)throw new Error("Tag must be a positive integer: "+this.tag)}toJSON(){if(this[a])return this[a]();const t={tag:this.tag,value:this.value};return this.err&&(t.err=this.err),t}toString(){return`${this.tag}(${JSON.stringify(this.value)})`}encodeCBOR(t){return t._pushTag(this.tag),t.pushAny(this.value)}convert(t){let e=null!=t?t[this.tag]:void 0;if("function"!=typeof e&&(e=h["_tag_"+this.tag],"function"!=typeof e)){if(e=s[this.tag],"function"!=typeof e)return this;e=this._toTypedArray}try{return e.call(this,this.value)}catch(t){return t&&t.message&&t.message.length>0?this.err=t.message:this.err=t,this}}_toTypedArray(t){const{tag:e}=this,r=s[e];if(!r)throw new Error(`Invalid typed array tag: ${e}`);const i=2**(((16&e)>>4)+(3&e));return!(4&e)!==n.isBigEndian()&&i>1&&function(t,e,r,i){const n=new DataView(t),[o,s]={2:[n.getUint16,n.setUint16],4:[n.getUint32,n.setUint32],8:[n.getBigUint64,n.setBigUint64]}[e],a=r+i;for(let t=r;tn.base64url(t):o(t,(function(){return n.base64url(this)})),this}static _tag_22(t){return n.isBufferish(t)?this[a]=()=>n.base64(t):o(t,(function(){return n.base64(this)})),this}static _tag_23(t){return n.isBufferish(t)?this[a]=()=>t.toString("hex"):o(t,(function(){return this.toString("hex")})),this}static _tag_32(t){return new URL(t)}static _tag_33(t){if(!t.match(/^[a-zA-Z0-9_-]+$/))throw new Error("Invalid base64url characters");const e=t.length%4;if(1===e)throw new Error("Invalid base64url length");if(2===e){if(-1==="AQgw".indexOf(t[t.length-1]))throw new Error("Invalid base64 padding")}else if(3===e&&-1==="AEIMQUYcgkosw048".indexOf(t[t.length-1]))throw new Error("Invalid base64 padding");return this}static _tag_34(t){const e=t.match(/^[a-zA-Z0-9+/]+(={0,2})$/);if(!e)throw new Error("Invalid base64url characters");if(t.length%4!=0)throw new Error("Invalid base64url length");if("="===e[1]){if(-1==="AQgw".indexOf(t[t.length-2]))throw new Error("Invalid base64 padding")}else if("=="===e[1]&&-1==="AEIMQUYcgkosw048".indexOf(t[t.length-3]))throw new Error("Invalid base64 padding");return this}static _tag_35(t){return new RegExp(t)}static _tag_258(t){return new Set(t)}}h.INTERNAL_JSON=a,t.exports=h},873:(t,e,r)=>{"use strict";const{Buffer:i}=r(764),n=r(202),o=r(830),s=r(960),a=r(66),{NUMBYTES:h,SHIFT32:u,BI:c,SYMS:l}=a;let d=null;try{d=r(669)}catch(t){d=r(595)}e.inspect=d.inspect;const f=new s("utf8",{fatal:!0,ignoreBOM:!0});e.utf8=t=>f.decode(t),e.utf8.checksUTF8=!0,e.isBufferish=function(t){return t&&"object"==typeof t&&(i.isBuffer(t)||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof ArrayBuffer||t instanceof DataView)},e.bufferishToBuffer=function(t){return i.isBuffer(t)?t:ArrayBuffer.isView(t)?i.from(t.buffer,t.byteOffset,t.byteLength):t instanceof ArrayBuffer?i.from(t):null},e.parseCBORint=function(t,e,r=!0){switch(t){case h.ONE:return e.readUInt8(0);case h.TWO:return e.readUInt16BE(0);case h.FOUR:return e.readUInt32BE(0);case h.EIGHT:{const t=e.readUInt32BE(0),i=e.readUInt32BE(4);if(t>2097151){if(r)return BigInt(t)*c.SHIFT32+BigInt(i);if(!a.BigNumber)throw new Error("No bigint and no bignumber.js");return new a.BigNumber(t).times(u).plus(i)}return t*u+i}default:throw new Error("Invalid additional info for int: "+t)}},e.writeHalf=function(t,e){const r=i.allocUnsafe(4);r.writeFloatBE(e,0);const n=r.readUInt32BE(0);if(0!=(8191&n))return!1;let o=n>>16&32768;const s=n>>23&255,a=8388607&n;if(s>=113&&s<=142)o+=(s-112<<10)+(a>>13);else{if(!(s>=103&&s<113))return!1;if(a&(1<<126-s)-1)return!1;o+=a+8388608>>126-s}return t.writeUInt16BE(o),!0},e.parseHalf=function(t){const e=128&t[0]?-1:1,r=(124&t[0])>>2,i=(3&t[0])<<8|t[1];return r?31===r?e*(i?NaN:1/0):e*Math.pow(2,r-25)*(1024+i):5.960464477539063e-8*e*i},e.parseCBORfloat=function(t){switch(t.length){case 2:return e.parseHalf(t);case 4:return t.readFloatBE(0);case 8:return t.readDoubleBE(0);default:throw new Error("Invalid float size: "+t.length)}},e.hex=function(t){return i.from(t.replace(/^0x/,""),"hex")},e.bin=function(t){let e=0,r=(t=t.replace(/\s/g,"")).length%8||8;const n=[];for(;r<=t.length;)n.push(parseInt(t.slice(e,r),2)),e=r,r+=8;return i.from(n)},e.arrayEqual=function(t,e){return null==t&&null==e||null!=t&&null!=e&&t.length===e.length&&t.every(((t,r)=>t===e[r]))},e.bufferToBignumber=function(t){if(!a.BigNumber)throw new Error("No bigint and no bignumber.js");return new a.BigNumber(t.toString("hex"),16)},e.bufferToBigInt=function(t){return BigInt("0x"+t.toString("hex"))},e.cborValueToString=function(t,r=-1){switch(typeof t){case"symbol":{switch(t){case l.NULL:return"null";case l.UNDEFINED:return"undefined";case l.BREAK:return"BREAK"}if(t.description)return t.description;const e=t.toString().match(/^Symbol\((.*)\)/);return e&&e[1]?e[1]:"Symbol"}case"string":return JSON.stringify(t);case"bigint":return t.toString();case"number":return r>0?d.inspect(t)+"_"+r:d.inspect(t)}const i=e.bufferishToBuffer(t);if(i){const t=i.toString("hex");return r===-1/0?t:`h'${t}'`}return a.BigNumber&&a.BigNumber.isBigNumber(t)?t.toString():t&&"function"==typeof t.inspect?t.inspect():d.inspect(t)},e.guessEncoding=function(t,r){if("string"==typeof t)return new n(t,null!=r?r:"hex");const i=e.bufferishToBuffer(t);if(i)return new n(i);if((s=t)instanceof o.Readable||["read","on","pipe"].every((t=>"function"==typeof s[t])))return t;var s;throw new Error("Unknown input type")};const A={"=":"","+":"-","/":"_"};e.base64url=function(t){return e.bufferishToBuffer(t).toString("base64").replace(/[=+/]/g,(t=>A[t]))},e.base64=function(t){return e.bufferishToBuffer(t).toString("base64")},e.isBigEndian=function(){const t=new Uint8Array(4);return!((new Uint32Array(t.buffer)[0]=1)&t[0])}},960:(t,e,r)=>{"use strict";let i=null;if("function"==typeof TextDecoder)i=TextDecoder;else if("undefined"!=typeof window)i=window.TextDecoder;else if("undefined"!=typeof self)i=self.TextDecoder;else try{const t=r(669);"function"!=typeof i&&(i=t.TextDecoder)}catch(t){}if("function"!=typeof i){class t{constructor(t,e){this.utfLabel=t,this.options=e}decode(t){const e=t.toString(this.utfLabel);if(this.options.fatal)for(const t of e)if(65533===t.codePointAt(0)){const t=new TypeError("[ERR_ENCODING_INVALID_ENCODED_DATA]: The encoded data was not valid for encoding "+this.utfLabel);throw t.code="ERR_ENCODING_INVALID_ENCODED_DATA",t.errno=12,t}return e}}i=t}t.exports=i},202:(t,e,r)=>{"use strict";const i=r(830),{Buffer:n}=r(764),o=r(960);let s=null,a=Symbol.for("nodejs.util.inspect.custom");try{s=r(669),a=s.inspect.custom}catch(t){}const h=new o("utf8",{fatal:!0,ignoreBOM:!0});class u extends i.Transform{constructor(t,e,r){null==r&&(r={});let i=null,o=null;switch(typeof t){case"object":n.isBuffer(t)?(i=t,null!=e&&"object"==typeof e&&(r=e)):r=t;break;case"string":i=t,null!=e&&"object"==typeof e?r=e:o=e}null==r&&(r={}),null==i&&(i=r.input),null==o&&(o=r.inputEncoding),delete r.input,delete r.inputEncoding;const s=null==r.watchPipe||r.watchPipe;delete r.watchPipe;const a=!!r.readError;delete r.readError,super(r),this.readError=a,s&&this.on("pipe",(t=>{const e=t._readableState.objectMode;if(this.length>0&&e!==this._readableState.objectMode)throw new Error("Do not switch objectMode in the middle of the stream");this._readableState.objectMode=e,this._writableState.objectMode=e})),null!=i&&this.end(i,o)}static isNoFilter(t){return t instanceof this}static compare(t,e){if(!(t instanceof this))throw new TypeError("Arguments must be NoFilters");return t===e?0:t.compare(e)}static concat(t,e){if(!Array.isArray(t))throw new TypeError("list argument must be an Array of NoFilters");if(0===t.length||0===e)return n.alloc(0);null==e&&(e=t.reduce(((t,e)=>{if(!(e instanceof u))throw new TypeError("list argument must be an Array of NoFilters");return t+e.length}),0));let r=!0,i=!0;const o=t.map((t=>{if(!(t instanceof u))throw new TypeError("list argument must be an Array of NoFilters");const e=t.slice();return n.isBuffer(e)?i=!1:r=!1,e}));if(r)return n.concat(o,e);if(i)return[].concat(...o).slice(0,e);throw new Error("Concatenating mixed object and byte streams not supported")}_transform(t,e,r){this._readableState.objectMode||n.isBuffer(t)||(t=n.from(t,e)),this.push(t),r()}_bufArray(){let t=this._readableState.buffer;if(!Array.isArray(t)){let e=t.head;for(t=[];null!=e;)t.push(e.data),e=e.next}return t}read(t){const e=super.read(t);if(null!=e){if(this.emit("read",e),this.readError&&e.length{this.on("finish",(()=>{const i=this.read();null==t||e||(e=!0,t(null,i)),r(i)})),this.on("error",(r=>{null==t||e||(e=!0,t(r)),i(r)}))}))}compare(t){if(!(t instanceof u))throw new TypeError("Arguments must be NoFilters");if(this===t)return 0;const e=this.slice(),r=t.slice();if(n.isBuffer(e)&&n.isBuffer(r))return e.compare(r);throw new Error("Cannot compare streams in object mode")}equals(t){return 0===this.compare(t)}slice(t,e){if(this._readableState.objectMode)return this._bufArray().slice(t,e);const r=this._bufArray();switch(r.length){case 0:return n.alloc(0);case 1:return r[0].slice(t,e);default:return n.concat(r).slice(t,e)}}get(t){return this.slice()[t]}toJSON(){const t=this.slice();return n.isBuffer(t)?t.toJSON():t}toString(t,e,r){const i=this.slice(e,r);return n.isBuffer(i)?t&&"utf8"!==t?i.toString(t,e,r):h.decode(i):JSON.stringify(i)}inspect(t,e){return this[a](t,e)}[a](t,e){const r=this._bufArray().map((t=>n.isBuffer(t)?(null!=e?e.stylize:void 0)?e.stylize(t.toString("hex"),"string"):t.toString("hex"):s?s.inspect(t,e):t.toString())).join(", ");return`${this.constructor.name} [${r}]`}get length(){return this._readableState.length}writeBigInt(t){let e=t.toString(16);if(t<0){const r=BigInt(Math.floor(e.length/2));e=(t=(BigInt(1)<{"use strict";const i=r(830),n=r(202),o=i.Transform;t.exports=class extends o{constructor(t){super(t),this._writableState.objectMode=!1,this._readableState.objectMode=!0,this.bs=new n,this.__restart()}_transform(t,e,r){for(this.bs.write(t);this.bs.length>=this.__needed;){let e=null;const i=null===this.__needed?void 0:this.bs.read(this.__needed);try{e=this.__parser.next(i)}catch(t){return r(t)}this.__needed&&(this.__fresh=!1),e.done?(this.push(e.value),this.__restart()):this.__needed=e.value||1/0}return r()}*_parse(){throw new Error("Must be implemented in subclass")}__restart(){this.__needed=null,this.__parser=this._parse(),this.__fresh=!0}_flush(t){t(this.__fresh?null:new Error("unexpected end of input"))}}},187:t=>{"use strict";var e,r="object"==typeof Reflect?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};e=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var n=Number.isNaN||function(t){return t!=t};function o(){o.init.call(this)}t.exports=o,t.exports.once=function(t,e){return new Promise((function(r,i){function n(r){t.removeListener(e,o),i(r)}function o(){"function"==typeof t.removeListener&&t.removeListener("error",n),r([].slice.call(arguments))}g(t,e,o,{once:!0}),"error"!==e&&function(t,e,r){"function"==typeof t.on&&g(t,"error",e,{once:!0})}(t,n)}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function a(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function h(t){return void 0===t._maxListeners?o.defaultMaxListeners:t._maxListeners}function u(t,e,r,i){var n,o,s,u;if(a(r),void 0===(o=t._events)?(o=t._events=Object.create(null),t._eventsCount=0):(void 0!==o.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),o=t._events),s=o[e]),void 0===s)s=o[e]=r,++t._eventsCount;else if("function"==typeof s?s=o[e]=i?[r,s]:[s,r]:i?s.unshift(r):s.push(r),(n=h(t))>0&&s.length>n&&!s.warned){s.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=s.length,u=c,console&&console.warn&&console.warn(u)}return t}function c(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function l(t,e,r){var i={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},n=c.bind(i);return n.listener=r,i.wrapFn=n,n}function d(t,e,r){var i=t._events;if(void 0===i)return[];var n=i[e];return void 0===n?[]:"function"==typeof n?r?[n.listener||n]:[n]:r?function(t){for(var e=new Array(t.length),r=0;r0&&(s=e[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var h=o[t];if(void 0===h)return!1;if("function"==typeof h)i(h,this,e);else{var u=h.length,c=A(h,u);for(r=0;r=0;o--)if(r[o]===e||r[o].listener===e){s=r[o].listener,n=o;break}if(n<0)return this;0===n?r.shift():function(t,e){for(;e+1=0;i--)this.removeListener(t,e[i]);return this},o.prototype.listeners=function(t){return d(this,t,!0)},o.prototype.rawListeners=function(t){return d(this,t,!1)},o.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):f.call(t,e)},o.prototype.listenerCount=f,o.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}},645:(t,e)=>{e.read=function(t,e,r,i,n){var o,s,a=8*n-i-1,h=(1<>1,c=-7,l=r?n-1:0,d=r?-1:1,f=t[e+l];for(l+=d,o=f&(1<<-c)-1,f>>=-c,c+=a;c>0;o=256*o+t[e+l],l+=d,c-=8);for(s=o&(1<<-c)-1,o>>=-c,c+=i;c>0;s=256*s+t[e+l],l+=d,c-=8);if(0===o)o=1-u;else{if(o===h)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,i),o-=u}return(f?-1:1)*s*Math.pow(2,o-i)},e.write=function(t,e,r,i,n,o){var s,a,h,u=8*o-n-1,c=(1<>1,d=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,f=i?0:o-1,A=i?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=c):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),(e+=s+l>=1?d/h:d*Math.pow(2,1-l))*h>=2&&(s++,h/=2),s+l>=c?(a=0,s=c):s+l>=1?(a=(e*h-1)*Math.pow(2,n),s+=l):(a=e*Math.pow(2,l-1)*Math.pow(2,n),s=0));n>=8;t[r+f]=255&a,f+=A,a/=256,n-=8);for(s=s<0;t[r+f]=255&s,f+=A,s/=256,u-=8);t[r+f-A]|=128*g}},717:t=>{"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},595:function(t){t.exports=(()=>{"use strict";var t={255:(t,e)=>{e.l=class{hexSlice(t=0,e){return Array.prototype.map.call(this.slice(t,e),(t=>("00"+t.toString(16)).slice(-2))).join("")}}},48:(t,e,r)=>{const i=r(765),{internalBinding:n,Array:o,ArrayIsArray:s,ArrayPrototypeFilter:a,ArrayPrototypeForEach:h,ArrayPrototypePush:u,ArrayPrototypePushApply:c,ArrayPrototypeSort:l,ArrayPrototypeUnshift:d,BigIntPrototypeValueOf:f,BooleanPrototypeValueOf:A,DatePrototypeGetTime:g,DatePrototypeToISOString:M,DatePrototypeToString:B,ErrorPrototypeToString:w,FunctionPrototypeCall:E,FunctionPrototypeToString:p,JSONStringify:m,MapPrototypeGetSize:y,MapPrototypeEntries:b,MathFloor:Q,MathMax:I,MathMin:C,MathRound:D,MathSqrt:N,Number:v,NumberIsNaN:G,NumberParseFloat:R,NumberParseInt:Y,NumberPrototypeValueOf:U,Object:V,ObjectAssign:T,ObjectCreate:S,ObjectDefineProperty:k,ObjectGetOwnPropertyDescriptor:F,ObjectGetOwnPropertyNames:L,ObjectGetOwnPropertySymbols:j,ObjectGetPrototypeOf:Z,ObjectIs:H,ObjectKeys:z,ObjectPrototypeHasOwnProperty:x,ObjectPrototypePropertyIsEnumerable:O,ObjectSeal:W,ObjectSetPrototypeOf:J,ReflectOwnKeys:X,RegExp:K,RegExpPrototypeTest:P,RegExpPrototypeToString:_,SafeStringIterator:q,SafeMap:$,SafeSet:tt,SetPrototypeGetSize:et,SetPrototypeValues:rt,String:it,StringPrototypeCharCodeAt:nt,StringPrototypeCodePointAt:ot,StringPrototypeIncludes:st,StringPrototypeNormalize:at,StringPrototypePadEnd:ht,StringPrototypePadStart:ut,StringPrototypeRepeat:ct,StringPrototypeReplace:lt,StringPrototypeSlice:dt,StringPrototypeSplit:ft,StringPrototypeToLowerCase:At,StringPrototypeTrim:gt,StringPrototypeValueOf:Mt,SymbolPrototypeToString:Bt,SymbolPrototypeValueOf:wt,SymbolIterator:Et,SymbolToStringTag:pt,TypedArrayPrototypeGetLength:mt,TypedArrayPrototypeGetSymbolToStringTag:yt,Uint8Array:bt,uncurryThis:Qt}=i,{getOwnNonIndexProperties:It,getPromiseDetails:Ct,getProxyDetails:Dt,kPending:Nt,kRejected:vt,previewEntries:Gt,getConstructorName:Rt,getExternalValue:Yt,propertyFilter:{ALL_PROPERTIES:Ut,ONLY_ENUMERABLE:Vt},Proxy:Tt}=r(891),{customInspectSymbol:St,isError:kt,join:Ft,removeColors:Lt}=r(335),{codes:{ERR_INVALID_ARG_TYPE:jt},isStackOverflowError:Zt}=r(101),{isAsyncFunction:Ht,isGeneratorFunction:zt,isAnyArrayBuffer:xt,isArrayBuffer:Ot,isArgumentsObject:Wt,isBoxedPrimitive:Jt,isDataView:Xt,isExternal:Kt,isMap:Pt,isMapIterator:_t,isModuleNamespaceObject:qt,isNativeError:$t,isPromise:te,isSet:ee,isSetIterator:re,isWeakMap:ie,isWeakSet:ne,isRegExp:oe,isDate:se,isTypedArray:ae,isStringObject:he,isNumberObject:ue,isBooleanObject:ce,isBigIntObject:le}=r(63),de=r(183),{NativeModule:fe}=r(992),{validateObject:Ae}=r(356);let ge;const Me=new tt(a(L(r.g),(t=>P(/^[A-Z][a-zA-Z0-9]+$/,t)))),Be=t=>void 0===t&&void 0!==t,we=W({showHidden:!1,depth:2,colors:!1,customInspect:!0,showProxy:!1,maxArrayLength:100,maxStringLength:1e4,breakLength:80,compact:3,sorted:!1,getters:!1}),Ee=/[\x00-\x1f\x27\x5c\x7f-\x9f]/,pe=/[\x00-\x1f\x27\x5c\x7f-\x9f]/g,me=/[\x00-\x1f\x5c\x7f-\x9f]/,ye=/[\x00-\x1f\x5c\x7f-\x9f]/g,be=/^[a-zA-Z_][a-zA-Z_0-9]*$/,Qe=/^(0|[1-9][0-9]*)$/,Ie=/^ at (?:[^/\\(]+ \(|)node:(.+):\d+:\d+\)?$/,Ce=/^ at (?:[^/\\(]+ \(|)(.+)\.js:\d+:\d+\)?$/,De=/[/\\]node_modules[/\\](.+?)(?=[/\\])/g,Ne=/^(\s+[^(]*?)\s*{/,ve=/(\/\/.*?\n)|(\/\*(.|\n)*?\*\/)/g,Ge=["\\x00","\\x01","\\x02","\\x03","\\x04","\\x05","\\x06","\\x07","\\b","\\t","\\n","\\x0B","\\f","\\r","\\x0E","\\x0F","\\x10","\\x11","\\x12","\\x13","\\x14","\\x15","\\x16","\\x17","\\x18","\\x19","\\x1A","\\x1B","\\x1C","\\x1D","\\x1E","\\x1F","","","","","","","","\\'","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\\\","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\x7F","\\x80","\\x81","\\x82","\\x83","\\x84","\\x85","\\x86","\\x87","\\x88","\\x89","\\x8A","\\x8B","\\x8C","\\x8D","\\x8E","\\x8F","\\x90","\\x91","\\x92","\\x93","\\x94","\\x95","\\x96","\\x97","\\x98","\\x99","\\x9A","\\x9B","\\x9C","\\x9D","\\x9E","\\x9F"],Re=new K("[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))","g");let Ye;function Ue(t,e){const r={budget:{},indentationLvl:0,seen:[],currentDepth:0,stylize:Ze,showHidden:we.showHidden,depth:we.depth,colors:we.colors,customInspect:we.customInspect,showProxy:we.showProxy,maxArrayLength:we.maxArrayLength,maxStringLength:we.maxStringLength,breakLength:we.breakLength,compact:we.compact,sorted:we.sorted,getters:we.getters};if(arguments.length>1)if(arguments.length>2&&(void 0!==arguments[2]&&(r.depth=arguments[2]),arguments.length>3&&void 0!==arguments[3]&&(r.colors=arguments[3])),"boolean"==typeof e)r.showHidden=e;else if(e){const t=z(e);for(let i=0;iwe,set:t=>(Ae(t,"options"),T(we,t))});const Ve=39,Te=49;function Se(t,e){k(Ue.colors,e,{get(){return this[t]},set(e){this[t]=e},configurable:!0,enumerable:!1})}function ke(t,e){return-1===e?`"${t}"`:-2===e?`\`${t}\``:`'${t}'`}Ue.colors=T(S(null),{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],blink:[5,25],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],doubleunderline:[21,24],black:[30,Ve],red:[31,Ve],green:[32,Ve],yellow:[33,Ve],blue:[34,Ve],magenta:[35,Ve],cyan:[36,Ve],white:[37,Ve],bgBlack:[40,Te],bgRed:[41,Te],bgGreen:[42,Te],bgYellow:[43,Te],bgBlue:[44,Te],bgMagenta:[45,Te],bgCyan:[46,Te],bgWhite:[47,Te],framed:[51,54],overlined:[53,55],gray:[90,Ve],redBright:[91,Ve],greenBright:[92,Ve],yellowBright:[93,Ve],blueBright:[94,Ve],magentaBright:[95,Ve],cyanBright:[96,Ve],whiteBright:[97,Ve],bgGray:[100,Te],bgRedBright:[101,Te],bgGreenBright:[102,Te],bgYellowBright:[103,Te],bgBlueBright:[104,Te],bgMagentaBright:[105,Te],bgCyanBright:[106,Te],bgWhiteBright:[107,Te]}),Se("gray","grey"),Se("gray","blackBright"),Se("bgGray","bgGrey"),Se("bgGray","bgBlackBright"),Se("dim","faint"),Se("strikethrough","crossedout"),Se("strikethrough","strikeThrough"),Se("strikethrough","crossedOut"),Se("hidden","conceal"),Se("inverse","swapColors"),Se("inverse","swapcolors"),Se("doubleunderline","doubleUnderline"),Ue.styles=T(S(null),{special:"cyan",number:"yellow",bigint:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",symbol:"green",date:"magenta",regexp:"red",module:"underline"});const Fe=t=>Ge[nt(t)];function Le(t){let e=Ee,r=pe,i=39;if(st(t,"'")&&(st(t,'"')?st(t,"`")||st(t,"${")||(i=-2):i=-1,39!==i&&(e=me,r=ye)),t.length<5e3&&!P(e,t))return ke(t,i);if(t.length>100)return ke(t=lt(t,r,Fe),i);let n="",o=0;const s=t.length;for(let e=0;e126&&r<160)&&(n+=o===e?Ge[r]:`${dt(t,o,e)}${Ge[r]}`,o=e+1)}return o!==s&&(n+=dt(t,o)),ke(n,i)}function je(t,e){const r=Ue.styles[e];if(void 0!==r){const e=Ue.colors[r];if(void 0!==e)return`[${e[0]}m${t}[${e[1]}m`}return t}function Ze(t){return t}function He(){return[]}function ze(t,e){try{return t instanceof e}catch{return!1}}function xe(t,e,r,i){let n;const o=t;for(;t||Be(t);){const s=F(t,"constructor");if(void 0!==s&&"function"==typeof s.value&&""!==s.value.name&&ze(o,s.value))return void 0===i||n===t&&Me.has(s.value.name)||Oe(e,o,n||o,r,i),s.value.name;t=Z(t),void 0===n&&(n=t)}if(null===n)return null;const s=Rt(o);if(r>e.depth&&null!==e.depth)return`${s} `;const a=xe(n,e,r+1,i);return null===a?`${s} <${Ue(n,{...e,customInspect:!1,depth:-1})}>`:`${s} <${a}>`}function Oe(t,e,r,i,n){let o,s,a=0;do{if(0!==a||e===r){if(null===(r=Z(r)))return;const t=F(r,"constructor");if(void 0!==t&&"function"==typeof t.value&&Me.has(t.value.name))return}0===a?s=new tt:h(o,(t=>s.add(t))),o=X(r);for(const h of o){if("constructor"===h||x(e,h)||0!==a&&s.has(h))continue;const o=F(r,h);if("function"==typeof o.value)continue;const c=Ar(t,r,i,h,0,o,e);t.colors?u(n,`${c}`):u(n,c)}}while(3!=++a)}function We(t,e,r,i=""){return null===t?""!==e&&r!==e?`[${r}${i}: null prototype] [${e}] `:`[${r}${i}: null prototype] `:""!==e&&t!==e?`${t}${i} [${e}] `:`${t}${i} `}function Je(t,e){let r;const i=j(t);if(e)r=L(t),0!==i.length&&c(r,i);else{try{r=z(t)}catch(e){de($t(e)&&"ReferenceError"===e.name&&qt(t)),r=L(t)}0!==i.length&&c(r,a(i,(e=>O(t,e))))}return r}function Xe(t,e,r){let i="";return null===e&&(i=Rt(t),i===r&&(i="Object")),We(e,r,i)}function Ke(t,e,r,n){if("object"!=typeof e&&"function"!=typeof e&&!Be(e))return $e(t.stylize,e,t);if(null===e)return t.stylize("null","null");const o=e,a=Dt(e,!!t.showProxy);if(void 0!==a){if(t.showProxy)return function(t,e,r){if(r>t.depth&&null!==t.depth)return t.stylize("Proxy [Array]","special");r+=1,t.indentationLvl+=2;const i=[Ke(t,e[0],r),Ke(t,e[1],r)];return t.indentationLvl-=2,Mr(t,i,"",["Proxy [","]"],2,r)}(t,a,r);e=a}if(t.customInspect){const i=e[St];if("function"==typeof i&&i!==Ue&&(!e.constructor||e.constructor.prototype!==e)){const e=null===t.depth?null:t.depth-r,n=E(i,o,e,function(t,e){const r={stylize:t.stylize,showHidden:t.showHidden,depth:t.depth,colors:t.colors,customInspect:t.customInspect,showProxy:t.showProxy,maxArrayLength:t.maxArrayLength,maxStringLength:t.maxStringLength,breakLength:t.breakLength,compact:t.compact,sorted:t.sorted,getters:t.getters,...t.userOptions};if(e){J(r,null);for(const t of z(r))"object"!=typeof r[t]&&"function"!=typeof r[t]||null===r[t]||delete r[t];r.stylize=J(((e,r)=>{let i;try{i=`${t.stylize(e,r)}`}catch{}return"string"!=typeof i?e:i}),null)}return r}(t,void 0!==a||!(o instanceof V)));if(n!==o)return"string"!=typeof n?Ke(t,n,r):n.replace(/\n/g,`\n${" ".repeat(t.indentationLvl)}`)}}if(t.seen.includes(e)){let r=1;return void 0===t.circular?(t.circular=new $,t.circular.set(e,r)):(r=t.circular.get(e),void 0===r&&(r=t.circular.size+1,t.circular.set(e,r))),t.stylize(`[Circular *${r}]`,"special")}return function(t,e,r,n){let o,a;t.showHidden&&(r<=t.depth||null===t.depth)&&(a=[]);const h=xe(e,t,r,a);void 0!==a&&0===a.length&&(a=void 0);let u=e[pt];("string"!=typeof u||""!==u&&(t.showHidden?x:O)(e,pt))&&(u="");let c,l="",E=He,m=!0,Q=0;const I=t.showHidden?Ut:Vt;let C,D=0;if(e[Et]||null===h)if(m=!1,s(e)){const t="Array"!==h||""!==u?We(h,u,"Array",`(${e.length})`):"";if(o=It(e,I),c=[`${t}[`,"]"],0===e.length&&0===o.length&&void 0===a)return`${c[0]}]`;D=2,E=ir}else if(ee(e)){const r=et(e),i=We(h,u,"Set",`(${r})`);if(o=Je(e,t.showHidden),E=null!==h?or.bind(null,e):or.bind(null,rt(e)),0===r&&0===o.length&&void 0===a)return`${i}{}`;c=[`${i}{`,"}"]}else if(Pt(e)){const r=y(e),i=We(h,u,"Map",`(${r})`);if(o=Je(e,t.showHidden),E=null!==h?sr.bind(null,e):sr.bind(null,b(e)),0===r&&0===o.length&&void 0===a)return`${i}{}`;c=[`${i}{`,"}"]}else if(ae(e)){o=It(e,I);let r=e,n="";null===h&&(n=yt(e),r=new i[n](e));const s=mt(e);if(c=[`${We(h,u,n,`(${s})`)}[`,"]"],0===e.length&&0===o.length&&!t.showHidden)return`${c[0]}]`;E=nr.bind(null,r,s),D=2}else _t(e)?(o=Je(e,t.showHidden),c=Pe("Map",u),E=dr.bind(null,c)):re(e)?(o=Je(e,t.showHidden),c=Pe("Set",u),E=dr.bind(null,c)):m=!0;if(m)if(o=Je(e,t.showHidden),c=["{","}"],"Object"===h){if(Wt(e)?c[0]="[Arguments] {":""!==u&&(c[0]=`${We(h,u,"Object")}{`),0===o.length&&void 0===a)return`${c[0]}}`}else if("function"==typeof e){if(l=function(t,e,r){const i=p(t);if("class"===i.slice(0,5)&&i.endsWith("}")){const n=i.slice(5,-1),o=n.indexOf("{");if(-1!==o&&(!n.slice(0,o).includes("(")||Ne.test(n.replace(ve))))return function(t,e,r){let i=`class ${x(t,"name")&&t.name||"(anonymous)"}`;if("Function"!==e&&null!==e&&(i+=` [${e}]`),""!==r&&e!==r&&(i+=` [${r}]`),null!==e){const e=Z(t).name;e&&(i+=` extends ${e}`)}else i+=" extends [null prototype]";return`[${i}]`}(t,e,r)}let n="Function";zt(t)&&(n=`Generator${n}`),Ht(t)&&(n=`Async${n}`);let o=`[${n}`;return null===e&&(o+=" (null prototype)"),""===t.name?o+=" (anonymous)":o+=`: ${t.name}`,o+="]",e!==n&&null!==e&&(o+=` ${e}`),""!==r&&e!==r&&(o+=` [${r}]`),o}(e,h,u),0===o.length&&void 0===a)return t.stylize(l,"special")}else if(oe(e)){l=_(null!==h?e:new K(e));const i=We(h,u,"RegExp");if("RegExp "!==i&&(l=`${i}${l}`),0===o.length&&void 0===a||r>t.depth&&null!==t.depth)return t.stylize(l,"regexp")}else if(se(e)){l=G(g(e))?B(e):M(e);const r=We(h,u,"Date");if("Date "!==r&&(l=`${r}${l}`),0===o.length&&void 0===a)return t.stylize(l,"date")}else if(kt(e)){if(l=function(t,e,r,i,n){const o=null!=t.name?it(t.name):"Error";let s=o.length,a=t.stack?it(t.stack):w(t);if(!i.showHidden&&0!==n.length)for(const e of["name","message","stack"]){const r=n.indexOf(e);-1!==r&&a.includes(t[e])&&n.splice(r,1)}if(null===e||o.endsWith("Error")&&a.startsWith(o)&&(a.length===s||":"===a[s]||"\n"===a[s])){let t="Error";if(null===e){const e=a.match(/^([A-Z][a-z_ A-Z0-9[\]()-]+)(?::|\n {4}at)/)||a.match(/^([a-z_A-Z0-9-]*Error)$/);t=e&&e[1]||"",s=t.length,t=t||"Error"}const i=We(e,r,t).slice(0,-1);o!==i&&(a=i.includes(o)?0===s?`${i}: ${a}`:`${i}${a.slice(s)}`:`${i} [${o}]${a.slice(s)}`)}let h=t.message&&a.indexOf(t.message)||-1;-1!==h&&(h+=t.message.length);const u=a.indexOf("\n at",h);if(-1===u)a=`[${a}]`;else if(i.colors){let t=a.slice(0,u);const e=a.slice(u+1).split("\n");for(const r of e){const e=r.match(Ie)||r.match(Ce);if(null!==e&&fe.exists(e[1]))t+=`\n${i.stylize(r,"undefined")}`;else{let e;t+="\n";let n=0;for(;e=De.exec(r);)t+=r.slice(n,e.index+14),t+=i.stylize(e[1],"module"),n=e.index+e[0].length;t+=0===n?r:r.slice(n)}}a=t}if(0!==i.indentationLvl){const t=" ".repeat(i.indentationLvl);a=a.replace(/\n/g,`\n${t}`)}return a}(e,h,u,t,o),0===o.length&&void 0===a)return l}else if(xt(e)){const r=We(h,u,Ot(e)?"ArrayBuffer":"SharedArrayBuffer");if(void 0===n)E=rr;else if(0===o.length&&void 0===a)return r+`{ byteLength: ${_e(t.stylize,e.byteLength)} }`;c[0]=`${r}{`,d(o,"byteLength")}else if(Xt(e))c[0]=`${We(h,u,"DataView")}{`,d(o,"byteLength","byteOffset","buffer");else if(te(e))c[0]=`${We(h,u,"Promise")}{`,E=fr;else if(ne(e))c[0]=`${We(h,u,"WeakSet")}{`,E=t.showHidden?cr:ur;else if(ie(e))c[0]=`${We(h,u,"WeakMap")}{`,E=t.showHidden?lr:ur;else if(qt(e))c[0]=`${We(h,u,"Module")}{`,E=tr.bind(null,o);else if(Jt(e)){if(l=function(t,e,r,i,n){let o,s;ue(t)?(o=U,s="Number"):he(t)?(o=Mt,s="String",r.splice(0,t.length)):ce(t)?(o=A,s="Boolean"):le(t)?(o=f,s="BigInt"):(o=wt,s="Symbol");let a=`[${s}`;return s!==i&&(a+=null===i?" (null prototype)":` (${i})`),a+=`: ${$e(Ze,o(t),e)}]`,""!==n&&n!==i&&(a+=` [${n}]`),0!==r.length||e.stylize===Ze?a:e.stylize(a,At(s))}(e,t,o,h,u),0===o.length&&void 0===a)return l}else{if(0===o.length&&void 0===a){if(Kt(e)){const r=Yt(e).toString(16);return t.stylize(`[External: ${r}]`,"special")}return`${Xe(e,h,u)}{}`}c[0]=`${Xe(e,h,u)}{`}if(r>t.depth&&null!==t.depth){let r=Xe(e,h,u).slice(0,-1);return null!==h&&(r=`[${r}]`),t.stylize(r,"special")}r+=1,t.seen.push(e),t.currentDepth=r;const N=t.indentationLvl;try{for(C=E(t,e,r),Q=0;Q`,"special");!0!==t.compact?l=""===l?e:`${e} ${l}`:c[0]=`${e} ${c[0]}`}}if(t.seen.pop(),t.sorted){const e=!0===t.sorted?void 0:t.sorted;if(0===D)C=C.sort(e);else if(o.length>1){const t=C.slice(C.length-o.length).sort(e);C.splice(C.length-o.length,o.length,...t)}}const v=Mr(t,C,l,c,D,r,e),R=(t.budget[t.indentationLvl]||0)+v.length;return t.budget[t.indentationLvl]=R,R>2**27&&(t.depth=-1),v}(t,e,r,n)}function Pe(t,e){return e!==`${t} Iterator`&&(""!==e&&(e+="] ["),e+=`${t} Iterator`),[`[${e}] {`,"}"]}function _e(t,e){return t(H(e,-0)?"-0":`${e}`,"number")}function qe(t,e){return t(`${e}n`,"bigint")}function $e(t,e,r){if("string"==typeof e){let i="";if(e.length>r.maxStringLength){const t=e.length-r.maxStringLength;e=e.slice(0,r.maxStringLength),i=`... ${t} more character${t>1?"s":""}`}return!0!==r.compact&&e.length>16&&e.length>r.breakLength-r.indentationLvl-4?e.split(/\n/).map(((e,r,i)=>t(Le(e+(r===i.length-1?"":"\n")),"string"))).join(` +\n${" ".repeat(r.indentationLvl+2)}`)+i:t(Le(e),"string")+i}return"number"==typeof e?_e(t,e):"bigint"==typeof e?qe(t,e):"boolean"==typeof e?t(`${e}`,"boolean"):void 0===e?t("undefined","undefined"):t(Bt(e),"symbol")}function tr(t,e,r,i){const n=new o(t.length);for(let o=0;o","special")}return t.length=0,n}function er(t,e,r,i,n,o){const s=z(e);let a=o;for(;o2**32-2)break;if(`${a}`!==h){if(!Qe.test(h))break;const e=u-a,r=`<${e} empty item${e>1?"s":""}>`;if(n.push(t.stylize(r,"undefined")),a=u,n.length===i)break}n.push(Ar(t,e,r,h,1)),a++}const h=e.length-a;if(n.length!==i){if(h>0){const e=`<${h} empty item${h>1?"s":""}>`;n.push(t.stylize(e,"undefined"))}}else h>0&&n.push(`... ${h} more item${h>1?"s":""}`);return n}function rr(t,e){let i;try{i=new bt(e)}catch{return[t.stylize("(detached)","special")]}void 0===ge&&(ge=Qt(r(255).l.prototype.hexSlice));let n=gt(lt(ge(i,0,C(t.maxArrayLength,i.length)),/(.{2})/g,"$1 "));const o=i.length-t.maxArrayLength;return o>0&&(n+=` ... ${o} more byte${o>1?"s":""}`),[`${t.stylize("[Uint8Contents]","special")}: <${n}>`]}function ir(t,e,r){const i=e.length,n=C(I(0,t.maxArrayLength),i),o=i-n,s=[];for(let i=0;i0&&s.push(`... ${o} more item${o>1?"s":""}`),s}function nr(t,e,r,i,n){const s=C(I(0,r.maxArrayLength),e),a=t.length-s,h=new o(s),c=t.length>0&&"number"==typeof t[0]?_e:qe;for(let e=0;e0&&(h[s]=`... ${a} more item${a>1?"s":""}`),r.showHidden){r.indentationLvl+=2;for(const e of["BYTES_PER_ELEMENT","length","byteLength","byteOffset","buffer"]){const i=Ke(r,t[e],n,!0);u(h,`[${e}]: ${i}`)}r.indentationLvl-=2}return h}function or(t,e,r,i){const n=[];e.indentationLvl+=2;for(const r of t)u(n,Ke(e,r,i));return e.indentationLvl-=2,n}function sr(t,e,r,i){const n=[];e.indentationLvl+=2;for(const{0:r,1:o}of t)n.push(`${Ke(e,r,i)} => `+Ke(e,o,i));return e.indentationLvl-=2,n}function ar(t,e,r,i){const n=I(t.maxArrayLength,0),s=C(n,r.length),a=new o(s);t.indentationLvl+=2;for(let i=0;i0&&u(a,`... ${h} more item${h>1?"s":""}`),a}function hr(t,e,r,i){const n=I(t.maxArrayLength,0),s=r.length/2,a=s-n,h=C(n,s);let u=new o(h),c=0;if(t.indentationLvl+=2,0===i){for(;c ${Ke(t,r[i+1],e)}`}t.sorted||(u=u.sort())}else for(;c0&&u.push(`... ${a} more item${a>1?"s":""}`),u}function ur(t){return[t.stylize("","special")]}function cr(t,e,r){return ar(t,r,Gt(e),0)}function lr(t,e,r){return hr(t,r,Gt(e),0)}function dr(t,e,r,i){const{0:n,1:o}=Gt(r,!0);return o?(t[0]=t[0].replace(/ Iterator] {$/," Entries] {"),hr(e,i,n,2)):ar(e,i,n,1)}function fr(t,e,r){let i;const{0:n,1:o}=Ct(e);if(n===Nt)i=[t.stylize("","special")];else{t.indentationLvl+=2;const e=Ke(t,o,r);t.indentationLvl-=2,i=[n===vt?`${t.stylize("","special")} ${e}`:e]}return i}function Ar(t,e,r,i,n,o,s=e){let a,h,u=" ";if(void 0!==(o=o||F(e,i)||{value:e[i],enumerable:!0}).value){const e=!0!==t.compact||0!==n?2:3;t.indentationLvl+=e,h=Ke(t,o.value,r),3===e&&t.breakLength`;h=`${i(`[${e}:`,n)} ${r}${i("]",n)}`}else h=t.stylize(`[${e}]`,n)}else h=void 0!==o.set?t.stylize("[Setter]","special"):t.stylize("undefined","undefined");if(1===n)return h;if("symbol"==typeof i){const e=lt(Bt(i),pe,Fe);a=`[${t.stylize(e,"symbol")}]`}else a="__proto__"===i?"['__proto__']":!1===o.enumerable?`[${lt(i,pe,Fe)}]`:P(be,i)?t.stylize(i,"name"):t.stylize(Le(i),"string");return`${a}:${u}${h}`}function gr(t,e,r,i){let n=e.length+r;if(n+e.length>t.breakLength)return!1;for(let r=0;rt.breakLength)return!1;return""===i||!st(i,"\n")}function Mr(t,e,r,i,n,s,a){if(!0!==t.compact){if("number"==typeof t.compact&&t.compact>=1){const h=e.length;if(2===n&&h>6&&(e=function(t,e,r){let i=0,n=0,s=0,a=e.length;t.maxArrayLength5||n<=6)){const n=2.5,o=N(c-i/e.length),s=I(c-3-o,1),l=C(D(N(n*s*a)/s),Q((t.breakLength-t.indentationLvl)/c),4*t.compact,15);if(l<=1)return e;const d=[],f=[];for(let t=0;tr&&(r=h[i]);r+=2,f[t]=r}let A=ut;if(void 0!==r)for(let t=0;tft(t.message,"\n",1)[0];let Er;function pr(t){try{return m(t)}catch(t){if(!Er)try{const t={};t.a=t,m(t)}catch(t){Er=wr(t)}if("TypeError"===t.name&&wr(t)===Er)return"[Circular]";throw t}}function mr(t,e){const r=e[0];let i=0,n="",o="";if("string"==typeof r){if(1===e.length)return r;let s,a=0;for(let o=0;o=127){i+=t.getStringWidth(e.slice(r).normalize("NFC"));break}i+=n>=32?1:0}return i}}else{Ye=function(r,i=!0){let n=0;i&&(r=yr(r)),r=at(r,"NFC");for(const i of new q(r)){const r=ot(i,0);t(r)?n+=2:e(r)||n++}return n};const t=t=>t>=4352&&(t<=4447||9001===t||9002===t||t>=11904&&t<=12871&&12351!==t||t>=12880&&t<=19903||t>=19968&&t<=42182||t>=43360&&t<=43388||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65131||t>=65281&&t<=65376||t>=65504&&t<=65510||t>=110592&&t<=110593||t>=127488&&t<=127569||t>=127744&&t<=128591||t>=131072&&t<=262141),e=t=>t<=31||t>=127&&t<=159||t>=768&&t<=879||t>=8203&&t<=8207||t>=8400&&t<=8447||t>=65024&&t<=65039||t>=65056&&t<=65071||t>=917760&&t<=917999}function yr(t){return t.replace(Re,"")}t.exports={inspect:Ue,format:function(...t){return mr(void 0,t)},formatWithOptions:function(t,...e){if("object"!=typeof t||null===t)throw new jt("inspectOptions","object",t);return mr(t,e)},getStringWidth:Ye,inspectDefaultOptions:we,stripVTControlCharacters:yr,stylizeWithColor:je,stylizeWithHTML(t,e){const r=Ue.styles[e];return void 0!==r?`${t}`:t},Proxy:Tt}},183:t=>{t.exports=function(t){if(!t)throw new Error("Assertion failed")}},992:(t,e)=>{e.NativeModule={exists:t=>!t.startsWith("/")}},101:(t,e,r)=>{const{ArrayIsArray:i,ArrayPrototypeIncludes:n,ArrayPrototypeIndexOf:o,ArrayPrototypeJoin:s,ArrayPrototypePop:a,ArrayPrototypePush:h,ArrayPrototypeSplice:u,ErrorCaptureStackTrace:c,ObjectDefineProperty:l,ReflectApply:d,RegExpPrototypeTest:f,SafeMap:A,StringPrototypeEndsWith:g,StringPrototypeIncludes:M,StringPrototypeSlice:B,StringPrototypeToLowerCase:w}=r(765),E=new A,p={},m=/^([A-Z][a-z0-9]*)+$/,y=["string","function","number","object","Function","Object","boolean","bigint","symbol"];let b,Q,I=null;function C(){return I||(I=r(48)),I}const D=N((function(t,e,r){(t=v(t)).name=`${e} [${r}]`,t.stack,delete t.name}));function N(t){const e="__node_internal_"+t.name;return l(t,"name",{value:e}),t}const v=N((function(t){return b=Error.stackTraceLimit,Error.stackTraceLimit=1/0,c(t),Error.stackTraceLimit=b,t}));let G,R;var Y,U,V,T,S;t.exports={codes:p,hideStackFrames:N,isStackOverflowError:function(t){if(void 0===R)try{!function t(){t()}()}catch(t){R=t.message,G=t.name}return t&&t.name===G&&t.message===R}},Y="ERR_INVALID_ARG_TYPE",U=(t,e,r)=>{Q("string"==typeof t,"'name' must be a string"),i(e)||(e=[e]);let c="The ";g(t," argument")?c+=`${t} `:c+=`"${t}" ${M(t,".")?"property":"argument"} `,c+="must be ";const l=[],d=[],A=[];for(const t of e)Q("string"==typeof t,"All expected entries have to be of type string"),n(y,t)?h(l,w(t)):f(m,t)?h(d,t):(Q("object"!==t,'The value "object" should be written as "Object"'),h(A,t));if(d.length>0){const t=o(l,"object");-1!==t&&(u(l,t,1),h(d,"Object"))}if(l.length>0){if(l.length>2){const t=a(l);c+=`one of type ${s(l,", ")}, or ${t}`}else c+=2===l.length?`one of type ${l[0]} or ${l[1]}`:`of type ${l[0]}`;(d.length>0||A.length>0)&&(c+=" or ")}if(d.length>0){if(d.length>2){const t=a(d);c+=`an instance of ${s(d,", ")}, or ${t}`}else c+=`an instance of ${d[0]}`,2===d.length&&(c+=` or ${d[1]}`);A.length>0&&(c+=" or ")}if(A.length>0)if(A.length>2){const t=a(A);c+=`one of ${s(A,", ")}, or ${t}`}else 2===A.length?c+=`one of ${A[0]} or ${A[1]}`:(w(A[0])!==A[0]&&(c+="an "),c+=`${A[0]}`);if(null==r)c+=`. Received ${r}`;else if("function"==typeof r&&r.name)c+=`. Received function ${r.name}`;else if("object"==typeof r)r.constructor&&r.constructor.name?c+=`. Received an instance of ${r.constructor.name}`:c+=`. Received ${C().inspect(r,{depth:-1})}`;else{let t=C().inspect(r,{colors:!1});t.length>25&&(t=`${B(t,0,25)}...`),c+=`. Received type ${typeof r} (${t})`}return c},V=TypeError,E.set(Y,U),p[Y]=(T=V,S=Y,function(...t){const e=Error.stackTraceLimit;Error.stackTraceLimit=0;const i=new T;Error.stackTraceLimit=e;const n=function(t,e,i){const n=E.get(t);return void 0===Q&&(Q=r(183)),Q("function"==typeof n),Q(n.length<=e.length,`Code: ${t}; The provided arguments length (${e.length}) does not match the required ones (${n.length}).`),d(n,i,e)}(S,t,i);return l(i,"message",{value:n,enumerable:!1,writable:!0,configurable:!0}),l(i,"toString",{value(){return`${this.name} [${S}]: ${this.message}`},enumerable:!1,writable:!0,configurable:!0}),D(i,T.name,S),i.code=S,i})},335:t=>{const e=/\u001b\[\d\d?m/g;t.exports={customInspectSymbol:Symbol.for("nodejs.util.inspect.custom"),isError:t=>t instanceof Error,join:Array.prototype.join.call.bind(Array.prototype.join),removeColors:t=>String.prototype.replace.call(t,e,"")}},63:(t,e,r)=>{const{getConstructorName:i}=r(891);function n(t,...e){for(const r of e){const e=globalThis[r];if(e&&t instanceof e)return!0}for(;t;){if("object"!=typeof t)return!1;if(e.indexOf(i(t))>=0)return!0;t=Object.getPrototypeOf(t)}return!1}function o(t){return e=>{if(!n(e,t.name))return!1;try{t.prototype.valueOf.call(e)}catch{return!1}return!0}}"object"!=typeof globalThis&&(Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__);const s=o(String),a=o(Number),h=o(Boolean),u=o(BigInt),c=o(Symbol);t.exports={isAsyncFunction:t=>"function"==typeof t&&Function.prototype.toString.call(t).startsWith("async"),isGeneratorFunction:t=>"function"==typeof t&&Function.prototype.toString.call(t).match(/^(async\s+)?function *\*/),isAnyArrayBuffer:t=>n(t,"ArrayBuffer","SharedArrayBuffer"),isArrayBuffer:t=>n(t,"ArrayBuffer"),isArgumentsObject:t=>!1,isBoxedPrimitive:t=>a(t)||s(t)||h(t)||u(t)||c(t),isDataView:t=>n(t,"DataView"),isExternal:t=>"object"==typeof t&&Object.isFrozen(t)&&null==Object.getPrototypeOf(t),isMap(t){if(!n(t,"Map"))return!1;try{t.has()}catch{return!1}return!0},isMapIterator:t=>"[object Map Iterator]"===Object.prototype.toString.call(Object.getPrototypeOf(t)),isModuleNamespaceObject:t=>t&&"object"==typeof t&&"Module"===t[Symbol.toStringTag],isNativeError:t=>t instanceof Error&&n(t,"Error","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","AggregateError"),isPromise:t=>n(t,"Promise"),isSet(t){if(!n(t,"Set"))return!1;try{t.has()}catch{return!1}return!0},isSetIterator:t=>"[object Set Iterator]"===Object.prototype.toString.call(Object.getPrototypeOf(t)),isWeakMap:t=>n(t,"WeakMap"),isWeakSet:t=>n(t,"WeakSet"),isRegExp:t=>n(t,"RegExp"),isDate(t){if(n(t,"Date"))try{return Date.prototype.getTime.call(t),!0}catch{}return!1},isTypedArray:t=>n(t,"Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"),isStringObject:s,isNumberObject:a,isBooleanObject:h,isBigIntObject:u,isSymbolObject:c}},356:(t,e,r)=>{const{hideStackFrames:i,codes:{ERR_INVALID_ARG_TYPE:n}}=r(101);e.validateObject=i(((t,e,{nullable:r=!1}={})=>{if(!r&&null===t||Array.isArray(t)||"object"!=typeof t)throw new n(e,"Object",t)}))},765:t=>{const e=(t,e)=>{class r{constructor(e){this._iterator=t(e)}next(){return e(this._iterator)}[Symbol.iterator](){return this}}return Object.setPrototypeOf(r.prototype,null),Object.freeze(r.prototype),Object.freeze(r),r};function r(t,e){return Function.prototype.call.bind(t.prototype.__lookupGetter__(e))}function i(t){return Function.prototype.call.bind(t)}const n=(t,e)=>{Array.prototype.forEach.call(Reflect.ownKeys(t),(r=>{Reflect.getOwnPropertyDescriptor(e,r)||Reflect.defineProperty(e,r,Reflect.getOwnPropertyDescriptor(t,r))}))},o=(t,r)=>{if(Symbol.iterator in t.prototype){const n=new t;let o;Array.prototype.forEach.call(Reflect.ownKeys(t.prototype),(s=>{if(!Reflect.getOwnPropertyDescriptor(r.prototype,s)){const a=Reflect.getOwnPropertyDescriptor(t.prototype,s);if("function"==typeof a.value&&0===a.value.length&&Symbol.iterator in(Function.prototype.call.call(a.value,n)||{})){const t=i(a.value);null==o&&(o=i(t(n).next));const r=e(t,o);a.value=function(){return new r(this)}}Reflect.defineProperty(r.prototype,s,a)}}))}else n(t.prototype,r.prototype);return n(t,r),Object.setPrototypeOf(r.prototype,null),Object.freeze(r.prototype),Object.freeze(r),r},s=Function.prototype.call.bind(String.prototype[Symbol.iterator]),a=Reflect.getPrototypeOf(s(""));t.exports={makeSafe:o,internalBinding(t){if("config"===t)return{hasIntl:!1};throw new Error(`unknown module: "${t}"`)},Array,ArrayIsArray:Array.isArray,ArrayPrototypeFilter:Function.prototype.call.bind(Array.prototype.filter),ArrayPrototypeForEach:Function.prototype.call.bind(Array.prototype.forEach),ArrayPrototypeIncludes:Function.prototype.call.bind(Array.prototype.includes),ArrayPrototypeIndexOf:Function.prototype.call.bind(Array.prototype.indexOf),ArrayPrototypeJoin:Function.prototype.call.bind(Array.prototype.join),ArrayPrototypePop:Function.prototype.call.bind(Array.prototype.pop),ArrayPrototypePush:Function.prototype.call.bind(Array.prototype.push),ArrayPrototypePushApply:Function.apply.bind(Array.prototype.push),ArrayPrototypeSort:Function.prototype.call.bind(Array.prototype.sort),ArrayPrototypeSplice:Function.prototype.call.bind(Array.prototype.slice),ArrayPrototypeUnshift:Function.prototype.call.bind(Array.prototype.unshift),BigIntPrototypeValueOf:Function.prototype.call.bind(BigInt.prototype.valueOf),BooleanPrototypeValueOf:Function.prototype.call.bind(Boolean.prototype.valueOf),DatePrototypeGetTime:Function.prototype.call.bind(Date.prototype.getTime),DatePrototypeToISOString:Function.prototype.call.bind(Date.prototype.toISOString),DatePrototypeToString:Function.prototype.call.bind(Date.prototype.toString),ErrorCaptureStackTrace:function(t){const e=(new Error).stack;t.stack=e.replace(/.*\n.*/,"$1")},ErrorPrototypeToString:Function.prototype.call.bind(Error.prototype.toString),FunctionPrototypeCall:Function.prototype.call.bind(Function.prototype.call),FunctionPrototypeToString:Function.prototype.call.bind(Function.prototype.toString),JSONStringify:JSON.stringify,MapPrototypeGetSize:r(Map,"size"),MapPrototypeEntries:Function.prototype.call.bind(Map.prototype.entries),MathFloor:Math.floor,MathMax:Math.max,MathMin:Math.min,MathRound:Math.round,MathSqrt:Math.sqrt,Number,NumberIsNaN:Number.isNaN,NumberParseFloat:Number.parseFloat,NumberParseInt:Number.parseInt,NumberPrototypeValueOf:Function.prototype.call.bind(Number.prototype.valueOf),Object,ObjectAssign:Object.assign,ObjectCreate:Object.create,ObjectDefineProperty:Object.defineProperty,ObjectGetOwnPropertyDescriptor:Object.getOwnPropertyDescriptor,ObjectGetOwnPropertyNames:Object.getOwnPropertyNames,ObjectGetOwnPropertySymbols:Object.getOwnPropertySymbols,ObjectGetPrototypeOf:Object.getPrototypeOf,ObjectIs:Object.is,ObjectKeys:Object.keys,ObjectPrototypeHasOwnProperty:Function.prototype.call.bind(Object.prototype.hasOwnProperty),ObjectPrototypePropertyIsEnumerable:Function.prototype.call.bind(Object.prototype.propertyIsEnumerable),ObjectSeal:Object.seal,ObjectSetPrototypeOf:Object.setPrototypeOf,ReflectApply:Reflect.apply,ReflectOwnKeys:Reflect.ownKeys,RegExp,RegExpPrototypeTest:Function.prototype.call.bind(RegExp.prototype.test),RegExpPrototypeToString:Function.prototype.call.bind(RegExp.prototype.toString),SafeStringIterator:e(s,Function.prototype.call.bind(a.next)),SafeMap:o(Map,class extends Map{constructor(t){super(t)}}),SafeSet:o(Set,class extends Set{constructor(t){super(t)}}),SetPrototypeGetSize:r(Set,"size"),SetPrototypeValues:Function.prototype.call.bind(Set.prototype.values),String,StringPrototypeCharCodeAt:Function.prototype.call.bind(String.prototype.charCodeAt),StringPrototypeCodePointAt:Function.prototype.call.bind(String.prototype.codePointAt),StringPrototypeEndsWith:Function.prototype.call.bind(String.prototype.endsWith),StringPrototypeIncludes:Function.prototype.call.bind(String.prototype.includes),StringPrototypeNormalize:Function.prototype.call.bind(String.prototype.normalize),StringPrototypePadEnd:Function.prototype.call.bind(String.prototype.padEnd),StringPrototypePadStart:Function.prototype.call.bind(String.prototype.padStart),StringPrototypeRepeat:Function.prototype.call.bind(String.prototype.repeat),StringPrototypeReplace:Function.prototype.call.bind(String.prototype.replace),StringPrototypeSlice:Function.prototype.call.bind(String.prototype.slice),StringPrototypeSplit:Function.prototype.call.bind(String.prototype.split),StringPrototypeToLowerCase:Function.prototype.call.bind(String.prototype.toLowerCase),StringPrototypeTrim:Function.prototype.call.bind(String.prototype.trim),StringPrototypeValueOf:Function.prototype.call.bind(String.prototype.valueOf),SymbolPrototypeToString:Function.prototype.call.bind(Symbol.prototype.toString),SymbolPrototypeValueOf:Function.prototype.call.bind(Symbol.prototype.valueOf),SymbolIterator:Symbol.iterator,SymbolFor:Symbol.for,SymbolToStringTag:Symbol.toStringTag,TypedArrayPrototypeGetLength:t=>t.constructor.prototype.__lookupGetter__("length").call(t),Uint8Array,uncurryThis:i}},161:t=>{const e=new WeakMap;class r{constructor(t,r){const i=new Proxy(t,r);return e.set(i,[t,r]),i}static getProxyDetails(t,r=!0){const i=e.get(t);if(i)return r?i:i[0]}}t.exports={getProxyDetails:r.getProxyDetails.bind(r),Proxy:r}},891:(t,e,r)=>{const i=r(161),n=Symbol("kPending"),o=Symbol("kRejected");t.exports={getOwnNonIndexProperties:function(t,e=2){const r=Object.getOwnPropertyDescriptors(t),i=[];for(const[t,n]of Object.entries(r))if(!/^(0|[1-9][0-9]*)$/.test(t)||parseInt(t,10)>=2**32-1){if(2===e&&!n.enumerable)continue;i.push(t)}for(const r of Object.getOwnPropertySymbols(t)){const n=Object.getOwnPropertyDescriptor(t,r);(2!==e||n.enumerable)&&i.push(r)}return i},getPromiseDetails:()=>[n,void 0],getProxyDetails:i.getProxyDetails,Proxy:i.Proxy,kPending:n,kRejected:o,previewEntries:t=>[[],!1],getConstructorName(t){if(!t||"object"!=typeof t)throw new Error("Invalid object");if(t.constructor&&t.constructor.name)return t.constructor.name;const e=Object.prototype.toString.call(t).match(/^\[object ([^\]]+)\]/);return e?e[1]:"Object"},getExternalValue:()=>BigInt(0),propertyFilter:{ALL_PROPERTIES:0,ONLY_ENUMERABLE:2}}}},e={};function r(i){var n=e[i];if(void 0!==n)return n.exports;var o=e[i]={exports:{}};return t[i](o,o.exports,r),o.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r(48)})()},155:t=>{var e,r,i=t.exports={};function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(e===setTimeout)return setTimeout(t,0);if((e===n||!e)&&setTimeout)return e=setTimeout,setTimeout(t,0);try{return e(t,0)}catch(r){try{return e.call(null,t,0)}catch(r){return e.call(this,t,0)}}}!function(){try{e="function"==typeof setTimeout?setTimeout:n}catch(t){e=n}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var a,h=[],u=!1,c=-1;function l(){u&&a&&(u=!1,a.length?h=a.concat(h):c=-1,h.length&&d())}function d(){if(!u){var t=s(l);u=!0;for(var e=h.length;e;){for(a=h,h=[];++c1)for(var r=1;r{"use strict";var e={};function r(t,r,i){i||(i=Error);var n=function(t){var e,i;function n(e,i,n){return t.call(this,function(t,e,i){return"string"==typeof r?r:r(t,e,i)}(e,i,n))||this}return i=t,(e=n).prototype=Object.create(i.prototype),e.prototype.constructor=e,e.__proto__=i,n}(i);n.prototype.name=i.name,n.prototype.code=t,e[t]=n}function i(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map((function(t){return String(t)})),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",(function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'}),TypeError),r("ERR_INVALID_ARG_TYPE",(function(t,e,r){var n,o,s,a,h;if("string"==typeof e&&(o="not ",e.substr(0,o.length)===o)?(n="must not be",e=e.replace(/^not /,"")):n="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t," argument"))s="The ".concat(t," ").concat(n," ").concat(i(e,"type"));else{var u=("number"!=typeof h&&(h=0),h+".".length>(a=t).length||-1===a.indexOf(".",h)?"argument":"property");s='The "'.concat(t,'" ').concat(u," ").concat(n," ").concat(i(e,"type"))}return s+". Received type ".concat(typeof r)}),TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",(function(t){return"The "+t+" method is not implemented"})),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",(function(t){return"Cannot call "+t+" after a stream was destroyed"})),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",(function(t){return"Unknown encoding: "+t}),TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.q=e},753:(t,e,r)=>{"use strict";var i=r(155),n=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=c;var o=r(481),s=r(229);r(717)(c,o);for(var a=n(s.prototype),h=0;h{"use strict";t.exports=n;var i=r(605);function n(t){if(!(this instanceof n))return new n(t);i.call(this,t)}r(717)(n,i),n.prototype._transform=function(t,e,r){r(null,t)}},481:(t,e,r)=>{"use strict";var i,n=r(155);t.exports=I,I.ReadableState=Q,r(187).EventEmitter;var o,s=function(t,e){return t.listeners(e).length},a=r(503),h=r(764).Buffer,u=r.g.Uint8Array||function(){},c=r(669);o=c&&c.debuglog?c.debuglog("stream"):function(){};var l,d,f,A=r(327),g=r(195),M=r(457).getHighWaterMark,B=r(281).q,w=B.ERR_INVALID_ARG_TYPE,E=B.ERR_STREAM_PUSH_AFTER_EOF,p=B.ERR_METHOD_NOT_IMPLEMENTED,m=B.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r(717)(I,a);var y=g.errorOrDestroy,b=["error","close","destroy","pause","resume"];function Q(t,e,n){i=i||r(753),t=t||{},"boolean"!=typeof n&&(n=e instanceof i),this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=M(this,t,"readableHighWaterMark",n),this.buffer=new A,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(l||(l=r(553).s),this.decoder=new l(t.encoding),this.encoding=t.encoding)}function I(t){if(i=i||r(753),!(this instanceof I))return new I(t);var e=this instanceof i;this._readableState=new Q(t,this,e),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),a.call(this)}function C(t,e,r,i,n){o("readableAddChunk",e);var s,a=t._readableState;if(null===e)a.reading=!1,function(t,e){if(o("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?G(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,R(t)))}}(t,a);else if(n||(s=function(t,e){var r,i;return i=e,h.isBuffer(i)||i instanceof u||"string"==typeof e||void 0===e||t.objectMode||(r=new w("chunk",["string","Buffer","Uint8Array"],e)),r}(a,e)),s)y(t,s);else if(a.objectMode||e&&e.length>0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===h.prototype||(e=function(t){return h.from(t)}(e)),i)a.endEmitted?y(t,new m):D(t,a,e,!0);else if(a.ended)y(t,new E);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?D(t,a,e,!1):Y(t,a)):D(t,a,e,!1)}else i||(a.reading=!1,Y(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=N?t=N:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function G(t){var e=t._readableState;o("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(o("emitReadable",e.flowing),e.emittedReadable=!0,n.nextTick(R,t))}function R(t){var e=t._readableState;o("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,k(t)}function Y(t,e){e.readingMore||(e.readingMore=!0,n.nextTick(U,t,e))}function U(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function T(t){o("readable nexttick read 0"),t.read(0)}function S(t,e){o("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),k(t),e.flowing&&!e.reading&&t.read(0)}function k(t){var e=t._readableState;for(o("flow",e.flowing);e.flowing&&null!==t.read(););}function F(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function L(t){var e=t._readableState;o("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,n.nextTick(j,e,t))}function j(t,e){if(o("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function Z(t,e){for(var r=0,i=t.length;r=e.highWaterMark:e.length>0)||e.ended))return o("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?L(this):G(this),null;if(0===(t=v(t,e))&&e.ended)return 0===e.length&&L(this),null;var i,n=e.needReadable;return o("need readable",n),(0===e.length||e.length-t0?F(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&L(this)),null!==i&&this.emit("data",i),i},I.prototype._read=function(t){y(this,new p("_read()"))},I.prototype.pipe=function(t,e){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=t;break;case 1:i.pipes=[i.pipes,t];break;default:i.pipes.push(t)}i.pipesCount+=1,o("pipe count=%d opts=%j",i.pipesCount,e);var a=e&&!1===e.end||t===n.stdout||t===n.stderr?g:h;function h(){o("onend"),t.end()}i.endEmitted?n.nextTick(a):r.once("end",a),t.on("unpipe",(function e(n,s){o("onunpipe"),n===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,o("cleanup"),t.removeListener("close",f),t.removeListener("finish",A),t.removeListener("drain",u),t.removeListener("error",d),t.removeListener("unpipe",e),r.removeListener("end",h),r.removeListener("end",g),r.removeListener("data",l),c=!0,!i.awaitDrain||t._writableState&&!t._writableState.needDrain||u())}));var u=function(t){return function(){var e=t._readableState;o("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,k(t))}}(r);t.on("drain",u);var c=!1;function l(e){o("ondata");var n=t.write(e);o("dest.write",n),!1===n&&((1===i.pipesCount&&i.pipes===t||i.pipesCount>1&&-1!==Z(i.pipes,t))&&!c&&(o("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function d(e){o("onerror",e),g(),t.removeListener("error",d),0===s(t,"error")&&y(t,e)}function f(){t.removeListener("finish",A),g()}function A(){o("onfinish"),t.removeListener("close",f),g()}function g(){o("unpipe"),r.unpipe(t)}return r.on("data",l),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events.error?Array.isArray(t._events.error)?t._events.error.unshift(r):t._events.error=[r,t._events.error]:t.on(e,r)}(t,"error",d),t.once("close",f),t.once("finish",A),t.emit("pipe",r),i.flowing||(o("pipe resume"),r.resume()),t},I.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o0,!1!==i.flowing&&this.resume()):"readable"===t&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,o("on readable",i.length,i.reading),i.length?G(this):i.reading||n.nextTick(T,this))),r},I.prototype.addListener=I.prototype.on,I.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&n.nextTick(V,this),r},I.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||n.nextTick(V,this),e},I.prototype.resume=function(){var t=this._readableState;return t.flowing||(o("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,n.nextTick(S,t,e))}(this,t)),t.paused=!1,this},I.prototype.pause=function(){return o("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(o("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},I.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;for(var n in t.on("end",(function(){if(o("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on("data",(function(n){o("wrapped data"),r.decoder&&(n=r.decoder.write(n)),r.objectMode&&null==n||(r.objectMode||n&&n.length)&&(e.push(n)||(i=!0,t.pause()))})),t)void 0===this[n]&&"function"==typeof t[n]&&(this[n]=function(e){return function(){return t[e].apply(t,arguments)}}(n));for(var s=0;s{"use strict";t.exports=c;var i=r(281).q,n=i.ERR_METHOD_NOT_IMPLEMENTED,o=i.ERR_MULTIPLE_CALLBACK,s=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=i.ERR_TRANSFORM_WITH_LENGTH_0,h=r(753);function u(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(null===i)return this.emit("error",new o);r.writechunk=null,r.writecb=null,null!=e&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";var i,n=r(155);function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var i=t.entry;for(t.entry=null;i;){var n=i.callback;e.pendingcb--,n(void 0),i=i.next}e.corkedRequestsFree.next=t}(e,t)}}t.exports=I,I.WritableState=Q;var s,a={deprecate:r(927)},h=r(503),u=r(764).Buffer,c=r.g.Uint8Array||function(){},l=r(195),d=r(457).getHighWaterMark,f=r(281).q,A=f.ERR_INVALID_ARG_TYPE,g=f.ERR_METHOD_NOT_IMPLEMENTED,M=f.ERR_MULTIPLE_CALLBACK,B=f.ERR_STREAM_CANNOT_PIPE,w=f.ERR_STREAM_DESTROYED,E=f.ERR_STREAM_NULL_VALUES,p=f.ERR_STREAM_WRITE_AFTER_END,m=f.ERR_UNKNOWN_ENCODING,y=l.errorOrDestroy;function b(){}function Q(t,e,s){i=i||r(753),t=t||{},"boolean"!=typeof s&&(s=e instanceof i),this.objectMode=!!t.objectMode,s&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=d(this,t,"writableHighWaterMark",s),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===t.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,i=r.sync,o=r.writecb;if("function"!=typeof o)throw new M;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,i,o){--e.pendingcb,r?(n.nextTick(o,i),n.nextTick(R,t,e),t._writableState.errorEmitted=!0,y(t,i)):(o(i),t._writableState.errorEmitted=!0,y(t,i),R(t,e))}(t,r,i,e,o);else{var s=v(r)||t.destroyed;s||r.corked||r.bufferProcessing||!r.bufferedRequest||N(t,r),i?n.nextTick(D,t,r,s,o):D(t,r,s,o)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function I(t){var e=this instanceof(i=i||r(753));if(!e&&!s.call(I,this))return new I(t);this._writableState=new Q(t,this,e),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),h.call(this)}function C(t,e,r,i,n,o,s){e.writelen=i,e.writecb=s,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new w("write")):r?t._writev(n,e.onwrite):t._write(n,o,e.onwrite),e.sync=!1}function D(t,e,r,i){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,i(),R(t,e)}function N(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var i=e.bufferedRequestCount,n=new Array(i),s=e.corkedRequestsFree;s.entry=r;for(var a=0,h=!0;r;)n[a]=r,r.isBuf||(h=!1),r=r.next,a+=1;n.allBuffers=h,C(t,e,!0,e.length,n,"",s.finish),e.pendingcb++,e.lastBufferedRequest=null,s.next?(e.corkedRequestsFree=s.next,s.next=null):e.corkedRequestsFree=new o(e),e.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,c=r.encoding,l=r.callback;if(C(t,e,!1,e.objectMode?1:u.length,u,c,l),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function v(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function G(t,e){t._final((function(r){e.pendingcb--,r&&y(t,r),e.prefinished=!0,t.emit("prefinish"),R(t,e)}))}function R(t,e){var r=v(e);if(r&&(function(t,e){e.prefinished||e.finalCalled||("function"!=typeof t._final||e.destroyed?(e.prefinished=!0,t.emit("prefinish")):(e.pendingcb++,e.finalCalled=!0,n.nextTick(G,t,e)))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"),e.autoDestroy))){var i=t._readableState;(!i||i.autoDestroy&&i.endEmitted)&&t.destroy()}return r}r(717)(I,h),Q.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(Q.prototype,"buffer",{get:a.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(s=Function.prototype[Symbol.hasInstance],Object.defineProperty(I,Symbol.hasInstance,{value:function(t){return!!s.call(this,t)||this===I&&t&&t._writableState instanceof Q}})):s=function(t){return t instanceof this},I.prototype.pipe=function(){y(this,new B)},I.prototype.write=function(t,e,r){var i,o=this._writableState,s=!1,a=!o.objectMode&&(i=t,u.isBuffer(i)||i instanceof c);return a&&!u.isBuffer(t)&&(t=function(t){return u.from(t)}(t)),"function"==typeof e&&(r=e,e=null),a?e="buffer":e||(e=o.defaultEncoding),"function"!=typeof r&&(r=b),o.ending?function(t,e){var r=new p;y(t,r),n.nextTick(e,r)}(this,r):(a||function(t,e,r,i){var o;return null===r?o=new E:"string"==typeof r||e.objectMode||(o=new A("chunk",["string","Buffer"],r)),!o||(y(t,o),n.nextTick(i,o),!1)}(this,o,t,r))&&(o.pendingcb++,s=function(t,e,r,i,n,o){if(!r){var s=function(t,e,r){return t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=u.from(e,r)),e}(e,i,n);i!==s&&(r=!0,n="buffer",i=s)}var a=e.objectMode?1:i.length;e.length+=a;var h=e.length-1))throw new m(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(I.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(I.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),I.prototype._write=function(t,e,r){r(new g("_write()"))},I.prototype._writev=null,I.prototype.end=function(t,e,r){var i=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||function(t,e,r){e.ending=!0,R(t,e),r&&(e.finished?n.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,i,r),this},Object.defineProperty(I.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(I.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),I.prototype.destroy=l.destroy,I.prototype._undestroy=l.undestroy,I.prototype._destroy=function(t,e){e(t)}},850:(t,e,r)=>{"use strict";var i,n=r(155);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(610),a=Symbol("lastResolve"),h=Symbol("lastReject"),u=Symbol("error"),c=Symbol("ended"),l=Symbol("lastPromise"),d=Symbol("handlePromise"),f=Symbol("stream");function A(t,e){return{value:t,done:e}}function g(t){var e=t[a];if(null!==e){var r=t[f].read();null!==r&&(t[l]=null,t[a]=null,t[h]=null,e(A(r,!1)))}}function M(t){n.nextTick(g,t)}var B=Object.getPrototypeOf((function(){})),w=Object.setPrototypeOf((o(i={get stream(){return this[f]},next:function(){var t=this,e=this[u];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(A(void 0,!0));if(this[f].destroyed)return new Promise((function(e,r){n.nextTick((function(){t[u]?r(t[u]):e(A(void 0,!0))}))}));var r,i=this[l];if(i)r=new Promise(function(t,e){return function(r,i){t.then((function(){e[c]?r(A(void 0,!0)):e[d](r,i)}),i)}}(i,this));else{var o=this[f].read();if(null!==o)return Promise.resolve(A(o,!1));r=new Promise(this[d])}return this[l]=r,r}},Symbol.asyncIterator,(function(){return this})),o(i,"return",(function(){var t=this;return new Promise((function(e,r){t[f].destroy(null,(function(t){t?r(t):e(A(void 0,!0))}))}))})),i),B);t.exports=function(t){var e,r=Object.create(w,(o(e={},f,{value:t,writable:!0}),o(e,a,{value:null,writable:!0}),o(e,h,{value:null,writable:!0}),o(e,u,{value:null,writable:!0}),o(e,c,{value:t._readableState.endEmitted,writable:!0}),o(e,d,{value:function(t,e){var i=r[f].read();i?(r[l]=null,r[a]=null,r[h]=null,t(A(i,!1))):(r[a]=t,r[h]=e)},writable:!0}),e));return r[l]=null,s(t,(function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[h];return null!==e&&(r[l]=null,r[a]=null,r[h]=null,e(t)),void(r[u]=t)}var i=r[a];null!==i&&(r[l]=null,r[a]=null,r[h]=null,i(A(void 0,!0))),r[c]=!0})),t.on("readable",M.bind(null,r)),r}},327:(t,e,r)=>{"use strict";function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var o=r(764).Buffer,s=r(669).inspect,a=s&&s.custom||"inspect";t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}var e;return(e=[{key:"push",value:function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return o.alloc(0);for(var e,r,i,n=o.allocUnsafe(t>>>0),s=this.head,a=0;s;)e=s.data,r=n,i=a,o.prototype.copy.call(e,r,i),a+=s.data.length,s=s.next;return n}},{key:"consume",value:function(t,e){var r;return tn.length?n.length:t;if(o===n.length?i+=n:i+=n.slice(0,t),0==(t-=o)){o===n.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(o));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(t){var e=o.allocUnsafe(t),r=this.head,i=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var n=r.data,s=t>n.length?n.length:t;if(n.copy(e,e.length-t,0,s),0==(t-=s)){s===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(s));break}++i}return this.length-=i,e}},{key:a,value:function(t,e){return s(this,function(t){for(var e=1;e{"use strict";var i=r(155);function n(t,e){s(t,e),o(t)}function o(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,h=this._writableState&&this._writableState.destroyed;return a||h?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,i.nextTick(s,this,t)):i.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!e&&t?r._writableState?r._writableState.errorEmitted?i.nextTick(o,r):(r._writableState.errorEmitted=!0,i.nextTick(n,r,t)):i.nextTick(n,r,t):e?(i.nextTick(o,r),e(t)):i.nextTick(o,r)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}}},610:(t,e,r)=>{"use strict";var i=r(281).q.ERR_STREAM_PREMATURE_CLOSE;function n(){}t.exports=function t(e,r,o){if("function"==typeof r)return t(e,null,r);r||(r={}),o=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{t.exports=function(){throw new Error("Readable.from is not available in the browser")}},946:(t,e,r)=>{"use strict";var i,n=r(281).q,o=n.ERR_MISSING_ARGS,s=n.ERR_STREAM_DESTROYED;function a(t){if(t)throw t}function h(t,e,n,o){o=function(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}(o);var a=!1;t.on("close",(function(){a=!0})),void 0===i&&(i=r(610)),i(t,{readable:e,writable:n},(function(t){if(t)return o(t);a=!0,o()}));var h=!1;return function(e){if(!a&&!h)return h=!0,function(t){return t.setHeader&&"function"==typeof t.abort}(t)?t.abort():"function"==typeof t.destroy?t.destroy():void o(e||new s("pipe"))}}function u(t){t()}function c(t,e){return t.pipe(e)}function l(t){return t.length?"function"!=typeof t[t.length-1]?a:t.pop():a}t.exports=function(){for(var t=arguments.length,e=new Array(t),r=0;r0,(function(t){i||(i=t),t&&s.forEach(u),o||(s.forEach(u),n(i))}))}));return e.reduce(c)}},457:(t,e,r)=>{"use strict";var i=r(281).q.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,n){var o=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,n,r);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new i(n?r:"highWaterMark",o);return Math.floor(o)}return t.objectMode?16:16384}}},503:(t,e,r)=>{t.exports=r(187).EventEmitter},509:(t,e,r)=>{var i=r(764),n=i.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function s(t,e,r){return n(t,e,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=i:(o(i,e),e.Buffer=s),s.prototype=Object.create(n.prototype),o(n,s),s.from=function(t,e,r){if("number"==typeof t)throw new TypeError("Argument must not be a number");return n(t,e,r)},s.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=n(t);return void 0!==e?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i},s.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n(t)},s.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},830:(t,e,r)=>{t.exports=n;var i=r(187).EventEmitter;function n(){i.call(this)}r(717)(n,i),n.Readable=r(481),n.Writable=r(229),n.Duplex=r(753),n.Transform=r(605),n.PassThrough=r(725),n.finished=r(610),n.pipeline=r(946),n.Stream=n,n.prototype.pipe=function(t,e){var r=this;function n(e){t.writable&&!1===t.write(e)&&r.pause&&r.pause()}function o(){r.readable&&r.resume&&r.resume()}r.on("data",n),t.on("drain",o),t._isStdio||e&&!1===e.end||(r.on("end",a),r.on("close",h));var s=!1;function a(){s||(s=!0,t.end())}function h(){s||(s=!0,"function"==typeof t.destroy&&t.destroy())}function u(t){if(c(),0===i.listenerCount(this,"error"))throw t}function c(){r.removeListener("data",n),t.removeListener("drain",o),r.removeListener("end",a),r.removeListener("close",h),r.removeListener("error",u),t.removeListener("error",u),r.removeListener("end",c),r.removeListener("close",c),t.removeListener("close",c)}return r.on("error",u),t.on("error",u),r.on("end",c),r.on("close",c),t.on("close",c),t.emit("pipe",r),t}},553:(t,e,r)=>{"use strict";var i=r(509).Buffer,n=i.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(i.isEncoding===n||!n(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=h,this.end=u,e=4;break;case"utf8":this.fillLast=a,e=4;break;case"base64":this.text=c,this.end=l,e=3;break;default:return this.write=d,void(this.end=f)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(e)}function s(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function h(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function u(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function c(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function l(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function d(t){return t.toString(this.encoding)}function f(t){return t&&t.length?this.write(t):""}e.s=o,o.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(2===n?n=0:t.lastNeed=n-3),n):0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},927:(t,e,r)=>{function i(t){try{if(!r.g.localStorage)return!1}catch(t){return!1}var e=r.g.localStorage[t];return null!=e&&"true"===String(e).toLowerCase()}t.exports=function(t,e){if(i("noDeprecation"))return t;var r=!1;return function(){if(!r){if(i("throwDeprecation"))throw new Error(e);i("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}}},669:t=>{"use strict";t.exports=n},937:t=>{"use strict";if(void 0===i){var e=new Error("Cannot find module 'undefined'");throw e.code="MODULE_NOT_FOUND",e}t.exports=i}},e={};function r(i){var n=e[i];if(void 0!==n)return n.exports;var o=e[i]={exports:{}};return t[i].call(o.exports,o,o.exports,r),o.exports}r.d=(t,e)=>{for(var i in e)r.o(e,i)&&!r.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var o={};return(()=>{"use strict";r.r(o),r.d(o,{BigNumber:()=>t.BigNumber,Commented:()=>t.Commented,Decoder:()=>t.Decoder,Diagnose:()=>t.Diagnose,Encoder:()=>t.Encoder,Map:()=>t.Map,Simple:()=>t.Simple,Tagged:()=>t.Tagged,comment:()=>t.UI,decode:()=>t.Jx,decodeAll:()=>t.fI,decodeAllSync:()=>t.cc,decodeFirst:()=>t.h8,decodeFirstSync:()=>t.$u,diagnose:()=>t.M,encode:()=>t.cv,encodeAsync:()=>t.WR,encodeCanonical:()=>t.N2,encodeOne:()=>t.TG,hasBigInt:()=>t.vc,leveldb:()=>t.ww});var t=r(141)})(),o})())},1027:(t,e,r)=>{var i=r(9509).Buffer,n=r(2830).Transform,o=r(2553).s;function s(t){n.call(this),this.hashMode="string"==typeof t,this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}r(5717)(s,n),s.prototype.update=function(t,e,r){"string"==typeof t&&(t=i.from(t,e));var n=this._update(t);return this.hashMode?this:(r&&(n=this._toString(n,r)),n)},s.prototype.setAutoPadding=function(){},s.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},s.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},s.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},s.prototype._transform=function(t,e,r){var i;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(t){i=t}finally{r(i)}},s.prototype._flush=function(t){var e;try{this.push(this.__final())}catch(t){e=t}t(e)},s.prototype._finalOrDigest=function(t){var e=this.__final()||i.alloc(0);return t&&(e=this._toString(e,t,!0)),e},s.prototype._toString=function(t,e,r){if(this._decoder||(this._decoder=new o(e),this._encoding=e),this._encoding!==e)throw new Error("can't switch encodings");var i=this._decoder.write(t);return r&&(i+=this._decoder.end()),i},t.exports=s},6393:(t,e,r)=>{var i=r(8764).Buffer,n=r(6266),o=r(6426);t.exports=function(t){return new a(t)};var s={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};function a(t){this.curveType=s[t],this.curveType||(this.curveType={name:t}),this.curve=new n.ec(this.curveType.name),this.keys=void 0}function h(t,e,r){Array.isArray(t)||(t=t.toArray());var n=new i(t);if(r&&n.length=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,c=r;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,d=Math.min(u,e.length-1),f=Math.max(0,u-t.length+1);f<=d;f++){var A=u-f|0;c+=(s=(n=0|t.words[A])*(o=0|e.words[f])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|c}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?c[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=l[t],f=d[t];r="";var A=this.clone();for(A.negative=0;!A.isZero();){var g=A.modn(f).toString(t);r=(A=A.idivn(f)).isZero()?g+r:c[u-g.length]+g+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),c=this.clone();if(h){for(a=0;!c.isZero();a++)s=c.andln(255),c.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],A=8191&f,g=f>>>13,M=0|s[2],B=8191&M,w=M>>>13,E=0|s[3],p=8191&E,m=E>>>13,y=0|s[4],b=8191&y,Q=y>>>13,I=0|s[5],C=8191&I,D=I>>>13,N=0|s[6],v=8191&N,G=N>>>13,R=0|s[7],Y=8191&R,U=R>>>13,V=0|s[8],T=8191&V,S=V>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,H=j>>>13,z=0|a[1],x=8191&z,O=z>>>13,W=0|a[2],J=8191&W,X=W>>>13,K=0|a[3],P=8191&K,_=K>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ct=0|a[8],lt=8191&ct,dt=ct>>>13,ft=0|a[9],At=8191&ft,gt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(l,Z))|0)+((8191&(n=(n=Math.imul(l,H))+Math.imul(d,Z)|0))<<13)|0;u=((o=Math.imul(d,H))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(A,Z),n=(n=Math.imul(A,H))+Math.imul(g,Z)|0,o=Math.imul(g,H);var Bt=(u+(i=i+Math.imul(l,x)|0)|0)+((8191&(n=(n=n+Math.imul(l,O)|0)+Math.imul(d,x)|0))<<13)|0;u=((o=o+Math.imul(d,O)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(B,Z),n=(n=Math.imul(B,H))+Math.imul(w,Z)|0,o=Math.imul(w,H),i=i+Math.imul(A,x)|0,n=(n=n+Math.imul(A,O)|0)+Math.imul(g,x)|0,o=o+Math.imul(g,O)|0;var wt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(d,J)|0))<<13)|0;u=((o=o+Math.imul(d,X)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,H))+Math.imul(m,Z)|0,o=Math.imul(m,H),i=i+Math.imul(B,x)|0,n=(n=n+Math.imul(B,O)|0)+Math.imul(w,x)|0,o=o+Math.imul(w,O)|0,i=i+Math.imul(A,J)|0,n=(n=n+Math.imul(A,X)|0)+Math.imul(g,J)|0,o=o+Math.imul(g,X)|0;var Et=(u+(i=i+Math.imul(l,P)|0)|0)+((8191&(n=(n=n+Math.imul(l,_)|0)+Math.imul(d,P)|0))<<13)|0;u=((o=o+Math.imul(d,_)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,H))+Math.imul(Q,Z)|0,o=Math.imul(Q,H),i=i+Math.imul(p,x)|0,n=(n=n+Math.imul(p,O)|0)+Math.imul(m,x)|0,o=o+Math.imul(m,O)|0,i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,X)|0)+Math.imul(w,J)|0,o=o+Math.imul(w,X)|0,i=i+Math.imul(A,P)|0,n=(n=n+Math.imul(A,_)|0)+Math.imul(g,P)|0,o=o+Math.imul(g,_)|0;var pt=(u+(i=i+Math.imul(l,$)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(d,$)|0))<<13)|0;u=((o=o+Math.imul(d,tt)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,H))+Math.imul(D,Z)|0,o=Math.imul(D,H),i=i+Math.imul(b,x)|0,n=(n=n+Math.imul(b,O)|0)+Math.imul(Q,x)|0,o=o+Math.imul(Q,O)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0,i=i+Math.imul(B,P)|0,n=(n=n+Math.imul(B,_)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,_)|0,i=i+Math.imul(A,$)|0,n=(n=n+Math.imul(A,tt)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,tt)|0;var mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(d,rt)|0))<<13)|0;u=((o=o+Math.imul(d,it)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(v,Z),n=(n=Math.imul(v,H))+Math.imul(G,Z)|0,o=Math.imul(G,H),i=i+Math.imul(C,x)|0,n=(n=n+Math.imul(C,O)|0)+Math.imul(D,x)|0,o=o+Math.imul(D,O)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(Q,J)|0,o=o+Math.imul(Q,X)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,_)|0)+Math.imul(m,P)|0,o=o+Math.imul(m,_)|0,i=i+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(A,rt)|0,n=(n=n+Math.imul(A,it)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0;var yt=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(d,ot)|0))<<13)|0;u=((o=o+Math.imul(d,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Y,Z),n=(n=Math.imul(Y,H))+Math.imul(U,Z)|0,o=Math.imul(U,H),i=i+Math.imul(v,x)|0,n=(n=n+Math.imul(v,O)|0)+Math.imul(G,x)|0,o=o+Math.imul(G,O)|0,i=i+Math.imul(C,J)|0,n=(n=n+Math.imul(C,X)|0)+Math.imul(D,J)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,_)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,_)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0,i=i+Math.imul(B,rt)|0,n=(n=n+Math.imul(B,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(A,ot)|0,n=(n=n+Math.imul(A,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var bt=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(d,ht)|0))<<13)|0;u=((o=o+Math.imul(d,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,H))+Math.imul(S,Z)|0,o=Math.imul(S,H),i=i+Math.imul(Y,x)|0,n=(n=n+Math.imul(Y,O)|0)+Math.imul(U,x)|0,o=o+Math.imul(U,O)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(G,J)|0,o=o+Math.imul(G,X)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,_)|0)+Math.imul(D,P)|0,o=o+Math.imul(D,_)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0,i=i+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(A,ht)|0,n=(n=n+Math.imul(A,ut)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,ut)|0;var Qt=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,dt)|0)+Math.imul(d,lt)|0))<<13)|0;u=((o=o+Math.imul(d,dt)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,H))+Math.imul(L,Z)|0,o=Math.imul(L,H),i=i+Math.imul(T,x)|0,n=(n=n+Math.imul(T,O)|0)+Math.imul(S,x)|0,o=o+Math.imul(S,O)|0,i=i+Math.imul(Y,J)|0,n=(n=n+Math.imul(Y,X)|0)+Math.imul(U,J)|0,o=o+Math.imul(U,X)|0,i=i+Math.imul(v,P)|0,n=(n=n+Math.imul(v,_)|0)+Math.imul(G,P)|0,o=o+Math.imul(G,_)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0,i=i+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(A,lt)|0,n=(n=n+Math.imul(A,dt)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,dt)|0;var It=(u+(i=i+Math.imul(l,At)|0)|0)+((8191&(n=(n=n+Math.imul(l,gt)|0)+Math.imul(d,At)|0))<<13)|0;u=((o=o+Math.imul(d,gt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,x),n=(n=Math.imul(F,O))+Math.imul(L,x)|0,o=Math.imul(L,O),i=i+Math.imul(T,J)|0,n=(n=n+Math.imul(T,X)|0)+Math.imul(S,J)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(Y,P)|0,n=(n=n+Math.imul(Y,_)|0)+Math.imul(U,P)|0,o=o+Math.imul(U,_)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(G,$)|0,o=o+Math.imul(G,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(D,rt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0,i=i+Math.imul(B,lt)|0,n=(n=n+Math.imul(B,dt)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,dt)|0;var Ct=(u+(i=i+Math.imul(A,At)|0)|0)+((8191&(n=(n=n+Math.imul(A,gt)|0)+Math.imul(g,At)|0))<<13)|0;u=((o=o+Math.imul(g,gt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,X))+Math.imul(L,J)|0,o=Math.imul(L,X),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,_)|0)+Math.imul(S,P)|0,o=o+Math.imul(S,_)|0,i=i+Math.imul(Y,$)|0,n=(n=n+Math.imul(Y,tt)|0)+Math.imul(U,$)|0,o=o+Math.imul(U,tt)|0,i=i+Math.imul(v,rt)|0,n=(n=n+Math.imul(v,it)|0)+Math.imul(G,rt)|0,o=o+Math.imul(G,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,dt)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,dt)|0;var Dt=(u+(i=i+Math.imul(B,At)|0)|0)+((8191&(n=(n=n+Math.imul(B,gt)|0)+Math.imul(w,At)|0))<<13)|0;u=((o=o+Math.imul(w,gt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,_))+Math.imul(L,P)|0,o=Math.imul(L,_),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(S,$)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(Y,rt)|0,n=(n=n+Math.imul(Y,it)|0)+Math.imul(U,rt)|0,o=o+Math.imul(U,it)|0,i=i+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,st)|0)+Math.imul(G,ot)|0,o=o+Math.imul(G,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,dt)|0)+Math.imul(Q,lt)|0,o=o+Math.imul(Q,dt)|0;var Nt=(u+(i=i+Math.imul(p,At)|0)|0)+((8191&(n=(n=n+Math.imul(p,gt)|0)+Math.imul(m,At)|0))<<13)|0;u=((o=o+Math.imul(m,gt)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(Y,ot)|0,n=(n=n+Math.imul(Y,st)|0)+Math.imul(U,ot)|0,o=o+Math.imul(U,st)|0,i=i+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(G,ht)|0,o=o+Math.imul(G,ut)|0,i=i+Math.imul(C,lt)|0,n=(n=n+Math.imul(C,dt)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,dt)|0;var vt=(u+(i=i+Math.imul(b,At)|0)|0)+((8191&(n=(n=n+Math.imul(b,gt)|0)+Math.imul(Q,At)|0))<<13)|0;u=((o=o+Math.imul(Q,gt)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(Y,ht)|0,n=(n=n+Math.imul(Y,ut)|0)+Math.imul(U,ht)|0,o=o+Math.imul(U,ut)|0,i=i+Math.imul(v,lt)|0,n=(n=n+Math.imul(v,dt)|0)+Math.imul(G,lt)|0,o=o+Math.imul(G,dt)|0;var Gt=(u+(i=i+Math.imul(C,At)|0)|0)+((8191&(n=(n=n+Math.imul(C,gt)|0)+Math.imul(D,At)|0))<<13)|0;u=((o=o+Math.imul(D,gt)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,ut)|0,i=i+Math.imul(Y,lt)|0,n=(n=n+Math.imul(Y,dt)|0)+Math.imul(U,lt)|0,o=o+Math.imul(U,dt)|0;var Rt=(u+(i=i+Math.imul(v,At)|0)|0)+((8191&(n=(n=n+Math.imul(v,gt)|0)+Math.imul(G,At)|0))<<13)|0;u=((o=o+Math.imul(G,gt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,lt)|0,n=(n=n+Math.imul(T,dt)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,dt)|0;var Yt=(u+(i=i+Math.imul(Y,At)|0)|0)+((8191&(n=(n=n+Math.imul(Y,gt)|0)+Math.imul(U,At)|0))<<13)|0;u=((o=o+Math.imul(U,gt)|0)+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(F,lt),n=(n=Math.imul(F,dt))+Math.imul(L,lt)|0,o=Math.imul(L,dt);var Ut=(u+(i=i+Math.imul(T,At)|0)|0)+((8191&(n=(n=n+Math.imul(T,gt)|0)+Math.imul(S,At)|0))<<13)|0;u=((o=o+Math.imul(S,gt)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863;var Vt=(u+(i=Math.imul(F,At))|0)+((8191&(n=(n=Math.imul(F,gt))+Math.imul(L,At)|0))<<13)|0;return u=((o=Math.imul(L,gt))+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,h[0]=Mt,h[1]=Bt,h[2]=wt,h[3]=Et,h[4]=pt,h[5]=mt,h[6]=yt,h[7]=bt,h[8]=Qt,h[9]=It,h[10]=Ct,h[11]=Dt,h[12]=Nt,h[13]=vt,h[14]=Gt,h[15]=Rt,h[16]=Yt,h[17]=Ut,h[18]=Vt,0!==u&&(h[19]=u,r.length++),r};function g(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(A=f),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?A(this,t,e):r<63?f(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):g(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==c||u>=n);u--){var l=0|this.words[u];this.words[u]=c<<26-o|l>>>o,c=l&a}return h&&0!==c&&(h.words[h.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var d=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(n,d,l);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=d)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var c=r.clone(),l=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(c),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var A=0,g=1;0==(r.words[0]&g)&&A<26;++A,g<<=1);if(A>0)for(r.iushrn(A);A-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(c),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,c=1;0==(e.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,d=1;0==(r.words[0]&d)&&l<26;++l,d<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var B={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function E(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function p(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function m(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function Q(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(E,w),E.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},E.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(B[t])return B[t];var e;if("k256"===t)e=new E;else if("p224"===t)e=new p;else if("p192"===t)e=new m;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return B[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);0!==this.pow(c,u).cmp(h);)c.redIAdd(h);for(var l=this.pow(c,n),d=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),A=s;0!==f.cmp(a);){for(var g=f,M=0;0!==g.cmp(a);M++)g=g.redSqr();i(M=0;i--){for(var u=e.words[i],c=h-1;c>=0;c--){var l=u>>c&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4==++a||0===i&&0===c)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new Q(t)},n(Q,b),Q.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},Q.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},Q.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},Q.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},Q.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},3482:(t,e,r)=>{"use strict";var i=r(5717),n=r(2318),o=r(9785),s=r(9072),a=r(1027);function h(t){a.call(this,"digest"),this._hash=t}i(h,a),h.prototype._update=function(t){this._hash.update(t)},h.prototype._final=function(){return this._hash.digest()},t.exports=function(t){return"md5"===(t=t.toLowerCase())?new n:"rmd160"===t||"ripemd160"===t?new o:new h(s(t))}},8028:(t,e,r)=>{var i=r(2318);t.exports=function(t){return(new i).update(t).digest()}},8355:(t,e,r)=>{"use strict";var i=r(5717),n=r(1031),o=r(1027),s=r(9509).Buffer,a=r(8028),h=r(9785),u=r(9072),c=s.alloc(128);function l(t,e){o.call(this,"digest"),"string"==typeof e&&(e=s.from(e));var r="sha512"===t||"sha384"===t?128:64;this._alg=t,this._key=e,e.length>r?e=("rmd160"===t?new h:u(t)).update(e).digest():e.length{"use strict";var i=r(5717),n=r(9509).Buffer,o=r(1027),s=n.alloc(128),a=64;function h(t,e){o.call(this,"digest"),"string"==typeof e&&(e=n.from(e)),this._alg=t,this._key=e,e.length>a?e=t(e):e.length{"use strict";e.randomBytes=e.rng=e.pseudoRandomBytes=e.prng=r(1798),e.createHash=e.Hash=r(3482),e.createHmac=e.Hmac=r(8355);var i=r(6042),n=Object.keys(i),o=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(n);e.getHashes=function(){return o};var s=r(5632);e.pbkdf2=s.pbkdf2,e.pbkdf2Sync=s.pbkdf2Sync;var a=r(3614);e.Cipher=a.Cipher,e.createCipher=a.createCipher,e.Cipheriv=a.Cipheriv,e.createCipheriv=a.createCipheriv,e.Decipher=a.Decipher,e.createDecipher=a.createDecipher,e.Decipheriv=a.Decipheriv,e.createDecipheriv=a.createDecipheriv,e.getCiphers=a.getCiphers,e.listCiphers=a.listCiphers;var h=r(2607);e.DiffieHellmanGroup=h.DiffieHellmanGroup,e.createDiffieHellmanGroup=h.createDiffieHellmanGroup,e.getDiffieHellman=h.getDiffieHellman,e.createDiffieHellman=h.createDiffieHellman,e.DiffieHellman=h.DiffieHellman;var u=r(4743);e.createSign=u.createSign,e.Sign=u.Sign,e.createVerify=u.createVerify,e.Verify=u.Verify,e.createECDH=r(6393);var c=r(7900);e.publicEncrypt=c.publicEncrypt,e.privateEncrypt=c.privateEncrypt,e.publicDecrypt=c.publicDecrypt,e.privateDecrypt=c.privateDecrypt;var l=r(7963);e.randomFill=l.randomFill,e.randomFillSync=l.randomFillSync,e.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))},e.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},4289:(t,e,r)=>{"use strict";var i=r(2215),n="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),o=Object.prototype.toString,s=Array.prototype.concat,a=Object.defineProperty,h=a&&function(){var t={};try{for(var e in a(t,"x",{enumerable:!1,value:t}),t)return!1;return t.x===t}catch(t){return!1}}(),u=function(t,e,r,i){var n;(!(e in t)||"function"==typeof(n=i)&&"[object Function]"===o.call(n)&&i())&&(h?a(t,e,{configurable:!0,enumerable:!1,value:r,writable:!0}):t[e]=r)},c=function(t,e){var r=arguments.length>2?arguments[2]:{},o=i(e);n&&(o=s.call(o,Object.getOwnPropertySymbols(e)));for(var a=0;a{"use strict";e.utils=r(1278),e.Cipher=r(5756),e.DES=r(778),e.CBC=r(9051),e.EDE=r(651)},9051:(t,e,r)=>{"use strict";var i=r(9746),n=r(5717),o={};function s(t){i.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var e=0;e{"use strict";var i=r(9746);function n(t){this.options=t,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}t.exports=n,n.prototype._init=function(){},n.prototype.update=function(t){return 0===t.length?[]:"decrypt"===this.type?this._updateDecrypt(t):this._updateEncrypt(t)},n.prototype._buffer=function(t,e){for(var r=Math.min(this.buffer.length-this.bufferOff,t.length-e),i=0;i0;i--)e+=this._buffer(t,e),r+=this._flushBuffer(n,r);return e+=this._buffer(t,e),n},n.prototype.final=function(t){var e,r;return t&&(e=this.update(t)),r="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),e?e.concat(r):r},n.prototype._pad=function(t,e){if(0===e)return!1;for(;e{"use strict";var i=r(9746),n=r(5717),o=r(1278),s=r(5756);function a(){this.tmp=new Array(2),this.keys=null}function h(t){s.call(this,t);var e=new a;this._desState=e,this.deriveKeys(e,t.key)}n(h,s),t.exports=h,h.create=function(t){return new h(t)};var u=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];h.prototype.deriveKeys=function(t,e){t.keys=new Array(32),i.equal(e.length,this.blockSize,"Invalid key length");var r=o.readUInt32BE(e,0),n=o.readUInt32BE(e,4);o.pc1(r,n,t.tmp,0),r=t.tmp[0],n=t.tmp[1];for(var s=0;s>>1];r=o.r28shl(r,a),n=o.r28shl(n,a),o.pc2(r,n,t.keys,s)}},h.prototype._update=function(t,e,r,i){var n=this._desState,s=o.readUInt32BE(t,e),a=o.readUInt32BE(t,e+4);o.ip(s,a,n.tmp,0),s=n.tmp[0],a=n.tmp[1],"encrypt"===this.type?this._encrypt(n,s,a,n.tmp,0):this._decrypt(n,s,a,n.tmp,0),s=n.tmp[0],a=n.tmp[1],o.writeUInt32BE(r,s,i),o.writeUInt32BE(r,a,i+4)},h.prototype._pad=function(t,e){for(var r=t.length-e,i=e;i>>0,s=d}o.rip(a,s,i,n)},h.prototype._decrypt=function(t,e,r,i,n){for(var s=r,a=e,h=t.keys.length-2;h>=0;h-=2){var u=t.keys[h],c=t.keys[h+1];o.expand(s,t.tmp,0),u^=t.tmp[0],c^=t.tmp[1];var l=o.substitute(u,c),d=s;s=(a^o.permute(l))>>>0,a=d}o.rip(s,a,i,n)}},651:(t,e,r)=>{"use strict";var i=r(9746),n=r(5717),o=r(5756),s=r(778);function a(t,e){i.equal(e.length,24,"Invalid key length");var r=e.slice(0,8),n=e.slice(8,16),o=e.slice(16,24);this.ciphers="encrypt"===t?[s.create({type:"encrypt",key:r}),s.create({type:"decrypt",key:n}),s.create({type:"encrypt",key:o})]:[s.create({type:"decrypt",key:o}),s.create({type:"encrypt",key:n}),s.create({type:"decrypt",key:r})]}function h(t){o.call(this,t);var e=new a(this.type,this.options.key);this._edeState=e}n(h,o),t.exports=h,h.create=function(t){return new h(t)},h.prototype._update=function(t,e,r,i){var n=this._edeState;n.ciphers[0]._update(t,e,r,i),n.ciphers[1]._update(r,i,r,i),n.ciphers[2]._update(r,i,r,i)},h.prototype._pad=s.prototype._pad,h.prototype._unpad=s.prototype._unpad},1278:(t,e)=>{"use strict";e.readUInt32BE=function(t,e){return(t[0+e]<<24|t[1+e]<<16|t[2+e]<<8|t[3+e])>>>0},e.writeUInt32BE=function(t,e,r){t[0+r]=e>>>24,t[1+r]=e>>>16&255,t[2+r]=e>>>8&255,t[3+r]=255&e},e.ip=function(t,e,r,i){for(var n=0,o=0,s=6;s>=0;s-=2){for(var a=0;a<=24;a+=8)n<<=1,n|=e>>>a+s&1;for(a=0;a<=24;a+=8)n<<=1,n|=t>>>a+s&1}for(s=6;s>=0;s-=2){for(a=1;a<=25;a+=8)o<<=1,o|=e>>>a+s&1;for(a=1;a<=25;a+=8)o<<=1,o|=t>>>a+s&1}r[i+0]=n>>>0,r[i+1]=o>>>0},e.rip=function(t,e,r,i){for(var n=0,o=0,s=0;s<4;s++)for(var a=24;a>=0;a-=8)n<<=1,n|=e>>>a+s&1,n<<=1,n|=t>>>a+s&1;for(s=4;s<8;s++)for(a=24;a>=0;a-=8)o<<=1,o|=e>>>a+s&1,o<<=1,o|=t>>>a+s&1;r[i+0]=n>>>0,r[i+1]=o>>>0},e.pc1=function(t,e,r,i){for(var n=0,o=0,s=7;s>=5;s--){for(var a=0;a<=24;a+=8)n<<=1,n|=e>>a+s&1;for(a=0;a<=24;a+=8)n<<=1,n|=t>>a+s&1}for(a=0;a<=24;a+=8)n<<=1,n|=e>>a+s&1;for(s=1;s<=3;s++){for(a=0;a<=24;a+=8)o<<=1,o|=e>>a+s&1;for(a=0;a<=24;a+=8)o<<=1,o|=t>>a+s&1}for(a=0;a<=24;a+=8)o<<=1,o|=t>>a+s&1;r[i+0]=n>>>0,r[i+1]=o>>>0},e.r28shl=function(t,e){return t<>>28-e};var r=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];e.pc2=function(t,e,i,n){for(var o=0,s=0,a=r.length>>>1,h=0;h>>r[h]&1;for(h=a;h>>r[h]&1;i[n+0]=o>>>0,i[n+1]=s>>>0},e.expand=function(t,e,r){var i=0,n=0;i=(1&t)<<5|t>>>27;for(var o=23;o>=15;o-=4)i<<=6,i|=t>>>o&63;for(o=11;o>=3;o-=4)n|=t>>>o&63,n<<=6;n|=(31&t)<<1|t>>>31,e[r+0]=i>>>0,e[r+1]=n>>>0};var i=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];e.substitute=function(t,e){for(var r=0,n=0;n<4;n++)r<<=4,r|=i[64*n+(t>>>18-6*n&63)];for(n=0;n<4;n++)r<<=4,r|=i[256+64*n+(e>>>18-6*n&63)];return r>>>0};var n=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];e.permute=function(t){for(var e=0,r=0;r>>n[r]&1;return e>>>0},e.padSplit=function(t,e,r){for(var i=t.toString(2);i.length{var i=r(8764).Buffer,n=r(3590),o=r(1930),s=r(7426),a={binary:!0,hex:!0,base64:!0};e.DiffieHellmanGroup=e.createDiffieHellmanGroup=e.getDiffieHellman=function(t){var e=new i(o[t].prime,"hex"),r=new i(o[t].gen,"hex");return new s(e,r)},e.createDiffieHellman=e.DiffieHellman=function t(e,r,o,h){return i.isBuffer(r)||void 0===a[r]?t(e,"binary",r,o):(r=r||"binary",h=h||"binary",o=o||new i([2]),i.isBuffer(o)||(o=new i(o,h)),"number"==typeof e?new s(n(e,o),o,!0):(i.isBuffer(e)||(e=new i(e,r)),new s(e,o,!0)))}},7426:(t,e,r)=>{var i=r(8764).Buffer,n=r(3620),o=new(r(3047)),s=new n(24),a=new n(11),h=new n(10),u=new n(3),c=new n(7),l=r(3590),d=r(1798);function f(t,e){return e=e||"utf8",i.isBuffer(t)||(t=new i(t,e)),this._pub=new n(t),this}function A(t,e){return e=e||"utf8",i.isBuffer(t)||(t=new i(t,e)),this._priv=new n(t),this}t.exports=M;var g={};function M(t,e,r){this.setGenerator(e),this.__prime=new n(t),this._prime=n.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=f,this.setPrivateKey=A):this._primeCode=8}function B(t,e){var r=new i(t.toArray());return e?r.toString(e):r}Object.defineProperty(M.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(t,e){var r=e.toString("hex"),i=[r,t.toString(16)].join("_");if(i in g)return g[i];var n,d=0;if(t.isEven()||!l.simpleSieve||!l.fermatTest(t)||!o.test(t))return d+=1,d+="02"===r||"05"===r?8:4,g[i]=d,d;switch(o.test(t.shrn(1))||(d+=2),r){case"02":t.mod(s).cmp(a)&&(d+=8);break;case"05":(n=t.mod(h)).cmp(u)&&n.cmp(c)&&(d+=8);break;default:d+=4}return g[i]=d,d}(this.__prime,this.__gen)),this._primeCode}}),M.prototype.generateKeys=function(){return this._priv||(this._priv=new n(d(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},M.prototype.computeSecret=function(t){var e=(t=(t=new n(t)).toRed(this._prime)).redPow(this._priv).fromRed(),r=new i(e.toArray()),o=this.getPrime();if(r.length{var i=r(1798);t.exports=w,w.simpleSieve=M,w.fermatTest=B;var n=r(3620),o=new n(24),s=new(r(3047)),a=new n(1),h=new n(2),u=new n(5),c=(new n(16),new n(8),new n(10)),l=new n(3),d=(new n(7),new n(11)),f=new n(4),A=(new n(12),null);function g(){if(null!==A)return A;var t=[];t[0]=2;for(var e=1,r=3;r<1048576;r+=2){for(var i=Math.ceil(Math.sqrt(r)),n=0;nt;)r.ishrn(1);if(r.isEven()&&r.iadd(a),r.testn(1)||r.iadd(h),e.cmp(h)){if(!e.cmp(u))for(;r.mod(c).cmp(l);)r.iadd(f)}else for(;r.mod(o).cmp(d);)r.iadd(f);if(M(A=r.shrn(1))&&M(r)&&B(A)&&B(r)&&s.test(A)&&s.test(r))return r}}},1930:t=>{"use strict";t.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},3620:function(t,e,r){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(7748).Buffer}catch(t){}function a(t,e){var r=t.charCodeAt(e);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,c=r;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,d=Math.min(u,e.length-1),f=Math.max(0,u-t.length+1);f<=d;f++){var A=u-f|0;c+=(s=(n=0|t.words[A])*(o=0|e.words[f])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|c}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?c[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=l[t],f=d[t];r="";var A=this.clone();for(A.negative=0;!A.isZero();){var g=A.modn(f).toString(t);r=(A=A.idivn(f)).isZero()?g+r:c[u-g.length]+g+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),c=this.clone();if(h){for(a=0;!c.isZero();a++)s=c.andln(255),c.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],A=8191&f,g=f>>>13,M=0|s[2],B=8191&M,w=M>>>13,E=0|s[3],p=8191&E,m=E>>>13,y=0|s[4],b=8191&y,Q=y>>>13,I=0|s[5],C=8191&I,D=I>>>13,N=0|s[6],v=8191&N,G=N>>>13,R=0|s[7],Y=8191&R,U=R>>>13,V=0|s[8],T=8191&V,S=V>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,H=j>>>13,z=0|a[1],x=8191&z,O=z>>>13,W=0|a[2],J=8191&W,X=W>>>13,K=0|a[3],P=8191&K,_=K>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ct=0|a[8],lt=8191&ct,dt=ct>>>13,ft=0|a[9],At=8191&ft,gt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(l,Z))|0)+((8191&(n=(n=Math.imul(l,H))+Math.imul(d,Z)|0))<<13)|0;u=((o=Math.imul(d,H))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(A,Z),n=(n=Math.imul(A,H))+Math.imul(g,Z)|0,o=Math.imul(g,H);var Bt=(u+(i=i+Math.imul(l,x)|0)|0)+((8191&(n=(n=n+Math.imul(l,O)|0)+Math.imul(d,x)|0))<<13)|0;u=((o=o+Math.imul(d,O)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(B,Z),n=(n=Math.imul(B,H))+Math.imul(w,Z)|0,o=Math.imul(w,H),i=i+Math.imul(A,x)|0,n=(n=n+Math.imul(A,O)|0)+Math.imul(g,x)|0,o=o+Math.imul(g,O)|0;var wt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(d,J)|0))<<13)|0;u=((o=o+Math.imul(d,X)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,H))+Math.imul(m,Z)|0,o=Math.imul(m,H),i=i+Math.imul(B,x)|0,n=(n=n+Math.imul(B,O)|0)+Math.imul(w,x)|0,o=o+Math.imul(w,O)|0,i=i+Math.imul(A,J)|0,n=(n=n+Math.imul(A,X)|0)+Math.imul(g,J)|0,o=o+Math.imul(g,X)|0;var Et=(u+(i=i+Math.imul(l,P)|0)|0)+((8191&(n=(n=n+Math.imul(l,_)|0)+Math.imul(d,P)|0))<<13)|0;u=((o=o+Math.imul(d,_)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,H))+Math.imul(Q,Z)|0,o=Math.imul(Q,H),i=i+Math.imul(p,x)|0,n=(n=n+Math.imul(p,O)|0)+Math.imul(m,x)|0,o=o+Math.imul(m,O)|0,i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,X)|0)+Math.imul(w,J)|0,o=o+Math.imul(w,X)|0,i=i+Math.imul(A,P)|0,n=(n=n+Math.imul(A,_)|0)+Math.imul(g,P)|0,o=o+Math.imul(g,_)|0;var pt=(u+(i=i+Math.imul(l,$)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(d,$)|0))<<13)|0;u=((o=o+Math.imul(d,tt)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,H))+Math.imul(D,Z)|0,o=Math.imul(D,H),i=i+Math.imul(b,x)|0,n=(n=n+Math.imul(b,O)|0)+Math.imul(Q,x)|0,o=o+Math.imul(Q,O)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0,i=i+Math.imul(B,P)|0,n=(n=n+Math.imul(B,_)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,_)|0,i=i+Math.imul(A,$)|0,n=(n=n+Math.imul(A,tt)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,tt)|0;var mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(d,rt)|0))<<13)|0;u=((o=o+Math.imul(d,it)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(v,Z),n=(n=Math.imul(v,H))+Math.imul(G,Z)|0,o=Math.imul(G,H),i=i+Math.imul(C,x)|0,n=(n=n+Math.imul(C,O)|0)+Math.imul(D,x)|0,o=o+Math.imul(D,O)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(Q,J)|0,o=o+Math.imul(Q,X)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,_)|0)+Math.imul(m,P)|0,o=o+Math.imul(m,_)|0,i=i+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(A,rt)|0,n=(n=n+Math.imul(A,it)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0;var yt=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(d,ot)|0))<<13)|0;u=((o=o+Math.imul(d,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Y,Z),n=(n=Math.imul(Y,H))+Math.imul(U,Z)|0,o=Math.imul(U,H),i=i+Math.imul(v,x)|0,n=(n=n+Math.imul(v,O)|0)+Math.imul(G,x)|0,o=o+Math.imul(G,O)|0,i=i+Math.imul(C,J)|0,n=(n=n+Math.imul(C,X)|0)+Math.imul(D,J)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,_)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,_)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0,i=i+Math.imul(B,rt)|0,n=(n=n+Math.imul(B,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(A,ot)|0,n=(n=n+Math.imul(A,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var bt=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(d,ht)|0))<<13)|0;u=((o=o+Math.imul(d,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,H))+Math.imul(S,Z)|0,o=Math.imul(S,H),i=i+Math.imul(Y,x)|0,n=(n=n+Math.imul(Y,O)|0)+Math.imul(U,x)|0,o=o+Math.imul(U,O)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(G,J)|0,o=o+Math.imul(G,X)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,_)|0)+Math.imul(D,P)|0,o=o+Math.imul(D,_)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0,i=i+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(A,ht)|0,n=(n=n+Math.imul(A,ut)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,ut)|0;var Qt=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,dt)|0)+Math.imul(d,lt)|0))<<13)|0;u=((o=o+Math.imul(d,dt)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,H))+Math.imul(L,Z)|0,o=Math.imul(L,H),i=i+Math.imul(T,x)|0,n=(n=n+Math.imul(T,O)|0)+Math.imul(S,x)|0,o=o+Math.imul(S,O)|0,i=i+Math.imul(Y,J)|0,n=(n=n+Math.imul(Y,X)|0)+Math.imul(U,J)|0,o=o+Math.imul(U,X)|0,i=i+Math.imul(v,P)|0,n=(n=n+Math.imul(v,_)|0)+Math.imul(G,P)|0,o=o+Math.imul(G,_)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0,i=i+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(A,lt)|0,n=(n=n+Math.imul(A,dt)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,dt)|0;var It=(u+(i=i+Math.imul(l,At)|0)|0)+((8191&(n=(n=n+Math.imul(l,gt)|0)+Math.imul(d,At)|0))<<13)|0;u=((o=o+Math.imul(d,gt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,x),n=(n=Math.imul(F,O))+Math.imul(L,x)|0,o=Math.imul(L,O),i=i+Math.imul(T,J)|0,n=(n=n+Math.imul(T,X)|0)+Math.imul(S,J)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(Y,P)|0,n=(n=n+Math.imul(Y,_)|0)+Math.imul(U,P)|0,o=o+Math.imul(U,_)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(G,$)|0,o=o+Math.imul(G,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(D,rt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0,i=i+Math.imul(B,lt)|0,n=(n=n+Math.imul(B,dt)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,dt)|0;var Ct=(u+(i=i+Math.imul(A,At)|0)|0)+((8191&(n=(n=n+Math.imul(A,gt)|0)+Math.imul(g,At)|0))<<13)|0;u=((o=o+Math.imul(g,gt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,X))+Math.imul(L,J)|0,o=Math.imul(L,X),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,_)|0)+Math.imul(S,P)|0,o=o+Math.imul(S,_)|0,i=i+Math.imul(Y,$)|0,n=(n=n+Math.imul(Y,tt)|0)+Math.imul(U,$)|0,o=o+Math.imul(U,tt)|0,i=i+Math.imul(v,rt)|0,n=(n=n+Math.imul(v,it)|0)+Math.imul(G,rt)|0,o=o+Math.imul(G,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,dt)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,dt)|0;var Dt=(u+(i=i+Math.imul(B,At)|0)|0)+((8191&(n=(n=n+Math.imul(B,gt)|0)+Math.imul(w,At)|0))<<13)|0;u=((o=o+Math.imul(w,gt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,_))+Math.imul(L,P)|0,o=Math.imul(L,_),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(S,$)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(Y,rt)|0,n=(n=n+Math.imul(Y,it)|0)+Math.imul(U,rt)|0,o=o+Math.imul(U,it)|0,i=i+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,st)|0)+Math.imul(G,ot)|0,o=o+Math.imul(G,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,dt)|0)+Math.imul(Q,lt)|0,o=o+Math.imul(Q,dt)|0;var Nt=(u+(i=i+Math.imul(p,At)|0)|0)+((8191&(n=(n=n+Math.imul(p,gt)|0)+Math.imul(m,At)|0))<<13)|0;u=((o=o+Math.imul(m,gt)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(Y,ot)|0,n=(n=n+Math.imul(Y,st)|0)+Math.imul(U,ot)|0,o=o+Math.imul(U,st)|0,i=i+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(G,ht)|0,o=o+Math.imul(G,ut)|0,i=i+Math.imul(C,lt)|0,n=(n=n+Math.imul(C,dt)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,dt)|0;var vt=(u+(i=i+Math.imul(b,At)|0)|0)+((8191&(n=(n=n+Math.imul(b,gt)|0)+Math.imul(Q,At)|0))<<13)|0;u=((o=o+Math.imul(Q,gt)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(Y,ht)|0,n=(n=n+Math.imul(Y,ut)|0)+Math.imul(U,ht)|0,o=o+Math.imul(U,ut)|0,i=i+Math.imul(v,lt)|0,n=(n=n+Math.imul(v,dt)|0)+Math.imul(G,lt)|0,o=o+Math.imul(G,dt)|0;var Gt=(u+(i=i+Math.imul(C,At)|0)|0)+((8191&(n=(n=n+Math.imul(C,gt)|0)+Math.imul(D,At)|0))<<13)|0;u=((o=o+Math.imul(D,gt)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,ut)|0,i=i+Math.imul(Y,lt)|0,n=(n=n+Math.imul(Y,dt)|0)+Math.imul(U,lt)|0,o=o+Math.imul(U,dt)|0;var Rt=(u+(i=i+Math.imul(v,At)|0)|0)+((8191&(n=(n=n+Math.imul(v,gt)|0)+Math.imul(G,At)|0))<<13)|0;u=((o=o+Math.imul(G,gt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,lt)|0,n=(n=n+Math.imul(T,dt)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,dt)|0;var Yt=(u+(i=i+Math.imul(Y,At)|0)|0)+((8191&(n=(n=n+Math.imul(Y,gt)|0)+Math.imul(U,At)|0))<<13)|0;u=((o=o+Math.imul(U,gt)|0)+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(F,lt),n=(n=Math.imul(F,dt))+Math.imul(L,lt)|0,o=Math.imul(L,dt);var Ut=(u+(i=i+Math.imul(T,At)|0)|0)+((8191&(n=(n=n+Math.imul(T,gt)|0)+Math.imul(S,At)|0))<<13)|0;u=((o=o+Math.imul(S,gt)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863;var Vt=(u+(i=Math.imul(F,At))|0)+((8191&(n=(n=Math.imul(F,gt))+Math.imul(L,At)|0))<<13)|0;return u=((o=Math.imul(L,gt))+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,h[0]=Mt,h[1]=Bt,h[2]=wt,h[3]=Et,h[4]=pt,h[5]=mt,h[6]=yt,h[7]=bt,h[8]=Qt,h[9]=It,h[10]=Ct,h[11]=Dt,h[12]=Nt,h[13]=vt,h[14]=Gt,h[15]=Rt,h[16]=Yt,h[17]=Ut,h[18]=Vt,0!==u&&(h[19]=u,r.length++),r};function g(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(A=f),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?A(this,t,e):r<63?f(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):g(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==c||u>=n);u--){var l=0|this.words[u];this.words[u]=c<<26-o|l>>>o,c=l&a}return h&&0!==c&&(h.words[h.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var d=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(n,d,l);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=d)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var c=r.clone(),l=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(c),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var A=0,g=1;0==(r.words[0]&g)&&A<26;++A,g<<=1);if(A>0)for(r.iushrn(A);A-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(c),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,c=1;0==(e.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,d=1;0==(r.words[0]&d)&&l<26;++l,d<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var B={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function E(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function p(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function m(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function Q(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(E,w),E.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},E.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(B[t])return B[t];var e;if("k256"===t)e=new E;else if("p224"===t)e=new p;else if("p192"===t)e=new m;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return B[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);0!==this.pow(c,u).cmp(h);)c.redIAdd(h);for(var l=this.pow(c,n),d=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),A=s;0!==f.cmp(a);){for(var g=f,M=0;0!==g.cmp(a);M++)g=g.redSqr();i(M=0;i--){for(var u=e.words[i],c=h-1;c>=0;c--){var l=u>>c&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4==++a||0===i&&0===c)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new Q(t)},n(Q,b),Q.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},Q.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},Q.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},Q.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},Q.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},6266:(t,e,r)=>{"use strict";var i=e;i.version=r(7519).i8,i.utils=r(953),i.rand=r(9931),i.curve=r(8254),i.curves=r(5427),i.ec=r(7954),i.eddsa=r(5980)},4918:(t,e,r)=>{"use strict";var i=r(3785),n=r(953),o=n.getNAF,s=n.getJSF,a=n.assert;function h(t,e){this.type=t,this.p=new i(e.p,16),this.red=e.prime?i.red(e.prime):i.mont(this.p),this.zero=new i(0).toRed(this.red),this.one=new i(1).toRed(this.red),this.two=new i(2).toRed(this.red),this.n=e.n&&new i(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function u(t,e){this.curve=t,this.type=e,this.precomputed=null}t.exports=h,h.prototype.point=function(){throw new Error("Not implemented")},h.prototype.validate=function(){throw new Error("Not implemented")},h.prototype._fixedNafMul=function(t,e){a(t.precomputed);var r=t._getDoubles(),i=o(e,1,this._bitLength),n=(1<=s;c--)h=(h<<1)+i[c];u.push(h)}for(var l=this.jpoint(null,null,null),d=this.jpoint(null,null,null),f=n;f>0;f--){for(s=0;s=0;u--){for(var c=0;u>=0&&0===s[u];u--)c++;if(u>=0&&c++,h=h.dblp(c),u<0)break;var l=s[u];a(0!==l),h="affine"===t.type?l>0?h.mixedAdd(n[l-1>>1]):h.mixedAdd(n[-l-1>>1].neg()):l>0?h.add(n[l-1>>1]):h.add(n[-l-1>>1].neg())}return"affine"===t.type?h.toP():h},h.prototype._wnafMulAdd=function(t,e,r,i,n){var a,h,u,c=this._wnafT1,l=this._wnafT2,d=this._wnafT3,f=0;for(a=0;a=1;a-=2){var g=a-1,M=a;if(1===c[g]&&1===c[M]){var B=[e[g],null,null,e[M]];0===e[g].y.cmp(e[M].y)?(B[1]=e[g].add(e[M]),B[2]=e[g].toJ().mixedAdd(e[M].neg())):0===e[g].y.cmp(e[M].y.redNeg())?(B[1]=e[g].toJ().mixedAdd(e[M]),B[2]=e[g].add(e[M].neg())):(B[1]=e[g].toJ().mixedAdd(e[M]),B[2]=e[g].toJ().mixedAdd(e[M].neg()));var w=[-3,-1,-5,-7,0,7,5,1,3],E=s(r[g],r[M]);for(f=Math.max(E[0].length,f),d[g]=new Array(f),d[M]=new Array(f),h=0;h=0;a--){for(var Q=0;a>=0;){var I=!0;for(h=0;h=0&&Q++,y=y.dblp(Q),a<0)break;for(h=0;h0?u=l[h][C-1>>1]:C<0&&(u=l[h][-C-1>>1].neg()),y="affine"===u.type?y.mixedAdd(u):y.add(u))}}for(a=0;a=Math.ceil((t.bitLength()+1)/e.step)},u.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,n=0;n{"use strict";var i=r(953),n=r(3785),o=r(5717),s=r(4918),a=i.assert;function h(t){this.twisted=1!=(0|t.a),this.mOneA=this.twisted&&-1==(0|t.a),this.extended=this.mOneA,s.call(this,"edwards",t),this.a=new n(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new n(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new n(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),a(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|t.c)}function u(t,e,r,i,o){s.BasePoint.call(this,t,"projective"),null===e&&null===r&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new n(e,16),this.y=new n(r,16),this.z=i?new n(i,16):this.curve.one,this.t=o&&new n(o,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}o(h,s),t.exports=h,h.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)},h.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)},h.prototype.jpoint=function(t,e,r,i){return this.point(t,e,r,i)},h.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr(),i=this.c2.redSub(this.a.redMul(r)),o=this.one.redSub(this.c2.redMul(this.d).redMul(r)),s=i.redMul(o.redInvm()),a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");var h=a.fromRed().isOdd();return(e&&!h||!e&&h)&&(a=a.redNeg()),this.point(t,a)},h.prototype.pointFromY=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr(),i=r.redSub(this.c2),o=r.redMul(this.d).redMul(this.c2).redSub(this.a),s=i.redMul(o.redInvm());if(0===s.cmp(this.zero)){if(e)throw new Error("invalid point");return this.point(this.zero,t)}var a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");return a.fromRed().isOdd()!==e&&(a=a.redNeg()),this.point(a,t)},h.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var e=t.x.redSqr(),r=t.y.redSqr(),i=e.redMul(this.a).redAdd(r),n=this.c2.redMul(this.one.redAdd(this.d.redMul(e).redMul(r)));return 0===i.cmp(n)},o(u,s.BasePoint),h.prototype.pointFromJSON=function(t){return u.fromJSON(this,t)},h.prototype.point=function(t,e,r,i){return new u(this,t,e,r,i)},u.fromJSON=function(t,e){return new u(t,e[0],e[1],e[2])},u.prototype.inspect=function(){return this.isInfinity()?"":""},u.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},u.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(t),n=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=i.redAdd(e),s=o.redSub(r),a=i.redSub(e),h=n.redMul(s),u=o.redMul(a),c=n.redMul(a),l=s.redMul(o);return this.curve.point(h,u,l,c)},u.prototype._projDbl=function(){var t,e,r,i,n,o,s=this.x.redAdd(this.y).redSqr(),a=this.x.redSqr(),h=this.y.redSqr();if(this.curve.twisted){var u=(i=this.curve._mulA(a)).redAdd(h);this.zOne?(t=s.redSub(a).redSub(h).redMul(u.redSub(this.curve.two)),e=u.redMul(i.redSub(h)),r=u.redSqr().redSub(u).redSub(u)):(n=this.z.redSqr(),o=u.redSub(n).redISub(n),t=s.redSub(a).redISub(h).redMul(o),e=u.redMul(i.redSub(h)),r=u.redMul(o))}else i=a.redAdd(h),n=this.curve._mulC(this.z).redSqr(),o=i.redSub(n).redSub(n),t=this.curve._mulC(s.redISub(i)).redMul(o),e=this.curve._mulC(i).redMul(a.redISub(h)),r=i.redMul(o);return this.curve.point(t,e,r)},u.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},u.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),i=this.t.redMul(this.curve.dd).redMul(t.t),n=this.z.redMul(t.z.redAdd(t.z)),o=r.redSub(e),s=n.redSub(i),a=n.redAdd(i),h=r.redAdd(e),u=o.redMul(s),c=a.redMul(h),l=o.redMul(h),d=s.redMul(a);return this.curve.point(u,c,d,l)},u.prototype._projAdd=function(t){var e,r,i=this.z.redMul(t.z),n=i.redSqr(),o=this.x.redMul(t.x),s=this.y.redMul(t.y),a=this.curve.d.redMul(o).redMul(s),h=n.redSub(a),u=n.redAdd(a),c=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(s),l=i.redMul(h).redMul(c);return this.curve.twisted?(e=i.redMul(u).redMul(s.redSub(this.curve._mulA(o))),r=h.redMul(u)):(e=i.redMul(u).redMul(s.redSub(o)),r=this.curve._mulC(h).redMul(u)),this.curve.point(l,e,r)},u.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},u.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},u.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},u.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},u.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()},u.prototype.getY=function(){return this.normalize(),this.y.fromRed()},u.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},u.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(i),0===this.x.cmp(e))return!0}},u.prototype.toP=u.prototype.normalize,u.prototype.mixedAdd=u.prototype.add},8254:(t,e,r)=>{"use strict";var i=e;i.base=r(4918),i.short=r(6673),i.mont=r(2881),i.edwards=r(1138)},2881:(t,e,r)=>{"use strict";var i=r(3785),n=r(5717),o=r(4918),s=r(953);function a(t){o.call(this,"mont",t),this.a=new i(t.a,16).toRed(this.red),this.b=new i(t.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function h(t,e,r){o.BasePoint.call(this,t,"projective"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(e,16),this.z=new i(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}n(a,o),t.exports=a,a.prototype.validate=function(t){var e=t.normalize().x,r=e.redSqr(),i=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e);return 0===i.redSqrt().redSqr().cmp(i)},n(h,o.BasePoint),a.prototype.decodePoint=function(t,e){return this.point(s.toArray(t,e),1)},a.prototype.point=function(t,e){return new h(this,t,e)},a.prototype.pointFromJSON=function(t){return h.fromJSON(this,t)},h.prototype.precompute=function(){},h.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},h.fromJSON=function(t,e){return new h(t,e[0],e[1]||t.one)},h.prototype.inspect=function(){return this.isInfinity()?"":""},h.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},h.prototype.dbl=function(){var t=this.x.redAdd(this.z).redSqr(),e=this.x.redSub(this.z).redSqr(),r=t.redSub(e),i=t.redMul(e),n=r.redMul(e.redAdd(this.curve.a24.redMul(r)));return this.curve.point(i,n)},h.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),n=t.x.redAdd(t.z),o=t.x.redSub(t.z).redMul(r),s=n.redMul(i),a=e.z.redMul(o.redAdd(s).redSqr()),h=e.x.redMul(o.redISub(s).redSqr());return this.curve.point(a,h)},h.prototype.mul=function(t){for(var e=t.clone(),r=this,i=this.curve.point(null,null),n=[];0!==e.cmpn(0);e.iushrn(1))n.push(e.andln(1));for(var o=n.length-1;o>=0;o--)0===n[o]?(r=r.diffAdd(i,this),i=i.dbl()):(i=r.diffAdd(i,this),r=r.dbl());return i},h.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},h.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},h.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},6673:(t,e,r)=>{"use strict";var i=r(953),n=r(3785),o=r(5717),s=r(4918),a=i.assert;function h(t){s.call(this,"short",t),this.a=new n(t.a,16).toRed(this.red),this.b=new n(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function u(t,e,r,i){s.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new n(e,16),this.y=new n(r,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function c(t,e,r,i){s.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===i?(this.x=this.curve.one,this.y=this.curve.one,this.z=new n(0)):(this.x=new n(e,16),this.y=new n(r,16),this.z=new n(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}o(h,s),t.exports=h,h.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new n(t.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);e=(e=i[0].cmp(i[1])<0?i[0]:i[1]).toRed(this.red)}if(t.lambda)r=new n(t.lambda,16);else{var o=this._getEndoRoots(this.n);0===this.g.mul(o[0]).x.cmp(this.g.x.redMul(e))?r=o[0]:(r=o[1],a(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:r,basis:t.basis?t.basis.map((function(t){return{a:new n(t.a,16),b:new n(t.b,16)}})):this._getEndoBasis(r)}}},h.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:n.mont(t),r=new n(2).toRed(e).redInvm(),i=r.redNeg(),o=new n(3).toRed(e).redNeg().redSqrt().redMul(r);return[i.redAdd(o).fromRed(),i.redSub(o).fromRed()]},h.prototype._getEndoBasis=function(t){for(var e,r,i,o,s,a,h,u,c,l=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,f=this.n.clone(),A=new n(1),g=new n(0),M=new n(0),B=new n(1),w=0;0!==d.cmpn(0);){var E=f.div(d);u=f.sub(E.mul(d)),c=M.sub(E.mul(A));var p=B.sub(E.mul(g));if(!i&&u.cmp(l)<0)e=h.neg(),r=A,i=u.neg(),o=c;else if(i&&2==++w)break;h=u,f=d,d=u,M=A,A=c,B=g,g=p}s=u.neg(),a=c;var m=i.sqr().add(o.sqr());return s.sqr().add(a.sqr()).cmp(m)>=0&&(s=e,a=r),i.negative&&(i=i.neg(),o=o.neg()),s.negative&&(s=s.neg(),a=a.neg()),[{a:i,b:o},{a:s,b:a}]},h.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],i=e[1],n=i.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),s=n.mul(r.a),a=o.mul(i.a),h=n.mul(r.b),u=o.mul(i.b);return{k1:t.sub(s).sub(a),k2:h.add(u).neg()}},h.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(0!==i.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var o=i.fromRed().isOdd();return(e&&!o||!e&&o)&&(i=i.redNeg()),this.point(t,i)},h.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,i=this.a.redMul(e),n=e.redSqr().redMul(e).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(n).cmpn(0)},h.prototype._endoWnafMulAdd=function(t,e,r){for(var i=this._endoWnafT1,n=this._endoWnafT2,o=0;o":""},u.prototype.isInfinity=function(){return this.inf},u.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),i=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},u.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),i=t.redInvm(),n=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(i),o=n.redSqr().redISub(this.x.redAdd(this.x)),s=n.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},u.prototype.getX=function(){return this.x.fromRed()},u.prototype.getY=function(){return this.y.fromRed()},u.prototype.mul=function(t){return t=new n(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,e,r){var i=[this,e],n=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n):this.curve._wnafMulAdd(1,i,n,2)},u.prototype.jmulAdd=function(t,e,r){var i=[this,e],n=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n,!0):this.curve._wnafMulAdd(1,i,n,2,!0)},u.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},u.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,i=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return e},u.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},o(c,s.BasePoint),h.prototype.jpoint=function(t,e,r){return new c(this,t,e,r)},c.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),i=this.y.redMul(e).redMul(t);return this.curve.point(r,i)},c.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},c.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(e),n=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),s=t.y.redMul(r.redMul(this.z)),a=i.redSub(n),h=o.redSub(s);if(0===a.cmpn(0))return 0!==h.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=a.redSqr(),c=u.redMul(a),l=i.redMul(u),d=h.redSqr().redIAdd(c).redISub(l).redISub(l),f=h.redMul(l.redISub(d)).redISub(o.redMul(c)),A=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(d,f,A)},c.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,i=t.x.redMul(e),n=this.y,o=t.y.redMul(e).redMul(this.z),s=r.redSub(i),a=n.redSub(o);if(0===s.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var h=s.redSqr(),u=h.redMul(s),c=r.redMul(h),l=a.redSqr().redIAdd(u).redISub(c).redISub(c),d=a.redMul(c.redISub(l)).redISub(n.redMul(u)),f=this.z.redMul(s);return this.curve.jpoint(l,d,f)},c.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var r=this;for(e=0;e=0)return!1;if(r.redIAdd(n),0===this.x.cmp(r))return!0}},c.prototype.inspect=function(){return this.isInfinity()?"":""},c.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},5427:(t,e,r)=>{"use strict";var i,n=e,o=r(3715),s=r(8254),a=r(953).assert;function h(t){"short"===t.type?this.curve=new s.short(t):"edwards"===t.type?this.curve=new s.edwards(t):this.curve=new s.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,a(this.g.validate(),"Invalid curve"),a(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function u(t,e){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var r=new h(e);return Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=h,u("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),u("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),u("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),u("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),u("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),u("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),u("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{i=r(1037)}catch(t){i=void 0}u("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",i]})},7954:(t,e,r)=>{"use strict";var i=r(3785),n=r(2156),o=r(953),s=r(5427),a=r(9931),h=o.assert,u=r(1251),c=r(611);function l(t){if(!(this instanceof l))return new l(t);"string"==typeof t&&(h(Object.prototype.hasOwnProperty.call(s,t),"Unknown curve "+t),t=s[t]),t instanceof s.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}t.exports=l,l.prototype.keyPair=function(t){return new u(this,t)},l.prototype.keyFromPrivate=function(t,e){return u.fromPrivate(this,t,e)},l.prototype.keyFromPublic=function(t,e){return u.fromPublic(this,t,e)},l.prototype.genKeyPair=function(t){t||(t={});for(var e=new n({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||a(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),o=this.n.sub(new i(2));;){var s=new i(e.generate(r));if(!(s.cmp(o)>0))return s.iaddn(1),this.keyFromPrivate(s)}},l.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},l.prototype.sign=function(t,e,r,o){"object"==typeof r&&(o=r,r=null),o||(o={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new i(t,16));for(var s=this.n.byteLength(),a=e.getPrivate().toArray("be",s),h=t.toArray("be",s),u=new n({hash:this.hash,entropy:a,nonce:h,pers:o.pers,persEnc:o.persEnc||"utf8"}),l=this.n.sub(new i(1)),d=0;;d++){var f=o.k?o.k(d):new i(u.generate(this.n.byteLength()));if(!((f=this._truncateToN(f,!0)).cmpn(1)<=0||f.cmp(l)>=0)){var A=this.g.mul(f);if(!A.isInfinity()){var g=A.getX(),M=g.umod(this.n);if(0!==M.cmpn(0)){var B=f.invm(this.n).mul(M.mul(e.getPrivate()).iadd(t));if(0!==(B=B.umod(this.n)).cmpn(0)){var w=(A.getY().isOdd()?1:0)|(0!==g.cmp(M)?2:0);return o.canonical&&B.cmp(this.nh)>0&&(B=this.n.sub(B),w^=1),new c({r:M,s:B,recoveryParam:w})}}}}}},l.prototype.verify=function(t,e,r,n){t=this._truncateToN(new i(t,16)),r=this.keyFromPublic(r,n);var o=(e=new c(e,"hex")).r,s=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;var a,h=s.invm(this.n),u=h.mul(t).umod(this.n),l=h.mul(o).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(u,r.getPublic(),l)).isInfinity()&&a.eqXToP(o):!(a=this.g.mulAdd(u,r.getPublic(),l)).isInfinity()&&0===a.getX().umod(this.n).cmp(o)},l.prototype.recoverPubKey=function(t,e,r,n){h((3&r)===r,"The recovery param is more than two bits"),e=new c(e,n);var o=this.n,s=new i(t),a=e.r,u=e.s,l=1&r,d=r>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&d)throw new Error("Unable to find sencond key candinate");a=d?this.curve.pointFromX(a.add(this.curve.n),l):this.curve.pointFromX(a,l);var f=e.r.invm(o),A=o.sub(s).mul(f).umod(o),g=u.mul(f).umod(o);return this.g.mulAdd(A,a,g)},l.prototype.getKeyRecoveryParam=function(t,e,r,i){if(null!==(e=new c(e,i)).recoveryParam)return e.recoveryParam;for(var n=0;n<4;n++){var o;try{o=this.recoverPubKey(t,e,n)}catch(t){continue}if(o.eq(r))return n}throw new Error("Unable to find valid recovery factor")}},1251:(t,e,r)=>{"use strict";var i=r(3785),n=r(953).assert;function o(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}t.exports=o,o.fromPublic=function(t,e,r){return e instanceof o?e:new o(t,{pub:e,pubEnc:r})},o.fromPrivate=function(t,e,r){return e instanceof o?e:new o(t,{priv:e,privEnc:r})},o.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},o.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},o.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},o.prototype._importPrivate=function(t,e){this.priv=new i(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},o.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?n(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||n(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},o.prototype.derive=function(t){return t.validate()||n(t.validate(),"public point not validated"),t.mul(this.priv).getX()},o.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},o.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},o.prototype.inspect=function(){return""}},611:(t,e,r)=>{"use strict";var i=r(3785),n=r(953),o=n.assert;function s(t,e){if(t instanceof s)return t;this._importDER(t,e)||(o(t.r&&t.s,"Signature without r or s"),this.r=new i(t.r,16),this.s=new i(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}function a(){this.place=0}function h(t,e){var r=t[e.place++];if(!(128&r))return r;var i=15&r;if(0===i||i>4)return!1;for(var n=0,o=0,s=e.place;o>>=0;return!(n<=127)&&(e.place=s,n)}function u(t){for(var e=0,r=t.length-1;!t[e]&&!(128&t[e+1])&&e>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}t.exports=s,s.prototype._importDER=function(t,e){t=n.toArray(t,e);var r=new a;if(48!==t[r.place++])return!1;var o=h(t,r);if(!1===o)return!1;if(o+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var s=h(t,r);if(!1===s)return!1;var u=t.slice(r.place,s+r.place);if(r.place+=s,2!==t[r.place++])return!1;var c=h(t,r);if(!1===c)return!1;if(t.length!==c+r.place)return!1;var l=t.slice(r.place,c+r.place);if(0===u[0]){if(!(128&u[1]))return!1;u=u.slice(1)}if(0===l[0]){if(!(128&l[1]))return!1;l=l.slice(1)}return this.r=new i(u),this.s=new i(l),this.recoveryParam=null,!0},s.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=u(e),r=u(r);!(r[0]||128&r[1]);)r=r.slice(1);var i=[2];c(i,e.length),(i=i.concat(e)).push(2),c(i,r.length);var o=i.concat(r),s=[48];return c(s,o.length),s=s.concat(o),n.encode(s,t)}},5980:(t,e,r)=>{"use strict";var i=r(3715),n=r(5427),o=r(953),s=o.assert,a=o.parseBytes,h=r(9087),u=r(3622);function c(t){if(s("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof c))return new c(t);t=n[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}t.exports=c,c.prototype.sign=function(t,e){t=a(t);var r=this.keyFromSecret(e),i=this.hashInt(r.messagePrefix(),t),n=this.g.mul(i),o=this.encodePoint(n),s=this.hashInt(o,r.pubBytes(),t).mul(r.priv()),h=i.add(s).umod(this.curve.n);return this.makeSignature({R:n,S:h,Rencoded:o})},c.prototype.verify=function(t,e,r){t=a(t),e=this.makeSignature(e);var i=this.keyFromPublic(r),n=this.hashInt(e.Rencoded(),i.pubBytes(),t),o=this.g.mul(e.S());return e.R().add(i.pub().mul(n)).eq(o)},c.prototype.hashInt=function(){for(var t=this.hash(),e=0;e{"use strict";var i=r(953),n=i.assert,o=i.parseBytes,s=i.cachedProperty;function a(t,e){this.eddsa=t,this._secret=o(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=o(e.pub)}a.fromPublic=function(t,e){return e instanceof a?e:new a(t,{pub:e})},a.fromSecret=function(t,e){return e instanceof a?e:new a(t,{secret:e})},a.prototype.secret=function(){return this._secret},s(a,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),s(a,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),s(a,"privBytes",(function(){var t=this.eddsa,e=this.hash(),r=t.encodingLength-1,i=e.slice(0,t.encodingLength);return i[0]&=248,i[r]&=127,i[r]|=64,i})),s(a,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),s(a,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),s(a,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),a.prototype.sign=function(t){return n(this._secret,"KeyPair can only verify"),this.eddsa.sign(t,this)},a.prototype.verify=function(t,e){return this.eddsa.verify(t,e,this)},a.prototype.getSecret=function(t){return n(this._secret,"KeyPair is public only"),i.encode(this.secret(),t)},a.prototype.getPublic=function(t){return i.encode(this.pubBytes(),t)},t.exports=a},3622:(t,e,r)=>{"use strict";var i=r(3785),n=r(953),o=n.assert,s=n.cachedProperty,a=n.parseBytes;function h(t,e){this.eddsa=t,"object"!=typeof e&&(e=a(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),o(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof i&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}s(h,"S",(function(){return this.eddsa.decodeInt(this.Sencoded())})),s(h,"R",(function(){return this.eddsa.decodePoint(this.Rencoded())})),s(h,"Rencoded",(function(){return this.eddsa.encodePoint(this.R())})),s(h,"Sencoded",(function(){return this.eddsa.encodeInt(this.S())})),h.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},h.prototype.toHex=function(){return n.encode(this.toBytes(),"hex").toUpperCase()},t.exports=h},1037:t=>{t.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}},953:(t,e,r)=>{"use strict";var i=e,n=r(3785),o=r(9746),s=r(4504);i.assert=o,i.toArray=s.toArray,i.zero2=s.zero2,i.toHex=s.toHex,i.encode=s.encode,i.getNAF=function(t,e,r){var i=new Array(Math.max(t.bitLength(),r)+1);i.fill(0);for(var n=1<(n>>1)-1?(n>>1)-h:h,o.isubn(a)):a=0,i[s]=a,o.iushrn(1)}return i},i.getJSF=function(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var i,n=0,o=0;t.cmpn(-n)>0||e.cmpn(-o)>0;){var s,a,h=t.andln(3)+n&3,u=e.andln(3)+o&3;3===h&&(h=-1),3===u&&(u=-1),s=0==(1&h)?0:3!=(i=t.andln(7)+n&7)&&5!==i||2!==u?h:-h,r[0].push(s),a=0==(1&u)?0:3!=(i=e.andln(7)+o&7)&&5!==i||2!==h?u:-u,r[1].push(a),2*n===s+1&&(n=1-n),2*o===a+1&&(o=1-o),t.iushrn(1),e.iushrn(1)}return r},i.cachedProperty=function(t,e,r){var i="_"+e;t.prototype[e]=function(){return void 0!==this[i]?this[i]:this[i]=r.call(this)}},i.parseBytes=function(t){return"string"==typeof t?i.toArray(t,"hex"):t},i.intFromLE=function(t){return new n(t,"hex","le")}},3785:function(t,e,r){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(5568).Buffer}catch(t){}function a(t,e){var r=t.charCodeAt(e);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,c=r;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,d=Math.min(u,e.length-1),f=Math.max(0,u-t.length+1);f<=d;f++){var A=u-f|0;c+=(s=(n=0|t.words[A])*(o=0|e.words[f])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|c}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?c[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=l[t],f=d[t];r="";var A=this.clone();for(A.negative=0;!A.isZero();){var g=A.modn(f).toString(t);r=(A=A.idivn(f)).isZero()?g+r:c[u-g.length]+g+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),c=this.clone();if(h){for(a=0;!c.isZero();a++)s=c.andln(255),c.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],A=8191&f,g=f>>>13,M=0|s[2],B=8191&M,w=M>>>13,E=0|s[3],p=8191&E,m=E>>>13,y=0|s[4],b=8191&y,Q=y>>>13,I=0|s[5],C=8191&I,D=I>>>13,N=0|s[6],v=8191&N,G=N>>>13,R=0|s[7],Y=8191&R,U=R>>>13,V=0|s[8],T=8191&V,S=V>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,H=j>>>13,z=0|a[1],x=8191&z,O=z>>>13,W=0|a[2],J=8191&W,X=W>>>13,K=0|a[3],P=8191&K,_=K>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ct=0|a[8],lt=8191&ct,dt=ct>>>13,ft=0|a[9],At=8191&ft,gt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(l,Z))|0)+((8191&(n=(n=Math.imul(l,H))+Math.imul(d,Z)|0))<<13)|0;u=((o=Math.imul(d,H))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(A,Z),n=(n=Math.imul(A,H))+Math.imul(g,Z)|0,o=Math.imul(g,H);var Bt=(u+(i=i+Math.imul(l,x)|0)|0)+((8191&(n=(n=n+Math.imul(l,O)|0)+Math.imul(d,x)|0))<<13)|0;u=((o=o+Math.imul(d,O)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(B,Z),n=(n=Math.imul(B,H))+Math.imul(w,Z)|0,o=Math.imul(w,H),i=i+Math.imul(A,x)|0,n=(n=n+Math.imul(A,O)|0)+Math.imul(g,x)|0,o=o+Math.imul(g,O)|0;var wt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(d,J)|0))<<13)|0;u=((o=o+Math.imul(d,X)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,H))+Math.imul(m,Z)|0,o=Math.imul(m,H),i=i+Math.imul(B,x)|0,n=(n=n+Math.imul(B,O)|0)+Math.imul(w,x)|0,o=o+Math.imul(w,O)|0,i=i+Math.imul(A,J)|0,n=(n=n+Math.imul(A,X)|0)+Math.imul(g,J)|0,o=o+Math.imul(g,X)|0;var Et=(u+(i=i+Math.imul(l,P)|0)|0)+((8191&(n=(n=n+Math.imul(l,_)|0)+Math.imul(d,P)|0))<<13)|0;u=((o=o+Math.imul(d,_)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,H))+Math.imul(Q,Z)|0,o=Math.imul(Q,H),i=i+Math.imul(p,x)|0,n=(n=n+Math.imul(p,O)|0)+Math.imul(m,x)|0,o=o+Math.imul(m,O)|0,i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,X)|0)+Math.imul(w,J)|0,o=o+Math.imul(w,X)|0,i=i+Math.imul(A,P)|0,n=(n=n+Math.imul(A,_)|0)+Math.imul(g,P)|0,o=o+Math.imul(g,_)|0;var pt=(u+(i=i+Math.imul(l,$)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(d,$)|0))<<13)|0;u=((o=o+Math.imul(d,tt)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,H))+Math.imul(D,Z)|0,o=Math.imul(D,H),i=i+Math.imul(b,x)|0,n=(n=n+Math.imul(b,O)|0)+Math.imul(Q,x)|0,o=o+Math.imul(Q,O)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0,i=i+Math.imul(B,P)|0,n=(n=n+Math.imul(B,_)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,_)|0,i=i+Math.imul(A,$)|0,n=(n=n+Math.imul(A,tt)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,tt)|0;var mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(d,rt)|0))<<13)|0;u=((o=o+Math.imul(d,it)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(v,Z),n=(n=Math.imul(v,H))+Math.imul(G,Z)|0,o=Math.imul(G,H),i=i+Math.imul(C,x)|0,n=(n=n+Math.imul(C,O)|0)+Math.imul(D,x)|0,o=o+Math.imul(D,O)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(Q,J)|0,o=o+Math.imul(Q,X)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,_)|0)+Math.imul(m,P)|0,o=o+Math.imul(m,_)|0,i=i+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(A,rt)|0,n=(n=n+Math.imul(A,it)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0;var yt=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(d,ot)|0))<<13)|0;u=((o=o+Math.imul(d,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Y,Z),n=(n=Math.imul(Y,H))+Math.imul(U,Z)|0,o=Math.imul(U,H),i=i+Math.imul(v,x)|0,n=(n=n+Math.imul(v,O)|0)+Math.imul(G,x)|0,o=o+Math.imul(G,O)|0,i=i+Math.imul(C,J)|0,n=(n=n+Math.imul(C,X)|0)+Math.imul(D,J)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,_)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,_)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0,i=i+Math.imul(B,rt)|0,n=(n=n+Math.imul(B,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(A,ot)|0,n=(n=n+Math.imul(A,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var bt=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(d,ht)|0))<<13)|0;u=((o=o+Math.imul(d,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,H))+Math.imul(S,Z)|0,o=Math.imul(S,H),i=i+Math.imul(Y,x)|0,n=(n=n+Math.imul(Y,O)|0)+Math.imul(U,x)|0,o=o+Math.imul(U,O)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(G,J)|0,o=o+Math.imul(G,X)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,_)|0)+Math.imul(D,P)|0,o=o+Math.imul(D,_)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0,i=i+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(A,ht)|0,n=(n=n+Math.imul(A,ut)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,ut)|0;var Qt=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,dt)|0)+Math.imul(d,lt)|0))<<13)|0;u=((o=o+Math.imul(d,dt)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,H))+Math.imul(L,Z)|0,o=Math.imul(L,H),i=i+Math.imul(T,x)|0,n=(n=n+Math.imul(T,O)|0)+Math.imul(S,x)|0,o=o+Math.imul(S,O)|0,i=i+Math.imul(Y,J)|0,n=(n=n+Math.imul(Y,X)|0)+Math.imul(U,J)|0,o=o+Math.imul(U,X)|0,i=i+Math.imul(v,P)|0,n=(n=n+Math.imul(v,_)|0)+Math.imul(G,P)|0,o=o+Math.imul(G,_)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0,i=i+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(A,lt)|0,n=(n=n+Math.imul(A,dt)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,dt)|0;var It=(u+(i=i+Math.imul(l,At)|0)|0)+((8191&(n=(n=n+Math.imul(l,gt)|0)+Math.imul(d,At)|0))<<13)|0;u=((o=o+Math.imul(d,gt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,x),n=(n=Math.imul(F,O))+Math.imul(L,x)|0,o=Math.imul(L,O),i=i+Math.imul(T,J)|0,n=(n=n+Math.imul(T,X)|0)+Math.imul(S,J)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(Y,P)|0,n=(n=n+Math.imul(Y,_)|0)+Math.imul(U,P)|0,o=o+Math.imul(U,_)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(G,$)|0,o=o+Math.imul(G,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(D,rt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0,i=i+Math.imul(B,lt)|0,n=(n=n+Math.imul(B,dt)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,dt)|0;var Ct=(u+(i=i+Math.imul(A,At)|0)|0)+((8191&(n=(n=n+Math.imul(A,gt)|0)+Math.imul(g,At)|0))<<13)|0;u=((o=o+Math.imul(g,gt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,X))+Math.imul(L,J)|0,o=Math.imul(L,X),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,_)|0)+Math.imul(S,P)|0,o=o+Math.imul(S,_)|0,i=i+Math.imul(Y,$)|0,n=(n=n+Math.imul(Y,tt)|0)+Math.imul(U,$)|0,o=o+Math.imul(U,tt)|0,i=i+Math.imul(v,rt)|0,n=(n=n+Math.imul(v,it)|0)+Math.imul(G,rt)|0,o=o+Math.imul(G,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,dt)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,dt)|0;var Dt=(u+(i=i+Math.imul(B,At)|0)|0)+((8191&(n=(n=n+Math.imul(B,gt)|0)+Math.imul(w,At)|0))<<13)|0;u=((o=o+Math.imul(w,gt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,_))+Math.imul(L,P)|0,o=Math.imul(L,_),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(S,$)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(Y,rt)|0,n=(n=n+Math.imul(Y,it)|0)+Math.imul(U,rt)|0,o=o+Math.imul(U,it)|0,i=i+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,st)|0)+Math.imul(G,ot)|0,o=o+Math.imul(G,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,dt)|0)+Math.imul(Q,lt)|0,o=o+Math.imul(Q,dt)|0;var Nt=(u+(i=i+Math.imul(p,At)|0)|0)+((8191&(n=(n=n+Math.imul(p,gt)|0)+Math.imul(m,At)|0))<<13)|0;u=((o=o+Math.imul(m,gt)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(Y,ot)|0,n=(n=n+Math.imul(Y,st)|0)+Math.imul(U,ot)|0,o=o+Math.imul(U,st)|0,i=i+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(G,ht)|0,o=o+Math.imul(G,ut)|0,i=i+Math.imul(C,lt)|0,n=(n=n+Math.imul(C,dt)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,dt)|0;var vt=(u+(i=i+Math.imul(b,At)|0)|0)+((8191&(n=(n=n+Math.imul(b,gt)|0)+Math.imul(Q,At)|0))<<13)|0;u=((o=o+Math.imul(Q,gt)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(Y,ht)|0,n=(n=n+Math.imul(Y,ut)|0)+Math.imul(U,ht)|0,o=o+Math.imul(U,ut)|0,i=i+Math.imul(v,lt)|0,n=(n=n+Math.imul(v,dt)|0)+Math.imul(G,lt)|0,o=o+Math.imul(G,dt)|0;var Gt=(u+(i=i+Math.imul(C,At)|0)|0)+((8191&(n=(n=n+Math.imul(C,gt)|0)+Math.imul(D,At)|0))<<13)|0;u=((o=o+Math.imul(D,gt)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,ut)|0,i=i+Math.imul(Y,lt)|0,n=(n=n+Math.imul(Y,dt)|0)+Math.imul(U,lt)|0,o=o+Math.imul(U,dt)|0;var Rt=(u+(i=i+Math.imul(v,At)|0)|0)+((8191&(n=(n=n+Math.imul(v,gt)|0)+Math.imul(G,At)|0))<<13)|0;u=((o=o+Math.imul(G,gt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,lt)|0,n=(n=n+Math.imul(T,dt)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,dt)|0;var Yt=(u+(i=i+Math.imul(Y,At)|0)|0)+((8191&(n=(n=n+Math.imul(Y,gt)|0)+Math.imul(U,At)|0))<<13)|0;u=((o=o+Math.imul(U,gt)|0)+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(F,lt),n=(n=Math.imul(F,dt))+Math.imul(L,lt)|0,o=Math.imul(L,dt);var Ut=(u+(i=i+Math.imul(T,At)|0)|0)+((8191&(n=(n=n+Math.imul(T,gt)|0)+Math.imul(S,At)|0))<<13)|0;u=((o=o+Math.imul(S,gt)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863;var Vt=(u+(i=Math.imul(F,At))|0)+((8191&(n=(n=Math.imul(F,gt))+Math.imul(L,At)|0))<<13)|0;return u=((o=Math.imul(L,gt))+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,h[0]=Mt,h[1]=Bt,h[2]=wt,h[3]=Et,h[4]=pt,h[5]=mt,h[6]=yt,h[7]=bt,h[8]=Qt,h[9]=It,h[10]=Ct,h[11]=Dt,h[12]=Nt,h[13]=vt,h[14]=Gt,h[15]=Rt,h[16]=Yt,h[17]=Ut,h[18]=Vt,0!==u&&(h[19]=u,r.length++),r};function g(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(A=f),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?A(this,t,e):r<63?f(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):g(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==c||u>=n);u--){var l=0|this.words[u];this.words[u]=c<<26-o|l>>>o,c=l&a}return h&&0!==c&&(h.words[h.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var d=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(n,d,l);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=d)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var c=r.clone(),l=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(c),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var A=0,g=1;0==(r.words[0]&g)&&A<26;++A,g<<=1);if(A>0)for(r.iushrn(A);A-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(c),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,c=1;0==(e.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,d=1;0==(r.words[0]&d)&&l<26;++l,d<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var B={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function E(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function p(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function m(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function Q(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(E,w),E.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},E.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(B[t])return B[t];var e;if("k256"===t)e=new E;else if("p224"===t)e=new p;else if("p192"===t)e=new m;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return B[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);0!==this.pow(c,u).cmp(h);)c.redIAdd(h);for(var l=this.pow(c,n),d=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),A=s;0!==f.cmp(a);){for(var g=f,M=0;0!==g.cmp(a);M++)g=g.redSqr();i(M=0;i--){for(var u=e.words[i],c=h-1;c>=0;c--){var l=u>>c&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4==++a||0===i&&0===c)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new Q(t)},n(Q,b),Q.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},Q.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},Q.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},Q.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},Q.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},7519:t=>{"use strict";t.exports={i8:"6.5.4"}},4079:(t,e,r)=>{"use strict";var i=r(210)("%Object.getOwnPropertyDescriptor%");if(i)try{i([],"length")}catch(t){i=null}t.exports=i},8091:t=>{"use strict";function e(t,e){if(null==t)throw new TypeError("Cannot convert first argument to object");for(var r=Object(t),i=1;i{"use strict";var e,r="object"==typeof Reflect?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};e=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var n=Number.isNaN||function(t){return t!=t};function o(){o.init.call(this)}t.exports=o,t.exports.once=function(t,e){return new Promise((function(r,i){function n(r){t.removeListener(e,o),i(r)}function o(){"function"==typeof t.removeListener&&t.removeListener("error",n),r([].slice.call(arguments))}g(t,e,o,{once:!0}),"error"!==e&&function(t,e,r){"function"==typeof t.on&&g(t,"error",e,{once:!0})}(t,n)}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function a(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function h(t){return void 0===t._maxListeners?o.defaultMaxListeners:t._maxListeners}function u(t,e,r,i){var n,o,s,u;if(a(r),void 0===(o=t._events)?(o=t._events=Object.create(null),t._eventsCount=0):(void 0!==o.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),o=t._events),s=o[e]),void 0===s)s=o[e]=r,++t._eventsCount;else if("function"==typeof s?s=o[e]=i?[r,s]:[s,r]:i?s.unshift(r):s.push(r),(n=h(t))>0&&s.length>n&&!s.warned){s.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=s.length,u=c,console&&console.warn&&console.warn(u)}return t}function c(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function l(t,e,r){var i={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},n=c.bind(i);return n.listener=r,i.wrapFn=n,n}function d(t,e,r){var i=t._events;if(void 0===i)return[];var n=i[e];return void 0===n?[]:"function"==typeof n?r?[n.listener||n]:[n]:r?function(t){for(var e=new Array(t.length),r=0;r0&&(s=e[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var h=o[t];if(void 0===h)return!1;if("function"==typeof h)i(h,this,e);else{var u=h.length,c=A(h,u);for(r=0;r=0;o--)if(r[o]===e||r[o].listener===e){s=r[o].listener,n=o;break}if(n<0)return this;0===n?r.shift():function(t,e){for(;e+1=0;i--)this.removeListener(t,e[i]);return this},o.prototype.listeners=function(t){return d(this,t,!0)},o.prototype.rawListeners=function(t){return d(this,t,!1)},o.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):f.call(t,e)},o.prototype.listenerCount=f,o.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}},3048:(t,e,r)=>{var i=r(9509).Buffer,n=r(2318);t.exports=function(t,e,r,o){if(i.isBuffer(t)||(t=i.from(t,"binary")),e&&(i.isBuffer(e)||(e=i.from(e,"binary")),8!==e.length))throw new RangeError("salt should be Buffer with 8 byte length");for(var s=r/8,a=i.alloc(s),h=i.alloc(o||0),u=i.alloc(0);s>0||o>0;){var c=new n;c.update(u),c.update(t),e&&c.update(e),u=c.digest();var l=0;if(s>0){var d=a.length-s;l=Math.min(s,u.length),u.copy(a,d,0,l),s-=l}if(l0){var f=h.length-o,A=Math.min(o,u.length-l);u.copy(h,f,l,l+A),o-=A}}return u.fill(0),{key:a,iv:h}}},9804:t=>{var e=Object.prototype.hasOwnProperty,r=Object.prototype.toString;t.exports=function(t,i,n){if("[object Function]"!==r.call(i))throw new TypeError("iterator must be a function");var o=t.length;if(o===+o)for(var s=0;s{"use strict";var e="Function.prototype.bind called on incompatible ",r=Array.prototype.slice,i=Object.prototype.toString,n="[object Function]";t.exports=function(t){var o=this;if("function"!=typeof o||i.call(o)!==n)throw new TypeError(e+o);for(var s,a=r.call(arguments,1),h=function(){if(this instanceof s){var e=o.apply(this,a.concat(r.call(arguments)));return Object(e)===e?e:this}return o.apply(t,a.concat(r.call(arguments)))},u=Math.max(0,o.length-a.length),c=[],l=0;l{"use strict";var i=r(7648);t.exports=Function.prototype.bind||i},210:(t,e,r)=>{"use strict";var i,n=SyntaxError,o=Function,s=TypeError,a=function(t){try{return o('"use strict"; return ('+t+").constructor;")()}catch(t){}},h=Object.getOwnPropertyDescriptor;if(h)try{h({},"")}catch(t){h=null}var u=function(){throw new s},c=h?function(){try{return u}catch(t){try{return h(arguments,"callee").get}catch(t){return u}}}():u,l=r(1405)(),d=Object.getPrototypeOf||function(t){return t.__proto__},f={},A="undefined"==typeof Uint8Array?i:d(Uint8Array),g={"%AggregateError%":"undefined"==typeof AggregateError?i:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?i:ArrayBuffer,"%ArrayIteratorPrototype%":l?d([][Symbol.iterator]()):i,"%AsyncFromSyncIteratorPrototype%":i,"%AsyncFunction%":f,"%AsyncGenerator%":f,"%AsyncGeneratorFunction%":f,"%AsyncIteratorPrototype%":f,"%Atomics%":"undefined"==typeof Atomics?i:Atomics,"%BigInt%":"undefined"==typeof BigInt?i:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?i:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?i:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?i:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?i:FinalizationRegistry,"%Function%":o,"%GeneratorFunction%":f,"%Int8Array%":"undefined"==typeof Int8Array?i:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?i:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?i:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":l?d(d([][Symbol.iterator]())):i,"%JSON%":"object"==typeof JSON?JSON:i,"%Map%":"undefined"==typeof Map?i:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&l?d((new Map)[Symbol.iterator]()):i,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?i:Promise,"%Proxy%":"undefined"==typeof Proxy?i:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?i:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?i:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&l?d((new Set)[Symbol.iterator]()):i,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?i:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":l?d(""[Symbol.iterator]()):i,"%Symbol%":l?Symbol:i,"%SyntaxError%":n,"%ThrowTypeError%":c,"%TypedArray%":A,"%TypeError%":s,"%Uint8Array%":"undefined"==typeof Uint8Array?i:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?i:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?i:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?i:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?i:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?i:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?i:WeakSet},M=function t(e){var r;if("%AsyncFunction%"===e)r=a("async function () {}");else if("%GeneratorFunction%"===e)r=a("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=a("async function* () {}");else if("%AsyncGenerator%"===e){var i=t("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===e){var n=t("%AsyncGenerator%");n&&(r=d(n.prototype))}return g[e]=r,r},B={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},w=r(8612),E=r(7642),p=w.call(Function.call,Array.prototype.concat),m=w.call(Function.apply,Array.prototype.splice),y=w.call(Function.call,String.prototype.replace),b=w.call(Function.call,String.prototype.slice),Q=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,I=/\\(\\)?/g,C=function(t){var e=b(t,0,1),r=b(t,-1);if("%"===e&&"%"!==r)throw new n("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new n("invalid intrinsic syntax, expected opening `%`");var i=[];return y(t,Q,(function(t,e,r,n){i[i.length]=r?y(n,I,"$1"):e||t})),i},D=function(t,e){var r,i=t;if(E(B,i)&&(i="%"+(r=B[i])[0]+"%"),E(g,i)){var o=g[i];if(o===f&&(o=M(i)),void 0===o&&!e)throw new s("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:o}}throw new n("intrinsic "+t+" does not exist!")};t.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new s("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new s('"allowMissing" argument must be a boolean');var r=C(t),i=r.length>0?r[0]:"",o=D("%"+i+"%",e),a=o.name,u=o.value,c=!1,l=o.alias;l&&(i=l[0],m(r,p([0,1],l)));for(var d=1,f=!0;d=r.length){var w=h(u,A);u=(f=!!w)&&"get"in w&&!("originalValue"in w.get)?w.get:u[A]}else f=E(u,A),u=u[A];f&&!c&&(g[a]=u)}}return u}},1405:(t,e,r)=>{"use strict";var i="undefined"!=typeof Symbol&&Symbol,n=r(5419);t.exports=function(){return"function"==typeof i&&"function"==typeof Symbol&&"symbol"==typeof i("foo")&&"symbol"==typeof Symbol("bar")&&n()}},5419:t=>{"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(e in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var i=Object.getOwnPropertySymbols(t);if(1!==i.length||i[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var n=Object.getOwnPropertyDescriptor(t,e);if(42!==n.value||!0!==n.enumerable)return!1}return!0}},7642:(t,e,r)=>{"use strict";var i=r(8612);t.exports=i.call(Function.call,Object.prototype.hasOwnProperty)},3349:(t,e,r)=>{"use strict";var i=r(9509).Buffer,n=r(8473).Transform;function o(t){n.call(this),this._block=i.allocUnsafe(t),this._blockSize=t,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}r(5717)(o,n),o.prototype._transform=function(t,e,r){var i=null;try{this.update(t,e)}catch(t){i=t}r(i)},o.prototype._flush=function(t){var e=null;try{this.push(this.digest())}catch(t){e=t}t(e)},o.prototype.update=function(t,e){if(function(t,e){if(!i.isBuffer(t)&&"string"!=typeof t)throw new TypeError("Data must be a string or a buffer")}(t),this._finalized)throw new Error("Digest already called");i.isBuffer(t)||(t=i.from(t,e));for(var r=this._block,n=0;this._blockOffset+t.length-n>=this._blockSize;){for(var o=this._blockOffset;o0;++s)this._length[s]+=a,(a=this._length[s]/4294967296|0)>0&&(this._length[s]-=4294967296*a);return this},o.prototype._update=function(){throw new Error("_update is not implemented")},o.prototype.digest=function(t){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var e=this._digest();void 0!==t&&(e=e.toString(t)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return e},o.prototype._digest=function(){throw new Error("_digest is not implemented")},t.exports=o},3715:(t,e,r)=>{var i=e;i.utils=r(6436),i.common=r(5772),i.sha=r(9041),i.ripemd=r(2949),i.hmac=r(2344),i.sha1=i.sha.sha1,i.sha256=i.sha.sha256,i.sha224=i.sha.sha224,i.sha384=i.sha.sha384,i.sha512=i.sha.sha512,i.ripemd160=i.ripemd.ripemd160},5772:(t,e,r)=>{"use strict";var i=r(6436),n=r(9746);function o(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}e.BlockHash=o,o.prototype.update=function(t,e){if(t=i.toArray(t,e),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){var r=(t=this.pending).length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=i.join32(t,0,t.length-r,this.endian);for(var n=0;n>>24&255,i[n++]=t>>>16&255,i[n++]=t>>>8&255,i[n++]=255&t}else for(i[n++]=255&t,i[n++]=t>>>8&255,i[n++]=t>>>16&255,i[n++]=t>>>24&255,i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=0,o=8;o{"use strict";var i=r(6436),n=r(9746);function o(t,e,r){if(!(this instanceof o))return new o(t,e,r);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(i.toArray(e,r))}t.exports=o,o.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),n(t.length<=this.blockSize);for(var e=t.length;e{"use strict";var i=r(6436),n=r(5772),o=i.rotl32,s=i.sum32,a=i.sum32_3,h=i.sum32_4,u=n.BlockHash;function c(){if(!(this instanceof c))return new c;u.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function l(t,e,r,i){return t<=15?e^r^i:t<=31?e&r|~e&i:t<=47?(e|~r)^i:t<=63?e&i|r&~i:e^(r|~i)}function d(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function f(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}i.inherits(c,u),e.ripemd160=c,c.blockSize=512,c.outSize=160,c.hmacStrength=192,c.padLength=64,c.prototype._update=function(t,e){for(var r=this.h[0],i=this.h[1],n=this.h[2],u=this.h[3],c=this.h[4],w=r,E=i,p=n,m=u,y=c,b=0;b<80;b++){var Q=s(o(h(r,l(b,i,n,u),t[A[b]+e],d(b)),M[b]),c);r=c,c=u,u=o(n,10),n=i,i=Q,Q=s(o(h(w,l(79-b,E,p,m),t[g[b]+e],f(b)),B[b]),y),w=y,y=m,m=o(p,10),p=E,E=Q}Q=a(this.h[1],n,m),this.h[1]=a(this.h[2],u,y),this.h[2]=a(this.h[3],c,w),this.h[3]=a(this.h[4],r,E),this.h[4]=a(this.h[0],i,p),this.h[0]=Q},c.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h,"little"):i.split32(this.h,"little")};var A=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],g=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],M=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],B=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},9041:(t,e,r)=>{"use strict";e.sha1=r(4761),e.sha224=r(799),e.sha256=r(9344),e.sha384=r(772),e.sha512=r(5900)},4761:(t,e,r)=>{"use strict";var i=r(6436),n=r(5772),o=r(7038),s=i.rotl32,a=i.sum32,h=i.sum32_5,u=o.ft_1,c=n.BlockHash,l=[1518500249,1859775393,2400959708,3395469782];function d(){if(!(this instanceof d))return new d;c.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}i.inherits(d,c),t.exports=d,d.blockSize=512,d.outSize=160,d.hmacStrength=80,d.padLength=64,d.prototype._update=function(t,e){for(var r=this.W,i=0;i<16;i++)r[i]=t[e+i];for(;i{"use strict";var i=r(6436),n=r(9344);function o(){if(!(this instanceof o))return new o;n.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}i.inherits(o,n),t.exports=o,o.blockSize=512,o.outSize=224,o.hmacStrength=192,o.padLength=64,o.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h.slice(0,7),"big"):i.split32(this.h.slice(0,7),"big")}},9344:(t,e,r)=>{"use strict";var i=r(6436),n=r(5772),o=r(7038),s=r(9746),a=i.sum32,h=i.sum32_4,u=i.sum32_5,c=o.ch32,l=o.maj32,d=o.s0_256,f=o.s1_256,A=o.g0_256,g=o.g1_256,M=n.BlockHash,B=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function w(){if(!(this instanceof w))return new w;M.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=B,this.W=new Array(64)}i.inherits(w,M),t.exports=w,w.blockSize=512,w.outSize=256,w.hmacStrength=192,w.padLength=64,w.prototype._update=function(t,e){for(var r=this.W,i=0;i<16;i++)r[i]=t[e+i];for(;i{"use strict";var i=r(6436),n=r(5900);function o(){if(!(this instanceof o))return new o;n.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}i.inherits(o,n),t.exports=o,o.blockSize=1024,o.outSize=384,o.hmacStrength=192,o.padLength=128,o.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h.slice(0,12),"big"):i.split32(this.h.slice(0,12),"big")}},5900:(t,e,r)=>{"use strict";var i=r(6436),n=r(5772),o=r(9746),s=i.rotr64_hi,a=i.rotr64_lo,h=i.shr64_hi,u=i.shr64_lo,c=i.sum64,l=i.sum64_hi,d=i.sum64_lo,f=i.sum64_4_hi,A=i.sum64_4_lo,g=i.sum64_5_hi,M=i.sum64_5_lo,B=n.BlockHash,w=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function E(){if(!(this instanceof E))return new E;B.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=w,this.W=new Array(160)}function p(t,e,r,i,n){var o=t&r^~t&n;return o<0&&(o+=4294967296),o}function m(t,e,r,i,n,o){var s=e&i^~e&o;return s<0&&(s+=4294967296),s}function y(t,e,r,i,n){var o=t&r^t&n^r&n;return o<0&&(o+=4294967296),o}function b(t,e,r,i,n,o){var s=e&i^e&o^i&o;return s<0&&(s+=4294967296),s}function Q(t,e){var r=s(t,e,28)^s(e,t,2)^s(e,t,7);return r<0&&(r+=4294967296),r}function I(t,e){var r=a(t,e,28)^a(e,t,2)^a(e,t,7);return r<0&&(r+=4294967296),r}function C(t,e){var r=a(t,e,14)^a(t,e,18)^a(e,t,9);return r<0&&(r+=4294967296),r}function D(t,e){var r=s(t,e,1)^s(t,e,8)^h(t,e,7);return r<0&&(r+=4294967296),r}function N(t,e){var r=a(t,e,1)^a(t,e,8)^u(t,e,7);return r<0&&(r+=4294967296),r}function v(t,e){var r=a(t,e,19)^a(e,t,29)^u(t,e,6);return r<0&&(r+=4294967296),r}i.inherits(E,B),t.exports=E,E.blockSize=1024,E.outSize=512,E.hmacStrength=192,E.padLength=128,E.prototype._prepareBlock=function(t,e){for(var r=this.W,i=0;i<32;i++)r[i]=t[e+i];for(;i{"use strict";var i=r(6436).rotr32;function n(t,e,r){return t&e^~t&r}function o(t,e,r){return t&e^t&r^e&r}function s(t,e,r){return t^e^r}e.ft_1=function(t,e,r,i){return 0===t?n(e,r,i):1===t||3===t?s(e,r,i):2===t?o(e,r,i):void 0},e.ch32=n,e.maj32=o,e.p32=s,e.s0_256=function(t){return i(t,2)^i(t,13)^i(t,22)},e.s1_256=function(t){return i(t,6)^i(t,11)^i(t,25)},e.g0_256=function(t){return i(t,7)^i(t,18)^t>>>3},e.g1_256=function(t){return i(t,17)^i(t,19)^t>>>10}},6436:(t,e,r)=>{"use strict";var i=r(9746),n=r(5717);function o(t,e){return 55296==(64512&t.charCodeAt(e))&&!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1))}function s(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function a(t){return 1===t.length?"0"+t:t}function h(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}e.inherits=n,e.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),n=0;n>6|192,r[i++]=63&s|128):o(t,n)?(s=65536+((1023&s)<<10)+(1023&t.charCodeAt(++n)),r[i++]=s>>18|240,r[i++]=s>>12&63|128,r[i++]=s>>6&63|128,r[i++]=63&s|128):(r[i++]=s>>12|224,r[i++]=s>>6&63|128,r[i++]=63&s|128)}else for(n=0;n>>0}return s},e.split32=function(t,e){for(var r=new Array(4*t.length),i=0,n=0;i>>24,r[n+1]=o>>>16&255,r[n+2]=o>>>8&255,r[n+3]=255&o):(r[n+3]=o>>>24,r[n+2]=o>>>16&255,r[n+1]=o>>>8&255,r[n]=255&o)}return r},e.rotr32=function(t,e){return t>>>e|t<<32-e},e.rotl32=function(t,e){return t<>>32-e},e.sum32=function(t,e){return t+e>>>0},e.sum32_3=function(t,e,r){return t+e+r>>>0},e.sum32_4=function(t,e,r,i){return t+e+r+i>>>0},e.sum32_5=function(t,e,r,i,n){return t+e+r+i+n>>>0},e.sum64=function(t,e,r,i){var n=t[e],o=i+t[e+1]>>>0,s=(o>>0,t[e+1]=o},e.sum64_hi=function(t,e,r,i){return(e+i>>>0>>0},e.sum64_lo=function(t,e,r,i){return e+i>>>0},e.sum64_4_hi=function(t,e,r,i,n,o,s,a){var h=0,u=e;return h+=(u=u+i>>>0)>>0)>>0)>>0},e.sum64_4_lo=function(t,e,r,i,n,o,s,a){return e+i+o+a>>>0},e.sum64_5_hi=function(t,e,r,i,n,o,s,a,h,u){var c=0,l=e;return c+=(l=l+i>>>0)>>0)>>0)>>0)>>0},e.sum64_5_lo=function(t,e,r,i,n,o,s,a,h,u){return e+i+o+a+u>>>0},e.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},e.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},e.shr64_hi=function(t,e,r){return t>>>r},e.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0}},2156:(t,e,r)=>{"use strict";var i=r(3715),n=r(4504),o=r(9746);function s(t){if(!(this instanceof s))return new s(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=n.toArray(t.entropy,t.entropyEnc||"hex"),r=n.toArray(t.nonce,t.nonceEnc||"hex"),i=n.toArray(t.pers,t.persEnc||"hex");o(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}t.exports=s,s.prototype._init=function(t,e,r){var i=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},s.prototype.generate=function(t,e,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(i=r,r=e,e=null),r&&(r=n.toArray(r,i||"hex"),this._update(r));for(var o=[];o.length{e.read=function(t,e,r,i,n){var o,s,a=8*n-i-1,h=(1<>1,c=-7,l=r?n-1:0,d=r?-1:1,f=t[e+l];for(l+=d,o=f&(1<<-c)-1,f>>=-c,c+=a;c>0;o=256*o+t[e+l],l+=d,c-=8);for(s=o&(1<<-c)-1,o>>=-c,c+=i;c>0;s=256*s+t[e+l],l+=d,c-=8);if(0===o)o=1-u;else{if(o===h)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,i),o-=u}return(f?-1:1)*s*Math.pow(2,o-i)},e.write=function(t,e,r,i,n,o){var s,a,h,u=8*o-n-1,c=(1<>1,d=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,f=i?0:o-1,A=i?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=c):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),(e+=s+l>=1?d/h:d*Math.pow(2,1-l))*h>=2&&(s++,h/=2),s+l>=c?(a=0,s=c):s+l>=1?(a=(e*h-1)*Math.pow(2,n),s+=l):(a=e*Math.pow(2,l-1)*Math.pow(2,n),s=0));n>=8;t[r+f]=255&a,f+=A,a/=256,n-=8);for(s=s<0;t[r+f]=255&s,f+=A,s/=256,u-=8);t[r+f-A]|=128*g}},5717:t=>{"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},2584:(t,e,r)=>{"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,n=r(1924)("Object.prototype.toString"),o=function(t){return!(i&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===n(t)},s=function(t){return!!o(t)||null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==n(t)&&"[object Function]"===n(t.callee)},a=function(){return o(arguments)}();o.isLegacyArguments=s,t.exports=a?o:s},8662:t=>{"use strict";var e,r=Object.prototype.toString,i=Function.prototype.toString,n=/^\s*(?:function)?\*/,o="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,s=Object.getPrototypeOf;t.exports=function(t){if("function"!=typeof t)return!1;if(n.test(i.call(t)))return!0;if(!o)return"[object GeneratorFunction]"===r.call(t);if(!s)return!1;if(void 0===e){var a=function(){if(!o)return!1;try{return Function("return function*() {}")()}catch(t){}}();e=!!a&&s(a)}return s(t)===e}},8611:t=>{"use strict";t.exports=function(t){return t!=t}},360:(t,e,r)=>{"use strict";var i=r(5559),n=r(4289),o=r(8611),s=r(9415),a=r(3194),h=i(s(),Number);n(h,{getPolyfill:s,implementation:o,shim:a}),t.exports=h},9415:(t,e,r)=>{"use strict";var i=r(8611);t.exports=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:i}},3194:(t,e,r)=>{"use strict";var i=r(4289),n=r(9415);t.exports=function(){var t=n();return i(Number,{isNaN:t},{isNaN:function(){return Number.isNaN!==t}}),t}},5692:(t,e,r)=>{"use strict";var i=r(9804),n=r(6314),o=r(1924),s=o("Object.prototype.toString"),a=r(1405)()&&"symbol"==typeof Symbol.toStringTag,h=n(),u=o("Array.prototype.indexOf",!0)||function(t,e){for(var r=0;r-1}return!!d&&function(t){var e=!1;return i(l,(function(r,i){if(!e)try{e=r.call(t)===i}catch(t){}})),e}(t)}},2318:(t,e,r)=>{"use strict";var i=r(5717),n=r(3349),o=r(9509).Buffer,s=new Array(16);function a(){n.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function h(t,e){return t<>>32-e}function u(t,e,r,i,n,o,s){return h(t+(e&r|~e&i)+n+o|0,s)+e|0}function c(t,e,r,i,n,o,s){return h(t+(e&i|r&~i)+n+o|0,s)+e|0}function l(t,e,r,i,n,o,s){return h(t+(e^r^i)+n+o|0,s)+e|0}function d(t,e,r,i,n,o,s){return h(t+(r^(e|~i))+n+o|0,s)+e|0}i(a,n),a.prototype._update=function(){for(var t=s,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);var r=this._a,i=this._b,n=this._c,o=this._d;r=u(r,i,n,o,t[0],3614090360,7),o=u(o,r,i,n,t[1],3905402710,12),n=u(n,o,r,i,t[2],606105819,17),i=u(i,n,o,r,t[3],3250441966,22),r=u(r,i,n,o,t[4],4118548399,7),o=u(o,r,i,n,t[5],1200080426,12),n=u(n,o,r,i,t[6],2821735955,17),i=u(i,n,o,r,t[7],4249261313,22),r=u(r,i,n,o,t[8],1770035416,7),o=u(o,r,i,n,t[9],2336552879,12),n=u(n,o,r,i,t[10],4294925233,17),i=u(i,n,o,r,t[11],2304563134,22),r=u(r,i,n,o,t[12],1804603682,7),o=u(o,r,i,n,t[13],4254626195,12),n=u(n,o,r,i,t[14],2792965006,17),r=c(r,i=u(i,n,o,r,t[15],1236535329,22),n,o,t[1],4129170786,5),o=c(o,r,i,n,t[6],3225465664,9),n=c(n,o,r,i,t[11],643717713,14),i=c(i,n,o,r,t[0],3921069994,20),r=c(r,i,n,o,t[5],3593408605,5),o=c(o,r,i,n,t[10],38016083,9),n=c(n,o,r,i,t[15],3634488961,14),i=c(i,n,o,r,t[4],3889429448,20),r=c(r,i,n,o,t[9],568446438,5),o=c(o,r,i,n,t[14],3275163606,9),n=c(n,o,r,i,t[3],4107603335,14),i=c(i,n,o,r,t[8],1163531501,20),r=c(r,i,n,o,t[13],2850285829,5),o=c(o,r,i,n,t[2],4243563512,9),n=c(n,o,r,i,t[7],1735328473,14),r=l(r,i=c(i,n,o,r,t[12],2368359562,20),n,o,t[5],4294588738,4),o=l(o,r,i,n,t[8],2272392833,11),n=l(n,o,r,i,t[11],1839030562,16),i=l(i,n,o,r,t[14],4259657740,23),r=l(r,i,n,o,t[1],2763975236,4),o=l(o,r,i,n,t[4],1272893353,11),n=l(n,o,r,i,t[7],4139469664,16),i=l(i,n,o,r,t[10],3200236656,23),r=l(r,i,n,o,t[13],681279174,4),o=l(o,r,i,n,t[0],3936430074,11),n=l(n,o,r,i,t[3],3572445317,16),i=l(i,n,o,r,t[6],76029189,23),r=l(r,i,n,o,t[9],3654602809,4),o=l(o,r,i,n,t[12],3873151461,11),n=l(n,o,r,i,t[15],530742520,16),r=d(r,i=l(i,n,o,r,t[2],3299628645,23),n,o,t[0],4096336452,6),o=d(o,r,i,n,t[7],1126891415,10),n=d(n,o,r,i,t[14],2878612391,15),i=d(i,n,o,r,t[5],4237533241,21),r=d(r,i,n,o,t[12],1700485571,6),o=d(o,r,i,n,t[3],2399980690,10),n=d(n,o,r,i,t[10],4293915773,15),i=d(i,n,o,r,t[1],2240044497,21),r=d(r,i,n,o,t[8],1873313359,6),o=d(o,r,i,n,t[15],4264355552,10),n=d(n,o,r,i,t[6],2734768916,15),i=d(i,n,o,r,t[13],1309151649,21),r=d(r,i,n,o,t[4],4149444226,6),o=d(o,r,i,n,t[11],3174756917,10),n=d(n,o,r,i,t[2],718787259,15),i=d(i,n,o,r,t[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+i|0,this._c=this._c+n|0,this._d=this._d+o|0},a.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=o.allocUnsafe(16);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t},t.exports=a},3047:(t,e,r)=>{var i=r(6240),n=r(9931);function o(t){this.rand=t||new n.Rand}t.exports=o,o.create=function(t){return new o(t)},o.prototype._randbelow=function(t){var e=t.bitLength(),r=Math.ceil(e/8);do{var n=new i(this.rand.generate(r))}while(n.cmp(t)>=0);return n},o.prototype._randrange=function(t,e){var r=e.sub(t);return t.add(this._randbelow(r))},o.prototype.test=function(t,e,r){var n=t.bitLength(),o=i.mont(t),s=new i(1).toRed(o);e||(e=Math.max(1,n/48|0));for(var a=t.subn(1),h=0;!a.testn(h);h++);for(var u=t.shrn(h),c=a.toRed(o);e>0;e--){var l=this._randrange(new i(2),a);r&&r(l);var d=l.toRed(o).redPow(u);if(0!==d.cmp(s)&&0!==d.cmp(c)){for(var f=1;f0;e--){var c=this._randrange(new i(2),s),l=t.gcd(c);if(0!==l.cmpn(1))return l;var d=c.toRed(n).redPow(h);if(0!==d.cmp(o)&&0!==d.cmp(u)){for(var f=1;f=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,c=r;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,d=Math.min(u,e.length-1),f=Math.max(0,u-t.length+1);f<=d;f++){var A=u-f|0;c+=(s=(n=0|t.words[A])*(o=0|e.words[f])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|c}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?c[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=l[t],f=d[t];r="";var A=this.clone();for(A.negative=0;!A.isZero();){var g=A.modn(f).toString(t);r=(A=A.idivn(f)).isZero()?g+r:c[u-g.length]+g+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),c=this.clone();if(h){for(a=0;!c.isZero();a++)s=c.andln(255),c.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],A=8191&f,g=f>>>13,M=0|s[2],B=8191&M,w=M>>>13,E=0|s[3],p=8191&E,m=E>>>13,y=0|s[4],b=8191&y,Q=y>>>13,I=0|s[5],C=8191&I,D=I>>>13,N=0|s[6],v=8191&N,G=N>>>13,R=0|s[7],Y=8191&R,U=R>>>13,V=0|s[8],T=8191&V,S=V>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,H=j>>>13,z=0|a[1],x=8191&z,O=z>>>13,W=0|a[2],J=8191&W,X=W>>>13,K=0|a[3],P=8191&K,_=K>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ct=0|a[8],lt=8191&ct,dt=ct>>>13,ft=0|a[9],At=8191&ft,gt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(l,Z))|0)+((8191&(n=(n=Math.imul(l,H))+Math.imul(d,Z)|0))<<13)|0;u=((o=Math.imul(d,H))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(A,Z),n=(n=Math.imul(A,H))+Math.imul(g,Z)|0,o=Math.imul(g,H);var Bt=(u+(i=i+Math.imul(l,x)|0)|0)+((8191&(n=(n=n+Math.imul(l,O)|0)+Math.imul(d,x)|0))<<13)|0;u=((o=o+Math.imul(d,O)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(B,Z),n=(n=Math.imul(B,H))+Math.imul(w,Z)|0,o=Math.imul(w,H),i=i+Math.imul(A,x)|0,n=(n=n+Math.imul(A,O)|0)+Math.imul(g,x)|0,o=o+Math.imul(g,O)|0;var wt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(d,J)|0))<<13)|0;u=((o=o+Math.imul(d,X)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,H))+Math.imul(m,Z)|0,o=Math.imul(m,H),i=i+Math.imul(B,x)|0,n=(n=n+Math.imul(B,O)|0)+Math.imul(w,x)|0,o=o+Math.imul(w,O)|0,i=i+Math.imul(A,J)|0,n=(n=n+Math.imul(A,X)|0)+Math.imul(g,J)|0,o=o+Math.imul(g,X)|0;var Et=(u+(i=i+Math.imul(l,P)|0)|0)+((8191&(n=(n=n+Math.imul(l,_)|0)+Math.imul(d,P)|0))<<13)|0;u=((o=o+Math.imul(d,_)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,H))+Math.imul(Q,Z)|0,o=Math.imul(Q,H),i=i+Math.imul(p,x)|0,n=(n=n+Math.imul(p,O)|0)+Math.imul(m,x)|0,o=o+Math.imul(m,O)|0,i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,X)|0)+Math.imul(w,J)|0,o=o+Math.imul(w,X)|0,i=i+Math.imul(A,P)|0,n=(n=n+Math.imul(A,_)|0)+Math.imul(g,P)|0,o=o+Math.imul(g,_)|0;var pt=(u+(i=i+Math.imul(l,$)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(d,$)|0))<<13)|0;u=((o=o+Math.imul(d,tt)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,H))+Math.imul(D,Z)|0,o=Math.imul(D,H),i=i+Math.imul(b,x)|0,n=(n=n+Math.imul(b,O)|0)+Math.imul(Q,x)|0,o=o+Math.imul(Q,O)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0,i=i+Math.imul(B,P)|0,n=(n=n+Math.imul(B,_)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,_)|0,i=i+Math.imul(A,$)|0,n=(n=n+Math.imul(A,tt)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,tt)|0;var mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(d,rt)|0))<<13)|0;u=((o=o+Math.imul(d,it)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(v,Z),n=(n=Math.imul(v,H))+Math.imul(G,Z)|0,o=Math.imul(G,H),i=i+Math.imul(C,x)|0,n=(n=n+Math.imul(C,O)|0)+Math.imul(D,x)|0,o=o+Math.imul(D,O)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(Q,J)|0,o=o+Math.imul(Q,X)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,_)|0)+Math.imul(m,P)|0,o=o+Math.imul(m,_)|0,i=i+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(A,rt)|0,n=(n=n+Math.imul(A,it)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0;var yt=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(d,ot)|0))<<13)|0;u=((o=o+Math.imul(d,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Y,Z),n=(n=Math.imul(Y,H))+Math.imul(U,Z)|0,o=Math.imul(U,H),i=i+Math.imul(v,x)|0,n=(n=n+Math.imul(v,O)|0)+Math.imul(G,x)|0,o=o+Math.imul(G,O)|0,i=i+Math.imul(C,J)|0,n=(n=n+Math.imul(C,X)|0)+Math.imul(D,J)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,_)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,_)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0,i=i+Math.imul(B,rt)|0,n=(n=n+Math.imul(B,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(A,ot)|0,n=(n=n+Math.imul(A,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var bt=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(d,ht)|0))<<13)|0;u=((o=o+Math.imul(d,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,H))+Math.imul(S,Z)|0,o=Math.imul(S,H),i=i+Math.imul(Y,x)|0,n=(n=n+Math.imul(Y,O)|0)+Math.imul(U,x)|0,o=o+Math.imul(U,O)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(G,J)|0,o=o+Math.imul(G,X)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,_)|0)+Math.imul(D,P)|0,o=o+Math.imul(D,_)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0,i=i+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(A,ht)|0,n=(n=n+Math.imul(A,ut)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,ut)|0;var Qt=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,dt)|0)+Math.imul(d,lt)|0))<<13)|0;u=((o=o+Math.imul(d,dt)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,H))+Math.imul(L,Z)|0,o=Math.imul(L,H),i=i+Math.imul(T,x)|0,n=(n=n+Math.imul(T,O)|0)+Math.imul(S,x)|0,o=o+Math.imul(S,O)|0,i=i+Math.imul(Y,J)|0,n=(n=n+Math.imul(Y,X)|0)+Math.imul(U,J)|0,o=o+Math.imul(U,X)|0,i=i+Math.imul(v,P)|0,n=(n=n+Math.imul(v,_)|0)+Math.imul(G,P)|0,o=o+Math.imul(G,_)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0,i=i+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(A,lt)|0,n=(n=n+Math.imul(A,dt)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,dt)|0;var It=(u+(i=i+Math.imul(l,At)|0)|0)+((8191&(n=(n=n+Math.imul(l,gt)|0)+Math.imul(d,At)|0))<<13)|0;u=((o=o+Math.imul(d,gt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,x),n=(n=Math.imul(F,O))+Math.imul(L,x)|0,o=Math.imul(L,O),i=i+Math.imul(T,J)|0,n=(n=n+Math.imul(T,X)|0)+Math.imul(S,J)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(Y,P)|0,n=(n=n+Math.imul(Y,_)|0)+Math.imul(U,P)|0,o=o+Math.imul(U,_)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(G,$)|0,o=o+Math.imul(G,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(D,rt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0,i=i+Math.imul(B,lt)|0,n=(n=n+Math.imul(B,dt)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,dt)|0;var Ct=(u+(i=i+Math.imul(A,At)|0)|0)+((8191&(n=(n=n+Math.imul(A,gt)|0)+Math.imul(g,At)|0))<<13)|0;u=((o=o+Math.imul(g,gt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,X))+Math.imul(L,J)|0,o=Math.imul(L,X),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,_)|0)+Math.imul(S,P)|0,o=o+Math.imul(S,_)|0,i=i+Math.imul(Y,$)|0,n=(n=n+Math.imul(Y,tt)|0)+Math.imul(U,$)|0,o=o+Math.imul(U,tt)|0,i=i+Math.imul(v,rt)|0,n=(n=n+Math.imul(v,it)|0)+Math.imul(G,rt)|0,o=o+Math.imul(G,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,dt)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,dt)|0;var Dt=(u+(i=i+Math.imul(B,At)|0)|0)+((8191&(n=(n=n+Math.imul(B,gt)|0)+Math.imul(w,At)|0))<<13)|0;u=((o=o+Math.imul(w,gt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,_))+Math.imul(L,P)|0,o=Math.imul(L,_),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(S,$)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(Y,rt)|0,n=(n=n+Math.imul(Y,it)|0)+Math.imul(U,rt)|0,o=o+Math.imul(U,it)|0,i=i+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,st)|0)+Math.imul(G,ot)|0,o=o+Math.imul(G,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,dt)|0)+Math.imul(Q,lt)|0,o=o+Math.imul(Q,dt)|0;var Nt=(u+(i=i+Math.imul(p,At)|0)|0)+((8191&(n=(n=n+Math.imul(p,gt)|0)+Math.imul(m,At)|0))<<13)|0;u=((o=o+Math.imul(m,gt)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(Y,ot)|0,n=(n=n+Math.imul(Y,st)|0)+Math.imul(U,ot)|0,o=o+Math.imul(U,st)|0,i=i+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(G,ht)|0,o=o+Math.imul(G,ut)|0,i=i+Math.imul(C,lt)|0,n=(n=n+Math.imul(C,dt)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,dt)|0;var vt=(u+(i=i+Math.imul(b,At)|0)|0)+((8191&(n=(n=n+Math.imul(b,gt)|0)+Math.imul(Q,At)|0))<<13)|0;u=((o=o+Math.imul(Q,gt)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(Y,ht)|0,n=(n=n+Math.imul(Y,ut)|0)+Math.imul(U,ht)|0,o=o+Math.imul(U,ut)|0,i=i+Math.imul(v,lt)|0,n=(n=n+Math.imul(v,dt)|0)+Math.imul(G,lt)|0,o=o+Math.imul(G,dt)|0;var Gt=(u+(i=i+Math.imul(C,At)|0)|0)+((8191&(n=(n=n+Math.imul(C,gt)|0)+Math.imul(D,At)|0))<<13)|0;u=((o=o+Math.imul(D,gt)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,ut)|0,i=i+Math.imul(Y,lt)|0,n=(n=n+Math.imul(Y,dt)|0)+Math.imul(U,lt)|0,o=o+Math.imul(U,dt)|0;var Rt=(u+(i=i+Math.imul(v,At)|0)|0)+((8191&(n=(n=n+Math.imul(v,gt)|0)+Math.imul(G,At)|0))<<13)|0;u=((o=o+Math.imul(G,gt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,lt)|0,n=(n=n+Math.imul(T,dt)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,dt)|0;var Yt=(u+(i=i+Math.imul(Y,At)|0)|0)+((8191&(n=(n=n+Math.imul(Y,gt)|0)+Math.imul(U,At)|0))<<13)|0;u=((o=o+Math.imul(U,gt)|0)+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(F,lt),n=(n=Math.imul(F,dt))+Math.imul(L,lt)|0,o=Math.imul(L,dt);var Ut=(u+(i=i+Math.imul(T,At)|0)|0)+((8191&(n=(n=n+Math.imul(T,gt)|0)+Math.imul(S,At)|0))<<13)|0;u=((o=o+Math.imul(S,gt)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863;var Vt=(u+(i=Math.imul(F,At))|0)+((8191&(n=(n=Math.imul(F,gt))+Math.imul(L,At)|0))<<13)|0;return u=((o=Math.imul(L,gt))+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,h[0]=Mt,h[1]=Bt,h[2]=wt,h[3]=Et,h[4]=pt,h[5]=mt,h[6]=yt,h[7]=bt,h[8]=Qt,h[9]=It,h[10]=Ct,h[11]=Dt,h[12]=Nt,h[13]=vt,h[14]=Gt,h[15]=Rt,h[16]=Yt,h[17]=Ut,h[18]=Vt,0!==u&&(h[19]=u,r.length++),r};function g(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(A=f),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?A(this,t,e):r<63?f(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):g(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==c||u>=n);u--){var l=0|this.words[u];this.words[u]=c<<26-o|l>>>o,c=l&a}return h&&0!==c&&(h.words[h.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var d=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(n,d,l);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=d)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var c=r.clone(),l=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(c),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var A=0,g=1;0==(r.words[0]&g)&&A<26;++A,g<<=1);if(A>0)for(r.iushrn(A);A-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(c),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,c=1;0==(e.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,d=1;0==(r.words[0]&d)&&l<26;++l,d<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var B={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function E(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function p(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function m(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function Q(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(E,w),E.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},E.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(B[t])return B[t];var e;if("k256"===t)e=new E;else if("p224"===t)e=new p;else if("p192"===t)e=new m;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return B[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);0!==this.pow(c,u).cmp(h);)c.redIAdd(h);for(var l=this.pow(c,n),d=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),A=s;0!==f.cmp(a);){for(var g=f,M=0;0!==g.cmp(a);M++)g=g.redSqr();i(M=0;i--){for(var u=e.words[i],c=h-1;c>=0;c--){var l=u>>c&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4==++a||0===i&&0===c)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new Q(t)},n(Q,b),Q.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},Q.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},Q.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},Q.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},Q.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},9746:t=>{function e(t,e){if(!t)throw new Error(e||"Assertion failed")}t.exports=e,e.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)}},4504:(t,e)=>{"use strict";var r=e;function i(t){return 1===t.length?"0"+t:t}function n(t){for(var e="",r=0;r>8,s=255&n;o?r.push(o,s):r.push(s)}return r},r.zero2=i,r.toHex=n,r.encode=function(t,e){return"hex"===e?n(t):t}},4244:t=>{"use strict";var e=function(t){return t!=t};t.exports=function(t,r){return 0===t&&0===r?1/t==1/r:t===r||!(!e(t)||!e(r))}},609:(t,e,r)=>{"use strict";var i=r(4289),n=r(5559),o=r(4244),s=r(5624),a=r(2281),h=n(s(),Object);i(h,{getPolyfill:s,implementation:o,shim:a}),t.exports=h},5624:(t,e,r)=>{"use strict";var i=r(4244);t.exports=function(){return"function"==typeof Object.is?Object.is:i}},2281:(t,e,r)=>{"use strict";var i=r(5624),n=r(4289);t.exports=function(){var t=i();return n(Object,{is:t},{is:function(){return Object.is!==t}}),t}},8987:(t,e,r)=>{"use strict";var i;if(!Object.keys){var n=Object.prototype.hasOwnProperty,o=Object.prototype.toString,s=r(1414),a=Object.prototype.propertyIsEnumerable,h=!a.call({toString:null},"toString"),u=a.call((function(){}),"prototype"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],l=function(t){var e=t.constructor;return e&&e.prototype===t},d={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},f=function(){if("undefined"==typeof window)return!1;for(var t in window)try{if(!d["$"+t]&&n.call(window,t)&&null!==window[t]&&"object"==typeof window[t])try{l(window[t])}catch(t){return!0}}catch(t){return!0}return!1}();i=function(t){var e=null!==t&&"object"==typeof t,r="[object Function]"===o.call(t),i=s(t),a=e&&"[object String]"===o.call(t),d=[];if(!e&&!r&&!i)throw new TypeError("Object.keys called on a non-object");var A=u&&r;if(a&&t.length>0&&!n.call(t,0))for(var g=0;g0)for(var M=0;M{"use strict";var i=Array.prototype.slice,n=r(1414),o=Object.keys,s=o?function(t){return o(t)}:r(8987),a=Object.keys;s.shim=function(){return Object.keys?function(){var t=Object.keys(arguments);return t&&t.length===arguments.length}(1,2)||(Object.keys=function(t){return n(t)?a(i.call(t)):a(t)}):Object.keys=s,Object.keys||s},t.exports=s},1414:t=>{"use strict";var e=Object.prototype.toString;t.exports=function(t){var r=e.call(t),i="[object Arguments]"===r;return i||(i="[object Array]"!==r&&null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Function]"===e.call(t.callee)),i}},873:t=>{"use strict";t.exports=JSON.parse('{"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}')},2818:(t,e,r)=>{"use strict";var i=r(9809);e.certificate=r(1934);var n=i.define("RSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())}));e.RSAPrivateKey=n;var o=i.define("RSAPublicKey",(function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())}));e.RSAPublicKey=o;var s=i.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(a),this.key("subjectPublicKey").bitstr())}));e.PublicKey=s;var a=i.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())})),h=i.define("PrivateKeyInfo",(function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(a),this.key("subjectPrivateKey").octstr())}));e.PrivateKey=h;var u=i.define("EncryptedPrivateKeyInfo",(function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())}));e.EncryptedPrivateKey=u;var c=i.define("DSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())}));e.DSAPrivateKey=c,e.DSAparam=i.define("DSAparam",(function(){this.int()}));var l=i.define("ECPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(d),this.key("publicKey").optional().explicit(1).bitstr())}));e.ECPrivateKey=l;var d=i.define("ECParameters",(function(){this.choice({namedCurve:this.objid()})}));e.signature=i.define("signature",(function(){this.seq().obj(this.key("r").int(),this.key("s").int())}))},1934:(t,e,r)=>{"use strict";var i=r(9809),n=i.define("Time",(function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})})),o=i.define("AttributeTypeValue",(function(){this.seq().obj(this.key("type").objid(),this.key("value").any())})),s=i.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())})),a=i.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(s),this.key("subjectPublicKey").bitstr())})),h=i.define("RelativeDistinguishedName",(function(){this.setof(o)})),u=i.define("RDNSequence",(function(){this.seqof(h)})),c=i.define("Name",(function(){this.choice({rdnSequence:this.use(u)})})),l=i.define("Validity",(function(){this.seq().obj(this.key("notBefore").use(n),this.key("notAfter").use(n))})),d=i.define("Extension",(function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())})),f=i.define("TBSCertificate",(function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(s),this.key("issuer").use(c),this.key("validity").use(l),this.key("subject").use(c),this.key("subjectPublicKeyInfo").use(a),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(d).optional())})),A=i.define("X509Certificate",(function(){this.seq().obj(this.key("tbsCertificate").use(f),this.key("signatureAlgorithm").use(s),this.key("signatureValue").bitstr())}));t.exports=A},7631:(t,e,r)=>{var i=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,n=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,o=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,s=r(3048),a=r(4696),h=r(9509).Buffer;t.exports=function(t,e){var r,u=t.toString(),c=u.match(i);if(c){var l="aes"+c[1],d=h.from(c[2],"hex"),f=h.from(c[3].replace(/[\r\n]/g,""),"base64"),A=s(e,d.slice(0,8),parseInt(c[1],10)).key,g=[],M=a.createDecipheriv(l,A,d);g.push(M.update(f)),g.push(M.final()),r=h.concat(g)}else{var B=u.match(o);r=h.from(B[2].replace(/[\r\n]/g,""),"base64")}return{tag:u.match(n)[1],data:r}}},980:(t,e,r)=>{var i=r(2818),n=r(873),o=r(7631),s=r(4696),a=r(5632),h=r(9509).Buffer;function u(t){var e;"object"!=typeof t||h.isBuffer(t)||(e=t.passphrase,t=t.key),"string"==typeof t&&(t=h.from(t));var r,u,c=o(t,e),l=c.tag,d=c.data;switch(l){case"CERTIFICATE":u=i.certificate.decode(d,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(u||(u=i.PublicKey.decode(d,"der")),r=u.algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return i.RSAPublicKey.decode(u.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return u.subjectPrivateKey=u.subjectPublicKey,{type:"ec",data:u};case"1.2.840.10040.4.1":return u.algorithm.params.pub_key=i.DSAparam.decode(u.subjectPublicKey.data,"der"),{type:"dsa",data:u.algorithm.params};default:throw new Error("unknown key id "+r)}case"ENCRYPTED PRIVATE KEY":d=function(t,e){var r=t.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(),10),o=n[t.algorithm.decrypt.cipher.algo.join(".")],u=t.algorithm.decrypt.cipher.iv,c=t.subjectPrivateKey,l=parseInt(o.split("-")[1],10)/8,d=a.pbkdf2Sync(e,r,i,l,"sha1"),f=s.createDecipheriv(o,d,u),A=[];return A.push(f.update(c)),A.push(f.final()),h.concat(A)}(d=i.EncryptedPrivateKey.decode(d,"der"),e);case"PRIVATE KEY":switch(r=(u=i.PrivateKey.decode(d,"der")).algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return i.RSAPrivateKey.decode(u.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:u.algorithm.curve,privateKey:i.ECPrivateKey.decode(u.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return u.algorithm.params.priv_key=i.DSAparam.decode(u.subjectPrivateKey,"der"),{type:"dsa",params:u.algorithm.params};default:throw new Error("unknown key id "+r)}case"RSA PUBLIC KEY":return i.RSAPublicKey.decode(d,"der");case"RSA PRIVATE KEY":return i.RSAPrivateKey.decode(d,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:i.DSAPrivateKey.decode(d,"der")};case"EC PRIVATE KEY":return{curve:(d=i.ECPrivateKey.decode(d,"der")).parameters.value,privateKey:d.privateKey};default:throw new Error("unknown key type "+l)}}t.exports=u,u.signature=i.signature},5632:(t,e,r)=>{e.pbkdf2=r(8638),e.pbkdf2Sync=r(1257)},8638:(t,e,r)=>{var i,n,o=r(9509).Buffer,s=r(7357),a=r(2368),h=r(1257),u=r(7777),c=r.g.crypto&&r.g.crypto.subtle,l={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},d=[];function f(){return n||(n=r.g.process&&r.g.process.nextTick?r.g.process.nextTick:r.g.queueMicrotask?r.g.queueMicrotask:r.g.setImmediate?r.g.setImmediate:r.g.setTimeout)}function A(t,e,r,i,n){return c.importKey("raw",t,{name:"PBKDF2"},!1,["deriveBits"]).then((function(t){return c.deriveBits({name:"PBKDF2",salt:e,iterations:r,hash:{name:n}},t,i<<3)})).then((function(t){return o.from(t)}))}t.exports=function(t,e,n,g,M,B){"function"==typeof M&&(B=M,M=void 0);var w=l[(M=M||"sha1").toLowerCase()];if(w&&"function"==typeof r.g.Promise){if(s(n,g),t=u(t,a,"Password"),e=u(e,a,"Salt"),"function"!=typeof B)throw new Error("No callback provided to pbkdf2");!function(t,e){t.then((function(t){f()((function(){e(null,t)}))}),(function(t){f()((function(){e(t)}))}))}(function(t){if(r.g.process&&!r.g.process.browser)return Promise.resolve(!1);if(!c||!c.importKey||!c.deriveBits)return Promise.resolve(!1);if(void 0!==d[t])return d[t];var e=A(i=i||o.alloc(8),i,10,128,t).then((function(){return!0})).catch((function(){return!1}));return d[t]=e,e}(w).then((function(r){return r?A(t,e,n,g,w):h(t,e,n,g,M)})),B)}else f()((function(){var r;try{r=h(t,e,n,g,M)}catch(t){return B(t)}B(null,r)}))}},2368:(t,e,r)=>{var i,n=r(4155);i=r.g.process&&r.g.process.browser?"utf-8":r.g.process&&r.g.process.version?parseInt(n.version.split(".")[0].slice(1),10)>=6?"utf-8":"binary":"utf-8",t.exports=i},7357:t=>{var e=Math.pow(2,30)-1;t.exports=function(t,r){if("number"!=typeof t)throw new TypeError("Iterations not a number");if(t<0)throw new TypeError("Bad iterations");if("number"!=typeof r)throw new TypeError("Key length not a number");if(r<0||r>e||r!=r)throw new TypeError("Bad key length")}},1257:(t,e,r)=>{var i=r(8028),n=r(9785),o=r(9072),s=r(9509).Buffer,a=r(7357),h=r(2368),u=r(7777),c=s.alloc(128),l={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function d(t,e,r){var a=function(t){return"rmd160"===t||"ripemd160"===t?function(t){return(new n).update(t).digest()}:"md5"===t?i:function(e){return o(t).update(e).digest()}}(t),h="sha512"===t||"sha384"===t?128:64;e.length>h?e=a(e):e.length{var i=r(9509).Buffer;t.exports=function(t,e,r){if(i.isBuffer(t))return t;if("string"==typeof t)return i.from(t,e);if(ArrayBuffer.isView(t))return i.from(t.buffer);throw new TypeError(r+" must be a string, a Buffer, a typed array or a DataView")}},4155:t=>{var e,r,i=t.exports={};function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(e===setTimeout)return setTimeout(t,0);if((e===n||!e)&&setTimeout)return e=setTimeout,setTimeout(t,0);try{return e(t,0)}catch(r){try{return e.call(null,t,0)}catch(r){return e.call(this,t,0)}}}!function(){try{e="function"==typeof setTimeout?setTimeout:n}catch(t){e=n}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var a,h=[],u=!1,c=-1;function l(){u&&a&&(u=!1,a.length?h=a.concat(h):c=-1,h.length&&d())}function d(){if(!u){var t=s(l);u=!0;for(var e=h.length;e;){for(a=h,h=[];++c1)for(var r=1;r{e.publicEncrypt=r(6559),e.privateDecrypt=r(6138),e.privateEncrypt=function(t,r){return e.publicEncrypt(t,r,!0)},e.publicDecrypt=function(t,r){return e.privateDecrypt(t,r,!0)}},9199:(t,e,r)=>{var i=r(3482),n=r(9509).Buffer;function o(t){var e=n.allocUnsafe(4);return e.writeUInt32BE(t,0),e}t.exports=function(t,e){for(var r,s=n.alloc(0),a=0;s.length=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,c=r;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,d=Math.min(u,e.length-1),f=Math.max(0,u-t.length+1);f<=d;f++){var A=u-f|0;c+=(s=(n=0|t.words[A])*(o=0|e.words[f])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|c}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?c[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=l[t],f=d[t];r="";var A=this.clone();for(A.negative=0;!A.isZero();){var g=A.modn(f).toString(t);r=(A=A.idivn(f)).isZero()?g+r:c[u-g.length]+g+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),c=this.clone();if(h){for(a=0;!c.isZero();a++)s=c.andln(255),c.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],A=8191&f,g=f>>>13,M=0|s[2],B=8191&M,w=M>>>13,E=0|s[3],p=8191&E,m=E>>>13,y=0|s[4],b=8191&y,Q=y>>>13,I=0|s[5],C=8191&I,D=I>>>13,N=0|s[6],v=8191&N,G=N>>>13,R=0|s[7],Y=8191&R,U=R>>>13,V=0|s[8],T=8191&V,S=V>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,H=j>>>13,z=0|a[1],x=8191&z,O=z>>>13,W=0|a[2],J=8191&W,X=W>>>13,K=0|a[3],P=8191&K,_=K>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ct=0|a[8],lt=8191&ct,dt=ct>>>13,ft=0|a[9],At=8191&ft,gt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(l,Z))|0)+((8191&(n=(n=Math.imul(l,H))+Math.imul(d,Z)|0))<<13)|0;u=((o=Math.imul(d,H))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(A,Z),n=(n=Math.imul(A,H))+Math.imul(g,Z)|0,o=Math.imul(g,H);var Bt=(u+(i=i+Math.imul(l,x)|0)|0)+((8191&(n=(n=n+Math.imul(l,O)|0)+Math.imul(d,x)|0))<<13)|0;u=((o=o+Math.imul(d,O)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(B,Z),n=(n=Math.imul(B,H))+Math.imul(w,Z)|0,o=Math.imul(w,H),i=i+Math.imul(A,x)|0,n=(n=n+Math.imul(A,O)|0)+Math.imul(g,x)|0,o=o+Math.imul(g,O)|0;var wt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(d,J)|0))<<13)|0;u=((o=o+Math.imul(d,X)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,H))+Math.imul(m,Z)|0,o=Math.imul(m,H),i=i+Math.imul(B,x)|0,n=(n=n+Math.imul(B,O)|0)+Math.imul(w,x)|0,o=o+Math.imul(w,O)|0,i=i+Math.imul(A,J)|0,n=(n=n+Math.imul(A,X)|0)+Math.imul(g,J)|0,o=o+Math.imul(g,X)|0;var Et=(u+(i=i+Math.imul(l,P)|0)|0)+((8191&(n=(n=n+Math.imul(l,_)|0)+Math.imul(d,P)|0))<<13)|0;u=((o=o+Math.imul(d,_)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,H))+Math.imul(Q,Z)|0,o=Math.imul(Q,H),i=i+Math.imul(p,x)|0,n=(n=n+Math.imul(p,O)|0)+Math.imul(m,x)|0,o=o+Math.imul(m,O)|0,i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,X)|0)+Math.imul(w,J)|0,o=o+Math.imul(w,X)|0,i=i+Math.imul(A,P)|0,n=(n=n+Math.imul(A,_)|0)+Math.imul(g,P)|0,o=o+Math.imul(g,_)|0;var pt=(u+(i=i+Math.imul(l,$)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(d,$)|0))<<13)|0;u=((o=o+Math.imul(d,tt)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,H))+Math.imul(D,Z)|0,o=Math.imul(D,H),i=i+Math.imul(b,x)|0,n=(n=n+Math.imul(b,O)|0)+Math.imul(Q,x)|0,o=o+Math.imul(Q,O)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0,i=i+Math.imul(B,P)|0,n=(n=n+Math.imul(B,_)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,_)|0,i=i+Math.imul(A,$)|0,n=(n=n+Math.imul(A,tt)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,tt)|0;var mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(d,rt)|0))<<13)|0;u=((o=o+Math.imul(d,it)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(v,Z),n=(n=Math.imul(v,H))+Math.imul(G,Z)|0,o=Math.imul(G,H),i=i+Math.imul(C,x)|0,n=(n=n+Math.imul(C,O)|0)+Math.imul(D,x)|0,o=o+Math.imul(D,O)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(Q,J)|0,o=o+Math.imul(Q,X)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,_)|0)+Math.imul(m,P)|0,o=o+Math.imul(m,_)|0,i=i+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(A,rt)|0,n=(n=n+Math.imul(A,it)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0;var yt=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(d,ot)|0))<<13)|0;u=((o=o+Math.imul(d,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Y,Z),n=(n=Math.imul(Y,H))+Math.imul(U,Z)|0,o=Math.imul(U,H),i=i+Math.imul(v,x)|0,n=(n=n+Math.imul(v,O)|0)+Math.imul(G,x)|0,o=o+Math.imul(G,O)|0,i=i+Math.imul(C,J)|0,n=(n=n+Math.imul(C,X)|0)+Math.imul(D,J)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,_)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,_)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0,i=i+Math.imul(B,rt)|0,n=(n=n+Math.imul(B,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(A,ot)|0,n=(n=n+Math.imul(A,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var bt=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(d,ht)|0))<<13)|0;u=((o=o+Math.imul(d,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,H))+Math.imul(S,Z)|0,o=Math.imul(S,H),i=i+Math.imul(Y,x)|0,n=(n=n+Math.imul(Y,O)|0)+Math.imul(U,x)|0,o=o+Math.imul(U,O)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(G,J)|0,o=o+Math.imul(G,X)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,_)|0)+Math.imul(D,P)|0,o=o+Math.imul(D,_)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0,i=i+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(A,ht)|0,n=(n=n+Math.imul(A,ut)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,ut)|0;var Qt=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,dt)|0)+Math.imul(d,lt)|0))<<13)|0;u=((o=o+Math.imul(d,dt)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,H))+Math.imul(L,Z)|0,o=Math.imul(L,H),i=i+Math.imul(T,x)|0,n=(n=n+Math.imul(T,O)|0)+Math.imul(S,x)|0,o=o+Math.imul(S,O)|0,i=i+Math.imul(Y,J)|0,n=(n=n+Math.imul(Y,X)|0)+Math.imul(U,J)|0,o=o+Math.imul(U,X)|0,i=i+Math.imul(v,P)|0,n=(n=n+Math.imul(v,_)|0)+Math.imul(G,P)|0,o=o+Math.imul(G,_)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0,i=i+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(A,lt)|0,n=(n=n+Math.imul(A,dt)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,dt)|0;var It=(u+(i=i+Math.imul(l,At)|0)|0)+((8191&(n=(n=n+Math.imul(l,gt)|0)+Math.imul(d,At)|0))<<13)|0;u=((o=o+Math.imul(d,gt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,x),n=(n=Math.imul(F,O))+Math.imul(L,x)|0,o=Math.imul(L,O),i=i+Math.imul(T,J)|0,n=(n=n+Math.imul(T,X)|0)+Math.imul(S,J)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(Y,P)|0,n=(n=n+Math.imul(Y,_)|0)+Math.imul(U,P)|0,o=o+Math.imul(U,_)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(G,$)|0,o=o+Math.imul(G,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(D,rt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0,i=i+Math.imul(B,lt)|0,n=(n=n+Math.imul(B,dt)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,dt)|0;var Ct=(u+(i=i+Math.imul(A,At)|0)|0)+((8191&(n=(n=n+Math.imul(A,gt)|0)+Math.imul(g,At)|0))<<13)|0;u=((o=o+Math.imul(g,gt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,X))+Math.imul(L,J)|0,o=Math.imul(L,X),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,_)|0)+Math.imul(S,P)|0,o=o+Math.imul(S,_)|0,i=i+Math.imul(Y,$)|0,n=(n=n+Math.imul(Y,tt)|0)+Math.imul(U,$)|0,o=o+Math.imul(U,tt)|0,i=i+Math.imul(v,rt)|0,n=(n=n+Math.imul(v,it)|0)+Math.imul(G,rt)|0,o=o+Math.imul(G,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,dt)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,dt)|0;var Dt=(u+(i=i+Math.imul(B,At)|0)|0)+((8191&(n=(n=n+Math.imul(B,gt)|0)+Math.imul(w,At)|0))<<13)|0;u=((o=o+Math.imul(w,gt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,_))+Math.imul(L,P)|0,o=Math.imul(L,_),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(S,$)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(Y,rt)|0,n=(n=n+Math.imul(Y,it)|0)+Math.imul(U,rt)|0,o=o+Math.imul(U,it)|0,i=i+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,st)|0)+Math.imul(G,ot)|0,o=o+Math.imul(G,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,dt)|0)+Math.imul(Q,lt)|0,o=o+Math.imul(Q,dt)|0;var Nt=(u+(i=i+Math.imul(p,At)|0)|0)+((8191&(n=(n=n+Math.imul(p,gt)|0)+Math.imul(m,At)|0))<<13)|0;u=((o=o+Math.imul(m,gt)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(Y,ot)|0,n=(n=n+Math.imul(Y,st)|0)+Math.imul(U,ot)|0,o=o+Math.imul(U,st)|0,i=i+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(G,ht)|0,o=o+Math.imul(G,ut)|0,i=i+Math.imul(C,lt)|0,n=(n=n+Math.imul(C,dt)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,dt)|0;var vt=(u+(i=i+Math.imul(b,At)|0)|0)+((8191&(n=(n=n+Math.imul(b,gt)|0)+Math.imul(Q,At)|0))<<13)|0;u=((o=o+Math.imul(Q,gt)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(Y,ht)|0,n=(n=n+Math.imul(Y,ut)|0)+Math.imul(U,ht)|0,o=o+Math.imul(U,ut)|0,i=i+Math.imul(v,lt)|0,n=(n=n+Math.imul(v,dt)|0)+Math.imul(G,lt)|0,o=o+Math.imul(G,dt)|0;var Gt=(u+(i=i+Math.imul(C,At)|0)|0)+((8191&(n=(n=n+Math.imul(C,gt)|0)+Math.imul(D,At)|0))<<13)|0;u=((o=o+Math.imul(D,gt)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,ut)|0,i=i+Math.imul(Y,lt)|0,n=(n=n+Math.imul(Y,dt)|0)+Math.imul(U,lt)|0,o=o+Math.imul(U,dt)|0;var Rt=(u+(i=i+Math.imul(v,At)|0)|0)+((8191&(n=(n=n+Math.imul(v,gt)|0)+Math.imul(G,At)|0))<<13)|0;u=((o=o+Math.imul(G,gt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,lt)|0,n=(n=n+Math.imul(T,dt)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,dt)|0;var Yt=(u+(i=i+Math.imul(Y,At)|0)|0)+((8191&(n=(n=n+Math.imul(Y,gt)|0)+Math.imul(U,At)|0))<<13)|0;u=((o=o+Math.imul(U,gt)|0)+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(F,lt),n=(n=Math.imul(F,dt))+Math.imul(L,lt)|0,o=Math.imul(L,dt);var Ut=(u+(i=i+Math.imul(T,At)|0)|0)+((8191&(n=(n=n+Math.imul(T,gt)|0)+Math.imul(S,At)|0))<<13)|0;u=((o=o+Math.imul(S,gt)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863;var Vt=(u+(i=Math.imul(F,At))|0)+((8191&(n=(n=Math.imul(F,gt))+Math.imul(L,At)|0))<<13)|0;return u=((o=Math.imul(L,gt))+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,h[0]=Mt,h[1]=Bt,h[2]=wt,h[3]=Et,h[4]=pt,h[5]=mt,h[6]=yt,h[7]=bt,h[8]=Qt,h[9]=It,h[10]=Ct,h[11]=Dt,h[12]=Nt,h[13]=vt,h[14]=Gt,h[15]=Rt,h[16]=Yt,h[17]=Ut,h[18]=Vt,0!==u&&(h[19]=u,r.length++),r};function g(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(A=f),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?A(this,t,e):r<63?f(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):g(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==c||u>=n);u--){var l=0|this.words[u];this.words[u]=c<<26-o|l>>>o,c=l&a}return h&&0!==c&&(h.words[h.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var d=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(n,d,l);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=d)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var c=r.clone(),l=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(c),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var A=0,g=1;0==(r.words[0]&g)&&A<26;++A,g<<=1);if(A>0)for(r.iushrn(A);A-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(c),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,c=1;0==(e.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,d=1;0==(r.words[0]&d)&&l<26;++l,d<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var B={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function E(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function p(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function m(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function Q(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(E,w),E.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},E.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(B[t])return B[t];var e;if("k256"===t)e=new E;else if("p224"===t)e=new p;else if("p192"===t)e=new m;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return B[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);0!==this.pow(c,u).cmp(h);)c.redIAdd(h);for(var l=this.pow(c,n),d=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),A=s;0!==f.cmp(a);){for(var g=f,M=0;0!==g.cmp(a);M++)g=g.redSqr();i(M=0;i--){for(var u=e.words[i],c=h-1;c>=0;c--){var l=u>>c&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4==++a||0===i&&0===c)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new Q(t)},n(Q,b),Q.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},Q.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},Q.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},Q.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},Q.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},6138:(t,e,r)=>{var i=r(980),n=r(9199),o=r(7859),s=r(2144),a=r(3663),h=r(3482),u=r(4818),c=r(9509).Buffer;t.exports=function(t,e,r){var l;l=t.padding?t.padding:r?1:4;var d,f=i(t),A=f.modulus.byteLength();if(e.length>A||new s(e).cmp(f.modulus)>=0)throw new Error("decryption error");d=r?u(new s(e),f):a(e,f);var g=c.alloc(A-d.length);if(d=c.concat([g,d],A),4===l)return function(t,e){var r=t.modulus.byteLength(),i=h("sha1").update(c.alloc(0)).digest(),s=i.length;if(0!==e[0])throw new Error("decryption error");var a=e.slice(1,s+1),u=e.slice(s+1),l=o(a,n(u,s)),d=o(u,n(l,r-s-1));if(function(t,e){t=c.from(t),e=c.from(e);var r=0,i=t.length;t.length!==e.length&&(r++,i=Math.min(t.length,e.length));for(var n=-1;++n=e.length){o++;break}var s=e.slice(2,n-1);if(("0002"!==i.toString("hex")&&!r||"0001"!==i.toString("hex")&&r)&&o++,s.length<8&&o++,o)throw new Error("decryption error");return e.slice(n)}(0,d,r);if(3===l)return d;throw new Error("unknown padding")}},6559:(t,e,r)=>{var i=r(980),n=r(1798),o=r(3482),s=r(9199),a=r(7859),h=r(2144),u=r(4818),c=r(3663),l=r(9509).Buffer;t.exports=function(t,e,r){var d;d=t.padding?t.padding:r?1:4;var f,A=i(t);if(4===d)f=function(t,e){var r=t.modulus.byteLength(),i=e.length,u=o("sha1").update(l.alloc(0)).digest(),c=u.length,d=2*c;if(i>r-d-2)throw new Error("message too long");var f=l.alloc(r-i-d-2),A=r-c-1,g=n(c),M=a(l.concat([u,f,l.alloc(1,1),e],A),s(g,A)),B=a(g,s(M,c));return new h(l.concat([l.alloc(1),B,M],r))}(A,e);else if(1===d)f=function(t,e,r){var i,o=e.length,s=t.modulus.byteLength();if(o>s-11)throw new Error("message too long");return i=r?l.alloc(s-o-3,255):function(t){for(var e,r=l.allocUnsafe(t),i=0,o=n(2*t),s=0;i=0)throw new Error("data too long for modulus")}return r?c(f,A):u(f,A)}},4818:(t,e,r)=>{var i=r(2144),n=r(9509).Buffer;t.exports=function(t,e){return n.from(t.toRed(i.mont(e.modulus)).redPow(new i(e.publicExponent)).fromRed().toArray())}},7859:t=>{t.exports=function(t,e){for(var r=t.length,i=-1;++i{"use strict";var i=r(4155),n=65536,o=r(9509).Buffer,s=r.g.crypto||r.g.msCrypto;s&&s.getRandomValues?t.exports=function(t,e){if(t>4294967295)throw new RangeError("requested too many random bytes");var r=o.allocUnsafe(t);if(t>0)if(t>n)for(var a=0;a{"use strict";var i=r(4155);function n(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var o=r(9509),s=r(1798),a=o.Buffer,h=o.kMaxLength,u=r.g.crypto||r.g.msCrypto,c=Math.pow(2,32)-1;function l(t,e){if("number"!=typeof t||t!=t)throw new TypeError("offset must be a number");if(t>c||t<0)throw new TypeError("offset must be a uint32");if(t>h||t>e)throw new RangeError("offset out of range")}function d(t,e,r){if("number"!=typeof t||t!=t)throw new TypeError("size must be a number");if(t>c||t<0)throw new TypeError("size must be a uint32");if(t+e>r||t>h)throw new RangeError("buffer too small")}function f(t,e,r,n){if(i.browser){var o=t.buffer,a=new Uint8Array(o,e,r);return u.getRandomValues(a),n?void i.nextTick((function(){n(null,t)})):t}if(!n)return s(r).copy(t,e),t;s(r,(function(r,i){if(r)return n(r);i.copy(t,e),n(null,t)}))}u&&u.getRandomValues||!i.browser?(e.randomFill=function(t,e,i,n){if(!(a.isBuffer(t)||t instanceof r.g.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof e)n=e,e=0,i=t.length;else if("function"==typeof i)n=i,i=t.length-e;else if("function"!=typeof n)throw new TypeError('"cb" argument must be a function');return l(e,t.length),d(i,e,t.length),f(t,e,i,n)},e.randomFillSync=function(t,e,i){if(void 0===e&&(e=0),!(a.isBuffer(t)||t instanceof r.g.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return l(e,t.length),void 0===i&&(i=t.length-e),d(i,e,t.length),f(t,e,i)}):(e.randomFill=n,e.randomFillSync=n)},4281:t=>{"use strict";var e={};function r(t,r,i){i||(i=Error);var n=function(t){var e,i;function n(e,i,n){return t.call(this,function(t,e,i){return"string"==typeof r?r:r(t,e,i)}(e,i,n))||this}return i=t,(e=n).prototype=Object.create(i.prototype),e.prototype.constructor=e,e.__proto__=i,n}(i);n.prototype.name=i.name,n.prototype.code=t,e[t]=n}function i(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map((function(t){return String(t)})),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",(function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'}),TypeError),r("ERR_INVALID_ARG_TYPE",(function(t,e,r){var n,o,s,a,h;if("string"==typeof e&&(o="not ",e.substr(0,o.length)===o)?(n="must not be",e=e.replace(/^not /,"")):n="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t," argument"))s="The ".concat(t," ").concat(n," ").concat(i(e,"type"));else{var u=("number"!=typeof h&&(h=0),h+".".length>(a=t).length||-1===a.indexOf(".",h)?"argument":"property");s='The "'.concat(t,'" ').concat(u," ").concat(n," ").concat(i(e,"type"))}return s+". Received type ".concat(typeof r)}),TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",(function(t){return"The "+t+" method is not implemented"})),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",(function(t){return"Cannot call "+t+" after a stream was destroyed"})),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",(function(t){return"Unknown encoding: "+t}),TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.q=e},6753:(t,e,r)=>{"use strict";var i=r(4155),n=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=c;var o=r(9481),s=r(4229);r(5717)(c,o);for(var a=n(s.prototype),h=0;h{"use strict";t.exports=n;var i=r(4605);function n(t){if(!(this instanceof n))return new n(t);i.call(this,t)}r(5717)(n,i),n.prototype._transform=function(t,e,r){r(null,t)}},9481:(t,e,r)=>{"use strict";var i,n=r(4155);t.exports=I,I.ReadableState=Q,r(7187).EventEmitter;var o,s=function(t,e){return t.listeners(e).length},a=r(2503),h=r(8764).Buffer,u=r.g.Uint8Array||function(){},c=r(4616);o=c&&c.debuglog?c.debuglog("stream"):function(){};var l,d,f,A=r(7327),g=r(1195),M=r(2457).getHighWaterMark,B=r(4281).q,w=B.ERR_INVALID_ARG_TYPE,E=B.ERR_STREAM_PUSH_AFTER_EOF,p=B.ERR_METHOD_NOT_IMPLEMENTED,m=B.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r(5717)(I,a);var y=g.errorOrDestroy,b=["error","close","destroy","pause","resume"];function Q(t,e,n){i=i||r(6753),t=t||{},"boolean"!=typeof n&&(n=e instanceof i),this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=M(this,t,"readableHighWaterMark",n),this.buffer=new A,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(l||(l=r(2553).s),this.decoder=new l(t.encoding),this.encoding=t.encoding)}function I(t){if(i=i||r(6753),!(this instanceof I))return new I(t);var e=this instanceof i;this._readableState=new Q(t,this,e),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),a.call(this)}function C(t,e,r,i,n){o("readableAddChunk",e);var s,a=t._readableState;if(null===e)a.reading=!1,function(t,e){if(o("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?G(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,R(t)))}}(t,a);else if(n||(s=function(t,e){var r,i;return i=e,h.isBuffer(i)||i instanceof u||"string"==typeof e||void 0===e||t.objectMode||(r=new w("chunk",["string","Buffer","Uint8Array"],e)),r}(a,e)),s)y(t,s);else if(a.objectMode||e&&e.length>0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===h.prototype||(e=function(t){return h.from(t)}(e)),i)a.endEmitted?y(t,new m):D(t,a,e,!0);else if(a.ended)y(t,new E);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?D(t,a,e,!1):Y(t,a)):D(t,a,e,!1)}else i||(a.reading=!1,Y(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=N?t=N:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function G(t){var e=t._readableState;o("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(o("emitReadable",e.flowing),e.emittedReadable=!0,n.nextTick(R,t))}function R(t){var e=t._readableState;o("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,k(t)}function Y(t,e){e.readingMore||(e.readingMore=!0,n.nextTick(U,t,e))}function U(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function T(t){o("readable nexttick read 0"),t.read(0)}function S(t,e){o("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),k(t),e.flowing&&!e.reading&&t.read(0)}function k(t){var e=t._readableState;for(o("flow",e.flowing);e.flowing&&null!==t.read(););}function F(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function L(t){var e=t._readableState;o("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,n.nextTick(j,e,t))}function j(t,e){if(o("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function Z(t,e){for(var r=0,i=t.length;r=e.highWaterMark:e.length>0)||e.ended))return o("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?L(this):G(this),null;if(0===(t=v(t,e))&&e.ended)return 0===e.length&&L(this),null;var i,n=e.needReadable;return o("need readable",n),(0===e.length||e.length-t0?F(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&L(this)),null!==i&&this.emit("data",i),i},I.prototype._read=function(t){y(this,new p("_read()"))},I.prototype.pipe=function(t,e){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=t;break;case 1:i.pipes=[i.pipes,t];break;default:i.pipes.push(t)}i.pipesCount+=1,o("pipe count=%d opts=%j",i.pipesCount,e);var a=e&&!1===e.end||t===n.stdout||t===n.stderr?g:h;function h(){o("onend"),t.end()}i.endEmitted?n.nextTick(a):r.once("end",a),t.on("unpipe",(function e(n,s){o("onunpipe"),n===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,o("cleanup"),t.removeListener("close",f),t.removeListener("finish",A),t.removeListener("drain",u),t.removeListener("error",d),t.removeListener("unpipe",e),r.removeListener("end",h),r.removeListener("end",g),r.removeListener("data",l),c=!0,!i.awaitDrain||t._writableState&&!t._writableState.needDrain||u())}));var u=function(t){return function(){var e=t._readableState;o("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,k(t))}}(r);t.on("drain",u);var c=!1;function l(e){o("ondata");var n=t.write(e);o("dest.write",n),!1===n&&((1===i.pipesCount&&i.pipes===t||i.pipesCount>1&&-1!==Z(i.pipes,t))&&!c&&(o("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function d(e){o("onerror",e),g(),t.removeListener("error",d),0===s(t,"error")&&y(t,e)}function f(){t.removeListener("finish",A),g()}function A(){o("onfinish"),t.removeListener("close",f),g()}function g(){o("unpipe"),r.unpipe(t)}return r.on("data",l),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events.error?Array.isArray(t._events.error)?t._events.error.unshift(r):t._events.error=[r,t._events.error]:t.on(e,r)}(t,"error",d),t.once("close",f),t.once("finish",A),t.emit("pipe",r),i.flowing||(o("pipe resume"),r.resume()),t},I.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o0,!1!==i.flowing&&this.resume()):"readable"===t&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,o("on readable",i.length,i.reading),i.length?G(this):i.reading||n.nextTick(T,this))),r},I.prototype.addListener=I.prototype.on,I.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&n.nextTick(V,this),r},I.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||n.nextTick(V,this),e},I.prototype.resume=function(){var t=this._readableState;return t.flowing||(o("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,n.nextTick(S,t,e))}(this,t)),t.paused=!1,this},I.prototype.pause=function(){return o("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(o("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},I.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;for(var n in t.on("end",(function(){if(o("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on("data",(function(n){o("wrapped data"),r.decoder&&(n=r.decoder.write(n)),r.objectMode&&null==n||(r.objectMode||n&&n.length)&&(e.push(n)||(i=!0,t.pause()))})),t)void 0===this[n]&&"function"==typeof t[n]&&(this[n]=function(e){return function(){return t[e].apply(t,arguments)}}(n));for(var s=0;s{"use strict";t.exports=c;var i=r(4281).q,n=i.ERR_METHOD_NOT_IMPLEMENTED,o=i.ERR_MULTIPLE_CALLBACK,s=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=i.ERR_TRANSFORM_WITH_LENGTH_0,h=r(6753);function u(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(null===i)return this.emit("error",new o);r.writechunk=null,r.writecb=null,null!=e&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";var i,n=r(4155);function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var i=t.entry;for(t.entry=null;i;){var n=i.callback;e.pendingcb--,n(undefined),i=i.next}e.corkedRequestsFree.next=t}(e,t)}}t.exports=I,I.WritableState=Q;var s,a={deprecate:r(4927)},h=r(2503),u=r(8764).Buffer,c=r.g.Uint8Array||function(){},l=r(1195),d=r(2457).getHighWaterMark,f=r(4281).q,A=f.ERR_INVALID_ARG_TYPE,g=f.ERR_METHOD_NOT_IMPLEMENTED,M=f.ERR_MULTIPLE_CALLBACK,B=f.ERR_STREAM_CANNOT_PIPE,w=f.ERR_STREAM_DESTROYED,E=f.ERR_STREAM_NULL_VALUES,p=f.ERR_STREAM_WRITE_AFTER_END,m=f.ERR_UNKNOWN_ENCODING,y=l.errorOrDestroy;function b(){}function Q(t,e,s){i=i||r(6753),t=t||{},"boolean"!=typeof s&&(s=e instanceof i),this.objectMode=!!t.objectMode,s&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=d(this,t,"writableHighWaterMark",s),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===t.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,i=r.sync,o=r.writecb;if("function"!=typeof o)throw new M;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,i,o){--e.pendingcb,r?(n.nextTick(o,i),n.nextTick(R,t,e),t._writableState.errorEmitted=!0,y(t,i)):(o(i),t._writableState.errorEmitted=!0,y(t,i),R(t,e))}(t,r,i,e,o);else{var s=v(r)||t.destroyed;s||r.corked||r.bufferProcessing||!r.bufferedRequest||N(t,r),i?n.nextTick(D,t,r,s,o):D(t,r,s,o)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function I(t){var e=this instanceof(i=i||r(6753));if(!e&&!s.call(I,this))return new I(t);this._writableState=new Q(t,this,e),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),h.call(this)}function C(t,e,r,i,n,o,s){e.writelen=i,e.writecb=s,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new w("write")):r?t._writev(n,e.onwrite):t._write(n,o,e.onwrite),e.sync=!1}function D(t,e,r,i){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,i(),R(t,e)}function N(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var i=e.bufferedRequestCount,n=new Array(i),s=e.corkedRequestsFree;s.entry=r;for(var a=0,h=!0;r;)n[a]=r,r.isBuf||(h=!1),r=r.next,a+=1;n.allBuffers=h,C(t,e,!0,e.length,n,"",s.finish),e.pendingcb++,e.lastBufferedRequest=null,s.next?(e.corkedRequestsFree=s.next,s.next=null):e.corkedRequestsFree=new o(e),e.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,c=r.encoding,l=r.callback;if(C(t,e,!1,e.objectMode?1:u.length,u,c,l),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function v(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function G(t,e){t._final((function(r){e.pendingcb--,r&&y(t,r),e.prefinished=!0,t.emit("prefinish"),R(t,e)}))}function R(t,e){var r=v(e);if(r&&(function(t,e){e.prefinished||e.finalCalled||("function"!=typeof t._final||e.destroyed?(e.prefinished=!0,t.emit("prefinish")):(e.pendingcb++,e.finalCalled=!0,n.nextTick(G,t,e)))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"),e.autoDestroy))){var i=t._readableState;(!i||i.autoDestroy&&i.endEmitted)&&t.destroy()}return r}r(5717)(I,h),Q.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(Q.prototype,"buffer",{get:a.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(s=Function.prototype[Symbol.hasInstance],Object.defineProperty(I,Symbol.hasInstance,{value:function(t){return!!s.call(this,t)||this===I&&t&&t._writableState instanceof Q}})):s=function(t){return t instanceof this},I.prototype.pipe=function(){y(this,new B)},I.prototype.write=function(t,e,r){var i,o=this._writableState,s=!1,a=!o.objectMode&&(i=t,u.isBuffer(i)||i instanceof c);return a&&!u.isBuffer(t)&&(t=function(t){return u.from(t)}(t)),"function"==typeof e&&(r=e,e=null),a?e="buffer":e||(e=o.defaultEncoding),"function"!=typeof r&&(r=b),o.ending?function(t,e){var r=new p;y(t,r),n.nextTick(e,r)}(this,r):(a||function(t,e,r,i){var o;return null===r?o=new E:"string"==typeof r||e.objectMode||(o=new A("chunk",["string","Buffer"],r)),!o||(y(t,o),n.nextTick(i,o),!1)}(this,o,t,r))&&(o.pendingcb++,s=function(t,e,r,i,n,o){if(!r){var s=function(t,e,r){return t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=u.from(e,r)),e}(e,i,n);i!==s&&(r=!0,n="buffer",i=s)}var a=e.objectMode?1:i.length;e.length+=a;var h=e.length-1))throw new m(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(I.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(I.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),I.prototype._write=function(t,e,r){r(new g("_write()"))},I.prototype._writev=null,I.prototype.end=function(t,e,r){var i=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||function(t,e,r){e.ending=!0,R(t,e),r&&(e.finished?n.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,i,r),this},Object.defineProperty(I.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(I.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),I.prototype.destroy=l.destroy,I.prototype._undestroy=l.undestroy,I.prototype._destroy=function(t,e){e(t)}},5850:(t,e,r)=>{"use strict";var i,n=r(4155);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(8610),a=Symbol("lastResolve"),h=Symbol("lastReject"),u=Symbol("error"),c=Symbol("ended"),l=Symbol("lastPromise"),d=Symbol("handlePromise"),f=Symbol("stream");function A(t,e){return{value:t,done:e}}function g(t){var e=t[a];if(null!==e){var r=t[f].read();null!==r&&(t[l]=null,t[a]=null,t[h]=null,e(A(r,!1)))}}function M(t){n.nextTick(g,t)}var B=Object.getPrototypeOf((function(){})),w=Object.setPrototypeOf((o(i={get stream(){return this[f]},next:function(){var t=this,e=this[u];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(A(void 0,!0));if(this[f].destroyed)return new Promise((function(e,r){n.nextTick((function(){t[u]?r(t[u]):e(A(void 0,!0))}))}));var r,i=this[l];if(i)r=new Promise(function(t,e){return function(r,i){t.then((function(){e[c]?r(A(void 0,!0)):e[d](r,i)}),i)}}(i,this));else{var o=this[f].read();if(null!==o)return Promise.resolve(A(o,!1));r=new Promise(this[d])}return this[l]=r,r}},Symbol.asyncIterator,(function(){return this})),o(i,"return",(function(){var t=this;return new Promise((function(e,r){t[f].destroy(null,(function(t){t?r(t):e(A(void 0,!0))}))}))})),i),B);t.exports=function(t){var e,r=Object.create(w,(o(e={},f,{value:t,writable:!0}),o(e,a,{value:null,writable:!0}),o(e,h,{value:null,writable:!0}),o(e,u,{value:null,writable:!0}),o(e,c,{value:t._readableState.endEmitted,writable:!0}),o(e,d,{value:function(t,e){var i=r[f].read();i?(r[l]=null,r[a]=null,r[h]=null,t(A(i,!1))):(r[a]=t,r[h]=e)},writable:!0}),e));return r[l]=null,s(t,(function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[h];return null!==e&&(r[l]=null,r[a]=null,r[h]=null,e(t)),void(r[u]=t)}var i=r[a];null!==i&&(r[l]=null,r[a]=null,r[h]=null,i(A(void 0,!0))),r[c]=!0})),t.on("readable",M.bind(null,r)),r}},7327:(t,e,r)=>{"use strict";function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){for(var r=0;r0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return s.alloc(0);for(var e,r,i,n=s.allocUnsafe(t>>>0),o=this.head,a=0;o;)e=o.data,r=n,i=a,s.prototype.copy.call(e,r,i),a+=o.data.length,o=o.next;return n}},{key:"consume",value:function(t,e){var r;return tn.length?n.length:t;if(o===n.length?i+=n:i+=n.slice(0,t),0==(t-=o)){o===n.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(o));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(t){var e=s.allocUnsafe(t),r=this.head,i=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var n=r.data,o=t>n.length?n.length:t;if(n.copy(e,e.length-t,0,o),0==(t-=o)){o===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(o));break}++i}return this.length-=i,e}},{key:h,value:function(t,e){return a(this,function(t){for(var e=1;e{"use strict";var i=r(4155);function n(t,e){s(t,e),o(t)}function o(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,h=this._writableState&&this._writableState.destroyed;return a||h?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,i.nextTick(s,this,t)):i.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!e&&t?r._writableState?r._writableState.errorEmitted?i.nextTick(o,r):(r._writableState.errorEmitted=!0,i.nextTick(n,r,t)):i.nextTick(n,r,t):e?(i.nextTick(o,r),e(t)):i.nextTick(o,r)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}}},8610:(t,e,r)=>{"use strict";var i=r(4281).q.ERR_STREAM_PREMATURE_CLOSE;function n(){}t.exports=function t(e,r,o){if("function"==typeof r)return t(e,null,r);r||(r={}),o=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{t.exports=function(){throw new Error("Readable.from is not available in the browser")}},9946:(t,e,r)=>{"use strict";var i,n=r(4281).q,o=n.ERR_MISSING_ARGS,s=n.ERR_STREAM_DESTROYED;function a(t){if(t)throw t}function h(t,e,n,o){o=function(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}(o);var a=!1;t.on("close",(function(){a=!0})),void 0===i&&(i=r(8610)),i(t,{readable:e,writable:n},(function(t){if(t)return o(t);a=!0,o()}));var h=!1;return function(e){if(!a&&!h)return h=!0,function(t){return t.setHeader&&"function"==typeof t.abort}(t)?t.abort():"function"==typeof t.destroy?t.destroy():void o(e||new s("pipe"))}}function u(t){t()}function c(t,e){return t.pipe(e)}function l(t){return t.length?"function"!=typeof t[t.length-1]?a:t.pop():a}t.exports=function(){for(var t=arguments.length,e=new Array(t),r=0;r0,(function(t){i||(i=t),t&&s.forEach(u),o||(s.forEach(u),n(i))}))}));return e.reduce(c)}},2457:(t,e,r)=>{"use strict";var i=r(4281).q.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,n){var o=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,n,r);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new i(n?r:"highWaterMark",o);return Math.floor(o)}return t.objectMode?16:16384}}},2503:(t,e,r)=>{t.exports=r(7187).EventEmitter},8473:(t,e,r)=>{(e=t.exports=r(9481)).Stream=e,e.Readable=e,e.Writable=r(4229),e.Duplex=r(6753),e.Transform=r(4605),e.PassThrough=r(2725),e.finished=r(8610),e.pipeline=r(9946)},9785:(t,e,r)=>{"use strict";var i=r(8764).Buffer,n=r(5717),o=r(3349),s=new Array(16),a=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],h=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],u=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],c=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],l=[0,1518500249,1859775393,2400959708,2840853838],d=[1352829926,1548603684,1836072691,2053994217,0];function f(){o.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function A(t,e){return t<>>32-e}function g(t,e,r,i,n,o,s,a){return A(t+(e^r^i)+o+s|0,a)+n|0}function M(t,e,r,i,n,o,s,a){return A(t+(e&r|~e&i)+o+s|0,a)+n|0}function B(t,e,r,i,n,o,s,a){return A(t+((e|~r)^i)+o+s|0,a)+n|0}function w(t,e,r,i,n,o,s,a){return A(t+(e&i|r&~i)+o+s|0,a)+n|0}function E(t,e,r,i,n,o,s,a){return A(t+(e^(r|~i))+o+s|0,a)+n|0}n(f,o),f.prototype._update=function(){for(var t=s,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);for(var r=0|this._a,i=0|this._b,n=0|this._c,o=0|this._d,f=0|this._e,p=0|this._a,m=0|this._b,y=0|this._c,b=0|this._d,Q=0|this._e,I=0;I<80;I+=1){var C,D;I<16?(C=g(r,i,n,o,f,t[a[I]],l[0],u[I]),D=E(p,m,y,b,Q,t[h[I]],d[0],c[I])):I<32?(C=M(r,i,n,o,f,t[a[I]],l[1],u[I]),D=w(p,m,y,b,Q,t[h[I]],d[1],c[I])):I<48?(C=B(r,i,n,o,f,t[a[I]],l[2],u[I]),D=B(p,m,y,b,Q,t[h[I]],d[2],c[I])):I<64?(C=w(r,i,n,o,f,t[a[I]],l[3],u[I]),D=M(p,m,y,b,Q,t[h[I]],d[3],c[I])):(C=E(r,i,n,o,f,t[a[I]],l[4],u[I]),D=g(p,m,y,b,Q,t[h[I]],d[4],c[I])),r=f,f=o,o=A(n,10),n=i,i=C,p=Q,Q=b,b=A(y,10),y=m,m=D}var N=this._b+n+b|0;this._b=this._c+o+Q|0,this._c=this._d+f+p|0,this._d=this._e+r+m|0,this._e=this._a+i+y|0,this._a=N},f.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=i.alloc?i.alloc(20):new i(20);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t.writeInt32LE(this._e,16),t},t.exports=f},9509:(t,e,r)=>{var i=r(8764),n=i.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function s(t,e,r){return n(t,e,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=i:(o(i,e),e.Buffer=s),s.prototype=Object.create(n.prototype),o(n,s),s.from=function(t,e,r){if("number"==typeof t)throw new TypeError("Argument must not be a number");return n(t,e,r)},s.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=n(t);return void 0!==e?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i},s.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n(t)},s.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},2399:(t,e,r)=>{"use strict";var i,n=r(4155),o=r(8764),s=o.Buffer,a={};for(i in o)o.hasOwnProperty(i)&&"SlowBuffer"!==i&&"Buffer"!==i&&(a[i]=o[i]);var h=a.Buffer={};for(i in s)s.hasOwnProperty(i)&&"allocUnsafe"!==i&&"allocUnsafeSlow"!==i&&(h[i]=s[i]);if(a.Buffer.prototype=s.prototype,h.from&&h.from!==Uint8Array.from||(h.from=function(t,e,r){if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&void 0===t.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return s(t,e,r)}),h.alloc||(h.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var i=s(t);return e&&0!==e.length?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i}),!a.kStringMaxLength)try{a.kStringMaxLength=n.binding("buffer").kStringMaxLength}catch(t){}a.constants||(a.constants={MAX_LENGTH:a.kMaxLength},a.kStringMaxLength&&(a.constants.MAX_STRING_LENGTH=a.kStringMaxLength)),t.exports=a},4189:(t,e,r)=>{var i=r(9509).Buffer;function n(t,e){this._block=i.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}n.prototype.update=function(t,e){"string"==typeof t&&(e=e||"utf8",t=i.from(t,e));for(var r=this._block,n=this._blockSize,o=t.length,s=this._len,a=0;a=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(4294967295&r)>>>0,n=(r-i)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var o=this._hash();return t?o.toString(t):o},n.prototype._update=function(){throw new Error("_update must be implemented by subclass")},t.exports=n},9072:(t,e,r)=>{var i=t.exports=function(t){t=t.toLowerCase();var e=i[t];if(!e)throw new Error(t+" is not supported (we accept pull requests)");return new e};i.sha=r(4448),i.sha1=r(8336),i.sha224=r(8432),i.sha256=r(7499),i.sha384=r(1686),i.sha512=r(7816)},4448:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t){return t<<30|t>>>2}function c(t,e,r,i){return 0===t?e&r|~e&i:2===t?e&r|e&i|r&i:e^r^i}i(h,n),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,l=0;l<16;++l)r[l]=t.readInt32BE(4*l);for(;l<80;++l)r[l]=r[l-3]^r[l-8]^r[l-14]^r[l-16];for(var d=0;d<80;++d){var f=~~(d/20),A=0|((e=i)<<5|e>>>27)+c(f,n,o,a)+h+r[d]+s[f];h=a,a=o,o=u(n),n=i,i=A}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0},h.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=h},8336:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t){return t<<5|t>>>27}function c(t){return t<<30|t>>>2}function l(t,e,r,i){return 0===t?e&r|~e&i:2===t?e&r|e&i|r&i:e^r^i}i(h,n),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,d=0;d<16;++d)r[d]=t.readInt32BE(4*d);for(;d<80;++d)r[d]=(e=r[d-3]^r[d-8]^r[d-14]^r[d-16])<<1|e>>>31;for(var f=0;f<80;++f){var A=~~(f/20),g=u(i)+l(A,n,o,a)+h+r[f]+s[A]|0;h=a,a=o,o=c(n),n=i,i=g}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0},h.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=h},8432:(t,e,r)=>{var i=r(5717),n=r(7499),o=r(4189),s=r(9509).Buffer,a=new Array(64);function h(){this.init(),this._w=a,o.call(this,64,56)}i(h,n),h.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},h.prototype._hash=function(){var t=s.allocUnsafe(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},t.exports=h},7499:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],a=new Array(64);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t,e,r){return r^t&(e^r)}function c(t,e,r){return t&e|r&(t|e)}function l(t){return(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function d(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function f(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}i(h,n),h.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,A=0|this._f,g=0|this._g,M=0|this._h,B=0;B<16;++B)r[B]=t.readInt32BE(4*B);for(;B<64;++B)r[B]=0|(((e=r[B-2])>>>17|e<<15)^(e>>>19|e<<13)^e>>>10)+r[B-7]+f(r[B-15])+r[B-16];for(var w=0;w<64;++w){var E=M+d(h)+u(h,A,g)+s[w]+r[w]|0,p=l(i)+c(i,n,o)|0;M=g,g=A,A=h,h=a+E|0,a=o,o=n,n=i,i=E+p|0}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0,this._f=A+this._f|0,this._g=g+this._g|0,this._h=M+this._h|0},h.prototype._hash=function(){var t=o.allocUnsafe(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},t.exports=h},1686:(t,e,r)=>{var i=r(5717),n=r(7816),o=r(4189),s=r(9509).Buffer,a=new Array(160);function h(){this.init(),this._w=a,o.call(this,128,112)}i(h,n),h.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},h.prototype._hash=function(){var t=s.allocUnsafe(48);function e(e,r,i){t.writeInt32BE(e,i),t.writeInt32BE(r,i+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),t},t.exports=h},7816:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],a=new Array(160);function h(){this.init(),this._w=a,n.call(this,128,112)}function u(t,e,r){return r^t&(e^r)}function c(t,e,r){return t&e|r&(t|e)}function l(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function d(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function f(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function A(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function g(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function M(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function B(t,e){return t>>>0>>0?1:0}i(h,n),h.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},h.prototype._update=function(t){for(var e=this._w,r=0|this._ah,i=0|this._bh,n=0|this._ch,o=0|this._dh,a=0|this._eh,h=0|this._fh,w=0|this._gh,E=0|this._hh,p=0|this._al,m=0|this._bl,y=0|this._cl,b=0|this._dl,Q=0|this._el,I=0|this._fl,C=0|this._gl,D=0|this._hl,N=0;N<32;N+=2)e[N]=t.readInt32BE(4*N),e[N+1]=t.readInt32BE(4*N+4);for(;N<160;N+=2){var v=e[N-30],G=e[N-30+1],R=f(v,G),Y=A(G,v),U=g(v=e[N-4],G=e[N-4+1]),V=M(G,v),T=e[N-14],S=e[N-14+1],k=e[N-32],F=e[N-32+1],L=Y+S|0,j=R+T+B(L,Y)|0;j=(j=j+U+B(L=L+V|0,V)|0)+k+B(L=L+F|0,F)|0,e[N]=j,e[N+1]=L}for(var Z=0;Z<160;Z+=2){j=e[Z],L=e[Z+1];var H=c(r,i,n),z=c(p,m,y),x=l(r,p),O=l(p,r),W=d(a,Q),J=d(Q,a),X=s[Z],K=s[Z+1],P=u(a,h,w),_=u(Q,I,C),q=D+J|0,$=E+W+B(q,D)|0;$=($=($=$+P+B(q=q+_|0,_)|0)+X+B(q=q+K|0,K)|0)+j+B(q=q+L|0,L)|0;var tt=O+z|0,et=x+H+B(tt,O)|0;E=w,D=C,w=h,C=I,h=a,I=Q,a=o+$+B(Q=b+q|0,b)|0,o=n,b=y,n=i,y=m,i=r,m=p,r=$+et+B(p=q+tt|0,q)|0}this._al=this._al+p|0,this._bl=this._bl+m|0,this._cl=this._cl+y|0,this._dl=this._dl+b|0,this._el=this._el+Q|0,this._fl=this._fl+I|0,this._gl=this._gl+C|0,this._hl=this._hl+D|0,this._ah=this._ah+r+B(this._al,p)|0,this._bh=this._bh+i+B(this._bl,m)|0,this._ch=this._ch+n+B(this._cl,y)|0,this._dh=this._dh+o+B(this._dl,b)|0,this._eh=this._eh+a+B(this._el,Q)|0,this._fh=this._fh+h+B(this._fl,I)|0,this._gh=this._gh+w+B(this._gl,C)|0,this._hh=this._hh+E+B(this._hl,D)|0},h.prototype._hash=function(){var t=o.allocUnsafe(64);function e(e,r,i){t.writeInt32BE(e,i),t.writeInt32BE(r,i+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),e(this._gh,this._gl,48),e(this._hh,this._hl,56),t},t.exports=h},2830:(t,e,r)=>{t.exports=n;var i=r(7187).EventEmitter;function n(){i.call(this)}r(5717)(n,i),n.Readable=r(9481),n.Writable=r(4229),n.Duplex=r(6753),n.Transform=r(4605),n.PassThrough=r(2725),n.finished=r(8610),n.pipeline=r(9946),n.Stream=n,n.prototype.pipe=function(t,e){var r=this;function n(e){t.writable&&!1===t.write(e)&&r.pause&&r.pause()}function o(){r.readable&&r.resume&&r.resume()}r.on("data",n),t.on("drain",o),t._isStdio||e&&!1===e.end||(r.on("end",a),r.on("close",h));var s=!1;function a(){s||(s=!0,t.end())}function h(){s||(s=!0,"function"==typeof t.destroy&&t.destroy())}function u(t){if(c(),0===i.listenerCount(this,"error"))throw t}function c(){r.removeListener("data",n),t.removeListener("drain",o),r.removeListener("end",a),r.removeListener("close",h),r.removeListener("error",u),t.removeListener("error",u),r.removeListener("end",c),r.removeListener("close",c),t.removeListener("close",c)}return r.on("error",u),t.on("error",u),r.on("end",c),r.on("close",c),t.on("close",c),t.emit("pipe",r),t}},2553:(t,e,r)=>{"use strict";var i=r(9509).Buffer,n=i.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(i.isEncoding===n||!n(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=h,this.end=u,e=4;break;case"utf8":this.fillLast=a,e=4;break;case"base64":this.text=c,this.end=l,e=3;break;default:return this.write=d,void(this.end=f)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(e)}function s(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function h(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function u(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function c(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function l(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function d(t){return t.toString(this.encoding)}function f(t){return t&&t.length?this.write(t):""}e.s=o,o.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(2===n?n=0:t.lastNeed=n-3),n):0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},8677:(t,e,r)=>{"use strict";var i=r(5581),n=r(8469),o=r.n(n),s=r(2635),a=r.n(s);const h=JSON.parse('{"$":[{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_007","notbefore":1646866800000,"notafter":1710025200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXJGIIZHZOHRSV3CdXUpGpZ9660BB\\n+15fkJgO8Rk8H+TlqeSYvBIfeRK+hVpc9GzUcFiKiPU0jbXZ0rorqNyxfg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUetGukHDBgpqpT82eXBBZwkWqlCEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMwOTIzMDAwMFoXDTI0MDMwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXJGIIZHZOHRSV3CdXUpGpZ9660BB+15fkJgO8Rk8H+TlqeSYvBIfeRK+hVpc9GzUcFiKiPU0jbXZ0rorqNyxfqOB4DCB3TAdBgNVHQ4EFgQU9yU3/1u14+b8LpUG5bc2f7rCXJswHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQAPO0+DbQ5zIkFbECIN+SGoH7m/1j6HgDFAze4go1Idf5U3n8ua3wFwf9Tj2knGigSHSkBgFK7UKIlkFz4aotljp4/ZU4iKGuTn0oo6XT7eEi/KQlNHZHkxtSO9TQCRHw0KigXG5pA8cqSWcC9coYr57+4t82F67WNHoi2x6seN+sgIZxZiLuBNMjoibwnT5leJKLAwClYOtCpoFSzAZf7cTeZVmCymHaoeHx56ftOdXBUoMjBTMFRQEP598lauU2W1FZOwucbOSIsk3lpAhhG+akzEJJdBqo7nS7XrFRlxinvV7shia90RkGBdyNIo4zU8glgiDSIvZQQbvOuFcMZPxxANdaD5UMLEXb0cW1ypGW+r9s/bUwRghQT4vDNHoy7WqBSPgybuJT+WbbGnzeKtQeSnJU0sBCG7KT4mZbsWNGY4m02JC4MZz/DD5aRx9izz5bw1Tm1U61yE+VivWRYzacWWgTOrdUcZx7zArV7x38Biihw/dyUaps8HxvoP6MWBJOvAv5aKIbyvBOxcjh+3oZjMvKk6L+EUlSli76c0S7gCEjN3SMLgPbgR272xYoomNZYapYKwKq9fu+vL5PgoWWEhfQDO7BYGfJryV+N1I4sBoOqh1a5wsp6FEij+vi1grNiNpTKXqpaN5UKOLK3pb+LFOPETXm9kqepI+PyVdA==","kid":"+cDVEVtFWME="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_026","notbefore":1639522800000,"notafter":1702594800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuGGqMuc3NK3Y9fI82qbrWAiNKKKK\\nYm6nLpibiL+DBRILW2+5cFXZ19HLfbKwtAxyVOsv2N6x2VS8zklYStHGEg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUftzSPzs3lKyxin4HzGAPSInAlHwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLhhqjLnNzSt2PXyPNqm61gIjSiiimJupy6Ym4i/gwUSC1tvuXBV2dfRy32ysLQMclTrL9jesdlUvM5JWErRxhKjgeAwgd0wHQYDVR0OBBYEFJRMukUQrFVGUPhjzucJOPTIs0uEMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAsalnKHPbwm0FnkhrFHCfZt79nvNRML5k/gPI0Ab70inRKqqTETv/T+l0xtSBNbU5cOu2SdymWqaYZDiDdfKhmw1MBJsieP/+Q7yIAHt/RYlhOwMoPcxsTHtrSpW9kRYH77OYX6Ou9davXN7Pd4sv0Itl33FYxoXhHv1lPA2IEf19zCxgqeStforkAqm3jD6tlEc+gfCUnKsqJetIdAeKVYt5qcz/hmCFnl+GgSVswG9SqogySJD1F9Uesvi0k1laWphmU5IkxHymJqy7W57FgayiIrG1cUtuVcPaCxZ9eNWYoM03p6NdVcSr7qkGuglzkgtzxk5ncruJ2+NRUeUEBlwTtzI5QIcW1w0lnOXbLrvx40VyhJhY3ixZcd3+TiHhMxohPTA5ECg35u3q5/xBA0XF9nyiJ66Zr0WUy722QlGzOQyChGLeE/yHsBahNEq1Kc3L4IrqZu/TB54qM6xYKMllli7CCyzYH6NzMYJeHrrjNyeakX0riniPpKvuW08mwReqsuZ8uS05JoR93z5eSxJewvdUlirrBQPZEjA6f/+3fkMT21JJp4nuGDJQSwYXWTlxOI8jwzi0k887yNFIeTgu6PVRqzOGQF7JR/n0VbwKASOAvOnvG8nNWhAhdYyzDfQ71KAcDkx+rRu0mgmdtgbEUA//B++J5sZjHUlb8Ig=","kid":"0oCvyNKB210="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_027","notbefore":1642201200000,"notafter":1705273200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF+/sS02b7zIFGgBu4UwddBeosNhu\\n+zvARa+ySKeK2Rd2AJxx1lnnUgfkD0MHlO72kUEwhYdqfRZ7gSgFEgdEkQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUeVVanArVip2h9V4zfLC4CgjqA/MwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDExNDIzMDAwMFoXDTI0MDExNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBfv7EtNm+8yBRoAbuFMHXQXqLDYbvs7wEWvskinitkXdgCccdZZ51IH5A9DB5Tu9pFBMIWHan0We4EoBRIHRJGjgeAwgd0wHQYDVR0OBBYEFPSGVTQu85GTEXtAynAWYMIEdyb0MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAFl1G9mpI4FDpwyx7oXu1bY3IXUrUslXJo0Bmv3ayqQ1jCVXOqz0ZemN5lOIVwUMDynZLngsHmKz+fTR8K3CI6PaSxeDy0Rw/CsyWQgt1CWUR6q296z1DaPMsDGfO7dKDqKTGgoge3K4IPCjtQixVYgylfo6kxBHutIWAIgFV+cXxx+fn3K828SMoS7DkvKtAkvEQAXGGk6pbP3EdAtUJbDSbOufxS0W45a34C6tKiDAOJiXlCZjhtNHyTxSXDDmiyoabxxICNLmKJ5IMEe45pOwwZC5uPr9q0Qc72+jVsF9VeutV/ybocLY8Mi9GRJFKP5HQ/yQY5aYTstbV2V9pSDP8bVgdkzYSbmEVTgJ6W6Io1B9OFrbkeeOQzwugumUDjV4aA7NM4kX1Hh0WRtGnrVqo0Lfy0Rbj10goEb6BidecOUMq9iBuD7OsGIBqCO/p77xBC4TPt2rdaO2hDddFt0KLzesFgNrHJzMRH67MUHTDUaPVq0s3vu18XurOerivE5d7EJWboGelIWLNGkhOV0rza+4slR56wqve4I/A+Qhf7FwPZofZuPk8JvE3gxXQyktH1wzWGYBUUFYIbScJbHMb0hTecaPye0gGcKtQ1Y2VR7JA5NldYZ3cRMcdH4WNqYfu7qKl0NeQ1hqp1+pL7iWsOLG24zr0Yi8/Mm/xE5k=","kid":"14QQ1b6JFLk="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_20","notbefore":1632261600000,"notafter":1695333600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmRk7MSZQCX2u4UIQgVzma1JEo3yA\\nSVafls/5nw/V9T6e5EbsK64MM0KhsPH9aK/aElRt1+Rxtd1AsHVvsQJjKw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUFpv5DkvJU5K1vn/H2/M9MQneJrYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkyMTIyMDAwMFoXDTIzMDkyMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjAwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASZGTsxJlAJfa7hQhCBXOZrUkSjfIBJVp+Wz/mfD9X1Pp7kRuwrrgwzQqGw8f1or9oSVG3X5HG13UCwdW+xAmMro4HgMIHdMB0GA1UdDgQWBBTb/Lh313Pu4DiRm9Z5SS83yZeXmDAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAAY2cWLc8Ce7zLl6vxt0kWgpTibXFhgx/Que5ExTAJOpsl6K64MpJCofzPfO7MzxYRtIL+Lj1l1avGKNr8BNpA/+A8KeJQsocJc6RfOMVPt+2Cmpr8DTDeIjNzsmZtXMaRtgDjGV1qMTtCaThdGgzC5KfgL0OylkXDnFyMDRVDCxVxJUC4aMolQmnCVyyqD2bHBm9Oj4+x1UFrx1E3q/1FbQsy/Rji14kS+84c35qAuTkp05kqzxoZZswLQY/bYXJtU6u1SDwo/Geirre9nhm8Ck4Zr+8ARIh31oVyK615s+13A6p2Iux7T00aODsfRHZKh60o7+FcjeQJ3LbNdwBEHN0qc8aPsT5h61ZuAOnpmit80wVR+btu1d8e7Hq2u8AChmIGDcxjwHs7ygfbRDEmSM56ZhQ/a9PGDvri+jnuN3GW2TUajlXogrdMmvVsQN3nssR1E3nxBltyOS6EP88uMdr/ajAOjOT02ISmkaUWfTmrwEJGHeezOPiJGVvqp2Z0UOiwCivGB/PU03cAcu/ms0EXIKZ2qFosrZeJgTfZy2LMFKgQbj5b4iLDWormO2RCGvM3QMfmYd1XwTISCvSlDyEgT2hBRgYnLJ9ipPD8ngRmQXoX+nYbIDi23R/5vlU3qNw1cFAyGamNAsUNgPeRGaqIzB8eEON03DROAKulU4","kid":"26Fcjnjuf2s="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_006","notbefore":1639090800000,"notafter":1702162800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ua6q+h0NvU1yqdisTbi7nRqu9xp\\nX4qBSU1boIc6PWIbY4EKPTSQlxT7hhJwYBR37PZZX8JdOBh1ZqUjG9j87w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUMhJIBrZi2FAUhLPwN7JzstvhMsUwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIwOTIzMDAwMFoXDTIzMTIwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ua6q+h0NvU1yqdisTbi7nRqu9xpX4qBSU1boIc6PWIbY4EKPTSQlxT7hhJwYBR37PZZX8JdOBh1ZqUjG9j876OB4DCB3TAdBgNVHQ4EFgQU+eeSlsYWARhP/uY/e3iyCsunMAcwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCac75HtV6gRBG2AQXz0YcprJTZAZW+VZOHh+JBmIXkBEUzjmRtsTe0/SqOhs7M4ln5WpqsT6ET/TZYoGTUy6oocjqy38MtZMV4W9sGSSdR/ltfVLkgyofPrdNg/XzNGEF+jZ9xWNCQqBHaxBzXaPhUa/p9B1Amof3ksyl2ChdcOu73QyOQ9qcFxBr0U1DJ2K6ZDIbiMdu/f7xWN355HJNfGFaKioe5wkrRJOxiu0sfn1yH3hCS4ge5iJtLvux4GVF5m02bRYtIe32+FrjQAg3pH2ayyDJ2V38P6cIi9lIdoGdoQuA+As8m+Nsl4pfXmeKqaSF0grlPVlhTh9BW6+N6ktybw1srgfR+TLKvTrQ5nvbEWtDmVddhNGauwSB1YHA2YK+nzlDS9o8091vKuFFSCCUeNWyZPHzw569izxAy+Pu3MrXiuiPISfneQIikl3EoVowS1vyWpnYWkFfrUpgT231Y4IIu5w7tHeD/ieEU0tq8UQUamMshiPFpXJqZMzeaxBqaAoTDRYmOGPoyGiKN99Bz83BFchpgaZgtMQFH+X0XvEsLr9KYDD+svyfuZZLqmIPCxq3ejF2O1YGoe9HfGh+LWqlw6n4usqBhix8QUznUSkkQwM4NrCDbQUOSyOtMXGwbLFiGmrlg41RMiJ+txZkCtSmsc2iHq6YHnKNU0w==","kid":"2YrkPPOntQQ="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_015","notbefore":1628805600000,"notafter":1691877600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC\\n2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwIw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUc4Z21skZZ8Xy07UbGOonQJh/3uYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxMjIyMDAwMFoXDTIzMDgxMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwI6OB4DCB3TAdBgNVHQ4EFgQU8CPvYMvFZX51QjwEsL6RmVrYhCgwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCfhMpfpfaBZQLkBuT1XZJWVfMy/UxqunIhPyjjJejxCnYupYB5LoyUKeuI16+StNTxGNHML7S73SWywDSgFwP0ttoLK1fiGVKtOBfxcvPP6RiuhbgkdXlUboXW3azVLUB0y4ZxnFsp3ZupaTBCpBQNAaC30tEAx0ZEZvOBl3MGRHqfR6SdUc+aMj0bibqm29J8hOZAe051JwGNF+y7O0pLdDkmAg3rdBsHaTNvA6AcyRRV9Wm8vB6bf20JXm3mvVtgdyidUgSTTMJ2BOqvGzDsJma5q7vh4nFZxPDRGp9Ny1WU8MzGUIUilv/UJKDexfqyQdzBOF8jHXCY/gHGXrOQH7MZ6ApdG07+RY8R4AxZ51OJyGQw/KPFdU6XLSaDtyTXptGxl2JPIaik1TtNNR3/pAdDVp67tik7En8QICqEdv+OqzBbxVrFRHmW7bSeiX8aSuk52ypHTAR6MkstVNxd5J0mzPxBqQVWa2LDy4vGkFn+qQ2/tsVpdJJLQwfcix4rEP1kazm6nWqTyyoDEU1MM9i5y/Dv/GkAwMeXPqf9Uy2z/QWyja+me06DI42hf8eLN36uHcMS10MT2/ei2w4i3UULge0NyN2+wmjR6xKJHEu9P+LXci1jik33FbwGZKXVb1uI7Y/iU+NIBOPgHQfEvBuKDDvHC+vh3r9sraXeCA==","kid":"2Yv0kajsIlA="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0004","notbefore":1641942000000,"notafter":1705014000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV9ZwrSsN3vr0WUaDkS4UzyPLz/2y\\n4hm7yEnCOaAidrjZlVlIjQZkhDeNLYOLKcaGnEBQxBQNpCgLTJWTRnopPw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUaGRg9ynElihMD05ckXc84WVL8f4wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDExMTIzMDAwMFoXDTI0MDExMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARX1nCtKw3e+vRZRoORLhTPI8vP/bLiGbvIScI5oCJ2uNmVWUiNBmSEN40tg4spxoacQFDEFA2kKAtMlZNGeik/o4HgMIHdMB0GA1UdDgQWBBR1DNHWK9PsTyKp+5wxalsj5t9ECzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIxN06gTwfxHWcwBQw+tPhWqNv/caBLzM8Jh+DyOQWyanukoaU+4hsQm6Ouws79tCdGVPnDUgwxG8xM3YGOh5CxbhbsSfzihNmwUBS2F7LgBrK9PXaMOh6EX5+CMeMOMWPlc9c/OiHdqqr7yWPv9NEGHIUrsoYk6+PXNmUo1Q8smzWpLzyNdtdsCVyager9w/5hA0ZMBj7idZFAqDVWBVtUCtHH6QqW+NJ3Ukp+vqo+7RupVrXda3hkT6f/icnOxygH+UXRUwzqKeni7hLDDU1xfjd8kg1sa7zVRp4j8defmvrq2sZlFA3kyLKyDS5bk/97gejBI2W9efho5pM4Ky5jDuT/zoAwbepPuvB6cMo5evTmMivQoqO9k9NAqwe0Ou7YGhojAHIbnK/SoGWlKPAAwNzD+tSIVg7EBV3HWCMWsUu0CN7yDOLjatnbupT3crwEVa9M3E6Aw3c17KK3YqLyXJWOSAiR+8ZTE290atJT/4e+njj1+foFJdiAcQ+yG8qiLjGDYXxxbTU6B8XH2KXlikmeEZW1sNsafpg67jG8QPPfauZHtcSnbIJwk3Vni41IQcoytkc+b5ixpHkmXkbFgDR2aF5GwH5uF6Q1DBJdTiT3UpDsj1ZqGRrOKdj58OALAhRi/fibUXVJkJcwTPyXF95dT3N2LxIuEsvb2ilwA","kid":"2uMhJx5tEEU="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_22","notbefore":1635894000000,"notafter":1698966000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ws8GOmbxIZm3jIeG2vN3jsMTvjN\\nuC40InFfPoXbMRVFjhOBjro3792wiunoFYiG7TZsgCEi/+IOCUsxa5+H/g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUHZbL5MhK3RIo99XEV0xY6jiBrQkwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwMjIzMDAwMFoXDTIzMTEwMjIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT7CzwY6ZvEhmbeMh4ba83eOwxO+M24LjQicV8+hdsxFUWOE4GOujfv3bCK6egViIbtNmyAISL/4g4JSzFrn4f+o4HgMIHdMB0GA1UdDgQWBBQtDNVIN839gYsiXOJR5IAF+tqWvzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAJdRrpKYXb0KAu7BXEq/45XlLSt4+UB4MamR5d9uZuVL+KkKHy9jiDJ2ydKSoCDJnZZtKdYG8hqqCFKUj/WqkTJGysZo7rWmeHT4/AZPSHsLGtaYtqKVPJOie4nyywdmMt07fJIcqVdGtmHqM9/dhEXVWWJqtDWC1cZ3HdS4Xf8LgPORm2iusGIKO7hJuBn9Z4dtqKlY2VzHY0jlqdFdOFVychusOQyZWdliJ/FsERDj3jj4TEk30w0Pk+V1Th6MogVmiVcv0QnxKG71Nck06JcYLkes6zgmdcY0vapUfmLGHECgMkYwuAR/tB06xAZPVPU9mq653ezbElwXPXNM6qc6TaCEnkUpjrLsjy/vD2naq+PtkZRlrKH+HxV8ZAEbAsg3WDAPG/9xVrWtp8FjmXhq3F6I/LGp3TCh8/q/9UmfDDNldidA95QcsAMJZUjEJNr8JXuegt3aBWUbpz8EbfyHVVS8Bzh9H8s9z/mwXT8X63y85YUzlMGshKdqI/7lESJUunA2U3pIZHixGJMK3MelZeqEBqxd22h7/gmNI9LrK3MBEtBQtnis+YBTyaR4BbDHDOur3eQA7Fy/FoIl5LUHPmbjqD+tJUuojg9+E6jGz18BeJYLtnPHNNF02XtfASwg2WO1+eujIQiyp+6e/xLUv8qxzEUQDi885fvHv//V","kid":"3aGO1ni4qKA="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_023","notbefore":1634248800000,"notafter":1697320800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgu/WJBn1Q+RCOfQx3NLT5oIGUCHs\\nqSRXuu7EZsqfqZN5PvHk6/E++88wvj2fMrfmAptk5tVld2xBH4P4tRs8JQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUbjokPqcsK9BPa9UdWexJeyEqilowDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTAxNDIyMDAwMFoXDTIzMTAxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABILv1iQZ9UPkQjn0MdzS0+aCBlAh7KkkV7ruxGbKn6mTeT7x5OvxPvvPML49nzK35gKbZObVZXdsQR+D+LUbPCWjgeAwgd0wHQYDVR0OBBYEFFmAYyEK7sVvsDvIY+w6fmNz2BT4MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEApMhsApIqDdjtJiC6mOsvI8L9Uwf+gw/dv06vVIwTQ7y+4AgtfZ2HTWeqW7IlXvNYs0m44U4VyL43pnoV167rwBOAMGTrYqT+83Hl5adOtl5ui0RxVHzNdUPiVPL2dV/OgZQKq/TFjm8wuJOxhjGIx2CFVKX2PpcbHAZ/IawdJjhOsisBZpfYuBpKFV8hBj9/SF/EwCrbswB81IrOjNEl9MkG6JrYarO/uztKHv9OIFy5SC6BaKkO4OItM2xx4H1w2cl7Cqt32n94WLxP0HLeAKqUA8/7Ttoa98x04iLElhkg8Fd+aL6Foi1mWlWBRlgHz7iHxZ7zYDmi8NksxnKECSwBm4FpP2Guz7CWY/tsREyGvrzZ2DjYFtNtIOHW15xr7aTPRJ0yD0DYtmZ6l9aYlFVGUgNWypUuNOe3BJh25X2re7nIwSvUWZeAnUFbJ+2YYt9xQfjgSll/DByUG/SfT6EqstPWlbVFVLljs6azzxQyozRB8JYPVG1Kny8WSl3YokIDLVofulJqYpi+ac2DDFCA1L6Mtnfw/go7Rq7uiorduqZi3FL8vKwy0M6S3ckP06pWjpJdOyKaLk1cbHJR4fuzY+PrhvDkKmSSlEzsWCIKe6B//ErN64MJ5xJxc6HnP2KvXV4hf7XbFsNat5ETxb3VdQhVDyHzgbqSpVo9BIM=","kid":"53FOjX/4aJs="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_029","notbefore":1647298800000,"notafter":1710457200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvPje+J0NfHHDSd2eilS/vlPfvFyg\\n2GqaQe5uDcfbRNwXV51JZqQ9bno+FOnw+AFrLd9aOvsqWkvH6ogsKHk26g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUV/o7xkGXd5ZK2x7x5++zZSO6I/0wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMxNDIzMDAwMFoXDTI0MDMxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyOTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLz43vidDXxxw0ndnopUv75T37xcoNhqmkHubg3H20TcF1edSWakPW56PhTp8PgBay3fWjr7KlpLx+qILCh5NuqjgeAwgd0wHQYDVR0OBBYEFNNslXmB1flUg6kCQdJEDjP5T+rhMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAYRbsqQL82TwM6rQ75T0D/ZDzIHz2VP5rGoUBUGMvoqXYBFVZT5DbpjHjmb438xzeMFFUe64JRm5vkvyliwZrDK1WJD9W2A12mzIXx5DDakYh4JUkRUQSmpFynP3zrpr+P0hOZmDjC/UPUbSVRkFAwa8OieTSppv1GkNXTyDK/nZC/5+z0tzSWcg+xnR5ryKSov+oelpM4lGfSbOjJOXlEe/Vum7jt8dOkbCMyXCxKM/GGtOCVFmEUwieDe6vXmxRbkQHWyPclYB+RsNTct7vD+V04mXaO2M/EPdp7uN6r/4gI3e1UiJgQzh6Fntp9pDe9nkAQRjaotmokiakWGILMcJNMjKXTcWGtGECR2jIHCvvH7j/HSZxEQe6TXddnnMzLovH72RFnNQ2ZarK2hXcc+o+Rh8sGDlyZddTTJYzVm5lxQr1BtEMT8eNfc2Xd2VxaFaAp7abyKX0TaY8/WKkab+VgFgGoTf72LV6mUyWSSvm3U6578RCPgf21RVfIuE5J42Aq1eeYkkw0jCF9cVSq1ZQ7oLZzyk/qPI+LXcwgh02eaEwgZaimDb6GTXvNGLiG/UPVMXlVYdLTGBWr4BaIgk+pFwzx+4Zmwj85hHBSNObw6SJBETnK2K8nuD65IzfIevB1j+Mv28l5oBD714/o2ctSVcBYmxwFp0CzjG16Zg=","kid":"5IJmAxfUwrM="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_008","notbefore":1646866800000,"notafter":1710025200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFe6+khPXHMXLN/gLpWJi9cmNmalZ\\nJ/H9Ko5t6+W1F6dPaUYnTpV/RyCBxWd9vpgjSKHLD66FjsxMjp/3Q8U+kA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUGIV11m6B5igxihjlFKRkwVNsOAIwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMwOTIzMDAwMFoXDTI0MDMwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFe6+khPXHMXLN/gLpWJi9cmNmalZJ/H9Ko5t6+W1F6dPaUYnTpV/RyCBxWd9vpgjSKHLD66FjsxMjp/3Q8U+kKOB4DCB3TAdBgNVHQ4EFgQUGwpsSQJaSChkXvDR4rLovd0XxwwwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCGunJPiKmLdtXndGJEMy7bUnhBJogJBDdY4QoYUL9cVGwBVeVzRyoKh1LHAYC1OLzPb8kyP51GVZvZtbJlMhh40x2bDoyA+pidQUQBPs9pSun8//evz2n2TWsTDZ6vSeNgdEtLZsVFSnVKTLgjpm4IJDS2T/sr3OlGZMMryqeVx8GDpxVysZY0rRZ953mLHHTh4NVi2TOr1gHogKDpLCk0yIR8ac1gtdIGSxNtJtUf6gfoly+sLtRR84cQWqZNiFrYkxrPPV7mKD5cvWcqYl7oq//5YMUHI9Roi/9L9fwUEGKh/XWe4GrZIV6CRmmjGYwN/aKoDrOviPzmcmY07yMzuk10U4j5QGHJ9B9ePgvGkRMp3mR+5h3G03zr/PuiIhmiufhdomAMmd6tl0G7oAl8a4apugBN5DluJ42EJpkK9rHIIEi+2+ZvkNIYquyoYcCam3/FgHQuuedxaZR4b36m4t7sY2zmWjjnchZHCv66FgJEVYIWJm0wz/HmWBv847ErUunoKLEopY5cHrqfuii+A4HzO0U9+vYZw6DA2RwuVq8Ya5VdDlbZRva1OqzzDB4rXWgFwPZulwfqMxclrRHej3M7m44ynNW+7fpS44ADFyvLN6k4cS4kDQzfuL9bRcSiR9+UpCQGDxtOx6RF5/kyCwBfshXpinmayXrXCH4oNA==","kid":"696cpdD4YGw="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_031","notbefore":1652565600000,"notafter":1715724000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsdkkXqwhvUOcRao3EMIcLnDwZNiB\\n87ofJwLuwqzIlQhOOZ7ndf8f/flfzxzogN7OgekiNNMpPGjOy58MZQ7Kpw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUWplIUjX5w9eTfcPRQLG1AUcIeI0wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDUxNDIyMDAwMFoXDTI0MDUxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLHZJF6sIb1DnEWqNxDCHC5w8GTYgfO6HycC7sKsyJUITjme53X/H/35X88c6IDezoHpIjTTKTxozsufDGUOyqejgeAwgd0wHQYDVR0OBBYEFJ27qMfQU5fnLnX4wi76bSxJ6QboMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAlzY0s3UVOuyqTJGhyBVb3cfkrD4Hyqy0QSrB2shuv5JjGudzjSuGqurDp09Ozyg97+PuNm9F6JqxiZbz+IhmzZX2yyYwBEOKv8KnN57DEIY65qOLn1o6yJEJpNWVhCjqW5MnhND7CGxcvTGF3FHeEB5OfxnSZaC5aDkNauMoI8pUddONpYwrtHiaIsxsYce/k7w3RctO+8ZcYJ/BE1Urc/rpmcV1FWpBC6FzFG1rbu1vXMkfPmKLXFCPZv9Pzu5u9/et2h8TFWS7DyMnWiSBcuJiF635CccYfzlQLeBBeGKFR00IqTOiSVQZPccB6PC7/g6Vlm9ZSrYQwBwraQIXIYRwMpIkOifn4bT3xNLlGp6b0k9xj12HKYR4MSg9GZHj8ctFCqHiajdjG6s5azH7wOAEyvzA047/RSjNyoX5hcLZE+6SIfDjZPDY8ZVE2IF1LBj1TW1mHWOeXnYD2ss3nC6nUXYByEekN+6pn62zlzwv+BnNPCZa+MqUJMvfRa7IC2qCF6VIB4KHhWH8Ev/3JiimdmmnqS9xgb7Go+r8h3iXbmR/wjucS5tuDJSkkEJDG+5VcEzKdxrIrmbTLIlDf84gpcaH2EYFn2a5VsYyybGndNl0Q7qICVJGax3CPZe1gQaVNqhtEDLbfh0iXttV5F+UdxrO2rQ/AH+fOrV0Q0Q=","kid":"768E5xdq4Eg="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_016","notbefore":1630620000000,"notafter":1693692000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTC\\nmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFDw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIURQaZ+EBTL+Y6w52qaQUNZ8YBNs8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkwMjIyMDAwMFoXDTIzMDkwMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTCmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFD6OB4DCB3TAdBgNVHQ4EFgQU7OG+JgHJZf/maDGo2iSgWdFzl7EwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCVWdsW/zEmkJ4uRQVoYTxdDHlmS+mbDvEGv3em3wtFVWX/0FZKRRxHZba4wElR7DjEv4A/d6sYPn/9Mp5PhBDS/lofFzUMNYAumH4uls+MT6a9ezZFCtcATKj9pP2hMySfSn2rfQzOR9yXS6I/GcruzehqedBmzxc5uKjbSeyLA7sgsgl/JB2DW5G4tIqjxIY8KytMTkrrlJYaG/vPokpS2ajUNZisBbLHJAGLx4XKnjlLviTBSp3iAsoCh/FFHJxtQJ2pFvmgRmVaQUKpTaAuHH5pPmw4Q8rgXq+qX0vFaPe6LaUCpJkEguY5lxGtHqZGoqoVaKG3/LX9qkuzyJ5ijI//e+Uzah/zCBmW4kK9HLHUVWNyOD9fbVhWHJfXKkNJ0dH5JV3bKD2G/MvM81R5Q41F9PUjOXYoCrDnY2tmBPuXisR4mCulrWyM6Bj0/r8CkMkwMNcr7AoTEfXpa8MxJANVWFARG76IYiQtn8M1dtBxmy+bf4/+n/k6S6Z4w31tTl0YsNWQ6TnlHS2PQ+UiV1zchJcZ5RW2YwlWjLRhJHOzrcv2m1jRIsqPASvRLJjeAs+77ZDyBmBFA3piutllZj5SBDCLzStyIplruJWHhCnhGj90b+fGQUPAhj8XxhRuCnRtXBwWED8hC6dQh8QaiKB7sTrlU9L/8wn5mCGnuQ==","kid":"AX/m4PDDCXE="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_21","notbefore":1634076000000,"notafter":1697148000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2KIu7zh4VbMsB2Y8H2VRojkDFFA8\\nhQwDsYjuAuxqIvqqx0Rjjv0+teHsdtIwdXW5f3BrIp5D5WXbPechk9nR9w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUaC1i8U4Vp9O89KqNCGnoL/BxXpUwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTAxMjIyMDAwMFoXDTIzMTAxMjIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATYoi7vOHhVsywHZjwfZVGiOQMUUDyFDAOxiO4C7Goi+qrHRGOO/T614ex20jB1dbl/cGsinkPlZds95yGT2dH3o4HgMIHdMB0GA1UdDgQWBBQbSJqpNjLhe5I8/Jl9l7JWE78a0TAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBABSg7TvfutJ43UXAOblrRH4vATAYUUHb542Pnqr87+7IVl68HtYLeBI8kuDgbo+E4D/vLiWJFq7V+9pUQnLvqbIlgESQP2saVFb1DRVzBk6UdAZ98kAfrND5Aom7VPGoZE9UpRBWYJtH+E9vXR/6zr3ikIbLSghS9S23R6PqEp+KD9bd2DUv2URn2VsAncTIwOovN3sCVfbiI7sByCyqzoCOpK+lK4GbTRUDnrnS4thexvi/T+pMmJ7jYUtz83tD+rp6PO5L6Ps8JVhYDNYRyUqrxSNcU6mfKikE6I118eeHCHwCTh4TXsE9wTwJ0oZwzo0RlZo54GuJ3XTH9zJZv4rOm8BZwVFXXKcPR/MKmRTBTK0lsvCb/yFSJjW9h7EOBZCJB6tmrsXEaZJSzSepge4hT3+qO4S2VgeruUpeoZy+X7ytWsMAWL8NMWBxVba9pkwM8zTKluw2dFIaMm3+p26rXyw0Ahg7jDFGyPyCjlORrepgMuqhG1nwg5+INYhqDNx6MOY+paAkHCjacmvDlcx780SrcztES4D5h7tMWH5rpHGQdAmr0Ga8klWp6QaJs+E+RvlfjTCx/jqYHaC1MGjxiUQikOEbcxZH6m+crrtcyMH3Jps1pqCDOYHVgsqOIyqkqdmtLxfdvGzPUn0hKIMC43gkyPX9O5CphGmwJEaR","kid":"Cj0KwOpRFvQ="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_013","notbefore":1625176800000,"notafter":1688248800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6\\n/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUdvwPgIGxxk3GeLBFSk0RuKP1NnEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcwMTIyMDAwMFoXDTIzMDcwMTIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuKOB4DCB3TAdBgNVHQ4EFgQUK/s/lmhAfvZK1RyuXxMIhJ7oTm4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCwoySNQghvF3QSu/6RtHg1XDV/4eNFFPwl+qmZn1AfODHAfVS42hjsmMLeDOLv0JUg3Xdx8debts/8/ljys1XMy1tODB9y06ZrQ1X1GxtutC4cSacBYWsy06qyI/vn1Q6vwKkNHADNJP2GNxQUlolkXkdgS7q+2tWCxcK8lQE4t2TrrNUi5UN8tlagLkbuGYqnzHnGdZ8AN6NskBhq8j0mcDHxhZ32yBg/+ZmLGdnCqRuZ9fjrH6B3k/n7fHhDG5UPnk+m+LReCRN9Zud4lGzLn3HSS1dqB5V3k3lsszmQKEi9haFljxImcU2aJ+IRepO6T/kXh+bn5ei64sEro3fad70eAOg9C4hkD3krsHMpYdM3TBF704dahPbuusRFqDCD9XrLpYP4e6UD+EdjOg/aqG4i5DEdk9cFJtv+5gp8ExtqUXkIk56jjmShQFwfNgA5SWa6lFWniQCYPxb978BMIqOamOL/6BwnyaazQWFm2Qyl4AzlWot1CrOt3r+aK/i0m1nE028dju2xa3BTKEsxjCAXJ7eOldXkezBPFVGpfrdWssqnbzaWVXtVIfZ/CNMmEk9/cqgS+A6lrZlC5Og28ziRrkQatnL2SIbBXmcJ729H1SHRfAVKu+yXDzHV2fcwcoFBgZUf1g/IS/ImzU4A4sJImfDAvaFY3mcQslcm4Q==","kid":"CvmI4xOoMj4="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_025","notbefore":1623708000000,"notafter":1686780000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEGSSdtJPZeYWU3QrR2cR4M2Cv6sY\\nKuY870qkBKKREtlSel4Cxpfm8EnPZ+OPVVDXxArWdYR0MoLK6Ox9aEIkmw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUEE5lEugsksKBZO8ZFddktB2zEZgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBBkknbST2XmFlN0K0dnEeDNgr+rGCrmPO9KpASikRLZUnpeAsaX5vBJz2fjj1VQ18QK1nWEdDKCyujsfWhCJJujgeAwgd0wHQYDVR0OBBYEFHo8gi1E3sTHBnZB1uyUzxdv5GyzMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAM2QCIIa2/qraMLp/+N3JR3gBVI+zSFird5rWdWPWptnVq+E2MEPwJhz3a288axhZPetnm2vxRHtrzI8OS0tcl0qoDhHmMQAPzYHth6xGoGx9+jfLFMoynA1hcRmILtiitPoOT8SYe9K+ln3sia2xn52Rysy1xLTQZquBmczVAdxAS3B+h2nNw7V0b9ukamul6w9Fp7ifg25pT6mTt5sXD89hTSqTf/fhiTCjRTrBTJuVA9VgKrWUiZHI/vIwKRHoqUvMDDW3RK/QoAqfQWzztKV9yRCpBhv5focv50owbyu1VYpnT0gnl20UZsLwEXt6TusJFvGoiySFCLLanU6gyoHcXudNem8YEosOzxFSR1wvKJws8JJjuaQweQBtu/XRlwti73KZjwltHsehHC3nFsl3VwMf97A2cmre2ueEUcjRFvElh2PfpIIL17Srpu/mvu3hSVHndsUoFVZnZUWz8rVQL0M394Ik9ZBaZXVrIZud1FfuDQzbVKjRTO9mOIv9WZ784MAON+g0p0xKvJ2MZmwe+ZF4FvxRP2fCC9vlMk3As4bccS3IUKsrupIFXar1THfGPL8obpn6ktjVJ4dCT+y2w5JHGtxclhIjdqG5w/PrMPjeGrq8wlALwGjKMTF6gOZ+BtfjNCaG8h8lpt+oKeML7GP/Fe5Adjcovc0DBY8=","kid":"G3jDFQ1oK0Q="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_020","notbefore":1626300000000,"notafter":1689372000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECmvd9b56sHucHEi7GBjqapZy6IAZ\\n4MFIFg7Acr85jXp/oBSNzFBP9CnkswLR5vwmr836uS9JL5sddzLT4K4+5A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUY7ZCHR/KM3Pu7zkxGX7a6r2xWT8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcxNDIyMDAwMFoXDTIzMDcxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABApr3fW+erB7nBxIuxgY6mqWcuiAGeDBSBYOwHK/OY16f6AUjcxQT/Qp5LMC0eb8Jq/N+rkvSS+bHXcy0+CuPuSjgeAwgd0wHQYDVR0OBBYEFGaKMaCARFztgSv4jjRlAu75x3ILMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEADKs8pzrmE48ZExyNbGa8kV7CjJjCfWGTOEfzxaA6X7gL0kaHVnvPeNq4yQh6CZl0mwrEmdxvuXKRefU+nCg/prbn6CAwC2irDHU5hS48Qvya7JwqNTMOU66phFs3FDuXOpUvm/fe+w6Vy9M0IqbKu7kEWizZ923G5YjrcUgnTuF9xZ0pOd2HjYh9efNOmbeda0JmJEQKxi5+WAGjOTqidDXfh/G+2jB/Ja67kyoZSeMHBEz7IyJ8hBrUWRWV5oEzIRQdMlZ2xPD9S9nS00T09gkl2nhx+U7nTqRPQa+qKMiejQA27+EwDgszkl5hUMTeqB5xA21l2SqBqz4W+v3WBy0ziDNS9Qa5HC1+lZp/7R+33pfGZMOC9iw2+yyC+SC8cFwUB/iuwZ+0096LV0wZshB74ZjU//sUNJIL5/ZWaNGohnIorJ8nbzMFm2rPfU66dOanfQ03IkrtIlbxH2IOAuBsC7Fk1OH6DDMoOJRia7OSAOv1UT696M7R4MtKyWhCiiNajxT2jSJbvpVj5YmS83G7cfbsYHu8x7VGxrwMXyyeyhKPh8D9xXCYdRrkAo5hhd9ETLRI4QeJHPQvw7UOL3Upog+fZmaXBeEetGl1Y8PQG2JHjY0BUGclNvvBApH6jEMWiOMUMjnR+mE8FC2LB5GJScjq1MLjaDqYpj5f2jI=","kid":"IMgNr10pfPQ="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_24","notbefore":1639522800000,"notafter":1702594800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEv9oPMoRAqA3JV2+cNikqVChE7Y8W\\nxGrVkEm5PV1bFndPkVXnRgpdgznH2H/x/3IcOdv6edXz4iorfKud7oJoYg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUcMofBDuZv7du/lkGLSBUaCPoRdQwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS/2g8yhECoDclXb5w2KSpUKETtjxbEatWQSbk9XVsWd0+RVedGCl2DOcfYf/H/chw52/p51fPiKit8q53ugmhio4HgMIHdMB0GA1UdDgQWBBRRA97mCPpiiEm0TRCs24gbDkkU3jAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIrIAYlDdyvTTVinMgb6JUX15O3zMMieoVig1T58oCLVQFAdMvJAWvi9SKVe7FdIeDLVUDuBtEc8P51rI4Da3Ln+2eNvcO3HMyq/1IFH5llBH3mNIlynTny1G02qYVGAmWvaKNIKeS50Q5c38qBQFLvabIOB2RTVJLAZ1sbRhRnossB+MEmLpn19/UFl23TQqzBgAzRILCmuuSwyoJmLq/jAMAtvOtx32awLv1tRWpdDK0hM7/Nl30ysNEgc8AXhHNpgVS5SmMC41WQWXgMB8ZiP1t6h+nKPmLHRDKnM5H+ukg1Lob5bTdMUibmC64b6yl/PISPqHCojnJRTz/kKXf+E1zn+ybkoYE+608a8RO+4EY7vEsuvGTqTBtJ4m7qDkYLMfXMTQoCg0GbAal7sa7aJVA/vdno3gDGWisu/EzCi0X6C6Gu3nxJuwEp+Il1kD2nIySSfQzBgUoZ4KUHUbvYlvRJBYQKijUItaJkThvUfFE+C+TUH0aqdWBl33zEDilXiaJEYTIyVtRRmPMF/EMK44DGc0DF4tlxeexeXrAXQcG8PmxRVfysxv9JN+53ubchR1SZ4fuPiRFtCliKz8luUmpVKBtbtvPPyxSWacRR2Anfy2KCVQ95eLFJUdMpp7qSTGvcIJKtuoNMKW1eZrvISldQDejMcoFXz+QgtCv08","kid":"LkrphwJykEw="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_25","notbefore":1630447200000,"notafter":1693519200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEB5mLr8niSSWcqZ3EbDPjFseikZTP\\n0rPRJPDW1+hvblECWjmEOsWEiXQ87RUStArNabZ9JMysQccgbb5IJ7bbOw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUPXRtjcQUp7b28v0vmppxnIFeWH4wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgzMTIyMDAwMFoXDTIzMDgzMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQHmYuvyeJJJZypncRsM+MWx6KRlM/Ss9Ek8NbX6G9uUQJaOYQ6xYSJdDztFRK0Cs1ptn0kzKxBxyBtvkgntts7o4HgMIHdMB0GA1UdDgQWBBS8BY4cl2GX44Dn1QTF8A1NVL8unjAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAE7zd0O/XHFUy06u2iTzp11wD8QZiGVEL9SPpI/fB1cdqZKL012FyiiN/wljpgo6b+p9SFvAY2nfod4Rs+by+PXgEdsVkuoU3QWCl0JKDqu/4RPLX350rufJWHSHBIocgBCUjvsgfcpJa2ureQ9iY9e0PVyRqEtTZzlcJWzZQwVYGxEcUnaC7pgmwS9awJ0r52GrnWNIpekSFvJcMsbT+gsfUeQU32lXENVdgsUxfX5VJZ2ooyw7bOzPJYInUwIMs1msLQOhl4scLKZtopaRztSNrQCkN5Y5C8OjEimkCq4ed7yznYhRBI/nN/1ORuniYS6jAilF0R8QBYdZOumjFozYWt6HIOuABikGvec4dp/5xqPhTTKrjygU+UMEl9bV9XtdPdHdbJUP9wV8gV90Fs5mUUlzbZjkfOr6wLxPMR1Acq5t3usakHLLFSSKHmoCwhCiiGGeYRPSjdcryxHW19zfSyHiKOaWlV/Ex99VjgWMZqV/JAl9fdjx4F58d03gp9iQY2+zm2WQnrVTUPrkEYdLoqcVtn4nZbJJnFlPVi2H9LcDN+LkJroXFx/eQQ4BVBQgIQ9pWjPUF6ay8TIpE1/PWhf+EBVet0FA4QqR/gypJI+cNDfgYUTA/2zJ5QpGDQSrUdH+8nBCx5RgtE4/OZBj83edTfcbC5+GPFXC88xZ","kid":"M+R7JFFk6G8="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_19","notbefore":1630447200000,"notafter":1693519200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERSQZ3mIam9saggM/z1bCW2+wGPWF\\n6yNJN7qrsTLHntxEu2JpPJRPP866gJVIsHmIMqU/Kg/BnQ1bb6icYxpcTg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUF0n80rrBMJH3PxQUQLM+vM20uCgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgzMTIyMDAwMFoXDTIzMDgzMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMTkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARFJBneYhqb2xqCAz/PVsJbb7AY9YXrI0k3uquxMsee3ES7Ymk8lE8/zrqAlUiweYgypT8qD8GdDVtvqJxjGlxOo4HgMIHdMB0GA1UdDgQWBBQZBTK8TIaJS4alif7cZXMDRas7UzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAEqB7XsEFQ1yVxI4+qUO1wYS3j5CY32bvzlbL5TfH04VsS1UJvMnzU1gR5m90bncj4z+sqe4m0cHygP5VncDt/Hjfat4FBu7EfxIlBYTF08iBVClMxbnA64ak9XXibT6QlGDNGnLPK6FaadJosV8pkVUYKhgkIaR/5bz8CzOR1pECkQnpeAjZddHM21YfbGDlawwnMbjLJx6Zi2//RLLlCwmE8lv1VfAyG5fvJOcrx/9QgrIyLO9BmPwMBgxK9BXBv7fePFpYktbmhgpf7oLbUdmREbfweVNodmB7VjN4FiidTbL+m4EFsi0Su/l0YgXdcKCRZgS0OZn3lqR+KuYAsNxw6EbGAub8FuXrw+5BQ+WJ2ECxMN8fmi1yWMj5Lr2oHV3K30m15HTcRWuWZw1gYnfNf0z1NNPUK8LeyMDqJoPG/Oc55zrd+BkCecHQEbaa6sj1cdKwYabXOjCgTLVBxXV0XwHoB2qLjyXVjGoRHO1dwAEgnozfaUWB01Sh9Fe+xuSfHAS8cNaIBCMBCKktly7Rs+8bDTf8SNSuPlWqiXi5DY8a5UEEjj/iVFxmS8jheF4EQAA9j+WEFNyEn6szw5FH0zJO/nYhBS6y24l6aGanes3KcOL53tz1H+pGw58HDiWVhUpTDLWCFk+JGbTu92nRVxA0axLsimfhPR0lVLA","kid":"MJuQDybecd4="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_032","notbefore":1639522800000,"notafter":1702594800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqqevv+I14Er0ap62pyJsNnWkipxM\\nuuogVRR94OSi2ZgIe6ejB5/8Xnw7URRJkYfEaixM6nz6Y6h9xHT4rQOXcg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUAsAQyVk0S89PuVooonmdBhY5tSMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKqnr7/iNeBK9GqetqcibDZ1pIqcTLrqIFUUfeDkotmYCHunowef/F58O1EUSZGHxGosTOp8+mOofcR0+K0Dl3KjgeAwgd0wHQYDVR0OBBYEFNsZf6xdKlAdeMErziNj3zg4kqzNMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAmHRGMyQKn86+JFT66yII52aBFp5199r13R+pMhCpTPdibTDItLAdehLwyZBCW88PpdCu5fUzVZOSbBQJt3ocTQY07AO4E/4bdW/A9vXYCvL2eKgRuu9pgyDeWFFDh5u9us7SMW1WSGC8TBGoQTizjeP6gQ/iznZG19TG9+G5FtoCobzGm/kMGtyX9s988LijLRAc2UBa4mk1E1MLkXGOnbzVHoIhxeFVWgXwBzCwCoO5ta2jF8e2AQggj+6uJCHnoeHwOS9JTxBanFag9LIilMZnFrZ1dyEYQtBzZUf3gfzNziNdYwv8oGbye3qFCS3YAwO/QCBGLAuzMiN6iJTL7+ivw06lpkwbCnREMRcNuBd8nSzzh/AJODVK0Zbm7elKitAfOl9xJ552kSCIpw3DRljsAvidhjP8ylgTKsfVhwb2bK9HEHSgo/MRc3ImWlYun1IipPwAfhp4uQfqcP0T8FLFfSBCK9sLN3F1jby5dcURpfYSi5BQvIgbgiiHpnxjueOStAGoof7ebmfFaehRnc7KoGlCfkAFrbBgRrLMsRbYv2xl47TOh+xPAjdbiZylD3wlzKD0ZDGpAfq6P0ovYoTZGRzzalw4Fuo5RW+S7SlDQCsdkNEKgAmFpGVnLed3YKhmLKJFmljlZXdeZVjul8KshpP6//HW3ceY5GXvXv4=","kid":"Of6ltPMXuJo="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_024","notbefore":1636930800000,"notafter":1700002800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7B4Il+aYBZk8hs1MI28H4Z4GF2HZ\\nCXgX/DSTxvUoCMVze4xp449WJLblSCKXreGdiT0Mycgevo4rWYVGbwtUxg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUQGT66i1j72Yd+CXVZxgaJFhLGKcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTExNDIzMDAwMFoXDTIzMTExNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOweCJfmmAWZPIbNTCNvB+GeBhdh2Ql4F/w0k8b1KAjFc3uMaeOPViS25Ugil63hnYk9DMnIHr6OK1mFRm8LVMajgeAwgd0wHQYDVR0OBBYEFOkihiD6srcZ+6gH9LiQNVc6QwQ8MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAg1Vrsxtjk49QaxQ/LWFLC1WmRTNO/8XeLyASVHjPZXWfvrl9ft+SlKqlhIom7sYbxiYF5+g0qRjwBWMVqfFkYPpJkeuri2awLQo9Hr8oiPNVSHpFi3zjr4gMLEv2buQ6LUbvAT2U6eOW17AiNhT/3XzND8tILs++7JKU675p46YtKNguJhJVPEO+9cMdBdeJUM8d0RRV40AlkY/ThVI6BzqxmiD6jAka4bWJFztR8xkBs3RBxcumGXPIJIpC8cJ9dqnnsBdLJfDlWLfvpn9k03QIU9/XObnw3wLGwFWnxdr6sQMNxJCMpk3U2tT6og6DGylD4OQbGQvqFzm1x+5X11DQIdhQhBbbz+ymVBhVjVTm6D5JsEHYOcXi00aIs5zuDs0AYJhWZW/eimBgkRy2WE/6eH49pBSl80OmNAcxboqZHQS1jmLqZ9yptJ3pbSOXZS1ABgsGOYXCyHTPy5OQA5zHIt+zakgyvcFJm4YcIOD9gKzrpyiB7qJLbzliTHcimuIoMfKfzMi82K2rsFZ18glgRnm0/G1I8Cgnol2qXjkJTJq3BgI46+aA2ad8sMWB+3L7J9dj/nQJrNaZcYZ5IMhyHxeZRxpo9brURgzt9J/Qj2hF5gv2ovJXo+FgjMiLusVpsi3HKcYyUS36dKj+f4ty0kPdUklcdx52ogQ7K44=","kid":"Qe8D6lfZ5/Y="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_030","notbefore":1649973600000,"notafter":1713132000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzuWkpSJGbVsp+E2UNf389FyOI+S1\\noE2U48ZdgllNRQo5KJ9TCmLL+U+eRVmId9es+oj3BS/rWfQR1fKhs6TznA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUAj1HEBf1NelaSBuczWgaH5Ch36UwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDQxNDIyMDAwMFoXDTI0MDQxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABM7lpKUiRm1bKfhNlDX9/PRcjiPktaBNlOPGXYJZTUUKOSifUwpiy/lPnkVZiHfXrPqI9wUv61n0EdXyobOk85yjgeAwgd0wHQYDVR0OBBYEFA6IIFDXpLz5r7sQnjnVOJ0MgUafMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAUeglZ3THwmpehcaD5UTX7ZRYeq7cpC0+jkir+N8Y09cA2S39ZF2DZBbE1UaVNDfLCICb4TkW9vHk+YEBjkykz4tSH0tkGUX2acNX3inHIDykff4mkRqwjYRInylc/MD9wrUwtIOslp0gW6CcJta6SMw9wcjaG4/tv5SddMvWUDs5UZyylY8Q4O0rpbxAcQ/wkF1R4S4XZ5KFD7nodJz3ig7b1dF08X47pOYjBmcNBePNq4nf3IS6x63LhWmDfpVc4+75NKwelBrLTErnVhd9EorlUWPHYvhfjalFanUxQmQdlJpcVhAh/BZEyGKb38ECMoHWzat66SDBVHGrM23uliXxDM6sC06ulab/6HWr5DjzUcgwx7UJU5lvGP1Et1b1MJNNd3D1Do7QoWwphwT81BUr5wB9CJSG+iOjRfv9pT85iYcNfpqtit//3H23Duw3K2EwSPGvxpQqSZlwxDCLhLfm49doBeVItCU1qDlncH3ky/D2XgV6ENCMZaQTcyWHeKOzbTMuwINsfc7VfgygaVySmGQjfyNukvx6ywI7Tg4H20gogMStLaj+yPPnsul4N+EOBHsSKCenfwlaTe141+nfKB9eUA1kSApybWY7E4pflmTaDmuHEBYb2sz8nq2lD3DkdiFYe60v45ZOsYwzACyM5L7j3Vu1/my6EQBb074=","kid":"UcuKeuV1sys="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0003","notbefore":1640127600000,"notafter":1703199600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkDtFRuH55y0i+agPf50duCfKbdQl\\nqeZWlNSQGiNCmHQ2uwU3uz9F1/PrzwwI9HiXQQRNiHdSDBpf/iBkFR+B1A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUQkSt3NEP7eZXRRnAVGA0zskx+JEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIyMTIzMDAwMFoXDTIzMTIyMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASQO0VG4fnnLSL5qA9/nR24J8pt1CWp5laU1JAaI0KYdDa7BTe7P0XX8+vPDAj0eJdBBE2Id1IMGl/+IGQVH4HUo4HgMIHdMB0GA1UdDgQWBBRM5vCkGmWh+WbL/93iZ9SHcFFJ7TAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAHBYP+J01kD3SOJHli5VwmVFRYBLv73mJOlS8SdRO9IWs7KLTSiMAM/izNYp9gIFkgVsNepmJmrccKu5jJUaEZhkjXbhvhnFZQuI0cvMcstZF0iNIFN2vukr2ssIKeFlmVNXkqjTNCawvpzV1IKrwpqGMthe33N67AtkvmLT+Z8Cf2900b8Pgq4kZj1dUekMtz/RwNnf9nOu3Sr1H0pQ845YcUr01DsFsMFyDd/EEmI3OGBHzvvEAA15Kk4fwTCLY7AIy9Z/cAIzy2pvlMoJpPDQF10/JIV0IFPd/nLtNiulU3eeFrzWzXsaw7mIXLfDaattYmP9zc00YSvgcUvOJc4Y0ZF3XWIrPoMYJMNFJic+AjVf6uOHARVb5TN5GDdjtmzzL7dTRl+2mNRXpuOkgWJA4/S8DVPiGZ8N0zbXLltLAnoKW1j+3/sPxX4Zpgz+kSY7Qa2BrAwvj03jOXBGNxiMPFv5ilLCwqSQudA6STA6VlPvuKwpiUZOZ4nVSMJ8cRyKmac4KKb+vi/O3HsGGbLYA3WiqRs9oI3IO45S7S0kHdLLlXOGsQtQWxbVxRxm1WbaOrqk++xxCIKm4PziwY9BgElDi63LHbPt+zksEOCqcneD3viBlNLoYXOpvap834c3oL8pxynSxLp2UXygiz8EUjZPyVLYHNIZwKvf3yps","kid":"UnanmcgtfUA="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_005","notbefore":1639090800000,"notafter":1702162800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgA/VBlwh3BT6L02+aBkegInc4i0O\\n+dpqxTnWaR4lFtdAQZih8DMwQnHTE+FMYh+3ELno/d3jUOtr2KRfMiwcgw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUEn7EY32bIQI6cjr9LsydaBRkYLgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIwOTIzMDAwMFoXDTIzMTIwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgA/VBlwh3BT6L02+aBkegInc4i0O+dpqxTnWaR4lFtdAQZih8DMwQnHTE+FMYh+3ELno/d3jUOtr2KRfMiwcg6OB4DCB3TAdBgNVHQ4EFgQUmoAU9xV+MEtzaiWTfIByf3qqNNwwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQC6G6FD54QaC3FBbQog8erXva9jokzjpUynW4DPLMyWQxOS1PlgfeakHADREVs0Q2erL3P1+VRxSzk11Rzss2lztKGU6r3G0EvLWeXT8C6FjWKv+Ej7tzjsWo47JC5cqffYOcDJWx/sAaBNW/OuTiG0SVSVjI2p3VTSPmuC1oZQEKvtqOkCgD4/MClxmVijOF0p344xh/l1ggmoqFZPupyG/lR4Ixx60IVUoe7HYLJrjGX3XxWVb+3CMVqIBUmZNajvxuDigdtMq9gArwymWK6k9yqmlroQ05XWt9gI93uLNJLnZmHrMOvXLa8lp6XgxUmDOYjvFhIWCCh1PO+nxfb3TlxKb1f1E0AmylVt2s3+/7af1RAj702f5aEscUtK+3OwAc6AfUo5x1HsZR9KCm4ZVdHLwTA01UWePGMSmuUTsaJUGo1PY+soNm26XcjFvU2SMHodTPb5Mj87ghAyiMbyb3KdNneJoQ4jfXz26jeN3yo4Yw+fYd881UukDwq6sG4PoxHHWGrkLqoZoKYznegkmAyLwZE2Z4llH/JQ8WWOm6uo1AqovXzMpAYA15o6P9OWFnXv+db+L26naLjWnuOYsiTqfrc8lcdzEpKqKdTMMfPLmhHcL3DCYJi+K373AvXj55vzCkWUr6gM74xttGtsnmuIcXsfc6tLw6QWlJv6LA==","kid":"V2i/L/Yb0Mo="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_017","notbefore":1632434400000,"notafter":1695506400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/\\nMCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUGxW97yNy30SefumeNAP3zZwINLMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkyMzIyMDAwMFoXDTIzMDkyMzIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/MCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxaOB4DCB3TAdBgNVHQ4EFgQU65Kf02Ri58/6NMKPr33J+Wz8lrYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCAD7IAnsIa2VrGdmp7kv5Tj49lhY4FgzphvUB8YcPGPy+EtrAGi+uU1hKT/nbGeB82f92nj12iQUF57gwRSalGAUvlkz4c22L9dt5pla7u54TI08GPOmR5wUs8zixYaZDjAdNr+WbfgbDzqifwlhrjIMbKwCfW22187hxcrQgD4gVc927EyruFmJxxSDNJ33NxFkZ0uXS5TMN9gWLuI+xhcosLeW9SlwscLI9WNqBigzln/nLAHYzBpS+lprHVOa+jJzktlJbATB40BCz9jpGcCDgkUTCNZ5z3pOHas2rVm2aBLcHVttVbps+ynYwyWtSI2jr9oN6GzdyS6JZykxvqGoZO3odhxe61ioVhjyhH+e9mQIvpM7qJ2/mxUFp3ND252wmnGW9FuzbFamH/SGD6LipPVyXK4oW2nxYcN7Fjdc1w/5rHXz3sYfIGORfrumSeRnfIdXglfsQi+T19cA/kwbuGagjGHntN2bnZP/FDvs07PgixNAi357BAAuwpHKMHiwXSjTW4smx4+agRVIlGZ4zuEQXLPpFSwW0ktPeLdr4DRtfL8cRav5Qs5TrG02c3lJP/PQAnpXpbGBImjAmBsat+0m7nuBU7Ix3F/A5HBkSlSHUgvw9Ze3PZUxw5igsMm0eEcd6h3hhxV8HZcS40I53y9l63gr9j1Mas7BfceQ==","kid":"Xo78qgBEx8k="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_014","notbefore":1626991200000,"notafter":1690063200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZ\\nmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIULSQWphYP//zk1JQmpv94dIH6cmQwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcyMjIyMDAwMFoXDTIzMDcyMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHqOB4DCB3TAdBgNVHQ4EFgQUZprkhn12tER7SWBEtD8mPNDNmK8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBCJgkoi4nyqPEXv8VCIXzO47sLWS4GOrT4eQ9NjEBuXqkCVWwMiQ+0PPiNi23QWx67ZK6DYUQJUOHAV8VRKZRK6G+UHRWX76hk00+hmW5qL7YT4+Z8RsXj8TA/DbUTXwEeSSinfQYefLoC8J9G7vTYmS4su0CaG0wr0qsSOMKZCM/sh0DUCNtZTpzTspDj/i2TPhTNhthyG2QWFKnTdQruEyT3XC1disruo/H0tohKOAmZhqXocdKFTl6Ycbn21A2Pm/xJRh+W/T19bFF97Z+i5T7CfS4Zrf0VQm4ZNrUv96gwye532d0QQ/6JZCTT7aL9fjEnEzkQdtdYPE0051HI9gRKmW6k++hWFiokhcarvWAsNkN4B4MIzTufRm92hCbzFh5IvsHYaaAUsfEMDsrhFSkuZ1swzimP2AQ38R1O0Brb2pls3sF7SAc3j5LA/bXZNhMJ9iBroc1SV7YC6Vv1DZOHTumSLw2fvwDt358sEicsCgdpzpm4gKTOf62rzqGiNpKWBbZW2mJvuv6WNV5C0/aW7r1nfuJ9+qSd2SUrZUFceE4vpxM2ccgsodHnspbSo7jKTeJ7l14rQn9XvoZY3E+YFcdbJQQeY0nABB83acJw1PVKfVsyt9D3DLwWXEcUcwUGioxVwiHR01VyrB2FBKurrXYEx0PglSI/NZBL/w==","kid":"YDAy+yvD5lU="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_018","notbefore":1623362400000,"notafter":1686434400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjH\\nz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINRw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUW6BjdX2GIko8Yv84sS428c3DH6swDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjHz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINR6OB4DCB3TAdBgNVHQ4EFgQU0ONM/OVD0tP9BuSIGmIZRrPdEnEwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQA7FyRe/36WDJi/2FU5cpnrV8dXpZUHEGzHRZ6vaZIP02S8EdlcDO39+amGmv7HrQbcLAh7tmPhpii7DylowyjvnjBFc8cJtn+ScbMQ34I0yokOvtFJvyfSBOlK5udIyFrDjdsfqr2BNx982X4dK0UYQfGCufppflZOfaqv4Y8A5lBTRXAlXPJBSZ/GMvFAN5mesGhnPD0nFNnpOHGfXG5DkNE3gBRYUyswIY2d7vdhCNiCH82fSW4mzPs/oMQaI3Hw8IiAgUwwpMqXBHs0Fxn8d4WxrpGj07r2WjIOVNk1JV1OHKvHfuVPS1roZ9pNNUkoKHf1h46f1nWczUM5jmVy0Xvvw+ZhvSelRwC7PQ74BUoPgbYzsNP0SvGOnhJQrhOYk3GSIf9EaQxklqVT8WREoCDNxfRmNYdCJzQXr/GZ/Eg1+6RPvYuQWgsB3SYgdVQz/pCRHCZvEjU8vUL2lwW4wgWlw+Q7OrXrpW1JOxl98zRRSpWxRrlE24crzTJ31hM7n8WFSsF1ZNnOoAhy0nRxdeOkpDcEVyoxauuPGHUCNIMmvvPG5psrO417HLJGHf3oLkKadSBK/Nn9u0YCCa9ypN6LRJ9slwxITAsKTrYttjEgNAisYVLojtHcCkAr5JfqL93rFYI9BYS2x/k2QGTlKM9LoUUpzaYDz16rddiaSQ==","kid":"YVpBYnLh1Hs="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0001","notbefore":1636498800000,"notafter":1699570800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoeh3CrNm35gaheVMze+v7L5DLRvJ\\nSyz2yimQlMPUwNJ95g/0wI7VdYnuZqALEnMFgf2MxB0y14PKwDTdmsFBzw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUJFYOxQLyE+KpwY0ONOh2K3kEyYwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwOTIzMDAwMFoXDTIzMTEwOTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASh6HcKs2bfmBqF5UzN76/svkMtG8lLLPbKKZCUw9TA0n3mD/TAjtV1ie5moAsScwWB/YzEHTLXg8rANN2awUHPo4HgMIHdMB0GA1UdDgQWBBSvVt3VTF438kOOMNhDVxezJ9kiDjAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAFtVxRCvoRCgLbiHwE/j8odxsgT3vt9isAZPtkfH0/Zd+iPdfsnPyXL2v/TKu47IBXm3kurH1UY4ovq0N2yJmOkSS5Z+zflBCOtaRY/R4q5HbK9XDe500OTARIl2w0SVQXQPaQ4sLuiW6KyZEi5rzc5L9Hylm5Gu5aYoozM/rRanoe5CgJ1gCBPkkwW9gDqKictz3g3+92gOBdMckylYV+WpUmgHyQRaBaEGJAicDsI8ZntEiBtEbckKNtz6O0ctYR+GxFj55b66n0BPXE3vqV+kT4gz6vOUFcZOdP4KVW0bdCPNAolE44yK2M0ktC9skVvBhxiZXDuZM9Zk/MAaSfq9uO5C52bhF+LYP9T2Lgp8Au65JE7if671AZ9qs17Nz9ZQg4ialE2k2L4CE4FEWkeuF1MhyGlSD8ripcluctPTB6Elvo3ffBPcgZnSwirswGlc26cFwHciUyPe1odNexgtzLFS8EGgkt8kPCXzrAtpuVD0YGg6dYMHNs1fLcDAyZNJbI/stsJ3yX2As6z+9JHzWAwiLCZtgFs6lWQ+7IyRperWftWOoT+3lwCK+ul2IMzmG7KadVFJ2Un0sAseM1LNKEzRaa4avqIZwAJkRUBN4us0l6sKzYeeZ24u4uNiYFKeWHV54McVxQBT9VNekxL5cvo7ap9p06nzfjiTYuV5","kid":"Yb1a+1WV/1Y="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0002","notbefore":1638313200000,"notafter":1701385200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuFC53glgMbuEwfdH97ghieGzGlgx\\nMInMhVzw4VX9NYrIuf/M6vnEofMFUuH6LIwSBQeT2ZpgonJ35a+vQllmrA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUBMl2JoBkz+RWi5SWbpnyalMO3VgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEzMDIzMDAwMFoXDTIzMTEzMDIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4ULneCWAxu4TB90f3uCGJ4bMaWDEwicyFXPDhVf01isi5/8zq+cSh8wVS4fosjBIFB5PZmmCicnflr69CWWaso4HgMIHdMB0GA1UdDgQWBBSDC2InnziqUQroYRTeKdlO3DLQvzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAA/VLMVc8tiJgpKRZAJ9kZIWVgjDcCJT166RSzuSfF92dQy6Z9F4GdFoh1Je76gY2f9fkQ6sYuJDO6FTzstUbKDI1qzGrfKFeFHpZziXSz1Oa+fZUAa9GjOdsIyLDjszoRBLGB0A9p43VK2cGI3GBb3bu0WMLBcPmxm2jG8WpIK+w5+xpoDkv7jjIwFVnVvepgvleB6vmFMqR7GinJMp6pejtEYSstc/0InPor4TZsjzPftXgzlioapgPYmGVTQSVer6zGITALQCBWYnUJFd5YXPD/I6jttwzV4b+3t0OXMPOitBRpLe7Uc3VCTff4ERj3O0EkyYkUwS8+5c/Y7RrM+UN53FaAodfBRW6yT4VZ+YJ4+Lzr5CHsVz1yaeYwLKlUtqRkLBvUBwZciyKhtRuWG5hKSKSE3Nby/4OViIOpUgR0pZEUoAbGTXWEuAFGem1RGsMtsSU4lluqPUCgQ6N1aTdcb5pQZ334kEYdPrd8sYusZgxEo7FrJ0V4gEiWtQRdZDKNNB/dHOquE7zqUCnZmCIiBQuxsK/Bpux382DqaR/4YktRXpY9EAnUeqA/+33gL4C3kUUJAgSWXCuGsxCN40DZlT3pI/xSBbIEx1JsZp4LHJLSbiLa0J9kGe/+2o8NvEbjuz8NGr+fi9zoE99vaUkz5eKt06npXdi5GPjRL0","kid":"ZsDoB5l3ETw="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_001","notbefore":1623362400000,"notafter":1686434400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjR\\nkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUbNtFh5SyNNW36Tj3lSGsVZ1yzJkwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjRkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCqOB4DCB3TAdBgNVHQ4EFgQUkqfVrNfmsMs1UB/NA0C3KVEx3O4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQAhOMLYhWn1iV43jduVRRivgVT1jYwHmouj7nff+S7gVnxiIlX52jc/VmQDl6xOZjBHUBiRTRqjan1tdH1LvBfg1HoZWv3HaC5HbfkMu0nqItE5zbFwtJGsUpHRTSP/wrjqL83o5akkR8Uw/iIYhkLvuEKH3/ZqwZYRwOJ/NyXJnKgRuHvgsL0zbwf5X2EdbqaTtDDGHHCbg68o8CqkQ/guBP0jKHXBFWgboMQB2bruquGqVO2xKIZIU2E3sc3dhNbDYGD3KfgJbdFtnbISvxaIfnCn3anZtQgonSsHc0LWIpgobY+NxXSNfBKzICdI350hhmnHz2NS2VtrF0Xa59kZd/WMPcOzlfKi6aVI/Y+LcpujeO9ujlFGNU6aMxi2s9RWy31tjWxsOmr/sbEKF25YGuTWwvqe/MgXzpbTF0C1lVcARXaBVT8Q18nNbLLK/VLAtzjLYTblFM4zdXA5ZnfCqXDqZZathkyyf8aY/svDELxROVm72F9GnYC/OqnGeCOed+Iscp8ne8HUTgT0iNFiAR1pRz25v047QFE7G7jwo4YTA+ynwCxnVaoK3pkyfIiXstyPxMpu3Q7t90br/mAPDCWDHFpvxqvPcRlMpd3p5JcjiurGreGbivgPdJYGRPbWb/Kwp/99ACqZFA8FaGL7aP+ivAO6cBv6DNF2XXvoww==","kid":"e+bFdywyJQE="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_BK01","notbefore":1636498800000,"notafter":1699570800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEw85KMUnYZdEdDYh5hyBfVFCJEUz4\\nbhbItd92P5Mn3sXQMHRJ4gCSJlNHMDaehYzYHQQNun1trn9fyQ89jUVHVQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUIHkOe/e5NZZz8nE/r3Qh1delIC8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwOTIzMDAwMFoXDTIzMTEwOTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSX0JLMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATDzkoxSdhl0R0NiHmHIF9UUIkRTPhuFsi133Y/kyfexdAwdEniAJImU0cwNp6FjNgdBA26fW2uf1/JDz2NRUdVo4HgMIHdMB0GA1UdDgQWBBSo6rsZAC0hV0TGvuC8k6tflOShaTAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAHg8WLw8DxxxXFp6XXypXncQyGA4HFmZSMLJKPU01rmjqpLeR+5/gAbRj0OVhQYo0B3kHNUNlA24I2i6Zzx7zKjODdCWaKsZYfBeOttVVETMs+s0X7a2V/9P/uCj8tkYOOxCnKyv7TiWn1rfaHZxJS5Wqooy5IyerATOhueiL9ixorMAqWC5oaqactyL2psTuQWRjYBNtiNJgyjAXxUo7jITJWE+gGJkXwzBU9x1EcFnCoR5eiHHRdjQWiATLEgqcbWrYymgyj6D8o1QHXS2cOWlXxVpb4a1ghXFKRbN8yblgHSB2UE6ipBS/xqcbtycHpwy1Vpja9VG0WR/K4U10zqq0XHXHQl+RMPeKQcYI0qtPKH3yDBGM+rXNiaTnmRHASx5p1fYS//7SK22xIBto2qOO2HoIoNHkI6iYJFPk9g6JP2FBaH0PzaWaX4Qz5Z/TOZ4hfKEOv+0+ZOcIKvguT+DownHQjr2EjsOKB0l0npRtbk9HtRwh0TV1Rv88Fe/ea6rkKobRXBT+9EHKkWYGNgaMrbzNg4JqYOHywAivq/XmvTPwkVpdpplp7/sFYs18U08qL15r9lF5ztwzGYrgEobsdmOYcunVbIBVJ9G+miTc08ezKZga7Wr67l0L2FizmdbWepidnz1E26n49l5PXmkA6hCTjWmjwGd0X1MHlid","kid":"eOvGe2r9RbA="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_002","notbefore":1623362400000,"notafter":1686434400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g14\\n4vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUQporYv8Mt3ziR1r6G4s54HzRVpcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g144vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4qOB4DCB3TAdBgNVHQ4EFgQUxhlqVg/2EyJWoDdVGkyJrsY4CXkwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCbA+2eQnPJWMmh2eIH1gMJhggl5GSmOBFKeXyC4jeYQSDRY97/rsDWRXAYtE4DgZQO1cZcwsM4ybbZ+khmb0iCeO/0oiKIux8FU14B7zFksZFxZpbUSAJGD9lE1xRFnfUIyoPL3lza7lWqZ8lSfLuoqoN4mODkGpPYwWu/GC8sR3ynDt2jhrdBcLnos3k47+4ZRypwDnv9FRU4/9fEnl3Y4iK+hUtq83tI5offQETsXIq+VMmcw6zmeUTaMcHRnnMo4WknrSHbe9x1MOwQmADn7ZjYzMooI4TyM/dzo1IOH8iovgMbJP7zxWqp8zgtqZPpDtp500V9yCBjGCQWgRofrBhUojKj4BkGslCZaHHkRqp0A7WOIejCpCYwNRhom3Hu8oClJ0fGcIEIrdybYISYemClnbSlM+tXt9vATf7oMRZgXSGR/9HrY95naG5U7/+eHRgm3qHAJbbbTDHET7ba+Wiq9rnYScChSH/bMN2yLsuBcpVozokcX6k2l69KVzAsVtKCjPS/ISBWHDiEaVx++RyPB5YfbVX7ykJ4SaWX1ED6DLeszCdcLNb57i1Xu35kb1SGh+CUeALUEqBtJUcEheLixnTxJIHG2xq59a560SsZBdMf8r/qYTz9DqEgBXPSlNeHn5aIG/2u0bLrM3Q9GvBk4zBj3C4zWZJVUTZBNA==","kid":"eQOY6BDp+vM="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_022","notbefore":1631656800000,"notafter":1694728800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2HtKUYnSxJw/bgED+2LJQMAIjyA\\n+I2plnVS50JCXaIALKstac37wB1lUvasfdvbE+nNbCvMkGPdMjLluMfT3g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUHHuaV60Jmxj0/Safb44HGezp2U8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxNDIyMDAwMFoXDTIzMDkxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMdh7SlGJ0sScP24BA/tiyUDACI8gPiNqZZ1UudCQl2iACyrLWnN+8AdZVL2rH3b2xPpzWwrzJBj3TIy5bjH096jgeAwgd0wHQYDVR0OBBYEFG+4PXS0sdtKNozOKQXcYVDA1Hn1MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAkjEVtzPSxFVMTUece3w7PeM4Q2fOn+MnaN60g6AusxnUUZGHErNnmjxVeU6isLYPB9gCHB3b2yZYXHh8IjMsf570yiDhsWBzwRjQc8a6uQoZSrCXFyVuvAGZ/hXWDf9AIKQrbrg/YlsN0qnhs7x3VsGZ62XHCQCBup2wMdW4VOa76YFgskKITmVB8RNE/r7sQn9tRmGW7RFC2f78v7vm8rshqB/6LFtwRe8kcBmRSw5l9pVMKHYLPW81NaEYN1BB3BNH+BH39rg89FPuuLMcO70Ow+1g7ebD+UH4VbgfhSrx9XKP5+FtQWTsatHdVg6vYYNPa9TR9/9e4Q3j3BAfnIdmhsT4DuRy9P+En9WZmg4NNFUVr8adlSKkiZOoJKSQh9TOavF4Ikvd/BD0S1UdjprApN3XauDRqvjKn4itsLc0m0ctUE5e234CLMbdNJM6ExPG+ukAdtK5V9FXwdyvl0+xVIBY9nI43z50KO5ZeyOWnqwRWCPqZ11FLuqFvoEpQPpx3d2Nc/IlQoalLWXtZYPOiEklhqAC7p1Qa+AG2RgsTxyIaMzCANjCDIFMBzcO6EbnHDPR9L5Xy4wqiLeQ06zeU0YR2WF+9DVMDR5j5lUR5QWFCDTK/B8ObjdsZl/Y9Qd7RoQT9wbtAa1+MpCXk7TnoRGG1HSdhi/yee661P0=","kid":"eUVY16rD2Kc="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_019","notbefore":1623708000000,"notafter":1686780000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEImIFaugzwB5f/VyfQ3KTfTSoukwA\\nPVSgHZWrtrc2j4FuAUpw/ObRnA9pBjN/HdUc1zcl9SO/vsCEnHkXhxjz4Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUNWO7+/2lmGQGT1cep5petfsOFocwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAxOTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCJiBWroM8AeX/1cn0Nyk300qLpMAD1UoB2Vq7a3No+BbgFKcPzm0ZwPaQYzfx3VHNc3JfUjv77AhJx5F4cY8+GjgeAwgd0wHQYDVR0OBBYEFF6mKwOiAheaIxTCkdVKd8zgd7urMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAu8BaLZXFj9/e2/a59mBrOhY2m5SpcAoayxF3zOkIOt7LNX0QqHuomOyGLHMnAhNALgS2vhDXD0hhs96ZcKaystlMePpYsVRyaYa53GwMrGHiLwFxH5qQNClCcktAP++wCcdQXzTyZOn9/GNdmquW1PNMLPCEfqlnzWawdpITr+CYMXa9R5BEMmdX19F41HcoPRn9/X2uHW/ONmBywTwJ3s0U8F5HF21buZtxVDvX4ey+qINBru4MiGwgRCsklS9kDbl3ODUox0lwhs2VgQzqjALF4xYgsdN2LJezrwAiL8GMRAenmX9eDdgzMGnjKFT6yW8BCrPsyUnM15RAou3BrwIp6oxXHnR8wbeKG7pzZZY1J4zk4yYyihwxguWbUZGksJsNAQoNdNHBZtc8a7Oj5onLyUIetd7ELXxdk8uy7WVFeye5V8qJRhWrFyhWWFscQeY8GktefXiGEh6fxGfRU5R5b0PznxfMiA3olad3s17dr+jzqCM/hcY2FmUTjYrSrAyrhHdmCYIJ3US71If74UeMs6NZnQRRiu3tbAX+TiDOHsEHEIOHldbyQqFfclyiC26fHTqcNfIAxXPmPDQ1jpEmhRjFDlOWHoSnzsGZi/wa1kmSb6+2uHgUP/C/O2oi+yAk8GpwpEi8Sgv+HH/p7z0ympQK8IUOG/4K3/urdto=","kid":"fGLuvg6n5wk="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0005","notbefore":1643756400000,"notafter":1706828400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuJH/fgV1ST2egWe4mJXWL6e5pu33\\nF08BzsYkDCiHKFIGtXj9LuOm+d6xiBreJ7NPzGxQP1Pt/UzRAnDsjmsAgA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUcnYrQMFgK1Fy648tt2Nq9kP7j7swDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIwMTIzMDAwMFoXDTI0MDIwMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4kf9+BXVJPZ6BZ7iYldYvp7mm7fcXTwHOxiQMKIcoUga1eP0u46b53rGIGt4ns0/MbFA/U+39TNECcOyOawCAo4HgMIHdMB0GA1UdDgQWBBSw76s2nUSROAzjhc98PGBEguhsMzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIlg9HMtb7I0/zvhB/XZMHBDqRQ6cDUvT/NeVfavcNqpJ6ZAxA9iIRTObsjkryqLfCAVzclXHUydiuX9K+KhjYVIKJQqU5Bng+GJOyXUYIy1RqKGVdKxDpMFPNQwzXVAQTjDvlQAJTQLtWyJnZ2Z3TNUOJXfO+9Su2MEr1InFHSAhgh+sx+R9uFMGcyRdho6VlxbyMlNPfi+UsT1+9L00m62kKXekd5Pm6tkj1PgRDnbAfTKowJMDxGgCOTvf6+atNwdYhO1egGREWVv8jPmH+WufBLw3602wzbQN/DJ7KEphVcz9vmeVt7r9TWMTmaqObgR1DIPyQHOssWhfA9n078dRYEUtJylDk8QWBydS3VTzcLBgJA8yroEZmQ3Y9nozweLrYaq5mnmUd1ZQ8HAdQuasjYJpZJSOmBuJIVA/oyGNAjJ6JJQFLKTnkRI0w+lH2nBDx7/ldEKXfWvqUqjAH9cN8P9nphBQ8ZY3C/w4F2R2naCf/WY1xpGSky0g2XZpBBPjluGKx1D+s80onWTZnQFgYT8RIaJnxEN4hgEG+/pvPH/QUfEnc4nek1nnXK6/l5n7AUeGg920H46+MTFNax8qlxSBvbktGckpmTIPW0wmr8SyJd9pD9W5OPhupo/JPfTK/hMKN/2jlWR4qKmuxEOiZkOCnOe2OjC4pH0JZgv","kid":"j95whXY9F8Y="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_012","notbefore":1623362400000,"notafter":1686434400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQ\\nWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5lQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUdhAMHzJmtfI9KC2HeZuteJ8+o3kwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5laOB4DCB3TAdBgNVHQ4EFgQUowemG/S5PIzFStnYia0U6RWU2Z8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBlqQgxVgPA/EwOPMNUY4OJm4vGvxNYc3LU6R5/5q7hRwa04yTuQOwyRzTcMgJ211G79lsFwiprgzN0kixDYRrwa1NflFQS7Ygi64qGa1KZqDziB1SqDYiHXXCkkTTe4H/vkpZkH5U/+8jVUYI73q7MYIskxgHc1OZV1oKMWilU8rSdWzDQHH6WRk2BUuTORIsGpT0U8eBQQUaNhY8V0GDkKLwrqIWEbKC6ylLa0pGNYM8QMHAvV1SurqdwohC4/6ToNzypyYNctOJUTcgCyDpKdfQ+xWRdFDqje3XUdIRByEHAb7o9/F6H9NJoN0gyVF6YyGAYLD6zBfYhpnPXNxDCa7QltXogVi1gJFglsAVrQabTMXsA4/1+IOrdqMv0Ale/jy+0gEWZOHzUquSQTpxVz+Gj2j9ZXLJPzRSHg7O+LjxNON3mz/jl7cL7wjwbKqnMpYBALvedavnDetISU46qo2QwPO3qAwWF+3/17Mcb2a7IkhlHVKxNgGOEpVAZOQE8ritoVZV+B6xbpnNY2J68vZFqYy/BnkgJ+aL/9Uq0AqA+1Ivsjd2P+Clk5qpm0ZnQ8+CzaEiNENBRNE7aDFohgkezqET1gilIkvGoqDiahw/3hbr1BF848++6+ES20vUSxK2Uga4JQ0MGaKaKJyyAwwYO1MJITQosvt1JwtgiwQ==","kid":"lrxgMs2Duac="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_021","notbefore":1628978400000,"notafter":1692050400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1PApTQ/nFA6JcYUuo7GgP+gPSKf9\\n8BQh88IKHOt/yNS8ZrjxjL+lVY6EH4yyQdbQZGqS9d2Se5dxNwx5C3jxkA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUPUAmrN9wBn+eVuHqMp8b/blfPPMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxNDIyMDAwMFoXDTIzMDgxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNTwKU0P5xQOiXGFLqOxoD/oD0in/fAUIfPCChzrf8jUvGa48Yy/pVWOhB+MskHW0GRqkvXdknuXcTcMeQt48ZCjgeAwgd0wHQYDVR0OBBYEFIRbucEIacei+qS6DFsuclGQo2o7MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAhYhTafMjVKmyAFJhTx703KE211fPRx3YlWid6JeUNDIuYTQfIC0yPlvtaFM4Z9TVioHcTwweEfqNi10sGVNbWmWAk1RZhay01VCzzsCVscNmi2/7n+qAIHZWgLyAOjJZ2jVDidC8MWGQjb/qdpu1zh46AIiVmfUfhyvBfXP7dQKgx+nPrV+HhxwuaVGci/KccFIHoOu0rttjuUfg2HCQCr4CjLKZ+RHXny6zjfD3R9T1scndEkJot2L/f0lIIZez+oTx/Wo8ivNoy9C9T3py6as2AChlz1rXSNPsdJZ9M2pcCk8z1I8fAspOu+uEevXPig20cxBz1kJzHrAmvYPTB9JTwZHqek2wriAQ/7Oy92hWxr/6tnkdPC5aKUz0nEYBvJWWq3qO4O1GBXCBt8VdXklgPHvZCym2Yc1XKMdhtMVNpOOOZV6SoSTjoi6R3Eu2VSMQCd8RKYc7DjLss0FF6y5qYjBqmizjV5MKTxtxKFA62QUF0jI/9DypU1Pk3Vias9RpFkLiHE3UcVdGMbTvAc4hwH/bkOtg0W7lqnGsJTWdc8MbnZ3blVtrXylveHA/IXgERhyI3J0YCg3pWjJbEwnEqltUa0n93o0S6sDv78lt1uKAMre1+JUQ0lNNHldtljV6dvcQ7R+ebs3GEZUyDI20fmhIcNZCtmOehZm5fyM=","kid":"mo/w8S8rZ0Q="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_028","notbefore":1644879600000,"notafter":1707951600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDFL/JfC54w5DhacEkzUU1ni7QALe\\ne86PYN+pLto0V+CXCRch9j54eDQagr/xGcyP3UBThBUnpqtEG/CtBHvExg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUPtrkrg2WkDHMSTavB6nBxxSKE2kwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIxNDIzMDAwMFoXDTI0MDIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyODBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAxS/yXwueMOQ4WnBJM1FNZ4u0AC3nvOj2DfqS7aNFfglwkXIfY+eHg0GoK/8RnMj91AU4QVJ6arRBvwrQR7xMajgeAwgd0wHQYDVR0OBBYEFEK7//liPw35XcS3wODcluwZM1CNMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAdxpY/iCo8yx9FLLRjfApnDHj6yQJ9yTEtGNRCVcPoUtFQyM3fv1Ep9oRUpTcHYD2Kt857fLENbV+C8lwAYjl+QpFViyGXSDLdyLHN6ua/qQXiKG29bT9nmRZIn3QWUrpagVcPySSpztw7d0/sfAFi05VmuQZ2UUTEhsKiR/+eoM2JOPM/m27xwsKo4g4ffSDEOqb4VCGwtKTBrKg64MHcXC0zWsaouFZNeZEOUOyXCsSjDc0zvvYj4llgC5bafbivgSRLGjO1M21vhQHr2FZDh1lokIbIo/PHGDunxVe6rbnIZMMrrhLzgBwUQP1Ihco1AG6NPFwKAxDEyt/dVPxIu5xDUjDujk2L+yf7c3tcMCXjktS8QG0y46FftIKY4ZTzPE67iWYDtRszqX6eNzkUhANjDs6nQJiSKbQLgQn/kalj/qZDZC9u/Xfpv5LDlhVZraDJ6vOXFMko9PlpOHWelN/UQL0yp4XIKfZNBZPq9lzZP6beujHyz6dMdDczXy9Xo+PZ3rNtci9UYCrpdhljifQaj5Q76cPXpJUCXFsM9JyQ4uXuGA0Q+gCzED87eOjEsKd+NFQQGpMqdEUdzZnc7veoyqOwUiwSGXaWDaWISPNNnKBQ4sAUtLIlQAYiQ/hxQtZu6DBgW2c4I3ecryp/PpJB1+m1Hvzf5TNJgHEeag=","kid":"oGix7vDtlq4="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_003","notbefore":1631311200000,"notafter":1694383200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5Pw\\nahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUaaZNZoiS7up4kcKvogrzW8iwXbIwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5PwahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzKOB4DCB3TAdBgNVHQ4EFgQUPQQuG8z6nMfreGSJOz8MdoIMvFYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCe8I1wV8foZkHBp6MM5QbHFNut+gQ45nTjZEOVF2wzAZz4xa48Knhl9K6JdeBQhedQBzx3jKWEpl9A4ycPbwCwS7+HlpDzC23ZaesAGPhR+VAEyYMUEH8ONbsjKIA+rg/4OIJ5byPYxnZkdrSNH+NQzEn8Pb5ZAW8DQXeJgJ/x3Wg+Ogd0iM8yNd1sMMQiO20C4eBRaOtJZnr8W3xLRYaD5sxVHSWRkkCVELQXAVcugmiL6u9MR4KgxV5qWqi66GqHI4zfbe1H+EQ67bnH17YZ+ye0r+FRi7aacXy7Xtk08zQCqhDFaZDr2H7wTj5NJIuSnZc83gAyV+C4QxrkYIbVqPVJ+bea2RGvXYrcyH9LrZdPDJqylcKOoRpvSJoCoyJ40zu4B1tiludT2HdTwN5wjVLmAvJfPT+ZKnVXOgwabm/95Xs/Y8fOcfaRzH44p4j3e65uZ4U1n/gUnya9iaiNpBqYq0c8czOquRm1CJVf/shRkqmQTw7p8BaMygYs2VrS521LbiEeZALpG+sdoVUQfMRN8Ii2+RrJVu+AWUdz93+u98TRDodTRKfCIJq4/rDo9yepiKSgUjaxvvgDszQLcqHBFzHB9Y/Gv+l8YQzIKK9ZxFVEjEDX++heFPYC7C+LQToZcn9CKZAC6M3D7rRBEZ1ibMpVyEW4YXu9tu8RfA==","kid":"pe6raiG2dWE="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_23","notbefore":1637708400000,"notafter":1700780400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2U0nHQxTR9PPb0QwY+YS7qJs9XDN\\n5a9fc+lCqTltrFE5D8kEZMRFY+qNhMbo5JY4VU473btztC0zWP52tgFH+g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUKCG1aBTkAAn0E/gVD+HRZXrMgBYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEyMzIzMDAwMFoXDTIzMTEyMzIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATZTScdDFNH089vRDBj5hLuomz1cM3lr19z6UKpOW2sUTkPyQRkxEVj6o2ExujkljhVTjvdu3O0LTNY/na2AUf6o4HgMIHdMB0GA1UdDgQWBBQHXz8rvdiW65BcQaIdyRy4gzUNXzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAImn8pvfl1UnkNvTynXjRrI00kIdbn9RsUe8lKMyyOhhfV1Sia2on+Gd5AFk+IMyunMFLBcl18H9BHHfuPMVR2BleZ9u0kSboF6uYennSwqVcpmGwJSnzl/P8jq3gDz1iAXpIQoc+PtHyc0c0BJ0/TrfEx4bBoMXwRz3N3r+zaa67zntv144zbBTInrDQC62ZCO/QIjP3o9rtZnI60YscEWL8ul8TDHQWiMU5hZ+X5hpb+vkMSi+c7bSiIcMFSd9CNnaJIJ1AC1FCH62hT9edCY+EFwS5I3+s1uMW2N+upDCS8aegXYcpVqnLdvwDA3sgnPwn2cOsPuLltHA//OKIF3cOFnMPIKnn3/zM5LilxWZYxy7Lg0uwfoOMV3SnWvxv9aj4wQOxljwiorL/qw71uQHSaAEphKS5MZVS2v2nV4Pj2KG/eOd9axsTy8GvOx8DbNdGxYDnzu1zH8mkWnQZ1TX6gskoJc5U8NTcHseUTj2oUYzLLe3hgawK3gvmiugHCotj1xCJa2+qlBg2ubFYPAiK26FhW94i9b6vRuNbhc7OvRoQahdKoOvPSO/SuTvfSxxGI1XYw76ZZxwx7P5z4hb0StCjeCqTuAhWJMafHzc4jNHWnb11ggF9+9krByzdgNj2dWJqWjg1MSN+/9CjiB961SvvmERhAsXOduh/rDl","kid":"qrdfSzqcjRc="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_004","notbefore":1631311200000,"notafter":1694383200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+\\n1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUIxJMjNw3dr88EcIE+hNISSiImkwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMKOB4DCB3TAdBgNVHQ4EFgQUW8d5IrarC3lBI/Bj5O53KmwrwI0wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCalwjJDDOjgInZboNfXmrdZjrxA7i65O84bWW1rnOSGZwBpdMcdKrNDiizyjklB6tSKuLH0fllMPUCMd2Umz9zTTKJG1usxQ5Yaf9BBW+g8Pwgn/mNRprogPK/VXFdLCOCmxr1/y1FEPgnecD3oBFhm4ojZywwWVrcUoPnRvqIfJLEvzvYais7y9PqkaFqW0TNyvaRq9tBYyFkvZUQuizKK10nmIXLzg6JYnSXR6awtRcZJs1eF53UQynv0dQmVZbMl/JM01y+sard38byiKzQc+v/ANI24zLHWw9iJm2/jlFTch8S2eazMEAe8EvpMqzzSOcIrmgrL/r9CQo00cFFkCGCIZWnHhHEKv+uuEPVilSJC7ijM8p5npt1PwqCCB4HWcdZEY1oCu3zjjOIIRIySZmKoailNEV4iZeAw0D++wkR1+OyywIebkaRVWKk/irrToYuvQYiTDlh1yIh7mmrL0/lULdONjsawOh/s0/vxKSyD+gkMVRzxBax7BhT3DLzj2L7E/Tw5DNL87k7zmlxcHGW8Oa6sIJwKRsTg/76frIf21u99FhfqeWkhfhZ5yTzGiJR6FquZ/tTrlq216MqICXO4QN8/p8OrP9foTS2+3FvWRWxk0pBEVZget0CtMP3PpZ+IC7gwp3wALhWtZwwY/64FUl9ZLZqId8RtbQBEQ==","kid":"rLMiGt6uB3U="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0006","notbefore":1645570800000,"notafter":1708642800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0uciJTqR/3fxFNZ9yeUUoPYUx38Q\\n8OH1jFEsJqJvfN6jrx+s8h12VqrUGv/8oBY+dECMhySMeviq8Yg6kT4r2A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUdp9CXnOFuqVuiiT7jg9FodyeACYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIyMjIzMDAwMFoXDTI0MDIyMjIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATS5yIlOpH/d/EU1n3J5RSg9hTHfxDw4fWMUSwmom983qOvH6zyHXZWqtQa//ygFj50QIyHJIx6+KrxiDqRPivYo4HgMIHdMB0GA1UdDgQWBBToe/OectWamtD2LONpMXn0znvh7jAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBABcKi+7I0gwOKKEb8WCP+E7NTzP4Ts0L3F+bGNdeFASZhcQQAMFwtPoJOfSsO8I/9p2uXHMjawyVXlWEanb5oHWLfafCrQmROIQQQBHfuHlD0N+YdHFe1W1ItvzDeouUMUndfuBEd0q7KcdmNnoH9EnPdEt/vqLU8Pj1PKD4lI7TAL84jyxYUQKGzj/D6dKsawa85Xk6+jEucHVJ9lphPFyXatPRHf1bebu84ybCwOjuY9V96+ltzFQowlkaQO6sYw22btDlsjldpwgLBV6jhZVkWNz8rWR3Um+lX6idz4BjHnk8GQt0HKEwQdgJbrMiAykkemSghxB4XYPn6iN0nlgmTOGPJTODgOJxsvdLyX3+5gIX3OOp+3rFUvH/1LKlYGis7OSeMxDQerOAV+5TaYjHKeGZhLkJpgRym1pofypRa2gX1dVL2Un9cn9tOBmsuhl7MAM1gHbeBLlw5nBW5K49vfAZhMsqQ5X1PvyFzHVPmnhQlD/syAKzuSUABona+oUl0zkv3XxoxWZx4QZXiWR3gCfCio58P1DEBf0Y4lehMuNJ7b1sla6NXRSY97w1Usg/biDxJR5BbkbTU/00Q9zICVgtAYlV2CguUr16PG+o3kpxRjkjvg+Fo9WG9dtOTycZPNcWEAscdzpzLzmtU6iXQEkIEyIpvfWSwTAjC3iE","kid":"uy59WoRKBUg="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = IBSALUT-CVD-SELLO serialName = Q0719003F OU = SELLO ELECTRONICO 2.5.4.97 = VATES-Q0719003F O = SERVICIO DE SALUD DE LAS ISLAS BALEARES C = ES","notbefore":1621857600000,"notafter":1684929600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbxlQ/UTz0AxZWF+xQs+w+xveq5Ec\\nhe9zf16LnDFYY/K8pZ6l6sb2KlXw8Z/kwopzzbv5LCX1VxLsGO9Rs9OzLg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"/IcqIBnnZzc="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Servicio Extremeño de Salud serialName = Q0600413I OU = SELLO ELECTRONICO OU = SSII 2.5.4.97 = VATES-Q0600413I O = Servicio Extremeño de Salud C = ES","notbefore":1622097780000,"notafter":1685169780000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEManlPIcO9J8UBpHCAbku/KkAfiBr\\nGLIre1buTIzhhoncL0YIO+DQ9uPs6UfzPKXzQq791V5I5avhmpQ6j2zFsQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"3IsdmTYkAAM="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = GERENCIA REGIONAL DE SALUD CASTILLA Y LEÓN (SACYL) serialName = Q4700608E OU = SELLO ELECTRONICO OU = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON 2.5.4.97 = VATES- Q4700608E O = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON C = ES","notbefore":1619789400000,"notafter":1682861400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1Tqtnz\\nC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHXDCCBwKgAwIBAgIJDDdEkclPCGsoMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNDMwMTMzMDAwWhcNMjMwNDMwMTMzMDAwWjCCAQYxPDA6BgNVBAMMM0dFUkVOQ0lBIFJFR0lPTkFMIERFIFNBTFVEIENBU1RJTExBIFkgTEXDk04gKFNBQ1lMKTESMBAGA1UEBRMJUTQ3MDA2MDhFMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzE2MDQGA1UECwwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRkwFwYDVQRhDBBWQVRFUy0gUTQ3MDA2MDhFMTYwNAYDVQQKDC1HRVJFTkNJQSBSRUdJT05BTCBERSBTQUxVRCBERSBDQVNUSUxMQSBZIExFT04xCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1TqtnzC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfKOCBKowggSmMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBmgYDVR0RBIGSMIGPpIGMMIGJMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE8MDoGCWCFVAEDBQYCAgwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRgwFgYJYIVUAQMFBgIDDAlRNDcwMDYwOEUwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBR0F5hsHIJ6Y7MLOV4IRJYpbxoKgDAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDSAAwRQIhANiNJAq66hiD/nftp0jcuZQJtkHq0LiGFxpWmKCnCClcAiAVLvoNwAKGUOPPJ88g/UPTytviavcuFfaN9F5Iw0fVhg==","kid":"4Qmniw7B0gc="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Gobierno de La Rioja serialName = S2633001I OU = SELLO ELECTRONICO OU = DIRECCIÓN GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS 2.5.4.97 = VATES-S2633001I O = DIRECCION GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS C = ES","notbefore":1621587300000,"notafter":1684659300000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqF22rG5bDXpWn/tKy358h2KwYyaS\\nKzCZV0HJptUQq7sWxfeDE86HSoebBrpOvpjhZX2/ZkTF/YRlkh0ztnkclw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHVjCCBv2gAwIBAgIJSC0ZeCXmMXCnMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTIxMDg1NTAwWhcNMjMwNTIxMDg1NTAwWjCB+TEdMBsGA1UEAwwUR29iaWVybm8gZGUgTGEgUmlvamExEjAQBgNVBAUTCVMyNjMzMDAxSTEaMBgGA1UECwwRU0VMTE8gRUxFQ1RST05JQ08xQDA+BgNVBAsMN0RJUkVDQ0nDk04gR0VORVJBTCBERSBTQUxVRCBQVUJMSUNBLCBDT05TVU1PIFkgQ1VJREFET1MxGDAWBgNVBGEMD1ZBVEVTLVMyNjMzMDAxSTE/MD0GA1UECgw2RElSRUNDSU9OIEdFTkVSQUwgREUgU0FMVUQgUFVCTElDQSwgQ09OU1VNTyBZIENVSURBRE9TMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKhdtqxuWw16Vp/7Sst+fIdisGMmkiswmVdByabVEKu7FsX3gxPOh0qHmwa6Tr6Y4WV9v2ZExf2EZZIdM7Z5HJejggSzMIIErzAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgaMGA1UdEQSBmzCBmKSBlTCBkjEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xRTBDBglghVQBAwUGAgIMNkRJUkVDQ0lPTiBHRU5FUkFMIERFIFNBTFVEIFBVQkxJQ0EsIENPTlNVTU8gWSBDVUlEQURPUzEYMBYGCWCFVAEDBQYCAwwJUzI2MzMwMDFJMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQU7oukZ17hZNqgXn+9zb1nFVmNAdYwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0cAMEQCIFAVrmKucmULegrWgBKqAHeiiJ6VmRGXBVo5LrvtuXwnAiB0+buKOXmu4gpE5vu2Du0seQ5DdaCsLOS99ZTz6Ea0yw==","kid":"6ag2wJkSHtk="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Secretaría General del Servicio Canario de la Salud serialName = Q8555011I OU = SELLO ELECTRONICO OU = Secretaría General del Servicio Canario de la Salud 2.5.4.97 = VATES-Q8555011I O = Servicio Canario de la Salud C = ES","notbefore":1619788200000,"notafter":1682860200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEblis8RR4Oc4Xqq4RZdhrJ0DnkAvK\\n4vY8AamWbFg9T7OG17La8TJYTq3FqJJd5KttTP71GojxRF0REKpF+uwAtw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"ARrNkCRtprY="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = SELLO ELECTRONICO DE LA CIUDAD AUTÓNOMA DE MELILLA serialName = S7900010E OU = SELLO ELECTRONICO OU = DIRECCIÓN GENERAL DE LA SOCIEDAD DE LA INFORMACIÓN 2.5.4.97 = VATES-S7900010E O = CIUDAD AUTÓNOMA DE MELILLA C = ES","notbefore":1622213100000,"notafter":1685285100000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEe1XUTCn6DkdbSOKlyzczFWQfDvtP\\n31uGdjzVCzAkuxorNeEX3F827gnycL/mTzRm8lfDxz64lEUcTww0I7unwA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"BEnvMVnNFK8="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = SELLO SAS PARA CERTIFICADO COVID DE LA UE serialName = Q9150013B OU = SELLO ELECTRONICO OU = SERVICIO ANDALUZ DE SALUD 2.5.4.97 = VATES-Q9150013B O = SERVICIO ANDALUZ DE SALUD C = ES","notbefore":1621599300000,"notafter":1684671300000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt3OX+XF/LZlHff6ZWiHRqQu4WBrg\\nzNZYz4wFJkwkBmk/z0ROsLJ4FlwOLPs2cUEIIV0Pu1cmnngva6+EzQpbAA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"GMFMBu1RlCg="},{"issuer":"C = ES O = IZENPE S.A. OU = Peer CN = iCA Izenpe","subject":"C = ES O = EUSKO JAURLARITZA - GOBIERNO VASCO OU = SELLO ELECTRONICO 2.5.4.97 = VATES-S4833001C CN = DIRECCIÓN DE SALUD PÚBLICA Y ADICCIONES","notbefore":1622208492000,"notafter":1716902892000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8PO\\npQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEEjCCA7mgAwIBAgIQA8IozyvkMlFgsO/sU+TnrzAKBggqhkjOPQQDAjBHMQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xDTALBgNVBAsMBFBlZXIxEzARBgNVBAMMCmlDQSBJemVucGUwHhcNMjEwNTI4MTMyODEyWhcNMjQwNTI4MTMyODEyWjCBpDELMAkGA1UEBhMCRVMxKzApBgNVBAoMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08xGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMRgwFgYDVQRhDA9WQVRFUy1TNDgzMzAwMUMxMjAwBgNVBAMMKURJUkVDQ0nDk04gREUgU0FMVUQgUMOaQkxJQ0EgWSBBRElDQ0lPTkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8POpQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1aOCAicwggIjMFoGA1UdEQRTMFGkTzBNMRgwFgYJKwYBBAHzOQAGDAlTNDgzMzAwMUMxMTAvBgkrBgEEAfM5AAUMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08wDgYDVR0PAQH/BAQDAgXgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQWBBRJ5qXgwbq6JnfYaHEo99QEkecqADAfBgNVHSMEGDAWgBRzFw8OFM+MtdUG96YEM8MZfTG+7TCCAR8GA1UdIASCARYwggESMIIBDgYKKwYBBAHzOYFIATCB/zAlBggrBgEFBQcCARYZaHR0cDovL3d3dy5pemVucGUuZXVzL2NwczCB1QYIKwYBBQUHAgIwgcgMgcVLb250c3VsdGEgd3d3Lml6ZW5wZS5ldXMtZW4gYmFsZGludHphayBldGEga29uZGl6aW9hayB6aXVydGFnaXJpYW4gZmlkYXR1IGVkbyBlcmFiaWxpIGF1cnJldGlrIC0gQ29uc3VsdGUgZW4gd3d3Lml6ZW5wZS5ldXMgbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGFudGVzIGRlIHV0aWxpemFyIG8gY29uZmlhciBlbiBlbCBjZXJ0aWZpY2FkbzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsZGVzLml6ZW5wZS5jb20vY2dpLWJpbi9jcmxiY2l6ZW5wZTAKBggqhkjOPQQDAgNHADBEAiBtHbVrpnsLMptmRI5QL4JhOG86pqSBVQXiOUMsIkpcPgIgY/npsrzRMcUHAh7NwvqhnbgWvv1VwbRy3bxD6+o3RGw=","kid":"GuQPQRxbMsU="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Servicio Cántabro de Salud serialName = Q3900738J OU = SELLO ELECTRONICO 2.5.4.97 = VATES-Q3900738J O = Servicio Cántabro de Salud C = ES","notbefore":1622120280000,"notafter":1685192280000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEj/wPWM6e8JDYxW9673ivEvwlu2JA\\nZpsNBrr2sQW5ppku6rcqJUKx7Kbvf2Zx1AJeIS7+PQq2iNcugfD+RC/VfQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"IaGR283U1jA="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = SESCAM Certificado Digital COVID UE serialName = Q4500146H OU = SELLO ELECTRONICO 2.5.4.97 = VATES- Q4500146H O = Servicio de Salud de Castilla-La Mancha C = ES","notbefore":1621946400000,"notafter":1685018400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDvCuOC6NlQCaL18+CEn4sbjC3NNn\\nN4jBAmZo6lrGXbjIfAQ3YWmXc3gqLnSFq84EEV6+2PFy9yyLgq4JmFAfDA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"JHd4CkNzadI="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Inspección General de Sanidad de la Defensa serialName = S2830001J OU = SELLO ELECTRONICO OU = Inspección General de Sanidad de la Defensa 2.5.4.97 = VATES-S2830001J O = Ministerio de Defensa C = ES","notbefore":1622115540000,"notafter":1685187540000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE62orr7HL0POyQCqmgbbEqfcbcdcT\\n4vyfQZEPYfxk69ZRv9T8Iy6nWAyEjF0VxvknfCg/x9uig5HFWrpedW2Epw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"MtI93IMknMk="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Consejería de Salud del Principado de Asturias serialName = S3333001J OU = SELLO ELECTRONICO 2.5.4.97 = VATES- S3333001J O = Principado de Asturias C = ES","notbefore":1621860000000,"notafter":1684932000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUvljql1ZGpwzC92AbO4J751kqnIE\\nXaCI8hYUIEArhReqJcx5qClAGSkDFcbrTPV9WuUtmDQ/NpoV+EejqBmlyg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"NCc6YSsVioM="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Sello Electrónico del Servicio Navarro de Salud-Osasunbidea serialName = Q3150004D OU = SELLO ELECTRONICO OU = Servicio Navarro de Salud-Osasunbidea 2.5.4.97 = VATES-Q3150004D O = Servicio Navarro de Salud-Osasunbidea C = ES","notbefore":1620984900000,"notafter":1684056900000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4\\nB/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgHw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHTDCCBvGgAwIBAgIJfoL0UPrrsbuIMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTE0MDkzNTAwWhcNMjMwNTE0MDkzNTAwWjCB/jFFMEMGA1UEAww8U2VsbG8gRWxlY3Ryw7NuaWNvIGRlbCBTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRIwEAYDVQQFEwlRMzE1MDAwNEQxGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMS4wLAYDVQQLDCVTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRgwFgYDVQRhDA9WQVRFUy1RMzE1MDAwNEQxLjAsBgNVBAoMJVNlcnZpY2lvIE5hdmFycm8gZGUgU2FsdWQtT3Nhc3VuYmlkZWExCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4B/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgH6OCBKIwggSeMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBkgYDVR0RBIGKMIGHpIGEMIGBMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE0MDIGCWCFVAEDBQYCAgwlU2VydmljaW8gTmF2YXJybyBkZSBTYWx1ZC1Pc2FzdW5iaWRlYTEYMBYGCWCFVAEDBQYCAwwJUTMxNTAwMDREMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQUDoSdwvhJkRliLuZyPLYo9xeX1vcwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0kAMEYCIQC5rwYPPmeafyGrOsjX/SeqgFtgrqURrFrnbwC7QvM6MgIhAN4Pl5n+ACj+56aPhHsHRo4xS2ZeXShYFQQpxUCM9R17","kid":"YRYidQ+wetg="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = CEUTA serialName = S6100007A OU = SELLO ELECTRONICO OU = CIUDAD AUTONOMA DE CEUTA 2.5.4.97 = VATES-S6100007A O = CIUDAD AUTONOMA DE CEUTA C = ES","notbefore":1620984600000,"notafter":1684056600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgOuoVfBtfKWYpcffhNWfiCf4g4oZ\\nBdaPcdrn0HBtkQ/9xYp6FlfFAP1Ze29LaM1emnFxjyQNWV3KeNmoc/vFYA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"YU9+X9nepqU="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = GENERALITAT VALENCIANA serialName = S4611001A OU = SELLO ELECTRONICO OU = CONSELLERIA DE SANITAT UNIVERSAL I SALUT PÚBLICA 2.5.4.97 = VATES-S4611001A O = GENERALITAT VALENCIANA C = ES","notbefore":1622199300000,"notafter":1685271300000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV61Sl3v6NzBqyCbqSb8/fBodGle+\\nb3RJ7Utk+uExDwbOxzS//2GUTRFKW43ppskyr3G60/xeJCaeN7S9Cvssdg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"ZcfkloEvfGQ="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = CERT-GENCAT-1S-21 serialName = S0811001G OU = SELLO ELECTRONICO OU = Departament de Salut 2.5.4.97 = VATES-S0811001G O = Departament de Salut de la Generalitat de Catalunya C = ES","notbefore":1622037600000,"notafter":1685109600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZjrINN6u+ZGfRqaYqgqL+yZZCDl\\nu+PKPCkVS/ysPosrontwlhznbPsq5W+d2NyxXeaUAT+lTyRKy1NAxOFqAA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHJjCCBs2gAwIBAgIJc5pWwVqiZu5PMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI2MTQwMDAwWhcNMjMwNTI2MTQwMDAwWjCB0DEaMBgGA1UEAwwRQ0VSVC1HRU5DQVQtMVMtMjExEjAQBgNVBAUTCVMwODExMDAxRzEaMBgGA1UECwwRU0VMTE8gRUxFQ1RST05JQ08xHTAbBgNVBAsMFERlcGFydGFtZW50IGRlIFNhbHV0MRgwFgYDVQRhDA9WQVRFUy1TMDgxMTAwMUcxPDA6BgNVBAoMM0RlcGFydGFtZW50IGRlIFNhbHV0IGRlIGxhIEdlbmVyYWxpdGF0IGRlIENhdGFsdW55YTELMAkGA1UEBhMCRVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQdmOsg03q75kZ9GppiqCov7JlkIOW748o8KRVL/Kw+iyuie3CWHOds+yrlb53Y3LFd5pQBP6VPJErLU0DE4WoAo4IErDCCBKgwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBTTTGw6vTb+cIcjhzruPZDPy5v3ITB5BggrBgEFBQcBAQRtMGswRAYIKwYBBQUHMAKGOGh0dHA6Ly9jYS5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lYWR0cnVzdC5ldTBjBgNVHRIEXDBagQ5jYUBlYWR0cnVzdC5ldYYWaHR0cDovL3d3dy5lYWR0cnVzdC5ldYYVaHR0cDovL2NhLmVhZHRydXN0LmV1hhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIGfBgNVHREEgZcwgZSkgZEwgY4xLjAsBglghVQBAwUGAQEMH1NFTExPIEVMRUNUUk9OSUNPIERFIE5JVkVMIEFMVE8xQjBABglghVQBAwUGAQIMM0RlcGFydGFtZW50IGRlIFNhbHV0IGRlIGxhIEdlbmVyYWxpdGF0IGRlIENhdGFsdW55YTEYMBYGCWCFVAEDBQYBAwwJUzA4MTEwMDFHMIIBiwYDVR0gBIIBgjCCAX4wbwYHBACL7EABAzBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCB/gYOKwYBBAGDdQIBAQGCwhEwgeswgcEGCCsGAQUFBwICMIG0DIGxQ2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgYWx0by4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MAoGCGCFVAEDBQYBMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBywYIKwYBBQUHAQMEgb4wgbswFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMAgGBgQAjkYBBDATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQUiyaS0M8fDzw8lXNARDX69dNlWKowDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0cAMEQCIGgSpE9oqwRVUFw5VSMhV4jrmWW3pEwdcjlRye/k+/bFAiBGB2tNUub/akA39Dk4iF4BHUw5neCNOinmzThlnRUWeA==","kid":"e9SH8dtWwdY="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = DIRECCIÓN GENERAL DE SALUD PÚBLICA Y ADICCIONES serialName = S3011001l OU = SELLO ELECTRONICO OU = DIRECCION GENERAL INFORMATICA CORPORATIVA 2.5.4.97 = VATES- S3011001l O = COMUNIDAD AUTONOMA DE LA REGION DE MURCIA C = ES","notbefore":1621867800000,"notafter":1684939800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEli8eKthiom9EydKvhg7LHXj/f88/\\nZeNUpfEFm6kIAr3K1NCRSv1grJnNiBc9lvggtAjqFHQSGTovtRcGHcVuRA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHTDCCBvOgAwIBAgIJA+zla2386Iy/MAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI0MTQ1MDAwWhcNMjMwNTI0MTQ1MDAwWjCB/DE6MDgGA1UEAwwxRElSRUNDScOTTiBHRU5FUkFMIERFIFNBTFVEIFDDmkJMSUNBIFkgQURJQ0NJT05FUzESMBAGA1UEBRMJUzMwMTEwMDFsMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzEyMDAGA1UECwwpRElSRUNDSU9OIEdFTkVSQUwgSU5GT1JNQVRJQ0EgQ09SUE9SQVRJVkExGTAXBgNVBGEMEFZBVEVTLSBTMzAxMTAwMWwxMjAwBgNVBAoMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJYvHirYYqJvRMnSr4YOyx14/3/PP2XjVKXxBZupCAK9ytTQkUr9YKyZzYgXPZb4ILQI6hR0Ehk6L7UXBh3FbkSjggSmMIIEojAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgZYGA1UdEQSBjjCBi6SBiDCBhTEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xODA2BglghVQBAwUGAgIMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMRgwFgYJYIVUAQMFBgIDDAlTMzAxMTAwMWwwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBQBzqvKX8AY+IVJiHykPj5www64JTAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDRwAwRAIgb52hsDkWShWodg6mznBV4Ut/vr0C2rgRLyV0rzHWq3ECID/elZUrZyPy0V6CdrlZxaCUIQB6jsFkAl2/wFTHC5pU","kid":"hgpHHrTb4ws="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19 serialName = S2827001E OU = SELLO ELECTRONICO OU = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19 2.5.4.97 = VATES-S2827001E O = MINISTERIO DE SANIDAD C = ES","notbefore":1622708100000,"notafter":1685780100000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3KVI7Sy+id+bprJ8Eh9AHtW+1qeC\\n4qoHH1oK7HN87UKH9KxQix0jq0RySb2c+5CN+kbAfsYEvULfHToz2FWzWQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"qFNF2dC+mjQ="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = DEPARTAMENTO DE SANIDAD DEL GOBIERNO DE ARAGON serialName = S5011001D OU = SELLO ELECTRONICO OU = DEPARTAMENTO DE SANIDAD 2.5.4.97 = VATES-S5011001D O = GOBIERNO DE ARAGON C = ES","notbefore":1620386100000,"notafter":1683458100000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDOg7lpxitz9+ytOAKFXxS7F4qc9I\\nfKWrj388ETiCbLEQuoYeWEp+4wXPLCF7RRpg6Zxt9iGG93ZAwxl8g05Oag==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHBDCCBqqgAwIBAgIJfhC5x3b/0YP3MAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTA3MTExNTAwWhcNMjMwNTA3MTExNTAwWjCBzzE3MDUGA1UEAwwuREVQQVJUQU1FTlRPIERFIFNBTklEQUQgREVMIEdPQklFUk5PIERFIEFSQUdPTjESMBAGA1UEBRMJUzUwMTEwMDFEMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzEgMB4GA1UECwwXREVQQVJUQU1FTlRPIERFIFNBTklEQUQxGDAWBgNVBGEMD1ZBVEVTLVM1MDExMDAxRDEbMBkGA1UECgwSR09CSUVSTk8gREUgQVJBR09OMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAzoO5acYrc/fsrTgChV8UuxeKnPSHylq49/PBE4gmyxELqGHlhKfuMFzywhe0UaYOmcbfYhhvd2QMMZfINOTmqjggSKMIIEhjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwewYDVR0RBHQwcqRwMG4xLzAtBglghVQBAwUGAgEMIFNFTExPIEVMRUNUUk9OSUNPIERFIE5JVkVMIE1FRElPMSEwHwYJYIVUAQMFBgICDBJHT0JJRVJOTyBERSBBUkFHT04xGDAWBglghVQBAwUGAgMMCVM1MDExMDAxRDCCAZgGA1UdIASCAY8wggGLMAoGCGCFVAEDBQYCMG8GBwQAi+xAAQEwZDBiBggrBgEFBQcCAjBWDFRFdXJvcGVhbiBUZWxlY29tbXVuaWNhdGlvbnMgU3RhbmRhcmRzIEluc3RpdHV0ZS4gZUlEQVMgRXVyb3BlYW4gUmVndWxhdGlvbiBDb21wbGlhbnQwggEKBg4rBgEEAYN1AgEBAILCETCB9zAlBggrBgEFBQcCARYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBzQYIKwYBBQUHAgIwgcAMgb1DZXJ0aWZpY2FkbyBjdWFsaWZpY2FkbyBkZSBzZWxsbyBlbGVjdHLDs25pY28gZGUgQWRtaW5pc3RyYWNpw7NuLCDDs3JnYW5vIG8gZW50aWRhZCBkZSBkZXJlY2hvIHDDumJsaWNvLCBuaXZlbCBNZWRpby9TdXN0YW5jaWFsLiBDb25zdWx0ZSBsYXMgY29uZGljaW9uZXMgZGUgdXNvIGVuIGh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMIHBBggrBgEFBQcBAwSBtDCBsTAVBggrBgEFBQcLAjAJBgcEAIvsSQECMAgGBgQAjkYBATALBgYEAI5GAQMCAQ8wEwYGBACORgEGMAkGBwQAjkYBBgIwbAYGBACORgEFMGIwMBYqaHR0cHM6Ly9lYWR0cnVzdC5ldS9lbi9kb2N1bWVudHMtaW4tZm9yY2UvEwJlbjAuFihodHRwczovL2VhZHRydXN0LmV1L2RvY3VtZW50b3MtdmlnZW50ZXMvEwJlczBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vY3JsLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcmwwHQYDVR0OBBYEFIcH0VmwYuLAspPbw0ytX4MnAOqIMA4GA1UdDwEB/wQEAwIF4DAKBggqhkjOPQQDAgNIADBFAiEAkdkJnUNWN8MlL8vqsSFCdQsRtPpEnzoBKxrexfryd5sCIBjk+TQoNey+Ayp5SmQk860nNthN2zLsg7cnFIceVp7u","kid":"tCM87WnaaQE="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = FIRMA CERTIFICADO COVID DIGITAL UE 1 serialName = Q2801221I OU = SELLO ELECTRONICO OU = DG SISTEMAS DE INFORMACION Y EQUIPAMIENTOS SANITARIOS 2.5.4.97 = VATES-Q2801221I O = SERVICIO MADRILEÑO DE SALUD C = ES","notbefore":1622109600000,"notafter":1685181600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhe+kvml2tx/+/wipHR5ttSw1PdmW\\nGLpoEqzNiel2mWsZovfSBR+Jzri7NpH8s8RBSnEDc0kQTl2dSiECy9D45Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHLzCCBtagAwIBAgIJPXKDMvWaVwt7MAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI3MTAwMDAwWhcNMjMwNTI3MTAwMDAwWjCB7TEtMCsGA1UEAwwkRklSTUEgQ0VSVElGSUNBRE8gQ09WSUQgRElHSVRBTCBVRSAxMRIwEAYDVQQFEwlRMjgwMTIyMUkxGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMT4wPAYDVQQLDDVERyBTSVNURU1BUyBERSBJTkZPUk1BQ0lPTiBZIEVRVUlQQU1JRU5UT1MgU0FOSVRBUklPUzEYMBYGA1UEYQwPVkFURVMtUTI4MDEyMjFJMSUwIwYDVQQKDBxTRVJWSUNJTyBNQURSSUxFw5FPIERFIFNBTFVEMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIXvpL5pdrcf/v8IqR0ebbUsNT3Zlhi6aBKszYnpdplrGaL30gUfic64uzaR/LPEQUpxA3NJEE5dnUohAsvQ+OWjggSYMIIElDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgYgGA1UdEQSBgDB+pHwwejEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xLTArBglghVQBAwUGAgIMHjogU0VSVklDSU8gTUFEUklMRcORTyBERSBTQUxVRDEYMBYGCWCFVAEDBQYCAwwJUTI4MDEyMjFJMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQUyUAY0b3ogO8tVqF3/tCTNABuMS4wDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0cAMEQCIGFSMzJ9frh3/8wbKKXjzQi/G8y4lsoFDI9VVMkzhVXGAiAySFLLoMN8xiHRmzawXNSb6Y8G4SmXOrzwomJiKEpQ+g==","kid":"ub6Qmv9xtAo="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = ConselleriadeSanidade.XuntadeGalicia serialName = S1511001H OU = SELLO ELECTRONICO 2.5.4.97 = VATES-S1511001H O = Consellería de Sanidad C = ES","notbefore":1622213100000,"notafter":1685285100000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeC6+zmnjgdAUmYG4kIPJsMwSFSJc\\nlYoKuHKcIQ5PpX4xKyM36Gp2fkKvARbyJYjduU8JzO9nrSILVxjuKRapFw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"x3ch4ml934I="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 3","notbefore":1623232264000,"notafter":1686304264000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5EtYbOu+RuUcFAu1NN1rqsuKqNzp\\nl0Y6bgg9wNKcmVLzfBO81jH2dcupHtKlp7My5KGjCyBAKvjJUSE/fnDd5g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIKbUPDyxggQcwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTEwNFoXDTIzMDYwOTA5NTEwNFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABORLWGzrvkblHBQLtTTda6rLiqjc6ZdGOm4IPcDSnJlS83wTvNYx9nXLqR7SpaezMuShowsgQCr4yVEhP35w3eajggESMIIBDjAdBgNVHQ4EFgQUQiz2ueCR4OeY2/dQbISIOzQRh20wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxMDRagQ8yMDIxMTIwNjA5NTEwNFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBADVwHF/3fcmmkQgU+HLb1LGhj4RvsR9NUkrkYHyWROt37d5D3EyqNjNIpWebfDXLnQNpEQDd/2HyaEW70citcb4ad/5RXD/hr3BjVsqnbRHOctv1+Twy9XfDM7OcDgj2tE7slsZ2dKAPEg09dq7MoClXDuTcIkBqEHuZ+dzA8PYDvITLjHtJqMKBj335tRU+Zl8WT0GGXzQw7/lRD4yE8BndK7C6MO7xC4tIUGgHP3P+kImRiPCq+pQbt78XGJBzEgCpBbe8HuXgja5yTk2AGLdCH5GxbSQMjGA4icefROoPO86uNwCekAKGFd46Li5/+JfIi9nJCd2x7PsUzAr15fzwcTks0Hk+7dZqj6gXuJpZFwoCzvY4Z0O1B99L1SCwZNXsCEevqQ5an3LUWUWE+7JhkkGtqeddockt5M8Q7omw8O4gvV9W9Y4Cbvshxy9RroTSU135NBMm3Iu0s2FdsKj3JMaE/xulRCJ4bxaEcKTdrjGaJSPT5ROgPWQj0yD7yw5j0lRGzph3Pu1o5q6J4v+w3cfWVu9Ka1H4wpQY3ip4emVaXpstg0NNPMH+JERLFy8Bg94J0uOCKAVAPMjpr9DW7/r1Ooey4a7pfdGqCb2QxUkuLr1YOQcairnvOpjjEfHbvWmKV4EGpENpI21qY54URKtoYse7tnkVtz9RrsyY","kid":"02vdAOY/+gI="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 2","notbefore":1623232205000,"notafter":1686304205000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvIs/H8NhtE23q5tR84V9WwbbdGDc\\n3hh7mjrXom4PRzjGRuSvfC9OIFLtRzOohsdnbcE62FWN+Fz09ugJcaqhtA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIX7IVIHG/M4swQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTAwNVoXDTIzMDYwOTA5NTAwNVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLyLPx/DYbRNt6ubUfOFfVsG23Rg3N4Ye5o616JuD0c4xkbkr3wvTiBS7UczqIbHZ23BOthVjfhc9PboCXGqobSjggESMIIBDjAdBgNVHQ4EFgQUvoCTP+xA0/1nmxS2GKtTaxp0TYAwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUwMDVagQ8yMDIxMTIwNjA5NTAwNVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAKT1bQpoLJpJbb3qAbYcQkZKPNQa5aisXFiLlmIBWHzPYI67BWJu/CjDOeHUPgzpcgiDe33t5ZacnccTwMGZYXnZQ8jNwOxAi//7NJkJHEtrMcYQ9pqSeKqnNwTwMetQm1u5rHjAtjMSZdyWMMjDIcX5Z2lXiPgoO548fYKrwbeCloFDk6qWrk/Jc6NKyNgVEhVvkwHLfDloS7Boln2I4eT4VfTAXt50/zEsu4KHIDpDTDMFNg5KTYugOFHOQise6z5oYmnwZB95OKfFGR0xeDR8JN+Kn2TcdiTpin87jhtyHzCScFLlWbHum9y/OKKNgK/2hWRrikyU9zo/OmHwStftOkggBSeDVtwRkCAKZpK9IXWWRNCj/gkRnVDDeg3ehQ9qRykU+BkUiMi2LhLDVUITCZhmRyS94xHP5PoCY5tUanCNxkgjYwvDHMU8hIPL8rsOdHxc7tK6jaavBP7ZbDG1W3bEcYU1oaKWvbYyPBhJPnAVDVH2SLU68gdEcdjMtiOPaH1ImERhQ2cF9KzCsU/svCoOJrEd2lQZ6xFodkicg0XN4sdXKyypdPic+Cvai/033DdiS1i7HH59hO0Z9l6I2gsJHULDMeSnJxTB9Tves79iYSRdBocm+LHfT8uvwRwn6+SmTD7/ttzHm/H/m/k1hsLPZDNMdn+kMuXCiEnn","kid":"0kAwFy+vLpg="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 7","notbefore":1630587789000,"notafter":1693659789000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7U8cYsFNOZawVgxC9FBfvNzL05Xe\\ntv6jVxj+aii7IkXcXCIiRsruAdrAHCLCtpDgIFzwLsFNwJs5ZFu+8lr6nw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIILKLkHn6rwKAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDkwMjEzMDMwOVoXDTIzMDkwMjEzMDMwOVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO1PHGLBTTmWsFYMQvRQX7zcy9OV3rb+o1cY/moouyJF3FwiIkbK7gHawBwiwraQ4CBc8C7BTcCbOWRbvvJa+p+jggESMIIBDjAdBgNVHQ4EFgQU5MUl/8big5VpHbJE35E0EJ5cuF8wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA5MDIxMzAzMDlagQ8yMDIyMDMwMTEzMDMwOVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAAQI3H/45srCJtEi5+gwT2GCEx6zV65ytEOsct9bUu41U5UDYhYp5rtaIWpguPB2DuHs1zFY7bqwiD7INyDeRIhCrBZuQkrIsBGImE+IcoXJAdri/vUOPToYxpcA3uwqH/1EOhuhSlUz8Czzb7rDY72K1fXQYCKYGNkEBEDrSC66F9bMD4ATtRb97DMZAY5QmTX8MVjSvrd9WoiroQ0YaT3Bt38SYzwY8QV10ovbo+VqkY3d4bK4zTHGFh1If2ttsPAWOLV8mc3bp6CGPm9VxfZY5tMBgVsDNcpY9LKLFGHivmsduvSFfugNsPDELnj8gBMihCtnOTzI9Qugs298tIYg8awef2GkJmdsdQX1IcQJjrw19ukgbjuGDr3EIfmDrjfRcdFdDSvE6xBIWRWa/XnrmdoKvUnuRrCFzcOSfaMBEER5qJ+dQh/08KtKPdRXvNFoyDLfS8eHRRLIkEDtd3HeuKedHclHjn/+JbazIGBYjogqXothsnSK8bDBblJnO8nAFc3AdVk6BbmjitMSQsU0oYhpSg7Ew3HxHYXGCmZ8rHLxzGOC8h/KaEcS3qP7IuyMlwnZdITbeli3qy3UVTA0jd61/HJLDqJMaYX8bvcPpcfqW5mbVV/X64il/jyNURdoKkAYFFYoMNgBz4QY9XKn1dGC1WcE7EFXAjCUMawC","kid":"Amn7EaBy1ag="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 6","notbefore":1637317418000,"notafter":1700389418000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAM+XCsJYYmHT5wSsEfx7DF5PWT3D\\nCIbIdWjSxS2NWcbsPx7zjbWi/lMKbaSDdrYnO37o5zn0fI7LUU1LS5pKtQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIOrhc6Me7w+wwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMTExOTEwMjMzOFoXDTIzMTExOTEwMjMzOFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABADPlwrCWGJh0+cErBH8ewxeT1k9wwiGyHVo0sUtjVnG7D8e8421ov5TCm2kg3a2Jzt+6Oc59HyOy1FNS0uaSrWjggESMIIBDjAdBgNVHQ4EFgQUf89Xu5cdTN4gfMJ2P/Cv6Hx3swAwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTExMTkxMDIzMzhagQ8yMDIyMDUxODEwMjMzOFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAC1HMWC2knZxMj/RtkmRMgG+5iCve04Pv69avIHfdKLTzUDTPyEhtROjZ+IFUIK/RddtJ2KMyJbgprTZLMtOiOT18BEumkZB3L3VRyPa3PfLQ6DqoAgqvjep3tjyH9jP3Ibn2LWHKiLrAHmKl/IekWFfZcZ+gsmqRvRhUpi944X0rBD9i/Xe0T7BTS8CjCZBptIPY2/MRsvteAR/L6h/lm7S0CzofA/FnEtdD/hskVzIbgsJgSPWfUZsKLUwP7gsE71Xq89Q+BeZiUy10x1moTk/sWGnNVcGXwCobCfRnaOA6FUpBoayq3L1jvZST5l92+HhrfUOVTlbcJHOxHQe/2KIT0w1O8geLaPB8Fo8LzEX5h0PTrA/qnG7JqLE8PF/mHs1WKywDmbrx1UFwIfQknvLPdqcnHmFvvSf94BpbwN2Mk8E586krKu71rGMhZBHWmbQ+YVgA9lKt6vP+MnqSwj7RtEEfsyySGrLP9zoFa6RD7aLKBvwhnFuk3knOfdXo3h9TXJpMoLkG5BDK6mJ5zNU8+pYedDyea/QEpE4K7Ledo6RpYyTj47H46KPgyfGnb0YZT/LC3Kn99ejnf0hoHRL3zUt75BoEngLAR6g4BAyyrXoEcVpt8JtDTcAHCMMwMAD84FZBAVNcaCrPNkedX3eyBoN1bIwbGBeKhrgMrq7","kid":"SiEt1ct5otQ="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 4","notbefore":1623232314000,"notafter":1686304314000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHTBJY0Z+T5I8EmqQmrbZAr8equIc\\nKKE+YriIGw/AKJyw0ZAj1Dd2MRTM3+AEiNARxXIF08a2rhUvFCyyHCJ2DA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIbOmJZDQoP+owQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTE1NFoXDTIzMDYwOTA5NTE1NFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB0wSWNGfk+SPBJqkJq22QK/HqriHCihPmK4iBsPwCicsNGQI9Q3djEUzN/gBIjQEcVyBdPGtq4VLxQsshwidgyjggESMIIBDjAdBgNVHQ4EFgQUhHOTxbELqlA8J5QtocLrpUvgC48wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxNTRagQ8yMDIxMTIwNjA5NTE1NFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAEa+gpgHss7+IdPOrr4bzlMSavqHqybtRzSH2hVBrbZ9Ov3vVDmIksbUNM3nlVPL5gFAReHEJmXhHxwvoxyCO/NXOS+itmGkYRPHRH57xTa9XIGcwWmAnbwxVy41B/NnOMeAB2TouWWfX/ZYzKiNyFJ7JEIdaQcZ/2+55c5mlEVFMdpeDR2vmB+cgrz6j0iFxoJ1/QQeWkjfD8nr/Auy7zfm0MgQL5wZEI08A9LAKZjFbawHcJx2RWuwWFc8dLBTMxYM0ptrXYNH/dDRpuNXMuqh68Os/aei5kbolHM24bSBycvInYBYyVRTi2ABDdRpItl9BEGqPSkJoYrrB2hZ3roNNugANF1rm1Fx7hlK80QiMoELoM1RyIovlrymQb45USV2+OuEtvZ6BJ85l7q47tbwr0xxHqIL9n82t4My4M0U7cIu5SPv6qv+ubLGnbqJvgoT9Tf3QGrH5j3XDyU0V4YfvfQhcOBLNlduuA2cihdAh+M6MLRbtG9svKsrA4k0PtyB9UCtqufsfDhkjM4LRGjmylclgmDtNH6DixcFxYlK1+fikZSIPnw476WgS8/2biw2m4gAsxEZ5/vg9L/u11i853AOSsh/sFxjp62K3O5mFAvdmLAJmrofOUghoNcAzJdDbSWtHzqQYJ+BWIjoIDiJh0m8Sl5/hVv6Bh6Xtrp/","kid":"bBnmkeVMV6A="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 8","notbefore":1637317780000,"notafter":1700389780000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+vHkPlOZP+DAP5kw5j4miyzrtTc5\\nwM5vNkcNqWy4e8YHf4ZR1bEpQjRS+ksnCKfbEDf82p0RRzdtbQCdvSdsEg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIRuunuryIv2MwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMTExOTEwMjk0MFoXDTIzMTExOTEwMjk0MFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgODBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPrx5D5TmT/gwD+ZMOY+Joss67U3OcDObzZHDalsuHvGB3+GUdWxKUI0UvpLJwin2xA3/NqdEUc3bW0Anb0nbBKjggESMIIBDjAdBgNVHQ4EFgQU+Wj2rLs9D5DTRelKDWzq59tIm9YwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTExMTkxMDI5NDBagQ8yMDIyMDUxODEwMjk0MFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAE+CfZcxHrwDJmXImxn7vMOlRw/Bvy2wv+SIWHE5HOMvHa0eAbbADPz87HhyoMMnC9vDKfeEjaa8qyiVTtAcAT0yBtJJaLITEMm+uGkIHFcA3LkzLVubqFhDGUs3bqRRqvBY0+tqdLKRvWLn80XC0KpHrtppUAhwhDYZ9LKcAeDC9Hz2Zh44J8MYyYlcrGrzNvoEWE80+IHfOXkztop0P1ruwa6zpyrElbJ2AJ/Cfd39MaYxxpB2lLRXKjm1IkqjjYmolKphoF66+NLKdz6Iirtdt3i47G34ASHvu77/GHSrSsb0qsxlcQI7hjhB0jU4WIQOPKBPpdiBH5lqQ78GLe2oFsNv0FFEn3sbnmcZOLaaDzUlgcP+TqAQq0mjXZIXmTzvEc9Oc7sO7LeZWH05b3kQdywL6xa0US9Q+fpz3olPi1DAos0hC2I5Th1veQqUQ/+7EVHWaicX3W/S/+TUMHBixNr8CA3kioFGu16fDUNdyuKlrmnitpjeiELG2Dn9dkqpKDDVHPy9NLPLBY2D4m+GFxfuficry7G499rDyEkeAWjmG5xzwIgzx4zSdGVDsmBLmNNkhIoBWpnjB5+7ff+lCj93yLMfGfU3+kuWjYHd6XiymcqQSjBwzR6pzb0k2q/AsRn6ovWKf0e2ZE/yVD9LLUmUJOXoVdIRB1rizuk3","kid":"gcZRP1ogHyU="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 1","notbefore":1623232135000,"notafter":1686304135000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEExXQauou3f3g77qOsZ0rSPFjoTDi\\nKQDhG+Bpf34YyoeFkYMBML890KaqmZL4uezBc8xxg1f170qcZWHILjp4qw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIM5IkTBngr+AwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NDg1NVoXDTIzMDYwOTA5NDg1NVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBMV0GrqLt394O+6jrGdK0jxY6Ew4ikA4RvgaX9+GMqHhZGDATC/PdCmqpmS+LnswXPMcYNX9e9KnGVhyC46eKujggESMIIBDjAdBgNVHQ4EFgQUX4tTu4HFKg7kh7/7FCeP8+7D5CwwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTQ4NTVagQ8yMDIxMTIwNjA5NDg1NVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAE5HQ1OIeJz3gkH2Wrokpb2nLC/ytoe5t9zkK2LY+UmVvTP59uG1dyIWV5pv2hwYnCiSOOG82YJRfdsts3i/0NHlESPChvyoG/E97tvdjB8doTj4gCCTx1JmRpp2vOQZuQsOB5QeTY7nL3yCHZF7yniFDPQpk2WpE4tY4gxxt08hlhRs4C2iZ8jiN2DcMqJwippu0OdAca9mRFPnVs/tGjBT72QrEnPPXWu1pz1xdIW6sDbC2OhCkAMPC4qehWh00DuhxeYgkJF6cg5NOLT2iiAeEv0/DGdYsy1lM5JxE4BmWaZ9mRuvNvzf3lC6DVFHTr3R7/88RblxfWA/TH7E2TQT40JwhQ0YyhqWYC+W0T2cTW2NICedtIpAv8oECRentxzvceovuQw/BxacZUbs8WEJFW+WKGJvAeyaFrkLrze3U5UH3kurD3tG97E77wbFu31iivDmftrvWv/OSDFWpFiPkEP0pe46eY+x/KGiBZNYj6sxeC21W7CxAftQdgoOAPU91j9otI/0n/7XLV71Y1fnt02nZwDOu7ajLHebpjUtnnDsHojOAr3NQKEy836Xg2E3JtGCWWBKnkvgj1/swYBLaZxE9FEGo3nTst9TpwS8GpgXFoQEoTNSV5UBVCwT2djcZCEmhG4GPCrqeoh1c6bfTRbtORXv2HZqYgv7w6eo","kid":"ln8K+9SqfuA="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 5","notbefore":1630587618000,"notafter":1693659618000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHcMt1ez6jhOR9UBCXlFg//cHD/Jo\\nypGzNaG4C/gYl4qQdN+Vns7/idf8DO6Fk5z+Yh+I/vQ4vUQ5bWZSwRwUJg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIOZExjV2kjGAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDkwMjEzMDAxOFoXDTIzMDkwMjEzMDAxOFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB3DLdXs+o4TkfVAQl5RYP/3Bw/yaMqRszWhuAv4GJeKkHTflZ7O/4nX/AzuhZOc/mIfiP70OL1EOW1mUsEcFCajggESMIIBDjAdBgNVHQ4EFgQUAiIZbrncLuwgAWNZTfPNphbK5EcwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA5MDIxMzAwMThagQ8yMDIyMDMwMTEzMDAxOFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAJrQJUzTWjcyjHZj2Na/4TuSNTolOM2bDlEBoEqUAY3rfx42rM7xJT8giWcKL75arhGgkpzEqtJeQBaq2yE/itDN9dGI35qi/MvIhkx0e94d14QwOkfMF5c9mJFMcXEbb2v5UE4cQq7Obic77cjGlSemS1ieTrjxT4yYu3LOYOcTXQqR5qNeor97zHze3esvAC7VjTFo1wcg3kK8PZV9s25q9IeiNvhzcu3IeMIEtB6sC/E3q2B1KbvkEInr7/uHMRylh4cqfyK8VCewkIDIEReudLbSjKJBAQipDnNSuTswu89vNB1nY7kdRIyISqtgoB5opoadPDEdA6DISea2dvfXs5LohgjN4zkJK8R9h7TQizFaI1PKMVADzP6e25hPA87SVVb2nDGxzlXY2tJRGstvuD6cWvtfhc9fn71VUtIsjG3iF9XJA5xYOijEM8xzqznv8GJltrmv7f/pxTOQuyb4FR5pRzVRFaft0B9igToiEDeZoq8O/jVn09fvDRa2sxeQpXvRcQvd9B1YppLdziHzVyzQ/X6iD0nuQ/8osGZyq81yMrvN1uPpROgfcleo+yatl3VavV7HRG1e1Ur0G0SZ3xmC12RRoA3m3FVSTx7WsQcy/uurcmGpAs5gf9BkcTcodGM4ktPjjpu7UvoKPysSlI0tI3TtXYY0aRICSCYa","kid":"o11W81MgYYg="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Country of Curacao OU = Ministry of Health Environment and Nature serialName = 1 CN = Health DSC for recovery","notbefore":1627981990000,"notafter":1974877990000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENlKRwpA1S14Zfx6LZuAWm9ExHy86\\no7O9ijCq4AmZ1dFu2d2wowdylJzAvbbVsR1RoxfNJPzy5dwu9Nsm0PvsEg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDOzCCAuGgAwIBAgIUExGmExTT4ef8rDmoU1gm1xnsB3swCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTEzMTBaFw0zMjA3MzEwOTEzMTBaMIGMMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEgMB4GA1UEAwwXSGVhbHRoIERTQyBmb3IgcmVjb3ZlcnkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ2UpHCkDVLXhl/Hotm4Bab0TEfLzqjs72KMKrgCZnV0W7Z3bCjB3KUnMC9ttWxHVGjF80k/PLl3C702ybQ++wSo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANDVVcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEDMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFGxsRf1q1IJFSUabsYjk8Zhu4yi4MCsGA1UdEAQkMCKADzIwMjEwODAzMDkxMzEwWoEPMjAyMjAzMDEwOTEzMTBaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiAmvnUyiPPbVM7Ds+gisStbuwGRZ/ujjlfpKU0Kxhon6AIhAM8VBy0s4syzH9gDqrayITXG1r9253IAvNyxoHFhej6P","kid":"0JzyumjttZU="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Aruba OU = Ministry of Tourism Public Health and Sports serialName = 1 CN = Health DSC for test","notbefore":1627978373000,"notafter":1974874373000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKBG1WklnURluKXTg5+tm6/S7pMFL\\nBE8cZ5xNxnCCAL5nvUi6JzSgTjAmOaUNPXVwvA2TYl/GkJNbh4TazMeF3w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDLDCCAtKgAwIBAgIUHVt+j6ML1RILakWOrokwx1vJhWQwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEyNTNaFw0zMjA3MzEwODEyNTNaMH4xCzAJBgNVBAYTAk5MMQ4wDAYDVQQKDAVBcnViYTE1MDMGA1UECwwsTWluaXN0cnkgb2YgVG91cmlzbSBQdWJsaWMgSGVhbHRoIGFuZCBTcG9ydHMxCjAIBgNVBAUTATExHDAaBgNVBAMME0hlYWx0aCBEU0MgZm9yIHRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQoEbVaSWdRGW4pdODn62br9LukwUsETxxnnE3GcIIAvme9SLonNKBOMCY5pQ09dXC8DZNiX8aQk1uHhNrMx4Xfo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANBQlcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEBMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFFtRlFbRHNsuvQN/xIEwp1U/8DPXMCsGA1UdEAQkMCKADzIwMjEwODAzMDgxMjUzWoEPMjAyMjAzMDEwODEyNTNaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBNaAhthCNLRsfnXOACy3Wc+bkJ/oGxaEnqx8S0y3EkdgIhAKlbCGuSnLbyeUSBQ00N1K+iNzc2JoaP5CNyOGDOFAqg","kid":"2Bh+2HrOg0c="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Kingdom of the Netherlands OU = Ministry of Health Welfare and Sport serialName = 1 CN = Health DSC for vaccinations","notbefore":1622471252000,"notafter":1969367252000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsO\\nNkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw89w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDQjCCAuigAwIBAgIUU0JrRUBVL8DEW1z0jx8/+KAChLIwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDI3MzJaFw0zMjA1MjgxNDI3MzJaMIGTMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEkMCIGA1UEAwwbSGVhbHRoIERTQyBmb3IgdmFjY2luYXRpb25zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsONkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw896OCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBRVYJgZWfyzk3JJwB0HVdom7P7AxDArBgNVHRAEJDAigA8yMDIxMDUzMTE0MjczMlqBDzIwMjExMjI3MTQyNzMyWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAMMFkIuctSqsZbVBvE56YEZoxrF6m1n+F/IajFdNsRyeAiAC77Q6e6IOsDkPwq/ajPA5vslzeFETwcqNodsfAcJJEg==","kid":"3lTmAZX19GQ="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Sint Maarten OU = Ministry of Public Health Social Development and Labor serialName = 1 CN = Health DSC for recovery","notbefore":1627927711000,"notafter":1974823711000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQb+DcAtDpjI4ftm5ICNC5KGz10zJ\\nvY682GDCREwLupvC17QzWFvc6S0jbk2NJt2VY5V4svj2FfLGkSWbUqUFnQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDQjCCAuigAwIBAgIURZYaoJKl/Wy6+MSJA+7KBAfLQpEwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODA4MzFaFw0zMjA3MzAxODA4MzFaMIGTMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExIDAeBgNVBAMMF0hlYWx0aCBEU0MgZm9yIHJlY292ZXJ5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQb+DcAtDpjI4ftm5ICNC5KGz10zJvY682GDCREwLupvC17QzWFvc6S0jbk2NJt2VY5V4svj2FfLGkSWbUqUFnaOCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDU1hNMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAzA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBRnd3nKzgJx3I/4ejFn+5GLW5DFMzArBgNVHRAEJDAigA8yMDIxMDgwMjE4MDgzMVqBDzIwMjIwMjI4MTgwODMxWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIgaUm6pa07v+OCyyGzYK8XIuUIl1RF3Yvlzw7otvuvZVoCIQCdKQONn+bW52R3pKdoTb4ssYYYHpizX2UvWUJinjwf7g==","kid":"4Ss2raOqhTw="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Country of Curacao OU = Ministry of Health Environment and Nature serialName = 1 CN = Health DSC for vaccinations","notbefore":1627982110000,"notafter":1974878110000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEawHNq4c7wLusLEYNhn7CBSqk6bdY\\n7Phqjt1+Q+CVRHqBFfSRfWG+9dgoEMBdFHY12g4qsO3nnT2P4qhADwIvng==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDPzCCAuWgAwIBAgIUNoYe1qfQWUKjenQM2hZk75Gj67kwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTE1MTBaFw0zMjA3MzEwOTE1MTBaMIGQMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEkMCIGA1UEAwwbSGVhbHRoIERTQyBmb3IgdmFjY2luYXRpb25zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEawHNq4c7wLusLEYNhn7CBSqk6bdY7Phqjt1+Q+CVRHqBFfSRfWG+9dgoEMBdFHY12g4qsO3nnT2P4qhADwIvnqOCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDQ1VXMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBSvCnweDV0fhXiABpn551ECcIPLeDArBgNVHRAEJDAigA8yMDIxMDgwMzA5MTUxMFqBDzIwMjIwMzAxMDkxNTEwWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAOFtWGrE3NItKSKHvNypt0dHo8pfWcGwtWov+UinZkXUAiBYAd6OmxMik1GktF+cph96ldfimOpNnCobSLhpuhrhGQ==","kid":"H6b6bQ8qij4="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Sint Maarten OU = Ministry of Public Health Social Development and Labor serialName = 1 CN = Health DSC for vaccinations","notbefore":1627927825000,"notafter":1974823825000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERw+zOjyFNs4ntgwxcvouetTqlBIz\\ntiTtJhOi8DesKXv5uX/m1pVAbYium/fhyu0IaBeh3DVOLfLJtPaUEx8eiw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDRjCCAuygAwIBAgIUeS2exS2QVGgMamwCH1rOy8XFhEcwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODEwMjVaFw0zMjA3MzAxODEwMjVaMIGXMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExJDAiBgNVBAMMG0hlYWx0aCBEU0MgZm9yIHZhY2NpbmF0aW9uczBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEcPszo8hTbOJ7YMMXL6LnrU6pQSM7Yk7SYTovA3rCl7+bl/5taVQG2Irpv34crtCGgXodw1Ti3yybT2lBMfHoujggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA1NYTTAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUznY2NjB8NXsMUCHPOlgYek97hZYwKwYDVR0QBCQwIoAPMjAyMTA4MDIxODEwMjVagQ8yMDIyMDIyODE4MTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQDx1fY/jA5stQeKO1mdP5EgJ8iOho81Ob/B/yXfg8XKTQIgSyuSbgQQu0j1fY5gxnFhyW+1M2Si8suaq4As21gBf5o=","kid":"JsReuAsmza8="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Country of Curacao OU = Ministry of Health Environment and Nature serialName = 1 CN = Health DSC for test","notbefore":1627982059000,"notafter":1974878059000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPVZAyUlqrJ3XW8kCQu401SKWJ1Gj\\nF+LBjT16DUZO0RaRdAPsKx8FUBwqRBtn8dPzIP+EWDX7iUppuG0TNkt3Ug==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDODCCAt2gAwIBAgIUR6VYtf0ovWBCl7FHT35IVzVQ1EIwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTE0MTlaFw0zMjA3MzEwOTE0MTlaMIGIMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEcMBoGA1UEAwwTSGVhbHRoIERTQyBmb3IgdGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD1WQMlJaqyd11vJAkLuNNUilidRoxfiwY09eg1GTtEWkXQD7CsfBVAcKkQbZ/HT8yD/hFg1+4lKabhtEzZLd1KjggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA0NVVzAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUp42ATAZjIq8GuJM8TlU1qEBtzWUwKwYDVR0QBCQwIoAPMjAyMTA4MDMwOTE0MTlagQ8yMDIyMDMwMTA5MTQxOVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0kAMEYCIQD11uNYCNN/3xpgzvNI60u1gF/5aycL7HhApAh2mX8x7AIhANi3q/cTgsLOq53sX8mbZAZolL1LMGhfWHyRkwY7mIVn","kid":"T8kbYovQlYU="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Kingdom of the Netherlands OU = Ministry of Health Welfare and Sport serialName = 1 CN = Health DSC for test","notbefore":1622470783000,"notafter":1969366783000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERyOtPhis4M+vOSM+4AoqtBot3s7A\\nGrqQOSA2ZY3a25z5e4QlRpExd1S399CADvo5j0Nyqrm/azrhFIsSAc8FIg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDOTCCAuCgAwIBAgIUDWwu6rWJGF0zIQk/aKjdU0TXoQowCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE5NDNaFw0zMjA1MjgxNDE5NDNaMIGLMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEcMBoGA1UEAwwTSGVhbHRoIERTQyBmb3IgdGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEcjrT4YrODPrzkjPuAKKrQaLd7OwBq6kDkgNmWN2tuc+XuEJUaRMXdUt/fQgA76OY9Dcqq5v2s64RSLEgHPBSKjggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUJ6rwxau+2kWqjA+f1f8vUJSkiDkwKwYDVR0QBCQwIoAPMjAyMTA1MzExNDE5NDNagQ8yMDIxMTIyNzE0MTk0M1owDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0cAMEQCIFuevBHjahuLYCe1bOFCmy6V5FSfyJrVo5+hd0GCSDRMAiBdRK619VMnXNGf573r/PG6nVpeJ9aP/qpkmZG3TVGQDg==","kid":"f+4yAPIGTWg="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Aruba OU = Ministry of Tourism Public Health and Sports serialName = 1 CN = Health DSC for recovery","notbefore":1627978251000,"notafter":1974874251000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf85n2j7jSWalqCH8Dquo5E3uyYIw\\nYReoWWAiPkIvnwaaoPUt427OizGvRF35l0wPD6zSkbiQZxWI1DMaf+UeXQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDMDCCAtegAwIBAgIUf+V5qIHrABBVrichazDaEgY0x3EwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEwNTFaFw0zMjA3MzEwODEwNTFaMIGCMQswCQYDVQQGEwJOTDEOMAwGA1UECgwFQXJ1YmExNTAzBgNVBAsMLE1pbmlzdHJ5IG9mIFRvdXJpc20gUHVibGljIEhlYWx0aCBhbmQgU3BvcnRzMQowCAYDVQQFEwExMSAwHgYDVQQDDBdIZWFsdGggRFNDIGZvciByZWNvdmVyeTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH/OZ9o+40lmpagh/A6rqORN7smCMGEXqFlgIj5CL58GmqD1LeNuzosxr0Rd+ZdMDw+s0pG4kGcViNQzGn/lHl2jggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA0FCVzAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQMwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUsGbf7QCnDPzuBPOlOmArt9xBPZYwKwYDVR0QBCQwIoAPMjAyMTA4MDMwODEwNTFagQ8yMDIyMDMwMTA4MTA1MVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0cAMEQCIEg83+MS877WyCurvbC15pDKViLqWrbQvSRD2tjTT6JzAiBKlOFgjK69luoWCDFIFd/TXNVp6vIX9YOU1YZmrlFu4A==","kid":"lzGYCpOBQsU="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Kingdom of the Netherlands OU = Ministry of Health Welfare and Sport serialName = 1 CN = Health DSC for recovery","notbefore":1622470440000,"notafter":1969366440000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEiY+AGRWtd8tCUb5PQdEPaCWAZl0D\\n/SIOtcDH8R8yrp/JT8MmMxV/wM15WiZf09Eyy3iJXwFT+9YOCyrBA/Cejg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDPTCCAuSgAwIBAgIUSK4bme7ziau/JZkM80IOLM8iauswCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE0MDBaFw0zMjA1MjgxNDE0MDBaMIGPMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEgMB4GA1UEAwwXSGVhbHRoIERTQyBmb3IgcmVjb3ZlcnkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASJj4AZFa13y0JRvk9B0Q9oJYBmXQP9Ig61wMfxHzKun8lPwyYzFX/AzXlaJl/T0TLLeIlfAVP71g4LKsED8J6Oo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANOTEQwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEDMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFO9JANKEcntn4oTJgtch48rqSZMpMCsGA1UdEAQkMCKADzIwMjEwNTMxMTQxNDAwWoEPMjAyMTEyMjcxNDE0MDBaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiA9SzdZR+dN+yQ8+lUKzFCUl7noJ6YzB49zVsdYBsXJbQIgFvifkX+12Ib3SsdCb9TGkzQtD4ZxCLrx1T0ycsNwiUU=","kid":"pSEfhlMubh4="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Aruba OU = Ministry of Tourism Public Health and Sports serialName = 1 CN = Health DSC for vaccinations","notbefore":1627978403000,"notafter":1974874403000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcI1v9r69Swup7ghwGhCA5xoG8Sop\\nLiD2DnfkhTydslZQBHc+TuieZ11aHYkD91gmngRXRsGU8Tow/LEoKPkyuQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDNTCCAtugAwIBAgIUECsnQP2ouWaoN8GWtDfzIzOjQsAwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEzMjNaFw0zMjA3MzEwODEzMjNaMIGGMQswCQYDVQQGEwJOTDEOMAwGA1UECgwFQXJ1YmExNTAzBgNVBAsMLE1pbmlzdHJ5IG9mIFRvdXJpc20gUHVibGljIEhlYWx0aCBhbmQgU3BvcnRzMQowCAYDVQQFEwExMSQwIgYDVQQDDBtIZWFsdGggRFNDIGZvciB2YWNjaW5hdGlvbnMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARwjW/2vr1LC6nuCHAaEIDnGgbxKikuIPYOd+SFPJ2yVlAEdz5O6J5nXVodiQP3WCaeBFdGwZTxOjD8sSgo+TK5o4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANBQlcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQECMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFM3bsoRYxPuXAB71DUGiFlVsI2pOMCsGA1UdEAQkMCKADzIwMjEwODAzMDgxMzIzWoEPMjAyMjAzMDEwODEzMjNaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiA4NIHd9nrtJJutNFlPr7hMwLAG5S0Fg8/sDNGgTiO42AIhAO8+HmKyw4rg55MS25dFf5zZYvQ/Gu0ddo97T49wK3qn","kid":"ryvXsisPPeU="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Sint Maarten OU = Ministry of Public Health Social Development and Labor serialName = 1 CN = Health DSC for test","notbefore":1627927778000,"notafter":1974823778000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnRYo0qQ5BM+B3lWzaaqBhgTqQ99w\\nnzj078WYakRSXv7LyJbz21EGEQkNpe3UOlENX5Q7RdzkrrXFbs7pHfNDpw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDPzCCAuSgAwIBAgIUAc0BMCshHZKc4/+JL2MOXBv10d4wCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODA5MzhaFw0zMjA3MzAxODA5MzhaMIGPMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExHDAaBgNVBAMME0hlYWx0aCBEU0MgZm9yIHRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASdFijSpDkEz4HeVbNpqoGGBOpD33CfOPTvxZhqRFJe/svIlvPbUQYRCQ2l7dQ6UQ1flDtF3OSutcVuzukd80Ono4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANTWE0wFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEBMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFAPQ7CLWYkeVzUr1/A2Qhww+QJc0MCsGA1UdEAQkMCKADzIwMjEwODAyMTgwOTM4WoEPMjAyMjAyMjgxODA5MzhaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNJADBGAiEAnQEMyEA+/j3kz/5N2bYc456EmYIDMlPaWa/8y9CKAhQCIQCz6RYG5r3ZJ3tRmbb4n2EVBGUVjcldIZDh1f2R9veJpQ==","kid":"ypEjzbYNqEw="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571146 ST = Berlin","notbefore":1624540407000,"notafter":1687958007000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUdPPsk9xzY1vM1zdjgvHDsRCST55\\nY9SJBJUXI5uqGb6ckpT7xQFGbm+WGQuFJ9E0w3Zyyqb9P/bsMJQmJkrpkg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"0L7AaIwu+EY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413462 ST = Berlin","notbefore":1623059747000,"notafter":1686477347000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqD56CIMWer5HDRhCpUrq5lZ6F8Wr\\nFPy/IDwjgb44oE2BELk1xBbjXvz7kSPpf3jp48wPI7WWLcx/V5K1A6obNA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"1+da8dKEjlE="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382898 ST = Berlin","notbefore":1622717182000,"notafter":1686134782000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtGEETBc2arnjxxBWO3aDW+rwFgwm\\nhqPbxhaUuOEC6kkd3GPhmXPFYKtmFM4IQDj1Cfqu2bIHa6RqF9uEMbtxwQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"2BGoyFIyYPs="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460071 ST = Berlin","notbefore":1623423164000,"notafter":1686840764000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeL12fn7+nUNW+9T9zJLaiZF18rfz\\nL1I735fT+3zuKryR3K2oMIMBDFbrrLVva3UeOEZaz+sUwUKWHMg2HgQttg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"2JelGO/ymxQ="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413213 ST = Berlin","notbefore":1623059345000,"notafter":1686476945000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtgz2ifmTj/vZbBaz6xlNCdQlw4FQ\\nU7v3dUrJYQEigk4Lz8dY1c3pGzYO33TjrgN/Qn+yHaYMHl6+06Gk7AuW6w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"3LCRmucB9kU="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382791 ST = Berlin","notbefore":1622716844000,"notafter":1686134444000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8nZrLqMlw5EvdfvJXgxb2rXj9OBT\\n2UWBqAFLeCoQXuY+YOZJpUtL4wFQHMGPbvyoWvvcfWtrz3ZXHwaaigQG/A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQdF6hY8s4JtfyB3BR6uf9pTA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDMxMDQwNDRaFw0yMzA2MDcxMDQwNDRaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjYzODI3OTExDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPJ2ay6jJcORL3X7yV4MW9q14/TgU9lFgagBS3gqEF7mPmDmSaVLS+MBUBzBj278qFr73H1ra892Vx8GmooEBvyjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFBVE9/11jlO3tKtsEM3DMg+kits6MA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAl9y2Vi0jUhAyIm1ax5e3DkjgWfTq1G32y6iOP5XYBwbcpkkLfgO9q16vhdnxvwkT/HUeBAyx8Npv5dwjlTOqlEIpEM/NFNluZZkf0GN7biX4cl2VEFK8ioP2952t2ZUqimzw7PMCf+WsGkRk0m3fwl9JHDFvF20czxFi311bmDEHR2phgkgjtZDC0iqF42In6TCRx+78P/SM2ntBIwMqIEMu2UBxkONAGunmAC3Of7V4MmEIx7zbpislMbIp/K0S54MfQ7isiwTW5WxVRbnqPphEuMwsKmvFDqcVMn1lodCOwMC2UpPR6ccQ4+uP8964EwK9indNJPjExJdBdXZYd5u2Oy3igikZ9EOHB8CR1s+yZTDWf+UI5/ASYzmKdNQvsdN5oKWrQmetNM+5cqokOE+L9/RMN1/7ohd8aRBZ90s5FU8TJBrSAVCxSV//ADQ/+BQZ2gSGVrv3rvRfbTwp2MKhulaaAaWmAiqENiuZfNuJO/TmLmiAg0gD8NBrW54HrH7aq+1SQVVIhlZG9vcctYnRgKYPOD9JI2Osl1MJ2l2i3I0xWD/ez2r/AmJKRQ+3glycIpXV4IHQ3fbqLsDtTv5DXIp7nP++5cwe6YJXKIi2DfpZGq3tsx6dkbxS7NQI5pEdGOmzW4Cz3vJXc15Zp9xatFDlxl506ZAQ4XkDuTM=","kid":"3jqajzfHpKE="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414054 ST = Berlin","notbefore":1623061369000,"notafter":1686478969000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE71N2pH6YyC6gfUHwiEJDzIxwMIW/\\nHs+Cgn/gPQbZAkFcyX/LTE2j2gZD8hLs55TErTTKokvHkrEOWtHYkIDhyQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"3lrBUHc4iQE="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460099 ST = Berlin","notbefore":1623423223000,"notafter":1686840823000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5sqOpW4x66Hmcposox406LFRWyGI\\nvH2CA+Di7pgvWYIJLX7soTE36YKx53vPYRUhKtzexJ7nI90MtClg6NsTAw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"3oYtiEZ9wp4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413639 ST = Berlin","notbefore":1623060017000,"notafter":1686477617000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzma5iz5ZBIh1KDZhj9fSnqJoKK9w\\neOGB/91w6FpdAUjFEKGDphj/MdGRfVro/gSyHRhpaQghZJXRDECOuSAzqQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"5xtSr6KkAGA="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382995 ST = Berlin","notbefore":1622717670000,"notafter":1686135270000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8xghqNrE21susvTQHV9fwN3RWhBI\\ndCYBu3laCz66NasqyquT47PJXuOifSUiNY2/qOyDuu0Ae8MKIHeUmN5wdA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"6FNkACSMLEc="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571164 ST = Berlin","notbefore":1624540468000,"notafter":1687958068000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHrXK9pJSpMrEB4xUrXTTnb7RakIR\\nzDtNh6ugnjfV513NFsu5rKopJYYDOk/Bfy5MyNug6nD3kSSUUy5yePrgmA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQXbloCcjf8Ii6UEoQNa/JWjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MjQxMzE0MjhaFw0yMzA2MjgxMzE0MjhaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY1NzExNjQxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB61yvaSUqTKxAeMVK10052+0WpCEcw7TYeroJ431eddzRbLuayqKSWGAzpPwX8uTMjboOpw95EklFMucnj64JijggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IYyaHR0cDovL2NybC5kLXRydXN0Lm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmyGO2h0dHA6Ly9jZG4uZC10cnVzdC1jbG91ZGNybC5uZXQvY3JsL2QtdHJ1c3RfY2FfMi0yXzIwMTkuY3JshmlsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwHQYDVR0OBBYEFMNmvp5WNQAatz9NNy8GOmyDwA4oMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAIW6aoAkKucRR/uADzP1cJHVGu9eYNsHXuVG2hELdka7ZXuYcPH7vnS+20yOq7CPtSlH/89ApD+M2elkNiP0qcm86kPhrUrpKggUCR4EYuLFmPhWnCXFAOCvyLKyyZjzGm22r1/wCSa5UFCPt96V9Hqox14r4ju7gQAI5oo8yofjph/uPRKI94swHEKmlMun1te7dUBIuKD+C8IXPxeZhpiZOvvN8jYG0CwZZbY6ypFSReBHCloKpyYSha2Uy2GsNA+J48lvpNBPQyxDKdtz1q5gi2NuO2gwZ5wU0wNMx4VCAgJgxLdXOyJJrSAi1oOGATrMQbSzQxXFk27zDjSpnH6JCOU2bNwvvIYpAk7Ct1dhQHp14edj72hjeO9InPxzl4DQkeCjfScgBX+Ln6zC+1HnI+TFMF+kFZJjRCobDNLLusTz1L3cfYfaAq+Zz3P6fNc5NSyvFSw4YzW9ck+v1S+qvMs2ZsEBz6zwkJIkoXG/kBiUivhgy4zc7e9zwHOMybuZ86wOY59KgwFz8KB+xSK9mciDhr1nQctZwICZsZ4ssXqnKQi3TgjTL4bxk11g4Sws6q5Ap3LF20ihJd51kknUWAYgUY8xGuw2v2PdErMdq1wLbEuisYQUtZMPXf9JRPQ+MrzhQkbDM9DL/Heo7ujxZIYUSQlFOCmBl9vDOT/k=","kid":"6VdOPLF8/Fg="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614703 ST = Berlin","notbefore":1632294727000,"notafter":1695712327000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErm7fxPeto31KuUPtQl6VxVchANLA\\n6NTLFaFJ5bupx2WsBsICmk32sqx46/ZCHCmiFqGyfYv9IxatTrP233n5zw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"72XVTQ2A9Jw="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383046 ST = Berlin","notbefore":1622717862000,"notafter":1686135462000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkkxNdS0EZvjP8j17j2k92vHZpX3q\\nSNMDbCqBYPvmqzj1jnNEqsAZSp8uppwoShgmQPdUSmC5jvSaI0PiIRUJhg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQQWS+4fLCvfxxLhIQt2WzWDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDMxMDU3NDJaFw0yMzA2MDcxMDU3NDJaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjYzODMwNDYxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJJMTXUtBGb4z/I9e49pPdrx2aV96kjTA2wqgWD75qs49Y5zRKrAGUqfLqacKEoYJkD3VEpguY70miND4iEVCYajggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFBm17/bi1ypYLa+dx8hvUkumqIZsMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEA3Ag93xEQg3oWQVhJNr/4D5YstE6L6F/UjFCj5DqgPeOmuI/hk0p+Cbj7BXU6CnikUBVnqLP1/rgpgYx5GHVBl/5MzvRuVZHIKUrb0PyVjXBaSOnT2AhXEK9jY/KOeAQfj0z+YHIAyFr9kwwsZdapLibfNNYOuccEfWYuI1Co/sZsYDOlUcJpEO5AsPMYwYXqsEacwjjDMhobfXKIlHo5jS5gwU7OMR8f4BxREv0ev5ts1TdsaK+Hikq033gP3EEglAiHc4bfvnX1Zomg71tODkVHgBvakCbPATn0ZIMKPZQnKiEdYfySuH5sQIU/ewBPvjDAdgSXv8OdL62bl9OBagzG2gXf3tZq4cv/WJdULw+8OmFVktbe86tUVzigMfY+39JCoaoy4NewSD6jh9s8wQGJiWWoqv+AOgYxwjTe5FLzXBJv3qWEM6Ej7bb5exQtIiBLiP5jdLZ2clMpIhrQmbrptbCGEf2b2s+g5vU+F5zY4ZIjTDHENX2thBp1Xjm8+KnuKZFYJZxxXip5lcvl5jxVIN3a85d8ISyN3a3FAQD8kiEQAwSaPzf93KvkEaThtU7qnb3XLG6Wyh53Mm1t4oi99mp3pbZ9fSHIAKWqk9DY3fzFgAJo5ANN11UZNRpXuMpy29jXMLofUpJkr1aYVvTaPjbigAPIY5J9vfX3QTE=","kid":"7XLhQx1KXdQ="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614776 ST = Berlin","notbefore":1632295062000,"notafter":1695712662000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZftKRdrOhX1qx8KzPyrbXB/V8TYi\\n2ZAsEwcr5gkoSkiPWyN+LH0BaRwG6HbqfjpqgdFztwj6PIRisTIQ6LYXKQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"7byt9scureM="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413569 ST = Berlin","notbefore":1623059919000,"notafter":1686477519000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEOl2NFM+2gkakrrAa7g+F7KOXRziS\\n4ydbxiNbm3XTu+L9LP+oSKMLOeJOBcjJA3RqrqAiWfoMriWGd0LRYM6TWQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"8AnF/hcilSo="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571377 ST = Berlin","notbefore":1624541075000,"notafter":1687958675000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE65QJlG4NQ1UKM3/5Yf6n9u430S0g\\ntEarOF4e+WrILwUamksO2zJfSgAwXJV2ZzzenNRml1iFffdf4V7yxzgLUw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"9IZVOkJRZPQ="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026523255 ST = Berlin","notbefore":1624011175000,"notafter":1687428775000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzIzHRqk76vDGIUAj3dIo3UVev41t\\nak5P5oxO+zaOlsKnxUNbo9yqIcpOo7stI8WLrif4RRaiZoQ0tvahSHH2iw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"9v3FozjKAUo="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413994 ST = Berlin","notbefore":1623061275000,"notafter":1686478875000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEM7zYPRk1r4viA/oG6BxLec1shhb0\\nJoDGjLAUuPxmGSMw+aCQZUcY5MtUqnVD3x//kviuFZDumf65i0V1o7Gsew==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"AQCGDydsS1Q="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383019 ST = Berlin","notbefore":1622717764000,"notafter":1686135364000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuCgNX5VUmp7/lN7/UDF5kRDz7qvW\\nnpgFOKwv1AxJXbSvwJj5ADOP9wGAsocoSJtPr3LbjbmqAqndrgr3831+tg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"CvktK3hdjeY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413231 ST = Berlin","notbefore":1623059412000,"notafter":1686477012000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExfciFuh1jL3LBPzaNAVmmVTL87eJ\\n6wVctSg393nUcXxVL1v5vCgp6jWlRdJglVJj8jRG0TfF3OLjDUHAPn2rAw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"DusseXrzqO8="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614837 ST = Berlin","notbefore":1632295172000,"notafter":1695712772000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6JUSmYQDMdlfXO6t5UIh71Hhib6D\\nZ7VFVaRHqIiSem6blCKAJ9bSQoEJDjl+zrXVBbnTZYJAtFXt+VBqIzq51A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQdR/Ssc9chsjFSNmB+iE5aDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA5MjIwNzE5MzJaFw0yMzA5MjYwNzE5MzJaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjc2MTQ4MzcxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOiVEpmEAzHZX1zureVCIe9R4Ym+g2e1RVWkR6iIknpum5QigCfW0kKBCQ45fs611QW502WCQLRV7flQaiM6udSjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IYyaHR0cDovL2NybC5kLXRydXN0Lm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmyGO2h0dHA6Ly9jZG4uZC10cnVzdC1jbG91ZGNybC5uZXQvY3JsL2QtdHJ1c3RfY2FfMi0yXzIwMTkuY3JshmlsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwHQYDVR0OBBYEFPeVuN8qHYmsT07fPk0gmp/22ZJmMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAf8NaC8deTquKkKHJbs62dGMbsToP4lvuXUy1cc7RgcO7wIJLilnIZInqdQn5BLlkcobx3vsUN7bk2jLGK8bLAvjtoRkb7fzOrtU3uZkX28dmEomJq0f8lon9tG75oYiUPx4XKjczBBow9Dau8WPHCgaXUGhRCbNELIXS3iXZ/LSTQXwYrf7eOZE82BfeVWbjaUuirmNTfWj7Cd1mQLZGcrndBeLNmfxiI5IW+7jzLqd6zdQQTLrz/2Ol3pU072Xb175ixyZTu47hwxU5vsbcNGK9PIFrKFBDc8j5XLQSITOvXkHWZahuIVZ4T6XxV4i+hHuXi8XFPWbLwJj9KyHIqYxNHQENNfvdmELI4ZrtVYPBxqj5ypIO44wHwhSxAEaoNPqVHpqVtmg9+5ve/20iE632ZPUqvVY+S5M+TGRDx7V/46vEiFZRRNHvj0kT7GmQBmunAV4nsNvxHO3u2f+8rhPtWo4+XFGymI658Au8e31iIo5y3m1aUSjxclY0VwqDEojE/rkBX2Cc/E4iVy7ovekIRRrPipZDhtULbdKkIWtR9aRRCNsPs2O+RaBKl1slNG9VOsPNgCs1bUiXpYrnVvFsQo5l4WIi/yvjg3GWv+PEgfgZaOmQqPy118SNOgGD2zMZZiHRjzy7wMrJJoqWfMNUU+SZ/ZxLHkPs1XXFOcw=","kid":"EDSWY8Hnul4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614916 ST = Berlin","notbefore":1632295270000,"notafter":1695712870000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESb7iWoF0mDYKwlP2EkoD9oJdt0Ew\\n3tomFYMPK51gX10VgQPMGAUhwigTTGrSJsT865r6sshKSy20xzsrMZ3buQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"IKMstf8yj/4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414212 ST = Berlin","notbefore":1623061818000,"notafter":1686479418000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyxW76RQrbDUSOEHxYksWk5CaGGyg\\nxDJJ7A9jRiop+FlpwmPReFTmJNVRMCjE56zKy1oxdi4KXCHI/yJIuw4zWw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"IZftFLRmKGY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026164195 ST = Berlin","notbefore":1620396932000,"notafter":1683814532000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEorGGRfEic2GL5o9XnITdq3nd9d7p\\nWDvy6waSkDMI633+wvCluSBV3rWR/QkL3FdfpcL2FOCWaAR5/sXOihpfrw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQUl/a6dCJQYWN7+hvCmQMjDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA1MDcxNDE1MzJaFw0yMzA1MTExNDE1MzJaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjYxNjQxOTUxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKKxhkXxInNhi+aPV5yE3at53fXe6Vg78usGkpAzCOt9/sLwpbkgVd61kf0JC9xXX6XC9hTglmgEef7FzooaX6+jggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFLZUelpTEvjvhoJ0FEt3jzVhmdMtMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAobJq9rpQ7gjNp0cvnJgVytpdrq9Brej3T/Jef4/M1YK+7uk1uGSDiR9+go/49IWiDFWBX5HBa1s+8bHxAUQNvMP7Y3Dje75KFX1a2L2XExjpoKxkwC96L/UvKZK5de3h0fZDGHFQb8nQB7CT4Ygky5iFO8TnRdSoVz33su+OM0d6LejPP+SU21bsg//pzVVuzDXAF2rngBbcYSSjSaZxKKfGAMv9p5pnXbmjeNLPn7u1cBCu20CKbsMu/ARfisW+jR1kAFo5gfOToOd2xetkKTL/p8wC8PdJc9vK5wimEK5p/lgFG3i0DPfDlQ8Zjs0yTV3lbuaIjv4EQgb8GjhmcJOlpO6zTVp7kDLO4vgSnW45HS//pckR7rijMb9QRfn6fLE2KW3l3er1XC+/9f1oZBf394PTKJevOQEPQynWuNbw29WyFElWdFwnPbvup6g4D4a6VcUUtDLYAMX8raSpvgcTu5PjVgTnsTItSgG6rz096it0dQODyswmNUdig8TxYmalJNB0SMLijCpodeUZehOtpNwJ/9U5ejNEn5puwaKjwiVom+OeMOLj5ujsNrhQP6KxlfjBGcz2xV+9dxXgez/izIoo+Q8eaHmXWAbhOH2BOkCceIwihL/2Y28IlBCL2f47YOKpEAU0zffeC96U0XzKYDV0I3jIOuyvySylMuE=","kid":"L7XIA2gi2ps="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460044 ST = Berlin","notbefore":1623423085000,"notafter":1686840685000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqXPIlxahww0kgegwTgRNQWpChqH2\\nPfXelyd1D77uo8dy08tlDhsE7zpyzWXfZTUAMxPtgw+JTqiaL1FQtvdkyA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"M8bcnysCMj4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382913 ST = Berlin","notbefore":1622717283000,"notafter":1686134883000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKPuGAJsDLPU7vw4aDg52nFxuxz3A\\nsJtWUmtsY7tQegwCVfll+e5sQJu6y5CZnOD+gKdMKfnjuB719z/tF9qB9g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"MxhfdcoHinc="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413347 ST = Berlin","notbefore":1623059592000,"notafter":1686477192000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEszk+l0BVoDOXZg5SKeeNbLUAggqL\\nKB2a3NlMXWfxfdcdHsPqqlKWcFTZBzD3/kIyxJi5rlxk1Uk2JsFNEbjt7w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"NCdyt3s+cak="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382843 ST = Berlin","notbefore":1622717035000,"notafter":1686134635000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUCSPQOg4hIgEJzD2PHFjccnQzSQI\\nvYs+gbBuJqHxv7tCAEpyEj5XIfjjfMjNxA+so+AdZyEfwszhKr2A1/nVSQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"OKpEjMo/2MY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413541 ST = Berlin","notbefore":1623059843000,"notafter":1686477443000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/eGWuKcNV/od7Eh4EJuiqBPv+0yP\\n4q+qzhOlNFdkzuuWy6l+hhjVHxdfxp4XDVvOUV2D9wff81/tNfBuc4pCmA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"R7q7yd90ZPU="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460123 ST = Berlin","notbefore":1623423294000,"notafter":1686840894000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh4UMl8PsQUsu36Hq7xK+dyGWGrEL\\nxsfzVOny20ZnkHhyBYxBUIGoHEYl70bpzjFBJN4WLGtilZD/0aLWE/+ykw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"TGjTR+Re+yk="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413860 ST = Berlin","notbefore":1623060911000,"notafter":1686478511000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEs77Dr92zb+HOBL9gdfCWOwkna+9D\\n3Kdq0HgUqpVByi7kqykRPAFKPZBA771qyoBy0uHFhdYIzNAPzdHj7KrPsA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"TpQIkAHAym4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413417 ST = Berlin","notbefore":1623059674000,"notafter":1686477274000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEopaKkUUE4nCgNpRBE9ugmShuJd90\\n7aOocVvFvxPLxiJ5qqQ2pq/GVsq5Vf/0V/b1V3rAoKO8bMvxP4jkTWTxqQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"Uj77p+qIQNs="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460026 ST = Berlin","notbefore":1623423021000,"notafter":1686840621000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh934IiMCsXp977pDeG7Wi11S+uGG\\noem6nSNbtCILcST4+/FqGlLOBJvIZPSh3hTHx2V7V+3Lzqi6R2dahOno/g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"XkVWZqUeeFc="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413693 ST = Berlin","notbefore":1623060128000,"notafter":1686477728000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyV/EBSORniEE7SMMNmvSWT3dOAuD\\nuviDHFv7rvnrcZ2wyfQkIjyYPkrtVrGwiNdwOcbHKreB2eW6li/+fDQPEA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"XuCERkHu8kY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413897 ST = Berlin","notbefore":1623060976000,"notafter":1686478576000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5eOmRsTsPlyUVzKnWK3xYlY04+DO\\nffgg07nWx4FTa4mouXQ9nfCxmMHgpuZv2RxbVSzYzewjcmKaknNEYDdCdQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"Yr8a8Rd+zqI="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382773 ST = Berlin","notbefore":1622716737000,"notafter":1686134337000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZM5AMBImcqdKPFM6P5xx0LmZxo8\\n1NcnuydrdPUQaaa0NhsRctuX4qB8YSd2pG12ilwSSfEcgju8I7AsFJSAOQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"ZDoFfkn+yhY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414081 ST = Berlin","notbefore":1623061438000,"notafter":1686479038000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaOhuajeY34pPu/12SnuMv2qlG8Er\\nMOj7s0eAEM2679YVzsiZWLIp1S1jNWsoIJJTEiLWUtj1mqCsMOR3gA7CBA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQeXagwMyVN/BpMbIabJ0saTA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDcxMDIzNThaFw0yMzA2MTExMDIzNThaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0MTQwODExDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGjobmo3mN+KT7v9dkp7jL9qpRvBKzDo+7NHgBDNuu/WFc7ImViyKdUtYzVrKCCSUxIi1lLY9ZqgrDDkd4AOwgSjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFIFcAIBuBBkyACQNv90ClKGy8y2UMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAEHXLM2pD2J2zRuCx+7YAPZFnrip5YyrO0fjLv4wIGl7vNtvHNp0YhMfc3dgMY2BViV6GhI8MsaNOkn8n/0QfXQW51+6BJb26s/Kfu2RvXFyGVtlb8pA6aaz5B4ja5MHA/dO3Wzxj4Vei11duPkgbKJ1W4MwemnsY3ABcLyV4K62A3C6lwC7H9Rh3Mr7Eb/vIBTJ+neUOQk5R+UkxXmTTnSqjnEGiDAirdWc92rtEZOmO9Wcx54v9/wF081UzDggcGX/piRry51kuUZJr3f64t8PacRLK7OOaPgjfq4a381eYNvmELszIzmixBD+fYM1CJ9DaS1EsjKDkjxl+/weHdQn1z2oeDH/LF30kmdFy/Yja0IPqox3ixxQnE/R5HlL5cKthYxappo/crJBTw2jReVZ8GIFomVx1dSeK9Ko/kZsfqILGjos966WR6+qZHnsWSAxBsGQ/cTKhG/uwG4GMWZX/r9iFBlNCTqIgwnHENVv+orz2ovJO8XbUAGniAVLb0W9R4uQOPg8zNjovmtq4oPrBaMfuMtKlh1fHZaGTFFwnmIhFumOY5P3cbmAqqZzcF3Ql9DXKtC9RZEq3ptNcst8/Mm7gfkY7vgzGfaQa7J42hUtzFtxqblDdkG54Z48RaBKBujdJuyjHm9nMmM5If7TMMpD5q09+5dLI0YWolLo=","kid":"bKmas9wa5tc="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571270 ST = Berlin","notbefore":1624540790000,"notafter":1687958390000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUtMktlZKpvOfwhumIvsvpKMWE1Ly\\nMq32RkRCbVM5TBBxHsCUYdXSjbqPK3cZ8tYkCkcYlyluKbQO++HaSsGjSQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"c1XrnEBoj/c="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026164168 ST = Berlin","notbefore":1620396811000,"notafter":1683814411000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsLa/zRhSxxsmrPE/RwPNKXGblvI4\\nJrdqfPNYpuPn3TpkExb/vod11MuW7BismmErZcJC+oWuItW1UH+wcXHJcQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"dhSzPDr4G2M="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614758 ST = Berlin","notbefore":1632294922000,"notafter":1695712522000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExfzglJTFBrKFErvCRkqtHq0U7O7S\\nmxzRntsiUENJFzkpxD0rHs+0H6Qb23WUiaDe368iOrWfNk03uOEjviJurg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"hWoyHrtJs+E="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382931 ST = Berlin","notbefore":1622717389000,"notafter":1686134989000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5D4cdY3G91kHagLyAGon0ufC2jqz\\nQ17V1wjvYHOLxZSY1evmQVhovIVUS9AU5Z73aeW++2ZyNUFg7L/9Zk1E7g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"i5SVuCsR5TA="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383125 ST = Berlin","notbefore":1622718187000,"notafter":1686135787000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpobykjScOX2uy+5C/BYBXDRcVUVO\\nBDWLUgUaIhP2q0GoF8FBBDYBjx1peWhf4Nd+rtjBivr5WDcFmjMVn+FVzg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"izUDZjGtHWY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413286 ST = Berlin","notbefore":1623059521000,"notafter":1686477121000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgxLpjMDX1/tMRghYLQKMI0nK4UkZ\\nuK9pnAAJTC7BeQUaHYFp4pJkC8z/VHcW74CpwTeTRITzs4MZflkN/WHtqQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"juskqrNQf6k="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383107 ST = Berlin","notbefore":1622718068000,"notafter":1686135668000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtLZ1N2Y7UQHgRO3yKGyRTsJWdYFG\\nDld5kbglFGHrMvZQwa5XoBclH9xTrP3dXcTsgjnml7Hx5YZOnGHhJMrenw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"kjEx2H7huNE="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571313 ST = Berlin","notbefore":1624540920000,"notafter":1687958520000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx4HHLyxeH1wp/aPCCwyRxWVEcfUA\\nLP66kgwanudG4b8upvGFMsVXpzg0ohEParVa912A9UBuCkjDM6jFAsgZIQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"nHmZ5K96UY4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026317104 ST = Berlin","notbefore":1622032330000,"notafter":1685449930000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJmki+G1pd9DNiLX/eT709p/ZeCd/\\nmcjrmRLoTgP6nlDqJxUvZ0rQ64y/Lj2Vk5ehGHtuV/RmyuNXJYxFB58bdA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"nPKEYm3gXzU="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414115 ST = Berlin","notbefore":1623061538000,"notafter":1686479138000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd+grPnJ58prZvOeLC3vi9P2mnqlv\\nvGNfsbT0HmxAVHAoNB73PT149IhGWhNZFSMFRel7vu8vi4wPoaSuIjraPw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"nTrG8glLUls="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414160 ST = Berlin","notbefore":1623061647000,"notafter":1686479247000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPdriVdFsidKrE0nr7S+75iO7+8LO\\ntzFp99++4BLqKKMKn/mAXvgkInEN5xqsifTYFWk9KmLcUGbD9dtwQlaA+w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"npo0ZWgdQSY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460008 ST = Berlin","notbefore":1623422950000,"notafter":1686840550000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7f4SNNst1BMsb6Ub0yVCz01aDWB9\\nI2/ajVbLyJpTr2pKwSocQpiM0mcy9XX+dMYYlUaQVBOmtoE//fnw8w2vDA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQa3EfpIJxEQWbFKABTToYxzA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MTExNDQ5MTBaFw0yMzA2MTUxNDQ5MTBaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0NjAwMDgxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO3+EjTbLdQTLG+lG9MlQs9NWg1gfSNv2o1Wy8iaU69qSsEqHEKYjNJnMvV1/nTGGJVGkFQTpraBP/358PMNrwyjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFOnH1hRU8J3IP2P3zqqdI/PRssfHMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEABP/zORyij1UypZj4JppvMe5h2warlNHUqqf71W4IGaJKAjcKi2kazMJsyhJH25csxg0MaUT92YZYIRx6Iano+heWPAfvMvymfruJvCH5Mt/6DJuaW+8D1IQa42Qy0m/n2OknEquvui/XEnZEPEqDq4ZVTnM/e2kSM/ieue8Cid7YS7kLOzwcTJkQwq9duc5cwGgaQak6HcNpJtl/C3j8FvsDK2n19JPr7XI2J0RNnMdkB+UH/diOgihRy+WMx9g07bk5xaeoCE8HstlG0XmLKDvuKQhAtd9l869120LzyT6XXhdQ96mLaYli00wPahgLRxKFZmZw8YFjyzFU7MNVXz40OHQpejLUf71MLl+0X9S+VABE5KOpl3IY5smqF1CNCq17bEMzt9jFo/ItqOtq5wnHnBbATpFwYJIX86xHcikkOHLLJZS+Y1a4+y6/Ul3l4Lw8WPaFCOwdGXDQ8gK+sEWkOg4y2yA1+U8XAAsmRcjSpK7hDZL1wfTyjnN6UhD5ry4bCGDdurTCazdyPOoTaj9dtIpL9NiN+Wd5reaaxcNinmQSyufBSdPvdMqAPFa0dq3eeFi598qm2FXcWIpHg/jzv31ZTfcHR1Rc9joEY53ReCHxeHEhsaAeINWOCRj3/G+E4mfe9saz7ppdp+ahb6pMvJxvJXLqqweZ+GznqiE=","kid":"r9YkEJZgi9k="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571191 ST = Berlin","notbefore":1624540537000,"notafter":1687958137000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbQZPoqfjpTx8m/wAZZWk3uoDxzfp\\niISsNSuZg/+9VN/cSefrEHFRvQwM2AjN6vOjhzVMdjZ14MSRJUMJEu85Lw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"rKMDA66RiLE="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571331 ST = Berlin","notbefore":1624540997000,"notafter":1687958597000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+fBKs9tgAlGoiBIglL4JDLpguDzB\\ncXqCuIulrUkBy/wZrJtv7fsirU/YCvcn70rPzMCloqePEoDPCf1wWX8Dpw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"rXP9L7xddL8="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414197 ST = Berlin","notbefore":1623061757000,"notafter":1686479357000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE40rFr8baZEDNvONEE+Rxf5ePnZLL\\nmqR+5Uwx/S5I2ylMijZyZ4c2kD3OyTHlfTNa1mS09zXnXNJKqZyqi3GGQw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"sYXcYixrOGA="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414133 ST = Berlin","notbefore":1623061594000,"notafter":1686479194000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2TqSv2wB9nB0Ev3u5VmckxWzq/L0\\nfvl1HVI3ZBXCF+7k55bo0zUABUPBz6/e1PaDxDCIS8+NybrbpUT3w5D3Iw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"vjm0I2ATJ+Y="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571243 ST = Berlin","notbefore":1624540685000,"notafter":1687958285000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDRVIqu7uo4HOgXlXyxYBl2L1arxx\\nvDfwfgnYHjgVKQpFEj+hV9YEjSECJS+YrhGr5RXZU7eRzKvfKtRI1POaww==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"vq08l/LTxhk="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571119 ST = Berlin","notbefore":1624540344000,"notafter":1687957944000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElGYxcioPZFzAfJHtsB07FzUDpJlc\\n6C18W2kcnCGEE1ujahisK6ZvE+UoSGh4ABGNQOX8RypMp4t8bzj7VAqI7w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQVb1lmz0M5mKd+bkBRWBVATA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MjQxMzEyMjRaFw0yMzA2MjgxMzEyMjRaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY1NzExMTkxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJRmMXIqD2RcwHyR7bAdOxc1A6SZXOgtfFtpHJwhhBNbo2oYrCumbxPlKEhoeAARjUDl/EcqTKeLfG84+1QKiO+jggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IYyaHR0cDovL2NybC5kLXRydXN0Lm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmyGO2h0dHA6Ly9jZG4uZC10cnVzdC1jbG91ZGNybC5uZXQvY3JsL2QtdHJ1c3RfY2FfMi0yXzIwMTkuY3JshmlsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwHQYDVR0OBBYEFPOl1obtogqRXpYoOytNDEQwwfw2MA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAyo8Tl3BdDHKQ7A0aCjpsaLkMm/dnjvsvFXknqosFO2/sCHy/I6Cp5Xr005aUWSMs9sOwbAEwIw9XbJsL9yH/WFHeW5VrR6l/qr43HC0gKOxfxvvicQvKDbMJWiG1GDgOXGV2I4NCo0puBe5ZYqmbrlXxzRWXf2wMhw+PF4dhllHXlTCkkmumRFbpzau/ORhCGBDUwAyPMfBxMv2Lb4gXxieC9uts1p43XJoxjgsq8Yn30dybv6dU58t5SodlVb3+ubz0DwJ0pa7kw1T4C7C1rJl2SP48wh2U3Y+rD6CXkwR/a1MF/JmnAB9Pl/qM5kRI6PFcKW4WaUNgo3xD/WPrkuetD7h6BcQrFmGrTz1m7FnxXfEw3VmCOmG/2R2QrnU4A9EXc/eJHVKolBtcCyDXcPBUzkhl8ba6tkAgOVEgqSIeKSmt+wQbHM4K+joLvEf+dSVijodvZP0W2hZ8mE+wG7FEpx848WJNHT2whOzXfqYVEBeKin/DPXRqi91bP8sVPRE7m59UzknpN9jxQhpFuPwEfmqI+odqjyVR3eeRZ3ZfKIpympFLMwajFaY/O8rdh/dPq2CT7GxGsjIMS3SpLSpM1xKs9NV7HYEIgmNdlmVb8rICi4/aoVXvMuqa7g2xTcL4CwikWYsq9lpwZlbXR0tW0B2eVOfP/BYXWF3jnP0=","kid":"wb/2450PPrc="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571298 ST = Berlin","notbefore":1624540865000,"notafter":1687958465000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6/QS0f7r433yqdq7XKh3OOKhOEig\\ng+VVixYEToozbg9QgAqADIZYDe3WEQnO8u8fqdzd2ouVZo54/Gc13gszYA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"wtYpyAmNmdk="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382968 ST = Berlin","notbefore":1622717573000,"notafter":1686135173000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgMhpOktfDD7Vn7Wm+BlHabFbpOs2\\nUmCVrtIpcOFpIlr8+2wHP5/VSUZslExSo284fpwuoJ5eKcjDuvlCPjZNhQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"yWCRdph8XJs="},{"issuer":"C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA","subject":"C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020007","notbefore":1635986474000,"notafter":1961714473000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESDFA3IUS71aOIaAiVxG9QDby5hfT\\nSqPSuHAagC8/vhKbIG6quGGAQjRcxbjxB2+KCt8RhSkBzTPpzX8D6iSpBA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICmDCCAh6gAwIBAgIUN7QAlQwRtBkiAZZmQo6EuSzr2TkwCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNDExNFoXDTMyMDMwMTAwNDExM1owgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESDFA3IUS71aOIaAiVxG9QDby5hfTSqPSuHAagC8/vhKbIG6quGGAQjRcxbjxB2+KCt8RhSkBzTPpzX8D6iSpBKN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFMkTYUd+m7dTqQrgXROc796CHD2sMCsGA1UdEAQkMCKADzIwMjExMTA0MDA0MTE0WoEPMjAyMjAzMDQwMDQxMTRaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjAhZylOip2hsx2QTptQMSKUwjmA5MSWxJi01hCB2cUQWYWBLRP+RzxcVC2tAnUpGiACMQDoNr7Vs/ID/BJMMHlkj9WAfb1vbY1ePMZGtGh4aNCi9B90uZczIQctXmP4w/o6G0c=","kid":"0NQWnxTv90c="},{"issuer":"C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA","subject":"C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020010","notbefore":1635987788000,"notafter":1961715787000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQEqBzWkYP17/i2b+EPcLpiQvTKLx\\nasVDjA3A7IvRt9RHjYFIQGpFQCR7ZJLD5XQNsjcFfHzxwVEITkb5M7fIyQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICmDCCAh6gAwIBAgIUNe+sDjaZPIfOw8OIMwqniNZ1ABEwCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAxMDMwOFoXDTMyMDMwMTAxMDMwN1owgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDEwMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQEqBzWkYP17/i2b+EPcLpiQvTKLxasVDjA3A7IvRt9RHjYFIQGpFQCR7ZJLD5XQNsjcFfHzxwVEITkb5M7fIyaN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFIrSwiSmYianLXQsxR6ZAFL5/ltIMCsGA1UdEAQkMCKADzIwMjExMTA0MDEwMzA4WoEPMjAyMjAzMDQwMTAzMDhaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjEA9UwmICswUwNiWRzvb4V+U0Z7qKebbIIldgtTp+nHmcme5HGjKc8UuT/yvuzzK4qoAjBvlH+kAQGZuXrSXduh+CtY20W+NEPrYV6bjDUdxQEzCxmOrsA1LWl2lHdIcLRSDdc=","kid":"dy8HnMQYOrE="},{"issuer":"C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA","subject":"C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020009","notbefore":1635987543000,"notafter":1961715542000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEn/wOHL0ulsMkJCwPvwhEPoPE2LiF\\nf9MEsma3tYaPfANxLqX4K5e6Lk9F3tvg8OtBnVBI1amxen9cOlmSRXHg+w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIClzCCAh6gAwIBAgIUfn/tDIC04XNn08DedD/Mgv0Y7Q8wCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNTkwM1oXDTMyMDMwMTAwNTkwMlowgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEn/wOHL0ulsMkJCwPvwhEPoPE2LiFf9MEsma3tYaPfANxLqX4K5e6Lk9F3tvg8OtBnVBI1amxen9cOlmSRXHg+6N8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFAHaV5pGrS6VpJVmDC3vnQ5FbGlYMCsGA1UdEAQkMCKADzIwMjExMTA0MDA1OTAzWoEPMjAyMjAzMDQwMDU5MDNaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNnADBkAjAdOz+yESmxwxVmK9YQjs4MPYfcoCxU19xPeB90YL5mB+uDH3/Kf77UTnZehqtX/m8CMA+YOej3Ymvg3flZJH/+lQ5owd4lvU4PJTxwQS/D+JroiKvnIeG6O3WT9LvnRSKwEA==","kid":"jIF6MH+OYkI="},{"issuer":"C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA","subject":"C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020008","notbefore":1635987266000,"notafter":1961715265000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+axE1mKfKiVwARulc2LnH6co1SoC\\nrfqtL11PQqYh7TBRrdawgzPokpfjoFGDkMU0ZPg7cnwilW6LnYH+vkjVhA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICmDCCAh6gAwIBAgIUapkq2mxmLiK29lTfgGNiKmLH/o0wCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNTQyNloXDTMyMDMwMTAwNTQyNVowgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+axE1mKfKiVwARulc2LnH6co1SoCrfqtL11PQqYh7TBRrdawgzPokpfjoFGDkMU0ZPg7cnwilW6LnYH+vkjVhKN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFGNFtRIN7owNYF3S4WS3IkmDxnqQMCsGA1UdEAQkMCKADzIwMjExMTA0MDA1NDI2WoEPMjAyMjAzMDQwMDU0MjZaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjEA/2L/gI6AFNxKty+dHwt8nPypmd0pJDWe5ePduw1gKQnOxqM62i95FHFMPxU6uJBjAjAmDdxcr1IdCU4RO5f6PY9AS3pdb3VAkifbZe5cu2963QvvCoyfWWFXwj/D3xsvTGk=","kid":"oMpN3FsJYsQ="},{"issuer":"C = GB ST = NI L = Belfast O = Department of Health OU = DHCNI CN = CSCA_DGC_GB_NI_01","subject":"C = GB ST = NI L = Belfast O = Department of Health OU = DHCNI CN = DSC_DGC_GB_NI_01","notbefore":1626708138000,"notafter":1689780138000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZ+fdcTa4UWA/6PT5V4a0+0j1/s++\\n4JQEsW/HvGnxxP7mGfuQDfn/FRdUMGQtTkoCGaky1gpYVZXkkoYu9ZjlUw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICWjCCAf+gAwIBAgIURUEDe5VRVC+xFuvzbQDxI+NcG3EwCgYIKoZIzj0EAwIwdzELMAkGA1UEBhMCR0IxCzAJBgNVBAgMAk5JMRAwDgYDVQQHDAdCZWxmYXN0MR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEOMAwGA1UECwwFREhDTkkxGjAYBgNVBAMMEUNTQ0FfREdDX0dCX05JXzAxMB4XDTIxMDcxOTE1MjIxOFoXDTIzMDcxOTE1MjIxOFowdjELMAkGA1UEBhMCR0IxCzAJBgNVBAgMAk5JMRAwDgYDVQQHDAdCZWxmYXN0MR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEOMAwGA1UECwwFREhDTkkxGTAXBgNVBAMMEERTQ19ER0NfR0JfTklfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARn591xNrhRYD/o9PlXhrT7SPX+z77glASxb8e8afHE/uYZ+5AN+f8VF1QwZC1OSgIZqTLWClhVleSShi71mOVTo2owaDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFK0wrYr+jzkfX//YOKxzXH7hoBxZMB8GA1UdIwQYMBaAFM8DHzf3z6ezJWzZlg9ICbLTTRxnMBYGA1UdJQQPMA0GCysGAQQBjjePZQECMAoGCCqGSM49BAMCA0kAMEYCIQDfC7E6QPDcgPAwNkK/uRJDMnUWOfslHC6CyeCKPcm3SwIhAN4tcL2/7T6HYbfNv+hfFz2mAGWLCa8wmqJcs9YsBNG7","kid":"1J9pb87ndV0="},{"issuer":"C = GB O = NHS Digital CN = England DCC CSCA","subject":"C = GB O = NHS Digital ST = Jersey CN = DSC_DCC_GB_JE_02","notbefore":1632923452000,"notafter":1695997252000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEORjyQk/KOoCEJWGfLLyqyEcOqRRr\\neyVdSH+ELi4GqqS17W4aYeOl2cvm/5unZwgCQUzB09uxYESXGmBJ3xgsEg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC8TCCApagAwIBAgIEYVCF1jAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM1MDUyWhcNMjMwOTI5MTQyMDUyWjBPMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxDzANBgNVBAgTBkplcnNleTEZMBcGA1UEAwwQRFNDX0RDQ19HQl9KRV8wMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDkY8kJPyjqAhCVhnyy8qshHDqkUa3slXUh/hC4uBqqkte1uGmHjpdnL5v+bp2cIAkFMwdPbsWBElxpgSd8YLBKjggFvMIIBazAOBgNVHQ8BAf8EBAMCB4AweAYDVR0SBHEwb4EPcGtpQG5oc3gubmhzLnVrgkpodHRwczovL3d3dy5uaHN4Lm5ocy51ay9rZXktdG9vbHMtYW5kLWluZm8vcHVibGljLWtleS1pbmZyYXN0cnVjdHVyZXMvY3NjYaQQMA4xDDAKBgNVBAcMA0dCUjByBgNVHR8EazBpMGegZaBjhidodHRwOi8vcGtpLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmyGOGh0dHA6Ly9jb3ZpZC1zdGF0dXMuc2VydmljZS5uaHN4Lm5ocy51ay9DUkwvRU5HX0NTQ0EuY3JsMCsGA1UdEAQkMCKADzIwMjEwOTI5MTM1MDUyWoEPMjAyMjAzMzEwMjIwNTJaMB8GA1UdIwQYMBaAFNouzsP3Ovv4vhBzqMTxiL0r1PHKMB0GA1UdDgQWBBRxHKzMVi9gZ9kvS9PBsjKIxWf96DAKBggqhkjOPQQDBANJADBGAiEA842nlrMUsAYRJhQv4DeltKOnR1kyBBcIiqHBRq+EIiYCIQCeUc6GkrFiI6jhQzgD5/c/A66+AiRSZ1Z3SMNM073D0w==","kid":"1PtilTAMiyk="},{"issuer":"C = GB O = NHS Scotland ST = Scotland CN = Scotland DCC CSCA","subject":"C = GB O = NHS Scotland ST = Scotland CN = DSC_PRD_GB_NSS_01","notbefore":1632935105000,"notafter":1696008905000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEr9bj163kKNBLl5bxWhZBlyJv3pHa\\n2QMb24OAdXZwJN6xx2CR03VG4DhQmd9wzVuPmw164+T7/sDmoRNOh4QbQQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDKTCCAs6gAwIBAgIEYVGffzAKBggqhkjOPQQDBDBTMQswCQYDVQQGEwJHQjEVMBMGA1UEChMMTkhTIFNjb3RsYW5kMREwDwYDVQQIEwhTY290bGFuZDEaMBgGA1UEAxMRU2NvdGxhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTcwNTA1WhcNMjMwOTI5MTczNTA1WjBTMQswCQYDVQQGEwJHQjEVMBMGA1UEChMMTkhTIFNjb3RsYW5kMREwDwYDVQQIEwhTY290bGFuZDEaMBgGA1UEAwwRRFNDX1BSRF9HQl9OU1NfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASv1uPXreQo0EuXlvFaFkGXIm/ekdrZAxvbg4B1dnAk3rHHYJHTdUbgOFCZ33DNW4+bDXrj5Pv+wOahE06HhBtBo4IBjjCCAYowDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML1NDT19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9TQ09fQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxNzA1MDVagQ8yMDIyMDMzMTA1MzUwNVowHwYDVR0jBBgwFoAUpkyHivaTZHND98x+LTp83mX+1ecwHQYDVR0OBBYEFJdsDfNoq4LpdpKboD1l1QO6vomQMAoGCCqGSM49BAMEA0kAMEYCIQCk2A3NDa/GEeAmLk0H0ryrSXR8XE1ramqYSX9/DCJ9WwIhANDgNfuShBJxUxydkgQtQ1Z348dfpLye7Dsio45DQaT5","kid":"26YSc5g0nG8="},{"issuer":"C = GB O = NHS Digital CN = England DCC CSCA","subject":"C = GB O = NHS Digital ST = Guernsey CN = DSC_DCC_GB_GG_02","notbefore":1632923277000,"notafter":1695997077000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsrcO+nNM8OkcO7IhbRh4D4D++Tgr\\n3PyGt9q6vXkSwIY6vctXRXke4WdrRtWbYzB8xGREifNxSgd6Fdik+bg44g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC8jCCApigAwIBAgIEYVCF0zAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0NzU3WhcNMjMwOTI5MTQxNzU3WjBRMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxETAPBgNVBAgTCEd1ZXJuc2V5MRkwFwYDVQQDDBBEU0NfRENDX0dCX0dHXzAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsrcO+nNM8OkcO7IhbRh4D4D++Tgr3PyGt9q6vXkSwIY6vctXRXke4WdrRtWbYzB8xGREifNxSgd6Fdik+bg44qOCAW8wggFrMA4GA1UdDwEB/wQEAwIHgDB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxMzQ3NTdagQ8yMDIyMDMzMTAyMTc1N1owHwYDVR0jBBgwFoAU2i7Ow/c6+/i+EHOoxPGIvSvU8cowHQYDVR0OBBYEFFtQNDLuwfv9Xbg7o8AKPzQnkx4cMAoGCCqGSM49BAMEA0gAMEUCIQDfWA3YY6s4hivruPkv+ro6/0mi4Vm7gY1EED8u39k+LAIgOKfybRclbzyRnz/ucnH18B2r9ZEi6z/7LnmqNZobPPE=","kid":"I0+qkOLr2e0="},{"issuer":"C = GB O = NHS Digital CN = England DCC CSCA","subject":"C = GB O = NHS Digital ST = Isle Of Man CN = DSC_DCC_GB_IM_02","notbefore":1632923398000,"notafter":1695997198000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKrPl/bqJRA4on2AtNgXUOhCwjkr8\\nkUkeol8ZMH8d6+ILPJCgc3y4d2AnGcNMIxwk/JWVjD2V0lkxSB2Hh7shtA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC9DCCApugAwIBAgIEYVCF1TAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0OTU4WhcNMjMwOTI5MTQxOTU4WjBUMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxFDASBgNVBAgTC0lzbGUgT2YgTWFuMRkwFwYDVQQDDBBEU0NfRENDX0dCX0lNXzAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKrPl/bqJRA4on2AtNgXUOhCwjkr8kUkeol8ZMH8d6+ILPJCgc3y4d2AnGcNMIxwk/JWVjD2V0lkxSB2Hh7shtKOCAW8wggFrMA4GA1UdDwEB/wQEAwIHgDB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxMzQ5NThagQ8yMDIyMDMzMTAyMTk1OFowHwYDVR0jBBgwFoAU2i7Ow/c6+/i+EHOoxPGIvSvU8cowHQYDVR0OBBYEFFyh/c31dQVmHKwncfKzVmIgj636MAoGCCqGSM49BAMEA0cAMEQCIFpZ4V77QqTvr7ExCp5Agt4ssTmrJTjStHNmIZvU40zmAiAU5Oz3FfvC+zrKARL9h4aDJ8osIvuekXfyOjP2wdxirg==","kid":"lYkujLws7SE="},{"issuer":"C = GB O = NHS Digital CN = England DCC CSCA","subject":"C = GB O = NHS Digital ST = England & Wales CN = DSC_DCC_GB_ENG_02","notbefore":1632923232000,"notafter":1695997032000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE17Mn/OPO2RQfYEZM62rPQcvhfRd6\\nZTWo1MZnPvSBMCzjuY0ZdmtsXwDHH7wDOVcTs1NSylkb+/EmC1t/7XV0Ow==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+jCCAqCgAwIBAgIEYVCF0jAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0NzEyWhcNMjMwOTI5MTQxNzEyWjBZMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGDAWBgNVBAgMD0VuZ2xhbmQgJiBXYWxlczEaMBgGA1UEAwwRRFNDX0RDQ19HQl9FTkdfMDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATXsyf8487ZFB9gRkzras9By+F9F3plNajUxmc+9IEwLOO5jRl2a2xfAMcfvAM5VxOzU1LKWRv78SYLW3/tdXQ7o4IBbzCCAWswDgYDVR0PAQH/BAQDAgeAMHgGA1UdEgRxMG+BD3BraUBuaHN4Lm5ocy51a4JKaHR0cHM6Ly93d3cubmhzeC5uaHMudWsva2V5LXRvb2xzLWFuZC1pbmZvL3B1YmxpYy1rZXktaW5mcmFzdHJ1Y3R1cmVzL2NzY2GkEDAOMQwwCgYDVQQHDANHQlIwcgYDVR0fBGswaTBnoGWgY4YnaHR0cDovL3BraS5uaHN4Lm5ocy51ay9DUkwvRU5HX0NTQ0EuY3JshjhodHRwOi8vY292aWQtc3RhdHVzLnNlcnZpY2UubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybDArBgNVHRAEJDAigA8yMDIxMDkyOTEzNDcxMlqBDzIwMjIwMzMxMDIxNzEyWjAfBgNVHSMEGDAWgBTaLs7D9zr7+L4Qc6jE8Yi9K9TxyjAdBgNVHQ4EFgQUcOpem+yb6Ti0xloFxJUhNtmBWbQwCgYIKoZIzj0EAwQDSAAwRQIhAKzGgopNYhDdfMGDBD7uzxXkwYErNfLqrMKCcv8L/JklAiBYV6GgmwXY0coHRshuWHGVEuGfQtYuFUnn3cb6snTgqg==","kid":"osFRFyFIWdU="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH01_TestedCertificate_13_10","notbefore":1634193569000,"notafter":1728887969000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwFh8HIBXfjcz7G4uPL7o\\noBpVAwoZofGJgWNr8Nstxhe4CQuGGo7Cl6QrZyQDtZovLOpcR1S5c4VIUAhegJY2\\nlBEtrIzdR/hcooabkOUyDULsPejaOcii4LtE/25rSKF/6sGyQiCLFb1u4JGlZK7C\\nGmJcXE/NYnDQDvJv6K4dhpwGIoeNFhoG2X6fDHjZemO+/BYZZjRh2BuUf/QnSpVY\\nl6bhmOuJP2EAHBiSt+2S6Xn7O+j0qF5EK5Tm6tttSOjnmz59isc35GlwloszjRn5\\nriUR2t8TYt5UEMYJY2N8iEGIpu9HiJBQyMB1kjzwc7ClwYo4/jB3zWqwZGwhjj5w\\ngwIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"1MTFjluEWHU="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201528_21_09","notbefore":1632395577000,"notafter":1727089977000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wSNYJMn6P/DgJDmQKob\\nZubHIBOAlIEG7dI+6p4uXZqyw+gXcUXaaTEEn5F9i+OMAz9GdiTlXo6dPr7LNOm0\\nyoNWNJMcmW4ePGWKpTm70Ie3YhkAzLiZ2kvTUnAKJj3q49IttvL6gj1pOOGroUyL\\nBB44JOvd21GSW2N5LCZU9JlGXmVe/xPirbMFgQx9hgcwPlmzY3OGHGwdosO6aEew\\n8fBvgHwyJfqbALRF757EpA/qNfLH+QwinigkIl613yghzslRzoejvyOz4UkKOQm1\\n8fAbBF173J/Uur4yLF7voui03QK2we21sLlW8WkS4xKDnlL/rKvnsSyTEFqsC0Jx\\njwIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"2eCjZcuOoEo="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH_1200005_0511","notbefore":1636462670000,"notafter":1731157070000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqssyXfYarvjSj+v2XSgQ\\nb6nPrpx+0p5CV98Hr4rSpcFJo8DOUf4BzWD4vpAY+kvrGrxnvBlZv+fBrnJcA46u\\nPGpE0GILlqHFxBmm8CVbAS/UFrHf9DqG0AiMD9zLBsLCW9M+6zlIQkX5CsbWbjCu\\nnJoySDBQyMmvo74EFoTpJMW05yYZA9WRSGGf6qNCPxRkXPIaO43FMLWVlTTCAnHt\\nXzHpakG5qZDULLEWZhOs78KT9oHCcTBakPb38pgUTBNwTFMPuSm57jtiqm8oPbx1\\nhxxQGb6XxMuIa/eKWIh8z1/oLORaiixxU6YNHNPFbl5oAOX6CjN6i+krI2zbpisy\\nnQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"CGFUps8kh3M="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200002_21_09","notbefore":1632395402000,"notafter":1727089802000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvJk7BZo+4PHBDZzfie8+\\nBPTzwzcBmpTFqP6dP2X6MsXmKX8a1Rww2x7/O4bBkpea+UOWGQJ+ryUDwnK0u0AJ\\nHEID7OAg/gHyK0571RIpcMsiP+rZJjg6j9s7EDIogf6cf641hjVyaWuhkvuw0Uye\\nX5SRVzFQ+eAkAHXwK50mIkIfIJ4DFDvz2Hv/JDMaeSzz9aP9XuDJYu+JX6nGJ0WF\\nmjtjQXmJ39HT4j4q4nsLZh6sHOtiqCVrOfzoOGk6HUxI7nDbqPO+4UwP2o1S82l9\\nLgQSABvFwCtox+w1AGKM/bUeyfTrEIoMAIgDiKDL7k3ks7iyiPZauvtvhSS0MeFl\\nOQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"JZhMLV9Gyck="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = COVID-certificate-CH-21-05","notbefore":1621505071000,"notafter":1716199471000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtk/51stJXU48RqD2lh4I\\ndsxFrjlJfmTCrLr3cQNEXkrEoI3OEV8NnotE1RjVmQrqLTT04oxpWlcbMolXtJBt\\nu3rOiLNwQvyVEbj/xSc6KT84Tp7GBo1P/kkunY+Vmab6HUCV/oGZYmsdiUP/OnTP\\nX6Wy6delDhnrgHIDti73/TSsG7Zl1V6km7+KIkjAkVCEDkkUD7uffd4G+GBZ0B9F\\n1KOT0IcFQNvDm0zlROVoGFlmPS8DWlrLHuIdMbB281uiDjcN+kNUt7rUyyj6TFgX\\n9WCgEB/5mQBMRaaXK1zeDTaNkmC2S7IWxhMQsMBXJyAdbD9AnQOZc6XRjBauO7gz\\n0wIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"Ll3NP03zOxY="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200001_21_09","notbefore":1632395376000,"notafter":1727089776000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvCn2NP604m2TFWnyKbIy\\nhup78wpXMM62pHod3InusDPPPFXWgVsN0NG1E65jy+W7LDY+Q719jVCC8pusghPL\\nmDze1KWwGrGdRyUGmqwFWW5sI0uxKJCsEXMRcKqKpf5NXxJlSo1FIv/ZKKFAnUt1\\nIFUzLo5HP7rqCiKlU58uk9N4puECCW3QEUIgm4mwflcR1crqY1Pdd1UxIceRTGcv\\nT0q4wN9w1fwko+grpV0N7EK2drSVVdvPYlo2fHCU+hDwTJ6AThTktzRiybznhq4F\\nqf3jEyzVFQA5W1VvAoWhMZgAxHRCZXFXex/MtGvOD4Q+ovP3m1EYX0+C/qsaSsHb\\n2QIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"TQeqi04M2ek="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201529_21_09","notbefore":1632395629000,"notafter":1727090029000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2MyDsFqh2Xhdc6PUbR+0\\nalU0hD8tT6BSJpCbigvdZAbz5slDPAIrXvyz2Aac79U6jvyyMHHDbIOL1DxU1/pc\\n7shgd/B0btHJogwQQUxyh149GnA8e1i3LLJhu8dtC4LxBPZK91nknkgrKyYU55sJ\\niQTnx2VYuF6WDBXFW4Q2EHsN+KIC68uDNousFHdw4Dk9rb4vEHLqsbY/afEZ1HmW\\nbrvN+6pPyPFh43ogvYWkVcn5JahOXQqpoePVFUAq0sdqG9DluoSXWqpyNfcTQp3W\\nCVldqsyMfAzGwceR/hKohMDXBmxAAbv5h8U05KX1xHgwAWfPPiITtqqIKt0EvFJP\\nzwIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"d+WbDD8Gr5g="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201525_21_09","notbefore":1632395556000,"notafter":1727089956000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0urbzgg7+VIvee9+u7Ti\\nW+a+xDKAhqh9CXfPS+Lydi9Y527boI6bbqZxA2qhFVWp4FFzxRYRy6pVfReokpgS\\nQvcjoR6YvRNi/HK4c44tLvz5gymhX/80oR43Gr/vOUkvne3c3SD8BN+tZlJScIt7\\nMrIm0KNWjGGBoCnswxcn2dYGNoYFvHVN/3exg+oC4oO5QU3rNyFh3PWSHIn3svZA\\nAeT3NLLdZ2inGoRyGTY3IYcPk6vj2y69wDxz/rO3kV2SpwHMCkKqcwwsdlOiqS6n\\nd6AvOpQYMRRC5mEFbB1J0g7z73YdH+WNzEsa/B25xzDrIWi/sul2INhd3q0OTw2v\\nqQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIH0zCCBbugAwIBAgIQS7iBk6cu3kpeWqdxmlvIPjANBgkqhkiG9w0BAQsFADCBtzELMAkGA1UEBhMCQ0gxHjAcBgNVBGETFVZBVENILUNIRS0yMjEuMDMyLjU3MzE+MDwGA1UEChM1QnVuZGVzYW10IGZ1ZXIgSW5mb3JtYXRpayB1bmQgVGVsZWtvbW11bmlrYXRpb24gKEJJVCkxHTAbBgNVBAsTFFN3aXNzIEdvdmVybm1lbnQgUEtJMSkwJwYDVQQDEyBTd2lzcyBHb3Zlcm5tZW50IFJlZ3VsYXRlZCBDQSAwMjAeFw0yMTA5MjMxMTEyMzZaFw0yNDA5MjMxMTEyMzZaMIHnMQswCQYDVQQGEwJDSDENMAsGA1UECAwEQmVybjEPMA0GA1UEBwwGS8O2bml6MRowGAYDVQQPDBFHb3Zlcm5tZW50IEVudGl0eTEeMBwGA1UEYRMVTlRSQ0gtQ0hFLTQ2Ny4wMjMuNTY4MSgwJgYDVQQKDB9CdW5kZXNhbXQgZsO8ciBHZXN1bmRoZWl0IChCQUcpMRQwEgYDVQQLDAtHRS0wMjIwLUJBRzEfMB0GA1UECwwWVGFza2ZvcmNlIEJBRyBDb3ZpZC0xOTEbMBkGA1UEAwwSQ0NfRVUxMjAxNTI1XzIxXzA5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0urbzgg7+VIvee9+u7TiW+a+xDKAhqh9CXfPS+Lydi9Y527boI6bbqZxA2qhFVWp4FFzxRYRy6pVfReokpgSQvcjoR6YvRNi/HK4c44tLvz5gymhX/80oR43Gr/vOUkvne3c3SD8BN+tZlJScIt7MrIm0KNWjGGBoCnswxcn2dYGNoYFvHVN/3exg+oC4oO5QU3rNyFh3PWSHIn3svZAAeT3NLLdZ2inGoRyGTY3IYcPk6vj2y69wDxz/rO3kV2SpwHMCkKqcwwsdlOiqS6nd6AvOpQYMRRC5mEFbB1J0g7z73YdH+WNzEsa/B25xzDrIWi/sul2INhd3q0OTw2vqQIDAQABo4ICpzCCAqMwKAYDVR0RBCEwH4EdY292aWQtemVydGlmaWthdEBiYWcuYWRtaW4uY2gwDgYDVR0PAQH/BAQDAgeAMIHXBgNVHSAEgc8wgcwwgckGCWCFdAERAwUCDjCBuzBDBggrBgEFBQcCARY3aHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3BzL0NQU18yXzE2Xzc1Nl8xXzE3XzNfNV8wLnBkZjB0BggrBgEFBQcCAjBoDGZUaGlzIGlzIGEgcmVndWxhdGVkIGNlcnRpZmljYXRlIGZvciBsZWdhbCBwZXJzb25zIGFzIGRlZmluZWQgYnkgdGhlIFN3aXNzIGZlZGVyYWwgbGF3IFNSIDk0My4wMyBaZXJ0RVMwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3JsL1JlZ3VsYXRlZENBMDIuY3JsMHcGCCsGAQUFBwEBBGswaTA5BggrBgEFBQcwAoYtaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvYWlhL1JlZ3VsYXRlZENBMDIuY3J0MCwGCCsGAQUFBzABhiBodHRwOi8vd3d3LnBraS5hZG1pbi5jaC9haWEvb2NzcDCBkwYIKwYBBQUHAQMEgYYwgYMwCgYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQQwSwYGBACORgEFMEEwPxY5aHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3BzL1BEUy1TR1BLSV9SZWd1bGF0ZWRfQ0FfMDIucGRmEwJFTjATBgYEAI5GAQYwCQYHBACORgEGAjAfBgNVHSMEGDAWgBQ0C77yFT6kD1cH4kFkizIR0SkLYTAdBgNVHQ4EFgQUEuWt6w+VJi0uXq5TaP3uAoBFMhMwDQYJKoZIhvcNAQELBQADggIBAEbYpFYLmRhKdyPhK2Dayb3+l9bDEfpjInWkD1jGgtIbz6VCLywv8zVRjmle72tiDRWbNrKcbB05cBSRpVWy+dExEgZ99JFl9S+VxmQA9qNmsdrzviIgGaWsjkRLE8cEvlmkWxSxrgiV7dLfM9cmBoWNHNw7xLfWGTkdNaHLdMnC9K9ZmqDQ1yyI37PPzgT0DKajHrQndAL0sX472DMFnQhT/2pfWz5QJNhN6gNHSu2wwTHwTE/COHxNw5tRoSp2N8vetTeEruIAZ8ik2/axf0AnFSM21jPVONWoeon7UT3TPLS25BjH+FffWa7s8Zn9xZkQoIXAzHKhGkEo4qA8ZEX6V5Kd/uaDwHn2w3Q741hRuIGDFmvKQ46I7EvS3j9WG/6MGk1FeA4+I9uT0iQbkFERzIMy9NGRZXnnwLD85JHIhDy4e+ZbaBpmh2P/YwI5q5zvLP0ghUkPpIt8JX0qANV2nZYGfOJse/5P6ZVAOlwbnFXtG4qAZwamFh3PPfWFzJ5oqYnRafLvaP6S4+sCCmfT8t3d+GaLuoqX+POgCe9su9+VH2u6EaSpaNc25eyDzMIejLtMFYo4RTrf6uLlXOfjSpmVimKT1nU0oAN51N0pyGkp3Owjvmc8nF1/gEbxed7YLwoPr/nree3hA+9OhnzjWxS96lTyhrheAU0tcoGy","kid":"hGUS4Zj9fLM="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201507_21_09","notbefore":1632395524000,"notafter":1727089924000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA195RM978uHXQTBanwOqW\\n5vt6WBnO8skLa7kiY4q4l8MOgSrIitQvBcnuJFiTazMTjJpdEAblB0E4mZuzvn2p\\n1I7SrFL7mwqQFrQ9GXvNp6gwBHYJrMci+J0FshxnWc9EYFFbnmixdSsyla5c4W8b\\n/pfasFYWkuCwUCGLrspMrkJ/gsWcj4h0HvlCO9hHsHlLqD/kY0y0VGUAizsah255\\nYZhTeB4ag60E93wUHt6HX0q4ngCk05S04aH9eaBF9GIuRhxrI4GEDcYIPB8GasrK\\nPIS8ufOMQsSE8uJkPhJGQblDh+fPZb2bnUPX9vUSBPTJD5XgHsPGancWrpzBGttO\\n3wIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"l+UqotarLJc="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200003_21_09","notbefore":1632395440000,"notafter":1727089840000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApU+JIe3bHtVFBRbLLcZ/\\nMHfaOB8dKwsWj7nAh8wr3Iv2+te2Kmq3MLDPZFR0q/hAAEg9gY/K1XVh74S3Zf8U\\niSm9UJgALVIsxCi96eVpa1GGUtpbQvEg7Uz43PM/vUEkAs8xA/45BtFX1WE2nQ1z\\n2PFcI3pOaJl4UHOVTA1LxEwOrAPBhlApcYwp75Gc9+KahxpJzaDR618ooV9MICYY\\ng8swv4d99u11mjgwMAZcpiNf9iIa1H4phann+5RuNLbRHebVJgBot95AJ4MrOEEq\\nIXg7LpDD9pBofVbV6IB7tuFcIjBIPJhLaUI6nLyg8oxh5NA8fKE9Nc2zbl8po84S\\nrQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"oVKwwScGxuY="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200000_21_09","notbefore":1632395333000,"notafter":1727089733000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5G85GgStNuJe4lqs7Jkb\\n7/3tBfhNTs0DDuxm0XpJIptqBLFvTLllQqMO8QI/lx1266VlfthTASK2ZpnQC6Id\\ns/NEdNrLHuGIRNktd7oaq3Priz7f96TnXiW9qX/WLL55wpXcHSmLyvEfdP7BSdyQ\\n9xrzm8bwg8cD638e69lScBeGpG04Z8hOVSQAQOBzAjSGkWPzhkah001vVev9CNcZ\\nBiL56iVox6nIJ/sgbzOlvwJDaXnKZOOXRk+xKQA+BDjjBfmvq6KvKoiRoGhvmG3g\\ntMFvXPEr+mvBkbHvzswPr6aKpbm4sFzDbbgsSb6zGJcPLhs6aMm0FaIuetyc0lxf\\nSQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"ohI9KlFR2P8="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH01_RecoveredCertificate_13_10","notbefore":1634193433000,"notafter":1728887833000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvG8EuhEV3qydjzXibNlK\\neBaRiswEivR7Ths756AhlCuY1xd1MC2qtTpledWZpdYaEr2QunzcE4OU7Tzj0Q4I\\ny6Ru12yenffGAZVxt31TpwjMioh/hICU9kh5KospkHf4wH6S2+JoK9P3stljHbJd\\ndJith9LzyzDQ+ezTVksE4KBD9iKLlvx6kOQE1LSW1lvnm89JqoY+Hlpdy0Gux8uj\\nQ+HsPG5CQc4B7DuoYEjmmWSxGIIR3tuym4UjqUpOYYdq2Ee3ahGt4qPV8mhERHwd\\nT0XeMgTbKaakfBjdQeH+Imd2IRmVaZUkgxTSXpXSCP/tus8k77BNknCtf54N5o2H\\nPwIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"rTEJEs6D1ik="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200004_21_09","notbefore":1632395497000,"notafter":1727089897000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAphhhJq5dIl4yUEbliJyc\\nkuldKiylWZZfTRQNx/k0xUFU60n9tUR4Ky1AibJHIiN/nIhSZTgwSSuALWinuEri\\nI1ROb++TsQODtC3dDFFbNIwq1sVuT1TI7o6nnGTRHxwJckNP5++obdKSZtUfT6LO\\nClxFsNoYl2EAzwb8YdcOiWNEB8gj7aY+vPL9BmECb9IRxPwhOxzPYkgLUkvqzt2U\\nzV6CFKM5t4LxM4pTICy9vlIViZTcx6FDJ78AuT2C5AbW+ILYmc6/V189uga2/PTy\\nEJyABw3gRg2BItkwy1flAjQcNIhKzshorcwGPD9EtuqpWF26DyU/HIQUabptMC6P\\nCwIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"rVPuf3yKLBg="},{"issuer":"C = HR O = AKD d.o.o. CN = Croatia DGC CSCA","subject":"C = HR O = AKD d.o.o. CN = Croatia DGC DS 001","notbefore":1621516666000,"notafter":1684588665000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV\\n5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICwDCCAmagAwIBAgIIPR9jkXY7CPEwCgYIKoZIzj0EAwIwPTELMAkGA1UEBhMCSFIxEzARBgNVBAoMCkFLRCBkLm8uby4xGTAXBgNVBAMMEENyb2F0aWEgREdDIENTQ0EwHhcNMjEwNTIwMTMxNzQ2WhcNMjMwNTIwMTMxNzQ1WjA/MQswCQYDVQQGEwJIUjETMBEGA1UECgwKQUtEIGQuby5vLjEbMBkGA1UEAwwSQ3JvYXRpYSBER0MgRFMgMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzaOCAUwwggFIMB8GA1UdIwQYMBaAFDErHKPIgGXhH70EktAlPHyGj1LRMC8GA1UdEgQoMCaBEkNyb2F0aWEuREdDQGRnYy5ocqQQMA4xDDAKBgNVBAcMA0hSVjAvBgNVHREEKDAmgRJDcm9hdGlhLkRHQ0BkZ2MuaHKkEDAOMQwwCgYDVQQHDANIUlYwZwYDVR0fBGAwXjAtoCugKYYnaHR0cDovL2RnYzEuZGdjLmhyL2Nyb2F0aWEtZGdjLWNzY2EuY3JsMC2gK6AphidodHRwOi8vZGdjMi5kZ2MuaHIvY3JvYXRpYS1kZ2MtY3NjYS5jcmwwHQYDVR0OBBYEFB55yLnz+T3ShQFs345mxQEJZb7TMCsGA1UdEAQkMCKADzIwMjEwNTIwMTMxNzQ2WoEPMjAyMTExMTYxMzE3NDZaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiANYlqMzCo7P6/FbwxS88MCB43CIBgfpJDmQ+D120Ov0gIhALJNQbk8HdHnkd31GV88U1N4YghHSZslLY8eZX8wSYR/","kid":"25QCxBrBJvA="},{"issuer":"C = HR O = AKD d.o.o. CN = Croatia DGC CSCA","subject":"C = HR O = AKD d.o.o. CN = Croatia DGC DS 002","notbefore":1636488815000,"notafter":1699560814000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsHGctEPFotenAxVqYr/5Ztl46BU9\\nhWNYAYdGWihiGzRTOgXzONqCQJqB37pacA53L7OlXPFONvT9KWYvbsVeiw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICwDCCAmagAwIBAgIIcPs80UkeH/UwCgYIKoZIzj0EAwIwPTELMAkGA1UEBhMCSFIxEzARBgNVBAoMCkFLRCBkLm8uby4xGTAXBgNVBAMMEENyb2F0aWEgREdDIENTQ0EwHhcNMjExMTA5MjAxMzM1WhcNMjMxMTA5MjAxMzM0WjA/MQswCQYDVQQGEwJIUjETMBEGA1UECgwKQUtEIGQuby5vLjEbMBkGA1UEAwwSQ3JvYXRpYSBER0MgRFMgMDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsHGctEPFotenAxVqYr/5Ztl46BU9hWNYAYdGWihiGzRTOgXzONqCQJqB37pacA53L7OlXPFONvT9KWYvbsVei6OCAUwwggFIMB8GA1UdIwQYMBaAFDErHKPIgGXhH70EktAlPHyGj1LRMC8GA1UdEgQoMCaBEkNyb2F0aWEuREdDQGRnYy5ocqQQMA4xDDAKBgNVBAcMA0hSVjAvBgNVHREEKDAmgRJDcm9hdGlhLkRHQ0BkZ2MuaHKkEDAOMQwwCgYDVQQHDANIUlYwZwYDVR0fBGAwXjAtoCugKYYnaHR0cDovL2RnYzEuZGdjLmhyL2Nyb2F0aWEtZGdjLWNzY2EuY3JsMC2gK6AphidodHRwOi8vZGdjMi5kZ2MuaHIvY3JvYXRpYS1kZ2MtY3NjYS5jcmwwHQYDVR0OBBYEFIZqz9SFr6ueNBY4r/u1ZNovF+WlMCsGA1UdEAQkMCKADzIwMjExMTA5MjAxMzM1WoEPMjAyMjA1MDgyMDEzMzVaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiALjpDpXS59EIpkdvCjEAdR6UPq41CbnhWAat7dGT8+zwIhAOdLwTxsmuRttRDg6ZX0CGxwjHFu7NfxCwqdrOd8n50E","kid":"IoybU6axZJE="},{"issuer":"C = HU ST = Budapest L = Budapest O = EESZT CN = DGC_CSCA_HU_PRD_20210621_01","subject":"C = HU ST = Budapest L = Budapest O = OKFO CN = DGC_DSC_HU_PRD_20210628_01","notbefore":1624889734000,"notafter":1687961734000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadM\\nS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICnDCCAkGgAwIBAgIUa/gUnrKtSo4XzXVTPkV2APtPwXEwCgYIKoZIzj0EAwIwaTELMAkGA1UEBhMCSFUxETAPBgNVBAgMCEJ1ZGFwZXN0MREwDwYDVQQHDAhCdWRhcGVzdDEOMAwGA1UECgwFRUVTWlQxJDAiBgNVBAMMG0RHQ19DU0NBX0hVX1BSRF8yMDIxMDYyMV8wMTAeFw0yMTA2MjgxNDE1MzRaFw0yMzA2MjgxNDE1MzRaMGcxCzAJBgNVBAYTAkhVMREwDwYDVQQIDAhCdWRhcGVzdDERMA8GA1UEBwwIQnVkYXBlc3QxDTALBgNVBAoMBE9LRk8xIzAhBgNVBAMMGkRHQ19EU0NfSFVfUFJEXzIwMjEwNjI4XzAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadMS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/KOByDCBxTAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFLfwN2b/BblsB3wY92Sbxbc7QOmZMB8GA1UdIwQYMBaAFPHcUjbpr2UPGVKQEwKXLMGD4sDTMEEGA1UdHwQ6MDgwNqA0oDKGMGh0dHBzOi8vd3d3LmVlc3p0Lmdvdi5odS9jcmwvZGNjL0NTQ0FfUFJEXzAxLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCxhu4NSIKO9F8jlaxe3EqAIDoPAaF5A9+GPy03W0PpVQIhAL12JyQzJ9f7qnLapDMUSf6HD0+AMNHl9BjHZphNBUlu","kid":"4GkJs9YsYS4="},{"issuer":"C = SK ST = SK L = Bratislava O = NCZI OU = DGCOperations CN = CSCA_DGC_SK_01","subject":"C = SK L = Bratislava O = NCZI OU = DGCOperations CN = DGC_01","notbefore":1599004800000,"notafter":1725148800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6qxT6sSK3TDheWFHTBkfveooRhtU\\nWqEqrELD9B7aAk7xjPS3MBETtmnWb4nRzBINvFwrLDxQCqTX8Jevp33c4Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICVTCCAfqgAwIBAgIUSfAlV5Ro7+hRqRa9kH4Un95XIGQwCgYIKoZIzj0EAwIwbzELMAkGA1UEBhMCU0sxCzAJBgNVBAgMAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMRcwFQYDVQQDDA5DU0NBX0RHQ19TS18wMTAeFw0yMDA5MDIwMDAwMDBaFw0yNDA5MDEwMDAwMDBaMFoxCzAJBgNVBAYTAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMQ8wDQYDVQQDDAZER0NfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATqrFPqxIrdMOF5YUdMGR+96ihGG1RaoSqsQsP0HtoCTvGM9LcwERO2adZvidHMEg28XCssPFAKpNfwl6+nfdzho4GIMIGFMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUj9izCT/z9ccQUX6CeZ0ns8Zu0SMwHwYDVR0jBBgwFoAUm9JYe8TeF7J1Gm8LZ2DfcBXXLHMwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNJADBGAiEA1jDNVMcnPoIOaGxeFRKaRZ8MrwR6xmmv0F0I0l5wKuUCIQDnaar37bg6T8i3rJp6KHQkJqJ1NSnc0Qltw1qghCJC0g==","kid":"6CDB1hL+uKU="},{"issuer":"C = TG ST = MARITIME L = LOME O = MENTD OU = DCA CN = e-certs.gouv.tg E = support_it@support.gouv.tg","subject":"C = TG ST = MARITIME L = LOME O = INH OU = INH CN = inh.tg E = wemboo.halatoko@inh.tg","notbefore":1637830480000,"notafter":1700902480000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/t+Slm3djgmEU6EDiHQ9NbBluAow\\nmiJ1WRBnCP8M+zS4nz8F8i3999918JYKA4wJni8OaHwhzb+ay8KJIxhNFA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC2zCCAoGgAwIBAgIULouI8zvjFtrALV9M/d6BMSwuJGMwCgYIKoZIzj0EAwIwgZIxCzAJBgNVBAYTAlRHMREwDwYDVQQIDAhNQVJJVElNRTENMAsGA1UEBwwETE9NRTEOMAwGA1UECgwFTUVOVEQxDDAKBgNVBAsMA0RDQTEYMBYGA1UEAwwPZS1jZXJ0cy5nb3V2LnRnMSkwJwYJKoZIhvcNAQkBFhpzdXBwb3J0X2l0QHN1cHBvcnQuZ291di50ZzAeFw0yMTExMjUwODU0NDBaFw0yMzExMjUwODU0NDBaMIGDMQswCQYDVQQGEwJURzERMA8GA1UECAwITUFSSVRJTUUxDTALBgNVBAcMBExPTUUxDDAKBgNVBAoMA0lOSDEMMAoGA1UECwwDSU5IMQ8wDQYDVQQDDAZpbmgudGcxJTAjBgkqhkiG9w0BCQEWFndlbWJvby5oYWxhdG9rb0BpbmgudGcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT+35KWbd2OCYRToQOIdD01sGW4CjCaInVZEGcI/wz7NLifPwXyLf3333XwlgoDjAmeLw5ofCHNv5rLwokjGE0Uo4HBMIG+MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUX0ifcWO3ft5jnss/sOmn05KXgJ0wHwYDVR0jBBgwFoAUJFqHPi2oSniAyBTIA4WUfx9rajQwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cHM6Ly9lLWNlcnRzLmdvdXYudGcvY3JsL2hjZXJ0L2NvdmlkMTkwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAKBggqhkjOPQQDAgNIADBFAiEAqCcu7hOCqNW7QeuBSElenRiUCB7vD+JFbCepz9EOBKkCIEoPgp6HBsSdUbe7aa8LO4/AbCx+ByLBpLAUxWcO0wNX","kid":"6ptpKJA1J90="},{"issuer":"C = LT O = State Enterprise Centre of Registers CN = LT_DGC_CSCA_1","subject":"C = LT ST = Lithuania O = Ministry of Health of The Republic of Lithuania CN = LT_DGC_DSC_2","notbefore":1625090401000,"notafter":1688162401000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsIcppmCVhq96vMc4NtW8\\nX+yV6O1oC7hfKnewK1/pxfByqlVTPpETDLAjNq9knNQpCs7vGjadCbDAylsQRK7q\\nfU3sUUKamh6FgDhFo1dzC4mUHCy3XBL04XJie2eT/a6Wgjrn6NjEFk5M4Jl4N8u/\\nRbfaVxqaOjUM0hBfuzfZeL2LT30POqDHj1hcyod1fIbG4vv2Upqxe3OX/WLr+WzS\\nPbRkPwxcJjmYeNYODT0rEcd9VSzJpljaK+eDVwxT0wMRnCH2QLxdw8sR+oDYDTZB\\naabeHYyZ0CfYzSoBOZT3fVMAbjkVAl8GFyH8tUm4lMQbYEMbl/FkftcZQicaqvRd\\nQQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIFBDCCArigAwIBAgIGAXpe76SiMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYzMDIyMDAwMVoXDTIzMDYzMDIyMDAwMVowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCHKaZglYaverzHODbVvF/slejtaAu4Xyp3sCtf6cXwcqpVUz6REwywIzavZJzUKQrO7xo2nQmwwMpbEESu6n1N7FFCmpoehYA4RaNXcwuJlBwst1wS9OFyYntnk/2uloI65+jYxBZOTOCZeDfLv0W32lcamjo1DNIQX7s32Xi9i099Dzqgx49YXMqHdXyGxuL79lKasXtzl/1i6/ls0j20ZD8MXCY5mHjWDg09KxHHfVUsyaZY2ivng1cMU9MDEZwh9kC8XcPLEfqA2A02QWmm3h2MmdAn2M0qATmU931TAG45FQJfBhch/LVJuJTEG2BDG5fxZH7XGUInGqr0XUECAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUPZCkpW9sE+8wWf3UeVmVyI2yuKMwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQAh3n6+6+wrWjfQc0PYua+M5sB7QMU1K0jo3Hs+lwYiMEnIZNbdQgnuNAYHm4cf3Qy1YLt9XkMQdzwRz3kbSUQ4iythOby2GBEgCZ7fr17h/2o7VL9QC+hMUqsBXWYEQ1JuYz/L64X60sbIgt2qLy+oeA4WEVc1Yuz7DQsJG0qZRovVQvRy0cL7RHc6uiraaUxsKX7WFzNf6KlT1C1GeFJzcPSTclYMtHR3UgecUEaEenPciPMmUsJY5AOmZqxvJT62Nit9iuR18SieBNK+rJTrmxF4AV5Q7PE7Dhq5HBZhy7gE0UG1XfvSVSIcJcbMiDLxa+lXCFCVOf7drq2CaaIc6UQ0UXTeVmdbkJPid1/pvGLbIyL4UmOqxpzETcIRJKtvhF3UF1cD86/V/77qtZh0UeoCMGSdarZFvWB4As4PrEuvJB6Sfo1D++dCfQkfFEhQZO7wk1zLUB3Pqip2Io3eLn1oXMPxqtoYYH1vGv3HANhd8hVuO3ujYQgb9InLCnl7qPix5f8QrnRA4q72gpofoBnfGziMAyo9EKBib72waWaIpHi8Aw1XJntpHwld0gOV/cs/BquYdtqJpdW2FpoUvP4SbbxUVyDub+Uu2+Q9LKuIFlG4fqgRCUQ5NbgB5wmTxlYEc0xTb/VNICUtDSga4Fjeznm5l0oc4NoS6G4wzw==","kid":"7AfAwcpWOv0="},{"issuer":"C = LT O = State Enterprise Centre of Registers CN = LT_DGC_CSCA_1","subject":"C = LT ST = Lithuania O = Ministry of Health of The Republic of Lithuania CN = LT_DGC_DSC_1","notbefore":1623009026000,"notafter":1686081026000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnhBpxzeGXNlQs7U+j/Av\\n1BUZ6CCgMR3bFLT4rRjO8KQ4IpAKqSCQ3j57MJqdumk3AUfHO5zhMZF4Awy0wqV3\\noFlyP49/56KKZxGARe5UkyfPjVbl8AZpLmgYoS/Ior53TLrwmT/+zvXynzFYbOi2\\nOtCtqanG+9OUhSVRrXEEB+56PpCltE31wemX1behxDuCbE4tuqyTYODFw9Le3dGC\\nbHWdjxi5W3XIUNo8j2u2PKue0KS76Xv0zAYItTgChgv7mM55/G109m4MfeU7AHah\\n43bJth8K8y+SxG3RYHskmNZ7sfn3w8w7WyW7D3/tKHcMt3hgIh9z3DuWeR1C296J\\nyQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIFBDCCArigAwIBAgIGAXni4GKHMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYwNjE5NTAyNloXDTIzMDYwNjE5NTAyNlowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ4Qacc3hlzZULO1Po/wL9QVGeggoDEd2xS0+K0YzvCkOCKQCqkgkN4+ezCanbppNwFHxzuc4TGReAMMtMKld6BZcj+Pf+eiimcRgEXuVJMnz41W5fAGaS5oGKEvyKK+d0y68Jk//s718p8xWGzotjrQrampxvvTlIUlUa1xBAfuej6QpbRN9cHpl9W3ocQ7gmxOLbqsk2DgxcPS3t3Rgmx1nY8YuVt1yFDaPI9rtjyrntCku+l79MwGCLU4AoYL+5jOefxtdPZuDH3lOwB2oeN2ybYfCvMvksRt0WB7JJjWe7H598PMO1sluw9/7Sh3DLd4YCIfc9w7lnkdQtveickCAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUwMNfEDstM4gYK8a8WQno8Qt1IZQwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQANsbkQ7P3OljNurVYmgB4g/76/tLMzbRExCuUltzxJW1zVZb4juuHNkmjIsUupaiYG8F8fQJpeRam2qgaPaPWqTYwn1lm8K+Ab4jE+9F6nyTJfvI2+BzOcGFsTUr+6If2YafJE9UMCeQWGP1kLX5srtQVTvb7fNHHnEvmijdKoqPv8Xcnkl6j53aZjeM6RrpSqrdtneHwquq9OWnjuKVDGZ1bDiIl52wjCQ+GLczPUtHai+qHNmhOibiT+JoT//fDb96vHlf40Y39zyxRFx0kx9zws8CbAPtvJOfWg6OjY50ARZRfixc6uFrCmnHtpzfcO3f+XwPBIBmvTjphZDGRqNjP46wqUv5vfpquIprhNef+jYi3k+719IBn5QuBNq4vJcMYHitK4WJ24TIxemq5YIXQYQct4t90V04Byhz7phox5P2rZJl3VBOSss7bGu64qc5Dh96joLLHFLChqqqDbhq7RI6Gl8Yn0ShUMg3WTbktTQ9dpGzYdH3wbbuMbzvGOYRTqTVGBH8eb9KJbgC0cDDhelHNXUcwn3Vvbdx3Y9KB2y50VTs9ZcawH52o4BuNwx3vO/L3Eq2EnkIZ2mobJDIGbBJUN2ttBim5muQxgEKns/QgNTpEZgBTkFjQ7mB7gIC8SHDDmU5wXe5aA3GN5/Gl5aUc3rHDmnZQKax63jw==","kid":"lshLbYfCWRg="},{"issuer":"C = CY ST = Nicosia L = Nicosia O = Ministry of Health OU = IT Department CN = CSCA_EUDCC_CY_01","subject":"C = CY ST = Nicosia L = Nicosia O = Ministry of Health OU = IT Department CN = DSC_EUDCC_CY_01","notbefore":1624533802000,"notafter":1686741802000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7S/R06707Glu721qJqvxIFzQ2LSb\\nq9P2uu6nRKCBLsH5ryP3wXpggL6hGh080F462bGLTuI/hXrxEB2kR2Vjww==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICjzCCAjWgAwIBAgIJAPS0Vbm3L3MTMAoGCCqGSM49BAMCMIGBMQswCQYDVQQGEwJDWTEQMA4GA1UECAwHTmljb3NpYTEQMA4GA1UEBwwHTmljb3NpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRkwFwYDVQQDDBBDU0NBX0VVRENDX0NZXzAxMB4XDTIxMDYyNDExMjMyMloXDTIzMDYxNDExMjMyMlowgYAxCzAJBgNVBAYTAkNZMRAwDgYDVQQIDAdOaWNvc2lhMRAwDgYDVQQHDAdOaWNvc2lhMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxGDAWBgNVBAMMD0RTQ19FVURDQ19DWV8wMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO0v0dOu9Oxpbu9taiar8SBc0Ni0m6vT9rrup0SggS7B+a8j98F6YIC+oRodPNBeOtmxi07iP4V68RAdpEdlY8OjgZQwgZEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2NybC5ldWRjYy5nb3YuY3kvZHNjLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMCsGA1UdEAQkMCKADzIwMjEwNjIzMDAwMDAwWoEPMjAyMzA2MjMwMDAwMDBaMAoGCCqGSM49BAMCA0gAMEUCIQCL2pPCMNugzz3sGPDO02C6oMYvlkj6lfxPbckgmegv6QIgANPWEyptdWnK8y0WpU85VROr4cjobAkRNioquyCln00=","kid":"7rZbUrXNlLk="},{"issuer":"C = NO O = Norsk helsenett SF CN = NO NHN CSCA PROD","subject":"C = NO O = Norwegian Institute of Public Health CN = DSC HN EU 2","notbefore":1623057373000,"notafter":1686129973000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErbWQM5hj5SeR23DzCV0TVKrFhfYs\\nmNVVSbPFxwyw4ZEfersZ3bp2h+rw2BhbLbzVHZIwWfnhaKZ72+JciUksFQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICLzCCAdWgAwIBAgITWQAAAAMkF9vUXhL/vwAAAAAAAzAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYwNzA5MTYxM1oXDTIzMDYwNzA5MjYxM1owUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEhOIEVVIDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASttZAzmGPlJ5HbcPMJXRNUqsWF9iyY1VVJs8XHDLDhkR96uxndunaH6vDYGFstvNUdkjBZ+eFopnvb4lyJSSwVo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBTjjLs+qOV9Ef2iKzss4qIJTpVymjAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIFoTcS0308Htrwu8gtsc1YX2679u/+UjB6i3iG4BvUGFAiEAirH6ggtWwXqXH94+kfwQ0A5q0pPGCdik4BIlnYmnpMk=","kid":"7z8+6oww2a8="},{"issuer":"C = NO O = Norsk helsenett SF CN = NO NHN CSCA PROD","subject":"C = NO O = Norwegian Institute of Public Health CN = DSC AN EU 5","notbefore":1623749441000,"notafter":1686822041000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfBeQBQBjyKpvjsCujqi15xnygRMy\\nhjNsEy198LzTYuB+Mje1lxIvPYkfO/PEHQFgA52gn26bHCXE75GWqq6UMw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICLzCCAdWgAwIBAgITWQAAAAY+BhnAubZsywAAAAAABjAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzA0MVoXDTIzMDYxNTA5NDA0MVowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR8F5AFAGPIqm+OwK6OqLXnGfKBEzKGM2wTLX3wvNNi4H4yN7WXEi89iR8788QdAWADnaCfbpscJcTvkZaqrpQzo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRQ+3DSiNYiK7x+Rm48SPxVU66ILzAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIQCpipDAPcRMuFYLkVIA2qxW3bikYzJzNxdvnqzDMMitFAIgFt8q+4FM53rl4bfBzwnQRpXDLaGc4bdKC0wcjBUHKyQ=","kid":"Er5OTMwLd78="},{"issuer":"C = NO O = Norsk helsenett SF CN = NO NHN CSCA PROD","subject":"C = NO O = Norwegian Institute of Public Health CN = DSC AN EU 4","notbefore":1623749426000,"notafter":1686822026000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElH46JUamhvfj2ocSTxw9Eq7nVdP9\\nOzBOxQ/zaWNXN5ucagla6nruNqfDiZXQMcz4gpZ6pcjtJl+xra2ATzZ9Pw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICMDCCAdWgAwIBAgITWQAAAAVu7yCnw/v4agAAAAAABTAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzAyNloXDTIzMDYxNTA5NDAyNlowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASUfjolRqaG9+PahxJPHD0SrudV0/07ME7FD/NpY1c3m5xqCVrqeu42p8OJldAxzPiClnqlyO0mX7GtrYBPNn0/o4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBSLtW/xwBSwzLlO3mNEzuueB3HOOTAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0kAMEYCIQDhu8xPp4rym01BCIlLAPB4UftU+yrPjxnsEPk+q4Bk4wIhAKVSgCN39hpSqqb5ErHWJdTp6+zJalGHg3Oj990zNYBY","kid":"cdm9Ymfwn2I="},{"issuer":"C = IT O = Ministero della Salute CN = Italy DGC CSCA 1","subject":"C = IT O = Ministero della Salute CN = Italy DGC DSC 3","notbefore":1636724505000,"notafter":1699796504000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwlU23NYZQba7t++TVejbvPxgS6w\\ndW8uE7UPe14VkhXoKINhhrCT0EWHP+aPim6apT46Ktd0lfoNVTsbg2QQ2A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEDzCCAfegAwIBAgIUdtfIwH49VX3gzjg7sw1okOP/KAIwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjExMTEyMTM0MTQ1WhcNMjMxMTEyMTM0MTQ0WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwlU23NYZQba7t++TVejbvPxgS6wdW8uE7UPe14VkhXoKINhhrCT0EWHP+aPim6apT46Ktd0lfoNVTsbg2QQ2KOBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFCR9+jzaaoSYO/7wB8YLfAk4Vw1FMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAokc+BGagX9kFseWotrm4fPrXBm6JLAxn9rC/Mz1awCXehbinERs+AVl029UApYXNp3/wiA57/9z1NkmMtZspBn1b0rJ4WP5hcRDhcsXxFvkSNx03/LwTCBi9iJSFNDQSv6bq8+YVSenamvwGJ+wNpemAIthrPshIGU2+MEipWhFmERYE6JaGJVFGs6n8r4IHzOx3gKeyUoGK2p4vM0Aw4LCfaqffEQz47lVMi+dDk3/h6CWWKZ6//+/15DKsuuj+BBAt9HBaqKAgCQke8RVceGJ1dsZFUW0yuCMqCSmoc3pksjQghYki9p4gs8Ex9khXCusRnCw81sG7VGrZgiDCEGHtbny774/CLCFNDpPC/CJLSEiyDP2exV6um2NEtAqQvGPlCdKVxHiLJ1FkunuHV0zYMLQi4+5mjAWbs4DuTgsOfkuZoJ7t8lFp9rqx3maNrew8Dw/w2nTuOHfk5f4xb99nlVXqA0rUPejZ/kf4ajU2AXrszxLAGXZnopryEcCSzxUSu1vRnv9NMtneTn3l0fDQTwPFVV2zquQUwl85Rm672r12Lupisn74UgwKgElxkgHjNRry++64ULoksydKWMz78ElfLV1tws8xoEx8I744pxsq7DTK52tcFuIZjASIfley6AbGLWzu8DUVGA3o/ANbavT56O8sXlT2OGipPx0=","kid":"8hilYZIP6uI="},{"issuer":"C = IT O = Ministero della Salute CN = Italy DGC CSCA 1","subject":"C = IT O = Ministero della Salute CN = Italy DGC DSC 1","notbefore":1620807497000,"notafter":1683879119000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/\\njbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehojw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEDzCCAfegAwIBAgIURldu5rsfrDeZtDBxrJ+SujMr2IswDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjEwNTEyMDgxODE3WhcNMjMwNTEyMDgxMTU5WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/jbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehoj6OBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFC4bAbCvpArrgZ0E+RrqS8V7TNNIMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAjxTeF7yhKz/3PKZ9+WfgZPaIzZvnO/nmuUartgVd3xuTPNtd5tuYRNS/1B78HNNk7fXiq5hH2q8xHF9yxYxExov2qFrfUMD5HOZzYKHZcjcWFNHvH6jx7qDCtb5PrOgSK5QUQzycR7MgWIFinoWwsWIrA1AJOwfUoi7v1aoWNMK1eHZmR3Y9LQ84qeE2yDk3jqEGjlJVCbgBp7O8emzy2KhWv3JyRZgTmFz7p6eRXDzUYHtJaufveIhkNM/U8p3S7egQegliIFMmufvEyZemD2BMvb97H9PQpuzeMwB8zcFbuZmNl42AFMQ2PhQe27pU0wFsDEqLe0ETb5eR3T9L6zdSrWldw6UuXoYV0/5fvjA55qCjAaLJ0qi16Ca/jt6iKuws/KKh9yr+FqZMnZUH2D2j2i8LBA67Ie0JoZPSojr8cwSTxQBdJFI722uczCj/Rt69Y4sLdV3hNQ2A9hHrXesyQslr0ez3UHHzDRFMVlOXWCayj3LIgvtfTjKrT1J+/3Vu9fvs1+CCJELuC9gtVLxMsdRc/A6/bvW4mAsyY78ROX27Bi8CxPN5IZbtiyjpmdfr2bufDcwhwzdwsdQQDoSiIF1LZqCn7sHBmUhzoPcBJdXFET58EKow0BWcerZzpvsVHcMTE2uuAUr/JUh1SBpoJCiMIRSl+XPoEA2qqYU=","kid":"NJpCsMLQco4="},{"issuer":"C = IT O = Ministero della Salute CN = Italy DGC CSCA 1","subject":"C = IT O = Ministero della Salute CN = Italy DGC DSC 2","notbefore":1636724438000,"notafter":1699796437000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhX3UYfApjRF+CwtZqZJga6pwzbvN\\nic585TOlc0qa2DbRcer1H3FYNY1HErSbo3+tOLiYkPHbrbQdLTE05rymtA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEDzCCAfegAwIBAgIUUfSAdqIwpkqwXjDhZ+0JdUPaICAwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjExMTEyMTM0MDM4WhcNMjMxMTEyMTM0MDM3WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhX3UYfApjRF+CwtZqZJga6pwzbvNic585TOlc0qa2DbRcer1H3FYNY1HErSbo3+tOLiYkPHbrbQdLTE05rymtKOBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFNyqHmbZQ9GcMJjdpjpoJXEwFn/8MA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEART1krCdKJhBVe9N4ydQ2UGQlgjEL1OgHj1s0TNCQKL3kEwYcafkKstW0vtsFi1ZGKrfgWkXCcWwkl5/NxfRNoSACApZog4cgSYDlgxa2G7KAoXa7xLuN2ADMEK02zXY5tGnd7Sv6Jl2nMfuUXMirAotr1vA6QETSDmbQNJqyKciDOQkdjxL1mGKhDzeneYRxLeKkOVox/X0uPguRYT2NS7jr2U7S3Z48667Ow46YLAI6n7IZGodn7Wktz1aqFWPGoBhJ2Y5C/QvBjzWn/0WfLBX65cchOdkZoYvfJcnbWS7Z7N/G1V2/CNYNr09EHiZnsmdcsqBX/ywyIGdybCGbx3cDqXsOBfcjH5Jy8moe7QL3oEraUDUEk5JF7un17GcdB4pjOlB8e1AWEthMpa2UMUw/vox1TCUjZ3pZa4rYn+yhcBoA6dYgu8B2HXcNFAE2S35XXDT15C0LvYh858UvtWSLoRmwyrkbNr7ImtgVrdzOKhIEetbmKLdM7fB7kcsYWZ05LTD3VsA2A8AHCOZ2noI4f50pd+VF1FtOz8ogRrCvHz7TJ4T7Kg6aIq/K1zlu06LaJQj2s8f4mJeCYZBfYmm4uywO2PHI8Hcv5MwTrbQ27CuvBkayfIToNOrNLsI8qlcE20Vfei/rLFAGWQoF0xVoJ+boNIBtwn/NBJDtIb4=","kid":"zrMytIH40Rk="},{"issuer":"C = SI O = NIJZ, National Institute of Public Health of Slovenia OU = NIJZ eHealth CN = Slovenian Digital Covid Certificate CSCA","subject":"C = SI O = NIJZ, National Institute of Public Health of Slovenia OU = NIJZ eHealth CN = Slovenian Digital Covid Certificate Signer","notbefore":1622793213000,"notafter":1685865213000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEmxEg2iFDaol9DVnrqIY5zkPXrBA\\nNQlakmUfrBhogaDC2ZZ7fkQ2IcOJgEF4rQSyb34g5jDw88g7QaIknaLKMw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC6jCCApCgAwIBAgIUJUAGAXpxHsU1S82LcnISggTrZYcwCgYIKoZIzj0EAwIwgZcxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTEwLwYDVQQDDChTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBDU0NBMB4XDTIxMDYwNDA3NTMzM1oXDTIzMDYwNDA3NTMzM1owgZkxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTMwMQYDVQQDDCpTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQSbESDaIUNqiX0NWeuohjnOQ9esEA1CVqSZR+sGGiBoMLZlnt+RDYhw4mAQXitBLJvfiDmMPDzyDtBoiSdosozo4G1MIGyMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUhB9+YwGh9z/Z2AFAekINW9AqzMwwHwYDVR0jBBgwFoAU1u0NkxR1dJeR9jh6pZ04KsvRFV8wMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzArBgNVHRAEJDAigA8yMDIxMDUyODEwMDAwMFqBDzIwMjIwNTI4MTAwMDAwWjAKBggqhkjOPQQDAgNIADBFAiEAgD02EKWZhDUblN1geYhOR8UYvbz1kKcncPzq4Y7SgS0CIEsbjBaDw8vWDqXsbDg7gckdK6SuF16w9Uvr/peExozy","kid":"90CNG8dcdn0="},{"issuer":"CN = Poland DGC RootCSCA 1 O = Ministry of Health C = PL","subject":"CN = Poland Test DGC Service 1 OU = eHealth Centre O = Ministry of Health C = PL","notbefore":1622029825000,"notafter":1685101825000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERG4yI/SSv70zEtVjzIrn/CypR1e0\\nBZO5u8bIgltZicrg+992n2a7GucxK6zy91xq8F8XH7B0SJU75qkr8Z1d9A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIChjCCAiygAwIBAgIISPHH9eN/DsUwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTAyNVoXDTIzMDUyNjExNTAyNVowZzEiMCAGA1UEAwwZUG9sYW5kIFRlc3QgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAREbjIj9JK/vTMS1WPMiuf8LKlHV7QFk7m7xsiCW1mJyuD733afZrsa5zErrPL3XGrwXxcfsHRIlTvmqSvxnV30o4HeMIHbMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQUJtco+4DwjQXe7tYA2X0svBWc8aowKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTUwMjVagQ8yMDIyMDUyNjExNTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQD0aM2oui9agdjvs3W3CBnJzNj1QTn86txDT8z4f92U/QIgdfA1+c567xA4y/11vguxxe9nDHAtAAEpXe8FkupyFTk=","kid":"AN1EeLIMAmo="},{"issuer":"CN = Poland DGC RootCSCA 1 O = Ministry of Health C = PL","subject":"CN = Recovery DGC Service 1 OU = eHealth Centre O = Ministry of Health C = PL","notbefore":1622029789000,"notafter":1685101789000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdxvWMfuk6CHCbffZWPS6bRgVYglY\\ndED1NT1FCfXstUZ81AWmYOh6tbZgOF9OM1lzqdpFD1uOmEZ0A8XXYmkB1A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICgDCCAiagAwIBAgIINrcF73thXScwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNDk0OVoXDTIzMDUyNjExNDk0OVowZDEfMB0GA1UEAwwWUmVjb3ZlcnkgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3G9Yx+6ToIcJt99lY9LptGBViCVh0QPU1PUUJ9ey1RnzUBaZg6Hq1tmA4X04zWXOp2kUPW46YRnQDxddiaQHUo4HbMIHYMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQU88MJtD/tgeFEqpb+Her86lI3G3UwKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTQ5NDlagQ8yMDIyMDUyNjExNDk0OVowCwYDVR0PBAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQDA6URDSMLbEYaFP1V1bfDlZDE5aANs8FcjghZGnadrHwIgbCe6gwSV5PAMwGXMgtbf9ItPzgFxV67mZzvH+avXOck=","kid":"FDNJjaSCWi0="},{"issuer":"CN = Poland DGC RootCSCA 1 O = Ministry of Health C = PL","subject":"CN = Poland Vaccination DGC Service 1 OU = eHealth Centre O = Ministry of Health C = PL","notbefore":1622029990000,"notafter":1685101990000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3N\\nVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICiTCCAjCgAwIBAgIIPrgTduwYL84wCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTMxMFoXDTIzMDUyNjExNTMxMFowbjEpMCcGA1UEAwwgUG9sYW5kIFZhY2NpbmF0aW9uIERHQyBTZXJ2aWNlIDExFzAVBgNVBAsMDmVIZWFsdGggQ2VudHJlMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3NVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78qOB2zCB2DAfBgNVHSMEGDAWgBSReaLaaIESwKN0GqS63esPmeyLATAWBgNVHSUEDzANBgsrBgEEAY43j2UBAjBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vcDEuZXpkcm93aWUuZ292LnBsL2NjcDEvY3JsL0RHQ1Jvb3RDU0NBMS5jcmwwHQYDVR0OBBYEFEfkBAHCnTR6Ar66rg0lwacUkD9aMCsGA1UdEAQkMCKADzIwMjEwNTI2MTE1MzEwWoEPMjAyMjA1MjYxMTUzMTBaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiBrwE3IHj2Vjq71fA3jNBz/Hso3xXhVtPXa42JcfDJrvgIgLsib0ZAxm3ERXePd4Nlgvt+lISofEHlIi+CEBpJd5sE=","kid":"HhkeqvrtQ0U="},{"issuer":"CN = DGC Country Signing CA OU = Public Service Development Agency O = Ministry of Justice of Georgia C = GE","subject":"CN = DGC DS Signer 2 OU = LEPL Information Technologies Agency O = Ministry of Internally Displaced Persons From the Occupied Territories, Labour, Health and Social Affairs of Georgia C = GE","notbefore":1635527288000,"notafter":1698599287000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OUh2s00z3fKc2NTrYN+8SQERWvy\\n3gRdGsmjrGMZQ9nZPT3bYLYDuyuhpYfQ8CSOuU2bScmWN9xthX3T6V1T8g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDLTCCAtKgAwIBAgIUbq8e2Rnwzdt8bImI5KhdT7wvIZIwCgYIKoZIzj0EAwIwgYMxHzAdBgNVBAMMFkRHQyBDb3VudHJ5IFNpZ25pbmcgQ0ExKjAoBgNVBAsMIVB1YmxpYyBTZXJ2aWNlIERldmVsb3BtZW50IEFnZW5jeTEnMCUGA1UECgweTWluaXN0cnkgb2YgSnVzdGljZSBvZiBHZW9yZ2lhMQswCQYDVQQGEwJHRTAeFw0yMTEwMjkxNzA4MDhaFw0yMzEwMjkxNzA4MDdaMIHVMRgwFgYDVQQDDA9ER0MgRFMgU2lnbmVyIDIxLTArBgNVBAsMJExFUEwgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIEFnZW5jeTF9MHsGA1UECgx0TWluaXN0cnkgb2YgSW50ZXJuYWxseSBEaXNwbGFjZWQgUGVyc29ucyBGcm9tIHRoZSBPY2N1cGllZCBUZXJyaXRvcmllcywgTGFib3VyLCBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzIG9mIEdlb3JnaWExCzAJBgNVBAYTAkdFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OUh2s00z3fKc2NTrYN+8SQERWvy3gRdGsmjrGMZQ9nZPT3bYLYDuyuhpYfQ8CSOuU2bScmWN9xthX3T6V1T8qOBzzCBzDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGdNMng/by4nCNGrYeB79TXd3c2wMDAGA1UdJQQpMCcGCysGAQQBjjePZQEDBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5jcmEuZ2UvZGdjY291bnRyeXNpZ25pbmdjYS5jcmwwHQYDVR0OBBYEFBlRrQE2MFW1c+X7ZPuq50qEp6YDMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNJADBGAiEAiDjXwDLMCbYtUOhS3p6HIN1aZdJg2x+q7QlFldqYoBkCIQDsv+uGlrWi8ZAjn1QsyqsU6HKc3a2oD+bTsg0UA/ZboQ==","kid":"AcOmDWpm7kI="},{"issuer":"CN = DGC Country Signing CA OU = Public Service Development Agency O = Ministry of Justice of Georgia C = GE","subject":"CN = DGC DS Signer 1 OU = LEPL Information Technologies Agency O = Ministry of Internally Displaced Persons From the Occupied Territories, Labour, Health and Social Affairs of Georgia C = GE","notbefore":1635526565000,"notafter":1698598564000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEa5QqEDGwiaDJSMCLVHg6l9ScX3LI\\n/9mzuzs6e+E0YBgeKTdQ5VV0IBCSIZkgjSb/Hfzghmi9rOa9aGuww7BU9Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDLDCCAtKgAwIBAgIUVO20iQwJJtX9tVMEQrEQl/B+5XswCgYIKoZIzj0EAwIwgYMxHzAdBgNVBAMMFkRHQyBDb3VudHJ5IFNpZ25pbmcgQ0ExKjAoBgNVBAsMIVB1YmxpYyBTZXJ2aWNlIERldmVsb3BtZW50IEFnZW5jeTEnMCUGA1UECgweTWluaXN0cnkgb2YgSnVzdGljZSBvZiBHZW9yZ2lhMQswCQYDVQQGEwJHRTAeFw0yMTEwMjkxNjU2MDVaFw0yMzEwMjkxNjU2MDRaMIHVMRgwFgYDVQQDDA9ER0MgRFMgU2lnbmVyIDExLTArBgNVBAsMJExFUEwgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIEFnZW5jeTF9MHsGA1UECgx0TWluaXN0cnkgb2YgSW50ZXJuYWxseSBEaXNwbGFjZWQgUGVyc29ucyBGcm9tIHRoZSBPY2N1cGllZCBUZXJyaXRvcmllcywgTGFib3VyLCBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzIG9mIEdlb3JnaWExCzAJBgNVBAYTAkdFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEa5QqEDGwiaDJSMCLVHg6l9ScX3LI/9mzuzs6e+E0YBgeKTdQ5VV0IBCSIZkgjSb/Hfzghmi9rOa9aGuww7BU9aOBzzCBzDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGdNMng/by4nCNGrYeB79TXd3c2wMDAGA1UdJQQpMCcGCysGAQQBjjePZQEDBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5jcmEuZ2UvZGdjY291bnRyeXNpZ25pbmdjYS5jcmwwHQYDVR0OBBYEFHtiZBY7D8iDDRpr5yECOpZ1cyfLMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBH/RuRLyOU640ZMdX0CDXC2/Hlv8tDsQN2Tjm2+fmbbAIhALY7w0RCZyu0JY1jmnBMKtzPr7mdqZGCR1oi7jC8RvXO","kid":"ZqPYe26eEEk="},{"issuer":"C = FI O = Vaestorekisterikeskus CA OU = Sosiaali- ja terveydenhuollon palveluvarmenteet CN = VRK CA for Social Welfare and Health Care Service Providers","subject":"C = FI ST = Finland L = Helsinki O = Kansanelakelaitos OU = Kanta serialName = 1.2.246.556.12.21.2 CN = Todistuspalvelu","notbefore":1624014000000,"notafter":1687121999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEepKcLfnTZIej9gSNJVmR8sRYMMgz\\ntnG9h0ZGWx7D1X1g32V/GtJc55HkoH+vqkbkhKJnvDBJ1JdsbkKKmBJb2Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIGOTCCBCGgAwIBAgIEHhL8kTANBgkqhkiG9w0BAQsFADCBsDELMAkGA1UEBhMCRkkxITAfBgNVBAoTGFZhZXN0b3Jla2lzdGVyaWtlc2t1cyBDQTE4MDYGA1UECxMvU29zaWFhbGktIGphIHRlcnZleWRlbmh1b2xsb24gcGFsdmVsdXZhcm1lbnRlZXQxRDBCBgNVBAMTO1ZSSyBDQSBmb3IgU29jaWFsIFdlbGZhcmUgYW5kIEhlYWx0aCBDYXJlIFNlcnZpY2UgUHJvdmlkZXJzMB4XDTIxMDYxODExMDAwMFoXDTIzMDYxODIwNTk1OVowgZYxCzAJBgNVBAYTAkZJMRAwDgYDVQQIDAdGaW5sYW5kMREwDwYDVQQHDAhIZWxzaW5raTEaMBgGA1UECgwRS2Fuc2FuZWxha2VsYWl0b3MxDjAMBgNVBAsMBUthbnRhMRwwGgYDVQQFExMxLjIuMjQ2LjU1Ni4xMi4yMS4yMRgwFgYDVQQDDA9Ub2Rpc3R1c3BhbHZlbHUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR6kpwt+dNkh6P2BI0lWZHyxFgwyDO2cb2HRkZbHsPVfWDfZX8a0lznkeSgf6+qRuSEome8MEnUl2xuQoqYElvZo4ICPDCCAjgwHwYDVR0jBBgwFoAUHSRFwQpHbGJL/GegaZ/8hZ+wccswHQYDVR0OBBYEFF3mgz1ib+Ym2Y1PFDsl8pSpZVw8MA4GA1UdDwEB/wQEAwIGwDCB1QYDVR0gBIHNMIHKMAgGBgQAj3oBBzCBvQYJKoF2hAUBCgoCMIGvMCYGCCsGAQUFBwIBFhpodHRwOi8vd3d3LmZpbmVpZC5maS9jcHM5LzCBhAYIKwYBBQUHAgIweBp2VmFybWVubmVwb2xpdGlpa2thIG9uIHNhYXRhdmlsbGEgLSBDZXJ0aWZpa2F0IHBvbGljeSBmaW5ucyAtIENlcnRpZmljYXRlIHBvbGljeSBpcyBhdmFpbGFibGUgaHR0cDovL3d3dy5maW5laWQuZmkvY3BzOTAgBgNVHREEGTAXgRV0ZWtuaW5lbnR1a2lAa2FudGEuZmkwDwYDVR0TAQH/BAUwAwEBADA4BgNVHR8EMTAvMC2gK6AphidodHRwOi8vcHJveHkuZmluZWlkLmZpL2NybC92cmtzaHNwYy5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzBsBggrBgEFBQcBAQRgMF4wMQYIKwYBBQUHMAKGJWh0dHA6Ly9wcm94eS5maW5laWQuZmkvY2EvdnJrc2hzcC5jcnQwKQYIKwYBBQUHMAGGHWh0dHA6Ly9vY3NwLmZpbmVpZC5maS92cmtzaHNwMA0GCSqGSIb3DQEBCwUAA4ICAQADw7+Mk+sN7E9d+DZ55TLlcB7o3SID+nCo4ujysSF7zHMuigFQZ2c/gXA3YvGNDLRGh9t3U6HBV80Qlio1vd+ndZUE79AzWzwXe7falcU2dkBcfAd1/iM2bo3PDac2CygtwOyCJlaVQ7Pyc3tFHWUBtpSij3/nyYzIZzxOLgs6qvRo9BhAFWXI5c4MvPUQsQh/lznpwm7GLNFfuSguilQUFJtznK6fwq5fookTyBy9YgA9kGPTKgaaFWFXAGjmtHmXZIrHK3byRoGmOfnQVEBm7dwWPvHGE37CyhPR0B9K/vXQLMr8qOnxD5dc34quLDYCxG6P99H0YGQY/N2ZMvSYjc//bHNfDUhAOC2zcqYl0Vmcz3bH3u2zFRaiqJ52LoLNQzj1+zmHR6EZ1s91iJ8tBFI+IM4ed2iMF3tahpzt4xM7HledA1BD9ARpDj37+ZS89hUxdLlUf9Q7qm3OL4cdnQ0lidlPgYjHBd7QTbpxYHWHH0U52ALzaAS8JhvSPYpw+bg2OGNA6TOnxXy1n4Jxu4hILnzmgIk/u/JoVVZJ6UiuDCkJF9n6Lvxq05rtYemVCQvNHBjyQzQ2M3CMDWWvAVBLDh/nf3iwiWrnKz3zL4enXzPFleT2uKhmP9VMTE+Omk6WlALrSuEWAUb20Z/ruCIRwJbiNO4fl2MOqFwooQ==","kid":"BKBFhNFXWAU="},{"issuer":"C = EE O = Estonia OU = Police and Border Guard Board serialName = 01-2020 CN = CSCA_Estonia","subject":"CN = 02-2021_DCC serialName = 02-2021 C = EE O = Estonia OU = Health and Welfare Information Systems Centre","notbefore":1623152362000,"notafter":1701776362000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNf\\nd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEtzCCAm+gAwIBAgIBFjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDBwMQswCQYDVQQGEwJFRTEQMA4GA1UECgwHRXN0b25pYTEmMCQGA1UECwwdUG9saWNlIGFuZCBCb3JkZXIgR3VhcmQgQm9hcmQxEDAOBgNVBAUTBzAxLTIwMjAxFTATBgNVBAMMDENTQ0FfRXN0b25pYTAeFw0yMTA2MDgxMTM5MjJaFw0yMzEyMDUxMTM5MjJaMH8xFDASBgNVBAMWCzAyLTIwMjFfRENDMRAwDgYDVQQFEwcwMi0yMDIxMQswCQYDVQQGEwJFRTEQMA4GA1UEChMHRXN0b25pYTE2MDQGA1UECxMtSGVhbHRoIGFuZCBXZWxmYXJlIEluZm9ybWF0aW9uIFN5c3RlbXMgQ2VudHJlMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNfd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4KOBtzCBtDAdBgNVHQ4EFgQUrz4uJgDuJ+1fAWhBPQpmWJOqvUMwKwYDVR0QBCQwIoAPMjAyMTA2MDgxMTM5MjJagQ8yMDIxMTIwNTExMzkyMlowDgYDVR0PAQH/BAQDAgeAMDUGA1UdHwQuMCwwKqAooCaGJGh0dHBzOi8vd3d3LnBraS5wb2xpdHNlaS5lZS9jc2NhLmNybDAfBgNVHSMEGDAWgBRVq9JvhX7uQOBhSt+YPiu2k2xVvDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIAOCAgEAJ/OIJaw1Hg+yD7TH3YPG7ux6I4Fpx1QC1UPdIouG0HcHm8Lde+cB1IHlHc/C03jvVWnkbeH0mlpHLcStNICIgc8wfhOLS/yDvor/sYSNNX2v9OcJuxWmL6a2b3C5vuQJNr09HrSqv+1MDM/Qj7qRSraO9JSm59StyaoEdZXgK40eNnSxfRD2HFRpqr6aY+FB7ONH53/nCi/PT+fW6LB2hS+VtBUaWt1pShs2W8cahNJ/O6oujquKDhTj8uqdbhV9lug2JJ2/eLxWawEYVGC20HMrg9qwW971mR3UeGZmbJb0KyHr4b1LupC+sN88/A0CwCybS3x2Dla/OvPff7W1BqFyhEzBgDL1jB9iVF57erYGkoPd9oHKTIQdZ84u7JKLvi13xJGAR4KAsryrfP0Wcc29+TQJPZwedaauz96OUpC92hcu21cI5drikSF/Y9U96gGay0AWHM+DafA6NEUiWRMIFC3IaMjMr6FFwz4uq6KTK08YZoN/Dn09eVgrBcXqHR69FSJ00lwduDDamN9JHmy5wuLw22rDaXiymUYAkZZCc1PS2yJG8bIOfzYEAHAbESlJQ671MmudVDRM3PuvVICRp0jXZg/sNzT053rDpk0Z2nxKLcAVzPo0wRgnpih1zVchVTakNbWxwsOPftCSVnZjEhAHvq/GZ3ysssMNRUc=","kid":"EzYR1uk/E0I="},{"issuer":"O = State enterprise \\"DIIA\\" CN = \\"DIIA\\". Green Certificate CSCA serialName = UA-43395033-2021 C = UA L = Kyiv 2.5.4.97 = NTRUA-43395033","subject":"O = State enterprise \\"DIIA\\" CN = \\"DIIA\\". Green Certificate DSC 2 serialName = 22 C = UA L = Kyiv","notbefore":1629234000000,"notafter":1692305999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd22zt56DQx1ao5dd4u6jU3KPELJd\\ncWfl0+FJ6cVhCb8s0SmQleFtS9m5RQqVzbBr/JnUfqVZjvrPFzwpbgdMeQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEuzCCBGGgAwIBAgIUeQTIILWQh4cEAAAAFgAAACEAAAAwCgYIKoZIzj0EAwIwgZsxIDAeBgNVBAoMF1N0YXRlIGVudGVycHJpc2UgIkRJSUEiMScwJQYDVQQDDB4iRElJQSIuIEdyZWVuIENlcnRpZmljYXRlIENTQ0ExGTAXBgNVBAUTEFVBLTQzMzk1MDMzLTIwMjExCzAJBgNVBAYTAlVBMQ0wCwYDVQQHDARLeWl2MRcwFQYDVQRhDA5OVFJVQS00MzM5NTAzMzAeFw0yMTA4MTcyMTAwMDBaFw0yMzA4MTcyMDU5NTlaMHUxIDAeBgNVBAoMF1N0YXRlIGVudGVycHJpc2UgIkRJSUEiMSgwJgYDVQQDDB8iRElJQSIuIEdyZWVuIENlcnRpZmljYXRlIERTQyAyMQswCQYDVQQFEwIyMjELMAkGA1UEBhMCVUExDTALBgNVBAcMBEt5aXYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3bbO3noNDHVqjl13i7qNTco8Qsl1xZ+XT4UnpxWEJvyzRKZCV4W1L2blFCpXNsGv8mdR+pVmO+s8XPCluB0x5o4ICpjCCAqIwHQYDVR0OBBYEFIjv6MDr8gqaj1GvhYENJ5FvDg+LMB8GA1UdIwQYMBaAFHkEyCC1kIeHDT09MC0K0Ko+YXcCMA4GA1UdDwEB/wQEAwIGwDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMEEGA1UdIAQ6MDgwNgYJKoYkAgEBAQICMCkwJwYIKwYBBQUHAgEWG2h0dHBzOi8vZ3JlZW5jYS5kaWlhLmdvdi51YTAJBgNVHRMEAjAAMFQGCCsGAQUFBwEDBEgwRjAIBgYEAI5GAQEwLQYGBACORgEFMCMwIRYbaHR0cHM6Ly9ncmVlbmNhLmRpaWEuZ292LnVhEwJlbjALBgkqhiQCAQEBAgEwTgYDVR0fBEcwRTBDoEGgP4Y9aHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvZG93bmxvYWQvY3Jscy9DQS03OTA0QzgyMC1GdWxsLmNybDBPBgNVHS4ESDBGMESgQqBAhj5odHRwOi8vZ3JlZW5jYS5kaWlhLmdvdi51YS9kb3dubG9hZC9jcmxzL0NBLTc5MDRDODIwLURlbHRhLmNybDCBiQYIKwYBBQUHAQEEfTB7MDUGCCsGAQUFBzABhilodHRwOi8vZ3JlZW5jYS5kaWlhLmdvdi51YS9zZXJ2aWNlcy9vY3NwLzBCBggrBgEFBQcwAoY2aHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvY2EtY2VydGlmaWNhdGVzL2dyZWVuY2EucDdiMEoGCCsGAQUFBwELBD4wPDA6BggrBgEFBQcwA4YuaHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvc2VydmljZXMvdHNwL2VjZHNhLzAKBggqhkjOPQQDAgNIADBFAiEAzrDXxTuym77Eo9J4GNB/GoZRm9lTVtmUpLCjhzr7t5ICIDdt0waoDoBfm201AGoLjErsage0uxBI3SkncWQaP7nZ","kid":"FhciF/j3plg="},{"issuer":"C = MC O = Principality of Monaco OU = Foreign Office of Monaco CN = CSCAPKI_MC","subject":"C = MC O = Principality of Monaco OU = Ministry of Health and Social Affairs CN = DSPKI_MC_DGC_1","notbefore":1632143989000,"notafter":1679491189000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/XCqYpwUi4RLldTOqsukogo6l4ZU\\nIXO4ZtjkUxEpDToYLFI0uApt1KXSfpsn8EfNGPaWF+YW2B1QKpbCtbtZFg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE6zCCAtOgAwIBAgITEfc5jeKc7JLK6DrtdI7KoEudnzANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJNQzEfMB0GA1UECgwWUHJpbmNpcGFsaXR5IG9mIE1vbmFjbzEhMB8GA1UECwwYRm9yZWlnbiBPZmZpY2Ugb2YgTW9uYWNvMRMwEQYDVQQDDApDU0NBUEtJX01DMB4XDTIxMDkyMDEzMTk0OVoXDTIzMDMyMjEzMTk0OVowdzELMAkGA1UEBhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25hY28xLjAsBgNVBAsMJU1pbmlzdHJ5IG9mIEhlYWx0aCBhbmQgU29jaWFsIEFmZmFpcnMxFzAVBgNVBAMMDkRTUEtJX01DX0RHQ18xMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/XCqYpwUi4RLldTOqsukogo6l4ZUIXO4ZtjkUxEpDToYLFI0uApt1KXSfpsn8EfNGPaWF+YW2B1QKpbCtbtZFqOCAUowggFGMCgGA1UdEQQhMB+CC3d3dy5nb3V2Lm1jpBAwDjEMMAoGA1UEBwwDTUNPMDUGA1UdEgQuMCyGGGh0dHBzOi8vY3NjYS1tY28uZ291di5tY6QQMA4xDDAKBgNVBAcMA01DTzAOBgNVHQ8BAf8EBAMCB4AwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzArBgNVHRAEJDAigA8yMDIxMDkyMDA3NDQ0OFqBDzIwMjIwMzIwMDc0NDQ4WjAdBgNVHQ4EFgQU5DhDGjpYh+dwXciftwec8RGrW00wHwYDVR0jBBgwFoAUMDKcfP59jwLtxRJa4OtXv+iFiSkwMQYDVR0fBCowKDAmoCSgIoYgaHR0cHM6Ly9jc2NhLW1jby5nb3V2Lm1jL01DTy5jcmwwDQYJKoZIhvcNAQELBQADggIBAAnLvzFhQlE4lohlktg0QUnF6DGIA1JEC26QRnJi+1gMXNZok90Q37DPJ54uml8UnCkieGVIpQaDp5jIxMax+t6QmwkgQNoQzjiJJqeKP6xBsEUmGUKURx0g5z7ULem+TdedSIiMEqSrie3YX5Zfea3dzy3zIw2s6cCa67RHj860OqXZHrMtYc7rqoXxkWkqGaSJovxSthmiBWQisTPFMTzFZqm85ojU11A3uY8ReuUrUuvyefVAFENLuz8j2T6CGOIigNxnmyZzm+2TpH+53Dd5S8MlVwuZZ4RHv2g+p/YygOvHceGPIORSeLcqrIW4kgz6HxonBy/vjC6Pj07wFlyFafo3V5KQxPUQZtFQ8blhe7ZrRPyimObcA55Oh20V/HnVewzz3onjEQuotg1QNRJ7gzoJeBunwFXpHrG/mUg3dVeow0pOV0vsQ/QAOCM0p7GVABoHT4O4dOWLNoaWcoQBvPSGbAl5O1YhzOhXRTlyYfxNSUxKavWfpTF1mB1WXyThtatvQ2cP7qlgVYbBjvejyz+RTpK2cgyDFDlcBJaBakCBeuqEJvKvMxX50NqQAVBTfywrQyIyynttQgoxxl5KwkEPJ4BrbP/XIw8KkuGO5C9EKGjaftQNQ25GkdNDQFyMiJU7EhN6Hp/6dsgZXnfG8gacZu4vnIiXphYBigi2","kid":"FtUwA9uHJoo="},{"issuer":"C = MC O = Principality of Monaco OU = Foreign Office of Monaco CN = CSCAPKI_MC","subject":"C = MC O = Principality of Monaco OU = Ministry of Health and Social Affairs CN = DSPKI_MC_DGC_1","notbefore":1623918269000,"notafter":1671265469000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcrxlv5/uGbsaXM/QMSpvZV2iNtF0\\no4QBech6LGpy3OEefbJLf+4iqI19QNWtUXEjlMMytB4+1ESLHdXyki5X2g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE7DCCAtSgAwIBAgIUAJdHETmGhF9czCBAxz36xGrwMPkwDQYJKoZIhvcNAQELBQAwZjELMAkGA1UEBhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25hY28xITAfBgNVBAsMGEZvcmVpZ24gT2ZmaWNlIG9mIE1vbmFjbzETMBEGA1UEAwwKQ1NDQVBLSV9NQzAeFw0yMTA2MTcwODI0MjlaFw0yMjEyMTcwODI0MjlaMHcxCzAJBgNVBAYTAk1DMR8wHQYDVQQKDBZQcmluY2lwYWxpdHkgb2YgTW9uYWNvMS4wLAYDVQQLDCVNaW5pc3RyeSBvZiBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzMRcwFQYDVQQDDA5EU1BLSV9NQ19ER0NfMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHK8Zb+f7hm7GlzP0DEqb2VdojbRdKOEAXnIeixqctzhHn2yS3/uIqiNfUDVrVFxI5TDMrQePtREix3V8pIuV9qjggFKMIIBRjAoBgNVHREEITAfggt3d3cuZ291di5tY6QQMA4xDDAKBgNVBAcMA01DTzA1BgNVHRIELjAshhhodHRwczovL2NzY2EtbWNvLmdvdXYubWOkEDAOMQwwCgYDVQQHDANNQ08wDgYDVR0PAQH/BAQDAgeAMDMGA1UdJQQsMCoGDCsGAQQBAI43j2UBAQYMKwYBBAEAjjePZQECBgwrBgEEAQCON49lAQMwKwYDVR0QBCQwIoAPMjAyMTA2MTcwODE0MDBagQ8yMDIxMTIxNzA4MTQwMFowHQYDVR0OBBYEFCurTSCZX0MwxJXi6a/cJR4zZn9WMB8GA1UdIwQYMBaAFDAynHz+fY8C7cUSWuDrV7/ohYkpMDEGA1UdHwQqMCgwJqAkoCKGIGh0dHBzOi8vY3NjYS1tY28uZ291di5tYy9NQ08uY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQAEaZtWub0CVASIEHG95DCwcFIVdaVZZupOzKuIimUNRH8+9pa9IPekVPLiArnGlmpAg6o4Ac8MVHvCkEiSAA8HVDkABbssmrKm6ZZ4XRDtBokrGlYskUy2B8AQypPKjKXz/vMYnVMNl4kkcehG8+B0KyPrpYMK7VXQuRxe+QC0CaemS2NGLNvr2+vnpfXeJAfM6TpnSPaN7MjAgt/8UyGJP6HLuHbGgbALgcxwqq5CniU3f8zLjIXRKWqhDmE4M8ufu/VFVR18fWoHqeytcOpFTdmN3YLxu9jA573KHyLRLO7g20PlOJYuHtOoG2SzwEa2Ut0ooFAajLnxwVoYuCfYKWubYRRqReFI45EtNtC8Tut8J3SAIk53IH6v1mG4m2QFCGFV7ehu6A+jwsVrg8o+XesHV96EK8jJooEjp2jIIrHHU8LTozrWSECiRsnEWv7e4TP4+3dj/6Yrrzm6DlzCw/y9s6T/Iolp1SKaNsHOHJwwNTJAqzGxP8N8fdnxs1c1iLXXxHJy8AKZC8eNFj09AF8Tvi/IQTOpmMFhRGkCCkrNMf5Zf7vFLtAm+yqOsOOYNhTiyoqX96tKipsxcm+CDIAnhyUgJgxVfEUO547lg3/hdJUvI62/0gisUqXBnYDwMiWlXZHmS+K9lMar0k1NeKb2K5BSox7U3oP+d/RPpg==","kid":"Pcl7yBWEQ7c="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-RECOVERY-003 O = Government of Malta C = MT","notbefore":1625097600000,"notafter":1688255999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDON\\nYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICgTCCAiegAwIBAgIIFwgHF3EO4GkwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDMxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDONYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdaOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBR9uzKFO2DLNzUjBFGi4relF01KBTB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNIADBFAiEA99DvYsvpGT4tqpc0BMSCZeyZ7WMbt8ZM1PpabmhX8+cCIGCtDA+B0wWuPtFcN+xk/jBG5t30dSFLWQB43XkMQLug","kid":"GvVR3e6VJIM="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-TEST-001 O = Government of Malta C = MT","notbefore":1624233600000,"notafter":1687391999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfapP8+QeyFgXVvY41YkQudlUUh7I\\nZBBpIdOJ34xYmxCEuHXbVUFqt/JSnbpVsGsd7ZBPUjL2u5Ks9moBMDEPLg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICfjCCAiOgAwIBAgIIejS7d37VXgEwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMTEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR9qk/z5B7IWBdW9jjViRC52VRSHshkEGkh04nfjFibEIS4ddtVQWq38lKdulWwax3tkE9SMva7kqz2agEwMQ8uo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFBR+KFEXuumXgCc5GWe258iqVrnfMHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNjIxMDAwMDAwWoEPMjAyMTEyMjEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDBnG+uLfchypa5wnmHMUi2aWEzWkbjoGgn5WsWmXffcAIhAKMusBaq7xzWVRMreNFvQsitrCaSaqDoQPvQuU72+SjN","kid":"QacbC7DdD4U="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-VACCINATIONS-001 O = Government of Malta C = MT","notbefore":1624233600000,"notafter":1687391999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1q1nvgXLGIbibQuYQU+f+Xs+mcbP\\nmukAc3KQAyy/5KZH+n5F4bG4V0XIjphX093YxHh1JbHWOzuhKuan9FboyA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIChTCCAiugAwIBAgIIZEwDM+Nt1KMwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAxMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNatZ74FyxiG4m0LmEFPn/l7PpnGz5rpAHNykAMsv+SmR/p+ReGxuFdFyI6YV9Pd2MR4dSWx1js7oSrmp/RW6MijgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUuCrjQfrYEdJhuUeDcYx4JKEFOf4weQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA2MjEwMDAwMDBagQ8yMDIxMTIyMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIgZGBb0sNv06M+s8UpL7ziN/FU4+4AGksrMB2BIIkZDBwCIQDXwcZZQKZFsV55HpRm/AxXSBLXu4vPFR2Lx3rdqy0nFg==","kid":"UZ1cSMaPcaQ="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-TEST-002 O = Government of Malta C = MT","notbefore":1625097600000,"notafter":1688255999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4DsoM1rJFjHyQPcX6WKDWZkouBeh\\nfQGxqOgwFAYyRKXbrSuL+tkz8sJfo8djfsuQRLDSuZxud0IOsMB9YsTMpg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICfjCCAiOgAwIBAgIIJTfDXWft5tcwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMjEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATgOygzWskWMfJA9xfpYoNZmSi4F6F9AbGo6DAUBjJEpdutK4v62TPywl+jx2N+y5BEsNK5nG53Qg6wwH1ixMymo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFAdYsuwV3Y8H3ArMdIP4+88NQzj6MHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNzAxMDAwMDAwWoEPMjAyMjAxMDEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDKRMYKb/xaog2wAz78sg7nxPSSGvmXDSmGm3OAvywYtwIhAL1aS9k2jC5FGCnXL146W6TNwJOLZXhG0WELPuo1eaPF","kid":"bfoj2trt6bE="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-VACCINATIONS-002 O = Government of Malta C = MT","notbefore":1625097600000,"notafter":1688255999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXj9fU7e4KVYe1VakCDZjYquHzkox\\nSHT8D33zeMDfyLbYi/GSVpKQtPwBPZlPx65r2Kb2warIK8BgxSgsQvMIag==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIChTCCAiugAwIBAgIIWGrho8bBjMowCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAyMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABF4/X1O3uClWHtVWpAg2Y2Krh85KMUh0/A9983jA38i22IvxklaSkLT8AT2ZT8eua9im9sGqyCvAYMUoLELzCGqjgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUOLKcvXnMDSbbBkkI/qyub1XWtNUweQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA3MDEwMDAwMDBagQ8yMDIyMDEwMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIhAPh/K0cwTwjugfRAGr47Ntn3O6iy5Dq6vtWdminY7WDrAiA/usc8ejitliKRcw9kWYkRTe5M8QTrGi0d8ISZfbWPzw==","kid":"ccgQ13tmkU8="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-RECOVERY-002 O = Government of Malta C = MT","notbefore":1625097600000,"notafter":1688255999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNx\\ndEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICgjCCAiegAwIBAgIIK+HdvXWkN9YwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDIxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNxdEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4aOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBQpm2iI+XG+uIq9XM2lqhKzZ5i5MDB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNJADBGAiEAvxNjK3WJhVQiCHwFKMfUClW0xa0ikhLAPaHirWYEgKMCIQDWDa7xu71vGhmTaIeKuMywD+f1yfPsaCzeEpr1yUITbA==","kid":"f6J92LRKpj0="},{"issuer":"CN = IS DGC CSCA 1 serialName = 1 OU = Directorate of Health O = Directorate of Health C = IS","subject":"CN = IS-DSC-testrec-1 serialName = 2 OU = Directorate of Health O = Directorate of Health C = IS","notbefore":1625249448000,"notafter":1688321448000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvwlwjQL5cId7nINp/A/b+XNY/Wzg\\nX9sIOde8ggZmZjXvIYhDhz7Fvs52ozmdqatDp3yIwPpr6nAMmaNTj0KdZg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIBzTCCAXQCAnBLMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA3MDIxODEwNDhaFw0yMzA3MDIxODEwNDhaMHQxGTAXBgNVBAMMEElTLURTQy10ZXN0cmVjLTExCjAIBgNVBAUTATIxHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABL8JcI0C+XCHe5yDafwP2/lzWP1s4F/bCDnXvIIGZmY17yGIQ4c+xb7OdqM5namrQ6d8iMD6a+pwDJmjU49CnWYwCgYIKoZIzj0EAwIDRwAwRAIgGuvSzxkT7wtN8UW9b8VavzmUbfC1Ojl99ZLu6iNNxbgCIHvbmygVJAEC9/GJgitb+1wQx5fHp/SEcfnkqPOqzFrn","kid":"HeWuzGwEM5c="},{"issuer":"CN = IS DGC CSCA 1 serialName = 1 OU = Directorate of Health O = Directorate of Health C = IS","subject":"CN = IS-DSC-1 serialName = 1 OU = Directorate of Health O = Directorate of Health C = IS","notbefore":1623406705000,"notafter":1686478705000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEO42X7C2X5bSDTnfSJwnk4qAjSk2m\\n11Cy/mmFqryl7J1MhrZDfy77ky4uS0o1iW181Ev51mAiW0J3i3SeKYeEOw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIBxTCCAWwCAgQRMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA2MTExMDE4MjVaFw0yMzA2MTExMDE4MjVaMGwxETAPBgNVBAMMCElTLURTQy0xMQowCAYDVQQFEwExMR4wHAYDVQQLDBVEaXJlY3RvcmF0ZSBvZiBIZWFsdGgxHjAcBgNVBAoMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDELMAkGA1UEBhMCSVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ7jZfsLZfltINOd9InCeTioCNKTabXULL+aYWqvKXsnUyGtkN/LvuTLi5LSjWJbXzUS/nWYCJbQneLdJ4ph4Q7MAoGCCqGSM49BAMCA0cAMEQCIFH/Cm+epgBJoz2S3eZaSPQLb2+3seJAEe2rgvrTcA4ZAiB6kXpC2VR9kqcv+HpDrbmx4Xq3PgTsQ5HxY1B5vepJ2g==","kid":"Pbydc1LscXo="},{"issuer":"C = AT O = BMSGPK serialName = 001 CN = AT DGC CSCA 1","subject":"C = AT O = BMSGPK serialName = 001001 CN = AT DGC DSC 1","notbefore":1622641524000,"notafter":1685713524000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYE24qIKmdcfRWUh2TqklkfZ6nyNB\\npX4VHeLMxfFl8rkQ8Zku0bcnH5OZXckkSt+tKs+FGZ9tKJ1VtNDmedlL6w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIB7zCCAZagAwIBAgIKAXnM+L47fmBcezAKBggqhkjOPQQDAjBEMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQwwCgYDVQQFEwMwMDExFjAUBgNVBAMMDUFUIERHQyBDU0NBIDEwHhcNMjEwNjAyMTM0NTI0WhcNMjMwNjAyMTM0NTI0WjBGMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQ8wDQYDVQQFEwYwMDEwMDExFTATBgNVBAMMDEFUIERHQyBEU0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGBNuKiCpnXH0VlIdk6pJZH2ep8jQaV+FR3izMXxZfK5EPGZLtG3Jx+TmV3JJErfrSrPhRmfbSidVbTQ5nnZS+ujbjBsMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUNs2smrjBhuR5Bqxl6teE1x1o2ycwHwYDVR0jBBgwFoAUHyKsHGUWKbTBmLNjb7/dCZ27e3swGgYDVR0QBBMwEYEPMjAyMTEyMTYxNDQ1MjRaMAoGCCqGSM49BAMCA0cAMEQCIDjXHnyzq3sTisMX1uY8xQ2ZqCRL2xmxtYOPhSZ9ZacYAiAqHUMOC7WNgq4h28n31WLc1mMPAYauWslSEwnXC79AGw==","kid":"Is2JtrOJhik="},{"issuer":"C = LV O = VAS Latvijas Valsts radio un televīzijas centrs 2.5.4.97 = NTRLV-40003011203 CN = Digital Green Certificate CSCA","subject":"C = LV O = NTRLV-90009649337 CN = lv_dsc_003","notbefore":1636018245000,"notafter":1699090245000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6aTLMp6+apBgDNYyDeBS+BranY97\\nxhfHhRYV+/D6WsCBJ93WCnduv7YsSFj4NGf/xoJynxeckYR3+JhYBvdOyA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE0TCCArmgAwIBAgIQMgfVJ9KIWgdhg6hFmVPWzDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTExMDQwOTMwNDVaFw0yMzExMDQwOTMwNDVaMD4xCzAJBgNVBAYTAkxWMRowGAYDVQQKDBFOVFJMVi05MDAwOTY0OTMzNzETMBEGA1UEAwwKbHZfZHNjXzAwMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOmkyzKevmqQYAzWMg3gUvga2p2Pe8YXx4UWFfvw+lrAgSfd1gp3br+2LEhY+DRn/8aCcp8XnJGEd/iYWAb3TsijggFEMIIBQDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMB0GA1UdDgQWBBSNXXFCsYbyQpaR9CVhus96/tOAejAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzIuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCFbvni9IiyVakliliz/jPuPfk3N2RETFV7cEGjRABugInh43DAPZz0siRPi2dmMy5B1b2T22QxFI7Od0qBkiPcGXKqwik1GU097mNWZ+5p8PuOVMN8E7nj5kX/vBJnmLw+XT1/taPMoz3cBVQ/7NTu1ycXVmJ1lWR8nPsBbqWRgnJbXFL1Q4Io+jngV2Y20o/OC+yvc0TsdofuM6dgDBEBunAU2kmiuexEtpyPVWgBuu5nz6mXOD1U10pXnxvDM5S6w+IDY04Nt3K4ONrlG/ghWUhTjrlYjpFMofqtK6CuKpGo8HQMpgQqb/bTTaAGeE3jEdoRVQxvQcsoUKEzM6cLf/XHz/MIoxlCfX0Rs+we93g/X4vjpXaoO0Dns57hEbRz53t3sE2Fty1rjY3qjGUd269vOtDIl2DooipUAnvSevUQQ3tRu7HeFGnc2ARrb82RG9lj2xwcce+JE5owTQYI2nSdnor1C2sQYhbMKNfbeLEwmoiWLUJyuhB95CPffwUffxQfF6EBbVEK9w6Rpu2I5Mo2qM9cwfJOYc9EIN4Bw8k3h7J3bNNFueVITL4WmVSjXnOaDFtt8PPF/H37exix0akaePpB4BGc5fpJN+OfIwPqEPU0ZDR+wFzwwHZrNF/aMD+j2myGGIuKcAkdt2rqzErGRznR6QClCNpJ3JF2Ew==","kid":"J8p9pf+5/9M="},{"issuer":"C = LV O = VAS Latvijas Valsts radio un televīzijas centrs 2.5.4.97 = NTRLV-40003011203 CN = Digital Green Certificate CSCA","subject":"CN = LV DSC 002 O = Nacionālais veselības dienests C = LV","notbefore":1624985695000,"notafter":1688057695000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5/m2YdN8L81Ajoi+2brFJbul628a\\nlfXRXU26t7hRYEvvsb74tSVm2Dm9cbuhrgFJ+/wXecdxh0tTSHCkMfB0hQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE4DCCAsigAwIBAgIQIVI8+7pCJKdg21Bf1/kMnDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA2MjkxNjU0NTVaFw0yMzA2MjkxNjU0NTVaME0xEzARBgNVBAMMCkxWIERTQyAwMDIxKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOf5tmHTfC/NQI6Ivtm6xSW7petvGpX10V1Nure4UWBL77G++LUlZtg5vXG7oa4BSfv8F3nHcYdLU0hwpDHwdIWjggFEMIIBQDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMB0GA1UdDgQWBBRJf+oSyT8lY9W8EXkcQkkbATciFzAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQA4+nXE7XWgwDhBUeldjoFgT1kRu6D5LzgFUsrTqicHFjGWXeXQKBnM9Dfx8iZBSY64O7FS/ompqIGxMFFZcBRYUgdaC9KQorL48w4b8WFCSQe0KUhDNqdlACWceq6/0tVtfek1M85bQ+ETU6InqY5sir7cZpyXFRXXXbdHqXjioC/EwfRo1/OB3wBX3/9HWcebIEskw4or2Z5p5BERPi2EQfp5cfv6BpH7tPYt0XJ7vA9WhsLLZGWPfKIU10iBF/DTGW5c2u/3yVCEbF215khpXx187kvXchIln4ZCbIiGkJrJRmnS6XZ++1c0BQpW4tdvUvxhuhqqln7GQPrOZK6HoOwFOjOC/k0oIkgYzJ+8xv7DA2PIXlOjSmkuZIqB4fr3DVKtnAVqWKKxnBMXqgyYlJenTUvp7OpUl+iYKqvSn7WX2F0wZQlYH+Gz1pGDdeyw4+cKZtUND6rFwHC9OxzeXM00wDp+G7O7IFBtwzaVrO/hRFGTG0W6vOv0Shc0lmVj++IzItVQx/SJRl9Lkfz58sQbRE8FphiUw4Wza3ad/eFafjDH3r0gtT/WA8aKUEp5j70kmb5XXIk9UMkk/T7385FRL3Q1ciqyoOVrRhL10wkEO+DDXuaqawXXtTz+3MDWX43TcE4wtQYDfw9i3tiDKkpzyRm43VvWoIDzGPDZ8g==","kid":"MrT00mhDxLQ="},{"issuer":"C = LV O = VAS Latvijas Valsts radio un televīzijas centrs 2.5.4.97 = NTRLV-40003011203 CN = Digital Green Certificate CSCA","subject":"CN = LV DSC 001 O = Nacionālais veselības dienests C = LV","notbefore":1622220600000,"notafter":1685292600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPUwE7htr+kD1eVnJBfRf5tx0kA17\\nqu4p1wRz3EKPxsJyyIznIqr9+HsnMd7k9ID/f0deqjP8dulzS2cFrVVnFQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE4zCCAsugAwIBAgIQfBNf4Ug47/BgsR84n0s5NDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA1MjgxNjUwMDBaFw0yMzA1MjgxNjUwMDBaME0xEzARBgNVBAMMCkxWIERTQyAwMDExKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD1MBO4ba/pA9XlZyQX0X+bcdJANe6ruKdcEc9xCj8bCcsiM5yKq/fh7JzHe5PSA/39HXqoz/Hbpc0tnBa1VZxWjggFHMIIBQzAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRivdWHr9big4cJkaojQ5INsdnuNDAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCCMrABdfqTT+3ux1VQ5RdqsFgArimneuPxVHSSitIqZ3rPwkS0EsTl5fUm6m5ZqxZreu5ChfGMzC9+/Z4OQfafuvVp0i/T5eD+oiN46g33bdcbxhaBg0i7++xpbRGKM5Wh9LuEW4iUq/wIxJBEJdYFGyvF2eP95mFMadKxcs8+aKdHWEix9CUgJozMEKsAslG81xYlSzVtCmAT5qraC9uz/qGTj/bYfivtMCEdChp7BWp7MP4hD3UG2rW+wxHzD1gYLy7NqqRG3+qPfolNM0SqliZederytEYoszv2zLoUleVGPq33XavqLTfCgPhOqhxPsnH0NLcuJkgSeq5yxg8FWQaRdIR6+BlENzVQ6LYNamsuBRxNZPDurKXL58rt/8dZoeEIn+qO92mo8oVrD4xDOHvjJJIuOqZ2zcODbvV/wBhCXjrTDBiUSe9tpeagE5UKfLN/pyh3TGzMzVyo5Tn30ihqXEIX6IawpZfLJNslZnEbDFi1/2K8b00t78x7pNTSFKyXou8VaabQVPspvuWsoW9D0nyig1ymLcCrSFpnCpf/GEKONRYI6Zi+LYpWzjI81/DzVyC49Gh25ZX6Z0k6ThgDq1J4qmiGU3I1W+VcQ+fNtTsCz9fv2Kdi62U0oYqmt3FAc2Vnt30yoKqgnSfyD4xhZSafHxz2ml0jFS1xzg==","kid":"hFpY/ySOrwI="},{"issuer":"C = BG O = Ministry of Health OU = Health Information System CN = Bulgaria DGC CSCA 1","subject":"C = BG L = Sofia O = Ministry of Health OU = Health Information System CN = DGC DSC 1","notbefore":1622205711000,"notafter":1685277711000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmyxlsE2inBusapxY7LvRiPN0s+ds\\nHnakaaa9M/5NDZZTljSZCzeK77fWO9MFRcGCXrTQaXNE3FhkV4+a92hRaw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICpDCCAkugAwIBAgIURXVV/Gq2Irn6g/NqhBUW+K90bQowCgYIKoZIzj0EAwIwbDELMAkGA1UEBhMCQkcxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDEiMCAGA1UECwwZSGVhbHRoIEluZm9ybWF0aW9uIFN5c3RlbTEcMBoGA1UEAwwTQnVsZ2FyaWEgREdDIENTQ0EgMTAeFw0yMTA1MjgxMjQxNTFaFw0yMzA1MjgxMjQxNTFaMHIxCzAJBgNVBAYTAkJHMQ4wDAYDVQQHDAVTb2ZpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMSIwIAYDVQQLDBlIZWFsdGggSW5mb3JtYXRpb24gU3lzdGVtMRIwEAYDVQQDDAlER0MgRFNDIDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASbLGWwTaKcG6xqnFjsu9GI83Sz52wedqRppr0z/k0NllOWNJkLN4rvt9Y70wVFwYJetNBpc0TcWGRXj5r3aFFro4HEMIHBMAwGA1UdEwEB/wQCMAAwLAYDVR0fBCUwIzAhoB+gHYYbaHR0cDovL2NybC5oaXMuYmcvY3NjYTEuY3JsMB8GA1UdIwQYMBaAFFeMHPlme+J4tvwi8r3u4ZCmP7FWMB0GA1UdDgQWBBS+Zk3uynTTHvB0Mb9eAgWF0vA6DDAOBgNVHQ8BAf8EBAMCB4AwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNHADBEAiBjSeBvjP2L5USPCkCAZggp/d4Mw/PUGt17jQdEet7f1AIgFI0GKAKWwdMW+xDfZmN4XAv27Z20ryj6kFY08jdIlo0=","kid":"Jjql9rBrjHI="},{"issuer":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-CSCA-PROD-20210608 E = webmaster@llv.li","subject":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-DSC-TEST-PROD-20210608 E = webmaster@llv.li","notbefore":1623138120000,"notafter":1686210120000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBnFUjr8FpfpVaVFtCUW7Yg6JBk/n\\n1TlJKEKpm/rZOvAEzKpwoTCpXpXPP1SPGhvQXzJ+i4dBQHgbdw2SDpcZmQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC8zCCApqgAwIBAgIIP9+ZLHC2FYQwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc0MjAwWhcNMjMwNjA4MDc0MjAwWjCBlDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEmMCQGA1UEAxMdREdDLU5CLURTQy1URVNULVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQGcVSOvwWl+lVpUW0JRbtiDokGT+fVOUkoQqmb+tk68ATMqnChMKlelc8/VI8aG9BfMn6Lh0FAeBt3DZIOlxmZo4HXMIHUMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFKdEjVLpS/bdKCMQdvpMviuko+rEMB8GA1UdIwQYMBaAFPSeeHwW3w57BFMM1pp4NCgcTd+FMA4GA1UdDwEB/wQEAwIHgDA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vY3JsLmxsdi5saS9ER0MtTkItQ1NDQS1QUk9ELTIwMjEwNjA4MB4GCWCGSAGG+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwFgYDVR0lBA8wDQYLKwYBBAGON49lAQEwCgYIKoZIzj0EAwIDRwAwRAIgTvGgYK3ij9bZvyKshoyDlYrQwXR7Btj0JIcpdq6NFqECIHd6ABGRr+NyKJjnlB7ZlYiJDfrERVPyF/q/Esmhv56P","kid":"JkFekJel6/o="},{"issuer":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-CSCA-PROD-20210608 E = webmaster@llv.li","subject":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-DSC-RECOVERY-PROD-20210608 E = webmaster@llv.li","notbefore":1623139020000,"notafter":1686211020000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9B\\nnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiAw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+TCCAp6gAwIBAgIIEVh/vC3chgUwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NzAwWhcNMjMwNjA4MDc1NzAwWjCBmDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEqMCgGA1UEAxMhREdDLU5CLURTQy1SRUNPVkVSWS1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9BnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiA6OB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBT+nyG6/wNEQ0TEblj8ow7u2bNB4DAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQDqBN9eq6TjWFWqhOkU9hvdA5hBacvUjL0Rt3i5dbV8kwIhAKhpBMwxHfoFXS7FwiuXOyj4zxZ60pPvPbxYGawo9OZI","kid":"e/YRqyv++qY="},{"issuer":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-CSCA-PROD-20210608 E = webmaster@llv.li","subject":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-DSC-VACCINATION-PROD-20210608 E = webmaster@llv.li","notbefore":1623138840000,"notafter":1686210840000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30f\\ntIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+jCCAqGgAwIBAgIIECN/LlZb7kkwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NDAwWhcNMjMwNjA4MDc1NDAwWjCBmzELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEtMCsGA1UEAxMkREdDLU5CLURTQy1WQUNDSU5BVElPTi1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30ftIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJKOB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQ3BvFcjsG6REaqwESNcZW1BjNTwDAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQECMAoGCCqGSM49BAMCA0cAMEQCIEEnfB5SgmatugluROBG4Q06cVdBulDo4S4vQJXO0lj2AiABMtLp5pBQA/cS9ksKlYkCuj/X2TTnM3yIPhngaEN/7A==","kid":"jYpr5GHCDiQ="},{"issuer":"C = MK ST = North Macedonia L = Skopje O = Ministry of Health CN = zdravstvo.gov.mk E = contact@zdravstvo.gov.mk","subject":"C = MK ST = North Macedonia L = Skopje O = Ministry of Health, North Macedonia OU = E-Health, North Macedonia CN = zdravstvo.gov.mk E = contact@zdravstvo.gov.mk","notbefore":1635409469000,"notafter":1666945469000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA65H+Vak/9kWmQXGYEZEu\\nA2hSykjqYu72g//uaBs/Ac0JYV9Zhqwjb6iPf1tATe87vzg7sD5gGOqtabbOYMcV\\nW50e3X5Ix4XxKMMoAvtkyDI/TbMK4HqiEY5FVf/JhPZEp4+nSVjwhozn0p7pKSk+\\nWKYEjIG/zpceLyikArxxSt5SwYdVMmau+6kdHT4Q0m3btE5ORl+B0exu+KS3xb6W\\nRsiU5E8kXyQFBS3zK6DxFqDDVyWhWVt4NfoJt76ZE3zuXPutyPs3AVscJDWB5mkn\\n/yM8Fg20WAsZ0O9p3uyyK+MSwFdRmUzK7Gr6dnQhce4oh0HTAFsodFwnDsPCfJxc\\nskoIYZW2xWX1W03jpngQWXgA1eJ44/4Ve0u09w5DpwNrgT3SoznZhZ3DPfH38NV3\\nfxhm8KuVmNtmKms2ctExY8RftHXMFAQC4jDgutnaJz1zyC95QVkp06drreGLzX4X\\nvPYZZdZhh4UYqT/IYXaX2yt09Tu+ueVm1MRlWeuEzlYYApbMceBseE7MuWdCVPwc\\nx/QMjp7b4BSnRH+w4XIqs/wS8nXkMyBEdCMbCH3PFKNQOmbmA3Lq6X2eFWhgRud3\\nFGyPacS5ADeV/s/aei+UJY/i9tY/NeXCYLtox4PXucUU4gbU9wV7rvLTNvwWIr5g\\nga/gu18hrHe6Dag7p9wsU3ECAwEAAQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"KBPNEuXUvrY="},{"issuer":"CN = CSCA Saude serialName = 001 O = Republica Portuguesa - Portuguese Republic C = PT","subject":"CN = DGC DS serialName = 001 O = Republica Portuguesa - Portuguese Republic C = PT","notbefore":1621613831000,"notafter":1684685830000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnjK8A8ato900a+wQ1IaxJyaeUGQ5\\nlwsYOCRlq47X4DKGe+P3L22utYcGTWtCekBqarcEzzSHH/X+s5aeEQgYYA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICKTCCAc6gAwIBAgIUb724peU13ddK2UiaXfZ8lJA3KpAwCgYIKoZIzj0EAwIwZTETMBEGA1UEAwwKQ1NDQSBTYXVkZTEMMAoGA1UEBRMDMDAxMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vlc2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMB4XDTIxMDUyMTE2MTcxMVoXDTIzMDUyMTE2MTcxMFowYTEPMA0GA1UEAwwGREdDIERTMQwwCgYDVQQFEwMwMDExMzAxBgNVBAoMKlJlcHVibGljYSBQb3J0dWd1ZXNhIC0gUG9ydHVndWVzZSBSZXB1YmxpYzELMAkGA1UEBhMCUFQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASeMrwDxq2j3TRr7BDUhrEnJp5QZDmXCxg4JGWrjtfgMoZ74/cvba61hwZNa0J6QGpqtwTPNIcf9f6zlp4RCBhgo2AwXjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFH4yvG+XLvlf69AVR2efiYzKIWgOMB0GA1UdDgQWBBQlYiuUojmAFDYjAmowakBbgeqeNTAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSQAwRgIhALe/oIGICdSXhdPOH7yFiPAUR/FhjdX+dsCyvU8Am4pLAiEA2HtA78ZO3jLs7BoIgh+xZ5fqaJbCIFMdwVzdJ/hCvWY=","kid":"KG9lzdohSY0="},{"issuer":"C = DK O = The Danish Health Data Authority OU = The Danish Health Data Authority CN = PROD_CSCA_DGC_DK_01 E = kontakt@sundhedsdata.dk","subject":"C = DK O = The Danish Health Data Authority OU = The Danish Health Data Authority CN = PROD_DSC_DGC_DK_01 E = kontakt@sundhedsdata.dk","notbefore":1621417645000,"notafter":1684576045000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBmdgY/VORsecXxY/0xNNOzoJNRaV\\nnMMmHs5jiXrGvaDOy1jzDUOyvR++Jxgf0+YuGyp5/UAY0QIh75b+JQnlHA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICyzCCAnGgAwIBAgIBATAKBggqhkjOPQQDAjCBqTELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEcMBoGA1UEAwwTUFJPRF9DU0NBX0RHQ19ES18wMTEmMCQGCSqGSIb3DQEJARYXa29udGFrdEBzdW5kaGVkc2RhdGEuZGswHhcNMjEwNTE5MDk0NzI1WhcNMjMwNTIwMDk0NzI1WjCBqDELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEbMBkGA1UEAwwSUFJPRF9EU0NfREdDX0RLXzAxMSYwJAYJKoZIhvcNAQkBFhdrb250YWt0QHN1bmRoZWRzZGF0YS5kazBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAZnYGP1TkbHnF8WP9MTTTs6CTUWlZzDJh7OY4l6xr2gzstY8w1Dsr0fvicYH9PmLhsqef1AGNECIe+W/iUJ5RyjgYgwgYUwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBRXm2TEfVc2DPhwR/do67XrHDz4FzAfBgNVHSMEGDAWgBSb8DXRV1S8RJEI55z8etM+2ZXtSjAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMAoGCCqGSM49BAMCA0gAMEUCIB+IJn+8uICEfEnONXufysFrmtYBcTppGomj1Pr8WZF8AiEA0c3LZ3OShcmWfin0kwWzbf39irEMvJlF1idothpb0Eg=","kid":"NAyCKly+hCg="},{"issuer":"C = BE O = eHealth - Belgium CN = Belgium Covid19 Country Signing CA 01","subject":"C = BE O = eHealth - Belgium CN = Belgium Covid19 DSC 01","notbefore":1622110367000,"notafter":1685182367000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHo\\nznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICLTCCAdOgAwIBAgIIXf7//TpWDVgwCgYIKoZIzj0EAwIwWTELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMS4wLAYDVQQDDCVCZWxnaXVtIENvdmlkMTkgQ291bnRyeSBTaWduaW5nIENBIDAxMB4XDTIxMDUyNzEwMTI0N1oXDTIzMDUyNzEwMTI0N1owSjELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMR8wHQYDVQQDDBZCZWxnaXVtIENvdmlkMTkgRFNDIDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHoznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyKOBkzCBkDAdBgNVHQ4EFgQUr/AjSs5HKJsXQVr617Z6OO2Z9h8wHwYDVR0jBBgwFoAUMc4oJrfby5Fk9eLZSMutpWhvX9UwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NlcnQtYXBwLmJlL3Jldm9rZWRMaXN0L2RnY19jc2NhMDEuY3JsMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiA56koPekERN3iWtlXwuD8rwBgbsTkZj2Yqe8kL2doIbwIhAKYOJyyIeR4Po523PY5rniN4jaaSkgefulusXXKiEthU","kid":"ODqaG8mnbro="},{"issuer":"C = BE O = eHealth - Belgium CN = Belgium Covid19 Country Signing CA 01","subject":"C = BE O = eHealth - Belgium CN = Belgium Covid19 DSC 02","notbefore":1637054072000,"notafter":1700126072000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEX79y3o+S4vY8UyqO1uzSAT6W7zUL\\npaFWqe6MqPue8fVNOhQ1bwN/yKHKN64HkcJ+sGIpLtgaJb4iGr06NiAWfQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICLTCCAdOgAwIBAgIIG+DS62eZmPswCgYIKoZIzj0EAwIwWTELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMS4wLAYDVQQDDCVCZWxnaXVtIENvdmlkMTkgQ291bnRyeSBTaWduaW5nIENBIDAxMB4XDTIxMTExNjA5MTQzMloXDTIzMTExNjA5MTQzMlowSjELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMR8wHQYDVQQDDBZCZWxnaXVtIENvdmlkMTkgRFNDIDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEX79y3o+S4vY8UyqO1uzSAT6W7zULpaFWqe6MqPue8fVNOhQ1bwN/yKHKN64HkcJ+sGIpLtgaJb4iGr06NiAWfaOBkzCBkDAdBgNVHQ4EFgQUGQizN6eLdUb55YpiOuht4TeeiigwHwYDVR0jBBgwFoAUMc4oJrfby5Fk9eLZSMutpWhvX9UwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NlcnQtYXBwLmJlL3Jldm9rZWRMaXN0L2RnY19jc2NhMDEuY3JsMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBm+UkB5ZbZO7CqGiaA4J4Xj/LhFP61DZV9gY54U47S4gIhAPFP3U9ekHl9ecHOxL0oEZ0/4GdaIZ1E0wnBFvB98UPm","kid":"aCU0KJl+gMg="},{"issuer":"C = IE ST = Dublin L = Dublin O = Department of Health OU = eHealth CN = CSCA_DGC_IE_01","subject":"C = IE O = Department of Health CN = validateqr.gov.ie 2020135457912391810539600999694555","notbefore":1625650281000,"notafter":1687858281000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETPE5ItolrGzLQLPqYxOT+orVmYJu\\nsLDsPWLwrK+bbJKBBtXBsrD2Py/osWYr9LF5ffORpzxmBUQmzp7K4uPiIw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICqjCCAlGgAwIBAgIJAIFaAnBKVQR5MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNzA3MDkzMTIxWhcNMjMwNjI3MDkzMTIxWjBrMQswCQYDVQQGEwJJRTEdMBsGA1UEChMURGVwYXJ0bWVudCBvZiBIZWFsdGgxPTA7BgNVBAMTNHZhbGlkYXRlcXIuZ292LmllIDIwMjAxMzU0NTc5MTIzOTE4MTA1Mzk2MDA5OTk2OTQ1NTUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARM8Tki2iWsbMtAs+pjE5P6itWZgm6wsOw9YvCsr5tskoEG1cGysPY/L+ixZiv0sXl985GnPGYFRCbOnsri4+Ijo4HQMIHNMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUT2vp7aj2JBxHrQ1vkpX4bZJoi10wHwYDVR0jBBgwFoAUXIe2JeQrVG0xki6dmWYLVblvTFAwSQYDVR0fBEIwQDA+oDygOoY4aHR0cHM6Ly9nZW4uZGlnaXRhbGNvdmlkY2VydGlmaWNhdGVzLmdvdi5pZS9hcGkvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCIAEEtN5Jh3HP0OTeYkyq0o4eaL0yGZnAbDhUUa0+StGTAiEA5trl/PUTtSwMNUSpc1UAA/viDLCW3FXyfx9cJaheFsQ=","kid":"PBpDVqnJ7Us="},{"issuer":"C = IE ST = Dublin L = Dublin O = Department of Health OU = eHealth CN = CSCA_DGC_IE_01","subject":"C = IE ST = Dublin L = Dublin O = Department of Health OU = eHealth CN = DGC CSR","notbefore":1625060335000,"notafter":1688132335000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZ\\nwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICmDCCAj+gAwIBAgIJAIFaAnBKVQR3MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNjMwMTMzODU1WhcNMjMwNjMwMTMzODU1WjByMQswCQYDVQQGEwJJRTEPMA0GA1UECAwGRHVibGluMQ8wDQYDVQQHDAZEdWJsaW4xHTAbBgNVBAoMFERlcGFydG1lbnQgb2YgSGVhbHRoMRAwDgYDVQQLDAdlSGVhbHRoMRAwDgYDVQQDDAdER0MgQ1NSMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8aOBtzCBtDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFBgOd1YgJce5VyyJvYhrUDZbtTrZMB8GA1UdIwQYMBaAFFyHtiXkK1RtMZIunZlmC1W5b0xQMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9jZXJ0Lmdvdi5pZS9DUkwvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCICD5ra8JbGVJCDS7k9BeY1D8SlL8dv8eVH8mMXKFJek4AiEA5j7KharjyLlp7GtXvJeS+Ht+0dgaaesqpMNfuPH7TmI=","kid":"eNNsg2jd4wA="},{"issuer":"C = PA O = FIRMA ELECTRONICA CN = AUTORIDAD NACIONAL PARA LA INNOVACION GUBERNAMENTAL","subject":"C = PA ST = Panama L = Panama O = AIG OU = AIG CN = AIG","notbefore":1631790882000,"notafter":1694862882000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6B5cdgxOlktZr67WAjgdIgoJwG5Z\\nSTRBM6yEZb0y3rrlIHQi95rlKO6dFtQxo5rRPZYjvWSbaqVBgvbc0djcxw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDQDCCAiigAwIBAgIUNLMk961tL/NV8V23sWCKJoUwj4kwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UEBhMCUEExGjAYBgNVBAoMEUZJUk1BIEVMRUNUUk9OSUNBMTwwOgYDVQQDDDNBVVRPUklEQUQgTkFDSU9OQUwgUEFSQSBMQSBJTk5PVkFDSU9OIEdVQkVSTkFNRU5UQUwwHhcNMjEwOTE2MTExNDQyWhcNMjMwOTE2MTExNDQyWjBZMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMQ8wDQYDVQQHDAZQYW5hbWExDDAKBgNVBAoMA0FJRzEMMAoGA1UECwwDQUlHMQwwCgYDVQQDDANBSUcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAToHlx2DE6WS1mvrtYCOB0iCgnAbllJNEEzrIRlvTLeuuUgdCL3muUo7p0W1DGjmtE9liO9ZJtqpUGC9tzR2NzHo4G8MIG5MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUhd6zV7FXbysIfctxWIRFj/snGO8wHwYDVR0jBBgwFoAUjQVO+fAPdNAQMNdSugA4+rjnIVQwNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3d3dy5wa2kuZ29iLnBhL2NybHMvY2Fnb2IuY3JsMDAGA1UdJQQpMCcGCysGAQQBjjePZQEBBgsrBgEEAY43j2UBAgYLKwYBBAGON49lAQMwDQYJKoZIhvcNAQELBQADggEBAIJlTzhpBZn/hDvsviHRVpk7W+ICxubhJ7nEOjC6GLECQ22/dWmLo1U98BEv1nZKA1CF2/Uo2vdzryMILJ8tysDjs/7WOa8WH3oZ0f8FVj/vj/9H07xI2bJuQfX3O+SO5LvuMtZzyxBkIVdTn2B7PBsO9AzXPRn8m1W068VTema97toGiqqOn9Yhe6nhgjD4d+AGwmLlHSl/73n+oYzmmznf3JJTwf5Of1t2lH3P3crTyvfLZZHvf6ubQ7JzBcOgRXNgizksh6YNtyZhAjMhHgV6UfOe0ik14IE8xqWkf3k4aq8RS2oSdAeWMQ4rZbPaswKWBWRuNVywheR+xjSaO6o=","kid":"Ui7DXQikstE="},{"issuer":"C = AM L = Yerevan O = Armed OU = DGCOperations CN = CSCA_DGC_AM_01","subject":"C = AM ST = Some-State L = Yerevan O = Armed CN = DSC_DGC_AM_O1","notbefore":1633589669000,"notafter":1696661669000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGsoQ+d21h6C2haw4Ty4q/38Ux+t5\\n1x9qe6EhVH30tsO5cxpvULTb+FFQbkcHcu0V9WbqIyIMaANSYH4ntN1H4A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICRTCCAeqgAwIBAgIUfvIoqYr4oy/CWPFHPFoVgTgAPLUwCgYIKoZIzj0EAwIwYDELMAkGA1UEBhMCQU0xEDAOBgNVBAcMB1llcmV2YW4xDjAMBgNVBAoMBUFybWVkMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMRcwFQYDVQQDDA5DU0NBX0RHQ19BTV8wMTAeFw0yMTEwMDcwNjU0MjlaFw0yMzEwMDcwNjU0MjlaMFwxCzAJBgNVBAYTAkFNMRMwEQYDVQQIDApTb21lLVN0YXRlMRAwDgYDVQQHDAdZZXJldmFuMQ4wDAYDVQQKDAVBcm1lZDEWMBQGA1UEAwwNRFNDX0RHQ19BTV9PMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBrKEPndtYegtoWsOE8uKv9/FMfredcfanuhIVR99LbDuXMab1C02/hRUG5HB3LtFfVm6iMiDGgDUmB+J7TdR+CjgYUwgYIwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBRqxeKvv2wDiKAhCFTKOAz+UVyatDAfBgNVHSMEGDAWgBTTJV9hj0P3rLMweZAdJnUKadCwaDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCW6k0AfZPRXJBATVg9tHajdGcerq93YUnw3BJt++DM1QIhAMhUzyF6wEDAq+wJbTeI2mTc0+qVWbNTzchg870FSU29","kid":"W0NjksmJMm0="},{"issuer":"C = RS L = Beograd 2.5.4.97 = VATRS-110177886 O = Kancelarija za informacione tehnologije i elektronsku upravu CN = RS NBCSCA","subject":"CN = RS PROD DSC2 O = Kancelarija za informacione tehnologije i elektronsku upravu C = RS","notbefore":1636986858000,"notafter":1700058858000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtc0dmUPU8wLDfYTVnSXD\\nxhCr4AHEG+GKSy13pMGI5Fj8IK1e9JVLrLoemtLnlaFV5WAPr6G8ialeG9TV9Xnw\\nfiiWzAaxLT28u8/8MG4jihRKw5cVAPC0mizABynleAzU+dOYkNFlmwEpt6M6+VXl\\n39aild/WVqMnZ0I/k/Vg0tQe5lS7aBPBtb7WJaaOYhzDx2hcv0z7IrYSBmigWgl3\\njOO0TN+/1viQPtMbtbvC6gxXGDyQ8/HCwgt69HYNDHrBglFjLIvbelLuTsgoDooz\\nIV+BUKIDal2vtAGvd1cDrN6YvqqiZRwqOn3gtv1oj/XmZUnl7aMtKisQ1MuqKVHm\\ntQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIFKjCCAxKgAwIBAgIUBsFy8hwKgnDAZGz/bi/+8NsJbrswDQYJKoZIhvcNAQELBQAwgZQxCzAJBgNVBAYTAlJTMRAwDgYDVQQHEwdCZW9ncmFkMRgwFgYDVQRhEw9WQVRSUy0xMTAxNzc4ODYxRTBDBgNVBAoTPEthbmNlbGFyaWphIHphIGluZm9ybWFjaW9uZSB0ZWhub2xvZ2lqZSBpIGVsZWt0cm9uc2t1IHVwcmF2dTESMBAGA1UEAxMJUlMgTkJDU0NBMB4XDTIxMTExNTE0MzQxOFoXDTIzMTExNTE0MzQxOFowazEVMBMGA1UEAwwMUlMgUFJPRCBEU0MyMUUwQwYDVQQKDDxLYW5jZWxhcmlqYSB6YSBpbmZvcm1hY2lvbmUgdGVobm9sb2dpamUgaSBlbGVrdHJvbnNrdSB1cHJhdnUxCzAJBgNVBAYTAlJTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtc0dmUPU8wLDfYTVnSXDxhCr4AHEG+GKSy13pMGI5Fj8IK1e9JVLrLoemtLnlaFV5WAPr6G8ialeG9TV9XnwfiiWzAaxLT28u8/8MG4jihRKw5cVAPC0mizABynleAzU+dOYkNFlmwEpt6M6+VXl39aild/WVqMnZ0I/k/Vg0tQe5lS7aBPBtb7WJaaOYhzDx2hcv0z7IrYSBmigWgl3jOO0TN+/1viQPtMbtbvC6gxXGDyQ8/HCwgt69HYNDHrBglFjLIvbelLuTsgoDoozIV+BUKIDal2vtAGvd1cDrN6YvqqiZRwqOn3gtv1oj/XmZUnl7aMtKisQ1MuqKVHmtQIDAQABo4GbMIGYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFPHhcSjAsmKP7ijI10VI7Lc8dDTIMDgGA1UdHwQxMC8wLaAroCmGJ2h0dHBzOi8vY2xvdWQuZWlkLmdvdi5ycy9jcmwvbmJjc2NhLmNybDAdBgNVHQ4EFgQU5/vY+2xxURwDV2bNEeYIFGMWSLgwDQYJKoZIhvcNAQELBQADggIBAHQexmp5RK8OA8j/SKhwUpiUTSvgQg/2/UgdQ2v5x4lzo8N9cQ6fS5VxY5YK3CpJBNEz8i5qRmzsD0UozOvEeLbcum3L4hCoOPXWhsPMcRkaEEwYn5kDP4Evz7iqmqviHL74BBxx3zZ9WVfoq8SCbkawywrw2Hwtoeuo3XKOWDK0jsesewcEHWv9MfEXhKjZtxlS0v1lkCF/5AvSEUPIYz4FasPeCoX31JIizErdZZLXiy5FGKxxBW6LP7GUAQkouKDeLZLsV/5247rNADICYkrOyd2jtZY37BY6UobYNH7flofqbwTbXfvfT+xD9cb5uyPTWD18lukcQirJahE64Fsa2ZE/E6+SiFDRsLTazEItW0bVAECA2gQd8Gg2FesBMMlJbQFTGxXdU4FQCP31/SlIc9DJjo8KIEfwr+khMRUaD91wq1Nwfmf3NuB4qv3nX6rQI9bAoCNs0/eU1A8LqJ4ugKf0LUHpfMTk585lhSyHKeXX823Uu5cPnk05Z1zDVJ72VrH57qETto+4gJ1DK2iLcgJHWkUQqwiWHygWzDsVvFIv26CRSItK2JpV2gZM8sTYFAoqquAlzyAkvumdvwpg4aUWMyWHZV0W9X71YGM1To8ZPU1v4dIOB7ESjGwEluD35arlYn9IjuvQBbnO++/Cr/STq2n9DS/mG2XDkVi/","kid":"YgBnrpZDGXk="},{"issuer":"C = SE O = Swedish eHealth Agency OU = Digital Covid Certificate Services 2.5.4.97 = 202100-6552 CN = Swedish Digital Covid Certificate CSCA","subject":"C = SE O = Swedish eHealth Agency 2.5.4.97 = 202100-6552 CN = DCC Signer","notbefore":1624255651000,"notafter":1687328851000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaLOo1IGTspZSdr2BqdAvKjZjHfW/\\nZq8VDrI6nEhBlXUr3VCDlzjrXo5v6ix2qF9RCySJsHgZxUrqWQpFQbrbMw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDbzCCAtGgAwIBAgIRAKzjP3XRAzwsEbbfxdhLsK0wCgYIKoZIzj0EAwIwgaIxCzAJBgNVBAYTAlNFMR8wHQYDVQQKDBZTd2VkaXNoIGVIZWFsdGggQWdlbmN5MSswKQYDVQQLDCJEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIFNlcnZpY2VzMRQwEgYDVQRhDAsyMDIxMDAtNjU1MjEvMC0GA1UEAwwmU3dlZGlzaCBEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIENTQ0EwHhcNMjEwNjIxMDYwNzMxWhcNMjMwNjIxMDYyNzMxWjBZMQswCQYDVQQGEwJTRTEfMB0GA1UECgwWU3dlZGlzaCBlSGVhbHRoIEFnZW5jeTEUMBIGA1UEYQwLMjAyMTAwLTY1NTIxEzARBgNVBAMMCkRDQyBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARos6jUgZOyllJ2vYGp0C8qNmMd9b9mrxUOsjqcSEGVdSvdUIOXOOtejm/qLHaoX1ELJImweBnFSupZCkVButszo4IBLjCCASowCQYDVR0TBAIwADArBgNVHSMEJDAigCACTjrfhadUh3CvxKG9ilhNH5em/z3iqGdiDEqCy0uCujApBgNVHQ4EIgQgcumMkPVDerXtTa5yvY0Vp+vbcHWxuiqfF0N9MU0I6hEwDgYDVR0PAQH/BAQDAgOIMD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHBzOi8vZGdjZy5jb3ZpZGJldmlzLnNlL2NzY2EvY3JsL2NzY2EwMS5jcmwwRwYIKwYBBQUHAQEEOzA5MDcGCCsGAQUFBzABhitodHRwczovL2RnY2cuY292aWRiZXZpcy5zZS9jc2NhL29jc3AvY3NjYTAxMCsGA1UdEQQkMCKBIHJlZ2lzdHJhdG9yQGVoYWxzb215bmRpZ2hldGVuLnNlMAoGCCqGSM49BAMCA4GLADCBhwJCAJH08xci9Y2aQQcUJTnA+WIVSblO5K/ncVsYFd+jzM/m1chhh7CD75oN5twgWMl0aPMcjqaylNH/p82zPONaERqmAkEyCrbICfyUiio20CrFRmWS8KWq4LL8dkHapxgqVrG75/3xrmhAdxlH1WoC+Af1I602E6dsaCZw6mmMY0GPOEvGhw==","kid":"Z7k1XpIWZOE="},{"issuer":"C = MA OU = Ministry of Health O = Kingdom of Morocco CN = CSCA Health MA","subject":"C = MA O = Kingdom of Morocco OU = Ministry of Health CN = DSC-MA","notbefore":1631800460000,"notafter":1694872460000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvILEthEWN9hu06zQ9GCUCthQJ9OA\\na/0eskYOKbfQZVEf9kNzPEH9qbVrwvr8jhwKL6CKoXAefNLlrBKZ+Mtpzg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDSzCCAvCgAwIBAgITNQAAAASf3f6XNUKvGAAAAAAABDAKBggqhkjOPQQDAjBgMQswCQYDVQQGEwJNQTEbMBkGA1UECxMSTWluaXN0cnkgb2YgSGVhbHRoMRswGQYDVQQKExJLaW5nZG9tIG9mIE1vcm9jY28xFzAVBgNVBAMTDkNTQ0EgSGVhbHRoIE1BMB4XDTIxMDkxNjEzNTQyMFoXDTIzMDkxNjEzNTQyMFowWDELMAkGA1UEBhMCTUExGzAZBgNVBAoTEktpbmdkb20gb2YgTW9yb2NjbzEbMBkGA1UECxMSTWluaXN0cnkgb2YgSGVhbHRoMQ8wDQYDVQQDEwZEU0MtTUEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS8gsS2ERY32G7TrND0YJQK2FAn04Br/R6yRg4pt9BlUR/2Q3M8Qf2ptWvC+vyOHAovoIqhcB580uWsEpn4y2nOo4IBjzCCAYswPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIgvu3EoKquCSH3YEMhdOqaoTo4wQVh/uOCoXE3wgCAWQCAQwwMQYDVR0lBCowKAYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGCisGAQQBgjcKAwwwDgYDVR0PAQH/BAQDAgbAMAwGA1UdEwEB/wQCMAAwPQYJKwYBBAGCNxUKBDAwLjAOBgwrBgEEAQCON49lAQEwDgYMKwYBBAEAjjePZQECMAwGCisGAQQBgjcKAwwwHQYDVR0OBBYEFKda1UHydNCDDid5anJrgzvYRipXMB8GA1UdIwQYMBaAFMKQ1XKb4BABLnDYaZMGbye1kxhEMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9OQk1vcm9jY28ubWEvQ1JMcy9NQS1IZWFsdGguY3JsMEEGCCsGAQUFBwEBBDUwMzAxBggrBgEFBQcwAYYlaHR0cDovL05CTW9yb2Njby5tYS9BSUEvTUEtSGVhbHRoLmNydDAKBggqhkjOPQQDAgNJADBGAiEAozqhzCknO/8+LbUU7EWGoKr9Xx9gx7u/jh4BHN3mt5kCIQDit7cWPpLSCWOr25AHpmdccHK6kGk0mOlAPVIGFnssdQ==","kid":"ZpnsokK1DgM="},{"issuer":"C = IL 0.9.2342.19200300.100.1.25 = IL 0.9.2342.19200300.100.1.25 = GOV 0.9.2342.19200300.100.1.25 = HEALTH 0.9.2342.19200300.100.1.25 = MOH ST = Israel L = Jerusalem O = Ministry of Health OU = Digital Health CN = CSCA-Health-DCG-IL-01","subject":"C = IL ST = Israel L = Jerusalem O = Ministry of Health OU = Digital Health CN = IL-NB-DSC-01","notbefore":1630826160000,"notafter":1693898160000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcw+UZUnryP4rqSw+a8xQw4wLHZkc\\nu4MDjJP7QeBUEpDt8xh4i4RSIBEJrBkAukSSobRDkwMb0dSCsWwK0rfMgQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGDCCA76gAwIBAgITHQAAAAdFhwvAgMs01AAAAAAABzAKBggqhkjOPQQDAjCB3jELMAkGA1UEBhMCSUwxEjAQBgoJkiaJk/IsZAEZFgJJTDETMBEGCgmSJomT8ixkARkWA0dPVjEWMBQGCgmSJomT8ixkARkWBkhFQUxUSDETMBEGCgmSJomT8ixkARkWA01PSDEPMA0GA1UECBMGSXNyYWVsMRIwEAYDVQQHEwlKZXJ1c2FsZW0xGzAZBgNVBAoTEk1pbmlzdHJ5IG9mIEhlYWx0aDEXMBUGA1UECxMORGlnaXRhbCBIZWFsdGgxHjAcBgNVBAMTFUNTQ0EtSGVhbHRoLURDRy1JTC0wMTAeFw0yMTA5MDUwNzE2MDBaFw0yMzA5MDUwNzE2MDBaMH8xCzAJBgNVBAYTAklMMQ8wDQYDVQQIEwZJc3JhZWwxEjAQBgNVBAcTCUplcnVzYWxlbTEbMBkGA1UEChMSTWluaXN0cnkgb2YgSGVhbHRoMRcwFQYDVQQLEw5EaWdpdGFsIEhlYWx0aDEVMBMGA1UEAxMMSUwtTkItRFNDLTAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcw+UZUnryP4rqSw+a8xQw4wLHZkcu4MDjJP7QeBUEpDt8xh4i4RSIBEJrBkAukSSobRDkwMb0dSCsWwK0rfMgaOCAbcwggGzMD4GCSsGAQQBgjcVBwQxMC8GJysGAQQBgjcVCIHfvEqGsP5shImdOoHa71aE5rZjgR6HqL9hhrfIGwIBZAIBATA6BgNVHSUEMzAxBggrBgEFBQcDAwYLKwYBBAGON49lAQMGCysGAQQBjjePZQEBBgsrBgEEAY43j2UBAjAOBgNVHQ8BAf8EBAMCB4AwSAYJKwYBBAGCNxUKBDswOTAKBggrBgEFBQcDAzANBgsrBgEEAY43j2UBAzANBgsrBgEEAY43j2UBATANBgsrBgEEAY43j2UBAjAdBgNVHQ4EFgQUwT5hHIGSYoKxJeYKXe2rSc9vQCQwHwYDVR0jBBgwFoAUBb9drdvo+jTMbWZX2BWGWxPT3uwwRwYDVR0fBEAwPjA8oDqgOIY2aHR0cDovL2NkcC5oZWFsdGguZ292LmlsL2NybC9DU0NBLUhlYWx0aC1EQ0ctSUwtMDEuY3JsMFIGCCsGAQUFBwEBBEYwRDBCBggrBgEFBQcwAoY2aHR0cDovL3BraS5oZWFsdGguZ292LmlsL3BraS9DU0NBLUhlYWx0aC1EQ0ctSUwtMDEuY3J0MAoGCCqGSM49BAMCA0gAMEUCIQCWjjvyGozH4GMhl6d81s5PolAOAXXipAvnnP6RiLGt4QIgabSTGYvdNpepTEdQ7+F8KMdiBZStUJ1utwJqVN1Ov/M=","kid":"cS/wou0g/po="},{"issuer":"C = VA O = STATO CITTA’ DEL VATICANO OU = DIREZIONE DI SANITA\' E IGIENE CN = CSCA_DGC_VA_01","subject":"C = VA O = STATO CITTA’ DEL VATICANO OU = DIREZIONE DI SANITA\' E IGIENE CN = DSC_DGC_VA_01","notbefore":1624614420000,"notafter":1687686420000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEI6Q/krjPDaHJ2WsrBzR9sGYnYjFq\\nkflAAWhJgXbXt3RuUVfJt4c53N6v9J2BE3kPqCVl9FbYrwqQ0vZ+Ps5e+Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICbzCCAhSgAwIBAgIIc/6LARpWk7YwCgYIKoZIzj0EAwIwdDELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFzAVBgNVBAMMDkNTQ0FfREdDX1ZBXzAxMB4XDTIxMDYyNTA5NDcwMFoXDTIzMDYyNTA5NDcwMFowczELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFjAUBgNVBAMMDURTQ19ER0NfVkFfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQjpD+SuM8NocnZaysHNH2wZidiMWqR+UABaEmBdte3dG5RV8m3hznc3q/0nYETeQ+oJWX0VtivCpDS9n4+zl75o4GQMIGNMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFHjsdxdRG2UcVpJ5tq07/6TxOa+jMB8GA1UdIwQYMBaAFL2EdVekv64Aod98sSbpzAqLftAtMAsGA1UdDwQEAwIDuDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCedrxueUJyy8gthgOF7b2Fdv+chSkliDs1z2oOuRagWQIhAJh4vf8YxtkfC3MB+B9y1x2OwC2GRGFCtaF5WaB7K6F5","kid":"crm1HLAeaTo="},{"issuer":"C = CZ O = MZCR CN = CZ DSC CSCA 1","subject":"C = CZ O = MZCR CN = CZ DSC 1","notbefore":1620311040000,"notafter":1683383040000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3l\\nAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKUw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0AzMA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDUwNjE0MjQwMFoXDTIzMDUwNjE0MjQwMFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3lAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKU6NdMFswHQYDVR0OBBYEFDReRuL4VneLcO8YqdVWn2+gpPl9MB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQAZpv8/b4k+QxliHeWKAiJ34OKMEYh8xn1Dc9+55f+h0NLY4ZSelGrf2SrJIt9yhomzjOQUARqiumbuSzZMMPUNzKIRsPSa1NkfRq7y3QehG+cuhKKdLYpWErjRdp97gubCVGLXld7+iuschYCwAztKnyPof94yPgAGkdCEnTNW1z6tc33E/Fnd59nF8/JBZdSTt2uRXxFY8plasmoRzdXYASwTUyXXheZcG+KNYJ5NxYSF3LJeF81ucJ6mWkAk+MwoJXVu7VVZ6pn51JPL+YyArV2FaN8lWs9QYW2XgCuUTm4IC9T/BgVKTstr6eGQiHLOEbyE8NmLond1Bzv27ClLXEBvL9lIqJ5hJFvVWbfpNPvJAjI4z3LA7DuYgQ3ws8mf0iMW+4aOkLCd7dv0HNcUPoHUOTelgcfAzEsZuajUcH3uGwgcs2wEBdW1KfqEP8L7bgwBGC+UGe1yeGM4k7OYOnGP2SMm3Gk+MrYaqW51Fun20bcXkagDxMJh06PpDm4=","kid":"e4lH6I4iMIM="},{"issuer":"C = CZ O = MZCR CN = CZ DSC CSCA 1","subject":"C = CZ O = MZCR CN = CZ DSC 2","notbefore":1623319578000,"notafter":1686391578000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2k\\nYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0A0MA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDYxMDEwMDYxOFoXDTIzMDYxMDEwMDYxOFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2kYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOqNdMFswHQYDVR0OBBYEFAKjMTdShDzGev/eNqlHHzJIHdXVMB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQA3d3iNHRpsKWia1XiF5QQlKUFwcvDdtAlFhfmy99oI+ywmppys7xoeOrIKazIyAyZ3tNImPkcde0ARSvMmAzsr6T/BqxsV78htXzUoILy1z6Y8QZ8+RXcNmR79k9iqudKv5tWZ2S2ticNeo78WV6oB18oV5/hhLlkS/NQC5wZ5LJar+wEF1VaxkvG2GmooaODPgPbRutjStTamSu2Din4SRg8pIWlyCMy0qnzVDMzdYUsjvmC3myxzHevFSTs36hj1aiLxaeAmVTvCi39o6s0EBjyM8Yk2WHJS9k5EkvBcJcEx4z55RkBLKo4PJalQS1hJc62GFM3J3lyyKqecSZBn2xj5bM8UEkI+8ylHsF/D3vrjtu1MaxM9loTogvf8wu4S7DMP/yXBanmr2G4k132JbSX7goclMF2zel7kGAn2B2vUQrGM76Rqb4lkddPWCc+0dossH1zAvbOAo5+raC9xaUU00GC3wR7+30xjJtBw0JbDlSBk3l1xnGnvLehkqV8=","kid":"fNf883wPIEg="},{"issuer":"CN = Faroe Islands Health Authority CSCA v1 O = Gjaldstovan C = FO","subject":"CN = DSC_DGC_FO_345334_TEST_01 O = SJUKRAHUSVERKID C = FO","notbefore":1625755197000,"notafter":1688827197000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyOmUr7E52s+yofKQE/TmtLQxLPEp\\nZnZMA/OL647R1ZZG+O3tA7F3CfMXmgZZV4OOjuoaAbgHh01F5MdEg1eQpg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICwTCCAmegAwIBAgIUNEcJXMYBcHdOAkMYq/Oxeh8O2hwwCgYIKoZIzj0EAwIwVDEvMC0GA1UEAwwmRmFyb2UgSXNsYW5kcyBIZWFsdGggQXV0aG9yaXR5IENTQ0EgdjExFDASBgNVBAoMC0dqYWxkc3RvdmFuMQswCQYDVQQGEwJGTzAeFw0yMTA3MDgxNDM5NTdaFw0yMzA3MDgxNDM5NTdaMEsxIjAgBgNVBAMMGURTQ19ER0NfRk9fMzQ1MzM0X1RFU1RfMDExGDAWBgNVBAoMD1NKVUtSQUhVU1ZFUktJRDELMAkGA1UEBhMCRk8wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATI6ZSvsTnaz7Kh8pAT9Oa0tDEs8SlmdkwD84vrjtHVlkb47e0DsXcJ8xeaBllXg46O6hoBuAeHTUXkx0SDV5Cmo4IBHjCCARowHwYDVR0jBBgwFoAU7jyBpuYetlF0RODQ9DAz4upqvqEwXAYDVR0gBFUwUzBRBggqgVCBPQIBATBFMEMGCCsGAQUFBwIBFjdodHRwczovL3JlcG9zaXRvcnkuc2FtbGVpa2kuZm8vbGVnYWwtcmVwb3NpdG9yeS9laGVhbHRoMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwuc2FtbGVpa2kuZm8vRmFyb2UtSXNsYW5kcy1IZWFsdGgtQXV0aG9yaXR5LUNTQ0EtdjEuY3JsMB0GA1UdDgQWBBRoTJ4+NjLdr8NB6IGKfB1XhMs0kjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAIFSB54lOmRGpWORORdkNMCupU6c+ujY64AOdb3Sp9rNAiAXlZatIjO4ENXA4H+WJEa4ZUHRAxKFEh//IXBloU0V3w==","kid":"fNstNUxgGSI="},{"issuer":"CN = Faroe Islands Health Authority CSCA v1 O = Gjaldstovan C = FO","subject":"CN = DSC_DGC_FO_345334_VACCINATION_01 O = SJUKRAHUSVERKID C = FO","notbefore":1625755531000,"notafter":1688827531000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIp1kjKkjq85G7p7edy5EfNsWF0l4\\nXZu5Rz+nL3viEVP/qiZYWwsQ30RXMDwixcFXI2tSzfu82J31dIEGQ3Ceog==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICyTCCAm6gAwIBAgIUJUU4n5bintk3G2D7kThvmJ+NHlwwCgYIKoZIzj0EAwIwVDEvMC0GA1UEAwwmRmFyb2UgSXNsYW5kcyBIZWFsdGggQXV0aG9yaXR5IENTQ0EgdjExFDASBgNVBAoMC0dqYWxkc3RvdmFuMQswCQYDVQQGEwJGTzAeFw0yMTA3MDgxNDQ1MzFaFw0yMzA3MDgxNDQ1MzFaMFIxKTAnBgNVBAMMIERTQ19ER0NfRk9fMzQ1MzM0X1ZBQ0NJTkFUSU9OXzAxMRgwFgYDVQQKDA9TSlVLUkFIVVNWRVJLSUQxCzAJBgNVBAYTAkZPMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIp1kjKkjq85G7p7edy5EfNsWF0l4XZu5Rz+nL3viEVP/qiZYWwsQ30RXMDwixcFXI2tSzfu82J31dIEGQ3CeoqOCAR4wggEaMB8GA1UdIwQYMBaAFO48gabmHrZRdETg0PQwM+Lqar6hMFwGA1UdIARVMFMwUQYIKoFQgT0CAQEwRTBDBggrBgEFBQcCARY3aHR0cHM6Ly9yZXBvc2l0b3J5LnNhbWxlaWtpLmZvL2xlZ2FsLXJlcG9zaXRvcnkvZWhlYWx0aDAWBgNVHSUEDzANBgsrBgEEAY43j2UBAjBSBgNVHR8ESzBJMEegRaBDhkFodHRwOi8vY3JsLnNhbWxlaWtpLmZvL0Zhcm9lLUlzbGFuZHMtSGVhbHRoLUF1dGhvcml0eS1DU0NBLXYxLmNybDAdBgNVHQ4EFgQU784333ONVF7EvtIgnj6nYCOli8QwDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0kAMEYCIQDOLxwWGsaCNVSWy3EpEkSIqNub0Ci4kSOu/O+vvPq64gIhAK5cop6G89f+Z39b52KoyZKcFq3zLCNOdgPg1280oBnN","kid":"l8W4rhh9nTs="},{"issuer":"C = TR ST = ANKARA L = ÇANKAYA O = T.C. SAĞLIK BAKANLIĞI OU = SAĞLIK BİLGİ SİSTEMLERİ GENEL MÜDÜRLÜĞÜ CN = healthpassgwprod.saglik.gov.tr","subject":"C = TR ST = ANKARA L = ÇANKAYA O = T.C. SAĞLIK BAKANLIĞI OU = SAĞLIK BİLGİ SİSTEMLERİ GENEL MÜDÜRLÜĞÜ CN = healthpassgwuat.saglik.gov.tr","notbefore":1628103725000,"notafter":1691175725000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4gGExz9UXm77v21gaWNSjjtigr9V\\nIyGL9S92FqnF99YqS/ekrLWvW4N6fmHfUST9VJLJVaB9uP3SX1rXlfq7lg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDZDCCAwqgAwIBAgIJAKh1+Khc/oXwMAkGByqGSM49BAEwgdIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQIDAZBTktBUkExEzARBgNVBAcMCsODwodBTktBWUExJDAiBgNVBAoMG1QuQy4gU0HDhMKeTElLIEJBS0FOTEnDhMKeSTFOMEwGA1UECwxFU0HDhMKeTElLIELDhMKwTEfDhMKwIFPDhMKwU1RFTUxFUsOEwrAgR0VORUwgTcODwpxEw4PCnFJMw4PCnMOEwp7Dg8KcMScwJQYDVQQDDB5oZWFsdGhwYXNzZ3dwcm9kLnNhZ2xpay5nb3YudHIwHhcNMjEwODA0MTkwMjA1WhcNMjMwODA0MTkwMjA1WjCB0TELMAkGA1UEBhMCVFIxDzANBgNVBAgMBkFOS0FSQTETMBEGA1UEBwwKw4PCh0FOS0FZQTEkMCIGA1UECgwbVC5DLiBTQcOEwp5MSUsgQkFLQU5MScOEwp5JMU4wTAYDVQQLDEVTQcOEwp5MSUsgQsOEwrBMR8OEwrAgU8OEwrBTVEVNTEVSw4TCsCBHRU5FTCBNw4PCnETDg8KcUkzDg8Kcw4TCnsODwpwxJjAkBgNVBAMMHWhlYWx0aHBhc3Nnd3VhdC5zYWdsaWsuZ292LnRyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4gGExz9UXm77v21gaWNSjjtigr9VIyGL9S92FqnF99YqS/ekrLWvW4N6fmHfUST9VJLJVaB9uP3SX1rXlfq7lqOByDCBxTAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFCswn+ChTJKoWppyEWvYjIGyDJybMB8GA1UdIwQYMBaAFPbenUPEZ1KYGCZLyK4/nzCJVz+bMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9jcmwuZXhhbXBsZWRvbWFpbi5leGFtcGxlL0NSTC9DU0NBLmNybDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMAkGByqGSM49BAEDSQAwRgIhAMdvZvXW4yhE0096flq4umtUExjaOSOM6bob8cMsriqbAiEAv5b1d/EFA0rM9LYK1jt49+bSOgGxcxgs0jAOYzAjMrU=","kid":"gEIK4Q/lAG0="},{"issuer":"C = RO O = Ministerul Sanatatii CN = AC Ministerul Sanatatii","subject":"C = RO O = Ministerul Sanatatii CN = BSC","notbefore":1624023359000,"notafter":1782135359000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1Di\\nHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5cw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIElDCCAnygAwIBAgIFFhg4IyAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCUk8xHTAbBgNVBAoMFE1pbmlzdGVydWwgU2FuYXRhdGlpMSAwHgYDVQQDDBdBQyBNaW5pc3RlcnVsIFNhbmF0YXRpaTAeFw0yMTA2MTgxMzM1NTlaFw0yNjA2MjIxMzM1NTlaMDoxCzAJBgNVBAYTAlJPMR0wGwYDVQQKDBRNaW5pc3RlcnVsIFNhbmF0YXRpaTEMMAoGA1UEAwwDQlNDMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1DiHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5c6OCAVYwggFSMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUVyznYDPTSIjlI6bI6W+mgQc9JjwwHwYDVR0jBBgwFoAUMuKQDubF6PpGuKuAPWshl3a4SCEwGgYDVR0RBBMwEaQPMA0xCzAJBgNVBAcMAlJPMBoGA1UdEgQTMBGkDzANMQswCQYDVQQHDAJSTzAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vY2Euc3RzaXNwLnJvL2NybC9ER0MuY3JsMDMGA1UdJQQsMCoGDCsGAQQBAI43j2UBAQYMKwYBBAEAjjePZQECBgwrBgEEAQCON49lAQMwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vY2Euc3RzaXNwLnJvOjI1NjAwKwYDVR0QBCQwIoAPMjAyMTA0MDEwMDAwMDBagQ8yMDI2MDcwMTAwMDAwMFowDQYJKoZIhvcNAQELBQADggIBAFLRYkrv2Jp8XNhFJbMUviTLgPsDgcFDQwzdU4RH/KY3vjlIqxI/o40wct9QrN5FqRDTVIYD4Z4vLy8vhigh+DrdWfaBK+SGw11ZwigDem0Unjpqz0aFTotv8hry5n2jY/gf6YpU8pMd3t0dNF5Je5hrY1YLPJdt+BMWAizRwSAaa/OqTDP2blNqebrUTpsiXnxMXRiIHZl596RiSVsiwI/4PhU/HhfbMCg4kO8YUtgTBzWvBGohG0Znyi2bQFhwWEa1jZc2YfsIqWu4hwGz0zWOKMyx5ULZS3qkQ0EIHH2XrOx2ZxEc/5vZT27nTlKW0FCtBWeB36rLy/9dYbm+wjB86gvjYEQLAoFSY5GyCxVHaQE/HK8nFqM0oFq/4u0D7ZN9o6N6i4EfGhSRye0NCld3iaM9JdKmQNoCE9fd9OfMG9HlrQbIZvsjZ3btvtiC/R/LoyvrKz2EVbePZIVj03+GelCI0/jWq+w9YK3JIGhBfMjvCK/QnphOm0otuiuEY+0QYPKIx/c8zU5H4cEWp4NamsIRTpP13Yazh4NVjCNAU+J1rbcwGkJIRXHpL6QqL1WNt9zZSMXvw+vBoBq8yBqeLGlxPr+DFL79xhRBZnpp5mn2vUmR77k1745VwwGVMw/t9K28y5HpLcTp49f3wR0bDC+K0n/8PdcrhOXh+DTP","kid":"hA1+pwEOxCI="},{"issuer":"C = AL O = NAIS CN = NAIS Class 3 Certification Authority","subject":"C = AL O = Ministria e Shendetesise dhe Mbrojtjes Sociale OU = Production CN = Ministria e Shendetesise dhe Mbrojtjes Sociale","notbefore":1631192067000,"notafter":1662728067000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENFtonAma5ngnltfk78rprtlz8Cue\\n6/t2XzvM/OR3wOn/1nD4QDWTP0KjGsFtiJ80Aed5gQ0JbMXUL8M2mQyQPw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIETzCCAzegAwIBAgILQ/9i89Nx5cy6y84wDQYJKoZIhvcNAQELBQAwSzELMAkGA1UEBhMCQUwxDTALBgNVBAoTBE5BSVMxLTArBgNVBAMTJE5BSVMgQ2xhc3MgMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0yMTA5MDkxMjU0MjdaFw0yMjA5MDkxMjU0MjdaMIGUMQswCQYDVQQGEwJBTDE3MDUGA1UECgwuTWluaXN0cmlhIGUgU2hlbmRldGVzaXNlIGRoZSBNYnJvanRqZXMgU29jaWFsZTETMBEGA1UECwwKUHJvZHVjdGlvbjE3MDUGA1UEAwwuTWluaXN0cmlhIGUgU2hlbmRldGVzaXNlIGRoZSBNYnJvanRqZXMgU29jaWFsZTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDRbaJwJmuZ4J5bX5O/K6a7Zc/Arnuv7dl87zPzkd8Dp/9Zw+EA1kz9CoxrBbYifNAHneYENCWzF1C/DNpkMkD+jggGzMIIBrzBmBggrBgEFBQcBAQRaMFgwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmFrc2hpLmdvdi5hbDAwBggrBgEFBQcwAoYkaHR0cDovL2NlcnRzLmFrc2hpLmdvdi5hbC9jbGFzczMuY3J0MA4GA1UdDwEB/wQEAwIGwDAfBgNVHSMEGDAWgBSHJqj72ytRmznQmNb0xjNWR1zYBTAdBgNVHQ4EFgQUomIXCcGEr8gLcxPBp8qNqsAwuywwSwYDVR0gBEQwQjBABgwrBgEEAYKxbAoBAQMwMDAuBggrBgEFBQcCARYiaHR0cDovL3d3dy5ha3NoaS5nb3YuYWwvcmVwb3NpdG9yeTCBpwYDVR0fBIGfMIGcMIGZoIGWoIGThiJodHRwOi8vY3JsLmFrc2hpLmdvdi5hbC9jbGFzczMuY3Jshm1sZGFwOi8vbGRhcC5ha3NoaS5nb3YuYWwvQ049TkFJUyBDbGFzcyAzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5LE89TkFJUyxDPUFMP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q7YmluYXJ5MA0GCSqGSIb3DQEBCwUAA4IBAQAxX1oVSlIui82fALGFk0YQK5UOFN59Bk+dNovoYLH7rewnK3Zu1C8xJivs/ncsvb08J/B14Iw2DlIORCNMmfXaCIEeRwUepPrC0T9gBMFZGf+nOH1YR19YA+24gxSxlsU6t8/lCwMY2HfCUxEKvHqr1jp3lgim8y+IiMsA9ISr7J8YDwue6Zvpr1zPQN+nd4xB1ZuxoM64dCvzaV5mA/D3P7Rqf5c1+rt5EqztjVOiNpFvH+xSEp9veAJxRDG37kHe7brgb7CGLdBQw/pib8kgfDusUMIjuXDN4MzjVUtM3G6s6DfoJ/QIf5CGq2lJ9bdxORh9PICVxVxcUqpwD+r2","kid":"hHffSLS1AIU="},{"issuer":"C = AL O = NAIS CN = NAIS Class 3 Certification Authority","subject":"C = AL O = Ministria e Shendetesise dhe Mbrojtjes Sociale OU = Production CN = Ministria e Shendetesise dhe Mbrojtjes Sociale","notbefore":1634731214000,"notafter":1666267214000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkyi6sf8k8/kk2KjTBNiIVFpnIeZc\\nj4oUXwV8kk5D6BySdIUx9jSD5BuSiUyXKmIghKHPvpio9M7nYklZCdur0w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEUDCCAzigAwIBAgIMQwFSlIJziU/M83ZyMA0GCSqGSIb3DQEBCwUAMEsxCzAJBgNVBAYTAkFMMQ0wCwYDVQQKEwROQUlTMS0wKwYDVQQDEyROQUlTIENsYXNzIDMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjExMDIwMTIwMDE0WhcNMjIxMDIwMTIwMDE0WjCBlDELMAkGA1UEBhMCQUwxNzA1BgNVBAoMLk1pbmlzdHJpYSBlIFNoZW5kZXRlc2lzZSBkaGUgTWJyb2p0amVzIFNvY2lhbGUxEzARBgNVBAsMClByb2R1Y3Rpb24xNzA1BgNVBAMMLk1pbmlzdHJpYSBlIFNoZW5kZXRlc2lzZSBkaGUgTWJyb2p0amVzIFNvY2lhbGUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASTKLqx/yTz+STYqNME2IhUWmch5lyPihRfBXySTkPoHJJ0hTH2NIPkG5KJTJcqYiCEoc++mKj0zudiSVkJ26vTo4IBszCCAa8wZgYIKwYBBQUHAQEEWjBYMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5ha3NoaS5nb3YuYWwwMAYIKwYBBQUHMAKGJGh0dHA6Ly9jZXJ0cy5ha3NoaS5nb3YuYWwvY2xhc3MzLmNydDAOBgNVHQ8BAf8EBAMCBsAwHwYDVR0jBBgwFoAUhyao+9srUZs50JjW9MYzVkdc2AUwHQYDVR0OBBYEFGPWnU1pbP9aLGlfxoOY//lobEDxMEsGA1UdIAREMEIwQAYMKwYBBAGCsWwKAQEDMDAwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuYWtzaGkuZ292LmFsL3JlcG9zaXRvcnkwgacGA1UdHwSBnzCBnDCBmaCBlqCBk4YiaHR0cDovL2NybC5ha3NoaS5nb3YuYWwvY2xhc3MzLmNybIZtbGRhcDovL2xkYXAuYWtzaGkuZ292LmFsL0NOPU5BSVMgQ2xhc3MgMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSxPPU5BSVMsQz1BTD9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0O2JpbmFyeTANBgkqhkiG9w0BAQsFAAOCAQEApvfjN0ZeYCl6OH8HmJSG4UcL8KrVB1uqa/b0OPBihreOzVN0MyCRCKqUY+JJBc2S1k8OssCZuconsPLdTW2UkDxP5oFrgnzBN4Tor+3EMq2d/TTQnhp+872m2B4Gck0bRMBn0N19MbIrdii5joNir9pcHJgU5I/fTTehL9wtZGoL1o5cUUu9S+hYMIP0uNHP6NjxQhwZ+lpleNCUsYT4o4icvnbW3EaB84KBImCfezIu3Q+MdgwWmGpZOXUVoiX9UiyWrlEnzNzictXgOSud5xJ8E9ZUezO8u1UMRKY82Xi15KM6FML2qJ6teTC8iMjXaDxhVZSDAvtXclLKqIvAzg==","kid":"udrotE0n7i0="},{"issuer":"2.5.4.97 = NRTAD-U129638U O = SAAS CN = DGCG C = AD","subject":"C = AD ST = Andorra L = Escaldes-Engordany O = SAAS OU = SSII CN = dsc","notbefore":1630843042000,"notafter":1693915042000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGvHqf7SYtlvevOyA/no+i1/WcmS0\\nbOYP1bgP+pJTjTkBOpQi+f7Ie6415WFl9aoqzMmKRJmE6Ur4H+b9Vba7FA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDNTCCAh2gAwIBAgIUPlH4JERPPj3GoUrvEpBgHChJmOcwDQYJKoZIhvcNAQELBQAwRDEXMBUGA1UEYQwOTlJUQUQtVTEyOTYzOFUxDTALBgNVBAoMBFNBQVMxDTALBgNVBAMMBERHQ0cxCzAJBgNVBAYTAkFEMB4XDTIxMDkwNTExNTcyMloXDTIzMDkwNTExNTcyMlowaDELMAkGA1UEBhMCQUQxEDAOBgNVBAgMB0FuZG9ycmExGzAZBgNVBAcMEkVzY2FsZGVzLUVuZ29yZGFueTENMAsGA1UECgwEU0FBUzENMAsGA1UECwwEU1NJSTEMMAoGA1UEAwwDZHNjMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGvHqf7SYtlvevOyA/no+i1/WcmS0bOYP1bgP+pJTjTkBOpQi+f7Ie6415WFl9aoqzMmKRJmE6Ur4H+b9Vba7FKOBxTCBwjAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFOZE/2bkC1HwzFPPcZQJ82uVyOTTMB8GA1UdIwQYMBaAFGiVtMJNO5SQY5dOAz9JNlmRi90OMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9jcmwuZXhhbXBsZWRvbWFpbi5leGFtcGxlL0NSTC9DU0NBLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMA0GCSqGSIb3DQEBCwUAA4IBAQBB7UNVlexZwtC19yXkui85kfGT0RT0CqfLAvFPXy22Cy0/Al1OWItlWiN7z4RKSfhXel9jBPkowWjm4TH/Z9SS558sa/CQohYUaPlgR2UluMhbDVUsyLicQbqVx571GIA3BLoInJsFnp3Srv+XgP8ic2T72/mXwxnHCg1Jra2X8W0GGaxrUuvf+dxnPhDTeBNVqmYgk6q1vS3Nj3yugkgmg2xXNIWpcFjeC6/FVsTEORxi4SOjjn5Omhb9uZLeq11hXx04fORw9ctzppi5P5TDNDdmqa5iLRVsgS7Z7+Fp7V4QmfiRsVjyX+2QadvREEIbgcw8Y9d1j1qIXrCYwhCE","kid":"mqWkXpNR0Rk="},{"issuer":"C = MD ST = Republic of Moldova L = Chisinau O = STISC OU = CCCP CN = Republic of Moldova National CSCA 01","subject":"C = MD ST = Republic of Moldova L = Chisinau O = Ministry of Health CN = Republic of Moldova DSC 01","notbefore":1635269461000,"notafter":1698341461000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEurid6V6ennaGMYu1h8Q2PFJ7eMkj\\n7FiBzBEiQMnNb/YzAj60g6cnvX02AB+E48Hoz4amNlralKXL3CvjaxHGLw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICljCCAjygAwIBAgIUfKVPCJ2DSOQlBmu5AcgWL+pt9wkwCgYIKoZIzj0EAwIwgYwxCzAJBgNVBAYTAk1EMRwwGgYDVQQIDBNSZXB1YmxpYyBvZiBNb2xkb3ZhMREwDwYDVQQHDAhDaGlzaW5hdTEOMAwGA1UECgwFU1RJU0MxDTALBgNVBAsMBENDQ1AxLTArBgNVBAMMJFJlcHVibGljIG9mIE1vbGRvdmEgTmF0aW9uYWwgQ1NDQSAwMTAeFw0yMTEwMjYxNzMxMDFaFw0yMzEwMjYxNzMxMDFaMIGAMQswCQYDVQQGEwJNRDEcMBoGA1UECAwTUmVwdWJsaWMgb2YgTW9sZG92YTERMA8GA1UEBwwIQ2hpc2luYXUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDEjMCEGA1UEAwwaUmVwdWJsaWMgb2YgTW9sZG92YSBEU0MgMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS6uJ3pXp6edoYxi7WHxDY8Unt4ySPsWIHMESJAyc1v9jMCPrSDpye9fTYAH4TjwejPhqY2WtqUpcvcK+NrEcYvo4GFMIGCMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUtk8/4i4hj2sDFnz+oTBPM3gsriUwHwYDVR0jBBgwFoAU5leuhgfUUggxBYNy0n+tKWe46lIwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAKBggqhkjOPQQDAgNIADBFAiA0P/CM3hswqmbtlgRCGfsMs2DCmPGQwoqVJYoDFHyx/wIhAM2PdlwhGVVyeVugqUXabGMmLNwchyNqMNdABoH3eI9q","kid":"p64sutu48UA="},{"issuer":"C = SM ST = SM L = City of San Marino O = San Marino Innovation OU = DGCOperations CN = CSCA_DGC_SM_01","subject":"C = SM ST = San Marino L = City of San Marino O = Istituto per la Sicurezza Sociale OU = DGCOperations CN = DSC_CSR_DGC_SM_01 E = smdcc@iss.sm","notbefore":1623321959000,"notafter":1686393959000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEH2+GOTdCPhSUdDZmaM7hq/hRJkZC\\nd3wPyOwB8lS30s4N81r4XFpv1Yev+1bfB4A173DByhZyIKkdnZc/FfaAXQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDBTCCAqugAwIBAgIUeATFyjMaoiT84DKJmiNU72+mkVgwCgYIKoZIzj0EAwIwgYgxCzAJBgNVBAYTAlNNMQswCQYDVQQIDAJTTTEbMBkGA1UEBwwSQ2l0eSBvZiBTYW4gTWFyaW5vMR4wHAYDVQQKDBVTYW4gTWFyaW5vIElubm92YXRpb24xFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxFzAVBgNVBAMMDkNTQ0FfREdDX1NNXzAxMB4XDTIxMDYxMDEwNDU1OVoXDTIzMDYxMDEwNDU1OVowgb0xCzAJBgNVBAYTAlNNMRMwEQYDVQQIDApTYW4gTWFyaW5vMRswGQYDVQQHDBJDaXR5IG9mIFNhbiBNYXJpbm8xKzApBgNVBAoMIklzdGl0dXRvIHBlciBsYSBTaWN1cmV6emEgU29jaWFsZSAxFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxGjAYBgNVBAMMEURTQ19DU1JfREdDX1NNXzAxMRswGQYJKoZIhvcNAQkBFgxzbWRjY0Bpc3Muc20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQfb4Y5N0I+FJR0NmZozuGr+FEmRkJ3fA/I7AHyVLfSzg3zWvhcWm/Vh6/7Vt8HgDXvcMHKFnIgqR2dlz8V9oBdo4G7MIG4MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUXBEgxHdIds6E5XLz7K3xKYM1ZYcwHwYDVR0jBBgwFoAU3R4p+KmXTKHb/B2ZD1s9d0P+tlUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDovL3d3dy5zbWRjYy5zbS9DUkwvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiAqKNSdqhkdyZaMENowSdL1xU3Cq/A/u6PaO90ApEBVfgIhAOaFehZJJsm5o3LAhZ+q3bWBZHbB7nsFbTzvowcNyc2K","kid":"r9RtWK9x7dM="},{"issuer":"C = GR CN = grnet.gr","subject":"C = GR CN = grnet.gr","notbefore":1621881325000,"notafter":1684953325000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFP\\nen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICBjCCAaygAwIBAgIUKhlB7j/znUbHbqEQfJErud8AyPMwCgYIKoZIzj0EAwIwIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMB4XDTIxMDUyNDE4MzUyNVoXDTIzMDUyNDE4MzUyNVowIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFPen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEaOBwzCBwDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFKfRIrjTBVN2/tmTt8I32yrVl3DRMB8GA1UdIwQYMBaAFHAWm9K/JxbEXkf7XcqhKPGmpDK9MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHBzOi8vY3JsLmRnYy5zZXJ2aWNlcy5nb3YuZ3IvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiBdWbGhPUZmHxMV9eXlVEkLRY+zGdCsKVxgAMk2JYqU8AIhANkXZhiDVPD5IDiEw3Z3r0MdBxx7jy6rQzBj/K4OSgCl","kid":"vvYa1vaWkGg="}]}');class u{static instance=new u;initialized=!1;certInfos=[];async getCertInfos(){if(!this.initialized){this.initialized=!0;const t=h.$;this.certInfos.push(...t)}return this.certInfos}}class c{protected_;unprotected;payload;signatures;static async decodeCborAsync(t){return new Promise(((e,r)=>{i.decodeFirst(t,(function(t,i){if(t)return r("failed cbor: "+t),null;e(i)}))}))}static async valueOf(t){return new Promise(((e,r)=>{0==t.indexOf("HC1:")&&(t=t.substring(4));const n=o().decode(t);a().inflate(n,(function(t,n){t?r("failed cose1: "+t):i.decodeFirst(n,(function(t,i){if(t)return void r("failed cose1: "+t);const n=i,o=n.value[0],s=n.value[1],a=n.value[2],h=n.value[3],u=new c(o,s,a,h);e(u)}))}))}))}constructor(t,e,r,i){this.protected_=t,this.unprotected=e,this.payload=r,this.signatures=i}makeDataForVerification(){const t=i.encode(["Signature1",this.protected_]),e=i.encode([this.payload]),r=new Uint8Array(t.length+e.length);for(let e=0,i=t.length;e{0==t.indexOf("HC1:")&&(t=t.substring(4));const n=o().decode(t);a().inflate(n,(function(t,n){const o=i;try{o.decodeFirst(n,(function(t,n){if(t)return void r(t);const o=n.toJSON().value[2];i.decodeFirst(o,(function(t,i){if(t)return void r(t);const n=i.get(-260).get(1);console.log(JSON.stringify(n,null,4)),e(n)}))}))}catch(t){r(t)}}))}))}static async validate(t,e){const r=await c.valueOf(t);if(!r)return null;const i=r.makeDataForVerification(),n=l.Buffer.from(r.encodeSignature(r.signatures)).toString("hex");var o=await u.instance.getCertInfos();if(e?.explicitCerts&&(o=[...e?.explicitCerts]),e?.certFilter){const t=o.length;(o=o.filter(e?.certFilter)).length!=t&&console.info("#"+(t-o.length)+" of "+t+" certifcates removed by filter")}for(let t=0,e=o.length;t=r.notbefore&&t<=r.notafter)return r}}catch(i){console.warn("unable to handle cert "+(t+1)+" of "+e+": "+r.subject+": "+i)}}throw"Not matching certificate found"}}"undefined"!=typeof window&&(window.EuDgc_parse=f.parse,window.EuDgc_validate=f.validate),console.log("eudgc.ts"),console.log("EUDGC by Scopevisio AG")},4927:(t,e,r)=>{function i(t){try{if(!r.g.localStorage)return!1}catch(t){return!1}var e=r.g.localStorage[t];return null!=e&&"true"===String(e).toLowerCase()}t.exports=function(t,e){if(i("noDeprecation"))return t;var r=!1;return function(){if(!r){if(i("throwDeprecation"))throw new Error(e);i("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}}},384:t=>{t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},5955:(t,e,r)=>{"use strict";var i=r(2584),n=r(8662),o=r(6430),s=r(5692);function a(t){return t.call.bind(t)}var h="undefined"!=typeof BigInt,u="undefined"!=typeof Symbol,c=a(Object.prototype.toString),l=a(Number.prototype.valueOf),d=a(String.prototype.valueOf),f=a(Boolean.prototype.valueOf);if(h)var A=a(BigInt.prototype.valueOf);if(u)var g=a(Symbol.prototype.valueOf);function M(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function B(t){return"[object Map]"===c(t)}function w(t){return"[object Set]"===c(t)}function E(t){return"[object WeakMap]"===c(t)}function p(t){return"[object WeakSet]"===c(t)}function m(t){return"[object ArrayBuffer]"===c(t)}function y(t){return"undefined"!=typeof ArrayBuffer&&(m.working?m(t):t instanceof ArrayBuffer)}function b(t){return"[object DataView]"===c(t)}function Q(t){return"undefined"!=typeof DataView&&(b.working?b(t):t instanceof DataView)}e.isArgumentsObject=i,e.isGeneratorFunction=n,e.isTypedArray=s,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):s(t)||Q(t)},e.isUint8Array=function(t){return"Uint8Array"===o(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===o(t)},e.isUint16Array=function(t){return"Uint16Array"===o(t)},e.isUint32Array=function(t){return"Uint32Array"===o(t)},e.isInt8Array=function(t){return"Int8Array"===o(t)},e.isInt16Array=function(t){return"Int16Array"===o(t)},e.isInt32Array=function(t){return"Int32Array"===o(t)},e.isFloat32Array=function(t){return"Float32Array"===o(t)},e.isFloat64Array=function(t){return"Float64Array"===o(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===o(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===o(t)},B.working="undefined"!=typeof Map&&B(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(B.working?B(t):t instanceof Map)},w.working="undefined"!=typeof Set&&w(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(w.working?w(t):t instanceof Set)},E.working="undefined"!=typeof WeakMap&&E(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(E.working?E(t):t instanceof WeakMap)},p.working="undefined"!=typeof WeakSet&&p(new WeakSet),e.isWeakSet=function(t){return p(t)},m.working="undefined"!=typeof ArrayBuffer&&m(new ArrayBuffer),e.isArrayBuffer=y,b.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&b(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=Q;var I="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function C(t){return"[object SharedArrayBuffer]"===c(t)}function D(t){return void 0!==I&&(void 0===C.working&&(C.working=C(new I)),C.working?C(t):t instanceof I)}function N(t){return M(t,l)}function v(t){return M(t,d)}function G(t){return M(t,f)}function R(t){return h&&M(t,A)}function Y(t){return u&&M(t,g)}e.isSharedArrayBuffer=D,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===c(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===c(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===c(t)},e.isGeneratorObject=function(t){return"[object Generator]"===c(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===c(t)},e.isNumberObject=N,e.isStringObject=v,e.isBooleanObject=G,e.isBigIntObject=R,e.isSymbolObject=Y,e.isBoxedPrimitive=function(t){return N(t)||v(t)||G(t)||R(t)||Y(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(y(t)||D(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach((function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})}))},9539:(t,e,r)=>{var i=r(4155),n=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},i=0;i=n)return t;switch(t){case"%s":return String(i[r++]);case"%d":return Number(i[r++]);case"%j":try{return JSON.stringify(i[r++])}catch(t){return"[Circular]"}default:return t}})),a=i[r];r=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),M(r)?i.showHidden=r:r&&e._extend(i,r),p(i.showHidden)&&(i.showHidden=!1),p(i.depth)&&(i.depth=2),p(i.colors)&&(i.colors=!1),p(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=c),d(i,t,i.depth)}function c(t,e){var r=u.styles[e];return r?"["+u.colors[r][0]+"m"+t+"["+u.colors[r][1]+"m":t}function l(t,e){return t}function d(t,r,i){if(t.customInspect&&r&&I(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var n=r.inspect(i,t);return E(n)||(n=d(t,n,i)),n}var o=function(t,e){if(p(e))return t.stylize("undefined","undefined");if(E(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return w(e)?t.stylize(""+e,"number"):M(e)?t.stylize(""+e,"boolean"):B(e)?t.stylize("null","null"):void 0}(t,r);if(o)return o;var s=Object.keys(r),a=function(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),Q(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return f(r);if(0===s.length){if(I(r)){var h=r.name?": "+r.name:"";return t.stylize("[Function"+h+"]","special")}if(m(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(b(r))return t.stylize(Date.prototype.toString.call(r),"date");if(Q(r))return f(r)}var u,c="",l=!1,y=["{","}"];return g(r)&&(l=!0,y=["[","]"]),I(r)&&(c=" [Function"+(r.name?": "+r.name:"")+"]"),m(r)&&(c=" "+RegExp.prototype.toString.call(r)),b(r)&&(c=" "+Date.prototype.toUTCString.call(r)),Q(r)&&(c=" "+f(r)),0!==s.length||l&&0!=r.length?i<0?m(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),u=l?function(t,e,r,i,n){for(var o=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(u,c,y)):y[0]+c+y[1]}function f(t){return"["+Error.prototype.toString.call(t)+"]"}function A(t,e,r,i,n,o){var s,a,h;if((h=Object.getOwnPropertyDescriptor(e,n)||{value:e[n]}).get?a=h.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):h.set&&(a=t.stylize("[Setter]","special")),G(i,n)||(s="["+n+"]"),a||(t.seen.indexOf(h.value)<0?(a=B(r)?d(t,h.value,null):d(t,h.value,r-1)).indexOf("\n")>-1&&(a=o?a.split("\n").map((function(t){return" "+t})).join("\n").substr(2):"\n"+a.split("\n").map((function(t){return" "+t})).join("\n")):a=t.stylize("[Circular]","special")),p(s)){if(o&&n.match(/^\d+$/))return a;(s=JSON.stringify(""+n)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function g(t){return Array.isArray(t)}function M(t){return"boolean"==typeof t}function B(t){return null===t}function w(t){return"number"==typeof t}function E(t){return"string"==typeof t}function p(t){return void 0===t}function m(t){return y(t)&&"[object RegExp]"===C(t)}function y(t){return"object"==typeof t&&null!==t}function b(t){return y(t)&&"[object Date]"===C(t)}function Q(t){return y(t)&&("[object Error]"===C(t)||t instanceof Error)}function I(t){return"function"==typeof t}function C(t){return Object.prototype.toString.call(t)}function D(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r=i.pid;s[t]=function(){var i=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,i)}}else s[t]=function(){};return s[t]},e.inspect=u,u.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},u.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(5955),e.isArray=g,e.isBoolean=M,e.isNull=B,e.isNullOrUndefined=function(t){return null==t},e.isNumber=w,e.isString=E,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=p,e.isRegExp=m,e.types.isRegExp=m,e.isObject=y,e.isDate=b,e.types.isDate=b,e.isError=Q,e.types.isNativeError=Q,e.isFunction=I,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(384);var N=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function v(){var t=new Date,e=[D(t.getHours()),D(t.getMinutes()),D(t.getSeconds())].join(":");return[t.getDate(),N[t.getMonth()],e].join(" ")}function G(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){console.log("%s - %s",v(),e.format.apply(e,arguments))},e.inherits=r(5717),e._extend=function(t,e){if(!e||!y(e))return t;for(var r=Object.keys(e),i=r.length;i--;)t[r[i]]=e[r[i]];return t};var R="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function Y(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(R&&t[R]){var e;if("function"!=typeof(e=t[R]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,R,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,i=new Promise((function(t,i){e=t,r=i})),n=[],o=0;o{"use strict";var i=r(9804),n=r(6314),o=r(1924),s=o("Object.prototype.toString"),a=r(1405)()&&"symbol"==typeof Symbol.toStringTag,h=n(),u=o("String.prototype.slice"),c={},l=r(4079),d=Object.getPrototypeOf;a&&l&&d&&i(h,(function(t){if("function"==typeof r.g[t]){var e=new r.g[t];if(!(Symbol.toStringTag in e))throw new EvalError("this engine has support for Symbol.toStringTag, but "+t+" does not have the property! Please report this.");var i=d(e),n=l(i,Symbol.toStringTag);if(!n){var o=d(i);n=l(o,Symbol.toStringTag)}c[t]=n.get}}));var f=r(5692);t.exports=function(t){return!!f(t)&&(a?function(t){var e=!1;return i(c,(function(r,i){if(!e)try{var n=r.call(t);n===i&&(e=n)}catch(t){}})),e}(t):u(s(t),8,-1))}},950:()=>{},6601:()=>{},9214:()=>{},8623:()=>{},7748:()=>{},5568:()=>{},6619:()=>{},7108:()=>{},2361:()=>{},4616:()=>{}},e={};function r(i){var n=e[i];if(void 0!==n)return n.exports;var o=e[i]={id:i,loaded:!1,exports:{}};return t[i].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var i in e)r.o(e,i)&&!r.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r(8677)})(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYXBpLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9idWZmZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9ub2RlLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2NvbnN0YW50cy9kZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9jb25zdGFudHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9kZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2RlY29kZXJzL3BlbS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL2Rlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZW5jb2RlcnMvcGVtLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc3NlcnQvYnVpbGQvYXNzZXJ0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Fzc2VydC9idWlsZC9pbnRlcm5hbC9hc3NlcnQvYXNzZXJ0aW9uX2Vycm9yLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Fzc2VydC9idWlsZC9pbnRlcm5hbC9lcnJvcnMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNzZXJ0L2J1aWxkL2ludGVybmFsL3V0aWwvY29tcGFyaXNvbnMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXZhaWxhYmxlLXR5cGVkLWFycmF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9iYXNlNDUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYmFzZTQ1L2xpYi9iYXNlNDUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYmFzZTY0LWpzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2JpZ251bWJlci5qcy9iaWdudW1iZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYm4uanMvbGliL2JuLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3JhbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYWVzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2F1dGhDaXBoZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9kZWNyeXB0ZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvZW5jcnlwdGVyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2doYXNoLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2luY3IzMi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jYmMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2ZiLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYjEuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2ZiOC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jdHIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvZWNiLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL29mYi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9zdHJlYW1DaXBoZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1jaXBoZXIvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWRlcy9tb2Rlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXJzYS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ24vYWxnb3MuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2Jyb3dzZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2Jyb3dzZXIvc2lnbi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ24vYnJvd3Nlci92ZXJpZnkuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL2xpYi9iaW5kaW5nLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktemxpYi9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi91dGlscy9jb21tb24uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2FkbGVyMzIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXpsaWIvbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvY3JjMzIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2RlZmxhdGUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2luZmZhc3QuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2luZmxhdGUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2luZnRyZWVzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktemxpYi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9tZXNzYWdlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXpsaWIvbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvdHJlZXMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL3pzdHJlYW0uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnVmZmVyLXhvci9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9idWZmZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvY2FsbC1iaW5kL2NhbGxCb3VuZC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jYWxsLWJpbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvY2Jvci13ZWIvZGlzdC9jYm9yLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NpcGhlci1iYXNlL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1lY2RoL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvY3JlYXRlLWVjZGgvbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jcmVhdGUtaGFzaC9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1oYXNoL21kNS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jcmVhdGUtaG1hYy9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1obWFjL2xlZ2FjeS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tYnJvd3NlcmlmeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZWZpbmUtcHJvcGVydGllcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9jYmMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvY2lwaGVyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2Rlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9lZGUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kaWZmaWUtaGVsbG1hbi9saWIvZGguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbGliL2dlbmVyYXRlUHJpbWUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Jhc2UuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Vkd2FyZHMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9tb250LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9zaG9ydC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmVzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWMva2V5LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9zaWduYXR1cmUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9rZXkuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL3NpZ25hdHVyZS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvcHJlY29tcHV0ZWQvc2VjcDI1NmsxLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy91dGlscy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9ub2RlX21vZHVsZXMvYm4uanMvbGliL2JuLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VzLWFic3RyYWN0L2hlbHBlcnMvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VzNi1vYmplY3QtYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2V2ZW50cy9ldmVudHMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZXZwX2J5dGVzdG9rZXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZm9yZWFjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9mdW5jdGlvbi1iaW5kL2ltcGxlbWVudGF0aW9uLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Z1bmN0aW9uLWJpbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZ2V0LWludHJpbnNpYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXMtc3ltYm9scy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXMtc3ltYm9scy9zaGFtcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXMvc3JjL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2gtYmFzZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvY29tbW9uLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvaG1hYy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3JpcGVtZC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS8xLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLzIyNC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS8yNTYuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9zaGEvMzg0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLzUxMi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS9jb21tb24uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC91dGlscy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9obWFjLWRyYmcvbGliL2htYWMtZHJiZy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pZWVlNzU0L2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2luaGVyaXRzL2luaGVyaXRzX2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaXMtYXJndW1lbnRzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2lzLWdlbmVyYXRvci1mdW5jdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pcy1uYW4vaW1wbGVtZW50YXRpb24uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaXMtbmFuL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2lzLW5hbi9wb2x5ZmlsbC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pcy1uYW4vc2hpbS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pcy10eXBlZC1hcnJheS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9tZDUuanMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvbWlsbGVyLXJhYmluL2xpYi9tci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9taWxsZXItcmFiaW4vbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9taW5pbWFsaXN0aWMtYXNzZXJ0L2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL21pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHMvbGliL3V0aWxzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1pcy9pbXBsZW1lbnRhdGlvbi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9vYmplY3QtaXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvb2JqZWN0LWlzL3BvbHlmaWxsLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1pcy9zaGltLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1rZXlzL2ltcGxlbWVudGF0aW9uLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1rZXlzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1rZXlzL2lzQXJndW1lbnRzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvYXNuMS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wYXJzZS1hc24xL2NlcnRpZmljYXRlLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvZml4UHJvYy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wYXJzZS1hc24xL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bia2RmMi9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bia2RmMi9saWIvYXN5bmMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi9kZWZhdWx0LWVuY29kaW5nLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bia2RmMi9saWIvcHJlY29uZGl0aW9uLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bia2RmMi9saWIvc3luYy1icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bia2RmMi9saWIvdG8tYnVmZmVyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L21nZi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC9ub2RlX21vZHVsZXMvYm4uanMvbGliL2JuLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3ByaXZhdGVEZWNyeXB0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3B1YmxpY0VuY3J5cHQuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvd2l0aFB1YmxpYy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC94b3IuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmFuZG9tYnl0ZXMvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yYW5kb21maWxsL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2Vycm9ycy1icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9kdXBsZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV93cml0YWJsZS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvYXN5bmNfaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2J1ZmZlcl9saXN0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9lbmQtb2Ytc3RyZWFtLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9mcm9tLWJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3BpcGVsaW5lLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9zdGF0ZS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtLWJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLWJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmlwZW1kMTYwL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NhZmUtYnVmZmVyL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NhZmVyLWJ1ZmZlci9zYWZlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9zaGEuanMvaGFzaC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9zaGEuanMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvc2hhLmpzL3NoYS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9zaGEuanMvc2hhMS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9zaGEuanMvc2hhMjI0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9zaGEyNTYuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvc2hhLmpzL3NoYTM4NC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9zaGEuanMvc2hhNTEyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3N0cmluZ19kZWNvZGVyL2xpYi9zdHJpbmdfZGVjb2Rlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL3NyYy90cnVzdGxpc3QudHMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9zcmMvY29zZTEudHMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9zcmMvZXVkZ2MudHMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvdXRpbC1kZXByZWNhdGUvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy91dGlsL3N1cHBvcnQvaXNCdWZmZXJCcm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3V0aWwvc3VwcG9ydC90eXBlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy91dGlsL3V0aWwuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvd2hpY2gtdHlwZWQtYXJyYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2Mvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vZXVkZ2Mvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vZXVkZ2Mvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2V1ZGdjL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vZXVkZ2Mvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9ldWRnYy93ZWJwYWNrL3J1bnRpbWUvbm9kZSBtb2R1bGUgZGVjb3JhdG9yIiwid2VicGFjazovL2V1ZGdjL3dlYnBhY2svc3RhcnR1cCJdLCJuYW1lcyI6WyJhc24xIiwiZXhwb3J0cyIsImJpZ251bSIsImRlZmluZSIsImJhc2UiLCJjb25zdGFudHMiLCJkZWNvZGVycyIsImVuY29kZXJzIiwiaW5oZXJpdHMiLCJFbnRpdHkiLCJuYW1lIiwiYm9keSIsInRoaXMiLCJwcm90b3R5cGUiLCJfY3JlYXRlTmFtZWQiLCJCYXNlIiwiR2VuZXJhdGVkIiwiZW50aXR5IiwiX2luaXROYW1lZCIsImNhbGwiLCJfZ2V0RGVjb2RlciIsImVuYyIsImhhc093blByb3BlcnR5IiwiZGVjb2RlIiwiZGF0YSIsIm9wdGlvbnMiLCJfZ2V0RW5jb2RlciIsImVuY29kZSIsInJlcG9ydGVyIiwiUmVwb3J0ZXIiLCJCdWZmZXIiLCJEZWNvZGVyQnVmZmVyIiwiaXNCdWZmZXIiLCJvZmZzZXQiLCJsZW5ndGgiLCJlcnJvciIsIkVuY29kZXJCdWZmZXIiLCJ2YWx1ZSIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIml0ZW0iLCJpc0VuY29kZXJCdWZmZXIiLCJieXRlTGVuZ3RoIiwiaXNEZWNvZGVyQnVmZmVyIiwiY29uc3RydWN0b3IiLCJzYXZlIiwicmVzdG9yZSIsImlzRW1wdHkiLCJyZWFkVUludDgiLCJza2lwIiwicmF3IiwicmVzIiwiZmFpbCIsImJ5dGVzIiwiX3JlcG9ydGVyU3RhdGUiLCJzbGljZSIsImpvaW4iLCJvdXQiLCJhbGxvYyIsImZvckVhY2giLCJ3cml0ZSIsImNvcHkiLCJOb2RlIiwiYXNzZXJ0IiwidGFncyIsIm1ldGhvZHMiLCJjb25jYXQiLCJwYXJlbnQiLCJzdGF0ZSIsIl9iYXNlU3RhdGUiLCJjaGlsZHJlbiIsInRhZyIsImFyZ3MiLCJyZXZlcnNlQXJncyIsImNob2ljZSIsIm9wdGlvbmFsIiwiYW55Iiwib2JqIiwidXNlIiwidXNlRGVjb2RlciIsImtleSIsImV4cGxpY2l0IiwiaW1wbGljaXQiLCJjb250YWlucyIsIl93cmFwIiwibW9kdWxlIiwic3RhdGVQcm9wcyIsImNsb25lIiwiY3N0YXRlIiwicHJvcCIsIm1ldGhvZCIsInB1c2giLCJhcHBseSIsImFyZ3VtZW50cyIsIl9pbml0IiwiZmlsdGVyIiwiY2hpbGQiLCJlcXVhbCIsIl91c2VBcmdzIiwiYXJnIiwiT2JqZWN0Iiwia2V5cyIsIkVycm9yIiwiZGVmIiwidmFsIiwibnVtIiwibmV3S2V5IiwiX2RlY29kZSIsImlucHV0Iiwid3JhcFJlc3VsdCIsInByZXZPYmoiLCJyZXN1bHQiLCJwcmVzZW50IiwicHJldktleSIsImVudGVyS2V5IiwiX3BlZWtUYWciLCJpc0Vycm9yIiwiX2RlY29kZUdlbmVyaWMiLCJfZGVjb2RlQ2hvaWNlIiwiZSIsImVudGVyT2JqZWN0IiwiX2RlY29kZVRhZyIsInN0YXJ0IiwidHJhY2siLCJwYXRoIiwiX2dldFVzZSIsImxlYXZlT2JqZWN0IiwiZXhpdEtleSIsImxlYXZlS2V5IiwiX2RlY29kZUxpc3QiLCJ0ZXN0IiwiX2RlY29kZVN0ciIsIl9kZWNvZGVPYmppZCIsIl9kZWNvZGVUaW1lIiwiX2RlY29kZU51bGwiLCJfZGVjb2RlQm9vbCIsIl9kZWNvZGVJbnQiLCJfdXNlIiwibWF0Y2giLCJzb21lIiwibm9kZSIsInR5cGUiLCJfY3JlYXRlRW5jb2RlckJ1ZmZlciIsIl9lbmNvZGUiLCJfZW5jb2RlVmFsdWUiLCJ1bmRlZmluZWQiLCJfc2tpcERlZmF1bHQiLCJjb250ZW50IiwicHJpbWl0aXZlIiwiX2VuY29kZUNob2ljZSIsIl9lbmNvZGVQcmltaXRpdmUiLCJjbHMiLCJfZW5jb2RlQ29tcG9zaXRlIiwiSlNPTiIsInN0cmluZ2lmeSIsIl9lbmNvZGVTdHIiLCJfZW5jb2RlT2JqaWQiLCJfZW5jb2RlVGltZSIsIl9lbmNvZGVOdWxsIiwiX2VuY29kZUludCIsIl9lbmNvZGVCb29sIiwiX2lzTnVtc3RyIiwic3RyIiwiX2lzUHJpbnRzdHIiLCJlcnJvcnMiLCJSZXBvcnRlckVycm9yIiwibXNnIiwicmV0aHJvdyIsInBhdGhMZW4iLCJpbmRleCIsInByZXYiLCJub3ciLCJlcnIiLCJpbmhlcml0ZWQiLCJlbGVtIiwibWVzc2FnZSIsInN0YWNrIiwicGFydGlhbCIsImNhcHR1cmVTdGFja1RyYWNlIiwicmV2ZXJzZSIsInRhZ0NsYXNzIiwidGFnQ2xhc3NCeU5hbWUiLCJ0YWdCeU5hbWUiLCJfcmV2ZXJzZSIsImRlciIsIkRFUkRlY29kZXIiLCJ0cmVlIiwiREVSTm9kZSIsImRlckRlY29kZVRhZyIsImJ1ZiIsIm9jdCIsInRhZ1N0ciIsImRlckRlY29kZUxlbiIsImxlbiIsImkiLCJqIiwiYnVmZmVyIiwiZGVjb2RlZFRhZyIsIl9za2lwVW50aWxFbmQiLCJkZWNvZGVyIiwicG9zc2libGVFbmQiLCJ1bnVzZWQiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJyZWFkVUludDE2QkUiLCJudW1zdHIiLCJ0b1N0cmluZyIsInByaW50c3RyIiwidmFsdWVzIiwicmVsYXRpdmUiLCJpZGVudGlmaWVycyIsImlkZW50Iiwic3ViaWRlbnQiLCJmaXJzdCIsInNlY29uZCIsInRtcCIsInllYXIiLCJtb24iLCJkYXkiLCJob3VyIiwibWluIiwic2VjIiwiRGF0ZSIsIlVUQyIsInBlbSIsIlBFTURlY29kZXIiLCJsaW5lcyIsInNwbGl0IiwibGFiZWwiLCJ0b1VwcGVyQ2FzZSIsInJlIiwiZW5kIiwiYmFzZTY0IiwicmVwbGFjZSIsImZyb20iLCJERVJFbmNvZGVyIiwidHdvIiwiZW5jb2RlZFRhZyIsImVuY29kZVRhZyIsImhlYWRlciIsImxlbk9jdGV0cyIsIndyaXRlVUludDE2QkUiLCJjaGFyQ29kZUF0IiwiaWQiLCJzcGxpY2UiLCJzaXplIiwib2JqaWQiLCJ0aW1lIiwiZGF0ZSIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsIm51bUFycmF5IiwidG9BcnJheSIsInNpZ24iLCJ1bnNoaWZ0IiwiZGF0YUJ1ZmZlciIsImRlZmF1bHRCdWZmZXIiLCJQRU1FbmNvZGVyIiwicCIsImN0b3IiLCJzdXBlckN0b3IiLCJzdXBlcl8iLCJUZW1wQ3RvciIsIkJOIiwibnVtYmVyIiwiZW5kaWFuIiwiaXNCTiIsIm5lZ2F0aXZlIiwid29yZHMiLCJyZWQiLCJ3b3JkU2l6ZSIsIndpbmRvdyIsInBhcnNlSGV4NEJpdHMiLCJzdHJpbmciLCJjIiwicGFyc2VIZXhCeXRlIiwibG93ZXJCb3VuZCIsInIiLCJwYXJzZUJhc2UiLCJtdWwiLCJNYXRoIiwibWF4IiwibGVmdCIsInJpZ2h0IiwiY21wIiwiX2luaXROdW1iZXIiLCJfaW5pdEFycmF5IiwiX3BhcnNlSGV4IiwiX3BhcnNlQmFzZSIsImNlaWwiLCJ3Iiwib2ZmIiwic3RyaXAiLCJsaW1iTGVuIiwibGltYlBvdyIsInRvdGFsIiwibW9kIiwid29yZCIsImltdWxuIiwiX2lhZGRuIiwicG93IiwiZGVzdCIsIl9leHBhbmQiLCJfbm9ybVNpZ24iLCJpbnNwZWN0IiwiemVyb3MiLCJncm91cFNpemVzIiwiZ3JvdXBCYXNlcyIsInNtYWxsTXVsVG8iLCJzZWxmIiwiYSIsImIiLCJsbyIsImNhcnJ5IiwiayIsIm5jYXJyeSIsInJ3b3JkIiwibWF4SiIsInBhZGRpbmciLCJncm91cFNpemUiLCJncm91cEJhc2UiLCJpc1plcm8iLCJtb2RuIiwiaWRpdm4iLCJ0b051bWJlciIsInJldCIsInRvSlNPTiIsInRvQnVmZmVyIiwidG9BcnJheUxpa2UiLCJBcnJheVR5cGUiLCJyZXFMZW5ndGgiLCJsaXR0bGVFbmRpYW4iLCJxIiwiYW5kbG4iLCJpdXNocm4iLCJjbHozMiIsIl9jb3VudEJpdHMiLCJ0IiwiX3plcm9CaXRzIiwiYml0TGVuZ3RoIiwiaGkiLCJ6ZXJvQml0cyIsInRvVHdvcyIsIndpZHRoIiwiYWJzIiwiaW5vdG4iLCJpYWRkbiIsImZyb21Ud29zIiwidGVzdG4iLCJub3RuIiwiaW5lZyIsImlzTmVnIiwibmVnIiwiaXVvciIsImlvciIsIm9yIiwidW9yIiwiaXVhbmQiLCJpYW5kIiwiYW5kIiwidWFuZCIsIml1eG9yIiwiaXhvciIsInhvciIsInV4b3IiLCJieXRlc05lZWRlZCIsImJpdHNMZWZ0Iiwic2V0biIsImJpdCIsIndiaXQiLCJpYWRkIiwiaXN1YiIsImFkZCIsInN1YiIsImNvbWIxME11bFRvIiwibWlkIiwibyIsImEwIiwiYWwwIiwiYWgwIiwiYTEiLCJhbDEiLCJhaDEiLCJhMiIsImFsMiIsImFoMiIsImEzIiwiYWwzIiwiYWgzIiwiYTQiLCJhbDQiLCJhaDQiLCJhNSIsImFsNSIsImFoNSIsImE2IiwiYWw2IiwiYWg2IiwiYTciLCJhbDciLCJhaDciLCJhOCIsImFsOCIsImFoOCIsImE5IiwiYWw5IiwiYWg5IiwiYjAiLCJibDAiLCJiaDAiLCJiMSIsImJsMSIsImJoMSIsImIyIiwiYmwyIiwiYmgyIiwiYjMiLCJibDMiLCJiaDMiLCJiNCIsImJsNCIsImJoNCIsImI1IiwiYmw1IiwiYmg1IiwiYjYiLCJibDYiLCJiaDYiLCJiNyIsImJsNyIsImJoNyIsImI4IiwiYmw4IiwiYmg4IiwiYjkiLCJibDkiLCJiaDkiLCJ3MCIsImltdWwiLCJ3MSIsIncyIiwidzMiLCJ3NCIsInc1IiwidzYiLCJ3NyIsInc4IiwidzkiLCJ3MTAiLCJ3MTEiLCJ3MTIiLCJ3MTMiLCJ3MTQiLCJ3MTUiLCJ3MTYiLCJ3MTciLCJ3MTgiLCJqdW1ib011bFRvIiwiRkZUTSIsIm11bHAiLCJ4IiwieSIsIm11bFRvIiwiaG5jYXJyeSIsImJpZ011bFRvIiwibWFrZVJCVCIsIk4iLCJsIiwicmV2QmluIiwicmIiLCJwZXJtdXRlIiwicmJ0IiwicndzIiwiaXdzIiwicnR3cyIsIml0d3MiLCJ0cmFuc2Zvcm0iLCJzIiwicnR3ZGYiLCJjb3MiLCJQSSIsIml0d2RmIiwic2luIiwicnR3ZGZfIiwiaXR3ZGZfIiwiaWUiLCJybyIsImlvIiwicngiLCJndWVzc0xlbjEzYiIsIm4iLCJtIiwib2RkIiwiY29uanVnYXRlIiwibm9ybWFsaXplMTNiIiwid3MiLCJyb3VuZCIsImNvbnZlcnQxM2IiLCJzdHViIiwicGgiLCJfIiwicndzdCIsIml3c3QiLCJucndzIiwibnJ3c3QiLCJuaXdzdCIsInJtd3MiLCJtdWxmIiwibXVsbiIsInNxciIsImlzcXIiLCJ0b0JpdEFycmF5IiwiaXVzaGxuIiwiYml0cyIsImNhcnJ5TWFzayIsIm5ld0NhcnJ5IiwiaXNobG4iLCJoaW50IiwiZXh0ZW5kZWQiLCJoIiwibWFzayIsIm1hc2tlZFdvcmRzIiwiaXNocm4iLCJzaGxuIiwidXNobG4iLCJzaHJuIiwidXNocm4iLCJpbWFza24iLCJtYXNrbiIsImlzdWJuIiwiYWRkbiIsInN1Ym4iLCJpYWJzIiwiX2lzaGxuc3VibXVsIiwic2hpZnQiLCJfd29yZERpdiIsIm1vZGUiLCJiaGkiLCJkaWZmIiwicWoiLCJkaXYiLCJkaXZtb2QiLCJwb3NpdGl2ZSIsImRpdm4iLCJ1bW9kIiwiZGl2Um91bmQiLCJkbSIsImhhbGYiLCJyMiIsImFjYyIsImVnY2QiLCJBIiwiQiIsIkMiLCJEIiwiZyIsImlzRXZlbiIsInlwIiwieHAiLCJpbSIsImlzT2RkIiwiam0iLCJnY2QiLCJfaW52bXAiLCJ4MSIsIngyIiwiZGVsdGEiLCJjbXBuIiwiaW52bSIsImJpbmNuIiwidWNtcCIsImd0biIsImd0IiwiZ3RlbiIsImd0ZSIsImx0biIsImx0IiwibHRlbiIsImx0ZSIsImVxbiIsImVxIiwiUmVkIiwidG9SZWQiLCJjdHgiLCJjb252ZXJ0VG8iLCJfZm9yY2VSZWQiLCJmcm9tUmVkIiwiY29udmVydEZyb20iLCJmb3JjZVJlZCIsInJlZEFkZCIsInJlZElBZGQiLCJyZWRTdWIiLCJyZWRJU3ViIiwicmVkU2hsIiwic2hsIiwicmVkTXVsIiwiX3ZlcmlmeTIiLCJyZWRJTXVsIiwicmVkU3FyIiwiX3ZlcmlmeTEiLCJyZWRJU3FyIiwicmVkU3FydCIsInNxcnQiLCJyZWRJbnZtIiwicmVkTmVnIiwicmVkUG93IiwicHJpbWVzIiwiazI1NiIsInAyMjQiLCJwMTkyIiwicDI1NTE5IiwiTVByaW1lIiwiX3RtcCIsIksyNTYiLCJQMjI0IiwiUDE5MiIsIlAyNTUxOSIsInByaW1lIiwiX3ByaW1lIiwiTW9udCIsImltb2QiLCJyaW52IiwibWludiIsImlyZWR1Y2UiLCJybGVuIiwiaW11bEsiLCJfc3RyaXAiLCJvdXRwdXQiLCJvdXRMZW4iLCJuZXh0IiwibW9kMyIsIm9uZSIsIm5PbmUiLCJscG93IiwieiIsImludiIsInduZCIsImN1cnJlbnQiLCJjdXJyZW50TGVuIiwibW9udCIsInUiLCJfdHlwZW9mIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJpc0RlZXBFcXVhbCIsImlzRGVlcFN0cmljdEVxdWFsIiwiX3JlcXVpcmUkY29kZXMiLCJjb2RlcyIsIkVSUl9BTUJJR1VPVVNfQVJHVU1FTlQiLCJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsIkVSUl9JTlZBTElEX0FSR19WQUxVRSIsIkVSUl9JTlZBTElEX1JFVFVSTl9WQUxVRSIsIkVSUl9NSVNTSU5HX0FSR1MiLCJBc3NlcnRpb25FcnJvciIsIl9yZXF1aXJlJHR5cGVzIiwiaXNQcm9taXNlIiwiaXNSZWdFeHAiLCJvYmplY3RBc3NpZ24iLCJhc3NpZ24iLCJvYmplY3RJcyIsImlzIiwibGF6eUxvYWRDb21wYXJpc29uIiwiY29tcGFyaXNvbiIsIk1hcCIsIndhcm5lZCIsIm9rIiwiTk9fRVhDRVBUSU9OX1NFTlRJTkVMIiwiaW5uZXJGYWlsIiwiaW5uZXJPayIsImZuIiwiYXJnTGVuIiwiZ2VuZXJhdGVkTWVzc2FnZSIsImFjdHVhbCIsImV4cGVjdGVkIiwib3BlcmF0b3IiLCJzdGFja1N0YXJ0Rm4iLCJfbGVuIiwiX2tleSIsImludGVybmFsTWVzc2FnZSIsImFyZ3NMZW4iLCJ3YXJuIiwicHJvY2VzcyIsImVtaXRXYXJuaW5nIiwiY29uc29sZSIsImJpbmQiLCJlcnJBcmdzIiwibm90RXF1YWwiLCJkZWVwRXF1YWwiLCJub3REZWVwRXF1YWwiLCJkZWVwU3RyaWN0RXF1YWwiLCJub3REZWVwU3RyaWN0RXF1YWwiLCJzdHJpY3RFcXVhbCIsIm5vdFN0cmljdEVxdWFsIiwiQ29tcGFyaXNvbiIsIl90aGlzIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9jbGFzc0NhbGxDaGVjayIsImNvbXBhcmVFeGNlcHRpb25LZXkiLCJleHBlY3RlZEV4Y2VwdGlvbiIsImlzUHJvdG90eXBlT2YiLCJnZXRBY3R1YWwiLCJjaGVja0lzUHJvbWlzZSIsInRoZW4iLCJjYXRjaCIsIndhaXRGb3JBY3R1YWwiLCJwcm9taXNlRm4iLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlc3VsdFByb21pc2UiLCJleHBlY3RzRXJyb3IiLCJkZXRhaWxzIiwiZm5UeXBlIiwiZXhwZWN0c05vRXJyb3IiLCJzdHJpY3QiLCJfbGVuNiIsIl9rZXk2IiwidGhyb3dzIiwiX2xlbjIiLCJfa2V5MiIsInJlamVjdHMiLCJfbGVuMyIsIl9rZXkzIiwiZG9lc05vdFRocm93IiwiX2xlbjQiLCJfa2V5NCIsImRvZXNOb3RSZWplY3QiLCJfbGVuNSIsIl9rZXk1IiwiaWZFcnJvciIsIm5ld0VyciIsIm9yaWdTdGFjayIsInRtcDIiLCJ0bXAxIiwicG9zIiwiaW5kZXhPZiIsIl9kZWZpbmVQcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX2RlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIl93cmFwTmF0aXZlU3VwZXIiLCJDbGFzcyIsIl9jYWNoZSIsIkZ1bmN0aW9uIiwiaGFzIiwiZ2V0Iiwic2V0IiwiV3JhcHBlciIsIl9jb25zdHJ1Y3QiLCJfZ2V0UHJvdG90eXBlT2YiLCJjcmVhdGUiLCJfc2V0UHJvdG90eXBlT2YiLCJpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0Iiwic2hhbSIsIlByb3h5IiwiUGFyZW50Iiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJnZXRQcm90b3R5cGVPZiIsImVuZHNXaXRoIiwic2VhcmNoIiwidGhpc19sZW4iLCJzdWJzdHJpbmciLCJibHVlIiwiZ3JlZW4iLCJ3aGl0ZSIsImtSZWFkYWJsZU9wZXJhdG9yIiwic3RyaWN0RXF1YWxPYmplY3QiLCJub3RTdHJpY3RFcXVhbE9iamVjdCIsIm5vdElkZW50aWNhbCIsImNvcHlFcnJvciIsInNvdXJjZSIsImluc3BlY3RWYWx1ZSIsImNvbXBhY3QiLCJjdXN0b21JbnNwZWN0IiwiZGVwdGgiLCJtYXhBcnJheUxlbmd0aCIsIkluZmluaXR5Iiwic2hvd0hpZGRlbiIsImJyZWFrTGVuZ3RoIiwic2hvd1Byb3h5Iiwic29ydGVkIiwiZ2V0dGVycyIsIl9FcnJvciIsImxpbWl0Iiwic3RhY2tUcmFjZUxpbWl0Iiwic3RkZXJyIiwiaXNUVFkiLCJnZXRDb2xvckRlcHRoIiwib3RoZXIiLCJsYXN0UG9zIiwic2tpcHBlZCIsImFjdHVhbEluc3BlY3RlZCIsImFjdHVhbExpbmVzIiwiZXhwZWN0ZWRMaW5lcyIsImluZGljYXRvciIsImlucHV0TGVuZ3RoIiwiY29sdW1ucyIsImNvdW50IiwiZmxvb3IiLCJtYXhDb3VudCIsImxvZyIsInJlcGVhdCIsInBvcCIsIm1heExpbmVzIiwiX2FjdHVhbExpbmVzIiwicHJpbnRlZExpbmVzIiwic2tpcHBlZE1zZyIsImN1ciIsImV4cGVjdGVkTGluZSIsImFjdHVhbExpbmUiLCJkaXZlcmdpbmdMaW5lcyIsImNyZWF0ZUVyckRpZmYiLCJfcmVzIiwia25vd25PcGVyYXRvcnMiLCJjb2RlIiwicHJvdG9Qcm9wcyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsIl9pbmhlcml0cyIsImN1c3RvbSIsInJlY3Vyc2VUaW1lcyIsIm93bktleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW0iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfb2JqZWN0U3ByZWFkIiwidXRpbCIsImNyZWF0ZUVycm9yVHlwZSIsIk5vZGVFcnJvciIsIl9CYXNlIiwiYXJnMSIsImFyZzIiLCJhcmczIiwiZ2V0TWVzc2FnZSIsIm9uZU9mIiwidGhpbmciLCJkZXRlcm1pbmVyIiwic3Vic3RyIiwicmVhc29uIiwiaW5zcGVjdGVkIiwiUmFuZ2VFcnJvciIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiX2FycmF5V2l0aEhvbGVzIiwiX2FyciIsIl9uIiwiX2QiLCJfZSIsIl9zIiwiX2kiLCJkb25lIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsInJlZ2V4RmxhZ3NTdXBwb3J0ZWQiLCJmbGFncyIsImFycmF5RnJvbVNldCIsImFycmF5IiwiYXJyYXlGcm9tTWFwIiwib2JqZWN0R2V0T3duUHJvcGVydHlTeW1ib2xzIiwibnVtYmVySXNOYU4iLCJOdW1iZXIiLCJpc05hTiIsInVuY3VycnlUaGlzIiwiZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwib2JqZWN0VG9TdHJpbmciLCJpc0FueUFycmF5QnVmZmVyIiwiaXNBcnJheUJ1ZmZlclZpZXciLCJpc0RhdGUiLCJpc01hcCIsImlzU2V0IiwiaXNOYXRpdmVFcnJvciIsImlzQm94ZWRQcmltaXRpdmUiLCJpc051bWJlck9iamVjdCIsImlzU3RyaW5nT2JqZWN0IiwiaXNCb29sZWFuT2JqZWN0IiwiaXNCaWdJbnRPYmplY3QiLCJpc1N5bWJvbE9iamVjdCIsImlzRmxvYXQzMkFycmF5IiwiaXNGbG9hdDY0QXJyYXkiLCJpc05vbkluZGV4IiwiZ2V0T3duTm9uSW5kZXhQcm9wZXJ0aWVzIiwiY29tcGFyZSIsImlubmVyRGVlcEVxdWFsIiwidmFsMSIsInZhbDIiLCJtZW1vcyIsImJ1ZjEiLCJidWYyIiwidmFsMVRhZyIsImtleXMxIiwia2V5czIiLCJrZXlDaGVjayIsImdldFRpbWUiLCJSZWdFeHAiLCJVaW50OEFycmF5IiwiYnl0ZU9mZnNldCIsImFyZVNpbWlsYXJUeXBlZEFycmF5cyIsImFyZVNpbWlsYXJGbG9hdEFycmF5cyIsIl9rZXlzIiwiX2tleXMyIiwidmFsdWVPZiIsIkJvb2xlYW4iLCJCaWdJbnQiLCJpc0VxdWFsQm94ZWRQcmltaXRpdmUiLCJnZXRFbnVtZXJhYmxlcyIsIml0ZXJhdGlvblR5cGUiLCJhS2V5cyIsImJLZXlzIiwic3ltYm9sS2V5c0EiLCJzeW1ib2xLZXlzQiIsIl9zeW1ib2xLZXlzQiIsInBvc2l0aW9uIiwidmFsMk1lbW9BIiwidmFsMk1lbW9CIiwiYXJlRXEiLCJvYmpFcXVpdiIsImRlbGV0ZSIsInNldEhhc0VxdWFsRWxlbWVudCIsIm1lbW8iLCJzZXRWYWx1ZXMiLCJmaW5kTG9vc2VNYXRjaGluZ1ByaW1pdGl2ZXMiLCJwcmltIiwic2V0TWlnaHRIYXZlTG9vc2VQcmltIiwiYWx0VmFsdWUiLCJtYXBNaWdodEhhdmVMb29zZVByaW0iLCJjdXJCIiwibWFwSGFzRXF1YWxFbnRyeSIsImtleTEiLCJpdGVtMSIsImtleTIiLCJhVmFsdWVzIiwiU2V0IiwiYlZhbHVlcyIsIl92YWwiLCJzZXRFcXVpdiIsImFFbnRyaWVzIiwiX2FFbnRyaWVzJGkiLCJpdGVtMiIsImJFbnRyaWVzIiwiX2kyIiwiX2JFbnRyaWVzJF9pIiwibWFwRXF1aXYiLCJrZXlzQSIsInBvc3NpYmxlTmFtZXMiLCJjaGFyc2V0IiwicmVzdCIsImQiLCJiNjQiLCJsZW5zIiwiZ2V0TGVucyIsInZhbGlkTGVuIiwicGxhY2VIb2xkZXJzTGVuIiwidG9CeXRlQXJyYXkiLCJBcnIiLCJfYnl0ZUxlbmd0aCIsImN1ckJ5dGUiLCJyZXZMb29rdXAiLCJmcm9tQnl0ZUFycmF5IiwidWludDgiLCJleHRyYUJ5dGVzIiwicGFydHMiLCJtYXhDaHVua0xlbmd0aCIsImxlbjIiLCJlbmNvZGVDaHVuayIsImxvb2t1cCIsImdsb2JhbE9iamVjdCIsIkJpZ051bWJlciIsImlzTnVtZXJpYyIsIm1hdGhjZWlsIiwibWF0aGZsb29yIiwiYmlnbnVtYmVyRXJyb3IiLCJ0b29NYW55RGlnaXRzIiwiQkFTRSIsIkxPR19CQVNFIiwiTUFYX1NBRkVfSU5URUdFUiIsIlBPV1NfVEVOIiwiU1FSVF9CQVNFIiwiTUFYIiwiYml0Rmxvb3IiLCJjb2VmZlRvU3RyaW5nIiwieGMiLCJ5YyIsImludENoZWNrIiwidG9FeHBvbmVudGlhbCIsImNoYXJBdCIsInRvRml4ZWRQb2ludCIsInpzIiwiY29uZmlnT2JqZWN0IiwiY29udmVydEJhc2UiLCJwYXJzZU51bWVyaWMiLCJwb3cyXzUzIiwicmFuZG9tNTNiaXRJbnQiLCJiYXNlUHJlZml4IiwiZG90QWZ0ZXIiLCJkb3RCZWZvcmUiLCJpc0luZmluaXR5T3JOYU4iLCJ3aGl0ZXNwYWNlT3JQbHVzIiwiUCIsIk9ORSIsIkRFQ0lNQUxfUExBQ0VTIiwiUk9VTkRJTkdfTU9ERSIsIlRPX0VYUF9ORUciLCJUT19FWFBfUE9TIiwiTUlOX0VYUCIsIk1BWF9FWFAiLCJDUllQVE8iLCJNT0RVTE9fTU9ERSIsIlBPV19QUkVDSVNJT04iLCJGT1JNQVQiLCJwcmVmaXgiLCJzZWNvbmRhcnlHcm91cFNpemUiLCJncm91cFNlcGFyYXRvciIsImRlY2ltYWxTZXBhcmF0b3IiLCJmcmFjdGlvbkdyb3VwU2l6ZSIsImZyYWN0aW9uR3JvdXBTZXBhcmF0b3IiLCJzdWZmaXgiLCJBTFBIQUJFVCIsInYiLCJhbHBoYWJldCIsImNhc2VDaGFuZ2VkIiwiaXNOdW0iLCJfaXNCaWdOdW1iZXIiLCJERUJVRyIsInRvTG93ZXJDYXNlIiwiZm9ybWF0Iiwicm0iLCJjMCIsIm5lIiwibWF4T3JNaW4iLCJub3JtYWxpc2UiLCJzZCIsIm5pIiwicmQiLCJwb3dzMTAiLCJST1VORF9VUCIsIlJPVU5EX0RPV04iLCJST1VORF9DRUlMIiwiUk9VTkRfRkxPT1IiLCJST1VORF9IQUxGX1VQIiwiUk9VTkRfSEFMRl9ET1dOIiwiUk9VTkRfSEFMRl9FVkVOIiwiUk9VTkRfSEFMRl9DRUlMIiwiUk9VTkRfSEFMRl9GTE9PUiIsIkVVQ0xJRCIsImNvbmZpZyIsImNyeXB0byIsImdldFJhbmRvbVZhbHVlcyIsInJhbmRvbUJ5dGVzIiwiRVhQT05FTlRJQUxfQVQiLCJSQU5HRSIsImlzQmlnTnVtYmVyIiwibWF4aW11bSIsIm1pbmltdW0iLCJyYW5kb20iLCJkcCIsInJhbmQiLCJVaW50MzJBcnJheSIsInN1bSIsInBsdXMiLCJkZWNpbWFsIiwidG9CYXNlT3V0IiwiYmFzZUluIiwiYmFzZU91dCIsImFyckwiLCJjYWxsZXJJc1RvU3RyaW5nIiwibXVsdGlwbHkiLCJ0ZW1wIiwieGxvIiwieGhpIiwia2xvIiwia2hpIiwiYUwiLCJiTCIsInN1YnRyYWN0IiwibW9yZSIsInByb2QiLCJwcm9kTCIsInFjIiwicmVtIiwicmVtTCIsInJlbTAiLCJ4aSIsInhMIiwieWMwIiwieUwiLCJ5eiIsIk5hTiIsInAxIiwicDIiLCJhYnNvbHV0ZVZhbHVlIiwiY29tcGFyZWRUbyIsImRlY2ltYWxQbGFjZXMiLCJkaXZpZGVkQnkiLCJkaXZpZGVkVG9JbnRlZ2VyQnkiLCJpZGl2IiwiZXhwb25lbnRpYXRlZEJ5IiwiaXNNb2RFeHAiLCJuSXNCaWciLCJuSXNOZWciLCJuSXNPZGQiLCJpc0ludGVnZXIiLCJ0aW1lcyIsImludGVnZXJWYWx1ZSIsImlzRXF1YWxUbyIsImlzRmluaXRlIiwiaXNHcmVhdGVyVGhhbiIsImlzR3JlYXRlclRoYW5PckVxdWFsVG8iLCJpc0xlc3NUaGFuIiwiaXNMZXNzVGhhbk9yRXF1YWxUbyIsImlzTmVnYXRpdmUiLCJpc1Bvc2l0aXZlIiwibWludXMiLCJ4TFR5IiwieGUiLCJ5ZSIsIm1vZHVsbyIsIm11bHRpcGxpZWRCeSIsInhjTCIsInljTCIsInlsbyIsInloaSIsInpjIiwic3FydEJhc2UiLCJuZWdhdGVkIiwicHJlY2lzaW9uIiwic2hpZnRlZEJ5Iiwic3F1YXJlUm9vdCIsInJlcCIsInRvRml4ZWQiLCJ0b0Zvcm1hdCIsImcxIiwiZzIiLCJpbnRQYXJ0IiwiZnJhY3Rpb25QYXJ0IiwiaW50RGlnaXRzIiwidG9GcmFjdGlvbiIsIm1kIiwiZDAiLCJkMSIsImQyIiwiZXhwIiwibjAiLCJuMSIsInRvUHJlY2lzaW9uIiwibW92ZSIsInNyYyIsIl9tb3ZlIiwiZm9yIiwibW9kcm4iLCJhbGxvY1Vuc2FmZSIsImFsbG9jYXRlIiwiX3RvQXJyYXlMaWtlTEUiLCJfdG9BcnJheUxpa2VCRSIsImlzTmVnTnVtIiwiUmFuZCIsImdlbmVyYXRlIiwiX3JhbmQiLCJnZXRCeXRlcyIsImdldEJ5dGUiLCJtc0NyeXB0byIsImFzVUludDMyQXJyYXkiLCJyZWFkVUludDMyQkUiLCJzY3J1YlZlYyIsImNyeXB0QmxvY2siLCJNIiwia2V5U2NoZWR1bGUiLCJTVUJfTUlYIiwiU0JPWCIsIm5Sb3VuZHMiLCJ0MCIsInQxIiwidDIiLCJ0MyIsIlNVQl9NSVgwIiwiU1VCX01JWDEiLCJTVUJfTUlYMiIsIlNVQl9NSVgzIiwiczAiLCJzMSIsInMyIiwiczMiLCJrc1JvdyIsIlJDT04iLCJHIiwiSU5WX1NCT1giLCJJTlZfU1VCX01JWCIsInN4IiwieDQiLCJ4OCIsIkFFUyIsIl9yZXNldCIsImJsb2NrU2l6ZSIsImtleVNpemUiLCJrZXlXb3JkcyIsImtzUm93cyIsImludktleVNjaGVkdWxlIiwiaWsiLCJrc1IiLCJ0dCIsIl9uUm91bmRzIiwiX2tleVNjaGVkdWxlIiwiX2ludktleVNjaGVkdWxlIiwiZW5jcnlwdEJsb2NrUmF3IiwiZW5jcnlwdEJsb2NrIiwid3JpdGVVSW50MzJCRSIsImRlY3J5cHRCbG9jayIsIm0xIiwic2NydWIiLCJhZXMiLCJUcmFuc2Zvcm0iLCJHSEFTSCIsImluY3IzMiIsIlN0cmVhbUNpcGhlciIsIml2IiwiZGVjcnlwdCIsIl9jaXBoZXIiLCJjayIsIl9naGFzaCIsIl9maW5JRCIsImdoYXNoIiwidG9QYWQiLCJ1cGRhdGUiLCJpdkJpdHMiLCJ0YWlsIiwid3JpdGVVSW50QkUiLCJjYWxjSXYiLCJfcHJldiIsIl9zZWNDYWNoZSIsIl9kZWNyeXB0IiwiX2FsZW4iLCJfbW9kZSIsIl9hdXRoVGFnIiwiX2NhbGxlZCIsIl91cGRhdGUiLCJjaHVuayIsInJ1bXAiLCJlbmNyeXB0IiwiX2ZpbmFsIiwiZmluYWwiLCJ4b3JUZXN0IiwiZ2V0QXV0aFRhZyIsInNldEF1dGhUYWciLCJzZXRBQUQiLCJjaXBoZXJzIiwiZGVjaXBoZXJzIiwibW9kZXMiLCJjcmVhdGVDaXBoZXIiLCJDaXBoZXIiLCJjcmVhdGVDaXBoZXJpdiIsIkNpcGhlcml2IiwiY3JlYXRlRGVjaXBoZXIiLCJEZWNpcGhlciIsImNyZWF0ZURlY2lwaGVyaXYiLCJEZWNpcGhlcml2IiwibGlzdENpcGhlcnMiLCJnZXRDaXBoZXJzIiwiQXV0aENpcGhlciIsIk1PREVTIiwiZWJ0ayIsIlNwbGl0dGVyIiwiX2xhc3QiLCJfYXV0b3BhZGRpbmciLCJjYWNoZSIsInN1aXRlIiwicGFzc3dvcmQiLCJmbHVzaCIsImxhc3QiLCJwYWRkZWQiLCJ1bnBhZCIsInNldEF1dG9QYWRkaW5nIiwic2V0VG8iLCJhdXRvUGFkZGluZyIsIlBBRERJTkciLCJlcXVhbHMiLCJwYWRCdWZmIiwid3JpdGVVSW50OCIsIlpFUk9FUyIsImZyb21BcnJheSIsImJsb2NrIiwiX211bHRpcGx5IiwibHNiVmkiLCJWaSIsIlppIiwiYWJsIiwiYmwiLCJwYWQiLCJlbmNyeXB0U3RhcnQiLCJlbmNyeXB0Qnl0ZSIsImJ5dGVQYXJhbSIsInNoaWZ0SW4iLCJnZXRCbG9jayIsImNodW5rTnVtIiwibW9kZU1vZHVsZXMiLCJFQ0IiLCJDQkMiLCJDRkIiLCJDRkI4IiwiQ0ZCMSIsIk9GQiIsIkNUUiIsIkdDTSIsIkRFUyIsImFlc01vZGVzIiwiZGVzTW9kZXMiLCJrZXlMZW4iLCJpdkxlbiIsIkNpcGhlckJhc2UiLCJkZXMiLCJpbnN0YW50aWF0ZSIsIkVERSIsIm9wdHMiLCJtb2RlTmFtZSIsIl9kZXMiLCJkZXMzIiwiZ2V0ciIsInByaXYiLCJtb2R1bHVzIiwicHJpbWUxIiwicHJpbWUyIiwiY3J0IiwiYmxpbmRzIiwiYmxpbmRlciIsInB1YmxpY0V4cG9uZW50IiwidW5ibGluZGVyIiwiYmxpbmQiLCJibGluZGVkIiwiYzEiLCJjMiIsInFpbnYiLCJjb2VmZmljaWVudCIsImV4cG9uZW50MSIsIm0yIiwiZXhwb25lbnQyIiwiY3JlYXRlSGFzaCIsInN0cmVhbSIsInZlcmlmeSIsImFsZ29yaXRobXMiLCJTaWduIiwiYWxnb3JpdGhtIiwiV3JpdGFibGUiLCJfaGFzaFR5cGUiLCJoYXNoIiwiX2hhc2giLCJfdGFnIiwiX3NpZ25UeXBlIiwiVmVyaWZ5IiwiY3JlYXRlU2lnbiIsImNyZWF0ZVZlcmlmeSIsIl93cml0ZSIsImRpZ2VzdCIsInNpZyIsImNyZWF0ZUhtYWMiLCJFQyIsInBhcnNlS2V5cyIsImN1cnZlcyIsImdldEtleSIsImFsZ28iLCJobGVuIiwiaGJpdHMiLCJiaXRzMmludCIsImJpdHMyb2N0ZXRzIiwiZmlsbCIsIm9iaXRzIiwibWFrZUtleSIsImt2IiwibWFrZVIiLCJoYXNoVHlwZSIsInNpZ25UeXBlIiwiY3VydmUiLCJjdXJ2ZUlkIiwia2V5RnJvbVByaXZhdGUiLCJwcml2YXRlS2V5IiwidG9ERVIiLCJlY1NpZ24iLCJwYXJhbXMiLCJwcml2X2tleSIsIkgiLCJkc2FTaWduIiwiY2hlY2tWYWx1ZSIsInB1YiIsInB1YmtleSIsInN1YmplY3RQcml2YXRlS2V5IiwiZWNWZXJpZnkiLCJwdWJfa2V5IiwidW5wYWNrZWQiLCJzaWduYXR1cmUiLCJtb250cCIsImRzYVZlcmlmeSIsInBhZE51bSIsIlpzdHJlYW0iLCJ6bGliX2RlZmxhdGUiLCJ6bGliX2luZmxhdGUiLCJabGliIiwiREVGTEFURSIsIlVOWklQIiwiZGljdGlvbmFyeSIsImluaXRfZG9uZSIsImxldmVsIiwibWVtTGV2ZWwiLCJzdHJhdGVneSIsIndpbmRvd0JpdHMiLCJ3cml0ZV9pbl9wcm9ncmVzcyIsInBlbmRpbmdfY2xvc2UiLCJnemlwX2lkX2J5dGVzX3JlYWQiLCJOT05FIiwiSU5GTEFURSIsIkdaSVAiLCJHVU5aSVAiLCJERUZMQVRFUkFXIiwiSU5GTEFURVJBVyIsImNsb3NlIiwiZGVmbGF0ZUVuZCIsInN0cm0iLCJpbmZsYXRlRW5kIiwiaW5fb2ZmIiwiaW5fbGVuIiwib3V0X29mZiIsIm91dF9sZW4iLCJ3cml0ZVN5bmMiLCJhc3luYyIsIlpfTk9fRkxVU0giLCJaX1BBUlRJQUxfRkxVU0giLCJaX1NZTkNfRkxVU0giLCJaX0ZVTExfRkxVU0giLCJaX0ZJTklTSCIsIlpfQkxPQ0siLCJhdmFpbF9pbiIsIm5leHRfaW4iLCJhdmFpbF9vdXQiLCJuZXh0X291dCIsIl9wcm9jZXNzIiwiX2NoZWNrRXJyb3IiLCJfYWZ0ZXJTeW5jIiwibmV4dFRpY2siLCJfYWZ0ZXIiLCJuZXh0X2V4cGVjdGVkX2hlYWRlcl9ieXRlIiwiZGVmbGF0ZSIsImluZmxhdGUiLCJaX05FRURfRElDVCIsImluZmxhdGVTZXREaWN0aW9uYXJ5IiwiWl9PSyIsIlpfREFUQV9FUlJPUiIsIlpfU1RSRUFNX0VORCIsInJlc2V0IiwiWl9CVUZfRVJST1IiLCJfZXJyb3IiLCJjYWxsYmFjayIsIm9uZXJyb3IiLCJpbml0IiwiWl9GSUxURVJFRCIsIlpfSFVGRk1BTl9PTkxZIiwiWl9STEUiLCJaX0ZJWEVEIiwiWl9ERUZBVUxUX1NUUkFURUdZIiwiX3NldERpY3Rpb25hcnkiLCJkZWZsYXRlSW5pdDIiLCJaX0RFRkxBVEVEIiwiaW5mbGF0ZUluaXQyIiwiZGVmbGF0ZVNldERpY3Rpb25hcnkiLCJkZWZsYXRlUmVzZXQiLCJpbmZsYXRlUmVzZXQiLCJiaW5kaW5nIiwia01heExlbmd0aCIsImtSYW5nZUVycm9yTWVzc2FnZSIsIlpfTUlOX1dJTkRPV0JJVFMiLCJaX01BWF9XSU5ET1dCSVRTIiwiWl9ERUZBVUxUX1dJTkRPV0JJVFMiLCJaX01JTl9DSFVOSyIsIlpfTUFYX0NIVU5LIiwiWl9ERUZBVUxUX0NIVU5LIiwiWl9NSU5fTUVNTEVWRUwiLCJaX01BWF9NRU1MRVZFTCIsIlpfREVGQVVMVF9NRU1MRVZFTCIsIlpfTUlOX0xFVkVMIiwiWl9NQVhfTEVWRUwiLCJaX0RFRkFVTFRfTEVWRUwiLCJaX0RFRkFVTFRfQ09NUFJFU1NJT04iLCJia2V5cyIsImJrIiwiYmtleSIsIlpfRVJSTk8iLCJaX1NUUkVBTV9FUlJPUiIsIlpfTUVNX0VSUk9SIiwiWl9WRVJTSU9OX0VSUk9SIiwiY2tleXMiLCJja2V5IiwiemxpYkJ1ZmZlciIsImVuZ2luZSIsImJ1ZmZlcnMiLCJucmVhZCIsImZsb3ciLCJyZWFkIiwib25jZSIsIm9uRW5kIiwib24iLCJyZW1vdmVMaXN0ZW5lciIsInpsaWJCdWZmZXJTeW5jIiwiZmx1c2hGbGFnIiwiX2ZpbmlzaEZsdXNoRmxhZyIsIl9wcm9jZXNzQ2h1bmsiLCJEZWZsYXRlIiwiSW5mbGF0ZSIsIkd6aXAiLCJHdW56aXAiLCJEZWZsYXRlUmF3IiwiSW5mbGF0ZVJhdyIsIlVuemlwIiwiaXNWYWxpZEZsdXNoRmxhZyIsImZsYWciLCJfb3B0cyIsIl9jaHVua1NpemUiLCJjaHVua1NpemUiLCJmaW5pc2hGbHVzaCIsIl9mbHVzaEZsYWciLCJfaGFuZGxlIiwiX2hhZEVycm9yIiwiZXJybm8iLCJfY2xvc2UiLCJlbWl0IiwiX2J1ZmZlciIsIl9vZmZzZXQiLCJfbGV2ZWwiLCJfc3RyYXRlZ3kiLCJlbWl0Q2xvc2VOVCIsImZyZWV6ZSIsImNyZWF0ZURlZmxhdGUiLCJjcmVhdGVJbmZsYXRlIiwiY3JlYXRlRGVmbGF0ZVJhdyIsImNyZWF0ZUluZmxhdGVSYXciLCJjcmVhdGVHemlwIiwiY3JlYXRlR3VuemlwIiwiY3JlYXRlVW56aXAiLCJkZWZsYXRlU3luYyIsImd6aXAiLCJnemlwU3luYyIsImRlZmxhdGVSYXciLCJkZWZsYXRlUmF3U3luYyIsInVuemlwIiwidW56aXBTeW5jIiwiaW5mbGF0ZVN5bmMiLCJndW56aXAiLCJndW56aXBTeW5jIiwiaW5mbGF0ZVJhdyIsImluZmxhdGVSYXdTeW5jIiwiX2ZsdXNoIiwiX3RyYW5zZm9ybSIsImtpbmQiLCJfdGhpczIiLCJfd3JpdGFibGVTdGF0ZSIsImVuZGVkIiwiZW5kaW5nIiwibmVlZERyYWluIiwiZW5jb2RpbmciLCJjYiIsImF2YWlsSW5CZWZvcmUiLCJhdmFpbE91dEJlZm9yZSIsImluT2ZmIiwiZXIiLCJyZXEiLCJhdmFpbEluQWZ0ZXIiLCJhdmFpbE91dEFmdGVyIiwiaGF2ZSIsIm5ld1JlcSIsIlRZUEVEX09LIiwiVWludDE2QXJyYXkiLCJJbnQzMkFycmF5IiwiX2hhcyIsInNvdXJjZXMiLCJzaHJpbmtCdWYiLCJzdWJhcnJheSIsImZuVHlwZWQiLCJhcnJheVNldCIsInNyY19vZmZzIiwiZGVzdF9vZmZzIiwiZmxhdHRlbkNodW5rcyIsImNodW5rcyIsImZuVW50eXBlZCIsInNldFR5cGVkIiwiQnVmOCIsIkJ1ZjE2IiwiQnVmMzIiLCJhZGxlciIsIlpfVFJFRVMiLCJaX05PX0NPTVBSRVNTSU9OIiwiWl9CRVNUX1NQRUVEIiwiWl9CRVNUX0NPTVBSRVNTSU9OIiwiWl9CSU5BUlkiLCJaX1RFWFQiLCJaX1VOS05PV04iLCJjcmNUYWJsZSIsInRhYmxlIiwibWFrZVRhYmxlIiwiY3JjIiwiY29uZmlndXJhdGlvbl90YWJsZSIsInV0aWxzIiwidHJlZXMiLCJhZGxlcjMyIiwiY3JjMzIiLCJNQVhfTUFUQ0giLCJNSU5fTE9PS0FIRUFEIiwiSENSQ19TVEFURSIsIkJVU1lfU1RBVEUiLCJGSU5JU0hfU1RBVEUiLCJlcnJvckNvZGUiLCJyYW5rIiwiemVybyIsImZsdXNoX3BlbmRpbmciLCJwZW5kaW5nIiwicGVuZGluZ19idWYiLCJwZW5kaW5nX291dCIsInRvdGFsX291dCIsImZsdXNoX2Jsb2NrX29ubHkiLCJfdHJfZmx1c2hfYmxvY2siLCJibG9ja19zdGFydCIsInN0cnN0YXJ0IiwicHV0X2J5dGUiLCJwdXRTaG9ydE1TQiIsImxvbmdlc3RfbWF0Y2giLCJjdXJfbWF0Y2giLCJjaGFpbl9sZW5ndGgiLCJtYXhfY2hhaW5fbGVuZ3RoIiwic2NhbiIsImJlc3RfbGVuIiwicHJldl9sZW5ndGgiLCJuaWNlX21hdGNoIiwid19zaXplIiwiX3dpbiIsIndtYXNrIiwid19tYXNrIiwic3RyZW5kIiwic2Nhbl9lbmQxIiwic2Nhbl9lbmQiLCJnb29kX21hdGNoIiwibG9va2FoZWFkIiwibWF0Y2hfc3RhcnQiLCJmaWxsX3dpbmRvdyIsIl93X3NpemUiLCJ3aW5kb3dfc2l6ZSIsImhhc2hfc2l6ZSIsImhlYWQiLCJ3cmFwIiwidG90YWxfaW4iLCJpbnNlcnQiLCJpbnNfaCIsImhhc2hfc2hpZnQiLCJoYXNoX21hc2siLCJkZWZsYXRlX2Zhc3QiLCJoYXNoX2hlYWQiLCJiZmx1c2giLCJtYXRjaF9sZW5ndGgiLCJfdHJfdGFsbHkiLCJtYXhfbGF6eV9tYXRjaCIsIk1JTl9NQVRDSCIsImxhc3RfbGl0IiwiZGVmbGF0ZV9zbG93IiwibWF4X2luc2VydCIsInByZXZfbWF0Y2giLCJtYXRjaF9hdmFpbGFibGUiLCJDb25maWciLCJnb29kX2xlbmd0aCIsIm1heF9sYXp5IiwibmljZV9sZW5ndGgiLCJtYXhfY2hhaW4iLCJmdW5jIiwiRGVmbGF0ZVN0YXRlIiwic3RhdHVzIiwicGVuZGluZ19idWZfc2l6ZSIsImd6aGVhZCIsImd6aW5kZXgiLCJsYXN0X2ZsdXNoIiwid19iaXRzIiwiaGFzaF9iaXRzIiwiZHluX2x0cmVlIiwiSEVBUF9TSVpFIiwiZHluX2R0cmVlIiwiYmxfdHJlZSIsImxfZGVzYyIsImRfZGVzYyIsImJsX2Rlc2MiLCJibF9jb3VudCIsIk1BWF9CSVRTIiwiaGVhcCIsImhlYXBfbGVuIiwiaGVhcF9tYXgiLCJsX2J1ZiIsImxpdF9idWZzaXplIiwiZF9idWYiLCJvcHRfbGVuIiwic3RhdGljX2xlbiIsIm1hdGNoZXMiLCJiaV9idWYiLCJiaV92YWxpZCIsImRlZmxhdGVSZXNldEtlZXAiLCJkYXRhX3R5cGUiLCJfdHJfaW5pdCIsIm1heF9ibG9ja19zaXplIiwibWF4X3N0YXJ0IiwiZGVmbGF0ZUluaXQiLCJkZWZsYXRlU2V0SGVhZGVyIiwib2xkX2ZsdXNoIiwiYmVnIiwidGV4dCIsImhjcmMiLCJleHRyYSIsImNvbW1lbnQiLCJvcyIsImJzdGF0ZSIsImRlZmxhdGVfaHVmZiIsImRlZmxhdGVfcmxlIiwiX3RyX2FsaWduIiwiX3RyX3N0b3JlZF9ibG9jayIsImF2YWlsIiwidG1wRGljdCIsImRpY3RMZW5ndGgiLCJkZWZsYXRlSW5mbyIsIl9pbiIsIl9vdXQiLCJkbWF4Iiwid3NpemUiLCJ3aGF2ZSIsInduZXh0Iiwic193aW5kb3ciLCJob2xkIiwibGNvZGUiLCJkY29kZSIsImxtYXNrIiwiZG1hc2siLCJoZXJlIiwib3AiLCJkaXN0IiwiZnJvbV9zb3VyY2UiLCJsZW5jb2RlIiwiZGlzdGNvZGUiLCJsZW5iaXRzIiwiZGlzdGJpdHMiLCJ0b3AiLCJkb2xlbiIsImRvZGlzdCIsInNhbmUiLCJpbmZsYXRlX2Zhc3QiLCJpbmZsYXRlX3RhYmxlIiwiVFlQRSIsIkJBRCIsInpzd2FwMzIiLCJJbmZsYXRlU3RhdGUiLCJoYXZlZGljdCIsImNoZWNrIiwid2JpdHMiLCJuY29kZSIsIm5sZW4iLCJuZGlzdCIsIndvcmsiLCJsZW5keW4iLCJkaXN0ZHluIiwiYmFjayIsIndhcyIsImluZmxhdGVSZXNldEtlZXAiLCJpbmZsYXRlUmVzZXQyIiwibGVuZml4IiwiZGlzdGZpeCIsInZpcmdpbiIsImZpeGVkdGFibGVzIiwidXBkYXRld2luZG93IiwiaW5mbGF0ZUluaXQiLCJwdXQiLCJoZXJlX2JpdHMiLCJoZXJlX29wIiwiaGVyZV92YWwiLCJsYXN0X2JpdHMiLCJsYXN0X29wIiwibGFzdF92YWwiLCJoYnVmIiwib3JkZXIiLCJpbmZfbGVhdmUiLCJ4ZmxhZ3MiLCJleHRyYV9sZW4iLCJpbmZsYXRlR2V0SGVhZGVyIiwiaW5mbGF0ZUluZm8iLCJsYmFzZSIsImxleHQiLCJkYmFzZSIsImRleHQiLCJsZW5zX2luZGV4IiwidGFibGVfaW5kZXgiLCJpbmNyIiwibG93Iiwicm9vdCIsImN1cnIiLCJkcm9wIiwidXNlZCIsImh1ZmYiLCJiYXNlX2luZGV4IiwiTUFYQklUUyIsIm9mZnMiLCJleHRyYV9pbmRleCIsImV4dHJhX2xiaXRzIiwiZXh0cmFfZGJpdHMiLCJleHRyYV9ibGJpdHMiLCJibF9vcmRlciIsInN0YXRpY19sdHJlZSIsInN0YXRpY19kdHJlZSIsIkRfQ09ERVMiLCJfZGlzdF9jb2RlIiwiX2xlbmd0aF9jb2RlIiwiYmFzZV9sZW5ndGgiLCJzdGF0aWNfbF9kZXNjIiwic3RhdGljX2RfZGVzYyIsInN0YXRpY19ibF9kZXNjIiwiYmFzZV9kaXN0IiwiU3RhdGljVHJlZURlc2MiLCJzdGF0aWNfdHJlZSIsImV4dHJhX2JpdHMiLCJleHRyYV9iYXNlIiwiZWxlbXMiLCJtYXhfbGVuZ3RoIiwiaGFzX3N0cmVlIiwiVHJlZURlc2MiLCJkeW5fdHJlZSIsInN0YXRfZGVzYyIsIm1heF9jb2RlIiwiZF9jb2RlIiwicHV0X3Nob3J0Iiwic2VuZF9iaXRzIiwic2VuZF9jb2RlIiwiYmlfcmV2ZXJzZSIsImdlbl9jb2RlcyIsIm5leHRfY29kZSIsImluaXRfYmxvY2siLCJMSVRFUkFMUyIsIkVORF9CTE9DSyIsImJpX3dpbmR1cCIsInNtYWxsZXIiLCJfbjIiLCJfbTIiLCJwcWRvd25oZWFwIiwiY29tcHJlc3NfYmxvY2siLCJsdHJlZSIsImR0cmVlIiwibGMiLCJseCIsImJ1aWxkX3RyZWUiLCJkZXNjIiwic3RyZWUiLCJ4Yml0cyIsIm92ZXJmbG93IiwiZ2VuX2JpdGxlbiIsInNjYW5fdHJlZSIsImN1cmxlbiIsInByZXZsZW4iLCJuZXh0bGVuIiwibWF4X2NvdW50IiwibWluX2NvdW50IiwiUkVQXzNfNiIsIlJFUFpfM18xMCIsIlJFUFpfMTFfMTM4Iiwic2VuZF90cmVlIiwic3RhdGljX2luaXRfZG9uZSIsInN0b3JlZF9sZW4iLCJjb3B5X2Jsb2NrIiwiTEVOR1RIX0NPREVTIiwiTF9DT0RFUyIsInRyX3N0YXRpY19pbml0Iiwib3B0X2xlbmIiLCJzdGF0aWNfbGVuYiIsIm1heF9ibGluZGV4IiwiYmxhY2tfbWFzayIsImRldGVjdF9kYXRhX3R5cGUiLCJCTF9DT0RFUyIsImJ1aWxkX2JsX3RyZWUiLCJsY29kZXMiLCJkY29kZXMiLCJibGNvZGVzIiwic2VuZF9hbGxfdHJlZXMiLCJTVEFUSUNfVFJFRVMiLCJiaV9mbHVzaCIsImllZWU3NTQiLCJjdXN0b21JbnNwZWN0U3ltYm9sIiwiU2xvd0J1ZmZlciIsIklOU1BFQ1RfTUFYX0JZVEVTIiwiS19NQVhfTEVOR1RIIiwiY3JlYXRlQnVmZmVyIiwiZW5jb2RpbmdPck9mZnNldCIsImlzRW5jb2RpbmciLCJmcm9tU3RyaW5nIiwiQXJyYXlCdWZmZXIiLCJpc1ZpZXciLCJhcnJheVZpZXciLCJpc0luc3RhbmNlIiwiZnJvbUFycmF5QnVmZmVyIiwiZnJvbUFycmF5TGlrZSIsImZyb21BcnJheVZpZXciLCJTaGFyZWRBcnJheUJ1ZmZlciIsImNoZWNrZWQiLCJmcm9tT2JqZWN0IiwidG9QcmltaXRpdmUiLCJhc3NlcnRTaXplIiwibXVzdE1hdGNoIiwibG93ZXJlZENhc2UiLCJ1dGY4VG9CeXRlcyIsImJhc2U2NFRvQnl0ZXMiLCJzbG93VG9TdHJpbmciLCJoZXhTbGljZSIsInV0ZjhTbGljZSIsImFzY2lpU2xpY2UiLCJsYXRpbjFTbGljZSIsImJhc2U2NFNsaWNlIiwidXRmMTZsZVNsaWNlIiwic3dhcCIsImJpZGlyZWN0aW9uYWxJbmRleE9mIiwiZGlyIiwiYXJyYXlJbmRleE9mIiwibGFzdEluZGV4T2YiLCJpbmRleFNpemUiLCJhcnJMZW5ndGgiLCJ2YWxMZW5ndGgiLCJmb3VuZEluZGV4IiwiZm91bmQiLCJoZXhXcml0ZSIsInJlbWFpbmluZyIsInN0ckxlbiIsInBhcnNlZCIsInBhcnNlSW50IiwidXRmOFdyaXRlIiwiYmxpdEJ1ZmZlciIsImFzY2lpV3JpdGUiLCJieXRlQXJyYXkiLCJhc2NpaVRvQnl0ZXMiLCJiYXNlNjRXcml0ZSIsInVjczJXcml0ZSIsInVuaXRzIiwidXRmMTZsZVRvQnl0ZXMiLCJmaXJzdEJ5dGUiLCJjb2RlUG9pbnQiLCJieXRlc1BlclNlcXVlbmNlIiwic2Vjb25kQnl0ZSIsInRoaXJkQnl0ZSIsImZvdXJ0aEJ5dGUiLCJ0ZW1wQ29kZVBvaW50IiwiY29kZVBvaW50cyIsIk1BWF9BUkdVTUVOVFNfTEVOR1RIIiwiZGVjb2RlQ29kZVBvaW50c0FycmF5IiwiVFlQRURfQVJSQVlfU1VQUE9SVCIsInByb3RvIiwiZm9vIiwidHlwZWRBcnJheVN1cHBvcnQiLCJwb29sU2l6ZSIsImFsbG9jVW5zYWZlU2xvdyIsIl9pc0J1ZmZlciIsImxpc3QiLCJzd2FwMTYiLCJzd2FwMzIiLCJzd2FwNjQiLCJ0b0xvY2FsZVN0cmluZyIsInRyaW0iLCJ0aGlzU3RhcnQiLCJ0aGlzRW5kIiwidGhpc0NvcHkiLCJ0YXJnZXRDb3B5IiwiaW5jbHVkZXMiLCJoZXhTbGljZUxvb2t1cFRhYmxlIiwiY2hlY2tPZmZzZXQiLCJleHQiLCJjaGVja0ludCIsIndydEJpZ1VJbnQ2NExFIiwiY2hlY2tJbnRCSSIsIndydEJpZ1VJbnQ2NEJFIiwiY2hlY2tJRUVFNzU0Iiwid3JpdGVGbG9hdCIsIm5vQXNzZXJ0Iiwid3JpdGVEb3VibGUiLCJuZXdCdWYiLCJyZWFkVWludExFIiwicmVhZFVJbnRMRSIsInJlYWRVaW50QkUiLCJyZWFkVUludEJFIiwicmVhZFVpbnQ4IiwicmVhZFVpbnQxNkxFIiwicmVhZFVJbnQxNkxFIiwicmVhZFVpbnQxNkJFIiwicmVhZFVpbnQzMkxFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVpbnQzMkJFIiwicmVhZEJpZ1VJbnQ2NExFIiwiZGVmaW5lQmlnSW50TWV0aG9kIiwidmFsaWRhdGVOdW1iZXIiLCJib3VuZHNFcnJvciIsInJlYWRCaWdVSW50NjRCRSIsInJlYWRJbnRMRSIsInJlYWRJbnRCRSIsInJlYWRJbnQ4IiwicmVhZEludDE2TEUiLCJyZWFkSW50MTZCRSIsInJlYWRJbnQzMkxFIiwicmVhZEludDMyQkUiLCJyZWFkQmlnSW50NjRMRSIsInJlYWRCaWdJbnQ2NEJFIiwicmVhZEZsb2F0TEUiLCJyZWFkRmxvYXRCRSIsInJlYWREb3VibGVMRSIsInJlYWREb3VibGVCRSIsIndyaXRlVWludExFIiwid3JpdGVVSW50TEUiLCJ3cml0ZVVpbnRCRSIsIndyaXRlVWludDgiLCJ3cml0ZVVpbnQxNkxFIiwid3JpdGVVSW50MTZMRSIsIndyaXRlVWludDE2QkUiLCJ3cml0ZVVpbnQzMkxFIiwid3JpdGVVSW50MzJMRSIsIndyaXRlVWludDMyQkUiLCJ3cml0ZUJpZ1VJbnQ2NExFIiwid3JpdGVCaWdVSW50NjRCRSIsIndyaXRlSW50TEUiLCJ3cml0ZUludEJFIiwid3JpdGVJbnQ4Iiwid3JpdGVJbnQxNkxFIiwid3JpdGVJbnQxNkJFIiwid3JpdGVJbnQzMkxFIiwid3JpdGVJbnQzMkJFIiwid3JpdGVCaWdJbnQ2NExFIiwid3JpdGVCaWdJbnQ2NEJFIiwid3JpdGVGbG9hdExFIiwid3JpdGVGbG9hdEJFIiwid3JpdGVEb3VibGVMRSIsIndyaXRlRG91YmxlQkUiLCJ0YXJnZXRTdGFydCIsImNvcHlXaXRoaW4iLCJFIiwic3VwZXIiLCJhZGROdW1lcmljYWxTZXBhcmF0b3IiLCJyYW5nZSIsIkVSUl9PVVRfT0ZfUkFOR0UiLCJjaGVja0JvdW5kcyIsIkVSUl9CVUZGRVJfT1VUX09GX0JPVU5EUyIsInJlY2VpdmVkIiwiSU5WQUxJRF9CQVNFNjRfUkUiLCJsZWFkU3Vycm9nYXRlIiwiYmFzZTY0Y2xlYW4iLCJkc3QiLCJpMTYiLCJCdWZmZXJCaWdJbnROb3REZWZpbmVkIiwiR2V0SW50cmluc2ljIiwiY2FsbEJpbmQiLCIkaW5kZXhPZiIsImFsbG93TWlzc2luZyIsImludHJpbnNpYyIsIiRhcHBseSIsIiRjYWxsIiwiJHJlZmxlY3RBcHBseSIsIiRnT1BEIiwiJGRlZmluZVByb3BlcnR5IiwiJG1heCIsIm9yaWdpbmFsRnVuY3Rpb24iLCJhcHBseUJpbmQiLCJLIiwiWCIsIlkiLCJSIiwiSSIsIk8iLCJUIiwiViIsIlMiLCJKIiwiTCIsIlUiLCIkIiwiWiIsIlciLCJGIiwiUSIsIkNvbW1lbnRlZCIsIkRpYWdub3NlIiwiRGVjb2RlciIsIkVuY29kZXIiLCJTaW1wbGUiLCJUYWdnZWQiLCJVSSIsImZJIiwiZGVjb2RlQWxsIiwiaDgiLCJkZWNvZGVGaXJzdCIsImNjIiwiZGVjb2RlQWxsU3luYyIsIiR1IiwiZGVjb2RlRmlyc3RTeW5jIiwiZGlhZ25vc2UiLCJjdiIsIk4yIiwiZW5jb2RlQ2Fub25pY2FsIiwiVEciLCJlbmNvZGVPbmUiLCJXUiIsImVuY29kZUFzeW5jIiwiSngiLCJ3dyIsInZjIiwiTVQiLCJOVU1CWVRFUyIsIlNZTVMiLCJtYXhfZGVwdGgiLCJub19zdW1tYXJ5IiwiYmlnaW50IiwicHJlZmVyV2ViIiwicmVhZGFibGVPYmplY3RNb2RlIiwid3JpdGFibGVPYmplY3RNb2RlIiwiYWxsIiwiX3RhZ18yNCIsInBhcnNlciIsIl9vbl92YWx1ZSIsIl9vbl9zdGFydCIsIl9vbl9zdGFydF9zdHJpbmciLCJfb25fc3RvcCIsIl9vbl9tb3JlIiwiX29uX2Vycm9yIiwiX29uX2RhdGEiLCJicyIsIl9vbl9yZWFkIiwicGlwZSIsImd1ZXNzRW5jb2RpbmciLCJQT1NfSU5UIiwiTkVHX0lOVCIsIkFSUkFZIiwiTUFQIiwiQllURV9TVFJJTkciLCJVVEY4X1NUUklORyIsIlNJTVBMRV9GTE9BVCIsIlRBRyIsIlNUUkVBTSIsIkJSRUFLIiwiY2JvclZhbHVlVG9TdHJpbmciLCJUV08iLCJGT1VSIiwiRUlHSFQiLCJEQVRFX1NUUklORyIsIkRBVEVfRVBPQ0giLCJQT1NfQklHSU5UIiwiTkVHX0JJR0lOVCIsIkRFQ0lNQUxfRlJBQyIsIkJJR0ZMT0FUIiwiQkFTRTY0VVJMX0VYUEVDVEVEIiwiQkFTRTY0X0VYUEVDVEVEIiwiQkFTRTE2X0VYUEVDVEVEIiwiQ0JPUiIsIlVSSSIsIkJBU0U2NFVSTCIsIkJBU0U2NCIsIlJFR0VYUCIsIk1JTUUiLCJTRVQiLCJaRVJPIiwiSU5ERUZJTklURSIsIlNJTVBMRSIsIkZBTFNFIiwiVFJVRSIsIk5VTEwiLCJVTkRFRklORUQiLCJQQVJFTlQiLCJTSElGVDMyIiwiQkkiLCJNSU5VU19PTkUiLCJORUdfTUFYIiwiTUFYSU5UMzIiLCJNQVhJTlQ2NCIsIk1BWElOVCIsImJ1ZmZlclRvQmlnSW50IiwiYnl0ZSIsInJlcXVpcmVkIiwiZXh0ZW5kZWRSZXN1bHRzIiwiZGVmYXVsdEVuY29kaW5nIiwicnVubmluZyIsIl9vblJlYWQiLCJ2YWx1ZUJ5dGVzIiwiX3BhcnNlIiwibnVsbGNoZWNrIiwiX19mcmVzaCIsInBhcnNlQ0JPUmludCIsInV0ZjgiLCJwYXJzZUNCT1JmbG9hdCIsImNvbnZlcnQiLCJOT1RfRk9VTkQiLCJzZXBhcmF0b3IiLCJzdHJlYW1fZXJyb3JzIiwiZmxvYXRfYnl0ZXMiLCJfZm9yZSIsImNhbm9uaWNhbCIsImVuY29kZVVuZGVmaW5lZCIsImRpc2FsbG93VW5kZWZpbmVkS2V5cyIsImRhdGVUeXBlIiwiY29sbGFwc2VCaWdJbnRlZ2VycyIsImRldGVjdExvb3BzIiwib21pdFVuZGVmaW5lZFByb3BlcnRpZXMiLCJnZW5UeXBlcyIsIldlYWtTZXQiLCJzZW1hbnRpY1R5cGVzIiwiX3B1c2hBcnJheSIsIl9wdXNoRGF0ZSIsIl9wdXNoQnVmZmVyIiwiX3B1c2hNYXAiLCJOb0ZpbHRlciIsIl9wdXNoTm9GaWx0ZXIiLCJfcHVzaFJlZ2V4cCIsIl9wdXNoU2V0IiwiX3B1c2hBcnJheUJ1ZmZlciIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiX3B1c2hUeXBlZEFycmF5IiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsIlVSTCIsIl9wdXNoVVJMIiwiX3B1c2hCb3hlZCIsIl9wdXNoQmlnTnVtYmVyIiwiQmlnVWludDY0QXJyYXkiLCJCaWdJbnQ2NEFycmF5IiwiYWRkU2VtYW50aWNUeXBlIiwiZW50cmllcyIsInB1c2hBbnkiLCJfcHVzaFVJbnQ4IiwiX3B1c2hVSW50MTZCRSIsIl9wdXNoVUludDMyQkUiLCJfcHVzaEZsb2F0QkUiLCJfcHVzaERvdWJsZUJFIiwiX3B1c2hOYU4iLCJfcHVzaEluZmluaXR5IiwiX3B1c2hGbG9hdCIsIndyaXRlSGFsZiIsImZyb3VuZCIsIl9wdXNoSW50IiwiX3B1c2hJbnROdW0iLCJfcHVzaE51bWJlciIsIl9wdXNoU3RyaW5nIiwiX3B1c2hCb29sZWFuIiwiX3B1c2hVbmRlZmluZWQiLCJidWZmZXJpc2hUb0J1ZmZlciIsIl9wdXNoTnVsbCIsImluZGVmaW5pdGUiLCJfcHVzaFRhZyIsInRvSVNPU3RyaW5nIiwiX3B1c2hBbnkiLCJfcHVzaEJpZ2ludCIsIl9wdXNoSlNCaWdpbnQiLCJoaWdoV2F0ZXJNYXJrIiwicmVhZGFibGVIaWdoV2F0ZXJNYXJrIiwic29ydCIsIkJZVEVTX1BFUl9FTEVNRU5UIiwic3RhcnRzV2l0aCIsImlzQmlnRW5kaWFuIiwicmVtb3ZlTG9vcERldGVjdG9ycyIsIl9wdXNoT2JqZWN0Iiwic2tpcFR5cGVzIiwiZW5jb2RlQ0JPUiIsIl9lbmNvZGVBbGwiLCJpc0J1ZmZlcmlzaCIsIl90b1R5cGVkQXJyYXkiLCJEYXRhVmlldyIsImdldFVpbnQxNiIsInNldFVpbnQxNiIsImdldFVpbnQzMiIsInNldFVpbnQzMiIsImdldEJpZ1VpbnQ2NCIsInNldEJpZ1VpbnQ2NCIsImJ1ZmZlclRvQmlnbnVtYmVyIiwiYmFzZTY0dXJsIiwiSU5URVJOQUxfSlNPTiIsImZhdGFsIiwiaWdub3JlQk9NIiwiY2hlY2tzVVRGOCIsInBhcnNlSGFsZiIsImhleCIsImJpbiIsImFycmF5RXF1YWwiLCJldmVyeSIsImRlc2NyaXB0aW9uIiwiUmVhZGFibGUiLCJUZXh0RGVjb2RlciIsInV0ZkxhYmVsIiwiY29kZVBvaW50QXQiLCJpbnB1dEVuY29kaW5nIiwid2F0Y2hQaXBlIiwicmVhZEVycm9yIiwiX3JlYWRhYmxlU3RhdGUiLCJvYmplY3RNb2RlIiwicmVkdWNlIiwiX2J1ZkFycmF5IiwicHJvbWlzZSIsInN0eWxpemUiLCJ3cml0ZUJpZ0ludCIsInJlYWRVQmlnSW50IiwicmVhZEJpZ0ludCIsIl9fcmVzdGFydCIsIl9fbmVlZGVkIiwiX19wYXJzZXIiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiRXZlbnRFbWl0dGVyIiwiX2V2ZW50cyIsIl9ldmVudHNDb3VudCIsIl9tYXhMaXN0ZW5lcnMiLCJkZWZhdWx0TWF4TGlzdGVuZXJzIiwibmV3TGlzdGVuZXIiLCJsaXN0ZW5lciIsImVtaXR0ZXIiLCJmaXJlZCIsIndyYXBGbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2V0TWF4TGlzdGVuZXJzIiwiZ2V0TWF4TGlzdGVuZXJzIiwiY29udGV4dCIsImFkZExpc3RlbmVyIiwicHJlcGVuZExpc3RlbmVyIiwicHJlcGVuZE9uY2VMaXN0ZW5lciIsInJlbW92ZUFsbExpc3RlbmVycyIsImxpc3RlbmVycyIsInJhd0xpc3RlbmVycyIsImxpc3RlbmVyQ291bnQiLCJldmVudE5hbWVzIiwiTE4yIiwiaW50ZXJuYWxCaW5kaW5nIiwiQXJyYXlJc0FycmF5IiwiQXJyYXlQcm90b3R5cGVGaWx0ZXIiLCJBcnJheVByb3RvdHlwZUZvckVhY2giLCJBcnJheVByb3RvdHlwZVB1c2giLCJBcnJheVByb3RvdHlwZVB1c2hBcHBseSIsIkFycmF5UHJvdG90eXBlU29ydCIsIkFycmF5UHJvdG90eXBlVW5zaGlmdCIsIkJpZ0ludFByb3RvdHlwZVZhbHVlT2YiLCJCb29sZWFuUHJvdG90eXBlVmFsdWVPZiIsIkRhdGVQcm90b3R5cGVHZXRUaW1lIiwiRGF0ZVByb3RvdHlwZVRvSVNPU3RyaW5nIiwiRGF0ZVByb3RvdHlwZVRvU3RyaW5nIiwiRXJyb3JQcm90b3R5cGVUb1N0cmluZyIsIkZ1bmN0aW9uUHJvdG90eXBlQ2FsbCIsIkZ1bmN0aW9uUHJvdG90eXBlVG9TdHJpbmciLCJKU09OU3RyaW5naWZ5IiwiTWFwUHJvdG90eXBlR2V0U2l6ZSIsIk1hcFByb3RvdHlwZUVudHJpZXMiLCJNYXRoRmxvb3IiLCJNYXRoTWF4IiwiTWF0aE1pbiIsIk1hdGhSb3VuZCIsIk1hdGhTcXJ0IiwiTnVtYmVySXNOYU4iLCJOdW1iZXJQYXJzZUZsb2F0IiwiTnVtYmVyUGFyc2VJbnQiLCJOdW1iZXJQcm90b3R5cGVWYWx1ZU9mIiwiT2JqZWN0QXNzaWduIiwiT2JqZWN0Q3JlYXRlIiwiT2JqZWN0RGVmaW5lUHJvcGVydHkiLCJPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzIiwiT2JqZWN0R2V0T3duUHJvcGVydHlTeW1ib2xzIiwiT2JqZWN0R2V0UHJvdG90eXBlT2YiLCJPYmplY3RJcyIsIk9iamVjdEtleXMiLCJPYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eSIsIk9iamVjdFByb3RvdHlwZVByb3BlcnR5SXNFbnVtZXJhYmxlIiwiT2JqZWN0U2VhbCIsIk9iamVjdFNldFByb3RvdHlwZU9mIiwiUmVmbGVjdE93bktleXMiLCJSZWdFeHBQcm90b3R5cGVUZXN0IiwiUmVnRXhwUHJvdG90eXBlVG9TdHJpbmciLCJTYWZlU3RyaW5nSXRlcmF0b3IiLCJTYWZlTWFwIiwiU2FmZVNldCIsIlNldFByb3RvdHlwZUdldFNpemUiLCJldCIsIlNldFByb3RvdHlwZVZhbHVlcyIsInJ0IiwibnQiLCJTdHJpbmdQcm90b3R5cGVDaGFyQ29kZUF0IiwiaXQiLCJTdHJpbmdQcm90b3R5cGVDb2RlUG9pbnRBdCIsIm90IiwiU3RyaW5nUHJvdG90eXBlSW5jbHVkZXMiLCJzdCIsIlN0cmluZ1Byb3RvdHlwZU5vcm1hbGl6ZSIsImF0IiwiU3RyaW5nUHJvdG90eXBlUGFkRW5kIiwidXQiLCJTdHJpbmdQcm90b3R5cGVQYWRTdGFydCIsIlN0cmluZ1Byb3RvdHlwZVJlcGVhdCIsImN0IiwiU3RyaW5nUHJvdG90eXBlUmVwbGFjZSIsImZ0IiwiU3RyaW5nUHJvdG90eXBlU2xpY2UiLCJodCIsIlN0cmluZ1Byb3RvdHlwZVNwbGl0IiwicHQiLCJTdHJpbmdQcm90b3R5cGVUb0xvd2VyQ2FzZSIsImR0IiwiU3RyaW5nUHJvdG90eXBlVHJpbSIsInl0IiwiU3RyaW5nUHJvdG90eXBlVmFsdWVPZiIsIlN5bWJvbFByb3RvdHlwZVRvU3RyaW5nIiwiYnQiLCJTeW1ib2xQcm90b3R5cGVWYWx1ZU9mIiwibXQiLCJTeW1ib2xJdGVyYXRvciIsInd0IiwiU3ltYm9sVG9TdHJpbmdUYWciLCJfdCIsIlR5cGVkQXJyYXlQcm90b3R5cGVHZXRMZW5ndGgiLCJFdCIsIlR5cGVkQXJyYXlQcm90b3R5cGVHZXRTeW1ib2xUb1N0cmluZ1RhZyIsInZ0IiwiU3QiLCJBdCIsIlR0IiwiZ2V0UHJvbWlzZURldGFpbHMiLCJJdCIsImdldFByb3h5RGV0YWlscyIsIkJ0Iiwia1BlbmRpbmciLCJPdCIsImtSZWplY3RlZCIsInh0IiwicHJldmlld0VudHJpZXMiLCJSdCIsImdldENvbnN0cnVjdG9yTmFtZSIsIk50IiwiZ2V0RXh0ZXJuYWxWYWx1ZSIsIkx0IiwicHJvcGVydHlGaWx0ZXIiLCJBTExfUFJPUEVSVElFUyIsIlB0IiwiT05MWV9FTlVNRVJBQkxFIiwiTXQiLCJVdCIsImp0Iiwia3QiLCIkdCIsInJlbW92ZUNvbG9ycyIsIkZ0IiwiRHQiLCJpc1N0YWNrT3ZlcmZsb3dFcnJvciIsIkN0IiwiaXNBc3luY0Z1bmN0aW9uIiwiR3QiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiV3QiLCJ6dCIsImlzQXJyYXlCdWZmZXIiLCJIdCIsImlzQXJndW1lbnRzT2JqZWN0IiwiWXQiLCJxdCIsImlzRGF0YVZpZXciLCJWdCIsImlzRXh0ZXJuYWwiLCJLdCIsIlh0IiwiaXNNYXBJdGVyYXRvciIsIkp0IiwiaXNNb2R1bGVOYW1lc3BhY2VPYmplY3QiLCJadCIsIlF0IiwidGUiLCJlZSIsImlzU2V0SXRlcmF0b3IiLCJpc1dlYWtNYXAiLCJpc1dlYWtTZXQiLCJvZSIsInNlIiwiaXNUeXBlZEFycmF5IiwiYWUiLCJ1ZSIsImxlIiwiY2UiLCJmZSIsImhlIiwiTmF0aXZlTW9kdWxlIiwicGUiLCJ2YWxpZGF0ZU9iamVjdCIsImRlIiwiZ2UiLCJiZSIsIm1lIiwiY29sb3JzIiwibWF4U3RyaW5nTGVuZ3RoIiwid2UiLCJFZSIsInZlIiwiU2UiLCJBZSIsIlRlIiwiSWUiLCJCZSIsIk9lIiwiUmUiLCJOZSIsIkxlIiwiUGUiLCJidWRnZXQiLCJpbmRlbnRhdGlvbkx2bCIsInNlZW4iLCJjdXJyZW50RGVwdGgiLCJDZSIsInVzZXJPcHRpb25zIiwiRGUiLCJLZSIsIk1lIiwiVWUiLCJqZSIsImtlIiwiYm9sZCIsImRpbSIsIml0YWxpYyIsInVuZGVybGluZSIsImJsaW5rIiwiaW52ZXJzZSIsImhpZGRlbiIsInN0cmlrZXRocm91Z2giLCJkb3VibGV1bmRlcmxpbmUiLCJibGFjayIsInllbGxvdyIsIm1hZ2VudGEiLCJjeWFuIiwiYmdCbGFjayIsImJnUmVkIiwiYmdHcmVlbiIsImJnWWVsbG93IiwiYmdCbHVlIiwiYmdNYWdlbnRhIiwiYmdDeWFuIiwiYmdXaGl0ZSIsImZyYW1lZCIsIm92ZXJsaW5lZCIsImdyYXkiLCJyZWRCcmlnaHQiLCJncmVlbkJyaWdodCIsInllbGxvd0JyaWdodCIsImJsdWVCcmlnaHQiLCJtYWdlbnRhQnJpZ2h0IiwiY3lhbkJyaWdodCIsIndoaXRlQnJpZ2h0IiwiYmdHcmF5IiwiYmdSZWRCcmlnaHQiLCJiZ0dyZWVuQnJpZ2h0IiwiYmdZZWxsb3dCcmlnaHQiLCJiZ0JsdWVCcmlnaHQiLCJiZ01hZ2VudGFCcmlnaHQiLCJiZ0N5YW5CcmlnaHQiLCJiZ1doaXRlQnJpZ2h0Iiwic3R5bGVzIiwic3BlY2lhbCIsImJvb2xlYW4iLCJudWxsIiwic3ltYm9sIiwicmVnZXhwIiwiJGUiLCJGZSIsIkdlIiwiV2UiLCJ6ZSIsIkhlIiwiZHIiLCJZZSIsInFlIiwiVmUiLCJRZSIsImdyIiwiY2lyY3VsYXIiLCJuciIsInNyIiwiaXIiLCJYZSIsImhyIiwiZXhpc3RzIiwiZXhlYyIsInJyIiwiSmUiLCJwciIsImNyIiwibHIiLCJmciIsInRyIiwiWmUiLCJhciIsInVyIiwieXIiLCJiciIsIm1yIiwid3IiLCJfciIsIkVyIiwiaGFzSW50bCIsInZyIiwiZ2V0U3RyaW5nV2lkdGgiLCJub3JtYWxpemUiLCJmb3JtYXRXaXRoT3B0aW9ucyIsImluc3BlY3REZWZhdWx0T3B0aW9ucyIsInN0cmlwVlRDb250cm9sQ2hhcmFjdGVycyIsInN0eWxpemVXaXRoQ29sb3IiLCJzdHlsaXplV2l0aEhUTUwiLCJBcnJheVByb3RvdHlwZUluY2x1ZGVzIiwiQXJyYXlQcm90b3R5cGVJbmRleE9mIiwiQXJyYXlQcm90b3R5cGVKb2luIiwiQXJyYXlQcm90b3R5cGVQb3AiLCJBcnJheVByb3RvdHlwZVNwbGljZSIsIkVycm9yQ2FwdHVyZVN0YWNrVHJhY2UiLCJSZWZsZWN0QXBwbHkiLCJTdHJpbmdQcm90b3R5cGVFbmRzV2l0aCIsImhpZGVTdGFja0ZyYW1lcyIsImdsb2JhbFRoaXMiLCJfX21hZ2ljX18iLCJpc0Zyb3plbiIsInRvU3RyaW5nVGFnIiwibnVsbGFibGUiLCJfaXRlcmF0b3IiLCJfX2xvb2t1cEdldHRlcl9fIiwibWFrZVNhZmUiLCJwYXJzZUZsb2F0Iiwic2VhbCIsInBhZEVuZCIsInBhZFN0YXJ0IiwiU3ltYm9sRm9yIiwiV2Vha01hcCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwicnVuIiwiZnVuIiwidGl0bGUiLCJicm93c2VyIiwiZW52IiwiYXJndiIsInZlcnNpb24iLCJ2ZXJzaW9ucyIsImN3ZCIsImNoZGlyIiwidW1hc2siLCJhbGxvd0hhbGZPcGVuIiwicmVhZGFibGUiLCJnZXRCdWZmZXIiLCJkZXN0cm95ZWQiLCJSZWFkYWJsZVN0YXRlIiwiZGVidWdsb2ciLCJnZXRIaWdoV2F0ZXJNYXJrIiwiRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRiIsIkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEIiwiRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVCIsImVycm9yT3JEZXN0cm95IiwicGlwZXMiLCJwaXBlc0NvdW50IiwiZmxvd2luZyIsImVuZEVtaXR0ZWQiLCJyZWFkaW5nIiwic3luYyIsIm5lZWRSZWFkYWJsZSIsImVtaXR0ZWRSZWFkYWJsZSIsInJlYWRhYmxlTGlzdGVuaW5nIiwicmVzdW1lU2NoZWR1bGVkIiwicGF1c2VkIiwiZW1pdENsb3NlIiwiYXV0b0Rlc3Ryb3kiLCJhd2FpdERyYWluIiwicmVhZGluZ01vcmUiLCJfcmVhZCIsImRlc3Ryb3kiLCJfZGVzdHJveSIsIl91bmRlc3Ryb3kiLCJ1bmRlc3Ryb3kiLCJpc1BhdXNlZCIsInNldEVuY29kaW5nIiwiY2xlYXIiLCJyZXN1bWUiLCJjb25zdW1lIiwiZmluaXNoZWQiLCJzdGRvdXQiLCJoYXNVbnBpcGVkIiwicGF1c2UiLCJ1bnBpcGUiLCJhc3luY0l0ZXJhdG9yIiwiX2Zyb21MaXN0IiwiRVJSX01VTFRJUExFX0NBTExCQUNLIiwiRVJSX1RSQU5TRk9STV9BTFJFQURZX1RSQU5TRk9STUlORyIsIkVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMCIsIl90cmFuc2Zvcm1TdGF0ZSIsInRyYW5zZm9ybWluZyIsIndyaXRlY2IiLCJ3cml0ZWNodW5rIiwiYWZ0ZXJUcmFuc2Zvcm0iLCJuZWVkVHJhbnNmb3JtIiwid3JpdGVlbmNvZGluZyIsImVudHJ5IiwiZmluaXNoIiwicGVuZGluZ2NiIiwiY29ya2VkUmVxdWVzdHNGcmVlIiwiV3JpdGFibGVTdGF0ZSIsImRlcHJlY2F0ZSIsIkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUiLCJFUlJfU1RSRUFNX0RFU1RST1lFRCIsIkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMiLCJFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCIsIkVSUl9VTktOT1dOX0VOQ09ESU5HIiwiZmluYWxDYWxsZWQiLCJkZWNvZGVTdHJpbmdzIiwid3JpdGluZyIsImNvcmtlZCIsImJ1ZmZlclByb2Nlc3NpbmciLCJvbndyaXRlIiwid3JpdGVsZW4iLCJlcnJvckVtaXR0ZWQiLCJidWZmZXJlZFJlcXVlc3QiLCJsYXN0QnVmZmVyZWRSZXF1ZXN0IiwicHJlZmluaXNoZWQiLCJidWZmZXJlZFJlcXVlc3RDb3VudCIsIndyaXRldiIsIl93cml0ZXYiLCJpc0J1ZiIsImFsbEJ1ZmZlcnMiLCJoYXNJbnN0YW5jZSIsImNvcmsiLCJ1bmNvcmsiLCJzZXREZWZhdWx0RW5jb2RpbmciLCJyZWplY3QiLCJfZ2V0U3RyaW5nIiwiX2dldEJ1ZmZlciIsImRlZmluZVByb3BlcnRpZXMiLCJFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRSIsInNldEhlYWRlciIsImFib3J0IiwiRVJSX0lOVkFMSURfT1BUX1ZBTFVFIiwiRHVwbGV4IiwiUGFzc1Rocm91Z2giLCJwaXBlbGluZSIsIlN0cmVhbSIsIl9pc1N0ZGlvIiwiZmlsbExhc3QiLCJsYXN0TmVlZCIsImxhc3RUb3RhbCIsImxhc3RDaGFyIiwibG9jYWxTdG9yYWdlIiwidHJhY2UiLCJoYXNCaWdJbnQiLCJsZXZlbGRiIiwiU3RyaW5nRGVjb2RlciIsImhhc2hNb2RlIiwiX2ZpbmFsT3JEaWdlc3QiLCJfX2ZpbmFsIiwiX2RlY29kZXIiLCJfZW5jb2RpbmciLCJpbnB1dEVuYyIsIm91dHB1dEVuYyIsIm91dERhdGEiLCJfdG9TdHJpbmciLCJmaW4iLCJlbGxpcHRpYyIsIkVDREgiLCJhbGlhc2VzIiwic2VjcDI1NmsxIiwic2VjcDIyNHIxIiwicHJpbWUyNTZ2MSIsInByaW1lMTkydjEiLCJlZDI1NTE5Iiwic2VjcDM4NHIxIiwic2VjcDUyMXIxIiwiY3VydmVUeXBlIiwiZWMiLCJmb3JtYXRSZXR1cm5WYWx1ZSIsImJuIiwicDI1NiIsInNlY3AyNTZyMSIsInNlY3AxOTJyMSIsInAzODQiLCJwNTIxIiwiZ2VuZXJhdGVLZXlzIiwiZ2VuS2V5UGFpciIsImdldFB1YmxpY0tleSIsImNvbXB1dGVTZWNyZXQiLCJpbmVuYyIsImtleUZyb21QdWJsaWMiLCJnZXRQdWJsaWMiLCJnZXRQcml2YXRlIiwiZ2V0WCIsImdldFByaXZhdGVLZXkiLCJzZXRQdWJsaWNLZXkiLCJfaW1wb3J0UHVibGljIiwic2V0UHJpdmF0ZUtleSIsIl9wcml2IiwiX2ltcG9ydFByaXZhdGUiLCJNRDUiLCJSSVBFTUQxNjAiLCJzaGEiLCJIYXNoIiwiYWxnIiwiTGVnYWN5IiwibWQ1IiwiWkVST1MiLCJIbWFjIiwiYmxvY2tzaXplIiwiX2FsZyIsImlwYWQiLCJfaXBhZCIsIm9wYWQiLCJfb3BhZCIsInJuZyIsInBzZXVkb1JhbmRvbUJ5dGVzIiwicHJuZyIsImFsZ29zIiwiYWxnb0tleXMiLCJoYXNoZXMiLCJnZXRIYXNoZXMiLCJwYmtkZjIiLCJwYmtkZjJTeW5jIiwiZGgiLCJEaWZmaWVIZWxsbWFuR3JvdXAiLCJjcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXAiLCJnZXREaWZmaWVIZWxsbWFuIiwiY3JlYXRlRGlmZmllSGVsbG1hbiIsIkRpZmZpZUhlbGxtYW4iLCJjcmVhdGVFQ0RIIiwicHVibGljRW5jcnlwdCIsInByaXZhdGVFbmNyeXB0IiwicHVibGljRGVjcnlwdCIsInByaXZhdGVEZWNyeXB0IiwicmYiLCJyYW5kb21GaWxsIiwicmFuZG9tRmlsbFN5bmMiLCJjcmVhdGVDcmVkZW50aWFscyIsImhhc1N5bWJvbHMiLCJ0b1N0ciIsIm9yaWdEZWZpbmVQcm9wZXJ0eSIsInN1cHBvcnRzRGVzY3JpcHRvcnMiLCJhcmVQcm9wZXJ0eURlc2NyaXB0b3JzU3VwcG9ydGVkIiwib2JqZWN0IiwicHJlZGljYXRlIiwicHJlZGljYXRlcyIsIkNCQ1N0YXRlIiwiX2NiY0luaXQiLCJfY2JjU3RhdGUiLCJpbnAiLCJvdXRPZmYiLCJzdXBlclByb3RvIiwiYnVmZmVyT2ZmIiwiX3VwZGF0ZURlY3J5cHQiLCJfdXBkYXRlRW5jcnlwdCIsIl9mbHVzaEJ1ZmZlciIsImlucHV0T2ZmIiwib3V0cHV0T2ZmIiwiX2ZpbmFsRW5jcnlwdCIsIl9maW5hbERlY3J5cHQiLCJfcGFkIiwiX3VucGFkIiwiREVTU3RhdGUiLCJfZGVzU3RhdGUiLCJkZXJpdmVLZXlzIiwic2hpZnRUYWJsZSIsImtMIiwia1IiLCJwYzEiLCJyMjhzaGwiLCJwYzIiLCJpcCIsIl9lbmNyeXB0IiwibFN0YXJ0IiwiclN0YXJ0Iiwia2V5TCIsImtleVIiLCJleHBhbmQiLCJzdWJzdGl0dXRlIiwicmlwIiwiRURFU3RhdGUiLCJrMSIsImsyIiwiazMiLCJfZWRlU3RhdGUiLCJpbkwiLCJpblIiLCJvdXRMIiwib3V0UiIsInBjMnRhYmxlIiwic1RhYmxlIiwicGVybXV0ZVRhYmxlIiwicGFkU3BsaXQiLCJncm91cCIsImdlbmVyYXRlUHJpbWUiLCJESCIsIkVOQ09ESU5HUyIsImdlbiIsImdlbmVyYXRvciIsImdlbmMiLCJtaWxsZXJSYWJpbiIsIlRXRU5UWUZPVVIiLCJFTEVWRU4iLCJURU4iLCJUSFJFRSIsIlNFVkVOIiwiX3B1YiIsInByaW1lQ2FjaGUiLCJtYWxsZWFibGUiLCJzZXRHZW5lcmF0b3IiLCJfX3ByaW1lIiwiX3ByaW1lTGVuIiwiX3ByaW1lQ29kZSIsInNpbXBsZVNpZXZlIiwiZmVybWF0VGVzdCIsImNoZWNrUHJpbWUiLCJfX2dlbiIsIl9nZW4iLCJzZWNyZXQiLCJnZXRQcmltZSIsImZyb250IiwiZ2V0R2VuZXJhdG9yIiwiZmluZFByaW1lIiwiRklWRSIsIl9nZXRQcmltZXMiLCJuMiIsImVkZHNhIiwiZ2V0TkFGIiwiZ2V0SlNGIiwiQmFzZUN1cnZlIiwiY29uZiIsInBvaW50RnJvbUpTT04iLCJnUmVkIiwiX3duYWZUMSIsIl93bmFmVDIiLCJfd25hZlQzIiwiX3duYWZUNCIsIl9iaXRMZW5ndGgiLCJhZGp1c3RDb3VudCIsInJlZE4iLCJfbWF4d2VsbFRyaWNrIiwiQmFzZVBvaW50IiwicHJlY29tcHV0ZWQiLCJwb2ludCIsInZhbGlkYXRlIiwiX2ZpeGVkTmFmTXVsIiwiZG91YmxlcyIsIl9nZXREb3VibGVzIiwibmFmIiwic3RlcCIsIm5hZlciLCJyZXByIiwianBvaW50IiwibWl4ZWRBZGQiLCJwb2ludHMiLCJ0b1AiLCJfd25hZk11bCIsIm5hZlBvaW50cyIsIl9nZXROQUZQb2ludHMiLCJkYmxwIiwiX3duYWZNdWxBZGQiLCJkZWZXIiwiY29lZmZzIiwiamFjb2JpYW5SZXN1bHQiLCJ3bmRXaWR0aCIsImNvbWIiLCJ0b0oiLCJqc2YiLCJqYSIsImpiIiwiZGVjb2RlUG9pbnQiLCJwb2ludEZyb21YIiwiZW5jb2RlQ29tcHJlc3NlZCIsImdldFkiLCJwcmVjb21wdXRlIiwicG93ZXIiLCJiZXRhIiwiX2dldEJldGEiLCJfaGFzRG91YmxlcyIsImRibCIsIkVkd2FyZHNDdXJ2ZSIsInR3aXN0ZWQiLCJtT25lQSIsImRkIiwib25lQyIsIlBvaW50Iiwiek9uZSIsIl9tdWxBIiwiX211bEMiLCJyaHMiLCJsaHMiLCJ5MiIsInBvaW50RnJvbVkiLCJpc0luZmluaXR5IiwiZnJvbUpTT04iLCJfZXh0RGJsIiwibngiLCJueSIsIm56IiwiX3Byb2pEYmwiLCJfZXh0QWRkIiwiX3Byb2pBZGQiLCJtdWxBZGQiLCJqbXVsQWRkIiwiemkiLCJlcVhUb1AiLCJzaG9ydCIsImVkd2FyZHMiLCJNb250Q3VydmUiLCJpNCIsImEyNCIsImFhIiwiYmIiLCJkaWZmQWRkIiwiZGEiLCJqdW1sQWRkIiwiU2hvcnRDdXJ2ZSIsInRpbnYiLCJ6ZXJvQSIsInRocmVlQSIsImVuZG8iLCJfZ2V0RW5kb21vcnBoaXNtIiwiX2VuZG9XbmFmVDEiLCJfZW5kb1duYWZUMiIsImlzUmVkIiwiaW5mIiwiSlBvaW50IiwibGFtYmRhIiwiYmV0YXMiLCJfZ2V0RW5kb1Jvb3RzIiwibGFtYmRhcyIsImJhc2lzIiwidmVjIiwiX2dldEVuZG9CYXNpcyIsIm50aW52IiwicHJldlIiLCJhcHJ4U3FydCIsInkxIiwibGVuMSIsIl9lbmRvU3BsaXQiLCJ2MSIsInYyIiwicTEiLCJxMiIsImF4IiwiX2VuZG9XbmFmTXVsQWRkIiwibnBvaW50cyIsIm5jb2VmZnMiLCJwcmUiLCJlbmRvTXVsIiwicGFyc2UiLCJvYmoycG9pbnQiLCJ5czEiLCJkeWludiIsIl9wcmVjb21wdXRlIiwibmVnYXRlIiwiemludiIsInppbnYyIiwiYXkiLCJwejIiLCJ6MiIsInUxIiwidTIiLCJoMiIsImgzIiwiangiLCJqeSIsImp6Iiwiano0IiwianlkIiwiangyIiwianlkMiIsImp5ZDQiLCJkbnkiLCJfemVyb0RibCIsIl90aHJlZURibCIsIl9kYmwiLCJ4eCIsInl5IiwieXl5eSIsInl5eXk4IiwiYzgiLCJnYW1tYSIsImFscGhhIiwiYmV0YTQiLCJiZXRhOCIsImdnYW1tYTgiLCJqeTIiLCJqeGQ0IiwianlkOCIsInRycGwiLCJ6eiIsIm1tIiwieXl1NCIsImtiYXNlIiwiejMiLCJwejMiLCJQcmVzZXRDdXJ2ZSIsImRlZmluZUN1cnZlIiwic2hhMjU2Iiwic2hhMzg0Iiwic2hhNTEyIiwiSG1hY0RSQkciLCJLZXlQYWlyIiwiU2lnbmF0dXJlIiwibmgiLCJrZXlQYWlyIiwiZnJvbVByaXZhdGUiLCJmcm9tUHVibGljIiwiZHJiZyIsInBlcnMiLCJwZXJzRW5jIiwiZW50cm9weSIsImhtYWNTdHJlbmd0aCIsImVudHJvcHlFbmMiLCJub25jZSIsIm5zMiIsIl90cnVuY2F0ZVRvTiIsInRydW5jT25seSIsIm5zMSIsIml0ZXIiLCJrcCIsImtwWCIsInJlY292ZXJ5UGFyYW0iLCJzaW52IiwicmVjb3ZlclB1YktleSIsImlzWU9kZCIsImlzU2Vjb25kS2V5IiwickludiIsImdldEtleVJlY292ZXJ5UGFyYW0iLCJRcHJpbWUiLCJwcml2RW5jIiwicHViRW5jIiwiZGVyaXZlIiwiX2ltcG9ydERFUiIsIlBvc2l0aW9uIiwicGxhY2UiLCJnZXRMZW5ndGgiLCJpbml0aWFsIiwib2N0ZXRMZW4iLCJybVBhZGRpbmciLCJjb25zdHJ1Y3RMZW5ndGgiLCJvY3RldHMiLCJzbGVuIiwiYmFja0hhbGYiLCJwYXJzZUJ5dGVzIiwiRUREU0EiLCJwb2ludENsYXNzIiwiZW5jb2RpbmdMZW5ndGgiLCJrZXlGcm9tU2VjcmV0IiwiaGFzaEludCIsIm1lc3NhZ2VQcmVmaXgiLCJSZW5jb2RlZCIsImVuY29kZVBvaW50Iiwic18iLCJwdWJCeXRlcyIsIm1ha2VTaWduYXR1cmUiLCJTRyIsImludEZyb21MRSIsImZyb21TZWNyZXQiLCJsYXN0SXgiLCJub3JtZWQiLCJ4SXNPZGQiLCJlbmNvZGVJbnQiLCJkZWNvZGVJbnQiLCJpc1BvaW50IiwiY2FjaGVkUHJvcGVydHkiLCJfc2VjcmV0IiwiX3B1YkJ5dGVzIiwicHJpdkJ5dGVzIiwiZ2V0U2VjcmV0IiwiX1IiLCJfUyIsIl9SZW5jb2RlZCIsIl9TZW5jb2RlZCIsIlNlbmNvZGVkIiwidG9CeXRlcyIsInRvSGV4IiwibWluQXNzZXJ0IiwibWluVXRpbHMiLCJ6ZXJvMiIsIm04IiwibTE0IiwibTI0IiwiY29tcHV0ZXIiLCJmaXJzdFNvdXJjZSIsInRvIiwibmV4dFNvdXJjZSIsImtleXNBcnJheSIsIm5leHRJbmRleCIsIm5leHRLZXkiLCJwb2x5ZmlsbCIsInJlY2VpdmVyIiwiZXJyb3JMaXN0ZW5lciIsInJlc29sdmVyIiwiZXZlbnRUYXJnZXRBZ25vc3RpY0FkZExpc3RlbmVyIiwiaGFuZGxlciIsImFkZEVycm9ySGFuZGxlcklmRXZlbnRFbWl0dGVyIiwiY2hlY2tMaXN0ZW5lciIsIl9nZXRNYXhMaXN0ZW5lcnMiLCJ0aGF0IiwiX2FkZExpc3RlbmVyIiwicHJlcGVuZCIsImV2ZW50cyIsImV4aXN0aW5nIiwid2FybmluZyIsIm9uY2VXcmFwcGVyIiwiX29uY2VXcmFwIiwid3JhcHBlZCIsIl9saXN0ZW5lcnMiLCJ1bndyYXAiLCJldmxpc3RlbmVyIiwidW53cmFwTGlzdGVuZXJzIiwiYXJyYXlDbG9uZSIsIndyYXBMaXN0ZW5lciIsImRvRXJyb3IiLCJvcmlnaW5hbExpc3RlbmVyIiwic3BsaWNlT25lIiwic2FsdCIsImtleUJpdHMiLCJrZXlTdGFydCIsIml2U3RhcnQiLCJoYXNPd24iLCJFUlJPUl9NRVNTQUdFIiwiZnVuY1R5cGUiLCJib3VuZCIsImJpbmRlciIsImJvdW5kTGVuZ3RoIiwiYm91bmRBcmdzIiwiRW1wdHkiLCJpbXBsZW1lbnRhdGlvbiIsIiRTeW50YXhFcnJvciIsIlN5bnRheEVycm9yIiwiJEZ1bmN0aW9uIiwiJFR5cGVFcnJvciIsImdldEV2YWxsZWRDb25zdHJ1Y3RvciIsImV4cHJlc3Npb25TeW50YXgiLCJ0aHJvd1R5cGVFcnJvciIsIlRocm93VHlwZUVycm9yIiwiY2FsbGVlVGhyb3dzIiwiZ09QRHRocm93cyIsImdldFByb3RvIiwibmVlZHNFdmFsIiwiVHlwZWRBcnJheSIsIklOVFJJTlNJQ1MiLCJBZ2dyZWdhdGVFcnJvciIsIkF0b21pY3MiLCJkZWNvZGVVUkkiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlbmNvZGVVUkkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJldmFsIiwiRXZhbEVycm9yIiwiRmluYWxpemF0aW9uUmVnaXN0cnkiLCJVUklFcnJvciIsIldlYWtSZWYiLCJkb0V2YWwiLCJMRUdBQ1lfQUxJQVNFUyIsIiRjb25jYXQiLCIkc3BsaWNlQXBwbHkiLCIkcmVwbGFjZSIsIiRzdHJTbGljZSIsInJlUHJvcE5hbWUiLCJyZUVzY2FwZUNoYXIiLCJzdHJpbmdUb1BhdGgiLCJxdW90ZSIsInN1YlN0cmluZyIsImdldEJhc2VJbnRyaW5zaWMiLCJhbGlhcyIsImludHJpbnNpY05hbWUiLCJpbnRyaW5zaWNCYXNlTmFtZSIsImludHJpbnNpY1JlYWxOYW1lIiwic2tpcEZ1cnRoZXJDYWNoaW5nIiwiaXNPd24iLCJwYXJ0Iiwib3JpZ1N5bWJvbCIsImhhc1N5bWJvbFNoYW0iLCJzeW1PYmoiLCJzeW1zIiwiSGFzaEJhc2UiLCJfYmxvY2siLCJfYmxvY2tTaXplIiwiX2Jsb2NrT2Zmc2V0IiwiX2xlbmd0aCIsIl9maW5hbGl6ZWQiLCJ0aHJvd0lmTm90U3RyaW5nT3JCdWZmZXIiLCJfZGlnZXN0IiwiY29tbW9uIiwicmlwZW1kIiwiaG1hYyIsInNoYTEiLCJzaGEyMjQiLCJyaXBlbWQxNjAiLCJCbG9ja0hhc2giLCJwZW5kaW5nVG90YWwiLCJvdXRTaXplIiwicGFkTGVuZ3RoIiwiX2RlbHRhOCIsIl9kZWx0YTMyIiwiam9pbjMyIiwiaW5uZXIiLCJvdXRlciIsInJvdGwzMiIsInN1bTMyIiwic3VtMzJfMyIsInN1bTMyXzQiLCJLaCIsIkFoIiwiQmgiLCJDaCIsIkRoIiwiRWgiLCJyaCIsInNoIiwidG9IZXgzMiIsInNwbGl0MzIiLCJzaGFDb21tb24iLCJzdW0zMl81IiwiZnRfMSIsInNoYTFfSyIsIlNIQTEiLCJTSEEyNTYiLCJTSEEyMjQiLCJjaDMyIiwibWFqMzIiLCJzMF8yNTYiLCJzMV8yNTYiLCJnMF8yNTYiLCJnMV8yNTYiLCJzaGEyNTZfSyIsIlQxIiwiVDIiLCJTSEE1MTIiLCJTSEEzODQiLCJyb3RyNjRfaGkiLCJyb3RyNjRfbG8iLCJzaHI2NF9oaSIsInNocjY0X2xvIiwic3VtNjQiLCJzdW02NF9oaSIsInN1bTY0X2xvIiwic3VtNjRfNF9oaSIsInN1bTY0XzRfbG8iLCJzdW02NF81X2hpIiwic3VtNjRfNV9sbyIsInNoYTUxMl9LIiwiY2g2NF9oaSIsInhoIiwieGwiLCJ5aCIsInlsIiwiemgiLCJjaDY0X2xvIiwiemwiLCJtYWo2NF9oaSIsIm1hajY0X2xvIiwiczBfNTEyX2hpIiwiczBfNTEyX2xvIiwiczFfNTEyX2xvIiwiZzBfNTEyX2hpIiwiZzBfNTEyX2xvIiwiZzFfNTEyX2xvIiwiX3ByZXBhcmVCbG9jayIsImMwX2hpIiwiYzBfbG8iLCJjMV9oaSIsImMxX2xvIiwiYzJfaGkiLCJjMl9sbyIsImMzX2hpIiwiYzNfbG8iLCJhaCIsImFsIiwiYmgiLCJjaCIsImNsIiwiZGwiLCJlaCIsImVsIiwiZmgiLCJmbCIsImdoIiwiZ2wiLCJoaCIsImhsIiwiYzRfaGkiLCJjNF9sbyIsIlQxX2hpIiwiVDFfbG8iLCJUMl9oaSIsIlQyX2xvIiwicm90cjMyIiwicDMyIiwiaXNTdXJyb2dhdGVQYWlyIiwiaHRvbmwiLCJ6ZXJvOCIsInByZWRSZXNpc3QiLCJtaW5FbnRyb3B5IiwiX3Jlc2VlZCIsInJlc2VlZEludGVydmFsIiwibm9uY2VFbmMiLCJzZWVkIiwiX2htYWMiLCJrbWFjIiwicmVzZWVkIiwiYWRkRW5jIiwiaXNMRSIsIm1MZW4iLCJuQnl0ZXMiLCJlTGVuIiwiZU1heCIsImVCaWFzIiwibkJpdHMiLCJoYXNUb1N0cmluZ1RhZyIsIiR0b1N0cmluZyIsImNhbGxCb3VuZCIsImlzU3RhbmRhcmRBcmd1bWVudHMiLCJpc0xlZ2FjeUFyZ3VtZW50cyIsImNhbGxlZSIsInN1cHBvcnRzU3RhbmRhcmRBcmd1bWVudHMiLCJHZW5lcmF0b3JGdW5jdGlvbiIsImZuVG9TdHIiLCJpc0ZuUmVnZXgiLCJnZW5lcmF0b3JGdW5jIiwiZ2V0R2VuZXJhdG9yRnVuYyIsImdldFBvbHlmaWxsIiwic2hpbSIsImF2YWlsYWJsZVR5cGVkQXJyYXlzIiwidHlwZWRBcnJheXMiLCIkc2xpY2UiLCJ0b1N0clRhZ3MiLCJnT1BEIiwidHlwZWRBcnJheSIsImFueVRydWUiLCJnZXR0ZXIiLCJ0cnlUeXBlZEFycmF5cyIsIkFSUkFZMTYiLCJfYSIsIl9iIiwiX2MiLCJyb3RsIiwiZm5GIiwiZm5HIiwiZm5IIiwiZm5JIiwiYnJvcmFuZCIsIk1pbGxlclJhYmluIiwiX3JhbmRiZWxvdyIsIm1pbl9ieXRlcyIsIl9yYW5kcmFuZ2UiLCJzdG9wIiwicm9uZSIsInJuMSIsImdldERpdmlzb3IiLCJrZXlzU2hpbSIsImlzQXJncyIsImlzRW51bWVyYWJsZSIsImhhc0RvbnRFbnVtQnVnIiwiaGFzUHJvdG9FbnVtQnVnIiwiZG9udEVudW1zIiwiZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGUiLCJleGNsdWRlZEtleXMiLCIkYXBwbGljYXRpb25DYWNoZSIsIiRjb25zb2xlIiwiJGV4dGVybmFsIiwiJGZyYW1lIiwiJGZyYW1lRWxlbWVudCIsIiRmcmFtZXMiLCIkaW5uZXJIZWlnaHQiLCIkaW5uZXJXaWR0aCIsIiRvbm1vemZ1bGxzY3JlZW5jaGFuZ2UiLCIkb25tb3pmdWxsc2NyZWVuZXJyb3IiLCIkb3V0ZXJIZWlnaHQiLCIkb3V0ZXJXaWR0aCIsIiRwYWdlWE9mZnNldCIsIiRwYWdlWU9mZnNldCIsIiRwYXJlbnQiLCIkc2Nyb2xsTGVmdCIsIiRzY3JvbGxUb3AiLCIkc2Nyb2xsWCIsIiRzY3JvbGxZIiwiJHNlbGYiLCIkd2Via2l0SW5kZXhlZERCIiwiJHdlYmtpdFN0b3JhZ2VJbmZvIiwiJHdpbmRvdyIsImhhc0F1dG9tYXRpb25FcXVhbGl0eUJ1ZyIsImlzT2JqZWN0IiwiaXNGdW5jdGlvbiIsImlzQXJndW1lbnRzIiwiaXNTdHJpbmciLCJ0aGVLZXlzIiwic2tpcFByb3RvIiwic2tpcENvbnN0cnVjdG9yIiwiZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGVJZk5vdEJ1Z2d5Iiwib3JpZ0tleXMiLCJvcmlnaW5hbEtleXMiLCJjZXJ0aWZpY2F0ZSIsIlJTQVByaXZhdGVLZXkiLCJzZXEiLCJpbnQiLCJSU0FQdWJsaWNLZXkiLCJQdWJsaWNLZXkiLCJBbGdvcml0aG1JZGVudGlmaWVyIiwiYml0c3RyIiwibnVsbF8iLCJQcml2YXRlS2V5SW5mbyIsIm9jdHN0ciIsIlByaXZhdGVLZXkiLCJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyIsIkVuY3J5cHRlZFByaXZhdGVLZXkiLCJEU0FQcml2YXRlS2V5IiwiRFNBcGFyYW0iLCJFQ1ByaXZhdGVLZXkiLCJFQ1BhcmFtZXRlcnMiLCJuYW1lZEN1cnZlIiwiYXNuIiwiVGltZSIsInV0Y1RpbWUiLCJ1dGN0aW1lIiwiZ2VuZXJhbFRpbWUiLCJnZW50aW1lIiwiQXR0cmlidXRlVHlwZVZhbHVlIiwiU3ViamVjdFB1YmxpY0tleUluZm8iLCJSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lIiwic2V0b2YiLCJSRE5TZXF1ZW5jZSIsInNlcW9mIiwiTmFtZSIsInJkblNlcXVlbmNlIiwiVmFsaWRpdHkiLCJFeHRlbnNpb24iLCJib29sIiwiVEJTQ2VydGlmaWNhdGUiLCJYNTA5Q2VydGlmaWNhdGUiLCJmaW5kUHJvYyIsInN0YXJ0UmVnZXgiLCJmdWxsUmVnZXgiLCJldnAiLCJva2V5IiwiZGVjcnlwdGVkIiwiY2lwaGVyVGV4dCIsImNpcGhlcktleSIsImNpcGhlciIsIm1hdGNoMiIsImFlc2lkIiwiZml4UHJvYyIsImNvbXBhdCIsInBhc3NwaHJhc2UiLCJzdWJ0eXBlIiwibmRhdGEiLCJzdHJpcHBlZCIsInRic0NlcnRpZmljYXRlIiwic3ViamVjdFB1YmxpY0tleUluZm8iLCJzdWJqZWN0UHVibGljS2V5Iiwia2RlIiwia2RlcGFyYW1zIiwiaXRlcnMiLCJrZXlsZW4iLCJwYXJhbWV0ZXJzIiwiWkVST19CVUYiLCJjaGVja1BhcmFtZXRlcnMiLCJzdWJ0bGUiLCJ0b0Jyb3dzZXIiLCJjaGVja3MiLCJnZXROZXh0VGljayIsInF1ZXVlTWljcm90YXNrIiwic2V0SW1tZWRpYXRlIiwiYnJvd3NlclBia2RmMiIsIml0ZXJhdGlvbnMiLCJpbXBvcnRLZXkiLCJkZXJpdmVCaXRzIiwicmVzb2x2ZVByb21pc2UiLCJwcm9tIiwiY2hlY2tOYXRpdmUiLCJyZXNwIiwiTUFYX0FMTE9DIiwic2l6ZXMiLCJybWQxNjAiLCJzYWx0TGVuIiwiZ2V0RGlnZXN0IiwiaXBhZDEiLCJpcGFkMiIsIkRLIiwiYmxvY2sxIiwiZGVzdFBvcyIsImhMZW4iLCJjYWNoZWRTZXRUaW1lb3V0IiwiY2FjaGVkQ2xlYXJUaW1lb3V0IiwiZGVmYXVsdFNldFRpbW91dCIsImRlZmF1bHRDbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiY3VycmVudFF1ZXVlIiwicXVldWUiLCJkcmFpbmluZyIsInF1ZXVlSW5kZXgiLCJjbGVhblVwTmV4dFRpY2siLCJkcmFpblF1ZXVlIiwidGltZW91dCIsIm1hcmtlciIsInJ1bkNsZWFyVGltZW91dCIsIkl0ZW0iLCJub29wIiwiaTJvcHMiLCJtZ2YiLCJ3aXRoUHVibGljIiwiekJ1ZmZlciIsImlIYXNoIiwibWFza2VkU2VlZCIsIm1hc2tlZERiIiwiZGIiLCJkaWYiLCJvYWVwIiwicHMiLCJwa2NzMSIsInB1YmxpY0tleSIsInBhZGRlZE1zZyIsImhMZW4yIiwiZGJsZW4iLCJub25aZXJvIiwiTUFYX0JZVEVTIiwiZ2VuZXJhdGVkIiwib2xkQnJvd3NlciIsInNhZmVCdWZmZXIiLCJyYW5kb21ieXRlcyIsImtCdWZmZXJNYXhMZW5ndGgiLCJrTWF4VWludDMyIiwiYXNzZXJ0T2Zmc2V0IiwiYWN0dWFsRmlsbCIsIm91ckJ1ZiIsInVpbnQiLCJvYmplY3RLZXlzIiwib25lbmQiLCJvbkVuZE5UIiwiZGVidWciLCJFRWxpc3RlbmVyQ291bnQiLCJPdXJVaW50OEFycmF5IiwiZGVidWdVdGlsIiwiY3JlYXRlUmVhZGFibGVTdHJlYW1Bc3luY0l0ZXJhdG9yIiwiQnVmZmVyTGlzdCIsImRlc3Ryb3lJbXBsIiwia1Byb3h5RXZlbnRzIiwiaXNEdXBsZXgiLCJyZWFkYWJsZUFkZENodW5rIiwiYWRkVG9Gcm9udCIsInNraXBDaHVua0NoZWNrIiwiZW1pdFJlYWRhYmxlIiwiZW1pdFJlYWRhYmxlXyIsIm9uRW9mQ2h1bmsiLCJjaHVua0ludmFsaWQiLCJfdWludDhBcnJheVRvQnVmZmVyIiwiYWRkQ2h1bmsiLCJtYXliZVJlYWRNb3JlIiwiTUFYX0hXTSIsImhvd011Y2hUb1JlYWQiLCJjb21wdXRlTmV3SGlnaFdhdGVyTWFyayIsIm1heWJlUmVhZE1vcmVfIiwidXBkYXRlUmVhZGFibGVMaXN0ZW5pbmciLCJuUmVhZGluZ05leHRUaWNrIiwicmVzdW1lXyIsImZyb21MaXN0IiwiZW5kUmVhZGFibGUiLCJlbmRSZWFkYWJsZU5UIiwid1N0YXRlIiwieHMiLCJuT3JpZyIsImRvUmVhZCIsInBpcGVPcHRzIiwiZW5kRm4iLCJvbnVucGlwZSIsInVucGlwZUluZm8iLCJvbmNsb3NlIiwib25maW5pc2giLCJvbmRyYWluIiwib25kYXRhIiwiY2xlYW5lZFVwIiwicGlwZU9uRHJhaW4iLCJldmVudCIsImRlc3RzIiwiZXYiLCJpdGVyYWJsZSIsInRzIiwicnMiLCJwcmVmaW5pc2giLCJlcnIyIiwiQ29ya2VkUmVxdWVzdCIsImNvcmtSZXEiLCJvbkNvcmtlZEZpbmlzaCIsInJlYWxIYXNJbnN0YW5jZSIsImludGVybmFsVXRpbCIsIm5vcCIsIm5vRGVjb2RlIiwib253cml0ZVN0YXRlVXBkYXRlIiwiZmluaXNoTWF5YmUiLCJvbndyaXRlRXJyb3IiLCJuZWVkRmluaXNoIiwiY2xlYXJCdWZmZXIiLCJhZnRlcldyaXRlIiwiZG9Xcml0ZSIsIm9ud3JpdGVEcmFpbiIsImhvbGRlciIsImNhbGxGaW5hbCIsIm5lZWQiLCJyU3RhdGUiLCJ3cml0ZUFmdGVyRW5kIiwidmFsaWRDaHVuayIsIm5ld0NodW5rIiwiZGVjb2RlQ2h1bmsiLCJ3cml0ZU9yQnVmZmVyIiwiZW5kV3JpdGFibGUiLCJfT2JqZWN0JHNldFByb3RvdHlwZU8iLCJrTGFzdFJlc29sdmUiLCJrTGFzdFJlamVjdCIsImtFcnJvciIsImtFbmRlZCIsImtMYXN0UHJvbWlzZSIsImtIYW5kbGVQcm9taXNlIiwia1N0cmVhbSIsImNyZWF0ZUl0ZXJSZXN1bHQiLCJyZWFkQW5kUmVzb2x2ZSIsIm9uUmVhZGFibGUiLCJBc3luY0l0ZXJhdG9yUHJvdG90eXBlIiwiUmVhZGFibGVTdHJlYW1Bc3luY0l0ZXJhdG9yUHJvdG90eXBlIiwibGFzdFByb21pc2UiLCJ3cmFwRm9yTmV4dCIsIl9PYmplY3QkY3JlYXRlIiwiZW51bWVyYWJsZU9ubHkiLCJzeW1ib2xzIiwiaGFzU3RyaW5ncyIsIm5iIiwiZW1pdEVycm9yQW5kQ2xvc2VOVCIsImVtaXRFcnJvck5UIiwicmVhZGFibGVEZXN0cm95ZWQiLCJ3cml0YWJsZURlc3Ryb3llZCIsImVvcyIsImNhbGxlZCIsIm9ubGVnYWN5ZmluaXNoIiwid3JpdGFibGVFbmRlZCIsInJlYWRhYmxlRW5kZWQiLCJvbnJlcXVlc3QiLCJpc1JlcXVlc3QiLCJkZXN0cm95ZXIiLCJjbG9zZWQiLCJwb3BDYWxsYmFjayIsInN0cmVhbXMiLCJkZXN0cm95cyIsImR1cGxleEtleSIsImh3bSIsImhpZ2hXYXRlck1hcmtGcm9tIiwienIiLCJzbCIsImZuMSIsImZuMiIsImZuMyIsImZuNCIsImZuNSIsInRsIiwiY29weVByb3BzIiwiU2FmZUJ1ZmZlciIsInNhZmVyIiwiU2FmZXIiLCJrU3RyaW5nTWF4TGVuZ3RoIiwiTUFYX0xFTkdUSCIsIk1BWF9TVFJJTkdfTEVOR1RIIiwiZmluYWxTaXplIiwiX2ZpbmFsU2l6ZSIsImFjY3VtIiwiYXNzaWduZWQiLCJyZW1haW5kZXIiLCJsb3dCaXRzIiwiaGlnaEJpdHMiLCJBbGdvcml0aG0iLCJTaGEiLCJfdyIsInJvdGwzMCIsIlNoYTEiLCJyb3RsNSIsIlNoYTI1NiIsIlNoYTIyNCIsIl9mIiwiX2ciLCJfaCIsIm1haiIsInNpZ21hMCIsInNpZ21hMSIsImdhbW1hMCIsIlNoYTM4NCIsIl9haCIsIl9iaCIsIl9jaCIsIl9kaCIsIl9laCIsIl9maCIsIl9naCIsIl9oaCIsIl9hbCIsIl9ibCIsIl9jbCIsIl9kbCIsIl9lbCIsIl9mbCIsIl9nbCIsIl9obCIsIndyaXRlSW50NjRCRSIsIlNoYTUxMiIsIkdhbW1hMCIsIkdhbW1hMGwiLCJHYW1tYTEiLCJHYW1tYTFsIiwiZ2V0Q2FycnkiLCJnYW1tYTBsIiwiZ2FtbWExIiwiZ2FtbWExbCIsIldpN2giLCJXaTdsIiwiV2kxNmgiLCJXaTE2bCIsIldpbCIsIldpaCIsIm1hamgiLCJtYWpsIiwic2lnbWEwaCIsInNpZ21hMGwiLCJzaWdtYTFoIiwic2lnbWExbCIsIktpaCIsIktpbCIsImNoaCIsImNobCIsInQxbCIsInQxaCIsInQybCIsInQyaCIsIkVFIiwiZGlkT25FbmQiLCJjbGVhbnVwIiwibmVuYyIsInJldHJpZWQiLCJfbm9ybWFsaXplRW5jb2RpbmciLCJub3JtYWxpemVFbmNvZGluZyIsInV0ZjE2VGV4dCIsInV0ZjE2RW5kIiwidXRmOEZpbGxMYXN0IiwiYmFzZTY0VGV4dCIsImJhc2U2NEVuZCIsInNpbXBsZVdyaXRlIiwic2ltcGxlRW5kIiwidXRmOENoZWNrQnl0ZSIsInV0ZjhDaGVja0V4dHJhQnl0ZXMiLCJ1dGY4Q2hlY2tJbmNvbXBsZXRlIiwiVHJ1c3RsaXN0IiwiaW5pdGlhbGl6ZWQiLCJjZXJ0SW5mb3MiLCJjZXJ0cyIsIkNvc2UxIiwicHJvdGVjdGVkXyIsInVucHJvdGVjdGVkIiwicGF5bG9hZCIsInNpZ25hdHVyZXMiLCJjYm9yIiwiZW5jb2RlZERhdGEiLCJkZWNvZGVkRGF0YSIsImNvc2UxIiwibWFrZURhdGFGb3JWZXJpZmljYXRpb24iLCJyYXcxIiwicmF3MiIsImVuY29kZWRVbnNpZ25lZEludGVnZXIiLCJwdHIiLCJjb21wdXRlTGVuZ3RoIiwic3JjcG9zIiwiZGVzdHBvcyIsImVuY29kZVNpZ25hdHVyZSIsIkV1RGdjIiwiY2JvcldlYiIsImN3dCIsImV1ZGdjIiwiZ2V0Q2VydEluZm9zIiwiZXhwbGljaXRDZXJ0cyIsImNlcnRGaWx0ZXIiLCJvbGRDb3VudCIsImluZm8iLCJjZXJ0SW5mbyIsIm5vdGJlZm9yZSIsIm5vdGFmdGVyIiwic3ViamVjdCIsIkV1RGdjX3BhcnNlIiwiRXVEZ2NfdmFsaWRhdGUiLCJ3aGljaFR5cGVkQXJyYXkiLCJCaWdJbnRTdXBwb3J0ZWQiLCJTeW1ib2xTdXBwb3J0ZWQiLCJPYmplY3RUb1N0cmluZyIsIm51bWJlclZhbHVlIiwic3RyaW5nVmFsdWUiLCJib29sZWFuVmFsdWUiLCJiaWdJbnRWYWx1ZSIsInN5bWJvbFZhbHVlIiwiY2hlY2tCb3hlZFByaW1pdGl2ZSIsInByb3RvdHlwZVZhbHVlT2YiLCJpc01hcFRvU3RyaW5nIiwiaXNTZXRUb1N0cmluZyIsImlzV2Vha01hcFRvU3RyaW5nIiwiaXNXZWFrU2V0VG9TdHJpbmciLCJpc0FycmF5QnVmZmVyVG9TdHJpbmciLCJ3b3JraW5nIiwiaXNEYXRhVmlld1RvU3RyaW5nIiwiaXNVaW50OEFycmF5IiwiaXNVaW50OENsYW1wZWRBcnJheSIsImlzVWludDE2QXJyYXkiLCJpc1VpbnQzMkFycmF5IiwiaXNJbnQ4QXJyYXkiLCJpc0ludDE2QXJyYXkiLCJpc0ludDMyQXJyYXkiLCJpc0JpZ0ludDY0QXJyYXkiLCJpc0JpZ1VpbnQ2NEFycmF5IiwiU2hhcmVkQXJyYXlCdWZmZXJDb3B5IiwiaXNTaGFyZWRBcnJheUJ1ZmZlclRvU3RyaW5nIiwiaXNTaGFyZWRBcnJheUJ1ZmZlciIsImlzR2VuZXJhdG9yT2JqZWN0IiwiaXNXZWJBc3NlbWJseUNvbXBpbGVkTW9kdWxlIiwiZGVzY3JpcHRvcnMiLCJmb3JtYXRSZWdFeHAiLCJvYmplY3RzIiwiaXNOdWxsIiwibm9EZXByZWNhdGlvbiIsInRocm93RGVwcmVjYXRpb24iLCJ0cmFjZURlcHJlY2F0aW9uIiwiZGVidWdzIiwiZGVidWdFbnZSZWdleCIsIk5PREVfREVCVUciLCJkZWJ1Z0VudiIsInN0eWxpemVOb0NvbG9yIiwiaXNCb29sZWFuIiwiX2V4dGVuZCIsImlzVW5kZWZpbmVkIiwiZm9ybWF0VmFsdWUiLCJzdHlsZVR5cGUiLCJzdHlsZSIsInNpbXBsZSIsImlzTnVtYmVyIiwiZm9ybWF0UHJpbWl0aXZlIiwidmlzaWJsZUtleXMiLCJpZHgiLCJhcnJheVRvSGFzaCIsImZvcm1hdEVycm9yIiwiYnJhY2VzIiwidG9VVENTdHJpbmciLCJmb3JtYXRQcm9wZXJ0eSIsImZvcm1hdEFycmF5IiwicmVkdWNlVG9TaW5nbGVTdHJpbmciLCJsaW5lIiwicGlkIiwidHlwZXMiLCJpc051bGxPclVuZGVmaW5lZCIsImlzU3ltYm9sIiwiaXNQcmltaXRpdmUiLCJtb250aHMiLCJ0aW1lc3RhbXAiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJnZXRTZWNvbmRzIiwiZ2V0RGF0ZSIsImdldE1vbnRoIiwib3JpZ2luIiwia0N1c3RvbVByb21pc2lmaWVkU3ltYm9sIiwiY2FsbGJhY2tpZnlPblJlamVjdGVkIiwibmV3UmVhc29uIiwicHJvbWlzaWZ5Iiwib3JpZ2luYWwiLCJwcm9taXNlUmVzb2x2ZSIsInByb21pc2VSZWplY3QiLCJjYWxsYmFja2lmeSIsImNhbGxiYWNraWZpZWQiLCJtYXliZUNiIiwicmVqIiwiZm91bmROYW1lIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwibG9hZGVkIiwiX193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UUFBUSxRQUFRLFFBQVEsTUFBTSxNQUFNLE1BQU0sUUFBUSxNQUFNLE1BQU0sUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxTQUFTQyxHQUFHLElBQUlyYixFQUFFLHVKQUF1SixLQUFLLElBQUlzYixHQUFHLFNBQVNDLEdBQUd6bkUsRUFBRTlOLEdBQUcsTUFBTWtLLEVBQUUsQ0FBQ3NyRSxPQUFPLEdBQUdDLGVBQWUsRUFBRUMsS0FBSyxHQUFHQyxhQUFh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QUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBRWxELEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQ2pELEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQ3BELEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQ2pELEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBRXBELEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQ25ELEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQ25ELEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQ3BELEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBRWpELEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQ3BELEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQ2xELEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQ25ELEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBRWxELEdBQUksR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQ25ELEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQ25ELEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQ2xELEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBRWxELEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQ25ELEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQ2xELEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQ3BELEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBRWpELEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQ25ELEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQ25ELEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQ2xELEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLElBR3BEMzBGLEVBQVErekYsV0FBYSxTQUFvQk8sRUFBS0MsR0FFNUMsSUFEQSxJQUFJOXdGLEVBQU0sRUFDRHlJLEVBQUksRUFBR0EsRUFBSSxFQUFHQSxJQUlyQnpJLElBQVEsRUFDUkEsR0FIU2t4RixFQUFXLEdBQUp6b0YsR0FEUG9vRixJQUFTLEdBQVMsRUFBSnBvRixFQUFVLEtBTW5DLElBQVNBLEVBQUksRUFBR0EsRUFBSSxFQUFHQSxJQUlyQnpJLElBQVEsRUFDUkEsR0FIU2t4RixFQUFPLElBQWUsR0FBSnpvRixHQURsQnFvRixJQUFTLEdBQVMsRUFBSnJvRixFQUFVLEtBTW5DLE9BQU96SSxJQUFRLEdBR2pCLElBQUlteEYsRUFBZSxDQUNqQixHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxHQUN2RCxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUcxRDUwRixFQUFRMGQsUUFBVSxTQUFpQmpYLEdBRWpDLElBREEsSUFBSWhELEVBQU0sRUFDRHlJLEVBQUksRUFBR0EsRUFBSTBvRixFQUFhM3lGLE9BQVFpSyxJQUN2Q3pJLElBQVEsRUFDUkEsR0FBUWdELElBQVFtdUYsRUFBYTFvRixHQUFNLEVBRXJDLE9BQU96SSxJQUFRLEdBR2pCekQsRUFBUTYwRixTQUFXLFNBQWtCcHVGLEVBQUs0SSxFQUFNeWxGLEdBRTlDLElBREEsSUFBSTVxRixFQUFNekQsRUFBSXFHLFNBQVMsR0FDaEI1QyxFQUFJakksT0FBU29OLEdBQ2xCbkYsRUFBTSxJQUFNQSxFQUdkLElBREEsSUFBSXpHLEVBQU0sR0FDRHlJLEVBQUksRUFBR0EsRUFBSW1ELEVBQU1uRCxHQUFLNG9GLEVBQzdCcnhGLEVBQUlrQyxLQUFLdUUsRUFBSTNHLE1BQU0ySSxFQUFHQSxFQUFJNG9GLElBQzVCLE9BQU9yeEYsRUFBSUQsS0FBSyxPLG9DQzlQZHV4RixFQUFnQixFQUFRLE1BQ3hCN3VFLEVBQVMsRUFBUSxNQUVqQjh1RSxFQUFLLEVBQVEsTUFTYkMsRUFBWSxDQUNkLFFBQVUsRUFBTSxLQUFPLEVBQU0sUUFBVSxHQTJCekNqMUYsRUFBUXl3RixtQkFBcUJ6d0YsRUFBUTB3Rix5QkFBMkIxd0YsRUFBUTJ3RixpQkFuQ3hFLFNBQTJCLzlFLEdBQ3pCLElBQUlpVSxFQUFRLElBQUlobEIsRUFBT3FrQixFQUFPdFQsR0FBS2lVLE1BQU8sT0FDdENxdUUsRUFBTSxJQUFJcnpGLEVBQU9xa0IsRUFBT3RULEdBQUtzaUYsSUFBSyxPQUV0QyxPQUFPLElBQUlGLEVBQUdudUUsRUFBT3F1RSxJQWdDdkJsMUYsRUFBUTR3RixvQkFBc0I1d0YsRUFBUTZ3RixjQXpCdEMsU0FBU0QsRUFBcUIvcEUsRUFBT3psQixFQUFLK3pGLEVBQVdDLEdBQ25ELE9BQUl2ekYsRUFBT0UsU0FBU1gsU0FBMkI2SCxJQUFuQmdzRixFQUFVN3pGLEdBQzdCd3ZGLEVBQW9CL3BFLEVBQU8sU0FBVXpsQixFQUFLK3pGLElBR25EL3pGLEVBQU1BLEdBQU8sU0FDYmcwRixFQUFPQSxHQUFRLFNBQ2ZELEVBQVlBLEdBQWEsSUFBSXR6RixFQUFPLENBQUMsSUFFaENBLEVBQU9FLFNBQVNvekYsS0FDbkJBLEVBQVksSUFBSXR6RixFQUFPc3pGLEVBQVdDLElBR2YsaUJBQVZ2dUUsRUFDRixJQUFJbXVFLEVBQUdELEVBQWNsdUUsRUFBT3N1RSxHQUFZQSxHQUFXLElBR3ZEdHpGLEVBQU9FLFNBQVM4a0IsS0FDbkJBLEVBQVEsSUFBSWhsQixFQUFPZ2xCLEVBQU96bEIsSUFHckIsSUFBSTR6RixFQUFHbnVFLEVBQU9zdUUsR0FBVyxPLG9DQ3JDOUJ4a0YsRUFBSyxFQUFRLE1BRWIwa0YsRUFBYyxJQURBLEVBQVEsT0FFdEJDLEVBQWEsSUFBSTNrRixFQUFHLElBQ3BCNGtGLEVBQVMsSUFBSTVrRixFQUFHLElBQ2hCNmtGLEVBQU0sSUFBSTdrRixFQUFHLElBQ2I4a0YsRUFBUSxJQUFJOWtGLEVBQUcsR0FDZitrRixFQUFRLElBQUkva0YsRUFBRyxHQUNmdVYsRUFBUyxFQUFRLE1BQ2pCc2MsRUFBYyxFQUFRLE1BRzFCLFNBQVNtc0QsRUFBYXYzQyxFQUFLaDJDLEdBTXpCLE9BTEFBLEVBQU1BLEdBQU8sT0FDUlMsRUFBT0UsU0FBU3ExQyxLQUNuQkEsRUFBTSxJQUFJdjFDLEVBQU91MUMsRUFBS2gyQyxJQUV4QlQsS0FBS2cxRixLQUFPLElBQUlobEYsRUFBR3ltQyxHQUNaejJDLEtBR1QsU0FBU2t1RixFQUFjejdDLEVBQU1oeUMsR0FNM0IsT0FMQUEsRUFBTUEsR0FBTyxPQUNSUyxFQUFPRSxTQUFTcXhDLEtBQ25CQSxFQUFPLElBQUl2eEMsRUFBT3V4QyxFQUFNaHlDLElBRTFCVCxLQUFLbXVGLE1BQVEsSUFBSW4rRSxFQUFHeWlDLEdBQ2J6eUMsS0FqQlQwRSxFQUFPckYsUUFBVWcxRixFQW9CakIsSUFBSVksRUFBYSxHQXNEakIsU0FBU1osRUFBR251RSxFQUFPc3VFLEVBQVdVLEdBQzVCbDFGLEtBQUttMUYsYUFBYVgsR0FDbEJ4MEYsS0FBS28xRixRQUFVLElBQUlwbEYsRUFBR2tXLEdBQ3RCbG1CLEtBQUttbUIsT0FBU25XLEVBQUd3WCxLQUFLeG5CLEtBQUtvMUYsU0FDM0JwMUYsS0FBS3ExRixVQUFZbnZFLEVBQU01a0IsT0FDdkJ0QixLQUFLZzFGLFVBQU8xc0YsRUFDWnRJLEtBQUttdUYsV0FBUTdsRixFQUNidEksS0FBS3MxRixnQkFBYWh0RixFQUNkNHNGLEdBQ0ZsMUYsS0FBS2d1RixhQUFlQSxFQUNwQmh1RixLQUFLa3VGLGNBQWdCQSxHQUVyQmx1RixLQUFLczFGLFdBQWEsRUE0RHRCLFNBQVN2SSxFQUFrQkMsRUFBSXZzRixHQUM3QixJQUFJeUssRUFBTSxJQUFJaEssRUFBTzhyRixFQUFHMzlFLFdBQ3hCLE9BQUs1TyxFQUdJeUssRUFBSWlCLFNBQVMxTCxHQUZieUssRUE1RFh6RixPQUFPa29CLGVBQWUwbUUsRUFBR3AwRixVQUFXLGNBQWUsQ0FDakQydEIsWUFBWSxFQUNaZSxJQUFLLFdBSUgsTUFIK0IsaUJBQXBCM3VCLEtBQUtzMUYsYUFDZHQxRixLQUFLczFGLFdBeEVYLFNBQW9CcHZFLEVBQU9zdUUsR0FDekIsSUFBSUQsRUFBTUMsRUFBVXJvRixTQUFTLE9BQ3pCaWlFLEVBQU0sQ0FBQ21tQixFQUFLcnVFLEVBQU0vWixTQUFTLEtBQUt0SixLQUFLLEtBQ3pDLEdBQUl1ckUsS0FBTzZtQixFQUNULE9BQU9BLEVBQVc3bUIsR0FFcEIsSUF5Qkl4cUMsRUF6QkFyaUMsRUFBUSxFQUVaLEdBQUkya0IsRUFBTTdELFdBQ1BrRCxFQUFPZ3dFLGNBQ1Bod0UsRUFBT2l3RSxXQUFXdHZFLEtBQ2xCd3VFLEVBQVludEYsS0FBSzJlLEdBY2xCLE9BWkEza0IsR0FBUyxFQUtQQSxHQUhVLE9BQVJnekYsR0FBd0IsT0FBUkEsRUFHVCxFQUlBLEVBRVhVLEVBQVc3bUIsR0FBTzdzRSxFQUNYQSxFQU9ULE9BTEttekYsRUFBWW50RixLQUFLMmUsRUFBTTVGLEtBQUssTUFFL0IvZSxHQUFTLEdBR0hnekYsR0FDTixJQUFLLEtBQ0NydUUsRUFBTWpVLElBQUkwaUYsR0FBWXRqRixJQUFJdWpGLEtBRTVCcnpGLEdBQVMsR0FFWCxNQUNGLElBQUssTUFDSHFpQyxFQUFNMWQsRUFBTWpVLElBQUk0aUYsSUFDUnhqRixJQUFJeWpGLElBQVVseEQsRUFBSXZ5QixJQUFJMGpGLEtBRTVCeHpGLEdBQVMsR0FFWCxNQUNGLFFBQ0VBLEdBQVMsRUFHYixPQURBMHpGLEVBQVc3bUIsR0FBTzdzRSxFQUNYQSxFQXNCZWswRixDQUFXejFGLEtBQUtvMUYsUUFBU3AxRixLQUFLMDFGLFFBRTNDMTFGLEtBQUtzMUYsY0FHaEJqQixFQUFHcDBGLFVBQVVxdEYsYUFBZSxXQUsxQixPQUpLdHRGLEtBQUttdUYsUUFDUm51RixLQUFLbXVGLE1BQVEsSUFBSW4rRSxFQUFHNnhCLEVBQVk3aEMsS0FBS3ExRixhQUV2Q3IxRixLQUFLZzFGLEtBQU9oMUYsS0FBSzIxRixLQUFLNXhFLE1BQU0vakIsS0FBS21tQixRQUFRYixPQUFPdGxCLEtBQUttdUYsT0FBT2hxRSxVQUNyRG5rQixLQUFLd3RGLGdCQUdkNkcsRUFBR3AwRixVQUFVd3RGLGNBQWdCLFNBQVVoOEQsR0FHckMsSUFBSW1rRSxHQURKbmtFLEdBREFBLEVBQVEsSUFBSXpoQixFQUFHeWhCLElBQ0QxTixNQUFNL2pCLEtBQUttbUIsU0FDTmIsT0FBT3RsQixLQUFLbXVGLE9BQU9ocUUsVUFDbENyaEIsRUFBTSxJQUFJNUIsRUFBTzAwRixFQUFPdm1GLFdBQ3hCNlcsRUFBUWxtQixLQUFLNjFGLFdBQ2pCLEdBQUkveUYsRUFBSXhCLE9BQVM0a0IsRUFBTTVrQixPQUFRLENBQzdCLElBQUl3MEYsRUFBUSxJQUFJNTBGLEVBQU9nbEIsRUFBTTVrQixPQUFTd0IsRUFBSXhCLFFBQzFDdzBGLEVBQU12Z0QsS0FBSyxHQUNYenlDLEVBQU01QixFQUFPcUMsT0FBTyxDQUFDdXlGLEVBQU9oekYsSUFFOUIsT0FBT0EsR0FHVHV4RixFQUFHcDBGLFVBQVV1dEYsYUFBZSxTQUFzQi9zRixHQUNoRCxPQUFPc3NGLEVBQWtCL3NGLEtBQUtnMUYsS0FBTXYwRixJQUd0QzR6RixFQUFHcDBGLFVBQVU4dEYsY0FBZ0IsU0FBdUJ0dEYsR0FDbEQsT0FBT3NzRixFQUFrQi9zRixLQUFLbXVGLE1BQU8xdEYsSUFHdkM0ekYsRUFBR3AwRixVQUFVNDFGLFNBQVcsU0FBVXAxRixHQUNoQyxPQUFPc3NGLEVBQWtCL3NGLEtBQUtvMUYsUUFBUzMwRixJQUd6QzR6RixFQUFHcDBGLFVBQVU4MUYsYUFBZSxTQUFVdDFGLEdBQ3BDLE9BQU9zc0YsRUFBa0Ivc0YsS0FBSzIxRixLQUFNbDFGLElBR3RDNHpGLEVBQUdwMEYsVUFBVWsxRixhQUFlLFNBQVVaLEVBQUs5ekYsR0FPekMsT0FOQUEsRUFBTUEsR0FBTyxPQUNSUyxFQUFPRSxTQUFTbXpGLEtBQ25CQSxFQUFNLElBQUlyekYsRUFBT3F6RixFQUFLOXpGLElBRXhCVCxLQUFLMDFGLE1BQVFuQixFQUNidjBGLEtBQUsyMUYsS0FBTyxJQUFJM2xGLEVBQUd1a0YsR0FDWnYwRixPLGVDekpULElBQUk2aEMsRUFBYyxFQUFRLE1BQzFCbjlCLEVBQU9yRixRQUFVMjJGLEVBQ2pCQSxFQUFVVCxZQUFjQSxFQUN4QlMsRUFBVVIsV0FBYUEsRUFDdkIsSUFBSXhsRixFQUFLLEVBQVEsTUFDYjJrRixFQUFhLElBQUkza0YsRUFBRyxJQUVwQjBrRixFQUFjLElBREEsRUFBUSxPQUV0QjkxRCxFQUFNLElBQUk1dUIsRUFBRyxHQUNieTFELEVBQU0sSUFBSXoxRCxFQUFHLEdBQ2JpbUYsRUFBTyxJQUFJam1GLEVBQUcsR0FHZDZrRixHQUZVLElBQUk3a0YsRUFBRyxJQUNULElBQUlBLEVBQUcsR0FDVCxJQUFJQSxFQUFHLEtBQ2I4a0YsRUFBUSxJQUFJOWtGLEVBQUcsR0FFZjRrRixHQURRLElBQUk1a0YsRUFBRyxHQUNOLElBQUlBLEVBQUcsS0FDaEIwMUQsRUFBTyxJQUFJMTFELEVBQUcsR0FFZHVWLEdBRFMsSUFBSXZWLEVBQUcsSUFDUCxNQUViLFNBQVNrbUYsSUFDUCxHQUFlLE9BQVgzd0UsRUFDRixPQUFPQSxFQUVULElBQ0kvaUIsRUFBTSxHQUNWQSxFQUFJLEdBQUssRUFDVCxJQUFLLElBQUkrSSxFQUFJLEVBQUc0SCxFQUFJLEVBQUdBLEVBSFgsUUFHc0JBLEdBQUssRUFBRyxDQUV4QyxJQURBLElBQUlnUyxFQUFPbFUsS0FBS1MsS0FBS1QsS0FBS2tVLEtBQUtoUyxJQUN0QjNILEVBQUksRUFBR0EsRUFBSUQsR0FBSy9JLEVBQUlnSixJQUFNMlosR0FDN0JoUyxFQUFJM1EsRUFBSWdKLElBQU8sRUFEb0JBLEtBSXJDRCxJQUFNQyxHQUFLaEosRUFBSWdKLElBQU0yWixJQUd6QjNpQixFQUFJK0ksS0FBTzRILEdBR2IsT0FEQW9TLEVBQVMvaUIsRUFDRkEsRUFHVCxTQUFTK3lGLEVBQVk1bEYsR0FHbkIsSUFGQSxJQUFJNFYsRUFBUzJ3RSxJQUVKM3FGLEVBQUksRUFBR0EsRUFBSWdhLEVBQU9qa0IsT0FBUWlLLElBQ2pDLEdBQTBCLElBQXRCb0UsRUFBRWdFLEtBQUs0UixFQUFPaGEsSUFDaEIsT0FBMEIsSUFBdEJvRSxFQUFFcVQsS0FBS3VDLEVBQU9oYSxJQU90QixPQUFPLEVBR1QsU0FBU2lxRixFQUFXN2xGLEdBQ2xCLElBQUlXLEVBQU1OLEVBQUd3WCxLQUFLN1gsR0FDbEIsT0FBOEQsSUFBdkQ4MUQsRUFBSTFoRCxNQUFNelQsR0FBS2dWLE9BQU8zVixFQUFFaVIsS0FBSyxJQUFJdUQsVUFBVW5CLEtBQUssR0FHekQsU0FBU2d6RSxFQUFVdDJFLEVBQU02MEUsR0FDdkIsR0FBSTcwRSxFQUFPLEdBRVQsT0FDUyxJQUFJMVAsRUFERCxJQUFSdWtGLEdBQXFCLElBQVJBLEVBQ0QsQ0FBQyxJQUFNLEtBRVAsQ0FBQyxJQUFNLEtBS3pCLElBQUl6dUYsRUFBS3F3RixFQUVULElBSkE1QixFQUFNLElBQUl2a0YsRUFBR3VrRixLQUlBLENBRVgsSUFEQXp1RixFQUFNLElBQUlrSyxFQUFHNnhCLEVBQVk1d0IsS0FBS1MsS0FBS2dPLEVBQU8sS0FDbkM1WixFQUFJOE8sWUFBYzhLLEdBQ3ZCNVosRUFBSXFhLE1BQU0sR0FRWixHQU5JcmEsRUFBSXVjLFVBQ052YyxFQUFJNlEsS0FBS2lvQixHQUVOOTRCLEVBQUl1UCxNQUFNLElBQ2J2UCxFQUFJNlEsS0FBSzh1RCxHQUVOOHVCLEVBQUlsakYsSUFBSW8wRCxJQUlOLElBQUs4dUIsRUFBSWxqRixJQUFJNGtGLEdBQ2xCLEtBQU9ud0YsRUFBSW1NLElBQUk0aUYsR0FBS3hqRixJQUFJeWpGLElBQ3RCaHZGLEVBQUk2USxLQUFLK3VELFFBTFgsS0FBTzUvRCxFQUFJbU0sSUFBSTBpRixHQUFZdGpGLElBQUl1akYsSUFDN0I5dUYsRUFBSTZRLEtBQUsrdUQsR0FRYixHQUFJNnZCLEVBREpZLEVBQUtyd0YsRUFBSXdhLEtBQUssS0FDU2kxRSxFQUFZenZGLElBQ2pDMHZGLEVBQVdXLElBQU9YLEVBQVcxdkYsSUFDN0I0dUYsRUFBWW50RixLQUFLNHVGLElBQU96QixFQUFZbnRGLEtBQUt6QixHQUN6QyxPQUFPQSxLLDQ0TkNwR2IsU0FBV3BCLEVBQVFyRixHQUNqQixhQUdBLFNBQVMrRCxFQUFReUMsRUFBSzhELEdBQ3BCLElBQUs5RCxFQUFLLE1BQU0sSUFBSUYsTUFBTWdFLEdBQU8sb0JBS25DLFNBQVMvSixFQUFVZ1EsRUFBTUMsR0FDdkJELEVBQUtFLE9BQVNELEVBQ2QsSUFBSUUsRUFBVyxhQUNmQSxFQUFTOVAsVUFBWTRQLEVBQVU1UCxVQUMvQjJQLEVBQUszUCxVQUFZLElBQUk4UCxFQUNyQkgsRUFBSzNQLFVBQVVnQyxZQUFjMk4sRUFLL0IsU0FBU0ksRUFBSUMsRUFBUXpRLEVBQU0wUSxHQUN6QixHQUFJRixFQUFHRyxLQUFLRixHQUNWLE9BQU9BLEVBR1RqUSxLQUFLb1EsU0FBVyxFQUNoQnBRLEtBQUtxUSxNQUFRLEtBQ2JyUSxLQUFLc0IsT0FBUyxFQUdkdEIsS0FBS3NRLElBQU0sS0FFSSxPQUFYTCxJQUNXLE9BQVR6USxHQUEwQixPQUFUQSxJQUNuQjBRLEVBQVMxUSxFQUNUQSxFQUFPLElBR1RRLEtBQUttRixNQUFNOEssR0FBVSxFQUFHelEsR0FBUSxHQUFJMFEsR0FBVSxPQVlsRCxJQUFJaFAsRUFUa0IsaUJBQVh3RCxFQUNUQSxFQUFPckYsUUFBVTJRLEVBRWpCM1EsRUFBUTJRLEdBQUtBLEVBR2ZBLEVBQUdBLEdBQUtBLEVBQ1JBLEVBQUdPLFNBQVcsR0FHZCxJQUVJclAsRUFEb0Isb0JBQVhzUCxhQUFtRCxJQUFsQkEsT0FBT3RQLE9BQ3hDc1AsT0FBT3RQLE9BRVAsZUFFWCxNQUFPMEYsSUFnSVQsU0FBUzZKLEVBQWVDLEVBQVE1RyxHQUM5QixJQUFJNkcsRUFBSUQsRUFBT25DLFdBQVd6RSxHQUUxQixPQUFJNkcsR0FBSyxJQUFNQSxHQUFLLEdBQ1hBLEVBQUksR0FFRkEsR0FBSyxJQUFNQSxHQUFLLElBQ2xCQSxFQUFJLEdBR0hBLEVBQUksR0FBTSxHQUl0QixTQUFTQyxFQUFjRixFQUFRRyxFQUFZL0csR0FDekMsSUFBSWdILEVBQUlMLEVBQWNDLEVBQVE1RyxHQUk5QixPQUhJQSxFQUFRLEdBQUsrRyxJQUNmQyxHQUFLTCxFQUFjQyxFQUFRNUcsRUFBUSxJQUFNLEdBRXBDZ0gsRUE4Q1QsU0FBU0MsRUFBV3hILEVBQUt4QyxFQUFPNkcsRUFBS29ELEdBR25DLElBRkEsSUFBSUYsRUFBSSxFQUNKeEYsRUFBTTJGLEtBQUtoRSxJQUFJMUQsRUFBSWpJLE9BQVFzTSxHQUN0QnJDLEVBQUl4RSxFQUFPd0UsRUFBSUQsRUFBS0MsSUFBSyxDQUNoQyxJQUFJb0YsRUFBSXBILEVBQUlnRixXQUFXaEQsR0FBSyxHQUU1QnVGLEdBQUtFLEVBSUhGLEdBREVILEdBQUssR0FDRkEsRUFBSSxHQUFLLEdBR0xBLEdBQUssR0FDVEEsRUFBSSxHQUFLLEdBSVRBLEVBR1QsT0FBT0csRUFuTlRkLEVBQUdHLEtBQU8sU0FBZXJLLEdBQ3ZCLE9BQUlBLGFBQWVrSyxHQUlKLE9BQVJsSyxHQUErQixpQkFBUkEsR0FDNUJBLEVBQUk3RCxZQUFZc08sV0FBYVAsRUFBR08sVUFBWTdPLE1BQU1DLFFBQVFtRSxFQUFJdUssUUFHbEVMLEVBQUdrQixJQUFNLFNBQWNDLEVBQU1DLEdBQzNCLE9BQUlELEVBQUtFLElBQUlELEdBQVMsRUFBVUQsRUFDekJDLEdBR1RwQixFQUFHL0MsSUFBTSxTQUFja0UsRUFBTUMsR0FDM0IsT0FBSUQsRUFBS0UsSUFBSUQsR0FBUyxFQUFVRCxFQUN6QkMsR0FHVHBCLEVBQUcvUCxVQUFVa0YsTUFBUSxTQUFlOEssRUFBUXpRLEVBQU0wUSxHQUNoRCxHQUFzQixpQkFBWEQsRUFDVCxPQUFPalEsS0FBS3NSLFlBQVlyQixFQUFRelEsRUFBTTBRLEdBR3hDLEdBQXNCLGlCQUFYRCxFQUNULE9BQU9qUSxLQUFLdVIsV0FBV3RCLEVBQVF6USxFQUFNMFEsR0FHMUIsUUFBVDFRLElBQ0ZBLEVBQU8sSUFFVDRELEVBQU81RCxLQUFpQixFQUFQQSxJQUFhQSxHQUFRLEdBQUtBLEdBQVEsSUFHbkQsSUFBSXVILEVBQVEsRUFDTSxPQUZsQmtKLEVBQVNBLEVBQU85RCxXQUFXMkIsUUFBUSxPQUFRLEtBRWhDLEtBQ1QvRyxJQUNBL0csS0FBS29RLFNBQVcsR0FHZHJKLEVBQVFrSixFQUFPM08sU0FDSixLQUFUOUIsRUFDRlEsS0FBS3dSLFVBQVV2QixFQUFRbEosRUFBT21KLElBRTlCbFEsS0FBS3lSLFdBQVd4QixFQUFRelEsRUFBTXVILEdBQ2YsT0FBWG1KLEdBQ0ZsUSxLQUFLdVIsV0FBV3ZSLEtBQUtxUCxVQUFXN1AsRUFBTTBRLE1BTTlDRixFQUFHL1AsVUFBVXFSLFlBQWMsU0FBc0JyQixFQUFRelEsRUFBTTBRLEdBQ3pERCxFQUFTLElBQ1hqUSxLQUFLb1EsU0FBVyxFQUNoQkgsR0FBVUEsR0FFUkEsRUFBUyxVQUNYalEsS0FBS3FRLE1BQVEsQ0FBVyxTQUFUSixHQUNmalEsS0FBS3NCLE9BQVMsR0FDTDJPLEVBQVMsa0JBQ2xCalEsS0FBS3FRLE1BQVEsQ0FDRixTQUFUSixFQUNDQSxFQUFTLFNBQWEsVUFFekJqUSxLQUFLc0IsT0FBUyxJQUVkOEIsRUFBTzZNLEVBQVMsa0JBQ2hCalEsS0FBS3FRLE1BQVEsQ0FDRixTQUFUSixFQUNDQSxFQUFTLFNBQWEsU0FDdkIsR0FFRmpRLEtBQUtzQixPQUFTLEdBR0QsT0FBWDRPLEdBR0psUSxLQUFLdVIsV0FBV3ZSLEtBQUtxUCxVQUFXN1AsRUFBTTBRLElBR3hDRixFQUFHL1AsVUFBVXNSLFdBQWEsU0FBcUJ0QixFQUFRelEsRUFBTTBRLEdBRzNELEdBREE5TSxFQUFnQyxpQkFBbEI2TSxFQUFPM08sUUFDakIyTyxFQUFPM08sUUFBVSxFQUduQixPQUZBdEIsS0FBS3FRLE1BQVEsQ0FBRSxHQUNmclEsS0FBS3NCLE9BQVMsRUFDUHRCLEtBR1RBLEtBQUtzQixPQUFTMlAsS0FBS1MsS0FBS3pCLEVBQU8zTyxPQUFTLEdBQ3hDdEIsS0FBS3FRLE1BQVEsSUFBSTNPLE1BQU0xQixLQUFLc0IsUUFDNUIsSUFBSyxJQUFJaUssRUFBSSxFQUFHQSxFQUFJdkwsS0FBS3NCLE9BQVFpSyxJQUMvQnZMLEtBQUtxUSxNQUFNOUUsR0FBSyxFQUdsQixJQUFJQyxFQUFHbUcsRUFDSEMsRUFBTSxFQUNWLEdBQWUsT0FBWDFCLEVBQ0YsSUFBSzNFLEVBQUkwRSxFQUFPM08sT0FBUyxFQUFHa0ssRUFBSSxFQUFHRCxHQUFLLEVBQUdBLEdBQUssRUFDOUNvRyxFQUFJMUIsRUFBTzFFLEdBQU0wRSxFQUFPMUUsRUFBSSxJQUFNLEVBQU0wRSxFQUFPMUUsRUFBSSxJQUFNLEdBQ3pEdkwsS0FBS3FRLE1BQU03RSxJQUFPbUcsR0FBS0MsRUFBTyxTQUM5QjVSLEtBQUtxUSxNQUFNN0UsRUFBSSxHQUFNbUcsSUFBTyxHQUFLQyxFQUFRLFVBQ3pDQSxHQUFPLEtBQ0ksS0FDVEEsR0FBTyxHQUNQcEcsVUFHQyxHQUFlLE9BQVgwRSxFQUNULElBQUszRSxFQUFJLEVBQUdDLEVBQUksRUFBR0QsRUFBSTBFLEVBQU8zTyxPQUFRaUssR0FBSyxFQUN6Q29HLEVBQUkxQixFQUFPMUUsR0FBTTBFLEVBQU8xRSxFQUFJLElBQU0sRUFBTTBFLEVBQU8xRSxFQUFJLElBQU0sR0FDekR2TCxLQUFLcVEsTUFBTTdFLElBQU9tRyxHQUFLQyxFQUFPLFNBQzlCNVIsS0FBS3FRLE1BQU03RSxFQUFJLEdBQU1tRyxJQUFPLEdBQUtDLEVBQVEsVUFDekNBLEdBQU8sS0FDSSxLQUNUQSxHQUFPLEdBQ1BwRyxLQUlOLE9BQU94TCxLQUFLNlIsU0F5QmQ3QixFQUFHL1AsVUFBVXVSLFVBQVksU0FBb0J2QixFQUFRbEosRUFBT21KLEdBRTFEbFEsS0FBS3NCLE9BQVMyUCxLQUFLUyxNQUFNekIsRUFBTzNPLE9BQVN5RixHQUFTLEdBQ2xEL0csS0FBS3FRLE1BQVEsSUFBSTNPLE1BQU0xQixLQUFLc0IsUUFDNUIsSUFBSyxJQUFJaUssRUFBSSxFQUFHQSxFQUFJdkwsS0FBS3NCLE9BQVFpSyxJQUMvQnZMLEtBQUtxUSxNQUFNOUUsR0FBSyxFQUlsQixJQUdJb0csRUFIQUMsRUFBTSxFQUNOcEcsRUFBSSxFQUdSLEdBQWUsT0FBWDBFLEVBQ0YsSUFBSzNFLEVBQUkwRSxFQUFPM08sT0FBUyxFQUFHaUssR0FBS3hFLEVBQU93RSxHQUFLLEVBQzNDb0csRUFBSWYsRUFBYVgsRUFBUWxKLEVBQU93RSxJQUFNcUcsRUFDdEM1UixLQUFLcVEsTUFBTTdFLElBQVUsU0FBSm1HLEVBQ2JDLEdBQU8sSUFDVEEsR0FBTyxHQUNQcEcsR0FBSyxFQUNMeEwsS0FBS3FRLE1BQU03RSxJQUFNbUcsSUFBTSxJQUV2QkMsR0FBTyxPQUtYLElBQUtyRyxHQURhMEUsRUFBTzNPLE9BQVN5RixHQUNYLEdBQU0sRUFBSUEsRUFBUSxFQUFJQSxFQUFPd0UsRUFBSTBFLEVBQU8zTyxPQUFRaUssR0FBSyxFQUMxRW9HLEVBQUlmLEVBQWFYLEVBQVFsSixFQUFPd0UsSUFBTXFHLEVBQ3RDNVIsS0FBS3FRLE1BQU03RSxJQUFVLFNBQUptRyxFQUNiQyxHQUFPLElBQ1RBLEdBQU8sR0FDUHBHLEdBQUssRUFDTHhMLEtBQUtxUSxNQUFNN0UsSUFBTW1HLElBQU0sSUFFdkJDLEdBQU8sRUFLYjVSLEtBQUs2UixTQTJCUDdCLEVBQUcvUCxVQUFVd1IsV0FBYSxTQUFxQnhCLEVBQVF6USxFQUFNdUgsR0FFM0QvRyxLQUFLcVEsTUFBUSxDQUFFLEdBQ2ZyUSxLQUFLc0IsT0FBUyxFQUdkLElBQUssSUFBSXdRLEVBQVUsRUFBR0MsRUFBVSxFQUFHQSxHQUFXLFNBQVdBLEdBQVd2UyxFQUNsRXNTLElBRUZBLElBQ0FDLEVBQVdBLEVBQVV2UyxFQUFRLEVBTzdCLElBTEEsSUFBSXdTLEVBQVEvQixFQUFPM08sT0FBU3lGLEVBQ3hCa0wsRUFBTUQsRUFBUUYsRUFDZGxFLEVBQU1xRCxLQUFLaEUsSUFBSStFLEVBQU9BLEVBQVFDLEdBQU9sTCxFQUVyQ21MLEVBQU8sRUFDRjNHLEVBQUl4RSxFQUFPd0UsRUFBSXFDLEVBQUtyQyxHQUFLdUcsRUFDaENJLEVBQU9uQixFQUFVZCxFQUFRMUUsRUFBR0EsRUFBSXVHLEVBQVN0UyxHQUV6Q1EsS0FBS21TLE1BQU1KLEdBQ1AvUixLQUFLcVEsTUFBTSxHQUFLNkIsRUFBTyxTQUN6QmxTLEtBQUtxUSxNQUFNLElBQU02QixFQUVqQmxTLEtBQUtvUyxPQUFPRixHQUloQixHQUFZLElBQVJELEVBQVcsQ0FDYixJQUFJSSxFQUFNLEVBR1YsSUFGQUgsRUFBT25CLEVBQVVkLEVBQVExRSxFQUFHMEUsRUFBTzNPLE9BQVE5QixHQUV0QytMLEVBQUksRUFBR0EsRUFBSTBHLEVBQUsxRyxJQUNuQjhHLEdBQU83UyxFQUdUUSxLQUFLbVMsTUFBTUUsR0FDUHJTLEtBQUtxUSxNQUFNLEdBQUs2QixFQUFPLFNBQ3pCbFMsS0FBS3FRLE1BQU0sSUFBTTZCLEVBRWpCbFMsS0FBS29TLE9BQU9GLEdBSWhCbFMsS0FBSzZSLFNBR1A3QixFQUFHL1AsVUFBVWlELEtBQU8sU0FBZW9QLEdBQ2pDQSxFQUFLakMsTUFBUSxJQUFJM08sTUFBTTFCLEtBQUtzQixRQUM1QixJQUFLLElBQUlpSyxFQUFJLEVBQUdBLEVBQUl2TCxLQUFLc0IsT0FBUWlLLElBQy9CK0csRUFBS2pDLE1BQU05RSxHQUFLdkwsS0FBS3FRLE1BQU05RSxHQUU3QitHLEVBQUtoUixPQUFTdEIsS0FBS3NCLE9BQ25CZ1IsRUFBS2xDLFNBQVdwUSxLQUFLb1EsU0FDckJrQyxFQUFLaEMsSUFBTXRRLEtBQUtzUSxLQUdsQk4sRUFBRy9QLFVBQVUyRSxNQUFRLFdBQ25CLElBQUlrTSxFQUFJLElBQUlkLEVBQUcsTUFFZixPQURBaFEsS0FBS2tELEtBQUs0TixHQUNIQSxHQUdUZCxFQUFHL1AsVUFBVXNTLFFBQVUsU0FBa0I3RCxHQUN2QyxLQUFPMU8sS0FBS3NCLE9BQVNvTixHQUNuQjFPLEtBQUtxUSxNQUFNclEsS0FBS3NCLFVBQVksRUFFOUIsT0FBT3RCLE1BSVRnUSxFQUFHL1AsVUFBVTRSLE1BQVEsV0FDbkIsS0FBTzdSLEtBQUtzQixPQUFTLEdBQXFDLElBQWhDdEIsS0FBS3FRLE1BQU1yUSxLQUFLc0IsT0FBUyxJQUNqRHRCLEtBQUtzQixTQUVQLE9BQU90QixLQUFLd1MsYUFHZHhDLEVBQUcvUCxVQUFVdVMsVUFBWSxXQUt2QixPQUhvQixJQUFoQnhTLEtBQUtzQixRQUFrQyxJQUFsQnRCLEtBQUtxUSxNQUFNLEtBQ2xDclEsS0FBS29RLFNBQVcsR0FFWHBRLE1BR1RnUSxFQUFHL1AsVUFBVXdTLFFBQVUsV0FDckIsT0FBUXpTLEtBQUtzUSxJQUFNLFVBQVksU0FBV3RRLEtBQUttTSxTQUFTLElBQU0sS0FpQ2hFLElBQUl1RyxFQUFRLENBQ1YsR0FDQSxJQUNBLEtBQ0EsTUFDQSxPQUNBLFFBQ0EsU0FDQSxVQUNBLFdBQ0EsWUFDQSxhQUNBLGNBQ0EsZUFDQSxnQkFDQSxpQkFDQSxrQkFDQSxtQkFDQSxvQkFDQSxxQkFDQSxzQkFDQSx1QkFDQSx3QkFDQSx5QkFDQSwwQkFDQSwyQkFDQSw2QkFHRUMsRUFBYSxDQUNmLEVBQUcsRUFDSCxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxFQUN2QixFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUNsQixFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUNsQixFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUNsQixFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUdoQkMsRUFBYSxDQUNmLEVBQUcsRUFDSCxTQUFVLFNBQVUsU0FBVSxTQUFVLFNBQVUsU0FBVSxTQUM1RCxTQUFVLElBQVUsU0FBVSxTQUFVLFNBQVUsUUFBUyxTQUMzRCxTQUFVLFNBQVUsU0FBVSxTQUFVLEtBQVUsUUFBUyxRQUMzRCxRQUFTLFFBQVMsUUFBUyxTQUFVLFNBQVUsU0FBVSxTQUN6RCxNQUFVLFNBQVUsU0FBVSxTQUFVLFNBQVUsU0FBVSxVQXNqQjlELFNBQVNDLEVBQVlDLEVBQU1oTixFQUFLaEQsR0FDOUJBLEVBQUlzTixTQUFXdEssRUFBSXNLLFNBQVcwQyxFQUFLMUMsU0FDbkMsSUFBSTlFLEVBQU93SCxFQUFLeFIsT0FBU3dFLEVBQUl4RSxPQUFVLEVBQ3ZDd0IsRUFBSXhCLE9BQVNnSyxFQUNiQSxFQUFPQSxFQUFNLEVBQUssRUFHbEIsSUFBSXlILEVBQW9CLEVBQWhCRCxFQUFLekMsTUFBTSxHQUNmMkMsRUFBbUIsRUFBZmxOLEVBQUl1SyxNQUFNLEdBQ2RTLEVBQUlpQyxFQUFJQyxFQUVSQyxFQUFTLFNBQUpuQyxFQUNMb0MsRUFBU3BDLEVBQUksU0FBYSxFQUM5QmhPLEVBQUl1TixNQUFNLEdBQUs0QyxFQUVmLElBQUssSUFBSUUsRUFBSSxFQUFHQSxFQUFJN0gsRUFBSzZILElBQUssQ0FNNUIsSUFIQSxJQUFJQyxFQUFTRixJQUFVLEdBQ25CRyxFQUFnQixTQUFSSCxFQUNSSSxFQUFPckMsS0FBS2hFLElBQUlrRyxFQUFHck4sRUFBSXhFLE9BQVMsR0FDM0JrSyxFQUFJeUYsS0FBS0MsSUFBSSxFQUFHaUMsRUFBSUwsRUFBS3hSLE9BQVMsR0FBSWtLLEdBQUs4SCxFQUFNOUgsSUFBSyxDQUM3RCxJQUFJRCxFQUFLNEgsRUFBSTNILEVBQUssRUFJbEI0SCxJQURBdEMsR0FGQWlDLEVBQW9CLEVBQWhCRCxFQUFLekMsTUFBTTlFLEtBQ2Z5SCxFQUFtQixFQUFmbE4sRUFBSXVLLE1BQU03RSxJQUNGNkgsR0FDRyxTQUFhLEVBQzVCQSxFQUFZLFNBQUp2QyxFQUVWaE8sRUFBSXVOLE1BQU04QyxHQUFhLEVBQVJFLEVBQ2ZILEVBQWlCLEVBQVRFLEVBUVYsT0FOYyxJQUFWRixFQUNGcFEsRUFBSXVOLE1BQU04QyxHQUFhLEVBQVJELEVBRWZwUSxFQUFJeEIsU0FHQ3dCLEVBQUkrTyxRQXpsQmI3QixFQUFHL1AsVUFBVWtNLFNBQVcsU0FBbUIzTSxFQUFNK1QsR0FJL0MsSUFBSXpRLEVBQ0osR0FIQXlRLEVBQW9CLEVBQVZBLEdBQWUsRUFHWixNQUpiL1QsRUFBT0EsR0FBUSxLQUlhLFFBQVRBLEVBQWdCLENBQ2pDc0QsRUFBTSxHQUdOLElBRkEsSUFBSThPLEVBQU0sRUFDTnNCLEVBQVEsRUFDSDNILEVBQUksRUFBR0EsRUFBSXZMLEtBQUtzQixPQUFRaUssSUFBSyxDQUNwQyxJQUFJb0csRUFBSTNSLEtBQUtxUSxNQUFNOUUsR0FDZjJHLEdBQStCLFVBQXJCUCxHQUFLQyxFQUFPc0IsSUFBbUIvRyxTQUFTLElBR3BEckosRUFEWSxJQURkb1EsRUFBU3ZCLElBQU8sR0FBS0MsRUFBUSxXQUNWckcsSUFBTXZMLEtBQUtzQixPQUFTLEVBQy9Cb1IsRUFBTSxFQUFJUixFQUFLNVEsUUFBVTRRLEVBQU9wUCxFQUVoQ29QLEVBQU9wUCxHQUVmOE8sR0FBTyxJQUNJLEtBQ1RBLEdBQU8sR0FDUHJHLEtBTUosSUFIYyxJQUFWMkgsSUFDRnBRLEVBQU1vUSxFQUFNL0csU0FBUyxJQUFNckosR0FFdEJBLEVBQUl4QixPQUFTaVMsR0FBWSxHQUM5QnpRLEVBQU0sSUFBTUEsRUFLZCxPQUhzQixJQUFsQjlDLEtBQUtvUSxXQUNQdE4sRUFBTSxJQUFNQSxHQUVQQSxFQUdULEdBQUl0RCxLQUFpQixFQUFQQSxJQUFhQSxHQUFRLEdBQUtBLEdBQVEsR0FBSSxDQUVsRCxJQUFJZ1UsRUFBWWIsRUFBV25ULEdBRXZCaVUsRUFBWWIsRUFBV3BULEdBQzNCc0QsRUFBTSxHQUNOLElBQUk2TixFQUFJM1EsS0FBSzRFLFFBRWIsSUFEQStMLEVBQUVQLFNBQVcsR0FDTE8sRUFBRStDLFVBQVUsQ0FDbEIsSUFBSTVDLEVBQUlILEVBQUVnRCxLQUFLRixHQUFXdEgsU0FBUzNNLEdBTWpDc0QsR0FMRjZOLEVBQUlBLEVBQUVpRCxNQUFNSCxJQUVMQyxTQUdDNUMsRUFBSWhPLEVBRko0UCxFQUFNYyxFQUFZMUMsRUFBRXhQLFFBQVV3UCxFQUFJaE8sRUFRNUMsSUFISTlDLEtBQUswVCxXQUNQNVEsRUFBTSxJQUFNQSxHQUVQQSxFQUFJeEIsT0FBU2lTLEdBQVksR0FDOUJ6USxFQUFNLElBQU1BLEVBS2QsT0FIc0IsSUFBbEI5QyxLQUFLb1EsV0FDUHROLEVBQU0sSUFBTUEsR0FFUEEsRUFHVE0sR0FBTyxFQUFPLG9DQUdoQjRNLEVBQUcvUCxVQUFVNFQsU0FBVyxXQUN0QixJQUFJQyxFQUFNOVQsS0FBS3FRLE1BQU0sR0FTckIsT0FSb0IsSUFBaEJyUSxLQUFLc0IsT0FDUHdTLEdBQXVCLFNBQWhCOVQsS0FBS3FRLE1BQU0sR0FDTyxJQUFoQnJRLEtBQUtzQixRQUFrQyxJQUFsQnRCLEtBQUtxUSxNQUFNLEdBRXpDeUQsR0FBTyxpQkFBb0MsU0FBaEI5VCxLQUFLcVEsTUFBTSxHQUM3QnJRLEtBQUtzQixPQUFTLEdBQ3ZCOEIsR0FBTyxFQUFPLDhDQUVVLElBQWxCcEQsS0FBS29RLFVBQW1CMEQsRUFBTUEsR0FHeEM5RCxFQUFHL1AsVUFBVThULE9BQVMsV0FDcEIsT0FBTy9ULEtBQUttTSxTQUFTLEtBR3ZCNkQsRUFBRy9QLFVBQVUrVCxTQUFXLFNBQW1COUQsRUFBUTVPLEdBRWpELE9BREE4QixPQUF5QixJQUFYbEMsR0FDUGxCLEtBQUtpVSxZQUFZL1MsRUFBUWdQLEVBQVE1TyxJQUcxQzBPLEVBQUcvUCxVQUFVb1AsUUFBVSxTQUFrQmEsRUFBUTVPLEdBQy9DLE9BQU90QixLQUFLaVUsWUFBWXZTLE1BQU93TyxFQUFRNU8sSUFHekMwTyxFQUFHL1AsVUFBVWdVLFlBQWMsU0FBc0JDLEVBQVdoRSxFQUFRNU8sR0FDbEUsSUFBSVMsRUFBYS9CLEtBQUsrQixhQUNsQm9TLEVBQVk3UyxHQUFVMlAsS0FBS0MsSUFBSSxFQUFHblAsR0FDdENxQixFQUFPckIsR0FBY29TLEVBQVcseUNBQ2hDL1EsRUFBTytRLEVBQVksRUFBRywrQkFFdEJuVSxLQUFLNlIsUUFDTCxJQUdJbUIsRUFBR3pILEVBSEg2SSxFQUEwQixPQUFYbEUsRUFDZjFOLEVBQU0sSUFBSTBSLEVBQVVDLEdBR3BCRSxFQUFJclUsS0FBSzRFLFFBQ2IsR0FBS3dQLEVBWUUsQ0FDTCxJQUFLN0ksRUFBSSxHQUFJOEksRUFBRVgsU0FBVW5JLElBQ3ZCeUgsRUFBSXFCLEVBQUVDLE1BQU0sS0FDWkQsRUFBRUUsT0FBTyxHQUVUL1IsRUFBSStJLEdBQUt5SCxFQUdYLEtBQU96SCxFQUFJNEksRUFBVzVJLElBQ3BCL0ksRUFBSStJLEdBQUssTUFyQk0sQ0FFakIsSUFBS0EsRUFBSSxFQUFHQSxFQUFJNEksRUFBWXBTLEVBQVl3SixJQUN0Qy9JLEVBQUkrSSxHQUFLLEVBR1gsSUFBS0EsRUFBSSxHQUFJOEksRUFBRVgsU0FBVW5JLElBQ3ZCeUgsRUFBSXFCLEVBQUVDLE1BQU0sS0FDWkQsRUFBRUUsT0FBTyxHQUVUL1IsRUFBSTJSLEVBQVk1SSxFQUFJLEdBQUt5SCxFQWU3QixPQUFPeFEsR0FHTHlPLEtBQUt1RCxNQUNQeEUsRUFBRy9QLFVBQVV3VSxXQUFhLFNBQXFCOUMsR0FDN0MsT0FBTyxHQUFLVixLQUFLdUQsTUFBTTdDLElBR3pCM0IsRUFBRy9QLFVBQVV3VSxXQUFhLFNBQXFCOUMsR0FDN0MsSUFBSStDLEVBQUkvQyxFQUNKYixFQUFJLEVBaUJSLE9BaEJJNEQsR0FBSyxPQUNQNUQsR0FBSyxHQUNMNEQsS0FBTyxJQUVMQSxHQUFLLEtBQ1A1RCxHQUFLLEVBQ0w0RCxLQUFPLEdBRUxBLEdBQUssSUFDUDVELEdBQUssRUFDTDRELEtBQU8sR0FFTEEsR0FBSyxJQUNQNUQsR0FBSyxFQUNMNEQsS0FBTyxHQUVGNUQsRUFBSTRELEdBSWYxRSxFQUFHL1AsVUFBVTBVLFVBQVksU0FBb0JoRCxHQUUzQyxHQUFVLElBQU5BLEVBQVMsT0FBTyxHQUVwQixJQUFJK0MsRUFBSS9DLEVBQ0piLEVBQUksRUFvQlIsT0FuQnFCLElBQVosS0FBSjRELEtBQ0g1RCxHQUFLLEdBQ0w0RCxLQUFPLElBRVUsSUFBVixJQUFKQSxLQUNINUQsR0FBSyxFQUNMNEQsS0FBTyxHQUVTLElBQVQsR0FBSkEsS0FDSDVELEdBQUssRUFDTDRELEtBQU8sR0FFUyxJQUFULEVBQUpBLEtBQ0g1RCxHQUFLLEVBQ0w0RCxLQUFPLEdBRVMsSUFBVCxFQUFKQSxJQUNINUQsSUFFS0EsR0FJVGQsRUFBRy9QLFVBQVUyVSxVQUFZLFdBQ3ZCLElBQUlqRCxFQUFJM1IsS0FBS3FRLE1BQU1yUSxLQUFLc0IsT0FBUyxHQUM3QnVULEVBQUs3VSxLQUFLeVUsV0FBVzlDLEdBQ3pCLE9BQTJCLElBQW5CM1IsS0FBS3NCLE9BQVMsR0FBVXVULEdBaUJsQzdFLEVBQUcvUCxVQUFVNlUsU0FBVyxXQUN0QixHQUFJOVUsS0FBSzBULFNBQVUsT0FBTyxFQUcxQixJQURBLElBQUk1QyxFQUFJLEVBQ0N2RixFQUFJLEVBQUdBLEVBQUl2TCxLQUFLc0IsT0FBUWlLLElBQUssQ0FDcEMsSUFBSXlILEVBQUloVCxLQUFLMlUsVUFBVTNVLEtBQUtxUSxNQUFNOUUsSUFFbEMsR0FEQXVGLEdBQUtrQyxFQUNLLEtBQU5BLEVBQVUsTUFFaEIsT0FBT2xDLEdBR1RkLEVBQUcvUCxVQUFVOEIsV0FBYSxXQUN4QixPQUFPa1AsS0FBS1MsS0FBSzFSLEtBQUs0VSxZQUFjLElBR3RDNUUsRUFBRy9QLFVBQVU4VSxPQUFTLFNBQWlCQyxHQUNyQyxPQUFzQixJQUFsQmhWLEtBQUtvUSxTQUNBcFEsS0FBS2lWLE1BQU1DLE1BQU1GLEdBQU9HLE1BQU0sR0FFaENuVixLQUFLNEUsU0FHZG9MLEVBQUcvUCxVQUFVbVYsU0FBVyxTQUFtQkosR0FDekMsT0FBSWhWLEtBQUtxVixNQUFNTCxFQUFRLEdBQ2RoVixLQUFLc1YsS0FBS04sR0FBT0csTUFBTSxHQUFHSSxPQUU1QnZWLEtBQUs0RSxTQUdkb0wsRUFBRy9QLFVBQVV1VixNQUFRLFdBQ25CLE9BQXlCLElBQWxCeFYsS0FBS29RLFVBSWRKLEVBQUcvUCxVQUFVd1YsSUFBTSxXQUNqQixPQUFPelYsS0FBSzRFLFFBQVEyUSxRQUd0QnZGLEVBQUcvUCxVQUFVc1YsS0FBTyxXQUtsQixPQUpLdlYsS0FBSzBULFdBQ1IxVCxLQUFLb1EsVUFBWSxHQUdacFEsTUFJVGdRLEVBQUcvUCxVQUFVeVYsS0FBTyxTQUFlNVAsR0FDakMsS0FBTzlGLEtBQUtzQixPQUFTd0UsRUFBSXhFLFFBQ3ZCdEIsS0FBS3FRLE1BQU1yUSxLQUFLc0IsVUFBWSxFQUc5QixJQUFLLElBQUlpSyxFQUFJLEVBQUdBLEVBQUl6RixFQUFJeEUsT0FBUWlLLElBQzlCdkwsS0FBS3FRLE1BQU05RSxHQUFLdkwsS0FBS3FRLE1BQU05RSxHQUFLekYsRUFBSXVLLE1BQU05RSxHQUc1QyxPQUFPdkwsS0FBSzZSLFNBR2Q3QixFQUFHL1AsVUFBVTBWLElBQU0sU0FBYzdQLEdBRS9CLE9BREExQyxFQUEwQyxJQUFsQ3BELEtBQUtvUSxTQUFXdEssRUFBSXNLLFdBQ3JCcFEsS0FBSzBWLEtBQUs1UCxJQUluQmtLLEVBQUcvUCxVQUFVMlYsR0FBSyxTQUFhOVAsR0FDN0IsT0FBSTlGLEtBQUtzQixPQUFTd0UsRUFBSXhFLE9BQWV0QixLQUFLNEUsUUFBUStRLElBQUk3UCxHQUMvQ0EsRUFBSWxCLFFBQVErUSxJQUFJM1YsT0FHekJnUSxFQUFHL1AsVUFBVTRWLElBQU0sU0FBYy9QLEdBQy9CLE9BQUk5RixLQUFLc0IsT0FBU3dFLEVBQUl4RSxPQUFldEIsS0FBSzRFLFFBQVE4USxLQUFLNVAsR0FDaERBLEVBQUlsQixRQUFROFEsS0FBSzFWLE9BSTFCZ1EsRUFBRy9QLFVBQVU2VixNQUFRLFNBQWdCaFEsR0FFbkMsSUFBSWtOLEVBRUZBLEVBREVoVCxLQUFLc0IsT0FBU3dFLEVBQUl4RSxPQUNoQndFLEVBRUE5RixLQUdOLElBQUssSUFBSXVMLEVBQUksRUFBR0EsRUFBSXlILEVBQUUxUixPQUFRaUssSUFDNUJ2TCxLQUFLcVEsTUFBTTlFLEdBQUt2TCxLQUFLcVEsTUFBTTlFLEdBQUt6RixFQUFJdUssTUFBTTlFLEdBSzVDLE9BRkF2TCxLQUFLc0IsT0FBUzBSLEVBQUUxUixPQUVUdEIsS0FBSzZSLFNBR2Q3QixFQUFHL1AsVUFBVThWLEtBQU8sU0FBZWpRLEdBRWpDLE9BREExQyxFQUEwQyxJQUFsQ3BELEtBQUtvUSxTQUFXdEssRUFBSXNLLFdBQ3JCcFEsS0FBSzhWLE1BQU1oUSxJQUlwQmtLLEVBQUcvUCxVQUFVK1YsSUFBTSxTQUFjbFEsR0FDL0IsT0FBSTlGLEtBQUtzQixPQUFTd0UsRUFBSXhFLE9BQWV0QixLQUFLNEUsUUFBUW1SLEtBQUtqUSxHQUNoREEsRUFBSWxCLFFBQVFtUixLQUFLL1YsT0FHMUJnUSxFQUFHL1AsVUFBVWdXLEtBQU8sU0FBZW5RLEdBQ2pDLE9BQUk5RixLQUFLc0IsT0FBU3dFLEVBQUl4RSxPQUFldEIsS0FBSzRFLFFBQVFrUixNQUFNaFEsR0FDakRBLEVBQUlsQixRQUFRa1IsTUFBTTlWLE9BSTNCZ1EsRUFBRy9QLFVBQVVpVyxNQUFRLFNBQWdCcFEsR0FFbkMsSUFBSWlOLEVBQ0FDLEVBQ0FoVCxLQUFLc0IsT0FBU3dFLEVBQUl4RSxRQUNwQnlSLEVBQUkvUyxLQUNKZ1QsRUFBSWxOLElBRUppTixFQUFJak4sRUFDSmtOLEVBQUloVCxNQUdOLElBQUssSUFBSXVMLEVBQUksRUFBR0EsRUFBSXlILEVBQUUxUixPQUFRaUssSUFDNUJ2TCxLQUFLcVEsTUFBTTlFLEdBQUt3SCxFQUFFMUMsTUFBTTlFLEdBQUt5SCxFQUFFM0MsTUFBTTlFLEdBR3ZDLEdBQUl2TCxPQUFTK1MsRUFDWCxLQUFPeEgsRUFBSXdILEVBQUV6UixPQUFRaUssSUFDbkJ2TCxLQUFLcVEsTUFBTTlFLEdBQUt3SCxFQUFFMUMsTUFBTTlFLEdBTTVCLE9BRkF2TCxLQUFLc0IsT0FBU3lSLEVBQUV6UixPQUVUdEIsS0FBSzZSLFNBR2Q3QixFQUFHL1AsVUFBVWtXLEtBQU8sU0FBZXJRLEdBRWpDLE9BREExQyxFQUEwQyxJQUFsQ3BELEtBQUtvUSxTQUFXdEssRUFBSXNLLFdBQ3JCcFEsS0FBS2tXLE1BQU1wUSxJQUlwQmtLLEVBQUcvUCxVQUFVbVcsSUFBTSxTQUFjdFEsR0FDL0IsT0FBSTlGLEtBQUtzQixPQUFTd0UsRUFBSXhFLE9BQWV0QixLQUFLNEUsUUFBUXVSLEtBQUtyUSxHQUNoREEsRUFBSWxCLFFBQVF1UixLQUFLblcsT0FHMUJnUSxFQUFHL1AsVUFBVW9XLEtBQU8sU0FBZXZRLEdBQ2pDLE9BQUk5RixLQUFLc0IsT0FBU3dFLEVBQUl4RSxPQUFldEIsS0FBSzRFLFFBQVFzUixNQUFNcFEsR0FDakRBLEVBQUlsQixRQUFRc1IsTUFBTWxXLE9BSTNCZ1EsRUFBRy9QLFVBQVVpVixNQUFRLFNBQWdCRixHQUNuQzVSLEVBQXdCLGlCQUFWNFIsR0FBc0JBLEdBQVMsR0FFN0MsSUFBSXNCLEVBQXNDLEVBQXhCckYsS0FBS1MsS0FBS3NELEVBQVEsSUFDaEN1QixFQUFXdkIsRUFBUSxHQUd2QmhWLEtBQUt1UyxRQUFRK0QsR0FFVEMsRUFBVyxHQUNiRCxJQUlGLElBQUssSUFBSS9LLEVBQUksRUFBR0EsRUFBSStLLEVBQWEvSyxJQUMvQnZMLEtBQUtxUSxNQUFNOUUsR0FBc0IsVUFBaEJ2TCxLQUFLcVEsTUFBTTlFLEdBUzlCLE9BTElnTCxFQUFXLElBQ2J2VyxLQUFLcVEsTUFBTTlFLElBQU12TCxLQUFLcVEsTUFBTTlFLEdBQU0sVUFBYyxHQUFLZ0wsR0FJaER2VyxLQUFLNlIsU0FHZDdCLEVBQUcvUCxVQUFVcVYsS0FBTyxTQUFlTixHQUNqQyxPQUFPaFYsS0FBSzRFLFFBQVFzUSxNQUFNRixJQUk1QmhGLEVBQUcvUCxVQUFVdVcsS0FBTyxTQUFlQyxFQUFLNVEsR0FDdEN6QyxFQUFzQixpQkFBUnFULEdBQW9CQSxHQUFPLEdBRXpDLElBQUk3RSxFQUFPNkUsRUFBTSxHQUFNLEVBQ25CQyxFQUFPRCxFQUFNLEdBVWpCLE9BUkF6VyxLQUFLdVMsUUFBUVgsRUFBTSxHQUdqQjVSLEtBQUtxUSxNQUFNdUIsR0FEVC9MLEVBQ2dCN0YsS0FBS3FRLE1BQU11QixHQUFRLEdBQUs4RSxFQUV4QjFXLEtBQUtxUSxNQUFNdUIsS0FBUyxHQUFLOEUsR0FHdEMxVyxLQUFLNlIsU0FJZDdCLEVBQUcvUCxVQUFVMFcsS0FBTyxTQUFlN1EsR0FDakMsSUFBSWdMLEVBa0JBaUMsRUFBR0MsRUFmUCxHQUFzQixJQUFsQmhULEtBQUtvUSxVQUFtQyxJQUFqQnRLLEVBQUlzSyxTQUk3QixPQUhBcFEsS0FBS29RLFNBQVcsRUFDaEJVLEVBQUk5USxLQUFLNFcsS0FBSzlRLEdBQ2Q5RixLQUFLb1EsVUFBWSxFQUNWcFEsS0FBS3dTLFlBR1AsR0FBc0IsSUFBbEJ4UyxLQUFLb1EsVUFBbUMsSUFBakJ0SyxFQUFJc0ssU0FJcEMsT0FIQXRLLEVBQUlzSyxTQUFXLEVBQ2ZVLEVBQUk5USxLQUFLNFcsS0FBSzlRLEdBQ2RBLEVBQUlzSyxTQUFXLEVBQ1JVLEVBQUUwQixZQUtQeFMsS0FBS3NCLE9BQVN3RSxFQUFJeEUsUUFDcEJ5UixFQUFJL1MsS0FDSmdULEVBQUlsTixJQUVKaU4sRUFBSWpOLEVBQ0prTixFQUFJaFQsTUFJTixJQURBLElBQUlrVCxFQUFRLEVBQ0gzSCxFQUFJLEVBQUdBLEVBQUl5SCxFQUFFMVIsT0FBUWlLLElBQzVCdUYsR0FBa0IsRUFBYmlDLEVBQUUxQyxNQUFNOUUsS0FBd0IsRUFBYnlILEVBQUUzQyxNQUFNOUUsSUFBVTJILEVBQzFDbFQsS0FBS3FRLE1BQU05RSxHQUFTLFNBQUp1RixFQUNoQm9DLEVBQVFwQyxJQUFNLEdBRWhCLEtBQWlCLElBQVZvQyxHQUFlM0gsRUFBSXdILEVBQUV6UixPQUFRaUssSUFDbEN1RixHQUFrQixFQUFiaUMsRUFBRTFDLE1BQU05RSxJQUFVMkgsRUFDdkJsVCxLQUFLcVEsTUFBTTlFLEdBQVMsU0FBSnVGLEVBQ2hCb0MsRUFBUXBDLElBQU0sR0FJaEIsR0FEQTlRLEtBQUtzQixPQUFTeVIsRUFBRXpSLE9BQ0YsSUFBVjRSLEVBQ0ZsVCxLQUFLcVEsTUFBTXJRLEtBQUtzQixRQUFVNFIsRUFDMUJsVCxLQUFLc0IsY0FFQSxHQUFJeVIsSUFBTS9TLEtBQ2YsS0FBT3VMLEVBQUl3SCxFQUFFelIsT0FBUWlLLElBQ25CdkwsS0FBS3FRLE1BQU05RSxHQUFLd0gsRUFBRTFDLE1BQU05RSxHQUk1QixPQUFPdkwsTUFJVGdRLEVBQUcvUCxVQUFVNFcsSUFBTSxTQUFjL1EsR0FDL0IsSUFBSXRELEVBQ0osT0FBcUIsSUFBakJzRCxFQUFJc0ssVUFBb0MsSUFBbEJwUSxLQUFLb1EsVUFDN0J0SyxFQUFJc0ssU0FBVyxFQUNmNU4sRUFBTXhDLEtBQUs4VyxJQUFJaFIsR0FDZkEsRUFBSXNLLFVBQVksRUFDVDVOLEdBQ21CLElBQWpCc0QsRUFBSXNLLFVBQW9DLElBQWxCcFEsS0FBS29RLFVBQ3BDcFEsS0FBS29RLFNBQVcsRUFDaEI1TixFQUFNc0QsRUFBSWdSLElBQUk5VyxNQUNkQSxLQUFLb1EsU0FBVyxFQUNUNU4sR0FHTHhDLEtBQUtzQixPQUFTd0UsRUFBSXhFLE9BQWV0QixLQUFLNEUsUUFBUStSLEtBQUs3USxHQUVoREEsRUFBSWxCLFFBQVErUixLQUFLM1csT0FJMUJnUSxFQUFHL1AsVUFBVTJXLEtBQU8sU0FBZTlRLEdBRWpDLEdBQXFCLElBQWpCQSxFQUFJc0ssU0FBZ0IsQ0FDdEJ0SyxFQUFJc0ssU0FBVyxFQUNmLElBQUlVLEVBQUk5USxLQUFLMlcsS0FBSzdRLEdBRWxCLE9BREFBLEVBQUlzSyxTQUFXLEVBQ1JVLEVBQUUwQixZQUdKLEdBQXNCLElBQWxCeFMsS0FBS29RLFNBSWQsT0FIQXBRLEtBQUtvUSxTQUFXLEVBQ2hCcFEsS0FBSzJXLEtBQUs3USxHQUNWOUYsS0FBS29RLFNBQVcsRUFDVHBRLEtBQUt3UyxZQUlkLElBV0lPLEVBQUdDLEVBWEgzQixFQUFNclIsS0FBS3FSLElBQUl2TCxHQUduQixHQUFZLElBQVJ1TCxFQUlGLE9BSEFyUixLQUFLb1EsU0FBVyxFQUNoQnBRLEtBQUtzQixPQUFTLEVBQ2R0QixLQUFLcVEsTUFBTSxHQUFLLEVBQ1RyUSxLQUtMcVIsRUFBTSxHQUNSMEIsRUFBSS9TLEtBQ0pnVCxFQUFJbE4sSUFFSmlOLEVBQUlqTixFQUNKa04sRUFBSWhULE1BSU4sSUFEQSxJQUFJa1QsRUFBUSxFQUNIM0gsRUFBSSxFQUFHQSxFQUFJeUgsRUFBRTFSLE9BQVFpSyxJQUU1QjJILEdBREFwQyxHQUFrQixFQUFiaUMsRUFBRTFDLE1BQU05RSxLQUF3QixFQUFieUgsRUFBRTNDLE1BQU05RSxJQUFVMkgsSUFDN0IsR0FDYmxULEtBQUtxUSxNQUFNOUUsR0FBUyxTQUFKdUYsRUFFbEIsS0FBaUIsSUFBVm9DLEdBQWUzSCxFQUFJd0gsRUFBRXpSLE9BQVFpSyxJQUVsQzJILEdBREFwQyxHQUFrQixFQUFiaUMsRUFBRTFDLE1BQU05RSxJQUFVMkgsSUFDVixHQUNibFQsS0FBS3FRLE1BQU05RSxHQUFTLFNBQUp1RixFQUlsQixHQUFjLElBQVZvQyxHQUFlM0gsRUFBSXdILEVBQUV6UixRQUFVeVIsSUFBTS9TLEtBQ3ZDLEtBQU91TCxFQUFJd0gsRUFBRXpSLE9BQVFpSyxJQUNuQnZMLEtBQUtxUSxNQUFNOUUsR0FBS3dILEVBQUUxQyxNQUFNOUUsR0FVNUIsT0FOQXZMLEtBQUtzQixPQUFTMlAsS0FBS0MsSUFBSWxSLEtBQUtzQixPQUFRaUssR0FFaEN3SCxJQUFNL1MsT0FDUkEsS0FBS29RLFNBQVcsR0FHWHBRLEtBQUs2UixTQUlkN0IsRUFBRy9QLFVBQVU2VyxJQUFNLFNBQWNoUixHQUMvQixPQUFPOUYsS0FBSzRFLFFBQVFnUyxLQUFLOVEsSUErQzNCLElBQUlpUixFQUFjLFNBQXNCakUsRUFBTWhOLEVBQUtoRCxHQUNqRCxJQUlJbVEsRUFDQStELEVBQ0FuQyxFQU5BOUIsRUFBSUQsRUFBS3pDLE1BQ1QyQyxFQUFJbE4sRUFBSXVLLE1BQ1I0RyxFQUFJblUsRUFBSXVOLE1BQ1JNLEVBQUksRUFJSnVHLEVBQVksRUFBUG5FLEVBQUUsR0FDUG9FLEVBQVcsS0FBTEQsRUFDTkUsRUFBTUYsSUFBTyxHQUNiRyxFQUFZLEVBQVB0RSxFQUFFLEdBQ1B1RSxFQUFXLEtBQUxELEVBQ05FLEVBQU1GLElBQU8sR0FDYkcsRUFBWSxFQUFQekUsRUFBRSxHQUNQMEUsRUFBVyxLQUFMRCxFQUNORSxFQUFNRixJQUFPLEdBQ2JHLEVBQVksRUFBUDVFLEVBQUUsR0FDUDZFLEVBQVcsS0FBTEQsRUFDTkUsRUFBTUYsSUFBTyxHQUNiRyxFQUFZLEVBQVAvRSxFQUFFLEdBQ1BnRixFQUFXLEtBQUxELEVBQ05FLEVBQU1GLElBQU8sR0FDYkcsRUFBWSxFQUFQbEYsRUFBRSxHQUNQbUYsRUFBVyxLQUFMRCxFQUNORSxFQUFNRixJQUFPLEdBQ2JHLEVBQVksRUFBUHJGLEVBQUUsR0FDUHNGLEVBQVcsS0FBTEQsRUFDTkUsRUFBTUYsSUFBTyxHQUNiRyxFQUFZLEVBQVB4RixFQUFFLEdBQ1B5RixFQUFXLEtBQUxELEVBQ05FLEVBQU1GLElBQU8sR0FDYkcsRUFBWSxFQUFQM0YsRUFBRSxHQUNQNEYsRUFBVyxLQUFMRCxFQUNORSxFQUFNRixJQUFPLEdBQ2JHLEVBQVksRUFBUDlGLEVBQUUsR0FDUCtGLEVBQVcsS0FBTEQsRUFDTkUsRUFBTUYsSUFBTyxHQUNiRyxFQUFZLEVBQVBoRyxFQUFFLEdBQ1BpRyxFQUFXLEtBQUxELEVBQ05FLEVBQU1GLElBQU8sR0FDYkcsRUFBWSxFQUFQbkcsRUFBRSxHQUNQb0csRUFBVyxLQUFMRCxFQUNORSxFQUFNRixJQUFPLEdBQ2JHLEVBQVksRUFBUHRHLEVBQUUsR0FDUHVHLEVBQVcsS0FBTEQsRUFDTkUsRUFBTUYsSUFBTyxHQUNiRyxFQUFZLEVBQVB6RyxFQUFFLEdBQ1AwRyxFQUFXLEtBQUxELEVBQ05FLEVBQU1GLElBQU8sR0FDYkcsRUFBWSxFQUFQNUcsRUFBRSxHQUNQNkcsRUFBVyxLQUFMRCxFQUNORSxHQUFNRixJQUFPLEdBQ2JHLEdBQVksRUFBUC9HLEVBQUUsR0FDUGdILEdBQVcsS0FBTEQsR0FDTkUsR0FBTUYsS0FBTyxHQUNiRyxHQUFZLEVBQVBsSCxFQUFFLEdBQ1BtSCxHQUFXLEtBQUxELEdBQ05FLEdBQU1GLEtBQU8sR0FDYkcsR0FBWSxFQUFQckgsRUFBRSxHQUNQc0gsR0FBVyxLQUFMRCxHQUNORSxHQUFNRixLQUFPLEdBQ2JHLEdBQVksRUFBUHhILEVBQUUsR0FDUHlILEdBQVcsS0FBTEQsR0FDTkUsR0FBTUYsS0FBTyxHQUNiRyxHQUFZLEVBQVAzSCxFQUFFLEdBQ1A0SCxHQUFXLEtBQUxELEdBQ05FLEdBQU1GLEtBQU8sR0FFakI3WCxFQUFJc04sU0FBVzBDLEVBQUsxQyxTQUFXdEssRUFBSXNLLFNBQ25DdE4sRUFBSXhCLE9BQVMsR0FNYixJQUFJd1osSUFBUW5LLEdBSlpzQyxFQUFLaEMsS0FBSzhKLEtBQUs1RCxFQUFLOEIsSUFJRSxLQUFhLE1BRm5DakMsR0FEQUEsRUFBTS9GLEtBQUs4SixLQUFLNUQsRUFBSytCLElBQ1JqSSxLQUFLOEosS0FBSzNELEVBQUs2QixHQUFRLEtBRVUsSUFBTyxFQUNyRHRJLElBRkFrRSxFQUFLNUQsS0FBSzhKLEtBQUszRCxFQUFLOEIsS0FFUGxDLElBQVEsSUFBTyxJQUFNOEQsS0FBTyxJQUFPLEVBQ2hEQSxJQUFNLFNBRU43SCxFQUFLaEMsS0FBSzhKLEtBQUt6RCxFQUFLMkIsR0FFcEJqQyxHQURBQSxFQUFNL0YsS0FBSzhKLEtBQUt6RCxFQUFLNEIsSUFDUmpJLEtBQUs4SixLQUFLeEQsRUFBSzBCLEdBQVEsRUFDcENwRSxFQUFLNUQsS0FBSzhKLEtBQUt4RCxFQUFLMkIsR0FLcEIsSUFBSThCLElBQVFySyxHQUpac0MsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLNUQsRUFBS2lDLEdBQVEsR0FJWixLQUFhLE1BRm5DcEMsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLNUQsRUFBS2tDLEdBQVEsR0FDdkJwSSxLQUFLOEosS0FBSzNELEVBQUtnQyxHQUFRLEtBRVUsSUFBTyxFQUNyRHpJLElBRkFrRSxFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUszRCxFQUFLaUMsR0FBUSxJQUVyQnJDLElBQVEsSUFBTyxJQUFNZ0UsS0FBTyxJQUFPLEVBQ2hEQSxJQUFNLFNBRU4vSCxFQUFLaEMsS0FBSzhKLEtBQUt0RCxFQUFLd0IsR0FFcEJqQyxHQURBQSxFQUFNL0YsS0FBSzhKLEtBQUt0RCxFQUFLeUIsSUFDUmpJLEtBQUs4SixLQUFLckQsRUFBS3VCLEdBQVEsRUFDcENwRSxFQUFLNUQsS0FBSzhKLEtBQUtyRCxFQUFLd0IsR0FDcEJqRyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUt6RCxFQUFLOEIsR0FBUSxFQUVsQ3BDLEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS3pELEVBQUsrQixHQUFRLEdBQ3ZCcEksS0FBSzhKLEtBQUt4RCxFQUFLNkIsR0FBUSxFQUNwQ3ZFLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS3hELEVBQUs4QixHQUFRLEVBS2xDLElBQUk0QixJQUFRdEssR0FKWnNDLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBSzVELEVBQUtvQyxHQUFRLEdBSVosS0FBYSxNQUZuQ3ZDLEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBSzVELEVBQUtxQyxHQUFRLEdBQ3ZCdkksS0FBSzhKLEtBQUszRCxFQUFLbUMsR0FBUSxLQUVVLElBQU8sRUFDckQ1SSxJQUZBa0UsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLM0QsRUFBS29DLEdBQVEsSUFFckJ4QyxJQUFRLElBQU8sSUFBTWlFLEtBQU8sSUFBTyxFQUNoREEsSUFBTSxTQUVOaEksRUFBS2hDLEtBQUs4SixLQUFLbkQsRUFBS3FCLEdBRXBCakMsR0FEQUEsRUFBTS9GLEtBQUs4SixLQUFLbkQsRUFBS3NCLElBQ1JqSSxLQUFLOEosS0FBS2xELEVBQUtvQixHQUFRLEVBQ3BDcEUsRUFBSzVELEtBQUs4SixLQUFLbEQsRUFBS3FCLEdBQ3BCakcsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLdEQsRUFBSzJCLEdBQVEsRUFFbENwQyxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUt0RCxFQUFLNEIsR0FBUSxHQUN2QnBJLEtBQUs4SixLQUFLckQsRUFBSzBCLEdBQVEsRUFDcEN2RSxFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUtyRCxFQUFLMkIsR0FBUSxFQUNsQ3BHLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS3pELEVBQUtpQyxHQUFRLEVBRWxDdkMsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLekQsRUFBS2tDLEdBQVEsR0FDdkJ2SSxLQUFLOEosS0FBS3hELEVBQUtnQyxHQUFRLEVBQ3BDMUUsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLeEQsRUFBS2lDLEdBQVEsRUFLbEMsSUFBSTBCLElBQVF2SyxHQUpac0MsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLNUQsRUFBS3VDLEdBQVEsR0FJWixLQUFhLE1BRm5DMUMsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLNUQsRUFBS3dDLEdBQVEsR0FDdkIxSSxLQUFLOEosS0FBSzNELEVBQUtzQyxHQUFRLEtBRVUsSUFBTyxFQUNyRC9JLElBRkFrRSxFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUszRCxFQUFLdUMsR0FBUSxJQUVyQjNDLElBQVEsSUFBTyxJQUFNa0UsS0FBTyxJQUFPLEVBQ2hEQSxJQUFNLFNBRU5qSSxFQUFLaEMsS0FBSzhKLEtBQUtoRCxFQUFLa0IsR0FFcEJqQyxHQURBQSxFQUFNL0YsS0FBSzhKLEtBQUtoRCxFQUFLbUIsSUFDUmpJLEtBQUs4SixLQUFLL0MsRUFBS2lCLEdBQVEsRUFDcENwRSxFQUFLNUQsS0FBSzhKLEtBQUsvQyxFQUFLa0IsR0FDcEJqRyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUtuRCxFQUFLd0IsR0FBUSxFQUVsQ3BDLEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS25ELEVBQUt5QixHQUFRLEdBQ3ZCcEksS0FBSzhKLEtBQUtsRCxFQUFLdUIsR0FBUSxFQUNwQ3ZFLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS2xELEVBQUt3QixHQUFRLEVBQ2xDcEcsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLdEQsRUFBSzhCLEdBQVEsRUFFbEN2QyxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUt0RCxFQUFLK0IsR0FBUSxHQUN2QnZJLEtBQUs4SixLQUFLckQsRUFBSzZCLEdBQVEsRUFDcEMxRSxFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUtyRCxFQUFLOEIsR0FBUSxFQUNsQ3ZHLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS3pELEVBQUtvQyxHQUFRLEVBRWxDMUMsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLekQsRUFBS3FDLEdBQVEsR0FDdkIxSSxLQUFLOEosS0FBS3hELEVBQUttQyxHQUFRLEVBQ3BDN0UsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLeEQsRUFBS29DLEdBQVEsRUFLbEMsSUFBSXdCLElBQVF4SyxHQUpac0MsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLNUQsRUFBSzBDLEdBQVEsR0FJWixLQUFhLE1BRm5DN0MsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLNUQsRUFBSzJDLElBQVEsR0FDdkI3SSxLQUFLOEosS0FBSzNELEVBQUt5QyxHQUFRLEtBRVUsSUFBTyxFQUNyRGxKLElBRkFrRSxFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUszRCxFQUFLMEMsSUFBUSxJQUVyQjlDLElBQVEsSUFBTyxJQUFNbUUsS0FBTyxJQUFPLEVBQ2hEQSxJQUFNLFNBRU5sSSxFQUFLaEMsS0FBSzhKLEtBQUs3QyxFQUFLZSxHQUVwQmpDLEdBREFBLEVBQU0vRixLQUFLOEosS0FBSzdDLEVBQUtnQixJQUNSakksS0FBSzhKLEtBQUs1QyxFQUFLYyxHQUFRLEVBQ3BDcEUsRUFBSzVELEtBQUs4SixLQUFLNUMsRUFBS2UsR0FDcEJqRyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUtoRCxFQUFLcUIsR0FBUSxFQUVsQ3BDLEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS2hELEVBQUtzQixHQUFRLEdBQ3ZCcEksS0FBSzhKLEtBQUsvQyxFQUFLb0IsR0FBUSxFQUNwQ3ZFLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBSy9DLEVBQUtxQixHQUFRLEVBQ2xDcEcsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLbkQsRUFBSzJCLEdBQVEsRUFFbEN2QyxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUtuRCxFQUFLNEIsR0FBUSxHQUN2QnZJLEtBQUs4SixLQUFLbEQsRUFBSzBCLEdBQVEsRUFDcEMxRSxFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUtsRCxFQUFLMkIsR0FBUSxFQUNsQ3ZHLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS3RELEVBQUtpQyxHQUFRLEVBRWxDMUMsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLdEQsRUFBS2tDLEdBQVEsR0FDdkIxSSxLQUFLOEosS0FBS3JELEVBQUtnQyxHQUFRLEVBQ3BDN0UsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLckQsRUFBS2lDLEdBQVEsRUFDbEMxRyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUt6RCxFQUFLdUMsR0FBUSxFQUVsQzdDLEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS3pELEVBQUt3QyxJQUFRLEdBQ3ZCN0ksS0FBSzhKLEtBQUt4RCxFQUFLc0MsR0FBUSxFQUNwQ2hGLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS3hELEVBQUt1QyxJQUFRLEVBS2xDLElBQUlzQixJQUFRekssR0FKWnNDLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBSzVELEVBQUs2QyxJQUFRLEdBSVosS0FBYSxNQUZuQ2hELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBSzVELEVBQUs4QyxJQUFRLEdBQ3ZCaEosS0FBSzhKLEtBQUszRCxFQUFLNEMsSUFBUSxLQUVVLElBQU8sRUFDckRySixJQUZBa0UsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLM0QsRUFBSzZDLElBQVEsSUFFckJqRCxJQUFRLElBQU8sSUFBTW9FLEtBQU8sSUFBTyxFQUNoREEsSUFBTSxTQUVObkksRUFBS2hDLEtBQUs4SixLQUFLMUMsRUFBS1ksR0FFcEJqQyxHQURBQSxFQUFNL0YsS0FBSzhKLEtBQUsxQyxFQUFLYSxJQUNSakksS0FBSzhKLEtBQUt6QyxFQUFLVyxHQUFRLEVBQ3BDcEUsRUFBSzVELEtBQUs4SixLQUFLekMsRUFBS1ksR0FDcEJqRyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUs3QyxFQUFLa0IsR0FBUSxFQUVsQ3BDLEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBSzdDLEVBQUttQixHQUFRLEdBQ3ZCcEksS0FBSzhKLEtBQUs1QyxFQUFLaUIsR0FBUSxFQUNwQ3ZFLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBSzVDLEVBQUtrQixHQUFRLEVBQ2xDcEcsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLaEQsRUFBS3dCLEdBQVEsRUFFbEN2QyxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUtoRCxFQUFLeUIsR0FBUSxHQUN2QnZJLEtBQUs4SixLQUFLL0MsRUFBS3VCLEdBQVEsRUFDcEMxRSxFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUsvQyxFQUFLd0IsR0FBUSxFQUNsQ3ZHLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS25ELEVBQUs4QixHQUFRLEVBRWxDMUMsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLbkQsRUFBSytCLEdBQVEsR0FDdkIxSSxLQUFLOEosS0FBS2xELEVBQUs2QixHQUFRLEVBQ3BDN0UsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLbEQsRUFBSzhCLEdBQVEsRUFDbEMxRyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUt0RCxFQUFLb0MsR0FBUSxFQUVsQzdDLEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS3RELEVBQUtxQyxJQUFRLEdBQ3ZCN0ksS0FBSzhKLEtBQUtyRCxFQUFLbUMsR0FBUSxFQUNwQ2hGLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS3JELEVBQUtvQyxJQUFRLEVBQ2xDN0csRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLekQsRUFBSzBDLElBQVEsRUFFbENoRCxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUt6RCxFQUFLMkMsSUFBUSxHQUN2QmhKLEtBQUs4SixLQUFLeEQsRUFBS3lDLElBQVEsRUFDcENuRixFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUt4RCxFQUFLMEMsSUFBUSxFQUtsQyxJQUFJb0IsSUFBUTFLLEdBSlpzQyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUs1RCxFQUFLZ0QsSUFBUSxHQUlaLEtBQWEsTUFGbkNuRCxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUs1RCxFQUFLaUQsSUFBUSxHQUN2Qm5KLEtBQUs4SixLQUFLM0QsRUFBSytDLElBQVEsS0FFVSxJQUFPLEVBQ3JEeEosSUFGQWtFLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBSzNELEVBQUtnRCxJQUFRLElBRXJCcEQsSUFBUSxJQUFPLElBQU1xRSxLQUFPLElBQU8sRUFDaERBLElBQU0sU0FFTnBJLEVBQUtoQyxLQUFLOEosS0FBS3ZDLEVBQUtTLEdBRXBCakMsR0FEQUEsRUFBTS9GLEtBQUs4SixLQUFLdkMsRUFBS1UsSUFDUmpJLEtBQUs4SixLQUFLdEMsRUFBS1EsR0FBUSxFQUNwQ3BFLEVBQUs1RCxLQUFLOEosS0FBS3RDLEVBQUtTLEdBQ3BCakcsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLMUMsRUFBS2UsR0FBUSxFQUVsQ3BDLEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBSzFDLEVBQUtnQixHQUFRLEdBQ3ZCcEksS0FBSzhKLEtBQUt6QyxFQUFLYyxHQUFRLEVBQ3BDdkUsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLekMsRUFBS2UsR0FBUSxFQUNsQ3BHLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBSzdDLEVBQUtxQixHQUFRLEVBRWxDdkMsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLN0MsRUFBS3NCLEdBQVEsR0FDdkJ2SSxLQUFLOEosS0FBSzVDLEVBQUtvQixHQUFRLEVBQ3BDMUUsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLNUMsRUFBS3FCLEdBQVEsRUFDbEN2RyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUtoRCxFQUFLMkIsR0FBUSxFQUVsQzFDLEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS2hELEVBQUs0QixHQUFRLEdBQ3ZCMUksS0FBSzhKLEtBQUsvQyxFQUFLMEIsR0FBUSxFQUNwQzdFLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBSy9DLEVBQUsyQixHQUFRLEVBQ2xDMUcsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLbkQsRUFBS2lDLEdBQVEsRUFFbEM3QyxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUtuRCxFQUFLa0MsSUFBUSxHQUN2QjdJLEtBQUs4SixLQUFLbEQsRUFBS2dDLEdBQVEsRUFDcENoRixFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUtsRCxFQUFLaUMsSUFBUSxFQUNsQzdHLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS3RELEVBQUt1QyxJQUFRLEVBRWxDaEQsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLdEQsRUFBS3dDLElBQVEsR0FDdkJoSixLQUFLOEosS0FBS3JELEVBQUtzQyxJQUFRLEVBQ3BDbkYsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLckQsRUFBS3VDLElBQVEsRUFDbENoSCxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUt6RCxFQUFLNkMsSUFBUSxFQUVsQ25ELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS3pELEVBQUs4QyxJQUFRLEdBQ3ZCbkosS0FBSzhKLEtBQUt4RCxFQUFLNEMsSUFBUSxFQUNwQ3RGLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS3hELEVBQUs2QyxJQUFRLEVBS2xDLElBQUlrQixJQUFRM0ssR0FKWnNDLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBSzVELEVBQUttRCxJQUFRLEdBSVosS0FBYSxNQUZuQ3RELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBSzVELEVBQUtvRCxJQUFRLEdBQ3ZCdEosS0FBSzhKLEtBQUszRCxFQUFLa0QsSUFBUSxLQUVVLElBQU8sRUFDckQzSixJQUZBa0UsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLM0QsRUFBS21ELElBQVEsSUFFckJ2RCxJQUFRLElBQU8sSUFBTXNFLEtBQU8sSUFBTyxFQUNoREEsSUFBTSxTQUVOckksRUFBS2hDLEtBQUs4SixLQUFLcEMsRUFBS00sR0FFcEJqQyxHQURBQSxFQUFNL0YsS0FBSzhKLEtBQUtwQyxFQUFLTyxJQUNSakksS0FBSzhKLEtBQUtuQyxFQUFLSyxHQUFRLEVBQ3BDcEUsRUFBSzVELEtBQUs4SixLQUFLbkMsRUFBS00sR0FDcEJqRyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUt2QyxFQUFLWSxHQUFRLEVBRWxDcEMsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLdkMsRUFBS2EsR0FBUSxHQUN2QnBJLEtBQUs4SixLQUFLdEMsRUFBS1csR0FBUSxFQUNwQ3ZFLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS3RDLEVBQUtZLEdBQVEsRUFDbENwRyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUsxQyxFQUFLa0IsR0FBUSxFQUVsQ3ZDLEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBSzFDLEVBQUttQixHQUFRLEdBQ3ZCdkksS0FBSzhKLEtBQUt6QyxFQUFLaUIsR0FBUSxFQUNwQzFFLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS3pDLEVBQUtrQixHQUFRLEVBQ2xDdkcsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLN0MsRUFBS3dCLEdBQVEsRUFFbEMxQyxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUs3QyxFQUFLeUIsR0FBUSxHQUN2QjFJLEtBQUs4SixLQUFLNUMsRUFBS3VCLEdBQVEsRUFDcEM3RSxFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUs1QyxFQUFLd0IsR0FBUSxFQUNsQzFHLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS2hELEVBQUs4QixHQUFRLEVBRWxDN0MsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLaEQsRUFBSytCLElBQVEsR0FDdkI3SSxLQUFLOEosS0FBSy9DLEVBQUs2QixHQUFRLEVBQ3BDaEYsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLL0MsRUFBSzhCLElBQVEsRUFDbEM3RyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUtuRCxFQUFLb0MsSUFBUSxFQUVsQ2hELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS25ELEVBQUtxQyxJQUFRLEdBQ3ZCaEosS0FBSzhKLEtBQUtsRCxFQUFLbUMsSUFBUSxFQUNwQ25GLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS2xELEVBQUtvQyxJQUFRLEVBQ2xDaEgsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLdEQsRUFBSzBDLElBQVEsRUFFbENuRCxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUt0RCxFQUFLMkMsSUFBUSxHQUN2Qm5KLEtBQUs4SixLQUFLckQsRUFBS3lDLElBQVEsRUFDcEN0RixFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUtyRCxFQUFLMEMsSUFBUSxFQUNsQ25ILEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS3pELEVBQUtnRCxJQUFRLEVBRWxDdEQsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLekQsRUFBS2lELElBQVEsR0FDdkJ0SixLQUFLOEosS0FBS3hELEVBQUsrQyxJQUFRLEVBQ3BDekYsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLeEQsRUFBS2dELElBQVEsRUFLbEMsSUFBSWdCLElBQVE1SyxHQUpac0MsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLNUQsRUFBS3NELElBQVEsR0FJWixLQUFhLE1BRm5DekQsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLNUQsRUFBS3VELElBQVEsR0FDdkJ6SixLQUFLOEosS0FBSzNELEVBQUtxRCxJQUFRLEtBRVUsSUFBTyxFQUNyRDlKLElBRkFrRSxFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUszRCxFQUFLc0QsSUFBUSxJQUVyQjFELElBQVEsSUFBTyxJQUFNdUUsS0FBTyxJQUFPLEVBQ2hEQSxJQUFNLFNBRU50SSxFQUFLaEMsS0FBSzhKLEtBQUtqQyxFQUFLRyxHQUVwQmpDLEdBREFBLEVBQU0vRixLQUFLOEosS0FBS2pDLEVBQUtJLElBQ1JqSSxLQUFLOEosS0FBS2hDLEVBQUtFLEdBQVEsRUFDcENwRSxFQUFLNUQsS0FBSzhKLEtBQUtoQyxFQUFLRyxHQUNwQmpHLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS3BDLEVBQUtTLEdBQVEsRUFFbENwQyxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUtwQyxFQUFLVSxHQUFRLEdBQ3ZCcEksS0FBSzhKLEtBQUtuQyxFQUFLUSxHQUFRLEVBQ3BDdkUsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLbkMsRUFBS1MsR0FBUSxFQUNsQ3BHLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS3ZDLEVBQUtlLEdBQVEsRUFFbEN2QyxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUt2QyxFQUFLZ0IsR0FBUSxHQUN2QnZJLEtBQUs4SixLQUFLdEMsRUFBS2MsR0FBUSxFQUNwQzFFLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS3RDLEVBQUtlLEdBQVEsRUFDbEN2RyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUsxQyxFQUFLcUIsR0FBUSxFQUVsQzFDLEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBSzFDLEVBQUtzQixHQUFRLEdBQ3ZCMUksS0FBSzhKLEtBQUt6QyxFQUFLb0IsR0FBUSxFQUNwQzdFLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS3pDLEVBQUtxQixHQUFRLEVBQ2xDMUcsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLN0MsRUFBSzJCLEdBQVEsRUFFbEM3QyxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUs3QyxFQUFLNEIsSUFBUSxHQUN2QjdJLEtBQUs4SixLQUFLNUMsRUFBSzBCLEdBQVEsRUFDcENoRixFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUs1QyxFQUFLMkIsSUFBUSxFQUNsQzdHLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS2hELEVBQUtpQyxJQUFRLEVBRWxDaEQsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLaEQsRUFBS2tDLElBQVEsR0FDdkJoSixLQUFLOEosS0FBSy9DLEVBQUtnQyxJQUFRLEVBQ3BDbkYsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLL0MsRUFBS2lDLElBQVEsRUFDbENoSCxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUtuRCxFQUFLdUMsSUFBUSxFQUVsQ25ELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS25ELEVBQUt3QyxJQUFRLEdBQ3ZCbkosS0FBSzhKLEtBQUtsRCxFQUFLc0MsSUFBUSxFQUNwQ3RGLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS2xELEVBQUt1QyxJQUFRLEVBQ2xDbkgsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLdEQsRUFBSzZDLElBQVEsRUFFbEN0RCxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUt0RCxFQUFLOEMsSUFBUSxHQUN2QnRKLEtBQUs4SixLQUFLckQsRUFBSzRDLElBQVEsRUFDcEN6RixFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUtyRCxFQUFLNkMsSUFBUSxFQUNsQ3RILEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS3pELEVBQUttRCxJQUFRLEVBRWxDekQsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLekQsRUFBS29ELElBQVEsR0FDdkJ6SixLQUFLOEosS0FBS3hELEVBQUtrRCxJQUFRLEVBQ3BDNUYsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLeEQsRUFBS21ELElBQVEsRUFLbEMsSUFBSWMsSUFBUTdLLEdBSlpzQyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUs1RCxFQUFLeUQsSUFBUSxHQUlaLEtBQWEsTUFGbkM1RCxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUs1RCxFQUFLMEQsSUFBUSxHQUN2QjVKLEtBQUs4SixLQUFLM0QsRUFBS3dELElBQVEsS0FFVSxJQUFPLEVBQ3JEakssSUFGQWtFLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBSzNELEVBQUt5RCxJQUFRLElBRXJCN0QsSUFBUSxJQUFPLElBQU13RSxLQUFPLElBQU8sRUFDaERBLElBQU0sU0FFTnZJLEVBQUtoQyxLQUFLOEosS0FBS2pDLEVBQUtNLEdBRXBCcEMsR0FEQUEsRUFBTS9GLEtBQUs4SixLQUFLakMsRUFBS08sSUFDUnBJLEtBQUs4SixLQUFLaEMsRUFBS0ssR0FBUSxFQUNwQ3ZFLEVBQUs1RCxLQUFLOEosS0FBS2hDLEVBQUtNLEdBQ3BCcEcsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLcEMsRUFBS1ksR0FBUSxFQUVsQ3ZDLEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS3BDLEVBQUthLEdBQVEsR0FDdkJ2SSxLQUFLOEosS0FBS25DLEVBQUtXLEdBQVEsRUFDcEMxRSxFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUtuQyxFQUFLWSxHQUFRLEVBQ2xDdkcsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLdkMsRUFBS2tCLEdBQVEsRUFFbEMxQyxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUt2QyxFQUFLbUIsR0FBUSxHQUN2QjFJLEtBQUs4SixLQUFLdEMsRUFBS2lCLEdBQVEsRUFDcEM3RSxFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUt0QyxFQUFLa0IsR0FBUSxFQUNsQzFHLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBSzFDLEVBQUt3QixHQUFRLEVBRWxDN0MsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLMUMsRUFBS3lCLElBQVEsR0FDdkI3SSxLQUFLOEosS0FBS3pDLEVBQUt1QixHQUFRLEVBQ3BDaEYsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLekMsRUFBS3dCLElBQVEsRUFDbEM3RyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUs3QyxFQUFLOEIsSUFBUSxFQUVsQ2hELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBSzdDLEVBQUsrQixJQUFRLEdBQ3ZCaEosS0FBSzhKLEtBQUs1QyxFQUFLNkIsSUFBUSxFQUNwQ25GLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBSzVDLEVBQUs4QixJQUFRLEVBQ2xDaEgsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLaEQsRUFBS29DLElBQVEsRUFFbENuRCxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUtoRCxFQUFLcUMsSUFBUSxHQUN2Qm5KLEtBQUs4SixLQUFLL0MsRUFBS21DLElBQVEsRUFDcEN0RixFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUsvQyxFQUFLb0MsSUFBUSxFQUNsQ25ILEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS25ELEVBQUswQyxJQUFRLEVBRWxDdEQsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLbkQsRUFBSzJDLElBQVEsR0FDdkJ0SixLQUFLOEosS0FBS2xELEVBQUt5QyxJQUFRLEVBQ3BDekYsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLbEQsRUFBSzBDLElBQVEsRUFDbEN0SCxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUt0RCxFQUFLZ0QsSUFBUSxFQUVsQ3pELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS3RELEVBQUtpRCxJQUFRLEdBQ3ZCekosS0FBSzhKLEtBQUtyRCxFQUFLK0MsSUFBUSxFQUNwQzVGLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS3JELEVBQUtnRCxJQUFRLEVBS2xDLElBQUllLElBQVM5SyxHQUpic0MsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLekQsRUFBS3NELElBQVEsR0FJWCxLQUFhLE1BRnBDNUQsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLekQsRUFBS3VELElBQVEsR0FDdkI1SixLQUFLOEosS0FBS3hELEVBQUtxRCxJQUFRLEtBRVcsSUFBTyxFQUN0RGpLLElBRkFrRSxFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUt4RCxFQUFLc0QsSUFBUSxJQUVyQjdELElBQVEsSUFBTyxJQUFNeUUsS0FBUSxJQUFPLEVBQ2pEQSxJQUFPLFNBRVB4SSxFQUFLaEMsS0FBSzhKLEtBQUtqQyxFQUFLUyxHQUVwQnZDLEdBREFBLEVBQU0vRixLQUFLOEosS0FBS2pDLEVBQUtVLElBQ1J2SSxLQUFLOEosS0FBS2hDLEVBQUtRLEdBQVEsRUFDcEMxRSxFQUFLNUQsS0FBSzhKLEtBQUtoQyxFQUFLUyxHQUNwQnZHLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS3BDLEVBQUtlLEdBQVEsRUFFbEMxQyxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUtwQyxFQUFLZ0IsR0FBUSxHQUN2QjFJLEtBQUs4SixLQUFLbkMsRUFBS2MsR0FBUSxFQUNwQzdFLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS25DLEVBQUtlLEdBQVEsRUFDbEMxRyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUt2QyxFQUFLcUIsR0FBUSxFQUVsQzdDLEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS3ZDLEVBQUtzQixJQUFRLEdBQ3ZCN0ksS0FBSzhKLEtBQUt0QyxFQUFLb0IsR0FBUSxFQUNwQ2hGLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS3RDLEVBQUtxQixJQUFRLEVBQ2xDN0csRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLMUMsRUFBSzJCLElBQVEsRUFFbENoRCxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUsxQyxFQUFLNEIsSUFBUSxHQUN2QmhKLEtBQUs4SixLQUFLekMsRUFBSzBCLElBQVEsRUFDcENuRixFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUt6QyxFQUFLMkIsSUFBUSxFQUNsQ2hILEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBSzdDLEVBQUtpQyxJQUFRLEVBRWxDbkQsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLN0MsRUFBS2tDLElBQVEsR0FDdkJuSixLQUFLOEosS0FBSzVDLEVBQUtnQyxJQUFRLEVBQ3BDdEYsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLNUMsRUFBS2lDLElBQVEsRUFDbENuSCxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUtoRCxFQUFLdUMsSUFBUSxFQUVsQ3RELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS2hELEVBQUt3QyxJQUFRLEdBQ3ZCdEosS0FBSzhKLEtBQUsvQyxFQUFLc0MsSUFBUSxFQUNwQ3pGLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBSy9DLEVBQUt1QyxJQUFRLEVBQ2xDdEgsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLbkQsRUFBSzZDLElBQVEsRUFFbEN6RCxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUtuRCxFQUFLOEMsSUFBUSxHQUN2QnpKLEtBQUs4SixLQUFLbEQsRUFBSzRDLElBQVEsRUFDcEM1RixFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUtsRCxFQUFLNkMsSUFBUSxFQUtsQyxJQUFJZ0IsSUFBUy9LLEdBSmJzQyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUt0RCxFQUFLbUQsSUFBUSxHQUlYLEtBQWEsTUFGcEM1RCxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUt0RCxFQUFLb0QsSUFBUSxHQUN2QjVKLEtBQUs4SixLQUFLckQsRUFBS2tELElBQVEsS0FFVyxJQUFPLEVBQ3REakssSUFGQWtFLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS3JELEVBQUttRCxJQUFRLElBRXJCN0QsSUFBUSxJQUFPLElBQU0wRSxLQUFRLElBQU8sRUFDakRBLElBQU8sU0FFUHpJLEVBQUtoQyxLQUFLOEosS0FBS2pDLEVBQUtZLEdBRXBCMUMsR0FEQUEsRUFBTS9GLEtBQUs4SixLQUFLakMsRUFBS2EsSUFDUjFJLEtBQUs4SixLQUFLaEMsRUFBS1csR0FBUSxFQUNwQzdFLEVBQUs1RCxLQUFLOEosS0FBS2hDLEVBQUtZLEdBQ3BCMUcsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLcEMsRUFBS2tCLEdBQVEsRUFFbEM3QyxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUtwQyxFQUFLbUIsSUFBUSxHQUN2QjdJLEtBQUs4SixLQUFLbkMsRUFBS2lCLEdBQVEsRUFDcENoRixFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUtuQyxFQUFLa0IsSUFBUSxFQUNsQzdHLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS3ZDLEVBQUt3QixJQUFRLEVBRWxDaEQsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLdkMsRUFBS3lCLElBQVEsR0FDdkJoSixLQUFLOEosS0FBS3RDLEVBQUt1QixJQUFRLEVBQ3BDbkYsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLdEMsRUFBS3dCLElBQVEsRUFDbENoSCxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUsxQyxFQUFLOEIsSUFBUSxFQUVsQ25ELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBSzFDLEVBQUsrQixJQUFRLEdBQ3ZCbkosS0FBSzhKLEtBQUt6QyxFQUFLNkIsSUFBUSxFQUNwQ3RGLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS3pDLEVBQUs4QixJQUFRLEVBQ2xDbkgsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLN0MsRUFBS29DLElBQVEsRUFFbEN0RCxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUs3QyxFQUFLcUMsSUFBUSxHQUN2QnRKLEtBQUs4SixLQUFLNUMsRUFBS21DLElBQVEsRUFDcEN6RixFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUs1QyxFQUFLb0MsSUFBUSxFQUNsQ3RILEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS2hELEVBQUswQyxJQUFRLEVBRWxDekQsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLaEQsRUFBSzJDLElBQVEsR0FDdkJ6SixLQUFLOEosS0FBSy9DLEVBQUt5QyxJQUFRLEVBQ3BDNUYsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLL0MsRUFBSzBDLElBQVEsRUFLbEMsSUFBSWlCLElBQVNoTCxHQUpic0MsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLbkQsRUFBS2dELElBQVEsR0FJWCxLQUFhLE1BRnBDNUQsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLbkQsRUFBS2lELElBQVEsR0FDdkI1SixLQUFLOEosS0FBS2xELEVBQUsrQyxJQUFRLEtBRVcsSUFBTyxFQUN0RGpLLElBRkFrRSxFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUtsRCxFQUFLZ0QsSUFBUSxJQUVyQjdELElBQVEsSUFBTyxJQUFNMkUsS0FBUSxJQUFPLEVBQ2pEQSxJQUFPLFNBRVAxSSxFQUFLaEMsS0FBSzhKLEtBQUtqQyxFQUFLZSxHQUVwQjdDLEdBREFBLEVBQU0vRixLQUFLOEosS0FBS2pDLEVBQUtnQixLQUNSN0ksS0FBSzhKLEtBQUtoQyxFQUFLYyxHQUFRLEVBQ3BDaEYsRUFBSzVELEtBQUs4SixLQUFLaEMsRUFBS2UsSUFDcEI3RyxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUtwQyxFQUFLcUIsSUFBUSxFQUVsQ2hELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS3BDLEVBQUtzQixJQUFRLEdBQ3ZCaEosS0FBSzhKLEtBQUtuQyxFQUFLb0IsSUFBUSxFQUNwQ25GLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS25DLEVBQUtxQixJQUFRLEVBQ2xDaEgsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLdkMsRUFBSzJCLElBQVEsRUFFbENuRCxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUt2QyxFQUFLNEIsSUFBUSxHQUN2Qm5KLEtBQUs4SixLQUFLdEMsRUFBSzBCLElBQVEsRUFDcEN0RixFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUt0QyxFQUFLMkIsSUFBUSxFQUNsQ25ILEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBSzFDLEVBQUtpQyxJQUFRLEVBRWxDdEQsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLMUMsRUFBS2tDLElBQVEsR0FDdkJ0SixLQUFLOEosS0FBS3pDLEVBQUtnQyxJQUFRLEVBQ3BDekYsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLekMsRUFBS2lDLElBQVEsRUFDbEN0SCxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUs3QyxFQUFLdUMsSUFBUSxFQUVsQ3pELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBSzdDLEVBQUt3QyxJQUFRLEdBQ3ZCekosS0FBSzhKLEtBQUs1QyxFQUFLc0MsSUFBUSxFQUNwQzVGLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBSzVDLEVBQUt1QyxJQUFRLEVBS2xDLElBQUlrQixJQUFTakwsR0FKYnNDLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS2hELEVBQUs2QyxJQUFRLEdBSVgsS0FBYSxNQUZwQzVELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS2hELEVBQUs4QyxJQUFRLEdBQ3ZCNUosS0FBSzhKLEtBQUsvQyxFQUFLNEMsSUFBUSxLQUVXLElBQU8sRUFDdERqSyxJQUZBa0UsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLL0MsRUFBSzZDLElBQVEsSUFFckI3RCxJQUFRLElBQU8sSUFBTTRFLEtBQVEsSUFBTyxFQUNqREEsSUFBTyxTQUVQM0ksRUFBS2hDLEtBQUs4SixLQUFLakMsRUFBS2tCLElBRXBCaEQsR0FEQUEsRUFBTS9GLEtBQUs4SixLQUFLakMsRUFBS21CLEtBQ1JoSixLQUFLOEosS0FBS2hDLEVBQUtpQixJQUFRLEVBQ3BDbkYsRUFBSzVELEtBQUs4SixLQUFLaEMsRUFBS2tCLElBQ3BCaEgsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLcEMsRUFBS3dCLElBQVEsRUFFbENuRCxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUtwQyxFQUFLeUIsSUFBUSxHQUN2Qm5KLEtBQUs4SixLQUFLbkMsRUFBS3VCLElBQVEsRUFDcEN0RixFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUtuQyxFQUFLd0IsSUFBUSxFQUNsQ25ILEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS3ZDLEVBQUs4QixJQUFRLEVBRWxDdEQsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLdkMsRUFBSytCLElBQVEsR0FDdkJ0SixLQUFLOEosS0FBS3RDLEVBQUs2QixJQUFRLEVBQ3BDekYsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLdEMsRUFBSzhCLElBQVEsRUFDbEN0SCxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUsxQyxFQUFLb0MsSUFBUSxFQUVsQ3pELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBSzFDLEVBQUtxQyxJQUFRLEdBQ3ZCekosS0FBSzhKLEtBQUt6QyxFQUFLbUMsSUFBUSxFQUNwQzVGLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS3pDLEVBQUtvQyxJQUFRLEVBS2xDLElBQUltQixJQUFTbEwsR0FKYnNDLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBSzdDLEVBQUswQyxJQUFRLEdBSVgsS0FBYSxNQUZwQzVELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBSzdDLEVBQUsyQyxJQUFRLEdBQ3ZCNUosS0FBSzhKLEtBQUs1QyxFQUFLeUMsSUFBUSxLQUVXLElBQU8sRUFDdERqSyxJQUZBa0UsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLNUMsRUFBSzBDLElBQVEsSUFFckI3RCxJQUFRLElBQU8sSUFBTTZFLEtBQVEsSUFBTyxFQUNqREEsSUFBTyxTQUVQNUksRUFBS2hDLEtBQUs4SixLQUFLakMsRUFBS3FCLElBRXBCbkQsR0FEQUEsRUFBTS9GLEtBQUs4SixLQUFLakMsRUFBS3NCLEtBQ1JuSixLQUFLOEosS0FBS2hDLEVBQUtvQixJQUFRLEVBQ3BDdEYsRUFBSzVELEtBQUs4SixLQUFLaEMsRUFBS3FCLElBQ3BCbkgsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLcEMsRUFBSzJCLElBQVEsRUFFbEN0RCxHQURBQSxFQUFPQSxFQUFNL0YsS0FBSzhKLEtBQUtwQyxFQUFLNEIsSUFBUSxHQUN2QnRKLEtBQUs4SixLQUFLbkMsRUFBSzBCLElBQVEsRUFDcEN6RixFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUtuQyxFQUFLMkIsSUFBUSxFQUNsQ3RILEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS3ZDLEVBQUtpQyxJQUFRLEVBRWxDekQsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLdkMsRUFBS2tDLElBQVEsR0FDdkJ6SixLQUFLOEosS0FBS3RDLEVBQUtnQyxJQUFRLEVBQ3BDNUYsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLdEMsRUFBS2lDLElBQVEsRUFLbEMsSUFBSW9CLElBQVNuTCxHQUpic0MsRUFBTUEsRUFBS2hDLEtBQUs4SixLQUFLMUMsRUFBS3VDLElBQVEsR0FJWCxLQUFhLE1BRnBDNUQsR0FEQUEsRUFBT0EsRUFBTS9GLEtBQUs4SixLQUFLMUMsRUFBS3dDLElBQVEsR0FDdkI1SixLQUFLOEosS0FBS3pDLEVBQUtzQyxJQUFRLEtBRVcsSUFBTyxFQUN0RGpLLElBRkFrRSxFQUFNQSxFQUFLNUQsS0FBSzhKLEtBQUt6QyxFQUFLdUMsSUFBUSxJQUVyQjdELElBQVEsSUFBTyxJQUFNOEUsS0FBUSxJQUFPLEVBQ2pEQSxJQUFPLFNBRVA3SSxFQUFLaEMsS0FBSzhKLEtBQUtqQyxFQUFLd0IsSUFFcEJ0RCxHQURBQSxFQUFNL0YsS0FBSzhKLEtBQUtqQyxFQUFLeUIsS0FDUnRKLEtBQUs4SixLQUFLaEMsRUFBS3VCLElBQVEsRUFDcEN6RixFQUFLNUQsS0FBSzhKLEtBQUtoQyxFQUFLd0IsSUFDcEJ0SCxFQUFNQSxFQUFLaEMsS0FBSzhKLEtBQUtwQyxFQUFLOEIsSUFBUSxFQUVsQ3pELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS3BDLEVBQUsrQixJQUFRLEdBQ3ZCekosS0FBSzhKLEtBQUtuQyxFQUFLNkIsSUFBUSxFQUNwQzVGLEVBQU1BLEVBQUs1RCxLQUFLOEosS0FBS25DLEVBQUs4QixJQUFRLEVBS2xDLElBQUlxQixJQUFTcEwsR0FKYnNDLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS3ZDLEVBQUtvQyxJQUFRLEdBSVgsS0FBYSxNQUZwQzVELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS3ZDLEVBQUtxQyxJQUFRLEdBQ3ZCNUosS0FBSzhKLEtBQUt0QyxFQUFLbUMsSUFBUSxLQUVXLElBQU8sRUFDdERqSyxJQUZBa0UsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLdEMsRUFBS29DLElBQVEsSUFFckI3RCxJQUFRLElBQU8sSUFBTStFLEtBQVEsSUFBTyxFQUNqREEsSUFBTyxTQUVQOUksRUFBS2hDLEtBQUs4SixLQUFLakMsRUFBSzJCLElBRXBCekQsR0FEQUEsRUFBTS9GLEtBQUs4SixLQUFLakMsRUFBSzRCLEtBQ1J6SixLQUFLOEosS0FBS2hDLEVBQUswQixJQUFRLEVBQ3BDNUYsRUFBSzVELEtBQUs4SixLQUFLaEMsRUFBSzJCLElBS3BCLElBQUlzQixJQUFTckwsR0FKYnNDLEVBQU1BLEVBQUtoQyxLQUFLOEosS0FBS3BDLEVBQUtpQyxJQUFRLEdBSVgsS0FBYSxNQUZwQzVELEdBREFBLEVBQU9BLEVBQU0vRixLQUFLOEosS0FBS3BDLEVBQUtrQyxJQUFRLEdBQ3ZCNUosS0FBSzhKLEtBQUtuQyxFQUFLZ0MsSUFBUSxLQUVXLElBQU8sRUFDdERqSyxJQUZBa0UsRUFBTUEsRUFBSzVELEtBQUs4SixLQUFLbkMsRUFBS2lDLElBQVEsSUFFckI3RCxJQUFRLElBQU8sSUFBTWdGLEtBQVEsSUFBTyxFQUNqREEsSUFBTyxTQU1QLElBQUlDLElBQVN0TCxHQUpic0MsRUFBS2hDLEtBQUs4SixLQUFLakMsRUFBSzhCLEtBSUcsS0FBYSxNQUZwQzVELEdBREFBLEVBQU0vRixLQUFLOEosS0FBS2pDLEVBQUsrQixLQUNSNUosS0FBSzhKLEtBQUtoQyxFQUFLNkIsSUFBUSxLQUVXLElBQU8sRUEwQnRELE9BekJBakssSUFGQWtFLEVBQUs1RCxLQUFLOEosS0FBS2hDLEVBQUs4QixNQUVQN0QsSUFBUSxJQUFPLElBQU1pRixLQUFRLElBQU8sRUFDakRBLElBQU8sU0FDUGhGLEVBQUUsR0FBSzZELEdBQ1A3RCxFQUFFLEdBQUsrRCxHQUNQL0QsRUFBRSxHQUFLZ0UsR0FDUGhFLEVBQUUsR0FBS2lFLEdBQ1BqRSxFQUFFLEdBQUtrRSxHQUNQbEUsRUFBRSxHQUFLbUUsR0FDUG5FLEVBQUUsR0FBS29FLEdBQ1BwRSxFQUFFLEdBQUtxRSxHQUNQckUsRUFBRSxHQUFLc0UsR0FDUHRFLEVBQUUsR0FBS3VFLEdBQ1B2RSxFQUFFLElBQU13RSxHQUNSeEUsRUFBRSxJQUFNeUUsR0FDUnpFLEVBQUUsSUFBTTBFLEdBQ1IxRSxFQUFFLElBQU0yRSxHQUNSM0UsRUFBRSxJQUFNNEUsR0FDUjVFLEVBQUUsSUFBTTZFLEdBQ1I3RSxFQUFFLElBQU04RSxHQUNSOUUsRUFBRSxJQUFNK0UsR0FDUi9FLEVBQUUsSUFBTWdGLEdBQ0UsSUFBTnRMLElBQ0ZzRyxFQUFFLElBQU10RyxFQUNSN04sRUFBSXhCLFVBRUN3QixHQWlEVCxTQUFTb1osRUFBWXBKLEVBQU1oTixFQUFLaEQsR0FFOUIsT0FEVyxJQUFJcVosR0FDSEMsS0FBS3RKLEVBQU1oTixFQUFLaEQsR0FzQjlCLFNBQVNxWixFQUFNRSxFQUFHQyxHQUNoQnRjLEtBQUtxYyxFQUFJQSxFQUNUcmMsS0FBS3NjLEVBQUlBLEVBdkVOckwsS0FBSzhKLE9BQ1JoRSxFQUFjbEUsR0FpRGhCN0MsRUFBRy9QLFVBQVVzYyxNQUFRLFNBQWdCelcsRUFBS2hELEdBQ3hDLElBQ0l3SSxFQUFNdEwsS0FBS3NCLE9BQVN3RSxFQUFJeEUsT0FXNUIsT0FWb0IsS0FBaEJ0QixLQUFLc0IsUUFBZ0MsS0FBZndFLEVBQUl4RSxPQUN0QnlWLEVBQVkvVyxLQUFNOEYsRUFBS2hELEdBQ3BCd0ksRUFBTSxHQUNUdUgsRUFBVzdTLEtBQU04RixFQUFLaEQsR0FDbkJ3SSxFQUFNLEtBckRuQixTQUFtQndILEVBQU1oTixFQUFLaEQsR0FDNUJBLEVBQUlzTixTQUFXdEssRUFBSXNLLFNBQVcwQyxFQUFLMUMsU0FDbkN0TixFQUFJeEIsT0FBU3dSLEVBQUt4UixPQUFTd0UsRUFBSXhFLE9BSS9CLElBRkEsSUFBSTRSLEVBQVEsRUFDUnNKLEVBQVUsRUFDTHJKLEVBQUksRUFBR0EsRUFBSXJRLEVBQUl4QixPQUFTLEVBQUc2UixJQUFLLENBR3ZDLElBQUlDLEVBQVNvSixFQUNiQSxFQUFVLEVBR1YsSUFGQSxJQUFJbkosRUFBZ0IsU0FBUkgsRUFDUkksRUFBT3JDLEtBQUtoRSxJQUFJa0csRUFBR3JOLEVBQUl4RSxPQUFTLEdBQzNCa0ssRUFBSXlGLEtBQUtDLElBQUksRUFBR2lDLEVBQUlMLEVBQUt4UixPQUFTLEdBQUlrSyxHQUFLOEgsRUFBTTlILElBQUssQ0FDN0QsSUFBSUQsRUFBSTRILEVBQUkzSCxFQUdSc0YsR0FGb0IsRUFBaEJnQyxFQUFLekMsTUFBTTlFLEtBQ0ksRUFBZnpGLEVBQUl1SyxNQUFNN0UsSUFHZHlILEVBQVMsU0FBSm5DLEVBR1R1QyxFQUFhLFVBRGJKLEVBQU1BLEVBQUtJLEVBQVMsR0FJcEJtSixJQUZBcEosR0FIQUEsRUFBVUEsR0FBV3RDLEVBQUksU0FBYSxHQUFNLElBR3hCbUMsSUFBTyxJQUFPLEtBRVosR0FDdEJHLEdBQVUsU0FFWnRRLEVBQUl1TixNQUFNOEMsR0FBS0UsRUFDZkgsRUFBUUUsRUFDUkEsRUFBU29KLEVBUVgsT0FOYyxJQUFWdEosRUFDRnBRLEVBQUl1TixNQUFNOEMsR0FBS0QsRUFFZnBRLEVBQUl4QixTQUdDd0IsRUFBSStPLFFBZ0JINEssQ0FBU3pjLEtBQU04RixFQUFLaEQsR0FFcEJvWixFQUFXbGMsS0FBTThGLEVBQUtoRCxJQWNoQ3FaLEVBQUtsYyxVQUFVeWMsUUFBVSxTQUFrQkMsR0FHekMsSUFGQSxJQUFJakksRUFBSSxJQUFJaFQsTUFBTWliLEdBQ2RDLEVBQUk1TSxFQUFHL1AsVUFBVXdVLFdBQVdrSSxHQUFLLEVBQzVCcFIsRUFBSSxFQUFHQSxFQUFJb1IsRUFBR3BSLElBQ3JCbUosRUFBRW5KLEdBQUt2TCxLQUFLNmMsT0FBT3RSLEVBQUdxUixFQUFHRCxHQUczQixPQUFPakksR0FJVHlILEVBQUtsYyxVQUFVNGMsT0FBUyxTQUFpQlIsRUFBR08sRUFBR0QsR0FDN0MsR0FBVSxJQUFOTixHQUFXQSxJQUFNTSxFQUFJLEVBQUcsT0FBT04sRUFHbkMsSUFEQSxJQUFJUyxFQUFLLEVBQ0F2UixFQUFJLEVBQUdBLEVBQUlxUixFQUFHclIsSUFDckJ1UixJQUFXLEVBQUpULElBQVdPLEVBQUlyUixFQUFJLEVBQzFCOFEsSUFBTSxFQUdSLE9BQU9TLEdBS1RYLEVBQUtsYyxVQUFVOGMsUUFBVSxTQUFrQkMsRUFBS0MsRUFBS0MsRUFBS0MsRUFBTUMsRUFBTVQsR0FDcEUsSUFBSyxJQUFJcFIsRUFBSSxFQUFHQSxFQUFJb1IsRUFBR3BSLElBQ3JCNFIsRUFBSzVSLEdBQUswUixFQUFJRCxFQUFJelIsSUFDbEI2UixFQUFLN1IsR0FBSzJSLEVBQUlGLEVBQUl6UixLQUl0QjRRLEVBQUtsYyxVQUFVb2QsVUFBWSxTQUFvQkosRUFBS0MsRUFBS0MsRUFBTUMsRUFBTVQsRUFBR0ssR0FDdEVoZCxLQUFLK2MsUUFBUUMsRUFBS0MsRUFBS0MsRUFBS0MsRUFBTUMsRUFBTVQsR0FFeEMsSUFBSyxJQUFJVyxFQUFJLEVBQUdBLEVBQUlYLEVBQUdXLElBQU0sRUFNM0IsSUFMQSxJQUFJVixFQUFJVSxHQUFLLEVBRVRDLEVBQVF0TSxLQUFLdU0sSUFBSSxFQUFJdk0sS0FBS3dNLEdBQUtiLEdBQy9CYyxFQUFRek0sS0FBSzBNLElBQUksRUFBSTFNLEtBQUt3TSxHQUFLYixHQUUxQmpOLEVBQUksRUFBR0EsRUFBSWdOLEVBQUdoTixHQUFLaU4sRUFJMUIsSUFIQSxJQUFJZ0IsRUFBU0wsRUFDVE0sRUFBU0gsRUFFSmxTLEVBQUksRUFBR0EsRUFBSThSLEVBQUc5UixJQUFLLENBQzFCLElBQUltQyxFQUFLd1AsRUFBS3hOLEVBQUluRSxHQUNkc1MsRUFBS1YsRUFBS3pOLEVBQUluRSxHQUVkdVMsRUFBS1osRUFBS3hOLEVBQUluRSxFQUFJOFIsR0FDbEJVLEVBQUtaLEVBQUt6TixFQUFJbkUsRUFBSThSLEdBRWxCVyxFQUFLTCxFQUFTRyxFQUFLRixFQUFTRyxFQUVoQ0EsRUFBS0osRUFBU0ksRUFBS0gsRUFBU0UsRUFDNUJBLEVBQUtFLEVBRUxkLEVBQUt4TixFQUFJbkUsR0FBS21DLEVBQUtvUSxFQUNuQlgsRUFBS3pOLEVBQUluRSxHQUFLc1MsRUFBS0UsRUFFbkJiLEVBQUt4TixFQUFJbkUsRUFBSThSLEdBQUszUCxFQUFLb1EsRUFDdkJYLEVBQUt6TixFQUFJbkUsRUFBSThSLEdBQUtRLEVBQUtFLEVBR25CeFMsSUFBTW9SLElBQ1JxQixFQUFLVixFQUFRSyxFQUFTRixFQUFRRyxFQUU5QkEsRUFBU04sRUFBUU0sRUFBU0gsRUFBUUUsRUFDbENBLEVBQVNLLEtBT25COUIsRUFBS2xjLFVBQVVpZSxZQUFjLFNBQXNCQyxFQUFHQyxHQUNwRCxJQUFJekIsRUFBcUIsRUFBakIxTCxLQUFLQyxJQUFJa04sRUFBR0QsR0FDaEJFLEVBQVUsRUFBSjFCLEVBQ05wUixFQUFJLEVBQ1IsSUFBS29SLEVBQUlBLEVBQUksRUFBSSxFQUFHQSxFQUFHQSxLQUFVLEVBQy9CcFIsSUFHRixPQUFPLEdBQUtBLEVBQUksRUFBSThTLEdBR3RCbEMsRUFBS2xjLFVBQVVxZSxVQUFZLFNBQW9CckIsRUFBS0MsRUFBS1AsR0FDdkQsS0FBSUEsR0FBSyxHQUVULElBQUssSUFBSXBSLEVBQUksRUFBR0EsRUFBSW9SLEVBQUksRUFBR3BSLElBQUssQ0FDOUIsSUFBSW1KLEVBQUl1SSxFQUFJMVIsR0FFWjBSLEVBQUkxUixHQUFLMFIsRUFBSU4sRUFBSXBSLEVBQUksR0FDckIwUixFQUFJTixFQUFJcFIsRUFBSSxHQUFLbUosRUFFakJBLEVBQUl3SSxFQUFJM1IsR0FFUjJSLEVBQUkzUixJQUFNMlIsRUFBSVAsRUFBSXBSLEVBQUksR0FDdEIyUixFQUFJUCxFQUFJcFIsRUFBSSxJQUFNbUosSUFJdEJ5SCxFQUFLbGMsVUFBVXNlLGFBQWUsU0FBdUJDLEVBQUk3QixHQUV2RCxJQURBLElBQUl6SixFQUFRLEVBQ0gzSCxFQUFJLEVBQUdBLEVBQUlvUixFQUFJLEVBQUdwUixJQUFLLENBQzlCLElBQUlvRyxFQUFvQyxLQUFoQ1YsS0FBS3dOLE1BQU1ELEVBQUcsRUFBSWpULEVBQUksR0FBS29SLEdBQ2pDMUwsS0FBS3dOLE1BQU1ELEVBQUcsRUFBSWpULEdBQUtvUixHQUN2QnpKLEVBRUZzTCxFQUFHalQsR0FBUyxTQUFKb0csRUFHTnVCLEVBREV2QixFQUFJLFNBQ0UsRUFFQUEsRUFBSSxTQUFZLEVBSTVCLE9BQU82TSxHQUdUckMsRUFBS2xjLFVBQVV5ZSxXQUFhLFNBQXFCRixFQUFJbFQsRUFBSzJSLEVBQUtOLEdBRTdELElBREEsSUFBSXpKLEVBQVEsRUFDSDNILEVBQUksRUFBR0EsRUFBSUQsRUFBS0MsSUFDdkIySCxHQUF5QixFQUFSc0wsRUFBR2pULEdBRXBCMFIsRUFBSSxFQUFJMVIsR0FBYSxLQUFSMkgsRUFBZ0JBLEtBQWtCLEdBQy9DK0osRUFBSSxFQUFJMVIsRUFBSSxHQUFhLEtBQVIySCxFQUFnQkEsS0FBa0IsR0FJckQsSUFBSzNILEVBQUksRUFBSUQsRUFBS0MsRUFBSW9SLElBQUtwUixFQUN6QjBSLEVBQUkxUixHQUFLLEVBR1huSSxFQUFpQixJQUFWOFAsR0FDUDlQLEVBQTZCLEtBQWIsS0FBUjhQLEtBR1ZpSixFQUFLbGMsVUFBVTBlLEtBQU8sU0FBZWhDLEdBRW5DLElBREEsSUFBSWlDLEVBQUssSUFBSWxkLE1BQU1pYixHQUNWcFIsRUFBSSxFQUFHQSxFQUFJb1IsRUFBR3BSLElBQ3JCcVQsRUFBR3JULEdBQUssRUFHVixPQUFPcVQsR0FHVHpDLEVBQUtsYyxVQUFVbWMsS0FBTyxTQUFlQyxFQUFHQyxFQUFHeFosR0FDekMsSUFBSTZaLEVBQUksRUFBSTNjLEtBQUtrZSxZQUFZN0IsRUFBRS9hLE9BQVFnYixFQUFFaGIsUUFFckMwYixFQUFNaGQsS0FBSzBjLFFBQVFDLEdBRW5Ca0MsRUFBSTdlLEtBQUsyZSxLQUFLaEMsR0FFZE0sRUFBTSxJQUFJdmIsTUFBTWliLEdBQ2hCbUMsRUFBTyxJQUFJcGQsTUFBTWliLEdBQ2pCb0MsRUFBTyxJQUFJcmQsTUFBTWliLEdBRWpCcUMsRUFBTyxJQUFJdGQsTUFBTWliLEdBQ2pCc0MsRUFBUSxJQUFJdmQsTUFBTWliLEdBQ2xCdUMsRUFBUSxJQUFJeGQsTUFBTWliLEdBRWxCd0MsRUFBT3JjLEVBQUl1TixNQUNmOE8sRUFBSzdkLE9BQVNxYixFQUVkM2MsS0FBSzBlLFdBQVdyQyxFQUFFaE0sTUFBT2dNLEVBQUUvYSxPQUFRMmIsRUFBS04sR0FDeEMzYyxLQUFLMGUsV0FBV3BDLEVBQUVqTSxNQUFPaU0sRUFBRWhiLE9BQVEwZCxFQUFNckMsR0FFekMzYyxLQUFLcWQsVUFBVUosRUFBSzRCLEVBQUdDLEVBQU1DLEVBQU1wQyxFQUFHSyxHQUN0Q2hkLEtBQUtxZCxVQUFVMkIsRUFBTUgsRUFBR0ksRUFBT0MsRUFBT3ZDLEVBQUdLLEdBRXpDLElBQUssSUFBSXpSLEVBQUksRUFBR0EsRUFBSW9SLEVBQUdwUixJQUFLLENBQzFCLElBQUkwUyxFQUFLYSxFQUFLdlQsR0FBSzBULEVBQU0xVCxHQUFLd1QsRUFBS3hULEdBQUsyVCxFQUFNM1QsR0FDOUN3VCxFQUFLeFQsR0FBS3VULEVBQUt2VCxHQUFLMlQsRUFBTTNULEdBQUt3VCxFQUFLeFQsR0FBSzBULEVBQU0xVCxHQUMvQ3VULEVBQUt2VCxHQUFLMFMsRUFVWixPQVBBamUsS0FBS3NlLFVBQVVRLEVBQU1DLEVBQU1wQyxHQUMzQjNjLEtBQUtxZCxVQUFVeUIsRUFBTUMsRUFBTUksRUFBTU4sRUFBR2xDLEVBQUdLLEdBQ3ZDaGQsS0FBS3NlLFVBQVVhLEVBQU1OLEVBQUdsQyxHQUN4QjNjLEtBQUt1ZSxhQUFhWSxFQUFNeEMsR0FFeEI3WixFQUFJc04sU0FBV2lNLEVBQUVqTSxTQUFXa00sRUFBRWxNLFNBQzlCdE4sRUFBSXhCLE9BQVMrYSxFQUFFL2EsT0FBU2diLEVBQUVoYixPQUNuQndCLEVBQUkrTyxTQUliN0IsRUFBRy9QLFVBQVUrUSxJQUFNLFNBQWNsTCxHQUMvQixJQUFJaEQsRUFBTSxJQUFJa04sRUFBRyxNQUVqQixPQURBbE4sRUFBSXVOLE1BQVEsSUFBSTNPLE1BQU0xQixLQUFLc0IsT0FBU3dFLEVBQUl4RSxRQUNqQ3RCLEtBQUt1YyxNQUFNelcsRUFBS2hELElBSXpCa04sRUFBRy9QLFVBQVVtZixLQUFPLFNBQWV0WixHQUNqQyxJQUFJaEQsRUFBTSxJQUFJa04sRUFBRyxNQUVqQixPQURBbE4sRUFBSXVOLE1BQVEsSUFBSTNPLE1BQU0xQixLQUFLc0IsT0FBU3dFLEVBQUl4RSxRQUNqQzRhLEVBQVdsYyxLQUFNOEYsRUFBS2hELElBSS9Ca04sRUFBRy9QLFVBQVU4YSxLQUFPLFNBQWVqVixHQUNqQyxPQUFPOUYsS0FBSzRFLFFBQVEyWCxNQUFNelcsRUFBSzlGLE9BR2pDZ1EsRUFBRy9QLFVBQVVrUyxNQUFRLFNBQWdCck0sR0FDbkMxQyxFQUFzQixpQkFBUjBDLEdBQ2QxQyxFQUFPMEMsRUFBTSxVQUliLElBREEsSUFBSW9OLEVBQVEsRUFDSDNILEVBQUksRUFBR0EsRUFBSXZMLEtBQUtzQixPQUFRaUssSUFBSyxDQUNwQyxJQUFJb0csR0FBcUIsRUFBaEIzUixLQUFLcVEsTUFBTTlFLElBQVV6RixFQUMxQm1OLEdBQVUsU0FBSnRCLElBQTBCLFNBQVJ1QixHQUM1QkEsSUFBVSxHQUNWQSxHQUFVdkIsRUFBSSxTQUFhLEVBRTNCdUIsR0FBU0QsSUFBTyxHQUNoQmpULEtBQUtxUSxNQUFNOUUsR0FBVSxTQUFMMEgsRUFRbEIsT0FMYyxJQUFWQyxJQUNGbFQsS0FBS3FRLE1BQU05RSxHQUFLMkgsRUFDaEJsVCxLQUFLc0IsVUFHQXRCLE1BR1RnUSxFQUFHL1AsVUFBVW9mLEtBQU8sU0FBZXZaLEdBQ2pDLE9BQU85RixLQUFLNEUsUUFBUXVOLE1BQU1yTSxJQUk1QmtLLEVBQUcvUCxVQUFVcWYsSUFBTSxXQUNqQixPQUFPdGYsS0FBS2dSLElBQUloUixPQUlsQmdRLEVBQUcvUCxVQUFVc2YsS0FBTyxXQUNsQixPQUFPdmYsS0FBSythLEtBQUsvYSxLQUFLNEUsVUFJeEJvTCxFQUFHL1AsVUFBVW9TLElBQU0sU0FBY3ZNLEdBQy9CLElBQUk2TCxFQXh4Q04sU0FBcUI3TCxHQUduQixJQUZBLElBQUk2TCxFQUFJLElBQUlqUSxNQUFNb0UsRUFBSThPLGFBRWI2QixFQUFNLEVBQUdBLEVBQU05RSxFQUFFclEsT0FBUW1WLElBQU8sQ0FDdkMsSUFBSTdFLEVBQU82RSxFQUFNLEdBQU0sRUFDbkJDLEVBQU9ELEVBQU0sR0FFakI5RSxFQUFFOEUsSUFBUTNRLEVBQUl1SyxNQUFNdUIsR0FBUSxHQUFLOEUsS0FBV0EsRUFHOUMsT0FBTy9FLEVBOHdDQzZOLENBQVcxWixHQUNuQixHQUFpQixJQUFiNkwsRUFBRXJRLE9BQWMsT0FBTyxJQUFJME8sRUFBRyxHQUlsQyxJQURBLElBQUl4TixFQUFNeEMsS0FDRHVMLEVBQUksRUFBR0EsRUFBSW9HLEVBQUVyUSxRQUNQLElBQVRxUSxFQUFFcEcsR0FEc0JBLElBQUsvSSxFQUFNQSxFQUFJOGMsT0FJN0MsS0FBTS9ULEVBQUlvRyxFQUFFclEsT0FDVixJQUFLLElBQUkrUyxFQUFJN1IsRUFBSThjLE1BQU8vVCxFQUFJb0csRUFBRXJRLE9BQVFpSyxJQUFLOEksRUFBSUEsRUFBRWlMLE1BQ2xDLElBQVQzTixFQUFFcEcsS0FFTi9JLEVBQU1BLEVBQUl3TyxJQUFJcUQsSUFJbEIsT0FBTzdSLEdBSVR3TixFQUFHL1AsVUFBVXdmLE9BQVMsU0FBaUJDLEdBQ3JDdGMsRUFBdUIsaUJBQVRzYyxHQUFxQkEsR0FBUSxHQUMzQyxJQUdJblUsRUFIQXVGLEVBQUk0TyxFQUFPLEdBQ1hwQyxHQUFLb0MsRUFBTzVPLEdBQUssR0FDakI2TyxFQUFhLFdBQWUsR0FBSzdPLEdBQVEsR0FBS0EsRUFHbEQsR0FBVSxJQUFOQSxFQUFTLENBQ1gsSUFBSW9DLEVBQVEsRUFFWixJQUFLM0gsRUFBSSxFQUFHQSxFQUFJdkwsS0FBS3NCLE9BQVFpSyxJQUFLLENBQ2hDLElBQUlxVSxFQUFXNWYsS0FBS3FRLE1BQU05RSxHQUFLb1UsRUFDM0JoUCxHQUFzQixFQUFoQjNRLEtBQUtxUSxNQUFNOUUsSUFBVXFVLEdBQWE5TyxFQUM1QzlRLEtBQUtxUSxNQUFNOUUsR0FBS29GLEVBQUl1QyxFQUNwQkEsRUFBUTBNLElBQWMsR0FBSzlPLEVBR3pCb0MsSUFDRmxULEtBQUtxUSxNQUFNOUUsR0FBSzJILEVBQ2hCbFQsS0FBS3NCLFVBSVQsR0FBVSxJQUFOZ2MsRUFBUyxDQUNYLElBQUsvUixFQUFJdkwsS0FBS3NCLE9BQVMsRUFBR2lLLEdBQUssRUFBR0EsSUFDaEN2TCxLQUFLcVEsTUFBTTlFLEVBQUkrUixHQUFLdGQsS0FBS3FRLE1BQU05RSxHQUdqQyxJQUFLQSxFQUFJLEVBQUdBLEVBQUkrUixFQUFHL1IsSUFDakJ2TCxLQUFLcVEsTUFBTTlFLEdBQUssRUFHbEJ2TCxLQUFLc0IsUUFBVWdjLEVBR2pCLE9BQU90ZCxLQUFLNlIsU0FHZDdCLEVBQUcvUCxVQUFVNGYsTUFBUSxTQUFnQkgsR0FHbkMsT0FEQXRjLEVBQXlCLElBQWxCcEQsS0FBS29RLFVBQ0xwUSxLQUFLeWYsT0FBT0MsSUFNckIxUCxFQUFHL1AsVUFBVXNVLE9BQVMsU0FBaUJtTCxFQUFNSSxFQUFNQyxHQUVqRCxJQUFJQyxFQURKNWMsRUFBdUIsaUJBQVRzYyxHQUFxQkEsR0FBUSxHQUd6Q00sRUFERUYsR0FDR0EsRUFBUUEsRUFBTyxJQUFPLEdBRXZCLEVBR04sSUFBSWhQLEVBQUk0TyxFQUFPLEdBQ1hwQyxFQUFJck0sS0FBS2hFLEtBQUt5UyxFQUFPNU8sR0FBSyxHQUFJOVEsS0FBS3NCLFFBQ25DMmUsRUFBTyxTQUFjLFdBQWNuUCxHQUFNQSxFQUN6Q29QLEVBQWNILEVBTWxCLEdBSkFDLEdBQUsxQyxFQUNMMEMsRUFBSS9PLEtBQUtDLElBQUksRUFBRzhPLEdBR1pFLEVBQWEsQ0FDZixJQUFLLElBQUkzVSxFQUFJLEVBQUdBLEVBQUkrUixFQUFHL1IsSUFDckIyVSxFQUFZN1AsTUFBTTlFLEdBQUt2TCxLQUFLcVEsTUFBTTlFLEdBRXBDMlUsRUFBWTVlLE9BQVNnYyxFQUd2QixHQUFVLElBQU5BLFFBRUcsR0FBSXRkLEtBQUtzQixPQUFTZ2MsRUFFdkIsSUFEQXRkLEtBQUtzQixRQUFVZ2MsRUFDVi9SLEVBQUksRUFBR0EsRUFBSXZMLEtBQUtzQixPQUFRaUssSUFDM0J2TCxLQUFLcVEsTUFBTTlFLEdBQUt2TCxLQUFLcVEsTUFBTTlFLEVBQUkrUixRQUdqQ3RkLEtBQUtxUSxNQUFNLEdBQUssRUFDaEJyUSxLQUFLc0IsT0FBUyxFQUdoQixJQUFJNFIsRUFBUSxFQUNaLElBQUszSCxFQUFJdkwsS0FBS3NCLE9BQVMsRUFBR2lLLEdBQUssSUFBZ0IsSUFBVjJILEdBQWUzSCxHQUFLeVUsR0FBSXpVLElBQUssQ0FDaEUsSUFBSTJHLEVBQXVCLEVBQWhCbFMsS0FBS3FRLE1BQU05RSxHQUN0QnZMLEtBQUtxUSxNQUFNOUUsR0FBTTJILEdBQVUsR0FBS3BDLEVBQU9vQixJQUFTcEIsRUFDaERvQyxFQUFRaEIsRUFBTytOLEVBYWpCLE9BVElDLEdBQXlCLElBQVZoTixJQUNqQmdOLEVBQVk3UCxNQUFNNlAsRUFBWTVlLFVBQVk0UixHQUd4QixJQUFoQmxULEtBQUtzQixTQUNQdEIsS0FBS3FRLE1BQU0sR0FBSyxFQUNoQnJRLEtBQUtzQixPQUFTLEdBR1R0QixLQUFLNlIsU0FHZDdCLEVBQUcvUCxVQUFVa2dCLE1BQVEsU0FBZ0JULEVBQU1JLEVBQU1DLEdBRy9DLE9BREEzYyxFQUF5QixJQUFsQnBELEtBQUtvUSxVQUNMcFEsS0FBS3VVLE9BQU9tTCxFQUFNSSxFQUFNQyxJQUlqQy9QLEVBQUcvUCxVQUFVbWdCLEtBQU8sU0FBZVYsR0FDakMsT0FBTzFmLEtBQUs0RSxRQUFRaWIsTUFBTUgsSUFHNUIxUCxFQUFHL1AsVUFBVW9nQixNQUFRLFNBQWdCWCxHQUNuQyxPQUFPMWYsS0FBSzRFLFFBQVE2YSxPQUFPQyxJQUk3QjFQLEVBQUcvUCxVQUFVcWdCLEtBQU8sU0FBZVosR0FDakMsT0FBTzFmLEtBQUs0RSxRQUFRdWIsTUFBTVQsSUFHNUIxUCxFQUFHL1AsVUFBVXNnQixNQUFRLFNBQWdCYixHQUNuQyxPQUFPMWYsS0FBSzRFLFFBQVEyUCxPQUFPbUwsSUFJN0IxUCxFQUFHL1AsVUFBVW9WLE1BQVEsU0FBZ0JvQixHQUNuQ3JULEVBQXNCLGlCQUFScVQsR0FBb0JBLEdBQU8sR0FDekMsSUFBSTNGLEVBQUkyRixFQUFNLEdBQ1Y2RyxHQUFLN0csRUFBTTNGLEdBQUssR0FDaEJ1RCxFQUFJLEdBQUt2RCxFQUdiLFFBQUk5USxLQUFLc0IsUUFBVWdjLEtBR1h0ZCxLQUFLcVEsTUFBTWlOLEdBRUxqSixLQUloQnJFLEVBQUcvUCxVQUFVdWdCLE9BQVMsU0FBaUJkLEdBQ3JDdGMsRUFBdUIsaUJBQVRzYyxHQUFxQkEsR0FBUSxHQUMzQyxJQUFJNU8sRUFBSTRPLEVBQU8sR0FDWHBDLEdBQUtvQyxFQUFPNU8sR0FBSyxHQUlyQixHQUZBMU4sRUFBeUIsSUFBbEJwRCxLQUFLb1EsU0FBZ0IsMkNBRXhCcFEsS0FBS3NCLFFBQVVnYyxFQUNqQixPQUFPdGQsS0FRVCxHQUxVLElBQU44USxHQUNGd00sSUFFRnRkLEtBQUtzQixPQUFTMlAsS0FBS2hFLElBQUlxUSxFQUFHdGQsS0FBS3NCLFFBRXJCLElBQU53UCxFQUFTLENBQ1gsSUFBSW1QLEVBQU8sU0FBYyxXQUFjblAsR0FBTUEsRUFDN0M5USxLQUFLcVEsTUFBTXJRLEtBQUtzQixPQUFTLElBQU0yZSxFQUdqQyxPQUFPamdCLEtBQUs2UixTQUlkN0IsRUFBRy9QLFVBQVV3Z0IsTUFBUSxTQUFnQmYsR0FDbkMsT0FBTzFmLEtBQUs0RSxRQUFRNGIsT0FBT2QsSUFJN0IxUCxFQUFHL1AsVUFBVWtWLE1BQVEsU0FBZ0JyUCxHQUduQyxPQUZBMUMsRUFBc0IsaUJBQVIwQyxHQUNkMUMsRUFBTzBDLEVBQU0sVUFDVEEsRUFBTSxFQUFVOUYsS0FBSzBnQixPQUFPNWEsR0FHVixJQUFsQjlGLEtBQUtvUSxTQUNhLElBQWhCcFEsS0FBS3NCLFNBQWlDLEVBQWhCdEIsS0FBS3FRLE1BQU0sSUFBVXZLLEdBQzdDOUYsS0FBS3FRLE1BQU0sR0FBS3ZLLEdBQXVCLEVBQWhCOUYsS0FBS3FRLE1BQU0sSUFDbENyUSxLQUFLb1EsU0FBVyxFQUNUcFEsT0FHVEEsS0FBS29RLFNBQVcsRUFDaEJwUSxLQUFLMGdCLE1BQU01YSxHQUNYOUYsS0FBS29RLFNBQVcsRUFDVHBRLE1BSUZBLEtBQUtvUyxPQUFPdE0sSUFHckJrSyxFQUFHL1AsVUFBVW1TLE9BQVMsU0FBaUJ0TSxHQUNyQzlGLEtBQUtxUSxNQUFNLElBQU12SyxFQUdqQixJQUFLLElBQUl5RixFQUFJLEVBQUdBLEVBQUl2TCxLQUFLc0IsUUFBVXRCLEtBQUtxUSxNQUFNOUUsSUFBTSxTQUFXQSxJQUM3RHZMLEtBQUtxUSxNQUFNOUUsSUFBTSxTQUNiQSxJQUFNdkwsS0FBS3NCLE9BQVMsRUFDdEJ0QixLQUFLcVEsTUFBTTlFLEVBQUksR0FBSyxFQUVwQnZMLEtBQUtxUSxNQUFNOUUsRUFBSSxLQUtuQixPQUZBdkwsS0FBS3NCLE9BQVMyUCxLQUFLQyxJQUFJbFIsS0FBS3NCLE9BQVFpSyxFQUFJLEdBRWpDdkwsTUFJVGdRLEVBQUcvUCxVQUFVeWdCLE1BQVEsU0FBZ0I1YSxHQUduQyxHQUZBMUMsRUFBc0IsaUJBQVIwQyxHQUNkMUMsRUFBTzBDLEVBQU0sVUFDVEEsRUFBTSxFQUFHLE9BQU85RixLQUFLbVYsT0FBT3JQLEdBRWhDLEdBQXNCLElBQWxCOUYsS0FBS29RLFNBSVAsT0FIQXBRLEtBQUtvUSxTQUFXLEVBQ2hCcFEsS0FBS21WLE1BQU1yUCxHQUNYOUYsS0FBS29RLFNBQVcsRUFDVHBRLEtBS1QsR0FGQUEsS0FBS3FRLE1BQU0sSUFBTXZLLEVBRUcsSUFBaEI5RixLQUFLc0IsUUFBZ0J0QixLQUFLcVEsTUFBTSxHQUFLLEVBQ3ZDclEsS0FBS3FRLE1BQU0sSUFBTXJRLEtBQUtxUSxNQUFNLEdBQzVCclEsS0FBS29RLFNBQVcsT0FHaEIsSUFBSyxJQUFJN0UsRUFBSSxFQUFHQSxFQUFJdkwsS0FBS3NCLFFBQVV0QixLQUFLcVEsTUFBTTlFLEdBQUssRUFBR0EsSUFDcER2TCxLQUFLcVEsTUFBTTlFLElBQU0sU0FDakJ2TCxLQUFLcVEsTUFBTTlFLEVBQUksSUFBTSxFQUl6QixPQUFPdkwsS0FBSzZSLFNBR2Q3QixFQUFHL1AsVUFBVTBnQixLQUFPLFNBQWU3YSxHQUNqQyxPQUFPOUYsS0FBSzRFLFFBQVF1USxNQUFNclAsSUFHNUJrSyxFQUFHL1AsVUFBVTJnQixLQUFPLFNBQWU5YSxHQUNqQyxPQUFPOUYsS0FBSzRFLFFBQVE4YixNQUFNNWEsSUFHNUJrSyxFQUFHL1AsVUFBVTRnQixLQUFPLFdBR2xCLE9BRkE3Z0IsS0FBS29RLFNBQVcsRUFFVHBRLE1BR1RnUSxFQUFHL1AsVUFBVWdWLElBQU0sV0FDakIsT0FBT2pWLEtBQUs0RSxRQUFRaWMsUUFHdEI3USxFQUFHL1AsVUFBVTZnQixhQUFlLFNBQXVCaGIsRUFBS2tMLEVBQUsrUCxHQUMzRCxJQUNJeFYsRUFJQW9HLEVBTEFyRyxFQUFNeEYsRUFBSXhFLE9BQVN5ZixFQUd2Qi9nQixLQUFLdVMsUUFBUWpILEdBR2IsSUFBSTRILEVBQVEsRUFDWixJQUFLM0gsRUFBSSxFQUFHQSxFQUFJekYsRUFBSXhFLE9BQVFpSyxJQUFLLENBQy9Cb0csR0FBNkIsRUFBeEIzUixLQUFLcVEsTUFBTTlFLEVBQUl3VixJQUFjN04sRUFDbEMsSUFBSTlCLEdBQXdCLEVBQWZ0TCxFQUFJdUssTUFBTTlFLElBQVV5RixFQUVqQ2tDLElBREF2QixHQUFhLFNBQVJQLElBQ1MsS0FBUUEsRUFBUSxTQUFhLEdBQzNDcFIsS0FBS3FRLE1BQU05RSxFQUFJd1YsR0FBYSxTQUFKcFAsRUFFMUIsS0FBT3BHLEVBQUl2TCxLQUFLc0IsT0FBU3lmLEVBQU94VixJQUU5QjJILEdBREF2QixHQUE2QixFQUF4QjNSLEtBQUtxUSxNQUFNOUUsRUFBSXdWLElBQWM3TixJQUNyQixHQUNibFQsS0FBS3FRLE1BQU05RSxFQUFJd1YsR0FBYSxTQUFKcFAsRUFHMUIsR0FBYyxJQUFWdUIsRUFBYSxPQUFPbFQsS0FBSzZSLFFBSzdCLElBRkF6TyxHQUFrQixJQUFYOFAsR0FDUEEsRUFBUSxFQUNIM0gsRUFBSSxFQUFHQSxFQUFJdkwsS0FBS3NCLE9BQVFpSyxJQUUzQjJILEdBREF2QixJQUFzQixFQUFoQjNSLEtBQUtxUSxNQUFNOUUsSUFBVTJILElBQ2QsR0FDYmxULEtBQUtxUSxNQUFNOUUsR0FBUyxTQUFKb0csRUFJbEIsT0FGQTNSLEtBQUtvUSxTQUFXLEVBRVRwUSxLQUFLNlIsU0FHZDdCLEVBQUcvUCxVQUFVK2dCLFNBQVcsU0FBbUJsYixFQUFLbWIsR0FDOUMsSUFBSUYsR0FBUS9nQixLQUFLc0IsT0FBU3dFLEVBQUl4RSxRQUUxQnlSLEVBQUkvUyxLQUFLNEUsUUFDVG9PLEVBQUlsTixFQUdKb2IsRUFBOEIsRUFBeEJsTyxFQUFFM0MsTUFBTTJDLEVBQUUxUixPQUFTLEdBR2YsSUFEZHlmLEVBQVEsR0FETS9nQixLQUFLeVUsV0FBV3lNLE1BRzVCbE8sRUFBSUEsRUFBRXFOLE1BQU1VLEdBQ1poTyxFQUFFME0sT0FBT3NCLEdBQ1RHLEVBQThCLEVBQXhCbE8sRUFBRTNDLE1BQU0yQyxFQUFFMVIsT0FBUyxJQUkzQixJQUNJK1MsRUFEQStKLEVBQUlyTCxFQUFFelIsT0FBUzBSLEVBQUUxUixPQUdyQixHQUFhLFFBQVQyZixFQUFnQixFQUNsQjVNLEVBQUksSUFBSXJFLEVBQUcsT0FDVDFPLE9BQVM4YyxFQUFJLEVBQ2YvSixFQUFFaEUsTUFBUSxJQUFJM08sTUFBTTJTLEVBQUUvUyxRQUN0QixJQUFLLElBQUlpSyxFQUFJLEVBQUdBLEVBQUk4SSxFQUFFL1MsT0FBUWlLLElBQzVCOEksRUFBRWhFLE1BQU05RSxHQUFLLEVBSWpCLElBQUk0VixFQUFPcE8sRUFBRW5PLFFBQVFrYyxhQUFhOU4sRUFBRyxFQUFHb0wsR0FDbEIsSUFBbEIrQyxFQUFLL1EsV0FDUDJDLEVBQUlvTyxFQUNBOU0sSUFDRkEsRUFBRWhFLE1BQU0rTixHQUFLLElBSWpCLElBQUssSUFBSTVTLEVBQUk0UyxFQUFJLEVBQUc1UyxHQUFLLEVBQUdBLElBQUssQ0FDL0IsSUFBSTRWLEVBQW1DLFVBQUwsRUFBeEJyTyxFQUFFMUMsTUFBTTJDLEVBQUUxUixPQUFTa0ssS0FDRSxFQUE1QnVILEVBQUUxQyxNQUFNMkMsRUFBRTFSLE9BQVNrSyxFQUFJLElBTzFCLElBSEE0VixFQUFLblEsS0FBS2hFLElBQUttVSxFQUFLRixFQUFPLEVBQUcsVUFFOUJuTyxFQUFFK04sYUFBYTlOLEVBQUdvTyxFQUFJNVYsR0FDQSxJQUFmdUgsRUFBRTNDLFVBQ1BnUixJQUNBck8sRUFBRTNDLFNBQVcsRUFDYjJDLEVBQUUrTixhQUFhOU4sRUFBRyxFQUFHeEgsR0FDaEJ1SCxFQUFFVyxXQUNMWCxFQUFFM0MsVUFBWSxHQUdkaUUsSUFDRkEsRUFBRWhFLE1BQU03RSxHQUFLNFYsR0FhakIsT0FWSS9NLEdBQ0ZBLEVBQUV4QyxRQUVKa0IsRUFBRWxCLFFBR1csUUFBVG9QLEdBQTRCLElBQVZGLEdBQ3BCaE8sRUFBRXdCLE9BQU93TSxHQUdKLENBQ0xNLElBQUtoTixHQUFLLEtBQ1ZwQyxJQUFLYyxJQVFUL0MsRUFBRy9QLFVBQVVxaEIsT0FBUyxTQUFpQnhiLEVBQUttYixFQUFNTSxHQUdoRCxPQUZBbmUsR0FBUTBDLEVBQUk0TixVQUVSMVQsS0FBSzBULFNBQ0EsQ0FDTDJOLElBQUssSUFBSXJSLEVBQUcsR0FDWmlDLElBQUssSUFBSWpDLEVBQUcsSUFLTSxJQUFsQmhRLEtBQUtvUSxVQUFtQyxJQUFqQnRLLEVBQUlzSyxVQUM3QjVOLEVBQU14QyxLQUFLeVYsTUFBTTZMLE9BQU94YixFQUFLbWIsR0FFaEIsUUFBVEEsSUFDRkksRUFBTTdlLEVBQUk2ZSxJQUFJNUwsT0FHSCxRQUFUd0wsSUFDRmhQLEVBQU16UCxFQUFJeVAsSUFBSXdELE1BQ1Y4TCxHQUE2QixJQUFqQnRQLEVBQUk3QixVQUNsQjZCLEVBQUkwRSxLQUFLN1EsSUFJTixDQUNMdWIsSUFBS0EsRUFDTHBQLElBQUtBLElBSWEsSUFBbEJqUyxLQUFLb1EsVUFBbUMsSUFBakJ0SyxFQUFJc0ssVUFDN0I1TixFQUFNeEMsS0FBS3NoQixPQUFPeGIsRUFBSTJQLE1BQU93TCxHQUVoQixRQUFUQSxJQUNGSSxFQUFNN2UsRUFBSTZlLElBQUk1TCxPQUdULENBQ0w0TCxJQUFLQSxFQUNMcFAsSUFBS3pQLEVBQUl5UCxNQUkwQixJQUFsQ2pTLEtBQUtvUSxTQUFXdEssRUFBSXNLLFdBQ3ZCNU4sRUFBTXhDLEtBQUt5VixNQUFNNkwsT0FBT3hiLEVBQUkyUCxNQUFPd0wsR0FFdEIsUUFBVEEsSUFDRmhQLEVBQU16UCxFQUFJeVAsSUFBSXdELE1BQ1Y4TCxHQUE2QixJQUFqQnRQLEVBQUk3QixVQUNsQjZCLEVBQUkyRSxLQUFLOVEsSUFJTixDQUNMdWIsSUFBSzdlLEVBQUk2ZSxJQUNUcFAsSUFBS0EsSUFPTG5NLEVBQUl4RSxPQUFTdEIsS0FBS3NCLFFBQVV0QixLQUFLcVIsSUFBSXZMLEdBQU8sRUFDdkMsQ0FDTHViLElBQUssSUFBSXJSLEVBQUcsR0FDWmlDLElBQUtqUyxNQUtVLElBQWY4RixFQUFJeEUsT0FDTyxRQUFUMmYsRUFDSyxDQUNMSSxJQUFLcmhCLEtBQUt3aEIsS0FBSzFiLEVBQUl1SyxNQUFNLElBQ3pCNEIsSUFBSyxNQUlJLFFBQVRnUCxFQUNLLENBQ0xJLElBQUssS0FDTHBQLElBQUssSUFBSWpDLEVBQUdoUSxLQUFLMlQsS0FBSzdOLEVBQUl1SyxNQUFNLE1BSTdCLENBQ0xnUixJQUFLcmhCLEtBQUt3aEIsS0FBSzFiLEVBQUl1SyxNQUFNLElBQ3pCNEIsSUFBSyxJQUFJakMsRUFBR2hRLEtBQUsyVCxLQUFLN04sRUFBSXVLLE1BQU0sTUFJN0JyUSxLQUFLZ2hCLFNBQVNsYixFQUFLbWIsR0FsRjFCLElBQUlJLEVBQUtwUCxFQUFLelAsR0FzRmhCd04sRUFBRy9QLFVBQVVvaEIsSUFBTSxTQUFjdmIsR0FDL0IsT0FBTzlGLEtBQUtzaEIsT0FBT3hiLEVBQUssT0FBTyxHQUFPdWIsS0FJeENyUixFQUFHL1AsVUFBVWdTLElBQU0sU0FBY25NLEdBQy9CLE9BQU85RixLQUFLc2hCLE9BQU94YixFQUFLLE9BQU8sR0FBT21NLEtBR3hDakMsRUFBRy9QLFVBQVV3aEIsS0FBTyxTQUFlM2IsR0FDakMsT0FBTzlGLEtBQUtzaEIsT0FBT3hiLEVBQUssT0FBTyxHQUFNbU0sS0FJdkNqQyxFQUFHL1AsVUFBVXloQixTQUFXLFNBQW1CNWIsR0FDekMsSUFBSTZiLEVBQUszaEIsS0FBS3NoQixPQUFPeGIsR0FHckIsR0FBSTZiLEVBQUcxUCxJQUFJeUIsU0FBVSxPQUFPaU8sRUFBR04sSUFFL0IsSUFBSXBQLEVBQTBCLElBQXBCMFAsRUFBR04sSUFBSWpSLFNBQWlCdVIsRUFBRzFQLElBQUkyRSxLQUFLOVEsR0FBTzZiLEVBQUcxUCxJQUVwRDJQLEVBQU85YixFQUFJeWEsTUFBTSxHQUNqQnNCLEVBQUsvYixFQUFJd08sTUFBTSxHQUNmakQsRUFBTVksRUFBSVosSUFBSXVRLEdBR2xCLE9BQUl2USxFQUFNLEdBQVksSUFBUHdRLEdBQW9CLElBQVJ4USxFQUFrQnNRLEVBQUdOLElBR3JCLElBQXBCTSxFQUFHTixJQUFJalIsU0FBaUJ1UixFQUFHTixJQUFJWCxNQUFNLEdBQUtpQixFQUFHTixJQUFJbE0sTUFBTSxJQUdoRW5GLEVBQUcvUCxVQUFVMFQsS0FBTyxTQUFlN04sR0FDakMxQyxFQUFPMEMsR0FBTyxVQUlkLElBSEEsSUFBSTZKLEdBQUssR0FBSyxJQUFNN0osRUFFaEJnYyxFQUFNLEVBQ0R2VyxFQUFJdkwsS0FBS3NCLE9BQVMsRUFBR2lLLEdBQUssRUFBR0EsSUFDcEN1VyxHQUFPblMsRUFBSW1TLEdBQXVCLEVBQWhCOWhCLEtBQUtxUSxNQUFNOUUsS0FBV3pGLEVBRzFDLE9BQU9nYyxHQUlUOVIsRUFBRy9QLFVBQVUyVCxNQUFRLFNBQWdCOU4sR0FDbkMxQyxFQUFPMEMsR0FBTyxVQUdkLElBREEsSUFBSW9OLEVBQVEsRUFDSDNILEVBQUl2TCxLQUFLc0IsT0FBUyxFQUFHaUssR0FBSyxFQUFHQSxJQUFLLENBQ3pDLElBQUlvRyxHQUFxQixFQUFoQjNSLEtBQUtxUSxNQUFNOUUsSUFBa0IsU0FBUjJILEVBQzlCbFQsS0FBS3FRLE1BQU05RSxHQUFNb0csRUFBSTdMLEVBQU8sRUFDNUJvTixFQUFRdkIsRUFBSTdMLEVBR2QsT0FBTzlGLEtBQUs2UixTQUdkN0IsRUFBRy9QLFVBQVV1aEIsS0FBTyxTQUFlMWIsR0FDakMsT0FBTzlGLEtBQUs0RSxRQUFRZ1AsTUFBTTlOLElBRzVCa0ssRUFBRy9QLFVBQVU4aEIsS0FBTyxTQUFlcFMsR0FDakN2TSxFQUFzQixJQUFmdU0sRUFBRVMsVUFDVGhOLEdBQVF1TSxFQUFFK0QsVUFFVixJQUFJMkksRUFBSXJjLEtBQ0pzYyxFQUFJM00sRUFBRS9LLFFBR1J5WCxFQURpQixJQUFmQSxFQUFFak0sU0FDQWlNLEVBQUVvRixLQUFLOVIsR0FFUDBNLEVBQUV6WCxRQWFSLElBVEEsSUFBSW9kLEVBQUksSUFBSWhTLEVBQUcsR0FDWGlTLEVBQUksSUFBSWpTLEVBQUcsR0FHWGtTLEVBQUksSUFBSWxTLEVBQUcsR0FDWG1TLEVBQUksSUFBSW5TLEVBQUcsR0FFWG9TLEVBQUksRUFFRC9GLEVBQUVnRyxVQUFZL0YsRUFBRStGLFVBQ3JCaEcsRUFBRTlILE9BQU8sR0FDVCtILEVBQUUvSCxPQUFPLEtBQ1A2TixFQU1KLElBSEEsSUFBSUUsRUFBS2hHLEVBQUUxWCxRQUNQMmQsRUFBS2xHLEVBQUV6WCxTQUVIeVgsRUFBRTNJLFVBQVUsQ0FDbEIsSUFBSyxJQUFJbkksRUFBSSxFQUFHaVgsRUFBSyxFQUF5QixJQUFyQm5HLEVBQUVoTSxNQUFNLEdBQUttUyxJQUFhalgsRUFBSSxLQUFNQSxFQUFHaVgsSUFBTyxHQUN2RSxHQUFJalgsRUFBSSxFQUVOLElBREE4USxFQUFFOUgsT0FBT2hKLEdBQ0ZBLEtBQU0sSUFDUHlXLEVBQUVTLFNBQVdSLEVBQUVRLFdBQ2pCVCxFQUFFckwsS0FBSzJMLEdBQ1BMLEVBQUVyTCxLQUFLMkwsSUFHVFAsRUFBRXpOLE9BQU8sR0FDVDBOLEVBQUUxTixPQUFPLEdBSWIsSUFBSyxJQUFJL0ksRUFBSSxFQUFHa1gsRUFBSyxFQUF5QixJQUFyQnBHLEVBQUVqTSxNQUFNLEdBQUtxUyxJQUFhbFgsRUFBSSxLQUFNQSxFQUFHa1gsSUFBTyxHQUN2RSxHQUFJbFgsRUFBSSxFQUVOLElBREE4USxFQUFFL0gsT0FBTy9JLEdBQ0ZBLEtBQU0sSUFDUDBXLEVBQUVPLFNBQVdOLEVBQUVNLFdBQ2pCUCxFQUFFdkwsS0FBSzJMLEdBQ1BILEVBQUV2TCxLQUFLMkwsSUFHVEwsRUFBRTNOLE9BQU8sR0FDVDROLEVBQUU1TixPQUFPLEdBSVQ4SCxFQUFFaEwsSUFBSWlMLElBQU0sR0FDZEQsRUFBRXpGLEtBQUswRixHQUNQMEYsRUFBRXBMLEtBQUtzTCxHQUNQRCxFQUFFckwsS0FBS3VMLEtBRVA3RixFQUFFMUYsS0FBS3lGLEdBQ1A2RixFQUFFdEwsS0FBS29MLEdBQ1BHLEVBQUV2TCxLQUFLcUwsSUFJWCxNQUFPLENBQ0xsUCxFQUNBQyxFQUFHbVAsRUFDSFEsSUFBS3JHLEVBQUVtRCxPQUFPMkMsS0FPbEJwUyxFQUFHL1AsVUFBVTJpQixPQUFTLFNBQWlCalQsR0FDckN2TSxFQUFzQixJQUFmdU0sRUFBRVMsVUFDVGhOLEdBQVF1TSxFQUFFK0QsVUFFVixJQUFJWCxFQUFJL1MsS0FDSmdULEVBQUlyRCxFQUFFL0ssUUFHUm1PLEVBRGlCLElBQWZBLEVBQUUzQyxTQUNBMkMsRUFBRTBPLEtBQUs5UixHQUVQb0QsRUFBRW5PLFFBUVIsSUFMQSxJQXVDSXBDLEVBdkNBcWdCLEVBQUssSUFBSTdTLEVBQUcsR0FDWjhTLEVBQUssSUFBSTlTLEVBQUcsR0FFWitTLEVBQVEvUCxFQUFFcE8sUUFFUG1PLEVBQUVpUSxLQUFLLEdBQUssR0FBS2hRLEVBQUVnUSxLQUFLLEdBQUssR0FBRyxDQUNyQyxJQUFLLElBQUl6WCxFQUFJLEVBQUdpWCxFQUFLLEVBQXlCLElBQXJCelAsRUFBRTFDLE1BQU0sR0FBS21TLElBQWFqWCxFQUFJLEtBQU1BLEVBQUdpWCxJQUFPLEdBQ3ZFLEdBQUlqWCxFQUFJLEVBRU4sSUFEQXdILEVBQUV3QixPQUFPaEosR0FDRkEsS0FBTSxHQUNQc1gsRUFBR0osU0FDTEksRUFBR2xNLEtBQUtvTSxHQUdWRixFQUFHdE8sT0FBTyxHQUlkLElBQUssSUFBSS9JLEVBQUksRUFBR2tYLEVBQUssRUFBeUIsSUFBckIxUCxFQUFFM0MsTUFBTSxHQUFLcVMsSUFBYWxYLEVBQUksS0FBTUEsRUFBR2tYLElBQU8sR0FDdkUsR0FBSWxYLEVBQUksRUFFTixJQURBd0gsRUFBRXVCLE9BQU8vSSxHQUNGQSxLQUFNLEdBQ1BzWCxFQUFHTCxTQUNMSyxFQUFHbk0sS0FBS29NLEdBR1ZELEVBQUd2TyxPQUFPLEdBSVZ4QixFQUFFMUIsSUFBSTJCLElBQU0sR0FDZEQsRUFBRTZELEtBQUs1RCxHQUNQNlAsRUFBR2pNLEtBQUtrTSxLQUVSOVAsRUFBRTRELEtBQUs3RCxHQUNQK1AsRUFBR2xNLEtBQUtpTSxJQWVaLE9BVEVyZ0IsRUFEZ0IsSUFBZHVRLEVBQUVpUSxLQUFLLEdBQ0hILEVBRUFDLEdBR0FFLEtBQUssR0FBSyxHQUNoQnhnQixFQUFJbVUsS0FBS2hILEdBR0puTixHQUdUd04sRUFBRy9QLFVBQVUwaUIsSUFBTSxTQUFjN2MsR0FDL0IsR0FBSTlGLEtBQUswVCxTQUFVLE9BQU81TixFQUFJbVAsTUFDOUIsR0FBSW5QLEVBQUk0TixTQUFVLE9BQU8xVCxLQUFLaVYsTUFFOUIsSUFBSWxDLEVBQUkvUyxLQUFLNEUsUUFDVG9PLEVBQUlsTixFQUFJbEIsUUFDWm1PLEVBQUUzQyxTQUFXLEVBQ2I0QyxFQUFFNUMsU0FBVyxFQUdiLElBQUssSUFBSTJRLEVBQVEsRUFBR2hPLEVBQUVzUCxVQUFZclAsRUFBRXFQLFNBQVV0QixJQUM1Q2hPLEVBQUV3QixPQUFPLEdBQ1R2QixFQUFFdUIsT0FBTyxHQUdYLE9BQUcsQ0FDRCxLQUFPeEIsRUFBRXNQLFVBQ1B0UCxFQUFFd0IsT0FBTyxHQUVYLEtBQU92QixFQUFFcVAsVUFDUHJQLEVBQUV1QixPQUFPLEdBR1gsSUFBSXpELEVBQUlpQyxFQUFFMUIsSUFBSTJCLEdBQ2QsR0FBSWxDLEVBQUksRUFBRyxDQUVULElBQUk0RCxFQUFJM0IsRUFDUkEsRUFBSUMsRUFDSkEsRUFBSTBCLE9BQ0MsR0FBVSxJQUFONUQsR0FBeUIsSUFBZGtDLEVBQUVnUSxLQUFLLEdBQzNCLE1BR0ZqUSxFQUFFNkQsS0FBSzVELEdBR1QsT0FBT0EsRUFBRXlNLE9BQU9zQixJQUlsQi9RLEVBQUcvUCxVQUFVZ2pCLEtBQU8sU0FBZW5kLEdBQ2pDLE9BQU85RixLQUFLK2hCLEtBQUtqYyxHQUFLaU4sRUFBRTBPLEtBQUszYixJQUcvQmtLLEVBQUcvUCxVQUFVb2lCLE9BQVMsV0FDcEIsT0FBK0IsSUFBUCxFQUFoQnJpQixLQUFLcVEsTUFBTSxLQUdyQkwsRUFBRy9QLFVBQVV3aUIsTUFBUSxXQUNuQixPQUErQixJQUFQLEVBQWhCemlCLEtBQUtxUSxNQUFNLEtBSXJCTCxFQUFHL1AsVUFBVXFVLE1BQVEsU0FBZ0J4TyxHQUNuQyxPQUFPOUYsS0FBS3FRLE1BQU0sR0FBS3ZLLEdBSXpCa0ssRUFBRy9QLFVBQVVpakIsTUFBUSxTQUFnQnpNLEdBQ25DclQsRUFBc0IsaUJBQVJxVCxHQUNkLElBQUkzRixFQUFJMkYsRUFBTSxHQUNWNkcsR0FBSzdHLEVBQU0zRixHQUFLLEdBQ2hCdUQsRUFBSSxHQUFLdkQsRUFHYixHQUFJOVEsS0FBS3NCLFFBQVVnYyxFQUdqQixPQUZBdGQsS0FBS3VTLFFBQVErSyxFQUFJLEdBQ2pCdGQsS0FBS3FRLE1BQU1pTixJQUFNakosRUFDVnJVLEtBS1QsSUFEQSxJQUFJa1QsRUFBUW1CLEVBQ0g5SSxFQUFJK1IsRUFBYSxJQUFWcEssR0FBZTNILEVBQUl2TCxLQUFLc0IsT0FBUWlLLElBQUssQ0FDbkQsSUFBSW9HLEVBQW9CLEVBQWhCM1IsS0FBS3FRLE1BQU05RSxHQUVuQjJILEdBREF2QixHQUFLdUIsS0FDUyxHQUNkdkIsR0FBSyxTQUNMM1IsS0FBS3FRLE1BQU05RSxHQUFLb0csRUFNbEIsT0FKYyxJQUFWdUIsSUFDRmxULEtBQUtxUSxNQUFNOUUsR0FBSzJILEVBQ2hCbFQsS0FBS3NCLFVBRUF0QixNQUdUZ1EsRUFBRy9QLFVBQVV5VCxPQUFTLFdBQ3BCLE9BQXVCLElBQWhCMVQsS0FBS3NCLFFBQWtDLElBQWxCdEIsS0FBS3FRLE1BQU0sSUFHekNMLEVBQUcvUCxVQUFVK2lCLEtBQU8sU0FBZWxkLEdBQ2pDLElBT0l0RCxFQVBBNE4sRUFBV3RLLEVBQU0sRUFFckIsR0FBc0IsSUFBbEI5RixLQUFLb1EsV0FBbUJBLEVBQVUsT0FBUSxFQUM5QyxHQUFzQixJQUFsQnBRLEtBQUtvUSxVQUFrQkEsRUFBVSxPQUFPLEVBSzVDLEdBSEFwUSxLQUFLNlIsUUFHRDdSLEtBQUtzQixPQUFTLEVBQ2hCa0IsRUFBTSxNQUNELENBQ0Q0TixJQUNGdEssR0FBT0EsR0FHVDFDLEVBQU8wQyxHQUFPLFNBQVcscUJBRXpCLElBQUk2TCxFQUFvQixFQUFoQjNSLEtBQUtxUSxNQUFNLEdBQ25CN04sRUFBTW1QLElBQU03TCxFQUFNLEVBQUk2TCxFQUFJN0wsR0FBTyxFQUFJLEVBRXZDLE9BQXNCLElBQWxCOUYsS0FBS29RLFNBQThCLEdBQU41TixFQUMxQkEsR0FPVHdOLEVBQUcvUCxVQUFVb1IsSUFBTSxTQUFjdkwsR0FDL0IsR0FBc0IsSUFBbEI5RixLQUFLb1EsVUFBbUMsSUFBakJ0SyxFQUFJc0ssU0FBZ0IsT0FBUSxFQUN2RCxHQUFzQixJQUFsQnBRLEtBQUtvUSxVQUFtQyxJQUFqQnRLLEVBQUlzSyxTQUFnQixPQUFPLEVBRXRELElBQUk1TixFQUFNeEMsS0FBS21qQixLQUFLcmQsR0FDcEIsT0FBc0IsSUFBbEI5RixLQUFLb1EsU0FBOEIsR0FBTjVOLEVBQzFCQSxHQUlUd04sRUFBRy9QLFVBQVVrakIsS0FBTyxTQUFlcmQsR0FFakMsR0FBSTlGLEtBQUtzQixPQUFTd0UsRUFBSXhFLE9BQVEsT0FBTyxFQUNyQyxHQUFJdEIsS0FBS3NCLE9BQVN3RSxFQUFJeEUsT0FBUSxPQUFRLEVBR3RDLElBREEsSUFBSWtCLEVBQU0sRUFDRCtJLEVBQUl2TCxLQUFLc0IsT0FBUyxFQUFHaUssR0FBSyxFQUFHQSxJQUFLLENBQ3pDLElBQUl3SCxFQUFvQixFQUFoQi9TLEtBQUtxUSxNQUFNOUUsR0FDZnlILEVBQW1CLEVBQWZsTixFQUFJdUssTUFBTTlFLEdBRWxCLEdBQUl3SCxJQUFNQyxFQUFWLENBQ0lELEVBQUlDLEVBQ054USxHQUFPLEVBQ0V1USxFQUFJQyxJQUNieFEsRUFBTSxHQUVSLE9BRUYsT0FBT0EsR0FHVHdOLEVBQUcvUCxVQUFVbWpCLElBQU0sU0FBY3RkLEdBQy9CLE9BQTBCLElBQW5COUYsS0FBS2dqQixLQUFLbGQsSUFHbkJrSyxFQUFHL1AsVUFBVW9qQixHQUFLLFNBQWF2ZCxHQUM3QixPQUF5QixJQUFsQjlGLEtBQUtxUixJQUFJdkwsSUFHbEJrSyxFQUFHL1AsVUFBVXFqQixLQUFPLFNBQWV4ZCxHQUNqQyxPQUFPOUYsS0FBS2dqQixLQUFLbGQsSUFBUSxHQUczQmtLLEVBQUcvUCxVQUFVc2pCLElBQU0sU0FBY3pkLEdBQy9CLE9BQU85RixLQUFLcVIsSUFBSXZMLElBQVEsR0FHMUJrSyxFQUFHL1AsVUFBVXVqQixJQUFNLFNBQWMxZCxHQUMvQixPQUEyQixJQUFwQjlGLEtBQUtnakIsS0FBS2xkLElBR25Ca0ssRUFBRy9QLFVBQVV3akIsR0FBSyxTQUFhM2QsR0FDN0IsT0FBMEIsSUFBbkI5RixLQUFLcVIsSUFBSXZMLElBR2xCa0ssRUFBRy9QLFVBQVV5akIsS0FBTyxTQUFlNWQsR0FDakMsT0FBTzlGLEtBQUtnakIsS0FBS2xkLElBQVEsR0FHM0JrSyxFQUFHL1AsVUFBVTBqQixJQUFNLFNBQWM3ZCxHQUMvQixPQUFPOUYsS0FBS3FSLElBQUl2TCxJQUFRLEdBRzFCa0ssRUFBRy9QLFVBQVUyakIsSUFBTSxTQUFjOWQsR0FDL0IsT0FBMEIsSUFBbkI5RixLQUFLZ2pCLEtBQUtsZCxJQUduQmtLLEVBQUcvUCxVQUFVNGpCLEdBQUssU0FBYS9kLEdBQzdCLE9BQXlCLElBQWxCOUYsS0FBS3FSLElBQUl2TCxJQU9sQmtLLEVBQUdNLElBQU0sU0FBY3hLLEdBQ3JCLE9BQU8sSUFBSWdlLEVBQUloZSxJQUdqQmtLLEVBQUcvUCxVQUFVOGpCLE1BQVEsU0FBZ0JDLEdBR25DLE9BRkE1Z0IsR0FBUXBELEtBQUtzUSxJQUFLLHlDQUNsQmxOLEVBQXlCLElBQWxCcEQsS0FBS29RLFNBQWdCLGlDQUNyQjRULEVBQUlDLFVBQVVqa0IsTUFBTWtrQixVQUFVRixJQUd2Q2hVLEVBQUcvUCxVQUFVa2tCLFFBQVUsV0FFckIsT0FEQS9nQixFQUFPcEQsS0FBS3NRLElBQUssd0RBQ1Z0USxLQUFLc1EsSUFBSThULFlBQVlwa0IsT0FHOUJnUSxFQUFHL1AsVUFBVWlrQixVQUFZLFNBQW9CRixHQUUzQyxPQURBaGtCLEtBQUtzUSxJQUFNMFQsRUFDSmhrQixNQUdUZ1EsRUFBRy9QLFVBQVVva0IsU0FBVyxTQUFtQkwsR0FFekMsT0FEQTVnQixHQUFRcEQsS0FBS3NRLElBQUsseUNBQ1h0USxLQUFLa2tCLFVBQVVGLElBR3hCaFUsRUFBRy9QLFVBQVVxa0IsT0FBUyxTQUFpQnhlLEdBRXJDLE9BREExQyxFQUFPcEQsS0FBS3NRLElBQUssc0NBQ1Z0USxLQUFLc1EsSUFBSXVHLElBQUk3VyxLQUFNOEYsSUFHNUJrSyxFQUFHL1AsVUFBVXNrQixRQUFVLFNBQWtCemUsR0FFdkMsT0FEQTFDLEVBQU9wRCxLQUFLc1EsSUFBSyx1Q0FDVnRRLEtBQUtzUSxJQUFJcUcsS0FBSzNXLEtBQU04RixJQUc3QmtLLEVBQUcvUCxVQUFVdWtCLE9BQVMsU0FBaUIxZSxHQUVyQyxPQURBMUMsRUFBT3BELEtBQUtzUSxJQUFLLHNDQUNWdFEsS0FBS3NRLElBQUl3RyxJQUFJOVcsS0FBTThGLElBRzVCa0ssRUFBRy9QLFVBQVV3a0IsUUFBVSxTQUFrQjNlLEdBRXZDLE9BREExQyxFQUFPcEQsS0FBS3NRLElBQUssdUNBQ1Z0USxLQUFLc1EsSUFBSXNHLEtBQUs1VyxLQUFNOEYsSUFHN0JrSyxFQUFHL1AsVUFBVXlrQixPQUFTLFNBQWlCNWUsR0FFckMsT0FEQTFDLEVBQU9wRCxLQUFLc1EsSUFBSyxzQ0FDVnRRLEtBQUtzUSxJQUFJcVUsSUFBSTNrQixLQUFNOEYsSUFHNUJrSyxFQUFHL1AsVUFBVTJrQixPQUFTLFNBQWlCOWUsR0FHckMsT0FGQTFDLEVBQU9wRCxLQUFLc1EsSUFBSyxzQ0FDakJ0USxLQUFLc1EsSUFBSXVVLFNBQVM3a0IsS0FBTThGLEdBQ2pCOUYsS0FBS3NRLElBQUlVLElBQUloUixLQUFNOEYsSUFHNUJrSyxFQUFHL1AsVUFBVTZrQixRQUFVLFNBQWtCaGYsR0FHdkMsT0FGQTFDLEVBQU9wRCxLQUFLc1EsSUFBSyxzQ0FDakJ0USxLQUFLc1EsSUFBSXVVLFNBQVM3a0IsS0FBTThGLEdBQ2pCOUYsS0FBS3NRLElBQUl5SyxLQUFLL2EsS0FBTThGLElBRzdCa0ssRUFBRy9QLFVBQVU4a0IsT0FBUyxXQUdwQixPQUZBM2hCLEVBQU9wRCxLQUFLc1EsSUFBSyxzQ0FDakJ0USxLQUFLc1EsSUFBSTBVLFNBQVNobEIsTUFDWEEsS0FBS3NRLElBQUlnUCxJQUFJdGYsT0FHdEJnUSxFQUFHL1AsVUFBVWdsQixRQUFVLFdBR3JCLE9BRkE3aEIsRUFBT3BELEtBQUtzUSxJQUFLLHVDQUNqQnRRLEtBQUtzUSxJQUFJMFUsU0FBU2hsQixNQUNYQSxLQUFLc1EsSUFBSWlQLEtBQUt2ZixPQUl2QmdRLEVBQUcvUCxVQUFVaWxCLFFBQVUsV0FHckIsT0FGQTloQixFQUFPcEQsS0FBS3NRLElBQUssdUNBQ2pCdFEsS0FBS3NRLElBQUkwVSxTQUFTaGxCLE1BQ1hBLEtBQUtzUSxJQUFJNlUsS0FBS25sQixPQUd2QmdRLEVBQUcvUCxVQUFVbWxCLFFBQVUsV0FHckIsT0FGQWhpQixFQUFPcEQsS0FBS3NRLElBQUssdUNBQ2pCdFEsS0FBS3NRLElBQUkwVSxTQUFTaGxCLE1BQ1hBLEtBQUtzUSxJQUFJMlMsS0FBS2pqQixPQUl2QmdRLEVBQUcvUCxVQUFVb2xCLE9BQVMsV0FHcEIsT0FGQWppQixFQUFPcEQsS0FBS3NRLElBQUssc0NBQ2pCdFEsS0FBS3NRLElBQUkwVSxTQUFTaGxCLE1BQ1hBLEtBQUtzUSxJQUFJbUYsSUFBSXpWLE9BR3RCZ1EsRUFBRy9QLFVBQVVxbEIsT0FBUyxTQUFpQnhmLEdBR3JDLE9BRkExQyxFQUFPcEQsS0FBS3NRLE1BQVF4SyxFQUFJd0ssSUFBSyxxQkFDN0J0USxLQUFLc1EsSUFBSTBVLFNBQVNobEIsTUFDWEEsS0FBS3NRLElBQUkrQixJQUFJclMsS0FBTThGLElBSTVCLElBQUl5ZixFQUFTLENBQ1hDLEtBQU0sS0FDTkMsS0FBTSxLQUNOQyxLQUFNLEtBQ05DLE9BQVEsTUFJVixTQUFTQyxFQUFROWxCLEVBQU02UCxHQUVyQjNQLEtBQUtGLEtBQU9BLEVBQ1pFLEtBQUsyUCxFQUFJLElBQUlLLEVBQUdMLEVBQUcsSUFDbkIzUCxLQUFLbWUsRUFBSW5lLEtBQUsyUCxFQUFFaUYsWUFDaEI1VSxLQUFLbVQsRUFBSSxJQUFJbkQsRUFBRyxHQUFHeVAsT0FBT3pmLEtBQUttZSxHQUFHdkgsS0FBSzVXLEtBQUsyUCxHQUU1QzNQLEtBQUs0TSxJQUFNNU0sS0FBSzZsQixPQWlEbEIsU0FBU0MsSUFDUEYsRUFBT3JsQixLQUNMUCxLQUNBLE9BQ0EsMkVBK0RKLFNBQVMrbEIsSUFDUEgsRUFBT3JsQixLQUNMUCxLQUNBLE9BQ0Esa0VBSUosU0FBU2dtQixJQUNQSixFQUFPcmxCLEtBQ0xQLEtBQ0EsT0FDQSx5REFJSixTQUFTaW1CLElBRVBMLEVBQU9ybEIsS0FDTFAsS0FDQSxRQUNBLHVFQThDSixTQUFTOGpCLEVBQUsxRixHQUNaLEdBQWlCLGlCQUFOQSxFQUFnQixDQUN6QixJQUFJOEgsRUFBUWxXLEVBQUdtVyxPQUFPL0gsR0FDdEJwZSxLQUFLb2UsRUFBSThILEVBQU12VyxFQUNmM1AsS0FBS2ttQixNQUFRQSxPQUViOWlCLEVBQU9nYixFQUFFZ0YsSUFBSSxHQUFJLGtDQUNqQnBqQixLQUFLb2UsRUFBSUEsRUFDVHBlLEtBQUtrbUIsTUFBUSxLQWtPakIsU0FBU0UsRUFBTWhJLEdBQ2IwRixFQUFJdmpCLEtBQUtQLEtBQU1vZSxHQUVmcGUsS0FBSytnQixNQUFRL2dCLEtBQUtvZSxFQUFFeEosWUFDaEI1VSxLQUFLK2dCLE1BQVEsSUFBTyxJQUN0Qi9nQixLQUFLK2dCLE9BQVMsR0FBTS9nQixLQUFLK2dCLE1BQVEsSUFHbkMvZ0IsS0FBSzhRLEVBQUksSUFBSWQsRUFBRyxHQUFHeVAsT0FBT3pmLEtBQUsrZ0IsT0FDL0IvZ0IsS0FBSzZoQixHQUFLN2hCLEtBQUtxbUIsS0FBS3JtQixLQUFLOFEsRUFBRXdPLE9BQzNCdGYsS0FBS3NtQixLQUFPdG1CLEtBQUs4USxFQUFFOFIsT0FBTzVpQixLQUFLb2UsR0FFL0JwZSxLQUFLdW1CLEtBQU92bUIsS0FBS3NtQixLQUFLdFYsSUFBSWhSLEtBQUs4USxHQUFHNFAsTUFBTSxHQUFHVyxJQUFJcmhCLEtBQUtvZSxHQUNwRHBlLEtBQUt1bUIsS0FBT3ZtQixLQUFLdW1CLEtBQUs5RSxLQUFLemhCLEtBQUs4USxHQUNoQzlRLEtBQUt1bUIsS0FBT3ZtQixLQUFLOFEsRUFBRWdHLElBQUk5VyxLQUFLdW1CLE1BNWE5QlgsRUFBTzNsQixVQUFVNGxCLEtBQU8sV0FDdEIsSUFBSWpaLEVBQU0sSUFBSW9ELEVBQUcsTUFFakIsT0FEQXBELEVBQUl5RCxNQUFRLElBQUkzTyxNQUFNdVAsS0FBS1MsS0FBSzFSLEtBQUttZSxFQUFJLEtBQ2xDdlIsR0FHVGdaLEVBQU8zbEIsVUFBVXVtQixRQUFVLFNBQWtCMWdCLEdBRzNDLElBQ0kyZ0IsRUFEQTNWLEVBQUloTCxFQUdSLEdBQ0U5RixLQUFLd04sTUFBTXNELEVBQUc5USxLQUFLNE0sS0FHbkI2WixHQURBM1YsR0FEQUEsRUFBSTlRLEtBQUswbUIsTUFBTTVWLElBQ1Q2RixLQUFLM1csS0FBSzRNLE1BQ1BnSSxrQkFDRjZSLEVBQU96bUIsS0FBS21lLEdBRXJCLElBQUk5TSxFQUFNb1YsRUFBT3ptQixLQUFLbWUsR0FBSyxFQUFJck4sRUFBRXFTLEtBQUtuakIsS0FBSzJQLEdBZ0IzQyxPQWZZLElBQVIwQixHQUNGUCxFQUFFVCxNQUFNLEdBQUssRUFDYlMsRUFBRXhQLE9BQVMsR0FDRitQLEVBQU0sRUFDZlAsRUFBRThGLEtBQUs1VyxLQUFLMlAsUUFFSXJILElBQVp3SSxFQUFFZSxNQUVKZixFQUFFZSxRQUdGZixFQUFFNlYsU0FJQzdWLEdBR1Q4VSxFQUFPM2xCLFVBQVV1TixNQUFRLFNBQWdCdkgsRUFBT25ELEdBQzlDbUQsRUFBTXNPLE9BQU92VSxLQUFLbWUsRUFBRyxFQUFHcmIsSUFHMUI4aUIsRUFBTzNsQixVQUFVeW1CLE1BQVEsU0FBZ0I1Z0IsR0FDdkMsT0FBT0EsRUFBSWlWLEtBQUsvYSxLQUFLbVQsSUFTdkJ2VCxFQUFTa21CLEVBQU1GLEdBRWZFLEVBQUs3bEIsVUFBVXVOLE1BQVEsU0FBZ0J2SCxFQUFPMmdCLEdBSzVDLElBSEEsSUFBSTNHLEVBQU8sUUFFUDRHLEVBQVM1VixLQUFLaEUsSUFBSWhILEVBQU0zRSxPQUFRLEdBQzNCaUssRUFBSSxFQUFHQSxFQUFJc2IsRUFBUXRiLElBQzFCcWIsRUFBT3ZXLE1BQU05RSxHQUFLdEYsRUFBTW9LLE1BQU05RSxHQUloQyxHQUZBcWIsRUFBT3RsQixPQUFTdWxCLEVBRVo1Z0IsRUFBTTNFLFFBQVUsRUFHbEIsT0FGQTJFLEVBQU1vSyxNQUFNLEdBQUssT0FDakJwSyxFQUFNM0UsT0FBUyxHQUtqQixJQUFJeUksRUFBTzlELEVBQU1vSyxNQUFNLEdBR3ZCLElBRkF1VyxFQUFPdlcsTUFBTXVXLEVBQU90bEIsVUFBWXlJLEVBQU9rVyxFQUVsQzFVLEVBQUksR0FBSUEsRUFBSXRGLEVBQU0zRSxPQUFRaUssSUFBSyxDQUNsQyxJQUFJdWIsRUFBd0IsRUFBakI3Z0IsRUFBTW9LLE1BQU05RSxHQUN2QnRGLEVBQU1vSyxNQUFNOUUsRUFBSSxLQUFRdWIsRUFBTzdHLElBQVMsRUFBTWxXLElBQVMsR0FDdkRBLEVBQU8rYyxFQUVUL2MsS0FBVSxHQUNWOUQsRUFBTW9LLE1BQU05RSxFQUFJLElBQU14QixFQUNULElBQVRBLEdBQWM5RCxFQUFNM0UsT0FBUyxHQUMvQjJFLEVBQU0zRSxRQUFVLEdBRWhCMkUsRUFBTTNFLFFBQVUsR0FJcEJ3a0IsRUFBSzdsQixVQUFVeW1CLE1BQVEsU0FBZ0I1Z0IsR0FFckNBLEVBQUl1SyxNQUFNdkssRUFBSXhFLFFBQVUsRUFDeEJ3RSxFQUFJdUssTUFBTXZLLEVBQUl4RSxPQUFTLEdBQUssRUFDNUJ3RSxFQUFJeEUsUUFBVSxFQUlkLElBREEsSUFBSTJSLEVBQUssRUFDQTFILEVBQUksRUFBR0EsRUFBSXpGLEVBQUl4RSxPQUFRaUssSUFBSyxDQUNuQyxJQUFJb0csRUFBbUIsRUFBZjdMLEVBQUl1SyxNQUFNOUUsR0FDbEIwSCxHQUFVLElBQUp0QixFQUNON0wsRUFBSXVLLE1BQU05RSxHQUFVLFNBQUwwSCxFQUNmQSxFQUFTLEdBQUp0QixHQUFhc0IsRUFBSyxTQUFhLEdBVXRDLE9BTmtDLElBQTlCbk4sRUFBSXVLLE1BQU12SyxFQUFJeEUsT0FBUyxLQUN6QndFLEVBQUl4RSxTQUM4QixJQUE5QndFLEVBQUl1SyxNQUFNdkssRUFBSXhFLE9BQVMsSUFDekJ3RSxFQUFJeEUsVUFHRHdFLEdBU1RsRyxFQUFTbW1CLEVBQU1ILEdBUWZobUIsRUFBU29tQixFQUFNSixHQVNmaG1CLEVBQVNxbUIsRUFBUUwsR0FFakJLLEVBQU9obUIsVUFBVXltQixNQUFRLFNBQWdCNWdCLEdBR3ZDLElBREEsSUFBSW9OLEVBQVEsRUFDSDNILEVBQUksRUFBR0EsRUFBSXpGLEVBQUl4RSxPQUFRaUssSUFBSyxDQUNuQyxJQUFJc0osRUFBMEIsSUFBTCxFQUFmL08sRUFBSXVLLE1BQU05RSxJQUFpQjJILEVBQ2pDRCxFQUFVLFNBQUw0QixFQUNUQSxLQUFRLEdBRVIvTyxFQUFJdUssTUFBTTlFLEdBQUswSCxFQUNmQyxFQUFRMkIsRUFLVixPQUhjLElBQVYzQixJQUNGcE4sRUFBSXVLLE1BQU12SyxFQUFJeEUsVUFBWTRSLEdBRXJCcE4sR0FJVGtLLEVBQUdtVyxPQUFTLFNBQWdCcm1CLEdBRTFCLEdBQUl5bEIsRUFBT3psQixHQUFPLE9BQU95bEIsRUFBT3psQixHQUVoQyxJQUFJb21CLEVBQ0osR0FBYSxTQUFUcG1CLEVBQ0ZvbUIsRUFBUSxJQUFJSixPQUNQLEdBQWEsU0FBVGhtQixFQUNUb21CLEVBQVEsSUFBSUgsT0FDUCxHQUFhLFNBQVRqbUIsRUFDVG9tQixFQUFRLElBQUlGLE1BQ1AsSUFBYSxXQUFUbG1CLEVBR1QsTUFBTSxJQUFJNkYsTUFBTSxpQkFBbUI3RixHQUZuQ29tQixFQUFRLElBQUlELEVBTWQsT0FGQVYsRUFBT3psQixHQUFRb21CLEVBRVJBLEdBa0JUcEMsRUFBSTdqQixVQUFVK2tCLFNBQVcsU0FBbUJqUyxHQUMxQzNQLEVBQXNCLElBQWYyUCxFQUFFM0MsU0FBZ0IsaUNBQ3pCaE4sRUFBTzJQLEVBQUV6QyxJQUFLLG9DQUdoQndULEVBQUk3akIsVUFBVTRrQixTQUFXLFNBQW1COVIsRUFBR0MsR0FDN0M1UCxFQUFxQyxJQUE3QjJQLEVBQUUzQyxTQUFXNEMsRUFBRTVDLFVBQWlCLGlDQUN4Q2hOLEVBQU8yUCxFQUFFekMsS0FBT3lDLEVBQUV6QyxNQUFRMEMsRUFBRTFDLElBQzFCLG9DQUdKd1QsRUFBSTdqQixVQUFVb21CLEtBQU8sU0FBZXRULEdBQ2xDLE9BQUkvUyxLQUFLa21CLE1BQWNsbUIsS0FBS2ttQixNQUFNTSxRQUFRelQsR0FBR21SLFVBQVVsa0IsTUFDaEQrUyxFQUFFME8sS0FBS3poQixLQUFLb2UsR0FBRzhGLFVBQVVsa0IsT0FHbEM4akIsRUFBSTdqQixVQUFVd1YsSUFBTSxTQUFjMUMsR0FDaEMsT0FBSUEsRUFBRVcsU0FDR1gsRUFBRW5PLFFBR0o1RSxLQUFLb2UsRUFBRXRILElBQUkvRCxHQUFHbVIsVUFBVWxrQixPQUdqQzhqQixFQUFJN2pCLFVBQVU0VyxJQUFNLFNBQWM5RCxFQUFHQyxHQUNuQ2hULEtBQUs2a0IsU0FBUzlSLEVBQUdDLEdBRWpCLElBQUl4USxFQUFNdVEsRUFBRThELElBQUk3RCxHQUloQixPQUhJeFEsRUFBSTZPLElBQUlyUixLQUFLb2UsSUFBTSxHQUNyQjViLEVBQUlvVSxLQUFLNVcsS0FBS29lLEdBRVQ1YixFQUFJMGhCLFVBQVVsa0IsT0FHdkI4akIsRUFBSTdqQixVQUFVMFcsS0FBTyxTQUFlNUQsRUFBR0MsR0FDckNoVCxLQUFLNmtCLFNBQVM5UixFQUFHQyxHQUVqQixJQUFJeFEsRUFBTXVRLEVBQUU0RCxLQUFLM0QsR0FJakIsT0FISXhRLEVBQUk2TyxJQUFJclIsS0FBS29lLElBQU0sR0FDckI1YixFQUFJb1UsS0FBSzVXLEtBQUtvZSxHQUVUNWIsR0FHVHNoQixFQUFJN2pCLFVBQVU2VyxJQUFNLFNBQWMvRCxFQUFHQyxHQUNuQ2hULEtBQUs2a0IsU0FBUzlSLEVBQUdDLEdBRWpCLElBQUl4USxFQUFNdVEsRUFBRStELElBQUk5RCxHQUloQixPQUhJeFEsRUFBSXdnQixLQUFLLEdBQUssR0FDaEJ4Z0IsRUFBSW1VLEtBQUszVyxLQUFLb2UsR0FFVDViLEVBQUkwaEIsVUFBVWxrQixPQUd2QjhqQixFQUFJN2pCLFVBQVUyVyxLQUFPLFNBQWU3RCxFQUFHQyxHQUNyQ2hULEtBQUs2a0IsU0FBUzlSLEVBQUdDLEdBRWpCLElBQUl4USxFQUFNdVEsRUFBRTZELEtBQUs1RCxHQUlqQixPQUhJeFEsRUFBSXdnQixLQUFLLEdBQUssR0FDaEJ4Z0IsRUFBSW1VLEtBQUszVyxLQUFLb2UsR0FFVDViLEdBR1RzaEIsRUFBSTdqQixVQUFVMGtCLElBQU0sU0FBYzVSLEVBQUdqTixHQUVuQyxPQURBOUYsS0FBS2dsQixTQUFTalMsR0FDUC9TLEtBQUtxbUIsS0FBS3RULEVBQUVzTixNQUFNdmEsS0FHM0JnZSxFQUFJN2pCLFVBQVU4YSxLQUFPLFNBQWVoSSxFQUFHQyxHQUVyQyxPQURBaFQsS0FBSzZrQixTQUFTOVIsRUFBR0MsR0FDVmhULEtBQUtxbUIsS0FBS3RULEVBQUVnSSxLQUFLL0gsS0FHMUI4USxFQUFJN2pCLFVBQVUrUSxJQUFNLFNBQWMrQixFQUFHQyxHQUVuQyxPQURBaFQsS0FBSzZrQixTQUFTOVIsRUFBR0MsR0FDVmhULEtBQUtxbUIsS0FBS3RULEVBQUUvQixJQUFJZ0MsS0FHekI4USxFQUFJN2pCLFVBQVVzZixLQUFPLFNBQWV4TSxHQUNsQyxPQUFPL1MsS0FBSythLEtBQUtoSSxFQUFHQSxFQUFFbk8sVUFHeEJrZixFQUFJN2pCLFVBQVVxZixJQUFNLFNBQWN2TSxHQUNoQyxPQUFPL1MsS0FBS2dSLElBQUkrQixFQUFHQSxJQUdyQitRLEVBQUk3akIsVUFBVWtsQixLQUFPLFNBQWVwUyxHQUNsQyxHQUFJQSxFQUFFVyxTQUFVLE9BQU9YLEVBQUVuTyxRQUV6QixJQUFJbWlCLEVBQU8vbUIsS0FBS29lLEVBQUU5SixNQUFNLEdBSXhCLEdBSEFsUixFQUFPMmpCLEVBQU8sR0FBTSxHQUdQLElBQVRBLEVBQVksQ0FDZCxJQUFJMVUsRUFBTXJTLEtBQUtvZSxFQUFFdkgsSUFBSSxJQUFJN0csRUFBRyxJQUFJdUUsT0FBTyxHQUN2QyxPQUFPdlUsS0FBS3FTLElBQUlVLEVBQUdWLEdBUXJCLElBRkEsSUFBSWdDLEVBQUlyVSxLQUFLb2UsRUFBRXdDLEtBQUssR0FDaEJ0RCxFQUFJLEdBQ0FqSixFQUFFWCxVQUEyQixJQUFmVyxFQUFFQyxNQUFNLElBQzVCZ0osSUFDQWpKLEVBQUVFLE9BQU8sR0FFWG5SLEdBQVFpUixFQUFFWCxVQUVWLElBQUlzVCxFQUFNLElBQUloWCxFQUFHLEdBQUcrVCxNQUFNL2pCLE1BQ3RCaW5CLEVBQU9ELEVBQUkzQixTQUlYNkIsRUFBT2xuQixLQUFLb2UsRUFBRXdDLEtBQUssR0FBR3JNLE9BQU8sR0FDN0I0UyxFQUFJbm5CLEtBQUtvZSxFQUFFeEosWUFHZixJQUZBdVMsRUFBSSxJQUFJblgsRUFBRyxFQUFJbVgsRUFBSUEsR0FBR3BELE1BQU0vakIsTUFFVyxJQUFoQ0EsS0FBS3FTLElBQUk4VSxFQUFHRCxHQUFNN1YsSUFBSTRWLElBQzNCRSxFQUFFNUMsUUFBUTBDLEdBT1osSUFKQSxJQUFJdFcsRUFBSTNRLEtBQUtxUyxJQUFJOFUsRUFBRzlTLEdBQ2hCdkQsRUFBSTlRLEtBQUtxUyxJQUFJVSxFQUFHc0IsRUFBRXNNLEtBQUssR0FBR3BNLE9BQU8sSUFDakNHLEVBQUkxVSxLQUFLcVMsSUFBSVUsRUFBR3NCLEdBQ2hCK0osRUFBSWQsRUFDYyxJQUFmNUksRUFBRXJELElBQUkyVixJQUFZLENBRXZCLElBREEsSUFBSXBhLEVBQU04SCxFQUNEbkosRUFBSSxFQUFvQixJQUFqQnFCLEVBQUl5RSxJQUFJMlYsR0FBWXpiLElBQ2xDcUIsRUFBTUEsRUFBSW1ZLFNBRVozaEIsRUFBT21JLEVBQUk2UyxHQUNYLElBQUlwTCxFQUFJaFQsS0FBS3FTLElBQUkxQixFQUFHLElBQUlYLEVBQUcsR0FBR3lQLE9BQU9yQixFQUFJN1MsRUFBSSxJQUU3Q3VGLEVBQUlBLEVBQUU4VCxPQUFPNVIsR0FDYnJDLEVBQUlxQyxFQUFFK1IsU0FDTnJRLEVBQUlBLEVBQUVrUSxPQUFPalUsR0FDYnlOLEVBQUk3UyxFQUdOLE9BQU91RixHQUdUZ1QsRUFBSTdqQixVQUFVZ2pCLEtBQU8sU0FBZWxRLEdBQ2xDLElBQUlxVSxFQUFNclUsRUFBRTZQLE9BQU81aUIsS0FBS29lLEdBQ3hCLE9BQXFCLElBQWpCZ0osRUFBSWhYLFVBQ05nWCxFQUFJaFgsU0FBVyxFQUNScFEsS0FBS3FtQixLQUFLZSxHQUFLL0IsVUFFZnJsQixLQUFLcW1CLEtBQUtlLElBSXJCdEQsRUFBSTdqQixVQUFVb1MsSUFBTSxTQUFjVSxFQUFHak4sR0FDbkMsR0FBSUEsRUFBSTROLFNBQVUsT0FBTyxJQUFJMUQsRUFBRyxHQUFHK1QsTUFBTS9qQixNQUN6QyxHQUFvQixJQUFoQjhGLEVBQUlrZCxLQUFLLEdBQVUsT0FBT2pRLEVBQUVuTyxRQUVoQyxJQUNJeWlCLEVBQU0sSUFBSTNsQixNQUFNLElBQ3BCMmxCLEVBQUksR0FBSyxJQUFJclgsRUFBRyxHQUFHK1QsTUFBTS9qQixNQUN6QnFuQixFQUFJLEdBQUt0VSxFQUNULElBQUssSUFBSXhILEVBQUksRUFBR0EsRUFBSThiLEVBQUkvbEIsT0FBUWlLLElBQzlCOGIsRUFBSTliLEdBQUt2TCxLQUFLZ1IsSUFBSXFXLEVBQUk5YixFQUFJLEdBQUl3SCxHQUdoQyxJQUFJdlEsRUFBTTZrQixFQUFJLEdBQ1ZDLEVBQVUsRUFDVkMsRUFBYSxFQUNieGdCLEVBQVFqQixFQUFJOE8sWUFBYyxHQUs5QixJQUpjLElBQVY3TixJQUNGQSxFQUFRLElBR0x3RSxFQUFJekYsRUFBSXhFLE9BQVMsRUFBR2lLLEdBQUssRUFBR0EsSUFBSyxDQUVwQyxJQURBLElBQUkyRyxFQUFPcE0sRUFBSXVLLE1BQU05RSxHQUNaQyxFQUFJekUsRUFBUSxFQUFHeUUsR0FBSyxFQUFHQSxJQUFLLENBQ25DLElBQUlpTCxFQUFPdkUsR0FBUTFHLEVBQUssRUFDcEJoSixJQUFRNmtCLEVBQUksS0FDZDdrQixFQUFNeEMsS0FBS3NmLElBQUk5YyxJQUdMLElBQVJpVSxHQUF5QixJQUFaNlEsR0FLakJBLElBQVksRUFDWkEsR0FBVzdRLEdBOUJFLEtBK0JiOFEsR0FDd0MsSUFBTmhjLEdBQWlCLElBQU5DLEtBRTdDaEosRUFBTXhDLEtBQUtnUixJQUFJeE8sRUFBSzZrQixFQUFJQyxJQUN4QkMsRUFBYSxFQUNiRCxFQUFVLElBWFJDLEVBQWEsRUFhakJ4Z0IsRUFBUSxHQUdWLE9BQU92RSxHQUdUc2hCLEVBQUk3akIsVUFBVWdrQixVQUFZLFNBQW9CbmUsR0FDNUMsSUFBSWdMLEVBQUloTCxFQUFJMmIsS0FBS3poQixLQUFLb2UsR0FFdEIsT0FBT3ROLElBQU1oTCxFQUFNZ0wsRUFBRWxNLFFBQVVrTSxHQUdqQ2dULEVBQUk3akIsVUFBVW1rQixZQUFjLFNBQXNCdGUsR0FDaEQsSUFBSXRELEVBQU1zRCxFQUFJbEIsUUFFZCxPQURBcEMsRUFBSThOLElBQU0sS0FDSDlOLEdBT1R3TixFQUFHd1gsS0FBTyxTQUFlMWhCLEdBQ3ZCLE9BQU8sSUFBSXNnQixFQUFLdGdCLElBbUJsQmxHLEVBQVN3bUIsRUFBTXRDLEdBRWZzQyxFQUFLbm1CLFVBQVVna0IsVUFBWSxTQUFvQm5lLEdBQzdDLE9BQU85RixLQUFLcW1CLEtBQUt2Z0IsRUFBSXVhLE1BQU1yZ0IsS0FBSytnQixTQUdsQ3FGLEVBQUtubUIsVUFBVW1rQixZQUFjLFNBQXNCdGUsR0FDakQsSUFBSWdMLEVBQUk5USxLQUFLcW1CLEtBQUt2Z0IsRUFBSWtMLElBQUloUixLQUFLc21CLE9BRS9CLE9BREF4VixFQUFFUixJQUFNLEtBQ0RRLEdBR1RzVixFQUFLbm1CLFVBQVU4YSxLQUFPLFNBQWVoSSxFQUFHQyxHQUN0QyxHQUFJRCxFQUFFVyxVQUFZVixFQUFFVSxTQUdsQixPQUZBWCxFQUFFMUMsTUFBTSxHQUFLLEVBQ2IwQyxFQUFFelIsT0FBUyxFQUNKeVIsRUFHVCxJQUFJMkIsRUFBSTNCLEVBQUVnSSxLQUFLL0gsR0FDWHJDLEVBQUkrRCxFQUFFK0wsTUFBTXpnQixLQUFLK2dCLE9BQU8vUCxJQUFJaFIsS0FBS3VtQixNQUFNL0YsT0FBT3hnQixLQUFLK2dCLE9BQU8vUCxJQUFJaFIsS0FBS29lLEdBQ25FcUosRUFBSS9TLEVBQUVrQyxLQUFLakcsR0FBRzRELE9BQU92VSxLQUFLK2dCLE9BQzFCdmUsRUFBTWlsQixFQVFWLE9BTklBLEVBQUVwVyxJQUFJclIsS0FBS29lLElBQU0sRUFDbkI1YixFQUFNaWxCLEVBQUU3USxLQUFLNVcsS0FBS29lLEdBQ1RxSixFQUFFekUsS0FBSyxHQUFLLElBQ3JCeGdCLEVBQU1pbEIsRUFBRTlRLEtBQUszVyxLQUFLb2UsSUFHYjViLEVBQUkwaEIsVUFBVWxrQixPQUd2Qm9tQixFQUFLbm1CLFVBQVUrUSxJQUFNLFNBQWMrQixFQUFHQyxHQUNwQyxHQUFJRCxFQUFFVyxVQUFZVixFQUFFVSxTQUFVLE9BQU8sSUFBSTFELEVBQUcsR0FBR2tVLFVBQVVsa0IsTUFFekQsSUFBSTBVLEVBQUkzQixFQUFFL0IsSUFBSWdDLEdBQ1ZyQyxFQUFJK0QsRUFBRStMLE1BQU16Z0IsS0FBSytnQixPQUFPL1AsSUFBSWhSLEtBQUt1bUIsTUFBTS9GLE9BQU94Z0IsS0FBSytnQixPQUFPL1AsSUFBSWhSLEtBQUtvZSxHQUNuRXFKLEVBQUkvUyxFQUFFa0MsS0FBS2pHLEdBQUc0RCxPQUFPdlUsS0FBSytnQixPQUMxQnZlLEVBQU1pbEIsRUFPVixPQU5JQSxFQUFFcFcsSUFBSXJSLEtBQUtvZSxJQUFNLEVBQ25CNWIsRUFBTWlsQixFQUFFN1EsS0FBSzVXLEtBQUtvZSxHQUNUcUosRUFBRXpFLEtBQUssR0FBSyxJQUNyQnhnQixFQUFNaWxCLEVBQUU5USxLQUFLM1csS0FBS29lLElBR2I1YixFQUFJMGhCLFVBQVVsa0IsT0FHdkJvbUIsRUFBS25tQixVQUFVZ2pCLEtBQU8sU0FBZWxRLEdBR25DLE9BRFUvUyxLQUFLcW1CLEtBQUt0VCxFQUFFNlAsT0FBTzVpQixLQUFLb2UsR0FBR3BOLElBQUloUixLQUFLNmhCLEtBQ25DcUMsVUFBVWxrQixPQW4zR3pCLEMsV0FxM0c0Q0EsTyw0QkNuM0c1QyxJQUFJbXNGLEVBQVc5c0YsRUFFZjhzRixFQUFTekgsUUFBVSxXQUNuQnlILEVBQVNub0MsTUFBUSxFQUFRLEtBQ3pCbW9DLEVBQVM5cEQsS0FBTyxFQUFRLE1BQ3hCOHBELEVBQVNyMkMsTUFBUSxFQUFRLE1BQ3pCcTJDLEVBQVNuM0MsT0FBUyxFQUFRLE1BRzFCbTNDLEVBQVNXLEdBQUssRUFBUSxNQUN0QlgsRUFBU2lLLE1BQVEsRUFBUSxPLDRCQ1Z6QixJQUFJcG1GLEVBQUssRUFBUSxNQUNiZzBDLEVBQVEsRUFBUSxLQUNoQnF5QyxFQUFTcnlDLEVBQU1xeUMsT0FDZkMsRUFBU3R5QyxFQUFNc3lDLE9BQ2ZsekYsRUFBUzRnRCxFQUFNNWdELE9BRW5CLFNBQVNtekYsRUFBVXJ1RixFQUFNc3VGLEdBQ3ZCeDJGLEtBQUtrSSxLQUFPQSxFQUNabEksS0FBSzJQLEVBQUksSUFBSUssRUFBR3dtRixFQUFLN21GLEVBQUcsSUFHeEIzUCxLQUFLc1EsSUFBTWttRixFQUFLdHdFLE1BQVFsVyxFQUFHTSxJQUFJa21GLEVBQUt0d0UsT0FBU2xXLEVBQUd3WCxLQUFLeG5CLEtBQUsyUCxHQUcxRDNQLEtBQUsya0QsS0FBTyxJQUFJMzBDLEVBQUcsR0FBRytULE1BQU0vakIsS0FBS3NRLEtBQ2pDdFEsS0FBS2duQixJQUFNLElBQUloWCxFQUFHLEdBQUcrVCxNQUFNL2pCLEtBQUtzUSxLQUNoQ3RRLEtBQUtpTyxJQUFNLElBQUkrQixFQUFHLEdBQUcrVCxNQUFNL2pCLEtBQUtzUSxLQUdoQ3RRLEtBQUttZSxFQUFJcTRFLEVBQUtyNEUsR0FBSyxJQUFJbk8sRUFBR3dtRixFQUFLcjRFLEVBQUcsSUFDbENuZSxLQUFLb2lCLEVBQUlvMEUsRUFBS3AwRSxHQUFLcGlCLEtBQUt5MkYsY0FBY0QsRUFBS3AwRSxFQUFHbzBFLEVBQUtFLE1BR25EMTJGLEtBQUsyMkYsUUFBVSxJQUFJajFGLE1BQU0sR0FDekIxQixLQUFLNDJGLFFBQVUsSUFBSWwxRixNQUFNLEdBQ3pCMUIsS0FBSzYyRixRQUFVLElBQUluMUYsTUFBTSxHQUN6QjFCLEtBQUs4MkYsUUFBVSxJQUFJcDFGLE1BQU0sR0FFekIxQixLQUFLKzJGLFdBQWEvMkYsS0FBS21lLEVBQUluZSxLQUFLbWUsRUFBRXZKLFlBQWMsRUFHaEQsSUFBSW9pRixFQUFjaDNGLEtBQUttZSxHQUFLbmUsS0FBSzJQLEVBQUUwUixJQUFJcmhCLEtBQUttZSxJQUN2QzY0RSxHQUFlQSxFQUFZaDBFLEtBQUssS0FBTyxFQUMxQ2hqQixLQUFLaTNGLEtBQU8sTUFFWmozRixLQUFLazNGLGVBQWdCLEVBQ3JCbDNGLEtBQUtpM0YsS0FBT2ozRixLQUFLbWUsRUFBRTRGLE1BQU0vakIsS0FBS3NRLE1Bd05sQyxTQUFTNm1GLEVBQVVyaEQsRUFBTzV0QyxHQUN4QmxJLEtBQUs4MUMsTUFBUUEsRUFDYjkxQyxLQUFLa0ksS0FBT0EsRUFDWmxJLEtBQUtvM0YsWUFBYyxLQXhOckIxeUYsRUFBT3JGLFFBQVVrM0YsRUFFakJBLEVBQVV0MkYsVUFBVW8zRixNQUFRLFdBQzFCLE1BQU0sSUFBSTF4RixNQUFNLG9CQUdsQjR3RixFQUFVdDJGLFVBQVVxM0YsU0FBVyxXQUM3QixNQUFNLElBQUkzeEYsTUFBTSxvQkFHbEI0d0YsRUFBVXQyRixVQUFVczNGLGFBQWUsU0FBc0I1bkYsRUFBR3dELEdBQzFEL1AsRUFBT3VNLEVBQUV5bkYsYUFDVCxJQUFJSSxFQUFVN25GLEVBQUU4bkYsY0FFWkMsRUFBTXJCLEVBQU9sakYsRUFBRyxFQUFHblQsS0FBSysyRixZQUN4Qi8xQixHQUFLLEdBQU13MkIsRUFBUUcsS0FBTyxJQUFPSCxFQUFRRyxLQUFPLEdBQU0sRUFBSSxFQUFJLEdBQ2xFMzJCLEdBQUssRUFHTCxJQUNJeDFELEVBQ0Fvc0YsRUFGQUMsRUFBTyxHQUdYLElBQUtyc0YsRUFBSSxFQUFHQSxFQUFJa3NGLEVBQUlwMkYsT0FBUWtLLEdBQUtnc0YsRUFBUUcsS0FBTSxDQUM3Q0MsRUFBTyxFQUNQLElBQUssSUFBSWg3RSxFQUFJcFIsRUFBSWdzRixFQUFRRyxLQUFPLEVBQUcvNkUsR0FBS3BSLEVBQUdvUixJQUN6Q2c3RSxHQUFRQSxHQUFRLEdBQUtGLEVBQUk5NkUsR0FDM0JpN0UsRUFBSzd5RixLQUFLNHlGLEdBS1osSUFGQSxJQUFJN2tGLEVBQUkvUyxLQUFLODNGLE9BQU8sS0FBTSxLQUFNLE1BQzVCOWtGLEVBQUloVCxLQUFLODNGLE9BQU8sS0FBTSxLQUFNLE1BQ3ZCdnNGLEVBQUl5MUQsRUFBR3oxRCxFQUFJLEVBQUdBLElBQUssQ0FDMUIsSUFBS0MsRUFBSSxFQUFHQSxFQUFJcXNGLEVBQUt2MkYsT0FBUWtLLEtBQzNCb3NGLEVBQU9DLEVBQUtyc0YsTUFDQ0QsRUFDWHlILEVBQUlBLEVBQUUra0YsU0FBU1AsRUFBUVEsT0FBT3hzRixJQUN2Qm9zRixLQUFVcnNGLElBQ2pCeUgsRUFBSUEsRUFBRStrRixTQUFTUCxFQUFRUSxPQUFPeHNGLEdBQUdpSyxRQUVyQzFDLEVBQUlBLEVBQUU4RCxJQUFJN0QsR0FFWixPQUFPRCxFQUFFa2xGLE9BR1gxQixFQUFVdDJGLFVBQVVpNEYsU0FBVyxTQUFrQnZvRixFQUFHd0QsR0FDbEQsSUFBSXhCLEVBQUksRUFHSndtRixFQUFZeG9GLEVBQUV5b0YsY0FBY3ptRixHQUNoQ0EsRUFBSXdtRixFQUFVOXdFLElBUWQsSUFQQSxJQUFJQSxFQUFNOHdFLEVBQVVILE9BR2hCTixFQUFNckIsRUFBT2xqRixFQUFHeEIsRUFBRzNSLEtBQUsrMkYsWUFHeEJqMUUsRUFBTTloQixLQUFLODNGLE9BQU8sS0FBTSxLQUFNLE1BQ3pCdnNGLEVBQUltc0YsRUFBSXAyRixPQUFTLEVBQUdpSyxHQUFLLEVBQUdBLElBQUssQ0FFeEMsSUFBSyxJQUFJcVIsRUFBSSxFQUFHclIsR0FBSyxHQUFnQixJQUFYbXNGLEVBQUluc0YsR0FBVUEsSUFDdENxUixJQUtGLEdBSklyUixHQUFLLEdBQ1BxUixJQUNGa0YsRUFBTUEsRUFBSXUyRSxLQUFLejdFLEdBRVhyUixFQUFJLEVBQ04sTUFDRixJQUFJNGIsRUFBSXV3RSxFQUFJbnNGLEdBQ1puSSxFQUFhLElBQU4rakIsR0FJSHJGLEVBSFcsV0FBWG5TLEVBQUV6SCxLQUVBaWYsRUFBSSxFQUNBckYsRUFBSWkyRSxTQUFTMXdFLEVBQUtGLEVBQUksR0FBTSxJQUU1QnJGLEVBQUlpMkUsU0FBUzF3RSxHQUFNRixFQUFJLEdBQU0sR0FBRzFSLE9BR3BDMFIsRUFBSSxFQUNBckYsRUFBSWpMLElBQUl3USxFQUFLRixFQUFJLEdBQU0sSUFFdkJyRixFQUFJakwsSUFBSXdRLEdBQU1GLEVBQUksR0FBTSxHQUFHMVIsT0FHdkMsTUFBa0IsV0FBWDlGLEVBQUV6SCxLQUFvQjRaLEVBQUltMkUsTUFBUW4yRSxHQUczQ3kwRSxFQUFVdDJGLFVBQVVxNEYsWUFBYyxTQUFxQkMsRUFDckRQLEVBQ0FRLEVBQ0FsdEYsRUFDQW10RixHQUNBLElBTUlsdEYsRUFDQUMsRUFDQW1FLEVBUkErb0YsRUFBVzE0RixLQUFLMjJGLFFBQ2hCdHZFLEVBQU1ybkIsS0FBSzQyRixRQUNYYyxFQUFNMTNGLEtBQUs2MkYsUUFHWDNsRixFQUFNLEVBSVYsSUFBSzNGLEVBQUksRUFBR0EsRUFBSUQsRUFBS0MsSUFBSyxDQUV4QixJQUFJNHNGLEdBREp4b0YsRUFBSXFvRixFQUFPenNGLElBQ082c0YsY0FBY0csR0FDaENHLEVBQVNudEYsR0FBSzRzRixFQUFVOXdFLElBQ3hCQSxFQUFJOWIsR0FBSzRzRixFQUFVSCxPQUlyQixJQUFLenNGLEVBQUlELEVBQU0sRUFBR0MsR0FBSyxFQUFHQSxHQUFLLEVBQUcsQ0FDaEMsSUFBSXdILEVBQUl4SCxFQUFJLEVBQ1J5SCxFQUFJekgsRUFDUixHQUFvQixJQUFoQm10RixFQUFTM2xGLElBQTRCLElBQWhCMmxGLEVBQVMxbEYsR0FBbEMsQ0FRQSxJQUFJMmxGLEVBQU8sQ0FDVFgsRUFBT2psRixHQUNQLEtBQ0EsS0FDQWlsRixFQUFPaGxGLElBSTRCLElBQWpDZ2xGLEVBQU9qbEYsR0FBR3VKLEVBQUVqTCxJQUFJMm1GLEVBQU9obEYsR0FBR3NKLElBQzVCcThFLEVBQUssR0FBS1gsRUFBT2psRixHQUFHOEQsSUFBSW1oRixFQUFPaGxGLElBQy9CMmxGLEVBQUssR0FBS1gsRUFBT2psRixHQUFHNmxGLE1BQU1iLFNBQVNDLEVBQU9obEYsR0FBR3lDLFFBQ00sSUFBMUN1aUYsRUFBT2psRixHQUFHdUosRUFBRWpMLElBQUkybUYsRUFBT2hsRixHQUFHc0osRUFBRStJLFdBQ3JDc3pFLEVBQUssR0FBS1gsRUFBT2psRixHQUFHNmxGLE1BQU1iLFNBQVNDLEVBQU9obEYsSUFDMUMybEYsRUFBSyxHQUFLWCxFQUFPamxGLEdBQUc4RCxJQUFJbWhGLEVBQU9obEYsR0FBR3lDLFNBRWxDa2pGLEVBQUssR0FBS1gsRUFBT2psRixHQUFHNmxGLE1BQU1iLFNBQVNDLEVBQU9obEYsSUFDMUMybEYsRUFBSyxHQUFLWCxFQUFPamxGLEdBQUc2bEYsTUFBTWIsU0FBU0MsRUFBT2hsRixHQUFHeUMsUUFHL0MsSUFBSTNMLEVBQVEsRUFDVCxHQUNBLEdBQ0EsR0FDQSxFQUNELEVBQ0EsRUFDQSxFQUNBLEVBQ0EsR0FHRSt1RixFQUFNdkMsRUFBT2tDLEVBQU96bEYsR0FBSXlsRixFQUFPeGxGLElBSW5DLElBSEE5QixFQUFNRCxLQUFLQyxJQUFJMm5GLEVBQUksR0FBR3YzRixPQUFRNFAsR0FDOUJ3bUYsRUFBSTNrRixHQUFLLElBQUlyUixNQUFNd1AsR0FDbkJ3bUYsRUFBSTFrRixHQUFLLElBQUl0UixNQUFNd1AsR0FDZDFGLEVBQUksRUFBR0EsRUFBSTBGLEVBQUsxRixJQUFLLENBQ3hCLElBQUlzdEYsRUFBaUIsRUFBWkQsRUFBSSxHQUFHcnRGLEdBQ1p1dEYsRUFBaUIsRUFBWkYsRUFBSSxHQUFHcnRGLEdBRWhCa3NGLEVBQUkza0YsR0FBR3ZILEdBQUsxQixFQUFpQixHQUFWZ3ZGLEVBQUssSUFBVUMsRUFBSyxJQUN2Q3JCLEVBQUkxa0YsR0FBR3hILEdBQUssRUFDWjZiLEVBQUl0VSxHQUFLNGxGLFFBaERUakIsRUFBSTNrRixHQUFLc2pGLEVBQU9tQyxFQUFPemxGLEdBQUkybEYsRUFBUzNsRixHQUFJL1MsS0FBSysyRixZQUM3Q1csRUFBSTFrRixHQUFLcWpGLEVBQU9tQyxFQUFPeGxGLEdBQUkwbEYsRUFBUzFsRixHQUFJaFQsS0FBSysyRixZQUM3QzdsRixFQUFNRCxLQUFLQyxJQUFJd21GLEVBQUkza0YsR0FBR3pSLE9BQVE0UCxHQUM5QkEsRUFBTUQsS0FBS0MsSUFBSXdtRixFQUFJMWtGLEdBQUcxUixPQUFRNFAsR0FpRGxDLElBQUk0USxFQUFNOWhCLEtBQUs4M0YsT0FBTyxLQUFNLEtBQU0sTUFDOUJsckYsRUFBTTVNLEtBQUs4MkYsUUFDZixJQUFLdnJGLEVBQUkyRixFQUFLM0YsR0FBSyxFQUFHQSxJQUFLLENBR3pCLElBRkEsSUFBSTRILEVBQUksRUFFRDVILEdBQUssR0FBRyxDQUNiLElBQUlvNUMsR0FBTyxFQUNYLElBQUtuNUMsRUFBSSxFQUFHQSxFQUFJRixFQUFLRSxJQUNuQm9CLEVBQUlwQixHQUFpQixFQUFaa3NGLEVBQUlsc0YsR0FBR0QsR0FDRCxJQUFYcUIsRUFBSXBCLEtBQ05tNUMsR0FBTyxHQUVYLElBQUtBLEVBQ0gsTUFDRnh4QyxJQUNBNUgsSUFLRixHQUhJQSxHQUFLLEdBQ1A0SCxJQUNGMk8sRUFBTUEsRUFBSXUyRSxLQUFLbGxGLEdBQ1g1SCxFQUFJLEVBQ04sTUFFRixJQUFLQyxFQUFJLEVBQUdBLEVBQUlGLEVBQUtFLElBQUssQ0FDeEIsSUFBSTJiLEVBQUl2YSxFQUFJcEIsR0FFRixJQUFOMmIsSUFFS0EsRUFBSSxFQUNYeFgsRUFBSTBYLEVBQUk3YixHQUFJMmIsRUFBSSxHQUFNLEdBQ2ZBLEVBQUksSUFDWHhYLEVBQUkwWCxFQUFJN2IsSUFBSzJiLEVBQUksR0FBTSxHQUFHMVIsT0FHMUJxTSxFQURhLFdBQVhuUyxFQUFFekgsS0FDRTRaLEVBQUlpMkUsU0FBU3BvRixHQUVibVMsRUFBSWpMLElBQUlsSCxLQUlwQixJQUFLcEUsRUFBSSxFQUFHQSxFQUFJRCxFQUFLQyxJQUNuQjhiLEVBQUk5YixHQUFLLEtBRVgsT0FBSWt0RixFQUNLMzJFLEVBRUFBLEVBQUltMkUsT0FRZjFCLEVBQVVZLFVBQVlBLEVBRXRCQSxFQUFVbDNGLFVBQVU0akIsR0FBSyxXQUN2QixNQUFNLElBQUlsZSxNQUFNLG9CQUdsQnd4RixFQUFVbDNGLFVBQVVxM0YsU0FBVyxXQUM3QixPQUFPdDNGLEtBQUs4MUMsTUFBTXdoRCxTQUFTdDNGLE9BRzdCdTJGLEVBQVV0MkYsVUFBVSs0RixZQUFjLFNBQXFCdDJGLEVBQU9qQyxHQUM1RGlDLEVBQVFzaEQsRUFBTTMwQyxRQUFRM00sRUFBT2pDLEdBRTdCLElBQUk2SyxFQUFNdEwsS0FBSzJQLEVBQUU1TixhQUdqQixJQUFrQixJQUFiVyxFQUFNLElBQTRCLElBQWJBLEVBQU0sSUFBNEIsSUFBYkEsRUFBTSxLQUNqREEsRUFBTXBCLE9BQVMsR0FBTSxFQUFJZ0ssRUFTM0IsT0FSaUIsSUFBYjVJLEVBQU0sR0FDUlUsRUFBT1YsRUFBTUEsRUFBTXBCLE9BQVMsR0FBSyxHQUFNLEdBQ25CLElBQWJvQixFQUFNLElBQ2JVLEVBQU9WLEVBQU1BLEVBQU1wQixPQUFTLEdBQUssR0FBTSxHQUU5QnRCLEtBQUtxM0YsTUFBTTMwRixFQUFNRSxNQUFNLEVBQUcsRUFBSTBJLEdBQ3ZDNUksRUFBTUUsTUFBTSxFQUFJMEksRUFBSyxFQUFJLEVBQUlBLElBRzFCLElBQWtCLElBQWI1SSxFQUFNLElBQTRCLElBQWJBLEVBQU0sS0FDM0JBLEVBQU1wQixPQUFTLElBQU1nSyxFQUMvQixPQUFPdEwsS0FBS2k1RixXQUFXdjJGLEVBQU1FLE1BQU0sRUFBRyxFQUFJMEksR0FBbUIsSUFBYjVJLEVBQU0sSUFFeEQsTUFBTSxJQUFJaUQsTUFBTSx5QkFHbEJ3eEYsRUFBVWwzRixVQUFVaTVGLGlCQUFtQixTQUEwQno0RixHQUMvRCxPQUFPVCxLQUFLZSxPQUFPTixHQUFLLElBRzFCMDJGLEVBQVVsM0YsVUFBVW1JLFFBQVUsU0FBaUJxb0IsR0FDN0MsSUFBSW5sQixFQUFNdEwsS0FBSzgxQyxNQUFNbm1DLEVBQUU1TixhQUNuQnNhLEVBQUlyYyxLQUFLOHRGLE9BQU96K0UsUUFBUSxLQUFNL0QsR0FFbEMsT0FBSW1sQixFQUNLLENBQUV6d0IsS0FBS201RixPQUFPOTJFLFNBQVcsRUFBTyxHQUFPOWUsT0FBTzhZLEdBRWhELENBQUUsR0FBTzlZLE9BQU84WSxFQUFHcmMsS0FBS201RixPQUFPOXBGLFFBQVEsS0FBTS9ELEtBR3RENnJGLEVBQVVsM0YsVUFBVWMsT0FBUyxTQUFnQk4sRUFBS2d3QixHQUNoRCxPQUFPdXpCLEVBQU1qakQsT0FBT2YsS0FBS29JLFFBQVFxb0IsR0FBVWh3QixJQUc3QzAyRixFQUFVbDNGLFVBQVVtNUYsV0FBYSxTQUFvQkMsR0FDbkQsR0FBSXI1RixLQUFLbzNGLFlBQ1AsT0FBT3AzRixLQUVULElBQUlvM0YsRUFBYyxDQUNoQkksUUFBUyxLQUNURSxJQUFLLEtBQ0w0QixLQUFNLE1BT1IsT0FMQWxDLEVBQVlNLElBQU0xM0YsS0FBS280RixjQUFjLEdBQ3JDaEIsRUFBWUksUUFBVXgzRixLQUFLeTNGLFlBQVksRUFBRzRCLEdBQzFDakMsRUFBWWtDLEtBQU90NUYsS0FBS3U1RixXQUN4QnY1RixLQUFLbzNGLFlBQWNBLEVBRVpwM0YsTUFHVG0zRixFQUFVbDNGLFVBQVV1NUYsWUFBYyxTQUFxQnJtRixHQUNyRCxJQUFLblQsS0FBS28zRixZQUNSLE9BQU8sRUFFVCxJQUFJSSxFQUFVeDNGLEtBQUtvM0YsWUFBWUksUUFDL0IsUUFBS0EsR0FHRUEsRUFBUVEsT0FBTzEyRixRQUFVMlAsS0FBS1MsTUFBTXlCLEVBQUV5QixZQUFjLEdBQUs0aUYsRUFBUUcsT0FHMUVSLEVBQVVsM0YsVUFBVXczRixZQUFjLFNBQXFCRSxFQUFNMEIsR0FDM0QsR0FBSXI1RixLQUFLbzNGLGFBQWVwM0YsS0FBS28zRixZQUFZSSxRQUN2QyxPQUFPeDNGLEtBQUtvM0YsWUFBWUksUUFJMUIsSUFGQSxJQUFJQSxFQUFVLENBQUV4M0YsTUFDWjhoQixFQUFNOWhCLEtBQ0R1TCxFQUFJLEVBQUdBLEVBQUk4dEYsRUFBTzl0RixHQUFLb3NGLEVBQU0sQ0FDcEMsSUFBSyxJQUFJbnNGLEVBQUksRUFBR0EsRUFBSW1zRixFQUFNbnNGLElBQ3hCc1csRUFBTUEsRUFBSTIzRSxNQUNaakMsRUFBUXh5RixLQUFLOGMsR0FFZixNQUFPLENBQ0w2MUUsS0FBTUEsRUFDTkssT0FBUVIsSUFJWkwsRUFBVWwzRixVQUFVbTRGLGNBQWdCLFNBQXVCL3dFLEdBQ3pELEdBQUlybkIsS0FBS28zRixhQUFlcDNGLEtBQUtvM0YsWUFBWU0sSUFDdkMsT0FBTzEzRixLQUFLbzNGLFlBQVlNLElBSzFCLElBSEEsSUFBSWwxRixFQUFNLENBQUV4QyxNQUNSa1IsR0FBTyxHQUFLbVcsR0FBTyxFQUNuQm95RSxFQUFjLElBQVJ2b0YsRUFBWSxLQUFPbFIsS0FBS3k1RixNQUN6Qmx1RixFQUFJLEVBQUdBLEVBQUkyRixFQUFLM0YsSUFDdkIvSSxFQUFJK0ksR0FBSy9JLEVBQUkrSSxFQUFJLEdBQUdzTCxJQUFJNGlGLEdBQzFCLE1BQU8sQ0FDTHB5RSxJQUFLQSxFQUNMMndFLE9BQVF4MUYsSUFJWjIwRixFQUFVbDNGLFVBQVVzNUYsU0FBVyxXQUM3QixPQUFPLE1BR1RwQyxFQUFVbDNGLFVBQVVvNEYsS0FBTyxTQUFjbGxGLEdBRXZDLElBREEsSUFBSXJDLEVBQUk5USxLQUNDdUwsRUFBSSxFQUFHQSxFQUFJNEgsRUFBRzVILElBQ3JCdUYsRUFBSUEsRUFBRTJvRixNQUNSLE9BQU8zb0YsSSw0QkN6WFQsSUFBSWt6QyxFQUFRLEVBQVEsS0FDaEJoMEMsRUFBSyxFQUFRLE1BQ2JwUSxFQUFXLEVBQVEsTUFDbkJPLEVBQU8sRUFBUSxNQUVmaUQsRUFBUzRnRCxFQUFNNWdELE9BRW5CLFNBQVNzMkYsRUFBYWxELEdBRXBCeDJGLEtBQUsyNUYsUUFBMkIsSUFBUCxFQUFUbkQsRUFBS3pqRixHQUNyQi9TLEtBQUs0NUYsTUFBUTU1RixLQUFLMjVGLFVBQTZCLElBQVIsRUFBVG5ELEVBQUt6akYsR0FDbkMvUyxLQUFLK2YsU0FBVy9mLEtBQUs0NUYsTUFFckJ6NUYsRUFBS0ksS0FBS1AsS0FBTSxVQUFXdzJGLEdBRTNCeDJGLEtBQUsrUyxFQUFJLElBQUkvQyxFQUFHd21GLEVBQUt6akYsRUFBRyxJQUFJME8sS0FBS3poQixLQUFLc1EsSUFBSThOLEdBQzFDcGUsS0FBSytTLEVBQUkvUyxLQUFLK1MsRUFBRWdSLE1BQU0vakIsS0FBS3NRLEtBQzNCdFEsS0FBSzJRLEVBQUksSUFBSVgsRUFBR3dtRixFQUFLN2xGLEVBQUcsSUFBSW9ULE1BQU0vakIsS0FBS3NRLEtBQ3ZDdFEsS0FBS3F6QyxHQUFLcnpDLEtBQUsyUSxFQUFFb1UsU0FDakIva0IsS0FBS3c3QixFQUFJLElBQUl4ckIsRUFBR3dtRixFQUFLaDdELEVBQUcsSUFBSXpYLE1BQU0vakIsS0FBS3NRLEtBQ3ZDdFEsS0FBSzY1RixHQUFLNzVGLEtBQUt3N0IsRUFBRWxYLE9BQU90a0IsS0FBS3c3QixHQUU3QnA0QixHQUFRcEQsS0FBSzI1RixTQUF3QyxJQUE3QjM1RixLQUFLMlEsRUFBRXdULFVBQVVuQixLQUFLLElBQzlDaGpCLEtBQUs4NUYsS0FBd0IsSUFBUCxFQUFUdEQsRUFBSzdsRixHQXdGcEIsU0FBU29wRixFQUFNamtELEVBQU96NUIsRUFBR0MsRUFBRzZLLEVBQUd6UyxHQUM3QnZVLEVBQUtnM0YsVUFBVTUyRixLQUFLUCxLQUFNODFDLEVBQU8sY0FDdkIsT0FBTno1QixHQUFvQixPQUFOQyxHQUFvQixPQUFONkssR0FDOUJubkIsS0FBS3FjLEVBQUlyYyxLQUFLODFDLE1BQU02TyxLQUNwQjNrRCxLQUFLc2MsRUFBSXRjLEtBQUs4MUMsTUFBTTl1QixJQUNwQmhuQixLQUFLbW5CLEVBQUlubkIsS0FBSzgxQyxNQUFNOXVCLElBQ3BCaG5CLEtBQUswVSxFQUFJMVUsS0FBSzgxQyxNQUFNNk8sS0FDcEIza0QsS0FBS2c2RixNQUFPLElBRVpoNkYsS0FBS3FjLEVBQUksSUFBSXJNLEVBQUdxTSxFQUFHLElBQ25CcmMsS0FBS3NjLEVBQUksSUFBSXRNLEVBQUdzTSxFQUFHLElBQ25CdGMsS0FBS21uQixFQUFJQSxFQUFJLElBQUluWCxFQUFHbVgsRUFBRyxJQUFNbm5CLEtBQUs4MUMsTUFBTTl1QixJQUN4Q2huQixLQUFLMFUsRUFBSUEsR0FBSyxJQUFJMUUsRUFBRzBFLEVBQUcsSUFDbkIxVSxLQUFLcWMsRUFBRS9MLE1BQ1Z0USxLQUFLcWMsRUFBSXJjLEtBQUtxYyxFQUFFMEgsTUFBTS9qQixLQUFLODFDLE1BQU14bEMsTUFDOUJ0USxLQUFLc2MsRUFBRWhNLE1BQ1Z0USxLQUFLc2MsRUFBSXRjLEtBQUtzYyxFQUFFeUgsTUFBTS9qQixLQUFLODFDLE1BQU14bEMsTUFDOUJ0USxLQUFLbW5CLEVBQUU3VyxNQUNWdFEsS0FBS21uQixFQUFJbm5CLEtBQUttbkIsRUFBRXBELE1BQU0vakIsS0FBSzgxQyxNQUFNeGxDLE1BQy9CdFEsS0FBSzBVLElBQU0xVSxLQUFLMFUsRUFBRXBFLE1BQ3BCdFEsS0FBSzBVLEVBQUkxVSxLQUFLMFUsRUFBRXFQLE1BQU0vakIsS0FBSzgxQyxNQUFNeGxDLE1BQ25DdFEsS0FBS2c2RixLQUFPaDZGLEtBQUttbkIsSUFBTW5uQixLQUFLODFDLE1BQU05dUIsSUFHOUJobkIsS0FBSzgxQyxNQUFNLzFCLFdBQWEvZixLQUFLMFUsSUFDL0IxVSxLQUFLMFUsRUFBSTFVLEtBQUtxYyxFQUFFdUksT0FBTzVrQixLQUFLc2MsR0FDdkJ0YyxLQUFLZzZGLE9BQ1JoNkYsS0FBSzBVLEVBQUkxVSxLQUFLMFUsRUFBRWtRLE9BQU81a0IsS0FBS21uQixFQUFFL0IsY0FqSHRDeGxCLEVBQVM4NUYsRUFBY3Y1RixHQUN2QnVFLEVBQU9yRixRQUFVcTZGLEVBRWpCQSxFQUFhejVGLFVBQVVnNkYsTUFBUSxTQUFlbjBGLEdBQzVDLE9BQUk5RixLQUFLNDVGLE1BQ0E5ekYsRUFBSXVmLFNBRUpybEIsS0FBSytTLEVBQUU2UixPQUFPOWUsSUFHekI0ekYsRUFBYXo1RixVQUFVaTZGLE1BQVEsU0FBZXAwRixHQUM1QyxPQUFJOUYsS0FBSzg1RixLQUNBaDBGLEVBRUE5RixLQUFLMlEsRUFBRWlVLE9BQU85ZSxJQUl6QjR6RixFQUFhejVGLFVBQVU2M0YsT0FBUyxTQUFnQno3RSxFQUFHQyxFQUFHNkssRUFBR3pTLEdBQ3ZELE9BQU8xVSxLQUFLcTNGLE1BQU1oN0UsRUFBR0MsRUFBRzZLLEVBQUd6UyxJQUc3QmdsRixFQUFhejVGLFVBQVVnNUYsV0FBYSxTQUFvQjU4RSxFQUFHZ0MsSUFDekRoQyxFQUFJLElBQUlyTSxFQUFHcU0sRUFBRyxLQUNQL0wsTUFDTCtMLEVBQUlBLEVBQUUwSCxNQUFNL2pCLEtBQUtzUSxNQUVuQixJQUFJd1MsRUFBS3pHLEVBQUUwSSxTQUNQbzFFLEVBQU1uNkYsS0FBS3F6QyxHQUFHN3VCLE9BQU94a0IsS0FBSytTLEVBQUU2UixPQUFPOUIsSUFDbkNzM0UsRUFBTXA2RixLQUFLZ25CLElBQUl4QyxPQUFPeGtCLEtBQUtxekMsR0FBR3p1QixPQUFPNWtCLEtBQUt3N0IsR0FBRzVXLE9BQU85QixJQUVwRHUzRSxFQUFLRixFQUFJdjFFLE9BQU93MUUsRUFBSWgxRSxXQUNwQjlJLEVBQUkrOUUsRUFBR24xRSxVQUNYLEdBQTZDLElBQXpDNUksRUFBRXlJLFNBQVNQLE9BQU82MUUsR0FBSWhwRixJQUFJclIsS0FBSzJrRCxNQUNqQyxNQUFNLElBQUloL0MsTUFBTSxpQkFFbEIsSUFBSThjLEVBQVFuRyxFQUFFNkgsVUFBVTFCLFFBSXhCLE9BSElwRSxJQUFRb0UsSUFBVXBFLEdBQU9vRSxLQUMzQm5HLEVBQUlBLEVBQUUrSSxVQUVEcmxCLEtBQUtxM0YsTUFBTWg3RSxFQUFHQyxJQUd2Qm85RSxFQUFhejVGLFVBQVVxNkYsV0FBYSxTQUFvQmgrRSxFQUFHK0IsSUFDekQvQixFQUFJLElBQUl0TSxFQUFHc00sRUFBRyxLQUNQaE0sTUFDTGdNLEVBQUlBLEVBQUV5SCxNQUFNL2pCLEtBQUtzUSxNQUduQixJQUFJK3BGLEVBQUsvOUUsRUFBRXlJLFNBQ1BxMUUsRUFBTUMsRUFBRzcxRSxPQUFPeGtCLEtBQUtxekMsSUFDckI4bUQsRUFBTUUsRUFBR3oxRSxPQUFPNWtCLEtBQUt3N0IsR0FBRzVXLE9BQU81a0IsS0FBS3F6QyxJQUFJN3VCLE9BQU94a0IsS0FBSytTLEdBQ3BEK1AsRUFBS3MzRSxFQUFJeDFFLE9BQU91MUUsRUFBSS8wRSxXQUV4QixHQUEwQixJQUF0QnRDLEVBQUd6UixJQUFJclIsS0FBSzJrRCxNQUFhLENBQzNCLEdBQUl0bUMsRUFDRixNQUFNLElBQUkxWSxNQUFNLGlCQUVoQixPQUFPM0YsS0FBS3EzRixNQUFNcjNGLEtBQUsya0QsS0FBTXJvQyxHQUdqQyxJQUFJRCxFQUFJeUcsRUFBR29DLFVBQ1gsR0FBNkMsSUFBekM3SSxFQUFFMEksU0FBU1AsT0FBTzFCLEdBQUl6UixJQUFJclIsS0FBSzJrRCxNQUNqQyxNQUFNLElBQUloL0MsTUFBTSxpQkFLbEIsT0FISTBXLEVBQUU4SCxVQUFVMUIsVUFBWXBFLElBQzFCaEMsRUFBSUEsRUFBRWdKLFVBRURybEIsS0FBS3EzRixNQUFNaDdFLEVBQUdDLElBR3ZCbzlFLEVBQWF6NUYsVUFBVXEzRixTQUFXLFNBQWtCRCxHQUNsRCxHQUFJQSxFQUFNa0QsYUFDUixPQUFPLEVBR1RsRCxFQUFNalYsWUFFTixJQUFJdC9ELEVBQUt1MEUsRUFBTWg3RSxFQUFFMEksU0FDYnMxRSxFQUFLaEQsRUFBTS82RSxFQUFFeUksU0FDYnExRSxFQUFNdDNFLEVBQUc4QixPQUFPNWtCLEtBQUsrUyxHQUFHdVIsT0FBTysxRSxHQUMvQkYsRUFBTW42RixLQUFLcXpDLEdBQUd6dUIsT0FBTzVrQixLQUFLZ25CLElBQUkxQyxPQUFPdGtCLEtBQUt3N0IsRUFBRTVXLE9BQU85QixHQUFJOEIsT0FBT3kxRSxLQUVsRSxPQUF3QixJQUFqQkQsRUFBSS9vRixJQUFJOG9GLElBa0NqQnY2RixFQUFTbTZGLEVBQU81NUYsRUFBS2czRixXQUVyQnVDLEVBQWF6NUYsVUFBVXcyRixjQUFnQixTQUF1QnZ5RixHQUM1RCxPQUFPNjFGLEVBQU1TLFNBQVN4NkYsS0FBTWtFLElBRzlCdzFGLEVBQWF6NUYsVUFBVW8zRixNQUFRLFNBQWVoN0UsRUFBR0MsRUFBRzZLLEVBQUd6UyxHQUNyRCxPQUFPLElBQUlxbEYsRUFBTS81RixLQUFNcWMsRUFBR0MsRUFBRzZLLEVBQUd6UyxJQUdsQ3FsRixFQUFNUyxTQUFXLFNBQWtCMWtELEVBQU81eEMsR0FDeEMsT0FBTyxJQUFJNjFGLEVBQU1qa0QsRUFBTzV4QyxFQUFJLEdBQUlBLEVBQUksR0FBSUEsRUFBSSxLQUc5QzYxRixFQUFNOTVGLFVBQVV3UyxRQUFVLFdBQ3hCLE9BQUl6UyxLQUFLdTZGLGFBQ0Esc0JBQ0YsZ0JBQWtCdjZGLEtBQUtxYyxFQUFFOEgsVUFBVWhZLFNBQVMsR0FBSSxHQUNuRCxPQUFTbk0sS0FBS3NjLEVBQUU2SCxVQUFVaFksU0FBUyxHQUFJLEdBQ3ZDLE9BQVNuTSxLQUFLbW5CLEVBQUVoRCxVQUFVaFksU0FBUyxHQUFJLEdBQUssS0FHbEQ0dEYsRUFBTTk1RixVQUFVczZGLFdBQWEsV0FFM0IsT0FBMEIsSUFBbkJ2NkYsS0FBS3FjLEVBQUUyRyxLQUFLLEtBQ08sSUFBdkJoakIsS0FBS3NjLEVBQUVqTCxJQUFJclIsS0FBS21uQixJQUNoQm5uQixLQUFLZzZGLE1BQXFDLElBQTdCaDZGLEtBQUtzYyxFQUFFakwsSUFBSXJSLEtBQUs4MUMsTUFBTW5sQyxLQUd4Q29wRixFQUFNOTVGLFVBQVV3NkYsUUFBVSxXQU14QixJQUFJMW5GLEVBQUkvUyxLQUFLcWMsRUFBRTBJLFNBRVgvUixFQUFJaFQsS0FBS3NjLEVBQUV5SSxTQUVYcFUsRUFBSTNRLEtBQUttbkIsRUFBRXBDLFNBQ2ZwVSxFQUFJQSxFQUFFNFQsUUFBUTVULEdBRWQsSUFBSTZxQixFQUFJeDdCLEtBQUs4MUMsTUFBTW1rRCxNQUFNbG5GLEdBRXJCbk0sRUFBSTVHLEtBQUtxYyxFQUFFaUksT0FBT3RrQixLQUFLc2MsR0FBR3lJLFNBQVNOLFFBQVExUixHQUFHMFIsUUFBUXpSLEdBRXREb1AsRUFBSW9aLEVBQUVsWCxPQUFPdFIsR0FFYm9qQixFQUFJaFUsRUFBRW9DLE9BQU83VCxHQUVicVAsRUFBSXdiLEVBQUVoWCxPQUFPeFIsR0FFYjBuRixFQUFLOXpGLEVBQUVnZSxPQUFPd1IsR0FFZHVrRSxFQUFLdjRFLEVBQUV3QyxPQUFPNUUsR0FFZHcwRCxFQUFLNXRFLEVBQUVnZSxPQUFPNUUsR0FFZDQ2RSxFQUFLeGtFLEVBQUV4UixPQUFPeEMsR0FDbEIsT0FBT3BpQixLQUFLODFDLE1BQU11aEQsTUFBTXFELEVBQUlDLEVBQUlDLEVBQUlwbUIsSUFHdEN1bEIsRUFBTTk1RixVQUFVNDZGLFNBQVcsV0FRekIsSUFNSUgsRUFDQUMsRUFDQUMsRUFDQWgwRixFQUNBb1osRUFDQXhVLEVBWEF3SCxFQUFJaFQsS0FBS3FjLEVBQUVpSSxPQUFPdGtCLEtBQUtzYyxHQUFHeUksU0FFMUJwVSxFQUFJM1EsS0FBS3FjLEVBQUUwSSxTQUVYeVcsRUFBSXg3QixLQUFLc2MsRUFBRXlJLFNBUWYsR0FBSS9rQixLQUFLODFDLE1BQU02akQsUUFBUyxDQUl0QixJQUFJdmpFLEdBRkp4dkIsRUFBSTVHLEtBQUs4MUMsTUFBTW1rRCxNQUFNdHBGLElBRVgyVCxPQUFPa1gsR0FDYng3QixLQUFLZzZGLE1BRVBVLEVBQUsxbkYsRUFBRXdSLE9BQU83VCxHQUFHNlQsT0FBT2dYLEdBQUc1VyxPQUFPd1IsRUFBRTVSLE9BQU94a0IsS0FBSzgxQyxNQUFNN25DLE1BRXREMHNGLEVBQUt2a0UsRUFBRXhSLE9BQU9oZSxFQUFFNGQsT0FBT2dYLElBRXZCby9ELEVBQUt4a0UsRUFBRXJSLFNBQVNQLE9BQU80UixHQUFHNVIsT0FBTzRSLEtBR2pDcFcsRUFBSWhnQixLQUFLbW5CLEVBQUVwQyxTQUVYdlosRUFBSTRxQixFQUFFNVIsT0FBT3hFLEdBQUd5RSxRQUFRekUsR0FFeEIwNkUsRUFBSzFuRixFQUFFd1IsT0FBTzdULEdBQUc4VCxRQUFRK1csR0FBRzVXLE9BQU9wWixHQUVuQ212RixFQUFLdmtFLEVBQUV4UixPQUFPaGUsRUFBRTRkLE9BQU9nWCxJQUV2Qm8vRCxFQUFLeGtFLEVBQUV4UixPQUFPcFosU0FJaEI1RSxFQUFJK0osRUFBRTJULE9BQU9rWCxHQUVieGIsRUFBSWhnQixLQUFLODFDLE1BQU1va0QsTUFBTWw2RixLQUFLbW5CLEdBQUdwQyxTQUU3QnZaLEVBQUk1RSxFQUFFNGQsT0FBT3hFLEdBQUd3RSxPQUFPeEUsR0FFdkIwNkUsRUFBSzE2RixLQUFLODFDLE1BQU1va0QsTUFBTWxuRixFQUFFeVIsUUFBUTdkLElBQUlnZSxPQUFPcFosR0FFM0NtdkYsRUFBSzM2RixLQUFLODFDLE1BQU1va0QsTUFBTXR6RixHQUFHZ2UsT0FBT2pVLEVBQUU4VCxRQUFRK1csSUFFMUNvL0QsRUFBS2gwRixFQUFFZ2UsT0FBT3BaLEdBRWhCLE9BQU94TCxLQUFLODFDLE1BQU11aEQsTUFBTXFELEVBQUlDLEVBQUlDLElBR2xDYixFQUFNOTVGLFVBQVV3NUYsSUFBTSxXQUNwQixPQUFJejVGLEtBQUt1NkYsYUFDQXY2RixLQUdMQSxLQUFLODFDLE1BQU0vMUIsU0FDTi9mLEtBQUt5NkYsVUFFTHo2RixLQUFLNjZGLFlBR2hCZCxFQUFNOTVGLFVBQVU2NkYsUUFBVSxTQUFpQm5yRixHQU16QyxJQUFJb0QsRUFBSS9TLEtBQUtzYyxFQUFFa0ksT0FBT3hrQixLQUFLcWMsR0FBR3VJLE9BQU9qVixFQUFFMk0sRUFBRWtJLE9BQU83VSxFQUFFME0sSUFFOUNySixFQUFJaFQsS0FBS3NjLEVBQUVnSSxPQUFPdGtCLEtBQUtxYyxHQUFHdUksT0FBT2pWLEVBQUUyTSxFQUFFZ0ksT0FBTzNVLEVBQUUwTSxJQUU5QzFMLEVBQUkzUSxLQUFLMFUsRUFBRWtRLE9BQU81a0IsS0FBSzgxQyxNQUFNK2pELElBQUlqMUUsT0FBT2pWLEVBQUUrRSxHQUUxQzhtQixFQUFJeDdCLEtBQUttbkIsRUFBRXZDLE9BQU9qVixFQUFFd1gsRUFBRTdDLE9BQU8zVSxFQUFFd1gsSUFFL0J2Z0IsRUFBSW9NLEVBQUV3UixPQUFPelIsR0FFYnFqQixFQUFJb0YsRUFBRWhYLE9BQU83VCxHQUVieVIsRUFBSW9aLEVBQUVsWCxPQUFPM1QsR0FFYnFQLEVBQUloTixFQUFFc1IsT0FBT3ZSLEdBRWIybkYsRUFBSzl6RixFQUFFZ2UsT0FBT3dSLEdBRWR1a0UsRUFBS3Y0RSxFQUFFd0MsT0FBTzVFLEdBRWR3MEQsRUFBSzV0RSxFQUFFZ2UsT0FBTzVFLEdBRWQ0NkUsRUFBS3hrRSxFQUFFeFIsT0FBT3hDLEdBQ2xCLE9BQU9waUIsS0FBSzgxQyxNQUFNdWhELE1BQU1xRCxFQUFJQyxFQUFJQyxFQUFJcG1CLElBR3RDdWxCLEVBQU05NUYsVUFBVTg2RixTQUFXLFNBQWtCcHJGLEdBTzNDLElBZ0JJZ3JGLEVBQ0FDLEVBakJBN25GLEVBQUkvUyxLQUFLbW5CLEVBQUV2QyxPQUFPalYsRUFBRXdYLEdBRXBCblUsRUFBSUQsRUFBRWdTLFNBRU5wVSxFQUFJM1EsS0FBS3FjLEVBQUV1SSxPQUFPalYsRUFBRTBNLEdBRXBCbWYsRUFBSXg3QixLQUFLc2MsRUFBRXNJLE9BQU9qVixFQUFFMk0sR0FFcEIxVixFQUFJNUcsS0FBSzgxQyxNQUFNdGEsRUFBRTVXLE9BQU9qVSxHQUFHaVUsT0FBTzRXLEdBRWxDcEYsRUFBSXBqQixFQUFFd1IsT0FBTzVkLEdBRWJ3YixFQUFJcFAsRUFBRXNSLE9BQU8xZCxHQUViZ0csRUFBTTVNLEtBQUtxYyxFQUFFaUksT0FBT3RrQixLQUFLc2MsR0FBR3NJLE9BQU9qVixFQUFFME0sRUFBRWlJLE9BQU8zVSxFQUFFMk0sSUFBSW1JLFFBQVE5VCxHQUFHOFQsUUFBUStXLEdBQ3ZFay9ELEVBQUszbkYsRUFBRTZSLE9BQU93UixHQUFHeFIsT0FBT2hZLEdBYzVCLE9BWEk1TSxLQUFLODFDLE1BQU02akQsU0FFYmdCLEVBQUs1bkYsRUFBRTZSLE9BQU94QyxHQUFHd0MsT0FBTzRXLEVBQUVoWCxPQUFPeGtCLEtBQUs4MUMsTUFBTW1rRCxNQUFNdHBGLEtBRWxEaXFGLEVBQUt4a0UsRUFBRXhSLE9BQU94QyxLQUdkdTRFLEVBQUs1bkYsRUFBRTZSLE9BQU94QyxHQUFHd0MsT0FBTzRXLEVBQUVoWCxPQUFPN1QsSUFFakNpcUYsRUFBSzU2RixLQUFLODFDLE1BQU1va0QsTUFBTTlqRSxHQUFHeFIsT0FBT3hDLElBRTNCcGlCLEtBQUs4MUMsTUFBTXVoRCxNQUFNcUQsRUFBSUMsRUFBSUMsSUFHbENiLEVBQU05NUYsVUFBVTRXLElBQU0sU0FBYWxILEdBQ2pDLE9BQUkzUCxLQUFLdTZGLGFBQ0E1cUYsRUFDTEEsRUFBRTRxRixhQUNHdjZGLEtBRUxBLEtBQUs4MUMsTUFBTS8xQixTQUNOL2YsS0FBSzg2RixRQUFRbnJGLEdBRWIzUCxLQUFLKzZGLFNBQVNwckYsSUFHekJvcUYsRUFBTTk1RixVQUFVK1EsSUFBTSxTQUFhbUMsR0FDakMsT0FBSW5ULEtBQUt3NUYsWUFBWXJtRixHQUNablQsS0FBSzgxQyxNQUFNeWhELGFBQWF2M0YsS0FBTW1ULEdBRTlCblQsS0FBSzgxQyxNQUFNb2lELFNBQVNsNEYsS0FBTW1ULElBR3JDNG1GLEVBQU05NUYsVUFBVSs2RixPQUFTLFNBQWdCekgsRUFBSTVqRixFQUFHNmpGLEdBQzlDLE9BQU94ekYsS0FBSzgxQyxNQUFNd2lELFlBQVksRUFBRyxDQUFFdDRGLEtBQU0yUCxHQUFLLENBQUU0akYsRUFBSUMsR0FBTSxHQUFHLElBRy9EdUcsRUFBTTk1RixVQUFVZzdGLFFBQVUsU0FBaUIxSCxFQUFJNWpGLEVBQUc2akYsR0FDaEQsT0FBT3h6RixLQUFLODFDLE1BQU13aUQsWUFBWSxFQUFHLENBQUV0NEYsS0FBTTJQLEdBQUssQ0FBRTRqRixFQUFJQyxHQUFNLEdBQUcsSUFHL0R1RyxFQUFNOTVGLFVBQVVtaUYsVUFBWSxXQUMxQixHQUFJcGlGLEtBQUtnNkYsS0FDUCxPQUFPaDZGLEtBR1QsSUFBSWs3RixFQUFLbDdGLEtBQUttbkIsRUFBRS9CLFVBT2hCLE9BTkFwbEIsS0FBS3FjLEVBQUlyYyxLQUFLcWMsRUFBRXVJLE9BQU9zMkUsR0FDdkJsN0YsS0FBS3NjLEVBQUl0YyxLQUFLc2MsRUFBRXNJLE9BQU9zMkUsR0FDbkJsN0YsS0FBSzBVLElBQ1AxVSxLQUFLMFUsRUFBSTFVLEtBQUswVSxFQUFFa1EsT0FBT3MyRSxJQUN6Qmw3RixLQUFLbW5CLEVBQUlubkIsS0FBSzgxQyxNQUFNOXVCLElBQ3BCaG5CLEtBQUtnNkYsTUFBTyxFQUNMaDZGLE1BR1QrNUYsRUFBTTk1RixVQUFVd1YsSUFBTSxXQUNwQixPQUFPelYsS0FBSzgxQyxNQUFNdWhELE1BQU1yM0YsS0FBS3FjLEVBQUVnSixTQUM3QnJsQixLQUFLc2MsRUFDTHRjLEtBQUttbkIsRUFDTG5uQixLQUFLMFUsR0FBSzFVLEtBQUswVSxFQUFFMlEsV0FHckIwMEUsRUFBTTk1RixVQUFVNnRGLEtBQU8sV0FFckIsT0FEQTl0RixLQUFLb2lGLFlBQ0VwaUYsS0FBS3FjLEVBQUU4SCxXQUdoQjQxRSxFQUFNOTVGLFVBQVVrNUYsS0FBTyxXQUVyQixPQURBbjVGLEtBQUtvaUYsWUFDRXBpRixLQUFLc2MsRUFBRTZILFdBR2hCNDFFLEVBQU05NUYsVUFBVTRqQixHQUFLLFNBQVk0TixHQUMvQixPQUFPenhCLE9BQVN5eEIsR0FDeUIsSUFBbEN6eEIsS0FBSzh0RixPQUFPejhFLElBQUlvZ0IsRUFBTXE4RCxTQUNZLElBQWxDOXRGLEtBQUttNUYsT0FBTzluRixJQUFJb2dCLEVBQU0wbkUsU0FHL0JZLEVBQU05NUYsVUFBVWs3RixPQUFTLFNBQWdCOStFLEdBQ3ZDLElBQUk0QixFQUFLNUIsRUFBRTBILE1BQU0vakIsS0FBSzgxQyxNQUFNeGxDLEtBQUtzVSxPQUFPNWtCLEtBQUttbkIsR0FDN0MsR0FBdUIsSUFBbkJubkIsS0FBS3FjLEVBQUVoTCxJQUFJNE0sR0FDYixPQUFPLEVBSVQsSUFGQSxJQUFJeWYsRUFBS3JoQixFQUFFelgsUUFDUDhQLEVBQUkxVSxLQUFLODFDLE1BQU1taEQsS0FBS3J5RSxPQUFPNWtCLEtBQUttbkIsS0FDM0IsQ0FFUCxHQURBdVcsRUFBRy9tQixLQUFLM1csS0FBSzgxQyxNQUFNMzNCLEdBQ2Z1ZixFQUFHcnNCLElBQUlyUixLQUFLODFDLE1BQU1ubUMsSUFBTSxFQUMxQixPQUFPLEVBR1QsR0FEQXNPLEVBQUdzRyxRQUFRN1AsR0FDWSxJQUFuQjFVLEtBQUtxYyxFQUFFaEwsSUFBSTRNLEdBQ2IsT0FBTyxJQUtiODdFLEVBQU05NUYsVUFBVWc0RixJQUFNOEIsRUFBTTk1RixVQUFVbWlGLFVBQ3RDMlgsRUFBTTk1RixVQUFVODNGLFNBQVdnQyxFQUFNOTVGLFVBQVU0VyxLLDRCQ2hiM0MsSUFBSWkvQixFQUFRejJDLEVBRVp5MkMsRUFBTXQyQyxLQUFPLEVBQVEsTUFDckJzMkMsRUFBTXNsRCxNQUFRLEVBQVEsTUFDdEJ0bEQsRUFBTXR1QixLQUFPLEVBQVEsTUFDckJzdUIsRUFBTXVsRCxRQUFVLEVBQVEsTyw0QkNMeEIsSUFBSXJyRixFQUFLLEVBQVEsTUFDYnBRLEVBQVcsRUFBUSxNQUNuQk8sRUFBTyxFQUFRLE1BRWY2akQsRUFBUSxFQUFRLEtBRXBCLFNBQVNzM0MsRUFBVTlFLEdBQ2pCcjJGLEVBQUtJLEtBQUtQLEtBQU0sT0FBUXcyRixHQUV4QngyRixLQUFLK1MsRUFBSSxJQUFJL0MsRUFBR3dtRixFQUFLempGLEVBQUcsSUFBSWdSLE1BQU0vakIsS0FBS3NRLEtBQ3ZDdFEsS0FBS2dULEVBQUksSUFBSWhELEVBQUd3bUYsRUFBS3hqRixFQUFHLElBQUkrUSxNQUFNL2pCLEtBQUtzUSxLQUN2Q3RRLEtBQUt1N0YsR0FBSyxJQUFJdnJGLEVBQUcsR0FBRytULE1BQU0vakIsS0FBS3NRLEtBQUs4VSxVQUNwQ3BsQixLQUFLaU8sSUFBTSxJQUFJK0IsRUFBRyxHQUFHK1QsTUFBTS9qQixLQUFLc1EsS0FDaEN0USxLQUFLdzdGLElBQU14N0YsS0FBS3U3RixHQUFHMzJFLE9BQU81a0IsS0FBSytTLEVBQUV1UixPQUFPdGtCLEtBQUtpTyxNQWMvQyxTQUFTOHJGLEVBQU1qa0QsRUFBT3o1QixFQUFHOEssR0FDdkJobkIsRUFBS2czRixVQUFVNTJGLEtBQUtQLEtBQU04MUMsRUFBTyxjQUN2QixPQUFOejVCLEdBQW9CLE9BQU44SyxHQUNoQm5uQixLQUFLcWMsRUFBSXJjLEtBQUs4MUMsTUFBTTl1QixJQUNwQmhuQixLQUFLbW5CLEVBQUlubkIsS0FBSzgxQyxNQUFNNk8sT0FFcEIza0QsS0FBS3FjLEVBQUksSUFBSXJNLEVBQUdxTSxFQUFHLElBQ25CcmMsS0FBS21uQixFQUFJLElBQUluWCxFQUFHbVgsRUFBRyxJQUNkbm5CLEtBQUtxYyxFQUFFL0wsTUFDVnRRLEtBQUtxYyxFQUFJcmMsS0FBS3FjLEVBQUUwSCxNQUFNL2pCLEtBQUs4MUMsTUFBTXhsQyxNQUM5QnRRLEtBQUttbkIsRUFBRTdXLE1BQ1Z0USxLQUFLbW5CLEVBQUlubkIsS0FBS21uQixFQUFFcEQsTUFBTS9qQixLQUFLODFDLE1BQU14bEMsT0F2QnZDMVEsRUFBUzA3RixFQUFXbjdGLEdBQ3BCdUUsRUFBT3JGLFFBQVVpOEYsRUFFakJBLEVBQVVyN0YsVUFBVXEzRixTQUFXLFNBQWtCRCxHQUMvQyxJQUFJaDdFLEVBQUlnN0UsRUFBTWpWLFlBQVkvbEUsRUFDdEJ5RyxFQUFLekcsRUFBRTBJLFNBQ1BvMUUsRUFBTXIzRSxFQUFHOEIsT0FBT3ZJLEdBQUdpSSxPQUFPeEIsRUFBRzhCLE9BQU81a0IsS0FBSytTLElBQUl1UixPQUFPakksR0FHeEQsT0FBK0IsSUFGdkI4OUUsRUFBSWoxRSxVQUVISCxTQUFTMVQsSUFBSThvRixJQWlCeEJ2NkYsRUFBU202RixFQUFPNTVGLEVBQUtnM0YsV0FFckJtRSxFQUFVcjdGLFVBQVUrNEYsWUFBYyxTQUFxQnQyRixFQUFPakMsR0FDNUQsT0FBT1QsS0FBS3EzRixNQUFNcnpDLEVBQU0zMEMsUUFBUTNNLEVBQU9qQyxHQUFNLElBRy9DNjZGLEVBQVVyN0YsVUFBVW8zRixNQUFRLFNBQWVoN0UsRUFBRzhLLEdBQzVDLE9BQU8sSUFBSTR5RSxFQUFNLzVGLEtBQU1xYyxFQUFHOEssSUFHNUJtMEUsRUFBVXI3RixVQUFVdzJGLGNBQWdCLFNBQXVCdnlGLEdBQ3pELE9BQU82MUYsRUFBTVMsU0FBU3g2RixLQUFNa0UsSUFHOUI2MUYsRUFBTTk1RixVQUFVbTVGLFdBQWEsYUFJN0JXLEVBQU05NUYsVUFBVW1JLFFBQVUsV0FDeEIsT0FBT3BJLEtBQUs4dEYsT0FBT3orRSxRQUFRLEtBQU1yUCxLQUFLODFDLE1BQU1ubUMsRUFBRTVOLGVBR2hEZzRGLEVBQU1TLFNBQVcsU0FBa0Ixa0QsRUFBTzV4QyxHQUN4QyxPQUFPLElBQUk2MUYsRUFBTWprRCxFQUFPNXhDLEVBQUksR0FBSUEsRUFBSSxJQUFNNHhDLEVBQU05dUIsTUFHbEQreUUsRUFBTTk1RixVQUFVd1MsUUFBVSxXQUN4QixPQUFJelMsS0FBS3U2RixhQUNBLHNCQUNGLGdCQUFrQnY2RixLQUFLcWMsRUFBRThILFVBQVVoWSxTQUFTLEdBQUksR0FDbkQsT0FBU25NLEtBQUttbkIsRUFBRWhELFVBQVVoWSxTQUFTLEdBQUksR0FBSyxLQUdsRDR0RixFQUFNOTVGLFVBQVVzNkYsV0FBYSxXQUUzQixPQUEwQixJQUFuQnY2RixLQUFLbW5CLEVBQUVuRSxLQUFLLElBR3JCKzJFLEVBQU05NUYsVUFBVXc1RixJQUFNLFdBS3BCLElBRUlnQyxFQUZJejdGLEtBQUtxYyxFQUFFaUksT0FBT3RrQixLQUFLbW5CLEdBRWhCcEMsU0FJUDIyRSxFQUZJMTdGLEtBQUtxYyxFQUFFbUksT0FBT3hrQixLQUFLbW5CLEdBRWhCcEMsU0FFUHBVLEVBQUk4cUYsRUFBR2ozRSxPQUFPazNFLEdBRWRoQixFQUFLZSxFQUFHNzJFLE9BQU84MkUsR0FFZmQsRUFBS2pxRixFQUFFaVUsT0FBTzgyRSxFQUFHcDNFLE9BQU90a0IsS0FBSzgxQyxNQUFNMGxELElBQUk1MkUsT0FBT2pVLEtBQ2xELE9BQU8zUSxLQUFLODFDLE1BQU11aEQsTUFBTXFELEVBQUlFLElBRzlCYixFQUFNOTVGLFVBQVU0VyxJQUFNLFdBQ3BCLE1BQU0sSUFBSWxSLE1BQU0sc0NBR2xCbzBGLEVBQU05NUYsVUFBVTA3RixRQUFVLFNBQWlCaHNGLEVBQUd3UixHQUs1QyxJQUFJcE8sRUFBSS9TLEtBQUtxYyxFQUFFaUksT0FBT3RrQixLQUFLbW5CLEdBRXZCblUsRUFBSWhULEtBQUtxYyxFQUFFbUksT0FBT3hrQixLQUFLbW5CLEdBRXZCeFcsRUFBSWhCLEVBQUUwTSxFQUFFaUksT0FBTzNVLEVBQUV3WCxHQUlqQnkwRSxFQUZJanNGLEVBQUUwTSxFQUFFbUksT0FBTzdVLEVBQUV3WCxHQUVWdkMsT0FBTzdSLEdBRWR3dUMsRUFBSzV3QyxFQUFFaVUsT0FBTzVSLEdBRWQwbkYsRUFBS3Y1RSxFQUFLZ0csRUFBRXZDLE9BQU9nM0UsRUFBR3QzRSxPQUFPaTlCLEdBQUl4OEIsVUFFakM2MUUsRUFBS3o1RSxFQUFLOUUsRUFBRXVJLE9BQU9nM0UsRUFBR24zRSxRQUFRODhCLEdBQUl4OEIsVUFDdEMsT0FBTy9rQixLQUFLODFDLE1BQU11aEQsTUFBTXFELEVBQUlFLElBRzlCYixFQUFNOTVGLFVBQVUrUSxJQUFNLFNBQWFtQyxHQU1qQyxJQUxBLElBQUl1QixFQUFJdkIsRUFBRXZPLFFBQ05tTyxFQUFJL1MsS0FDSmdULEVBQUloVCxLQUFLODFDLE1BQU11aEQsTUFBTSxLQUFNLE1BR3RCMzNFLEVBQU8sR0FBa0IsSUFBZGhMLEVBQUVzTyxLQUFLLEdBQVV0TyxFQUFFSCxPQUFPLEdBQzVDbUwsRUFBSzFhLEtBQUswUCxFQUFFSixNQUFNLElBRXBCLElBQUssSUFBSS9JLEVBQUltVSxFQUFLcGUsT0FBUyxFQUFHaUssR0FBSyxFQUFHQSxJQUNwQixJQUFabVUsRUFBS25VLElBRVB3SCxFQUFJQSxFQUFFNG9GLFFBQVEzb0YsRUFSVmhULE1BVUpnVCxFQUFJQSxFQUFFeW1GLFFBR056bUYsRUFBSUQsRUFBRTRvRixRQUFRM29GLEVBYlZoVCxNQWVKK1MsRUFBSUEsRUFBRTBtRixPQUdWLE9BQU96bUYsR0FHVCttRixFQUFNOTVGLFVBQVUrNkYsT0FBUyxXQUN2QixNQUFNLElBQUlyMUYsTUFBTSxzQ0FHbEJvMEYsRUFBTTk1RixVQUFVNDdGLFFBQVUsV0FDeEIsTUFBTSxJQUFJbDJGLE1BQU0sc0NBR2xCbzBGLEVBQU05NUYsVUFBVTRqQixHQUFLLFNBQVk0TixHQUMvQixPQUF5QyxJQUFsQ3p4QixLQUFLOHRGLE9BQU96OEUsSUFBSW9nQixFQUFNcThELFNBRy9CaU0sRUFBTTk1RixVQUFVbWlGLFVBQVksV0FHMUIsT0FGQXBpRixLQUFLcWMsRUFBSXJjLEtBQUtxYyxFQUFFdUksT0FBTzVrQixLQUFLbW5CLEVBQUUvQixXQUM5QnBsQixLQUFLbW5CLEVBQUlubkIsS0FBSzgxQyxNQUFNOXVCLElBQ2JobkIsTUFHVCs1RixFQUFNOTVGLFVBQVU2dEYsS0FBTyxXQUlyQixPQUZBOXRGLEtBQUtvaUYsWUFFRXBpRixLQUFLcWMsRUFBRThILFksNEJDOUtoQixJQUFJNi9CLEVBQVEsRUFBUSxLQUNoQmgwQyxFQUFLLEVBQVEsTUFDYnBRLEVBQVcsRUFBUSxNQUNuQk8sRUFBTyxFQUFRLE1BRWZpRCxFQUFTNGdELEVBQU01Z0QsT0FFbkIsU0FBUzA0RixFQUFXdEYsR0FDbEJyMkYsRUFBS0ksS0FBS1AsS0FBTSxRQUFTdzJGLEdBRXpCeDJGLEtBQUsrUyxFQUFJLElBQUkvQyxFQUFHd21GLEVBQUt6akYsRUFBRyxJQUFJZ1IsTUFBTS9qQixLQUFLc1EsS0FDdkN0USxLQUFLZ1QsRUFBSSxJQUFJaEQsRUFBR3dtRixFQUFLeGpGLEVBQUcsSUFBSStRLE1BQU0vakIsS0FBS3NRLEtBQ3ZDdFEsS0FBSys3RixLQUFPLzdGLEtBQUtpTyxJQUFJbVgsVUFFckJwbEIsS0FBS2c4RixNQUFxQyxJQUE3Qmg4RixLQUFLK1MsRUFBRW9SLFVBQVVuQixLQUFLLEdBQ25DaGpCLEtBQUtpOEYsT0FBbUQsSUFBMUNqOEYsS0FBSytTLEVBQUVvUixVQUFVck4sSUFBSTlXLEtBQUsyUCxHQUFHcVQsTUFBTSxHQUdqRGhqQixLQUFLazhGLEtBQU9sOEYsS0FBS204RixpQkFBaUIzRixHQUNsQ3gyRixLQUFLbzhGLFlBQWMsSUFBSTE2RixNQUFNLEdBQzdCMUIsS0FBS3E4RixZQUFjLElBQUkzNkYsTUFBTSxHQW9PL0IsU0FBU3E0RixFQUFNamtELEVBQU96NUIsRUFBR0MsRUFBR2dnRixHQUMxQm44RixFQUFLZzNGLFVBQVU1MkYsS0FBS1AsS0FBTTgxQyxFQUFPLFVBQ3ZCLE9BQU56NUIsR0FBb0IsT0FBTkMsR0FDaEJ0YyxLQUFLcWMsRUFBSSxLQUNUcmMsS0FBS3NjLEVBQUksS0FDVHRjLEtBQUt1OEYsS0FBTSxJQUVYdjhGLEtBQUtxYyxFQUFJLElBQUlyTSxFQUFHcU0sRUFBRyxJQUNuQnJjLEtBQUtzYyxFQUFJLElBQUl0TSxFQUFHc00sRUFBRyxJQUVmZ2dGLElBQ0Z0OEYsS0FBS3FjLEVBQUVnSSxTQUFTcmtCLEtBQUs4MUMsTUFBTXhsQyxLQUMzQnRRLEtBQUtzYyxFQUFFK0gsU0FBU3JrQixLQUFLODFDLE1BQU14bEMsTUFFeEJ0USxLQUFLcWMsRUFBRS9MLE1BQ1Z0USxLQUFLcWMsRUFBSXJjLEtBQUtxYyxFQUFFMEgsTUFBTS9qQixLQUFLODFDLE1BQU14bEMsTUFDOUJ0USxLQUFLc2MsRUFBRWhNLE1BQ1Z0USxLQUFLc2MsRUFBSXRjLEtBQUtzYyxFQUFFeUgsTUFBTS9qQixLQUFLODFDLE1BQU14bEMsTUFDbkN0USxLQUFLdThGLEtBQU0sR0E2TmYsU0FBU0MsRUFBTzFtRCxFQUFPejVCLEVBQUdDLEVBQUc2SyxHQUMzQmhuQixFQUFLZzNGLFVBQVU1MkYsS0FBS1AsS0FBTTgxQyxFQUFPLFlBQ3ZCLE9BQU56NUIsR0FBb0IsT0FBTkMsR0FBb0IsT0FBTjZLLEdBQzlCbm5CLEtBQUtxYyxFQUFJcmMsS0FBSzgxQyxNQUFNOXVCLElBQ3BCaG5CLEtBQUtzYyxFQUFJdGMsS0FBSzgxQyxNQUFNOXVCLElBQ3BCaG5CLEtBQUttbkIsRUFBSSxJQUFJblgsRUFBRyxLQUVoQmhRLEtBQUtxYyxFQUFJLElBQUlyTSxFQUFHcU0sRUFBRyxJQUNuQnJjLEtBQUtzYyxFQUFJLElBQUl0TSxFQUFHc00sRUFBRyxJQUNuQnRjLEtBQUttbkIsRUFBSSxJQUFJblgsRUFBR21YLEVBQUcsS0FFaEJubkIsS0FBS3FjLEVBQUUvTCxNQUNWdFEsS0FBS3FjLEVBQUlyYyxLQUFLcWMsRUFBRTBILE1BQU0vakIsS0FBSzgxQyxNQUFNeGxDLE1BQzlCdFEsS0FBS3NjLEVBQUVoTSxNQUNWdFEsS0FBS3NjLEVBQUl0YyxLQUFLc2MsRUFBRXlILE1BQU0vakIsS0FBSzgxQyxNQUFNeGxDLE1BQzlCdFEsS0FBS21uQixFQUFFN1csTUFDVnRRLEtBQUttbkIsRUFBSW5uQixLQUFLbW5CLEVBQUVwRCxNQUFNL2pCLEtBQUs4MUMsTUFBTXhsQyxNQUVuQ3RRLEtBQUtnNkYsS0FBT2g2RixLQUFLbW5CLElBQU1ubkIsS0FBSzgxQyxNQUFNOXVCLElBbmVwQ3BuQixFQUFTazhGLEVBQVkzN0YsR0FDckJ1RSxFQUFPckYsUUFBVXk4RixFQUVqQkEsRUFBVzc3RixVQUFVazhGLGlCQUFtQixTQUEwQjNGLEdBRWhFLEdBQUt4MkYsS0FBS2c4RixPQUFVaDhGLEtBQUtvaUIsR0FBTXBpQixLQUFLbWUsR0FBd0IsSUFBbkJuZSxLQUFLMlAsRUFBRWdFLEtBQUssR0FBckQsQ0FJQSxJQUFJMmxGLEVBQ0FtRCxFQUNKLEdBQUlqRyxFQUFLOEMsS0FDUEEsRUFBTyxJQUFJdHBGLEVBQUd3bUYsRUFBSzhDLEtBQU0sSUFBSXYxRSxNQUFNL2pCLEtBQUtzUSxTQUNuQyxDQUNMLElBQUlvc0YsRUFBUTE4RixLQUFLMjhGLGNBQWMzOEYsS0FBSzJQLEdBR3BDMnBGLEdBREFBLEVBQU9vRCxFQUFNLEdBQUdyckYsSUFBSXFyRixFQUFNLElBQU0sRUFBSUEsRUFBTSxHQUFLQSxFQUFNLElBQ3pDMzRFLE1BQU0vakIsS0FBS3NRLEtBRXpCLEdBQUlrbUYsRUFBS2lHLE9BQ1BBLEVBQVMsSUFBSXpzRixFQUFHd21GLEVBQUtpRyxPQUFRLFFBQ3hCLENBRUwsSUFBSUcsRUFBVTU4RixLQUFLMjhGLGNBQWMzOEYsS0FBS21lLEdBQ3NCLElBQXhEbmUsS0FBS29pQixFQUFFcFIsSUFBSTRyRixFQUFRLElBQUl2Z0YsRUFBRWhMLElBQUlyUixLQUFLb2lCLEVBQUUvRixFQUFFdUksT0FBTzAwRSxJQUMvQ21ELEVBQVNHLEVBQVEsSUFFakJILEVBQVNHLEVBQVEsR0FDakJ4NUYsRUFBMkQsSUFBcERwRCxLQUFLb2lCLEVBQUVwUixJQUFJeXJGLEdBQVFwZ0YsRUFBRWhMLElBQUlyUixLQUFLb2lCLEVBQUUvRixFQUFFdUksT0FBTzAwRSxNQWlCcEQsTUFBTyxDQUNMQSxLQUFNQSxFQUNObUQsT0FBUUEsRUFDUkksTUFkRXJHLEVBQUtxRyxNQUNDckcsRUFBS3FHLE1BQU1qN0YsS0FBSSxTQUFTazdGLEdBQzlCLE1BQU8sQ0FDTC9wRixFQUFHLElBQUkvQyxFQUFHOHNGLEVBQUkvcEYsRUFBRyxJQUNqQkMsRUFBRyxJQUFJaEQsRUFBRzhzRixFQUFJOXBGLEVBQUcsUUFJYmhULEtBQUsrOEYsY0FBY04sTUFVL0JYLEVBQVc3N0YsVUFBVTA4RixjQUFnQixTQUF1QjcyRixHQUkxRCxJQUFJd0ssRUFBTXhLLElBQVE5RixLQUFLMlAsRUFBSTNQLEtBQUtzUSxJQUFNTixFQUFHd1gsS0FBSzFoQixHQUMxQ2kyRixFQUFPLElBQUkvckYsRUFBRyxHQUFHK1QsTUFBTXpULEdBQUs4VSxVQUM1QjQzRSxFQUFRakIsRUFBSzEyRSxTQUViL0gsRUFBSSxJQUFJdE4sRUFBRyxHQUFHK1QsTUFBTXpULEdBQUsrVSxTQUFTSCxVQUFVTixPQUFPbTNFLEdBSXZELE1BQU8sQ0FGRWlCLEVBQU0xNEUsT0FBT2hILEdBQUc2RyxVQUNoQjY0RSxFQUFNeDRFLE9BQU9sSCxHQUFHNkcsWUFJM0IyM0UsRUFBVzc3RixVQUFVODhGLGNBQWdCLFNBQXVCTixHQTJCMUQsSUF6QkEsSUFZSXZsRixFQUNBOEIsRUFFQTNCLEVBQ0E4QixFQUVBM0IsRUFDQThCLEVBRUEyakYsRUFFQW5zRixFQUNBdUwsRUF4QkE2Z0YsRUFBV2w5RixLQUFLbWUsRUFBRW9DLE1BQU10UCxLQUFLa2hCLE1BQU1ueUIsS0FBS21lLEVBQUV2SixZQUFjLElBSXhENlMsRUFBSWcxRSxFQUNKMThELEVBQUkvL0IsS0FBS21lLEVBQUV2WixRQUNYaWUsRUFBSyxJQUFJN1MsRUFBRyxHQUNabXRGLEVBQUssSUFBSW50RixFQUFHLEdBQ1o4UyxFQUFLLElBQUk5UyxFQUFHLEdBQ1pxcUYsRUFBSyxJQUFJcnFGLEVBQUcsR0FhWnpFLEVBQUksRUFHYSxJQUFka2MsRUFBRXpFLEtBQUssSUFBVSxDQUN0QixJQUFJM08sRUFBSTByQixFQUFFMWUsSUFBSW9HLEdBQ2QzVyxFQUFJaXZCLEVBQUVqcEIsSUFBSXpDLEVBQUVyRCxJQUFJeVcsSUFDaEJwTCxFQUFJeUcsRUFBR2hNLElBQUl6QyxFQUFFckQsSUFBSTZSLElBQ2pCLElBQUl2RyxFQUFJKzlFLEVBQUd2akYsSUFBSXpDLEVBQUVyRCxJQUFJbXNGLElBRXJCLElBQUs5bEYsR0FBTXZHLEVBQUVPLElBQUk2ckYsR0FBWSxFQUMzQmhtRixFQUFLK2xGLEVBQU14bkYsTUFDWHVELEVBQUs2SixFQUNMeEwsRUFBS3ZHLEVBQUUyRSxNQUNQMEQsRUFBS2tELE9BQ0EsR0FBSWhGLEdBQWMsS0FBTjlMLEVBQ2pCLE1BRUYweEYsRUFBUW5zRixFQUVSaXZCLEVBQUl0WSxFQUNKQSxFQUFJM1csRUFDSmdTLEVBQUtELEVBQ0xBLEVBQUt4RyxFQUNMZytFLEVBQUs4QyxFQUNMQSxFQUFLN2dGLEVBRVA5RSxFQUFLMUcsRUFBRTJFLE1BQ1A2RCxFQUFLK0MsRUFFTCxJQUFJK2dGLEVBQU8vbEYsRUFBR2lJLE1BQU16SSxJQUFJc0MsRUFBR21HLE9BaUIzQixPQWhCVzlILEVBQUc4SCxNQUFNekksSUFBSXlDLEVBQUdnRyxPQUNsQmpPLElBQUkrckYsSUFBUyxJQUNwQjVsRixFQUFLTixFQUNMb0MsRUFBS04sR0FJSDNCLEVBQUdqSCxXQUNMaUgsRUFBS0EsRUFBRzVCLE1BQ1IwRCxFQUFLQSxFQUFHMUQsT0FFTitCLEVBQUdwSCxXQUNMb0gsRUFBS0EsRUFBRy9CLE1BQ1I2RCxFQUFLQSxFQUFHN0QsT0FHSCxDQUNMLENBQUUxQyxFQUFHc0UsRUFBSXJFLEVBQUdtRyxHQUNaLENBQUVwRyxFQUFHeUUsRUFBSXhFLEVBQUdzRyxLQUloQndpRixFQUFXNzdGLFVBQVVvOUYsV0FBYSxTQUFvQmxxRixHQUNwRCxJQUFJMHBGLEVBQVE3OEYsS0FBS2s4RixLQUFLVyxNQUNsQlMsRUFBS1QsRUFBTSxHQUNYVSxFQUFLVixFQUFNLEdBRVh6cEQsRUFBS21xRCxFQUFHdnFGLEVBQUVoQyxJQUFJbUMsR0FBR3VPLFNBQVMxaEIsS0FBS21lLEdBQy9CazFCLEVBQUtpcUQsRUFBR3RxRixFQUFFeUMsTUFBTXpFLElBQUltQyxHQUFHdU8sU0FBUzFoQixLQUFLbWUsR0FFckNrbUIsRUFBSytPLEVBQUdwaUMsSUFBSXNzRixFQUFHdnFGLEdBQ2Z1eEIsRUFBSytPLEVBQUdyaUMsSUFBSXVzRixFQUFHeHFGLEdBQ2Z5cUYsRUFBS3BxRCxFQUFHcGlDLElBQUlzc0YsRUFBR3RxRixHQUNmeXFGLEVBQUtwcUQsRUFBR3JpQyxJQUFJdXNGLEVBQUd2cUYsR0FLbkIsTUFBTyxDQUFFdWdGLEdBRkFwZ0YsRUFBRTJELElBQUl1dEIsR0FBSXZ0QixJQUFJd3RCLEdBRU5rdkQsR0FEUmdLLEVBQUczbUYsSUFBSTRtRixHQUFJaG9GLFFBSXRCcW1GLEVBQVc3N0YsVUFBVWc1RixXQUFhLFNBQW9CNThFLEVBQUdnQyxJQUN2RGhDLEVBQUksSUFBSXJNLEVBQUdxTSxFQUFHLEtBQ1AvTCxNQUNMK0wsRUFBSUEsRUFBRTBILE1BQU0vakIsS0FBS3NRLE1BRW5CLElBQUkrcEYsRUFBS2grRSxFQUFFMEksU0FBU0gsT0FBT3ZJLEdBQUdrSSxRQUFRbEksRUFBRXVJLE9BQU81a0IsS0FBSytTLElBQUl3UixRQUFRdmtCLEtBQUtnVCxHQUNqRXNKLEVBQUkrOUUsRUFBR24xRSxVQUNYLEdBQTZDLElBQXpDNUksRUFBRXlJLFNBQVNQLE9BQU82MUUsR0FBSWhwRixJQUFJclIsS0FBSzJrRCxNQUNqQyxNQUFNLElBQUloL0MsTUFBTSxpQkFJbEIsSUFBSThjLEVBQVFuRyxFQUFFNkgsVUFBVTFCLFFBSXhCLE9BSElwRSxJQUFRb0UsSUFBVXBFLEdBQU9vRSxLQUMzQm5HLEVBQUlBLEVBQUUrSSxVQUVEcmxCLEtBQUtxM0YsTUFBTWg3RSxFQUFHQyxJQUd2QncvRSxFQUFXNzdGLFVBQVVxM0YsU0FBVyxTQUFrQkQsR0FDaEQsR0FBSUEsRUFBTWtGLElBQ1IsT0FBTyxFQUVULElBQUlsZ0YsRUFBSWc3RSxFQUFNaDdFLEVBQ1ZDLEVBQUkrNkUsRUFBTS82RSxFQUVWb2hGLEVBQUsxOUYsS0FBSytTLEVBQUU2UixPQUFPdkksR0FDbkI4OUUsRUFBTTk5RSxFQUFFMEksU0FBU0gsT0FBT3ZJLEdBQUdrSSxRQUFRbTVFLEdBQUluNUUsUUFBUXZrQixLQUFLZ1QsR0FDeEQsT0FBMkMsSUFBcENzSixFQUFFeUksU0FBU04sUUFBUTAxRSxHQUFLbjNFLEtBQUssSUFHdEM4NEUsRUFBVzc3RixVQUFVMDlGLGdCQUNqQixTQUF5QjNGLEVBQVFRLEVBQVFDLEdBR3ZDLElBRkEsSUFBSW1GLEVBQVU1OUYsS0FBS284RixZQUNmeUIsRUFBVTc5RixLQUFLcThGLFlBQ1Y5d0YsRUFBSSxFQUFHQSxFQUFJeXNGLEVBQU8xMkYsT0FBUWlLLElBQUssQ0FDdEMsSUFBSWlDLEVBQVF4TixLQUFLcTlGLFdBQVc3RSxFQUFPanRGLElBQy9Cb0UsRUFBSXFvRixFQUFPenNGLEdBQ1grdEYsRUFBTzNwRixFQUFFNHBGLFdBRVQvckYsRUFBTStsRixHQUFHbmpGLFdBQ1g1QyxFQUFNK2xGLEdBQUdoK0UsT0FDVDVGLEVBQUlBLEVBQUU4RixLQUFJLElBRVJqSSxFQUFNZ21GLEdBQUdwakYsV0FDWDVDLEVBQU1nbUYsR0FBR2orRSxPQUNUK2pGLEVBQU9BLEVBQUs3akYsS0FBSSxJQUdsQm1vRixFQUFZLEVBQUpyeUYsR0FBU29FLEVBQ2pCaXVGLEVBQVksRUFBSnJ5RixFQUFRLEdBQUsrdEYsRUFDckJ1RSxFQUFZLEVBQUp0eUYsR0FBU2lDLEVBQU0rbEYsR0FDdkJzSyxFQUFZLEVBQUp0eUYsRUFBUSxHQUFLaUMsRUFBTWdtRixHQUs3QixJQUhBLElBQUloeEYsRUFBTXhDLEtBQUtzNEYsWUFBWSxFQUFHc0YsRUFBU0MsRUFBYSxFQUFKdHlGLEVBQU9rdEYsR0FHOUNqdEYsRUFBSSxFQUFHQSxFQUFRLEVBQUpELEVBQU9DLElBQ3pCb3lGLEVBQVFweUYsR0FBSyxLQUNicXlGLEVBQVFyeUYsR0FBSyxLQUVmLE9BQU9oSixHQXdCYjVDLEVBQVNtNkYsRUFBTzU1RixFQUFLZzNGLFdBRXJCMkUsRUFBVzc3RixVQUFVbzNGLE1BQVEsU0FBZWg3RSxFQUFHQyxFQUFHZ2dGLEdBQ2hELE9BQU8sSUFBSXZDLEVBQU0vNUYsS0FBTXFjLEVBQUdDLEVBQUdnZ0YsSUFHL0JSLEVBQVc3N0YsVUFBVXcyRixjQUFnQixTQUF1QnZ5RixFQUFLb00sR0FDL0QsT0FBT3lwRixFQUFNUyxTQUFTeDZGLEtBQU1rRSxFQUFLb00sSUFHbkN5cEYsRUFBTTk1RixVQUFVczVGLFNBQVcsV0FDekIsR0FBS3Y1RixLQUFLODFDLE1BQU1vbUQsS0FBaEIsQ0FHQSxJQUFJNEIsRUFBTTk5RixLQUFLbzNGLFlBQ2YsR0FBSTBHLEdBQU9BLEVBQUl4RSxLQUNiLE9BQU93RSxFQUFJeEUsS0FFYixJQUFJQSxFQUFPdDVGLEtBQUs4MUMsTUFBTXVoRCxNQUFNcjNGLEtBQUtxYyxFQUFFdUksT0FBTzVrQixLQUFLODFDLE1BQU1vbUQsS0FBSzVDLE1BQU90NUYsS0FBS3NjLEdBQ3RFLEdBQUl3aEYsRUFBSyxDQUNQLElBQUlob0QsRUFBUTkxQyxLQUFLODFDLE1BQ2Jpb0QsRUFBVSxTQUFTcHVGLEdBQ3JCLE9BQU9tbUMsRUFBTXVoRCxNQUFNMW5GLEVBQUUwTSxFQUFFdUksT0FBT2t4QixFQUFNb21ELEtBQUs1QyxNQUFPM3BGLEVBQUUyTSxJQUVwRHdoRixFQUFJeEUsS0FBT0EsRUFDWEEsRUFBS2xDLFlBQWMsQ0FDakJrQyxLQUFNLEtBQ041QixJQUFLb0csRUFBSXBHLEtBQU8sQ0FDZHJ3RSxJQUFLeTJFLEVBQUlwRyxJQUFJcndFLElBQ2Iyd0UsT0FBUThGLEVBQUlwRyxJQUFJTSxPQUFPcDJGLElBQUltOEYsSUFFN0J2RyxRQUFTc0csRUFBSXRHLFNBQVcsQ0FDdEJHLEtBQU1tRyxFQUFJdEcsUUFBUUcsS0FDbEJLLE9BQVE4RixFQUFJdEcsUUFBUVEsT0FBT3AyRixJQUFJbThGLEtBSXJDLE9BQU96RSxJQUdUUyxFQUFNOTVGLFVBQVU4VCxPQUFTLFdBQ3ZCLE9BQUsvVCxLQUFLbzNGLFlBR0gsQ0FBRXAzRixLQUFLcWMsRUFBR3JjLEtBQUtzYyxFQUFHdGMsS0FBS28zRixhQUFlLENBQzNDSSxRQUFTeDNGLEtBQUtvM0YsWUFBWUksU0FBVyxDQUNuQ0csS0FBTTMzRixLQUFLbzNGLFlBQVlJLFFBQVFHLEtBQy9CSyxPQUFRaDRGLEtBQUtvM0YsWUFBWUksUUFBUVEsT0FBT3AxRixNQUFNLElBRWhEODBGLElBQUsxM0YsS0FBS28zRixZQUFZTSxLQUFPLENBQzNCcndFLElBQUtybkIsS0FBS28zRixZQUFZTSxJQUFJcndFLElBQzFCMndFLE9BQVFoNEYsS0FBS28zRixZQUFZTSxJQUFJTSxPQUFPcDFGLE1BQU0sTUFUckMsQ0FBRTVDLEtBQUtxYyxFQUFHcmMsS0FBS3NjLElBYzFCeTlFLEVBQU1TLFNBQVcsU0FBa0Ixa0QsRUFBTzV4QyxFQUFLb00sR0FDMUIsaUJBQVJwTSxJQUNUQSxFQUFNNEUsS0FBS2sxRixNQUFNOTVGLElBQ25CLElBQUkxQixFQUFNc3pDLEVBQU11aEQsTUFBTW56RixFQUFJLEdBQUlBLEVBQUksR0FBSW9NLEdBQ3RDLElBQUtwTSxFQUFJLEdBQ1AsT0FBTzFCLEVBRVQsU0FBU3k3RixFQUFVLzVGLEdBQ2pCLE9BQU80eEMsRUFBTXVoRCxNQUFNbnpGLEVBQUksR0FBSUEsRUFBSSxHQUFJb00sR0FHckMsSUFBSXd0RixFQUFNNTVGLEVBQUksR0FZZCxPQVhBMUIsRUFBSTQwRixZQUFjLENBQ2hCa0MsS0FBTSxLQUNOOUIsUUFBU3NHLEVBQUl0RyxTQUFXLENBQ3RCRyxLQUFNbUcsRUFBSXRHLFFBQVFHLEtBQ2xCSyxPQUFRLENBQUV4MUYsR0FBTWUsT0FBT3U2RixFQUFJdEcsUUFBUVEsT0FBT3AyRixJQUFJcThGLEtBRWhEdkcsSUFBS29HLEVBQUlwRyxLQUFPLENBQ2Ryd0UsSUFBS3kyRSxFQUFJcEcsSUFBSXJ3RSxJQUNiMndFLE9BQVEsQ0FBRXgxRixHQUFNZSxPQUFPdTZGLEVBQUlwRyxJQUFJTSxPQUFPcDJGLElBQUlxOEYsTUFHdkN6N0YsR0FHVHUzRixFQUFNOTVGLFVBQVV3UyxRQUFVLFdBQ3hCLE9BQUl6UyxLQUFLdTZGLGFBQ0Esc0JBQ0YsZ0JBQWtCdjZGLEtBQUtxYyxFQUFFOEgsVUFBVWhZLFNBQVMsR0FBSSxHQUNuRCxPQUFTbk0sS0FBS3NjLEVBQUU2SCxVQUFVaFksU0FBUyxHQUFJLEdBQUssS0FHbEQ0dEYsRUFBTTk1RixVQUFVczZGLFdBQWEsV0FDM0IsT0FBT3Y2RixLQUFLdThGLEtBR2R4QyxFQUFNOTVGLFVBQVU0VyxJQUFNLFNBQWFsSCxHQUVqQyxHQUFJM1AsS0FBS3U4RixJQUNQLE9BQU81c0YsRUFHVCxHQUFJQSxFQUFFNHNGLElBQ0osT0FBT3Y4RixLQUdULEdBQUlBLEtBQUs2akIsR0FBR2xVLEdBQ1YsT0FBTzNQLEtBQUt5NUYsTUFHZCxHQUFJejVGLEtBQUt5VixNQUFNb08sR0FBR2xVLEdBQ2hCLE9BQU8zUCxLQUFLODFDLE1BQU11aEQsTUFBTSxLQUFNLE1BR2hDLEdBQXdCLElBQXBCcjNGLEtBQUtxYyxFQUFFaEwsSUFBSTFCLEVBQUUwTSxHQUNmLE9BQU9yYyxLQUFLODFDLE1BQU11aEQsTUFBTSxLQUFNLE1BRWhDLElBQUkxbUYsRUFBSTNRLEtBQUtzYyxFQUFFa0ksT0FBTzdVLEVBQUUyTSxHQUNOLElBQWQzTCxFQUFFcVMsS0FBSyxLQUNUclMsRUFBSUEsRUFBRWlVLE9BQU81a0IsS0FBS3FjLEVBQUVtSSxPQUFPN1UsRUFBRTBNLEdBQUcrSSxZQUNsQyxJQUFJczFFLEVBQUsvcEYsRUFBRW9VLFNBQVNOLFFBQVF6a0IsS0FBS3FjLEdBQUdvSSxRQUFROVUsRUFBRTBNLEdBQzFDcytFLEVBQUtocUYsRUFBRWlVLE9BQU81a0IsS0FBS3FjLEVBQUVtSSxPQUFPazJFLElBQUtqMkUsUUFBUXprQixLQUFLc2MsR0FDbEQsT0FBT3RjLEtBQUs4MUMsTUFBTXVoRCxNQUFNcUQsRUFBSUMsSUFHOUJaLEVBQU05NUYsVUFBVXc1RixJQUFNLFdBQ3BCLEdBQUl6NUYsS0FBS3U4RixJQUNQLE9BQU92OEYsS0FHVCxJQUFJaytGLEVBQU1sK0YsS0FBS3NjLEVBQUVnSSxPQUFPdGtCLEtBQUtzYyxHQUM3QixHQUFvQixJQUFoQjRoRixFQUFJbDdFLEtBQUssR0FDWCxPQUFPaGpCLEtBQUs4MUMsTUFBTXVoRCxNQUFNLEtBQU0sTUFFaEMsSUFBSXRrRixFQUFJL1MsS0FBSzgxQyxNQUFNL2lDLEVBRWYrUCxFQUFLOWlCLEtBQUtxYyxFQUFFMEksU0FDWm81RSxFQUFRRCxFQUFJOTRFLFVBQ1p6VSxFQUFJbVMsRUFBR3dCLE9BQU94QixHQUFJeUIsUUFBUXpCLEdBQUl5QixRQUFReFIsR0FBRzZSLE9BQU91NUUsR0FFaER6RCxFQUFLL3BGLEVBQUVvVSxTQUFTTixRQUFRemtCLEtBQUtxYyxFQUFFaUksT0FBT3RrQixLQUFLcWMsSUFDM0NzK0UsRUFBS2hxRixFQUFFaVUsT0FBTzVrQixLQUFLcWMsRUFBRW1JLE9BQU9rMkUsSUFBS2oyRSxRQUFRemtCLEtBQUtzYyxHQUNsRCxPQUFPdGMsS0FBSzgxQyxNQUFNdWhELE1BQU1xRCxFQUFJQyxJQUc5QlosRUFBTTk1RixVQUFVNnRGLEtBQU8sV0FDckIsT0FBTzl0RixLQUFLcWMsRUFBRThILFdBR2hCNDFFLEVBQU05NUYsVUFBVWs1RixLQUFPLFdBQ3JCLE9BQU9uNUYsS0FBS3NjLEVBQUU2SCxXQUdoQjQxRSxFQUFNOTVGLFVBQVUrUSxJQUFNLFNBQWFtQyxHQUVqQyxPQURBQSxFQUFJLElBQUluRCxFQUFHbUQsRUFBRyxJQUNWblQsS0FBS3U2RixhQUNBdjZGLEtBQ0FBLEtBQUt3NUYsWUFBWXJtRixHQUNqQm5ULEtBQUs4MUMsTUFBTXloRCxhQUFhdjNGLEtBQU1tVCxHQUM5Qm5ULEtBQUs4MUMsTUFBTW9tRCxLQUNYbDhGLEtBQUs4MUMsTUFBTTZuRCxnQkFBZ0IsQ0FBRTM5RixNQUFRLENBQUVtVCxJQUV2Q25ULEtBQUs4MUMsTUFBTW9pRCxTQUFTbDRGLEtBQU1tVCxJQUdyQzRtRixFQUFNOTVGLFVBQVUrNkYsT0FBUyxTQUFnQnpILEVBQUlqdkQsRUFBSWt2RCxHQUMvQyxJQUFJd0UsRUFBUyxDQUFFaDRGLEtBQU1za0MsR0FDakJrMEQsRUFBUyxDQUFFakYsRUFBSUMsR0FDbkIsT0FBSXh6RixLQUFLODFDLE1BQU1vbUQsS0FDTmw4RixLQUFLODFDLE1BQU02bkQsZ0JBQWdCM0YsRUFBUVEsR0FFbkN4NEYsS0FBSzgxQyxNQUFNd2lELFlBQVksRUFBR04sRUFBUVEsRUFBUSxJQUdyRHVCLEVBQU05NUYsVUFBVWc3RixRQUFVLFNBQWlCMUgsRUFBSWp2RCxFQUFJa3ZELEdBQ2pELElBQUl3RSxFQUFTLENBQUVoNEYsS0FBTXNrQyxHQUNqQmswRCxFQUFTLENBQUVqRixFQUFJQyxHQUNuQixPQUFJeHpGLEtBQUs4MUMsTUFBTW9tRCxLQUNObDhGLEtBQUs4MUMsTUFBTTZuRCxnQkFBZ0IzRixFQUFRUSxHQUFRLEdBRTNDeDRGLEtBQUs4MUMsTUFBTXdpRCxZQUFZLEVBQUdOLEVBQVFRLEVBQVEsR0FBRyxJQUd4RHVCLEVBQU05NUYsVUFBVTRqQixHQUFLLFNBQVlsVSxHQUMvQixPQUFPM1AsT0FBUzJQLEdBQ1QzUCxLQUFLdThGLE1BQVE1c0YsRUFBRTRzRixNQUNWdjhGLEtBQUt1OEYsS0FBMkIsSUFBcEJ2OEYsS0FBS3FjLEVBQUVoTCxJQUFJMUIsRUFBRTBNLElBQWdDLElBQXBCcmMsS0FBS3NjLEVBQUVqTCxJQUFJMUIsRUFBRTJNLEtBR2hFeTlFLEVBQU05NUYsVUFBVXdWLElBQU0sU0FBYTJvRixHQUNqQyxHQUFJcCtGLEtBQUt1OEYsSUFDUCxPQUFPdjhGLEtBRVQsSUFBSXdDLEVBQU14QyxLQUFLODFDLE1BQU11aEQsTUFBTXIzRixLQUFLcWMsRUFBR3JjLEtBQUtzYyxFQUFFK0ksVUFDMUMsR0FBSSs0RSxHQUFlcCtGLEtBQUtvM0YsWUFBYSxDQUNuQyxJQUFJMEcsRUFBTTk5RixLQUFLbzNGLFlBQ1hpSCxFQUFTLFNBQVMxdUYsR0FDcEIsT0FBT0EsRUFBRThGLE9BRVhqVCxFQUFJNDBGLFlBQWMsQ0FDaEJNLElBQUtvRyxFQUFJcEcsS0FBTyxDQUNkcndFLElBQUt5MkUsRUFBSXBHLElBQUlyd0UsSUFDYjJ3RSxPQUFROEYsRUFBSXBHLElBQUlNLE9BQU9wMkYsSUFBSXk4RixJQUU3QjdHLFFBQVNzRyxFQUFJdEcsU0FBVyxDQUN0QkcsS0FBTW1HLEVBQUl0RyxRQUFRRyxLQUNsQkssT0FBUThGLEVBQUl0RyxRQUFRUSxPQUFPcDJGLElBQUl5OEYsS0FJckMsT0FBTzc3RixHQUdUdTNGLEVBQU05NUYsVUFBVTI0RixJQUFNLFdBQ3BCLE9BQUk1NEYsS0FBS3U4RixJQUNBdjhGLEtBQUs4MUMsTUFBTWdpRCxPQUFPLEtBQU0sS0FBTSxNQUU3QjkzRixLQUFLODFDLE1BQU1naUQsT0FBTzkzRixLQUFLcWMsRUFBR3JjLEtBQUtzYyxFQUFHdGMsS0FBSzgxQyxNQUFNOXVCLE1Bd0J6RHBuQixFQUFTNDhGLEVBQVFyOEYsRUFBS2czRixXQUV0QjJFLEVBQVc3N0YsVUFBVTYzRixPQUFTLFNBQWdCejdFLEVBQUdDLEVBQUc2SyxHQUNsRCxPQUFPLElBQUlxMUUsRUFBT3g4RixLQUFNcWMsRUFBR0MsRUFBRzZLLElBR2hDcTFFLEVBQU92OEYsVUFBVWc0RixJQUFNLFdBQ3JCLEdBQUlqNEYsS0FBS3U2RixhQUNQLE9BQU92NkYsS0FBSzgxQyxNQUFNdWhELE1BQU0sS0FBTSxNQUVoQyxJQUFJaUgsRUFBT3QrRixLQUFLbW5CLEVBQUUvQixVQUNkbTVFLEVBQVFELEVBQUt2NUUsU0FDYjI0RSxFQUFLMTlGLEtBQUtxYyxFQUFFdUksT0FBTzI1RSxHQUNuQkMsRUFBS3grRixLQUFLc2MsRUFBRXNJLE9BQU8yNUUsR0FBTzM1RSxPQUFPMDVFLEdBRXJDLE9BQU90K0YsS0FBSzgxQyxNQUFNdWhELE1BQU1xRyxFQUFJYyxJQUc5QmhDLEVBQU92OEYsVUFBVXdWLElBQU0sV0FDckIsT0FBT3pWLEtBQUs4MUMsTUFBTWdpRCxPQUFPOTNGLEtBQUtxYyxFQUFHcmMsS0FBS3NjLEVBQUUrSSxTQUFVcmxCLEtBQUttbkIsSUFHekRxMUUsRUFBT3Y4RixVQUFVNFcsSUFBTSxTQUFhbEgsR0FFbEMsR0FBSTNQLEtBQUt1NkYsYUFDUCxPQUFPNXFGLEVBR1QsR0FBSUEsRUFBRTRxRixhQUNKLE9BQU92NkYsS0FHVCxJQUFJeStGLEVBQU05dUYsRUFBRXdYLEVBQUVwQyxTQUNWMjVFLEVBQUsxK0YsS0FBS21uQixFQUFFcEMsU0FDWjQ1RSxFQUFLMytGLEtBQUtxYyxFQUFFdUksT0FBTzY1RSxHQUNuQkcsRUFBS2p2RixFQUFFME0sRUFBRXVJLE9BQU84NUUsR0FDaEIxMEQsRUFBS2hxQyxLQUFLc2MsRUFBRXNJLE9BQU82NUUsRUFBSTc1RSxPQUFPalYsRUFBRXdYLElBQ2hDOGlCLEVBQUt0NkIsRUFBRTJNLEVBQUVzSSxPQUFPODVFLEVBQUc5NUUsT0FBTzVrQixLQUFLbW5CLElBRS9CbkgsRUFBSTIrRSxFQUFHbjZFLE9BQU9vNkUsR0FDZDl0RixFQUFJazVCLEVBQUd4bEIsT0FBT3lsQixHQUNsQixHQUFrQixJQUFkanFCLEVBQUVnRCxLQUFLLEdBQ1QsT0FBa0IsSUFBZGxTLEVBQUVrUyxLQUFLLEdBQ0ZoakIsS0FBSzgxQyxNQUFNZ2lELE9BQU8sS0FBTSxLQUFNLE1BRTlCOTNGLEtBQUt5NUYsTUFHaEIsSUFBSW9GLEVBQUs3K0UsRUFBRStFLFNBQ1ArNUUsRUFBS0QsRUFBR2o2RSxPQUFPNUUsR0FDZitmLEVBQUk0K0QsRUFBRy81RSxPQUFPaTZFLEdBRWRuRSxFQUFLNXBGLEVBQUVpVSxTQUFTUixRQUFRdTZFLEdBQUlyNkUsUUFBUXNiLEdBQUd0YixRQUFRc2IsR0FDL0M0NkQsRUFBSzdwRixFQUFFOFQsT0FBT21iLEVBQUV0YixRQUFRaTJFLElBQUtqMkUsUUFBUXVsQixFQUFHcGxCLE9BQU9rNkUsSUFDL0NsRSxFQUFLNTZGLEtBQUttbkIsRUFBRXZDLE9BQU9qVixFQUFFd1gsR0FBR3ZDLE9BQU81RSxHQUVuQyxPQUFPaGdCLEtBQUs4MUMsTUFBTWdpRCxPQUFPNEMsRUFBSUMsRUFBSUMsSUFHbkM0QixFQUFPdjhGLFVBQVU4M0YsU0FBVyxTQUFrQnBvRixHQUU1QyxHQUFJM1AsS0FBS3U2RixhQUNQLE9BQU81cUYsRUFBRWlwRixNQUdYLEdBQUlqcEYsRUFBRTRxRixhQUNKLE9BQU92NkYsS0FHVCxJQUFJMCtGLEVBQUsxK0YsS0FBS21uQixFQUFFcEMsU0FDWjQ1RSxFQUFLMytGLEtBQUtxYyxFQUNWdWlGLEVBQUtqdkYsRUFBRTBNLEVBQUV1SSxPQUFPODVFLEdBQ2hCMTBELEVBQUtocUMsS0FBS3NjLEVBQ1YydEIsRUFBS3Q2QixFQUFFMk0sRUFBRXNJLE9BQU84NUUsR0FBSTk1RSxPQUFPNWtCLEtBQUttbkIsR0FFaENuSCxFQUFJMitFLEVBQUduNkUsT0FBT282RSxHQUNkOXRGLEVBQUlrNUIsRUFBR3hsQixPQUFPeWxCLEdBQ2xCLEdBQWtCLElBQWRqcUIsRUFBRWdELEtBQUssR0FDVCxPQUFrQixJQUFkbFMsRUFBRWtTLEtBQUssR0FDRmhqQixLQUFLODFDLE1BQU1naUQsT0FBTyxLQUFNLEtBQU0sTUFFOUI5M0YsS0FBS3k1RixNQUdoQixJQUFJb0YsRUFBSzcrRSxFQUFFK0UsU0FDUCs1RSxFQUFLRCxFQUFHajZFLE9BQU81RSxHQUNmK2YsRUFBSTQrRCxFQUFHLzVFLE9BQU9pNkUsR0FFZG5FLEVBQUs1cEYsRUFBRWlVLFNBQVNSLFFBQVF1NkUsR0FBSXI2RSxRQUFRc2IsR0FBR3RiLFFBQVFzYixHQUMvQzQ2RCxFQUFLN3BGLEVBQUU4VCxPQUFPbWIsRUFBRXRiLFFBQVFpMkUsSUFBS2oyRSxRQUFRdWxCLEVBQUdwbEIsT0FBT2s2RSxJQUMvQ2xFLEVBQUs1NkYsS0FBS21uQixFQUFFdkMsT0FBTzVFLEdBRXZCLE9BQU9oZ0IsS0FBSzgxQyxNQUFNZ2lELE9BQU80QyxFQUFJQyxFQUFJQyxJQUduQzRCLEVBQU92OEYsVUFBVW80RixLQUFPLFNBQWNobUYsR0FDcEMsR0FBWSxJQUFSQSxFQUNGLE9BQU9yUyxLQUNULEdBQUlBLEtBQUt1NkYsYUFDUCxPQUFPdjZGLEtBQ1QsSUFBS3FTLEVBQ0gsT0FBT3JTLEtBQUt5NUYsTUFFZCxJQUFJbHVGLEVBQ0osR0FBSXZMLEtBQUs4MUMsTUFBTWttRCxPQUFTaDhGLEtBQUs4MUMsTUFBTW1tRCxPQUFRLENBQ3pDLElBQUluckYsRUFBSTlRLEtBQ1IsSUFBS3VMLEVBQUksRUFBR0EsRUFBSThHLEVBQUs5RyxJQUNuQnVGLEVBQUlBLEVBQUUyb0YsTUFDUixPQUFPM29GLEVBS1QsSUFBSWlDLEVBQUkvUyxLQUFLODFDLE1BQU0vaUMsRUFDZmdwRixFQUFPLzdGLEtBQUs4MUMsTUFBTWltRCxLQUVsQmdELEVBQUsvK0YsS0FBS3FjLEVBQ1YyaUYsRUFBS2gvRixLQUFLc2MsRUFDVjJpRixFQUFLai9GLEtBQUttbkIsRUFDViszRSxFQUFNRCxFQUFHbDZFLFNBQVNBLFNBR2xCbzZFLEVBQU1ILEVBQUcxNkUsT0FBTzA2RSxHQUNwQixJQUFLenpGLEVBQUksRUFBR0EsRUFBSThHLEVBQUs5RyxJQUFLLENBQ3hCLElBQUk2ekYsRUFBTUwsRUFBR2g2RSxTQUNUczZFLEVBQU9GLEVBQUlwNkUsU0FDWHU2RSxFQUFPRCxFQUFLdDZFLFNBQ1pwVSxFQUFJeXVGLEVBQUk5NkUsT0FBTzg2RSxHQUFLNzZFLFFBQVE2NkUsR0FBSzc2RSxRQUFReFIsRUFBRTZSLE9BQU9zNkUsSUFFbEQxMUQsRUFBS3UxRCxFQUFHbjZFLE9BQU95NkUsR0FDZjNFLEVBQUsvcEYsRUFBRW9VLFNBQVNOLFFBQVEra0IsRUFBR2xsQixPQUFPa2xCLElBQ2xDQyxFQUFLRCxFQUFHL2tCLFFBQVFpMkUsR0FDaEI2RSxFQUFNNXVGLEVBQUVpVSxPQUFPNmtCLEdBQ25CODFELEVBQU1BLEVBQUloN0UsUUFBUWc3RSxHQUFLOTZFLFFBQVE2NkUsR0FDL0IsSUFBSTFFLEVBQUt1RSxFQUFJdjZFLE9BQU9xNkUsR0FDaEIxekYsRUFBSSxFQUFJOEcsSUFDVjZzRixFQUFNQSxFQUFJdDZFLE9BQU8wNkUsSUFFbkJQLEVBQUtyRSxFQUNMdUUsRUFBS3JFLEVBQ0x1RSxFQUFNSSxFQUdSLE9BQU92L0YsS0FBSzgxQyxNQUFNZ2lELE9BQU9pSCxFQUFJSSxFQUFJdjZFLE9BQU9tM0UsR0FBT2tELElBR2pEekMsRUFBT3Y4RixVQUFVdzVGLElBQU0sV0FDckIsT0FBSXo1RixLQUFLdTZGLGFBQ0F2NkYsS0FFTEEsS0FBSzgxQyxNQUFNa21ELE1BQ05oOEYsS0FBS3cvRixXQUNMeC9GLEtBQUs4MUMsTUFBTW1tRCxPQUNYajhGLEtBQUt5L0YsWUFFTHovRixLQUFLMC9GLFFBR2hCbEQsRUFBT3Y4RixVQUFVdS9GLFNBQVcsV0FDMUIsSUFBSTlFLEVBQ0FDLEVBQ0FDLEVBRUosR0FBSTU2RixLQUFLZzZGLEtBQU0sQ0FNYixJQUFJMkYsRUFBSzMvRixLQUFLcWMsRUFBRTBJLFNBRVo2NkUsRUFBSzUvRixLQUFLc2MsRUFBRXlJLFNBRVo4NkUsRUFBT0QsRUFBRzc2RSxTQUVWekgsRUFBSXRkLEtBQUtxYyxFQUFFaUksT0FBT3M3RSxHQUFJNzZFLFNBQVNOLFFBQVFrN0UsR0FBSWw3RSxRQUFRbzdFLEdBQ3ZEdmlGLEVBQUlBLEVBQUVpSCxRQUFRakgsR0FFZCxJQUFJYyxFQUFJdWhGLEVBQUdyN0UsT0FBT3E3RSxHQUFJcDdFLFFBQVFvN0UsR0FFMUJqckYsRUFBSTBKLEVBQUUyRyxTQUFTTixRQUFRbkgsR0FBR21ILFFBQVFuSCxHQUdsQ3dpRixFQUFRRCxFQUFLdDdFLFFBQVFzN0UsR0FFekJDLEdBREFBLEVBQVFBLEVBQU12N0UsUUFBUXU3RSxJQUNSdjdFLFFBQVF1N0UsR0FHdEJwRixFQUFLaG1GLEVBRUxpbUYsRUFBS3Y4RSxFQUFFd0csT0FBT3RILEVBQUVtSCxRQUFRL1AsSUFBSStQLFFBQVFxN0UsR0FFcENsRixFQUFLNTZGLEtBQUtzYyxFQUFFZ0ksT0FBT3RrQixLQUFLc2MsT0FDbkIsQ0FNTCxJQUFJdkosRUFBSS9TLEtBQUtxYyxFQUFFMEksU0FFWC9SLEVBQUloVCxLQUFLc2MsRUFBRXlJLFNBRVhwVSxFQUFJcUMsRUFBRStSLFNBRU55VyxFQUFJeDdCLEtBQUtxYyxFQUFFaUksT0FBT3RSLEdBQUcrUixTQUFTTixRQUFRMVIsR0FBRzBSLFFBQVE5VCxHQUNyRDZxQixFQUFJQSxFQUFFalgsUUFBUWlYLEdBRWQsSUFBSTUwQixFQUFJbU0sRUFBRXVSLE9BQU92UixHQUFHd1IsUUFBUXhSLEdBRXhCcWpCLEVBQUl4dkIsRUFBRW1lLFNBR05nN0UsRUFBS3B2RixFQUFFNFQsUUFBUTVULEdBRW5Cb3ZGLEdBREFBLEVBQUtBLEVBQUd4N0UsUUFBUXc3RSxJQUNSeDdFLFFBQVF3N0UsR0FHaEJyRixFQUFLdGtFLEVBQUUzUixRQUFRK1csR0FBRy9XLFFBQVErVyxHQUUxQm0vRCxFQUFLL3pGLEVBQUVnZSxPQUFPNFcsRUFBRS9XLFFBQVFpMkUsSUFBS2oyRSxRQUFRczdFLEdBR3JDbkYsR0FEQUEsRUFBSzU2RixLQUFLc2MsRUFBRXNJLE9BQU81a0IsS0FBS21uQixJQUNoQjVDLFFBQVFxMkUsR0FHbEIsT0FBTzU2RixLQUFLODFDLE1BQU1naUQsT0FBTzRDLEVBQUlDLEVBQUlDLElBR25DNEIsRUFBT3Y4RixVQUFVdy9GLFVBQVksV0FDM0IsSUFBSS9FLEVBQ0FDLEVBQ0FDLEVBRUosR0FBSTU2RixLQUFLZzZGLEtBQU0sQ0FNYixJQUFJMkYsRUFBSzMvRixLQUFLcWMsRUFBRTBJLFNBRVo2NkUsRUFBSzUvRixLQUFLc2MsRUFBRXlJLFNBRVo4NkUsRUFBT0QsRUFBRzc2RSxTQUVWekgsRUFBSXRkLEtBQUtxYyxFQUFFaUksT0FBT3M3RSxHQUFJNzZFLFNBQVNOLFFBQVFrN0UsR0FBSWw3RSxRQUFRbzdFLEdBQ3ZEdmlGLEVBQUlBLEVBQUVpSCxRQUFRakgsR0FFZCxJQUFJYyxFQUFJdWhGLEVBQUdyN0UsT0FBT3E3RSxHQUFJcDdFLFFBQVFvN0UsR0FBSXA3RSxRQUFRdmtCLEtBQUs4MUMsTUFBTS9pQyxHQUVqRDJCLEVBQUkwSixFQUFFMkcsU0FBU04sUUFBUW5ILEdBQUdtSCxRQUFRbkgsR0FFdENvOUUsRUFBS2htRixFQUVMLElBQUlvckYsRUFBUUQsRUFBS3Q3RSxRQUFRczdFLEdBRXpCQyxHQURBQSxFQUFRQSxFQUFNdjdFLFFBQVF1N0UsSUFDUnY3RSxRQUFRdTdFLEdBQ3RCbkYsRUFBS3Y4RSxFQUFFd0csT0FBT3RILEVBQUVtSCxRQUFRL1AsSUFBSStQLFFBQVFxN0UsR0FFcENsRixFQUFLNTZGLEtBQUtzYyxFQUFFZ0ksT0FBT3RrQixLQUFLc2MsT0FDbkIsQ0FLTCxJQUFJeUcsRUFBUS9pQixLQUFLbW5CLEVBQUVwQyxTQUVmaTdFLEVBQVFoZ0csS0FBS3NjLEVBQUV5SSxTQUVmdTBFLEVBQU90NUYsS0FBS3FjLEVBQUV1SSxPQUFPbzdFLEdBRXJCQyxFQUFRamdHLEtBQUtxYyxFQUFFbUksT0FBT3pCLEdBQU82QixPQUFPNWtCLEtBQUtxYyxFQUFFaUksT0FBT3ZCLElBQ3REazlFLEVBQVFBLEVBQU0zN0UsT0FBTzI3RSxHQUFPMTdFLFFBQVEwN0UsR0FFcEMsSUFBSUMsRUFBUTVHLEVBQUsvMEUsUUFBUSswRSxHQUVyQjZHLEdBREpELEVBQVFBLEVBQU0zN0UsUUFBUTI3RSxJQUNKNTdFLE9BQU80N0UsR0FDekJ4RixFQUFLdUYsRUFBTWw3RSxTQUFTTixRQUFRMDdFLEdBRTVCdkYsRUFBSzU2RixLQUFLc2MsRUFBRWdJLE9BQU90a0IsS0FBS21uQixHQUFHcEMsU0FBU04sUUFBUXU3RSxHQUFPdjdFLFFBQVExQixHQUUzRCxJQUFJcTlFLEVBQVVKLEVBQU1qN0UsU0FHcEJxN0UsR0FEQUEsR0FEQUEsRUFBVUEsRUFBUTc3RSxRQUFRNjdFLElBQ1I3N0UsUUFBUTY3RSxJQUNSNzdFLFFBQVE2N0UsR0FDMUJ6RixFQUFLc0YsRUFBTXI3RSxPQUFPczdFLEVBQU16N0UsUUFBUWkyRSxJQUFLajJFLFFBQVEyN0UsR0FHL0MsT0FBT3BnRyxLQUFLODFDLE1BQU1naUQsT0FBTzRDLEVBQUlDLEVBQUlDLElBR25DNEIsRUFBT3Y4RixVQUFVeS9GLEtBQU8sV0FDdEIsSUFBSTNzRixFQUFJL1MsS0FBSzgxQyxNQUFNL2lDLEVBR2Znc0YsRUFBSy8rRixLQUFLcWMsRUFDVjJpRixFQUFLaC9GLEtBQUtzYyxFQUNWMmlGLEVBQUtqL0YsS0FBS21uQixFQUNWKzNFLEVBQU1ELEVBQUdsNkUsU0FBU0EsU0FFbEJxNkUsRUFBTUwsRUFBR2g2RSxTQUNUczdFLEVBQU1yQixFQUFHajZFLFNBRVRwVSxFQUFJeXVGLEVBQUk5NkUsT0FBTzg2RSxHQUFLNzZFLFFBQVE2NkUsR0FBSzc2RSxRQUFReFIsRUFBRTZSLE9BQU9zNkUsSUFFbERvQixFQUFPdkIsRUFBR3o2RSxPQUFPeTZFLEdBRWpCdjFELEdBREo4MkQsRUFBT0EsRUFBSy83RSxRQUFRKzdFLElBQ04xN0UsT0FBT3k3RSxHQUNqQjNGLEVBQUsvcEYsRUFBRW9VLFNBQVNOLFFBQVEra0IsRUFBR2xsQixPQUFPa2xCLElBQ2xDQyxFQUFLRCxFQUFHL2tCLFFBQVFpMkUsR0FFaEI2RixFQUFPRixFQUFJdDdFLFNBR2Z3N0UsR0FEQUEsR0FEQUEsRUFBT0EsRUFBS2g4RSxRQUFRZzhFLElBQ1JoOEUsUUFBUWc4RSxJQUNSaDhFLFFBQVFnOEUsR0FDcEIsSUFBSTVGLEVBQUtocUYsRUFBRWlVLE9BQU82a0IsR0FBSWhsQixRQUFRODdFLEdBQzFCM0YsRUFBS29FLEVBQUcxNkUsT0FBTzA2RSxHQUFJcDZFLE9BQU9xNkUsR0FFOUIsT0FBT2ovRixLQUFLODFDLE1BQU1naUQsT0FBTzRDLEVBQUlDLEVBQUlDLElBR25DNEIsRUFBT3Y4RixVQUFVdWdHLEtBQU8sV0FDdEIsSUFBS3hnRyxLQUFLODFDLE1BQU1rbUQsTUFDZCxPQUFPaDhGLEtBQUt5NUYsTUFBTTVpRixJQUFJN1csTUFNeEIsSUFBSTIvRixFQUFLMy9GLEtBQUtxYyxFQUFFMEksU0FFWjY2RSxFQUFLNS9GLEtBQUtzYyxFQUFFeUksU0FFWjA3RSxFQUFLemdHLEtBQUttbkIsRUFBRXBDLFNBRVo4NkUsRUFBT0QsRUFBRzc2RSxTQUVWM0csRUFBSXVoRixFQUFHcjdFLE9BQU9xN0UsR0FBSXA3RSxRQUFRbzdFLEdBRTFCZSxFQUFLdGlGLEVBQUUyRyxTQUVQbmUsRUFBSTVHLEtBQUtxYyxFQUFFaUksT0FBT3M3RSxHQUFJNzZFLFNBQVNOLFFBQVFrN0UsR0FBSWw3RSxRQUFRbzdFLEdBS25ENWxCLEdBRkpyekUsR0FEQUEsR0FEQUEsRUFBSUEsRUFBRTJkLFFBQVEzZCxJQUNSMGQsT0FBTzFkLEdBQUcyZCxRQUFRM2QsSUFDbEI2ZCxRQUFRaThFLElBRUgzN0UsU0FFUHJRLEVBQUltckYsRUFBS3Q3RSxRQUFRczdFLEdBR3JCbnJGLEdBREFBLEdBREFBLEVBQUlBLEVBQUU2UCxRQUFRN1AsSUFDUjZQLFFBQVE3UCxJQUNSNlAsUUFBUTdQLEdBRWQsSUFBSStTLEVBQUlySixFQUFFbUcsUUFBUTNkLEdBQUdtZSxTQUFTTixRQUFRaThFLEdBQUlqOEUsUUFBUXcxRCxHQUFJeDFELFFBQVEvUCxHQUUxRGlzRixFQUFPZixFQUFHaDdFLE9BQU82QyxHQUVyQms1RSxHQURBQSxFQUFPQSxFQUFLcDhFLFFBQVFvOEUsSUFDUnA4RSxRQUFRbzhFLEdBQ3BCLElBQUlqRyxFQUFLMTZGLEtBQUtxYyxFQUFFdUksT0FBT3ExRCxHQUFJeDFELFFBQVFrOEUsR0FFbkNqRyxHQURBQSxFQUFLQSxFQUFHbjJFLFFBQVFtMkUsSUFDUm4yRSxRQUFRbTJFLEdBRWhCLElBQUlDLEVBQUszNkYsS0FBS3NjLEVBQUVzSSxPQUFPNkMsRUFBRTdDLE9BQU9sUSxFQUFFK1AsUUFBUWdELElBQUloRCxRQUFRN2QsRUFBRWdlLE9BQU9xMUQsS0FHL0QwZ0IsR0FEQUEsR0FEQUEsRUFBS0EsRUFBR3AyRSxRQUFRbzJFLElBQ1JwMkUsUUFBUW8yRSxJQUNScDJFLFFBQVFvMkUsR0FFaEIsSUFBSUMsRUFBSzU2RixLQUFLbW5CLEVBQUU3QyxPQUFPMWQsR0FBR21lLFNBQVNOLFFBQVFnOEUsR0FBSWg4RSxRQUFRdzFELEdBRXZELE9BQU9qNkUsS0FBSzgxQyxNQUFNZ2lELE9BQU80QyxFQUFJQyxFQUFJQyxJQUduQzRCLEVBQU92OEYsVUFBVStRLElBQU0sU0FBYW1DLEVBQUd5dEYsR0FHckMsT0FGQXp0RixFQUFJLElBQUluRCxFQUFHbUQsRUFBR3l0RixHQUVQNWdHLEtBQUs4MUMsTUFBTW9pRCxTQUFTbDRGLEtBQU1tVCxJQUduQ3FwRixFQUFPdjhGLFVBQVU0akIsR0FBSyxTQUFZbFUsR0FDaEMsR0FBZSxXQUFYQSxFQUFFekgsS0FDSixPQUFPbEksS0FBSzZqQixHQUFHbFUsRUFBRWlwRixPQUVuQixHQUFJNTRGLE9BQVMyUCxFQUNYLE9BQU8sRUFHVCxJQUFJK3VGLEVBQUsxK0YsS0FBS21uQixFQUFFcEMsU0FDWjA1RSxFQUFNOXVGLEVBQUV3WCxFQUFFcEMsU0FDZCxHQUEyRCxJQUF2RC9rQixLQUFLcWMsRUFBRXVJLE9BQU82NUUsR0FBS2g2RSxRQUFROVUsRUFBRTBNLEVBQUV1SSxPQUFPODVFLElBQUsxN0UsS0FBSyxHQUNsRCxPQUFPLEVBR1QsSUFBSTY5RSxFQUFLbkMsRUFBRzk1RSxPQUFPNWtCLEtBQUttbkIsR0FDcEIyNUUsRUFBTXJDLEVBQUk3NUUsT0FBT2pWLEVBQUV3WCxHQUN2QixPQUE4RCxJQUF2RG5uQixLQUFLc2MsRUFBRXNJLE9BQU9rOEUsR0FBS3I4RSxRQUFROVUsRUFBRTJNLEVBQUVzSSxPQUFPaThFLElBQUs3OUUsS0FBSyxJQUd6RHc1RSxFQUFPdjhGLFVBQVVrN0YsT0FBUyxTQUFnQjkrRSxHQUN4QyxJQUFJMmhCLEVBQUtoK0IsS0FBS21uQixFQUFFcEMsU0FDWjlHLEVBQUs1QixFQUFFMEgsTUFBTS9qQixLQUFLODFDLE1BQU14bEMsS0FBS3NVLE9BQU9vWixHQUN4QyxHQUF1QixJQUFuQmgrQixLQUFLcWMsRUFBRWhMLElBQUk0TSxHQUNiLE9BQU8sRUFJVCxJQUZBLElBQUl5ZixFQUFLcmhCLEVBQUV6WCxRQUNQOFAsRUFBSTFVLEtBQUs4MUMsTUFBTW1oRCxLQUFLcnlFLE9BQU9vWixLQUN0QixDQUVQLEdBREFOLEVBQUcvbUIsS0FBSzNXLEtBQUs4MUMsTUFBTTMzQixHQUNmdWYsRUFBR3JzQixJQUFJclIsS0FBSzgxQyxNQUFNbm1DLElBQU0sRUFDMUIsT0FBTyxFQUdULEdBREFzTyxFQUFHc0csUUFBUTdQLEdBQ1ksSUFBbkIxVSxLQUFLcWMsRUFBRWhMLElBQUk0TSxHQUNiLE9BQU8sSUFJYnUrRSxFQUFPdjhGLFVBQVV3UyxRQUFVLFdBQ3pCLE9BQUl6UyxLQUFLdTZGLGFBQ0EsdUJBQ0YsaUJBQW1CdjZGLEtBQUtxYyxFQUFFbFEsU0FBUyxHQUFJLEdBQzFDLE9BQVNuTSxLQUFLc2MsRUFBRW5RLFNBQVMsR0FBSSxHQUM3QixPQUFTbk0sS0FBS21uQixFQUFFaGIsU0FBUyxHQUFJLEdBQUssS0FHeENxd0YsRUFBT3Y4RixVQUFVczZGLFdBQWEsV0FFNUIsT0FBMEIsSUFBbkJ2NkYsS0FBS21uQixFQUFFbkUsS0FBSyxLLDRCQ3Q2QnJCLElBc0tJODZFLEVBdEtBOW9ELEVBQVMzMUMsRUFFVDgwQyxFQUFPLEVBQVEsTUFDZjJCLEVBQVEsRUFBUSxNQUdoQjF5QyxFQUZRLEVBQVEsS0FFREEsT0FFbkIsU0FBUzI5RixFQUFZbGdHLEdBQ0UsVUFBakJBLEVBQVFxSCxLQUNWbEksS0FBSzgxQyxNQUFRLElBQUlBLEVBQU1zbEQsTUFBTXY2RixHQUNMLFlBQWpCQSxFQUFRcUgsS0FDZmxJLEtBQUs4MUMsTUFBUSxJQUFJQSxFQUFNdWxELFFBQVF4NkYsR0FFL0JiLEtBQUs4MUMsTUFBUSxJQUFJQSxFQUFNdHVCLEtBQUszbUIsR0FDOUJiLEtBQUtvaUIsRUFBSXBpQixLQUFLODFDLE1BQU0xekIsRUFDcEJwaUIsS0FBS21lLEVBQUluZSxLQUFLODFDLE1BQU0zM0IsRUFDcEJuZSxLQUFLbTBDLEtBQU90ekMsRUFBUXN6QyxLQUVwQi93QyxFQUFPcEQsS0FBS29pQixFQUFFazFFLFdBQVksaUJBQzFCbDBGLEVBQU9wRCxLQUFLb2lCLEVBQUVwUixJQUFJaFIsS0FBS21lLEdBQUdvOEUsYUFBYywyQkFJMUMsU0FBU3lHLEVBQVlsaEcsRUFBTWUsR0FDekI0RSxPQUFPa29CLGVBQWVxbkIsRUFBUWwxQyxFQUFNLENBQ2xDK3RCLGNBQWMsRUFDZEQsWUFBWSxFQUNaZSxJQUFLLFdBQ0gsSUFBSW1uQixFQUFRLElBQUlpckQsRUFBWWxnRyxHQU01QixPQUxBNEUsT0FBT2tvQixlQUFlcW5CLEVBQVFsMUMsRUFBTSxDQUNsQyt0QixjQUFjLEVBQ2RELFlBQVksRUFDWm5zQixNQUFPcTBDLElBRUZBLEtBYmJkLEVBQU8rckQsWUFBY0EsRUFrQnJCQyxFQUFZLE9BQVEsQ0FDbEI5NEYsS0FBTSxRQUNOZ2UsTUFBTyxPQUNQdlcsRUFBRyx3REFDSG9ELEVBQUcsd0RBQ0hDLEVBQUcsd0RBQ0htTCxFQUFHLHdEQUNIZzJCLEtBQU1BLEVBQUs4c0QsT0FDWHZLLE1BQU0sRUFDTnQwRSxFQUFHLENBQ0Qsd0RBQ0EsMkRBSUo0K0UsRUFBWSxPQUFRLENBQ2xCOTRGLEtBQU0sUUFDTmdlLE1BQU8sT0FDUHZXLEVBQUcsaUVBQ0hvRCxFQUFHLGlFQUNIQyxFQUFHLGlFQUNIbUwsRUFBRyxpRUFDSGcyQixLQUFNQSxFQUFLOHNELE9BQ1h2SyxNQUFNLEVBQ050MEUsRUFBRyxDQUNELGlFQUNBLG9FQUlKNCtFLEVBQVksT0FBUSxDQUNsQjk0RixLQUFNLFFBQ05nZSxNQUFPLEtBQ1B2VyxFQUFHLDBFQUNIb0QsRUFBRywwRUFDSEMsRUFBRywwRUFDSG1MLEVBQUcsMEVBQ0hnMkIsS0FBTUEsRUFBSzhzRCxPQUNYdkssTUFBTSxFQUNOdDBFLEVBQUcsQ0FDRCwwRUFDQSw2RUFJSjQrRSxFQUFZLE9BQVEsQ0FDbEI5NEYsS0FBTSxRQUNOZ2UsTUFBTyxLQUNQdlcsRUFBRyw4R0FFSG9ELEVBQUcsOEdBRUhDLEVBQUcsOEdBRUhtTCxFQUFHLDhHQUVIZzJCLEtBQU1BLEVBQUsrc0QsT0FDWHhLLE1BQU0sRUFDTnQwRSxFQUFHLENBQ0QsOEdBRUEsaUhBS0o0K0UsRUFBWSxPQUFRLENBQ2xCOTRGLEtBQU0sUUFDTmdlLE1BQU8sS0FDUHZXLEVBQUcsMkpBR0hvRCxFQUFHLDJKQUdIQyxFQUFHLDJKQUdIbUwsRUFBRywySkFHSGcyQixLQUFNQSxFQUFLZ3RELE9BQ1h6SyxNQUFNLEVBQ050MEUsRUFBRyxDQUNELDJKQUdBLDhKQU1KNCtFLEVBQVksYUFBYyxDQUN4Qjk0RixLQUFNLE9BQ05nZSxNQUFPLFNBQ1B2VyxFQUFHLHNFQUNIb0QsRUFBRyxRQUNIQyxFQUFHLElBQ0htTCxFQUFHLHNFQUNIZzJCLEtBQU1BLEVBQUs4c0QsT0FDWHZLLE1BQU0sRUFDTnQwRSxFQUFHLENBQ0QsT0FJSjQrRSxFQUFZLFVBQVcsQ0FDckI5NEYsS0FBTSxVQUNOZ2UsTUFBTyxTQUNQdlcsRUFBRyxzRUFDSG9ELEVBQUcsS0FDSHBDLEVBQUcsSUFFSDZxQixFQUFHLHNFQUNIcmQsRUFBRyxzRUFDSGcyQixLQUFNQSxFQUFLOHNELE9BQ1h2SyxNQUFNLEVBQ050MEUsRUFBRyxDQUNELG1FQUdBLHNFQUtKLElBQ0UwN0UsRUFBTSxFQUFRLE1BQ2QsTUFBT2wzRixHQUNQazNGLE9BQU14MUYsRUFHUjA0RixFQUFZLFlBQWEsQ0FDdkI5NEYsS0FBTSxRQUNOZ2UsTUFBTyxPQUNQdlcsRUFBRywwRUFDSG9ELEVBQUcsSUFDSEMsRUFBRyxJQUNIbUwsRUFBRywwRUFDSDZCLEVBQUcsSUFDSG0wQixLQUFNQSxFQUFLOHNELE9BR1gzSCxLQUFNLG1FQUNObUQsT0FBUSxtRUFDUkksTUFBTyxDQUNMLENBQ0U5cEYsRUFBRyxtQ0FDSEMsRUFBRyxxQ0FFTCxDQUNFRCxFQUFHLG9DQUNIQyxFQUFHLHFDQUlQMGpGLE1BQU0sRUFDTnQwRSxFQUFHLENBQ0QsbUVBQ0EsbUVBQ0EwN0UsTSw0QkN6TUosSUFBSTl0RixFQUFLLEVBQVEsTUFDYm94RixFQUFXLEVBQVEsTUFDbkJwOUMsRUFBUSxFQUFRLEtBQ2hCaFAsRUFBUyxFQUFRLE1BQ2pCM1MsRUFBTyxFQUFRLE1BQ2ZqL0IsRUFBUzRnRCxFQUFNNWdELE9BRWZpK0YsRUFBVSxFQUFRLE1BQ2xCQyxFQUFZLEVBQVEsS0FFeEIsU0FBU3hzRCxFQUFHajBDLEdBQ1YsS0FBTWIsZ0JBQWdCODBDLEdBQ3BCLE9BQU8sSUFBSUEsRUFBR2owQyxHQUdPLGlCQUFaQSxJQUNUdUMsRUFBT3FDLE9BQU94RixVQUFVUyxlQUFlSCxLQUFLeTBDLEVBQVFuMEMsR0FDbEQsaUJBQW1CQSxHQUVyQkEsRUFBVW0wQyxFQUFPbjBDLElBSWZBLGFBQW1CbTBDLEVBQU8rckQsY0FDNUJsZ0csRUFBVSxDQUFFaTFDLE1BQU9qMUMsSUFFckJiLEtBQUs4MUMsTUFBUWoxQyxFQUFRaTFDLE1BQU1BLE1BQzNCOTFDLEtBQUttZSxFQUFJbmUsS0FBSzgxQyxNQUFNMzNCLEVBQ3BCbmUsS0FBS3VoRyxHQUFLdmhHLEtBQUttZSxFQUFFb0MsTUFBTSxHQUN2QnZnQixLQUFLb2lCLEVBQUlwaUIsS0FBSzgxQyxNQUFNMXpCLEVBR3BCcGlCLEtBQUtvaUIsRUFBSXZoQixFQUFRaTFDLE1BQU0xekIsRUFDdkJwaUIsS0FBS29pQixFQUFFZzNFLFdBQVd2NEYsRUFBUWkxQyxNQUFNMzNCLEVBQUV2SixZQUFjLEdBR2hENVUsS0FBS20wQyxLQUFPdHpDLEVBQVFzekMsTUFBUXR6QyxFQUFRaTFDLE1BQU0zQixLQUU1Q3p2QyxFQUFPckYsUUFBVXkxQyxFQUVqQkEsRUFBRzcwQyxVQUFVdWhHLFFBQVUsU0FBaUIzZ0csR0FDdEMsT0FBTyxJQUFJd2dHLEVBQVFyaEcsS0FBTWEsSUFHM0JpMEMsRUFBRzcwQyxVQUFVKzFDLGVBQWlCLFNBQXdCdkQsRUFBTWh5QyxHQUMxRCxPQUFPNGdHLEVBQVFJLFlBQVl6aEcsS0FBTXl5QyxFQUFNaHlDLElBR3pDcTBDLEVBQUc3MEMsVUFBVTB0RixjQUFnQixTQUF1QmwzQyxFQUFLaDJDLEdBQ3ZELE9BQU80Z0csRUFBUUssV0FBVzFoRyxLQUFNeTJDLEVBQUtoMkMsSUFHdkNxMEMsRUFBRzcwQyxVQUFVc3RGLFdBQWEsU0FBb0Ixc0YsR0FDdkNBLElBQ0hBLEVBQVUsSUFjWixJQVhBLElBQUk4Z0csRUFBTyxJQUFJUCxFQUFTLENBQ3RCanRELEtBQU1uMEMsS0FBS20wQyxLQUNYeXRELEtBQU0vZ0csRUFBUStnRyxLQUNkQyxRQUFTaGhHLEVBQVFnaEcsU0FBVyxPQUM1QkMsUUFBU2poRyxFQUFRaWhHLFNBQVd6L0QsRUFBS3JpQyxLQUFLbTBDLEtBQUs0dEQsY0FDM0NDLFdBQVluaEcsRUFBUWloRyxTQUFXamhHLEVBQVFtaEcsWUFBYyxPQUNyREMsTUFBT2ppRyxLQUFLbWUsRUFBRTlPLFlBR1ozTSxFQUFRMUMsS0FBS21lLEVBQUVwYyxhQUNmbWdHLEVBQU1saUcsS0FBS21lLEVBQUVySCxJQUFJLElBQUk5RyxFQUFHLE1BQ25CLENBQ1AsSUFBSXlpQyxFQUFPLElBQUl6aUMsRUFBRzJ4RixFQUFLbDVELFNBQVMvbEMsSUFDaEMsS0FBSSt2QyxFQUFLcGhDLElBQUk2d0YsR0FBTyxHQUlwQixPQURBenZELEVBQUt0OUIsTUFBTSxHQUNKblYsS0FBS2cyQyxlQUFldkQsS0FJL0JxQyxFQUFHNzBDLFVBQVVraUcsYUFBZSxTQUFzQng0RixFQUFLeTRGLEdBQ3JELElBQUlyL0UsRUFBMkIsRUFBbkJwWixFQUFJNUgsYUFBbUIvQixLQUFLbWUsRUFBRXZKLFlBRzFDLE9BRkltTyxFQUFRLElBQ1ZwWixFQUFNQSxFQUFJNFcsTUFBTXdDLEtBQ2JxL0UsR0FBYXo0RixFQUFJMEgsSUFBSXJSLEtBQUttZSxJQUFNLEVBQzVCeFUsRUFBSW1OLElBQUk5VyxLQUFLbWUsR0FFYnhVLEdBR1htckMsRUFBRzcwQyxVQUFVcVAsS0FBTyxTQUFjM0YsRUFBS3RGLEVBQUs1RCxFQUFLSSxHQUM1QixpQkFBUkosSUFDVEksRUFBVUosRUFDVkEsRUFBTSxNQUVISSxJQUNIQSxFQUFVLElBRVp3RCxFQUFNckUsS0FBS2cyQyxlQUFlM3hDLEVBQUs1RCxHQUMvQmtKLEVBQU0zSixLQUFLbWlHLGFBQWEsSUFBSW55RixFQUFHckcsRUFBSyxLQXFCcEMsSUFsQkEsSUFBSWpILEVBQVExQyxLQUFLbWUsRUFBRXBjLGFBQ2Y4NkMsRUFBT3g0QyxFQUFJd3BGLGFBQWF4K0UsUUFBUSxLQUFNM00sR0FHdEN1L0YsRUFBUXQ0RixFQUFJMEYsUUFBUSxLQUFNM00sR0FHMUJpL0YsRUFBTyxJQUFJUCxFQUFTLENBQ3RCanRELEtBQU1uMEMsS0FBS20wQyxLQUNYMnRELFFBQVNqbEQsRUFDVG9sRCxNQUFPQSxFQUNQTCxLQUFNL2dHLEVBQVErZ0csS0FDZEMsUUFBU2hoRyxFQUFRZ2hHLFNBQVcsU0FJMUJRLEVBQU1yaUcsS0FBS21lLEVBQUVySCxJQUFJLElBQUk5RyxFQUFHLElBRW5Cc3lGLEVBQU8sR0FBS0EsSUFBUSxDQUMzQixJQUFJbnZGLEVBQUl0UyxFQUFRc1MsRUFDZHRTLEVBQVFzUyxFQUFFbXZGLEdBQ1YsSUFBSXR5RixFQUFHMnhGLEVBQUtsNUQsU0FBU3pvQyxLQUFLbWUsRUFBRXBjLGVBRTlCLE1BREFvUixFQUFJblQsS0FBS21pRyxhQUFhaHZGLEdBQUcsSUFDbkI2UCxLQUFLLElBQU0sR0FBSzdQLEVBQUU5QixJQUFJZ3hGLElBQVEsR0FBcEMsQ0FHQSxJQUFJRSxFQUFLdmlHLEtBQUtvaUIsRUFBRXBSLElBQUltQyxHQUNwQixJQUFJb3ZGLEVBQUdoSSxhQUFQLENBR0EsSUFBSWlJLEVBQU1ELEVBQUd6VSxPQUNUaDlFLEVBQUkweEYsRUFBSS9nRixLQUFLemhCLEtBQUttZSxHQUN0QixHQUFrQixJQUFkck4sRUFBRWtTLEtBQUssR0FBWCxDQUdBLElBQUkxRixFQUFJbkssRUFBRThQLEtBQUtqakIsS0FBS21lLEdBQUduTixJQUFJRixFQUFFRSxJQUFJM00sRUFBSXdwRixjQUFjbDNFLEtBQUtoTixJQUV4RCxHQUFrQixLQURsQjJULEVBQUlBLEVBQUVtRSxLQUFLemhCLEtBQUttZSxJQUNWNkUsS0FBSyxHQUFYLENBR0EsSUFBSXkvRSxHQUFpQkYsRUFBR3BKLE9BQU8xMkUsUUFBVSxFQUFJLElBQ1QsSUFBZisvRSxFQUFJbnhGLElBQUlQLEdBQVcsRUFBSSxHQVE1QyxPQUxJalEsRUFBUWtvRSxXQUFhenJELEVBQUVqTSxJQUFJclIsS0FBS3VoRyxJQUFNLElBQ3hDamtGLEVBQUl0ZCxLQUFLbWUsRUFBRXJILElBQUl3RyxHQUNmbWxGLEdBQWlCLEdBR1osSUFBSW5CLEVBQVUsQ0FBRXh3RixFQUFHQSxFQUFHd00sRUFBR0EsRUFBR21sRixjQUFlQSxVQUl0RDN0RCxFQUFHNzBDLFVBQVU0ekMsT0FBUyxTQUFnQmxxQyxFQUFLb3RDLEVBQVcxeUMsRUFBSzVELEdBQ3pEa0osRUFBTTNKLEtBQUttaUcsYUFBYSxJQUFJbnlGLEVBQUdyRyxFQUFLLEtBQ3BDdEYsRUFBTXJFLEtBQUsydEYsY0FBY3RwRixFQUFLNUQsR0FJOUIsSUFBSXFRLEdBSEppbUMsRUFBWSxJQUFJdXFELEVBQVV2cUQsRUFBVyxRQUduQmptQyxFQUNkd00sRUFBSXk1QixFQUFVejVCLEVBQ2xCLEdBQUl4TSxFQUFFa1MsS0FBSyxHQUFLLEdBQUtsUyxFQUFFTyxJQUFJclIsS0FBS21lLElBQU0sRUFDcEMsT0FBTyxFQUNULEdBQUliLEVBQUUwRixLQUFLLEdBQUssR0FBSzFGLEVBQUVqTSxJQUFJclIsS0FBS21lLElBQU0sRUFDcEMsT0FBTyxFQUdULElBR0l4TyxFQUhBK3lGLEVBQU9wbEYsRUFBRTJGLEtBQUtqakIsS0FBS21lLEdBQ25Cd2dGLEVBQUsrRCxFQUFLMXhGLElBQUlySCxHQUFLOFgsS0FBS3poQixLQUFLbWUsR0FDN0J5Z0YsRUFBSzhELEVBQUsxeEYsSUFBSUYsR0FBRzJRLEtBQUt6aEIsS0FBS21lLEdBRy9CLE9BQUtuZSxLQUFLODFDLE1BQU1vaEQsZ0JBV2hCdm5GLEVBQUkzUCxLQUFLb2lCLEVBQUU2NEUsUUFBUTBELEVBQUl0NkYsRUFBSXVwRixZQUFhZ1IsSUFDbENyRSxjQU1DNXFGLEVBQUV3ckYsT0FBT3JxRixLQWpCZG5CLEVBQUkzUCxLQUFLb2lCLEVBQUU0NEUsT0FBTzJELEVBQUl0NkYsRUFBSXVwRixZQUFhZ1IsSUFDakNyRSxjQUdrQyxJQUFqQzVxRixFQUFFbStFLE9BQU9yc0UsS0FBS3poQixLQUFLbWUsR0FBRzlNLElBQUlQLElBZ0JyQ2drQyxFQUFHNzBDLFVBQVUwaUcsY0FBZ0IsU0FBU2g1RixFQUFLb3RDLEVBQVd2ckMsRUFBRy9LLEdBQ3ZEMkMsR0FBUSxFQUFJb0ksS0FBT0EsRUFBRyw0Q0FDdEJ1ckMsRUFBWSxJQUFJdXFELEVBQVV2cUQsRUFBV3QyQyxHQUVyQyxJQUFJMGQsRUFBSW5lLEtBQUttZSxFQUNUdlgsRUFBSSxJQUFJb0osRUFBR3JHLEdBQ1htSCxFQUFJaW1DLEVBQVVqbUMsRUFDZHdNLEVBQUl5NUIsRUFBVXo1QixFQUdkc2xGLEVBQWEsRUFBSnAzRixFQUNUcTNGLEVBQWNyM0YsR0FBSyxFQUN2QixHQUFJc0YsRUFBRU8sSUFBSXJSLEtBQUs4MUMsTUFBTW5tQyxFQUFFOFIsS0FBS3poQixLQUFLODFDLE1BQU0zM0IsS0FBTyxHQUFLMGtGLEVBQ2pELE1BQU0sSUFBSWw5RixNQUFNLHdDQUloQm1MLEVBREUreEYsRUFDRTdpRyxLQUFLODFDLE1BQU1takQsV0FBV25vRixFQUFFK0YsSUFBSTdXLEtBQUs4MUMsTUFBTTMzQixHQUFJeWtGLEdBRTNDNWlHLEtBQUs4MUMsTUFBTW1qRCxXQUFXbm9GLEVBQUc4eEYsR0FFL0IsSUFBSUUsRUFBTy9yRCxFQUFVam1DLEVBQUVtUyxLQUFLOUUsR0FDeEI2ckIsRUFBSzdyQixFQUFFckgsSUFBSWxRLEdBQUdvSyxJQUFJOHhGLEdBQU1yaEYsS0FBS3RELEdBQzdCOHJCLEVBQUszc0IsRUFBRXRNLElBQUk4eEYsR0FBTXJoRixLQUFLdEQsR0FJMUIsT0FBT25lLEtBQUtvaUIsRUFBRTQ0RSxPQUFPaHhELEVBQUlsNUIsRUFBR201QixJQUc5QjZLLEVBQUc3MEMsVUFBVThpRyxvQkFBc0IsU0FBU244RixFQUFHbXdDLEVBQVc2cUIsRUFBR25oRSxHQUUzRCxHQUFnQyxRQURoQ3MyQyxFQUFZLElBQUl1cUQsRUFBVXZxRCxFQUFXdDJDLElBQ3ZCZ2lHLGNBQ1osT0FBTzFyRCxFQUFVMHJELGNBRW5CLElBQUssSUFBSWwzRixFQUFJLEVBQUdBLEVBQUksRUFBR0EsSUFBSyxDQUMxQixJQUFJeTNGLEVBQ0osSUFDRUEsRUFBU2hqRyxLQUFLMmlHLGNBQWMvN0YsRUFBR213QyxFQUFXeHJDLEdBQzFDLE1BQU8zRSxHQUNQLFNBR0YsR0FBSW84RixFQUFPbi9FLEdBQUcrOUMsR0FDWixPQUFPcjJELEVBRVgsTUFBTSxJQUFJNUYsTUFBTSwwQyw0QkMvT2xCLElBQUlxSyxFQUFLLEVBQVEsTUFFYjVNLEVBRFEsRUFBUSxLQUNEQSxPQUVuQixTQUFTaStGLEVBQVF2VSxFQUFJanNGLEdBQ25CYixLQUFLOHNGLEdBQUtBLEVBQ1Y5c0YsS0FBS3l5QyxLQUFPLEtBQ1p6eUMsS0FBS3kyQyxJQUFNLEtBR1A1MUMsRUFBUTR4QyxNQUNWenlDLEtBQUtvdUYsZUFBZXZ0RixFQUFRNHhDLEtBQU01eEMsRUFBUW9pRyxTQUN4Q3BpRyxFQUFRNDFDLEtBQ1Z6MkMsS0FBS2l1RixjQUFjcHRGLEVBQVE0MUMsSUFBSzUxQyxFQUFRcWlHLFFBRTVDeCtGLEVBQU9yRixRQUFVZ2lHLEVBRWpCQSxFQUFRSyxXQUFhLFNBQW9CNVUsRUFBSXIyQyxFQUFLaDJDLEdBQ2hELE9BQUlnMkMsYUFBZTRxRCxFQUNWNXFELEVBRUYsSUFBSTRxRCxFQUFRdlUsRUFBSSxDQUNyQnIyQyxJQUFLQSxFQUNMeXNELE9BQVF6aUcsS0FJWjRnRyxFQUFRSSxZQUFjLFNBQXFCM1UsRUFBSXI2QyxFQUFNaHlDLEdBQ25ELE9BQUlneUMsYUFBZ0I0dUQsRUFDWDV1RCxFQUVGLElBQUk0dUQsRUFBUXZVLEVBQUksQ0FDckJyNkMsS0FBTUEsRUFDTnd3RCxRQUFTeGlHLEtBSWI0Z0csRUFBUXBoRyxVQUFVcTNGLFNBQVcsV0FDM0IsSUFBSTdnRCxFQUFNejJDLEtBQUs0dEYsWUFFZixPQUFJbjNDLEVBQUk4akQsYUFDQyxDQUFFbjBGLFFBQVEsRUFBT3V1QixPQUFRLHNCQUM3QjhoQixFQUFJNmdELFdBRUo3Z0QsRUFBSXpsQyxJQUFJaFIsS0FBSzhzRixHQUFHaDNDLE1BQU0zM0IsR0FBR284RSxhQUd2QixDQUFFbjBGLFFBQVEsRUFBTXV1QixPQUFRLE1BRnRCLENBQUV2dUIsUUFBUSxFQUFPdXVCLE9BQVEsdUJBRnpCLENBQUV2dUIsUUFBUSxFQUFPdXVCLE9BQVEsOEJBT3BDMHNFLEVBQVFwaEcsVUFBVTJ0RixVQUFZLFNBQW1CbjlELEVBQVNod0IsR0FVeEQsTUFSdUIsaUJBQVpnd0IsSUFDVGh3QixFQUFNZ3dCLEVBQ05BLEVBQVUsTUFHUHp3QixLQUFLeTJDLE1BQ1J6MkMsS0FBS3kyQyxJQUFNejJDLEtBQUs4c0YsR0FBRzFxRSxFQUFFcFIsSUFBSWhSLEtBQUt5eUMsT0FFM0JoeUMsRUFHRVQsS0FBS3kyQyxJQUFJMTFDLE9BQU9OLEVBQUtnd0IsR0FGbkJ6d0IsS0FBS3kyQyxLQUtoQjRxRCxFQUFRcGhHLFVBQVU0dEYsV0FBYSxTQUFvQnB0RixHQUNqRCxNQUFZLFFBQVJBLEVBQ0tULEtBQUt5eUMsS0FBS3RtQyxTQUFTLEdBQUksR0FFdkJuTSxLQUFLeXlDLE1BR2hCNHVELEVBQVFwaEcsVUFBVW11RixlQUFpQixTQUF3Qi9wRixFQUFLNUQsR0FDOURULEtBQUt5eUMsS0FBTyxJQUFJemlDLEVBQUczTCxFQUFLNUQsR0FBTyxJQUkvQlQsS0FBS3l5QyxLQUFPenlDLEtBQUt5eUMsS0FBS2h4QixLQUFLemhCLEtBQUs4c0YsR0FBR2gzQyxNQUFNMzNCLElBRzNDa2pGLEVBQVFwaEcsVUFBVWd1RixjQUFnQixTQUF1QjVwRixFQUFLNUQsR0FDNUQsR0FBSTRELEVBQUlnWSxHQUFLaFksRUFBSWlZLEVBV2YsTUFQMkIsU0FBdkJ0YyxLQUFLOHNGLEdBQUdoM0MsTUFBTTV0QyxLQUNoQjlFLEVBQU9pQixFQUFJZ1ksRUFBRyxxQkFDa0IsVUFBdkJyYyxLQUFLOHNGLEdBQUdoM0MsTUFBTTV0QyxNQUNTLFlBQXZCbEksS0FBSzhzRixHQUFHaDNDLE1BQU01dEMsTUFDdkI5RSxFQUFPaUIsRUFBSWdZLEdBQUtoWSxFQUFJaVksRUFBRyxxQ0FFekJ0YyxLQUFLeTJDLElBQU16MkMsS0FBSzhzRixHQUFHaDNDLE1BQU11aEQsTUFBTWh6RixFQUFJZ1ksRUFBR2hZLEVBQUlpWSxJQUc1Q3RjLEtBQUt5MkMsSUFBTXoyQyxLQUFLOHNGLEdBQUdoM0MsTUFBTWtqRCxZQUFZMzBGLEVBQUs1RCxJQUk1QzRnRyxFQUFRcGhHLFVBQVVrakcsT0FBUyxTQUFnQjFzRCxHQUl6QyxPQUhJQSxFQUFJNmdELFlBQ05sMEYsRUFBT3F6QyxFQUFJNmdELFdBQVksOEJBRWxCN2dELEVBQUl6bEMsSUFBSWhSLEtBQUt5eUMsTUFBTXE3QyxRQUk1QnVULEVBQVFwaEcsVUFBVXFQLEtBQU8sU0FBYzNGLEVBQUtsSixFQUFLSSxHQUMvQyxPQUFPYixLQUFLOHNGLEdBQUd4OUUsS0FBSzNGLEVBQUszSixLQUFNUyxFQUFLSSxJQUd0Q3dnRyxFQUFRcGhHLFVBQVU0ekMsT0FBUyxTQUFnQmxxQyxFQUFLb3RDLEdBQzlDLE9BQU8vMkMsS0FBSzhzRixHQUFHajVDLE9BQU9scUMsRUFBS290QyxFQUFXLzJDLE9BR3hDcWhHLEVBQVFwaEcsVUFBVXdTLFFBQVUsV0FDMUIsTUFBTyxlQUFpQnpTLEtBQUt5eUMsTUFBUXp5QyxLQUFLeXlDLEtBQUt0bUMsU0FBUyxHQUFJLElBQ3JELFVBQVluTSxLQUFLeTJDLEtBQU96MkMsS0FBS3kyQyxJQUFJaGtDLFdBQWEsTywyQkNySHZELElBQUl6QyxFQUFLLEVBQVEsTUFFYmcwQyxFQUFRLEVBQVEsS0FDaEI1Z0QsRUFBUzRnRCxFQUFNNWdELE9BRW5CLFNBQVNrK0YsRUFBVXpnRyxFQUFTSixHQUMxQixHQUFJSSxhQUFtQnlnRyxFQUNyQixPQUFPemdHLEVBRUxiLEtBQUtvakcsV0FBV3ZpRyxFQUFTSixLQUc3QjJDLEVBQU92QyxFQUFRaVEsR0FBS2pRLEVBQVF5YyxFQUFHLDRCQUMvQnRkLEtBQUs4USxFQUFJLElBQUlkLEVBQUduUCxFQUFRaVEsRUFBRyxJQUMzQjlRLEtBQUtzZCxFQUFJLElBQUl0TixFQUFHblAsRUFBUXljLEVBQUcsU0FDR2hWLElBQTFCekgsRUFBUTRoRyxjQUNWemlHLEtBQUt5aUcsY0FBZ0IsS0FFckJ6aUcsS0FBS3lpRyxjQUFnQjVoRyxFQUFRNGhHLGVBSWpDLFNBQVNZLElBQ1ByakcsS0FBS3NqRyxNQUFRLEVBR2YsU0FBU0MsRUFBVXI0RixFQUFLeUUsR0FDdEIsSUFBSTZ6RixFQUFVdDRGLEVBQUl5RSxFQUFFMnpGLFNBQ3BCLEtBQWdCLElBQVZFLEdBQ0osT0FBT0EsRUFFVCxJQUFJQyxFQUFxQixHQUFWRCxFQUdmLEdBQWlCLElBQWJDLEdBQWtCQSxFQUFXLEVBQy9CLE9BQU8sRUFJVCxJQURBLElBQUk1OUYsRUFBTSxFQUNEMEYsRUFBSSxFQUFHcUcsRUFBTWpDLEVBQUUyekYsTUFBTy8zRixFQUFJazRGLEVBQVVsNEYsSUFBS3FHLElBQ2hEL0wsSUFBUSxFQUNSQSxHQUFPcUYsRUFBSTBHLEdBQ1gvTCxLQUFTLEVBSVgsUUFBSUEsR0FBTyxPQUlYOEosRUFBRTJ6RixNQUFRMXhGLEVBQ0gvTCxHQUdULFNBQVM2OUYsRUFBVXg0RixHQUdqQixJQUZBLElBQUlLLEVBQUksRUFDSkQsRUFBTUosRUFBSTVKLE9BQVMsR0FDZjRKLEVBQUlLLE1BQXFCLElBQWJMLEVBQUlLLEVBQUksS0FBY0EsRUFBSUQsR0FDNUNDLElBRUYsT0FBVSxJQUFOQSxFQUNLTCxFQUVGQSxFQUFJdEksTUFBTTJJLEdBNERuQixTQUFTbzRGLEVBQWdCNXVFLEVBQUt6cEIsR0FDNUIsR0FBSUEsRUFBTSxJQUNSeXBCLEVBQUkvdkIsS0FBS3NHLE9BRFgsQ0FJQSxJQUFJczRGLEVBQVMsR0FBSzN5RixLQUFLb2hCLElBQUkvbUIsR0FBTzJGLEtBQUttZ0UsTUFBUSxHQUUvQyxJQURBcjhDLEVBQUkvdkIsS0FBYyxJQUFUNCtGLEtBQ0FBLEdBQ1A3dUUsRUFBSS92QixLQUFNc0csS0FBU3M0RixHQUFVLEdBQU0sS0FFckM3dUUsRUFBSS92QixLQUFLc0csSUFqSFg1RyxFQUFPckYsUUFBVWlpRyxFQThDakJBLEVBQVVyaEcsVUFBVW1qRyxXQUFhLFNBQW9CeGlHLEVBQU1ILEdBQ3pERyxFQUFPb2pELEVBQU0zMEMsUUFBUXpPLEVBQU1ILEdBQzNCLElBQUlrUCxFQUFJLElBQUkwekYsRUFDWixHQUF3QixLQUFwQnppRyxFQUFLK08sRUFBRTJ6RixTQUNULE9BQU8sRUFFVCxJQUFJaDRGLEVBQU1pNEYsRUFBVTNpRyxFQUFNK08sR0FDMUIsSUFBWSxJQUFSckUsRUFDRixPQUFPLEVBRVQsR0FBS0EsRUFBTXFFLEVBQUUyekYsUUFBVzFpRyxFQUFLVSxPQUMzQixPQUFPLEVBRVQsR0FBd0IsSUFBcEJWLEVBQUsrTyxFQUFFMnpGLFNBQ1QsT0FBTyxFQUVULElBQUk3OEUsRUFBTzg4RSxFQUFVM2lHLEVBQU0rTyxHQUMzQixJQUFhLElBQVQ4VyxFQUNGLE9BQU8sRUFFVCxJQUFJM1YsRUFBSWxRLEVBQUtnQyxNQUFNK00sRUFBRTJ6RixNQUFPNzhFLEVBQU85VyxFQUFFMnpGLE9BRXJDLEdBREEzekYsRUFBRTJ6RixPQUFTNzhFLEVBQ2EsSUFBcEI3bEIsRUFBSytPLEVBQUUyekYsU0FDVCxPQUFPLEVBRVQsSUFBSU8sRUFBT04sRUFBVTNpRyxFQUFNK08sR0FDM0IsSUFBYSxJQUFUazBGLEVBQ0YsT0FBTyxFQUVULEdBQUlqakcsRUFBS1UsU0FBV3VpRyxFQUFPbDBGLEVBQUUyekYsTUFDM0IsT0FBTyxFQUVULElBQUlobUYsRUFBSTFjLEVBQUtnQyxNQUFNK00sRUFBRTJ6RixNQUFPTyxFQUFPbDBGLEVBQUUyekYsT0FDckMsR0FBYSxJQUFUeHlGLEVBQUUsR0FBVSxDQUNkLEtBQVcsSUFBUEEsRUFBRSxJQUlKLE9BQU8sRUFIUEEsRUFBSUEsRUFBRWxPLE1BQU0sR0FNaEIsR0FBYSxJQUFUMGEsRUFBRSxHQUFVLENBQ2QsS0FBVyxJQUFQQSxFQUFFLElBSUosT0FBTyxFQUhQQSxFQUFJQSxFQUFFMWEsTUFBTSxHQVdoQixPQUpBNUMsS0FBSzhRLEVBQUksSUFBSWQsRUFBR2MsR0FDaEI5USxLQUFLc2QsRUFBSSxJQUFJdE4sRUFBR3NOLEdBQ2hCdGQsS0FBS3lpRyxjQUFnQixNQUVkLEdBZ0JUbkIsRUFBVXJoRyxVQUFVaTJDLE1BQVEsU0FBZXoxQyxHQUN6QyxJQUFJcVEsRUFBSTlRLEtBQUs4USxFQUFFekIsVUFDWGlPLEVBQUl0ZCxLQUFLc2QsRUFBRWpPLFVBWWYsSUFUVyxJQUFQeUIsRUFBRSxLQUNKQSxFQUFJLENBQUUsR0FBSXZOLE9BQU91TixJQUVSLElBQVB3TSxFQUFFLEtBQ0pBLEVBQUksQ0FBRSxHQUFJL1osT0FBTytaLElBRW5CeE0sRUFBSTR5RixFQUFVNXlGLEdBQ2R3TSxFQUFJb21GLEVBQVVwbUYsS0FFTkEsRUFBRSxJQUFlLElBQVBBLEVBQUUsS0FDbEJBLEVBQUlBLEVBQUUxYSxNQUFNLEdBRWQsSUFBSW15QixFQUFNLENBQUUsR0FDWjR1RSxFQUFnQjV1RSxFQUFLamtCLEVBQUV4UCxTQUN2Qnl6QixFQUFNQSxFQUFJeHhCLE9BQU91TixJQUNiOUwsS0FBSyxHQUNUMitGLEVBQWdCNXVFLEVBQUt6WCxFQUFFaGMsUUFDdkIsSUFBSXdpRyxFQUFXL3VFLEVBQUl4eEIsT0FBTytaLEdBQ3RCOWEsRUFBTSxDQUFFLElBR1osT0FGQW1oRyxFQUFnQm5oRyxFQUFLc2hHLEVBQVN4aUcsUUFDOUJrQixFQUFNQSxFQUFJZSxPQUFPdWdHLEdBQ1Y5L0MsRUFBTWpqRCxPQUFPeUIsRUFBSy9CLEssNEJDbEszQixJQUFJMHpDLEVBQU8sRUFBUSxNQUNmYSxFQUFTLEVBQVEsTUFDakJnUCxFQUFRLEVBQVEsS0FDaEI1Z0QsRUFBUzRnRCxFQUFNNWdELE9BQ2YyZ0csRUFBYS8vQyxFQUFNKy9DLFdBQ25CMUMsRUFBVSxFQUFRLE1BQ2xCQyxFQUFZLEVBQVEsTUFFeEIsU0FBUzBDLEVBQU1sdUQsR0FHYixHQUZBMXlDLEVBQWlCLFlBQVYweUMsRUFBcUIscUNBRXRCOTFDLGdCQUFnQmdrRyxHQUNwQixPQUFPLElBQUlBLEVBQU1sdUQsR0FFbkJBLEVBQVFkLEVBQU9jLEdBQU9BLE1BQ3RCOTFDLEtBQUs4MUMsTUFBUUEsRUFDYjkxQyxLQUFLb2lCLEVBQUkwekIsRUFBTTF6QixFQUNmcGlCLEtBQUtvaUIsRUFBRWczRSxXQUFXdGpELEVBQU0zM0IsRUFBRXZKLFlBQWMsR0FFeEM1VSxLQUFLaWtHLFdBQWFudUQsRUFBTXVoRCxRQUFRcDFGLFlBQ2hDakMsS0FBS2trRyxlQUFpQmp6RixLQUFLUyxLQUFLb2tDLEVBQU0zM0IsRUFBRXZKLFlBQWMsR0FDdEQ1VSxLQUFLbTBDLEtBQU9BLEVBQUtndEQsT0FHbkJ6OEYsRUFBT3JGLFFBQVUya0csRUFPakJBLEVBQU0vakcsVUFBVXFQLEtBQU8sU0FBY2xGLEVBQVN3ckYsR0FDNUN4ckYsRUFBVTI1RixFQUFXMzVGLEdBQ3JCLElBQUkvRixFQUFNckUsS0FBS21rRyxjQUFjdk8sR0FDekI5a0YsRUFBSTlRLEtBQUtva0csUUFBUS8vRixFQUFJZ2dHLGdCQUFpQmo2RixHQUN0QzIyRCxFQUFJL2dFLEtBQUtvaUIsRUFBRXBSLElBQUlGLEdBQ2Z3ekYsRUFBV3RrRyxLQUFLdWtHLFlBQVl4akMsR0FDNUJ5akMsRUFBS3hrRyxLQUFLb2tHLFFBQVFFLEVBQVVqZ0csRUFBSW9nRyxXQUFZcjZGLEdBQzdDNEcsSUFBSTNNLEVBQUlvdUMsUUFDUDJ1QixFQUFJdHdELEVBQUUrRixJQUFJMnRGLEdBQUkvaUYsS0FBS3poQixLQUFLODFDLE1BQU0zM0IsR0FDbEMsT0FBT25lLEtBQUswa0csY0FBYyxDQUFFM2pDLEVBQUdBLEVBQUdLLEVBQUdBLEVBQUdrakMsU0FBVUEsS0FTcEROLEVBQU0vakcsVUFBVTR6QyxPQUFTLFNBQWdCenBDLEVBQVN3cUMsRUFBSzZCLEdBQ3JEcnNDLEVBQVUyNUYsRUFBVzM1RixHQUNyQndxQyxFQUFNNTBDLEtBQUswa0csY0FBYzl2RCxHQUN6QixJQUFJdndDLEVBQU1yRSxLQUFLMnRGLGNBQWNsM0MsR0FDekJ6MkIsRUFBSWhnQixLQUFLb2tHLFFBQVF4dkQsRUFBSTB2RCxXQUFZamdHLEVBQUlvZ0csV0FBWXI2RixHQUNqRHU2RixFQUFLM2tHLEtBQUtvaUIsRUFBRXBSLElBQUk0akMsRUFBSXdzQixLQUV4QixPQURjeHNCLEVBQUltc0IsSUFBSWxxRCxJQUFJeFMsRUFBSW95QyxNQUFNemxDLElBQUlnUCxJQUN6QjZELEdBQUc4Z0YsSUFHcEJYLEVBQU0vakcsVUFBVW1rRyxRQUFVLFdBRXhCLElBREEsSUFBSWp3RCxFQUFPbjBDLEtBQUttMEMsT0FDUDVvQyxFQUFJLEVBQUdBLEVBQUlyRyxVQUFVNUQsT0FBUWlLLElBQ3BDNG9DLEVBQUt4SCxPQUFPem5DLFVBQVVxRyxJQUN4QixPQUFPeTRDLEVBQU00Z0QsVUFBVXp3RCxFQUFLUSxVQUFVbHpCLEtBQUt6aEIsS0FBSzgxQyxNQUFNMzNCLElBR3hENmxGLEVBQU0vakcsVUFBVTB0RixjQUFnQixTQUF1QmwzQyxHQUNyRCxPQUFPNHFELEVBQVFLLFdBQVcxaEcsS0FBTXkyQyxJQUdsQ3V0RCxFQUFNL2pHLFVBQVVra0csY0FBZ0IsU0FBdUJ2TyxHQUNyRCxPQUFPeUwsRUFBUXdELFdBQVc3a0csS0FBTTQxRixJQUdsQ29PLEVBQU0vakcsVUFBVXlrRyxjQUFnQixTQUF1Qjl2RCxHQUNyRCxPQUFJQSxhQUFlMHNELEVBQ1Yxc0QsRUFDRixJQUFJMHNELEVBQVV0aEcsS0FBTTQwQyxJQVc3Qm92RCxFQUFNL2pHLFVBQVVza0csWUFBYyxTQUFxQmxOLEdBQ2pELElBQUk1MkYsRUFBTTQyRixFQUFNOEIsT0FBTzlwRixRQUFRLEtBQU1yUCxLQUFLa2tHLGdCQUUxQyxPQURBempHLEVBQUlULEtBQUtra0csZUFBaUIsSUFBTTdNLEVBQU12SixPQUFPcnJFLFFBQVUsSUFBTyxFQUN2RGhpQixHQUdUdWpHLEVBQU0vakcsVUFBVSs0RixZQUFjLFNBQXFCdDJGLEdBR2pELElBQUlvaUcsR0FGSnBpRyxFQUFRc2hELEVBQU0rL0MsV0FBV3JoRyxJQUVOcEIsT0FBUyxFQUN4QnlqRyxFQUFTcmlHLEVBQU1FLE1BQU0sRUFBR2tpRyxHQUFRdmhHLFFBQXVCLElBQWhCYixFQUFNb2lHLElBQzdDRSxFQUFvQyxJQUFWLElBQWhCdGlHLEVBQU1vaUcsSUFFaEJ4b0YsRUFBSTBuQyxFQUFNNGdELFVBQVVHLEdBQ3hCLE9BQU8va0csS0FBSzgxQyxNQUFNd2tELFdBQVdoK0UsRUFBRzBvRixJQUdsQ2hCLEVBQU0vakcsVUFBVWdsRyxVQUFZLFNBQW1Cbi9GLEdBQzdDLE9BQU9BLEVBQUl1SixRQUFRLEtBQU1yUCxLQUFLa2tHLGlCQUdoQ0YsRUFBTS9qRyxVQUFVaWxHLFVBQVksU0FBbUJ4aUcsR0FDN0MsT0FBT3NoRCxFQUFNNGdELFVBQVVsaUcsSUFHekJzaEcsRUFBTS9qRyxVQUFVa2xHLFFBQVUsU0FBaUJ0L0YsR0FDekMsT0FBT0EsYUFBZTdGLEtBQUtpa0csYSw0QkNsSDdCLElBQUlqZ0QsRUFBUSxFQUFRLEtBQ2hCNWdELEVBQVM0Z0QsRUFBTTVnRCxPQUNmMmdHLEVBQWEvL0MsRUFBTSsvQyxXQUNuQnFCLEVBQWlCcGhELEVBQU1vaEQsZUFXM0IsU0FBUy9ELEVBQVFqTCxFQUFPaGdELEdBQ3RCcDJDLEtBQUtvMkYsTUFBUUEsRUFDYnAyRixLQUFLcWxHLFFBQVV0QixFQUFXM3RELEVBQU93L0MsUUFDN0JRLEVBQU0rTyxRQUFRL3VELEVBQU9LLEtBQ3ZCejJDLEtBQUtnMUYsS0FBTzUrQyxFQUFPSyxJQUVuQnoyQyxLQUFLc2xHLFVBQVl2QixFQUFXM3RELEVBQU9LLEtBR3ZDNHFELEVBQVFLLFdBQWEsU0FBb0J0TCxFQUFPMy9DLEdBQzlDLE9BQUlBLGFBQWU0cUQsRUFDVjVxRCxFQUNGLElBQUk0cUQsRUFBUWpMLEVBQU8sQ0FBRTMvQyxJQUFLQSxLQUduQzRxRCxFQUFRd0QsV0FBYSxTQUFvQnpPLEVBQU9SLEdBQzlDLE9BQUlBLGFBQWtCeUwsRUFDYnpMLEVBQ0YsSUFBSXlMLEVBQVFqTCxFQUFPLENBQUVSLE9BQVFBLEtBR3RDeUwsRUFBUXBoRyxVQUFVMjFGLE9BQVMsV0FDekIsT0FBTzUxRixLQUFLcWxHLFNBR2RELEVBQWUvRCxFQUFTLFlBQVksV0FDbEMsT0FBT3JoRyxLQUFLbzJGLE1BQU1tTyxZQUFZdmtHLEtBQUt5MkMsVUFHckMydUQsRUFBZS9ELEVBQVMsT0FBTyxXQUM3QixPQUFJcmhHLEtBQUtzbEcsVUFDQXRsRyxLQUFLbzJGLE1BQU00QyxZQUFZaDVGLEtBQUtzbEcsV0FDOUJ0bEcsS0FBS28yRixNQUFNaDBFLEVBQUVwUixJQUFJaFIsS0FBS3l5QyxXQUcvQjJ5RCxFQUFlL0QsRUFBUyxhQUFhLFdBQ25DLElBQUlqTCxFQUFRcDJGLEtBQUtvMkYsTUFDYmppRCxFQUFPbjBDLEtBQUttMEMsT0FDWjJ3RCxFQUFTMU8sRUFBTThOLGVBQWlCLEVBRWhDbnhGLEVBQUlvaEMsRUFBS3Z4QyxNQUFNLEVBQUd3ekYsRUFBTThOLGdCQUs1QixPQUpBbnhGLEVBQUUsSUFBTSxJQUNSQSxFQUFFK3hGLElBQVcsSUFDYi94RixFQUFFK3hGLElBQVcsR0FFTi94RixLQUdUcXlGLEVBQWUvRCxFQUFTLFFBQVEsV0FDOUIsT0FBT3JoRyxLQUFLbzJGLE1BQU04TyxVQUFVbGxHLEtBQUt1bEcsZ0JBR25DSCxFQUFlL0QsRUFBUyxRQUFRLFdBQzlCLE9BQU9yaEcsS0FBS28yRixNQUFNamlELE9BQU94SCxPQUFPM3NDLEtBQUs0MUYsVUFBVWpoRCxZQUdqRHl3RCxFQUFlL0QsRUFBUyxpQkFBaUIsV0FDdkMsT0FBT3JoRyxLQUFLbTBDLE9BQU92eEMsTUFBTTVDLEtBQUtvMkYsTUFBTThOLG1CQUd0QzdDLEVBQVFwaEcsVUFBVXFQLEtBQU8sU0FBY2xGLEdBRXJDLE9BREFoSCxFQUFPcEQsS0FBS3FsRyxRQUFTLDJCQUNkcmxHLEtBQUtvMkYsTUFBTTltRixLQUFLbEYsRUFBU3BLLE9BR2xDcWhHLEVBQVFwaEcsVUFBVTR6QyxPQUFTLFNBQWdCenBDLEVBQVN3cUMsR0FDbEQsT0FBTzUwQyxLQUFLbzJGLE1BQU12aUQsT0FBT3pwQyxFQUFTd3FDLEVBQUs1MEMsT0FHekNxaEcsRUFBUXBoRyxVQUFVdWxHLFVBQVksU0FBbUIva0csR0FFL0MsT0FEQTJDLEVBQU9wRCxLQUFLcWxHLFFBQVMsMEJBQ2RyaEQsRUFBTWpqRCxPQUFPZixLQUFLNDFGLFNBQVVuMUYsSUFHckM0Z0csRUFBUXBoRyxVQUFVMnRGLFVBQVksU0FBbUJudEYsR0FDL0MsT0FBT3VqRCxFQUFNampELE9BQU9mLEtBQUt5a0csV0FBWWhrRyxJQUd2Q2lFLEVBQU9yRixRQUFVZ2lHLEcsNEJDNUZqQixJQUFJcnhGLEVBQUssRUFBUSxNQUNiZzBDLEVBQVEsRUFBUSxLQUNoQjVnRCxFQUFTNGdELEVBQU01Z0QsT0FDZmdpRyxFQUFpQnBoRCxFQUFNb2hELGVBQ3ZCckIsRUFBYS8vQyxFQUFNKy9DLFdBVXZCLFNBQVN6QyxFQUFVbEwsRUFBT3hoRCxHQUN4QjUwQyxLQUFLbzJGLE1BQVFBLEVBRU0saUJBQVJ4aEQsSUFDVEEsRUFBTW12RCxFQUFXbnZELElBRWZsekMsTUFBTUMsUUFBUWl6QyxLQUNoQkEsRUFBTSxDQUNKbXNCLEVBQUduc0IsRUFBSWh5QyxNQUFNLEVBQUd3ekYsRUFBTThOLGdCQUN0QjlpQyxFQUFHeHNCLEVBQUloeUMsTUFBTXd6RixFQUFNOE4sa0JBSXZCOWdHLEVBQU93eEMsRUFBSW1zQixHQUFLbnNCLEVBQUl3c0IsRUFBRyw0QkFFbkJnMUIsRUFBTStPLFFBQVF2d0QsRUFBSW1zQixLQUNwQi9nRSxLQUFLeWxHLEdBQUs3d0QsRUFBSW1zQixHQUNabnNCLEVBQUl3c0IsYUFBYXB4RCxJQUNuQmhRLEtBQUswbEcsR0FBSzl3RCxFQUFJd3NCLEdBRWhCcGhFLEtBQUsybEcsVUFBWWprRyxNQUFNQyxRQUFRaXpDLEVBQUltc0IsR0FBS25zQixFQUFJbXNCLEVBQUluc0IsRUFBSTB2RCxTQUNwRHRrRyxLQUFLNGxHLFVBQVlsa0csTUFBTUMsUUFBUWl6QyxFQUFJd3NCLEdBQUt4c0IsRUFBSXdzQixFQUFJeHNCLEVBQUlpeEQsU0FHdERULEVBQWU5RCxFQUFXLEtBQUssV0FDN0IsT0FBT3RoRyxLQUFLbzJGLE1BQU04TyxVQUFVbGxHLEtBQUs2bEcsZUFHbkNULEVBQWU5RCxFQUFXLEtBQUssV0FDN0IsT0FBT3RoRyxLQUFLbzJGLE1BQU00QyxZQUFZaDVGLEtBQUtza0csZUFHckNjLEVBQWU5RCxFQUFXLFlBQVksV0FDcEMsT0FBT3RoRyxLQUFLbzJGLE1BQU1tTyxZQUFZdmtHLEtBQUsrZ0UsUUFHckNxa0MsRUFBZTlELEVBQVcsWUFBWSxXQUNwQyxPQUFPdGhHLEtBQUtvMkYsTUFBTTZPLFVBQVVqbEcsS0FBS29oRSxRQUduQ2tnQyxFQUFVcmhHLFVBQVU2bEcsUUFBVSxXQUM1QixPQUFPOWxHLEtBQUtza0csV0FBVy9nRyxPQUFPdkQsS0FBSzZsRyxhQUdyQ3ZFLEVBQVVyaEcsVUFBVThsRyxNQUFRLFdBQzFCLE9BQU8vaEQsRUFBTWpqRCxPQUFPZixLQUFLOGxHLFVBQVcsT0FBT3A0RixlQUc3Q2hKLEVBQU9yRixRQUFVaWlHLEcsU0NoRWpCNThGLEVBQU9yRixRQUFVLENBQ2ZtNEYsUUFBUyxDQUNQRyxLQUFNLEVBQ05LLE9BQVEsQ0FDTixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxrRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0Usa0VBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esc0VBSU5OLElBQUssQ0FDSHJ3RSxJQUFLLEVBQ0wyd0UsT0FBUSxDQUNOLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0Usa0VBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLGtFQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLGtFQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsaUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0Usa0VBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYs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LEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FDbEQsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFDbkQsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksSUFHaER3OUYsRUFBSyxDQUNQLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQ2xELEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQ25ELEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQ2xELEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQ2xELEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLElBR2hEaHhGLEVBQUksQ0FDTixHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUNyRCxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUNwRCxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxFQUNyRCxHQUFJLEdBQUksR0FBSSxHQUFJLEdB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QUFHLEdBQ2xELEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQ25ELEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLElBR2hEMlksRUFBSyxDQUNQLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQ2xELEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQ25ELEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQ2xELEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQ2xELEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLElBR2hEQyxFQUFLLENBQ1AsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFDckQsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FDcEQsR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFDckQsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FDcEQsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FHbkRocEMsRUFBSyxDQUNQLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQ3JELEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQ3BELEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQ3JELEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQ3JELEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxHQUFJLElBR2xEbXlCLEVBQUssQ0FBQyxFQUFZLFdBQVksV0FBWSxXQUFZLFlBQ3REaHlCLEVBQUssQ0FBQyxXQUFZLFdBQVksV0FBWSxXQUFZLEdBRTFELFNBQVN3TixJQUNQK2QsRUFBUzlyRyxLQUFLUCxLQUFNLElBR3BCQSxLQUFLbTJHLEdBQUssV0FDVm4yRyxLQUFLbzJHLEdBQUssV0FDVnAyRyxLQUFLcTJHLEdBQUssV0FDVnIyRyxLQUFLbTFCLEdBQUssVUFDVm4xQixLQUFLbzFCLEdBQUssV0F3RlosU0FBU2toRixFQUFNajZGLEVBQUc4QixHQUNoQixPQUFROUIsR0FBSzhCLEVBQU05QixJQUFPLEdBQUs4QixFQUdqQyxTQUFTeXJHLEVBQUs3MkcsRUFBR0MsRUFBR3JDLEVBQUc2cUIsRUFBRzUwQixFQUFHd1gsRUFBR2pMLEVBQUdtSyxHQUNqQyxPQUFRZzVGLEVBQU12akcsR0FBS0MsRUFBSXJDLEVBQUk2cUIsR0FBS3BkLEVBQUlqTCxFQUFLLEVBQUdtSyxHQUFLMVcsRUFBSyxFQUd4RCxTQUFTaWpILEVBQUs5MkcsRUFBR0MsRUFBR3JDLEVBQUc2cUIsRUFBRzUwQixFQUFHd1gsRUFBR2pMLEVBQUdtSyxHQUNqQyxPQUFRZzVGLEVBQU12akcsR0FBTUMsRUFBSXJDLEdBQVFxQyxFQUFLd29CLEdBQU1wZCxFQUFJakwsRUFBSyxFQUFHbUssR0FBSzFXLEVBQUssRUFHbkUsU0FBU2tqSCxFQUFLLzJHLEVBQUdDLEVBQUdyQyxFQUFHNnFCLEVBQUc1MEIsRUFBR3dYLEVBQUdqTCxFQUFHbUssR0FDakMsT0FBUWc1RixFQUFNdmpHLElBQU1DLEdBQU1yQyxHQUFNNnFCLEdBQUtwZCxFQUFJakwsRUFBSyxFQUFHbUssR0FBSzFXLEVBQUssRUFHN0QsU0FBU21qSCxFQUFLaDNHLEVBQUdDLEVBQUdyQyxFQUFHNnFCLEVBQUc1MEIsRUFBR3dYLEVBQUdqTCxFQUFHbUssR0FDakMsT0FBUWc1RixFQUFNdmpHLEdBQU1DLEVBQUl3b0IsRUFBTTdxQixHQUFNNnFCLEdBQU9wZCxFQUFJakwsRUFBSyxFQUFHbUssR0FBSzFXLEVBQUssRUFHbkUsU0FBU29qSCxFQUFLajNHLEVBQUdDLEVBQUdyQyxFQUFHNnFCLEVBQUc1MEIsRUFBR3dYLEVBQUdqTCxFQUFHbUssR0FDakMsT0FBUWc1RixFQUFNdmpHLEdBQUtDLEdBQUtyQyxHQUFNNnFCLElBQU9wZCxFQUFJakwsRUFBSyxFQUFHbUssR0FBSzFXLEVBQUssRUExRzdEaEgsRUFBUzB1RixFQUFXK2QsR0FFcEIvZCxFQUFVcnVGLFVBQVVzdEMsUUFBVSxXQUU1QixJQURBLElBQUlsOUIsRUFBUTZsRyxFQUNIMXFHLEVBQUksRUFBR0EsRUFBSSxLQUFNQSxFQUFHNkUsRUFBTTdFLEdBQUt4TCxLQUFLc3NHLE9BQU94dkMsWUFBZ0IsRUFBSnR4RCxHQWVoRSxJQWJBLElBQUkwbUcsRUFBZSxFQUFWbHlHLEtBQUttMkcsR0FDVnpsRSxFQUFlLEVBQVYxd0MsS0FBS28yRyxHQUNWL0QsRUFBZSxFQUFWcnlHLEtBQUtxMkcsR0FDVi9ELEVBQWUsRUFBVnR5RyxLQUFLbTFCLEdBQ1ZxOUUsRUFBZSxFQUFWeHlHLEtBQUtvMUIsR0FFVnFzRCxFQUFlLEVBQVZ6aEYsS0FBS20yRyxHQUNWdjBCLEVBQWUsRUFBVjVoRixLQUFLbzJHLEdBQ1ZoMUIsRUFBZSxFQUFWcGhGLEtBQUtxMkcsR0FDVmwyQixFQUFlLEVBQVZuZ0YsS0FBS20xQixHQUNWd3NCLEVBQWUsRUFBVjNoRCxLQUFLbzFCLEdBR0w3cEIsRUFBSSxFQUFHQSxFQUFJLEdBQUlBLEdBQUssRUFBRyxDQUM5QixJQUFJMCtHLEVBQ0Exb0MsRUFDQWgyRSxFQUFJLElBQ04wK0csRUFBS0wsRUFBSTFYLEVBQUl4aEUsRUFBSTJoRSxFQUFJQyxFQUFJRSxFQUFJbmlHLEVBQU0wZ0csRUFBR3hsRyxJQUFLdW5HLEVBQUcsR0FBSTZXLEVBQUdwK0csSUFDckRnMkUsRUFBS3lvQyxFQUFJdm9DLEVBQUlHLEVBQUlSLEVBQUlqQixFQUFJeCtCLEVBQUl0eEMsRUFBTXE1RyxFQUFHbitHLElBQUt1MUUsRUFBRyxHQUFJSCxFQUFHcDFFLEtBQzVDQSxFQUFJLElBQ2IwK0csRUFBS0osRUFBSTNYLEVBQUl4aEUsRUFBSTJoRSxFQUFJQyxFQUFJRSxFQUFJbmlHLEVBQU0wZ0csRUFBR3hsRyxJQUFLdW5HLEVBQUcsR0FBSTZXLEVBQUdwK0csSUFDckRnMkUsRUFBS3dvQyxFQUFJdG9DLEVBQUlHLEVBQUlSLEVBQUlqQixFQUFJeCtCLEVBQUl0eEMsRUFBTXE1RyxFQUFHbitHLElBQUt1MUUsRUFBRyxHQUFJSCxFQUFHcDFFLEtBQzVDQSxFQUFJLElBQ2IwK0csRUFBS0gsRUFBSTVYLEVBQUl4aEUsRUFBSTJoRSxFQUFJQyxFQUFJRSxFQUFJbmlHLEVBQU0wZ0csRUFBR3hsRyxJQUFLdW5HLEVBQUcsR0FBSTZXLEVBQUdwK0csSUFDckRnMkUsRUFBS3VvQyxFQUFJcm9DLEVBQUlHLEVBQUlSLEVBQUlqQixFQUFJeCtCLEVBQUl0eEMsRUFBTXE1RyxFQUFHbitHLElBQUt1MUUsRUFBRyxHQUFJSCxFQUFHcDFFLEtBQzVDQSxFQUFJLElBQ2IwK0csRUFBS0YsRUFBSTdYLEVBQUl4aEUsRUFBSTJoRSxFQUFJQyxFQUFJRSxFQUFJbmlHLEVBQU0wZ0csRUFBR3hsRyxJQUFLdW5HLEVBQUcsR0FBSTZXLEVBQUdwK0csSUFDckRnMkUsRUFBS3NvQyxFQUFJcG9DLEVBQUlHLEVBQUlSLEVBQUlqQixFQUFJeCtCLEVBQUl0eEMsRUFBTXE1RyxFQUFHbitHLElBQUt1MUUsRUFBRyxHQUFJSCxFQUFHcDFFLE1BRXJEMCtHLEVBQUtELEVBQUk5WCxFQUFJeGhFLEVBQUkyaEUsRUFBSUMsRUFBSUUsRUFBSW5pRyxFQUFNMGdHLEVBQUd4bEcsSUFBS3VuRyxFQUFHLEdBQUk2VyxFQUFHcCtHLElBQ3JEZzJFLEVBQUtxb0MsRUFBSW5vQyxFQUFJRyxFQUFJUixFQUFJakIsRUFBSXgrQixFQUFJdHhDLEVBQU1xNUcsRUFBR24rRyxJQUFLdTFFLEVBQUcsR0FBSUgsRUFBR3AxRSxLQUd2RDJtRyxFQUFLTSxFQUNMQSxFQUFLRixFQUNMQSxFQUFLZ0UsRUFBS2pFLEVBQUksSUFDZEEsRUFBSzNoRSxFQUNMQSxFQUFLdTVFLEVBRUx4b0MsRUFBSzkvQixFQUNMQSxFQUFLdytCLEVBQ0xBLEVBQUttMkIsRUFBS2wxQixFQUFJLElBQ2RBLEVBQUtRLEVBQ0xBLEVBQUtMLEVBSVAsSUFBSTdzRSxFQUFLMVUsS0FBS28yRyxHQUFLL0QsRUFBS2x5QixFQUFNLEVBQzlCbmdGLEtBQUtvMkcsR0FBTXAyRyxLQUFLcTJHLEdBQUsvRCxFQUFLM3dELEVBQU0sRUFDaEMzaEQsS0FBS3EyRyxHQUFNcjJHLEtBQUttMUIsR0FBS3E5RSxFQUFLL3dCLEVBQU0sRUFDaEN6aEYsS0FBS20xQixHQUFNbjFCLEtBQUtvMUIsR0FBSzg4RSxFQUFLdHdCLEVBQU0sRUFDaEM1aEYsS0FBS28xQixHQUFNcDFCLEtBQUttMkcsR0FBS3psRSxFQUFLMHdDLEVBQU0sRUFDaENwaEYsS0FBS20yRyxHQUFLemhHLEdBR1o0NUUsRUFBVXJ1RixVQUFVMnNHLFFBQVUsV0FFNUI1c0csS0FBS3NzRyxPQUFPdHNHLEtBQUt3c0csZ0JBQWtCLElBQy9CeHNHLEtBQUt3c0csYUFBZSxLQUN0QnhzRyxLQUFLc3NHLE9BQU8vMkQsS0FBSyxFQUFHdjFDLEtBQUt3c0csYUFBYyxJQUN2Q3hzRyxLQUFLdXRDLFVBQ0x2dEMsS0FBS3dzRyxhQUFlLEdBR3RCeHNHLEtBQUtzc0csT0FBTy8yRCxLQUFLLEVBQUd2MUMsS0FBS3dzRyxhQUFjLElBQ3ZDeHNHLEtBQUtzc0csT0FBT3h1QyxjQUFjOTlELEtBQUt5c0csUUFBUSxHQUFJLElBQzNDenNHLEtBQUtzc0csT0FBT3h1QyxjQUFjOTlELEtBQUt5c0csUUFBUSxHQUFJLElBQzNDenNHLEtBQUt1dEMsVUFHTCxJQUFJOWhDLEVBQVN2SyxFQUFPNkIsTUFBUTdCLEVBQU82QixNQUFNLElBQU0sSUFBSTdCLEVBQU8sSUFNMUQsT0FMQXVLLEVBQU84eUQsYUFBYXYrRCxLQUFLbTJHLEdBQUksR0FDN0IxcUcsRUFBTzh5RCxhQUFhditELEtBQUtvMkcsR0FBSSxHQUM3QjNxRyxFQUFPOHlELGFBQWF2K0QsS0FBS3EyRyxHQUFJLEdBQzdCNXFHLEVBQU84eUQsYUFBYXYrRCxLQUFLbTFCLEdBQUksSUFDN0IxcEIsRUFBTzh5RCxhQUFhditELEtBQUtvMUIsR0FBSSxJQUN0QjNwQixHQTJCVC9HLEVBQU9yRixRQUFVaXZGLEcsZUNoS2pCLElBQUk3aUYsRUFBUyxFQUFRLE1BQ2pCdkssRUFBU3VLLEVBQU92SyxPQUdwQixTQUFTZ3BILEVBQVduaUYsRUFBSzYzQixHQUN2QixJQUFLLElBQUl2N0QsS0FBTzBqQyxFQUNkNjNCLEVBQUl2N0QsR0FBTzBqQyxFQUFJMWpDLEdBV25CLFNBQVM4bEgsRUFBWTNrSCxFQUFLdXdELEVBQWtCejBELEdBQzFDLE9BQU9KLEVBQU9zRSxFQUFLdXdELEVBQWtCejBELEdBVG5DSixFQUFPNk0sTUFBUTdNLEVBQU82QixPQUFTN0IsRUFBT2luQyxhQUFlam5DLEVBQU84NEQsZ0JBQzlEdDFELEVBQU9yRixRQUFVb00sR0FHakJ5K0csRUFBVXorRyxFQUFRcE0sR0FDbEJBLEVBQVE2QixPQUFTaXBILEdBT25CQSxFQUFXbHFILFVBQVl3RixPQUFPdXBCLE9BQU85dEIsRUFBT2pCLFdBRzVDaXFILEVBQVVocEgsRUFBUWlwSCxHQUVsQkEsRUFBV3A4RyxLQUFPLFNBQVV2SSxFQUFLdXdELEVBQWtCejBELEdBQ2pELEdBQW1CLGlCQUFSa0UsRUFDVCxNQUFNLElBQUkwbEIsVUFBVSxpQ0FFdEIsT0FBT2hxQixFQUFPc0UsRUFBS3V3RCxFQUFrQnowRCxJQUd2QzZvSCxFQUFXcG5ILE1BQVEsU0FBVTJMLEVBQU02bUMsRUFBTStMLEdBQ3ZDLEdBQW9CLGlCQUFUNXlDLEVBQ1QsTUFBTSxJQUFJd2MsVUFBVSw2QkFFdEIsSUFBSWhnQixFQUFNaEssRUFBT3dOLEdBVWpCLFlBVGFwRyxJQUFUaXRDLEVBQ3NCLGlCQUFiK0wsRUFDVHAyQyxFQUFJcXFDLEtBQUtBLEVBQU0rTCxHQUVmcDJDLEVBQUlxcUMsS0FBS0EsR0FHWHJxQyxFQUFJcXFDLEtBQUssR0FFSnJxQyxHQUdUaS9HLEVBQVdoaUYsWUFBYyxTQUFVejVCLEdBQ2pDLEdBQW9CLGlCQUFUQSxFQUNULE1BQU0sSUFBSXdjLFVBQVUsNkJBRXRCLE9BQU9ocUIsRUFBT3dOLElBR2hCeTdHLEVBQVdud0QsZ0JBQWtCLFNBQVV0ckQsR0FDckMsR0FBb0IsaUJBQVRBLEVBQ1QsTUFBTSxJQUFJd2MsVUFBVSw2QkFFdEIsT0FBT3pmLEVBQU9rcUQsV0FBV2puRCxLLGdDQ3REdkJySyxFLFVBTEFvSCxFQUFTLEVBQVEsTUFDakJ2SyxFQUFTdUssRUFBT3ZLLE9BRWhCa3BILEVBQVEsR0FJWixJQUFLL2xILEtBQU9vSCxFQUNMQSxFQUFPL0ssZUFBZTJELElBQ2YsZUFBUkEsR0FBZ0MsV0FBUkEsSUFDNUIrbEgsRUFBTS9sSCxHQUFPb0gsRUFBT3BILElBR3RCLElBQUlnbUgsRUFBUUQsRUFBTWxwSCxPQUFTLEdBQzNCLElBQUttRCxLQUFPbkQsRUFDTEEsRUFBT1IsZUFBZTJELElBQ2YsZ0JBQVJBLEdBQWlDLG9CQUFSQSxJQUM3QmdtSCxFQUFNaG1ILEdBQU9uRCxFQUFPbUQsSUFxQ3RCLEdBbENBK2xILEVBQU1scEgsT0FBT2pCLFVBQVlpQixFQUFPakIsVUFFM0JvcUgsRUFBTXQ4RyxNQUFRczhHLEVBQU10OEcsT0FBU3FxQixXQUFXcnFCLE9BQzNDczhHLEVBQU10OEcsS0FBTyxTQUFVdE0sRUFBT3MwRCxFQUFrQnowRCxHQUM5QyxHQUFxQixpQkFBVkcsRUFDVCxNQUFNLElBQUl5cEIsVUFBVSx5RUFBMkV6cEIsR0FFakcsR0FBSUEsUUFBaUMsSUFBakJBLEVBQU1ILE9BQ3hCLE1BQU0sSUFBSTRwQixVQUFVLHlIQUEySHpwQixHQUVqSixPQUFPUCxFQUFPTyxFQUFPczBELEVBQWtCejBELEtBSXRDK29ILEVBQU10bkgsUUFDVHNuSCxFQUFNdG5ILE1BQVEsU0FBVTJMLEVBQU02bUMsRUFBTStMLEdBQ2xDLEdBQW9CLGlCQUFUNXlDLEVBQ1QsTUFBTSxJQUFJd2MsVUFBVSxvRUFBc0V4YyxHQUU1RixHQUFJQSxFQUFPLEdBQUtBLEdBQVEsR0FBSyxHQUFLLElBQ2hDLE1BQU0sSUFBSW1tQixXQUFXLGNBQWdCbm1CLEVBQU8sa0NBRTlDLElBQUl4RCxFQUFNaEssRUFBT3dOLEdBUWpCLE9BUEs2bUMsR0FBd0IsSUFBaEJBLEVBQUtqMEMsT0FFYSxpQkFBYmdnRCxFQUNoQnAyQyxFQUFJcXFDLEtBQUtBLEVBQU0rTCxHQUVmcDJDLEVBQUlxcUMsS0FBS0EsR0FKVHJxQyxFQUFJcXFDLEtBQUssR0FNSnJxQyxLQUlOay9HLEVBQU1FLGlCQUNULElBQ0VGLEVBQU1FLGlCQUFtQnBnRyxFQUFReXhCLFFBQVEsVUFBVTJ1RSxpQkFDbkQsTUFBTzFqSCxJQU1Od2pILEVBQU0zcUgsWUFDVDJxSCxFQUFNM3FILFVBQVksQ0FDaEI4cUgsV0FBWUgsRUFBTXh1RSxZQUVoQnd1RSxFQUFNRSxtQkFDUkYsRUFBTTNxSCxVQUFVK3FILGtCQUFvQkosRUFBTUUsbUJBSTlDNWxILEVBQU9yRixRQUFVK3FILEcsZUM1RWpCLElBQUlscEgsRUFBUyxlQUdiLFNBQVNzdEYsRUFBTTNqRCxFQUFXNC9FLEdBQ3hCenFILEtBQUtzc0csT0FBU3ByRyxFQUFPNkIsTUFBTThuQyxHQUMzQjdxQyxLQUFLMHFILFdBQWFELEVBQ2xCenFILEtBQUt1c0csV0FBYTFoRSxFQUNsQjdxQyxLQUFLNnBCLEtBQU8sRUFHZDJrRSxFQUFLdnVGLFVBQVUwc0MsT0FBUyxTQUFVL3JDLEVBQU1ILEdBQ2xCLGlCQUFURyxJQUNUSCxFQUFNQSxHQUFPLE9BQ2JHLEVBQU9NLEVBQU82TSxLQUFLbk4sRUFBTUgsSUFRM0IsSUFMQSxJQUFJMnZDLEVBQVFwd0MsS0FBS3NzRyxPQUNiemhFLEVBQVk3cUMsS0FBS3VzRyxXQUNqQmpyRyxFQUFTVixFQUFLVSxPQUNkcXBILEVBQVEzcUgsS0FBSzZwQixLQUVSeG9CLEVBQVMsRUFBR0EsRUFBU0MsR0FBUyxDQUlyQyxJQUhBLElBQUlzcEgsRUFBV0QsRUFBUTkvRSxFQUNuQmdnRixFQUFZNTVHLEtBQUtoRSxJQUFJM0wsRUFBU0QsRUFBUXdwQyxFQUFZKy9FLEdBRTdDci9HLEVBQUksRUFBR0EsRUFBSXMvRyxFQUFXdC9HLElBQzdCNmtDLEVBQU13NkUsRUFBV3IvRyxHQUFLM0ssRUFBS1MsRUFBU2tLLEdBSXRDbEssR0FBVXdwSCxHQURWRixHQUFTRSxHQUdJaGdGLEdBQWUsR0FDMUI3cUMsS0FBS3V0QyxRQUFRNkMsR0FLakIsT0FEQXB3QyxLQUFLNnBCLE1BQVF2b0IsRUFDTnRCLE1BR1R3dUYsRUFBS3Z1RixVQUFVMDBDLE9BQVMsU0FBVWwwQyxHQUNoQyxJQUFJbWpDLEVBQU01akMsS0FBSzZwQixLQUFPN3BCLEtBQUt1c0csV0FFM0J2c0csS0FBS3NzRyxPQUFPMW9FLEdBQU8sSUFJbkI1akMsS0FBS3NzRyxPQUFPLzJELEtBQUssRUFBRzNSLEVBQU0sR0FFdEJBLEdBQU81akMsS0FBSzBxSCxhQUNkMXFILEtBQUt1dEMsUUFBUXZ0QyxLQUFLc3NHLFFBQ2xCdHNHLEtBQUtzc0csT0FBTy8yRCxLQUFLLElBR25CLElBQUk3MUIsRUFBbUIsRUFBWjFmLEtBQUs2cEIsS0FHaEIsR0FBSW5LLEdBQVEsV0FDVjFmLEtBQUtzc0csT0FBTzVnRSxjQUFjaHNCLEVBQU0xZixLQUFLdXNHLFdBQWEsT0FHN0MsQ0FDTCxJQUFJdWUsR0FBa0IsV0FBUHByRyxLQUF1QixFQUNsQ3FyRyxHQUFZcnJHLEVBQU9vckcsR0FBVyxXQUVsQzlxSCxLQUFLc3NHLE9BQU81Z0UsY0FBY3EvRSxFQUFVL3FILEtBQUt1c0csV0FBYSxHQUN0RHZzRyxLQUFLc3NHLE9BQU81Z0UsY0FBY28vRSxFQUFTOXFILEtBQUt1c0csV0FBYSxHQUd2RHZzRyxLQUFLdXRDLFFBQVF2dEMsS0FBS3NzRyxRQUNsQixJQUFJbjRELEVBQU9uMEMsS0FBS28wQyxRQUVoQixPQUFPM3pDLEVBQU0wekMsRUFBS2hvQyxTQUFTMUwsR0FBTzB6QyxHQUdwQ3E2QyxFQUFLdnVGLFVBQVVzdEMsUUFBVSxXQUN2QixNQUFNLElBQUk1bkMsTUFBTSw0Q0FHbEJqQixFQUFPckYsUUFBVW12RixHLGVDaEZqQixJQUFJbnZGLEVBQVVxRixFQUFPckYsUUFBVSxTQUFjMjBDLEdBQzNDQSxFQUFZQSxFQUFVM1QsY0FFdEIsSUFBSTJxRixFQUFZM3JILEVBQVEyMEMsR0FDeEIsSUFBS2czRSxFQUFXLE1BQU0sSUFBSXJsSCxNQUFNcXVDLEVBQVksK0NBRTVDLE9BQU8sSUFBSWczRSxHQUdiM3JILEVBQVFrdkYsSUFBTSxFQUFRLE1BQ3RCbHZGLEVBQVEydEcsS0FBTyxFQUFRLE1BQ3ZCM3RHLEVBQVE0dEcsT0FBUyxFQUFRLE1BQ3pCNXRHLEVBQVE0aEcsT0FBUyxFQUFRLE1BQ3pCNWhHLEVBQVE2aEcsT0FBUyxFQUFRLE1BQ3pCN2hHLEVBQVE4aEcsT0FBUyxFQUFRLE8sZUNOekIsSUFBSXZoRyxFQUFXLEVBQVEsTUFDbkI0dUYsRUFBTyxFQUFRLE1BQ2Z0dEYsRUFBUyxlQUVUMC9ELEVBQUksQ0FDTixXQUFZLFlBQVksWUFBZ0IsV0FHdENjLEVBQUksSUFBSWhnRSxNQUFNLElBRWxCLFNBQVN1cEgsSUFDUGpySCxLQUFLODZDLE9BQ0w5NkMsS0FBS2tySCxHQUFLeHBELEVBRVY4c0IsRUFBS2p1RixLQUFLUCxLQUFNLEdBQUksSUFtQnRCLFNBQVNtckgsRUFBUXJsSCxHQUNmLE9BQVFBLEdBQU8sR0FBT0EsSUFBUSxFQUdoQyxTQUFTeXZFLEVBQUlqNEQsRUFBR3RLLEVBQUdyQyxFQUFHNnFCLEdBQ3BCLE9BQVUsSUFBTmxlLEVBQWlCdEssRUFBSXJDLEdBQVFxQyxFQUFLd29CLEVBQzVCLElBQU5sZSxFQUFpQnRLLEVBQUlyQyxFQUFNcUMsRUFBSXdvQixFQUFNN3FCLEVBQUk2cUIsRUFDdEN4b0IsRUFBSXJDLEVBQUk2cUIsRUF2QmpCNTdCLEVBQVNxckgsRUFBS3o4QixHQUVkeThCLEVBQUlockgsVUFBVTY2QyxLQUFPLFdBT25CLE9BTkE5NkMsS0FBS20yRyxHQUFLLFdBQ1ZuMkcsS0FBS28yRyxHQUFLLFdBQ1ZwMkcsS0FBS3EyRyxHQUFLLFdBQ1ZyMkcsS0FBS20xQixHQUFLLFVBQ1ZuMUIsS0FBS28xQixHQUFLLFdBRUhwMUIsTUFpQlRpckgsRUFBSWhySCxVQUFVc3RDLFFBQVUsU0FBVXJFLEdBU2hDLElBUkEsSUFmY3BqQyxFQWVWNDdELEVBQUkxaEUsS0FBS2tySCxHQUVUbjRHLEVBQWMsRUFBVi9TLEtBQUttMkcsR0FDVG5qRyxFQUFjLEVBQVZoVCxLQUFLbzJHLEdBQ1R6bEcsRUFBYyxFQUFWM1EsS0FBS3EyRyxHQUNUNzZFLEVBQWMsRUFBVng3QixLQUFLbTFCLEdBQ1R2dUIsRUFBYyxFQUFWNUcsS0FBS28xQixHQUVKN3BCLEVBQUksRUFBR0EsRUFBSSxLQUFNQSxFQUFHbTJELEVBQUVuMkQsR0FBSzI5QixFQUFFNnpCLFlBQWdCLEVBQUp4eEQsR0FDbEQsS0FBT0EsRUFBSSxLQUFNQSxFQUFHbTJELEVBQUVuMkQsR0FBS20yRCxFQUFFbjJELEVBQUksR0FBS20yRCxFQUFFbjJELEVBQUksR0FBS20yRCxFQUFFbjJELEVBQUksSUFBTW0yRCxFQUFFbjJELEVBQUksSUFFbkUsSUFBSyxJQUFJQyxFQUFJLEVBQUdBLEVBQUksS0FBTUEsRUFBRyxDQUMzQixJQUFJOFIsS0FBTzlSLEVBQUksSUFDWGtKLEVBQW9ELElBNUI1QzVPLEVBNEJHaU4sSUEzQkYsRUFBTWpOLElBQVEsSUEyQlB5dkUsRUFBR2o0RCxFQUFHdEssRUFBR3JDLEVBQUc2cUIsR0FBSzUwQixFQUFJODZELEVBQUVsMkQsR0FBS28xRCxFQUFFdGpELEdBRWxEMVcsRUFBSTQwQixFQUNKQSxFQUFJN3FCLEVBQ0pBLEVBQUl3NkcsRUFBT240RyxHQUNYQSxFQUFJRCxFQUNKQSxFQUFJMkIsRUFHTjFVLEtBQUttMkcsR0FBTXBqRyxFQUFJL1MsS0FBS20yRyxHQUFNLEVBQzFCbjJHLEtBQUtvMkcsR0FBTXBqRyxFQUFJaFQsS0FBS28yRyxHQUFNLEVBQzFCcDJHLEtBQUtxMkcsR0FBTTFsRyxFQUFJM1EsS0FBS3EyRyxHQUFNLEVBQzFCcjJHLEtBQUttMUIsR0FBTXFHLEVBQUl4N0IsS0FBS20xQixHQUFNLEVBQzFCbjFCLEtBQUtvMUIsR0FBTXh1QixFQUFJNUcsS0FBS28xQixHQUFNLEdBRzVCNjFGLEVBQUlockgsVUFBVW0wQyxNQUFRLFdBQ3BCLElBQUlrQyxFQUFJcDFDLEVBQU9pbkMsWUFBWSxJQVEzQixPQU5BbU8sRUFBRWtvQixhQUF1QixFQUFWeCtELEtBQUttMkcsR0FBUSxHQUM1QjcvRCxFQUFFa29CLGFBQXVCLEVBQVZ4K0QsS0FBS28yRyxHQUFRLEdBQzVCOS9ELEVBQUVrb0IsYUFBdUIsRUFBVngrRCxLQUFLcTJHLEdBQVEsR0FDNUIvL0QsRUFBRWtvQixhQUF1QixFQUFWeCtELEtBQUttMUIsR0FBUSxJQUM1Qm1oQixFQUFFa29CLGFBQXVCLEVBQVZ4K0QsS0FBS28xQixHQUFRLElBRXJCa2hCLEdBR1Q1eEMsRUFBT3JGLFFBQVU0ckgsRyxlQ3BGakIsSUFBSXJySCxFQUFXLEVBQVEsTUFDbkI0dUYsRUFBTyxFQUFRLE1BQ2Z0dEYsRUFBUyxlQUVUMC9ELEVBQUksQ0FDTixXQUFZLFlBQVksWUFBZ0IsV0FHdENjLEVBQUksSUFBSWhnRSxNQUFNLElBRWxCLFNBQVMwcEgsSUFDUHBySCxLQUFLODZDLE9BQ0w5NkMsS0FBS2tySCxHQUFLeHBELEVBRVY4c0IsRUFBS2p1RixLQUFLUCxLQUFNLEdBQUksSUFtQnRCLFNBQVNxckgsRUFBT3ZsSCxHQUNkLE9BQVFBLEdBQU8sRUFBTUEsSUFBUSxHQUcvQixTQUFTcWxILEVBQVFybEgsR0FDZixPQUFRQSxHQUFPLEdBQU9BLElBQVEsRUFHaEMsU0FBU3l2RSxFQUFJajRELEVBQUd0SyxFQUFHckMsRUFBRzZxQixHQUNwQixPQUFVLElBQU5sZSxFQUFpQnRLLEVBQUlyQyxHQUFRcUMsRUFBS3dvQixFQUM1QixJQUFObGUsRUFBaUJ0SyxFQUFJckMsRUFBTXFDLEVBQUl3b0IsRUFBTTdxQixFQUFJNnFCLEVBQ3RDeG9CLEVBQUlyQyxFQUFJNnFCLEVBM0JqQjU3QixFQUFTd3JILEVBQU01OEIsR0FFZjQ4QixFQUFLbnJILFVBQVU2NkMsS0FBTyxXQU9wQixPQU5BOTZDLEtBQUttMkcsR0FBSyxXQUNWbjJHLEtBQUtvMkcsR0FBSyxXQUNWcDJHLEtBQUtxMkcsR0FBSyxXQUNWcjJHLEtBQUttMUIsR0FBSyxVQUNWbjFCLEtBQUtvMUIsR0FBSyxXQUVIcDFCLE1BcUJUb3JILEVBQUtuckgsVUFBVXN0QyxRQUFVLFNBQVVyRSxHQVNqQyxJQVJBLElBbkJjcGpDLEVBbUJWNDdELEVBQUkxaEUsS0FBS2tySCxHQUVUbjRHLEVBQWMsRUFBVi9TLEtBQUttMkcsR0FDVG5qRyxFQUFjLEVBQVZoVCxLQUFLbzJHLEdBQ1R6bEcsRUFBYyxFQUFWM1EsS0FBS3EyRyxHQUNUNzZFLEVBQWMsRUFBVng3QixLQUFLbTFCLEdBQ1R2dUIsRUFBYyxFQUFWNUcsS0FBS28xQixHQUVKN3BCLEVBQUksRUFBR0EsRUFBSSxLQUFNQSxFQUFHbTJELEVBQUVuMkQsR0FBSzI5QixFQUFFNnpCLFlBQWdCLEVBQUp4eEQsR0FDbEQsS0FBT0EsRUFBSSxLQUFNQSxFQUFHbTJELEVBQUVuMkQsSUE1QlJ6RixFQTRCbUI0N0QsRUFBRW4yRCxFQUFJLEdBQUttMkQsRUFBRW4yRCxFQUFJLEdBQUttMkQsRUFBRW4yRCxFQUFJLElBQU1tMkQsRUFBRW4yRCxFQUFJLE1BM0IxRCxFQUFNekYsSUFBUSxHQTZCN0IsSUFBSyxJQUFJMEYsRUFBSSxFQUFHQSxFQUFJLEtBQU1BLEVBQUcsQ0FDM0IsSUFBSThSLEtBQU85UixFQUFJLElBQ1hrSixFQUFLMjJHLEVBQU10NEcsR0FBS3dpRSxFQUFHajRELEVBQUd0SyxFQUFHckMsRUFBRzZxQixHQUFLNTBCLEVBQUk4NkQsRUFBRWwyRCxHQUFLbzFELEVBQUV0akQsR0FBTSxFQUV4RDFXLEVBQUk0MEIsRUFDSkEsRUFBSTdxQixFQUNKQSxFQUFJdzZHLEVBQU9uNEcsR0FDWEEsRUFBSUQsRUFDSkEsRUFBSTJCLEVBR04xVSxLQUFLbTJHLEdBQU1wakcsRUFBSS9TLEtBQUttMkcsR0FBTSxFQUMxQm4yRyxLQUFLbzJHLEdBQU1wakcsRUFBSWhULEtBQUtvMkcsR0FBTSxFQUMxQnAyRyxLQUFLcTJHLEdBQU0xbEcsRUFBSTNRLEtBQUtxMkcsR0FBTSxFQUMxQnIyRyxLQUFLbTFCLEdBQU1xRyxFQUFJeDdCLEtBQUttMUIsR0FBTSxFQUMxQm4xQixLQUFLbzFCLEdBQU14dUIsRUFBSTVHLEtBQUtvMUIsR0FBTSxHQUc1QmcyRixFQUFLbnJILFVBQVVtMEMsTUFBUSxXQUNyQixJQUFJa0MsRUFBSXAxQyxFQUFPaW5DLFlBQVksSUFRM0IsT0FOQW1PLEVBQUVrb0IsYUFBdUIsRUFBVngrRCxLQUFLbTJHLEdBQVEsR0FDNUI3L0QsRUFBRWtvQixhQUF1QixFQUFWeCtELEtBQUtvMkcsR0FBUSxHQUM1QjkvRCxFQUFFa29CLGFBQXVCLEVBQVZ4K0QsS0FBS3EyRyxHQUFRLEdBQzVCLy9ELEVBQUVrb0IsYUFBdUIsRUFBVngrRCxLQUFLbTFCLEdBQVEsSUFDNUJtaEIsRUFBRWtvQixhQUF1QixFQUFWeCtELEtBQUtvMUIsR0FBUSxJQUVyQmtoQixHQUdUNXhDLEVBQU9yRixRQUFVK3JILEcsZUMxRmpCLElBQUl4ckgsRUFBVyxFQUFRLE1BQ25CMHJILEVBQVMsRUFBUSxNQUNqQjk4QixFQUFPLEVBQVEsTUFDZnR0RixFQUFTLGVBRVR3Z0UsRUFBSSxJQUFJaGdFLE1BQU0sSUFFbEIsU0FBUzZwSCxJQUNQdnJILEtBQUs4NkMsT0FFTDk2QyxLQUFLa3JILEdBQUt4cEQsRUFFVjhzQixFQUFLanVGLEtBQUtQLEtBQU0sR0FBSSxJQUd0QkosRUFBUzJySCxFQUFRRCxHQUVqQkMsRUFBT3RySCxVQUFVNjZDLEtBQU8sV0FVdEIsT0FUQTk2QyxLQUFLbTJHLEdBQUssV0FDVm4yRyxLQUFLbzJHLEdBQUssVUFDVnAyRyxLQUFLcTJHLEdBQUssVUFDVnIyRyxLQUFLbTFCLEdBQUssV0FDVm4xQixLQUFLbzFCLEdBQUssV0FDVnAxQixLQUFLd3JILEdBQUssV0FDVnhySCxLQUFLeXJILEdBQUssV0FDVnpySCxLQUFLMHJILEdBQUssV0FFSDFySCxNQUdUdXJILEVBQU90ckgsVUFBVW0wQyxNQUFRLFdBQ3ZCLElBQUlrQyxFQUFJcDFDLEVBQU9pbkMsWUFBWSxJQVUzQixPQVJBbU8sRUFBRWtvQixhQUFheCtELEtBQUttMkcsR0FBSSxHQUN4QjcvRCxFQUFFa29CLGFBQWF4K0QsS0FBS28yRyxHQUFJLEdBQ3hCOS9ELEVBQUVrb0IsYUFBYXgrRCxLQUFLcTJHLEdBQUksR0FDeEIvL0QsRUFBRWtvQixhQUFheCtELEtBQUttMUIsR0FBSSxJQUN4Qm1oQixFQUFFa29CLGFBQWF4K0QsS0FBS28xQixHQUFJLElBQ3hCa2hCLEVBQUVrb0IsYUFBYXgrRCxLQUFLd3JILEdBQUksSUFDeEJsMUUsRUFBRWtvQixhQUFheCtELEtBQUt5ckgsR0FBSSxJQUVqQm4xRSxHQUdUNXhDLEVBQU9yRixRQUFVa3NILEcsZUM1Q2pCLElBQUkzckgsRUFBVyxFQUFRLE1BQ25CNHVGLEVBQU8sRUFBUSxNQUNmdHRGLEVBQVMsZUFFVDAvRCxFQUFJLENBQ04sV0FBWSxXQUFZLFdBQVksV0FDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFVBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVksVUFDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVksVUFDcEMsVUFBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksVUFDcEMsVUFBWSxVQUFZLFVBQVksVUFDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksWUFHbENjLEVBQUksSUFBSWhnRSxNQUFNLElBRWxCLFNBQVM0cEgsSUFDUHRySCxLQUFLODZDLE9BRUw5NkMsS0FBS2tySCxHQUFLeHBELEVBRVY4c0IsRUFBS2p1RixLQUFLUCxLQUFNLEdBQUksSUFrQnRCLFNBQVNveUcsRUFBSS8xRixFQUFHQyxFQUFHNkssR0FDakIsT0FBT0EsRUFBSzlLLEdBQUtDLEVBQUk2SyxHQUd2QixTQUFTd2tHLEVBQUt0dkcsRUFBR0MsRUFBRzZLLEdBQ2xCLE9BQVE5SyxFQUFJQyxFQUFNNkssR0FBSzlLLEVBQUlDLEdBRzdCLFNBQVNzdkcsRUFBUXZ2RyxHQUNmLE9BQVFBLElBQU0sRUFBSUEsR0FBSyxLQUFPQSxJQUFNLEdBQUtBLEdBQUssS0FBT0EsSUFBTSxHQUFLQSxHQUFLLElBR3ZFLFNBQVN3dkcsRUFBUXh2RyxHQUNmLE9BQVFBLElBQU0sRUFBSUEsR0FBSyxLQUFPQSxJQUFNLEdBQUtBLEdBQUssS0FBT0EsSUFBTSxHQUFLQSxHQUFLLEdBR3ZFLFNBQVN5dkcsRUFBUXp2RyxHQUNmLE9BQVFBLElBQU0sRUFBSUEsR0FBSyxLQUFPQSxJQUFNLEdBQUtBLEdBQUssSUFBT0EsSUFBTSxFQWhDN0R6YyxFQUFTMHJILEVBQVE5OEIsR0FFakI4OEIsRUFBT3JySCxVQUFVNjZDLEtBQU8sV0FVdEIsT0FUQTk2QyxLQUFLbTJHLEdBQUssV0FDVm4yRyxLQUFLbzJHLEdBQUssV0FDVnAyRyxLQUFLcTJHLEdBQUssV0FDVnIyRyxLQUFLbTFCLEdBQUssV0FDVm4xQixLQUFLbzFCLEdBQUssV0FDVnAxQixLQUFLd3JILEdBQUssV0FDVnhySCxLQUFLeXJILEdBQUssVUFDVnpySCxLQUFLMHJILEdBQUssV0FFSDFySCxNQTJCVHNySCxFQUFPcnJILFVBQVVzdEMsUUFBVSxTQUFVckUsR0FZbkMsSUFYQSxJQUxlN3NCLEVBS1hxbEQsRUFBSTFoRSxLQUFLa3JILEdBRVRuNEcsRUFBYyxFQUFWL1MsS0FBS20yRyxHQUNUbmpHLEVBQWMsRUFBVmhULEtBQUtvMkcsR0FDVHpsRyxFQUFjLEVBQVYzUSxLQUFLcTJHLEdBQ1Q3NkUsRUFBYyxFQUFWeDdCLEtBQUttMUIsR0FDVHZ1QixFQUFjLEVBQVY1RyxLQUFLbzFCLEdBQ1RnQixFQUFjLEVBQVZwMkIsS0FBS3dySCxHQUNUcHBHLEVBQWMsRUFBVnBpQixLQUFLeXJILEdBQ1R6ckcsRUFBYyxFQUFWaGdCLEtBQUswckgsR0FFSm5nSCxFQUFJLEVBQUdBLEVBQUksS0FBTUEsRUFBR20yRCxFQUFFbjJELEdBQUsyOUIsRUFBRTZ6QixZQUFnQixFQUFKeHhELEdBQ2xELEtBQU9BLEVBQUksS0FBTUEsRUFBR20yRCxFQUFFbjJELEdBQXFFLEtBakI1RThRLEVBaUJvQnFsRCxFQUFFbjJELEVBQUksTUFoQjNCLEdBQUs4USxHQUFLLEtBQU9BLElBQU0sR0FBS0EsR0FBSyxJQUFPQSxJQUFNLElBZ0JicWxELEVBQUVuMkQsRUFBSSxHQUFLdWdILEVBQU9wcUQsRUFBRW4yRCxFQUFJLEtBQU9tMkQsRUFBRW4yRCxFQUFJLElBRXBGLElBQUssSUFBSUMsRUFBSSxFQUFHQSxFQUFJLEtBQU1BLEVBQUcsQ0FDM0IsSUFBSWdrRyxFQUFNeHZGLEVBQUk2ckcsRUFBT2psSCxHQUFLd3JHLEVBQUd4ckcsRUFBR3d2QixFQUFHaFUsR0FBS3crQyxFQUFFcDFELEdBQUtrMkQsRUFBRWwyRCxHQUFNLEVBQ25EaWtHLEVBQU1tYyxFQUFPNzRHLEdBQUs0NEcsRUFBSTU0RyxFQUFHQyxFQUFHckMsR0FBTSxFQUV0Q3FQLEVBQUlvQyxFQUNKQSxFQUFJZ1UsRUFDSkEsRUFBSXh2QixFQUNKQSxFQUFLNDBCLEVBQUlnMEUsRUFBTSxFQUNmaDBFLEVBQUk3cUIsRUFDSkEsRUFBSXFDLEVBQ0pBLEVBQUlELEVBQ0pBLEVBQUt5OEYsRUFBS0MsRUFBTSxFQUdsQnp2RyxLQUFLbTJHLEdBQU1wakcsRUFBSS9TLEtBQUttMkcsR0FBTSxFQUMxQm4yRyxLQUFLbzJHLEdBQU1wakcsRUFBSWhULEtBQUtvMkcsR0FBTSxFQUMxQnAyRyxLQUFLcTJHLEdBQU0xbEcsRUFBSTNRLEtBQUtxMkcsR0FBTSxFQUMxQnIyRyxLQUFLbTFCLEdBQU1xRyxFQUFJeDdCLEtBQUttMUIsR0FBTSxFQUMxQm4xQixLQUFLbzFCLEdBQU14dUIsRUFBSTVHLEtBQUtvMUIsR0FBTSxFQUMxQnAxQixLQUFLd3JILEdBQU1wMUYsRUFBSXAyQixLQUFLd3JILEdBQU0sRUFDMUJ4ckgsS0FBS3lySCxHQUFNcnBHLEVBQUlwaUIsS0FBS3lySCxHQUFNLEVBQzFCenJILEtBQUswckgsR0FBTTFyRyxFQUFJaGdCLEtBQUswckgsR0FBTSxHQUc1QkosRUFBT3JySCxVQUFVbTBDLE1BQVEsV0FDdkIsSUFBSWtDLEVBQUlwMUMsRUFBT2luQyxZQUFZLElBVzNCLE9BVEFtTyxFQUFFa29CLGFBQWF4K0QsS0FBS20yRyxHQUFJLEdBQ3hCNy9ELEVBQUVrb0IsYUFBYXgrRCxLQUFLbzJHLEdBQUksR0FDeEI5L0QsRUFBRWtvQixhQUFheCtELEtBQUtxMkcsR0FBSSxHQUN4Qi8vRCxFQUFFa29CLGFBQWF4K0QsS0FBS20xQixHQUFJLElBQ3hCbWhCLEVBQUVrb0IsYUFBYXgrRCxLQUFLbzFCLEdBQUksSUFDeEJraEIsRUFBRWtvQixhQUFheCtELEtBQUt3ckgsR0FBSSxJQUN4QmwxRSxFQUFFa29CLGFBQWF4K0QsS0FBS3lySCxHQUFJLElBQ3hCbjFFLEVBQUVrb0IsYUFBYXgrRCxLQUFLMHJILEdBQUksSUFFakJwMUUsR0FHVDV4QyxFQUFPckYsUUFBVWlzSCxHLGVDdElqQixJQUFJMXJILEVBQVcsRUFBUSxNQUNuQjh2RyxFQUFTLEVBQVEsTUFDakJsaEIsRUFBTyxFQUFRLE1BQ2Z0dEYsRUFBUyxlQUVUd2dFLEVBQUksSUFBSWhnRSxNQUFNLEtBRWxCLFNBQVNxcUgsSUFDUC9ySCxLQUFLODZDLE9BQ0w5NkMsS0FBS2tySCxHQUFLeHBELEVBRVY4c0IsRUFBS2p1RixLQUFLUCxLQUFNLElBQUssS0FHdkJKLEVBQVNtc0gsRUFBUXJjLEdBRWpCcWMsRUFBTzlySCxVQUFVNjZDLEtBQU8sV0FtQnRCLE9BbEJBOTZDLEtBQUtnc0gsSUFBTSxXQUNYaHNILEtBQUtpc0gsSUFBTSxXQUNYanNILEtBQUtrc0gsSUFBTSxXQUNYbHNILEtBQUttc0gsSUFBTSxVQUNYbnNILEtBQUtvc0gsSUFBTSxXQUNYcHNILEtBQUtxc0gsSUFBTSxXQUNYcnNILEtBQUtzc0gsSUFBTSxXQUNYdHNILEtBQUt1c0gsSUFBTSxXQUVYdnNILEtBQUt3c0gsSUFBTSxXQUNYeHNILEtBQUt5c0gsSUFBTSxVQUNYenNILEtBQUswc0gsSUFBTSxVQUNYMXNILEtBQUsyc0gsSUFBTSxXQUNYM3NILEtBQUs0c0gsSUFBTSxXQUNYNXNILEtBQUs2c0gsSUFBTSxXQUNYN3NILEtBQUs4c0gsSUFBTSxXQUNYOXNILEtBQUsrc0gsSUFBTSxXQUVKL3NILE1BR1QrckgsRUFBTzlySCxVQUFVbTBDLE1BQVEsV0FDdkIsSUFBSWtDLEVBQUlwMUMsRUFBT2luQyxZQUFZLElBRTNCLFNBQVM2a0YsRUFBY2h0RyxFQUFHcEQsRUFBR3ZiLEdBQzNCaTFDLEVBQUVrb0IsYUFBYXgrQyxFQUFHM2UsR0FDbEJpMUMsRUFBRWtvQixhQUFhNWhELEVBQUd2YixFQUFTLEdBVTdCLE9BUEEyckgsRUFBYWh0SCxLQUFLZ3NILElBQUtoc0gsS0FBS3dzSCxJQUFLLEdBQ2pDUSxFQUFhaHRILEtBQUtpc0gsSUFBS2pzSCxLQUFLeXNILElBQUssR0FDakNPLEVBQWFodEgsS0FBS2tzSCxJQUFLbHNILEtBQUswc0gsSUFBSyxJQUNqQ00sRUFBYWh0SCxLQUFLbXNILElBQUtuc0gsS0FBSzJzSCxJQUFLLElBQ2pDSyxFQUFhaHRILEtBQUtvc0gsSUFBS3BzSCxLQUFLNHNILElBQUssSUFDakNJLEVBQWFodEgsS0FBS3FzSCxJQUFLcnNILEtBQUs2c0gsSUFBSyxJQUUxQnYyRSxHQUdUNXhDLEVBQU9yRixRQUFVMHNILEcsZUN4RGpCLElBQUluc0gsRUFBVyxFQUFRLE1BQ25CNHVGLEVBQU8sRUFBUSxNQUNmdHRGLEVBQVMsZUFFVDAvRCxFQUFJLENBQ04sV0FBWSxXQUFZLFdBQVksVUFDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVksV0FDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksVUFDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksVUFDcEMsVUFBWSxXQUFZLFVBQVksV0FDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksVUFDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsVUFBWSxXQUFZLFVBQVksVUFDcEMsVUFBWSxXQUFZLFVBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksVUFDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksVUFDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFVBQVksVUFDcEMsVUFBWSxXQUFZLFVBQVksV0FDcEMsVUFBWSxXQUFZLFVBQVksV0FDcEMsVUFBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksVUFDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksVUFDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsVUFBWSxXQUFZLFVBQVksV0FDcEMsVUFBWSxXQUFZLFVBQVksVUFDcEMsVUFBWSxVQUFZLFVBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksV0FDcEMsV0FBWSxXQUFZLFdBQVksV0FDcEMsV0FBWSxVQUFZLFdBQVksWUFHbENjLEVBQUksSUFBSWhnRSxNQUFNLEtBRWxCLFNBQVN1ckgsSUFDUGp0SCxLQUFLODZDLE9BQ0w5NkMsS0FBS2tySCxHQUFLeHBELEVBRVY4c0IsRUFBS2p1RixLQUFLUCxLQUFNLElBQUssS0EyQnZCLFNBQVNtdUcsRUFBSTl4RixFQUFHQyxFQUFHNkssR0FDakIsT0FBT0EsRUFBSzlLLEdBQUtDLEVBQUk2SyxHQUd2QixTQUFTd2tHLEVBQUt0dkcsRUFBR0MsRUFBRzZLLEdBQ2xCLE9BQVE5SyxFQUFJQyxFQUFNNkssR0FBSzlLLEVBQUlDLEdBRzdCLFNBQVNzdkcsRUFBUXZ2RyxFQUFHcTBGLEdBQ2xCLE9BQVFyMEYsSUFBTSxHQUFLcTBGLEdBQU0sSUFBTUEsSUFBTyxFQUFJcjBGLEdBQUssS0FBT3EwRixJQUFPLEVBQUlyMEYsR0FBSyxJQUd4RSxTQUFTd3ZHLEVBQVF4dkcsRUFBR3EwRixHQUNsQixPQUFRcjBGLElBQU0sR0FBS3EwRixHQUFNLEtBQU9yMEYsSUFBTSxHQUFLcTBGLEdBQU0sS0FBT0EsSUFBTyxFQUFJcjBGLEdBQUssSUFHMUUsU0FBUzZ3RyxFQUFRN3dHLEVBQUdxMEYsR0FDbEIsT0FBUXIwRixJQUFNLEVBQUlxMEYsR0FBTSxLQUFPcjBGLElBQU0sRUFBSXEwRixHQUFNLElBQU9yMEYsSUFBTSxFQUc5RCxTQUFTOHdHLEVBQVM5d0csRUFBR3EwRixHQUNuQixPQUFRcjBGLElBQU0sRUFBSXEwRixHQUFNLEtBQU9yMEYsSUFBTSxFQUFJcTBGLEdBQU0sS0FBT3IwRixJQUFNLEVBQUlxMEYsR0FBTSxJQUd4RSxTQUFTMGMsRUFBUS93RyxFQUFHcTBGLEdBQ2xCLE9BQVFyMEYsSUFBTSxHQUFLcTBGLEdBQU0sS0FBT0EsSUFBTyxHQUFLcjBGLEdBQUssR0FBTUEsSUFBTSxFQUcvRCxTQUFTZ3hHLEVBQVNoeEcsRUFBR3EwRixHQUNuQixPQUFRcjBGLElBQU0sR0FBS3EwRixHQUFNLEtBQU9BLElBQU8sR0FBS3IwRixHQUFLLElBQU1BLElBQU0sRUFBSXEwRixHQUFNLElBR3pFLFNBQVM0YyxFQUFVdjZHLEVBQUdDLEdBQ3BCLE9BQVFELElBQU0sRUFBTUMsSUFBTSxFQUFLLEVBQUksRUF6RHJDcFQsRUFBU3F0SCxFQUFReitCLEdBRWpCeStCLEVBQU9odEgsVUFBVTY2QyxLQUFPLFdBbUJ0QixPQWxCQTk2QyxLQUFLZ3NILElBQU0sV0FDWGhzSCxLQUFLaXNILElBQU0sV0FDWGpzSCxLQUFLa3NILElBQU0sV0FDWGxzSCxLQUFLbXNILElBQU0sV0FDWG5zSCxLQUFLb3NILElBQU0sV0FDWHBzSCxLQUFLcXNILElBQU0sV0FDWHJzSCxLQUFLc3NILElBQU0sVUFDWHRzSCxLQUFLdXNILElBQU0sV0FFWHZzSCxLQUFLd3NILElBQU0sV0FDWHhzSCxLQUFLeXNILElBQU0sV0FDWHpzSCxLQUFLMHNILElBQU0sV0FDWDFzSCxLQUFLMnNILElBQU0sV0FDWDNzSCxLQUFLNHNILElBQU0sV0FDWDVzSCxLQUFLNnNILElBQU0sVUFDWDdzSCxLQUFLOHNILElBQU0sV0FDWDlzSCxLQUFLK3NILElBQU0sVUFFSi9zSCxNQXVDVGl0SCxFQUFPaHRILFVBQVVzdEMsUUFBVSxTQUFVckUsR0FxQm5DLElBcEJBLElBQUl3NEIsRUFBSTFoRSxLQUFLa3JILEdBRVRqWixFQUFnQixFQUFYanlHLEtBQUtnc0gsSUFDVjdaLEVBQWdCLEVBQVhueUcsS0FBS2lzSCxJQUNWN1osRUFBZ0IsRUFBWHB5RyxLQUFLa3NILElBQ1ZyOEIsRUFBZ0IsRUFBWDd2RixLQUFLbXNILElBQ1Y1WixFQUFnQixFQUFYdnlHLEtBQUtvc0gsSUFDVjNaLEVBQWdCLEVBQVh6eUcsS0FBS3FzSCxJQUNWMVosRUFBZ0IsRUFBWDN5RyxLQUFLc3NILElBQ1Z6WixFQUFnQixFQUFYN3lHLEtBQUt1c0gsSUFFVnJhLEVBQWdCLEVBQVhseUcsS0FBS3dzSCxJQUNWOTdFLEVBQWdCLEVBQVgxd0MsS0FBS3lzSCxJQUNWcGEsRUFBZ0IsRUFBWHJ5RyxLQUFLMHNILElBQ1ZwYSxFQUFnQixFQUFYdHlHLEtBQUsyc0gsSUFDVm5hLEVBQWdCLEVBQVh4eUcsS0FBSzRzSCxJQUNWbGEsRUFBZ0IsRUFBWDF5RyxLQUFLNnNILElBQ1ZqYSxFQUFnQixFQUFYNXlHLEtBQUs4c0gsSUFDVmhhLEVBQWdCLEVBQVg5eUcsS0FBSytzSCxJQUVMeGhILEVBQUksRUFBR0EsRUFBSSxHQUFJQSxHQUFLLEVBQzNCbTJELEVBQUVuMkQsR0FBSzI5QixFQUFFNnpCLFlBQWdCLEVBQUp4eEQsR0FDckJtMkQsRUFBRW4yRCxFQUFJLEdBQUsyOUIsRUFBRTZ6QixZQUFnQixFQUFKeHhELEVBQVEsR0FFbkMsS0FBT0EsRUFBSSxJQUFLQSxHQUFLLEVBQUcsQ0FDdEIsSUFBSWtsRyxFQUFLL3VDLEVBQUVuMkQsRUFBSSxJQUNYbWxHLEVBQUtodkMsRUFBRW4yRCxFQUFJLEdBQVMsR0FDcEJ1Z0gsRUFBU29CLEVBQU96YyxFQUFJQyxHQUNwQjZjLEVBQVVKLEVBQVF6YyxFQUFJRCxHQUl0QitjLEVBQVNKLEVBRmIzYyxFQUFLL3VDLEVBQUVuMkQsRUFBSSxHQUNYbWxHLEVBQUtodkMsRUFBRW4yRCxFQUFJLEVBQVEsSUFFZmtpSCxFQUFVSixFQUFRM2MsRUFBSUQsR0FHdEJpZCxFQUFPaHNELEVBQUVuMkQsRUFBSSxJQUNib2lILEVBQU9qc0QsRUFBRW4yRCxFQUFJLEdBQVEsR0FFckJxaUgsRUFBUWxzRCxFQUFFbjJELEVBQUksSUFDZHNpSCxFQUFRbnNELEVBQUVuMkQsRUFBSSxHQUFTLEdBRXZCdWlILEVBQU9QLEVBQVVJLEVBQVEsRUFDekJJLEVBQU9qQyxFQUFTNEIsRUFBT0osRUFBU1EsRUFBS1AsR0FBWSxFQUlyRFEsR0FGQUEsRUFBT0EsRUFBTVAsRUFBU0YsRUFEdEJRLEVBQU9BLEVBQU1MLEVBQVcsRUFDWUEsR0FBWSxHQUVuQ0csRUFBUU4sRUFEckJRLEVBQU9BLEVBQU1ELEVBQVMsRUFDYUEsR0FBVSxFQUU3Q25zRCxFQUFFbjJELEdBQUt3aUgsRUFDUHJzRCxFQUFFbjJELEVBQUksR0FBS3VpSCxFQUdiLElBQUssSUFBSXRpSCxFQUFJLEVBQUdBLEVBQUksSUFBS0EsR0FBSyxFQUFHLENBQy9CdWlILEVBQU1yc0QsRUFBRWwyRCxHQUNSc2lILEVBQU1wc0QsRUFBRWwyRCxFQUFJLEdBRVosSUFBSXdpSCxFQUFPckMsRUFBSTFaLEVBQUlFLEVBQUlDLEdBQ25CNmIsRUFBT3RDLEVBQUl6WixFQUFJeGhFLEVBQUkyaEUsR0FFbkI2YixFQUFVdEMsRUFBTzNaLEVBQUlDLEdBQ3JCaWMsRUFBVXZDLEVBQU8xWixFQUFJRCxHQUNyQm1jLEVBQVV2QyxFQUFPdFosRUFBSUMsR0FDckI2YixFQUFVeEMsRUFBT3JaLEVBQUlELEdBR3JCK2IsRUFBTTF0RCxFQUFFcDFELEdBQ1IraUgsRUFBTTN0RCxFQUFFcDFELEVBQUksR0FFWmdqSCxFQUFNcmdCLEVBQUdvRSxFQUFJRSxFQUFJRSxHQUNqQjhiLEVBQU10Z0IsRUFBR3FFLEVBQUlFLEVBQUlFLEdBRWpCOGIsRUFBTzViLEVBQUt1YixFQUFXLEVBQ3ZCTSxFQUFPOWIsRUFBS3ViLEVBQVVkLEVBQVNvQixFQUFLNWIsR0FBTyxFQU0vQzZiLEdBRkFBLEdBRkFBLEVBQU9BLEVBQU1ILEVBQU1sQixFQURuQm9CLEVBQU9BLEVBQU1ELEVBQU8sRUFDYUEsR0FBUSxHQUU1QkgsRUFBTWhCLEVBRG5Cb0IsRUFBT0EsRUFBTUgsRUFBTyxFQUNhQSxHQUFRLEdBRTVCUixFQUFNVCxFQURuQm9CLEVBQU9BLEVBQU1aLEVBQU8sRUFDYUEsR0FBUSxFQUd6QyxJQUFJYyxHQUFPVCxFQUFVRixFQUFRLEVBQ3pCWSxHQUFPWCxFQUFVRixFQUFPVixFQUFTc0IsR0FBS1QsR0FBWSxFQUV0RHRiLEVBQUtGLEVBQ0xHLEVBQUtGLEVBQ0xELEVBQUtGLEVBQ0xHLEVBQUtGLEVBQ0xELEVBQUtGLEVBQ0xHLEVBQUtGLEVBRUxELEVBQU0xaUIsRUFBSzgrQixFQUFNckIsRUFEakI5YSxFQUFNRixFQUFLb2MsRUFBTyxFQUNZcGMsR0FBTyxFQUNyQ3ppQixFQUFLdWlCLEVBQ0xFLEVBQUtELEVBQ0xELEVBQUtELEVBQ0xFLEVBQUszaEUsRUFDTHloRSxFQUFLRixFQUNMdmhFLEVBQUt3aEUsRUFFTEQsRUFBTTBjLEVBQU1FLEdBQU12QixFQURsQnBiLEVBQU13YyxFQUFNRSxHQUFPLEVBQ1lGLEdBQVEsRUFHekMxdUgsS0FBS3dzSCxJQUFPeHNILEtBQUt3c0gsSUFBTXRhLEVBQU0sRUFDN0JseUcsS0FBS3lzSCxJQUFPenNILEtBQUt5c0gsSUFBTS83RSxFQUFNLEVBQzdCMXdDLEtBQUswc0gsSUFBTzFzSCxLQUFLMHNILElBQU1yYSxFQUFNLEVBQzdCcnlHLEtBQUsyc0gsSUFBTzNzSCxLQUFLMnNILElBQU1yYSxFQUFNLEVBQzdCdHlHLEtBQUs0c0gsSUFBTzVzSCxLQUFLNHNILElBQU1wYSxFQUFNLEVBQzdCeHlHLEtBQUs2c0gsSUFBTzdzSCxLQUFLNnNILElBQU1uYSxFQUFNLEVBQzdCMXlHLEtBQUs4c0gsSUFBTzlzSCxLQUFLOHNILElBQU1sYSxFQUFNLEVBQzdCNXlHLEtBQUsrc0gsSUFBTy9zSCxLQUFLK3NILElBQU1qYSxFQUFNLEVBRTdCOXlHLEtBQUtnc0gsSUFBT2hzSCxLQUFLZ3NILElBQU0vWixFQUFLcWIsRUFBU3R0SCxLQUFLd3NILElBQUt0YSxHQUFPLEVBQ3REbHlHLEtBQUtpc0gsSUFBT2pzSCxLQUFLaXNILElBQU05WixFQUFLbWIsRUFBU3R0SCxLQUFLeXNILElBQUsvN0UsR0FBTyxFQUN0RDF3QyxLQUFLa3NILElBQU9sc0gsS0FBS2tzSCxJQUFNOVosRUFBS2tiLEVBQVN0dEgsS0FBSzBzSCxJQUFLcmEsR0FBTyxFQUN0RHJ5RyxLQUFLbXNILElBQU9uc0gsS0FBS21zSCxJQUFNdDhCLEVBQUt5OUIsRUFBU3R0SCxLQUFLMnNILElBQUtyYSxHQUFPLEVBQ3REdHlHLEtBQUtvc0gsSUFBT3BzSCxLQUFLb3NILElBQU03WixFQUFLK2EsRUFBU3R0SCxLQUFLNHNILElBQUtwYSxHQUFPLEVBQ3REeHlHLEtBQUtxc0gsSUFBT3JzSCxLQUFLcXNILElBQU01WixFQUFLNmEsRUFBU3R0SCxLQUFLNnNILElBQUtuYSxHQUFPLEVBQ3REMXlHLEtBQUtzc0gsSUFBT3RzSCxLQUFLc3NILElBQU0zWixFQUFLMmEsRUFBU3R0SCxLQUFLOHNILElBQUtsYSxHQUFPLEVBQ3RENXlHLEtBQUt1c0gsSUFBT3ZzSCxLQUFLdXNILElBQU0xWixFQUFLeWEsRUFBU3R0SCxLQUFLK3NILElBQUtqYSxHQUFPLEdBR3hEbWEsRUFBT2h0SCxVQUFVbTBDLE1BQVEsV0FDdkIsSUFBSWtDLEVBQUlwMUMsRUFBT2luQyxZQUFZLElBRTNCLFNBQVM2a0YsRUFBY2h0RyxFQUFHcEQsRUFBR3ZiLEdBQzNCaTFDLEVBQUVrb0IsYUFBYXgrQyxFQUFHM2UsR0FDbEJpMUMsRUFBRWtvQixhQUFhNWhELEVBQUd2YixFQUFTLEdBWTdCLE9BVEEyckgsRUFBYWh0SCxLQUFLZ3NILElBQUtoc0gsS0FBS3dzSCxJQUFLLEdBQ2pDUSxFQUFhaHRILEtBQUtpc0gsSUFBS2pzSCxLQUFLeXNILElBQUssR0FDakNPLEVBQWFodEgsS0FBS2tzSCxJQUFLbHNILEtBQUswc0gsSUFBSyxJQUNqQ00sRUFBYWh0SCxLQUFLbXNILElBQUtuc0gsS0FBSzJzSCxJQUFLLElBQ2pDSyxFQUFhaHRILEtBQUtvc0gsSUFBS3BzSCxLQUFLNHNILElBQUssSUFDakNJLEVBQWFodEgsS0FBS3FzSCxJQUFLcnNILEtBQUs2c0gsSUFBSyxJQUNqQ0csRUFBYWh0SCxLQUFLc3NILElBQUt0c0gsS0FBSzhzSCxJQUFLLElBQ2pDRSxFQUFhaHRILEtBQUt1c0gsSUFBS3ZzSCxLQUFLK3NILElBQUssSUFFMUJ6MkUsR0FHVDV4QyxFQUFPckYsUUFBVTR0SCxHLGVDOU9qQnZvSCxFQUFPckYsUUFBVXlyRixFQUVqQixJQUFJZ2tDLEVBQUsscUJBb0JULFNBQVNoa0MsSUFDUGdrQyxFQUFHdnVILEtBQUtQLE1BcEJLLEVBQVEsS0FFdkJKLENBQVNrckYsRUFBUWdrQyxHQUNqQmhrQyxFQUFPcmMsU0FBVyxFQUFRLE1BQzFCcWMsRUFBTzcyQyxTQUFXLEVBQVEsTUFDMUI2MkMsRUFBT0gsT0FBUyxFQUFRLE1BQ3hCRyxFQUFPLytDLFVBQVksRUFBUSxNQUMzQisrQyxFQUFPRixZQUFjLEVBQVEsTUFDN0JFLEVBQU8zRCxTQUFXLEVBQVEsTUFDMUIyRCxFQUFPRCxTQUFXLEVBQVEsTUFHMUJDLEVBQU9BLE9BQVNBLEVBV2hCQSxFQUFPN3FGLFVBQVUya0UsS0FBTyxTQUFTdHlELEVBQU16UixHQUNyQyxJQUFJMHZCLEVBQVN2d0IsS0FFYixTQUFTK2tILEVBQU92M0UsR0FDVmw3QixFQUFLd2IsV0FDSCxJQUFVeGIsRUFBS3JQLE1BQU11cUMsSUFBVWpkLEVBQU8rMkQsT0FDeEMvMkQsRUFBTysyRCxRQU9iLFNBQVN3OUIsSUFDSHYwRixFQUFPeTBELFVBQVl6MEQsRUFBTzAyRCxRQUM1QjEyRCxFQUFPMDJELFNBSlgxMkQsRUFBT3F0QixHQUFHLE9BQVFtbkUsR0FRbEJ6eUcsRUFBS3NyQyxHQUFHLFFBQVNrbkUsR0FJWnh5RyxFQUFLeTRFLFVBQWNscUYsSUFBMkIsSUFBaEJBLEVBQVErTSxNQUN6QzJpQixFQUFPcXRCLEdBQUcsTUFBT3lrRSxHQUNqQjl4RixFQUFPcXRCLEdBQUcsUUFBU2duRSxJQUdyQixJQUFJbUssR0FBVyxFQUNmLFNBQVMxTSxJQUNIME0sSUFDSkEsR0FBVyxFQUVYejhHLEVBQUsxRSxPQUlQLFNBQVNnM0csSUFDSG1LLElBQ0pBLEdBQVcsRUFFaUIsbUJBQWpCejhHLEVBQUtvMEUsU0FBd0JwMEUsRUFBS28wRSxXQUkvQyxTQUFTN3JDLEVBQVE4RyxHQUVmLEdBREFxdEUsSUFDd0MsSUFBcENGLEVBQUc1OUMsY0FBY2x4RSxLQUFNLFNBQ3pCLE1BQU0yaEQsRUFRVixTQUFTcXRFLElBQ1B6K0YsRUFBT3N0QixlQUFlLE9BQVFrbkUsR0FDOUJ6eUcsRUFBS3VyQyxlQUFlLFFBQVNpbkUsR0FFN0J2MEYsRUFBT3N0QixlQUFlLE1BQU93a0UsR0FDN0I5eEYsRUFBT3N0QixlQUFlLFFBQVMrbUUsR0FFL0JyMEYsRUFBT3N0QixlQUFlLFFBQVNoRCxHQUMvQnZvQyxFQUFLdXJDLGVBQWUsUUFBU2hELEdBRTdCdHFCLEVBQU9zdEIsZUFBZSxNQUFPbXhFLEdBQzdCeitGLEVBQU9zdEIsZUFBZSxRQUFTbXhFLEdBRS9CMThHLEVBQUt1ckMsZUFBZSxRQUFTbXhFLEdBVy9CLE9BNUJBeitGLEVBQU9xdEIsR0FBRyxRQUFTL0MsR0FDbkJ2b0MsRUFBS3NyQyxHQUFHLFFBQVMvQyxHQW1CakJ0cUIsRUFBT3F0QixHQUFHLE1BQU9veEUsR0FDakJ6K0YsRUFBT3F0QixHQUFHLFFBQVNveEUsR0FFbkIxOEcsRUFBS3NyQyxHQUFHLFFBQVNveEUsR0FFakIxOEcsRUFBSzhzQyxLQUFLLE9BQVE3dUIsR0FHWGplLEksNEJDdEdULElBQUlwUixFQUFTLGVBR1Q4MEQsRUFBYTkwRCxFQUFPODBELFlBQWMsU0FBVTFVLEdBRTlDLFFBREFBLEVBQVcsR0FBS0EsSUFDSUEsRUFBU2poQixlQUMzQixJQUFLLE1BQU0sSUFBSyxPQUFPLElBQUssUUFBUSxJQUFLLFFBQVEsSUFBSyxTQUFTLElBQUssU0FBUyxJQUFLLE9BQU8sSUFBSyxRQUFRLElBQUssVUFBVSxJQUFLLFdBQVcsSUFBSyxNQUN4SSxPQUFPLEVBQ1QsUUFDRSxPQUFPLElBNENiLFNBQVNtckQsRUFBY2xxQyxHQUVyQixJQUFJZ25FLEVBQ0osT0FGQXRvSCxLQUFLc2hELFNBWFAsU0FBMkI3Z0QsR0FDekIsSUFBSXd1SCxFQS9CTixTQUE0Qnh1SCxHQUMxQixJQUFLQSxFQUFLLE1BQU8sT0FFakIsSUFEQSxJQUFJeXVILElBRUYsT0FBUXp1SCxHQUNOLElBQUssT0FDTCxJQUFLLFFBQ0gsTUFBTyxPQUNULElBQUssT0FDTCxJQUFLLFFBQ0wsSUFBSyxVQUNMLElBQUssV0FDSCxNQUFPLFVBQ1QsSUFBSyxTQUNMLElBQUssU0FDSCxNQUFPLFNBQ1QsSUFBSyxTQUNMLElBQUssUUFDTCxJQUFLLE1BQ0gsT0FBT0EsRUFDVCxRQUNFLEdBQUl5dUgsRUFBUyxPQUNienVILEdBQU8sR0FBS0EsR0FBSzQvQixjQUNqQjZ1RixHQUFVLEdBUUxDLENBQW1CMXVILEdBQzlCLEdBQW9CLGlCQUFUd3VILElBQXNCL3RILEVBQU84MEQsYUFBZUEsSUFBZUEsRUFBV3YxRCxJQUFPLE1BQU0sSUFBSWtGLE1BQU0scUJBQXVCbEYsR0FDL0gsT0FBT3d1SCxHQUFReHVILEVBUUMydUgsQ0FBa0I5dEUsR0FFMUJ0aEQsS0FBS3NoRCxVQUNYLElBQUssVUFDSHRoRCxLQUFLMnFELEtBQU8wa0UsRUFDWnJ2SCxLQUFLNE4sSUFBTTBoSCxFQUNYaEgsRUFBSyxFQUNMLE1BQ0YsSUFBSyxPQUNIdG9ILEtBQUtnckYsU0FBV3VrQyxFQUNoQmpILEVBQUssRUFDTCxNQUNGLElBQUssU0FDSHRvSCxLQUFLMnFELEtBQU82a0UsRUFDWnh2SCxLQUFLNE4sSUFBTTZoSCxFQUNYbkgsRUFBSyxFQUNMLE1BQ0YsUUFHRSxPQUZBdG9ILEtBQUtpRCxNQUFReXNILE9BQ2IxdkgsS0FBSzROLElBQU0raEgsR0FHZjN2SCxLQUFLaXJGLFNBQVcsRUFDaEJqckYsS0FBS2tyRixVQUFZLEVBQ2pCbHJGLEtBQUttckYsU0FBV2pxRixFQUFPaW5DLFlBQVltZ0YsR0FvQ3JDLFNBQVNzSCxFQUFjaG9ELEdBQ3JCLE9BQUlBLEdBQVEsSUFBYSxFQUFXQSxHQUFRLEdBQU0sRUFBYSxFQUFXQSxHQUFRLEdBQU0sR0FBYSxFQUFXQSxHQUFRLEdBQU0sR0FBYSxFQUNwSUEsR0FBUSxHQUFNLEdBQVEsR0FBSyxFQTJEcEMsU0FBUzJuRCxFQUFhcmtILEdBQ3BCLElBQUl5RSxFQUFJM1AsS0FBS2tyRixVQUFZbHJGLEtBQUtpckYsU0FDMUJuNkUsRUF0Qk4sU0FBNkJnQyxFQUFNNUgsRUFBS3lFLEdBQ3RDLEdBQXdCLE1BQVYsSUFBVHpFLEVBQUksSUFFUCxPQURBNEgsRUFBS200RSxTQUFXLEVBQ1QsSUFFVCxHQUFJbjRFLEVBQUttNEUsU0FBVyxHQUFLLy9FLEVBQUk1SixPQUFTLEVBQUcsQ0FDdkMsR0FBd0IsTUFBVixJQUFUNEosRUFBSSxJQUVQLE9BREE0SCxFQUFLbTRFLFNBQVcsRUFDVCxJQUVULEdBQUluNEUsRUFBS200RSxTQUFXLEdBQUsvL0UsRUFBSTVKLE9BQVMsR0FDWixNQUFWLElBQVQ0SixFQUFJLElBRVAsT0FEQTRILEVBQUttNEUsU0FBVyxFQUNULEtBU0w0a0MsQ0FBb0I3dkgsS0FBTWtMLEdBQ2xDLFlBQVU1QyxJQUFOd0ksRUFBd0JBLEVBQ3hCOVEsS0FBS2lyRixVQUFZLy9FLEVBQUk1SixRQUN2QjRKLEVBQUloSSxLQUFLbEQsS0FBS21yRixTQUFVeDdFLEVBQUcsRUFBRzNQLEtBQUtpckYsVUFDNUJqckYsS0FBS21yRixTQUFTaC9FLFNBQVNuTSxLQUFLc2hELFNBQVUsRUFBR3RoRCxLQUFLa3JGLGFBRXZEaGdGLEVBQUloSSxLQUFLbEQsS0FBS21yRixTQUFVeDdFLEVBQUcsRUFBR3pFLEVBQUk1SixhQUNsQ3RCLEtBQUtpckYsVUFBWS8vRSxFQUFJNUosU0EyQnZCLFNBQVMrdEgsRUFBVW5rSCxFQUFLSyxHQUN0QixJQUFLTCxFQUFJNUosT0FBU2lLLEdBQUssR0FBTSxFQUFHLENBQzlCLElBQUl1RixFQUFJNUYsRUFBSWlCLFNBQVMsVUFBV1osR0FDaEMsR0FBSXVGLEVBQUcsQ0FDTCxJQUFJSCxFQUFJRyxFQUFFdkMsV0FBV3VDLEVBQUV4UCxPQUFTLEdBQ2hDLEdBQUlxUCxHQUFLLE9BQVVBLEdBQUssTUFLdEIsT0FKQTNRLEtBQUtpckYsU0FBVyxFQUNoQmpyRixLQUFLa3JGLFVBQVksRUFDakJsckYsS0FBS21yRixTQUFTLEdBQUtqZ0YsRUFBSUEsRUFBSTVKLE9BQVMsR0FDcEN0QixLQUFLbXJGLFNBQVMsR0FBS2pnRixFQUFJQSxFQUFJNUosT0FBUyxHQUM3QndQLEVBQUVsTyxNQUFNLEdBQUksR0FHdkIsT0FBT2tPLEVBS1QsT0FIQTlRLEtBQUtpckYsU0FBVyxFQUNoQmpyRixLQUFLa3JGLFVBQVksRUFDakJsckYsS0FBS21yRixTQUFTLEdBQUtqZ0YsRUFBSUEsRUFBSTVKLE9BQVMsR0FDN0I0SixFQUFJaUIsU0FBUyxVQUFXWixFQUFHTCxFQUFJNUosT0FBUyxHQUtqRCxTQUFTZ3VILEVBQVNwa0gsR0FDaEIsSUFBSTRGLEVBQUk1RixHQUFPQSxFQUFJNUosT0FBU3RCLEtBQUtpRCxNQUFNaUksR0FBTyxHQUM5QyxHQUFJbEwsS0FBS2lyRixTQUFVLENBQ2pCLElBQUlyOUUsRUFBTTVOLEtBQUtrckYsVUFBWWxyRixLQUFLaXJGLFNBQ2hDLE9BQU9uNkUsRUFBSTlRLEtBQUttckYsU0FBU2gvRSxTQUFTLFVBQVcsRUFBR3lCLEdBRWxELE9BQU9rRCxFQUdULFNBQVMwK0csRUFBV3RrSCxFQUFLSyxHQUN2QixJQUFJNFMsR0FBS2pULEVBQUk1SixPQUFTaUssR0FBSyxFQUMzQixPQUFVLElBQU40UyxFQUFnQmpULEVBQUlpQixTQUFTLFNBQVVaLElBQzNDdkwsS0FBS2lyRixTQUFXLEVBQUk5c0UsRUFDcEJuZSxLQUFLa3JGLFVBQVksRUFDUCxJQUFOL3NFLEVBQ0ZuZSxLQUFLbXJGLFNBQVMsR0FBS2pnRixFQUFJQSxFQUFJNUosT0FBUyxJQUVwQ3RCLEtBQUttckYsU0FBUyxHQUFLamdGLEVBQUlBLEVBQUk1SixPQUFTLEdBQ3BDdEIsS0FBS21yRixTQUFTLEdBQUtqZ0YsRUFBSUEsRUFBSTVKLE9BQVMsSUFFL0I0SixFQUFJaUIsU0FBUyxTQUFVWixFQUFHTCxFQUFJNUosT0FBUzZjLElBR2hELFNBQVNzeEcsRUFBVXZrSCxHQUNqQixJQUFJNEYsRUFBSTVGLEdBQU9BLEVBQUk1SixPQUFTdEIsS0FBS2lELE1BQU1pSSxHQUFPLEdBQzlDLE9BQUlsTCxLQUFLaXJGLFNBQWlCbjZFLEVBQUk5USxLQUFLbXJGLFNBQVNoL0UsU0FBUyxTQUFVLEVBQUcsRUFBSW5NLEtBQUtpckYsVUFDcEVuNkUsRUFJVCxTQUFTNCtHLEVBQVl4a0gsR0FDbkIsT0FBT0EsRUFBSWlCLFNBQVNuTSxLQUFLc2hELFVBRzNCLFNBQVNxdUUsRUFBVXprSCxHQUNqQixPQUFPQSxHQUFPQSxFQUFJNUosT0FBU3RCLEtBQUtpRCxNQUFNaUksR0FBTyxHQXpOL0M3TCxFQUFRLEVBQWdCbXNGLEVBNkJ4QkEsRUFBY3ZyRixVQUFVZ0QsTUFBUSxTQUFVaUksR0FDeEMsR0FBbUIsSUFBZkEsRUFBSTVKLE9BQWMsTUFBTyxHQUM3QixJQUFJd1AsRUFDQXZGLEVBQ0osR0FBSXZMLEtBQUtpckYsU0FBVSxDQUVqQixRQUFVM2lGLEtBRFZ3SSxFQUFJOVEsS0FBS2dyRixTQUFTOS9FLElBQ0csTUFBTyxHQUM1QkssRUFBSXZMLEtBQUtpckYsU0FDVGpyRixLQUFLaXJGLFNBQVcsT0FFaEIxL0UsRUFBSSxFQUVOLE9BQUlBLEVBQUlMLEVBQUk1SixPQUFld1AsRUFBSUEsRUFBSTlRLEtBQUsycUQsS0FBS3ovQyxFQUFLSyxHQUFLdkwsS0FBSzJxRCxLQUFLei9DLEVBQUtLLEdBQy9EdUYsR0FBSyxJQUdkMDZFLEVBQWN2ckYsVUFBVTJOLElBd0d4QixTQUFpQjFDLEdBQ2YsSUFBSTRGLEVBQUk1RixHQUFPQSxFQUFJNUosT0FBU3RCLEtBQUtpRCxNQUFNaUksR0FBTyxHQUM5QyxPQUFJbEwsS0FBS2lyRixTQUFpQm42RSxFQUFJLElBQ3ZCQSxHQXhHVDA2RSxFQUFjdnJGLFVBQVUwcUQsS0EwRnhCLFNBQWtCei9DLEVBQUtLLEdBQ3JCLElBQUl5RyxFQXJFTixTQUE2QmMsRUFBTTVILEVBQUtLLEdBQ3RDLElBQUlDLEVBQUlOLEVBQUk1SixPQUFTLEVBQ3JCLEdBQUlrSyxFQUFJRCxFQUFHLE9BQU8sRUFDbEIsSUFBSSs4RyxFQUFLc0gsRUFBYzFrSCxFQUFJTSxJQUMzQixPQUFJODhHLEdBQU0sR0FDSkEsRUFBSyxJQUFHeDFHLEVBQUttNEUsU0FBV3E5QixFQUFLLEdBQzFCQSxLQUVIOThHLEVBQUlELElBQWEsSUFBUis4RyxFQUFrQixHQUNqQ0EsRUFBS3NILEVBQWMxa0gsRUFBSU0sTUFDYixHQUNKODhHLEVBQUssSUFBR3gxRyxFQUFLbTRFLFNBQVdxOUIsRUFBSyxHQUMxQkEsS0FFSDk4RyxFQUFJRCxJQUFhLElBQVIrOEcsRUFBa0IsR0FDakNBLEVBQUtzSCxFQUFjMWtILEVBQUlNLE1BQ2IsR0FDSjg4RyxFQUFLLElBQ0ksSUFBUEEsRUFBVUEsRUFBSyxFQUFPeDFHLEVBQUttNEUsU0FBV3E5QixFQUFLLEdBRTFDQSxHQUVGLEVBK0NLd0gsQ0FBb0I5dkgsS0FBTWtMLEVBQUtLLEdBQzNDLElBQUt2TCxLQUFLaXJGLFNBQVUsT0FBTy8vRSxFQUFJaUIsU0FBUyxPQUFRWixHQUNoRHZMLEtBQUtrckYsVUFBWWw1RSxFQUNqQixJQUFJcEUsRUFBTTFDLEVBQUk1SixRQUFVMFEsRUFBUWhTLEtBQUtpckYsVUFFckMsT0FEQS8vRSxFQUFJaEksS0FBS2xELEtBQUttckYsU0FBVSxFQUFHdjlFLEdBQ3BCMUMsRUFBSWlCLFNBQVMsT0FBUVosRUFBR3FDLElBN0ZqQzQ5RSxFQUFjdnJGLFVBQVUrcUYsU0FBVyxTQUFVOS9FLEdBQzNDLEdBQUlsTCxLQUFLaXJGLFVBQVkvL0UsRUFBSTVKLE9BRXZCLE9BREE0SixFQUFJaEksS0FBS2xELEtBQUttckYsU0FBVW5yRixLQUFLa3JGLFVBQVlsckYsS0FBS2lyRixTQUFVLEVBQUdqckYsS0FBS2lyRixVQUN6RGpyRixLQUFLbXJGLFNBQVNoL0UsU0FBU25NLEtBQUtzaEQsU0FBVSxFQUFHdGhELEtBQUtrckYsV0FFdkRoZ0YsRUFBSWhJLEtBQUtsRCxLQUFLbXJGLFNBQVVuckYsS0FBS2tyRixVQUFZbHJGLEtBQUtpckYsU0FBVSxFQUFHLy9FLEVBQUk1SixRQUMvRHRCLEtBQUtpckYsVUFBWS8vRSxFQUFJNUosUyxnNS9mQ3JHaEIsTUFBTXl1SCxFQUNULGdCQUFrQixJQUFJQSxFQUVkQyxhQUFjLEVBQ2RDLFVBQXdCLEdBRWhDLHFCQUNJLElBQUtqd0gsS0FBS2d3SCxZQUFhLENBQ25CaHdILEtBQUtnd0gsYUFBYyxFQUNuQixNQUFNRSxFQUFRLElBQ2Rsd0gsS0FBS2l3SCxVQUFVanJILFFBQVFrckgsR0FFM0IsT0FBT2x3SCxLQUFLaXdILFdDNUJiLE1BQU1FLEVBRVRDLFdBQ0FDLFlBQ0FDLFFBQ0FDLFdBRUEsNkJBQTZCM3ZILEdBQ3pCLE9BQU8sSUFBSWlyQixTQUFRLENBQUNDLEVBQVNxK0QsS0FDekJxbUMsRUFBS2p1RCxZQUFZM2hFLEdBQU0sU0FBVVcsRUFBWTJDLEdBQ3pDLEdBQUkzQyxFQUVBLE9BREE0b0YsRUFBTyxnQkFBa0I1b0YsR0FDbEIsS0FFWHVxQixFQUFRNW5CLFNBS3BCLHFCQUFxQnVzSCxHQUNqQixPQUFPLElBQUk1a0csU0FBUSxDQUFDQyxFQUFTcStELEtBQ1UsR0FBL0JzbUMsRUFBWWhqRyxRQUFRLFVBQ3BCZ2pHLEVBQWNBLEVBQVkzZ0csVUFBVSxJQUd4QyxNQUFNNGdHLEVBQWMsV0FBY0QsR0FDbEMsWUFBYUMsR0FBYSxTQUFVbnZILEVBQVkySixHQUN4QzNKLEVBQ0E0b0YsRUFBTyxpQkFBbUI1b0YsR0FHOUJpdkgsRUFBS2p1RCxZQUFZcjNELEdBQUssU0FBVTNKLEVBQVkyQyxHQUN4QyxHQUFJM0MsRUFFQSxZQURBNG9GLEVBQU8saUJBQW1CNW9GLEdBRzlCLE1BQU1tVCxFQUFJeFEsRUFDSmtzSCxFQUFhMTdHLEVBQUVqVCxNQUFNLEdBQ3JCNHVILEVBQWMzN0csRUFBRWpULE1BQU0sR0FDdEI2dUgsRUFBVTU3RyxFQUFFalQsTUFBTSxHQUNsQjh1SCxFQUFhNzdHLEVBQUVqVCxNQUFNLEdBQ3JCa3ZILEVBQVEsSUFBSVIsRUFBTUMsRUFBWUMsRUFBYUMsRUFBU0MsR0FDMUR6a0csRUFBUTZrRyxZQU14QjF1SCxZQUFZbXVILEVBQW9CQyxFQUE0QkMsRUFBaUJDLEdBQ3pFdndILEtBQUtvd0gsV0FBYUEsRUFDbEJwd0gsS0FBS3F3SCxZQUFjQSxFQUNuQnJ3SCxLQUFLc3dILFFBQVVBLEVBQ2Z0d0gsS0FBS3V3SCxXQUFhQSxFQUl0QkssMEJBa0JJLE1BQU1DLEVBQU9MLEVBQUt6dkgsT0FDZCxDQUNJLGFBQ0FmLEtBQUtvd0gsYUFHUFUsRUFBT04sRUFBS3p2SCxPQUNkLENBQ0lmLEtBQUtzd0gsVUFHUC90SCxFQUFNLElBQUk2MUIsV0FBV3k0RixFQUFLdnZILE9BQVN3dkgsRUFBS3h2SCxRQUM5QyxJQUFLLElBQUlpSyxFQUFJLEVBQUc0UyxFQUFJMHlHLEVBQUt2dkgsT0FBUWlLLEVBQUk0UyxFQUFHNVMsSUFBS2hKLEVBQUlnSixHQUFLc2xILEVBQUt0bEgsR0FDM0QsSUFBSyxJQUFJQSxFQUFJLEVBQUc0UyxFQUFJMnlHLEVBQUt4dkgsT0FBUWlLLEVBQUk0UyxFQUFHNVMsSUFBS2hKLEVBQUlzdUgsRUFBS3Z2SCxPQUFTaUssR0FBS3VsSCxFQUFLdmxILEdBR3pFLE9BRkFoSixFQUFJc3VILEVBQUt2dkgsUUFBVSxHQUNuQmlCLEVBQUksR0FBSyxJQUNGQSxFQUlYd3VILHVCQUF1QnhsSCxHQUNuQixJQUFJb2xDLEVBQU0sRUFDTnR2QyxFQUFTLEVBQ2IsS0FBT0EsRUFBU2tLLEVBQUVqSyxRQUF1QixHQUFiaUssRUFBRWxLLElBQzFCQSxJQUVKLEdBQUlBLEdBQVVrSyxFQUFFakssT0FDWixPQUFPLElBQUk4MkIsV0FBVyxDQUFFLEVBQU0sRUFBTSxJQUVkLElBQVQsSUFBWjdzQixFQUFFbEssS0FDSHN2QyxJQUVKLE1BQU1ydkMsRUFBU2lLLEVBQUVqSyxPQUFTRCxFQUNwQndKLEVBQU0sSUFBSXV0QixXQUFXLEVBQUk5MkIsRUFBU3F2QyxHQUN4QzlsQyxFQUFJLEdBQUssRUFDVEEsRUFBSSxHQUFLdkosRUFBU3F2QyxFQUNsQixJQUFLLElBQUlxZ0YsRUFBTSxFQUFHQSxFQUFNMXZILElBQVUwdkgsRUFDOUJubUgsRUFBSSxFQUFJOGxDLEVBQU1xZ0YsR0FBT3psSCxFQUFFbEssRUFBUzJ2SCxHQUVwQyxPQUFPbm1ILEVBSVhvbUgsY0FBYzUwRyxHQUNWLEdBQUlBLEdBQUssSUFDTCxPQUFPLElBQUkrYixXQUFXLENBQUUvYixJQUNyQixHQUFJQSxFQUFJLElBQ1gsT0FBTyxJQUFJK2IsV0FBVyxDQUFDLElBQU0vYixJQUVqQyxLQUFNLFdBSVYsV0FBVzByQixFQUFpQm1wRixFQUFnQjUrRyxFQUFrQjYrRyxFQUFpQmh6RyxHQUMzRSxJQUFLLElBQUk1UyxFQUFJLEVBQUdBLEVBQUk0UyxFQUFHNVMsSUFDbkIrRyxFQUFLNitHLEVBQVU1bEgsR0FBS3c4QixFQUFJbXBGLEVBQVMzbEgsR0FLekM2bEgsZ0JBQWdCN3VILEdBQ1osTUFBTXVPLEVBQUksSUFBSXNuQixXQUFXNzFCLEVBQUlqQixPQUFTLEdBQ2hDZ2MsRUFBSSxJQUFJOGEsV0FBVzcxQixFQUFJakIsT0FBUyxHQUN0QzZ1SCxFQUFNdmhHLElBQUlyc0IsRUFBSyxFQUFHdU8sRUFBRyxFQUFHQSxFQUFFeFAsUUFDMUI2dUgsRUFBTXZoRyxJQUFJcnNCLEVBQUsrYSxFQUFFaGMsT0FBUWdjLEVBQUcsRUFBR0EsRUFBRWhjLFFBQ2pDLE1BQU1xTSxFQUFLM04sS0FBSyt3SCx1QkFBdUJqZ0gsR0FDakN3cEUsRUFBS3Q2RSxLQUFLK3dILHVCQUF1Qnp6RyxHQUNqQ2hTLEVBQU10TCxLQUFLaXhILGNBQWN0akgsRUFBR3JNLE9BQVNnNUUsRUFBR2g1RSxRQUN4Q3N6QyxFQUFNLElBQUl4YyxXQUFXLEVBQUk5c0IsRUFBSWhLLE9BQVNxTSxFQUFHck0sT0FBU2c1RSxFQUFHaDVFLFFBSzNELE9BSkFzekMsRUFBSSxHQUFLLEdBQ1R1N0UsRUFBTXZoRyxJQUFJdGpCLEVBQUssRUFBR3NwQyxFQUFLLEVBQUd0cEMsRUFBSWhLLFFBQzlCNnVILEVBQU12aEcsSUFBSWpoQixFQUFJLEVBQUdpbkMsRUFBSyxFQUFJdHBDLEVBQUloSyxPQUFRcU0sRUFBR3JNLFFBQ3pDNnVILEVBQU12aEcsSUFBSTByRCxFQUFJLEVBQUcxbEMsRUFBSyxFQUFJdHBDLEVBQUloSyxPQUFTcU0sRUFBR3JNLE9BQVFnNUUsRUFBR2g1RSxRQUM5Q3N6QyxHQU9meHFCLFFBQVFpSSxJQUFJLFksd0JDN0VMLE1BQU1nL0YsRUFRVCxtQkFBbUJaLEdBQ2YsT0FBTyxJQUFJNWtHLFNBQVEsQ0FBQ0MsRUFBU3ErRCxLQUNVLEdBQS9Cc21DLEVBQVloakcsUUFBUSxVQUNwQmdqRyxFQUFjQSxFQUFZM2dHLFVBQVUsSUFFeEMsTUFBTTRnRyxFQUFjLFdBQWNELEdBQ2xDLFlBQWFDLEdBQWEsU0FBVW52SCxFQUFZMkosR0FFNUMsTUFBTW9tSCxFQUFVZCxFQUNoQixJQUNJYyxFQUFRL3VELFlBQVlyM0QsR0FBSyxTQUFVM0osRUFBWTJDLEdBQzNDLEdBQUkzQyxFQUVBLFlBREE0b0YsRUFBTzVvRixHQUdYLE1BQ01nd0gsRUFESXJ0SCxFQUNJNlAsU0FBU3RTLE1BQU0sR0FDN0IrdUgsRUFBS2p1RCxZQUFZZ3ZELEdBQUssU0FBVWh3SCxFQUFZMkMsR0FDeEMsR0FBSTNDLEVBRUEsWUFEQTRvRixFQUFPNW9GLEdBR1gsTUFFTWl3SCxFQUZLdHRILEVBQ1N5cUIsS0F2RzFCLEtBd0c2QkEsSUF2RzNCLEdBd0dJdkUsUUFBUWlJLElBQUl2cEIsS0FBS0MsVUFBVXlvSCxFQUFPLEtBQU0sSUFDeEMxbEcsRUFBUTBsRyxTQUdsQixNQUFPandILEdBQ0w0b0YsRUFBTzVvRixVQTBCdkIsc0JBQXNCa3ZILEVBQXFCNXZILEdBQ3ZDLE1BQU04dkgsUUFBY1IsRUFBTXozRixRQUFRKzNGLEdBQ2xDLElBQUtFLEVBQ0QsT0FBTyxLQUVYLE1BQU1wdUgsRUFBTW91SCxFQUFNQywwQkFDWjc1RSxFQUFZLEVBQUE3MUMsT0FBQSxLQUFZeXZILEVBQU1TLGdCQUFnQlQsRUFBTUosYUFBYXBrSCxTQUFTLE9BQ2hGLElBQUk4akgsUUFBa0JGLEVBQVUva0csU0FBU3ltRyxlQUt6QyxHQUpJNXdILEdBQVM2d0gsZ0JBQ1R6QixFQUFZLElBQUlwdkgsR0FBUzZ3SCxnQkFHekI3d0gsR0FBUzh3SCxXQUFZLENBQ3JCLE1BQU1DLEVBQVczQixFQUFVM3VILFFBQzNCMnVILEVBQVlBLEVBQVU3cUgsT0FBT3ZFLEdBQVM4d0gsYUFDeEJyd0gsUUFBVXN3SCxHQUNwQnhuRyxRQUFReW5HLEtBQUssS0FBT0QsRUFBVzNCLEVBQVUzdUgsUUFBVSxPQUFTc3dILEVBQVcsa0NBRy9FLElBQUssSUFBSXJtSCxFQUFJLEVBQUc0UyxFQUFJOHhHLEVBQVUzdUgsT0FBUWlLLEVBQUk0UyxFQUFHNVMsSUFBSyxDQUM5QyxNQUFNdW1ILEVBQVc3QixFQUFVMWtILEdBRTNCLElBQ0ksTUFBTXNvQyxFQUFTLGVBQW9CLFVBR25DLEdBRkFBLEVBQU9sSCxPQUFPcHFDLEdBQ09zeEMsRUFBT0EsT0FBT2krRSxFQUFTcDdFLE9BQVFLLEVBQVcsT0FDN0MsQ0FFZCxNQUFNL3NDLEdBQU0sSUFBSW1ELE1BQU8rcUIsVUFFdkIsR0FEa0JsdUIsR0FBTzhuSCxFQUFTQyxXQUFhL25ILEdBQU84bkgsRUFBU0UsU0FFM0QsT0FBT0YsR0FHakIsTUFBT2xySCxHQUNMd2pCLFFBQVFILEtBQUssMEJBQTRCMWUsRUFBSSxHQUFLLE9BQVM0UyxFQUFJLEtBQU8yekcsRUFBU0csUUFBVSxLQUFPcnJILElBR3hHLEtBQU0sa0NBVVEsb0JBQVg0SixTQUNOQSxPQUFlMGhILFlBQWNiLEVBQU1yekIsTUFDbkN4dEYsT0FBZTJoSCxlQUFpQmQsRUFBTS81QixVQUczQ2x0RSxRQUFRaUksSUFBSSxZQ3pNWmpJLFFBQVFpSSxJQUFJLDJCLGVDOENaLFNBQVNxUCxFQUFRNWhDLEdBRWYsSUFDRSxJQUFLLEVBQUFzaUIsRUFBT2dwRSxhQUFjLE9BQU8sRUFDakMsTUFBT3ZzRSxHQUNQLE9BQU8sRUFFVCxJQUFJaFosRUFBTSxFQUFBdWMsRUFBT2dwRSxhQUFhdHJGLEdBQzlCLE9BQUksTUFBUStGLEdBQ3lCLFNBQTlCa0csT0FBT2xHLEdBQUt3NkIsY0E1RHJCMzdCLEVBQU9yRixRQW9CUCxTQUFvQmlxQixFQUFJM2YsR0FDdEIsR0FBSSszQixFQUFPLGlCQUNULE9BQU9wWSxFQUdULElBQUlMLEdBQVMsRUFlYixPQWRBLFdBQ0UsSUFBS0EsRUFBUSxDQUNYLEdBQUl5WSxFQUFPLG9CQUNULE1BQU0sSUFBSS83QixNQUFNZ0UsR0FDUCszQixFQUFPLG9CQUNoQnRYLFFBQVFpaEUsTUFBTTFoRixHQUVkeWdCLFFBQVFILEtBQUt0Z0IsR0FFZnNmLEdBQVMsRUFFWCxPQUFPSyxFQUFHcmtCLE1BQU1qRixLQUFNa0YsYyxRQzFDMUJSLEVBQU9yRixRQUFVLFNBQWtCbUcsR0FDakMsT0FBT0EsR0FBc0IsaUJBQVJBLEdBQ0ksbUJBQWJBLEVBQUl0QyxNQUNTLG1CQUFic0MsRUFBSSt2QyxNQUNjLG1CQUFsQi92QyxFQUFJbkQsWSw0QkNDbEIsSUFBSTgyRSxFQUFvQixFQUFRLE1BQzVCTCxFQUFzQixFQUFRLE1BQzlCczVDLEVBQWtCLEVBQVEsTUFDMUI3M0MsRUFBZSxFQUFRLE1BRTNCLFNBQVNwa0QsRUFBWUMsR0FDbkIsT0FBT0EsRUFBRTcxQixLQUFLOHBCLEtBQUsrTCxHQUdyQixJQUFJaThGLEVBQW9DLG9CQUFYejVGLE9BQ3pCMDVGLEVBQW9DLG9CQUFYM3FHLE9BRXpCNHFHLEVBQWlCcDhGLEVBQVkxd0IsT0FBT3hGLFVBQVVrTSxVQUU5Q3FtSCxFQUFjcjhGLEVBQVlGLE9BQU9oMkIsVUFBVXk0QixTQUMzQys1RixFQUFjdDhGLEVBQVlwcUIsT0FBTzlMLFVBQVV5NEIsU0FDM0NnNkYsRUFBZXY4RixFQUFZd0MsUUFBUTE0QixVQUFVeTRCLFNBRWpELEdBQUkyNUYsRUFDRixJQUFJTSxFQUFjeDhGLEVBQVl5QyxPQUFPMzRCLFVBQVV5NEIsU0FHakQsR0FBSTQ1RixFQUNGLElBQUlNLEVBQWN6OEYsRUFBWXhPLE9BQU8xbkIsVUFBVXk0QixTQUdqRCxTQUFTbTZGLEVBQW9CcHhILEVBQU9xeEgsR0FDbEMsR0FBcUIsaUJBQVZyeEgsRUFDVCxPQUFPLEVBRVQsSUFFRSxPQURBcXhILEVBQWlCcnhILElBQ1YsRUFDUCxNQUFNbUYsR0FDTixPQUFPLEdBOEZYLFNBQVNtc0gsRUFBY3R4SCxHQUNyQixNQUFpQyxpQkFBMUI4d0gsRUFBZTl3SCxHQWtCeEIsU0FBU3V4SCxFQUFjdnhILEdBQ3JCLE1BQWlDLGlCQUExQjh3SCxFQUFlOXdILEdBaUJ4QixTQUFTd3hILEVBQWtCeHhILEdBQ3pCLE1BQWlDLHFCQUExQjh3SCxFQUFlOXdILEdBaUJ4QixTQUFTeXhILEVBQWtCenhILEdBQ3pCLE1BQWlDLHFCQUExQjh3SCxFQUFlOXdILEdBV3hCLFNBQVMweEgsRUFBc0IxeEgsR0FDN0IsTUFBaUMseUJBQTFCOHdILEVBQWU5d0gsR0FNeEIsU0FBU3czRSxFQUFjeDNFLEdBQ3JCLE1BQTJCLG9CQUFoQnkwRCxjQUlKaTlELEVBQXNCQyxRQUN6QkQsRUFBc0IxeEgsR0FDdEJBLGFBQWlCeTBELGFBSXZCLFNBQVNtOUQsRUFBbUI1eEgsR0FDMUIsTUFBaUMsc0JBQTFCOHdILEVBQWU5d0gsR0FPeEIsU0FBUzYzRSxFQUFXNzNFLEdBQ2xCLE1BQXdCLG9CQUFiNnJFLFdBSUorbEQsRUFBbUJELFFBQ3RCQyxFQUFtQjV4SCxHQUNuQkEsYUFBaUI2ckUsVUE5THZCanVFLEVBQVE4NUUsa0JBQW9CQSxFQUM1Qjk1RSxFQUFReTVFLG9CQUFzQkEsRUFDOUJ6NUUsRUFBUWs3RSxhQUFlQSxFQWtCdkJsN0UsRUFBUW1wQixVQWRSLFNBQW1CdmlCLEdBQ2xCLE1BRXFCLG9CQUFaNGxCLFNBQ1A1bEIsYUFBaUI0bEIsU0FHUCxPQUFWNWxCLEdBQ2lCLGlCQUFWQSxHQUNlLG1CQUFmQSxFQUFNd2xCLE1BQ1UsbUJBQWhCeGxCLEVBQU15bEIsT0FnQmhCcnNCLEVBQVFtM0Isa0JBVlIsU0FBMkIvMEIsR0FDekIsTUFBMkIsb0JBQWhCeTBELGFBQStCQSxZQUFZQyxPQUM3Q0QsWUFBWUMsT0FBTzEwRCxHQUkxQjg0RSxFQUFhOTRFLElBQ2I2M0UsRUFBVzczRSxJQVNmcEMsRUFBUWkwSCxhQUhSLFNBQXNCN3hILEdBQ3BCLE1BQWtDLGVBQTNCMndILEVBQWdCM3dILElBT3pCcEMsRUFBUWswSCxvQkFIUixTQUE2Qjl4SCxHQUMzQixNQUFrQyxzQkFBM0Iyd0gsRUFBZ0Izd0gsSUFPekJwQyxFQUFRbTBILGNBSFIsU0FBdUIveEgsR0FDckIsTUFBa0MsZ0JBQTNCMndILEVBQWdCM3dILElBT3pCcEMsRUFBUW8wSCxjQUhSLFNBQXVCaHlILEdBQ3JCLE1BQWtDLGdCQUEzQjJ3SCxFQUFnQjN3SCxJQU96QnBDLEVBQVFxMEgsWUFIUixTQUFxQmp5SCxHQUNuQixNQUFrQyxjQUEzQjJ3SCxFQUFnQjN3SCxJQU96QnBDLEVBQVFzMEgsYUFIUixTQUFzQmx5SCxHQUNwQixNQUFrQyxlQUEzQjJ3SCxFQUFnQjN3SCxJQU96QnBDLEVBQVF1MEgsYUFIUixTQUFzQm55SCxHQUNwQixNQUFrQyxlQUEzQjJ3SCxFQUFnQjN3SCxJQU96QnBDLEVBQVE4M0IsZUFIUixTQUF3QjExQixHQUN0QixNQUFrQyxpQkFBM0Iyd0gsRUFBZ0Izd0gsSUFPekJwQyxFQUFRKzNCLGVBSFIsU0FBd0IzMUIsR0FDdEIsTUFBa0MsaUJBQTNCMndILEVBQWdCM3dILElBT3pCcEMsRUFBUXcwSCxnQkFIUixTQUF5QnB5SCxHQUN2QixNQUFrQyxrQkFBM0Iyd0gsRUFBZ0Izd0gsSUFPekJwQyxFQUFReTBILGlCQUhSLFNBQTBCcnlILEdBQ3hCLE1BQWtDLG1CQUEzQjJ3SCxFQUFnQjN3SCxJQU96QnN4SCxFQUFjSyxRQUNHLG9CQUFScHFHLEtBQ1ArcEcsRUFBYyxJQUFJL3BHLEtBWXBCM3BCLEVBQVFxM0IsTUFUUixTQUFlajFCLEdBQ2IsTUFBbUIsb0JBQVJ1bkIsTUFJSitwRyxFQUFjSyxRQUNqQkwsRUFBY3R4SCxHQUNkQSxhQUFpQnVuQixNQU92QmdxRyxFQUFjSSxRQUNHLG9CQUFSMzRGLEtBQ1B1NEYsRUFBYyxJQUFJdjRGLEtBV3BCcDdCLEVBQVFzM0IsTUFUUixTQUFlbDFCLEdBQ2IsTUFBbUIsb0JBQVJnNUIsTUFJSnU0RixFQUFjSSxRQUNqQkosRUFBY3Z4SCxHQUNkQSxhQUFpQmc1QixNQU92Qnc0RixFQUFrQkcsUUFDRyxvQkFBWnB2QyxTQUNQaXZDLEVBQWtCLElBQUlqdkMsU0FXeEIza0YsRUFBUTg2RSxVQVRSLFNBQW1CMTRFLEdBQ2pCLE1BQXVCLG9CQUFadWlGLFVBSUppdkMsRUFBa0JHLFFBQ3JCSCxFQUFrQnh4SCxHQUNsQkEsYUFBaUJ1aUYsVUFPdkJrdkMsRUFBa0JFLFFBQ0csb0JBQVo3cEQsU0FDUDJwRCxFQUFrQixJQUFJM3BELFNBS3hCbHFFLEVBQVErNkUsVUFIUixTQUFtQjM0RSxHQUNqQixPQUFPeXhILEVBQWtCenhILElBTzNCMHhILEVBQXNCQyxRQUNHLG9CQUFoQmw5RCxhQUNQaTlELEVBQXNCLElBQUlqOUQsYUFXNUI3MkQsRUFBUTQ1RSxjQUFnQkEsRUFLeEJvNkMsRUFBbUJELFFBQ00sb0JBQWhCbDlELGFBQ2Esb0JBQWJvWCxVQUNQK2xELEVBQW1CLElBQUkvbEQsU0FBUyxJQUFJcFgsWUFBWSxHQUFJLEVBQUcsSUFXekQ3MkQsRUFBUWk2RSxXQUFhQSxFQUdyQixJQUFJeTZDLEVBQXFELG9CQUF0QnQ5RCxrQkFBb0NBLHVCQUFvQm51RCxFQUMzRixTQUFTMHJILEVBQTRCdnlILEdBQ25DLE1BQWlDLCtCQUExQjh3SCxFQUFlOXdILEdBRXhCLFNBQVN3eUgsRUFBb0J4eUgsR0FDM0IsWUFBcUMsSUFBMUJzeUgsU0FJd0MsSUFBeENDLEVBQTRCWixVQUNyQ1ksRUFBNEJaLFFBQVVZLEVBQTRCLElBQUlELElBR2pFQyxFQUE0QlosUUFDL0JZLEVBQTRCdnlILEdBQzVCQSxhQUFpQnN5SCxHQTZCdkIsU0FBU2o5RixFQUFlcjFCLEdBQ3RCLE9BQU9veEgsRUFBb0JweEgsRUFBTyt3SCxHQUlwQyxTQUFTejdGLEVBQWV0MUIsR0FDdEIsT0FBT294SCxFQUFvQnB4SCxFQUFPZ3hILEdBSXBDLFNBQVN6N0YsRUFBZ0J2MUIsR0FDdkIsT0FBT294SCxFQUFvQnB4SCxFQUFPaXhILEdBSXBDLFNBQVN6N0YsRUFBZXgxQixHQUN0QixPQUFPNHdILEdBQW1CUSxFQUFvQnB4SCxFQUFPa3hILEdBSXZELFNBQVN6N0YsRUFBZXoxQixHQUN0QixPQUFPNndILEdBQW1CTyxFQUFvQnB4SCxFQUFPbXhILEdBaER2RHZ6SCxFQUFRNDBILG9CQUFzQkEsRUFLOUI1MEgsRUFBUXU1RSxnQkFIUixTQUF5Qm4zRSxHQUN2QixNQUFpQywyQkFBMUI4d0gsRUFBZTl3SCxJQU94QnBDLEVBQVFzNkUsY0FIUixTQUF1Qmw0RSxHQUNyQixNQUFpQywwQkFBMUI4d0gsRUFBZTl3SCxJQU94QnBDLEVBQVE2NkUsY0FIUixTQUF1Qno0RSxHQUNyQixNQUFpQywwQkFBMUI4d0gsRUFBZTl3SCxJQU94QnBDLEVBQVE2MEgsa0JBSFIsU0FBMkJ6eUgsR0FDekIsTUFBaUMsdUJBQTFCOHdILEVBQWU5d0gsSUFPeEJwQyxFQUFRODBILDRCQUhSLFNBQXFDMXlILEdBQ25DLE1BQWlDLGdDQUExQjh3SCxFQUFlOXdILElBT3hCcEMsRUFBUXkzQixlQUFpQkEsRUFLekJ6M0IsRUFBUTAzQixlQUFpQkEsRUFLekIxM0IsRUFBUTIzQixnQkFBa0JBLEVBSzFCMzNCLEVBQVE0M0IsZUFBaUJBLEVBS3pCNTNCLEVBQVE2M0IsZUFBaUJBLEVBV3pCNzNCLEVBQVF3M0IsaUJBVFIsU0FBMEJwMUIsR0FDeEIsT0FDRXExQixFQUFlcjFCLElBQ2ZzMUIsRUFBZXQxQixJQUNmdTFCLEVBQWdCdjFCLElBQ2hCdzFCLEVBQWV4MUIsSUFDZnkxQixFQUFlejFCLElBV25CcEMsRUFBUWszQixpQkFOUixTQUEwQjkwQixHQUN4QixNQUE2QixvQkFBZjIyQixhQUNaNmdELEVBQWN4M0UsSUFDZHd5SCxFQUFvQnh5SCxLQUt4QixDQUFDLFVBQVcsYUFBYywyQkFBMkJ1QixTQUFRLFNBQVMrQixHQUNwRVUsT0FBT2tvQixlQUFldHVCLEVBQVMwRixFQUFRLENBQ3JDNm9CLFlBQVksRUFDWm5zQixNQUFPLFdBQ0wsTUFBTSxJQUFJa0UsTUFBTVosRUFBUyx3Qyw2QkNyVDNCay9FLEVBQTRCeCtFLE9BQU93K0UsMkJBQ3JDLFNBQW1DLy9FLEdBR2pDLElBRkEsSUFBSXdCLEVBQU9ELE9BQU9DLEtBQUt4QixHQUNuQmt3SCxFQUFjLEdBQ1Q3b0gsRUFBSSxFQUFHQSxFQUFJN0YsRUFBS3BFLE9BQVFpSyxJQUMvQjZvSCxFQUFZMXVILEVBQUs2RixJQUFNOUYsT0FBT291Qix5QkFBeUIzdkIsRUFBS3dCLEVBQUs2RixJQUVuRSxPQUFPNm9ILEdBR1BDLEVBQWUsV0FDbkJoMUgsRUFBUWloQyxPQUFTLFNBQVNsSyxHQUN4QixJQUFLbWpGLEVBQVNuakYsR0FBSSxDQUVoQixJQURBLElBQUlrK0YsRUFBVSxHQUNML29ILEVBQUksRUFBR0EsRUFBSXJHLFVBQVU1RCxPQUFRaUssSUFDcEMrb0gsRUFBUXR2SCxLQUFLeU4sRUFBUXZOLFVBQVVxRyxLQUVqQyxPQUFPK29ILEVBQVF6eEgsS0FBSyxLQUdsQjBJLEVBQUksRUFtQlIsSUFuQkEsSUFDSTFILEVBQU9xQixVQUNQb0csRUFBTXpILEVBQUt2QyxPQUNYaUksRUFBTXdDLE9BQU9xcUIsR0FBR3RvQixRQUFRdW1ILEdBQWMsU0FBU2g0RyxHQUNqRCxHQUFVLE9BQU5BLEVBQVksTUFBTyxJQUN2QixHQUFJOVEsR0FBS0QsRUFBSyxPQUFPK1EsRUFDckIsT0FBUUEsR0FDTixJQUFLLEtBQU0sT0FBT3RRLE9BQU9sSSxFQUFLMEgsTUFDOUIsSUFBSyxLQUFNLE9BQU8wcUIsT0FBT3B5QixFQUFLMEgsTUFDOUIsSUFBSyxLQUNILElBQ0UsT0FBT3pDLEtBQUtDLFVBQVVsRixFQUFLMEgsTUFDM0IsTUFBT3NULEdBQ1AsTUFBTyxhQUVYLFFBQ0UsT0FBT3hDLE1BR0pBLEVBQUl4WSxFQUFLMEgsR0FBSUEsRUFBSUQsRUFBSytRLEVBQUl4WSxJQUFPMEgsR0FDcENncEgsRUFBT2w0RyxLQUFPKzhGLEVBQVMvOEYsR0FDekI5UyxHQUFPLElBQU04UyxFQUViOVMsR0FBTyxJQUFNa0osRUFBUTRKLEdBR3pCLE9BQU85UyxHQU9UbEssRUFBUW9wRixVQUFZLFNBQVNuL0QsRUFBSTNmLEdBQy9CLFFBQXVCLElBQVp1Z0IsSUFBcUQsSUFBMUJBLEVBQVFzcUcsY0FDNUMsT0FBT2xyRyxFQUlULFFBQXVCLElBQVpZLEVBQ1QsT0FBTyxXQUNMLE9BQU83cUIsRUFBUW9wRixVQUFVbi9ELEVBQUkzZixHQUFLMUUsTUFBTWpGLEtBQU1rRixZQUlsRCxJQUFJK2pCLEdBQVMsRUFlYixPQWRBLFdBQ0UsSUFBS0EsRUFBUSxDQUNYLEdBQUlpQixFQUFRdXFHLGlCQUNWLE1BQU0sSUFBSTl1SCxNQUFNZ0UsR0FDUHVnQixFQUFRd3FHLGlCQUNqQnRxRyxRQUFRaWhFLE1BQU0xaEYsR0FFZHlnQixRQUFRN29CLE1BQU1vSSxHQUVoQnNmLEdBQVMsRUFFWCxPQUFPSyxFQUFHcmtCLE1BQU1qRixLQUFNa0YsYUFPMUIsSUFBSXl2SCxFQUFTLEdBQ1RDLEVBQWdCLEtBRXBCLEdBQUkxcUcsRUFBUXM2RCxJQUFJcXdDLFdBQVksQ0FDMUIsSUFBSUMsRUFBVzVxRyxFQUFRczZELElBQUlxd0MsV0FDM0JDLEVBQVdBLEVBQVNobkgsUUFBUSxxQkFBc0IsUUFDL0NBLFFBQVEsTUFBTyxNQUNmQSxRQUFRLEtBQU0sT0FDZEosY0FDSGtuSCxFQUFnQixJQUFJejhGLE9BQU8sSUFBTTI4RixFQUFXLElBQUssS0EyQm5ELFNBQVNyaUgsRUFBUXZPLEVBQUtrdUMsR0FFcEIsSUFBSXB1QixFQUFNLENBQ1JzNEQsS0FBTSxHQUNOak4sUUFBUzBsRCxHQWtCWCxPQWZJN3ZILFVBQVU1RCxRQUFVLElBQUcwaUIsRUFBSTJNLE1BQVF6ckIsVUFBVSxJQUM3Q0EsVUFBVTVELFFBQVUsSUFBRzBpQixFQUFJcTNELE9BQVNuMkUsVUFBVSxJQUM5Qzh2SCxFQUFVNWlGLEdBRVpwdUIsRUFBSThNLFdBQWFzaEIsRUFDUkEsR0FFVC95QyxFQUFRNDFILFFBQVFqeEcsRUFBS291QixHQUduQjhpRixFQUFZbHhHLEVBQUk4TSxjQUFhOU0sRUFBSThNLFlBQWEsR0FDOUNva0csRUFBWWx4RyxFQUFJMk0sU0FBUTNNLEVBQUkyTSxNQUFRLEdBQ3BDdWtHLEVBQVlseEcsRUFBSXEzRCxVQUFTcjNELEVBQUlxM0QsUUFBUyxHQUN0QzY1QyxFQUFZbHhHLEVBQUkwTSxpQkFBZ0IxTSxFQUFJME0sZUFBZ0IsR0FDcEQxTSxFQUFJcTNELFNBQVFyM0QsRUFBSXFyRCxRQUFVbVQsR0FDdkIyeUMsRUFBWW54RyxFQUFLOWYsRUFBSzhmLEVBQUkyTSxPQW9DbkMsU0FBUzZ4RCxFQUFpQmo1RSxFQUFLNnJILEdBQzdCLElBQUlDLEVBQVE1aUgsRUFBUThzRSxPQUFPNjFDLEdBRTNCLE9BQUlDLEVBQ0ssS0FBWTVpSCxFQUFRNG9FLE9BQU9nNkMsR0FBTyxHQUFLLElBQU05ckgsRUFDN0MsS0FBWWtKLEVBQVE0b0UsT0FBT2c2QyxHQUFPLEdBQUssSUFFdkM5ckgsRUFLWCxTQUFTd3JILEVBQWV4ckgsRUFBSzZySCxHQUMzQixPQUFPN3JILEVBZVQsU0FBUzRySCxFQUFZbnhHLEVBQUt2aUIsRUFBT2d5QixHQUcvQixHQUFJelAsRUFBSTBNLGVBQ0pqdkIsR0FDQTQzRyxFQUFXNTNHLEVBQU1nUixVQUVqQmhSLEVBQU1nUixVQUFZcFQsRUFBUW9ULFdBRXhCaFIsRUFBTVEsYUFBZVIsRUFBTVEsWUFBWWhDLFlBQWN3QixHQUFRLENBQ2pFLElBQUlxUyxFQUFNclMsRUFBTWdSLFFBQVFnaEIsRUFBY3pQLEdBSXRDLE9BSEt1MUYsRUFBU3psRyxLQUNaQSxFQUFNcWhILEVBQVlueEcsRUFBS2xRLEVBQUsyZixJQUV2QjNmLEVBSVQsSUFBSXJMLEVBK0ZOLFNBQXlCdWIsRUFBS3ZpQixHQUM1QixHQUFJeXpILEVBQVl6ekgsR0FDZCxPQUFPdWlCLEVBQUlxckQsUUFBUSxZQUFhLGFBQ2xDLEdBQUlrcUMsRUFBUzkzRyxHQUFRLENBQ25CLElBQUk2ekgsRUFBUyxJQUFPeHNILEtBQUtDLFVBQVV0SCxHQUFPcU0sUUFBUSxTQUFVLElBQ2xCQSxRQUFRLEtBQU0sT0FDZEEsUUFBUSxPQUFRLEtBQU8sSUFDakUsT0FBT2tXLEVBQUlxckQsUUFBUWltRCxFQUFRLFVBRTdCLE9BQUlDLEVBQVM5ekgsR0FDSnVpQixFQUFJcXJELFFBQVEsR0FBSzV0RSxFQUFPLFVBQzdCdXpILEVBQVV2ekgsR0FDTHVpQixFQUFJcXJELFFBQVEsR0FBSzV0RSxFQUFPLFdBRTdCOHlILEVBQU85eUgsR0FDRnVpQixFQUFJcXJELFFBQVEsT0FBUSxhQUQ3QixFQTdHZ0JtbUQsQ0FBZ0J4eEcsRUFBS3ZpQixHQUNyQyxHQUFJZ0gsRUFDRixPQUFPQSxFQUlULElBQUkvQyxFQUFPRCxPQUFPQyxLQUFLakUsR0FDbkJnMEgsRUFwQ04sU0FBcUI1L0YsR0FDbkIsSUFBSXNlLEVBQU8sR0FNWCxPQUpBdGUsRUFBTTd5QixTQUFRLFNBQVM2QyxFQUFLNnZILEdBQzFCdmhGLEVBQUt0dUMsSUFBTyxLQUdQc3VDLEVBNkJXd2hGLENBQVlqd0gsR0FROUIsR0FOSXNlLEVBQUk4TSxhQUNOcHJCLEVBQU9ELE9BQU9tcUUsb0JBQW9CbnVFLElBS2hDZ0YsRUFBUWhGLEtBQ0ppRSxFQUFLK25CLFFBQVEsWUFBYyxHQUFLL25CLEVBQUsrbkIsUUFBUSxnQkFBa0IsR0FDckUsT0FBT21vRyxFQUFZbjBILEdBSXJCLEdBQW9CLElBQWhCaUUsRUFBS3BFLE9BQWMsQ0FDckIsR0FBSSszRyxFQUFXNTNHLEdBQVEsQ0FDckIsSUFBSTNCLEVBQU8yQixFQUFNM0IsS0FBTyxLQUFPMkIsRUFBTTNCLEtBQU8sR0FDNUMsT0FBT2trQixFQUFJcXJELFFBQVEsWUFBY3Z2RSxFQUFPLElBQUssV0FFL0MsR0FBSTJvQixFQUFTaG5CLEdBQ1gsT0FBT3VpQixFQUFJcXJELFFBQVFsM0MsT0FBT2w0QixVQUFVa00sU0FBUzVMLEtBQUtrQixHQUFRLFVBRTVELEdBQUlnMUIsRUFBT2gxQixHQUNULE9BQU91aUIsRUFBSXFyRCxRQUFRbGlFLEtBQUtsTixVQUFVa00sU0FBUzVMLEtBQUtrQixHQUFRLFFBRTFELEdBQUlnRixFQUFRaEYsR0FDVixPQUFPbTBILEVBQVluMEgsR0FJdkIsSUEyQ0ltbEIsRUEzQ0FwbkIsRUFBTyxHQUFJcTJCLEdBQVEsRUFBT2dnRyxFQUFTLENBQUMsSUFBSyxLQTZCN0MsT0ExQklsMEgsRUFBUUYsS0FDVm8wQixHQUFRLEVBQ1JnZ0csRUFBUyxDQUFDLElBQUssTUFJYnhjLEVBQVc1M0csS0FFYmpDLEVBQU8sY0FEQ2lDLEVBQU0zQixLQUFPLEtBQU8yQixFQUFNM0IsS0FBTyxJQUNmLEtBSXhCMm9CLEVBQVNobkIsS0FDWGpDLEVBQU8sSUFBTTI0QixPQUFPbDRCLFVBQVVrTSxTQUFTNUwsS0FBS2tCLElBSTFDZzFCLEVBQU9oMUIsS0FDVGpDLEVBQU8sSUFBTTJOLEtBQUtsTixVQUFVNjFILFlBQVl2MUgsS0FBS2tCLElBSTNDZ0YsRUFBUWhGLEtBQ1ZqQyxFQUFPLElBQU1vMkgsRUFBWW4wSCxJQUdQLElBQWhCaUUsRUFBS3BFLFFBQWtCdTBCLEdBQXlCLEdBQWhCcDBCLEVBQU1ILE9BSXRDbXlCLEVBQWUsRUFDYmhMLEVBQVNobkIsR0FDSnVpQixFQUFJcXJELFFBQVFsM0MsT0FBT2w0QixVQUFVa00sU0FBUzVMLEtBQUtrQixHQUFRLFVBRW5EdWlCLEVBQUlxckQsUUFBUSxXQUFZLFlBSW5DcnJELEVBQUlzNEQsS0FBS3QzRSxLQUFLdkQsR0FJWm1sQixFQURFaVAsRUFzQ04sU0FBcUI3UixFQUFLdmlCLEVBQU9neUIsRUFBY2dpRyxFQUFhL3ZILEdBRTFELElBREEsSUFBSWtoQixFQUFTLEdBQ0pyYixFQUFJLEVBQUdxUixFQUFJbmIsRUFBTUgsT0FBUWlLLEVBQUlxUixJQUFLclIsRUFDckM3SyxFQUFlZSxFQUFPc0ssT0FBT1IsSUFDL0JxYixFQUFPNWhCLEtBQUsrd0gsRUFBZS94RyxFQUFLdmlCLEVBQU9neUIsRUFBY2dpRyxFQUNqRDFwSCxPQUFPUixJQUFJLElBRWZxYixFQUFPNWhCLEtBQUssSUFTaEIsT0FOQVUsRUFBSzFDLFNBQVEsU0FBU3FCLEdBQ2ZBLEVBQUkwRCxNQUFNLFVBQ2I2ZSxFQUFPNWhCLEtBQUsrd0gsRUFBZS94RyxFQUFLdmlCLEVBQU9neUIsRUFBY2dpRyxFQUNqRHB4SCxHQUFLLE9BR051aUIsRUFyRElvdkcsQ0FBWWh5RyxFQUFLdmlCLEVBQU9neUIsRUFBY2dpRyxFQUFhL3ZILEdBRW5EQSxFQUFLOUQsS0FBSSxTQUFTeUMsR0FDekIsT0FBTzB4SCxFQUFlL3hHLEVBQUt2aUIsRUFBT2d5QixFQUFjZ2lHLEVBQWFweEgsRUFBS3d4QixNQUl0RTdSLEVBQUlzNEQsS0FBSy9wRCxNQTZHWCxTQUE4QjNMLEVBQVFwbkIsRUFBTXEySCxHQVExQyxPQU5hanZHLEVBQU9zb0QsUUFBTyxTQUFTbmxFLEVBQU02b0IsR0FHeEMsT0FESUEsRUFBSW5GLFFBQVEsTUFDVDFqQixFQUFPNm9CLEVBQUk5a0IsUUFBUSxrQkFBbUIsSUFBSXhNLE9BQVMsSUFDekQsR0FFVSxHQUNKdTBILEVBQU8sSUFDRyxLQUFUcjJILEVBQWMsR0FBS0EsRUFBTyxPQUMzQixJQUNBb25CLEVBQU8vakIsS0FBSyxTQUNaLElBQ0FnekgsRUFBTyxHQUdUQSxFQUFPLEdBQUtyMkgsRUFBTyxJQUFNb25CLEVBQU8vakIsS0FBSyxNQUFRLElBQU1nekgsRUFBTyxHQTVIMURJLENBQXFCcnZHLEVBQVFwbkIsRUFBTXEySCxJQXhCakNBLEVBQU8sR0FBS3IySCxFQUFPcTJILEVBQU8sR0ErQ3JDLFNBQVNELEVBQVluMEgsR0FDbkIsTUFBTyxJQUFNa0UsTUFBTTFGLFVBQVVrTSxTQUFTNUwsS0FBS2tCLEdBQVMsSUF3QnRELFNBQVNzMEgsRUFBZS94RyxFQUFLdmlCLEVBQU9neUIsRUFBY2dpRyxFQUFhcHhILEVBQUt3eEIsR0FDbEUsSUFBSS8xQixFQUFNeUosRUFBS2dxRCxFQXNDZixJQXJDQUEsRUFBTzl0RCxPQUFPb3VCLHlCQUF5QnB5QixFQUFPNEMsSUFBUSxDQUFFNUMsTUFBT0EsRUFBTTRDLEtBQzVEc3FCLElBRUxwbEIsRUFERWdxRCxFQUFLM2tDLElBQ0Q1SyxFQUFJcXJELFFBQVEsa0JBQW1CLFdBRS9CcnJELEVBQUlxckQsUUFBUSxXQUFZLFdBRzVCOWIsRUFBSzNrQyxNQUNQcmxCLEVBQU15YSxFQUFJcXJELFFBQVEsV0FBWSxZQUc3QjN1RSxFQUFlKzBILEVBQWFweEgsS0FDL0J2RSxFQUFPLElBQU11RSxFQUFNLEtBRWhCa0YsSUFDQ3lhLEVBQUlzNEQsS0FBSzd1RCxRQUFROGxDLEVBQUs5eEQsT0FBUyxHQUUvQjhILEVBREVnckgsRUFBTzlnRyxHQUNIMGhHLEVBQVlueEcsRUFBS3V2QyxFQUFLOXhELE1BQU8sTUFFN0IwekgsRUFBWW54RyxFQUFLdXZDLEVBQUs5eEQsTUFBT2d5QixFQUFlLElBRTVDaEcsUUFBUSxPQUFTLElBRXJCbGtCLEVBREVzc0IsRUFDSXRzQixFQUFJaUUsTUFBTSxNQUFNNUwsS0FBSSxTQUFTczBILEdBQ2pDLE1BQU8sS0FBT0EsS0FDYnJ6SCxLQUFLLE1BQU02eEIsT0FBTyxHQUVmLEtBQU9uckIsRUFBSWlFLE1BQU0sTUFBTTVMLEtBQUksU0FBU3MwSCxHQUN4QyxNQUFPLE1BQVFBLEtBQ2RyekgsS0FBSyxPQUlaMEcsRUFBTXlhLEVBQUlxckQsUUFBUSxhQUFjLFlBR2hDNmxELEVBQVlwMUgsR0FBTyxDQUNyQixHQUFJKzFCLEdBQVN4eEIsRUFBSTBELE1BQU0sU0FDckIsT0FBT3dCLEdBRVR6SixFQUFPZ0osS0FBS0MsVUFBVSxHQUFLMUUsSUFDbEIwRCxNQUFNLGlDQUNiakksRUFBT0EsRUFBSzQwQixPQUFPLEVBQUc1MEIsRUFBS3dCLE9BQVMsR0FDcEN4QixFQUFPa2tCLEVBQUlxckQsUUFBUXZ2RSxFQUFNLFVBRXpCQSxFQUFPQSxFQUFLZ08sUUFBUSxLQUFNLE9BQ2RBLFFBQVEsT0FBUSxLQUNoQkEsUUFBUSxXQUFZLEtBQ2hDaE8sRUFBT2trQixFQUFJcXJELFFBQVF2dkUsRUFBTSxXQUk3QixPQUFPQSxFQUFPLEtBQU95SixFQTZCdkIsU0FBUzVILEVBQVE4L0UsR0FDZixPQUFPLy9FLE1BQU1DLFFBQVE4L0UsR0FJdkIsU0FBU3V6QyxFQUFVeHZILEdBQ2pCLE1BQXNCLGtCQUFSQSxFQUloQixTQUFTK3VILEVBQU8vdUgsR0FDZCxPQUFlLE9BQVJBLEVBU1QsU0FBUyt2SCxFQUFTL3ZILEdBQ2hCLE1BQXNCLGlCQUFSQSxFQUloQixTQUFTK3pHLEVBQVMvekcsR0FDaEIsTUFBc0IsaUJBQVJBLEVBU2hCLFNBQVMwdkgsRUFBWTF2SCxHQUNuQixZQUFlLElBQVJBLEVBSVQsU0FBU2lqQixFQUFTOWEsR0FDaEIsT0FBT3lyRyxFQUFTenJHLElBQThCLG9CQUF2QjJvQixFQUFlM29CLEdBS3hDLFNBQVN5ckcsRUFBUzV6RyxHQUNoQixNQUFzQixpQkFBUkEsR0FBNEIsT0FBUkEsRUFJcEMsU0FBU2l4QixFQUFPK0UsR0FDZCxPQUFPNDlFLEVBQVM1OUUsSUFBNEIsa0JBQXRCbEYsRUFBZWtGLEdBS3ZDLFNBQVMvMEIsRUFBUUcsR0FDZixPQUFPd3lHLEVBQVN4eUcsS0FDVyxtQkFBdEIwdkIsRUFBZTF2QixJQUEyQkEsYUFBYWpCLE9BSzlELFNBQVMwekcsRUFBVzd6RyxHQUNsQixNQUFzQixtQkFBUkEsRUFnQmhCLFNBQVM4d0IsRUFBZXJmLEdBQ3RCLE9BQU94UixPQUFPeEYsVUFBVWtNLFNBQVM1TCxLQUFLMFcsR0FJeEMsU0FBUzA1QixFQUFJeHlCLEdBQ1gsT0FBT0EsRUFBSSxHQUFLLElBQU1BLEVBQUVoUyxTQUFTLElBQU1nUyxFQUFFaFMsU0FBUyxJQXZicEQ5TSxFQUFRK2xGLFNBQVcsU0FBU3gyRCxHQUUxQixHQURBQSxFQUFNQSxFQUFJbGhCLGVBQ0xpbkgsRUFBTy9sRyxHQUNWLEdBQUlnbUcsRUFBY3J0SCxLQUFLcW5CLEdBQU0sQ0FDM0IsSUFBSXVuRyxFQUFNanNHLEVBQVFpc0csSUFDbEJ4QixFQUFPL2xHLEdBQU8sV0FDWixJQUFJamxCLEVBQU10SyxFQUFRaWhDLE9BQU9yN0IsTUFBTTVGLEVBQVM2RixXQUN4Q2tsQixRQUFRN29CLE1BQU0sWUFBYXF0QixFQUFLdW5HLEVBQUt4c0gsU0FHdkNnckgsRUFBTy9sRyxHQUFPLGFBR2xCLE9BQU8rbEcsRUFBTy9sRyxJQW9DaEJ2dkIsRUFBUW9ULFFBQVVBLEVBSWxCQSxFQUFRNG9FLE9BQVMsQ0FDZixLQUFTLENBQUMsRUFBRyxJQUNiLE9BQVcsQ0FBQyxFQUFHLElBQ2YsVUFBYyxDQUFDLEVBQUcsSUFDbEIsUUFBWSxDQUFDLEVBQUcsSUFDaEIsTUFBVSxDQUFDLEdBQUksSUFDZixLQUFTLENBQUMsR0FBSSxJQUNkLE1BQVUsQ0FBQyxHQUFJLElBQ2YsS0FBUyxDQUFDLEdBQUksSUFDZCxLQUFTLENBQUMsR0FBSSxJQUNkLE1BQVUsQ0FBQyxHQUFJLElBQ2YsUUFBWSxDQUFDLEdBQUksSUFDakIsSUFBUSxDQUFDLEdBQUksSUFDYixPQUFXLENBQUMsR0FBSSxLQUlsQjVvRSxFQUFROHNFLE9BQVMsQ0FDZixRQUFXLE9BQ1gsT0FBVSxTQUNWLFFBQVcsU0FDWCxVQUFhLE9BQ2IsS0FBUSxPQUNSLE9BQVUsUUFDVixLQUFRLFVBRVIsT0FBVSxPQStRWmxnRixFQUFRKzJILE1BQVEsRUFBaEIsTUFLQS8ySCxFQUFRc0MsUUFBVUEsRUFLbEJ0QyxFQUFRMjFILFVBQVlBLEVBS3BCMzFILEVBQVFrMUgsT0FBU0EsRUFLakJsMUgsRUFBUWczSCxrQkFIUixTQUEyQjd3SCxHQUN6QixPQUFjLE1BQVBBLEdBT1RuRyxFQUFRazJILFNBQVdBLEVBS25CbDJILEVBQVFrNkcsU0FBV0EsRUFLbkJsNkcsRUFBUWkzSCxTQUhSLFNBQWtCOXdILEdBQ2hCLE1BQXNCLGlCQUFSQSxHQU9oQm5HLEVBQVE2MUgsWUFBY0EsRUFLdEI3MUgsRUFBUW9wQixTQUFXQSxFQUNuQnBwQixFQUFRKzJILE1BQU0zdEcsU0FBV0EsRUFLekJwcEIsRUFBUSs1RyxTQUFXQSxFQUtuQi81RyxFQUFRbzNCLE9BQVNBLEVBQ2pCcDNCLEVBQVErMkgsTUFBTTMvRixPQUFTQSxFQU12QnAzQixFQUFRb0gsUUFBVUEsRUFDbEJwSCxFQUFRKzJILE1BQU14L0YsY0FBZ0Jud0IsRUFLOUJwSCxFQUFRZzZHLFdBQWFBLEVBVXJCaDZHLEVBQVFrM0gsWUFSUixTQUFxQi93SCxHQUNuQixPQUFlLE9BQVJBLEdBQ2Usa0JBQVJBLEdBQ1EsaUJBQVJBLEdBQ1EsaUJBQVJBLEdBQ1EsaUJBQVJBLFFBQ1EsSUFBUkEsR0FJaEJuRyxFQUFRK0IsU0FBVyxFQUFuQixLQVlBLElBQUlvMUgsRUFBUyxDQUFDLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUFPLE1BQU8sTUFBTyxNQUN4RCxNQUFPLE1BQU8sT0FHNUIsU0FBU0MsSUFDUCxJQUFJajdGLEVBQUksSUFBSXJ1QixLQUNSeUIsRUFBTyxDQUFDK2hDLEVBQUluVixFQUFFazdGLFlBQ04vbEYsRUFBSW5WLEVBQUVtN0YsY0FDTmhtRixFQUFJblYsRUFBRW83RixlQUFlL3pILEtBQUssS0FDdEMsTUFBTyxDQUFDMjRCLEVBQUVxN0YsVUFBV0wsRUFBT2g3RixFQUFFczdGLFlBQWFsb0gsR0FBTS9MLEtBQUssS0FxQ3hELFNBQVNuQyxFQUFld0QsRUFBS1ksR0FDM0IsT0FBT1csT0FBT3hGLFVBQVVTLGVBQWVILEtBQUsyRCxFQUFLWSxHQWpDbkR6RixFQUFRZ3pCLElBQU0sV0FDWmpJLFFBQVFpSSxJQUFJLFVBQVdva0csSUFBYXAzSCxFQUFRaWhDLE9BQU9yN0IsTUFBTTVGLEVBQVM2RixhQWlCcEU3RixFQUFRTyxTQUFXLEVBQW5CLE1BRUFQLEVBQVE0MUgsUUFBVSxTQUFTOEIsRUFBUWxnSCxHQUVqQyxJQUFLQSxJQUFRdWlHLEVBQVN2aUcsR0FBTSxPQUFPa2dILEVBSW5DLElBRkEsSUFBSXJ4SCxFQUFPRCxPQUFPQyxLQUFLbVIsR0FDbkJ0TCxFQUFJN0YsRUFBS3BFLE9BQ05pSyxLQUNMd3JILEVBQU9yeEgsRUFBSzZGLElBQU1zTCxFQUFJblIsRUFBSzZGLElBRTdCLE9BQU93ckgsR0FPVCxJQUFJQyxFQUE2QyxvQkFBWHJ2RyxPQUF5QkEsT0FBTyw4QkFBMkJyZixFQTBEakcsU0FBUzJ1SCxFQUFzQnRpRyxFQUFRNHNCLEdBS3JDLElBQUs1c0IsRUFBUSxDQUNYLElBQUl1aUcsRUFBWSxJQUFJdnhILE1BQU0sMkNBQzFCdXhILEVBQVV2aUcsT0FBU0EsRUFDbkJBLEVBQVN1aUcsRUFFWCxPQUFPMzFFLEVBQUc1c0IsR0FsRVp0MUIsRUFBUTgzSCxVQUFZLFNBQW1CQyxHQUNyQyxHQUF3QixtQkFBYkEsRUFDVCxNQUFNLElBQUlsc0csVUFBVSxvREFFdEIsR0FBSThyRyxHQUE0QkksRUFBU0osR0FBMkIsQ0FDbEUsSUFBSTF0RyxFQUNKLEdBQWtCLG1CQURkQSxFQUFLOHRHLEVBQVNKLElBRWhCLE1BQU0sSUFBSTlyRyxVQUFVLGlFQUt0QixPQUhBemxCLE9BQU9rb0IsZUFBZXJFLEVBQUkwdEcsRUFBMEIsQ0FDbER2MUgsTUFBTzZuQixFQUFJc0UsWUFBWSxFQUFPRSxVQUFVLEVBQU9ELGNBQWMsSUFFeER2RSxFQUdULFNBQVNBLElBUVAsSUFQQSxJQUFJK3RHLEVBQWdCQyxFQUNoQmxvRCxFQUFVLElBQUl2akQsU0FBUSxTQUFVQyxFQUFTcStELEdBQzNDa3RDLEVBQWlCdnJHLEVBQ2pCd3JHLEVBQWdCbnRDLEtBR2R0bUYsRUFBTyxHQUNGMEgsRUFBSSxFQUFHQSxFQUFJckcsVUFBVTVELE9BQVFpSyxJQUNwQzFILEVBQUttQixLQUFLRSxVQUFVcUcsSUFFdEIxSCxFQUFLbUIsTUFBSyxTQUFVaUYsRUFBS3hJLEdBQ25Cd0ksRUFDRnF0SCxFQUFjcnRILEdBRWRvdEgsRUFBZTUxSCxNQUluQixJQUNFMjFILEVBQVNueUgsTUFBTWpGLEtBQU02RCxHQUNyQixNQUFPb0csR0FDUHF0SCxFQUFjcnRILEdBR2hCLE9BQU9tbEUsRUFRVCxPQUxBM3BFLE9BQU8rcEIsZUFBZWxHLEVBQUk3akIsT0FBT2lxQixlQUFlMG5HLElBRTVDSixHQUEwQnZ4SCxPQUFPa29CLGVBQWVyRSxFQUFJMHRHLEVBQTBCLENBQ2hGdjFILE1BQU82bkIsRUFBSXNFLFlBQVksRUFBT0UsVUFBVSxFQUFPRCxjQUFjLElBRXhEcG9CLE9BQU82a0YsaUJBQ1poaEUsRUFDQTI2RCxFQUEwQm16QyxLQUk5Qi8zSCxFQUFRODNILFVBQVUzakcsT0FBU3dqRyxFQWlEM0IzM0gsRUFBUWs0SCxZQWxDUixTQUFxQkgsR0FDbkIsR0FBd0IsbUJBQWJBLEVBQ1QsTUFBTSxJQUFJbHNHLFVBQVUsb0RBTXRCLFNBQVNzc0csSUFFUCxJQURBLElBQUkzekgsRUFBTyxHQUNGMEgsRUFBSSxFQUFHQSxFQUFJckcsVUFBVTVELE9BQVFpSyxJQUNwQzFILEVBQUttQixLQUFLRSxVQUFVcUcsSUFHdEIsSUFBSWtzSCxFQUFVNXpILEVBQUswdUIsTUFDbkIsR0FBdUIsbUJBQVprbEcsRUFDVCxNQUFNLElBQUl2c0csVUFBVSw4Q0FFdEIsSUFBSXBZLEVBQU85UyxLQUNQdWhELEVBQUssV0FDUCxPQUFPazJFLEVBQVF4eUgsTUFBTTZOLEVBQU01TixZQUk3Qmt5SCxFQUFTbnlILE1BQU1qRixLQUFNNkQsR0FDbEI0bkIsTUFBSyxTQUFTM1gsR0FBT29XLEVBQVE2dkIsU0FBU3dILEVBQUdsM0IsS0FBSyxLQUFNLEtBQU12VyxPQUNyRCxTQUFTNGpILEdBQU94dEcsRUFBUTZ2QixTQUFTazlFLEVBQXNCNXNHLEtBQUssS0FBTXF0RyxFQUFLbjJFLE9BTWpGLE9BSEE5N0MsT0FBTytwQixlQUFlZ29HLEVBQWUveEgsT0FBT2lxQixlQUFlMG5HLElBQzNEM3hILE9BQU82a0YsaUJBQWlCa3RDLEVBQ0F2ekMsRUFBMEJtekMsSUFDM0NJLEksNEJDdHNCVCxJQUFJeDBILEVBQVUsRUFBUSxNQUNsQnl5RyxFQUF1QixFQUFRLE1BQy9CWixFQUFZLEVBQVEsTUFFcEJELEVBQVlDLEVBQVUsNkJBRXRCRixFQURhLEVBQVEsS0FBUixJQUNnRCxpQkFBdkJodEYsT0FBTzI3RCxZQUU3Q295QixFQUFjRCxJQUVkRSxFQUFTZCxFQUFVLDBCQUNuQmUsRUFBWSxHQUNaQyxFQUFPLEVBQVEsTUFDZm5tRixFQUFpQmpxQixPQUFPaXFCLGVBQ3hCaWxGLEdBQWtCa0IsR0FBUW5tRixHQUM3QjFzQixFQUFRMHlHLEdBQWEsU0FBVUksR0FDOUIsR0FBa0MsbUJBQXZCLEVBQUExekYsRUFBTzB6RixHQUE0QixDQUM3QyxJQUFJL2dGLEVBQU0sSUFBSSxFQUFBM1MsRUFBTzB6RixHQUNyQixLQUFNbnVGLE9BQU8yN0QsZUFBZXZ1RCxHQUMzQixNQUFNLElBQUkyMUUsVUFBVSx1REFBeURvTCxFQUFhLG9EQUUzRixJQUFJbDhDLEVBQVFscUMsRUFBZXFGLEdBQ3ZCN0csRUFBYTJuRixFQUFLajhDLEVBQU9qeUMsT0FBTzI3RCxhQUNwQyxJQUFLcDFELEVBQVksQ0FDaEIsSUFBSXVqRSxFQUFhL2hFLEVBQWVrcUMsR0FDaEMxckMsRUFBYTJuRixFQUFLcGtCLEVBQVk5cEUsT0FBTzI3RCxhQUV0Q3N5QixFQUFVRSxHQUFjNW5GLEVBQVdTLFFBS3RDLElBZUk0ckQsRUFBZSxFQUFRLE1BRTNCNzFFLEVBQU9yRixRQUFVLFNBQXlCb0MsR0FDekMsUUFBSzg0RSxFQUFhOTRFLEtBQ2JrekcsRUFuQmUsU0FBMkJsekcsR0FDL0MsSUFBSWsySCxHQUFZLEVBV2hCLE9BVkEzMEgsRUFBUTR5RyxHQUFXLFNBQVVJLEVBQVFGLEdBQ3BDLElBQUs2aEIsRUFDSixJQUNDLElBQUk3M0gsRUFBT2syRyxFQUFPejFHLEtBQUtrQixHQUNuQjNCLElBQVNnMkcsSUFDWjZoQixFQUFZNzNILEdBRVosTUFBTzhHLFFBR0ord0gsRUFRQTFoQixDQUFleDBHLEdBRFFrMEcsRUFBT2YsRUFBVW56RyxHQUFRLEdBQUksTSx3SENwRHhEbTJILEVBQTJCLEdBRy9CLFNBQVNDLEVBQW9CQyxHQUU1QixJQUFJQyxFQUFlSCxFQUF5QkUsR0FDNUMsUUFBcUJ4dkgsSUFBakJ5dkgsRUFDSCxPQUFPQSxFQUFhMTRILFFBR3JCLElBQUlxRixFQUFTa3pILEVBQXlCRSxHQUFZLENBQ2pEdHBILEdBQUlzcEgsRUFDSkUsUUFBUSxFQUNSMzRILFFBQVMsSUFVVixPQU5BNDRILEVBQW9CSCxHQUFVdjNILEtBQUttRSxFQUFPckYsUUFBU3FGLEVBQVFBLEVBQU9yRixRQUFTdzRILEdBRzNFbnpILEVBQU9zekgsUUFBUyxFQUdUdHpILEVBQU9yRixRQ3ZCZnc0SCxFQUFvQjE1RyxFQUFLelosSUFDeEIsSUFBSXN4RyxFQUFTdHhHLEdBQVVBLEVBQU93ekgsV0FDN0IsSUFBT3h6SCxFQUFpQixRQUN4QixJQUFNLEVBRVAsT0FEQW16SCxFQUFvQnI4RixFQUFFdzZFLEVBQVEsQ0FBRWpqRyxFQUFHaWpHLElBQzVCQSxHQ0xSNmhCLEVBQW9CcjhGLEVBQUksQ0FBQ244QixFQUFTODRILEtBQ2pDLElBQUksSUFBSTl6SCxLQUFPOHpILEVBQ1hOLEVBQW9CNWdILEVBQUVraEgsRUFBWTl6SCxLQUFTd3pILEVBQW9CNWdILEVBQUU1WCxFQUFTZ0YsSUFDNUVvQixPQUFPa29CLGVBQWV0dUIsRUFBU2dGLEVBQUssQ0FBRXVwQixZQUFZLEVBQU1lLElBQUt3cEcsRUFBVzl6SCxNQ0ozRXd6SCxFQUFvQnoxRyxFQUFJLFdBQ3ZCLEdBQTBCLGlCQUFmK2dFLFdBQXlCLE9BQU9BLFdBQzNDLElBQ0MsT0FBT25qRixNQUFRLElBQUl5dUIsU0FBUyxjQUFiLEdBQ2QsTUFBTzduQixHQUNSLEdBQXNCLGlCQUFYNEosT0FBcUIsT0FBT0EsUUFMakIsR0NBeEJxbkgsRUFBb0I1Z0gsRUFBSSxDQUFDL1MsRUFBS1ksSUFBVVcsT0FBT3hGLFVBQVVTLGVBQWVILEtBQUsyRCxFQUFLWSxHQ0FsRit5SCxFQUFvQk8sSUFBTzF6SCxJQUMxQkEsRUFBTzJ6SCxNQUFRLEdBQ1YzekgsRUFBT2YsV0FBVWUsRUFBT2YsU0FBVyxJQUNqQ2UsR0NBa0JtekgsRUFBb0IsTyIsImZpbGUiOiJldWRnYy5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuY29uc3QgYXNuMSA9IGV4cG9ydHM7XG5cbmFzbjEuYmlnbnVtID0gcmVxdWlyZSgnYm4uanMnKTtcblxuYXNuMS5kZWZpbmUgPSByZXF1aXJlKCcuL2FzbjEvYXBpJykuZGVmaW5lO1xuYXNuMS5iYXNlID0gcmVxdWlyZSgnLi9hc24xL2Jhc2UnKTtcbmFzbjEuY29uc3RhbnRzID0gcmVxdWlyZSgnLi9hc24xL2NvbnN0YW50cycpO1xuYXNuMS5kZWNvZGVycyA9IHJlcXVpcmUoJy4vYXNuMS9kZWNvZGVycycpO1xuYXNuMS5lbmNvZGVycyA9IHJlcXVpcmUoJy4vYXNuMS9lbmNvZGVycycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBlbmNvZGVycyA9IHJlcXVpcmUoJy4vZW5jb2RlcnMnKTtcbmNvbnN0IGRlY29kZXJzID0gcmVxdWlyZSgnLi9kZWNvZGVycycpO1xuY29uc3QgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5jb25zdCBhcGkgPSBleHBvcnRzO1xuXG5hcGkuZGVmaW5lID0gZnVuY3Rpb24gZGVmaW5lKG5hbWUsIGJvZHkpIHtcbiAgcmV0dXJuIG5ldyBFbnRpdHkobmFtZSwgYm9keSk7XG59O1xuXG5mdW5jdGlvbiBFbnRpdHkobmFtZSwgYm9keSkge1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmJvZHkgPSBib2R5O1xuXG4gIHRoaXMuZGVjb2RlcnMgPSB7fTtcbiAgdGhpcy5lbmNvZGVycyA9IHt9O1xufVxuXG5FbnRpdHkucHJvdG90eXBlLl9jcmVhdGVOYW1lZCA9IGZ1bmN0aW9uIGNyZWF0ZU5hbWVkKEJhc2UpIHtcbiAgY29uc3QgbmFtZSA9IHRoaXMubmFtZTtcblxuICBmdW5jdGlvbiBHZW5lcmF0ZWQoZW50aXR5KSB7XG4gICAgdGhpcy5faW5pdE5hbWVkKGVudGl0eSwgbmFtZSk7XG4gIH1cbiAgaW5oZXJpdHMoR2VuZXJhdGVkLCBCYXNlKTtcbiAgR2VuZXJhdGVkLnByb3RvdHlwZS5faW5pdE5hbWVkID0gZnVuY3Rpb24gX2luaXROYW1lZChlbnRpdHksIG5hbWUpIHtcbiAgICBCYXNlLmNhbGwodGhpcywgZW50aXR5LCBuYW1lKTtcbiAgfTtcblxuICByZXR1cm4gbmV3IEdlbmVyYXRlZCh0aGlzKTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuX2dldERlY29kZXIgPSBmdW5jdGlvbiBfZ2V0RGVjb2RlcihlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICdkZXInO1xuICAvLyBMYXppbHkgY3JlYXRlIGRlY29kZXJcbiAgaWYgKCF0aGlzLmRlY29kZXJzLmhhc093blByb3BlcnR5KGVuYykpXG4gICAgdGhpcy5kZWNvZGVyc1tlbmNdID0gdGhpcy5fY3JlYXRlTmFtZWQoZGVjb2RlcnNbZW5jXSk7XG4gIHJldHVybiB0aGlzLmRlY29kZXJzW2VuY107XG59O1xuXG5FbnRpdHkucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShkYXRhLCBlbmMsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHRoaXMuX2dldERlY29kZXIoZW5jKS5kZWNvZGUoZGF0YSwgb3B0aW9ucyk7XG59O1xuXG5FbnRpdHkucHJvdG90eXBlLl9nZXRFbmNvZGVyID0gZnVuY3Rpb24gX2dldEVuY29kZXIoZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAnZGVyJztcbiAgLy8gTGF6aWx5IGNyZWF0ZSBlbmNvZGVyXG4gIGlmICghdGhpcy5lbmNvZGVycy5oYXNPd25Qcm9wZXJ0eShlbmMpKVxuICAgIHRoaXMuZW5jb2RlcnNbZW5jXSA9IHRoaXMuX2NyZWF0ZU5hbWVkKGVuY29kZXJzW2VuY10pO1xuICByZXR1cm4gdGhpcy5lbmNvZGVyc1tlbmNdO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgZW5jLCAvKiBpbnRlcm5hbCAqLyByZXBvcnRlcikge1xuICByZXR1cm4gdGhpcy5fZ2V0RW5jb2RlcihlbmMpLmVuY29kZShkYXRhLCByZXBvcnRlcik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5jb25zdCBSZXBvcnRlciA9IHJlcXVpcmUoJy4uL2Jhc2UvcmVwb3J0ZXInKS5SZXBvcnRlcjtcbmNvbnN0IEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmVyLWJ1ZmZlcicpLkJ1ZmZlcjtcblxuZnVuY3Rpb24gRGVjb2RlckJ1ZmZlcihiYXNlLCBvcHRpb25zKSB7XG4gIFJlcG9ydGVyLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJhc2UpKSB7XG4gICAgdGhpcy5lcnJvcignSW5wdXQgbm90IEJ1ZmZlcicpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoaXMuYmFzZSA9IGJhc2U7XG4gIHRoaXMub2Zmc2V0ID0gMDtcbiAgdGhpcy5sZW5ndGggPSBiYXNlLmxlbmd0aDtcbn1cbmluaGVyaXRzKERlY29kZXJCdWZmZXIsIFJlcG9ydGVyKTtcbmV4cG9ydHMuRGVjb2RlckJ1ZmZlciA9IERlY29kZXJCdWZmZXI7XG5cbkRlY29kZXJCdWZmZXIuaXNEZWNvZGVyQnVmZmVyID0gZnVuY3Rpb24gaXNEZWNvZGVyQnVmZmVyKGRhdGEpIHtcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBEZWNvZGVyQnVmZmVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBPciBhY2NlcHQgY29tcGF0aWJsZSBBUElcbiAgY29uc3QgaXNDb21wYXRpYmxlID0gdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmXG4gICAgQnVmZmVyLmlzQnVmZmVyKGRhdGEuYmFzZSkgJiZcbiAgICBkYXRhLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdEZWNvZGVyQnVmZmVyJyAmJlxuICAgIHR5cGVvZiBkYXRhLm9mZnNldCA9PT0gJ251bWJlcicgJiZcbiAgICB0eXBlb2YgZGF0YS5sZW5ndGggPT09ICdudW1iZXInICYmXG4gICAgdHlwZW9mIGRhdGEuc2F2ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBkYXRhLnJlc3RvcmUgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgZGF0YS5pc0VtcHR5ID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIGRhdGEucmVhZFVJbnQ4ID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIGRhdGEuc2tpcCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBkYXRhLnJhdyA9PT0gJ2Z1bmN0aW9uJztcblxuICByZXR1cm4gaXNDb21wYXRpYmxlO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uIHNhdmUoKSB7XG4gIHJldHVybiB7IG9mZnNldDogdGhpcy5vZmZzZXQsIHJlcG9ydGVyOiBSZXBvcnRlci5wcm90b3R5cGUuc2F2ZS5jYWxsKHRoaXMpIH07XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yZXN0b3JlID0gZnVuY3Rpb24gcmVzdG9yZShzYXZlKSB7XG4gIC8vIFJldHVybiBza2lwcGVkIGRhdGFcbiAgY29uc3QgcmVzID0gbmV3IERlY29kZXJCdWZmZXIodGhpcy5iYXNlKTtcbiAgcmVzLm9mZnNldCA9IHNhdmUub2Zmc2V0O1xuICByZXMubGVuZ3RoID0gdGhpcy5vZmZzZXQ7XG5cbiAgdGhpcy5vZmZzZXQgPSBzYXZlLm9mZnNldDtcbiAgUmVwb3J0ZXIucHJvdG90eXBlLnJlc3RvcmUuY2FsbCh0aGlzLCBzYXZlLnJlcG9ydGVyKTtcblxuICByZXR1cm4gcmVzO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uIGlzRW1wdHkoKSB7XG4gIHJldHVybiB0aGlzLm9mZnNldCA9PT0gdGhpcy5sZW5ndGg7XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDgoZmFpbCkge1xuICBpZiAodGhpcy5vZmZzZXQgKyAxIDw9IHRoaXMubGVuZ3RoKVxuICAgIHJldHVybiB0aGlzLmJhc2UucmVhZFVJbnQ4KHRoaXMub2Zmc2V0KyssIHRydWUpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuZXJyb3IoZmFpbCB8fCAnRGVjb2RlckJ1ZmZlciBvdmVycnVuJyk7XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5za2lwID0gZnVuY3Rpb24gc2tpcChieXRlcywgZmFpbCkge1xuICBpZiAoISh0aGlzLm9mZnNldCArIGJ5dGVzIDw9IHRoaXMubGVuZ3RoKSlcbiAgICByZXR1cm4gdGhpcy5lcnJvcihmYWlsIHx8ICdEZWNvZGVyQnVmZmVyIG92ZXJydW4nKTtcblxuICBjb25zdCByZXMgPSBuZXcgRGVjb2RlckJ1ZmZlcih0aGlzLmJhc2UpO1xuXG4gIC8vIFNoYXJlIHJlcG9ydGVyIHN0YXRlXG4gIHJlcy5fcmVwb3J0ZXJTdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgcmVzLm9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICByZXMubGVuZ3RoID0gdGhpcy5vZmZzZXQgKyBieXRlcztcbiAgdGhpcy5vZmZzZXQgKz0gYnl0ZXM7XG4gIHJldHVybiByZXM7XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yYXcgPSBmdW5jdGlvbiByYXcoc2F2ZSkge1xuICByZXR1cm4gdGhpcy5iYXNlLnNsaWNlKHNhdmUgPyBzYXZlLm9mZnNldCA6IHRoaXMub2Zmc2V0LCB0aGlzLmxlbmd0aCk7XG59O1xuXG5mdW5jdGlvbiBFbmNvZGVyQnVmZmVyKHZhbHVlLCByZXBvcnRlcikge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlLm1hcChmdW5jdGlvbihpdGVtKSB7XG4gICAgICBpZiAoIUVuY29kZXJCdWZmZXIuaXNFbmNvZGVyQnVmZmVyKGl0ZW0pKVxuICAgICAgICBpdGVtID0gbmV3IEVuY29kZXJCdWZmZXIoaXRlbSwgcmVwb3J0ZXIpO1xuICAgICAgdGhpcy5sZW5ndGggKz0gaXRlbS5sZW5ndGg7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9LCB0aGlzKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKCEoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAweGZmKSlcbiAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignbm9uLWJ5dGUgRW5jb2RlckJ1ZmZlciB2YWx1ZScpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IDE7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbHVlKTtcbiAgfSBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMubGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVW5zdXBwb3J0ZWQgdHlwZTogJyArIHR5cGVvZiB2YWx1ZSk7XG4gIH1cbn1cbmV4cG9ydHMuRW5jb2RlckJ1ZmZlciA9IEVuY29kZXJCdWZmZXI7XG5cbkVuY29kZXJCdWZmZXIuaXNFbmNvZGVyQnVmZmVyID0gZnVuY3Rpb24gaXNFbmNvZGVyQnVmZmVyKGRhdGEpIHtcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBFbmNvZGVyQnVmZmVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBPciBhY2NlcHQgY29tcGF0aWJsZSBBUElcbiAgY29uc3QgaXNDb21wYXRpYmxlID0gdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmXG4gICAgZGF0YS5jb25zdHJ1Y3Rvci5uYW1lID09PSAnRW5jb2RlckJ1ZmZlcicgJiZcbiAgICB0eXBlb2YgZGF0YS5sZW5ndGggPT09ICdudW1iZXInICYmXG4gICAgdHlwZW9mIGRhdGEuam9pbiA9PT0gJ2Z1bmN0aW9uJztcblxuICByZXR1cm4gaXNDb21wYXRpYmxlO1xufTtcblxuRW5jb2RlckJ1ZmZlci5wcm90b3R5cGUuam9pbiA9IGZ1bmN0aW9uIGpvaW4ob3V0LCBvZmZzZXQpIHtcbiAgaWYgKCFvdXQpXG4gICAgb3V0ID0gQnVmZmVyLmFsbG9jKHRoaXMubGVuZ3RoKTtcbiAgaWYgKCFvZmZzZXQpXG4gICAgb2Zmc2V0ID0gMDtcblxuICBpZiAodGhpcy5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIG91dDtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgIHRoaXMudmFsdWUuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgICBpdGVtLmpvaW4ob3V0LCBvZmZzZXQpO1xuICAgICAgb2Zmc2V0ICs9IGl0ZW0ubGVuZ3RoO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ251bWJlcicpXG4gICAgICBvdXRbb2Zmc2V0XSA9IHRoaXMudmFsdWU7XG4gICAgZWxzZSBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgb3V0LndyaXRlKHRoaXMudmFsdWUsIG9mZnNldCk7XG4gICAgZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHRoaXMudmFsdWUpKVxuICAgICAgdGhpcy52YWx1ZS5jb3B5KG91dCwgb2Zmc2V0KTtcbiAgICBvZmZzZXQgKz0gdGhpcy5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gb3V0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgYmFzZSA9IGV4cG9ydHM7XG5cbmJhc2UuUmVwb3J0ZXIgPSByZXF1aXJlKCcuL3JlcG9ydGVyJykuUmVwb3J0ZXI7XG5iYXNlLkRlY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuL2J1ZmZlcicpLkRlY29kZXJCdWZmZXI7XG5iYXNlLkVuY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuL2J1ZmZlcicpLkVuY29kZXJCdWZmZXI7XG5iYXNlLk5vZGUgPSByZXF1aXJlKCcuL25vZGUnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgUmVwb3J0ZXIgPSByZXF1aXJlKCcuLi9iYXNlL3JlcG9ydGVyJykuUmVwb3J0ZXI7XG5jb25zdCBFbmNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi4vYmFzZS9idWZmZXInKS5FbmNvZGVyQnVmZmVyO1xuY29uc3QgRGVjb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4uL2Jhc2UvYnVmZmVyJykuRGVjb2RlckJ1ZmZlcjtcbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxuLy8gU3VwcG9ydGVkIHRhZ3NcbmNvbnN0IHRhZ3MgPSBbXG4gICdzZXEnLCAnc2Vxb2YnLCAnc2V0JywgJ3NldG9mJywgJ29iamlkJywgJ2Jvb2wnLFxuICAnZ2VudGltZScsICd1dGN0aW1lJywgJ251bGxfJywgJ2VudW0nLCAnaW50JywgJ29iakRlc2MnLFxuICAnYml0c3RyJywgJ2JtcHN0cicsICdjaGFyc3RyJywgJ2dlbnN0cicsICdncmFwaHN0cicsICdpYTVzdHInLCAnaXNvNjQ2c3RyJyxcbiAgJ251bXN0cicsICdvY3RzdHInLCAncHJpbnRzdHInLCAndDYxc3RyJywgJ3VuaXN0cicsICd1dGY4c3RyJywgJ3ZpZGVvc3RyJ1xuXTtcblxuLy8gUHVibGljIG1ldGhvZHMgbGlzdFxuY29uc3QgbWV0aG9kcyA9IFtcbiAgJ2tleScsICdvYmonLCAndXNlJywgJ29wdGlvbmFsJywgJ2V4cGxpY2l0JywgJ2ltcGxpY2l0JywgJ2RlZicsICdjaG9pY2UnLFxuICAnYW55JywgJ2NvbnRhaW5zJ1xuXS5jb25jYXQodGFncyk7XG5cbi8vIE92ZXJyaWRlZCBtZXRob2RzIGxpc3RcbmNvbnN0IG92ZXJyaWRlZCA9IFtcbiAgJ19wZWVrVGFnJywgJ19kZWNvZGVUYWcnLCAnX3VzZScsXG4gICdfZGVjb2RlU3RyJywgJ19kZWNvZGVPYmppZCcsICdfZGVjb2RlVGltZScsXG4gICdfZGVjb2RlTnVsbCcsICdfZGVjb2RlSW50JywgJ19kZWNvZGVCb29sJywgJ19kZWNvZGVMaXN0JyxcblxuICAnX2VuY29kZUNvbXBvc2l0ZScsICdfZW5jb2RlU3RyJywgJ19lbmNvZGVPYmppZCcsICdfZW5jb2RlVGltZScsXG4gICdfZW5jb2RlTnVsbCcsICdfZW5jb2RlSW50JywgJ19lbmNvZGVCb29sJ1xuXTtcblxuZnVuY3Rpb24gTm9kZShlbmMsIHBhcmVudCwgbmFtZSkge1xuICBjb25zdCBzdGF0ZSA9IHt9O1xuICB0aGlzLl9iYXNlU3RhdGUgPSBzdGF0ZTtcblxuICBzdGF0ZS5uYW1lID0gbmFtZTtcbiAgc3RhdGUuZW5jID0gZW5jO1xuXG4gIHN0YXRlLnBhcmVudCA9IHBhcmVudCB8fCBudWxsO1xuICBzdGF0ZS5jaGlsZHJlbiA9IG51bGw7XG5cbiAgLy8gU3RhdGVcbiAgc3RhdGUudGFnID0gbnVsbDtcbiAgc3RhdGUuYXJncyA9IG51bGw7XG4gIHN0YXRlLnJldmVyc2VBcmdzID0gbnVsbDtcbiAgc3RhdGUuY2hvaWNlID0gbnVsbDtcbiAgc3RhdGUub3B0aW9uYWwgPSBmYWxzZTtcbiAgc3RhdGUuYW55ID0gZmFsc2U7XG4gIHN0YXRlLm9iaiA9IGZhbHNlO1xuICBzdGF0ZS51c2UgPSBudWxsO1xuICBzdGF0ZS51c2VEZWNvZGVyID0gbnVsbDtcbiAgc3RhdGUua2V5ID0gbnVsbDtcbiAgc3RhdGVbJ2RlZmF1bHQnXSA9IG51bGw7XG4gIHN0YXRlLmV4cGxpY2l0ID0gbnVsbDtcbiAgc3RhdGUuaW1wbGljaXQgPSBudWxsO1xuICBzdGF0ZS5jb250YWlucyA9IG51bGw7XG5cbiAgLy8gU2hvdWxkIGNyZWF0ZSBuZXcgaW5zdGFuY2Ugb24gZWFjaCBtZXRob2RcbiAgaWYgKCFzdGF0ZS5wYXJlbnQpIHtcbiAgICBzdGF0ZS5jaGlsZHJlbiA9IFtdO1xuICAgIHRoaXMuX3dyYXAoKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBOb2RlO1xuXG5jb25zdCBzdGF0ZVByb3BzID0gW1xuICAnZW5jJywgJ3BhcmVudCcsICdjaGlsZHJlbicsICd0YWcnLCAnYXJncycsICdyZXZlcnNlQXJncycsICdjaG9pY2UnLFxuICAnb3B0aW9uYWwnLCAnYW55JywgJ29iaicsICd1c2UnLCAnYWx0ZXJlZFVzZScsICdrZXknLCAnZGVmYXVsdCcsICdleHBsaWNpdCcsXG4gICdpbXBsaWNpdCcsICdjb250YWlucydcbl07XG5cbk5vZGUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUoKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICBjb25zdCBjc3RhdGUgPSB7fTtcbiAgc3RhdGVQcm9wcy5mb3JFYWNoKGZ1bmN0aW9uKHByb3ApIHtcbiAgICBjc3RhdGVbcHJvcF0gPSBzdGF0ZVtwcm9wXTtcbiAgfSk7XG4gIGNvbnN0IHJlcyA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKGNzdGF0ZS5wYXJlbnQpO1xuICByZXMuX2Jhc2VTdGF0ZSA9IGNzdGF0ZTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbk5vZGUucHJvdG90eXBlLl93cmFwID0gZnVuY3Rpb24gd3JhcCgpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIG1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICB0aGlzW21ldGhvZF0gPSBmdW5jdGlvbiBfd3JhcHBlZE1ldGhvZCgpIHtcbiAgICAgIGNvbnN0IGNsb25lID0gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyk7XG4gICAgICBzdGF0ZS5jaGlsZHJlbi5wdXNoKGNsb25lKTtcbiAgICAgIHJldHVybiBjbG9uZVttZXRob2RdLmFwcGx5KGNsb25lLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sIHRoaXMpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0KGJvZHkpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnBhcmVudCA9PT0gbnVsbCk7XG4gIGJvZHkuY2FsbCh0aGlzKTtcblxuICAvLyBGaWx0ZXIgY2hpbGRyZW5cbiAgc3RhdGUuY2hpbGRyZW4gPSBzdGF0ZS5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICByZXR1cm4gY2hpbGQuX2Jhc2VTdGF0ZS5wYXJlbnQgPT09IHRoaXM7XG4gIH0sIHRoaXMpO1xuICBhc3NlcnQuZXF1YWwoc3RhdGUuY2hpbGRyZW4ubGVuZ3RoLCAxLCAnUm9vdCBub2RlIGNhbiBoYXZlIG9ubHkgb25lIGNoaWxkJyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fdXNlQXJncyA9IGZ1bmN0aW9uIHVzZUFyZ3MoYXJncykge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAvLyBGaWx0ZXIgY2hpbGRyZW4gYW5kIGFyZ3NcbiAgY29uc3QgY2hpbGRyZW4gPSBhcmdzLmZpbHRlcihmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gYXJnIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3RvcjtcbiAgfSwgdGhpcyk7XG4gIGFyZ3MgPSBhcmdzLmZpbHRlcihmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gIShhcmcgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfSwgdGhpcyk7XG5cbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCAhPT0gMCkge1xuICAgIGFzc2VydChzdGF0ZS5jaGlsZHJlbiA9PT0gbnVsbCk7XG4gICAgc3RhdGUuY2hpbGRyZW4gPSBjaGlsZHJlbjtcblxuICAgIC8vIFJlcGxhY2UgcGFyZW50IHRvIG1haW50YWluIGJhY2t3YXJkIGxpbmtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICBjaGlsZC5fYmFzZVN0YXRlLnBhcmVudCA9IHRoaXM7XG4gICAgfSwgdGhpcyk7XG4gIH1cbiAgaWYgKGFyZ3MubGVuZ3RoICE9PSAwKSB7XG4gICAgYXNzZXJ0KHN0YXRlLmFyZ3MgPT09IG51bGwpO1xuICAgIHN0YXRlLmFyZ3MgPSBhcmdzO1xuICAgIHN0YXRlLnJldmVyc2VBcmdzID0gYXJncy5tYXAoZnVuY3Rpb24oYXJnKSB7XG4gICAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ29iamVjdCcgfHwgYXJnLmNvbnN0cnVjdG9yICE9PSBPYmplY3QpXG4gICAgICAgIHJldHVybiBhcmc7XG5cbiAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoYXJnKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBpZiAoa2V5ID09IChrZXkgfCAwKSlcbiAgICAgICAgICBrZXkgfD0gMDtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBhcmdba2V5XTtcbiAgICAgICAgcmVzW3ZhbHVlXSA9IGtleTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9KTtcbiAgfVxufTtcblxuLy9cbi8vIE92ZXJyaWRlZCBtZXRob2RzXG4vL1xuXG5vdmVycmlkZWQuZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgTm9kZS5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIF9vdmVycmlkZWQoKSB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1ldGhvZCArICcgbm90IGltcGxlbWVudGVkIGZvciBlbmNvZGluZzogJyArIHN0YXRlLmVuYyk7XG4gIH07XG59KTtcblxuLy9cbi8vIFB1YmxpYyBtZXRob2RzXG4vL1xuXG50YWdzLmZvckVhY2goZnVuY3Rpb24odGFnKSB7XG4gIE5vZGUucHJvdG90eXBlW3RhZ10gPSBmdW5jdGlvbiBfdGFnTWV0aG9kKCkge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICAgIGNvbnN0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgYXNzZXJ0KHN0YXRlLnRhZyA9PT0gbnVsbCk7XG4gICAgc3RhdGUudGFnID0gdGFnO1xuXG4gICAgdGhpcy5fdXNlQXJncyhhcmdzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xufSk7XG5cbk5vZGUucHJvdG90eXBlLnVzZSA9IGZ1bmN0aW9uIHVzZShpdGVtKSB7XG4gIGFzc2VydChpdGVtKTtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnVzZSA9PT0gbnVsbCk7XG4gIHN0YXRlLnVzZSA9IGl0ZW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5vcHRpb25hbCA9IGZ1bmN0aW9uIG9wdGlvbmFsKCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBzdGF0ZS5vcHRpb25hbCA9IHRydWU7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5kZWYgPSBmdW5jdGlvbiBkZWYodmFsKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZVsnZGVmYXVsdCddID09PSBudWxsKTtcbiAgc3RhdGVbJ2RlZmF1bHQnXSA9IHZhbDtcbiAgc3RhdGUub3B0aW9uYWwgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuZXhwbGljaXQgPSBmdW5jdGlvbiBleHBsaWNpdChudW0pIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLmV4cGxpY2l0ID09PSBudWxsICYmIHN0YXRlLmltcGxpY2l0ID09PSBudWxsKTtcbiAgc3RhdGUuZXhwbGljaXQgPSBudW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5pbXBsaWNpdCA9IGZ1bmN0aW9uIGltcGxpY2l0KG51bSkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUuZXhwbGljaXQgPT09IG51bGwgJiYgc3RhdGUuaW1wbGljaXQgPT09IG51bGwpO1xuICBzdGF0ZS5pbXBsaWNpdCA9IG51bTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLm9iaiA9IGZ1bmN0aW9uIG9iaigpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIGNvbnN0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gIHN0YXRlLm9iaiA9IHRydWU7XG5cbiAgaWYgKGFyZ3MubGVuZ3RoICE9PSAwKVxuICAgIHRoaXMuX3VzZUFyZ3MoYXJncyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5rZXkgPSBmdW5jdGlvbiBrZXkobmV3S2V5KSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5rZXkgPT09IG51bGwpO1xuICBzdGF0ZS5rZXkgPSBuZXdLZXk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5hbnkgPSBmdW5jdGlvbiBhbnkoKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHN0YXRlLmFueSA9IHRydWU7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5jaG9pY2UgPSBmdW5jdGlvbiBjaG9pY2Uob2JqKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5jaG9pY2UgPT09IG51bGwpO1xuICBzdGF0ZS5jaG9pY2UgPSBvYmo7XG4gIHRoaXMuX3VzZUFyZ3MoT2JqZWN0LmtleXMob2JqKS5tYXAoZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIG9ialtrZXldO1xuICB9KSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIGNvbnRhaW5zKGl0ZW0pIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnVzZSA9PT0gbnVsbCk7XG4gIHN0YXRlLmNvbnRhaW5zID0gaXRlbTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8vXG4vLyBEZWNvZGluZ1xuLy9cblxuTm9kZS5wcm90b3R5cGUuX2RlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShpbnB1dCwgb3B0aW9ucykge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAvLyBEZWNvZGUgcm9vdCBub2RlXG4gIGlmIChzdGF0ZS5wYXJlbnQgPT09IG51bGwpXG4gICAgcmV0dXJuIGlucHV0LndyYXBSZXN1bHQoc3RhdGUuY2hpbGRyZW5bMF0uX2RlY29kZShpbnB1dCwgb3B0aW9ucykpO1xuXG4gIGxldCByZXN1bHQgPSBzdGF0ZVsnZGVmYXVsdCddO1xuICBsZXQgcHJlc2VudCA9IHRydWU7XG5cbiAgbGV0IHByZXZLZXkgPSBudWxsO1xuICBpZiAoc3RhdGUua2V5ICE9PSBudWxsKVxuICAgIHByZXZLZXkgPSBpbnB1dC5lbnRlcktleShzdGF0ZS5rZXkpO1xuXG4gIC8vIENoZWNrIGlmIHRhZyBpcyB0aGVyZVxuICBpZiAoc3RhdGUub3B0aW9uYWwpIHtcbiAgICBsZXQgdGFnID0gbnVsbDtcbiAgICBpZiAoc3RhdGUuZXhwbGljaXQgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS5leHBsaWNpdDtcbiAgICBlbHNlIGlmIChzdGF0ZS5pbXBsaWNpdCAhPT0gbnVsbClcbiAgICAgIHRhZyA9IHN0YXRlLmltcGxpY2l0O1xuICAgIGVsc2UgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIHRhZyA9IHN0YXRlLnRhZztcblxuICAgIGlmICh0YWcgPT09IG51bGwgJiYgIXN0YXRlLmFueSkge1xuICAgICAgLy8gVHJpYWwgYW5kIEVycm9yXG4gICAgICBjb25zdCBzYXZlID0gaW5wdXQuc2F2ZSgpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHN0YXRlLmNob2ljZSA9PT0gbnVsbClcbiAgICAgICAgICB0aGlzLl9kZWNvZGVHZW5lcmljKHN0YXRlLnRhZywgaW5wdXQsIG9wdGlvbnMpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgdGhpcy5fZGVjb2RlQ2hvaWNlKGlucHV0LCBvcHRpb25zKTtcbiAgICAgICAgcHJlc2VudCA9IHRydWU7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHByZXNlbnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlucHV0LnJlc3RvcmUoc2F2ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZXNlbnQgPSB0aGlzLl9wZWVrVGFnKGlucHV0LCB0YWcsIHN0YXRlLmFueSk7XG5cbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKHByZXNlbnQpKVxuICAgICAgICByZXR1cm4gcHJlc2VudDtcbiAgICB9XG4gIH1cblxuICAvLyBQdXNoIG9iamVjdCBvbiBzdGFja1xuICBsZXQgcHJldk9iajtcbiAgaWYgKHN0YXRlLm9iaiAmJiBwcmVzZW50KVxuICAgIHByZXZPYmogPSBpbnB1dC5lbnRlck9iamVjdCgpO1xuXG4gIGlmIChwcmVzZW50KSB7XG4gICAgLy8gVW53cmFwIGV4cGxpY2l0IHZhbHVlc1xuICAgIGlmIChzdGF0ZS5leHBsaWNpdCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZXhwbGljaXQgPSB0aGlzLl9kZWNvZGVUYWcoaW5wdXQsIHN0YXRlLmV4cGxpY2l0KTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKGV4cGxpY2l0KSlcbiAgICAgICAgcmV0dXJuIGV4cGxpY2l0O1xuICAgICAgaW5wdXQgPSBleHBsaWNpdDtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9IGlucHV0Lm9mZnNldDtcblxuICAgIC8vIFVud3JhcCBpbXBsaWNpdCBhbmQgbm9ybWFsIHZhbHVlc1xuICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsKSB7XG4gICAgICBsZXQgc2F2ZTtcbiAgICAgIGlmIChzdGF0ZS5hbnkpXG4gICAgICAgIHNhdmUgPSBpbnB1dC5zYXZlKCk7XG4gICAgICBjb25zdCBib2R5ID0gdGhpcy5fZGVjb2RlVGFnKFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgc3RhdGUuaW1wbGljaXQgIT09IG51bGwgPyBzdGF0ZS5pbXBsaWNpdCA6IHN0YXRlLnRhZyxcbiAgICAgICAgc3RhdGUuYW55XG4gICAgICApO1xuICAgICAgaWYgKGlucHV0LmlzRXJyb3IoYm9keSkpXG4gICAgICAgIHJldHVybiBib2R5O1xuXG4gICAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgICByZXN1bHQgPSBpbnB1dC5yYXcoc2F2ZSk7XG4gICAgICBlbHNlXG4gICAgICAgIGlucHV0ID0gYm9keTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRyYWNrICYmIHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIG9wdGlvbnMudHJhY2soaW5wdXQucGF0aCgpLCBzdGFydCwgaW5wdXQubGVuZ3RoLCAndGFnZ2VkJyk7XG5cbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRyYWNrICYmIHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIG9wdGlvbnMudHJhY2soaW5wdXQucGF0aCgpLCBpbnB1dC5vZmZzZXQsIGlucHV0Lmxlbmd0aCwgJ2NvbnRlbnQnKTtcblxuICAgIC8vIFNlbGVjdCBwcm9wZXIgbWV0aG9kIGZvciB0YWdcbiAgICBpZiAoc3RhdGUuYW55KSB7XG4gICAgICAvLyBuby1vcFxuICAgIH0gZWxzZSBpZiAoc3RhdGUuY2hvaWNlID09PSBudWxsKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLl9kZWNvZGVHZW5lcmljKHN0YXRlLnRhZywgaW5wdXQsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSB0aGlzLl9kZWNvZGVDaG9pY2UoaW5wdXQsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGlmIChpbnB1dC5pc0Vycm9yKHJlc3VsdCkpXG4gICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgLy8gRGVjb2RlIGNoaWxkcmVuXG4gICAgaWYgKCFzdGF0ZS5hbnkgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsICYmIHN0YXRlLmNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICBzdGF0ZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIGRlY29kZUNoaWxkcmVuKGNoaWxkKSB7XG4gICAgICAgIC8vIE5PVEU6IFdlIGFyZSBpZ25vcmluZyBlcnJvcnMgaGVyZSwgdG8gbGV0IHBhcnNlciBjb250aW51ZSB3aXRoIG90aGVyXG4gICAgICAgIC8vIHBhcnRzIG9mIGVuY29kZWQgZGF0YVxuICAgICAgICBjaGlsZC5fZGVjb2RlKGlucHV0LCBvcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIERlY29kZSBjb250YWluZWQvZW5jb2RlZCBieSBzY2hlbWEsIG9ubHkgaW4gYml0IG9yIG9jdGV0IHN0cmluZ3NcbiAgICBpZiAoc3RhdGUuY29udGFpbnMgJiYgKHN0YXRlLnRhZyA9PT0gJ29jdHN0cicgfHwgc3RhdGUudGFnID09PSAnYml0c3RyJykpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBuZXcgRGVjb2RlckJ1ZmZlcihyZXN1bHQpO1xuICAgICAgcmVzdWx0ID0gdGhpcy5fZ2V0VXNlKHN0YXRlLmNvbnRhaW5zLCBpbnB1dC5fcmVwb3J0ZXJTdGF0ZS5vYmopXG4gICAgICAgIC5fZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBvcCBvYmplY3RcbiAgaWYgKHN0YXRlLm9iaiAmJiBwcmVzZW50KVxuICAgIHJlc3VsdCA9IGlucHV0LmxlYXZlT2JqZWN0KHByZXZPYmopO1xuXG4gIC8vIFNldCBrZXlcbiAgaWYgKHN0YXRlLmtleSAhPT0gbnVsbCAmJiAocmVzdWx0ICE9PSBudWxsIHx8IHByZXNlbnQgPT09IHRydWUpKVxuICAgIGlucHV0LmxlYXZlS2V5KHByZXZLZXksIHN0YXRlLmtleSwgcmVzdWx0KTtcbiAgZWxzZSBpZiAocHJldktleSAhPT0gbnVsbClcbiAgICBpbnB1dC5leGl0S2V5KHByZXZLZXkpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZGVjb2RlR2VuZXJpYyA9IGZ1bmN0aW9uIGRlY29kZUdlbmVyaWModGFnLCBpbnB1dCwgb3B0aW9ucykge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBpZiAodGFnID09PSAnc2VxJyB8fCB0YWcgPT09ICdzZXQnKVxuICAgIHJldHVybiBudWxsO1xuICBpZiAodGFnID09PSAnc2Vxb2YnIHx8IHRhZyA9PT0gJ3NldG9mJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlTGlzdChpbnB1dCwgdGFnLCBzdGF0ZS5hcmdzWzBdLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAoL3N0ciQvLnRlc3QodGFnKSlcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlU3RyKGlucHV0LCB0YWcsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmppZCcgJiYgc3RhdGUuYXJncylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlT2JqaWQoaW5wdXQsIHN0YXRlLmFyZ3NbMF0sIHN0YXRlLmFyZ3NbMV0sIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmppZCcpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU9iamlkKGlucHV0LCBudWxsLCBudWxsLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnZ2VudGltZScgfHwgdGFnID09PSAndXRjdGltZScpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZVRpbWUoaW5wdXQsIHRhZywgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ251bGxfJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlTnVsbChpbnB1dCwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2Jvb2wnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVCb29sKGlucHV0LCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqRGVzYycpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZVN0cihpbnB1dCwgdGFnLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnaW50JyB8fCB0YWcgPT09ICdlbnVtJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlSW50KGlucHV0LCBzdGF0ZS5hcmdzICYmIHN0YXRlLmFyZ3NbMF0sIG9wdGlvbnMpO1xuXG4gIGlmIChzdGF0ZS51c2UgIT09IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0VXNlKHN0YXRlLnVzZSwgaW5wdXQuX3JlcG9ydGVyU3RhdGUub2JqKVxuICAgICAgLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpbnB1dC5lcnJvcigndW5rbm93biB0YWc6ICcgKyB0YWcpO1xuICB9XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZ2V0VXNlID0gZnVuY3Rpb24gX2dldFVzZShlbnRpdHksIG9iaikge1xuXG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICAvLyBDcmVhdGUgYWx0ZXJlZCB1c2UgZGVjb2RlciBpZiBpbXBsaWNpdCBpcyBzZXRcbiAgc3RhdGUudXNlRGVjb2RlciA9IHRoaXMuX3VzZShlbnRpdHksIG9iaik7XG4gIGFzc2VydChzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUucGFyZW50ID09PSBudWxsKTtcbiAgc3RhdGUudXNlRGVjb2RlciA9IHN0YXRlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5jaGlsZHJlblswXTtcbiAgaWYgKHN0YXRlLmltcGxpY2l0ICE9PSBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQpIHtcbiAgICBzdGF0ZS51c2VEZWNvZGVyID0gc3RhdGUudXNlRGVjb2Rlci5jbG9uZSgpO1xuICAgIHN0YXRlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5pbXBsaWNpdCA9IHN0YXRlLmltcGxpY2l0O1xuICB9XG4gIHJldHVybiBzdGF0ZS51c2VEZWNvZGVyO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2RlY29kZUNob2ljZSA9IGZ1bmN0aW9uIGRlY29kZUNob2ljZShpbnB1dCwgb3B0aW9ucykge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgbGV0IHJlc3VsdCA9IG51bGw7XG4gIGxldCBtYXRjaCA9IGZhbHNlO1xuXG4gIE9iamVjdC5rZXlzKHN0YXRlLmNob2ljZSkuc29tZShmdW5jdGlvbihrZXkpIHtcbiAgICBjb25zdCBzYXZlID0gaW5wdXQuc2F2ZSgpO1xuICAgIGNvbnN0IG5vZGUgPSBzdGF0ZS5jaG9pY2Vba2V5XTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdmFsdWUgPSBub2RlLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpO1xuICAgICAgaWYgKGlucHV0LmlzRXJyb3IodmFsdWUpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHJlc3VsdCA9IHsgdHlwZToga2V5LCB2YWx1ZTogdmFsdWUgfTtcbiAgICAgIG1hdGNoID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpbnB1dC5yZXN0b3JlKHNhdmUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSwgdGhpcyk7XG5cbiAgaWYgKCFtYXRjaClcbiAgICByZXR1cm4gaW5wdXQuZXJyb3IoJ0Nob2ljZSBub3QgbWF0Y2hlZCcpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vL1xuLy8gRW5jb2Rpbmdcbi8vXG5cbk5vZGUucHJvdG90eXBlLl9jcmVhdGVFbmNvZGVyQnVmZmVyID0gZnVuY3Rpb24gY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhKSB7XG4gIHJldHVybiBuZXcgRW5jb2RlckJ1ZmZlcihkYXRhLCB0aGlzLnJlcG9ydGVyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgcmVwb3J0ZXIsIHBhcmVudCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgaWYgKHN0YXRlWydkZWZhdWx0J10gIT09IG51bGwgJiYgc3RhdGVbJ2RlZmF1bHQnXSA9PT0gZGF0YSlcbiAgICByZXR1cm47XG5cbiAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZW5jb2RlVmFsdWUoZGF0YSwgcmVwb3J0ZXIsIHBhcmVudCk7XG4gIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm47XG5cbiAgaWYgKHRoaXMuX3NraXBEZWZhdWx0KHJlc3VsdCwgcmVwb3J0ZXIsIHBhcmVudCkpXG4gICAgcmV0dXJuO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZW5jb2RlVmFsdWUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgcmVwb3J0ZXIsIHBhcmVudCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAvLyBEZWNvZGUgcm9vdCBub2RlXG4gIGlmIChzdGF0ZS5wYXJlbnQgPT09IG51bGwpXG4gICAgcmV0dXJuIHN0YXRlLmNoaWxkcmVuWzBdLl9lbmNvZGUoZGF0YSwgcmVwb3J0ZXIgfHwgbmV3IFJlcG9ydGVyKCkpO1xuXG4gIGxldCByZXN1bHQgPSBudWxsO1xuXG4gIC8vIFNldCByZXBvcnRlciB0byBzaGFyZSBpdCB3aXRoIGEgY2hpbGQgY2xhc3NcbiAgdGhpcy5yZXBvcnRlciA9IHJlcG9ydGVyO1xuXG4gIC8vIENoZWNrIGlmIGRhdGEgaXMgdGhlcmVcbiAgaWYgKHN0YXRlLm9wdGlvbmFsICYmIGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChzdGF0ZVsnZGVmYXVsdCddICE9PSBudWxsKVxuICAgICAgZGF0YSA9IHN0YXRlWydkZWZhdWx0J107XG4gICAgZWxzZVxuICAgICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRW5jb2RlIGNoaWxkcmVuIGZpcnN0XG4gIGxldCBjb250ZW50ID0gbnVsbDtcbiAgbGV0IHByaW1pdGl2ZSA9IGZhbHNlO1xuICBpZiAoc3RhdGUuYW55KSB7XG4gICAgLy8gQW55dGhpbmcgdGhhdCB3YXMgZ2l2ZW4gaXMgdHJhbnNsYXRlZCB0byBidWZmZXJcbiAgICByZXN1bHQgPSB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGRhdGEpO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNob2ljZSkge1xuICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZUNob2ljZShkYXRhLCByZXBvcnRlcik7XG4gIH0gZWxzZSBpZiAoc3RhdGUuY29udGFpbnMpIHtcbiAgICBjb250ZW50ID0gdGhpcy5fZ2V0VXNlKHN0YXRlLmNvbnRhaW5zLCBwYXJlbnQpLl9lbmNvZGUoZGF0YSwgcmVwb3J0ZXIpO1xuICAgIHByaW1pdGl2ZSA9IHRydWU7XG4gIH0gZWxzZSBpZiAoc3RhdGUuY2hpbGRyZW4pIHtcbiAgICBjb250ZW50ID0gc3RhdGUuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICBpZiAoY2hpbGQuX2Jhc2VTdGF0ZS50YWcgPT09ICdudWxsXycpXG4gICAgICAgIHJldHVybiBjaGlsZC5fZW5jb2RlKG51bGwsIHJlcG9ydGVyLCBkYXRhKTtcblxuICAgICAgaWYgKGNoaWxkLl9iYXNlU3RhdGUua2V5ID09PSBudWxsKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ0NoaWxkIHNob3VsZCBoYXZlIGEga2V5Jyk7XG4gICAgICBjb25zdCBwcmV2S2V5ID0gcmVwb3J0ZXIuZW50ZXJLZXkoY2hpbGQuX2Jhc2VTdGF0ZS5rZXkpO1xuXG4gICAgICBpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ0NoaWxkIGV4cGVjdGVkLCBidXQgaW5wdXQgaXMgbm90IG9iamVjdCcpO1xuXG4gICAgICBjb25zdCByZXMgPSBjaGlsZC5fZW5jb2RlKGRhdGFbY2hpbGQuX2Jhc2VTdGF0ZS5rZXldLCByZXBvcnRlciwgZGF0YSk7XG4gICAgICByZXBvcnRlci5sZWF2ZUtleShwcmV2S2V5KTtcblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCB0aGlzKS5maWx0ZXIoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9KTtcbiAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihjb250ZW50KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoc3RhdGUudGFnID09PSAnc2Vxb2YnIHx8IHN0YXRlLnRhZyA9PT0gJ3NldG9mJykge1xuICAgICAgLy8gVE9ETyhpbmR1dG55KTogdGhpcyBzaG91bGQgYmUgdGhyb3duIG9uIERTTCBsZXZlbFxuICAgICAgaWYgKCEoc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzLmxlbmd0aCA9PT0gMSkpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVG9vIG1hbnkgYXJncyBmb3IgOiAnICsgc3RhdGUudGFnKTtcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ3NlcW9mL3NldG9mLCBidXQgZGF0YSBpcyBub3QgQXJyYXknKTtcblxuICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjaGlsZC5fYmFzZVN0YXRlLmltcGxpY2l0ID0gbnVsbDtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGRhdGEubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFVzZShzdGF0ZS5hcmdzWzBdLCBkYXRhKS5fZW5jb2RlKGl0ZW0sIHJlcG9ydGVyKTtcbiAgICAgIH0sIGNoaWxkKSk7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS51c2UgIT09IG51bGwpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2dldFVzZShzdGF0ZS51c2UsIHBhcmVudCkuX2VuY29kZShkYXRhLCByZXBvcnRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLl9lbmNvZGVQcmltaXRpdmUoc3RhdGUudGFnLCBkYXRhKTtcbiAgICAgIHByaW1pdGl2ZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gRW5jb2RlIGRhdGEgaXRzZWxmXG4gIGlmICghc3RhdGUuYW55ICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IHRhZyA9IHN0YXRlLmltcGxpY2l0ICE9PSBudWxsID8gc3RhdGUuaW1wbGljaXQgOiBzdGF0ZS50YWc7XG4gICAgY29uc3QgY2xzID0gc3RhdGUuaW1wbGljaXQgPT09IG51bGwgPyAndW5pdmVyc2FsJyA6ICdjb250ZXh0JztcblxuICAgIGlmICh0YWcgPT09IG51bGwpIHtcbiAgICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwpXG4gICAgICAgIHJlcG9ydGVyLmVycm9yKCdUYWcgY291bGQgYmUgb21pdHRlZCBvbmx5IGZvciAudXNlKCknKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0YXRlLnVzZSA9PT0gbnVsbClcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5fZW5jb2RlQ29tcG9zaXRlKHRhZywgcHJpbWl0aXZlLCBjbHMsIGNvbnRlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFdyYXAgaW4gZXhwbGljaXRcbiAgaWYgKHN0YXRlLmV4cGxpY2l0ICE9PSBudWxsKVxuICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZUNvbXBvc2l0ZShzdGF0ZS5leHBsaWNpdCwgZmFsc2UsICdjb250ZXh0JywgcmVzdWx0KTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZUNob2ljZSA9IGZ1bmN0aW9uIGVuY29kZUNob2ljZShkYXRhLCByZXBvcnRlcikge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBjb25zdCBub2RlID0gc3RhdGUuY2hvaWNlW2RhdGEudHlwZV07XG4gIGlmICghbm9kZSkge1xuICAgIGFzc2VydChcbiAgICAgIGZhbHNlLFxuICAgICAgZGF0YS50eXBlICsgJyBub3QgZm91bmQgaW4gJyArXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyhzdGF0ZS5jaG9pY2UpKSk7XG4gIH1cbiAgcmV0dXJuIG5vZGUuX2VuY29kZShkYXRhLnZhbHVlLCByZXBvcnRlcik7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZW5jb2RlUHJpbWl0aXZlID0gZnVuY3Rpb24gZW5jb2RlUHJpbWl0aXZlKHRhZywgZGF0YSkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBpZiAoL3N0ciQvLnRlc3QodGFnKSlcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlU3RyKGRhdGEsIHRhZyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJyAmJiBzdGF0ZS5hcmdzKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVPYmppZChkYXRhLCBzdGF0ZS5yZXZlcnNlQXJnc1swXSwgc3RhdGUuYXJnc1sxXSk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQoZGF0YSwgbnVsbCwgbnVsbCk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnIHx8IHRhZyA9PT0gJ3V0Y3RpbWUnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVUaW1lKGRhdGEsIHRhZyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ251bGxfJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlTnVsbCgpO1xuICBlbHNlIGlmICh0YWcgPT09ICdpbnQnIHx8IHRhZyA9PT0gJ2VudW0nKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVJbnQoZGF0YSwgc3RhdGUuYXJncyAmJiBzdGF0ZS5yZXZlcnNlQXJnc1swXSk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2Jvb2wnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVCb29sKGRhdGEpO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlU3RyKGRhdGEsIHRhZyk7XG4gIGVsc2VcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHRhZzogJyArIHRhZyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faXNOdW1zdHIgPSBmdW5jdGlvbiBpc051bXN0cihzdHIpIHtcbiAgcmV0dXJuIC9eWzAtOSBdKiQvLnRlc3Qoc3RyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9pc1ByaW50c3RyID0gZnVuY3Rpb24gaXNQcmludHN0cihzdHIpIHtcbiAgcmV0dXJuIC9eW0EtWmEtejAtOSAnKCkrLC0uLzo9P10qJC8udGVzdChzdHIpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5mdW5jdGlvbiBSZXBvcnRlcihvcHRpb25zKSB7XG4gIHRoaXMuX3JlcG9ydGVyU3RhdGUgPSB7XG4gICAgb2JqOiBudWxsLFxuICAgIHBhdGg6IFtdLFxuICAgIG9wdGlvbnM6IG9wdGlvbnMgfHwge30sXG4gICAgZXJyb3JzOiBbXVxuICB9O1xufVxuZXhwb3J0cy5SZXBvcnRlciA9IFJlcG9ydGVyO1xuXG5SZXBvcnRlci5wcm90b3R5cGUuaXNFcnJvciA9IGZ1bmN0aW9uIGlzRXJyb3Iob2JqKSB7XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBSZXBvcnRlckVycm9yO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLnNhdmUgPSBmdW5jdGlvbiBzYXZlKCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgcmV0dXJuIHsgb2JqOiBzdGF0ZS5vYmosIHBhdGhMZW46IHN0YXRlLnBhdGgubGVuZ3RoIH07XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUucmVzdG9yZSA9IGZ1bmN0aW9uIHJlc3RvcmUoZGF0YSkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgc3RhdGUub2JqID0gZGF0YS5vYmo7XG4gIHN0YXRlLnBhdGggPSBzdGF0ZS5wYXRoLnNsaWNlKDAsIGRhdGEucGF0aExlbik7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZW50ZXJLZXkgPSBmdW5jdGlvbiBlbnRlcktleShrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5wdXNoKGtleSk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZXhpdEtleSA9IGZ1bmN0aW9uIGV4aXRLZXkoaW5kZXgpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHN0YXRlLnBhdGggPSBzdGF0ZS5wYXRoLnNsaWNlKDAsIGluZGV4IC0gMSk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUubGVhdmVLZXkgPSBmdW5jdGlvbiBsZWF2ZUtleShpbmRleCwga2V5LCB2YWx1ZSkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgdGhpcy5leGl0S2V5KGluZGV4KTtcbiAgaWYgKHN0YXRlLm9iaiAhPT0gbnVsbClcbiAgICBzdGF0ZS5vYmpba2V5XSA9IHZhbHVlO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLnBhdGggPSBmdW5jdGlvbiBwYXRoKCkge1xuICByZXR1cm4gdGhpcy5fcmVwb3J0ZXJTdGF0ZS5wYXRoLmpvaW4oJy8nKTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5lbnRlck9iamVjdCA9IGZ1bmN0aW9uIGVudGVyT2JqZWN0KCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgY29uc3QgcHJldiA9IHN0YXRlLm9iajtcbiAgc3RhdGUub2JqID0ge307XG4gIHJldHVybiBwcmV2O1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmxlYXZlT2JqZWN0ID0gZnVuY3Rpb24gbGVhdmVPYmplY3QocHJldikge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgY29uc3Qgbm93ID0gc3RhdGUub2JqO1xuICBzdGF0ZS5vYmogPSBwcmV2O1xuICByZXR1cm4gbm93O1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gZXJyb3IobXNnKSB7XG4gIGxldCBlcnI7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICBjb25zdCBpbmhlcml0ZWQgPSBtc2cgaW5zdGFuY2VvZiBSZXBvcnRlckVycm9yO1xuICBpZiAoaW5oZXJpdGVkKSB7XG4gICAgZXJyID0gbXNnO1xuICB9IGVsc2Uge1xuICAgIGVyciA9IG5ldyBSZXBvcnRlckVycm9yKHN0YXRlLnBhdGgubWFwKGZ1bmN0aW9uKGVsZW0pIHtcbiAgICAgIHJldHVybiAnWycgKyBKU09OLnN0cmluZ2lmeShlbGVtKSArICddJztcbiAgICB9KS5qb2luKCcnKSwgbXNnLm1lc3NhZ2UgfHwgbXNnLCBtc2cuc3RhY2spO1xuICB9XG5cbiAgaWYgKCFzdGF0ZS5vcHRpb25zLnBhcnRpYWwpXG4gICAgdGhyb3cgZXJyO1xuXG4gIGlmICghaW5oZXJpdGVkKVxuICAgIHN0YXRlLmVycm9ycy5wdXNoKGVycik7XG5cbiAgcmV0dXJuIGVycjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS53cmFwUmVzdWx0ID0gZnVuY3Rpb24gd3JhcFJlc3VsdChyZXN1bHQpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuICBpZiAoIXN0YXRlLm9wdGlvbnMucGFydGlhbClcbiAgICByZXR1cm4gcmVzdWx0O1xuXG4gIHJldHVybiB7XG4gICAgcmVzdWx0OiB0aGlzLmlzRXJyb3IocmVzdWx0KSA/IG51bGwgOiByZXN1bHQsXG4gICAgZXJyb3JzOiBzdGF0ZS5lcnJvcnNcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIFJlcG9ydGVyRXJyb3IocGF0aCwgbXNnKSB7XG4gIHRoaXMucGF0aCA9IHBhdGg7XG4gIHRoaXMucmV0aHJvdyhtc2cpO1xufVxuaW5oZXJpdHMoUmVwb3J0ZXJFcnJvciwgRXJyb3IpO1xuXG5SZXBvcnRlckVycm9yLnByb3RvdHlwZS5yZXRocm93ID0gZnVuY3Rpb24gcmV0aHJvdyhtc2cpIHtcbiAgdGhpcy5tZXNzYWdlID0gbXNnICsgJyBhdDogJyArICh0aGlzLnBhdGggfHwgJyhzaGFsbG93KScpO1xuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgUmVwb3J0ZXJFcnJvcik7XG5cbiAgaWYgKCF0aGlzLnN0YWNrKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIElFIG9ubHkgYWRkcyBzdGFjayB3aGVuIHRocm93blxuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMubWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5zdGFjayA9IGUuc3RhY2s7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gSGVscGVyXG5mdW5jdGlvbiByZXZlcnNlKG1hcCkge1xuICBjb25zdCByZXMgPSB7fTtcblxuICBPYmplY3Qua2V5cyhtYXApLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgLy8gQ29udmVydCBrZXkgdG8gaW50ZWdlciBpZiBpdCBpcyBzdHJpbmdpZmllZFxuICAgIGlmICgoa2V5IHwgMCkgPT0ga2V5KVxuICAgICAga2V5ID0ga2V5IHwgMDtcblxuICAgIGNvbnN0IHZhbHVlID0gbWFwW2tleV07XG4gICAgcmVzW3ZhbHVlXSA9IGtleTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0cy50YWdDbGFzcyA9IHtcbiAgMDogJ3VuaXZlcnNhbCcsXG4gIDE6ICdhcHBsaWNhdGlvbicsXG4gIDI6ICdjb250ZXh0JyxcbiAgMzogJ3ByaXZhdGUnXG59O1xuZXhwb3J0cy50YWdDbGFzc0J5TmFtZSA9IHJldmVyc2UoZXhwb3J0cy50YWdDbGFzcyk7XG5cbmV4cG9ydHMudGFnID0ge1xuICAweDAwOiAnZW5kJyxcbiAgMHgwMTogJ2Jvb2wnLFxuICAweDAyOiAnaW50JyxcbiAgMHgwMzogJ2JpdHN0cicsXG4gIDB4MDQ6ICdvY3RzdHInLFxuICAweDA1OiAnbnVsbF8nLFxuICAweDA2OiAnb2JqaWQnLFxuICAweDA3OiAnb2JqRGVzYycsXG4gIDB4MDg6ICdleHRlcm5hbCcsXG4gIDB4MDk6ICdyZWFsJyxcbiAgMHgwYTogJ2VudW0nLFxuICAweDBiOiAnZW1iZWQnLFxuICAweDBjOiAndXRmOHN0cicsXG4gIDB4MGQ6ICdyZWxhdGl2ZU9pZCcsXG4gIDB4MTA6ICdzZXEnLFxuICAweDExOiAnc2V0JyxcbiAgMHgxMjogJ251bXN0cicsXG4gIDB4MTM6ICdwcmludHN0cicsXG4gIDB4MTQ6ICd0NjFzdHInLFxuICAweDE1OiAndmlkZW9zdHInLFxuICAweDE2OiAnaWE1c3RyJyxcbiAgMHgxNzogJ3V0Y3RpbWUnLFxuICAweDE4OiAnZ2VudGltZScsXG4gIDB4MTk6ICdncmFwaHN0cicsXG4gIDB4MWE6ICdpc282NDZzdHInLFxuICAweDFiOiAnZ2Vuc3RyJyxcbiAgMHgxYzogJ3VuaXN0cicsXG4gIDB4MWQ6ICdjaGFyc3RyJyxcbiAgMHgxZTogJ2JtcHN0cidcbn07XG5leHBvcnRzLnRhZ0J5TmFtZSA9IHJldmVyc2UoZXhwb3J0cy50YWcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBjb25zdGFudHMgPSBleHBvcnRzO1xuXG4vLyBIZWxwZXJcbmNvbnN0YW50cy5fcmV2ZXJzZSA9IGZ1bmN0aW9uIHJldmVyc2UobWFwKSB7XG4gIGNvbnN0IHJlcyA9IHt9O1xuXG4gIE9iamVjdC5rZXlzKG1hcCkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAvLyBDb252ZXJ0IGtleSB0byBpbnRlZ2VyIGlmIGl0IGlzIHN0cmluZ2lmaWVkXG4gICAgaWYgKChrZXkgfCAwKSA9PSBrZXkpXG4gICAgICBrZXkgPSBrZXkgfCAwO1xuXG4gICAgY29uc3QgdmFsdWUgPSBtYXBba2V5XTtcbiAgICByZXNbdmFsdWVdID0ga2V5O1xuICB9KTtcblxuICByZXR1cm4gcmVzO1xufTtcblxuY29uc3RhbnRzLmRlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuY29uc3QgYmlnbnVtID0gcmVxdWlyZSgnYm4uanMnKTtcbmNvbnN0IERlY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuLi9iYXNlL2J1ZmZlcicpLkRlY29kZXJCdWZmZXI7XG5jb25zdCBOb2RlID0gcmVxdWlyZSgnLi4vYmFzZS9ub2RlJyk7XG5cbi8vIEltcG9ydCBERVIgY29uc3RhbnRzXG5jb25zdCBkZXIgPSByZXF1aXJlKCcuLi9jb25zdGFudHMvZGVyJyk7XG5cbmZ1bmN0aW9uIERFUkRlY29kZXIoZW50aXR5KSB7XG4gIHRoaXMuZW5jID0gJ2Rlcic7XG4gIHRoaXMubmFtZSA9IGVudGl0eS5uYW1lO1xuICB0aGlzLmVudGl0eSA9IGVudGl0eTtcblxuICAvLyBDb25zdHJ1Y3QgYmFzZSB0cmVlXG4gIHRoaXMudHJlZSA9IG5ldyBERVJOb2RlKCk7XG4gIHRoaXMudHJlZS5faW5pdChlbnRpdHkuYm9keSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IERFUkRlY29kZXI7XG5cbkRFUkRlY29kZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShkYXRhLCBvcHRpb25zKSB7XG4gIGlmICghRGVjb2RlckJ1ZmZlci5pc0RlY29kZXJCdWZmZXIoZGF0YSkpIHtcbiAgICBkYXRhID0gbmV3IERlY29kZXJCdWZmZXIoZGF0YSwgb3B0aW9ucyk7XG4gIH1cblxuICByZXR1cm4gdGhpcy50cmVlLl9kZWNvZGUoZGF0YSwgb3B0aW9ucyk7XG59O1xuXG4vLyBUcmVlIG1ldGhvZHNcblxuZnVuY3Rpb24gREVSTm9kZShwYXJlbnQpIHtcbiAgTm9kZS5jYWxsKHRoaXMsICdkZXInLCBwYXJlbnQpO1xufVxuaW5oZXJpdHMoREVSTm9kZSwgTm9kZSk7XG5cbkRFUk5vZGUucHJvdG90eXBlLl9wZWVrVGFnID0gZnVuY3Rpb24gcGVla1RhZyhidWZmZXIsIHRhZywgYW55KSB7XG4gIGlmIChidWZmZXIuaXNFbXB0eSgpKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBzdGF0ZSA9IGJ1ZmZlci5zYXZlKCk7XG4gIGNvbnN0IGRlY29kZWRUYWcgPSBkZXJEZWNvZGVUYWcoYnVmZmVyLCAnRmFpbGVkIHRvIHBlZWsgdGFnOiBcIicgKyB0YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKGRlY29kZWRUYWcpKVxuICAgIHJldHVybiBkZWNvZGVkVGFnO1xuXG4gIGJ1ZmZlci5yZXN0b3JlKHN0YXRlKTtcblxuICByZXR1cm4gZGVjb2RlZFRhZy50YWcgPT09IHRhZyB8fCBkZWNvZGVkVGFnLnRhZ1N0ciA9PT0gdGFnIHx8XG4gICAgKGRlY29kZWRUYWcudGFnU3RyICsgJ29mJykgPT09IHRhZyB8fCBhbnk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlVGFnID0gZnVuY3Rpb24gZGVjb2RlVGFnKGJ1ZmZlciwgdGFnLCBhbnkpIHtcbiAgY29uc3QgZGVjb2RlZFRhZyA9IGRlckRlY29kZVRhZyhidWZmZXIsXG4gICAgJ0ZhaWxlZCB0byBkZWNvZGUgdGFnIG9mIFwiJyArIHRhZyArICdcIicpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IoZGVjb2RlZFRhZykpXG4gICAgcmV0dXJuIGRlY29kZWRUYWc7XG5cbiAgbGV0IGxlbiA9IGRlckRlY29kZUxlbihidWZmZXIsXG4gICAgZGVjb2RlZFRhZy5wcmltaXRpdmUsXG4gICAgJ0ZhaWxlZCB0byBnZXQgbGVuZ3RoIG9mIFwiJyArIHRhZyArICdcIicpO1xuXG4gIC8vIEZhaWx1cmVcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKGxlbikpXG4gICAgcmV0dXJuIGxlbjtcblxuICBpZiAoIWFueSAmJlxuICAgICAgZGVjb2RlZFRhZy50YWcgIT09IHRhZyAmJlxuICAgICAgZGVjb2RlZFRhZy50YWdTdHIgIT09IHRhZyAmJlxuICAgICAgZGVjb2RlZFRhZy50YWdTdHIgKyAnb2YnICE9PSB0YWcpIHtcbiAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdGYWlsZWQgdG8gbWF0Y2ggdGFnOiBcIicgKyB0YWcgKyAnXCInKTtcbiAgfVxuXG4gIGlmIChkZWNvZGVkVGFnLnByaW1pdGl2ZSB8fCBsZW4gIT09IG51bGwpXG4gICAgcmV0dXJuIGJ1ZmZlci5za2lwKGxlbiwgJ0ZhaWxlZCB0byBtYXRjaCBib2R5IG9mOiBcIicgKyB0YWcgKyAnXCInKTtcblxuICAvLyBJbmRlZmluaXRlIGxlbmd0aC4uLiBmaW5kIEVORCB0YWdcbiAgY29uc3Qgc3RhdGUgPSBidWZmZXIuc2F2ZSgpO1xuICBjb25zdCByZXMgPSB0aGlzLl9za2lwVW50aWxFbmQoXG4gICAgYnVmZmVyLFxuICAgICdGYWlsZWQgdG8gc2tpcCBpbmRlZmluaXRlIGxlbmd0aCBib2R5OiBcIicgKyB0aGlzLnRhZyArICdcIicpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSlcbiAgICByZXR1cm4gcmVzO1xuXG4gIGxlbiA9IGJ1ZmZlci5vZmZzZXQgLSBzdGF0ZS5vZmZzZXQ7XG4gIGJ1ZmZlci5yZXN0b3JlKHN0YXRlKTtcbiAgcmV0dXJuIGJ1ZmZlci5za2lwKGxlbiwgJ0ZhaWxlZCB0byBtYXRjaCBib2R5IG9mOiBcIicgKyB0YWcgKyAnXCInKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9za2lwVW50aWxFbmQgPSBmdW5jdGlvbiBza2lwVW50aWxFbmQoYnVmZmVyLCBmYWlsKSB7XG4gIGZvciAoOzspIHtcbiAgICBjb25zdCB0YWcgPSBkZXJEZWNvZGVUYWcoYnVmZmVyLCBmYWlsKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IodGFnKSlcbiAgICAgIHJldHVybiB0YWc7XG4gICAgY29uc3QgbGVuID0gZGVyRGVjb2RlTGVuKGJ1ZmZlciwgdGFnLnByaW1pdGl2ZSwgZmFpbCk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKGxlbikpXG4gICAgICByZXR1cm4gbGVuO1xuXG4gICAgbGV0IHJlcztcbiAgICBpZiAodGFnLnByaW1pdGl2ZSB8fCBsZW4gIT09IG51bGwpXG4gICAgICByZXMgPSBidWZmZXIuc2tpcChsZW4pO1xuICAgIGVsc2VcbiAgICAgIHJlcyA9IHRoaXMuX3NraXBVbnRpbEVuZChidWZmZXIsIGZhaWwpO1xuXG4gICAgLy8gRmFpbHVyZVxuICAgIGlmIChidWZmZXIuaXNFcnJvcihyZXMpKVxuICAgICAgcmV0dXJuIHJlcztcblxuICAgIGlmICh0YWcudGFnU3RyID09PSAnZW5kJylcbiAgICAgIGJyZWFrO1xuICB9XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlTGlzdCA9IGZ1bmN0aW9uIGRlY29kZUxpc3QoYnVmZmVyLCB0YWcsIGRlY29kZXIsXG4gIG9wdGlvbnMpIHtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIHdoaWxlICghYnVmZmVyLmlzRW1wdHkoKSkge1xuICAgIGNvbnN0IHBvc3NpYmxlRW5kID0gdGhpcy5fcGVla1RhZyhidWZmZXIsICdlbmQnKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IocG9zc2libGVFbmQpKVxuICAgICAgcmV0dXJuIHBvc3NpYmxlRW5kO1xuXG4gICAgY29uc3QgcmVzID0gZGVjb2Rlci5kZWNvZGUoYnVmZmVyLCAnZGVyJywgb3B0aW9ucyk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHJlcykgJiYgcG9zc2libGVFbmQpXG4gICAgICBicmVhaztcbiAgICByZXN1bHQucHVzaChyZXMpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlU3RyID0gZnVuY3Rpb24gZGVjb2RlU3RyKGJ1ZmZlciwgdGFnKSB7XG4gIGlmICh0YWcgPT09ICdiaXRzdHInKSB7XG4gICAgY29uc3QgdW51c2VkID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcih1bnVzZWQpKVxuICAgICAgcmV0dXJuIHVudXNlZDtcbiAgICByZXR1cm4geyB1bnVzZWQ6IHVudXNlZCwgZGF0YTogYnVmZmVyLnJhdygpIH07XG4gIH0gZWxzZSBpZiAodGFnID09PSAnYm1wc3RyJykge1xuICAgIGNvbnN0IHJhdyA9IGJ1ZmZlci5yYXcoKTtcbiAgICBpZiAocmF3Lmxlbmd0aCAlIDIgPT09IDEpXG4gICAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogYm1wc3RyIGxlbmd0aCBtaXNtYXRjaCcpO1xuXG4gICAgbGV0IHN0ciA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmF3Lmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUocmF3LnJlYWRVSW50MTZCRShpICogMikpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ251bXN0cicpIHtcbiAgICBjb25zdCBudW1zdHIgPSBidWZmZXIucmF3KCkudG9TdHJpbmcoJ2FzY2lpJyk7XG4gICAgaWYgKCF0aGlzLl9pc051bXN0cihudW1zdHIpKSB7XG4gICAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdudW1zdHIgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycycpO1xuICAgIH1cbiAgICByZXR1cm4gbnVtc3RyO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ29jdHN0cicpIHtcbiAgICByZXR1cm4gYnVmZmVyLnJhdygpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ29iakRlc2MnKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5yYXcoKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdwcmludHN0cicpIHtcbiAgICBjb25zdCBwcmludHN0ciA9IGJ1ZmZlci5yYXcoKS50b1N0cmluZygnYXNjaWknKTtcbiAgICBpZiAoIXRoaXMuX2lzUHJpbnRzdHIocHJpbnRzdHIpKSB7XG4gICAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludHN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuICAgIHJldHVybiBwcmludHN0cjtcbiAgfSBlbHNlIGlmICgvc3RyJC8udGVzdCh0YWcpKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5yYXcoKS50b1N0cmluZygpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICsgdGFnICsgJyB1bnN1cHBvcnRlZCcpO1xuICB9XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlT2JqaWQgPSBmdW5jdGlvbiBkZWNvZGVPYmppZChidWZmZXIsIHZhbHVlcywgcmVsYXRpdmUpIHtcbiAgbGV0IHJlc3VsdDtcbiAgY29uc3QgaWRlbnRpZmllcnMgPSBbXTtcbiAgbGV0IGlkZW50ID0gMDtcbiAgbGV0IHN1YmlkZW50ID0gMDtcbiAgd2hpbGUgKCFidWZmZXIuaXNFbXB0eSgpKSB7XG4gICAgc3ViaWRlbnQgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gICAgaWRlbnQgPDw9IDc7XG4gICAgaWRlbnQgfD0gc3ViaWRlbnQgJiAweDdmO1xuICAgIGlmICgoc3ViaWRlbnQgJiAweDgwKSA9PT0gMCkge1xuICAgICAgaWRlbnRpZmllcnMucHVzaChpZGVudCk7XG4gICAgICBpZGVudCA9IDA7XG4gICAgfVxuICB9XG4gIGlmIChzdWJpZGVudCAmIDB4ODApXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudCk7XG5cbiAgY29uc3QgZmlyc3QgPSAoaWRlbnRpZmllcnNbMF0gLyA0MCkgfCAwO1xuICBjb25zdCBzZWNvbmQgPSBpZGVudGlmaWVyc1swXSAlIDQwO1xuXG4gIGlmIChyZWxhdGl2ZSlcbiAgICByZXN1bHQgPSBpZGVudGlmaWVycztcbiAgZWxzZVxuICAgIHJlc3VsdCA9IFtmaXJzdCwgc2Vjb25kXS5jb25jYXQoaWRlbnRpZmllcnMuc2xpY2UoMSkpO1xuXG4gIGlmICh2YWx1ZXMpIHtcbiAgICBsZXQgdG1wID0gdmFsdWVzW3Jlc3VsdC5qb2luKCcgJyldO1xuICAgIGlmICh0bXAgPT09IHVuZGVmaW5lZClcbiAgICAgIHRtcCA9IHZhbHVlc1tyZXN1bHQuam9pbignLicpXTtcbiAgICBpZiAodG1wICE9PSB1bmRlZmluZWQpXG4gICAgICByZXN1bHQgPSB0bXA7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVRpbWUgPSBmdW5jdGlvbiBkZWNvZGVUaW1lKGJ1ZmZlciwgdGFnKSB7XG4gIGNvbnN0IHN0ciA9IGJ1ZmZlci5yYXcoKS50b1N0cmluZygpO1xuXG4gIGxldCB5ZWFyO1xuICBsZXQgbW9uO1xuICBsZXQgZGF5O1xuICBsZXQgaG91cjtcbiAgbGV0IG1pbjtcbiAgbGV0IHNlYztcbiAgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnKSB7XG4gICAgeWVhciA9IHN0ci5zbGljZSgwLCA0KSB8IDA7XG4gICAgbW9uID0gc3RyLnNsaWNlKDQsIDYpIHwgMDtcbiAgICBkYXkgPSBzdHIuc2xpY2UoNiwgOCkgfCAwO1xuICAgIGhvdXIgPSBzdHIuc2xpY2UoOCwgMTApIHwgMDtcbiAgICBtaW4gPSBzdHIuc2xpY2UoMTAsIDEyKSB8IDA7XG4gICAgc2VjID0gc3RyLnNsaWNlKDEyLCAxNCkgfCAwO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3V0Y3RpbWUnKSB7XG4gICAgeWVhciA9IHN0ci5zbGljZSgwLCAyKSB8IDA7XG4gICAgbW9uID0gc3RyLnNsaWNlKDIsIDQpIHwgMDtcbiAgICBkYXkgPSBzdHIuc2xpY2UoNCwgNikgfCAwO1xuICAgIGhvdXIgPSBzdHIuc2xpY2UoNiwgOCkgfCAwO1xuICAgIG1pbiA9IHN0ci5zbGljZSg4LCAxMCkgfCAwO1xuICAgIHNlYyA9IHN0ci5zbGljZSgxMCwgMTIpIHwgMDtcbiAgICBpZiAoeWVhciA8IDcwKVxuICAgICAgeWVhciA9IDIwMDAgKyB5ZWFyO1xuICAgIGVsc2VcbiAgICAgIHllYXIgPSAxOTAwICsgeWVhcjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyAnICsgdGFnICsgJyB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Jyk7XG4gIH1cblxuICByZXR1cm4gRGF0ZS5VVEMoeWVhciwgbW9uIC0gMSwgZGF5LCBob3VyLCBtaW4sIHNlYywgMCk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlTnVsbCA9IGZ1bmN0aW9uIGRlY29kZU51bGwoKSB7XG4gIHJldHVybiBudWxsO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZUJvb2wgPSBmdW5jdGlvbiBkZWNvZGVCb29sKGJ1ZmZlcikge1xuICBjb25zdCByZXMgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gIGlmIChidWZmZXIuaXNFcnJvcihyZXMpKVxuICAgIHJldHVybiByZXM7XG4gIGVsc2VcbiAgICByZXR1cm4gcmVzICE9PSAwO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZUludCA9IGZ1bmN0aW9uIGRlY29kZUludChidWZmZXIsIHZhbHVlcykge1xuICAvLyBCaWdpbnQsIHJldHVybiBhcyBpdCBpcyAoYXNzdW1lIGJpZyBlbmRpYW4pXG4gIGNvbnN0IHJhdyA9IGJ1ZmZlci5yYXcoKTtcbiAgbGV0IHJlcyA9IG5ldyBiaWdudW0ocmF3KTtcblxuICBpZiAodmFsdWVzKVxuICAgIHJlcyA9IHZhbHVlc1tyZXMudG9TdHJpbmcoMTApXSB8fCByZXM7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl91c2UgPSBmdW5jdGlvbiB1c2UoZW50aXR5LCBvYmopIHtcbiAgaWYgKHR5cGVvZiBlbnRpdHkgPT09ICdmdW5jdGlvbicpXG4gICAgZW50aXR5ID0gZW50aXR5KG9iaik7XG4gIHJldHVybiBlbnRpdHkuX2dldERlY29kZXIoJ2RlcicpLnRyZWU7XG59O1xuXG4vLyBVdGlsaXR5IG1ldGhvZHNcblxuZnVuY3Rpb24gZGVyRGVjb2RlVGFnKGJ1ZiwgZmFpbCkge1xuICBsZXQgdGFnID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgaWYgKGJ1Zi5pc0Vycm9yKHRhZykpXG4gICAgcmV0dXJuIHRhZztcblxuICBjb25zdCBjbHMgPSBkZXIudGFnQ2xhc3NbdGFnID4+IDZdO1xuICBjb25zdCBwcmltaXRpdmUgPSAodGFnICYgMHgyMCkgPT09IDA7XG5cbiAgLy8gTXVsdGktb2N0ZXQgdGFnIC0gbG9hZFxuICBpZiAoKHRhZyAmIDB4MWYpID09PSAweDFmKSB7XG4gICAgbGV0IG9jdCA9IHRhZztcbiAgICB0YWcgPSAwO1xuICAgIHdoaWxlICgob2N0ICYgMHg4MCkgPT09IDB4ODApIHtcbiAgICAgIG9jdCA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gICAgICBpZiAoYnVmLmlzRXJyb3Iob2N0KSlcbiAgICAgICAgcmV0dXJuIG9jdDtcblxuICAgICAgdGFnIDw8PSA3O1xuICAgICAgdGFnIHw9IG9jdCAmIDB4N2Y7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRhZyAmPSAweDFmO1xuICB9XG4gIGNvbnN0IHRhZ1N0ciA9IGRlci50YWdbdGFnXTtcblxuICByZXR1cm4ge1xuICAgIGNsczogY2xzLFxuICAgIHByaW1pdGl2ZTogcHJpbWl0aXZlLFxuICAgIHRhZzogdGFnLFxuICAgIHRhZ1N0cjogdGFnU3RyXG4gIH07XG59XG5cbmZ1bmN0aW9uIGRlckRlY29kZUxlbihidWYsIHByaW1pdGl2ZSwgZmFpbCkge1xuICBsZXQgbGVuID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgaWYgKGJ1Zi5pc0Vycm9yKGxlbikpXG4gICAgcmV0dXJuIGxlbjtcblxuICAvLyBJbmRlZmluaXRlIGZvcm1cbiAgaWYgKCFwcmltaXRpdmUgJiYgbGVuID09PSAweDgwKVxuICAgIHJldHVybiBudWxsO1xuXG4gIC8vIERlZmluaXRlIGZvcm1cbiAgaWYgKChsZW4gJiAweDgwKSA9PT0gMCkge1xuICAgIC8vIFNob3J0IGZvcm1cbiAgICByZXR1cm4gbGVuO1xuICB9XG5cbiAgLy8gTG9uZyBmb3JtXG4gIGNvbnN0IG51bSA9IGxlbiAmIDB4N2Y7XG4gIGlmIChudW0gPiA0KVxuICAgIHJldHVybiBidWYuZXJyb3IoJ2xlbmd0aCBvY3RlY3QgaXMgdG9vIGxvbmcnKTtcblxuICBsZW4gPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG51bTsgaSsrKSB7XG4gICAgbGVuIDw8PSA4O1xuICAgIGNvbnN0IGogPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICAgIGlmIChidWYuaXNFcnJvcihqKSlcbiAgICAgIHJldHVybiBqO1xuICAgIGxlbiB8PSBqO1xuICB9XG5cbiAgcmV0dXJuIGxlbjtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgZGVjb2RlcnMgPSBleHBvcnRzO1xuXG5kZWNvZGVycy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuZGVjb2RlcnMucGVtID0gcmVxdWlyZSgnLi9wZW0nKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuY29uc3QgQnVmZmVyID0gcmVxdWlyZSgnc2FmZXItYnVmZmVyJykuQnVmZmVyO1xuXG5jb25zdCBERVJEZWNvZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcblxuZnVuY3Rpb24gUEVNRGVjb2RlcihlbnRpdHkpIHtcbiAgREVSRGVjb2Rlci5jYWxsKHRoaXMsIGVudGl0eSk7XG4gIHRoaXMuZW5jID0gJ3BlbSc7XG59XG5pbmhlcml0cyhQRU1EZWNvZGVyLCBERVJEZWNvZGVyKTtcbm1vZHVsZS5leHBvcnRzID0gUEVNRGVjb2RlcjtcblxuUEVNRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGRhdGEsIG9wdGlvbnMpIHtcbiAgY29uc3QgbGluZXMgPSBkYXRhLnRvU3RyaW5nKCkuc3BsaXQoL1tcXHJcXG5dKy9nKTtcblxuICBjb25zdCBsYWJlbCA9IG9wdGlvbnMubGFiZWwudG9VcHBlckNhc2UoKTtcblxuICBjb25zdCByZSA9IC9eLS0tLS0oQkVHSU58RU5EKSAoW14tXSspLS0tLS0kLztcbiAgbGV0IHN0YXJ0ID0gLTE7XG4gIGxldCBlbmQgPSAtMTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG1hdGNoID0gbGluZXNbaV0ubWF0Y2gocmUpO1xuICAgIGlmIChtYXRjaCA9PT0gbnVsbClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgaWYgKG1hdGNoWzJdICE9PSBsYWJlbClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgaWYgKHN0YXJ0ID09PSAtMSkge1xuICAgICAgaWYgKG1hdGNoWzFdICE9PSAnQkVHSU4nKVxuICAgICAgICBicmVhaztcbiAgICAgIHN0YXJ0ID0gaTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG1hdGNoWzFdICE9PSAnRU5EJylcbiAgICAgICAgYnJlYWs7XG4gICAgICBlbmQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChzdGFydCA9PT0gLTEgfHwgZW5kID09PSAtMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BFTSBzZWN0aW9uIG5vdCBmb3VuZCBmb3I6ICcgKyBsYWJlbCk7XG5cbiAgY29uc3QgYmFzZTY0ID0gbGluZXMuc2xpY2Uoc3RhcnQgKyAxLCBlbmQpLmpvaW4oJycpO1xuICAvLyBSZW1vdmUgZXhjZXNzaXZlIHN5bWJvbHNcbiAgYmFzZTY0LnJlcGxhY2UoL1teYS16MC05Ky89XSsvZ2ksICcnKTtcblxuICBjb25zdCBpbnB1dCA9IEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpO1xuICByZXR1cm4gREVSRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlLmNhbGwodGhpcywgaW5wdXQsIG9wdGlvbnMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuY29uc3QgQnVmZmVyID0gcmVxdWlyZSgnc2FmZXItYnVmZmVyJykuQnVmZmVyO1xuY29uc3QgTm9kZSA9IHJlcXVpcmUoJy4uL2Jhc2Uvbm9kZScpO1xuXG4vLyBJbXBvcnQgREVSIGNvbnN0YW50c1xuY29uc3QgZGVyID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL2RlcicpO1xuXG5mdW5jdGlvbiBERVJFbmNvZGVyKGVudGl0eSkge1xuICB0aGlzLmVuYyA9ICdkZXInO1xuICB0aGlzLm5hbWUgPSBlbnRpdHkubmFtZTtcbiAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XG5cbiAgLy8gQ29uc3RydWN0IGJhc2UgdHJlZVxuICB0aGlzLnRyZWUgPSBuZXcgREVSTm9kZSgpO1xuICB0aGlzLnRyZWUuX2luaXQoZW50aXR5LmJvZHkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBERVJFbmNvZGVyO1xuXG5ERVJFbmNvZGVyLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgcmVwb3J0ZXIpIHtcbiAgcmV0dXJuIHRoaXMudHJlZS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKS5qb2luKCk7XG59O1xuXG4vLyBUcmVlIG1ldGhvZHNcblxuZnVuY3Rpb24gREVSTm9kZShwYXJlbnQpIHtcbiAgTm9kZS5jYWxsKHRoaXMsICdkZXInLCBwYXJlbnQpO1xufVxuaW5oZXJpdHMoREVSTm9kZSwgTm9kZSk7XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVDb21wb3NpdGUgPSBmdW5jdGlvbiBlbmNvZGVDb21wb3NpdGUodGFnLFxuICBwcmltaXRpdmUsXG4gIGNscyxcbiAgY29udGVudCkge1xuICBjb25zdCBlbmNvZGVkVGFnID0gZW5jb2RlVGFnKHRhZywgcHJpbWl0aXZlLCBjbHMsIHRoaXMucmVwb3J0ZXIpO1xuXG4gIC8vIFNob3J0IGZvcm1cbiAgaWYgKGNvbnRlbnQubGVuZ3RoIDwgMHg4MCkge1xuICAgIGNvbnN0IGhlYWRlciA9IEJ1ZmZlci5hbGxvYygyKTtcbiAgICBoZWFkZXJbMF0gPSBlbmNvZGVkVGFnO1xuICAgIGhlYWRlclsxXSA9IGNvbnRlbnQubGVuZ3RoO1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgaGVhZGVyLCBjb250ZW50IF0pO1xuICB9XG5cbiAgLy8gTG9uZyBmb3JtXG4gIC8vIENvdW50IG9jdGV0cyByZXF1aXJlZCB0byBzdG9yZSBsZW5ndGhcbiAgbGV0IGxlbk9jdGV0cyA9IDE7XG4gIGZvciAobGV0IGkgPSBjb250ZW50Lmxlbmd0aDsgaSA+PSAweDEwMDsgaSA+Pj0gOClcbiAgICBsZW5PY3RldHMrKztcblxuICBjb25zdCBoZWFkZXIgPSBCdWZmZXIuYWxsb2MoMSArIDEgKyBsZW5PY3RldHMpO1xuICBoZWFkZXJbMF0gPSBlbmNvZGVkVGFnO1xuICBoZWFkZXJbMV0gPSAweDgwIHwgbGVuT2N0ZXRzO1xuXG4gIGZvciAobGV0IGkgPSAxICsgbGVuT2N0ZXRzLCBqID0gY29udGVudC5sZW5ndGg7IGogPiAwOyBpLS0sIGogPj49IDgpXG4gICAgaGVhZGVyW2ldID0gaiAmIDB4ZmY7XG5cbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWyBoZWFkZXIsIGNvbnRlbnQgXSk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlU3RyID0gZnVuY3Rpb24gZW5jb2RlU3RyKHN0ciwgdGFnKSB7XG4gIGlmICh0YWcgPT09ICdiaXRzdHInKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWyBzdHIudW51c2VkIHwgMCwgc3RyLmRhdGEgXSk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnYm1wc3RyJykge1xuICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvYyhzdHIubGVuZ3RoICogMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGJ1Zi53cml0ZVVJbnQxNkJFKHN0ci5jaGFyQ29kZUF0KGkpLCBpICogMik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGJ1Zik7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnbnVtc3RyJykge1xuICAgIGlmICghdGhpcy5faXNOdW1zdHIoc3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ0VuY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIgc3VwcG9ydHMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25seSBkaWdpdHMgYW5kIHNwYWNlJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHN0cik7XG4gIH0gZWxzZSBpZiAodGFnID09PSAncHJpbnRzdHInKSB7XG4gICAgaWYgKCF0aGlzLl9pc1ByaW50c3RyKHN0cikpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgc3VwcG9ydHMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25seSBsYXRpbiB1cHBlciBhbmQgbG93ZXIgY2FzZSBsZXR0ZXJzLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaWdpdHMsIHNwYWNlLCBhcG9zdHJvcGhlLCBsZWZ0IGFuZCByaWd0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJlbnRoZXNpcywgcGx1cyBzaWduLCBjb21tYSwgaHlwaGVuLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb3QsIHNsYXNoLCBjb2xvbiwgZXF1YWwgc2lnbiwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVlc3Rpb24gbWFyaycpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ29iakRlc2MnKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgKyB0YWcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgdW5zdXBwb3J0ZWQnKTtcbiAgfVxufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZU9iamlkID0gZnVuY3Rpb24gZW5jb2RlT2JqaWQoaWQsIHZhbHVlcywgcmVsYXRpdmUpIHtcbiAgaWYgKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIXZhbHVlcylcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdzdHJpbmcgb2JqaWQgZ2l2ZW4sIGJ1dCBubyB2YWx1ZXMgbWFwIGZvdW5kJyk7XG4gICAgaWYgKCF2YWx1ZXMuaGFzT3duUHJvcGVydHkoaWQpKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ29iamlkIG5vdCBmb3VuZCBpbiB2YWx1ZXMgbWFwJyk7XG4gICAgaWQgPSB2YWx1ZXNbaWRdLnNwbGl0KC9bXFxzLl0rL2cpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspXG4gICAgICBpZFtpXSB8PSAwO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaWQpKSB7XG4gICAgaWQgPSBpZC5zbGljZSgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspXG4gICAgICBpZFtpXSB8PSAwO1xuICB9XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGlkKSkge1xuICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdvYmppZCgpIHNob3VsZCBiZSBlaXRoZXIgYXJyYXkgb3Igc3RyaW5nLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ290OiAnICsgSlNPTi5zdHJpbmdpZnkoaWQpKTtcbiAgfVxuXG4gIGlmICghcmVsYXRpdmUpIHtcbiAgICBpZiAoaWRbMV0gPj0gNDApXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignU2Vjb25kIG9iamlkIGlkZW50aWZpZXIgT09CJyk7XG4gICAgaWQuc3BsaWNlKDAsIDIsIGlkWzBdICogNDAgKyBpZFsxXSk7XG4gIH1cblxuICAvLyBDb3VudCBudW1iZXIgb2Ygb2N0ZXRzXG4gIGxldCBzaXplID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZC5sZW5ndGg7IGkrKykge1xuICAgIGxldCBpZGVudCA9IGlkW2ldO1xuICAgIGZvciAoc2l6ZSsrOyBpZGVudCA+PSAweDgwOyBpZGVudCA+Pj0gNylcbiAgICAgIHNpemUrKztcbiAgfVxuXG4gIGNvbnN0IG9iamlkID0gQnVmZmVyLmFsbG9jKHNpemUpO1xuICBsZXQgb2Zmc2V0ID0gb2JqaWQubGVuZ3RoIC0gMTtcbiAgZm9yIChsZXQgaSA9IGlkLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgbGV0IGlkZW50ID0gaWRbaV07XG4gICAgb2JqaWRbb2Zmc2V0LS1dID0gaWRlbnQgJiAweDdmO1xuICAgIHdoaWxlICgoaWRlbnQgPj49IDcpID4gMClcbiAgICAgIG9iamlkW29mZnNldC0tXSA9IDB4ODAgfCAoaWRlbnQgJiAweDdmKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG9iamlkKTtcbn07XG5cbmZ1bmN0aW9uIHR3byhudW0pIHtcbiAgaWYgKG51bSA8IDEwKVxuICAgIHJldHVybiAnMCcgKyBudW07XG4gIGVsc2VcbiAgICByZXR1cm4gbnVtO1xufVxuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlVGltZSA9IGZ1bmN0aW9uIGVuY29kZVRpbWUodGltZSwgdGFnKSB7XG4gIGxldCBzdHI7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aW1lKTtcblxuICBpZiAodGFnID09PSAnZ2VudGltZScpIHtcbiAgICBzdHIgPSBbXG4gICAgICB0d28oZGF0ZS5nZXRVVENGdWxsWWVhcigpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01vbnRoKCkgKyAxKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0RhdGUoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENIb3VycygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01pbnV0ZXMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENTZWNvbmRzKCkpLFxuICAgICAgJ1onXG4gICAgXS5qb2luKCcnKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICd1dGN0aW1lJykge1xuICAgIHN0ciA9IFtcbiAgICAgIHR3byhkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgJSAxMDApLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTW9udGgoKSArIDEpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDRGF0ZSgpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0hvdXJzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTWludXRlcygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ1NlY29uZHMoKSksXG4gICAgICAnWidcbiAgICBdLmpvaW4oJycpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ0VuY29kaW5nICcgKyB0YWcgKyAnIHRpbWUgaXMgbm90IHN1cHBvcnRlZCB5ZXQnKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9lbmNvZGVTdHIoc3RyLCAnb2N0c3RyJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlTnVsbCA9IGZ1bmN0aW9uIGVuY29kZU51bGwoKSB7XG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKCcnKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVJbnQgPSBmdW5jdGlvbiBlbmNvZGVJbnQobnVtLCB2YWx1ZXMpIHtcbiAgaWYgKHR5cGVvZiBudW0gPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKCF2YWx1ZXMpXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignU3RyaW5nIGludCBvciBlbnVtIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcCcpO1xuICAgIGlmICghdmFsdWVzLmhhc093blByb3BlcnR5KG51bSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdWYWx1ZXMgbWFwIGRvZXNuXFwndCBjb250YWluOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG51bSkpO1xuICAgIH1cbiAgICBudW0gPSB2YWx1ZXNbbnVtXTtcbiAgfVxuXG4gIC8vIEJpZ251bSwgYXNzdW1lIGJpZyBlbmRpYW5cbiAgaWYgKHR5cGVvZiBudW0gIT09ICdudW1iZXInICYmICFCdWZmZXIuaXNCdWZmZXIobnVtKSkge1xuICAgIGNvbnN0IG51bUFycmF5ID0gbnVtLnRvQXJyYXkoKTtcbiAgICBpZiAoIW51bS5zaWduICYmIG51bUFycmF5WzBdICYgMHg4MCkge1xuICAgICAgbnVtQXJyYXkudW5zaGlmdCgwKTtcbiAgICB9XG4gICAgbnVtID0gQnVmZmVyLmZyb20obnVtQXJyYXkpO1xuICB9XG5cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihudW0pKSB7XG4gICAgbGV0IHNpemUgPSBudW0ubGVuZ3RoO1xuICAgIGlmIChudW0ubGVuZ3RoID09PSAwKVxuICAgICAgc2l6ZSsrO1xuXG4gICAgY29uc3Qgb3V0ID0gQnVmZmVyLmFsbG9jKHNpemUpO1xuICAgIG51bS5jb3B5KG91dCk7XG4gICAgaWYgKG51bS5sZW5ndGggPT09IDApXG4gICAgICBvdXRbMF0gPSAwO1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG91dCk7XG4gIH1cblxuICBpZiAobnVtIDwgMHg4MClcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihudW0pO1xuXG4gIGlmIChudW0gPCAweDEwMClcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbMCwgbnVtXSk7XG5cbiAgbGV0IHNpemUgPSAxO1xuICBmb3IgKGxldCBpID0gbnVtOyBpID49IDB4MTAwOyBpID4+PSA4KVxuICAgIHNpemUrKztcblxuICBjb25zdCBvdXQgPSBuZXcgQXJyYXkoc2l6ZSk7XG4gIGZvciAobGV0IGkgPSBvdXQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBvdXRbaV0gPSBudW0gJiAweGZmO1xuICAgIG51bSA+Pj0gODtcbiAgfVxuICBpZihvdXRbMF0gJiAweDgwKSB7XG4gICAgb3V0LnVuc2hpZnQoMCk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihCdWZmZXIuZnJvbShvdXQpKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVCb29sID0gZnVuY3Rpb24gZW5jb2RlQm9vbCh2YWx1ZSkge1xuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih2YWx1ZSA/IDB4ZmYgOiAwKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl91c2UgPSBmdW5jdGlvbiB1c2UoZW50aXR5LCBvYmopIHtcbiAgaWYgKHR5cGVvZiBlbnRpdHkgPT09ICdmdW5jdGlvbicpXG4gICAgZW50aXR5ID0gZW50aXR5KG9iaik7XG4gIHJldHVybiBlbnRpdHkuX2dldEVuY29kZXIoJ2RlcicpLnRyZWU7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fc2tpcERlZmF1bHQgPSBmdW5jdGlvbiBza2lwRGVmYXVsdChkYXRhQnVmZmVyLCByZXBvcnRlciwgcGFyZW50KSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICBsZXQgaTtcbiAgaWYgKHN0YXRlWydkZWZhdWx0J10gPT09IG51bGwpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGRhdGEgPSBkYXRhQnVmZmVyLmpvaW4oKTtcbiAgaWYgKHN0YXRlLmRlZmF1bHRCdWZmZXIgPT09IHVuZGVmaW5lZClcbiAgICBzdGF0ZS5kZWZhdWx0QnVmZmVyID0gdGhpcy5fZW5jb2RlVmFsdWUoc3RhdGVbJ2RlZmF1bHQnXSwgcmVwb3J0ZXIsIHBhcmVudCkuam9pbigpO1xuXG4gIGlmIChkYXRhLmxlbmd0aCAhPT0gc3RhdGUuZGVmYXVsdEJ1ZmZlci5sZW5ndGgpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIGZvciAoaT0wOyBpIDwgZGF0YS5sZW5ndGg7IGkrKylcbiAgICBpZiAoZGF0YVtpXSAhPT0gc3RhdGUuZGVmYXVsdEJ1ZmZlcltpXSlcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIFV0aWxpdHkgbWV0aG9kc1xuXG5mdW5jdGlvbiBlbmNvZGVUYWcodGFnLCBwcmltaXRpdmUsIGNscywgcmVwb3J0ZXIpIHtcbiAgbGV0IHJlcztcblxuICBpZiAodGFnID09PSAnc2Vxb2YnKVxuICAgIHRhZyA9ICdzZXEnO1xuICBlbHNlIGlmICh0YWcgPT09ICdzZXRvZicpXG4gICAgdGFnID0gJ3NldCc7XG5cbiAgaWYgKGRlci50YWdCeU5hbWUuaGFzT3duUHJvcGVydHkodGFnKSlcbiAgICByZXMgPSBkZXIudGFnQnlOYW1lW3RhZ107XG4gIGVsc2UgaWYgKHR5cGVvZiB0YWcgPT09ICdudW1iZXInICYmICh0YWcgfCAwKSA9PT0gdGFnKVxuICAgIHJlcyA9IHRhZztcbiAgZWxzZVxuICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVW5rbm93biB0YWc6ICcgKyB0YWcpO1xuXG4gIGlmIChyZXMgPj0gMHgxZilcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ011bHRpLW9jdGV0IHRhZyBlbmNvZGluZyB1bnN1cHBvcnRlZCcpO1xuXG4gIGlmICghcHJpbWl0aXZlKVxuICAgIHJlcyB8PSAweDIwO1xuXG4gIHJlcyB8PSAoZGVyLnRhZ0NsYXNzQnlOYW1lW2NscyB8fCAndW5pdmVyc2FsJ10gPDwgNik7XG5cbiAgcmV0dXJuIHJlcztcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgZW5jb2RlcnMgPSBleHBvcnRzO1xuXG5lbmNvZGVycy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuZW5jb2RlcnMucGVtID0gcmVxdWlyZSgnLi9wZW0nKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5jb25zdCBERVJFbmNvZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcblxuZnVuY3Rpb24gUEVNRW5jb2RlcihlbnRpdHkpIHtcbiAgREVSRW5jb2Rlci5jYWxsKHRoaXMsIGVudGl0eSk7XG4gIHRoaXMuZW5jID0gJ3BlbSc7XG59XG5pbmhlcml0cyhQRU1FbmNvZGVyLCBERVJFbmNvZGVyKTtcbm1vZHVsZS5leHBvcnRzID0gUEVNRW5jb2RlcjtcblxuUEVNRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIG9wdGlvbnMpIHtcbiAgY29uc3QgYnVmID0gREVSRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlLmNhbGwodGhpcywgZGF0YSk7XG5cbiAgY29uc3QgcCA9IGJ1Zi50b1N0cmluZygnYmFzZTY0Jyk7XG4gIGNvbnN0IG91dCA9IFsgJy0tLS0tQkVHSU4gJyArIG9wdGlvbnMubGFiZWwgKyAnLS0tLS0nIF07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcC5sZW5ndGg7IGkgKz0gNjQpXG4gICAgb3V0LnB1c2gocC5zbGljZShpLCBpICsgNjQpKTtcbiAgb3V0LnB1c2goJy0tLS0tRU5EICcgKyBvcHRpb25zLmxhYmVsICsgJy0tLS0tJyk7XG4gIHJldHVybiBvdXQuam9pbignXFxuJyk7XG59O1xuIiwiKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFV0aWxzXG4gIGZ1bmN0aW9uIGFzc2VydCAodmFsLCBtc2cpIHtcbiAgICBpZiAoIXZhbCkgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xuICB9XG5cbiAgLy8gQ291bGQgdXNlIGBpbmhlcml0c2AgbW9kdWxlLCBidXQgZG9uJ3Qgd2FudCB0byBtb3ZlIGZyb20gc2luZ2xlIGZpbGVcbiAgLy8gYXJjaGl0ZWN0dXJlIHlldC5cbiAgZnVuY3Rpb24gaW5oZXJpdHMgKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGU7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKTtcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gIH1cblxuICAvLyBCTlxuXG4gIGZ1bmN0aW9uIEJOIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChCTi5pc0JOKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgdGhpcy53b3JkcyA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgLy8gUmVkdWN0aW9uIGNvbnRleHRcbiAgICB0aGlzLnJlZCA9IG51bGw7XG5cbiAgICBpZiAobnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gJ2xlJyB8fCBiYXNlID09PSAnYmUnKSB7XG4gICAgICAgIGVuZGlhbiA9IGJhc2U7XG4gICAgICAgIGJhc2UgPSAxMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdChudW1iZXIgfHwgMCwgYmFzZSB8fCAxMCwgZW5kaWFuIHx8ICdiZScpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJOO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQk4gPSBCTjtcbiAgfVxuXG4gIEJOLkJOID0gQk47XG4gIEJOLndvcmRTaXplID0gMjY7XG5cbiAgdmFyIEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5CdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBCdWZmZXIgPSB3aW5kb3cuQnVmZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gIH1cblxuICBCTi5pc0JOID0gZnVuY3Rpb24gaXNCTiAobnVtKSB7XG4gICAgaWYgKG51bSBpbnN0YW5jZW9mIEJOKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVtICE9PSBudWxsICYmIHR5cGVvZiBudW0gPT09ICdvYmplY3QnICYmXG4gICAgICBudW0uY29uc3RydWN0b3Iud29yZFNpemUgPT09IEJOLndvcmRTaXplICYmIEFycmF5LmlzQXJyYXkobnVtLndvcmRzKTtcbiAgfTtcblxuICBCTi5tYXggPSBmdW5jdGlvbiBtYXggKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA+IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5taW4gPSBmdW5jdGlvbiBtaW4gKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA8IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXROdW1iZXIobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXRBcnJheShudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBiYXNlID0gMTY7XG4gICAgfVxuICAgIGFzc2VydChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KTtcblxuICAgIG51bWJlciA9IG51bWJlci50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICBzdGFydCsrO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0IDwgbnVtYmVyLmxlbmd0aCkge1xuICAgICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICAgIHRoaXMuX3BhcnNlSGV4KG51bWJlciwgc3RhcnQsIGVuZGlhbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wYXJzZUJhc2UobnVtYmVyLCBiYXNlLCBzdGFydCk7XG4gICAgICAgIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgICAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0TnVtYmVyID0gZnVuY3Rpb24gX2luaXROdW1iZXIgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDB4NDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgbnVtYmVyICYgMHgzZmZmZmZmIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPCAweDEwMDAwMDAwMDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobnVtYmVyIDwgMHgyMDAwMDAwMDAwMDAwMCk7IC8vIDIgXiA1MyAodW5zYWZlKVxuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZixcbiAgICAgICAgMVxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICAvLyBSZXZlcnNlIHRoZSBieXRlc1xuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXRBcnJheSA9IGZ1bmN0aW9uIF9pbml0QXJyYXkgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgLy8gUGVyaGFwcyBhIFVpbnQ4QXJyYXlcbiAgICBhc3NlcnQodHlwZW9mIG51bWJlci5sZW5ndGggPT09ICdudW1iZXInKTtcbiAgICBpZiAobnVtYmVyLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbChudW1iZXIubGVuZ3RoIC8gMyk7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMSwgaiA9IDA7IGkgPj0gMDsgaSAtPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgLSAxXSA8PCA4KSB8IChudW1iZXJbaSAtIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpICsgMV0gPDwgOCkgfCAobnVtYmVyW2kgKyAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUhleDRCaXRzIChzdHJpbmcsIGluZGV4KSB7XG4gICAgdmFyIGMgPSBzdHJpbmcuY2hhckNvZGVBdChpbmRleCk7XG4gICAgLy8gJ0EnIC0gJ0YnXG4gICAgaWYgKGMgPj0gNjUgJiYgYyA8PSA3MCkge1xuICAgICAgcmV0dXJuIGMgLSA1NTtcbiAgICAvLyAnYScgLSAnZidcbiAgICB9IGVsc2UgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMDIpIHtcbiAgICAgIHJldHVybiBjIC0gODc7XG4gICAgLy8gJzAnIC0gJzknXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoYyAtIDQ4KSAmIDB4ZjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUhleEJ5dGUgKHN0cmluZywgbG93ZXJCb3VuZCwgaW5kZXgpIHtcbiAgICB2YXIgciA9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCk7XG4gICAgaWYgKGluZGV4IC0gMSA+PSBsb3dlckJvdW5kKSB7XG4gICAgICByIHw9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCAtIDEpIDw8IDQ7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUhleCA9IGZ1bmN0aW9uIF9wYXJzZUhleCAobnVtYmVyLCBzdGFydCwgZW5kaWFuKSB7XG4gICAgLy8gQ3JlYXRlIHBvc3NpYmx5IGJpZ2dlciBhcnJheSB0byBlbnN1cmUgdGhhdCBpdCBmaXRzIHRoZSBudW1iZXJcbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbCgobnVtYmVyLmxlbmd0aCAtIHN0YXJ0KSAvIDYpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgLy8gMjQtYml0cyBjaHVua3NcbiAgICB2YXIgb2ZmID0gMDtcbiAgICB2YXIgaiA9IDA7XG5cbiAgICB2YXIgdztcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMTsgaSA+PSBzdGFydDsgaSAtPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhcnNlTGVuZ3RoID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgICAgZm9yIChpID0gcGFyc2VMZW5ndGggJSAyID09PSAwID8gc3RhcnQgKyAxIDogc3RhcnQ7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIHIgKz0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICByICs9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUJhc2UgPSBmdW5jdGlvbiBfcGFyc2VCYXNlIChudW1iZXIsIGJhc2UsIHN0YXJ0KSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBhcyB6ZXJvXG4gICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA+IDEgJiYgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX25vcm1TaWduID0gZnVuY3Rpb24gX25vcm1TaWduICgpIHtcbiAgICAvLyAtMCA9IDBcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH07XG5cbiAgLypcblxuICB2YXIgemVyb3MgPSBbXTtcbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXTtcbiAgdmFyIGdyb3VwQmFzZXMgPSBbXTtcblxuICB2YXIgcyA9ICcnO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgQk4ud29yZFNpemUpIHtcbiAgICB6ZXJvc1tpXSA9IHM7XG4gICAgcyArPSAnMCc7XG4gIH1cbiAgZ3JvdXBTaXplc1swXSA9IDA7XG4gIGdyb3VwU2l6ZXNbMV0gPSAwO1xuICBncm91cEJhc2VzWzBdID0gMDtcbiAgZ3JvdXBCYXNlc1sxXSA9IDA7XG4gIHZhciBiYXNlID0gMiAtIDE7XG4gIHdoaWxlICgrK2Jhc2UgPCAzNiArIDEpIHtcbiAgICB2YXIgZ3JvdXBTaXplID0gMDtcbiAgICB2YXIgZ3JvdXBCYXNlID0gMTtcbiAgICB3aGlsZSAoZ3JvdXBCYXNlIDwgKDEgPDwgQk4ud29yZFNpemUpIC8gYmFzZSkge1xuICAgICAgZ3JvdXBCYXNlICo9IGJhc2U7XG4gICAgICBncm91cFNpemUgKz0gMTtcbiAgICB9XG4gICAgZ3JvdXBTaXplc1tiYXNlXSA9IGdyb3VwU2l6ZTtcbiAgICBncm91cEJhc2VzW2Jhc2VdID0gZ3JvdXBCYXNlO1xuICB9XG5cbiAgKi9cblxuICB2YXIgemVyb3MgPSBbXG4gICAgJycsXG4gICAgJzAnLFxuICAgICcwMCcsXG4gICAgJzAwMCcsXG4gICAgJzAwMDAnLFxuICAgICcwMDAwMCcsXG4gICAgJzAwMDAwMCcsXG4gICAgJzAwMDAwMDAnLFxuICAgICcwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gIF07XG5cbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXG4gICAgMCwgMCxcbiAgICAyNSwgMTYsIDEyLCAxMSwgMTAsIDksIDgsXG4gICAgOCwgNywgNywgNywgNywgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNVxuICBdO1xuXG4gIHZhciBncm91cEJhc2VzID0gW1xuICAgIDAsIDAsXG4gICAgMzM1NTQ0MzIsIDQzMDQ2NzIxLCAxNjc3NzIxNiwgNDg4MjgxMjUsIDYwNDY2MTc2LCA0MDM1MzYwNywgMTY3NzcyMTYsXG4gICAgNDMwNDY3MjEsIDEwMDAwMDAwLCAxOTQ4NzE3MSwgMzU4MzE4MDgsIDYyNzQ4NTE3LCA3NTI5NTM2LCAxMTM5MDYyNSxcbiAgICAxNjc3NzIxNiwgMjQxMzc1NjksIDM0MDEyMjI0LCA0NzA0NTg4MSwgNjQwMDAwMDAsIDQwODQxMDEsIDUxNTM2MzIsXG4gICAgNjQzNjM0MywgNzk2MjYyNCwgOTc2NTYyNSwgMTE4ODEzNzYsIDE0MzQ4OTA3LCAxNzIxMDM2OCwgMjA1MTExNDksXG4gICAgMjQzMDAwMDAsIDI4NjI5MTUxLCAzMzU1NDQzMiwgMzkxMzUzOTMsIDQ1NDM1NDI0LCA1MjUyMTg3NSwgNjA0NjYxNzZcbiAgXTtcblxuICBCTi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYmFzZSwgcGFkZGluZykge1xuICAgIGJhc2UgPSBiYXNlIHx8IDEwO1xuICAgIHBhZGRpbmcgPSBwYWRkaW5nIHwgMCB8fCAxO1xuXG4gICAgdmFyIG91dDtcbiAgICBpZiAoYmFzZSA9PT0gMTYgfHwgYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIG9mZiA9IDA7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgICAgdmFyIHdvcmQgPSAoKCh3IDw8IG9mZikgfCBjYXJyeSkgJiAweGZmZmZmZikudG9TdHJpbmcoMTYpO1xuICAgICAgICBjYXJyeSA9ICh3ID4+PiAoMjQgLSBvZmYpKSAmIDB4ZmZmZmZmO1xuICAgICAgICBpZiAoY2FycnkgIT09IDAgfHwgaSAhPT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbNiAtIHdvcmQubGVuZ3RoXSArIHdvcmQgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gd29yZCArIG91dDtcbiAgICAgICAgfVxuICAgICAgICBvZmYgKz0gMjtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgICBvdXQgPSBjYXJyeS50b1N0cmluZygxNikgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNikge1xuICAgICAgLy8gdmFyIGdyb3VwU2l6ZSA9IE1hdGguZmxvb3IoQk4ud29yZFNpemUgKiBNYXRoLkxOMiAvIE1hdGgubG9nKGJhc2UpKTtcbiAgICAgIHZhciBncm91cFNpemUgPSBncm91cFNpemVzW2Jhc2VdO1xuICAgICAgLy8gdmFyIGdyb3VwQmFzZSA9IE1hdGgucG93KGJhc2UsIGdyb3VwU2l6ZSk7XG4gICAgICB2YXIgZ3JvdXBCYXNlID0gZ3JvdXBCYXNlc1tiYXNlXTtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIGMgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjLm5lZ2F0aXZlID0gMDtcbiAgICAgIHdoaWxlICghYy5pc1plcm8oKSkge1xuICAgICAgICB2YXIgciA9IGMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgICB2YXIgbGl0dGxlRW5kaWFuID0gZW5kaWFuID09PSAnbGUnO1xuICAgIHZhciByZXMgPSBuZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7XG5cbiAgICB2YXIgYiwgaTtcbiAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKTtcbiAgICBpZiAoIWxpdHRsZUVuZGlhbikge1xuICAgICAgLy8gQXNzdW1lIGJpZy1lbmRpYW5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXFMZW5ndGggLSBieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW3JlcUxlbmd0aCAtIGkgLSAxXSA9IGI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tpXSA9IGI7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBpIDwgcmVxTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSAmICgxIDw8IHdiaXQpKSA+Pj4gd2JpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdztcbiAgfVxuXG4gIC8vIE51bWJlciBvZiB0cmFpbGluZyB6ZXJvIGJpdHNcbiAgQk4ucHJvdG90eXBlLnplcm9CaXRzID0gZnVuY3Rpb24gemVyb0JpdHMgKCkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gMDtcblxuICAgIHZhciByID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBiID0gdGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7XG4gICAgICByICs9IGI7XG4gICAgICBpZiAoYiAhPT0gMjYpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIGJ5dGVMZW5ndGggKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKSAvIDgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1R3b3MgPSBmdW5jdGlvbiB0b1R3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVR3b3MgPSBmdW5jdGlvbiBmcm9tVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy50ZXN0bih3aWR0aCAtIDEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RuKHdpZHRoKS5pYWRkbigxKS5pbmVnKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gaXNOZWcgKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlICE9PSAwO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluZWcgPSBmdW5jdGlvbiBpbmVnICgpIHtcbiAgICBpZiAoIXRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVvciA9IGZ1bmN0aW9uIGl1b3IgKG51bSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSB8IG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXhvciA9IGZ1bmN0aW9uIGl4b3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1eG9yKG51bSk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5peG9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51eG9yID0gZnVuY3Rpb24gdXhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKTtcbiAgfTtcblxuICAvLyBOb3QgYGB0aGlzYGAgd2l0aCBgYHdpZHRoYGAgYml0d2lkdGhcbiAgQk4ucHJvdG90eXBlLmlub3RuID0gZnVuY3Rpb24gaW5vdG4gKHdpZHRoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgJiYgd2lkdGggPj0gMCk7XG5cbiAgICB2YXIgYnl0ZXNOZWVkZWQgPSBNYXRoLmNlaWwod2lkdGggLyAyNikgfCAwO1xuICAgIHZhciBiaXRzTGVmdCA9IHdpZHRoICUgMjY7XG5cbiAgICAvLyBFeHRlbmQgdGhlIGJ1ZmZlciB3aXRoIGxlYWRpbmcgemVyb2VzXG4gICAgdGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtcblxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIGJ5dGVzTmVlZGVkLS07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRlIHdvcmRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlc05lZWRlZDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRoZSByZXNpZHVlXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgKDB4M2ZmZmZmZiA+PiAoMjYgLSBiaXRzTGVmdCkpO1xuICAgIH1cblxuICAgIC8vIEFuZCByZW1vdmUgbGVhZGluZyB6ZXJvZXNcbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gc21hbGxNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIHZhciBsZW4gPSAoc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoKSB8IDA7XG4gICAgb3V0Lmxlbmd0aCA9IGxlbjtcbiAgICBsZW4gPSAobGVuIC0gMSkgfCAwO1xuXG4gICAgLy8gUGVlbCBvbmUgaXRlcmF0aW9uIChjb21waWxlciBjYW4ndCBkbyBpdCwgYmVjYXVzZSBvZiBjb2RlIGNvbXBsZXhpdHkpXG4gICAgdmFyIGEgPSBzZWxmLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgYiA9IG51bS53b3Jkc1swXSB8IDA7XG4gICAgdmFyIHIgPSBhICogYjtcblxuICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgdmFyIGNhcnJ5ID0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICBvdXQud29yZHNbMF0gPSBsbztcblxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gY2FycnkgPj4+IDI2O1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSAoayAtIGopIHwgMDtcbiAgICAgICAgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgciA9IGEgKiBiICsgcndvcmQ7XG4gICAgICAgIG5jYXJyeSArPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgICByd29yZCA9IHIgJiAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZCB8IDA7XG4gICAgICBjYXJyeSA9IG5jYXJyeSB8IDA7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2FycnkgfCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNobG4gPSBmdW5jdGlvbiBpc2hsbiAoYml0cykge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHQgaW4tcGxhY2VcbiAgLy8gTk9URTogYGhpbnRgIGlzIGEgbG93ZXN0IGJpdCBiZWZvcmUgdHJhaWxpbmcgemVyb2VzXG4gIC8vIE5PVEU6IGlmIGBleHRlbmRlZGAgaXMgcHJlc2VudCAtIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggZGVzdHJveWVkIGJpdHNcbiAgQk4ucHJvdG90eXBlLml1c2hybiA9IGZ1bmN0aW9uIGl1c2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIGg7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIGggPSAoaGludCAtIChoaW50ICUgMjYpKSAvIDI2O1xuICAgIH0gZWxzZSB7XG4gICAgICBoID0gMDtcbiAgICB9XG5cbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IE1hdGgubWluKChiaXRzIC0gcikgLyAyNiwgdGhpcy5sZW5ndGgpO1xuICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgIHZhciBtYXNrZWRXb3JkcyA9IGV4dGVuZGVkO1xuXG4gICAgaCAtPSBzO1xuICAgIGggPSBNYXRoLm1heCgwLCBoKTtcblxuICAgIC8vIEV4dGVuZGVkIG1vZGUsIGNvcHkgbWFza2VkIHBhcnRcbiAgICBpZiAobWFza2VkV29yZHMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIG1hc2tlZFdvcmRzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICAgIG1hc2tlZFdvcmRzLmxlbmd0aCA9IHM7XG4gICAgfVxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIC8vIE5vLW9wLCB3ZSBzaG91bGQgbm90IG1vdmUgYW55dGhpbmcgYXQgYWxsXG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IHMpIHtcbiAgICAgIHRoaXMubGVuZ3RoIC09IHM7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpICsgc107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDAgJiYgKGNhcnJ5ICE9PSAwIHx8IGkgPj0gaCk7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAoY2FycnkgPDwgKDI2IC0gcikpIHwgKHdvcmQgPj4+IHIpO1xuICAgICAgY2FycnkgPSB3b3JkICYgbWFzaztcbiAgICB9XG5cbiAgICAvLyBQdXNoIGNhcnJpZWQgYml0cyBhcyBhIG1hc2tcbiAgICBpZiAobWFza2VkV29yZHMgJiYgY2FycnkgIT09IDApIHtcbiAgICAgIG1hc2tlZFdvcmRzLndvcmRzW21hc2tlZFdvcmRzLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyLnN0cmlwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NCBpbnN0YW5jZVxuICAgICAgICByLnN0cmlwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByIGlzIEJOIHY1IGluc3RhbmNlXG4gICAgICAgIHIuX3N0cmlwKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0KSB7XG4gICAgaW5wdXQuaXVzaHJuKHRoaXMubiwgMCwgb3V0KTtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIHJldHVybiBudW0uaW11bCh0aGlzLmspO1xuICB9O1xuXG4gIGZ1bmN0aW9uIEsyNTYgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdrMjU2JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZicpO1xuICB9XG4gIGluaGVyaXRzKEsyNTYsIE1QcmltZSk7XG5cbiAgSzI1Ni5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dHB1dCkge1xuICAgIC8vIDI1NiA9IDkgKiAyNiArIDIyXG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZjtcblxuICAgIHZhciBvdXRMZW4gPSBNYXRoLm1pbihpbnB1dC5sZW5ndGgsIDkpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0TGVuOyBpKyspIHtcbiAgICAgIG91dHB1dC53b3Jkc1tpXSA9IGlucHV0LndvcmRzW2ldO1xuICAgIH1cbiAgICBvdXRwdXQubGVuZ3RoID0gb3V0TGVuO1xuXG4gICAgaWYgKGlucHV0Lmxlbmd0aCA8PSA5KSB7XG4gICAgICBpbnB1dC53b3Jkc1swXSA9IDA7XG4gICAgICBpbnB1dC5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNoaWZ0IGJ5IDkgbGltYnNcbiAgICB2YXIgcHJldiA9IGlucHV0LndvcmRzWzldO1xuICAgIG91dHB1dC53b3Jkc1tvdXRwdXQubGVuZ3RoKytdID0gcHJldiAmIG1hc2s7XG5cbiAgICBmb3IgKGkgPSAxMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmV4dCA9IGlucHV0LndvcmRzW2ldIHwgMDtcbiAgICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSAoKG5leHQgJiBtYXNrKSA8PCA0KSB8IChwcmV2ID4+PiAyMik7XG4gICAgICBwcmV2ID0gbmV4dDtcbiAgICB9XG4gICAgcHJldiA+Pj49IDIyO1xuICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSBwcmV2O1xuICAgIGlmIChwcmV2ID09PSAwICYmIGlucHV0Lmxlbmd0aCA+IDEwKSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gMTA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSA5O1xuICAgIH1cbiAgfTtcblxuICBLMjU2LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxMDAwMDAzZDEgPSBbIDB4NDAsIDB4M2QxIF1cbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aF0gPSAwO1xuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoICsgMV0gPSAwO1xuICAgIG51bS5sZW5ndGggKz0gMjtcblxuICAgIC8vIGJvdW5kZWQgYXQ6IDB4NDAgKiAweDNmZmZmZmYgKyAweDNkMCA9IDB4MTAwMDAwMzkwXG4gICAgdmFyIGxvID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSBudW0ud29yZHNbaV0gfCAwO1xuICAgICAgbG8gKz0gdyAqIDB4M2QxO1xuICAgICAgbnVtLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICBsbyA9IHcgKiAweDQwICsgKChsbyAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICB9XG5cbiAgICAvLyBGYXN0IGxlbmd0aCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIGZ1bmN0aW9uIFAyMjQgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMjI0JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScpO1xuICB9XG4gIGluaGVyaXRzKFAyMjQsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDE5MiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AxOTInLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDE5MiwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMjU1MTkgKCkge1xuICAgIC8vIDIgXiAyNTUgLSAxOVxuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICcyNTUxOScsXG4gICAgICAnN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCcpO1xuICB9XG4gIGluaGVyaXRzKFAyNTUxOSwgTVByaW1lKTtcblxuICBQMjU1MTkucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEzXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGhpID0gKG51bS53b3Jkc1tpXSB8IDApICogMHgxMyArIGNhcnJ5O1xuICAgICAgdmFyIGxvID0gaGkgJiAweDNmZmZmZmY7XG4gICAgICBoaSA+Pj49IDI2O1xuXG4gICAgICBudW0ud29yZHNbaV0gPSBsbztcbiAgICAgIGNhcnJ5ID0gaGk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgbnVtLndvcmRzW251bS5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICAvLyBFeHBvcnRlZCBtb3N0bHkgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHVzZSBwbGFpbiBuYW1lIGluc3RlYWRcbiAgQk4uX3ByaW1lID0gZnVuY3Rpb24gcHJpbWUgKG5hbWUpIHtcbiAgICAvLyBDYWNoZWQgdmVyc2lvbiBvZiBwcmltZVxuICAgIGlmIChwcmltZXNbbmFtZV0pIHJldHVybiBwcmltZXNbbmFtZV07XG5cbiAgICB2YXIgcHJpbWU7XG4gICAgaWYgKG5hbWUgPT09ICdrMjU2Jykge1xuICAgICAgcHJpbWUgPSBuZXcgSzI1NigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyMjQnKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjI0KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDE5MicpIHtcbiAgICAgIHByaW1lID0gbmV3IFAxOTIoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjU1MTknKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjU1MTkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByaW1lICcgKyBuYW1lKTtcbiAgICB9XG4gICAgcHJpbWVzW25hbWVdID0gcHJpbWU7XG5cbiAgICByZXR1cm4gcHJpbWU7XG4gIH07XG5cbiAgLy9cbiAgLy8gQmFzZSByZWR1Y3Rpb24gZW5naW5lXG4gIC8vXG4gIGZ1bmN0aW9uIFJlZCAobSkge1xuICAgIGlmICh0eXBlb2YgbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBwcmltZSA9IEJOLl9wcmltZShtKTtcbiAgICAgIHRoaXMubSA9IHByaW1lLnA7XG4gICAgICB0aGlzLnByaW1lID0gcHJpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChtLmd0bigxKSwgJ21vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMScpO1xuICAgICAgdGhpcy5tID0gbTtcbiAgICAgIHRoaXMucHJpbWUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTEgPSBmdW5jdGlvbiBfdmVyaWZ5MSAoYSkge1xuICAgIGFzc2VydChhLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQsICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MiA9IGZ1bmN0aW9uIF92ZXJpZnkyIChhLCBiKSB7XG4gICAgYXNzZXJ0KChhLm5lZ2F0aXZlIHwgYi5uZWdhdGl2ZSkgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCAmJiBhLnJlZCA9PT0gYi5yZWQsXG4gICAgICAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW1vZCA9IGZ1bmN0aW9uIGltb2QgKGEpIHtcbiAgICBpZiAodGhpcy5wcmltZSkgcmV0dXJuIHRoaXMucHJpbWUuaXJlZHVjZShhKS5fZm9yY2VSZWQodGhpcyk7XG4gICAgcmV0dXJuIGEudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm0uc3ViKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5hZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlhZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLnN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlzdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNobCA9IGZ1bmN0aW9uIHNobCAoYSwgbnVtKSB7XG4gICAgdGhpcy5fdmVyaWZ5MShhKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEudXNobG4obnVtKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLmltdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEubXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bChhLCBhLmNsb25lKCkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKGEsIGEpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FydCA9IGZ1bmN0aW9uIHNxcnQgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciBtb2QzID0gdGhpcy5tLmFuZGxuKDMpO1xuICAgIGFzc2VydChtb2QzICUgMiA9PT0gMSk7XG5cbiAgICAvLyBGYXN0IGNhc2VcbiAgICBpZiAobW9kMyA9PT0gMykge1xuICAgICAgdmFyIHBvdyA9IHRoaXMubS5hZGQobmV3IEJOKDEpKS5pdXNocm4oMik7XG4gICAgICByZXR1cm4gdGhpcy5wb3coYSwgcG93KTtcbiAgICB9XG5cbiAgICAvLyBUb25lbGxpLVNoYW5rcyBhbGdvcml0aG0gKFRvdGFsbHkgdW5vcHRpbWl6ZWQgYW5kIHNsb3cpXG4gICAgLy9cbiAgICAvLyBGaW5kIFEgYW5kIFMsIHRoYXQgUSAqIDIgXiBTID0gKFAgLSAxKVxuICAgIHZhciBxID0gdGhpcy5tLnN1Ym4oMSk7XG4gICAgdmFyIHMgPSAwO1xuICAgIHdoaWxlICghcS5pc1plcm8oKSAmJiBxLmFuZGxuKDEpID09PSAwKSB7XG4gICAgICBzKys7XG4gICAgICBxLml1c2hybigxKTtcbiAgICB9XG4gICAgYXNzZXJ0KCFxLmlzWmVybygpKTtcblxuICAgIHZhciBvbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgdmFyIG5PbmUgPSBvbmUucmVkTmVnKCk7XG5cbiAgICAvLyBGaW5kIHF1YWRyYXRpYyBub24tcmVzaWR1ZVxuICAgIC8vIE5PVEU6IE1heCBpcyBzdWNoIGJlY2F1c2Ugb2YgZ2VuZXJhbGl6ZWQgUmllbWFubiBoeXBvdGhlc2lzLlxuICAgIHZhciBscG93ID0gdGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpO1xuICAgIHZhciB6ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIHogPSBuZXcgQk4oMiAqIHogKiB6KS50b1JlZCh0aGlzKTtcblxuICAgIHdoaWxlICh0aGlzLnBvdyh6LCBscG93KS5jbXAobk9uZSkgIT09IDApIHtcbiAgICAgIHoucmVkSUFkZChuT25lKTtcbiAgICB9XG5cbiAgICB2YXIgYyA9IHRoaXMucG93KHosIHEpO1xuICAgIHZhciByID0gdGhpcy5wb3coYSwgcS5hZGRuKDEpLml1c2hybigxKSk7XG4gICAgdmFyIHQgPSB0aGlzLnBvdyhhLCBxKTtcbiAgICB2YXIgbSA9IHM7XG4gICAgd2hpbGUgKHQuY21wKG9uZSkgIT09IDApIHtcbiAgICAgIHZhciB0bXAgPSB0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IHRtcC5jbXAob25lKSAhPT0gMDsgaSsrKSB7XG4gICAgICAgIHRtcCA9IHRtcC5yZWRTcXIoKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydChpIDwgbSk7XG4gICAgICB2YXIgYiA9IHRoaXMucG93KGMsIG5ldyBCTigxKS5pdXNobG4obSAtIGkgLSAxKSk7XG5cbiAgICAgIHIgPSByLnJlZE11bChiKTtcbiAgICAgIGMgPSBiLnJlZFNxcigpO1xuICAgICAgdCA9IHQucmVkTXVsKGMpO1xuICAgICAgbSA9IGk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIHZhciBpbnYgPSBhLl9pbnZtcCh0aGlzLm0pO1xuICAgIGlmIChpbnYubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGludi5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludikucmVkTmVnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KTtcbiAgICB9XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKGEsIG51bSkge1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgaWYgKG51bS5jbXBuKDEpID09PSAwKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIHdpbmRvd1NpemUgPSA0O1xuICAgIHZhciB3bmQgPSBuZXcgQXJyYXkoMSA8PCB3aW5kb3dTaXplKTtcbiAgICB3bmRbMF0gPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgd25kWzFdID0gYTtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IHduZC5sZW5ndGg7IGkrKykge1xuICAgICAgd25kW2ldID0gdGhpcy5tdWwod25kW2kgLSAxXSwgYSk7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IHduZFswXTtcbiAgICB2YXIgY3VycmVudCA9IDA7XG4gICAgdmFyIGN1cnJlbnRMZW4gPSAwO1xuICAgIHZhciBzdGFydCA9IG51bS5iaXRMZW5ndGgoKSAlIDI2O1xuICAgIGlmIChzdGFydCA9PT0gMCkge1xuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSBudW0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gbnVtLndvcmRzW2ldO1xuICAgICAgZm9yICh2YXIgaiA9IHN0YXJ0IC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgdmFyIGJpdCA9ICh3b3JkID4+IGopICYgMTtcbiAgICAgICAgaWYgKHJlcyAhPT0gd25kWzBdKSB7XG4gICAgICAgICAgcmVzID0gdGhpcy5zcXIocmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXQgPT09IDAgJiYgY3VycmVudCA9PT0gMCkge1xuICAgICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudCA8PD0gMTtcbiAgICAgICAgY3VycmVudCB8PSBiaXQ7XG4gICAgICAgIGN1cnJlbnRMZW4rKztcbiAgICAgICAgaWYgKGN1cnJlbnRMZW4gIT09IHdpbmRvd1NpemUgJiYgKGkgIT09IDAgfHwgaiAhPT0gMCkpIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHRoaXMubXVsKHJlcywgd25kW2N1cnJlbnRdKTtcbiAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgIGN1cnJlbnQgPSAwO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICB2YXIgciA9IG51bS51bW9kKHRoaXMubSk7XG5cbiAgICByZXR1cm4gciA9PT0gbnVtID8gci5jbG9uZSgpIDogcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByZXMgPSBudW0uY2xvbmUoKTtcbiAgICByZXMucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vXG4gIC8vIE1vbnRnb21lcnkgbWV0aG9kIGVuZ2luZVxuICAvL1xuXG4gIEJOLm1vbnQgPSBmdW5jdGlvbiBtb250IChudW0pIHtcbiAgICByZXR1cm4gbmV3IE1vbnQobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBNb250IChtKSB7XG4gICAgUmVkLmNhbGwodGhpcywgbSk7XG5cbiAgICB0aGlzLnNoaWZ0ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIGlmICh0aGlzLnNoaWZ0ICUgMjYgIT09IDApIHtcbiAgICAgIHRoaXMuc2hpZnQgKz0gMjYgLSAodGhpcy5zaGlmdCAlIDI2KTtcbiAgICB9XG5cbiAgICB0aGlzLnIgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpO1xuICAgIHRoaXMucjIgPSB0aGlzLmltb2QodGhpcy5yLnNxcigpKTtcbiAgICB0aGlzLnJpbnYgPSB0aGlzLnIuX2ludm1wKHRoaXMubSk7XG5cbiAgICB0aGlzLm1pbnYgPSB0aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSk7XG4gICAgdGhpcy5taW52ID0gdGhpcy5taW52LnVtb2QodGhpcy5yKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLnIuc3ViKHRoaXMubWludik7XG4gIH1cbiAgaW5oZXJpdHMoTW9udCwgUmVkKTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmltb2QobnVtLnVzaGxuKHRoaXMuc2hpZnQpKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgciA9IHRoaXMuaW1vZChudW0ubXVsKHRoaXMucmludikpO1xuICAgIHIucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHtcbiAgICAgIGEud29yZHNbMF0gPSAwO1xuICAgICAgYS5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgdmFyIHQgPSBhLmltdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG5cbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMCkuX2ZvcmNlUmVkKHRoaXMpO1xuXG4gICAgdmFyIHQgPSBhLm11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgLy8gKEFSKV4tMSAqIFJeMiA9IChBXi0xICogUl4tMSkgKiBSXjIgPSBBXi0xICogUlxuICAgIHZhciByZXMgPSB0aGlzLmltb2QoYS5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpO1xuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xufSkodHlwZW9mIG1vZHVsZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbW9kdWxlLCB0aGlzKTtcbiIsIi8vIEN1cnJlbnRseSBpbiBzeW5jIHdpdGggTm9kZS5qcyBsaWIvYXNzZXJ0LmpzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvY29tbWl0LzJhNTFhZTQyNGE1MTNlYzlhNmFhMzQ2NmJhYTBjYzFkNTVkZDRmM2Jcbi8vIE9yaWdpbmFsbHkgZnJvbSBuYXJ3aGFsLmpzIChodHRwOi8vbmFyd2hhbGpzLm9yZylcbi8vIENvcHlyaWdodCAoYykgMjAwOSBUaG9tYXMgUm9iaW5zb24gPDI4MG5vcnRoLmNvbT5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAnU29mdHdhcmUnKSwgdG9cbi8vIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4vLyByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Jcbi8vIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgJ0FTIElTJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOXG4vLyBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OXG4vLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIF9yZXF1aXJlID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9lcnJvcnMnKSxcbiAgICBfcmVxdWlyZSRjb2RlcyA9IF9yZXF1aXJlLmNvZGVzLFxuICAgIEVSUl9BTUJJR1VPVVNfQVJHVU1FTlQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfQU1CSUdVT1VTX0FSR1VNRU5ULFxuICAgIEVSUl9JTlZBTElEX0FSR19UWVBFID0gX3JlcXVpcmUkY29kZXMuRVJSX0lOVkFMSURfQVJHX1RZUEUsXG4gICAgRVJSX0lOVkFMSURfQVJHX1ZBTFVFID0gX3JlcXVpcmUkY29kZXMuRVJSX0lOVkFMSURfQVJHX1ZBTFVFLFxuICAgIEVSUl9JTlZBTElEX1JFVFVSTl9WQUxVRSA9IF9yZXF1aXJlJGNvZGVzLkVSUl9JTlZBTElEX1JFVFVSTl9WQUxVRSxcbiAgICBFUlJfTUlTU0lOR19BUkdTID0gX3JlcXVpcmUkY29kZXMuRVJSX01JU1NJTkdfQVJHUztcblxudmFyIEFzc2VydGlvbkVycm9yID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9hc3NlcnQvYXNzZXJ0aW9uX2Vycm9yJyk7XG5cbnZhciBfcmVxdWlyZTIgPSByZXF1aXJlKCd1dGlsLycpLFxuICAgIGluc3BlY3QgPSBfcmVxdWlyZTIuaW5zcGVjdDtcblxudmFyIF9yZXF1aXJlJHR5cGVzID0gcmVxdWlyZSgndXRpbC8nKS50eXBlcyxcbiAgICBpc1Byb21pc2UgPSBfcmVxdWlyZSR0eXBlcy5pc1Byb21pc2UsXG4gICAgaXNSZWdFeHAgPSBfcmVxdWlyZSR0eXBlcy5pc1JlZ0V4cDtcblxudmFyIG9iamVjdEFzc2lnbiA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduIDogcmVxdWlyZSgnZXM2LW9iamVjdC1hc3NpZ24nKS5hc3NpZ247XG52YXIgb2JqZWN0SXMgPSBPYmplY3QuaXMgPyBPYmplY3QuaXMgOiByZXF1aXJlKCdvYmplY3QtaXMnKTtcbnZhciBlcnJvckNhY2hlID0gbmV3IE1hcCgpO1xudmFyIGlzRGVlcEVxdWFsO1xudmFyIGlzRGVlcFN0cmljdEVxdWFsO1xudmFyIHBhcnNlRXhwcmVzc2lvbkF0O1xudmFyIGZpbmROb2RlQXJvdW5kO1xudmFyIGRlY29kZXI7XG5cbmZ1bmN0aW9uIGxhenlMb2FkQ29tcGFyaXNvbigpIHtcbiAgdmFyIGNvbXBhcmlzb24gPSByZXF1aXJlKCcuL2ludGVybmFsL3V0aWwvY29tcGFyaXNvbnMnKTtcblxuICBpc0RlZXBFcXVhbCA9IGNvbXBhcmlzb24uaXNEZWVwRXF1YWw7XG4gIGlzRGVlcFN0cmljdEVxdWFsID0gY29tcGFyaXNvbi5pc0RlZXBTdHJpY3RFcXVhbDtcbn0gLy8gRXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVycyBidXQgbm90IFxcbiBhbmQgXFx0IHRvIGtlZXAgdGhlIGxpbmUgYnJlYWtzIGFuZFxuLy8gaW5kZW50YXRpb24gaW50YWN0LlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRyb2wtcmVnZXhcblxuXG52YXIgZXNjYXBlU2VxdWVuY2VzUmVnRXhwID0gL1tcXHgwMC1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZl0vZztcbnZhciBtZXRhID0gW1wiXFxcXHUwMDAwXCIsIFwiXFxcXHUwMDAxXCIsIFwiXFxcXHUwMDAyXCIsIFwiXFxcXHUwMDAzXCIsIFwiXFxcXHUwMDA0XCIsIFwiXFxcXHUwMDA1XCIsIFwiXFxcXHUwMDA2XCIsIFwiXFxcXHUwMDA3XCIsICdcXFxcYicsICcnLCAnJywgXCJcXFxcdTAwMGJcIiwgJ1xcXFxmJywgJycsIFwiXFxcXHUwMDBlXCIsIFwiXFxcXHUwMDBmXCIsIFwiXFxcXHUwMDEwXCIsIFwiXFxcXHUwMDExXCIsIFwiXFxcXHUwMDEyXCIsIFwiXFxcXHUwMDEzXCIsIFwiXFxcXHUwMDE0XCIsIFwiXFxcXHUwMDE1XCIsIFwiXFxcXHUwMDE2XCIsIFwiXFxcXHUwMDE3XCIsIFwiXFxcXHUwMDE4XCIsIFwiXFxcXHUwMDE5XCIsIFwiXFxcXHUwMDFhXCIsIFwiXFxcXHUwMDFiXCIsIFwiXFxcXHUwMDFjXCIsIFwiXFxcXHUwMDFkXCIsIFwiXFxcXHUwMDFlXCIsIFwiXFxcXHUwMDFmXCJdO1xuXG52YXIgZXNjYXBlRm4gPSBmdW5jdGlvbiBlc2NhcGVGbihzdHIpIHtcbiAgcmV0dXJuIG1ldGFbc3RyLmNoYXJDb2RlQXQoMCldO1xufTtcblxudmFyIHdhcm5lZCA9IGZhbHNlOyAvLyBUaGUgYXNzZXJ0IG1vZHVsZSBwcm92aWRlcyBmdW5jdGlvbnMgdGhhdCB0aHJvd1xuLy8gQXNzZXJ0aW9uRXJyb3IncyB3aGVuIHBhcnRpY3VsYXIgY29uZGl0aW9ucyBhcmUgbm90IG1ldC4gVGhlXG4vLyBhc3NlcnQgbW9kdWxlIG11c3QgY29uZm9ybSB0byB0aGUgZm9sbG93aW5nIGludGVyZmFjZS5cblxudmFyIGFzc2VydCA9IG1vZHVsZS5leHBvcnRzID0gb2s7XG52YXIgTk9fRVhDRVBUSU9OX1NFTlRJTkVMID0ge307IC8vIEFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHRocm93IGFuIEFzc2VydGlvbkVycm9yXG4vLyB3aGVuIGEgY29ycmVzcG9uZGluZyBjb25kaXRpb24gaXMgbm90IG1ldCwgd2l0aCBhIG1lc3NhZ2UgdGhhdFxuLy8gbWF5IGJlIHVuZGVmaW5lZCBpZiBub3QgcHJvdmlkZWQuIEFsbCBhc3NlcnRpb24gbWV0aG9kcyBwcm92aWRlXG4vLyBib3RoIHRoZSBhY3R1YWwgYW5kIGV4cGVjdGVkIHZhbHVlcyB0byB0aGUgYXNzZXJ0aW9uIGVycm9yIGZvclxuLy8gZGlzcGxheSBwdXJwb3Nlcy5cblxuZnVuY3Rpb24gaW5uZXJGYWlsKG9iaikge1xuICBpZiAob2JqLm1lc3NhZ2UgaW5zdGFuY2VvZiBFcnJvcikgdGhyb3cgb2JqLm1lc3NhZ2U7XG4gIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihvYmopO1xufVxuXG5mdW5jdGlvbiBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsIG9wZXJhdG9yLCBzdGFja1N0YXJ0Rm4pIHtcbiAgdmFyIGFyZ3NMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW50ZXJuYWxNZXNzYWdlO1xuXG4gIGlmIChhcmdzTGVuID09PSAwKSB7XG4gICAgaW50ZXJuYWxNZXNzYWdlID0gJ0ZhaWxlZCc7XG4gIH0gZWxzZSBpZiAoYXJnc0xlbiA9PT0gMSkge1xuICAgIG1lc3NhZ2UgPSBhY3R1YWw7XG4gICAgYWN0dWFsID0gdW5kZWZpbmVkO1xuICB9IGVsc2Uge1xuICAgIGlmICh3YXJuZWQgPT09IGZhbHNlKSB7XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgICAgdmFyIHdhcm4gPSBwcm9jZXNzLmVtaXRXYXJuaW5nID8gcHJvY2Vzcy5lbWl0V2FybmluZyA6IGNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpO1xuICAgICAgd2FybignYXNzZXJ0LmZhaWwoKSB3aXRoIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQgaXMgZGVwcmVjYXRlZC4gJyArICdQbGVhc2UgdXNlIGFzc2VydC5zdHJpY3RFcXVhbCgpIGluc3RlYWQgb3Igb25seSBwYXNzIGEgbWVzc2FnZS4nLCAnRGVwcmVjYXRpb25XYXJuaW5nJywgJ0RFUDAwOTQnKTtcbiAgICB9XG5cbiAgICBpZiAoYXJnc0xlbiA9PT0gMikgb3BlcmF0b3IgPSAnIT0nO1xuICB9XG5cbiAgaWYgKG1lc3NhZ2UgaW5zdGFuY2VvZiBFcnJvcikgdGhyb3cgbWVzc2FnZTtcbiAgdmFyIGVyckFyZ3MgPSB7XG4gICAgYWN0dWFsOiBhY3R1YWwsXG4gICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLFxuICAgIG9wZXJhdG9yOiBvcGVyYXRvciA9PT0gdW5kZWZpbmVkID8gJ2ZhaWwnIDogb3BlcmF0b3IsXG4gICAgc3RhY2tTdGFydEZuOiBzdGFja1N0YXJ0Rm4gfHwgZmFpbFxuICB9O1xuXG4gIGlmIChtZXNzYWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICBlcnJBcmdzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICB9XG5cbiAgdmFyIGVyciA9IG5ldyBBc3NlcnRpb25FcnJvcihlcnJBcmdzKTtcblxuICBpZiAoaW50ZXJuYWxNZXNzYWdlKSB7XG4gICAgZXJyLm1lc3NhZ2UgPSBpbnRlcm5hbE1lc3NhZ2U7XG4gICAgZXJyLmdlbmVyYXRlZE1lc3NhZ2UgPSB0cnVlO1xuICB9XG5cbiAgdGhyb3cgZXJyO1xufVxuXG5hc3NlcnQuZmFpbCA9IGZhaWw7IC8vIFRoZSBBc3NlcnRpb25FcnJvciBpcyBkZWZpbmVkIGluIGludGVybmFsL2Vycm9yLlxuXG5hc3NlcnQuQXNzZXJ0aW9uRXJyb3IgPSBBc3NlcnRpb25FcnJvcjtcblxuZnVuY3Rpb24gaW5uZXJPayhmbiwgYXJnTGVuLCB2YWx1ZSwgbWVzc2FnZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgdmFyIGdlbmVyYXRlZE1lc3NhZ2UgPSBmYWxzZTtcblxuICAgIGlmIChhcmdMZW4gPT09IDApIHtcbiAgICAgIGdlbmVyYXRlZE1lc3NhZ2UgPSB0cnVlO1xuICAgICAgbWVzc2FnZSA9ICdObyB2YWx1ZSBhcmd1bWVudCBwYXNzZWQgdG8gYGFzc2VydC5vaygpYCc7XG4gICAgfSBlbHNlIGlmIChtZXNzYWdlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRocm93IG1lc3NhZ2U7XG4gICAgfVxuXG4gICAgdmFyIGVyciA9IG5ldyBBc3NlcnRpb25FcnJvcih7XG4gICAgICBhY3R1YWw6IHZhbHVlLFxuICAgICAgZXhwZWN0ZWQ6IHRydWUsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgb3BlcmF0b3I6ICc9PScsXG4gICAgICBzdGFja1N0YXJ0Rm46IGZuXG4gICAgfSk7XG4gICAgZXJyLmdlbmVyYXRlZE1lc3NhZ2UgPSBnZW5lcmF0ZWRNZXNzYWdlO1xuICAgIHRocm93IGVycjtcbiAgfVxufSAvLyBQdXJlIGFzc2VydGlvbiB0ZXN0cyB3aGV0aGVyIGEgdmFsdWUgaXMgdHJ1dGh5LCBhcyBkZXRlcm1pbmVkXG4vLyBieSAhIXZhbHVlLlxuXG5cbmZ1bmN0aW9uIG9rKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgaW5uZXJPay5hcHBseSh2b2lkIDAsIFtvaywgYXJncy5sZW5ndGhdLmNvbmNhdChhcmdzKSk7XG59XG5cbmFzc2VydC5vayA9IG9rOyAvLyBUaGUgZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIHNoYWxsb3csIGNvZXJjaXZlIGVxdWFsaXR5IHdpdGggPT0uXG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtcHJvcGVydGllcyAqL1xuXG5hc3NlcnQuZXF1YWwgPSBmdW5jdGlvbiBlcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFUlJfTUlTU0lOR19BUkdTKCdhY3R1YWwnLCAnZXhwZWN0ZWQnKTtcbiAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cblxuICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKSB7XG4gICAgaW5uZXJGYWlsKHtcbiAgICAgIGFjdHVhbDogYWN0dWFsLFxuICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIG9wZXJhdG9yOiAnPT0nLFxuICAgICAgc3RhY2tTdGFydEZuOiBlcXVhbFxuICAgIH0pO1xuICB9XG59OyAvLyBUaGUgbm9uLWVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBmb3Igd2hldGhlciB0d28gb2JqZWN0cyBhcmUgbm90XG4vLyBlcXVhbCB3aXRoICE9LlxuXG5cbmFzc2VydC5ub3RFcXVhbCA9IGZ1bmN0aW9uIG5vdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9NSVNTSU5HX0FSR1MoJ2FjdHVhbCcsICdleHBlY3RlZCcpO1xuICB9IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblxuXG4gIGlmIChhY3R1YWwgPT0gZXhwZWN0ZWQpIHtcbiAgICBpbm5lckZhaWwoe1xuICAgICAgYWN0dWFsOiBhY3R1YWwsXG4gICAgICBleHBlY3RlZDogZXhwZWN0ZWQsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgb3BlcmF0b3I6ICchPScsXG4gICAgICBzdGFja1N0YXJ0Rm46IG5vdEVxdWFsXG4gICAgfSk7XG4gIH1cbn07IC8vIFRoZSBlcXVpdmFsZW5jZSBhc3NlcnRpb24gdGVzdHMgYSBkZWVwIGVxdWFsaXR5IHJlbGF0aW9uLlxuXG5cbmFzc2VydC5kZWVwRXF1YWwgPSBmdW5jdGlvbiBkZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgRVJSX01JU1NJTkdfQVJHUygnYWN0dWFsJywgJ2V4cGVjdGVkJyk7XG4gIH1cblxuICBpZiAoaXNEZWVwRXF1YWwgPT09IHVuZGVmaW5lZCkgbGF6eUxvYWRDb21wYXJpc29uKCk7XG5cbiAgaWYgKCFpc0RlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkKSkge1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogJ2RlZXBFcXVhbCcsXG4gICAgICBzdGFja1N0YXJ0Rm46IGRlZXBFcXVhbFxuICAgIH0pO1xuICB9XG59OyAvLyBUaGUgbm9uLWVxdWl2YWxlbmNlIGFzc2VydGlvbiB0ZXN0cyBmb3IgYW55IGRlZXAgaW5lcXVhbGl0eS5cblxuXG5hc3NlcnQubm90RGVlcEVxdWFsID0gZnVuY3Rpb24gbm90RGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9NSVNTSU5HX0FSR1MoJ2FjdHVhbCcsICdleHBlY3RlZCcpO1xuICB9XG5cbiAgaWYgKGlzRGVlcEVxdWFsID09PSB1bmRlZmluZWQpIGxhenlMb2FkQ29tcGFyaXNvbigpO1xuXG4gIGlmIChpc0RlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkKSkge1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogJ25vdERlZXBFcXVhbCcsXG4gICAgICBzdGFja1N0YXJ0Rm46IG5vdERlZXBFcXVhbFxuICAgIH0pO1xuICB9XG59O1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG5cbmFzc2VydC5kZWVwU3RyaWN0RXF1YWwgPSBmdW5jdGlvbiBkZWVwU3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgRVJSX01JU1NJTkdfQVJHUygnYWN0dWFsJywgJ2V4cGVjdGVkJyk7XG4gIH1cblxuICBpZiAoaXNEZWVwRXF1YWwgPT09IHVuZGVmaW5lZCkgbGF6eUxvYWRDb21wYXJpc29uKCk7XG5cbiAgaWYgKCFpc0RlZXBTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkKSkge1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogJ2RlZXBTdHJpY3RFcXVhbCcsXG4gICAgICBzdGFja1N0YXJ0Rm46IGRlZXBTdHJpY3RFcXVhbFxuICAgIH0pO1xuICB9XG59O1xuXG5hc3NlcnQubm90RGVlcFN0cmljdEVxdWFsID0gbm90RGVlcFN0cmljdEVxdWFsO1xuXG5mdW5jdGlvbiBub3REZWVwU3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgRVJSX01JU1NJTkdfQVJHUygnYWN0dWFsJywgJ2V4cGVjdGVkJyk7XG4gIH1cblxuICBpZiAoaXNEZWVwRXF1YWwgPT09IHVuZGVmaW5lZCkgbGF6eUxvYWRDb21wYXJpc29uKCk7XG5cbiAgaWYgKGlzRGVlcFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpKSB7XG4gICAgaW5uZXJGYWlsKHtcbiAgICAgIGFjdHVhbDogYWN0dWFsLFxuICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIG9wZXJhdG9yOiAnbm90RGVlcFN0cmljdEVxdWFsJyxcbiAgICAgIHN0YWNrU3RhcnRGbjogbm90RGVlcFN0cmljdEVxdWFsXG4gICAgfSk7XG4gIH1cbn1cblxuYXNzZXJ0LnN0cmljdEVxdWFsID0gZnVuY3Rpb24gc3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgRVJSX01JU1NJTkdfQVJHUygnYWN0dWFsJywgJ2V4cGVjdGVkJyk7XG4gIH1cblxuICBpZiAoIW9iamVjdElzKGFjdHVhbCwgZXhwZWN0ZWQpKSB7XG4gICAgaW5uZXJGYWlsKHtcbiAgICAgIGFjdHVhbDogYWN0dWFsLFxuICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIG9wZXJhdG9yOiAnc3RyaWN0RXF1YWwnLFxuICAgICAgc3RhY2tTdGFydEZuOiBzdHJpY3RFcXVhbFxuICAgIH0pO1xuICB9XG59O1xuXG5hc3NlcnQubm90U3RyaWN0RXF1YWwgPSBmdW5jdGlvbiBub3RTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFUlJfTUlTU0lOR19BUkdTKCdhY3R1YWwnLCAnZXhwZWN0ZWQnKTtcbiAgfVxuXG4gIGlmIChvYmplY3RJcyhhY3R1YWwsIGV4cGVjdGVkKSkge1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogJ25vdFN0cmljdEVxdWFsJyxcbiAgICAgIHN0YWNrU3RhcnRGbjogbm90U3RyaWN0RXF1YWxcbiAgICB9KTtcbiAgfVxufTtcblxudmFyIENvbXBhcmlzb24gPSBmdW5jdGlvbiBDb21wYXJpc29uKG9iaiwga2V5cywgYWN0dWFsKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENvbXBhcmlzb24pO1xuXG4gIGtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChhY3R1YWwgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgYWN0dWFsW2tleV0gPT09ICdzdHJpbmcnICYmIGlzUmVnRXhwKG9ialtrZXldKSAmJiBvYmpba2V5XS50ZXN0KGFjdHVhbFtrZXldKSkge1xuICAgICAgICBfdGhpc1trZXldID0gYWN0dWFsW2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpc1trZXldID0gb2JqW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn07XG5cbmZ1bmN0aW9uIGNvbXBhcmVFeGNlcHRpb25LZXkoYWN0dWFsLCBleHBlY3RlZCwga2V5LCBtZXNzYWdlLCBrZXlzLCBmbikge1xuICBpZiAoIShrZXkgaW4gYWN0dWFsKSB8fCAhaXNEZWVwU3RyaWN0RXF1YWwoYWN0dWFsW2tleV0sIGV4cGVjdGVkW2tleV0pKSB7XG4gICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICAvLyBDcmVhdGUgcGxhY2Vob2xkZXIgb2JqZWN0cyB0byBjcmVhdGUgYSBuaWNlIG91dHB1dC5cbiAgICAgIHZhciBhID0gbmV3IENvbXBhcmlzb24oYWN0dWFsLCBrZXlzKTtcbiAgICAgIHZhciBiID0gbmV3IENvbXBhcmlzb24oZXhwZWN0ZWQsIGtleXMsIGFjdHVhbCk7XG4gICAgICB2YXIgZXJyID0gbmV3IEFzc2VydGlvbkVycm9yKHtcbiAgICAgICAgYWN0dWFsOiBhLFxuICAgICAgICBleHBlY3RlZDogYixcbiAgICAgICAgb3BlcmF0b3I6ICdkZWVwU3RyaWN0RXF1YWwnLFxuICAgICAgICBzdGFja1N0YXJ0Rm46IGZuXG4gICAgICB9KTtcbiAgICAgIGVyci5hY3R1YWwgPSBhY3R1YWw7XG4gICAgICBlcnIuZXhwZWN0ZWQgPSBleHBlY3RlZDtcbiAgICAgIGVyci5vcGVyYXRvciA9IGZuLm5hbWU7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgaW5uZXJGYWlsKHtcbiAgICAgIGFjdHVhbDogYWN0dWFsLFxuICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIG9wZXJhdG9yOiBmbi5uYW1lLFxuICAgICAgc3RhY2tTdGFydEZuOiBmblxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGV4cGVjdGVkRXhjZXB0aW9uKGFjdHVhbCwgZXhwZWN0ZWQsIG1zZywgZm4pIHtcbiAgaWYgKHR5cGVvZiBleHBlY3RlZCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmIChpc1JlZ0V4cChleHBlY3RlZCkpIHJldHVybiBleHBlY3RlZC50ZXN0KGFjdHVhbCk7IC8vIGFzc2VydC5kb2VzTm90VGhyb3cgZG9lcyBub3QgYWNjZXB0IG9iamVjdHMuXG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdleHBlY3RlZCcsIFsnRnVuY3Rpb24nLCAnUmVnRXhwJ10sIGV4cGVjdGVkKTtcbiAgICB9IC8vIEhhbmRsZSBwcmltaXRpdmVzIHByb3Blcmx5LlxuXG5cbiAgICBpZiAoX3R5cGVvZihhY3R1YWwpICE9PSAnb2JqZWN0JyB8fCBhY3R1YWwgPT09IG51bGwpIHtcbiAgICAgIHZhciBlcnIgPSBuZXcgQXNzZXJ0aW9uRXJyb3Ioe1xuICAgICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLFxuICAgICAgICBtZXNzYWdlOiBtc2csXG4gICAgICAgIG9wZXJhdG9yOiAnZGVlcFN0cmljdEVxdWFsJyxcbiAgICAgICAgc3RhY2tTdGFydEZuOiBmblxuICAgICAgfSk7XG4gICAgICBlcnIub3BlcmF0b3IgPSBmbi5uYW1lO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZXhwZWN0ZWQpOyAvLyBTcGVjaWFsIGhhbmRsZSBlcnJvcnMgdG8gbWFrZSBzdXJlIHRoZSBuYW1lIGFuZCB0aGUgbWVzc2FnZSBhcmUgY29tcGFyZWRcbiAgICAvLyBhcyB3ZWxsLlxuXG4gICAgaWYgKGV4cGVjdGVkIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGtleXMucHVzaCgnbmFtZScsICdtZXNzYWdlJyk7XG4gICAgfSBlbHNlIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19WQUxVRSgnZXJyb3InLCBleHBlY3RlZCwgJ21heSBub3QgYmUgYW4gZW1wdHkgb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgaWYgKGlzRGVlcEVxdWFsID09PSB1bmRlZmluZWQpIGxhenlMb2FkQ29tcGFyaXNvbigpO1xuICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBpZiAodHlwZW9mIGFjdHVhbFtrZXldID09PSAnc3RyaW5nJyAmJiBpc1JlZ0V4cChleHBlY3RlZFtrZXldKSAmJiBleHBlY3RlZFtrZXldLnRlc3QoYWN0dWFsW2tleV0pKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29tcGFyZUV4Y2VwdGlvbktleShhY3R1YWwsIGV4cGVjdGVkLCBrZXksIG1zZywga2V5cywgZm4pO1xuICAgIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIEd1YXJkIGluc3RhbmNlb2YgYWdhaW5zdCBhcnJvdyBmdW5jdGlvbnMgYXMgdGhleSBkb24ndCBoYXZlIGEgcHJvdG90eXBlLlxuXG5cbiAgaWYgKGV4cGVjdGVkLnByb3RvdHlwZSAhPT0gdW5kZWZpbmVkICYmIGFjdHVhbCBpbnN0YW5jZW9mIGV4cGVjdGVkKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoRXJyb3IuaXNQcm90b3R5cGVPZihleHBlY3RlZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZXhwZWN0ZWQuY2FsbCh7fSwgYWN0dWFsKSA9PT0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZ2V0QWN0dWFsKGZuKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ2ZuJywgJ0Z1bmN0aW9uJywgZm4pO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBmbigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGU7XG4gIH1cblxuICByZXR1cm4gTk9fRVhDRVBUSU9OX1NFTlRJTkVMO1xufVxuXG5mdW5jdGlvbiBjaGVja0lzUHJvbWlzZShvYmopIHtcbiAgLy8gQWNjZXB0IG5hdGl2ZSBFUzYgcHJvbWlzZXMgYW5kIHByb21pc2VzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIGEgc2ltaWxhclxuICAvLyB3YXkuIERvIG5vdCBhY2NlcHQgdGhlbmFibGVzIHRoYXQgdXNlIGEgZnVuY3Rpb24gYXMgYG9iamAgYW5kIHRoYXQgaGF2ZSBub1xuICAvLyBgY2F0Y2hgIGhhbmRsZXIuXG4gIC8vIFRPRE86IHRoZW5hYmxlcyBhcmUgY2hlY2tlZCB1cCB1bnRpbCB0aGV5IGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyxcbiAgLy8gYnV0IGFjY29yZGluZyB0byBkb2N1bWVudGF0aW9uLCB0aGUgYHRoZW5gIG1ldGhvZCBzaG91bGQgcmVjZWl2ZVxuICAvLyB0aGUgYGZ1bGZpbGxgIGFuZCBgcmVqZWN0YCBhcmd1bWVudHMgYXMgd2VsbCBvciBpdCBtYXkgYmUgbmV2ZXIgcmVzb2x2ZWQuXG4gIHJldHVybiBpc1Byb21pc2Uob2JqKSB8fCBvYmogIT09IG51bGwgJiYgX3R5cGVvZihvYmopID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqLnRoZW4gPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5jYXRjaCA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gd2FpdEZvckFjdHVhbChwcm9taXNlRm4pIHtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHRQcm9taXNlO1xuXG4gICAgaWYgKHR5cGVvZiBwcm9taXNlRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIFJldHVybiBhIHJlamVjdGVkIHByb21pc2UgaWYgYHByb21pc2VGbmAgdGhyb3dzIHN5bmNocm9ub3VzbHkuXG4gICAgICByZXN1bHRQcm9taXNlID0gcHJvbWlzZUZuKCk7IC8vIEZhaWwgaW4gY2FzZSBubyBwcm9taXNlIGlzIHJldHVybmVkLlxuXG4gICAgICBpZiAoIWNoZWNrSXNQcm9taXNlKHJlc3VsdFByb21pc2UpKSB7XG4gICAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUoJ2luc3RhbmNlIG9mIFByb21pc2UnLCAncHJvbWlzZUZuJywgcmVzdWx0UHJvbWlzZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjaGVja0lzUHJvbWlzZShwcm9taXNlRm4pKSB7XG4gICAgICByZXN1bHRQcm9taXNlID0gcHJvbWlzZUZuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ3Byb21pc2VGbicsIFsnRnVuY3Rpb24nLCAnUHJvbWlzZSddLCBwcm9taXNlRm4pO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiByZXN1bHRQcm9taXNlO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIE5PX0VYQ0VQVElPTl9TRU5USU5FTDtcbiAgICB9KS5jYXRjaChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGU7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBleHBlY3RzRXJyb3Ioc3RhY2tTdGFydEZuLCBhY3R1YWwsIGVycm9yLCBtZXNzYWdlKSB7XG4gIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDQpIHtcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnZXJyb3InLCBbJ09iamVjdCcsICdFcnJvcicsICdGdW5jdGlvbicsICdSZWdFeHAnXSwgZXJyb3IpO1xuICAgIH1cblxuICAgIGlmIChfdHlwZW9mKGFjdHVhbCkgPT09ICdvYmplY3QnICYmIGFjdHVhbCAhPT0gbnVsbCkge1xuICAgICAgaWYgKGFjdHVhbC5tZXNzYWdlID09PSBlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRVJSX0FNQklHVU9VU19BUkdVTUVOVCgnZXJyb3IvbWVzc2FnZScsIFwiVGhlIGVycm9yIG1lc3NhZ2UgXFxcIlwiLmNvbmNhdChhY3R1YWwubWVzc2FnZSwgXCJcXFwiIGlzIGlkZW50aWNhbCB0byB0aGUgbWVzc2FnZS5cIikpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYWN0dWFsID09PSBlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVSUl9BTUJJR1VPVVNfQVJHVU1FTlQoJ2Vycm9yL21lc3NhZ2UnLCBcIlRoZSBlcnJvciBcXFwiXCIuY29uY2F0KGFjdHVhbCwgXCJcXFwiIGlzIGlkZW50aWNhbCB0byB0aGUgbWVzc2FnZS5cIikpO1xuICAgIH1cblxuICAgIG1lc3NhZ2UgPSBlcnJvcjtcbiAgICBlcnJvciA9IHVuZGVmaW5lZDtcbiAgfSBlbHNlIGlmIChlcnJvciAhPSBudWxsICYmIF90eXBlb2YoZXJyb3IpICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgZXJyb3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ2Vycm9yJywgWydPYmplY3QnLCAnRXJyb3InLCAnRnVuY3Rpb24nLCAnUmVnRXhwJ10sIGVycm9yKTtcbiAgfVxuXG4gIGlmIChhY3R1YWwgPT09IE5PX0VYQ0VQVElPTl9TRU5USU5FTCkge1xuICAgIHZhciBkZXRhaWxzID0gJyc7XG5cbiAgICBpZiAoZXJyb3IgJiYgZXJyb3IubmFtZSkge1xuICAgICAgZGV0YWlscyArPSBcIiAoXCIuY29uY2F0KGVycm9yLm5hbWUsIFwiKVwiKTtcbiAgICB9XG5cbiAgICBkZXRhaWxzICs9IG1lc3NhZ2UgPyBcIjogXCIuY29uY2F0KG1lc3NhZ2UpIDogJy4nO1xuICAgIHZhciBmblR5cGUgPSBzdGFja1N0YXJ0Rm4ubmFtZSA9PT0gJ3JlamVjdHMnID8gJ3JlamVjdGlvbicgOiAnZXhjZXB0aW9uJztcbiAgICBpbm5lckZhaWwoe1xuICAgICAgYWN0dWFsOiB1bmRlZmluZWQsXG4gICAgICBleHBlY3RlZDogZXJyb3IsXG4gICAgICBvcGVyYXRvcjogc3RhY2tTdGFydEZuLm5hbWUsXG4gICAgICBtZXNzYWdlOiBcIk1pc3NpbmcgZXhwZWN0ZWQgXCIuY29uY2F0KGZuVHlwZSkuY29uY2F0KGRldGFpbHMpLFxuICAgICAgc3RhY2tTdGFydEZuOiBzdGFja1N0YXJ0Rm5cbiAgICB9KTtcbiAgfVxuXG4gIGlmIChlcnJvciAmJiAhZXhwZWN0ZWRFeGNlcHRpb24oYWN0dWFsLCBlcnJvciwgbWVzc2FnZSwgc3RhY2tTdGFydEZuKSkge1xuICAgIHRocm93IGFjdHVhbDtcbiAgfVxufVxuXG5mdW5jdGlvbiBleHBlY3RzTm9FcnJvcihzdGFja1N0YXJ0Rm4sIGFjdHVhbCwgZXJyb3IsIG1lc3NhZ2UpIHtcbiAgaWYgKGFjdHVhbCA9PT0gTk9fRVhDRVBUSU9OX1NFTlRJTkVMKSByZXR1cm47XG5cbiAgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycpIHtcbiAgICBtZXNzYWdlID0gZXJyb3I7XG4gICAgZXJyb3IgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoIWVycm9yIHx8IGV4cGVjdGVkRXhjZXB0aW9uKGFjdHVhbCwgZXJyb3IpKSB7XG4gICAgdmFyIGRldGFpbHMgPSBtZXNzYWdlID8gXCI6IFwiLmNvbmNhdChtZXNzYWdlKSA6ICcuJztcbiAgICB2YXIgZm5UeXBlID0gc3RhY2tTdGFydEZuLm5hbWUgPT09ICdkb2VzTm90UmVqZWN0JyA/ICdyZWplY3Rpb24nIDogJ2V4Y2VwdGlvbic7XG4gICAgaW5uZXJGYWlsKHtcbiAgICAgIGFjdHVhbDogYWN0dWFsLFxuICAgICAgZXhwZWN0ZWQ6IGVycm9yLFxuICAgICAgb3BlcmF0b3I6IHN0YWNrU3RhcnRGbi5uYW1lLFxuICAgICAgbWVzc2FnZTogXCJHb3QgdW53YW50ZWQgXCIuY29uY2F0KGZuVHlwZSkuY29uY2F0KGRldGFpbHMsIFwiXFxuXCIpICsgXCJBY3R1YWwgbWVzc2FnZTogXFxcIlwiLmNvbmNhdChhY3R1YWwgJiYgYWN0dWFsLm1lc3NhZ2UsIFwiXFxcIlwiKSxcbiAgICAgIHN0YWNrU3RhcnRGbjogc3RhY2tTdGFydEZuXG4gICAgfSk7XG4gIH1cblxuICB0aHJvdyBhY3R1YWw7XG59XG5cbmFzc2VydC50aHJvd3MgPSBmdW5jdGlvbiB0aHJvd3MocHJvbWlzZUZuKSB7XG4gIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiA+IDEgPyBfbGVuMiAtIDEgOiAwKSwgX2tleTIgPSAxOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgYXJnc1tfa2V5MiAtIDFdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgfVxuXG4gIGV4cGVjdHNFcnJvci5hcHBseSh2b2lkIDAsIFt0aHJvd3MsIGdldEFjdHVhbChwcm9taXNlRm4pXS5jb25jYXQoYXJncykpO1xufTtcblxuYXNzZXJ0LnJlamVjdHMgPSBmdW5jdGlvbiByZWplY3RzKHByb21pc2VGbikge1xuICBmb3IgKHZhciBfbGVuMyA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjMgPiAxID8gX2xlbjMgLSAxIDogMCksIF9rZXkzID0gMTsgX2tleTMgPCBfbGVuMzsgX2tleTMrKykge1xuICAgIGFyZ3NbX2tleTMgLSAxXSA9IGFyZ3VtZW50c1tfa2V5M107XG4gIH1cblxuICByZXR1cm4gd2FpdEZvckFjdHVhbChwcm9taXNlRm4pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIHJldHVybiBleHBlY3RzRXJyb3IuYXBwbHkodm9pZCAwLCBbcmVqZWN0cywgcmVzdWx0XS5jb25jYXQoYXJncykpO1xuICB9KTtcbn07XG5cbmFzc2VydC5kb2VzTm90VGhyb3cgPSBmdW5jdGlvbiBkb2VzTm90VGhyb3coZm4pIHtcbiAgZm9yICh2YXIgX2xlbjQgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW40ID4gMSA/IF9sZW40IC0gMSA6IDApLCBfa2V5NCA9IDE7IF9rZXk0IDwgX2xlbjQ7IF9rZXk0KyspIHtcbiAgICBhcmdzW19rZXk0IC0gMV0gPSBhcmd1bWVudHNbX2tleTRdO1xuICB9XG5cbiAgZXhwZWN0c05vRXJyb3IuYXBwbHkodm9pZCAwLCBbZG9lc05vdFRocm93LCBnZXRBY3R1YWwoZm4pXS5jb25jYXQoYXJncykpO1xufTtcblxuYXNzZXJ0LmRvZXNOb3RSZWplY3QgPSBmdW5jdGlvbiBkb2VzTm90UmVqZWN0KGZuKSB7XG4gIGZvciAodmFyIF9sZW41ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuNSA+IDEgPyBfbGVuNSAtIDEgOiAwKSwgX2tleTUgPSAxOyBfa2V5NSA8IF9sZW41OyBfa2V5NSsrKSB7XG4gICAgYXJnc1tfa2V5NSAtIDFdID0gYXJndW1lbnRzW19rZXk1XTtcbiAgfVxuXG4gIHJldHVybiB3YWl0Rm9yQWN0dWFsKGZuKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICByZXR1cm4gZXhwZWN0c05vRXJyb3IuYXBwbHkodm9pZCAwLCBbZG9lc05vdFJlamVjdCwgcmVzdWx0XS5jb25jYXQoYXJncykpO1xuICB9KTtcbn07XG5cbmFzc2VydC5pZkVycm9yID0gZnVuY3Rpb24gaWZFcnJvcihlcnIpIHtcbiAgaWYgKGVyciAhPT0gbnVsbCAmJiBlcnIgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBtZXNzYWdlID0gJ2lmRXJyb3IgZ290IHVud2FudGVkIGV4Y2VwdGlvbjogJztcblxuICAgIGlmIChfdHlwZW9mKGVycikgPT09ICdvYmplY3QnICYmIHR5cGVvZiBlcnIubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChlcnIubWVzc2FnZS5sZW5ndGggPT09IDAgJiYgZXJyLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgIG1lc3NhZ2UgKz0gZXJyLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlICs9IGVyci5tZXNzYWdlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtZXNzYWdlICs9IGluc3BlY3QoZXJyKTtcbiAgICB9XG5cbiAgICB2YXIgbmV3RXJyID0gbmV3IEFzc2VydGlvbkVycm9yKHtcbiAgICAgIGFjdHVhbDogZXJyLFxuICAgICAgZXhwZWN0ZWQ6IG51bGwsXG4gICAgICBvcGVyYXRvcjogJ2lmRXJyb3InLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIHN0YWNrU3RhcnRGbjogaWZFcnJvclxuICAgIH0pOyAvLyBNYWtlIHN1cmUgd2UgYWN0dWFsbHkgaGF2ZSBhIHN0YWNrIHRyYWNlIVxuXG4gICAgdmFyIG9yaWdTdGFjayA9IGVyci5zdGFjaztcblxuICAgIGlmICh0eXBlb2Ygb3JpZ1N0YWNrID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gVGhpcyB3aWxsIHJlbW92ZSBhbnkgZHVwbGljYXRlZCBmcmFtZXMgZnJvbSB0aGUgZXJyb3IgZnJhbWVzIHRha2VuXG4gICAgICAvLyBmcm9tIHdpdGhpbiBgaWZFcnJvcmAgYW5kIGFkZCB0aGUgb3JpZ2luYWwgZXJyb3IgZnJhbWVzIHRvIHRoZSBuZXdseVxuICAgICAgLy8gY3JlYXRlZCBvbmVzLlxuICAgICAgdmFyIHRtcDIgPSBvcmlnU3RhY2suc3BsaXQoJ1xcbicpO1xuICAgICAgdG1wMi5zaGlmdCgpOyAvLyBGaWx0ZXIgYWxsIGZyYW1lcyBleGlzdGluZyBpbiBlcnIuc3RhY2suXG5cbiAgICAgIHZhciB0bXAxID0gbmV3RXJyLnN0YWNrLnNwbGl0KCdcXG4nKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0bXAyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIGZyYW1lLlxuICAgICAgICB2YXIgcG9zID0gdG1wMS5pbmRleE9mKHRtcDJbaV0pO1xuXG4gICAgICAgIGlmIChwb3MgIT09IC0xKSB7XG4gICAgICAgICAgLy8gT25seSBrZWVwIG5ldyBmcmFtZXMuXG4gICAgICAgICAgdG1wMSA9IHRtcDEuc2xpY2UoMCwgcG9zKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBuZXdFcnIuc3RhY2sgPSBcIlwiLmNvbmNhdCh0bXAxLmpvaW4oJ1xcbicpLCBcIlxcblwiKS5jb25jYXQodG1wMi5qb2luKCdcXG4nKSk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3RXJyO1xuICB9XG59OyAvLyBFeHBvc2UgYSBzdHJpY3Qgb25seSB2YXJpYW50IG9mIGFzc2VydFxuXG5cbmZ1bmN0aW9uIHN0cmljdCgpIHtcbiAgZm9yICh2YXIgX2xlbjYgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW42KSwgX2tleTYgPSAwOyBfa2V5NiA8IF9sZW42OyBfa2V5NisrKSB7XG4gICAgYXJnc1tfa2V5Nl0gPSBhcmd1bWVudHNbX2tleTZdO1xuICB9XG5cbiAgaW5uZXJPay5hcHBseSh2b2lkIDAsIFtzdHJpY3QsIGFyZ3MubGVuZ3RoXS5jb25jYXQoYXJncykpO1xufVxuXG5hc3NlcnQuc3RyaWN0ID0gb2JqZWN0QXNzaWduKHN0cmljdCwgYXNzZXJ0LCB7XG4gIGVxdWFsOiBhc3NlcnQuc3RyaWN0RXF1YWwsXG4gIGRlZXBFcXVhbDogYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCxcbiAgbm90RXF1YWw6IGFzc2VydC5ub3RTdHJpY3RFcXVhbCxcbiAgbm90RGVlcEVxdWFsOiBhc3NlcnQubm90RGVlcFN0cmljdEVxdWFsXG59KTtcbmFzc2VydC5zdHJpY3Quc3RyaWN0ID0gYXNzZXJ0LnN0cmljdDsiLCIvLyBDdXJyZW50bHkgaW4gc3luYyB3aXRoIE5vZGUuanMgbGliL2ludGVybmFsL2Fzc2VydC9hc3NlcnRpb25fZXJyb3IuanNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9jb21taXQvMDgxNzg0MGY3NzUwMzIxNjlkZGQ3MGM4NWFjMDU5ZjE4ZmZjYzgxY1xuJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgdmFyIG93bktleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyBpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09ICdmdW5jdGlvbicpIHsgb3duS2V5cyA9IG93bktleXMuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKS5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIHN5bSkuZW51bWVyYWJsZTsgfSkpOyB9IG93bktleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcihDbGFzcykgeyB2YXIgX2NhY2hlID0gdHlwZW9mIE1hcCA9PT0gXCJmdW5jdGlvblwiID8gbmV3IE1hcCgpIDogdW5kZWZpbmVkOyBfd3JhcE5hdGl2ZVN1cGVyID0gZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcihDbGFzcykgeyBpZiAoQ2xhc3MgPT09IG51bGwgfHwgIV9pc05hdGl2ZUZ1bmN0aW9uKENsYXNzKSkgcmV0dXJuIENsYXNzOyBpZiAodHlwZW9mIENsYXNzICE9PSBcImZ1bmN0aW9uXCIpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IGlmICh0eXBlb2YgX2NhY2hlICE9PSBcInVuZGVmaW5lZFwiKSB7IGlmIChfY2FjaGUuaGFzKENsYXNzKSkgcmV0dXJuIF9jYWNoZS5nZXQoQ2xhc3MpOyBfY2FjaGUuc2V0KENsYXNzLCBXcmFwcGVyKTsgfSBmdW5jdGlvbiBXcmFwcGVyKCkgeyByZXR1cm4gX2NvbnN0cnVjdChDbGFzcywgYXJndW1lbnRzLCBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3IpOyB9IFdyYXBwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IFdyYXBwZXIsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IHJldHVybiBfc2V0UHJvdG90eXBlT2YoV3JhcHBlciwgQ2xhc3MpOyB9OyByZXR1cm4gX3dyYXBOYXRpdmVTdXBlcihDbGFzcyk7IH1cblxuZnVuY3Rpb24gaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9jb25zdHJ1Y3QoUGFyZW50LCBhcmdzLCBDbGFzcykgeyBpZiAoaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkpIHsgX2NvbnN0cnVjdCA9IFJlZmxlY3QuY29uc3RydWN0OyB9IGVsc2UgeyBfY29uc3RydWN0ID0gZnVuY3Rpb24gX2NvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7IHZhciBhID0gW251bGxdOyBhLnB1c2guYXBwbHkoYSwgYXJncyk7IHZhciBDb25zdHJ1Y3RvciA9IEZ1bmN0aW9uLmJpbmQuYXBwbHkoUGFyZW50LCBhKTsgdmFyIGluc3RhbmNlID0gbmV3IENvbnN0cnVjdG9yKCk7IGlmIChDbGFzcykgX3NldFByb3RvdHlwZU9mKGluc3RhbmNlLCBDbGFzcy5wcm90b3R5cGUpOyByZXR1cm4gaW5zdGFuY2U7IH07IH0gcmV0dXJuIF9jb25zdHJ1Y3QuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVGdW5jdGlvbihmbikgeyByZXR1cm4gRnVuY3Rpb24udG9TdHJpbmcuY2FsbChmbikuaW5kZXhPZihcIltuYXRpdmUgY29kZV1cIikgIT09IC0xOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxudmFyIF9yZXF1aXJlID0gcmVxdWlyZSgndXRpbC8nKSxcbiAgICBpbnNwZWN0ID0gX3JlcXVpcmUuaW5zcGVjdDtcblxudmFyIF9yZXF1aXJlMiA9IHJlcXVpcmUoJy4uL2Vycm9ycycpLFxuICAgIEVSUl9JTlZBTElEX0FSR19UWVBFID0gX3JlcXVpcmUyLmNvZGVzLkVSUl9JTlZBTElEX0FSR19UWVBFOyAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvZW5kc1dpdGhcblxuXG5mdW5jdGlvbiBlbmRzV2l0aChzdHIsIHNlYXJjaCwgdGhpc19sZW4pIHtcbiAgaWYgKHRoaXNfbGVuID09PSB1bmRlZmluZWQgfHwgdGhpc19sZW4gPiBzdHIubGVuZ3RoKSB7XG4gICAgdGhpc19sZW4gPSBzdHIubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIHN0ci5zdWJzdHJpbmcodGhpc19sZW4gLSBzZWFyY2gubGVuZ3RoLCB0aGlzX2xlbikgPT09IHNlYXJjaDtcbn0gLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nL3JlcGVhdFxuXG5cbmZ1bmN0aW9uIHJlcGVhdChzdHIsIGNvdW50KSB7XG4gIGNvdW50ID0gTWF0aC5mbG9vcihjb3VudCk7XG4gIGlmIChzdHIubGVuZ3RoID09IDAgfHwgY291bnQgPT0gMCkgcmV0dXJuICcnO1xuICB2YXIgbWF4Q291bnQgPSBzdHIubGVuZ3RoICogY291bnQ7XG4gIGNvdW50ID0gTWF0aC5mbG9vcihNYXRoLmxvZyhjb3VudCkgLyBNYXRoLmxvZygyKSk7XG5cbiAgd2hpbGUgKGNvdW50KSB7XG4gICAgc3RyICs9IHN0cjtcbiAgICBjb3VudC0tO1xuICB9XG5cbiAgc3RyICs9IHN0ci5zdWJzdHJpbmcoMCwgbWF4Q291bnQgLSBzdHIubGVuZ3RoKTtcbiAgcmV0dXJuIHN0cjtcbn1cblxudmFyIGJsdWUgPSAnJztcbnZhciBncmVlbiA9ICcnO1xudmFyIHJlZCA9ICcnO1xudmFyIHdoaXRlID0gJyc7XG52YXIga1JlYWRhYmxlT3BlcmF0b3IgPSB7XG4gIGRlZXBTdHJpY3RFcXVhbDogJ0V4cGVjdGVkIHZhbHVlcyB0byBiZSBzdHJpY3RseSBkZWVwLWVxdWFsOicsXG4gIHN0cmljdEVxdWFsOiAnRXhwZWN0ZWQgdmFsdWVzIHRvIGJlIHN0cmljdGx5IGVxdWFsOicsXG4gIHN0cmljdEVxdWFsT2JqZWN0OiAnRXhwZWN0ZWQgXCJhY3R1YWxcIiB0byBiZSByZWZlcmVuY2UtZXF1YWwgdG8gXCJleHBlY3RlZFwiOicsXG4gIGRlZXBFcXVhbDogJ0V4cGVjdGVkIHZhbHVlcyB0byBiZSBsb29zZWx5IGRlZXAtZXF1YWw6JyxcbiAgZXF1YWw6ICdFeHBlY3RlZCB2YWx1ZXMgdG8gYmUgbG9vc2VseSBlcXVhbDonLFxuICBub3REZWVwU3RyaWN0RXF1YWw6ICdFeHBlY3RlZCBcImFjdHVhbFwiIG5vdCB0byBiZSBzdHJpY3RseSBkZWVwLWVxdWFsIHRvOicsXG4gIG5vdFN0cmljdEVxdWFsOiAnRXhwZWN0ZWQgXCJhY3R1YWxcIiB0byBiZSBzdHJpY3RseSB1bmVxdWFsIHRvOicsXG4gIG5vdFN0cmljdEVxdWFsT2JqZWN0OiAnRXhwZWN0ZWQgXCJhY3R1YWxcIiBub3QgdG8gYmUgcmVmZXJlbmNlLWVxdWFsIHRvIFwiZXhwZWN0ZWRcIjonLFxuICBub3REZWVwRXF1YWw6ICdFeHBlY3RlZCBcImFjdHVhbFwiIG5vdCB0byBiZSBsb29zZWx5IGRlZXAtZXF1YWwgdG86JyxcbiAgbm90RXF1YWw6ICdFeHBlY3RlZCBcImFjdHVhbFwiIHRvIGJlIGxvb3NlbHkgdW5lcXVhbCB0bzonLFxuICBub3RJZGVudGljYWw6ICdWYWx1ZXMgaWRlbnRpY2FsIGJ1dCBub3QgcmVmZXJlbmNlLWVxdWFsOidcbn07IC8vIENvbXBhcmluZyBzaG9ydCBwcmltaXRpdmVzIHNob3VsZCBqdXN0IHNob3cgPT09IC8gIT09IGluc3RlYWQgb2YgdXNpbmcgdGhlXG4vLyBkaWZmLlxuXG52YXIga01heFNob3J0TGVuZ3RoID0gMTA7XG5cbmZ1bmN0aW9uIGNvcHlFcnJvcihzb3VyY2UpIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIgdGFyZ2V0ID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc291cmNlKSk7XG4gIGtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgfSk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsICdtZXNzYWdlJywge1xuICAgIHZhbHVlOiBzb3VyY2UubWVzc2FnZVxuICB9KTtcbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gaW5zcGVjdFZhbHVlKHZhbCkge1xuICAvLyBUaGUgdXRpbC5pbnNwZWN0IGRlZmF1bHQgdmFsdWVzIGNvdWxkIGJlIGNoYW5nZWQuIFRoaXMgbWFrZXMgc3VyZSB0aGVcbiAgLy8gZXJyb3IgbWVzc2FnZXMgY29udGFpbiB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIG5ldmVydGhlbGVzcy5cbiAgcmV0dXJuIGluc3BlY3QodmFsLCB7XG4gICAgY29tcGFjdDogZmFsc2UsXG4gICAgY3VzdG9tSW5zcGVjdDogZmFsc2UsXG4gICAgZGVwdGg6IDEwMDAsXG4gICAgbWF4QXJyYXlMZW5ndGg6IEluZmluaXR5LFxuICAgIC8vIEFzc2VydCBjb21wYXJlcyBvbmx5IGVudW1lcmFibGUgcHJvcGVydGllcyAod2l0aCBhIGZldyBleGNlcHRpb25zKS5cbiAgICBzaG93SGlkZGVuOiBmYWxzZSxcbiAgICAvLyBIYXZpbmcgYSBsb25nIGxpbmUgYXMgZXJyb3IgaXMgYmV0dGVyIHRoYW4gd3JhcHBpbmcgdGhlIGxpbmUgZm9yXG4gICAgLy8gY29tcGFyaXNvbiBmb3Igbm93LlxuICAgIC8vIFRPRE8oQnJpZGdlQVIpOiBgYnJlYWtMZW5ndGhgIHNob3VsZCBiZSBsaW1pdGVkIGFzIHNvb24gYXMgc29vbiBhcyB3ZVxuICAgIC8vIGhhdmUgbWV0YSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW5zcGVjdGVkIHByb3BlcnRpZXMgKGkuZS4sIGtub3cgd2hlcmVcbiAgICAvLyBpbiB3aGF0IGxpbmUgdGhlIHByb3BlcnR5IHN0YXJ0cyBhbmQgZW5kcykuXG4gICAgYnJlYWtMZW5ndGg6IEluZmluaXR5LFxuICAgIC8vIEFzc2VydCBkb2VzIG5vdCBkZXRlY3QgcHJveGllcyBjdXJyZW50bHkuXG4gICAgc2hvd1Byb3h5OiBmYWxzZSxcbiAgICBzb3J0ZWQ6IHRydWUsXG4gICAgLy8gSW5zcGVjdCBnZXR0ZXJzIGFzIHdlIGFsc28gY2hlY2sgdGhlbSB3aGVuIGNvbXBhcmluZyBlbnRyaWVzLlxuICAgIGdldHRlcnM6IHRydWVcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVyckRpZmYoYWN0dWFsLCBleHBlY3RlZCwgb3BlcmF0b3IpIHtcbiAgdmFyIG90aGVyID0gJyc7XG4gIHZhciByZXMgPSAnJztcbiAgdmFyIGxhc3RQb3MgPSAwO1xuICB2YXIgZW5kID0gJyc7XG4gIHZhciBza2lwcGVkID0gZmFsc2U7XG4gIHZhciBhY3R1YWxJbnNwZWN0ZWQgPSBpbnNwZWN0VmFsdWUoYWN0dWFsKTtcbiAgdmFyIGFjdHVhbExpbmVzID0gYWN0dWFsSW5zcGVjdGVkLnNwbGl0KCdcXG4nKTtcbiAgdmFyIGV4cGVjdGVkTGluZXMgPSBpbnNwZWN0VmFsdWUoZXhwZWN0ZWQpLnNwbGl0KCdcXG4nKTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgaW5kaWNhdG9yID0gJyc7IC8vIEluIGNhc2UgYm90aCB2YWx1ZXMgYXJlIG9iamVjdHMgZXhwbGljaXRseSBtYXJrIHRoZW0gYXMgbm90IHJlZmVyZW5jZSBlcXVhbFxuICAvLyBmb3IgdGhlIGBzdHJpY3RFcXVhbGAgb3BlcmF0b3IuXG5cbiAgaWYgKG9wZXJhdG9yID09PSAnc3RyaWN0RXF1YWwnICYmIF90eXBlb2YoYWN0dWFsKSA9PT0gJ29iamVjdCcgJiYgX3R5cGVvZihleHBlY3RlZCkgPT09ICdvYmplY3QnICYmIGFjdHVhbCAhPT0gbnVsbCAmJiBleHBlY3RlZCAhPT0gbnVsbCkge1xuICAgIG9wZXJhdG9yID0gJ3N0cmljdEVxdWFsT2JqZWN0JztcbiAgfSAvLyBJZiBcImFjdHVhbFwiIGFuZCBcImV4cGVjdGVkXCIgZml0IG9uIGEgc2luZ2xlIGxpbmUgYW5kIHRoZXkgYXJlIG5vdCBzdHJpY3RseVxuICAvLyBlcXVhbCwgY2hlY2sgZnVydGhlciBzcGVjaWFsIGhhbmRsaW5nLlxuXG5cbiAgaWYgKGFjdHVhbExpbmVzLmxlbmd0aCA9PT0gMSAmJiBleHBlY3RlZExpbmVzLmxlbmd0aCA9PT0gMSAmJiBhY3R1YWxMaW5lc1swXSAhPT0gZXhwZWN0ZWRMaW5lc1swXSkge1xuICAgIHZhciBpbnB1dExlbmd0aCA9IGFjdHVhbExpbmVzWzBdLmxlbmd0aCArIGV4cGVjdGVkTGluZXNbMF0ubGVuZ3RoOyAvLyBJZiB0aGUgY2hhcmFjdGVyIGxlbmd0aCBvZiBcImFjdHVhbFwiIGFuZCBcImV4cGVjdGVkXCIgdG9nZXRoZXIgaXMgbGVzcyB0aGFuXG4gICAgLy8ga01heFNob3J0TGVuZ3RoIGFuZCBpZiBuZWl0aGVyIGlzIGFuIG9iamVjdCBhbmQgYXQgbGVhc3Qgb25lIG9mIHRoZW0gaXNcbiAgICAvLyBub3QgYHplcm9gLCB1c2UgdGhlIHN0cmljdCBlcXVhbCBjb21wYXJpc29uIHRvIHZpc3VhbGl6ZSB0aGUgb3V0cHV0LlxuXG4gICAgaWYgKGlucHV0TGVuZ3RoIDw9IGtNYXhTaG9ydExlbmd0aCkge1xuICAgICAgaWYgKChfdHlwZW9mKGFjdHVhbCkgIT09ICdvYmplY3QnIHx8IGFjdHVhbCA9PT0gbnVsbCkgJiYgKF90eXBlb2YoZXhwZWN0ZWQpICE9PSAnb2JqZWN0JyB8fCBleHBlY3RlZCA9PT0gbnVsbCkgJiYgKGFjdHVhbCAhPT0gMCB8fCBleHBlY3RlZCAhPT0gMCkpIHtcbiAgICAgICAgLy8gLTAgPT09ICswXG4gICAgICAgIHJldHVybiBcIlwiLmNvbmNhdChrUmVhZGFibGVPcGVyYXRvcltvcGVyYXRvcl0sIFwiXFxuXFxuXCIpICsgXCJcIi5jb25jYXQoYWN0dWFsTGluZXNbMF0sIFwiICE9PSBcIikuY29uY2F0KGV4cGVjdGVkTGluZXNbMF0sIFwiXFxuXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAob3BlcmF0b3IgIT09ICdzdHJpY3RFcXVhbE9iamVjdCcpIHtcbiAgICAgIC8vIElmIHRoZSBzdGRlcnIgaXMgYSB0dHkgYW5kIHRoZSBpbnB1dCBsZW5ndGggaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudFxuICAgICAgLy8gY29sdW1ucyBwZXIgbGluZSwgYWRkIGEgbWlzbWF0Y2ggaW5kaWNhdG9yIGJlbG93IHRoZSBvdXRwdXQuIElmIGl0IGlzXG4gICAgICAvLyBub3QgYSB0dHksIHVzZSBhIGRlZmF1bHQgdmFsdWUgb2YgODAgY2hhcmFjdGVycy5cbiAgICAgIHZhciBtYXhMZW5ndGggPSBwcm9jZXNzLnN0ZGVyciAmJiBwcm9jZXNzLnN0ZGVyci5pc1RUWSA/IHByb2Nlc3Muc3RkZXJyLmNvbHVtbnMgOiA4MDtcblxuICAgICAgaWYgKGlucHV0TGVuZ3RoIDwgbWF4TGVuZ3RoKSB7XG4gICAgICAgIHdoaWxlIChhY3R1YWxMaW5lc1swXVtpXSA9PT0gZXhwZWN0ZWRMaW5lc1swXVtpXSkge1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfSAvLyBJZ25vcmUgdGhlIGZpcnN0IGNoYXJhY3RlcnMuXG5cblxuICAgICAgICBpZiAoaSA+IDIpIHtcbiAgICAgICAgICAvLyBBZGQgcG9zaXRpb24gaW5kaWNhdG9yIGZvciB0aGUgZmlyc3QgbWlzbWF0Y2ggaW4gY2FzZSBpdCBpcyBhXG4gICAgICAgICAgLy8gc2luZ2xlIGxpbmUgYW5kIHRoZSBpbnB1dCBsZW5ndGggaXMgbGVzcyB0aGFuIHRoZSBjb2x1bW4gbGVuZ3RoLlxuICAgICAgICAgIGluZGljYXRvciA9IFwiXFxuICBcIi5jb25jYXQocmVwZWF0KCcgJywgaSksIFwiXlwiKTtcbiAgICAgICAgICBpID0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSAvLyBSZW1vdmUgYWxsIGVuZGluZyBsaW5lcyB0aGF0IG1hdGNoICh0aGlzIG9wdGltaXplcyB0aGUgb3V0cHV0IGZvclxuICAvLyByZWFkYWJpbGl0eSBieSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIHRvdGFsIGNoYW5nZWQgbGluZXMpLlxuXG5cbiAgdmFyIGEgPSBhY3R1YWxMaW5lc1thY3R1YWxMaW5lcy5sZW5ndGggLSAxXTtcbiAgdmFyIGIgPSBleHBlY3RlZExpbmVzW2V4cGVjdGVkTGluZXMubGVuZ3RoIC0gMV07XG5cbiAgd2hpbGUgKGEgPT09IGIpIHtcbiAgICBpZiAoaSsrIDwgMikge1xuICAgICAgZW5kID0gXCJcXG4gIFwiLmNvbmNhdChhKS5jb25jYXQoZW5kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3RoZXIgPSBhO1xuICAgIH1cblxuICAgIGFjdHVhbExpbmVzLnBvcCgpO1xuICAgIGV4cGVjdGVkTGluZXMucG9wKCk7XG4gICAgaWYgKGFjdHVhbExpbmVzLmxlbmd0aCA9PT0gMCB8fCBleHBlY3RlZExpbmVzLmxlbmd0aCA9PT0gMCkgYnJlYWs7XG4gICAgYSA9IGFjdHVhbExpbmVzW2FjdHVhbExpbmVzLmxlbmd0aCAtIDFdO1xuICAgIGIgPSBleHBlY3RlZExpbmVzW2V4cGVjdGVkTGluZXMubGVuZ3RoIC0gMV07XG4gIH1cblxuICB2YXIgbWF4TGluZXMgPSBNYXRoLm1heChhY3R1YWxMaW5lcy5sZW5ndGgsIGV4cGVjdGVkTGluZXMubGVuZ3RoKTsgLy8gU3RyaWN0IGVxdWFsIHdpdGggaWRlbnRpY2FsIG9iamVjdHMgdGhhdCBhcmUgbm90IGlkZW50aWNhbCBieSByZWZlcmVuY2UuXG4gIC8vIEUuZy4sIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoeyBhOiBTeW1ib2woKSB9LCB7IGE6IFN5bWJvbCgpIH0pXG5cbiAgaWYgKG1heExpbmVzID09PSAwKSB7XG4gICAgLy8gV2UgaGF2ZSB0byBnZXQgdGhlIHJlc3VsdCBhZ2Fpbi4gVGhlIGxpbmVzIHdlcmUgYWxsIHJlbW92ZWQgYmVmb3JlLlxuICAgIHZhciBfYWN0dWFsTGluZXMgPSBhY3R1YWxJbnNwZWN0ZWQuc3BsaXQoJ1xcbicpOyAvLyBPbmx5IHJlbW92ZSBsaW5lcyBpbiBjYXNlIGl0IG1ha2VzIHNlbnNlIHRvIGNvbGxhcHNlIHRob3NlLlxuICAgIC8vIFRPRE86IEFjY2VwdCBlbnYgdG8gYWx3YXlzIHNob3cgdGhlIGZ1bGwgZXJyb3IuXG5cblxuICAgIGlmIChfYWN0dWFsTGluZXMubGVuZ3RoID4gMzApIHtcbiAgICAgIF9hY3R1YWxMaW5lc1syNl0gPSBcIlwiLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUpO1xuXG4gICAgICB3aGlsZSAoX2FjdHVhbExpbmVzLmxlbmd0aCA+IDI3KSB7XG4gICAgICAgIF9hY3R1YWxMaW5lcy5wb3AoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIi5jb25jYXQoa1JlYWRhYmxlT3BlcmF0b3Iubm90SWRlbnRpY2FsLCBcIlxcblxcblwiKS5jb25jYXQoX2FjdHVhbExpbmVzLmpvaW4oJ1xcbicpLCBcIlxcblwiKTtcbiAgfVxuXG4gIGlmIChpID4gMykge1xuICAgIGVuZCA9IFwiXFxuXCIuY29uY2F0KGJsdWUsIFwiLi4uXCIpLmNvbmNhdCh3aGl0ZSkuY29uY2F0KGVuZCk7XG4gICAgc2tpcHBlZCA9IHRydWU7XG4gIH1cblxuICBpZiAob3RoZXIgIT09ICcnKSB7XG4gICAgZW5kID0gXCJcXG4gIFwiLmNvbmNhdChvdGhlcikuY29uY2F0KGVuZCk7XG4gICAgb3RoZXIgPSAnJztcbiAgfVxuXG4gIHZhciBwcmludGVkTGluZXMgPSAwO1xuICB2YXIgbXNnID0ga1JlYWRhYmxlT3BlcmF0b3Jbb3BlcmF0b3JdICsgXCJcXG5cIi5jb25jYXQoZ3JlZW4sIFwiKyBhY3R1YWxcIikuY29uY2F0KHdoaXRlLCBcIiBcIikuY29uY2F0KHJlZCwgXCItIGV4cGVjdGVkXCIpLmNvbmNhdCh3aGl0ZSk7XG4gIHZhciBza2lwcGVkTXNnID0gXCIgXCIuY29uY2F0KGJsdWUsIFwiLi4uXCIpLmNvbmNhdCh3aGl0ZSwgXCIgTGluZXMgc2tpcHBlZFwiKTtcblxuICBmb3IgKGkgPSAwOyBpIDwgbWF4TGluZXM7IGkrKykge1xuICAgIC8vIE9ubHkgZXh0cmEgZXhwZWN0ZWQgbGluZXMgZXhpc3RcbiAgICB2YXIgY3VyID0gaSAtIGxhc3RQb3M7XG5cbiAgICBpZiAoYWN0dWFsTGluZXMubGVuZ3RoIDwgaSArIDEpIHtcbiAgICAgIC8vIElmIHRoZSBsYXN0IGRpdmVyZ2luZyBsaW5lIGlzIG1vcmUgdGhhbiBvbmUgbGluZSBhYm92ZSBhbmQgdGhlXG4gICAgICAvLyBjdXJyZW50IGxpbmUgaXMgYXQgbGVhc3QgbGluZSB0aHJlZSwgYWRkIHNvbWUgb2YgdGhlIGZvcm1lciBsaW5lcyBhbmRcbiAgICAgIC8vIGFsc28gYWRkIGRvdHMgdG8gaW5kaWNhdGUgc2tpcHBlZCBlbnRyaWVzLlxuICAgICAgaWYgKGN1ciA+IDEgJiYgaSA+IDIpIHtcbiAgICAgICAgaWYgKGN1ciA+IDQpIHtcbiAgICAgICAgICByZXMgKz0gXCJcXG5cIi5jb25jYXQoYmx1ZSwgXCIuLi5cIikuY29uY2F0KHdoaXRlKTtcbiAgICAgICAgICBza2lwcGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXIgPiAzKSB7XG4gICAgICAgICAgcmVzICs9IFwiXFxuICBcIi5jb25jYXQoZXhwZWN0ZWRMaW5lc1tpIC0gMl0pO1xuICAgICAgICAgIHByaW50ZWRMaW5lcysrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzICs9IFwiXFxuICBcIi5jb25jYXQoZXhwZWN0ZWRMaW5lc1tpIC0gMV0pO1xuICAgICAgICBwcmludGVkTGluZXMrKztcbiAgICAgIH0gLy8gTWFyayB0aGUgY3VycmVudCBsaW5lIGFzIHRoZSBsYXN0IGRpdmVyZ2luZyBvbmUuXG5cblxuICAgICAgbGFzdFBvcyA9IGk7IC8vIEFkZCB0aGUgZXhwZWN0ZWQgbGluZSB0byB0aGUgY2FjaGUuXG5cbiAgICAgIG90aGVyICs9IFwiXFxuXCIuY29uY2F0KHJlZCwgXCItXCIpLmNvbmNhdCh3aGl0ZSwgXCIgXCIpLmNvbmNhdChleHBlY3RlZExpbmVzW2ldKTtcbiAgICAgIHByaW50ZWRMaW5lcysrOyAvLyBPbmx5IGV4dHJhIGFjdHVhbCBsaW5lcyBleGlzdFxuICAgIH0gZWxzZSBpZiAoZXhwZWN0ZWRMaW5lcy5sZW5ndGggPCBpICsgMSkge1xuICAgICAgLy8gSWYgdGhlIGxhc3QgZGl2ZXJnaW5nIGxpbmUgaXMgbW9yZSB0aGFuIG9uZSBsaW5lIGFib3ZlIGFuZCB0aGVcbiAgICAgIC8vIGN1cnJlbnQgbGluZSBpcyBhdCBsZWFzdCBsaW5lIHRocmVlLCBhZGQgc29tZSBvZiB0aGUgZm9ybWVyIGxpbmVzIGFuZFxuICAgICAgLy8gYWxzbyBhZGQgZG90cyB0byBpbmRpY2F0ZSBza2lwcGVkIGVudHJpZXMuXG4gICAgICBpZiAoY3VyID4gMSAmJiBpID4gMikge1xuICAgICAgICBpZiAoY3VyID4gNCkge1xuICAgICAgICAgIHJlcyArPSBcIlxcblwiLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUpO1xuICAgICAgICAgIHNraXBwZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGN1ciA+IDMpIHtcbiAgICAgICAgICByZXMgKz0gXCJcXG4gIFwiLmNvbmNhdChhY3R1YWxMaW5lc1tpIC0gMl0pO1xuICAgICAgICAgIHByaW50ZWRMaW5lcysrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzICs9IFwiXFxuICBcIi5jb25jYXQoYWN0dWFsTGluZXNbaSAtIDFdKTtcbiAgICAgICAgcHJpbnRlZExpbmVzKys7XG4gICAgICB9IC8vIE1hcmsgdGhlIGN1cnJlbnQgbGluZSBhcyB0aGUgbGFzdCBkaXZlcmdpbmcgb25lLlxuXG5cbiAgICAgIGxhc3RQb3MgPSBpOyAvLyBBZGQgdGhlIGFjdHVhbCBsaW5lIHRvIHRoZSByZXN1bHQuXG5cbiAgICAgIHJlcyArPSBcIlxcblwiLmNvbmNhdChncmVlbiwgXCIrXCIpLmNvbmNhdCh3aGl0ZSwgXCIgXCIpLmNvbmNhdChhY3R1YWxMaW5lc1tpXSk7XG4gICAgICBwcmludGVkTGluZXMrKzsgLy8gTGluZXMgZGl2ZXJnZVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZXhwZWN0ZWRMaW5lID0gZXhwZWN0ZWRMaW5lc1tpXTtcbiAgICAgIHZhciBhY3R1YWxMaW5lID0gYWN0dWFsTGluZXNbaV07IC8vIElmIHRoZSBsaW5lcyBkaXZlcmdlLCBzcGVjaWZpY2FsbHkgY2hlY2sgZm9yIGxpbmVzIHRoYXQgb25seSBkaXZlcmdlIGJ5XG4gICAgICAvLyBhIHRyYWlsaW5nIGNvbW1hLiBJbiB0aGF0IGNhc2UgaXQgaXMgYWN0dWFsbHkgaWRlbnRpY2FsIGFuZCB3ZSBzaG91bGRcbiAgICAgIC8vIG1hcmsgaXQgYXMgc3VjaC5cblxuICAgICAgdmFyIGRpdmVyZ2luZ0xpbmVzID0gYWN0dWFsTGluZSAhPT0gZXhwZWN0ZWRMaW5lICYmICghZW5kc1dpdGgoYWN0dWFsTGluZSwgJywnKSB8fCBhY3R1YWxMaW5lLnNsaWNlKDAsIC0xKSAhPT0gZXhwZWN0ZWRMaW5lKTsgLy8gSWYgdGhlIGV4cGVjdGVkIGxpbmUgaGFzIGEgdHJhaWxpbmcgY29tbWEgYnV0IGlzIG90aGVyd2lzZSBpZGVudGljYWwsXG4gICAgICAvLyBhZGQgYSBjb21tYSBhdCB0aGUgZW5kIG9mIHRoZSBhY3R1YWwgbGluZS4gT3RoZXJ3aXNlIHRoZSBvdXRwdXQgY291bGRcbiAgICAgIC8vIGxvb2sgd2VpcmQgYXMgaW46XG4gICAgICAvL1xuICAgICAgLy8gICBbXG4gICAgICAvLyAgICAgMSAgICAgICAgIC8vIE5vIGNvbW1hIGF0IHRoZSBlbmQhXG4gICAgICAvLyArICAgMlxuICAgICAgLy8gICBdXG4gICAgICAvL1xuXG4gICAgICBpZiAoZGl2ZXJnaW5nTGluZXMgJiYgZW5kc1dpdGgoZXhwZWN0ZWRMaW5lLCAnLCcpICYmIGV4cGVjdGVkTGluZS5zbGljZSgwLCAtMSkgPT09IGFjdHVhbExpbmUpIHtcbiAgICAgICAgZGl2ZXJnaW5nTGluZXMgPSBmYWxzZTtcbiAgICAgICAgYWN0dWFsTGluZSArPSAnLCc7XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXZlcmdpbmdMaW5lcykge1xuICAgICAgICAvLyBJZiB0aGUgbGFzdCBkaXZlcmdpbmcgbGluZSBpcyBtb3JlIHRoYW4gb25lIGxpbmUgYWJvdmUgYW5kIHRoZVxuICAgICAgICAvLyBjdXJyZW50IGxpbmUgaXMgYXQgbGVhc3QgbGluZSB0aHJlZSwgYWRkIHNvbWUgb2YgdGhlIGZvcm1lciBsaW5lcyBhbmRcbiAgICAgICAgLy8gYWxzbyBhZGQgZG90cyB0byBpbmRpY2F0ZSBza2lwcGVkIGVudHJpZXMuXG4gICAgICAgIGlmIChjdXIgPiAxICYmIGkgPiAyKSB7XG4gICAgICAgICAgaWYgKGN1ciA+IDQpIHtcbiAgICAgICAgICAgIHJlcyArPSBcIlxcblwiLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUpO1xuICAgICAgICAgICAgc2tpcHBlZCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChjdXIgPiAzKSB7XG4gICAgICAgICAgICByZXMgKz0gXCJcXG4gIFwiLmNvbmNhdChhY3R1YWxMaW5lc1tpIC0gMl0pO1xuICAgICAgICAgICAgcHJpbnRlZExpbmVzKys7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzICs9IFwiXFxuICBcIi5jb25jYXQoYWN0dWFsTGluZXNbaSAtIDFdKTtcbiAgICAgICAgICBwcmludGVkTGluZXMrKztcbiAgICAgICAgfSAvLyBNYXJrIHRoZSBjdXJyZW50IGxpbmUgYXMgdGhlIGxhc3QgZGl2ZXJnaW5nIG9uZS5cblxuXG4gICAgICAgIGxhc3RQb3MgPSBpOyAvLyBBZGQgdGhlIGFjdHVhbCBsaW5lIHRvIHRoZSByZXN1bHQgYW5kIGNhY2hlIHRoZSBleHBlY3RlZCBkaXZlcmdpbmdcbiAgICAgICAgLy8gbGluZSBzbyBjb25zZWN1dGl2ZSBkaXZlcmdpbmcgbGluZXMgc2hvdyB1cCBhcyArKystLS0gYW5kIG5vdCArLSstKy0uXG5cbiAgICAgICAgcmVzICs9IFwiXFxuXCIuY29uY2F0KGdyZWVuLCBcIitcIikuY29uY2F0KHdoaXRlLCBcIiBcIikuY29uY2F0KGFjdHVhbExpbmUpO1xuICAgICAgICBvdGhlciArPSBcIlxcblwiLmNvbmNhdChyZWQsIFwiLVwiKS5jb25jYXQod2hpdGUsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWRMaW5lKTtcbiAgICAgICAgcHJpbnRlZExpbmVzICs9IDI7IC8vIExpbmVzIGFyZSBpZGVudGljYWxcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFkZCBhbGwgY2FjaGVkIGluZm9ybWF0aW9uIHRvIHRoZSByZXN1bHQgYmVmb3JlIGFkZGluZyBvdGhlciB0aGluZ3NcbiAgICAgICAgLy8gYW5kIHJlc2V0IHRoZSBjYWNoZS5cbiAgICAgICAgcmVzICs9IG90aGVyO1xuICAgICAgICBvdGhlciA9ICcnOyAvLyBJZiB0aGUgbGFzdCBkaXZlcmdpbmcgbGluZSBpcyBleGFjdGx5IG9uZSBsaW5lIGFib3ZlIG9yIGlmIGl0IGlzIHRoZVxuICAgICAgICAvLyB2ZXJ5IGZpcnN0IGxpbmUsIGFkZCB0aGUgbGluZSB0byB0aGUgcmVzdWx0LlxuXG4gICAgICAgIGlmIChjdXIgPT09IDEgfHwgaSA9PT0gMCkge1xuICAgICAgICAgIHJlcyArPSBcIlxcbiAgXCIuY29uY2F0KGFjdHVhbExpbmUpO1xuICAgICAgICAgIHByaW50ZWRMaW5lcysrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyBJbnNwZWN0ZWQgb2JqZWN0IHRvIGJpZyAoU2hvdyB+MjAgcm93cyBtYXgpXG5cblxuICAgIGlmIChwcmludGVkTGluZXMgPiAyMCAmJiBpIDwgbWF4TGluZXMgLSAyKSB7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQobXNnKS5jb25jYXQoc2tpcHBlZE1zZywgXCJcXG5cIikuY29uY2F0KHJlcywgXCJcXG5cIikuY29uY2F0KGJsdWUsIFwiLi4uXCIpLmNvbmNhdCh3aGl0ZSkuY29uY2F0KG90aGVyLCBcIlxcblwiKSArIFwiXCIuY29uY2F0KGJsdWUsIFwiLi4uXCIpLmNvbmNhdCh3aGl0ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFwiXCIuY29uY2F0KG1zZykuY29uY2F0KHNraXBwZWQgPyBza2lwcGVkTXNnIDogJycsIFwiXFxuXCIpLmNvbmNhdChyZXMpLmNvbmNhdChvdGhlcikuY29uY2F0KGVuZCkuY29uY2F0KGluZGljYXRvcik7XG59XG5cbnZhciBBc3NlcnRpb25FcnJvciA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoX0Vycm9yKSB7XG4gIF9pbmhlcml0cyhBc3NlcnRpb25FcnJvciwgX0Vycm9yKTtcblxuICBmdW5jdGlvbiBBc3NlcnRpb25FcnJvcihvcHRpb25zKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFzc2VydGlvbkVycm9yKTtcblxuICAgIGlmIChfdHlwZW9mKG9wdGlvbnMpICE9PSAnb2JqZWN0JyB8fCBvcHRpb25zID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ29wdGlvbnMnLCAnT2JqZWN0Jywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgdmFyIG1lc3NhZ2UgPSBvcHRpb25zLm1lc3NhZ2UsXG4gICAgICAgIG9wZXJhdG9yID0gb3B0aW9ucy5vcGVyYXRvcixcbiAgICAgICAgc3RhY2tTdGFydEZuID0gb3B0aW9ucy5zdGFja1N0YXJ0Rm47XG4gICAgdmFyIGFjdHVhbCA9IG9wdGlvbnMuYWN0dWFsLFxuICAgICAgICBleHBlY3RlZCA9IG9wdGlvbnMuZXhwZWN0ZWQ7XG4gICAgdmFyIGxpbWl0ID0gRXJyb3Iuc3RhY2tUcmFjZUxpbWl0O1xuICAgIEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IDA7XG5cbiAgICBpZiAobWVzc2FnZSAhPSBudWxsKSB7XG4gICAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihBc3NlcnRpb25FcnJvcikuY2FsbCh0aGlzLCBTdHJpbmcobWVzc2FnZSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb2Nlc3Muc3RkZXJyICYmIHByb2Nlc3Muc3RkZXJyLmlzVFRZKSB7XG4gICAgICAgIC8vIFJlc2V0IG9uIGVhY2ggY2FsbCB0byBtYWtlIHN1cmUgd2UgaGFuZGxlIGR5bmFtaWNhbGx5IHNldCBlbnZpcm9ubWVudFxuICAgICAgICAvLyB2YXJpYWJsZXMgY29ycmVjdC5cbiAgICAgICAgaWYgKHByb2Nlc3Muc3RkZXJyICYmIHByb2Nlc3Muc3RkZXJyLmdldENvbG9yRGVwdGggJiYgcHJvY2Vzcy5zdGRlcnIuZ2V0Q29sb3JEZXB0aCgpICE9PSAxKSB7XG4gICAgICAgICAgYmx1ZSA9IFwiXFx4MUJbMzRtXCI7XG4gICAgICAgICAgZ3JlZW4gPSBcIlxceDFCWzMybVwiO1xuICAgICAgICAgIHdoaXRlID0gXCJcXHgxQlszOW1cIjtcbiAgICAgICAgICByZWQgPSBcIlxceDFCWzMxbVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJsdWUgPSAnJztcbiAgICAgICAgICBncmVlbiA9ICcnO1xuICAgICAgICAgIHdoaXRlID0gJyc7XG4gICAgICAgICAgcmVkID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gUHJldmVudCB0aGUgZXJyb3Igc3RhY2sgZnJvbSBiZWluZyB2aXNpYmxlIGJ5IGR1cGxpY2F0aW5nIHRoZSBlcnJvclxuICAgICAgLy8gaW4gYSB2ZXJ5IGNsb3NlIHdheSB0byB0aGUgb3JpZ2luYWwgaW4gY2FzZSBib3RoIHNpZGVzIGFyZSBhY3R1YWxseVxuICAgICAgLy8gaW5zdGFuY2VzIG9mIEVycm9yLlxuXG5cbiAgICAgIGlmIChfdHlwZW9mKGFjdHVhbCkgPT09ICdvYmplY3QnICYmIGFjdHVhbCAhPT0gbnVsbCAmJiBfdHlwZW9mKGV4cGVjdGVkKSA9PT0gJ29iamVjdCcgJiYgZXhwZWN0ZWQgIT09IG51bGwgJiYgJ3N0YWNrJyBpbiBhY3R1YWwgJiYgYWN0dWFsIGluc3RhbmNlb2YgRXJyb3IgJiYgJ3N0YWNrJyBpbiBleHBlY3RlZCAmJiBleHBlY3RlZCBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGFjdHVhbCA9IGNvcHlFcnJvcihhY3R1YWwpO1xuICAgICAgICBleHBlY3RlZCA9IGNvcHlFcnJvcihleHBlY3RlZCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcGVyYXRvciA9PT0gJ2RlZXBTdHJpY3RFcXVhbCcgfHwgb3BlcmF0b3IgPT09ICdzdHJpY3RFcXVhbCcpIHtcbiAgICAgICAgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoQXNzZXJ0aW9uRXJyb3IpLmNhbGwodGhpcywgY3JlYXRlRXJyRGlmZihhY3R1YWwsIGV4cGVjdGVkLCBvcGVyYXRvcikpKTtcbiAgICAgIH0gZWxzZSBpZiAob3BlcmF0b3IgPT09ICdub3REZWVwU3RyaWN0RXF1YWwnIHx8IG9wZXJhdG9yID09PSAnbm90U3RyaWN0RXF1YWwnKSB7XG4gICAgICAgIC8vIEluIGNhc2UgdGhlIG9iamVjdHMgYXJlIGVxdWFsIGJ1dCB0aGUgb3BlcmF0b3IgcmVxdWlyZXMgdW5lcXVhbCwgc2hvd1xuICAgICAgICAvLyB0aGUgZmlyc3Qgb2JqZWN0IGFuZCBzYXkgQSBlcXVhbHMgQlxuICAgICAgICB2YXIgYmFzZSA9IGtSZWFkYWJsZU9wZXJhdG9yW29wZXJhdG9yXTtcbiAgICAgICAgdmFyIHJlcyA9IGluc3BlY3RWYWx1ZShhY3R1YWwpLnNwbGl0KCdcXG4nKTsgLy8gSW4gY2FzZSBcImFjdHVhbFwiIGlzIGFuIG9iamVjdCwgaXQgc2hvdWxkIG5vdCBiZSByZWZlcmVuY2UgZXF1YWwuXG5cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSAnbm90U3RyaWN0RXF1YWwnICYmIF90eXBlb2YoYWN0dWFsKSA9PT0gJ29iamVjdCcgJiYgYWN0dWFsICE9PSBudWxsKSB7XG4gICAgICAgICAgYmFzZSA9IGtSZWFkYWJsZU9wZXJhdG9yLm5vdFN0cmljdEVxdWFsT2JqZWN0O1xuICAgICAgICB9IC8vIE9ubHkgcmVtb3ZlIGxpbmVzIGluIGNhc2UgaXQgbWFrZXMgc2Vuc2UgdG8gY29sbGFwc2UgdGhvc2UuXG4gICAgICAgIC8vIFRPRE86IEFjY2VwdCBlbnYgdG8gYWx3YXlzIHNob3cgdGhlIGZ1bGwgZXJyb3IuXG5cblxuICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDMwKSB7XG4gICAgICAgICAgcmVzWzI2XSA9IFwiXCIuY29uY2F0KGJsdWUsIFwiLi4uXCIpLmNvbmNhdCh3aGl0ZSk7XG5cbiAgICAgICAgICB3aGlsZSAocmVzLmxlbmd0aCA+IDI3KSB7XG4gICAgICAgICAgICByZXMucG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIE9ubHkgcHJpbnQgYSBzaW5nbGUgaW5wdXQuXG5cblxuICAgICAgICBpZiAocmVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX2dldFByb3RvdHlwZU9mKEFzc2VydGlvbkVycm9yKS5jYWxsKHRoaXMsIFwiXCIuY29uY2F0KGJhc2UsIFwiIFwiKS5jb25jYXQocmVzWzBdKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX2dldFByb3RvdHlwZU9mKEFzc2VydGlvbkVycm9yKS5jYWxsKHRoaXMsIFwiXCIuY29uY2F0KGJhc2UsIFwiXFxuXFxuXCIpLmNvbmNhdChyZXMuam9pbignXFxuJyksIFwiXFxuXCIpKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBfcmVzID0gaW5zcGVjdFZhbHVlKGFjdHVhbCk7XG5cbiAgICAgICAgdmFyIG90aGVyID0gJyc7XG4gICAgICAgIHZhciBrbm93bk9wZXJhdG9ycyA9IGtSZWFkYWJsZU9wZXJhdG9yW29wZXJhdG9yXTtcblxuICAgICAgICBpZiAob3BlcmF0b3IgPT09ICdub3REZWVwRXF1YWwnIHx8IG9wZXJhdG9yID09PSAnbm90RXF1YWwnKSB7XG4gICAgICAgICAgX3JlcyA9IFwiXCIuY29uY2F0KGtSZWFkYWJsZU9wZXJhdG9yW29wZXJhdG9yXSwgXCJcXG5cXG5cIikuY29uY2F0KF9yZXMpO1xuXG4gICAgICAgICAgaWYgKF9yZXMubGVuZ3RoID4gMTAyNCkge1xuICAgICAgICAgICAgX3JlcyA9IFwiXCIuY29uY2F0KF9yZXMuc2xpY2UoMCwgMTAyMSksIFwiLi4uXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdGhlciA9IFwiXCIuY29uY2F0KGluc3BlY3RWYWx1ZShleHBlY3RlZCkpO1xuXG4gICAgICAgICAgaWYgKF9yZXMubGVuZ3RoID4gNTEyKSB7XG4gICAgICAgICAgICBfcmVzID0gXCJcIi5jb25jYXQoX3Jlcy5zbGljZSgwLCA1MDkpLCBcIi4uLlwiKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob3RoZXIubGVuZ3RoID4gNTEyKSB7XG4gICAgICAgICAgICBvdGhlciA9IFwiXCIuY29uY2F0KG90aGVyLnNsaWNlKDAsIDUwOSksIFwiLi4uXCIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChvcGVyYXRvciA9PT0gJ2RlZXBFcXVhbCcgfHwgb3BlcmF0b3IgPT09ICdlcXVhbCcpIHtcbiAgICAgICAgICAgIF9yZXMgPSBcIlwiLmNvbmNhdChrbm93bk9wZXJhdG9ycywgXCJcXG5cXG5cIikuY29uY2F0KF9yZXMsIFwiXFxuXFxuc2hvdWxkIGVxdWFsXFxuXFxuXCIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdGhlciA9IFwiIFwiLmNvbmNhdChvcGVyYXRvciwgXCIgXCIpLmNvbmNhdChvdGhlcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoQXNzZXJ0aW9uRXJyb3IpLmNhbGwodGhpcywgXCJcIi5jb25jYXQoX3JlcykuY29uY2F0KG90aGVyKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IGxpbWl0O1xuICAgIF90aGlzLmdlbmVyYXRlZE1lc3NhZ2UgPSAhbWVzc2FnZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksICduYW1lJywge1xuICAgICAgdmFsdWU6ICdBc3NlcnRpb25FcnJvciBbRVJSX0FTU0VSVElPTl0nLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIF90aGlzLmNvZGUgPSAnRVJSX0FTU0VSVElPTic7XG4gICAgX3RoaXMuYWN0dWFsID0gYWN0dWFsO1xuICAgIF90aGlzLmV4cGVjdGVkID0gZXhwZWN0ZWQ7XG4gICAgX3RoaXMub3BlcmF0b3IgPSBvcGVyYXRvcjtcblxuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgc3RhY2tTdGFydEZuKTtcbiAgICB9IC8vIENyZWF0ZSBlcnJvciBtZXNzYWdlIGluY2x1ZGluZyB0aGUgZXJyb3IgY29kZSBpbiB0aGUgbmFtZS5cblxuXG4gICAgX3RoaXMuc3RhY2s7IC8vIFJlc2V0IHRoZSBuYW1lLlxuXG4gICAgX3RoaXMubmFtZSA9ICdBc3NlcnRpb25FcnJvcic7XG4gICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKF90aGlzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhBc3NlcnRpb25FcnJvciwgW3tcbiAgICBrZXk6IFwidG9TdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQodGhpcy5uYW1lLCBcIiBbXCIpLmNvbmNhdCh0aGlzLmNvZGUsIFwiXTogXCIpLmNvbmNhdCh0aGlzLm1lc3NhZ2UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogaW5zcGVjdC5jdXN0b20sXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKHJlY3Vyc2VUaW1lcywgY3R4KSB7XG4gICAgICAvLyBUaGlzIGxpbWl0cyB0aGUgYGFjdHVhbGAgYW5kIGBleHBlY3RlZGAgcHJvcGVydHkgZGVmYXVsdCBpbnNwZWN0aW9uIHRvXG4gICAgICAvLyB0aGUgbWluaW11bSBkZXB0aC4gT3RoZXJ3aXNlIHRob3NlIHZhbHVlcyB3b3VsZCBiZSB0b28gdmVyYm9zZSBjb21wYXJlZFxuICAgICAgLy8gdG8gdGhlIGFjdHVhbCBlcnJvciBtZXNzYWdlIHdoaWNoIGNvbnRhaW5zIGEgY29tYmluZWQgdmlldyBvZiB0aGVzZSB0d29cbiAgICAgIC8vIGlucHV0IHZhbHVlcy5cbiAgICAgIHJldHVybiBpbnNwZWN0KHRoaXMsIF9vYmplY3RTcHJlYWQoe30sIGN0eCwge1xuICAgICAgICBjdXN0b21JbnNwZWN0OiBmYWxzZSxcbiAgICAgICAgZGVwdGg6IDBcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQXNzZXJ0aW9uRXJyb3I7XG59KF93cmFwTmF0aXZlU3VwZXIoRXJyb3IpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBBc3NlcnRpb25FcnJvcjsiLCIvLyBDdXJyZW50bHkgaW4gc3luYyB3aXRoIE5vZGUuanMgbGliL2ludGVybmFsL2Vycm9ycy5qc1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2NvbW1pdC8zYjA0NDk2MmM0OGZlMzEzOTA1ODc3YTk2YjVkMDg5NGE1NDA0ZjZmXG5cbi8qIGVzbGludCBub2RlLWNvcmUvZG9jdW1lbnRlZC1lcnJvcnM6IFwiZXJyb3JcIiAqL1xuXG4vKiBlc2xpbnQgbm9kZS1jb3JlL2FscGhhYmV0aXplLWVycm9yczogXCJlcnJvclwiICovXG5cbi8qIGVzbGludCBub2RlLWNvcmUvcHJlZmVyLXV0aWwtZm9ybWF0LWVycm9yczogXCJlcnJvclwiICovXG4ndXNlIHN0cmljdCc7IC8vIFRoZSB3aG9sZSBwb2ludCBiZWhpbmQgdGhpcyBpbnRlcm5hbCBtb2R1bGUgaXMgdG8gYWxsb3cgTm9kZS5qcyB0byBub1xuLy8gbG9uZ2VyIGJlIGZvcmNlZCB0byB0cmVhdCBldmVyeSBlcnJvciBtZXNzYWdlIGNoYW5nZSBhcyBhIHNlbXZlci1tYWpvclxuLy8gY2hhbmdlLiBUaGUgTm9kZUVycm9yIGNsYXNzZXMgaGVyZSBhbGwgZXhwb3NlIGEgYGNvZGVgIHByb3BlcnR5IHdob3NlXG4vLyB2YWx1ZSBzdGF0aWNhbGx5IGFuZCBwZXJtYW5lbnRseSBpZGVudGlmaWVzIHRoZSBlcnJvci4gV2hpbGUgdGhlIGVycm9yXG4vLyBtZXNzYWdlIG1heSBjaGFuZ2UsIHRoZSBjb2RlIHNob3VsZCBub3QuXG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxudmFyIGNvZGVzID0ge307IC8vIExhenkgbG9hZGVkXG5cbnZhciBhc3NlcnQ7XG52YXIgdXRpbDtcblxuZnVuY3Rpb24gY3JlYXRlRXJyb3JUeXBlKGNvZGUsIG1lc3NhZ2UsIEJhc2UpIHtcbiAgaWYgKCFCYXNlKSB7XG4gICAgQmFzZSA9IEVycm9yO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TWVzc2FnZShhcmcxLCBhcmcyLCBhcmczKSB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBtZXNzYWdlKGFyZzEsIGFyZzIsIGFyZzMpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBOb2RlRXJyb3IgPVxuICAvKiNfX1BVUkVfXyovXG4gIGZ1bmN0aW9uIChfQmFzZSkge1xuICAgIF9pbmhlcml0cyhOb2RlRXJyb3IsIF9CYXNlKTtcblxuICAgIGZ1bmN0aW9uIE5vZGVFcnJvcihhcmcxLCBhcmcyLCBhcmczKSB7XG4gICAgICB2YXIgX3RoaXM7XG5cbiAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOb2RlRXJyb3IpO1xuXG4gICAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihOb2RlRXJyb3IpLmNhbGwodGhpcywgZ2V0TWVzc2FnZShhcmcxLCBhcmcyLCBhcmczKSkpO1xuICAgICAgX3RoaXMuY29kZSA9IGNvZGU7XG4gICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIE5vZGVFcnJvcjtcbiAgfShCYXNlKTtcblxuICBjb2Rlc1tjb2RlXSA9IE5vZGVFcnJvcjtcbn0gLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvdjEwLjguMC9saWIvaW50ZXJuYWwvZXJyb3JzLmpzXG5cblxuZnVuY3Rpb24gb25lT2YoZXhwZWN0ZWQsIHRoaW5nKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGV4cGVjdGVkKSkge1xuICAgIHZhciBsZW4gPSBleHBlY3RlZC5sZW5ndGg7XG4gICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5tYXAoZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBTdHJpbmcoaSk7XG4gICAgfSk7XG5cbiAgICBpZiAobGVuID4gMikge1xuICAgICAgcmV0dXJuIFwib25lIG9mIFwiLmNvbmNhdCh0aGluZywgXCIgXCIpLmNvbmNhdChleHBlY3RlZC5zbGljZSgwLCBsZW4gLSAxKS5qb2luKCcsICcpLCBcIiwgb3IgXCIpICsgZXhwZWN0ZWRbbGVuIC0gMV07XG4gICAgfSBlbHNlIGlmIChsZW4gPT09IDIpIHtcbiAgICAgIHJldHVybiBcIm9uZSBvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWRbMF0sIFwiIG9yIFwiKS5jb25jYXQoZXhwZWN0ZWRbMV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWRbMF0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXCJvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoU3RyaW5nKGV4cGVjdGVkKSk7XG4gIH1cbn0gLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nL3N0YXJ0c1dpdGhcblxuXG5mdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgc2VhcmNoLCBwb3MpIHtcbiAgcmV0dXJuIHN0ci5zdWJzdHIoIXBvcyB8fCBwb3MgPCAwID8gMCA6ICtwb3MsIHNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7XG59IC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9lbmRzV2l0aFxuXG5cbmZ1bmN0aW9uIGVuZHNXaXRoKHN0ciwgc2VhcmNoLCB0aGlzX2xlbikge1xuICBpZiAodGhpc19sZW4gPT09IHVuZGVmaW5lZCB8fCB0aGlzX2xlbiA+IHN0ci5sZW5ndGgpIHtcbiAgICB0aGlzX2xlbiA9IHN0ci5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gc3RyLnN1YnN0cmluZyh0aGlzX2xlbiAtIHNlYXJjaC5sZW5ndGgsIHRoaXNfbGVuKSA9PT0gc2VhcmNoO1xufSAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvaW5jbHVkZXNcblxuXG5mdW5jdGlvbiBpbmNsdWRlcyhzdHIsIHNlYXJjaCwgc3RhcnQpIHtcbiAgaWYgKHR5cGVvZiBzdGFydCAhPT0gJ251bWJlcicpIHtcbiAgICBzdGFydCA9IDA7XG4gIH1cblxuICBpZiAoc3RhcnQgKyBzZWFyY2gubGVuZ3RoID4gc3RyLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RyLmluZGV4T2Yoc2VhcmNoLCBzdGFydCkgIT09IC0xO1xuICB9XG59XG5cbmNyZWF0ZUVycm9yVHlwZSgnRVJSX0FNQklHVU9VU19BUkdVTUVOVCcsICdUaGUgXCIlc1wiIGFyZ3VtZW50IGlzIGFtYmlndW91cy4gJXMnLCBUeXBlRXJyb3IpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfSU5WQUxJRF9BUkdfVFlQRScsIGZ1bmN0aW9uIChuYW1lLCBleHBlY3RlZCwgYWN0dWFsKSB7XG4gIGlmIChhc3NlcnQgPT09IHVuZGVmaW5lZCkgYXNzZXJ0ID0gcmVxdWlyZSgnLi4vYXNzZXJ0Jyk7XG4gIGFzc2VydCh0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycsIFwiJ25hbWUnIG11c3QgYmUgYSBzdHJpbmdcIik7IC8vIGRldGVybWluZXI6ICdtdXN0IGJlJyBvciAnbXVzdCBub3QgYmUnXG5cbiAgdmFyIGRldGVybWluZXI7XG5cbiAgaWYgKHR5cGVvZiBleHBlY3RlZCA9PT0gJ3N0cmluZycgJiYgc3RhcnRzV2l0aChleHBlY3RlZCwgJ25vdCAnKSkge1xuICAgIGRldGVybWluZXIgPSAnbXVzdCBub3QgYmUnO1xuICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQucmVwbGFjZSgvXm5vdCAvLCAnJyk7XG4gIH0gZWxzZSB7XG4gICAgZGV0ZXJtaW5lciA9ICdtdXN0IGJlJztcbiAgfVxuXG4gIHZhciBtc2c7XG5cbiAgaWYgKGVuZHNXaXRoKG5hbWUsICcgYXJndW1lbnQnKSkge1xuICAgIC8vIEZvciBjYXNlcyBsaWtlICdmaXJzdCBhcmd1bWVudCdcbiAgICBtc2cgPSBcIlRoZSBcIi5jb25jYXQobmFtZSwgXCIgXCIpLmNvbmNhdChkZXRlcm1pbmVyLCBcIiBcIikuY29uY2F0KG9uZU9mKGV4cGVjdGVkLCAndHlwZScpKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdHlwZSA9IGluY2x1ZGVzKG5hbWUsICcuJykgPyAncHJvcGVydHknIDogJ2FyZ3VtZW50JztcbiAgICBtc2cgPSBcIlRoZSBcXFwiXCIuY29uY2F0KG5hbWUsIFwiXFxcIiBcIikuY29uY2F0KHR5cGUsIFwiIFwiKS5jb25jYXQoZGV0ZXJtaW5lciwgXCIgXCIpLmNvbmNhdChvbmVPZihleHBlY3RlZCwgJ3R5cGUnKSk7XG4gIH0gLy8gVE9ETyhCcmlkZ2VBUik6IEltcHJvdmUgdGhlIG91dHB1dCBieSBzaG93aW5nIGBudWxsYCBhbmQgc2ltaWxhci5cblxuXG4gIG1zZyArPSBcIi4gUmVjZWl2ZWQgdHlwZSBcIi5jb25jYXQoX3R5cGVvZihhY3R1YWwpKTtcbiAgcmV0dXJuIG1zZztcbn0sIFR5cGVFcnJvcik7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9JTlZBTElEX0FSR19WQUxVRScsIGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICB2YXIgcmVhc29uID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAnaXMgaW52YWxpZCc7XG4gIGlmICh1dGlsID09PSB1bmRlZmluZWQpIHV0aWwgPSByZXF1aXJlKCd1dGlsLycpO1xuICB2YXIgaW5zcGVjdGVkID0gdXRpbC5pbnNwZWN0KHZhbHVlKTtcblxuICBpZiAoaW5zcGVjdGVkLmxlbmd0aCA+IDEyOCkge1xuICAgIGluc3BlY3RlZCA9IFwiXCIuY29uY2F0KGluc3BlY3RlZC5zbGljZSgwLCAxMjgpLCBcIi4uLlwiKTtcbiAgfVxuXG4gIHJldHVybiBcIlRoZSBhcmd1bWVudCAnXCIuY29uY2F0KG5hbWUsIFwiJyBcIikuY29uY2F0KHJlYXNvbiwgXCIuIFJlY2VpdmVkIFwiKS5jb25jYXQoaW5zcGVjdGVkKTtcbn0sIFR5cGVFcnJvciwgUmFuZ2VFcnJvcik7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9JTlZBTElEX1JFVFVSTl9WQUxVRScsIGZ1bmN0aW9uIChpbnB1dCwgbmFtZSwgdmFsdWUpIHtcbiAgdmFyIHR5cGU7XG5cbiAgaWYgKHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUpIHtcbiAgICB0eXBlID0gXCJpbnN0YW5jZSBvZiBcIi5jb25jYXQodmFsdWUuY29uc3RydWN0b3IubmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgdHlwZSA9IFwidHlwZSBcIi5jb25jYXQoX3R5cGVvZih2YWx1ZSkpO1xuICB9XG5cbiAgcmV0dXJuIFwiRXhwZWN0ZWQgXCIuY29uY2F0KGlucHV0LCBcIiB0byBiZSByZXR1cm5lZCBmcm9tIHRoZSBcXFwiXCIpLmNvbmNhdChuYW1lLCBcIlxcXCJcIikgKyBcIiBmdW5jdGlvbiBidXQgZ290IFwiLmNvbmNhdCh0eXBlLCBcIi5cIik7XG59LCBUeXBlRXJyb3IpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfTUlTU0lOR19BUkdTJywgZnVuY3Rpb24gKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgaWYgKGFzc2VydCA9PT0gdW5kZWZpbmVkKSBhc3NlcnQgPSByZXF1aXJlKCcuLi9hc3NlcnQnKTtcbiAgYXNzZXJ0KGFyZ3MubGVuZ3RoID4gMCwgJ0F0IGxlYXN0IG9uZSBhcmcgbmVlZHMgdG8gYmUgc3BlY2lmaWVkJyk7XG4gIHZhciBtc2cgPSAnVGhlICc7XG4gIHZhciBsZW4gPSBhcmdzLmxlbmd0aDtcbiAgYXJncyA9IGFyZ3MubWFwKGZ1bmN0aW9uIChhKSB7XG4gICAgcmV0dXJuIFwiXFxcIlwiLmNvbmNhdChhLCBcIlxcXCJcIik7XG4gIH0pO1xuXG4gIHN3aXRjaCAobGVuKSB7XG4gICAgY2FzZSAxOlxuICAgICAgbXNnICs9IFwiXCIuY29uY2F0KGFyZ3NbMF0sIFwiIGFyZ3VtZW50XCIpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDI6XG4gICAgICBtc2cgKz0gXCJcIi5jb25jYXQoYXJnc1swXSwgXCIgYW5kIFwiKS5jb25jYXQoYXJnc1sxXSwgXCIgYXJndW1lbnRzXCIpO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgbXNnICs9IGFyZ3Muc2xpY2UoMCwgbGVuIC0gMSkuam9pbignLCAnKTtcbiAgICAgIG1zZyArPSBcIiwgYW5kIFwiLmNvbmNhdChhcmdzW2xlbiAtIDFdLCBcIiBhcmd1bWVudHNcIik7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBcIlwiLmNvbmNhdChtc2csIFwiIG11c3QgYmUgc3BlY2lmaWVkXCIpO1xufSwgVHlwZUVycm9yKTtcbm1vZHVsZS5leHBvcnRzLmNvZGVzID0gY29kZXM7IiwiLy8gQ3VycmVudGx5IGluIHN5bmMgd2l0aCBOb2RlLmpzIGxpYi9pbnRlcm5hbC91dGlsL2NvbXBhcmlzb25zLmpzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvY29tbWl0LzExMmNjN2MyNzU1MTI1NGFhMmIxNzA5OGZiNzc0ODY3ZjA1ZWQwZDlcbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgeyB2YXIgX2FyciA9IFtdOyB2YXIgX24gPSB0cnVlOyB2YXIgX2QgPSBmYWxzZTsgdmFyIF9lID0gdW5kZWZpbmVkOyB0cnkgeyBmb3IgKHZhciBfaSA9IGFycltTeW1ib2wuaXRlcmF0b3JdKCksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpOyB9IGZpbmFsbHkgeyBpZiAoX2QpIHRocm93IF9lOyB9IH0gcmV0dXJuIF9hcnI7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbnZhciByZWdleEZsYWdzU3VwcG9ydGVkID0gL2EvZy5mbGFncyAhPT0gdW5kZWZpbmVkO1xuXG52YXIgYXJyYXlGcm9tU2V0ID0gZnVuY3Rpb24gYXJyYXlGcm9tU2V0KHNldCkge1xuICB2YXIgYXJyYXkgPSBbXTtcbiAgc2V0LmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIGFycmF5LnB1c2godmFsdWUpO1xuICB9KTtcbiAgcmV0dXJuIGFycmF5O1xufTtcblxudmFyIGFycmF5RnJvbU1hcCA9IGZ1bmN0aW9uIGFycmF5RnJvbU1hcChtYXApIHtcbiAgdmFyIGFycmF5ID0gW107XG4gIG1hcC5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgcmV0dXJuIGFycmF5LnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSk7XG4gIHJldHVybiBhcnJheTtcbn07XG5cbnZhciBvYmplY3RJcyA9IE9iamVjdC5pcyA/IE9iamVjdC5pcyA6IHJlcXVpcmUoJ29iamVjdC1pcycpO1xudmFyIG9iamVjdEdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gW107XG59O1xudmFyIG51bWJlcklzTmFOID0gTnVtYmVyLmlzTmFOID8gTnVtYmVyLmlzTmFOIDogcmVxdWlyZSgnaXMtbmFuJyk7XG5cbmZ1bmN0aW9uIHVuY3VycnlUaGlzKGYpIHtcbiAgcmV0dXJuIGYuY2FsbC5iaW5kKGYpO1xufVxuXG52YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyhPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHVuY3VycnlUaGlzKE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUpO1xudmFyIG9iamVjdFRvU3RyaW5nID0gdW5jdXJyeVRoaXMoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyk7XG5cbnZhciBfcmVxdWlyZSR0eXBlcyA9IHJlcXVpcmUoJ3V0aWwvJykudHlwZXMsXG4gICAgaXNBbnlBcnJheUJ1ZmZlciA9IF9yZXF1aXJlJHR5cGVzLmlzQW55QXJyYXlCdWZmZXIsXG4gICAgaXNBcnJheUJ1ZmZlclZpZXcgPSBfcmVxdWlyZSR0eXBlcy5pc0FycmF5QnVmZmVyVmlldyxcbiAgICBpc0RhdGUgPSBfcmVxdWlyZSR0eXBlcy5pc0RhdGUsXG4gICAgaXNNYXAgPSBfcmVxdWlyZSR0eXBlcy5pc01hcCxcbiAgICBpc1JlZ0V4cCA9IF9yZXF1aXJlJHR5cGVzLmlzUmVnRXhwLFxuICAgIGlzU2V0ID0gX3JlcXVpcmUkdHlwZXMuaXNTZXQsXG4gICAgaXNOYXRpdmVFcnJvciA9IF9yZXF1aXJlJHR5cGVzLmlzTmF0aXZlRXJyb3IsXG4gICAgaXNCb3hlZFByaW1pdGl2ZSA9IF9yZXF1aXJlJHR5cGVzLmlzQm94ZWRQcmltaXRpdmUsXG4gICAgaXNOdW1iZXJPYmplY3QgPSBfcmVxdWlyZSR0eXBlcy5pc051bWJlck9iamVjdCxcbiAgICBpc1N0cmluZ09iamVjdCA9IF9yZXF1aXJlJHR5cGVzLmlzU3RyaW5nT2JqZWN0LFxuICAgIGlzQm9vbGVhbk9iamVjdCA9IF9yZXF1aXJlJHR5cGVzLmlzQm9vbGVhbk9iamVjdCxcbiAgICBpc0JpZ0ludE9iamVjdCA9IF9yZXF1aXJlJHR5cGVzLmlzQmlnSW50T2JqZWN0LFxuICAgIGlzU3ltYm9sT2JqZWN0ID0gX3JlcXVpcmUkdHlwZXMuaXNTeW1ib2xPYmplY3QsXG4gICAgaXNGbG9hdDMyQXJyYXkgPSBfcmVxdWlyZSR0eXBlcy5pc0Zsb2F0MzJBcnJheSxcbiAgICBpc0Zsb2F0NjRBcnJheSA9IF9yZXF1aXJlJHR5cGVzLmlzRmxvYXQ2NEFycmF5O1xuXG5mdW5jdGlvbiBpc05vbkluZGV4KGtleSkge1xuICBpZiAoa2V5Lmxlbmd0aCA9PT0gMCB8fCBrZXkubGVuZ3RoID4gMTApIHJldHVybiB0cnVlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNvZGUgPSBrZXkuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoY29kZSA8IDQ4IHx8IGNvZGUgPiA1NykgcmV0dXJuIHRydWU7XG4gIH0gLy8gVGhlIG1heGltdW0gc2l6ZSBmb3IgYW4gYXJyYXkgaXMgMiAqKiAzMiAtMS5cblxuXG4gIHJldHVybiBrZXkubGVuZ3RoID09PSAxMCAmJiBrZXkgPj0gTWF0aC5wb3coMiwgMzIpO1xufVxuXG5mdW5jdGlvbiBnZXRPd25Ob25JbmRleFByb3BlcnRpZXModmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHZhbHVlKS5maWx0ZXIoaXNOb25JbmRleCkuY29uY2F0KG9iamVjdEdldE93blByb3BlcnR5U3ltYm9scyh2YWx1ZSkuZmlsdGVyKE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuYmluZCh2YWx1ZSkpKTtcbn0gLy8gVGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9ibG9iLzY4MGU5ZTVlNDg4ZjIyYWFjMjc1OTlhNTdkYzg0NGE2MzE1OTI4ZGQvaW5kZXguanNcbi8vIG9yaWdpbmFsIG5vdGljZTpcblxuLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuXG5cbmZ1bmN0aW9uIGNvbXBhcmUoYSwgYikge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHggPSBhLmxlbmd0aDtcbiAgdmFyIHkgPSBiLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gTWF0aC5taW4oeCwgeSk7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICB4ID0gYVtpXTtcbiAgICAgIHkgPSBiW2ldO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgaWYgKHkgPCB4KSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxudmFyIE9OTFlfRU5VTUVSQUJMRSA9IHVuZGVmaW5lZDtcbnZhciBrU3RyaWN0ID0gdHJ1ZTtcbnZhciBrTG9vc2UgPSBmYWxzZTtcbnZhciBrTm9JdGVyYXRvciA9IDA7XG52YXIga0lzQXJyYXkgPSAxO1xudmFyIGtJc1NldCA9IDI7XG52YXIga0lzTWFwID0gMzsgLy8gQ2hlY2sgaWYgdGhleSBoYXZlIHRoZSBzYW1lIHNvdXJjZSBhbmQgZmxhZ3NcblxuZnVuY3Rpb24gYXJlU2ltaWxhclJlZ0V4cHMoYSwgYikge1xuICByZXR1cm4gcmVnZXhGbGFnc1N1cHBvcnRlZCA/IGEuc291cmNlID09PSBiLnNvdXJjZSAmJiBhLmZsYWdzID09PSBiLmZsYWdzIDogUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpID09PSBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYik7XG59XG5cbmZ1bmN0aW9uIGFyZVNpbWlsYXJGbG9hdEFycmF5cyhhLCBiKSB7XG4gIGlmIChhLmJ5dGVMZW5ndGggIT09IGIuYnl0ZUxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAodmFyIG9mZnNldCA9IDA7IG9mZnNldCA8IGEuYnl0ZUxlbmd0aDsgb2Zmc2V0KyspIHtcbiAgICBpZiAoYVtvZmZzZXRdICE9PSBiW29mZnNldF0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gYXJlU2ltaWxhclR5cGVkQXJyYXlzKGEsIGIpIHtcbiAgaWYgKGEuYnl0ZUxlbmd0aCAhPT0gYi5ieXRlTGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGNvbXBhcmUobmV3IFVpbnQ4QXJyYXkoYS5idWZmZXIsIGEuYnl0ZU9mZnNldCwgYS5ieXRlTGVuZ3RoKSwgbmV3IFVpbnQ4QXJyYXkoYi5idWZmZXIsIGIuYnl0ZU9mZnNldCwgYi5ieXRlTGVuZ3RoKSkgPT09IDA7XG59XG5cbmZ1bmN0aW9uIGFyZUVxdWFsQXJyYXlCdWZmZXJzKGJ1ZjEsIGJ1ZjIpIHtcbiAgcmV0dXJuIGJ1ZjEuYnl0ZUxlbmd0aCA9PT0gYnVmMi5ieXRlTGVuZ3RoICYmIGNvbXBhcmUobmV3IFVpbnQ4QXJyYXkoYnVmMSksIG5ldyBVaW50OEFycmF5KGJ1ZjIpKSA9PT0gMDtcbn1cblxuZnVuY3Rpb24gaXNFcXVhbEJveGVkUHJpbWl0aXZlKHZhbDEsIHZhbDIpIHtcbiAgaWYgKGlzTnVtYmVyT2JqZWN0KHZhbDEpKSB7XG4gICAgcmV0dXJuIGlzTnVtYmVyT2JqZWN0KHZhbDIpICYmIG9iamVjdElzKE51bWJlci5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDEpLCBOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh2YWwyKSk7XG4gIH1cblxuICBpZiAoaXNTdHJpbmdPYmplY3QodmFsMSkpIHtcbiAgICByZXR1cm4gaXNTdHJpbmdPYmplY3QodmFsMikgJiYgU3RyaW5nLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodmFsMSkgPT09IFN0cmluZy5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDIpO1xuICB9XG5cbiAgaWYgKGlzQm9vbGVhbk9iamVjdCh2YWwxKSkge1xuICAgIHJldHVybiBpc0Jvb2xlYW5PYmplY3QodmFsMikgJiYgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDEpID09PSBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodmFsMik7XG4gIH1cblxuICBpZiAoaXNCaWdJbnRPYmplY3QodmFsMSkpIHtcbiAgICByZXR1cm4gaXNCaWdJbnRPYmplY3QodmFsMikgJiYgQmlnSW50LnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodmFsMSkgPT09IEJpZ0ludC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDIpO1xuICB9XG5cbiAgcmV0dXJuIGlzU3ltYm9sT2JqZWN0KHZhbDIpICYmIFN5bWJvbC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDEpID09PSBTeW1ib2wucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh2YWwyKTtcbn0gLy8gTm90ZXM6IFR5cGUgdGFncyBhcmUgaGlzdG9yaWNhbCBbW0NsYXNzXV0gcHJvcGVydGllcyB0aGF0IGNhbiBiZSBzZXQgYnlcbi8vIEZ1bmN0aW9uVGVtcGxhdGU6OlNldENsYXNzTmFtZSgpIGluIEMrKyBvciBTeW1ib2wudG9TdHJpbmdUYWcgaW4gSlNcbi8vIGFuZCByZXRyaWV2ZWQgdXNpbmcgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgaW4gSlNcbi8vIFNlZSBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nXG4vLyBmb3IgYSBsaXN0IG9mIHRhZ3MgcHJlLWRlZmluZWQgaW4gdGhlIHNwZWMuXG4vLyBUaGVyZSBhcmUgc29tZSB1bnNwZWNpZmllZCB0YWdzIGluIHRoZSB3aWxkIHRvbyAoZS5nLiB0eXBlZCBhcnJheSB0YWdzKS5cbi8vIFNpbmNlIHRhZ3MgY2FuIGJlIGFsdGVyZWQsIHRoZXkgb25seSBzZXJ2ZSBmYXN0IGZhaWx1cmVzXG4vL1xuLy8gVHlwZWQgYXJyYXlzIGFuZCBidWZmZXJzIGFyZSBjaGVja2VkIGJ5IGNvbXBhcmluZyB0aGUgY29udGVudCBpbiB0aGVpclxuLy8gdW5kZXJseWluZyBBcnJheUJ1ZmZlci4gVGhpcyBvcHRpbWl6YXRpb24gcmVxdWlyZXMgdGhhdCBpdCdzXG4vLyByZWFzb25hYmxlIHRvIGludGVycHJldCB0aGVpciB1bmRlcmx5aW5nIG1lbW9yeSBpbiB0aGUgc2FtZSB3YXksXG4vLyB3aGljaCBpcyBjaGVja2VkIGJ5IGNvbXBhcmluZyB0aGVpciB0eXBlIHRhZ3MuXG4vLyAoZS5nLiBhIFVpbnQ4QXJyYXkgYW5kIGEgVWludDE2QXJyYXkgd2l0aCB0aGUgc2FtZSBtZW1vcnkgY29udGVudFxuLy8gY291bGQgc3RpbGwgYmUgZGlmZmVyZW50IGJlY2F1c2UgdGhleSB3aWxsIGJlIGludGVycHJldGVkIGRpZmZlcmVudGx5KS5cbi8vXG4vLyBGb3Igc3RyaWN0IGNvbXBhcmlzb24sIG9iamVjdHMgc2hvdWxkIGhhdmVcbi8vIGEpIFRoZSBzYW1lIGJ1aWx0LWluIHR5cGUgdGFnc1xuLy8gYikgVGhlIHNhbWUgcHJvdG90eXBlcy5cblxuXG5mdW5jdGlvbiBpbm5lckRlZXBFcXVhbCh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW9zKSB7XG4gIC8vIEFsbCBpZGVudGljYWwgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBhcyBkZXRlcm1pbmVkIGJ5ID09PS5cbiAgaWYgKHZhbDEgPT09IHZhbDIpIHtcbiAgICBpZiAodmFsMSAhPT0gMCkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHN0cmljdCA/IG9iamVjdElzKHZhbDEsIHZhbDIpIDogdHJ1ZTtcbiAgfSAvLyBDaGVjayBtb3JlIGNsb3NlbHkgaWYgdmFsMSBhbmQgdmFsMiBhcmUgZXF1YWwuXG5cblxuICBpZiAoc3RyaWN0KSB7XG4gICAgaWYgKF90eXBlb2YodmFsMSkgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbDEgPT09ICdudW1iZXInICYmIG51bWJlcklzTmFOKHZhbDEpICYmIG51bWJlcklzTmFOKHZhbDIpO1xuICAgIH1cblxuICAgIGlmIChfdHlwZW9mKHZhbDIpICE9PSAnb2JqZWN0JyB8fCB2YWwxID09PSBudWxsIHx8IHZhbDIgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbDEpICE9PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsMikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHZhbDEgPT09IG51bGwgfHwgX3R5cGVvZih2YWwxKSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIGlmICh2YWwyID09PSBudWxsIHx8IF90eXBlb2YodmFsMikgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgICAgICAgcmV0dXJuIHZhbDEgPT0gdmFsMjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh2YWwyID09PSBudWxsIHx8IF90eXBlb2YodmFsMikgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdmFyIHZhbDFUYWcgPSBvYmplY3RUb1N0cmluZyh2YWwxKTtcbiAgdmFyIHZhbDJUYWcgPSBvYmplY3RUb1N0cmluZyh2YWwyKTtcblxuICBpZiAodmFsMVRhZyAhPT0gdmFsMlRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbDEpKSB7XG4gICAgLy8gQ2hlY2sgZm9yIHNwYXJzZSBhcnJheXMgYW5kIGdlbmVyYWwgZmFzdCBwYXRoXG4gICAgaWYgKHZhbDEubGVuZ3RoICE9PSB2YWwyLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBrZXlzMSA9IGdldE93bk5vbkluZGV4UHJvcGVydGllcyh2YWwxLCBPTkxZX0VOVU1FUkFCTEUpO1xuICAgIHZhciBrZXlzMiA9IGdldE93bk5vbkluZGV4UHJvcGVydGllcyh2YWwyLCBPTkxZX0VOVU1FUkFCTEUpO1xuXG4gICAgaWYgKGtleXMxLmxlbmd0aCAhPT0ga2V5czIubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleUNoZWNrKHZhbDEsIHZhbDIsIHN0cmljdCwgbWVtb3MsIGtJc0FycmF5LCBrZXlzMSk7XG4gIH0gLy8gW2Jyb3dzZXJpZnldIFRoaXMgdHJpZ2dlcnMgb24gY2VydGFpbiB0eXBlcyBpbiBJRSAoTWFwL1NldCkgc28gd2UgZG9uJ3RcbiAgLy8gd2FuJ3QgdG8gZWFybHkgcmV0dXJuIG91dCBvZiB0aGUgcmVzdCBvZiB0aGUgY2hlY2tzLiBIb3dldmVyIHdlIGNhbiBjaGVja1xuICAvLyBpZiB0aGUgc2Vjb25kIHZhbHVlIGlzIG9uZSBvZiB0aGVzZSB2YWx1ZXMgYW5kIHRoZSBmaXJzdCBpc24ndC5cblxuXG4gIGlmICh2YWwxVGFnID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgIC8vIHJldHVybiBrZXlDaGVjayh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW9zLCBrTm9JdGVyYXRvcik7XG4gICAgaWYgKCFpc01hcCh2YWwxKSAmJiBpc01hcCh2YWwyKSB8fCAhaXNTZXQodmFsMSkgJiYgaXNTZXQodmFsMikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoaXNEYXRlKHZhbDEpKSB7XG4gICAgaWYgKCFpc0RhdGUodmFsMikgfHwgRGF0ZS5wcm90b3R5cGUuZ2V0VGltZS5jYWxsKHZhbDEpICE9PSBEYXRlLnByb3RvdHlwZS5nZXRUaW1lLmNhbGwodmFsMikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNSZWdFeHAodmFsMSkpIHtcbiAgICBpZiAoIWlzUmVnRXhwKHZhbDIpIHx8ICFhcmVTaW1pbGFyUmVnRXhwcyh2YWwxLCB2YWwyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc05hdGl2ZUVycm9yKHZhbDEpIHx8IHZhbDEgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIC8vIERvIG5vdCBjb21wYXJlIHRoZSBzdGFjayBhcyBpdCBtaWdodCBkaWZmZXIgZXZlbiB0aG91Z2ggdGhlIGVycm9yIGl0c2VsZlxuICAgIC8vIGlzIG90aGVyd2lzZSBpZGVudGljYWwuXG4gICAgaWYgKHZhbDEubWVzc2FnZSAhPT0gdmFsMi5tZXNzYWdlIHx8IHZhbDEubmFtZSAhPT0gdmFsMi5uYW1lKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KHZhbDEpKSB7XG4gICAgaWYgKCFzdHJpY3QgJiYgKGlzRmxvYXQzMkFycmF5KHZhbDEpIHx8IGlzRmxvYXQ2NEFycmF5KHZhbDEpKSkge1xuICAgICAgaWYgKCFhcmVTaW1pbGFyRmxvYXRBcnJheXModmFsMSwgdmFsMikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWFyZVNpbWlsYXJUeXBlZEFycmF5cyh2YWwxLCB2YWwyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gQnVmZmVyLmNvbXBhcmUgcmV0dXJucyB0cnVlLCBzbyB2YWwxLmxlbmd0aCA9PT0gdmFsMi5sZW5ndGguIElmIHRoZXkgYm90aFxuICAgIC8vIG9ubHkgY29udGFpbiBudW1lcmljIGtleXMsIHdlIGRvbid0IG5lZWQgdG8gZXhhbSBmdXJ0aGVyIHRoYW4gY2hlY2tpbmdcbiAgICAvLyB0aGUgc3ltYm9scy5cblxuXG4gICAgdmFyIF9rZXlzID0gZ2V0T3duTm9uSW5kZXhQcm9wZXJ0aWVzKHZhbDEsIE9OTFlfRU5VTUVSQUJMRSk7XG5cbiAgICB2YXIgX2tleXMyID0gZ2V0T3duTm9uSW5kZXhQcm9wZXJ0aWVzKHZhbDIsIE9OTFlfRU5VTUVSQUJMRSk7XG5cbiAgICBpZiAoX2tleXMubGVuZ3RoICE9PSBfa2V5czIubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleUNoZWNrKHZhbDEsIHZhbDIsIHN0cmljdCwgbWVtb3MsIGtOb0l0ZXJhdG9yLCBfa2V5cyk7XG4gIH0gZWxzZSBpZiAoaXNTZXQodmFsMSkpIHtcbiAgICBpZiAoIWlzU2V0KHZhbDIpIHx8IHZhbDEuc2l6ZSAhPT0gdmFsMi5zaXplKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleUNoZWNrKHZhbDEsIHZhbDIsIHN0cmljdCwgbWVtb3MsIGtJc1NldCk7XG4gIH0gZWxzZSBpZiAoaXNNYXAodmFsMSkpIHtcbiAgICBpZiAoIWlzTWFwKHZhbDIpIHx8IHZhbDEuc2l6ZSAhPT0gdmFsMi5zaXplKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleUNoZWNrKHZhbDEsIHZhbDIsIHN0cmljdCwgbWVtb3MsIGtJc01hcCk7XG4gIH0gZWxzZSBpZiAoaXNBbnlBcnJheUJ1ZmZlcih2YWwxKSkge1xuICAgIGlmICghYXJlRXF1YWxBcnJheUJ1ZmZlcnModmFsMSwgdmFsMikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNCb3hlZFByaW1pdGl2ZSh2YWwxKSAmJiAhaXNFcXVhbEJveGVkUHJpbWl0aXZlKHZhbDEsIHZhbDIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGtleUNoZWNrKHZhbDEsIHZhbDIsIHN0cmljdCwgbWVtb3MsIGtOb0l0ZXJhdG9yKTtcbn1cblxuZnVuY3Rpb24gZ2V0RW51bWVyYWJsZXModmFsLCBrZXlzKSB7XG4gIHJldHVybiBrZXlzLmZpbHRlcihmdW5jdGlvbiAoaykge1xuICAgIHJldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZSh2YWwsIGspO1xuICB9KTtcbn1cblxuZnVuY3Rpb24ga2V5Q2hlY2sodmFsMSwgdmFsMiwgc3RyaWN0LCBtZW1vcywgaXRlcmF0aW9uVHlwZSwgYUtleXMpIHtcbiAgLy8gRm9yIGFsbCByZW1haW5pbmcgT2JqZWN0IHBhaXJzLCBpbmNsdWRpbmcgQXJyYXksIG9iamVjdHMgYW5kIE1hcHMsXG4gIC8vIGVxdWl2YWxlbmNlIGlzIGRldGVybWluZWQgYnkgaGF2aW5nOlxuICAvLyBhKSBUaGUgc2FtZSBudW1iZXIgb2Ygb3duZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzXG4gIC8vIGIpIFRoZSBzYW1lIHNldCBvZiBrZXlzL2luZGV4ZXMgKGFsdGhvdWdoIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBvcmRlcilcbiAgLy8gYykgRXF1aXZhbGVudCB2YWx1ZXMgZm9yIGV2ZXJ5IGNvcnJlc3BvbmRpbmcga2V5L2luZGV4XG4gIC8vIGQpIEZvciBTZXRzIGFuZCBNYXBzLCBlcXVhbCBjb250ZW50c1xuICAvLyBOb3RlOiB0aGlzIGFjY291bnRzIGZvciBib3RoIG5hbWVkIGFuZCBpbmRleGVkIHByb3BlcnRpZXMgb24gQXJyYXlzLlxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gNSkge1xuICAgIGFLZXlzID0gT2JqZWN0LmtleXModmFsMSk7XG4gICAgdmFyIGJLZXlzID0gT2JqZWN0LmtleXModmFsMik7IC8vIFRoZSBwYWlyIG11c3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Ygb3duZWQgcHJvcGVydGllcy5cblxuICAgIGlmIChhS2V5cy5sZW5ndGggIT09IGJLZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSAvLyBDaGVhcCBrZXkgdGVzdFxuXG5cbiAgdmFyIGkgPSAwO1xuXG4gIGZvciAoOyBpIDwgYUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoIWhhc093blByb3BlcnR5KHZhbDIsIGFLZXlzW2ldKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzdHJpY3QgJiYgYXJndW1lbnRzLmxlbmd0aCA9PT0gNSkge1xuICAgIHZhciBzeW1ib2xLZXlzQSA9IG9iamVjdEdldE93blByb3BlcnR5U3ltYm9scyh2YWwxKTtcblxuICAgIGlmIChzeW1ib2xLZXlzQS5sZW5ndGggIT09IDApIHtcbiAgICAgIHZhciBjb3VudCA9IDA7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzeW1ib2xLZXlzQS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIga2V5ID0gc3ltYm9sS2V5c0FbaV07XG5cbiAgICAgICAgaWYgKHByb3BlcnR5SXNFbnVtZXJhYmxlKHZhbDEsIGtleSkpIHtcbiAgICAgICAgICBpZiAoIXByb3BlcnR5SXNFbnVtZXJhYmxlKHZhbDIsIGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhS2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgY291bnQrKztcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUlzRW51bWVyYWJsZSh2YWwyLCBrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBzeW1ib2xLZXlzQiA9IG9iamVjdEdldE93blByb3BlcnR5U3ltYm9scyh2YWwyKTtcblxuICAgICAgaWYgKHN5bWJvbEtleXNBLmxlbmd0aCAhPT0gc3ltYm9sS2V5c0IubGVuZ3RoICYmIGdldEVudW1lcmFibGVzKHZhbDIsIHN5bWJvbEtleXNCKS5sZW5ndGggIT09IGNvdW50KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIF9zeW1ib2xLZXlzQiA9IG9iamVjdEdldE93blByb3BlcnR5U3ltYm9scyh2YWwyKTtcblxuICAgICAgaWYgKF9zeW1ib2xLZXlzQi5sZW5ndGggIT09IDAgJiYgZ2V0RW51bWVyYWJsZXModmFsMiwgX3N5bWJvbEtleXNCKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChhS2V5cy5sZW5ndGggPT09IDAgJiYgKGl0ZXJhdGlvblR5cGUgPT09IGtOb0l0ZXJhdG9yIHx8IGl0ZXJhdGlvblR5cGUgPT09IGtJc0FycmF5ICYmIHZhbDEubGVuZ3RoID09PSAwIHx8IHZhbDEuc2l6ZSA9PT0gMCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyBVc2UgbWVtb3MgdG8gaGFuZGxlIGN5Y2xlcy5cblxuXG4gIGlmIChtZW1vcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbWVtb3MgPSB7XG4gICAgICB2YWwxOiBuZXcgTWFwKCksXG4gICAgICB2YWwyOiBuZXcgTWFwKCksXG4gICAgICBwb3NpdGlvbjogMFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gV2UgcHJldmVudCB1cCB0byB0d28gbWFwLmhhcyh4KSBjYWxscyBieSBkaXJlY3RseSByZXRyaWV2aW5nIHRoZSB2YWx1ZVxuICAgIC8vIGFuZCBjaGVja2luZyBmb3IgdW5kZWZpbmVkLiBUaGUgbWFwIGNhbiBvbmx5IGNvbnRhaW4gbnVtYmVycywgc28gaXQgaXNcbiAgICAvLyBzYWZlIHRvIGNoZWNrIGZvciB1bmRlZmluZWQgb25seS5cbiAgICB2YXIgdmFsMk1lbW9BID0gbWVtb3MudmFsMS5nZXQodmFsMSk7XG5cbiAgICBpZiAodmFsMk1lbW9BICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciB2YWwyTWVtb0IgPSBtZW1vcy52YWwyLmdldCh2YWwyKTtcblxuICAgICAgaWYgKHZhbDJNZW1vQiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB2YWwyTWVtb0EgPT09IHZhbDJNZW1vQjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtZW1vcy5wb3NpdGlvbisrO1xuICB9XG5cbiAgbWVtb3MudmFsMS5zZXQodmFsMSwgbWVtb3MucG9zaXRpb24pO1xuICBtZW1vcy52YWwyLnNldCh2YWwyLCBtZW1vcy5wb3NpdGlvbik7XG4gIHZhciBhcmVFcSA9IG9iakVxdWl2KHZhbDEsIHZhbDIsIHN0cmljdCwgYUtleXMsIG1lbW9zLCBpdGVyYXRpb25UeXBlKTtcbiAgbWVtb3MudmFsMS5kZWxldGUodmFsMSk7XG4gIG1lbW9zLnZhbDIuZGVsZXRlKHZhbDIpO1xuICByZXR1cm4gYXJlRXE7XG59XG5cbmZ1bmN0aW9uIHNldEhhc0VxdWFsRWxlbWVudChzZXQsIHZhbDEsIHN0cmljdCwgbWVtbykge1xuICAvLyBHbyBsb29raW5nLlxuICB2YXIgc2V0VmFsdWVzID0gYXJyYXlGcm9tU2V0KHNldCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXRWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdmFsMiA9IHNldFZhbHVlc1tpXTtcblxuICAgIGlmIChpbm5lckRlZXBFcXVhbCh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW8pKSB7XG4gICAgICAvLyBSZW1vdmUgdGhlIG1hdGNoaW5nIGVsZW1lbnQgdG8gbWFrZSBzdXJlIHdlIGRvIG5vdCBjaGVjayB0aGF0IGFnYWluLlxuICAgICAgc2V0LmRlbGV0ZSh2YWwyKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn0gLy8gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvRXF1YWxpdHlfY29tcGFyaXNvbnNfYW5kX3NhbWVuZXNzI0xvb3NlX2VxdWFsaXR5X3VzaW5nXG4vLyBTYWRseSBpdCBpcyBub3QgcG9zc2libGUgdG8gZGV0ZWN0IGNvcnJlc3BvbmRpbmcgdmFsdWVzIHByb3Blcmx5IGluIGNhc2UgdGhlXG4vLyB0eXBlIGlzIGEgc3RyaW5nLCBudW1iZXIsIGJpZ2ludCBvciBib29sZWFuLiBUaGUgcmVhc29uIGlzIHRoYXQgdGhvc2UgdmFsdWVzXG4vLyBjYW4gbWF0Y2ggbG90cyBvZiBkaWZmZXJlbnQgc3RyaW5nIHZhbHVlcyAoZS5nLiwgMW4gPT0gJyswMDAwMScpLlxuXG5cbmZ1bmN0aW9uIGZpbmRMb29zZU1hdGNoaW5nUHJpbWl0aXZlcyhwcmltKSB7XG4gIHN3aXRjaCAoX3R5cGVvZihwcmltKSkge1xuICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICByZXR1cm4gbnVsbDtcblxuICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAvLyBPbmx5IHBhc3MgaW4gbnVsbCBhcyBvYmplY3QhXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY2FzZSAnc3ltYm9sJzpcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBwcmltID0gK3ByaW07XG4gICAgLy8gTG9vc2UgZXF1YWwgZW50cmllcyBleGlzdCBvbmx5IGlmIHRoZSBzdHJpbmcgaXMgcG9zc2libGUgdG8gY29udmVydCB0b1xuICAgIC8vIGEgcmVndWxhciBudW1iZXIgYW5kIG5vdCBOYU4uXG4gICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlICdudW1iZXInOlxuICAgICAgaWYgKG51bWJlcklzTmFOKHByaW0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHNldE1pZ2h0SGF2ZUxvb3NlUHJpbShhLCBiLCBwcmltKSB7XG4gIHZhciBhbHRWYWx1ZSA9IGZpbmRMb29zZU1hdGNoaW5nUHJpbWl0aXZlcyhwcmltKTtcbiAgaWYgKGFsdFZhbHVlICE9IG51bGwpIHJldHVybiBhbHRWYWx1ZTtcbiAgcmV0dXJuIGIuaGFzKGFsdFZhbHVlKSAmJiAhYS5oYXMoYWx0VmFsdWUpO1xufVxuXG5mdW5jdGlvbiBtYXBNaWdodEhhdmVMb29zZVByaW0oYSwgYiwgcHJpbSwgaXRlbSwgbWVtbykge1xuICB2YXIgYWx0VmFsdWUgPSBmaW5kTG9vc2VNYXRjaGluZ1ByaW1pdGl2ZXMocHJpbSk7XG5cbiAgaWYgKGFsdFZhbHVlICE9IG51bGwpIHtcbiAgICByZXR1cm4gYWx0VmFsdWU7XG4gIH1cblxuICB2YXIgY3VyQiA9IGIuZ2V0KGFsdFZhbHVlKTtcblxuICBpZiAoY3VyQiA9PT0gdW5kZWZpbmVkICYmICFiLmhhcyhhbHRWYWx1ZSkgfHwgIWlubmVyRGVlcEVxdWFsKGl0ZW0sIGN1ckIsIGZhbHNlLCBtZW1vKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhYS5oYXMoYWx0VmFsdWUpICYmIGlubmVyRGVlcEVxdWFsKGl0ZW0sIGN1ckIsIGZhbHNlLCBtZW1vKTtcbn1cblxuZnVuY3Rpb24gc2V0RXF1aXYoYSwgYiwgc3RyaWN0LCBtZW1vKSB7XG4gIC8vIFRoaXMgaXMgYSBsYXppbHkgaW5pdGlhdGVkIFNldCBvZiBlbnRyaWVzIHdoaWNoIGhhdmUgdG8gYmUgY29tcGFyZWRcbiAgLy8gcGFpcndpc2UuXG4gIHZhciBzZXQgPSBudWxsO1xuICB2YXIgYVZhbHVlcyA9IGFycmF5RnJvbVNldChhKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdmFsID0gYVZhbHVlc1tpXTsgLy8gTm90ZTogQ2hlY2tpbmcgZm9yIHRoZSBvYmplY3RzIGZpcnN0IGltcHJvdmVzIHRoZSBwZXJmb3JtYW5jZSBmb3Igb2JqZWN0XG4gICAgLy8gaGVhdnkgc2V0cyBidXQgaXQgaXMgYSBtaW5vciBzbG93IGRvd24gZm9yIHByaW1pdGl2ZXMuIEFzIHRoZXkgYXJlIGZhc3RcbiAgICAvLyB0byBjaGVjayB0aGlzIGltcHJvdmVzIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIGluc3RlYWQuXG5cbiAgICBpZiAoX3R5cGVvZih2YWwpID09PSAnb2JqZWN0JyAmJiB2YWwgIT09IG51bGwpIHtcbiAgICAgIGlmIChzZXQgPT09IG51bGwpIHtcbiAgICAgICAgc2V0ID0gbmV3IFNldCgpO1xuICAgICAgfSAvLyBJZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIHNlY29uZCBzZXQgaXRzIGFuIG5vdCBudWxsXG4gICAgICAvLyBvYmplY3QgKG9yIG5vbiBzdHJpY3Qgb25seTogYSBub3QgbWF0Y2hpbmcgcHJpbWl0aXZlKSB3ZSdsbCBuZWVkIHRvIGdvXG4gICAgICAvLyBodW50aW5nIGZvciBzb21ldGhpbmcgdGhhdHMgZGVlcC0oc3RyaWN0LSllcXVhbCB0byBpdC4gVG8gbWFrZSB0aGlzXG4gICAgICAvLyBPKG4gbG9nIG4pIGNvbXBsZXhpdHkgd2UgaGF2ZSB0byBjb3B5IHRoZXNlIHZhbHVlcyBpbiBhIG5ldyBzZXQgZmlyc3QuXG5cblxuICAgICAgc2V0LmFkZCh2YWwpO1xuICAgIH0gZWxzZSBpZiAoIWIuaGFzKHZhbCkpIHtcbiAgICAgIGlmIChzdHJpY3QpIHJldHVybiBmYWxzZTsgLy8gRmFzdCBwYXRoIHRvIGRldGVjdCBtaXNzaW5nIHN0cmluZywgc3ltYm9sLCB1bmRlZmluZWQgYW5kIG51bGwgdmFsdWVzLlxuXG4gICAgICBpZiAoIXNldE1pZ2h0SGF2ZUxvb3NlUHJpbShhLCBiLCB2YWwpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNldCA9PT0gbnVsbCkge1xuICAgICAgICBzZXQgPSBuZXcgU2V0KCk7XG4gICAgICB9XG5cbiAgICAgIHNldC5hZGQodmFsKTtcbiAgICB9XG4gIH1cblxuICBpZiAoc2V0ICE9PSBudWxsKSB7XG4gICAgdmFyIGJWYWx1ZXMgPSBhcnJheUZyb21TZXQoYik7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYlZhbHVlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfdmFsID0gYlZhbHVlc1tfaV07IC8vIFdlIGhhdmUgdG8gY2hlY2sgaWYgYSBwcmltaXRpdmUgdmFsdWUgaXMgYWxyZWFkeVxuICAgICAgLy8gbWF0Y2hpbmcgYW5kIG9ubHkgaWYgaXQncyBub3QsIGdvIGh1bnRpbmcgZm9yIGl0LlxuXG4gICAgICBpZiAoX3R5cGVvZihfdmFsKSA9PT0gJ29iamVjdCcgJiYgX3ZhbCAhPT0gbnVsbCkge1xuICAgICAgICBpZiAoIXNldEhhc0VxdWFsRWxlbWVudChzZXQsIF92YWwsIHN0cmljdCwgbWVtbykpIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiAhYS5oYXMoX3ZhbCkgJiYgIXNldEhhc0VxdWFsRWxlbWVudChzZXQsIF92YWwsIHN0cmljdCwgbWVtbykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzZXQuc2l6ZSA9PT0gMDtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBtYXBIYXNFcXVhbEVudHJ5KHNldCwgbWFwLCBrZXkxLCBpdGVtMSwgc3RyaWN0LCBtZW1vKSB7XG4gIC8vIFRvIGJlIGFibGUgdG8gaGFuZGxlIGNhc2VzIGxpa2U6XG4gIC8vICAgTWFwKFtbe30sICdhJ10sIFt7fSwgJ2InXV0pIHZzIE1hcChbW3t9LCAnYiddLCBbe30sICdhJ11dKVxuICAvLyAuLi4gd2UgbmVlZCB0byBjb25zaWRlciAqYWxsKiBtYXRjaGluZyBrZXlzLCBub3QganVzdCB0aGUgZmlyc3Qgd2UgZmluZC5cbiAgdmFyIHNldFZhbHVlcyA9IGFycmF5RnJvbVNldChzZXQpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2V0VmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleTIgPSBzZXRWYWx1ZXNbaV07XG5cbiAgICBpZiAoaW5uZXJEZWVwRXF1YWwoa2V5MSwga2V5Miwgc3RyaWN0LCBtZW1vKSAmJiBpbm5lckRlZXBFcXVhbChpdGVtMSwgbWFwLmdldChrZXkyKSwgc3RyaWN0LCBtZW1vKSkge1xuICAgICAgc2V0LmRlbGV0ZShrZXkyKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbWFwRXF1aXYoYSwgYiwgc3RyaWN0LCBtZW1vKSB7XG4gIHZhciBzZXQgPSBudWxsO1xuICB2YXIgYUVudHJpZXMgPSBhcnJheUZyb21NYXAoYSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhRW50cmllcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBfYUVudHJpZXMkaSA9IF9zbGljZWRUb0FycmF5KGFFbnRyaWVzW2ldLCAyKSxcbiAgICAgICAga2V5ID0gX2FFbnRyaWVzJGlbMF0sXG4gICAgICAgIGl0ZW0xID0gX2FFbnRyaWVzJGlbMV07XG5cbiAgICBpZiAoX3R5cGVvZihrZXkpID09PSAnb2JqZWN0JyAmJiBrZXkgIT09IG51bGwpIHtcbiAgICAgIGlmIChzZXQgPT09IG51bGwpIHtcbiAgICAgICAgc2V0ID0gbmV3IFNldCgpO1xuICAgICAgfVxuXG4gICAgICBzZXQuYWRkKGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJ5IGRpcmVjdGx5IHJldHJpZXZpbmcgdGhlIHZhbHVlIHdlIHByZXZlbnQgYW5vdGhlciBiLmhhcyhrZXkpIGNoZWNrIGluXG4gICAgICAvLyBhbG1vc3QgYWxsIHBvc3NpYmxlIGNhc2VzLlxuICAgICAgdmFyIGl0ZW0yID0gYi5nZXQoa2V5KTtcblxuICAgICAgaWYgKGl0ZW0yID09PSB1bmRlZmluZWQgJiYgIWIuaGFzKGtleSkgfHwgIWlubmVyRGVlcEVxdWFsKGl0ZW0xLCBpdGVtMiwgc3RyaWN0LCBtZW1vKSkge1xuICAgICAgICBpZiAoc3RyaWN0KSByZXR1cm4gZmFsc2U7IC8vIEZhc3QgcGF0aCB0byBkZXRlY3QgbWlzc2luZyBzdHJpbmcsIHN5bWJvbCwgdW5kZWZpbmVkIGFuZCBudWxsXG4gICAgICAgIC8vIGtleXMuXG5cbiAgICAgICAgaWYgKCFtYXBNaWdodEhhdmVMb29zZVByaW0oYSwgYiwga2V5LCBpdGVtMSwgbWVtbykpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBpZiAoc2V0ID09PSBudWxsKSB7XG4gICAgICAgICAgc2V0ID0gbmV3IFNldCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0LmFkZChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzZXQgIT09IG51bGwpIHtcbiAgICB2YXIgYkVudHJpZXMgPSBhcnJheUZyb21NYXAoYik7XG5cbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBiRW50cmllcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICB2YXIgX2JFbnRyaWVzJF9pID0gX3NsaWNlZFRvQXJyYXkoYkVudHJpZXNbX2kyXSwgMiksXG4gICAgICAgICAga2V5ID0gX2JFbnRyaWVzJF9pWzBdLFxuICAgICAgICAgIGl0ZW0gPSBfYkVudHJpZXMkX2lbMV07XG5cbiAgICAgIGlmIChfdHlwZW9mKGtleSkgPT09ICdvYmplY3QnICYmIGtleSAhPT0gbnVsbCkge1xuICAgICAgICBpZiAoIW1hcEhhc0VxdWFsRW50cnkoc2V0LCBhLCBrZXksIGl0ZW0sIHN0cmljdCwgbWVtbykpIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiAoIWEuaGFzKGtleSkgfHwgIWlubmVyRGVlcEVxdWFsKGEuZ2V0KGtleSksIGl0ZW0sIGZhbHNlLCBtZW1vKSkgJiYgIW1hcEhhc0VxdWFsRW50cnkoc2V0LCBhLCBrZXksIGl0ZW0sIGZhbHNlLCBtZW1vKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldC5zaXplID09PSAwO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIG9iakVxdWl2KGEsIGIsIHN0cmljdCwga2V5cywgbWVtb3MsIGl0ZXJhdGlvblR5cGUpIHtcbiAgLy8gU2V0cyBhbmQgbWFwcyBkb24ndCBoYXZlIHRoZWlyIGVudHJpZXMgYWNjZXNzaWJsZSB2aWEgbm9ybWFsIG9iamVjdFxuICAvLyBwcm9wZXJ0aWVzLlxuICB2YXIgaSA9IDA7XG5cbiAgaWYgKGl0ZXJhdGlvblR5cGUgPT09IGtJc1NldCkge1xuICAgIGlmICghc2V0RXF1aXYoYSwgYiwgc3RyaWN0LCBtZW1vcykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXRlcmF0aW9uVHlwZSA9PT0ga0lzTWFwKSB7XG4gICAgaWYgKCFtYXBFcXVpdihhLCBiLCBzdHJpY3QsIG1lbW9zKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpdGVyYXRpb25UeXBlID09PSBrSXNBcnJheSkge1xuICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5KGEsIGkpKSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcGVydHkoYiwgaSkgfHwgIWlubmVyRGVlcEVxdWFsKGFbaV0sIGJbaV0sIHN0cmljdCwgbWVtb3MpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGhhc093blByb3BlcnR5KGIsIGkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFycmF5IGlzIHNwYXJzZS5cbiAgICAgICAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMoYSk7XG5cbiAgICAgICAgZm9yICg7IGkgPCBrZXlzQS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBrZXkgPSBrZXlzQVtpXTtcblxuICAgICAgICAgIGlmICghaGFzT3duUHJvcGVydHkoYiwga2V5KSB8fCAhaW5uZXJEZWVwRXF1YWwoYVtrZXldLCBiW2tleV0sIHN0cmljdCwgbWVtb3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGtleXNBLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMoYikubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9IC8vIFRoZSBwYWlyIG11c3QgaGF2ZSBlcXVpdmFsZW50IHZhbHVlcyBmb3IgZXZlcnkgY29ycmVzcG9uZGluZyBrZXkuXG4gIC8vIFBvc3NpYmx5IGV4cGVuc2l2ZSBkZWVwIHRlc3Q6XG5cblxuICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBfa2V5ID0ga2V5c1tpXTtcblxuICAgIGlmICghaW5uZXJEZWVwRXF1YWwoYVtfa2V5XSwgYltfa2V5XSwgc3RyaWN0LCBtZW1vcykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaXNEZWVwRXF1YWwodmFsMSwgdmFsMikge1xuICByZXR1cm4gaW5uZXJEZWVwRXF1YWwodmFsMSwgdmFsMiwga0xvb3NlKTtcbn1cblxuZnVuY3Rpb24gaXNEZWVwU3RyaWN0RXF1YWwodmFsMSwgdmFsMikge1xuICByZXR1cm4gaW5uZXJEZWVwRXF1YWwodmFsMSwgdmFsMiwga1N0cmljdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0RlZXBFcXVhbDogaXNEZWVwRXF1YWwsXG4gIGlzRGVlcFN0cmljdEVxdWFsOiBpc0RlZXBTdHJpY3RFcXVhbFxufTsiLCIndXNlIHN0cmljdCc7XG5cbnZhciBwb3NzaWJsZU5hbWVzID0gW1xuXHQnQmlnSW50NjRBcnJheScsXG5cdCdCaWdVaW50NjRBcnJheScsXG5cdCdGbG9hdDMyQXJyYXknLFxuXHQnRmxvYXQ2NEFycmF5Jyxcblx0J0ludDE2QXJyYXknLFxuXHQnSW50MzJBcnJheScsXG5cdCdJbnQ4QXJyYXknLFxuXHQnVWludDE2QXJyYXknLFxuXHQnVWludDMyQXJyYXknLFxuXHQnVWludDhBcnJheScsXG5cdCdVaW50OENsYW1wZWRBcnJheSdcbl07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYXZhaWxhYmxlVHlwZWRBcnJheXMoKSB7XG5cdHZhciBvdXQgPSBbXTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBwb3NzaWJsZU5hbWVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0aWYgKHR5cGVvZiBnbG9iYWxbcG9zc2libGVOYW1lc1tpXV0gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHBvc3NpYmxlTmFtZXNbaV07XG5cdFx0fVxuXHR9XG5cdHJldHVybiBvdXQ7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9iYXNlNDUnKVxuIiwiY29uc3QgY2hhcnNldCA9ICcwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVogJCUqKy0uLzonXG5jb25zdCBkaXZtb2QgPSAoeCwgeSkgPT4gW01hdGguZmxvb3IoeCAvIHkpLCB4ICUgeV1cblxuLy8gRW5jb2RlIGEgYnVmZmVyIChvciB1aW50OGFycmF5KSB0byBiYXNlNDUtZW5jb2RlZCBzdHJpbmdcbmNvbnN0IGVuY29kZSA9IChidWZmZXIpID0+IHtcbiAgaWYgKHR5cGVvZiAoYnVmZmVyKSA9PT0gJ3N0cmluZycpIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJ1ZmZlcilcbiAgbGV0IHJlcyA9ICcnXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSA9IGkgKyAyKSB7XG4gICAgaWYgKGJ1ZmZlci5sZW5ndGggLSBpID4gMSkge1xuICAgICAgY29uc3QgeCA9IChidWZmZXJbaV0gPDwgOCkgKyBidWZmZXJbaSArIDFdXG4gICAgICBjb25zdCBbZSwgcmVzdF0gPSBkaXZtb2QoeCwgNDUgKiA0NSlcbiAgICAgIGNvbnN0IFtkLCBjXSA9IGRpdm1vZChyZXN0LCA0NSlcbiAgICAgIHJlcyArPSBjaGFyc2V0W2NdICsgY2hhcnNldFtkXSArIGNoYXJzZXRbZV1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgW2QsIGNdID0gZGl2bW9kKGJ1ZmZlcltpXSwgNDUpXG4gICAgICByZXMgKz0gY2hhcnNldFtjXSArIGNoYXJzZXRbZF1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vLyBEZWNvZGUgYmFzZTQ1LWVuY29kZWQgaW5wdXRcbmNvbnN0IGRlY29kZSA9IChpbnB1dCkgPT4ge1xuICBjb25zdCBidWZmZXIgPSBBcnJheS5mcm9tKGlucHV0KS5tYXAoYyA9PiBjaGFyc2V0LmluZGV4T2YoYykpXG4gIGNvbnN0IHJlcyA9IFtdXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSA9IGkgKyAzKSB7XG4gICAgaWYgKGJ1ZmZlci5sZW5ndGggLSBpID49IDMpIHtcbiAgICAgIGNvbnN0IHggPSBidWZmZXJbaV0gKyBidWZmZXJbaSArIDFdICogNDUgKyBidWZmZXJbaSArIDJdICogNDUgKiA0NVxuICAgICAgaWYgKHggPiAweEZGRkYpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBiYXNlNDUgc3RyaW5nXCIpXG4gICAgICB9XG4gICAgICByZXMucHVzaCguLi5kaXZtb2QoeCwgMjU2KSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeCA9IGJ1ZmZlcltpXSArIGJ1ZmZlcltpICsgMV0gKiA0NVxuICAgICAgaWYgKHggPiAweEZGKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTQ1IHN0cmluZ1wiKVxuICAgICAgfVxuICAgICAgcmVzLnB1c2goeClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKHJlcylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGVuY29kZSxcbiAgZGVjb2RlXG59XG4iLCIndXNlIHN0cmljdCdcblxuZXhwb3J0cy5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuZXhwb3J0cy50b0J5dGVBcnJheSA9IHRvQnl0ZUFycmF5XG5leHBvcnRzLmZyb21CeXRlQXJyYXkgPSBmcm9tQnl0ZUFycmF5XG5cbnZhciBsb29rdXAgPSBbXVxudmFyIHJldkxvb2t1cCA9IFtdXG52YXIgQXJyID0gdHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnID8gVWludDhBcnJheSA6IEFycmF5XG5cbnZhciBjb2RlID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nXG5mb3IgKHZhciBpID0gMCwgbGVuID0gY29kZS5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICBsb29rdXBbaV0gPSBjb2RlW2ldXG4gIHJldkxvb2t1cFtjb2RlLmNoYXJDb2RlQXQoaSldID0gaVxufVxuXG4vLyBTdXBwb3J0IGRlY29kaW5nIFVSTC1zYWZlIGJhc2U2NCBzdHJpbmdzLCBhcyBOb2RlLmpzIGRvZXMuXG4vLyBTZWU6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jhc2U2NCNVUkxfYXBwbGljYXRpb25zXG5yZXZMb29rdXBbJy0nLmNoYXJDb2RlQXQoMCldID0gNjJcbnJldkxvb2t1cFsnXycuY2hhckNvZGVBdCgwKV0gPSA2M1xuXG5mdW5jdGlvbiBnZXRMZW5zIChiNjQpIHtcbiAgdmFyIGxlbiA9IGI2NC5sZW5ndGhcblxuICBpZiAobGVuICUgNCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQnKVxuICB9XG5cbiAgLy8gVHJpbSBvZmYgZXh0cmEgYnl0ZXMgYWZ0ZXIgcGxhY2Vob2xkZXIgYnl0ZXMgYXJlIGZvdW5kXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2JlYXRnYW1taXQvYmFzZTY0LWpzL2lzc3Vlcy80MlxuICB2YXIgdmFsaWRMZW4gPSBiNjQuaW5kZXhPZignPScpXG4gIGlmICh2YWxpZExlbiA9PT0gLTEpIHZhbGlkTGVuID0gbGVuXG5cbiAgdmFyIHBsYWNlSG9sZGVyc0xlbiA9IHZhbGlkTGVuID09PSBsZW5cbiAgICA/IDBcbiAgICA6IDQgLSAodmFsaWRMZW4gJSA0KVxuXG4gIHJldHVybiBbdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbl1cbn1cblxuLy8gYmFzZTY0IGlzIDQvMyArIHVwIHRvIHR3byBjaGFyYWN0ZXJzIG9mIHRoZSBvcmlnaW5hbCBkYXRhXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChiNjQpIHtcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuICByZXR1cm4gKCh2YWxpZExlbiArIHBsYWNlSG9sZGVyc0xlbikgKiAzIC8gNCkgLSBwbGFjZUhvbGRlcnNMZW5cbn1cblxuZnVuY3Rpb24gX2J5dGVMZW5ndGggKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikge1xuICByZXR1cm4gKCh2YWxpZExlbiArIHBsYWNlSG9sZGVyc0xlbikgKiAzIC8gNCkgLSBwbGFjZUhvbGRlcnNMZW5cbn1cblxuZnVuY3Rpb24gdG9CeXRlQXJyYXkgKGI2NCkge1xuICB2YXIgdG1wXG4gIHZhciBsZW5zID0gZ2V0TGVucyhiNjQpXG4gIHZhciB2YWxpZExlbiA9IGxlbnNbMF1cbiAgdmFyIHBsYWNlSG9sZGVyc0xlbiA9IGxlbnNbMV1cblxuICB2YXIgYXJyID0gbmV3IEFycihfYnl0ZUxlbmd0aChiNjQsIHZhbGlkTGVuLCBwbGFjZUhvbGRlcnNMZW4pKVxuXG4gIHZhciBjdXJCeXRlID0gMFxuXG4gIC8vIGlmIHRoZXJlIGFyZSBwbGFjZWhvbGRlcnMsIG9ubHkgZ2V0IHVwIHRvIHRoZSBsYXN0IGNvbXBsZXRlIDQgY2hhcnNcbiAgdmFyIGxlbiA9IHBsYWNlSG9sZGVyc0xlbiA+IDBcbiAgICA/IHZhbGlkTGVuIC0gNFxuICAgIDogdmFsaWRMZW5cblxuICB2YXIgaVxuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTgpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCAxMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildIDw8IDYpIHxcbiAgICAgIHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMyldXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDE2KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gOCkgJiAweEZGXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAyKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA+PiA0KVxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gMSkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxMCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDQpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA+PiAyKVxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gdHJpcGxldFRvQmFzZTY0IChudW0pIHtcbiAgcmV0dXJuIGxvb2t1cFtudW0gPj4gMTggJiAweDNGXSArXG4gICAgbG9va3VwW251bSA+PiAxMiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDYgJiAweDNGXSArXG4gICAgbG9va3VwW251bSAmIDB4M0ZdXG59XG5cbmZ1bmN0aW9uIGVuY29kZUNodW5rICh1aW50OCwgc3RhcnQsIGVuZCkge1xuICB2YXIgdG1wXG4gIHZhciBvdXRwdXQgPSBbXVxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykge1xuICAgIHRtcCA9XG4gICAgICAoKHVpbnQ4W2ldIDw8IDE2KSAmIDB4RkYwMDAwKSArXG4gICAgICAoKHVpbnQ4W2kgKyAxXSA8PCA4KSAmIDB4RkYwMCkgK1xuICAgICAgKHVpbnQ4W2kgKyAyXSAmIDB4RkYpXG4gICAgb3V0cHV0LnB1c2godHJpcGxldFRvQmFzZTY0KHRtcCkpXG4gIH1cbiAgcmV0dXJuIG91dHB1dC5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBmcm9tQnl0ZUFycmF5ICh1aW50OCkge1xuICB2YXIgdG1wXG4gIHZhciBsZW4gPSB1aW50OC5sZW5ndGhcbiAgdmFyIGV4dHJhQnl0ZXMgPSBsZW4gJSAzIC8vIGlmIHdlIGhhdmUgMSBieXRlIGxlZnQsIHBhZCAyIGJ5dGVzXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsodWludDgsIGksIChpICsgbWF4Q2h1bmtMZW5ndGgpID4gbGVuMiA/IGxlbjIgOiAoaSArIG1heENodW5rTGVuZ3RoKSkpXG4gIH1cblxuICAvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG4gIGlmIChleHRyYUJ5dGVzID09PSAxKSB7XG4gICAgdG1wID0gdWludDhbbGVuIC0gMV1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgbG9va3VwW3RtcCA+PiAyXSArXG4gICAgICBsb29rdXBbKHRtcCA8PCA0KSAmIDB4M0ZdICtcbiAgICAgICc9PSdcbiAgICApXG4gIH0gZWxzZSBpZiAoZXh0cmFCeXRlcyA9PT0gMikge1xuICAgIHRtcCA9ICh1aW50OFtsZW4gLSAyXSA8PCA4KSArIHVpbnQ4W2xlbiAtIDFdXG4gICAgcGFydHMucHVzaChcbiAgICAgIGxvb2t1cFt0bXAgPj4gMTBdICtcbiAgICAgIGxvb2t1cFsodG1wID4+IDQpICYgMHgzRl0gK1xuICAgICAgbG9va3VwWyh0bXAgPDwgMikgJiAweDNGXSArXG4gICAgICAnPSdcbiAgICApXG4gIH1cblxuICByZXR1cm4gcGFydHMuam9pbignJylcbn1cbiIsIjsoZnVuY3Rpb24gKGdsb2JhbE9iamVjdCkge1xyXG4gICd1c2Ugc3RyaWN0JztcclxuXHJcbi8qXHJcbiAqICAgICAgYmlnbnVtYmVyLmpzIHY5LjAuMVxyXG4gKiAgICAgIEEgSmF2YVNjcmlwdCBsaWJyYXJ5IGZvciBhcmJpdHJhcnktcHJlY2lzaW9uIGFyaXRobWV0aWMuXHJcbiAqICAgICAgaHR0cHM6Ly9naXRodWIuY29tL01pa2VNY2wvYmlnbnVtYmVyLmpzXHJcbiAqICAgICAgQ29weXJpZ2h0IChjKSAyMDIwIE1pY2hhZWwgTWNsYXVnaGxpbiA8TThjaDg4bEBnbWFpbC5jb20+XHJcbiAqICAgICAgTUlUIExpY2Vuc2VkLlxyXG4gKlxyXG4gKiAgICAgIEJpZ051bWJlci5wcm90b3R5cGUgbWV0aG9kcyAgICAgfCAgQmlnTnVtYmVyIG1ldGhvZHNcclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBhYnNvbHV0ZVZhbHVlICAgICAgICAgICAgYWJzICAgIHwgIGNsb25lXHJcbiAqICAgICAgY29tcGFyZWRUbyAgICAgICAgICAgICAgICAgICAgICB8ICBjb25maWcgICAgICAgICAgICAgICBzZXRcclxuICogICAgICBkZWNpbWFsUGxhY2VzICAgICAgICAgICAgZHAgICAgIHwgICAgICBERUNJTUFMX1BMQUNFU1xyXG4gKiAgICAgIGRpdmlkZWRCeSAgICAgICAgICAgICAgICBkaXYgICAgfCAgICAgIFJPVU5ESU5HX01PREVcclxuICogICAgICBkaXZpZGVkVG9JbnRlZ2VyQnkgICAgICAgaWRpdiAgIHwgICAgICBFWFBPTkVOVElBTF9BVFxyXG4gKiAgICAgIGV4cG9uZW50aWF0ZWRCeSAgICAgICAgICBwb3cgICAgfCAgICAgIFJBTkdFXHJcbiAqICAgICAgaW50ZWdlclZhbHVlICAgICAgICAgICAgICAgICAgICB8ICAgICAgQ1JZUFRPXHJcbiAqICAgICAgaXNFcXVhbFRvICAgICAgICAgICAgICAgIGVxICAgICB8ICAgICAgTU9EVUxPX01PREVcclxuICogICAgICBpc0Zpbml0ZSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICBQT1dfUFJFQ0lTSU9OXHJcbiAqICAgICAgaXNHcmVhdGVyVGhhbiAgICAgICAgICAgIGd0ICAgICB8ICAgICAgRk9STUFUXHJcbiAqICAgICAgaXNHcmVhdGVyVGhhbk9yRXF1YWxUbyAgIGd0ZSAgICB8ICAgICAgQUxQSEFCRVRcclxuICogICAgICBpc0ludGVnZXIgICAgICAgICAgICAgICAgICAgICAgIHwgIGlzQmlnTnVtYmVyXHJcbiAqICAgICAgaXNMZXNzVGhhbiAgICAgICAgICAgICAgIGx0ICAgICB8ICBtYXhpbXVtICAgICAgICAgICAgICBtYXhcclxuICogICAgICBpc0xlc3NUaGFuT3JFcXVhbFRvICAgICAgbHRlICAgIHwgIG1pbmltdW0gICAgICAgICAgICAgIG1pblxyXG4gKiAgICAgIGlzTmFOICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgcmFuZG9tXHJcbiAqICAgICAgaXNOZWdhdGl2ZSAgICAgICAgICAgICAgICAgICAgICB8ICBzdW1cclxuICogICAgICBpc1Bvc2l0aXZlICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBpc1plcm8gICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBtaW51cyAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBtb2R1bG8gICAgICAgICAgICAgICAgICAgbW9kICAgIHxcclxuICogICAgICBtdWx0aXBsaWVkQnkgICAgICAgICAgICAgdGltZXMgIHxcclxuICogICAgICBuZWdhdGVkICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBwbHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBwcmVjaXNpb24gICAgICAgICAgICAgICAgc2QgICAgIHxcclxuICogICAgICBzaGlmdGVkQnkgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBzcXVhcmVSb290ICAgICAgICAgICAgICAgc3FydCAgIHxcclxuICogICAgICB0b0V4cG9uZW50aWFsICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0ZpeGVkICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0Zvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0ZyYWN0aW9uICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0pTT04gICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b051bWJlciAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b1ByZWNpc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b1N0cmluZyAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB2YWx1ZU9mICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICpcclxuICovXHJcblxyXG5cclxuICB2YXIgQmlnTnVtYmVyLFxyXG4gICAgaXNOdW1lcmljID0gL14tPyg/OlxcZCsoPzpcXC5cXGQqKT98XFwuXFxkKykoPzplWystXT9cXGQrKT8kL2ksXHJcbiAgICBtYXRoY2VpbCA9IE1hdGguY2VpbCxcclxuICAgIG1hdGhmbG9vciA9IE1hdGguZmxvb3IsXHJcblxyXG4gICAgYmlnbnVtYmVyRXJyb3IgPSAnW0JpZ051bWJlciBFcnJvcl0gJyxcclxuICAgIHRvb01hbnlEaWdpdHMgPSBiaWdudW1iZXJFcnJvciArICdOdW1iZXIgcHJpbWl0aXZlIGhhcyBtb3JlIHRoYW4gMTUgc2lnbmlmaWNhbnQgZGlnaXRzOiAnLFxyXG5cclxuICAgIEJBU0UgPSAxZTE0LFxyXG4gICAgTE9HX0JBU0UgPSAxNCxcclxuICAgIE1BWF9TQUZFX0lOVEVHRVIgPSAweDFmZmZmZmZmZmZmZmZmLCAgICAgICAgIC8vIDJeNTMgLSAxXHJcbiAgICAvLyBNQVhfSU5UMzIgPSAweDdmZmZmZmZmLCAgICAgICAgICAgICAgICAgICAvLyAyXjMxIC0gMVxyXG4gICAgUE9XU19URU4gPSBbMSwgMTAsIDEwMCwgMWUzLCAxZTQsIDFlNSwgMWU2LCAxZTcsIDFlOCwgMWU5LCAxZTEwLCAxZTExLCAxZTEyLCAxZTEzXSxcclxuICAgIFNRUlRfQkFTRSA9IDFlNyxcclxuXHJcbiAgICAvLyBFRElUQUJMRVxyXG4gICAgLy8gVGhlIGxpbWl0IG9uIHRoZSB2YWx1ZSBvZiBERUNJTUFMX1BMQUNFUywgVE9fRVhQX05FRywgVE9fRVhQX1BPUywgTUlOX0VYUCwgTUFYX0VYUCwgYW5kXHJcbiAgICAvLyB0aGUgYXJndW1lbnRzIHRvIHRvRXhwb25lbnRpYWwsIHRvRml4ZWQsIHRvRm9ybWF0LCBhbmQgdG9QcmVjaXNpb24uXHJcbiAgICBNQVggPSAxRTk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIE1BWF9JTlQzMlxyXG5cclxuXHJcbiAgLypcclxuICAgKiBDcmVhdGUgYW5kIHJldHVybiBhIEJpZ051bWJlciBjb25zdHJ1Y3Rvci5cclxuICAgKi9cclxuICBmdW5jdGlvbiBjbG9uZShjb25maWdPYmplY3QpIHtcclxuICAgIHZhciBkaXYsIGNvbnZlcnRCYXNlLCBwYXJzZU51bWVyaWMsXHJcbiAgICAgIFAgPSBCaWdOdW1iZXIucHJvdG90eXBlID0geyBjb25zdHJ1Y3RvcjogQmlnTnVtYmVyLCB0b1N0cmluZzogbnVsbCwgdmFsdWVPZjogbnVsbCB9LFxyXG4gICAgICBPTkUgPSBuZXcgQmlnTnVtYmVyKDEpLFxyXG5cclxuXHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRURJVEFCTEUgQ09ORklHIERFRkFVTFRTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblxyXG4gICAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZXMgYmVsb3cgbXVzdCBiZSBpbnRlZ2VycyB3aXRoaW4gdGhlIGluY2x1c2l2ZSByYW5nZXMgc3RhdGVkLlxyXG4gICAgICAvLyBUaGUgdmFsdWVzIGNhbiBhbHNvIGJlIGNoYW5nZWQgYXQgcnVuLXRpbWUgdXNpbmcgQmlnTnVtYmVyLnNldC5cclxuXHJcbiAgICAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyBmb3Igb3BlcmF0aW9ucyBpbnZvbHZpbmcgZGl2aXNpb24uXHJcbiAgICAgIERFQ0lNQUxfUExBQ0VTID0gMjAsICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byBNQVhcclxuXHJcbiAgICAgIC8vIFRoZSByb3VuZGluZyBtb2RlIHVzZWQgd2hlbiByb3VuZGluZyB0byB0aGUgYWJvdmUgZGVjaW1hbCBwbGFjZXMsIGFuZCB3aGVuIHVzaW5nXHJcbiAgICAgIC8vIHRvRXhwb25lbnRpYWwsIHRvRml4ZWQsIHRvRm9ybWF0IGFuZCB0b1ByZWNpc2lvbiwgYW5kIHJvdW5kIChkZWZhdWx0IHZhbHVlKS5cclxuICAgICAgLy8gVVAgICAgICAgICAwIEF3YXkgZnJvbSB6ZXJvLlxyXG4gICAgICAvLyBET1dOICAgICAgIDEgVG93YXJkcyB6ZXJvLlxyXG4gICAgICAvLyBDRUlMICAgICAgIDIgVG93YXJkcyArSW5maW5pdHkuXHJcbiAgICAgIC8vIEZMT09SICAgICAgMyBUb3dhcmRzIC1JbmZpbml0eS5cclxuICAgICAgLy8gSEFMRl9VUCAgICA0IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCB1cC5cclxuICAgICAgLy8gSEFMRl9ET1dOICA1IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCBkb3duLlxyXG4gICAgICAvLyBIQUxGX0VWRU4gIDYgVG93YXJkcyBuZWFyZXN0IG5laWdoYm91ci4gSWYgZXF1aWRpc3RhbnQsIHRvd2FyZHMgZXZlbiBuZWlnaGJvdXIuXHJcbiAgICAgIC8vIEhBTEZfQ0VJTCAgNyBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyArSW5maW5pdHkuXHJcbiAgICAgIC8vIEhBTEZfRkxPT1IgOCBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyAtSW5maW5pdHkuXHJcbiAgICAgIFJPVU5ESU5HX01PREUgPSA0LCAgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byA4XHJcblxyXG4gICAgICAvLyBFWFBPTkVOVElBTF9BVCA6IFtUT19FWFBfTkVHICwgVE9fRVhQX1BPU11cclxuXHJcbiAgICAgIC8vIFRoZSBleHBvbmVudCB2YWx1ZSBhdCBhbmQgYmVuZWF0aCB3aGljaCB0b1N0cmluZyByZXR1cm5zIGV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICAvLyBOdW1iZXIgdHlwZTogLTdcclxuICAgICAgVE9fRVhQX05FRyA9IC03LCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIC1NQVhcclxuXHJcbiAgICAgIC8vIFRoZSBleHBvbmVudCB2YWx1ZSBhdCBhbmQgYWJvdmUgd2hpY2ggdG9TdHJpbmcgcmV0dXJucyBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgICAgLy8gTnVtYmVyIHR5cGU6IDIxXHJcbiAgICAgIFRPX0VYUF9QT1MgPSAyMSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byBNQVhcclxuXHJcbiAgICAgIC8vIFJBTkdFIDogW01JTl9FWFAsIE1BWF9FWFBdXHJcblxyXG4gICAgICAvLyBUaGUgbWluaW11bSBleHBvbmVudCB2YWx1ZSwgYmVuZWF0aCB3aGljaCB1bmRlcmZsb3cgdG8gemVybyBvY2N1cnMuXHJcbiAgICAgIC8vIE51bWJlciB0eXBlOiAtMzI0ICAoNWUtMzI0KVxyXG4gICAgICBNSU5fRVhQID0gLTFlNywgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0xIHRvIC1NQVhcclxuXHJcbiAgICAgIC8vIFRoZSBtYXhpbXVtIGV4cG9uZW50IHZhbHVlLCBhYm92ZSB3aGljaCBvdmVyZmxvdyB0byBJbmZpbml0eSBvY2N1cnMuXHJcbiAgICAgIC8vIE51bWJlciB0eXBlOiAgMzA4ICAoMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgpXHJcbiAgICAgIC8vIEZvciBNQVhfRVhQID4gMWU3LCBlLmcuIG5ldyBCaWdOdW1iZXIoJzFlMTAwMDAwMDAwJykucGx1cygxKSBtYXkgYmUgc2xvdy5cclxuICAgICAgTUFYX0VYUCA9IDFlNywgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIHRvIE1BWFxyXG5cclxuICAgICAgLy8gV2hldGhlciB0byB1c2UgY3J5cHRvZ3JhcGhpY2FsbHktc2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiwgaWYgYXZhaWxhYmxlLlxyXG4gICAgICBDUllQVE8gPSBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRydWUgb3IgZmFsc2VcclxuXHJcbiAgICAgIC8vIFRoZSBtb2R1bG8gbW9kZSB1c2VkIHdoZW4gY2FsY3VsYXRpbmcgdGhlIG1vZHVsdXM6IGEgbW9kIG4uXHJcbiAgICAgIC8vIFRoZSBxdW90aWVudCAocSA9IGEgLyBuKSBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyByb3VuZGluZyBtb2RlLlxyXG4gICAgICAvLyBUaGUgcmVtYWluZGVyIChyKSBpcyBjYWxjdWxhdGVkIGFzOiByID0gYSAtIG4gKiBxLlxyXG4gICAgICAvL1xyXG4gICAgICAvLyBVUCAgICAgICAgMCBUaGUgcmVtYWluZGVyIGlzIHBvc2l0aXZlIGlmIHRoZSBkaXZpZGVuZCBpcyBuZWdhdGl2ZSwgZWxzZSBpcyBuZWdhdGl2ZS5cclxuICAgICAgLy8gRE9XTiAgICAgIDEgVGhlIHJlbWFpbmRlciBoYXMgdGhlIHNhbWUgc2lnbiBhcyB0aGUgZGl2aWRlbmQuXHJcbiAgICAgIC8vICAgICAgICAgICAgIFRoaXMgbW9kdWxvIG1vZGUgaXMgY29tbW9ubHkga25vd24gYXMgJ3RydW5jYXRlZCBkaXZpc2lvbicgYW5kIGlzXHJcbiAgICAgIC8vICAgICAgICAgICAgIGVxdWl2YWxlbnQgdG8gKGEgJSBuKSBpbiBKYXZhU2NyaXB0LlxyXG4gICAgICAvLyBGTE9PUiAgICAgMyBUaGUgcmVtYWluZGVyIGhhcyB0aGUgc2FtZSBzaWduIGFzIHRoZSBkaXZpc29yIChQeXRob24gJSkuXHJcbiAgICAgIC8vIEhBTEZfRVZFTiA2IFRoaXMgbW9kdWxvIG1vZGUgaW1wbGVtZW50cyB0aGUgSUVFRSA3NTQgcmVtYWluZGVyIGZ1bmN0aW9uLlxyXG4gICAgICAvLyBFVUNMSUQgICAgOSBFdWNsaWRpYW4gZGl2aXNpb24uIHEgPSBzaWduKG4pICogZmxvb3IoYSAvIGFicyhuKSkuXHJcbiAgICAgIC8vICAgICAgICAgICAgIFRoZSByZW1haW5kZXIgaXMgYWx3YXlzIHBvc2l0aXZlLlxyXG4gICAgICAvL1xyXG4gICAgICAvLyBUaGUgdHJ1bmNhdGVkIGRpdmlzaW9uLCBmbG9vcmVkIGRpdmlzaW9uLCBFdWNsaWRpYW4gZGl2aXNpb24gYW5kIElFRUUgNzU0IHJlbWFpbmRlclxyXG4gICAgICAvLyBtb2RlcyBhcmUgY29tbW9ubHkgdXNlZCBmb3IgdGhlIG1vZHVsdXMgb3BlcmF0aW9uLlxyXG4gICAgICAvLyBBbHRob3VnaCB0aGUgb3RoZXIgcm91bmRpbmcgbW9kZXMgY2FuIGFsc28gYmUgdXNlZCwgdGhleSBtYXkgbm90IGdpdmUgdXNlZnVsIHJlc3VsdHMuXHJcbiAgICAgIE1PRFVMT19NT0RFID0gMSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byA5XHJcblxyXG4gICAgICAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIG9mIHRoZSByZXN1bHQgb2YgdGhlIGV4cG9uZW50aWF0ZWRCeSBvcGVyYXRpb24uXHJcbiAgICAgIC8vIElmIFBPV19QUkVDSVNJT04gaXMgMCwgdGhlcmUgd2lsbCBiZSB1bmxpbWl0ZWQgc2lnbmlmaWNhbnQgZGlnaXRzLlxyXG4gICAgICBQT1dfUFJFQ0lTSU9OID0gMCwgICAgICAgICAgICAgICAgICAgIC8vIDAgdG8gTUFYXHJcblxyXG4gICAgICAvLyBUaGUgZm9ybWF0IHNwZWNpZmljYXRpb24gdXNlZCBieSB0aGUgQmlnTnVtYmVyLnByb3RvdHlwZS50b0Zvcm1hdCBtZXRob2QuXHJcbiAgICAgIEZPUk1BVCA9IHtcclxuICAgICAgICBwcmVmaXg6ICcnLFxyXG4gICAgICAgIGdyb3VwU2l6ZTogMyxcclxuICAgICAgICBzZWNvbmRhcnlHcm91cFNpemU6IDAsXHJcbiAgICAgICAgZ3JvdXBTZXBhcmF0b3I6ICcsJyxcclxuICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiAnLicsXHJcbiAgICAgICAgZnJhY3Rpb25Hcm91cFNpemU6IDAsXHJcbiAgICAgICAgZnJhY3Rpb25Hcm91cFNlcGFyYXRvcjogJ1xceEEwJywgICAgICAvLyBub24tYnJlYWtpbmcgc3BhY2VcclxuICAgICAgICBzdWZmaXg6ICcnXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICAvLyBUaGUgYWxwaGFiZXQgdXNlZCBmb3IgYmFzZSBjb252ZXJzaW9uLiBJdCBtdXN0IGJlIGF0IGxlYXN0IDIgY2hhcmFjdGVycyBsb25nLCB3aXRoIG5vICcrJyxcclxuICAgICAgLy8gJy0nLCAnLicsIHdoaXRlc3BhY2UsIG9yIHJlcGVhdGVkIGNoYXJhY3Rlci5cclxuICAgICAgLy8gJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJF8nXHJcbiAgICAgIEFMUEhBQkVUID0gJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eic7XHJcblxyXG5cclxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cclxuICAgIC8vIENPTlNUUlVDVE9SXHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBUaGUgQmlnTnVtYmVyIGNvbnN0cnVjdG9yIGFuZCBleHBvcnRlZCBmdW5jdGlvbi5cclxuICAgICAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIGEgQmlnTnVtYmVyIG9iamVjdC5cclxuICAgICAqXHJcbiAgICAgKiB2IHtudW1iZXJ8c3RyaW5nfEJpZ051bWJlcn0gQSBudW1lcmljIHZhbHVlLlxyXG4gICAgICogW2JdIHtudW1iZXJ9IFRoZSBiYXNlIG9mIHYuIEludGVnZXIsIDIgdG8gQUxQSEFCRVQubGVuZ3RoIGluY2x1c2l2ZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gQmlnTnVtYmVyKHYsIGIpIHtcclxuICAgICAgdmFyIGFscGhhYmV0LCBjLCBjYXNlQ2hhbmdlZCwgZSwgaSwgaXNOdW0sIGxlbiwgc3RyLFxyXG4gICAgICAgIHggPSB0aGlzO1xyXG5cclxuICAgICAgLy8gRW5hYmxlIGNvbnN0cnVjdG9yIGNhbGwgd2l0aG91dCBgbmV3YC5cclxuICAgICAgaWYgKCEoeCBpbnN0YW5jZW9mIEJpZ051bWJlcikpIHJldHVybiBuZXcgQmlnTnVtYmVyKHYsIGIpO1xyXG5cclxuICAgICAgaWYgKGIgPT0gbnVsbCkge1xyXG5cclxuICAgICAgICBpZiAodiAmJiB2Ll9pc0JpZ051bWJlciA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgeC5zID0gdi5zO1xyXG5cclxuICAgICAgICAgIGlmICghdi5jIHx8IHYuZSA+IE1BWF9FWFApIHtcclxuICAgICAgICAgICAgeC5jID0geC5lID0gbnVsbDtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodi5lIDwgTUlOX0VYUCkge1xyXG4gICAgICAgICAgICB4LmMgPSBbeC5lID0gMF07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4LmUgPSB2LmU7XHJcbiAgICAgICAgICAgIHguYyA9IHYuYy5zbGljZSgpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgoaXNOdW0gPSB0eXBlb2YgdiA9PSAnbnVtYmVyJykgJiYgdiAqIDAgPT0gMCkge1xyXG5cclxuICAgICAgICAgIC8vIFVzZSBgMSAvIG5gIHRvIGhhbmRsZSBtaW51cyB6ZXJvIGFsc28uXHJcbiAgICAgICAgICB4LnMgPSAxIC8gdiA8IDAgPyAodiA9IC12LCAtMSkgOiAxO1xyXG5cclxuICAgICAgICAgIC8vIEZhc3QgcGF0aCBmb3IgaW50ZWdlcnMsIHdoZXJlIG4gPCAyMTQ3NDgzNjQ4ICgyKiozMSkuXHJcbiAgICAgICAgICBpZiAodiA9PT0gfn52KSB7XHJcbiAgICAgICAgICAgIGZvciAoZSA9IDAsIGkgPSB2OyBpID49IDEwOyBpIC89IDEwLCBlKyspO1xyXG5cclxuICAgICAgICAgICAgaWYgKGUgPiBNQVhfRVhQKSB7XHJcbiAgICAgICAgICAgICAgeC5jID0geC5lID0gbnVsbDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB4LmUgPSBlO1xyXG4gICAgICAgICAgICAgIHguYyA9IFt2XTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHN0ciA9IFN0cmluZyh2KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIGlmICghaXNOdW1lcmljLnRlc3Qoc3RyID0gU3RyaW5nKHYpKSkgcmV0dXJuIHBhcnNlTnVtZXJpYyh4LCBzdHIsIGlzTnVtKTtcclxuXHJcbiAgICAgICAgICB4LnMgPSBzdHIuY2hhckNvZGVBdCgwKSA9PSA0NSA/IChzdHIgPSBzdHIuc2xpY2UoMSksIC0xKSA6IDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBEZWNpbWFsIHBvaW50P1xyXG4gICAgICAgIGlmICgoZSA9IHN0ci5pbmRleE9mKCcuJykpID4gLTEpIHN0ciA9IHN0ci5yZXBsYWNlKCcuJywgJycpO1xyXG5cclxuICAgICAgICAvLyBFeHBvbmVudGlhbCBmb3JtP1xyXG4gICAgICAgIGlmICgoaSA9IHN0ci5zZWFyY2goL2UvaSkpID4gMCkge1xyXG5cclxuICAgICAgICAgIC8vIERldGVybWluZSBleHBvbmVudC5cclxuICAgICAgICAgIGlmIChlIDwgMCkgZSA9IGk7XHJcbiAgICAgICAgICBlICs9ICtzdHIuc2xpY2UoaSArIDEpO1xyXG4gICAgICAgICAgc3RyID0gc3RyLnN1YnN0cmluZygwLCBpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGUgPCAwKSB7XHJcblxyXG4gICAgICAgICAgLy8gSW50ZWdlci5cclxuICAgICAgICAgIGUgPSBzdHIubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBCYXNlIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtifSdcclxuICAgICAgICBpbnRDaGVjayhiLCAyLCBBTFBIQUJFVC5sZW5ndGgsICdCYXNlJyk7XHJcblxyXG4gICAgICAgIC8vIEFsbG93IGV4cG9uZW50aWFsIG5vdGF0aW9uIHRvIGJlIHVzZWQgd2l0aCBiYXNlIDEwIGFyZ3VtZW50LCB3aGlsZVxyXG4gICAgICAgIC8vIGFsc28gcm91bmRpbmcgdG8gREVDSU1BTF9QTEFDRVMgYXMgd2l0aCBvdGhlciBiYXNlcy5cclxuICAgICAgICBpZiAoYiA9PSAxMCkge1xyXG4gICAgICAgICAgeCA9IG5ldyBCaWdOdW1iZXIodik7XHJcbiAgICAgICAgICByZXR1cm4gcm91bmQoeCwgREVDSU1BTF9QTEFDRVMgKyB4LmUgKyAxLCBST1VORElOR19NT0RFKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN0ciA9IFN0cmluZyh2KTtcclxuXHJcbiAgICAgICAgaWYgKGlzTnVtID0gdHlwZW9mIHYgPT0gJ251bWJlcicpIHtcclxuXHJcbiAgICAgICAgICAvLyBBdm9pZCBwb3RlbnRpYWwgaW50ZXJwcmV0YXRpb24gb2YgSW5maW5pdHkgYW5kIE5hTiBhcyBiYXNlIDQ0KyB2YWx1ZXMuXHJcbiAgICAgICAgICBpZiAodiAqIDAgIT0gMCkgcmV0dXJuIHBhcnNlTnVtZXJpYyh4LCBzdHIsIGlzTnVtLCBiKTtcclxuXHJcbiAgICAgICAgICB4LnMgPSAxIC8gdiA8IDAgPyAoc3RyID0gc3RyLnNsaWNlKDEpLCAtMSkgOiAxO1xyXG5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBOdW1iZXIgcHJpbWl0aXZlIGhhcyBtb3JlIHRoYW4gMTUgc2lnbmlmaWNhbnQgZGlnaXRzOiB7bn0nXHJcbiAgICAgICAgICBpZiAoQmlnTnVtYmVyLkRFQlVHICYmIHN0ci5yZXBsYWNlKC9eMFxcLjAqfFxcLi8sICcnKS5sZW5ndGggPiAxNSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAgKHRvb01hbnlEaWdpdHMgKyB2KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgeC5zID0gc3RyLmNoYXJDb2RlQXQoMCkgPT09IDQ1ID8gKHN0ciA9IHN0ci5zbGljZSgxKSwgLTEpIDogMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFscGhhYmV0ID0gQUxQSEFCRVQuc2xpY2UoMCwgYik7XHJcbiAgICAgICAgZSA9IGkgPSAwO1xyXG5cclxuICAgICAgICAvLyBDaGVjayB0aGF0IHN0ciBpcyBhIHZhbGlkIGJhc2UgYiBudW1iZXIuXHJcbiAgICAgICAgLy8gRG9uJ3QgdXNlIFJlZ0V4cCwgc28gYWxwaGFiZXQgY2FuIGNvbnRhaW4gc3BlY2lhbCBjaGFyYWN0ZXJzLlxyXG4gICAgICAgIGZvciAobGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoYWxwaGFiZXQuaW5kZXhPZihjID0gc3RyLmNoYXJBdChpKSkgPCAwKSB7XHJcbiAgICAgICAgICAgIGlmIChjID09ICcuJykge1xyXG5cclxuICAgICAgICAgICAgICAvLyBJZiAnLicgaXMgbm90IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGl0IGhhcyBub3QgYmUgZm91bmQgYmVmb3JlLlxyXG4gICAgICAgICAgICAgIGlmIChpID4gZSkge1xyXG4gICAgICAgICAgICAgICAgZSA9IGxlbjtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICghY2FzZUNoYW5nZWQpIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gQWxsb3cgZS5nLiBoZXhhZGVjaW1hbCAnRkYnIGFzIHdlbGwgYXMgJ2ZmJy5cclxuICAgICAgICAgICAgICBpZiAoc3RyID09IHN0ci50b1VwcGVyQ2FzZSgpICYmIChzdHIgPSBzdHIudG9Mb3dlckNhc2UoKSkgfHxcclxuICAgICAgICAgICAgICAgICAgc3RyID09IHN0ci50b0xvd2VyQ2FzZSgpICYmIChzdHIgPSBzdHIudG9VcHBlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgICAgIGNhc2VDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGkgPSAtMTtcclxuICAgICAgICAgICAgICAgIGUgPSAwO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljKHgsIFN0cmluZyh2KSwgaXNOdW0sIGIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUHJldmVudCBsYXRlciBjaGVjayBmb3IgbGVuZ3RoIG9uIGNvbnZlcnRlZCBudW1iZXIuXHJcbiAgICAgICAgaXNOdW0gPSBmYWxzZTtcclxuICAgICAgICBzdHIgPSBjb252ZXJ0QmFzZShzdHIsIGIsIDEwLCB4LnMpO1xyXG5cclxuICAgICAgICAvLyBEZWNpbWFsIHBvaW50P1xyXG4gICAgICAgIGlmICgoZSA9IHN0ci5pbmRleE9mKCcuJykpID4gLTEpIHN0ciA9IHN0ci5yZXBsYWNlKCcuJywgJycpO1xyXG4gICAgICAgIGVsc2UgZSA9IHN0ci5sZW5ndGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIERldGVybWluZSBsZWFkaW5nIHplcm9zLlxyXG4gICAgICBmb3IgKGkgPSAwOyBzdHIuY2hhckNvZGVBdChpKSA9PT0gNDg7IGkrKyk7XHJcblxyXG4gICAgICAvLyBEZXRlcm1pbmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgIGZvciAobGVuID0gc3RyLmxlbmd0aDsgc3RyLmNoYXJDb2RlQXQoLS1sZW4pID09PSA0ODspO1xyXG5cclxuICAgICAgaWYgKHN0ciA9IHN0ci5zbGljZShpLCArK2xlbikpIHtcclxuICAgICAgICBsZW4gLT0gaTtcclxuXHJcbiAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE51bWJlciBwcmltaXRpdmUgaGFzIG1vcmUgdGhhbiAxNSBzaWduaWZpY2FudCBkaWdpdHM6IHtufSdcclxuICAgICAgICBpZiAoaXNOdW0gJiYgQmlnTnVtYmVyLkRFQlVHICYmXHJcbiAgICAgICAgICBsZW4gPiAxNSAmJiAodiA+IE1BWF9TQUZFX0lOVEVHRVIgfHwgdiAhPT0gbWF0aGZsb29yKHYpKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAgKHRvb01hbnlEaWdpdHMgKyAoeC5zICogdikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgIC8vIE92ZXJmbG93P1xyXG4gICAgICAgIGlmICgoZSA9IGUgLSBpIC0gMSkgPiBNQVhfRVhQKSB7XHJcblxyXG4gICAgICAgICAgLy8gSW5maW5pdHkuXHJcbiAgICAgICAgICB4LmMgPSB4LmUgPSBudWxsO1xyXG5cclxuICAgICAgICAvLyBVbmRlcmZsb3c/XHJcbiAgICAgICAgfSBlbHNlIGlmIChlIDwgTUlOX0VYUCkge1xyXG5cclxuICAgICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgICB4LmMgPSBbeC5lID0gMF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHguZSA9IGU7XHJcbiAgICAgICAgICB4LmMgPSBbXTtcclxuXHJcbiAgICAgICAgICAvLyBUcmFuc2Zvcm0gYmFzZVxyXG5cclxuICAgICAgICAgIC8vIGUgaXMgdGhlIGJhc2UgMTAgZXhwb25lbnQuXHJcbiAgICAgICAgICAvLyBpIGlzIHdoZXJlIHRvIHNsaWNlIHN0ciB0byBnZXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGNvZWZmaWNpZW50IGFycmF5LlxyXG4gICAgICAgICAgaSA9IChlICsgMSkgJSBMT0dfQkFTRTtcclxuICAgICAgICAgIGlmIChlIDwgMCkgaSArPSBMT0dfQkFTRTsgIC8vIGkgPCAxXHJcblxyXG4gICAgICAgICAgaWYgKGkgPCBsZW4pIHtcclxuICAgICAgICAgICAgaWYgKGkpIHguYy5wdXNoKCtzdHIuc2xpY2UoMCwgaSkpO1xyXG5cclxuICAgICAgICAgICAgZm9yIChsZW4gLT0gTE9HX0JBU0U7IGkgPCBsZW47KSB7XHJcbiAgICAgICAgICAgICAgeC5jLnB1c2goK3N0ci5zbGljZShpLCBpICs9IExPR19CQVNFKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGkgPSBMT0dfQkFTRSAtIChzdHIgPSBzdHIuc2xpY2UoaSkpLmxlbmd0aDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGkgLT0gbGVuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGZvciAoOyBpLS07IHN0ciArPSAnMCcpO1xyXG4gICAgICAgICAgeC5jLnB1c2goK3N0cik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAvLyBaZXJvLlxyXG4gICAgICAgIHguYyA9IFt4LmUgPSAwXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBDT05TVFJVQ1RPUiBQUk9QRVJUSUVTXHJcblxyXG5cclxuICAgIEJpZ051bWJlci5jbG9uZSA9IGNsb25lO1xyXG5cclxuICAgIEJpZ051bWJlci5ST1VORF9VUCA9IDA7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfRE9XTiA9IDE7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfQ0VJTCA9IDI7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfRkxPT1IgPSAzO1xyXG4gICAgQmlnTnVtYmVyLlJPVU5EX0hBTEZfVVAgPSA0O1xyXG4gICAgQmlnTnVtYmVyLlJPVU5EX0hBTEZfRE9XTiA9IDU7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfSEFMRl9FVkVOID0gNjtcclxuICAgIEJpZ051bWJlci5ST1VORF9IQUxGX0NFSUwgPSA3O1xyXG4gICAgQmlnTnVtYmVyLlJPVU5EX0hBTEZfRkxPT1IgPSA4O1xyXG4gICAgQmlnTnVtYmVyLkVVQ0xJRCA9IDk7XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBDb25maWd1cmUgaW5mcmVxdWVudGx5LWNoYW5naW5nIGxpYnJhcnktd2lkZSBzZXR0aW5ncy5cclxuICAgICAqXHJcbiAgICAgKiBBY2NlcHQgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBvcHRpb25hbCBwcm9wZXJ0aWVzIChpZiB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eSBpc1xyXG4gICAgICogYSBudW1iZXIsIGl0IG11c3QgYmUgYW4gaW50ZWdlciB3aXRoaW4gdGhlIGluY2x1c2l2ZSByYW5nZSBzdGF0ZWQpOlxyXG4gICAgICpcclxuICAgICAqICAgREVDSU1BTF9QTEFDRVMgICB7bnVtYmVyfSAgICAgICAgICAgMCB0byBNQVhcclxuICAgICAqICAgUk9VTkRJTkdfTU9ERSAgICB7bnVtYmVyfSAgICAgICAgICAgMCB0byA4XHJcbiAgICAgKiAgIEVYUE9ORU5USUFMX0FUICAge251bWJlcnxudW1iZXJbXX0gIC1NQVggdG8gTUFYICBvciAgWy1NQVggdG8gMCwgMCB0byBNQVhdXHJcbiAgICAgKiAgIFJBTkdFICAgICAgICAgICAge251bWJlcnxudW1iZXJbXX0gIC1NQVggdG8gTUFYIChub3QgemVybykgIG9yICBbLU1BWCB0byAtMSwgMSB0byBNQVhdXHJcbiAgICAgKiAgIENSWVBUTyAgICAgICAgICAge2Jvb2xlYW59ICAgICAgICAgIHRydWUgb3IgZmFsc2VcclxuICAgICAqICAgTU9EVUxPX01PREUgICAgICB7bnVtYmVyfSAgICAgICAgICAgMCB0byA5XHJcbiAgICAgKiAgIFBPV19QUkVDSVNJT04gICAgICAge251bWJlcn0gICAgICAgICAgIDAgdG8gTUFYXHJcbiAgICAgKiAgIEFMUEhBQkVUICAgICAgICAge3N0cmluZ30gICAgICAgICAgIEEgc3RyaW5nIG9mIHR3byBvciBtb3JlIHVuaXF1ZSBjaGFyYWN0ZXJzIHdoaWNoIGRvZXNcclxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGNvbnRhaW4gJy4nLlxyXG4gICAgICogICBGT1JNQVQgICAgICAgICAgIHtvYmplY3R9ICAgICAgICAgICBBbiBvYmplY3Qgd2l0aCBzb21lIG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcclxuICAgICAqICAgICBwcmVmaXggICAgICAgICAgICAgICAgIHtzdHJpbmd9XHJcbiAgICAgKiAgICAgZ3JvdXBTaXplICAgICAgICAgICAgICB7bnVtYmVyfVxyXG4gICAgICogICAgIHNlY29uZGFyeUdyb3VwU2l6ZSAgICAge251bWJlcn1cclxuICAgICAqICAgICBncm91cFNlcGFyYXRvciAgICAgICAgIHtzdHJpbmd9XHJcbiAgICAgKiAgICAgZGVjaW1hbFNlcGFyYXRvciAgICAgICB7c3RyaW5nfVxyXG4gICAgICogICAgIGZyYWN0aW9uR3JvdXBTaXplICAgICAge251bWJlcn1cclxuICAgICAqICAgICBmcmFjdGlvbkdyb3VwU2VwYXJhdG9yIHtzdHJpbmd9XHJcbiAgICAgKiAgICAgc3VmZml4ICAgICAgICAgICAgICAgICB7c3RyaW5nfVxyXG4gICAgICpcclxuICAgICAqIChUaGUgdmFsdWVzIGFzc2lnbmVkIHRvIHRoZSBhYm92ZSBGT1JNQVQgb2JqZWN0IHByb3BlcnRpZXMgYXJlIG5vdCBjaGVja2VkIGZvciB2YWxpZGl0eS4pXHJcbiAgICAgKlxyXG4gICAgICogRS5nLlxyXG4gICAgICogQmlnTnVtYmVyLmNvbmZpZyh7IERFQ0lNQUxfUExBQ0VTIDogMjAsIFJPVU5ESU5HX01PREUgOiA0IH0pXHJcbiAgICAgKlxyXG4gICAgICogSWdub3JlIHByb3BlcnRpZXMvcGFyYW1ldGVycyBzZXQgdG8gbnVsbCBvciB1bmRlZmluZWQsIGV4Y2VwdCBmb3IgQUxQSEFCRVQuXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGFuIG9iamVjdCB3aXRoIHRoZSBwcm9wZXJ0aWVzIGN1cnJlbnQgdmFsdWVzLlxyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIuY29uZmlnID0gQmlnTnVtYmVyLnNldCA9IGZ1bmN0aW9uIChvYmopIHtcclxuICAgICAgdmFyIHAsIHY7XHJcblxyXG4gICAgICBpZiAob2JqICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogPT0gJ29iamVjdCcpIHtcclxuXHJcbiAgICAgICAgICAvLyBERUNJTUFMX1BMQUNFUyB7bnVtYmVyfSBJbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gREVDSU1BTF9QTEFDRVMge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3Z9J1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ0RFQ0lNQUxfUExBQ0VTJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaW50Q2hlY2sodiwgMCwgTUFYLCBwKTtcclxuICAgICAgICAgICAgREVDSU1BTF9QTEFDRVMgPSB2O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJPVU5ESU5HX01PREUge251bWJlcn0gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBST1VORElOR19NT0RFIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdST1VORElOR19NT0RFJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaW50Q2hlY2sodiwgMCwgOCwgcCk7XHJcbiAgICAgICAgICAgIFJPVU5ESU5HX01PREUgPSB2O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIEVYUE9ORU5USUFMX0FUIHtudW1iZXJ8bnVtYmVyW119XHJcbiAgICAgICAgICAvLyBJbnRlZ2VyLCAtTUFYIHRvIE1BWCBpbmNsdXNpdmUgb3JcclxuICAgICAgICAgIC8vIFtpbnRlZ2VyIC1NQVggdG8gMCBpbmNsdXNpdmUsIDAgdG8gTUFYIGluY2x1c2l2ZV0uXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gRVhQT05FTlRJQUxfQVQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3Z9J1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ0VYUE9ORU5USUFMX0FUJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaWYgKHYgJiYgdi5wb3ApIHtcclxuICAgICAgICAgICAgICBpbnRDaGVjayh2WzBdLCAtTUFYLCAwLCBwKTtcclxuICAgICAgICAgICAgICBpbnRDaGVjayh2WzFdLCAwLCBNQVgsIHApO1xyXG4gICAgICAgICAgICAgIFRPX0VYUF9ORUcgPSB2WzBdO1xyXG4gICAgICAgICAgICAgIFRPX0VYUF9QT1MgPSB2WzFdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHYsIC1NQVgsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgICAgVE9fRVhQX05FRyA9IC0oVE9fRVhQX1BPUyA9IHYgPCAwID8gLXYgOiB2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJBTkdFIHtudW1iZXJ8bnVtYmVyW119IE5vbi16ZXJvIGludGVnZXIsIC1NQVggdG8gTUFYIGluY2x1c2l2ZSBvclxyXG4gICAgICAgICAgLy8gW2ludGVnZXIgLU1BWCB0byAtMSBpbmNsdXNpdmUsIGludGVnZXIgMSB0byBNQVggaW5jbHVzaXZlXS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBSQU5HRSB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V8Y2Fubm90IGJlIHplcm99OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnUkFOR0UnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG4gICAgICAgICAgICBpZiAodiAmJiB2LnBvcCkge1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHZbMF0sIC1NQVgsIC0xLCBwKTtcclxuICAgICAgICAgICAgICBpbnRDaGVjayh2WzFdLCAxLCBNQVgsIHApO1xyXG4gICAgICAgICAgICAgIE1JTl9FWFAgPSB2WzBdO1xyXG4gICAgICAgICAgICAgIE1BWF9FWFAgPSB2WzFdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHYsIC1NQVgsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgICAgaWYgKHYpIHtcclxuICAgICAgICAgICAgICAgIE1JTl9FWFAgPSAtKE1BWF9FWFAgPSB2IDwgMCA/IC12IDogdik7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgcCArICcgY2Fubm90IGJlIHplcm86ICcgKyB2KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBDUllQVE8ge2Jvb2xlYW59IHRydWUgb3IgZmFsc2UuXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gQ1JZUFRPIG5vdCB0cnVlIG9yIGZhbHNlOiB7dn0nXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gY3J5cHRvIHVuYXZhaWxhYmxlJ1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ0NSWVBUTycpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcbiAgICAgICAgICAgIGlmICh2ID09PSAhIXYpIHtcclxuICAgICAgICAgICAgICBpZiAodikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjcnlwdG8gIT0gJ3VuZGVmaW5lZCcgJiYgY3J5cHRvICYmXHJcbiAgICAgICAgICAgICAgICAgKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgfHwgY3J5cHRvLnJhbmRvbUJ5dGVzKSkge1xyXG4gICAgICAgICAgICAgICAgICBDUllQVE8gPSB2O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgQ1JZUFRPID0gIXY7XHJcbiAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnY3J5cHRvIHVuYXZhaWxhYmxlJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIENSWVBUTyA9IHY7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgIChiaWdudW1iZXJFcnJvciArIHAgKyAnIG5vdCB0cnVlIG9yIGZhbHNlOiAnICsgdik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBNT0RVTE9fTU9ERSB7bnVtYmVyfSBJbnRlZ2VyLCAwIHRvIDkgaW5jbHVzaXZlLlxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE1PRFVMT19NT0RFIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdNT0RVTE9fTU9ERScpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcbiAgICAgICAgICAgIGludENoZWNrKHYsIDAsIDksIHApO1xyXG4gICAgICAgICAgICBNT0RVTE9fTU9ERSA9IHY7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gUE9XX1BSRUNJU0lPTiB7bnVtYmVyfSBJbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gUE9XX1BSRUNJU0lPTiB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnUE9XX1BSRUNJU0lPTicpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcbiAgICAgICAgICAgIGludENoZWNrKHYsIDAsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgIFBPV19QUkVDSVNJT04gPSB2O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIEZPUk1BVCB7b2JqZWN0fVxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIEZPUk1BVCBub3QgYW4gb2JqZWN0OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnRk9STUFUJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2ID09ICdvYmplY3QnKSBGT1JNQVQgPSB2O1xyXG4gICAgICAgICAgICBlbHNlIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyBwICsgJyBub3QgYW4gb2JqZWN0OiAnICsgdik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gQUxQSEFCRVQge3N0cmluZ31cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBBTFBIQUJFVCBpbnZhbGlkOiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnQUxQSEFCRVQnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG5cclxuICAgICAgICAgICAgLy8gRGlzYWxsb3cgaWYgbGVzcyB0aGFuIHR3byBjaGFyYWN0ZXJzLFxyXG4gICAgICAgICAgICAvLyBvciBpZiBpdCBjb250YWlucyAnKycsICctJywgJy4nLCB3aGl0ZXNwYWNlLCBvciBhIHJlcGVhdGVkIGNoYXJhY3Rlci5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2ID09ICdzdHJpbmcnICYmICEvXi4/JHxbK1xcLS5cXHNdfCguKS4qXFwxLy50ZXN0KHYpKSB7XHJcbiAgICAgICAgICAgICAgQUxQSEFCRVQgPSB2O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgIChiaWdudW1iZXJFcnJvciArIHAgKyAnIGludmFsaWQ6ICcgKyB2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBPYmplY3QgZXhwZWN0ZWQ6IHt2fSdcclxuICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ09iamVjdCBleHBlY3RlZDogJyArIG9iaik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIERFQ0lNQUxfUExBQ0VTOiBERUNJTUFMX1BMQUNFUyxcclxuICAgICAgICBST1VORElOR19NT0RFOiBST1VORElOR19NT0RFLFxyXG4gICAgICAgIEVYUE9ORU5USUFMX0FUOiBbVE9fRVhQX05FRywgVE9fRVhQX1BPU10sXHJcbiAgICAgICAgUkFOR0U6IFtNSU5fRVhQLCBNQVhfRVhQXSxcclxuICAgICAgICBDUllQVE86IENSWVBUTyxcclxuICAgICAgICBNT0RVTE9fTU9ERTogTU9EVUxPX01PREUsXHJcbiAgICAgICAgUE9XX1BSRUNJU0lPTjogUE9XX1BSRUNJU0lPTixcclxuICAgICAgICBGT1JNQVQ6IEZPUk1BVCxcclxuICAgICAgICBBTFBIQUJFVDogQUxQSEFCRVRcclxuICAgICAgfTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB2IGlzIGEgQmlnTnVtYmVyIGluc3RhbmNlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICpcclxuICAgICAqIElmIEJpZ051bWJlci5ERUJVRyBpcyB0cnVlLCB0aHJvdyBpZiBhIEJpZ051bWJlciBpbnN0YW5jZSBpcyBub3Qgd2VsbC1mb3JtZWQuXHJcbiAgICAgKlxyXG4gICAgICogdiB7YW55fVxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBJbnZhbGlkIEJpZ051bWJlcjoge3Z9J1xyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIuaXNCaWdOdW1iZXIgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICBpZiAoIXYgfHwgdi5faXNCaWdOdW1iZXIgIT09IHRydWUpIHJldHVybiBmYWxzZTtcclxuICAgICAgaWYgKCFCaWdOdW1iZXIuREVCVUcpIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgdmFyIGksIG4sXHJcbiAgICAgICAgYyA9IHYuYyxcclxuICAgICAgICBlID0gdi5lLFxyXG4gICAgICAgIHMgPSB2LnM7XHJcblxyXG4gICAgICBvdXQ6IGlmICh7fS50b1N0cmluZy5jYWxsKGMpID09ICdbb2JqZWN0IEFycmF5XScpIHtcclxuXHJcbiAgICAgICAgaWYgKChzID09PSAxIHx8IHMgPT09IC0xKSAmJiBlID49IC1NQVggJiYgZSA8PSBNQVggJiYgZSA9PT0gbWF0aGZsb29yKGUpKSB7XHJcblxyXG4gICAgICAgICAgLy8gSWYgdGhlIGZpcnN0IGVsZW1lbnQgaXMgemVybywgdGhlIEJpZ051bWJlciB2YWx1ZSBtdXN0IGJlIHplcm8uXHJcbiAgICAgICAgICBpZiAoY1swXSA9PT0gMCkge1xyXG4gICAgICAgICAgICBpZiAoZSA9PT0gMCAmJiBjLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrIG91dDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBDYWxjdWxhdGUgbnVtYmVyIG9mIGRpZ2l0cyB0aGF0IGNbMF0gc2hvdWxkIGhhdmUsIGJhc2VkIG9uIHRoZSBleHBvbmVudC5cclxuICAgICAgICAgIGkgPSAoZSArIDEpICUgTE9HX0JBU0U7XHJcbiAgICAgICAgICBpZiAoaSA8IDEpIGkgKz0gTE9HX0JBU0U7XHJcblxyXG4gICAgICAgICAgLy8gQ2FsY3VsYXRlIG51bWJlciBvZiBkaWdpdHMgb2YgY1swXS5cclxuICAgICAgICAgIC8vaWYgKE1hdGguY2VpbChNYXRoLmxvZyhjWzBdICsgMSkgLyBNYXRoLkxOMTApID09IGkpIHtcclxuICAgICAgICAgIGlmIChTdHJpbmcoY1swXSkubGVuZ3RoID09IGkpIHtcclxuXHJcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgbiA9IGNbaV07XHJcbiAgICAgICAgICAgICAgaWYgKG4gPCAwIHx8IG4gPj0gQkFTRSB8fCBuICE9PSBtYXRoZmxvb3IobikpIGJyZWFrIG91dDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gTGFzdCBlbGVtZW50IGNhbm5vdCBiZSB6ZXJvLCB1bmxlc3MgaXQgaXMgdGhlIG9ubHkgZWxlbWVudC5cclxuICAgICAgICAgICAgaWYgKG4gIT09IDApIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIC8vIEluZmluaXR5L05hTlxyXG4gICAgICB9IGVsc2UgaWYgKGMgPT09IG51bGwgJiYgZSA9PT0gbnVsbCAmJiAocyA9PT0gbnVsbCB8fCBzID09PSAxIHx8IHMgPT09IC0xKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgIChiaWdudW1iZXJFcnJvciArICdJbnZhbGlkIEJpZ051bWJlcjogJyArIHYpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIG1heGltdW0gb2YgdGhlIGFyZ3VtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBhcmd1bWVudHMge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIubWF4aW11bSA9IEJpZ051bWJlci5tYXggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBtYXhPck1pbihhcmd1bWVudHMsIFAubHQpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIG1pbmltdW0gb2YgdGhlIGFyZ3VtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBhcmd1bWVudHMge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIubWluaW11bSA9IEJpZ051bWJlci5taW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBtYXhPck1pbihhcmd1bWVudHMsIFAuZ3QpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2l0aCBhIHJhbmRvbSB2YWx1ZSBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMCBhbmQgbGVzcyB0aGFuIDEsXHJcbiAgICAgKiBhbmQgd2l0aCBkcCwgb3IgREVDSU1BTF9QTEFDRVMgaWYgZHAgaXMgb21pdHRlZCwgZGVjaW1hbCBwbGFjZXMgKG9yIGxlc3MgaWYgdHJhaWxpbmdcclxuICAgICAqIHplcm9zIGFyZSBwcm9kdWNlZCkuXHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB9J1xyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIGNyeXB0byB1bmF2YWlsYWJsZSdcclxuICAgICAqL1xyXG4gICAgQmlnTnVtYmVyLnJhbmRvbSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBwb3cyXzUzID0gMHgyMDAwMDAwMDAwMDAwMDtcclxuXHJcbiAgICAgIC8vIFJldHVybiBhIDUzIGJpdCBpbnRlZ2VyIG4sIHdoZXJlIDAgPD0gbiA8IDkwMDcxOTkyNTQ3NDA5OTIuXHJcbiAgICAgIC8vIENoZWNrIGlmIE1hdGgucmFuZG9tKCkgcHJvZHVjZXMgbW9yZSB0aGFuIDMyIGJpdHMgb2YgcmFuZG9tbmVzcy5cclxuICAgICAgLy8gSWYgaXQgZG9lcywgYXNzdW1lIGF0IGxlYXN0IDUzIGJpdHMgYXJlIHByb2R1Y2VkLCBvdGhlcndpc2UgYXNzdW1lIGF0IGxlYXN0IDMwIGJpdHMuXHJcbiAgICAgIC8vIDB4NDAwMDAwMDAgaXMgMl4zMCwgMHg4MDAwMDAgaXMgMl4yMywgMHgxZmZmZmYgaXMgMl4yMSAtIDEuXHJcbiAgICAgIHZhciByYW5kb201M2JpdEludCA9IChNYXRoLnJhbmRvbSgpICogcG93Ml81MykgJiAweDFmZmZmZlxyXG4gICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBtYXRoZmxvb3IoTWF0aC5yYW5kb20oKSAqIHBvdzJfNTMpOyB9XHJcbiAgICAgICA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICgoTWF0aC5yYW5kb20oKSAqIDB4NDAwMDAwMDAgfCAwKSAqIDB4ODAwMDAwKSArXHJcbiAgICAgICAgIChNYXRoLnJhbmRvbSgpICogMHg4MDAwMDAgfCAwKTsgfTtcclxuXHJcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZHApIHtcclxuICAgICAgICB2YXIgYSwgYiwgZSwgaywgdixcclxuICAgICAgICAgIGkgPSAwLFxyXG4gICAgICAgICAgYyA9IFtdLFxyXG4gICAgICAgICAgcmFuZCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuXHJcbiAgICAgICAgaWYgKGRwID09IG51bGwpIGRwID0gREVDSU1BTF9QTEFDRVM7XHJcbiAgICAgICAgZWxzZSBpbnRDaGVjayhkcCwgMCwgTUFYKTtcclxuXHJcbiAgICAgICAgayA9IG1hdGhjZWlsKGRwIC8gTE9HX0JBU0UpO1xyXG5cclxuICAgICAgICBpZiAoQ1JZUFRPKSB7XHJcblxyXG4gICAgICAgICAgLy8gQnJvd3NlcnMgc3VwcG9ydGluZyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLlxyXG4gICAgICAgICAgaWYgKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcclxuXHJcbiAgICAgICAgICAgIGEgPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheShrICo9IDIpKTtcclxuXHJcbiAgICAgICAgICAgIGZvciAoOyBpIDwgazspIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gNTMgYml0czpcclxuICAgICAgICAgICAgICAvLyAoKE1hdGgucG93KDIsIDMyKSAtIDEpICogTWF0aC5wb3coMiwgMjEpKS50b1N0cmluZygyKVxyXG4gICAgICAgICAgICAgIC8vIDExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwXHJcbiAgICAgICAgICAgICAgLy8gKChNYXRoLnBvdygyLCAzMikgLSAxKSA+Pj4gMTEpLnRvU3RyaW5nKDIpXHJcbiAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTEgMTExMTExMTEgMTExMTExMTFcclxuICAgICAgICAgICAgICAvLyAweDIwMDAwIGlzIDJeMjEuXHJcbiAgICAgICAgICAgICAgdiA9IGFbaV0gKiAweDIwMDAwICsgKGFbaSArIDFdID4+PiAxMSk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIFJlamVjdGlvbiBzYW1wbGluZzpcclxuICAgICAgICAgICAgICAvLyAwIDw9IHYgPCA5MDA3MTk5MjU0NzQwOTkyXHJcbiAgICAgICAgICAgICAgLy8gUHJvYmFiaWxpdHkgdGhhdCB2ID49IDllMTUsIGlzXHJcbiAgICAgICAgICAgICAgLy8gNzE5OTI1NDc0MDk5MiAvIDkwMDcxOTkyNTQ3NDA5OTIgfj0gMC4wMDA4LCBpLmUuIDEgaW4gMTI1MVxyXG4gICAgICAgICAgICAgIGlmICh2ID49IDllMTUpIHtcclxuICAgICAgICAgICAgICAgIGIgPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgyKSk7XHJcbiAgICAgICAgICAgICAgICBhW2ldID0gYlswXTtcclxuICAgICAgICAgICAgICAgIGFbaSArIDFdID0gYlsxXTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIDAgPD0gdiA8PSA4OTk5OTk5OTk5OTk5OTk5XHJcbiAgICAgICAgICAgICAgICAvLyAwIDw9ICh2ICUgMWUxNCkgPD0gOTk5OTk5OTk5OTk5OTlcclxuICAgICAgICAgICAgICAgIGMucHVzaCh2ICUgMWUxNCk7XHJcbiAgICAgICAgICAgICAgICBpICs9IDI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGkgPSBrIC8gMjtcclxuXHJcbiAgICAgICAgICAvLyBOb2RlLmpzIHN1cHBvcnRpbmcgY3J5cHRvLnJhbmRvbUJ5dGVzLlxyXG4gICAgICAgICAgfSBlbHNlIGlmIChjcnlwdG8ucmFuZG9tQnl0ZXMpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIGJ1ZmZlclxyXG4gICAgICAgICAgICBhID0gY3J5cHRvLnJhbmRvbUJ5dGVzKGsgKj0gNyk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKDsgaSA8IGs7KSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIDB4MTAwMDAwMDAwMDAwMCBpcyAyXjQ4LCAweDEwMDAwMDAwMDAwIGlzIDJeNDBcclxuICAgICAgICAgICAgICAvLyAweDEwMDAwMDAwMCBpcyAyXjMyLCAweDEwMDAwMDAgaXMgMl4yNFxyXG4gICAgICAgICAgICAgIC8vIDExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExXHJcbiAgICAgICAgICAgICAgLy8gMCA8PSB2IDwgOTAwNzE5OTI1NDc0MDk5MlxyXG4gICAgICAgICAgICAgIHYgPSAoKGFbaV0gJiAzMSkgKiAweDEwMDAwMDAwMDAwMDApICsgKGFbaSArIDFdICogMHgxMDAwMDAwMDAwMCkgK1xyXG4gICAgICAgICAgICAgICAgIChhW2kgKyAyXSAqIDB4MTAwMDAwMDAwKSArIChhW2kgKyAzXSAqIDB4MTAwMDAwMCkgK1xyXG4gICAgICAgICAgICAgICAgIChhW2kgKyA0XSA8PCAxNikgKyAoYVtpICsgNV0gPDwgOCkgKyBhW2kgKyA2XTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHYgPj0gOWUxNSkge1xyXG4gICAgICAgICAgICAgICAgY3J5cHRvLnJhbmRvbUJ5dGVzKDcpLmNvcHkoYSwgaSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyAwIDw9ICh2ICUgMWUxNCkgPD0gOTk5OTk5OTk5OTk5OTlcclxuICAgICAgICAgICAgICAgIGMucHVzaCh2ICUgMWUxNCk7XHJcbiAgICAgICAgICAgICAgICBpICs9IDc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGkgPSBrIC8gNztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIENSWVBUTyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ2NyeXB0byB1bmF2YWlsYWJsZScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVXNlIE1hdGgucmFuZG9tLlxyXG4gICAgICAgIGlmICghQ1JZUFRPKSB7XHJcblxyXG4gICAgICAgICAgZm9yICg7IGkgPCBrOykge1xyXG4gICAgICAgICAgICB2ID0gcmFuZG9tNTNiaXRJbnQoKTtcclxuICAgICAgICAgICAgaWYgKHYgPCA5ZTE1KSBjW2krK10gPSB2ICUgMWUxNDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGsgPSBjWy0taV07XHJcbiAgICAgICAgZHAgJT0gTE9HX0JBU0U7XHJcblxyXG4gICAgICAgIC8vIENvbnZlcnQgdHJhaWxpbmcgZGlnaXRzIHRvIHplcm9zIGFjY29yZGluZyB0byBkcC5cclxuICAgICAgICBpZiAoayAmJiBkcCkge1xyXG4gICAgICAgICAgdiA9IFBPV1NfVEVOW0xPR19CQVNFIC0gZHBdO1xyXG4gICAgICAgICAgY1tpXSA9IG1hdGhmbG9vcihrIC8gdikgKiB2O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIHRyYWlsaW5nIGVsZW1lbnRzIHdoaWNoIGFyZSB6ZXJvLlxyXG4gICAgICAgIGZvciAoOyBjW2ldID09PSAwOyBjLnBvcCgpLCBpLS0pO1xyXG5cclxuICAgICAgICAvLyBaZXJvP1xyXG4gICAgICAgIGlmIChpIDwgMCkge1xyXG4gICAgICAgICAgYyA9IFtlID0gMF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyBSZW1vdmUgbGVhZGluZyBlbGVtZW50cyB3aGljaCBhcmUgemVybyBhbmQgYWRqdXN0IGV4cG9uZW50IGFjY29yZGluZ2x5LlxyXG4gICAgICAgICAgZm9yIChlID0gLTEgOyBjWzBdID09PSAwOyBjLnNwbGljZSgwLCAxKSwgZSAtPSBMT0dfQkFTRSk7XHJcblxyXG4gICAgICAgICAgLy8gQ291bnQgdGhlIGRpZ2l0cyBvZiB0aGUgZmlyc3QgZWxlbWVudCBvZiBjIHRvIGRldGVybWluZSBsZWFkaW5nIHplcm9zLCBhbmQuLi5cclxuICAgICAgICAgIGZvciAoaSA9IDEsIHYgPSBjWzBdOyB2ID49IDEwOyB2IC89IDEwLCBpKyspO1xyXG5cclxuICAgICAgICAgIC8vIGFkanVzdCB0aGUgZXhwb25lbnQgYWNjb3JkaW5nbHkuXHJcbiAgICAgICAgICBpZiAoaSA8IExPR19CQVNFKSBlIC09IExPR19CQVNFIC0gaTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJhbmQuZSA9IGU7XHJcbiAgICAgICAgcmFuZC5jID0gYztcclxuICAgICAgICByZXR1cm4gcmFuZDtcclxuICAgICAgfTtcclxuICAgIH0pKCk7XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHN1bSBvZiB0aGUgYXJndW1lbnRzLlxyXG4gICAgICpcclxuICAgICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xCaWdOdW1iZXJ9XHJcbiAgICAgKi9cclxuICAgIEJpZ051bWJlci5zdW0gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBpID0gMSxcclxuICAgICAgICBhcmdzID0gYXJndW1lbnRzLFxyXG4gICAgICAgIHN1bSA9IG5ldyBCaWdOdW1iZXIoYXJnc1swXSk7XHJcbiAgICAgIGZvciAoOyBpIDwgYXJncy5sZW5ndGg7KSBzdW0gPSBzdW0ucGx1cyhhcmdzW2krK10pO1xyXG4gICAgICByZXR1cm4gc3VtO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLy8gUFJJVkFURSBGVU5DVElPTlNcclxuXHJcblxyXG4gICAgLy8gQ2FsbGVkIGJ5IEJpZ051bWJlciBhbmQgQmlnTnVtYmVyLnByb3RvdHlwZS50b1N0cmluZy5cclxuICAgIGNvbnZlcnRCYXNlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIGRlY2ltYWwgPSAnMDEyMzQ1Njc4OSc7XHJcblxyXG4gICAgICAvKlxyXG4gICAgICAgKiBDb252ZXJ0IHN0cmluZyBvZiBiYXNlSW4gdG8gYW4gYXJyYXkgb2YgbnVtYmVycyBvZiBiYXNlT3V0LlxyXG4gICAgICAgKiBFZy4gdG9CYXNlT3V0KCcyNTUnLCAxMCwgMTYpIHJldHVybnMgWzE1LCAxNV0uXHJcbiAgICAgICAqIEVnLiB0b0Jhc2VPdXQoJ2ZmJywgMTYsIDEwKSByZXR1cm5zIFsyLCA1LCA1XS5cclxuICAgICAgICovXHJcbiAgICAgIGZ1bmN0aW9uIHRvQmFzZU91dChzdHIsIGJhc2VJbiwgYmFzZU91dCwgYWxwaGFiZXQpIHtcclxuICAgICAgICB2YXIgaixcclxuICAgICAgICAgIGFyciA9IFswXSxcclxuICAgICAgICAgIGFyckwsXHJcbiAgICAgICAgICBpID0gMCxcclxuICAgICAgICAgIGxlbiA9IHN0ci5sZW5ndGg7XHJcblxyXG4gICAgICAgIGZvciAoOyBpIDwgbGVuOykge1xyXG4gICAgICAgICAgZm9yIChhcnJMID0gYXJyLmxlbmd0aDsgYXJyTC0tOyBhcnJbYXJyTF0gKj0gYmFzZUluKTtcclxuXHJcbiAgICAgICAgICBhcnJbMF0gKz0gYWxwaGFiZXQuaW5kZXhPZihzdHIuY2hhckF0KGkrKykpO1xyXG5cclxuICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBhcnIubGVuZ3RoOyBqKyspIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChhcnJbal0gPiBiYXNlT3V0IC0gMSkge1xyXG4gICAgICAgICAgICAgIGlmIChhcnJbaiArIDFdID09IG51bGwpIGFycltqICsgMV0gPSAwO1xyXG4gICAgICAgICAgICAgIGFycltqICsgMV0gKz0gYXJyW2pdIC8gYmFzZU91dCB8IDA7XHJcbiAgICAgICAgICAgICAgYXJyW2pdICU9IGJhc2VPdXQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBhcnIucmV2ZXJzZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDb252ZXJ0IGEgbnVtZXJpYyBzdHJpbmcgb2YgYmFzZUluIHRvIGEgbnVtZXJpYyBzdHJpbmcgb2YgYmFzZU91dC5cclxuICAgICAgLy8gSWYgdGhlIGNhbGxlciBpcyB0b1N0cmluZywgd2UgYXJlIGNvbnZlcnRpbmcgZnJvbSBiYXNlIDEwIHRvIGJhc2VPdXQuXHJcbiAgICAgIC8vIElmIHRoZSBjYWxsZXIgaXMgQmlnTnVtYmVyLCB3ZSBhcmUgY29udmVydGluZyBmcm9tIGJhc2VJbiB0byBiYXNlIDEwLlxyXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHN0ciwgYmFzZUluLCBiYXNlT3V0LCBzaWduLCBjYWxsZXJJc1RvU3RyaW5nKSB7XHJcbiAgICAgICAgdmFyIGFscGhhYmV0LCBkLCBlLCBrLCByLCB4LCB4YywgeSxcclxuICAgICAgICAgIGkgPSBzdHIuaW5kZXhPZignLicpLFxyXG4gICAgICAgICAgZHAgPSBERUNJTUFMX1BMQUNFUyxcclxuICAgICAgICAgIHJtID0gUk9VTkRJTkdfTU9ERTtcclxuXHJcbiAgICAgICAgLy8gTm9uLWludGVnZXIuXHJcbiAgICAgICAgaWYgKGkgPj0gMCkge1xyXG4gICAgICAgICAgayA9IFBPV19QUkVDSVNJT047XHJcblxyXG4gICAgICAgICAgLy8gVW5saW1pdGVkIHByZWNpc2lvbi5cclxuICAgICAgICAgIFBPV19QUkVDSVNJT04gPSAwO1xyXG4gICAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoJy4nLCAnJyk7XHJcbiAgICAgICAgICB5ID0gbmV3IEJpZ051bWJlcihiYXNlSW4pO1xyXG4gICAgICAgICAgeCA9IHkucG93KHN0ci5sZW5ndGggLSBpKTtcclxuICAgICAgICAgIFBPV19QUkVDSVNJT04gPSBrO1xyXG5cclxuICAgICAgICAgIC8vIENvbnZlcnQgc3RyIGFzIGlmIGFuIGludGVnZXIsIHRoZW4gcmVzdG9yZSB0aGUgZnJhY3Rpb24gcGFydCBieSBkaXZpZGluZyB0aGVcclxuICAgICAgICAgIC8vIHJlc3VsdCBieSBpdHMgYmFzZSByYWlzZWQgdG8gYSBwb3dlci5cclxuXHJcbiAgICAgICAgICB5LmMgPSB0b0Jhc2VPdXQodG9GaXhlZFBvaW50KGNvZWZmVG9TdHJpbmcoeC5jKSwgeC5lLCAnMCcpLFxyXG4gICAgICAgICAgIDEwLCBiYXNlT3V0LCBkZWNpbWFsKTtcclxuICAgICAgICAgIHkuZSA9IHkuYy5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDb252ZXJ0IHRoZSBudW1iZXIgYXMgaW50ZWdlci5cclxuXHJcbiAgICAgICAgeGMgPSB0b0Jhc2VPdXQoc3RyLCBiYXNlSW4sIGJhc2VPdXQsIGNhbGxlcklzVG9TdHJpbmdcclxuICAgICAgICAgPyAoYWxwaGFiZXQgPSBBTFBIQUJFVCwgZGVjaW1hbClcclxuICAgICAgICAgOiAoYWxwaGFiZXQgPSBkZWNpbWFsLCBBTFBIQUJFVCkpO1xyXG5cclxuICAgICAgICAvLyB4YyBub3cgcmVwcmVzZW50cyBzdHIgYXMgYW4gaW50ZWdlciBhbmQgY29udmVydGVkIHRvIGJhc2VPdXQuIGUgaXMgdGhlIGV4cG9uZW50LlxyXG4gICAgICAgIGUgPSBrID0geGMubGVuZ3RoO1xyXG5cclxuICAgICAgICAvLyBSZW1vdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgICAgZm9yICg7IHhjWy0ta10gPT0gMDsgeGMucG9wKCkpO1xyXG5cclxuICAgICAgICAvLyBaZXJvP1xyXG4gICAgICAgIGlmICgheGNbMF0pIHJldHVybiBhbHBoYWJldC5jaGFyQXQoMCk7XHJcblxyXG4gICAgICAgIC8vIERvZXMgc3RyIHJlcHJlc2VudCBhbiBpbnRlZ2VyPyBJZiBzbywgbm8gbmVlZCBmb3IgdGhlIGRpdmlzaW9uLlxyXG4gICAgICAgIGlmIChpIDwgMCkge1xyXG4gICAgICAgICAgLS1lO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB4LmMgPSB4YztcclxuICAgICAgICAgIHguZSA9IGU7XHJcblxyXG4gICAgICAgICAgLy8gVGhlIHNpZ24gaXMgbmVlZGVkIGZvciBjb3JyZWN0IHJvdW5kaW5nLlxyXG4gICAgICAgICAgeC5zID0gc2lnbjtcclxuICAgICAgICAgIHggPSBkaXYoeCwgeSwgZHAsIHJtLCBiYXNlT3V0KTtcclxuICAgICAgICAgIHhjID0geC5jO1xyXG4gICAgICAgICAgciA9IHgucjtcclxuICAgICAgICAgIGUgPSB4LmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB4YyBub3cgcmVwcmVzZW50cyBzdHIgY29udmVydGVkIHRvIGJhc2VPdXQuXHJcblxyXG4gICAgICAgIC8vIFRIZSBpbmRleCBvZiB0aGUgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgICAgZCA9IGUgKyBkcCArIDE7XHJcblxyXG4gICAgICAgIC8vIFRoZSByb3VuZGluZyBkaWdpdDogdGhlIGRpZ2l0IHRvIHRoZSByaWdodCBvZiB0aGUgZGlnaXQgdGhhdCBtYXkgYmUgcm91bmRlZCB1cC5cclxuICAgICAgICBpID0geGNbZF07XHJcblxyXG4gICAgICAgIC8vIExvb2sgYXQgdGhlIHJvdW5kaW5nIGRpZ2l0cyBhbmQgbW9kZSB0byBkZXRlcm1pbmUgd2hldGhlciB0byByb3VuZCB1cC5cclxuXHJcbiAgICAgICAgayA9IGJhc2VPdXQgLyAyO1xyXG4gICAgICAgIHIgPSByIHx8IGQgPCAwIHx8IHhjW2QgKyAxXSAhPSBudWxsO1xyXG5cclxuICAgICAgICByID0gcm0gPCA0ID8gKGkgIT0gbnVsbCB8fCByKSAmJiAocm0gPT0gMCB8fCBybSA9PSAoeC5zIDwgMCA/IDMgOiAyKSlcclxuICAgICAgICAgICAgICA6IGkgPiBrIHx8IGkgPT0gayAmJihybSA9PSA0IHx8IHIgfHwgcm0gPT0gNiAmJiB4Y1tkIC0gMV0gJiAxIHx8XHJcbiAgICAgICAgICAgICAgIHJtID09ICh4LnMgPCAwID8gOCA6IDcpKTtcclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIGluZGV4IG9mIHRoZSByb3VuZGluZyBkaWdpdCBpcyBub3QgZ3JlYXRlciB0aGFuIHplcm8sIG9yIHhjIHJlcHJlc2VudHNcclxuICAgICAgICAvLyB6ZXJvLCB0aGVuIHRoZSByZXN1bHQgb2YgdGhlIGJhc2UgY29udmVyc2lvbiBpcyB6ZXJvIG9yLCBpZiByb3VuZGluZyB1cCwgYSB2YWx1ZVxyXG4gICAgICAgIC8vIHN1Y2ggYXMgMC4wMDAwMS5cclxuICAgICAgICBpZiAoZCA8IDEgfHwgIXhjWzBdKSB7XHJcblxyXG4gICAgICAgICAgLy8gMV4tZHAgb3IgMFxyXG4gICAgICAgICAgc3RyID0gciA/IHRvRml4ZWRQb2ludChhbHBoYWJldC5jaGFyQXQoMSksIC1kcCwgYWxwaGFiZXQuY2hhckF0KDApKSA6IGFscGhhYmV0LmNoYXJBdCgwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIFRydW5jYXRlIHhjIHRvIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMuXHJcbiAgICAgICAgICB4Yy5sZW5ndGggPSBkO1xyXG5cclxuICAgICAgICAgIC8vIFJvdW5kIHVwP1xyXG4gICAgICAgICAgaWYgKHIpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIFJvdW5kaW5nIHVwIG1heSBtZWFuIHRoZSBwcmV2aW91cyBkaWdpdCBoYXMgdG8gYmUgcm91bmRlZCB1cCBhbmQgc28gb24uXHJcbiAgICAgICAgICAgIGZvciAoLS1iYXNlT3V0OyArK3hjWy0tZF0gPiBiYXNlT3V0Oykge1xyXG4gICAgICAgICAgICAgIHhjW2RdID0gMDtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKCFkKSB7XHJcbiAgICAgICAgICAgICAgICArK2U7XHJcbiAgICAgICAgICAgICAgICB4YyA9IFsxXS5jb25jYXQoeGMpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIERldGVybWluZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgICAgIGZvciAoayA9IHhjLmxlbmd0aDsgIXhjWy0ta107KTtcclxuXHJcbiAgICAgICAgICAvLyBFLmcuIFs0LCAxMSwgMTVdIGJlY29tZXMgNGJmLlxyXG4gICAgICAgICAgZm9yIChpID0gMCwgc3RyID0gJyc7IGkgPD0gazsgc3RyICs9IGFscGhhYmV0LmNoYXJBdCh4Y1tpKytdKSk7XHJcblxyXG4gICAgICAgICAgLy8gQWRkIGxlYWRpbmcgemVyb3MsIGRlY2ltYWwgcG9pbnQgYW5kIHRyYWlsaW5nIHplcm9zIGFzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgc3RyID0gdG9GaXhlZFBvaW50KHN0ciwgZSwgYWxwaGFiZXQuY2hhckF0KDApKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFRoZSBjYWxsZXIgd2lsbCBhZGQgdGhlIHNpZ24uXHJcbiAgICAgICAgcmV0dXJuIHN0cjtcclxuICAgICAgfTtcclxuICAgIH0pKCk7XHJcblxyXG5cclxuICAgIC8vIFBlcmZvcm0gZGl2aXNpb24gaW4gdGhlIHNwZWNpZmllZCBiYXNlLiBDYWxsZWQgYnkgZGl2IGFuZCBjb252ZXJ0QmFzZS5cclxuICAgIGRpdiA9IChmdW5jdGlvbiAoKSB7XHJcblxyXG4gICAgICAvLyBBc3N1bWUgbm9uLXplcm8geCBhbmQgay5cclxuICAgICAgZnVuY3Rpb24gbXVsdGlwbHkoeCwgaywgYmFzZSkge1xyXG4gICAgICAgIHZhciBtLCB0ZW1wLCB4bG8sIHhoaSxcclxuICAgICAgICAgIGNhcnJ5ID0gMCxcclxuICAgICAgICAgIGkgPSB4Lmxlbmd0aCxcclxuICAgICAgICAgIGtsbyA9IGsgJSBTUVJUX0JBU0UsXHJcbiAgICAgICAgICBraGkgPSBrIC8gU1FSVF9CQVNFIHwgMDtcclxuXHJcbiAgICAgICAgZm9yICh4ID0geC5zbGljZSgpOyBpLS07KSB7XHJcbiAgICAgICAgICB4bG8gPSB4W2ldICUgU1FSVF9CQVNFO1xyXG4gICAgICAgICAgeGhpID0geFtpXSAvIFNRUlRfQkFTRSB8IDA7XHJcbiAgICAgICAgICBtID0ga2hpICogeGxvICsgeGhpICoga2xvO1xyXG4gICAgICAgICAgdGVtcCA9IGtsbyAqIHhsbyArICgobSAlIFNRUlRfQkFTRSkgKiBTUVJUX0JBU0UpICsgY2Fycnk7XHJcbiAgICAgICAgICBjYXJyeSA9ICh0ZW1wIC8gYmFzZSB8IDApICsgKG0gLyBTUVJUX0JBU0UgfCAwKSArIGtoaSAqIHhoaTtcclxuICAgICAgICAgIHhbaV0gPSB0ZW1wICUgYmFzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjYXJyeSkgeCA9IFtjYXJyeV0uY29uY2F0KHgpO1xyXG5cclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfVxyXG5cclxuICAgICAgZnVuY3Rpb24gY29tcGFyZShhLCBiLCBhTCwgYkwpIHtcclxuICAgICAgICB2YXIgaSwgY21wO1xyXG5cclxuICAgICAgICBpZiAoYUwgIT0gYkwpIHtcclxuICAgICAgICAgIGNtcCA9IGFMID4gYkwgPyAxIDogLTE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICBmb3IgKGkgPSBjbXAgPSAwOyBpIDwgYUw7IGkrKykge1xyXG5cclxuICAgICAgICAgICAgaWYgKGFbaV0gIT0gYltpXSkge1xyXG4gICAgICAgICAgICAgIGNtcCA9IGFbaV0gPiBiW2ldID8gMSA6IC0xO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gY21wO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmdW5jdGlvbiBzdWJ0cmFjdChhLCBiLCBhTCwgYmFzZSkge1xyXG4gICAgICAgIHZhciBpID0gMDtcclxuXHJcbiAgICAgICAgLy8gU3VidHJhY3QgYiBmcm9tIGEuXHJcbiAgICAgICAgZm9yICg7IGFMLS07KSB7XHJcbiAgICAgICAgICBhW2FMXSAtPSBpO1xyXG4gICAgICAgICAgaSA9IGFbYUxdIDwgYlthTF0gPyAxIDogMDtcclxuICAgICAgICAgIGFbYUxdID0gaSAqIGJhc2UgKyBhW2FMXSAtIGJbYUxdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIGxlYWRpbmcgemVyb3MuXHJcbiAgICAgICAgZm9yICg7ICFhWzBdICYmIGEubGVuZ3RoID4gMTsgYS5zcGxpY2UoMCwgMSkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyB4OiBkaXZpZGVuZCwgeTogZGl2aXNvci5cclxuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4LCB5LCBkcCwgcm0sIGJhc2UpIHtcclxuICAgICAgICB2YXIgY21wLCBlLCBpLCBtb3JlLCBuLCBwcm9kLCBwcm9kTCwgcSwgcWMsIHJlbSwgcmVtTCwgcmVtMCwgeGksIHhMLCB5YzAsXHJcbiAgICAgICAgICB5TCwgeXosXHJcbiAgICAgICAgICBzID0geC5zID09IHkucyA/IDEgOiAtMSxcclxuICAgICAgICAgIHhjID0geC5jLFxyXG4gICAgICAgICAgeWMgPSB5LmM7XHJcblxyXG4gICAgICAgIC8vIEVpdGhlciBOYU4sIEluZmluaXR5IG9yIDA/XHJcbiAgICAgICAgaWYgKCF4YyB8fCAheGNbMF0gfHwgIXljIHx8ICF5Y1swXSkge1xyXG5cclxuICAgICAgICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKFxyXG5cclxuICAgICAgICAgICAvLyBSZXR1cm4gTmFOIGlmIGVpdGhlciBOYU4sIG9yIGJvdGggSW5maW5pdHkgb3IgMC5cclxuICAgICAgICAgICAheC5zIHx8ICF5LnMgfHwgKHhjID8geWMgJiYgeGNbMF0gPT0geWNbMF0gOiAheWMpID8gTmFOIDpcclxuXHJcbiAgICAgICAgICAgIC8vIFJldHVybiDCsTAgaWYgeCBpcyDCsTAgb3IgeSBpcyDCsUluZmluaXR5LCBvciByZXR1cm4gwrFJbmZpbml0eSBhcyB5IGlzIMKxMC5cclxuICAgICAgICAgICAgeGMgJiYgeGNbMF0gPT0gMCB8fCAheWMgPyBzICogMCA6IHMgLyAwXHJcbiAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBxID0gbmV3IEJpZ051bWJlcihzKTtcclxuICAgICAgICBxYyA9IHEuYyA9IFtdO1xyXG4gICAgICAgIGUgPSB4LmUgLSB5LmU7XHJcbiAgICAgICAgcyA9IGRwICsgZSArIDE7XHJcblxyXG4gICAgICAgIGlmICghYmFzZSkge1xyXG4gICAgICAgICAgYmFzZSA9IEJBU0U7XHJcbiAgICAgICAgICBlID0gYml0Rmxvb3IoeC5lIC8gTE9HX0JBU0UpIC0gYml0Rmxvb3IoeS5lIC8gTE9HX0JBU0UpO1xyXG4gICAgICAgICAgcyA9IHMgLyBMT0dfQkFTRSB8IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZXN1bHQgZXhwb25lbnQgbWF5IGJlIG9uZSBsZXNzIHRoZW4gdGhlIGN1cnJlbnQgdmFsdWUgb2YgZS5cclxuICAgICAgICAvLyBUaGUgY29lZmZpY2llbnRzIG9mIHRoZSBCaWdOdW1iZXJzIGZyb20gY29udmVydEJhc2UgbWF5IGhhdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgICAgZm9yIChpID0gMDsgeWNbaV0gPT0gKHhjW2ldIHx8IDApOyBpKyspO1xyXG5cclxuICAgICAgICBpZiAoeWNbaV0gPiAoeGNbaV0gfHwgMCkpIGUtLTtcclxuXHJcbiAgICAgICAgaWYgKHMgPCAwKSB7XHJcbiAgICAgICAgICBxYy5wdXNoKDEpO1xyXG4gICAgICAgICAgbW9yZSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHhMID0geGMubGVuZ3RoO1xyXG4gICAgICAgICAgeUwgPSB5Yy5sZW5ndGg7XHJcbiAgICAgICAgICBpID0gMDtcclxuICAgICAgICAgIHMgKz0gMjtcclxuXHJcbiAgICAgICAgICAvLyBOb3JtYWxpc2UgeGMgYW5kIHljIHNvIGhpZ2hlc3Qgb3JkZXIgZGlnaXQgb2YgeWMgaXMgPj0gYmFzZSAvIDIuXHJcblxyXG4gICAgICAgICAgbiA9IG1hdGhmbG9vcihiYXNlIC8gKHljWzBdICsgMSkpO1xyXG5cclxuICAgICAgICAgIC8vIE5vdCBuZWNlc3NhcnksIGJ1dCB0byBoYW5kbGUgb2RkIGJhc2VzIHdoZXJlIHljWzBdID09IChiYXNlIC8gMikgLSAxLlxyXG4gICAgICAgICAgLy8gaWYgKG4gPiAxIHx8IG4rKyA9PSAxICYmIHljWzBdIDwgYmFzZSAvIDIpIHtcclxuICAgICAgICAgIGlmIChuID4gMSkge1xyXG4gICAgICAgICAgICB5YyA9IG11bHRpcGx5KHljLCBuLCBiYXNlKTtcclxuICAgICAgICAgICAgeGMgPSBtdWx0aXBseSh4YywgbiwgYmFzZSk7XHJcbiAgICAgICAgICAgIHlMID0geWMubGVuZ3RoO1xyXG4gICAgICAgICAgICB4TCA9IHhjLmxlbmd0aDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB4aSA9IHlMO1xyXG4gICAgICAgICAgcmVtID0geGMuc2xpY2UoMCwgeUwpO1xyXG4gICAgICAgICAgcmVtTCA9IHJlbS5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgLy8gQWRkIHplcm9zIHRvIG1ha2UgcmVtYWluZGVyIGFzIGxvbmcgYXMgZGl2aXNvci5cclxuICAgICAgICAgIGZvciAoOyByZW1MIDwgeUw7IHJlbVtyZW1MKytdID0gMCk7XHJcbiAgICAgICAgICB5eiA9IHljLnNsaWNlKCk7XHJcbiAgICAgICAgICB5eiA9IFswXS5jb25jYXQoeXopO1xyXG4gICAgICAgICAgeWMwID0geWNbMF07XHJcbiAgICAgICAgICBpZiAoeWNbMV0gPj0gYmFzZSAvIDIpIHljMCsrO1xyXG4gICAgICAgICAgLy8gTm90IG5lY2Vzc2FyeSwgYnV0IHRvIHByZXZlbnQgdHJpYWwgZGlnaXQgbiA+IGJhc2UsIHdoZW4gdXNpbmcgYmFzZSAzLlxyXG4gICAgICAgICAgLy8gZWxzZSBpZiAoYmFzZSA9PSAzICYmIHljMCA9PSAxKSB5YzAgPSAxICsgMWUtMTU7XHJcblxyXG4gICAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICBuID0gMDtcclxuXHJcbiAgICAgICAgICAgIC8vIENvbXBhcmUgZGl2aXNvciBhbmQgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICBjbXAgPSBjb21wYXJlKHljLCByZW0sIHlMLCByZW1MKTtcclxuXHJcbiAgICAgICAgICAgIC8vIElmIGRpdmlzb3IgPCByZW1haW5kZXIuXHJcbiAgICAgICAgICAgIGlmIChjbXAgPCAwKSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0cmlhbCBkaWdpdCwgbi5cclxuXHJcbiAgICAgICAgICAgICAgcmVtMCA9IHJlbVswXTtcclxuICAgICAgICAgICAgICBpZiAoeUwgIT0gcmVtTCkgcmVtMCA9IHJlbTAgKiBiYXNlICsgKHJlbVsxXSB8fCAwKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gbiBpcyBob3cgbWFueSB0aW1lcyB0aGUgZGl2aXNvciBnb2VzIGludG8gdGhlIGN1cnJlbnQgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIG4gPSBtYXRoZmxvb3IocmVtMCAvIHljMCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vICBBbGdvcml0aG06XHJcbiAgICAgICAgICAgICAgLy8gIHByb2R1Y3QgPSBkaXZpc29yIG11bHRpcGxpZWQgYnkgdHJpYWwgZGlnaXQgKG4pLlxyXG4gICAgICAgICAgICAgIC8vICBDb21wYXJlIHByb2R1Y3QgYW5kIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAvLyAgSWYgcHJvZHVjdCBpcyBncmVhdGVyIHRoYW4gcmVtYWluZGVyOlxyXG4gICAgICAgICAgICAgIC8vICAgIFN1YnRyYWN0IGRpdmlzb3IgZnJvbSBwcm9kdWN0LCBkZWNyZW1lbnQgdHJpYWwgZGlnaXQuXHJcbiAgICAgICAgICAgICAgLy8gIFN1YnRyYWN0IHByb2R1Y3QgZnJvbSByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgLy8gIElmIHByb2R1Y3Qgd2FzIGxlc3MgdGhhbiByZW1haW5kZXIgYXQgdGhlIGxhc3QgY29tcGFyZTpcclxuICAgICAgICAgICAgICAvLyAgICBDb21wYXJlIG5ldyByZW1haW5kZXIgYW5kIGRpdmlzb3IuXHJcbiAgICAgICAgICAgICAgLy8gICAgSWYgcmVtYWluZGVyIGlzIGdyZWF0ZXIgdGhhbiBkaXZpc29yOlxyXG4gICAgICAgICAgICAgIC8vICAgICAgU3VidHJhY3QgZGl2aXNvciBmcm9tIHJlbWFpbmRlciwgaW5jcmVtZW50IHRyaWFsIGRpZ2l0LlxyXG5cclxuICAgICAgICAgICAgICBpZiAobiA+IDEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBuIG1heSBiZSA+IGJhc2Ugb25seSB3aGVuIGJhc2UgaXMgMy5cclxuICAgICAgICAgICAgICAgIGlmIChuID49IGJhc2UpIG4gPSBiYXNlIC0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBwcm9kdWN0ID0gZGl2aXNvciAqIHRyaWFsIGRpZ2l0LlxyXG4gICAgICAgICAgICAgICAgcHJvZCA9IG11bHRpcGx5KHljLCBuLCBiYXNlKTtcclxuICAgICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb21wYXJlIHByb2R1Y3QgYW5kIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIC8vIElmIHByb2R1Y3QgPiByZW1haW5kZXIgdGhlbiB0cmlhbCBkaWdpdCBuIHRvbyBoaWdoLlxyXG4gICAgICAgICAgICAgICAgLy8gbiBpcyAxIHRvbyBoaWdoIGFib3V0IDUlIG9mIHRoZSB0aW1lLCBhbmQgaXMgbm90IGtub3duIHRvIGhhdmVcclxuICAgICAgICAgICAgICAgIC8vIGV2ZXIgYmVlbiBtb3JlIHRoYW4gMSB0b28gaGlnaC5cclxuICAgICAgICAgICAgICAgIHdoaWxlIChjb21wYXJlKHByb2QsIHJlbSwgcHJvZEwsIHJlbUwpID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgbi0tO1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gU3VidHJhY3QgZGl2aXNvciBmcm9tIHByb2R1Y3QuXHJcbiAgICAgICAgICAgICAgICAgIHN1YnRyYWN0KHByb2QsIHlMIDwgcHJvZEwgPyB5eiA6IHljLCBwcm9kTCwgYmFzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgIGNtcCA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBuIGlzIDAgb3IgMSwgY21wIGlzIC0xLlxyXG4gICAgICAgICAgICAgICAgLy8gSWYgbiBpcyAwLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNvbXBhcmUgeWMgYW5kIHJlbSBhZ2FpbiBiZWxvdyxcclxuICAgICAgICAgICAgICAgIC8vIHNvIGNoYW5nZSBjbXAgdG8gMSB0byBhdm9pZCBpdC5cclxuICAgICAgICAgICAgICAgIC8vIElmIG4gaXMgMSwgbGVhdmUgY21wIGFzIC0xLCBzbyB5YyBhbmQgcmVtIGFyZSBjb21wYXJlZCBhZ2Fpbi5cclxuICAgICAgICAgICAgICAgIGlmIChuID09IDApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIGRpdmlzb3IgPCByZW1haW5kZXIsIHNvIG4gbXVzdCBiZSBhdCBsZWFzdCAxLlxyXG4gICAgICAgICAgICAgICAgICBjbXAgPSBuID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBwcm9kdWN0ID0gZGl2aXNvclxyXG4gICAgICAgICAgICAgICAgcHJvZCA9IHljLnNsaWNlKCk7XHJcbiAgICAgICAgICAgICAgICBwcm9kTCA9IHByb2QubGVuZ3RoO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKHByb2RMIDwgcmVtTCkgcHJvZCA9IFswXS5jb25jYXQocHJvZCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIFN1YnRyYWN0IHByb2R1Y3QgZnJvbSByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgc3VidHJhY3QocmVtLCBwcm9kLCByZW1MLCBiYXNlKTtcclxuICAgICAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgICAgIC8vIElmIHByb2R1Y3Qgd2FzIDwgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIGlmIChjbXAgPT0gLTEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb21wYXJlIGRpdmlzb3IgYW5kIG5ldyByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgICAvLyBJZiBkaXZpc29yIDwgbmV3IHJlbWFpbmRlciwgc3VidHJhY3QgZGl2aXNvciBmcm9tIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIC8vIFRyaWFsIGRpZ2l0IG4gdG9vIGxvdy5cclxuICAgICAgICAgICAgICAgIC8vIG4gaXMgMSB0b28gbG93IGFib3V0IDUlIG9mIHRoZSB0aW1lLCBhbmQgdmVyeSByYXJlbHkgMiB0b28gbG93LlxyXG4gICAgICAgICAgICAgICAgd2hpbGUgKGNvbXBhcmUoeWMsIHJlbSwgeUwsIHJlbUwpIDwgMSkge1xyXG4gICAgICAgICAgICAgICAgICBuKys7XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBTdWJ0cmFjdCBkaXZpc29yIGZyb20gcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgICAgICBzdWJ0cmFjdChyZW0sIHlMIDwgcmVtTCA/IHl6IDogeWMsIHJlbUwsIGJhc2UpO1xyXG4gICAgICAgICAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY21wID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgbisrO1xyXG4gICAgICAgICAgICAgIHJlbSA9IFswXTtcclxuICAgICAgICAgICAgfSAvLyBlbHNlIGNtcCA9PT0gMSBhbmQgbiB3aWxsIGJlIDBcclxuXHJcbiAgICAgICAgICAgIC8vIEFkZCB0aGUgbmV4dCBkaWdpdCwgbiwgdG8gdGhlIHJlc3VsdCBhcnJheS5cclxuICAgICAgICAgICAgcWNbaSsrXSA9IG47XHJcblxyXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgaWYgKHJlbVswXSkge1xyXG4gICAgICAgICAgICAgIHJlbVtyZW1MKytdID0geGNbeGldIHx8IDA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVtID0gW3hjW3hpXV07XHJcbiAgICAgICAgICAgICAgcmVtTCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gd2hpbGUgKCh4aSsrIDwgeEwgfHwgcmVtWzBdICE9IG51bGwpICYmIHMtLSk7XHJcblxyXG4gICAgICAgICAgbW9yZSA9IHJlbVswXSAhPSBudWxsO1xyXG5cclxuICAgICAgICAgIC8vIExlYWRpbmcgemVybz9cclxuICAgICAgICAgIGlmICghcWNbMF0pIHFjLnNwbGljZSgwLCAxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChiYXNlID09IEJBU0UpIHtcclxuXHJcbiAgICAgICAgICAvLyBUbyBjYWxjdWxhdGUgcS5lLCBmaXJzdCBnZXQgdGhlIG51bWJlciBvZiBkaWdpdHMgb2YgcWNbMF0uXHJcbiAgICAgICAgICBmb3IgKGkgPSAxLCBzID0gcWNbMF07IHMgPj0gMTA7IHMgLz0gMTAsIGkrKyk7XHJcblxyXG4gICAgICAgICAgcm91bmQocSwgZHAgKyAocS5lID0gaSArIGUgKiBMT0dfQkFTRSAtIDEpICsgMSwgcm0sIG1vcmUpO1xyXG5cclxuICAgICAgICAvLyBDYWxsZXIgaXMgY29udmVydEJhc2UuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHEuZSA9IGU7XHJcbiAgICAgICAgICBxLnIgPSArbW9yZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBxO1xyXG4gICAgICB9O1xyXG4gICAgfSkoKTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIEJpZ051bWJlciBuIGluIGZpeGVkLXBvaW50IG9yIGV4cG9uZW50aWFsXHJcbiAgICAgKiBub3RhdGlvbiByb3VuZGVkIHRvIHRoZSBzcGVjaWZpZWQgZGVjaW1hbCBwbGFjZXMgb3Igc2lnbmlmaWNhbnQgZGlnaXRzLlxyXG4gICAgICpcclxuICAgICAqIG46IGEgQmlnTnVtYmVyLlxyXG4gICAgICogaTogdGhlIGluZGV4IG9mIHRoZSBsYXN0IGRpZ2l0IHJlcXVpcmVkIChpLmUuIHRoZSBkaWdpdCB0aGF0IG1heSBiZSByb3VuZGVkIHVwKS5cclxuICAgICAqIHJtOiB0aGUgcm91bmRpbmcgbW9kZS5cclxuICAgICAqIGlkOiAxICh0b0V4cG9uZW50aWFsKSBvciAyICh0b1ByZWNpc2lvbikuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGZvcm1hdChuLCBpLCBybSwgaWQpIHtcclxuICAgICAgdmFyIGMwLCBlLCBuZSwgbGVuLCBzdHI7XHJcblxyXG4gICAgICBpZiAocm0gPT0gbnVsbCkgcm0gPSBST1VORElOR19NT0RFO1xyXG4gICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuXHJcbiAgICAgIGlmICghbi5jKSByZXR1cm4gbi50b1N0cmluZygpO1xyXG5cclxuICAgICAgYzAgPSBuLmNbMF07XHJcbiAgICAgIG5lID0gbi5lO1xyXG5cclxuICAgICAgaWYgKGkgPT0gbnVsbCkge1xyXG4gICAgICAgIHN0ciA9IGNvZWZmVG9TdHJpbmcobi5jKTtcclxuICAgICAgICBzdHIgPSBpZCA9PSAxIHx8IGlkID09IDIgJiYgKG5lIDw9IFRPX0VYUF9ORUcgfHwgbmUgPj0gVE9fRVhQX1BPUylcclxuICAgICAgICAgPyB0b0V4cG9uZW50aWFsKHN0ciwgbmUpXHJcbiAgICAgICAgIDogdG9GaXhlZFBvaW50KHN0ciwgbmUsICcwJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbiA9IHJvdW5kKG5ldyBCaWdOdW1iZXIobiksIGksIHJtKTtcclxuXHJcbiAgICAgICAgLy8gbi5lIG1heSBoYXZlIGNoYW5nZWQgaWYgdGhlIHZhbHVlIHdhcyByb3VuZGVkIHVwLlxyXG4gICAgICAgIGUgPSBuLmU7XHJcblxyXG4gICAgICAgIHN0ciA9IGNvZWZmVG9TdHJpbmcobi5jKTtcclxuICAgICAgICBsZW4gPSBzdHIubGVuZ3RoO1xyXG5cclxuICAgICAgICAvLyB0b1ByZWNpc2lvbiByZXR1cm5zIGV4cG9uZW50aWFsIG5vdGF0aW9uIGlmIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzXHJcbiAgICAgICAgLy8gc3BlY2lmaWVkIGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBuZWNlc3NhcnkgdG8gcmVwcmVzZW50IHRoZSBpbnRlZ2VyXHJcbiAgICAgICAgLy8gcGFydCBvZiB0aGUgdmFsdWUgaW4gZml4ZWQtcG9pbnQgbm90YXRpb24uXHJcblxyXG4gICAgICAgIC8vIEV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICAgIGlmIChpZCA9PSAxIHx8IGlkID09IDIgJiYgKGkgPD0gZSB8fCBlIDw9IFRPX0VYUF9ORUcpKSB7XHJcblxyXG4gICAgICAgICAgLy8gQXBwZW5kIHplcm9zP1xyXG4gICAgICAgICAgZm9yICg7IGxlbiA8IGk7IHN0ciArPSAnMCcsIGxlbisrKTtcclxuICAgICAgICAgIHN0ciA9IHRvRXhwb25lbnRpYWwoc3RyLCBlKTtcclxuXHJcbiAgICAgICAgLy8gRml4ZWQtcG9pbnQgbm90YXRpb24uXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGkgLT0gbmU7XHJcbiAgICAgICAgICBzdHIgPSB0b0ZpeGVkUG9pbnQoc3RyLCBlLCAnMCcpO1xyXG5cclxuICAgICAgICAgIC8vIEFwcGVuZCB6ZXJvcz9cclxuICAgICAgICAgIGlmIChlICsgMSA+IGxlbikge1xyXG4gICAgICAgICAgICBpZiAoLS1pID4gMCkgZm9yIChzdHIgKz0gJy4nOyBpLS07IHN0ciArPSAnMCcpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaSArPSBlIC0gbGVuO1xyXG4gICAgICAgICAgICBpZiAoaSA+IDApIHtcclxuICAgICAgICAgICAgICBpZiAoZSArIDEgPT0gbGVuKSBzdHIgKz0gJy4nO1xyXG4gICAgICAgICAgICAgIGZvciAoOyBpLS07IHN0ciArPSAnMCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbi5zIDwgMCAmJiBjMCA/ICctJyArIHN0ciA6IHN0cjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gSGFuZGxlIEJpZ051bWJlci5tYXggYW5kIEJpZ051bWJlci5taW4uXHJcbiAgICBmdW5jdGlvbiBtYXhPck1pbihhcmdzLCBtZXRob2QpIHtcclxuICAgICAgdmFyIG4sXHJcbiAgICAgICAgaSA9IDEsXHJcbiAgICAgICAgbSA9IG5ldyBCaWdOdW1iZXIoYXJnc1swXSk7XHJcblxyXG4gICAgICBmb3IgKDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBuID0gbmV3IEJpZ051bWJlcihhcmdzW2ldKTtcclxuXHJcbiAgICAgICAgLy8gSWYgYW55IG51bWJlciBpcyBOYU4sIHJldHVybiBOYU4uXHJcbiAgICAgICAgaWYgKCFuLnMpIHtcclxuICAgICAgICAgIG0gPSBuO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIGlmIChtZXRob2QuY2FsbChtLCBuKSkge1xyXG4gICAgICAgICAgbSA9IG47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFN0cmlwIHRyYWlsaW5nIHplcm9zLCBjYWxjdWxhdGUgYmFzZSAxMCBleHBvbmVudCBhbmQgY2hlY2sgYWdhaW5zdCBNSU5fRVhQIGFuZCBNQVhfRVhQLlxyXG4gICAgICogQ2FsbGVkIGJ5IG1pbnVzLCBwbHVzIGFuZCB0aW1lcy5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gbm9ybWFsaXNlKG4sIGMsIGUpIHtcclxuICAgICAgdmFyIGkgPSAxLFxyXG4gICAgICAgIGogPSBjLmxlbmd0aDtcclxuXHJcbiAgICAgICAvLyBSZW1vdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgIGZvciAoOyAhY1stLWpdOyBjLnBvcCgpKTtcclxuXHJcbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYmFzZSAxMCBleHBvbmVudC4gRmlyc3QgZ2V0IHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIGNbMF0uXHJcbiAgICAgIGZvciAoaiA9IGNbMF07IGogPj0gMTA7IGogLz0gMTAsIGkrKyk7XHJcblxyXG4gICAgICAvLyBPdmVyZmxvdz9cclxuICAgICAgaWYgKChlID0gaSArIGUgKiBMT0dfQkFTRSAtIDEpID4gTUFYX0VYUCkge1xyXG5cclxuICAgICAgICAvLyBJbmZpbml0eS5cclxuICAgICAgICBuLmMgPSBuLmUgPSBudWxsO1xyXG5cclxuICAgICAgLy8gVW5kZXJmbG93P1xyXG4gICAgICB9IGVsc2UgaWYgKGUgPCBNSU5fRVhQKSB7XHJcblxyXG4gICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgbi5jID0gW24uZSA9IDBdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG4uZSA9IGU7XHJcbiAgICAgICAgbi5jID0gYztcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG47XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIEhhbmRsZSB2YWx1ZXMgdGhhdCBmYWlsIHRoZSB2YWxpZGl0eSB0ZXN0IGluIEJpZ051bWJlci5cclxuICAgIHBhcnNlTnVtZXJpYyA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBiYXNlUHJlZml4ID0gL14oLT8pMChbeGJvXSkoPz1cXHdbXFx3Ll0qJCkvaSxcclxuICAgICAgICBkb3RBZnRlciA9IC9eKFteLl0rKVxcLiQvLFxyXG4gICAgICAgIGRvdEJlZm9yZSA9IC9eXFwuKFteLl0rKSQvLFxyXG4gICAgICAgIGlzSW5maW5pdHlPck5hTiA9IC9eLT8oSW5maW5pdHl8TmFOKSQvLFxyXG4gICAgICAgIHdoaXRlc3BhY2VPclBsdXMgPSAvXlxccypcXCsoPz1bXFx3Ll0pfF5cXHMrfFxccyskL2c7XHJcblxyXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHgsIHN0ciwgaXNOdW0sIGIpIHtcclxuICAgICAgICB2YXIgYmFzZSxcclxuICAgICAgICAgIHMgPSBpc051bSA/IHN0ciA6IHN0ci5yZXBsYWNlKHdoaXRlc3BhY2VPclBsdXMsICcnKTtcclxuXHJcbiAgICAgICAgLy8gTm8gZXhjZXB0aW9uIG9uIMKxSW5maW5pdHkgb3IgTmFOLlxyXG4gICAgICAgIGlmIChpc0luZmluaXR5T3JOYU4udGVzdChzKSkge1xyXG4gICAgICAgICAgeC5zID0gaXNOYU4ocykgPyBudWxsIDogcyA8IDAgPyAtMSA6IDE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICghaXNOdW0pIHtcclxuXHJcbiAgICAgICAgICAgIC8vIGJhc2VQcmVmaXggPSAvXigtPykwKFt4Ym9dKSg/PVxcd1tcXHcuXSokKS9pXHJcbiAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoYmFzZVByZWZpeCwgZnVuY3Rpb24gKG0sIHAxLCBwMikge1xyXG4gICAgICAgICAgICAgIGJhc2UgPSAocDIgPSBwMi50b0xvd2VyQ2FzZSgpKSA9PSAneCcgPyAxNiA6IHAyID09ICdiJyA/IDIgOiA4O1xyXG4gICAgICAgICAgICAgIHJldHVybiAhYiB8fCBiID09IGJhc2UgPyBwMSA6IG07XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKGIpIHtcclxuICAgICAgICAgICAgICBiYXNlID0gYjtcclxuXHJcbiAgICAgICAgICAgICAgLy8gRS5nLiAnMS4nIHRvICcxJywgJy4xJyB0byAnMC4xJ1xyXG4gICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoZG90QWZ0ZXIsICckMScpLnJlcGxhY2UoZG90QmVmb3JlLCAnMC4kMScpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoc3RyICE9IHMpIHJldHVybiBuZXcgQmlnTnVtYmVyKHMsIGJhc2UpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBOb3QgYSBudW1iZXI6IHtufSdcclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBOb3QgYSBiYXNlIHtifSBudW1iZXI6IHtufSdcclxuICAgICAgICAgIGlmIChCaWdOdW1iZXIuREVCVUcpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnTm90IGEnICsgKGIgPyAnIGJhc2UgJyArIGIgOiAnJykgKyAnIG51bWJlcjogJyArIHN0cik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gTmFOXHJcbiAgICAgICAgICB4LnMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgeC5jID0geC5lID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSkoKTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJvdW5kIHggdG8gc2Qgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0uIENoZWNrIGZvciBvdmVyL3VuZGVyLWZsb3cuXHJcbiAgICAgKiBJZiByIGlzIHRydXRoeSwgaXQgaXMga25vd24gdGhhdCB0aGVyZSBhcmUgbW9yZSBkaWdpdHMgYWZ0ZXIgdGhlIHJvdW5kaW5nIGRpZ2l0LlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiByb3VuZCh4LCBzZCwgcm0sIHIpIHtcclxuICAgICAgdmFyIGQsIGksIGosIGssIG4sIG5pLCByZCxcclxuICAgICAgICB4YyA9IHguYyxcclxuICAgICAgICBwb3dzMTAgPSBQT1dTX1RFTjtcclxuXHJcbiAgICAgIC8vIGlmIHggaXMgbm90IEluZmluaXR5IG9yIE5hTi4uLlxyXG4gICAgICBpZiAoeGMpIHtcclxuXHJcbiAgICAgICAgLy8gcmQgaXMgdGhlIHJvdW5kaW5nIGRpZ2l0LCBpLmUuIHRoZSBkaWdpdCBhZnRlciB0aGUgZGlnaXQgdGhhdCBtYXkgYmUgcm91bmRlZCB1cC5cclxuICAgICAgICAvLyBuIGlzIGEgYmFzZSAxZTE0IG51bWJlciwgdGhlIHZhbHVlIG9mIHRoZSBlbGVtZW50IG9mIGFycmF5IHguYyBjb250YWluaW5nIHJkLlxyXG4gICAgICAgIC8vIG5pIGlzIHRoZSBpbmRleCBvZiBuIHdpdGhpbiB4LmMuXHJcbiAgICAgICAgLy8gZCBpcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBuLlxyXG4gICAgICAgIC8vIGkgaXMgdGhlIGluZGV4IG9mIHJkIHdpdGhpbiBuIGluY2x1ZGluZyBsZWFkaW5nIHplcm9zLlxyXG4gICAgICAgIC8vIGogaXMgdGhlIGFjdHVhbCBpbmRleCBvZiByZCB3aXRoaW4gbiAoaWYgPCAwLCByZCBpcyBhIGxlYWRpbmcgemVybykuXHJcbiAgICAgICAgb3V0OiB7XHJcblxyXG4gICAgICAgICAgLy8gR2V0IHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIHRoZSBmaXJzdCBlbGVtZW50IG9mIHhjLlxyXG4gICAgICAgICAgZm9yIChkID0gMSwgayA9IHhjWzBdOyBrID49IDEwOyBrIC89IDEwLCBkKyspO1xyXG4gICAgICAgICAgaSA9IHNkIC0gZDtcclxuXHJcbiAgICAgICAgICAvLyBJZiB0aGUgcm91bmRpbmcgZGlnaXQgaXMgaW4gdGhlIGZpcnN0IGVsZW1lbnQgb2YgeGMuLi5cclxuICAgICAgICAgIGlmIChpIDwgMCkge1xyXG4gICAgICAgICAgICBpICs9IExPR19CQVNFO1xyXG4gICAgICAgICAgICBqID0gc2Q7XHJcbiAgICAgICAgICAgIG4gPSB4Y1tuaSA9IDBdO1xyXG5cclxuICAgICAgICAgICAgLy8gR2V0IHRoZSByb3VuZGluZyBkaWdpdCBhdCBpbmRleCBqIG9mIG4uXHJcbiAgICAgICAgICAgIHJkID0gbiAvIHBvd3MxMFtkIC0gaiAtIDFdICUgMTAgfCAwO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbmkgPSBtYXRoY2VpbCgoaSArIDEpIC8gTE9HX0JBU0UpO1xyXG5cclxuICAgICAgICAgICAgaWYgKG5pID49IHhjLmxlbmd0aCkge1xyXG5cclxuICAgICAgICAgICAgICBpZiAocikge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIE5lZWRlZCBieSBzcXJ0LlxyXG4gICAgICAgICAgICAgICAgZm9yICg7IHhjLmxlbmd0aCA8PSBuaTsgeGMucHVzaCgwKSk7XHJcbiAgICAgICAgICAgICAgICBuID0gcmQgPSAwO1xyXG4gICAgICAgICAgICAgICAgZCA9IDE7XHJcbiAgICAgICAgICAgICAgICBpICU9IExPR19CQVNFO1xyXG4gICAgICAgICAgICAgICAgaiA9IGkgLSBMT0dfQkFTRSArIDE7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrIG91dDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbiA9IGsgPSB4Y1tuaV07XHJcblxyXG4gICAgICAgICAgICAgIC8vIEdldCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBuLlxyXG4gICAgICAgICAgICAgIGZvciAoZCA9IDE7IGsgPj0gMTA7IGsgLz0gMTAsIGQrKyk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIEdldCB0aGUgaW5kZXggb2YgcmQgd2l0aGluIG4uXHJcbiAgICAgICAgICAgICAgaSAlPSBMT0dfQkFTRTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gR2V0IHRoZSBpbmRleCBvZiByZCB3aXRoaW4gbiwgYWRqdXN0ZWQgZm9yIGxlYWRpbmcgemVyb3MuXHJcbiAgICAgICAgICAgICAgLy8gVGhlIG51bWJlciBvZiBsZWFkaW5nIHplcm9zIG9mIG4gaXMgZ2l2ZW4gYnkgTE9HX0JBU0UgLSBkLlxyXG4gICAgICAgICAgICAgIGogPSBpIC0gTE9HX0JBU0UgKyBkO1xyXG5cclxuICAgICAgICAgICAgICAvLyBHZXQgdGhlIHJvdW5kaW5nIGRpZ2l0IGF0IGluZGV4IGogb2Ygbi5cclxuICAgICAgICAgICAgICByZCA9IGogPCAwID8gMCA6IG4gLyBwb3dzMTBbZCAtIGogLSAxXSAlIDEwIHwgMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHIgPSByIHx8IHNkIDwgMCB8fFxyXG5cclxuICAgICAgICAgIC8vIEFyZSB0aGVyZSBhbnkgbm9uLXplcm8gZGlnaXRzIGFmdGVyIHRoZSByb3VuZGluZyBkaWdpdD9cclxuICAgICAgICAgIC8vIFRoZSBleHByZXNzaW9uICBuICUgcG93czEwW2QgLSBqIC0gMV0gIHJldHVybnMgYWxsIGRpZ2l0cyBvZiBuIHRvIHRoZSByaWdodFxyXG4gICAgICAgICAgLy8gb2YgdGhlIGRpZ2l0IGF0IGosIGUuZy4gaWYgbiBpcyA5MDg3MTQgYW5kIGogaXMgMiwgdGhlIGV4cHJlc3Npb24gZ2l2ZXMgNzE0LlxyXG4gICAgICAgICAgIHhjW25pICsgMV0gIT0gbnVsbCB8fCAoaiA8IDAgPyBuIDogbiAlIHBvd3MxMFtkIC0gaiAtIDFdKTtcclxuXHJcbiAgICAgICAgICByID0gcm0gPCA0XHJcbiAgICAgICAgICAgPyAocmQgfHwgcikgJiYgKHJtID09IDAgfHwgcm0gPT0gKHgucyA8IDAgPyAzIDogMikpXHJcbiAgICAgICAgICAgOiByZCA+IDUgfHwgcmQgPT0gNSAmJiAocm0gPT0gNCB8fCByIHx8IHJtID09IDYgJiZcclxuXHJcbiAgICAgICAgICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIGRpZ2l0IHRvIHRoZSBsZWZ0IG9mIHRoZSByb3VuZGluZyBkaWdpdCBpcyBvZGQuXHJcbiAgICAgICAgICAgICgoaSA+IDAgPyBqID4gMCA/IG4gLyBwb3dzMTBbZCAtIGpdIDogMCA6IHhjW25pIC0gMV0pICUgMTApICYgMSB8fFxyXG4gICAgICAgICAgICAgcm0gPT0gKHgucyA8IDAgPyA4IDogNykpO1xyXG5cclxuICAgICAgICAgIGlmIChzZCA8IDEgfHwgIXhjWzBdKSB7XHJcbiAgICAgICAgICAgIHhjLmxlbmd0aCA9IDA7XHJcblxyXG4gICAgICAgICAgICBpZiAocikge1xyXG5cclxuICAgICAgICAgICAgICAvLyBDb252ZXJ0IHNkIHRvIGRlY2ltYWwgcGxhY2VzLlxyXG4gICAgICAgICAgICAgIHNkIC09IHguZSArIDE7XHJcblxyXG4gICAgICAgICAgICAgIC8vIDEsIDAuMSwgMC4wMSwgMC4wMDEsIDAuMDAwMSBldGMuXHJcbiAgICAgICAgICAgICAgeGNbMF0gPSBwb3dzMTBbKExPR19CQVNFIC0gc2QgJSBMT0dfQkFTRSkgJSBMT0dfQkFTRV07XHJcbiAgICAgICAgICAgICAgeC5lID0gLXNkIHx8IDA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgICAgICAgeGNbMF0gPSB4LmUgPSAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4geDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBSZW1vdmUgZXhjZXNzIGRpZ2l0cy5cclxuICAgICAgICAgIGlmIChpID09IDApIHtcclxuICAgICAgICAgICAgeGMubGVuZ3RoID0gbmk7XHJcbiAgICAgICAgICAgIGsgPSAxO1xyXG4gICAgICAgICAgICBuaS0tO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgeGMubGVuZ3RoID0gbmkgKyAxO1xyXG4gICAgICAgICAgICBrID0gcG93czEwW0xPR19CQVNFIC0gaV07XHJcblxyXG4gICAgICAgICAgICAvLyBFLmcuIDU2NzAwIGJlY29tZXMgNTYwMDAgaWYgNyBpcyB0aGUgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgICAgICAgIC8vIGogPiAwIG1lYW5zIGkgPiBudW1iZXIgb2YgbGVhZGluZyB6ZXJvcyBvZiBuLlxyXG4gICAgICAgICAgICB4Y1tuaV0gPSBqID4gMCA/IG1hdGhmbG9vcihuIC8gcG93czEwW2QgLSBqXSAlIHBvd3MxMFtqXSkgKiBrIDogMDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBSb3VuZCB1cD9cclxuICAgICAgICAgIGlmIChyKSB7XHJcblxyXG4gICAgICAgICAgICBmb3IgKDsgOykge1xyXG5cclxuICAgICAgICAgICAgICAvLyBJZiB0aGUgZGlnaXQgdG8gYmUgcm91bmRlZCB1cCBpcyBpbiB0aGUgZmlyc3QgZWxlbWVudCBvZiB4Yy4uLlxyXG4gICAgICAgICAgICAgIGlmIChuaSA9PSAwKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gaSB3aWxsIGJlIHRoZSBsZW5ndGggb2YgeGNbMF0gYmVmb3JlIGsgaXMgYWRkZWQuXHJcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAxLCBqID0geGNbMF07IGogPj0gMTA7IGogLz0gMTAsIGkrKyk7XHJcbiAgICAgICAgICAgICAgICBqID0geGNbMF0gKz0gaztcclxuICAgICAgICAgICAgICAgIGZvciAoayA9IDE7IGogPj0gMTA7IGogLz0gMTAsIGsrKyk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gaWYgaSAhPSBrIHRoZSBsZW5ndGggaGFzIGluY3JlYXNlZC5cclxuICAgICAgICAgICAgICAgIGlmIChpICE9IGspIHtcclxuICAgICAgICAgICAgICAgICAgeC5lKys7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh4Y1swXSA9PSBCQVNFKSB4Y1swXSA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHhjW25pXSArPSBrO1xyXG4gICAgICAgICAgICAgICAgaWYgKHhjW25pXSAhPSBCQVNFKSBicmVhaztcclxuICAgICAgICAgICAgICAgIHhjW25pLS1dID0gMDtcclxuICAgICAgICAgICAgICAgIGsgPSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJlbW92ZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgICAgIGZvciAoaSA9IHhjLmxlbmd0aDsgeGNbLS1pXSA9PT0gMDsgeGMucG9wKCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gT3ZlcmZsb3c/IEluZmluaXR5LlxyXG4gICAgICAgIGlmICh4LmUgPiBNQVhfRVhQKSB7XHJcbiAgICAgICAgICB4LmMgPSB4LmUgPSBudWxsO1xyXG5cclxuICAgICAgICAvLyBVbmRlcmZsb3c/IFplcm8uXHJcbiAgICAgICAgfSBlbHNlIGlmICh4LmUgPCBNSU5fRVhQKSB7XHJcbiAgICAgICAgICB4LmMgPSBbeC5lID0gMF07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4geDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gdmFsdWVPZihuKSB7XHJcbiAgICAgIHZhciBzdHIsXHJcbiAgICAgICAgZSA9IG4uZTtcclxuXHJcbiAgICAgIGlmIChlID09PSBudWxsKSByZXR1cm4gbi50b1N0cmluZygpO1xyXG5cclxuICAgICAgc3RyID0gY29lZmZUb1N0cmluZyhuLmMpO1xyXG5cclxuICAgICAgc3RyID0gZSA8PSBUT19FWFBfTkVHIHx8IGUgPj0gVE9fRVhQX1BPU1xyXG4gICAgICAgID8gdG9FeHBvbmVudGlhbChzdHIsIGUpXHJcbiAgICAgICAgOiB0b0ZpeGVkUG9pbnQoc3RyLCBlLCAnMCcpO1xyXG5cclxuICAgICAgcmV0dXJuIG4ucyA8IDAgPyAnLScgKyBzdHIgOiBzdHI7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIFBST1RPVFlQRS9JTlNUQU5DRSBNRVRIT0RTXHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlci5cclxuICAgICAqL1xyXG4gICAgUC5hYnNvbHV0ZVZhbHVlID0gUC5hYnMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciB4ID0gbmV3IEJpZ051bWJlcih0aGlzKTtcclxuICAgICAgaWYgKHgucyA8IDApIHgucyA9IDE7XHJcbiAgICAgIHJldHVybiB4O1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVyblxyXG4gICAgICogICAxIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBncmVhdGVyIHRoYW4gdGhlIHZhbHVlIG9mIEJpZ051bWJlcih5LCBiKSxcclxuICAgICAqICAgLTEgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyKHksIGIpLFxyXG4gICAgICogICAwIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSB2YWx1ZSxcclxuICAgICAqICAgb3IgbnVsbCBpZiB0aGUgdmFsdWUgb2YgZWl0aGVyIGlzIE5hTi5cclxuICAgICAqL1xyXG4gICAgUC5jb21wYXJlZFRvID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogSWYgZHAgaXMgdW5kZWZpbmVkIG9yIG51bGwgb3IgdHJ1ZSBvciBmYWxzZSwgcmV0dXJuIHRoZSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgb2YgdGhlXHJcbiAgICAgKiB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciwgb3IgbnVsbCBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgwrFJbmZpbml0eSBvciBOYU4uXHJcbiAgICAgKlxyXG4gICAgICogT3RoZXJ3aXNlLCBpZiBkcCBpcyBhIG51bWJlciwgcmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpc1xyXG4gICAgICogQmlnTnVtYmVyIHJvdW5kZWQgdG8gYSBtYXhpbXVtIG9mIGRwIGRlY2ltYWwgcGxhY2VzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0sIG9yXHJcbiAgICAgKiBST1VORElOR19NT0RFIGlmIHJtIGlzIG9taXR0ZWQuXHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlczogaW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB8cm19J1xyXG4gICAgICovXHJcbiAgICBQLmRlY2ltYWxQbGFjZXMgPSBQLmRwID0gZnVuY3Rpb24gKGRwLCBybSkge1xyXG4gICAgICB2YXIgYywgbiwgdixcclxuICAgICAgICB4ID0gdGhpcztcclxuXHJcbiAgICAgIGlmIChkcCAhPSBudWxsKSB7XHJcbiAgICAgICAgaW50Q2hlY2soZHAsIDAsIE1BWCk7XHJcbiAgICAgICAgaWYgKHJtID09IG51bGwpIHJtID0gUk9VTkRJTkdfTU9ERTtcclxuICAgICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJvdW5kKG5ldyBCaWdOdW1iZXIoeCksIGRwICsgeC5lICsgMSwgcm0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIShjID0geC5jKSkgcmV0dXJuIG51bGw7XHJcbiAgICAgIG4gPSAoKHYgPSBjLmxlbmd0aCAtIDEpIC0gYml0Rmxvb3IodGhpcy5lIC8gTE9HX0JBU0UpKSAqIExPR19CQVNFO1xyXG5cclxuICAgICAgLy8gU3VidHJhY3QgdGhlIG51bWJlciBvZiB0cmFpbGluZyB6ZXJvcyBvZiB0aGUgbGFzdCBudW1iZXIuXHJcbiAgICAgIGlmICh2ID0gY1t2XSkgZm9yICg7IHYgJSAxMCA9PSAwOyB2IC89IDEwLCBuLS0pO1xyXG4gICAgICBpZiAobiA8IDApIG4gPSAwO1xyXG5cclxuICAgICAgcmV0dXJuIG47XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIG4gLyAwID0gSVxyXG4gICAgICogIG4gLyBOID0gTlxyXG4gICAgICogIG4gLyBJID0gMFxyXG4gICAgICogIDAgLyBuID0gMFxyXG4gICAgICogIDAgLyAwID0gTlxyXG4gICAgICogIDAgLyBOID0gTlxyXG4gICAgICogIDAgLyBJID0gMFxyXG4gICAgICogIE4gLyBuID0gTlxyXG4gICAgICogIE4gLyAwID0gTlxyXG4gICAgICogIE4gLyBOID0gTlxyXG4gICAgICogIE4gLyBJID0gTlxyXG4gICAgICogIEkgLyBuID0gSVxyXG4gICAgICogIEkgLyAwID0gSVxyXG4gICAgICogIEkgLyBOID0gTlxyXG4gICAgICogIEkgLyBJID0gTlxyXG4gICAgICpcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGRpdmlkZWQgYnkgdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYiksIHJvdW5kZWQgYWNjb3JkaW5nIHRvIERFQ0lNQUxfUExBQ0VTIGFuZCBST1VORElOR19NT0RFLlxyXG4gICAgICovXHJcbiAgICBQLmRpdmlkZWRCeSA9IFAuZGl2ID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGRpdih0aGlzLCBuZXcgQmlnTnVtYmVyKHksIGIpLCBERUNJTUFMX1BMQUNFUywgUk9VTkRJTkdfTU9ERSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgaW50ZWdlciBwYXJ0IG9mIGRpdmlkaW5nIHRoZSB2YWx1ZSBvZiB0aGlzXHJcbiAgICAgKiBCaWdOdW1iZXIgYnkgdGhlIHZhbHVlIG9mIEJpZ051bWJlcih5LCBiKS5cclxuICAgICAqL1xyXG4gICAgUC5kaXZpZGVkVG9JbnRlZ2VyQnkgPSBQLmlkaXYgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICByZXR1cm4gZGl2KHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYiksIDAsIDEpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgZXhwb25lbnRpYXRlZCBieSBuLlxyXG4gICAgICpcclxuICAgICAqIElmIG0gaXMgcHJlc2VudCwgcmV0dXJuIHRoZSByZXN1bHQgbW9kdWxvIG0uXHJcbiAgICAgKiBJZiBuIGlzIG5lZ2F0aXZlIHJvdW5kIGFjY29yZGluZyB0byBERUNJTUFMX1BMQUNFUyBhbmQgUk9VTkRJTkdfTU9ERS5cclxuICAgICAqIElmIFBPV19QUkVDSVNJT04gaXMgbm9uLXplcm8gYW5kIG0gaXMgbm90IHByZXNlbnQsIHJvdW5kIHRvIFBPV19QUkVDSVNJT04gdXNpbmcgUk9VTkRJTkdfTU9ERS5cclxuICAgICAqXHJcbiAgICAgKiBUaGUgbW9kdWxhciBwb3dlciBvcGVyYXRpb24gd29ya3MgZWZmaWNpZW50bHkgd2hlbiB4LCBuLCBhbmQgbSBhcmUgaW50ZWdlcnMsIG90aGVyd2lzZSBpdFxyXG4gICAgICogaXMgZXF1aXZhbGVudCB0byBjYWxjdWxhdGluZyB4LmV4cG9uZW50aWF0ZWRCeShuKS5tb2R1bG8obSkgd2l0aCBhIFBPV19QUkVDSVNJT04gb2YgMC5cclxuICAgICAqXHJcbiAgICAgKiBuIHtudW1iZXJ8c3RyaW5nfEJpZ051bWJlcn0gVGhlIGV4cG9uZW50LiBBbiBpbnRlZ2VyLlxyXG4gICAgICogW21dIHtudW1iZXJ8c3RyaW5nfEJpZ051bWJlcn0gVGhlIG1vZHVsdXMuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEV4cG9uZW50IG5vdCBhbiBpbnRlZ2VyOiB7bn0nXHJcbiAgICAgKi9cclxuICAgIFAuZXhwb25lbnRpYXRlZEJ5ID0gUC5wb3cgPSBmdW5jdGlvbiAobiwgbSkge1xyXG4gICAgICB2YXIgaGFsZiwgaXNNb2RFeHAsIGksIGssIG1vcmUsIG5Jc0JpZywgbklzTmVnLCBuSXNPZGQsIHksXHJcbiAgICAgICAgeCA9IHRoaXM7XHJcblxyXG4gICAgICBuID0gbmV3IEJpZ051bWJlcihuKTtcclxuXHJcbiAgICAgIC8vIEFsbG93IE5hTiBhbmQgwrFJbmZpbml0eSwgYnV0IG5vdCBvdGhlciBub24taW50ZWdlcnMuXHJcbiAgICAgIGlmIChuLmMgJiYgIW4uaXNJbnRlZ2VyKCkpIHtcclxuICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ0V4cG9uZW50IG5vdCBhbiBpbnRlZ2VyOiAnICsgdmFsdWVPZihuKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChtICE9IG51bGwpIG0gPSBuZXcgQmlnTnVtYmVyKG0pO1xyXG5cclxuICAgICAgLy8gRXhwb25lbnQgb2YgTUFYX1NBRkVfSU5URUdFUiBpcyAxNS5cclxuICAgICAgbklzQmlnID0gbi5lID4gMTQ7XHJcblxyXG4gICAgICAvLyBJZiB4IGlzIE5hTiwgwrFJbmZpbml0eSwgwrEwIG9yIMKxMSwgb3IgbiBpcyDCsUluZmluaXR5LCBOYU4gb3IgwrEwLlxyXG4gICAgICBpZiAoIXguYyB8fCAheC5jWzBdIHx8IHguY1swXSA9PSAxICYmICF4LmUgJiYgeC5jLmxlbmd0aCA9PSAxIHx8ICFuLmMgfHwgIW4uY1swXSkge1xyXG5cclxuICAgICAgICAvLyBUaGUgc2lnbiBvZiB0aGUgcmVzdWx0IG9mIHBvdyB3aGVuIHggaXMgbmVnYXRpdmUgZGVwZW5kcyBvbiB0aGUgZXZlbm5lc3Mgb2Ygbi5cclxuICAgICAgICAvLyBJZiArbiBvdmVyZmxvd3MgdG8gwrFJbmZpbml0eSwgdGhlIGV2ZW5uZXNzIG9mIG4gd291bGQgYmUgbm90IGJlIGtub3duLlxyXG4gICAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKE1hdGgucG93KCt2YWx1ZU9mKHgpLCBuSXNCaWcgPyAyIC0gaXNPZGQobikgOiArdmFsdWVPZihuKSkpO1xyXG4gICAgICAgIHJldHVybiBtID8geS5tb2QobSkgOiB5O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBuSXNOZWcgPSBuLnMgPCAwO1xyXG5cclxuICAgICAgaWYgKG0pIHtcclxuXHJcbiAgICAgICAgLy8geCAlIG0gcmV0dXJucyBOYU4gaWYgYWJzKG0pIGlzIHplcm8sIG9yIG0gaXMgTmFOLlxyXG4gICAgICAgIGlmIChtLmMgPyAhbS5jWzBdIDogIW0ucykgcmV0dXJuIG5ldyBCaWdOdW1iZXIoTmFOKTtcclxuXHJcbiAgICAgICAgaXNNb2RFeHAgPSAhbklzTmVnICYmIHguaXNJbnRlZ2VyKCkgJiYgbS5pc0ludGVnZXIoKTtcclxuXHJcbiAgICAgICAgaWYgKGlzTW9kRXhwKSB4ID0geC5tb2QobSk7XHJcblxyXG4gICAgICAvLyBPdmVyZmxvdyB0byDCsUluZmluaXR5OiA+PTIqKjFlMTAgb3IgPj0xLjAwMDAwMjQqKjFlMTUuXHJcbiAgICAgIC8vIFVuZGVyZmxvdyB0byDCsTA6IDw9MC43OSoqMWUxMCBvciA8PTAuOTk5OTk3NSoqMWUxNS5cclxuICAgICAgfSBlbHNlIGlmIChuLmUgPiA5ICYmICh4LmUgPiAwIHx8IHguZSA8IC0xIHx8ICh4LmUgPT0gMFxyXG4gICAgICAgIC8vIFsxLCAyNDAwMDAwMDBdXHJcbiAgICAgICAgPyB4LmNbMF0gPiAxIHx8IG5Jc0JpZyAmJiB4LmNbMV0gPj0gMjRlN1xyXG4gICAgICAgIC8vIFs4MDAwMDAwMDAwMDAwMF0gIFs5OTk5OTc1MDAwMDAwMF1cclxuICAgICAgICA6IHguY1swXSA8IDhlMTMgfHwgbklzQmlnICYmIHguY1swXSA8PSA5OTk5OTc1ZTcpKSkge1xyXG5cclxuICAgICAgICAvLyBJZiB4IGlzIG5lZ2F0aXZlIGFuZCBuIGlzIG9kZCwgayA9IC0wLCBlbHNlIGsgPSAwLlxyXG4gICAgICAgIGsgPSB4LnMgPCAwICYmIGlzT2RkKG4pID8gLTAgOiAwO1xyXG5cclxuICAgICAgICAvLyBJZiB4ID49IDEsIGsgPSDCsUluZmluaXR5LlxyXG4gICAgICAgIGlmICh4LmUgPiAtMSkgayA9IDEgLyBrO1xyXG5cclxuICAgICAgICAvLyBJZiBuIGlzIG5lZ2F0aXZlIHJldHVybiDCsTAsIGVsc2UgcmV0dXJuIMKxSW5maW5pdHkuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdOdW1iZXIobklzTmVnID8gMSAvIGsgOiBrKTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAoUE9XX1BSRUNJU0lPTikge1xyXG5cclxuICAgICAgICAvLyBUcnVuY2F0aW5nIGVhY2ggY29lZmZpY2llbnQgYXJyYXkgdG8gYSBsZW5ndGggb2YgayBhZnRlciBlYWNoIG11bHRpcGxpY2F0aW9uXHJcbiAgICAgICAgLy8gZXF1YXRlcyB0byB0cnVuY2F0aW5nIHNpZ25pZmljYW50IGRpZ2l0cyB0byBQT1dfUFJFQ0lTSU9OICsgWzI4LCA0MV0sXHJcbiAgICAgICAgLy8gaS5lLiB0aGVyZSB3aWxsIGJlIGEgbWluaW11bSBvZiAyOCBndWFyZCBkaWdpdHMgcmV0YWluZWQuXHJcbiAgICAgICAgayA9IG1hdGhjZWlsKFBPV19QUkVDSVNJT04gLyBMT0dfQkFTRSArIDIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAobklzQmlnKSB7XHJcbiAgICAgICAgaGFsZiA9IG5ldyBCaWdOdW1iZXIoMC41KTtcclxuICAgICAgICBpZiAobklzTmVnKSBuLnMgPSAxO1xyXG4gICAgICAgIG5Jc09kZCA9IGlzT2RkKG4pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGkgPSBNYXRoLmFicygrdmFsdWVPZihuKSk7XHJcbiAgICAgICAgbklzT2RkID0gaSAlIDI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKE9ORSk7XHJcblxyXG4gICAgICAvLyBQZXJmb3JtcyA1NCBsb29wIGl0ZXJhdGlvbnMgZm9yIG4gb2YgOTAwNzE5OTI1NDc0MDk5MS5cclxuICAgICAgZm9yICg7IDspIHtcclxuXHJcbiAgICAgICAgaWYgKG5Jc09kZCkge1xyXG4gICAgICAgICAgeSA9IHkudGltZXMoeCk7XHJcbiAgICAgICAgICBpZiAoIXkuYykgYnJlYWs7XHJcblxyXG4gICAgICAgICAgaWYgKGspIHtcclxuICAgICAgICAgICAgaWYgKHkuYy5sZW5ndGggPiBrKSB5LmMubGVuZ3RoID0gaztcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNNb2RFeHApIHtcclxuICAgICAgICAgICAgeSA9IHkubW9kKG0pOyAgICAvL3kgPSB5Lm1pbnVzKGRpdih5LCBtLCAwLCBNT0RVTE9fTU9ERSkudGltZXMobSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGkpIHtcclxuICAgICAgICAgIGkgPSBtYXRoZmxvb3IoaSAvIDIpO1xyXG4gICAgICAgICAgaWYgKGkgPT09IDApIGJyZWFrO1xyXG4gICAgICAgICAgbklzT2RkID0gaSAlIDI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG4gPSBuLnRpbWVzKGhhbGYpO1xyXG4gICAgICAgICAgcm91bmQobiwgbi5lICsgMSwgMSk7XHJcblxyXG4gICAgICAgICAgaWYgKG4uZSA+IDE0KSB7XHJcbiAgICAgICAgICAgIG5Jc09kZCA9IGlzT2RkKG4pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaSA9ICt2YWx1ZU9mKG4pO1xyXG4gICAgICAgICAgICBpZiAoaSA9PT0gMCkgYnJlYWs7XHJcbiAgICAgICAgICAgIG5Jc09kZCA9IGkgJSAyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgeCA9IHgudGltZXMoeCk7XHJcblxyXG4gICAgICAgIGlmIChrKSB7XHJcbiAgICAgICAgICBpZiAoeC5jICYmIHguYy5sZW5ndGggPiBrKSB4LmMubGVuZ3RoID0gaztcclxuICAgICAgICB9IGVsc2UgaWYgKGlzTW9kRXhwKSB7XHJcbiAgICAgICAgICB4ID0geC5tb2QobSk7ICAgIC8veCA9IHgubWludXMoZGl2KHgsIG0sIDAsIE1PRFVMT19NT0RFKS50aW1lcyhtKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNNb2RFeHApIHJldHVybiB5O1xyXG4gICAgICBpZiAobklzTmVnKSB5ID0gT05FLmRpdih5KTtcclxuXHJcbiAgICAgIHJldHVybiBtID8geS5tb2QobSkgOiBrID8gcm91bmQoeSwgUE9XX1BSRUNJU0lPTiwgUk9VTkRJTkdfTU9ERSwgbW9yZSkgOiB5O1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIHJvdW5kZWQgdG8gYW4gaW50ZWdlclxyXG4gICAgICogdXNpbmcgcm91bmRpbmcgbW9kZSBybSwgb3IgUk9VTkRJTkdfTU9ERSBpZiBybSBpcyBvbWl0dGVkLlxyXG4gICAgICpcclxuICAgICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3JtfSdcclxuICAgICAqL1xyXG4gICAgUC5pbnRlZ2VyVmFsdWUgPSBmdW5jdGlvbiAocm0pIHtcclxuICAgICAgdmFyIG4gPSBuZXcgQmlnTnVtYmVyKHRoaXMpO1xyXG4gICAgICBpZiAocm0gPT0gbnVsbCkgcm0gPSBST1VORElOR19NT0RFO1xyXG4gICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuICAgICAgcmV0dXJuIHJvdW5kKG4sIG4uZSArIDEsIHJtKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIEJpZ051bWJlcih5LCBiKSxcclxuICAgICAqIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNFcXVhbFRvID0gUC5lcSA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHJldHVybiBjb21wYXJlKHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYikpID09PSAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBhIGZpbml0ZSBudW1iZXIsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNGaW5pdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiAhIXRoaXMuYztcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgZ3JlYXRlciB0aGFuIHRoZSB2YWx1ZSBvZiBCaWdOdW1iZXIoeSwgYiksXHJcbiAgICAgKiBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICovXHJcbiAgICBQLmlzR3JlYXRlclRoYW4gPSBQLmd0ID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSkgPiAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYiksIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNHcmVhdGVyVGhhbk9yRXF1YWxUbyA9IFAuZ3RlID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIChiID0gY29tcGFyZSh0aGlzLCBuZXcgQmlnTnVtYmVyKHksIGIpKSkgPT09IDEgfHwgYiA9PT0gMDtcclxuXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGFuIGludGVnZXIsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNJbnRlZ2VyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gISF0aGlzLmMgJiYgYml0Rmxvb3IodGhpcy5lIC8gTE9HX0JBU0UpID4gdGhpcy5jLmxlbmd0aCAtIDI7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyKHksIGIpLFxyXG4gICAgICogb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc0xlc3NUaGFuID0gUC5sdCA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHJldHVybiBjb21wYXJlKHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYikpIDwgMDtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZlxyXG4gICAgICogQmlnTnVtYmVyKHksIGIpLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICovXHJcbiAgICBQLmlzTGVzc1RoYW5PckVxdWFsVG8gPSBQLmx0ZSA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHJldHVybiAoYiA9IGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSkpID09PSAtMSB8fCBiID09PSAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBOYU4sIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNOYU4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiAhdGhpcy5zO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBuZWdhdGl2ZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc05lZ2F0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zIDwgMDtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgcG9zaXRpdmUsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNQb3NpdGl2ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucyA+IDA7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIDAgb3IgLTAsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gISF0aGlzLmMgJiYgdGhpcy5jWzBdID09IDA7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIG4gLSAwID0gblxyXG4gICAgICogIG4gLSBOID0gTlxyXG4gICAgICogIG4gLSBJID0gLUlcclxuICAgICAqICAwIC0gbiA9IC1uXHJcbiAgICAgKiAgMCAtIDAgPSAwXHJcbiAgICAgKiAgMCAtIE4gPSBOXHJcbiAgICAgKiAgMCAtIEkgPSAtSVxyXG4gICAgICogIE4gLSBuID0gTlxyXG4gICAgICogIE4gLSAwID0gTlxyXG4gICAgICogIE4gLSBOID0gTlxyXG4gICAgICogIE4gLSBJID0gTlxyXG4gICAgICogIEkgLSBuID0gSVxyXG4gICAgICogIEkgLSAwID0gSVxyXG4gICAgICogIEkgLSBOID0gTlxyXG4gICAgICogIEkgLSBJID0gTlxyXG4gICAgICpcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIG1pbnVzIHRoZSB2YWx1ZSBvZlxyXG4gICAgICogQmlnTnVtYmVyKHksIGIpLlxyXG4gICAgICovXHJcbiAgICBQLm1pbnVzID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgdmFyIGksIGosIHQsIHhMVHksXHJcbiAgICAgICAgeCA9IHRoaXMsXHJcbiAgICAgICAgYSA9IHgucztcclxuXHJcbiAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKHksIGIpO1xyXG4gICAgICBiID0geS5zO1xyXG5cclxuICAgICAgLy8gRWl0aGVyIE5hTj9cclxuICAgICAgaWYgKCFhIHx8ICFiKSByZXR1cm4gbmV3IEJpZ051bWJlcihOYU4pO1xyXG5cclxuICAgICAgLy8gU2lnbnMgZGlmZmVyP1xyXG4gICAgICBpZiAoYSAhPSBiKSB7XHJcbiAgICAgICAgeS5zID0gLWI7XHJcbiAgICAgICAgcmV0dXJuIHgucGx1cyh5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIHhlID0geC5lIC8gTE9HX0JBU0UsXHJcbiAgICAgICAgeWUgPSB5LmUgLyBMT0dfQkFTRSxcclxuICAgICAgICB4YyA9IHguYyxcclxuICAgICAgICB5YyA9IHkuYztcclxuXHJcbiAgICAgIGlmICgheGUgfHwgIXllKSB7XHJcblxyXG4gICAgICAgIC8vIEVpdGhlciBJbmZpbml0eT9cclxuICAgICAgICBpZiAoIXhjIHx8ICF5YykgcmV0dXJuIHhjID8gKHkucyA9IC1iLCB5KSA6IG5ldyBCaWdOdW1iZXIoeWMgPyB4IDogTmFOKTtcclxuXHJcbiAgICAgICAgLy8gRWl0aGVyIHplcm8/XHJcbiAgICAgICAgaWYgKCF4Y1swXSB8fCAheWNbMF0pIHtcclxuXHJcbiAgICAgICAgICAvLyBSZXR1cm4geSBpZiB5IGlzIG5vbi16ZXJvLCB4IGlmIHggaXMgbm9uLXplcm8sIG9yIHplcm8gaWYgYm90aCBhcmUgemVyby5cclxuICAgICAgICAgIHJldHVybiB5Y1swXSA/ICh5LnMgPSAtYiwgeSkgOiBuZXcgQmlnTnVtYmVyKHhjWzBdID8geCA6XHJcblxyXG4gICAgICAgICAgIC8vIElFRUUgNzU0ICgyMDA4KSA2LjM6IG4gLSBuID0gLTAgd2hlbiByb3VuZGluZyB0byAtSW5maW5pdHlcclxuICAgICAgICAgICBST1VORElOR19NT0RFID09IDMgPyAtMCA6IDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgeGUgPSBiaXRGbG9vcih4ZSk7XHJcbiAgICAgIHllID0gYml0Rmxvb3IoeWUpO1xyXG4gICAgICB4YyA9IHhjLnNsaWNlKCk7XHJcblxyXG4gICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggaXMgdGhlIGJpZ2dlciBudW1iZXIuXHJcbiAgICAgIGlmIChhID0geGUgLSB5ZSkge1xyXG5cclxuICAgICAgICBpZiAoeExUeSA9IGEgPCAwKSB7XHJcbiAgICAgICAgICBhID0gLWE7XHJcbiAgICAgICAgICB0ID0geGM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHllID0geGU7XHJcbiAgICAgICAgICB0ID0geWM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0LnJldmVyc2UoKTtcclxuXHJcbiAgICAgICAgLy8gUHJlcGVuZCB6ZXJvcyB0byBlcXVhbGlzZSBleHBvbmVudHMuXHJcbiAgICAgICAgZm9yIChiID0gYTsgYi0tOyB0LnB1c2goMCkpO1xyXG4gICAgICAgIHQucmV2ZXJzZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAvLyBFeHBvbmVudHMgZXF1YWwuIENoZWNrIGRpZ2l0IGJ5IGRpZ2l0LlxyXG4gICAgICAgIGogPSAoeExUeSA9IChhID0geGMubGVuZ3RoKSA8IChiID0geWMubGVuZ3RoKSkgPyBhIDogYjtcclxuXHJcbiAgICAgICAgZm9yIChhID0gYiA9IDA7IGIgPCBqOyBiKyspIHtcclxuXHJcbiAgICAgICAgICBpZiAoeGNbYl0gIT0geWNbYl0pIHtcclxuICAgICAgICAgICAgeExUeSA9IHhjW2JdIDwgeWNbYl07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8geCA8IHk/IFBvaW50IHhjIHRvIHRoZSBhcnJheSBvZiB0aGUgYmlnZ2VyIG51bWJlci5cclxuICAgICAgaWYgKHhMVHkpIHQgPSB4YywgeGMgPSB5YywgeWMgPSB0LCB5LnMgPSAteS5zO1xyXG5cclxuICAgICAgYiA9IChqID0geWMubGVuZ3RoKSAtIChpID0geGMubGVuZ3RoKTtcclxuXHJcbiAgICAgIC8vIEFwcGVuZCB6ZXJvcyB0byB4YyBpZiBzaG9ydGVyLlxyXG4gICAgICAvLyBObyBuZWVkIHRvIGFkZCB6ZXJvcyB0byB5YyBpZiBzaG9ydGVyIGFzIHN1YnRyYWN0IG9ubHkgbmVlZHMgdG8gc3RhcnQgYXQgeWMubGVuZ3RoLlxyXG4gICAgICBpZiAoYiA+IDApIGZvciAoOyBiLS07IHhjW2krK10gPSAwKTtcclxuICAgICAgYiA9IEJBU0UgLSAxO1xyXG5cclxuICAgICAgLy8gU3VidHJhY3QgeWMgZnJvbSB4Yy5cclxuICAgICAgZm9yICg7IGogPiBhOykge1xyXG5cclxuICAgICAgICBpZiAoeGNbLS1qXSA8IHljW2pdKSB7XHJcbiAgICAgICAgICBmb3IgKGkgPSBqOyBpICYmICF4Y1stLWldOyB4Y1tpXSA9IGIpO1xyXG4gICAgICAgICAgLS14Y1tpXTtcclxuICAgICAgICAgIHhjW2pdICs9IEJBU0U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB4Y1tqXSAtPSB5Y1tqXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUmVtb3ZlIGxlYWRpbmcgemVyb3MgYW5kIGFkanVzdCBleHBvbmVudCBhY2NvcmRpbmdseS5cclxuICAgICAgZm9yICg7IHhjWzBdID09IDA7IHhjLnNwbGljZSgwLCAxKSwgLS15ZSk7XHJcblxyXG4gICAgICAvLyBaZXJvP1xyXG4gICAgICBpZiAoIXhjWzBdKSB7XHJcblxyXG4gICAgICAgIC8vIEZvbGxvd2luZyBJRUVFIDc1NCAoMjAwOCkgNi4zLFxyXG4gICAgICAgIC8vIG4gLSBuID0gKzAgIGJ1dCAgbiAtIG4gPSAtMCAgd2hlbiByb3VuZGluZyB0b3dhcmRzIC1JbmZpbml0eS5cclxuICAgICAgICB5LnMgPSBST1VORElOR19NT0RFID09IDMgPyAtMSA6IDE7XHJcbiAgICAgICAgeS5jID0gW3kuZSA9IDBdO1xyXG4gICAgICAgIHJldHVybiB5O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBObyBuZWVkIHRvIGNoZWNrIGZvciBJbmZpbml0eSBhcyAreCAtICt5ICE9IEluZmluaXR5ICYmIC14IC0gLXkgIT0gSW5maW5pdHlcclxuICAgICAgLy8gZm9yIGZpbml0ZSB4IGFuZCB5LlxyXG4gICAgICByZXR1cm4gbm9ybWFsaXNlKHksIHhjLCB5ZSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogICBuICUgMCA9ICBOXHJcbiAgICAgKiAgIG4gJSBOID0gIE5cclxuICAgICAqICAgbiAlIEkgPSAgblxyXG4gICAgICogICAwICUgbiA9ICAwXHJcbiAgICAgKiAgLTAgJSBuID0gLTBcclxuICAgICAqICAgMCAlIDAgPSAgTlxyXG4gICAgICogICAwICUgTiA9ICBOXHJcbiAgICAgKiAgIDAgJSBJID0gIDBcclxuICAgICAqICAgTiAlIG4gPSAgTlxyXG4gICAgICogICBOICUgMCA9ICBOXHJcbiAgICAgKiAgIE4gJSBOID0gIE5cclxuICAgICAqICAgTiAlIEkgPSAgTlxyXG4gICAgICogICBJICUgbiA9ICBOXHJcbiAgICAgKiAgIEkgJSAwID0gIE5cclxuICAgICAqICAgSSAlIE4gPSAgTlxyXG4gICAgICogICBJICUgSSA9ICBOXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgbW9kdWxvIHRoZSB2YWx1ZSBvZlxyXG4gICAgICogQmlnTnVtYmVyKHksIGIpLiBUaGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mIE1PRFVMT19NT0RFLlxyXG4gICAgICovXHJcbiAgICBQLm1vZHVsbyA9IFAubW9kID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgdmFyIHEsIHMsXHJcbiAgICAgICAgeCA9IHRoaXM7XHJcblxyXG4gICAgICB5ID0gbmV3IEJpZ051bWJlcih5LCBiKTtcclxuXHJcbiAgICAgIC8vIFJldHVybiBOYU4gaWYgeCBpcyBJbmZpbml0eSBvciBOYU4sIG9yIHkgaXMgTmFOIG9yIHplcm8uXHJcbiAgICAgIGlmICgheC5jIHx8ICF5LnMgfHwgeS5jICYmICF5LmNbMF0pIHtcclxuICAgICAgICByZXR1cm4gbmV3IEJpZ051bWJlcihOYU4pO1xyXG5cclxuICAgICAgLy8gUmV0dXJuIHggaWYgeSBpcyBJbmZpbml0eSBvciB4IGlzIHplcm8uXHJcbiAgICAgIH0gZWxzZSBpZiAoIXkuYyB8fCB4LmMgJiYgIXguY1swXSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKHgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoTU9EVUxPX01PREUgPT0gOSkge1xyXG5cclxuICAgICAgICAvLyBFdWNsaWRpYW4gZGl2aXNpb246IHEgPSBzaWduKHkpICogZmxvb3IoeCAvIGFicyh5KSlcclxuICAgICAgICAvLyByID0geCAtIHF5ICAgIHdoZXJlICAwIDw9IHIgPCBhYnMoeSlcclxuICAgICAgICBzID0geS5zO1xyXG4gICAgICAgIHkucyA9IDE7XHJcbiAgICAgICAgcSA9IGRpdih4LCB5LCAwLCAzKTtcclxuICAgICAgICB5LnMgPSBzO1xyXG4gICAgICAgIHEucyAqPSBzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHEgPSBkaXYoeCwgeSwgMCwgTU9EVUxPX01PREUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB5ID0geC5taW51cyhxLnRpbWVzKHkpKTtcclxuXHJcbiAgICAgIC8vIFRvIG1hdGNoIEphdmFTY3JpcHQgJSwgZW5zdXJlIHNpZ24gb2YgemVybyBpcyBzaWduIG9mIGRpdmlkZW5kLlxyXG4gICAgICBpZiAoIXkuY1swXSAmJiBNT0RVTE9fTU9ERSA9PSAxKSB5LnMgPSB4LnM7XHJcblxyXG4gICAgICByZXR1cm4geTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiAgbiAqIDAgPSAwXHJcbiAgICAgKiAgbiAqIE4gPSBOXHJcbiAgICAgKiAgbiAqIEkgPSBJXHJcbiAgICAgKiAgMCAqIG4gPSAwXHJcbiAgICAgKiAgMCAqIDAgPSAwXHJcbiAgICAgKiAgMCAqIE4gPSBOXHJcbiAgICAgKiAgMCAqIEkgPSBOXHJcbiAgICAgKiAgTiAqIG4gPSBOXHJcbiAgICAgKiAgTiAqIDAgPSBOXHJcbiAgICAgKiAgTiAqIE4gPSBOXHJcbiAgICAgKiAgTiAqIEkgPSBOXHJcbiAgICAgKiAgSSAqIG4gPSBJXHJcbiAgICAgKiAgSSAqIDAgPSBOXHJcbiAgICAgKiAgSSAqIE4gPSBOXHJcbiAgICAgKiAgSSAqIEkgPSBJXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgbXVsdGlwbGllZCBieSB0aGUgdmFsdWVcclxuICAgICAqIG9mIEJpZ051bWJlcih5LCBiKS5cclxuICAgICAqL1xyXG4gICAgUC5tdWx0aXBsaWVkQnkgPSBQLnRpbWVzID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgdmFyIGMsIGUsIGksIGosIGssIG0sIHhjTCwgeGxvLCB4aGksIHljTCwgeWxvLCB5aGksIHpjLFxyXG4gICAgICAgIGJhc2UsIHNxcnRCYXNlLFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIHhjID0geC5jLFxyXG4gICAgICAgIHljID0gKHkgPSBuZXcgQmlnTnVtYmVyKHksIGIpKS5jO1xyXG5cclxuICAgICAgLy8gRWl0aGVyIE5hTiwgwrFJbmZpbml0eSBvciDCsTA/XHJcbiAgICAgIGlmICgheGMgfHwgIXljIHx8ICF4Y1swXSB8fCAheWNbMF0pIHtcclxuXHJcbiAgICAgICAgLy8gUmV0dXJuIE5hTiBpZiBlaXRoZXIgaXMgTmFOLCBvciBvbmUgaXMgMCBhbmQgdGhlIG90aGVyIGlzIEluZmluaXR5LlxyXG4gICAgICAgIGlmICgheC5zIHx8ICF5LnMgfHwgeGMgJiYgIXhjWzBdICYmICF5YyB8fCB5YyAmJiAheWNbMF0gJiYgIXhjKSB7XHJcbiAgICAgICAgICB5LmMgPSB5LmUgPSB5LnMgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB5LnMgKj0geC5zO1xyXG5cclxuICAgICAgICAgIC8vIFJldHVybiDCsUluZmluaXR5IGlmIGVpdGhlciBpcyDCsUluZmluaXR5LlxyXG4gICAgICAgICAgaWYgKCF4YyB8fCAheWMpIHtcclxuICAgICAgICAgICAgeS5jID0geS5lID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAvLyBSZXR1cm4gwrEwIGlmIGVpdGhlciBpcyDCsTAuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB5LmMgPSBbMF07XHJcbiAgICAgICAgICAgIHkuZSA9IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZSA9IGJpdEZsb29yKHguZSAvIExPR19CQVNFKSArIGJpdEZsb29yKHkuZSAvIExPR19CQVNFKTtcclxuICAgICAgeS5zICo9IHgucztcclxuICAgICAgeGNMID0geGMubGVuZ3RoO1xyXG4gICAgICB5Y0wgPSB5Yy5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBFbnN1cmUgeGMgcG9pbnRzIHRvIGxvbmdlciBhcnJheSBhbmQgeGNMIHRvIGl0cyBsZW5ndGguXHJcbiAgICAgIGlmICh4Y0wgPCB5Y0wpIHpjID0geGMsIHhjID0geWMsIHljID0gemMsIGkgPSB4Y0wsIHhjTCA9IHljTCwgeWNMID0gaTtcclxuXHJcbiAgICAgIC8vIEluaXRpYWxpc2UgdGhlIHJlc3VsdCBhcnJheSB3aXRoIHplcm9zLlxyXG4gICAgICBmb3IgKGkgPSB4Y0wgKyB5Y0wsIHpjID0gW107IGktLTsgemMucHVzaCgwKSk7XHJcblxyXG4gICAgICBiYXNlID0gQkFTRTtcclxuICAgICAgc3FydEJhc2UgPSBTUVJUX0JBU0U7XHJcblxyXG4gICAgICBmb3IgKGkgPSB5Y0w7IC0taSA+PSAwOykge1xyXG4gICAgICAgIGMgPSAwO1xyXG4gICAgICAgIHlsbyA9IHljW2ldICUgc3FydEJhc2U7XHJcbiAgICAgICAgeWhpID0geWNbaV0gLyBzcXJ0QmFzZSB8IDA7XHJcblxyXG4gICAgICAgIGZvciAoayA9IHhjTCwgaiA9IGkgKyBrOyBqID4gaTspIHtcclxuICAgICAgICAgIHhsbyA9IHhjWy0ta10gJSBzcXJ0QmFzZTtcclxuICAgICAgICAgIHhoaSA9IHhjW2tdIC8gc3FydEJhc2UgfCAwO1xyXG4gICAgICAgICAgbSA9IHloaSAqIHhsbyArIHhoaSAqIHlsbztcclxuICAgICAgICAgIHhsbyA9IHlsbyAqIHhsbyArICgobSAlIHNxcnRCYXNlKSAqIHNxcnRCYXNlKSArIHpjW2pdICsgYztcclxuICAgICAgICAgIGMgPSAoeGxvIC8gYmFzZSB8IDApICsgKG0gLyBzcXJ0QmFzZSB8IDApICsgeWhpICogeGhpO1xyXG4gICAgICAgICAgemNbai0tXSA9IHhsbyAlIGJhc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB6Y1tqXSA9IGM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjKSB7XHJcbiAgICAgICAgKytlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHpjLnNwbGljZSgwLCAxKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG5vcm1hbGlzZSh5LCB6YywgZSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgbmVnYXRlZCxcclxuICAgICAqIGkuZS4gbXVsdGlwbGllZCBieSAtMS5cclxuICAgICAqL1xyXG4gICAgUC5uZWdhdGVkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgeCA9IG5ldyBCaWdOdW1iZXIodGhpcyk7XHJcbiAgICAgIHgucyA9IC14LnMgfHwgbnVsbDtcclxuICAgICAgcmV0dXJuIHg7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIG4gKyAwID0gblxyXG4gICAgICogIG4gKyBOID0gTlxyXG4gICAgICogIG4gKyBJID0gSVxyXG4gICAgICogIDAgKyBuID0gblxyXG4gICAgICogIDAgKyAwID0gMFxyXG4gICAgICogIDAgKyBOID0gTlxyXG4gICAgICogIDAgKyBJID0gSVxyXG4gICAgICogIE4gKyBuID0gTlxyXG4gICAgICogIE4gKyAwID0gTlxyXG4gICAgICogIE4gKyBOID0gTlxyXG4gICAgICogIE4gKyBJID0gTlxyXG4gICAgICogIEkgKyBuID0gSVxyXG4gICAgICogIEkgKyAwID0gSVxyXG4gICAgICogIEkgKyBOID0gTlxyXG4gICAgICogIEkgKyBJID0gSVxyXG4gICAgICpcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIHBsdXMgdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYikuXHJcbiAgICAgKi9cclxuICAgIFAucGx1cyA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHZhciB0LFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIGEgPSB4LnM7XHJcblxyXG4gICAgICB5ID0gbmV3IEJpZ051bWJlcih5LCBiKTtcclxuICAgICAgYiA9IHkucztcclxuXHJcbiAgICAgIC8vIEVpdGhlciBOYU4/XHJcbiAgICAgIGlmICghYSB8fCAhYikgcmV0dXJuIG5ldyBCaWdOdW1iZXIoTmFOKTtcclxuXHJcbiAgICAgIC8vIFNpZ25zIGRpZmZlcj9cclxuICAgICAgIGlmIChhICE9IGIpIHtcclxuICAgICAgICB5LnMgPSAtYjtcclxuICAgICAgICByZXR1cm4geC5taW51cyh5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIHhlID0geC5lIC8gTE9HX0JBU0UsXHJcbiAgICAgICAgeWUgPSB5LmUgLyBMT0dfQkFTRSxcclxuICAgICAgICB4YyA9IHguYyxcclxuICAgICAgICB5YyA9IHkuYztcclxuXHJcbiAgICAgIGlmICgheGUgfHwgIXllKSB7XHJcblxyXG4gICAgICAgIC8vIFJldHVybiDCsUluZmluaXR5IGlmIGVpdGhlciDCsUluZmluaXR5LlxyXG4gICAgICAgIGlmICgheGMgfHwgIXljKSByZXR1cm4gbmV3IEJpZ051bWJlcihhIC8gMCk7XHJcblxyXG4gICAgICAgIC8vIEVpdGhlciB6ZXJvP1xyXG4gICAgICAgIC8vIFJldHVybiB5IGlmIHkgaXMgbm9uLXplcm8sIHggaWYgeCBpcyBub24temVybywgb3IgemVybyBpZiBib3RoIGFyZSB6ZXJvLlxyXG4gICAgICAgIGlmICgheGNbMF0gfHwgIXljWzBdKSByZXR1cm4geWNbMF0gPyB5IDogbmV3IEJpZ051bWJlcih4Y1swXSA/IHggOiBhICogMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHhlID0gYml0Rmxvb3IoeGUpO1xyXG4gICAgICB5ZSA9IGJpdEZsb29yKHllKTtcclxuICAgICAgeGMgPSB4Yy5zbGljZSgpO1xyXG5cclxuICAgICAgLy8gUHJlcGVuZCB6ZXJvcyB0byBlcXVhbGlzZSBleHBvbmVudHMuIEZhc3RlciB0byB1c2UgcmV2ZXJzZSB0aGVuIGRvIHVuc2hpZnRzLlxyXG4gICAgICBpZiAoYSA9IHhlIC0geWUpIHtcclxuICAgICAgICBpZiAoYSA+IDApIHtcclxuICAgICAgICAgIHllID0geGU7XHJcbiAgICAgICAgICB0ID0geWM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGEgPSAtYTtcclxuICAgICAgICAgIHQgPSB4YztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHQucmV2ZXJzZSgpO1xyXG4gICAgICAgIGZvciAoOyBhLS07IHQucHVzaCgwKSk7XHJcbiAgICAgICAgdC5yZXZlcnNlKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGEgPSB4Yy5sZW5ndGg7XHJcbiAgICAgIGIgPSB5Yy5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBQb2ludCB4YyB0byB0aGUgbG9uZ2VyIGFycmF5LCBhbmQgYiB0byB0aGUgc2hvcnRlciBsZW5ndGguXHJcbiAgICAgIGlmIChhIC0gYiA8IDApIHQgPSB5YywgeWMgPSB4YywgeGMgPSB0LCBiID0gYTtcclxuXHJcbiAgICAgIC8vIE9ubHkgc3RhcnQgYWRkaW5nIGF0IHljLmxlbmd0aCAtIDEgYXMgdGhlIGZ1cnRoZXIgZGlnaXRzIG9mIHhjIGNhbiBiZSBpZ25vcmVkLlxyXG4gICAgICBmb3IgKGEgPSAwOyBiOykge1xyXG4gICAgICAgIGEgPSAoeGNbLS1iXSA9IHhjW2JdICsgeWNbYl0gKyBhKSAvIEJBU0UgfCAwO1xyXG4gICAgICAgIHhjW2JdID0gQkFTRSA9PT0geGNbYl0gPyAwIDogeGNbYl0gJSBCQVNFO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoYSkge1xyXG4gICAgICAgIHhjID0gW2FdLmNvbmNhdCh4Yyk7XHJcbiAgICAgICAgKyt5ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gTm8gbmVlZCB0byBjaGVjayBmb3IgemVybywgYXMgK3ggKyAreSAhPSAwICYmIC14ICsgLXkgIT0gMFxyXG4gICAgICAvLyB5ZSA9IE1BWF9FWFAgKyAxIHBvc3NpYmxlXHJcbiAgICAgIHJldHVybiBub3JtYWxpc2UoeSwgeGMsIHllKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBJZiBzZCBpcyB1bmRlZmluZWQgb3IgbnVsbCBvciB0cnVlIG9yIGZhbHNlLCByZXR1cm4gdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMgb2ZcclxuICAgICAqIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciwgb3IgbnVsbCBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgwrFJbmZpbml0eSBvciBOYU4uXHJcbiAgICAgKiBJZiBzZCBpcyB0cnVlIGluY2x1ZGUgaW50ZWdlci1wYXJ0IHRyYWlsaW5nIHplcm9zIGluIHRoZSBjb3VudC5cclxuICAgICAqXHJcbiAgICAgKiBPdGhlcndpc2UsIGlmIHNkIGlzIGEgbnVtYmVyLCByZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzXHJcbiAgICAgKiBCaWdOdW1iZXIgcm91bmRlZCB0byBhIG1heGltdW0gb2Ygc2Qgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0sIG9yXHJcbiAgICAgKiBST1VORElOR19NT0RFIGlmIHJtIGlzIG9taXR0ZWQuXHJcbiAgICAgKlxyXG4gICAgICogc2Qge251bWJlcnxib29sZWFufSBudW1iZXI6IHNpZ25pZmljYW50IGRpZ2l0czogaW50ZWdlciwgMSB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogICAgICAgICAgICAgICAgICAgICBib29sZWFuOiB3aGV0aGVyIHRvIGNvdW50IGludGVnZXItcGFydCB0cmFpbGluZyB6ZXJvczogdHJ1ZSBvciBmYWxzZS5cclxuICAgICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3NkfHJtfSdcclxuICAgICAqL1xyXG4gICAgUC5wcmVjaXNpb24gPSBQLnNkID0gZnVuY3Rpb24gKHNkLCBybSkge1xyXG4gICAgICB2YXIgYywgbiwgdixcclxuICAgICAgICB4ID0gdGhpcztcclxuXHJcbiAgICAgIGlmIChzZCAhPSBudWxsICYmIHNkICE9PSAhIXNkKSB7XHJcbiAgICAgICAgaW50Q2hlY2soc2QsIDEsIE1BWCk7XHJcbiAgICAgICAgaWYgKHJtID09IG51bGwpIHJtID0gUk9VTkRJTkdfTU9ERTtcclxuICAgICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJvdW5kKG5ldyBCaWdOdW1iZXIoeCksIHNkLCBybSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghKGMgPSB4LmMpKSByZXR1cm4gbnVsbDtcclxuICAgICAgdiA9IGMubGVuZ3RoIC0gMTtcclxuICAgICAgbiA9IHYgKiBMT0dfQkFTRSArIDE7XHJcblxyXG4gICAgICBpZiAodiA9IGNbdl0pIHtcclxuXHJcbiAgICAgICAgLy8gU3VidHJhY3QgdGhlIG51bWJlciBvZiB0cmFpbGluZyB6ZXJvcyBvZiB0aGUgbGFzdCBlbGVtZW50LlxyXG4gICAgICAgIGZvciAoOyB2ICUgMTAgPT0gMDsgdiAvPSAxMCwgbi0tKTtcclxuXHJcbiAgICAgICAgLy8gQWRkIHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIHRoZSBmaXJzdCBlbGVtZW50LlxyXG4gICAgICAgIGZvciAodiA9IGNbMF07IHYgPj0gMTA7IHYgLz0gMTAsIG4rKyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzZCAmJiB4LmUgKyAxID4gbikgbiA9IHguZSArIDE7XHJcblxyXG4gICAgICByZXR1cm4gbjtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBzaGlmdGVkIGJ5IGsgcGxhY2VzXHJcbiAgICAgKiAocG93ZXJzIG9mIDEwKS4gU2hpZnQgdG8gdGhlIHJpZ2h0IGlmIG4gPiAwLCBhbmQgdG8gdGhlIGxlZnQgaWYgbiA8IDAuXHJcbiAgICAgKlxyXG4gICAgICogayB7bnVtYmVyfSBJbnRlZ2VyLCAtTUFYX1NBRkVfSU5URUdFUiB0byBNQVhfU0FGRV9JTlRFR0VSIGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2t9J1xyXG4gICAgICovXHJcbiAgICBQLnNoaWZ0ZWRCeSA9IGZ1bmN0aW9uIChrKSB7XHJcbiAgICAgIGludENoZWNrKGssIC1NQVhfU0FGRV9JTlRFR0VSLCBNQVhfU0FGRV9JTlRFR0VSKTtcclxuICAgICAgcmV0dXJuIHRoaXMudGltZXMoJzFlJyArIGspO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqICBzcXJ0KC1uKSA9ICBOXHJcbiAgICAgKiAgc3FydChOKSA9ICBOXHJcbiAgICAgKiAgc3FydCgtSSkgPSAgTlxyXG4gICAgICogIHNxcnQoSSkgPSAgSVxyXG4gICAgICogIHNxcnQoMCkgPSAgMFxyXG4gICAgICogIHNxcnQoLTApID0gLTBcclxuICAgICAqXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIsXHJcbiAgICAgKiByb3VuZGVkIGFjY29yZGluZyB0byBERUNJTUFMX1BMQUNFUyBhbmQgUk9VTkRJTkdfTU9ERS5cclxuICAgICAqL1xyXG4gICAgUC5zcXVhcmVSb290ID0gUC5zcXJ0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgbSwgbiwgciwgcmVwLCB0LFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIGMgPSB4LmMsXHJcbiAgICAgICAgcyA9IHgucyxcclxuICAgICAgICBlID0geC5lLFxyXG4gICAgICAgIGRwID0gREVDSU1BTF9QTEFDRVMgKyA0LFxyXG4gICAgICAgIGhhbGYgPSBuZXcgQmlnTnVtYmVyKCcwLjUnKTtcclxuXHJcbiAgICAgIC8vIE5lZ2F0aXZlL05hTi9JbmZpbml0eS96ZXJvP1xyXG4gICAgICBpZiAocyAhPT0gMSB8fCAhYyB8fCAhY1swXSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKCFzIHx8IHMgPCAwICYmICghYyB8fCBjWzBdKSA/IE5hTiA6IGMgPyB4IDogMSAvIDApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBJbml0aWFsIGVzdGltYXRlLlxyXG4gICAgICBzID0gTWF0aC5zcXJ0KCt2YWx1ZU9mKHgpKTtcclxuXHJcbiAgICAgIC8vIE1hdGguc3FydCB1bmRlcmZsb3cvb3ZlcmZsb3c/XHJcbiAgICAgIC8vIFBhc3MgeCB0byBNYXRoLnNxcnQgYXMgaW50ZWdlciwgdGhlbiBhZGp1c3QgdGhlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQuXHJcbiAgICAgIGlmIChzID09IDAgfHwgcyA9PSAxIC8gMCkge1xyXG4gICAgICAgIG4gPSBjb2VmZlRvU3RyaW5nKGMpO1xyXG4gICAgICAgIGlmICgobi5sZW5ndGggKyBlKSAlIDIgPT0gMCkgbiArPSAnMCc7XHJcbiAgICAgICAgcyA9IE1hdGguc3FydCgrbik7XHJcbiAgICAgICAgZSA9IGJpdEZsb29yKChlICsgMSkgLyAyKSAtIChlIDwgMCB8fCBlICUgMik7XHJcblxyXG4gICAgICAgIGlmIChzID09IDEgLyAwKSB7XHJcbiAgICAgICAgICBuID0gJzVlJyArIGU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG4gPSBzLnRvRXhwb25lbnRpYWwoKTtcclxuICAgICAgICAgIG4gPSBuLnNsaWNlKDAsIG4uaW5kZXhPZignZScpICsgMSkgKyBlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgciA9IG5ldyBCaWdOdW1iZXIobik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgciA9IG5ldyBCaWdOdW1iZXIocyArICcnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ2hlY2sgZm9yIHplcm8uXHJcbiAgICAgIC8vIHIgY291bGQgYmUgemVybyBpZiBNSU5fRVhQIGlzIGNoYW5nZWQgYWZ0ZXIgdGhlIHRoaXMgdmFsdWUgd2FzIGNyZWF0ZWQuXHJcbiAgICAgIC8vIFRoaXMgd291bGQgY2F1c2UgYSBkaXZpc2lvbiBieSB6ZXJvICh4L3QpIGFuZCBoZW5jZSBJbmZpbml0eSBiZWxvdywgd2hpY2ggd291bGQgY2F1c2VcclxuICAgICAgLy8gY29lZmZUb1N0cmluZyB0byB0aHJvdy5cclxuICAgICAgaWYgKHIuY1swXSkge1xyXG4gICAgICAgIGUgPSByLmU7XHJcbiAgICAgICAgcyA9IGUgKyBkcDtcclxuICAgICAgICBpZiAocyA8IDMpIHMgPSAwO1xyXG5cclxuICAgICAgICAvLyBOZXd0b24tUmFwaHNvbiBpdGVyYXRpb24uXHJcbiAgICAgICAgZm9yICg7IDspIHtcclxuICAgICAgICAgIHQgPSByO1xyXG4gICAgICAgICAgciA9IGhhbGYudGltZXModC5wbHVzKGRpdih4LCB0LCBkcCwgMSkpKTtcclxuXHJcbiAgICAgICAgICBpZiAoY29lZmZUb1N0cmluZyh0LmMpLnNsaWNlKDAsIHMpID09PSAobiA9IGNvZWZmVG9TdHJpbmcoci5jKSkuc2xpY2UoMCwgcykpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIFRoZSBleHBvbmVudCBvZiByIG1heSBoZXJlIGJlIG9uZSBsZXNzIHRoYW4gdGhlIGZpbmFsIHJlc3VsdCBleHBvbmVudCxcclxuICAgICAgICAgICAgLy8gZS5nIDAuMDAwOTk5OSAoZS00KSAtLT4gMC4wMDEgKGUtMyksIHNvIGFkanVzdCBzIHNvIHRoZSByb3VuZGluZyBkaWdpdHNcclxuICAgICAgICAgICAgLy8gYXJlIGluZGV4ZWQgY29ycmVjdGx5LlxyXG4gICAgICAgICAgICBpZiAoci5lIDwgZSkgLS1zO1xyXG4gICAgICAgICAgICBuID0gbi5zbGljZShzIC0gMywgcyArIDEpO1xyXG5cclxuICAgICAgICAgICAgLy8gVGhlIDR0aCByb3VuZGluZyBkaWdpdCBtYXkgYmUgaW4gZXJyb3IgYnkgLTEgc28gaWYgdGhlIDQgcm91bmRpbmcgZGlnaXRzXHJcbiAgICAgICAgICAgIC8vIGFyZSA5OTk5IG9yIDQ5OTkgKGkuZS4gYXBwcm9hY2hpbmcgYSByb3VuZGluZyBib3VuZGFyeSkgY29udGludWUgdGhlXHJcbiAgICAgICAgICAgIC8vIGl0ZXJhdGlvbi5cclxuICAgICAgICAgICAgaWYgKG4gPT0gJzk5OTknIHx8ICFyZXAgJiYgbiA9PSAnNDk5OScpIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gT24gdGhlIGZpcnN0IGl0ZXJhdGlvbiBvbmx5LCBjaGVjayB0byBzZWUgaWYgcm91bmRpbmcgdXAgZ2l2ZXMgdGhlXHJcbiAgICAgICAgICAgICAgLy8gZXhhY3QgcmVzdWx0IGFzIHRoZSBuaW5lcyBtYXkgaW5maW5pdGVseSByZXBlYXQuXHJcbiAgICAgICAgICAgICAgaWYgKCFyZXApIHtcclxuICAgICAgICAgICAgICAgIHJvdW5kKHQsIHQuZSArIERFQ0lNQUxfUExBQ0VTICsgMiwgMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHQudGltZXModCkuZXEoeCkpIHtcclxuICAgICAgICAgICAgICAgICAgciA9IHQ7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgZHAgKz0gNDtcclxuICAgICAgICAgICAgICBzICs9IDQ7XHJcbiAgICAgICAgICAgICAgcmVwID0gMTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gSWYgcm91bmRpbmcgZGlnaXRzIGFyZSBudWxsLCAwezAsNH0gb3IgNTB7MCwzfSwgY2hlY2sgZm9yIGV4YWN0XHJcbiAgICAgICAgICAgICAgLy8gcmVzdWx0LiBJZiBub3QsIHRoZW4gdGhlcmUgYXJlIGZ1cnRoZXIgZGlnaXRzIGFuZCBtIHdpbGwgYmUgdHJ1dGh5LlxyXG4gICAgICAgICAgICAgIGlmICghK24gfHwgIStuLnNsaWNlKDEpICYmIG4uY2hhckF0KDApID09ICc1Jykge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFRydW5jYXRlIHRvIHRoZSBmaXJzdCByb3VuZGluZyBkaWdpdC5cclxuICAgICAgICAgICAgICAgIHJvdW5kKHIsIHIuZSArIERFQ0lNQUxfUExBQ0VTICsgMiwgMSk7XHJcbiAgICAgICAgICAgICAgICBtID0gIXIudGltZXMocikuZXEoeCk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHJvdW5kKHIsIHIuZSArIERFQ0lNQUxfUExBQ0VTICsgMSwgUk9VTkRJTkdfTU9ERSwgbSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaW4gZXhwb25lbnRpYWwgbm90YXRpb24gYW5kXHJcbiAgICAgKiByb3VuZGVkIHVzaW5nIFJPVU5ESU5HX01PREUgdG8gZHAgZml4ZWQgZGVjaW1hbCBwbGFjZXMuXHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB8cm19J1xyXG4gICAgICovXHJcbiAgICBQLnRvRXhwb25lbnRpYWwgPSBmdW5jdGlvbiAoZHAsIHJtKSB7XHJcbiAgICAgIGlmIChkcCAhPSBudWxsKSB7XHJcbiAgICAgICAgaW50Q2hlY2soZHAsIDAsIE1BWCk7XHJcbiAgICAgICAgZHArKztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZm9ybWF0KHRoaXMsIGRwLCBybSwgMSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaW4gZml4ZWQtcG9pbnQgbm90YXRpb24gcm91bmRpbmdcclxuICAgICAqIHRvIGRwIGZpeGVkIGRlY2ltYWwgcGxhY2VzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0sIG9yIFJPVU5ESU5HX01PREUgaWYgcm0gaXMgb21pdHRlZC5cclxuICAgICAqXHJcbiAgICAgKiBOb3RlOiBhcyB3aXRoIEphdmFTY3JpcHQncyBudW1iZXIgdHlwZSwgKC0wKS50b0ZpeGVkKDApIGlzICcwJyxcclxuICAgICAqIGJ1dCBlLmcuICgtMC4wMDAwMSkudG9GaXhlZCgwKSBpcyAnLTAnLlxyXG4gICAgICpcclxuICAgICAqIFtkcF0ge251bWJlcn0gRGVjaW1hbCBwbGFjZXMuIEludGVnZXIsIDAgdG8gTUFYIGluY2x1c2l2ZS5cclxuICAgICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2RwfHJtfSdcclxuICAgICAqL1xyXG4gICAgUC50b0ZpeGVkID0gZnVuY3Rpb24gKGRwLCBybSkge1xyXG4gICAgICBpZiAoZHAgIT0gbnVsbCkge1xyXG4gICAgICAgIGludENoZWNrKGRwLCAwLCBNQVgpO1xyXG4gICAgICAgIGRwID0gZHAgKyB0aGlzLmUgKyAxO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmb3JtYXQodGhpcywgZHAsIHJtKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpbiBmaXhlZC1wb2ludCBub3RhdGlvbiByb3VuZGVkXHJcbiAgICAgKiB1c2luZyBybSBvciBST1VORElOR19NT0RFIHRvIGRwIGRlY2ltYWwgcGxhY2VzLCBhbmQgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgcHJvcGVydGllc1xyXG4gICAgICogb2YgdGhlIGZvcm1hdCBvciBGT1JNQVQgb2JqZWN0IChzZWUgQmlnTnVtYmVyLnNldCkuXHJcbiAgICAgKlxyXG4gICAgICogVGhlIGZvcm1hdHRpbmcgb2JqZWN0IG1heSBjb250YWluIHNvbWUgb3IgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHNob3duIGJlbG93LlxyXG4gICAgICpcclxuICAgICAqIEZPUk1BVCA9IHtcclxuICAgICAqICAgcHJlZml4OiAnJyxcclxuICAgICAqICAgZ3JvdXBTaXplOiAzLFxyXG4gICAgICogICBzZWNvbmRhcnlHcm91cFNpemU6IDAsXHJcbiAgICAgKiAgIGdyb3VwU2VwYXJhdG9yOiAnLCcsXHJcbiAgICAgKiAgIGRlY2ltYWxTZXBhcmF0b3I6ICcuJyxcclxuICAgICAqICAgZnJhY3Rpb25Hcm91cFNpemU6IDAsXHJcbiAgICAgKiAgIGZyYWN0aW9uR3JvdXBTZXBhcmF0b3I6ICdcXHhBMCcsICAgICAgLy8gbm9uLWJyZWFraW5nIHNwYWNlXHJcbiAgICAgKiAgIHN1ZmZpeDogJydcclxuICAgICAqIH07XHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICogW2Zvcm1hdF0ge29iamVjdH0gRm9ybWF0dGluZyBvcHRpb25zLiBTZWUgRk9STUFUIHBiamVjdCBhYm92ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2RwfHJtfSdcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCBub3QgYW4gb2JqZWN0OiB7Zm9ybWF0fSdcclxuICAgICAqL1xyXG4gICAgUC50b0Zvcm1hdCA9IGZ1bmN0aW9uIChkcCwgcm0sIGZvcm1hdCkge1xyXG4gICAgICB2YXIgc3RyLFxyXG4gICAgICAgIHggPSB0aGlzO1xyXG5cclxuICAgICAgaWYgKGZvcm1hdCA9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGRwICE9IG51bGwgJiYgcm0gJiYgdHlwZW9mIHJtID09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBmb3JtYXQgPSBybTtcclxuICAgICAgICAgIHJtID0gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKGRwICYmIHR5cGVvZiBkcCA9PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgZm9ybWF0ID0gZHA7XHJcbiAgICAgICAgICBkcCA9IHJtID0gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZm9ybWF0ID0gRk9STUFUO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm9ybWF0ICE9ICdvYmplY3QnKSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgIChiaWdudW1iZXJFcnJvciArICdBcmd1bWVudCBub3QgYW4gb2JqZWN0OiAnICsgZm9ybWF0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3RyID0geC50b0ZpeGVkKGRwLCBybSk7XHJcblxyXG4gICAgICBpZiAoeC5jKSB7XHJcbiAgICAgICAgdmFyIGksXHJcbiAgICAgICAgICBhcnIgPSBzdHIuc3BsaXQoJy4nKSxcclxuICAgICAgICAgIGcxID0gK2Zvcm1hdC5ncm91cFNpemUsXHJcbiAgICAgICAgICBnMiA9ICtmb3JtYXQuc2Vjb25kYXJ5R3JvdXBTaXplLFxyXG4gICAgICAgICAgZ3JvdXBTZXBhcmF0b3IgPSBmb3JtYXQuZ3JvdXBTZXBhcmF0b3IgfHwgJycsXHJcbiAgICAgICAgICBpbnRQYXJ0ID0gYXJyWzBdLFxyXG4gICAgICAgICAgZnJhY3Rpb25QYXJ0ID0gYXJyWzFdLFxyXG4gICAgICAgICAgaXNOZWcgPSB4LnMgPCAwLFxyXG4gICAgICAgICAgaW50RGlnaXRzID0gaXNOZWcgPyBpbnRQYXJ0LnNsaWNlKDEpIDogaW50UGFydCxcclxuICAgICAgICAgIGxlbiA9IGludERpZ2l0cy5sZW5ndGg7XHJcblxyXG4gICAgICAgIGlmIChnMikgaSA9IGcxLCBnMSA9IGcyLCBnMiA9IGksIGxlbiAtPSBpO1xyXG5cclxuICAgICAgICBpZiAoZzEgPiAwICYmIGxlbiA+IDApIHtcclxuICAgICAgICAgIGkgPSBsZW4gJSBnMSB8fCBnMTtcclxuICAgICAgICAgIGludFBhcnQgPSBpbnREaWdpdHMuc3Vic3RyKDAsIGkpO1xyXG4gICAgICAgICAgZm9yICg7IGkgPCBsZW47IGkgKz0gZzEpIGludFBhcnQgKz0gZ3JvdXBTZXBhcmF0b3IgKyBpbnREaWdpdHMuc3Vic3RyKGksIGcxKTtcclxuICAgICAgICAgIGlmIChnMiA+IDApIGludFBhcnQgKz0gZ3JvdXBTZXBhcmF0b3IgKyBpbnREaWdpdHMuc2xpY2UoaSk7XHJcbiAgICAgICAgICBpZiAoaXNOZWcpIGludFBhcnQgPSAnLScgKyBpbnRQYXJ0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RyID0gZnJhY3Rpb25QYXJ0XHJcbiAgICAgICAgID8gaW50UGFydCArIChmb3JtYXQuZGVjaW1hbFNlcGFyYXRvciB8fCAnJykgKyAoKGcyID0gK2Zvcm1hdC5mcmFjdGlvbkdyb3VwU2l6ZSlcclxuICAgICAgICAgID8gZnJhY3Rpb25QYXJ0LnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxcXGR7JyArIGcyICsgJ31cXFxcQicsICdnJyksXHJcbiAgICAgICAgICAgJyQmJyArIChmb3JtYXQuZnJhY3Rpb25Hcm91cFNlcGFyYXRvciB8fCAnJykpXHJcbiAgICAgICAgICA6IGZyYWN0aW9uUGFydClcclxuICAgICAgICAgOiBpbnRQYXJ0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gKGZvcm1hdC5wcmVmaXggfHwgJycpICsgc3RyICsgKGZvcm1hdC5zdWZmaXggfHwgJycpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhbiBhcnJheSBvZiB0d28gQmlnTnVtYmVycyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGFzIGEgc2ltcGxlXHJcbiAgICAgKiBmcmFjdGlvbiB3aXRoIGFuIGludGVnZXIgbnVtZXJhdG9yIGFuZCBhbiBpbnRlZ2VyIGRlbm9taW5hdG9yLlxyXG4gICAgICogVGhlIGRlbm9taW5hdG9yIHdpbGwgYmUgYSBwb3NpdGl2ZSBub24temVybyB2YWx1ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNwZWNpZmllZFxyXG4gICAgICogbWF4aW11bSBkZW5vbWluYXRvci4gSWYgYSBtYXhpbXVtIGRlbm9taW5hdG9yIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZW5vbWluYXRvciB3aWxsIGJlXHJcbiAgICAgKiB0aGUgbG93ZXN0IHZhbHVlIG5lY2Vzc2FyeSB0byByZXByZXNlbnQgdGhlIG51bWJlciBleGFjdGx5LlxyXG4gICAgICpcclxuICAgICAqIFttZF0ge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfSBJbnRlZ2VyID49IDEsIG9yIEluZmluaXR5LiBUaGUgbWF4aW11bSBkZW5vbWluYXRvci5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX0gOiB7bWR9J1xyXG4gICAgICovXHJcbiAgICBQLnRvRnJhY3Rpb24gPSBmdW5jdGlvbiAobWQpIHtcclxuICAgICAgdmFyIGQsIGQwLCBkMSwgZDIsIGUsIGV4cCwgbiwgbjAsIG4xLCBxLCByLCBzLFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIHhjID0geC5jO1xyXG5cclxuICAgICAgaWYgKG1kICE9IG51bGwpIHtcclxuICAgICAgICBuID0gbmV3IEJpZ051bWJlcihtZCk7XHJcblxyXG4gICAgICAgIC8vIFRocm93IGlmIG1kIGlzIGxlc3MgdGhhbiBvbmUgb3IgaXMgbm90IGFuIGludGVnZXIsIHVubGVzcyBpdCBpcyBJbmZpbml0eS5cclxuICAgICAgICBpZiAoIW4uaXNJbnRlZ2VyKCkgJiYgKG4uYyB8fCBuLnMgIT09IDEpIHx8IG4ubHQoT05FKSkge1xyXG4gICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ0FyZ3VtZW50ICcgK1xyXG4gICAgICAgICAgICAgIChuLmlzSW50ZWdlcigpID8gJ291dCBvZiByYW5nZTogJyA6ICdub3QgYW4gaW50ZWdlcjogJykgKyB2YWx1ZU9mKG4pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICgheGMpIHJldHVybiBuZXcgQmlnTnVtYmVyKHgpO1xyXG5cclxuICAgICAgZCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuICAgICAgbjEgPSBkMCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuICAgICAgZDEgPSBuMCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuICAgICAgcyA9IGNvZWZmVG9TdHJpbmcoeGMpO1xyXG5cclxuICAgICAgLy8gRGV0ZXJtaW5lIGluaXRpYWwgZGVub21pbmF0b3IuXHJcbiAgICAgIC8vIGQgaXMgYSBwb3dlciBvZiAxMCBhbmQgdGhlIG1pbmltdW0gbWF4IGRlbm9taW5hdG9yIHRoYXQgc3BlY2lmaWVzIHRoZSB2YWx1ZSBleGFjdGx5LlxyXG4gICAgICBlID0gZC5lID0gcy5sZW5ndGggLSB4LmUgLSAxO1xyXG4gICAgICBkLmNbMF0gPSBQT1dTX1RFTlsoZXhwID0gZSAlIExPR19CQVNFKSA8IDAgPyBMT0dfQkFTRSArIGV4cCA6IGV4cF07XHJcbiAgICAgIG1kID0gIW1kIHx8IG4uY29tcGFyZWRUbyhkKSA+IDAgPyAoZSA+IDAgPyBkIDogbjEpIDogbjtcclxuXHJcbiAgICAgIGV4cCA9IE1BWF9FWFA7XHJcbiAgICAgIE1BWF9FWFAgPSAxIC8gMDtcclxuICAgICAgbiA9IG5ldyBCaWdOdW1iZXIocyk7XHJcblxyXG4gICAgICAvLyBuMCA9IGQxID0gMFxyXG4gICAgICBuMC5jWzBdID0gMDtcclxuXHJcbiAgICAgIGZvciAoOyA7KSAge1xyXG4gICAgICAgIHEgPSBkaXYobiwgZCwgMCwgMSk7XHJcbiAgICAgICAgZDIgPSBkMC5wbHVzKHEudGltZXMoZDEpKTtcclxuICAgICAgICBpZiAoZDIuY29tcGFyZWRUbyhtZCkgPT0gMSkgYnJlYWs7XHJcbiAgICAgICAgZDAgPSBkMTtcclxuICAgICAgICBkMSA9IGQyO1xyXG4gICAgICAgIG4xID0gbjAucGx1cyhxLnRpbWVzKGQyID0gbjEpKTtcclxuICAgICAgICBuMCA9IGQyO1xyXG4gICAgICAgIGQgPSBuLm1pbnVzKHEudGltZXMoZDIgPSBkKSk7XHJcbiAgICAgICAgbiA9IGQyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkMiA9IGRpdihtZC5taW51cyhkMCksIGQxLCAwLCAxKTtcclxuICAgICAgbjAgPSBuMC5wbHVzKGQyLnRpbWVzKG4xKSk7XHJcbiAgICAgIGQwID0gZDAucGx1cyhkMi50aW1lcyhkMSkpO1xyXG4gICAgICBuMC5zID0gbjEucyA9IHgucztcclxuICAgICAgZSA9IGUgKiAyO1xyXG5cclxuICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGZyYWN0aW9uIGlzIGNsb3NlciB0byB4LCBuMC9kMCBvciBuMS9kMVxyXG4gICAgICByID0gZGl2KG4xLCBkMSwgZSwgUk9VTkRJTkdfTU9ERSkubWludXMoeCkuYWJzKCkuY29tcGFyZWRUbyhcclxuICAgICAgICAgIGRpdihuMCwgZDAsIGUsIFJPVU5ESU5HX01PREUpLm1pbnVzKHgpLmFicygpKSA8IDEgPyBbbjEsIGQxXSA6IFtuMCwgZDBdO1xyXG5cclxuICAgICAgTUFYX0VYUCA9IGV4cDtcclxuXHJcbiAgICAgIHJldHVybiByO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgY29udmVydGVkIHRvIGEgbnVtYmVyIHByaW1pdGl2ZS5cclxuICAgICAqL1xyXG4gICAgUC50b051bWJlciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuICt2YWx1ZU9mKHRoaXMpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIHJvdW5kZWQgdG8gc2Qgc2lnbmlmaWNhbnQgZGlnaXRzXHJcbiAgICAgKiB1c2luZyByb3VuZGluZyBtb2RlIHJtIG9yIFJPVU5ESU5HX01PREUuIElmIHNkIGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGRpZ2l0c1xyXG4gICAgICogbmVjZXNzYXJ5IHRvIHJlcHJlc2VudCB0aGUgaW50ZWdlciBwYXJ0IG9mIHRoZSB2YWx1ZSBpbiBmaXhlZC1wb2ludCBub3RhdGlvbiwgdGhlbiB1c2VcclxuICAgICAqIGV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICpcclxuICAgICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAxIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEFyZ3VtZW50IHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtzZHxybX0nXHJcbiAgICAgKi9cclxuICAgIFAudG9QcmVjaXNpb24gPSBmdW5jdGlvbiAoc2QsIHJtKSB7XHJcbiAgICAgIGlmIChzZCAhPSBudWxsKSBpbnRDaGVjayhzZCwgMSwgTUFYKTtcclxuICAgICAgcmV0dXJuIGZvcm1hdCh0aGlzLCBzZCwgcm0sIDIpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGluIGJhc2UgYiwgb3IgYmFzZSAxMCBpZiBiIGlzXHJcbiAgICAgKiBvbWl0dGVkLiBJZiBhIGJhc2UgaXMgc3BlY2lmaWVkLCBpbmNsdWRpbmcgYmFzZSAxMCwgcm91bmQgYWNjb3JkaW5nIHRvIERFQ0lNQUxfUExBQ0VTIGFuZFxyXG4gICAgICogUk9VTkRJTkdfTU9ERS4gSWYgYSBiYXNlIGlzIG5vdCBzcGVjaWZpZWQsIGFuZCB0aGlzIEJpZ051bWJlciBoYXMgYSBwb3NpdGl2ZSBleHBvbmVudFxyXG4gICAgICogdGhhdCBpcyBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gVE9fRVhQX1BPUywgb3IgYSBuZWdhdGl2ZSBleHBvbmVudCBlcXVhbCB0byBvciBsZXNzIHRoYW5cclxuICAgICAqIFRPX0VYUF9ORUcsIHJldHVybiBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgICAqXHJcbiAgICAgKiBbYl0ge251bWJlcn0gSW50ZWdlciwgMiB0byBBTFBIQUJFVC5sZW5ndGggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBCYXNlIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtifSdcclxuICAgICAqL1xyXG4gICAgUC50b1N0cmluZyA9IGZ1bmN0aW9uIChiKSB7XHJcbiAgICAgIHZhciBzdHIsXHJcbiAgICAgICAgbiA9IHRoaXMsXHJcbiAgICAgICAgcyA9IG4ucyxcclxuICAgICAgICBlID0gbi5lO1xyXG5cclxuICAgICAgLy8gSW5maW5pdHkgb3IgTmFOP1xyXG4gICAgICBpZiAoZSA9PT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChzKSB7XHJcbiAgICAgICAgICBzdHIgPSAnSW5maW5pdHknO1xyXG4gICAgICAgICAgaWYgKHMgPCAwKSBzdHIgPSAnLScgKyBzdHI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHN0ciA9ICdOYU4nO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoYiA9PSBudWxsKSB7XHJcbiAgICAgICAgICBzdHIgPSBlIDw9IFRPX0VYUF9ORUcgfHwgZSA+PSBUT19FWFBfUE9TXHJcbiAgICAgICAgICAgPyB0b0V4cG9uZW50aWFsKGNvZWZmVG9TdHJpbmcobi5jKSwgZSlcclxuICAgICAgICAgICA6IHRvRml4ZWRQb2ludChjb2VmZlRvU3RyaW5nKG4uYyksIGUsICcwJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChiID09PSAxMCkge1xyXG4gICAgICAgICAgbiA9IHJvdW5kKG5ldyBCaWdOdW1iZXIobiksIERFQ0lNQUxfUExBQ0VTICsgZSArIDEsIFJPVU5ESU5HX01PREUpO1xyXG4gICAgICAgICAgc3RyID0gdG9GaXhlZFBvaW50KGNvZWZmVG9TdHJpbmcobi5jKSwgbi5lLCAnMCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpbnRDaGVjayhiLCAyLCBBTFBIQUJFVC5sZW5ndGgsICdCYXNlJyk7XHJcbiAgICAgICAgICBzdHIgPSBjb252ZXJ0QmFzZSh0b0ZpeGVkUG9pbnQoY29lZmZUb1N0cmluZyhuLmMpLCBlLCAnMCcpLCAxMCwgYiwgcywgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocyA8IDAgJiYgbi5jWzBdKSBzdHIgPSAnLScgKyBzdHI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGFzIHRvU3RyaW5nLCBidXQgZG8gbm90IGFjY2VwdCBhIGJhc2UgYXJndW1lbnQsIGFuZCBpbmNsdWRlIHRoZSBtaW51cyBzaWduIGZvclxyXG4gICAgICogbmVnYXRpdmUgemVyby5cclxuICAgICAqL1xyXG4gICAgUC52YWx1ZU9mID0gUC50b0pTT04gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZU9mKHRoaXMpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgUC5faXNCaWdOdW1iZXIgPSB0cnVlO1xyXG5cclxuICAgIGlmIChjb25maWdPYmplY3QgIT0gbnVsbCkgQmlnTnVtYmVyLnNldChjb25maWdPYmplY3QpO1xyXG5cclxuICAgIHJldHVybiBCaWdOdW1iZXI7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gUFJJVkFURSBIRUxQRVIgRlVOQ1RJT05TXHJcblxyXG4gIC8vIFRoZXNlIGZ1bmN0aW9ucyBkb24ndCBuZWVkIGFjY2VzcyB0byB2YXJpYWJsZXMsXHJcbiAgLy8gZS5nLiBERUNJTUFMX1BMQUNFUywgaW4gdGhlIHNjb3BlIG9mIHRoZSBgY2xvbmVgIGZ1bmN0aW9uIGFib3ZlLlxyXG5cclxuXHJcbiAgZnVuY3Rpb24gYml0Rmxvb3Iobikge1xyXG4gICAgdmFyIGkgPSBuIHwgMDtcclxuICAgIHJldHVybiBuID4gMCB8fCBuID09PSBpID8gaSA6IGkgLSAxO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIFJldHVybiBhIGNvZWZmaWNpZW50IGFycmF5IGFzIGEgc3RyaW5nIG9mIGJhc2UgMTAgZGlnaXRzLlxyXG4gIGZ1bmN0aW9uIGNvZWZmVG9TdHJpbmcoYSkge1xyXG4gICAgdmFyIHMsIHosXHJcbiAgICAgIGkgPSAxLFxyXG4gICAgICBqID0gYS5sZW5ndGgsXHJcbiAgICAgIHIgPSBhWzBdICsgJyc7XHJcblxyXG4gICAgZm9yICg7IGkgPCBqOykge1xyXG4gICAgICBzID0gYVtpKytdICsgJyc7XHJcbiAgICAgIHogPSBMT0dfQkFTRSAtIHMubGVuZ3RoO1xyXG4gICAgICBmb3IgKDsgei0tOyBzID0gJzAnICsgcyk7XHJcbiAgICAgIHIgKz0gcztcclxuICAgIH1cclxuXHJcbiAgICAvLyBEZXRlcm1pbmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICBmb3IgKGogPSByLmxlbmd0aDsgci5jaGFyQ29kZUF0KC0taikgPT09IDQ4Oyk7XHJcblxyXG4gICAgcmV0dXJuIHIuc2xpY2UoMCwgaiArIDEgfHwgMSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gQ29tcGFyZSB0aGUgdmFsdWUgb2YgQmlnTnVtYmVycyB4IGFuZCB5LlxyXG4gIGZ1bmN0aW9uIGNvbXBhcmUoeCwgeSkge1xyXG4gICAgdmFyIGEsIGIsXHJcbiAgICAgIHhjID0geC5jLFxyXG4gICAgICB5YyA9IHkuYyxcclxuICAgICAgaSA9IHgucyxcclxuICAgICAgaiA9IHkucyxcclxuICAgICAgayA9IHguZSxcclxuICAgICAgbCA9IHkuZTtcclxuXHJcbiAgICAvLyBFaXRoZXIgTmFOP1xyXG4gICAgaWYgKCFpIHx8ICFqKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBhID0geGMgJiYgIXhjWzBdO1xyXG4gICAgYiA9IHljICYmICF5Y1swXTtcclxuXHJcbiAgICAvLyBFaXRoZXIgemVybz9cclxuICAgIGlmIChhIHx8IGIpIHJldHVybiBhID8gYiA/IDAgOiAtaiA6IGk7XHJcblxyXG4gICAgLy8gU2lnbnMgZGlmZmVyP1xyXG4gICAgaWYgKGkgIT0gaikgcmV0dXJuIGk7XHJcblxyXG4gICAgYSA9IGkgPCAwO1xyXG4gICAgYiA9IGsgPT0gbDtcclxuXHJcbiAgICAvLyBFaXRoZXIgSW5maW5pdHk/XHJcbiAgICBpZiAoIXhjIHx8ICF5YykgcmV0dXJuIGIgPyAwIDogIXhjIF4gYSA/IDEgOiAtMTtcclxuXHJcbiAgICAvLyBDb21wYXJlIGV4cG9uZW50cy5cclxuICAgIGlmICghYikgcmV0dXJuIGsgPiBsIF4gYSA/IDEgOiAtMTtcclxuXHJcbiAgICBqID0gKGsgPSB4Yy5sZW5ndGgpIDwgKGwgPSB5Yy5sZW5ndGgpID8gayA6IGw7XHJcblxyXG4gICAgLy8gQ29tcGFyZSBkaWdpdCBieSBkaWdpdC5cclxuICAgIGZvciAoaSA9IDA7IGkgPCBqOyBpKyspIGlmICh4Y1tpXSAhPSB5Y1tpXSkgcmV0dXJuIHhjW2ldID4geWNbaV0gXiBhID8gMSA6IC0xO1xyXG5cclxuICAgIC8vIENvbXBhcmUgbGVuZ3Rocy5cclxuICAgIHJldHVybiBrID09IGwgPyAwIDogayA+IGwgXiBhID8gMSA6IC0xO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogQ2hlY2sgdGhhdCBuIGlzIGEgcHJpbWl0aXZlIG51bWJlciwgYW4gaW50ZWdlciwgYW5kIGluIHJhbmdlLCBvdGhlcndpc2UgdGhyb3cuXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gaW50Q2hlY2sobiwgbWluLCBtYXgsIG5hbWUpIHtcclxuICAgIGlmIChuIDwgbWluIHx8IG4gPiBtYXggfHwgbiAhPT0gbWF0aGZsb29yKG4pKSB7XHJcbiAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAobmFtZSB8fCAnQXJndW1lbnQnKSArICh0eXBlb2YgbiA9PSAnbnVtYmVyJ1xyXG4gICAgICAgICA/IG4gPCBtaW4gfHwgbiA+IG1heCA/ICcgb3V0IG9mIHJhbmdlOiAnIDogJyBub3QgYW4gaW50ZWdlcjogJ1xyXG4gICAgICAgICA6ICcgbm90IGEgcHJpbWl0aXZlIG51bWJlcjogJykgKyBTdHJpbmcobikpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIEFzc3VtZXMgZmluaXRlIG4uXHJcbiAgZnVuY3Rpb24gaXNPZGQobikge1xyXG4gICAgdmFyIGsgPSBuLmMubGVuZ3RoIC0gMTtcclxuICAgIHJldHVybiBiaXRGbG9vcihuLmUgLyBMT0dfQkFTRSkgPT0gayAmJiBuLmNba10gJSAyICE9IDA7XHJcbiAgfVxyXG5cclxuXHJcbiAgZnVuY3Rpb24gdG9FeHBvbmVudGlhbChzdHIsIGUpIHtcclxuICAgIHJldHVybiAoc3RyLmxlbmd0aCA+IDEgPyBzdHIuY2hhckF0KDApICsgJy4nICsgc3RyLnNsaWNlKDEpIDogc3RyKSArXHJcbiAgICAgKGUgPCAwID8gJ2UnIDogJ2UrJykgKyBlO1xyXG4gIH1cclxuXHJcblxyXG4gIGZ1bmN0aW9uIHRvRml4ZWRQb2ludChzdHIsIGUsIHopIHtcclxuICAgIHZhciBsZW4sIHpzO1xyXG5cclxuICAgIC8vIE5lZ2F0aXZlIGV4cG9uZW50P1xyXG4gICAgaWYgKGUgPCAwKSB7XHJcblxyXG4gICAgICAvLyBQcmVwZW5kIHplcm9zLlxyXG4gICAgICBmb3IgKHpzID0geiArICcuJzsgKytlOyB6cyArPSB6KTtcclxuICAgICAgc3RyID0genMgKyBzdHI7XHJcblxyXG4gICAgLy8gUG9zaXRpdmUgZXhwb25lbnRcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxlbiA9IHN0ci5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBBcHBlbmQgemVyb3MuXHJcbiAgICAgIGlmICgrK2UgPiBsZW4pIHtcclxuICAgICAgICBmb3IgKHpzID0geiwgZSAtPSBsZW47IC0tZTsgenMgKz0geik7XHJcbiAgICAgICAgc3RyICs9IHpzO1xyXG4gICAgICB9IGVsc2UgaWYgKGUgPCBsZW4pIHtcclxuICAgICAgICBzdHIgPSBzdHIuc2xpY2UoMCwgZSkgKyAnLicgKyBzdHIuc2xpY2UoZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIEVYUE9SVFxyXG5cclxuXHJcbiAgQmlnTnVtYmVyID0gY2xvbmUoKTtcclxuICBCaWdOdW1iZXJbJ2RlZmF1bHQnXSA9IEJpZ051bWJlci5CaWdOdW1iZXIgPSBCaWdOdW1iZXI7XHJcblxyXG4gIC8vIEFNRC5cclxuICBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcclxuICAgIGRlZmluZShmdW5jdGlvbiAoKSB7IHJldHVybiBCaWdOdW1iZXI7IH0pO1xyXG5cclxuICAvLyBOb2RlLmpzIGFuZCBvdGhlciBlbnZpcm9ubWVudHMgdGhhdCBzdXBwb3J0IG1vZHVsZS5leHBvcnRzLlxyXG4gIH0gZWxzZSBpZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xyXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBCaWdOdW1iZXI7XHJcblxyXG4gIC8vIEJyb3dzZXIuXHJcbiAgfSBlbHNlIHtcclxuICAgIGlmICghZ2xvYmFsT2JqZWN0KSB7XHJcbiAgICAgIGdsb2JhbE9iamVjdCA9IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYgPyBzZWxmIDogd2luZG93O1xyXG4gICAgfVxyXG5cclxuICAgIGdsb2JhbE9iamVjdC5CaWdOdW1iZXIgPSBCaWdOdW1iZXI7XHJcbiAgfVxyXG59KSh0aGlzKTtcclxuIiwiKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFV0aWxzXG4gIGZ1bmN0aW9uIGFzc2VydCAodmFsLCBtc2cpIHtcbiAgICBpZiAoIXZhbCkgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xuICB9XG5cbiAgLy8gQ291bGQgdXNlIGBpbmhlcml0c2AgbW9kdWxlLCBidXQgZG9uJ3Qgd2FudCB0byBtb3ZlIGZyb20gc2luZ2xlIGZpbGVcbiAgLy8gYXJjaGl0ZWN0dXJlIHlldC5cbiAgZnVuY3Rpb24gaW5oZXJpdHMgKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGU7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKTtcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gIH1cblxuICAvLyBCTlxuXG4gIGZ1bmN0aW9uIEJOIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChCTi5pc0JOKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgdGhpcy53b3JkcyA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgLy8gUmVkdWN0aW9uIGNvbnRleHRcbiAgICB0aGlzLnJlZCA9IG51bGw7XG5cbiAgICBpZiAobnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gJ2xlJyB8fCBiYXNlID09PSAnYmUnKSB7XG4gICAgICAgIGVuZGlhbiA9IGJhc2U7XG4gICAgICAgIGJhc2UgPSAxMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdChudW1iZXIgfHwgMCwgYmFzZSB8fCAxMCwgZW5kaWFuIHx8ICdiZScpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJOO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQk4gPSBCTjtcbiAgfVxuXG4gIEJOLkJOID0gQk47XG4gIEJOLndvcmRTaXplID0gMjY7XG5cbiAgdmFyIEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5CdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBCdWZmZXIgPSB3aW5kb3cuQnVmZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gIH1cblxuICBCTi5pc0JOID0gZnVuY3Rpb24gaXNCTiAobnVtKSB7XG4gICAgaWYgKG51bSBpbnN0YW5jZW9mIEJOKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVtICE9PSBudWxsICYmIHR5cGVvZiBudW0gPT09ICdvYmplY3QnICYmXG4gICAgICBudW0uY29uc3RydWN0b3Iud29yZFNpemUgPT09IEJOLndvcmRTaXplICYmIEFycmF5LmlzQXJyYXkobnVtLndvcmRzKTtcbiAgfTtcblxuICBCTi5tYXggPSBmdW5jdGlvbiBtYXggKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA+IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5taW4gPSBmdW5jdGlvbiBtaW4gKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA8IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXROdW1iZXIobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXRBcnJheShudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBiYXNlID0gMTY7XG4gICAgfVxuICAgIGFzc2VydChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KTtcblxuICAgIG51bWJlciA9IG51bWJlci50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICBzdGFydCsrO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0IDwgbnVtYmVyLmxlbmd0aCkge1xuICAgICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICAgIHRoaXMuX3BhcnNlSGV4KG51bWJlciwgc3RhcnQsIGVuZGlhbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wYXJzZUJhc2UobnVtYmVyLCBiYXNlLCBzdGFydCk7XG4gICAgICAgIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgICAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0TnVtYmVyID0gZnVuY3Rpb24gX2luaXROdW1iZXIgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDB4NDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFtudW1iZXIgJiAweDNmZmZmZmZdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMHgxMDAwMDAwMDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZlxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG51bWJlciA8IDB4MjAwMDAwMDAwMDAwMDApOyAvLyAyIF4gNTMgKHVuc2FmZSlcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmYsXG4gICAgICAgIDFcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDM7XG4gICAgfVxuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgLy8gUmV2ZXJzZSB0aGUgYnl0ZXNcbiAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0QXJyYXkgPSBmdW5jdGlvbiBfaW5pdEFycmF5IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIC8vIFBlcmhhcHMgYSBVaW50OEFycmF5XG4gICAgYXNzZXJ0KHR5cGVvZiBudW1iZXIubGVuZ3RoID09PSAnbnVtYmVyJyk7XG4gICAgaWYgKG51bWJlci5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFswXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKG51bWJlci5sZW5ndGggLyAzKTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIHZhciBqLCB3O1xuICAgIHZhciBvZmYgPSAwO1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxLCBqID0gMDsgaSA+PSAwOyBpIC09IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSAtIDFdIDw8IDgpIHwgKG51bWJlcltpIC0gMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgKyAxXSA8PCA4KSB8IChudW1iZXJbaSArIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUhleDRCaXRzIChzdHJpbmcsIGluZGV4KSB7XG4gICAgdmFyIGMgPSBzdHJpbmcuY2hhckNvZGVBdChpbmRleCk7XG4gICAgLy8gJzAnIC0gJzknXG4gICAgaWYgKGMgPj0gNDggJiYgYyA8PSA1Nykge1xuICAgICAgcmV0dXJuIGMgLSA0ODtcbiAgICAvLyAnQScgLSAnRidcbiAgICB9IGVsc2UgaWYgKGMgPj0gNjUgJiYgYyA8PSA3MCkge1xuICAgICAgcmV0dXJuIGMgLSA1NTtcbiAgICAvLyAnYScgLSAnZidcbiAgICB9IGVsc2UgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMDIpIHtcbiAgICAgIHJldHVybiBjIC0gODc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ0ludmFsaWQgY2hhcmFjdGVyIGluICcgKyBzdHJpbmcpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4Qnl0ZSAoc3RyaW5nLCBsb3dlckJvdW5kLCBpbmRleCkge1xuICAgIHZhciByID0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4KTtcbiAgICBpZiAoaW5kZXggLSAxID49IGxvd2VyQm91bmQpIHtcbiAgICAgIHIgfD0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4IC0gMSkgPDwgNDtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlSGV4ID0gZnVuY3Rpb24gX3BhcnNlSGV4IChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICAvLyAyNC1iaXRzIGNodW5rc1xuICAgIHZhciBvZmYgPSAwO1xuICAgIHZhciBqID0gMDtcblxuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyBpIC09IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFyc2VMZW5ndGggPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgICBmb3IgKGkgPSBwYXJzZUxlbmd0aCAlIDIgPT09IDAgPyBzdGFydCArIDEgOiBzdGFydDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBiID0gMDtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oc3RyLmxlbmd0aCwgZW5kKTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKSAtIDQ4O1xuXG4gICAgICByICo9IG11bDtcblxuICAgICAgLy8gJ2EnXG4gICAgICBpZiAoYyA+PSA0OSkge1xuICAgICAgICBiID0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICBiID0gYyAtIDE3ICsgMHhhO1xuXG4gICAgICAvLyAnMCcgLSAnOSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGIgPSBjO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGMgPj0gMCAmJiBiIDwgbXVsLCAnSW52YWxpZCBjaGFyYWN0ZXInKTtcbiAgICAgIHIgKz0gYjtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlQmFzZSA9IGZ1bmN0aW9uIF9wYXJzZUJhc2UgKG51bWJlciwgYmFzZSwgc3RhcnQpIHtcbiAgICAvLyBJbml0aWFsaXplIGFzIHplcm9cbiAgICB0aGlzLndvcmRzID0gWzBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKGRlc3QpIHtcbiAgICBkZXN0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlc3Qud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgIH1cbiAgICBkZXN0Lmxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIGRlc3QubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIGRlc3QucmVkID0gdGhpcy5yZWQ7XG4gIH07XG5cbiAgZnVuY3Rpb24gbW92ZSAoZGVzdCwgc3JjKSB7XG4gICAgZGVzdC53b3JkcyA9IHNyYy53b3JkcztcbiAgICBkZXN0Lmxlbmd0aCA9IHNyYy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHNyYy5uZWdhdGl2ZTtcbiAgICBkZXN0LnJlZCA9IHNyYy5yZWQ7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX21vdmUgPSBmdW5jdGlvbiBfbW92ZSAoZGVzdCkge1xuICAgIG1vdmUoZGVzdCwgdGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUgKCkge1xuICAgIHZhciByID0gbmV3IEJOKG51bGwpO1xuICAgIHRoaXMuY29weShyKTtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2V4cGFuZCA9IGZ1bmN0aW9uIF9leHBhbmQgKHNpemUpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBzaXplKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gUmVtb3ZlIGxlYWRpbmcgYDBgIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5fc3RyaXAgPSBmdW5jdGlvbiBzdHJpcCAoKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoID4gMSAmJiB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fbm9ybVNpZ24gPSBmdW5jdGlvbiBfbm9ybVNpZ24gKCkge1xuICAgIC8vIC0wID0gMFxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gQ2hlY2sgU3ltYm9sLmZvciBiZWNhdXNlIG5vdCBldmVyeXdoZXJlIHdoZXJlIFN5bWJvbCBkZWZpbmVkXG4gIC8vIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TeW1ib2wjQnJvd3Nlcl9jb21wYXRpYmlsaXR5XG4gIGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgU3ltYm9sLmZvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICBCTi5wcm90b3R5cGVbU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKV0gPSBpbnNwZWN0O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gaW5zcGVjdDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLmluc3BlY3QgPSBpbnNwZWN0O1xuICB9XG5cbiAgZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH1cblxuICAvKlxuXG4gIHZhciB6ZXJvcyA9IFtdO1xuICB2YXIgZ3JvdXBTaXplcyA9IFtdO1xuICB2YXIgZ3JvdXBCYXNlcyA9IFtdO1xuXG4gIHZhciBzID0gJyc7XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBCTi53b3JkU2l6ZSkge1xuICAgIHplcm9zW2ldID0gcztcbiAgICBzICs9ICcwJztcbiAgfVxuICBncm91cFNpemVzWzBdID0gMDtcbiAgZ3JvdXBTaXplc1sxXSA9IDA7XG4gIGdyb3VwQmFzZXNbMF0gPSAwO1xuICBncm91cEJhc2VzWzFdID0gMDtcbiAgdmFyIGJhc2UgPSAyIC0gMTtcbiAgd2hpbGUgKCsrYmFzZSA8IDM2ICsgMSkge1xuICAgIHZhciBncm91cFNpemUgPSAwO1xuICAgIHZhciBncm91cEJhc2UgPSAxO1xuICAgIHdoaWxlIChncm91cEJhc2UgPCAoMSA8PCBCTi53b3JkU2l6ZSkgLyBiYXNlKSB7XG4gICAgICBncm91cEJhc2UgKj0gYmFzZTtcbiAgICAgIGdyb3VwU2l6ZSArPSAxO1xuICAgIH1cbiAgICBncm91cFNpemVzW2Jhc2VdID0gZ3JvdXBTaXplO1xuICAgIGdyb3VwQmFzZXNbYmFzZV0gPSBncm91cEJhc2U7XG4gIH1cblxuICAqL1xuXG4gIHZhciB6ZXJvcyA9IFtcbiAgICAnJyxcbiAgICAnMCcsXG4gICAgJzAwJyxcbiAgICAnMDAwJyxcbiAgICAnMDAwMCcsXG4gICAgJzAwMDAwJyxcbiAgICAnMDAwMDAwJyxcbiAgICAnMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCdcbiAgXTtcblxuICB2YXIgZ3JvdXBTaXplcyA9IFtcbiAgICAwLCAwLFxuICAgIDI1LCAxNiwgMTIsIDExLCAxMCwgOSwgOCxcbiAgICA4LCA3LCA3LCA3LCA3LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1XG4gIF07XG5cbiAgdmFyIGdyb3VwQmFzZXMgPSBbXG4gICAgMCwgMCxcbiAgICAzMzU1NDQzMiwgNDMwNDY3MjEsIDE2Nzc3MjE2LCA0ODgyODEyNSwgNjA0NjYxNzYsIDQwMzUzNjA3LCAxNjc3NzIxNixcbiAgICA0MzA0NjcyMSwgMTAwMDAwMDAsIDE5NDg3MTcxLCAzNTgzMTgwOCwgNjI3NDg1MTcsIDc1Mjk1MzYsIDExMzkwNjI1LFxuICAgIDE2Nzc3MjE2LCAyNDEzNzU2OSwgMzQwMTIyMjQsIDQ3MDQ1ODgxLCA2NDAwMDAwMCwgNDA4NDEwMSwgNTE1MzYzMixcbiAgICA2NDM2MzQzLCA3OTYyNjI0LCA5NzY1NjI1LCAxMTg4MTM3NiwgMTQzNDg5MDcsIDE3MjEwMzY4LCAyMDUxMTE0OSxcbiAgICAyNDMwMDAwMCwgMjg2MjkxNTEsIDMzNTU0NDMyLCAzOTEzNTM5MywgNDU0MzU0MjQsIDUyNTIxODc1LCA2MDQ2NjE3NlxuICBdO1xuXG4gIEJOLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nIChiYXNlLCBwYWRkaW5nKSB7XG4gICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgcGFkZGluZyA9IHBhZGRpbmcgfCAwIHx8IDE7XG5cbiAgICB2YXIgb3V0O1xuICAgIGlmIChiYXNlID09PSAxNiB8fCBiYXNlID09PSAnaGV4Jykge1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgb2ZmID0gMDtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldO1xuICAgICAgICB2YXIgd29yZCA9ICgoKHcgPDwgb2ZmKSB8IGNhcnJ5KSAmIDB4ZmZmZmZmKS50b1N0cmluZygxNik7XG4gICAgICAgIGNhcnJ5ID0gKHcgPj4+ICgyNCAtIG9mZikpICYgMHhmZmZmZmY7XG4gICAgICAgIGlmIChjYXJyeSAhPT0gMCB8fCBpICE9PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1s2IC0gd29yZC5sZW5ndGhdICsgd29yZCArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSB3b3JkICsgb3V0O1xuICAgICAgICB9XG4gICAgICAgIG9mZiArPSAyO1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICAgIG91dCA9IGNhcnJ5LnRvU3RyaW5nKDE2KSArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KSB7XG4gICAgICAvLyB2YXIgZ3JvdXBTaXplID0gTWF0aC5mbG9vcihCTi53b3JkU2l6ZSAqIE1hdGguTE4yIC8gTWF0aC5sb2coYmFzZSkpO1xuICAgICAgdmFyIGdyb3VwU2l6ZSA9IGdyb3VwU2l6ZXNbYmFzZV07XG4gICAgICAvLyB2YXIgZ3JvdXBCYXNlID0gTWF0aC5wb3coYmFzZSwgZ3JvdXBTaXplKTtcbiAgICAgIHZhciBncm91cEJhc2UgPSBncm91cEJhc2VzW2Jhc2VdO1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgYyA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGMubmVnYXRpdmUgPSAwO1xuICAgICAgd2hpbGUgKCFjLmlzWmVybygpKSB7XG4gICAgICAgIHZhciByID0gYy5tb2Rybihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNiwgMik7XG4gIH07XG5cbiAgaWYgKEJ1ZmZlcikge1xuICAgIEJOLnByb3RvdHlwZS50b0J1ZmZlciA9IGZ1bmN0aW9uIHRvQnVmZmVyIChlbmRpYW4sIGxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQnVmZmVyLCBlbmRpYW4sIGxlbmd0aCk7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gdG9BcnJheSAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIHZhciBhbGxvY2F0ZSA9IGZ1bmN0aW9uIGFsbG9jYXRlIChBcnJheVR5cGUsIHNpemUpIHtcbiAgICBpZiAoQXJyYXlUeXBlLmFsbG9jVW5zYWZlKSB7XG4gICAgICByZXR1cm4gQXJyYXlUeXBlLmFsbG9jVW5zYWZlKHNpemUpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEFycmF5VHlwZShzaXplKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHRoaXMuX3N0cmlwKCk7XG5cbiAgICB2YXIgYnl0ZUxlbmd0aCA9IHRoaXMuYnl0ZUxlbmd0aCgpO1xuICAgIHZhciByZXFMZW5ndGggPSBsZW5ndGggfHwgTWF0aC5tYXgoMSwgYnl0ZUxlbmd0aCk7XG4gICAgYXNzZXJ0KGJ5dGVMZW5ndGggPD0gcmVxTGVuZ3RoLCAnYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCcpO1xuICAgIGFzc2VydChyZXFMZW5ndGggPiAwLCAnUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwJyk7XG5cbiAgICB2YXIgcmVzID0gYWxsb2NhdGUoQXJyYXlUeXBlLCByZXFMZW5ndGgpO1xuICAgIHZhciBwb3N0Zml4ID0gZW5kaWFuID09PSAnbGUnID8gJ0xFJyA6ICdCRSc7XG4gICAgdGhpc1snX3RvQXJyYXlMaWtlJyArIHBvc3RmaXhdKHJlcywgYnl0ZUxlbmd0aCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX3RvQXJyYXlMaWtlTEUgPSBmdW5jdGlvbiBfdG9BcnJheUxpa2VMRSAocmVzLCBieXRlTGVuZ3RoKSB7XG4gICAgdmFyIHBvc2l0aW9uID0gMDtcbiAgICB2YXIgY2FycnkgPSAwO1xuXG4gICAgZm9yICh2YXIgaSA9IDAsIHNoaWZ0ID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3b3JkID0gKHRoaXMud29yZHNbaV0gPDwgc2hpZnQpIHwgY2Fycnk7XG5cbiAgICAgIHJlc1twb3NpdGlvbisrXSA9IHdvcmQgJiAweGZmO1xuICAgICAgaWYgKHBvc2l0aW9uIDwgcmVzLmxlbmd0aCkge1xuICAgICAgICByZXNbcG9zaXRpb24rK10gPSAod29yZCA+PiA4KSAmIDB4ZmY7XG4gICAgICB9XG4gICAgICBpZiAocG9zaXRpb24gPCByZXMubGVuZ3RoKSB7XG4gICAgICAgIHJlc1twb3NpdGlvbisrXSA9ICh3b3JkID4+IDE2KSAmIDB4ZmY7XG4gICAgICB9XG5cbiAgICAgIGlmIChzaGlmdCA9PT0gNikge1xuICAgICAgICBpZiAocG9zaXRpb24gPCByZXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmVzW3Bvc2l0aW9uKytdID0gKHdvcmQgPj4gMjQpICYgMHhmZjtcbiAgICAgICAgfVxuICAgICAgICBjYXJyeSA9IDA7XG4gICAgICAgIHNoaWZ0ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhcnJ5ID0gd29yZCA+Pj4gMjQ7XG4gICAgICAgIHNoaWZ0ICs9IDI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uIDwgcmVzLmxlbmd0aCkge1xuICAgICAgcmVzW3Bvc2l0aW9uKytdID0gY2Fycnk7XG5cbiAgICAgIHdoaWxlIChwb3NpdGlvbiA8IHJlcy5sZW5ndGgpIHtcbiAgICAgICAgcmVzW3Bvc2l0aW9uKytdID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl90b0FycmF5TGlrZUJFID0gZnVuY3Rpb24gX3RvQXJyYXlMaWtlQkUgKHJlcywgYnl0ZUxlbmd0aCkge1xuICAgIHZhciBwb3NpdGlvbiA9IHJlcy5sZW5ndGggLSAxO1xuICAgIHZhciBjYXJyeSA9IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMCwgc2hpZnQgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHdvcmQgPSAodGhpcy53b3Jkc1tpXSA8PCBzaGlmdCkgfCBjYXJyeTtcblxuICAgICAgcmVzW3Bvc2l0aW9uLS1dID0gd29yZCAmIDB4ZmY7XG4gICAgICBpZiAocG9zaXRpb24gPj0gMCkge1xuICAgICAgICByZXNbcG9zaXRpb24tLV0gPSAod29yZCA+PiA4KSAmIDB4ZmY7XG4gICAgICB9XG4gICAgICBpZiAocG9zaXRpb24gPj0gMCkge1xuICAgICAgICByZXNbcG9zaXRpb24tLV0gPSAod29yZCA+PiAxNikgJiAweGZmO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2hpZnQgPT09IDYpIHtcbiAgICAgICAgaWYgKHBvc2l0aW9uID49IDApIHtcbiAgICAgICAgICByZXNbcG9zaXRpb24tLV0gPSAod29yZCA+PiAyNCkgJiAweGZmO1xuICAgICAgICB9XG4gICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgICAgc2hpZnQgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3b3JkID4+PiAyNDtcbiAgICAgICAgc2hpZnQgKz0gMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gPj0gMCkge1xuICAgICAgcmVzW3Bvc2l0aW9uLS1dID0gY2Fycnk7XG5cbiAgICAgIHdoaWxlIChwb3NpdGlvbiA+PSAwKSB7XG4gICAgICAgIHJlc1twb3NpdGlvbi0tXSA9IDA7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSA+Pj4gd2JpdCkgJiAweDAxO1xuICAgIH1cblxuICAgIHJldHVybiB3O1xuICB9XG5cbiAgLy8gTnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0c1xuICBCTi5wcm90b3R5cGUuemVyb0JpdHMgPSBmdW5jdGlvbiB6ZXJvQml0cyAoKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiAwO1xuXG4gICAgdmFyIHIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGIgPSB0aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2ldKTtcbiAgICAgIHIgKz0gYjtcbiAgICAgIGlmIChiICE9PSAyNikgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ieXRlTGVuZ3RoID0gZnVuY3Rpb24gYnl0ZUxlbmd0aCAoKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpIC8gOCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvVHdvcyA9IGZ1bmN0aW9uIHRvVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWJzKCkuaW5vdG4od2lkdGgpLmlhZGRuKDEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tVHdvcyA9IGZ1bmN0aW9uIGZyb21Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLnRlc3RuKHdpZHRoIC0gMSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdG4od2lkdGgpLmlhZGRuKDEpLmluZWcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiBpc05lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmUgIT09IDA7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5lZyA9IGZ1bmN0aW9uIGluZWcgKCkge1xuICAgIGlmICghdGhpcy5pc1plcm8oKSkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdW9yID0gZnVuY3Rpb24gaXVvciAobnVtKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldIHwgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYW5kID0gZnVuY3Rpb24gaWFuZCAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVhbmQobnVtKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIGFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhbmQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVhbmQgPSBmdW5jdGlvbiB1YW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1YW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1YW5kKHRoaXMpO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXV4b3IgPSBmdW5jdGlvbiBpdXhvciAobnVtKSB7XG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhO1xuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV0gXiBiLndvcmRzW2ldO1xuICAgIH1cblxuICAgIGlmICh0aGlzICE9PSBhKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5peG9yID0gZnVuY3Rpb24gaXhvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXV4b3IobnVtKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIHhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5peG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml4b3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnV4b3IgPSBmdW5jdGlvbiB1eG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1eG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1eG9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIE5vdCBgYHRoaXNgYCB3aXRoIGBgd2lkdGhgYCBiaXR3aWR0aFxuICBCTi5wcm90b3R5cGUuaW5vdG4gPSBmdW5jdGlvbiBpbm90biAod2lkdGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyAmJiB3aWR0aCA+PSAwKTtcblxuICAgIHZhciBieXRlc05lZWRlZCA9IE1hdGguY2VpbCh3aWR0aCAvIDI2KSB8IDA7XG4gICAgdmFyIGJpdHNMZWZ0ID0gd2lkdGggJSAyNjtcblxuICAgIC8vIEV4dGVuZCB0aGUgYnVmZmVyIHdpdGggbGVhZGluZyB6ZXJvZXNcbiAgICB0aGlzLl9leHBhbmQoYnl0ZXNOZWVkZWQpO1xuXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgYnl0ZXNOZWVkZWQtLTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgY29tcGxldGUgd29yZHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzTmVlZGVkOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIHJlc2lkdWVcbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAoMHgzZmZmZmZmID4+ICgyNiAtIGJpdHNMZWZ0KSk7XG4gICAgfVxuXG4gICAgLy8gQW5kIHJlbW92ZSBsZWFkaW5nIHplcm9lc1xuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChudW0pIHtcbiAgICB2YXIgcjtcblxuICAgIC8vIG5lZ2F0aXZlICsgcG9zaXRpdmVcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG5cbiAgICAvLyBwb3NpdGl2ZSArIG5lZ2F0aXZlXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGhdID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIC8vIENvcHkgdGhlIHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgfSBlbHNlIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChudW0pIHtcbiAgICB2YXIgcmVzO1xuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDAgJiYgdGhpcy5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IHRoaXMuc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIGlmIChudW0ubmVnYXRpdmUgPT09IDAgJiYgdGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSBudW0uc3ViKHRoaXMpO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZChudW0pO1xuXG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhZGQodGhpcyk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChudW0pIHtcbiAgICAvLyB0aGlzIC0gKC1udW0pID0gdGhpcyArIG51bVxuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICB2YXIgciA9IHRoaXMuaWFkZChudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gLXRoaXMgLSBudW0gPSAtKHRoaXMgKyBudW0pXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZChudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmVcbiAgICB2YXIgY21wID0gdGhpcy5jbXAobnVtKTtcblxuICAgIC8vIE9wdGltaXphdGlvbiAtIHplcm9pZnlcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gYSA+IGJcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoY21wID4gMCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApIC0gKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIENvcHkgcmVzdCBvZiB0aGUgd29yZHNcbiAgICBpZiAoY2FycnkgPT09IDAgJiYgaSA8IGEubGVuZ3RoICYmIGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpKTtcblxuICAgIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3RyaXAoKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBzbWFsbE11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgdmFyIGxlbiA9IChzZWxmLmxlbmd0aCArIG51bS5sZW5ndGgpIHwgMDtcbiAgICBvdXQubGVuZ3RoID0gbGVuO1xuICAgIGxlbiA9IChsZW4gLSAxKSB8IDA7XG5cbiAgICAvLyBQZWVsIG9uZSBpdGVyYXRpb24gKGNvbXBpbGVyIGNhbid0IGRvIGl0LCBiZWNhdXNlIG9mIGNvZGUgY29tcGxleGl0eSlcbiAgICB2YXIgYSA9IHNlbGYud29yZHNbMF0gfCAwO1xuICAgIHZhciBiID0gbnVtLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICB2YXIgY2FycnkgPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgIG91dC53b3Jkc1swXSA9IGxvO1xuXG4gICAgZm9yICh2YXIgayA9IDE7IGsgPCBsZW47IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBjYXJyeSA+Pj4gMjY7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IChrIC0gaikgfCAwO1xuICAgICAgICBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICByID0gYSAqIGIgKyByd29yZDtcbiAgICAgICAgbmNhcnJ5ICs9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkIHwgMDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5IHwgMDtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeSB8IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0Ll9zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuX3N0cmlwKCk7XG4gIH1cblxuICBmdW5jdGlvbiBqdW1ib011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIC8vIFRlbXBvcmFyeSBkaXNhYmxlLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvYm4uanMvaXNzdWVzLzIxMVxuICAgIC8vIHZhciBmZnRtID0gbmV3IEZGVE0oKTtcbiAgICAvLyByZXR1cm4gZmZ0bS5tdWxwKHNlbGYsIG51bSwgb3V0KTtcbiAgICByZXR1cm4gYmlnTXVsVG8oc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuX3N0cmlwKCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgYHRoaXNgIGJ5IGBudW1gXG4gIEJOLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRoaXMubXVsVG8obnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGVtcGxveWluZyBGRlRcbiAgQk4ucHJvdG90eXBlLm11bGYgPSBmdW5jdGlvbiBtdWxmIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBNdWx0aXBsaWNhdGlvblxuICBCTi5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkubXVsVG8obnVtLCB0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW11bG4gPSBmdW5jdGlvbiBpbXVsbiAobnVtKSB7XG4gICAgdmFyIGlzTmVnTnVtID0gbnVtIDwgMDtcbiAgICBpZiAoaXNOZWdOdW0pIG51bSA9IC1udW07XG5cbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiBpc05lZ051bSA/IHRoaXMuaW5lZygpIDogdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubXVsbiA9IGZ1bmN0aW9uIG11bG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW11bG4obnVtKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKHRoaXMpO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKTtcbiAgfTtcblxuICAvLyBNYXRoLnBvdyhgdGhpc2AsIGBudW1gKVxuICBCTi5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChudW0pIHtcbiAgICB2YXIgdyA9IHRvQml0QXJyYXkobnVtKTtcbiAgICBpZiAody5sZW5ndGggPT09IDApIHJldHVybiBuZXcgQk4oMSk7XG5cbiAgICAvLyBTa2lwIGxlYWRpbmcgemVyb2VzXG4gICAgdmFyIHJlcyA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3Lmxlbmd0aDsgaSsrLCByZXMgPSByZXMuc3FyKCkpIHtcbiAgICAgIGlmICh3W2ldICE9PSAwKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoKytpIDwgdy5sZW5ndGgpIHtcbiAgICAgIGZvciAodmFyIHEgPSByZXMuc3FyKCk7IGkgPCB3Lmxlbmd0aDsgaSsrLCBxID0gcS5zcXIoKSkge1xuICAgICAgICBpZiAod1tpXSA9PT0gMCkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gcmVzLm11bChxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnQgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1c2hsbiA9IGZ1bmN0aW9uIGl1c2hsbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcbiAgICB2YXIgY2FycnlNYXNrID0gKDB4M2ZmZmZmZiA+Pj4gKDI2IC0gcikpIDw8ICgyNiAtIHIpO1xuICAgIHZhciBpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBuZXdDYXJyeSA9IHRoaXMud29yZHNbaV0gJiBjYXJyeU1hc2s7XG4gICAgICAgIHZhciBjID0gKCh0aGlzLndvcmRzW2ldIHwgMCkgLSBuZXdDYXJyeSkgPDwgcjtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGMgfCBjYXJyeTtcbiAgICAgICAgY2FycnkgPSBuZXdDYXJyeSA+Pj4gKDI2IC0gcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYXJyeSkge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHMgIT09IDApIHtcbiAgICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgc10gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCArPSBzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hsbiA9IGZ1bmN0aW9uIGlzaGxuIChiaXRzKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodCBpbi1wbGFjZVxuICAvLyBOT1RFOiBgaGludGAgaXMgYSBsb3dlc3QgYml0IGJlZm9yZSB0cmFpbGluZyB6ZXJvZXNcbiAgLy8gTk9URTogaWYgYGV4dGVuZGVkYCBpcyBwcmVzZW50IC0gaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBkZXN0cm95ZWQgYml0c1xuICBCTi5wcm90b3R5cGUuaXVzaHJuID0gZnVuY3Rpb24gaXVzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgaDtcbiAgICBpZiAoaGludCkge1xuICAgICAgaCA9IChoaW50IC0gKGhpbnQgJSAyNikpIC8gMjY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGggPSAwO1xuICAgIH1cblxuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gTWF0aC5taW4oKGJpdHMgLSByKSAvIDI2LCB0aGlzLmxlbmd0aCk7XG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgdmFyIG1hc2tlZFdvcmRzID0gZXh0ZW5kZWQ7XG5cbiAgICBoIC09IHM7XG4gICAgaCA9IE1hdGgubWF4KDAsIGgpO1xuXG4gICAgLy8gRXh0ZW5kZWQgbW9kZSwgY29weSBtYXNrZWQgcGFydFxuICAgIGlmIChtYXNrZWRXb3Jkcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgbWFza2VkV29yZHMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuICAgICAgbWFza2VkV29yZHMubGVuZ3RoID0gcztcbiAgICB9XG5cbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgLy8gTm8tb3AsIHdlIHNob3VsZCBub3QgbW92ZSBhbnl0aGluZyBhdCBhbGxcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gcykge1xuICAgICAgdGhpcy5sZW5ndGggLT0gcztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2kgKyBzXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiAoY2FycnkgIT09IDAgfHwgaSA+PSBoKTsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IChjYXJyeSA8PCAoMjYgLSByKSkgfCAod29yZCA+Pj4gcik7XG4gICAgICBjYXJyeSA9IHdvcmQgJiBtYXNrO1xuICAgIH1cblxuICAgIC8vIFB1c2ggY2FycmllZCBiaXRzIGFzIGEgbWFza1xuICAgIGlmIChtYXNrZWRXb3JkcyAmJiBjYXJyeSAhPT0gMCkge1xuICAgICAgbWFza2VkV29yZHMud29yZHNbbWFza2VkV29yZHMubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyXG4gIEJOLnByb3RvdHlwZS5tYXNrbiA9IGZ1bmN0aW9uIG1hc2tuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oYml0cyk7XG4gIH07XG5cbiAgLy8gQWRkIHBsYWluIG51bWJlciBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlhZGRuID0gZnVuY3Rpb24gaWFkZG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlzdWJuKC1udW0pO1xuXG4gICAgLy8gUG9zc2libGUgc2lnbiBjaGFuZ2VcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmICh0aGlzLndvcmRzWzBdIHwgMCkgPD0gbnVtKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gPSBudW0gLSAodGhpcy53b3Jkc1swXSB8IDApO1xuICAgICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pc3VibihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aG91dCBjaGVja3NcbiAgICByZXR1cm4gdGhpcy5faWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lhZGRuID0gZnVuY3Rpb24gX2lhZGRuIChudW0pIHtcbiAgICB0aGlzLndvcmRzWzBdICs9IG51bTtcblxuICAgIC8vIENhcnJ5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldID49IDB4NDAwMDAwMDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldIC09IDB4NDAwMDAwMDtcbiAgICAgIGlmIChpID09PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0rKztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSArIDEpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgcGxhaW4gbnVtYmVyIGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pc3VibiA9IGZ1bmN0aW9uIGlzdWJuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pYWRkbigtbnVtKTtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZG4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy53b3Jkc1swXSAtPSBudW07XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA8IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAtdGhpcy53b3Jkc1swXTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDYXJyeVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldIDwgMDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gKz0gMHg0MDAwMDAwO1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSAtPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuXG4gICAgLy8gU3VidHJhY3Rpb24gb3ZlcmZsb3dcbiAgICBhc3NlcnQoY2FycnkgPT09IC0xKTtcbiAgICBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAtKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl93b3JkRGl2ID0gZnVuY3Rpb24gX3dvcmREaXYgKG51bSwgbW9kZSkge1xuICAgIHZhciBzaGlmdCA9IHRoaXMubGVuZ3RoIC0gbnVtLmxlbmd0aDtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtO1xuXG4gICAgLy8gTm9ybWFsaXplXG4gICAgdmFyIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgdmFyIGJoaUJpdHMgPSB0aGlzLl9jb3VudEJpdHMoYmhpKTtcbiAgICBzaGlmdCA9IDI2IC0gYmhpQml0cztcbiAgICBpZiAoc2hpZnQgIT09IDApIHtcbiAgICAgIGIgPSBiLnVzaGxuKHNoaWZ0KTtcbiAgICAgIGEuaXVzaGxuKHNoaWZ0KTtcbiAgICAgIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBxdW90aWVudFxuICAgIHZhciBtID0gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAgICB2YXIgcTtcblxuICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgcSA9IG5ldyBCTihudWxsKTtcbiAgICAgIHEubGVuZ3RoID0gbSArIDE7XG4gICAgICBxLndvcmRzID0gbmV3IEFycmF5KHEubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcS5sZW5ndGg7IGkrKykge1xuICAgICAgICBxLndvcmRzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGlmZiA9IGEuY2xvbmUoKS5faXNobG5zdWJtdWwoYiwgMSwgbSk7XG4gICAgaWYgKGRpZmYubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIGEgPSBkaWZmO1xuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1ttXSA9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IG0gLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgdmFyIHFqID0gKGEud29yZHNbYi5sZW5ndGggKyBqXSB8IDApICogMHg0MDAwMDAwICtcbiAgICAgICAgKGEud29yZHNbYi5sZW5ndGggKyBqIC0gMV0gfCAwKTtcblxuICAgICAgLy8gTk9URTogKHFqIC8gYmhpKSBpcyAoMHgzZmZmZmZmICogMHg0MDAwMDAwICsgMHgzZmZmZmZmKSAvIDB4MjAwMDAwMCBtYXhcbiAgICAgIC8vICgweDdmZmZmZmYpXG4gICAgICBxaiA9IE1hdGgubWluKChxaiAvIGJoaSkgfCAwLCAweDNmZmZmZmYpO1xuXG4gICAgICBhLl9pc2hsbnN1Ym11bChiLCBxaiwgaik7XG4gICAgICB3aGlsZSAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBxai0tO1xuICAgICAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgYS5faXNobG5zdWJtdWwoYiwgMSwgaik7XG4gICAgICAgIGlmICghYS5pc1plcm8oKSkge1xuICAgICAgICAgIGEubmVnYXRpdmUgXj0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1tqXSA9IHFqO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocSkge1xuICAgICAgcS5fc3RyaXAoKTtcbiAgICB9XG4gICAgYS5fc3RyaXAoKTtcblxuICAgIC8vIERlbm9ybWFsaXplXG4gICAgaWYgKG1vZGUgIT09ICdkaXYnICYmIHNoaWZ0ICE9PSAwKSB7XG4gICAgICBhLml1c2hybihzaGlmdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpdjogcSB8fCBudWxsLFxuICAgICAgbW9kOiBhXG4gICAgfTtcbiAgfTtcblxuICAvLyBOT1RFOiAxKSBgbW9kZWAgY2FuIGJlIHNldCB0byBgbW9kYCB0byByZXF1ZXN0IG1vZCBvbmx5LFxuICAvLyAgICAgICB0byBgZGl2YCB0byByZXF1ZXN0IGRpdiBvbmx5LCBvciBiZSBhYnNlbnQgdG9cbiAgLy8gICAgICAgcmVxdWVzdCBib3RoIGRpdiAmIG1vZFxuICAvLyAgICAgICAyKSBgcG9zaXRpdmVgIGlzIHRydWUgaWYgdW5zaWduZWQgbW9kIGlzIHJlcXVlc3RlZFxuICBCTi5wcm90b3R5cGUuZGl2bW9kID0gZnVuY3Rpb24gZGl2bW9kIChudW0sIG1vZGUsIHBvc2l0aXZlKSB7XG4gICAgYXNzZXJ0KCFudW0uaXNaZXJvKCkpO1xuXG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IG5ldyBCTigwKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZGl2LCBtb2QsIHJlcztcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pYWRkKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IHJlcy5tb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCh0aGlzLm5lZ2F0aXZlICYgbnVtLm5lZ2F0aXZlKSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaXN1YihudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogcmVzLmRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZSBhdCB0aGlzIHBvaW50XG5cbiAgICAvLyBTdHJpcCBib3RoIG51bWJlcnMgdG8gYXBwcm94aW1hdGUgc2hpZnQgdmFsdWVcbiAgICBpZiAobnVtLmxlbmd0aCA+IHRoaXMubGVuZ3RoIHx8IHRoaXMuY21wKG51bSkgPCAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiB0aGlzXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFZlcnkgc2hvcnQgcmVkdWN0aW9uXG4gICAgaWYgKG51bS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGlmIChtb2RlID09PSAnZGl2Jykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgICAgbW9kOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlID09PSAnbW9kJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogbnVsbCxcbiAgICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZHJuKG51bS53b3Jkc1swXSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kcm4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgKHIyID09PSAxICYmIGNtcCA9PT0gMCkpIHJldHVybiBkbS5kaXY7XG5cbiAgICAvLyBSb3VuZCB1cFxuICAgIHJldHVybiBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5kaXYuaXN1Ym4oMSkgOiBkbS5kaXYuaWFkZG4oMSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm1vZHJuID0gZnVuY3Rpb24gbW9kcm4gKG51bSkge1xuICAgIHZhciBpc05lZ051bSA9IG51bSA8IDA7XG4gICAgaWYgKGlzTmVnTnVtKSBudW0gPSAtbnVtO1xuXG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzTmVnTnVtID8gLWFjYyA6IGFjYztcbiAgfTtcblxuICAvLyBXQVJOSU5HOiBERVBSRUNBVEVEXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kcm4obnVtKTtcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIHZhciBpc05lZ051bSA9IG51bSA8IDA7XG4gICAgaWYgKGlzTmVnTnVtKSBudW0gPSAtbnVtO1xuXG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICsgY2FycnkgKiAweDQwMDAwMDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKHcgLyBudW0pIHwgMDtcbiAgICAgIGNhcnJ5ID0gdyAlIG51bTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdHJpcCgpO1xuICAgIHJldHVybiBpc05lZ051bSA/IHRoaXMuaW5lZygpIDogdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLl9zdHJpcCgpO1xuXG4gICAgdmFyIHJlcztcbiAgICBpZiAodGhpcy5sZW5ndGggPiAxKSB7XG4gICAgICByZXMgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobmVnYXRpdmUpIHtcbiAgICAgICAgbnVtID0gLW51bTtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYsICdOdW1iZXIgaXMgdG9vIGJpZycpO1xuXG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbMF0gfCAwO1xuICAgICAgcmVzID0gdyA9PT0gbnVtID8gMCA6IHcgPCBudW0gPyAtMSA6IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb21wYXJlIHR3byBudW1iZXJzIGFuZCByZXR1cm46XG4gIC8vIDEgLSBpZiBgdGhpc2AgPiBgbnVtYFxuICAvLyAwIC0gaWYgYHRoaXNgID09IGBudW1gXG4gIC8vIC0xIC0gaWYgYHRoaXNgIDwgYG51bWBcbiAgQk4ucHJvdG90eXBlLmNtcCA9IGZ1bmN0aW9uIGNtcCAobnVtKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gMTtcblxuICAgIHZhciByZXMgPSB0aGlzLnVjbXAobnVtKTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gVW5zaWduZWQgY29tcGFyaXNvblxuICBCTi5wcm90b3R5cGUudWNtcCA9IGZ1bmN0aW9uIHVjbXAgKG51bSkge1xuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGhhdmUgdGhlIHNhbWUgc2lnblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiAxO1xuICAgIGlmICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHJldHVybiAtMTtcblxuICAgIHZhciByZXMgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgYSA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdmFyIGIgPSBudW0ud29yZHNbaV0gfCAwO1xuXG4gICAgICBpZiAoYSA9PT0gYikgY29udGludWU7XG4gICAgICBpZiAoYSA8IGIpIHtcbiAgICAgICAgcmVzID0gLTE7XG4gICAgICB9IGVsc2UgaWYgKGEgPiBiKSB7XG4gICAgICAgIHJlcyA9IDE7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RuID0gZnVuY3Rpb24gZ3RuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ID0gZnVuY3Rpb24gZ3QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGVuID0gZnVuY3Rpb24gZ3RlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZSA9IGZ1bmN0aW9uIGd0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRuID0gZnVuY3Rpb24gbHRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdCA9IGZ1bmN0aW9uIGx0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZW4gPSBmdW5jdGlvbiBsdGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlID0gZnVuY3Rpb24gbHRlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcW4gPSBmdW5jdGlvbiBlcW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDA7XG4gIH07XG5cbiAgLy9cbiAgLy8gQSByZWR1Y2UgY29udGV4dCwgY291bGQgYmUgdXNpbmcgbW9udGdvbWVyeSBvciBzb21ldGhpbmcgYmV0dGVyLCBkZXBlbmRpbmdcbiAgLy8gb24gdGhlIGBtYCBpdHNlbGYuXG4gIC8vXG4gIEJOLnJlZCA9IGZ1bmN0aW9uIHJlZCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBSZWQobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9SZWQgPSBmdW5jdGlvbiB0b1JlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgcmV0dXJuIGN0eC5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21SZWQgPSBmdW5jdGlvbiBmcm9tUmVkICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZm9yY2VSZWQgPSBmdW5jdGlvbiBfZm9yY2VSZWQgKGN0eCkge1xuICAgIHRoaXMucmVkID0gY3R4O1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mb3JjZVJlZCA9IGZ1bmN0aW9uIGZvcmNlUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRBZGQgPSBmdW5jdGlvbiByZWRBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElBZGQgPSBmdW5jdGlvbiByZWRJQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFN1YiA9IGZ1bmN0aW9uIHJlZFN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVN1YiA9IGZ1bmN0aW9uIHJlZElTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU2hsID0gZnVuY3Rpb24gcmVkU2hsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNobCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRNdWwgPSBmdW5jdGlvbiByZWRNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5tdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSU11bCA9IGZ1bmN0aW9uIHJlZElNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNxciA9IGZ1bmN0aW9uIHJlZFNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXIodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTcXIgPSBmdW5jdGlvbiByZWRJU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3FyKHRoaXMpO1xuICB9O1xuXG4gIC8vIFNxdWFyZSByb290IG92ZXIgcFxuICBCTi5wcm90b3R5cGUucmVkU3FydCA9IGZ1bmN0aW9uIHJlZFNxcnQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcnQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEludm0gPSBmdW5jdGlvbiByZWRJbnZtICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbnZtKHRoaXMpO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2AgJSBgcmVkIG1vZHVsb2BcbiAgQk4ucHJvdG90eXBlLnJlZE5lZyA9IGZ1bmN0aW9uIHJlZE5lZyAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5uZWcodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFBvdyA9IGZ1bmN0aW9uIHJlZFBvdyAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkICYmICFudW0ucmVkLCAncmVkUG93KG5vcm1hbE51bSknKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQucG93KHRoaXMsIG51bSk7XG4gIH07XG5cbiAgLy8gUHJpbWUgbnVtYmVycyB3aXRoIGVmZmljaWVudCByZWR1Y3Rpb25cbiAgdmFyIHByaW1lcyA9IHtcbiAgICBrMjU2OiBudWxsLFxuICAgIHAyMjQ6IG51bGwsXG4gICAgcDE5MjogbnVsbCxcbiAgICBwMjU1MTk6IG51bGxcbiAgfTtcblxuICAvLyBQc2V1ZG8tTWVyc2VubmUgcHJpbWVcbiAgZnVuY3Rpb24gTVByaW1lIChuYW1lLCBwKSB7XG4gICAgLy8gUCA9IDIgXiBOIC0gS1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wID0gbmV3IEJOKHAsIDE2KTtcbiAgICB0aGlzLm4gPSB0aGlzLnAuYml0TGVuZ3RoKCk7XG4gICAgdGhpcy5rID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKTtcblxuICAgIHRoaXMudG1wID0gdGhpcy5fdG1wKCk7XG4gIH1cblxuICBNUHJpbWUucHJvdG90eXBlLl90bXAgPSBmdW5jdGlvbiBfdG1wICgpIHtcbiAgICB2YXIgdG1wID0gbmV3IEJOKG51bGwpO1xuICAgIHRtcC53b3JkcyA9IG5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uIC8gMTMpKTtcbiAgICByZXR1cm4gdG1wO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaXJlZHVjZSA9IGZ1bmN0aW9uIGlyZWR1Y2UgKG51bSkge1xuICAgIC8vIEFzc3VtZXMgdGhhdCBgbnVtYCBpcyBsZXNzIHRoYW4gYFBeMmBcbiAgICAvLyBudW0gPSBISSAqICgyIF4gTiAtIEspICsgSEkgKiBLICsgTE8gPSBISSAqIEsgKyBMTyAobW9kIFApXG4gICAgdmFyIHIgPSBudW07XG4gICAgdmFyIHJsZW47XG5cbiAgICBkbyB7XG4gICAgICB0aGlzLnNwbGl0KHIsIHRoaXMudG1wKTtcbiAgICAgIHIgPSB0aGlzLmltdWxLKHIpO1xuICAgICAgciA9IHIuaWFkZCh0aGlzLnRtcCk7XG4gICAgICBybGVuID0gci5iaXRMZW5ndGgoKTtcbiAgICB9IHdoaWxlIChybGVuID4gdGhpcy5uKTtcblxuICAgIHZhciBjbXAgPSBybGVuIDwgdGhpcy5uID8gLTEgOiByLnVjbXAodGhpcy5wKTtcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICByLndvcmRzWzBdID0gMDtcbiAgICAgIHIubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKGNtcCA+IDApIHtcbiAgICAgIHIuaXN1Yih0aGlzLnApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoci5zdHJpcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIHIgaXMgYSBCTiB2NCBpbnN0YW5jZVxuICAgICAgICByLnN0cmlwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByIGlzIGEgQk4gdjUgaW5zdGFuY2VcbiAgICAgICAgci5fc3RyaXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcblxuICAgIG1vdmUoYSwgYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpKTtcbiAgICByZXR1cm4gYTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm0uc3ViKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5hZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlhZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLnN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlzdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNobCA9IGZ1bmN0aW9uIHNobCAoYSwgbnVtKSB7XG4gICAgdGhpcy5fdmVyaWZ5MShhKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEudXNobG4obnVtKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLmltdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEubXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bChhLCBhLmNsb25lKCkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKGEsIGEpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FydCA9IGZ1bmN0aW9uIHNxcnQgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciBtb2QzID0gdGhpcy5tLmFuZGxuKDMpO1xuICAgIGFzc2VydChtb2QzICUgMiA9PT0gMSk7XG5cbiAgICAvLyBGYXN0IGNhc2VcbiAgICBpZiAobW9kMyA9PT0gMykge1xuICAgICAgdmFyIHBvdyA9IHRoaXMubS5hZGQobmV3IEJOKDEpKS5pdXNocm4oMik7XG4gICAgICByZXR1cm4gdGhpcy5wb3coYSwgcG93KTtcbiAgICB9XG5cbiAgICAvLyBUb25lbGxpLVNoYW5rcyBhbGdvcml0aG0gKFRvdGFsbHkgdW5vcHRpbWl6ZWQgYW5kIHNsb3cpXG4gICAgLy9cbiAgICAvLyBGaW5kIFEgYW5kIFMsIHRoYXQgUSAqIDIgXiBTID0gKFAgLSAxKVxuICAgIHZhciBxID0gdGhpcy5tLnN1Ym4oMSk7XG4gICAgdmFyIHMgPSAwO1xuICAgIHdoaWxlICghcS5pc1plcm8oKSAmJiBxLmFuZGxuKDEpID09PSAwKSB7XG4gICAgICBzKys7XG4gICAgICBxLml1c2hybigxKTtcbiAgICB9XG4gICAgYXNzZXJ0KCFxLmlzWmVybygpKTtcblxuICAgIHZhciBvbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgdmFyIG5PbmUgPSBvbmUucmVkTmVnKCk7XG5cbiAgICAvLyBGaW5kIHF1YWRyYXRpYyBub24tcmVzaWR1ZVxuICAgIC8vIE5PVEU6IE1heCBpcyBzdWNoIGJlY2F1c2Ugb2YgZ2VuZXJhbGl6ZWQgUmllbWFubiBoeXBvdGhlc2lzLlxuICAgIHZhciBscG93ID0gdGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpO1xuICAgIHZhciB6ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIHogPSBuZXcgQk4oMiAqIHogKiB6KS50b1JlZCh0aGlzKTtcblxuICAgIHdoaWxlICh0aGlzLnBvdyh6LCBscG93KS5jbXAobk9uZSkgIT09IDApIHtcbiAgICAgIHoucmVkSUFkZChuT25lKTtcbiAgICB9XG5cbiAgICB2YXIgYyA9IHRoaXMucG93KHosIHEpO1xuICAgIHZhciByID0gdGhpcy5wb3coYSwgcS5hZGRuKDEpLml1c2hybigxKSk7XG4gICAgdmFyIHQgPSB0aGlzLnBvdyhhLCBxKTtcbiAgICB2YXIgbSA9IHM7XG4gICAgd2hpbGUgKHQuY21wKG9uZSkgIT09IDApIHtcbiAgICAgIHZhciB0bXAgPSB0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IHRtcC5jbXAob25lKSAhPT0gMDsgaSsrKSB7XG4gICAgICAgIHRtcCA9IHRtcC5yZWRTcXIoKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydChpIDwgbSk7XG4gICAgICB2YXIgYiA9IHRoaXMucG93KGMsIG5ldyBCTigxKS5pdXNobG4obSAtIGkgLSAxKSk7XG5cbiAgICAgIHIgPSByLnJlZE11bChiKTtcbiAgICAgIGMgPSBiLnJlZFNxcigpO1xuICAgICAgdCA9IHQucmVkTXVsKGMpO1xuICAgICAgbSA9IGk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIHZhciBpbnYgPSBhLl9pbnZtcCh0aGlzLm0pO1xuICAgIGlmIChpbnYubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGludi5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludikucmVkTmVnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KTtcbiAgICB9XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKGEsIG51bSkge1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgaWYgKG51bS5jbXBuKDEpID09PSAwKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIHdpbmRvd1NpemUgPSA0O1xuICAgIHZhciB3bmQgPSBuZXcgQXJyYXkoMSA8PCB3aW5kb3dTaXplKTtcbiAgICB3bmRbMF0gPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgd25kWzFdID0gYTtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IHduZC5sZW5ndGg7IGkrKykge1xuICAgICAgd25kW2ldID0gdGhpcy5tdWwod25kW2kgLSAxXSwgYSk7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IHduZFswXTtcbiAgICB2YXIgY3VycmVudCA9IDA7XG4gICAgdmFyIGN1cnJlbnRMZW4gPSAwO1xuICAgIHZhciBzdGFydCA9IG51bS5iaXRMZW5ndGgoKSAlIDI2O1xuICAgIGlmIChzdGFydCA9PT0gMCkge1xuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSBudW0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gbnVtLndvcmRzW2ldO1xuICAgICAgZm9yICh2YXIgaiA9IHN0YXJ0IC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgdmFyIGJpdCA9ICh3b3JkID4+IGopICYgMTtcbiAgICAgICAgaWYgKHJlcyAhPT0gd25kWzBdKSB7XG4gICAgICAgICAgcmVzID0gdGhpcy5zcXIocmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXQgPT09IDAgJiYgY3VycmVudCA9PT0gMCkge1xuICAgICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudCA8PD0gMTtcbiAgICAgICAgY3VycmVudCB8PSBiaXQ7XG4gICAgICAgIGN1cnJlbnRMZW4rKztcbiAgICAgICAgaWYgKGN1cnJlbnRMZW4gIT09IHdpbmRvd1NpemUgJiYgKGkgIT09IDAgfHwgaiAhPT0gMCkpIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHRoaXMubXVsKHJlcywgd25kW2N1cnJlbnRdKTtcbiAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgIGN1cnJlbnQgPSAwO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICB2YXIgciA9IG51bS51bW9kKHRoaXMubSk7XG5cbiAgICByZXR1cm4gciA9PT0gbnVtID8gci5jbG9uZSgpIDogcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByZXMgPSBudW0uY2xvbmUoKTtcbiAgICByZXMucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vXG4gIC8vIE1vbnRnb21lcnkgbWV0aG9kIGVuZ2luZVxuICAvL1xuXG4gIEJOLm1vbnQgPSBmdW5jdGlvbiBtb250IChudW0pIHtcbiAgICByZXR1cm4gbmV3IE1vbnQobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBNb250IChtKSB7XG4gICAgUmVkLmNhbGwodGhpcywgbSk7XG5cbiAgICB0aGlzLnNoaWZ0ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIGlmICh0aGlzLnNoaWZ0ICUgMjYgIT09IDApIHtcbiAgICAgIHRoaXMuc2hpZnQgKz0gMjYgLSAodGhpcy5zaGlmdCAlIDI2KTtcbiAgICB9XG5cbiAgICB0aGlzLnIgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpO1xuICAgIHRoaXMucjIgPSB0aGlzLmltb2QodGhpcy5yLnNxcigpKTtcbiAgICB0aGlzLnJpbnYgPSB0aGlzLnIuX2ludm1wKHRoaXMubSk7XG5cbiAgICB0aGlzLm1pbnYgPSB0aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSk7XG4gICAgdGhpcy5taW52ID0gdGhpcy5taW52LnVtb2QodGhpcy5yKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLnIuc3ViKHRoaXMubWludik7XG4gIH1cbiAgaW5oZXJpdHMoTW9udCwgUmVkKTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmltb2QobnVtLnVzaGxuKHRoaXMuc2hpZnQpKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgciA9IHRoaXMuaW1vZChudW0ubXVsKHRoaXMucmludikpO1xuICAgIHIucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHtcbiAgICAgIGEud29yZHNbMF0gPSAwO1xuICAgICAgYS5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgdmFyIHQgPSBhLmltdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG5cbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMCkuX2ZvcmNlUmVkKHRoaXMpO1xuXG4gICAgdmFyIHQgPSBhLm11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgLy8gKEFSKV4tMSAqIFJeMiA9IChBXi0xICogUl4tMSkgKiBSXjIgPSBBXi0xICogUlxuICAgIHZhciByZXMgPSB0aGlzLmltb2QoYS5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpO1xuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xufSkodHlwZW9mIG1vZHVsZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbW9kdWxlLCB0aGlzKTtcbiIsInZhciByO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHJhbmQobGVuKSB7XG4gIGlmICghcilcbiAgICByID0gbmV3IFJhbmQobnVsbCk7XG5cbiAgcmV0dXJuIHIuZ2VuZXJhdGUobGVuKTtcbn07XG5cbmZ1bmN0aW9uIFJhbmQocmFuZCkge1xuICB0aGlzLnJhbmQgPSByYW5kO1xufVxubW9kdWxlLmV4cG9ydHMuUmFuZCA9IFJhbmQ7XG5cblJhbmQucHJvdG90eXBlLmdlbmVyYXRlID0gZnVuY3Rpb24gZ2VuZXJhdGUobGVuKSB7XG4gIHJldHVybiB0aGlzLl9yYW5kKGxlbik7XG59O1xuXG4vLyBFbXVsYXRlIGNyeXB0byBBUEkgdXNpbmcgcmFuZHlcblJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICBpZiAodGhpcy5yYW5kLmdldEJ5dGVzKVxuICAgIHJldHVybiB0aGlzLnJhbmQuZ2V0Qnl0ZXMobik7XG5cbiAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KG4pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcy5sZW5ndGg7IGkrKylcbiAgICByZXNbaV0gPSB0aGlzLnJhbmQuZ2V0Qnl0ZSgpO1xuICByZXR1cm4gcmVzO1xufTtcblxuaWYgKHR5cGVvZiBzZWxmID09PSAnb2JqZWN0Jykge1xuICBpZiAoc2VsZi5jcnlwdG8gJiYgc2VsZi5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgLy8gTW9kZXJuIGJyb3dzZXJzXG4gICAgUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gICAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gICAgICBzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcbiAgfSBlbHNlIGlmIChzZWxmLm1zQ3J5cHRvICYmIHNlbGYubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgLy8gSUVcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICAgIHNlbGYubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycik7XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH07XG5cbiAgLy8gU2FmYXJpJ3MgV2ViV29ya2VycyBkbyBub3QgaGF2ZSBgY3J5cHRvYFxuICB9IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSB7XG4gICAgLy8gT2xkIGp1bmtcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQgeWV0Jyk7XG4gICAgfTtcbiAgfVxufSBlbHNlIHtcbiAgLy8gTm9kZS5qcyBvciBXZWIgd29ya2VyIHdpdGggbm8gY3J5cHRvIHN1cHBvcnRcbiAgdHJ5IHtcbiAgICB2YXIgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7XG4gICAgaWYgKHR5cGVvZiBjcnlwdG8ucmFuZG9tQnl0ZXMgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQnKTtcblxuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgcmV0dXJuIGNyeXB0by5yYW5kb21CeXRlcyhuKTtcbiAgICB9O1xuICB9IGNhdGNoIChlKSB7XG4gIH1cbn1cbiIsIi8vIGJhc2VkIG9uIHRoZSBhZXMgaW1wbGltZW50YXRpb24gaW4gdHJpcGxlIHNlY1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL2tleWJhc2UvdHJpcGxlc2VjXG4vLyB3aGljaCBpcyBpbiB0dXJuIGJhc2VkIG9uIHRoZSBvbmUgZnJvbSBjcnlwdG8tanNcbi8vIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxuZnVuY3Rpb24gYXNVSW50MzJBcnJheSAoYnVmKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIGJ1ZiA9IEJ1ZmZlci5mcm9tKGJ1ZilcblxuICB2YXIgbGVuID0gKGJ1Zi5sZW5ndGggLyA0KSB8IDBcbiAgdmFyIG91dCA9IG5ldyBBcnJheShsZW4pXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG91dFtpXSA9IGJ1Zi5yZWFkVUludDMyQkUoaSAqIDQpXG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIHNjcnViVmVjICh2KSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdi5sZW5ndGg7IHYrKykge1xuICAgIHZbaV0gPSAwXG4gIH1cbn1cblxuZnVuY3Rpb24gY3J5cHRCbG9jayAoTSwga2V5U2NoZWR1bGUsIFNVQl9NSVgsIFNCT1gsIG5Sb3VuZHMpIHtcbiAgdmFyIFNVQl9NSVgwID0gU1VCX01JWFswXVxuICB2YXIgU1VCX01JWDEgPSBTVUJfTUlYWzFdXG4gIHZhciBTVUJfTUlYMiA9IFNVQl9NSVhbMl1cbiAgdmFyIFNVQl9NSVgzID0gU1VCX01JWFszXVxuXG4gIHZhciBzMCA9IE1bMF0gXiBrZXlTY2hlZHVsZVswXVxuICB2YXIgczEgPSBNWzFdIF4ga2V5U2NoZWR1bGVbMV1cbiAgdmFyIHMyID0gTVsyXSBeIGtleVNjaGVkdWxlWzJdXG4gIHZhciBzMyA9IE1bM10gXiBrZXlTY2hlZHVsZVszXVxuICB2YXIgdDAsIHQxLCB0MiwgdDNcbiAgdmFyIGtzUm93ID0gNFxuXG4gIGZvciAodmFyIHJvdW5kID0gMTsgcm91bmQgPCBuUm91bmRzOyByb3VuZCsrKSB7XG4gICAgdDAgPSBTVUJfTUlYMFtzMCA+Pj4gMjRdIF4gU1VCX01JWDFbKHMxID4+PiAxNikgJiAweGZmXSBeIFNVQl9NSVgyWyhzMiA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVgzW3MzICYgMHhmZl0gXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICAgIHQxID0gU1VCX01JWDBbczEgPj4+IDI0XSBeIFNVQl9NSVgxWyhzMiA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYMlsoczMgPj4+IDgpICYgMHhmZl0gXiBTVUJfTUlYM1tzMCAmIDB4ZmZdIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgICB0MiA9IFNVQl9NSVgwW3MyID4+PiAyNF0gXiBTVUJfTUlYMVsoczMgPj4+IDE2KSAmIDB4ZmZdIF4gU1VCX01JWDJbKHMwID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWDNbczEgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDMgPSBTVUJfTUlYMFtzMyA+Pj4gMjRdIF4gU1VCX01JWDFbKHMwID4+PiAxNikgJiAweGZmXSBeIFNVQl9NSVgyWyhzMSA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVgzW3MyICYgMHhmZl0gXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICAgIHMwID0gdDBcbiAgICBzMSA9IHQxXG4gICAgczIgPSB0MlxuICAgIHMzID0gdDNcbiAgfVxuXG4gIHQwID0gKChTQk9YW3MwID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMxID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczIgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MzICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgdDEgPSAoKFNCT1hbczEgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczIgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMyA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczAgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICB0MiA9ICgoU0JPWFtzMiA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMyA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMwID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMSAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gIHQzID0gKChTQk9YW3MzID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMwID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczEgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MyICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgdDAgPSB0MCA+Pj4gMFxuICB0MSA9IHQxID4+PiAwXG4gIHQyID0gdDIgPj4+IDBcbiAgdDMgPSB0MyA+Pj4gMFxuXG4gIHJldHVybiBbdDAsIHQxLCB0MiwgdDNdXG59XG5cbi8vIEFFUyBjb25zdGFudHNcbnZhciBSQ09OID0gWzB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzZdXG52YXIgRyA9IChmdW5jdGlvbiAoKSB7XG4gIC8vIENvbXB1dGUgZG91YmxlIHRhYmxlXG4gIHZhciBkID0gbmV3IEFycmF5KDI1NilcbiAgZm9yICh2YXIgaiA9IDA7IGogPCAyNTY7IGorKykge1xuICAgIGlmIChqIDwgMTI4KSB7XG4gICAgICBkW2pdID0gaiA8PCAxXG4gICAgfSBlbHNlIHtcbiAgICAgIGRbal0gPSAoaiA8PCAxKSBeIDB4MTFiXG4gICAgfVxuICB9XG5cbiAgdmFyIFNCT1ggPSBbXVxuICB2YXIgSU5WX1NCT1ggPSBbXVxuICB2YXIgU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdmFyIElOVl9TVUJfTUlYID0gW1tdLCBbXSwgW10sIFtdXVxuXG4gIC8vIFdhbGsgR0YoMl44KVxuICB2YXIgeCA9IDBcbiAgdmFyIHhpID0gMFxuICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgKytpKSB7XG4gICAgLy8gQ29tcHV0ZSBzYm94XG4gICAgdmFyIHN4ID0geGkgXiAoeGkgPDwgMSkgXiAoeGkgPDwgMikgXiAoeGkgPDwgMykgXiAoeGkgPDwgNClcbiAgICBzeCA9IChzeCA+Pj4gOCkgXiAoc3ggJiAweGZmKSBeIDB4NjNcbiAgICBTQk9YW3hdID0gc3hcbiAgICBJTlZfU0JPWFtzeF0gPSB4XG5cbiAgICAvLyBDb21wdXRlIG11bHRpcGxpY2F0aW9uXG4gICAgdmFyIHgyID0gZFt4XVxuICAgIHZhciB4NCA9IGRbeDJdXG4gICAgdmFyIHg4ID0gZFt4NF1cblxuICAgIC8vIENvbXB1dGUgc3ViIGJ5dGVzLCBtaXggY29sdW1ucyB0YWJsZXNcbiAgICB2YXIgdCA9IChkW3N4XSAqIDB4MTAxKSBeIChzeCAqIDB4MTAxMDEwMClcbiAgICBTVUJfTUlYWzBdW3hdID0gKHQgPDwgMjQpIHwgKHQgPj4+IDgpXG4gICAgU1VCX01JWFsxXVt4XSA9ICh0IDw8IDE2KSB8ICh0ID4+PiAxNilcbiAgICBTVUJfTUlYWzJdW3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgU1VCX01JWFszXVt4XSA9IHRcblxuICAgIC8vIENvbXB1dGUgaW52IHN1YiBieXRlcywgaW52IG1peCBjb2x1bW5zIHRhYmxlc1xuICAgIHQgPSAoeDggKiAweDEwMTAxMDEpIF4gKHg0ICogMHgxMDAwMSkgXiAoeDIgKiAweDEwMSkgXiAoeCAqIDB4MTAxMDEwMClcbiAgICBJTlZfU1VCX01JWFswXVtzeF0gPSAodCA8PCAyNCkgfCAodCA+Pj4gOClcbiAgICBJTlZfU1VCX01JWFsxXVtzeF0gPSAodCA8PCAxNikgfCAodCA+Pj4gMTYpXG4gICAgSU5WX1NVQl9NSVhbMl1bc3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgSU5WX1NVQl9NSVhbM11bc3hdID0gdFxuXG4gICAgaWYgKHggPT09IDApIHtcbiAgICAgIHggPSB4aSA9IDFcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHgyIF4gZFtkW2RbeDggXiB4Ml1dXVxuICAgICAgeGkgXj0gZFtkW3hpXV1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIFNCT1g6IFNCT1gsXG4gICAgSU5WX1NCT1g6IElOVl9TQk9YLFxuICAgIFNVQl9NSVg6IFNVQl9NSVgsXG4gICAgSU5WX1NVQl9NSVg6IElOVl9TVUJfTUlYXG4gIH1cbn0pKClcblxuZnVuY3Rpb24gQUVTIChrZXkpIHtcbiAgdGhpcy5fa2V5ID0gYXNVSW50MzJBcnJheShrZXkpXG4gIHRoaXMuX3Jlc2V0KClcbn1cblxuQUVTLmJsb2NrU2l6ZSA9IDQgKiA0XG5BRVMua2V5U2l6ZSA9IDI1NiAvIDhcbkFFUy5wcm90b3R5cGUuYmxvY2tTaXplID0gQUVTLmJsb2NrU2l6ZVxuQUVTLnByb3RvdHlwZS5rZXlTaXplID0gQUVTLmtleVNpemVcbkFFUy5wcm90b3R5cGUuX3Jlc2V0ID0gZnVuY3Rpb24gKCkge1xuICB2YXIga2V5V29yZHMgPSB0aGlzLl9rZXlcbiAgdmFyIGtleVNpemUgPSBrZXlXb3Jkcy5sZW5ndGhcbiAgdmFyIG5Sb3VuZHMgPSBrZXlTaXplICsgNlxuICB2YXIga3NSb3dzID0gKG5Sb3VuZHMgKyAxKSAqIDRcblxuICB2YXIga2V5U2NoZWR1bGUgPSBbXVxuICBmb3IgKHZhciBrID0gMDsgayA8IGtleVNpemU7IGsrKykge1xuICAgIGtleVNjaGVkdWxlW2tdID0ga2V5V29yZHNba11cbiAgfVxuXG4gIGZvciAoayA9IGtleVNpemU7IGsgPCBrc1Jvd3M7IGsrKykge1xuICAgIHZhciB0ID0ga2V5U2NoZWR1bGVbayAtIDFdXG5cbiAgICBpZiAoayAlIGtleVNpemUgPT09IDApIHtcbiAgICAgIHQgPSAodCA8PCA4KSB8ICh0ID4+PiAyNClcbiAgICAgIHQgPVxuICAgICAgICAoRy5TQk9YW3QgPj4+IDI0XSA8PCAyNCkgfFxuICAgICAgICAoRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXSA8PCAxNikgfFxuICAgICAgICAoRy5TQk9YWyh0ID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHxcbiAgICAgICAgKEcuU0JPWFt0ICYgMHhmZl0pXG5cbiAgICAgIHQgXj0gUkNPTlsoayAvIGtleVNpemUpIHwgMF0gPDwgMjRcbiAgICB9IGVsc2UgaWYgKGtleVNpemUgPiA2ICYmIGsgJSBrZXlTaXplID09PSA0KSB7XG4gICAgICB0ID1cbiAgICAgICAgKEcuU0JPWFt0ID4+PiAyNF0gPDwgMjQpIHxcbiAgICAgICAgKEcuU0JPWFsodCA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHxcbiAgICAgICAgKEcuU0JPWFsodCA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8XG4gICAgICAgIChHLlNCT1hbdCAmIDB4ZmZdKVxuICAgIH1cblxuICAgIGtleVNjaGVkdWxlW2tdID0ga2V5U2NoZWR1bGVbayAtIGtleVNpemVdIF4gdFxuICB9XG5cbiAgdmFyIGludktleVNjaGVkdWxlID0gW11cbiAgZm9yICh2YXIgaWsgPSAwOyBpayA8IGtzUm93czsgaWsrKykge1xuICAgIHZhciBrc1IgPSBrc1Jvd3MgLSBpa1xuICAgIHZhciB0dCA9IGtleVNjaGVkdWxlW2tzUiAtIChpayAlIDQgPyAwIDogNCldXG5cbiAgICBpZiAoaWsgPCA0IHx8IGtzUiA8PSA0KSB7XG4gICAgICBpbnZLZXlTY2hlZHVsZVtpa10gPSB0dFxuICAgIH0gZWxzZSB7XG4gICAgICBpbnZLZXlTY2hlZHVsZVtpa10gPVxuICAgICAgICBHLklOVl9TVUJfTUlYWzBdW0cuU0JPWFt0dCA+Pj4gMjRdXSBeXG4gICAgICAgIEcuSU5WX1NVQl9NSVhbMV1bRy5TQk9YWyh0dCA+Pj4gMTYpICYgMHhmZl1dIF5cbiAgICAgICAgRy5JTlZfU1VCX01JWFsyXVtHLlNCT1hbKHR0ID4+PiA4KSAmIDB4ZmZdXSBeXG4gICAgICAgIEcuSU5WX1NVQl9NSVhbM11bRy5TQk9YW3R0ICYgMHhmZl1dXG4gICAgfVxuICB9XG5cbiAgdGhpcy5fblJvdW5kcyA9IG5Sb3VuZHNcbiAgdGhpcy5fa2V5U2NoZWR1bGUgPSBrZXlTY2hlZHVsZVxuICB0aGlzLl9pbnZLZXlTY2hlZHVsZSA9IGludktleVNjaGVkdWxlXG59XG5cbkFFUy5wcm90b3R5cGUuZW5jcnlwdEJsb2NrUmF3ID0gZnVuY3Rpb24gKE0pIHtcbiAgTSA9IGFzVUludDMyQXJyYXkoTSlcbiAgcmV0dXJuIGNyeXB0QmxvY2soTSwgdGhpcy5fa2V5U2NoZWR1bGUsIEcuU1VCX01JWCwgRy5TQk9YLCB0aGlzLl9uUm91bmRzKVxufVxuXG5BRVMucHJvdG90eXBlLmVuY3J5cHRCbG9jayA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBvdXQgPSB0aGlzLmVuY3J5cHRCbG9ja1JhdyhNKVxuICB2YXIgYnVmID0gQnVmZmVyLmFsbG9jVW5zYWZlKDE2KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMF0sIDApXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsxXSwgNClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzJdLCA4KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDEyKVxuICByZXR1cm4gYnVmXG59XG5cbkFFUy5wcm90b3R5cGUuZGVjcnlwdEJsb2NrID0gZnVuY3Rpb24gKE0pIHtcbiAgTSA9IGFzVUludDMyQXJyYXkoTSlcblxuICAvLyBzd2FwXG4gIHZhciBtMSA9IE1bMV1cbiAgTVsxXSA9IE1bM11cbiAgTVszXSA9IG0xXG5cbiAgdmFyIG91dCA9IGNyeXB0QmxvY2soTSwgdGhpcy5faW52S2V5U2NoZWR1bGUsIEcuSU5WX1NVQl9NSVgsIEcuSU5WX1NCT1gsIHRoaXMuX25Sb3VuZHMpXG4gIHZhciBidWYgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMTYpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFswXSwgMClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzNdLCA0KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMl0sIDgpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsxXSwgMTIpXG4gIHJldHVybiBidWZcbn1cblxuQUVTLnByb3RvdHlwZS5zY3J1YiA9IGZ1bmN0aW9uICgpIHtcbiAgc2NydWJWZWModGhpcy5fa2V5U2NoZWR1bGUpXG4gIHNjcnViVmVjKHRoaXMuX2ludktleVNjaGVkdWxlKVxuICBzY3J1YlZlYyh0aGlzLl9rZXkpXG59XG5cbm1vZHVsZS5leHBvcnRzLkFFUyA9IEFFU1xuIiwidmFyIGFlcyA9IHJlcXVpcmUoJy4vYWVzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBHSEFTSCA9IHJlcXVpcmUoJy4vZ2hhc2gnKVxudmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxudmFyIGluY3IzMiA9IHJlcXVpcmUoJy4vaW5jcjMyJylcblxuZnVuY3Rpb24geG9yVGVzdCAoYSwgYikge1xuICB2YXIgb3V0ID0gMFxuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSBvdXQrK1xuXG4gIHZhciBsZW4gPSBNYXRoLm1pbihhLmxlbmd0aCwgYi5sZW5ndGgpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICBvdXQgKz0gKGFbaV0gXiBiW2ldKVxuICB9XG5cbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiBjYWxjSXYgKHNlbGYsIGl2LCBjaykge1xuICBpZiAoaXYubGVuZ3RoID09PSAxMikge1xuICAgIHNlbGYuX2ZpbklEID0gQnVmZmVyLmNvbmNhdChbaXYsIEJ1ZmZlci5mcm9tKFswLCAwLCAwLCAxXSldKVxuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFtpdiwgQnVmZmVyLmZyb20oWzAsIDAsIDAsIDJdKV0pXG4gIH1cbiAgdmFyIGdoYXNoID0gbmV3IEdIQVNIKGNrKVxuICB2YXIgbGVuID0gaXYubGVuZ3RoXG4gIHZhciB0b1BhZCA9IGxlbiAlIDE2XG4gIGdoYXNoLnVwZGF0ZShpdilcbiAgaWYgKHRvUGFkKSB7XG4gICAgdG9QYWQgPSAxNiAtIHRvUGFkXG4gICAgZ2hhc2gudXBkYXRlKEJ1ZmZlci5hbGxvYyh0b1BhZCwgMCkpXG4gIH1cbiAgZ2hhc2gudXBkYXRlKEJ1ZmZlci5hbGxvYyg4LCAwKSlcbiAgdmFyIGl2Qml0cyA9IGxlbiAqIDhcbiAgdmFyIHRhaWwgPSBCdWZmZXIuYWxsb2MoOClcbiAgdGFpbC53cml0ZVVJbnRCRShpdkJpdHMsIDAsIDgpXG4gIGdoYXNoLnVwZGF0ZSh0YWlsKVxuICBzZWxmLl9maW5JRCA9IGdoYXNoLnN0YXRlXG4gIHZhciBvdXQgPSBCdWZmZXIuZnJvbShzZWxmLl9maW5JRClcbiAgaW5jcjMyKG91dClcbiAgcmV0dXJuIG91dFxufVxuZnVuY3Rpb24gU3RyZWFtQ2lwaGVyIChtb2RlLCBrZXksIGl2LCBkZWNyeXB0KSB7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG5cbiAgdmFyIGggPSBCdWZmZXIuYWxsb2MoNCwgMClcblxuICB0aGlzLl9jaXBoZXIgPSBuZXcgYWVzLkFFUyhrZXkpXG4gIHZhciBjayA9IHRoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2soaClcbiAgdGhpcy5fZ2hhc2ggPSBuZXcgR0hBU0goY2spXG4gIGl2ID0gY2FsY0l2KHRoaXMsIGl2LCBjaylcblxuICB0aGlzLl9wcmV2ID0gQnVmZmVyLmZyb20oaXYpXG4gIHRoaXMuX2NhY2hlID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApXG4gIHRoaXMuX3NlY0NhY2hlID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApXG4gIHRoaXMuX2RlY3J5cHQgPSBkZWNyeXB0XG4gIHRoaXMuX2FsZW4gPSAwXG4gIHRoaXMuX2xlbiA9IDBcbiAgdGhpcy5fbW9kZSA9IG1vZGVcblxuICB0aGlzLl9hdXRoVGFnID0gbnVsbFxuICB0aGlzLl9jYWxsZWQgPSBmYWxzZVxufVxuXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcblxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIGlmICghdGhpcy5fY2FsbGVkICYmIHRoaXMuX2FsZW4pIHtcbiAgICB2YXIgcnVtcCA9IDE2IC0gKHRoaXMuX2FsZW4gJSAxNilcbiAgICBpZiAocnVtcCA8IDE2KSB7XG4gICAgICBydW1wID0gQnVmZmVyLmFsbG9jKHJ1bXAsIDApXG4gICAgICB0aGlzLl9naGFzaC51cGRhdGUocnVtcClcbiAgICB9XG4gIH1cblxuICB0aGlzLl9jYWxsZWQgPSB0cnVlXG4gIHZhciBvdXQgPSB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcywgY2h1bmspXG4gIGlmICh0aGlzLl9kZWNyeXB0KSB7XG4gICAgdGhpcy5fZ2hhc2gudXBkYXRlKGNodW5rKVxuICB9IGVsc2Uge1xuICAgIHRoaXMuX2doYXNoLnVwZGF0ZShvdXQpXG4gIH1cbiAgdGhpcy5fbGVuICs9IGNodW5rLmxlbmd0aFxuICByZXR1cm4gb3V0XG59XG5cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5fZGVjcnlwdCAmJiAhdGhpcy5fYXV0aFRhZykgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEnKVxuXG4gIHZhciB0YWcgPSB4b3IodGhpcy5fZ2hhc2guZmluYWwodGhpcy5fYWxlbiAqIDgsIHRoaXMuX2xlbiAqIDgpLCB0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHRoaXMuX2ZpbklEKSlcbiAgaWYgKHRoaXMuX2RlY3J5cHQgJiYgeG9yVGVzdCh0YWcsIHRoaXMuX2F1dGhUYWcpKSB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YScpXG5cbiAgdGhpcy5fYXV0aFRhZyA9IHRhZ1xuICB0aGlzLl9jaXBoZXIuc2NydWIoKVxufVxuXG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLmdldEF1dGhUYWcgPSBmdW5jdGlvbiBnZXRBdXRoVGFnICgpIHtcbiAgaWYgKHRoaXMuX2RlY3J5cHQgfHwgIUJ1ZmZlci5pc0J1ZmZlcih0aGlzLl9hdXRoVGFnKSkgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG5cbiAgcmV0dXJuIHRoaXMuX2F1dGhUYWdcbn1cblxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5zZXRBdXRoVGFnID0gZnVuY3Rpb24gc2V0QXV0aFRhZyAodGFnKSB7XG4gIGlmICghdGhpcy5fZGVjcnlwdCkgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG5cbiAgdGhpcy5fYXV0aFRhZyA9IHRhZ1xufVxuXG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLnNldEFBRCA9IGZ1bmN0aW9uIHNldEFBRCAoYnVmKSB7XG4gIGlmICh0aGlzLl9jYWxsZWQpIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBzZXQgQUFEIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcblxuICB0aGlzLl9naGFzaC51cGRhdGUoYnVmKVxuICB0aGlzLl9hbGVuICs9IGJ1Zi5sZW5ndGhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTdHJlYW1DaXBoZXJcbiIsInZhciBjaXBoZXJzID0gcmVxdWlyZSgnLi9lbmNyeXB0ZXInKVxudmFyIGRlY2lwaGVycyA9IHJlcXVpcmUoJy4vZGVjcnlwdGVyJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMvbGlzdC5qc29uJylcblxuZnVuY3Rpb24gZ2V0Q2lwaGVycyAoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhtb2Rlcylcbn1cblxuZXhwb3J0cy5jcmVhdGVDaXBoZXIgPSBleHBvcnRzLkNpcGhlciA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyXG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gZXhwb3J0cy5DaXBoZXJpdiA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBleHBvcnRzLkRlY2lwaGVyID0gZGVjaXBoZXJzLmNyZWF0ZURlY2lwaGVyXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyaXYgPSBleHBvcnRzLkRlY2lwaGVyaXYgPSBkZWNpcGhlcnMuY3JlYXRlRGVjaXBoZXJpdlxuZXhwb3J0cy5saXN0Q2lwaGVycyA9IGV4cG9ydHMuZ2V0Q2lwaGVycyA9IGdldENpcGhlcnNcbiIsInZhciBBdXRoQ2lwaGVyID0gcmVxdWlyZSgnLi9hdXRoQ2lwaGVyJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIE1PREVTID0gcmVxdWlyZSgnLi9tb2RlcycpXG52YXIgU3RyZWFtQ2lwaGVyID0gcmVxdWlyZSgnLi9zdHJlYW1DaXBoZXInKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgZWJ0ayA9IHJlcXVpcmUoJ2V2cF9ieXRlc3Rva2V5JylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcblxuZnVuY3Rpb24gRGVjaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcblxuICB0aGlzLl9jYWNoZSA9IG5ldyBTcGxpdHRlcigpXG4gIHRoaXMuX2xhc3QgPSB2b2lkIDBcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gQnVmZmVyLmZyb20oaXYpXG4gIHRoaXMuX21vZGUgPSBtb2RlXG4gIHRoaXMuX2F1dG9wYWRkaW5nID0gdHJ1ZVxufVxuXG5pbmhlcml0cyhEZWNpcGhlciwgVHJhbnNmb3JtKVxuXG5EZWNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2NhY2hlLmFkZChkYXRhKVxuICB2YXIgY2h1bmtcbiAgdmFyIHRoaW5nXG4gIHZhciBvdXQgPSBbXVxuICB3aGlsZSAoKGNodW5rID0gdGhpcy5fY2FjaGUuZ2V0KHRoaXMuX2F1dG9wYWRkaW5nKSkpIHtcbiAgICB0aGluZyA9IHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLCBjaHVuaylcbiAgICBvdXQucHVzaCh0aGluZylcbiAgfVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG5cbkRlY2lwaGVyLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBjaHVuayA9IHRoaXMuX2NhY2hlLmZsdXNoKClcbiAgaWYgKHRoaXMuX2F1dG9wYWRkaW5nKSB7XG4gICAgcmV0dXJuIHVucGFkKHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLCBjaHVuaykpXG4gIH0gZWxzZSBpZiAoY2h1bmspIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCcpXG4gIH1cbn1cblxuRGVjaXBoZXIucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nID0gZnVuY3Rpb24gKHNldFRvKSB7XG4gIHRoaXMuX2F1dG9wYWRkaW5nID0gISFzZXRUb1xuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiBTcGxpdHRlciAoKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBkYXRhXSlcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChhdXRvUGFkZGluZykge1xuICB2YXIgb3V0XG4gIGlmIChhdXRvUGFkZGluZykge1xuICAgIGlmICh0aGlzLmNhY2hlLmxlbmd0aCA+IDE2KSB7XG4gICAgICBvdXQgPSB0aGlzLmNhY2hlLnNsaWNlKDAsIDE2KVxuICAgICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGUuc2xpY2UoMTYpXG4gICAgICByZXR1cm4gb3V0XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh0aGlzLmNhY2hlLmxlbmd0aCA+PSAxNikge1xuICAgICAgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgICAgcmV0dXJuIG91dFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoKSByZXR1cm4gdGhpcy5jYWNoZVxufVxuXG5mdW5jdGlvbiB1bnBhZCAobGFzdCkge1xuICB2YXIgcGFkZGVkID0gbGFzdFsxNV1cbiAgaWYgKHBhZGRlZCA8IDEgfHwgcGFkZGVkID4gMTYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuYWJsZSB0byBkZWNyeXB0IGRhdGEnKVxuICB9XG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IHBhZGRlZCkge1xuICAgIGlmIChsYXN0WyhpICsgKDE2IC0gcGFkZGVkKSldICE9PSBwYWRkZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIGRlY3J5cHQgZGF0YScpXG4gICAgfVxuICB9XG4gIGlmIChwYWRkZWQgPT09IDE2KSByZXR1cm5cblxuICByZXR1cm4gbGFzdC5zbGljZSgwLCAxNiAtIHBhZGRlZClcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXJpdiAoc3VpdGUsIHBhc3N3b3JkLCBpdikge1xuICB2YXIgY29uZmlnID0gTU9ERVNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG5cbiAgaWYgKHR5cGVvZiBpdiA9PT0gJ3N0cmluZycpIGl2ID0gQnVmZmVyLmZyb20oaXYpXG4gIGlmIChjb25maWcubW9kZSAhPT0gJ0dDTScgJiYgaXYubGVuZ3RoICE9PSBjb25maWcuaXYpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG5cbiAgaWYgKHR5cGVvZiBwYXNzd29yZCA9PT0gJ3N0cmluZycpIHBhc3N3b3JkID0gQnVmZmVyLmZyb20ocGFzc3dvcmQpXG4gIGlmIChwYXNzd29yZC5sZW5ndGggIT09IGNvbmZpZy5rZXkgLyA4KSB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIGtleSBsZW5ndGggJyArIHBhc3N3b3JkLmxlbmd0aClcblxuICBpZiAoY29uZmlnLnR5cGUgPT09ICdzdHJlYW0nKSB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW1DaXBoZXIoY29uZmlnLm1vZHVsZSwgcGFzc3dvcmQsIGl2LCB0cnVlKVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIoY29uZmlnLm1vZHVsZSwgcGFzc3dvcmQsIGl2LCB0cnVlKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBEZWNpcGhlcihjb25maWcubW9kdWxlLCBwYXNzd29yZCwgaXYpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgdmFyIGNvbmZpZyA9IE1PREVTW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuXG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXJpdiA9IGNyZWF0ZURlY2lwaGVyaXZcbiIsInZhciBNT0RFUyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIEF1dGhDaXBoZXIgPSByZXF1aXJlKCcuL2F1dGhDaXBoZXInKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgU3RyZWFtQ2lwaGVyID0gcmVxdWlyZSgnLi9zdHJlYW1DaXBoZXInKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgZWJ0ayA9IHJlcXVpcmUoJ2V2cF9ieXRlc3Rva2V5JylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcblxuZnVuY3Rpb24gQ2lwaGVyIChtb2RlLCBrZXksIGl2KSB7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG5cbiAgdGhpcy5fY2FjaGUgPSBuZXcgU3BsaXR0ZXIoKVxuICB0aGlzLl9jaXBoZXIgPSBuZXcgYWVzLkFFUyhrZXkpXG4gIHRoaXMuX3ByZXYgPSBCdWZmZXIuZnJvbShpdilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5cbmluaGVyaXRzKENpcGhlciwgVHJhbnNmb3JtKVxuXG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9jYWNoZS5hZGQoZGF0YSlcbiAgdmFyIGNodW5rXG4gIHZhciB0aGluZ1xuICB2YXIgb3V0ID0gW11cblxuICB3aGlsZSAoKGNodW5rID0gdGhpcy5fY2FjaGUuZ2V0KCkpKSB7XG4gICAgdGhpbmcgPSB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcywgY2h1bmspXG4gICAgb3V0LnB1c2godGhpbmcpXG4gIH1cblxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG5cbnZhciBQQURESU5HID0gQnVmZmVyLmFsbG9jKDE2LCAweDEwKVxuXG5DaXBoZXIucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNodW5rID0gdGhpcy5fY2FjaGUuZmx1c2goKVxuICBpZiAodGhpcy5fYXV0b3BhZGRpbmcpIHtcbiAgICBjaHVuayA9IHRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLCBjaHVuaylcbiAgICB0aGlzLl9jaXBoZXIuc2NydWIoKVxuICAgIHJldHVybiBjaHVua1xuICB9XG5cbiAgaWYgKCFjaHVuay5lcXVhbHMoUEFERElORykpIHtcbiAgICB0aGlzLl9jaXBoZXIuc2NydWIoKVxuICAgIHRocm93IG5ldyBFcnJvcignZGF0YSBub3QgbXVsdGlwbGUgb2YgYmxvY2sgbGVuZ3RoJylcbiAgfVxufVxuXG5DaXBoZXIucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nID0gZnVuY3Rpb24gKHNldFRvKSB7XG4gIHRoaXMuX2F1dG9wYWRkaW5nID0gISFzZXRUb1xuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiBTcGxpdHRlciAoKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBkYXRhXSlcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoID4gMTUpIHtcbiAgICB2YXIgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICByZXR1cm4gb3V0XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbGVuID0gMTYgLSB0aGlzLmNhY2hlLmxlbmd0aFxuICB2YXIgcGFkQnVmZiA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW4pXG5cbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgcGFkQnVmZi53cml0ZVVJbnQ4KGxlbiwgaSlcbiAgfVxuXG4gIHJldHVybiBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBwYWRCdWZmXSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IE1PREVTW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuXG4gIGlmICh0eXBlb2YgcGFzc3dvcmQgPT09ICdzdHJpbmcnKSBwYXNzd29yZCA9IEJ1ZmZlci5mcm9tKHBhc3N3b3JkKVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBrZXkgbGVuZ3RoICcgKyBwYXNzd29yZC5sZW5ndGgpXG5cbiAgaWYgKHR5cGVvZiBpdiA9PT0gJ3N0cmluZycpIGl2ID0gQnVmZmVyLmZyb20oaXYpXG4gIGlmIChjb25maWcubW9kZSAhPT0gJ0dDTScgJiYgaXYubGVuZ3RoICE9PSBjb25maWcuaXYpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG5cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKGNvbmZpZy5tb2R1bGUsIHBhc3N3b3JkLCBpdilcbiAgfSBlbHNlIGlmIChjb25maWcudHlwZSA9PT0gJ2F1dGgnKSB7XG4gICAgcmV0dXJuIG5ldyBBdXRoQ2lwaGVyKGNvbmZpZy5tb2R1bGUsIHBhc3N3b3JkLCBpdilcbiAgfVxuXG4gIHJldHVybiBuZXcgQ2lwaGVyKGNvbmZpZy5tb2R1bGUsIHBhc3N3b3JkLCBpdilcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgdmFyIGNvbmZpZyA9IE1PREVTW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuXG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cblxuZXhwb3J0cy5jcmVhdGVDaXBoZXJpdiA9IGNyZWF0ZUNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGNyZWF0ZUNpcGhlclxuIiwidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgWkVST0VTID0gQnVmZmVyLmFsbG9jKDE2LCAwKVxuXG5mdW5jdGlvbiB0b0FycmF5IChidWYpIHtcbiAgcmV0dXJuIFtcbiAgICBidWYucmVhZFVJbnQzMkJFKDApLFxuICAgIGJ1Zi5yZWFkVUludDMyQkUoNCksXG4gICAgYnVmLnJlYWRVSW50MzJCRSg4KSxcbiAgICBidWYucmVhZFVJbnQzMkJFKDEyKVxuICBdXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheSAob3V0KSB7XG4gIHZhciBidWYgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMTYpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFswXSA+Pj4gMCwgMClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdID4+PiAwLCA0KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMl0gPj4+IDAsIDgpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFszXSA+Pj4gMCwgMTIpXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gR0hBU0ggKGtleSkge1xuICB0aGlzLmggPSBrZXlcbiAgdGhpcy5zdGF0ZSA9IEJ1ZmZlci5hbGxvYygxNiwgMClcbiAgdGhpcy5jYWNoZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxufVxuXG4vLyBmcm9tIGh0dHA6Ly9iaXR3aXNlc2hpZnRsZWZ0LmdpdGh1Yi5pby9zamNsL2RvYy9zeW1ib2xzL3NyYy9jb3JlX2djbS5qcy5odG1sXG4vLyBieSBKdWhvIFbDpGjDpC1IZXJ0dHVhXG5HSEFTSC5wcm90b3R5cGUuZ2hhc2ggPSBmdW5jdGlvbiAoYmxvY2spIHtcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgYmxvY2subGVuZ3RoKSB7XG4gICAgdGhpcy5zdGF0ZVtpXSBePSBibG9ja1tpXVxuICB9XG4gIHRoaXMuX211bHRpcGx5KClcbn1cblxuR0hBU0gucHJvdG90eXBlLl9tdWx0aXBseSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIFZpID0gdG9BcnJheSh0aGlzLmgpXG4gIHZhciBaaSA9IFswLCAwLCAwLCAwXVxuICB2YXIgaiwgeGksIGxzYlZpXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IDEyOCkge1xuICAgIHhpID0gKHRoaXMuc3RhdGVbfn4oaSAvIDgpXSAmICgxIDw8ICg3IC0gKGkgJSA4KSkpKSAhPT0gMFxuICAgIGlmICh4aSkge1xuICAgICAgLy8gWl9pKzEgPSBaX2kgXiBWX2lcbiAgICAgIFppWzBdIF49IFZpWzBdXG4gICAgICBaaVsxXSBePSBWaVsxXVxuICAgICAgWmlbMl0gXj0gVmlbMl1cbiAgICAgIFppWzNdIF49IFZpWzNdXG4gICAgfVxuXG4gICAgLy8gU3RvcmUgdGhlIHZhbHVlIG9mIExTQihWX2kpXG4gICAgbHNiVmkgPSAoVmlbM10gJiAxKSAhPT0gMFxuXG4gICAgLy8gVl9pKzEgPSBWX2kgPj4gMVxuICAgIGZvciAoaiA9IDM7IGogPiAwOyBqLS0pIHtcbiAgICAgIFZpW2pdID0gKFZpW2pdID4+PiAxKSB8ICgoVmlbaiAtIDFdICYgMSkgPDwgMzEpXG4gICAgfVxuICAgIFZpWzBdID0gVmlbMF0gPj4+IDFcblxuICAgIC8vIElmIExTQihWX2kpIGlzIDEsIFZfaSsxID0gKFZfaSA+PiAxKSBeIFJcbiAgICBpZiAobHNiVmkpIHtcbiAgICAgIFZpWzBdID0gVmlbMF0gXiAoMHhlMSA8PCAyNClcbiAgICB9XG4gIH1cbiAgdGhpcy5zdGF0ZSA9IGZyb21BcnJheShaaSlcbn1cblxuR0hBU0gucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChidWYpIHtcbiAgdGhpcy5jYWNoZSA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuY2FjaGUsIGJ1Zl0pXG4gIHZhciBjaHVua1xuICB3aGlsZSAodGhpcy5jYWNoZS5sZW5ndGggPj0gMTYpIHtcbiAgICBjaHVuayA9IHRoaXMuY2FjaGUuc2xpY2UoMCwgMTYpXG4gICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGUuc2xpY2UoMTYpXG4gICAgdGhpcy5naGFzaChjaHVuaylcbiAgfVxufVxuXG5HSEFTSC5wcm90b3R5cGUuZmluYWwgPSBmdW5jdGlvbiAoYWJsLCBibCkge1xuICBpZiAodGhpcy5jYWNoZS5sZW5ndGgpIHtcbiAgICB0aGlzLmdoYXNoKEJ1ZmZlci5jb25jYXQoW3RoaXMuY2FjaGUsIFpFUk9FU10sIDE2KSlcbiAgfVxuXG4gIHRoaXMuZ2hhc2goZnJvbUFycmF5KFswLCBhYmwsIDAsIGJsXSkpXG4gIHJldHVybiB0aGlzLnN0YXRlXG59XG5cbm1vZHVsZS5leHBvcnRzID0gR0hBU0hcbiIsImZ1bmN0aW9uIGluY3IzMiAoaXYpIHtcbiAgdmFyIGxlbiA9IGl2Lmxlbmd0aFxuICB2YXIgaXRlbVxuICB3aGlsZSAobGVuLS0pIHtcbiAgICBpdGVtID0gaXYucmVhZFVJbnQ4KGxlbilcbiAgICBpZiAoaXRlbSA9PT0gMjU1KSB7XG4gICAgICBpdi53cml0ZVVJbnQ4KDAsIGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbSsrXG4gICAgICBpdi53cml0ZVVJbnQ4KGl0ZW0sIGxlbilcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluY3IzMlxuIiwidmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxuXG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgdmFyIGRhdGEgPSB4b3IoYmxvY2ssIHNlbGYuX3ByZXYpXG5cbiAgc2VsZi5fcHJldiA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soZGF0YSlcbiAgcmV0dXJuIHNlbGYuX3ByZXZcbn1cblxuZXhwb3J0cy5kZWNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGJsb2NrKSB7XG4gIHZhciBwYWQgPSBzZWxmLl9wcmV2XG5cbiAgc2VsZi5fcHJldiA9IGJsb2NrXG4gIHZhciBvdXQgPSBzZWxmLl9jaXBoZXIuZGVjcnlwdEJsb2NrKGJsb2NrKVxuXG4gIHJldHVybiB4b3Iob3V0LCBwYWQpXG59XG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciB4b3IgPSByZXF1aXJlKCdidWZmZXIteG9yJylcblxuZnVuY3Rpb24gZW5jcnlwdFN0YXJ0IChzZWxmLCBkYXRhLCBkZWNyeXB0KSB7XG4gIHZhciBsZW4gPSBkYXRhLmxlbmd0aFxuICB2YXIgb3V0ID0geG9yKGRhdGEsIHNlbGYuX2NhY2hlKVxuICBzZWxmLl9jYWNoZSA9IHNlbGYuX2NhY2hlLnNsaWNlKGxlbilcbiAgc2VsZi5fcHJldiA9IEJ1ZmZlci5jb25jYXQoW3NlbGYuX3ByZXYsIGRlY3J5cHQgPyBkYXRhIDogb3V0XSlcbiAgcmV0dXJuIG91dFxufVxuXG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgZGF0YSwgZGVjcnlwdCkge1xuICB2YXIgb3V0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApXG4gIHZhciBsZW5cblxuICB3aGlsZSAoZGF0YS5sZW5ndGgpIHtcbiAgICBpZiAoc2VsZi5fY2FjaGUubGVuZ3RoID09PSAwKSB7XG4gICAgICBzZWxmLl9jYWNoZSA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soc2VsZi5fcHJldilcbiAgICAgIHNlbGYuX3ByZXYgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbiAgICB9XG5cbiAgICBpZiAoc2VsZi5fY2FjaGUubGVuZ3RoIDw9IGRhdGEubGVuZ3RoKSB7XG4gICAgICBsZW4gPSBzZWxmLl9jYWNoZS5sZW5ndGhcbiAgICAgIG91dCA9IEJ1ZmZlci5jb25jYXQoW291dCwgZW5jcnlwdFN0YXJ0KHNlbGYsIGRhdGEuc2xpY2UoMCwgbGVuKSwgZGVjcnlwdCldKVxuICAgICAgZGF0YSA9IGRhdGEuc2xpY2UobGVuKVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFtvdXQsIGVuY3J5cHRTdGFydChzZWxmLCBkYXRhLCBkZWNyeXB0KV0pXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRcbn1cbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG5mdW5jdGlvbiBlbmNyeXB0Qnl0ZSAoc2VsZiwgYnl0ZVBhcmFtLCBkZWNyeXB0KSB7XG4gIHZhciBwYWRcbiAgdmFyIGkgPSAtMVxuICB2YXIgbGVuID0gOFxuICB2YXIgb3V0ID0gMFxuICB2YXIgYml0LCB2YWx1ZVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgcGFkID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgIGJpdCA9IChieXRlUGFyYW0gJiAoMSA8PCAoNyAtIGkpKSkgPyAweDgwIDogMFxuICAgIHZhbHVlID0gcGFkWzBdIF4gYml0XG4gICAgb3V0ICs9ICgodmFsdWUgJiAweDgwKSA+PiAoaSAlIDgpKVxuICAgIHNlbGYuX3ByZXYgPSBzaGlmdEluKHNlbGYuX3ByZXYsIGRlY3J5cHQgPyBiaXQgOiB2YWx1ZSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIHNoaWZ0SW4gKGJ1ZmZlciwgdmFsdWUpIHtcbiAgdmFyIGxlbiA9IGJ1ZmZlci5sZW5ndGhcbiAgdmFyIGkgPSAtMVxuICB2YXIgb3V0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJ1ZmZlci5sZW5ndGgpXG4gIGJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW2J1ZmZlciwgQnVmZmVyLmZyb20oW3ZhbHVlXSldKVxuXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXRbaV0gPSBidWZmZXJbaV0gPDwgMSB8IGJ1ZmZlcltpICsgMV0gPj4gKDcpXG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaywgZGVjcnlwdCkge1xuICB2YXIgbGVuID0gY2h1bmsubGVuZ3RoXG4gIHZhciBvdXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobGVuKVxuICB2YXIgaSA9IC0xXG5cbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIG91dFtpXSA9IGVuY3J5cHRCeXRlKHNlbGYsIGNodW5rW2ldLCBkZWNyeXB0KVxuICB9XG5cbiAgcmV0dXJuIG91dFxufVxuIiwidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbmZ1bmN0aW9uIGVuY3J5cHRCeXRlIChzZWxmLCBieXRlUGFyYW0sIGRlY3J5cHQpIHtcbiAgdmFyIHBhZCA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soc2VsZi5fcHJldilcbiAgdmFyIG91dCA9IHBhZFswXSBeIGJ5dGVQYXJhbVxuXG4gIHNlbGYuX3ByZXYgPSBCdWZmZXIuY29uY2F0KFtcbiAgICBzZWxmLl9wcmV2LnNsaWNlKDEpLFxuICAgIEJ1ZmZlci5mcm9tKFtkZWNyeXB0ID8gYnl0ZVBhcmFtIDogb3V0XSlcbiAgXSlcblxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaywgZGVjcnlwdCkge1xuICB2YXIgbGVuID0gY2h1bmsubGVuZ3RoXG4gIHZhciBvdXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobGVuKVxuICB2YXIgaSA9IC0xXG5cbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIG91dFtpXSA9IGVuY3J5cHRCeXRlKHNlbGYsIGNodW5rW2ldLCBkZWNyeXB0KVxuICB9XG5cbiAgcmV0dXJuIG91dFxufVxuIiwidmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgaW5jcjMyID0gcmVxdWlyZSgnLi4vaW5jcjMyJylcblxuZnVuY3Rpb24gZ2V0QmxvY2sgKHNlbGYpIHtcbiAgdmFyIG91dCA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2tSYXcoc2VsZi5fcHJldilcbiAgaW5jcjMyKHNlbGYuX3ByZXYpXG4gIHJldHVybiBvdXRcbn1cblxudmFyIGJsb2NrU2l6ZSA9IDE2XG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgY2h1bmspIHtcbiAgdmFyIGNodW5rTnVtID0gTWF0aC5jZWlsKGNodW5rLmxlbmd0aCAvIGJsb2NrU2l6ZSlcbiAgdmFyIHN0YXJ0ID0gc2VsZi5fY2FjaGUubGVuZ3RoXG4gIHNlbGYuX2NhY2hlID0gQnVmZmVyLmNvbmNhdChbXG4gICAgc2VsZi5fY2FjaGUsXG4gICAgQnVmZmVyLmFsbG9jVW5zYWZlKGNodW5rTnVtICogYmxvY2tTaXplKVxuICBdKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNodW5rTnVtOyBpKyspIHtcbiAgICB2YXIgb3V0ID0gZ2V0QmxvY2soc2VsZilcbiAgICB2YXIgb2Zmc2V0ID0gc3RhcnQgKyBpICogYmxvY2tTaXplXG4gICAgc2VsZi5fY2FjaGUud3JpdGVVSW50MzJCRShvdXRbMF0sIG9mZnNldCArIDApXG4gICAgc2VsZi5fY2FjaGUud3JpdGVVSW50MzJCRShvdXRbMV0sIG9mZnNldCArIDQpXG4gICAgc2VsZi5fY2FjaGUud3JpdGVVSW50MzJCRShvdXRbMl0sIG9mZnNldCArIDgpXG4gICAgc2VsZi5fY2FjaGUud3JpdGVVSW50MzJCRShvdXRbM10sIG9mZnNldCArIDEyKVxuICB9XG4gIHZhciBwYWQgPSBzZWxmLl9jYWNoZS5zbGljZSgwLCBjaHVuay5sZW5ndGgpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UoY2h1bmsubGVuZ3RoKVxuICByZXR1cm4geG9yKGNodW5rLCBwYWQpXG59XG4iLCJleHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soYmxvY2spXG59XG5cbmV4cG9ydHMuZGVjcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBibG9jaykge1xuICByZXR1cm4gc2VsZi5fY2lwaGVyLmRlY3J5cHRCbG9jayhibG9jaylcbn1cbiIsInZhciBtb2RlTW9kdWxlcyA9IHtcbiAgRUNCOiByZXF1aXJlKCcuL2VjYicpLFxuICBDQkM6IHJlcXVpcmUoJy4vY2JjJyksXG4gIENGQjogcmVxdWlyZSgnLi9jZmInKSxcbiAgQ0ZCODogcmVxdWlyZSgnLi9jZmI4JyksXG4gIENGQjE6IHJlcXVpcmUoJy4vY2ZiMScpLFxuICBPRkI6IHJlcXVpcmUoJy4vb2ZiJyksXG4gIENUUjogcmVxdWlyZSgnLi9jdHInKSxcbiAgR0NNOiByZXF1aXJlKCcuL2N0cicpXG59XG5cbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbGlzdC5qc29uJylcblxuZm9yICh2YXIga2V5IGluIG1vZGVzKSB7XG4gIG1vZGVzW2tleV0ubW9kdWxlID0gbW9kZU1vZHVsZXNbbW9kZXNba2V5XS5tb2RlXVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1vZGVzXG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG5cbiAgdmFyIHBhZCA9IHNlbGYuX2NhY2hlLnNsaWNlKDAsIGNodW5rLmxlbmd0aClcbiAgc2VsZi5fY2FjaGUgPSBzZWxmLl9jYWNoZS5zbGljZShjaHVuay5sZW5ndGgpXG4gIHJldHVybiB4b3IoY2h1bmssIHBhZClcbn1cbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbmZ1bmN0aW9uIFN0cmVhbUNpcGhlciAobW9kZSwga2V5LCBpdiwgZGVjcnlwdCkge1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuXG4gIHRoaXMuX2NpcGhlciA9IG5ldyBhZXMuQUVTKGtleSlcbiAgdGhpcy5fcHJldiA9IEJ1ZmZlci5mcm9tKGl2KVxuICB0aGlzLl9jYWNoZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxuICB0aGlzLl9zZWNDYWNoZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxuICB0aGlzLl9kZWNyeXB0ID0gZGVjcnlwdFxuICB0aGlzLl9tb2RlID0gbW9kZVxufVxuXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcblxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIHJldHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcywgY2h1bmssIHRoaXMuX2RlY3J5cHQpXG59XG5cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9jaXBoZXIuc2NydWIoKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0cmVhbUNpcGhlclxuIiwidmFyIERFUyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzJylcbnZhciBhZXMgPSByZXF1aXJlKCdicm93c2VyaWZ5LWFlcy9icm93c2VyJylcbnZhciBhZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL21vZGVzJylcbnZhciBkZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzL21vZGVzJylcbnZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxuXG5mdW5jdGlvbiBjcmVhdGVDaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICBzdWl0ZSA9IHN1aXRlLnRvTG93ZXJDYXNlKClcblxuICB2YXIga2V5TGVuLCBpdkxlblxuICBpZiAoYWVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gYWVzTW9kZXNbc3VpdGVdLmtleVxuICAgIGl2TGVuID0gYWVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gZGVzTW9kZXNbc3VpdGVdLmtleSAqIDhcbiAgICBpdkxlbiA9IGRlc01vZGVzW3N1aXRlXS5pdlxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cblxuICB2YXIga2V5cyA9IGVidGsocGFzc3dvcmQsIGZhbHNlLCBrZXlMZW4sIGl2TGVuKVxuICByZXR1cm4gY3JlYXRlQ2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWNpcGhlciAoc3VpdGUsIHBhc3N3b3JkKSB7XG4gIHN1aXRlID0gc3VpdGUudG9Mb3dlckNhc2UoKVxuXG4gIHZhciBrZXlMZW4sIGl2TGVuXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0ua2V5XG4gICAgaXZMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0uaXZcbiAgfSBlbHNlIGlmIChkZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBkZXNNb2Rlc1tzdWl0ZV0ua2V5ICogOFxuICAgIGl2TGVuID0gZGVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuXG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGtleUxlbiwgaXZMZW4pXG4gIHJldHVybiBjcmVhdGVEZWNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2lwaGVyaXYgKHN1aXRlLCBrZXksIGl2KSB7XG4gIHN1aXRlID0gc3VpdGUudG9Mb3dlckNhc2UoKVxuICBpZiAoYWVzTW9kZXNbc3VpdGVdKSByZXR1cm4gYWVzLmNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXksIGl2KVxuICBpZiAoZGVzTW9kZXNbc3VpdGVdKSByZXR1cm4gbmV3IERFUyh7IGtleToga2V5LCBpdjogaXYsIG1vZGU6IHN1aXRlIH0pXG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXJpdiAoc3VpdGUsIGtleSwgaXYpIHtcbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHJldHVybiBhZXMuY3JlYXRlRGVjaXBoZXJpdihzdWl0ZSwga2V5LCBpdilcbiAgaWYgKGRlc01vZGVzW3N1aXRlXSkgcmV0dXJuIG5ldyBERVMoeyBrZXk6IGtleSwgaXY6IGl2LCBtb2RlOiBzdWl0ZSwgZGVjcnlwdDogdHJ1ZSB9KVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG59XG5cbmZ1bmN0aW9uIGdldENpcGhlcnMgKCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVzTW9kZXMpLmNvbmNhdChhZXMuZ2V0Q2lwaGVycygpKVxufVxuXG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGV4cG9ydHMuQ2lwaGVyID0gY3JlYXRlQ2lwaGVyXG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gZXhwb3J0cy5DaXBoZXJpdiA9IGNyZWF0ZUNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyID0gZXhwb3J0cy5EZWNpcGhlciA9IGNyZWF0ZURlY2lwaGVyXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyaXYgPSBleHBvcnRzLkRlY2lwaGVyaXYgPSBjcmVhdGVEZWNpcGhlcml2XG5leHBvcnRzLmxpc3RDaXBoZXJzID0gZXhwb3J0cy5nZXRDaXBoZXJzID0gZ2V0Q2lwaGVyc1xuIiwidmFyIENpcGhlckJhc2UgPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG52YXIgZGVzID0gcmVxdWlyZSgnZGVzLmpzJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgbW9kZXMgPSB7XG4gICdkZXMtZWRlMy1jYmMnOiBkZXMuQ0JDLmluc3RhbnRpYXRlKGRlcy5FREUpLFxuICAnZGVzLWVkZTMnOiBkZXMuRURFLFxuICAnZGVzLWVkZS1jYmMnOiBkZXMuQ0JDLmluc3RhbnRpYXRlKGRlcy5FREUpLFxuICAnZGVzLWVkZSc6IGRlcy5FREUsXG4gICdkZXMtY2JjJzogZGVzLkNCQy5pbnN0YW50aWF0ZShkZXMuREVTKSxcbiAgJ2Rlcy1lY2InOiBkZXMuREVTXG59XG5tb2Rlcy5kZXMgPSBtb2Rlc1snZGVzLWNiYyddXG5tb2Rlcy5kZXMzID0gbW9kZXNbJ2Rlcy1lZGUzLWNiYyddXG5tb2R1bGUuZXhwb3J0cyA9IERFU1xuaW5oZXJpdHMoREVTLCBDaXBoZXJCYXNlKVxuZnVuY3Rpb24gREVTIChvcHRzKSB7XG4gIENpcGhlckJhc2UuY2FsbCh0aGlzKVxuICB2YXIgbW9kZU5hbWUgPSBvcHRzLm1vZGUudG9Mb3dlckNhc2UoKVxuICB2YXIgbW9kZSA9IG1vZGVzW21vZGVOYW1lXVxuICB2YXIgdHlwZVxuICBpZiAob3B0cy5kZWNyeXB0KSB7XG4gICAgdHlwZSA9ICdkZWNyeXB0J1xuICB9IGVsc2Uge1xuICAgIHR5cGUgPSAnZW5jcnlwdCdcbiAgfVxuICB2YXIga2V5ID0gb3B0cy5rZXlcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoa2V5KSkge1xuICAgIGtleSA9IEJ1ZmZlci5mcm9tKGtleSlcbiAgfVxuICBpZiAobW9kZU5hbWUgPT09ICdkZXMtZWRlJyB8fCBtb2RlTmFtZSA9PT0gJ2Rlcy1lZGUtY2JjJykge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwga2V5LnNsaWNlKDAsIDgpXSlcbiAgfVxuICB2YXIgaXYgPSBvcHRzLml2XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGl2KSkge1xuICAgIGl2ID0gQnVmZmVyLmZyb20oaXYpXG4gIH1cbiAgdGhpcy5fZGVzID0gbW9kZS5jcmVhdGUoe1xuICAgIGtleToga2V5LFxuICAgIGl2OiBpdixcbiAgICB0eXBlOiB0eXBlXG4gIH0pXG59XG5ERVMucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICByZXR1cm4gQnVmZmVyLmZyb20odGhpcy5fZGVzLnVwZGF0ZShkYXRhKSlcbn1cbkRFUy5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gQnVmZmVyLmZyb20odGhpcy5fZGVzLmZpbmFsKCkpXG59XG4iLCJleHBvcnRzWydkZXMtZWNiJ10gPSB7XG4gIGtleTogOCxcbiAgaXY6IDBcbn1cbmV4cG9ydHNbJ2Rlcy1jYmMnXSA9IGV4cG9ydHMuZGVzID0ge1xuICBrZXk6IDgsXG4gIGl2OiA4XG59XG5leHBvcnRzWydkZXMtZWRlMy1jYmMnXSA9IGV4cG9ydHMuZGVzMyA9IHtcbiAga2V5OiAyNCxcbiAgaXY6IDhcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUzJ10gPSB7XG4gIGtleTogMjQsXG4gIGl2OiAwXG59XG5leHBvcnRzWydkZXMtZWRlLWNiYyddID0ge1xuICBrZXk6IDE2LFxuICBpdjogOFxufVxuZXhwb3J0c1snZGVzLWVkZSddID0ge1xuICBrZXk6IDE2LFxuICBpdjogMFxufVxuIiwidmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKVxuXG5mdW5jdGlvbiBibGluZCAocHJpdikge1xuICB2YXIgciA9IGdldHIocHJpdilcbiAgdmFyIGJsaW5kZXIgPSByLnRvUmVkKEJOLm1vbnQocHJpdi5tb2R1bHVzKSkucmVkUG93KG5ldyBCTihwcml2LnB1YmxpY0V4cG9uZW50KSkuZnJvbVJlZCgpXG4gIHJldHVybiB7IGJsaW5kZXI6IGJsaW5kZXIsIHVuYmxpbmRlcjogci5pbnZtKHByaXYubW9kdWx1cykgfVxufVxuXG5mdW5jdGlvbiBnZXRyIChwcml2KSB7XG4gIHZhciBsZW4gPSBwcml2Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciByXG4gIGRvIHtcbiAgICByID0gbmV3IEJOKHJhbmRvbUJ5dGVzKGxlbikpXG4gIH0gd2hpbGUgKHIuY21wKHByaXYubW9kdWx1cykgPj0gMCB8fCAhci51bW9kKHByaXYucHJpbWUxKSB8fCAhci51bW9kKHByaXYucHJpbWUyKSlcbiAgcmV0dXJuIHJcbn1cblxuZnVuY3Rpb24gY3J0IChtc2csIHByaXYpIHtcbiAgdmFyIGJsaW5kcyA9IGJsaW5kKHByaXYpXG4gIHZhciBsZW4gPSBwcml2Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBibGluZGVkID0gbmV3IEJOKG1zZykubXVsKGJsaW5kcy5ibGluZGVyKS51bW9kKHByaXYubW9kdWx1cylcbiAgdmFyIGMxID0gYmxpbmRlZC50b1JlZChCTi5tb250KHByaXYucHJpbWUxKSlcbiAgdmFyIGMyID0gYmxpbmRlZC50b1JlZChCTi5tb250KHByaXYucHJpbWUyKSlcbiAgdmFyIHFpbnYgPSBwcml2LmNvZWZmaWNpZW50XG4gIHZhciBwID0gcHJpdi5wcmltZTFcbiAgdmFyIHEgPSBwcml2LnByaW1lMlxuICB2YXIgbTEgPSBjMS5yZWRQb3cocHJpdi5leHBvbmVudDEpLmZyb21SZWQoKVxuICB2YXIgbTIgPSBjMi5yZWRQb3cocHJpdi5leHBvbmVudDIpLmZyb21SZWQoKVxuICB2YXIgaCA9IG0xLmlzdWIobTIpLmltdWwocWludikudW1vZChwKS5pbXVsKHEpXG4gIHJldHVybiBtMi5pYWRkKGgpLmltdWwoYmxpbmRzLnVuYmxpbmRlcikudW1vZChwcml2Lm1vZHVsdXMpLnRvQXJyYXlMaWtlKEJ1ZmZlciwgJ2JlJywgbGVuKVxufVxuY3J0LmdldHIgPSBnZXRyXG5cbm1vZHVsZS5leHBvcnRzID0gY3J0XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vYnJvd3Nlci9hbGdvcml0aG1zLmpzb24nKVxuIiwidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgY3JlYXRlSGFzaCA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoJylcbnZhciBzdHJlYW0gPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0nKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIHNpZ24gPSByZXF1aXJlKCcuL3NpZ24nKVxudmFyIHZlcmlmeSA9IHJlcXVpcmUoJy4vdmVyaWZ5JylcblxudmFyIGFsZ29yaXRobXMgPSByZXF1aXJlKCcuL2FsZ29yaXRobXMuanNvbicpXG5PYmplY3Qua2V5cyhhbGdvcml0aG1zKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgYWxnb3JpdGhtc1trZXldLmlkID0gQnVmZmVyLmZyb20oYWxnb3JpdGhtc1trZXldLmlkLCAnaGV4JylcbiAgYWxnb3JpdGhtc1trZXkudG9Mb3dlckNhc2UoKV0gPSBhbGdvcml0aG1zW2tleV1cbn0pXG5cbmZ1bmN0aW9uIFNpZ24gKGFsZ29yaXRobSkge1xuICBzdHJlYW0uV3JpdGFibGUuY2FsbCh0aGlzKVxuXG4gIHZhciBkYXRhID0gYWxnb3JpdGhtc1thbGdvcml0aG1dXG4gIGlmICghZGF0YSkgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1lc3NhZ2UgZGlnZXN0JylcblxuICB0aGlzLl9oYXNoVHlwZSA9IGRhdGEuaGFzaFxuICB0aGlzLl9oYXNoID0gY3JlYXRlSGFzaChkYXRhLmhhc2gpXG4gIHRoaXMuX3RhZyA9IGRhdGEuaWRcbiAgdGhpcy5fc2lnblR5cGUgPSBkYXRhLnNpZ25cbn1cbmluaGVyaXRzKFNpZ24sIHN0cmVhbS5Xcml0YWJsZSlcblxuU2lnbi5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gX3dyaXRlIChkYXRhLCBfLCBkb25lKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG4gIGRvbmUoKVxufVxuXG5TaWduLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSBkYXRhID0gQnVmZmVyLmZyb20oZGF0YSwgZW5jKVxuXG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG4gIHJldHVybiB0aGlzXG59XG5cblNpZ24ucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduTWV0aG9kIChrZXksIGVuYykge1xuICB0aGlzLmVuZCgpXG4gIHZhciBoYXNoID0gdGhpcy5faGFzaC5kaWdlc3QoKVxuICB2YXIgc2lnID0gc2lnbihoYXNoLCBrZXksIHRoaXMuX2hhc2hUeXBlLCB0aGlzLl9zaWduVHlwZSwgdGhpcy5fdGFnKVxuXG4gIHJldHVybiBlbmMgPyBzaWcudG9TdHJpbmcoZW5jKSA6IHNpZ1xufVxuXG5mdW5jdGlvbiBWZXJpZnkgKGFsZ29yaXRobSkge1xuICBzdHJlYW0uV3JpdGFibGUuY2FsbCh0aGlzKVxuXG4gIHZhciBkYXRhID0gYWxnb3JpdGhtc1thbGdvcml0aG1dXG4gIGlmICghZGF0YSkgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1lc3NhZ2UgZGlnZXN0JylcblxuICB0aGlzLl9oYXNoID0gY3JlYXRlSGFzaChkYXRhLmhhc2gpXG4gIHRoaXMuX3RhZyA9IGRhdGEuaWRcbiAgdGhpcy5fc2lnblR5cGUgPSBkYXRhLnNpZ25cbn1cbmluaGVyaXRzKFZlcmlmeSwgc3RyZWFtLldyaXRhYmxlKVxuXG5WZXJpZnkucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIF93cml0ZSAoZGF0YSwgXywgZG9uZSkge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxuICBkb25lKClcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSBkYXRhID0gQnVmZmVyLmZyb20oZGF0YSwgZW5jKVxuXG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG4gIHJldHVybiB0aGlzXG59XG5cblZlcmlmeS5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5TWV0aG9kIChrZXksIHNpZywgZW5jKSB7XG4gIGlmICh0eXBlb2Ygc2lnID09PSAnc3RyaW5nJykgc2lnID0gQnVmZmVyLmZyb20oc2lnLCBlbmMpXG5cbiAgdGhpcy5lbmQoKVxuICB2YXIgaGFzaCA9IHRoaXMuX2hhc2guZGlnZXN0KClcbiAgcmV0dXJuIHZlcmlmeShzaWcsIGhhc2gsIGtleSwgdGhpcy5fc2lnblR5cGUsIHRoaXMuX3RhZylcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2lnbiAoYWxnb3JpdGhtKSB7XG4gIHJldHVybiBuZXcgU2lnbihhbGdvcml0aG0pXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVZlcmlmeSAoYWxnb3JpdGhtKSB7XG4gIHJldHVybiBuZXcgVmVyaWZ5KGFsZ29yaXRobSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFNpZ246IGNyZWF0ZVNpZ24sXG4gIFZlcmlmeTogY3JlYXRlVmVyaWZ5LFxuICBjcmVhdGVTaWduOiBjcmVhdGVTaWduLFxuICBjcmVhdGVWZXJpZnk6IGNyZWF0ZVZlcmlmeVxufVxuIiwiLy8gbXVjaCBvZiB0aGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L3NlbGYtc2lnbmVkL2Jsb2IvZ2gtcGFnZXMvbGliL3JzYS5qc1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgY3JlYXRlSG1hYyA9IHJlcXVpcmUoJ2NyZWF0ZS1obWFjJylcbnZhciBjcnQgPSByZXF1aXJlKCdicm93c2VyaWZ5LXJzYScpXG52YXIgRUMgPSByZXF1aXJlKCdlbGxpcHRpYycpLmVjXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgcGFyc2VLZXlzID0gcmVxdWlyZSgncGFyc2UtYXNuMScpXG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi9jdXJ2ZXMuanNvbicpXG5cbmZ1bmN0aW9uIHNpZ24gKGhhc2gsIGtleSwgaGFzaFR5cGUsIHNpZ25UeXBlLCB0YWcpIHtcbiAgdmFyIHByaXYgPSBwYXJzZUtleXMoa2V5KVxuICBpZiAocHJpdi5jdXJ2ZSkge1xuICAgIC8vIHJzYSBrZXlzIGNhbiBiZSBpbnRlcnByZXRlZCBhcyBlY2RzYSBvbmVzIGluIG9wZW5zc2xcbiAgICBpZiAoc2lnblR5cGUgIT09ICdlY2RzYScgJiYgc2lnblR5cGUgIT09ICdlY2RzYS9yc2EnKSB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHByaXZhdGUga2V5IHR5cGUnKVxuICAgIHJldHVybiBlY1NpZ24oaGFzaCwgcHJpdilcbiAgfSBlbHNlIGlmIChwcml2LnR5cGUgPT09ICdkc2EnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZHNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgICByZXR1cm4gZHNhU2lnbihoYXNoLCBwcml2LCBoYXNoVHlwZSlcbiAgfSBlbHNlIHtcbiAgICBpZiAoc2lnblR5cGUgIT09ICdyc2EnICYmIHNpZ25UeXBlICE9PSAnZWNkc2EvcnNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgfVxuICBoYXNoID0gQnVmZmVyLmNvbmNhdChbdGFnLCBoYXNoXSlcbiAgdmFyIGxlbiA9IHByaXYubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgdmFyIHBhZCA9IFswLCAxXVxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMSA8IGxlbikgcGFkLnB1c2goMHhmZilcbiAgcGFkLnB1c2goMHgwMClcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgaGFzaC5sZW5ndGgpIHBhZC5wdXNoKGhhc2hbaV0pXG5cbiAgdmFyIG91dCA9IGNydChwYWQsIHByaXYpXG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gZWNTaWduIChoYXNoLCBwcml2KSB7XG4gIHZhciBjdXJ2ZUlkID0gY3VydmVzW3ByaXYuY3VydmUuam9pbignLicpXVxuICBpZiAoIWN1cnZlSWQpIHRocm93IG5ldyBFcnJvcigndW5rbm93biBjdXJ2ZSAnICsgcHJpdi5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBrZXkgPSBjdXJ2ZS5rZXlGcm9tUHJpdmF0ZShwcml2LnByaXZhdGVLZXkpXG4gIHZhciBvdXQgPSBrZXkuc2lnbihoYXNoKVxuXG4gIHJldHVybiBCdWZmZXIuZnJvbShvdXQudG9ERVIoKSlcbn1cblxuZnVuY3Rpb24gZHNhU2lnbiAoaGFzaCwgcHJpdiwgYWxnbykge1xuICB2YXIgeCA9IHByaXYucGFyYW1zLnByaXZfa2V5XG4gIHZhciBwID0gcHJpdi5wYXJhbXMucFxuICB2YXIgcSA9IHByaXYucGFyYW1zLnFcbiAgdmFyIGcgPSBwcml2LnBhcmFtcy5nXG4gIHZhciByID0gbmV3IEJOKDApXG4gIHZhciBrXG4gIHZhciBIID0gYml0czJpbnQoaGFzaCwgcSkubW9kKHEpXG4gIHZhciBzID0gZmFsc2VcbiAgdmFyIGt2ID0gZ2V0S2V5KHgsIHEsIGhhc2gsIGFsZ28pXG4gIHdoaWxlIChzID09PSBmYWxzZSkge1xuICAgIGsgPSBtYWtlS2V5KHEsIGt2LCBhbGdvKVxuICAgIHIgPSBtYWtlUihnLCBrLCBwLCBxKVxuICAgIHMgPSBrLmludm0ocSkuaW11bChILmFkZCh4Lm11bChyKSkpLm1vZChxKVxuICAgIGlmIChzLmNtcG4oMCkgPT09IDApIHtcbiAgICAgIHMgPSBmYWxzZVxuICAgICAgciA9IG5ldyBCTigwKVxuICAgIH1cbiAgfVxuICByZXR1cm4gdG9ERVIociwgcylcbn1cblxuZnVuY3Rpb24gdG9ERVIgKHIsIHMpIHtcbiAgciA9IHIudG9BcnJheSgpXG4gIHMgPSBzLnRvQXJyYXkoKVxuXG4gIC8vIFBhZCB2YWx1ZXNcbiAgaWYgKHJbMF0gJiAweDgwKSByID0gWzBdLmNvbmNhdChyKVxuICBpZiAoc1swXSAmIDB4ODApIHMgPSBbMF0uY29uY2F0KHMpXG5cbiAgdmFyIHRvdGFsID0gci5sZW5ndGggKyBzLmxlbmd0aCArIDRcbiAgdmFyIHJlcyA9IFsweDMwLCB0b3RhbCwgMHgwMiwgci5sZW5ndGhdXG4gIHJlcyA9IHJlcy5jb25jYXQociwgWzB4MDIsIHMubGVuZ3RoXSwgcylcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKHJlcylcbn1cblxuZnVuY3Rpb24gZ2V0S2V5ICh4LCBxLCBoYXNoLCBhbGdvKSB7XG4gIHggPSBCdWZmZXIuZnJvbSh4LnRvQXJyYXkoKSlcbiAgaWYgKHgubGVuZ3RoIDwgcS5ieXRlTGVuZ3RoKCkpIHtcbiAgICB2YXIgemVyb3MgPSBCdWZmZXIuYWxsb2MocS5ieXRlTGVuZ3RoKCkgLSB4Lmxlbmd0aClcbiAgICB4ID0gQnVmZmVyLmNvbmNhdChbemVyb3MsIHhdKVxuICB9XG4gIHZhciBobGVuID0gaGFzaC5sZW5ndGhcbiAgdmFyIGhiaXRzID0gYml0czJvY3RldHMoaGFzaCwgcSlcbiAgdmFyIHYgPSBCdWZmZXIuYWxsb2MoaGxlbilcbiAgdi5maWxsKDEpXG4gIHZhciBrID0gQnVmZmVyLmFsbG9jKGhsZW4pXG4gIGsgPSBjcmVhdGVIbWFjKGFsZ28sIGspLnVwZGF0ZSh2KS51cGRhdGUoQnVmZmVyLmZyb20oWzBdKSkudXBkYXRlKHgpLnVwZGF0ZShoYml0cykuZGlnZXN0KClcbiAgdiA9IGNyZWF0ZUhtYWMoYWxnbywgaykudXBkYXRlKHYpLmRpZ2VzdCgpXG4gIGsgPSBjcmVhdGVIbWFjKGFsZ28sIGspLnVwZGF0ZSh2KS51cGRhdGUoQnVmZmVyLmZyb20oWzFdKSkudXBkYXRlKHgpLnVwZGF0ZShoYml0cykuZGlnZXN0KClcbiAgdiA9IGNyZWF0ZUhtYWMoYWxnbywgaykudXBkYXRlKHYpLmRpZ2VzdCgpXG4gIHJldHVybiB7IGs6IGssIHY6IHYgfVxufVxuXG5mdW5jdGlvbiBiaXRzMmludCAob2JpdHMsIHEpIHtcbiAgdmFyIGJpdHMgPSBuZXcgQk4ob2JpdHMpXG4gIHZhciBzaGlmdCA9IChvYml0cy5sZW5ndGggPDwgMykgLSBxLmJpdExlbmd0aCgpXG4gIGlmIChzaGlmdCA+IDApIGJpdHMuaXNocm4oc2hpZnQpXG4gIHJldHVybiBiaXRzXG59XG5cbmZ1bmN0aW9uIGJpdHMyb2N0ZXRzIChiaXRzLCBxKSB7XG4gIGJpdHMgPSBiaXRzMmludChiaXRzLCBxKVxuICBiaXRzID0gYml0cy5tb2QocSlcbiAgdmFyIG91dCA9IEJ1ZmZlci5mcm9tKGJpdHMudG9BcnJheSgpKVxuICBpZiAob3V0Lmxlbmd0aCA8IHEuYnl0ZUxlbmd0aCgpKSB7XG4gICAgdmFyIHplcm9zID0gQnVmZmVyLmFsbG9jKHEuYnl0ZUxlbmd0aCgpIC0gb3V0Lmxlbmd0aClcbiAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFt6ZXJvcywgb3V0XSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIG1ha2VLZXkgKHEsIGt2LCBhbGdvKSB7XG4gIHZhciB0XG4gIHZhciBrXG5cbiAgZG8ge1xuICAgIHQgPSBCdWZmZXIuYWxsb2MoMClcblxuICAgIHdoaWxlICh0Lmxlbmd0aCAqIDggPCBxLmJpdExlbmd0aCgpKSB7XG4gICAgICBrdi52ID0gY3JlYXRlSG1hYyhhbGdvLCBrdi5rKS51cGRhdGUoa3YudikuZGlnZXN0KClcbiAgICAgIHQgPSBCdWZmZXIuY29uY2F0KFt0LCBrdi52XSlcbiAgICB9XG5cbiAgICBrID0gYml0czJpbnQodCwgcSlcbiAgICBrdi5rID0gY3JlYXRlSG1hYyhhbGdvLCBrdi5rKS51cGRhdGUoa3YudikudXBkYXRlKEJ1ZmZlci5mcm9tKFswXSkpLmRpZ2VzdCgpXG4gICAga3YudiA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaykudXBkYXRlKGt2LnYpLmRpZ2VzdCgpXG4gIH0gd2hpbGUgKGsuY21wKHEpICE9PSAtMSlcblxuICByZXR1cm4ga1xufVxuXG5mdW5jdGlvbiBtYWtlUiAoZywgaywgcCwgcSkge1xuICByZXR1cm4gZy50b1JlZChCTi5tb250KHApKS5yZWRQb3coaykuZnJvbVJlZCgpLm1vZChxKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNpZ25cbm1vZHVsZS5leHBvcnRzLmdldEtleSA9IGdldEtleVxubW9kdWxlLmV4cG9ydHMubWFrZUtleSA9IG1ha2VLZXlcbiIsIi8vIG11Y2ggb2YgdGhpcyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9zZWxmLXNpZ25lZC9ibG9iL2doLXBhZ2VzL2xpYi9yc2EuanNcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIEVDID0gcmVxdWlyZSgnZWxsaXB0aWMnKS5lY1xudmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKVxudmFyIGN1cnZlcyA9IHJlcXVpcmUoJy4vY3VydmVzLmpzb24nKVxuXG5mdW5jdGlvbiB2ZXJpZnkgKHNpZywgaGFzaCwga2V5LCBzaWduVHlwZSwgdGFnKSB7XG4gIHZhciBwdWIgPSBwYXJzZUtleXMoa2V5KVxuICBpZiAocHViLnR5cGUgPT09ICdlYycpIHtcbiAgICAvLyByc2Ega2V5cyBjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgZWNkc2Egb25lcyBpbiBvcGVuc3NsXG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZWNkc2EnICYmIHNpZ25UeXBlICE9PSAnZWNkc2EvcnNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwdWJsaWMga2V5IHR5cGUnKVxuICAgIHJldHVybiBlY1ZlcmlmeShzaWcsIGhhc2gsIHB1YilcbiAgfSBlbHNlIGlmIChwdWIudHlwZSA9PT0gJ2RzYScpIHtcbiAgICBpZiAoc2lnblR5cGUgIT09ICdkc2EnKSB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgcmV0dXJuIGRzYVZlcmlmeShzaWcsIGhhc2gsIHB1YilcbiAgfSBlbHNlIHtcbiAgICBpZiAoc2lnblR5cGUgIT09ICdyc2EnICYmIHNpZ25UeXBlICE9PSAnZWNkc2EvcnNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwdWJsaWMga2V5IHR5cGUnKVxuICB9XG4gIGhhc2ggPSBCdWZmZXIuY29uY2F0KFt0YWcsIGhhc2hdKVxuICB2YXIgbGVuID0gcHViLm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBwYWQgPSBbMV1cbiAgdmFyIHBhZE51bSA9IDBcbiAgd2hpbGUgKGhhc2gubGVuZ3RoICsgcGFkLmxlbmd0aCArIDIgPCBsZW4pIHtcbiAgICBwYWQucHVzaCgweGZmKVxuICAgIHBhZE51bSsrXG4gIH1cbiAgcGFkLnB1c2goMHgwMClcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgaGFzaC5sZW5ndGgpIHtcbiAgICBwYWQucHVzaChoYXNoW2ldKVxuICB9XG4gIHBhZCA9IEJ1ZmZlci5mcm9tKHBhZClcbiAgdmFyIHJlZCA9IEJOLm1vbnQocHViLm1vZHVsdXMpXG4gIHNpZyA9IG5ldyBCTihzaWcpLnRvUmVkKHJlZClcblxuICBzaWcgPSBzaWcucmVkUG93KG5ldyBCTihwdWIucHVibGljRXhwb25lbnQpKVxuICBzaWcgPSBCdWZmZXIuZnJvbShzaWcuZnJvbVJlZCgpLnRvQXJyYXkoKSlcbiAgdmFyIG91dCA9IHBhZE51bSA8IDggPyAxIDogMFxuICBsZW4gPSBNYXRoLm1pbihzaWcubGVuZ3RoLCBwYWQubGVuZ3RoKVxuICBpZiAoc2lnLmxlbmd0aCAhPT0gcGFkLmxlbmd0aCkgb3V0ID0gMVxuXG4gIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSBvdXQgfD0gc2lnW2ldIF4gcGFkW2ldXG4gIHJldHVybiBvdXQgPT09IDBcbn1cblxuZnVuY3Rpb24gZWNWZXJpZnkgKHNpZywgaGFzaCwgcHViKSB7XG4gIHZhciBjdXJ2ZUlkID0gY3VydmVzW3B1Yi5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCcuJyldXG4gIGlmICghY3VydmVJZCkgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGN1cnZlICcgKyBwdWIuZGF0YS5hbGdvcml0aG0uY3VydmUuam9pbignLicpKVxuXG4gIHZhciBjdXJ2ZSA9IG5ldyBFQyhjdXJ2ZUlkKVxuICB2YXIgcHVia2V5ID0gcHViLmRhdGEuc3ViamVjdFByaXZhdGVLZXkuZGF0YVxuXG4gIHJldHVybiBjdXJ2ZS52ZXJpZnkoaGFzaCwgc2lnLCBwdWJrZXkpXG59XG5cbmZ1bmN0aW9uIGRzYVZlcmlmeSAoc2lnLCBoYXNoLCBwdWIpIHtcbiAgdmFyIHAgPSBwdWIuZGF0YS5wXG4gIHZhciBxID0gcHViLmRhdGEucVxuICB2YXIgZyA9IHB1Yi5kYXRhLmdcbiAgdmFyIHkgPSBwdWIuZGF0YS5wdWJfa2V5XG4gIHZhciB1bnBhY2tlZCA9IHBhcnNlS2V5cy5zaWduYXR1cmUuZGVjb2RlKHNpZywgJ2RlcicpXG4gIHZhciBzID0gdW5wYWNrZWQuc1xuICB2YXIgciA9IHVucGFja2VkLnJcbiAgY2hlY2tWYWx1ZShzLCBxKVxuICBjaGVja1ZhbHVlKHIsIHEpXG4gIHZhciBtb250cCA9IEJOLm1vbnQocClcbiAgdmFyIHcgPSBzLmludm0ocSlcbiAgdmFyIHYgPSBnLnRvUmVkKG1vbnRwKVxuICAgIC5yZWRQb3cobmV3IEJOKGhhc2gpLm11bCh3KS5tb2QocSkpXG4gICAgLmZyb21SZWQoKVxuICAgIC5tdWwoeS50b1JlZChtb250cCkucmVkUG93KHIubXVsKHcpLm1vZChxKSkuZnJvbVJlZCgpKVxuICAgIC5tb2QocClcbiAgICAubW9kKHEpXG4gIHJldHVybiB2LmNtcChyKSA9PT0gMFxufVxuXG5mdW5jdGlvbiBjaGVja1ZhbHVlIChiLCBxKSB7XG4gIGlmIChiLmNtcG4oMCkgPD0gMCkgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHNpZycpXG4gIGlmIChiLmNtcChxKSA+PSBxKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2lnJylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJpZnlcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludCBjYW1lbGNhc2U6IFwib2ZmXCIgKi9cblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpO1xuXG52YXIgWnN0cmVhbSA9IHJlcXVpcmUoJ3Bha28vbGliL3psaWIvenN0cmVhbScpO1xudmFyIHpsaWJfZGVmbGF0ZSA9IHJlcXVpcmUoJ3Bha28vbGliL3psaWIvZGVmbGF0ZS5qcycpO1xudmFyIHpsaWJfaW5mbGF0ZSA9IHJlcXVpcmUoJ3Bha28vbGliL3psaWIvaW5mbGF0ZS5qcycpO1xudmFyIGNvbnN0YW50cyA9IHJlcXVpcmUoJ3Bha28vbGliL3psaWIvY29uc3RhbnRzJyk7XG5cbmZvciAodmFyIGtleSBpbiBjb25zdGFudHMpIHtcbiAgZXhwb3J0c1trZXldID0gY29uc3RhbnRzW2tleV07XG59XG5cbi8vIHpsaWIgbW9kZXNcbmV4cG9ydHMuTk9ORSA9IDA7XG5leHBvcnRzLkRFRkxBVEUgPSAxO1xuZXhwb3J0cy5JTkZMQVRFID0gMjtcbmV4cG9ydHMuR1pJUCA9IDM7XG5leHBvcnRzLkdVTlpJUCA9IDQ7XG5leHBvcnRzLkRFRkxBVEVSQVcgPSA1O1xuZXhwb3J0cy5JTkZMQVRFUkFXID0gNjtcbmV4cG9ydHMuVU5aSVAgPSA3O1xuXG52YXIgR1pJUF9IRUFERVJfSUQxID0gMHgxZjtcbnZhciBHWklQX0hFQURFUl9JRDIgPSAweDhiO1xuXG4vKipcbiAqIEVtdWxhdGUgTm9kZSdzIHpsaWIgQysrIGxheWVyIGZvciB1c2UgYnkgdGhlIEpTIGxheWVyIGluIGluZGV4LmpzXG4gKi9cbmZ1bmN0aW9uIFpsaWIobW9kZSkge1xuICBpZiAodHlwZW9mIG1vZGUgIT09ICdudW1iZXInIHx8IG1vZGUgPCBleHBvcnRzLkRFRkxBVEUgfHwgbW9kZSA+IGV4cG9ydHMuVU5aSVApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCYWQgYXJndW1lbnQnKTtcbiAgfVxuXG4gIHRoaXMuZGljdGlvbmFyeSA9IG51bGw7XG4gIHRoaXMuZXJyID0gMDtcbiAgdGhpcy5mbHVzaCA9IDA7XG4gIHRoaXMuaW5pdF9kb25lID0gZmFsc2U7XG4gIHRoaXMubGV2ZWwgPSAwO1xuICB0aGlzLm1lbUxldmVsID0gMDtcbiAgdGhpcy5tb2RlID0gbW9kZTtcbiAgdGhpcy5zdHJhdGVneSA9IDA7XG4gIHRoaXMud2luZG93Qml0cyA9IDA7XG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSBmYWxzZTtcbiAgdGhpcy5wZW5kaW5nX2Nsb3NlID0gZmFsc2U7XG4gIHRoaXMuZ3ppcF9pZF9ieXRlc19yZWFkID0gMDtcbn1cblxuWmxpYi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLndyaXRlX2luX3Byb2dyZXNzKSB7XG4gICAgdGhpcy5wZW5kaW5nX2Nsb3NlID0gdHJ1ZTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLnBlbmRpbmdfY2xvc2UgPSBmYWxzZTtcblxuICBhc3NlcnQodGhpcy5pbml0X2RvbmUsICdjbG9zZSBiZWZvcmUgaW5pdCcpO1xuICBhc3NlcnQodGhpcy5tb2RlIDw9IGV4cG9ydHMuVU5aSVApO1xuXG4gIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuREVGTEFURSB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1pJUCB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuREVGTEFURVJBVykge1xuICAgIHpsaWJfZGVmbGF0ZS5kZWZsYXRlRW5kKHRoaXMuc3RybSk7XG4gIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBleHBvcnRzLklORkxBVEUgfHwgdGhpcy5tb2RlID09PSBleHBvcnRzLkdVTlpJUCB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuSU5GTEFURVJBVyB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuVU5aSVApIHtcbiAgICB6bGliX2luZmxhdGUuaW5mbGF0ZUVuZCh0aGlzLnN0cm0pO1xuICB9XG5cbiAgdGhpcy5tb2RlID0gZXhwb3J0cy5OT05FO1xuXG4gIHRoaXMuZGljdGlvbmFyeSA9IG51bGw7XG59O1xuXG5abGliLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pIHtcbiAgcmV0dXJuIHRoaXMuX3dyaXRlKHRydWUsIGZsdXNoLCBpbnB1dCwgaW5fb2ZmLCBpbl9sZW4sIG91dCwgb3V0X29mZiwgb3V0X2xlbik7XG59O1xuXG5abGliLnByb3RvdHlwZS53cml0ZVN5bmMgPSBmdW5jdGlvbiAoZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKSB7XG4gIHJldHVybiB0aGlzLl93cml0ZShmYWxzZSwgZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKTtcbn07XG5cblpsaWIucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChhc3luYywgZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKSB7XG4gIGFzc2VydC5lcXVhbChhcmd1bWVudHMubGVuZ3RoLCA4KTtcblxuICBhc3NlcnQodGhpcy5pbml0X2RvbmUsICd3cml0ZSBiZWZvcmUgaW5pdCcpO1xuICBhc3NlcnQodGhpcy5tb2RlICE9PSBleHBvcnRzLk5PTkUsICdhbHJlYWR5IGZpbmFsaXplZCcpO1xuICBhc3NlcnQuZXF1YWwoZmFsc2UsIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MsICd3cml0ZSBhbHJlYWR5IGluIHByb2dyZXNzJyk7XG4gIGFzc2VydC5lcXVhbChmYWxzZSwgdGhpcy5wZW5kaW5nX2Nsb3NlLCAnY2xvc2UgaXMgcGVuZGluZycpO1xuXG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSB0cnVlO1xuXG4gIGFzc2VydC5lcXVhbChmYWxzZSwgZmx1c2ggPT09IHVuZGVmaW5lZCwgJ211c3QgcHJvdmlkZSBmbHVzaCB2YWx1ZScpO1xuXG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSB0cnVlO1xuXG4gIGlmIChmbHVzaCAhPT0gZXhwb3J0cy5aX05PX0ZMVVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfUEFSVElBTF9GTFVTSCAmJiBmbHVzaCAhPT0gZXhwb3J0cy5aX1NZTkNfRkxVU0ggJiYgZmx1c2ggIT09IGV4cG9ydHMuWl9GVUxMX0ZMVVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfRklOSVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfQkxPQ0spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZmx1c2ggdmFsdWUnKTtcbiAgfVxuXG4gIGlmIChpbnB1dCA9PSBudWxsKSB7XG4gICAgaW5wdXQgPSBCdWZmZXIuYWxsb2MoMCk7XG4gICAgaW5fbGVuID0gMDtcbiAgICBpbl9vZmYgPSAwO1xuICB9XG5cbiAgdGhpcy5zdHJtLmF2YWlsX2luID0gaW5fbGVuO1xuICB0aGlzLnN0cm0uaW5wdXQgPSBpbnB1dDtcbiAgdGhpcy5zdHJtLm5leHRfaW4gPSBpbl9vZmY7XG4gIHRoaXMuc3RybS5hdmFpbF9vdXQgPSBvdXRfbGVuO1xuICB0aGlzLnN0cm0ub3V0cHV0ID0gb3V0O1xuICB0aGlzLnN0cm0ubmV4dF9vdXQgPSBvdXRfb2ZmO1xuICB0aGlzLmZsdXNoID0gZmx1c2g7XG5cbiAgaWYgKCFhc3luYykge1xuICAgIC8vIHN5bmMgdmVyc2lvblxuICAgIHRoaXMuX3Byb2Nlc3MoKTtcblxuICAgIGlmICh0aGlzLl9jaGVja0Vycm9yKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9hZnRlclN5bmMoKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gYXN5bmMgdmVyc2lvblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgIHNlbGYuX3Byb2Nlc3MoKTtcbiAgICBzZWxmLl9hZnRlcigpO1xuICB9KTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cblpsaWIucHJvdG90eXBlLl9hZnRlclN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBhdmFpbF9vdXQgPSB0aGlzLnN0cm0uYXZhaWxfb3V0O1xuICB2YXIgYXZhaWxfaW4gPSB0aGlzLnN0cm0uYXZhaWxfaW47XG5cbiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IGZhbHNlO1xuXG4gIHJldHVybiBbYXZhaWxfaW4sIGF2YWlsX291dF07XG59O1xuXG5abGliLnByb3RvdHlwZS5fcHJvY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPSBudWxsO1xuXG4gIC8vIElmIHRoZSBhdmFpbF9vdXQgaXMgbGVmdCBhdCAwLCB0aGVuIGl0IG1lYW5zIHRoYXQgaXQgcmFuIG91dFxuICAvLyBvZiByb29tLiAgSWYgdGhlcmUgd2FzIGF2YWlsX291dCBsZWZ0IG92ZXIsIHRoZW4gaXQgbWVhbnNcbiAgLy8gdGhhdCBhbGwgb2YgdGhlIGlucHV0IHdhcyBjb25zdW1lZC5cbiAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICBjYXNlIGV4cG9ydHMuREVGTEFURTpcbiAgICBjYXNlIGV4cG9ydHMuR1pJUDpcbiAgICBjYXNlIGV4cG9ydHMuREVGTEFURVJBVzpcbiAgICAgIHRoaXMuZXJyID0gemxpYl9kZWZsYXRlLmRlZmxhdGUodGhpcy5zdHJtLCB0aGlzLmZsdXNoKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgZXhwb3J0cy5VTlpJUDpcbiAgICAgIGlmICh0aGlzLnN0cm0uYXZhaWxfaW4gPiAwKSB7XG4gICAgICAgIG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPSB0aGlzLnN0cm0ubmV4dF9pbjtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoICh0aGlzLmd6aXBfaWRfYnl0ZXNfcmVhZCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgaWYgKG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnN0cm0uaW5wdXRbbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZV0gPT09IEdaSVBfSEVBREVSX0lEMSkge1xuICAgICAgICAgICAgdGhpcy5nemlwX2lkX2J5dGVzX3JlYWQgPSAxO1xuICAgICAgICAgICAgbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZSsrO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zdHJtLmF2YWlsX2luID09PSAxKSB7XG4gICAgICAgICAgICAgIC8vIFRoZSBvbmx5IGF2YWlsYWJsZSBieXRlIHdhcyBhbHJlYWR5IHJlYWQuXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1vZGUgPSBleHBvcnRzLklORkxBVEU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmIChuZXh0X2V4cGVjdGVkX2hlYWRlcl9ieXRlID09PSBudWxsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5zdHJtLmlucHV0W25leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGVdID09PSBHWklQX0hFQURFUl9JRDIpIHtcbiAgICAgICAgICAgIHRoaXMuZ3ppcF9pZF9ieXRlc19yZWFkID0gMjtcbiAgICAgICAgICAgIHRoaXMubW9kZSA9IGV4cG9ydHMuR1VOWklQO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBhY3R1YWwgZGlmZmVyZW5jZSBiZXR3ZWVuIElORkxBVEUgYW5kIElORkxBVEVSQVdcbiAgICAgICAgICAgIC8vIChhZnRlciBpbml0aWFsaXphdGlvbikuXG4gICAgICAgICAgICB0aGlzLm1vZGUgPSBleHBvcnRzLklORkxBVEU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIG51bWJlciBvZiBnemlwIG1hZ2ljIG51bWJlciBieXRlcyByZWFkJyk7XG4gICAgICB9XG5cbiAgICAvLyBmYWxsdGhyb3VnaFxuICAgIGNhc2UgZXhwb3J0cy5JTkZMQVRFOlxuICAgIGNhc2UgZXhwb3J0cy5HVU5aSVA6XG4gICAgY2FzZSBleHBvcnRzLklORkxBVEVSQVc6XG4gICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlKHRoaXMuc3RybSwgdGhpcy5mbHVzaFxuXG4gICAgICAvLyBJZiBkYXRhIHdhcyBlbmNvZGVkIHdpdGggZGljdGlvbmFyeVxuICAgICAgKTtpZiAodGhpcy5lcnIgPT09IGV4cG9ydHMuWl9ORUVEX0RJQ1QgJiYgdGhpcy5kaWN0aW9uYXJ5KSB7XG4gICAgICAgIC8vIExvYWQgaXRcbiAgICAgICAgdGhpcy5lcnIgPSB6bGliX2luZmxhdGUuaW5mbGF0ZVNldERpY3Rpb25hcnkodGhpcy5zdHJtLCB0aGlzLmRpY3Rpb25hcnkpO1xuICAgICAgICBpZiAodGhpcy5lcnIgPT09IGV4cG9ydHMuWl9PSykge1xuICAgICAgICAgIC8vIEFuZCB0cnkgdG8gZGVjb2RlIGFnYWluXG4gICAgICAgICAgdGhpcy5lcnIgPSB6bGliX2luZmxhdGUuaW5mbGF0ZSh0aGlzLnN0cm0sIHRoaXMuZmx1c2gpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZXJyID09PSBleHBvcnRzLlpfREFUQV9FUlJPUikge1xuICAgICAgICAgIC8vIEJvdGggaW5mbGF0ZVNldERpY3Rpb25hcnkoKSBhbmQgaW5mbGF0ZSgpIHJldHVybiBaX0RBVEFfRVJST1IuXG4gICAgICAgICAgLy8gTWFrZSBpdCBwb3NzaWJsZSBmb3IgQWZ0ZXIoKSB0byB0ZWxsIGEgYmFkIGRpY3Rpb25hcnkgZnJvbSBiYWRcbiAgICAgICAgICAvLyBpbnB1dC5cbiAgICAgICAgICB0aGlzLmVyciA9IGV4cG9ydHMuWl9ORUVEX0RJQ1Q7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdoaWxlICh0aGlzLnN0cm0uYXZhaWxfaW4gPiAwICYmIHRoaXMubW9kZSA9PT0gZXhwb3J0cy5HVU5aSVAgJiYgdGhpcy5lcnIgPT09IGV4cG9ydHMuWl9TVFJFQU1fRU5EICYmIHRoaXMuc3RybS5uZXh0X2luWzBdICE9PSAweDAwKSB7XG4gICAgICAgIC8vIEJ5dGVzIHJlbWFpbiBpbiBpbnB1dCBidWZmZXIuIFBlcmhhcHMgdGhpcyBpcyBhbm90aGVyIGNvbXByZXNzZWRcbiAgICAgICAgLy8gbWVtYmVyIGluIHRoZSBzYW1lIGFyY2hpdmUsIG9yIGp1c3QgdHJhaWxpbmcgZ2FyYmFnZS5cbiAgICAgICAgLy8gVHJhaWxpbmcgemVybyBieXRlcyBhcmUgb2theSwgdGhvdWdoLCBzaW5jZSB0aGV5IGFyZSBmcmVxdWVudGx5XG4gICAgICAgIC8vIHVzZWQgZm9yIHBhZGRpbmcuXG5cbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlKHRoaXMuc3RybSwgdGhpcy5mbHVzaCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1vZGUgJyArIHRoaXMubW9kZSk7XG4gIH1cbn07XG5cblpsaWIucHJvdG90eXBlLl9jaGVja0Vycm9yID0gZnVuY3Rpb24gKCkge1xuICAvLyBBY2NlcHRhYmxlIGVycm9yIHN0YXRlcyBkZXBlbmQgb24gdGhlIHR5cGUgb2YgemxpYiBzdHJlYW0uXG4gIHN3aXRjaCAodGhpcy5lcnIpIHtcbiAgICBjYXNlIGV4cG9ydHMuWl9PSzpcbiAgICBjYXNlIGV4cG9ydHMuWl9CVUZfRVJST1I6XG4gICAgICBpZiAodGhpcy5zdHJtLmF2YWlsX291dCAhPT0gMCAmJiB0aGlzLmZsdXNoID09PSBleHBvcnRzLlpfRklOSVNIKSB7XG4gICAgICAgIHRoaXMuX2Vycm9yKCd1bmV4cGVjdGVkIGVuZCBvZiBmaWxlJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgZXhwb3J0cy5aX1NUUkVBTV9FTkQ6XG4gICAgICAvLyBub3JtYWwgc3RhdHVzZXMsIG5vdCBmYXRhbFxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBleHBvcnRzLlpfTkVFRF9ESUNUOlxuICAgICAgaWYgKHRoaXMuZGljdGlvbmFyeSA9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2Vycm9yKCdNaXNzaW5nIGRpY3Rpb25hcnknKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2Vycm9yKCdCYWQgZGljdGlvbmFyeScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBzb21ldGhpbmcgZWxzZS5cbiAgICAgIHRoaXMuX2Vycm9yKCdabGliIGVycm9yJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cblpsaWIucHJvdG90eXBlLl9hZnRlciA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLl9jaGVja0Vycm9yKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgYXZhaWxfb3V0ID0gdGhpcy5zdHJtLmF2YWlsX291dDtcbiAgdmFyIGF2YWlsX2luID0gdGhpcy5zdHJtLmF2YWlsX2luO1xuXG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAvLyBjYWxsIHRoZSB3cml0ZSgpIGNiXG4gIHRoaXMuY2FsbGJhY2soYXZhaWxfaW4sIGF2YWlsX291dCk7XG5cbiAgaWYgKHRoaXMucGVuZGluZ19jbG9zZSkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxufTtcblxuWmxpYi5wcm90b3R5cGUuX2Vycm9yID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgaWYgKHRoaXMuc3RybS5tc2cpIHtcbiAgICBtZXNzYWdlID0gdGhpcy5zdHJtLm1zZztcbiAgfVxuICB0aGlzLm9uZXJyb3IobWVzc2FnZSwgdGhpcy5lcnJcblxuICAvLyBubyBob3BlIG9mIHJlc2N1ZS5cbiAgKTt0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gZmFsc2U7XG4gIGlmICh0aGlzLnBlbmRpbmdfY2xvc2UpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cbn07XG5cblpsaWIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAod2luZG93Qml0cywgbGV2ZWwsIG1lbUxldmVsLCBzdHJhdGVneSwgZGljdGlvbmFyeSkge1xuICBhc3NlcnQoYXJndW1lbnRzLmxlbmd0aCA9PT0gNCB8fCBhcmd1bWVudHMubGVuZ3RoID09PSA1LCAnaW5pdCh3aW5kb3dCaXRzLCBsZXZlbCwgbWVtTGV2ZWwsIHN0cmF0ZWd5LCBbZGljdGlvbmFyeV0pJyk7XG5cbiAgYXNzZXJ0KHdpbmRvd0JpdHMgPj0gOCAmJiB3aW5kb3dCaXRzIDw9IDE1LCAnaW52YWxpZCB3aW5kb3dCaXRzJyk7XG4gIGFzc2VydChsZXZlbCA+PSAtMSAmJiBsZXZlbCA8PSA5LCAnaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCcpO1xuXG4gIGFzc2VydChtZW1MZXZlbCA+PSAxICYmIG1lbUxldmVsIDw9IDksICdpbnZhbGlkIG1lbWxldmVsJyk7XG5cbiAgYXNzZXJ0KHN0cmF0ZWd5ID09PSBleHBvcnRzLlpfRklMVEVSRUQgfHwgc3RyYXRlZ3kgPT09IGV4cG9ydHMuWl9IVUZGTUFOX09OTFkgfHwgc3RyYXRlZ3kgPT09IGV4cG9ydHMuWl9STEUgfHwgc3RyYXRlZ3kgPT09IGV4cG9ydHMuWl9GSVhFRCB8fCBzdHJhdGVneSA9PT0gZXhwb3J0cy5aX0RFRkFVTFRfU1RSQVRFR1ksICdpbnZhbGlkIHN0cmF0ZWd5Jyk7XG5cbiAgdGhpcy5faW5pdChsZXZlbCwgd2luZG93Qml0cywgbWVtTGV2ZWwsIHN0cmF0ZWd5LCBkaWN0aW9uYXJ5KTtcbiAgdGhpcy5fc2V0RGljdGlvbmFyeSgpO1xufTtcblxuWmxpYi5wcm90b3R5cGUucGFyYW1zID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ2RlZmxhdGVQYXJhbXMgTm90IHN1cHBvcnRlZCcpO1xufTtcblxuWmxpYi5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX3Jlc2V0KCk7XG4gIHRoaXMuX3NldERpY3Rpb25hcnkoKTtcbn07XG5cblpsaWIucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gKGxldmVsLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3ksIGRpY3Rpb25hcnkpIHtcbiAgdGhpcy5sZXZlbCA9IGxldmVsO1xuICB0aGlzLndpbmRvd0JpdHMgPSB3aW5kb3dCaXRzO1xuICB0aGlzLm1lbUxldmVsID0gbWVtTGV2ZWw7XG4gIHRoaXMuc3RyYXRlZ3kgPSBzdHJhdGVneTtcblxuICB0aGlzLmZsdXNoID0gZXhwb3J0cy5aX05PX0ZMVVNIO1xuXG4gIHRoaXMuZXJyID0gZXhwb3J0cy5aX09LO1xuXG4gIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1pJUCB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1VOWklQKSB7XG4gICAgdGhpcy53aW5kb3dCaXRzICs9IDE2O1xuICB9XG5cbiAgaWYgKHRoaXMubW9kZSA9PT0gZXhwb3J0cy5VTlpJUCkge1xuICAgIHRoaXMud2luZG93Qml0cyArPSAzMjtcbiAgfVxuXG4gIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuREVGTEFURVJBVyB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuSU5GTEFURVJBVykge1xuICAgIHRoaXMud2luZG93Qml0cyA9IC0xICogdGhpcy53aW5kb3dCaXRzO1xuICB9XG5cbiAgdGhpcy5zdHJtID0gbmV3IFpzdHJlYW0oKTtcblxuICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFOlxuICAgIGNhc2UgZXhwb3J0cy5HWklQOlxuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFUkFXOlxuICAgICAgdGhpcy5lcnIgPSB6bGliX2RlZmxhdGUuZGVmbGF0ZUluaXQyKHRoaXMuc3RybSwgdGhpcy5sZXZlbCwgZXhwb3J0cy5aX0RFRkxBVEVELCB0aGlzLndpbmRvd0JpdHMsIHRoaXMubWVtTGV2ZWwsIHRoaXMuc3RyYXRlZ3kpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBleHBvcnRzLklORkxBVEU6XG4gICAgY2FzZSBleHBvcnRzLkdVTlpJUDpcbiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURVJBVzpcbiAgICBjYXNlIGV4cG9ydHMuVU5aSVA6XG4gICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlSW5pdDIodGhpcy5zdHJtLCB0aGlzLndpbmRvd0JpdHMpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBtb2RlICcgKyB0aGlzLm1vZGUpO1xuICB9XG5cbiAgaWYgKHRoaXMuZXJyICE9PSBleHBvcnRzLlpfT0spIHtcbiAgICB0aGlzLl9lcnJvcignSW5pdCBlcnJvcicpO1xuICB9XG5cbiAgdGhpcy5kaWN0aW9uYXJ5ID0gZGljdGlvbmFyeTtcblxuICB0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gZmFsc2U7XG4gIHRoaXMuaW5pdF9kb25lID0gdHJ1ZTtcbn07XG5cblpsaWIucHJvdG90eXBlLl9zZXREaWN0aW9uYXJ5ID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5kaWN0aW9uYXJ5ID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLmVyciA9IGV4cG9ydHMuWl9PSztcblxuICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFOlxuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFUkFXOlxuICAgICAgdGhpcy5lcnIgPSB6bGliX2RlZmxhdGUuZGVmbGF0ZVNldERpY3Rpb25hcnkodGhpcy5zdHJtLCB0aGlzLmRpY3Rpb25hcnkpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKHRoaXMuZXJyICE9PSBleHBvcnRzLlpfT0spIHtcbiAgICB0aGlzLl9lcnJvcignRmFpbGVkIHRvIHNldCBkaWN0aW9uYXJ5Jyk7XG4gIH1cbn07XG5cblpsaWIucHJvdG90eXBlLl9yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5lcnIgPSBleHBvcnRzLlpfT0s7XG5cbiAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICBjYXNlIGV4cG9ydHMuREVGTEFURTpcbiAgICBjYXNlIGV4cG9ydHMuREVGTEFURVJBVzpcbiAgICBjYXNlIGV4cG9ydHMuR1pJUDpcbiAgICAgIHRoaXMuZXJyID0gemxpYl9kZWZsYXRlLmRlZmxhdGVSZXNldCh0aGlzLnN0cm0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBleHBvcnRzLklORkxBVEU6XG4gICAgY2FzZSBleHBvcnRzLklORkxBVEVSQVc6XG4gICAgY2FzZSBleHBvcnRzLkdVTlpJUDpcbiAgICAgIHRoaXMuZXJyID0gemxpYl9pbmZsYXRlLmluZmxhdGVSZXNldCh0aGlzLnN0cm0pO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKHRoaXMuZXJyICE9PSBleHBvcnRzLlpfT0spIHtcbiAgICB0aGlzLl9lcnJvcignRmFpbGVkIHRvIHJlc2V0IHN0cmVhbScpO1xuICB9XG59O1xuXG5leHBvcnRzLlpsaWIgPSBabGliOyIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCdzdHJlYW0nKS5UcmFuc2Zvcm07XG52YXIgYmluZGluZyA9IHJlcXVpcmUoJy4vYmluZGluZycpO1xudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jykub2s7XG52YXIga01heExlbmd0aCA9IHJlcXVpcmUoJ2J1ZmZlcicpLmtNYXhMZW5ndGg7XG52YXIga1JhbmdlRXJyb3JNZXNzYWdlID0gJ0Nhbm5vdCBjcmVhdGUgZmluYWwgQnVmZmVyLiBJdCB3b3VsZCBiZSBsYXJnZXIgJyArICd0aGFuIDB4JyArIGtNYXhMZW5ndGgudG9TdHJpbmcoMTYpICsgJyBieXRlcyc7XG5cbi8vIHpsaWIgZG9lc24ndCBwcm92aWRlIHRoZXNlLCBzbyBrbHVkZ2UgdGhlbSBpbiBmb2xsb3dpbmcgdGhlIHNhbWVcbi8vIGNvbnN0IG5hbWluZyBzY2hlbWUgemxpYiB1c2VzLlxuYmluZGluZy5aX01JTl9XSU5ET1dCSVRTID0gODtcbmJpbmRpbmcuWl9NQVhfV0lORE9XQklUUyA9IDE1O1xuYmluZGluZy5aX0RFRkFVTFRfV0lORE9XQklUUyA9IDE1O1xuXG4vLyBmZXdlciB0aGFuIDY0IGJ5dGVzIHBlciBjaHVuayBpcyBzdHVwaWQuXG4vLyB0ZWNobmljYWxseSBpdCBjb3VsZCB3b3JrIHdpdGggYXMgZmV3IGFzIDgsIGJ1dCBldmVuIDY0IGJ5dGVzXG4vLyBpcyBhYnN1cmRseSBsb3cuICBVc3VhbGx5IGEgTUIgb3IgbW9yZSBpcyBiZXN0LlxuYmluZGluZy5aX01JTl9DSFVOSyA9IDY0O1xuYmluZGluZy5aX01BWF9DSFVOSyA9IEluZmluaXR5O1xuYmluZGluZy5aX0RFRkFVTFRfQ0hVTksgPSAxNiAqIDEwMjQ7XG5cbmJpbmRpbmcuWl9NSU5fTUVNTEVWRUwgPSAxO1xuYmluZGluZy5aX01BWF9NRU1MRVZFTCA9IDk7XG5iaW5kaW5nLlpfREVGQVVMVF9NRU1MRVZFTCA9IDg7XG5cbmJpbmRpbmcuWl9NSU5fTEVWRUwgPSAtMTtcbmJpbmRpbmcuWl9NQVhfTEVWRUwgPSA5O1xuYmluZGluZy5aX0RFRkFVTFRfTEVWRUwgPSBiaW5kaW5nLlpfREVGQVVMVF9DT01QUkVTU0lPTjtcblxuLy8gZXhwb3NlIGFsbCB0aGUgemxpYiBjb25zdGFudHNcbnZhciBia2V5cyA9IE9iamVjdC5rZXlzKGJpbmRpbmcpO1xuZm9yICh2YXIgYmsgPSAwOyBiayA8IGJrZXlzLmxlbmd0aDsgYmsrKykge1xuICB2YXIgYmtleSA9IGJrZXlzW2JrXTtcbiAgaWYgKGJrZXkubWF0Y2goL15aLykpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgYmtleSwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IGJpbmRpbmdbYmtleV0sIHdyaXRhYmxlOiBmYWxzZVxuICAgIH0pO1xuICB9XG59XG5cbi8vIHRyYW5zbGF0aW9uIHRhYmxlIGZvciByZXR1cm4gY29kZXMuXG52YXIgY29kZXMgPSB7XG4gIFpfT0s6IGJpbmRpbmcuWl9PSyxcbiAgWl9TVFJFQU1fRU5EOiBiaW5kaW5nLlpfU1RSRUFNX0VORCxcbiAgWl9ORUVEX0RJQ1Q6IGJpbmRpbmcuWl9ORUVEX0RJQ1QsXG4gIFpfRVJSTk86IGJpbmRpbmcuWl9FUlJOTyxcbiAgWl9TVFJFQU1fRVJST1I6IGJpbmRpbmcuWl9TVFJFQU1fRVJST1IsXG4gIFpfREFUQV9FUlJPUjogYmluZGluZy5aX0RBVEFfRVJST1IsXG4gIFpfTUVNX0VSUk9SOiBiaW5kaW5nLlpfTUVNX0VSUk9SLFxuICBaX0JVRl9FUlJPUjogYmluZGluZy5aX0JVRl9FUlJPUixcbiAgWl9WRVJTSU9OX0VSUk9SOiBiaW5kaW5nLlpfVkVSU0lPTl9FUlJPUlxufTtcblxudmFyIGNrZXlzID0gT2JqZWN0LmtleXMoY29kZXMpO1xuZm9yICh2YXIgY2sgPSAwOyBjayA8IGNrZXlzLmxlbmd0aDsgY2srKykge1xuICB2YXIgY2tleSA9IGNrZXlzW2NrXTtcbiAgY29kZXNbY29kZXNbY2tleV1dID0gY2tleTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdjb2RlcycsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IE9iamVjdC5mcmVlemUoY29kZXMpLCB3cml0YWJsZTogZmFsc2Vcbn0pO1xuXG5leHBvcnRzLkRlZmxhdGUgPSBEZWZsYXRlO1xuZXhwb3J0cy5JbmZsYXRlID0gSW5mbGF0ZTtcbmV4cG9ydHMuR3ppcCA9IEd6aXA7XG5leHBvcnRzLkd1bnppcCA9IEd1bnppcDtcbmV4cG9ydHMuRGVmbGF0ZVJhdyA9IERlZmxhdGVSYXc7XG5leHBvcnRzLkluZmxhdGVSYXcgPSBJbmZsYXRlUmF3O1xuZXhwb3J0cy5VbnppcCA9IFVuemlwO1xuXG5leHBvcnRzLmNyZWF0ZURlZmxhdGUgPSBmdW5jdGlvbiAobykge1xuICByZXR1cm4gbmV3IERlZmxhdGUobyk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZUluZmxhdGUgPSBmdW5jdGlvbiAobykge1xuICByZXR1cm4gbmV3IEluZmxhdGUobyk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZURlZmxhdGVSYXcgPSBmdW5jdGlvbiAobykge1xuICByZXR1cm4gbmV3IERlZmxhdGVSYXcobyk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZUluZmxhdGVSYXcgPSBmdW5jdGlvbiAobykge1xuICByZXR1cm4gbmV3IEluZmxhdGVSYXcobyk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZUd6aXAgPSBmdW5jdGlvbiAobykge1xuICByZXR1cm4gbmV3IEd6aXAobyk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZUd1bnppcCA9IGZ1bmN0aW9uIChvKSB7XG4gIHJldHVybiBuZXcgR3VuemlwKG8pO1xufTtcblxuZXhwb3J0cy5jcmVhdGVVbnppcCA9IGZ1bmN0aW9uIChvKSB7XG4gIHJldHVybiBuZXcgVW56aXAobyk7XG59O1xuXG4vLyBDb252ZW5pZW5jZSBtZXRob2RzLlxuLy8gY29tcHJlc3MvZGVjb21wcmVzcyBhIHN0cmluZyBvciBidWZmZXIgaW4gb25lIHN0ZXAuXG5leHBvcnRzLmRlZmxhdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG4gIHJldHVybiB6bGliQnVmZmVyKG5ldyBEZWZsYXRlKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTtcbn07XG5cbmV4cG9ydHMuZGVmbGF0ZVN5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgRGVmbGF0ZShvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmV4cG9ydHMuZ3ppcCA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gb3B0cztcbiAgICBvcHRzID0ge307XG4gIH1cbiAgcmV0dXJuIHpsaWJCdWZmZXIobmV3IEd6aXAob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0cy5nemlwU3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHtcbiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBHemlwKG9wdHMpLCBidWZmZXIpO1xufTtcblxuZXhwb3J0cy5kZWZsYXRlUmF3ID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgRGVmbGF0ZVJhdyhvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7XG59O1xuXG5leHBvcnRzLmRlZmxhdGVSYXdTeW5jID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cykge1xuICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IERlZmxhdGVSYXcob3B0cyksIGJ1ZmZlcik7XG59O1xuXG5leHBvcnRzLnVuemlwID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgVW56aXAob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0cy51bnppcFN5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgVW56aXAob3B0cyksIGJ1ZmZlcik7XG59O1xuXG5leHBvcnRzLmluZmxhdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG4gIHJldHVybiB6bGliQnVmZmVyKG5ldyBJbmZsYXRlKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTtcbn07XG5cbmV4cG9ydHMuaW5mbGF0ZVN5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgSW5mbGF0ZShvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmV4cG9ydHMuZ3VuemlwID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgR3VuemlwKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTtcbn07XG5cbmV4cG9ydHMuZ3VuemlwU3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHtcbiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBHdW56aXAob3B0cyksIGJ1ZmZlcik7XG59O1xuXG5leHBvcnRzLmluZmxhdGVSYXcgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG4gIHJldHVybiB6bGliQnVmZmVyKG5ldyBJbmZsYXRlUmF3KG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTtcbn07XG5cbmV4cG9ydHMuaW5mbGF0ZVJhd1N5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgSW5mbGF0ZVJhdyhvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmZ1bmN0aW9uIHpsaWJCdWZmZXIoZW5naW5lLCBidWZmZXIsIGNhbGxiYWNrKSB7XG4gIHZhciBidWZmZXJzID0gW107XG4gIHZhciBucmVhZCA9IDA7XG5cbiAgZW5naW5lLm9uKCdlcnJvcicsIG9uRXJyb3IpO1xuICBlbmdpbmUub24oJ2VuZCcsIG9uRW5kKTtcblxuICBlbmdpbmUuZW5kKGJ1ZmZlcik7XG4gIGZsb3coKTtcblxuICBmdW5jdGlvbiBmbG93KCkge1xuICAgIHZhciBjaHVuaztcbiAgICB3aGlsZSAobnVsbCAhPT0gKGNodW5rID0gZW5naW5lLnJlYWQoKSkpIHtcbiAgICAgIGJ1ZmZlcnMucHVzaChjaHVuayk7XG4gICAgICBucmVhZCArPSBjaHVuay5sZW5ndGg7XG4gICAgfVxuICAgIGVuZ2luZS5vbmNlKCdyZWFkYWJsZScsIGZsb3cpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25FcnJvcihlcnIpIHtcbiAgICBlbmdpbmUucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uRW5kKTtcbiAgICBlbmdpbmUucmVtb3ZlTGlzdGVuZXIoJ3JlYWRhYmxlJywgZmxvdyk7XG4gICAgY2FsbGJhY2soZXJyKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRW5kKCkge1xuICAgIHZhciBidWY7XG4gICAgdmFyIGVyciA9IG51bGw7XG5cbiAgICBpZiAobnJlYWQgPj0ga01heExlbmd0aCkge1xuICAgICAgZXJyID0gbmV3IFJhbmdlRXJyb3Ioa1JhbmdlRXJyb3JNZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmID0gQnVmZmVyLmNvbmNhdChidWZmZXJzLCBucmVhZCk7XG4gICAgfVxuXG4gICAgYnVmZmVycyA9IFtdO1xuICAgIGVuZ2luZS5jbG9zZSgpO1xuICAgIGNhbGxiYWNrKGVyciwgYnVmKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB6bGliQnVmZmVyU3luYyhlbmdpbmUsIGJ1ZmZlcikge1xuICBpZiAodHlwZW9mIGJ1ZmZlciA9PT0gJ3N0cmluZycpIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJ1ZmZlcik7XG5cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignTm90IGEgc3RyaW5nIG9yIGJ1ZmZlcicpO1xuXG4gIHZhciBmbHVzaEZsYWcgPSBlbmdpbmUuX2ZpbmlzaEZsdXNoRmxhZztcblxuICByZXR1cm4gZW5naW5lLl9wcm9jZXNzQ2h1bmsoYnVmZmVyLCBmbHVzaEZsYWcpO1xufVxuXG4vLyBnZW5lcmljIHpsaWJcbi8vIG1pbmltYWwgMi1ieXRlIGhlYWRlclxuZnVuY3Rpb24gRGVmbGF0ZShvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEZWZsYXRlKSkgcmV0dXJuIG5ldyBEZWZsYXRlKG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5ERUZMQVRFKTtcbn1cblxuZnVuY3Rpb24gSW5mbGF0ZShvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBJbmZsYXRlKSkgcmV0dXJuIG5ldyBJbmZsYXRlKG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5JTkZMQVRFKTtcbn1cblxuLy8gZ3ppcCAtIGJpZ2dlciBoZWFkZXIsIHNhbWUgZGVmbGF0ZSBjb21wcmVzc2lvblxuZnVuY3Rpb24gR3ppcChvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHemlwKSkgcmV0dXJuIG5ldyBHemlwKG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5HWklQKTtcbn1cblxuZnVuY3Rpb24gR3VuemlwKG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEd1bnppcCkpIHJldHVybiBuZXcgR3VuemlwKG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5HVU5aSVApO1xufVxuXG4vLyByYXcgLSBubyBoZWFkZXJcbmZ1bmN0aW9uIERlZmxhdGVSYXcob3B0cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRGVmbGF0ZVJhdykpIHJldHVybiBuZXcgRGVmbGF0ZVJhdyhvcHRzKTtcbiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuREVGTEFURVJBVyk7XG59XG5cbmZ1bmN0aW9uIEluZmxhdGVSYXcob3B0cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgSW5mbGF0ZVJhdykpIHJldHVybiBuZXcgSW5mbGF0ZVJhdyhvcHRzKTtcbiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuSU5GTEFURVJBVyk7XG59XG5cbi8vIGF1dG8tZGV0ZWN0IGhlYWRlci5cbmZ1bmN0aW9uIFVuemlwKG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFVuemlwKSkgcmV0dXJuIG5ldyBVbnppcChvcHRzKTtcbiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuVU5aSVApO1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkRmx1c2hGbGFnKGZsYWcpIHtcbiAgcmV0dXJuIGZsYWcgPT09IGJpbmRpbmcuWl9OT19GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfUEFSVElBTF9GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfU1lOQ19GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfRlVMTF9GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfRklOSVNIIHx8IGZsYWcgPT09IGJpbmRpbmcuWl9CTE9DSztcbn1cblxuLy8gdGhlIFpsaWIgY2xhc3MgdGhleSBhbGwgaW5oZXJpdCBmcm9tXG4vLyBUaGlzIHRoaW5nIG1hbmFnZXMgdGhlIHF1ZXVlIG9mIHJlcXVlc3RzLCBhbmQgcmV0dXJuc1xuLy8gdHJ1ZSBvciBmYWxzZSBpZiB0aGVyZSBpcyBhbnl0aGluZyBpbiB0aGUgcXVldWUgd2hlblxuLy8geW91IGNhbGwgdGhlIC53cml0ZSgpIG1ldGhvZC5cblxuZnVuY3Rpb24gWmxpYihvcHRzLCBtb2RlKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdGhpcy5fb3B0cyA9IG9wdHMgPSBvcHRzIHx8IHt9O1xuICB0aGlzLl9jaHVua1NpemUgPSBvcHRzLmNodW5rU2l6ZSB8fCBleHBvcnRzLlpfREVGQVVMVF9DSFVOSztcblxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRzKTtcblxuICBpZiAob3B0cy5mbHVzaCAmJiAhaXNWYWxpZEZsdXNoRmxhZyhvcHRzLmZsdXNoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmbHVzaCBmbGFnOiAnICsgb3B0cy5mbHVzaCk7XG4gIH1cbiAgaWYgKG9wdHMuZmluaXNoRmx1c2ggJiYgIWlzVmFsaWRGbHVzaEZsYWcob3B0cy5maW5pc2hGbHVzaCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZmx1c2ggZmxhZzogJyArIG9wdHMuZmluaXNoRmx1c2gpO1xuICB9XG5cbiAgdGhpcy5fZmx1c2hGbGFnID0gb3B0cy5mbHVzaCB8fCBiaW5kaW5nLlpfTk9fRkxVU0g7XG4gIHRoaXMuX2ZpbmlzaEZsdXNoRmxhZyA9IHR5cGVvZiBvcHRzLmZpbmlzaEZsdXNoICE9PSAndW5kZWZpbmVkJyA/IG9wdHMuZmluaXNoRmx1c2ggOiBiaW5kaW5nLlpfRklOSVNIO1xuXG4gIGlmIChvcHRzLmNodW5rU2l6ZSkge1xuICAgIGlmIChvcHRzLmNodW5rU2l6ZSA8IGV4cG9ydHMuWl9NSU5fQ0hVTksgfHwgb3B0cy5jaHVua1NpemUgPiBleHBvcnRzLlpfTUFYX0NIVU5LKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY2h1bmsgc2l6ZTogJyArIG9wdHMuY2h1bmtTaXplKTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy53aW5kb3dCaXRzKSB7XG4gICAgaWYgKG9wdHMud2luZG93Qml0cyA8IGV4cG9ydHMuWl9NSU5fV0lORE9XQklUUyB8fCBvcHRzLndpbmRvd0JpdHMgPiBleHBvcnRzLlpfTUFYX1dJTkRPV0JJVFMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB3aW5kb3dCaXRzOiAnICsgb3B0cy53aW5kb3dCaXRzKTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy5sZXZlbCkge1xuICAgIGlmIChvcHRzLmxldmVsIDwgZXhwb3J0cy5aX01JTl9MRVZFTCB8fCBvcHRzLmxldmVsID4gZXhwb3J0cy5aX01BWF9MRVZFTCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsOiAnICsgb3B0cy5sZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdHMubWVtTGV2ZWwpIHtcbiAgICBpZiAob3B0cy5tZW1MZXZlbCA8IGV4cG9ydHMuWl9NSU5fTUVNTEVWRUwgfHwgb3B0cy5tZW1MZXZlbCA+IGV4cG9ydHMuWl9NQVhfTUVNTEVWRUwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtZW1MZXZlbDogJyArIG9wdHMubWVtTGV2ZWwpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLnN0cmF0ZWd5KSB7XG4gICAgaWYgKG9wdHMuc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0ZJTFRFUkVEICYmIG9wdHMuc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0hVRkZNQU5fT05MWSAmJiBvcHRzLnN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9STEUgJiYgb3B0cy5zdHJhdGVneSAhPSBleHBvcnRzLlpfRklYRUQgJiYgb3B0cy5zdHJhdGVneSAhPSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0cmF0ZWd5OiAnICsgb3B0cy5zdHJhdGVneSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdHMuZGljdGlvbmFyeSkge1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKG9wdHMuZGljdGlvbmFyeSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkaWN0aW9uYXJ5OiBpdCBzaG91bGQgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtcbiAgICB9XG4gIH1cblxuICB0aGlzLl9oYW5kbGUgPSBuZXcgYmluZGluZy5abGliKG1vZGUpO1xuXG4gIHZhciBzZWxmID0gdGhpcztcbiAgdGhpcy5faGFkRXJyb3IgPSBmYWxzZTtcbiAgdGhpcy5faGFuZGxlLm9uZXJyb3IgPSBmdW5jdGlvbiAobWVzc2FnZSwgZXJybm8pIHtcbiAgICAvLyB0aGVyZSBpcyBubyB3YXkgdG8gY2xlYW5seSByZWNvdmVyLlxuICAgIC8vIGNvbnRpbnVpbmcgb25seSBvYnNjdXJlcyBwcm9ibGVtcy5cbiAgICBfY2xvc2Uoc2VsZik7XG4gICAgc2VsZi5faGFkRXJyb3IgPSB0cnVlO1xuXG4gICAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIGVycm9yLmVycm5vID0gZXJybm87XG4gICAgZXJyb3IuY29kZSA9IGV4cG9ydHMuY29kZXNbZXJybm9dO1xuICAgIHNlbGYuZW1pdCgnZXJyb3InLCBlcnJvcik7XG4gIH07XG5cbiAgdmFyIGxldmVsID0gZXhwb3J0cy5aX0RFRkFVTFRfQ09NUFJFU1NJT047XG4gIGlmICh0eXBlb2Ygb3B0cy5sZXZlbCA9PT0gJ251bWJlcicpIGxldmVsID0gb3B0cy5sZXZlbDtcblxuICB2YXIgc3RyYXRlZ3kgPSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWTtcbiAgaWYgKHR5cGVvZiBvcHRzLnN0cmF0ZWd5ID09PSAnbnVtYmVyJykgc3RyYXRlZ3kgPSBvcHRzLnN0cmF0ZWd5O1xuXG4gIHRoaXMuX2hhbmRsZS5pbml0KG9wdHMud2luZG93Qml0cyB8fCBleHBvcnRzLlpfREVGQVVMVF9XSU5ET1dCSVRTLCBsZXZlbCwgb3B0cy5tZW1MZXZlbCB8fCBleHBvcnRzLlpfREVGQVVMVF9NRU1MRVZFTCwgc3RyYXRlZ3ksIG9wdHMuZGljdGlvbmFyeSk7XG5cbiAgdGhpcy5fYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKHRoaXMuX2NodW5rU2l6ZSk7XG4gIHRoaXMuX29mZnNldCA9IDA7XG4gIHRoaXMuX2xldmVsID0gbGV2ZWw7XG4gIHRoaXMuX3N0cmF0ZWd5ID0gc3RyYXRlZ3k7XG5cbiAgdGhpcy5vbmNlKCdlbmQnLCB0aGlzLmNsb3NlKTtcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ19jbG9zZWQnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gIV90aGlzLl9oYW5kbGU7XG4gICAgfSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxudXRpbC5pbmhlcml0cyhabGliLCBUcmFuc2Zvcm0pO1xuXG5abGliLnByb3RvdHlwZS5wYXJhbXMgPSBmdW5jdGlvbiAobGV2ZWwsIHN0cmF0ZWd5LCBjYWxsYmFjaykge1xuICBpZiAobGV2ZWwgPCBleHBvcnRzLlpfTUlOX0xFVkVMIHx8IGxldmVsID4gZXhwb3J0cy5aX01BWF9MRVZFTCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsOiAnICsgbGV2ZWwpO1xuICB9XG4gIGlmIChzdHJhdGVneSAhPSBleHBvcnRzLlpfRklMVEVSRUQgJiYgc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0hVRkZNQU5fT05MWSAmJiBzdHJhdGVneSAhPSBleHBvcnRzLlpfUkxFICYmIHN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9GSVhFRCAmJiBzdHJhdGVneSAhPSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgc3RyYXRlZ3k6ICcgKyBzdHJhdGVneSk7XG4gIH1cblxuICBpZiAodGhpcy5fbGV2ZWwgIT09IGxldmVsIHx8IHRoaXMuX3N0cmF0ZWd5ICE9PSBzdHJhdGVneSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB0aGlzLmZsdXNoKGJpbmRpbmcuWl9TWU5DX0ZMVVNILCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQoc2VsZi5faGFuZGxlLCAnemxpYiBiaW5kaW5nIGNsb3NlZCcpO1xuICAgICAgc2VsZi5faGFuZGxlLnBhcmFtcyhsZXZlbCwgc3RyYXRlZ3kpO1xuICAgICAgaWYgKCFzZWxmLl9oYWRFcnJvcikge1xuICAgICAgICBzZWxmLl9sZXZlbCA9IGxldmVsO1xuICAgICAgICBzZWxmLl9zdHJhdGVneSA9IHN0cmF0ZWd5O1xuICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhjYWxsYmFjayk7XG4gIH1cbn07XG5cblpsaWIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICBhc3NlcnQodGhpcy5faGFuZGxlLCAnemxpYiBiaW5kaW5nIGNsb3NlZCcpO1xuICByZXR1cm4gdGhpcy5faGFuZGxlLnJlc2V0KCk7XG59O1xuXG4vLyBUaGlzIGlzIHRoZSBfZmx1c2ggZnVuY3Rpb24gY2FsbGVkIGJ5IHRoZSB0cmFuc2Zvcm0gY2xhc3MsXG4vLyBpbnRlcm5hbGx5LCB3aGVuIHRoZSBsYXN0IGNodW5rIGhhcyBiZWVuIHdyaXR0ZW4uXG5abGliLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdGhpcy5fdHJhbnNmb3JtKEJ1ZmZlci5hbGxvYygwKSwgJycsIGNhbGxiYWNrKTtcbn07XG5cblpsaWIucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24gKGtpbmQsIGNhbGxiYWNrKSB7XG4gIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gIHZhciB3cyA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHR5cGVvZiBraW5kID09PSAnZnVuY3Rpb24nIHx8IGtpbmQgPT09IHVuZGVmaW5lZCAmJiAhY2FsbGJhY2spIHtcbiAgICBjYWxsYmFjayA9IGtpbmQ7XG4gICAga2luZCA9IGJpbmRpbmcuWl9GVUxMX0ZMVVNIO1xuICB9XG5cbiAgaWYgKHdzLmVuZGVkKSB7XG4gICAgaWYgKGNhbGxiYWNrKSBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTtcbiAgfSBlbHNlIGlmICh3cy5lbmRpbmcpIHtcbiAgICBpZiAoY2FsbGJhY2spIHRoaXMub25jZSgnZW5kJywgY2FsbGJhY2spO1xuICB9IGVsc2UgaWYgKHdzLm5lZWREcmFpbikge1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdGhpcy5vbmNlKCdkcmFpbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzMi5mbHVzaChraW5kLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fZmx1c2hGbGFnID0ga2luZDtcbiAgICB0aGlzLndyaXRlKEJ1ZmZlci5hbGxvYygwKSwgJycsIGNhbGxiYWNrKTtcbiAgfVxufTtcblxuWmxpYi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgX2Nsb3NlKHRoaXMsIGNhbGxiYWNrKTtcbiAgcHJvY2Vzcy5uZXh0VGljayhlbWl0Q2xvc2VOVCwgdGhpcyk7XG59O1xuXG5mdW5jdGlvbiBfY2xvc2UoZW5naW5lLCBjYWxsYmFjaykge1xuICBpZiAoY2FsbGJhY2spIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2spO1xuXG4gIC8vIENhbGxlciBtYXkgaW52b2tlIC5jbG9zZSBhZnRlciBhIHpsaWIgZXJyb3IgKHdoaWNoIHdpbGwgbnVsbCBfaGFuZGxlKS5cbiAgaWYgKCFlbmdpbmUuX2hhbmRsZSkgcmV0dXJuO1xuXG4gIGVuZ2luZS5faGFuZGxlLmNsb3NlKCk7XG4gIGVuZ2luZS5faGFuZGxlID0gbnVsbDtcbn1cblxuZnVuY3Rpb24gZW1pdENsb3NlTlQoc2VsZikge1xuICBzZWxmLmVtaXQoJ2Nsb3NlJyk7XG59XG5cblpsaWIucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgZmx1c2hGbGFnO1xuICB2YXIgd3MgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuICB2YXIgZW5kaW5nID0gd3MuZW5kaW5nIHx8IHdzLmVuZGVkO1xuICB2YXIgbGFzdCA9IGVuZGluZyAmJiAoIWNodW5rIHx8IHdzLmxlbmd0aCA9PT0gY2h1bmsubGVuZ3RoKTtcblxuICBpZiAoY2h1bmsgIT09IG51bGwgJiYgIUJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIHJldHVybiBjYihuZXcgRXJyb3IoJ2ludmFsaWQgaW5wdXQnKSk7XG5cbiAgaWYgKCF0aGlzLl9oYW5kbGUpIHJldHVybiBjYihuZXcgRXJyb3IoJ3psaWIgYmluZGluZyBjbG9zZWQnKSk7XG5cbiAgLy8gSWYgaXQncyB0aGUgbGFzdCBjaHVuaywgb3IgYSBmaW5hbCBmbHVzaCwgd2UgdXNlIHRoZSBaX0ZJTklTSCBmbHVzaCBmbGFnXG4gIC8vIChvciB3aGF0ZXZlciBmbGFnIHdhcyBwcm92aWRlZCB1c2luZyBvcHRzLmZpbmlzaEZsdXNoKS5cbiAgLy8gSWYgaXQncyBleHBsaWNpdGx5IGZsdXNoaW5nIGF0IHNvbWUgb3RoZXIgdGltZSwgdGhlbiB3ZSB1c2VcbiAgLy8gWl9GVUxMX0ZMVVNILiBPdGhlcndpc2UsIHVzZSBaX05PX0ZMVVNIIGZvciBtYXhpbXVtIGNvbXByZXNzaW9uXG4gIC8vIGdvb2RuZXNzLlxuICBpZiAobGFzdCkgZmx1c2hGbGFnID0gdGhpcy5fZmluaXNoRmx1c2hGbGFnO2Vsc2Uge1xuICAgIGZsdXNoRmxhZyA9IHRoaXMuX2ZsdXNoRmxhZztcbiAgICAvLyBvbmNlIHdlJ3ZlIGZsdXNoZWQgdGhlIGxhc3Qgb2YgdGhlIHF1ZXVlLCBzdG9wIGZsdXNoaW5nIGFuZFxuICAgIC8vIGdvIGJhY2sgdG8gdGhlIG5vcm1hbCBiZWhhdmlvci5cbiAgICBpZiAoY2h1bmsubGVuZ3RoID49IHdzLmxlbmd0aCkge1xuICAgICAgdGhpcy5fZmx1c2hGbGFnID0gdGhpcy5fb3B0cy5mbHVzaCB8fCBiaW5kaW5nLlpfTk9fRkxVU0g7XG4gICAgfVxuICB9XG5cbiAgdGhpcy5fcHJvY2Vzc0NodW5rKGNodW5rLCBmbHVzaEZsYWcsIGNiKTtcbn07XG5cblpsaWIucHJvdG90eXBlLl9wcm9jZXNzQ2h1bmsgPSBmdW5jdGlvbiAoY2h1bmssIGZsdXNoRmxhZywgY2IpIHtcbiAgdmFyIGF2YWlsSW5CZWZvcmUgPSBjaHVuayAmJiBjaHVuay5sZW5ndGg7XG4gIHZhciBhdmFpbE91dEJlZm9yZSA9IHRoaXMuX2NodW5rU2l6ZSAtIHRoaXMuX29mZnNldDtcbiAgdmFyIGluT2ZmID0gMDtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgdmFyIGFzeW5jID0gdHlwZW9mIGNiID09PSAnZnVuY3Rpb24nO1xuXG4gIGlmICghYXN5bmMpIHtcbiAgICB2YXIgYnVmZmVycyA9IFtdO1xuICAgIHZhciBucmVhZCA9IDA7XG5cbiAgICB2YXIgZXJyb3I7XG4gICAgdGhpcy5vbignZXJyb3InLCBmdW5jdGlvbiAoZXIpIHtcbiAgICAgIGVycm9yID0gZXI7XG4gICAgfSk7XG5cbiAgICBhc3NlcnQodGhpcy5faGFuZGxlLCAnemxpYiBiaW5kaW5nIGNsb3NlZCcpO1xuICAgIGRvIHtcbiAgICAgIHZhciByZXMgPSB0aGlzLl9oYW5kbGUud3JpdGVTeW5jKGZsdXNoRmxhZywgY2h1bmssIC8vIGluXG4gICAgICBpbk9mZiwgLy8gaW5fb2ZmXG4gICAgICBhdmFpbEluQmVmb3JlLCAvLyBpbl9sZW5cbiAgICAgIHRoaXMuX2J1ZmZlciwgLy8gb3V0XG4gICAgICB0aGlzLl9vZmZzZXQsIC8vb3V0X29mZlxuICAgICAgYXZhaWxPdXRCZWZvcmUpOyAvLyBvdXRfbGVuXG4gICAgfSB3aGlsZSAoIXRoaXMuX2hhZEVycm9yICYmIGNhbGxiYWNrKHJlc1swXSwgcmVzWzFdKSk7XG5cbiAgICBpZiAodGhpcy5faGFkRXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGlmIChucmVhZCA+PSBrTWF4TGVuZ3RoKSB7XG4gICAgICBfY2xvc2UodGhpcyk7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihrUmFuZ2VFcnJvck1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHZhciBidWYgPSBCdWZmZXIuY29uY2F0KGJ1ZmZlcnMsIG5yZWFkKTtcbiAgICBfY2xvc2UodGhpcyk7XG5cbiAgICByZXR1cm4gYnVmO1xuICB9XG5cbiAgYXNzZXJ0KHRoaXMuX2hhbmRsZSwgJ3psaWIgYmluZGluZyBjbG9zZWQnKTtcbiAgdmFyIHJlcSA9IHRoaXMuX2hhbmRsZS53cml0ZShmbHVzaEZsYWcsIGNodW5rLCAvLyBpblxuICBpbk9mZiwgLy8gaW5fb2ZmXG4gIGF2YWlsSW5CZWZvcmUsIC8vIGluX2xlblxuICB0aGlzLl9idWZmZXIsIC8vIG91dFxuICB0aGlzLl9vZmZzZXQsIC8vb3V0X29mZlxuICBhdmFpbE91dEJlZm9yZSk7IC8vIG91dF9sZW5cblxuICByZXEuYnVmZmVyID0gY2h1bms7XG4gIHJlcS5jYWxsYmFjayA9IGNhbGxiYWNrO1xuXG4gIGZ1bmN0aW9uIGNhbGxiYWNrKGF2YWlsSW5BZnRlciwgYXZhaWxPdXRBZnRlcikge1xuICAgIC8vIFdoZW4gdGhlIGNhbGxiYWNrIGlzIHVzZWQgaW4gYW4gYXN5bmMgd3JpdGUsIHRoZSBjYWxsYmFjaydzXG4gICAgLy8gY29udGV4dCBpcyB0aGUgYHJlcWAgb2JqZWN0IHRoYXQgd2FzIGNyZWF0ZWQuIFRoZSByZXEgb2JqZWN0XG4gICAgLy8gaXMgPT09IHRoaXMuX2hhbmRsZSwgYW5kIHRoYXQncyB3aHkgaXQncyBpbXBvcnRhbnQgdG8gbnVsbFxuICAgIC8vIG91dCB0aGUgdmFsdWVzIGFmdGVyIHRoZXkgYXJlIGRvbmUgYmVpbmcgdXNlZC4gYHRoaXMuX2hhbmRsZWBcbiAgICAvLyBjYW4gc3RheSBpbiBtZW1vcnkgbG9uZ2VyIHRoYW4gdGhlIGNhbGxiYWNrIGFuZCBidWZmZXIgYXJlIG5lZWRlZC5cbiAgICBpZiAodGhpcykge1xuICAgICAgdGhpcy5idWZmZXIgPSBudWxsO1xuICAgICAgdGhpcy5jYWxsYmFjayA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHNlbGYuX2hhZEVycm9yKSByZXR1cm47XG5cbiAgICB2YXIgaGF2ZSA9IGF2YWlsT3V0QmVmb3JlIC0gYXZhaWxPdXRBZnRlcjtcbiAgICBhc3NlcnQoaGF2ZSA+PSAwLCAnaGF2ZSBzaG91bGQgbm90IGdvIGRvd24nKTtcblxuICAgIGlmIChoYXZlID4gMCkge1xuICAgICAgdmFyIG91dCA9IHNlbGYuX2J1ZmZlci5zbGljZShzZWxmLl9vZmZzZXQsIHNlbGYuX29mZnNldCArIGhhdmUpO1xuICAgICAgc2VsZi5fb2Zmc2V0ICs9IGhhdmU7XG4gICAgICAvLyBzZXJ2ZSBzb21lIG91dHB1dCB0byB0aGUgY29uc3VtZXIuXG4gICAgICBpZiAoYXN5bmMpIHtcbiAgICAgICAgc2VsZi5wdXNoKG91dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBidWZmZXJzLnB1c2gob3V0KTtcbiAgICAgICAgbnJlYWQgKz0gb3V0Lmxlbmd0aDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBleGhhdXN0ZWQgdGhlIG91dHB1dCBidWZmZXIsIG9yIHVzZWQgYWxsIHRoZSBpbnB1dCBjcmVhdGUgYSBuZXcgb25lLlxuICAgIGlmIChhdmFpbE91dEFmdGVyID09PSAwIHx8IHNlbGYuX29mZnNldCA+PSBzZWxmLl9jaHVua1NpemUpIHtcbiAgICAgIGF2YWlsT3V0QmVmb3JlID0gc2VsZi5fY2h1bmtTaXplO1xuICAgICAgc2VsZi5fb2Zmc2V0ID0gMDtcbiAgICAgIHNlbGYuX2J1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShzZWxmLl9jaHVua1NpemUpO1xuICAgIH1cblxuICAgIGlmIChhdmFpbE91dEFmdGVyID09PSAwKSB7XG4gICAgICAvLyBOb3QgYWN0dWFsbHkgZG9uZS4gIE5lZWQgdG8gcmVwcm9jZXNzLlxuICAgICAgLy8gQWxzbywgdXBkYXRlIHRoZSBhdmFpbEluQmVmb3JlIHRvIHRoZSBhdmFpbEluQWZ0ZXIgdmFsdWUsXG4gICAgICAvLyBzbyB0aGF0IGlmIHdlIGhhdmUgdG8gaGl0IGl0IGEgdGhpcmQgKGZvdXJ0aCwgZXRjLikgdGltZSxcbiAgICAgIC8vIGl0J2xsIGhhdmUgdGhlIGNvcnJlY3QgYnl0ZSBjb3VudHMuXG4gICAgICBpbk9mZiArPSBhdmFpbEluQmVmb3JlIC0gYXZhaWxJbkFmdGVyO1xuICAgICAgYXZhaWxJbkJlZm9yZSA9IGF2YWlsSW5BZnRlcjtcblxuICAgICAgaWYgKCFhc3luYykgcmV0dXJuIHRydWU7XG5cbiAgICAgIHZhciBuZXdSZXEgPSBzZWxmLl9oYW5kbGUud3JpdGUoZmx1c2hGbGFnLCBjaHVuaywgaW5PZmYsIGF2YWlsSW5CZWZvcmUsIHNlbGYuX2J1ZmZlciwgc2VsZi5fb2Zmc2V0LCBzZWxmLl9jaHVua1NpemUpO1xuICAgICAgbmV3UmVxLmNhbGxiYWNrID0gY2FsbGJhY2s7IC8vIHRoaXMgc2FtZSBmdW5jdGlvblxuICAgICAgbmV3UmVxLmJ1ZmZlciA9IGNodW5rO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghYXN5bmMpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIGZpbmlzaGVkIHdpdGggdGhlIGNodW5rLlxuICAgIGNiKCk7XG4gIH1cbn07XG5cbnV0aWwuaW5oZXJpdHMoRGVmbGF0ZSwgWmxpYik7XG51dGlsLmluaGVyaXRzKEluZmxhdGUsIFpsaWIpO1xudXRpbC5pbmhlcml0cyhHemlwLCBabGliKTtcbnV0aWwuaW5oZXJpdHMoR3VuemlwLCBabGliKTtcbnV0aWwuaW5oZXJpdHMoRGVmbGF0ZVJhdywgWmxpYik7XG51dGlsLmluaGVyaXRzKEluZmxhdGVSYXcsIFpsaWIpO1xudXRpbC5pbmhlcml0cyhVbnppcCwgWmxpYik7IiwiJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBUWVBFRF9PSyA9ICAodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnKSAmJlxuICAgICAgICAgICAgICAgICh0eXBlb2YgVWludDE2QXJyYXkgIT09ICd1bmRlZmluZWQnKSAmJlxuICAgICAgICAgICAgICAgICh0eXBlb2YgSW50MzJBcnJheSAhPT0gJ3VuZGVmaW5lZCcpO1xuXG5mdW5jdGlvbiBfaGFzKG9iaiwga2V5KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpO1xufVxuXG5leHBvcnRzLmFzc2lnbiA9IGZ1bmN0aW9uIChvYmogLypmcm9tMSwgZnJvbTIsIGZyb20zLCAuLi4qLykge1xuICB2YXIgc291cmNlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gIHdoaWxlIChzb3VyY2VzLmxlbmd0aCkge1xuICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzLnNoaWZ0KCk7XG4gICAgaWYgKCFzb3VyY2UpIHsgY29udGludWU7IH1cblxuICAgIGlmICh0eXBlb2Ygc291cmNlICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzb3VyY2UgKyAnbXVzdCBiZSBub24tb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgcCBpbiBzb3VyY2UpIHtcbiAgICAgIGlmIChfaGFzKHNvdXJjZSwgcCkpIHtcbiAgICAgICAgb2JqW3BdID0gc291cmNlW3BdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmo7XG59O1xuXG5cbi8vIHJlZHVjZSBidWZmZXIgc2l6ZSwgYXZvaWRpbmcgbWVtIGNvcHlcbmV4cG9ydHMuc2hyaW5rQnVmID0gZnVuY3Rpb24gKGJ1Ziwgc2l6ZSkge1xuICBpZiAoYnVmLmxlbmd0aCA9PT0gc2l6ZSkgeyByZXR1cm4gYnVmOyB9XG4gIGlmIChidWYuc3ViYXJyYXkpIHsgcmV0dXJuIGJ1Zi5zdWJhcnJheSgwLCBzaXplKTsgfVxuICBidWYubGVuZ3RoID0gc2l6ZTtcbiAgcmV0dXJuIGJ1Zjtcbn07XG5cblxudmFyIGZuVHlwZWQgPSB7XG4gIGFycmF5U2V0OiBmdW5jdGlvbiAoZGVzdCwgc3JjLCBzcmNfb2ZmcywgbGVuLCBkZXN0X29mZnMpIHtcbiAgICBpZiAoc3JjLnN1YmFycmF5ICYmIGRlc3Quc3ViYXJyYXkpIHtcbiAgICAgIGRlc3Quc2V0KHNyYy5zdWJhcnJheShzcmNfb2Zmcywgc3JjX29mZnMgKyBsZW4pLCBkZXN0X29mZnMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBGYWxsYmFjayB0byBvcmRpbmFyeSBhcnJheVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGRlc3RbZGVzdF9vZmZzICsgaV0gPSBzcmNbc3JjX29mZnMgKyBpXTtcbiAgICB9XG4gIH0sXG4gIC8vIEpvaW4gYXJyYXkgb2YgY2h1bmtzIHRvIHNpbmdsZSBhcnJheS5cbiAgZmxhdHRlbkNodW5rczogZnVuY3Rpb24gKGNodW5rcykge1xuICAgIHZhciBpLCBsLCBsZW4sIHBvcywgY2h1bmssIHJlc3VsdDtcblxuICAgIC8vIGNhbGN1bGF0ZSBkYXRhIGxlbmd0aFxuICAgIGxlbiA9IDA7XG4gICAgZm9yIChpID0gMCwgbCA9IGNodW5rcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGxlbiArPSBjaHVua3NbaV0ubGVuZ3RoO1xuICAgIH1cblxuICAgIC8vIGpvaW4gY2h1bmtzXG4gICAgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBwb3MgPSAwO1xuICAgIGZvciAoaSA9IDAsIGwgPSBjaHVua3MubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjaHVuayA9IGNodW5rc1tpXTtcbiAgICAgIHJlc3VsdC5zZXQoY2h1bmssIHBvcyk7XG4gICAgICBwb3MgKz0gY2h1bmsubGVuZ3RoO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn07XG5cbnZhciBmblVudHlwZWQgPSB7XG4gIGFycmF5U2V0OiBmdW5jdGlvbiAoZGVzdCwgc3JjLCBzcmNfb2ZmcywgbGVuLCBkZXN0X29mZnMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBkZXN0W2Rlc3Rfb2ZmcyArIGldID0gc3JjW3NyY19vZmZzICsgaV07XG4gICAgfVxuICB9LFxuICAvLyBKb2luIGFycmF5IG9mIGNodW5rcyB0byBzaW5nbGUgYXJyYXkuXG4gIGZsYXR0ZW5DaHVua3M6IGZ1bmN0aW9uIChjaHVua3MpIHtcbiAgICByZXR1cm4gW10uY29uY2F0LmFwcGx5KFtdLCBjaHVua3MpO1xuICB9XG59O1xuXG5cbi8vIEVuYWJsZS9EaXNhYmxlIHR5cGVkIGFycmF5cyB1c2UsIGZvciB0ZXN0aW5nXG4vL1xuZXhwb3J0cy5zZXRUeXBlZCA9IGZ1bmN0aW9uIChvbikge1xuICBpZiAob24pIHtcbiAgICBleHBvcnRzLkJ1ZjggID0gVWludDhBcnJheTtcbiAgICBleHBvcnRzLkJ1ZjE2ID0gVWludDE2QXJyYXk7XG4gICAgZXhwb3J0cy5CdWYzMiA9IEludDMyQXJyYXk7XG4gICAgZXhwb3J0cy5hc3NpZ24oZXhwb3J0cywgZm5UeXBlZCk7XG4gIH0gZWxzZSB7XG4gICAgZXhwb3J0cy5CdWY4ICA9IEFycmF5O1xuICAgIGV4cG9ydHMuQnVmMTYgPSBBcnJheTtcbiAgICBleHBvcnRzLkJ1ZjMyID0gQXJyYXk7XG4gICAgZXhwb3J0cy5hc3NpZ24oZXhwb3J0cywgZm5VbnR5cGVkKTtcbiAgfVxufTtcblxuZXhwb3J0cy5zZXRUeXBlZChUWVBFRF9PSyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIE5vdGU6IGFkbGVyMzIgdGFrZXMgMTIlIGZvciBsZXZlbCAwIGFuZCAyJSBmb3IgbGV2ZWwgNi5cbi8vIEl0IGlzbid0IHdvcnRoIGl0IHRvIG1ha2UgYWRkaXRpb25hbCBvcHRpbWl6YXRpb25zIGFzIGluIG9yaWdpbmFsLlxuLy8gU21hbGwgc2l6ZSBpcyBwcmVmZXJhYmxlLlxuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbmZ1bmN0aW9uIGFkbGVyMzIoYWRsZXIsIGJ1ZiwgbGVuLCBwb3MpIHtcbiAgdmFyIHMxID0gKGFkbGVyICYgMHhmZmZmKSB8MCxcbiAgICAgIHMyID0gKChhZGxlciA+Pj4gMTYpICYgMHhmZmZmKSB8MCxcbiAgICAgIG4gPSAwO1xuXG4gIHdoaWxlIChsZW4gIT09IDApIHtcbiAgICAvLyBTZXQgbGltaXQgfiB0d2ljZSBsZXNzIHRoYW4gNTU1MiwgdG8ga2VlcFxuICAgIC8vIHMyIGluIDMxLWJpdHMsIGJlY2F1c2Ugd2UgZm9yY2Ugc2lnbmVkIGludHMuXG4gICAgLy8gaW4gb3RoZXIgY2FzZSAlPSB3aWxsIGZhaWwuXG4gICAgbiA9IGxlbiA+IDIwMDAgPyAyMDAwIDogbGVuO1xuICAgIGxlbiAtPSBuO1xuXG4gICAgZG8ge1xuICAgICAgczEgPSAoczEgKyBidWZbcG9zKytdKSB8MDtcbiAgICAgIHMyID0gKHMyICsgczEpIHwwO1xuICAgIH0gd2hpbGUgKC0tbik7XG5cbiAgICBzMSAlPSA2NTUyMTtcbiAgICBzMiAlPSA2NTUyMTtcbiAgfVxuXG4gIHJldHVybiAoczEgfCAoczIgPDwgMTYpKSB8MDtcbn1cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGFkbGVyMzI7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG5cbiAgLyogQWxsb3dlZCBmbHVzaCB2YWx1ZXM7IHNlZSBkZWZsYXRlKCkgYW5kIGluZmxhdGUoKSBiZWxvdyBmb3IgZGV0YWlscyAqL1xuICBaX05PX0ZMVVNIOiAgICAgICAgIDAsXG4gIFpfUEFSVElBTF9GTFVTSDogICAgMSxcbiAgWl9TWU5DX0ZMVVNIOiAgICAgICAyLFxuICBaX0ZVTExfRkxVU0g6ICAgICAgIDMsXG4gIFpfRklOSVNIOiAgICAgICAgICAgNCxcbiAgWl9CTE9DSzogICAgICAgICAgICA1LFxuICBaX1RSRUVTOiAgICAgICAgICAgIDYsXG5cbiAgLyogUmV0dXJuIGNvZGVzIGZvciB0aGUgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBmdW5jdGlvbnMuIE5lZ2F0aXZlIHZhbHVlc1xuICAqIGFyZSBlcnJvcnMsIHBvc2l0aXZlIHZhbHVlcyBhcmUgdXNlZCBmb3Igc3BlY2lhbCBidXQgbm9ybWFsIGV2ZW50cy5cbiAgKi9cbiAgWl9PSzogICAgICAgICAgICAgICAwLFxuICBaX1NUUkVBTV9FTkQ6ICAgICAgIDEsXG4gIFpfTkVFRF9ESUNUOiAgICAgICAgMixcbiAgWl9FUlJOTzogICAgICAgICAgIC0xLFxuICBaX1NUUkVBTV9FUlJPUjogICAgLTIsXG4gIFpfREFUQV9FUlJPUjogICAgICAtMyxcbiAgLy9aX01FTV9FUlJPUjogICAgIC00LFxuICBaX0JVRl9FUlJPUjogICAgICAgLTUsXG4gIC8vWl9WRVJTSU9OX0VSUk9SOiAtNixcblxuICAvKiBjb21wcmVzc2lvbiBsZXZlbHMgKi9cbiAgWl9OT19DT01QUkVTU0lPTjogICAgICAgICAwLFxuICBaX0JFU1RfU1BFRUQ6ICAgICAgICAgICAgIDEsXG4gIFpfQkVTVF9DT01QUkVTU0lPTjogICAgICAgOSxcbiAgWl9ERUZBVUxUX0NPTVBSRVNTSU9OOiAgIC0xLFxuXG5cbiAgWl9GSUxURVJFRDogICAgICAgICAgICAgICAxLFxuICBaX0hVRkZNQU5fT05MWTogICAgICAgICAgIDIsXG4gIFpfUkxFOiAgICAgICAgICAgICAgICAgICAgMyxcbiAgWl9GSVhFRDogICAgICAgICAgICAgICAgICA0LFxuICBaX0RFRkFVTFRfU1RSQVRFR1k6ICAgICAgIDAsXG5cbiAgLyogUG9zc2libGUgdmFsdWVzIG9mIHRoZSBkYXRhX3R5cGUgZmllbGQgKHRob3VnaCBzZWUgaW5mbGF0ZSgpKSAqL1xuICBaX0JJTkFSWTogICAgICAgICAgICAgICAgIDAsXG4gIFpfVEVYVDogICAgICAgICAgICAgICAgICAgMSxcbiAgLy9aX0FTQ0lJOiAgICAgICAgICAgICAgICAxLCAvLyA9IFpfVEVYVCAoZGVwcmVjYXRlZClcbiAgWl9VTktOT1dOOiAgICAgICAgICAgICAgICAyLFxuXG4gIC8qIFRoZSBkZWZsYXRlIGNvbXByZXNzaW9uIG1ldGhvZCAqL1xuICBaX0RFRkxBVEVEOiAgICAgICAgICAgICAgIDhcbiAgLy9aX05VTEw6ICAgICAgICAgICAgICAgICBudWxsIC8vIFVzZSAtMSBvciBudWxsIGlubGluZSwgZGVwZW5kaW5nIG9uIHZhciB0eXBlXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyBOb3RlOiB3ZSBjYW4ndCBnZXQgc2lnbmlmaWNhbnQgc3BlZWQgYm9vc3QgaGVyZS5cbi8vIFNvIHdyaXRlIGNvZGUgdG8gbWluaW1pemUgc2l6ZSAtIG5vIHByZWdlbmVyYXRlZCB0YWJsZXNcbi8vIGFuZCBhcnJheSB0b29scyBkZXBlbmRlbmNpZXMuXG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxuLy8gVXNlIG9yZGluYXJ5IGFycmF5LCBzaW5jZSB1bnR5cGVkIG1ha2VzIG5vIGJvb3N0IGhlcmVcbmZ1bmN0aW9uIG1ha2VUYWJsZSgpIHtcbiAgdmFyIGMsIHRhYmxlID0gW107XG5cbiAgZm9yICh2YXIgbiA9IDA7IG4gPCAyNTY7IG4rKykge1xuICAgIGMgPSBuO1xuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgODsgaysrKSB7XG4gICAgICBjID0gKChjICYgMSkgPyAoMHhFREI4ODMyMCBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuICAgIH1cbiAgICB0YWJsZVtuXSA9IGM7XG4gIH1cblxuICByZXR1cm4gdGFibGU7XG59XG5cbi8vIENyZWF0ZSB0YWJsZSBvbiBsb2FkLiBKdXN0IDI1NSBzaWduZWQgbG9uZ3MuIE5vdCBhIHByb2JsZW0uXG52YXIgY3JjVGFibGUgPSBtYWtlVGFibGUoKTtcblxuXG5mdW5jdGlvbiBjcmMzMihjcmMsIGJ1ZiwgbGVuLCBwb3MpIHtcbiAgdmFyIHQgPSBjcmNUYWJsZSxcbiAgICAgIGVuZCA9IHBvcyArIGxlbjtcblxuICBjcmMgXj0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IHBvczsgaSA8IGVuZDsgaSsrKSB7XG4gICAgY3JjID0gKGNyYyA+Pj4gOCkgXiB0WyhjcmMgXiBidWZbaV0pICYgMHhGRl07XG4gIH1cblxuICByZXR1cm4gKGNyYyBeICgtMSkpOyAvLyA+Pj4gMDtcbn1cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyYzMyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbnZhciB1dGlscyAgID0gcmVxdWlyZSgnLi4vdXRpbHMvY29tbW9uJyk7XG52YXIgdHJlZXMgICA9IHJlcXVpcmUoJy4vdHJlZXMnKTtcbnZhciBhZGxlcjMyID0gcmVxdWlyZSgnLi9hZGxlcjMyJyk7XG52YXIgY3JjMzIgICA9IHJlcXVpcmUoJy4vY3JjMzInKTtcbnZhciBtc2cgICAgID0gcmVxdWlyZSgnLi9tZXNzYWdlcycpO1xuXG4vKiBQdWJsaWMgY29uc3RhbnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG4vKiBBbGxvd2VkIGZsdXNoIHZhbHVlczsgc2VlIGRlZmxhdGUoKSBhbmQgaW5mbGF0ZSgpIGJlbG93IGZvciBkZXRhaWxzICovXG52YXIgWl9OT19GTFVTSCAgICAgID0gMDtcbnZhciBaX1BBUlRJQUxfRkxVU0ggPSAxO1xuLy92YXIgWl9TWU5DX0ZMVVNIICAgID0gMjtcbnZhciBaX0ZVTExfRkxVU0ggICAgPSAzO1xudmFyIFpfRklOSVNIICAgICAgICA9IDQ7XG52YXIgWl9CTE9DSyAgICAgICAgID0gNTtcbi8vdmFyIFpfVFJFRVMgICAgICAgICA9IDY7XG5cblxuLyogUmV0dXJuIGNvZGVzIGZvciB0aGUgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBmdW5jdGlvbnMuIE5lZ2F0aXZlIHZhbHVlc1xuICogYXJlIGVycm9ycywgcG9zaXRpdmUgdmFsdWVzIGFyZSB1c2VkIGZvciBzcGVjaWFsIGJ1dCBub3JtYWwgZXZlbnRzLlxuICovXG52YXIgWl9PSyAgICAgICAgICAgID0gMDtcbnZhciBaX1NUUkVBTV9FTkQgICAgPSAxO1xuLy92YXIgWl9ORUVEX0RJQ1QgICAgID0gMjtcbi8vdmFyIFpfRVJSTk8gICAgICAgICA9IC0xO1xudmFyIFpfU1RSRUFNX0VSUk9SICA9IC0yO1xudmFyIFpfREFUQV9FUlJPUiAgICA9IC0zO1xuLy92YXIgWl9NRU1fRVJST1IgICAgID0gLTQ7XG52YXIgWl9CVUZfRVJST1IgICAgID0gLTU7XG4vL3ZhciBaX1ZFUlNJT05fRVJST1IgPSAtNjtcblxuXG4vKiBjb21wcmVzc2lvbiBsZXZlbHMgKi9cbi8vdmFyIFpfTk9fQ09NUFJFU1NJT04gICAgICA9IDA7XG4vL3ZhciBaX0JFU1RfU1BFRUQgICAgICAgICAgPSAxO1xuLy92YXIgWl9CRVNUX0NPTVBSRVNTSU9OICAgID0gOTtcbnZhciBaX0RFRkFVTFRfQ09NUFJFU1NJT04gPSAtMTtcblxuXG52YXIgWl9GSUxURVJFRCAgICAgICAgICAgID0gMTtcbnZhciBaX0hVRkZNQU5fT05MWSAgICAgICAgPSAyO1xudmFyIFpfUkxFICAgICAgICAgICAgICAgICA9IDM7XG52YXIgWl9GSVhFRCAgICAgICAgICAgICAgID0gNDtcbnZhciBaX0RFRkFVTFRfU1RSQVRFR1kgICAgPSAwO1xuXG4vKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovXG4vL3ZhciBaX0JJTkFSWSAgICAgICAgICAgICAgPSAwO1xuLy92YXIgWl9URVhUICAgICAgICAgICAgICAgID0gMTtcbi8vdmFyIFpfQVNDSUkgICAgICAgICAgICAgICA9IDE7IC8vID0gWl9URVhUXG52YXIgWl9VTktOT1dOICAgICAgICAgICAgID0gMjtcblxuXG4vKiBUaGUgZGVmbGF0ZSBjb21wcmVzc2lvbiBtZXRob2QgKi9cbnZhciBaX0RFRkxBVEVEICA9IDg7XG5cbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblxudmFyIE1BWF9NRU1fTEVWRUwgPSA5O1xuLyogTWF4aW11bSB2YWx1ZSBmb3IgbWVtTGV2ZWwgaW4gZGVmbGF0ZUluaXQyICovXG52YXIgTUFYX1dCSVRTID0gMTU7XG4vKiAzMksgTFo3NyB3aW5kb3cgKi9cbnZhciBERUZfTUVNX0xFVkVMID0gODtcblxuXG52YXIgTEVOR1RIX0NPREVTICA9IDI5O1xuLyogbnVtYmVyIG9mIGxlbmd0aCBjb2Rlcywgbm90IGNvdW50aW5nIHRoZSBzcGVjaWFsIEVORF9CTE9DSyBjb2RlICovXG52YXIgTElURVJBTFMgICAgICA9IDI1Njtcbi8qIG51bWJlciBvZiBsaXRlcmFsIGJ5dGVzIDAuLjI1NSAqL1xudmFyIExfQ09ERVMgICAgICAgPSBMSVRFUkFMUyArIDEgKyBMRU5HVEhfQ09ERVM7XG4vKiBudW1iZXIgb2YgTGl0ZXJhbCBvciBMZW5ndGggY29kZXMsIGluY2x1ZGluZyB0aGUgRU5EX0JMT0NLIGNvZGUgKi9cbnZhciBEX0NPREVTICAgICAgID0gMzA7XG4vKiBudW1iZXIgb2YgZGlzdGFuY2UgY29kZXMgKi9cbnZhciBCTF9DT0RFUyAgICAgID0gMTk7XG4vKiBudW1iZXIgb2YgY29kZXMgdXNlZCB0byB0cmFuc2ZlciB0aGUgYml0IGxlbmd0aHMgKi9cbnZhciBIRUFQX1NJWkUgICAgID0gMiAqIExfQ09ERVMgKyAxO1xuLyogbWF4aW11bSBoZWFwIHNpemUgKi9cbnZhciBNQVhfQklUUyAgPSAxNTtcbi8qIEFsbCBjb2RlcyBtdXN0IG5vdCBleGNlZWQgTUFYX0JJVFMgYml0cyAqL1xuXG52YXIgTUlOX01BVENIID0gMztcbnZhciBNQVhfTUFUQ0ggPSAyNTg7XG52YXIgTUlOX0xPT0tBSEVBRCA9IChNQVhfTUFUQ0ggKyBNSU5fTUFUQ0ggKyAxKTtcblxudmFyIFBSRVNFVF9ESUNUID0gMHgyMDtcblxudmFyIElOSVRfU1RBVEUgPSA0MjtcbnZhciBFWFRSQV9TVEFURSA9IDY5O1xudmFyIE5BTUVfU1RBVEUgPSA3MztcbnZhciBDT01NRU5UX1NUQVRFID0gOTE7XG52YXIgSENSQ19TVEFURSA9IDEwMztcbnZhciBCVVNZX1NUQVRFID0gMTEzO1xudmFyIEZJTklTSF9TVEFURSA9IDY2NjtcblxudmFyIEJTX05FRURfTU9SRSAgICAgID0gMTsgLyogYmxvY2sgbm90IGNvbXBsZXRlZCwgbmVlZCBtb3JlIGlucHV0IG9yIG1vcmUgb3V0cHV0ICovXG52YXIgQlNfQkxPQ0tfRE9ORSAgICAgPSAyOyAvKiBibG9jayBmbHVzaCBwZXJmb3JtZWQgKi9cbnZhciBCU19GSU5JU0hfU1RBUlRFRCA9IDM7IC8qIGZpbmlzaCBzdGFydGVkLCBuZWVkIG9ubHkgbW9yZSBvdXRwdXQgYXQgbmV4dCBkZWZsYXRlICovXG52YXIgQlNfRklOSVNIX0RPTkUgICAgPSA0OyAvKiBmaW5pc2ggZG9uZSwgYWNjZXB0IG5vIG1vcmUgaW5wdXQgb3Igb3V0cHV0ICovXG5cbnZhciBPU19DT0RFID0gMHgwMzsgLy8gVW5peCA6KSAuIERvbid0IGRldGVjdCwgdXNlIHRoaXMgZGVmYXVsdC5cblxuZnVuY3Rpb24gZXJyKHN0cm0sIGVycm9yQ29kZSkge1xuICBzdHJtLm1zZyA9IG1zZ1tlcnJvckNvZGVdO1xuICByZXR1cm4gZXJyb3JDb2RlO1xufVxuXG5mdW5jdGlvbiByYW5rKGYpIHtcbiAgcmV0dXJuICgoZikgPDwgMSkgLSAoKGYpID4gNCA/IDkgOiAwKTtcbn1cblxuZnVuY3Rpb24gemVybyhidWYpIHsgdmFyIGxlbiA9IGJ1Zi5sZW5ndGg7IHdoaWxlICgtLWxlbiA+PSAwKSB7IGJ1ZltsZW5dID0gMDsgfSB9XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogRmx1c2ggYXMgbXVjaCBwZW5kaW5nIG91dHB1dCBhcyBwb3NzaWJsZS4gQWxsIGRlZmxhdGUoKSBvdXRwdXQgZ29lc1xuICogdGhyb3VnaCB0aGlzIGZ1bmN0aW9uIHNvIHNvbWUgYXBwbGljYXRpb25zIG1heSB3aXNoIHRvIG1vZGlmeSBpdFxuICogdG8gYXZvaWQgYWxsb2NhdGluZyBhIGxhcmdlIHN0cm0tPm91dHB1dCBidWZmZXIgYW5kIGNvcHlpbmcgaW50byBpdC5cbiAqIChTZWUgYWxzbyByZWFkX2J1ZigpKS5cbiAqL1xuZnVuY3Rpb24gZmx1c2hfcGVuZGluZyhzdHJtKSB7XG4gIHZhciBzID0gc3RybS5zdGF0ZTtcblxuICAvL190cl9mbHVzaF9iaXRzKHMpO1xuICB2YXIgbGVuID0gcy5wZW5kaW5nO1xuICBpZiAobGVuID4gc3RybS5hdmFpbF9vdXQpIHtcbiAgICBsZW4gPSBzdHJtLmF2YWlsX291dDtcbiAgfVxuICBpZiAobGVuID09PSAwKSB7IHJldHVybjsgfVxuXG4gIHV0aWxzLmFycmF5U2V0KHN0cm0ub3V0cHV0LCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmdfb3V0LCBsZW4sIHN0cm0ubmV4dF9vdXQpO1xuICBzdHJtLm5leHRfb3V0ICs9IGxlbjtcbiAgcy5wZW5kaW5nX291dCArPSBsZW47XG4gIHN0cm0udG90YWxfb3V0ICs9IGxlbjtcbiAgc3RybS5hdmFpbF9vdXQgLT0gbGVuO1xuICBzLnBlbmRpbmcgLT0gbGVuO1xuICBpZiAocy5wZW5kaW5nID09PSAwKSB7XG4gICAgcy5wZW5kaW5nX291dCA9IDA7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBmbHVzaF9ibG9ja19vbmx5KHMsIGxhc3QpIHtcbiAgdHJlZXMuX3RyX2ZsdXNoX2Jsb2NrKHMsIChzLmJsb2NrX3N0YXJ0ID49IDAgPyBzLmJsb2NrX3N0YXJ0IDogLTEpLCBzLnN0cnN0YXJ0IC0gcy5ibG9ja19zdGFydCwgbGFzdCk7XG4gIHMuYmxvY2tfc3RhcnQgPSBzLnN0cnN0YXJ0O1xuICBmbHVzaF9wZW5kaW5nKHMuc3RybSk7XG59XG5cblxuZnVuY3Rpb24gcHV0X2J5dGUocywgYikge1xuICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9IGI7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogUHV0IGEgc2hvcnQgaW4gdGhlIHBlbmRpbmcgYnVmZmVyLiBUaGUgMTYtYml0IHZhbHVlIGlzIHB1dCBpbiBNU0Igb3JkZXIuXG4gKiBJTiBhc3NlcnRpb246IHRoZSBzdHJlYW0gc3RhdGUgaXMgY29ycmVjdCBhbmQgdGhlcmUgaXMgZW5vdWdoIHJvb20gaW5cbiAqIHBlbmRpbmdfYnVmLlxuICovXG5mdW5jdGlvbiBwdXRTaG9ydE1TQihzLCBiKSB7XG4vLyAgcHV0X2J5dGUocywgKEJ5dGUpKGIgPj4gOCkpO1xuLy8gIHB1dF9ieXRlKHMsIChCeXRlKShiICYgMHhmZikpO1xuICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9IChiID4+PiA4KSAmIDB4ZmY7XG4gIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gYiAmIDB4ZmY7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBSZWFkIGEgbmV3IGJ1ZmZlciBmcm9tIHRoZSBjdXJyZW50IGlucHV0IHN0cmVhbSwgdXBkYXRlIHRoZSBhZGxlcjMyXG4gKiBhbmQgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBBbGwgZGVmbGF0ZSgpIGlucHV0IGdvZXMgdGhyb3VnaFxuICogdGhpcyBmdW5jdGlvbiBzbyBzb21lIGFwcGxpY2F0aW9ucyBtYXkgd2lzaCB0byBtb2RpZnkgaXQgdG8gYXZvaWRcbiAqIGFsbG9jYXRpbmcgYSBsYXJnZSBzdHJtLT5pbnB1dCBidWZmZXIgYW5kIGNvcHlpbmcgZnJvbSBpdC5cbiAqIChTZWUgYWxzbyBmbHVzaF9wZW5kaW5nKCkpLlxuICovXG5mdW5jdGlvbiByZWFkX2J1ZihzdHJtLCBidWYsIHN0YXJ0LCBzaXplKSB7XG4gIHZhciBsZW4gPSBzdHJtLmF2YWlsX2luO1xuXG4gIGlmIChsZW4gPiBzaXplKSB7IGxlbiA9IHNpemU7IH1cbiAgaWYgKGxlbiA9PT0gMCkgeyByZXR1cm4gMDsgfVxuXG4gIHN0cm0uYXZhaWxfaW4gLT0gbGVuO1xuXG4gIC8vIHptZW1jcHkoYnVmLCBzdHJtLT5uZXh0X2luLCBsZW4pO1xuICB1dGlscy5hcnJheVNldChidWYsIHN0cm0uaW5wdXQsIHN0cm0ubmV4dF9pbiwgbGVuLCBzdGFydCk7XG4gIGlmIChzdHJtLnN0YXRlLndyYXAgPT09IDEpIHtcbiAgICBzdHJtLmFkbGVyID0gYWRsZXIzMihzdHJtLmFkbGVyLCBidWYsIGxlbiwgc3RhcnQpO1xuICB9XG5cbiAgZWxzZSBpZiAoc3RybS5zdGF0ZS53cmFwID09PSAyKSB7XG4gICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIGJ1ZiwgbGVuLCBzdGFydCk7XG4gIH1cblxuICBzdHJtLm5leHRfaW4gKz0gbGVuO1xuICBzdHJtLnRvdGFsX2luICs9IGxlbjtcblxuICByZXR1cm4gbGVuO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2V0IG1hdGNoX3N0YXJ0IHRvIHRoZSBsb25nZXN0IG1hdGNoIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBzdHJpbmcgYW5kXG4gKiByZXR1cm4gaXRzIGxlbmd0aC4gTWF0Y2hlcyBzaG9ydGVyIG9yIGVxdWFsIHRvIHByZXZfbGVuZ3RoIGFyZSBkaXNjYXJkZWQsXG4gKiBpbiB3aGljaCBjYXNlIHRoZSByZXN1bHQgaXMgZXF1YWwgdG8gcHJldl9sZW5ndGggYW5kIG1hdGNoX3N0YXJ0IGlzXG4gKiBnYXJiYWdlLlxuICogSU4gYXNzZXJ0aW9uczogY3VyX21hdGNoIGlzIHRoZSBoZWFkIG9mIHRoZSBoYXNoIGNoYWluIGZvciB0aGUgY3VycmVudFxuICogICBzdHJpbmcgKHN0cnN0YXJ0KSBhbmQgaXRzIGRpc3RhbmNlIGlzIDw9IE1BWF9ESVNULCBhbmQgcHJldl9sZW5ndGggPj0gMVxuICogT1VUIGFzc2VydGlvbjogdGhlIG1hdGNoIGxlbmd0aCBpcyBub3QgZ3JlYXRlciB0aGFuIHMtPmxvb2thaGVhZC5cbiAqL1xuZnVuY3Rpb24gbG9uZ2VzdF9tYXRjaChzLCBjdXJfbWF0Y2gpIHtcbiAgdmFyIGNoYWluX2xlbmd0aCA9IHMubWF4X2NoYWluX2xlbmd0aDsgICAgICAvKiBtYXggaGFzaCBjaGFpbiBsZW5ndGggKi9cbiAgdmFyIHNjYW4gPSBzLnN0cnN0YXJ0OyAvKiBjdXJyZW50IHN0cmluZyAqL1xuICB2YXIgbWF0Y2g7ICAgICAgICAgICAgICAgICAgICAgICAvKiBtYXRjaGVkIHN0cmluZyAqL1xuICB2YXIgbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBvZiBjdXJyZW50IG1hdGNoICovXG4gIHZhciBiZXN0X2xlbiA9IHMucHJldl9sZW5ndGg7ICAgICAgICAgICAgICAvKiBiZXN0IG1hdGNoIGxlbmd0aCBzbyBmYXIgKi9cbiAgdmFyIG5pY2VfbWF0Y2ggPSBzLm5pY2VfbWF0Y2g7ICAgICAgICAgICAgIC8qIHN0b3AgaWYgbWF0Y2ggbG9uZyBlbm91Z2ggKi9cbiAgdmFyIGxpbWl0ID0gKHMuc3Ryc3RhcnQgPiAocy53X3NpemUgLSBNSU5fTE9PS0FIRUFEKSkgP1xuICAgICAgcy5zdHJzdGFydCAtIChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpIDogMC8qTklMKi87XG5cbiAgdmFyIF93aW4gPSBzLndpbmRvdzsgLy8gc2hvcnRjdXRcblxuICB2YXIgd21hc2sgPSBzLndfbWFzaztcbiAgdmFyIHByZXYgID0gcy5wcmV2O1xuXG4gIC8qIFN0b3Agd2hlbiBjdXJfbWF0Y2ggYmVjb21lcyA8PSBsaW1pdC4gVG8gc2ltcGxpZnkgdGhlIGNvZGUsXG4gICAqIHdlIHByZXZlbnQgbWF0Y2hlcyB3aXRoIHRoZSBzdHJpbmcgb2Ygd2luZG93IGluZGV4IDAuXG4gICAqL1xuXG4gIHZhciBzdHJlbmQgPSBzLnN0cnN0YXJ0ICsgTUFYX01BVENIO1xuICB2YXIgc2Nhbl9lbmQxICA9IF93aW5bc2NhbiArIGJlc3RfbGVuIC0gMV07XG4gIHZhciBzY2FuX2VuZCAgID0gX3dpbltzY2FuICsgYmVzdF9sZW5dO1xuXG4gIC8qIFRoZSBjb2RlIGlzIG9wdGltaXplZCBmb3IgSEFTSF9CSVRTID49IDggYW5kIE1BWF9NQVRDSC0yIG11bHRpcGxlIG9mIDE2LlxuICAgKiBJdCBpcyBlYXN5IHRvIGdldCByaWQgb2YgdGhpcyBvcHRpbWl6YXRpb24gaWYgbmVjZXNzYXJ5LlxuICAgKi9cbiAgLy8gQXNzZXJ0KHMtPmhhc2hfYml0cyA+PSA4ICYmIE1BWF9NQVRDSCA9PSAyNTgsIFwiQ29kZSB0b28gY2xldmVyXCIpO1xuXG4gIC8qIERvIG5vdCB3YXN0ZSB0b28gbXVjaCB0aW1lIGlmIHdlIGFscmVhZHkgaGF2ZSBhIGdvb2QgbWF0Y2g6ICovXG4gIGlmIChzLnByZXZfbGVuZ3RoID49IHMuZ29vZF9tYXRjaCkge1xuICAgIGNoYWluX2xlbmd0aCA+Pj0gMjtcbiAgfVxuICAvKiBEbyBub3QgbG9vayBmb3IgbWF0Y2hlcyBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgaW5wdXQuIFRoaXMgaXMgbmVjZXNzYXJ5XG4gICAqIHRvIG1ha2UgZGVmbGF0ZSBkZXRlcm1pbmlzdGljLlxuICAgKi9cbiAgaWYgKG5pY2VfbWF0Y2ggPiBzLmxvb2thaGVhZCkgeyBuaWNlX21hdGNoID0gcy5sb29rYWhlYWQ7IH1cblxuICAvLyBBc3NlcnQoKHVsZylzLT5zdHJzdGFydCA8PSBzLT53aW5kb3dfc2l6ZS1NSU5fTE9PS0FIRUFELCBcIm5lZWQgbG9va2FoZWFkXCIpO1xuXG4gIGRvIHtcbiAgICAvLyBBc3NlcnQoY3VyX21hdGNoIDwgcy0+c3Ryc3RhcnQsIFwibm8gZnV0dXJlXCIpO1xuICAgIG1hdGNoID0gY3VyX21hdGNoO1xuXG4gICAgLyogU2tpcCB0byBuZXh0IG1hdGNoIGlmIHRoZSBtYXRjaCBsZW5ndGggY2Fubm90IGluY3JlYXNlXG4gICAgICogb3IgaWYgdGhlIG1hdGNoIGxlbmd0aCBpcyBsZXNzIHRoYW4gMi4gIE5vdGUgdGhhdCB0aGUgY2hlY2tzIGJlbG93XG4gICAgICogZm9yIGluc3VmZmljaWVudCBsb29rYWhlYWQgb25seSBvY2N1ciBvY2Nhc2lvbmFsbHkgZm9yIHBlcmZvcm1hbmNlXG4gICAgICogcmVhc29ucy4gIFRoZXJlZm9yZSB1bmluaXRpYWxpemVkIG1lbW9yeSB3aWxsIGJlIGFjY2Vzc2VkLCBhbmRcbiAgICAgKiBjb25kaXRpb25hbCBqdW1wcyB3aWxsIGJlIG1hZGUgdGhhdCBkZXBlbmQgb24gdGhvc2UgdmFsdWVzLlxuICAgICAqIEhvd2V2ZXIgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2ggaXMgbGltaXRlZCB0byB0aGUgbG9va2FoZWFkLCBzb1xuICAgICAqIHRoZSBvdXRwdXQgb2YgZGVmbGF0ZSBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLlxuICAgICAqL1xuXG4gICAgaWYgKF93aW5bbWF0Y2ggKyBiZXN0X2xlbl0gICAgICE9PSBzY2FuX2VuZCAgfHxcbiAgICAgICAgX3dpblttYXRjaCArIGJlc3RfbGVuIC0gMV0gIT09IHNjYW5fZW5kMSB8fFxuICAgICAgICBfd2luW21hdGNoXSAgICAgICAgICAgICAgICAhPT0gX3dpbltzY2FuXSB8fFxuICAgICAgICBfd2luWysrbWF0Y2hdICAgICAgICAgICAgICAhPT0gX3dpbltzY2FuICsgMV0pIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qIFRoZSBjaGVjayBhdCBiZXN0X2xlbi0xIGNhbiBiZSByZW1vdmVkIGJlY2F1c2UgaXQgd2lsbCBiZSBtYWRlXG4gICAgICogYWdhaW4gbGF0ZXIuIChUaGlzIGhldXJpc3RpYyBpcyBub3QgYWx3YXlzIGEgd2luLilcbiAgICAgKiBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNvbXBhcmUgc2NhblsyXSBhbmQgbWF0Y2hbMl0gc2luY2UgdGhleVxuICAgICAqIGFyZSBhbHdheXMgZXF1YWwgd2hlbiB0aGUgb3RoZXIgYnl0ZXMgbWF0Y2gsIGdpdmVuIHRoYXRcbiAgICAgKiB0aGUgaGFzaCBrZXlzIGFyZSBlcXVhbCBhbmQgdGhhdCBIQVNIX0JJVFMgPj0gOC5cbiAgICAgKi9cbiAgICBzY2FuICs9IDI7XG4gICAgbWF0Y2grKztcbiAgICAvLyBBc3NlcnQoKnNjYW4gPT0gKm1hdGNoLCBcIm1hdGNoWzJdP1wiKTtcblxuICAgIC8qIFdlIGNoZWNrIGZvciBpbnN1ZmZpY2llbnQgbG9va2FoZWFkIG9ubHkgZXZlcnkgOHRoIGNvbXBhcmlzb247XG4gICAgICogdGhlIDI1NnRoIGNoZWNrIHdpbGwgYmUgbWFkZSBhdCBzdHJzdGFydCsyNTguXG4gICAgICovXG4gICAgZG8ge1xuICAgICAgLypqc2hpbnQgbm9lbXB0eTpmYWxzZSovXG4gICAgfSB3aGlsZSAoX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmIF93aW5bKytzY2FuXSA9PT0gX3dpblsrK21hdGNoXSAmJlxuICAgICAgICAgICAgIF93aW5bKytzY2FuXSA9PT0gX3dpblsrK21hdGNoXSAmJiBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiZcbiAgICAgICAgICAgICBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmXG4gICAgICAgICAgICAgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmIF93aW5bKytzY2FuXSA9PT0gX3dpblsrK21hdGNoXSAmJlxuICAgICAgICAgICAgIHNjYW4gPCBzdHJlbmQpO1xuXG4gICAgLy8gQXNzZXJ0KHNjYW4gPD0gcy0+d2luZG93Kyh1bnNpZ25lZCkocy0+d2luZG93X3NpemUtMSksIFwid2lsZCBzY2FuXCIpO1xuXG4gICAgbGVuID0gTUFYX01BVENIIC0gKHN0cmVuZCAtIHNjYW4pO1xuICAgIHNjYW4gPSBzdHJlbmQgLSBNQVhfTUFUQ0g7XG5cbiAgICBpZiAobGVuID4gYmVzdF9sZW4pIHtcbiAgICAgIHMubWF0Y2hfc3RhcnQgPSBjdXJfbWF0Y2g7XG4gICAgICBiZXN0X2xlbiA9IGxlbjtcbiAgICAgIGlmIChsZW4gPj0gbmljZV9tYXRjaCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHNjYW5fZW5kMSAgPSBfd2luW3NjYW4gKyBiZXN0X2xlbiAtIDFdO1xuICAgICAgc2Nhbl9lbmQgICA9IF93aW5bc2NhbiArIGJlc3RfbGVuXTtcbiAgICB9XG4gIH0gd2hpbGUgKChjdXJfbWF0Y2ggPSBwcmV2W2N1cl9tYXRjaCAmIHdtYXNrXSkgPiBsaW1pdCAmJiAtLWNoYWluX2xlbmd0aCAhPT0gMCk7XG5cbiAgaWYgKGJlc3RfbGVuIDw9IHMubG9va2FoZWFkKSB7XG4gICAgcmV0dXJuIGJlc3RfbGVuO1xuICB9XG4gIHJldHVybiBzLmxvb2thaGVhZDtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEZpbGwgdGhlIHdpbmRvdyB3aGVuIHRoZSBsb29rYWhlYWQgYmVjb21lcyBpbnN1ZmZpY2llbnQuXG4gKiBVcGRhdGVzIHN0cnN0YXJ0IGFuZCBsb29rYWhlYWQuXG4gKlxuICogSU4gYXNzZXJ0aW9uOiBsb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEXG4gKiBPVVQgYXNzZXJ0aW9uczogc3Ryc3RhcnQgPD0gd2luZG93X3NpemUtTUlOX0xPT0tBSEVBRFxuICogICAgQXQgbGVhc3Qgb25lIGJ5dGUgaGFzIGJlZW4gcmVhZCwgb3IgYXZhaWxfaW4gPT0gMDsgcmVhZHMgYXJlXG4gKiAgICBwZXJmb3JtZWQgZm9yIGF0IGxlYXN0IHR3byBieXRlcyAocmVxdWlyZWQgZm9yIHRoZSB6aXAgdHJhbnNsYXRlX2VvbFxuICogICAgb3B0aW9uIC0tIG5vdCBzdXBwb3J0ZWQgaGVyZSkuXG4gKi9cbmZ1bmN0aW9uIGZpbGxfd2luZG93KHMpIHtcbiAgdmFyIF93X3NpemUgPSBzLndfc2l6ZTtcbiAgdmFyIHAsIG4sIG0sIG1vcmUsIHN0cjtcblxuICAvL0Fzc2VydChzLT5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFELCBcImFscmVhZHkgZW5vdWdoIGxvb2thaGVhZFwiKTtcblxuICBkbyB7XG4gICAgbW9yZSA9IHMud2luZG93X3NpemUgLSBzLmxvb2thaGVhZCAtIHMuc3Ryc3RhcnQ7XG5cbiAgICAvLyBKUyBpbnRzIGhhdmUgMzIgYml0LCBibG9jayBiZWxvdyBub3QgbmVlZGVkXG4gICAgLyogRGVhbCB3aXRoICFAIyQlIDY0SyBsaW1pdDogKi9cbiAgICAvL2lmIChzaXplb2YoaW50KSA8PSAyKSB7XG4gICAgLy8gICAgaWYgKG1vcmUgPT0gMCAmJiBzLT5zdHJzdGFydCA9PSAwICYmIHMtPmxvb2thaGVhZCA9PSAwKSB7XG4gICAgLy8gICAgICAgIG1vcmUgPSB3c2l6ZTtcbiAgICAvL1xuICAgIC8vICB9IGVsc2UgaWYgKG1vcmUgPT0gKHVuc2lnbmVkKSgtMSkpIHtcbiAgICAvLyAgICAgICAgLyogVmVyeSB1bmxpa2VseSwgYnV0IHBvc3NpYmxlIG9uIDE2IGJpdCBtYWNoaW5lIGlmXG4gICAgLy8gICAgICAgICAqIHN0cnN0YXJ0ID09IDAgJiYgbG9va2FoZWFkID09IDEgKGlucHV0IGRvbmUgYSBieXRlIGF0IHRpbWUpXG4gICAgLy8gICAgICAgICAqL1xuICAgIC8vICAgICAgICBtb3JlLS07XG4gICAgLy8gICAgfVxuICAgIC8vfVxuXG5cbiAgICAvKiBJZiB0aGUgd2luZG93IGlzIGFsbW9zdCBmdWxsIGFuZCB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgbG9va2FoZWFkLFxuICAgICAqIG1vdmUgdGhlIHVwcGVyIGhhbGYgdG8gdGhlIGxvd2VyIG9uZSB0byBtYWtlIHJvb20gaW4gdGhlIHVwcGVyIGhhbGYuXG4gICAgICovXG4gICAgaWYgKHMuc3Ryc3RhcnQgPj0gX3dfc2l6ZSArIChfd19zaXplIC0gTUlOX0xPT0tBSEVBRCkpIHtcblxuICAgICAgdXRpbHMuYXJyYXlTZXQocy53aW5kb3csIHMud2luZG93LCBfd19zaXplLCBfd19zaXplLCAwKTtcbiAgICAgIHMubWF0Y2hfc3RhcnQgLT0gX3dfc2l6ZTtcbiAgICAgIHMuc3Ryc3RhcnQgLT0gX3dfc2l6ZTtcbiAgICAgIC8qIHdlIG5vdyBoYXZlIHN0cnN0YXJ0ID49IE1BWF9ESVNUICovXG4gICAgICBzLmJsb2NrX3N0YXJ0IC09IF93X3NpemU7XG5cbiAgICAgIC8qIFNsaWRlIHRoZSBoYXNoIHRhYmxlIChjb3VsZCBiZSBhdm9pZGVkIHdpdGggMzIgYml0IHZhbHVlc1xuICAgICAgIGF0IHRoZSBleHBlbnNlIG9mIG1lbW9yeSB1c2FnZSkuIFdlIHNsaWRlIGV2ZW4gd2hlbiBsZXZlbCA9PSAwXG4gICAgICAgdG8ga2VlcCB0aGUgaGFzaCB0YWJsZSBjb25zaXN0ZW50IGlmIHdlIHN3aXRjaCBiYWNrIHRvIGxldmVsID4gMFxuICAgICAgIGxhdGVyLiAoVXNpbmcgbGV2ZWwgMCBwZXJtYW5lbnRseSBpcyBub3QgYW4gb3B0aW1hbCB1c2FnZSBvZlxuICAgICAgIHpsaWIsIHNvIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhpcyBwYXRob2xvZ2ljYWwgY2FzZS4pXG4gICAgICAgKi9cblxuICAgICAgbiA9IHMuaGFzaF9zaXplO1xuICAgICAgcCA9IG47XG4gICAgICBkbyB7XG4gICAgICAgIG0gPSBzLmhlYWRbLS1wXTtcbiAgICAgICAgcy5oZWFkW3BdID0gKG0gPj0gX3dfc2l6ZSA/IG0gLSBfd19zaXplIDogMCk7XG4gICAgICB9IHdoaWxlICgtLW4pO1xuXG4gICAgICBuID0gX3dfc2l6ZTtcbiAgICAgIHAgPSBuO1xuICAgICAgZG8ge1xuICAgICAgICBtID0gcy5wcmV2Wy0tcF07XG4gICAgICAgIHMucHJldltwXSA9IChtID49IF93X3NpemUgPyBtIC0gX3dfc2l6ZSA6IDApO1xuICAgICAgICAvKiBJZiBuIGlzIG5vdCBvbiBhbnkgaGFzaCBjaGFpbiwgcHJldltuXSBpcyBnYXJiYWdlIGJ1dFxuICAgICAgICAgKiBpdHMgdmFsdWUgd2lsbCBuZXZlciBiZSB1c2VkLlxuICAgICAgICAgKi9cbiAgICAgIH0gd2hpbGUgKC0tbik7XG5cbiAgICAgIG1vcmUgKz0gX3dfc2l6ZTtcbiAgICB9XG4gICAgaWYgKHMuc3RybS5hdmFpbF9pbiA9PT0gMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLyogSWYgdGhlcmUgd2FzIG5vIHNsaWRpbmc6XG4gICAgICogICAgc3Ryc3RhcnQgPD0gV1NJWkUrTUFYX0RJU1QtMSAmJiBsb29rYWhlYWQgPD0gTUlOX0xPT0tBSEVBRCAtIDEgJiZcbiAgICAgKiAgICBtb3JlID09IHdpbmRvd19zaXplIC0gbG9va2FoZWFkIC0gc3Ryc3RhcnRcbiAgICAgKiA9PiBtb3JlID49IHdpbmRvd19zaXplIC0gKE1JTl9MT09LQUhFQUQtMSArIFdTSVpFICsgTUFYX0RJU1QtMSlcbiAgICAgKiA9PiBtb3JlID49IHdpbmRvd19zaXplIC0gMipXU0laRSArIDJcbiAgICAgKiBJbiB0aGUgQklHX01FTSBvciBNTUFQIGNhc2UgKG5vdCB5ZXQgc3VwcG9ydGVkKSxcbiAgICAgKiAgIHdpbmRvd19zaXplID09IGlucHV0X3NpemUgKyBNSU5fTE9PS0FIRUFEICAmJlxuICAgICAqICAgc3Ryc3RhcnQgKyBzLT5sb29rYWhlYWQgPD0gaW5wdXRfc2l6ZSA9PiBtb3JlID49IE1JTl9MT09LQUhFQUQuXG4gICAgICogT3RoZXJ3aXNlLCB3aW5kb3dfc2l6ZSA9PSAyKldTSVpFIHNvIG1vcmUgPj0gMi5cbiAgICAgKiBJZiB0aGVyZSB3YXMgc2xpZGluZywgbW9yZSA+PSBXU0laRS4gU28gaW4gYWxsIGNhc2VzLCBtb3JlID49IDIuXG4gICAgICovXG4gICAgLy9Bc3NlcnQobW9yZSA+PSAyLCBcIm1vcmUgPCAyXCIpO1xuICAgIG4gPSByZWFkX2J1ZihzLnN0cm0sIHMud2luZG93LCBzLnN0cnN0YXJ0ICsgcy5sb29rYWhlYWQsIG1vcmUpO1xuICAgIHMubG9va2FoZWFkICs9IG47XG5cbiAgICAvKiBJbml0aWFsaXplIHRoZSBoYXNoIHZhbHVlIG5vdyB0aGF0IHdlIGhhdmUgc29tZSBpbnB1dDogKi9cbiAgICBpZiAocy5sb29rYWhlYWQgKyBzLmluc2VydCA+PSBNSU5fTUFUQ0gpIHtcbiAgICAgIHN0ciA9IHMuc3Ryc3RhcnQgLSBzLmluc2VydDtcbiAgICAgIHMuaW5zX2ggPSBzLndpbmRvd1tzdHJdO1xuXG4gICAgICAvKiBVUERBVEVfSEFTSChzLCBzLT5pbnNfaCwgcy0+d2luZG93W3N0ciArIDFdKTsgKi9cbiAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3N0ciArIDFdKSAmIHMuaGFzaF9tYXNrO1xuLy8jaWYgTUlOX01BVENIICE9IDNcbi8vICAgICAgICBDYWxsIHVwZGF0ZV9oYXNoKCkgTUlOX01BVENILTMgbW9yZSB0aW1lc1xuLy8jZW5kaWZcbiAgICAgIHdoaWxlIChzLmluc2VydCkge1xuICAgICAgICAvKiBVUERBVEVfSEFTSChzLCBzLT5pbnNfaCwgcy0+d2luZG93W3N0ciArIE1JTl9NQVRDSC0xXSk7ICovXG4gICAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3N0ciArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrO1xuXG4gICAgICAgIHMucHJldltzdHIgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07XG4gICAgICAgIHMuaGVhZFtzLmluc19oXSA9IHN0cjtcbiAgICAgICAgc3RyKys7XG4gICAgICAgIHMuaW5zZXJ0LS07XG4gICAgICAgIGlmIChzLmxvb2thaGVhZCArIHMuaW5zZXJ0IDwgTUlOX01BVENIKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLyogSWYgdGhlIHdob2xlIGlucHV0IGhhcyBsZXNzIHRoYW4gTUlOX01BVENIIGJ5dGVzLCBpbnNfaCBpcyBnYXJiYWdlLFxuICAgICAqIGJ1dCB0aGlzIGlzIG5vdCBpbXBvcnRhbnQgc2luY2Ugb25seSBsaXRlcmFsIGJ5dGVzIHdpbGwgYmUgZW1pdHRlZC5cbiAgICAgKi9cblxuICB9IHdoaWxlIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQgJiYgcy5zdHJtLmF2YWlsX2luICE9PSAwKTtcblxuICAvKiBJZiB0aGUgV0lOX0lOSVQgYnl0ZXMgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBkYXRhIGhhdmUgbmV2ZXIgYmVlblxuICAgKiB3cml0dGVuLCB0aGVuIHplcm8gdGhvc2UgYnl0ZXMgaW4gb3JkZXIgdG8gYXZvaWQgbWVtb3J5IGNoZWNrIHJlcG9ydHMgb2ZcbiAgICogdGhlIHVzZSBvZiB1bmluaXRpYWxpemVkIChvciB1bmluaXRpYWxpc2VkIGFzIEp1bGlhbiB3cml0ZXMpIGJ5dGVzIGJ5XG4gICAqIHRoZSBsb25nZXN0IG1hdGNoIHJvdXRpbmVzLiAgVXBkYXRlIHRoZSBoaWdoIHdhdGVyIG1hcmsgZm9yIHRoZSBuZXh0XG4gICAqIHRpbWUgdGhyb3VnaCBoZXJlLiAgV0lOX0lOSVQgaXMgc2V0IHRvIE1BWF9NQVRDSCBzaW5jZSB0aGUgbG9uZ2VzdCBtYXRjaFxuICAgKiByb3V0aW5lcyBhbGxvdyBzY2FubmluZyB0byBzdHJzdGFydCArIE1BWF9NQVRDSCwgaWdub3JpbmcgbG9va2FoZWFkLlxuICAgKi9cbi8vICBpZiAocy5oaWdoX3dhdGVyIDwgcy53aW5kb3dfc2l6ZSkge1xuLy8gICAgdmFyIGN1cnIgPSBzLnN0cnN0YXJ0ICsgcy5sb29rYWhlYWQ7XG4vLyAgICB2YXIgaW5pdCA9IDA7XG4vL1xuLy8gICAgaWYgKHMuaGlnaF93YXRlciA8IGN1cnIpIHtcbi8vICAgICAgLyogUHJldmlvdXMgaGlnaCB3YXRlciBtYXJrIGJlbG93IGN1cnJlbnQgZGF0YSAtLSB6ZXJvIFdJTl9JTklUXG4vLyAgICAgICAqIGJ5dGVzIG9yIHVwIHRvIGVuZCBvZiB3aW5kb3csIHdoaWNoZXZlciBpcyBsZXNzLlxuLy8gICAgICAgKi9cbi8vICAgICAgaW5pdCA9IHMud2luZG93X3NpemUgLSBjdXJyO1xuLy8gICAgICBpZiAoaW5pdCA+IFdJTl9JTklUKVxuLy8gICAgICAgIGluaXQgPSBXSU5fSU5JVDtcbi8vICAgICAgem1lbXplcm8ocy0+d2luZG93ICsgY3VyciwgKHVuc2lnbmVkKWluaXQpO1xuLy8gICAgICBzLT5oaWdoX3dhdGVyID0gY3VyciArIGluaXQ7XG4vLyAgICB9XG4vLyAgICBlbHNlIGlmIChzLT5oaWdoX3dhdGVyIDwgKHVsZyljdXJyICsgV0lOX0lOSVQpIHtcbi8vICAgICAgLyogSGlnaCB3YXRlciBtYXJrIGF0IG9yIGFib3ZlIGN1cnJlbnQgZGF0YSwgYnV0IGJlbG93IGN1cnJlbnQgZGF0YVxuLy8gICAgICAgKiBwbHVzIFdJTl9JTklUIC0tIHplcm8gb3V0IHRvIGN1cnJlbnQgZGF0YSBwbHVzIFdJTl9JTklULCBvciB1cFxuLy8gICAgICAgKiB0byBlbmQgb2Ygd2luZG93LCB3aGljaGV2ZXIgaXMgbGVzcy5cbi8vICAgICAgICovXG4vLyAgICAgIGluaXQgPSAodWxnKWN1cnIgKyBXSU5fSU5JVCAtIHMtPmhpZ2hfd2F0ZXI7XG4vLyAgICAgIGlmIChpbml0ID4gcy0+d2luZG93X3NpemUgLSBzLT5oaWdoX3dhdGVyKVxuLy8gICAgICAgIGluaXQgPSBzLT53aW5kb3dfc2l6ZSAtIHMtPmhpZ2hfd2F0ZXI7XG4vLyAgICAgIHptZW16ZXJvKHMtPndpbmRvdyArIHMtPmhpZ2hfd2F0ZXIsICh1bnNpZ25lZClpbml0KTtcbi8vICAgICAgcy0+aGlnaF93YXRlciArPSBpbml0O1xuLy8gICAgfVxuLy8gIH1cbi8vXG4vLyAgQXNzZXJ0KCh1bGcpcy0+c3Ryc3RhcnQgPD0gcy0+d2luZG93X3NpemUgLSBNSU5fTE9PS0FIRUFELFxuLy8gICAgXCJub3QgZW5vdWdoIHJvb20gZm9yIHNlYXJjaFwiKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb3B5IHdpdGhvdXQgY29tcHJlc3Npb24gYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBpbnB1dCBzdHJlYW0sIHJldHVyblxuICogdGhlIGN1cnJlbnQgYmxvY2sgc3RhdGUuXG4gKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGluc2VydCBuZXcgc3RyaW5ncyBpbiB0aGUgZGljdGlvbmFyeSBzaW5jZVxuICogdW5jb21wcmVzc2libGUgZGF0YSBpcyBwcm9iYWJseSBub3QgdXNlZnVsLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWRcbiAqIG9ubHkgZm9yIHRoZSBsZXZlbD0wIGNvbXByZXNzaW9uIG9wdGlvbi5cbiAqIE5PVEU6IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIG9wdGltaXplZCB0byBhdm9pZCBleHRyYSBjb3B5aW5nIGZyb21cbiAqIHdpbmRvdyB0byBwZW5kaW5nX2J1Zi5cbiAqL1xuZnVuY3Rpb24gZGVmbGF0ZV9zdG9yZWQocywgZmx1c2gpIHtcbiAgLyogU3RvcmVkIGJsb2NrcyBhcmUgbGltaXRlZCB0byAweGZmZmYgYnl0ZXMsIHBlbmRpbmdfYnVmIGlzIGxpbWl0ZWRcbiAgICogdG8gcGVuZGluZ19idWZfc2l6ZSwgYW5kIGVhY2ggc3RvcmVkIGJsb2NrIGhhcyBhIDUgYnl0ZSBoZWFkZXI6XG4gICAqL1xuICB2YXIgbWF4X2Jsb2NrX3NpemUgPSAweGZmZmY7XG5cbiAgaWYgKG1heF9ibG9ja19zaXplID4gcy5wZW5kaW5nX2J1Zl9zaXplIC0gNSkge1xuICAgIG1heF9ibG9ja19zaXplID0gcy5wZW5kaW5nX2J1Zl9zaXplIC0gNTtcbiAgfVxuXG4gIC8qIENvcHkgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIGlucHV0IHRvIG91dHB1dDogKi9cbiAgZm9yICg7Oykge1xuICAgIC8qIEZpbGwgdGhlIHdpbmRvdyBhcyBtdWNoIGFzIHBvc3NpYmxlOiAqL1xuICAgIGlmIChzLmxvb2thaGVhZCA8PSAxKSB7XG5cbiAgICAgIC8vQXNzZXJ0KHMtPnN0cnN0YXJ0IDwgcy0+d19zaXplK01BWF9ESVNUKHMpIHx8XG4gICAgICAvLyAgcy0+YmxvY2tfc3RhcnQgPj0gKGxvbmcpcy0+d19zaXplLCBcInNsaWRlIHRvbyBsYXRlXCIpO1xuLy8gICAgICBpZiAoIShzLnN0cnN0YXJ0IDwgcy53X3NpemUgKyAocy53X3NpemUgLSBNSU5fTE9PS0FIRUFEKSB8fFxuLy8gICAgICAgIHMuYmxvY2tfc3RhcnQgPj0gcy53X3NpemUpKSB7XG4vLyAgICAgICAgdGhyb3cgIG5ldyBFcnJvcihcInNsaWRlIHRvbyBsYXRlXCIpO1xuLy8gICAgICB9XG5cbiAgICAgIGZpbGxfd2luZG93KHMpO1xuICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwICYmIGZsdXNoID09PSBaX05PX0ZMVVNIKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovXG4gICAgfVxuICAgIC8vQXNzZXJ0KHMtPmJsb2NrX3N0YXJ0ID49IDBMLCBcImJsb2NrIGdvbmVcIik7XG4vLyAgICBpZiAocy5ibG9ja19zdGFydCA8IDApIHRocm93IG5ldyBFcnJvcihcImJsb2NrIGdvbmVcIik7XG5cbiAgICBzLnN0cnN0YXJ0ICs9IHMubG9va2FoZWFkO1xuICAgIHMubG9va2FoZWFkID0gMDtcblxuICAgIC8qIEVtaXQgYSBzdG9yZWQgYmxvY2sgaWYgcGVuZGluZ19idWYgd2lsbCBiZSBmdWxsOiAqL1xuICAgIHZhciBtYXhfc3RhcnQgPSBzLmJsb2NrX3N0YXJ0ICsgbWF4X2Jsb2NrX3NpemU7XG5cbiAgICBpZiAocy5zdHJzdGFydCA9PT0gMCB8fCBzLnN0cnN0YXJ0ID49IG1heF9zdGFydCkge1xuICAgICAgLyogc3Ryc3RhcnQgPT0gMCBpcyBwb3NzaWJsZSB3aGVuIHdyYXBhcm91bmQgb24gMTYtYml0IG1hY2hpbmUgKi9cbiAgICAgIHMubG9va2FoZWFkID0gcy5zdHJzdGFydCAtIG1heF9zdGFydDtcbiAgICAgIHMuc3Ryc3RhcnQgPSBtYXhfc3RhcnQ7XG4gICAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovXG4gICAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG4gICAgICAvKioqL1xuXG5cbiAgICB9XG4gICAgLyogRmx1c2ggaWYgd2UgbWF5IGhhdmUgdG8gc2xpZGUsIG90aGVyd2lzZSBibG9ja19zdGFydCBtYXkgYmVjb21lXG4gICAgICogbmVnYXRpdmUgYW5kIHRoZSBkYXRhIHdpbGwgYmUgZ29uZTpcbiAgICAgKi9cbiAgICBpZiAocy5zdHJzdGFydCAtIHMuYmxvY2tfc3RhcnQgPj0gKHMud19zaXplIC0gTUlOX0xPT0tBSEVBRCkpIHtcbiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIC8qKiovXG4gICAgfVxuICB9XG5cbiAgcy5pbnNlcnQgPSAwO1xuXG4gIGlmIChmbHVzaCA9PT0gWl9GSU5JU0gpIHtcbiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovXG4gICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEO1xuICAgIH1cbiAgICAvKioqL1xuICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTtcbiAgfVxuXG4gIGlmIChzLnN0cnN0YXJ0ID4gcy5ibG9ja19zdGFydCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICB9XG4gICAgLyoqKi9cbiAgfVxuXG4gIHJldHVybiBCU19ORUVEX01PUkU7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29tcHJlc3MgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBpbnB1dCBzdHJlYW0sIHJldHVybiB0aGUgY3VycmVudFxuICogYmxvY2sgc3RhdGUuXG4gKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHBlcmZvcm0gbGF6eSBldmFsdWF0aW9uIG9mIG1hdGNoZXMgYW5kIGluc2VydHNcbiAqIG5ldyBzdHJpbmdzIGluIHRoZSBkaWN0aW9uYXJ5IG9ubHkgZm9yIHVubWF0Y2hlZCBzdHJpbmdzIG9yIGZvciBzaG9ydFxuICogbWF0Y2hlcy4gSXQgaXMgdXNlZCBvbmx5IGZvciB0aGUgZmFzdCBjb21wcmVzc2lvbiBvcHRpb25zLlxuICovXG5mdW5jdGlvbiBkZWZsYXRlX2Zhc3QocywgZmx1c2gpIHtcbiAgdmFyIGhhc2hfaGVhZDsgICAgICAgIC8qIGhlYWQgb2YgdGhlIGhhc2ggY2hhaW4gKi9cbiAgdmFyIGJmbHVzaDsgICAgICAgICAgIC8qIHNldCBpZiBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZCAqL1xuXG4gIGZvciAoOzspIHtcbiAgICAvKiBNYWtlIHN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBlbm91Z2ggbG9va2FoZWFkLCBleGNlcHRcbiAgICAgKiBhdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCBmaWxlLiBXZSBuZWVkIE1BWF9NQVRDSCBieXRlc1xuICAgICAqIGZvciB0aGUgbmV4dCBtYXRjaCwgcGx1cyBNSU5fTUFUQ0ggYnl0ZXMgdG8gaW5zZXJ0IHRoZVxuICAgICAqIHN0cmluZyBmb2xsb3dpbmcgdGhlIG5leHQgbWF0Y2guXG4gICAgICovXG4gICAgaWYgKHMubG9va2FoZWFkIDwgTUlOX0xPT0tBSEVBRCkge1xuICAgICAgZmlsbF93aW5kb3cocyk7XG4gICAgICBpZiAocy5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEICYmIGZsdXNoID09PSBaX05PX0ZMVVNIKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG4gICAgICBpZiAocy5sb29rYWhlYWQgPT09IDApIHtcbiAgICAgICAgYnJlYWs7IC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovXG4gICAgICB9XG4gICAgfVxuXG4gICAgLyogSW5zZXJ0IHRoZSBzdHJpbmcgd2luZG93W3N0cnN0YXJ0IC4uIHN0cnN0YXJ0KzJdIGluIHRoZVxuICAgICAqIGRpY3Rpb25hcnksIGFuZCBzZXQgaGFzaF9oZWFkIHRvIHRoZSBoZWFkIG9mIHRoZSBoYXNoIGNoYWluOlxuICAgICAqL1xuICAgIGhhc2hfaGVhZCA9IDAvKk5JTCovO1xuICAgIGlmIChzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0gpIHtcbiAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovXG4gICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG4gICAgICBoYXNoX2hlYWQgPSBzLnByZXZbcy5zdHJzdGFydCAmIHMud19tYXNrXSA9IHMuaGVhZFtzLmluc19oXTtcbiAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7XG4gICAgICAvKioqL1xuICAgIH1cblxuICAgIC8qIEZpbmQgdGhlIGxvbmdlc3QgbWF0Y2gsIGRpc2NhcmRpbmcgdGhvc2UgPD0gcHJldl9sZW5ndGguXG4gICAgICogQXQgdGhpcyBwb2ludCB3ZSBoYXZlIGFsd2F5cyBtYXRjaF9sZW5ndGggPCBNSU5fTUFUQ0hcbiAgICAgKi9cbiAgICBpZiAoaGFzaF9oZWFkICE9PSAwLypOSUwqLyAmJiAoKHMuc3Ryc3RhcnQgLSBoYXNoX2hlYWQpIDw9IChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpKSkge1xuICAgICAgLyogVG8gc2ltcGxpZnkgdGhlIGNvZGUsIHdlIHByZXZlbnQgbWF0Y2hlcyB3aXRoIHRoZSBzdHJpbmdcbiAgICAgICAqIG9mIHdpbmRvdyBpbmRleCAwIChpbiBwYXJ0aWN1bGFyIHdlIGhhdmUgdG8gYXZvaWQgYSBtYXRjaFxuICAgICAgICogb2YgdGhlIHN0cmluZyB3aXRoIGl0c2VsZiBhdCB0aGUgc3RhcnQgb2YgdGhlIGlucHV0IGZpbGUpLlxuICAgICAgICovXG4gICAgICBzLm1hdGNoX2xlbmd0aCA9IGxvbmdlc3RfbWF0Y2gocywgaGFzaF9oZWFkKTtcbiAgICAgIC8qIGxvbmdlc3RfbWF0Y2goKSBzZXRzIG1hdGNoX3N0YXJ0ICovXG4gICAgfVxuICAgIGlmIChzLm1hdGNoX2xlbmd0aCA+PSBNSU5fTUFUQ0gpIHtcbiAgICAgIC8vIGNoZWNrX21hdGNoKHMsIHMuc3Ryc3RhcnQsIHMubWF0Y2hfc3RhcnQsIHMubWF0Y2hfbGVuZ3RoKTsgLy8gZm9yIGRlYnVnIG9ubHlcblxuICAgICAgLyoqKiBfdHJfdGFsbHlfZGlzdChzLCBzLnN0cnN0YXJ0IC0gcy5tYXRjaF9zdGFydCxcbiAgICAgICAgICAgICAgICAgICAgIHMubWF0Y2hfbGVuZ3RoIC0gTUlOX01BVENILCBiZmx1c2gpOyAqKiovXG4gICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgcy5zdHJzdGFydCAtIHMubWF0Y2hfc3RhcnQsIHMubWF0Y2hfbGVuZ3RoIC0gTUlOX01BVENIKTtcblxuICAgICAgcy5sb29rYWhlYWQgLT0gcy5tYXRjaF9sZW5ndGg7XG5cbiAgICAgIC8qIEluc2VydCBuZXcgc3RyaW5ncyBpbiB0aGUgaGFzaCB0YWJsZSBvbmx5IGlmIHRoZSBtYXRjaCBsZW5ndGhcbiAgICAgICAqIGlzIG5vdCB0b28gbGFyZ2UuIFRoaXMgc2F2ZXMgdGltZSBidXQgZGVncmFkZXMgY29tcHJlc3Npb24uXG4gICAgICAgKi9cbiAgICAgIGlmIChzLm1hdGNoX2xlbmd0aCA8PSBzLm1heF9sYXp5X21hdGNoLyptYXhfaW5zZXJ0X2xlbmd0aCovICYmIHMubG9va2FoZWFkID49IE1JTl9NQVRDSCkge1xuICAgICAgICBzLm1hdGNoX2xlbmd0aC0tOyAvKiBzdHJpbmcgYXQgc3Ryc3RhcnQgYWxyZWFkeSBpbiB0YWJsZSAqL1xuICAgICAgICBkbyB7XG4gICAgICAgICAgcy5zdHJzdGFydCsrO1xuICAgICAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovXG4gICAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrO1xuICAgICAgICAgIGhhc2hfaGVhZCA9IHMucHJldltzLnN0cnN0YXJ0ICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdO1xuICAgICAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7XG4gICAgICAgICAgLyoqKi9cbiAgICAgICAgICAvKiBzdHJzdGFydCBuZXZlciBleGNlZWRzIFdTSVpFLU1BWF9NQVRDSCwgc28gdGhlcmUgYXJlXG4gICAgICAgICAgICogYWx3YXlzIE1JTl9NQVRDSCBieXRlcyBhaGVhZC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgfSB3aGlsZSAoLS1zLm1hdGNoX2xlbmd0aCAhPT0gMCk7XG4gICAgICAgIHMuc3Ryc3RhcnQrKztcbiAgICAgIH0gZWxzZVxuICAgICAge1xuICAgICAgICBzLnN0cnN0YXJ0ICs9IHMubWF0Y2hfbGVuZ3RoO1xuICAgICAgICBzLm1hdGNoX2xlbmd0aCA9IDA7XG4gICAgICAgIHMuaW5zX2ggPSBzLndpbmRvd1tzLnN0cnN0YXJ0XTtcbiAgICAgICAgLyogVVBEQVRFX0hBU0gocywgcy5pbnNfaCwgcy53aW5kb3dbcy5zdHJzdGFydCsxXSk7ICovXG4gICAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3Muc3Ryc3RhcnQgKyAxXSkgJiBzLmhhc2hfbWFzaztcblxuLy8jaWYgTUlOX01BVENIICE9IDNcbi8vICAgICAgICAgICAgICAgIENhbGwgVVBEQVRFX0hBU0goKSBNSU5fTUFUQ0gtMyBtb3JlIHRpbWVzXG4vLyNlbmRpZlxuICAgICAgICAvKiBJZiBsb29rYWhlYWQgPCBNSU5fTUFUQ0gsIGluc19oIGlzIGdhcmJhZ2UsIGJ1dCBpdCBkb2VzIG5vdFxuICAgICAgICAgKiBtYXR0ZXIgc2luY2UgaXQgd2lsbCBiZSByZWNvbXB1dGVkIGF0IG5leHQgZGVmbGF0ZSBjYWxsLlxuICAgICAgICAgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLyogTm8gbWF0Y2gsIG91dHB1dCBhIGxpdGVyYWwgYnl0ZSAqL1xuICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsXCIlY1wiLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSkpO1xuICAgICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnRdLCBiZmx1c2gpOyAqKiovXG4gICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMCwgcy53aW5kb3dbcy5zdHJzdGFydF0pO1xuXG4gICAgICBzLmxvb2thaGVhZC0tO1xuICAgICAgcy5zdHJzdGFydCsrO1xuICAgIH1cbiAgICBpZiAoYmZsdXNoKSB7XG4gICAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovXG4gICAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG4gICAgICAvKioqL1xuICAgIH1cbiAgfVxuICBzLmluc2VydCA9ICgocy5zdHJzdGFydCA8IChNSU5fTUFUQ0ggLSAxKSkgPyBzLnN0cnN0YXJ0IDogTUlOX01BVENIIC0gMSk7XG4gIGlmIChmbHVzaCA9PT0gWl9GSU5JU0gpIHtcbiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovXG4gICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEO1xuICAgIH1cbiAgICAvKioqL1xuICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTtcbiAgfVxuICBpZiAocy5sYXN0X2xpdCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICB9XG4gICAgLyoqKi9cbiAgfVxuICByZXR1cm4gQlNfQkxPQ0tfRE9ORTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTYW1lIGFzIGFib3ZlLCBidXQgYWNoaWV2ZXMgYmV0dGVyIGNvbXByZXNzaW9uLiBXZSB1c2UgYSBsYXp5XG4gKiBldmFsdWF0aW9uIGZvciBtYXRjaGVzOiBhIG1hdGNoIGlzIGZpbmFsbHkgYWRvcHRlZCBvbmx5IGlmIHRoZXJlIGlzXG4gKiBubyBiZXR0ZXIgbWF0Y2ggYXQgdGhlIG5leHQgd2luZG93IHBvc2l0aW9uLlxuICovXG5mdW5jdGlvbiBkZWZsYXRlX3Nsb3cocywgZmx1c2gpIHtcbiAgdmFyIGhhc2hfaGVhZDsgICAgICAgICAgLyogaGVhZCBvZiBoYXNoIGNoYWluICovXG4gIHZhciBiZmx1c2g7ICAgICAgICAgICAgICAvKiBzZXQgaWYgY3VycmVudCBibG9jayBtdXN0IGJlIGZsdXNoZWQgKi9cblxuICB2YXIgbWF4X2luc2VydDtcblxuICAvKiBQcm9jZXNzIHRoZSBpbnB1dCBibG9jay4gKi9cbiAgZm9yICg7Oykge1xuICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGVub3VnaCBsb29rYWhlYWQsIGV4Y2VwdFxuICAgICAqIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0IGZpbGUuIFdlIG5lZWQgTUFYX01BVENIIGJ5dGVzXG4gICAgICogZm9yIHRoZSBuZXh0IG1hdGNoLCBwbHVzIE1JTl9NQVRDSCBieXRlcyB0byBpbnNlcnQgdGhlXG4gICAgICogc3RyaW5nIGZvbGxvd2luZyB0aGUgbmV4dCBtYXRjaC5cbiAgICAgKi9cbiAgICBpZiAocy5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEKSB7XG4gICAgICBmaWxsX3dpbmRvdyhzKTtcbiAgICAgIGlmIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQgJiYgZmx1c2ggPT09IFpfTk9fRkxVU0gpIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkgeyBicmVhazsgfSAvKiBmbHVzaCB0aGUgY3VycmVudCBibG9jayAqL1xuICAgIH1cblxuICAgIC8qIEluc2VydCB0aGUgc3RyaW5nIHdpbmRvd1tzdHJzdGFydCAuLiBzdHJzdGFydCsyXSBpbiB0aGVcbiAgICAgKiBkaWN0aW9uYXJ5LCBhbmQgc2V0IGhhc2hfaGVhZCB0byB0aGUgaGVhZCBvZiB0aGUgaGFzaCBjaGFpbjpcbiAgICAgKi9cbiAgICBoYXNoX2hlYWQgPSAwLypOSUwqLztcbiAgICBpZiAocy5sb29rYWhlYWQgPj0gTUlOX01BVENIKSB7XG4gICAgICAvKioqIElOU0VSVF9TVFJJTkcocywgcy5zdHJzdGFydCwgaGFzaF9oZWFkKTsgKioqL1xuICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrO1xuICAgICAgaGFzaF9oZWFkID0gcy5wcmV2W3Muc3Ryc3RhcnQgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07XG4gICAgICBzLmhlYWRbcy5pbnNfaF0gPSBzLnN0cnN0YXJ0O1xuICAgICAgLyoqKi9cbiAgICB9XG5cbiAgICAvKiBGaW5kIHRoZSBsb25nZXN0IG1hdGNoLCBkaXNjYXJkaW5nIHRob3NlIDw9IHByZXZfbGVuZ3RoLlxuICAgICAqL1xuICAgIHMucHJldl9sZW5ndGggPSBzLm1hdGNoX2xlbmd0aDtcbiAgICBzLnByZXZfbWF0Y2ggPSBzLm1hdGNoX3N0YXJ0O1xuICAgIHMubWF0Y2hfbGVuZ3RoID0gTUlOX01BVENIIC0gMTtcblxuICAgIGlmIChoYXNoX2hlYWQgIT09IDAvKk5JTCovICYmIHMucHJldl9sZW5ndGggPCBzLm1heF9sYXp5X21hdGNoICYmXG4gICAgICAgIHMuc3Ryc3RhcnQgLSBoYXNoX2hlYWQgPD0gKHMud19zaXplIC0gTUlOX0xPT0tBSEVBRCkvKk1BWF9ESVNUKHMpKi8pIHtcbiAgICAgIC8qIFRvIHNpbXBsaWZ5IHRoZSBjb2RlLCB3ZSBwcmV2ZW50IG1hdGNoZXMgd2l0aCB0aGUgc3RyaW5nXG4gICAgICAgKiBvZiB3aW5kb3cgaW5kZXggMCAoaW4gcGFydGljdWxhciB3ZSBoYXZlIHRvIGF2b2lkIGEgbWF0Y2hcbiAgICAgICAqIG9mIHRoZSBzdHJpbmcgd2l0aCBpdHNlbGYgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnB1dCBmaWxlKS5cbiAgICAgICAqL1xuICAgICAgcy5tYXRjaF9sZW5ndGggPSBsb25nZXN0X21hdGNoKHMsIGhhc2hfaGVhZCk7XG4gICAgICAvKiBsb25nZXN0X21hdGNoKCkgc2V0cyBtYXRjaF9zdGFydCAqL1xuXG4gICAgICBpZiAocy5tYXRjaF9sZW5ndGggPD0gNSAmJlxuICAgICAgICAgKHMuc3RyYXRlZ3kgPT09IFpfRklMVEVSRUQgfHwgKHMubWF0Y2hfbGVuZ3RoID09PSBNSU5fTUFUQ0ggJiYgcy5zdHJzdGFydCAtIHMubWF0Y2hfc3RhcnQgPiA0MDk2LypUT09fRkFSKi8pKSkge1xuXG4gICAgICAgIC8qIElmIHByZXZfbWF0Y2ggaXMgYWxzbyBNSU5fTUFUQ0gsIG1hdGNoX3N0YXJ0IGlzIGdhcmJhZ2VcbiAgICAgICAgICogYnV0IHdlIHdpbGwgaWdub3JlIHRoZSBjdXJyZW50IG1hdGNoIGFueXdheS5cbiAgICAgICAgICovXG4gICAgICAgIHMubWF0Y2hfbGVuZ3RoID0gTUlOX01BVENIIC0gMTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyogSWYgdGhlcmUgd2FzIGEgbWF0Y2ggYXQgdGhlIHByZXZpb3VzIHN0ZXAgYW5kIHRoZSBjdXJyZW50XG4gICAgICogbWF0Y2ggaXMgbm90IGJldHRlciwgb3V0cHV0IHRoZSBwcmV2aW91cyBtYXRjaDpcbiAgICAgKi9cbiAgICBpZiAocy5wcmV2X2xlbmd0aCA+PSBNSU5fTUFUQ0ggJiYgcy5tYXRjaF9sZW5ndGggPD0gcy5wcmV2X2xlbmd0aCkge1xuICAgICAgbWF4X2luc2VydCA9IHMuc3Ryc3RhcnQgKyBzLmxvb2thaGVhZCAtIE1JTl9NQVRDSDtcbiAgICAgIC8qIERvIG5vdCBpbnNlcnQgc3RyaW5ncyBpbiBoYXNoIHRhYmxlIGJleW9uZCB0aGlzLiAqL1xuXG4gICAgICAvL2NoZWNrX21hdGNoKHMsIHMuc3Ryc3RhcnQtMSwgcy5wcmV2X21hdGNoLCBzLnByZXZfbGVuZ3RoKTtcblxuICAgICAgLyoqKl90cl90YWxseV9kaXN0KHMsIHMuc3Ryc3RhcnQgLSAxIC0gcy5wcmV2X21hdGNoLFxuICAgICAgICAgICAgICAgICAgICAgcy5wcmV2X2xlbmd0aCAtIE1JTl9NQVRDSCwgYmZsdXNoKTsqKiovXG4gICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgcy5zdHJzdGFydCAtIDEgLSBzLnByZXZfbWF0Y2gsIHMucHJldl9sZW5ndGggLSBNSU5fTUFUQ0gpO1xuICAgICAgLyogSW5zZXJ0IGluIGhhc2ggdGFibGUgYWxsIHN0cmluZ3MgdXAgdG8gdGhlIGVuZCBvZiB0aGUgbWF0Y2guXG4gICAgICAgKiBzdHJzdGFydC0xIGFuZCBzdHJzdGFydCBhcmUgYWxyZWFkeSBpbnNlcnRlZC4gSWYgdGhlcmUgaXMgbm90XG4gICAgICAgKiBlbm91Z2ggbG9va2FoZWFkLCB0aGUgbGFzdCB0d28gc3RyaW5ncyBhcmUgbm90IGluc2VydGVkIGluXG4gICAgICAgKiB0aGUgaGFzaCB0YWJsZS5cbiAgICAgICAqL1xuICAgICAgcy5sb29rYWhlYWQgLT0gcy5wcmV2X2xlbmd0aCAtIDE7XG4gICAgICBzLnByZXZfbGVuZ3RoIC09IDI7XG4gICAgICBkbyB7XG4gICAgICAgIGlmICgrK3Muc3Ryc3RhcnQgPD0gbWF4X2luc2VydCkge1xuICAgICAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovXG4gICAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrO1xuICAgICAgICAgIGhhc2hfaGVhZCA9IHMucHJldltzLnN0cnN0YXJ0ICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdO1xuICAgICAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7XG4gICAgICAgICAgLyoqKi9cbiAgICAgICAgfVxuICAgICAgfSB3aGlsZSAoLS1zLnByZXZfbGVuZ3RoICE9PSAwKTtcbiAgICAgIHMubWF0Y2hfYXZhaWxhYmxlID0gMDtcbiAgICAgIHMubWF0Y2hfbGVuZ3RoID0gTUlOX01BVENIIC0gMTtcbiAgICAgIHMuc3Ryc3RhcnQrKztcblxuICAgICAgaWYgKGJmbHVzaCkge1xuICAgICAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovXG4gICAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICAgIH1cbiAgICAgICAgLyoqKi9cbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAocy5tYXRjaF9hdmFpbGFibGUpIHtcbiAgICAgIC8qIElmIHRoZXJlIHdhcyBubyBtYXRjaCBhdCB0aGUgcHJldmlvdXMgcG9zaXRpb24sIG91dHB1dCBhXG4gICAgICAgKiBzaW5nbGUgbGl0ZXJhbC4gSWYgdGhlcmUgd2FzIGEgbWF0Y2ggYnV0IHRoZSBjdXJyZW50IG1hdGNoXG4gICAgICAgKiBpcyBsb25nZXIsIHRydW5jYXRlIHRoZSBwcmV2aW91cyBtYXRjaCB0byBhIHNpbmdsZSBsaXRlcmFsLlxuICAgICAgICovXG4gICAgICAvL1RyYWNldnYoKHN0ZGVycixcIiVjXCIsIHMtPndpbmRvd1tzLT5zdHJzdGFydC0xXSkpO1xuICAgICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnQtMV0sIGJmbHVzaCk7ICoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0IC0gMV0pO1xuXG4gICAgICBpZiAoYmZsdXNoKSB7XG4gICAgICAgIC8qKiogRkxVU0hfQkxPQ0tfT05MWShzLCAwKSAqKiovXG4gICAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgICAvKioqL1xuICAgICAgfVxuICAgICAgcy5zdHJzdGFydCsrO1xuICAgICAgcy5sb29rYWhlYWQtLTtcbiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIFRoZXJlIGlzIG5vIHByZXZpb3VzIG1hdGNoIHRvIGNvbXBhcmUgd2l0aCwgd2FpdCBmb3JcbiAgICAgICAqIHRoZSBuZXh0IHN0ZXAgdG8gZGVjaWRlLlxuICAgICAgICovXG4gICAgICBzLm1hdGNoX2F2YWlsYWJsZSA9IDE7XG4gICAgICBzLnN0cnN0YXJ0Kys7XG4gICAgICBzLmxvb2thaGVhZC0tO1xuICAgIH1cbiAgfVxuICAvL0Fzc2VydCAoZmx1c2ggIT0gWl9OT19GTFVTSCwgXCJubyBmbHVzaD9cIik7XG4gIGlmIChzLm1hdGNoX2F2YWlsYWJsZSkge1xuICAgIC8vVHJhY2V2digoc3RkZXJyLFwiJWNcIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0LTFdKSk7XG4gICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnQtMV0sIGJmbHVzaCk7ICoqKi9cbiAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMCwgcy53aW5kb3dbcy5zdHJzdGFydCAtIDFdKTtcblxuICAgIHMubWF0Y2hfYXZhaWxhYmxlID0gMDtcbiAgfVxuICBzLmluc2VydCA9IHMuc3Ryc3RhcnQgPCBNSU5fTUFUQ0ggLSAxID8gcy5zdHJzdGFydCA6IE1JTl9NQVRDSCAtIDE7XG4gIGlmIChmbHVzaCA9PT0gWl9GSU5JU0gpIHtcbiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovXG4gICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEO1xuICAgIH1cbiAgICAvKioqL1xuICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTtcbiAgfVxuICBpZiAocy5sYXN0X2xpdCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICB9XG4gICAgLyoqKi9cbiAgfVxuXG4gIHJldHVybiBCU19CTE9DS19ET05FO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogRm9yIFpfUkxFLCBzaW1wbHkgbG9vayBmb3IgcnVucyBvZiBieXRlcywgZ2VuZXJhdGUgbWF0Y2hlcyBvbmx5IG9mIGRpc3RhbmNlXG4gKiBvbmUuICBEbyBub3QgbWFpbnRhaW4gYSBoYXNoIHRhYmxlLiAgKEl0IHdpbGwgYmUgcmVnZW5lcmF0ZWQgaWYgdGhpcyBydW4gb2ZcbiAqIGRlZmxhdGUgc3dpdGNoZXMgYXdheSBmcm9tIFpfUkxFLilcbiAqL1xuZnVuY3Rpb24gZGVmbGF0ZV9ybGUocywgZmx1c2gpIHtcbiAgdmFyIGJmbHVzaDsgICAgICAgICAgICAvKiBzZXQgaWYgY3VycmVudCBibG9jayBtdXN0IGJlIGZsdXNoZWQgKi9cbiAgdmFyIHByZXY7ICAgICAgICAgICAgICAvKiBieXRlIGF0IGRpc3RhbmNlIG9uZSB0byBtYXRjaCAqL1xuICB2YXIgc2Nhbiwgc3RyZW5kOyAgICAgIC8qIHNjYW4gZ29lcyB1cCB0byBzdHJlbmQgZm9yIGxlbmd0aCBvZiBydW4gKi9cblxuICB2YXIgX3dpbiA9IHMud2luZG93O1xuXG4gIGZvciAoOzspIHtcbiAgICAvKiBNYWtlIHN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBlbm91Z2ggbG9va2FoZWFkLCBleGNlcHRcbiAgICAgKiBhdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCBmaWxlLiBXZSBuZWVkIE1BWF9NQVRDSCBieXRlc1xuICAgICAqIGZvciB0aGUgbG9uZ2VzdCBydW4sIHBsdXMgb25lIGZvciB0aGUgdW5yb2xsZWQgbG9vcC5cbiAgICAgKi9cbiAgICBpZiAocy5sb29rYWhlYWQgPD0gTUFYX01BVENIKSB7XG4gICAgICBmaWxsX3dpbmRvdyhzKTtcbiAgICAgIGlmIChzLmxvb2thaGVhZCA8PSBNQVhfTUFUQ0ggJiYgZmx1c2ggPT09IFpfTk9fRkxVU0gpIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkgeyBicmVhazsgfSAvKiBmbHVzaCB0aGUgY3VycmVudCBibG9jayAqL1xuICAgIH1cblxuICAgIC8qIFNlZSBob3cgbWFueSB0aW1lcyB0aGUgcHJldmlvdXMgYnl0ZSByZXBlYXRzICovXG4gICAgcy5tYXRjaF9sZW5ndGggPSAwO1xuICAgIGlmIChzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0ggJiYgcy5zdHJzdGFydCA+IDApIHtcbiAgICAgIHNjYW4gPSBzLnN0cnN0YXJ0IC0gMTtcbiAgICAgIHByZXYgPSBfd2luW3NjYW5dO1xuICAgICAgaWYgKHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dKSB7XG4gICAgICAgIHN0cmVuZCA9IHMuc3Ryc3RhcnQgKyBNQVhfTUFUQ0g7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAvKmpzaGludCBub2VtcHR5OmZhbHNlKi9cbiAgICAgICAgfSB3aGlsZSAocHJldiA9PT0gX3dpblsrK3NjYW5dICYmIHByZXYgPT09IF93aW5bKytzY2FuXSAmJlxuICAgICAgICAgICAgICAgICBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmXG4gICAgICAgICAgICAgICAgIHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiZcbiAgICAgICAgICAgICAgICAgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmIHByZXYgPT09IF93aW5bKytzY2FuXSAmJlxuICAgICAgICAgICAgICAgICBzY2FuIDwgc3RyZW5kKTtcbiAgICAgICAgcy5tYXRjaF9sZW5ndGggPSBNQVhfTUFUQ0ggLSAoc3RyZW5kIC0gc2Nhbik7XG4gICAgICAgIGlmIChzLm1hdGNoX2xlbmd0aCA+IHMubG9va2FoZWFkKSB7XG4gICAgICAgICAgcy5tYXRjaF9sZW5ndGggPSBzLmxvb2thaGVhZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy9Bc3NlcnQoc2NhbiA8PSBzLT53aW5kb3crKHVJbnQpKHMtPndpbmRvd19zaXplLTEpLCBcIndpbGQgc2NhblwiKTtcbiAgICB9XG5cbiAgICAvKiBFbWl0IG1hdGNoIGlmIGhhdmUgcnVuIG9mIE1JTl9NQVRDSCBvciBsb25nZXIsIGVsc2UgZW1pdCBsaXRlcmFsICovXG4gICAgaWYgKHMubWF0Y2hfbGVuZ3RoID49IE1JTl9NQVRDSCkge1xuICAgICAgLy9jaGVja19tYXRjaChzLCBzLnN0cnN0YXJ0LCBzLnN0cnN0YXJ0IC0gMSwgcy5tYXRjaF9sZW5ndGgpO1xuXG4gICAgICAvKioqIF90cl90YWxseV9kaXN0KHMsIDEsIHMubWF0Y2hfbGVuZ3RoIC0gTUlOX01BVENILCBiZmx1c2gpOyAqKiovXG4gICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMSwgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gpO1xuXG4gICAgICBzLmxvb2thaGVhZCAtPSBzLm1hdGNoX2xlbmd0aDtcbiAgICAgIHMuc3Ryc3RhcnQgKz0gcy5tYXRjaF9sZW5ndGg7XG4gICAgICBzLm1hdGNoX2xlbmd0aCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIE5vIG1hdGNoLCBvdXRwdXQgYSBsaXRlcmFsIGJ5dGUgKi9cbiAgICAgIC8vVHJhY2V2digoc3RkZXJyLFwiJWNcIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0XSkpO1xuICAgICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnRdLCBiZmx1c2gpOyAqKiovXG4gICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMCwgcy53aW5kb3dbcy5zdHJzdGFydF0pO1xuXG4gICAgICBzLmxvb2thaGVhZC0tO1xuICAgICAgcy5zdHJzdGFydCsrO1xuICAgIH1cbiAgICBpZiAoYmZsdXNoKSB7XG4gICAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovXG4gICAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG4gICAgICAvKioqL1xuICAgIH1cbiAgfVxuICBzLmluc2VydCA9IDA7XG4gIGlmIChmbHVzaCA9PT0gWl9GSU5JU0gpIHtcbiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovXG4gICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEO1xuICAgIH1cbiAgICAvKioqL1xuICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTtcbiAgfVxuICBpZiAocy5sYXN0X2xpdCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICB9XG4gICAgLyoqKi9cbiAgfVxuICByZXR1cm4gQlNfQkxPQ0tfRE9ORTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBGb3IgWl9IVUZGTUFOX09OTFksIGRvIG5vdCBsb29rIGZvciBtYXRjaGVzLiAgRG8gbm90IG1haW50YWluIGEgaGFzaCB0YWJsZS5cbiAqIChJdCB3aWxsIGJlIHJlZ2VuZXJhdGVkIGlmIHRoaXMgcnVuIG9mIGRlZmxhdGUgc3dpdGNoZXMgYXdheSBmcm9tIEh1ZmZtYW4uKVxuICovXG5mdW5jdGlvbiBkZWZsYXRlX2h1ZmYocywgZmx1c2gpIHtcbiAgdmFyIGJmbHVzaDsgICAgICAgICAgICAgLyogc2V0IGlmIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkICovXG5cbiAgZm9yICg7Oykge1xuICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGhhdmUgYSBsaXRlcmFsIHRvIHdyaXRlLiAqL1xuICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkge1xuICAgICAgZmlsbF93aW5kb3cocyk7XG4gICAgICBpZiAocy5sb29rYWhlYWQgPT09IDApIHtcbiAgICAgICAgaWYgKGZsdXNoID09PSBaX05PX0ZMVVNIKSB7XG4gICAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgICAgfVxuICAgICAgICBicmVhazsgICAgICAvKiBmbHVzaCB0aGUgY3VycmVudCBibG9jayAqL1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qIE91dHB1dCBhIGxpdGVyYWwgYnl0ZSAqL1xuICAgIHMubWF0Y2hfbGVuZ3RoID0gMDtcbiAgICAvL1RyYWNldnYoKHN0ZGVycixcIiVjXCIsIHMtPndpbmRvd1tzLT5zdHJzdGFydF0pKTtcbiAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydF0sIGJmbHVzaCk7ICoqKi9cbiAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMCwgcy53aW5kb3dbcy5zdHJzdGFydF0pO1xuICAgIHMubG9va2FoZWFkLS07XG4gICAgcy5zdHJzdGFydCsrO1xuICAgIGlmIChiZmx1c2gpIHtcbiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIC8qKiovXG4gICAgfVxuICB9XG4gIHMuaW5zZXJ0ID0gMDtcbiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMSk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7XG4gICAgfVxuICAgIC8qKiovXG4gICAgcmV0dXJuIEJTX0ZJTklTSF9ET05FO1xuICB9XG4gIGlmIChzLmxhc3RfbGl0KSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgIH1cbiAgICAvKioqL1xuICB9XG4gIHJldHVybiBCU19CTE9DS19ET05FO1xufVxuXG4vKiBWYWx1ZXMgZm9yIG1heF9sYXp5X21hdGNoLCBnb29kX21hdGNoIGFuZCBtYXhfY2hhaW5fbGVuZ3RoLCBkZXBlbmRpbmcgb25cbiAqIHRoZSBkZXNpcmVkIHBhY2sgbGV2ZWwgKDAuLjkpLiBUaGUgdmFsdWVzIGdpdmVuIGJlbG93IGhhdmUgYmVlbiB0dW5lZCB0b1xuICogZXhjbHVkZSB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIGZvciBwYXRob2xvZ2ljYWwgZmlsZXMuIEJldHRlciB2YWx1ZXMgbWF5IGJlXG4gKiBmb3VuZCBmb3Igc3BlY2lmaWMgZmlsZXMuXG4gKi9cbmZ1bmN0aW9uIENvbmZpZyhnb29kX2xlbmd0aCwgbWF4X2xhenksIG5pY2VfbGVuZ3RoLCBtYXhfY2hhaW4sIGZ1bmMpIHtcbiAgdGhpcy5nb29kX2xlbmd0aCA9IGdvb2RfbGVuZ3RoO1xuICB0aGlzLm1heF9sYXp5ID0gbWF4X2xhenk7XG4gIHRoaXMubmljZV9sZW5ndGggPSBuaWNlX2xlbmd0aDtcbiAgdGhpcy5tYXhfY2hhaW4gPSBtYXhfY2hhaW47XG4gIHRoaXMuZnVuYyA9IGZ1bmM7XG59XG5cbnZhciBjb25maWd1cmF0aW9uX3RhYmxlO1xuXG5jb25maWd1cmF0aW9uX3RhYmxlID0gW1xuICAvKiAgICAgIGdvb2QgbGF6eSBuaWNlIGNoYWluICovXG4gIG5ldyBDb25maWcoMCwgMCwgMCwgMCwgZGVmbGF0ZV9zdG9yZWQpLCAgICAgICAgICAvKiAwIHN0b3JlIG9ubHkgKi9cbiAgbmV3IENvbmZpZyg0LCA0LCA4LCA0LCBkZWZsYXRlX2Zhc3QpLCAgICAgICAgICAgIC8qIDEgbWF4IHNwZWVkLCBubyBsYXp5IG1hdGNoZXMgKi9cbiAgbmV3IENvbmZpZyg0LCA1LCAxNiwgOCwgZGVmbGF0ZV9mYXN0KSwgICAgICAgICAgIC8qIDIgKi9cbiAgbmV3IENvbmZpZyg0LCA2LCAzMiwgMzIsIGRlZmxhdGVfZmFzdCksICAgICAgICAgIC8qIDMgKi9cblxuICBuZXcgQ29uZmlnKDQsIDQsIDE2LCAxNiwgZGVmbGF0ZV9zbG93KSwgICAgICAgICAgLyogNCBsYXp5IG1hdGNoZXMgKi9cbiAgbmV3IENvbmZpZyg4LCAxNiwgMzIsIDMyLCBkZWZsYXRlX3Nsb3cpLCAgICAgICAgIC8qIDUgKi9cbiAgbmV3IENvbmZpZyg4LCAxNiwgMTI4LCAxMjgsIGRlZmxhdGVfc2xvdyksICAgICAgIC8qIDYgKi9cbiAgbmV3IENvbmZpZyg4LCAzMiwgMTI4LCAyNTYsIGRlZmxhdGVfc2xvdyksICAgICAgIC8qIDcgKi9cbiAgbmV3IENvbmZpZygzMiwgMTI4LCAyNTgsIDEwMjQsIGRlZmxhdGVfc2xvdyksICAgIC8qIDggKi9cbiAgbmV3IENvbmZpZygzMiwgMjU4LCAyNTgsIDQwOTYsIGRlZmxhdGVfc2xvdykgICAgIC8qIDkgbWF4IGNvbXByZXNzaW9uICovXG5dO1xuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW5pdGlhbGl6ZSB0aGUgXCJsb25nZXN0IG1hdGNoXCIgcm91dGluZXMgZm9yIGEgbmV3IHpsaWIgc3RyZWFtXG4gKi9cbmZ1bmN0aW9uIGxtX2luaXQocykge1xuICBzLndpbmRvd19zaXplID0gMiAqIHMud19zaXplO1xuXG4gIC8qKiogQ0xFQVJfSEFTSChzKTsgKioqL1xuICB6ZXJvKHMuaGVhZCk7IC8vIEZpbGwgd2l0aCBOSUwgKD0gMCk7XG5cbiAgLyogU2V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyczpcbiAgICovXG4gIHMubWF4X2xhenlfbWF0Y2ggPSBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLm1heF9sYXp5O1xuICBzLmdvb2RfbWF0Y2ggPSBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLmdvb2RfbGVuZ3RoO1xuICBzLm5pY2VfbWF0Y2ggPSBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLm5pY2VfbGVuZ3RoO1xuICBzLm1heF9jaGFpbl9sZW5ndGggPSBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLm1heF9jaGFpbjtcblxuICBzLnN0cnN0YXJ0ID0gMDtcbiAgcy5ibG9ja19zdGFydCA9IDA7XG4gIHMubG9va2FoZWFkID0gMDtcbiAgcy5pbnNlcnQgPSAwO1xuICBzLm1hdGNoX2xlbmd0aCA9IHMucHJldl9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxO1xuICBzLm1hdGNoX2F2YWlsYWJsZSA9IDA7XG4gIHMuaW5zX2ggPSAwO1xufVxuXG5cbmZ1bmN0aW9uIERlZmxhdGVTdGF0ZSgpIHtcbiAgdGhpcy5zdHJtID0gbnVsbDsgICAgICAgICAgICAvKiBwb2ludGVyIGJhY2sgdG8gdGhpcyB6bGliIHN0cmVhbSAqL1xuICB0aGlzLnN0YXR1cyA9IDA7ICAgICAgICAgICAgLyogYXMgdGhlIG5hbWUgaW1wbGllcyAqL1xuICB0aGlzLnBlbmRpbmdfYnVmID0gbnVsbDsgICAgICAvKiBvdXRwdXQgc3RpbGwgcGVuZGluZyAqL1xuICB0aGlzLnBlbmRpbmdfYnVmX3NpemUgPSAwOyAgLyogc2l6ZSBvZiBwZW5kaW5nX2J1ZiAqL1xuICB0aGlzLnBlbmRpbmdfb3V0ID0gMDsgICAgICAgLyogbmV4dCBwZW5kaW5nIGJ5dGUgdG8gb3V0cHV0IHRvIHRoZSBzdHJlYW0gKi9cbiAgdGhpcy5wZW5kaW5nID0gMDsgICAgICAgICAgIC8qIG5iIG9mIGJ5dGVzIGluIHRoZSBwZW5kaW5nIGJ1ZmZlciAqL1xuICB0aGlzLndyYXAgPSAwOyAgICAgICAgICAgICAgLyogYml0IDAgdHJ1ZSBmb3IgemxpYiwgYml0IDEgdHJ1ZSBmb3IgZ3ppcCAqL1xuICB0aGlzLmd6aGVhZCA9IG51bGw7ICAgICAgICAgLyogZ3ppcCBoZWFkZXIgaW5mb3JtYXRpb24gdG8gd3JpdGUgKi9cbiAgdGhpcy5nemluZGV4ID0gMDsgICAgICAgICAgIC8qIHdoZXJlIGluIGV4dHJhLCBuYW1lLCBvciBjb21tZW50ICovXG4gIHRoaXMubWV0aG9kID0gWl9ERUZMQVRFRDsgLyogY2FuIG9ubHkgYmUgREVGTEFURUQgKi9cbiAgdGhpcy5sYXN0X2ZsdXNoID0gLTE7ICAgLyogdmFsdWUgb2YgZmx1c2ggcGFyYW0gZm9yIHByZXZpb3VzIGRlZmxhdGUgY2FsbCAqL1xuXG4gIHRoaXMud19zaXplID0gMDsgIC8qIExaNzcgd2luZG93IHNpemUgKDMySyBieSBkZWZhdWx0KSAqL1xuICB0aGlzLndfYml0cyA9IDA7ICAvKiBsb2cyKHdfc2l6ZSkgICg4Li4xNikgKi9cbiAgdGhpcy53X21hc2sgPSAwOyAgLyogd19zaXplIC0gMSAqL1xuXG4gIHRoaXMud2luZG93ID0gbnVsbDtcbiAgLyogU2xpZGluZyB3aW5kb3cuIElucHV0IGJ5dGVzIGFyZSByZWFkIGludG8gdGhlIHNlY29uZCBoYWxmIG9mIHRoZSB3aW5kb3csXG4gICAqIGFuZCBtb3ZlIHRvIHRoZSBmaXJzdCBoYWxmIGxhdGVyIHRvIGtlZXAgYSBkaWN0aW9uYXJ5IG9mIGF0IGxlYXN0IHdTaXplXG4gICAqIGJ5dGVzLiBXaXRoIHRoaXMgb3JnYW5pemF0aW9uLCBtYXRjaGVzIGFyZSBsaW1pdGVkIHRvIGEgZGlzdGFuY2Ugb2ZcbiAgICogd1NpemUtTUFYX01BVENIIGJ5dGVzLCBidXQgdGhpcyBlbnN1cmVzIHRoYXQgSU8gaXMgYWx3YXlzXG4gICAqIHBlcmZvcm1lZCB3aXRoIGEgbGVuZ3RoIG11bHRpcGxlIG9mIHRoZSBibG9jayBzaXplLlxuICAgKi9cblxuICB0aGlzLndpbmRvd19zaXplID0gMDtcbiAgLyogQWN0dWFsIHNpemUgb2Ygd2luZG93OiAyKndTaXplLCBleGNlcHQgd2hlbiB0aGUgdXNlciBpbnB1dCBidWZmZXJcbiAgICogaXMgZGlyZWN0bHkgdXNlZCBhcyBzbGlkaW5nIHdpbmRvdy5cbiAgICovXG5cbiAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgLyogTGluayB0byBvbGRlciBzdHJpbmcgd2l0aCBzYW1lIGhhc2ggaW5kZXguIFRvIGxpbWl0IHRoZSBzaXplIG9mIHRoaXNcbiAgICogYXJyYXkgdG8gNjRLLCB0aGlzIGxpbmsgaXMgbWFpbnRhaW5lZCBvbmx5IGZvciB0aGUgbGFzdCAzMksgc3RyaW5ncy5cbiAgICogQW4gaW5kZXggaW4gdGhpcyBhcnJheSBpcyB0aHVzIGEgd2luZG93IGluZGV4IG1vZHVsbyAzMksuXG4gICAqL1xuXG4gIHRoaXMuaGVhZCA9IG51bGw7ICAgLyogSGVhZHMgb2YgdGhlIGhhc2ggY2hhaW5zIG9yIE5JTC4gKi9cblxuICB0aGlzLmluc19oID0gMDsgICAgICAgLyogaGFzaCBpbmRleCBvZiBzdHJpbmcgdG8gYmUgaW5zZXJ0ZWQgKi9cbiAgdGhpcy5oYXNoX3NpemUgPSAwOyAgIC8qIG51bWJlciBvZiBlbGVtZW50cyBpbiBoYXNoIHRhYmxlICovXG4gIHRoaXMuaGFzaF9iaXRzID0gMDsgICAvKiBsb2cyKGhhc2hfc2l6ZSkgKi9cbiAgdGhpcy5oYXNoX21hc2sgPSAwOyAgIC8qIGhhc2hfc2l6ZS0xICovXG5cbiAgdGhpcy5oYXNoX3NoaWZ0ID0gMDtcbiAgLyogTnVtYmVyIG9mIGJpdHMgYnkgd2hpY2ggaW5zX2ggbXVzdCBiZSBzaGlmdGVkIGF0IGVhY2ggaW5wdXRcbiAgICogc3RlcC4gSXQgbXVzdCBiZSBzdWNoIHRoYXQgYWZ0ZXIgTUlOX01BVENIIHN0ZXBzLCB0aGUgb2xkZXN0XG4gICAqIGJ5dGUgbm8gbG9uZ2VyIHRha2VzIHBhcnQgaW4gdGhlIGhhc2gga2V5LCB0aGF0IGlzOlxuICAgKiAgIGhhc2hfc2hpZnQgKiBNSU5fTUFUQ0ggPj0gaGFzaF9iaXRzXG4gICAqL1xuXG4gIHRoaXMuYmxvY2tfc3RhcnQgPSAwO1xuICAvKiBXaW5kb3cgcG9zaXRpb24gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVudCBvdXRwdXQgYmxvY2suIEdldHNcbiAgICogbmVnYXRpdmUgd2hlbiB0aGUgd2luZG93IGlzIG1vdmVkIGJhY2t3YXJkcy5cbiAgICovXG5cbiAgdGhpcy5tYXRjaF9sZW5ndGggPSAwOyAgICAgIC8qIGxlbmd0aCBvZiBiZXN0IG1hdGNoICovXG4gIHRoaXMucHJldl9tYXRjaCA9IDA7ICAgICAgICAvKiBwcmV2aW91cyBtYXRjaCAqL1xuICB0aGlzLm1hdGNoX2F2YWlsYWJsZSA9IDA7ICAgLyogc2V0IGlmIHByZXZpb3VzIG1hdGNoIGV4aXN0cyAqL1xuICB0aGlzLnN0cnN0YXJ0ID0gMDsgICAgICAgICAgLyogc3RhcnQgb2Ygc3RyaW5nIHRvIGluc2VydCAqL1xuICB0aGlzLm1hdGNoX3N0YXJ0ID0gMDsgICAgICAgLyogc3RhcnQgb2YgbWF0Y2hpbmcgc3RyaW5nICovXG4gIHRoaXMubG9va2FoZWFkID0gMDsgICAgICAgICAvKiBudW1iZXIgb2YgdmFsaWQgYnl0ZXMgYWhlYWQgaW4gd2luZG93ICovXG5cbiAgdGhpcy5wcmV2X2xlbmd0aCA9IDA7XG4gIC8qIExlbmd0aCBvZiB0aGUgYmVzdCBtYXRjaCBhdCBwcmV2aW91cyBzdGVwLiBNYXRjaGVzIG5vdCBncmVhdGVyIHRoYW4gdGhpc1xuICAgKiBhcmUgZGlzY2FyZGVkLiBUaGlzIGlzIHVzZWQgaW4gdGhlIGxhenkgbWF0Y2ggZXZhbHVhdGlvbi5cbiAgICovXG5cbiAgdGhpcy5tYXhfY2hhaW5fbGVuZ3RoID0gMDtcbiAgLyogVG8gc3BlZWQgdXAgZGVmbGF0aW9uLCBoYXNoIGNoYWlucyBhcmUgbmV2ZXIgc2VhcmNoZWQgYmV5b25kIHRoaXNcbiAgICogbGVuZ3RoLiAgQSBoaWdoZXIgbGltaXQgaW1wcm92ZXMgY29tcHJlc3Npb24gcmF0aW8gYnV0IGRlZ3JhZGVzIHRoZVxuICAgKiBzcGVlZC5cbiAgICovXG5cbiAgdGhpcy5tYXhfbGF6eV9tYXRjaCA9IDA7XG4gIC8qIEF0dGVtcHQgdG8gZmluZCBhIGJldHRlciBtYXRjaCBvbmx5IHdoZW4gdGhlIGN1cnJlbnQgbWF0Y2ggaXMgc3RyaWN0bHlcbiAgICogc21hbGxlciB0aGFuIHRoaXMgdmFsdWUuIFRoaXMgbWVjaGFuaXNtIGlzIHVzZWQgb25seSBmb3IgY29tcHJlc3Npb25cbiAgICogbGV2ZWxzID49IDQuXG4gICAqL1xuICAvLyBUaGF0J3MgYWxpYXMgdG8gbWF4X2xhenlfbWF0Y2gsIGRvbid0IHVzZSBkaXJlY3RseVxuICAvL3RoaXMubWF4X2luc2VydF9sZW5ndGggPSAwO1xuICAvKiBJbnNlcnQgbmV3IHN0cmluZ3MgaW4gdGhlIGhhc2ggdGFibGUgb25seSBpZiB0aGUgbWF0Y2ggbGVuZ3RoIGlzIG5vdFxuICAgKiBncmVhdGVyIHRoYW4gdGhpcyBsZW5ndGguIFRoaXMgc2F2ZXMgdGltZSBidXQgZGVncmFkZXMgY29tcHJlc3Npb24uXG4gICAqIG1heF9pbnNlcnRfbGVuZ3RoIGlzIHVzZWQgb25seSBmb3IgY29tcHJlc3Npb24gbGV2ZWxzIDw9IDMuXG4gICAqL1xuXG4gIHRoaXMubGV2ZWwgPSAwOyAgICAgLyogY29tcHJlc3Npb24gbGV2ZWwgKDEuLjkpICovXG4gIHRoaXMuc3RyYXRlZ3kgPSAwOyAgLyogZmF2b3Igb3IgZm9yY2UgSHVmZm1hbiBjb2RpbmcqL1xuXG4gIHRoaXMuZ29vZF9tYXRjaCA9IDA7XG4gIC8qIFVzZSBhIGZhc3RlciBzZWFyY2ggd2hlbiB0aGUgcHJldmlvdXMgbWF0Y2ggaXMgbG9uZ2VyIHRoYW4gdGhpcyAqL1xuXG4gIHRoaXMubmljZV9tYXRjaCA9IDA7IC8qIFN0b3Agc2VhcmNoaW5nIHdoZW4gY3VycmVudCBtYXRjaCBleGNlZWRzIHRoaXMgKi9cblxuICAgICAgICAgICAgICAvKiB1c2VkIGJ5IHRyZWVzLmM6ICovXG5cbiAgLyogRGlkbid0IHVzZSBjdF9kYXRhIHR5cGVkZWYgYmVsb3cgdG8gc3VwcHJlc3MgY29tcGlsZXIgd2FybmluZyAqL1xuXG4gIC8vIHN0cnVjdCBjdF9kYXRhX3MgZHluX2x0cmVlW0hFQVBfU0laRV07ICAgLyogbGl0ZXJhbCBhbmQgbGVuZ3RoIHRyZWUgKi9cbiAgLy8gc3RydWN0IGN0X2RhdGFfcyBkeW5fZHRyZWVbMipEX0NPREVTKzFdOyAvKiBkaXN0YW5jZSB0cmVlICovXG4gIC8vIHN0cnVjdCBjdF9kYXRhX3MgYmxfdHJlZVsyKkJMX0NPREVTKzFdOyAgLyogSHVmZm1hbiB0cmVlIGZvciBiaXQgbGVuZ3RocyAqL1xuXG4gIC8vIFVzZSBmbGF0IGFycmF5IG9mIERPVUJMRSBzaXplLCB3aXRoIGludGVybGVhdmVkIGZhdGEsXG4gIC8vIGJlY2F1c2UgSlMgZG9lcyBub3Qgc3VwcG9ydCBlZmZlY3RpdmVcbiAgdGhpcy5keW5fbHRyZWUgID0gbmV3IHV0aWxzLkJ1ZjE2KEhFQVBfU0laRSAqIDIpO1xuICB0aGlzLmR5bl9kdHJlZSAgPSBuZXcgdXRpbHMuQnVmMTYoKDIgKiBEX0NPREVTICsgMSkgKiAyKTtcbiAgdGhpcy5ibF90cmVlICAgID0gbmV3IHV0aWxzLkJ1ZjE2KCgyICogQkxfQ09ERVMgKyAxKSAqIDIpO1xuICB6ZXJvKHRoaXMuZHluX2x0cmVlKTtcbiAgemVybyh0aGlzLmR5bl9kdHJlZSk7XG4gIHplcm8odGhpcy5ibF90cmVlKTtcblxuICB0aGlzLmxfZGVzYyAgID0gbnVsbDsgICAgICAgICAvKiBkZXNjLiBmb3IgbGl0ZXJhbCB0cmVlICovXG4gIHRoaXMuZF9kZXNjICAgPSBudWxsOyAgICAgICAgIC8qIGRlc2MuIGZvciBkaXN0YW5jZSB0cmVlICovXG4gIHRoaXMuYmxfZGVzYyAgPSBudWxsOyAgICAgICAgIC8qIGRlc2MuIGZvciBiaXQgbGVuZ3RoIHRyZWUgKi9cblxuICAvL3VzaCBibF9jb3VudFtNQVhfQklUUysxXTtcbiAgdGhpcy5ibF9jb3VudCA9IG5ldyB1dGlscy5CdWYxNihNQVhfQklUUyArIDEpO1xuICAvKiBudW1iZXIgb2YgY29kZXMgYXQgZWFjaCBiaXQgbGVuZ3RoIGZvciBhbiBvcHRpbWFsIHRyZWUgKi9cblxuICAvL2ludCBoZWFwWzIqTF9DT0RFUysxXTsgICAgICAvKiBoZWFwIHVzZWQgdG8gYnVpbGQgdGhlIEh1ZmZtYW4gdHJlZXMgKi9cbiAgdGhpcy5oZWFwID0gbmV3IHV0aWxzLkJ1ZjE2KDIgKiBMX0NPREVTICsgMSk7ICAvKiBoZWFwIHVzZWQgdG8gYnVpbGQgdGhlIEh1ZmZtYW4gdHJlZXMgKi9cbiAgemVybyh0aGlzLmhlYXApO1xuXG4gIHRoaXMuaGVhcF9sZW4gPSAwOyAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgaGVhcCAqL1xuICB0aGlzLmhlYXBfbWF4ID0gMDsgICAgICAgICAgICAgICAvKiBlbGVtZW50IG9mIGxhcmdlc3QgZnJlcXVlbmN5ICovXG4gIC8qIFRoZSBzb25zIG9mIGhlYXBbbl0gYXJlIGhlYXBbMipuXSBhbmQgaGVhcFsyKm4rMV0uIGhlYXBbMF0gaXMgbm90IHVzZWQuXG4gICAqIFRoZSBzYW1lIGhlYXAgYXJyYXkgaXMgdXNlZCB0byBidWlsZCBhbGwgdHJlZXMuXG4gICAqL1xuXG4gIHRoaXMuZGVwdGggPSBuZXcgdXRpbHMuQnVmMTYoMiAqIExfQ09ERVMgKyAxKTsgLy91Y2ggZGVwdGhbMipMX0NPREVTKzFdO1xuICB6ZXJvKHRoaXMuZGVwdGgpO1xuICAvKiBEZXB0aCBvZiBlYWNoIHN1YnRyZWUgdXNlZCBhcyB0aWUgYnJlYWtlciBmb3IgdHJlZXMgb2YgZXF1YWwgZnJlcXVlbmN5XG4gICAqL1xuXG4gIHRoaXMubF9idWYgPSAwOyAgICAgICAgICAvKiBidWZmZXIgaW5kZXggZm9yIGxpdGVyYWxzIG9yIGxlbmd0aHMgKi9cblxuICB0aGlzLmxpdF9idWZzaXplID0gMDtcbiAgLyogU2l6ZSBvZiBtYXRjaCBidWZmZXIgZm9yIGxpdGVyYWxzL2xlbmd0aHMuICBUaGVyZSBhcmUgNCByZWFzb25zIGZvclxuICAgKiBsaW1pdGluZyBsaXRfYnVmc2l6ZSB0byA2NEs6XG4gICAqICAgLSBmcmVxdWVuY2llcyBjYW4gYmUga2VwdCBpbiAxNiBiaXQgY291bnRlcnNcbiAgICogICAtIGlmIGNvbXByZXNzaW9uIGlzIG5vdCBzdWNjZXNzZnVsIGZvciB0aGUgZmlyc3QgYmxvY2ssIGFsbCBpbnB1dFxuICAgKiAgICAgZGF0YSBpcyBzdGlsbCBpbiB0aGUgd2luZG93IHNvIHdlIGNhbiBzdGlsbCBlbWl0IGEgc3RvcmVkIGJsb2NrIGV2ZW5cbiAgICogICAgIHdoZW4gaW5wdXQgY29tZXMgZnJvbSBzdGFuZGFyZCBpbnB1dC4gIChUaGlzIGNhbiBhbHNvIGJlIGRvbmUgZm9yXG4gICAqICAgICBhbGwgYmxvY2tzIGlmIGxpdF9idWZzaXplIGlzIG5vdCBncmVhdGVyIHRoYW4gMzJLLilcbiAgICogICAtIGlmIGNvbXByZXNzaW9uIGlzIG5vdCBzdWNjZXNzZnVsIGZvciBhIGZpbGUgc21hbGxlciB0aGFuIDY0Sywgd2UgY2FuXG4gICAqICAgICBldmVuIGVtaXQgYSBzdG9yZWQgZmlsZSBpbnN0ZWFkIG9mIGEgc3RvcmVkIGJsb2NrIChzYXZpbmcgNSBieXRlcykuXG4gICAqICAgICBUaGlzIGlzIGFwcGxpY2FibGUgb25seSBmb3IgemlwIChub3QgZ3ppcCBvciB6bGliKS5cbiAgICogICAtIGNyZWF0aW5nIG5ldyBIdWZmbWFuIHRyZWVzIGxlc3MgZnJlcXVlbnRseSBtYXkgbm90IHByb3ZpZGUgZmFzdFxuICAgKiAgICAgYWRhcHRhdGlvbiB0byBjaGFuZ2VzIGluIHRoZSBpbnB1dCBkYXRhIHN0YXRpc3RpY3MuIChUYWtlIGZvclxuICAgKiAgICAgZXhhbXBsZSBhIGJpbmFyeSBmaWxlIHdpdGggcG9vcmx5IGNvbXByZXNzaWJsZSBjb2RlIGZvbGxvd2VkIGJ5XG4gICAqICAgICBhIGhpZ2hseSBjb21wcmVzc2libGUgc3RyaW5nIHRhYmxlLikgU21hbGxlciBidWZmZXIgc2l6ZXMgZ2l2ZVxuICAgKiAgICAgZmFzdCBhZGFwdGF0aW9uIGJ1dCBoYXZlIG9mIGNvdXJzZSB0aGUgb3ZlcmhlYWQgb2YgdHJhbnNtaXR0aW5nXG4gICAqICAgICB0cmVlcyBtb3JlIGZyZXF1ZW50bHkuXG4gICAqICAgLSBJIGNhbid0IGNvdW50IGFib3ZlIDRcbiAgICovXG5cbiAgdGhpcy5sYXN0X2xpdCA9IDA7ICAgICAgLyogcnVubmluZyBpbmRleCBpbiBsX2J1ZiAqL1xuXG4gIHRoaXMuZF9idWYgPSAwO1xuICAvKiBCdWZmZXIgaW5kZXggZm9yIGRpc3RhbmNlcy4gVG8gc2ltcGxpZnkgdGhlIGNvZGUsIGRfYnVmIGFuZCBsX2J1ZiBoYXZlXG4gICAqIHRoZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cy4gVG8gdXNlIGRpZmZlcmVudCBsZW5ndGhzLCBhbiBleHRyYSBmbGFnXG4gICAqIGFycmF5IHdvdWxkIGJlIG5lY2Vzc2FyeS5cbiAgICovXG5cbiAgdGhpcy5vcHRfbGVuID0gMDsgICAgICAgLyogYml0IGxlbmd0aCBvZiBjdXJyZW50IGJsb2NrIHdpdGggb3B0aW1hbCB0cmVlcyAqL1xuICB0aGlzLnN0YXRpY19sZW4gPSAwOyAgICAvKiBiaXQgbGVuZ3RoIG9mIGN1cnJlbnQgYmxvY2sgd2l0aCBzdGF0aWMgdHJlZXMgKi9cbiAgdGhpcy5tYXRjaGVzID0gMDsgICAgICAgLyogbnVtYmVyIG9mIHN0cmluZyBtYXRjaGVzIGluIGN1cnJlbnQgYmxvY2sgKi9cbiAgdGhpcy5pbnNlcnQgPSAwOyAgICAgICAgLyogYnl0ZXMgYXQgZW5kIG9mIHdpbmRvdyBsZWZ0IHRvIGluc2VydCAqL1xuXG5cbiAgdGhpcy5iaV9idWYgPSAwO1xuICAvKiBPdXRwdXQgYnVmZmVyLiBiaXRzIGFyZSBpbnNlcnRlZCBzdGFydGluZyBhdCB0aGUgYm90dG9tIChsZWFzdFxuICAgKiBzaWduaWZpY2FudCBiaXRzKS5cbiAgICovXG4gIHRoaXMuYmlfdmFsaWQgPSAwO1xuICAvKiBOdW1iZXIgb2YgdmFsaWQgYml0cyBpbiBiaV9idWYuICBBbGwgYml0cyBhYm92ZSB0aGUgbGFzdCB2YWxpZCBiaXRcbiAgICogYXJlIGFsd2F5cyB6ZXJvLlxuICAgKi9cblxuICAvLyBVc2VkIGZvciB3aW5kb3cgbWVtb3J5IGluaXQuIFdlIHNhZmVseSBpZ25vcmUgaXQgZm9yIEpTLiBUaGF0IG1ha2VzXG4gIC8vIHNlbnNlIG9ubHkgZm9yIHBvaW50ZXJzIGFuZCBtZW1vcnkgY2hlY2sgdG9vbHMuXG4gIC8vdGhpcy5oaWdoX3dhdGVyID0gMDtcbiAgLyogSGlnaCB3YXRlciBtYXJrIG9mZnNldCBpbiB3aW5kb3cgZm9yIGluaXRpYWxpemVkIGJ5dGVzIC0tIGJ5dGVzIGFib3ZlXG4gICAqIHRoaXMgYXJlIHNldCB0byB6ZXJvIGluIG9yZGVyIHRvIGF2b2lkIG1lbW9yeSBjaGVjayB3YXJuaW5ncyB3aGVuXG4gICAqIGxvbmdlc3QgbWF0Y2ggcm91dGluZXMgYWNjZXNzIGJ5dGVzIHBhc3QgdGhlIGlucHV0LiAgVGhpcyBpcyB0aGVuXG4gICAqIHVwZGF0ZWQgdG8gdGhlIG5ldyBoaWdoIHdhdGVyIG1hcmsuXG4gICAqL1xufVxuXG5cbmZ1bmN0aW9uIGRlZmxhdGVSZXNldEtlZXAoc3RybSkge1xuICB2YXIgcztcblxuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUpIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIFpfU1RSRUFNX0VSUk9SKTtcbiAgfVxuXG4gIHN0cm0udG90YWxfaW4gPSBzdHJtLnRvdGFsX291dCA9IDA7XG4gIHN0cm0uZGF0YV90eXBlID0gWl9VTktOT1dOO1xuXG4gIHMgPSBzdHJtLnN0YXRlO1xuICBzLnBlbmRpbmcgPSAwO1xuICBzLnBlbmRpbmdfb3V0ID0gMDtcblxuICBpZiAocy53cmFwIDwgMCkge1xuICAgIHMud3JhcCA9IC1zLndyYXA7XG4gICAgLyogd2FzIG1hZGUgbmVnYXRpdmUgYnkgZGVmbGF0ZSguLi4sIFpfRklOSVNIKTsgKi9cbiAgfVxuICBzLnN0YXR1cyA9IChzLndyYXAgPyBJTklUX1NUQVRFIDogQlVTWV9TVEFURSk7XG4gIHN0cm0uYWRsZXIgPSAocy53cmFwID09PSAyKSA/XG4gICAgMCAgLy8gY3JjMzIoMCwgWl9OVUxMLCAwKVxuICA6XG4gICAgMTsgLy8gYWRsZXIzMigwLCBaX05VTEwsIDApXG4gIHMubGFzdF9mbHVzaCA9IFpfTk9fRkxVU0g7XG4gIHRyZWVzLl90cl9pbml0KHMpO1xuICByZXR1cm4gWl9PSztcbn1cblxuXG5mdW5jdGlvbiBkZWZsYXRlUmVzZXQoc3RybSkge1xuICB2YXIgcmV0ID0gZGVmbGF0ZVJlc2V0S2VlcChzdHJtKTtcbiAgaWYgKHJldCA9PT0gWl9PSykge1xuICAgIGxtX2luaXQoc3RybS5zdGF0ZSk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuXG5mdW5jdGlvbiBkZWZsYXRlU2V0SGVhZGVyKHN0cm0sIGhlYWQpIHtcbiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfVxuICBpZiAoc3RybS5zdGF0ZS53cmFwICE9PSAyKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfVxuICBzdHJtLnN0YXRlLmd6aGVhZCA9IGhlYWQ7XG4gIHJldHVybiBaX09LO1xufVxuXG5cbmZ1bmN0aW9uIGRlZmxhdGVJbml0MihzdHJtLCBsZXZlbCwgbWV0aG9kLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3kpIHtcbiAgaWYgKCFzdHJtKSB7IC8vID09PSBaX05VTExcbiAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gIH1cbiAgdmFyIHdyYXAgPSAxO1xuXG4gIGlmIChsZXZlbCA9PT0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OKSB7XG4gICAgbGV2ZWwgPSA2O1xuICB9XG5cbiAgaWYgKHdpbmRvd0JpdHMgPCAwKSB7IC8qIHN1cHByZXNzIHpsaWIgd3JhcHBlciAqL1xuICAgIHdyYXAgPSAwO1xuICAgIHdpbmRvd0JpdHMgPSAtd2luZG93Qml0cztcbiAgfVxuXG4gIGVsc2UgaWYgKHdpbmRvd0JpdHMgPiAxNSkge1xuICAgIHdyYXAgPSAyOyAgICAgICAgICAgLyogd3JpdGUgZ3ppcCB3cmFwcGVyIGluc3RlYWQgKi9cbiAgICB3aW5kb3dCaXRzIC09IDE2O1xuICB9XG5cblxuICBpZiAobWVtTGV2ZWwgPCAxIHx8IG1lbUxldmVsID4gTUFYX01FTV9MRVZFTCB8fCBtZXRob2QgIT09IFpfREVGTEFURUQgfHxcbiAgICB3aW5kb3dCaXRzIDwgOCB8fCB3aW5kb3dCaXRzID4gMTUgfHwgbGV2ZWwgPCAwIHx8IGxldmVsID4gOSB8fFxuICAgIHN0cmF0ZWd5IDwgMCB8fCBzdHJhdGVneSA+IFpfRklYRUQpIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIFpfU1RSRUFNX0VSUk9SKTtcbiAgfVxuXG5cbiAgaWYgKHdpbmRvd0JpdHMgPT09IDgpIHtcbiAgICB3aW5kb3dCaXRzID0gOTtcbiAgfVxuICAvKiB1bnRpbCAyNTYtYnl0ZSB3aW5kb3cgYnVnIGZpeGVkICovXG5cbiAgdmFyIHMgPSBuZXcgRGVmbGF0ZVN0YXRlKCk7XG5cbiAgc3RybS5zdGF0ZSA9IHM7XG4gIHMuc3RybSA9IHN0cm07XG5cbiAgcy53cmFwID0gd3JhcDtcbiAgcy5nemhlYWQgPSBudWxsO1xuICBzLndfYml0cyA9IHdpbmRvd0JpdHM7XG4gIHMud19zaXplID0gMSA8PCBzLndfYml0cztcbiAgcy53X21hc2sgPSBzLndfc2l6ZSAtIDE7XG5cbiAgcy5oYXNoX2JpdHMgPSBtZW1MZXZlbCArIDc7XG4gIHMuaGFzaF9zaXplID0gMSA8PCBzLmhhc2hfYml0cztcbiAgcy5oYXNoX21hc2sgPSBzLmhhc2hfc2l6ZSAtIDE7XG4gIHMuaGFzaF9zaGlmdCA9IH5+KChzLmhhc2hfYml0cyArIE1JTl9NQVRDSCAtIDEpIC8gTUlOX01BVENIKTtcblxuICBzLndpbmRvdyA9IG5ldyB1dGlscy5CdWY4KHMud19zaXplICogMik7XG4gIHMuaGVhZCA9IG5ldyB1dGlscy5CdWYxNihzLmhhc2hfc2l6ZSk7XG4gIHMucHJldiA9IG5ldyB1dGlscy5CdWYxNihzLndfc2l6ZSk7XG5cbiAgLy8gRG9uJ3QgbmVlZCBtZW0gaW5pdCBtYWdpYyBmb3IgSlMuXG4gIC8vcy5oaWdoX3dhdGVyID0gMDsgIC8qIG5vdGhpbmcgd3JpdHRlbiB0byBzLT53aW5kb3cgeWV0ICovXG5cbiAgcy5saXRfYnVmc2l6ZSA9IDEgPDwgKG1lbUxldmVsICsgNik7IC8qIDE2SyBlbGVtZW50cyBieSBkZWZhdWx0ICovXG5cbiAgcy5wZW5kaW5nX2J1Zl9zaXplID0gcy5saXRfYnVmc2l6ZSAqIDQ7XG5cbiAgLy9vdmVybGF5ID0gKHVzaGYgKikgWkFMTE9DKHN0cm0sIHMtPmxpdF9idWZzaXplLCBzaXplb2YodXNoKSsyKTtcbiAgLy9zLT5wZW5kaW5nX2J1ZiA9ICh1Y2hmICopIG92ZXJsYXk7XG4gIHMucGVuZGluZ19idWYgPSBuZXcgdXRpbHMuQnVmOChzLnBlbmRpbmdfYnVmX3NpemUpO1xuXG4gIC8vIEl0IGlzIG9mZnNldCBmcm9tIGBzLnBlbmRpbmdfYnVmYCAoc2l6ZSBpcyBgcy5saXRfYnVmc2l6ZSAqIDJgKVxuICAvL3MtPmRfYnVmID0gb3ZlcmxheSArIHMtPmxpdF9idWZzaXplL3NpemVvZih1c2gpO1xuICBzLmRfYnVmID0gMSAqIHMubGl0X2J1ZnNpemU7XG5cbiAgLy9zLT5sX2J1ZiA9IHMtPnBlbmRpbmdfYnVmICsgKDErc2l6ZW9mKHVzaCkpKnMtPmxpdF9idWZzaXplO1xuICBzLmxfYnVmID0gKDEgKyAyKSAqIHMubGl0X2J1ZnNpemU7XG5cbiAgcy5sZXZlbCA9IGxldmVsO1xuICBzLnN0cmF0ZWd5ID0gc3RyYXRlZ3k7XG4gIHMubWV0aG9kID0gbWV0aG9kO1xuXG4gIHJldHVybiBkZWZsYXRlUmVzZXQoc3RybSk7XG59XG5cbmZ1bmN0aW9uIGRlZmxhdGVJbml0KHN0cm0sIGxldmVsKSB7XG4gIHJldHVybiBkZWZsYXRlSW5pdDIoc3RybSwgbGV2ZWwsIFpfREVGTEFURUQsIE1BWF9XQklUUywgREVGX01FTV9MRVZFTCwgWl9ERUZBVUxUX1NUUkFURUdZKTtcbn1cblxuXG5mdW5jdGlvbiBkZWZsYXRlKHN0cm0sIGZsdXNoKSB7XG4gIHZhciBvbGRfZmx1c2gsIHM7XG4gIHZhciBiZWcsIHZhbDsgLy8gZm9yIGd6aXAgaGVhZGVyIHdyaXRlIG9ubHlcblxuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUgfHxcbiAgICBmbHVzaCA+IFpfQkxPQ0sgfHwgZmx1c2ggPCAwKSB7XG4gICAgcmV0dXJuIHN0cm0gPyBlcnIoc3RybSwgWl9TVFJFQU1fRVJST1IpIDogWl9TVFJFQU1fRVJST1I7XG4gIH1cblxuICBzID0gc3RybS5zdGF0ZTtcblxuICBpZiAoIXN0cm0ub3V0cHV0IHx8XG4gICAgICAoIXN0cm0uaW5wdXQgJiYgc3RybS5hdmFpbF9pbiAhPT0gMCkgfHxcbiAgICAgIChzLnN0YXR1cyA9PT0gRklOSVNIX1NUQVRFICYmIGZsdXNoICE9PSBaX0ZJTklTSCkpIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIChzdHJtLmF2YWlsX291dCA9PT0gMCkgPyBaX0JVRl9FUlJPUiA6IFpfU1RSRUFNX0VSUk9SKTtcbiAgfVxuXG4gIHMuc3RybSA9IHN0cm07IC8qIGp1c3QgaW4gY2FzZSAqL1xuICBvbGRfZmx1c2ggPSBzLmxhc3RfZmx1c2g7XG4gIHMubGFzdF9mbHVzaCA9IGZsdXNoO1xuXG4gIC8qIFdyaXRlIHRoZSBoZWFkZXIgKi9cbiAgaWYgKHMuc3RhdHVzID09PSBJTklUX1NUQVRFKSB7XG5cbiAgICBpZiAocy53cmFwID09PSAyKSB7IC8vIEdaSVAgaGVhZGVyXG4gICAgICBzdHJtLmFkbGVyID0gMDsgIC8vY3JjMzIoMEwsIFpfTlVMTCwgMCk7XG4gICAgICBwdXRfYnl0ZShzLCAzMSk7XG4gICAgICBwdXRfYnl0ZShzLCAxMzkpO1xuICAgICAgcHV0X2J5dGUocywgOCk7XG4gICAgICBpZiAoIXMuZ3poZWFkKSB7IC8vIHMtPmd6aGVhZCA9PSBaX05VTExcbiAgICAgICAgcHV0X2J5dGUocywgMCk7XG4gICAgICAgIHB1dF9ieXRlKHMsIDApO1xuICAgICAgICBwdXRfYnl0ZShzLCAwKTtcbiAgICAgICAgcHV0X2J5dGUocywgMCk7XG4gICAgICAgIHB1dF9ieXRlKHMsIDApO1xuICAgICAgICBwdXRfYnl0ZShzLCBzLmxldmVsID09PSA5ID8gMiA6XG4gICAgICAgICAgICAgICAgICAgIChzLnN0cmF0ZWd5ID49IFpfSFVGRk1BTl9PTkxZIHx8IHMubGV2ZWwgPCAyID9cbiAgICAgICAgICAgICAgICAgICAgIDQgOiAwKSk7XG4gICAgICAgIHB1dF9ieXRlKHMsIE9TX0NPREUpO1xuICAgICAgICBzLnN0YXR1cyA9IEJVU1lfU1RBVEU7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgcHV0X2J5dGUocywgKHMuZ3poZWFkLnRleHQgPyAxIDogMCkgK1xuICAgICAgICAgICAgICAgICAgICAocy5nemhlYWQuaGNyYyA/IDIgOiAwKSArXG4gICAgICAgICAgICAgICAgICAgICghcy5nemhlYWQuZXh0cmEgPyAwIDogNCkgK1xuICAgICAgICAgICAgICAgICAgICAoIXMuZ3poZWFkLm5hbWUgPyAwIDogOCkgK1xuICAgICAgICAgICAgICAgICAgICAoIXMuZ3poZWFkLmNvbW1lbnQgPyAwIDogMTYpXG4gICAgICAgICk7XG4gICAgICAgIHB1dF9ieXRlKHMsIHMuZ3poZWFkLnRpbWUgJiAweGZmKTtcbiAgICAgICAgcHV0X2J5dGUocywgKHMuZ3poZWFkLnRpbWUgPj4gOCkgJiAweGZmKTtcbiAgICAgICAgcHV0X2J5dGUocywgKHMuZ3poZWFkLnRpbWUgPj4gMTYpICYgMHhmZik7XG4gICAgICAgIHB1dF9ieXRlKHMsIChzLmd6aGVhZC50aW1lID4+IDI0KSAmIDB4ZmYpO1xuICAgICAgICBwdXRfYnl0ZShzLCBzLmxldmVsID09PSA5ID8gMiA6XG4gICAgICAgICAgICAgICAgICAgIChzLnN0cmF0ZWd5ID49IFpfSFVGRk1BTl9PTkxZIHx8IHMubGV2ZWwgPCAyID9cbiAgICAgICAgICAgICAgICAgICAgIDQgOiAwKSk7XG4gICAgICAgIHB1dF9ieXRlKHMsIHMuZ3poZWFkLm9zICYgMHhmZik7XG4gICAgICAgIGlmIChzLmd6aGVhZC5leHRyYSAmJiBzLmd6aGVhZC5leHRyYS5sZW5ndGgpIHtcbiAgICAgICAgICBwdXRfYnl0ZShzLCBzLmd6aGVhZC5leHRyYS5sZW5ndGggJiAweGZmKTtcbiAgICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQuZXh0cmEubGVuZ3RoID4+IDgpICYgMHhmZik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMuZ3poZWFkLmhjcmMpIHtcbiAgICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nLCAwKTtcbiAgICAgICAgfVxuICAgICAgICBzLmd6aW5kZXggPSAwO1xuICAgICAgICBzLnN0YXR1cyA9IEVYVFJBX1NUQVRFO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIC8vIERFRkxBVEUgaGVhZGVyXG4gICAge1xuICAgICAgdmFyIGhlYWRlciA9IChaX0RFRkxBVEVEICsgKChzLndfYml0cyAtIDgpIDw8IDQpKSA8PCA4O1xuICAgICAgdmFyIGxldmVsX2ZsYWdzID0gLTE7XG5cbiAgICAgIGlmIChzLnN0cmF0ZWd5ID49IFpfSFVGRk1BTl9PTkxZIHx8IHMubGV2ZWwgPCAyKSB7XG4gICAgICAgIGxldmVsX2ZsYWdzID0gMDtcbiAgICAgIH0gZWxzZSBpZiAocy5sZXZlbCA8IDYpIHtcbiAgICAgICAgbGV2ZWxfZmxhZ3MgPSAxO1xuICAgICAgfSBlbHNlIGlmIChzLmxldmVsID09PSA2KSB7XG4gICAgICAgIGxldmVsX2ZsYWdzID0gMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsX2ZsYWdzID0gMztcbiAgICAgIH1cbiAgICAgIGhlYWRlciB8PSAobGV2ZWxfZmxhZ3MgPDwgNik7XG4gICAgICBpZiAocy5zdHJzdGFydCAhPT0gMCkgeyBoZWFkZXIgfD0gUFJFU0VUX0RJQ1Q7IH1cbiAgICAgIGhlYWRlciArPSAzMSAtIChoZWFkZXIgJSAzMSk7XG5cbiAgICAgIHMuc3RhdHVzID0gQlVTWV9TVEFURTtcbiAgICAgIHB1dFNob3J0TVNCKHMsIGhlYWRlcik7XG5cbiAgICAgIC8qIFNhdmUgdGhlIGFkbGVyMzIgb2YgdGhlIHByZXNldCBkaWN0aW9uYXJ5OiAqL1xuICAgICAgaWYgKHMuc3Ryc3RhcnQgIT09IDApIHtcbiAgICAgICAgcHV0U2hvcnRNU0Iocywgc3RybS5hZGxlciA+Pj4gMTYpO1xuICAgICAgICBwdXRTaG9ydE1TQihzLCBzdHJtLmFkbGVyICYgMHhmZmZmKTtcbiAgICAgIH1cbiAgICAgIHN0cm0uYWRsZXIgPSAxOyAvLyBhZGxlcjMyKDBMLCBaX05VTEwsIDApO1xuICAgIH1cbiAgfVxuXG4vLyNpZmRlZiBHWklQXG4gIGlmIChzLnN0YXR1cyA9PT0gRVhUUkFfU1RBVEUpIHtcbiAgICBpZiAocy5nemhlYWQuZXh0cmEvKiAhPSBaX05VTEwqLykge1xuICAgICAgYmVnID0gcy5wZW5kaW5nOyAgLyogc3RhcnQgb2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqL1xuXG4gICAgICB3aGlsZSAocy5nemluZGV4IDwgKHMuZ3poZWFkLmV4dHJhLmxlbmd0aCAmIDB4ZmZmZikpIHtcbiAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgICAgaWYgKHMuZ3poZWFkLmhjcmMgJiYgcy5wZW5kaW5nID4gYmVnKSB7XG4gICAgICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nIC0gYmVnLCBiZWcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pO1xuICAgICAgICAgIGJlZyA9IHMucGVuZGluZztcbiAgICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwdXRfYnl0ZShzLCBzLmd6aGVhZC5leHRyYVtzLmd6aW5kZXhdICYgMHhmZik7XG4gICAgICAgIHMuZ3ppbmRleCsrO1xuICAgICAgfVxuICAgICAgaWYgKHMuZ3poZWFkLmhjcmMgJiYgcy5wZW5kaW5nID4gYmVnKSB7XG4gICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7XG4gICAgICB9XG4gICAgICBpZiAocy5nemluZGV4ID09PSBzLmd6aGVhZC5leHRyYS5sZW5ndGgpIHtcbiAgICAgICAgcy5nemluZGV4ID0gMDtcbiAgICAgICAgcy5zdGF0dXMgPSBOQU1FX1NUQVRFO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHMuc3RhdHVzID0gTkFNRV9TVEFURTtcbiAgICB9XG4gIH1cbiAgaWYgKHMuc3RhdHVzID09PSBOQU1FX1NUQVRFKSB7XG4gICAgaWYgKHMuZ3poZWFkLm5hbWUvKiAhPSBaX05VTEwqLykge1xuICAgICAgYmVnID0gcy5wZW5kaW5nOyAgLyogc3RhcnQgb2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqL1xuICAgICAgLy9pbnQgdmFsO1xuXG4gICAgICBkbyB7XG4gICAgICAgIGlmIChzLnBlbmRpbmcgPT09IHMucGVuZGluZ19idWZfc2l6ZSkge1xuICAgICAgICAgIGlmIChzLmd6aGVhZC5oY3JjICYmIHMucGVuZGluZyA+IGJlZykge1xuICAgICAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTtcbiAgICAgICAgICBiZWcgPSBzLnBlbmRpbmc7XG4gICAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgICAgICB2YWwgPSAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEpTIHNwZWNpZmljOiBsaXR0bGUgbWFnaWMgdG8gYWRkIHplcm8gdGVybWluYXRvciB0byBlbmQgb2Ygc3RyaW5nXG4gICAgICAgIGlmIChzLmd6aW5kZXggPCBzLmd6aGVhZC5uYW1lLmxlbmd0aCkge1xuICAgICAgICAgIHZhbCA9IHMuZ3poZWFkLm5hbWUuY2hhckNvZGVBdChzLmd6aW5kZXgrKykgJiAweGZmO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcHV0X2J5dGUocywgdmFsKTtcbiAgICAgIH0gd2hpbGUgKHZhbCAhPT0gMCk7XG5cbiAgICAgIGlmIChzLmd6aGVhZC5oY3JjICYmIHMucGVuZGluZyA+IGJlZykge1xuICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nIC0gYmVnLCBiZWcpO1xuICAgICAgfVxuICAgICAgaWYgKHZhbCA9PT0gMCkge1xuICAgICAgICBzLmd6aW5kZXggPSAwO1xuICAgICAgICBzLnN0YXR1cyA9IENPTU1FTlRfU1RBVEU7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcy5zdGF0dXMgPSBDT01NRU5UX1NUQVRFO1xuICAgIH1cbiAgfVxuICBpZiAocy5zdGF0dXMgPT09IENPTU1FTlRfU1RBVEUpIHtcbiAgICBpZiAocy5nemhlYWQuY29tbWVudC8qICE9IFpfTlVMTCovKSB7XG4gICAgICBiZWcgPSBzLnBlbmRpbmc7ICAvKiBzdGFydCBvZiBieXRlcyB0byB1cGRhdGUgY3JjICovXG4gICAgICAvL2ludCB2YWw7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgICAgaWYgKHMuZ3poZWFkLmhjcmMgJiYgcy5wZW5kaW5nID4gYmVnKSB7XG4gICAgICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nIC0gYmVnLCBiZWcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pO1xuICAgICAgICAgIGJlZyA9IHMucGVuZGluZztcbiAgICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgICAgIHZhbCA9IDE7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gSlMgc3BlY2lmaWM6IGxpdHRsZSBtYWdpYyB0byBhZGQgemVybyB0ZXJtaW5hdG9yIHRvIGVuZCBvZiBzdHJpbmdcbiAgICAgICAgaWYgKHMuZ3ppbmRleCA8IHMuZ3poZWFkLmNvbW1lbnQubGVuZ3RoKSB7XG4gICAgICAgICAgdmFsID0gcy5nemhlYWQuY29tbWVudC5jaGFyQ29kZUF0KHMuZ3ppbmRleCsrKSAmIDB4ZmY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICBwdXRfYnl0ZShzLCB2YWwpO1xuICAgICAgfSB3aGlsZSAodmFsICE9PSAwKTtcblxuICAgICAgaWYgKHMuZ3poZWFkLmhjcmMgJiYgcy5wZW5kaW5nID4gYmVnKSB7XG4gICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7XG4gICAgICB9XG4gICAgICBpZiAodmFsID09PSAwKSB7XG4gICAgICAgIHMuc3RhdHVzID0gSENSQ19TVEFURTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBzLnN0YXR1cyA9IEhDUkNfU1RBVEU7XG4gICAgfVxuICB9XG4gIGlmIChzLnN0YXR1cyA9PT0gSENSQ19TVEFURSkge1xuICAgIGlmIChzLmd6aGVhZC5oY3JjKSB7XG4gICAgICBpZiAocy5wZW5kaW5nICsgMiA+IHMucGVuZGluZ19idWZfc2l6ZSkge1xuICAgICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pO1xuICAgICAgfVxuICAgICAgaWYgKHMucGVuZGluZyArIDIgPD0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgIHB1dF9ieXRlKHMsIHN0cm0uYWRsZXIgJiAweGZmKTtcbiAgICAgICAgcHV0X2J5dGUocywgKHN0cm0uYWRsZXIgPj4gOCkgJiAweGZmKTtcbiAgICAgICAgc3RybS5hZGxlciA9IDA7IC8vY3JjMzIoMEwsIFpfTlVMTCwgMCk7XG4gICAgICAgIHMuc3RhdHVzID0gQlVTWV9TVEFURTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBzLnN0YXR1cyA9IEJVU1lfU1RBVEU7XG4gICAgfVxuICB9XG4vLyNlbmRpZlxuXG4gIC8qIEZsdXNoIGFzIG11Y2ggcGVuZGluZyBvdXRwdXQgYXMgcG9zc2libGUgKi9cbiAgaWYgKHMucGVuZGluZyAhPT0gMCkge1xuICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gICAgaWYgKHN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAvKiBTaW5jZSBhdmFpbF9vdXQgaXMgMCwgZGVmbGF0ZSB3aWxsIGJlIGNhbGxlZCBhZ2FpbiB3aXRoXG4gICAgICAgKiBtb3JlIG91dHB1dCBzcGFjZSwgYnV0IHBvc3NpYmx5IHdpdGggYm90aCBwZW5kaW5nIGFuZFxuICAgICAgICogYXZhaWxfaW4gZXF1YWwgdG8gemVyby4gVGhlcmUgd29uJ3QgYmUgYW55dGhpbmcgdG8gZG8sXG4gICAgICAgKiBidXQgdGhpcyBpcyBub3QgYW4gZXJyb3Igc2l0dWF0aW9uIHNvIG1ha2Ugc3VyZSB3ZVxuICAgICAgICogcmV0dXJuIE9LIGluc3RlYWQgb2YgQlVGX0VSUk9SIGF0IG5leHQgY2FsbCBvZiBkZWZsYXRlOlxuICAgICAgICovXG4gICAgICBzLmxhc3RfZmx1c2ggPSAtMTtcbiAgICAgIHJldHVybiBaX09LO1xuICAgIH1cblxuICAgIC8qIE1ha2Ugc3VyZSB0aGVyZSBpcyBzb21ldGhpbmcgdG8gZG8gYW5kIGF2b2lkIGR1cGxpY2F0ZSBjb25zZWN1dGl2ZVxuICAgICAqIGZsdXNoZXMuIEZvciByZXBlYXRlZCBhbmQgdXNlbGVzcyBjYWxscyB3aXRoIFpfRklOSVNILCB3ZSBrZWVwXG4gICAgICogcmV0dXJuaW5nIFpfU1RSRUFNX0VORCBpbnN0ZWFkIG9mIFpfQlVGX0VSUk9SLlxuICAgICAqL1xuICB9IGVsc2UgaWYgKHN0cm0uYXZhaWxfaW4gPT09IDAgJiYgcmFuayhmbHVzaCkgPD0gcmFuayhvbGRfZmx1c2gpICYmXG4gICAgZmx1c2ggIT09IFpfRklOSVNIKSB7XG4gICAgcmV0dXJuIGVycihzdHJtLCBaX0JVRl9FUlJPUik7XG4gIH1cblxuICAvKiBVc2VyIG11c3Qgbm90IHByb3ZpZGUgbW9yZSBpbnB1dCBhZnRlciB0aGUgZmlyc3QgRklOSVNIOiAqL1xuICBpZiAocy5zdGF0dXMgPT09IEZJTklTSF9TVEFURSAmJiBzdHJtLmF2YWlsX2luICE9PSAwKSB7XG4gICAgcmV0dXJuIGVycihzdHJtLCBaX0JVRl9FUlJPUik7XG4gIH1cblxuICAvKiBTdGFydCBhIG5ldyBibG9jayBvciBjb250aW51ZSB0aGUgY3VycmVudCBvbmUuXG4gICAqL1xuICBpZiAoc3RybS5hdmFpbF9pbiAhPT0gMCB8fCBzLmxvb2thaGVhZCAhPT0gMCB8fFxuICAgIChmbHVzaCAhPT0gWl9OT19GTFVTSCAmJiBzLnN0YXR1cyAhPT0gRklOSVNIX1NUQVRFKSkge1xuICAgIHZhciBic3RhdGUgPSAocy5zdHJhdGVneSA9PT0gWl9IVUZGTUFOX09OTFkpID8gZGVmbGF0ZV9odWZmKHMsIGZsdXNoKSA6XG4gICAgICAocy5zdHJhdGVneSA9PT0gWl9STEUgPyBkZWZsYXRlX3JsZShzLCBmbHVzaCkgOlxuICAgICAgICBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLmZ1bmMocywgZmx1c2gpKTtcblxuICAgIGlmIChic3RhdGUgPT09IEJTX0ZJTklTSF9TVEFSVEVEIHx8IGJzdGF0ZSA9PT0gQlNfRklOSVNIX0RPTkUpIHtcbiAgICAgIHMuc3RhdHVzID0gRklOSVNIX1NUQVRFO1xuICAgIH1cbiAgICBpZiAoYnN0YXRlID09PSBCU19ORUVEX01PUkUgfHwgYnN0YXRlID09PSBCU19GSU5JU0hfU1RBUlRFRCkge1xuICAgICAgaWYgKHN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHMubGFzdF9mbHVzaCA9IC0xO1xuICAgICAgICAvKiBhdm9pZCBCVUZfRVJST1IgbmV4dCBjYWxsLCBzZWUgYWJvdmUgKi9cbiAgICAgIH1cbiAgICAgIHJldHVybiBaX09LO1xuICAgICAgLyogSWYgZmx1c2ggIT0gWl9OT19GTFVTSCAmJiBhdmFpbF9vdXQgPT0gMCwgdGhlIG5leHQgY2FsbFxuICAgICAgICogb2YgZGVmbGF0ZSBzaG91bGQgdXNlIHRoZSBzYW1lIGZsdXNoIHBhcmFtZXRlciB0byBtYWtlIHN1cmVcbiAgICAgICAqIHRoYXQgdGhlIGZsdXNoIGlzIGNvbXBsZXRlLiBTbyB3ZSBkb24ndCBoYXZlIHRvIG91dHB1dCBhblxuICAgICAgICogZW1wdHkgYmxvY2sgaGVyZSwgdGhpcyB3aWxsIGJlIGRvbmUgYXQgbmV4dCBjYWxsLiBUaGlzIGFsc29cbiAgICAgICAqIGVuc3VyZXMgdGhhdCBmb3IgYSB2ZXJ5IHNtYWxsIG91dHB1dCBidWZmZXIsIHdlIGVtaXQgYXQgbW9zdFxuICAgICAgICogb25lIGVtcHR5IGJsb2NrLlxuICAgICAgICovXG4gICAgfVxuICAgIGlmIChic3RhdGUgPT09IEJTX0JMT0NLX0RPTkUpIHtcbiAgICAgIGlmIChmbHVzaCA9PT0gWl9QQVJUSUFMX0ZMVVNIKSB7XG4gICAgICAgIHRyZWVzLl90cl9hbGlnbihzKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGZsdXNoICE9PSBaX0JMT0NLKSB7IC8qIEZVTExfRkxVU0ggb3IgU1lOQ19GTFVTSCAqL1xuXG4gICAgICAgIHRyZWVzLl90cl9zdG9yZWRfYmxvY2socywgMCwgMCwgZmFsc2UpO1xuICAgICAgICAvKiBGb3IgYSBmdWxsIGZsdXNoLCB0aGlzIGVtcHR5IGJsb2NrIHdpbGwgYmUgcmVjb2duaXplZFxuICAgICAgICAgKiBhcyBhIHNwZWNpYWwgbWFya2VyIGJ5IGluZmxhdGVfc3luYygpLlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGZsdXNoID09PSBaX0ZVTExfRkxVU0gpIHtcbiAgICAgICAgICAvKioqIENMRUFSX0hBU0gocyk7ICoqKi8gICAgICAgICAgICAgLyogZm9yZ2V0IGhpc3RvcnkgKi9cbiAgICAgICAgICB6ZXJvKHMuaGVhZCk7IC8vIEZpbGwgd2l0aCBOSUwgKD0gMCk7XG5cbiAgICAgICAgICBpZiAocy5sb29rYWhlYWQgPT09IDApIHtcbiAgICAgICAgICAgIHMuc3Ryc3RhcnQgPSAwO1xuICAgICAgICAgICAgcy5ibG9ja19zdGFydCA9IDA7XG4gICAgICAgICAgICBzLmluc2VydCA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pO1xuICAgICAgaWYgKHN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHMubGFzdF9mbHVzaCA9IC0xOyAvKiBhdm9pZCBCVUZfRVJST1IgYXQgbmV4dCBjYWxsLCBzZWUgYWJvdmUgKi9cbiAgICAgICAgcmV0dXJuIFpfT0s7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vQXNzZXJ0KHN0cm0tPmF2YWlsX291dCA+IDAsIFwiYnVnMlwiKTtcbiAgLy9pZiAoc3RybS5hdmFpbF9vdXQgPD0gMCkgeyB0aHJvdyBuZXcgRXJyb3IoXCJidWcyXCIpO31cblxuICBpZiAoZmx1c2ggIT09IFpfRklOSVNIKSB7IHJldHVybiBaX09LOyB9XG4gIGlmIChzLndyYXAgPD0gMCkgeyByZXR1cm4gWl9TVFJFQU1fRU5EOyB9XG5cbiAgLyogV3JpdGUgdGhlIHRyYWlsZXIgKi9cbiAgaWYgKHMud3JhcCA9PT0gMikge1xuICAgIHB1dF9ieXRlKHMsIHN0cm0uYWRsZXIgJiAweGZmKTtcbiAgICBwdXRfYnl0ZShzLCAoc3RybS5hZGxlciA+PiA4KSAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIChzdHJtLmFkbGVyID4+IDE2KSAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIChzdHJtLmFkbGVyID4+IDI0KSAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIHN0cm0udG90YWxfaW4gJiAweGZmKTtcbiAgICBwdXRfYnl0ZShzLCAoc3RybS50b3RhbF9pbiA+PiA4KSAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIChzdHJtLnRvdGFsX2luID4+IDE2KSAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIChzdHJtLnRvdGFsX2luID4+IDI0KSAmIDB4ZmYpO1xuICB9XG4gIGVsc2VcbiAge1xuICAgIHB1dFNob3J0TVNCKHMsIHN0cm0uYWRsZXIgPj4+IDE2KTtcbiAgICBwdXRTaG9ydE1TQihzLCBzdHJtLmFkbGVyICYgMHhmZmZmKTtcbiAgfVxuXG4gIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gIC8qIElmIGF2YWlsX291dCBpcyB6ZXJvLCB0aGUgYXBwbGljYXRpb24gd2lsbCBjYWxsIGRlZmxhdGUgYWdhaW5cbiAgICogdG8gZmx1c2ggdGhlIHJlc3QuXG4gICAqL1xuICBpZiAocy53cmFwID4gMCkgeyBzLndyYXAgPSAtcy53cmFwOyB9XG4gIC8qIHdyaXRlIHRoZSB0cmFpbGVyIG9ubHkgb25jZSEgKi9cbiAgcmV0dXJuIHMucGVuZGluZyAhPT0gMCA/IFpfT0sgOiBaX1NUUkVBTV9FTkQ7XG59XG5cbmZ1bmN0aW9uIGRlZmxhdGVFbmQoc3RybSkge1xuICB2YXIgc3RhdHVzO1xuXG4gIGlmICghc3RybS8qPT0gWl9OVUxMKi8gfHwgIXN0cm0uc3RhdGUvKj09IFpfTlVMTCovKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgc3RhdHVzID0gc3RybS5zdGF0ZS5zdGF0dXM7XG4gIGlmIChzdGF0dXMgIT09IElOSVRfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IEVYVFJBX1NUQVRFICYmXG4gICAgc3RhdHVzICE9PSBOQU1FX1NUQVRFICYmXG4gICAgc3RhdHVzICE9PSBDT01NRU5UX1NUQVRFICYmXG4gICAgc3RhdHVzICE9PSBIQ1JDX1NUQVRFICYmXG4gICAgc3RhdHVzICE9PSBCVVNZX1NUQVRFICYmXG4gICAgc3RhdHVzICE9PSBGSU5JU0hfU1RBVEVcbiAgKSB7XG4gICAgcmV0dXJuIGVycihzdHJtLCBaX1NUUkVBTV9FUlJPUik7XG4gIH1cblxuICBzdHJtLnN0YXRlID0gbnVsbDtcblxuICByZXR1cm4gc3RhdHVzID09PSBCVVNZX1NUQVRFID8gZXJyKHN0cm0sIFpfREFUQV9FUlJPUikgOiBaX09LO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEluaXRpYWxpemVzIHRoZSBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5IGZyb20gdGhlIGdpdmVuIGJ5dGVcbiAqIHNlcXVlbmNlIHdpdGhvdXQgcHJvZHVjaW5nIGFueSBjb21wcmVzc2VkIG91dHB1dC5cbiAqL1xuZnVuY3Rpb24gZGVmbGF0ZVNldERpY3Rpb25hcnkoc3RybSwgZGljdGlvbmFyeSkge1xuICB2YXIgZGljdExlbmd0aCA9IGRpY3Rpb25hcnkubGVuZ3RoO1xuXG4gIHZhciBzO1xuICB2YXIgc3RyLCBuO1xuICB2YXIgd3JhcDtcbiAgdmFyIGF2YWlsO1xuICB2YXIgbmV4dDtcbiAgdmFyIGlucHV0O1xuICB2YXIgdG1wRGljdDtcblxuICBpZiAoIXN0cm0vKj09IFpfTlVMTCovIHx8ICFzdHJtLnN0YXRlLyo9PSBaX05VTEwqLykge1xuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuXG4gIHMgPSBzdHJtLnN0YXRlO1xuICB3cmFwID0gcy53cmFwO1xuXG4gIGlmICh3cmFwID09PSAyIHx8ICh3cmFwID09PSAxICYmIHMuc3RhdHVzICE9PSBJTklUX1NUQVRFKSB8fCBzLmxvb2thaGVhZCkge1xuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuXG4gIC8qIHdoZW4gdXNpbmcgemxpYiB3cmFwcGVycywgY29tcHV0ZSBBZGxlci0zMiBmb3IgcHJvdmlkZWQgZGljdGlvbmFyeSAqL1xuICBpZiAod3JhcCA9PT0gMSkge1xuICAgIC8qIGFkbGVyMzIoc3RybS0+YWRsZXIsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgpOyAqL1xuICAgIHN0cm0uYWRsZXIgPSBhZGxlcjMyKHN0cm0uYWRsZXIsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgsIDApO1xuICB9XG5cbiAgcy53cmFwID0gMDsgICAvKiBhdm9pZCBjb21wdXRpbmcgQWRsZXItMzIgaW4gcmVhZF9idWYgKi9cblxuICAvKiBpZiBkaWN0aW9uYXJ5IHdvdWxkIGZpbGwgd2luZG93LCBqdXN0IHJlcGxhY2UgdGhlIGhpc3RvcnkgKi9cbiAgaWYgKGRpY3RMZW5ndGggPj0gcy53X3NpemUpIHtcbiAgICBpZiAod3JhcCA9PT0gMCkgeyAgICAgICAgICAgIC8qIGFscmVhZHkgZW1wdHkgb3RoZXJ3aXNlICovXG4gICAgICAvKioqIENMRUFSX0hBU0gocyk7ICoqKi9cbiAgICAgIHplcm8ocy5oZWFkKTsgLy8gRmlsbCB3aXRoIE5JTCAoPSAwKTtcbiAgICAgIHMuc3Ryc3RhcnQgPSAwO1xuICAgICAgcy5ibG9ja19zdGFydCA9IDA7XG4gICAgICBzLmluc2VydCA9IDA7XG4gICAgfVxuICAgIC8qIHVzZSB0aGUgdGFpbCAqL1xuICAgIC8vIGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5LnNsaWNlKGRpY3RMZW5ndGggLSBzLndfc2l6ZSk7XG4gICAgdG1wRGljdCA9IG5ldyB1dGlscy5CdWY4KHMud19zaXplKTtcbiAgICB1dGlscy5hcnJheVNldCh0bXBEaWN0LCBkaWN0aW9uYXJ5LCBkaWN0TGVuZ3RoIC0gcy53X3NpemUsIHMud19zaXplLCAwKTtcbiAgICBkaWN0aW9uYXJ5ID0gdG1wRGljdDtcbiAgICBkaWN0TGVuZ3RoID0gcy53X3NpemU7XG4gIH1cbiAgLyogaW5zZXJ0IGRpY3Rpb25hcnkgaW50byB3aW5kb3cgYW5kIGhhc2ggKi9cbiAgYXZhaWwgPSBzdHJtLmF2YWlsX2luO1xuICBuZXh0ID0gc3RybS5uZXh0X2luO1xuICBpbnB1dCA9IHN0cm0uaW5wdXQ7XG4gIHN0cm0uYXZhaWxfaW4gPSBkaWN0TGVuZ3RoO1xuICBzdHJtLm5leHRfaW4gPSAwO1xuICBzdHJtLmlucHV0ID0gZGljdGlvbmFyeTtcbiAgZmlsbF93aW5kb3cocyk7XG4gIHdoaWxlIChzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0gpIHtcbiAgICBzdHIgPSBzLnN0cnN0YXJ0O1xuICAgIG4gPSBzLmxvb2thaGVhZCAtIChNSU5fTUFUQ0ggLSAxKTtcbiAgICBkbyB7XG4gICAgICAvKiBVUERBVEVfSEFTSChzLCBzLT5pbnNfaCwgcy0+d2luZG93W3N0ciArIE1JTl9NQVRDSC0xXSk7ICovXG4gICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzdHIgKyBNSU5fTUFUQ0ggLSAxXSkgJiBzLmhhc2hfbWFzaztcblxuICAgICAgcy5wcmV2W3N0ciAmIHMud19tYXNrXSA9IHMuaGVhZFtzLmluc19oXTtcblxuICAgICAgcy5oZWFkW3MuaW5zX2hdID0gc3RyO1xuICAgICAgc3RyKys7XG4gICAgfSB3aGlsZSAoLS1uKTtcbiAgICBzLnN0cnN0YXJ0ID0gc3RyO1xuICAgIHMubG9va2FoZWFkID0gTUlOX01BVENIIC0gMTtcbiAgICBmaWxsX3dpbmRvdyhzKTtcbiAgfVxuICBzLnN0cnN0YXJ0ICs9IHMubG9va2FoZWFkO1xuICBzLmJsb2NrX3N0YXJ0ID0gcy5zdHJzdGFydDtcbiAgcy5pbnNlcnQgPSBzLmxvb2thaGVhZDtcbiAgcy5sb29rYWhlYWQgPSAwO1xuICBzLm1hdGNoX2xlbmd0aCA9IHMucHJldl9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxO1xuICBzLm1hdGNoX2F2YWlsYWJsZSA9IDA7XG4gIHN0cm0ubmV4dF9pbiA9IG5leHQ7XG4gIHN0cm0uaW5wdXQgPSBpbnB1dDtcbiAgc3RybS5hdmFpbF9pbiA9IGF2YWlsO1xuICBzLndyYXAgPSB3cmFwO1xuICByZXR1cm4gWl9PSztcbn1cblxuXG5leHBvcnRzLmRlZmxhdGVJbml0ID0gZGVmbGF0ZUluaXQ7XG5leHBvcnRzLmRlZmxhdGVJbml0MiA9IGRlZmxhdGVJbml0MjtcbmV4cG9ydHMuZGVmbGF0ZVJlc2V0ID0gZGVmbGF0ZVJlc2V0O1xuZXhwb3J0cy5kZWZsYXRlUmVzZXRLZWVwID0gZGVmbGF0ZVJlc2V0S2VlcDtcbmV4cG9ydHMuZGVmbGF0ZVNldEhlYWRlciA9IGRlZmxhdGVTZXRIZWFkZXI7XG5leHBvcnRzLmRlZmxhdGUgPSBkZWZsYXRlO1xuZXhwb3J0cy5kZWZsYXRlRW5kID0gZGVmbGF0ZUVuZDtcbmV4cG9ydHMuZGVmbGF0ZVNldERpY3Rpb25hcnkgPSBkZWZsYXRlU2V0RGljdGlvbmFyeTtcbmV4cG9ydHMuZGVmbGF0ZUluZm8gPSAncGFrbyBkZWZsYXRlIChmcm9tIE5vZGVjYSBwcm9qZWN0KSc7XG5cbi8qIE5vdCBpbXBsZW1lbnRlZFxuZXhwb3J0cy5kZWZsYXRlQm91bmQgPSBkZWZsYXRlQm91bmQ7XG5leHBvcnRzLmRlZmxhdGVDb3B5ID0gZGVmbGF0ZUNvcHk7XG5leHBvcnRzLmRlZmxhdGVQYXJhbXMgPSBkZWZsYXRlUGFyYW1zO1xuZXhwb3J0cy5kZWZsYXRlUGVuZGluZyA9IGRlZmxhdGVQZW5kaW5nO1xuZXhwb3J0cy5kZWZsYXRlUHJpbWUgPSBkZWZsYXRlUHJpbWU7XG5leHBvcnRzLmRlZmxhdGVUdW5lID0gZGVmbGF0ZVR1bmU7XG4qL1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbi8vIFNlZSBzdGF0ZSBkZWZzIGZyb20gaW5mbGF0ZS5qc1xudmFyIEJBRCA9IDMwOyAgICAgICAvKiBnb3QgYSBkYXRhIGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovXG52YXIgVFlQRSA9IDEyOyAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIHR5cGUgYml0cywgaW5jbHVkaW5nIGxhc3QtZmxhZyBiaXQgKi9cblxuLypcbiAgIERlY29kZSBsaXRlcmFsLCBsZW5ndGgsIGFuZCBkaXN0YW5jZSBjb2RlcyBhbmQgd3JpdGUgb3V0IHRoZSByZXN1bHRpbmdcbiAgIGxpdGVyYWwgYW5kIG1hdGNoIGJ5dGVzIHVudGlsIGVpdGhlciBub3QgZW5vdWdoIGlucHV0IG9yIG91dHB1dCBpc1xuICAgYXZhaWxhYmxlLCBhbiBlbmQtb2YtYmxvY2sgaXMgZW5jb3VudGVyZWQsIG9yIGEgZGF0YSBlcnJvciBpcyBlbmNvdW50ZXJlZC5cbiAgIFdoZW4gbGFyZ2UgZW5vdWdoIGlucHV0IGFuZCBvdXRwdXQgYnVmZmVycyBhcmUgc3VwcGxpZWQgdG8gaW5mbGF0ZSgpLCBmb3JcbiAgIGV4YW1wbGUsIGEgMTZLIGlucHV0IGJ1ZmZlciBhbmQgYSA2NEsgb3V0cHV0IGJ1ZmZlciwgbW9yZSB0aGFuIDk1JSBvZiB0aGVcbiAgIGluZmxhdGUgZXhlY3V0aW9uIHRpbWUgaXMgc3BlbnQgaW4gdGhpcyByb3V0aW5lLlxuXG4gICBFbnRyeSBhc3N1bXB0aW9uczpcblxuICAgICAgICBzdGF0ZS5tb2RlID09PSBMRU5cbiAgICAgICAgc3RybS5hdmFpbF9pbiA+PSA2XG4gICAgICAgIHN0cm0uYXZhaWxfb3V0ID49IDI1OFxuICAgICAgICBzdGFydCA+PSBzdHJtLmF2YWlsX291dFxuICAgICAgICBzdGF0ZS5iaXRzIDwgOFxuXG4gICBPbiByZXR1cm4sIHN0YXRlLm1vZGUgaXMgb25lIG9mOlxuXG4gICAgICAgIExFTiAtLSByYW4gb3V0IG9mIGVub3VnaCBvdXRwdXQgc3BhY2Ugb3IgZW5vdWdoIGF2YWlsYWJsZSBpbnB1dFxuICAgICAgICBUWVBFIC0tIHJlYWNoZWQgZW5kIG9mIGJsb2NrIGNvZGUsIGluZmxhdGUoKSB0byBpbnRlcnByZXQgbmV4dCBibG9ja1xuICAgICAgICBCQUQgLS0gZXJyb3IgaW4gYmxvY2sgZGF0YVxuXG4gICBOb3RlczpcblxuICAgIC0gVGhlIG1heGltdW0gaW5wdXQgYml0cyB1c2VkIGJ5IGEgbGVuZ3RoL2Rpc3RhbmNlIHBhaXIgaXMgMTUgYml0cyBmb3IgdGhlXG4gICAgICBsZW5ndGggY29kZSwgNSBiaXRzIGZvciB0aGUgbGVuZ3RoIGV4dHJhLCAxNSBiaXRzIGZvciB0aGUgZGlzdGFuY2UgY29kZSxcbiAgICAgIGFuZCAxMyBiaXRzIGZvciB0aGUgZGlzdGFuY2UgZXh0cmEuICBUaGlzIHRvdGFscyA0OCBiaXRzLCBvciBzaXggYnl0ZXMuXG4gICAgICBUaGVyZWZvcmUgaWYgc3RybS5hdmFpbF9pbiA+PSA2LCB0aGVuIHRoZXJlIGlzIGVub3VnaCBpbnB1dCB0byBhdm9pZFxuICAgICAgY2hlY2tpbmcgZm9yIGF2YWlsYWJsZSBpbnB1dCB3aGlsZSBkZWNvZGluZy5cblxuICAgIC0gVGhlIG1heGltdW0gYnl0ZXMgdGhhdCBhIHNpbmdsZSBsZW5ndGgvZGlzdGFuY2UgcGFpciBjYW4gb3V0cHV0IGlzIDI1OFxuICAgICAgYnl0ZXMsIHdoaWNoIGlzIHRoZSBtYXhpbXVtIGxlbmd0aCB0aGF0IGNhbiBiZSBjb2RlZC4gIGluZmxhdGVfZmFzdCgpXG4gICAgICByZXF1aXJlcyBzdHJtLmF2YWlsX291dCA+PSAyNTggZm9yIGVhY2ggbG9vcCB0byBhdm9pZCBjaGVja2luZyBmb3JcbiAgICAgIG91dHB1dCBzcGFjZS5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmZsYXRlX2Zhc3Qoc3RybSwgc3RhcnQpIHtcbiAgdmFyIHN0YXRlO1xuICB2YXIgX2luOyAgICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5pbnB1dCAqL1xuICB2YXIgbGFzdDsgICAgICAgICAgICAgICAgICAgLyogaGF2ZSBlbm91Z2ggaW5wdXQgd2hpbGUgaW4gPCBsYXN0ICovXG4gIHZhciBfb3V0OyAgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLm91dHB1dCAqL1xuICB2YXIgYmVnOyAgICAgICAgICAgICAgICAgICAgLyogaW5mbGF0ZSgpJ3MgaW5pdGlhbCBzdHJtLm91dHB1dCAqL1xuICB2YXIgZW5kOyAgICAgICAgICAgICAgICAgICAgLyogd2hpbGUgb3V0IDwgZW5kLCBlbm91Z2ggc3BhY2UgYXZhaWxhYmxlICovXG4vLyNpZmRlZiBJTkZMQVRFX1NUUklDVFxuICB2YXIgZG1heDsgICAgICAgICAgICAgICAgICAgLyogbWF4aW11bSBkaXN0YW5jZSBmcm9tIHpsaWIgaGVhZGVyICovXG4vLyNlbmRpZlxuICB2YXIgd3NpemU7ICAgICAgICAgICAgICAgICAgLyogd2luZG93IHNpemUgb3IgemVybyBpZiBub3QgdXNpbmcgd2luZG93ICovXG4gIHZhciB3aGF2ZTsgICAgICAgICAgICAgICAgICAvKiB2YWxpZCBieXRlcyBpbiB0aGUgd2luZG93ICovXG4gIHZhciB3bmV4dDsgICAgICAgICAgICAgICAgICAvKiB3aW5kb3cgd3JpdGUgaW5kZXggKi9cbiAgLy8gVXNlIGBzX3dpbmRvd2AgaW5zdGVhZCBgd2luZG93YCwgYXZvaWQgY29uZmxpY3Qgd2l0aCBpbnN0cnVtZW50YXRpb24gdG9vbHNcbiAgdmFyIHNfd2luZG93OyAgICAgICAgICAgICAgIC8qIGFsbG9jYXRlZCBzbGlkaW5nIHdpbmRvdywgaWYgd3NpemUgIT0gMCAqL1xuICB2YXIgaG9sZDsgICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5ob2xkICovXG4gIHZhciBiaXRzOyAgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLmJpdHMgKi9cbiAgdmFyIGxjb2RlOyAgICAgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0ubGVuY29kZSAqL1xuICB2YXIgZGNvZGU7ICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5kaXN0Y29kZSAqL1xuICB2YXIgbG1hc2s7ICAgICAgICAgICAgICAgICAgLyogbWFzayBmb3IgZmlyc3QgbGV2ZWwgb2YgbGVuZ3RoIGNvZGVzICovXG4gIHZhciBkbWFzazsgICAgICAgICAgICAgICAgICAvKiBtYXNrIGZvciBmaXJzdCBsZXZlbCBvZiBkaXN0YW5jZSBjb2RlcyAqL1xuICB2YXIgaGVyZTsgICAgICAgICAgICAgICAgICAgLyogcmV0cmlldmVkIHRhYmxlIGVudHJ5ICovXG4gIHZhciBvcDsgICAgICAgICAgICAgICAgICAgICAvKiBjb2RlIGJpdHMsIG9wZXJhdGlvbiwgZXh0cmEgYml0cywgb3IgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICB3aW5kb3cgcG9zaXRpb24sIHdpbmRvdyBieXRlcyB0byBjb3B5ICovXG4gIHZhciBsZW47ICAgICAgICAgICAgICAgICAgICAvKiBtYXRjaCBsZW5ndGgsIHVudXNlZCBieXRlcyAqL1xuICB2YXIgZGlzdDsgICAgICAgICAgICAgICAgICAgLyogbWF0Y2ggZGlzdGFuY2UgKi9cbiAgdmFyIGZyb207ICAgICAgICAgICAgICAgICAgIC8qIHdoZXJlIHRvIGNvcHkgbWF0Y2ggZnJvbSAqL1xuICB2YXIgZnJvbV9zb3VyY2U7XG5cblxuICB2YXIgaW5wdXQsIG91dHB1dDsgLy8gSlMgc3BlY2lmaWMsIGJlY2F1c2Ugd2UgaGF2ZSBubyBwb2ludGVyc1xuXG4gIC8qIGNvcHkgc3RhdGUgdG8gbG9jYWwgdmFyaWFibGVzICovXG4gIHN0YXRlID0gc3RybS5zdGF0ZTtcbiAgLy9oZXJlID0gc3RhdGUuaGVyZTtcbiAgX2luID0gc3RybS5uZXh0X2luO1xuICBpbnB1dCA9IHN0cm0uaW5wdXQ7XG4gIGxhc3QgPSBfaW4gKyAoc3RybS5hdmFpbF9pbiAtIDUpO1xuICBfb3V0ID0gc3RybS5uZXh0X291dDtcbiAgb3V0cHV0ID0gc3RybS5vdXRwdXQ7XG4gIGJlZyA9IF9vdXQgLSAoc3RhcnQgLSBzdHJtLmF2YWlsX291dCk7XG4gIGVuZCA9IF9vdXQgKyAoc3RybS5hdmFpbF9vdXQgLSAyNTcpO1xuLy8jaWZkZWYgSU5GTEFURV9TVFJJQ1RcbiAgZG1heCA9IHN0YXRlLmRtYXg7XG4vLyNlbmRpZlxuICB3c2l6ZSA9IHN0YXRlLndzaXplO1xuICB3aGF2ZSA9IHN0YXRlLndoYXZlO1xuICB3bmV4dCA9IHN0YXRlLnduZXh0O1xuICBzX3dpbmRvdyA9IHN0YXRlLndpbmRvdztcbiAgaG9sZCA9IHN0YXRlLmhvbGQ7XG4gIGJpdHMgPSBzdGF0ZS5iaXRzO1xuICBsY29kZSA9IHN0YXRlLmxlbmNvZGU7XG4gIGRjb2RlID0gc3RhdGUuZGlzdGNvZGU7XG4gIGxtYXNrID0gKDEgPDwgc3RhdGUubGVuYml0cykgLSAxO1xuICBkbWFzayA9ICgxIDw8IHN0YXRlLmRpc3RiaXRzKSAtIDE7XG5cblxuICAvKiBkZWNvZGUgbGl0ZXJhbHMgYW5kIGxlbmd0aC9kaXN0YW5jZXMgdW50aWwgZW5kLW9mLWJsb2NrIG9yIG5vdCBlbm91Z2hcbiAgICAgaW5wdXQgZGF0YSBvciBvdXRwdXQgc3BhY2UgKi9cblxuICB0b3A6XG4gIGRvIHtcbiAgICBpZiAoYml0cyA8IDE1KSB7XG4gICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgYml0cyArPSA4O1xuICAgICAgaG9sZCArPSBpbnB1dFtfaW4rK10gPDwgYml0cztcbiAgICAgIGJpdHMgKz0gODtcbiAgICB9XG5cbiAgICBoZXJlID0gbGNvZGVbaG9sZCAmIGxtYXNrXTtcblxuICAgIGRvbGVuOlxuICAgIGZvciAoOzspIHsgLy8gR290byBlbXVsYXRpb25cbiAgICAgIG9wID0gaGVyZSA+Pj4gMjQvKmhlcmUuYml0cyovO1xuICAgICAgaG9sZCA+Pj49IG9wO1xuICAgICAgYml0cyAtPSBvcDtcbiAgICAgIG9wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmYvKmhlcmUub3AqLztcbiAgICAgIGlmIChvcCA9PT0gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGl0ZXJhbCAqL1xuICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgaGVyZS52YWwgPj0gMHgyMCAmJiBoZXJlLnZhbCA8IDB4N2YgP1xuICAgICAgICAvLyAgICAgICAgXCJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgJyVjJ1xcblwiIDpcbiAgICAgICAgLy8gICAgICAgIFwiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsIDB4JTAyeFxcblwiLCBoZXJlLnZhbCkpO1xuICAgICAgICBvdXRwdXRbX291dCsrXSA9IGhlcmUgJiAweGZmZmYvKmhlcmUudmFsKi87XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChvcCAmIDE2KSB7ICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ3RoIGJhc2UgKi9cbiAgICAgICAgbGVuID0gaGVyZSAmIDB4ZmZmZi8qaGVyZS52YWwqLztcbiAgICAgICAgb3AgJj0gMTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGV4dHJhIGJpdHMgKi9cbiAgICAgICAgaWYgKG9wKSB7XG4gICAgICAgICAgaWYgKGJpdHMgPCBvcCkge1xuICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtfaW4rK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGVuICs9IGhvbGQgJiAoKDEgPDwgb3ApIC0gMSk7XG4gICAgICAgICAgaG9sZCA+Pj49IG9wO1xuICAgICAgICAgIGJpdHMgLT0gb3A7XG4gICAgICAgIH1cbiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBsZW5ndGggJXVcXG5cIiwgbGVuKSk7XG4gICAgICAgIGlmIChiaXRzIDwgMTUpIHtcbiAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICBoZXJlID0gZGNvZGVbaG9sZCAmIGRtYXNrXTtcblxuICAgICAgICBkb2Rpc3Q6XG4gICAgICAgIGZvciAoOzspIHsgLy8gZ290byBlbXVsYXRpb25cbiAgICAgICAgICBvcCA9IGhlcmUgPj4+IDI0LypoZXJlLmJpdHMqLztcbiAgICAgICAgICBob2xkID4+Pj0gb3A7XG4gICAgICAgICAgYml0cyAtPSBvcDtcbiAgICAgICAgICBvcCA9IChoZXJlID4+PiAxNikgJiAweGZmLypoZXJlLm9wKi87XG5cbiAgICAgICAgICBpZiAob3AgJiAxNikgeyAgICAgICAgICAgICAgICAgICAgICAvKiBkaXN0YW5jZSBiYXNlICovXG4gICAgICAgICAgICBkaXN0ID0gaGVyZSAmIDB4ZmZmZi8qaGVyZS52YWwqLztcbiAgICAgICAgICAgIG9wICY9IDE1OyAgICAgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGV4dHJhIGJpdHMgKi9cbiAgICAgICAgICAgIGlmIChiaXRzIDwgb3ApIHtcbiAgICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtfaW4rK10gPDwgYml0cztcbiAgICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgICBpZiAoYml0cyA8IG9wKSB7XG4gICAgICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtfaW4rK10gPDwgYml0cztcbiAgICAgICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpc3QgKz0gaG9sZCAmICgoMSA8PCBvcCkgLSAxKTtcbi8vI2lmZGVmIElORkxBVEVfU1RSSUNUXG4gICAgICAgICAgICBpZiAoZGlzdCA+IGRtYXgpIHtcbiAgICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2snO1xuICAgICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgICAgICBicmVhayB0b3A7XG4gICAgICAgICAgICB9XG4vLyNlbmRpZlxuICAgICAgICAgICAgaG9sZCA+Pj49IG9wO1xuICAgICAgICAgICAgYml0cyAtPSBvcDtcbiAgICAgICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCBcImluZmxhdGU6ICAgICAgICAgZGlzdGFuY2UgJXVcXG5cIiwgZGlzdCkpO1xuICAgICAgICAgICAgb3AgPSBfb3V0IC0gYmVnOyAgICAgICAgICAgICAgICAvKiBtYXggZGlzdGFuY2UgaW4gb3V0cHV0ICovXG4gICAgICAgICAgICBpZiAoZGlzdCA+IG9wKSB7ICAgICAgICAgICAgICAgIC8qIHNlZSBpZiBjb3B5IGZyb20gd2luZG93ICovXG4gICAgICAgICAgICAgIG9wID0gZGlzdCAtIG9wOyAgICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhY2sgaW4gd2luZG93ICovXG4gICAgICAgICAgICAgIGlmIChvcCA+IHdoYXZlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlLnNhbmUpIHtcbiAgICAgICAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrJztcbiAgICAgICAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICAgICAgICBicmVhayB0b3A7XG4gICAgICAgICAgICAgICAgfVxuXG4vLyAoISkgVGhpcyBibG9jayBpcyBkaXNhYmxlZCBpbiB6bGliIGRlZmF1bHRzLFxuLy8gZG9uJ3QgZW5hYmxlIGl0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eVxuLy8jaWZkZWYgSU5GTEFURV9BTExPV19JTlZBTElEX0RJU1RBTkNFX1RPT0ZBUl9BUlJSXG4vLyAgICAgICAgICAgICAgICBpZiAobGVuIDw9IG9wIC0gd2hhdmUpIHtcbi8vICAgICAgICAgICAgICAgICAgZG8ge1xuLy8gICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gMDtcbi8vICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1sZW4pO1xuLy8gICAgICAgICAgICAgICAgICBjb250aW51ZSB0b3A7XG4vLyAgICAgICAgICAgICAgICB9XG4vLyAgICAgICAgICAgICAgICBsZW4gLT0gb3AgLSB3aGF2ZTtcbi8vICAgICAgICAgICAgICAgIGRvIHtcbi8vICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSAwO1xuLy8gICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCA+IHdoYXZlKTtcbi8vICAgICAgICAgICAgICAgIGlmIChvcCA9PT0gMCkge1xuLy8gICAgICAgICAgICAgICAgICBmcm9tID0gX291dCAtIGRpc3Q7XG4vLyAgICAgICAgICAgICAgICAgIGRvIHtcbi8vICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdO1xuLy8gICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLWxlbik7XG4vLyAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHRvcDtcbi8vICAgICAgICAgICAgICAgIH1cbi8vI2VuZGlmXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZnJvbSA9IDA7IC8vIHdpbmRvdyBpbmRleFxuICAgICAgICAgICAgICBmcm9tX3NvdXJjZSA9IHNfd2luZG93O1xuICAgICAgICAgICAgICBpZiAod25leHQgPT09IDApIHsgICAgICAgICAgIC8qIHZlcnkgY29tbW9uIGNhc2UgKi9cbiAgICAgICAgICAgICAgICBmcm9tICs9IHdzaXplIC0gb3A7XG4gICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAgLyogc29tZSBmcm9tIHdpbmRvdyAqL1xuICAgICAgICAgICAgICAgICAgbGVuIC09IG9wO1xuICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IHNfd2luZG93W2Zyb20rK107XG4gICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wKTtcbiAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsgIC8qIHJlc3QgZnJvbSBvdXRwdXQgKi9cbiAgICAgICAgICAgICAgICAgIGZyb21fc291cmNlID0gb3V0cHV0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlIGlmICh3bmV4dCA8IG9wKSB7ICAgICAgLyogd3JhcCBhcm91bmQgd2luZG93ICovXG4gICAgICAgICAgICAgICAgZnJvbSArPSB3c2l6ZSArIHduZXh0IC0gb3A7XG4gICAgICAgICAgICAgICAgb3AgLT0gd25leHQ7XG4gICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAgLyogc29tZSBmcm9tIGVuZCBvZiB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDtcbiAgICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBzX3dpbmRvd1tmcm9tKytdO1xuICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7XG4gICAgICAgICAgICAgICAgICBmcm9tID0gMDtcbiAgICAgICAgICAgICAgICAgIGlmICh3bmV4dCA8IGxlbikgeyAgLyogc29tZSBmcm9tIHN0YXJ0IG9mIHdpbmRvdyAqL1xuICAgICAgICAgICAgICAgICAgICBvcCA9IHduZXh0O1xuICAgICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7XG4gICAgICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IHNfd2luZG93W2Zyb20rK107XG4gICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3ApO1xuICAgICAgICAgICAgICAgICAgICBmcm9tID0gX291dCAtIGRpc3Q7ICAgICAgLyogcmVzdCBmcm9tIG91dHB1dCAqL1xuICAgICAgICAgICAgICAgICAgICBmcm9tX3NvdXJjZSA9IG91dHB1dDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbnRpZ3VvdXMgaW4gd2luZG93ICovXG4gICAgICAgICAgICAgICAgZnJvbSArPSB3bmV4dCAtIG9wO1xuICAgICAgICAgICAgICAgIGlmIChvcCA8IGxlbikgeyAgICAgICAgIC8qIHNvbWUgZnJvbSB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDtcbiAgICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBzX3dpbmRvd1tmcm9tKytdO1xuICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7XG4gICAgICAgICAgICAgICAgICBmcm9tID0gX291dCAtIGRpc3Q7ICAvKiByZXN0IGZyb20gb3V0cHV0ICovXG4gICAgICAgICAgICAgICAgICBmcm9tX3NvdXJjZSA9IG91dHB1dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgd2hpbGUgKGxlbiA+IDIpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107XG4gICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBmcm9tX3NvdXJjZVtmcm9tKytdO1xuICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gZnJvbV9zb3VyY2VbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICBsZW4gLT0gMztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAobGVuKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBmcm9tX3NvdXJjZVtmcm9tKytdO1xuICAgICAgICAgICAgICAgIGlmIChsZW4gPiAxKSB7XG4gICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgZnJvbSA9IF9vdXQgLSBkaXN0OyAgICAgICAgICAvKiBjb3B5IGRpcmVjdCBmcm9tIG91dHB1dCAqL1xuICAgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgLyogbWluaW11bSBsZW5ndGggaXMgdGhyZWUgKi9cbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdO1xuICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107XG4gICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBvdXRwdXRbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICBsZW4gLT0gMztcbiAgICAgICAgICAgICAgfSB3aGlsZSAobGVuID4gMik7XG4gICAgICAgICAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdO1xuICAgICAgICAgICAgICAgIGlmIChsZW4gPiAxKSB7XG4gICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmICgob3AgJiA2NCkgPT09IDApIHsgICAgICAgICAgLyogMm5kIGxldmVsIGRpc3RhbmNlIGNvZGUgKi9cbiAgICAgICAgICAgIGhlcmUgPSBkY29kZVsoaGVyZSAmIDB4ZmZmZikvKmhlcmUudmFsKi8gKyAoaG9sZCAmICgoMSA8PCBvcCkgLSAxKSldO1xuICAgICAgICAgICAgY29udGludWUgZG9kaXN0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgY29kZSc7XG4gICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgICAgYnJlYWsgdG9wO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrOyAvLyBuZWVkIHRvIGVtdWxhdGUgZ290byB2aWEgXCJjb250aW51ZVwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKChvcCAmIDY0KSA9PT0gMCkgeyAgICAgICAgICAgICAgLyogMm5kIGxldmVsIGxlbmd0aCBjb2RlICovXG4gICAgICAgIGhlcmUgPSBsY29kZVsoaGVyZSAmIDB4ZmZmZikvKmhlcmUudmFsKi8gKyAoaG9sZCAmICgoMSA8PCBvcCkgLSAxKSldO1xuICAgICAgICBjb250aW51ZSBkb2xlbjtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKG9wICYgMzIpIHsgICAgICAgICAgICAgICAgICAgICAvKiBlbmQtb2YtYmxvY2sgKi9cbiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBlbmQgb2YgYmxvY2tcXG5cIikpO1xuICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRTtcbiAgICAgICAgYnJlYWsgdG9wO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSc7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgIGJyZWFrIHRvcDtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7IC8vIG5lZWQgdG8gZW11bGF0ZSBnb3RvIHZpYSBcImNvbnRpbnVlXCJcbiAgICB9XG4gIH0gd2hpbGUgKF9pbiA8IGxhc3QgJiYgX291dCA8IGVuZCk7XG5cbiAgLyogcmV0dXJuIHVudXNlZCBieXRlcyAob24gZW50cnksIGJpdHMgPCA4LCBzbyBpbiB3b24ndCBnbyB0b28gZmFyIGJhY2spICovXG4gIGxlbiA9IGJpdHMgPj4gMztcbiAgX2luIC09IGxlbjtcbiAgYml0cyAtPSBsZW4gPDwgMztcbiAgaG9sZCAmPSAoMSA8PCBiaXRzKSAtIDE7XG5cbiAgLyogdXBkYXRlIHN0YXRlIGFuZCByZXR1cm4gKi9cbiAgc3RybS5uZXh0X2luID0gX2luO1xuICBzdHJtLm5leHRfb3V0ID0gX291dDtcbiAgc3RybS5hdmFpbF9pbiA9IChfaW4gPCBsYXN0ID8gNSArIChsYXN0IC0gX2luKSA6IDUgLSAoX2luIC0gbGFzdCkpO1xuICBzdHJtLmF2YWlsX291dCA9IChfb3V0IDwgZW5kID8gMjU3ICsgKGVuZCAtIF9vdXQpIDogMjU3IC0gKF9vdXQgLSBlbmQpKTtcbiAgc3RhdGUuaG9sZCA9IGhvbGQ7XG4gIHN0YXRlLmJpdHMgPSBiaXRzO1xuICByZXR1cm47XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbnZhciB1dGlscyAgICAgICAgID0gcmVxdWlyZSgnLi4vdXRpbHMvY29tbW9uJyk7XG52YXIgYWRsZXIzMiAgICAgICA9IHJlcXVpcmUoJy4vYWRsZXIzMicpO1xudmFyIGNyYzMyICAgICAgICAgPSByZXF1aXJlKCcuL2NyYzMyJyk7XG52YXIgaW5mbGF0ZV9mYXN0ICA9IHJlcXVpcmUoJy4vaW5mZmFzdCcpO1xudmFyIGluZmxhdGVfdGFibGUgPSByZXF1aXJlKCcuL2luZnRyZWVzJyk7XG5cbnZhciBDT0RFUyA9IDA7XG52YXIgTEVOUyA9IDE7XG52YXIgRElTVFMgPSAyO1xuXG4vKiBQdWJsaWMgY29uc3RhbnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG4vKiBBbGxvd2VkIGZsdXNoIHZhbHVlczsgc2VlIGRlZmxhdGUoKSBhbmQgaW5mbGF0ZSgpIGJlbG93IGZvciBkZXRhaWxzICovXG4vL3ZhciBaX05PX0ZMVVNIICAgICAgPSAwO1xuLy92YXIgWl9QQVJUSUFMX0ZMVVNIID0gMTtcbi8vdmFyIFpfU1lOQ19GTFVTSCAgICA9IDI7XG4vL3ZhciBaX0ZVTExfRkxVU0ggICAgPSAzO1xudmFyIFpfRklOSVNIICAgICAgICA9IDQ7XG52YXIgWl9CTE9DSyAgICAgICAgID0gNTtcbnZhciBaX1RSRUVTICAgICAgICAgPSA2O1xuXG5cbi8qIFJldHVybiBjb2RlcyBmb3IgdGhlIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gZnVuY3Rpb25zLiBOZWdhdGl2ZSB2YWx1ZXNcbiAqIGFyZSBlcnJvcnMsIHBvc2l0aXZlIHZhbHVlcyBhcmUgdXNlZCBmb3Igc3BlY2lhbCBidXQgbm9ybWFsIGV2ZW50cy5cbiAqL1xudmFyIFpfT0sgICAgICAgICAgICA9IDA7XG52YXIgWl9TVFJFQU1fRU5EICAgID0gMTtcbnZhciBaX05FRURfRElDVCAgICAgPSAyO1xuLy92YXIgWl9FUlJOTyAgICAgICAgID0gLTE7XG52YXIgWl9TVFJFQU1fRVJST1IgID0gLTI7XG52YXIgWl9EQVRBX0VSUk9SICAgID0gLTM7XG52YXIgWl9NRU1fRVJST1IgICAgID0gLTQ7XG52YXIgWl9CVUZfRVJST1IgICAgID0gLTU7XG4vL3ZhciBaX1ZFUlNJT05fRVJST1IgPSAtNjtcblxuLyogVGhlIGRlZmxhdGUgY29tcHJlc3Npb24gbWV0aG9kICovXG52YXIgWl9ERUZMQVRFRCAgPSA4O1xuXG5cbi8qIFNUQVRFUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cbnZhciAgICBIRUFEID0gMTsgICAgICAgLyogaTogd2FpdGluZyBmb3IgbWFnaWMgaGVhZGVyICovXG52YXIgICAgRkxBR1MgPSAyOyAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIG1ldGhvZCBhbmQgZmxhZ3MgKGd6aXApICovXG52YXIgICAgVElNRSA9IDM7ICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIG1vZGlmaWNhdGlvbiB0aW1lIChnemlwKSAqL1xudmFyICAgIE9TID0gNDsgICAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBmbGFncyBhbmQgb3BlcmF0aW5nIHN5c3RlbSAoZ3ppcCkgKi9cbnZhciAgICBFWExFTiA9IDU7ICAgICAgLyogaTogd2FpdGluZyBmb3IgZXh0cmEgbGVuZ3RoIChnemlwKSAqL1xudmFyICAgIEVYVFJBID0gNjsgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBieXRlcyAoZ3ppcCkgKi9cbnZhciAgICBOQU1FID0gNzsgICAgICAgLyogaTogd2FpdGluZyBmb3IgZW5kIG9mIGZpbGUgbmFtZSAoZ3ppcCkgKi9cbnZhciAgICBDT01NRU5UID0gODsgICAgLyogaTogd2FpdGluZyBmb3IgZW5kIG9mIGNvbW1lbnQgKGd6aXApICovXG52YXIgICAgSENSQyA9IDk7ICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGhlYWRlciBjcmMgKGd6aXApICovXG52YXIgICAgRElDVElEID0gMTA7ICAgIC8qIGk6IHdhaXRpbmcgZm9yIGRpY3Rpb25hcnkgY2hlY2sgdmFsdWUgKi9cbnZhciAgICBESUNUID0gMTE7ICAgICAgLyogd2FpdGluZyBmb3IgaW5mbGF0ZVNldERpY3Rpb25hcnkoKSBjYWxsICovXG52YXIgICAgICAgIFRZUEUgPSAxMjsgICAgICAvKiBpOiB3YWl0aW5nIGZvciB0eXBlIGJpdHMsIGluY2x1ZGluZyBsYXN0LWZsYWcgYml0ICovXG52YXIgICAgICAgIFRZUEVETyA9IDEzOyAgICAvKiBpOiBzYW1lLCBidXQgc2tpcCBjaGVjayB0byBleGl0IGluZmxhdGUgb24gbmV3IGJsb2NrICovXG52YXIgICAgICAgIFNUT1JFRCA9IDE0OyAgICAvKiBpOiB3YWl0aW5nIGZvciBzdG9yZWQgc2l6ZSAobGVuZ3RoIGFuZCBjb21wbGVtZW50KSAqL1xudmFyICAgICAgICBDT1BZXyA9IDE1OyAgICAgLyogaS9vOiBzYW1lIGFzIENPUFkgYmVsb3csIGJ1dCBvbmx5IGZpcnN0IHRpbWUgaW4gKi9cbnZhciAgICAgICAgQ09QWSA9IDE2OyAgICAgIC8qIGkvbzogd2FpdGluZyBmb3IgaW5wdXQgb3Igb3V0cHV0IHRvIGNvcHkgc3RvcmVkIGJsb2NrICovXG52YXIgICAgICAgIFRBQkxFID0gMTc7ICAgICAvKiBpOiB3YWl0aW5nIGZvciBkeW5hbWljIGJsb2NrIHRhYmxlIGxlbmd0aHMgKi9cbnZhciAgICAgICAgTEVOTEVOUyA9IDE4OyAgIC8qIGk6IHdhaXRpbmcgZm9yIGNvZGUgbGVuZ3RoIGNvZGUgbGVuZ3RocyAqL1xudmFyICAgICAgICBDT0RFTEVOUyA9IDE5OyAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoL2xpdCBhbmQgZGlzdGFuY2UgY29kZSBsZW5ndGhzICovXG52YXIgICAgICAgICAgICBMRU5fID0gMjA7ICAgICAgLyogaTogc2FtZSBhcyBMRU4gYmVsb3csIGJ1dCBvbmx5IGZpcnN0IHRpbWUgaW4gKi9cbnZhciAgICAgICAgICAgIExFTiA9IDIxOyAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBsZW5ndGgvbGl0L2VvYiBjb2RlICovXG52YXIgICAgICAgICAgICBMRU5FWFQgPSAyMjsgICAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoIGV4dHJhIGJpdHMgKi9cbnZhciAgICAgICAgICAgIERJU1QgPSAyMzsgICAgICAvKiBpOiB3YWl0aW5nIGZvciBkaXN0YW5jZSBjb2RlICovXG52YXIgICAgICAgICAgICBESVNURVhUID0gMjQ7ICAgLyogaTogd2FpdGluZyBmb3IgZGlzdGFuY2UgZXh0cmEgYml0cyAqL1xudmFyICAgICAgICAgICAgTUFUQ0ggPSAyNTsgICAgIC8qIG86IHdhaXRpbmcgZm9yIG91dHB1dCBzcGFjZSB0byBjb3B5IHN0cmluZyAqL1xudmFyICAgICAgICAgICAgTElUID0gMjY7ICAgICAgIC8qIG86IHdhaXRpbmcgZm9yIG91dHB1dCBzcGFjZSB0byB3cml0ZSBsaXRlcmFsICovXG52YXIgICAgQ0hFQ0sgPSAyNzsgICAgIC8qIGk6IHdhaXRpbmcgZm9yIDMyLWJpdCBjaGVjayB2YWx1ZSAqL1xudmFyICAgIExFTkdUSCA9IDI4OyAgICAvKiBpOiB3YWl0aW5nIGZvciAzMi1iaXQgbGVuZ3RoIChnemlwKSAqL1xudmFyICAgIERPTkUgPSAyOTsgICAgICAvKiBmaW5pc2hlZCBjaGVjaywgZG9uZSAtLSByZW1haW4gaGVyZSB1bnRpbCByZXNldCAqL1xudmFyICAgIEJBRCA9IDMwOyAgICAgICAvKiBnb3QgYSBkYXRhIGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovXG52YXIgICAgTUVNID0gMzE7ICAgICAgIC8qIGdvdCBhbiBpbmZsYXRlKCkgbWVtb3J5IGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovXG52YXIgICAgU1lOQyA9IDMyOyAgICAgIC8qIGxvb2tpbmcgZm9yIHN5bmNocm9uaXphdGlvbiBieXRlcyB0byByZXN0YXJ0IGluZmxhdGUoKSAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cblxudmFyIEVOT1VHSF9MRU5TID0gODUyO1xudmFyIEVOT1VHSF9ESVNUUyA9IDU5Mjtcbi8vdmFyIEVOT1VHSCA9ICAoRU5PVUdIX0xFTlMrRU5PVUdIX0RJU1RTKTtcblxudmFyIE1BWF9XQklUUyA9IDE1O1xuLyogMzJLIExaNzcgd2luZG93ICovXG52YXIgREVGX1dCSVRTID0gTUFYX1dCSVRTO1xuXG5cbmZ1bmN0aW9uIHpzd2FwMzIocSkge1xuICByZXR1cm4gICgoKHEgPj4+IDI0KSAmIDB4ZmYpICtcbiAgICAgICAgICAoKHEgPj4+IDgpICYgMHhmZjAwKSArXG4gICAgICAgICAgKChxICYgMHhmZjAwKSA8PCA4KSArXG4gICAgICAgICAgKChxICYgMHhmZikgPDwgMjQpKTtcbn1cblxuXG5mdW5jdGlvbiBJbmZsYXRlU3RhdGUoKSB7XG4gIHRoaXMubW9kZSA9IDA7ICAgICAgICAgICAgIC8qIGN1cnJlbnQgaW5mbGF0ZSBtb2RlICovXG4gIHRoaXMubGFzdCA9IGZhbHNlOyAgICAgICAgICAvKiB0cnVlIGlmIHByb2Nlc3NpbmcgbGFzdCBibG9jayAqL1xuICB0aGlzLndyYXAgPSAwOyAgICAgICAgICAgICAgLyogYml0IDAgdHJ1ZSBmb3IgemxpYiwgYml0IDEgdHJ1ZSBmb3IgZ3ppcCAqL1xuICB0aGlzLmhhdmVkaWN0ID0gZmFsc2U7ICAgICAgLyogdHJ1ZSBpZiBkaWN0aW9uYXJ5IHByb3ZpZGVkICovXG4gIHRoaXMuZmxhZ3MgPSAwOyAgICAgICAgICAgICAvKiBnemlwIGhlYWRlciBtZXRob2QgYW5kIGZsYWdzICgwIGlmIHpsaWIpICovXG4gIHRoaXMuZG1heCA9IDA7ICAgICAgICAgICAgICAvKiB6bGliIGhlYWRlciBtYXggZGlzdGFuY2UgKElORkxBVEVfU1RSSUNUKSAqL1xuICB0aGlzLmNoZWNrID0gMDsgICAgICAgICAgICAgLyogcHJvdGVjdGVkIGNvcHkgb2YgY2hlY2sgdmFsdWUgKi9cbiAgdGhpcy50b3RhbCA9IDA7ICAgICAgICAgICAgIC8qIHByb3RlY3RlZCBjb3B5IG9mIG91dHB1dCBjb3VudCAqL1xuICAvLyBUT0RPOiBtYXkgYmUge31cbiAgdGhpcy5oZWFkID0gbnVsbDsgICAgICAgICAgIC8qIHdoZXJlIHRvIHNhdmUgZ3ppcCBoZWFkZXIgaW5mb3JtYXRpb24gKi9cblxuICAvKiBzbGlkaW5nIHdpbmRvdyAqL1xuICB0aGlzLndiaXRzID0gMDsgICAgICAgICAgICAgLyogbG9nIGJhc2UgMiBvZiByZXF1ZXN0ZWQgd2luZG93IHNpemUgKi9cbiAgdGhpcy53c2l6ZSA9IDA7ICAgICAgICAgICAgIC8qIHdpbmRvdyBzaXplIG9yIHplcm8gaWYgbm90IHVzaW5nIHdpbmRvdyAqL1xuICB0aGlzLndoYXZlID0gMDsgICAgICAgICAgICAgLyogdmFsaWQgYnl0ZXMgaW4gdGhlIHdpbmRvdyAqL1xuICB0aGlzLnduZXh0ID0gMDsgICAgICAgICAgICAgLyogd2luZG93IHdyaXRlIGluZGV4ICovXG4gIHRoaXMud2luZG93ID0gbnVsbDsgICAgICAgICAvKiBhbGxvY2F0ZWQgc2xpZGluZyB3aW5kb3csIGlmIG5lZWRlZCAqL1xuXG4gIC8qIGJpdCBhY2N1bXVsYXRvciAqL1xuICB0aGlzLmhvbGQgPSAwOyAgICAgICAgICAgICAgLyogaW5wdXQgYml0IGFjY3VtdWxhdG9yICovXG4gIHRoaXMuYml0cyA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgYml0cyBpbiBcImluXCIgKi9cblxuICAvKiBmb3Igc3RyaW5nIGFuZCBzdG9yZWQgYmxvY2sgY29weWluZyAqL1xuICB0aGlzLmxlbmd0aCA9IDA7ICAgICAgICAgICAgLyogbGl0ZXJhbCBvciBsZW5ndGggb2YgZGF0YSB0byBjb3B5ICovXG4gIHRoaXMub2Zmc2V0ID0gMDsgICAgICAgICAgICAvKiBkaXN0YW5jZSBiYWNrIHRvIGNvcHkgc3RyaW5nIGZyb20gKi9cblxuICAvKiBmb3IgdGFibGUgYW5kIGNvZGUgZGVjb2RpbmcgKi9cbiAgdGhpcy5leHRyYSA9IDA7ICAgICAgICAgICAgIC8qIGV4dHJhIGJpdHMgbmVlZGVkICovXG5cbiAgLyogZml4ZWQgYW5kIGR5bmFtaWMgY29kZSB0YWJsZXMgKi9cbiAgdGhpcy5sZW5jb2RlID0gbnVsbDsgICAgICAgICAgLyogc3RhcnRpbmcgdGFibGUgZm9yIGxlbmd0aC9saXRlcmFsIGNvZGVzICovXG4gIHRoaXMuZGlzdGNvZGUgPSBudWxsOyAgICAgICAgIC8qIHN0YXJ0aW5nIHRhYmxlIGZvciBkaXN0YW5jZSBjb2RlcyAqL1xuICB0aGlzLmxlbmJpdHMgPSAwOyAgICAgICAgICAgLyogaW5kZXggYml0cyBmb3IgbGVuY29kZSAqL1xuICB0aGlzLmRpc3RiaXRzID0gMDsgICAgICAgICAgLyogaW5kZXggYml0cyBmb3IgZGlzdGNvZGUgKi9cblxuICAvKiBkeW5hbWljIHRhYmxlIGJ1aWxkaW5nICovXG4gIHRoaXMubmNvZGUgPSAwOyAgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZSBsZW5ndGggY29kZSBsZW5ndGhzICovXG4gIHRoaXMubmxlbiA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgbGVuZ3RoIGNvZGUgbGVuZ3RocyAqL1xuICB0aGlzLm5kaXN0ID0gMDsgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGRpc3RhbmNlIGNvZGUgbGVuZ3RocyAqL1xuICB0aGlzLmhhdmUgPSAwOyAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNvZGUgbGVuZ3RocyBpbiBsZW5zW10gKi9cbiAgdGhpcy5uZXh0ID0gbnVsbDsgICAgICAgICAgICAgIC8qIG5leHQgYXZhaWxhYmxlIHNwYWNlIGluIGNvZGVzW10gKi9cblxuICB0aGlzLmxlbnMgPSBuZXcgdXRpbHMuQnVmMTYoMzIwKTsgLyogdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIGNvZGUgbGVuZ3RocyAqL1xuICB0aGlzLndvcmsgPSBuZXcgdXRpbHMuQnVmMTYoMjg4KTsgLyogd29yayBhcmVhIGZvciBjb2RlIHRhYmxlIGJ1aWxkaW5nICovXG5cbiAgLypcbiAgIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBwb2ludGVycyBpbiBqcywgd2UgdXNlIGxlbmNvZGUgYW5kIGRpc3Rjb2RlIGRpcmVjdGx5XG4gICBhcyBidWZmZXJzIHNvIHdlIGRvbid0IG5lZWQgY29kZXNcbiAgKi9cbiAgLy90aGlzLmNvZGVzID0gbmV3IHV0aWxzLkJ1ZjMyKEVOT1VHSCk7ICAgICAgIC8qIHNwYWNlIGZvciBjb2RlIHRhYmxlcyAqL1xuICB0aGlzLmxlbmR5biA9IG51bGw7ICAgICAgICAgICAgICAvKiBkeW5hbWljIHRhYmxlIGZvciBsZW5ndGgvbGl0ZXJhbCBjb2RlcyAoSlMgc3BlY2lmaWMpICovXG4gIHRoaXMuZGlzdGR5biA9IG51bGw7ICAgICAgICAgICAgIC8qIGR5bmFtaWMgdGFibGUgZm9yIGRpc3RhbmNlIGNvZGVzIChKUyBzcGVjaWZpYykgKi9cbiAgdGhpcy5zYW5lID0gMDsgICAgICAgICAgICAgICAgICAgLyogaWYgZmFsc2UsIGFsbG93IGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciAqL1xuICB0aGlzLmJhY2sgPSAwOyAgICAgICAgICAgICAgICAgICAvKiBiaXRzIGJhY2sgb2YgbGFzdCB1bnByb2Nlc3NlZCBsZW5ndGgvbGl0ICovXG4gIHRoaXMud2FzID0gMDsgICAgICAgICAgICAgICAgICAgIC8qIGluaXRpYWwgbGVuZ3RoIG9mIG1hdGNoICovXG59XG5cbmZ1bmN0aW9uIGluZmxhdGVSZXNldEtlZXAoc3RybSkge1xuICB2YXIgc3RhdGU7XG5cbiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfVxuICBzdGF0ZSA9IHN0cm0uc3RhdGU7XG4gIHN0cm0udG90YWxfaW4gPSBzdHJtLnRvdGFsX291dCA9IHN0YXRlLnRvdGFsID0gMDtcbiAgc3RybS5tc2cgPSAnJzsgLypaX05VTEwqL1xuICBpZiAoc3RhdGUud3JhcCkgeyAgICAgICAvKiB0byBzdXBwb3J0IGlsbC1jb25jZWl2ZWQgSmF2YSB0ZXN0IHN1aXRlICovXG4gICAgc3RybS5hZGxlciA9IHN0YXRlLndyYXAgJiAxO1xuICB9XG4gIHN0YXRlLm1vZGUgPSBIRUFEO1xuICBzdGF0ZS5sYXN0ID0gMDtcbiAgc3RhdGUuaGF2ZWRpY3QgPSAwO1xuICBzdGF0ZS5kbWF4ID0gMzI3Njg7XG4gIHN0YXRlLmhlYWQgPSBudWxsLypaX05VTEwqLztcbiAgc3RhdGUuaG9sZCA9IDA7XG4gIHN0YXRlLmJpdHMgPSAwO1xuICAvL3N0YXRlLmxlbmNvZGUgPSBzdGF0ZS5kaXN0Y29kZSA9IHN0YXRlLm5leHQgPSBzdGF0ZS5jb2RlcztcbiAgc3RhdGUubGVuY29kZSA9IHN0YXRlLmxlbmR5biA9IG5ldyB1dGlscy5CdWYzMihFTk9VR0hfTEVOUyk7XG4gIHN0YXRlLmRpc3Rjb2RlID0gc3RhdGUuZGlzdGR5biA9IG5ldyB1dGlscy5CdWYzMihFTk9VR0hfRElTVFMpO1xuXG4gIHN0YXRlLnNhbmUgPSAxO1xuICBzdGF0ZS5iYWNrID0gLTE7XG4gIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogcmVzZXRcXG5cIikpO1xuICByZXR1cm4gWl9PSztcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZVJlc2V0KHN0cm0pIHtcbiAgdmFyIHN0YXRlO1xuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuICBzdGF0ZS53c2l6ZSA9IDA7XG4gIHN0YXRlLndoYXZlID0gMDtcbiAgc3RhdGUud25leHQgPSAwO1xuICByZXR1cm4gaW5mbGF0ZVJlc2V0S2VlcChzdHJtKTtcblxufVxuXG5mdW5jdGlvbiBpbmZsYXRlUmVzZXQyKHN0cm0sIHdpbmRvd0JpdHMpIHtcbiAgdmFyIHdyYXA7XG4gIHZhciBzdGF0ZTtcblxuICAvKiBnZXQgdGhlIHN0YXRlICovXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuXG4gIC8qIGV4dHJhY3Qgd3JhcCByZXF1ZXN0IGZyb20gd2luZG93Qml0cyBwYXJhbWV0ZXIgKi9cbiAgaWYgKHdpbmRvd0JpdHMgPCAwKSB7XG4gICAgd3JhcCA9IDA7XG4gICAgd2luZG93Qml0cyA9IC13aW5kb3dCaXRzO1xuICB9XG4gIGVsc2Uge1xuICAgIHdyYXAgPSAod2luZG93Qml0cyA+PiA0KSArIDE7XG4gICAgaWYgKHdpbmRvd0JpdHMgPCA0OCkge1xuICAgICAgd2luZG93Qml0cyAmPSAxNTtcbiAgICB9XG4gIH1cblxuICAvKiBzZXQgbnVtYmVyIG9mIHdpbmRvdyBiaXRzLCBmcmVlIHdpbmRvdyBpZiBkaWZmZXJlbnQgKi9cbiAgaWYgKHdpbmRvd0JpdHMgJiYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkpIHtcbiAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gIH1cbiAgaWYgKHN0YXRlLndpbmRvdyAhPT0gbnVsbCAmJiBzdGF0ZS53Yml0cyAhPT0gd2luZG93Qml0cykge1xuICAgIHN0YXRlLndpbmRvdyA9IG51bGw7XG4gIH1cblxuICAvKiB1cGRhdGUgc3RhdGUgYW5kIHJlc2V0IHRoZSByZXN0IG9mIGl0ICovXG4gIHN0YXRlLndyYXAgPSB3cmFwO1xuICBzdGF0ZS53Yml0cyA9IHdpbmRvd0JpdHM7XG4gIHJldHVybiBpbmZsYXRlUmVzZXQoc3RybSk7XG59XG5cbmZ1bmN0aW9uIGluZmxhdGVJbml0MihzdHJtLCB3aW5kb3dCaXRzKSB7XG4gIHZhciByZXQ7XG4gIHZhciBzdGF0ZTtcblxuICBpZiAoIXN0cm0pIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIC8vc3RybS5tc2cgPSBaX05VTEw7ICAgICAgICAgICAgICAgICAvKiBpbiBjYXNlIHdlIHJldHVybiBhbiBlcnJvciAqL1xuXG4gIHN0YXRlID0gbmV3IEluZmxhdGVTdGF0ZSgpO1xuXG4gIC8vaWYgKHN0YXRlID09PSBaX05VTEwpIHJldHVybiBaX01FTV9FUlJPUjtcbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiBhbGxvY2F0ZWRcXG5cIikpO1xuICBzdHJtLnN0YXRlID0gc3RhdGU7XG4gIHN0YXRlLndpbmRvdyA9IG51bGwvKlpfTlVMTCovO1xuICByZXQgPSBpbmZsYXRlUmVzZXQyKHN0cm0sIHdpbmRvd0JpdHMpO1xuICBpZiAocmV0ICE9PSBaX09LKSB7XG4gICAgc3RybS5zdGF0ZSA9IG51bGwvKlpfTlVMTCovO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGluZmxhdGVJbml0KHN0cm0pIHtcbiAgcmV0dXJuIGluZmxhdGVJbml0MihzdHJtLCBERUZfV0JJVFMpO1xufVxuXG5cbi8qXG4gUmV0dXJuIHN0YXRlIHdpdGggbGVuZ3RoIGFuZCBkaXN0YW5jZSBkZWNvZGluZyB0YWJsZXMgYW5kIGluZGV4IHNpemVzIHNldCB0b1xuIGZpeGVkIGNvZGUgZGVjb2RpbmcuICBOb3JtYWxseSB0aGlzIHJldHVybnMgZml4ZWQgdGFibGVzIGZyb20gaW5mZml4ZWQuaC5cbiBJZiBCVUlMREZJWEVEIGlzIGRlZmluZWQsIHRoZW4gaW5zdGVhZCB0aGlzIHJvdXRpbmUgYnVpbGRzIHRoZSB0YWJsZXMgdGhlXG4gZmlyc3QgdGltZSBpdCdzIGNhbGxlZCwgYW5kIHJldHVybnMgdGhvc2UgdGFibGVzIHRoZSBmaXJzdCB0aW1lIGFuZFxuIHRoZXJlYWZ0ZXIuICBUaGlzIHJlZHVjZXMgdGhlIHNpemUgb2YgdGhlIGNvZGUgYnkgYWJvdXQgMksgYnl0ZXMsIGluXG4gZXhjaGFuZ2UgZm9yIGEgbGl0dGxlIGV4ZWN1dGlvbiB0aW1lLiAgSG93ZXZlciwgQlVJTERGSVhFRCBzaG91bGQgbm90IGJlXG4gdXNlZCBmb3IgdGhyZWFkZWQgYXBwbGljYXRpb25zLCBzaW5jZSB0aGUgcmV3cml0aW5nIG9mIHRoZSB0YWJsZXMgYW5kIHZpcmdpblxuIG1heSBub3QgYmUgdGhyZWFkLXNhZmUuXG4gKi9cbnZhciB2aXJnaW4gPSB0cnVlO1xuXG52YXIgbGVuZml4LCBkaXN0Zml4OyAvLyBXZSBoYXZlIG5vIHBvaW50ZXJzIGluIEpTLCBzbyBrZWVwIHRhYmxlcyBzZXBhcmF0ZVxuXG5mdW5jdGlvbiBmaXhlZHRhYmxlcyhzdGF0ZSkge1xuICAvKiBidWlsZCBmaXhlZCBodWZmbWFuIHRhYmxlcyBpZiBmaXJzdCBjYWxsIChtYXkgbm90IGJlIHRocmVhZCBzYWZlKSAqL1xuICBpZiAodmlyZ2luKSB7XG4gICAgdmFyIHN5bTtcblxuICAgIGxlbmZpeCA9IG5ldyB1dGlscy5CdWYzMig1MTIpO1xuICAgIGRpc3RmaXggPSBuZXcgdXRpbHMuQnVmMzIoMzIpO1xuXG4gICAgLyogbGl0ZXJhbC9sZW5ndGggdGFibGUgKi9cbiAgICBzeW0gPSAwO1xuICAgIHdoaWxlIChzeW0gPCAxNDQpIHsgc3RhdGUubGVuc1tzeW0rK10gPSA4OyB9XG4gICAgd2hpbGUgKHN5bSA8IDI1NikgeyBzdGF0ZS5sZW5zW3N5bSsrXSA9IDk7IH1cbiAgICB3aGlsZSAoc3ltIDwgMjgwKSB7IHN0YXRlLmxlbnNbc3ltKytdID0gNzsgfVxuICAgIHdoaWxlIChzeW0gPCAyODgpIHsgc3RhdGUubGVuc1tzeW0rK10gPSA4OyB9XG5cbiAgICBpbmZsYXRlX3RhYmxlKExFTlMsICBzdGF0ZS5sZW5zLCAwLCAyODgsIGxlbmZpeCwgICAwLCBzdGF0ZS53b3JrLCB7IGJpdHM6IDkgfSk7XG5cbiAgICAvKiBkaXN0YW5jZSB0YWJsZSAqL1xuICAgIHN5bSA9IDA7XG4gICAgd2hpbGUgKHN5bSA8IDMyKSB7IHN0YXRlLmxlbnNbc3ltKytdID0gNTsgfVxuXG4gICAgaW5mbGF0ZV90YWJsZShESVNUUywgc3RhdGUubGVucywgMCwgMzIsICAgZGlzdGZpeCwgMCwgc3RhdGUud29yaywgeyBiaXRzOiA1IH0pO1xuXG4gICAgLyogZG8gdGhpcyBqdXN0IG9uY2UgKi9cbiAgICB2aXJnaW4gPSBmYWxzZTtcbiAgfVxuXG4gIHN0YXRlLmxlbmNvZGUgPSBsZW5maXg7XG4gIHN0YXRlLmxlbmJpdHMgPSA5O1xuICBzdGF0ZS5kaXN0Y29kZSA9IGRpc3RmaXg7XG4gIHN0YXRlLmRpc3RiaXRzID0gNTtcbn1cblxuXG4vKlxuIFVwZGF0ZSB0aGUgd2luZG93IHdpdGggdGhlIGxhc3Qgd3NpemUgKG5vcm1hbGx5IDMySykgYnl0ZXMgd3JpdHRlbiBiZWZvcmVcbiByZXR1cm5pbmcuICBJZiB3aW5kb3cgZG9lcyBub3QgZXhpc3QgeWV0LCBjcmVhdGUgaXQuICBUaGlzIGlzIG9ubHkgY2FsbGVkXG4gd2hlbiBhIHdpbmRvdyBpcyBhbHJlYWR5IGluIHVzZSwgb3Igd2hlbiBvdXRwdXQgaGFzIGJlZW4gd3JpdHRlbiBkdXJpbmcgdGhpc1xuIGluZmxhdGUgY2FsbCwgYnV0IHRoZSBlbmQgb2YgdGhlIGRlZmxhdGUgc3RyZWFtIGhhcyBub3QgYmVlbiByZWFjaGVkIHlldC5cbiBJdCBpcyBhbHNvIGNhbGxlZCB0byBjcmVhdGUgYSB3aW5kb3cgZm9yIGRpY3Rpb25hcnkgZGF0YSB3aGVuIGEgZGljdGlvbmFyeVxuIGlzIGxvYWRlZC5cblxuIFByb3ZpZGluZyBvdXRwdXQgYnVmZmVycyBsYXJnZXIgdGhhbiAzMksgdG8gaW5mbGF0ZSgpIHNob3VsZCBwcm92aWRlIGEgc3BlZWRcbiBhZHZhbnRhZ2UsIHNpbmNlIG9ubHkgdGhlIGxhc3QgMzJLIG9mIG91dHB1dCBpcyBjb3BpZWQgdG8gdGhlIHNsaWRpbmcgd2luZG93XG4gdXBvbiByZXR1cm4gZnJvbSBpbmZsYXRlKCksIGFuZCBzaW5jZSBhbGwgZGlzdGFuY2VzIGFmdGVyIHRoZSBmaXJzdCAzMksgb2ZcbiBvdXRwdXQgd2lsbCBmYWxsIGluIHRoZSBvdXRwdXQgZGF0YSwgbWFraW5nIG1hdGNoIGNvcGllcyBzaW1wbGVyIGFuZCBmYXN0ZXIuXG4gVGhlIGFkdmFudGFnZSBtYXkgYmUgZGVwZW5kZW50IG9uIHRoZSBzaXplIG9mIHRoZSBwcm9jZXNzb3IncyBkYXRhIGNhY2hlcy5cbiAqL1xuZnVuY3Rpb24gdXBkYXRld2luZG93KHN0cm0sIHNyYywgZW5kLCBjb3B5KSB7XG4gIHZhciBkaXN0O1xuICB2YXIgc3RhdGUgPSBzdHJtLnN0YXRlO1xuXG4gIC8qIGlmIGl0IGhhc24ndCBiZWVuIGRvbmUgYWxyZWFkeSwgYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSB3aW5kb3cgKi9cbiAgaWYgKHN0YXRlLndpbmRvdyA9PT0gbnVsbCkge1xuICAgIHN0YXRlLndzaXplID0gMSA8PCBzdGF0ZS53Yml0cztcbiAgICBzdGF0ZS53bmV4dCA9IDA7XG4gICAgc3RhdGUud2hhdmUgPSAwO1xuXG4gICAgc3RhdGUud2luZG93ID0gbmV3IHV0aWxzLkJ1Zjgoc3RhdGUud3NpemUpO1xuICB9XG5cbiAgLyogY29weSBzdGF0ZS0+d3NpemUgb3IgbGVzcyBvdXRwdXQgYnl0ZXMgaW50byB0aGUgY2lyY3VsYXIgd2luZG93ICovXG4gIGlmIChjb3B5ID49IHN0YXRlLndzaXplKSB7XG4gICAgdXRpbHMuYXJyYXlTZXQoc3RhdGUud2luZG93LCBzcmMsIGVuZCAtIHN0YXRlLndzaXplLCBzdGF0ZS53c2l6ZSwgMCk7XG4gICAgc3RhdGUud25leHQgPSAwO1xuICAgIHN0YXRlLndoYXZlID0gc3RhdGUud3NpemU7XG4gIH1cbiAgZWxzZSB7XG4gICAgZGlzdCA9IHN0YXRlLndzaXplIC0gc3RhdGUud25leHQ7XG4gICAgaWYgKGRpc3QgPiBjb3B5KSB7XG4gICAgICBkaXN0ID0gY29weTtcbiAgICB9XG4gICAgLy96bWVtY3B5KHN0YXRlLT53aW5kb3cgKyBzdGF0ZS0+d25leHQsIGVuZCAtIGNvcHksIGRpc3QpO1xuICAgIHV0aWxzLmFycmF5U2V0KHN0YXRlLndpbmRvdywgc3JjLCBlbmQgLSBjb3B5LCBkaXN0LCBzdGF0ZS53bmV4dCk7XG4gICAgY29weSAtPSBkaXN0O1xuICAgIGlmIChjb3B5KSB7XG4gICAgICAvL3ptZW1jcHkoc3RhdGUtPndpbmRvdywgZW5kIC0gY29weSwgY29weSk7XG4gICAgICB1dGlscy5hcnJheVNldChzdGF0ZS53aW5kb3csIHNyYywgZW5kIC0gY29weSwgY29weSwgMCk7XG4gICAgICBzdGF0ZS53bmV4dCA9IGNvcHk7XG4gICAgICBzdGF0ZS53aGF2ZSA9IHN0YXRlLndzaXplO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHN0YXRlLnduZXh0ICs9IGRpc3Q7XG4gICAgICBpZiAoc3RhdGUud25leHQgPT09IHN0YXRlLndzaXplKSB7IHN0YXRlLnduZXh0ID0gMDsgfVxuICAgICAgaWYgKHN0YXRlLndoYXZlIDwgc3RhdGUud3NpemUpIHsgc3RhdGUud2hhdmUgKz0gZGlzdDsgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZShzdHJtLCBmbHVzaCkge1xuICB2YXIgc3RhdGU7XG4gIHZhciBpbnB1dCwgb3V0cHV0OyAgICAgICAgICAvLyBpbnB1dC9vdXRwdXQgYnVmZmVyc1xuICB2YXIgbmV4dDsgICAgICAgICAgICAgICAgICAgLyogbmV4dCBpbnB1dCBJTkRFWCAqL1xuICB2YXIgcHV0OyAgICAgICAgICAgICAgICAgICAgLyogbmV4dCBvdXRwdXQgSU5ERVggKi9cbiAgdmFyIGhhdmUsIGxlZnQ7ICAgICAgICAgICAgIC8qIGF2YWlsYWJsZSBpbnB1dCBhbmQgb3V0cHV0ICovXG4gIHZhciBob2xkOyAgICAgICAgICAgICAgICAgICAvKiBiaXQgYnVmZmVyICovXG4gIHZhciBiaXRzOyAgICAgICAgICAgICAgICAgICAvKiBiaXRzIGluIGJpdCBidWZmZXIgKi9cbiAgdmFyIF9pbiwgX291dDsgICAgICAgICAgICAgIC8qIHNhdmUgc3RhcnRpbmcgYXZhaWxhYmxlIGlucHV0IGFuZCBvdXRwdXQgKi9cbiAgdmFyIGNvcHk7ICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBzdG9yZWQgb3IgbWF0Y2ggYnl0ZXMgdG8gY29weSAqL1xuICB2YXIgZnJvbTsgICAgICAgICAgICAgICAgICAgLyogd2hlcmUgdG8gY29weSBtYXRjaCBieXRlcyBmcm9tICovXG4gIHZhciBmcm9tX3NvdXJjZTtcbiAgdmFyIGhlcmUgPSAwOyAgICAgICAgICAgICAgIC8qIGN1cnJlbnQgZGVjb2RpbmcgdGFibGUgZW50cnkgKi9cbiAgdmFyIGhlcmVfYml0cywgaGVyZV9vcCwgaGVyZV92YWw7IC8vIHBha2VkIFwiaGVyZVwiIGRlbm9ybWFsaXplZCAoSlMgc3BlY2lmaWMpXG4gIC8vdmFyIGxhc3Q7ICAgICAgICAgICAgICAgICAgIC8qIHBhcmVudCB0YWJsZSBlbnRyeSAqL1xuICB2YXIgbGFzdF9iaXRzLCBsYXN0X29wLCBsYXN0X3ZhbDsgLy8gcGFrZWQgXCJsYXN0XCIgZGVub3JtYWxpemVkIChKUyBzcGVjaWZpYylcbiAgdmFyIGxlbjsgICAgICAgICAgICAgICAgICAgIC8qIGxlbmd0aCB0byBjb3B5IGZvciByZXBlYXRzLCBiaXRzIHRvIGRyb3AgKi9cbiAgdmFyIHJldDsgICAgICAgICAgICAgICAgICAgIC8qIHJldHVybiBjb2RlICovXG4gIHZhciBoYnVmID0gbmV3IHV0aWxzLkJ1ZjgoNCk7ICAgIC8qIGJ1ZmZlciBmb3IgZ3ppcCBoZWFkZXIgY3JjIGNhbGN1bGF0aW9uICovXG4gIHZhciBvcHRzO1xuXG4gIHZhciBuOyAvLyB0ZW1wb3JhcnkgdmFyIGZvciBORUVEX0JJVFNcblxuICB2YXIgb3JkZXIgPSAvKiBwZXJtdXRhdGlvbiBvZiBjb2RlIGxlbmd0aHMgKi9cbiAgICBbIDE2LCAxNywgMTgsIDAsIDgsIDcsIDksIDYsIDEwLCA1LCAxMSwgNCwgMTIsIDMsIDEzLCAyLCAxNCwgMSwgMTUgXTtcblxuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSB8fCAhc3RybS5vdXRwdXQgfHxcbiAgICAgICghc3RybS5pbnB1dCAmJiBzdHJtLmF2YWlsX2luICE9PSAwKSkge1xuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuXG4gIHN0YXRlID0gc3RybS5zdGF0ZTtcbiAgaWYgKHN0YXRlLm1vZGUgPT09IFRZUEUpIHsgc3RhdGUubW9kZSA9IFRZUEVETzsgfSAgICAvKiBza2lwIGNoZWNrICovXG5cblxuICAvLy0tLSBMT0FEKCkgLS0tXG4gIHB1dCA9IHN0cm0ubmV4dF9vdXQ7XG4gIG91dHB1dCA9IHN0cm0ub3V0cHV0O1xuICBsZWZ0ID0gc3RybS5hdmFpbF9vdXQ7XG4gIG5leHQgPSBzdHJtLm5leHRfaW47XG4gIGlucHV0ID0gc3RybS5pbnB1dDtcbiAgaGF2ZSA9IHN0cm0uYXZhaWxfaW47XG4gIGhvbGQgPSBzdGF0ZS5ob2xkO1xuICBiaXRzID0gc3RhdGUuYml0cztcbiAgLy8tLS1cblxuICBfaW4gPSBoYXZlO1xuICBfb3V0ID0gbGVmdDtcbiAgcmV0ID0gWl9PSztcblxuICBpbmZfbGVhdmU6IC8vIGdvdG8gZW11bGF0aW9uXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKHN0YXRlLm1vZGUpIHtcbiAgICAgIGNhc2UgSEVBRDpcbiAgICAgICAgaWYgKHN0YXRlLndyYXAgPT09IDApIHtcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRURPO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDE2KTtcbiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBpZiAoKHN0YXRlLndyYXAgJiAyKSAmJiBob2xkID09PSAweDhiMWYpIHsgIC8qIGd6aXAgaGVhZGVyICovXG4gICAgICAgICAgc3RhdGUuY2hlY2sgPSAwLypjcmMzMigwTCwgWl9OVUxMLCAwKSovO1xuICAgICAgICAgIC8vPT09IENSQzIoc3RhdGUuY2hlY2ssIGhvbGQpO1xuICAgICAgICAgIGhidWZbMF0gPSBob2xkICYgMHhmZjtcbiAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjtcbiAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBoYnVmLCAyLCAwKTtcbiAgICAgICAgICAvLz09PS8vXG5cbiAgICAgICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgICAgIGhvbGQgPSAwO1xuICAgICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICBzdGF0ZS5tb2RlID0gRkxBR1M7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUuZmxhZ3MgPSAwOyAgICAgICAgICAgLyogZXhwZWN0IHpsaWIgaGVhZGVyICovXG4gICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgc3RhdGUuaGVhZC5kb25lID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEoc3RhdGUud3JhcCAmIDEpIHx8ICAgLyogY2hlY2sgaWYgemxpYiBoZWFkZXIgYWxsb3dlZCAqL1xuICAgICAgICAgICgoKGhvbGQgJiAweGZmKS8qQklUUyg4KSovIDw8IDgpICsgKGhvbGQgPj4gOCkpICUgMzEpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbmNvcnJlY3QgaGVhZGVyIGNoZWNrJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoaG9sZCAmIDB4MGYpLypCSVRTKDQpKi8gIT09IFpfREVGTEFURUQpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICd1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLy0tLSBEUk9QQklUUyg0KSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gNDtcbiAgICAgICAgYml0cyAtPSA0O1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIGxlbiA9IChob2xkICYgMHgwZikvKkJJVFMoNCkqLyArIDg7XG4gICAgICAgIGlmIChzdGF0ZS53Yml0cyA9PT0gMCkge1xuICAgICAgICAgIHN0YXRlLndiaXRzID0gbGVuO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGxlbiA+IHN0YXRlLndiaXRzKSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCB3aW5kb3cgc2l6ZSc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5kbWF4ID0gMSA8PCBsZW47XG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICB6bGliIGhlYWRlciBva1xcblwiKSk7XG4gICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9IDEvKmFkbGVyMzIoMEwsIFpfTlVMTCwgMCkqLztcbiAgICAgICAgc3RhdGUubW9kZSA9IGhvbGQgJiAweDIwMCA/IERJQ1RJRCA6IFRZUEU7XG4gICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgIGhvbGQgPSAwO1xuICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgLy89PT0vL1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRkxBR1M6XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDE2KTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5mbGFncyA9IGhvbGQ7XG4gICAgICAgIGlmICgoc3RhdGUuZmxhZ3MgJiAweGZmKSAhPT0gWl9ERUZMQVRFRCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ3Vua25vd24gY29tcHJlc3Npb24gbWV0aG9kJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4ZTAwMCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ3Vua25vd24gaGVhZGVyIGZsYWdzIHNldCc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQudGV4dCA9ICgoaG9sZCA+PiA4KSAmIDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkge1xuICAgICAgICAgIC8vPT09IENSQzIoc3RhdGUuY2hlY2ssIGhvbGQpO1xuICAgICAgICAgIGhidWZbMF0gPSBob2xkICYgMHhmZjtcbiAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjtcbiAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBoYnVmLCAyLCAwKTtcbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgIH1cbiAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLm1vZGUgPSBUSU1FO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIFRJTUU6XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDMyKTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAzMikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQudGltZSA9IGhvbGQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgLy89PT0gQ1JDNChzdGF0ZS5jaGVjaywgaG9sZClcbiAgICAgICAgICBoYnVmWzBdID0gaG9sZCAmIDB4ZmY7XG4gICAgICAgICAgaGJ1ZlsxXSA9IChob2xkID4+PiA4KSAmIDB4ZmY7XG4gICAgICAgICAgaGJ1ZlsyXSA9IChob2xkID4+PiAxNikgJiAweGZmO1xuICAgICAgICAgIGhidWZbM10gPSAoaG9sZCA+Pj4gMjQpICYgMHhmZjtcbiAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBoYnVmLCA0LCAwKTtcbiAgICAgICAgICAvLz09PVxuICAgICAgICB9XG4gICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgIGhvbGQgPSAwO1xuICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5tb2RlID0gT1M7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgT1M6XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDE2KTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQueGZsYWdzID0gKGhvbGQgJiAweGZmKTtcbiAgICAgICAgICBzdGF0ZS5oZWFkLm9zID0gKGhvbGQgPj4gOCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgLy89PT0gQ1JDMihzdGF0ZS5jaGVjaywgaG9sZCk7XG4gICAgICAgICAgaGJ1ZlswXSA9IGhvbGQgJiAweGZmO1xuICAgICAgICAgIGhidWZbMV0gPSAoaG9sZCA+Pj4gOCkgJiAweGZmO1xuICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDIsIDApO1xuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgfVxuICAgICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgICBob2xkID0gMDtcbiAgICAgICAgYml0cyA9IDA7XG4gICAgICAgIC8vPT09Ly9cbiAgICAgICAgc3RhdGUubW9kZSA9IEVYTEVOO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIEVYTEVOOlxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDA0MDApIHtcbiAgICAgICAgICAvLz09PSBORUVEQklUUygxNik7ICovXG4gICAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikge1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIHN0YXRlLmxlbmd0aCA9IGhvbGQ7XG4gICAgICAgICAgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgICAgIHN0YXRlLmhlYWQuZXh0cmFfbGVuID0gaG9sZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgICAvLz09PSBDUkMyKHN0YXRlLmNoZWNrLCBob2xkKTtcbiAgICAgICAgICAgIGhidWZbMF0gPSBob2xkICYgMHhmZjtcbiAgICAgICAgICAgIGhidWZbMV0gPSAoaG9sZCA+Pj4gOCkgJiAweGZmO1xuICAgICAgICAgICAgc3RhdGUuY2hlY2sgPSBjcmMzMihzdGF0ZS5jaGVjaywgaGJ1ZiwgMiwgMCk7XG4gICAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgICAgYml0cyA9IDA7XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhID0gbnVsbC8qWl9OVUxMKi87XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUubW9kZSA9IEVYVFJBO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIEVYVFJBOlxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDA0MDApIHtcbiAgICAgICAgICBjb3B5ID0gc3RhdGUubGVuZ3RoO1xuICAgICAgICAgIGlmIChjb3B5ID4gaGF2ZSkgeyBjb3B5ID0gaGF2ZTsgfVxuICAgICAgICAgIGlmIChjb3B5KSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgICAgICBsZW4gPSBzdGF0ZS5oZWFkLmV4dHJhX2xlbiAtIHN0YXRlLmxlbmd0aDtcbiAgICAgICAgICAgICAgaWYgKCFzdGF0ZS5oZWFkLmV4dHJhKSB7XG4gICAgICAgICAgICAgICAgLy8gVXNlIHVudHlwZWQgYXJyYXkgZm9yIG1vcmUgY29udmVuaWVudCBwcm9jZXNzaW5nIGxhdGVyXG4gICAgICAgICAgICAgICAgc3RhdGUuaGVhZC5leHRyYSA9IG5ldyBBcnJheShzdGF0ZS5oZWFkLmV4dHJhX2xlbik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdXRpbHMuYXJyYXlTZXQoXG4gICAgICAgICAgICAgICAgc3RhdGUuaGVhZC5leHRyYSxcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBuZXh0LFxuICAgICAgICAgICAgICAgIC8vIGV4dHJhIGZpZWxkIGlzIGxpbWl0ZWQgdG8gNjU1MzYgYnl0ZXNcbiAgICAgICAgICAgICAgICAvLyAtIG5vIG5lZWQgZm9yIGFkZGl0aW9uYWwgc2l6ZSBjaGVja1xuICAgICAgICAgICAgICAgIGNvcHksXG4gICAgICAgICAgICAgICAgLypsZW4gKyBjb3B5ID4gc3RhdGUuaGVhZC5leHRyYV9tYXggLSBsZW4gPyBzdGF0ZS5oZWFkLmV4dHJhX21heCA6IGNvcHksKi9cbiAgICAgICAgICAgICAgICBsZW5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgLy96bWVtY3B5KHN0YXRlLmhlYWQuZXh0cmEgKyBsZW4sIG5leHQsXG4gICAgICAgICAgICAgIC8vICAgICAgICBsZW4gKyBjb3B5ID4gc3RhdGUuaGVhZC5leHRyYV9tYXggP1xuICAgICAgICAgICAgICAvLyAgICAgICAgc3RhdGUuaGVhZC5leHRyYV9tYXggLSBsZW4gOiBjb3B5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkge1xuICAgICAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBpbnB1dCwgY29weSwgbmV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoYXZlIC09IGNvcHk7XG4gICAgICAgICAgICBuZXh0ICs9IGNvcHk7XG4gICAgICAgICAgICBzdGF0ZS5sZW5ndGggLT0gY29weTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YXRlLmxlbmd0aCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5sZW5ndGggPSAwO1xuICAgICAgICBzdGF0ZS5tb2RlID0gTkFNRTtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBOQU1FOlxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDA4MDApIHtcbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBjb3B5ID0gMDtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAvLyBUT0RPOiAyIG9yIDEgYnl0ZXM/XG4gICAgICAgICAgICBsZW4gPSBpbnB1dFtuZXh0ICsgY29weSsrXTtcbiAgICAgICAgICAgIC8qIHVzZSBjb25zdGFudCBsaW1pdCBiZWNhdXNlIGluIGpzIHdlIHNob3VsZCBub3QgcHJlYWxsb2NhdGUgbWVtb3J5ICovXG4gICAgICAgICAgICBpZiAoc3RhdGUuaGVhZCAmJiBsZW4gJiZcbiAgICAgICAgICAgICAgICAoc3RhdGUubGVuZ3RoIDwgNjU1MzYgLypzdGF0ZS5oZWFkLm5hbWVfbWF4Ki8pKSB7XG4gICAgICAgICAgICAgIHN0YXRlLmhlYWQubmFtZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGxlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSB3aGlsZSAobGVuICYmIGNvcHkgPCBoYXZlKTtcblxuICAgICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkge1xuICAgICAgICAgICAgc3RhdGUuY2hlY2sgPSBjcmMzMihzdGF0ZS5jaGVjaywgaW5wdXQsIGNvcHksIG5leHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBoYXZlIC09IGNvcHk7XG4gICAgICAgICAgbmV4dCArPSBjb3B5O1xuICAgICAgICAgIGlmIChsZW4pIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQubmFtZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUubGVuZ3RoID0gMDtcbiAgICAgICAgc3RhdGUubW9kZSA9IENPTU1FTlQ7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgQ09NTUVOVDpcbiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgxMDAwKSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgY29weSA9IDA7XG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgbGVuID0gaW5wdXRbbmV4dCArIGNvcHkrK107XG4gICAgICAgICAgICAvKiB1c2UgY29uc3RhbnQgbGltaXQgYmVjYXVzZSBpbiBqcyB3ZSBzaG91bGQgbm90IHByZWFsbG9jYXRlIG1lbW9yeSAqL1xuICAgICAgICAgICAgaWYgKHN0YXRlLmhlYWQgJiYgbGVuICYmXG4gICAgICAgICAgICAgICAgKHN0YXRlLmxlbmd0aCA8IDY1NTM2IC8qc3RhdGUuaGVhZC5jb21tX21heCovKSkge1xuICAgICAgICAgICAgICBzdGF0ZS5oZWFkLmNvbW1lbnQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShsZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gd2hpbGUgKGxlbiAmJiBjb3B5IDwgaGF2ZSk7XG4gICAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBpbnB1dCwgY29weSwgbmV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGhhdmUgLT0gY29weTtcbiAgICAgICAgICBuZXh0ICs9IGNvcHk7XG4gICAgICAgICAgaWYgKGxlbikgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgc3RhdGUuaGVhZC5jb21tZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5tb2RlID0gSENSQztcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBIQ1JDOlxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgICAvLz09PSBORUVEQklUUygxNik7ICovXG4gICAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikge1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIGlmIChob2xkICE9PSAoc3RhdGUuY2hlY2sgJiAweGZmZmYpKSB7XG4gICAgICAgICAgICBzdHJtLm1zZyA9ICdoZWFkZXIgY3JjIG1pc21hdGNoJztcbiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgICBob2xkID0gMDtcbiAgICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgICBzdGF0ZS5oZWFkLmhjcmMgPSAoKHN0YXRlLmZsYWdzID4+IDkpICYgMSk7XG4gICAgICAgICAgc3RhdGUuaGVhZC5kb25lID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSAwO1xuICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERJQ1RJRDpcbiAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpOyAqL1xuICAgICAgICB3aGlsZSAoYml0cyA8IDMyKSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9IHpzd2FwMzIoaG9sZCk7XG4gICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgIGhvbGQgPSAwO1xuICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5tb2RlID0gRElDVDtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBESUNUOlxuICAgICAgICBpZiAoc3RhdGUuaGF2ZWRpY3QgPT09IDApIHtcbiAgICAgICAgICAvLy0tLSBSRVNUT1JFKCkgLS0tXG4gICAgICAgICAgc3RybS5uZXh0X291dCA9IHB1dDtcbiAgICAgICAgICBzdHJtLmF2YWlsX291dCA9IGxlZnQ7XG4gICAgICAgICAgc3RybS5uZXh0X2luID0gbmV4dDtcbiAgICAgICAgICBzdHJtLmF2YWlsX2luID0gaGF2ZTtcbiAgICAgICAgICBzdGF0ZS5ob2xkID0gaG9sZDtcbiAgICAgICAgICBzdGF0ZS5iaXRzID0gYml0cztcbiAgICAgICAgICAvLy0tLVxuICAgICAgICAgIHJldHVybiBaX05FRURfRElDVDtcbiAgICAgICAgfVxuICAgICAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSAxLyphZGxlcjMyKDBMLCBaX05VTEwsIDApKi87XG4gICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIFRZUEU6XG4gICAgICAgIGlmIChmbHVzaCA9PT0gWl9CTE9DSyB8fCBmbHVzaCA9PT0gWl9UUkVFUykgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBUWVBFRE86XG4gICAgICAgIGlmIChzdGF0ZS5sYXN0KSB7XG4gICAgICAgICAgLy8tLS0gQllURUJJVFMoKSAtLS0vL1xuICAgICAgICAgIGhvbGQgPj4+PSBiaXRzICYgNztcbiAgICAgICAgICBiaXRzIC09IGJpdHMgJiA3O1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQ0hFQ0s7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0gTkVFREJJVFMoMyk7ICovXG4gICAgICAgIHdoaWxlIChiaXRzIDwgMykge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5sYXN0ID0gKGhvbGQgJiAweDAxKS8qQklUUygxKSovO1xuICAgICAgICAvLy0tLSBEUk9QQklUUygxKSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gMTtcbiAgICAgICAgYml0cyAtPSAxO1xuICAgICAgICAvLy0tLS8vXG5cbiAgICAgICAgc3dpdGNoICgoaG9sZCAmIDB4MDMpLypCSVRTKDIpKi8pIHtcbiAgICAgICAgICBjYXNlIDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdG9yZWQgYmxvY2sgKi9cbiAgICAgICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgIHN0b3JlZCBibG9jayVzXFxuXCIsXG4gICAgICAgICAgICAvLyAgICAgICAgc3RhdGUubGFzdCA/IFwiIChsYXN0KVwiIDogXCJcIikpO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IFNUT1JFRDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpeGVkIGJsb2NrICovXG4gICAgICAgICAgICBmaXhlZHRhYmxlcyhzdGF0ZSk7XG4gICAgICAgICAgICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgICBmaXhlZCBjb2RlcyBibG9jayVzXFxuXCIsXG4gICAgICAgICAgICAvLyAgICAgICAgc3RhdGUubGFzdCA/IFwiIChsYXN0KVwiIDogXCJcIikpO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IExFTl87ICAgICAgICAgICAgIC8qIGRlY29kZSBjb2RlcyAqL1xuICAgICAgICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7XG4gICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKDIpIC0tLS8vXG4gICAgICAgICAgICAgIGhvbGQgPj4+PSAyO1xuICAgICAgICAgICAgICBiaXRzIC09IDI7XG4gICAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICAgICAgYnJlYWsgaW5mX2xlYXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZHluYW1pYyBibG9jayAqL1xuICAgICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgZHluYW1pYyBjb2RlcyBibG9jayVzXFxuXCIsXG4gICAgICAgICAgICAvLyAgICAgICAgc3RhdGUubGFzdCA/IFwiIChsYXN0KVwiIDogXCJcIikpO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IFRBQkxFO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBibG9jayB0eXBlJztcbiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8tLS0gRFJPUEJJVFMoMikgLS0tLy9cbiAgICAgICAgaG9sZCA+Pj49IDI7XG4gICAgICAgIGJpdHMgLT0gMjtcbiAgICAgICAgLy8tLS0vL1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1RPUkVEOlxuICAgICAgICAvLy0tLSBCWVRFQklUUygpIC0tLS8vIC8qIGdvIHRvIGJ5dGUgYm91bmRhcnkgKi9cbiAgICAgICAgaG9sZCA+Pj49IGJpdHMgJiA3O1xuICAgICAgICBiaXRzIC09IGJpdHMgJiA3O1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIC8vPT09IE5FRURCSVRTKDMyKTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAzMikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBpZiAoKGhvbGQgJiAweGZmZmYpICE9PSAoKGhvbGQgPj4+IDE2KSBeIDB4ZmZmZikpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLmxlbmd0aCA9IGhvbGQgJiAweGZmZmY7XG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgc3RvcmVkIGxlbmd0aCAldVxcblwiLFxuICAgICAgICAvLyAgICAgICAgc3RhdGUubGVuZ3RoKSk7XG4gICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgIGhvbGQgPSAwO1xuICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5tb2RlID0gQ09QWV87XG4gICAgICAgIGlmIChmbHVzaCA9PT0gWl9UUkVFUykgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBDT1BZXzpcbiAgICAgICAgc3RhdGUubW9kZSA9IENPUFk7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgQ09QWTpcbiAgICAgICAgY29weSA9IHN0YXRlLmxlbmd0aDtcbiAgICAgICAgaWYgKGNvcHkpIHtcbiAgICAgICAgICBpZiAoY29weSA+IGhhdmUpIHsgY29weSA9IGhhdmU7IH1cbiAgICAgICAgICBpZiAoY29weSA+IGxlZnQpIHsgY29weSA9IGxlZnQ7IH1cbiAgICAgICAgICBpZiAoY29weSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAvLy0tLSB6bWVtY3B5KHB1dCwgbmV4dCwgY29weSk7IC0tLVxuICAgICAgICAgIHV0aWxzLmFycmF5U2V0KG91dHB1dCwgaW5wdXQsIG5leHQsIGNvcHksIHB1dCk7XG4gICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIGhhdmUgLT0gY29weTtcbiAgICAgICAgICBuZXh0ICs9IGNvcHk7XG4gICAgICAgICAgbGVmdCAtPSBjb3B5O1xuICAgICAgICAgIHB1dCArPSBjb3B5O1xuICAgICAgICAgIHN0YXRlLmxlbmd0aCAtPSBjb3B5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgc3RvcmVkIGVuZFxcblwiKSk7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVEFCTEU6XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDE0KTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNCkge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5ubGVuID0gKGhvbGQgJiAweDFmKS8qQklUUyg1KSovICsgMjU3O1xuICAgICAgICAvLy0tLSBEUk9QQklUUyg1KSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gNTtcbiAgICAgICAgYml0cyAtPSA1O1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIHN0YXRlLm5kaXN0ID0gKGhvbGQgJiAweDFmKS8qQklUUyg1KSovICsgMTtcbiAgICAgICAgLy8tLS0gRFJPUEJJVFMoNSkgLS0tLy9cbiAgICAgICAgaG9sZCA+Pj49IDU7XG4gICAgICAgIGJpdHMgLT0gNTtcbiAgICAgICAgLy8tLS0vL1xuICAgICAgICBzdGF0ZS5uY29kZSA9IChob2xkICYgMHgwZikvKkJJVFMoNCkqLyArIDQ7XG4gICAgICAgIC8vLS0tIERST1BCSVRTKDQpIC0tLS8vXG4gICAgICAgIGhvbGQgPj4+PSA0O1xuICAgICAgICBiaXRzIC09IDQ7XG4gICAgICAgIC8vLS0tLy9cbi8vI2lmbmRlZiBQS1pJUF9CVUdfV09SS0FST1VORFxuICAgICAgICBpZiAoc3RhdGUubmxlbiA+IDI4NiB8fCBzdGF0ZS5uZGlzdCA+IDMwKSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAndG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMnO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbi8vI2VuZGlmXG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgdGFibGUgc2l6ZXMgb2tcXG5cIikpO1xuICAgICAgICBzdGF0ZS5oYXZlID0gMDtcbiAgICAgICAgc3RhdGUubW9kZSA9IExFTkxFTlM7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgTEVOTEVOUzpcbiAgICAgICAgd2hpbGUgKHN0YXRlLmhhdmUgPCBzdGF0ZS5uY29kZSkge1xuICAgICAgICAgIC8vPT09IE5FRURCSVRTKDMpO1xuICAgICAgICAgIHdoaWxlIChiaXRzIDwgMykge1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIHN0YXRlLmxlbnNbb3JkZXJbc3RhdGUuaGF2ZSsrXV0gPSAoaG9sZCAmIDB4MDcpOy8vQklUUygzKTtcbiAgICAgICAgICAvLy0tLSBEUk9QQklUUygzKSAtLS0vL1xuICAgICAgICAgIGhvbGQgPj4+PSAzO1xuICAgICAgICAgIGJpdHMgLT0gMztcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHN0YXRlLmhhdmUgPCAxOSkge1xuICAgICAgICAgIHN0YXRlLmxlbnNbb3JkZXJbc3RhdGUuaGF2ZSsrXV0gPSAwO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdlIGhhdmUgc2VwYXJhdGUgdGFibGVzICYgbm8gcG9pbnRlcnMuIDIgY29tbWVudGVkIGxpbmVzIGJlbG93IG5vdCBuZWVkZWQuXG4gICAgICAgIC8vc3RhdGUubmV4dCA9IHN0YXRlLmNvZGVzO1xuICAgICAgICAvL3N0YXRlLmxlbmNvZGUgPSBzdGF0ZS5uZXh0O1xuICAgICAgICAvLyBTd2l0Y2ggdG8gdXNlIGR5bmFtaWMgdGFibGVcbiAgICAgICAgc3RhdGUubGVuY29kZSA9IHN0YXRlLmxlbmR5bjtcbiAgICAgICAgc3RhdGUubGVuYml0cyA9IDc7XG5cbiAgICAgICAgb3B0cyA9IHsgYml0czogc3RhdGUubGVuYml0cyB9O1xuICAgICAgICByZXQgPSBpbmZsYXRlX3RhYmxlKENPREVTLCBzdGF0ZS5sZW5zLCAwLCAxOSwgc3RhdGUubGVuY29kZSwgMCwgc3RhdGUud29yaywgb3B0cyk7XG4gICAgICAgIHN0YXRlLmxlbmJpdHMgPSBvcHRzLmJpdHM7XG5cbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgY29kZSBsZW5ndGhzIHNldCc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgICAgIGNvZGUgbGVuZ3RocyBva1xcblwiKSk7XG4gICAgICAgIHN0YXRlLmhhdmUgPSAwO1xuICAgICAgICBzdGF0ZS5tb2RlID0gQ09ERUxFTlM7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgQ09ERUxFTlM6XG4gICAgICAgIHdoaWxlIChzdGF0ZS5oYXZlIDwgc3RhdGUubmxlbiArIHN0YXRlLm5kaXN0KSB7XG4gICAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgaGVyZSA9IHN0YXRlLmxlbmNvZGVbaG9sZCAmICgoMSA8PCBzdGF0ZS5sZW5iaXRzKSAtIDEpXTsvKkJJVFMoc3RhdGUubGVuYml0cykqL1xuICAgICAgICAgICAgaGVyZV9iaXRzID0gaGVyZSA+Pj4gMjQ7XG4gICAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7XG4gICAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgICAgIGlmICgoaGVyZV9iaXRzKSA8PSBiaXRzKSB7IGJyZWFrOyB9XG4gICAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vXG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaGVyZV92YWwgPCAxNikge1xuICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoaGVyZS5iaXRzKSAtLS0vL1xuICAgICAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzO1xuICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgc3RhdGUubGVuc1tzdGF0ZS5oYXZlKytdID0gaGVyZV92YWw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGhlcmVfdmFsID09PSAxNikge1xuICAgICAgICAgICAgICAvLz09PSBORUVEQklUUyhoZXJlLmJpdHMgKyAyKTtcbiAgICAgICAgICAgICAgbiA9IGhlcmVfYml0cyArIDI7XG4gICAgICAgICAgICAgIHdoaWxlIChiaXRzIDwgbikge1xuICAgICAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy89PT0vL1xuICAgICAgICAgICAgICAvLy0tLSBEUk9QQklUUyhoZXJlLmJpdHMpIC0tLS8vXG4gICAgICAgICAgICAgIGhvbGQgPj4+PSBoZXJlX2JpdHM7XG4gICAgICAgICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzO1xuICAgICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgICAgIGlmIChzdGF0ZS5oYXZlID09PSAwKSB7XG4gICAgICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCc7XG4gICAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsZW4gPSBzdGF0ZS5sZW5zW3N0YXRlLmhhdmUgLSAxXTtcbiAgICAgICAgICAgICAgY29weSA9IDMgKyAoaG9sZCAmIDB4MDMpOy8vQklUUygyKTtcbiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMikgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IDI7XG4gICAgICAgICAgICAgIGJpdHMgLT0gMjtcbiAgICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaGVyZV92YWwgPT09IDE3KSB7XG4gICAgICAgICAgICAgIC8vPT09IE5FRURCSVRTKGhlcmUuYml0cyArIDMpO1xuICAgICAgICAgICAgICBuID0gaGVyZV9iaXRzICsgMztcbiAgICAgICAgICAgICAgd2hpbGUgKGJpdHMgPCBuKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7XG4gICAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICAgICAgbGVuID0gMDtcbiAgICAgICAgICAgICAgY29weSA9IDMgKyAoaG9sZCAmIDB4MDcpOy8vQklUUygzKTtcbiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMykgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IDM7XG4gICAgICAgICAgICAgIGJpdHMgLT0gMztcbiAgICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIC8vPT09IE5FRURCSVRTKGhlcmUuYml0cyArIDcpO1xuICAgICAgICAgICAgICBuID0gaGVyZV9iaXRzICsgNztcbiAgICAgICAgICAgICAgd2hpbGUgKGJpdHMgPCBuKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7XG4gICAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICAgICAgbGVuID0gMDtcbiAgICAgICAgICAgICAgY29weSA9IDExICsgKGhvbGQgJiAweDdmKTsvL0JJVFMoNyk7XG4gICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKDcpIC0tLS8vXG4gICAgICAgICAgICAgIGhvbGQgPj4+PSA3O1xuICAgICAgICAgICAgICBiaXRzIC09IDc7XG4gICAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGF0ZS5oYXZlICsgY29weSA+IHN0YXRlLm5sZW4gKyBzdGF0ZS5uZGlzdCkge1xuICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0JztcbiAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoY29weS0tKSB7XG4gICAgICAgICAgICAgIHN0YXRlLmxlbnNbc3RhdGUuaGF2ZSsrXSA9IGxlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKiBoYW5kbGUgZXJyb3IgYnJlYWtzIGluIHdoaWxlICovXG4gICAgICAgIGlmIChzdGF0ZS5tb2RlID09PSBCQUQpIHsgYnJlYWs7IH1cblxuICAgICAgICAvKiBjaGVjayBmb3IgZW5kLW9mLWJsb2NrIGNvZGUgKGJldHRlciBoYXZlIG9uZSkgKi9cbiAgICAgICAgaWYgKHN0YXRlLmxlbnNbMjU2XSA9PT0gMCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jayc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGJ1aWxkIGNvZGUgdGFibGVzIC0tIG5vdGU6IGRvIG5vdCBjaGFuZ2UgdGhlIGxlbmJpdHMgb3IgZGlzdGJpdHNcbiAgICAgICAgICAgdmFsdWVzIGhlcmUgKDkgYW5kIDYpIHdpdGhvdXQgcmVhZGluZyB0aGUgY29tbWVudHMgaW4gaW5mdHJlZXMuaFxuICAgICAgICAgICBjb25jZXJuaW5nIHRoZSBFTk9VR0ggY29uc3RhbnRzLCB3aGljaCBkZXBlbmQgb24gdGhvc2UgdmFsdWVzICovXG4gICAgICAgIHN0YXRlLmxlbmJpdHMgPSA5O1xuXG4gICAgICAgIG9wdHMgPSB7IGJpdHM6IHN0YXRlLmxlbmJpdHMgfTtcbiAgICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShMRU5TLCBzdGF0ZS5sZW5zLCAwLCBzdGF0ZS5ubGVuLCBzdGF0ZS5sZW5jb2RlLCAwLCBzdGF0ZS53b3JrLCBvcHRzKTtcbiAgICAgICAgLy8gV2UgaGF2ZSBzZXBhcmF0ZSB0YWJsZXMgJiBubyBwb2ludGVycy4gMiBjb21tZW50ZWQgbGluZXMgYmVsb3cgbm90IG5lZWRlZC5cbiAgICAgICAgLy8gc3RhdGUubmV4dF9pbmRleCA9IG9wdHMudGFibGVfaW5kZXg7XG4gICAgICAgIHN0YXRlLmxlbmJpdHMgPSBvcHRzLmJpdHM7XG4gICAgICAgIC8vIHN0YXRlLmxlbmNvZGUgPSBzdGF0ZS5uZXh0O1xuXG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQnO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5kaXN0Yml0cyA9IDY7XG4gICAgICAgIC8vc3RhdGUuZGlzdGNvZGUuY29weShzdGF0ZS5jb2Rlcyk7XG4gICAgICAgIC8vIFN3aXRjaCB0byB1c2UgZHluYW1pYyB0YWJsZVxuICAgICAgICBzdGF0ZS5kaXN0Y29kZSA9IHN0YXRlLmRpc3RkeW47XG4gICAgICAgIG9wdHMgPSB7IGJpdHM6IHN0YXRlLmRpc3RiaXRzIH07XG4gICAgICAgIHJldCA9IGluZmxhdGVfdGFibGUoRElTVFMsIHN0YXRlLmxlbnMsIHN0YXRlLm5sZW4sIHN0YXRlLm5kaXN0LCBzdGF0ZS5kaXN0Y29kZSwgMCwgc3RhdGUud29yaywgb3B0cyk7XG4gICAgICAgIC8vIFdlIGhhdmUgc2VwYXJhdGUgdGFibGVzICYgbm8gcG9pbnRlcnMuIDIgY29tbWVudGVkIGxpbmVzIGJlbG93IG5vdCBuZWVkZWQuXG4gICAgICAgIC8vIHN0YXRlLm5leHRfaW5kZXggPSBvcHRzLnRhYmxlX2luZGV4O1xuICAgICAgICBzdGF0ZS5kaXN0Yml0cyA9IG9wdHMuYml0cztcbiAgICAgICAgLy8gc3RhdGUuZGlzdGNvZGUgPSBzdGF0ZS5uZXh0O1xuXG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlcyBzZXQnO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgJ2luZmxhdGU6ICAgICAgIGNvZGVzIG9rXFxuJykpO1xuICAgICAgICBzdGF0ZS5tb2RlID0gTEVOXztcbiAgICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIExFTl86XG4gICAgICAgIHN0YXRlLm1vZGUgPSBMRU47XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgTEVOOlxuICAgICAgICBpZiAoaGF2ZSA+PSA2ICYmIGxlZnQgPj0gMjU4KSB7XG4gICAgICAgICAgLy8tLS0gUkVTVE9SRSgpIC0tLVxuICAgICAgICAgIHN0cm0ubmV4dF9vdXQgPSBwdXQ7XG4gICAgICAgICAgc3RybS5hdmFpbF9vdXQgPSBsZWZ0O1xuICAgICAgICAgIHN0cm0ubmV4dF9pbiA9IG5leHQ7XG4gICAgICAgICAgc3RybS5hdmFpbF9pbiA9IGhhdmU7XG4gICAgICAgICAgc3RhdGUuaG9sZCA9IGhvbGQ7XG4gICAgICAgICAgc3RhdGUuYml0cyA9IGJpdHM7XG4gICAgICAgICAgLy8tLS1cbiAgICAgICAgICBpbmZsYXRlX2Zhc3Qoc3RybSwgX291dCk7XG4gICAgICAgICAgLy8tLS0gTE9BRCgpIC0tLVxuICAgICAgICAgIHB1dCA9IHN0cm0ubmV4dF9vdXQ7XG4gICAgICAgICAgb3V0cHV0ID0gc3RybS5vdXRwdXQ7XG4gICAgICAgICAgbGVmdCA9IHN0cm0uYXZhaWxfb3V0O1xuICAgICAgICAgIG5leHQgPSBzdHJtLm5leHRfaW47XG4gICAgICAgICAgaW5wdXQgPSBzdHJtLmlucHV0O1xuICAgICAgICAgIGhhdmUgPSBzdHJtLmF2YWlsX2luO1xuICAgICAgICAgIGhvbGQgPSBzdGF0ZS5ob2xkO1xuICAgICAgICAgIGJpdHMgPSBzdGF0ZS5iaXRzO1xuICAgICAgICAgIC8vLS0tXG5cbiAgICAgICAgICBpZiAoc3RhdGUubW9kZSA9PT0gVFlQRSkge1xuICAgICAgICAgICAgc3RhdGUuYmFjayA9IC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5iYWNrID0gMDtcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIGhlcmUgPSBzdGF0ZS5sZW5jb2RlW2hvbGQgJiAoKDEgPDwgc3RhdGUubGVuYml0cykgLSAxKV07ICAvKkJJVFMoc3RhdGUubGVuYml0cykqL1xuICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0O1xuICAgICAgICAgIGhlcmVfb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgICBpZiAoaGVyZV9iaXRzIDw9IGJpdHMpIHsgYnJlYWs7IH1cbiAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vXG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhlcmVfb3AgJiYgKGhlcmVfb3AgJiAweGYwKSA9PT0gMCkge1xuICAgICAgICAgIGxhc3RfYml0cyA9IGhlcmVfYml0cztcbiAgICAgICAgICBsYXN0X29wID0gaGVyZV9vcDtcbiAgICAgICAgICBsYXN0X3ZhbCA9IGhlcmVfdmFsO1xuICAgICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGhlcmUgPSBzdGF0ZS5sZW5jb2RlW2xhc3RfdmFsICtcbiAgICAgICAgICAgICAgICAgICAgKChob2xkICYgKCgxIDw8IChsYXN0X2JpdHMgKyBsYXN0X29wKSkgLSAxKSkvKkJJVFMobGFzdC5iaXRzICsgbGFzdC5vcCkqLyA+PiBsYXN0X2JpdHMpXTtcbiAgICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0O1xuICAgICAgICAgICAgaGVyZV9vcCA9IChoZXJlID4+PiAxNikgJiAweGZmO1xuICAgICAgICAgICAgaGVyZV92YWwgPSBoZXJlICYgMHhmZmZmO1xuXG4gICAgICAgICAgICBpZiAoKGxhc3RfYml0cyArIGhlcmVfYml0cykgPD0gYml0cykgeyBicmVhazsgfVxuICAgICAgICAgICAgLy8tLS0gUFVMTEJZVEUoKSAtLS0vL1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8tLS0gRFJPUEJJVFMobGFzdC5iaXRzKSAtLS0vL1xuICAgICAgICAgIGhvbGQgPj4+PSBsYXN0X2JpdHM7XG4gICAgICAgICAgYml0cyAtPSBsYXN0X2JpdHM7XG4gICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIHN0YXRlLmJhY2sgKz0gbGFzdF9iaXRzO1xuICAgICAgICB9XG4gICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy9cbiAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7XG4gICAgICAgIC8vLS0tLy9cbiAgICAgICAgc3RhdGUuYmFjayArPSBoZXJlX2JpdHM7XG4gICAgICAgIHN0YXRlLmxlbmd0aCA9IGhlcmVfdmFsO1xuICAgICAgICBpZiAoaGVyZV9vcCA9PT0gMCkge1xuICAgICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCBoZXJlLnZhbCA+PSAweDIwICYmIGhlcmUudmFsIDwgMHg3ZiA/XG4gICAgICAgICAgLy8gICAgICAgIFwiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsICclYydcXG5cIiA6XG4gICAgICAgICAgLy8gICAgICAgIFwiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsIDB4JTAyeFxcblwiLCBoZXJlLnZhbCkpO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBMSVQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhlcmVfb3AgJiAzMikge1xuICAgICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCBcImluZmxhdGU6ICAgICAgICAgZW5kIG9mIGJsb2NrXFxuXCIpKTtcbiAgICAgICAgICBzdGF0ZS5iYWNrID0gLTE7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IFRZUEU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhlcmVfb3AgJiA2NCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5leHRyYSA9IGhlcmVfb3AgJiAxNTtcbiAgICAgICAgc3RhdGUubW9kZSA9IExFTkVYVDtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBMRU5FWFQ6XG4gICAgICAgIGlmIChzdGF0ZS5leHRyYSkge1xuICAgICAgICAgIC8vPT09IE5FRURCSVRTKHN0YXRlLmV4dHJhKTtcbiAgICAgICAgICBuID0gc3RhdGUuZXh0cmE7XG4gICAgICAgICAgd2hpbGUgKGJpdHMgPCBuKSB7XG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgc3RhdGUubGVuZ3RoICs9IGhvbGQgJiAoKDEgPDwgc3RhdGUuZXh0cmEpIC0gMSkvKkJJVFMoc3RhdGUuZXh0cmEpKi87XG4gICAgICAgICAgLy8tLS0gRFJPUEJJVFMoc3RhdGUuZXh0cmEpIC0tLS8vXG4gICAgICAgICAgaG9sZCA+Pj49IHN0YXRlLmV4dHJhO1xuICAgICAgICAgIGJpdHMgLT0gc3RhdGUuZXh0cmE7XG4gICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIHN0YXRlLmJhY2sgKz0gc3RhdGUuZXh0cmE7XG4gICAgICAgIH1cbiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBsZW5ndGggJXVcXG5cIiwgc3RhdGUubGVuZ3RoKSk7XG4gICAgICAgIHN0YXRlLndhcyA9IHN0YXRlLmxlbmd0aDtcbiAgICAgICAgc3RhdGUubW9kZSA9IERJU1Q7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgRElTVDpcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIGhlcmUgPSBzdGF0ZS5kaXN0Y29kZVtob2xkICYgKCgxIDw8IHN0YXRlLmRpc3RiaXRzKSAtIDEpXTsvKkJJVFMoc3RhdGUuZGlzdGJpdHMpKi9cbiAgICAgICAgICBoZXJlX2JpdHMgPSBoZXJlID4+PiAyNDtcbiAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7XG4gICAgICAgICAgaGVyZV92YWwgPSBoZXJlICYgMHhmZmZmO1xuXG4gICAgICAgICAgaWYgKChoZXJlX2JpdHMpIDw9IGJpdHMpIHsgYnJlYWs7IH1cbiAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vXG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgIH1cbiAgICAgICAgaWYgKChoZXJlX29wICYgMHhmMCkgPT09IDApIHtcbiAgICAgICAgICBsYXN0X2JpdHMgPSBoZXJlX2JpdHM7XG4gICAgICAgICAgbGFzdF9vcCA9IGhlcmVfb3A7XG4gICAgICAgICAgbGFzdF92YWwgPSBoZXJlX3ZhbDtcbiAgICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBoZXJlID0gc3RhdGUuZGlzdGNvZGVbbGFzdF92YWwgK1xuICAgICAgICAgICAgICAgICAgICAoKGhvbGQgJiAoKDEgPDwgKGxhc3RfYml0cyArIGxhc3Rfb3ApKSAtIDEpKS8qQklUUyhsYXN0LmJpdHMgKyBsYXN0Lm9wKSovID4+IGxhc3RfYml0cyldO1xuICAgICAgICAgICAgaGVyZV9iaXRzID0gaGVyZSA+Pj4gMjQ7XG4gICAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7XG4gICAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgICAgIGlmICgobGFzdF9iaXRzICsgaGVyZV9iaXRzKSA8PSBiaXRzKSB7IGJyZWFrOyB9XG4gICAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vXG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLy0tLSBEUk9QQklUUyhsYXN0LmJpdHMpIC0tLS8vXG4gICAgICAgICAgaG9sZCA+Pj49IGxhc3RfYml0cztcbiAgICAgICAgICBiaXRzIC09IGxhc3RfYml0cztcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgc3RhdGUuYmFjayArPSBsYXN0X2JpdHM7XG4gICAgICAgIH1cbiAgICAgICAgLy8tLS0gRFJPUEJJVFMoaGVyZS5iaXRzKSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzO1xuICAgICAgICBiaXRzIC09IGhlcmVfYml0cztcbiAgICAgICAgLy8tLS0vL1xuICAgICAgICBzdGF0ZS5iYWNrICs9IGhlcmVfYml0cztcbiAgICAgICAgaWYgKGhlcmVfb3AgJiA2NCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgY29kZSc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5vZmZzZXQgPSBoZXJlX3ZhbDtcbiAgICAgICAgc3RhdGUuZXh0cmEgPSAoaGVyZV9vcCkgJiAxNTtcbiAgICAgICAgc3RhdGUubW9kZSA9IERJU1RFWFQ7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgRElTVEVYVDpcbiAgICAgICAgaWYgKHN0YXRlLmV4dHJhKSB7XG4gICAgICAgICAgLy89PT0gTkVFREJJVFMoc3RhdGUuZXh0cmEpO1xuICAgICAgICAgIG4gPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgICB3aGlsZSAoYml0cyA8IG4pIHtcbiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICBzdGF0ZS5vZmZzZXQgKz0gaG9sZCAmICgoMSA8PCBzdGF0ZS5leHRyYSkgLSAxKS8qQklUUyhzdGF0ZS5leHRyYSkqLztcbiAgICAgICAgICAvLy0tLSBEUk9QQklUUyhzdGF0ZS5leHRyYSkgLS0tLy9cbiAgICAgICAgICBob2xkID4+Pj0gc3RhdGUuZXh0cmE7XG4gICAgICAgICAgYml0cyAtPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgc3RhdGUuYmFjayArPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgfVxuLy8jaWZkZWYgSU5GTEFURV9TVFJJQ1RcbiAgICAgICAgaWYgKHN0YXRlLm9mZnNldCA+IHN0YXRlLmRtYXgpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuLy8jZW5kaWZcbiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBkaXN0YW5jZSAldVxcblwiLCBzdGF0ZS5vZmZzZXQpKTtcbiAgICAgICAgc3RhdGUubW9kZSA9IE1BVENIO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIE1BVENIOlxuICAgICAgICBpZiAobGVmdCA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgY29weSA9IF9vdXQgLSBsZWZ0O1xuICAgICAgICBpZiAoc3RhdGUub2Zmc2V0ID4gY29weSkgeyAgICAgICAgIC8qIGNvcHkgZnJvbSB3aW5kb3cgKi9cbiAgICAgICAgICBjb3B5ID0gc3RhdGUub2Zmc2V0IC0gY29weTtcbiAgICAgICAgICBpZiAoY29weSA+IHN0YXRlLndoYXZlKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuc2FuZSkge1xuICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayc7XG4gICAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuLy8gKCEpIFRoaXMgYmxvY2sgaXMgZGlzYWJsZWQgaW4gemxpYiBkZWZhdWx0cyxcbi8vIGRvbid0IGVuYWJsZSBpdCBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHlcbi8vI2lmZGVmIElORkxBVEVfQUxMT1dfSU5WQUxJRF9ESVNUQU5DRV9UT09GQVJfQVJSUlxuLy8gICAgICAgICAgVHJhY2UoKHN0ZGVyciwgXCJpbmZsYXRlLmMgdG9vIGZhclxcblwiKSk7XG4vLyAgICAgICAgICBjb3B5IC09IHN0YXRlLndoYXZlO1xuLy8gICAgICAgICAgaWYgKGNvcHkgPiBzdGF0ZS5sZW5ndGgpIHsgY29weSA9IHN0YXRlLmxlbmd0aDsgfVxuLy8gICAgICAgICAgaWYgKGNvcHkgPiBsZWZ0KSB7IGNvcHkgPSBsZWZ0OyB9XG4vLyAgICAgICAgICBsZWZ0IC09IGNvcHk7XG4vLyAgICAgICAgICBzdGF0ZS5sZW5ndGggLT0gY29weTtcbi8vICAgICAgICAgIGRvIHtcbi8vICAgICAgICAgICAgb3V0cHV0W3B1dCsrXSA9IDA7XG4vLyAgICAgICAgICB9IHdoaWxlICgtLWNvcHkpO1xuLy8gICAgICAgICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgeyBzdGF0ZS5tb2RlID0gTEVOOyB9XG4vLyAgICAgICAgICBicmVhaztcbi8vI2VuZGlmXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUud25leHQpIHtcbiAgICAgICAgICAgIGNvcHkgLT0gc3RhdGUud25leHQ7XG4gICAgICAgICAgICBmcm9tID0gc3RhdGUud3NpemUgLSBjb3B5O1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZyb20gPSBzdGF0ZS53bmV4dCAtIGNvcHk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUubGVuZ3RoKSB7IGNvcHkgPSBzdGF0ZS5sZW5ndGg7IH1cbiAgICAgICAgICBmcm9tX3NvdXJjZSA9IHN0YXRlLndpbmRvdztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb3B5IGZyb20gb3V0cHV0ICovXG4gICAgICAgICAgZnJvbV9zb3VyY2UgPSBvdXRwdXQ7XG4gICAgICAgICAgZnJvbSA9IHB1dCAtIHN0YXRlLm9mZnNldDtcbiAgICAgICAgICBjb3B5ID0gc3RhdGUubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb3B5ID4gbGVmdCkgeyBjb3B5ID0gbGVmdDsgfVxuICAgICAgICBsZWZ0IC09IGNvcHk7XG4gICAgICAgIHN0YXRlLmxlbmd0aCAtPSBjb3B5O1xuICAgICAgICBkbyB7XG4gICAgICAgICAgb3V0cHV0W3B1dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107XG4gICAgICAgIH0gd2hpbGUgKC0tY29weSk7XG4gICAgICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHsgc3RhdGUubW9kZSA9IExFTjsgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTElUOlxuICAgICAgICBpZiAobGVmdCA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgb3V0cHV0W3B1dCsrXSA9IHN0YXRlLmxlbmd0aDtcbiAgICAgICAgbGVmdC0tO1xuICAgICAgICBzdGF0ZS5tb2RlID0gTEVOO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ0hFQ0s6XG4gICAgICAgIGlmIChzdGF0ZS53cmFwKSB7XG4gICAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpO1xuICAgICAgICAgIHdoaWxlIChiaXRzIDwgMzIpIHtcbiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgLy8gVXNlICd8JyBpbnN0ZWFkIG9mICcrJyB0byBtYWtlIHN1cmUgdGhhdCByZXN1bHQgaXMgc2lnbmVkXG4gICAgICAgICAgICBob2xkIHw9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIF9vdXQgLT0gbGVmdDtcbiAgICAgICAgICBzdHJtLnRvdGFsX291dCArPSBfb3V0O1xuICAgICAgICAgIHN0YXRlLnRvdGFsICs9IF9vdXQ7XG4gICAgICAgICAgaWYgKF9vdXQpIHtcbiAgICAgICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9XG4gICAgICAgICAgICAgICAgLypVUERBVEUoc3RhdGUuY2hlY2ssIHB1dCAtIF9vdXQsIF9vdXQpOyovXG4gICAgICAgICAgICAgICAgKHN0YXRlLmZsYWdzID8gY3JjMzIoc3RhdGUuY2hlY2ssIG91dHB1dCwgX291dCwgcHV0IC0gX291dCkgOiBhZGxlcjMyKHN0YXRlLmNoZWNrLCBvdXRwdXQsIF9vdXQsIHB1dCAtIF9vdXQpKTtcblxuICAgICAgICAgIH1cbiAgICAgICAgICBfb3V0ID0gbGVmdDtcbiAgICAgICAgICAvLyBOQjogY3JjMzIgc3RvcmVkIGFzIHNpZ25lZCAzMi1iaXQgaW50LCB6c3dhcDMyIHJldHVybnMgc2lnbmVkIHRvb1xuICAgICAgICAgIGlmICgoc3RhdGUuZmxhZ3MgPyBob2xkIDogenN3YXAzMihob2xkKSkgIT09IHN0YXRlLmNoZWNrKSB7XG4gICAgICAgICAgICBzdHJtLm1zZyA9ICdpbmNvcnJlY3QgZGF0YSBjaGVjayc7XG4gICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgICAgYml0cyA9IDA7XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICBjaGVjayBtYXRjaGVzIHRyYWlsZXJcXG5cIikpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLm1vZGUgPSBMRU5HVEg7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgTEVOR1RIOlxuICAgICAgICBpZiAoc3RhdGUud3JhcCAmJiBzdGF0ZS5mbGFncykge1xuICAgICAgICAgIC8vPT09IE5FRURCSVRTKDMyKTtcbiAgICAgICAgICB3aGlsZSAoYml0cyA8IDMyKSB7XG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgaWYgKGhvbGQgIT09IChzdGF0ZS50b3RhbCAmIDB4ZmZmZmZmZmYpKSB7XG4gICAgICAgICAgICBzdHJtLm1zZyA9ICdpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrJztcbiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgICBob2xkID0gMDtcbiAgICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgIGxlbmd0aCBtYXRjaGVzIHRyYWlsZXJcXG5cIikpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLm1vZGUgPSBET05FO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIERPTkU6XG4gICAgICAgIHJldCA9IFpfU1RSRUFNX0VORDtcbiAgICAgICAgYnJlYWsgaW5mX2xlYXZlO1xuICAgICAgY2FzZSBCQUQ6XG4gICAgICAgIHJldCA9IFpfREFUQV9FUlJPUjtcbiAgICAgICAgYnJlYWsgaW5mX2xlYXZlO1xuICAgICAgY2FzZSBNRU06XG4gICAgICAgIHJldHVybiBaX01FTV9FUlJPUjtcbiAgICAgIGNhc2UgU1lOQzpcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICAgIH1cbiAgfVxuXG4gIC8vIGluZl9sZWF2ZSA8LSBoZXJlIGlzIHJlYWwgcGxhY2UgZm9yIFwiZ290byBpbmZfbGVhdmVcIiwgZW11bGF0ZWQgdmlhIFwiYnJlYWsgaW5mX2xlYXZlXCJcblxuICAvKlxuICAgICBSZXR1cm4gZnJvbSBpbmZsYXRlKCksIHVwZGF0aW5nIHRoZSB0b3RhbCBjb3VudHMgYW5kIHRoZSBjaGVjayB2YWx1ZS5cbiAgICAgSWYgdGhlcmUgd2FzIG5vIHByb2dyZXNzIGR1cmluZyB0aGUgaW5mbGF0ZSgpIGNhbGwsIHJldHVybiBhIGJ1ZmZlclxuICAgICBlcnJvci4gIENhbGwgdXBkYXRld2luZG93KCkgdG8gY3JlYXRlIGFuZC9vciB1cGRhdGUgdGhlIHdpbmRvdyBzdGF0ZS5cbiAgICAgTm90ZTogYSBtZW1vcnkgZXJyb3IgZnJvbSBpbmZsYXRlKCkgaXMgbm9uLXJlY292ZXJhYmxlLlxuICAgKi9cblxuICAvLy0tLSBSRVNUT1JFKCkgLS0tXG4gIHN0cm0ubmV4dF9vdXQgPSBwdXQ7XG4gIHN0cm0uYXZhaWxfb3V0ID0gbGVmdDtcbiAgc3RybS5uZXh0X2luID0gbmV4dDtcbiAgc3RybS5hdmFpbF9pbiA9IGhhdmU7XG4gIHN0YXRlLmhvbGQgPSBob2xkO1xuICBzdGF0ZS5iaXRzID0gYml0cztcbiAgLy8tLS1cblxuICBpZiAoc3RhdGUud3NpemUgfHwgKF9vdXQgIT09IHN0cm0uYXZhaWxfb3V0ICYmIHN0YXRlLm1vZGUgPCBCQUQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoc3RhdGUubW9kZSA8IENIRUNLIHx8IGZsdXNoICE9PSBaX0ZJTklTSCkpKSB7XG4gICAgaWYgKHVwZGF0ZXdpbmRvdyhzdHJtLCBzdHJtLm91dHB1dCwgc3RybS5uZXh0X291dCwgX291dCAtIHN0cm0uYXZhaWxfb3V0KSkge1xuICAgICAgc3RhdGUubW9kZSA9IE1FTTtcbiAgICAgIHJldHVybiBaX01FTV9FUlJPUjtcbiAgICB9XG4gIH1cbiAgX2luIC09IHN0cm0uYXZhaWxfaW47XG4gIF9vdXQgLT0gc3RybS5hdmFpbF9vdXQ7XG4gIHN0cm0udG90YWxfaW4gKz0gX2luO1xuICBzdHJtLnRvdGFsX291dCArPSBfb3V0O1xuICBzdGF0ZS50b3RhbCArPSBfb3V0O1xuICBpZiAoc3RhdGUud3JhcCAmJiBfb3V0KSB7XG4gICAgc3RybS5hZGxlciA9IHN0YXRlLmNoZWNrID0gLypVUERBVEUoc3RhdGUuY2hlY2ssIHN0cm0ubmV4dF9vdXQgLSBfb3V0LCBfb3V0KTsqL1xuICAgICAgKHN0YXRlLmZsYWdzID8gY3JjMzIoc3RhdGUuY2hlY2ssIG91dHB1dCwgX291dCwgc3RybS5uZXh0X291dCAtIF9vdXQpIDogYWRsZXIzMihzdGF0ZS5jaGVjaywgb3V0cHV0LCBfb3V0LCBzdHJtLm5leHRfb3V0IC0gX291dCkpO1xuICB9XG4gIHN0cm0uZGF0YV90eXBlID0gc3RhdGUuYml0cyArIChzdGF0ZS5sYXN0ID8gNjQgOiAwKSArXG4gICAgICAgICAgICAgICAgICAgIChzdGF0ZS5tb2RlID09PSBUWVBFID8gMTI4IDogMCkgK1xuICAgICAgICAgICAgICAgICAgICAoc3RhdGUubW9kZSA9PT0gTEVOXyB8fCBzdGF0ZS5tb2RlID09PSBDT1BZXyA/IDI1NiA6IDApO1xuICBpZiAoKChfaW4gPT09IDAgJiYgX291dCA9PT0gMCkgfHwgZmx1c2ggPT09IFpfRklOSVNIKSAmJiByZXQgPT09IFpfT0spIHtcbiAgICByZXQgPSBaX0JVRl9FUlJPUjtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBpbmZsYXRlRW5kKHN0cm0pIHtcblxuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUgLyp8fCBzdHJtLT56ZnJlZSA9PSAoZnJlZV9mdW5jKTAqLykge1xuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuXG4gIHZhciBzdGF0ZSA9IHN0cm0uc3RhdGU7XG4gIGlmIChzdGF0ZS53aW5kb3cpIHtcbiAgICBzdGF0ZS53aW5kb3cgPSBudWxsO1xuICB9XG4gIHN0cm0uc3RhdGUgPSBudWxsO1xuICByZXR1cm4gWl9PSztcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZUdldEhlYWRlcihzdHJtLCBoZWFkKSB7XG4gIHZhciBzdGF0ZTtcblxuICAvKiBjaGVjayBzdGF0ZSAqL1xuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUpIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIHN0YXRlID0gc3RybS5zdGF0ZTtcbiAgaWYgKChzdGF0ZS53cmFwICYgMikgPT09IDApIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG5cbiAgLyogc2F2ZSBoZWFkZXIgc3RydWN0dXJlICovXG4gIHN0YXRlLmhlYWQgPSBoZWFkO1xuICBoZWFkLmRvbmUgPSBmYWxzZTtcbiAgcmV0dXJuIFpfT0s7XG59XG5cbmZ1bmN0aW9uIGluZmxhdGVTZXREaWN0aW9uYXJ5KHN0cm0sIGRpY3Rpb25hcnkpIHtcbiAgdmFyIGRpY3RMZW5ndGggPSBkaWN0aW9uYXJ5Lmxlbmd0aDtcblxuICB2YXIgc3RhdGU7XG4gIHZhciBkaWN0aWQ7XG4gIHZhciByZXQ7XG5cbiAgLyogY2hlY2sgc3RhdGUgKi9cbiAgaWYgKCFzdHJtIC8qID09IFpfTlVMTCAqLyB8fCAhc3RybS5zdGF0ZSAvKiA9PSBaX05VTEwgKi8pIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIHN0YXRlID0gc3RybS5zdGF0ZTtcblxuICBpZiAoc3RhdGUud3JhcCAhPT0gMCAmJiBzdGF0ZS5tb2RlICE9PSBESUNUKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgLyogY2hlY2sgZm9yIGNvcnJlY3QgZGljdGlvbmFyeSBpZGVudGlmaWVyICovXG4gIGlmIChzdGF0ZS5tb2RlID09PSBESUNUKSB7XG4gICAgZGljdGlkID0gMTsgLyogYWRsZXIzMigwLCBudWxsLCAwKSovXG4gICAgLyogZGljdGlkID0gYWRsZXIzMihkaWN0aWQsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgpOyAqL1xuICAgIGRpY3RpZCA9IGFkbGVyMzIoZGljdGlkLCBkaWN0aW9uYXJ5LCBkaWN0TGVuZ3RoLCAwKTtcbiAgICBpZiAoZGljdGlkICE9PSBzdGF0ZS5jaGVjaykge1xuICAgICAgcmV0dXJuIFpfREFUQV9FUlJPUjtcbiAgICB9XG4gIH1cbiAgLyogY29weSBkaWN0aW9uYXJ5IHRvIHdpbmRvdyB1c2luZyB1cGRhdGV3aW5kb3coKSwgd2hpY2ggd2lsbCBhbWVuZCB0aGVcbiAgIGV4aXN0aW5nIGRpY3Rpb25hcnkgaWYgYXBwcm9wcmlhdGUgKi9cbiAgcmV0ID0gdXBkYXRld2luZG93KHN0cm0sIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgsIGRpY3RMZW5ndGgpO1xuICBpZiAocmV0KSB7XG4gICAgc3RhdGUubW9kZSA9IE1FTTtcbiAgICByZXR1cm4gWl9NRU1fRVJST1I7XG4gIH1cbiAgc3RhdGUuaGF2ZWRpY3QgPSAxO1xuICAvLyBUcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgIGRpY3Rpb25hcnkgc2V0XFxuXCIpKTtcbiAgcmV0dXJuIFpfT0s7XG59XG5cbmV4cG9ydHMuaW5mbGF0ZVJlc2V0ID0gaW5mbGF0ZVJlc2V0O1xuZXhwb3J0cy5pbmZsYXRlUmVzZXQyID0gaW5mbGF0ZVJlc2V0MjtcbmV4cG9ydHMuaW5mbGF0ZVJlc2V0S2VlcCA9IGluZmxhdGVSZXNldEtlZXA7XG5leHBvcnRzLmluZmxhdGVJbml0ID0gaW5mbGF0ZUluaXQ7XG5leHBvcnRzLmluZmxhdGVJbml0MiA9IGluZmxhdGVJbml0MjtcbmV4cG9ydHMuaW5mbGF0ZSA9IGluZmxhdGU7XG5leHBvcnRzLmluZmxhdGVFbmQgPSBpbmZsYXRlRW5kO1xuZXhwb3J0cy5pbmZsYXRlR2V0SGVhZGVyID0gaW5mbGF0ZUdldEhlYWRlcjtcbmV4cG9ydHMuaW5mbGF0ZVNldERpY3Rpb25hcnkgPSBpbmZsYXRlU2V0RGljdGlvbmFyeTtcbmV4cG9ydHMuaW5mbGF0ZUluZm8gPSAncGFrbyBpbmZsYXRlIChmcm9tIE5vZGVjYSBwcm9qZWN0KSc7XG5cbi8qIE5vdCBpbXBsZW1lbnRlZFxuZXhwb3J0cy5pbmZsYXRlQ29weSA9IGluZmxhdGVDb3B5O1xuZXhwb3J0cy5pbmZsYXRlR2V0RGljdGlvbmFyeSA9IGluZmxhdGVHZXREaWN0aW9uYXJ5O1xuZXhwb3J0cy5pbmZsYXRlTWFyayA9IGluZmxhdGVNYXJrO1xuZXhwb3J0cy5pbmZsYXRlUHJpbWUgPSBpbmZsYXRlUHJpbWU7XG5leHBvcnRzLmluZmxhdGVTeW5jID0gaW5mbGF0ZVN5bmM7XG5leHBvcnRzLmluZmxhdGVTeW5jUG9pbnQgPSBpbmZsYXRlU3luY1BvaW50O1xuZXhwb3J0cy5pbmZsYXRlVW5kZXJtaW5lID0gaW5mbGF0ZVVuZGVybWluZTtcbiovXG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMvY29tbW9uJyk7XG5cbnZhciBNQVhCSVRTID0gMTU7XG52YXIgRU5PVUdIX0xFTlMgPSA4NTI7XG52YXIgRU5PVUdIX0RJU1RTID0gNTkyO1xuLy92YXIgRU5PVUdIID0gKEVOT1VHSF9MRU5TK0VOT1VHSF9ESVNUUyk7XG5cbnZhciBDT0RFUyA9IDA7XG52YXIgTEVOUyA9IDE7XG52YXIgRElTVFMgPSAyO1xuXG52YXIgbGJhc2UgPSBbIC8qIExlbmd0aCBjb2RlcyAyNTcuLjI4NSBiYXNlICovXG4gIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTMsIDE1LCAxNywgMTksIDIzLCAyNywgMzEsXG4gIDM1LCA0MywgNTEsIDU5LCA2NywgODMsIDk5LCAxMTUsIDEzMSwgMTYzLCAxOTUsIDIyNywgMjU4LCAwLCAwXG5dO1xuXG52YXIgbGV4dCA9IFsgLyogTGVuZ3RoIGNvZGVzIDI1Ny4uMjg1IGV4dHJhICovXG4gIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTcsIDE3LCAxNywgMTcsIDE4LCAxOCwgMTgsIDE4LFxuICAxOSwgMTksIDE5LCAxOSwgMjAsIDIwLCAyMCwgMjAsIDIxLCAyMSwgMjEsIDIxLCAxNiwgNzIsIDc4XG5dO1xuXG52YXIgZGJhc2UgPSBbIC8qIERpc3RhbmNlIGNvZGVzIDAuLjI5IGJhc2UgKi9cbiAgMSwgMiwgMywgNCwgNSwgNywgOSwgMTMsIDE3LCAyNSwgMzMsIDQ5LCA2NSwgOTcsIDEyOSwgMTkzLFxuICAyNTcsIDM4NSwgNTEzLCA3NjksIDEwMjUsIDE1MzcsIDIwNDksIDMwNzMsIDQwOTcsIDYxNDUsXG4gIDgxOTMsIDEyMjg5LCAxNjM4NSwgMjQ1NzcsIDAsIDBcbl07XG5cbnZhciBkZXh0ID0gWyAvKiBEaXN0YW5jZSBjb2RlcyAwLi4yOSBleHRyYSAqL1xuICAxNiwgMTYsIDE2LCAxNiwgMTcsIDE3LCAxOCwgMTgsIDE5LCAxOSwgMjAsIDIwLCAyMSwgMjEsIDIyLCAyMixcbiAgMjMsIDIzLCAyNCwgMjQsIDI1LCAyNSwgMjYsIDI2LCAyNywgMjcsXG4gIDI4LCAyOCwgMjksIDI5LCA2NCwgNjRcbl07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5mbGF0ZV90YWJsZSh0eXBlLCBsZW5zLCBsZW5zX2luZGV4LCBjb2RlcywgdGFibGUsIHRhYmxlX2luZGV4LCB3b3JrLCBvcHRzKVxue1xuICB2YXIgYml0cyA9IG9wdHMuYml0cztcbiAgICAgIC8vaGVyZSA9IG9wdHMuaGVyZTsgLyogdGFibGUgZW50cnkgZm9yIGR1cGxpY2F0aW9uICovXG5cbiAgdmFyIGxlbiA9IDA7ICAgICAgICAgICAgICAgLyogYSBjb2RlJ3MgbGVuZ3RoIGluIGJpdHMgKi9cbiAgdmFyIHN5bSA9IDA7ICAgICAgICAgICAgICAgLyogaW5kZXggb2YgY29kZSBzeW1ib2xzICovXG4gIHZhciBtaW4gPSAwLCBtYXggPSAwOyAgICAgICAgICAvKiBtaW5pbXVtIGFuZCBtYXhpbXVtIGNvZGUgbGVuZ3RocyAqL1xuICB2YXIgcm9vdCA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgaW5kZXggYml0cyBmb3Igcm9vdCB0YWJsZSAqL1xuICB2YXIgY3VyciA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgaW5kZXggYml0cyBmb3IgY3VycmVudCB0YWJsZSAqL1xuICB2YXIgZHJvcCA9IDA7ICAgICAgICAgICAgICAvKiBjb2RlIGJpdHMgdG8gZHJvcCBmb3Igc3ViLXRhYmxlICovXG4gIHZhciBsZWZ0ID0gMDsgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIHByZWZpeCBjb2RlcyBhdmFpbGFibGUgKi9cbiAgdmFyIHVzZWQgPSAwOyAgICAgICAgICAgICAgLyogY29kZSBlbnRyaWVzIGluIHRhYmxlIHVzZWQgKi9cbiAgdmFyIGh1ZmYgPSAwOyAgICAgICAgICAgICAgLyogSHVmZm1hbiBjb2RlICovXG4gIHZhciBpbmNyOyAgICAgICAgICAgICAgLyogZm9yIGluY3JlbWVudGluZyBjb2RlLCBpbmRleCAqL1xuICB2YXIgZmlsbDsgICAgICAgICAgICAgIC8qIGluZGV4IGZvciByZXBsaWNhdGluZyBlbnRyaWVzICovXG4gIHZhciBsb3c7ICAgICAgICAgICAgICAgLyogbG93IGJpdHMgZm9yIGN1cnJlbnQgcm9vdCBlbnRyeSAqL1xuICB2YXIgbWFzazsgICAgICAgICAgICAgIC8qIG1hc2sgZm9yIGxvdyByb290IGJpdHMgKi9cbiAgdmFyIG5leHQ7ICAgICAgICAgICAgIC8qIG5leHQgYXZhaWxhYmxlIHNwYWNlIGluIHRhYmxlICovXG4gIHZhciBiYXNlID0gbnVsbDsgICAgIC8qIGJhc2UgdmFsdWUgdGFibGUgdG8gdXNlICovXG4gIHZhciBiYXNlX2luZGV4ID0gMDtcbi8vICB2YXIgc2hvZXh0cmE7ICAgIC8qIGV4dHJhIGJpdHMgdGFibGUgdG8gdXNlICovXG4gIHZhciBlbmQ7ICAgICAgICAgICAgICAgICAgICAvKiB1c2UgYmFzZSBhbmQgZXh0cmEgZm9yIHN5bWJvbCA+IGVuZCAqL1xuICB2YXIgY291bnQgPSBuZXcgdXRpbHMuQnVmMTYoTUFYQklUUyArIDEpOyAvL1tNQVhCSVRTKzFdOyAgICAvKiBudW1iZXIgb2YgY29kZXMgb2YgZWFjaCBsZW5ndGggKi9cbiAgdmFyIG9mZnMgPSBuZXcgdXRpbHMuQnVmMTYoTUFYQklUUyArIDEpOyAvL1tNQVhCSVRTKzFdOyAgICAgLyogb2Zmc2V0cyBpbiB0YWJsZSBmb3IgZWFjaCBsZW5ndGggKi9cbiAgdmFyIGV4dHJhID0gbnVsbDtcbiAgdmFyIGV4dHJhX2luZGV4ID0gMDtcblxuICB2YXIgaGVyZV9iaXRzLCBoZXJlX29wLCBoZXJlX3ZhbDtcblxuICAvKlxuICAgUHJvY2VzcyBhIHNldCBvZiBjb2RlIGxlbmd0aHMgdG8gY3JlYXRlIGEgY2Fub25pY2FsIEh1ZmZtYW4gY29kZS4gIFRoZVxuICAgY29kZSBsZW5ndGhzIGFyZSBsZW5zWzAuLmNvZGVzLTFdLiAgRWFjaCBsZW5ndGggY29ycmVzcG9uZHMgdG8gdGhlXG4gICBzeW1ib2xzIDAuLmNvZGVzLTEuICBUaGUgSHVmZm1hbiBjb2RlIGlzIGdlbmVyYXRlZCBieSBmaXJzdCBzb3J0aW5nIHRoZVxuICAgc3ltYm9scyBieSBsZW5ndGggZnJvbSBzaG9ydCB0byBsb25nLCBhbmQgcmV0YWluaW5nIHRoZSBzeW1ib2wgb3JkZXJcbiAgIGZvciBjb2RlcyB3aXRoIGVxdWFsIGxlbmd0aHMuICBUaGVuIHRoZSBjb2RlIHN0YXJ0cyB3aXRoIGFsbCB6ZXJvIGJpdHNcbiAgIGZvciB0aGUgZmlyc3QgY29kZSBvZiB0aGUgc2hvcnRlc3QgbGVuZ3RoLCBhbmQgdGhlIGNvZGVzIGFyZSBpbnRlZ2VyXG4gICBpbmNyZW1lbnRzIGZvciB0aGUgc2FtZSBsZW5ndGgsIGFuZCB6ZXJvcyBhcmUgYXBwZW5kZWQgYXMgdGhlIGxlbmd0aFxuICAgaW5jcmVhc2VzLiAgRm9yIHRoZSBkZWZsYXRlIGZvcm1hdCwgdGhlc2UgYml0cyBhcmUgc3RvcmVkIGJhY2t3YXJkc1xuICAgZnJvbSB0aGVpciBtb3JlIG5hdHVyYWwgaW50ZWdlciBpbmNyZW1lbnQgb3JkZXJpbmcsIGFuZCBzbyB3aGVuIHRoZVxuICAgZGVjb2RpbmcgdGFibGVzIGFyZSBidWlsdCBpbiB0aGUgbGFyZ2UgbG9vcCBiZWxvdywgdGhlIGludGVnZXIgY29kZXNcbiAgIGFyZSBpbmNyZW1lbnRlZCBiYWNrd2FyZHMuXG5cbiAgIFRoaXMgcm91dGluZSBhc3N1bWVzLCBidXQgZG9lcyBub3QgY2hlY2ssIHRoYXQgYWxsIG9mIHRoZSBlbnRyaWVzIGluXG4gICBsZW5zW10gYXJlIGluIHRoZSByYW5nZSAwLi5NQVhCSVRTLiAgVGhlIGNhbGxlciBtdXN0IGFzc3VyZSB0aGlzLlxuICAgMS4uTUFYQklUUyBpcyBpbnRlcnByZXRlZCBhcyB0aGF0IGNvZGUgbGVuZ3RoLiAgemVybyBtZWFucyB0aGF0IHRoYXRcbiAgIHN5bWJvbCBkb2VzIG5vdCBvY2N1ciBpbiB0aGlzIGNvZGUuXG5cbiAgIFRoZSBjb2RlcyBhcmUgc29ydGVkIGJ5IGNvbXB1dGluZyBhIGNvdW50IG9mIGNvZGVzIGZvciBlYWNoIGxlbmd0aCxcbiAgIGNyZWF0aW5nIGZyb20gdGhhdCBhIHRhYmxlIG9mIHN0YXJ0aW5nIGluZGljZXMgZm9yIGVhY2ggbGVuZ3RoIGluIHRoZVxuICAgc29ydGVkIHRhYmxlLCBhbmQgdGhlbiBlbnRlcmluZyB0aGUgc3ltYm9scyBpbiBvcmRlciBpbiB0aGUgc29ydGVkXG4gICB0YWJsZS4gIFRoZSBzb3J0ZWQgdGFibGUgaXMgd29ya1tdLCB3aXRoIHRoYXQgc3BhY2UgYmVpbmcgcHJvdmlkZWQgYnlcbiAgIHRoZSBjYWxsZXIuXG5cbiAgIFRoZSBsZW5ndGggY291bnRzIGFyZSB1c2VkIGZvciBvdGhlciBwdXJwb3NlcyBhcyB3ZWxsLCBpLmUuIGZpbmRpbmdcbiAgIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGxlbmd0aCBjb2RlcywgZGV0ZXJtaW5pbmcgaWYgdGhlcmUgYXJlIGFueVxuICAgY29kZXMgYXQgYWxsLCBjaGVja2luZyBmb3IgYSB2YWxpZCBzZXQgb2YgbGVuZ3RocywgYW5kIGxvb2tpbmcgYWhlYWRcbiAgIGF0IGxlbmd0aCBjb3VudHMgdG8gZGV0ZXJtaW5lIHN1Yi10YWJsZSBzaXplcyB3aGVuIGJ1aWxkaW5nIHRoZVxuICAgZGVjb2RpbmcgdGFibGVzLlxuICAgKi9cblxuICAvKiBhY2N1bXVsYXRlIGxlbmd0aHMgZm9yIGNvZGVzIChhc3N1bWVzIGxlbnNbXSBhbGwgaW4gMC4uTUFYQklUUykgKi9cbiAgZm9yIChsZW4gPSAwOyBsZW4gPD0gTUFYQklUUzsgbGVuKyspIHtcbiAgICBjb3VudFtsZW5dID0gMDtcbiAgfVxuICBmb3IgKHN5bSA9IDA7IHN5bSA8IGNvZGVzOyBzeW0rKykge1xuICAgIGNvdW50W2xlbnNbbGVuc19pbmRleCArIHN5bV1dKys7XG4gIH1cblxuICAvKiBib3VuZCBjb2RlIGxlbmd0aHMsIGZvcmNlIHJvb3QgdG8gYmUgd2l0aGluIGNvZGUgbGVuZ3RocyAqL1xuICByb290ID0gYml0cztcbiAgZm9yIChtYXggPSBNQVhCSVRTOyBtYXggPj0gMTsgbWF4LS0pIHtcbiAgICBpZiAoY291bnRbbWF4XSAhPT0gMCkgeyBicmVhazsgfVxuICB9XG4gIGlmIChyb290ID4gbWF4KSB7XG4gICAgcm9vdCA9IG1heDtcbiAgfVxuICBpZiAobWF4ID09PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgLyogbm8gc3ltYm9scyB0byBjb2RlIGF0IGFsbCAqL1xuICAgIC8vdGFibGUub3Bbb3B0cy50YWJsZV9pbmRleF0gPSA2NDsgIC8vaGVyZS5vcCA9ICh2YXIgY2hhcik2NDsgICAgLyogaW52YWxpZCBjb2RlIG1hcmtlciAqL1xuICAgIC8vdGFibGUuYml0c1tvcHRzLnRhYmxlX2luZGV4XSA9IDE7ICAgLy9oZXJlLmJpdHMgPSAodmFyIGNoYXIpMTtcbiAgICAvL3RhYmxlLnZhbFtvcHRzLnRhYmxlX2luZGV4KytdID0gMDsgICAvL2hlcmUudmFsID0gKHZhciBzaG9ydCkwO1xuICAgIHRhYmxlW3RhYmxlX2luZGV4KytdID0gKDEgPDwgMjQpIHwgKDY0IDw8IDE2KSB8IDA7XG5cblxuICAgIC8vdGFibGUub3Bbb3B0cy50YWJsZV9pbmRleF0gPSA2NDtcbiAgICAvL3RhYmxlLmJpdHNbb3B0cy50YWJsZV9pbmRleF0gPSAxO1xuICAgIC8vdGFibGUudmFsW29wdHMudGFibGVfaW5kZXgrK10gPSAwO1xuICAgIHRhYmxlW3RhYmxlX2luZGV4KytdID0gKDEgPDwgMjQpIHwgKDY0IDw8IDE2KSB8IDA7XG5cbiAgICBvcHRzLmJpdHMgPSAxO1xuICAgIHJldHVybiAwOyAgICAgLyogbm8gc3ltYm9scywgYnV0IHdhaXQgZm9yIGRlY29kaW5nIHRvIHJlcG9ydCBlcnJvciAqL1xuICB9XG4gIGZvciAobWluID0gMTsgbWluIDwgbWF4OyBtaW4rKykge1xuICAgIGlmIChjb3VudFttaW5dICE9PSAwKSB7IGJyZWFrOyB9XG4gIH1cbiAgaWYgKHJvb3QgPCBtaW4pIHtcbiAgICByb290ID0gbWluO1xuICB9XG5cbiAgLyogY2hlY2sgZm9yIGFuIG92ZXItc3Vic2NyaWJlZCBvciBpbmNvbXBsZXRlIHNldCBvZiBsZW5ndGhzICovXG4gIGxlZnQgPSAxO1xuICBmb3IgKGxlbiA9IDE7IGxlbiA8PSBNQVhCSVRTOyBsZW4rKykge1xuICAgIGxlZnQgPDw9IDE7XG4gICAgbGVmdCAtPSBjb3VudFtsZW5dO1xuICAgIGlmIChsZWZ0IDwgMCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gICAgICAgIC8qIG92ZXItc3Vic2NyaWJlZCAqL1xuICB9XG4gIGlmIChsZWZ0ID4gMCAmJiAodHlwZSA9PT0gQ09ERVMgfHwgbWF4ICE9PSAxKSkge1xuICAgIHJldHVybiAtMTsgICAgICAgICAgICAgICAgICAgICAgLyogaW5jb21wbGV0ZSBzZXQgKi9cbiAgfVxuXG4gIC8qIGdlbmVyYXRlIG9mZnNldHMgaW50byBzeW1ib2wgdGFibGUgZm9yIGVhY2ggbGVuZ3RoIGZvciBzb3J0aW5nICovXG4gIG9mZnNbMV0gPSAwO1xuICBmb3IgKGxlbiA9IDE7IGxlbiA8IE1BWEJJVFM7IGxlbisrKSB7XG4gICAgb2Zmc1tsZW4gKyAxXSA9IG9mZnNbbGVuXSArIGNvdW50W2xlbl07XG4gIH1cblxuICAvKiBzb3J0IHN5bWJvbHMgYnkgbGVuZ3RoLCBieSBzeW1ib2wgb3JkZXIgd2l0aGluIGVhY2ggbGVuZ3RoICovXG4gIGZvciAoc3ltID0gMDsgc3ltIDwgY29kZXM7IHN5bSsrKSB7XG4gICAgaWYgKGxlbnNbbGVuc19pbmRleCArIHN5bV0gIT09IDApIHtcbiAgICAgIHdvcmtbb2Zmc1tsZW5zW2xlbnNfaW5kZXggKyBzeW1dXSsrXSA9IHN5bTtcbiAgICB9XG4gIH1cblxuICAvKlxuICAgQ3JlYXRlIGFuZCBmaWxsIGluIGRlY29kaW5nIHRhYmxlcy4gIEluIHRoaXMgbG9vcCwgdGhlIHRhYmxlIGJlaW5nXG4gICBmaWxsZWQgaXMgYXQgbmV4dCBhbmQgaGFzIGN1cnIgaW5kZXggYml0cy4gIFRoZSBjb2RlIGJlaW5nIHVzZWQgaXMgaHVmZlxuICAgd2l0aCBsZW5ndGggbGVuLiAgVGhhdCBjb2RlIGlzIGNvbnZlcnRlZCB0byBhbiBpbmRleCBieSBkcm9wcGluZyBkcm9wXG4gICBiaXRzIG9mZiBvZiB0aGUgYm90dG9tLiAgRm9yIGNvZGVzIHdoZXJlIGxlbiBpcyBsZXNzIHRoYW4gZHJvcCArIGN1cnIsXG4gICB0aG9zZSB0b3AgZHJvcCArIGN1cnIgLSBsZW4gYml0cyBhcmUgaW5jcmVtZW50ZWQgdGhyb3VnaCBhbGwgdmFsdWVzIHRvXG4gICBmaWxsIHRoZSB0YWJsZSB3aXRoIHJlcGxpY2F0ZWQgZW50cmllcy5cblxuICAgcm9vdCBpcyB0aGUgbnVtYmVyIG9mIGluZGV4IGJpdHMgZm9yIHRoZSByb290IHRhYmxlLiAgV2hlbiBsZW4gZXhjZWVkc1xuICAgcm9vdCwgc3ViLXRhYmxlcyBhcmUgY3JlYXRlZCBwb2ludGVkIHRvIGJ5IHRoZSByb290IGVudHJ5IHdpdGggYW4gaW5kZXhcbiAgIG9mIHRoZSBsb3cgcm9vdCBiaXRzIG9mIGh1ZmYuICBUaGlzIGlzIHNhdmVkIGluIGxvdyB0byBjaGVjayBmb3Igd2hlbiBhXG4gICBuZXcgc3ViLXRhYmxlIHNob3VsZCBiZSBzdGFydGVkLiAgZHJvcCBpcyB6ZXJvIHdoZW4gdGhlIHJvb3QgdGFibGUgaXNcbiAgIGJlaW5nIGZpbGxlZCwgYW5kIGRyb3AgaXMgcm9vdCB3aGVuIHN1Yi10YWJsZXMgYXJlIGJlaW5nIGZpbGxlZC5cblxuICAgV2hlbiBhIG5ldyBzdWItdGFibGUgaXMgbmVlZGVkLCBpdCBpcyBuZWNlc3NhcnkgdG8gbG9vayBhaGVhZCBpbiB0aGVcbiAgIGNvZGUgbGVuZ3RocyB0byBkZXRlcm1pbmUgd2hhdCBzaXplIHN1Yi10YWJsZSBpcyBuZWVkZWQuICBUaGUgbGVuZ3RoXG4gICBjb3VudHMgYXJlIHVzZWQgZm9yIHRoaXMsIGFuZCBzbyBjb3VudFtdIGlzIGRlY3JlbWVudGVkIGFzIGNvZGVzIGFyZVxuICAgZW50ZXJlZCBpbiB0aGUgdGFibGVzLlxuXG4gICB1c2VkIGtlZXBzIHRyYWNrIG9mIGhvdyBtYW55IHRhYmxlIGVudHJpZXMgaGF2ZSBiZWVuIGFsbG9jYXRlZCBmcm9tIHRoZVxuICAgcHJvdmlkZWQgKnRhYmxlIHNwYWNlLiAgSXQgaXMgY2hlY2tlZCBmb3IgTEVOUyBhbmQgRElTVCB0YWJsZXMgYWdhaW5zdFxuICAgdGhlIGNvbnN0YW50cyBFTk9VR0hfTEVOUyBhbmQgRU5PVUdIX0RJU1RTIHRvIGd1YXJkIGFnYWluc3QgY2hhbmdlcyBpblxuICAgdGhlIGluaXRpYWwgcm9vdCB0YWJsZSBzaXplIGNvbnN0YW50cy4gIFNlZSB0aGUgY29tbWVudHMgaW4gaW5mdHJlZXMuaFxuICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbiAgIHN5bSBpbmNyZW1lbnRzIHRocm91Z2ggYWxsIHN5bWJvbHMsIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzIHdoZW5cbiAgIGFsbCBjb2RlcyBvZiBsZW5ndGggbWF4LCBpLmUuIGFsbCBjb2RlcywgaGF2ZSBiZWVuIHByb2Nlc3NlZC4gIFRoaXNcbiAgIHJvdXRpbmUgcGVybWl0cyBpbmNvbXBsZXRlIGNvZGVzLCBzbyBhbm90aGVyIGxvb3AgYWZ0ZXIgdGhpcyBvbmUgZmlsbHNcbiAgIGluIHRoZSByZXN0IG9mIHRoZSBkZWNvZGluZyB0YWJsZXMgd2l0aCBpbnZhbGlkIGNvZGUgbWFya2Vycy5cbiAgICovXG5cbiAgLyogc2V0IHVwIGZvciBjb2RlIHR5cGUgKi9cbiAgLy8gcG9vciBtYW4gb3B0aW1pemF0aW9uIC0gdXNlIGlmLWVsc2UgaW5zdGVhZCBvZiBzd2l0Y2gsXG4gIC8vIHRvIGF2b2lkIGRlb3B0cyBpbiBvbGQgdjhcbiAgaWYgKHR5cGUgPT09IENPREVTKSB7XG4gICAgYmFzZSA9IGV4dHJhID0gd29yazsgICAgLyogZHVtbXkgdmFsdWUtLW5vdCB1c2VkICovXG4gICAgZW5kID0gMTk7XG5cbiAgfSBlbHNlIGlmICh0eXBlID09PSBMRU5TKSB7XG4gICAgYmFzZSA9IGxiYXNlO1xuICAgIGJhc2VfaW5kZXggLT0gMjU3O1xuICAgIGV4dHJhID0gbGV4dDtcbiAgICBleHRyYV9pbmRleCAtPSAyNTc7XG4gICAgZW5kID0gMjU2O1xuXG4gIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAvKiBESVNUUyAqL1xuICAgIGJhc2UgPSBkYmFzZTtcbiAgICBleHRyYSA9IGRleHQ7XG4gICAgZW5kID0gLTE7XG4gIH1cblxuICAvKiBpbml0aWFsaXplIG9wdHMgZm9yIGxvb3AgKi9cbiAgaHVmZiA9IDA7ICAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0aW5nIGNvZGUgKi9cbiAgc3ltID0gMDsgICAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0aW5nIGNvZGUgc3ltYm9sICovXG4gIGxlbiA9IG1pbjsgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBjb2RlIGxlbmd0aCAqL1xuICBuZXh0ID0gdGFibGVfaW5kZXg7ICAgICAgICAgICAgICAvKiBjdXJyZW50IHRhYmxlIHRvIGZpbGwgaW4gKi9cbiAgY3VyciA9IHJvb3Q7ICAgICAgICAgICAgICAgIC8qIGN1cnJlbnQgdGFibGUgaW5kZXggYml0cyAqL1xuICBkcm9wID0gMDsgICAgICAgICAgICAgICAgICAgLyogY3VycmVudCBiaXRzIHRvIGRyb3AgZnJvbSBjb2RlIGZvciBpbmRleCAqL1xuICBsb3cgPSAtMTsgICAgICAgICAgICAgICAgICAgLyogdHJpZ2dlciBuZXcgc3ViLXRhYmxlIHdoZW4gbGVuID4gcm9vdCAqL1xuICB1c2VkID0gMSA8PCByb290OyAgICAgICAgICAvKiB1c2Ugcm9vdCB0YWJsZSBlbnRyaWVzICovXG4gIG1hc2sgPSB1c2VkIC0gMTsgICAgICAgICAgICAvKiBtYXNrIGZvciBjb21wYXJpbmcgbG93ICovXG5cbiAgLyogY2hlY2sgYXZhaWxhYmxlIHRhYmxlIHNwYWNlICovXG4gIGlmICgodHlwZSA9PT0gTEVOUyAmJiB1c2VkID4gRU5PVUdIX0xFTlMpIHx8XG4gICAgKHR5cGUgPT09IERJU1RTICYmIHVzZWQgPiBFTk9VR0hfRElTVFMpKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvKiBwcm9jZXNzIGFsbCBjb2RlcyBhbmQgbWFrZSB0YWJsZSBlbnRyaWVzICovXG4gIGZvciAoOzspIHtcbiAgICAvKiBjcmVhdGUgdGFibGUgZW50cnkgKi9cbiAgICBoZXJlX2JpdHMgPSBsZW4gLSBkcm9wO1xuICAgIGlmICh3b3JrW3N5bV0gPCBlbmQpIHtcbiAgICAgIGhlcmVfb3AgPSAwO1xuICAgICAgaGVyZV92YWwgPSB3b3JrW3N5bV07XG4gICAgfVxuICAgIGVsc2UgaWYgKHdvcmtbc3ltXSA+IGVuZCkge1xuICAgICAgaGVyZV9vcCA9IGV4dHJhW2V4dHJhX2luZGV4ICsgd29ya1tzeW1dXTtcbiAgICAgIGhlcmVfdmFsID0gYmFzZVtiYXNlX2luZGV4ICsgd29ya1tzeW1dXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBoZXJlX29wID0gMzIgKyA2NDsgICAgICAgICAvKiBlbmQgb2YgYmxvY2sgKi9cbiAgICAgIGhlcmVfdmFsID0gMDtcbiAgICB9XG5cbiAgICAvKiByZXBsaWNhdGUgZm9yIHRob3NlIGluZGljZXMgd2l0aCBsb3cgbGVuIGJpdHMgZXF1YWwgdG8gaHVmZiAqL1xuICAgIGluY3IgPSAxIDw8IChsZW4gLSBkcm9wKTtcbiAgICBmaWxsID0gMSA8PCBjdXJyO1xuICAgIG1pbiA9IGZpbGw7ICAgICAgICAgICAgICAgICAvKiBzYXZlIG9mZnNldCB0byBuZXh0IHRhYmxlICovXG4gICAgZG8ge1xuICAgICAgZmlsbCAtPSBpbmNyO1xuICAgICAgdGFibGVbbmV4dCArIChodWZmID4+IGRyb3ApICsgZmlsbF0gPSAoaGVyZV9iaXRzIDw8IDI0KSB8IChoZXJlX29wIDw8IDE2KSB8IGhlcmVfdmFsIHwwO1xuICAgIH0gd2hpbGUgKGZpbGwgIT09IDApO1xuXG4gICAgLyogYmFja3dhcmRzIGluY3JlbWVudCB0aGUgbGVuLWJpdCBjb2RlIGh1ZmYgKi9cbiAgICBpbmNyID0gMSA8PCAobGVuIC0gMSk7XG4gICAgd2hpbGUgKGh1ZmYgJiBpbmNyKSB7XG4gICAgICBpbmNyID4+PSAxO1xuICAgIH1cbiAgICBpZiAoaW5jciAhPT0gMCkge1xuICAgICAgaHVmZiAmPSBpbmNyIC0gMTtcbiAgICAgIGh1ZmYgKz0gaW5jcjtcbiAgICB9IGVsc2Uge1xuICAgICAgaHVmZiA9IDA7XG4gICAgfVxuXG4gICAgLyogZ28gdG8gbmV4dCBzeW1ib2wsIHVwZGF0ZSBjb3VudCwgbGVuICovXG4gICAgc3ltKys7XG4gICAgaWYgKC0tY291bnRbbGVuXSA9PT0gMCkge1xuICAgICAgaWYgKGxlbiA9PT0gbWF4KSB7IGJyZWFrOyB9XG4gICAgICBsZW4gPSBsZW5zW2xlbnNfaW5kZXggKyB3b3JrW3N5bV1dO1xuICAgIH1cblxuICAgIC8qIGNyZWF0ZSBuZXcgc3ViLXRhYmxlIGlmIG5lZWRlZCAqL1xuICAgIGlmIChsZW4gPiByb290ICYmIChodWZmICYgbWFzaykgIT09IGxvdykge1xuICAgICAgLyogaWYgZmlyc3QgdGltZSwgdHJhbnNpdGlvbiB0byBzdWItdGFibGVzICovXG4gICAgICBpZiAoZHJvcCA9PT0gMCkge1xuICAgICAgICBkcm9wID0gcm9vdDtcbiAgICAgIH1cblxuICAgICAgLyogaW5jcmVtZW50IHBhc3QgbGFzdCB0YWJsZSAqL1xuICAgICAgbmV4dCArPSBtaW47ICAgICAgICAgICAgLyogaGVyZSBtaW4gaXMgMSA8PCBjdXJyICovXG5cbiAgICAgIC8qIGRldGVybWluZSBsZW5ndGggb2YgbmV4dCB0YWJsZSAqL1xuICAgICAgY3VyciA9IGxlbiAtIGRyb3A7XG4gICAgICBsZWZ0ID0gMSA8PCBjdXJyO1xuICAgICAgd2hpbGUgKGN1cnIgKyBkcm9wIDwgbWF4KSB7XG4gICAgICAgIGxlZnQgLT0gY291bnRbY3VyciArIGRyb3BdO1xuICAgICAgICBpZiAobGVmdCA8PSAwKSB7IGJyZWFrOyB9XG4gICAgICAgIGN1cnIrKztcbiAgICAgICAgbGVmdCA8PD0gMTtcbiAgICAgIH1cblxuICAgICAgLyogY2hlY2sgZm9yIGVub3VnaCBzcGFjZSAqL1xuICAgICAgdXNlZCArPSAxIDw8IGN1cnI7XG4gICAgICBpZiAoKHR5cGUgPT09IExFTlMgJiYgdXNlZCA+IEVOT1VHSF9MRU5TKSB8fFxuICAgICAgICAodHlwZSA9PT0gRElTVFMgJiYgdXNlZCA+IEVOT1VHSF9ESVNUUykpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG5cbiAgICAgIC8qIHBvaW50IGVudHJ5IGluIHJvb3QgdGFibGUgdG8gc3ViLXRhYmxlICovXG4gICAgICBsb3cgPSBodWZmICYgbWFzaztcbiAgICAgIC8qdGFibGUub3BbbG93XSA9IGN1cnI7XG4gICAgICB0YWJsZS5iaXRzW2xvd10gPSByb290O1xuICAgICAgdGFibGUudmFsW2xvd10gPSBuZXh0IC0gb3B0cy50YWJsZV9pbmRleDsqL1xuICAgICAgdGFibGVbbG93XSA9IChyb290IDw8IDI0KSB8IChjdXJyIDw8IDE2KSB8IChuZXh0IC0gdGFibGVfaW5kZXgpIHwwO1xuICAgIH1cbiAgfVxuXG4gIC8qIGZpbGwgaW4gcmVtYWluaW5nIHRhYmxlIGVudHJ5IGlmIGNvZGUgaXMgaW5jb21wbGV0ZSAoZ3VhcmFudGVlZCB0byBoYXZlXG4gICBhdCBtb3N0IG9uZSByZW1haW5pbmcgZW50cnksIHNpbmNlIGlmIHRoZSBjb2RlIGlzIGluY29tcGxldGUsIHRoZVxuICAgbWF4aW11bSBjb2RlIGxlbmd0aCB0aGF0IHdhcyBhbGxvd2VkIHRvIGdldCB0aGlzIGZhciBpcyBvbmUgYml0KSAqL1xuICBpZiAoaHVmZiAhPT0gMCkge1xuICAgIC8vdGFibGUub3BbbmV4dCArIGh1ZmZdID0gNjQ7ICAgICAgICAgICAgLyogaW52YWxpZCBjb2RlIG1hcmtlciAqL1xuICAgIC8vdGFibGUuYml0c1tuZXh0ICsgaHVmZl0gPSBsZW4gLSBkcm9wO1xuICAgIC8vdGFibGUudmFsW25leHQgKyBodWZmXSA9IDA7XG4gICAgdGFibGVbbmV4dCArIGh1ZmZdID0gKChsZW4gLSBkcm9wKSA8PCAyNCkgfCAoNjQgPDwgMTYpIHwwO1xuICB9XG5cbiAgLyogc2V0IHJldHVybiBwYXJhbWV0ZXJzICovXG4gIC8vb3B0cy50YWJsZV9pbmRleCArPSB1c2VkO1xuICBvcHRzLmJpdHMgPSByb290O1xuICByZXR1cm4gMDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIDI6ICAgICAgJ25lZWQgZGljdGlvbmFyeScsICAgICAvKiBaX05FRURfRElDVCAgICAgICAyICAqL1xuICAxOiAgICAgICdzdHJlYW0gZW5kJywgICAgICAgICAgLyogWl9TVFJFQU1fRU5EICAgICAgMSAgKi9cbiAgMDogICAgICAnJywgICAgICAgICAgICAgICAgICAgIC8qIFpfT0sgICAgICAgICAgICAgIDAgICovXG4gICctMSc6ICAgJ2ZpbGUgZXJyb3InLCAgICAgICAgICAvKiBaX0VSUk5PICAgICAgICAgKC0xKSAqL1xuICAnLTInOiAgICdzdHJlYW0gZXJyb3InLCAgICAgICAgLyogWl9TVFJFQU1fRVJST1IgICgtMikgKi9cbiAgJy0zJzogICAnZGF0YSBlcnJvcicsICAgICAgICAgIC8qIFpfREFUQV9FUlJPUiAgICAoLTMpICovXG4gICctNCc6ICAgJ2luc3VmZmljaWVudCBtZW1vcnknLCAvKiBaX01FTV9FUlJPUiAgICAgKC00KSAqL1xuICAnLTUnOiAgICdidWZmZXIgZXJyb3InLCAgICAgICAgLyogWl9CVUZfRVJST1IgICAgICgtNSkgKi9cbiAgJy02JzogICAnaW5jb21wYXRpYmxlIHZlcnNpb24nIC8qIFpfVkVSU0lPTl9FUlJPUiAoLTYpICovXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbi8qIGVzbGludC1kaXNhYmxlIHNwYWNlLXVuYXJ5LW9wcyAqL1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy9jb21tb24nKTtcblxuLyogUHVibGljIGNvbnN0YW50cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblxuLy92YXIgWl9GSUxURVJFRCAgICAgICAgICA9IDE7XG4vL3ZhciBaX0hVRkZNQU5fT05MWSAgICAgID0gMjtcbi8vdmFyIFpfUkxFICAgICAgICAgICAgICAgPSAzO1xudmFyIFpfRklYRUQgICAgICAgICAgICAgICA9IDQ7XG4vL3ZhciBaX0RFRkFVTFRfU1RSQVRFR1kgID0gMDtcblxuLyogUG9zc2libGUgdmFsdWVzIG9mIHRoZSBkYXRhX3R5cGUgZmllbGQgKHRob3VnaCBzZWUgaW5mbGF0ZSgpKSAqL1xudmFyIFpfQklOQVJZICAgICAgICAgICAgICA9IDA7XG52YXIgWl9URVhUICAgICAgICAgICAgICAgID0gMTtcbi8vdmFyIFpfQVNDSUkgICAgICAgICAgICAgPSAxOyAvLyA9IFpfVEVYVFxudmFyIFpfVU5LTk9XTiAgICAgICAgICAgICA9IDI7XG5cbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblxuZnVuY3Rpb24gemVybyhidWYpIHsgdmFyIGxlbiA9IGJ1Zi5sZW5ndGg7IHdoaWxlICgtLWxlbiA+PSAwKSB7IGJ1ZltsZW5dID0gMDsgfSB9XG5cbi8vIEZyb20genV0aWwuaFxuXG52YXIgU1RPUkVEX0JMT0NLID0gMDtcbnZhciBTVEFUSUNfVFJFRVMgPSAxO1xudmFyIERZTl9UUkVFUyAgICA9IDI7XG4vKiBUaGUgdGhyZWUga2luZHMgb2YgYmxvY2sgdHlwZSAqL1xuXG52YXIgTUlOX01BVENIICAgID0gMztcbnZhciBNQVhfTUFUQ0ggICAgPSAyNTg7XG4vKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBtYXRjaCBsZW5ndGhzICovXG5cbi8vIEZyb20gZGVmbGF0ZS5oXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEludGVybmFsIGNvbXByZXNzaW9uIHN0YXRlLlxuICovXG5cbnZhciBMRU5HVEhfQ09ERVMgID0gMjk7XG4vKiBudW1iZXIgb2YgbGVuZ3RoIGNvZGVzLCBub3QgY291bnRpbmcgdGhlIHNwZWNpYWwgRU5EX0JMT0NLIGNvZGUgKi9cblxudmFyIExJVEVSQUxTICAgICAgPSAyNTY7XG4vKiBudW1iZXIgb2YgbGl0ZXJhbCBieXRlcyAwLi4yNTUgKi9cblxudmFyIExfQ09ERVMgICAgICAgPSBMSVRFUkFMUyArIDEgKyBMRU5HVEhfQ09ERVM7XG4vKiBudW1iZXIgb2YgTGl0ZXJhbCBvciBMZW5ndGggY29kZXMsIGluY2x1ZGluZyB0aGUgRU5EX0JMT0NLIGNvZGUgKi9cblxudmFyIERfQ09ERVMgICAgICAgPSAzMDtcbi8qIG51bWJlciBvZiBkaXN0YW5jZSBjb2RlcyAqL1xuXG52YXIgQkxfQ09ERVMgICAgICA9IDE5O1xuLyogbnVtYmVyIG9mIGNvZGVzIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGJpdCBsZW5ndGhzICovXG5cbnZhciBIRUFQX1NJWkUgICAgID0gMiAqIExfQ09ERVMgKyAxO1xuLyogbWF4aW11bSBoZWFwIHNpemUgKi9cblxudmFyIE1BWF9CSVRTICAgICAgPSAxNTtcbi8qIEFsbCBjb2RlcyBtdXN0IG5vdCBleGNlZWQgTUFYX0JJVFMgYml0cyAqL1xuXG52YXIgQnVmX3NpemUgICAgICA9IDE2O1xuLyogc2l6ZSBvZiBiaXQgYnVmZmVyIGluIGJpX2J1ZiAqL1xuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29uc3RhbnRzXG4gKi9cblxudmFyIE1BWF9CTF9CSVRTID0gNztcbi8qIEJpdCBsZW5ndGggY29kZXMgbXVzdCBub3QgZXhjZWVkIE1BWF9CTF9CSVRTIGJpdHMgKi9cblxudmFyIEVORF9CTE9DSyAgID0gMjU2O1xuLyogZW5kIG9mIGJsb2NrIGxpdGVyYWwgY29kZSAqL1xuXG52YXIgUkVQXzNfNiAgICAgPSAxNjtcbi8qIHJlcGVhdCBwcmV2aW91cyBiaXQgbGVuZ3RoIDMtNiB0aW1lcyAoMiBiaXRzIG9mIHJlcGVhdCBjb3VudCkgKi9cblxudmFyIFJFUFpfM18xMCAgID0gMTc7XG4vKiByZXBlYXQgYSB6ZXJvIGxlbmd0aCAzLTEwIHRpbWVzICAoMyBiaXRzIG9mIHJlcGVhdCBjb3VudCkgKi9cblxudmFyIFJFUFpfMTFfMTM4ID0gMTg7XG4vKiByZXBlYXQgYSB6ZXJvIGxlbmd0aCAxMS0xMzggdGltZXMgICg3IGJpdHMgb2YgcmVwZWF0IGNvdW50KSAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21tYS1zcGFjaW5nLGFycmF5LWJyYWNrZXQtc3BhY2luZyAqL1xudmFyIGV4dHJhX2xiaXRzID0gICAvKiBleHRyYSBiaXRzIGZvciBlYWNoIGxlbmd0aCBjb2RlICovXG4gIFswLDAsMCwwLDAsMCwwLDAsMSwxLDEsMSwyLDIsMiwyLDMsMywzLDMsNCw0LDQsNCw1LDUsNSw1LDBdO1xuXG52YXIgZXh0cmFfZGJpdHMgPSAgIC8qIGV4dHJhIGJpdHMgZm9yIGVhY2ggZGlzdGFuY2UgY29kZSAqL1xuICBbMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxM107XG5cbnZhciBleHRyYV9ibGJpdHMgPSAgLyogZXh0cmEgYml0cyBmb3IgZWFjaCBiaXQgbGVuZ3RoIGNvZGUgKi9cbiAgWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwzLDddO1xuXG52YXIgYmxfb3JkZXIgPVxuICBbMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV07XG4vKiBlc2xpbnQtZW5hYmxlIGNvbW1hLXNwYWNpbmcsYXJyYXktYnJhY2tldC1zcGFjaW5nICovXG5cbi8qIFRoZSBsZW5ndGhzIG9mIHRoZSBiaXQgbGVuZ3RoIGNvZGVzIGFyZSBzZW50IGluIG9yZGVyIG9mIGRlY3JlYXNpbmdcbiAqIHByb2JhYmlsaXR5LCB0byBhdm9pZCB0cmFuc21pdHRpbmcgdGhlIGxlbmd0aHMgZm9yIHVudXNlZCBiaXQgbGVuZ3RoIGNvZGVzLlxuICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogTG9jYWwgZGF0YS4gVGhlc2UgYXJlIGluaXRpYWxpemVkIG9ubHkgb25jZS5cbiAqL1xuXG4vLyBXZSBwcmUtZmlsbCBhcnJheXMgd2l0aCAwIHRvIGF2b2lkIHVuaW5pdGlhbGl6ZWQgZ2Fwc1xuXG52YXIgRElTVF9DT0RFX0xFTiA9IDUxMjsgLyogc2VlIGRlZmluaXRpb24gb2YgYXJyYXkgZGlzdF9jb2RlIGJlbG93ICovXG5cbi8vICEhISEgVXNlIGZsYXQgYXJyYXkgaW5zdGVhZCBvZiBzdHJ1Y3R1cmUsIEZyZXEgPSBpKjIsIExlbiA9IGkqMisxXG52YXIgc3RhdGljX2x0cmVlICA9IG5ldyBBcnJheSgoTF9DT0RFUyArIDIpICogMik7XG56ZXJvKHN0YXRpY19sdHJlZSk7XG4vKiBUaGUgc3RhdGljIGxpdGVyYWwgdHJlZS4gU2luY2UgdGhlIGJpdCBsZW5ndGhzIGFyZSBpbXBvc2VkLCB0aGVyZSBpcyBub1xuICogbmVlZCBmb3IgdGhlIExfQ09ERVMgZXh0cmEgY29kZXMgdXNlZCBkdXJpbmcgaGVhcCBjb25zdHJ1Y3Rpb24uIEhvd2V2ZXJcbiAqIFRoZSBjb2RlcyAyODYgYW5kIDI4NyBhcmUgbmVlZGVkIHRvIGJ1aWxkIGEgY2Fub25pY2FsIHRyZWUgKHNlZSBfdHJfaW5pdFxuICogYmVsb3cpLlxuICovXG5cbnZhciBzdGF0aWNfZHRyZWUgID0gbmV3IEFycmF5KERfQ09ERVMgKiAyKTtcbnplcm8oc3RhdGljX2R0cmVlKTtcbi8qIFRoZSBzdGF0aWMgZGlzdGFuY2UgdHJlZS4gKEFjdHVhbGx5IGEgdHJpdmlhbCB0cmVlIHNpbmNlIGFsbCBjb2RlcyB1c2VcbiAqIDUgYml0cy4pXG4gKi9cblxudmFyIF9kaXN0X2NvZGUgICAgPSBuZXcgQXJyYXkoRElTVF9DT0RFX0xFTik7XG56ZXJvKF9kaXN0X2NvZGUpO1xuLyogRGlzdGFuY2UgY29kZXMuIFRoZSBmaXJzdCAyNTYgdmFsdWVzIGNvcnJlc3BvbmQgdG8gdGhlIGRpc3RhbmNlc1xuICogMyAuLiAyNTgsIHRoZSBsYXN0IDI1NiB2YWx1ZXMgY29ycmVzcG9uZCB0byB0aGUgdG9wIDggYml0cyBvZlxuICogdGhlIDE1IGJpdCBkaXN0YW5jZXMuXG4gKi9cblxudmFyIF9sZW5ndGhfY29kZSAgPSBuZXcgQXJyYXkoTUFYX01BVENIIC0gTUlOX01BVENIICsgMSk7XG56ZXJvKF9sZW5ndGhfY29kZSk7XG4vKiBsZW5ndGggY29kZSBmb3IgZWFjaCBub3JtYWxpemVkIG1hdGNoIGxlbmd0aCAoMCA9PSBNSU5fTUFUQ0gpICovXG5cbnZhciBiYXNlX2xlbmd0aCAgID0gbmV3IEFycmF5KExFTkdUSF9DT0RFUyk7XG56ZXJvKGJhc2VfbGVuZ3RoKTtcbi8qIEZpcnN0IG5vcm1hbGl6ZWQgbGVuZ3RoIGZvciBlYWNoIGNvZGUgKDAgPSBNSU5fTUFUQ0gpICovXG5cbnZhciBiYXNlX2Rpc3QgICAgID0gbmV3IEFycmF5KERfQ09ERVMpO1xuemVybyhiYXNlX2Rpc3QpO1xuLyogRmlyc3Qgbm9ybWFsaXplZCBkaXN0YW5jZSBmb3IgZWFjaCBjb2RlICgwID0gZGlzdGFuY2Ugb2YgMSkgKi9cblxuXG5mdW5jdGlvbiBTdGF0aWNUcmVlRGVzYyhzdGF0aWNfdHJlZSwgZXh0cmFfYml0cywgZXh0cmFfYmFzZSwgZWxlbXMsIG1heF9sZW5ndGgpIHtcblxuICB0aGlzLnN0YXRpY190cmVlICA9IHN0YXRpY190cmVlOyAgLyogc3RhdGljIHRyZWUgb3IgTlVMTCAqL1xuICB0aGlzLmV4dHJhX2JpdHMgICA9IGV4dHJhX2JpdHM7ICAgLyogZXh0cmEgYml0cyBmb3IgZWFjaCBjb2RlIG9yIE5VTEwgKi9cbiAgdGhpcy5leHRyYV9iYXNlICAgPSBleHRyYV9iYXNlOyAgIC8qIGJhc2UgaW5kZXggZm9yIGV4dHJhX2JpdHMgKi9cbiAgdGhpcy5lbGVtcyAgICAgICAgPSBlbGVtczsgICAgICAgIC8qIG1heCBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHRyZWUgKi9cbiAgdGhpcy5tYXhfbGVuZ3RoICAgPSBtYXhfbGVuZ3RoOyAgIC8qIG1heCBiaXQgbGVuZ3RoIGZvciB0aGUgY29kZXMgKi9cblxuICAvLyBzaG93IGlmIGBzdGF0aWNfdHJlZWAgaGFzIGRhdGEgb3IgZHVtbXkgLSBuZWVkZWQgZm9yIG1vbm9tb3JwaGljIG9iamVjdHNcbiAgdGhpcy5oYXNfc3RyZWUgICAgPSBzdGF0aWNfdHJlZSAmJiBzdGF0aWNfdHJlZS5sZW5ndGg7XG59XG5cblxudmFyIHN0YXRpY19sX2Rlc2M7XG52YXIgc3RhdGljX2RfZGVzYztcbnZhciBzdGF0aWNfYmxfZGVzYztcblxuXG5mdW5jdGlvbiBUcmVlRGVzYyhkeW5fdHJlZSwgc3RhdF9kZXNjKSB7XG4gIHRoaXMuZHluX3RyZWUgPSBkeW5fdHJlZTsgICAgIC8qIHRoZSBkeW5hbWljIHRyZWUgKi9cbiAgdGhpcy5tYXhfY29kZSA9IDA7ICAgICAgICAgICAgLyogbGFyZ2VzdCBjb2RlIHdpdGggbm9uIHplcm8gZnJlcXVlbmN5ICovXG4gIHRoaXMuc3RhdF9kZXNjID0gc3RhdF9kZXNjOyAgIC8qIHRoZSBjb3JyZXNwb25kaW5nIHN0YXRpYyB0cmVlICovXG59XG5cblxuXG5mdW5jdGlvbiBkX2NvZGUoZGlzdCkge1xuICByZXR1cm4gZGlzdCA8IDI1NiA/IF9kaXN0X2NvZGVbZGlzdF0gOiBfZGlzdF9jb2RlWzI1NiArIChkaXN0ID4+PiA3KV07XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBPdXRwdXQgYSBzaG9ydCBMU0IgZmlyc3Qgb24gdGhlIHN0cmVhbS5cbiAqIElOIGFzc2VydGlvbjogdGhlcmUgaXMgZW5vdWdoIHJvb20gaW4gcGVuZGluZ0J1Zi5cbiAqL1xuZnVuY3Rpb24gcHV0X3Nob3J0KHMsIHcpIHtcbi8vICAgIHB1dF9ieXRlKHMsICh1Y2gpKCh3KSAmIDB4ZmYpKTtcbi8vICAgIHB1dF9ieXRlKHMsICh1Y2gpKCh1c2gpKHcpID4+IDgpKTtcbiAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSAodykgJiAweGZmO1xuICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9ICh3ID4+PiA4KSAmIDB4ZmY7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZW5kIGEgdmFsdWUgb24gYSBnaXZlbiBudW1iZXIgb2YgYml0cy5cbiAqIElOIGFzc2VydGlvbjogbGVuZ3RoIDw9IDE2IGFuZCB2YWx1ZSBmaXRzIGluIGxlbmd0aCBiaXRzLlxuICovXG5mdW5jdGlvbiBzZW5kX2JpdHMocywgdmFsdWUsIGxlbmd0aCkge1xuICBpZiAocy5iaV92YWxpZCA+IChCdWZfc2l6ZSAtIGxlbmd0aCkpIHtcbiAgICBzLmJpX2J1ZiB8PSAodmFsdWUgPDwgcy5iaV92YWxpZCkgJiAweGZmZmY7XG4gICAgcHV0X3Nob3J0KHMsIHMuYmlfYnVmKTtcbiAgICBzLmJpX2J1ZiA9IHZhbHVlID4+IChCdWZfc2l6ZSAtIHMuYmlfdmFsaWQpO1xuICAgIHMuYmlfdmFsaWQgKz0gbGVuZ3RoIC0gQnVmX3NpemU7XG4gIH0gZWxzZSB7XG4gICAgcy5iaV9idWYgfD0gKHZhbHVlIDw8IHMuYmlfdmFsaWQpICYgMHhmZmZmO1xuICAgIHMuYmlfdmFsaWQgKz0gbGVuZ3RoO1xuICB9XG59XG5cblxuZnVuY3Rpb24gc2VuZF9jb2RlKHMsIGMsIHRyZWUpIHtcbiAgc2VuZF9iaXRzKHMsIHRyZWVbYyAqIDJdLyouQ29kZSovLCB0cmVlW2MgKiAyICsgMV0vKi5MZW4qLyk7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBSZXZlcnNlIHRoZSBmaXJzdCBsZW4gYml0cyBvZiBhIGNvZGUsIHVzaW5nIHN0cmFpZ2h0Zm9yd2FyZCBjb2RlIChhIGZhc3RlclxuICogbWV0aG9kIHdvdWxkIHVzZSBhIHRhYmxlKVxuICogSU4gYXNzZXJ0aW9uOiAxIDw9IGxlbiA8PSAxNVxuICovXG5mdW5jdGlvbiBiaV9yZXZlcnNlKGNvZGUsIGxlbikge1xuICB2YXIgcmVzID0gMDtcbiAgZG8ge1xuICAgIHJlcyB8PSBjb2RlICYgMTtcbiAgICBjb2RlID4+Pj0gMTtcbiAgICByZXMgPDw9IDE7XG4gIH0gd2hpbGUgKC0tbGVuID4gMCk7XG4gIHJldHVybiByZXMgPj4+IDE7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBGbHVzaCB0aGUgYml0IGJ1ZmZlciwga2VlcGluZyBhdCBtb3N0IDcgYml0cyBpbiBpdC5cbiAqL1xuZnVuY3Rpb24gYmlfZmx1c2gocykge1xuICBpZiAocy5iaV92YWxpZCA9PT0gMTYpIHtcbiAgICBwdXRfc2hvcnQocywgcy5iaV9idWYpO1xuICAgIHMuYmlfYnVmID0gMDtcbiAgICBzLmJpX3ZhbGlkID0gMDtcblxuICB9IGVsc2UgaWYgKHMuYmlfdmFsaWQgPj0gOCkge1xuICAgIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gcy5iaV9idWYgJiAweGZmO1xuICAgIHMuYmlfYnVmID4+PSA4O1xuICAgIHMuYmlfdmFsaWQgLT0gODtcbiAgfVxufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29tcHV0ZSB0aGUgb3B0aW1hbCBiaXQgbGVuZ3RocyBmb3IgYSB0cmVlIGFuZCB1cGRhdGUgdGhlIHRvdGFsIGJpdCBsZW5ndGhcbiAqIGZvciB0aGUgY3VycmVudCBibG9jay5cbiAqIElOIGFzc2VydGlvbjogdGhlIGZpZWxkcyBmcmVxIGFuZCBkYWQgYXJlIHNldCwgaGVhcFtoZWFwX21heF0gYW5kXG4gKiAgICBhYm92ZSBhcmUgdGhlIHRyZWUgbm9kZXMgc29ydGVkIGJ5IGluY3JlYXNpbmcgZnJlcXVlbmN5LlxuICogT1VUIGFzc2VydGlvbnM6IHRoZSBmaWVsZCBsZW4gaXMgc2V0IHRvIHRoZSBvcHRpbWFsIGJpdCBsZW5ndGgsIHRoZVxuICogICAgIGFycmF5IGJsX2NvdW50IGNvbnRhaW5zIHRoZSBmcmVxdWVuY2llcyBmb3IgZWFjaCBiaXQgbGVuZ3RoLlxuICogICAgIFRoZSBsZW5ndGggb3B0X2xlbiBpcyB1cGRhdGVkOyBzdGF0aWNfbGVuIGlzIGFsc28gdXBkYXRlZCBpZiBzdHJlZSBpc1xuICogICAgIG5vdCBudWxsLlxuICovXG5mdW5jdGlvbiBnZW5fYml0bGVuKHMsIGRlc2MpXG4vLyAgICBkZWZsYXRlX3N0YXRlICpzO1xuLy8gICAgdHJlZV9kZXNjICpkZXNjOyAgICAvKiB0aGUgdHJlZSBkZXNjcmlwdG9yICovXG57XG4gIHZhciB0cmVlICAgICAgICAgICAgPSBkZXNjLmR5bl90cmVlO1xuICB2YXIgbWF4X2NvZGUgICAgICAgID0gZGVzYy5tYXhfY29kZTtcbiAgdmFyIHN0cmVlICAgICAgICAgICA9IGRlc2Muc3RhdF9kZXNjLnN0YXRpY190cmVlO1xuICB2YXIgaGFzX3N0cmVlICAgICAgID0gZGVzYy5zdGF0X2Rlc2MuaGFzX3N0cmVlO1xuICB2YXIgZXh0cmEgICAgICAgICAgID0gZGVzYy5zdGF0X2Rlc2MuZXh0cmFfYml0cztcbiAgdmFyIGJhc2UgICAgICAgICAgICA9IGRlc2Muc3RhdF9kZXNjLmV4dHJhX2Jhc2U7XG4gIHZhciBtYXhfbGVuZ3RoICAgICAgPSBkZXNjLnN0YXRfZGVzYy5tYXhfbGVuZ3RoO1xuICB2YXIgaDsgICAgICAgICAgICAgIC8qIGhlYXAgaW5kZXggKi9cbiAgdmFyIG4sIG07ICAgICAgICAgICAvKiBpdGVyYXRlIG92ZXIgdGhlIHRyZWUgZWxlbWVudHMgKi9cbiAgdmFyIGJpdHM7ICAgICAgICAgICAvKiBiaXQgbGVuZ3RoICovXG4gIHZhciB4Yml0czsgICAgICAgICAgLyogZXh0cmEgYml0cyAqL1xuICB2YXIgZjsgICAgICAgICAgICAgIC8qIGZyZXF1ZW5jeSAqL1xuICB2YXIgb3ZlcmZsb3cgPSAwOyAgIC8qIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIGJpdCBsZW5ndGggdG9vIGxhcmdlICovXG5cbiAgZm9yIChiaXRzID0gMDsgYml0cyA8PSBNQVhfQklUUzsgYml0cysrKSB7XG4gICAgcy5ibF9jb3VudFtiaXRzXSA9IDA7XG4gIH1cblxuICAvKiBJbiBhIGZpcnN0IHBhc3MsIGNvbXB1dGUgdGhlIG9wdGltYWwgYml0IGxlbmd0aHMgKHdoaWNoIG1heVxuICAgKiBvdmVyZmxvdyBpbiB0aGUgY2FzZSBvZiB0aGUgYml0IGxlbmd0aCB0cmVlKS5cbiAgICovXG4gIHRyZWVbcy5oZWFwW3MuaGVhcF9tYXhdICogMiArIDFdLyouTGVuKi8gPSAwOyAvKiByb290IG9mIHRoZSBoZWFwICovXG5cbiAgZm9yIChoID0gcy5oZWFwX21heCArIDE7IGggPCBIRUFQX1NJWkU7IGgrKykge1xuICAgIG4gPSBzLmhlYXBbaF07XG4gICAgYml0cyA9IHRyZWVbdHJlZVtuICogMiArIDFdLyouRGFkKi8gKiAyICsgMV0vKi5MZW4qLyArIDE7XG4gICAgaWYgKGJpdHMgPiBtYXhfbGVuZ3RoKSB7XG4gICAgICBiaXRzID0gbWF4X2xlbmd0aDtcbiAgICAgIG92ZXJmbG93Kys7XG4gICAgfVxuICAgIHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gYml0cztcbiAgICAvKiBXZSBvdmVyd3JpdGUgdHJlZVtuXS5EYWQgd2hpY2ggaXMgbm8gbG9uZ2VyIG5lZWRlZCAqL1xuXG4gICAgaWYgKG4gPiBtYXhfY29kZSkgeyBjb250aW51ZTsgfSAvKiBub3QgYSBsZWFmIG5vZGUgKi9cblxuICAgIHMuYmxfY291bnRbYml0c10rKztcbiAgICB4Yml0cyA9IDA7XG4gICAgaWYgKG4gPj0gYmFzZSkge1xuICAgICAgeGJpdHMgPSBleHRyYVtuIC0gYmFzZV07XG4gICAgfVxuICAgIGYgPSB0cmVlW24gKiAyXS8qLkZyZXEqLztcbiAgICBzLm9wdF9sZW4gKz0gZiAqIChiaXRzICsgeGJpdHMpO1xuICAgIGlmIChoYXNfc3RyZWUpIHtcbiAgICAgIHMuc3RhdGljX2xlbiArPSBmICogKHN0cmVlW24gKiAyICsgMV0vKi5MZW4qLyArIHhiaXRzKTtcbiAgICB9XG4gIH1cbiAgaWYgKG92ZXJmbG93ID09PSAwKSB7IHJldHVybjsgfVxuXG4gIC8vIFRyYWNlKChzdGRlcnIsXCJcXG5iaXQgbGVuZ3RoIG92ZXJmbG93XFxuXCIpKTtcbiAgLyogVGhpcyBoYXBwZW5zIGZvciBleGFtcGxlIG9uIG9iajIgYW5kIHBpYyBvZiB0aGUgQ2FsZ2FyeSBjb3JwdXMgKi9cblxuICAvKiBGaW5kIHRoZSBmaXJzdCBiaXQgbGVuZ3RoIHdoaWNoIGNvdWxkIGluY3JlYXNlOiAqL1xuICBkbyB7XG4gICAgYml0cyA9IG1heF9sZW5ndGggLSAxO1xuICAgIHdoaWxlIChzLmJsX2NvdW50W2JpdHNdID09PSAwKSB7IGJpdHMtLTsgfVxuICAgIHMuYmxfY291bnRbYml0c10tLTsgICAgICAvKiBtb3ZlIG9uZSBsZWFmIGRvd24gdGhlIHRyZWUgKi9cbiAgICBzLmJsX2NvdW50W2JpdHMgKyAxXSArPSAyOyAvKiBtb3ZlIG9uZSBvdmVyZmxvdyBpdGVtIGFzIGl0cyBicm90aGVyICovXG4gICAgcy5ibF9jb3VudFttYXhfbGVuZ3RoXS0tO1xuICAgIC8qIFRoZSBicm90aGVyIG9mIHRoZSBvdmVyZmxvdyBpdGVtIGFsc28gbW92ZXMgb25lIHN0ZXAgdXAsXG4gICAgICogYnV0IHRoaXMgZG9lcyBub3QgYWZmZWN0IGJsX2NvdW50W21heF9sZW5ndGhdXG4gICAgICovXG4gICAgb3ZlcmZsb3cgLT0gMjtcbiAgfSB3aGlsZSAob3ZlcmZsb3cgPiAwKTtcblxuICAvKiBOb3cgcmVjb21wdXRlIGFsbCBiaXQgbGVuZ3Rocywgc2Nhbm5pbmcgaW4gaW5jcmVhc2luZyBmcmVxdWVuY3kuXG4gICAqIGggaXMgc3RpbGwgZXF1YWwgdG8gSEVBUF9TSVpFLiAoSXQgaXMgc2ltcGxlciB0byByZWNvbnN0cnVjdCBhbGxcbiAgICogbGVuZ3RocyBpbnN0ZWFkIG9mIGZpeGluZyBvbmx5IHRoZSB3cm9uZyBvbmVzLiBUaGlzIGlkZWEgaXMgdGFrZW5cbiAgICogZnJvbSAnYXInIHdyaXR0ZW4gYnkgSGFydWhpa28gT2t1bXVyYS4pXG4gICAqL1xuICBmb3IgKGJpdHMgPSBtYXhfbGVuZ3RoOyBiaXRzICE9PSAwOyBiaXRzLS0pIHtcbiAgICBuID0gcy5ibF9jb3VudFtiaXRzXTtcbiAgICB3aGlsZSAobiAhPT0gMCkge1xuICAgICAgbSA9IHMuaGVhcFstLWhdO1xuICAgICAgaWYgKG0gPiBtYXhfY29kZSkgeyBjb250aW51ZTsgfVxuICAgICAgaWYgKHRyZWVbbSAqIDIgKyAxXS8qLkxlbiovICE9PSBiaXRzKSB7XG4gICAgICAgIC8vIFRyYWNlKChzdGRlcnIsXCJjb2RlICVkIGJpdHMgJWQtPiVkXFxuXCIsIG0sIHRyZWVbbV0uTGVuLCBiaXRzKSk7XG4gICAgICAgIHMub3B0X2xlbiArPSAoYml0cyAtIHRyZWVbbSAqIDIgKyAxXS8qLkxlbiovKSAqIHRyZWVbbSAqIDJdLyouRnJlcSovO1xuICAgICAgICB0cmVlW20gKiAyICsgMV0vKi5MZW4qLyA9IGJpdHM7XG4gICAgICB9XG4gICAgICBuLS07XG4gICAgfVxuICB9XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBHZW5lcmF0ZSB0aGUgY29kZXMgZm9yIGEgZ2l2ZW4gdHJlZSBhbmQgYml0IGNvdW50cyAod2hpY2ggbmVlZCBub3QgYmVcbiAqIG9wdGltYWwpLlxuICogSU4gYXNzZXJ0aW9uOiB0aGUgYXJyYXkgYmxfY291bnQgY29udGFpbnMgdGhlIGJpdCBsZW5ndGggc3RhdGlzdGljcyBmb3JcbiAqIHRoZSBnaXZlbiB0cmVlIGFuZCB0aGUgZmllbGQgbGVuIGlzIHNldCBmb3IgYWxsIHRyZWUgZWxlbWVudHMuXG4gKiBPVVQgYXNzZXJ0aW9uOiB0aGUgZmllbGQgY29kZSBpcyBzZXQgZm9yIGFsbCB0cmVlIGVsZW1lbnRzIG9mIG5vblxuICogICAgIHplcm8gY29kZSBsZW5ndGguXG4gKi9cbmZ1bmN0aW9uIGdlbl9jb2Rlcyh0cmVlLCBtYXhfY29kZSwgYmxfY291bnQpXG4vLyAgICBjdF9kYXRhICp0cmVlOyAgICAgICAgICAgICAvKiB0aGUgdHJlZSB0byBkZWNvcmF0ZSAqL1xuLy8gICAgaW50IG1heF9jb2RlOyAgICAgICAgICAgICAgLyogbGFyZ2VzdCBjb2RlIHdpdGggbm9uIHplcm8gZnJlcXVlbmN5ICovXG4vLyAgICB1c2hmICpibF9jb3VudDsgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZXMgYXQgZWFjaCBiaXQgbGVuZ3RoICovXG57XG4gIHZhciBuZXh0X2NvZGUgPSBuZXcgQXJyYXkoTUFYX0JJVFMgKyAxKTsgLyogbmV4dCBjb2RlIHZhbHVlIGZvciBlYWNoIGJpdCBsZW5ndGggKi9cbiAgdmFyIGNvZGUgPSAwOyAgICAgICAgICAgICAgLyogcnVubmluZyBjb2RlIHZhbHVlICovXG4gIHZhciBiaXRzOyAgICAgICAgICAgICAgICAgIC8qIGJpdCBpbmRleCAqL1xuICB2YXIgbjsgICAgICAgICAgICAgICAgICAgICAvKiBjb2RlIGluZGV4ICovXG5cbiAgLyogVGhlIGRpc3RyaWJ1dGlvbiBjb3VudHMgYXJlIGZpcnN0IHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGNvZGUgdmFsdWVzXG4gICAqIHdpdGhvdXQgYml0IHJldmVyc2FsLlxuICAgKi9cbiAgZm9yIChiaXRzID0gMTsgYml0cyA8PSBNQVhfQklUUzsgYml0cysrKSB7XG4gICAgbmV4dF9jb2RlW2JpdHNdID0gY29kZSA9IChjb2RlICsgYmxfY291bnRbYml0cyAtIDFdKSA8PCAxO1xuICB9XG4gIC8qIENoZWNrIHRoYXQgdGhlIGJpdCBjb3VudHMgaW4gYmxfY291bnQgYXJlIGNvbnNpc3RlbnQuIFRoZSBsYXN0IGNvZGVcbiAgICogbXVzdCBiZSBhbGwgb25lcy5cbiAgICovXG4gIC8vQXNzZXJ0IChjb2RlICsgYmxfY291bnRbTUFYX0JJVFNdLTEgPT0gKDE8PE1BWF9CSVRTKS0xLFxuICAvLyAgICAgICAgXCJpbmNvbnNpc3RlbnQgYml0IGNvdW50c1wiKTtcbiAgLy9UcmFjZXYoKHN0ZGVycixcIlxcbmdlbl9jb2RlczogbWF4X2NvZGUgJWQgXCIsIG1heF9jb2RlKSk7XG5cbiAgZm9yIChuID0gMDsgIG4gPD0gbWF4X2NvZGU7IG4rKykge1xuICAgIHZhciBsZW4gPSB0cmVlW24gKiAyICsgMV0vKi5MZW4qLztcbiAgICBpZiAobGVuID09PSAwKSB7IGNvbnRpbnVlOyB9XG4gICAgLyogTm93IHJldmVyc2UgdGhlIGJpdHMgKi9cbiAgICB0cmVlW24gKiAyXS8qLkNvZGUqLyA9IGJpX3JldmVyc2UobmV4dF9jb2RlW2xlbl0rKywgbGVuKTtcblxuICAgIC8vVHJhY2Vjdih0cmVlICE9IHN0YXRpY19sdHJlZSwgKHN0ZGVycixcIlxcbm4gJTNkICVjIGwgJTJkIGMgJTR4ICgleCkgXCIsXG4gICAgLy8gICAgIG4sIChpc2dyYXBoKG4pID8gbiA6ICcgJyksIGxlbiwgdHJlZVtuXS5Db2RlLCBuZXh0X2NvZGVbbGVuXS0xKSk7XG4gIH1cbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEluaXRpYWxpemUgdGhlIHZhcmlvdXMgJ2NvbnN0YW50JyB0YWJsZXMuXG4gKi9cbmZ1bmN0aW9uIHRyX3N0YXRpY19pbml0KCkge1xuICB2YXIgbjsgICAgICAgIC8qIGl0ZXJhdGVzIG92ZXIgdHJlZSBlbGVtZW50cyAqL1xuICB2YXIgYml0czsgICAgIC8qIGJpdCBjb3VudGVyICovXG4gIHZhciBsZW5ndGg7ICAgLyogbGVuZ3RoIHZhbHVlICovXG4gIHZhciBjb2RlOyAgICAgLyogY29kZSB2YWx1ZSAqL1xuICB2YXIgZGlzdDsgICAgIC8qIGRpc3RhbmNlIGluZGV4ICovXG4gIHZhciBibF9jb3VudCA9IG5ldyBBcnJheShNQVhfQklUUyArIDEpO1xuICAvKiBudW1iZXIgb2YgY29kZXMgYXQgZWFjaCBiaXQgbGVuZ3RoIGZvciBhbiBvcHRpbWFsIHRyZWUgKi9cblxuICAvLyBkbyBjaGVjayBpbiBfdHJfaW5pdCgpXG4gIC8vaWYgKHN0YXRpY19pbml0X2RvbmUpIHJldHVybjtcblxuICAvKiBGb3Igc29tZSBlbWJlZGRlZCB0YXJnZXRzLCBnbG9iYWwgdmFyaWFibGVzIGFyZSBub3QgaW5pdGlhbGl6ZWQ6ICovXG4vKiNpZmRlZiBOT19JTklUX0dMT0JBTF9QT0lOVEVSU1xuICBzdGF0aWNfbF9kZXNjLnN0YXRpY190cmVlID0gc3RhdGljX2x0cmVlO1xuICBzdGF0aWNfbF9kZXNjLmV4dHJhX2JpdHMgPSBleHRyYV9sYml0cztcbiAgc3RhdGljX2RfZGVzYy5zdGF0aWNfdHJlZSA9IHN0YXRpY19kdHJlZTtcbiAgc3RhdGljX2RfZGVzYy5leHRyYV9iaXRzID0gZXh0cmFfZGJpdHM7XG4gIHN0YXRpY19ibF9kZXNjLmV4dHJhX2JpdHMgPSBleHRyYV9ibGJpdHM7XG4jZW5kaWYqL1xuXG4gIC8qIEluaXRpYWxpemUgdGhlIG1hcHBpbmcgbGVuZ3RoICgwLi4yNTUpIC0+IGxlbmd0aCBjb2RlICgwLi4yOCkgKi9cbiAgbGVuZ3RoID0gMDtcbiAgZm9yIChjb2RlID0gMDsgY29kZSA8IExFTkdUSF9DT0RFUyAtIDE7IGNvZGUrKykge1xuICAgIGJhc2VfbGVuZ3RoW2NvZGVdID0gbGVuZ3RoO1xuICAgIGZvciAobiA9IDA7IG4gPCAoMSA8PCBleHRyYV9sYml0c1tjb2RlXSk7IG4rKykge1xuICAgICAgX2xlbmd0aF9jb2RlW2xlbmd0aCsrXSA9IGNvZGU7XG4gICAgfVxuICB9XG4gIC8vQXNzZXJ0IChsZW5ndGggPT0gMjU2LCBcInRyX3N0YXRpY19pbml0OiBsZW5ndGggIT0gMjU2XCIpO1xuICAvKiBOb3RlIHRoYXQgdGhlIGxlbmd0aCAyNTUgKG1hdGNoIGxlbmd0aCAyNTgpIGNhbiBiZSByZXByZXNlbnRlZFxuICAgKiBpbiB0d28gZGlmZmVyZW50IHdheXM6IGNvZGUgMjg0ICsgNSBiaXRzIG9yIGNvZGUgMjg1LCBzbyB3ZVxuICAgKiBvdmVyd3JpdGUgbGVuZ3RoX2NvZGVbMjU1XSB0byB1c2UgdGhlIGJlc3QgZW5jb2Rpbmc6XG4gICAqL1xuICBfbGVuZ3RoX2NvZGVbbGVuZ3RoIC0gMV0gPSBjb2RlO1xuXG4gIC8qIEluaXRpYWxpemUgdGhlIG1hcHBpbmcgZGlzdCAoMC4uMzJLKSAtPiBkaXN0IGNvZGUgKDAuLjI5KSAqL1xuICBkaXN0ID0gMDtcbiAgZm9yIChjb2RlID0gMDsgY29kZSA8IDE2OyBjb2RlKyspIHtcbiAgICBiYXNlX2Rpc3RbY29kZV0gPSBkaXN0O1xuICAgIGZvciAobiA9IDA7IG4gPCAoMSA8PCBleHRyYV9kYml0c1tjb2RlXSk7IG4rKykge1xuICAgICAgX2Rpc3RfY29kZVtkaXN0KytdID0gY29kZTtcbiAgICB9XG4gIH1cbiAgLy9Bc3NlcnQgKGRpc3QgPT0gMjU2LCBcInRyX3N0YXRpY19pbml0OiBkaXN0ICE9IDI1NlwiKTtcbiAgZGlzdCA+Pj0gNzsgLyogZnJvbSBub3cgb24sIGFsbCBkaXN0YW5jZXMgYXJlIGRpdmlkZWQgYnkgMTI4ICovXG4gIGZvciAoOyBjb2RlIDwgRF9DT0RFUzsgY29kZSsrKSB7XG4gICAgYmFzZV9kaXN0W2NvZGVdID0gZGlzdCA8PCA3O1xuICAgIGZvciAobiA9IDA7IG4gPCAoMSA8PCAoZXh0cmFfZGJpdHNbY29kZV0gLSA3KSk7IG4rKykge1xuICAgICAgX2Rpc3RfY29kZVsyNTYgKyBkaXN0KytdID0gY29kZTtcbiAgICB9XG4gIH1cbiAgLy9Bc3NlcnQgKGRpc3QgPT0gMjU2LCBcInRyX3N0YXRpY19pbml0OiAyNTYrZGlzdCAhPSA1MTJcIik7XG5cbiAgLyogQ29uc3RydWN0IHRoZSBjb2RlcyBvZiB0aGUgc3RhdGljIGxpdGVyYWwgdHJlZSAqL1xuICBmb3IgKGJpdHMgPSAwOyBiaXRzIDw9IE1BWF9CSVRTOyBiaXRzKyspIHtcbiAgICBibF9jb3VudFtiaXRzXSA9IDA7XG4gIH1cblxuICBuID0gMDtcbiAgd2hpbGUgKG4gPD0gMTQzKSB7XG4gICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDg7XG4gICAgbisrO1xuICAgIGJsX2NvdW50WzhdKys7XG4gIH1cbiAgd2hpbGUgKG4gPD0gMjU1KSB7XG4gICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDk7XG4gICAgbisrO1xuICAgIGJsX2NvdW50WzldKys7XG4gIH1cbiAgd2hpbGUgKG4gPD0gMjc5KSB7XG4gICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDc7XG4gICAgbisrO1xuICAgIGJsX2NvdW50WzddKys7XG4gIH1cbiAgd2hpbGUgKG4gPD0gMjg3KSB7XG4gICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDg7XG4gICAgbisrO1xuICAgIGJsX2NvdW50WzhdKys7XG4gIH1cbiAgLyogQ29kZXMgMjg2IGFuZCAyODcgZG8gbm90IGV4aXN0LCBidXQgd2UgbXVzdCBpbmNsdWRlIHRoZW0gaW4gdGhlXG4gICAqIHRyZWUgY29uc3RydWN0aW9uIHRvIGdldCBhIGNhbm9uaWNhbCBIdWZmbWFuIHRyZWUgKGxvbmdlc3QgY29kZVxuICAgKiBhbGwgb25lcylcbiAgICovXG4gIGdlbl9jb2RlcyhzdGF0aWNfbHRyZWUsIExfQ09ERVMgKyAxLCBibF9jb3VudCk7XG5cbiAgLyogVGhlIHN0YXRpYyBkaXN0YW5jZSB0cmVlIGlzIHRyaXZpYWw6ICovXG4gIGZvciAobiA9IDA7IG4gPCBEX0NPREVTOyBuKyspIHtcbiAgICBzdGF0aWNfZHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gNTtcbiAgICBzdGF0aWNfZHRyZWVbbiAqIDJdLyouQ29kZSovID0gYmlfcmV2ZXJzZShuLCA1KTtcbiAgfVxuXG4gIC8vIE5vdyBkYXRhIHJlYWR5IGFuZCB3ZSBjYW4gaW5pdCBzdGF0aWMgdHJlZXNcbiAgc3RhdGljX2xfZGVzYyA9IG5ldyBTdGF0aWNUcmVlRGVzYyhzdGF0aWNfbHRyZWUsIGV4dHJhX2xiaXRzLCBMSVRFUkFMUyArIDEsIExfQ09ERVMsIE1BWF9CSVRTKTtcbiAgc3RhdGljX2RfZGVzYyA9IG5ldyBTdGF0aWNUcmVlRGVzYyhzdGF0aWNfZHRyZWUsIGV4dHJhX2RiaXRzLCAwLCAgICAgICAgICBEX0NPREVTLCBNQVhfQklUUyk7XG4gIHN0YXRpY19ibF9kZXNjID0gbmV3IFN0YXRpY1RyZWVEZXNjKG5ldyBBcnJheSgwKSwgZXh0cmFfYmxiaXRzLCAwLCAgICAgICAgIEJMX0NPREVTLCBNQVhfQkxfQklUUyk7XG5cbiAgLy9zdGF0aWNfaW5pdF9kb25lID0gdHJ1ZTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEluaXRpYWxpemUgYSBuZXcgYmxvY2suXG4gKi9cbmZ1bmN0aW9uIGluaXRfYmxvY2socykge1xuICB2YXIgbjsgLyogaXRlcmF0ZXMgb3ZlciB0cmVlIGVsZW1lbnRzICovXG5cbiAgLyogSW5pdGlhbGl6ZSB0aGUgdHJlZXMuICovXG4gIGZvciAobiA9IDA7IG4gPCBMX0NPREVTOyAgbisrKSB7IHMuZHluX2x0cmVlW24gKiAyXS8qLkZyZXEqLyA9IDA7IH1cbiAgZm9yIChuID0gMDsgbiA8IERfQ09ERVM7ICBuKyspIHsgcy5keW5fZHRyZWVbbiAqIDJdLyouRnJlcSovID0gMDsgfVxuICBmb3IgKG4gPSAwOyBuIDwgQkxfQ09ERVM7IG4rKykgeyBzLmJsX3RyZWVbbiAqIDJdLyouRnJlcSovID0gMDsgfVxuXG4gIHMuZHluX2x0cmVlW0VORF9CTE9DSyAqIDJdLyouRnJlcSovID0gMTtcbiAgcy5vcHRfbGVuID0gcy5zdGF0aWNfbGVuID0gMDtcbiAgcy5sYXN0X2xpdCA9IHMubWF0Y2hlcyA9IDA7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBGbHVzaCB0aGUgYml0IGJ1ZmZlciBhbmQgYWxpZ24gdGhlIG91dHB1dCBvbiBhIGJ5dGUgYm91bmRhcnlcbiAqL1xuZnVuY3Rpb24gYmlfd2luZHVwKHMpXG57XG4gIGlmIChzLmJpX3ZhbGlkID4gOCkge1xuICAgIHB1dF9zaG9ydChzLCBzLmJpX2J1Zik7XG4gIH0gZWxzZSBpZiAocy5iaV92YWxpZCA+IDApIHtcbiAgICAvL3B1dF9ieXRlKHMsIChCeXRlKXMtPmJpX2J1Zik7XG4gICAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSBzLmJpX2J1ZjtcbiAgfVxuICBzLmJpX2J1ZiA9IDA7XG4gIHMuYmlfdmFsaWQgPSAwO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvcHkgYSBzdG9yZWQgYmxvY2ssIHN0b3JpbmcgZmlyc3QgdGhlIGxlbmd0aCBhbmQgaXRzXG4gKiBvbmUncyBjb21wbGVtZW50IGlmIHJlcXVlc3RlZC5cbiAqL1xuZnVuY3Rpb24gY29weV9ibG9jayhzLCBidWYsIGxlbiwgaGVhZGVyKVxuLy9EZWZsYXRlU3RhdGUgKnM7XG4vL2NoYXJmICAgICpidWY7ICAgIC8qIHRoZSBpbnB1dCBkYXRhICovXG4vL3Vuc2lnbmVkIGxlbjsgICAgIC8qIGl0cyBsZW5ndGggKi9cbi8vaW50ICAgICAgaGVhZGVyOyAgLyogdHJ1ZSBpZiBibG9jayBoZWFkZXIgbXVzdCBiZSB3cml0dGVuICovXG57XG4gIGJpX3dpbmR1cChzKTsgICAgICAgIC8qIGFsaWduIG9uIGJ5dGUgYm91bmRhcnkgKi9cblxuICBpZiAoaGVhZGVyKSB7XG4gICAgcHV0X3Nob3J0KHMsIGxlbik7XG4gICAgcHV0X3Nob3J0KHMsIH5sZW4pO1xuICB9XG4vLyAgd2hpbGUgKGxlbi0tKSB7XG4vLyAgICBwdXRfYnl0ZShzLCAqYnVmKyspO1xuLy8gIH1cbiAgdXRpbHMuYXJyYXlTZXQocy5wZW5kaW5nX2J1Ziwgcy53aW5kb3csIGJ1ZiwgbGVuLCBzLnBlbmRpbmcpO1xuICBzLnBlbmRpbmcgKz0gbGVuO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvbXBhcmVzIHRvIHN1YnRyZWVzLCB1c2luZyB0aGUgdHJlZSBkZXB0aCBhcyB0aWUgYnJlYWtlciB3aGVuXG4gKiB0aGUgc3VidHJlZXMgaGF2ZSBlcXVhbCBmcmVxdWVuY3kuIFRoaXMgbWluaW1pemVzIHRoZSB3b3JzdCBjYXNlIGxlbmd0aC5cbiAqL1xuZnVuY3Rpb24gc21hbGxlcih0cmVlLCBuLCBtLCBkZXB0aCkge1xuICB2YXIgX24yID0gbiAqIDI7XG4gIHZhciBfbTIgPSBtICogMjtcbiAgcmV0dXJuICh0cmVlW19uMl0vKi5GcmVxKi8gPCB0cmVlW19tMl0vKi5GcmVxKi8gfHxcbiAgICAgICAgICh0cmVlW19uMl0vKi5GcmVxKi8gPT09IHRyZWVbX20yXS8qLkZyZXEqLyAmJiBkZXB0aFtuXSA8PSBkZXB0aFttXSkpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFJlc3RvcmUgdGhlIGhlYXAgcHJvcGVydHkgYnkgbW92aW5nIGRvd24gdGhlIHRyZWUgc3RhcnRpbmcgYXQgbm9kZSBrLFxuICogZXhjaGFuZ2luZyBhIG5vZGUgd2l0aCB0aGUgc21hbGxlc3Qgb2YgaXRzIHR3byBzb25zIGlmIG5lY2Vzc2FyeSwgc3RvcHBpbmdcbiAqIHdoZW4gdGhlIGhlYXAgcHJvcGVydHkgaXMgcmUtZXN0YWJsaXNoZWQgKGVhY2ggZmF0aGVyIHNtYWxsZXIgdGhhbiBpdHNcbiAqIHR3byBzb25zKS5cbiAqL1xuZnVuY3Rpb24gcHFkb3duaGVhcChzLCB0cmVlLCBrKVxuLy8gICAgZGVmbGF0ZV9zdGF0ZSAqcztcbi8vICAgIGN0X2RhdGEgKnRyZWU7ICAvKiB0aGUgdHJlZSB0byByZXN0b3JlICovXG4vLyAgICBpbnQgazsgICAgICAgICAgICAgICAvKiBub2RlIHRvIG1vdmUgZG93biAqL1xue1xuICB2YXIgdiA9IHMuaGVhcFtrXTtcbiAgdmFyIGogPSBrIDw8IDE7ICAvKiBsZWZ0IHNvbiBvZiBrICovXG4gIHdoaWxlIChqIDw9IHMuaGVhcF9sZW4pIHtcbiAgICAvKiBTZXQgaiB0byB0aGUgc21hbGxlc3Qgb2YgdGhlIHR3byBzb25zOiAqL1xuICAgIGlmIChqIDwgcy5oZWFwX2xlbiAmJlxuICAgICAgc21hbGxlcih0cmVlLCBzLmhlYXBbaiArIDFdLCBzLmhlYXBbal0sIHMuZGVwdGgpKSB7XG4gICAgICBqKys7XG4gICAgfVxuICAgIC8qIEV4aXQgaWYgdiBpcyBzbWFsbGVyIHRoYW4gYm90aCBzb25zICovXG4gICAgaWYgKHNtYWxsZXIodHJlZSwgdiwgcy5oZWFwW2pdLCBzLmRlcHRoKSkgeyBicmVhazsgfVxuXG4gICAgLyogRXhjaGFuZ2UgdiB3aXRoIHRoZSBzbWFsbGVzdCBzb24gKi9cbiAgICBzLmhlYXBba10gPSBzLmhlYXBbal07XG4gICAgayA9IGo7XG5cbiAgICAvKiBBbmQgY29udGludWUgZG93biB0aGUgdHJlZSwgc2V0dGluZyBqIHRvIHRoZSBsZWZ0IHNvbiBvZiBrICovXG4gICAgaiA8PD0gMTtcbiAgfVxuICBzLmhlYXBba10gPSB2O1xufVxuXG5cbi8vIGlubGluZWQgbWFudWFsbHlcbi8vIHZhciBTTUFMTEVTVCA9IDE7XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2VuZCB0aGUgYmxvY2sgZGF0YSBjb21wcmVzc2VkIHVzaW5nIHRoZSBnaXZlbiBIdWZmbWFuIHRyZWVzXG4gKi9cbmZ1bmN0aW9uIGNvbXByZXNzX2Jsb2NrKHMsIGx0cmVlLCBkdHJlZSlcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICBjb25zdCBjdF9kYXRhICpsdHJlZTsgLyogbGl0ZXJhbCB0cmVlICovXG4vLyAgICBjb25zdCBjdF9kYXRhICpkdHJlZTsgLyogZGlzdGFuY2UgdHJlZSAqL1xue1xuICB2YXIgZGlzdDsgICAgICAgICAgIC8qIGRpc3RhbmNlIG9mIG1hdGNoZWQgc3RyaW5nICovXG4gIHZhciBsYzsgICAgICAgICAgICAgLyogbWF0Y2ggbGVuZ3RoIG9yIHVubWF0Y2hlZCBjaGFyIChpZiBkaXN0ID09IDApICovXG4gIHZhciBseCA9IDA7ICAgICAgICAgLyogcnVubmluZyBpbmRleCBpbiBsX2J1ZiAqL1xuICB2YXIgY29kZTsgICAgICAgICAgIC8qIHRoZSBjb2RlIHRvIHNlbmQgKi9cbiAgdmFyIGV4dHJhOyAgICAgICAgICAvKiBudW1iZXIgb2YgZXh0cmEgYml0cyB0byBzZW5kICovXG5cbiAgaWYgKHMubGFzdF9saXQgIT09IDApIHtcbiAgICBkbyB7XG4gICAgICBkaXN0ID0gKHMucGVuZGluZ19idWZbcy5kX2J1ZiArIGx4ICogMl0gPDwgOCkgfCAocy5wZW5kaW5nX2J1ZltzLmRfYnVmICsgbHggKiAyICsgMV0pO1xuICAgICAgbGMgPSBzLnBlbmRpbmdfYnVmW3MubF9idWYgKyBseF07XG4gICAgICBseCsrO1xuXG4gICAgICBpZiAoZGlzdCA9PT0gMCkge1xuICAgICAgICBzZW5kX2NvZGUocywgbGMsIGx0cmVlKTsgLyogc2VuZCBhIGxpdGVyYWwgYnl0ZSAqL1xuICAgICAgICAvL1RyYWNlY3YoaXNncmFwaChsYyksIChzdGRlcnIsXCIgJyVjJyBcIiwgbGMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIEhlcmUsIGxjIGlzIHRoZSBtYXRjaCBsZW5ndGggLSBNSU5fTUFUQ0ggKi9cbiAgICAgICAgY29kZSA9IF9sZW5ndGhfY29kZVtsY107XG4gICAgICAgIHNlbmRfY29kZShzLCBjb2RlICsgTElURVJBTFMgKyAxLCBsdHJlZSk7IC8qIHNlbmQgdGhlIGxlbmd0aCBjb2RlICovXG4gICAgICAgIGV4dHJhID0gZXh0cmFfbGJpdHNbY29kZV07XG4gICAgICAgIGlmIChleHRyYSAhPT0gMCkge1xuICAgICAgICAgIGxjIC09IGJhc2VfbGVuZ3RoW2NvZGVdO1xuICAgICAgICAgIHNlbmRfYml0cyhzLCBsYywgZXh0cmEpOyAgICAgICAvKiBzZW5kIHRoZSBleHRyYSBsZW5ndGggYml0cyAqL1xuICAgICAgICB9XG4gICAgICAgIGRpc3QtLTsgLyogZGlzdCBpcyBub3cgdGhlIG1hdGNoIGRpc3RhbmNlIC0gMSAqL1xuICAgICAgICBjb2RlID0gZF9jb2RlKGRpc3QpO1xuICAgICAgICAvL0Fzc2VydCAoY29kZSA8IERfQ09ERVMsIFwiYmFkIGRfY29kZVwiKTtcblxuICAgICAgICBzZW5kX2NvZGUocywgY29kZSwgZHRyZWUpOyAgICAgICAvKiBzZW5kIHRoZSBkaXN0YW5jZSBjb2RlICovXG4gICAgICAgIGV4dHJhID0gZXh0cmFfZGJpdHNbY29kZV07XG4gICAgICAgIGlmIChleHRyYSAhPT0gMCkge1xuICAgICAgICAgIGRpc3QgLT0gYmFzZV9kaXN0W2NvZGVdO1xuICAgICAgICAgIHNlbmRfYml0cyhzLCBkaXN0LCBleHRyYSk7ICAgLyogc2VuZCB0aGUgZXh0cmEgZGlzdGFuY2UgYml0cyAqL1xuICAgICAgICB9XG4gICAgICB9IC8qIGxpdGVyYWwgb3IgbWF0Y2ggcGFpciA/ICovXG5cbiAgICAgIC8qIENoZWNrIHRoYXQgdGhlIG92ZXJsYXkgYmV0d2VlbiBwZW5kaW5nX2J1ZiBhbmQgZF9idWYrbF9idWYgaXMgb2s6ICovXG4gICAgICAvL0Fzc2VydCgodUludCkocy0+cGVuZGluZykgPCBzLT5saXRfYnVmc2l6ZSArIDIqbHgsXG4gICAgICAvLyAgICAgICBcInBlbmRpbmdCdWYgb3ZlcmZsb3dcIik7XG5cbiAgICB9IHdoaWxlIChseCA8IHMubGFzdF9saXQpO1xuICB9XG5cbiAgc2VuZF9jb2RlKHMsIEVORF9CTE9DSywgbHRyZWUpO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29uc3RydWN0IG9uZSBIdWZmbWFuIHRyZWUgYW5kIGFzc2lnbnMgdGhlIGNvZGUgYml0IHN0cmluZ3MgYW5kIGxlbmd0aHMuXG4gKiBVcGRhdGUgdGhlIHRvdGFsIGJpdCBsZW5ndGggZm9yIHRoZSBjdXJyZW50IGJsb2NrLlxuICogSU4gYXNzZXJ0aW9uOiB0aGUgZmllbGQgZnJlcSBpcyBzZXQgZm9yIGFsbCB0cmVlIGVsZW1lbnRzLlxuICogT1VUIGFzc2VydGlvbnM6IHRoZSBmaWVsZHMgbGVuIGFuZCBjb2RlIGFyZSBzZXQgdG8gdGhlIG9wdGltYWwgYml0IGxlbmd0aFxuICogICAgIGFuZCBjb3JyZXNwb25kaW5nIGNvZGUuIFRoZSBsZW5ndGggb3B0X2xlbiBpcyB1cGRhdGVkOyBzdGF0aWNfbGVuIGlzXG4gKiAgICAgYWxzbyB1cGRhdGVkIGlmIHN0cmVlIGlzIG5vdCBudWxsLiBUaGUgZmllbGQgbWF4X2NvZGUgaXMgc2V0LlxuICovXG5mdW5jdGlvbiBidWlsZF90cmVlKHMsIGRlc2MpXG4vLyAgICBkZWZsYXRlX3N0YXRlICpzO1xuLy8gICAgdHJlZV9kZXNjICpkZXNjOyAvKiB0aGUgdHJlZSBkZXNjcmlwdG9yICovXG57XG4gIHZhciB0cmVlICAgICA9IGRlc2MuZHluX3RyZWU7XG4gIHZhciBzdHJlZSAgICA9IGRlc2Muc3RhdF9kZXNjLnN0YXRpY190cmVlO1xuICB2YXIgaGFzX3N0cmVlID0gZGVzYy5zdGF0X2Rlc2MuaGFzX3N0cmVlO1xuICB2YXIgZWxlbXMgICAgPSBkZXNjLnN0YXRfZGVzYy5lbGVtcztcbiAgdmFyIG4sIG07ICAgICAgICAgIC8qIGl0ZXJhdGUgb3ZlciBoZWFwIGVsZW1lbnRzICovXG4gIHZhciBtYXhfY29kZSA9IC0xOyAvKiBsYXJnZXN0IGNvZGUgd2l0aCBub24gemVybyBmcmVxdWVuY3kgKi9cbiAgdmFyIG5vZGU7ICAgICAgICAgIC8qIG5ldyBub2RlIGJlaW5nIGNyZWF0ZWQgKi9cblxuICAvKiBDb25zdHJ1Y3QgdGhlIGluaXRpYWwgaGVhcCwgd2l0aCBsZWFzdCBmcmVxdWVudCBlbGVtZW50IGluXG4gICAqIGhlYXBbU01BTExFU1RdLiBUaGUgc29ucyBvZiBoZWFwW25dIGFyZSBoZWFwWzIqbl0gYW5kIGhlYXBbMipuKzFdLlxuICAgKiBoZWFwWzBdIGlzIG5vdCB1c2VkLlxuICAgKi9cbiAgcy5oZWFwX2xlbiA9IDA7XG4gIHMuaGVhcF9tYXggPSBIRUFQX1NJWkU7XG5cbiAgZm9yIChuID0gMDsgbiA8IGVsZW1zOyBuKyspIHtcbiAgICBpZiAodHJlZVtuICogMl0vKi5GcmVxKi8gIT09IDApIHtcbiAgICAgIHMuaGVhcFsrK3MuaGVhcF9sZW5dID0gbWF4X2NvZGUgPSBuO1xuICAgICAgcy5kZXB0aFtuXSA9IDA7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdHJlZVtuICogMiArIDFdLyouTGVuKi8gPSAwO1xuICAgIH1cbiAgfVxuXG4gIC8qIFRoZSBwa3ppcCBmb3JtYXQgcmVxdWlyZXMgdGhhdCBhdCBsZWFzdCBvbmUgZGlzdGFuY2UgY29kZSBleGlzdHMsXG4gICAqIGFuZCB0aGF0IGF0IGxlYXN0IG9uZSBiaXQgc2hvdWxkIGJlIHNlbnQgZXZlbiBpZiB0aGVyZSBpcyBvbmx5IG9uZVxuICAgKiBwb3NzaWJsZSBjb2RlLiBTbyB0byBhdm9pZCBzcGVjaWFsIGNoZWNrcyBsYXRlciBvbiB3ZSBmb3JjZSBhdCBsZWFzdFxuICAgKiB0d28gY29kZXMgb2Ygbm9uIHplcm8gZnJlcXVlbmN5LlxuICAgKi9cbiAgd2hpbGUgKHMuaGVhcF9sZW4gPCAyKSB7XG4gICAgbm9kZSA9IHMuaGVhcFsrK3MuaGVhcF9sZW5dID0gKG1heF9jb2RlIDwgMiA/ICsrbWF4X2NvZGUgOiAwKTtcbiAgICB0cmVlW25vZGUgKiAyXS8qLkZyZXEqLyA9IDE7XG4gICAgcy5kZXB0aFtub2RlXSA9IDA7XG4gICAgcy5vcHRfbGVuLS07XG5cbiAgICBpZiAoaGFzX3N0cmVlKSB7XG4gICAgICBzLnN0YXRpY19sZW4gLT0gc3RyZWVbbm9kZSAqIDIgKyAxXS8qLkxlbiovO1xuICAgIH1cbiAgICAvKiBub2RlIGlzIDAgb3IgMSBzbyBpdCBkb2VzIG5vdCBoYXZlIGV4dHJhIGJpdHMgKi9cbiAgfVxuICBkZXNjLm1heF9jb2RlID0gbWF4X2NvZGU7XG5cbiAgLyogVGhlIGVsZW1lbnRzIGhlYXBbaGVhcF9sZW4vMisxIC4uIGhlYXBfbGVuXSBhcmUgbGVhdmVzIG9mIHRoZSB0cmVlLFxuICAgKiBlc3RhYmxpc2ggc3ViLWhlYXBzIG9mIGluY3JlYXNpbmcgbGVuZ3RoczpcbiAgICovXG4gIGZvciAobiA9IChzLmhlYXBfbGVuID4+IDEvKmludCAvMiovKTsgbiA+PSAxOyBuLS0pIHsgcHFkb3duaGVhcChzLCB0cmVlLCBuKTsgfVxuXG4gIC8qIENvbnN0cnVjdCB0aGUgSHVmZm1hbiB0cmVlIGJ5IHJlcGVhdGVkbHkgY29tYmluaW5nIHRoZSBsZWFzdCB0d29cbiAgICogZnJlcXVlbnQgbm9kZXMuXG4gICAqL1xuICBub2RlID0gZWxlbXM7ICAgICAgICAgICAgICAvKiBuZXh0IGludGVybmFsIG5vZGUgb2YgdGhlIHRyZWUgKi9cbiAgZG8ge1xuICAgIC8vcHFyZW1vdmUocywgdHJlZSwgbik7ICAvKiBuID0gbm9kZSBvZiBsZWFzdCBmcmVxdWVuY3kgKi9cbiAgICAvKioqIHBxcmVtb3ZlICoqKi9cbiAgICBuID0gcy5oZWFwWzEvKlNNQUxMRVNUKi9dO1xuICAgIHMuaGVhcFsxLypTTUFMTEVTVCovXSA9IHMuaGVhcFtzLmhlYXBfbGVuLS1dO1xuICAgIHBxZG93bmhlYXAocywgdHJlZSwgMS8qU01BTExFU1QqLyk7XG4gICAgLyoqKi9cblxuICAgIG0gPSBzLmhlYXBbMS8qU01BTExFU1QqL107IC8qIG0gPSBub2RlIG9mIG5leHQgbGVhc3QgZnJlcXVlbmN5ICovXG5cbiAgICBzLmhlYXBbLS1zLmhlYXBfbWF4XSA9IG47IC8qIGtlZXAgdGhlIG5vZGVzIHNvcnRlZCBieSBmcmVxdWVuY3kgKi9cbiAgICBzLmhlYXBbLS1zLmhlYXBfbWF4XSA9IG07XG5cbiAgICAvKiBDcmVhdGUgYSBuZXcgbm9kZSBmYXRoZXIgb2YgbiBhbmQgbSAqL1xuICAgIHRyZWVbbm9kZSAqIDJdLyouRnJlcSovID0gdHJlZVtuICogMl0vKi5GcmVxKi8gKyB0cmVlW20gKiAyXS8qLkZyZXEqLztcbiAgICBzLmRlcHRoW25vZGVdID0gKHMuZGVwdGhbbl0gPj0gcy5kZXB0aFttXSA/IHMuZGVwdGhbbl0gOiBzLmRlcHRoW21dKSArIDE7XG4gICAgdHJlZVtuICogMiArIDFdLyouRGFkKi8gPSB0cmVlW20gKiAyICsgMV0vKi5EYWQqLyA9IG5vZGU7XG5cbiAgICAvKiBhbmQgaW5zZXJ0IHRoZSBuZXcgbm9kZSBpbiB0aGUgaGVhcCAqL1xuICAgIHMuaGVhcFsxLypTTUFMTEVTVCovXSA9IG5vZGUrKztcbiAgICBwcWRvd25oZWFwKHMsIHRyZWUsIDEvKlNNQUxMRVNUKi8pO1xuXG4gIH0gd2hpbGUgKHMuaGVhcF9sZW4gPj0gMik7XG5cbiAgcy5oZWFwWy0tcy5oZWFwX21heF0gPSBzLmhlYXBbMS8qU01BTExFU1QqL107XG5cbiAgLyogQXQgdGhpcyBwb2ludCwgdGhlIGZpZWxkcyBmcmVxIGFuZCBkYWQgYXJlIHNldC4gV2UgY2FuIG5vd1xuICAgKiBnZW5lcmF0ZSB0aGUgYml0IGxlbmd0aHMuXG4gICAqL1xuICBnZW5fYml0bGVuKHMsIGRlc2MpO1xuXG4gIC8qIFRoZSBmaWVsZCBsZW4gaXMgbm93IHNldCwgd2UgY2FuIGdlbmVyYXRlIHRoZSBiaXQgY29kZXMgKi9cbiAgZ2VuX2NvZGVzKHRyZWUsIG1heF9jb2RlLCBzLmJsX2NvdW50KTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNjYW4gYSBsaXRlcmFsIG9yIGRpc3RhbmNlIHRyZWUgdG8gZGV0ZXJtaW5lIHRoZSBmcmVxdWVuY2llcyBvZiB0aGUgY29kZXNcbiAqIGluIHRoZSBiaXQgbGVuZ3RoIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIHNjYW5fdHJlZShzLCB0cmVlLCBtYXhfY29kZSlcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICBjdF9kYXRhICp0cmVlOyAgIC8qIHRoZSB0cmVlIHRvIGJlIHNjYW5uZWQgKi9cbi8vICAgIGludCBtYXhfY29kZTsgICAgLyogYW5kIGl0cyBsYXJnZXN0IGNvZGUgb2Ygbm9uIHplcm8gZnJlcXVlbmN5ICovXG57XG4gIHZhciBuOyAgICAgICAgICAgICAgICAgICAgIC8qIGl0ZXJhdGVzIG92ZXIgYWxsIHRyZWUgZWxlbWVudHMgKi9cbiAgdmFyIHByZXZsZW4gPSAtMTsgICAgICAgICAgLyogbGFzdCBlbWl0dGVkIGxlbmd0aCAqL1xuICB2YXIgY3VybGVuOyAgICAgICAgICAgICAgICAvKiBsZW5ndGggb2YgY3VycmVudCBjb2RlICovXG5cbiAgdmFyIG5leHRsZW4gPSB0cmVlWzAgKiAyICsgMV0vKi5MZW4qLzsgLyogbGVuZ3RoIG9mIG5leHQgY29kZSAqL1xuXG4gIHZhciBjb3VudCA9IDA7ICAgICAgICAgICAgIC8qIHJlcGVhdCBjb3VudCBvZiB0aGUgY3VycmVudCBjb2RlICovXG4gIHZhciBtYXhfY291bnQgPSA3OyAgICAgICAgIC8qIG1heCByZXBlYXQgY291bnQgKi9cbiAgdmFyIG1pbl9jb3VudCA9IDQ7ICAgICAgICAgLyogbWluIHJlcGVhdCBjb3VudCAqL1xuXG4gIGlmIChuZXh0bGVuID09PSAwKSB7XG4gICAgbWF4X2NvdW50ID0gMTM4O1xuICAgIG1pbl9jb3VudCA9IDM7XG4gIH1cbiAgdHJlZVsobWF4X2NvZGUgKyAxKSAqIDIgKyAxXS8qLkxlbiovID0gMHhmZmZmOyAvKiBndWFyZCAqL1xuXG4gIGZvciAobiA9IDA7IG4gPD0gbWF4X2NvZGU7IG4rKykge1xuICAgIGN1cmxlbiA9IG5leHRsZW47XG4gICAgbmV4dGxlbiA9IHRyZWVbKG4gKyAxKSAqIDIgKyAxXS8qLkxlbiovO1xuXG4gICAgaWYgKCsrY291bnQgPCBtYXhfY291bnQgJiYgY3VybGVuID09PSBuZXh0bGVuKSB7XG4gICAgICBjb250aW51ZTtcblxuICAgIH0gZWxzZSBpZiAoY291bnQgPCBtaW5fY291bnQpIHtcbiAgICAgIHMuYmxfdHJlZVtjdXJsZW4gKiAyXS8qLkZyZXEqLyArPSBjb3VudDtcblxuICAgIH0gZWxzZSBpZiAoY3VybGVuICE9PSAwKSB7XG5cbiAgICAgIGlmIChjdXJsZW4gIT09IHByZXZsZW4pIHsgcy5ibF90cmVlW2N1cmxlbiAqIDJdLyouRnJlcSovKys7IH1cbiAgICAgIHMuYmxfdHJlZVtSRVBfM182ICogMl0vKi5GcmVxKi8rKztcblxuICAgIH0gZWxzZSBpZiAoY291bnQgPD0gMTApIHtcbiAgICAgIHMuYmxfdHJlZVtSRVBaXzNfMTAgKiAyXS8qLkZyZXEqLysrO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHMuYmxfdHJlZVtSRVBaXzExXzEzOCAqIDJdLyouRnJlcSovKys7XG4gICAgfVxuXG4gICAgY291bnQgPSAwO1xuICAgIHByZXZsZW4gPSBjdXJsZW47XG5cbiAgICBpZiAobmV4dGxlbiA9PT0gMCkge1xuICAgICAgbWF4X2NvdW50ID0gMTM4O1xuICAgICAgbWluX2NvdW50ID0gMztcblxuICAgIH0gZWxzZSBpZiAoY3VybGVuID09PSBuZXh0bGVuKSB7XG4gICAgICBtYXhfY291bnQgPSA2O1xuICAgICAgbWluX2NvdW50ID0gMztcblxuICAgIH0gZWxzZSB7XG4gICAgICBtYXhfY291bnQgPSA3O1xuICAgICAgbWluX2NvdW50ID0gNDtcbiAgICB9XG4gIH1cbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNlbmQgYSBsaXRlcmFsIG9yIGRpc3RhbmNlIHRyZWUgaW4gY29tcHJlc3NlZCBmb3JtLCB1c2luZyB0aGUgY29kZXMgaW5cbiAqIGJsX3RyZWUuXG4gKi9cbmZ1bmN0aW9uIHNlbmRfdHJlZShzLCB0cmVlLCBtYXhfY29kZSlcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICBjdF9kYXRhICp0cmVlOyAvKiB0aGUgdHJlZSB0byBiZSBzY2FubmVkICovXG4vLyAgICBpbnQgbWF4X2NvZGU7ICAgICAgIC8qIGFuZCBpdHMgbGFyZ2VzdCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXF1ZW5jeSAqL1xue1xuICB2YXIgbjsgICAgICAgICAgICAgICAgICAgICAvKiBpdGVyYXRlcyBvdmVyIGFsbCB0cmVlIGVsZW1lbnRzICovXG4gIHZhciBwcmV2bGVuID0gLTE7ICAgICAgICAgIC8qIGxhc3QgZW1pdHRlZCBsZW5ndGggKi9cbiAgdmFyIGN1cmxlbjsgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgY29kZSAqL1xuXG4gIHZhciBuZXh0bGVuID0gdHJlZVswICogMiArIDFdLyouTGVuKi87IC8qIGxlbmd0aCBvZiBuZXh0IGNvZGUgKi9cblxuICB2YXIgY291bnQgPSAwOyAgICAgICAgICAgICAvKiByZXBlYXQgY291bnQgb2YgdGhlIGN1cnJlbnQgY29kZSAqL1xuICB2YXIgbWF4X2NvdW50ID0gNzsgICAgICAgICAvKiBtYXggcmVwZWF0IGNvdW50ICovXG4gIHZhciBtaW5fY291bnQgPSA0OyAgICAgICAgIC8qIG1pbiByZXBlYXQgY291bnQgKi9cblxuICAvKiB0cmVlW21heF9jb2RlKzFdLkxlbiA9IC0xOyAqLyAgLyogZ3VhcmQgYWxyZWFkeSBzZXQgKi9cbiAgaWYgKG5leHRsZW4gPT09IDApIHtcbiAgICBtYXhfY291bnQgPSAxMzg7XG4gICAgbWluX2NvdW50ID0gMztcbiAgfVxuXG4gIGZvciAobiA9IDA7IG4gPD0gbWF4X2NvZGU7IG4rKykge1xuICAgIGN1cmxlbiA9IG5leHRsZW47XG4gICAgbmV4dGxlbiA9IHRyZWVbKG4gKyAxKSAqIDIgKyAxXS8qLkxlbiovO1xuXG4gICAgaWYgKCsrY291bnQgPCBtYXhfY291bnQgJiYgY3VybGVuID09PSBuZXh0bGVuKSB7XG4gICAgICBjb250aW51ZTtcblxuICAgIH0gZWxzZSBpZiAoY291bnQgPCBtaW5fY291bnQpIHtcbiAgICAgIGRvIHsgc2VuZF9jb2RlKHMsIGN1cmxlbiwgcy5ibF90cmVlKTsgfSB3aGlsZSAoLS1jb3VudCAhPT0gMCk7XG5cbiAgICB9IGVsc2UgaWYgKGN1cmxlbiAhPT0gMCkge1xuICAgICAgaWYgKGN1cmxlbiAhPT0gcHJldmxlbikge1xuICAgICAgICBzZW5kX2NvZGUocywgY3VybGVuLCBzLmJsX3RyZWUpO1xuICAgICAgICBjb3VudC0tO1xuICAgICAgfVxuICAgICAgLy9Bc3NlcnQoY291bnQgPj0gMyAmJiBjb3VudCA8PSA2LCBcIiAzXzY/XCIpO1xuICAgICAgc2VuZF9jb2RlKHMsIFJFUF8zXzYsIHMuYmxfdHJlZSk7XG4gICAgICBzZW5kX2JpdHMocywgY291bnQgLSAzLCAyKTtcblxuICAgIH0gZWxzZSBpZiAoY291bnQgPD0gMTApIHtcbiAgICAgIHNlbmRfY29kZShzLCBSRVBaXzNfMTAsIHMuYmxfdHJlZSk7XG4gICAgICBzZW5kX2JpdHMocywgY291bnQgLSAzLCAzKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBzZW5kX2NvZGUocywgUkVQWl8xMV8xMzgsIHMuYmxfdHJlZSk7XG4gICAgICBzZW5kX2JpdHMocywgY291bnQgLSAxMSwgNyk7XG4gICAgfVxuXG4gICAgY291bnQgPSAwO1xuICAgIHByZXZsZW4gPSBjdXJsZW47XG4gICAgaWYgKG5leHRsZW4gPT09IDApIHtcbiAgICAgIG1heF9jb3VudCA9IDEzODtcbiAgICAgIG1pbl9jb3VudCA9IDM7XG5cbiAgICB9IGVsc2UgaWYgKGN1cmxlbiA9PT0gbmV4dGxlbikge1xuICAgICAgbWF4X2NvdW50ID0gNjtcbiAgICAgIG1pbl9jb3VudCA9IDM7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgbWF4X2NvdW50ID0gNztcbiAgICAgIG1pbl9jb3VudCA9IDQ7XG4gICAgfVxuICB9XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb25zdHJ1Y3QgdGhlIEh1ZmZtYW4gdHJlZSBmb3IgdGhlIGJpdCBsZW5ndGhzIGFuZCByZXR1cm4gdGhlIGluZGV4IGluXG4gKiBibF9vcmRlciBvZiB0aGUgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgdG8gc2VuZC5cbiAqL1xuZnVuY3Rpb24gYnVpbGRfYmxfdHJlZShzKSB7XG4gIHZhciBtYXhfYmxpbmRleDsgIC8qIGluZGV4IG9mIGxhc3QgYml0IGxlbmd0aCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXEgKi9cblxuICAvKiBEZXRlcm1pbmUgdGhlIGJpdCBsZW5ndGggZnJlcXVlbmNpZXMgZm9yIGxpdGVyYWwgYW5kIGRpc3RhbmNlIHRyZWVzICovXG4gIHNjYW5fdHJlZShzLCBzLmR5bl9sdHJlZSwgcy5sX2Rlc2MubWF4X2NvZGUpO1xuICBzY2FuX3RyZWUocywgcy5keW5fZHRyZWUsIHMuZF9kZXNjLm1heF9jb2RlKTtcblxuICAvKiBCdWlsZCB0aGUgYml0IGxlbmd0aCB0cmVlOiAqL1xuICBidWlsZF90cmVlKHMsIHMuYmxfZGVzYyk7XG4gIC8qIG9wdF9sZW4gbm93IGluY2x1ZGVzIHRoZSBsZW5ndGggb2YgdGhlIHRyZWUgcmVwcmVzZW50YXRpb25zLCBleGNlcHRcbiAgICogdGhlIGxlbmd0aHMgb2YgdGhlIGJpdCBsZW5ndGhzIGNvZGVzIGFuZCB0aGUgNSs1KzQgYml0cyBmb3IgdGhlIGNvdW50cy5cbiAgICovXG5cbiAgLyogRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgYml0IGxlbmd0aCBjb2RlcyB0byBzZW5kLiBUaGUgcGt6aXAgZm9ybWF0XG4gICAqIHJlcXVpcmVzIHRoYXQgYXQgbGVhc3QgNCBiaXQgbGVuZ3RoIGNvZGVzIGJlIHNlbnQuIChhcHBub3RlLnR4dCBzYXlzXG4gICAqIDMgYnV0IHRoZSBhY3R1YWwgdmFsdWUgdXNlZCBpcyA0LilcbiAgICovXG4gIGZvciAobWF4X2JsaW5kZXggPSBCTF9DT0RFUyAtIDE7IG1heF9ibGluZGV4ID49IDM7IG1heF9ibGluZGV4LS0pIHtcbiAgICBpZiAocy5ibF90cmVlW2JsX29yZGVyW21heF9ibGluZGV4XSAqIDIgKyAxXS8qLkxlbiovICE9PSAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgLyogVXBkYXRlIG9wdF9sZW4gdG8gaW5jbHVkZSB0aGUgYml0IGxlbmd0aCB0cmVlIGFuZCBjb3VudHMgKi9cbiAgcy5vcHRfbGVuICs9IDMgKiAobWF4X2JsaW5kZXggKyAxKSArIDUgKyA1ICsgNDtcbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJcXG5keW4gdHJlZXM6IGR5biAlbGQsIHN0YXQgJWxkXCIsXG4gIC8vICAgICAgICBzLT5vcHRfbGVuLCBzLT5zdGF0aWNfbGVuKSk7XG5cbiAgcmV0dXJuIG1heF9ibGluZGV4O1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2VuZCB0aGUgaGVhZGVyIGZvciBhIGJsb2NrIHVzaW5nIGR5bmFtaWMgSHVmZm1hbiB0cmVlczogdGhlIGNvdW50cywgdGhlXG4gKiBsZW5ndGhzIG9mIHRoZSBiaXQgbGVuZ3RoIGNvZGVzLCB0aGUgbGl0ZXJhbCB0cmVlIGFuZCB0aGUgZGlzdGFuY2UgdHJlZS5cbiAqIElOIGFzc2VydGlvbjogbGNvZGVzID49IDI1NywgZGNvZGVzID49IDEsIGJsY29kZXMgPj0gNC5cbiAqL1xuZnVuY3Rpb24gc2VuZF9hbGxfdHJlZXMocywgbGNvZGVzLCBkY29kZXMsIGJsY29kZXMpXG4vLyAgICBkZWZsYXRlX3N0YXRlICpzO1xuLy8gICAgaW50IGxjb2RlcywgZGNvZGVzLCBibGNvZGVzOyAvKiBudW1iZXIgb2YgY29kZXMgZm9yIGVhY2ggdHJlZSAqL1xue1xuICB2YXIgcmFuazsgICAgICAgICAgICAgICAgICAgIC8qIGluZGV4IGluIGJsX29yZGVyICovXG5cbiAgLy9Bc3NlcnQgKGxjb2RlcyA+PSAyNTcgJiYgZGNvZGVzID49IDEgJiYgYmxjb2RlcyA+PSA0LCBcIm5vdCBlbm91Z2ggY29kZXNcIik7XG4gIC8vQXNzZXJ0IChsY29kZXMgPD0gTF9DT0RFUyAmJiBkY29kZXMgPD0gRF9DT0RFUyAmJiBibGNvZGVzIDw9IEJMX0NPREVTLFxuICAvLyAgICAgICAgXCJ0b28gbWFueSBjb2Rlc1wiKTtcbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJcXG5ibCBjb3VudHM6IFwiKSk7XG4gIHNlbmRfYml0cyhzLCBsY29kZXMgLSAyNTcsIDUpOyAvKiBub3QgKzI1NSBhcyBzdGF0ZWQgaW4gYXBwbm90ZS50eHQgKi9cbiAgc2VuZF9iaXRzKHMsIGRjb2RlcyAtIDEsICAgNSk7XG4gIHNlbmRfYml0cyhzLCBibGNvZGVzIC0gNCwgIDQpOyAvKiBub3QgLTMgYXMgc3RhdGVkIGluIGFwcG5vdGUudHh0ICovXG4gIGZvciAocmFuayA9IDA7IHJhbmsgPCBibGNvZGVzOyByYW5rKyspIHtcbiAgICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmJsIGNvZGUgJTJkIFwiLCBibF9vcmRlcltyYW5rXSkpO1xuICAgIHNlbmRfYml0cyhzLCBzLmJsX3RyZWVbYmxfb3JkZXJbcmFua10gKiAyICsgMV0vKi5MZW4qLywgMyk7XG4gIH1cbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJcXG5ibCB0cmVlOiBzZW50ICVsZFwiLCBzLT5iaXRzX3NlbnQpKTtcblxuICBzZW5kX3RyZWUocywgcy5keW5fbHRyZWUsIGxjb2RlcyAtIDEpOyAvKiBsaXRlcmFsIHRyZWUgKi9cbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJcXG5saXQgdHJlZTogc2VudCAlbGRcIiwgcy0+Yml0c19zZW50KSk7XG5cbiAgc2VuZF90cmVlKHMsIHMuZHluX2R0cmVlLCBkY29kZXMgLSAxKTsgLyogZGlzdGFuY2UgdHJlZSAqL1xuICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmRpc3QgdHJlZTogc2VudCAlbGRcIiwgcy0+Yml0c19zZW50KSk7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDaGVjayBpZiB0aGUgZGF0YSB0eXBlIGlzIFRFWFQgb3IgQklOQVJZLCB1c2luZyB0aGUgZm9sbG93aW5nIGFsZ29yaXRobTpcbiAqIC0gVEVYVCBpZiB0aGUgdHdvIGNvbmRpdGlvbnMgYmVsb3cgYXJlIHNhdGlzZmllZDpcbiAqICAgIGEpIFRoZXJlIGFyZSBubyBub24tcG9ydGFibGUgY29udHJvbCBjaGFyYWN0ZXJzIGJlbG9uZ2luZyB0byB0aGVcbiAqICAgICAgIFwiYmxhY2sgbGlzdFwiICgwLi42LCAxNC4uMjUsIDI4Li4zMSkuXG4gKiAgICBiKSBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgcHJpbnRhYmxlIGNoYXJhY3RlciBiZWxvbmdpbmcgdG8gdGhlXG4gKiAgICAgICBcIndoaXRlIGxpc3RcIiAoOSB7VEFCfSwgMTAge0xGfSwgMTMge0NSfSwgMzIuLjI1NSkuXG4gKiAtIEJJTkFSWSBvdGhlcndpc2UuXG4gKiAtIFRoZSBmb2xsb3dpbmcgcGFydGlhbGx5LXBvcnRhYmxlIGNvbnRyb2wgY2hhcmFjdGVycyBmb3JtIGFcbiAqICAgXCJncmF5IGxpc3RcIiB0aGF0IGlzIGlnbm9yZWQgaW4gdGhpcyBkZXRlY3Rpb24gYWxnb3JpdGhtOlxuICogICAoNyB7QkVMfSwgOCB7QlN9LCAxMSB7VlR9LCAxMiB7RkZ9LCAyNiB7U1VCfSwgMjcge0VTQ30pLlxuICogSU4gYXNzZXJ0aW9uOiB0aGUgZmllbGRzIEZyZXEgb2YgZHluX2x0cmVlIGFyZSBzZXQuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdF9kYXRhX3R5cGUocykge1xuICAvKiBibGFja19tYXNrIGlzIHRoZSBiaXQgbWFzayBvZiBibGFjay1saXN0ZWQgYnl0ZXNcbiAgICogc2V0IGJpdHMgMC4uNiwgMTQuLjI1LCBhbmQgMjguLjMxXG4gICAqIDB4ZjNmZmMwN2YgPSBiaW5hcnkgMTExMTAwMTExMTExMTExMTExMDAwMDAwMDExMTExMTFcbiAgICovXG4gIHZhciBibGFja19tYXNrID0gMHhmM2ZmYzA3ZjtcbiAgdmFyIG47XG5cbiAgLyogQ2hlY2sgZm9yIG5vbi10ZXh0dWFsIChcImJsYWNrLWxpc3RlZFwiKSBieXRlcy4gKi9cbiAgZm9yIChuID0gMDsgbiA8PSAzMTsgbisrLCBibGFja19tYXNrID4+Pj0gMSkge1xuICAgIGlmICgoYmxhY2tfbWFzayAmIDEpICYmIChzLmR5bl9sdHJlZVtuICogMl0vKi5GcmVxKi8gIT09IDApKSB7XG4gICAgICByZXR1cm4gWl9CSU5BUlk7XG4gICAgfVxuICB9XG5cbiAgLyogQ2hlY2sgZm9yIHRleHR1YWwgKFwid2hpdGUtbGlzdGVkXCIpIGJ5dGVzLiAqL1xuICBpZiAocy5keW5fbHRyZWVbOSAqIDJdLyouRnJlcSovICE9PSAwIHx8IHMuZHluX2x0cmVlWzEwICogMl0vKi5GcmVxKi8gIT09IDAgfHxcbiAgICAgIHMuZHluX2x0cmVlWzEzICogMl0vKi5GcmVxKi8gIT09IDApIHtcbiAgICByZXR1cm4gWl9URVhUO1xuICB9XG4gIGZvciAobiA9IDMyOyBuIDwgTElURVJBTFM7IG4rKykge1xuICAgIGlmIChzLmR5bl9sdHJlZVtuICogMl0vKi5GcmVxKi8gIT09IDApIHtcbiAgICAgIHJldHVybiBaX1RFWFQ7XG4gICAgfVxuICB9XG5cbiAgLyogVGhlcmUgYXJlIG5vIFwiYmxhY2stbGlzdGVkXCIgb3IgXCJ3aGl0ZS1saXN0ZWRcIiBieXRlczpcbiAgICogdGhpcyBzdHJlYW0gZWl0aGVyIGlzIGVtcHR5IG9yIGhhcyB0b2xlcmF0ZWQgKFwiZ3JheS1saXN0ZWRcIikgYnl0ZXMgb25seS5cbiAgICovXG4gIHJldHVybiBaX0JJTkFSWTtcbn1cblxuXG52YXIgc3RhdGljX2luaXRfZG9uZSA9IGZhbHNlO1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEluaXRpYWxpemUgdGhlIHRyZWUgZGF0YSBzdHJ1Y3R1cmVzIGZvciBhIG5ldyB6bGliIHN0cmVhbS5cbiAqL1xuZnVuY3Rpb24gX3RyX2luaXQocylcbntcblxuICBpZiAoIXN0YXRpY19pbml0X2RvbmUpIHtcbiAgICB0cl9zdGF0aWNfaW5pdCgpO1xuICAgIHN0YXRpY19pbml0X2RvbmUgPSB0cnVlO1xuICB9XG5cbiAgcy5sX2Rlc2MgID0gbmV3IFRyZWVEZXNjKHMuZHluX2x0cmVlLCBzdGF0aWNfbF9kZXNjKTtcbiAgcy5kX2Rlc2MgID0gbmV3IFRyZWVEZXNjKHMuZHluX2R0cmVlLCBzdGF0aWNfZF9kZXNjKTtcbiAgcy5ibF9kZXNjID0gbmV3IFRyZWVEZXNjKHMuYmxfdHJlZSwgc3RhdGljX2JsX2Rlc2MpO1xuXG4gIHMuYmlfYnVmID0gMDtcbiAgcy5iaV92YWxpZCA9IDA7XG5cbiAgLyogSW5pdGlhbGl6ZSB0aGUgZmlyc3QgYmxvY2sgb2YgdGhlIGZpcnN0IGZpbGU6ICovXG4gIGluaXRfYmxvY2socyk7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZW5kIGEgc3RvcmVkIGJsb2NrXG4gKi9cbmZ1bmN0aW9uIF90cl9zdG9yZWRfYmxvY2socywgYnVmLCBzdG9yZWRfbGVuLCBsYXN0KVxuLy9EZWZsYXRlU3RhdGUgKnM7XG4vL2NoYXJmICpidWY7ICAgICAgIC8qIGlucHV0IGJsb2NrICovXG4vL3VsZyBzdG9yZWRfbGVuOyAgIC8qIGxlbmd0aCBvZiBpbnB1dCBibG9jayAqL1xuLy9pbnQgbGFzdDsgICAgICAgICAvKiBvbmUgaWYgdGhpcyBpcyB0aGUgbGFzdCBibG9jayBmb3IgYSBmaWxlICovXG57XG4gIHNlbmRfYml0cyhzLCAoU1RPUkVEX0JMT0NLIDw8IDEpICsgKGxhc3QgPyAxIDogMCksIDMpOyAgICAvKiBzZW5kIGJsb2NrIHR5cGUgKi9cbiAgY29weV9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIHRydWUpOyAvKiB3aXRoIGhlYWRlciAqL1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2VuZCBvbmUgZW1wdHkgc3RhdGljIGJsb2NrIHRvIGdpdmUgZW5vdWdoIGxvb2thaGVhZCBmb3IgaW5mbGF0ZS5cbiAqIFRoaXMgdGFrZXMgMTAgYml0cywgb2Ygd2hpY2ggNyBtYXkgcmVtYWluIGluIHRoZSBiaXQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBfdHJfYWxpZ24ocykge1xuICBzZW5kX2JpdHMocywgU1RBVElDX1RSRUVTIDw8IDEsIDMpO1xuICBzZW5kX2NvZGUocywgRU5EX0JMT0NLLCBzdGF0aWNfbHRyZWUpO1xuICBiaV9mbHVzaChzKTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIERldGVybWluZSB0aGUgYmVzdCBlbmNvZGluZyBmb3IgdGhlIGN1cnJlbnQgYmxvY2s6IGR5bmFtaWMgdHJlZXMsIHN0YXRpY1xuICogdHJlZXMgb3Igc3RvcmUsIGFuZCBvdXRwdXQgdGhlIGVuY29kZWQgYmxvY2sgdG8gdGhlIHppcCBmaWxlLlxuICovXG5mdW5jdGlvbiBfdHJfZmx1c2hfYmxvY2socywgYnVmLCBzdG9yZWRfbGVuLCBsYXN0KVxuLy9EZWZsYXRlU3RhdGUgKnM7XG4vL2NoYXJmICpidWY7ICAgICAgIC8qIGlucHV0IGJsb2NrLCBvciBOVUxMIGlmIHRvbyBvbGQgKi9cbi8vdWxnIHN0b3JlZF9sZW47ICAgLyogbGVuZ3RoIG9mIGlucHV0IGJsb2NrICovXG4vL2ludCBsYXN0OyAgICAgICAgIC8qIG9uZSBpZiB0aGlzIGlzIHRoZSBsYXN0IGJsb2NrIGZvciBhIGZpbGUgKi9cbntcbiAgdmFyIG9wdF9sZW5iLCBzdGF0aWNfbGVuYjsgIC8qIG9wdF9sZW4gYW5kIHN0YXRpY19sZW4gaW4gYnl0ZXMgKi9cbiAgdmFyIG1heF9ibGluZGV4ID0gMDsgICAgICAgIC8qIGluZGV4IG9mIGxhc3QgYml0IGxlbmd0aCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXEgKi9cblxuICAvKiBCdWlsZCB0aGUgSHVmZm1hbiB0cmVlcyB1bmxlc3MgYSBzdG9yZWQgYmxvY2sgaXMgZm9yY2VkICovXG4gIGlmIChzLmxldmVsID4gMCkge1xuXG4gICAgLyogQ2hlY2sgaWYgdGhlIGZpbGUgaXMgYmluYXJ5IG9yIHRleHQgKi9cbiAgICBpZiAocy5zdHJtLmRhdGFfdHlwZSA9PT0gWl9VTktOT1dOKSB7XG4gICAgICBzLnN0cm0uZGF0YV90eXBlID0gZGV0ZWN0X2RhdGFfdHlwZShzKTtcbiAgICB9XG5cbiAgICAvKiBDb25zdHJ1Y3QgdGhlIGxpdGVyYWwgYW5kIGRpc3RhbmNlIHRyZWVzICovXG4gICAgYnVpbGRfdHJlZShzLCBzLmxfZGVzYyk7XG4gICAgLy8gVHJhY2V2KChzdGRlcnIsIFwiXFxubGl0IGRhdGE6IGR5biAlbGQsIHN0YXQgJWxkXCIsIHMtPm9wdF9sZW4sXG4gICAgLy8gICAgICAgIHMtPnN0YXRpY19sZW4pKTtcblxuICAgIGJ1aWxkX3RyZWUocywgcy5kX2Rlc2MpO1xuICAgIC8vIFRyYWNldigoc3RkZXJyLCBcIlxcbmRpc3QgZGF0YTogZHluICVsZCwgc3RhdCAlbGRcIiwgcy0+b3B0X2xlbixcbiAgICAvLyAgICAgICAgcy0+c3RhdGljX2xlbikpO1xuICAgIC8qIEF0IHRoaXMgcG9pbnQsIG9wdF9sZW4gYW5kIHN0YXRpY19sZW4gYXJlIHRoZSB0b3RhbCBiaXQgbGVuZ3RocyBvZlxuICAgICAqIHRoZSBjb21wcmVzc2VkIGJsb2NrIGRhdGEsIGV4Y2x1ZGluZyB0aGUgdHJlZSByZXByZXNlbnRhdGlvbnMuXG4gICAgICovXG5cbiAgICAvKiBCdWlsZCB0aGUgYml0IGxlbmd0aCB0cmVlIGZvciB0aGUgYWJvdmUgdHdvIHRyZWVzLCBhbmQgZ2V0IHRoZSBpbmRleFxuICAgICAqIGluIGJsX29yZGVyIG9mIHRoZSBsYXN0IGJpdCBsZW5ndGggY29kZSB0byBzZW5kLlxuICAgICAqL1xuICAgIG1heF9ibGluZGV4ID0gYnVpbGRfYmxfdHJlZShzKTtcblxuICAgIC8qIERldGVybWluZSB0aGUgYmVzdCBlbmNvZGluZy4gQ29tcHV0ZSB0aGUgYmxvY2sgbGVuZ3RocyBpbiBieXRlcy4gKi9cbiAgICBvcHRfbGVuYiA9IChzLm9wdF9sZW4gKyAzICsgNykgPj4+IDM7XG4gICAgc3RhdGljX2xlbmIgPSAocy5zdGF0aWNfbGVuICsgMyArIDcpID4+PiAzO1xuXG4gICAgLy8gVHJhY2V2KChzdGRlcnIsIFwiXFxub3B0ICVsdSglbHUpIHN0YXQgJWx1KCVsdSkgc3RvcmVkICVsdSBsaXQgJXUgXCIsXG4gICAgLy8gICAgICAgIG9wdF9sZW5iLCBzLT5vcHRfbGVuLCBzdGF0aWNfbGVuYiwgcy0+c3RhdGljX2xlbiwgc3RvcmVkX2xlbixcbiAgICAvLyAgICAgICAgcy0+bGFzdF9saXQpKTtcblxuICAgIGlmIChzdGF0aWNfbGVuYiA8PSBvcHRfbGVuYikgeyBvcHRfbGVuYiA9IHN0YXRpY19sZW5iOyB9XG5cbiAgfSBlbHNlIHtcbiAgICAvLyBBc3NlcnQoYnVmICE9IChjaGFyKikwLCBcImxvc3QgYnVmXCIpO1xuICAgIG9wdF9sZW5iID0gc3RhdGljX2xlbmIgPSBzdG9yZWRfbGVuICsgNTsgLyogZm9yY2UgYSBzdG9yZWQgYmxvY2sgKi9cbiAgfVxuXG4gIGlmICgoc3RvcmVkX2xlbiArIDQgPD0gb3B0X2xlbmIpICYmIChidWYgIT09IC0xKSkge1xuICAgIC8qIDQ6IHR3byB3b3JkcyBmb3IgdGhlIGxlbmd0aHMgKi9cblxuICAgIC8qIFRoZSB0ZXN0IGJ1ZiAhPSBOVUxMIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIExJVF9CVUZTSVpFID4gV1NJWkUuXG4gICAgICogT3RoZXJ3aXNlIHdlIGNhbid0IGhhdmUgcHJvY2Vzc2VkIG1vcmUgdGhhbiBXU0laRSBpbnB1dCBieXRlcyBzaW5jZVxuICAgICAqIHRoZSBsYXN0IGJsb2NrIGZsdXNoLCBiZWNhdXNlIGNvbXByZXNzaW9uIHdvdWxkIGhhdmUgYmVlblxuICAgICAqIHN1Y2Nlc3NmdWwuIElmIExJVF9CVUZTSVpFIDw9IFdTSVpFLCBpdCBpcyBuZXZlciB0b28gbGF0ZSB0b1xuICAgICAqIHRyYW5zZm9ybSBhIGJsb2NrIGludG8gYSBzdG9yZWQgYmxvY2suXG4gICAgICovXG4gICAgX3RyX3N0b3JlZF9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIGxhc3QpO1xuXG4gIH0gZWxzZSBpZiAocy5zdHJhdGVneSA9PT0gWl9GSVhFRCB8fCBzdGF0aWNfbGVuYiA9PT0gb3B0X2xlbmIpIHtcblxuICAgIHNlbmRfYml0cyhzLCAoU1RBVElDX1RSRUVTIDw8IDEpICsgKGxhc3QgPyAxIDogMCksIDMpO1xuICAgIGNvbXByZXNzX2Jsb2NrKHMsIHN0YXRpY19sdHJlZSwgc3RhdGljX2R0cmVlKTtcblxuICB9IGVsc2Uge1xuICAgIHNlbmRfYml0cyhzLCAoRFlOX1RSRUVTIDw8IDEpICsgKGxhc3QgPyAxIDogMCksIDMpO1xuICAgIHNlbmRfYWxsX3RyZWVzKHMsIHMubF9kZXNjLm1heF9jb2RlICsgMSwgcy5kX2Rlc2MubWF4X2NvZGUgKyAxLCBtYXhfYmxpbmRleCArIDEpO1xuICAgIGNvbXByZXNzX2Jsb2NrKHMsIHMuZHluX2x0cmVlLCBzLmR5bl9kdHJlZSk7XG4gIH1cbiAgLy8gQXNzZXJ0IChzLT5jb21wcmVzc2VkX2xlbiA9PSBzLT5iaXRzX3NlbnQsIFwiYmFkIGNvbXByZXNzZWQgc2l6ZVwiKTtcbiAgLyogVGhlIGFib3ZlIGNoZWNrIGlzIG1hZGUgbW9kIDJeMzIsIGZvciBmaWxlcyBsYXJnZXIgdGhhbiA1MTIgTUJcbiAgICogYW5kIHVMb25nIGltcGxlbWVudGVkIG9uIDMyIGJpdHMuXG4gICAqL1xuICBpbml0X2Jsb2NrKHMpO1xuXG4gIGlmIChsYXN0KSB7XG4gICAgYmlfd2luZHVwKHMpO1xuICB9XG4gIC8vIFRyYWNldigoc3RkZXJyLFwiXFxuY29tcHJsZW4gJWx1KCVsdSkgXCIsIHMtPmNvbXByZXNzZWRfbGVuPj4zLFxuICAvLyAgICAgICBzLT5jb21wcmVzc2VkX2xlbi03Kmxhc3QpKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTYXZlIHRoZSBtYXRjaCBpbmZvIGFuZCB0YWxseSB0aGUgZnJlcXVlbmN5IGNvdW50cy4gUmV0dXJuIHRydWUgaWZcbiAqIHRoZSBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZC5cbiAqL1xuZnVuY3Rpb24gX3RyX3RhbGx5KHMsIGRpc3QsIGxjKVxuLy8gICAgZGVmbGF0ZV9zdGF0ZSAqcztcbi8vICAgIHVuc2lnbmVkIGRpc3Q7ICAvKiBkaXN0YW5jZSBvZiBtYXRjaGVkIHN0cmluZyAqL1xuLy8gICAgdW5zaWduZWQgbGM7ICAgIC8qIG1hdGNoIGxlbmd0aC1NSU5fTUFUQ0ggb3IgdW5tYXRjaGVkIGNoYXIgKGlmIGRpc3Q9PTApICovXG57XG4gIC8vdmFyIG91dF9sZW5ndGgsIGluX2xlbmd0aCwgZGNvZGU7XG5cbiAgcy5wZW5kaW5nX2J1ZltzLmRfYnVmICsgcy5sYXN0X2xpdCAqIDJdICAgICA9IChkaXN0ID4+PiA4KSAmIDB4ZmY7XG4gIHMucGVuZGluZ19idWZbcy5kX2J1ZiArIHMubGFzdF9saXQgKiAyICsgMV0gPSBkaXN0ICYgMHhmZjtcblxuICBzLnBlbmRpbmdfYnVmW3MubF9idWYgKyBzLmxhc3RfbGl0XSA9IGxjICYgMHhmZjtcbiAgcy5sYXN0X2xpdCsrO1xuXG4gIGlmIChkaXN0ID09PSAwKSB7XG4gICAgLyogbGMgaXMgdGhlIHVubWF0Y2hlZCBjaGFyICovXG4gICAgcy5keW5fbHRyZWVbbGMgKiAyXS8qLkZyZXEqLysrO1xuICB9IGVsc2Uge1xuICAgIHMubWF0Y2hlcysrO1xuICAgIC8qIEhlcmUsIGxjIGlzIHRoZSBtYXRjaCBsZW5ndGggLSBNSU5fTUFUQ0ggKi9cbiAgICBkaXN0LS07ICAgICAgICAgICAgIC8qIGRpc3QgPSBtYXRjaCBkaXN0YW5jZSAtIDEgKi9cbiAgICAvL0Fzc2VydCgodXNoKWRpc3QgPCAodXNoKU1BWF9ESVNUKHMpICYmXG4gICAgLy8gICAgICAgKHVzaClsYyA8PSAodXNoKShNQVhfTUFUQ0gtTUlOX01BVENIKSAmJlxuICAgIC8vICAgICAgICh1c2gpZF9jb2RlKGRpc3QpIDwgKHVzaClEX0NPREVTLCAgXCJfdHJfdGFsbHk6IGJhZCBtYXRjaFwiKTtcblxuICAgIHMuZHluX2x0cmVlWyhfbGVuZ3RoX2NvZGVbbGNdICsgTElURVJBTFMgKyAxKSAqIDJdLyouRnJlcSovKys7XG4gICAgcy5keW5fZHRyZWVbZF9jb2RlKGRpc3QpICogMl0vKi5GcmVxKi8rKztcbiAgfVxuXG4vLyAoISkgVGhpcyBibG9jayBpcyBkaXNhYmxlZCBpbiB6bGliIGRlZmF1bHRzLFxuLy8gZG9uJ3QgZW5hYmxlIGl0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eVxuXG4vLyNpZmRlZiBUUlVOQ0FURV9CTE9DS1xuLy8gIC8qIFRyeSB0byBndWVzcyBpZiBpdCBpcyBwcm9maXRhYmxlIHRvIHN0b3AgdGhlIGN1cnJlbnQgYmxvY2sgaGVyZSAqL1xuLy8gIGlmICgocy5sYXN0X2xpdCAmIDB4MWZmZikgPT09IDAgJiYgcy5sZXZlbCA+IDIpIHtcbi8vICAgIC8qIENvbXB1dGUgYW4gdXBwZXIgYm91bmQgZm9yIHRoZSBjb21wcmVzc2VkIGxlbmd0aCAqL1xuLy8gICAgb3V0X2xlbmd0aCA9IHMubGFzdF9saXQqODtcbi8vICAgIGluX2xlbmd0aCA9IHMuc3Ryc3RhcnQgLSBzLmJsb2NrX3N0YXJ0O1xuLy9cbi8vICAgIGZvciAoZGNvZGUgPSAwOyBkY29kZSA8IERfQ09ERVM7IGRjb2RlKyspIHtcbi8vICAgICAgb3V0X2xlbmd0aCArPSBzLmR5bl9kdHJlZVtkY29kZSoyXS8qLkZyZXEqLyAqICg1ICsgZXh0cmFfZGJpdHNbZGNvZGVdKTtcbi8vICAgIH1cbi8vICAgIG91dF9sZW5ndGggPj4+PSAzO1xuLy8gICAgLy9UcmFjZXYoKHN0ZGVycixcIlxcbmxhc3RfbGl0ICV1LCBpbiAlbGQsIG91dCB+JWxkKCVsZCUlKSBcIixcbi8vICAgIC8vICAgICAgIHMtPmxhc3RfbGl0LCBpbl9sZW5ndGgsIG91dF9sZW5ndGgsXG4vLyAgICAvLyAgICAgICAxMDBMIC0gb3V0X2xlbmd0aCoxMDBML2luX2xlbmd0aCkpO1xuLy8gICAgaWYgKHMubWF0Y2hlcyA8IChzLmxhc3RfbGl0Pj4xKS8qaW50IC8yKi8gJiYgb3V0X2xlbmd0aCA8IChpbl9sZW5ndGg+PjEpLyppbnQgLzIqLykge1xuLy8gICAgICByZXR1cm4gdHJ1ZTtcbi8vICAgIH1cbi8vICB9XG4vLyNlbmRpZlxuXG4gIHJldHVybiAocy5sYXN0X2xpdCA9PT0gcy5saXRfYnVmc2l6ZSAtIDEpO1xuICAvKiBXZSBhdm9pZCBlcXVhbGl0eSB3aXRoIGxpdF9idWZzaXplIGJlY2F1c2Ugb2Ygd3JhcGFyb3VuZCBhdCA2NEtcbiAgICogb24gMTYgYml0IG1hY2hpbmVzIGFuZCBiZWNhdXNlIHN0b3JlZCBibG9ja3MgYXJlIHJlc3RyaWN0ZWQgdG9cbiAgICogNjRLLTEgYnl0ZXMuXG4gICAqL1xufVxuXG5leHBvcnRzLl90cl9pbml0ICA9IF90cl9pbml0O1xuZXhwb3J0cy5fdHJfc3RvcmVkX2Jsb2NrID0gX3RyX3N0b3JlZF9ibG9jaztcbmV4cG9ydHMuX3RyX2ZsdXNoX2Jsb2NrICA9IF90cl9mbHVzaF9ibG9jaztcbmV4cG9ydHMuX3RyX3RhbGx5ID0gX3RyX3RhbGx5O1xuZXhwb3J0cy5fdHJfYWxpZ24gPSBfdHJfYWxpZ247XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxuZnVuY3Rpb24gWlN0cmVhbSgpIHtcbiAgLyogbmV4dCBpbnB1dCBieXRlICovXG4gIHRoaXMuaW5wdXQgPSBudWxsOyAvLyBKUyBzcGVjaWZpYywgYmVjYXVzZSB3ZSBoYXZlIG5vIHBvaW50ZXJzXG4gIHRoaXMubmV4dF9pbiA9IDA7XG4gIC8qIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUgYXQgaW5wdXQgKi9cbiAgdGhpcy5hdmFpbF9pbiA9IDA7XG4gIC8qIHRvdGFsIG51bWJlciBvZiBpbnB1dCBieXRlcyByZWFkIHNvIGZhciAqL1xuICB0aGlzLnRvdGFsX2luID0gMDtcbiAgLyogbmV4dCBvdXRwdXQgYnl0ZSBzaG91bGQgYmUgcHV0IHRoZXJlICovXG4gIHRoaXMub3V0cHV0ID0gbnVsbDsgLy8gSlMgc3BlY2lmaWMsIGJlY2F1c2Ugd2UgaGF2ZSBubyBwb2ludGVyc1xuICB0aGlzLm5leHRfb3V0ID0gMDtcbiAgLyogcmVtYWluaW5nIGZyZWUgc3BhY2UgYXQgb3V0cHV0ICovXG4gIHRoaXMuYXZhaWxfb3V0ID0gMDtcbiAgLyogdG90YWwgbnVtYmVyIG9mIGJ5dGVzIG91dHB1dCBzbyBmYXIgKi9cbiAgdGhpcy50b3RhbF9vdXQgPSAwO1xuICAvKiBsYXN0IGVycm9yIG1lc3NhZ2UsIE5VTEwgaWYgbm8gZXJyb3IgKi9cbiAgdGhpcy5tc2cgPSAnJy8qWl9OVUxMKi87XG4gIC8qIG5vdCB2aXNpYmxlIGJ5IGFwcGxpY2F0aW9ucyAqL1xuICB0aGlzLnN0YXRlID0gbnVsbDtcbiAgLyogYmVzdCBndWVzcyBhYm91dCB0aGUgZGF0YSB0eXBlOiBiaW5hcnkgb3IgdGV4dCAqL1xuICB0aGlzLmRhdGFfdHlwZSA9IDIvKlpfVU5LTk9XTiovO1xuICAvKiBhZGxlcjMyIHZhbHVlIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSAqL1xuICB0aGlzLmFkbGVyID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBaU3RyZWFtO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4b3IgKGEsIGIpIHtcbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aClcbiAgdmFyIGJ1ZmZlciA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBidWZmZXJbaV0gPSBhW2ldIF4gYltpXVxuICB9XG5cbiAgcmV0dXJuIGJ1ZmZlclxufVxuIiwiLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuXG4ndXNlIHN0cmljdCdcblxuY29uc3QgYmFzZTY0ID0gcmVxdWlyZSgnYmFzZTY0LWpzJylcbmNvbnN0IGllZWU3NTQgPSByZXF1aXJlKCdpZWVlNzU0JylcbmNvbnN0IGN1c3RvbUluc3BlY3RTeW1ib2wgPVxuICAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgU3ltYm9sWydmb3InXSA9PT0gJ2Z1bmN0aW9uJykgLy8gZXNsaW50LWRpc2FibGUtbGluZSBkb3Qtbm90YXRpb25cbiAgICA/IFN5bWJvbFsnZm9yJ10oJ25vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tJykgLy8gZXNsaW50LWRpc2FibGUtbGluZSBkb3Qtbm90YXRpb25cbiAgICA6IG51bGxcblxuZXhwb3J0cy5CdWZmZXIgPSBCdWZmZXJcbmV4cG9ydHMuU2xvd0J1ZmZlciA9IFNsb3dCdWZmZXJcbmV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVMgPSA1MFxuXG5jb25zdCBLX01BWF9MRU5HVEggPSAweDdmZmZmZmZmXG5leHBvcnRzLmtNYXhMZW5ndGggPSBLX01BWF9MRU5HVEhcblxuLyoqXG4gKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOlxuICogICA9PT0gdHJ1ZSAgICBVc2UgVWludDhBcnJheSBpbXBsZW1lbnRhdGlvbiAoZmFzdGVzdClcbiAqICAgPT09IGZhbHNlICAgUHJpbnQgd2FybmluZyBhbmQgcmVjb21tZW5kIHVzaW5nIGBidWZmZXJgIHY0Lnggd2hpY2ggaGFzIGFuIE9iamVjdFxuICogICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiAobW9zdCBjb21wYXRpYmxlLCBldmVuIElFNilcbiAqXG4gKiBCcm93c2VycyB0aGF0IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGFyZSBJRSAxMCssIEZpcmVmb3ggNCssIENocm9tZSA3KywgU2FmYXJpIDUuMSssXG4gKiBPcGVyYSAxMS42KywgaU9TIDQuMisuXG4gKlxuICogV2UgcmVwb3J0IHRoYXQgdGhlIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCB0eXBlZCBhcnJheXMgaWYgdGhlIGFyZSBub3Qgc3ViY2xhc3NhYmxlXG4gKiB1c2luZyBfX3Byb3RvX18uIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgXG4gKiAoU2VlOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02OTU0MzgpLiBJRSAxMCBsYWNrcyBzdXBwb3J0XG4gKiBmb3IgX19wcm90b19fIGFuZCBoYXMgYSBidWdneSB0eXBlZCBhcnJheSBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgPSB0eXBlZEFycmF5U3VwcG9ydCgpXG5cbmlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgY29uc29sZS5lcnJvcihcbiAgICAnVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5ICcgK1xuICAgICdgYnVmZmVyYCB2NS54LiBVc2UgYGJ1ZmZlcmAgdjQueCBpZiB5b3UgcmVxdWlyZSBvbGQgYnJvd3NlciBzdXBwb3J0LidcbiAgKVxufVxuXG5mdW5jdGlvbiB0eXBlZEFycmF5U3VwcG9ydCAoKSB7XG4gIC8vIENhbiB0eXBlZCBhcnJheSBpbnN0YW5jZXMgY2FuIGJlIGF1Z21lbnRlZD9cbiAgdHJ5IHtcbiAgICBjb25zdCBhcnIgPSBuZXcgVWludDhBcnJheSgxKVxuICAgIGNvbnN0IHByb3RvID0geyBmb286IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDQyIH0gfVxuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihwcm90bywgVWludDhBcnJheS5wcm90b3R5cGUpXG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGFyciwgcHJvdG8pXG4gICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDJcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIucHJvdG90eXBlLCAncGFyZW50Jywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0aGlzKSkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB0aGlzLmJ1ZmZlclxuICB9XG59KVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoQnVmZmVyLnByb3RvdHlwZSwgJ29mZnNldCcsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGhpcykpIHJldHVybiB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpcy5ieXRlT2Zmc2V0XG4gIH1cbn0pXG5cbmZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlciAobGVuZ3RoKSB7XG4gIGlmIChsZW5ndGggPiBLX01BWF9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIFwiJyArIGxlbmd0aCArICdcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKVxuICB9XG4gIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlXG4gIGNvbnN0IGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbmd0aClcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGJ1ZiwgQnVmZmVyLnByb3RvdHlwZSlcbiAgcmV0dXJuIGJ1ZlxufVxuXG4vKipcbiAqIFRoZSBCdWZmZXIgY29uc3RydWN0b3IgcmV0dXJucyBpbnN0YW5jZXMgb2YgYFVpbnQ4QXJyYXlgIHRoYXQgaGF2ZSB0aGVpclxuICogcHJvdG90eXBlIGNoYW5nZWQgdG8gYEJ1ZmZlci5wcm90b3R5cGVgLiBGdXJ0aGVybW9yZSwgYEJ1ZmZlcmAgaXMgYSBzdWJjbGFzcyBvZlxuICogYFVpbnQ4QXJyYXlgLCBzbyB0aGUgcmV0dXJuZWQgaW5zdGFuY2VzIHdpbGwgaGF2ZSBhbGwgdGhlIG5vZGUgYEJ1ZmZlcmAgbWV0aG9kc1xuICogYW5kIHRoZSBgVWludDhBcnJheWAgbWV0aG9kcy4gU3F1YXJlIGJyYWNrZXQgbm90YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgLS0gaXRcbiAqIHJldHVybnMgYSBzaW5nbGUgb2N0ZXQuXG4gKlxuICogVGhlIGBVaW50OEFycmF5YCBwcm90b3R5cGUgcmVtYWlucyB1bm1vZGlmaWVkLlxuICovXG5cbmZ1bmN0aW9uIEJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgLy8gQ29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmdPck9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICdUaGUgXCJzdHJpbmdcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLiBSZWNlaXZlZCB0eXBlIG51bWJlcidcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGFsbG9jVW5zYWZlKGFyZylcbiAgfVxuICByZXR1cm4gZnJvbShhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnBvb2xTaXplID0gODE5MiAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uXG5cbmZ1bmN0aW9uIGZyb20gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZnJvbVN0cmluZyh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldClcbiAgfVxuXG4gIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheVZpZXcodmFsdWUpXG4gIH1cblxuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgJyArXG4gICAgICAnb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJyArICh0eXBlb2YgdmFsdWUpXG4gICAgKVxuICB9XG5cbiAgaWYgKGlzSW5zdGFuY2UodmFsdWUsIEFycmF5QnVmZmVyKSB8fFxuICAgICAgKHZhbHVlICYmIGlzSW5zdGFuY2UodmFsdWUuYnVmZmVyLCBBcnJheUJ1ZmZlcikpKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIChpc0luc3RhbmNlKHZhbHVlLCBTaGFyZWRBcnJheUJ1ZmZlcikgfHxcbiAgICAgICh2YWx1ZSAmJiBpc0luc3RhbmNlKHZhbHVlLmJ1ZmZlciwgU2hhcmVkQXJyYXlCdWZmZXIpKSkpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIFwidmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInXG4gICAgKVxuICB9XG5cbiAgY29uc3QgdmFsdWVPZiA9IHZhbHVlLnZhbHVlT2YgJiYgdmFsdWUudmFsdWVPZigpXG4gIGlmICh2YWx1ZU9mICE9IG51bGwgJiYgdmFsdWVPZiAhPT0gdmFsdWUpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWVPZiwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgY29uc3QgYiA9IGZyb21PYmplY3QodmFsdWUpXG4gIGlmIChiKSByZXR1cm4gYlxuXG4gIGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9QcmltaXRpdmUgIT0gbnVsbCAmJlxuICAgICAgdHlwZW9mIHZhbHVlW1N5bWJvbC50b1ByaW1pdGl2ZV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWVbU3ltYm9sLnRvUHJpbWl0aXZlXSgnc3RyaW5nJyksIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgJ1RoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksICcgK1xuICAgICdvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnICsgKHR5cGVvZiB2YWx1ZSlcbiAgKVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIEJ1ZmZlcihhcmcsIGVuY29kaW5nKSBidXQgdGhyb3dzIGEgVHlwZUVycm9yXG4gKiBpZiB2YWx1ZSBpcyBhIG51bWJlci5cbiAqIEJ1ZmZlci5mcm9tKHN0clssIGVuY29kaW5nXSlcbiAqIEJ1ZmZlci5mcm9tKGFycmF5KVxuICogQnVmZmVyLmZyb20oYnVmZmVyKVxuICogQnVmZmVyLmZyb20oYXJyYXlCdWZmZXJbLCBieXRlT2Zmc2V0WywgbGVuZ3RoXV0pXG4gKiovXG5CdWZmZXIuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBmcm9tKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbi8vIE5vdGU6IENoYW5nZSBwcm90b3R5cGUgKmFmdGVyKiBCdWZmZXIuZnJvbSBpcyBkZWZpbmVkIHRvIHdvcmthcm91bmQgQ2hyb21lIGJ1Zzpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL3B1bGwvMTQ4XG5PYmplY3Quc2V0UHJvdG90eXBlT2YoQnVmZmVyLnByb3RvdHlwZSwgVWludDhBcnJheS5wcm90b3R5cGUpXG5PYmplY3Quc2V0UHJvdG90eXBlT2YoQnVmZmVyLCBVaW50OEFycmF5KVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyJylcbiAgfSBlbHNlIGlmIChzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInICsgc2l6ZSArICdcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFsbG9jIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIGlmIChzaXplIDw9IDApIHtcbiAgICByZXR1cm4gY3JlYXRlQnVmZmVyKHNpemUpXG4gIH1cbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE9ubHkgcGF5IGF0dGVudGlvbiB0byBlbmNvZGluZyBpZiBpdCdzIGEgc3RyaW5nLiBUaGlzXG4gICAgLy8gcHJldmVudHMgYWNjaWRlbnRhbGx5IHNlbmRpbmcgaW4gYSBudW1iZXIgdGhhdCB3b3VsZFxuICAgIC8vIGJlIGludGVycHJldGVkIGFzIGEgc3RhcnQgb2Zmc2V0LlxuICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnXG4gICAgICA/IGNyZWF0ZUJ1ZmZlcihzaXplKS5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgICAgOiBjcmVhdGVCdWZmZXIoc2l6ZSkuZmlsbChmaWxsKVxuICB9XG4gIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pXG4gKiovXG5CdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGFsbG9jKHNpemUsIGZpbGwsIGVuY29kaW5nKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAoc2l6ZSkge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSA8IDAgPyAwIDogY2hlY2tlZChzaXplKSB8IDApXG59XG5cbi8qKlxuICogRXF1aXZhbGVudCB0byBCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqICovXG5CdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUoc2l6ZSlcbn1cbi8qKlxuICogRXF1aXZhbGVudCB0byBTbG93QnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUoc2l6ZSlcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJyB8fCBlbmNvZGluZyA9PT0gJycpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICB9XG5cbiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gIH1cblxuICBjb25zdCBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZywgZW5jb2RpbmcpIHwgMFxuICBsZXQgYnVmID0gY3JlYXRlQnVmZmVyKGxlbmd0aClcblxuICBjb25zdCBhY3R1YWwgPSBidWYud3JpdGUoc3RyaW5nLCBlbmNvZGluZylcblxuICBpZiAoYWN0dWFsICE9PSBsZW5ndGgpIHtcbiAgICAvLyBXcml0aW5nIGEgaGV4IHN0cmluZywgZm9yIGV4YW1wbGUsIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpbGxcbiAgICAvLyBjYXVzZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCBpbnZhbGlkIGNoYXJhY3RlciB0byBiZSBpZ25vcmVkLiAoZS5nLlxuICAgIC8vICdhYnh4Y2QnIHdpbGwgYmUgdHJlYXRlZCBhcyAnYWInKVxuICAgIGJ1ZiA9IGJ1Zi5zbGljZSgwLCBhY3R1YWwpXG4gIH1cblxuICByZXR1cm4gYnVmXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUxpa2UgKGFycmF5KSB7XG4gIGNvbnN0IGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICBjb25zdCBidWYgPSBjcmVhdGVCdWZmZXIobGVuZ3RoKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgYnVmW2ldID0gYXJyYXlbaV0gJiAyNTVcbiAgfVxuICByZXR1cm4gYnVmXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheVZpZXcgKGFycmF5Vmlldykge1xuICBpZiAoaXNJbnN0YW5jZShhcnJheVZpZXcsIFVpbnQ4QXJyYXkpKSB7XG4gICAgY29uc3QgY29weSA9IG5ldyBVaW50OEFycmF5KGFycmF5VmlldylcbiAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKGNvcHkuYnVmZmVyLCBjb3B5LmJ5dGVPZmZzZXQsIGNvcHkuYnl0ZUxlbmd0aClcbiAgfVxuICByZXR1cm4gZnJvbUFycmF5TGlrZShhcnJheVZpZXcpXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlciAoYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAoYnl0ZU9mZnNldCA8IDAgfHwgYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJvZmZzZXRcIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0ICsgKGxlbmd0aCB8fCAwKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcImxlbmd0aFwiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBsZXQgYnVmXG4gIGlmIChieXRlT2Zmc2V0ID09PSB1bmRlZmluZWQgJiYgbGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBidWYgPSBuZXcgVWludDhBcnJheShhcnJheSlcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0KVxuICB9IGVsc2Uge1xuICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZVxuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoYnVmLCBCdWZmZXIucHJvdG90eXBlKVxuXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbU9iamVjdCAob2JqKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIob2JqKSkge1xuICAgIGNvbnN0IGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwXG4gICAgY29uc3QgYnVmID0gY3JlYXRlQnVmZmVyKGxlbilcblxuICAgIGlmIChidWYubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gYnVmXG4gICAgfVxuXG4gICAgb2JqLmNvcHkoYnVmLCAwLCAwLCBsZW4pXG4gICAgcmV0dXJuIGJ1ZlxuICB9XG5cbiAgaWYgKG9iai5sZW5ndGggIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2Ygb2JqLmxlbmd0aCAhPT0gJ251bWJlcicgfHwgbnVtYmVySXNOYU4ob2JqLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBjcmVhdGVCdWZmZXIoMClcbiAgICB9XG4gICAgcmV0dXJuIGZyb21BcnJheUxpa2Uob2JqKVxuICB9XG5cbiAgaWYgKG9iai50eXBlID09PSAnQnVmZmVyJyAmJiBBcnJheS5pc0FycmF5KG9iai5kYXRhKSkge1xuICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKG9iai5kYXRhKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrZWQgKGxlbmd0aCkge1xuICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBLX01BWF9MRU5HVEhgIGhlcmUgYmVjYXVzZSB0aGF0IGZhaWxzIHdoZW5cbiAgLy8gbGVuZ3RoIGlzIE5hTiAod2hpY2ggaXMgb3RoZXJ3aXNlIGNvZXJjZWQgdG8gemVyby4pXG4gIGlmIChsZW5ndGggPj0gS19NQVhfTEVOR1RIKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemU6IDB4JyArIEtfTUFYX0xFTkdUSC50b1N0cmluZygxNikgKyAnIGJ5dGVzJylcbiAgfVxuICByZXR1cm4gbGVuZ3RoIHwgMFxufVxuXG5mdW5jdGlvbiBTbG93QnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKCtsZW5ndGggIT0gbGVuZ3RoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgbGVuZ3RoID0gMFxuICB9XG4gIHJldHVybiBCdWZmZXIuYWxsb2MoK2xlbmd0aClcbn1cblxuQnVmZmVyLmlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIgKGIpIHtcbiAgcmV0dXJuIGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlciA9PT0gdHJ1ZSAmJlxuICAgIGIgIT09IEJ1ZmZlci5wcm90b3R5cGUgLy8gc28gQnVmZmVyLmlzQnVmZmVyKEJ1ZmZlci5wcm90b3R5cGUpIHdpbGwgYmUgZmFsc2Vcbn1cblxuQnVmZmVyLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGlmIChpc0luc3RhbmNlKGEsIFVpbnQ4QXJyYXkpKSBhID0gQnVmZmVyLmZyb20oYSwgYS5vZmZzZXQsIGEuYnl0ZUxlbmd0aClcbiAgaWYgKGlzSW5zdGFuY2UoYiwgVWludDhBcnJheSkpIGIgPSBCdWZmZXIuZnJvbShiLCBiLm9mZnNldCwgYi5ieXRlTGVuZ3RoKVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihhKSB8fCAhQnVmZmVyLmlzQnVmZmVyKGIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJidWYxXCIsIFwiYnVmMlwiIGFyZ3VtZW50cyBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5J1xuICAgIClcbiAgfVxuXG4gIGlmIChhID09PSBiKSByZXR1cm4gMFxuXG4gIGxldCB4ID0gYS5sZW5ndGhcbiAgbGV0IHkgPSBiLmxlbmd0aFxuXG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgIHggPSBhW2ldXG4gICAgICB5ID0gYltpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbkJ1ZmZlci5pc0VuY29kaW5nID0gZnVuY3Rpb24gaXNFbmNvZGluZyAoZW5jb2RpbmcpIHtcbiAgc3dpdGNoIChTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOlxuICAgIGNhc2UgJ3V0ZjgnOlxuICAgIGNhc2UgJ3V0Zi04JzpcbiAgICBjYXNlICdhc2NpaSc6XG4gICAgY2FzZSAnbGF0aW4xJzpcbiAgICBjYXNlICdiaW5hcnknOlxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgY2FzZSAndWNzMic6XG4gICAgY2FzZSAndWNzLTInOlxuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgIHJldHVybiB0cnVlXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbkJ1ZmZlci5jb25jYXQgPSBmdW5jdGlvbiBjb25jYXQgKGxpc3QsIGxlbmd0aCkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKVxuICB9XG5cbiAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKVxuICB9XG5cbiAgbGV0IGlcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuZ3RoID0gMFxuICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgICBsZW5ndGggKz0gbGlzdFtpXS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUobGVuZ3RoKVxuICBsZXQgcG9zID0gMFxuICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgIGxldCBidWYgPSBsaXN0W2ldXG4gICAgaWYgKGlzSW5zdGFuY2UoYnVmLCBVaW50OEFycmF5KSkge1xuICAgICAgaWYgKHBvcyArIGJ1Zi5sZW5ndGggPiBidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIGJ1ZiA9IEJ1ZmZlci5mcm9tKGJ1ZilcbiAgICAgICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChcbiAgICAgICAgICBidWZmZXIsXG4gICAgICAgICAgYnVmLFxuICAgICAgICAgIHBvc1xuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Zi5jb3B5KGJ1ZmZlciwgcG9zKVxuICAgIH1cbiAgICBwb3MgKz0gYnVmLmxlbmd0aFxuICB9XG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHN0cmluZykpIHtcbiAgICByZXR1cm4gc3RyaW5nLmxlbmd0aFxuICB9XG4gIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcoc3RyaW5nKSB8fCBpc0luc3RhbmNlKHN0cmluZywgQXJyYXlCdWZmZXIpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5ieXRlTGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJzdHJpbmdcIiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBvciBBcnJheUJ1ZmZlci4gJyArXG4gICAgICAnUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIHN0cmluZ1xuICAgIClcbiAgfVxuXG4gIGNvbnN0IGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgY29uc3QgbXVzdE1hdGNoID0gKGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSA9PT0gdHJ1ZSlcbiAgaWYgKCFtdXN0TWF0Y2ggJiYgbGVuID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIFVzZSBhIGZvciBsb29wIHRvIGF2b2lkIHJlY3Vyc2lvblxuICBsZXQgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiBsZW4gKiAyXG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gbGVuID4+PiAxXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB7XG4gICAgICAgICAgcmV0dXJuIG11c3RNYXRjaCA/IC0xIDogdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGggLy8gYXNzdW1lIHV0ZjhcbiAgICAgICAgfVxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuQnVmZmVyLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5cbmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgbGV0IGxvd2VyZWRDYXNlID0gZmFsc2VcblxuICAvLyBObyBuZWVkIHRvIHZlcmlmeSB0aGF0IFwidGhpcy5sZW5ndGggPD0gTUFYX1VJTlQzMlwiIHNpbmNlIGl0J3MgYSByZWFkLW9ubHlcbiAgLy8gcHJvcGVydHkgb2YgYSB0eXBlZCBhcnJheS5cblxuICAvLyBUaGlzIGJlaGF2ZXMgbmVpdGhlciBsaWtlIFN0cmluZyBub3IgVWludDhBcnJheSBpbiB0aGF0IHdlIHNldCBzdGFydC9lbmRcbiAgLy8gdG8gdGhlaXIgdXBwZXIvbG93ZXIgYm91bmRzIGlmIHRoZSB2YWx1ZSBwYXNzZWQgaXMgb3V0IG9mIHJhbmdlLlxuICAvLyB1bmRlZmluZWQgaXMgaGFuZGxlZCBzcGVjaWFsbHkgYXMgcGVyIEVDTUEtMjYyIDZ0aCBFZGl0aW9uLFxuICAvLyBTZWN0aW9uIDEzLjMuMy43IFJ1bnRpbWUgU2VtYW50aWNzOiBLZXllZEJpbmRpbmdJbml0aWFsaXphdGlvbi5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQgfHwgc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgLy8gUmV0dXJuIGVhcmx5IGlmIHN0YXJ0ID4gdGhpcy5sZW5ndGguIERvbmUgaGVyZSB0byBwcmV2ZW50IHBvdGVudGlhbCB1aW50MzJcbiAgLy8gY29lcmNpb24gZmFpbCBiZWxvdy5cbiAgaWYgKHN0YXJ0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoZW5kIDw9IDApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIEZvcmNlIGNvZXJjaW9uIHRvIHVpbnQzMi4gVGhpcyB3aWxsIGFsc28gY29lcmNlIGZhbHNleS9OYU4gdmFsdWVzIHRvIDAuXG4gIGVuZCA+Pj49IDBcbiAgc3RhcnQgPj4+PSAwXG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1dGYxNmxlU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbi8vIFRoaXMgcHJvcGVydHkgaXMgdXNlZCBieSBgQnVmZmVyLmlzQnVmZmVyYCAoYW5kIHRoZSBgaXMtYnVmZmVyYCBucG0gcGFja2FnZSlcbi8vIHRvIGRldGVjdCBhIEJ1ZmZlciBpbnN0YW5jZS4gSXQncyBub3QgcG9zc2libGUgdG8gdXNlIGBpbnN0YW5jZW9mIEJ1ZmZlcmBcbi8vIHJlbGlhYmx5IGluIGEgYnJvd3NlcmlmeSBjb250ZXh0IGJlY2F1c2UgdGhlcmUgY291bGQgYmUgbXVsdGlwbGUgZGlmZmVyZW50XG4vLyBjb3BpZXMgb2YgdGhlICdidWZmZXInIHBhY2thZ2UgaW4gdXNlLiBUaGlzIG1ldGhvZCB3b3JrcyBldmVuIGZvciBCdWZmZXJcbi8vIGluc3RhbmNlcyB0aGF0IHdlcmUgY3JlYXRlZCBmcm9tIGFub3RoZXIgY29weSBvZiB0aGUgYGJ1ZmZlcmAgcGFja2FnZS5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvaXNzdWVzLzE1NFxuQnVmZmVyLnByb3RvdHlwZS5faXNCdWZmZXIgPSB0cnVlXG5cbmZ1bmN0aW9uIHN3YXAgKGIsIG4sIG0pIHtcbiAgY29uc3QgaSA9IGJbbl1cbiAgYltuXSA9IGJbbV1cbiAgYlttXSA9IGlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMTYgPSBmdW5jdGlvbiBzd2FwMTYgKCkge1xuICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgMiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cycpXG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMikge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDEpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMzIgPSBmdW5jdGlvbiBzd2FwMzIgKCkge1xuICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgNCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpXG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDMpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDIpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwNjQgPSBmdW5jdGlvbiBzd2FwNjQgKCkge1xuICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgOCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cycpXG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gOCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDcpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDYpXG4gICAgc3dhcCh0aGlzLCBpICsgMiwgaSArIDUpXG4gICAgc3dhcCh0aGlzLCBpICsgMywgaSArIDQpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nICgpIHtcbiAgY29uc3QgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcgPSBCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nXG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgaWYgKHRoaXMgPT09IGIpIHJldHVybiB0cnVlXG4gIHJldHVybiBCdWZmZXIuY29tcGFyZSh0aGlzLCBiKSA9PT0gMFxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgbGV0IHN0ciA9ICcnXG4gIGNvbnN0IG1heCA9IGV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVNcbiAgc3RyID0gdGhpcy50b1N0cmluZygnaGV4JywgMCwgbWF4KS5yZXBsYWNlKC8oLnsyfSkvZywgJyQxICcpLnRyaW0oKVxuICBpZiAodGhpcy5sZW5ndGggPiBtYXgpIHN0ciArPSAnIC4uLiAnXG4gIHJldHVybiAnPEJ1ZmZlciAnICsgc3RyICsgJz4nXG59XG5pZiAoY3VzdG9tSW5zcGVjdFN5bWJvbCkge1xuICBCdWZmZXIucHJvdG90eXBlW2N1c3RvbUluc3BlY3RTeW1ib2xdID0gQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKHRhcmdldCwgc3RhcnQsIGVuZCwgdGhpc1N0YXJ0LCB0aGlzRW5kKSB7XG4gIGlmIChpc0luc3RhbmNlKHRhcmdldCwgVWludDhBcnJheSkpIHtcbiAgICB0YXJnZXQgPSBCdWZmZXIuZnJvbSh0YXJnZXQsIHRhcmdldC5vZmZzZXQsIHRhcmdldC5ieXRlTGVuZ3RoKVxuICB9XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHRhcmdldCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcInRhcmdldFwiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXkuICcgK1xuICAgICAgJ1JlY2VpdmVkIHR5cGUgJyArICh0eXBlb2YgdGFyZ2V0KVxuICAgIClcbiAgfVxuXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5kID0gdGFyZ2V0ID8gdGFyZ2V0Lmxlbmd0aCA6IDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzU3RhcnQgPSAwXG4gIH1cbiAgaWYgKHRoaXNFbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNFbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKHN0YXJ0IDwgMCB8fCBlbmQgPiB0YXJnZXQubGVuZ3RoIHx8IHRoaXNTdGFydCA8IDAgfHwgdGhpc0VuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ291dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQgJiYgc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQpIHtcbiAgICByZXR1cm4gLTFcbiAgfVxuICBpZiAoc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuXG4gIHN0YXJ0ID4+Pj0gMFxuICBlbmQgPj4+PSAwXG4gIHRoaXNTdGFydCA+Pj49IDBcbiAgdGhpc0VuZCA+Pj49IDBcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0KSByZXR1cm4gMFxuXG4gIGxldCB4ID0gdGhpc0VuZCAtIHRoaXNTdGFydFxuICBsZXQgeSA9IGVuZCAtIHN0YXJ0XG4gIGNvbnN0IGxlbiA9IE1hdGgubWluKHgsIHkpXG5cbiAgY29uc3QgdGhpc0NvcHkgPSB0aGlzLnNsaWNlKHRoaXNTdGFydCwgdGhpc0VuZClcbiAgY29uc3QgdGFyZ2V0Q29weSA9IHRhcmdldC5zbGljZShzdGFydCwgZW5kKVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAodGhpc0NvcHlbaV0gIT09IHRhcmdldENvcHlbaV0pIHtcbiAgICAgIHggPSB0aGlzQ29weVtpXVxuICAgICAgeSA9IHRhcmdldENvcHlbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG4vLyBGaW5kcyBlaXRoZXIgdGhlIGZpcnN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA+PSBgYnl0ZU9mZnNldGAsXG4vLyBPUiB0aGUgbGFzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPD0gYGJ5dGVPZmZzZXRgLlxuLy9cbi8vIEFyZ3VtZW50czpcbi8vIC0gYnVmZmVyIC0gYSBCdWZmZXIgdG8gc2VhcmNoXG4vLyAtIHZhbCAtIGEgc3RyaW5nLCBCdWZmZXIsIG9yIG51bWJlclxuLy8gLSBieXRlT2Zmc2V0IC0gYW4gaW5kZXggaW50byBgYnVmZmVyYDsgd2lsbCBiZSBjbGFtcGVkIHRvIGFuIGludDMyXG4vLyAtIGVuY29kaW5nIC0gYW4gb3B0aW9uYWwgZW5jb2RpbmcsIHJlbGV2YW50IGlzIHZhbCBpcyBhIHN0cmluZ1xuLy8gLSBkaXIgLSB0cnVlIGZvciBpbmRleE9mLCBmYWxzZSBmb3IgbGFzdEluZGV4T2ZcbmZ1bmN0aW9uIGJpZGlyZWN0aW9uYWxJbmRleE9mIChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICAvLyBFbXB0eSBidWZmZXIgbWVhbnMgbm8gbWF0Y2hcbiAgaWYgKGJ1ZmZlci5sZW5ndGggPT09IDApIHJldHVybiAtMVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0XG4gIGlmICh0eXBlb2YgYnl0ZU9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IGJ5dGVPZmZzZXRcbiAgICBieXRlT2Zmc2V0ID0gMFxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPiAweDdmZmZmZmZmKSB7XG4gICAgYnl0ZU9mZnNldCA9IDB4N2ZmZmZmZmZcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgLTB4ODAwMDAwMDApIHtcbiAgICBieXRlT2Zmc2V0ID0gLTB4ODAwMDAwMDBcbiAgfVxuICBieXRlT2Zmc2V0ID0gK2J5dGVPZmZzZXQgLy8gQ29lcmNlIHRvIE51bWJlci5cbiAgaWYgKG51bWJlcklzTmFOKGJ5dGVPZmZzZXQpKSB7XG4gICAgLy8gYnl0ZU9mZnNldDogaXQgaXQncyB1bmRlZmluZWQsIG51bGwsIE5hTiwgXCJmb29cIiwgZXRjLCBzZWFyY2ggd2hvbGUgYnVmZmVyXG4gICAgYnl0ZU9mZnNldCA9IGRpciA/IDAgOiAoYnVmZmVyLmxlbmd0aCAtIDEpXG4gIH1cblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldDogbmVnYXRpdmUgb2Zmc2V0cyBzdGFydCBmcm9tIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlclxuICBpZiAoYnl0ZU9mZnNldCA8IDApIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoICsgYnl0ZU9mZnNldFxuICBpZiAoYnl0ZU9mZnNldCA+PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgaWYgKGRpcikgcmV0dXJuIC0xXG4gICAgZWxzZSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCAtIDFcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgMCkge1xuICAgIGlmIChkaXIpIGJ5dGVPZmZzZXQgPSAwXG4gICAgZWxzZSByZXR1cm4gLTFcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSB2YWxcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsID0gQnVmZmVyLmZyb20odmFsLCBlbmNvZGluZylcbiAgfVxuXG4gIC8vIEZpbmFsbHksIHNlYXJjaCBlaXRoZXIgaW5kZXhPZiAoaWYgZGlyIGlzIHRydWUpIG9yIGxhc3RJbmRleE9mXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nL2J1ZmZlciBhbHdheXMgZmFpbHNcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAweEZGIC8vIFNlYXJjaCBmb3IgYSBieXRlIHZhbHVlIFswLTI1NV1cbiAgICBpZiAodHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgW3ZhbF0sIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXInKVxufVxuXG5mdW5jdGlvbiBhcnJheUluZGV4T2YgKGFyciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIGxldCBpbmRleFNpemUgPSAxXG4gIGxldCBhcnJMZW5ndGggPSBhcnIubGVuZ3RoXG4gIGxldCB2YWxMZW5ndGggPSB2YWwubGVuZ3RoXG5cbiAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9IFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgIGlmIChlbmNvZGluZyA9PT0gJ3VjczInIHx8IGVuY29kaW5nID09PSAndWNzLTInIHx8XG4gICAgICAgIGVuY29kaW5nID09PSAndXRmMTZsZScgfHwgZW5jb2RpbmcgPT09ICd1dGYtMTZsZScpIHtcbiAgICAgIGlmIChhcnIubGVuZ3RoIDwgMiB8fCB2YWwubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gLTFcbiAgICAgIH1cbiAgICAgIGluZGV4U2l6ZSA9IDJcbiAgICAgIGFyckxlbmd0aCAvPSAyXG4gICAgICB2YWxMZW5ndGggLz0gMlxuICAgICAgYnl0ZU9mZnNldCAvPSAyXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZCAoYnVmLCBpKSB7XG4gICAgaWYgKGluZGV4U2l6ZSA9PT0gMSkge1xuICAgICAgcmV0dXJuIGJ1ZltpXVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYnVmLnJlYWRVSW50MTZCRShpICogaW5kZXhTaXplKVxuICAgIH1cbiAgfVxuXG4gIGxldCBpXG4gIGlmIChkaXIpIHtcbiAgICBsZXQgZm91bmRJbmRleCA9IC0xXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA8IGFyckxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocmVhZChhcnIsIGkpID09PSByZWFkKHZhbCwgZm91bmRJbmRleCA9PT0gLTEgPyAwIDogaSAtIGZvdW5kSW5kZXgpKSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ID09PSAtMSkgZm91bmRJbmRleCA9IGlcbiAgICAgICAgaWYgKGkgLSBmb3VuZEluZGV4ICsgMSA9PT0gdmFsTGVuZ3RoKSByZXR1cm4gZm91bmRJbmRleCAqIGluZGV4U2l6ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggIT09IC0xKSBpIC09IGkgLSBmb3VuZEluZGV4XG4gICAgICAgIGZvdW5kSW5kZXggPSAtMVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoYnl0ZU9mZnNldCArIHZhbExlbmd0aCA+IGFyckxlbmd0aCkgYnl0ZU9mZnNldCA9IGFyckxlbmd0aCAtIHZhbExlbmd0aFxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgZm91bmQgPSB0cnVlXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHZhbExlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChyZWFkKGFyciwgaSArIGopICE9PSByZWFkKHZhbCwgaikpIHtcbiAgICAgICAgICBmb3VuZCA9IGZhbHNlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gaVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIHRoaXMuaW5kZXhPZih2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSAhPT0gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgdHJ1ZSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5sYXN0SW5kZXhPZiA9IGZ1bmN0aW9uIGxhc3RJbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmYWxzZSlcbn1cblxuZnVuY3Rpb24gaGV4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICBvZmZzZXQgPSBOdW1iZXIob2Zmc2V0KSB8fCAwXG4gIGNvbnN0IHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0ckxlbiA9IHN0cmluZy5sZW5ndGhcblxuICBpZiAobGVuZ3RoID4gc3RyTGVuIC8gMikge1xuICAgIGxlbmd0aCA9IHN0ckxlbiAvIDJcbiAgfVxuICBsZXQgaVxuICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpXG4gICAgaWYgKG51bWJlcklzTmFOKHBhcnNlZCkpIHJldHVybiBpXG4gICAgYnVmW29mZnNldCArIGldID0gcGFyc2VkXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gdXRmOFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmOFRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYXNjaWlXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGFzY2lpVG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pXG4gIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICBsZW5ndGggPSBsZW5ndGggPj4+IDBcbiAgICAgIGlmIChlbmNvZGluZyA9PT0gdW5kZWZpbmVkKSBlbmNvZGluZyA9ICd1dGY4J1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmNvZGluZyA9IGxlbmd0aFxuICAgICAgbGVuZ3RoID0gdW5kZWZpbmVkXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCdcbiAgICApXG4gIH1cblxuICBjb25zdCByZW1haW5pbmcgPSB0aGlzLmxlbmd0aCAtIG9mZnNldFxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgfHwgbGVuZ3RoID4gcmVtYWluaW5nKSBsZW5ndGggPSByZW1haW5pbmdcblxuICBpZiAoKHN0cmluZy5sZW5ndGggPiAwICYmIChsZW5ndGggPCAwIHx8IG9mZnNldCA8IDApKSB8fCBvZmZzZXQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIGxldCBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIC8vIFdhcm5pbmc6IG1heExlbmd0aCBub3QgdGFrZW4gaW50byBhY2NvdW50IGluIGJhc2U2NFdyaXRlXG4gICAgICAgIHJldHVybiBiYXNlNjRXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdWNzMldyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0J1ZmZlcicsXG4gICAgZGF0YTogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyIHx8IHRoaXMsIDApXG4gIH1cbn1cblxuZnVuY3Rpb24gYmFzZTY0U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBpZiAoc3RhcnQgPT09IDAgJiYgZW5kID09PSBidWYubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1ZilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmLnNsaWNlKHN0YXJ0LCBlbmQpKVxuICB9XG59XG5cbmZ1bmN0aW9uIHV0ZjhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcbiAgY29uc3QgcmVzID0gW11cblxuICBsZXQgaSA9IHN0YXJ0XG4gIHdoaWxlIChpIDwgZW5kKSB7XG4gICAgY29uc3QgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgbGV0IGNvZGVQb2ludCA9IG51bGxcbiAgICBsZXQgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKVxuICAgICAgPyA0XG4gICAgICA6IChmaXJzdEJ5dGUgPiAweERGKVxuICAgICAgICAgID8gM1xuICAgICAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4QkYpXG4gICAgICAgICAgICAgID8gMlxuICAgICAgICAgICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIGxldCBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbmNvbnN0IE1BWF9BUkdVTUVOVFNfTEVOR1RIID0gMHgxMDAwXG5cbmZ1bmN0aW9uIGRlY29kZUNvZGVQb2ludHNBcnJheSAoY29kZVBvaW50cykge1xuICBjb25zdCBsZW4gPSBjb2RlUG9pbnRzLmxlbmd0aFxuICBpZiAobGVuIDw9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjb2RlUG9pbnRzKSAvLyBhdm9pZCBleHRyYSBzbGljZSgpXG4gIH1cblxuICAvLyBEZWNvZGUgaW4gY2h1bmtzIHRvIGF2b2lkIFwiY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCIuXG4gIGxldCByZXMgPSAnJ1xuICBsZXQgaSA9IDBcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShcbiAgICAgIFN0cmluZyxcbiAgICAgIGNvZGVQb2ludHMuc2xpY2UoaSwgaSArPSBNQVhfQVJHVU1FTlRTX0xFTkdUSClcbiAgICApXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgbGV0IHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSAmIDB4N0YpXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBsYXRpbjFTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGxldCByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBoZXhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGNvbnN0IGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICBsZXQgb3V0ID0gJydcbiAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICBvdXQgKz0gaGV4U2xpY2VMb29rdXBUYWJsZVtidWZbaV1dXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiB1dGYxNmxlU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBjb25zdCBieXRlcyA9IGJ1Zi5zbGljZShzdGFydCwgZW5kKVxuICBsZXQgcmVzID0gJydcbiAgLy8gSWYgYnl0ZXMubGVuZ3RoIGlzIG9kZCwgdGhlIGxhc3QgOCBiaXRzIG11c3QgYmUgaWdub3JlZCAoc2FtZSBhcyBub2RlLmpzKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aCAtIDE7IGkgKz0gMikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldICsgKGJ5dGVzW2kgKyAxXSAqIDI1NikpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgY29uc3QgbGVuID0gdGhpcy5sZW5ndGhcbiAgc3RhcnQgPSB+fnN0YXJ0XG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogfn5lbmRcblxuICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgKz0gbGVuXG4gICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIH0gZWxzZSBpZiAoc3RhcnQgPiBsZW4pIHtcbiAgICBzdGFydCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgKz0gbGVuXG4gICAgaWYgKGVuZCA8IDApIGVuZCA9IDBcbiAgfSBlbHNlIGlmIChlbmQgPiBsZW4pIHtcbiAgICBlbmQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICBjb25zdCBuZXdCdWYgPSB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpXG4gIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlXG4gIE9iamVjdC5zZXRQcm90b3R5cGVPZihuZXdCdWYsIEJ1ZmZlci5wcm90b3R5cGUpXG5cbiAgcmV0dXJuIG5ld0J1ZlxufVxuXG4vKlxuICogTmVlZCB0byBtYWtlIHN1cmUgdGhhdCBidWZmZXIgaXNuJ3QgdHJ5aW5nIHRvIHdyaXRlIG91dCBvZiBib3VuZHMuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrT2Zmc2V0IChvZmZzZXQsIGV4dCwgbGVuZ3RoKSB7XG4gIGlmICgob2Zmc2V0ICUgMSkgIT09IDAgfHwgb2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ29mZnNldCBpcyBub3QgdWludCcpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBsZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludExFID1cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgbGV0IHZhbCA9IHRoaXNbb2Zmc2V0XVxuICBsZXQgbXVsID0gMVxuICBsZXQgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVaW50QkUgPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludEJFID0gZnVuY3Rpb24gcmVhZFVJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICBsZXQgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIGxldCBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludDggPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludDE2TEUgPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2TEUgPSBmdW5jdGlvbiByZWFkVUludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVaW50MTZCRSA9XG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVpbnQzMkxFID1cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAoKHRoaXNbb2Zmc2V0XSkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpKSArXG4gICAgICAodGhpc1tvZmZzZXQgKyAzXSAqIDB4MTAwMDAwMClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludDMyQkUgPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyQkUgPSBmdW5jdGlvbiByZWFkVUludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gKiAweDEwMDAwMDApICtcbiAgICAoKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgdGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkQmlnVUludDY0TEUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gcmVhZEJpZ1VJbnQ2NExFIChvZmZzZXQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIHZhbGlkYXRlTnVtYmVyKG9mZnNldCwgJ29mZnNldCcpXG4gIGNvbnN0IGZpcnN0ID0gdGhpc1tvZmZzZXRdXG4gIGNvbnN0IGxhc3QgPSB0aGlzW29mZnNldCArIDddXG4gIGlmIChmaXJzdCA9PT0gdW5kZWZpbmVkIHx8IGxhc3QgPT09IHVuZGVmaW5lZCkge1xuICAgIGJvdW5kc0Vycm9yKG9mZnNldCwgdGhpcy5sZW5ndGggLSA4KVxuICB9XG5cbiAgY29uc3QgbG8gPSBmaXJzdCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDggK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAxNiArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDI0XG5cbiAgY29uc3QgaGkgPSB0aGlzWysrb2Zmc2V0XSArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDggK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAxNiArXG4gICAgbGFzdCAqIDIgKiogMjRcblxuICByZXR1cm4gQmlnSW50KGxvKSArIChCaWdJbnQoaGkpIDw8IEJpZ0ludCgzMikpXG59KVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRCaWdVSW50NjRCRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiByZWFkQmlnVUludDY0QkUgKG9mZnNldCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgdmFsaWRhdGVOdW1iZXIob2Zmc2V0LCAnb2Zmc2V0JylcbiAgY29uc3QgZmlyc3QgPSB0aGlzW29mZnNldF1cbiAgY29uc3QgbGFzdCA9IHRoaXNbb2Zmc2V0ICsgN11cbiAgaWYgKGZpcnN0ID09PSB1bmRlZmluZWQgfHwgbGFzdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYm91bmRzRXJyb3Iob2Zmc2V0LCB0aGlzLmxlbmd0aCAtIDgpXG4gIH1cblxuICBjb25zdCBoaSA9IGZpcnN0ICogMiAqKiAyNCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDE2ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogOCArXG4gICAgdGhpc1srK29mZnNldF1cblxuICBjb25zdCBsbyA9IHRoaXNbKytvZmZzZXRdICogMiAqKiAyNCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDE2ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogOCArXG4gICAgbGFzdFxuXG4gIHJldHVybiAoQmlnSW50KGhpKSA8PCBCaWdJbnQoMzIpKSArIEJpZ0ludChsbylcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIGxldCB2YWwgPSB0aGlzW29mZnNldF1cbiAgbGV0IG11bCA9IDFcbiAgbGV0IGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRCRSA9IGZ1bmN0aW9uIHJlYWRJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICBsZXQgaSA9IGJ5dGVMZW5ndGhcbiAgbGV0IG11bCA9IDFcbiAgbGV0IHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1pXVxuICB3aGlsZSAoaSA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50OCA9IGZ1bmN0aW9uIHJlYWRJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIGNvbnN0IHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICBjb25zdCB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDNdIDw8IDI0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkJFID0gZnVuY3Rpb24gcmVhZEludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgMjQpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkQmlnSW50NjRMRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiByZWFkQmlnSW50NjRMRSAob2Zmc2V0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICB2YWxpZGF0ZU51bWJlcihvZmZzZXQsICdvZmZzZXQnKVxuICBjb25zdCBmaXJzdCA9IHRoaXNbb2Zmc2V0XVxuICBjb25zdCBsYXN0ID0gdGhpc1tvZmZzZXQgKyA3XVxuICBpZiAoZmlyc3QgPT09IHVuZGVmaW5lZCB8fCBsYXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICBib3VuZHNFcnJvcihvZmZzZXQsIHRoaXMubGVuZ3RoIC0gOClcbiAgfVxuXG4gIGNvbnN0IHZhbCA9IHRoaXNbb2Zmc2V0ICsgNF0gK1xuICAgIHRoaXNbb2Zmc2V0ICsgNV0gKiAyICoqIDggK1xuICAgIHRoaXNbb2Zmc2V0ICsgNl0gKiAyICoqIDE2ICtcbiAgICAobGFzdCA8PCAyNCkgLy8gT3ZlcmZsb3dcblxuICByZXR1cm4gKEJpZ0ludCh2YWwpIDw8IEJpZ0ludCgzMikpICtcbiAgICBCaWdJbnQoZmlyc3QgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiA4ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMTYgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAyNClcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEJpZ0ludDY0QkUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gcmVhZEJpZ0ludDY0QkUgKG9mZnNldCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgdmFsaWRhdGVOdW1iZXIob2Zmc2V0LCAnb2Zmc2V0JylcbiAgY29uc3QgZmlyc3QgPSB0aGlzW29mZnNldF1cbiAgY29uc3QgbGFzdCA9IHRoaXNbb2Zmc2V0ICsgN11cbiAgaWYgKGZpcnN0ID09PSB1bmRlZmluZWQgfHwgbGFzdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYm91bmRzRXJyb3Iob2Zmc2V0LCB0aGlzLmxlbmd0aCAtIDgpXG4gIH1cblxuICBjb25zdCB2YWwgPSAoZmlyc3QgPDwgMjQpICsgLy8gT3ZlcmZsb3dcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMTYgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiA4ICtcbiAgICB0aGlzWysrb2Zmc2V0XVxuXG4gIHJldHVybiAoQmlnSW50KHZhbCkgPDwgQmlnSW50KDMyKSkgK1xuICAgIEJpZ0ludCh0aGlzWysrb2Zmc2V0XSAqIDIgKiogMjQgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAxNiArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDggK1xuICAgIGxhc3QpXG59KVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdExFID0gZnVuY3Rpb24gcmVhZEZsb2F0TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRCRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdEJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDUyLCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVCRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCA1MiwgOClcbn1cblxuZnVuY3Rpb24gY2hlY2tJbnQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZmZlclwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKVxuICBpZiAodmFsdWUgPiBtYXggfHwgdmFsdWUgPCBtaW4pIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVpbnRMRSA9XG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY29uc3QgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICBsZXQgbXVsID0gMVxuICBsZXQgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVWludEJFID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjb25zdCBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIGxldCBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgbGV0IG11bCA9IDFcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVaW50OCA9XG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHhmZiwgMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVpbnQxNkxFID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVaW50MTZCRSA9XG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVWludDMyTEUgPVxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVpbnQzMkJFID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIHdydEJpZ1VJbnQ2NExFIChidWYsIHZhbHVlLCBvZmZzZXQsIG1pbiwgbWF4KSB7XG4gIGNoZWNrSW50QkkodmFsdWUsIG1pbiwgbWF4LCBidWYsIG9mZnNldCwgNylcblxuICBsZXQgbG8gPSBOdW1iZXIodmFsdWUgJiBCaWdJbnQoMHhmZmZmZmZmZikpXG4gIGJ1ZltvZmZzZXQrK10gPSBsb1xuICBsbyA9IGxvID4+IDhcbiAgYnVmW29mZnNldCsrXSA9IGxvXG4gIGxvID0gbG8gPj4gOFxuICBidWZbb2Zmc2V0KytdID0gbG9cbiAgbG8gPSBsbyA+PiA4XG4gIGJ1ZltvZmZzZXQrK10gPSBsb1xuICBsZXQgaGkgPSBOdW1iZXIodmFsdWUgPj4gQmlnSW50KDMyKSAmIEJpZ0ludCgweGZmZmZmZmZmKSlcbiAgYnVmW29mZnNldCsrXSA9IGhpXG4gIGhpID0gaGkgPj4gOFxuICBidWZbb2Zmc2V0KytdID0gaGlcbiAgaGkgPSBoaSA+PiA4XG4gIGJ1ZltvZmZzZXQrK10gPSBoaVxuICBoaSA9IGhpID4+IDhcbiAgYnVmW29mZnNldCsrXSA9IGhpXG4gIHJldHVybiBvZmZzZXRcbn1cblxuZnVuY3Rpb24gd3J0QmlnVUludDY0QkUgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbWluLCBtYXgpIHtcbiAgY2hlY2tJbnRCSSh2YWx1ZSwgbWluLCBtYXgsIGJ1Ziwgb2Zmc2V0LCA3KVxuXG4gIGxldCBsbyA9IE51bWJlcih2YWx1ZSAmIEJpZ0ludCgweGZmZmZmZmZmKSlcbiAgYnVmW29mZnNldCArIDddID0gbG9cbiAgbG8gPSBsbyA+PiA4XG4gIGJ1ZltvZmZzZXQgKyA2XSA9IGxvXG4gIGxvID0gbG8gPj4gOFxuICBidWZbb2Zmc2V0ICsgNV0gPSBsb1xuICBsbyA9IGxvID4+IDhcbiAgYnVmW29mZnNldCArIDRdID0gbG9cbiAgbGV0IGhpID0gTnVtYmVyKHZhbHVlID4+IEJpZ0ludCgzMikgJiBCaWdJbnQoMHhmZmZmZmZmZikpXG4gIGJ1ZltvZmZzZXQgKyAzXSA9IGhpXG4gIGhpID0gaGkgPj4gOFxuICBidWZbb2Zmc2V0ICsgMl0gPSBoaVxuICBoaSA9IGhpID4+IDhcbiAgYnVmW29mZnNldCArIDFdID0gaGlcbiAgaGkgPSBoaSA+PiA4XG4gIGJ1ZltvZmZzZXRdID0gaGlcbiAgcmV0dXJuIG9mZnNldCArIDhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUJpZ1VJbnQ2NExFID0gZGVmaW5lQmlnSW50TWV0aG9kKGZ1bmN0aW9uIHdyaXRlQmlnVUludDY0TEUgKHZhbHVlLCBvZmZzZXQgPSAwKSB7XG4gIHJldHVybiB3cnRCaWdVSW50NjRMRSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBCaWdJbnQoMCksIEJpZ0ludCgnMHhmZmZmZmZmZmZmZmZmZmZmJykpXG59KVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlQmlnVUludDY0QkUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gd3JpdGVCaWdVSW50NjRCRSAodmFsdWUsIG9mZnNldCA9IDApIHtcbiAgcmV0dXJuIHdydEJpZ1VJbnQ2NEJFKHRoaXMsIHZhbHVlLCBvZmZzZXQsIEJpZ0ludCgwKSwgQmlnSW50KCcweGZmZmZmZmZmZmZmZmZmZmYnKSlcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY29uc3QgbGltaXQgPSBNYXRoLnBvdygyLCAoOCAqIGJ5dGVMZW5ndGgpIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgbGV0IGkgPSAwXG4gIGxldCBtdWwgPSAxXG4gIGxldCBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSAtIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY29uc3QgbGltaXQgPSBNYXRoLnBvdygyLCAoOCAqIGJ5dGVMZW5ndGgpIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgbGV0IGkgPSBieXRlTGVuZ3RoIC0gMVxuICBsZXQgbXVsID0gMVxuICBsZXQgc3ViID0gMFxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSArIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZiArIHZhbHVlICsgMVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmZmZmZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUJpZ0ludDY0TEUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gd3JpdGVCaWdJbnQ2NExFICh2YWx1ZSwgb2Zmc2V0ID0gMCkge1xuICByZXR1cm4gd3J0QmlnVUludDY0TEUodGhpcywgdmFsdWUsIG9mZnNldCwgLUJpZ0ludCgnMHg4MDAwMDAwMDAwMDAwMDAwJyksIEJpZ0ludCgnMHg3ZmZmZmZmZmZmZmZmZmZmJykpXG59KVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlQmlnSW50NjRCRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiB3cml0ZUJpZ0ludDY0QkUgKHZhbHVlLCBvZmZzZXQgPSAwKSB7XG4gIHJldHVybiB3cnRCaWdVSW50NjRCRSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAtQmlnSW50KCcweDgwMDAwMDAwMDAwMDAwMDAnKSwgQmlnSW50KCcweDdmZmZmZmZmZmZmZmZmZmYnKSlcbn0pXG5cbmZ1bmN0aW9uIGNoZWNrSUVFRTc1NCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA0LCAzLjQwMjgyMzQ2NjM4NTI4ODZlKzM4LCAtMy40MDI4MjM0NjYzODUyODg2ZSszOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCAyMywgNClcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0TEUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRCRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG5mdW5jdGlvbiB3cml0ZURvdWJsZSAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgOCwgMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgsIC0xLjc5NzY5MzEzNDg2MjMxNTdFKzMwOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCA1MiwgOClcbiAgcmV0dXJuIG9mZnNldCArIDhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlQkUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG4vLyBjb3B5KHRhcmdldEJ1ZmZlciwgdGFyZ2V0U3RhcnQ9MCwgc291cmNlU3RhcnQ9MCwgc291cmNlRW5kPWJ1ZmZlci5sZW5ndGgpXG5CdWZmZXIucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5ICh0YXJnZXQsIHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHRhcmdldCkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IHNob3VsZCBiZSBhIEJ1ZmZlcicpXG4gIGlmICghc3RhcnQpIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCAmJiBlbmQgIT09IDApIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXRTdGFydCA+PSB0YXJnZXQubGVuZ3RoKSB0YXJnZXRTdGFydCA9IHRhcmdldC5sZW5ndGhcbiAgaWYgKCF0YXJnZXRTdGFydCkgdGFyZ2V0U3RhcnQgPSAwXG4gIGlmIChlbmQgPiAwICYmIGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIC8vIENvcHkgMCBieXRlczsgd2UncmUgZG9uZVxuICBpZiAoZW5kID09PSBzdGFydCkgcmV0dXJuIDBcbiAgaWYgKHRhcmdldC5sZW5ndGggPT09IDAgfHwgdGhpcy5sZW5ndGggPT09IDApIHJldHVybiAwXG5cbiAgLy8gRmF0YWwgZXJyb3IgY29uZGl0aW9uc1xuICBpZiAodGFyZ2V0U3RhcnQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3RhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMnKVxuICB9XG4gIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPj0gdGhpcy5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxuICBpZiAoZW5kIDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZUVuZCBvdXQgb2YgYm91bmRzJylcblxuICAvLyBBcmUgd2Ugb29iP1xuICBpZiAoZW5kID4gdGhpcy5sZW5ndGgpIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgPCBlbmQgLSBzdGFydCkge1xuICAgIGVuZCA9IHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCArIHN0YXJ0XG4gIH1cblxuICBjb25zdCBsZW4gPSBlbmQgLSBzdGFydFxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBVc2UgYnVpbHQtaW4gd2hlbiBhdmFpbGFibGUsIG1pc3NpbmcgZnJvbSBJRTExXG4gICAgdGhpcy5jb3B5V2l0aGluKHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKVxuICB9IGVsc2Uge1xuICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGhpcy5zdWJhcnJheShzdGFydCwgZW5kKSxcbiAgICAgIHRhcmdldFN0YXJ0XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG4vLyBVc2FnZTpcbi8vICAgIGJ1ZmZlci5maWxsKG51bWJlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoYnVmZmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChzdHJpbmdbLCBvZmZzZXRbLCBlbmRdXVssIGVuY29kaW5nXSlcbkJ1ZmZlci5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIGZpbGwgKHZhbCwgc3RhcnQsIGVuZCwgZW5jb2RpbmcpIHtcbiAgLy8gSGFuZGxlIHN0cmluZyBjYXNlczpcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHR5cGVvZiBzdGFydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gc3RhcnRcbiAgICAgIHN0YXJ0ID0gMFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuZFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9XG4gICAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZycpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnICYmICFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICB9XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGNvZGUgPSB2YWwuY2hhckNvZGVBdCgwKVxuICAgICAgaWYgKChlbmNvZGluZyA9PT0gJ3V0ZjgnICYmIGNvZGUgPCAxMjgpIHx8XG4gICAgICAgICAgZW5jb2RpbmcgPT09ICdsYXRpbjEnKSB7XG4gICAgICAgIC8vIEZhc3QgcGF0aDogSWYgYHZhbGAgZml0cyBpbnRvIGEgc2luZ2xlIGJ5dGUsIHVzZSB0aGF0IG51bWVyaWMgdmFsdWUuXG4gICAgICAgIHZhbCA9IGNvZGVcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAyNTVcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnYm9vbGVhbicpIHtcbiAgICB2YWwgPSBOdW1iZXIodmFsKVxuICB9XG5cbiAgLy8gSW52YWxpZCByYW5nZXMgYXJlIG5vdCBzZXQgdG8gYSBkZWZhdWx0LCBzbyBjYW4gcmFuZ2UgY2hlY2sgZWFybHkuXG4gIGlmIChzdGFydCA8IDAgfHwgdGhpcy5sZW5ndGggPCBzdGFydCB8fCB0aGlzLmxlbmd0aCA8IGVuZCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdPdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID4+PiAwXG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5sZW5ndGggOiBlbmQgPj4+IDBcblxuICBpZiAoIXZhbCkgdmFsID0gMFxuXG4gIGxldCBpXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIHRoaXNbaV0gPSB2YWxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgYnl0ZXMgPSBCdWZmZXIuaXNCdWZmZXIodmFsKVxuICAgICAgPyB2YWxcbiAgICAgIDogQnVmZmVyLmZyb20odmFsLCBlbmNvZGluZylcbiAgICBjb25zdCBsZW4gPSBieXRlcy5sZW5ndGhcbiAgICBpZiAobGVuID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgdmFsdWUgXCInICsgdmFsICtcbiAgICAgICAgJ1wiIGlzIGludmFsaWQgZm9yIGFyZ3VtZW50IFwidmFsdWVcIicpXG4gICAgfVxuICAgIGZvciAoaSA9IDA7IGkgPCBlbmQgLSBzdGFydDsgKytpKSB7XG4gICAgICB0aGlzW2kgKyBzdGFydF0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIENVU1RPTSBFUlJPUlNcbi8vID09PT09PT09PT09PT1cblxuLy8gU2ltcGxpZmllZCB2ZXJzaW9ucyBmcm9tIE5vZGUsIGNoYW5nZWQgZm9yIEJ1ZmZlci1vbmx5IHVzYWdlXG5jb25zdCBlcnJvcnMgPSB7fVxuZnVuY3Rpb24gRSAoc3ltLCBnZXRNZXNzYWdlLCBCYXNlKSB7XG4gIGVycm9yc1tzeW1dID0gY2xhc3MgTm9kZUVycm9yIGV4dGVuZHMgQmFzZSB7XG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgc3VwZXIoKVxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ21lc3NhZ2UnLCB7XG4gICAgICAgIHZhbHVlOiBnZXRNZXNzYWdlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH0pXG5cbiAgICAgIC8vIEFkZCB0aGUgZXJyb3IgY29kZSB0byB0aGUgbmFtZSB0byBpbmNsdWRlIGl0IGluIHRoZSBzdGFjayB0cmFjZS5cbiAgICAgIHRoaXMubmFtZSA9IGAke3RoaXMubmFtZX0gWyR7c3ltfV1gXG4gICAgICAvLyBBY2Nlc3MgdGhlIHN0YWNrIHRvIGdlbmVyYXRlIHRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGluZyB0aGUgZXJyb3IgY29kZVxuICAgICAgLy8gZnJvbSB0aGUgbmFtZS5cbiAgICAgIHRoaXMuc3RhY2sgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcbiAgICAgIC8vIFJlc2V0IHRoZSBuYW1lIHRvIHRoZSBhY3R1YWwgbmFtZS5cbiAgICAgIGRlbGV0ZSB0aGlzLm5hbWVcbiAgICB9XG5cbiAgICBnZXQgY29kZSAoKSB7XG4gICAgICByZXR1cm4gc3ltXG4gICAgfVxuXG4gICAgc2V0IGNvZGUgKHZhbHVlKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2NvZGUnLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRvU3RyaW5nICgpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLm5hbWV9IFske3N5bX1dOiAke3RoaXMubWVzc2FnZX1gXG4gICAgfVxuICB9XG59XG5cbkUoJ0VSUl9CVUZGRVJfT1VUX09GX0JPVU5EUycsXG4gIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHNgXG4gICAgfVxuXG4gICAgcmV0dXJuICdBdHRlbXB0IHRvIGFjY2VzcyBtZW1vcnkgb3V0c2lkZSBidWZmZXIgYm91bmRzJ1xuICB9LCBSYW5nZUVycm9yKVxuRSgnRVJSX0lOVkFMSURfQVJHX1RZUEUnLFxuICBmdW5jdGlvbiAobmFtZSwgYWN0dWFsKSB7XG4gICAgcmV0dXJuIGBUaGUgXCIke25hbWV9XCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSAke3R5cGVvZiBhY3R1YWx9YFxuICB9LCBUeXBlRXJyb3IpXG5FKCdFUlJfT1VUX09GX1JBTkdFJyxcbiAgZnVuY3Rpb24gKHN0ciwgcmFuZ2UsIGlucHV0KSB7XG4gICAgbGV0IG1zZyA9IGBUaGUgdmFsdWUgb2YgXCIke3N0cn1cIiBpcyBvdXQgb2YgcmFuZ2UuYFxuICAgIGxldCByZWNlaXZlZCA9IGlucHV0XG4gICAgaWYgKE51bWJlci5pc0ludGVnZXIoaW5wdXQpICYmIE1hdGguYWJzKGlucHV0KSA+IDIgKiogMzIpIHtcbiAgICAgIHJlY2VpdmVkID0gYWRkTnVtZXJpY2FsU2VwYXJhdG9yKFN0cmluZyhpbnB1dCkpXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdiaWdpbnQnKSB7XG4gICAgICByZWNlaXZlZCA9IFN0cmluZyhpbnB1dClcbiAgICAgIGlmIChpbnB1dCA+IEJpZ0ludCgyKSAqKiBCaWdJbnQoMzIpIHx8IGlucHV0IDwgLShCaWdJbnQoMikgKiogQmlnSW50KDMyKSkpIHtcbiAgICAgICAgcmVjZWl2ZWQgPSBhZGROdW1lcmljYWxTZXBhcmF0b3IocmVjZWl2ZWQpXG4gICAgICB9XG4gICAgICByZWNlaXZlZCArPSAnbidcbiAgICB9XG4gICAgbXNnICs9IGAgSXQgbXVzdCBiZSAke3JhbmdlfS4gUmVjZWl2ZWQgJHtyZWNlaXZlZH1gXG4gICAgcmV0dXJuIG1zZ1xuICB9LCBSYW5nZUVycm9yKVxuXG5mdW5jdGlvbiBhZGROdW1lcmljYWxTZXBhcmF0b3IgKHZhbCkge1xuICBsZXQgcmVzID0gJydcbiAgbGV0IGkgPSB2YWwubGVuZ3RoXG4gIGNvbnN0IHN0YXJ0ID0gdmFsWzBdID09PSAnLScgPyAxIDogMFxuICBmb3IgKDsgaSA+PSBzdGFydCArIDQ7IGkgLT0gMykge1xuICAgIHJlcyA9IGBfJHt2YWwuc2xpY2UoaSAtIDMsIGkpfSR7cmVzfWBcbiAgfVxuICByZXR1cm4gYCR7dmFsLnNsaWNlKDAsIGkpfSR7cmVzfWBcbn1cblxuLy8gQ0hFQ0sgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gY2hlY2tCb3VuZHMgKGJ1Ziwgb2Zmc2V0LCBieXRlTGVuZ3RoKSB7XG4gIHZhbGlkYXRlTnVtYmVyKG9mZnNldCwgJ29mZnNldCcpXG4gIGlmIChidWZbb2Zmc2V0XSA9PT0gdW5kZWZpbmVkIHx8IGJ1ZltvZmZzZXQgKyBieXRlTGVuZ3RoXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYm91bmRzRXJyb3Iob2Zmc2V0LCBidWYubGVuZ3RoIC0gKGJ5dGVMZW5ndGggKyAxKSlcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0ludEJJICh2YWx1ZSwgbWluLCBtYXgsIGJ1Ziwgb2Zmc2V0LCBieXRlTGVuZ3RoKSB7XG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikge1xuICAgIGNvbnN0IG4gPSB0eXBlb2YgbWluID09PSAnYmlnaW50JyA/ICduJyA6ICcnXG4gICAgbGV0IHJhbmdlXG4gICAgaWYgKGJ5dGVMZW5ndGggPiAzKSB7XG4gICAgICBpZiAobWluID09PSAwIHx8IG1pbiA9PT0gQmlnSW50KDApKSB7XG4gICAgICAgIHJhbmdlID0gYD49IDAke259IGFuZCA8IDIke259ICoqICR7KGJ5dGVMZW5ndGggKyAxKSAqIDh9JHtufWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJhbmdlID0gYD49IC0oMiR7bn0gKiogJHsoYnl0ZUxlbmd0aCArIDEpICogOCAtIDF9JHtufSkgYW5kIDwgMiAqKiBgICtcbiAgICAgICAgICAgICAgICBgJHsoYnl0ZUxlbmd0aCArIDEpICogOCAtIDF9JHtufWBcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZ2UgPSBgPj0gJHttaW59JHtufSBhbmQgPD0gJHttYXh9JHtufWBcbiAgICB9XG4gICAgdGhyb3cgbmV3IGVycm9ycy5FUlJfT1VUX09GX1JBTkdFKCd2YWx1ZScsIHJhbmdlLCB2YWx1ZSlcbiAgfVxuICBjaGVja0JvdW5kcyhidWYsIG9mZnNldCwgYnl0ZUxlbmd0aClcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVOdW1iZXIgKHZhbHVlLCBuYW1lKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5FUlJfSU5WQUxJRF9BUkdfVFlQRShuYW1lLCAnbnVtYmVyJywgdmFsdWUpXG4gIH1cbn1cblxuZnVuY3Rpb24gYm91bmRzRXJyb3IgKHZhbHVlLCBsZW5ndGgsIHR5cGUpIHtcbiAgaWYgKE1hdGguZmxvb3IodmFsdWUpICE9PSB2YWx1ZSkge1xuICAgIHZhbGlkYXRlTnVtYmVyKHZhbHVlLCB0eXBlKVxuICAgIHRocm93IG5ldyBlcnJvcnMuRVJSX09VVF9PRl9SQU5HRSh0eXBlIHx8ICdvZmZzZXQnLCAnYW4gaW50ZWdlcicsIHZhbHVlKVxuICB9XG5cbiAgaWYgKGxlbmd0aCA8IDApIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkVSUl9CVUZGRVJfT1VUX09GX0JPVU5EUygpXG4gIH1cblxuICB0aHJvdyBuZXcgZXJyb3JzLkVSUl9PVVRfT0ZfUkFOR0UodHlwZSB8fCAnb2Zmc2V0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGA+PSAke3R5cGUgPyAxIDogMH0gYW5kIDw9ICR7bGVuZ3RofWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSlcbn1cblxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PVxuXG5jb25zdCBJTlZBTElEX0JBU0U2NF9SRSA9IC9bXisvMC05QS1aYS16LV9dL2dcblxuZnVuY3Rpb24gYmFzZTY0Y2xlYW4gKHN0cikge1xuICAvLyBOb2RlIHRha2VzIGVxdWFsIHNpZ25zIGFzIGVuZCBvZiB0aGUgQmFzZTY0IGVuY29kaW5nXG4gIHN0ciA9IHN0ci5zcGxpdCgnPScpWzBdXG4gIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcXG4gYW5kIFxcdCBmcm9tIHRoZSBzdHJpbmcsIGJhc2U2NC1qcyBkb2VzIG5vdFxuICBzdHIgPSBzdHIudHJpbSgpLnJlcGxhY2UoSU5WQUxJRF9CQVNFNjRfUkUsICcnKVxuICAvLyBOb2RlIGNvbnZlcnRzIHN0cmluZ3Mgd2l0aCBsZW5ndGggPCAyIHRvICcnXG4gIGlmIChzdHIubGVuZ3RoIDwgMikgcmV0dXJuICcnXG4gIC8vIE5vZGUgYWxsb3dzIGZvciBub24tcGFkZGVkIGJhc2U2NCBzdHJpbmdzIChtaXNzaW5nIHRyYWlsaW5nID09PSksIGJhc2U2NC1qcyBkb2VzIG5vdFxuICB3aGlsZSAoc3RyLmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICBzdHIgPSBzdHIgKyAnPSdcbiAgfVxuICByZXR1cm4gc3RyXG59XG5cbmZ1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7XG4gIHVuaXRzID0gdW5pdHMgfHwgSW5maW5pdHlcbiAgbGV0IGNvZGVQb2ludFxuICBjb25zdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoXG4gIGxldCBsZWFkU3Vycm9nYXRlID0gbnVsbFxuICBjb25zdCBieXRlcyA9IFtdXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG5cbiAgICAvLyBpcyBzdXJyb2dhdGUgY29tcG9uZW50XG4gICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHtcbiAgICAgIC8vIGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoIWxlYWRTdXJyb2dhdGUpIHtcbiAgICAgICAgLy8gbm8gbGVhZCB5ZXRcbiAgICAgICAgaWYgKGNvZGVQb2ludCA+IDB4REJGRikge1xuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgdHJhaWxcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAvLyB1bnBhaXJlZCBsZWFkXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkIGxlYWRcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIDIgbGVhZHMgaW4gYSByb3dcbiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHtcbiAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWQgc3Vycm9nYXRlIHBhaXJcbiAgICAgIGNvZGVQb2ludCA9IChsZWFkU3Vycm9nYXRlIC0gMHhEODAwIDw8IDEwIHwgY29kZVBvaW50IC0gMHhEQzAwKSArIDB4MTAwMDBcbiAgICB9IGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUpIHtcbiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgIH1cblxuICAgIGxlYWRTdXJyb2dhdGUgPSBudWxsXG5cbiAgICAvLyBlbmNvZGUgdXRmOFxuICAgIGlmIChjb2RlUG9pbnQgPCAweDgwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDEpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHg4MDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiB8IDB4QzAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDMpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgfCAweEUwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHgxMiB8IDB4RjAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29kZSBwb2ludCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7XG4gIGNvbnN0IGJ5dGVBcnJheSA9IFtdXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gTm9kZSdzIGNvZGUgc2VlbXMgdG8gYmUgZG9pbmcgdGhpcyBhbmQgbm90ICYgMHg3Ri4uXG4gICAgYnl0ZUFycmF5LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMgKHN0ciwgdW5pdHMpIHtcbiAgbGV0IGMsIGhpLCBsb1xuICBjb25zdCBieXRlQXJyYXkgPSBbXVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuXG4gICAgYyA9IHN0ci5jaGFyQ29kZUF0KGkpXG4gICAgaGkgPSBjID4+IDhcbiAgICBsbyA9IGMgJSAyNTZcbiAgICBieXRlQXJyYXkucHVzaChsbylcbiAgICBieXRlQXJyYXkucHVzaChoaSlcbiAgfVxuXG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyAoc3RyKSB7XG4gIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSlcbn1cblxuZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIGxldCBpXG4gIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGlmICgoaSArIG9mZnNldCA+PSBkc3QubGVuZ3RoKSB8fCAoaSA+PSBzcmMubGVuZ3RoKSkgYnJlYWtcbiAgICBkc3RbaSArIG9mZnNldF0gPSBzcmNbaV1cbiAgfVxuICByZXR1cm4gaVxufVxuXG4vLyBBcnJheUJ1ZmZlciBvciBVaW50OEFycmF5IG9iamVjdHMgZnJvbSBvdGhlciBjb250ZXh0cyAoaS5lLiBpZnJhbWVzKSBkbyBub3QgcGFzc1xuLy8gdGhlIGBpbnN0YW5jZW9mYCBjaGVjayBidXQgdGhleSBzaG91bGQgYmUgdHJlYXRlZCBhcyBvZiB0aGF0IHR5cGUuXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL2lzc3Vlcy8xNjZcbmZ1bmN0aW9uIGlzSW5zdGFuY2UgKG9iaiwgdHlwZSkge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgdHlwZSB8fFxuICAgIChvYmogIT0gbnVsbCAmJiBvYmouY29uc3RydWN0b3IgIT0gbnVsbCAmJiBvYmouY29uc3RydWN0b3IubmFtZSAhPSBudWxsICYmXG4gICAgICBvYmouY29uc3RydWN0b3IubmFtZSA9PT0gdHlwZS5uYW1lKVxufVxuZnVuY3Rpb24gbnVtYmVySXNOYU4gKG9iaikge1xuICAvLyBGb3IgSUUxMSBzdXBwb3J0XG4gIHJldHVybiBvYmogIT09IG9iaiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNlbGYtY29tcGFyZVxufVxuXG4vLyBDcmVhdGUgbG9va3VwIHRhYmxlIGZvciBgdG9TdHJpbmcoJ2hleCcpYFxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9pc3N1ZXMvMjE5XG5jb25zdCBoZXhTbGljZUxvb2t1cFRhYmxlID0gKGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYWxwaGFiZXQgPSAnMDEyMzQ1Njc4OWFiY2RlZidcbiAgY29uc3QgdGFibGUgPSBuZXcgQXJyYXkoMjU2KVxuICBmb3IgKGxldCBpID0gMDsgaSA8IDE2OyArK2kpIHtcbiAgICBjb25zdCBpMTYgPSBpICogMTZcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IDE2OyArK2opIHtcbiAgICAgIHRhYmxlW2kxNiArIGpdID0gYWxwaGFiZXRbaV0gKyBhbHBoYWJldFtqXVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGFibGVcbn0pKClcblxuLy8gUmV0dXJuIG5vdCBmdW5jdGlvbiB3aXRoIEVycm9yIGlmIEJpZ0ludCBub3Qgc3VwcG9ydGVkXG5mdW5jdGlvbiBkZWZpbmVCaWdJbnRNZXRob2QgKGZuKSB7XG4gIHJldHVybiB0eXBlb2YgQmlnSW50ID09PSAndW5kZWZpbmVkJyA/IEJ1ZmZlckJpZ0ludE5vdERlZmluZWQgOiBmblxufVxuXG5mdW5jdGlvbiBCdWZmZXJCaWdJbnROb3REZWZpbmVkICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdCaWdJbnQgbm90IHN1cHBvcnRlZCcpXG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBHZXRJbnRyaW5zaWMgPSByZXF1aXJlKCdnZXQtaW50cmluc2ljJyk7XG5cbnZhciBjYWxsQmluZCA9IHJlcXVpcmUoJy4vJyk7XG5cbnZhciAkaW5kZXhPZiA9IGNhbGxCaW5kKEdldEludHJpbnNpYygnU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mJykpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNhbGxCb3VuZEludHJpbnNpYyhuYW1lLCBhbGxvd01pc3NpbmcpIHtcblx0dmFyIGludHJpbnNpYyA9IEdldEludHJpbnNpYyhuYW1lLCAhIWFsbG93TWlzc2luZyk7XG5cdGlmICh0eXBlb2YgaW50cmluc2ljID09PSAnZnVuY3Rpb24nICYmICRpbmRleE9mKG5hbWUsICcucHJvdG90eXBlLicpID4gLTEpIHtcblx0XHRyZXR1cm4gY2FsbEJpbmQoaW50cmluc2ljKTtcblx0fVxuXHRyZXR1cm4gaW50cmluc2ljO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGJpbmQgPSByZXF1aXJlKCdmdW5jdGlvbi1iaW5kJyk7XG52YXIgR2V0SW50cmluc2ljID0gcmVxdWlyZSgnZ2V0LWludHJpbnNpYycpO1xuXG52YXIgJGFwcGx5ID0gR2V0SW50cmluc2ljKCclRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5JScpO1xudmFyICRjYWxsID0gR2V0SW50cmluc2ljKCclRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwlJyk7XG52YXIgJHJlZmxlY3RBcHBseSA9IEdldEludHJpbnNpYygnJVJlZmxlY3QuYXBwbHklJywgdHJ1ZSkgfHwgYmluZC5jYWxsKCRjYWxsLCAkYXBwbHkpO1xuXG52YXIgJGdPUEQgPSBHZXRJbnRyaW5zaWMoJyVPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJScsIHRydWUpO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IEdldEludHJpbnNpYygnJU9iamVjdC5kZWZpbmVQcm9wZXJ0eSUnLCB0cnVlKTtcbnZhciAkbWF4ID0gR2V0SW50cmluc2ljKCclTWF0aC5tYXglJyk7XG5cbmlmICgkZGVmaW5lUHJvcGVydHkpIHtcblx0dHJ5IHtcblx0XHQkZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyB2YWx1ZTogMSB9KTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdC8vIElFIDggaGFzIGEgYnJva2VuIGRlZmluZVByb3BlcnR5XG5cdFx0JGRlZmluZVByb3BlcnR5ID0gbnVsbDtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNhbGxCaW5kKG9yaWdpbmFsRnVuY3Rpb24pIHtcblx0dmFyIGZ1bmMgPSAkcmVmbGVjdEFwcGx5KGJpbmQsICRjYWxsLCBhcmd1bWVudHMpO1xuXHRpZiAoJGdPUEQgJiYgJGRlZmluZVByb3BlcnR5KSB7XG5cdFx0dmFyIGRlc2MgPSAkZ09QRChmdW5jLCAnbGVuZ3RoJyk7XG5cdFx0aWYgKGRlc2MuY29uZmlndXJhYmxlKSB7XG5cdFx0XHQvLyBvcmlnaW5hbCBsZW5ndGgsIHBsdXMgdGhlIHJlY2VpdmVyLCBtaW51cyBhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgKGFmdGVyIHRoZSByZWNlaXZlcilcblx0XHRcdCRkZWZpbmVQcm9wZXJ0eShcblx0XHRcdFx0ZnVuYyxcblx0XHRcdFx0J2xlbmd0aCcsXG5cdFx0XHRcdHsgdmFsdWU6IDEgKyAkbWF4KDAsIG9yaWdpbmFsRnVuY3Rpb24ubGVuZ3RoIC0gKGFyZ3VtZW50cy5sZW5ndGggLSAxKSkgfVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGZ1bmM7XG59O1xuXG52YXIgYXBwbHlCaW5kID0gZnVuY3Rpb24gYXBwbHlCaW5kKCkge1xuXHRyZXR1cm4gJHJlZmxlY3RBcHBseShiaW5kLCAkYXBwbHksIGFyZ3VtZW50cyk7XG59O1xuXG5pZiAoJGRlZmluZVByb3BlcnR5KSB7XG5cdCRkZWZpbmVQcm9wZXJ0eShtb2R1bGUuZXhwb3J0cywgJ2FwcGx5JywgeyB2YWx1ZTogYXBwbHlCaW5kIH0pO1xufSBlbHNlIHtcblx0bW9kdWxlLmV4cG9ydHMuYXBwbHkgPSBhcHBseUJpbmQ7XG59XG4iLCIvKiEgRm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSBjYm9yLmpzLkxJQ0VOU0UudHh0ICovXG4hZnVuY3Rpb24odCxlKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKGZ1bmN0aW9uKCl7dHJ5e3JldHVybiByZXF1aXJlKFwiYmlnbnVtYmVyLmpzXCIpfWNhdGNoKHQpe319KCkscmVxdWlyZShcInV0aWxcIikpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyxcInV0aWxcIl0sZSk6XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0cy5jYm9yPWUoZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHJlcXVpcmUoXCJiaWdudW1iZXIuanNcIil9Y2F0Y2godCl7fX0oKSxyZXF1aXJlKFwidXRpbFwiKSk6dC5jYm9yPWUodC5CaWdOdW1iZXIsdC51dGlsKX0odGhpcywoZnVuY3Rpb24odCxlKXtyZXR1cm4oKCk9Pnt2YXIgcj17NzQyOih0LGUpPT57XCJ1c2Ugc3RyaWN0XCI7ZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKHQpe3ZhciBlPXUodCkscj1lWzBdLG49ZVsxXTtyZXR1cm4gMyoocituKS80LW59LGUudG9CeXRlQXJyYXk9ZnVuY3Rpb24odCl7dmFyIGUscixvPXUodCkscz1vWzBdLGE9b1sxXSxsPW5ldyBpKGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gMyooZStyKS80LXJ9KDAscyxhKSksYz0wLGY9YT4wP3MtNDpzO2ZvcihyPTA7cjxmO3IrPTQpZT1uW3QuY2hhckNvZGVBdChyKV08PDE4fG5bdC5jaGFyQ29kZUF0KHIrMSldPDwxMnxuW3QuY2hhckNvZGVBdChyKzIpXTw8NnxuW3QuY2hhckNvZGVBdChyKzMpXSxsW2MrK109ZT4+MTYmMjU1LGxbYysrXT1lPj44JjI1NSxsW2MrK109MjU1JmU7cmV0dXJuIDI9PT1hJiYoZT1uW3QuY2hhckNvZGVBdChyKV08PDJ8blt0LmNoYXJDb2RlQXQocisxKV0+PjQsbFtjKytdPTI1NSZlKSwxPT09YSYmKGU9blt0LmNoYXJDb2RlQXQocildPDwxMHxuW3QuY2hhckNvZGVBdChyKzEpXTw8NHxuW3QuY2hhckNvZGVBdChyKzIpXT4+MixsW2MrK109ZT4+OCYyNTUsbFtjKytdPTI1NSZlKSxsfSxlLmZyb21CeXRlQXJyYXk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49dC5sZW5ndGgsaT1uJTMsbz1bXSxzPTE2MzgzLGE9MCx1PW4taTthPHU7YSs9cylvLnB1c2gobCh0LGEsYStzPnU/dTphK3MpKTtyZXR1cm4gMT09PWk/KGU9dFtuLTFdLG8ucHVzaChyW2U+PjJdK3JbZTw8NCY2M10rXCI9PVwiKSk6Mj09PWkmJihlPSh0W24tMl08PDgpK3Rbbi0xXSxvLnB1c2gocltlPj4xMF0rcltlPj40JjYzXStyW2U8PDImNjNdK1wiPVwiKSksby5qb2luKFwiXCIpfTtmb3IodmFyIHI9W10sbj1bXSxpPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJyYXksbz1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cIixzPTAsYT1vLmxlbmd0aDtzPGE7KytzKXJbc109b1tzXSxuW28uY2hhckNvZGVBdChzKV09cztmdW5jdGlvbiB1KHQpe3ZhciBlPXQubGVuZ3RoO2lmKGUlND4wKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDRcIik7dmFyIHI9dC5pbmRleE9mKFwiPVwiKTtyZXR1cm4tMT09PXImJihyPWUpLFtyLHI9PT1lPzA6NC1yJTRdfWZ1bmN0aW9uIGwodCxlLG4pe2Zvcih2YXIgaSxvLHM9W10sYT1lO2E8bjthKz0zKWk9KHRbYV08PDE2JjE2NzExNjgwKSsodFthKzFdPDw4JjY1MjgwKSsoMjU1JnRbYSsyXSkscy5wdXNoKHJbKG89aSk+PjE4JjYzXStyW28+PjEyJjYzXStyW28+PjYmNjNdK3JbNjMmb10pO3JldHVybiBzLmpvaW4oXCJcIil9bltcIi1cIi5jaGFyQ29kZUF0KDApXT02MixuW1wiX1wiLmNoYXJDb2RlQXQoMCldPTYzfSw3NjQ6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0IG49cig3NDIpLGk9cig2NDUpLG89XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wuZm9yP1N5bWJvbC5mb3IoXCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbVwiKTpudWxsO2UuQnVmZmVyPXUsZS5TbG93QnVmZmVyPWZ1bmN0aW9uKHQpe3JldHVybit0IT10JiYodD0wKSx1LmFsbG9jKCt0KX0sZS5JTlNQRUNUX01BWF9CWVRFUz01MDtjb25zdCBzPTIxNDc0ODM2NDc7ZnVuY3Rpb24gYSh0KXtpZih0PnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBcIicrdCsnXCIgaXMgaW52YWxpZCBmb3Igb3B0aW9uIFwic2l6ZVwiJyk7Y29uc3QgZT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdS5wcm90b3R5cGUpLGV9ZnVuY3Rpb24gdSh0LGUscil7aWYoXCJudW1iZXJcIj09dHlwZW9mIHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyk7cmV0dXJuIGYodCl9cmV0dXJuIGwodCxlLHIpfWZ1bmN0aW9uIGwodCxlLHIpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXJldHVybiBmdW5jdGlvbih0LGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlJiZcIlwiIT09ZXx8KGU9XCJ1dGY4XCIpLCF1LmlzRW5jb2RpbmcoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK2UpO2NvbnN0IHI9MHx5KHQsZSk7bGV0IG49YShyKTtjb25zdCBpPW4ud3JpdGUodCxlKTtyZXR1cm4gaSE9PXImJihuPW4uc2xpY2UoMCxpKSksbn0odCxlKTtpZihBcnJheUJ1ZmZlci5pc1ZpZXcodCkpcmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEsodCxVaW50OEFycmF5KSl7Y29uc3QgZT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gcChlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKX1yZXR1cm4gaCh0KX0odCk7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgXCIrdHlwZW9mIHQpO2lmKEsodCxBcnJheUJ1ZmZlcil8fHQmJksodC5idWZmZXIsQXJyYXlCdWZmZXIpKXJldHVybiBwKHQsZSxyKTtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXImJihLKHQsU2hhcmVkQXJyYXlCdWZmZXIpfHx0JiZLKHQuYnVmZmVyLFNoYXJlZEFycmF5QnVmZmVyKSkpcmV0dXJuIHAodCxlLHIpO2lmKFwibnVtYmVyXCI9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyk7Y29uc3Qgbj10LnZhbHVlT2YmJnQudmFsdWVPZigpO2lmKG51bGwhPW4mJm4hPT10KXJldHVybiB1LmZyb20obixlLHIpO2NvbnN0IGk9ZnVuY3Rpb24odCl7aWYodS5pc0J1ZmZlcih0KSl7Y29uc3QgZT0wfGQodC5sZW5ndGgpLHI9YShlKTtyZXR1cm4gMD09PXIubGVuZ3RofHx0LmNvcHkociwwLDAsZSkscn1yZXR1cm4gdm9pZCAwIT09dC5sZW5ndGg/XCJudW1iZXJcIiE9dHlwZW9mIHQubGVuZ3RofHxYKHQubGVuZ3RoKT9hKDApOmgodCk6XCJCdWZmZXJcIj09PXQudHlwZSYmQXJyYXkuaXNBcnJheSh0LmRhdGEpP2godC5kYXRhKTp2b2lkIDB9KHQpO2lmKGkpcmV0dXJuIGk7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9U3ltYm9sLnRvUHJpbWl0aXZlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0W1N5bWJvbC50b1ByaW1pdGl2ZV0pcmV0dXJuIHUuZnJvbSh0W1N5bWJvbC50b1ByaW1pdGl2ZV0oXCJzdHJpbmdcIiksZSxyKTt0aHJvdyBuZXcgVHlwZUVycm9yKFwiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgXCIrdHlwZW9mIHQpfWZ1bmN0aW9uIGModCl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIG51bWJlcicpO2lmKHQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIFwiJyt0KydcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKX1mdW5jdGlvbiBmKHQpe3JldHVybiBjKHQpLGEodDwwPzA6MHxkKHQpKX1mdW5jdGlvbiBoKHQpe2NvbnN0IGU9dC5sZW5ndGg8MD8wOjB8ZCh0Lmxlbmd0aCkscj1hKGUpO2ZvcihsZXQgbj0wO248ZTtuKz0xKXJbbl09MjU1JnRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gcCh0LGUscil7aWYoZTwwfHx0LmJ5dGVMZW5ndGg8ZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJvZmZzZXRcIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKTtpZih0LmJ5dGVMZW5ndGg8ZSsocnx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wibGVuZ3RoXCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7bGV0IG47cmV0dXJuIG49dm9pZCAwPT09ZSYmdm9pZCAwPT09cj9uZXcgVWludDhBcnJheSh0KTp2b2lkIDA9PT1yP25ldyBVaW50OEFycmF5KHQsZSk6bmV3IFVpbnQ4QXJyYXkodCxlLHIpLE9iamVjdC5zZXRQcm90b3R5cGVPZihuLHUucHJvdG90eXBlKSxufWZ1bmN0aW9uIGQodCl7aWYodD49cyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkF0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gc2l6ZTogMHhcIitzLnRvU3RyaW5nKDE2KStcIiBieXRlc1wiKTtyZXR1cm4gMHx0fWZ1bmN0aW9uIHkodCxlKXtpZih1LmlzQnVmZmVyKHQpKXJldHVybiB0Lmxlbmd0aDtpZihBcnJheUJ1ZmZlci5pc1ZpZXcodCl8fEsodCxBcnJheUJ1ZmZlcikpcmV0dXJuIHQuYnl0ZUxlbmd0aDtpZihcInN0cmluZ1wiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJzdHJpbmdcIiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBvciBBcnJheUJ1ZmZlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTtjb25zdCByPXQubGVuZ3RoLG49YXJndW1lbnRzLmxlbmd0aD4yJiYhMD09PWFyZ3VtZW50c1syXTtpZighbiYmMD09PXIpcmV0dXJuIDA7bGV0IGk9ITE7Zm9yKDs7KXN3aXRjaChlKXtjYXNlXCJhc2NpaVwiOmNhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOnJldHVybiByO2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOnJldHVybiBZKHQpLmxlbmd0aDtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4gMipyO2Nhc2VcImhleFwiOnJldHVybiByPj4+MTtjYXNlXCJiYXNlNjRcIjpyZXR1cm4gcSh0KS5sZW5ndGg7ZGVmYXVsdDppZihpKXJldHVybiBuPy0xOlkodCkubGVuZ3RoO2U9KFwiXCIrZSkudG9Mb3dlckNhc2UoKSxpPSEwfX1mdW5jdGlvbiBnKHQsZSxyKXtsZXQgbj0hMTtpZigodm9pZCAwPT09ZXx8ZTwwKSYmKGU9MCksZT50aGlzLmxlbmd0aClyZXR1cm5cIlwiO2lmKCh2b2lkIDA9PT1yfHxyPnRoaXMubGVuZ3RoKSYmKHI9dGhpcy5sZW5ndGgpLHI8PTApcmV0dXJuXCJcIjtpZigocj4+Pj0wKTw9KGU+Pj49MCkpcmV0dXJuXCJcIjtmb3IodHx8KHQ9XCJ1dGY4XCIpOzspc3dpdGNoKHQpe2Nhc2VcImhleFwiOnJldHVybiBSKHRoaXMsZSxyKTtjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpyZXR1cm4gSSh0aGlzLGUscik7Y2FzZVwiYXNjaWlcIjpyZXR1cm4gTyh0aGlzLGUscik7Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuIHgodGhpcyxlLHIpO2Nhc2VcImJhc2U2NFwiOnJldHVybiBUKHRoaXMsZSxyKTtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4gTih0aGlzLGUscik7ZGVmYXVsdDppZihuKXRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIit0KTt0PSh0K1wiXCIpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVuY3Rpb24gYih0LGUscil7Y29uc3Qgbj10W2VdO3RbZV09dFtyXSx0W3JdPW59ZnVuY3Rpb24gbSh0LGUscixuLGkpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4tMTtpZihcInN0cmluZ1wiPT10eXBlb2Ygcj8obj1yLHI9MCk6cj4yMTQ3NDgzNjQ3P3I9MjE0NzQ4MzY0NzpyPC0yMTQ3NDgzNjQ4JiYocj0tMjE0NzQ4MzY0OCksWChyPStyKSYmKHI9aT8wOnQubGVuZ3RoLTEpLHI8MCYmKHI9dC5sZW5ndGgrcikscj49dC5sZW5ndGgpe2lmKGkpcmV0dXJuLTE7cj10Lmxlbmd0aC0xfWVsc2UgaWYocjwwKXtpZighaSlyZXR1cm4tMTtyPTB9aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJihlPXUuZnJvbShlLG4pKSx1LmlzQnVmZmVyKGUpKXJldHVybiAwPT09ZS5sZW5ndGg/LTE6dyh0LGUscixuLGkpO2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXJldHVybiBlJj0yNTUsXCJmdW5jdGlvblwiPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZj9pP1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0LGUscik6VWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbCh0LGUscik6dyh0LFtlXSxyLG4saSk7dGhyb3cgbmV3IFR5cGVFcnJvcihcInZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlclwiKX1mdW5jdGlvbiB3KHQsZSxyLG4saSl7bGV0IG8scz0xLGE9dC5sZW5ndGgsdT1lLmxlbmd0aDtpZih2b2lkIDAhPT1uJiYoXCJ1Y3MyXCI9PT0obj1TdHJpbmcobikudG9Mb3dlckNhc2UoKSl8fFwidWNzLTJcIj09PW58fFwidXRmMTZsZVwiPT09bnx8XCJ1dGYtMTZsZVwiPT09bikpe2lmKHQubGVuZ3RoPDJ8fGUubGVuZ3RoPDIpcmV0dXJuLTE7cz0yLGEvPTIsdS89MixyLz0yfWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gMT09PXM/dFtlXTp0LnJlYWRVSW50MTZCRShlKnMpfWlmKGkpe2xldCBuPS0xO2ZvcihvPXI7bzxhO28rKylpZihsKHQsbyk9PT1sKGUsLTE9PT1uPzA6by1uKSl7aWYoLTE9PT1uJiYobj1vKSxvLW4rMT09PXUpcmV0dXJuIG4qc31lbHNlLTEhPT1uJiYoby09by1uKSxuPS0xfWVsc2UgZm9yKHIrdT5hJiYocj1hLXUpLG89cjtvPj0wO28tLSl7bGV0IHI9ITA7Zm9yKGxldCBuPTA7bjx1O24rKylpZihsKHQsbytuKSE9PWwoZSxuKSl7cj0hMTticmVha31pZihyKXJldHVybiBvfXJldHVybi0xfWZ1bmN0aW9uIF8odCxlLHIsbil7cj1OdW1iZXIocil8fDA7Y29uc3QgaT10Lmxlbmd0aC1yO24/KG49TnVtYmVyKG4pKT5pJiYobj1pKTpuPWk7Y29uc3Qgbz1lLmxlbmd0aDtsZXQgcztmb3Iobj5vLzImJihuPW8vMikscz0wO3M8bjsrK3Mpe2NvbnN0IG49cGFyc2VJbnQoZS5zdWJzdHIoMipzLDIpLDE2KTtpZihYKG4pKXJldHVybiBzO3RbcitzXT1ufXJldHVybiBzfWZ1bmN0aW9uIEUodCxlLHIsbil7cmV0dXJuIFYoWShlLHQubGVuZ3RoLXIpLHQscixuKX1mdW5jdGlvbiB2KHQsZSxyLG4pe3JldHVybiBWKGZ1bmN0aW9uKHQpe2NvbnN0IGU9W107Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDsrK3IpZS5wdXNoKDI1NSZ0LmNoYXJDb2RlQXQocikpO3JldHVybiBlfShlKSx0LHIsbil9ZnVuY3Rpb24gUyh0LGUscixuKXtyZXR1cm4gVihxKGUpLHQscixuKX1mdW5jdGlvbiBBKHQsZSxyLG4pe3JldHVybiBWKGZ1bmN0aW9uKHQsZSl7bGV0IHIsbixpO2NvbnN0IG89W107Zm9yKGxldCBzPTA7czx0Lmxlbmd0aCYmISgoZS09Mik8MCk7KytzKXI9dC5jaGFyQ29kZUF0KHMpLG49cj4+OCxpPXIlMjU2LG8ucHVzaChpKSxvLnB1c2gobik7cmV0dXJuIG99KGUsdC5sZW5ndGgtciksdCxyLG4pfWZ1bmN0aW9uIFQodCxlLHIpe3JldHVybiAwPT09ZSYmcj09PXQubGVuZ3RoP24uZnJvbUJ5dGVBcnJheSh0KTpuLmZyb21CeXRlQXJyYXkodC5zbGljZShlLHIpKX1mdW5jdGlvbiBJKHQsZSxyKXtyPU1hdGgubWluKHQubGVuZ3RoLHIpO2NvbnN0IG49W107bGV0IGk9ZTtmb3IoO2k8cjspe2NvbnN0IGU9dFtpXTtsZXQgbz1udWxsLHM9ZT4yMzk/NDplPjIyMz8zOmU+MTkxPzI6MTtpZihpK3M8PXIpe2xldCByLG4sYSx1O3N3aXRjaChzKXtjYXNlIDE6ZTwxMjgmJihvPWUpO2JyZWFrO2Nhc2UgMjpyPXRbaSsxXSwxMjg9PSgxOTImcikmJih1PSgzMSZlKTw8Nnw2MyZyLHU+MTI3JiYobz11KSk7YnJlYWs7Y2FzZSAzOnI9dFtpKzFdLG49dFtpKzJdLDEyOD09KDE5MiZyKSYmMTI4PT0oMTkyJm4pJiYodT0oMTUmZSk8PDEyfCg2MyZyKTw8Nnw2MyZuLHU+MjA0NyYmKHU8NTUyOTZ8fHU+NTczNDMpJiYobz11KSk7YnJlYWs7Y2FzZSA0OnI9dFtpKzFdLG49dFtpKzJdLGE9dFtpKzNdLDEyOD09KDE5MiZyKSYmMTI4PT0oMTkyJm4pJiYxMjg9PSgxOTImYSkmJih1PSgxNSZlKTw8MTh8KDYzJnIpPDwxMnwoNjMmbik8PDZ8NjMmYSx1PjY1NTM1JiZ1PDExMTQxMTImJihvPXUpKX19bnVsbD09PW8/KG89NjU1MzMscz0xKTpvPjY1NTM1JiYoby09NjU1MzYsbi5wdXNoKG8+Pj4xMCYxMDIzfDU1Mjk2KSxvPTU2MzIwfDEwMjMmbyksbi5wdXNoKG8pLGkrPXN9cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0IGU9dC5sZW5ndGg7aWYoZTw9QilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsdCk7bGV0IHI9XCJcIixuPTA7Zm9yKDtuPGU7KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLHQuc2xpY2UobixuKz1CKSk7cmV0dXJuIHJ9KG4pfWUua01heExlbmd0aD1zLHUuVFlQRURfQVJSQVlfU1VQUE9SVD1mdW5jdGlvbigpe3RyeXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDEpLGU9e2ZvbzpmdW5jdGlvbigpe3JldHVybiA0Mn19O3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSxVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZSksNDI9PT10LmZvbygpfWNhdGNoKHQpe3JldHVybiExfX0oKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlR8fFwidW5kZWZpbmVkXCI9PXR5cGVvZiBjb25zb2xlfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBjb25zb2xlLmVycm9yfHxjb25zb2xlLmVycm9yKFwiVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IGBidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQuXCIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LnByb3RvdHlwZSxcInBhcmVudFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKHUuaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnVmZmVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LnByb3RvdHlwZSxcIm9mZnNldFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKHUuaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnl0ZU9mZnNldH19KSx1LnBvb2xTaXplPTgxOTIsdS5mcm9tPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbCh0LGUscil9LE9iamVjdC5zZXRQcm90b3R5cGVPZih1LnByb3RvdHlwZSxVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKHUsVWludDhBcnJheSksdS5hbGxvYz1mdW5jdGlvbih0LGUscil7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gYyh0KSx0PD0wP2EodCk6dm9pZCAwIT09ZT9cInN0cmluZ1wiPT10eXBlb2Ygcj9hKHQpLmZpbGwoZSxyKTphKHQpLmZpbGwoZSk6YSh0KX0odCxlLHIpfSx1LmFsbG9jVW5zYWZlPWZ1bmN0aW9uKHQpe3JldHVybiBmKHQpfSx1LmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbih0KXtyZXR1cm4gZih0KX0sdS5pc0J1ZmZlcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmITA9PT10Ll9pc0J1ZmZlciYmdCE9PXUucHJvdG90eXBlfSx1LmNvbXBhcmU9ZnVuY3Rpb24odCxlKXtpZihLKHQsVWludDhBcnJheSkmJih0PXUuZnJvbSh0LHQub2Zmc2V0LHQuYnl0ZUxlbmd0aCkpLEsoZSxVaW50OEFycmF5KSYmKGU9dS5mcm9tKGUsZS5vZmZzZXQsZS5ieXRlTGVuZ3RoKSksIXUuaXNCdWZmZXIodCl8fCF1LmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImJ1ZjFcIiwgXCJidWYyXCIgYXJndW1lbnRzIG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtpZih0PT09ZSlyZXR1cm4gMDtsZXQgcj10Lmxlbmd0aCxuPWUubGVuZ3RoO2ZvcihsZXQgaT0wLG89TWF0aC5taW4ocixuKTtpPG87KytpKWlmKHRbaV0hPT1lW2ldKXtyPXRbaV0sbj1lW2ldO2JyZWFrfXJldHVybiByPG4/LTE6bjxyPzE6MH0sdS5pc0VuY29kaW5nPWZ1bmN0aW9uKHQpe3N3aXRjaChTdHJpbmcodCkudG9Mb3dlckNhc2UoKSl7Y2FzZVwiaGV4XCI6Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6Y2FzZVwiYXNjaWlcIjpjYXNlXCJsYXRpbjFcIjpjYXNlXCJiaW5hcnlcIjpjYXNlXCJiYXNlNjRcIjpjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0sdS5jb25jYXQ9ZnVuY3Rpb24odCxlKXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpZigwPT09dC5sZW5ndGgpcmV0dXJuIHUuYWxsb2MoMCk7bGV0IHI7aWYodm9pZCAwPT09ZSlmb3IoZT0wLHI9MDtyPHQubGVuZ3RoOysrcillKz10W3JdLmxlbmd0aDtjb25zdCBuPXUuYWxsb2NVbnNhZmUoZSk7bGV0IGk9MDtmb3Iocj0wO3I8dC5sZW5ndGg7KytyKXtsZXQgZT10W3JdO2lmKEsoZSxVaW50OEFycmF5KSlpK2UubGVuZ3RoPm4ubGVuZ3RoPyh1LmlzQnVmZmVyKGUpfHwoZT11LmZyb20oZSkpLGUuY29weShuLGkpKTpVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChuLGUsaSk7ZWxzZXtpZighdS5pc0J1ZmZlcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtlLmNvcHkobixpKX1pKz1lLmxlbmd0aH1yZXR1cm4gbn0sdS5ieXRlTGVuZ3RoPXksdS5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLHUucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5sZW5ndGg7aWYodCUyIT0wKXRocm93IG5ldyBSYW5nZUVycm9yKFwiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHNcIik7Zm9yKGxldCBlPTA7ZTx0O2UrPTIpYih0aGlzLGUsZSsxKTtyZXR1cm4gdGhpc30sdS5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmxlbmd0aDtpZih0JTQhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0c1wiKTtmb3IobGV0IGU9MDtlPHQ7ZSs9NCliKHRoaXMsZSxlKzMpLGIodGhpcyxlKzEsZSsyKTtyZXR1cm4gdGhpc30sdS5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmxlbmd0aDtpZih0JTghPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0c1wiKTtmb3IobGV0IGU9MDtlPHQ7ZSs9OCliKHRoaXMsZSxlKzcpLGIodGhpcyxlKzEsZSs2KSxiKHRoaXMsZSsyLGUrNSksYih0aGlzLGUrMyxlKzQpO3JldHVybiB0aGlzfSx1LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT10P1wiXCI6MD09PWFyZ3VtZW50cy5sZW5ndGg/SSh0aGlzLDAsdCk6Zy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHUucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nPXUucHJvdG90eXBlLnRvU3RyaW5nLHUucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtpZighdS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlclwiKTtyZXR1cm4gdGhpcz09PXR8fDA9PT11LmNvbXBhcmUodGhpcyx0KX0sdS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe2xldCB0PVwiXCI7Y29uc3Qgcj1lLklOU1BFQ1RfTUFYX0JZVEVTO3JldHVybiB0PXRoaXMudG9TdHJpbmcoXCJoZXhcIiwwLHIpLnJlcGxhY2UoLyguezJ9KS9nLFwiJDEgXCIpLnRyaW0oKSx0aGlzLmxlbmd0aD5yJiYodCs9XCIgLi4uIFwiKSxcIjxCdWZmZXIgXCIrdCtcIj5cIn0sbyYmKHUucHJvdG90eXBlW29dPXUucHJvdG90eXBlLmluc3BlY3QpLHUucHJvdG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24odCxlLHIsbixpKXtpZihLKHQsVWludDhBcnJheSkmJih0PXUuZnJvbSh0LHQub2Zmc2V0LHQuYnl0ZUxlbmd0aCkpLCF1LmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInRhcmdldFwiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXkuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgdCk7aWYodm9pZCAwPT09ZSYmKGU9MCksdm9pZCAwPT09ciYmKHI9dD90Lmxlbmd0aDowKSx2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1pJiYoaT10aGlzLmxlbmd0aCksZTwwfHxyPnQubGVuZ3RofHxuPDB8fGk+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJvdXQgb2YgcmFuZ2UgaW5kZXhcIik7aWYobj49aSYmZT49cilyZXR1cm4gMDtpZihuPj1pKXJldHVybi0xO2lmKGU+PXIpcmV0dXJuIDE7aWYodGhpcz09PXQpcmV0dXJuIDA7bGV0IG89KGk+Pj49MCktKG4+Pj49MCkscz0ocj4+Pj0wKS0oZT4+Pj0wKTtjb25zdCBhPU1hdGgubWluKG8scyksbD10aGlzLnNsaWNlKG4saSksYz10LnNsaWNlKGUscik7Zm9yKGxldCB0PTA7dDxhOysrdClpZihsW3RdIT09Y1t0XSl7bz1sW3RdLHM9Y1t0XTticmVha31yZXR1cm4gbzxzPy0xOnM8bz8xOjB9LHUucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4tMSE9PXRoaXMuaW5kZXhPZih0LGUscil9LHUucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBtKHRoaXMsdCxlLHIsITApfSx1LnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbih0LGUscil7cmV0dXJuIG0odGhpcyx0LGUsciwhMSl9LHUucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHZvaWQgMD09PWUpbj1cInV0ZjhcIixyPXRoaXMubGVuZ3RoLGU9MDtlbHNlIGlmKHZvaWQgMD09PXImJlwic3RyaW5nXCI9PXR5cGVvZiBlKW49ZSxyPXRoaXMubGVuZ3RoLGU9MDtlbHNle2lmKCFpc0Zpbml0ZShlKSl0aHJvdyBuZXcgRXJyb3IoXCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZFwiKTtlPj4+PTAsaXNGaW5pdGUocik/KHI+Pj49MCx2b2lkIDA9PT1uJiYobj1cInV0ZjhcIikpOihuPXIscj12b2lkIDApfWNvbnN0IGk9dGhpcy5sZW5ndGgtZTtpZigodm9pZCAwPT09cnx8cj5pKSYmKHI9aSksdC5sZW5ndGg+MCYmKHI8MHx8ZTwwKXx8ZT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzXCIpO258fChuPVwidXRmOFwiKTtsZXQgbz0hMTtmb3IoOzspc3dpdGNoKG4pe2Nhc2VcImhleFwiOnJldHVybiBfKHRoaXMsdCxlLHIpO2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOnJldHVybiBFKHRoaXMsdCxlLHIpO2Nhc2VcImFzY2lpXCI6Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuIHYodGhpcyx0LGUscik7Y2FzZVwiYmFzZTY0XCI6cmV0dXJuIFModGhpcyx0LGUscik7Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6cmV0dXJuIEEodGhpcyx0LGUscik7ZGVmYXVsdDppZihvKXRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIituKTtuPShcIlwiK24pLnRvTG93ZXJDYXNlKCksbz0hMH19LHUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOlwiQnVmZmVyXCIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnJ8fHRoaXMsMCl9fTtjb25zdCBCPTQwOTY7ZnVuY3Rpb24gTyh0LGUscil7bGV0IG49XCJcIjtyPU1hdGgubWluKHQubGVuZ3RoLHIpO2ZvcihsZXQgaT1lO2k8cjsrK2kpbis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmdFtpXSk7cmV0dXJuIG59ZnVuY3Rpb24geCh0LGUscil7bGV0IG49XCJcIjtyPU1hdGgubWluKHQubGVuZ3RoLHIpO2ZvcihsZXQgaT1lO2k8cjsrK2kpbis9U3RyaW5nLmZyb21DaGFyQ29kZSh0W2ldKTtyZXR1cm4gbn1mdW5jdGlvbiBSKHQsZSxyKXtjb25zdCBuPXQubGVuZ3RoOyghZXx8ZTwwKSYmKGU9MCksKCFyfHxyPDB8fHI+bikmJihyPW4pO2xldCBpPVwiXCI7Zm9yKGxldCBuPWU7bjxyOysrbilpKz1KW3Rbbl1dO3JldHVybiBpfWZ1bmN0aW9uIE4odCxlLHIpe2NvbnN0IG49dC5zbGljZShlLHIpO2xldCBpPVwiXCI7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aC0xO3QrPTIpaSs9U3RyaW5nLmZyb21DaGFyQ29kZShuW3RdKzI1NipuW3QrMV0pO3JldHVybiBpfWZ1bmN0aW9uIEwodCxlLHIpe2lmKHQlMSE9MHx8dDwwKXRocm93IG5ldyBSYW5nZUVycm9yKFwib2Zmc2V0IGlzIG5vdCB1aW50XCIpO2lmKHQrZT5yKXRocm93IG5ldyBSYW5nZUVycm9yKFwiVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aFwiKX1mdW5jdGlvbiBQKHQsZSxyLG4saSxvKXtpZighdS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZmZlclwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZihlPml8fGU8byl0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKTtpZihyK24+dC5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbmRleCBvdXQgb2YgcmFuZ2VcIil9ZnVuY3Rpb24gTSh0LGUscixuLGkpe0coZSxuLGksdCxyLDcpO2xldCBvPU51bWJlcihlJkJpZ0ludCg0Mjk0OTY3Mjk1KSk7dFtyKytdPW8sbz4+PTgsdFtyKytdPW8sbz4+PTgsdFtyKytdPW8sbz4+PTgsdFtyKytdPW87bGV0IHM9TnVtYmVyKGU+PkJpZ0ludCgzMikmQmlnSW50KDQyOTQ5NjcyOTUpKTtyZXR1cm4gdFtyKytdPXMscz4+PTgsdFtyKytdPXMscz4+PTgsdFtyKytdPXMscz4+PTgsdFtyKytdPXMscn1mdW5jdGlvbiBVKHQsZSxyLG4saSl7RyhlLG4saSx0LHIsNyk7bGV0IG89TnVtYmVyKGUmQmlnSW50KDQyOTQ5NjcyOTUpKTt0W3IrN109byxvPj49OCx0W3IrNl09byxvPj49OCx0W3IrNV09byxvPj49OCx0W3IrNF09bztsZXQgcz1OdW1iZXIoZT4+QmlnSW50KDMyKSZCaWdJbnQoNDI5NDk2NzI5NSkpO3JldHVybiB0W3IrM109cyxzPj49OCx0W3IrMl09cyxzPj49OCx0W3IrMV09cyxzPj49OCx0W3JdPXMscis4fWZ1bmN0aW9uIGoodCxlLHIsbixpLG8pe2lmKHIrbj50Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKTtpZihyPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbmRleCBvdXQgb2YgcmFuZ2VcIil9ZnVuY3Rpb24gayh0LGUscixuLG8pe3JldHVybiBlPStlLHI+Pj49MCxvfHxqKHQsMCxyLDQpLGkud3JpdGUodCxlLHIsbiwyMyw0KSxyKzR9ZnVuY3Rpb24gJCh0LGUscixuLG8pe3JldHVybiBlPStlLHI+Pj49MCxvfHxqKHQsMCxyLDgpLGkud3JpdGUodCxlLHIsbiw1Miw4KSxyKzh9dS5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24odCxlKXtjb25zdCByPXRoaXMubGVuZ3RoOyh0PX5+dCk8MD8odCs9cik8MCYmKHQ9MCk6dD5yJiYodD1yKSwoZT12b2lkIDA9PT1lP3I6fn5lKTwwPyhlKz1yKTwwJiYoZT0wKTplPnImJihlPXIpLGU8dCYmKGU9dCk7Y29uc3Qgbj10aGlzLnN1YmFycmF5KHQsZSk7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihuLHUucHJvdG90eXBlKSxufSx1LnByb3RvdHlwZS5yZWFkVWludExFPXUucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24odCxlLHIpe3Q+Pj49MCxlPj4+PTAscnx8TCh0LGUsdGhpcy5sZW5ndGgpO2xldCBuPXRoaXNbdF0saT0xLG89MDtmb3IoOysrbzxlJiYoaSo9MjU2KTspbis9dGhpc1t0K29dKmk7cmV0dXJuIG59LHUucHJvdG90eXBlLnJlYWRVaW50QkU9dS5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbih0LGUscil7dD4+Pj0wLGU+Pj49MCxyfHxMKHQsZSx0aGlzLmxlbmd0aCk7bGV0IG49dGhpc1t0Ky0tZV0saT0xO2Zvcig7ZT4wJiYoaSo9MjU2KTspbis9dGhpc1t0Ky0tZV0qaTtyZXR1cm4gbn0sdS5wcm90b3R5cGUucmVhZFVpbnQ4PXUucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8TCh0LDEsdGhpcy5sZW5ndGgpLHRoaXNbdF19LHUucHJvdG90eXBlLnJlYWRVaW50MTZMRT11LnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCwyLHRoaXMubGVuZ3RoKSx0aGlzW3RdfHRoaXNbdCsxXTw8OH0sdS5wcm90b3R5cGUucmVhZFVpbnQxNkJFPXUucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8TCh0LDIsdGhpcy5sZW5ndGgpLHRoaXNbdF08PDh8dGhpc1t0KzFdfSx1LnByb3RvdHlwZS5yZWFkVWludDMyTEU9dS5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsNCx0aGlzLmxlbmd0aCksKHRoaXNbdF18dGhpc1t0KzFdPDw4fHRoaXNbdCsyXTw8MTYpKzE2Nzc3MjE2KnRoaXNbdCszXX0sdS5wcm90b3R5cGUucmVhZFVpbnQzMkJFPXUucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8TCh0LDQsdGhpcy5sZW5ndGgpLDE2Nzc3MjE2KnRoaXNbdF0rKHRoaXNbdCsxXTw8MTZ8dGhpc1t0KzJdPDw4fHRoaXNbdCszXSl9LHUucHJvdG90eXBlLnJlYWRCaWdVSW50NjRMRT1aKChmdW5jdGlvbih0KXtXKHQ+Pj49MCxcIm9mZnNldFwiKTtjb25zdCBlPXRoaXNbdF0scj10aGlzW3QrN107dm9pZCAwIT09ZSYmdm9pZCAwIT09cnx8eih0LHRoaXMubGVuZ3RoLTgpO2NvbnN0IG49ZSsyNTYqdGhpc1srK3RdKzY1NTM2KnRoaXNbKyt0XSt0aGlzWysrdF0qMioqMjQsaT10aGlzWysrdF0rMjU2KnRoaXNbKyt0XSs2NTUzNip0aGlzWysrdF0rcioyKioyNDtyZXR1cm4gQmlnSW50KG4pKyhCaWdJbnQoaSk8PEJpZ0ludCgzMikpfSkpLHUucHJvdG90eXBlLnJlYWRCaWdVSW50NjRCRT1aKChmdW5jdGlvbih0KXtXKHQ+Pj49MCxcIm9mZnNldFwiKTtjb25zdCBlPXRoaXNbdF0scj10aGlzW3QrN107dm9pZCAwIT09ZSYmdm9pZCAwIT09cnx8eih0LHRoaXMubGVuZ3RoLTgpO2NvbnN0IG49ZSoyKioyNCs2NTUzNip0aGlzWysrdF0rMjU2KnRoaXNbKyt0XSt0aGlzWysrdF0saT10aGlzWysrdF0qMioqMjQrNjU1MzYqdGhpc1srK3RdKzI1Nip0aGlzWysrdF0rcjtyZXR1cm4oQmlnSW50KG4pPDxCaWdJbnQoMzIpKStCaWdJbnQoaSl9KSksdS5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKHQsZSxyKXt0Pj4+PTAsZT4+Pj0wLHJ8fEwodCxlLHRoaXMubGVuZ3RoKTtsZXQgbj10aGlzW3RdLGk9MSxvPTA7Zm9yKDsrK288ZSYmKGkqPTI1Nik7KW4rPXRoaXNbdCtvXSppO3JldHVybiBpKj0xMjgsbj49aSYmKG4tPU1hdGgucG93KDIsOCplKSksbn0sdS5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKHQsZSxyKXt0Pj4+PTAsZT4+Pj0wLHJ8fEwodCxlLHRoaXMubGVuZ3RoKTtsZXQgbj1lLGk9MSxvPXRoaXNbdCstLW5dO2Zvcig7bj4wJiYoaSo9MjU2KTspbys9dGhpc1t0Ky0tbl0qaTtyZXR1cm4gaSo9MTI4LG8+PWkmJihvLT1NYXRoLnBvdygyLDgqZSkpLG99LHUucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbdF0/LTEqKDI1NS10aGlzW3RdKzEpOnRoaXNbdF19LHUucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKHQsZSl7dD4+Pj0wLGV8fEwodCwyLHRoaXMubGVuZ3RoKTtjb25zdCByPXRoaXNbdF18dGhpc1t0KzFdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSx1LnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbih0LGUpe3Q+Pj49MCxlfHxMKHQsMix0aGlzLmxlbmd0aCk7Y29uc3Qgcj10aGlzW3QrMV18dGhpc1t0XTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sdS5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCw0LHRoaXMubGVuZ3RoKSx0aGlzW3RdfHRoaXNbdCsxXTw8OHx0aGlzW3QrMl08PDE2fHRoaXNbdCszXTw8MjR9LHUucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsNCx0aGlzLmxlbmd0aCksdGhpc1t0XTw8MjR8dGhpc1t0KzFdPDwxNnx0aGlzW3QrMl08PDh8dGhpc1t0KzNdfSx1LnByb3RvdHlwZS5yZWFkQmlnSW50NjRMRT1aKChmdW5jdGlvbih0KXtXKHQ+Pj49MCxcIm9mZnNldFwiKTtjb25zdCBlPXRoaXNbdF0scj10aGlzW3QrN107dm9pZCAwIT09ZSYmdm9pZCAwIT09cnx8eih0LHRoaXMubGVuZ3RoLTgpO2NvbnN0IG49dGhpc1t0KzRdKzI1Nip0aGlzW3QrNV0rNjU1MzYqdGhpc1t0KzZdKyhyPDwyNCk7cmV0dXJuKEJpZ0ludChuKTw8QmlnSW50KDMyKSkrQmlnSW50KGUrMjU2KnRoaXNbKyt0XSs2NTUzNip0aGlzWysrdF0rdGhpc1srK3RdKjIqKjI0KX0pKSx1LnByb3RvdHlwZS5yZWFkQmlnSW50NjRCRT1aKChmdW5jdGlvbih0KXtXKHQ+Pj49MCxcIm9mZnNldFwiKTtjb25zdCBlPXRoaXNbdF0scj10aGlzW3QrN107dm9pZCAwIT09ZSYmdm9pZCAwIT09cnx8eih0LHRoaXMubGVuZ3RoLTgpO2NvbnN0IG49KGU8PDI0KSs2NTUzNip0aGlzWysrdF0rMjU2KnRoaXNbKyt0XSt0aGlzWysrdF07cmV0dXJuKEJpZ0ludChuKTw8QmlnSW50KDMyKSkrQmlnSW50KHRoaXNbKyt0XSoyKioyNCs2NTUzNip0aGlzWysrdF0rMjU2KnRoaXNbKyt0XStyKX0pKSx1LnByb3RvdHlwZS5yZWFkRmxvYXRMRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8TCh0LDQsdGhpcy5sZW5ndGgpLGkucmVhZCh0aGlzLHQsITAsMjMsNCl9LHUucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsNCx0aGlzLmxlbmd0aCksaS5yZWFkKHRoaXMsdCwhMSwyMyw0KX0sdS5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsOCx0aGlzLmxlbmd0aCksaS5yZWFkKHRoaXMsdCwhMCw1Miw4KX0sdS5wcm90b3R5cGUucmVhZERvdWJsZUJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsOCx0aGlzLmxlbmd0aCksaS5yZWFkKHRoaXMsdCwhMSw1Miw4KX0sdS5wcm90b3R5cGUud3JpdGVVaW50TEU9dS5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24odCxlLHIsbil7dD0rdCxlPj4+PTAscj4+Pj0wLG58fFAodGhpcyx0LGUscixNYXRoLnBvdygyLDgqciktMSwwKTtsZXQgaT0xLG89MDtmb3IodGhpc1tlXT0yNTUmdDsrK288ciYmKGkqPTI1Nik7KXRoaXNbZStvXT10L2kmMjU1O3JldHVybiBlK3J9LHUucHJvdG90eXBlLndyaXRlVWludEJFPXUucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKHQsZSxyLG4pe3Q9K3QsZT4+Pj0wLHI+Pj49MCxufHxQKHRoaXMsdCxlLHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7bGV0IGk9ci0xLG89MTtmb3IodGhpc1tlK2ldPTI1NSZ0Oy0taT49MCYmKG8qPTI1Nik7KXRoaXNbZStpXT10L28mMjU1O3JldHVybiBlK3J9LHUucHJvdG90eXBlLndyaXRlVWludDg9dS5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsMSwyNTUsMCksdGhpc1tlXT0yNTUmdCxlKzF9LHUucHJvdG90eXBlLndyaXRlVWludDE2TEU9dS5wcm90b3R5cGUud3JpdGVVSW50MTZMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsMiw2NTUzNSwwKSx0aGlzW2VdPTI1NSZ0LHRoaXNbZSsxXT10Pj4+OCxlKzJ9LHUucHJvdG90eXBlLndyaXRlVWludDE2QkU9dS5wcm90b3R5cGUud3JpdGVVSW50MTZCRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsMiw2NTUzNSwwKSx0aGlzW2VdPXQ+Pj44LHRoaXNbZSsxXT0yNTUmdCxlKzJ9LHUucHJvdG90eXBlLndyaXRlVWludDMyTEU9dS5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbZSszXT10Pj4+MjQsdGhpc1tlKzJdPXQ+Pj4xNix0aGlzW2UrMV09dD4+PjgsdGhpc1tlXT0yNTUmdCxlKzR9LHUucHJvdG90eXBlLndyaXRlVWludDMyQkU9dS5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbZV09dD4+PjI0LHRoaXNbZSsxXT10Pj4+MTYsdGhpc1tlKzJdPXQ+Pj44LHRoaXNbZSszXT0yNTUmdCxlKzR9LHUucHJvdG90eXBlLndyaXRlQmlnVUludDY0TEU9WigoZnVuY3Rpb24odCxlPTApe3JldHVybiBNKHRoaXMsdCxlLEJpZ0ludCgwKSxCaWdJbnQoXCIweGZmZmZmZmZmZmZmZmZmZmZcIikpfSkpLHUucHJvdG90eXBlLndyaXRlQmlnVUludDY0QkU9WigoZnVuY3Rpb24odCxlPTApe3JldHVybiBVKHRoaXMsdCxlLEJpZ0ludCgwKSxCaWdJbnQoXCIweGZmZmZmZmZmZmZmZmZmZmZcIikpfSkpLHUucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24odCxlLHIsbil7aWYodD0rdCxlPj4+PTAsIW4pe2NvbnN0IG49TWF0aC5wb3coMiw4KnItMSk7UCh0aGlzLHQsZSxyLG4tMSwtbil9bGV0IGk9MCxvPTEscz0wO2Zvcih0aGlzW2VdPTI1NSZ0OysraTxyJiYobyo9MjU2KTspdDwwJiYwPT09cyYmMCE9PXRoaXNbZStpLTFdJiYocz0xKSx0aGlzW2UraV09KHQvbz4+MCktcyYyNTU7cmV0dXJuIGUrcn0sdS5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbih0LGUscixuKXtpZih0PSt0LGU+Pj49MCwhbil7Y29uc3Qgbj1NYXRoLnBvdygyLDgqci0xKTtQKHRoaXMsdCxlLHIsbi0xLC1uKX1sZXQgaT1yLTEsbz0xLHM9MDtmb3IodGhpc1tlK2ldPTI1NSZ0Oy0taT49MCYmKG8qPTI1Nik7KXQ8MCYmMD09PXMmJjAhPT10aGlzW2UraSsxXSYmKHM9MSksdGhpc1tlK2ldPSh0L28+PjApLXMmMjU1O3JldHVybiBlK3J9LHUucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsMSwxMjcsLTEyOCksdDwwJiYodD0yNTUrdCsxKSx0aGlzW2VdPTI1NSZ0LGUrMX0sdS5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSwyLDMyNzY3LC0zMjc2OCksdGhpc1tlXT0yNTUmdCx0aGlzW2UrMV09dD4+PjgsZSsyfSx1LnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxQKHRoaXMsdCxlLDIsMzI3NjcsLTMyNzY4KSx0aGlzW2VdPXQ+Pj44LHRoaXNbZSsxXT0yNTUmdCxlKzJ9LHUucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0aGlzW2VdPTI1NSZ0LHRoaXNbZSsxXT10Pj4+OCx0aGlzW2UrMl09dD4+PjE2LHRoaXNbZSszXT10Pj4+MjQsZSs0fSx1LnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxQKHRoaXMsdCxlLDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksdDwwJiYodD00Mjk0OTY3Mjk1K3QrMSksdGhpc1tlXT10Pj4+MjQsdGhpc1tlKzFdPXQ+Pj4xNix0aGlzW2UrMl09dD4+PjgsdGhpc1tlKzNdPTI1NSZ0LGUrNH0sdS5wcm90b3R5cGUud3JpdGVCaWdJbnQ2NExFPVooKGZ1bmN0aW9uKHQsZT0wKXtyZXR1cm4gTSh0aGlzLHQsZSwtQmlnSW50KFwiMHg4MDAwMDAwMDAwMDAwMDAwXCIpLEJpZ0ludChcIjB4N2ZmZmZmZmZmZmZmZmZmZlwiKSl9KSksdS5wcm90b3R5cGUud3JpdGVCaWdJbnQ2NEJFPVooKGZ1bmN0aW9uKHQsZT0wKXtyZXR1cm4gVSh0aGlzLHQsZSwtQmlnSW50KFwiMHg4MDAwMDAwMDAwMDAwMDAwXCIpLEJpZ0ludChcIjB4N2ZmZmZmZmZmZmZmZmZmZlwiKSl9KSksdS5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gayh0aGlzLHQsZSwhMCxyKX0sdS5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gayh0aGlzLHQsZSwhMSxyKX0sdS5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuICQodGhpcyx0LGUsITAscil9LHUucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiAkKHRoaXMsdCxlLCExLHIpfSx1LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQsZSxyLG4pe2lmKCF1LmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJhcmd1bWVudCBzaG91bGQgYmUgYSBCdWZmZXJcIik7aWYocnx8KHI9MCksbnx8MD09PW58fChuPXRoaXMubGVuZ3RoKSxlPj10Lmxlbmd0aCYmKGU9dC5sZW5ndGgpLGV8fChlPTApLG4+MCYmbjxyJiYobj1yKSxuPT09cilyZXR1cm4gMDtpZigwPT09dC5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZihlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzXCIpO2lmKHI8MHx8cj49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbmRleCBvdXQgb2YgcmFuZ2VcIik7aWYobjwwKXRocm93IG5ldyBSYW5nZUVycm9yKFwic291cmNlRW5kIG91dCBvZiBib3VuZHNcIik7bj50aGlzLmxlbmd0aCYmKG49dGhpcy5sZW5ndGgpLHQubGVuZ3RoLWU8bi1yJiYobj10Lmxlbmd0aC1lK3IpO2NvbnN0IGk9bi1yO3JldHVybiB0aGlzPT09dCYmXCJmdW5jdGlvblwiPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbj90aGlzLmNvcHlXaXRoaW4oZSxyLG4pOlVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKHQsdGhpcy5zdWJhcnJheShyLG4pLGUpLGl9LHUucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24odCxlLHIsbil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlPyhuPWUsZT0wLHI9dGhpcy5sZW5ndGgpOlwic3RyaW5nXCI9PXR5cGVvZiByJiYobj1yLHI9dGhpcy5sZW5ndGgpLHZvaWQgMCE9PW4mJlwic3RyaW5nXCIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoXCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nXCIpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBuJiYhdS5pc0VuY29kaW5nKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIituKTtpZigxPT09dC5sZW5ndGgpe2NvbnN0IGU9dC5jaGFyQ29kZUF0KDApOyhcInV0ZjhcIj09PW4mJmU8MTI4fHxcImxhdGluMVwiPT09bikmJih0PWUpfX1lbHNlXCJudW1iZXJcIj09dHlwZW9mIHQ/dCY9MjU1OlwiYm9vbGVhblwiPT10eXBlb2YgdCYmKHQ9TnVtYmVyKHQpKTtpZihlPDB8fHRoaXMubGVuZ3RoPGV8fHRoaXMubGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJPdXQgb2YgcmFuZ2UgaW5kZXhcIik7aWYocjw9ZSlyZXR1cm4gdGhpcztsZXQgaTtpZihlPj4+PTAscj12b2lkIDA9PT1yP3RoaXMubGVuZ3RoOnI+Pj4wLHR8fCh0PTApLFwibnVtYmVyXCI9PXR5cGVvZiB0KWZvcihpPWU7aTxyOysraSl0aGlzW2ldPXQ7ZWxzZXtjb25zdCBvPXUuaXNCdWZmZXIodCk/dDp1LmZyb20odCxuKSxzPW8ubGVuZ3RoO2lmKDA9PT1zKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSB2YWx1ZSBcIicrdCsnXCIgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQgXCJ2YWx1ZVwiJyk7Zm9yKGk9MDtpPHItZTsrK2kpdGhpc1tpK2VdPW9baSVzXX1yZXR1cm4gdGhpc307Y29uc3QgRj17fTtmdW5jdGlvbiBEKHQsZSxyKXtGW3RdPWNsYXNzIGV4dGVuZHMgcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXCJtZXNzYWdlXCIse3ZhbHVlOmUuYXBwbHkodGhpcyxhcmd1bWVudHMpLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHRoaXMubmFtZT1gJHt0aGlzLm5hbWV9IFske3R9XWAsdGhpcy5zdGFjayxkZWxldGUgdGhpcy5uYW1lfWdldCBjb2RlKCl7cmV0dXJuIHR9c2V0IGNvZGUodCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXCJjb2RlXCIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOnQsd3JpdGFibGU6ITB9KX10b1N0cmluZygpe3JldHVybmAke3RoaXMubmFtZX0gWyR7dH1dOiAke3RoaXMubWVzc2FnZX1gfX19ZnVuY3Rpb24gQyh0KXtsZXQgZT1cIlwiLHI9dC5sZW5ndGg7Y29uc3Qgbj1cIi1cIj09PXRbMF0/MTowO2Zvcig7cj49bis0O3ItPTMpZT1gXyR7dC5zbGljZShyLTMscil9JHtlfWA7cmV0dXJuYCR7dC5zbGljZSgwLHIpfSR7ZX1gfWZ1bmN0aW9uIEcodCxlLHIsbixpLG8pe2lmKHQ+cnx8dDxlKXtjb25zdCBuPVwiYmlnaW50XCI9PXR5cGVvZiBlP1wiblwiOlwiXCI7bGV0IGk7dGhyb3cgaT1vPjM/MD09PWV8fGU9PT1CaWdJbnQoMCk/YD49IDAke259IGFuZCA8IDIke259ICoqICR7OCoobysxKX0ke259YDpgPj0gLSgyJHtufSAqKiAkezgqKG8rMSktMX0ke259KSBhbmQgPCAyICoqICR7OCoobysxKS0xfSR7bn1gOmA+PSAke2V9JHtufSBhbmQgPD0gJHtyfSR7bn1gLG5ldyBGLkVSUl9PVVRfT0ZfUkFOR0UoXCJ2YWx1ZVwiLGksdCl9IWZ1bmN0aW9uKHQsZSxyKXtXKGUsXCJvZmZzZXRcIiksdm9pZCAwIT09dFtlXSYmdm9pZCAwIT09dFtlK3JdfHx6KGUsdC5sZW5ndGgtKHIrMSkpfShuLGksbyl9ZnVuY3Rpb24gVyh0LGUpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0KXRocm93IG5ldyBGLkVSUl9JTlZBTElEX0FSR19UWVBFKGUsXCJudW1iZXJcIix0KX1mdW5jdGlvbiB6KHQsZSxyKXtpZihNYXRoLmZsb29yKHQpIT09dCl0aHJvdyBXKHQsciksbmV3IEYuRVJSX09VVF9PRl9SQU5HRShyfHxcIm9mZnNldFwiLFwiYW4gaW50ZWdlclwiLHQpO2lmKGU8MCl0aHJvdyBuZXcgRi5FUlJfQlVGRkVSX09VVF9PRl9CT1VORFM7dGhyb3cgbmV3IEYuRVJSX09VVF9PRl9SQU5HRShyfHxcIm9mZnNldFwiLGA+PSAke3I/MTowfSBhbmQgPD0gJHtlfWAsdCl9RChcIkVSUl9CVUZGRVJfT1VUX09GX0JPVU5EU1wiLChmdW5jdGlvbih0KXtyZXR1cm4gdD9gJHt0fSBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHNgOlwiQXR0ZW1wdCB0byBhY2Nlc3MgbWVtb3J5IG91dHNpZGUgYnVmZmVyIGJvdW5kc1wifSksUmFuZ2VFcnJvciksRChcIkVSUl9JTlZBTElEX0FSR19UWVBFXCIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuYFRoZSBcIiR7dH1cIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIGV9YH0pLFR5cGVFcnJvciksRChcIkVSUl9PVVRfT0ZfUkFOR0VcIiwoZnVuY3Rpb24odCxlLHIpe2xldCBuPWBUaGUgdmFsdWUgb2YgXCIke3R9XCIgaXMgb3V0IG9mIHJhbmdlLmAsaT1yO3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKHIpJiZNYXRoLmFicyhyKT4yKiozMj9pPUMoU3RyaW5nKHIpKTpcImJpZ2ludFwiPT10eXBlb2YgciYmKGk9U3RyaW5nKHIpLChyPkJpZ0ludCgyKSoqQmlnSW50KDMyKXx8cjwtKEJpZ0ludCgyKSoqQmlnSW50KDMyKSkpJiYoaT1DKGkpKSxpKz1cIm5cIiksbis9YCBJdCBtdXN0IGJlICR7ZX0uIFJlY2VpdmVkICR7aX1gLG59KSxSYW5nZUVycm9yKTtjb25zdCBIPS9bXisvMC05QS1aYS16LV9dL2c7ZnVuY3Rpb24gWSh0LGUpe2xldCByO2U9ZXx8MS8wO2NvbnN0IG49dC5sZW5ndGg7bGV0IGk9bnVsbDtjb25zdCBvPVtdO2ZvcihsZXQgcz0wO3M8bjsrK3Mpe2lmKHI9dC5jaGFyQ29kZUF0KHMpLHI+NTUyOTUmJnI8NTczNDQpe2lmKCFpKXtpZihyPjU2MzE5KXsoZS09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYocysxPT09bil7KGUtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWk9cjtjb250aW51ZX1pZihyPDU2MzIwKXsoZS09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSksaT1yO2NvbnRpbnVlfXI9NjU1MzYrKGktNTUyOTY8PDEwfHItNTYzMjApfWVsc2UgaSYmKGUtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2lmKGk9bnVsbCxyPDEyOCl7aWYoKGUtPTEpPDApYnJlYWs7by5wdXNoKHIpfWVsc2UgaWYocjwyMDQ4KXtpZigoZS09Mik8MClicmVhaztvLnB1c2gocj4+NnwxOTIsNjMmcnwxMjgpfWVsc2UgaWYocjw2NTUzNil7aWYoKGUtPTMpPDApYnJlYWs7by5wdXNoKHI+PjEyfDIyNCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9ZWxzZXtpZighKHI8MTExNDExMikpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb2RlIHBvaW50XCIpO2lmKChlLT00KTwwKWJyZWFrO28ucHVzaChyPj4xOHwyNDAscj4+MTImNjN8MTI4LHI+PjYmNjN8MTI4LDYzJnJ8MTI4KX19cmV0dXJuIG99ZnVuY3Rpb24gcSh0KXtyZXR1cm4gbi50b0J5dGVBcnJheShmdW5jdGlvbih0KXtpZigodD0odD10LnNwbGl0KFwiPVwiKVswXSkudHJpbSgpLnJlcGxhY2UoSCxcIlwiKSkubGVuZ3RoPDIpcmV0dXJuXCJcIjtmb3IoO3QubGVuZ3RoJTQhPTA7KXQrPVwiPVwiO3JldHVybiB0fSh0KSl9ZnVuY3Rpb24gVih0LGUscixuKXtsZXQgaTtmb3IoaT0wO2k8biYmIShpK3I+PWUubGVuZ3RofHxpPj10Lmxlbmd0aCk7KytpKWVbaStyXT10W2ldO3JldHVybiBpfWZ1bmN0aW9uIEsodCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIGV8fG51bGwhPXQmJm51bGwhPXQuY29uc3RydWN0b3ImJm51bGwhPXQuY29uc3RydWN0b3IubmFtZSYmdC5jb25zdHJ1Y3Rvci5uYW1lPT09ZS5uYW1lfWZ1bmN0aW9uIFgodCl7cmV0dXJuIHQhPXR9Y29uc3QgSj1mdW5jdGlvbigpe2NvbnN0IHQ9XCIwMTIzNDU2Nzg5YWJjZGVmXCIsZT1uZXcgQXJyYXkoMjU2KTtmb3IobGV0IHI9MDtyPDE2Oysrcil7Y29uc3Qgbj0xNipyO2ZvcihsZXQgaT0wO2k8MTY7KytpKWVbbitpXT10W3JdK3RbaV19cmV0dXJuIGV9KCk7ZnVuY3Rpb24gWih0KXtyZXR1cm5cInVuZGVmaW5lZFwiPT10eXBlb2YgQmlnSW50P1E6dH1mdW5jdGlvbiBRKCl7dGhyb3cgbmV3IEVycm9yKFwiQmlnSW50IG5vdCBzdXBwb3J0ZWRcIil9fSwxNDE6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2UuQmlnTnVtYmVyPXIoNjYpLkJpZ051bWJlcixlLkNvbW1lbnRlZD1yKDIwKSxlLkRpYWdub3NlPXIoNjk0KSxlLkRlY29kZXI9cig3NzQpLGUuRW5jb2Rlcj1yKDY2NiksZS5TaW1wbGU9cigzMiksZS5UYWdnZWQ9cig3ODUpLGUuTWFwPXIoNzApLGUuVUk9ZS5Db21tZW50ZWQuY29tbWVudCxlLmZJPWUuRGVjb2Rlci5kZWNvZGVBbGwsZS5oOD1lLkRlY29kZXIuZGVjb2RlRmlyc3QsZS5jYz1lLkRlY29kZXIuZGVjb2RlQWxsU3luYyxlLiR1PWUuRGVjb2Rlci5kZWNvZGVGaXJzdFN5bmMsZS5NPWUuRGlhZ25vc2UuZGlhZ25vc2UsZS5jdj1lLkVuY29kZXIuZW5jb2RlLGUuTjI9ZS5FbmNvZGVyLmVuY29kZUNhbm9uaWNhbCxlLlRHPWUuRW5jb2Rlci5lbmNvZGVPbmUsZS5XUj1lLkVuY29kZXIuZW5jb2RlQXN5bmMsZS5KeD1lLkRlY29kZXIuZGVjb2RlRmlyc3RTeW5jLGUud3c9e2RlY29kZTplLkRlY29kZXIuZGVjb2RlRmlyc3RTeW5jLGVuY29kZTplLkVuY29kZXIuZW5jb2RlLGJ1ZmZlcjohMCxuYW1lOlwiY2JvclwifSxlLnZjPSEwfSwyMDoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7Y29uc3Qgbj1yKDgzMCksaT1yKDg3Myksbz1yKDc3NCkscz1yKDIwMikse01UOmEsTlVNQllURVM6dSxTWU1TOmx9PXIoNjYpLHtCdWZmZXI6Y309cig3NjQpO2Z1bmN0aW9uIGYodCl7cmV0dXJuIHQ+MT9cInNcIjpcIlwifWNsYXNzIGggZXh0ZW5kcyBuLlRyYW5zZm9ybXtjb25zdHJ1Y3Rvcih0PXt9KXtjb25zdHtkZXB0aDplPTEsbWF4X2RlcHRoOnI9MTAsbm9fc3VtbWFyeTpuPSExLHRhZ3M6aT17fSxiaWdpbnQ6YSxwcmVmZXJXZWI6dSxlbmNvZGluZzpsLC4uLmN9PXQ7c3VwZXIoey4uLmMscmVhZGFibGVPYmplY3RNb2RlOiExLHdyaXRhYmxlT2JqZWN0TW9kZTohMX0pLHRoaXMuZGVwdGg9ZSx0aGlzLm1heF9kZXB0aD1yLHRoaXMuYWxsPW5ldyBzLGlbMjRdfHwoaVsyNF09dGhpcy5fdGFnXzI0LmJpbmQodGhpcykpLHRoaXMucGFyc2VyPW5ldyBvKHt0YWdzOmksbWF4X2RlcHRoOnIsYmlnaW50OmEscHJlZmVyV2ViOnUsZW5jb2Rpbmc6bH0pLHRoaXMucGFyc2VyLm9uKFwidmFsdWVcIix0aGlzLl9vbl92YWx1ZS5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcInN0YXJ0XCIsdGhpcy5fb25fc3RhcnQuYmluZCh0aGlzKSksdGhpcy5wYXJzZXIub24oXCJzdGFydC1zdHJpbmdcIix0aGlzLl9vbl9zdGFydF9zdHJpbmcuYmluZCh0aGlzKSksdGhpcy5wYXJzZXIub24oXCJzdG9wXCIsdGhpcy5fb25fc3RvcC5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcIm1vcmUtYnl0ZXNcIix0aGlzLl9vbl9tb3JlLmJpbmQodGhpcykpLHRoaXMucGFyc2VyLm9uKFwiZXJyb3JcIix0aGlzLl9vbl9lcnJvci5iaW5kKHRoaXMpKSxufHx0aGlzLnBhcnNlci5vbihcImRhdGFcIix0aGlzLl9vbl9kYXRhLmJpbmQodGhpcykpLHRoaXMucGFyc2VyLmJzLm9uKFwicmVhZFwiLHRoaXMuX29uX3JlYWQuYmluZCh0aGlzKSl9X3RhZ18yNCh0KXtjb25zdCBlPW5ldyBoKHtkZXB0aDp0aGlzLmRlcHRoKzEsbm9fc3VtbWFyeTohMH0pO2Uub24oXCJkYXRhXCIsKHQ9PnRoaXMucHVzaCh0KSkpLGUub24oXCJlcnJvclwiLCh0PT50aGlzLmVtaXQoXCJlcnJvclwiLHQpKSksZS5lbmQodCl9X3RyYW5zZm9ybSh0LGUscil7dGhpcy5wYXJzZXIud3JpdGUodCxlLHIpfV9mbHVzaCh0KXtyZXR1cm4gdGhpcy5wYXJzZXIuX2ZsdXNoKHQpfXN0YXRpYyBjb21tZW50KHQsZT17fSxyPW51bGwpe2lmKG51bGw9PXQpdGhyb3cgbmV3IEVycm9yKFwiaW5wdXQgcmVxdWlyZWRcIik7KHtvcHRpb25zOmUsY2I6cn09ZnVuY3Rpb24odCxlKXtzd2l0Y2godHlwZW9mIHQpe2Nhc2VcImZ1bmN0aW9uXCI6cmV0dXJue29wdGlvbnM6e30sY2I6dH07Y2FzZVwic3RyaW5nXCI6cmV0dXJue29wdGlvbnM6e2VuY29kaW5nOnR9LGNiOmV9O2Nhc2VcIm51bWJlclwiOnJldHVybntvcHRpb25zOnttYXhfZGVwdGg6dH0sY2I6ZX07Y2FzZVwib2JqZWN0XCI6cmV0dXJue29wdGlvbnM6dHx8e30sY2I6ZX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5rbm93biBvcHRpb24gdHlwZVwiKX19KGUscikpO2NvbnN0IG49bmV3IHMse2VuY29kaW5nOm89XCJoZXhcIiwuLi5hfT1lLHU9bmV3IGgoYSk7bGV0IGw9bnVsbDtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiByPyh1Lm9uKFwiZW5kXCIsKCgpPT57cihudWxsLG4udG9TdHJpbmcoXCJ1dGY4XCIpKX0pKSx1Lm9uKFwiZXJyb3JcIixyKSk6bD1uZXcgUHJvbWlzZSgoKHQsZSk9Pnt1Lm9uKFwiZW5kXCIsKCgpPT57dChuLnRvU3RyaW5nKFwidXRmOFwiKSl9KSksdS5vbihcImVycm9yXCIsZSl9KSksdS5waXBlKG4pLGkuZ3Vlc3NFbmNvZGluZyh0LG8pLnBpcGUodSksbH1fb25fZXJyb3IodCl7dGhpcy5wdXNoKFwiRVJST1I6IFwiKSx0aGlzLnB1c2godC50b1N0cmluZygpKSx0aGlzLnB1c2goXCJcXG5cIil9X29uX3JlYWQodCl7dGhpcy5hbGwud3JpdGUodCk7Y29uc3QgZT10LnRvU3RyaW5nKFwiaGV4XCIpO3RoaXMucHVzaChuZXcgQXJyYXkodGhpcy5kZXB0aCsxKS5qb2luKFwiICBcIikpLHRoaXMucHVzaChlKTtsZXQgcj0yKih0aGlzLm1heF9kZXB0aC10aGlzLmRlcHRoKS1lLmxlbmd0aDtyZXR1cm4gcjwxJiYocj0xKSx0aGlzLnB1c2gobmV3IEFycmF5KHIrMSkuam9pbihcIiBcIikpLHRoaXMucHVzaChcIi0tIFwiKX1fb25fbW9yZSh0LGUscixuKXtsZXQgaT1cIlwiO3N3aXRjaCh0aGlzLmRlcHRoKyssdCl7Y2FzZSBhLlBPU19JTlQ6aT1cIlBvc2l0aXZlIG51bWJlcixcIjticmVhaztjYXNlIGEuTkVHX0lOVDppPVwiTmVnYXRpdmUgbnVtYmVyLFwiO2JyZWFrO2Nhc2UgYS5BUlJBWTppPVwiQXJyYXksIGxlbmd0aFwiO2JyZWFrO2Nhc2UgYS5NQVA6aT1cIk1hcCwgY291bnRcIjticmVhaztjYXNlIGEuQllURV9TVFJJTkc6aT1cIkJ5dGVzLCBsZW5ndGhcIjticmVhaztjYXNlIGEuVVRGOF9TVFJJTkc6aT1cIlN0cmluZywgbGVuZ3RoXCI7YnJlYWs7Y2FzZSBhLlNJTVBMRV9GTE9BVDppPTE9PT1lP1wiU2ltcGxlIHZhbHVlLFwiOlwiRmxvYXQsXCJ9cmV0dXJuIHRoaXMucHVzaChpK1wiIG5leHQgXCIrZStcIiBieXRlXCIrZihlKStcIlxcblwiKX1fb25fc3RhcnRfc3RyaW5nKHQsZSxyLG4pe2xldCBpPVwiXCI7c3dpdGNoKHRoaXMuZGVwdGgrKyx0KXtjYXNlIGEuQllURV9TVFJJTkc6aT1cIkJ5dGVzLCBsZW5ndGg6IFwiK2U7YnJlYWs7Y2FzZSBhLlVURjhfU1RSSU5HOmk9XCJTdHJpbmcsIGxlbmd0aDogXCIrZS50b1N0cmluZygpfXJldHVybiB0aGlzLnB1c2goaStcIlxcblwiKX1fb25fc3RhcnQodCxlLHIsbil7c3dpdGNoKHRoaXMuZGVwdGgrKyxyKXtjYXNlIGEuQVJSQVk6dGhpcy5wdXNoKGBbJHtufV0sIGApO2JyZWFrO2Nhc2UgYS5NQVA6biUyP3RoaXMucHVzaChge1ZhbDoke01hdGguZmxvb3Iobi8yKX19LCBgKTp0aGlzLnB1c2goYHtLZXk6JHtNYXRoLmZsb29yKG4vMil9fSwgYCl9c3dpdGNoKHQpe2Nhc2UgYS5UQUc6dGhpcy5wdXNoKGBUYWcgIyR7ZX1gKSwyND09PWUmJnRoaXMucHVzaChcIiBFbmNvZGVkIENCT1IgZGF0YSBpdGVtXCIpO2JyZWFrO2Nhc2UgYS5BUlJBWTplPT09bC5TVFJFQU0/dGhpcy5wdXNoKFwiQXJyYXkgKHN0cmVhbWluZylcIik6dGhpcy5wdXNoKGBBcnJheSwgJHtlfSBpdGVtJHtmKGUpfWApO2JyZWFrO2Nhc2UgYS5NQVA6ZT09PWwuU1RSRUFNP3RoaXMucHVzaChcIk1hcCAoc3RyZWFtaW5nKVwiKTp0aGlzLnB1c2goYE1hcCwgJHtlfSBwYWlyJHtmKGUpfWApO2JyZWFrO2Nhc2UgYS5CWVRFX1NUUklORzp0aGlzLnB1c2goXCJCeXRlcyAoc3RyZWFtaW5nKVwiKTticmVhaztjYXNlIGEuVVRGOF9TVFJJTkc6dGhpcy5wdXNoKFwiU3RyaW5nIChzdHJlYW1pbmcpXCIpfXJldHVybiB0aGlzLnB1c2goXCJcXG5cIil9X29uX3N0b3AodCl7cmV0dXJuIHRoaXMuZGVwdGgtLX1fb25fdmFsdWUodCxlLHIsbil7aWYodCE9PWwuQlJFQUspc3dpdGNoKGUpe2Nhc2UgYS5BUlJBWTp0aGlzLnB1c2goYFske3J9XSwgYCk7YnJlYWs7Y2FzZSBhLk1BUDpyJTI/dGhpcy5wdXNoKGB7VmFsOiR7TWF0aC5mbG9vcihyLzIpfX0sIGApOnRoaXMucHVzaChge0tleToke01hdGguZmxvb3Ioci8yKX19LCBgKX1jb25zdCBvPWkuY2JvclZhbHVlVG9TdHJpbmcodCwtMS8wKTtzd2l0Y2goXCJzdHJpbmdcIj09dHlwZW9mIHR8fGMuaXNCdWZmZXIodCk/KHQubGVuZ3RoPjAmJih0aGlzLnB1c2gobyksdGhpcy5wdXNoKFwiXFxuXCIpKSx0aGlzLmRlcHRoLS0pOih0aGlzLnB1c2gobyksdGhpcy5wdXNoKFwiXFxuXCIpKSxuKXtjYXNlIHUuT05FOmNhc2UgdS5UV086Y2FzZSB1LkZPVVI6Y2FzZSB1LkVJR0hUOnRoaXMuZGVwdGgtLX19X29uX2RhdGEoKXtyZXR1cm4gdGhpcy5wdXNoKFwiMHhcIiksdGhpcy5wdXNoKHRoaXMuYWxsLnJlYWQoKS50b1N0cmluZyhcImhleFwiKSksdGhpcy5wdXNoKFwiXFxuXCIpfX10LmV4cG9ydHM9aH0sNjY6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2xldCBuPW51bGw7dHJ5e249cig5MzcpLkJpZ051bWJlcn1jYXRjaCh0KXt9aWYoZS5CaWdOdW1iZXI9bixlLk1UPXtQT1NfSU5UOjAsTkVHX0lOVDoxLEJZVEVfU1RSSU5HOjIsVVRGOF9TVFJJTkc6MyxBUlJBWTo0LE1BUDo1LFRBRzo2LFNJTVBMRV9GTE9BVDo3fSxlLlRBRz17REFURV9TVFJJTkc6MCxEQVRFX0VQT0NIOjEsUE9TX0JJR0lOVDoyLE5FR19CSUdJTlQ6MyxERUNJTUFMX0ZSQUM6NCxCSUdGTE9BVDo1LEJBU0U2NFVSTF9FWFBFQ1RFRDoyMSxCQVNFNjRfRVhQRUNURUQ6MjIsQkFTRTE2X0VYUEVDVEVEOjIzLENCT1I6MjQsVVJJOjMyLEJBU0U2NFVSTDozMyxCQVNFNjQ6MzQsUkVHRVhQOjM1LE1JTUU6MzYsU0VUOjI1OH0sZS5OVU1CWVRFUz17WkVSTzowLE9ORToyNCxUV086MjUsRk9VUjoyNixFSUdIVDoyNyxJTkRFRklOSVRFOjMxfSxlLlNJTVBMRT17RkFMU0U6MjAsVFJVRToyMSxOVUxMOjIyLFVOREVGSU5FRDoyM30sZS5TWU1TPXtOVUxMOlN5bWJvbC5mb3IoXCJnaXRodWIuY29tL2hpbGRqai9ub2RlLWNib3IvbnVsbFwiKSxVTkRFRklORUQ6U3ltYm9sLmZvcihcImdpdGh1Yi5jb20vaGlsZGpqL25vZGUtY2Jvci91bmRlZlwiKSxQQVJFTlQ6U3ltYm9sLmZvcihcImdpdGh1Yi5jb20vaGlsZGpqL25vZGUtY2Jvci9wYXJlbnRcIiksQlJFQUs6U3ltYm9sLmZvcihcImdpdGh1Yi5jb20vaGlsZGpqL25vZGUtY2Jvci9icmVha1wiKSxTVFJFQU06U3ltYm9sLmZvcihcImdpdGh1Yi5jb20vaGlsZGpqL25vZGUtY2Jvci9zdHJlYW1cIil9LGUuU0hJRlQzMj00Mjk0OTY3Mjk2LGUuQkk9e01JTlVTX09ORTpCaWdJbnQoLTEpLE5FR19NQVg6QmlnSW50KC0xKS1CaWdJbnQoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLE1BWElOVDMyOkJpZ0ludChcIjB4ZmZmZmZmZmZcIiksTUFYSU5UNjQ6QmlnSW50KFwiMHhmZmZmZmZmZmZmZmZmZmZmXCIpLFNISUZUMzI6QmlnSW50KGUuU0hJRlQzMil9LGUuQmlnTnVtYmVyKXtjb25zdCB0PW5ldyBlLkJpZ051bWJlcigtMSk7ZS5CTj17TUlOVVNfT05FOnQsTkVHX01BWDp0Lm1pbnVzKG5ldyBlLkJpZ051bWJlcihOdW1iZXIuTUFYX1NBRkVfSU5URUdFUi50b1N0cmluZygxNiksMTYpKSxUV086bmV3IGUuQmlnTnVtYmVyKDIpLE1BWElOVDpuZXcgZS5CaWdOdW1iZXIoXCIweDIwMDAwMDAwMDAwMDAwXCIpLE1BWElOVDMyOm5ldyBlLkJpZ051bWJlcig0Mjk0OTY3Mjk1KSxNQVhJTlQ2NDpuZXcgZS5CaWdOdW1iZXIoXCIweGZmZmZmZmZmZmZmZmZmZmZcIiksU0hJRlQzMjpuZXcgZS5CaWdOdW1iZXIoZS5TSElGVDMyKX19fSw3NzQ6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0IG49cig3MSksaT1yKDc4NSksbz1yKDMyKSxzPXIoODczKSxhPXIoMjAyKSx1PXIoNjYpLHtNVDpsLE5VTUJZVEVTOmMsU1lNUzpmLEJJOmh9PXUse0J1ZmZlcjpwfT1yKDc2NCksZD1TeW1ib2woXCJjb3VudFwiKSx5PVN5bWJvbChcIm1ham9yIHR5cGVcIiksZz1TeW1ib2woXCJlcnJvclwiKSxiPVN5bWJvbChcIm5vdCBmb3VuZFwiKTtmdW5jdGlvbiBtKHQsZSxyKXtjb25zdCBuPVtdO3JldHVybiBuW2RdPXIsbltmLlBBUkVOVF09dCxuW3ldPWUsbn1mdW5jdGlvbiB3KHQsZSl7Y29uc3Qgcj1uZXcgYTtyZXR1cm4gcltkXT0tMSxyW2YuUEFSRU5UXT10LHJbeV09ZSxyfWZ1bmN0aW9uIF8odCl7cmV0dXJuIHMuYnVmZmVyVG9CaWdJbnQodCl9ZnVuY3Rpb24gRSh0KXtyZXR1cm4gaC5NSU5VU19PTkUtcy5idWZmZXJUb0JpZ0ludCh0KX1jbGFzcyB2IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCxlKXtzdXBlcihgVW5leHBlY3RlZCBkYXRhOiAweCR7dC50b1N0cmluZygxNil9YCksdGhpcy5uYW1lPVwiVW5leHBlY3RlZERhdGFFcnJvclwiLHRoaXMuYnl0ZT10LHRoaXMudmFsdWU9ZX19ZnVuY3Rpb24gUyh0LGUpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZVwiZnVuY3Rpb25cIjpyZXR1cm57b3B0aW9uczp7fSxjYjp0fTtjYXNlXCJzdHJpbmdcIjpyZXR1cm57b3B0aW9uczp7ZW5jb2Rpbmc6dH0sY2I6ZX07Y2FzZVwib2JqZWN0XCI6cmV0dXJue29wdGlvbnM6dHx8e30sY2I6ZX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5rbm93biBvcHRpb24gdHlwZVwiKX19Y2xhc3MgQSBleHRlbmRzIG57Y29uc3RydWN0b3IodD17fSl7Y29uc3R7dGFnczplPXt9LG1heF9kZXB0aDpyPS0xLGJpZ2ludDpuPSEwLHByZWZlcldlYjppPSExLHJlcXVpcmVkOm89ITEsZW5jb2Rpbmc6cz1cImhleFwiLGV4dGVuZGVkUmVzdWx0czp1PSExLC4uLmx9PXQ7c3VwZXIoe2RlZmF1bHRFbmNvZGluZzpzLC4uLmx9KSx0aGlzLnJ1bm5pbmc9ITAsdGhpcy5tYXhfZGVwdGg9cix0aGlzLnRhZ3M9ZSx0aGlzLnByZWZlcldlYj1pLHRoaXMuZXh0ZW5kZWRSZXN1bHRzPXUsdGhpcy5iaWdpbnQ9bix0aGlzLnJlcXVpcmVkPW8sdSYmKHRoaXMuYnMub24oXCJyZWFkXCIsdGhpcy5fb25SZWFkLmJpbmQodGhpcykpLHRoaXMudmFsdWVCeXRlcz1uZXcgYSksbiYmKG51bGw9PXRoaXMudGFnc1syXSYmKHRoaXMudGFnc1syXT1fKSxudWxsPT10aGlzLnRhZ3NbM10mJih0aGlzLnRhZ3NbM109RSkpfXN0YXRpYyBudWxsY2hlY2sodCl7c3dpdGNoKHQpe2Nhc2UgZi5OVUxMOnJldHVybiBudWxsO2Nhc2UgZi5VTkRFRklORUQ6cmV0dXJuO2Nhc2UgYjp0aHJvdyBuZXcgRXJyb3IoXCJWYWx1ZSBub3QgZm91bmRcIik7ZGVmYXVsdDpyZXR1cm4gdH19c3RhdGljIGRlY29kZUZpcnN0U3luYyh0LGU9e30pe2lmKG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcImlucHV0IHJlcXVpcmVkXCIpOyh7b3B0aW9uczplfT1TKGUpKTtjb25zdHtlbmNvZGluZzpyPVwiaGV4XCIsLi4ubn09ZSxpPW5ldyBBKG4pLG89cy5ndWVzc0VuY29kaW5nKHQsciksYT1pLl9wYXJzZSgpO2xldCB1PWEubmV4dCgpO2Zvcig7IXUuZG9uZTspe2NvbnN0IHQ9by5yZWFkKHUudmFsdWUpO2lmKG51bGw9PXR8fHQubGVuZ3RoIT09dS52YWx1ZSl0aHJvdyBuZXcgRXJyb3IoXCJJbnN1ZmZpY2llbnQgZGF0YVwiKTtpLmV4dGVuZGVkUmVzdWx0cyYmaS52YWx1ZUJ5dGVzLndyaXRlKHQpLHU9YS5uZXh0KHQpfWxldCBsPW51bGw7aWYoaS5leHRlbmRlZFJlc3VsdHMpbD11LnZhbHVlLGwudW51c2VkPW8ucmVhZCgpO2Vsc2UgaWYobD1BLm51bGxjaGVjayh1LnZhbHVlKSxvLmxlbmd0aD4wKXtjb25zdCB0PW8ucmVhZCgxKTt0aHJvdyBvLnVuc2hpZnQodCksbmV3IHYodFswXSxsKX1yZXR1cm4gbH1zdGF0aWMgZGVjb2RlQWxsU3luYyh0LGU9e30pe2lmKG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcImlucHV0IHJlcXVpcmVkXCIpOyh7b3B0aW9uczplfT1TKGUpKTtjb25zdHtlbmNvZGluZzpyPVwiaGV4XCIsLi4ubn09ZSxpPW5ldyBBKG4pLG89cy5ndWVzc0VuY29kaW5nKHQsciksYT1bXTtmb3IoO28ubGVuZ3RoPjA7KXtjb25zdCB0PWkuX3BhcnNlKCk7bGV0IGU9dC5uZXh0KCk7Zm9yKDshZS5kb25lOyl7Y29uc3Qgcj1vLnJlYWQoZS52YWx1ZSk7aWYobnVsbD09cnx8ci5sZW5ndGghPT1lLnZhbHVlKXRocm93IG5ldyBFcnJvcihcIkluc3VmZmljaWVudCBkYXRhXCIpO2kuZXh0ZW5kZWRSZXN1bHRzJiZpLnZhbHVlQnl0ZXMud3JpdGUociksZT10Lm5leHQocil9YS5wdXNoKEEubnVsbGNoZWNrKGUudmFsdWUpKX1yZXR1cm4gYX1zdGF0aWMgZGVjb2RlRmlyc3QodCxlPXt9LHI9bnVsbCl7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW5wdXQgcmVxdWlyZWRcIik7KHtvcHRpb25zOmUsY2I6cn09UyhlLHIpKTtjb25zdHtlbmNvZGluZzpuPVwiaGV4XCIscmVxdWlyZWQ6aT0hMSwuLi5vfT1lLGE9bmV3IEEobyk7bGV0IHU9Yjtjb25zdCBsPXMuZ3Vlc3NFbmNvZGluZyh0LG4pLGM9bmV3IFByb21pc2UoKCh0LGUpPT57YS5vbihcImRhdGFcIiwodD0+e3U9QS5udWxsY2hlY2sodCksYS5jbG9zZSgpfSkpLGEub25jZShcImVycm9yXCIsKHI9PmEuZXh0ZW5kZWRSZXN1bHRzJiZyIGluc3RhbmNlb2Ygdj8odS51bnVzZWQ9YS5icy5zbGljZSgpLHQodSkpOih1IT09YiYmKHIudmFsdWU9dSksdT1nLGEuY2xvc2UoKSxlKHIpKSkpLGEub25jZShcImVuZFwiLCgoKT0+e3N3aXRjaCh1KXtjYXNlIGI6cmV0dXJuIGk/ZShuZXcgRXJyb3IoXCJObyBDQk9SIGZvdW5kXCIpKTp0KHUpO2Nhc2UgZzpyZXR1cm47ZGVmYXVsdDpyZXR1cm4gdCh1KX19KSl9KSk7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgciYmYy50aGVuKCh0PT5yKG51bGwsdCkpLHIpLGwucGlwZShhKSxjfXN0YXRpYyBkZWNvZGVBbGwodCxlPXt9LHI9bnVsbCl7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW5wdXQgcmVxdWlyZWRcIik7KHtvcHRpb25zOmUsY2I6cn09UyhlLHIpKTtjb25zdHtlbmNvZGluZzpuPVwiaGV4XCIsLi4uaX09ZSxvPW5ldyBBKGkpLGE9W107by5vbihcImRhdGFcIiwodD0+YS5wdXNoKEEubnVsbGNoZWNrKHQpKSkpO2NvbnN0IHU9bmV3IFByb21pc2UoKCh0LGUpPT57by5vbihcImVycm9yXCIsZSksby5vbihcImVuZFwiLCgoKT0+dChhKSkpfSkpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHImJnUudGhlbigodD0+cih2b2lkIDAsdCkpLCh0PT5yKHQsdm9pZCAwKSkpLHMuZ3Vlc3NFbmNvZGluZyh0LG4pLnBpcGUobyksdX1jbG9zZSgpe3RoaXMucnVubmluZz0hMSx0aGlzLl9fZnJlc2g9ITB9X29uUmVhZCh0KXt0aGlzLnZhbHVlQnl0ZXMud3JpdGUodCl9Kl9wYXJzZSgpe2xldCB0PW51bGwsZT0wLHI9bnVsbDtmb3IoOzspe2lmKHRoaXMubWF4X2RlcHRoPj0wJiZlPnRoaXMubWF4X2RlcHRoKXRocm93IG5ldyBFcnJvcihcIk1heGltdW0gZGVwdGggXCIrdGhpcy5tYXhfZGVwdGgrXCIgZXhjZWVkZWRcIik7Y29uc3Rbbl09eWllbGQgMTtpZighdGhpcy5ydW5uaW5nKXRocm93IHRoaXMuYnMudW5zaGlmdChwLmZyb20oW25dKSksbmV3IHYobik7Y29uc3QgZz1uPj41LGI9MzEmbixfPW51bGwhPXQ/dFt5XTp2b2lkIDAsRT1udWxsIT10P3QubGVuZ3RoOnZvaWQgMDtzd2l0Y2goYil7Y2FzZSBjLk9ORTp0aGlzLmVtaXQoXCJtb3JlLWJ5dGVzXCIsZywxLF8sRSksW3JdPXlpZWxkIDE7YnJlYWs7Y2FzZSBjLlRXTzpjYXNlIGMuRk9VUjpjYXNlIGMuRUlHSFQ6e2NvbnN0IHQ9MTw8Yi0yNDt0aGlzLmVtaXQoXCJtb3JlLWJ5dGVzXCIsZyx0LF8sRSk7Y29uc3QgZT15aWVsZCB0O3I9Zz09PWwuU0lNUExFX0ZMT0FUP2U6cy5wYXJzZUNCT1JpbnQoYixlLHRoaXMuYmlnaW50KTticmVha31jYXNlIDI4OmNhc2UgMjk6Y2FzZSAzMDp0aHJvdyB0aGlzLnJ1bm5pbmc9ITEsbmV3IEVycm9yKFwiQWRkaXRpb25hbCBpbmZvIG5vdCBpbXBsZW1lbnRlZDogXCIrYik7Y2FzZSBjLklOREVGSU5JVEU6c3dpdGNoKGcpe2Nhc2UgbC5QT1NfSU5UOmNhc2UgbC5ORUdfSU5UOmNhc2UgbC5UQUc6dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGluZGVmaW5pdGUgZW5jb2RpbmcgZm9yIE1UICR7Z31gKX1yPS0xO2JyZWFrO2RlZmF1bHQ6cj1ifXN3aXRjaChnKXtjYXNlIGwuUE9TX0lOVDpicmVhaztjYXNlIGwuTkVHX0lOVDppZihyPT09TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpaWYodGhpcy5iaWdpbnQpcj1oLk5FR19NQVg7ZWxzZXtpZighdS5CaWdOdW1iZXIpdGhyb3cgbmV3IEVycm9yKFwiTm8gYmlnaW50IGFuZCBubyBiaWdudW1iZXIuanNcIik7cj11LkJOLk5FR19NQVh9ZWxzZSByPXUuQmlnTnVtYmVyJiZyIGluc3RhbmNlb2YgdS5CaWdOdW1iZXI/dS5CTi5NSU5VU19PTkUubWludXMocik6XCJiaWdpbnRcIj09dHlwZW9mIHI/aC5NSU5VU19PTkUtcjotMS1yO2JyZWFrO2Nhc2UgbC5CWVRFX1NUUklORzpjYXNlIGwuVVRGOF9TVFJJTkc6c3dpdGNoKHIpe2Nhc2UgMDp0aGlzLmVtaXQoXCJzdGFydC1zdHJpbmdcIixnLHIsXyxFKSxyPWc9PT1sLlVURjhfU1RSSU5HP1wiXCI6dGhpcy5wcmVmZXJXZWI/bmV3IFVpbnQ4QXJyYXkoMCk6cC5hbGxvY1Vuc2FmZSgwKTticmVhaztjYXNlLTE6dGhpcy5lbWl0KFwic3RhcnRcIixnLGYuU1RSRUFNLF8sRSksdD13KHQsZyksZSsrO2NvbnRpbnVlO2RlZmF1bHQ6dGhpcy5lbWl0KFwic3RhcnQtc3RyaW5nXCIsZyxyLF8sRSkscj15aWVsZCByLGc9PT1sLlVURjhfU1RSSU5HP3I9cy51dGY4KHIpOnRoaXMucHJlZmVyV2ViJiYocj1uZXcgVWludDhBcnJheShyLmJ1ZmZlcixyLmJ5dGVPZmZzZXQsci5sZW5ndGgpKX1icmVhaztjYXNlIGwuQVJSQVk6Y2FzZSBsLk1BUDpzd2l0Y2gocil7Y2FzZSAwOnI9Zz09PWwuTUFQP3t9OltdO2JyZWFrO2Nhc2UtMTp0aGlzLmVtaXQoXCJzdGFydFwiLGcsZi5TVFJFQU0sXyxFKSx0PW0odCxnLC0xKSxlKys7Y29udGludWU7ZGVmYXVsdDp0aGlzLmVtaXQoXCJzdGFydFwiLGcscixfLEUpLHQ9bSh0LGcsciooZy0zKSksZSsrO2NvbnRpbnVlfWJyZWFrO2Nhc2UgbC5UQUc6dGhpcy5lbWl0KFwic3RhcnRcIixnLHIsXyxFKSx0PW0odCxnLDEpLHQucHVzaChyKSxlKys7Y29udGludWU7Y2FzZSBsLlNJTVBMRV9GTE9BVDppZihcIm51bWJlclwiPT10eXBlb2Ygcil7aWYoYj09PWMuT05FJiZyPDMyKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0d28tYnl0ZSBlbmNvZGluZyBvZiBzaW1wbGUgdmFsdWUgJHtyfWApO2NvbnN0IGU9bnVsbCE9dDtyPW8uZGVjb2RlKHIsZSxlJiZ0W2RdPDApfWVsc2Ugcj1zLnBhcnNlQ0JPUmZsb2F0KHIpfXRoaXMuZW1pdChcInZhbHVlXCIscixfLEUsYik7bGV0IFM9ITE7Zm9yKDtudWxsIT10Oyl7c3dpdGNoKCExKXtjYXNlIHIhPT1mLkJSRUFLOnRbZF09MTticmVhaztjYXNlIUFycmF5LmlzQXJyYXkodCk6dC5wdXNoKHIpO2JyZWFrO2Nhc2UhKHQgaW5zdGFuY2VvZiBhKTp7Y29uc3QgZT10W3ldO2lmKG51bGwhPWUmJmUhPT1nKXRocm93IHRoaXMucnVubmluZz0hMSxuZXcgRXJyb3IoXCJJbnZhbGlkIG1ham9yIHR5cGUgaW4gaW5kZWZpbml0ZSBlbmNvZGluZ1wiKTt0LndyaXRlKHIpfX1pZigwIT0tLXRbZF0pe1M9ITA7YnJlYWt9aWYoLS1lLGRlbGV0ZSB0W2RdLEFycmF5LmlzQXJyYXkodCkpc3dpdGNoKHRbeV0pe2Nhc2UgbC5BUlJBWTpyPXQ7YnJlYWs7Y2FzZSBsLk1BUDp7bGV0IGU9ITA7aWYodC5sZW5ndGglMiE9MCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG1hcCBsZW5ndGg6IFwiK3QubGVuZ3RoKTtmb3IobGV0IHI9MCxuPXQubGVuZ3RoO3I8bjtyKz0yKWlmKFwic3RyaW5nXCIhPXR5cGVvZiB0W3JdfHxcIl9fcHJvdG9fX1wiPT09dFtyXSl7ZT0hMTticmVha31pZihlKXtyPXt9O2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrPTIpclt0W2VdXT10W2UrMV19ZWxzZXtyPW5ldyBNYXA7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSs9MilyLnNldCh0W2VdLHRbZSsxXSl9YnJlYWt9Y2FzZSBsLlRBRzpyPW5ldyBpKHRbMF0sdFsxXSkuY29udmVydCh0aGlzLnRhZ3MpfWVsc2UgaWYodCBpbnN0YW5jZW9mIGEpc3dpdGNoKHRbeV0pe2Nhc2UgbC5CWVRFX1NUUklORzpyPXQuc2xpY2UoKSx0aGlzLnByZWZlcldlYiYmKHI9bmV3IFVpbnQ4QXJyYXkoci5idWZmZXIsci5ieXRlT2Zmc2V0LHIubGVuZ3RoKSk7YnJlYWs7Y2FzZSBsLlVURjhfU1RSSU5HOnI9dC50b1N0cmluZyhcInV0Zi04XCIpfXRoaXMuZW1pdChcInN0b3BcIix0W3ldKTtjb25zdCBuPXQ7dD10W2YuUEFSRU5UXSxkZWxldGUgbltmLlBBUkVOVF0sZGVsZXRlIG5beV19aWYoIVMpe2lmKHRoaXMuZXh0ZW5kZWRSZXN1bHRzKXtjb25zdCB0PXRoaXMudmFsdWVCeXRlcy5zbGljZSgpLGU9e3ZhbHVlOkEubnVsbGNoZWNrKHIpLGJ5dGVzOnQsbGVuZ3RoOnQubGVuZ3RofTtyZXR1cm4gdGhpcy52YWx1ZUJ5dGVzPW5ldyBhLGV9cmV0dXJuIHJ9fX19QS5OT1RfRk9VTkQ9Yix0LmV4cG9ydHM9QX0sNjk0Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjtjb25zdCBuPXIoODMwKSxpPXIoNzc0KSxvPXIoODczKSxzPXIoMjAyKSx7TVQ6YSxTWU1TOnV9PXIoNjYpO2NsYXNzIGwgZXh0ZW5kcyBuLlRyYW5zZm9ybXtjb25zdHJ1Y3Rvcih0PXt9KXtjb25zdHtzZXBhcmF0b3I6ZT1cIlxcblwiLHN0cmVhbV9lcnJvcnM6cj0hMSx0YWdzOm4sbWF4X2RlcHRoOm8sYmlnaW50OnMscHJlZmVyV2ViOmEsZW5jb2Rpbmc6dSwuLi5sfT10O3N1cGVyKHsuLi5sLHJlYWRhYmxlT2JqZWN0TW9kZTohMSx3cml0YWJsZU9iamVjdE1vZGU6ITF9KSx0aGlzLmZsb2F0X2J5dGVzPS0xLHRoaXMuc2VwYXJhdG9yPWUsdGhpcy5zdHJlYW1fZXJyb3JzPXIsdGhpcy5wYXJzZXI9bmV3IGkoe3RhZ3M6bixtYXhfZGVwdGg6byxiaWdpbnQ6cyxwcmVmZXJXZWI6YSxlbmNvZGluZzp1fSksdGhpcy5wYXJzZXIub24oXCJtb3JlLWJ5dGVzXCIsdGhpcy5fb25fbW9yZS5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcInZhbHVlXCIsdGhpcy5fb25fdmFsdWUuYmluZCh0aGlzKSksdGhpcy5wYXJzZXIub24oXCJzdGFydFwiLHRoaXMuX29uX3N0YXJ0LmJpbmQodGhpcykpLHRoaXMucGFyc2VyLm9uKFwic3RvcFwiLHRoaXMuX29uX3N0b3AuYmluZCh0aGlzKSksdGhpcy5wYXJzZXIub24oXCJkYXRhXCIsdGhpcy5fb25fZGF0YS5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcImVycm9yXCIsdGhpcy5fb25fZXJyb3IuYmluZCh0aGlzKSl9X3RyYW5zZm9ybSh0LGUscil7cmV0dXJuIHRoaXMucGFyc2VyLndyaXRlKHQsZSxyKX1fZmx1c2godCl7cmV0dXJuIHRoaXMucGFyc2VyLl9mbHVzaCgoZT0+dGhpcy5zdHJlYW1fZXJyb3JzPyhlJiZ0aGlzLl9vbl9lcnJvcihlKSx0KCkpOnQoZSkpKX1zdGF0aWMgZGlhZ25vc2UodCxlPXt9LHI9bnVsbCl7aWYobnVsbD09dCl0aHJvdyBuZXcgRXJyb3IoXCJpbnB1dCByZXF1aXJlZFwiKTsoe29wdGlvbnM6ZSxjYjpyfT1mdW5jdGlvbih0LGUpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZVwiZnVuY3Rpb25cIjpyZXR1cm57b3B0aW9uczp7fSxjYjp0fTtjYXNlXCJzdHJpbmdcIjpyZXR1cm57b3B0aW9uczp7ZW5jb2Rpbmc6dH0sY2I6ZX07Y2FzZVwib2JqZWN0XCI6cmV0dXJue29wdGlvbnM6dHx8e30sY2I6ZX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5rbm93biBvcHRpb24gdHlwZVwiKX19KGUscikpO2NvbnN0e2VuY29kaW5nOm49XCJoZXhcIiwuLi5pfT1lLGE9bmV3IHMsdT1uZXcgbChpKTtsZXQgYz1udWxsO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHI/KHUub24oXCJlbmRcIiwoKCk9PnIobnVsbCxhLnRvU3RyaW5nKFwidXRmOFwiKSkpKSx1Lm9uKFwiZXJyb3JcIixyKSk6Yz1uZXcgUHJvbWlzZSgoKHQsZSk9Pnt1Lm9uKFwiZW5kXCIsKCgpPT50KGEudG9TdHJpbmcoXCJ1dGY4XCIpKSkpLHUub24oXCJlcnJvclwiLGUpfSkpLHUucGlwZShhKSxvLmd1ZXNzRW5jb2RpbmcodCxuKS5waXBlKHUpLGN9X29uX2Vycm9yKHQpe3JldHVybiB0aGlzLnN0cmVhbV9lcnJvcnM/dGhpcy5wdXNoKHQudG9TdHJpbmcoKSk6dGhpcy5lbWl0KFwiZXJyb3JcIix0KX1fb25fbW9yZSh0LGUscixuKXt0PT09YS5TSU1QTEVfRkxPQVQmJih0aGlzLmZsb2F0X2J5dGVzPXsyOjEsNDoyLDg6M31bZV0pfV9mb3JlKHQsZSl7c3dpdGNoKHQpe2Nhc2UgYS5CWVRFX1NUUklORzpjYXNlIGEuVVRGOF9TVFJJTkc6Y2FzZSBhLkFSUkFZOmU+MCYmdGhpcy5wdXNoKFwiLCBcIik7YnJlYWs7Y2FzZSBhLk1BUDplPjAmJihlJTI/dGhpcy5wdXNoKFwiOiBcIik6dGhpcy5wdXNoKFwiLCBcIikpfX1fb25fdmFsdWUodCxlLHIpe2lmKHQ9PT11LkJSRUFLKXJldHVybjt0aGlzLl9mb3JlKGUscik7Y29uc3Qgbj10aGlzLmZsb2F0X2J5dGVzO3RoaXMuZmxvYXRfYnl0ZXM9LTEsdGhpcy5wdXNoKG8uY2JvclZhbHVlVG9TdHJpbmcodCxuKSl9X29uX3N0YXJ0KHQsZSxyLG4pe3N3aXRjaCh0aGlzLl9mb3JlKHIsbiksdCl7Y2FzZSBhLlRBRzp0aGlzLnB1c2goYCR7ZX0oYCk7YnJlYWs7Y2FzZSBhLkFSUkFZOnRoaXMucHVzaChcIltcIik7YnJlYWs7Y2FzZSBhLk1BUDp0aGlzLnB1c2goXCJ7XCIpO2JyZWFrO2Nhc2UgYS5CWVRFX1NUUklORzpjYXNlIGEuVVRGOF9TVFJJTkc6dGhpcy5wdXNoKFwiKFwiKX1lPT09dS5TVFJFQU0mJnRoaXMucHVzaChcIl8gXCIpfV9vbl9zdG9wKHQpe3N3aXRjaCh0KXtjYXNlIGEuVEFHOnRoaXMucHVzaChcIilcIik7YnJlYWs7Y2FzZSBhLkFSUkFZOnRoaXMucHVzaChcIl1cIik7YnJlYWs7Y2FzZSBhLk1BUDp0aGlzLnB1c2goXCJ9XCIpO2JyZWFrO2Nhc2UgYS5CWVRFX1NUUklORzpjYXNlIGEuVVRGOF9TVFJJTkc6dGhpcy5wdXNoKFwiKVwiKX19X29uX2RhdGEoKXt0aGlzLnB1c2godGhpcy5zZXBhcmF0b3IpfX10LmV4cG9ydHM9bH0sNjY2Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjtjb25zdCBuPXIoODMwKSxpPXIoMjAyKSxvPXIoODczKSxzPXIoNjYpLHtNVDphLE5VTUJZVEVTOnUsU0hJRlQzMjpsLFNJTVBMRTpjLFNZTVM6ZixUQUc6aCxCSTpwfT1zLHtCdWZmZXI6ZH09cig3NjQpLHk9YS5TSU1QTEVfRkxPQVQ8PDV8dS5UV08sZz1hLlNJTVBMRV9GTE9BVDw8NXx1LkZPVVIsYj1hLlNJTVBMRV9GTE9BVDw8NXx1LkVJR0hULG09YS5TSU1QTEVfRkxPQVQ8PDV8Yy5UUlVFLHc9YS5TSU1QTEVfRkxPQVQ8PDV8Yy5GQUxTRSxfPWEuU0lNUExFX0ZMT0FUPDw1fGMuVU5ERUZJTkVELEU9YS5TSU1QTEVfRkxPQVQ8PDV8Yy5OVUxMLHY9ZC5mcm9tKFsyNTVdKSxTPWQuZnJvbShcImY5N2UwMFwiLFwiaGV4XCIpLEE9ZC5mcm9tKFwiZjlmYzAwXCIsXCJoZXhcIiksVD1kLmZyb20oXCJmOTdjMDBcIixcImhleFwiKSxJPWQuZnJvbShcImY5ODAwMFwiLFwiaGV4XCIpO2NsYXNzIEIgZXh0ZW5kcyBuLlRyYW5zZm9ybXtjb25zdHJ1Y3Rvcih0PXt9KXtjb25zdHtjYW5vbmljYWw6ZT0hMSxlbmNvZGVVbmRlZmluZWQ6cixkaXNhbGxvd1VuZGVmaW5lZEtleXM6bj0hMSxkYXRlVHlwZTpvPVwibnVtYmVyXCIsY29sbGFwc2VCaWdJbnRlZ2VyczphPSExLGRldGVjdExvb3BzOnU9ITEsb21pdFVuZGVmaW5lZFByb3BlcnRpZXM6bD0hMSxnZW5UeXBlczpjPVtdLC4uLmZ9PXQ7aWYoc3VwZXIoey4uLmYscmVhZGFibGVPYmplY3RNb2RlOiExLHdyaXRhYmxlT2JqZWN0TW9kZTohMH0pLHRoaXMuY2Fub25pY2FsPWUsdGhpcy5lbmNvZGVVbmRlZmluZWQ9cix0aGlzLmRpc2FsbG93VW5kZWZpbmVkS2V5cz1uLHRoaXMuZGF0ZVR5cGU9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuXCJudW1iZXJcIjtzd2l0Y2godC50b0xvd2VyQ2FzZSgpKXtjYXNlXCJudW1iZXJcIjpyZXR1cm5cIm51bWJlclwiO2Nhc2VcImZsb2F0XCI6cmV0dXJuXCJmbG9hdFwiO2Nhc2VcImludFwiOnJldHVyblwiaW50XCI7Y2FzZVwic3RyaW5nXCI6cmV0dXJuXCJzdHJpbmdcIn10aHJvdyBuZXcgVHlwZUVycm9yKGBkYXRlVHlwZSBpbnZhbGlkLCBnb3QgXCIke3R9XCJgKX0obyksdGhpcy5jb2xsYXBzZUJpZ0ludGVnZXJzPSEhdGhpcy5jYW5vbmljYWx8fGEsdGhpcy5kZXRlY3RMb29wcz11LFwiYm9vbGVhblwiPT10eXBlb2YgdSl1JiYodGhpcy5kZXRlY3RMb29wcz1uZXcgV2Vha1NldCk7ZWxzZSBpZighKHUgaW5zdGFuY2VvZiBXZWFrU2V0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiZGV0ZWN0TG9vcHMgbXVzdCBiZSBib29sZWFuIG9yIFdlYWtTZXRcIik7aWYodGhpcy5vbWl0VW5kZWZpbmVkUHJvcGVydGllcz1sLHRoaXMuc2VtYW50aWNUeXBlcz17QXJyYXk6dGhpcy5fcHVzaEFycmF5LERhdGU6dGhpcy5fcHVzaERhdGUsQnVmZmVyOnRoaXMuX3B1c2hCdWZmZXIsW2QubmFtZV06dGhpcy5fcHVzaEJ1ZmZlcixNYXA6dGhpcy5fcHVzaE1hcCxOb0ZpbHRlcjp0aGlzLl9wdXNoTm9GaWx0ZXIsW2kubmFtZV06dGhpcy5fcHVzaE5vRmlsdGVyLFJlZ0V4cDp0aGlzLl9wdXNoUmVnZXhwLFNldDp0aGlzLl9wdXNoU2V0LEFycmF5QnVmZmVyOnRoaXMuX3B1c2hBcnJheUJ1ZmZlcixVaW50OENsYW1wZWRBcnJheTp0aGlzLl9wdXNoVHlwZWRBcnJheSxVaW50OEFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LFVpbnQxNkFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LFVpbnQzMkFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LEludDhBcnJheTp0aGlzLl9wdXNoVHlwZWRBcnJheSxJbnQxNkFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LEludDMyQXJyYXk6dGhpcy5fcHVzaFR5cGVkQXJyYXksRmxvYXQzMkFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LEZsb2F0NjRBcnJheTp0aGlzLl9wdXNoVHlwZWRBcnJheSxVUkw6dGhpcy5fcHVzaFVSTCxCb29sZWFuOnRoaXMuX3B1c2hCb3hlZCxOdW1iZXI6dGhpcy5fcHVzaEJveGVkLFN0cmluZzp0aGlzLl9wdXNoQm94ZWR9LHMuQmlnTnVtYmVyJiYodGhpcy5zZW1hbnRpY1R5cGVzW3MuQmlnTnVtYmVyLm5hbWVdPXRoaXMuX3B1c2hCaWdOdW1iZXIpLFwidW5kZWZpbmVkXCIhPXR5cGVvZiBCaWdVaW50NjRBcnJheSYmKHRoaXMuc2VtYW50aWNUeXBlc1tCaWdVaW50NjRBcnJheS5uYW1lXT10aGlzLl9wdXNoVHlwZWRBcnJheSksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEJpZ0ludDY0QXJyYXkmJih0aGlzLnNlbWFudGljVHlwZXNbQmlnSW50NjRBcnJheS5uYW1lXT10aGlzLl9wdXNoVHlwZWRBcnJheSksQXJyYXkuaXNBcnJheShjKSlmb3IobGV0IHQ9MCxlPWMubGVuZ3RoO3Q8ZTt0Kz0yKXRoaXMuYWRkU2VtYW50aWNUeXBlKGNbdF0sY1t0KzFdKTtlbHNlIGZvcihjb25zdFt0LGVdb2YgT2JqZWN0LmVudHJpZXMoYykpdGhpcy5hZGRTZW1hbnRpY1R5cGUodCxlKX1fdHJhbnNmb3JtKHQsZSxyKXtyZXR1cm4gcighMT09PXRoaXMucHVzaEFueSh0KT9uZXcgRXJyb3IoXCJQdXNoIEVycm9yXCIpOnZvaWQgMCl9X2ZsdXNoKHQpe3JldHVybiB0KCl9YWRkU2VtYW50aWNUeXBlKHQsZSl7Y29uc3Qgcj1cInN0cmluZ1wiPT10eXBlb2YgdD90OnQubmFtZSxuPXRoaXMuc2VtYW50aWNUeXBlc1tyXTtpZihlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoXCJmdW4gbXVzdCBiZSBvZiB0eXBlIGZ1bmN0aW9uXCIpO3RoaXMuc2VtYW50aWNUeXBlc1tyXT1lfWVsc2UgbiYmZGVsZXRlIHRoaXMuc2VtYW50aWNUeXBlc1tyXTtyZXR1cm4gbn1fcHVzaFVJbnQ4KHQpe2NvbnN0IGU9ZC5hbGxvY1Vuc2FmZSgxKTtyZXR1cm4gZS53cml0ZVVJbnQ4KHQsMCksdGhpcy5wdXNoKGUpfV9wdXNoVUludDE2QkUodCl7Y29uc3QgZT1kLmFsbG9jVW5zYWZlKDIpO3JldHVybiBlLndyaXRlVUludDE2QkUodCwwKSx0aGlzLnB1c2goZSl9X3B1c2hVSW50MzJCRSh0KXtjb25zdCBlPWQuYWxsb2NVbnNhZmUoNCk7cmV0dXJuIGUud3JpdGVVSW50MzJCRSh0LDApLHRoaXMucHVzaChlKX1fcHVzaEZsb2F0QkUodCl7Y29uc3QgZT1kLmFsbG9jVW5zYWZlKDQpO3JldHVybiBlLndyaXRlRmxvYXRCRSh0LDApLHRoaXMucHVzaChlKX1fcHVzaERvdWJsZUJFKHQpe2NvbnN0IGU9ZC5hbGxvY1Vuc2FmZSg4KTtyZXR1cm4gZS53cml0ZURvdWJsZUJFKHQsMCksdGhpcy5wdXNoKGUpfV9wdXNoTmFOKCl7cmV0dXJuIHRoaXMucHVzaChTKX1fcHVzaEluZmluaXR5KHQpe2NvbnN0IGU9dDwwP0E6VDtyZXR1cm4gdGhpcy5wdXNoKGUpfV9wdXNoRmxvYXQodCl7aWYodGhpcy5jYW5vbmljYWwpe2NvbnN0IGU9ZC5hbGxvY1Vuc2FmZSgyKTtpZihvLndyaXRlSGFsZihlLHQpKXJldHVybiB0aGlzLl9wdXNoVUludDgoeSkmJnRoaXMucHVzaChlKX1yZXR1cm4gTWF0aC5mcm91bmQodCk9PT10P3RoaXMuX3B1c2hVSW50OChnKSYmdGhpcy5fcHVzaEZsb2F0QkUodCk6dGhpcy5fcHVzaFVJbnQ4KGIpJiZ0aGlzLl9wdXNoRG91YmxlQkUodCl9X3B1c2hJbnQodCxlLHIpe2NvbnN0IG49ZTw8NTtzd2l0Y2goITEpe2Nhc2UhKHQ8MjQpOnJldHVybiB0aGlzLl9wdXNoVUludDgobnx0KTtjYXNlISh0PD0yNTUpOnJldHVybiB0aGlzLl9wdXNoVUludDgobnx1Lk9ORSkmJnRoaXMuX3B1c2hVSW50OCh0KTtjYXNlISh0PD02NTUzNSk6cmV0dXJuIHRoaXMuX3B1c2hVSW50OChufHUuVFdPKSYmdGhpcy5fcHVzaFVJbnQxNkJFKHQpO2Nhc2UhKHQ8PTQyOTQ5NjcyOTUpOnJldHVybiB0aGlzLl9wdXNoVUludDgobnx1LkZPVVIpJiZ0aGlzLl9wdXNoVUludDMyQkUodCk7Y2FzZSEodDw9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpOnJldHVybiB0aGlzLl9wdXNoVUludDgobnx1LkVJR0hUKSYmdGhpcy5fcHVzaFVJbnQzMkJFKE1hdGguZmxvb3IodC9sKSkmJnRoaXMuX3B1c2hVSW50MzJCRSh0JWwpO2RlZmF1bHQ6cmV0dXJuIGU9PT1hLk5FR19JTlQ/dGhpcy5fcHVzaEZsb2F0KHIpOnRoaXMuX3B1c2hGbG9hdCh0KX19X3B1c2hJbnROdW0odCl7cmV0dXJuIE9iamVjdC5pcyh0LC0wKT90aGlzLnB1c2goSSk6dDwwP3RoaXMuX3B1c2hJbnQoLXQtMSxhLk5FR19JTlQsdCk6dGhpcy5fcHVzaEludCh0LGEuUE9TX0lOVCl9X3B1c2hOdW1iZXIodCl7c3dpdGNoKCExKXtjYXNlIWlzTmFOKHQpOnJldHVybiB0aGlzLl9wdXNoTmFOKCk7Y2FzZSBpc0Zpbml0ZSh0KTpyZXR1cm4gdGhpcy5fcHVzaEluZmluaXR5KHQpO2Nhc2UgTWF0aC5yb3VuZCh0KSE9PXQ6cmV0dXJuIHRoaXMuX3B1c2hJbnROdW0odCk7ZGVmYXVsdDpyZXR1cm4gdGhpcy5fcHVzaEZsb2F0KHQpfX1fcHVzaFN0cmluZyh0KXtjb25zdCBlPWQuYnl0ZUxlbmd0aCh0LFwidXRmOFwiKTtyZXR1cm4gdGhpcy5fcHVzaEludChlLGEuVVRGOF9TVFJJTkcpJiZ0aGlzLnB1c2godCxcInV0ZjhcIil9X3B1c2hCb29sZWFuKHQpe3JldHVybiB0aGlzLl9wdXNoVUludDgodD9tOncpfV9wdXNoVW5kZWZpbmVkKHQpe3N3aXRjaCh0eXBlb2YgdGhpcy5lbmNvZGVVbmRlZmluZWQpe2Nhc2VcInVuZGVmaW5lZFwiOnJldHVybiB0aGlzLl9wdXNoVUludDgoXyk7Y2FzZVwiZnVuY3Rpb25cIjpyZXR1cm4gdGhpcy5wdXNoQW55KHRoaXMuZW5jb2RlVW5kZWZpbmVkLmNhbGwodGhpcyx0KSk7Y2FzZVwib2JqZWN0XCI6e2NvbnN0IHQ9by5idWZmZXJpc2hUb0J1ZmZlcih0aGlzLmVuY29kZVVuZGVmaW5lZCk7aWYodClyZXR1cm4gdGhpcy5wdXNoKHQpfX1yZXR1cm4gdGhpcy5wdXNoQW55KHRoaXMuZW5jb2RlVW5kZWZpbmVkKX1fcHVzaE51bGwodCl7cmV0dXJuIHRoaXMuX3B1c2hVSW50OChFKX1fcHVzaEFycmF5KHQsZSxyKXtyPXtpbmRlZmluaXRlOiExLC4uLnJ9O2NvbnN0IG49ZS5sZW5ndGg7aWYoci5pbmRlZmluaXRlKXtpZighdC5fcHVzaFVJbnQ4KGEuQVJSQVk8PDV8dS5JTkRFRklOSVRFKSlyZXR1cm4hMX1lbHNlIGlmKCF0Ll9wdXNoSW50KG4sYS5BUlJBWSkpcmV0dXJuITE7Zm9yKGxldCByPTA7cjxuO3IrKylpZighdC5wdXNoQW55KGVbcl0pKXJldHVybiExO3JldHVybiEoci5pbmRlZmluaXRlJiYhdC5wdXNoKHYpKX1fcHVzaFRhZyh0KXtyZXR1cm4gdGhpcy5fcHVzaEludCh0LGEuVEFHKX1fcHVzaERhdGUodCxlKXtzd2l0Y2godC5kYXRlVHlwZSl7Y2FzZVwic3RyaW5nXCI6cmV0dXJuIHQuX3B1c2hUYWcoaC5EQVRFX1NUUklORykmJnQuX3B1c2hTdHJpbmcoZS50b0lTT1N0cmluZygpKTtjYXNlXCJpbnRcIjpjYXNlXCJpbnRlZ2VyXCI6cmV0dXJuIHQuX3B1c2hUYWcoaC5EQVRFX0VQT0NIKSYmdC5fcHVzaEludE51bShNYXRoLnJvdW5kKGUvMWUzKSk7Y2FzZVwiZmxvYXRcIjpyZXR1cm4gdC5fcHVzaFRhZyhoLkRBVEVfRVBPQ0gpJiZ0Ll9wdXNoRmxvYXQoZS8xZTMpO2Nhc2VcIm51bWJlclwiOmRlZmF1bHQ6cmV0dXJuIHQuX3B1c2hUYWcoaC5EQVRFX0VQT0NIKSYmdC5wdXNoQW55KGUvMWUzKX19X3B1c2hCdWZmZXIodCxlKXtyZXR1cm4gdC5fcHVzaEludChlLmxlbmd0aCxhLkJZVEVfU1RSSU5HKSYmdC5wdXNoKGUpfV9wdXNoTm9GaWx0ZXIodCxlKXtyZXR1cm4gdC5fcHVzaEJ1ZmZlcih0LGUuc2xpY2UoKSl9X3B1c2hSZWdleHAodCxlKXtyZXR1cm4gdC5fcHVzaFRhZyhoLlJFR0VYUCkmJnQucHVzaEFueShlLnNvdXJjZSl9X3B1c2hTZXQodCxlKXtpZighdC5fcHVzaFRhZyhoLlNFVCkpcmV0dXJuITE7aWYoIXQuX3B1c2hJbnQoZS5zaXplLGEuQVJSQVkpKXJldHVybiExO2Zvcihjb25zdCByIG9mIGUpaWYoIXQucHVzaEFueShyKSlyZXR1cm4hMTtyZXR1cm4hMH1fcHVzaFVSTCh0LGUpe3JldHVybiB0Ll9wdXNoVGFnKGguVVJJKSYmdC5wdXNoQW55KGUudG9TdHJpbmcoKSl9X3B1c2hCb3hlZCh0LGUpe3JldHVybiB0Ll9wdXNoQW55KGUudmFsdWVPZigpKX1fcHVzaEJpZ2ludCh0KXtsZXQgZT1hLlBPU19JTlQscj1oLlBPU19CSUdJTlQ7aWYodC5pc05lZ2F0aXZlKCkmJih0PXQubmVnYXRlZCgpLm1pbnVzKDEpLGU9YS5ORUdfSU5ULHI9aC5ORUdfQklHSU5UKSx0aGlzLmNvbGxhcHNlQmlnSW50ZWdlcnMmJnQubHRlKHMuQk4uTUFYSU5UNjQpKXJldHVybiB0Lmx0ZShzLkJOLk1BWElOVDMyKT90aGlzLl9wdXNoSW50KHQudG9OdW1iZXIoKSxlKTp0aGlzLl9wdXNoVUludDgoZTw8NXx1LkVJR0hUKSYmdGhpcy5fcHVzaFVJbnQzMkJFKHQuZGl2aWRlZFRvSW50ZWdlckJ5KHMuQk4uU0hJRlQzMikudG9OdW1iZXIoKSkmJnRoaXMuX3B1c2hVSW50MzJCRSh0Lm1vZChzLkJOLlNISUZUMzIpLnRvTnVtYmVyKCkpO2xldCBuPXQudG9TdHJpbmcoMTYpO24ubGVuZ3RoJTImJihuPVwiMFwiK24pO2NvbnN0IGk9ZC5mcm9tKG4sXCJoZXhcIik7cmV0dXJuIHRoaXMuX3B1c2hUYWcocikmJnRoaXMuX3B1c2hCdWZmZXIodGhpcyxpKX1fcHVzaEpTQmlnaW50KHQpe2xldCBlPWEuUE9TX0lOVCxyPWguUE9TX0JJR0lOVDtpZih0PDAmJih0PS10K3AuTUlOVVNfT05FLGU9YS5ORUdfSU5ULHI9aC5ORUdfQklHSU5UKSx0aGlzLmNvbGxhcHNlQmlnSW50ZWdlcnMmJnQ8PXAuTUFYSU5UNjQpcmV0dXJuIHQ8PTQyOTQ5NjcyOTU/dGhpcy5fcHVzaEludChOdW1iZXIodCksZSk6dGhpcy5fcHVzaFVJbnQ4KGU8PDV8dS5FSUdIVCkmJnRoaXMuX3B1c2hVSW50MzJCRShOdW1iZXIodC9wLlNISUZUMzIpKSYmdGhpcy5fcHVzaFVJbnQzMkJFKE51bWJlcih0JXAuU0hJRlQzMikpO2xldCBuPXQudG9TdHJpbmcoMTYpO24ubGVuZ3RoJTImJihuPVwiMFwiK24pO2NvbnN0IGk9ZC5mcm9tKG4sXCJoZXhcIik7cmV0dXJuIHRoaXMuX3B1c2hUYWcocikmJnRoaXMuX3B1c2hCdWZmZXIodGhpcyxpKX1fcHVzaEJpZ051bWJlcih0LGUpe2lmKGUuaXNOYU4oKSlyZXR1cm4gdC5fcHVzaE5hTigpO2lmKCFlLmlzRmluaXRlKCkpcmV0dXJuIHQuX3B1c2hJbmZpbml0eShlLmlzTmVnYXRpdmUoKT8tMS8wOjEvMCk7aWYoZS5pc0ludGVnZXIoKSlyZXR1cm4gdC5fcHVzaEJpZ2ludChlKTtpZighdC5fcHVzaFRhZyhoLkRFQ0lNQUxfRlJBQyl8fCF0Ll9wdXNoSW50KDIsYS5BUlJBWSkpcmV0dXJuITE7Y29uc3Qgcj1lLmRlY2ltYWxQbGFjZXMoKSxuPWUuc2hpZnRlZEJ5KHIpO3JldHVybiEhdC5fcHVzaEludE51bSgtcikmJihuLmFicygpLmlzTGVzc1RoYW4ocy5CTi5NQVhJTlQpP3QuX3B1c2hJbnROdW0obi50b051bWJlcigpKTp0Ll9wdXNoQmlnaW50KG4pKX1fcHVzaE1hcCh0LGUscil7cj17aW5kZWZpbml0ZTohMSwuLi5yfTtsZXQgbj1bLi4uZS5lbnRyaWVzKCldO2lmKHQub21pdFVuZGVmaW5lZFByb3BlcnRpZXMmJihuPW4uZmlsdGVyKCgoW3QsZV0pPT52b2lkIDAhPT1lKSkpLHIuaW5kZWZpbml0ZSl7aWYoIXQuX3B1c2hVSW50OChhLk1BUDw8NXx1LklOREVGSU5JVEUpKXJldHVybiExfWVsc2UgaWYoIXQuX3B1c2hJbnQobi5sZW5ndGgsYS5NQVApKXJldHVybiExO2lmKHQuY2Fub25pY2FsKXtjb25zdCBlPW5ldyBCKHtnZW5UeXBlczp0LnNlbWFudGljVHlwZXMsY2Fub25pY2FsOnQuY2Fub25pY2FsLGRldGVjdExvb3BzOiEhdC5kZXRlY3RMb29wcyxkYXRlVHlwZTp0LmRhdGVUeXBlLGRpc2FsbG93VW5kZWZpbmVkS2V5czp0LmRpc2FsbG93VW5kZWZpbmVkS2V5cyxjb2xsYXBzZUJpZ0ludGVnZXJzOnQuY29sbGFwc2VCaWdJbnRlZ2Vyc30pLHI9bmV3IGkoe2hpZ2hXYXRlck1hcms6dC5yZWFkYWJsZUhpZ2hXYXRlck1hcmt9KTtlLnBpcGUociksbi5zb3J0KCgoW3RdLFtuXSk9PntlLnB1c2hBbnkodCk7Y29uc3QgaT1yLnJlYWQoKTtlLnB1c2hBbnkobik7Y29uc3Qgbz1yLnJlYWQoKTtyZXR1cm4gaS5jb21wYXJlKG8pfSkpO2Zvcihjb25zdFtlLHJdb2Ygbil7aWYodC5kaXNhbGxvd1VuZGVmaW5lZEtleXMmJnZvaWQgMD09PWUpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBNYXAga2V5OiB1bmRlZmluZWRcIik7aWYoIXQucHVzaEFueShlKXx8IXQucHVzaEFueShyKSlyZXR1cm4hMX19ZWxzZSBmb3IoY29uc3RbZSxyXW9mIG4pe2lmKHQuZGlzYWxsb3dVbmRlZmluZWRLZXlzJiZ2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgTWFwIGtleTogdW5kZWZpbmVkXCIpO2lmKCF0LnB1c2hBbnkoZSl8fCF0LnB1c2hBbnkocikpcmV0dXJuITF9cmV0dXJuIShyLmluZGVmaW5pdGUmJiF0LnB1c2godikpfV9wdXNoVHlwZWRBcnJheSh0LGUpe2xldCByPTY0LG49ZS5CWVRFU19QRVJfRUxFTUVOVDtjb25zdHtuYW1lOml9PWUuY29uc3RydWN0b3I7cmV0dXJuIGkuc3RhcnRzV2l0aChcIkZsb2F0XCIpPyhyfD0xNixuLz0yKTppLmluY2x1ZGVzKFwiVVwiKXx8KHJ8PTgpLChpLmluY2x1ZGVzKFwiQ2xhbXBlZFwiKXx8MSE9PW4mJiFvLmlzQmlnRW5kaWFuKCkpJiYocnw9NCkscnw9ezE6MCwyOjEsNDoyLDg6M31bbl0sISF0Ll9wdXNoVGFnKHIpJiZ0Ll9wdXNoQnVmZmVyKHQsZC5mcm9tKGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpKX1fcHVzaEFycmF5QnVmZmVyKHQsZSl7cmV0dXJuIHQuX3B1c2hCdWZmZXIodCxkLmZyb20oZSkpfXJlbW92ZUxvb3BEZXRlY3RvcnMoKXtyZXR1cm4hIXRoaXMuZGV0ZWN0TG9vcHMmJih0aGlzLmRldGVjdExvb3BzPW5ldyBXZWFrU2V0LCEwKX1fcHVzaE9iamVjdCh0LGUpe2lmKCF0KXJldHVybiB0aGlzLl9wdXNoTnVsbCh0KTtpZighKGU9e2luZGVmaW5pdGU6ITEsc2tpcFR5cGVzOiExLC4uLmV9KS5pbmRlZmluaXRlJiZ0aGlzLmRldGVjdExvb3BzKXtpZih0aGlzLmRldGVjdExvb3BzLmhhcyh0KSl0aHJvdyBuZXcgRXJyb3IoXCJMb29wIGRldGVjdGVkIHdoaWxlIENCT1IgZW5jb2RpbmcuXFxuQ2FsbCByZW1vdmVMb29wRGV0ZWN0b3JzIGJlZm9yZSByZXN1bWluZy5cIik7dGhpcy5kZXRlY3RMb29wcy5hZGQodCl9aWYoIWUuc2tpcFR5cGVzKXtjb25zdCBlPXQuZW5jb2RlQ0JPUjtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKXJldHVybiBlLmNhbGwodCx0aGlzKTtjb25zdCByPXRoaXMuc2VtYW50aWNUeXBlc1t0LmNvbnN0cnVjdG9yLm5hbWVdO2lmKHIpcmV0dXJuIHIuY2FsbCh0LHRoaXMsdCl9Y29uc3Qgcj1PYmplY3Qua2V5cyh0KS5maWx0ZXIoKGU9Pntjb25zdCByPXR5cGVvZiB0W2VdO3JldHVyblwiZnVuY3Rpb25cIiE9PXImJighdGhpcy5vbWl0VW5kZWZpbmVkUHJvcGVydGllc3x8XCJ1bmRlZmluZWRcIiE9PXIpfSkpLG49e307aWYodGhpcy5jYW5vbmljYWwmJnIuc29ydCgoKHQsZSk9Pntjb25zdCByPW5bdF18fChuW3RdPUIuZW5jb2RlKHQpKSxpPW5bZV18fChuW2VdPUIuZW5jb2RlKGUpKTtyZXR1cm4gci5jb21wYXJlKGkpfSkpLGUuaW5kZWZpbml0ZSl7aWYoIXRoaXMuX3B1c2hVSW50OChhLk1BUDw8NXx1LklOREVGSU5JVEUpKXJldHVybiExfWVsc2UgaWYoIXRoaXMuX3B1c2hJbnQoci5sZW5ndGgsYS5NQVApKXJldHVybiExO2xldCBpPW51bGw7Zm9yKGxldCBlPTAsbz1yLmxlbmd0aDtlPG87ZSsrKXtjb25zdCBvPXJbZV07aWYodGhpcy5jYW5vbmljYWwmJihpPW5bb10pKXtpZighdGhpcy5wdXNoKGkpKXJldHVybiExfWVsc2UgaWYoIXRoaXMuX3B1c2hTdHJpbmcobykpcmV0dXJuITE7aWYoIXRoaXMucHVzaEFueSh0W29dKSlyZXR1cm4hMX1pZihlLmluZGVmaW5pdGUpe2lmKCF0aGlzLnB1c2godikpcmV0dXJuITF9ZWxzZSB0aGlzLmRldGVjdExvb3BzJiZ0aGlzLmRldGVjdExvb3BzLmRlbGV0ZSh0KTtyZXR1cm4hMH1wdXNoQW55KHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIHRoaXMuX3B1c2hOdW1iZXIodCk7Y2FzZVwiYmlnaW50XCI6cmV0dXJuIHRoaXMuX3B1c2hKU0JpZ2ludCh0KTtjYXNlXCJzdHJpbmdcIjpyZXR1cm4gdGhpcy5fcHVzaFN0cmluZyh0KTtjYXNlXCJib29sZWFuXCI6cmV0dXJuIHRoaXMuX3B1c2hCb29sZWFuKHQpO2Nhc2VcInVuZGVmaW5lZFwiOnJldHVybiB0aGlzLl9wdXNoVW5kZWZpbmVkKHQpO2Nhc2VcIm9iamVjdFwiOnJldHVybiB0aGlzLl9wdXNoT2JqZWN0KHQpO2Nhc2VcInN5bWJvbFwiOnN3aXRjaCh0KXtjYXNlIGYuTlVMTDpyZXR1cm4gdGhpcy5fcHVzaE51bGwobnVsbCk7Y2FzZSBmLlVOREVGSU5FRDpyZXR1cm4gdGhpcy5fcHVzaFVuZGVmaW5lZCh2b2lkIDApO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBzeW1ib2w6IFwiK3QudG9TdHJpbmcoKSl9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHR5cGU6IFwiK3R5cGVvZiB0K1wiLCBcIisodC50b1N0cmluZz90LnRvU3RyaW5nKCk6XCJcIikpfX1fcHVzaEFueSh0KXtyZXR1cm4gdGhpcy5wdXNoQW55KHQpfV9lbmNvZGVBbGwodCl7Y29uc3QgZT1uZXcgaSh7aGlnaFdhdGVyTWFyazp0aGlzLnJlYWRhYmxlSGlnaFdhdGVyTWFya30pO3RoaXMucGlwZShlKTtmb3IoY29uc3QgZSBvZiB0KXRoaXMucHVzaEFueShlKTtyZXR1cm4gdGhpcy5lbmQoKSxlLnJlYWQoKX1zdGF0aWMgZW5jb2RlSW5kZWZpbml0ZSh0LGUscj17fSl7aWYobnVsbD09ZSl7aWYobnVsbD09dGhpcyl0aHJvdyBuZXcgRXJyb3IoXCJObyBvYmplY3QgdG8gZW5jb2RlXCIpO2U9dGhpc31jb25zdHtjaHVua1NpemU6bj00MDk2fT1yO2xldCBpPSEwO2NvbnN0IHM9dHlwZW9mIGU7bGV0IGw9bnVsbDtpZihcInN0cmluZ1wiPT09cyl7aT1pJiZ0Ll9wdXNoVUludDgoYS5VVEY4X1NUUklORzw8NXx1LklOREVGSU5JVEUpO2xldCByPTA7Zm9yKDtyPGUubGVuZ3RoOyl7Y29uc3Qgbz1yK247aT1pJiZ0Ll9wdXNoU3RyaW5nKGUuc2xpY2UocixvKSkscj1vfWk9aSYmdC5wdXNoKHYpfWVsc2UgaWYobD1vLmJ1ZmZlcmlzaFRvQnVmZmVyKGUpKXtpPWkmJnQuX3B1c2hVSW50OChhLkJZVEVfU1RSSU5HPDw1fHUuSU5ERUZJTklURSk7bGV0IGU9MDtmb3IoO2U8bC5sZW5ndGg7KXtjb25zdCByPWUrbjtpPWkmJnQuX3B1c2hCdWZmZXIodCxsLnNsaWNlKGUscikpLGU9cn1pPWkmJnQucHVzaCh2KX1lbHNlIGlmKEFycmF5LmlzQXJyYXkoZSkpaT1pJiZ0Ll9wdXNoQXJyYXkodCxlLHtpbmRlZmluaXRlOiEwfSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgTWFwKWk9aSYmdC5fcHVzaE1hcCh0LGUse2luZGVmaW5pdGU6ITB9KTtlbHNle2lmKFwib2JqZWN0XCIhPT1zKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW5kZWZpbml0ZSBlbmNvZGluZ1wiKTtpPWkmJnQuX3B1c2hPYmplY3QoZSx7aW5kZWZpbml0ZTohMCxza2lwVHlwZXM6ITB9KX1yZXR1cm4gaX1zdGF0aWMgZW5jb2RlKC4uLnQpe3JldHVybihuZXcgQikuX2VuY29kZUFsbCh0KX1zdGF0aWMgZW5jb2RlQ2Fub25pY2FsKC4uLnQpe3JldHVybiBuZXcgQih7Y2Fub25pY2FsOiEwfSkuX2VuY29kZUFsbCh0KX1zdGF0aWMgZW5jb2RlT25lKHQsZSl7cmV0dXJuIG5ldyBCKGUpLl9lbmNvZGVBbGwoW3RdKX1zdGF0aWMgZW5jb2RlQXN5bmModCxlKXtyZXR1cm4gbmV3IFByb21pc2UoKChyLG4pPT57Y29uc3QgaT1bXSxvPW5ldyBCKGUpO28ub24oXCJkYXRhXCIsKHQ9PmkucHVzaCh0KSkpLG8ub24oXCJlcnJvclwiLG4pLG8ub24oXCJmaW5pc2hcIiwoKCk9PnIoZC5jb25jYXQoaSkpKSksby5wdXNoQW55KHQpLG8uZW5kKCl9KSl9fXQuZXhwb3J0cz1CfSw3MDoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7Y29uc3R7QnVmZmVyOm59PXIoNzY0KSxpPXIoNjY2KSxvPXIoNzc0KSx7TVQ6c309cig2Nik7Y2xhc3MgYSBleHRlbmRzIE1hcHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1zdGF0aWMgX2VuY29kZSh0KXtyZXR1cm4gaS5lbmNvZGVDYW5vbmljYWwodCkudG9TdHJpbmcoXCJiYXNlNjRcIil9c3RhdGljIF9kZWNvZGUodCl7cmV0dXJuIG8uZGVjb2RlRmlyc3RTeW5jKHQsXCJiYXNlNjRcIil9Z2V0KHQpe3JldHVybiBzdXBlci5nZXQoYS5fZW5jb2RlKHQpKX1zZXQodCxlKXtyZXR1cm4gc3VwZXIuc2V0KGEuX2VuY29kZSh0KSxlKX1kZWxldGUodCl7cmV0dXJuIHN1cGVyLmRlbGV0ZShhLl9lbmNvZGUodCkpfWhhcyh0KXtyZXR1cm4gc3VwZXIuaGFzKGEuX2VuY29kZSh0KSl9KmtleXMoKXtmb3IoY29uc3QgdCBvZiBzdXBlci5rZXlzKCkpeWllbGQgYS5fZGVjb2RlKHQpfSplbnRyaWVzKCl7Zm9yKGNvbnN0IHQgb2Ygc3VwZXIuZW50cmllcygpKXlpZWxkW2EuX2RlY29kZSh0WzBdKSx0WzFdXX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLmVudHJpZXMoKX1mb3JFYWNoKHQsZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBmdW5jdGlvblwiKTtmb3IoY29uc3QgZSBvZiBzdXBlci5lbnRyaWVzKCkpdC5jYWxsKHRoaXMsZVsxXSxhLl9kZWNvZGUoZVswXSksdGhpcyl9ZW5jb2RlQ0JPUih0KXtpZighdC5fcHVzaEludCh0aGlzLnNpemUscy5NQVApKXJldHVybiExO2lmKHQuY2Fub25pY2FsKXtjb25zdCBlPUFycmF5LmZyb20oc3VwZXIuZW50cmllcygpKS5tYXAoKHQ9PltuLmZyb20odFswXSxcImJhc2U2NFwiKSx0WzFdXSkpO2Uuc29ydCgoKHQsZSk9PnRbMF0uY29tcGFyZShlWzBdKSkpO2Zvcihjb25zdCByIG9mIGUpaWYoIXQucHVzaChyWzBdKXx8IXQucHVzaEFueShyWzFdKSlyZXR1cm4hMX1lbHNlIGZvcihjb25zdCBlIG9mIHN1cGVyLmVudHJpZXMoKSlpZighdC5wdXNoKG4uZnJvbShlWzBdLFwiYmFzZTY0XCIpKXx8IXQucHVzaEFueShlWzFdKSlyZXR1cm4hMTtyZXR1cm4hMH19dC5leHBvcnRzPWF9LDMyOih0LGUscik9PntcInVzZSBzdHJpY3RcIjtjb25zdHtNVDpuLFNJTVBMRTppLFNZTVM6b309cig2Nik7Y2xhc3Mgc3tjb25zdHJ1Y3Rvcih0KXtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIFNpbXBsZSB0eXBlOiBcIit0eXBlb2YgdCk7aWYodDwwfHx0PjI1NXx8KDB8dCkhPT10KXRocm93IG5ldyBFcnJvcihcInZhbHVlIG11c3QgYmUgYSBzbWFsbCBwb3NpdGl2ZSBpbnRlZ2VyOiBcIit0KTt0aGlzLnZhbHVlPXR9dG9TdHJpbmcoKXtyZXR1cm5cInNpbXBsZShcIit0aGlzLnZhbHVlK1wiKVwifWluc3BlY3QodCxlKXtyZXR1cm5cInNpbXBsZShcIit0aGlzLnZhbHVlK1wiKVwifWVuY29kZUNCT1IodCl7cmV0dXJuIHQuX3B1c2hJbnQodGhpcy52YWx1ZSxuLlNJTVBMRV9GTE9BVCl9c3RhdGljIGlzU2ltcGxlKHQpe3JldHVybiB0IGluc3RhbmNlb2Ygc31zdGF0aWMgZGVjb2RlKHQsZT0hMCxyPSExKXtzd2l0Y2godCl7Y2FzZSBpLkZBTFNFOnJldHVybiExO2Nhc2UgaS5UUlVFOnJldHVybiEwO2Nhc2UgaS5OVUxMOnJldHVybiBlP251bGw6by5OVUxMO2Nhc2UgaS5VTkRFRklORUQ6aWYoZSlyZXR1cm47cmV0dXJuIG8uVU5ERUZJTkVEO2Nhc2UtMTppZighZXx8IXIpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBCUkVBS1wiKTtyZXR1cm4gby5CUkVBSztkZWZhdWx0OnJldHVybiBuZXcgcyh0KX19fXQuZXhwb3J0cz1zfSw3ODU6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0IG49cig2NiksaT1yKDg3Myk7ZnVuY3Rpb24gbyh0LGUpe2lmKGkuaXNCdWZmZXJpc2godCkpdC50b0pTT049ZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IHIgb2YgdClvKHIsZSk7ZWxzZSBpZih0JiZcIm9iamVjdFwiPT10eXBlb2YgdCYmKCEodCBpbnN0YW5jZW9mIHUpfHx0LnRhZzwyMXx8dC50YWc+MjMpKWZvcihjb25zdCByIG9mIE9iamVjdC52YWx1ZXModCkpbyhyLGUpfWNvbnN0IHM9ezY0OlVpbnQ4QXJyYXksNjU6VWludDE2QXJyYXksNjY6VWludDMyQXJyYXksNjg6VWludDhDbGFtcGVkQXJyYXksNjk6VWludDE2QXJyYXksNzA6VWludDMyQXJyYXksNzI6SW50OEFycmF5LDczOkludDE2QXJyYXksNzQ6SW50MzJBcnJheSw3NzpJbnQxNkFycmF5LDc4OkludDMyQXJyYXksODE6RmxvYXQzMkFycmF5LDgyOkZsb2F0NjRBcnJheSw4NTpGbG9hdDMyQXJyYXksODY6RmxvYXQ2NEFycmF5fTtcInVuZGVmaW5lZFwiIT10eXBlb2YgQmlnVWludDY0QXJyYXkmJihzWzY3XT1CaWdVaW50NjRBcnJheSxzWzcxXT1CaWdVaW50NjRBcnJheSksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEJpZ0ludDY0QXJyYXkmJihzWzc1XT1CaWdJbnQ2NEFycmF5LHNbNzldPUJpZ0ludDY0QXJyYXkpO2NvbnN0IGE9U3ltYm9sKFwiSU5URVJOQUxfSlNPTlwiKTtjbGFzcyB1e2NvbnN0cnVjdG9yKHQsZSxyKXtpZih0aGlzLnRhZz10LHRoaXMudmFsdWU9ZSx0aGlzLmVycj1yLFwibnVtYmVyXCIhPXR5cGVvZiB0aGlzLnRhZyl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHRhZyB0eXBlIChcIit0eXBlb2YgdGhpcy50YWcrXCIpXCIpO2lmKHRoaXMudGFnPDB8fCgwfHRoaXMudGFnKSE9PXRoaXMudGFnKXRocm93IG5ldyBFcnJvcihcIlRhZyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcjogXCIrdGhpcy50YWcpfXRvSlNPTigpe2lmKHRoaXNbYV0pcmV0dXJuIHRoaXNbYV0oKTtjb25zdCB0PXt0YWc6dGhpcy50YWcsdmFsdWU6dGhpcy52YWx1ZX07cmV0dXJuIHRoaXMuZXJyJiYodC5lcnI9dGhpcy5lcnIpLHR9dG9TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLnRhZ30oJHtKU09OLnN0cmluZ2lmeSh0aGlzLnZhbHVlKX0pYH1lbmNvZGVDQk9SKHQpe3JldHVybiB0Ll9wdXNoVGFnKHRoaXMudGFnKSx0LnB1c2hBbnkodGhpcy52YWx1ZSl9Y29udmVydCh0KXtsZXQgZT1udWxsIT10P3RbdGhpcy50YWddOnZvaWQgMDtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiYoZT11W1wiX3RhZ19cIit0aGlzLnRhZ10sXCJmdW5jdGlvblwiIT10eXBlb2YgZSkpe2lmKGU9c1t0aGlzLnRhZ10sXCJmdW5jdGlvblwiIT10eXBlb2YgZSlyZXR1cm4gdGhpcztlPXRoaXMuX3RvVHlwZWRBcnJheX10cnl7cmV0dXJuIGUuY2FsbCh0aGlzLHRoaXMudmFsdWUpfWNhdGNoKHQpe3JldHVybiB0JiZ0Lm1lc3NhZ2UmJnQubWVzc2FnZS5sZW5ndGg+MD90aGlzLmVycj10Lm1lc3NhZ2U6dGhpcy5lcnI9dCx0aGlzfX1fdG9UeXBlZEFycmF5KHQpe2NvbnN0e3RhZzplfT10aGlzLHI9c1tlXTtpZighcil0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHlwZWQgYXJyYXkgdGFnOiAke2V9YCk7Y29uc3Qgbj0yKiooKCgxNiZlKT4+NCkrKDMmZSkpO3JldHVybiEoNCZlKSE9PWkuaXNCaWdFbmRpYW4oKSYmbj4xJiZmdW5jdGlvbih0LGUscixuKXtjb25zdCBpPW5ldyBEYXRhVmlldyh0KSxbbyxzXT17MjpbaS5nZXRVaW50MTYsaS5zZXRVaW50MTZdLDQ6W2kuZ2V0VWludDMyLGkuc2V0VWludDMyXSw4OltpLmdldEJpZ1VpbnQ2NCxpLnNldEJpZ1VpbnQ2NF19W2VdLGE9cituO2ZvcihsZXQgdD1yO3Q8YTt0Kz1lKXMuY2FsbChpLHQsby5jYWxsKGksdCwhMCkpfSh0LmJ1ZmZlcixuLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpLG5ldyByKHQuYnVmZmVyLnNsaWNlKHQuYnl0ZU9mZnNldCx0LmJ5dGVPZmZzZXQrdC5ieXRlTGVuZ3RoKSl9c3RhdGljIF90YWdfMCh0KXtyZXR1cm4gbmV3IERhdGUodCl9c3RhdGljIF90YWdfMSh0KXtyZXR1cm4gbmV3IERhdGUoMWUzKnQpfXN0YXRpYyBfdGFnXzIodCl7cmV0dXJuIGkuYnVmZmVyVG9CaWdudW1iZXIodCl9c3RhdGljIF90YWdfMyh0KXtjb25zdCBlPWkuYnVmZmVyVG9CaWdudW1iZXIodCk7cmV0dXJuIG4uQk4uTUlOVVNfT05FLm1pbnVzKGUpfXN0YXRpYyBfdGFnXzQodCl7aWYoIW4uQmlnTnVtYmVyKXRocm93IG5ldyBFcnJvcihcIk5vIGJpZ251bWJlci5qc1wiKTtyZXR1cm4gbmV3IG4uQmlnTnVtYmVyKHRbMV0pLnNoaWZ0ZWRCeSh0WzBdKX1zdGF0aWMgX3RhZ181KHQpe2lmKCFuLkJpZ051bWJlcil0aHJvdyBuZXcgRXJyb3IoXCJObyBiaWdudW1iZXIuanNcIik7cmV0dXJuIG4uQk4uVFdPLnBvdyh0WzBdKS50aW1lcyh0WzFdKX1zdGF0aWMgX3RhZ18yMSh0KXtyZXR1cm4gaS5pc0J1ZmZlcmlzaCh0KT90aGlzW2FdPSgpPT5pLmJhc2U2NHVybCh0KTpvKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIGkuYmFzZTY0dXJsKHRoaXMpfSkpLHRoaXN9c3RhdGljIF90YWdfMjIodCl7cmV0dXJuIGkuaXNCdWZmZXJpc2godCk/dGhpc1thXT0oKT0+aS5iYXNlNjQodCk6byh0LChmdW5jdGlvbigpe3JldHVybiBpLmJhc2U2NCh0aGlzKX0pKSx0aGlzfXN0YXRpYyBfdGFnXzIzKHQpe3JldHVybiBpLmlzQnVmZmVyaXNoKHQpP3RoaXNbYV09KCk9PnQudG9TdHJpbmcoXCJoZXhcIik6byh0LChmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKFwiaGV4XCIpfSkpLHRoaXN9c3RhdGljIF90YWdfMzIodCl7cmV0dXJuIG5ldyBVUkwodCl9c3RhdGljIF90YWdfMzModCl7aWYoIXQubWF0Y2goL15bYS16QS1aMC05Xy1dKyQvKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NHVybCBjaGFyYWN0ZXJzXCIpO2NvbnN0IGU9dC5sZW5ndGglNDtpZigxPT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NHVybCBsZW5ndGhcIik7aWYoMj09PWUpe2lmKC0xPT09XCJBUWd3XCIuaW5kZXhPZih0W3QubGVuZ3RoLTFdKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NCBwYWRkaW5nXCIpfWVsc2UgaWYoMz09PWUmJi0xPT09XCJBRUlNUVVZY2drb3N3MDQ4XCIuaW5kZXhPZih0W3QubGVuZ3RoLTFdKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NCBwYWRkaW5nXCIpO3JldHVybiB0aGlzfXN0YXRpYyBfdGFnXzM0KHQpe2NvbnN0IGU9dC5tYXRjaCgvXlthLXpBLVowLTkrL10rKD17MCwyfSkkLyk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBiYXNlNjR1cmwgY2hhcmFjdGVyc1wiKTtpZih0Lmxlbmd0aCU0IT0wKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0dXJsIGxlbmd0aFwiKTtpZihcIj1cIj09PWVbMV0pe2lmKC0xPT09XCJBUWd3XCIuaW5kZXhPZih0W3QubGVuZ3RoLTJdKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NCBwYWRkaW5nXCIpfWVsc2UgaWYoXCI9PVwiPT09ZVsxXSYmLTE9PT1cIkFFSU1RVVljZ2tvc3cwNDhcIi5pbmRleE9mKHRbdC5sZW5ndGgtM10pKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0IHBhZGRpbmdcIik7cmV0dXJuIHRoaXN9c3RhdGljIF90YWdfMzUodCl7cmV0dXJuIG5ldyBSZWdFeHAodCl9c3RhdGljIF90YWdfMjU4KHQpe3JldHVybiBuZXcgU2V0KHQpfX11LklOVEVSTkFMX0pTT049YSx0LmV4cG9ydHM9dX0sODczOih0LGUscik9PntcInVzZSBzdHJpY3RcIjtjb25zdHtCdWZmZXI6bn09cig3NjQpLGk9cigyMDIpLG89cig4MzApLHM9cig5NjApLGE9cig2Nikse05VTUJZVEVTOnUsU0hJRlQzMjpsLEJJOmMsU1lNUzpmfT1hO2xldCBoPW51bGw7dHJ5e2g9cig2NjkpfWNhdGNoKHQpe2g9cig1OTUpfWUuaW5zcGVjdD1oLmluc3BlY3Q7Y29uc3QgcD1uZXcgcyhcInV0ZjhcIix7ZmF0YWw6ITAsaWdub3JlQk9NOiEwfSk7ZS51dGY4PXQ9PnAuZGVjb2RlKHQpLGUudXRmOC5jaGVja3NVVEY4PSEwLGUuaXNCdWZmZXJpc2g9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwib2JqZWN0XCI9PXR5cGVvZiB0JiYobi5pc0J1ZmZlcih0KXx8dCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheXx8dCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHx0IGluc3RhbmNlb2YgRGF0YVZpZXcpfSxlLmJ1ZmZlcmlzaFRvQnVmZmVyPWZ1bmN0aW9uKHQpe3JldHVybiBuLmlzQnVmZmVyKHQpP3Q6QXJyYXlCdWZmZXIuaXNWaWV3KHQpP24uZnJvbSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKTp0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/bi5mcm9tKHQpOm51bGx9LGUucGFyc2VDQk9SaW50PWZ1bmN0aW9uKHQsZSxyPSEwKXtzd2l0Y2godCl7Y2FzZSB1Lk9ORTpyZXR1cm4gZS5yZWFkVUludDgoMCk7Y2FzZSB1LlRXTzpyZXR1cm4gZS5yZWFkVUludDE2QkUoMCk7Y2FzZSB1LkZPVVI6cmV0dXJuIGUucmVhZFVJbnQzMkJFKDApO2Nhc2UgdS5FSUdIVDp7Y29uc3QgdD1lLnJlYWRVSW50MzJCRSgwKSxuPWUucmVhZFVJbnQzMkJFKDQpO2lmKHQ+MjA5NzE1MSl7aWYocilyZXR1cm4gQmlnSW50KHQpKmMuU0hJRlQzMitCaWdJbnQobik7aWYoIWEuQmlnTnVtYmVyKXRocm93IG5ldyBFcnJvcihcIk5vIGJpZ2ludCBhbmQgbm8gYmlnbnVtYmVyLmpzXCIpO3JldHVybiBuZXcgYS5CaWdOdW1iZXIodCkudGltZXMobCkucGx1cyhuKX1yZXR1cm4gdCpsK259ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGFkZGl0aW9uYWwgaW5mbyBmb3IgaW50OiBcIit0KX19LGUud3JpdGVIYWxmPWZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj1uLmFsbG9jVW5zYWZlKDQpO3Iud3JpdGVGbG9hdEJFKGUsMCk7Y29uc3QgaT1yLnJlYWRVSW50MzJCRSgwKTtpZigwIT0oODE5MSZpKSlyZXR1cm4hMTtsZXQgbz1pPj4xNiYzMjc2ODtjb25zdCBzPWk+PjIzJjI1NSxhPTgzODg2MDcmaTtpZihzPj0xMTMmJnM8PTE0MilvKz0ocy0xMTI8PDEwKSsoYT4+MTMpO2Vsc2V7aWYoIShzPj0xMDMmJnM8MTEzKSlyZXR1cm4hMTtpZihhJigxPDwxMjYtcyktMSlyZXR1cm4hMTtvKz1hKzgzODg2MDg+PjEyNi1zfXJldHVybiB0LndyaXRlVUludDE2QkUobyksITB9LGUucGFyc2VIYWxmPWZ1bmN0aW9uKHQpe2NvbnN0IGU9MTI4JnRbMF0/LTE6MSxyPSgxMjQmdFswXSk+PjIsbj0oMyZ0WzBdKTw8OHx0WzFdO3JldHVybiByPzMxPT09cj9lKihuP05hTjpJbmZpbml0eSk6ZSpNYXRoLnBvdygyLHItMjUpKigxMDI0K24pOjUuOTYwNDY0NDc3NTM5MDYzZS04KmUqbn0sZS5wYXJzZUNCT1JmbG9hdD1mdW5jdGlvbih0KXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMjpyZXR1cm4gZS5wYXJzZUhhbGYodCk7Y2FzZSA0OnJldHVybiB0LnJlYWRGbG9hdEJFKDApO2Nhc2UgODpyZXR1cm4gdC5yZWFkRG91YmxlQkUoMCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGZsb2F0IHNpemU6IFwiK3QubGVuZ3RoKX19LGUuaGV4PWZ1bmN0aW9uKHQpe3JldHVybiBuLmZyb20odC5yZXBsYWNlKC9eMHgvLFwiXCIpLFwiaGV4XCIpfSxlLmJpbj1mdW5jdGlvbih0KXtsZXQgZT0wLHI9KHQ9dC5yZXBsYWNlKC9cXHMvZyxcIlwiKSkubGVuZ3RoJTh8fDg7Y29uc3QgaT1bXTtmb3IoO3I8PXQubGVuZ3RoOylpLnB1c2gocGFyc2VJbnQodC5zbGljZShlLHIpLDIpKSxlPXIscis9ODtyZXR1cm4gbi5mcm9tKGkpfSxlLmFycmF5RXF1YWw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dCYmbnVsbD09ZXx8bnVsbCE9dCYmbnVsbCE9ZSYmdC5sZW5ndGg9PT1lLmxlbmd0aCYmdC5ldmVyeSgoKHQscik9PnQ9PT1lW3JdKSl9LGUuYnVmZmVyVG9CaWdudW1iZXI9ZnVuY3Rpb24odCl7aWYoIWEuQmlnTnVtYmVyKXRocm93IG5ldyBFcnJvcihcIk5vIGJpZ2ludCBhbmQgbm8gYmlnbnVtYmVyLmpzXCIpO3JldHVybiBuZXcgYS5CaWdOdW1iZXIodC50b1N0cmluZyhcImhleFwiKSwxNil9LGUuYnVmZmVyVG9CaWdJbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIEJpZ0ludChcIjB4XCIrdC50b1N0cmluZyhcImhleFwiKSl9LGUuY2JvclZhbHVlVG9TdHJpbmc9ZnVuY3Rpb24odCxyPS0xKXtzd2l0Y2godHlwZW9mIHQpe2Nhc2VcInN5bWJvbFwiOntzd2l0Y2godCl7Y2FzZSBmLk5VTEw6cmV0dXJuXCJudWxsXCI7Y2FzZSBmLlVOREVGSU5FRDpyZXR1cm5cInVuZGVmaW5lZFwiO2Nhc2UgZi5CUkVBSzpyZXR1cm5cIkJSRUFLXCJ9aWYodC5kZXNjcmlwdGlvbilyZXR1cm4gdC5kZXNjcmlwdGlvbjtjb25zdCBlPXQudG9TdHJpbmcoKS5tYXRjaCgvXlN5bWJvbFxcKCguKilcXCkvKTtyZXR1cm4gZSYmZVsxXT9lWzFdOlwiU3ltYm9sXCJ9Y2FzZVwic3RyaW5nXCI6cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpO2Nhc2VcImJpZ2ludFwiOnJldHVybiB0LnRvU3RyaW5nKCk7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIHI+MD9oLmluc3BlY3QodCkrXCJfXCIrcjpoLmluc3BlY3QodCl9Y29uc3Qgbj1lLmJ1ZmZlcmlzaFRvQnVmZmVyKHQpO2lmKG4pe2NvbnN0IHQ9bi50b1N0cmluZyhcImhleFwiKTtyZXR1cm4gcj09PS0xLzA/dDpgaCcke3R9J2B9cmV0dXJuIGEuQmlnTnVtYmVyJiZhLkJpZ051bWJlci5pc0JpZ051bWJlcih0KT90LnRvU3RyaW5nKCk6dCYmXCJmdW5jdGlvblwiPT10eXBlb2YgdC5pbnNwZWN0P3QuaW5zcGVjdCgpOmguaW5zcGVjdCh0KX0sZS5ndWVzc0VuY29kaW5nPWZ1bmN0aW9uKHQscil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpcmV0dXJuIG5ldyBpKHQsbnVsbCE9cj9yOlwiaGV4XCIpO2NvbnN0IG49ZS5idWZmZXJpc2hUb0J1ZmZlcih0KTtpZihuKXJldHVybiBuZXcgaShuKTtpZigocz10KWluc3RhbmNlb2Ygby5SZWFkYWJsZXx8W1wicmVhZFwiLFwib25cIixcInBpcGVcIl0uZXZlcnkoKHQ9PlwiZnVuY3Rpb25cIj09dHlwZW9mIHNbdF0pKSlyZXR1cm4gdDt2YXIgczt0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGlucHV0IHR5cGVcIil9O2NvbnN0IGQ9e1wiPVwiOlwiXCIsXCIrXCI6XCItXCIsXCIvXCI6XCJfXCJ9O2UuYmFzZTY0dXJsPWZ1bmN0aW9uKHQpe3JldHVybiBlLmJ1ZmZlcmlzaFRvQnVmZmVyKHQpLnRvU3RyaW5nKFwiYmFzZTY0XCIpLnJlcGxhY2UoL1s9Ky9dL2csKHQ9PmRbdF0pKX0sZS5iYXNlNjQ9ZnVuY3Rpb24odCl7cmV0dXJuIGUuYnVmZmVyaXNoVG9CdWZmZXIodCkudG9TdHJpbmcoXCJiYXNlNjRcIil9LGUuaXNCaWdFbmRpYW49ZnVuY3Rpb24oKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDQpO3JldHVybiEoKG5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlcilbMF09MSkmdFswXSl9fSw5NjA6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2xldCBuPW51bGw7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgVGV4dERlY29kZXIpbj1UZXh0RGVjb2RlcjtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cpbj13aW5kb3cuVGV4dERlY29kZXI7ZWxzZSBpZihcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZiluPXNlbGYuVGV4dERlY29kZXI7ZWxzZSB0cnl7Y29uc3QgdD1yKDY2OSk7XCJmdW5jdGlvblwiIT10eXBlb2YgbiYmKG49dC5UZXh0RGVjb2Rlcil9Y2F0Y2godCl7fWlmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIG4pe2NsYXNzIHR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnV0ZkxhYmVsPXQsdGhpcy5vcHRpb25zPWV9ZGVjb2RlKHQpe2NvbnN0IGU9dC50b1N0cmluZyh0aGlzLnV0ZkxhYmVsKTtpZih0aGlzLm9wdGlvbnMuZmF0YWwpZm9yKGNvbnN0IHQgb2YgZSlpZig2NTUzMz09PXQuY29kZVBvaW50QXQoMCkpe2NvbnN0IHQ9bmV3IFR5cGVFcnJvcihcIltFUlJfRU5DT0RJTkdfSU5WQUxJRF9FTkNPREVEX0RBVEFdOiBUaGUgZW5jb2RlZCBkYXRhIHdhcyBub3QgdmFsaWQgZm9yIGVuY29kaW5nIFwiK3RoaXMudXRmTGFiZWwpO3Rocm93IHQuY29kZT1cIkVSUl9FTkNPRElOR19JTlZBTElEX0VOQ09ERURfREFUQVwiLHQuZXJybm89MTIsdH1yZXR1cm4gZX19bj10fXQuZXhwb3J0cz1ufSwyMDI6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0IG49cig4MzApLHtCdWZmZXI6aX09cig3NjQpLG89cig5NjApO2xldCBzPW51bGwsYT1TeW1ib2wuZm9yKFwibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b21cIik7dHJ5e3M9cig2NjkpLGE9cy5pbnNwZWN0LmN1c3RvbX1jYXRjaCh0KXt9Y29uc3QgdT1uZXcgbyhcInV0ZjhcIix7ZmF0YWw6ITAsaWdub3JlQk9NOiEwfSk7Y2xhc3MgbCBleHRlbmRzIG4uVHJhbnNmb3Jte2NvbnN0cnVjdG9yKHQsZSxyKXtudWxsPT1yJiYocj17fSk7bGV0IG49bnVsbCxvPW51bGw7c3dpdGNoKHR5cGVvZiB0KXtjYXNlXCJvYmplY3RcIjppLmlzQnVmZmVyKHQpPyhuPXQsbnVsbCE9ZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJihyPWUpKTpyPXQ7YnJlYWs7Y2FzZVwic3RyaW5nXCI6bj10LG51bGwhPWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlP3I9ZTpvPWV9bnVsbD09ciYmKHI9e30pLG51bGw9PW4mJihuPXIuaW5wdXQpLG51bGw9PW8mJihvPXIuaW5wdXRFbmNvZGluZyksZGVsZXRlIHIuaW5wdXQsZGVsZXRlIHIuaW5wdXRFbmNvZGluZztjb25zdCBzPW51bGw9PXIud2F0Y2hQaXBlfHxyLndhdGNoUGlwZTtkZWxldGUgci53YXRjaFBpcGU7Y29uc3QgYT0hIXIucmVhZEVycm9yO2RlbGV0ZSByLnJlYWRFcnJvcixzdXBlcihyKSx0aGlzLnJlYWRFcnJvcj1hLHMmJnRoaXMub24oXCJwaXBlXCIsKHQ9Pntjb25zdCBlPXQuX3JlYWRhYmxlU3RhdGUub2JqZWN0TW9kZTtpZih0aGlzLmxlbmd0aD4wJiZlIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5vYmplY3RNb2RlKXRocm93IG5ldyBFcnJvcihcIkRvIG5vdCBzd2l0Y2ggb2JqZWN0TW9kZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzdHJlYW1cIik7dGhpcy5fcmVhZGFibGVTdGF0ZS5vYmplY3RNb2RlPWUsdGhpcy5fd3JpdGFibGVTdGF0ZS5vYmplY3RNb2RlPWV9KSksbnVsbCE9biYmdGhpcy5lbmQobixvKX1zdGF0aWMgaXNOb0ZpbHRlcih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHRoaXN9c3RhdGljIGNvbXBhcmUodCxlKXtpZighKHQgaW5zdGFuY2VvZiB0aGlzKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnRzIG11c3QgYmUgTm9GaWx0ZXJzXCIpO3JldHVybiB0PT09ZT8wOnQuY29tcGFyZShlKX1zdGF0aWMgY29uY2F0KHQsZSl7aWYoIUFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcImxpc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBOb0ZpbHRlcnNcIik7aWYoMD09PXQubGVuZ3RofHwwPT09ZSlyZXR1cm4gaS5hbGxvYygwKTtudWxsPT1lJiYoZT10LnJlZHVjZSgoKHQsZSk9PntpZighKGUgaW5zdGFuY2VvZiBsKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwibGlzdCBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIE5vRmlsdGVyc1wiKTtyZXR1cm4gdCtlLmxlbmd0aH0pLDApKTtsZXQgcj0hMCxuPSEwO2NvbnN0IG89dC5tYXAoKHQ9PntpZighKHQgaW5zdGFuY2VvZiBsKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwibGlzdCBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIE5vRmlsdGVyc1wiKTtjb25zdCBlPXQuc2xpY2UoKTtyZXR1cm4gaS5pc0J1ZmZlcihlKT9uPSExOnI9ITEsZX0pKTtpZihyKXJldHVybiBpLmNvbmNhdChvLGUpO2lmKG4pcmV0dXJuW10uY29uY2F0KC4uLm8pLnNsaWNlKDAsZSk7dGhyb3cgbmV3IEVycm9yKFwiQ29uY2F0ZW5hdGluZyBtaXhlZCBvYmplY3QgYW5kIGJ5dGUgc3RyZWFtcyBub3Qgc3VwcG9ydGVkXCIpfV90cmFuc2Zvcm0odCxlLHIpe3RoaXMuX3JlYWRhYmxlU3RhdGUub2JqZWN0TW9kZXx8aS5pc0J1ZmZlcih0KXx8KHQ9aS5mcm9tKHQsZSkpLHRoaXMucHVzaCh0KSxyKCl9X2J1ZkFycmF5KCl7bGV0IHQ9dGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXI7aWYoIUFycmF5LmlzQXJyYXkodCkpe2xldCBlPXQuaGVhZDtmb3IodD1bXTtudWxsIT1lOyl0LnB1c2goZS5kYXRhKSxlPWUubmV4dH1yZXR1cm4gdH1yZWFkKHQpe2NvbnN0IGU9c3VwZXIucmVhZCh0KTtpZihudWxsIT1lKXtpZih0aGlzLmVtaXQoXCJyZWFkXCIsZSksdGhpcy5yZWFkRXJyb3ImJmUubGVuZ3RoPHQpdGhyb3cgbmV3IEVycm9yKGBSZWFkICR7ZS5sZW5ndGh9LCB3YW50ZWQgJHt0fWApfWVsc2UgaWYodGhpcy5yZWFkRXJyb3IpdGhyb3cgbmV3IEVycm9yKGBObyBkYXRhIGF2YWlsYWJsZSwgd2FudGVkICR7dH1gKTtyZXR1cm4gZX1wcm9taXNlKHQpe2xldCBlPSExO3JldHVybiBuZXcgUHJvbWlzZSgoKHIsbik9Pnt0aGlzLm9uKFwiZmluaXNoXCIsKCgpPT57Y29uc3Qgbj10aGlzLnJlYWQoKTtudWxsPT10fHxlfHwoZT0hMCx0KG51bGwsbikpLHIobil9KSksdGhpcy5vbihcImVycm9yXCIsKHI9PntudWxsPT10fHxlfHwoZT0hMCx0KHIpKSxuKHIpfSkpfSkpfWNvbXBhcmUodCl7aWYoISh0IGluc3RhbmNlb2YgbCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50cyBtdXN0IGJlIE5vRmlsdGVyc1wiKTtpZih0aGlzPT09dClyZXR1cm4gMDtjb25zdCBlPXRoaXMuc2xpY2UoKSxyPXQuc2xpY2UoKTtpZihpLmlzQnVmZmVyKGUpJiZpLmlzQnVmZmVyKHIpKXJldHVybiBlLmNvbXBhcmUocik7dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGNvbXBhcmUgc3RyZWFtcyBpbiBvYmplY3QgbW9kZVwiKX1lcXVhbHModCl7cmV0dXJuIDA9PT10aGlzLmNvbXBhcmUodCl9c2xpY2UodCxlKXtpZih0aGlzLl9yZWFkYWJsZVN0YXRlLm9iamVjdE1vZGUpcmV0dXJuIHRoaXMuX2J1ZkFycmF5KCkuc2xpY2UodCxlKTtjb25zdCByPXRoaXMuX2J1ZkFycmF5KCk7c3dpdGNoKHIubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIGkuYWxsb2MoMCk7Y2FzZSAxOnJldHVybiByWzBdLnNsaWNlKHQsZSk7ZGVmYXVsdDpyZXR1cm4gaS5jb25jYXQocikuc2xpY2UodCxlKX19Z2V0KHQpe3JldHVybiB0aGlzLnNsaWNlKClbdF19dG9KU09OKCl7Y29uc3QgdD10aGlzLnNsaWNlKCk7cmV0dXJuIGkuaXNCdWZmZXIodCk/dC50b0pTT04oKTp0fXRvU3RyaW5nKHQsZSxyKXtjb25zdCBuPXRoaXMuc2xpY2UoZSxyKTtyZXR1cm4gaS5pc0J1ZmZlcihuKT90JiZcInV0ZjhcIiE9PXQ/bi50b1N0cmluZyh0LGUscik6dS5kZWNvZGUobik6SlNPTi5zdHJpbmdpZnkobil9aW5zcGVjdCh0LGUpe3JldHVybiB0aGlzW2FdKHQsZSl9W2FdKHQsZSl7Y29uc3Qgcj10aGlzLl9idWZBcnJheSgpLm1hcCgodD0+aS5pc0J1ZmZlcih0KT8obnVsbCE9ZT9lLnN0eWxpemU6dm9pZCAwKT9lLnN0eWxpemUodC50b1N0cmluZyhcImhleFwiKSxcInN0cmluZ1wiKTp0LnRvU3RyaW5nKFwiaGV4XCIpOnM/cy5pbnNwZWN0KHQsZSk6dC50b1N0cmluZygpKSkuam9pbihcIiwgXCIpO3JldHVybmAke3RoaXMuY29uc3RydWN0b3IubmFtZX0gWyR7cn1dYH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RofXdyaXRlQmlnSW50KHQpe2xldCBlPXQudG9TdHJpbmcoMTYpO2lmKHQ8MCl7Y29uc3Qgcj1CaWdJbnQoTWF0aC5mbG9vcihlLmxlbmd0aC8yKSk7ZT0odD0oQmlnSW50KDEpPDxyKkJpZ0ludCg4KSkrdCkudG9TdHJpbmcoMTYpfXJldHVybiBlLmxlbmd0aCUyJiYoZT1cIjBcIitlKSx0aGlzLnB1c2goaS5mcm9tKGUsXCJoZXhcIikpfXJlYWRVQmlnSW50KHQpe2NvbnN0IGU9dGhpcy5yZWFkKHQpO3JldHVybiBpLmlzQnVmZmVyKGUpP0JpZ0ludChcIjB4XCIrZS50b1N0cmluZyhcImhleFwiKSk6bnVsbH1yZWFkQmlnSW50KHQpe2NvbnN0IGU9dGhpcy5yZWFkKHQpO2lmKCFpLmlzQnVmZmVyKGUpKXJldHVybiBudWxsO2xldCByPUJpZ0ludChcIjB4XCIrZS50b1N0cmluZyhcImhleFwiKSk7cmV0dXJuIDEyOCZlWzBdJiYoci09QmlnSW50KDEpPDxCaWdJbnQoZS5sZW5ndGgpKkJpZ0ludCg4KSkscn19ZnVuY3Rpb24gYyh0LGUpe3JldHVybiBmdW5jdGlvbihyKXtjb25zdCBuPXRoaXMucmVhZChlKTtyZXR1cm4gaS5pc0J1ZmZlcihuKT9uW3RdLmNhbGwobiwwLCEwKTpudWxsfX1mdW5jdGlvbiBmKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe2NvbnN0IG49aS5hbGxvYyhlKTtyZXR1cm4gblt0XS5jYWxsKG4sciwwLCEwKSx0aGlzLnB1c2gobil9fU9iamVjdC5hc3NpZ24obC5wcm90b3R5cGUse3dyaXRlVUludDg6ZihcIndyaXRlVUludDhcIiwxKSx3cml0ZVVJbnQxNkxFOmYoXCJ3cml0ZVVJbnQxNkxFXCIsMiksd3JpdGVVSW50MTZCRTpmKFwid3JpdGVVSW50MTZCRVwiLDIpLHdyaXRlVUludDMyTEU6ZihcIndyaXRlVUludDMyTEVcIiw0KSx3cml0ZVVJbnQzMkJFOmYoXCJ3cml0ZVVJbnQzMkJFXCIsNCksd3JpdGVJbnQ4OmYoXCJ3cml0ZUludDhcIiwxKSx3cml0ZUludDE2TEU6ZihcIndyaXRlSW50MTZMRVwiLDIpLHdyaXRlSW50MTZCRTpmKFwid3JpdGVJbnQxNkJFXCIsMiksd3JpdGVJbnQzMkxFOmYoXCJ3cml0ZUludDMyTEVcIiw0KSx3cml0ZUludDMyQkU6ZihcIndyaXRlSW50MzJCRVwiLDQpLHdyaXRlRmxvYXRMRTpmKFwid3JpdGVGbG9hdExFXCIsNCksd3JpdGVGbG9hdEJFOmYoXCJ3cml0ZUZsb2F0QkVcIiw0KSx3cml0ZURvdWJsZUxFOmYoXCJ3cml0ZURvdWJsZUxFXCIsOCksd3JpdGVEb3VibGVCRTpmKFwid3JpdGVEb3VibGVCRVwiLDgpLHJlYWRVSW50ODpjKFwicmVhZFVJbnQ4XCIsMSkscmVhZFVJbnQxNkxFOmMoXCJyZWFkVUludDE2TEVcIiwyKSxyZWFkVUludDE2QkU6YyhcInJlYWRVSW50MTZCRVwiLDIpLHJlYWRVSW50MzJMRTpjKFwicmVhZFVJbnQzMkxFXCIsNCkscmVhZFVJbnQzMkJFOmMoXCJyZWFkVUludDMyQkVcIiw0KSxyZWFkSW50ODpjKFwicmVhZEludDhcIiwxKSxyZWFkSW50MTZMRTpjKFwicmVhZEludDE2TEVcIiwyKSxyZWFkSW50MTZCRTpjKFwicmVhZEludDE2QkVcIiwyKSxyZWFkSW50MzJMRTpjKFwicmVhZEludDMyTEVcIiw0KSxyZWFkSW50MzJCRTpjKFwicmVhZEludDMyQkVcIiw0KSxyZWFkRmxvYXRMRTpjKFwicmVhZEZsb2F0TEVcIiw0KSxyZWFkRmxvYXRCRTpjKFwicmVhZEZsb2F0QkVcIiw0KSxyZWFkRG91YmxlTEU6YyhcInJlYWREb3VibGVMRVwiLDgpLHJlYWREb3VibGVCRTpjKFwicmVhZERvdWJsZUJFXCIsOCl9KSx0LmV4cG9ydHM9bH0sNzE6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0IG49cig4MzApLGk9cigyMDIpLG89bi5UcmFuc2Zvcm07dC5leHBvcnRzPWNsYXNzIGV4dGVuZHMgb3tjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl93cml0YWJsZVN0YXRlLm9iamVjdE1vZGU9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5vYmplY3RNb2RlPSEwLHRoaXMuYnM9bmV3IGksdGhpcy5fX3Jlc3RhcnQoKX1fdHJhbnNmb3JtKHQsZSxyKXtmb3IodGhpcy5icy53cml0ZSh0KTt0aGlzLmJzLmxlbmd0aD49dGhpcy5fX25lZWRlZDspe2xldCB0PW51bGw7Y29uc3QgZT1udWxsPT09dGhpcy5fX25lZWRlZD92b2lkIDA6dGhpcy5icy5yZWFkKHRoaXMuX19uZWVkZWQpO3RyeXt0PXRoaXMuX19wYXJzZXIubmV4dChlKX1jYXRjaCh0KXtyZXR1cm4gcih0KX10aGlzLl9fbmVlZGVkJiYodGhpcy5fX2ZyZXNoPSExKSx0LmRvbmU/KHRoaXMucHVzaCh0LnZhbHVlKSx0aGlzLl9fcmVzdGFydCgpKTp0aGlzLl9fbmVlZGVkPXQudmFsdWV8fDEvMH1yZXR1cm4gcigpfSpfcGFyc2UoKXt0aHJvdyBuZXcgRXJyb3IoXCJNdXN0IGJlIGltcGxlbWVudGVkIGluIHN1YmNsYXNzXCIpfV9fcmVzdGFydCgpe3RoaXMuX19uZWVkZWQ9bnVsbCx0aGlzLl9fcGFyc2VyPXRoaXMuX3BhcnNlKCksdGhpcy5fX2ZyZXNoPSEwfV9mbHVzaCh0KXt0KHRoaXMuX19mcmVzaD9udWxsOm5ldyBFcnJvcihcInVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIpKX19fSwxODc6dD0+e1widXNlIHN0cmljdFwiO3ZhciBlLHI9XCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3Q/UmVmbGVjdDpudWxsLG49ciYmXCJmdW5jdGlvblwiPT10eXBlb2Ygci5hcHBseT9yLmFwcGx5OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwodCxlLHIpfTtlPXImJlwiZnVuY3Rpb25cIj09dHlwZW9mIHIub3duS2V5cz9yLm93bktleXM6T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCkpfTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCl9O3ZhciBpPU51bWJlci5pc05hTnx8ZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9O2Z1bmN0aW9uIG8oKXtvLmluaXQuY2FsbCh0aGlzKX10LmV4cG9ydHM9byx0LmV4cG9ydHMub25jZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixuKXtmdW5jdGlvbiBpKHIpe3QucmVtb3ZlTGlzdGVuZXIoZSxvKSxuKHIpfWZ1bmN0aW9uIG8oKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnJlbW92ZUxpc3RlbmVyJiZ0LnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixpKSxyKFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSl9eSh0LGUsbyx7b25jZTohMH0pLFwiZXJyb3JcIiE9PWUmJmZ1bmN0aW9uKHQsZSxyKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0Lm9uJiZ5KHQsXCJlcnJvclwiLGUse29uY2U6ITB9KX0odCxpKX0pKX0sby5FdmVudEVtaXR0ZXI9byxvLnByb3RvdHlwZS5fZXZlbnRzPXZvaWQgMCxvLnByb3RvdHlwZS5fZXZlbnRzQ291bnQ9MCxvLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzPXZvaWQgMDt2YXIgcz0xMDtmdW5jdGlvbiBhKHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwibGlzdGVuZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgdCl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdm9pZCAwPT09dC5fbWF4TGlzdGVuZXJzP28uZGVmYXVsdE1heExpc3RlbmVyczp0Ll9tYXhMaXN0ZW5lcnN9ZnVuY3Rpb24gbCh0LGUscixuKXt2YXIgaSxvLHMsbDtpZihhKHIpLHZvaWQgMD09PShvPXQuX2V2ZW50cyk/KG89dC5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdC5fZXZlbnRzQ291bnQ9MCk6KHZvaWQgMCE9PW8ubmV3TGlzdGVuZXImJih0LmVtaXQoXCJuZXdMaXN0ZW5lclwiLGUsci5saXN0ZW5lcj9yLmxpc3RlbmVyOnIpLG89dC5fZXZlbnRzKSxzPW9bZV0pLHZvaWQgMD09PXMpcz1vW2VdPXIsKyt0Ll9ldmVudHNDb3VudDtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHM/cz1vW2VdPW4/W3Isc106W3Mscl06bj9zLnVuc2hpZnQocik6cy5wdXNoKHIpLChpPXUodCkpPjAmJnMubGVuZ3RoPmkmJiFzLndhcm5lZCl7cy53YXJuZWQ9ITA7dmFyIGM9bmV3IEVycm9yKFwiUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiBcIitzLmxlbmd0aCtcIiBcIitTdHJpbmcoZSkrXCIgbGlzdGVuZXJzIGFkZGVkLiBVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBpbmNyZWFzZSBsaW1pdFwiKTtjLm5hbWU9XCJNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmdcIixjLmVtaXR0ZXI9dCxjLnR5cGU9ZSxjLmNvdW50PXMubGVuZ3RoLGw9Yyxjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybihsKX1yZXR1cm4gdH1mdW5jdGlvbiBjKCl7aWYoIXRoaXMuZmlyZWQpcmV0dXJuIHRoaXMudGFyZ2V0LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSx0aGlzLndyYXBGbiksdGhpcy5maXJlZD0hMCwwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQpOnRoaXMubGlzdGVuZXIuYXBwbHkodGhpcy50YXJnZXQsYXJndW1lbnRzKX1mdW5jdGlvbiBmKHQsZSxyKXt2YXIgbj17ZmlyZWQ6ITEsd3JhcEZuOnZvaWQgMCx0YXJnZXQ6dCx0eXBlOmUsbGlzdGVuZXI6cn0saT1jLmJpbmQobik7cmV0dXJuIGkubGlzdGVuZXI9cixuLndyYXBGbj1pLGl9ZnVuY3Rpb24gaCh0LGUscil7dmFyIG49dC5fZXZlbnRzO2lmKHZvaWQgMD09PW4pcmV0dXJuW107dmFyIGk9bltlXTtyZXR1cm4gdm9pZCAwPT09aT9bXTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBpP3I/W2kubGlzdGVuZXJ8fGldOltpXTpyP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodC5sZW5ndGgpLHI9MDtyPGUubGVuZ3RoOysrcillW3JdPXRbcl0ubGlzdGVuZXJ8fHRbcl07cmV0dXJuIGV9KGkpOmQoaSxpLmxlbmd0aCl9ZnVuY3Rpb24gcCh0KXt2YXIgZT10aGlzLl9ldmVudHM7aWYodm9pZCAwIT09ZSl7dmFyIHI9ZVt0XTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiByKXJldHVybiAxO2lmKHZvaWQgMCE9PXIpcmV0dXJuIHIubGVuZ3RofXJldHVybiAwfWZ1bmN0aW9uIGQodCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KGUpLG49MDtuPGU7KytuKXJbbl09dFtuXTtyZXR1cm4gcn1mdW5jdGlvbiB5KHQsZSxyLG4pe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQub24pbi5vbmNlP3Qub25jZShlLHIpOnQub24oZSxyKTtlbHNle2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQuYWRkRXZlbnRMaXN0ZW5lcil0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJlbWl0dGVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEV2ZW50RW1pdHRlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTt0LmFkZEV2ZW50TGlzdGVuZXIoZSwoZnVuY3Rpb24gaShvKXtuLm9uY2UmJnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLGkpLHIobyl9KSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLFwiZGVmYXVsdE1heExpc3RlbmVyc1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzfSxzZXQ6ZnVuY3Rpb24odCl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIHR8fHQ8MHx8aSh0KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mIFwiZGVmYXVsdE1heExpc3RlbmVyc1wiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcrdCtcIi5cIik7cz10fX0pLG8uaW5pdD1mdW5jdGlvbigpe3ZvaWQgMCE9PXRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHN8fCh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKSx0aGlzLl9tYXhMaXN0ZW5lcnM9dGhpcy5fbWF4TGlzdGVuZXJzfHx2b2lkIDB9LG8ucHJvdG90eXBlLnNldE1heExpc3RlbmVycz1mdW5jdGlvbih0KXtpZihcIm51bWJlclwiIT10eXBlb2YgdHx8dDwwfHxpKHQpKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJuXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyt0K1wiLlwiKTtyZXR1cm4gdGhpcy5fbWF4TGlzdGVuZXJzPXQsdGhpc30sby5wcm90b3R5cGUuZ2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHUodGhpcyl9LG8ucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKWUucHVzaChhcmd1bWVudHNbcl0pO3ZhciBpPVwiZXJyb3JcIj09PXQsbz10aGlzLl9ldmVudHM7aWYodm9pZCAwIT09bylpPWkmJnZvaWQgMD09PW8uZXJyb3I7ZWxzZSBpZighaSlyZXR1cm4hMTtpZihpKXt2YXIgcztpZihlLmxlbmd0aD4wJiYocz1lWzBdKSxzIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgczt2YXIgYT1uZXcgRXJyb3IoXCJVbmhhbmRsZWQgZXJyb3IuXCIrKHM/XCIgKFwiK3MubWVzc2FnZStcIilcIjpcIlwiKSk7dGhyb3cgYS5jb250ZXh0PXMsYX12YXIgdT1vW3RdO2lmKHZvaWQgMD09PXUpcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdSluKHUsdGhpcyxlKTtlbHNle3ZhciBsPXUubGVuZ3RoLGM9ZCh1LGwpO2ZvcihyPTA7cjxsOysrciluKGNbcl0sdGhpcyxlKX1yZXR1cm4hMH0sby5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbCh0aGlzLHQsZSwhMSl9LG8ucHJvdG90eXBlLm9uPW8ucHJvdG90eXBlLmFkZExpc3RlbmVyLG8ucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3JldHVybiBsKHRoaXMsdCxlLCEwKX0sby5wcm90b3R5cGUub25jZT1mdW5jdGlvbih0LGUpe3JldHVybiBhKGUpLHRoaXMub24odCxmKHRoaXMsdCxlKSksdGhpc30sby5wcm90b3R5cGUucHJlcGVuZE9uY2VMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3JldHVybiBhKGUpLHRoaXMucHJlcGVuZExpc3RlbmVyKHQsZih0aGlzLHQsZSkpLHRoaXN9LG8ucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixpLG8scztpZihhKGUpLHZvaWQgMD09PShuPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRoaXM7aWYodm9pZCAwPT09KHI9blt0XSkpcmV0dXJuIHRoaXM7aWYocj09PWV8fHIubGlzdGVuZXI9PT1lKTA9PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6KGRlbGV0ZSBuW3RdLG4ucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdChcInJlbW92ZUxpc3RlbmVyXCIsdCxyLmxpc3RlbmVyfHxlKSk7ZWxzZSBpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiByKXtmb3IoaT0tMSxvPXIubGVuZ3RoLTE7bz49MDtvLS0paWYocltvXT09PWV8fHJbb10ubGlzdGVuZXI9PT1lKXtzPXJbb10ubGlzdGVuZXIsaT1vO2JyZWFrfWlmKGk8MClyZXR1cm4gdGhpczswPT09aT9yLnNoaWZ0KCk6ZnVuY3Rpb24odCxlKXtmb3IoO2UrMTx0Lmxlbmd0aDtlKyspdFtlXT10W2UrMV07dC5wb3AoKX0ocixpKSwxPT09ci5sZW5ndGgmJihuW3RdPXJbMF0pLHZvaWQgMCE9PW4ucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdChcInJlbW92ZUxpc3RlbmVyXCIsdCxzfHxlKX1yZXR1cm4gdGhpc30sby5wcm90b3R5cGUub2ZmPW8ucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLG8ucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbih0KXt2YXIgZSxyLG47aWYodm9pZCAwPT09KHI9dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT1yLnJlbW92ZUxpc3RlbmVyKXJldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD8odGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCk6dm9pZCAwIT09clt0XSYmKDA9PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6ZGVsZXRlIHJbdF0pLHRoaXM7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciBpLG89T2JqZWN0LmtleXMocik7Zm9yKG49MDtuPG8ubGVuZ3RoOysrbilcInJlbW92ZUxpc3RlbmVyXCIhPT0oaT1vW25dKSYmdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoaSk7cmV0dXJuIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKFwicmVtb3ZlTGlzdGVuZXJcIiksdGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCx0aGlzfWlmKFwiZnVuY3Rpb25cIj09dHlwZW9mKGU9clt0XSkpdGhpcy5yZW1vdmVMaXN0ZW5lcih0LGUpO2Vsc2UgaWYodm9pZCAwIT09ZSlmb3Iobj1lLmxlbmd0aC0xO24+PTA7bi0tKXRoaXMucmVtb3ZlTGlzdGVuZXIodCxlW25dKTtyZXR1cm4gdGhpc30sby5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3JldHVybiBoKHRoaXMsdCwhMCl9LG8ucHJvdG90eXBlLnJhd0xpc3RlbmVycz1mdW5jdGlvbih0KXtyZXR1cm4gaCh0aGlzLHQsITEpfSxvLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0Lmxpc3RlbmVyQ291bnQ/dC5saXN0ZW5lckNvdW50KGUpOnAuY2FsbCh0LGUpfSxvLnByb3RvdHlwZS5saXN0ZW5lckNvdW50PXAsby5wcm90b3R5cGUuZXZlbnROYW1lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ldmVudHNDb3VudD4wP2UodGhpcy5fZXZlbnRzKTpbXX19LDY0NToodCxlKT0+e2UucmVhZD1mdW5jdGlvbih0LGUscixuLGkpe3ZhciBvLHMsYT04Kmktbi0xLHU9KDE8PGEpLTEsbD11Pj4xLGM9LTcsZj1yP2ktMTowLGg9cj8tMToxLHA9dFtlK2ZdO2ZvcihmKz1oLG89cCYoMTw8LWMpLTEscD4+PS1jLGMrPWE7Yz4wO289MjU2Km8rdFtlK2ZdLGYrPWgsYy09OCk7Zm9yKHM9byYoMTw8LWMpLTEsbz4+PS1jLGMrPW47Yz4wO3M9MjU2KnMrdFtlK2ZdLGYrPWgsYy09OCk7aWYoMD09PW8pbz0xLWw7ZWxzZXtpZihvPT09dSlyZXR1cm4gcz9OYU46MS8wKihwPy0xOjEpO3MrPU1hdGgucG93KDIsbiksby09bH1yZXR1cm4ocD8tMToxKSpzKk1hdGgucG93KDIsby1uKX0sZS53cml0ZT1mdW5jdGlvbih0LGUscixuLGksbyl7dmFyIHMsYSx1LGw9OCpvLWktMSxjPSgxPDxsKS0xLGY9Yz4+MSxoPTIzPT09aT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1uPzA6by0xLGQ9bj8xOi0xLHk9ZTwwfHwwPT09ZSYmMS9lPDA/MTowO2ZvcihlPU1hdGguYWJzKGUpLGlzTmFOKGUpfHxlPT09MS8wPyhhPWlzTmFOKGUpPzE6MCxzPWMpOihzPU1hdGguZmxvb3IoTWF0aC5sb2coZSkvTWF0aC5MTjIpLGUqKHU9TWF0aC5wb3coMiwtcykpPDEmJihzLS0sdSo9MiksKGUrPXMrZj49MT9oL3U6aCpNYXRoLnBvdygyLDEtZikpKnU+PTImJihzKyssdS89MikscytmPj1jPyhhPTAscz1jKTpzK2Y+PTE/KGE9KGUqdS0xKSpNYXRoLnBvdygyLGkpLHMrPWYpOihhPWUqTWF0aC5wb3coMixmLTEpKk1hdGgucG93KDIsaSkscz0wKSk7aT49ODt0W3IrcF09MjU1JmEscCs9ZCxhLz0yNTYsaS09OCk7Zm9yKHM9czw8aXxhLGwrPWk7bD4wO3RbcitwXT0yNTUmcyxwKz1kLHMvPTI1NixsLT04KTt0W3IrcC1kXXw9MTI4Knl9fSw3MTc6dD0+e1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5jcmVhdGU/dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZSYmKHQuc3VwZXJfPWUsdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSkpfTp0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZihlKXt0LnN1cGVyXz1lO3ZhciByPWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT1lLnByb3RvdHlwZSx0LnByb3RvdHlwZT1uZXcgcix0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10fX19LDU5NTpmdW5jdGlvbih0KXt0LmV4cG9ydHM9KCgpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHQ9ezI1NToodCxlKT0+e2UubD1jbGFzc3toZXhTbGljZSh0PTAsZSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbCh0aGlzLnNsaWNlKHQsZSksKHQ9PihcIjAwXCIrdC50b1N0cmluZygxNikpLnNsaWNlKC0yKSkpLmpvaW4oXCJcIil9fX0sNDg6KHQsZSxyKT0+e2NvbnN0IG49cig3NjUpLHtpbnRlcm5hbEJpbmRpbmc6aSxBcnJheTpvLEFycmF5SXNBcnJheTpzLEFycmF5UHJvdG90eXBlRmlsdGVyOmEsQXJyYXlQcm90b3R5cGVGb3JFYWNoOnUsQXJyYXlQcm90b3R5cGVQdXNoOmwsQXJyYXlQcm90b3R5cGVQdXNoQXBwbHk6YyxBcnJheVByb3RvdHlwZVNvcnQ6ZixBcnJheVByb3RvdHlwZVVuc2hpZnQ6aCxCaWdJbnRQcm90b3R5cGVWYWx1ZU9mOnAsQm9vbGVhblByb3RvdHlwZVZhbHVlT2Y6ZCxEYXRlUHJvdG90eXBlR2V0VGltZTp5LERhdGVQcm90b3R5cGVUb0lTT1N0cmluZzpnLERhdGVQcm90b3R5cGVUb1N0cmluZzpiLEVycm9yUHJvdG90eXBlVG9TdHJpbmc6bSxGdW5jdGlvblByb3RvdHlwZUNhbGw6dyxGdW5jdGlvblByb3RvdHlwZVRvU3RyaW5nOl8sSlNPTlN0cmluZ2lmeTpFLE1hcFByb3RvdHlwZUdldFNpemU6dixNYXBQcm90b3R5cGVFbnRyaWVzOlMsTWF0aEZsb29yOkEsTWF0aE1heDpULE1hdGhNaW46SSxNYXRoUm91bmQ6QixNYXRoU3FydDpPLE51bWJlcjp4LE51bWJlcklzTmFOOlIsTnVtYmVyUGFyc2VGbG9hdDpOLE51bWJlclBhcnNlSW50OkwsTnVtYmVyUHJvdG90eXBlVmFsdWVPZjpQLE9iamVjdDpNLE9iamVjdEFzc2lnbjpVLE9iamVjdENyZWF0ZTpqLE9iamVjdERlZmluZVByb3BlcnR5OmssT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiQsT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczpGLE9iamVjdEdldE93blByb3BlcnR5U3ltYm9sczpELE9iamVjdEdldFByb3RvdHlwZU9mOkMsT2JqZWN0SXM6RyxPYmplY3RLZXlzOlcsT2JqZWN0UHJvdG90eXBlSGFzT3duUHJvcGVydHk6eixPYmplY3RQcm90b3R5cGVQcm9wZXJ0eUlzRW51bWVyYWJsZTpILE9iamVjdFNlYWw6WSxPYmplY3RTZXRQcm90b3R5cGVPZjpxLFJlZmxlY3RPd25LZXlzOlYsUmVnRXhwOkssUmVnRXhwUHJvdG90eXBlVGVzdDpYLFJlZ0V4cFByb3RvdHlwZVRvU3RyaW5nOkosU2FmZVN0cmluZ0l0ZXJhdG9yOlosU2FmZU1hcDpRLFNhZmVTZXQ6dHQsU2V0UHJvdG90eXBlR2V0U2l6ZTpldCxTZXRQcm90b3R5cGVWYWx1ZXM6cnQsU3RyaW5nOm50LFN0cmluZ1Byb3RvdHlwZUNoYXJDb2RlQXQ6aXQsU3RyaW5nUHJvdG90eXBlQ29kZVBvaW50QXQ6b3QsU3RyaW5nUHJvdG90eXBlSW5jbHVkZXM6c3QsU3RyaW5nUHJvdG90eXBlTm9ybWFsaXplOmF0LFN0cmluZ1Byb3RvdHlwZVBhZEVuZDp1dCxTdHJpbmdQcm90b3R5cGVQYWRTdGFydDpsdCxTdHJpbmdQcm90b3R5cGVSZXBlYXQ6Y3QsU3RyaW5nUHJvdG90eXBlUmVwbGFjZTpmdCxTdHJpbmdQcm90b3R5cGVTbGljZTpodCxTdHJpbmdQcm90b3R5cGVTcGxpdDpwdCxTdHJpbmdQcm90b3R5cGVUb0xvd2VyQ2FzZTpkdCxTdHJpbmdQcm90b3R5cGVUcmltOnl0LFN0cmluZ1Byb3RvdHlwZVZhbHVlT2Y6Z3QsU3ltYm9sUHJvdG90eXBlVG9TdHJpbmc6YnQsU3ltYm9sUHJvdG90eXBlVmFsdWVPZjptdCxTeW1ib2xJdGVyYXRvcjp3dCxTeW1ib2xUb1N0cmluZ1RhZzpfdCxUeXBlZEFycmF5UHJvdG90eXBlR2V0TGVuZ3RoOkV0LFR5cGVkQXJyYXlQcm90b3R5cGVHZXRTeW1ib2xUb1N0cmluZ1RhZzp2dCxVaW50OEFycmF5OlN0LHVuY3VycnlUaGlzOkF0fT1uLHtnZXRPd25Ob25JbmRleFByb3BlcnRpZXM6VHQsZ2V0UHJvbWlzZURldGFpbHM6SXQsZ2V0UHJveHlEZXRhaWxzOkJ0LGtQZW5kaW5nOk90LGtSZWplY3RlZDp4dCxwcmV2aWV3RW50cmllczpSdCxnZXRDb25zdHJ1Y3Rvck5hbWU6TnQsZ2V0RXh0ZXJuYWxWYWx1ZTpMdCxwcm9wZXJ0eUZpbHRlcjp7QUxMX1BST1BFUlRJRVM6UHQsT05MWV9FTlVNRVJBQkxFOk10fSxQcm94eTpVdH09cig4OTEpLHtjdXN0b21JbnNwZWN0U3ltYm9sOmp0LGlzRXJyb3I6a3Qsam9pbjokdCxyZW1vdmVDb2xvcnM6RnR9PXIoMzM1KSx7Y29kZXM6e0VSUl9JTlZBTElEX0FSR19UWVBFOkR0fSxpc1N0YWNrT3ZlcmZsb3dFcnJvcjpDdH09cigxMDEpLHtpc0FzeW5jRnVuY3Rpb246R3QsaXNHZW5lcmF0b3JGdW5jdGlvbjpXdCxpc0FueUFycmF5QnVmZmVyOnp0LGlzQXJyYXlCdWZmZXI6SHQsaXNBcmd1bWVudHNPYmplY3Q6WXQsaXNCb3hlZFByaW1pdGl2ZTpxdCxpc0RhdGFWaWV3OlZ0LGlzRXh0ZXJuYWw6S3QsaXNNYXA6WHQsaXNNYXBJdGVyYXRvcjpKdCxpc01vZHVsZU5hbWVzcGFjZU9iamVjdDpadCxpc05hdGl2ZUVycm9yOlF0LGlzUHJvbWlzZTp0ZSxpc1NldDplZSxpc1NldEl0ZXJhdG9yOnJlLGlzV2Vha01hcDpuZSxpc1dlYWtTZXQ6aWUsaXNSZWdFeHA6b2UsaXNEYXRlOnNlLGlzVHlwZWRBcnJheTphZSxpc1N0cmluZ09iamVjdDp1ZSxpc051bWJlck9iamVjdDpsZSxpc0Jvb2xlYW5PYmplY3Q6Y2UsaXNCaWdJbnRPYmplY3Q6ZmV9PXIoNjMpLGhlPXIoMTgzKSx7TmF0aXZlTW9kdWxlOnBlfT1yKDk5Mikse3ZhbGlkYXRlT2JqZWN0OmRlfT1yKDM1Nik7bGV0IHllO2NvbnN0IGdlPW5ldyB0dChhKEYoci5nKSwodD0+WCgvXltBLVpdW2EtekEtWjAtOV0rJC8sdCkpKSksYmU9dD0+dm9pZCAwPT09dCYmdm9pZCAwIT09dCxtZT1ZKHtzaG93SGlkZGVuOiExLGRlcHRoOjIsY29sb3JzOiExLGN1c3RvbUluc3BlY3Q6ITAsc2hvd1Byb3h5OiExLG1heEFycmF5TGVuZ3RoOjEwMCxtYXhTdHJpbmdMZW5ndGg6MWU0LGJyZWFrTGVuZ3RoOjgwLGNvbXBhY3Q6Myxzb3J0ZWQ6ITEsZ2V0dGVyczohMX0pLHdlPS9bXFx4MDAtXFx4MWZcXHgyN1xceDVjXFx4N2YtXFx4OWZdLyxfZT0vW1xceDAwLVxceDFmXFx4MjdcXHg1Y1xceDdmLVxceDlmXS9nLEVlPS9bXFx4MDAtXFx4MWZcXHg1Y1xceDdmLVxceDlmXS8sdmU9L1tcXHgwMC1cXHgxZlxceDVjXFx4N2YtXFx4OWZdL2csU2U9L15bYS16QS1aX11bYS16QS1aXzAtOV0qJC8sQWU9L14oMHxbMS05XVswLTldKikkLyxUZT0vXiAgICBhdCAoPzpbXi9cXFxcKF0rIFxcKHwpbm9kZTooLispOlxcZCs6XFxkK1xcKT8kLyxJZT0vXiAgICBhdCAoPzpbXi9cXFxcKF0rIFxcKHwpKC4rKVxcLmpzOlxcZCs6XFxkK1xcKT8kLyxCZT0vWy9cXFxcXW5vZGVfbW9kdWxlc1svXFxcXF0oLis/KSg/PVsvXFxcXF0pL2csT2U9L14oXFxzK1teKF0qPylcXHMqey8seGU9LyhcXC9cXC8uKj9cXG4pfChcXC9cXCooLnxcXG4pKj9cXCpcXC8pL2csUmU9W1wiXFxcXHgwMFwiLFwiXFxcXHgwMVwiLFwiXFxcXHgwMlwiLFwiXFxcXHgwM1wiLFwiXFxcXHgwNFwiLFwiXFxcXHgwNVwiLFwiXFxcXHgwNlwiLFwiXFxcXHgwN1wiLFwiXFxcXGJcIixcIlxcXFx0XCIsXCJcXFxcblwiLFwiXFxcXHgwQlwiLFwiXFxcXGZcIixcIlxcXFxyXCIsXCJcXFxceDBFXCIsXCJcXFxceDBGXCIsXCJcXFxceDEwXCIsXCJcXFxceDExXCIsXCJcXFxceDEyXCIsXCJcXFxceDEzXCIsXCJcXFxceDE0XCIsXCJcXFxceDE1XCIsXCJcXFxceDE2XCIsXCJcXFxceDE3XCIsXCJcXFxceDE4XCIsXCJcXFxceDE5XCIsXCJcXFxceDFBXCIsXCJcXFxceDFCXCIsXCJcXFxceDFDXCIsXCJcXFxceDFEXCIsXCJcXFxceDFFXCIsXCJcXFxceDFGXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlxcXFwnXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlxcXFxcXFxcXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlxcXFx4N0ZcIixcIlxcXFx4ODBcIixcIlxcXFx4ODFcIixcIlxcXFx4ODJcIixcIlxcXFx4ODNcIixcIlxcXFx4ODRcIixcIlxcXFx4ODVcIixcIlxcXFx4ODZcIixcIlxcXFx4ODdcIixcIlxcXFx4ODhcIixcIlxcXFx4ODlcIixcIlxcXFx4OEFcIixcIlxcXFx4OEJcIixcIlxcXFx4OENcIixcIlxcXFx4OERcIixcIlxcXFx4OEVcIixcIlxcXFx4OEZcIixcIlxcXFx4OTBcIixcIlxcXFx4OTFcIixcIlxcXFx4OTJcIixcIlxcXFx4OTNcIixcIlxcXFx4OTRcIixcIlxcXFx4OTVcIixcIlxcXFx4OTZcIixcIlxcXFx4OTdcIixcIlxcXFx4OThcIixcIlxcXFx4OTlcIixcIlxcXFx4OUFcIixcIlxcXFx4OUJcIixcIlxcXFx4OUNcIixcIlxcXFx4OURcIixcIlxcXFx4OUVcIixcIlxcXFx4OUZcIl0sTmU9bmV3IEsoXCJbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86W2EtekEtWlxcXFxkXSooPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10qKSopP1xcXFx1MDAwNyl8KD86KD86XFxcXGR7MSw0fSg/OjtcXFxcZHswLDR9KSopP1tcXFxcZEEtUFItVFpjZi1udHFyeT0+PH5dKSlcIixcImdcIik7bGV0IExlO2Z1bmN0aW9uIFBlKHQsZSl7Y29uc3Qgcj17YnVkZ2V0Ont9LGluZGVudGF0aW9uTHZsOjAsc2VlbjpbXSxjdXJyZW50RGVwdGg6MCxzdHlsaXplOkNlLHNob3dIaWRkZW46bWUuc2hvd0hpZGRlbixkZXB0aDptZS5kZXB0aCxjb2xvcnM6bWUuY29sb3JzLGN1c3RvbUluc3BlY3Q6bWUuY3VzdG9tSW5zcGVjdCxzaG93UHJveHk6bWUuc2hvd1Byb3h5LG1heEFycmF5TGVuZ3RoOm1lLm1heEFycmF5TGVuZ3RoLG1heFN0cmluZ0xlbmd0aDptZS5tYXhTdHJpbmdMZW5ndGgsYnJlYWtMZW5ndGg6bWUuYnJlYWtMZW5ndGgsY29tcGFjdDptZS5jb21wYWN0LHNvcnRlZDptZS5zb3J0ZWQsZ2V0dGVyczptZS5nZXR0ZXJzfTtpZihhcmd1bWVudHMubGVuZ3RoPjEpaWYoYXJndW1lbnRzLmxlbmd0aD4yJiYodm9pZCAwIT09YXJndW1lbnRzWzJdJiYoci5kZXB0aD1hcmd1bWVudHNbMl0pLGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiYoci5jb2xvcnM9YXJndW1lbnRzWzNdKSksXCJib29sZWFuXCI9PXR5cGVvZiBlKXIuc2hvd0hpZGRlbj1lO2Vsc2UgaWYoZSl7Y29uc3QgdD1XKGUpO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7KytuKXtjb25zdCBpPXRbbl07eihtZSxpKXx8XCJzdHlsaXplXCI9PT1pP3JbaV09ZVtpXTp2b2lkIDA9PT1yLnVzZXJPcHRpb25zJiYoci51c2VyT3B0aW9ucz1lKX19cmV0dXJuIHIuY29sb3JzJiYoci5zdHlsaXplPURlKSxudWxsPT09ci5tYXhBcnJheUxlbmd0aCYmKHIubWF4QXJyYXlMZW5ndGg9MS8wKSxudWxsPT09ci5tYXhTdHJpbmdMZW5ndGgmJihyLm1heFN0cmluZ0xlbmd0aD0xLzApLEtlKHIsdCwwKX1QZS5jdXN0b209anQsayhQZSxcImRlZmF1bHRPcHRpb25zXCIse2dldDooKT0+bWUsc2V0OnQ9PihkZSh0LFwib3B0aW9uc1wiKSxVKG1lLHQpKX0pO2NvbnN0IE1lPTM5LFVlPTQ5O2Z1bmN0aW9uIGplKHQsZSl7ayhQZS5jb2xvcnMsZSx7Z2V0KCl7cmV0dXJuIHRoaXNbdF19LHNldChlKXt0aGlzW3RdPWV9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExfSl9ZnVuY3Rpb24ga2UodCxlKXtyZXR1cm4tMT09PWU/YFwiJHt0fVwiYDotMj09PWU/YFxcYCR7dH1cXGBgOmAnJHt0fSdgfVBlLmNvbG9ycz1VKGoobnVsbCkse3Jlc2V0OlswLDBdLGJvbGQ6WzEsMjJdLGRpbTpbMiwyMl0saXRhbGljOlszLDIzXSx1bmRlcmxpbmU6WzQsMjRdLGJsaW5rOls1LDI1XSxpbnZlcnNlOls3LDI3XSxoaWRkZW46WzgsMjhdLHN0cmlrZXRocm91Z2g6WzksMjldLGRvdWJsZXVuZGVybGluZTpbMjEsMjRdLGJsYWNrOlszMCxNZV0scmVkOlszMSxNZV0sZ3JlZW46WzMyLE1lXSx5ZWxsb3c6WzMzLE1lXSxibHVlOlszNCxNZV0sbWFnZW50YTpbMzUsTWVdLGN5YW46WzM2LE1lXSx3aGl0ZTpbMzcsTWVdLGJnQmxhY2s6WzQwLFVlXSxiZ1JlZDpbNDEsVWVdLGJnR3JlZW46WzQyLFVlXSxiZ1llbGxvdzpbNDMsVWVdLGJnQmx1ZTpbNDQsVWVdLGJnTWFnZW50YTpbNDUsVWVdLGJnQ3lhbjpbNDYsVWVdLGJnV2hpdGU6WzQ3LFVlXSxmcmFtZWQ6WzUxLDU0XSxvdmVybGluZWQ6WzUzLDU1XSxncmF5Ols5MCxNZV0scmVkQnJpZ2h0Ols5MSxNZV0sZ3JlZW5CcmlnaHQ6WzkyLE1lXSx5ZWxsb3dCcmlnaHQ6WzkzLE1lXSxibHVlQnJpZ2h0Ols5NCxNZV0sbWFnZW50YUJyaWdodDpbOTUsTWVdLGN5YW5CcmlnaHQ6Wzk2LE1lXSx3aGl0ZUJyaWdodDpbOTcsTWVdLGJnR3JheTpbMTAwLFVlXSxiZ1JlZEJyaWdodDpbMTAxLFVlXSxiZ0dyZWVuQnJpZ2h0OlsxMDIsVWVdLGJnWWVsbG93QnJpZ2h0OlsxMDMsVWVdLGJnQmx1ZUJyaWdodDpbMTA0LFVlXSxiZ01hZ2VudGFCcmlnaHQ6WzEwNSxVZV0sYmdDeWFuQnJpZ2h0OlsxMDYsVWVdLGJnV2hpdGVCcmlnaHQ6WzEwNyxVZV19KSxqZShcImdyYXlcIixcImdyZXlcIiksamUoXCJncmF5XCIsXCJibGFja0JyaWdodFwiKSxqZShcImJnR3JheVwiLFwiYmdHcmV5XCIpLGplKFwiYmdHcmF5XCIsXCJiZ0JsYWNrQnJpZ2h0XCIpLGplKFwiZGltXCIsXCJmYWludFwiKSxqZShcInN0cmlrZXRocm91Z2hcIixcImNyb3NzZWRvdXRcIiksamUoXCJzdHJpa2V0aHJvdWdoXCIsXCJzdHJpa2VUaHJvdWdoXCIpLGplKFwic3RyaWtldGhyb3VnaFwiLFwiY3Jvc3NlZE91dFwiKSxqZShcImhpZGRlblwiLFwiY29uY2VhbFwiKSxqZShcImludmVyc2VcIixcInN3YXBDb2xvcnNcIiksamUoXCJpbnZlcnNlXCIsXCJzd2FwY29sb3JzXCIpLGplKFwiZG91YmxldW5kZXJsaW5lXCIsXCJkb3VibGVVbmRlcmxpbmVcIiksUGUuc3R5bGVzPVUoaihudWxsKSx7c3BlY2lhbDpcImN5YW5cIixudW1iZXI6XCJ5ZWxsb3dcIixiaWdpbnQ6XCJ5ZWxsb3dcIixib29sZWFuOlwieWVsbG93XCIsdW5kZWZpbmVkOlwiZ3JleVwiLG51bGw6XCJib2xkXCIsc3RyaW5nOlwiZ3JlZW5cIixzeW1ib2w6XCJncmVlblwiLGRhdGU6XCJtYWdlbnRhXCIscmVnZXhwOlwicmVkXCIsbW9kdWxlOlwidW5kZXJsaW5lXCJ9KTtjb25zdCAkZT10PT5SZVtpdCh0KV07ZnVuY3Rpb24gRmUodCl7bGV0IGU9d2Uscj1fZSxuPTM5O2lmKHN0KHQsXCInXCIpJiYoc3QodCwnXCInKT9zdCh0LFwiYFwiKXx8c3QodCxcIiR7XCIpfHwobj0tMik6bj0tMSwzOSE9PW4mJihlPUVlLHI9dmUpKSx0Lmxlbmd0aDw1ZTMmJiFYKGUsdCkpcmV0dXJuIGtlKHQsbik7aWYodC5sZW5ndGg+MTAwKXJldHVybiBrZSh0PWZ0KHQsciwkZSksbik7bGV0IGk9XCJcIixvPTA7Y29uc3Qgcz10Lmxlbmd0aDtmb3IobGV0IGU9MDtlPHM7ZSsrKXtjb25zdCByPWl0KHQsZSk7KHI9PT1ufHw5Mj09PXJ8fHI8MzJ8fHI+MTI2JiZyPDE2MCkmJihpKz1vPT09ZT9SZVtyXTpgJHtodCh0LG8sZSl9JHtSZVtyXX1gLG89ZSsxKX1yZXR1cm4gbyE9PXMmJihpKz1odCh0LG8pKSxrZShpLG4pfWZ1bmN0aW9uIERlKHQsZSl7Y29uc3Qgcj1QZS5zdHlsZXNbZV07aWYodm9pZCAwIT09cil7Y29uc3QgZT1QZS5jb2xvcnNbcl07aWYodm9pZCAwIT09ZSlyZXR1cm5gXHUwMDFiWyR7ZVswXX1tJHt0fVx1MDAxYlske2VbMV19bWB9cmV0dXJuIHR9ZnVuY3Rpb24gQ2UodCl7cmV0dXJuIHR9ZnVuY3Rpb24gR2UoKXtyZXR1cm5bXX1mdW5jdGlvbiBXZSh0LGUpe3RyeXtyZXR1cm4gdCBpbnN0YW5jZW9mIGV9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIHplKHQsZSxyLG4pe2xldCBpO2NvbnN0IG89dDtmb3IoO3R8fGJlKHQpOyl7Y29uc3Qgcz0kKHQsXCJjb25zdHJ1Y3RvclwiKTtpZih2b2lkIDAhPT1zJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBzLnZhbHVlJiZcIlwiIT09cy52YWx1ZS5uYW1lJiZXZShvLHMudmFsdWUpKXJldHVybiB2b2lkIDA9PT1ufHxpPT09dCYmZ2UuaGFzKHMudmFsdWUubmFtZSl8fEhlKGUsbyxpfHxvLHIsbikscy52YWx1ZS5uYW1lO3Q9Qyh0KSx2b2lkIDA9PT1pJiYoaT10KX1pZihudWxsPT09aSlyZXR1cm4gbnVsbDtjb25zdCBzPU50KG8pO2lmKHI+ZS5kZXB0aCYmbnVsbCE9PWUuZGVwdGgpcmV0dXJuYCR7c30gPENvbXBsZXggcHJvdG90eXBlPmA7Y29uc3QgYT16ZShpLGUscisxLG4pO3JldHVybiBudWxsPT09YT9gJHtzfSA8JHtQZShpLHsuLi5lLGN1c3RvbUluc3BlY3Q6ITEsZGVwdGg6LTF9KX0+YDpgJHtzfSA8JHthfT5gfWZ1bmN0aW9uIEhlKHQsZSxyLG4saSl7bGV0IG8scyxhPTA7ZG97aWYoMCE9PWF8fGU9PT1yKXtpZihudWxsPT09KHI9QyhyKSkpcmV0dXJuO2NvbnN0IHQ9JChyLFwiY29uc3RydWN0b3JcIik7aWYodm9pZCAwIT09dCYmXCJmdW5jdGlvblwiPT10eXBlb2YgdC52YWx1ZSYmZ2UuaGFzKHQudmFsdWUubmFtZSkpcmV0dXJufTA9PT1hP3M9bmV3IHR0OnUobywodD0+cy5hZGQodCkpKSxvPVYocik7Zm9yKGNvbnN0IHUgb2Ygbyl7aWYoXCJjb25zdHJ1Y3RvclwiPT09dXx8eihlLHUpfHwwIT09YSYmcy5oYXModSkpY29udGludWU7Y29uc3Qgbz0kKHIsdSk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygby52YWx1ZSljb250aW51ZTtjb25zdCBjPWRyKHQscixuLHUsMCxvLGUpO3QuY29sb3JzP2woaSxgXHUwMDFiWzJtJHtjfVx1MDAxYlsyMm1gKTpsKGksYyl9fXdoaWxlKDMhPSsrYSl9ZnVuY3Rpb24gWWUodCxlLHIsbj1cIlwiKXtyZXR1cm4gbnVsbD09PXQ/XCJcIiE9PWUmJnIhPT1lP2BbJHtyfSR7bn06IG51bGwgcHJvdG90eXBlXSBbJHtlfV0gYDpgWyR7cn0ke259OiBudWxsIHByb3RvdHlwZV0gYDpcIlwiIT09ZSYmdCE9PWU/YCR7dH0ke259IFske2V9XSBgOmAke3R9JHtufSBgfWZ1bmN0aW9uIHFlKHQsZSl7bGV0IHI7Y29uc3Qgbj1EKHQpO2lmKGUpcj1GKHQpLDAhPT1uLmxlbmd0aCYmYyhyLG4pO2Vsc2V7dHJ5e3I9Vyh0KX1jYXRjaChlKXtoZShRdChlKSYmXCJSZWZlcmVuY2VFcnJvclwiPT09ZS5uYW1lJiZadCh0KSkscj1GKHQpfTAhPT1uLmxlbmd0aCYmYyhyLGEobiwoZT0+SCh0LGUpKSkpfXJldHVybiByfWZ1bmN0aW9uIFZlKHQsZSxyKXtsZXQgbj1cIlwiO3JldHVybiBudWxsPT09ZSYmKG49TnQodCksbj09PXImJihuPVwiT2JqZWN0XCIpKSxZZShlLHIsbil9ZnVuY3Rpb24gS2UodCxlLHIsaSl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJiFiZShlKSlyZXR1cm4gUWUodC5zdHlsaXplLGUsdCk7aWYobnVsbD09PWUpcmV0dXJuIHQuc3R5bGl6ZShcIm51bGxcIixcIm51bGxcIik7Y29uc3Qgbz1lLGE9QnQoZSwhIXQuc2hvd1Byb3h5KTtpZih2b2lkIDAhPT1hKXtpZih0LnNob3dQcm94eSlyZXR1cm4gZnVuY3Rpb24odCxlLHIpe2lmKHI+dC5kZXB0aCYmbnVsbCE9PXQuZGVwdGgpcmV0dXJuIHQuc3R5bGl6ZShcIlByb3h5IFtBcnJheV1cIixcInNwZWNpYWxcIik7cis9MSx0LmluZGVudGF0aW9uTHZsKz0yO2NvbnN0IG49W0tlKHQsZVswXSxyKSxLZSh0LGVbMV0scildO3JldHVybiB0LmluZGVudGF0aW9uTHZsLT0yLGdyKHQsbixcIlwiLFtcIlByb3h5IFtcIixcIl1cIl0sMixyKX0odCxhLHIpO2U9YX1pZih0LmN1c3RvbUluc3BlY3Qpe2NvbnN0IG49ZVtqdF07aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgbiYmbiE9PVBlJiYoIWUuY29uc3RydWN0b3J8fGUuY29uc3RydWN0b3IucHJvdG90eXBlIT09ZSkpe2NvbnN0IGU9bnVsbD09PXQuZGVwdGg/bnVsbDp0LmRlcHRoLXIsaT13KG4sbyxlLGZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj17c3R5bGl6ZTp0LnN0eWxpemUsc2hvd0hpZGRlbjp0LnNob3dIaWRkZW4sZGVwdGg6dC5kZXB0aCxjb2xvcnM6dC5jb2xvcnMsY3VzdG9tSW5zcGVjdDp0LmN1c3RvbUluc3BlY3Qsc2hvd1Byb3h5OnQuc2hvd1Byb3h5LG1heEFycmF5TGVuZ3RoOnQubWF4QXJyYXlMZW5ndGgsbWF4U3RyaW5nTGVuZ3RoOnQubWF4U3RyaW5nTGVuZ3RoLGJyZWFrTGVuZ3RoOnQuYnJlYWtMZW5ndGgsY29tcGFjdDp0LmNvbXBhY3Qsc29ydGVkOnQuc29ydGVkLGdldHRlcnM6dC5nZXR0ZXJzLC4uLnQudXNlck9wdGlvbnN9O2lmKGUpe3EocixudWxsKTtmb3IoY29uc3QgdCBvZiBXKHIpKVwib2JqZWN0XCIhPXR5cGVvZiByW3RdJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiByW3RdfHxudWxsPT09clt0XXx8ZGVsZXRlIHJbdF07ci5zdHlsaXplPXEoKChlLHIpPT57bGV0IG47dHJ5e249YCR7dC5zdHlsaXplKGUscil9YH1jYXRjaHt9cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIG4/ZTpufSksbnVsbCl9cmV0dXJuIHJ9KHQsdm9pZCAwIT09YXx8IShvIGluc3RhbmNlb2YgTSkpKTtpZihpIT09bylyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgaT9LZSh0LGkscik6aS5yZXBsYWNlKC9cXG4vZyxgXFxuJHtcIiBcIi5yZXBlYXQodC5pbmRlbnRhdGlvbkx2bCl9YCl9fWlmKHQuc2Vlbi5pbmNsdWRlcyhlKSl7bGV0IHI9MTtyZXR1cm4gdm9pZCAwPT09dC5jaXJjdWxhcj8odC5jaXJjdWxhcj1uZXcgUSx0LmNpcmN1bGFyLnNldChlLHIpKToocj10LmNpcmN1bGFyLmdldChlKSx2b2lkIDA9PT1yJiYocj10LmNpcmN1bGFyLnNpemUrMSx0LmNpcmN1bGFyLnNldChlLHIpKSksdC5zdHlsaXplKGBbQ2lyY3VsYXIgKiR7cn1dYCxcInNwZWNpYWxcIil9cmV0dXJuIGZ1bmN0aW9uKHQsZSxyLGkpe2xldCBvLGE7dC5zaG93SGlkZGVuJiYocjw9dC5kZXB0aHx8bnVsbD09PXQuZGVwdGgpJiYoYT1bXSk7Y29uc3QgdT16ZShlLHQscixhKTt2b2lkIDAhPT1hJiYwPT09YS5sZW5ndGgmJihhPXZvaWQgMCk7bGV0IGw9ZVtfdF07KFwic3RyaW5nXCIhPXR5cGVvZiBsfHxcIlwiIT09bCYmKHQuc2hvd0hpZGRlbj96OkgpKGUsX3QpKSYmKGw9XCJcIik7bGV0IGMsZj1cIlwiLHc9R2UsRT0hMCxBPTA7Y29uc3QgVD10LnNob3dIaWRkZW4/UHQ6TXQ7bGV0IEksQj0wO2lmKGVbd3RdfHxudWxsPT09dSlpZihFPSExLHMoZSkpe2NvbnN0IHQ9XCJBcnJheVwiIT09dXx8XCJcIiE9PWw/WWUodSxsLFwiQXJyYXlcIixgKCR7ZS5sZW5ndGh9KWApOlwiXCI7aWYobz1UdChlLFQpLGM9W2Ake3R9W2AsXCJdXCJdLDA9PT1lLmxlbmd0aCYmMD09PW8ubGVuZ3RoJiZ2b2lkIDA9PT1hKXJldHVybmAke2NbMF19XWA7Qj0yLHc9bnJ9ZWxzZSBpZihlZShlKSl7Y29uc3Qgcj1ldChlKSxuPVllKHUsbCxcIlNldFwiLGAoJHtyfSlgKTtpZihvPXFlKGUsdC5zaG93SGlkZGVuKSx3PW51bGwhPT11P29yLmJpbmQobnVsbCxlKTpvci5iaW5kKG51bGwscnQoZSkpLDA9PT1yJiYwPT09by5sZW5ndGgmJnZvaWQgMD09PWEpcmV0dXJuYCR7bn17fWA7Yz1bYCR7bn17YCxcIn1cIl19ZWxzZSBpZihYdChlKSl7Y29uc3Qgcj12KGUpLG49WWUodSxsLFwiTWFwXCIsYCgke3J9KWApO2lmKG89cWUoZSx0LnNob3dIaWRkZW4pLHc9bnVsbCE9PXU/c3IuYmluZChudWxsLGUpOnNyLmJpbmQobnVsbCxTKGUpKSwwPT09ciYmMD09PW8ubGVuZ3RoJiZ2b2lkIDA9PT1hKXJldHVybmAke259e31gO2M9W2Ake259e2AsXCJ9XCJdfWVsc2UgaWYoYWUoZSkpe289VHQoZSxUKTtsZXQgcj1lLGk9XCJcIjtudWxsPT09dSYmKGk9dnQoZSkscj1uZXcgbltpXShlKSk7Y29uc3Qgcz1FdChlKTtpZihjPVtgJHtZZSh1LGwsaSxgKCR7c30pYCl9W2AsXCJdXCJdLDA9PT1lLmxlbmd0aCYmMD09PW8ubGVuZ3RoJiYhdC5zaG93SGlkZGVuKXJldHVybmAke2NbMF19XWA7dz1pci5iaW5kKG51bGwscixzKSxCPTJ9ZWxzZSBKdChlKT8obz1xZShlLHQuc2hvd0hpZGRlbiksYz1YZShcIk1hcFwiLGwpLHc9aHIuYmluZChudWxsLGMpKTpyZShlKT8obz1xZShlLHQuc2hvd0hpZGRlbiksYz1YZShcIlNldFwiLGwpLHc9aHIuYmluZChudWxsLGMpKTpFPSEwO2lmKEUpaWYobz1xZShlLHQuc2hvd0hpZGRlbiksYz1bXCJ7XCIsXCJ9XCJdLFwiT2JqZWN0XCI9PT11KXtpZihZdChlKT9jWzBdPVwiW0FyZ3VtZW50c10ge1wiOlwiXCIhPT1sJiYoY1swXT1gJHtZZSh1LGwsXCJPYmplY3RcIil9e2ApLDA9PT1vLmxlbmd0aCYmdm9pZCAwPT09YSlyZXR1cm5gJHtjWzBdfX1gfWVsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSl7aWYoZj1mdW5jdGlvbih0LGUscil7Y29uc3Qgbj1fKHQpO2lmKFwiY2xhc3NcIj09PW4uc2xpY2UoMCw1KSYmbi5lbmRzV2l0aChcIn1cIikpe2NvbnN0IGk9bi5zbGljZSg1LC0xKSxvPWkuaW5kZXhPZihcIntcIik7aWYoLTEhPT1vJiYoIWkuc2xpY2UoMCxvKS5pbmNsdWRlcyhcIihcIil8fE9lLnRlc3QoaS5yZXBsYWNlKHhlKSkpKXJldHVybiBmdW5jdGlvbih0LGUscil7bGV0IG49YGNsYXNzICR7eih0LFwibmFtZVwiKSYmdC5uYW1lfHxcIihhbm9ueW1vdXMpXCJ9YDtpZihcIkZ1bmN0aW9uXCIhPT1lJiZudWxsIT09ZSYmKG4rPWAgWyR7ZX1dYCksXCJcIiE9PXImJmUhPT1yJiYobis9YCBbJHtyfV1gKSxudWxsIT09ZSl7Y29uc3QgZT1DKHQpLm5hbWU7ZSYmKG4rPWAgZXh0ZW5kcyAke2V9YCl9ZWxzZSBuKz1cIiBleHRlbmRzIFtudWxsIHByb3RvdHlwZV1cIjtyZXR1cm5gWyR7bn1dYH0odCxlLHIpfWxldCBpPVwiRnVuY3Rpb25cIjtXdCh0KSYmKGk9YEdlbmVyYXRvciR7aX1gKSxHdCh0KSYmKGk9YEFzeW5jJHtpfWApO2xldCBvPWBbJHtpfWA7cmV0dXJuIG51bGw9PT1lJiYobys9XCIgKG51bGwgcHJvdG90eXBlKVwiKSxcIlwiPT09dC5uYW1lP28rPVwiIChhbm9ueW1vdXMpXCI6bys9YDogJHt0Lm5hbWV9YCxvKz1cIl1cIixlIT09aSYmbnVsbCE9PWUmJihvKz1gICR7ZX1gKSxcIlwiIT09ciYmZSE9PXImJihvKz1gIFske3J9XWApLG99KGUsdSxsKSwwPT09by5sZW5ndGgmJnZvaWQgMD09PWEpcmV0dXJuIHQuc3R5bGl6ZShmLFwic3BlY2lhbFwiKX1lbHNlIGlmKG9lKGUpKXtmPUoobnVsbCE9PXU/ZTpuZXcgSyhlKSk7Y29uc3Qgbj1ZZSh1LGwsXCJSZWdFeHBcIik7aWYoXCJSZWdFeHAgXCIhPT1uJiYoZj1gJHtufSR7Zn1gKSwwPT09by5sZW5ndGgmJnZvaWQgMD09PWF8fHI+dC5kZXB0aCYmbnVsbCE9PXQuZGVwdGgpcmV0dXJuIHQuc3R5bGl6ZShmLFwicmVnZXhwXCIpfWVsc2UgaWYoc2UoZSkpe2Y9Uih5KGUpKT9iKGUpOmcoZSk7Y29uc3Qgcj1ZZSh1LGwsXCJEYXRlXCIpO2lmKFwiRGF0ZSBcIiE9PXImJihmPWAke3J9JHtmfWApLDA9PT1vLmxlbmd0aCYmdm9pZCAwPT09YSlyZXR1cm4gdC5zdHlsaXplKGYsXCJkYXRlXCIpfWVsc2UgaWYoa3QoZSkpe2lmKGY9ZnVuY3Rpb24odCxlLHIsbixpKXtjb25zdCBvPW51bGwhPXQubmFtZT9udCh0Lm5hbWUpOlwiRXJyb3JcIjtsZXQgcz1vLmxlbmd0aCxhPXQuc3RhY2s/bnQodC5zdGFjayk6bSh0KTtpZighbi5zaG93SGlkZGVuJiYwIT09aS5sZW5ndGgpZm9yKGNvbnN0IGUgb2ZbXCJuYW1lXCIsXCJtZXNzYWdlXCIsXCJzdGFja1wiXSl7Y29uc3Qgcj1pLmluZGV4T2YoZSk7LTEhPT1yJiZhLmluY2x1ZGVzKHRbZV0pJiZpLnNwbGljZShyLDEpfWlmKG51bGw9PT1lfHxvLmVuZHNXaXRoKFwiRXJyb3JcIikmJmEuc3RhcnRzV2l0aChvKSYmKGEubGVuZ3RoPT09c3x8XCI6XCI9PT1hW3NdfHxcIlxcblwiPT09YVtzXSkpe2xldCB0PVwiRXJyb3JcIjtpZihudWxsPT09ZSl7Y29uc3QgZT1hLm1hdGNoKC9eKFtBLVpdW2Etel8gQS1aMC05W1xcXSgpLV0rKSg/Ojp8XFxuIHs0fWF0KS8pfHxhLm1hdGNoKC9eKFthLXpfQS1aMC05LV0qRXJyb3IpJC8pO3Q9ZSYmZVsxXXx8XCJcIixzPXQubGVuZ3RoLHQ9dHx8XCJFcnJvclwifWNvbnN0IG49WWUoZSxyLHQpLnNsaWNlKDAsLTEpO28hPT1uJiYoYT1uLmluY2x1ZGVzKG8pPzA9PT1zP2Ake259OiAke2F9YDpgJHtufSR7YS5zbGljZShzKX1gOmAke259IFske299XSR7YS5zbGljZShzKX1gKX1sZXQgdT10Lm1lc3NhZ2UmJmEuaW5kZXhPZih0Lm1lc3NhZ2UpfHwtMTstMSE9PXUmJih1Kz10Lm1lc3NhZ2UubGVuZ3RoKTtjb25zdCBsPWEuaW5kZXhPZihcIlxcbiAgICBhdFwiLHUpO2lmKC0xPT09bClhPWBbJHthfV1gO2Vsc2UgaWYobi5jb2xvcnMpe2xldCB0PWEuc2xpY2UoMCxsKTtjb25zdCBlPWEuc2xpY2UobCsxKS5zcGxpdChcIlxcblwiKTtmb3IoY29uc3QgciBvZiBlKXtjb25zdCBlPXIubWF0Y2goVGUpfHxyLm1hdGNoKEllKTtpZihudWxsIT09ZSYmcGUuZXhpc3RzKGVbMV0pKXQrPWBcXG4ke24uc3R5bGl6ZShyLFwidW5kZWZpbmVkXCIpfWA7ZWxzZXtsZXQgZTt0Kz1cIlxcblwiO2xldCBpPTA7Zm9yKDtlPUJlLmV4ZWMocik7KXQrPXIuc2xpY2UoaSxlLmluZGV4KzE0KSx0Kz1uLnN0eWxpemUoZVsxXSxcIm1vZHVsZVwiKSxpPWUuaW5kZXgrZVswXS5sZW5ndGg7dCs9MD09PWk/cjpyLnNsaWNlKGkpfX1hPXR9aWYoMCE9PW4uaW5kZW50YXRpb25Mdmwpe2NvbnN0IHQ9XCIgXCIucmVwZWF0KG4uaW5kZW50YXRpb25MdmwpO2E9YS5yZXBsYWNlKC9cXG4vZyxgXFxuJHt0fWApfXJldHVybiBhfShlLHUsbCx0LG8pLDA9PT1vLmxlbmd0aCYmdm9pZCAwPT09YSlyZXR1cm4gZn1lbHNlIGlmKHp0KGUpKXtjb25zdCByPVllKHUsbCxIdChlKT9cIkFycmF5QnVmZmVyXCI6XCJTaGFyZWRBcnJheUJ1ZmZlclwiKTtpZih2b2lkIDA9PT1pKXc9cnI7ZWxzZSBpZigwPT09by5sZW5ndGgmJnZvaWQgMD09PWEpcmV0dXJuIHIrYHsgYnl0ZUxlbmd0aDogJHtKZSh0LnN0eWxpemUsZS5ieXRlTGVuZ3RoKX0gfWA7Y1swXT1gJHtyfXtgLGgobyxcImJ5dGVMZW5ndGhcIil9ZWxzZSBpZihWdChlKSljWzBdPWAke1llKHUsbCxcIkRhdGFWaWV3XCIpfXtgLGgobyxcImJ5dGVMZW5ndGhcIixcImJ5dGVPZmZzZXRcIixcImJ1ZmZlclwiKTtlbHNlIGlmKHRlKGUpKWNbMF09YCR7WWUodSxsLFwiUHJvbWlzZVwiKX17YCx3PXByO2Vsc2UgaWYoaWUoZSkpY1swXT1gJHtZZSh1LGwsXCJXZWFrU2V0XCIpfXtgLHc9dC5zaG93SGlkZGVuP2NyOmxyO2Vsc2UgaWYobmUoZSkpY1swXT1gJHtZZSh1LGwsXCJXZWFrTWFwXCIpfXtgLHc9dC5zaG93SGlkZGVuP2ZyOmxyO2Vsc2UgaWYoWnQoZSkpY1swXT1gJHtZZSh1LGwsXCJNb2R1bGVcIil9e2Asdz10ci5iaW5kKG51bGwsbyk7ZWxzZSBpZihxdChlKSl7aWYoZj1mdW5jdGlvbih0LGUscixuLGkpe2xldCBvLHM7bGUodCk/KG89UCxzPVwiTnVtYmVyXCIpOnVlKHQpPyhvPWd0LHM9XCJTdHJpbmdcIixyLnNwbGljZSgwLHQubGVuZ3RoKSk6Y2UodCk/KG89ZCxzPVwiQm9vbGVhblwiKTpmZSh0KT8obz1wLHM9XCJCaWdJbnRcIik6KG89bXQscz1cIlN5bWJvbFwiKTtsZXQgYT1gWyR7c31gO3JldHVybiBzIT09biYmKGErPW51bGw9PT1uP1wiIChudWxsIHByb3RvdHlwZSlcIjpgICgke259KWApLGErPWA6ICR7UWUoQ2Usbyh0KSxlKX1dYCxcIlwiIT09aSYmaSE9PW4mJihhKz1gIFske2l9XWApLDAhPT1yLmxlbmd0aHx8ZS5zdHlsaXplPT09Q2U/YTplLnN0eWxpemUoYSxkdChzKSl9KGUsdCxvLHUsbCksMD09PW8ubGVuZ3RoJiZ2b2lkIDA9PT1hKXJldHVybiBmfWVsc2V7aWYoMD09PW8ubGVuZ3RoJiZ2b2lkIDA9PT1hKXtpZihLdChlKSl7Y29uc3Qgcj1MdChlKS50b1N0cmluZygxNik7cmV0dXJuIHQuc3R5bGl6ZShgW0V4dGVybmFsOiAke3J9XWAsXCJzcGVjaWFsXCIpfXJldHVybmAke1ZlKGUsdSxsKX17fWB9Y1swXT1gJHtWZShlLHUsbCl9e2B9aWYocj50LmRlcHRoJiZudWxsIT09dC5kZXB0aCl7bGV0IHI9VmUoZSx1LGwpLnNsaWNlKDAsLTEpO3JldHVybiBudWxsIT09dSYmKHI9YFske3J9XWApLHQuc3R5bGl6ZShyLFwic3BlY2lhbFwiKX1yKz0xLHQuc2Vlbi5wdXNoKGUpLHQuY3VycmVudERlcHRoPXI7Y29uc3QgTz10LmluZGVudGF0aW9uTHZsO3RyeXtmb3IoST13KHQsZSxyKSxBPTA7QTxvLmxlbmd0aDtBKyspSS5wdXNoKGRyKHQsZSxyLG9bQV0sQikpO3ZvaWQgMCE9PWEmJkkucHVzaCguLi5hKX1jYXRjaChyKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIsbil7aWYoQ3QoZSkpcmV0dXJuIHQuc2Vlbi5wb3AoKSx0LmluZGVudGF0aW9uTHZsPW4sdC5zdHlsaXplKGBbJHtyfTogSW5zcGVjdGlvbiBpbnRlcnJ1cHRlZCBwcmVtYXR1cmVseS4gTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuXWAsXCJzcGVjaWFsXCIpO2hlLmZhaWwoZS5zdGFjayl9KHQscixWZShlLHUsbCkuc2xpY2UoMCwtMSksTyl9aWYodm9pZCAwIT09dC5jaXJjdWxhcil7Y29uc3Qgcj10LmNpcmN1bGFyLmdldChlKTtpZih2b2lkIDAhPT1yKXtjb25zdCBlPXQuc3R5bGl6ZShgPHJlZiAqJHtyfT5gLFwic3BlY2lhbFwiKTshMCE9PXQuY29tcGFjdD9mPVwiXCI9PT1mP2U6YCR7ZX0gJHtmfWA6Y1swXT1gJHtlfSAke2NbMF19YH19aWYodC5zZWVuLnBvcCgpLHQuc29ydGVkKXtjb25zdCBlPSEwPT09dC5zb3J0ZWQ/dm9pZCAwOnQuc29ydGVkO2lmKDA9PT1CKUk9SS5zb3J0KGUpO2Vsc2UgaWYoby5sZW5ndGg+MSl7Y29uc3QgdD1JLnNsaWNlKEkubGVuZ3RoLW8ubGVuZ3RoKS5zb3J0KGUpO0kuc3BsaWNlKEkubGVuZ3RoLW8ubGVuZ3RoLG8ubGVuZ3RoLC4uLnQpfX1jb25zdCB4PWdyKHQsSSxmLGMsQixyLGUpLE49KHQuYnVkZ2V0W3QuaW5kZW50YXRpb25MdmxdfHwwKSt4Lmxlbmd0aDtyZXR1cm4gdC5idWRnZXRbdC5pbmRlbnRhdGlvbkx2bF09TixOPjIqKjI3JiYodC5kZXB0aD0tMSkseH0odCxlLHIsaSl9ZnVuY3Rpb24gWGUodCxlKXtyZXR1cm4gZSE9PWAke3R9IEl0ZXJhdG9yYCYmKFwiXCIhPT1lJiYoZSs9XCJdIFtcIiksZSs9YCR7dH0gSXRlcmF0b3JgKSxbYFske2V9XSB7YCxcIn1cIl19ZnVuY3Rpb24gSmUodCxlKXtyZXR1cm4gdChHKGUsLTApP1wiLTBcIjpgJHtlfWAsXCJudW1iZXJcIil9ZnVuY3Rpb24gWmUodCxlKXtyZXR1cm4gdChgJHtlfW5gLFwiYmlnaW50XCIpfWZ1bmN0aW9uIFFlKHQsZSxyKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSl7bGV0IG49XCJcIjtpZihlLmxlbmd0aD5yLm1heFN0cmluZ0xlbmd0aCl7Y29uc3QgdD1lLmxlbmd0aC1yLm1heFN0cmluZ0xlbmd0aDtlPWUuc2xpY2UoMCxyLm1heFN0cmluZ0xlbmd0aCksbj1gLi4uICR7dH0gbW9yZSBjaGFyYWN0ZXIke3Q+MT9cInNcIjpcIlwifWB9cmV0dXJuITAhPT1yLmNvbXBhY3QmJmUubGVuZ3RoPjE2JiZlLmxlbmd0aD5yLmJyZWFrTGVuZ3RoLXIuaW5kZW50YXRpb25MdmwtND9lLnNwbGl0KC9cXG4vKS5tYXAoKChlLHIsbik9PnQoRmUoZSsocj09PW4ubGVuZ3RoLTE/XCJcIjpcIlxcblwiKSksXCJzdHJpbmdcIikpKS5qb2luKGAgK1xcbiR7XCIgXCIucmVwZWF0KHIuaW5kZW50YXRpb25MdmwrMil9YCkrbjp0KEZlKGUpLFwic3RyaW5nXCIpK259cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGU/SmUodCxlKTpcImJpZ2ludFwiPT10eXBlb2YgZT9aZSh0LGUpOlwiYm9vbGVhblwiPT10eXBlb2YgZT90KGAke2V9YCxcImJvb2xlYW5cIik6dm9pZCAwPT09ZT90KFwidW5kZWZpbmVkXCIsXCJ1bmRlZmluZWRcIik6dChidChlKSxcInN5bWJvbFwiKX1mdW5jdGlvbiB0cih0LGUscixuKXtjb25zdCBpPW5ldyBvKHQubGVuZ3RoKTtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl0cnl7aVtvXT1kcihlLHIsbix0W29dLDApfWNhdGNoKHIpe2lmKCFRdChyKXx8XCJSZWZlcmVuY2VFcnJvclwiIT09ci5uYW1lKXRocm93IHI7Y29uc3Qgcz17W3Rbb11dOlwiXCJ9O2lbb109ZHIoZSxzLG4sdFtvXSwwKTtjb25zdCBhPWlbb10ubGFzdEluZGV4T2YoXCIgXCIpO2lbb109aVtvXS5zbGljZSgwLGErMSkrZS5zdHlsaXplKFwiPHVuaW5pdGlhbGl6ZWQ+XCIsXCJzcGVjaWFsXCIpfXJldHVybiB0Lmxlbmd0aD0wLGl9ZnVuY3Rpb24gZXIodCxlLHIsbixpLG8pe2NvbnN0IHM9VyhlKTtsZXQgYT1vO2Zvcig7bzxzLmxlbmd0aCYmaS5sZW5ndGg8bjtvKyspe2NvbnN0IHU9c1tvXSxsPSt1O2lmKGw+MioqMzItMilicmVhaztpZihgJHthfWAhPT11KXtpZighQWUudGVzdCh1KSlicmVhaztjb25zdCBlPWwtYSxyPWA8JHtlfSBlbXB0eSBpdGVtJHtlPjE/XCJzXCI6XCJcIn0+YDtpZihpLnB1c2godC5zdHlsaXplKHIsXCJ1bmRlZmluZWRcIikpLGE9bCxpLmxlbmd0aD09PW4pYnJlYWt9aS5wdXNoKGRyKHQsZSxyLHUsMSkpLGErK31jb25zdCB1PWUubGVuZ3RoLWE7aWYoaS5sZW5ndGghPT1uKXtpZih1PjApe2NvbnN0IGU9YDwke3V9IGVtcHR5IGl0ZW0ke3U+MT9cInNcIjpcIlwifT5gO2kucHVzaCh0LnN0eWxpemUoZSxcInVuZGVmaW5lZFwiKSl9fWVsc2UgdT4wJiZpLnB1c2goYC4uLiAke3V9IG1vcmUgaXRlbSR7dT4xP1wic1wiOlwiXCJ9YCk7cmV0dXJuIGl9ZnVuY3Rpb24gcnIodCxlKXtsZXQgbjt0cnl7bj1uZXcgU3QoZSl9Y2F0Y2h7cmV0dXJuW3Quc3R5bGl6ZShcIihkZXRhY2hlZClcIixcInNwZWNpYWxcIildfXZvaWQgMD09PXllJiYoeWU9QXQocigyNTUpLmwucHJvdG90eXBlLmhleFNsaWNlKSk7bGV0IGk9eXQoZnQoeWUobiwwLEkodC5tYXhBcnJheUxlbmd0aCxuLmxlbmd0aCkpLC8oLnsyfSkvZyxcIiQxIFwiKSk7Y29uc3Qgbz1uLmxlbmd0aC10Lm1heEFycmF5TGVuZ3RoO3JldHVybiBvPjAmJihpKz1gIC4uLiAke299IG1vcmUgYnl0ZSR7bz4xP1wic1wiOlwiXCJ9YCksW2Ake3Quc3R5bGl6ZShcIltVaW50OENvbnRlbnRzXVwiLFwic3BlY2lhbFwiKX06IDwke2l9PmBdfWZ1bmN0aW9uIG5yKHQsZSxyKXtjb25zdCBuPWUubGVuZ3RoLGk9SShUKDAsdC5tYXhBcnJheUxlbmd0aCksbiksbz1uLWkscz1bXTtmb3IobGV0IG49MDtuPGk7bisrKXtpZigheihlLG4pKXJldHVybiBlcih0LGUscixpLHMsbik7cy5wdXNoKGRyKHQsZSxyLG4sMSkpfXJldHVybiBvPjAmJnMucHVzaChgLi4uICR7b30gbW9yZSBpdGVtJHtvPjE/XCJzXCI6XCJcIn1gKSxzfWZ1bmN0aW9uIGlyKHQsZSxyLG4saSl7Y29uc3Qgcz1JKFQoMCxyLm1heEFycmF5TGVuZ3RoKSxlKSxhPXQubGVuZ3RoLXMsdT1uZXcgbyhzKSxjPXQubGVuZ3RoPjAmJlwibnVtYmVyXCI9PXR5cGVvZiB0WzBdP0plOlplO2ZvcihsZXQgZT0wO2U8czsrK2UpdVtlXT1jKHIuc3R5bGl6ZSx0W2VdKTtpZihhPjAmJih1W3NdPWAuLi4gJHthfSBtb3JlIGl0ZW0ke2E+MT9cInNcIjpcIlwifWApLHIuc2hvd0hpZGRlbil7ci5pbmRlbnRhdGlvbkx2bCs9Mjtmb3IoY29uc3QgZSBvZltcIkJZVEVTX1BFUl9FTEVNRU5UXCIsXCJsZW5ndGhcIixcImJ5dGVMZW5ndGhcIixcImJ5dGVPZmZzZXRcIixcImJ1ZmZlclwiXSl7Y29uc3Qgbj1LZShyLHRbZV0saSwhMCk7bCh1LGBbJHtlfV06ICR7bn1gKX1yLmluZGVudGF0aW9uTHZsLT0yfXJldHVybiB1fWZ1bmN0aW9uIG9yKHQsZSxyLG4pe2NvbnN0IGk9W107ZS5pbmRlbnRhdGlvbkx2bCs9Mjtmb3IoY29uc3QgciBvZiB0KWwoaSxLZShlLHIsbikpO3JldHVybiBlLmluZGVudGF0aW9uTHZsLT0yLGl9ZnVuY3Rpb24gc3IodCxlLHIsbil7Y29uc3QgaT1bXTtlLmluZGVudGF0aW9uTHZsKz0yO2Zvcihjb25zdHswOnIsMTpvfW9mIHQpaS5wdXNoKGAke0tlKGUscixuKX0gPT4gYCtLZShlLG8sbikpO3JldHVybiBlLmluZGVudGF0aW9uTHZsLT0yLGl9ZnVuY3Rpb24gYXIodCxlLHIsbil7Y29uc3QgaT1UKHQubWF4QXJyYXlMZW5ndGgsMCkscz1JKGksci5sZW5ndGgpLGE9bmV3IG8ocyk7dC5pbmRlbnRhdGlvbkx2bCs9Mjtmb3IobGV0IG49MDtuPHM7bisrKWFbbl09S2UodCxyW25dLGUpO3QuaW5kZW50YXRpb25MdmwtPTIsMCE9PW58fHQuc29ydGVkfHxmKGEpO2NvbnN0IHU9ci5sZW5ndGgtcztyZXR1cm4gdT4wJiZsKGEsYC4uLiAke3V9IG1vcmUgaXRlbSR7dT4xP1wic1wiOlwiXCJ9YCksYX1mdW5jdGlvbiB1cih0LGUscixuKXtjb25zdCBpPVQodC5tYXhBcnJheUxlbmd0aCwwKSxzPXIubGVuZ3RoLzIsYT1zLWksdT1JKGkscyk7bGV0IGw9bmV3IG8odSksYz0wO2lmKHQuaW5kZW50YXRpb25MdmwrPTIsMD09PW4pe2Zvcig7Yzx1O2MrKyl7Y29uc3Qgbj0yKmM7bFtjXT1gJHtLZSh0LHJbbl0sZSl9ID0+ICR7S2UodCxyW24rMV0sZSl9YH10LnNvcnRlZHx8KGw9bC5zb3J0KCkpfWVsc2UgZm9yKDtjPHU7YysrKXtjb25zdCBuPTIqYyxpPVtLZSh0LHJbbl0sZSksS2UodCxyW24rMV0sZSldO2xbY109Z3IodCxpLFwiXCIsW1wiW1wiLFwiXVwiXSwyLGUpfXJldHVybiB0LmluZGVudGF0aW9uTHZsLT0yLGE+MCYmbC5wdXNoKGAuLi4gJHthfSBtb3JlIGl0ZW0ke2E+MT9cInNcIjpcIlwifWApLGx9ZnVuY3Rpb24gbHIodCl7cmV0dXJuW3Quc3R5bGl6ZShcIjxpdGVtcyB1bmtub3duPlwiLFwic3BlY2lhbFwiKV19ZnVuY3Rpb24gY3IodCxlLHIpe3JldHVybiBhcih0LHIsUnQoZSksMCl9ZnVuY3Rpb24gZnIodCxlLHIpe3JldHVybiB1cih0LHIsUnQoZSksMCl9ZnVuY3Rpb24gaHIodCxlLHIsbil7Y29uc3R7MDppLDE6b309UnQociwhMCk7cmV0dXJuIG8/KHRbMF09dFswXS5yZXBsYWNlKC8gSXRlcmF0b3JdIHskLyxcIiBFbnRyaWVzXSB7XCIpLHVyKGUsbixpLDIpKTphcihlLG4saSwxKX1mdW5jdGlvbiBwcih0LGUscil7bGV0IG47Y29uc3R7MDppLDE6b309SXQoZSk7aWYoaT09PU90KW49W3Quc3R5bGl6ZShcIjxwZW5kaW5nPlwiLFwic3BlY2lhbFwiKV07ZWxzZXt0LmluZGVudGF0aW9uTHZsKz0yO2NvbnN0IGU9S2UodCxvLHIpO3QuaW5kZW50YXRpb25MdmwtPTIsbj1baT09PXh0P2Ake3Quc3R5bGl6ZShcIjxyZWplY3RlZD5cIixcInNwZWNpYWxcIil9ICR7ZX1gOmVdfXJldHVybiBufWZ1bmN0aW9uIGRyKHQsZSxyLG4saSxvLHM9ZSl7bGV0IGEsdSxsPVwiIFwiO2lmKHZvaWQgMCE9PShvPW98fCQoZSxuKXx8e3ZhbHVlOmVbbl0sZW51bWVyYWJsZTohMH0pLnZhbHVlKXtjb25zdCBlPSEwIT09dC5jb21wYWN0fHwwIT09aT8yOjM7dC5pbmRlbnRhdGlvbkx2bCs9ZSx1PUtlKHQsby52YWx1ZSxyKSwzPT09ZSYmdC5icmVha0xlbmd0aDxMZSh1LHQuY29sb3JzKSYmKGw9YFxcbiR7XCIgXCIucmVwZWF0KHQuaW5kZW50YXRpb25MdmwpfWApLHQuaW5kZW50YXRpb25MdmwtPWV9ZWxzZSBpZih2b2lkIDAhPT1vLmdldCl7Y29uc3QgZT12b2lkIDAhPT1vLnNldD9cIkdldHRlci9TZXR0ZXJcIjpcIkdldHRlclwiLG49dC5zdHlsaXplLGk9XCJzcGVjaWFsXCI7aWYodC5nZXR0ZXJzJiYoITA9PT10LmdldHRlcnN8fFwiZ2V0XCI9PT10LmdldHRlcnMmJnZvaWQgMD09PW8uc2V0fHxcInNldFwiPT09dC5nZXR0ZXJzJiZ2b2lkIDAhPT1vLnNldCkpdHJ5e2NvbnN0IGE9dyhvLmdldCxzKTtpZih0LmluZGVudGF0aW9uTHZsKz0yLG51bGw9PT1hKXU9YCR7bihgWyR7ZX06YCxpKX0gJHtuKFwibnVsbFwiLFwibnVsbFwiKX0ke24oXCJdXCIsaSl9YDtlbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiBhKXU9YCR7bihgWyR7ZX1dYCxpKX0gJHtLZSh0LGEscil9YDtlbHNle2NvbnN0IHI9UWUobixhLHQpO3U9YCR7bihgWyR7ZX06YCxpKX0gJHtyfSR7bihcIl1cIixpKX1gfXQuaW5kZW50YXRpb25MdmwtPTJ9Y2F0Y2godCl7Y29uc3Qgcj1gPEluc3BlY3Rpb24gdGhyZXcgKCR7dC5tZXNzYWdlfSk+YDt1PWAke24oYFske2V9OmAsaSl9ICR7cn0ke24oXCJdXCIsaSl9YH1lbHNlIHU9dC5zdHlsaXplKGBbJHtlfV1gLGkpfWVsc2UgdT12b2lkIDAhPT1vLnNldD90LnN0eWxpemUoXCJbU2V0dGVyXVwiLFwic3BlY2lhbFwiKTp0LnN0eWxpemUoXCJ1bmRlZmluZWRcIixcInVuZGVmaW5lZFwiKTtpZigxPT09aSlyZXR1cm4gdTtpZihcInN5bWJvbFwiPT10eXBlb2Ygbil7Y29uc3QgZT1mdChidChuKSxfZSwkZSk7YT1gWyR7dC5zdHlsaXplKGUsXCJzeW1ib2xcIil9XWB9ZWxzZSBhPVwiX19wcm90b19fXCI9PT1uP1wiWydfX3Byb3RvX18nXVwiOiExPT09by5lbnVtZXJhYmxlP2BbJHtmdChuLF9lLCRlKX1dYDpYKFNlLG4pP3Quc3R5bGl6ZShuLFwibmFtZVwiKTp0LnN0eWxpemUoRmUobiksXCJzdHJpbmdcIik7cmV0dXJuYCR7YX06JHtsfSR7dX1gfWZ1bmN0aW9uIHlyKHQsZSxyLG4pe2xldCBpPWUubGVuZ3RoK3I7aWYoaStlLmxlbmd0aD50LmJyZWFrTGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKHQuY29sb3JzP2krPUZ0KGVbcl0pLmxlbmd0aDppKz1lW3JdLmxlbmd0aCxpPnQuYnJlYWtMZW5ndGgpcmV0dXJuITE7cmV0dXJuXCJcIj09PW58fCFzdChuLFwiXFxuXCIpfWZ1bmN0aW9uIGdyKHQsZSxyLG4saSxzLGEpe2lmKCEwIT09dC5jb21wYWN0KXtpZihcIm51bWJlclwiPT10eXBlb2YgdC5jb21wYWN0JiZ0LmNvbXBhY3Q+PTEpe2NvbnN0IHU9ZS5sZW5ndGg7aWYoMj09PWkmJnU+NiYmKGU9ZnVuY3Rpb24odCxlLHIpe2xldCBuPTAsaT0wLHM9MCxhPWUubGVuZ3RoO3QubWF4QXJyYXlMZW5ndGg8ZS5sZW5ndGgmJmEtLTtjb25zdCB1PW5ldyBvKGEpO2Zvcig7czxhO3MrKyl7Y29uc3Qgcj1MZShlW3NdLHQuY29sb3JzKTt1W3NdPXIsbis9cisyLGk8ciYmKGk9cil9Y29uc3QgYz1pKzI7aWYoMypjK3QuaW5kZW50YXRpb25Mdmw8dC5icmVha0xlbmd0aCYmKG4vYz41fHxpPD02KSl7Y29uc3QgaT0yLjUsbz1PKGMtbi9lLmxlbmd0aCkscz1UKGMtMy1vLDEpLGY9SShCKE8oaSpzKmEpL3MpLEEoKHQuYnJlYWtMZW5ndGgtdC5pbmRlbnRhdGlvbkx2bCkvYyksNCp0LmNvbXBhY3QsMTUpO2lmKGY8PTEpcmV0dXJuIGU7Y29uc3QgaD1bXSxwPVtdO2ZvcihsZXQgdD0wO3Q8Zjt0Kyspe2xldCByPTA7Zm9yKGxldCBuPXQ7bjxlLmxlbmd0aDtuKz1mKXVbbl0+ciYmKHI9dVtuXSk7cis9MixwW3RdPXJ9bGV0IGQ9bHQ7aWYodm9pZCAwIT09cilmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylpZihcIm51bWJlclwiIT10eXBlb2Ygclt0XSYmXCJiaWdpbnRcIiE9dHlwZW9mIHJbdF0pe2Q9dXQ7YnJlYWt9Zm9yKGxldCB0PTA7dDxhO3QrPWYpe2NvbnN0IHI9SSh0K2YsYSk7bGV0IG49XCJcIixpPXQ7Zm9yKDtpPHItMTtpKyspe2NvbnN0IHI9cFtpLXRdK2VbaV0ubGVuZ3RoLXVbaV07bis9ZChgJHtlW2ldfSwgYCxyLFwiIFwiKX1pZihkPT09bHQpe2NvbnN0IHI9cFtpLXRdK2VbaV0ubGVuZ3RoLXVbaV0tMjtuKz1sdChlW2ldLHIsXCIgXCIpfWVsc2Ugbis9ZVtpXTtsKGgsbil9dC5tYXhBcnJheUxlbmd0aDxlLmxlbmd0aCYmbChoLGVbYV0pLGU9aH1yZXR1cm4gZX0odCxlLGEpKSx0LmN1cnJlbnREZXB0aC1zPHQuY29tcGFjdCYmdT09PWUubGVuZ3RoJiZ5cih0LGUsZS5sZW5ndGgrdC5pbmRlbnRhdGlvbkx2bCtuWzBdLmxlbmd0aCtyLmxlbmd0aCsxMCxyKSlyZXR1cm5gJHtyP2Ake3J9IGA6XCJcIn0ke25bMF19ICR7JHQoZSxcIiwgXCIpfSAke25bMV19YH1jb25zdCB1PWBcXG4ke2N0KFwiIFwiLHQuaW5kZW50YXRpb25MdmwpfWA7cmV0dXJuYCR7cj9gJHtyfSBgOlwiXCJ9JHtuWzBdfSR7dX0gICR7JHQoZSxgLCR7dX0gIGApfSR7dX0ke25bMV19YH1pZih5cih0LGUsMCxyKSlyZXR1cm5gJHtuWzBdfSR7cj9gICR7cn1gOlwiXCJ9ICR7JHQoZSxcIiwgXCIpfSBgK25bMV07Y29uc3QgdT1jdChcIiBcIix0LmluZGVudGF0aW9uTHZsKSxjPVwiXCI9PT1yJiYxPT09blswXS5sZW5ndGg/XCIgXCI6YCR7cj9gICR7cn1gOlwiXCJ9XFxuJHt1fSAgYDtyZXR1cm5gJHtuWzBdfSR7Y30keyR0KGUsYCxcXG4ke3V9ICBgKX0gJHtuWzFdfWB9ZnVuY3Rpb24gYnIodCl7Y29uc3QgZT1CdCh0LCExKTtpZih2b2lkIDAhPT1lJiYodD1lKSxcImZ1bmN0aW9uXCIhPXR5cGVvZiB0LnRvU3RyaW5nKXJldHVybiEwO2lmKHoodCxcInRvU3RyaW5nXCIpKXJldHVybiExO2xldCByPXQ7ZG97cj1DKHIpfXdoaWxlKCF6KHIsXCJ0b1N0cmluZ1wiKSk7Y29uc3Qgbj0kKHIsXCJjb25zdHJ1Y3RvclwiKTtyZXR1cm4gdm9pZCAwIT09biYmXCJmdW5jdGlvblwiPT10eXBlb2Ygbi52YWx1ZSYmZ2UuaGFzKG4udmFsdWUubmFtZSl9Y29uc3QgbXI9dD0+cHQodC5tZXNzYWdlLFwiXFxuXCIsMSlbMF07bGV0IHdyO2Z1bmN0aW9uIF9yKHQpe3RyeXtyZXR1cm4gRSh0KX1jYXRjaCh0KXtpZighd3IpdHJ5e2NvbnN0IHQ9e307dC5hPXQsRSh0KX1jYXRjaCh0KXt3cj1tcih0KX1pZihcIlR5cGVFcnJvclwiPT09dC5uYW1lJiZtcih0KT09PXdyKXJldHVyblwiW0NpcmN1bGFyXVwiO3Rocm93IHR9fWZ1bmN0aW9uIEVyKHQsZSl7Y29uc3Qgcj1lWzBdO2xldCBuPTAsaT1cIlwiLG89XCJcIjtpZihcInN0cmluZ1wiPT10eXBlb2Ygcil7aWYoMT09PWUubGVuZ3RoKXJldHVybiByO2xldCBzLGE9MDtmb3IobGV0IG89MDtvPHIubGVuZ3RoLTE7bysrKWlmKDM3PT09aXQocixvKSl7Y29uc3QgdT1pdChyLCsrbyk7aWYobisxIT09ZS5sZW5ndGgpe3N3aXRjaCh1KXtjYXNlIDExNTpjb25zdCB1PWVbKytuXTtzPVwibnVtYmVyXCI9PXR5cGVvZiB1P0plKENlLHUpOlwiYmlnaW50XCI9PXR5cGVvZiB1P2Ake3V9bmA6XCJvYmplY3RcIj09dHlwZW9mIHUmJm51bGwhPT11JiZicih1KT9QZSh1LHsuLi50LGNvbXBhY3Q6Myxjb2xvcnM6ITEsZGVwdGg6MH0pOm50KHUpO2JyZWFrO2Nhc2UgMTA2OnM9X3IoZVsrK25dKTticmVhaztjYXNlIDEwMDpjb25zdCBsPWVbKytuXTtzPVwiYmlnaW50XCI9PXR5cGVvZiBsP2Ake2x9bmA6XCJzeW1ib2xcIj09dHlwZW9mIGw/XCJOYU5cIjpKZShDZSx4KGwpKTticmVhaztjYXNlIDc5OnM9UGUoZVsrK25dLHQpO2JyZWFrO2Nhc2UgMTExOnM9UGUoZVsrK25dLHsuLi50LHNob3dIaWRkZW46ITAsc2hvd1Byb3h5OiEwLGRlcHRoOjR9KTticmVhaztjYXNlIDEwNTpjb25zdCBjPWVbKytuXTtzPVwiYmlnaW50XCI9PXR5cGVvZiBjP2Ake2N9bmA6XCJzeW1ib2xcIj09dHlwZW9mIGM/XCJOYU5cIjpKZShDZSxMKGMpKTticmVhaztjYXNlIDEwMjpjb25zdCBmPWVbKytuXTtzPVwic3ltYm9sXCI9PXR5cGVvZiBmP1wiTmFOXCI6SmUoQ2UsTihmKSk7YnJlYWs7Y2FzZSA5OTpuKz0xLHM9XCJcIjticmVhaztjYXNlIDM3OmkrPWh0KHIsYSxvKSxhPW8rMTtjb250aW51ZTtkZWZhdWx0OmNvbnRpbnVlfWEhPT1vLTEmJihpKz1odChyLGEsby0xKSksaSs9cyxhPW8rMX1lbHNlIDM3PT09dSYmKGkrPWh0KHIsYSxvKSxhPW8rMSl9MCE9PWEmJihuKyssbz1cIiBcIixhPHIubGVuZ3RoJiYoaSs9aHQocixhKSkpfWZvcig7bjxlLmxlbmd0aDspe2NvbnN0IHI9ZVtuXTtpKz1vLGkrPVwic3RyaW5nXCIhPXR5cGVvZiByP1BlKHIsdCk6cixvPVwiIFwiLG4rK31yZXR1cm4gaX1pZihpKFwiY29uZmlnXCIpLmhhc0ludGwpe2NvbnN0IHQ9aShcImljdVwiKTtMZT1mdW5jdGlvbihlLHI9ITApe2xldCBuPTA7ciYmKGU9dnIoZSkpO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtjb25zdCBpPWUuY2hhckNvZGVBdChyKTtpZihpPj0xMjcpe24rPXQuZ2V0U3RyaW5nV2lkdGgoZS5zbGljZShyKS5ub3JtYWxpemUoXCJORkNcIikpO2JyZWFrfW4rPWk+PTMyPzE6MH1yZXR1cm4gbn19ZWxzZXtMZT1mdW5jdGlvbihyLG49ITApe2xldCBpPTA7biYmKHI9dnIocikpLHI9YXQocixcIk5GQ1wiKTtmb3IoY29uc3QgbiBvZiBuZXcgWihyKSl7Y29uc3Qgcj1vdChuLDApO3Qocik/aSs9MjplKHIpfHxpKyt9cmV0dXJuIGl9O2NvbnN0IHQ9dD0+dD49NDM1MiYmKHQ8PTQ0NDd8fDkwMDE9PT10fHw5MDAyPT09dHx8dD49MTE5MDQmJnQ8PTEyODcxJiYxMjM1MSE9PXR8fHQ+PTEyODgwJiZ0PD0xOTkwM3x8dD49MTk5NjgmJnQ8PTQyMTgyfHx0Pj00MzM2MCYmdDw9NDMzODh8fHQ+PTQ0MDMyJiZ0PD01NTIwM3x8dD49NjM3NDQmJnQ8PTY0MjU1fHx0Pj02NTA0MCYmdDw9NjUwNDl8fHQ+PTY1MDcyJiZ0PD02NTEzMXx8dD49NjUyODEmJnQ8PTY1Mzc2fHx0Pj02NTUwNCYmdDw9NjU1MTB8fHQ+PTExMDU5MiYmdDw9MTEwNTkzfHx0Pj0xMjc0ODgmJnQ8PTEyNzU2OXx8dD49MTI3NzQ0JiZ0PD0xMjg1OTF8fHQ+PTEzMTA3MiYmdDw9MjYyMTQxKSxlPXQ9PnQ8PTMxfHx0Pj0xMjcmJnQ8PTE1OXx8dD49NzY4JiZ0PD04Nzl8fHQ+PTgyMDMmJnQ8PTgyMDd8fHQ+PTg0MDAmJnQ8PTg0NDd8fHQ+PTY1MDI0JiZ0PD02NTAzOXx8dD49NjUwNTYmJnQ8PTY1MDcxfHx0Pj05MTc3NjAmJnQ8PTkxNzk5OX1mdW5jdGlvbiB2cih0KXtyZXR1cm4gdC5yZXBsYWNlKE5lLFwiXCIpfXQuZXhwb3J0cz17aW5zcGVjdDpQZSxmb3JtYXQ6ZnVuY3Rpb24oLi4udCl7cmV0dXJuIEVyKHZvaWQgMCx0KX0sZm9ybWF0V2l0aE9wdGlvbnM6ZnVuY3Rpb24odCwuLi5lKXtpZihcIm9iamVjdFwiIT10eXBlb2YgdHx8bnVsbD09PXQpdGhyb3cgbmV3IER0KFwiaW5zcGVjdE9wdGlvbnNcIixcIm9iamVjdFwiLHQpO3JldHVybiBFcih0LGUpfSxnZXRTdHJpbmdXaWR0aDpMZSxpbnNwZWN0RGVmYXVsdE9wdGlvbnM6bWUsc3RyaXBWVENvbnRyb2xDaGFyYWN0ZXJzOnZyLHN0eWxpemVXaXRoQ29sb3I6RGUsc3R5bGl6ZVdpdGhIVE1MKHQsZSl7Y29uc3Qgcj1QZS5zdHlsZXNbZV07cmV0dXJuIHZvaWQgMCE9PXI/YDxzcGFuIHN0eWxlPVwiY29sb3I6JHtyfTtcIj4ke3R9PC9zcGFuPmA6dH0sUHJveHk6VXR9fSwxODM6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoXCJBc3NlcnRpb24gZmFpbGVkXCIpfX0sOTkyOih0LGUpPT57ZS5OYXRpdmVNb2R1bGU9e2V4aXN0czp0PT4hdC5zdGFydHNXaXRoKFwiL1wiKX19LDEwMToodCxlLHIpPT57Y29uc3R7QXJyYXlJc0FycmF5Om4sQXJyYXlQcm90b3R5cGVJbmNsdWRlczppLEFycmF5UHJvdG90eXBlSW5kZXhPZjpvLEFycmF5UHJvdG90eXBlSm9pbjpzLEFycmF5UHJvdG90eXBlUG9wOmEsQXJyYXlQcm90b3R5cGVQdXNoOnUsQXJyYXlQcm90b3R5cGVTcGxpY2U6bCxFcnJvckNhcHR1cmVTdGFja1RyYWNlOmMsT2JqZWN0RGVmaW5lUHJvcGVydHk6ZixSZWZsZWN0QXBwbHk6aCxSZWdFeHBQcm90b3R5cGVUZXN0OnAsU2FmZU1hcDpkLFN0cmluZ1Byb3RvdHlwZUVuZHNXaXRoOnksU3RyaW5nUHJvdG90eXBlSW5jbHVkZXM6ZyxTdHJpbmdQcm90b3R5cGVTbGljZTpiLFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlOm19PXIoNzY1KSx3PW5ldyBkLF89e30sRT0vXihbQS1aXVthLXowLTldKikrJC8sdj1bXCJzdHJpbmdcIixcImZ1bmN0aW9uXCIsXCJudW1iZXJcIixcIm9iamVjdFwiLFwiRnVuY3Rpb25cIixcIk9iamVjdFwiLFwiYm9vbGVhblwiLFwiYmlnaW50XCIsXCJzeW1ib2xcIl07bGV0IFMsQSxUPW51bGw7ZnVuY3Rpb24gSSgpe3JldHVybiBUfHwoVD1yKDQ4KSksVH1jb25zdCBCPU8oKGZ1bmN0aW9uKHQsZSxyKXsodD14KHQpKS5uYW1lPWAke2V9IFske3J9XWAsdC5zdGFjayxkZWxldGUgdC5uYW1lfSkpO2Z1bmN0aW9uIE8odCl7Y29uc3QgZT1cIl9fbm9kZV9pbnRlcm5hbF9cIit0Lm5hbWU7cmV0dXJuIGYodCxcIm5hbWVcIix7dmFsdWU6ZX0pLHR9Y29uc3QgeD1PKChmdW5jdGlvbih0KXtyZXR1cm4gUz1FcnJvci5zdGFja1RyYWNlTGltaXQsRXJyb3Iuc3RhY2tUcmFjZUxpbWl0PTEvMCxjKHQpLEVycm9yLnN0YWNrVHJhY2VMaW1pdD1TLHR9KSk7bGV0IFIsTjt2YXIgTCxQLE0sVSxqO3QuZXhwb3J0cz17Y29kZXM6XyxoaWRlU3RhY2tGcmFtZXM6Tyxpc1N0YWNrT3ZlcmZsb3dFcnJvcjpmdW5jdGlvbih0KXtpZih2b2lkIDA9PT1OKXRyeXshZnVuY3Rpb24gdCgpe3QoKX0oKX1jYXRjaCh0KXtOPXQubWVzc2FnZSxSPXQubmFtZX1yZXR1cm4gdCYmdC5uYW1lPT09UiYmdC5tZXNzYWdlPT09Tn19LEw9XCJFUlJfSU5WQUxJRF9BUkdfVFlQRVwiLFA9KHQsZSxyKT0+e0EoXCJzdHJpbmdcIj09dHlwZW9mIHQsXCInbmFtZScgbXVzdCBiZSBhIHN0cmluZ1wiKSxuKGUpfHwoZT1bZV0pO2xldCBjPVwiVGhlIFwiO3kodCxcIiBhcmd1bWVudFwiKT9jKz1gJHt0fSBgOmMrPWBcIiR7dH1cIiAke2codCxcIi5cIik/XCJwcm9wZXJ0eVwiOlwiYXJndW1lbnRcIn0gYCxjKz1cIm11c3QgYmUgXCI7Y29uc3QgZj1bXSxoPVtdLGQ9W107Zm9yKGNvbnN0IHQgb2YgZSlBKFwic3RyaW5nXCI9PXR5cGVvZiB0LFwiQWxsIGV4cGVjdGVkIGVudHJpZXMgaGF2ZSB0byBiZSBvZiB0eXBlIHN0cmluZ1wiKSxpKHYsdCk/dShmLG0odCkpOnAoRSx0KT91KGgsdCk6KEEoXCJvYmplY3RcIiE9PXQsJ1RoZSB2YWx1ZSBcIm9iamVjdFwiIHNob3VsZCBiZSB3cml0dGVuIGFzIFwiT2JqZWN0XCInKSx1KGQsdCkpO2lmKGgubGVuZ3RoPjApe2NvbnN0IHQ9byhmLFwib2JqZWN0XCIpOy0xIT09dCYmKGwoZix0LDEpLHUoaCxcIk9iamVjdFwiKSl9aWYoZi5sZW5ndGg+MCl7aWYoZi5sZW5ndGg+Mil7Y29uc3QgdD1hKGYpO2MrPWBvbmUgb2YgdHlwZSAke3MoZixcIiwgXCIpfSwgb3IgJHt0fWB9ZWxzZSBjKz0yPT09Zi5sZW5ndGg/YG9uZSBvZiB0eXBlICR7ZlswXX0gb3IgJHtmWzFdfWA6YG9mIHR5cGUgJHtmWzBdfWA7KGgubGVuZ3RoPjB8fGQubGVuZ3RoPjApJiYoYys9XCIgb3IgXCIpfWlmKGgubGVuZ3RoPjApe2lmKGgubGVuZ3RoPjIpe2NvbnN0IHQ9YShoKTtjKz1gYW4gaW5zdGFuY2Ugb2YgJHtzKGgsXCIsIFwiKX0sIG9yICR7dH1gfWVsc2UgYys9YGFuIGluc3RhbmNlIG9mICR7aFswXX1gLDI9PT1oLmxlbmd0aCYmKGMrPWAgb3IgJHtoWzFdfWApO2QubGVuZ3RoPjAmJihjKz1cIiBvciBcIil9aWYoZC5sZW5ndGg+MClpZihkLmxlbmd0aD4yKXtjb25zdCB0PWEoZCk7Yys9YG9uZSBvZiAke3MoZCxcIiwgXCIpfSwgb3IgJHt0fWB9ZWxzZSAyPT09ZC5sZW5ndGg/Yys9YG9uZSBvZiAke2RbMF19IG9yICR7ZFsxXX1gOihtKGRbMF0pIT09ZFswXSYmKGMrPVwiYW4gXCIpLGMrPWAke2RbMF19YCk7aWYobnVsbD09ciljKz1gLiBSZWNlaXZlZCAke3J9YDtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHImJnIubmFtZSljKz1gLiBSZWNlaXZlZCBmdW5jdGlvbiAke3IubmFtZX1gO2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIHIpci5jb25zdHJ1Y3RvciYmci5jb25zdHJ1Y3Rvci5uYW1lP2MrPWAuIFJlY2VpdmVkIGFuIGluc3RhbmNlIG9mICR7ci5jb25zdHJ1Y3Rvci5uYW1lfWA6Yys9YC4gUmVjZWl2ZWQgJHtJKCkuaW5zcGVjdChyLHtkZXB0aDotMX0pfWA7ZWxzZXtsZXQgdD1JKCkuaW5zcGVjdChyLHtjb2xvcnM6ITF9KTt0Lmxlbmd0aD4yNSYmKHQ9YCR7Yih0LDAsMjUpfS4uLmApLGMrPWAuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2Ygcn0gKCR7dH0pYH1yZXR1cm4gY30sTT1UeXBlRXJyb3Isdy5zZXQoTCxQKSxfW0xdPShVPU0saj1MLGZ1bmN0aW9uKC4uLnQpe2NvbnN0IGU9RXJyb3Iuc3RhY2tUcmFjZUxpbWl0O0Vycm9yLnN0YWNrVHJhY2VMaW1pdD0wO2NvbnN0IG49bmV3IFU7RXJyb3Iuc3RhY2tUcmFjZUxpbWl0PWU7Y29uc3QgaT1mdW5jdGlvbih0LGUsbil7Y29uc3QgaT13LmdldCh0KTtyZXR1cm4gdm9pZCAwPT09QSYmKEE9cigxODMpKSxBKFwiZnVuY3Rpb25cIj09dHlwZW9mIGkpLEEoaS5sZW5ndGg8PWUubGVuZ3RoLGBDb2RlOiAke3R9OyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzIGxlbmd0aCAoJHtlLmxlbmd0aH0pIGRvZXMgbm90IG1hdGNoIHRoZSByZXF1aXJlZCBvbmVzICgke2kubGVuZ3RofSkuYCksaChpLG4sZSl9KGosdCxuKTtyZXR1cm4gZihuLFwibWVzc2FnZVwiLHt2YWx1ZTppLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZihuLFwidG9TdHJpbmdcIix7dmFsdWUoKXtyZXR1cm5gJHt0aGlzLm5hbWV9IFske2p9XTogJHt0aGlzLm1lc3NhZ2V9YH0sZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxCKG4sVS5uYW1lLGopLG4uY29kZT1qLG59KX0sMzM1OnQ9Pntjb25zdCBlPS9cXHUwMDFiXFxbXFxkXFxkP20vZzt0LmV4cG9ydHM9e2N1c3RvbUluc3BlY3RTeW1ib2w6U3ltYm9sLmZvcihcIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tXCIpLGlzRXJyb3I6dD0+dCBpbnN0YW5jZW9mIEVycm9yLGpvaW46QXJyYXkucHJvdG90eXBlLmpvaW4uY2FsbC5iaW5kKEFycmF5LnByb3RvdHlwZS5qb2luKSxyZW1vdmVDb2xvcnM6dD0+U3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlLmNhbGwodCxlLFwiXCIpfX0sNjM6KHQsZSxyKT0+e2NvbnN0e2dldENvbnN0cnVjdG9yTmFtZTpufT1yKDg5MSk7ZnVuY3Rpb24gaSh0LC4uLmUpe2Zvcihjb25zdCByIG9mIGUpe2NvbnN0IGU9Z2xvYmFsVGhpc1tyXTtpZihlJiZ0IGluc3RhbmNlb2YgZSlyZXR1cm4hMH1mb3IoO3Q7KXtpZihcIm9iamVjdFwiIT10eXBlb2YgdClyZXR1cm4hMTtpZihlLmluZGV4T2Yobih0KSk+PTApcmV0dXJuITA7dD1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9cmV0dXJuITF9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gZT0+e2lmKCFpKGUsdC5uYW1lKSlyZXR1cm4hMTt0cnl7dC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKGUpfWNhdGNoe3JldHVybiExfXJldHVybiEwfX1cIm9iamVjdFwiIT10eXBlb2YgZ2xvYmFsVGhpcyYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLFwiX19tYWdpY19fXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxjb25maWd1cmFibGU6ITB9KSxfX21hZ2ljX18uZ2xvYmFsVGhpcz1fX21hZ2ljX18sZGVsZXRlIE9iamVjdC5wcm90b3R5cGUuX19tYWdpY19fKTtjb25zdCBzPW8oU3RyaW5nKSxhPW8oTnVtYmVyKSx1PW8oQm9vbGVhbiksbD1vKEJpZ0ludCksYz1vKFN5bWJvbCk7dC5leHBvcnRzPXtpc0FzeW5jRnVuY3Rpb246dD0+XCJmdW5jdGlvblwiPT10eXBlb2YgdCYmRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc3RhcnRzV2l0aChcImFzeW5jXCIpLGlzR2VuZXJhdG9yRnVuY3Rpb246dD0+XCJmdW5jdGlvblwiPT10eXBlb2YgdCYmRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkubWF0Y2goL14oYXN5bmNcXHMrKT9mdW5jdGlvbiAqXFwqLyksaXNBbnlBcnJheUJ1ZmZlcjp0PT5pKHQsXCJBcnJheUJ1ZmZlclwiLFwiU2hhcmVkQXJyYXlCdWZmZXJcIiksaXNBcnJheUJ1ZmZlcjp0PT5pKHQsXCJBcnJheUJ1ZmZlclwiKSxpc0FyZ3VtZW50c09iamVjdDp0PT4hMSxpc0JveGVkUHJpbWl0aXZlOnQ9PmEodCl8fHModCl8fHUodCl8fGwodCl8fGModCksaXNEYXRhVmlldzp0PT5pKHQsXCJEYXRhVmlld1wiKSxpc0V4dGVybmFsOnQ9Plwib2JqZWN0XCI9PXR5cGVvZiB0JiZPYmplY3QuaXNGcm96ZW4odCkmJm51bGw9PU9iamVjdC5nZXRQcm90b3R5cGVPZih0KSxpc01hcCh0KXtpZighaSh0LFwiTWFwXCIpKXJldHVybiExO3RyeXt0LmhhcygpfWNhdGNoe3JldHVybiExfXJldHVybiEwfSxpc01hcEl0ZXJhdG9yOnQ9PlwiW29iamVjdCBNYXAgSXRlcmF0b3JdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKSxpc01vZHVsZU5hbWVzcGFjZU9iamVjdDp0PT50JiZcIm9iamVjdFwiPT10eXBlb2YgdCYmXCJNb2R1bGVcIj09PXRbU3ltYm9sLnRvU3RyaW5nVGFnXSxpc05hdGl2ZUVycm9yOnQ9PnQgaW5zdGFuY2VvZiBFcnJvciYmaSh0LFwiRXJyb3JcIixcIkV2YWxFcnJvclwiLFwiUmFuZ2VFcnJvclwiLFwiUmVmZXJlbmNlRXJyb3JcIixcIlN5bnRheEVycm9yXCIsXCJUeXBlRXJyb3JcIixcIlVSSUVycm9yXCIsXCJBZ2dyZWdhdGVFcnJvclwiKSxpc1Byb21pc2U6dD0+aSh0LFwiUHJvbWlzZVwiKSxpc1NldCh0KXtpZighaSh0LFwiU2V0XCIpKXJldHVybiExO3RyeXt0LmhhcygpfWNhdGNoe3JldHVybiExfXJldHVybiEwfSxpc1NldEl0ZXJhdG9yOnQ9PlwiW29iamVjdCBTZXQgSXRlcmF0b3JdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKSxpc1dlYWtNYXA6dD0+aSh0LFwiV2Vha01hcFwiKSxpc1dlYWtTZXQ6dD0+aSh0LFwiV2Vha1NldFwiKSxpc1JlZ0V4cDp0PT5pKHQsXCJSZWdFeHBcIiksaXNEYXRlKHQpe2lmKGkodCxcIkRhdGVcIikpdHJ5e3JldHVybiBEYXRlLnByb3RvdHlwZS5nZXRUaW1lLmNhbGwodCksITB9Y2F0Y2h7fXJldHVybiExfSxpc1R5cGVkQXJyYXk6dD0+aSh0LFwiSW50OEFycmF5XCIsXCJVaW50OEFycmF5XCIsXCJVaW50OENsYW1wZWRBcnJheVwiLFwiSW50MTZBcnJheVwiLFwiVWludDE2QXJyYXlcIixcIkludDMyQXJyYXlcIixcIlVpbnQzMkFycmF5XCIsXCJGbG9hdDMyQXJyYXlcIixcIkZsb2F0NjRBcnJheVwiLFwiQmlnSW50NjRBcnJheVwiLFwiQmlnVWludDY0QXJyYXlcIiksaXNTdHJpbmdPYmplY3Q6cyxpc051bWJlck9iamVjdDphLGlzQm9vbGVhbk9iamVjdDp1LGlzQmlnSW50T2JqZWN0OmwsaXNTeW1ib2xPYmplY3Q6Y319LDM1NjoodCxlLHIpPT57Y29uc3R7aGlkZVN0YWNrRnJhbWVzOm4sY29kZXM6e0VSUl9JTlZBTElEX0FSR19UWVBFOml9fT1yKDEwMSk7ZS52YWxpZGF0ZU9iamVjdD1uKCgodCxlLHtudWxsYWJsZTpyPSExfT17fSk9PntpZighciYmbnVsbD09PXR8fEFycmF5LmlzQXJyYXkodCl8fFwib2JqZWN0XCIhPXR5cGVvZiB0KXRocm93IG5ldyBpKGUsXCJPYmplY3RcIix0KX0pKX0sNzY1OnQ9Pntjb25zdCBlPSh0LGUpPT57Y2xhc3Mgcntjb25zdHJ1Y3RvcihlKXt0aGlzLl9pdGVyYXRvcj10KGUpfW5leHQoKXtyZXR1cm4gZSh0aGlzLl9pdGVyYXRvcil9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpc319cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihyLnByb3RvdHlwZSxudWxsKSxPYmplY3QuZnJlZXplKHIucHJvdG90eXBlKSxPYmplY3QuZnJlZXplKHIpLHJ9O2Z1bmN0aW9uIHIodCxlKXtyZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZCh0LnByb3RvdHlwZS5fX2xvb2t1cEdldHRlcl9fKGUpKX1mdW5jdGlvbiBuKHQpe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKHQpfWNvbnN0IGk9KHQsZSk9PntBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKFJlZmxlY3Qub3duS2V5cyh0KSwocj0+e1JlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUscil8fFJlZmxlY3QuZGVmaW5lUHJvcGVydHkoZSxyLFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscikpfSkpfSxvPSh0LHIpPT57aWYoU3ltYm9sLml0ZXJhdG9yIGluIHQucHJvdG90eXBlKXtjb25zdCBpPW5ldyB0O2xldCBvO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoUmVmbGVjdC5vd25LZXlzKHQucHJvdG90eXBlKSwocz0+e2lmKCFSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSxzKSl7Y29uc3QgYT1SZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LnByb3RvdHlwZSxzKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLnZhbHVlJiYwPT09YS52YWx1ZS5sZW5ndGgmJlN5bWJvbC5pdGVyYXRvciBpbihGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5jYWxsKGEudmFsdWUsaSl8fHt9KSl7Y29uc3QgdD1uKGEudmFsdWUpO251bGw9PW8mJihvPW4odChpKS5uZXh0KSk7Y29uc3Qgcj1lKHQsbyk7YS52YWx1ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzKX19UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShyLnByb3RvdHlwZSxzLGEpfX0pKX1lbHNlIGkodC5wcm90b3R5cGUsci5wcm90b3R5cGUpO3JldHVybiBpKHQsciksT2JqZWN0LnNldFByb3RvdHlwZU9mKHIucHJvdG90eXBlLG51bGwpLE9iamVjdC5mcmVlemUoci5wcm90b3R5cGUpLE9iamVjdC5mcmVlemUocikscn0scz1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSksYT1SZWZsZWN0LmdldFByb3RvdHlwZU9mKHMoXCJcIikpO3QuZXhwb3J0cz17bWFrZVNhZmU6byxpbnRlcm5hbEJpbmRpbmcodCl7aWYoXCJjb25maWdcIj09PXQpcmV0dXJue2hhc0ludGw6ITF9O3Rocm93IG5ldyBFcnJvcihgdW5rbm93biBtb2R1bGU6IFwiJHt0fVwiYCl9LEFycmF5LEFycmF5SXNBcnJheTpBcnJheS5pc0FycmF5LEFycmF5UHJvdG90eXBlRmlsdGVyOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoQXJyYXkucHJvdG90eXBlLmZpbHRlciksQXJyYXlQcm90b3R5cGVGb3JFYWNoOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoQXJyYXkucHJvdG90eXBlLmZvckVhY2gpLEFycmF5UHJvdG90eXBlSW5jbHVkZXM6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUuaW5jbHVkZXMpLEFycmF5UHJvdG90eXBlSW5kZXhPZjpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKSxBcnJheVByb3RvdHlwZUpvaW46RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUuam9pbiksQXJyYXlQcm90b3R5cGVQb3A6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUucG9wKSxBcnJheVByb3RvdHlwZVB1c2g6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUucHVzaCksQXJyYXlQcm90b3R5cGVQdXNoQXBwbHk6RnVuY3Rpb24uYXBwbHkuYmluZChBcnJheS5wcm90b3R5cGUucHVzaCksQXJyYXlQcm90b3R5cGVTb3J0OkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoQXJyYXkucHJvdG90eXBlLnNvcnQpLEFycmF5UHJvdG90eXBlU3BsaWNlOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoQXJyYXkucHJvdG90eXBlLnNsaWNlKSxBcnJheVByb3RvdHlwZVVuc2hpZnQ6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUudW5zaGlmdCksQmlnSW50UHJvdG90eXBlVmFsdWVPZjpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEJpZ0ludC5wcm90b3R5cGUudmFsdWVPZiksQm9vbGVhblByb3RvdHlwZVZhbHVlT2Y6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mKSxEYXRlUHJvdG90eXBlR2V0VGltZTpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKERhdGUucHJvdG90eXBlLmdldFRpbWUpLERhdGVQcm90b3R5cGVUb0lTT1N0cmluZzpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKSxEYXRlUHJvdG90eXBlVG9TdHJpbmc6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChEYXRlLnByb3RvdHlwZS50b1N0cmluZyksRXJyb3JDYXB0dXJlU3RhY2tUcmFjZTpmdW5jdGlvbih0KXtjb25zdCBlPShuZXcgRXJyb3IpLnN0YWNrO3Quc3RhY2s9ZS5yZXBsYWNlKC8uKlxcbi4qLyxcIiQxXCIpfSxFcnJvclByb3RvdHlwZVRvU3RyaW5nOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nKSxGdW5jdGlvblByb3RvdHlwZUNhbGw6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChGdW5jdGlvbi5wcm90b3R5cGUuY2FsbCksRnVuY3Rpb25Qcm90b3R5cGVUb1N0cmluZzpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyksSlNPTlN0cmluZ2lmeTpKU09OLnN0cmluZ2lmeSxNYXBQcm90b3R5cGVHZXRTaXplOnIoTWFwLFwic2l6ZVwiKSxNYXBQcm90b3R5cGVFbnRyaWVzOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoTWFwLnByb3RvdHlwZS5lbnRyaWVzKSxNYXRoRmxvb3I6TWF0aC5mbG9vcixNYXRoTWF4Ok1hdGgubWF4LE1hdGhNaW46TWF0aC5taW4sTWF0aFJvdW5kOk1hdGgucm91bmQsTWF0aFNxcnQ6TWF0aC5zcXJ0LE51bWJlcixOdW1iZXJJc05hTjpOdW1iZXIuaXNOYU4sTnVtYmVyUGFyc2VGbG9hdDpOdW1iZXIucGFyc2VGbG9hdCxOdW1iZXJQYXJzZUludDpOdW1iZXIucGFyc2VJbnQsTnVtYmVyUHJvdG90eXBlVmFsdWVPZjpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKE51bWJlci5wcm90b3R5cGUudmFsdWVPZiksT2JqZWN0LE9iamVjdEFzc2lnbjpPYmplY3QuYXNzaWduLE9iamVjdENyZWF0ZTpPYmplY3QuY3JlYXRlLE9iamVjdERlZmluZVByb3BlcnR5Ok9iamVjdC5kZWZpbmVQcm9wZXJ0eSxPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLE9iamVjdEdldE93blByb3BlcnR5U3ltYm9sczpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLE9iamVjdEdldFByb3RvdHlwZU9mOk9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3RJczpPYmplY3QuaXMsT2JqZWN0S2V5czpPYmplY3Qua2V5cyxPYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eTpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLE9iamVjdFByb3RvdHlwZVByb3BlcnR5SXNFbnVtZXJhYmxlOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSksT2JqZWN0U2VhbDpPYmplY3Quc2VhbCxPYmplY3RTZXRQcm90b3R5cGVPZjpPYmplY3Quc2V0UHJvdG90eXBlT2YsUmVmbGVjdEFwcGx5OlJlZmxlY3QuYXBwbHksUmVmbGVjdE93bktleXM6UmVmbGVjdC5vd25LZXlzLFJlZ0V4cCxSZWdFeHBQcm90b3R5cGVUZXN0OkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoUmVnRXhwLnByb3RvdHlwZS50ZXN0KSxSZWdFeHBQcm90b3R5cGVUb1N0cmluZzpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcpLFNhZmVTdHJpbmdJdGVyYXRvcjplKHMsRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChhLm5leHQpKSxTYWZlTWFwOm8oTWFwLGNsYXNzIGV4dGVuZHMgTWFwe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfX0pLFNhZmVTZXQ6byhTZXQsY2xhc3MgZXh0ZW5kcyBTZXR7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9fSksU2V0UHJvdG90eXBlR2V0U2l6ZTpyKFNldCxcInNpemVcIiksU2V0UHJvdG90eXBlVmFsdWVzOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU2V0LnByb3RvdHlwZS52YWx1ZXMpLFN0cmluZyxTdHJpbmdQcm90b3R5cGVDaGFyQ29kZUF0OkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS5jaGFyQ29kZUF0KSxTdHJpbmdQcm90b3R5cGVDb2RlUG9pbnRBdDpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXQpLFN0cmluZ1Byb3RvdHlwZUVuZHNXaXRoOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aCksU3RyaW5nUHJvdG90eXBlSW5jbHVkZXM6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzKSxTdHJpbmdQcm90b3R5cGVOb3JtYWxpemU6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLm5vcm1hbGl6ZSksU3RyaW5nUHJvdG90eXBlUGFkRW5kOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS5wYWRFbmQpLFN0cmluZ1Byb3RvdHlwZVBhZFN0YXJ0OkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS5wYWRTdGFydCksU3RyaW5nUHJvdG90eXBlUmVwZWF0OkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQpLFN0cmluZ1Byb3RvdHlwZVJlcGxhY2U6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLFN0cmluZ1Byb3RvdHlwZVNsaWNlOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS5zbGljZSksU3RyaW5nUHJvdG90eXBlU3BsaXQ6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnNwbGl0KSxTdHJpbmdQcm90b3R5cGVUb0xvd2VyQ2FzZTpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUudG9Mb3dlckNhc2UpLFN0cmluZ1Byb3RvdHlwZVRyaW06RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnRyaW0pLFN0cmluZ1Byb3RvdHlwZVZhbHVlT2Y6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnZhbHVlT2YpLFN5bWJvbFByb3RvdHlwZVRvU3RyaW5nOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3ltYm9sLnByb3RvdHlwZS50b1N0cmluZyksU3ltYm9sUHJvdG90eXBlVmFsdWVPZjpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN5bWJvbC5wcm90b3R5cGUudmFsdWVPZiksU3ltYm9sSXRlcmF0b3I6U3ltYm9sLml0ZXJhdG9yLFN5bWJvbEZvcjpTeW1ib2wuZm9yLFN5bWJvbFRvU3RyaW5nVGFnOlN5bWJvbC50b1N0cmluZ1RhZyxUeXBlZEFycmF5UHJvdG90eXBlR2V0TGVuZ3RoOnQ9PnQuY29uc3RydWN0b3IucHJvdG90eXBlLl9fbG9va3VwR2V0dGVyX18oXCJsZW5ndGhcIikuY2FsbCh0KSxVaW50OEFycmF5LHVuY3VycnlUaGlzOm59fSwxNjE6dD0+e2NvbnN0IGU9bmV3IFdlYWtNYXA7Y2xhc3Mgcntjb25zdHJ1Y3Rvcih0LHIpe2NvbnN0IG49bmV3IFByb3h5KHQscik7cmV0dXJuIGUuc2V0KG4sW3Qscl0pLG59c3RhdGljIGdldFByb3h5RGV0YWlscyh0LHI9ITApe2NvbnN0IG49ZS5nZXQodCk7aWYobilyZXR1cm4gcj9uOm5bMF19fXQuZXhwb3J0cz17Z2V0UHJveHlEZXRhaWxzOnIuZ2V0UHJveHlEZXRhaWxzLmJpbmQociksUHJveHk6cn19LDg5MToodCxlLHIpPT57Y29uc3Qgbj1yKDE2MSksaT1TeW1ib2woXCJrUGVuZGluZ1wiKSxvPVN5bWJvbChcImtSZWplY3RlZFwiKTt0LmV4cG9ydHM9e2dldE93bk5vbkluZGV4UHJvcGVydGllczpmdW5jdGlvbih0LGU9Mil7Y29uc3Qgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSxuPVtdO2Zvcihjb25zdFt0LGldb2YgT2JqZWN0LmVudHJpZXMocikpaWYoIS9eKDB8WzEtOV1bMC05XSopJC8udGVzdCh0KXx8cGFyc2VJbnQodCwxMCk+PTIqKjMyLTEpe2lmKDI9PT1lJiYhaS5lbnVtZXJhYmxlKWNvbnRpbnVlO24ucHVzaCh0KX1mb3IoY29uc3QgciBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpKXtjb25zdCBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTsoMiE9PWV8fGkuZW51bWVyYWJsZSkmJm4ucHVzaChyKX1yZXR1cm4gbn0sZ2V0UHJvbWlzZURldGFpbHM6KCk9PltpLHZvaWQgMF0sZ2V0UHJveHlEZXRhaWxzOm4uZ2V0UHJveHlEZXRhaWxzLFByb3h5Om4uUHJveHksa1BlbmRpbmc6aSxrUmVqZWN0ZWQ6byxwcmV2aWV3RW50cmllczp0PT5bW10sITFdLGdldENvbnN0cnVjdG9yTmFtZSh0KXtpZighdHx8XCJvYmplY3RcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBvYmplY3RcIik7aWYodC5jb25zdHJ1Y3RvciYmdC5jb25zdHJ1Y3Rvci5uYW1lKXJldHVybiB0LmNvbnN0cnVjdG9yLm5hbWU7Y29uc3QgZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkubWF0Y2goL15cXFtvYmplY3QgKFteXFxdXSspXFxdLyk7cmV0dXJuIGU/ZVsxXTpcIk9iamVjdFwifSxnZXRFeHRlcm5hbFZhbHVlOigpPT5CaWdJbnQoMCkscHJvcGVydHlGaWx0ZXI6e0FMTF9QUk9QRVJUSUVTOjAsT05MWV9FTlVNRVJBQkxFOjJ9fX19LGU9e307ZnVuY3Rpb24gcihuKXt2YXIgaT1lW25dO2lmKHZvaWQgMCE9PWkpcmV0dXJuIGkuZXhwb3J0czt2YXIgbz1lW25dPXtleHBvcnRzOnt9fTtyZXR1cm4gdFtuXShvLG8uZXhwb3J0cyxyKSxvLmV4cG9ydHN9cmV0dXJuIHIuZz1mdW5jdGlvbigpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBnbG9iYWxUaGlzKXJldHVybiBnbG9iYWxUaGlzO3RyeXtyZXR1cm4gdGhpc3x8bmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKX1jYXRjaCh0KXtpZihcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93KXJldHVybiB3aW5kb3d9fSgpLHIoNDgpfSkoKX0sMTU1OnQ9Pnt2YXIgZSxyLG49dC5leHBvcnRzPXt9O2Z1bmN0aW9uIGkoKXt0aHJvdyBuZXcgRXJyb3IoXCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkXCIpfWZ1bmN0aW9uIG8oKXt0aHJvdyBuZXcgRXJyb3IoXCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWRcIil9ZnVuY3Rpb24gcyh0KXtpZihlPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dCh0LDApO2lmKChlPT09aXx8IWUpJiZzZXRUaW1lb3V0KXJldHVybiBlPXNldFRpbWVvdXQsc2V0VGltZW91dCh0LDApO3RyeXtyZXR1cm4gZSh0LDApfWNhdGNoKHIpe3RyeXtyZXR1cm4gZS5jYWxsKG51bGwsdCwwKX1jYXRjaChyKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCwwKX19fSFmdW5jdGlvbigpe3RyeXtlPVwiZnVuY3Rpb25cIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDppfWNhdGNoKHQpe2U9aX10cnl7cj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0Om99Y2F0Y2godCl7cj1vfX0oKTt2YXIgYSx1PVtdLGw9ITEsYz0tMTtmdW5jdGlvbiBmKCl7bCYmYSYmKGw9ITEsYS5sZW5ndGg/dT1hLmNvbmNhdCh1KTpjPS0xLHUubGVuZ3RoJiZoKCkpfWZ1bmN0aW9uIGgoKXtpZighbCl7dmFyIHQ9cyhmKTtsPSEwO2Zvcih2YXIgZT11Lmxlbmd0aDtlOyl7Zm9yKGE9dSx1PVtdOysrYzxlOylhJiZhW2NdLnJ1bigpO2M9LTEsZT11Lmxlbmd0aH1hPW51bGwsbD0hMSxmdW5jdGlvbih0KXtpZihyPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQodCk7aWYoKHI9PT1vfHwhcikmJmNsZWFyVGltZW91dClyZXR1cm4gcj1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KHQpO3RyeXtyKHQpfWNhdGNoKGUpe3RyeXtyZXR1cm4gci5jYWxsKG51bGwsdCl9Y2F0Y2goZSl7cmV0dXJuIHIuY2FsbCh0aGlzLHQpfX19KHQpfX1mdW5jdGlvbiBwKHQsZSl7dGhpcy5mdW49dCx0aGlzLmFycmF5PWV9ZnVuY3Rpb24gZCgpe31uLm5leHRUaWNrPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKWVbci0xXT1hcmd1bWVudHNbcl07dS5wdXNoKG5ldyBwKHQsZSkpLDEhPT11Lmxlbmd0aHx8bHx8cyhoKX0scC5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0sbi50aXRsZT1cImJyb3dzZXJcIixuLmJyb3dzZXI9ITAsbi5lbnY9e30sbi5hcmd2PVtdLG4udmVyc2lvbj1cIlwiLG4udmVyc2lvbnM9e30sbi5vbj1kLG4uYWRkTGlzdGVuZXI9ZCxuLm9uY2U9ZCxuLm9mZj1kLG4ucmVtb3ZlTGlzdGVuZXI9ZCxuLnJlbW92ZUFsbExpc3RlbmVycz1kLG4uZW1pdD1kLG4ucHJlcGVuZExpc3RlbmVyPWQsbi5wcmVwZW5kT25jZUxpc3RlbmVyPWQsbi5saXN0ZW5lcnM9ZnVuY3Rpb24odCl7cmV0dXJuW119LG4uYmluZGluZz1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoXCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZFwiKX0sbi5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm5cIi9cIn0sbi5jaGRpcj1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoXCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWRcIil9LG4udW1hc2s9ZnVuY3Rpb24oKXtyZXR1cm4gMH19LDI4MTp0PT57XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9e307ZnVuY3Rpb24gcih0LHIsbil7bnx8KG49RXJyb3IpO3ZhciBpPWZ1bmN0aW9uKHQpe3ZhciBlLG47ZnVuY3Rpb24gaShlLG4saSl7cmV0dXJuIHQuY2FsbCh0aGlzLGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2Ygcj9yOnIodCxlLG4pfShlLG4saSkpfHx0aGlzfXJldHVybiBuPXQsKGU9aSkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5fX3Byb3RvX189bixpfShuKTtpLnByb3RvdHlwZS5uYW1lPW4ubmFtZSxpLnByb3RvdHlwZS5jb2RlPXQsZVt0XT1pfWZ1bmN0aW9uIG4odCxlKXtpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgcj10Lmxlbmd0aDtyZXR1cm4gdD10Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0KX0pKSxyPjI/XCJvbmUgb2YgXCIuY29uY2F0KGUsXCIgXCIpLmNvbmNhdCh0LnNsaWNlKDAsci0xKS5qb2luKFwiLCBcIiksXCIsIG9yIFwiKSt0W3ItMV06Mj09PXI/XCJvbmUgb2YgXCIuY29uY2F0KGUsXCIgXCIpLmNvbmNhdCh0WzBdLFwiIG9yIFwiKS5jb25jYXQodFsxXSk6XCJvZiBcIi5jb25jYXQoZSxcIiBcIikuY29uY2F0KHRbMF0pfXJldHVyblwib2YgXCIuY29uY2F0KGUsXCIgXCIpLmNvbmNhdChTdHJpbmcodCkpfXIoXCJFUlJfSU5WQUxJRF9PUFRfVkFMVUVcIiwoZnVuY3Rpb24odCxlKXtyZXR1cm4nVGhlIHZhbHVlIFwiJytlKydcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCInK3QrJ1wiJ30pLFR5cGVFcnJvcikscihcIkVSUl9JTlZBTElEX0FSR19UWVBFXCIsKGZ1bmN0aW9uKHQsZSxyKXt2YXIgaSxvLHMsYSx1O2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlJiYobz1cIm5vdCBcIixlLnN1YnN0cigwLG8ubGVuZ3RoKT09PW8pPyhpPVwibXVzdCBub3QgYmVcIixlPWUucmVwbGFjZSgvXm5vdCAvLFwiXCIpKTppPVwibXVzdCBiZVwiLGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4odm9pZCAwPT09cnx8cj50Lmxlbmd0aCkmJihyPXQubGVuZ3RoKSx0LnN1YnN0cmluZyhyLWUubGVuZ3RoLHIpPT09ZX0odCxcIiBhcmd1bWVudFwiKSlzPVwiVGhlIFwiLmNvbmNhdCh0LFwiIFwiKS5jb25jYXQoaSxcIiBcIikuY29uY2F0KG4oZSxcInR5cGVcIikpO2Vsc2V7dmFyIGw9KFwibnVtYmVyXCIhPXR5cGVvZiB1JiYodT0wKSx1K1wiLlwiLmxlbmd0aD4oYT10KS5sZW5ndGh8fC0xPT09YS5pbmRleE9mKFwiLlwiLHUpP1wiYXJndW1lbnRcIjpcInByb3BlcnR5XCIpO3M9J1RoZSBcIicuY29uY2F0KHQsJ1wiICcpLmNvbmNhdChsLFwiIFwiKS5jb25jYXQoaSxcIiBcIikuY29uY2F0KG4oZSxcInR5cGVcIikpfXJldHVybiBzK1wiLiBSZWNlaXZlZCB0eXBlIFwiLmNvbmNhdCh0eXBlb2Ygcil9KSxUeXBlRXJyb3IpLHIoXCJFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GXCIsXCJzdHJlYW0ucHVzaCgpIGFmdGVyIEVPRlwiKSxyKFwiRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URURcIiwoZnVuY3Rpb24odCl7cmV0dXJuXCJUaGUgXCIrdCtcIiBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkXCJ9KSkscihcIkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFXCIsXCJQcmVtYXR1cmUgY2xvc2VcIikscihcIkVSUl9TVFJFQU1fREVTVFJPWUVEXCIsKGZ1bmN0aW9uKHQpe3JldHVyblwiQ2Fubm90IGNhbGwgXCIrdCtcIiBhZnRlciBhIHN0cmVhbSB3YXMgZGVzdHJveWVkXCJ9KSkscihcIkVSUl9NVUxUSVBMRV9DQUxMQkFDS1wiLFwiQ2FsbGJhY2sgY2FsbGVkIG11bHRpcGxlIHRpbWVzXCIpLHIoXCJFUlJfU1RSRUFNX0NBTk5PVF9QSVBFXCIsXCJDYW5ub3QgcGlwZSwgbm90IHJlYWRhYmxlXCIpLHIoXCJFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORFwiLFwid3JpdGUgYWZ0ZXIgZW5kXCIpLHIoXCJFUlJfU1RSRUFNX05VTExfVkFMVUVTXCIsXCJNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbVwiLFR5cGVFcnJvcikscihcIkVSUl9VTktOT1dOX0VOQ09ESU5HXCIsKGZ1bmN0aW9uKHQpe3JldHVyblwiVW5rbm93biBlbmNvZGluZzogXCIrdH0pLFR5cGVFcnJvcikscihcIkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlRcIixcInN0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50XCIpLHQuZXhwb3J0cy5xPWV9LDc1MzoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigxNTUpLGk9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgciBpbiB0KWUucHVzaChyKTtyZXR1cm4gZX07dC5leHBvcnRzPWM7dmFyIG89cig0ODEpLHM9cigyMjkpO3IoNzE3KShjLG8pO2Zvcih2YXIgYT1pKHMucHJvdG90eXBlKSx1PTA7dTxhLmxlbmd0aDt1Kyspe3ZhciBsPWFbdV07Yy5wcm90b3R5cGVbbF18fChjLnByb3RvdHlwZVtsXT1zLnByb3RvdHlwZVtsXSl9ZnVuY3Rpb24gYyh0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBjKSlyZXR1cm4gbmV3IGModCk7by5jYWxsKHRoaXMsdCkscy5jYWxsKHRoaXMsdCksdGhpcy5hbGxvd0hhbGZPcGVuPSEwLHQmJighMT09PXQucmVhZGFibGUmJih0aGlzLnJlYWRhYmxlPSExKSwhMT09PXQud3JpdGFibGUmJih0aGlzLndyaXRhYmxlPSExKSwhMT09PXQuYWxsb3dIYWxmT3BlbiYmKHRoaXMuYWxsb3dIYWxmT3Blbj0hMSx0aGlzLm9uY2UoXCJlbmRcIixmKSkpfWZ1bmN0aW9uIGYoKXt0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkfHxuLm5leHRUaWNrKGgsdGhpcyl9ZnVuY3Rpb24gaCh0KXt0LmVuZCgpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLnByb3RvdHlwZSxcIndyaXRhYmxlSGlnaFdhdGVyTWFya1wiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGMucHJvdG90eXBlLFwid3JpdGFibGVCdWZmZXJcIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYy5wcm90b3R5cGUsXCJ3cml0YWJsZUxlbmd0aFwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYy5wcm90b3R5cGUsXCJkZXN0cm95ZWRcIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24odCl7dm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPXQsdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9dCl9fSl9LDcyNToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dC5leHBvcnRzPWk7dmFyIG49cig2MDUpO2Z1bmN0aW9uIGkodCl7aWYoISh0aGlzIGluc3RhbmNlb2YgaSkpcmV0dXJuIG5ldyBpKHQpO24uY2FsbCh0aGlzLHQpfXIoNzE3KShpLG4pLGkucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe3IobnVsbCx0KX19LDQ4MToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG4saT1yKDE1NSk7dC5leHBvcnRzPVQsVC5SZWFkYWJsZVN0YXRlPUEscigxODcpLkV2ZW50RW1pdHRlcjt2YXIgbyxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGlzdGVuZXJzKGUpLmxlbmd0aH0sYT1yKDUwMyksdT1yKDc2NCkuQnVmZmVyLGw9ci5nLlVpbnQ4QXJyYXl8fGZ1bmN0aW9uKCl7fSxjPXIoNjY5KTtvPWMmJmMuZGVidWdsb2c/Yy5kZWJ1Z2xvZyhcInN0cmVhbVwiKTpmdW5jdGlvbigpe307dmFyIGYsaCxwLGQ9cigzMjcpLHk9cigxOTUpLGc9cig0NTcpLmdldEhpZ2hXYXRlck1hcmssYj1yKDI4MSkucSxtPWIuRVJSX0lOVkFMSURfQVJHX1RZUEUsdz1iLkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YsXz1iLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELEU9Yi5FUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UO3IoNzE3KShULGEpO3ZhciB2PXkuZXJyb3JPckRlc3Ryb3ksUz1bXCJlcnJvclwiLFwiY2xvc2VcIixcImRlc3Ryb3lcIixcInBhdXNlXCIsXCJyZXN1bWVcIl07ZnVuY3Rpb24gQSh0LGUsaSl7bj1ufHxyKDc1MyksdD10fHx7fSxcImJvb2xlYW5cIiE9dHlwZW9mIGkmJihpPWUgaW5zdGFuY2VvZiBuKSx0aGlzLm9iamVjdE1vZGU9ISF0Lm9iamVjdE1vZGUsaSYmKHRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVjdE1vZGV8fCEhdC5yZWFkYWJsZU9iamVjdE1vZGUpLHRoaXMuaGlnaFdhdGVyTWFyaz1nKHRoaXMsdCxcInJlYWRhYmxlSGlnaFdhdGVyTWFya1wiLGkpLHRoaXMuYnVmZmVyPW5ldyBkLHRoaXMubGVuZ3RoPTAsdGhpcy5waXBlcz1udWxsLHRoaXMucGlwZXNDb3VudD0wLHRoaXMuZmxvd2luZz1udWxsLHRoaXMuZW5kZWQ9ITEsdGhpcy5lbmRFbWl0dGVkPSExLHRoaXMucmVhZGluZz0hMSx0aGlzLnN5bmM9ITAsdGhpcy5uZWVkUmVhZGFibGU9ITEsdGhpcy5lbWl0dGVkUmVhZGFibGU9ITEsdGhpcy5yZWFkYWJsZUxpc3RlbmluZz0hMSx0aGlzLnJlc3VtZVNjaGVkdWxlZD0hMSx0aGlzLnBhdXNlZD0hMCx0aGlzLmVtaXRDbG9zZT0hMSE9PXQuZW1pdENsb3NlLHRoaXMuYXV0b0Rlc3Ryb3k9ISF0LmF1dG9EZXN0cm95LHRoaXMuZGVzdHJveWVkPSExLHRoaXMuZGVmYXVsdEVuY29kaW5nPXQuZGVmYXVsdEVuY29kaW5nfHxcInV0ZjhcIix0aGlzLmF3YWl0RHJhaW49MCx0aGlzLnJlYWRpbmdNb3JlPSExLHRoaXMuZGVjb2Rlcj1udWxsLHRoaXMuZW5jb2Rpbmc9bnVsbCx0LmVuY29kaW5nJiYoZnx8KGY9cig1NTMpLnMpLHRoaXMuZGVjb2Rlcj1uZXcgZih0LmVuY29kaW5nKSx0aGlzLmVuY29kaW5nPXQuZW5jb2RpbmcpfWZ1bmN0aW9uIFQodCl7aWYobj1ufHxyKDc1MyksISh0aGlzIGluc3RhbmNlb2YgVCkpcmV0dXJuIG5ldyBUKHQpO3ZhciBlPXRoaXMgaW5zdGFuY2VvZiBuO3RoaXMuX3JlYWRhYmxlU3RhdGU9bmV3IEEodCx0aGlzLGUpLHRoaXMucmVhZGFibGU9ITAsdCYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQucmVhZCYmKHRoaXMuX3JlYWQ9dC5yZWFkKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PXQuZGVzdHJveSkpLGEuY2FsbCh0aGlzKX1mdW5jdGlvbiBJKHQsZSxyLG4saSl7byhcInJlYWRhYmxlQWRkQ2h1bmtcIixlKTt2YXIgcyxhPXQuX3JlYWRhYmxlU3RhdGU7aWYobnVsbD09PWUpYS5yZWFkaW5nPSExLGZ1bmN0aW9uKHQsZSl7aWYobyhcIm9uRW9mQ2h1bmtcIiksIWUuZW5kZWQpe2lmKGUuZGVjb2Rlcil7dmFyIHI9ZS5kZWNvZGVyLmVuZCgpO3ImJnIubGVuZ3RoJiYoZS5idWZmZXIucHVzaChyKSxlLmxlbmd0aCs9ZS5vYmplY3RNb2RlPzE6ci5sZW5ndGgpfWUuZW5kZWQ9ITAsZS5zeW5jP1IodCk6KGUubmVlZFJlYWRhYmxlPSExLGUuZW1pdHRlZFJlYWRhYmxlfHwoZS5lbWl0dGVkUmVhZGFibGU9ITAsTih0KSkpfX0odCxhKTtlbHNlIGlmKGl8fChzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbjtyZXR1cm4gbj1lLHUuaXNCdWZmZXIobil8fG4gaW5zdGFuY2VvZiBsfHxcInN0cmluZ1wiPT10eXBlb2YgZXx8dm9pZCAwPT09ZXx8dC5vYmplY3RNb2RlfHwocj1uZXcgbShcImNodW5rXCIsW1wic3RyaW5nXCIsXCJCdWZmZXJcIixcIlVpbnQ4QXJyYXlcIl0sZSkpLHJ9KGEsZSkpLHMpdih0LHMpO2Vsc2UgaWYoYS5vYmplY3RNb2RlfHxlJiZlLmxlbmd0aD4wKWlmKFwic3RyaW5nXCI9PXR5cGVvZiBlfHxhLm9iamVjdE1vZGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PXUucHJvdG90eXBlfHwoZT1mdW5jdGlvbih0KXtyZXR1cm4gdS5mcm9tKHQpfShlKSksbilhLmVuZEVtaXR0ZWQ/dih0LG5ldyBFKTpCKHQsYSxlLCEwKTtlbHNlIGlmKGEuZW5kZWQpdih0LG5ldyB3KTtlbHNle2lmKGEuZGVzdHJveWVkKXJldHVybiExO2EucmVhZGluZz0hMSxhLmRlY29kZXImJiFyPyhlPWEuZGVjb2Rlci53cml0ZShlKSxhLm9iamVjdE1vZGV8fDAhPT1lLmxlbmd0aD9CKHQsYSxlLCExKTpMKHQsYSkpOkIodCxhLGUsITEpfWVsc2Ugbnx8KGEucmVhZGluZz0hMSxMKHQsYSkpO3JldHVybiFhLmVuZGVkJiYoYS5sZW5ndGg8YS5oaWdoV2F0ZXJNYXJrfHwwPT09YS5sZW5ndGgpfWZ1bmN0aW9uIEIodCxlLHIsbil7ZS5mbG93aW5nJiYwPT09ZS5sZW5ndGgmJiFlLnN5bmM/KGUuYXdhaXREcmFpbj0wLHQuZW1pdChcImRhdGFcIixyKSk6KGUubGVuZ3RoKz1lLm9iamVjdE1vZGU/MTpyLmxlbmd0aCxuP2UuYnVmZmVyLnVuc2hpZnQocik6ZS5idWZmZXIucHVzaChyKSxlLm5lZWRSZWFkYWJsZSYmUih0KSksTCh0LGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcImRlc3Ryb3llZFwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD10KX19KSxULnByb3RvdHlwZS5kZXN0cm95PXkuZGVzdHJveSxULnByb3RvdHlwZS5fdW5kZXN0cm95PXkudW5kZXN0cm95LFQucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKHQsZSl7ZSh0KX0sVC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0LGUpe3ZhciByLG49dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gbi5vYmplY3RNb2RlP3I9ITA6XCJzdHJpbmdcIj09dHlwZW9mIHQmJigoZT1lfHxuLmRlZmF1bHRFbmNvZGluZykhPT1uLmVuY29kaW5nJiYodD11LmZyb20odCxlKSxlPVwiXCIpLHI9ITApLEkodGhpcyx0LGUsITEscil9LFQucHJvdG90eXBlLnVuc2hpZnQ9ZnVuY3Rpb24odCl7cmV0dXJuIEkodGhpcyx0LG51bGwsITAsITEpfSxULnByb3RvdHlwZS5pc1BhdXNlZD1mdW5jdGlvbigpe3JldHVybiExPT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nfSxULnByb3RvdHlwZS5zZXRFbmNvZGluZz1mdW5jdGlvbih0KXtmfHwoZj1yKDU1Mykucyk7dmFyIGU9bmV3IGYodCk7dGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyPWUsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZz10aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIuZW5jb2Rpbmc7Zm9yKHZhciBuPXRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmhlYWQsaT1cIlwiO251bGwhPT1uOylpKz1lLndyaXRlKG4uZGF0YSksbj1uLm5leHQ7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmNsZWFyKCksXCJcIiE9PWkmJnRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLnB1c2goaSksdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGg9aS5sZW5ndGgsdGhpc307dmFyIE89MTA3Mzc0MTgyNDtmdW5jdGlvbiB4KHQsZSl7cmV0dXJuIHQ8PTB8fDA9PT1lLmxlbmd0aCYmZS5lbmRlZD8wOmUub2JqZWN0TW9kZT8xOnQhPXQ/ZS5mbG93aW5nJiZlLmxlbmd0aD9lLmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoOmUubGVuZ3RoOih0PmUuaGlnaFdhdGVyTWFyayYmKGUuaGlnaFdhdGVyTWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gdD49Tz90PU86KHQtLSx0fD10Pj4+MSx0fD10Pj4+Mix0fD10Pj4+NCx0fD10Pj4+OCx0fD10Pj4+MTYsdCsrKSx0fSh0KSksdDw9ZS5sZW5ndGg/dDplLmVuZGVkP2UubGVuZ3RoOihlLm5lZWRSZWFkYWJsZT0hMCwwKSl9ZnVuY3Rpb24gUih0KXt2YXIgZT10Ll9yZWFkYWJsZVN0YXRlO28oXCJlbWl0UmVhZGFibGVcIixlLm5lZWRSZWFkYWJsZSxlLmVtaXR0ZWRSZWFkYWJsZSksZS5uZWVkUmVhZGFibGU9ITEsZS5lbWl0dGVkUmVhZGFibGV8fChvKFwiZW1pdFJlYWRhYmxlXCIsZS5mbG93aW5nKSxlLmVtaXR0ZWRSZWFkYWJsZT0hMCxpLm5leHRUaWNrKE4sdCkpfWZ1bmN0aW9uIE4odCl7dmFyIGU9dC5fcmVhZGFibGVTdGF0ZTtvKFwiZW1pdFJlYWRhYmxlX1wiLGUuZGVzdHJveWVkLGUubGVuZ3RoLGUuZW5kZWQpLGUuZGVzdHJveWVkfHwhZS5sZW5ndGgmJiFlLmVuZGVkfHwodC5lbWl0KFwicmVhZGFibGVcIiksZS5lbWl0dGVkUmVhZGFibGU9ITEpLGUubmVlZFJlYWRhYmxlPSFlLmZsb3dpbmcmJiFlLmVuZGVkJiZlLmxlbmd0aDw9ZS5oaWdoV2F0ZXJNYXJrLGsodCl9ZnVuY3Rpb24gTCh0LGUpe2UucmVhZGluZ01vcmV8fChlLnJlYWRpbmdNb3JlPSEwLGkubmV4dFRpY2soUCx0LGUpKX1mdW5jdGlvbiBQKHQsZSl7Zm9yKDshZS5yZWFkaW5nJiYhZS5lbmRlZCYmKGUubGVuZ3RoPGUuaGlnaFdhdGVyTWFya3x8ZS5mbG93aW5nJiYwPT09ZS5sZW5ndGgpOyl7dmFyIHI9ZS5sZW5ndGg7aWYobyhcIm1heWJlUmVhZE1vcmUgcmVhZCAwXCIpLHQucmVhZCgwKSxyPT09ZS5sZW5ndGgpYnJlYWt9ZS5yZWFkaW5nTW9yZT0hMX1mdW5jdGlvbiBNKHQpe3ZhciBlPXQuX3JlYWRhYmxlU3RhdGU7ZS5yZWFkYWJsZUxpc3RlbmluZz10Lmxpc3RlbmVyQ291bnQoXCJyZWFkYWJsZVwiKT4wLGUucmVzdW1lU2NoZWR1bGVkJiYhZS5wYXVzZWQ/ZS5mbG93aW5nPSEwOnQubGlzdGVuZXJDb3VudChcImRhdGFcIik+MCYmdC5yZXN1bWUoKX1mdW5jdGlvbiBVKHQpe28oXCJyZWFkYWJsZSBuZXh0dGljayByZWFkIDBcIiksdC5yZWFkKDApfWZ1bmN0aW9uIGoodCxlKXtvKFwicmVzdW1lXCIsZS5yZWFkaW5nKSxlLnJlYWRpbmd8fHQucmVhZCgwKSxlLnJlc3VtZVNjaGVkdWxlZD0hMSx0LmVtaXQoXCJyZXN1bWVcIiksayh0KSxlLmZsb3dpbmcmJiFlLnJlYWRpbmcmJnQucmVhZCgwKX1mdW5jdGlvbiBrKHQpe3ZhciBlPXQuX3JlYWRhYmxlU3RhdGU7Zm9yKG8oXCJmbG93XCIsZS5mbG93aW5nKTtlLmZsb3dpbmcmJm51bGwhPT10LnJlYWQoKTspO31mdW5jdGlvbiAkKHQsZSl7cmV0dXJuIDA9PT1lLmxlbmd0aD9udWxsOihlLm9iamVjdE1vZGU/cj1lLmJ1ZmZlci5zaGlmdCgpOiF0fHx0Pj1lLmxlbmd0aD8ocj1lLmRlY29kZXI/ZS5idWZmZXIuam9pbihcIlwiKToxPT09ZS5idWZmZXIubGVuZ3RoP2UuYnVmZmVyLmZpcnN0KCk6ZS5idWZmZXIuY29uY2F0KGUubGVuZ3RoKSxlLmJ1ZmZlci5jbGVhcigpKTpyPWUuYnVmZmVyLmNvbnN1bWUodCxlLmRlY29kZXIpLHIpO3ZhciByfWZ1bmN0aW9uIEYodCl7dmFyIGU9dC5fcmVhZGFibGVTdGF0ZTtvKFwiZW5kUmVhZGFibGVcIixlLmVuZEVtaXR0ZWQpLGUuZW5kRW1pdHRlZHx8KGUuZW5kZWQ9ITAsaS5uZXh0VGljayhELGUsdCkpfWZ1bmN0aW9uIEQodCxlKXtpZihvKFwiZW5kUmVhZGFibGVOVFwiLHQuZW5kRW1pdHRlZCx0Lmxlbmd0aCksIXQuZW5kRW1pdHRlZCYmMD09PXQubGVuZ3RoJiYodC5lbmRFbWl0dGVkPSEwLGUucmVhZGFibGU9ITEsZS5lbWl0KFwiZW5kXCIpLHQuYXV0b0Rlc3Ryb3kpKXt2YXIgcj1lLl93cml0YWJsZVN0YXRlOyghcnx8ci5hdXRvRGVzdHJveSYmci5maW5pc2hlZCkmJmUuZGVzdHJveSgpfX1mdW5jdGlvbiBDKHQsZSl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG47cisrKWlmKHRbcl09PT1lKXJldHVybiByO3JldHVybi0xfVQucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24odCl7byhcInJlYWRcIix0KSx0PXBhcnNlSW50KHQsMTApO3ZhciBlPXRoaXMuX3JlYWRhYmxlU3RhdGUscj10O2lmKDAhPT10JiYoZS5lbWl0dGVkUmVhZGFibGU9ITEpLDA9PT10JiZlLm5lZWRSZWFkYWJsZSYmKCgwIT09ZS5oaWdoV2F0ZXJNYXJrP2UubGVuZ3RoPj1lLmhpZ2hXYXRlck1hcms6ZS5sZW5ndGg+MCl8fGUuZW5kZWQpKXJldHVybiBvKFwicmVhZDogZW1pdFJlYWRhYmxlXCIsZS5sZW5ndGgsZS5lbmRlZCksMD09PWUubGVuZ3RoJiZlLmVuZGVkP0YodGhpcyk6Uih0aGlzKSxudWxsO2lmKDA9PT0odD14KHQsZSkpJiZlLmVuZGVkKXJldHVybiAwPT09ZS5sZW5ndGgmJkYodGhpcyksbnVsbDt2YXIgbixpPWUubmVlZFJlYWRhYmxlO3JldHVybiBvKFwibmVlZCByZWFkYWJsZVwiLGkpLCgwPT09ZS5sZW5ndGh8fGUubGVuZ3RoLXQ8ZS5oaWdoV2F0ZXJNYXJrKSYmbyhcImxlbmd0aCBsZXNzIHRoYW4gd2F0ZXJtYXJrXCIsaT0hMCksZS5lbmRlZHx8ZS5yZWFkaW5nP28oXCJyZWFkaW5nIG9yIGVuZGVkXCIsaT0hMSk6aSYmKG8oXCJkbyByZWFkXCIpLGUucmVhZGluZz0hMCxlLnN5bmM9ITAsMD09PWUubGVuZ3RoJiYoZS5uZWVkUmVhZGFibGU9ITApLHRoaXMuX3JlYWQoZS5oaWdoV2F0ZXJNYXJrKSxlLnN5bmM9ITEsZS5yZWFkaW5nfHwodD14KHIsZSkpKSxudWxsPT09KG49dD4wPyQodCxlKTpudWxsKT8oZS5uZWVkUmVhZGFibGU9ZS5sZW5ndGg8PWUuaGlnaFdhdGVyTWFyayx0PTApOihlLmxlbmd0aC09dCxlLmF3YWl0RHJhaW49MCksMD09PWUubGVuZ3RoJiYoZS5lbmRlZHx8KGUubmVlZFJlYWRhYmxlPSEwKSxyIT09dCYmZS5lbmRlZCYmRih0aGlzKSksbnVsbCE9PW4mJnRoaXMuZW1pdChcImRhdGFcIixuKSxufSxULnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbih0KXt2KHRoaXMsbmV3IF8oXCJfcmVhZCgpXCIpKX0sVC5wcm90b3R5cGUucGlwZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMsbj10aGlzLl9yZWFkYWJsZVN0YXRlO3N3aXRjaChuLnBpcGVzQ291bnQpe2Nhc2UgMDpuLnBpcGVzPXQ7YnJlYWs7Y2FzZSAxOm4ucGlwZXM9W24ucGlwZXMsdF07YnJlYWs7ZGVmYXVsdDpuLnBpcGVzLnB1c2godCl9bi5waXBlc0NvdW50Kz0xLG8oXCJwaXBlIGNvdW50PSVkIG9wdHM9JWpcIixuLnBpcGVzQ291bnQsZSk7dmFyIGE9ZSYmITE9PT1lLmVuZHx8dD09PWkuc3Rkb3V0fHx0PT09aS5zdGRlcnI/eTp1O2Z1bmN0aW9uIHUoKXtvKFwib25lbmRcIiksdC5lbmQoKX1uLmVuZEVtaXR0ZWQ/aS5uZXh0VGljayhhKTpyLm9uY2UoXCJlbmRcIixhKSx0Lm9uKFwidW5waXBlXCIsKGZ1bmN0aW9uIGUoaSxzKXtvKFwib251bnBpcGVcIiksaT09PXImJnMmJiExPT09cy5oYXNVbnBpcGVkJiYocy5oYXNVbnBpcGVkPSEwLG8oXCJjbGVhbnVwXCIpLHQucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLHApLHQucmVtb3ZlTGlzdGVuZXIoXCJmaW5pc2hcIixkKSx0LnJlbW92ZUxpc3RlbmVyKFwiZHJhaW5cIixsKSx0LnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixoKSx0LnJlbW92ZUxpc3RlbmVyKFwidW5waXBlXCIsZSksci5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLHUpLHIucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIix5KSxyLnJlbW92ZUxpc3RlbmVyKFwiZGF0YVwiLGYpLGM9ITAsIW4uYXdhaXREcmFpbnx8dC5fd3JpdGFibGVTdGF0ZSYmIXQuX3dyaXRhYmxlU3RhdGUubmVlZERyYWlufHxsKCkpfSkpO3ZhciBsPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuX3JlYWRhYmxlU3RhdGU7byhcInBpcGVPbkRyYWluXCIsZS5hd2FpdERyYWluKSxlLmF3YWl0RHJhaW4mJmUuYXdhaXREcmFpbi0tLDA9PT1lLmF3YWl0RHJhaW4mJnModCxcImRhdGFcIikmJihlLmZsb3dpbmc9ITAsayh0KSl9fShyKTt0Lm9uKFwiZHJhaW5cIixsKTt2YXIgYz0hMTtmdW5jdGlvbiBmKGUpe28oXCJvbmRhdGFcIik7dmFyIGk9dC53cml0ZShlKTtvKFwiZGVzdC53cml0ZVwiLGkpLCExPT09aSYmKCgxPT09bi5waXBlc0NvdW50JiZuLnBpcGVzPT09dHx8bi5waXBlc0NvdW50PjEmJi0xIT09QyhuLnBpcGVzLHQpKSYmIWMmJihvKFwiZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlXCIsbi5hd2FpdERyYWluKSxuLmF3YWl0RHJhaW4rKyksci5wYXVzZSgpKX1mdW5jdGlvbiBoKGUpe28oXCJvbmVycm9yXCIsZSkseSgpLHQucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLGgpLDA9PT1zKHQsXCJlcnJvclwiKSYmdih0LGUpfWZ1bmN0aW9uIHAoKXt0LnJlbW92ZUxpc3RlbmVyKFwiZmluaXNoXCIsZCkseSgpfWZ1bmN0aW9uIGQoKXtvKFwib25maW5pc2hcIiksdC5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIscCkseSgpfWZ1bmN0aW9uIHkoKXtvKFwidW5waXBlXCIpLHIudW5waXBlKHQpfXJldHVybiByLm9uKFwiZGF0YVwiLGYpLGZ1bmN0aW9uKHQsZSxyKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnByZXBlbmRMaXN0ZW5lcilyZXR1cm4gdC5wcmVwZW5kTGlzdGVuZXIoZSxyKTt0Ll9ldmVudHMmJnQuX2V2ZW50cy5lcnJvcj9BcnJheS5pc0FycmF5KHQuX2V2ZW50cy5lcnJvcik/dC5fZXZlbnRzLmVycm9yLnVuc2hpZnQocik6dC5fZXZlbnRzLmVycm9yPVtyLHQuX2V2ZW50cy5lcnJvcl06dC5vbihlLHIpfSh0LFwiZXJyb3JcIixoKSx0Lm9uY2UoXCJjbG9zZVwiLHApLHQub25jZShcImZpbmlzaFwiLGQpLHQuZW1pdChcInBpcGVcIixyKSxuLmZsb3dpbmd8fChvKFwicGlwZSByZXN1bWVcIiksci5yZXN1bWUoKSksdH0sVC5wcm90b3R5cGUudW5waXBlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3JlYWRhYmxlU3RhdGUscj17aGFzVW5waXBlZDohMX07aWYoMD09PWUucGlwZXNDb3VudClyZXR1cm4gdGhpcztpZigxPT09ZS5waXBlc0NvdW50KXJldHVybiB0JiZ0IT09ZS5waXBlc3x8KHR8fCh0PWUucGlwZXMpLGUucGlwZXM9bnVsbCxlLnBpcGVzQ291bnQ9MCxlLmZsb3dpbmc9ITEsdCYmdC5lbWl0KFwidW5waXBlXCIsdGhpcyxyKSksdGhpcztpZighdCl7dmFyIG49ZS5waXBlcyxpPWUucGlwZXNDb3VudDtlLnBpcGVzPW51bGwsZS5waXBlc0NvdW50PTAsZS5mbG93aW5nPSExO2Zvcih2YXIgbz0wO288aTtvKyspbltvXS5lbWl0KFwidW5waXBlXCIsdGhpcyx7aGFzVW5waXBlZDohMX0pO3JldHVybiB0aGlzfXZhciBzPUMoZS5waXBlcyx0KTtyZXR1cm4tMT09PXN8fChlLnBpcGVzLnNwbGljZShzLDEpLGUucGlwZXNDb3VudC09MSwxPT09ZS5waXBlc0NvdW50JiYoZS5waXBlcz1lLnBpcGVzWzBdKSx0LmVtaXQoXCJ1bnBpcGVcIix0aGlzLHIpKSx0aGlzfSxULnByb3RvdHlwZS5vbj1mdW5jdGlvbih0LGUpe3ZhciByPWEucHJvdG90eXBlLm9uLmNhbGwodGhpcyx0LGUpLG49dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm5cImRhdGFcIj09PXQ/KG4ucmVhZGFibGVMaXN0ZW5pbmc9dGhpcy5saXN0ZW5lckNvdW50KFwicmVhZGFibGVcIik+MCwhMSE9PW4uZmxvd2luZyYmdGhpcy5yZXN1bWUoKSk6XCJyZWFkYWJsZVwiPT09dCYmKG4uZW5kRW1pdHRlZHx8bi5yZWFkYWJsZUxpc3RlbmluZ3x8KG4ucmVhZGFibGVMaXN0ZW5pbmc9bi5uZWVkUmVhZGFibGU9ITAsbi5mbG93aW5nPSExLG4uZW1pdHRlZFJlYWRhYmxlPSExLG8oXCJvbiByZWFkYWJsZVwiLG4ubGVuZ3RoLG4ucmVhZGluZyksbi5sZW5ndGg/Uih0aGlzKTpuLnJlYWRpbmd8fGkubmV4dFRpY2soVSx0aGlzKSkpLHJ9LFQucHJvdG90eXBlLmFkZExpc3RlbmVyPVQucHJvdG90eXBlLm9uLFQucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7dmFyIHI9YS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIuY2FsbCh0aGlzLHQsZSk7cmV0dXJuXCJyZWFkYWJsZVwiPT09dCYmaS5uZXh0VGljayhNLHRoaXMpLHJ9LFQucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbih0KXt2YXIgZT1hLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVyblwicmVhZGFibGVcIiE9PXQmJnZvaWQgMCE9PXR8fGkubmV4dFRpY2soTSx0aGlzKSxlfSxULnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiB0LmZsb3dpbmd8fChvKFwicmVzdW1lXCIpLHQuZmxvd2luZz0hdC5yZWFkYWJsZUxpc3RlbmluZyxmdW5jdGlvbih0LGUpe2UucmVzdW1lU2NoZWR1bGVkfHwoZS5yZXN1bWVTY2hlZHVsZWQ9ITAsaS5uZXh0VGljayhqLHQsZSkpfSh0aGlzLHQpKSx0LnBhdXNlZD0hMSx0aGlzfSxULnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe3JldHVybiBvKFwiY2FsbCBwYXVzZSBmbG93aW5nPSVqXCIsdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKSwhMSE9PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyYmKG8oXCJwYXVzZVwiKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ITEsdGhpcy5lbWl0KFwicGF1c2VcIikpLHRoaXMuX3JlYWRhYmxlU3RhdGUucGF1c2VkPSEwLHRoaXN9LFQucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxyPXRoaXMuX3JlYWRhYmxlU3RhdGUsbj0hMTtmb3IodmFyIGkgaW4gdC5vbihcImVuZFwiLChmdW5jdGlvbigpe2lmKG8oXCJ3cmFwcGVkIGVuZFwiKSxyLmRlY29kZXImJiFyLmVuZGVkKXt2YXIgdD1yLmRlY29kZXIuZW5kKCk7dCYmdC5sZW5ndGgmJmUucHVzaCh0KX1lLnB1c2gobnVsbCl9KSksdC5vbihcImRhdGFcIiwoZnVuY3Rpb24oaSl7byhcIndyYXBwZWQgZGF0YVwiKSxyLmRlY29kZXImJihpPXIuZGVjb2Rlci53cml0ZShpKSksci5vYmplY3RNb2RlJiZudWxsPT1pfHwoci5vYmplY3RNb2RlfHxpJiZpLmxlbmd0aCkmJihlLnB1c2goaSl8fChuPSEwLHQucGF1c2UoKSkpfSkpLHQpdm9pZCAwPT09dGhpc1tpXSYmXCJmdW5jdGlvblwiPT10eXBlb2YgdFtpXSYmKHRoaXNbaV09ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRbZV0uYXBwbHkodCxhcmd1bWVudHMpfX0oaSkpO2Zvcih2YXIgcz0wO3M8Uy5sZW5ndGg7cysrKXQub24oU1tzXSx0aGlzLmVtaXQuYmluZCh0aGlzLFNbc10pKTtyZXR1cm4gdGhpcy5fcmVhZD1mdW5jdGlvbihlKXtvKFwid3JhcHBlZCBfcmVhZFwiLGUpLG4mJihuPSExLHQucmVzdW1lKCkpfSx0aGlzfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJihULnByb3RvdHlwZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09aCYmKGg9cig4NTApKSxoKHRoaXMpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLFwicmVhZGFibGVIaWdoV2F0ZXJNYXJrXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsXCJyZWFkYWJsZUJ1ZmZlclwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsXCJyZWFkYWJsZUZsb3dpbmdcIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz10KX19KSxULl9mcm9tTGlzdD0kLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcInJlYWRhYmxlTGVuZ3RoXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RofX0pLFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmKFQuZnJvbT1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1wJiYocD1yKDE2NykpLHAoVCx0LGUpfSl9LDYwNToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dC5leHBvcnRzPWM7dmFyIG49cigyODEpLnEsaT1uLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELG89bi5FUlJfTVVMVElQTEVfQ0FMTEJBQ0sscz1uLkVSUl9UUkFOU0ZPUk1fQUxSRUFEWV9UUkFOU0ZPUk1JTkcsYT1uLkVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMCx1PXIoNzUzKTtmdW5jdGlvbiBsKHQsZSl7dmFyIHI9dGhpcy5fdHJhbnNmb3JtU3RhdGU7ci50cmFuc2Zvcm1pbmc9ITE7dmFyIG49ci53cml0ZWNiO2lmKG51bGw9PT1uKXJldHVybiB0aGlzLmVtaXQoXCJlcnJvclwiLG5ldyBvKTtyLndyaXRlY2h1bms9bnVsbCxyLndyaXRlY2I9bnVsbCxudWxsIT1lJiZ0aGlzLnB1c2goZSksbih0KTt2YXIgaT10aGlzLl9yZWFkYWJsZVN0YXRlO2kucmVhZGluZz0hMSwoaS5uZWVkUmVhZGFibGV8fGkubGVuZ3RoPGkuaGlnaFdhdGVyTWFyaykmJnRoaXMuX3JlYWQoaS5oaWdoV2F0ZXJNYXJrKX1mdW5jdGlvbiBjKHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGMpKXJldHVybiBuZXcgYyh0KTt1LmNhbGwodGhpcyx0KSx0aGlzLl90cmFuc2Zvcm1TdGF0ZT17YWZ0ZXJUcmFuc2Zvcm06bC5iaW5kKHRoaXMpLG5lZWRUcmFuc2Zvcm06ITEsdHJhbnNmb3JtaW5nOiExLHdyaXRlY2I6bnVsbCx3cml0ZWNodW5rOm51bGwsd3JpdGVlbmNvZGluZzpudWxsfSx0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZT0hMCx0aGlzLl9yZWFkYWJsZVN0YXRlLnN5bmM9ITEsdCYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQudHJhbnNmb3JtJiYodGhpcy5fdHJhbnNmb3JtPXQudHJhbnNmb3JtKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmZsdXNoJiYodGhpcy5fZmx1c2g9dC5mbHVzaCkpLHRoaXMub24oXCJwcmVmaW5pc2hcIixmKX1mdW5jdGlvbiBmKCl7dmFyIHQ9dGhpcztcImZ1bmN0aW9uXCIhPXR5cGVvZiB0aGlzLl9mbHVzaHx8dGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ/aCh0aGlzLG51bGwsbnVsbCk6dGhpcy5fZmx1c2goKGZ1bmN0aW9uKGUscil7aCh0LGUscil9KSl9ZnVuY3Rpb24gaCh0LGUscil7aWYoZSlyZXR1cm4gdC5lbWl0KFwiZXJyb3JcIixlKTtpZihudWxsIT1yJiZ0LnB1c2gociksdC5fd3JpdGFibGVTdGF0ZS5sZW5ndGgpdGhyb3cgbmV3IGE7aWYodC5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKXRocm93IG5ldyBzO3JldHVybiB0LnB1c2gobnVsbCl9cig3MTcpKGMsdSksYy5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtPSExLHUucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLHQsZSl9LGMucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe3IobmV3IGkoXCJfdHJhbnNmb3JtKClcIikpfSxjLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMuX3RyYW5zZm9ybVN0YXRlO2lmKG4ud3JpdGVjYj1yLG4ud3JpdGVjaHVuaz10LG4ud3JpdGVlbmNvZGluZz1lLCFuLnRyYW5zZm9ybWluZyl7dmFyIGk9dGhpcy5fcmVhZGFibGVTdGF0ZTsobi5uZWVkVHJhbnNmb3JtfHxpLm5lZWRSZWFkYWJsZXx8aS5sZW5ndGg8aS5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZChpLmhpZ2hXYXRlck1hcmspfX0sYy5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdHJhbnNmb3JtU3RhdGU7bnVsbD09PWUud3JpdGVjaHVua3x8ZS50cmFuc2Zvcm1pbmc/ZS5uZWVkVHJhbnNmb3JtPSEwOihlLnRyYW5zZm9ybWluZz0hMCx0aGlzLl90cmFuc2Zvcm0oZS53cml0ZWNodW5rLGUud3JpdGVlbmNvZGluZyxlLmFmdGVyVHJhbnNmb3JtKSl9LGMucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKHQsZSl7dS5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLHQsKGZ1bmN0aW9uKHQpe2UodCl9KSl9fSwyMjk6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO3ZhciBuLGk9cigxNTUpO2Z1bmN0aW9uIG8odCl7dmFyIGU9dGhpczt0aGlzLm5leHQ9bnVsbCx0aGlzLmVudHJ5PW51bGwsdGhpcy5maW5pc2g9ZnVuY3Rpb24oKXshZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQuZW50cnk7Zm9yKHQuZW50cnk9bnVsbDtuOyl7dmFyIGk9bi5jYWxsYmFjaztlLnBlbmRpbmdjYi0tLGkodW5kZWZpbmVkKSxuPW4ubmV4dH1lLmNvcmtlZFJlcXVlc3RzRnJlZS5uZXh0PXR9KGUsdCl9fXQuZXhwb3J0cz1ULFQuV3JpdGFibGVTdGF0ZT1BO3ZhciBzLGE9e2RlcHJlY2F0ZTpyKDkyNyl9LHU9cig1MDMpLGw9cig3NjQpLkJ1ZmZlcixjPXIuZy5VaW50OEFycmF5fHxmdW5jdGlvbigpe30sZj1yKDE5NSksaD1yKDQ1NykuZ2V0SGlnaFdhdGVyTWFyayxwPXIoMjgxKS5xLGQ9cC5FUlJfSU5WQUxJRF9BUkdfVFlQRSx5PXAuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsZz1wLkVSUl9NVUxUSVBMRV9DQUxMQkFDSyxiPXAuRVJSX1NUUkVBTV9DQU5OT1RfUElQRSxtPXAuRVJSX1NUUkVBTV9ERVNUUk9ZRUQsdz1wLkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMsXz1wLkVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5ELEU9cC5FUlJfVU5LTk9XTl9FTkNPRElORyx2PWYuZXJyb3JPckRlc3Ryb3k7ZnVuY3Rpb24gUygpe31mdW5jdGlvbiBBKHQsZSxzKXtuPW58fHIoNzUzKSx0PXR8fHt9LFwiYm9vbGVhblwiIT10eXBlb2YgcyYmKHM9ZSBpbnN0YW5jZW9mIG4pLHRoaXMub2JqZWN0TW9kZT0hIXQub2JqZWN0TW9kZSxzJiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISF0LndyaXRhYmxlT2JqZWN0TW9kZSksdGhpcy5oaWdoV2F0ZXJNYXJrPWgodGhpcyx0LFwid3JpdGFibGVIaWdoV2F0ZXJNYXJrXCIscyksdGhpcy5maW5hbENhbGxlZD0hMSx0aGlzLm5lZWREcmFpbj0hMSx0aGlzLmVuZGluZz0hMSx0aGlzLmVuZGVkPSExLHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5kZXN0cm95ZWQ9ITE7dmFyIGE9ITE9PT10LmRlY29kZVN0cmluZ3M7dGhpcy5kZWNvZGVTdHJpbmdzPSFhLHRoaXMuZGVmYXVsdEVuY29kaW5nPXQuZGVmYXVsdEVuY29kaW5nfHxcInV0ZjhcIix0aGlzLmxlbmd0aD0wLHRoaXMud3JpdGluZz0hMSx0aGlzLmNvcmtlZD0wLHRoaXMuc3luYz0hMCx0aGlzLmJ1ZmZlclByb2Nlc3Npbmc9ITEsdGhpcy5vbndyaXRlPWZ1bmN0aW9uKHQpeyFmdW5jdGlvbih0LGUpe3ZhciByPXQuX3dyaXRhYmxlU3RhdGUsbj1yLnN5bmMsbz1yLndyaXRlY2I7aWYoXCJmdW5jdGlvblwiIT10eXBlb2Ygbyl0aHJvdyBuZXcgZztpZihmdW5jdGlvbih0KXt0LndyaXRpbmc9ITEsdC53cml0ZWNiPW51bGwsdC5sZW5ndGgtPXQud3JpdGVsZW4sdC53cml0ZWxlbj0wfShyKSxlKSFmdW5jdGlvbih0LGUscixuLG8pey0tZS5wZW5kaW5nY2Iscj8oaS5uZXh0VGljayhvLG4pLGkubmV4dFRpY2soTix0LGUpLHQuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLHYodCxuKSk6KG8obiksdC5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsdih0LG4pLE4odCxlKSl9KHQscixuLGUsbyk7ZWxzZXt2YXIgcz14KHIpfHx0LmRlc3Ryb3llZDtzfHxyLmNvcmtlZHx8ci5idWZmZXJQcm9jZXNzaW5nfHwhci5idWZmZXJlZFJlcXVlc3R8fE8odCxyKSxuP2kubmV4dFRpY2soQix0LHIscyxvKTpCKHQscixzLG8pfX0oZSx0KX0sdGhpcy53cml0ZWNiPW51bGwsdGhpcy53cml0ZWxlbj0wLHRoaXMuYnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5wZW5kaW5nY2I9MCx0aGlzLnByZWZpbmlzaGVkPSExLHRoaXMuZXJyb3JFbWl0dGVkPSExLHRoaXMuZW1pdENsb3NlPSExIT09dC5lbWl0Q2xvc2UsdGhpcy5hdXRvRGVzdHJveT0hIXQuYXV0b0Rlc3Ryb3ksdGhpcy5idWZmZXJlZFJlcXVlc3RDb3VudD0wLHRoaXMuY29ya2VkUmVxdWVzdHNGcmVlPW5ldyBvKHRoaXMpfWZ1bmN0aW9uIFQodCl7dmFyIGU9dGhpcyBpbnN0YW5jZW9mKG49bnx8cig3NTMpKTtpZighZSYmIXMuY2FsbChULHRoaXMpKXJldHVybiBuZXcgVCh0KTt0aGlzLl93cml0YWJsZVN0YXRlPW5ldyBBKHQsdGhpcyxlKSx0aGlzLndyaXRhYmxlPSEwLHQmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LndyaXRlJiYodGhpcy5fd3JpdGU9dC53cml0ZSksXCJmdW5jdGlvblwiPT10eXBlb2YgdC53cml0ZXYmJih0aGlzLl93cml0ZXY9dC53cml0ZXYpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZGVzdHJveSYmKHRoaXMuX2Rlc3Ryb3k9dC5kZXN0cm95KSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmZpbmFsJiYodGhpcy5fZmluYWw9dC5maW5hbCkpLHUuY2FsbCh0aGlzKX1mdW5jdGlvbiBJKHQsZSxyLG4saSxvLHMpe2Uud3JpdGVsZW49bixlLndyaXRlY2I9cyxlLndyaXRpbmc9ITAsZS5zeW5jPSEwLGUuZGVzdHJveWVkP2Uub253cml0ZShuZXcgbShcIndyaXRlXCIpKTpyP3QuX3dyaXRldihpLGUub253cml0ZSk6dC5fd3JpdGUoaSxvLGUub253cml0ZSksZS5zeW5jPSExfWZ1bmN0aW9uIEIodCxlLHIsbil7cnx8ZnVuY3Rpb24odCxlKXswPT09ZS5sZW5ndGgmJmUubmVlZERyYWluJiYoZS5uZWVkRHJhaW49ITEsdC5lbWl0KFwiZHJhaW5cIikpfSh0LGUpLGUucGVuZGluZ2NiLS0sbigpLE4odCxlKX1mdW5jdGlvbiBPKHQsZSl7ZS5idWZmZXJQcm9jZXNzaW5nPSEwO3ZhciByPWUuYnVmZmVyZWRSZXF1ZXN0O2lmKHQuX3dyaXRldiYmciYmci5uZXh0KXt2YXIgbj1lLmJ1ZmZlcmVkUmVxdWVzdENvdW50LGk9bmV3IEFycmF5KG4pLHM9ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU7cy5lbnRyeT1yO2Zvcih2YXIgYT0wLHU9ITA7cjspaVthXT1yLHIuaXNCdWZ8fCh1PSExKSxyPXIubmV4dCxhKz0xO2kuYWxsQnVmZmVycz11LEkodCxlLCEwLGUubGVuZ3RoLGksXCJcIixzLmZpbmlzaCksZS5wZW5kaW5nY2IrKyxlLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCxzLm5leHQ/KGUuY29ya2VkUmVxdWVzdHNGcmVlPXMubmV4dCxzLm5leHQ9bnVsbCk6ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IG8oZSksZS5idWZmZXJlZFJlcXVlc3RDb3VudD0wfWVsc2V7Zm9yKDtyOyl7dmFyIGw9ci5jaHVuayxjPXIuZW5jb2RpbmcsZj1yLmNhbGxiYWNrO2lmKEkodCxlLCExLGUub2JqZWN0TW9kZT8xOmwubGVuZ3RoLGwsYyxmKSxyPXIubmV4dCxlLmJ1ZmZlcmVkUmVxdWVzdENvdW50LS0sZS53cml0aW5nKWJyZWFrfW51bGw9PT1yJiYoZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwpfWUuYnVmZmVyZWRSZXF1ZXN0PXIsZS5idWZmZXJQcm9jZXNzaW5nPSExfWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQuZW5kaW5nJiYwPT09dC5sZW5ndGgmJm51bGw9PT10LmJ1ZmZlcmVkUmVxdWVzdCYmIXQuZmluaXNoZWQmJiF0LndyaXRpbmd9ZnVuY3Rpb24gUih0LGUpe3QuX2ZpbmFsKChmdW5jdGlvbihyKXtlLnBlbmRpbmdjYi0tLHImJnYodCxyKSxlLnByZWZpbmlzaGVkPSEwLHQuZW1pdChcInByZWZpbmlzaFwiKSxOKHQsZSl9KSl9ZnVuY3Rpb24gTih0LGUpe3ZhciByPXgoZSk7aWYociYmKGZ1bmN0aW9uKHQsZSl7ZS5wcmVmaW5pc2hlZHx8ZS5maW5hbENhbGxlZHx8KFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQuX2ZpbmFsfHxlLmRlc3Ryb3llZD8oZS5wcmVmaW5pc2hlZD0hMCx0LmVtaXQoXCJwcmVmaW5pc2hcIikpOihlLnBlbmRpbmdjYisrLGUuZmluYWxDYWxsZWQ9ITAsaS5uZXh0VGljayhSLHQsZSkpKX0odCxlKSwwPT09ZS5wZW5kaW5nY2ImJihlLmZpbmlzaGVkPSEwLHQuZW1pdChcImZpbmlzaFwiKSxlLmF1dG9EZXN0cm95KSkpe3ZhciBuPXQuX3JlYWRhYmxlU3RhdGU7KCFufHxuLmF1dG9EZXN0cm95JiZuLmVuZEVtaXR0ZWQpJiZ0LmRlc3Ryb3koKX1yZXR1cm4gcn1yKDcxNykoVCx1KSxBLnByb3RvdHlwZS5nZXRCdWZmZXI9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5idWZmZXJlZFJlcXVlc3QsZT1bXTt0OyllLnB1c2godCksdD10Lm5leHQ7cmV0dXJuIGV9LGZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3RvdHlwZSxcImJ1ZmZlclwiLHtnZXQ6YS5kZXByZWNhdGUoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QnVmZmVyKCl9KSxcIl93cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyIGluc3RlYWQuXCIsXCJERVAwMDAzXCIpfSl9Y2F0Y2godCl7fX0oKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5oYXNJbnN0YW5jZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0/KHM9RnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0sT2JqZWN0LmRlZmluZVByb3BlcnR5KFQsU3ltYm9sLmhhc0luc3RhbmNlLHt2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4hIXMuY2FsbCh0aGlzLHQpfHx0aGlzPT09VCYmdCYmdC5fd3JpdGFibGVTdGF0ZSBpbnN0YW5jZW9mIEF9fSkpOnM9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB0aGlzfSxULnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKCl7dih0aGlzLG5ldyBiKX0sVC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLG89dGhpcy5fd3JpdGFibGVTdGF0ZSxzPSExLGE9IW8ub2JqZWN0TW9kZSYmKG49dCxsLmlzQnVmZmVyKG4pfHxuIGluc3RhbmNlb2YgYyk7cmV0dXJuIGEmJiFsLmlzQnVmZmVyKHQpJiYodD1mdW5jdGlvbih0KXtyZXR1cm4gbC5mcm9tKHQpfSh0KSksXCJmdW5jdGlvblwiPT10eXBlb2YgZSYmKHI9ZSxlPW51bGwpLGE/ZT1cImJ1ZmZlclwiOmV8fChlPW8uZGVmYXVsdEVuY29kaW5nKSxcImZ1bmN0aW9uXCIhPXR5cGVvZiByJiYocj1TKSxvLmVuZGluZz9mdW5jdGlvbih0LGUpe3ZhciByPW5ldyBfO3YodCxyKSxpLm5leHRUaWNrKGUscil9KHRoaXMscik6KGF8fGZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBvO3JldHVybiBudWxsPT09cj9vPW5ldyB3Olwic3RyaW5nXCI9PXR5cGVvZiByfHxlLm9iamVjdE1vZGV8fChvPW5ldyBkKFwiY2h1bmtcIixbXCJzdHJpbmdcIixcIkJ1ZmZlclwiXSxyKSksIW98fCh2KHQsbyksaS5uZXh0VGljayhuLG8pLCExKX0odGhpcyxvLHQscikpJiYoby5wZW5kaW5nY2IrKyxzPWZ1bmN0aW9uKHQsZSxyLG4saSxvKXtpZighcil7dmFyIHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0Lm9iamVjdE1vZGV8fCExPT09dC5kZWNvZGVTdHJpbmdzfHxcInN0cmluZ1wiIT10eXBlb2YgZXx8KGU9bC5mcm9tKGUscikpLGV9KGUsbixpKTtuIT09cyYmKHI9ITAsaT1cImJ1ZmZlclwiLG49cyl9dmFyIGE9ZS5vYmplY3RNb2RlPzE6bi5sZW5ndGg7ZS5sZW5ndGgrPWE7dmFyIHU9ZS5sZW5ndGg8ZS5oaWdoV2F0ZXJNYXJrO2lmKHV8fChlLm5lZWREcmFpbj0hMCksZS53cml0aW5nfHxlLmNvcmtlZCl7dmFyIGM9ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O2UubGFzdEJ1ZmZlcmVkUmVxdWVzdD17Y2h1bms6bixlbmNvZGluZzppLGlzQnVmOnIsY2FsbGJhY2s6byxuZXh0Om51bGx9LGM/Yy5uZXh0PWUubGFzdEJ1ZmZlcmVkUmVxdWVzdDplLmJ1ZmZlcmVkUmVxdWVzdD1lLmxhc3RCdWZmZXJlZFJlcXVlc3QsZS5idWZmZXJlZFJlcXVlc3RDb3VudCs9MX1lbHNlIEkodCxlLCExLGEsbixpLG8pO3JldHVybiB1fSh0aGlzLG8sYSx0LGUscikpLHN9LFQucHJvdG90eXBlLmNvcms9ZnVuY3Rpb24oKXt0aGlzLl93cml0YWJsZVN0YXRlLmNvcmtlZCsrfSxULnByb3RvdHlwZS51bmNvcms9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl93cml0YWJsZVN0YXRlO3QuY29ya2VkJiYodC5jb3JrZWQtLSx0LndyaXRpbmd8fHQuY29ya2VkfHx0LmJ1ZmZlclByb2Nlc3Npbmd8fCF0LmJ1ZmZlcmVkUmVxdWVzdHx8Tyh0aGlzLHQpKX0sVC5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nPWZ1bmN0aW9uKHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0JiYodD10LnRvTG93ZXJDYXNlKCkpLCEoW1wiaGV4XCIsXCJ1dGY4XCIsXCJ1dGYtOFwiLFwiYXNjaWlcIixcImJpbmFyeVwiLFwiYmFzZTY0XCIsXCJ1Y3MyXCIsXCJ1Y3MtMlwiLFwidXRmMTZsZVwiLFwidXRmLTE2bGVcIixcInJhd1wiXS5pbmRleE9mKCh0K1wiXCIpLnRvTG93ZXJDYXNlKCkpPi0xKSl0aHJvdyBuZXcgRSh0KTtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2Rpbmc9dCx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsXCJ3cml0YWJsZUJ1ZmZlclwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmdldEJ1ZmZlcigpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcIndyaXRhYmxlSGlnaFdhdGVyTWFya1wiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksVC5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKHQsZSxyKXtyKG5ldyB5KFwiX3dyaXRlKClcIikpfSxULnByb3RvdHlwZS5fd3JpdGV2PW51bGwsVC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLl93cml0YWJsZVN0YXRlO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/KHI9dCx0PW51bGwsZT1udWxsKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiYocj1lLGU9bnVsbCksbnVsbCE9dCYmdGhpcy53cml0ZSh0LGUpLG4uY29ya2VkJiYobi5jb3JrZWQ9MSx0aGlzLnVuY29yaygpKSxuLmVuZGluZ3x8ZnVuY3Rpb24odCxlLHIpe2UuZW5kaW5nPSEwLE4odCxlKSxyJiYoZS5maW5pc2hlZD9pLm5leHRUaWNrKHIpOnQub25jZShcImZpbmlzaFwiLHIpKSxlLmVuZGVkPSEwLHQud3JpdGFibGU9ITF9KHRoaXMsbixyKSx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsXCJ3cml0YWJsZUxlbmd0aFwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsXCJkZXN0cm95ZWRcIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbih0KXt0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9dCl9fSksVC5wcm90b3R5cGUuZGVzdHJveT1mLmRlc3Ryb3ksVC5wcm90b3R5cGUuX3VuZGVzdHJveT1mLnVuZGVzdHJveSxULnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbih0LGUpe2UodCl9fSw4NTA6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO3ZhciBuLGk9cigxNTUpO2Z1bmN0aW9uIG8odCxlLHIpe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09cix0fXZhciBzPXIoNjEwKSxhPVN5bWJvbChcImxhc3RSZXNvbHZlXCIpLHU9U3ltYm9sKFwibGFzdFJlamVjdFwiKSxsPVN5bWJvbChcImVycm9yXCIpLGM9U3ltYm9sKFwiZW5kZWRcIiksZj1TeW1ib2woXCJsYXN0UHJvbWlzZVwiKSxoPVN5bWJvbChcImhhbmRsZVByb21pc2VcIikscD1TeW1ib2woXCJzdHJlYW1cIik7ZnVuY3Rpb24gZCh0LGUpe3JldHVybnt2YWx1ZTp0LGRvbmU6ZX19ZnVuY3Rpb24geSh0KXt2YXIgZT10W2FdO2lmKG51bGwhPT1lKXt2YXIgcj10W3BdLnJlYWQoKTtudWxsIT09ciYmKHRbZl09bnVsbCx0W2FdPW51bGwsdFt1XT1udWxsLGUoZChyLCExKSkpfX1mdW5jdGlvbiBnKHQpe2kubmV4dFRpY2soeSx0KX12YXIgYj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoKGZ1bmN0aW9uKCl7fSkpLG09T2JqZWN0LnNldFByb3RvdHlwZU9mKChvKG49e2dldCBzdHJlYW0oKXtyZXR1cm4gdGhpc1twXX0sbmV4dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzW2xdO2lmKG51bGwhPT1lKXJldHVybiBQcm9taXNlLnJlamVjdChlKTtpZih0aGlzW2NdKXJldHVybiBQcm9taXNlLnJlc29sdmUoZCh2b2lkIDAsITApKTtpZih0aGlzW3BdLmRlc3Ryb3llZClyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUscil7aS5uZXh0VGljaygoZnVuY3Rpb24oKXt0W2xdP3IodFtsXSk6ZShkKHZvaWQgMCwhMCkpfSkpfSkpO3ZhciByLG49dGhpc1tmXTtpZihuKXI9bmV3IFByb21pc2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXt0LnRoZW4oKGZ1bmN0aW9uKCl7ZVtjXT9yKGQodm9pZCAwLCEwKSk6ZVtoXShyLG4pfSksbil9fShuLHRoaXMpKTtlbHNle3ZhciBvPXRoaXNbcF0ucmVhZCgpO2lmKG51bGwhPT1vKXJldHVybiBQcm9taXNlLnJlc29sdmUoZChvLCExKSk7cj1uZXcgUHJvbWlzZSh0aGlzW2hdKX1yZXR1cm4gdGhpc1tmXT1yLHJ9fSxTeW1ib2wuYXN5bmNJdGVyYXRvciwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxvKG4sXCJyZXR1cm5cIiwoZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxyKXt0W3BdLmRlc3Ryb3kobnVsbCwoZnVuY3Rpb24odCl7dD9yKHQpOmUoZCh2b2lkIDAsITApKX0pKX0pKX0pKSxuKSxiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUscj1PYmplY3QuY3JlYXRlKG0sKG8oZT17fSxwLHt2YWx1ZTp0LHdyaXRhYmxlOiEwfSksbyhlLGEse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxvKGUsdSx7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLG8oZSxsLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksbyhlLGMse3ZhbHVlOnQuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCx3cml0YWJsZTohMH0pLG8oZSxoLHt2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBuPXJbcF0ucmVhZCgpO24/KHJbZl09bnVsbCxyW2FdPW51bGwsclt1XT1udWxsLHQoZChuLCExKSkpOihyW2FdPXQsclt1XT1lKX0sd3JpdGFibGU6ITB9KSxlKSk7cmV0dXJuIHJbZl09bnVsbCxzKHQsKGZ1bmN0aW9uKHQpe2lmKHQmJlwiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0VcIiE9PXQuY29kZSl7dmFyIGU9clt1XTtyZXR1cm4gbnVsbCE9PWUmJihyW2ZdPW51bGwsclthXT1udWxsLHJbdV09bnVsbCxlKHQpKSx2b2lkKHJbbF09dCl9dmFyIG49clthXTtudWxsIT09biYmKHJbZl09bnVsbCxyW2FdPW51bGwsclt1XT1udWxsLG4oZCh2b2lkIDAsITApKSkscltjXT0hMH0pKSx0Lm9uKFwicmVhZGFibGVcIixnLmJpbmQobnVsbCxyKSkscn19LDMyNzoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0LGUpe3ZhciByPU9iamVjdC5rZXlzKHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7ZSYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gaSh0LGUscil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1yLHR9ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLmtleSxuKX19dmFyIHM9cig3NjQpLkJ1ZmZlcixhPXIoNjY5KS5pbnNwZWN0LHU9YSYmYS5jdXN0b218fFwiaW5zcGVjdFwiO3QuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLHQpLHRoaXMuaGVhZD1udWxsLHRoaXMudGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9dmFyIGUscjtyZXR1cm4gZT10LChyPVt7a2V5OlwicHVzaFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXtkYXRhOnQsbmV4dDpudWxsfTt0aGlzLmxlbmd0aD4wP3RoaXMudGFpbC5uZXh0PWU6dGhpcy5oZWFkPWUsdGhpcy50YWlsPWUsKyt0aGlzLmxlbmd0aH19LHtrZXk6XCJ1bnNoaWZ0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9e2RhdGE6dCxuZXh0OnRoaXMuaGVhZH07MD09PXRoaXMubGVuZ3RoJiYodGhpcy50YWlsPWUpLHRoaXMuaGVhZD1lLCsrdGhpcy5sZW5ndGh9fSx7a2V5Olwic2hpZnRcIix2YWx1ZTpmdW5jdGlvbigpe2lmKDAhPT10aGlzLmxlbmd0aCl7dmFyIHQ9dGhpcy5oZWFkLmRhdGE7cmV0dXJuIDE9PT10aGlzLmxlbmd0aD90aGlzLmhlYWQ9dGhpcy50YWlsPW51bGw6dGhpcy5oZWFkPXRoaXMuaGVhZC5uZXh0LC0tdGhpcy5sZW5ndGgsdH19fSx7a2V5OlwiY2xlYXJcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfX0se2tleTpcImpvaW5cIix2YWx1ZTpmdW5jdGlvbih0KXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuXCJcIjtmb3IodmFyIGU9dGhpcy5oZWFkLHI9XCJcIitlLmRhdGE7ZT1lLm5leHQ7KXIrPXQrZS5kYXRhO3JldHVybiByfX0se2tleTpcImNvbmNhdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKDA9PT10aGlzLmxlbmd0aClyZXR1cm4gcy5hbGxvYygwKTtmb3IodmFyIGUscixuLGk9cy5hbGxvY1Vuc2FmZSh0Pj4+MCksbz10aGlzLmhlYWQsYT0wO287KWU9by5kYXRhLHI9aSxuPWEscy5wcm90b3R5cGUuY29weS5jYWxsKGUscixuKSxhKz1vLmRhdGEubGVuZ3RoLG89by5uZXh0O3JldHVybiBpfX0se2tleTpcImNvbnN1bWVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByO3JldHVybiB0PHRoaXMuaGVhZC5kYXRhLmxlbmd0aD8ocj10aGlzLmhlYWQuZGF0YS5zbGljZSgwLHQpLHRoaXMuaGVhZC5kYXRhPXRoaXMuaGVhZC5kYXRhLnNsaWNlKHQpKTpyPXQ9PT10aGlzLmhlYWQuZGF0YS5sZW5ndGg/dGhpcy5zaGlmdCgpOmU/dGhpcy5fZ2V0U3RyaW5nKHQpOnRoaXMuX2dldEJ1ZmZlcih0KSxyfX0se2tleTpcImZpcnN0XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oZWFkLmRhdGF9fSx7a2V5OlwiX2dldFN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGVhZCxyPTEsbj1lLmRhdGE7Zm9yKHQtPW4ubGVuZ3RoO2U9ZS5uZXh0Oyl7dmFyIGk9ZS5kYXRhLG89dD5pLmxlbmd0aD9pLmxlbmd0aDp0O2lmKG89PT1pLmxlbmd0aD9uKz1pOm4rPWkuc2xpY2UoMCx0KSwwPT0odC09bykpe289PT1pLmxlbmd0aD8oKytyLGUubmV4dD90aGlzLmhlYWQ9ZS5uZXh0OnRoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCk6KHRoaXMuaGVhZD1lLGUuZGF0YT1pLnNsaWNlKG8pKTticmVha30rK3J9cmV0dXJuIHRoaXMubGVuZ3RoLT1yLG59fSx7a2V5OlwiX2dldEJ1ZmZlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXMuYWxsb2NVbnNhZmUodCkscj10aGlzLmhlYWQsbj0xO2ZvcihyLmRhdGEuY29weShlKSx0LT1yLmRhdGEubGVuZ3RoO3I9ci5uZXh0Oyl7dmFyIGk9ci5kYXRhLG89dD5pLmxlbmd0aD9pLmxlbmd0aDp0O2lmKGkuY29weShlLGUubGVuZ3RoLXQsMCxvKSwwPT0odC09bykpe289PT1pLmxlbmd0aD8oKytuLHIubmV4dD90aGlzLmhlYWQ9ci5uZXh0OnRoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCk6KHRoaXMuaGVhZD1yLHIuZGF0YT1pLnNsaWNlKG8pKTticmVha30rK259cmV0dXJuIHRoaXMubGVuZ3RoLT1uLGV9fSx7a2V5OnUsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYSh0aGlzLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1tlXT9hcmd1bWVudHNbZV06e307ZSUyP24oT2JqZWN0KHIpLCEwKS5mb3JFYWNoKChmdW5jdGlvbihlKXtpKHQsZSxyW2VdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTpuKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSkpfSkpfXJldHVybiB0fSh7fSxlLHtkZXB0aDowLGN1c3RvbUluc3BlY3Q6ITF9KSl9fV0pJiZvKGUucHJvdG90eXBlLHIpLHR9KCl9LDE5NToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigxNTUpO2Z1bmN0aW9uIGkodCxlKXtzKHQsZSksbyh0KX1mdW5jdGlvbiBvKHQpe3QuX3dyaXRhYmxlU3RhdGUmJiF0Ll93cml0YWJsZVN0YXRlLmVtaXRDbG9zZXx8dC5fcmVhZGFibGVTdGF0ZSYmIXQuX3JlYWRhYmxlU3RhdGUuZW1pdENsb3NlfHx0LmVtaXQoXCJjbG9zZVwiKX1mdW5jdGlvbiBzKHQsZSl7dC5lbWl0KFwiZXJyb3JcIixlKX10LmV4cG9ydHM9e2Rlc3Ryb3k6ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLGE9dGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQsdT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtyZXR1cm4gYXx8dT8oZT9lKHQpOnQmJih0aGlzLl93cml0YWJsZVN0YXRlP3RoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkfHwodGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsbi5uZXh0VGljayhzLHRoaXMsdCkpOm4ubmV4dFRpY2socyx0aGlzLHQpKSx0aGlzKToodGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPSEwKSx0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITApLHRoaXMuX2Rlc3Ryb3kodHx8bnVsbCwoZnVuY3Rpb24odCl7IWUmJnQ/ci5fd3JpdGFibGVTdGF0ZT9yLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD9uLm5leHRUaWNrKG8scik6KHIuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLG4ubmV4dFRpY2soaSxyLHQpKTpuLm5leHRUaWNrKGkscix0KTplPyhuLm5leHRUaWNrKG8sciksZSh0KSk6bi5uZXh0VGljayhvLHIpfSkpLHRoaXMpfSx1bmRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkaW5nPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kZWQ9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkPSExKSx0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZz0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmFsQ2FsbGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUucHJlZmluaXNoZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMSl9LGVycm9yT3JEZXN0cm95OmZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5fcmVhZGFibGVTdGF0ZSxuPXQuX3dyaXRhYmxlU3RhdGU7ciYmci5hdXRvRGVzdHJveXx8biYmbi5hdXRvRGVzdHJveT90LmRlc3Ryb3koZSk6dC5lbWl0KFwiZXJyb3JcIixlKX19fSw2MTA6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO3ZhciBuPXIoMjgxKS5xLkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFO2Z1bmN0aW9uIGkoKXt9dC5leHBvcnRzPWZ1bmN0aW9uIHQoZSxyLG8pe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpcmV0dXJuIHQoZSxudWxsLHIpO3J8fChyPXt9KSxvPWZ1bmN0aW9uKHQpe3ZhciBlPSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFlKXtlPSEwO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09YXJndW1lbnRzW2ldO3QuYXBwbHkodGhpcyxuKX19fShvfHxpKTt2YXIgcz1yLnJlYWRhYmxlfHwhMSE9PXIucmVhZGFibGUmJmUucmVhZGFibGUsYT1yLndyaXRhYmxlfHwhMSE9PXIud3JpdGFibGUmJmUud3JpdGFibGUsdT1mdW5jdGlvbigpe2Uud3JpdGFibGV8fGMoKX0sbD1lLl93cml0YWJsZVN0YXRlJiZlLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkLGM9ZnVuY3Rpb24oKXthPSExLGw9ITAsc3x8by5jYWxsKGUpfSxmPWUuX3JlYWRhYmxlU3RhdGUmJmUuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCxoPWZ1bmN0aW9uKCl7cz0hMSxmPSEwLGF8fG8uY2FsbChlKX0scD1mdW5jdGlvbih0KXtvLmNhbGwoZSx0KX0sZD1mdW5jdGlvbigpe3ZhciB0O3JldHVybiBzJiYhZj8oZS5fcmVhZGFibGVTdGF0ZSYmZS5fcmVhZGFibGVTdGF0ZS5lbmRlZHx8KHQ9bmV3IG4pLG8uY2FsbChlLHQpKTphJiYhbD8oZS5fd3JpdGFibGVTdGF0ZSYmZS5fd3JpdGFibGVTdGF0ZS5lbmRlZHx8KHQ9bmV3IG4pLG8uY2FsbChlLHQpKTp2b2lkIDB9LHk9ZnVuY3Rpb24oKXtlLnJlcS5vbihcImZpbmlzaFwiLGMpfTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQuc2V0SGVhZGVyJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmFib3J0fShlKT8oZS5vbihcImNvbXBsZXRlXCIsYyksZS5vbihcImFib3J0XCIsZCksZS5yZXE/eSgpOmUub24oXCJyZXF1ZXN0XCIseSkpOmEmJiFlLl93cml0YWJsZVN0YXRlJiYoZS5vbihcImVuZFwiLHUpLGUub24oXCJjbG9zZVwiLHUpKSxlLm9uKFwiZW5kXCIsaCksZS5vbihcImZpbmlzaFwiLGMpLCExIT09ci5lcnJvciYmZS5vbihcImVycm9yXCIscCksZS5vbihcImNsb3NlXCIsZCksZnVuY3Rpb24oKXtlLnJlbW92ZUxpc3RlbmVyKFwiY29tcGxldGVcIixjKSxlLnJlbW92ZUxpc3RlbmVyKFwiYWJvcnRcIixkKSxlLnJlbW92ZUxpc3RlbmVyKFwicmVxdWVzdFwiLHkpLGUucmVxJiZlLnJlcS5yZW1vdmVMaXN0ZW5lcihcImZpbmlzaFwiLGMpLGUucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIix1KSxlLnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIix1KSxlLnJlbW92ZUxpc3RlbmVyKFwiZmluaXNoXCIsYyksZS5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLGgpLGUucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLHApLGUucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLGQpfX19LDE2Nzp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiUmVhZGFibGUuZnJvbSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyXCIpfX0sOTQ2Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjt2YXIgbixpPXIoMjgxKS5xLG89aS5FUlJfTUlTU0lOR19BUkdTLHM9aS5FUlJfU1RSRUFNX0RFU1RST1lFRDtmdW5jdGlvbiBhKHQpe2lmKHQpdGhyb3cgdH1mdW5jdGlvbiB1KHQsZSxpLG8pe289ZnVuY3Rpb24odCl7dmFyIGU9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7ZXx8KGU9ITAsdC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9fShvKTt2YXIgYT0hMTt0Lm9uKFwiY2xvc2VcIiwoZnVuY3Rpb24oKXthPSEwfSkpLHZvaWQgMD09PW4mJihuPXIoNjEwKSksbih0LHtyZWFkYWJsZTplLHdyaXRhYmxlOml9LChmdW5jdGlvbih0KXtpZih0KXJldHVybiBvKHQpO2E9ITAsbygpfSkpO3ZhciB1PSExO3JldHVybiBmdW5jdGlvbihlKXtpZighYSYmIXUpcmV0dXJuIHU9ITAsZnVuY3Rpb24odCl7cmV0dXJuIHQuc2V0SGVhZGVyJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmFib3J0fSh0KT90LmFib3J0KCk6XCJmdW5jdGlvblwiPT10eXBlb2YgdC5kZXN0cm95P3QuZGVzdHJveSgpOnZvaWQgbyhlfHxuZXcgcyhcInBpcGVcIikpfX1mdW5jdGlvbiBsKHQpe3QoKX1mdW5jdGlvbiBjKHQsZSl7cmV0dXJuIHQucGlwZShlKX1mdW5jdGlvbiBmKHQpe3JldHVybiB0Lmxlbmd0aD9cImZ1bmN0aW9uXCIhPXR5cGVvZiB0W3QubGVuZ3RoLTFdP2E6dC5wb3AoKTphfXQuZXhwb3J0cz1mdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKWVbcl09YXJndW1lbnRzW3JdO3ZhciBuLGk9ZihlKTtpZihBcnJheS5pc0FycmF5KGVbMF0pJiYoZT1lWzBdKSxlLmxlbmd0aDwyKXRocm93IG5ldyBvKFwic3RyZWFtc1wiKTt2YXIgcz1lLm1hcCgoZnVuY3Rpb24odCxyKXt2YXIgbz1yPGUubGVuZ3RoLTE7cmV0dXJuIHUodCxvLHI+MCwoZnVuY3Rpb24odCl7bnx8KG49dCksdCYmcy5mb3JFYWNoKGwpLG98fChzLmZvckVhY2gobCksaShuKSl9KSl9KSk7cmV0dXJuIGUucmVkdWNlKGMpfX0sNDU3Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDI4MSkucS5FUlJfSU5WQUxJRF9PUFRfVkFMVUU7dC5leHBvcnRzPXtnZXRIaWdoV2F0ZXJNYXJrOmZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBvPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbnVsbCE9dC5oaWdoV2F0ZXJNYXJrP3QuaGlnaFdhdGVyTWFyazplP3Rbcl06bnVsbH0oZSxpLHIpO2lmKG51bGwhPW8pe2lmKCFpc0Zpbml0ZShvKXx8TWF0aC5mbG9vcihvKSE9PW98fG88MCl0aHJvdyBuZXcgbihpP3I6XCJoaWdoV2F0ZXJNYXJrXCIsbyk7cmV0dXJuIE1hdGguZmxvb3Iobyl9cmV0dXJuIHQub2JqZWN0TW9kZT8xNjoxNjM4NH19fSw1MDM6KHQsZSxyKT0+e3QuZXhwb3J0cz1yKDE4NykuRXZlbnRFbWl0dGVyfSw1MDk6KHQsZSxyKT0+e3ZhciBuPXIoNzY0KSxpPW4uQnVmZmVyO2Z1bmN0aW9uIG8odCxlKXtmb3IodmFyIHIgaW4gdCllW3JdPXRbcl19ZnVuY3Rpb24gcyh0LGUscil7cmV0dXJuIGkodCxlLHIpfWkuZnJvbSYmaS5hbGxvYyYmaS5hbGxvY1Vuc2FmZSYmaS5hbGxvY1Vuc2FmZVNsb3c/dC5leHBvcnRzPW46KG8obixlKSxlLkJ1ZmZlcj1zKSxzLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxvKGkscykscy5mcm9tPWZ1bmN0aW9uKHQsZSxyKXtpZihcIm51bWJlclwiPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXJcIik7cmV0dXJuIGkodCxlLHIpfSxzLmFsbG9jPWZ1bmN0aW9uKHQsZSxyKXtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwiKTt2YXIgbj1pKHQpO3JldHVybiB2b2lkIDAhPT1lP1wic3RyaW5nXCI9PXR5cGVvZiByP24uZmlsbChlLHIpOm4uZmlsbChlKTpuLmZpbGwoMCksbn0scy5hbGxvY1Vuc2FmZT1mdW5jdGlvbih0KXtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwiKTtyZXR1cm4gaSh0KX0scy5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24odCl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXJcIik7cmV0dXJuIG4uU2xvd0J1ZmZlcih0KX19LDgzMDoodCxlLHIpPT57dC5leHBvcnRzPWk7dmFyIG49cigxODcpLkV2ZW50RW1pdHRlcjtmdW5jdGlvbiBpKCl7bi5jYWxsKHRoaXMpfXIoNzE3KShpLG4pLGkuUmVhZGFibGU9cig0ODEpLGkuV3JpdGFibGU9cigyMjkpLGkuRHVwbGV4PXIoNzUzKSxpLlRyYW5zZm9ybT1yKDYwNSksaS5QYXNzVGhyb3VnaD1yKDcyNSksaS5maW5pc2hlZD1yKDYxMCksaS5waXBlbGluZT1yKDk0NiksaS5TdHJlYW09aSxpLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcztmdW5jdGlvbiBpKGUpe3Qud3JpdGFibGUmJiExPT09dC53cml0ZShlKSYmci5wYXVzZSYmci5wYXVzZSgpfWZ1bmN0aW9uIG8oKXtyLnJlYWRhYmxlJiZyLnJlc3VtZSYmci5yZXN1bWUoKX1yLm9uKFwiZGF0YVwiLGkpLHQub24oXCJkcmFpblwiLG8pLHQuX2lzU3RkaW98fGUmJiExPT09ZS5lbmR8fChyLm9uKFwiZW5kXCIsYSksci5vbihcImNsb3NlXCIsdSkpO3ZhciBzPSExO2Z1bmN0aW9uIGEoKXtzfHwocz0hMCx0LmVuZCgpKX1mdW5jdGlvbiB1KCl7c3x8KHM9ITAsXCJmdW5jdGlvblwiPT10eXBlb2YgdC5kZXN0cm95JiZ0LmRlc3Ryb3koKSl9ZnVuY3Rpb24gbCh0KXtpZihjKCksMD09PW4ubGlzdGVuZXJDb3VudCh0aGlzLFwiZXJyb3JcIikpdGhyb3cgdH1mdW5jdGlvbiBjKCl7ci5yZW1vdmVMaXN0ZW5lcihcImRhdGFcIixpKSx0LnJlbW92ZUxpc3RlbmVyKFwiZHJhaW5cIixvKSxyLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsYSksci5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsdSksci5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsbCksdC5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsbCksci5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLGMpLHIucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLGMpLHQucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLGMpfXJldHVybiByLm9uKFwiZXJyb3JcIixsKSx0Lm9uKFwiZXJyb3JcIixsKSxyLm9uKFwiZW5kXCIsYyksci5vbihcImNsb3NlXCIsYyksdC5vbihcImNsb3NlXCIsYyksdC5lbWl0KFwicGlwZVwiLHIpLHR9fSw1NTM6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO3ZhciBuPXIoNTA5KS5CdWZmZXIsaT1uLmlzRW5jb2Rpbmd8fGZ1bmN0aW9uKHQpe3N3aXRjaCgodD1cIlwiK3QpJiZ0LnRvTG93ZXJDYXNlKCkpe2Nhc2VcImhleFwiOmNhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOmNhc2VcImFzY2lpXCI6Y2FzZVwiYmluYXJ5XCI6Y2FzZVwiYmFzZTY0XCI6Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6Y2FzZVwicmF3XCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19O2Z1bmN0aW9uIG8odCl7dmFyIGU7c3dpdGNoKHRoaXMuZW5jb2Rpbmc9ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuXCJ1dGY4XCI7Zm9yKHZhciBlOzspc3dpdGNoKHQpe2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOnJldHVyblwidXRmOFwiO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVyblwidXRmMTZsZVwiO2Nhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOnJldHVyblwibGF0aW4xXCI7Y2FzZVwiYmFzZTY0XCI6Y2FzZVwiYXNjaWlcIjpjYXNlXCJoZXhcIjpyZXR1cm4gdDtkZWZhdWx0OmlmKGUpcmV0dXJuO3Q9KFwiXCIrdCkudG9Mb3dlckNhc2UoKSxlPSEwfX0odCk7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUmJihuLmlzRW5jb2Rpbmc9PT1pfHwhaSh0KSkpdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBlbmNvZGluZzogXCIrdCk7cmV0dXJuIGV8fHR9KHQpLHRoaXMuZW5jb2Rpbmcpe2Nhc2VcInV0ZjE2bGVcIjp0aGlzLnRleHQ9dSx0aGlzLmVuZD1sLGU9NDticmVhaztjYXNlXCJ1dGY4XCI6dGhpcy5maWxsTGFzdD1hLGU9NDticmVhaztjYXNlXCJiYXNlNjRcIjp0aGlzLnRleHQ9Yyx0aGlzLmVuZD1mLGU9MzticmVhaztkZWZhdWx0OnJldHVybiB0aGlzLndyaXRlPWgsdm9pZCh0aGlzLmVuZD1wKX10aGlzLmxhc3ROZWVkPTAsdGhpcy5sYXN0VG90YWw9MCx0aGlzLmxhc3RDaGFyPW4uYWxsb2NVbnNhZmUoZSl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gdDw9MTI3PzA6dD4+NT09Nj8yOnQ+PjQ9PTE0PzM6dD4+Mz09MzA/NDp0Pj42PT0yPy0xOi0yfWZ1bmN0aW9uIGEodCl7dmFyIGU9dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCxyPWZ1bmN0aW9uKHQsZSxyKXtpZigxMjghPSgxOTImZVswXSkpcmV0dXJuIHQubGFzdE5lZWQ9MCxcIu+/vVwiO2lmKHQubGFzdE5lZWQ+MSYmZS5sZW5ndGg+MSl7aWYoMTI4IT0oMTkyJmVbMV0pKXJldHVybiB0Lmxhc3ROZWVkPTEsXCLvv71cIjtpZih0Lmxhc3ROZWVkPjImJmUubGVuZ3RoPjImJjEyOCE9KDE5MiZlWzJdKSlyZXR1cm4gdC5sYXN0TmVlZD0yLFwi77+9XCJ9fSh0aGlzLHQpO3JldHVybiB2b2lkIDAhPT1yP3I6dGhpcy5sYXN0TmVlZDw9dC5sZW5ndGg/KHQuY29weSh0aGlzLmxhc3RDaGFyLGUsMCx0aGlzLmxhc3ROZWVkKSx0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCkpOih0LmNvcHkodGhpcy5sYXN0Q2hhcixlLDAsdC5sZW5ndGgpLHZvaWQodGhpcy5sYXN0TmVlZC09dC5sZW5ndGgpKX1mdW5jdGlvbiB1KHQsZSl7aWYoKHQubGVuZ3RoLWUpJTI9PTApe3ZhciByPXQudG9TdHJpbmcoXCJ1dGYxNmxlXCIsZSk7aWYocil7dmFyIG49ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTEpO2lmKG4+PTU1Mjk2JiZuPD01NjMxOSlyZXR1cm4gdGhpcy5sYXN0TmVlZD0yLHRoaXMubGFzdFRvdGFsPTQsdGhpcy5sYXN0Q2hhclswXT10W3QubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09dFt0Lmxlbmd0aC0xXSxyLnNsaWNlKDAsLTEpfXJldHVybiByfXJldHVybiB0aGlzLmxhc3ROZWVkPTEsdGhpcy5sYXN0VG90YWw9Mix0aGlzLmxhc3RDaGFyWzBdPXRbdC5sZW5ndGgtMV0sdC50b1N0cmluZyhcInV0ZjE2bGVcIixlLHQubGVuZ3RoLTEpfWZ1bmN0aW9uIGwodCl7dmFyIGU9dCYmdC5sZW5ndGg/dGhpcy53cml0ZSh0KTpcIlwiO2lmKHRoaXMubGFzdE5lZWQpe3ZhciByPXRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQ7cmV0dXJuIGUrdGhpcy5sYXN0Q2hhci50b1N0cmluZyhcInV0ZjE2bGVcIiwwLHIpfXJldHVybiBlfWZ1bmN0aW9uIGModCxlKXt2YXIgcj0odC5sZW5ndGgtZSklMztyZXR1cm4gMD09PXI/dC50b1N0cmluZyhcImJhc2U2NFwiLGUpOih0aGlzLmxhc3ROZWVkPTMtcix0aGlzLmxhc3RUb3RhbD0zLDE9PT1yP3RoaXMubGFzdENoYXJbMF09dFt0Lmxlbmd0aC0xXToodGhpcy5sYXN0Q2hhclswXT10W3QubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09dFt0Lmxlbmd0aC0xXSksdC50b1N0cmluZyhcImJhc2U2NFwiLGUsdC5sZW5ndGgtcikpfWZ1bmN0aW9uIGYodCl7dmFyIGU9dCYmdC5sZW5ndGg/dGhpcy53cml0ZSh0KTpcIlwiO3JldHVybiB0aGlzLmxhc3ROZWVkP2UrdGhpcy5sYXN0Q2hhci50b1N0cmluZyhcImJhc2U2NFwiLDAsMy10aGlzLmxhc3ROZWVkKTplfWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQudG9TdHJpbmcodGhpcy5lbmNvZGluZyl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gdCYmdC5sZW5ndGg/dGhpcy53cml0ZSh0KTpcIlwifWUucz1vLG8ucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm5cIlwiO3ZhciBlLHI7aWYodGhpcy5sYXN0TmVlZCl7aWYodm9pZCAwPT09KGU9dGhpcy5maWxsTGFzdCh0KSkpcmV0dXJuXCJcIjtyPXRoaXMubGFzdE5lZWQsdGhpcy5sYXN0TmVlZD0wfWVsc2Ugcj0wO3JldHVybiByPHQubGVuZ3RoP2U/ZSt0aGlzLnRleHQodCxyKTp0aGlzLnRleHQodCxyKTplfHxcIlwifSxvLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24odCl7dmFyIGU9dCYmdC5sZW5ndGg/dGhpcy53cml0ZSh0KTpcIlwiO3JldHVybiB0aGlzLmxhc3ROZWVkP2UrXCLvv71cIjplfSxvLnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUubGVuZ3RoLTE7aWYobjxyKXJldHVybiAwO3ZhciBpPXMoZVtuXSk7cmV0dXJuIGk+PTA/KGk+MCYmKHQubGFzdE5lZWQ9aS0xKSxpKTotLW48cnx8LTI9PT1pPzA6KGk9cyhlW25dKSk+PTA/KGk+MCYmKHQubGFzdE5lZWQ9aS0yKSxpKTotLW48cnx8LTI9PT1pPzA6KGk9cyhlW25dKSk+PTA/KGk+MCYmKDI9PT1pP2k9MDp0Lmxhc3ROZWVkPWktMyksaSk6MH0odGhpcyx0LGUpO2lmKCF0aGlzLmxhc3ROZWVkKXJldHVybiB0LnRvU3RyaW5nKFwidXRmOFwiLGUpO3RoaXMubGFzdFRvdGFsPXI7dmFyIG49dC5sZW5ndGgtKHItdGhpcy5sYXN0TmVlZCk7cmV0dXJuIHQuY29weSh0aGlzLmxhc3RDaGFyLDAsbiksdC50b1N0cmluZyhcInV0ZjhcIixlLG4pfSxvLnByb3RvdHlwZS5maWxsTGFzdD1mdW5jdGlvbih0KXtpZih0aGlzLmxhc3ROZWVkPD10Lmxlbmd0aClyZXR1cm4gdC5jb3B5KHRoaXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCwwLHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKTt0LmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAsdC5sZW5ndGgpLHRoaXMubGFzdE5lZWQtPXQubGVuZ3RofX0sOTI3Oih0LGUscik9PntmdW5jdGlvbiBuKHQpe3RyeXtpZighci5nLmxvY2FsU3RvcmFnZSlyZXR1cm4hMX1jYXRjaCh0KXtyZXR1cm4hMX12YXIgZT1yLmcubG9jYWxTdG9yYWdlW3RdO3JldHVybiBudWxsIT1lJiZcInRydWVcIj09PVN0cmluZyhlKS50b0xvd2VyQ2FzZSgpfXQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKG4oXCJub0RlcHJlY2F0aW9uXCIpKXJldHVybiB0O3ZhciByPSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFyKXtpZihuKFwidGhyb3dEZXByZWNhdGlvblwiKSl0aHJvdyBuZXcgRXJyb3IoZSk7bihcInRyYWNlRGVwcmVjYXRpb25cIik/Y29uc29sZS50cmFjZShlKTpjb25zb2xlLndhcm4oZSkscj0hMH1yZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX0sNjY5OnQ9PntcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9ZX0sOTM3OmU9PntcInVzZSBzdHJpY3RcIjtpZih2b2lkIDA9PT10KXt2YXIgcj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ3VuZGVmaW5lZCdcIik7dGhyb3cgci5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLHJ9ZS5leHBvcnRzPXR9fSxuPXt9O2Z1bmN0aW9uIGkodCl7dmFyIGU9blt0XTtpZih2b2lkIDAhPT1lKXJldHVybiBlLmV4cG9ydHM7dmFyIG89blt0XT17ZXhwb3J0czp7fX07cmV0dXJuIHJbdF0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsaSksby5leHBvcnRzfWkuZD0odCxlKT0+e2Zvcih2YXIgciBpbiBlKWkubyhlLHIpJiYhaS5vKHQscikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIse2VudW1lcmFibGU6ITAsZ2V0OmVbcl19KX0saS5nPWZ1bmN0aW9uKCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbFRoaXMpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfWNhdGNoKHQpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvd319KCksaS5vPSh0LGUpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKSxpLnI9dD0+e1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9O3ZhciBvPXt9O3JldHVybigoKT0+e1widXNlIHN0cmljdFwiO2kucihvKSxpLmQobyx7QmlnTnVtYmVyOigpPT50LkJpZ051bWJlcixDb21tZW50ZWQ6KCk9PnQuQ29tbWVudGVkLERlY29kZXI6KCk9PnQuRGVjb2RlcixEaWFnbm9zZTooKT0+dC5EaWFnbm9zZSxFbmNvZGVyOigpPT50LkVuY29kZXIsTWFwOigpPT50Lk1hcCxTaW1wbGU6KCk9PnQuU2ltcGxlLFRhZ2dlZDooKT0+dC5UYWdnZWQsY29tbWVudDooKT0+dC5VSSxkZWNvZGU6KCk9PnQuSngsZGVjb2RlQWxsOigpPT50LmZJLGRlY29kZUFsbFN5bmM6KCk9PnQuY2MsZGVjb2RlRmlyc3Q6KCk9PnQuaDgsZGVjb2RlRmlyc3RTeW5jOigpPT50LiR1LGRpYWdub3NlOigpPT50Lk0sZW5jb2RlOigpPT50LmN2LGVuY29kZUFzeW5jOigpPT50LldSLGVuY29kZUNhbm9uaWNhbDooKT0+dC5OMixlbmNvZGVPbmU6KCk9PnQuVEcsaGFzQmlnSW50OigpPT50LnZjLGxldmVsZGI6KCk9PnQud3d9KTt2YXIgdD1pKDE0MSl9KSgpLG99KSgpfSkpOyIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ3N0cmVhbScpLlRyYW5zZm9ybVxudmFyIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2RlcicpLlN0cmluZ0RlY29kZXJcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcblxuZnVuY3Rpb24gQ2lwaGVyQmFzZSAoaGFzaE1vZGUpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgdGhpcy5oYXNoTW9kZSA9IHR5cGVvZiBoYXNoTW9kZSA9PT0gJ3N0cmluZydcbiAgaWYgKHRoaXMuaGFzaE1vZGUpIHtcbiAgICB0aGlzW2hhc2hNb2RlXSA9IHRoaXMuX2ZpbmFsT3JEaWdlc3RcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmZpbmFsID0gdGhpcy5fZmluYWxPckRpZ2VzdFxuICB9XG4gIGlmICh0aGlzLl9maW5hbCkge1xuICAgIHRoaXMuX19maW5hbCA9IHRoaXMuX2ZpbmFsXG4gICAgdGhpcy5fZmluYWwgPSBudWxsXG4gIH1cbiAgdGhpcy5fZGVjb2RlciA9IG51bGxcbiAgdGhpcy5fZW5jb2RpbmcgPSBudWxsXG59XG5pbmhlcml0cyhDaXBoZXJCYXNlLCBUcmFuc2Zvcm0pXG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhLCBpbnB1dEVuYywgb3V0cHV0RW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICBkYXRhID0gQnVmZmVyLmZyb20oZGF0YSwgaW5wdXRFbmMpXG4gIH1cblxuICB2YXIgb3V0RGF0YSA9IHRoaXMuX3VwZGF0ZShkYXRhKVxuICBpZiAodGhpcy5oYXNoTW9kZSkgcmV0dXJuIHRoaXNcblxuICBpZiAob3V0cHV0RW5jKSB7XG4gICAgb3V0RGF0YSA9IHRoaXMuX3RvU3RyaW5nKG91dERhdGEsIG91dHB1dEVuYylcbiAgfVxuXG4gIHJldHVybiBvdXREYXRhXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nID0gZnVuY3Rpb24gKCkge31cbkNpcGhlckJhc2UucHJvdG90eXBlLmdldEF1dGhUYWcgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcigndHJ5aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEF1dGhUYWcgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcigndHJ5aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEFBRCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gc2V0IGFhZCBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoZGF0YSwgXywgbmV4dCkge1xuICB2YXIgZXJyXG4gIHRyeSB7XG4gICAgaWYgKHRoaXMuaGFzaE1vZGUpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZShkYXRhKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2godGhpcy5fdXBkYXRlKGRhdGEpKVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGVyciA9IGVcbiAgfSBmaW5hbGx5IHtcbiAgICBuZXh0KGVycilcbiAgfVxufVxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24gKGRvbmUpIHtcbiAgdmFyIGVyclxuICB0cnkge1xuICAgIHRoaXMucHVzaCh0aGlzLl9fZmluYWwoKSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGVyciA9IGVcbiAgfVxuXG4gIGRvbmUoZXJyKVxufVxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX2ZpbmFsT3JEaWdlc3QgPSBmdW5jdGlvbiAob3V0cHV0RW5jKSB7XG4gIHZhciBvdXREYXRhID0gdGhpcy5fX2ZpbmFsKCkgfHwgQnVmZmVyLmFsbG9jKDApXG4gIGlmIChvdXRwdXRFbmMpIHtcbiAgICBvdXREYXRhID0gdGhpcy5fdG9TdHJpbmcob3V0RGF0YSwgb3V0cHV0RW5jLCB0cnVlKVxuICB9XG4gIHJldHVybiBvdXREYXRhXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLl90b1N0cmluZyA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jLCBmaW4pIHtcbiAgaWYgKCF0aGlzLl9kZWNvZGVyKSB7XG4gICAgdGhpcy5fZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKGVuYylcbiAgICB0aGlzLl9lbmNvZGluZyA9IGVuY1xuICB9XG5cbiAgaWYgKHRoaXMuX2VuY29kaW5nICE9PSBlbmMpIHRocm93IG5ldyBFcnJvcignY2FuXFwndCBzd2l0Y2ggZW5jb2RpbmdzJylcblxuICB2YXIgb3V0ID0gdGhpcy5fZGVjb2Rlci53cml0ZSh2YWx1ZSlcbiAgaWYgKGZpbikge1xuICAgIG91dCArPSB0aGlzLl9kZWNvZGVyLmVuZCgpXG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQ2lwaGVyQmFzZVxuIiwidmFyIGVsbGlwdGljID0gcmVxdWlyZSgnZWxsaXB0aWMnKVxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZUVDREggKGN1cnZlKSB7XG4gIHJldHVybiBuZXcgRUNESChjdXJ2ZSlcbn1cblxudmFyIGFsaWFzZXMgPSB7XG4gIHNlY3AyNTZrMToge1xuICAgIG5hbWU6ICdzZWNwMjU2azEnLFxuICAgIGJ5dGVMZW5ndGg6IDMyXG4gIH0sXG4gIHNlY3AyMjRyMToge1xuICAgIG5hbWU6ICdwMjI0JyxcbiAgICBieXRlTGVuZ3RoOiAyOFxuICB9LFxuICBwcmltZTI1NnYxOiB7XG4gICAgbmFtZTogJ3AyNTYnLFxuICAgIGJ5dGVMZW5ndGg6IDMyXG4gIH0sXG4gIHByaW1lMTkydjE6IHtcbiAgICBuYW1lOiAncDE5MicsXG4gICAgYnl0ZUxlbmd0aDogMjRcbiAgfSxcbiAgZWQyNTUxOToge1xuICAgIG5hbWU6ICdlZDI1NTE5JyxcbiAgICBieXRlTGVuZ3RoOiAzMlxuICB9LFxuICBzZWNwMzg0cjE6IHtcbiAgICBuYW1lOiAncDM4NCcsXG4gICAgYnl0ZUxlbmd0aDogNDhcbiAgfSxcbiAgc2VjcDUyMXIxOiB7XG4gICAgbmFtZTogJ3A1MjEnLFxuICAgIGJ5dGVMZW5ndGg6IDY2XG4gIH1cbn1cblxuYWxpYXNlcy5wMjI0ID0gYWxpYXNlcy5zZWNwMjI0cjFcbmFsaWFzZXMucDI1NiA9IGFsaWFzZXMuc2VjcDI1NnIxID0gYWxpYXNlcy5wcmltZTI1NnYxXG5hbGlhc2VzLnAxOTIgPSBhbGlhc2VzLnNlY3AxOTJyMSA9IGFsaWFzZXMucHJpbWUxOTJ2MVxuYWxpYXNlcy5wMzg0ID0gYWxpYXNlcy5zZWNwMzg0cjFcbmFsaWFzZXMucDUyMSA9IGFsaWFzZXMuc2VjcDUyMXIxXG5cbmZ1bmN0aW9uIEVDREggKGN1cnZlKSB7XG4gIHRoaXMuY3VydmVUeXBlID0gYWxpYXNlc1tjdXJ2ZV1cbiAgaWYgKCF0aGlzLmN1cnZlVHlwZSkge1xuICAgIHRoaXMuY3VydmVUeXBlID0ge1xuICAgICAgbmFtZTogY3VydmVcbiAgICB9XG4gIH1cbiAgdGhpcy5jdXJ2ZSA9IG5ldyBlbGxpcHRpYy5lYyh0aGlzLmN1cnZlVHlwZS5uYW1lKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXBcbiAgdGhpcy5rZXlzID0gdm9pZCAwXG59XG5cbkVDREgucHJvdG90eXBlLmdlbmVyYXRlS2V5cyA9IGZ1bmN0aW9uIChlbmMsIGZvcm1hdCkge1xuICB0aGlzLmtleXMgPSB0aGlzLmN1cnZlLmdlbktleVBhaXIoKVxuICByZXR1cm4gdGhpcy5nZXRQdWJsaWNLZXkoZW5jLCBmb3JtYXQpXG59XG5cbkVDREgucHJvdG90eXBlLmNvbXB1dGVTZWNyZXQgPSBmdW5jdGlvbiAob3RoZXIsIGluZW5jLCBlbmMpIHtcbiAgaW5lbmMgPSBpbmVuYyB8fCAndXRmOCdcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIob3RoZXIpKSB7XG4gICAgb3RoZXIgPSBuZXcgQnVmZmVyKG90aGVyLCBpbmVuYylcbiAgfVxuICB2YXIgb3RoZXJQdWIgPSB0aGlzLmN1cnZlLmtleUZyb21QdWJsaWMob3RoZXIpLmdldFB1YmxpYygpXG4gIHZhciBvdXQgPSBvdGhlclB1Yi5tdWwodGhpcy5rZXlzLmdldFByaXZhdGUoKSkuZ2V0WCgpXG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZShvdXQsIGVuYywgdGhpcy5jdXJ2ZVR5cGUuYnl0ZUxlbmd0aClcbn1cblxuRUNESC5wcm90b3R5cGUuZ2V0UHVibGljS2V5ID0gZnVuY3Rpb24gKGVuYywgZm9ybWF0KSB7XG4gIHZhciBrZXkgPSB0aGlzLmtleXMuZ2V0UHVibGljKGZvcm1hdCA9PT0gJ2NvbXByZXNzZWQnLCB0cnVlKVxuICBpZiAoZm9ybWF0ID09PSAnaHlicmlkJykge1xuICAgIGlmIChrZXlba2V5Lmxlbmd0aCAtIDFdICUgMikge1xuICAgICAga2V5WzBdID0gN1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlbMF0gPSA2XG4gICAgfVxuICB9XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZShrZXksIGVuYylcbn1cblxuRUNESC5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleSA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMua2V5cy5nZXRQcml2YXRlKCksIGVuYylcbn1cblxuRUNESC5wcm90b3R5cGUuc2V0UHVibGljS2V5ID0gZnVuY3Rpb24gKHB1YiwgZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAndXRmOCdcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHViKSkge1xuICAgIHB1YiA9IG5ldyBCdWZmZXIocHViLCBlbmMpXG4gIH1cbiAgdGhpcy5rZXlzLl9pbXBvcnRQdWJsaWMocHViKVxuICByZXR1cm4gdGhpc1xufVxuXG5FQ0RILnByb3RvdHlwZS5zZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gKHByaXYsIGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ3V0ZjgnXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHByaXYpKSB7XG4gICAgcHJpdiA9IG5ldyBCdWZmZXIocHJpdiwgZW5jKVxuICB9XG5cbiAgdmFyIF9wcml2ID0gbmV3IEJOKHByaXYpXG4gIF9wcml2ID0gX3ByaXYudG9TdHJpbmcoMTYpXG4gIHRoaXMua2V5cyA9IHRoaXMuY3VydmUuZ2VuS2V5UGFpcigpXG4gIHRoaXMua2V5cy5faW1wb3J0UHJpdmF0ZShfcHJpdilcbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gZm9ybWF0UmV0dXJuVmFsdWUgKGJuLCBlbmMsIGxlbikge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYm4pKSB7XG4gICAgYm4gPSBibi50b0FycmF5KClcbiAgfVxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihibilcbiAgaWYgKGxlbiAmJiBidWYubGVuZ3RoIDwgbGVuKSB7XG4gICAgdmFyIHplcm9zID0gbmV3IEJ1ZmZlcihsZW4gLSBidWYubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICBidWYgPSBCdWZmZXIuY29uY2F0KFt6ZXJvcywgYnVmXSlcbiAgfVxuICBpZiAoIWVuYykge1xuICAgIHJldHVybiBidWZcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVmLnRvU3RyaW5nKGVuYylcbiAgfVxufVxuIiwiKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFV0aWxzXG4gIGZ1bmN0aW9uIGFzc2VydCAodmFsLCBtc2cpIHtcbiAgICBpZiAoIXZhbCkgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xuICB9XG5cbiAgLy8gQ291bGQgdXNlIGBpbmhlcml0c2AgbW9kdWxlLCBidXQgZG9uJ3Qgd2FudCB0byBtb3ZlIGZyb20gc2luZ2xlIGZpbGVcbiAgLy8gYXJjaGl0ZWN0dXJlIHlldC5cbiAgZnVuY3Rpb24gaW5oZXJpdHMgKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGU7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKTtcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gIH1cblxuICAvLyBCTlxuXG4gIGZ1bmN0aW9uIEJOIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChCTi5pc0JOKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgdGhpcy53b3JkcyA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgLy8gUmVkdWN0aW9uIGNvbnRleHRcbiAgICB0aGlzLnJlZCA9IG51bGw7XG5cbiAgICBpZiAobnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gJ2xlJyB8fCBiYXNlID09PSAnYmUnKSB7XG4gICAgICAgIGVuZGlhbiA9IGJhc2U7XG4gICAgICAgIGJhc2UgPSAxMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdChudW1iZXIgfHwgMCwgYmFzZSB8fCAxMCwgZW5kaWFuIHx8ICdiZScpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJOO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQk4gPSBCTjtcbiAgfVxuXG4gIEJOLkJOID0gQk47XG4gIEJOLndvcmRTaXplID0gMjY7XG5cbiAgdmFyIEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5CdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBCdWZmZXIgPSB3aW5kb3cuQnVmZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gIH1cblxuICBCTi5pc0JOID0gZnVuY3Rpb24gaXNCTiAobnVtKSB7XG4gICAgaWYgKG51bSBpbnN0YW5jZW9mIEJOKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVtICE9PSBudWxsICYmIHR5cGVvZiBudW0gPT09ICdvYmplY3QnICYmXG4gICAgICBudW0uY29uc3RydWN0b3Iud29yZFNpemUgPT09IEJOLndvcmRTaXplICYmIEFycmF5LmlzQXJyYXkobnVtLndvcmRzKTtcbiAgfTtcblxuICBCTi5tYXggPSBmdW5jdGlvbiBtYXggKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA+IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5taW4gPSBmdW5jdGlvbiBtaW4gKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA8IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXROdW1iZXIobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXRBcnJheShudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBiYXNlID0gMTY7XG4gICAgfVxuICAgIGFzc2VydChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KTtcblxuICAgIG51bWJlciA9IG51bWJlci50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICBzdGFydCsrO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0IDwgbnVtYmVyLmxlbmd0aCkge1xuICAgICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICAgIHRoaXMuX3BhcnNlSGV4KG51bWJlciwgc3RhcnQsIGVuZGlhbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wYXJzZUJhc2UobnVtYmVyLCBiYXNlLCBzdGFydCk7XG4gICAgICAgIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgICAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0TnVtYmVyID0gZnVuY3Rpb24gX2luaXROdW1iZXIgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDB4NDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgbnVtYmVyICYgMHgzZmZmZmZmIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPCAweDEwMDAwMDAwMDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobnVtYmVyIDwgMHgyMDAwMDAwMDAwMDAwMCk7IC8vIDIgXiA1MyAodW5zYWZlKVxuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZixcbiAgICAgICAgMVxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICAvLyBSZXZlcnNlIHRoZSBieXRlc1xuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXRBcnJheSA9IGZ1bmN0aW9uIF9pbml0QXJyYXkgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgLy8gUGVyaGFwcyBhIFVpbnQ4QXJyYXlcbiAgICBhc3NlcnQodHlwZW9mIG51bWJlci5sZW5ndGggPT09ICdudW1iZXInKTtcbiAgICBpZiAobnVtYmVyLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbChudW1iZXIubGVuZ3RoIC8gMyk7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMSwgaiA9IDA7IGkgPj0gMDsgaSAtPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgLSAxXSA8PCA4KSB8IChudW1iZXJbaSAtIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpICsgMV0gPDwgOCkgfCAobnVtYmVyW2kgKyAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUhleDRCaXRzIChzdHJpbmcsIGluZGV4KSB7XG4gICAgdmFyIGMgPSBzdHJpbmcuY2hhckNvZGVBdChpbmRleCk7XG4gICAgLy8gJ0EnIC0gJ0YnXG4gICAgaWYgKGMgPj0gNjUgJiYgYyA8PSA3MCkge1xuICAgICAgcmV0dXJuIGMgLSA1NTtcbiAgICAvLyAnYScgLSAnZidcbiAgICB9IGVsc2UgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMDIpIHtcbiAgICAgIHJldHVybiBjIC0gODc7XG4gICAgLy8gJzAnIC0gJzknXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoYyAtIDQ4KSAmIDB4ZjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUhleEJ5dGUgKHN0cmluZywgbG93ZXJCb3VuZCwgaW5kZXgpIHtcbiAgICB2YXIgciA9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCk7XG4gICAgaWYgKGluZGV4IC0gMSA+PSBsb3dlckJvdW5kKSB7XG4gICAgICByIHw9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCAtIDEpIDw8IDQ7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUhleCA9IGZ1bmN0aW9uIF9wYXJzZUhleCAobnVtYmVyLCBzdGFydCwgZW5kaWFuKSB7XG4gICAgLy8gQ3JlYXRlIHBvc3NpYmx5IGJpZ2dlciBhcnJheSB0byBlbnN1cmUgdGhhdCBpdCBmaXRzIHRoZSBudW1iZXJcbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbCgobnVtYmVyLmxlbmd0aCAtIHN0YXJ0KSAvIDYpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgLy8gMjQtYml0cyBjaHVua3NcbiAgICB2YXIgb2ZmID0gMDtcbiAgICB2YXIgaiA9IDA7XG5cbiAgICB2YXIgdztcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMTsgaSA+PSBzdGFydDsgaSAtPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhcnNlTGVuZ3RoID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgICAgZm9yIChpID0gcGFyc2VMZW5ndGggJSAyID09PSAwID8gc3RhcnQgKyAxIDogc3RhcnQ7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIHIgKz0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICByICs9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUJhc2UgPSBmdW5jdGlvbiBfcGFyc2VCYXNlIChudW1iZXIsIGJhc2UsIHN0YXJ0KSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBhcyB6ZXJvXG4gICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA+IDEgJiYgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX25vcm1TaWduID0gZnVuY3Rpb24gX25vcm1TaWduICgpIHtcbiAgICAvLyAtMCA9IDBcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH07XG5cbiAgLypcblxuICB2YXIgemVyb3MgPSBbXTtcbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXTtcbiAgdmFyIGdyb3VwQmFzZXMgPSBbXTtcblxuICB2YXIgcyA9ICcnO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgQk4ud29yZFNpemUpIHtcbiAgICB6ZXJvc1tpXSA9IHM7XG4gICAgcyArPSAnMCc7XG4gIH1cbiAgZ3JvdXBTaXplc1swXSA9IDA7XG4gIGdyb3VwU2l6ZXNbMV0gPSAwO1xuICBncm91cEJhc2VzWzBdID0gMDtcbiAgZ3JvdXBCYXNlc1sxXSA9IDA7XG4gIHZhciBiYXNlID0gMiAtIDE7XG4gIHdoaWxlICgrK2Jhc2UgPCAzNiArIDEpIHtcbiAgICB2YXIgZ3JvdXBTaXplID0gMDtcbiAgICB2YXIgZ3JvdXBCYXNlID0gMTtcbiAgICB3aGlsZSAoZ3JvdXBCYXNlIDwgKDEgPDwgQk4ud29yZFNpemUpIC8gYmFzZSkge1xuICAgICAgZ3JvdXBCYXNlICo9IGJhc2U7XG4gICAgICBncm91cFNpemUgKz0gMTtcbiAgICB9XG4gICAgZ3JvdXBTaXplc1tiYXNlXSA9IGdyb3VwU2l6ZTtcbiAgICBncm91cEJhc2VzW2Jhc2VdID0gZ3JvdXBCYXNlO1xuICB9XG5cbiAgKi9cblxuICB2YXIgemVyb3MgPSBbXG4gICAgJycsXG4gICAgJzAnLFxuICAgICcwMCcsXG4gICAgJzAwMCcsXG4gICAgJzAwMDAnLFxuICAgICcwMDAwMCcsXG4gICAgJzAwMDAwMCcsXG4gICAgJzAwMDAwMDAnLFxuICAgICcwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gIF07XG5cbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXG4gICAgMCwgMCxcbiAgICAyNSwgMTYsIDEyLCAxMSwgMTAsIDksIDgsXG4gICAgOCwgNywgNywgNywgNywgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNVxuICBdO1xuXG4gIHZhciBncm91cEJhc2VzID0gW1xuICAgIDAsIDAsXG4gICAgMzM1NTQ0MzIsIDQzMDQ2NzIxLCAxNjc3NzIxNiwgNDg4MjgxMjUsIDYwNDY2MTc2LCA0MDM1MzYwNywgMTY3NzcyMTYsXG4gICAgNDMwNDY3MjEsIDEwMDAwMDAwLCAxOTQ4NzE3MSwgMzU4MzE4MDgsIDYyNzQ4NTE3LCA3NTI5NTM2LCAxMTM5MDYyNSxcbiAgICAxNjc3NzIxNiwgMjQxMzc1NjksIDM0MDEyMjI0LCA0NzA0NTg4MSwgNjQwMDAwMDAsIDQwODQxMDEsIDUxNTM2MzIsXG4gICAgNjQzNjM0MywgNzk2MjYyNCwgOTc2NTYyNSwgMTE4ODEzNzYsIDE0MzQ4OTA3LCAxNzIxMDM2OCwgMjA1MTExNDksXG4gICAgMjQzMDAwMDAsIDI4NjI5MTUxLCAzMzU1NDQzMiwgMzkxMzUzOTMsIDQ1NDM1NDI0LCA1MjUyMTg3NSwgNjA0NjYxNzZcbiAgXTtcblxuICBCTi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYmFzZSwgcGFkZGluZykge1xuICAgIGJhc2UgPSBiYXNlIHx8IDEwO1xuICAgIHBhZGRpbmcgPSBwYWRkaW5nIHwgMCB8fCAxO1xuXG4gICAgdmFyIG91dDtcbiAgICBpZiAoYmFzZSA9PT0gMTYgfHwgYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIG9mZiA9IDA7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgICAgdmFyIHdvcmQgPSAoKCh3IDw8IG9mZikgfCBjYXJyeSkgJiAweGZmZmZmZikudG9TdHJpbmcoMTYpO1xuICAgICAgICBjYXJyeSA9ICh3ID4+PiAoMjQgLSBvZmYpKSAmIDB4ZmZmZmZmO1xuICAgICAgICBpZiAoY2FycnkgIT09IDAgfHwgaSAhPT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbNiAtIHdvcmQubGVuZ3RoXSArIHdvcmQgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gd29yZCArIG91dDtcbiAgICAgICAgfVxuICAgICAgICBvZmYgKz0gMjtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgICBvdXQgPSBjYXJyeS50b1N0cmluZygxNikgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNikge1xuICAgICAgLy8gdmFyIGdyb3VwU2l6ZSA9IE1hdGguZmxvb3IoQk4ud29yZFNpemUgKiBNYXRoLkxOMiAvIE1hdGgubG9nKGJhc2UpKTtcbiAgICAgIHZhciBncm91cFNpemUgPSBncm91cFNpemVzW2Jhc2VdO1xuICAgICAgLy8gdmFyIGdyb3VwQmFzZSA9IE1hdGgucG93KGJhc2UsIGdyb3VwU2l6ZSk7XG4gICAgICB2YXIgZ3JvdXBCYXNlID0gZ3JvdXBCYXNlc1tiYXNlXTtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIGMgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjLm5lZ2F0aXZlID0gMDtcbiAgICAgIHdoaWxlICghYy5pc1plcm8oKSkge1xuICAgICAgICB2YXIgciA9IGMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgICB2YXIgbGl0dGxlRW5kaWFuID0gZW5kaWFuID09PSAnbGUnO1xuICAgIHZhciByZXMgPSBuZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7XG5cbiAgICB2YXIgYiwgaTtcbiAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKTtcbiAgICBpZiAoIWxpdHRsZUVuZGlhbikge1xuICAgICAgLy8gQXNzdW1lIGJpZy1lbmRpYW5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXFMZW5ndGggLSBieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW3JlcUxlbmd0aCAtIGkgLSAxXSA9IGI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tpXSA9IGI7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBpIDwgcmVxTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSAmICgxIDw8IHdiaXQpKSA+Pj4gd2JpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdztcbiAgfVxuXG4gIC8vIE51bWJlciBvZiB0cmFpbGluZyB6ZXJvIGJpdHNcbiAgQk4ucHJvdG90eXBlLnplcm9CaXRzID0gZnVuY3Rpb24gemVyb0JpdHMgKCkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gMDtcblxuICAgIHZhciByID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBiID0gdGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7XG4gICAgICByICs9IGI7XG4gICAgICBpZiAoYiAhPT0gMjYpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIGJ5dGVMZW5ndGggKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKSAvIDgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1R3b3MgPSBmdW5jdGlvbiB0b1R3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVR3b3MgPSBmdW5jdGlvbiBmcm9tVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy50ZXN0bih3aWR0aCAtIDEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RuKHdpZHRoKS5pYWRkbigxKS5pbmVnKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gaXNOZWcgKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlICE9PSAwO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluZWcgPSBmdW5jdGlvbiBpbmVnICgpIHtcbiAgICBpZiAoIXRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVvciA9IGZ1bmN0aW9uIGl1b3IgKG51bSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSB8IG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXhvciA9IGZ1bmN0aW9uIGl4b3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1eG9yKG51bSk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5peG9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51eG9yID0gZnVuY3Rpb24gdXhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKTtcbiAgfTtcblxuICAvLyBOb3QgYGB0aGlzYGAgd2l0aCBgYHdpZHRoYGAgYml0d2lkdGhcbiAgQk4ucHJvdG90eXBlLmlub3RuID0gZnVuY3Rpb24gaW5vdG4gKHdpZHRoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgJiYgd2lkdGggPj0gMCk7XG5cbiAgICB2YXIgYnl0ZXNOZWVkZWQgPSBNYXRoLmNlaWwod2lkdGggLyAyNikgfCAwO1xuICAgIHZhciBiaXRzTGVmdCA9IHdpZHRoICUgMjY7XG5cbiAgICAvLyBFeHRlbmQgdGhlIGJ1ZmZlciB3aXRoIGxlYWRpbmcgemVyb2VzXG4gICAgdGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtcblxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIGJ5dGVzTmVlZGVkLS07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRlIHdvcmRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlc05lZWRlZDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRoZSByZXNpZHVlXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgKDB4M2ZmZmZmZiA+PiAoMjYgLSBiaXRzTGVmdCkpO1xuICAgIH1cblxuICAgIC8vIEFuZCByZW1vdmUgbGVhZGluZyB6ZXJvZXNcbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gc21hbGxNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIHZhciBsZW4gPSAoc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoKSB8IDA7XG4gICAgb3V0Lmxlbmd0aCA9IGxlbjtcbiAgICBsZW4gPSAobGVuIC0gMSkgfCAwO1xuXG4gICAgLy8gUGVlbCBvbmUgaXRlcmF0aW9uIChjb21waWxlciBjYW4ndCBkbyBpdCwgYmVjYXVzZSBvZiBjb2RlIGNvbXBsZXhpdHkpXG4gICAgdmFyIGEgPSBzZWxmLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgYiA9IG51bS53b3Jkc1swXSB8IDA7XG4gICAgdmFyIHIgPSBhICogYjtcblxuICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgdmFyIGNhcnJ5ID0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICBvdXQud29yZHNbMF0gPSBsbztcblxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gY2FycnkgPj4+IDI2O1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSAoayAtIGopIHwgMDtcbiAgICAgICAgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgciA9IGEgKiBiICsgcndvcmQ7XG4gICAgICAgIG5jYXJyeSArPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgICByd29yZCA9IHIgJiAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZCB8IDA7XG4gICAgICBjYXJyeSA9IG5jYXJyeSB8IDA7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2FycnkgfCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNobG4gPSBmdW5jdGlvbiBpc2hsbiAoYml0cykge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHQgaW4tcGxhY2VcbiAgLy8gTk9URTogYGhpbnRgIGlzIGEgbG93ZXN0IGJpdCBiZWZvcmUgdHJhaWxpbmcgemVyb2VzXG4gIC8vIE5PVEU6IGlmIGBleHRlbmRlZGAgaXMgcHJlc2VudCAtIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggZGVzdHJveWVkIGJpdHNcbiAgQk4ucHJvdG90eXBlLml1c2hybiA9IGZ1bmN0aW9uIGl1c2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIGg7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIGggPSAoaGludCAtIChoaW50ICUgMjYpKSAvIDI2O1xuICAgIH0gZWxzZSB7XG4gICAgICBoID0gMDtcbiAgICB9XG5cbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IE1hdGgubWluKChiaXRzIC0gcikgLyAyNiwgdGhpcy5sZW5ndGgpO1xuICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgIHZhciBtYXNrZWRXb3JkcyA9IGV4dGVuZGVkO1xuXG4gICAgaCAtPSBzO1xuICAgIGggPSBNYXRoLm1heCgwLCBoKTtcblxuICAgIC8vIEV4dGVuZGVkIG1vZGUsIGNvcHkgbWFza2VkIHBhcnRcbiAgICBpZiAobWFza2VkV29yZHMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIG1hc2tlZFdvcmRzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICAgIG1hc2tlZFdvcmRzLmxlbmd0aCA9IHM7XG4gICAgfVxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIC8vIE5vLW9wLCB3ZSBzaG91bGQgbm90IG1vdmUgYW55dGhpbmcgYXQgYWxsXG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IHMpIHtcbiAgICAgIHRoaXMubGVuZ3RoIC09IHM7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpICsgc107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDAgJiYgKGNhcnJ5ICE9PSAwIHx8IGkgPj0gaCk7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAoY2FycnkgPDwgKDI2IC0gcikpIHwgKHdvcmQgPj4+IHIpO1xuICAgICAgY2FycnkgPSB3b3JkICYgbWFzaztcbiAgICB9XG5cbiAgICAvLyBQdXNoIGNhcnJpZWQgYml0cyBhcyBhIG1hc2tcbiAgICBpZiAobWFza2VkV29yZHMgJiYgY2FycnkgIT09IDApIHtcbiAgICAgIG1hc2tlZFdvcmRzLndvcmRzW21hc2tlZFdvcmRzLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyLnN0cmlwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NCBpbnN0YW5jZVxuICAgICAgICByLnN0cmlwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByIGlzIEJOIHY1IGluc3RhbmNlXG4gICAgICAgIHIuX3N0cmlwKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0KSB7XG4gICAgaW5wdXQuaXVzaHJuKHRoaXMubiwgMCwgb3V0KTtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIHJldHVybiBudW0uaW11bCh0aGlzLmspO1xuICB9O1xuXG4gIGZ1bmN0aW9uIEsyNTYgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdrMjU2JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZicpO1xuICB9XG4gIGluaGVyaXRzKEsyNTYsIE1QcmltZSk7XG5cbiAgSzI1Ni5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dHB1dCkge1xuICAgIC8vIDI1NiA9IDkgKiAyNiArIDIyXG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZjtcblxuICAgIHZhciBvdXRMZW4gPSBNYXRoLm1pbihpbnB1dC5sZW5ndGgsIDkpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0TGVuOyBpKyspIHtcbiAgICAgIG91dHB1dC53b3Jkc1tpXSA9IGlucHV0LndvcmRzW2ldO1xuICAgIH1cbiAgICBvdXRwdXQubGVuZ3RoID0gb3V0TGVuO1xuXG4gICAgaWYgKGlucHV0Lmxlbmd0aCA8PSA5KSB7XG4gICAgICBpbnB1dC53b3Jkc1swXSA9IDA7XG4gICAgICBpbnB1dC5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNoaWZ0IGJ5IDkgbGltYnNcbiAgICB2YXIgcHJldiA9IGlucHV0LndvcmRzWzldO1xuICAgIG91dHB1dC53b3Jkc1tvdXRwdXQubGVuZ3RoKytdID0gcHJldiAmIG1hc2s7XG5cbiAgICBmb3IgKGkgPSAxMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmV4dCA9IGlucHV0LndvcmRzW2ldIHwgMDtcbiAgICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSAoKG5leHQgJiBtYXNrKSA8PCA0KSB8IChwcmV2ID4+PiAyMik7XG4gICAgICBwcmV2ID0gbmV4dDtcbiAgICB9XG4gICAgcHJldiA+Pj49IDIyO1xuICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSBwcmV2O1xuICAgIGlmIChwcmV2ID09PSAwICYmIGlucHV0Lmxlbmd0aCA+IDEwKSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gMTA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSA5O1xuICAgIH1cbiAgfTtcblxuICBLMjU2LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxMDAwMDAzZDEgPSBbIDB4NDAsIDB4M2QxIF1cbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aF0gPSAwO1xuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoICsgMV0gPSAwO1xuICAgIG51bS5sZW5ndGggKz0gMjtcblxuICAgIC8vIGJvdW5kZWQgYXQ6IDB4NDAgKiAweDNmZmZmZmYgKyAweDNkMCA9IDB4MTAwMDAwMzkwXG4gICAgdmFyIGxvID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSBudW0ud29yZHNbaV0gfCAwO1xuICAgICAgbG8gKz0gdyAqIDB4M2QxO1xuICAgICAgbnVtLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICBsbyA9IHcgKiAweDQwICsgKChsbyAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICB9XG5cbiAgICAvLyBGYXN0IGxlbmd0aCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIGZ1bmN0aW9uIFAyMjQgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMjI0JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScpO1xuICB9XG4gIGluaGVyaXRzKFAyMjQsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDE5MiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AxOTInLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDE5MiwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMjU1MTkgKCkge1xuICAgIC8vIDIgXiAyNTUgLSAxOVxuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICcyNTUxOScsXG4gICAgICAnN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCcpO1xuICB9XG4gIGluaGVyaXRzKFAyNTUxOSwgTVByaW1lKTtcblxuICBQMjU1MTkucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEzXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGhpID0gKG51bS53b3Jkc1tpXSB8IDApICogMHgxMyArIGNhcnJ5O1xuICAgICAgdmFyIGxvID0gaGkgJiAweDNmZmZmZmY7XG4gICAgICBoaSA+Pj49IDI2O1xuXG4gICAgICBudW0ud29yZHNbaV0gPSBsbztcbiAgICAgIGNhcnJ5ID0gaGk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgbnVtLndvcmRzW251bS5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICAvLyBFeHBvcnRlZCBtb3N0bHkgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHVzZSBwbGFpbiBuYW1lIGluc3RlYWRcbiAgQk4uX3ByaW1lID0gZnVuY3Rpb24gcHJpbWUgKG5hbWUpIHtcbiAgICAvLyBDYWNoZWQgdmVyc2lvbiBvZiBwcmltZVxuICAgIGlmIChwcmltZXNbbmFtZV0pIHJldHVybiBwcmltZXNbbmFtZV07XG5cbiAgICB2YXIgcHJpbWU7XG4gICAgaWYgKG5hbWUgPT09ICdrMjU2Jykge1xuICAgICAgcHJpbWUgPSBuZXcgSzI1NigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyMjQnKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjI0KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDE5MicpIHtcbiAgICAgIHByaW1lID0gbmV3IFAxOTIoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjU1MTknKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjU1MTkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByaW1lICcgKyBuYW1lKTtcbiAgICB9XG4gICAgcHJpbWVzW25hbWVdID0gcHJpbWU7XG5cbiAgICByZXR1cm4gcHJpbWU7XG4gIH07XG5cbiAgLy9cbiAgLy8gQmFzZSByZWR1Y3Rpb24gZW5naW5lXG4gIC8vXG4gIGZ1bmN0aW9uIFJlZCAobSkge1xuICAgIGlmICh0eXBlb2YgbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBwcmltZSA9IEJOLl9wcmltZShtKTtcbiAgICAgIHRoaXMubSA9IHByaW1lLnA7XG4gICAgICB0aGlzLnByaW1lID0gcHJpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChtLmd0bigxKSwgJ21vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMScpO1xuICAgICAgdGhpcy5tID0gbTtcbiAgICAgIHRoaXMucHJpbWUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTEgPSBmdW5jdGlvbiBfdmVyaWZ5MSAoYSkge1xuICAgIGFzc2VydChhLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQsICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MiA9IGZ1bmN0aW9uIF92ZXJpZnkyIChhLCBiKSB7XG4gICAgYXNzZXJ0KChhLm5lZ2F0aXZlIHwgYi5uZWdhdGl2ZSkgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCAmJiBhLnJlZCA9PT0gYi5yZWQsXG4gICAgICAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW1vZCA9IGZ1bmN0aW9uIGltb2QgKGEpIHtcbiAgICBpZiAodGhpcy5wcmltZSkgcmV0dXJuIHRoaXMucHJpbWUuaXJlZHVjZShhKS5fZm9yY2VSZWQodGhpcyk7XG4gICAgcmV0dXJuIGEudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm0uc3ViKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5hZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlhZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLnN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlzdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNobCA9IGZ1bmN0aW9uIHNobCAoYSwgbnVtKSB7XG4gICAgdGhpcy5fdmVyaWZ5MShhKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEudXNobG4obnVtKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLmltdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEubXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bChhLCBhLmNsb25lKCkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKGEsIGEpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FydCA9IGZ1bmN0aW9uIHNxcnQgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciBtb2QzID0gdGhpcy5tLmFuZGxuKDMpO1xuICAgIGFzc2VydChtb2QzICUgMiA9PT0gMSk7XG5cbiAgICAvLyBGYXN0IGNhc2VcbiAgICBpZiAobW9kMyA9PT0gMykge1xuICAgICAgdmFyIHBvdyA9IHRoaXMubS5hZGQobmV3IEJOKDEpKS5pdXNocm4oMik7XG4gICAgICByZXR1cm4gdGhpcy5wb3coYSwgcG93KTtcbiAgICB9XG5cbiAgICAvLyBUb25lbGxpLVNoYW5rcyBhbGdvcml0aG0gKFRvdGFsbHkgdW5vcHRpbWl6ZWQgYW5kIHNsb3cpXG4gICAgLy9cbiAgICAvLyBGaW5kIFEgYW5kIFMsIHRoYXQgUSAqIDIgXiBTID0gKFAgLSAxKVxuICAgIHZhciBxID0gdGhpcy5tLnN1Ym4oMSk7XG4gICAgdmFyIHMgPSAwO1xuICAgIHdoaWxlICghcS5pc1plcm8oKSAmJiBxLmFuZGxuKDEpID09PSAwKSB7XG4gICAgICBzKys7XG4gICAgICBxLml1c2hybigxKTtcbiAgICB9XG4gICAgYXNzZXJ0KCFxLmlzWmVybygpKTtcblxuICAgIHZhciBvbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgdmFyIG5PbmUgPSBvbmUucmVkTmVnKCk7XG5cbiAgICAvLyBGaW5kIHF1YWRyYXRpYyBub24tcmVzaWR1ZVxuICAgIC8vIE5PVEU6IE1heCBpcyBzdWNoIGJlY2F1c2Ugb2YgZ2VuZXJhbGl6ZWQgUmllbWFubiBoeXBvdGhlc2lzLlxuICAgIHZhciBscG93ID0gdGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpO1xuICAgIHZhciB6ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIHogPSBuZXcgQk4oMiAqIHogKiB6KS50b1JlZCh0aGlzKTtcblxuICAgIHdoaWxlICh0aGlzLnBvdyh6LCBscG93KS5jbXAobk9uZSkgIT09IDApIHtcbiAgICAgIHoucmVkSUFkZChuT25lKTtcbiAgICB9XG5cbiAgICB2YXIgYyA9IHRoaXMucG93KHosIHEpO1xuICAgIHZhciByID0gdGhpcy5wb3coYSwgcS5hZGRuKDEpLml1c2hybigxKSk7XG4gICAgdmFyIHQgPSB0aGlzLnBvdyhhLCBxKTtcbiAgICB2YXIgbSA9IHM7XG4gICAgd2hpbGUgKHQuY21wKG9uZSkgIT09IDApIHtcbiAgICAgIHZhciB0bXAgPSB0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IHRtcC5jbXAob25lKSAhPT0gMDsgaSsrKSB7XG4gICAgICAgIHRtcCA9IHRtcC5yZWRTcXIoKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydChpIDwgbSk7XG4gICAgICB2YXIgYiA9IHRoaXMucG93KGMsIG5ldyBCTigxKS5pdXNobG4obSAtIGkgLSAxKSk7XG5cbiAgICAgIHIgPSByLnJlZE11bChiKTtcbiAgICAgIGMgPSBiLnJlZFNxcigpO1xuICAgICAgdCA9IHQucmVkTXVsKGMpO1xuICAgICAgbSA9IGk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIHZhciBpbnYgPSBhLl9pbnZtcCh0aGlzLm0pO1xuICAgIGlmIChpbnYubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGludi5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludikucmVkTmVnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KTtcbiAgICB9XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKGEsIG51bSkge1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgaWYgKG51bS5jbXBuKDEpID09PSAwKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIHdpbmRvd1NpemUgPSA0O1xuICAgIHZhciB3bmQgPSBuZXcgQXJyYXkoMSA8PCB3aW5kb3dTaXplKTtcbiAgICB3bmRbMF0gPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgd25kWzFdID0gYTtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IHduZC5sZW5ndGg7IGkrKykge1xuICAgICAgd25kW2ldID0gdGhpcy5tdWwod25kW2kgLSAxXSwgYSk7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IHduZFswXTtcbiAgICB2YXIgY3VycmVudCA9IDA7XG4gICAgdmFyIGN1cnJlbnRMZW4gPSAwO1xuICAgIHZhciBzdGFydCA9IG51bS5iaXRMZW5ndGgoKSAlIDI2O1xuICAgIGlmIChzdGFydCA9PT0gMCkge1xuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSBudW0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gbnVtLndvcmRzW2ldO1xuICAgICAgZm9yICh2YXIgaiA9IHN0YXJ0IC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgdmFyIGJpdCA9ICh3b3JkID4+IGopICYgMTtcbiAgICAgICAgaWYgKHJlcyAhPT0gd25kWzBdKSB7XG4gICAgICAgICAgcmVzID0gdGhpcy5zcXIocmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXQgPT09IDAgJiYgY3VycmVudCA9PT0gMCkge1xuICAgICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudCA8PD0gMTtcbiAgICAgICAgY3VycmVudCB8PSBiaXQ7XG4gICAgICAgIGN1cnJlbnRMZW4rKztcbiAgICAgICAgaWYgKGN1cnJlbnRMZW4gIT09IHdpbmRvd1NpemUgJiYgKGkgIT09IDAgfHwgaiAhPT0gMCkpIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHRoaXMubXVsKHJlcywgd25kW2N1cnJlbnRdKTtcbiAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgIGN1cnJlbnQgPSAwO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICB2YXIgciA9IG51bS51bW9kKHRoaXMubSk7XG5cbiAgICByZXR1cm4gciA9PT0gbnVtID8gci5jbG9uZSgpIDogcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByZXMgPSBudW0uY2xvbmUoKTtcbiAgICByZXMucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vXG4gIC8vIE1vbnRnb21lcnkgbWV0aG9kIGVuZ2luZVxuICAvL1xuXG4gIEJOLm1vbnQgPSBmdW5jdGlvbiBtb250IChudW0pIHtcbiAgICByZXR1cm4gbmV3IE1vbnQobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBNb250IChtKSB7XG4gICAgUmVkLmNhbGwodGhpcywgbSk7XG5cbiAgICB0aGlzLnNoaWZ0ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIGlmICh0aGlzLnNoaWZ0ICUgMjYgIT09IDApIHtcbiAgICAgIHRoaXMuc2hpZnQgKz0gMjYgLSAodGhpcy5zaGlmdCAlIDI2KTtcbiAgICB9XG5cbiAgICB0aGlzLnIgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpO1xuICAgIHRoaXMucjIgPSB0aGlzLmltb2QodGhpcy5yLnNxcigpKTtcbiAgICB0aGlzLnJpbnYgPSB0aGlzLnIuX2ludm1wKHRoaXMubSk7XG5cbiAgICB0aGlzLm1pbnYgPSB0aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSk7XG4gICAgdGhpcy5taW52ID0gdGhpcy5taW52LnVtb2QodGhpcy5yKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLnIuc3ViKHRoaXMubWludik7XG4gIH1cbiAgaW5oZXJpdHMoTW9udCwgUmVkKTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmltb2QobnVtLnVzaGxuKHRoaXMuc2hpZnQpKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgciA9IHRoaXMuaW1vZChudW0ubXVsKHRoaXMucmludikpO1xuICAgIHIucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHtcbiAgICAgIGEud29yZHNbMF0gPSAwO1xuICAgICAgYS5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgdmFyIHQgPSBhLmltdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG5cbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMCkuX2ZvcmNlUmVkKHRoaXMpO1xuXG4gICAgdmFyIHQgPSBhLm11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgLy8gKEFSKV4tMSAqIFJeMiA9IChBXi0xICogUl4tMSkgKiBSXjIgPSBBXi0xICogUlxuICAgIHZhciByZXMgPSB0aGlzLmltb2QoYS5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpO1xuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xufSkodHlwZW9mIG1vZHVsZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbW9kdWxlLCB0aGlzKTtcbiIsIid1c2Ugc3RyaWN0J1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIE1ENSA9IHJlcXVpcmUoJ21kNS5qcycpXG52YXIgUklQRU1EMTYwID0gcmVxdWlyZSgncmlwZW1kMTYwJylcbnZhciBzaGEgPSByZXF1aXJlKCdzaGEuanMnKVxudmFyIEJhc2UgPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG5cbmZ1bmN0aW9uIEhhc2ggKGhhc2gpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2ggPSBoYXNoXG59XG5cbmluaGVyaXRzKEhhc2gsIEJhc2UpXG5cbkhhc2gucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxufVxuXG5IYXNoLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9oYXNoLmRpZ2VzdCgpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlSGFzaCAoYWxnKSB7XG4gIGFsZyA9IGFsZy50b0xvd2VyQ2FzZSgpXG4gIGlmIChhbGcgPT09ICdtZDUnKSByZXR1cm4gbmV3IE1ENSgpXG4gIGlmIChhbGcgPT09ICdybWQxNjAnIHx8IGFsZyA9PT0gJ3JpcGVtZDE2MCcpIHJldHVybiBuZXcgUklQRU1EMTYwKClcblxuICByZXR1cm4gbmV3IEhhc2goc2hhKGFsZykpXG59XG4iLCJ2YXIgTUQ1ID0gcmVxdWlyZSgnbWQ1LmpzJylcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gIHJldHVybiBuZXcgTUQ1KCkudXBkYXRlKGJ1ZmZlcikuZGlnZXN0KClcbn1cbiIsIid1c2Ugc3RyaWN0J1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIExlZ2FjeSA9IHJlcXVpcmUoJy4vbGVnYWN5JylcbnZhciBCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgbWQ1ID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gvbWQ1JylcbnZhciBSSVBFTUQxNjAgPSByZXF1aXJlKCdyaXBlbWQxNjAnKVxuXG52YXIgc2hhID0gcmVxdWlyZSgnc2hhLmpzJylcblxudmFyIFpFUk9TID0gQnVmZmVyLmFsbG9jKDEyOClcblxuZnVuY3Rpb24gSG1hYyAoYWxnLCBrZXkpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycpIHtcbiAgICBrZXkgPSBCdWZmZXIuZnJvbShrZXkpXG4gIH1cblxuICB2YXIgYmxvY2tzaXplID0gKGFsZyA9PT0gJ3NoYTUxMicgfHwgYWxnID09PSAnc2hhMzg0JykgPyAxMjggOiA2NFxuXG4gIHRoaXMuX2FsZyA9IGFsZ1xuICB0aGlzLl9rZXkgPSBrZXlcbiAgaWYgKGtleS5sZW5ndGggPiBibG9ja3NpemUpIHtcbiAgICB2YXIgaGFzaCA9IGFsZyA9PT0gJ3JtZDE2MCcgPyBuZXcgUklQRU1EMTYwKCkgOiBzaGEoYWxnKVxuICAgIGtleSA9IGhhc2gudXBkYXRlKGtleSkuZGlnZXN0KClcbiAgfSBlbHNlIGlmIChrZXkubGVuZ3RoIDwgYmxvY2tzaXplKSB7XG4gICAga2V5ID0gQnVmZmVyLmNvbmNhdChba2V5LCBaRVJPU10sIGJsb2Nrc2l6ZSlcbiAgfVxuXG4gIHZhciBpcGFkID0gdGhpcy5faXBhZCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja3NpemUpXG4gIHZhciBvcGFkID0gdGhpcy5fb3BhZCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja3NpemUpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja3NpemU7IGkrKykge1xuICAgIGlwYWRbaV0gPSBrZXlbaV0gXiAweDM2XG4gICAgb3BhZFtpXSA9IGtleVtpXSBeIDB4NUNcbiAgfVxuICB0aGlzLl9oYXNoID0gYWxnID09PSAncm1kMTYwJyA/IG5ldyBSSVBFTUQxNjAoKSA6IHNoYShhbGcpXG4gIHRoaXMuX2hhc2gudXBkYXRlKGlwYWQpXG59XG5cbmluaGVyaXRzKEhtYWMsIEJhc2UpXG5cbkhtYWMucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxufVxuXG5IbWFjLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBoID0gdGhpcy5faGFzaC5kaWdlc3QoKVxuICB2YXIgaGFzaCA9IHRoaXMuX2FsZyA9PT0gJ3JtZDE2MCcgPyBuZXcgUklQRU1EMTYwKCkgOiBzaGEodGhpcy5fYWxnKVxuICByZXR1cm4gaGFzaC51cGRhdGUodGhpcy5fb3BhZCkudXBkYXRlKGgpLmRpZ2VzdCgpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlSG1hYyAoYWxnLCBrZXkpIHtcbiAgYWxnID0gYWxnLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFsZyA9PT0gJ3JtZDE2MCcgfHwgYWxnID09PSAncmlwZW1kMTYwJykge1xuICAgIHJldHVybiBuZXcgSG1hYygncm1kMTYwJywga2V5KVxuICB9XG4gIGlmIChhbGcgPT09ICdtZDUnKSB7XG4gICAgcmV0dXJuIG5ldyBMZWdhY3kobWQ1LCBrZXkpXG4gIH1cbiAgcmV0dXJuIG5ldyBIbWFjKGFsZywga2V5KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIEJhc2UgPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG5cbnZhciBaRVJPUyA9IEJ1ZmZlci5hbGxvYygxMjgpXG52YXIgYmxvY2tzaXplID0gNjRcblxuZnVuY3Rpb24gSG1hYyAoYWxnLCBrZXkpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycpIHtcbiAgICBrZXkgPSBCdWZmZXIuZnJvbShrZXkpXG4gIH1cblxuICB0aGlzLl9hbGcgPSBhbGdcbiAgdGhpcy5fa2V5ID0ga2V5XG5cbiAgaWYgKGtleS5sZW5ndGggPiBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBhbGcoa2V5KVxuICB9IGVsc2UgaWYgKGtleS5sZW5ndGggPCBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBCdWZmZXIuY29uY2F0KFtrZXksIFpFUk9TXSwgYmxvY2tzaXplKVxuICB9XG5cbiAgdmFyIGlwYWQgPSB0aGlzLl9pcGFkID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2Nrc2l6ZSlcbiAgdmFyIG9wYWQgPSB0aGlzLl9vcGFkID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2Nrc2l6ZSlcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGJsb2Nrc2l6ZTsgaSsrKSB7XG4gICAgaXBhZFtpXSA9IGtleVtpXSBeIDB4MzZcbiAgICBvcGFkW2ldID0ga2V5W2ldIF4gMHg1Q1xuICB9XG5cbiAgdGhpcy5faGFzaCA9IFtpcGFkXVxufVxuXG5pbmhlcml0cyhIbWFjLCBCYXNlKVxuXG5IbWFjLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgdGhpcy5faGFzaC5wdXNoKGRhdGEpXG59XG5cbkhtYWMucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGggPSB0aGlzLl9hbGcoQnVmZmVyLmNvbmNhdCh0aGlzLl9oYXNoKSlcbiAgcmV0dXJuIHRoaXMuX2FsZyhCdWZmZXIuY29uY2F0KFt0aGlzLl9vcGFkLCBoXSkpXG59XG5tb2R1bGUuZXhwb3J0cyA9IEhtYWNcbiIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLnJhbmRvbUJ5dGVzID0gZXhwb3J0cy5ybmcgPSBleHBvcnRzLnBzZXVkb1JhbmRvbUJ5dGVzID0gZXhwb3J0cy5wcm5nID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKVxuZXhwb3J0cy5jcmVhdGVIYXNoID0gZXhwb3J0cy5IYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxuZXhwb3J0cy5jcmVhdGVIbWFjID0gZXhwb3J0cy5IbWFjID0gcmVxdWlyZSgnY3JlYXRlLWhtYWMnKVxuXG52YXIgYWxnb3MgPSByZXF1aXJlKCdicm93c2VyaWZ5LXNpZ24vYWxnb3MnKVxudmFyIGFsZ29LZXlzID0gT2JqZWN0LmtleXMoYWxnb3MpXG52YXIgaGFzaGVzID0gWydzaGExJywgJ3NoYTIyNCcsICdzaGEyNTYnLCAnc2hhMzg0JywgJ3NoYTUxMicsICdtZDUnLCAncm1kMTYwJ10uY29uY2F0KGFsZ29LZXlzKVxuZXhwb3J0cy5nZXRIYXNoZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBoYXNoZXNcbn1cblxudmFyIHAgPSByZXF1aXJlKCdwYmtkZjInKVxuZXhwb3J0cy5wYmtkZjIgPSBwLnBia2RmMlxuZXhwb3J0cy5wYmtkZjJTeW5jID0gcC5wYmtkZjJTeW5jXG5cbnZhciBhZXMgPSByZXF1aXJlKCdicm93c2VyaWZ5LWNpcGhlcicpXG5cbmV4cG9ydHMuQ2lwaGVyID0gYWVzLkNpcGhlclxuZXhwb3J0cy5jcmVhdGVDaXBoZXIgPSBhZXMuY3JlYXRlQ2lwaGVyXG5leHBvcnRzLkNpcGhlcml2ID0gYWVzLkNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gYWVzLmNyZWF0ZUNpcGhlcml2XG5leHBvcnRzLkRlY2lwaGVyID0gYWVzLkRlY2lwaGVyXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyID0gYWVzLmNyZWF0ZURlY2lwaGVyXG5leHBvcnRzLkRlY2lwaGVyaXYgPSBhZXMuRGVjaXBoZXJpdlxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlcml2ID0gYWVzLmNyZWF0ZURlY2lwaGVyaXZcbmV4cG9ydHMuZ2V0Q2lwaGVycyA9IGFlcy5nZXRDaXBoZXJzXG5leHBvcnRzLmxpc3RDaXBoZXJzID0gYWVzLmxpc3RDaXBoZXJzXG5cbnZhciBkaCA9IHJlcXVpcmUoJ2RpZmZpZS1oZWxsbWFuJylcblxuZXhwb3J0cy5EaWZmaWVIZWxsbWFuR3JvdXAgPSBkaC5EaWZmaWVIZWxsbWFuR3JvdXBcbmV4cG9ydHMuY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwID0gZGguY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwXG5leHBvcnRzLmdldERpZmZpZUhlbGxtYW4gPSBkaC5nZXREaWZmaWVIZWxsbWFuXG5leHBvcnRzLmNyZWF0ZURpZmZpZUhlbGxtYW4gPSBkaC5jcmVhdGVEaWZmaWVIZWxsbWFuXG5leHBvcnRzLkRpZmZpZUhlbGxtYW4gPSBkaC5EaWZmaWVIZWxsbWFuXG5cbnZhciBzaWduID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1zaWduJylcblxuZXhwb3J0cy5jcmVhdGVTaWduID0gc2lnbi5jcmVhdGVTaWduXG5leHBvcnRzLlNpZ24gPSBzaWduLlNpZ25cbmV4cG9ydHMuY3JlYXRlVmVyaWZ5ID0gc2lnbi5jcmVhdGVWZXJpZnlcbmV4cG9ydHMuVmVyaWZ5ID0gc2lnbi5WZXJpZnlcblxuZXhwb3J0cy5jcmVhdGVFQ0RIID0gcmVxdWlyZSgnY3JlYXRlLWVjZGgnKVxuXG52YXIgcHVibGljRW5jcnlwdCA9IHJlcXVpcmUoJ3B1YmxpYy1lbmNyeXB0JylcblxuZXhwb3J0cy5wdWJsaWNFbmNyeXB0ID0gcHVibGljRW5jcnlwdC5wdWJsaWNFbmNyeXB0XG5leHBvcnRzLnByaXZhdGVFbmNyeXB0ID0gcHVibGljRW5jcnlwdC5wcml2YXRlRW5jcnlwdFxuZXhwb3J0cy5wdWJsaWNEZWNyeXB0ID0gcHVibGljRW5jcnlwdC5wdWJsaWNEZWNyeXB0XG5leHBvcnRzLnByaXZhdGVEZWNyeXB0ID0gcHVibGljRW5jcnlwdC5wcml2YXRlRGVjcnlwdFxuXG4vLyB0aGUgbGVhc3QgSSBjYW4gZG8gaXMgbWFrZSBlcnJvciBtZXNzYWdlcyBmb3IgdGhlIHJlc3Qgb2YgdGhlIG5vZGUuanMvY3J5cHRvIGFwaS5cbi8vIDtbXG4vLyAgICdjcmVhdGVDcmVkZW50aWFscydcbi8vIF0uZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuLy8gICBleHBvcnRzW25hbWVdID0gZnVuY3Rpb24gKCkge1xuLy8gICAgIHRocm93IG5ldyBFcnJvcihbXG4vLyAgICAgICAnc29ycnksICcgKyBuYW1lICsgJyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0Jyxcbi8vICAgICAgICd3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cycsXG4vLyAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL2NyeXB0by1icm93c2VyaWZ5L2NyeXB0by1icm93c2VyaWZ5J1xuLy8gICAgIF0uam9pbignXFxuJykpXG4vLyAgIH1cbi8vIH0pXG5cbnZhciByZiA9IHJlcXVpcmUoJ3JhbmRvbWZpbGwnKVxuXG5leHBvcnRzLnJhbmRvbUZpbGwgPSByZi5yYW5kb21GaWxsXG5leHBvcnRzLnJhbmRvbUZpbGxTeW5jID0gcmYucmFuZG9tRmlsbFN5bmNcblxuZXhwb3J0cy5jcmVhdGVDcmVkZW50aWFscyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKFtcbiAgICAnc29ycnksIGNyZWF0ZUNyZWRlbnRpYWxzIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQnLFxuICAgICd3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cycsXG4gICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9jcnlwdG8tYnJvd3NlcmlmeS9jcnlwdG8tYnJvd3NlcmlmeSdcbiAgXS5qb2luKCdcXG4nKSlcbn1cblxuZXhwb3J0cy5jb25zdGFudHMgPSB7XG4gICdESF9DSEVDS19QX05PVF9TQUZFX1BSSU1FJzogMixcbiAgJ0RIX0NIRUNLX1BfTk9UX1BSSU1FJzogMSxcbiAgJ0RIX1VOQUJMRV9UT19DSEVDS19HRU5FUkFUT1InOiA0LFxuICAnREhfTk9UX1NVSVRBQkxFX0dFTkVSQVRPUic6IDgsXG4gICdOUE5fRU5BQkxFRCc6IDEsXG4gICdBTFBOX0VOQUJMRUQnOiAxLFxuICAnUlNBX1BLQ1MxX1BBRERJTkcnOiAxLFxuICAnUlNBX1NTTFYyM19QQURESU5HJzogMixcbiAgJ1JTQV9OT19QQURESU5HJzogMyxcbiAgJ1JTQV9QS0NTMV9PQUVQX1BBRERJTkcnOiA0LFxuICAnUlNBX1g5MzFfUEFERElORyc6IDUsXG4gICdSU0FfUEtDUzFfUFNTX1BBRERJTkcnOiA2LFxuICAnUE9JTlRfQ09OVkVSU0lPTl9DT01QUkVTU0VEJzogMixcbiAgJ1BPSU5UX0NPTlZFUlNJT05fVU5DT01QUkVTU0VEJzogNCxcbiAgJ1BPSU5UX0NPTlZFUlNJT05fSFlCUklEJzogNlxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIga2V5cyA9IHJlcXVpcmUoJ29iamVjdC1rZXlzJyk7XG52YXIgaGFzU3ltYm9scyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIFN5bWJvbCgnZm9vJykgPT09ICdzeW1ib2wnO1xuXG52YXIgdG9TdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIGNvbmNhdCA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQ7XG52YXIgb3JpZ0RlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG52YXIgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uIChmbikge1xuXHRyZXR1cm4gdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nICYmIHRvU3RyLmNhbGwoZm4pID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xufTtcblxudmFyIGFyZVByb3BlcnR5RGVzY3JpcHRvcnNTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBvYmogPSB7fTtcblx0dHJ5IHtcblx0XHRvcmlnRGVmaW5lUHJvcGVydHkob2JqLCAneCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiBvYmogfSk7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBuby1yZXN0cmljdGVkLXN5bnRheFxuXHRcdGZvciAodmFyIF8gaW4gb2JqKSB7IC8vIGpzY3M6aWdub3JlIGRpc2FsbG93VW51c2VkVmFyaWFibGVzXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiBvYmoueCA9PT0gb2JqO1xuXHR9IGNhdGNoIChlKSB7IC8qIHRoaXMgaXMgSUUgOC4gKi9cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn07XG52YXIgc3VwcG9ydHNEZXNjcmlwdG9ycyA9IG9yaWdEZWZpbmVQcm9wZXJ0eSAmJiBhcmVQcm9wZXJ0eURlc2NyaXB0b3JzU3VwcG9ydGVkKCk7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWUsIHZhbHVlLCBwcmVkaWNhdGUpIHtcblx0aWYgKG5hbWUgaW4gb2JqZWN0ICYmICghaXNGdW5jdGlvbihwcmVkaWNhdGUpIHx8ICFwcmVkaWNhdGUoKSkpIHtcblx0XHRyZXR1cm47XG5cdH1cblx0aWYgKHN1cHBvcnRzRGVzY3JpcHRvcnMpIHtcblx0XHRvcmlnRGVmaW5lUHJvcGVydHkob2JqZWN0LCBuYW1lLCB7XG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHRlbnVtZXJhYmxlOiBmYWxzZSxcblx0XHRcdHZhbHVlOiB2YWx1ZSxcblx0XHRcdHdyaXRhYmxlOiB0cnVlXG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0b2JqZWN0W25hbWVdID0gdmFsdWU7XG5cdH1cbn07XG5cbnZhciBkZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKG9iamVjdCwgbWFwKSB7XG5cdHZhciBwcmVkaWNhdGVzID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB7fTtcblx0dmFyIHByb3BzID0ga2V5cyhtYXApO1xuXHRpZiAoaGFzU3ltYm9scykge1xuXHRcdHByb3BzID0gY29uY2F0LmNhbGwocHJvcHMsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobWFwKSk7XG5cdH1cblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkgKz0gMSkge1xuXHRcdGRlZmluZVByb3BlcnR5KG9iamVjdCwgcHJvcHNbaV0sIG1hcFtwcm9wc1tpXV0sIHByZWRpY2F0ZXNbcHJvcHNbaV1dKTtcblx0fVxufTtcblxuZGVmaW5lUHJvcGVydGllcy5zdXBwb3J0c0Rlc2NyaXB0b3JzID0gISFzdXBwb3J0c0Rlc2NyaXB0b3JzO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZVByb3BlcnRpZXM7XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMudXRpbHMgPSByZXF1aXJlKCcuL2Rlcy91dGlscycpO1xuZXhwb3J0cy5DaXBoZXIgPSByZXF1aXJlKCcuL2Rlcy9jaXBoZXInKTtcbmV4cG9ydHMuREVTID0gcmVxdWlyZSgnLi9kZXMvZGVzJyk7XG5leHBvcnRzLkNCQyA9IHJlcXVpcmUoJy4vZGVzL2NiYycpO1xuZXhwb3J0cy5FREUgPSByZXF1aXJlKCcuL2Rlcy9lZGUnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBwcm90byA9IHt9O1xuXG5mdW5jdGlvbiBDQkNTdGF0ZShpdikge1xuICBhc3NlcnQuZXF1YWwoaXYubGVuZ3RoLCA4LCAnSW52YWxpZCBJViBsZW5ndGgnKTtcblxuICB0aGlzLml2ID0gbmV3IEFycmF5KDgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXYubGVuZ3RoOyBpKyspXG4gICAgdGhpcy5pdltpXSA9IGl2W2ldO1xufVxuXG5mdW5jdGlvbiBpbnN0YW50aWF0ZShCYXNlKSB7XG4gIGZ1bmN0aW9uIENCQyhvcHRpb25zKSB7XG4gICAgQmFzZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICAgIHRoaXMuX2NiY0luaXQoKTtcbiAgfVxuICBpbmhlcml0cyhDQkMsIEJhc2UpO1xuXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMocHJvdG8pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBDQkMucHJvdG90eXBlW2tleV0gPSBwcm90b1trZXldO1xuICB9XG5cbiAgQ0JDLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBDQkMob3B0aW9ucyk7XG4gIH07XG5cbiAgcmV0dXJuIENCQztcbn1cblxuZXhwb3J0cy5pbnN0YW50aWF0ZSA9IGluc3RhbnRpYXRlO1xuXG5wcm90by5fY2JjSW5pdCA9IGZ1bmN0aW9uIF9jYmNJbml0KCkge1xuICB2YXIgc3RhdGUgPSBuZXcgQ0JDU3RhdGUodGhpcy5vcHRpb25zLml2KTtcbiAgdGhpcy5fY2JjU3RhdGUgPSBzdGF0ZTtcbn07XG5cbnByb3RvLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2NiY1N0YXRlO1xuICB2YXIgc3VwZXJQcm90byA9IHRoaXMuY29uc3RydWN0b3Iuc3VwZXJfLnByb3RvdHlwZTtcblxuICB2YXIgaXYgPSBzdGF0ZS5pdjtcbiAgaWYgKHRoaXMudHlwZSA9PT0gJ2VuY3J5cHQnKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgaXZbaV0gXj0gaW5wW2luT2ZmICsgaV07XG5cbiAgICBzdXBlclByb3RvLl91cGRhdGUuY2FsbCh0aGlzLCBpdiwgMCwgb3V0LCBvdXRPZmYpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgaXZbaV0gPSBvdXRbb3V0T2ZmICsgaV07XG4gIH0gZWxzZSB7XG4gICAgc3VwZXJQcm90by5fdXBkYXRlLmNhbGwodGhpcywgaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgb3V0W291dE9mZiArIGldIF49IGl2W2ldO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgaXZbaV0gPSBpbnBbaW5PZmYgKyBpXTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxuZnVuY3Rpb24gQ2lwaGVyKG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICB0aGlzLnR5cGUgPSB0aGlzLm9wdGlvbnMudHlwZTtcbiAgdGhpcy5ibG9ja1NpemUgPSA4O1xuICB0aGlzLl9pbml0KCk7XG5cbiAgdGhpcy5idWZmZXIgPSBuZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO1xuICB0aGlzLmJ1ZmZlck9mZiA9IDA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IENpcGhlcjtcblxuQ2lwaGVyLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIF9pbml0KCkge1xuICAvLyBNaWdodCBiZSBvdmVycmlkZWRcbn07XG5cbkNpcGhlci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKGRhdGEpIHtcbiAgaWYgKGRhdGEubGVuZ3RoID09PSAwKVxuICAgIHJldHVybiBbXTtcblxuICBpZiAodGhpcy50eXBlID09PSAnZGVjcnlwdCcpXG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZURlY3J5cHQoZGF0YSk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fdXBkYXRlRW5jcnlwdChkYXRhKTtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2J1ZmZlciA9IGZ1bmN0aW9uIF9idWZmZXIoZGF0YSwgb2ZmKSB7XG4gIC8vIEFwcGVuZCBkYXRhIHRvIGJ1ZmZlclxuICB2YXIgbWluID0gTWF0aC5taW4odGhpcy5idWZmZXIubGVuZ3RoIC0gdGhpcy5idWZmZXJPZmYsIGRhdGEubGVuZ3RoIC0gb2ZmKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaW47IGkrKylcbiAgICB0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZiArIGldID0gZGF0YVtvZmYgKyBpXTtcbiAgdGhpcy5idWZmZXJPZmYgKz0gbWluO1xuXG4gIC8vIFNoaWZ0IG5leHRcbiAgcmV0dXJuIG1pbjtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2ZsdXNoQnVmZmVyID0gZnVuY3Rpb24gX2ZsdXNoQnVmZmVyKG91dCwgb2ZmKSB7XG4gIHRoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwgMCwgb3V0LCBvZmYpO1xuICB0aGlzLmJ1ZmZlck9mZiA9IDA7XG4gIHJldHVybiB0aGlzLmJsb2NrU2l6ZTtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZUVuY3J5cHQgPSBmdW5jdGlvbiBfdXBkYXRlRW5jcnlwdChkYXRhKSB7XG4gIHZhciBpbnB1dE9mZiA9IDA7XG4gIHZhciBvdXRwdXRPZmYgPSAwO1xuXG4gIHZhciBjb3VudCA9ICgodGhpcy5idWZmZXJPZmYgKyBkYXRhLmxlbmd0aCkgLyB0aGlzLmJsb2NrU2l6ZSkgfCAwO1xuICB2YXIgb3V0ID0gbmV3IEFycmF5KGNvdW50ICogdGhpcy5ibG9ja1NpemUpO1xuXG4gIGlmICh0aGlzLmJ1ZmZlck9mZiAhPT0gMCkge1xuICAgIGlucHV0T2ZmICs9IHRoaXMuX2J1ZmZlcihkYXRhLCBpbnB1dE9mZik7XG5cbiAgICBpZiAodGhpcy5idWZmZXJPZmYgPT09IHRoaXMuYnVmZmVyLmxlbmd0aClcbiAgICAgIG91dHB1dE9mZiArPSB0aGlzLl9mbHVzaEJ1ZmZlcihvdXQsIG91dHB1dE9mZik7XG4gIH1cblxuICAvLyBXcml0ZSBibG9ja3NcbiAgdmFyIG1heCA9IGRhdGEubGVuZ3RoIC0gKChkYXRhLmxlbmd0aCAtIGlucHV0T2ZmKSAlIHRoaXMuYmxvY2tTaXplKTtcbiAgZm9yICg7IGlucHV0T2ZmIDwgbWF4OyBpbnB1dE9mZiArPSB0aGlzLmJsb2NrU2l6ZSkge1xuICAgIHRoaXMuX3VwZGF0ZShkYXRhLCBpbnB1dE9mZiwgb3V0LCBvdXRwdXRPZmYpO1xuICAgIG91dHB1dE9mZiArPSB0aGlzLmJsb2NrU2l6ZTtcbiAgfVxuXG4gIC8vIFF1ZXVlIHJlc3RcbiAgZm9yICg7IGlucHV0T2ZmIDwgZGF0YS5sZW5ndGg7IGlucHV0T2ZmKyssIHRoaXMuYnVmZmVyT2ZmKyspXG4gICAgdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmZdID0gZGF0YVtpbnB1dE9mZl07XG5cbiAgcmV0dXJuIG91dDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZURlY3J5cHQgPSBmdW5jdGlvbiBfdXBkYXRlRGVjcnlwdChkYXRhKSB7XG4gIHZhciBpbnB1dE9mZiA9IDA7XG4gIHZhciBvdXRwdXRPZmYgPSAwO1xuXG4gIHZhciBjb3VudCA9IE1hdGguY2VpbCgodGhpcy5idWZmZXJPZmYgKyBkYXRhLmxlbmd0aCkgLyB0aGlzLmJsb2NrU2l6ZSkgLSAxO1xuICB2YXIgb3V0ID0gbmV3IEFycmF5KGNvdW50ICogdGhpcy5ibG9ja1NpemUpO1xuXG4gIC8vIFRPRE8oaW5kdXRueSk6IG9wdGltaXplIGl0LCB0aGlzIGlzIGZhciBmcm9tIG9wdGltYWxcbiAgZm9yICg7IGNvdW50ID4gMDsgY291bnQtLSkge1xuICAgIGlucHV0T2ZmICs9IHRoaXMuX2J1ZmZlcihkYXRhLCBpbnB1dE9mZik7XG4gICAgb3V0cHV0T2ZmICs9IHRoaXMuX2ZsdXNoQnVmZmVyKG91dCwgb3V0cHV0T2ZmKTtcbiAgfVxuXG4gIC8vIEJ1ZmZlciByZXN0IG9mIHRoZSBpbnB1dFxuICBpbnB1dE9mZiArPSB0aGlzLl9idWZmZXIoZGF0YSwgaW5wdXRPZmYpO1xuXG4gIHJldHVybiBvdXQ7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLmZpbmFsID0gZnVuY3Rpb24gZmluYWwoYnVmZmVyKSB7XG4gIHZhciBmaXJzdDtcbiAgaWYgKGJ1ZmZlcilcbiAgICBmaXJzdCA9IHRoaXMudXBkYXRlKGJ1ZmZlcik7XG5cbiAgdmFyIGxhc3Q7XG4gIGlmICh0aGlzLnR5cGUgPT09ICdlbmNyeXB0JylcbiAgICBsYXN0ID0gdGhpcy5fZmluYWxFbmNyeXB0KCk7XG4gIGVsc2VcbiAgICBsYXN0ID0gdGhpcy5fZmluYWxEZWNyeXB0KCk7XG5cbiAgaWYgKGZpcnN0KVxuICAgIHJldHVybiBmaXJzdC5jb25jYXQobGFzdCk7XG4gIGVsc2VcbiAgICByZXR1cm4gbGFzdDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3BhZCA9IGZ1bmN0aW9uIF9wYWQoYnVmZmVyLCBvZmYpIHtcbiAgaWYgKG9mZiA9PT0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgd2hpbGUgKG9mZiA8IGJ1ZmZlci5sZW5ndGgpXG4gICAgYnVmZmVyW29mZisrXSA9IDA7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9maW5hbEVuY3J5cHQgPSBmdW5jdGlvbiBfZmluYWxFbmNyeXB0KCkge1xuICBpZiAoIXRoaXMuX3BhZCh0aGlzLmJ1ZmZlciwgdGhpcy5idWZmZXJPZmYpKVxuICAgIHJldHVybiBbXTtcblxuICB2YXIgb3V0ID0gbmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtcbiAgdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLCAwLCBvdXQsIDApO1xuICByZXR1cm4gb3V0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fdW5wYWQgPSBmdW5jdGlvbiBfdW5wYWQoYnVmZmVyKSB7XG4gIHJldHVybiBidWZmZXI7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9maW5hbERlY3J5cHQgPSBmdW5jdGlvbiBfZmluYWxEZWNyeXB0KCkge1xuICBhc3NlcnQuZXF1YWwodGhpcy5idWZmZXJPZmYsIHRoaXMuYmxvY2tTaXplLCAnTm90IGVub3VnaCBkYXRhIHRvIGRlY3J5cHQnKTtcbiAgdmFyIG91dCA9IG5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7XG4gIHRoaXMuX2ZsdXNoQnVmZmVyKG91dCwgMCk7XG5cbiAgcmV0dXJuIHRoaXMuX3VucGFkKG91dCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIENpcGhlciA9IHJlcXVpcmUoJy4vY2lwaGVyJyk7XG5cbmZ1bmN0aW9uIERFU1N0YXRlKCkge1xuICB0aGlzLnRtcCA9IG5ldyBBcnJheSgyKTtcbiAgdGhpcy5rZXlzID0gbnVsbDtcbn1cblxuZnVuY3Rpb24gREVTKG9wdGlvbnMpIHtcbiAgQ2lwaGVyLmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgdmFyIHN0YXRlID0gbmV3IERFU1N0YXRlKCk7XG4gIHRoaXMuX2Rlc1N0YXRlID0gc3RhdGU7XG5cbiAgdGhpcy5kZXJpdmVLZXlzKHN0YXRlLCBvcHRpb25zLmtleSk7XG59XG5pbmhlcml0cyhERVMsIENpcGhlcik7XG5tb2R1bGUuZXhwb3J0cyA9IERFUztcblxuREVTLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgREVTKG9wdGlvbnMpO1xufTtcblxudmFyIHNoaWZ0VGFibGUgPSBbXG4gIDEsIDEsIDIsIDIsIDIsIDIsIDIsIDIsXG4gIDEsIDIsIDIsIDIsIDIsIDIsIDIsIDFcbl07XG5cbkRFUy5wcm90b3R5cGUuZGVyaXZlS2V5cyA9IGZ1bmN0aW9uIGRlcml2ZUtleXMoc3RhdGUsIGtleSkge1xuICBzdGF0ZS5rZXlzID0gbmV3IEFycmF5KDE2ICogMik7XG5cbiAgYXNzZXJ0LmVxdWFsKGtleS5sZW5ndGgsIHRoaXMuYmxvY2tTaXplLCAnSW52YWxpZCBrZXkgbGVuZ3RoJyk7XG5cbiAgdmFyIGtMID0gdXRpbHMucmVhZFVJbnQzMkJFKGtleSwgMCk7XG4gIHZhciBrUiA9IHV0aWxzLnJlYWRVSW50MzJCRShrZXksIDQpO1xuXG4gIHV0aWxzLnBjMShrTCwga1IsIHN0YXRlLnRtcCwgMCk7XG4gIGtMID0gc3RhdGUudG1wWzBdO1xuICBrUiA9IHN0YXRlLnRtcFsxXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGF0ZS5rZXlzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIHNoaWZ0ID0gc2hpZnRUYWJsZVtpID4+PiAxXTtcbiAgICBrTCA9IHV0aWxzLnIyOHNobChrTCwgc2hpZnQpO1xuICAgIGtSID0gdXRpbHMucjI4c2hsKGtSLCBzaGlmdCk7XG4gICAgdXRpbHMucGMyKGtMLCBrUiwgc3RhdGUua2V5cywgaSk7XG4gIH1cbn07XG5cbkRFUy5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUoaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fZGVzU3RhdGU7XG5cbiAgdmFyIGwgPSB1dGlscy5yZWFkVUludDMyQkUoaW5wLCBpbk9mZik7XG4gIHZhciByID0gdXRpbHMucmVhZFVJbnQzMkJFKGlucCwgaW5PZmYgKyA0KTtcblxuICAvLyBJbml0aWFsIFBlcm11dGF0aW9uXG4gIHV0aWxzLmlwKGwsIHIsIHN0YXRlLnRtcCwgMCk7XG4gIGwgPSBzdGF0ZS50bXBbMF07XG4gIHIgPSBzdGF0ZS50bXBbMV07XG5cbiAgaWYgKHRoaXMudHlwZSA9PT0gJ2VuY3J5cHQnKVxuICAgIHRoaXMuX2VuY3J5cHQoc3RhdGUsIGwsIHIsIHN0YXRlLnRtcCwgMCk7XG4gIGVsc2VcbiAgICB0aGlzLl9kZWNyeXB0KHN0YXRlLCBsLCByLCBzdGF0ZS50bXAsIDApO1xuXG4gIGwgPSBzdGF0ZS50bXBbMF07XG4gIHIgPSBzdGF0ZS50bXBbMV07XG5cbiAgdXRpbHMud3JpdGVVSW50MzJCRShvdXQsIGwsIG91dE9mZik7XG4gIHV0aWxzLndyaXRlVUludDMyQkUob3V0LCByLCBvdXRPZmYgKyA0KTtcbn07XG5cbkRFUy5wcm90b3R5cGUuX3BhZCA9IGZ1bmN0aW9uIF9wYWQoYnVmZmVyLCBvZmYpIHtcbiAgdmFyIHZhbHVlID0gYnVmZmVyLmxlbmd0aCAtIG9mZjtcbiAgZm9yICh2YXIgaSA9IG9mZjsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkrKylcbiAgICBidWZmZXJbaV0gPSB2YWx1ZTtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkRFUy5wcm90b3R5cGUuX3VucGFkID0gZnVuY3Rpb24gX3VucGFkKGJ1ZmZlcikge1xuICB2YXIgcGFkID0gYnVmZmVyW2J1ZmZlci5sZW5ndGggLSAxXTtcbiAgZm9yICh2YXIgaSA9IGJ1ZmZlci5sZW5ndGggLSBwYWQ7IGkgPCBidWZmZXIubGVuZ3RoOyBpKyspXG4gICAgYXNzZXJ0LmVxdWFsKGJ1ZmZlcltpXSwgcGFkKTtcblxuICByZXR1cm4gYnVmZmVyLnNsaWNlKDAsIGJ1ZmZlci5sZW5ndGggLSBwYWQpO1xufTtcblxuREVTLnByb3RvdHlwZS5fZW5jcnlwdCA9IGZ1bmN0aW9uIF9lbmNyeXB0KHN0YXRlLCBsU3RhcnQsIHJTdGFydCwgb3V0LCBvZmYpIHtcbiAgdmFyIGwgPSBsU3RhcnQ7XG4gIHZhciByID0gclN0YXJ0O1xuXG4gIC8vIEFwcGx5IGYoKSB4MTYgdGltZXNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGF0ZS5rZXlzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIGtleUwgPSBzdGF0ZS5rZXlzW2ldO1xuICAgIHZhciBrZXlSID0gc3RhdGUua2V5c1tpICsgMV07XG5cbiAgICAvLyBmKHIsIGspXG4gICAgdXRpbHMuZXhwYW5kKHIsIHN0YXRlLnRtcCwgMCk7XG5cbiAgICBrZXlMIF49IHN0YXRlLnRtcFswXTtcbiAgICBrZXlSIF49IHN0YXRlLnRtcFsxXTtcbiAgICB2YXIgcyA9IHV0aWxzLnN1YnN0aXR1dGUoa2V5TCwga2V5Uik7XG4gICAgdmFyIGYgPSB1dGlscy5wZXJtdXRlKHMpO1xuXG4gICAgdmFyIHQgPSByO1xuICAgIHIgPSAobCBeIGYpID4+PiAwO1xuICAgIGwgPSB0O1xuICB9XG5cbiAgLy8gUmV2ZXJzZSBJbml0aWFsIFBlcm11dGF0aW9uXG4gIHV0aWxzLnJpcChyLCBsLCBvdXQsIG9mZik7XG59O1xuXG5ERVMucHJvdG90eXBlLl9kZWNyeXB0ID0gZnVuY3Rpb24gX2RlY3J5cHQoc3RhdGUsIGxTdGFydCwgclN0YXJ0LCBvdXQsIG9mZikge1xuICB2YXIgbCA9IHJTdGFydDtcbiAgdmFyIHIgPSBsU3RhcnQ7XG5cbiAgLy8gQXBwbHkgZigpIHgxNiB0aW1lc1xuICBmb3IgKHZhciBpID0gc3RhdGUua2V5cy5sZW5ndGggLSAyOyBpID49IDA7IGkgLT0gMikge1xuICAgIHZhciBrZXlMID0gc3RhdGUua2V5c1tpXTtcbiAgICB2YXIga2V5UiA9IHN0YXRlLmtleXNbaSArIDFdO1xuXG4gICAgLy8gZihyLCBrKVxuICAgIHV0aWxzLmV4cGFuZChsLCBzdGF0ZS50bXAsIDApO1xuXG4gICAga2V5TCBePSBzdGF0ZS50bXBbMF07XG4gICAga2V5UiBePSBzdGF0ZS50bXBbMV07XG4gICAgdmFyIHMgPSB1dGlscy5zdWJzdGl0dXRlKGtleUwsIGtleVIpO1xuICAgIHZhciBmID0gdXRpbHMucGVybXV0ZShzKTtcblxuICAgIHZhciB0ID0gbDtcbiAgICBsID0gKHIgXiBmKSA+Pj4gMDtcbiAgICByID0gdDtcbiAgfVxuXG4gIC8vIFJldmVyc2UgSW5pdGlhbCBQZXJtdXRhdGlvblxuICB1dGlscy5yaXAobCwgciwgb3V0LCBvZmYpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBDaXBoZXIgPSByZXF1aXJlKCcuL2NpcGhlcicpO1xudmFyIERFUyA9IHJlcXVpcmUoJy4vZGVzJyk7XG5cbmZ1bmN0aW9uIEVERVN0YXRlKHR5cGUsIGtleSkge1xuICBhc3NlcnQuZXF1YWwoa2V5Lmxlbmd0aCwgMjQsICdJbnZhbGlkIGtleSBsZW5ndGgnKTtcblxuICB2YXIgazEgPSBrZXkuc2xpY2UoMCwgOCk7XG4gIHZhciBrMiA9IGtleS5zbGljZSg4LCAxNik7XG4gIHZhciBrMyA9IGtleS5zbGljZSgxNiwgMjQpO1xuXG4gIGlmICh0eXBlID09PSAnZW5jcnlwdCcpIHtcbiAgICB0aGlzLmNpcGhlcnMgPSBbXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2VuY3J5cHQnLCBrZXk6IGsxIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdkZWNyeXB0Jywga2V5OiBrMiB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZW5jcnlwdCcsIGtleTogazMgfSlcbiAgICBdO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuY2lwaGVycyA9IFtcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZGVjcnlwdCcsIGtleTogazMgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2VuY3J5cHQnLCBrZXk6IGsyIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdkZWNyeXB0Jywga2V5OiBrMSB9KVxuICAgIF07XG4gIH1cbn1cblxuZnVuY3Rpb24gRURFKG9wdGlvbnMpIHtcbiAgQ2lwaGVyLmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgdmFyIHN0YXRlID0gbmV3IEVERVN0YXRlKHRoaXMudHlwZSwgdGhpcy5vcHRpb25zLmtleSk7XG4gIHRoaXMuX2VkZVN0YXRlID0gc3RhdGU7XG59XG5pbmhlcml0cyhFREUsIENpcGhlcik7XG5cbm1vZHVsZS5leHBvcnRzID0gRURFO1xuXG5FREUuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBFREUob3B0aW9ucyk7XG59O1xuXG5FREUucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2VkZVN0YXRlO1xuXG4gIHN0YXRlLmNpcGhlcnNbMF0uX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZik7XG4gIHN0YXRlLmNpcGhlcnNbMV0uX3VwZGF0ZShvdXQsIG91dE9mZiwgb3V0LCBvdXRPZmYpO1xuICBzdGF0ZS5jaXBoZXJzWzJdLl91cGRhdGUob3V0LCBvdXRPZmYsIG91dCwgb3V0T2ZmKTtcbn07XG5cbkVERS5wcm90b3R5cGUuX3BhZCA9IERFUy5wcm90b3R5cGUuX3BhZDtcbkVERS5wcm90b3R5cGUuX3VucGFkID0gREVTLnByb3RvdHlwZS5fdW5wYWQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMucmVhZFVJbnQzMkJFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkJFKGJ5dGVzLCBvZmYpIHtcbiAgdmFyIHJlcyA9ICAoYnl0ZXNbMCArIG9mZl0gPDwgMjQpIHxcbiAgICAgICAgICAgICAoYnl0ZXNbMSArIG9mZl0gPDwgMTYpIHxcbiAgICAgICAgICAgICAoYnl0ZXNbMiArIG9mZl0gPDwgOCkgfFxuICAgICAgICAgICAgIGJ5dGVzWzMgKyBvZmZdO1xuICByZXR1cm4gcmVzID4+PiAwO1xufTtcblxuZXhwb3J0cy53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRShieXRlcywgdmFsdWUsIG9mZikge1xuICBieXRlc1swICsgb2ZmXSA9IHZhbHVlID4+PiAyNDtcbiAgYnl0ZXNbMSArIG9mZl0gPSAodmFsdWUgPj4+IDE2KSAmIDB4ZmY7XG4gIGJ5dGVzWzIgKyBvZmZdID0gKHZhbHVlID4+PiA4KSAmIDB4ZmY7XG4gIGJ5dGVzWzMgKyBvZmZdID0gdmFsdWUgJiAweGZmO1xufTtcblxuZXhwb3J0cy5pcCA9IGZ1bmN0aW9uIGlwKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICBmb3IgKHZhciBpID0gNjsgaSA+PSAwOyBpIC09IDIpIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5SID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpbkwgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBpID0gNjsgaSA+PSAwOyBpIC09IDIpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSAyNTsgaiArPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5SID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IDI1OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpbkwgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxuZXhwb3J0cy5yaXAgPSBmdW5jdGlvbiByaXAoaW5MLCBpblIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDI0OyBqID49IDA7IGogLT0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluTCA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBpID0gNDsgaSA8IDg7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAyNDsgaiA+PSAwOyBqIC09IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpbkwgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxuZXhwb3J0cy5wYzEgPSBmdW5jdGlvbiBwYzEoaW5MLCBpblIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIC8vIDcsIDE1LCAyMywgMzEsIDM5LCA0NywgNTUsIDYzXG4gIC8vIDYsIDE0LCAyMiwgMzAsIDM5LCA0NywgNTUsIDYzXG4gIC8vIDUsIDEzLCAyMSwgMjksIDM5LCA0NywgNTUsIDYzXG4gIC8vIDQsIDEyLCAyMCwgMjhcbiAgZm9yICh2YXIgaSA9IDc7IGkgPj0gNTsgaS0tKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluUiA+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpbkwgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgb3V0TCA8PD0gMTtcbiAgICBvdXRMIHw9IChpblIgPj4gKGogKyBpKSkgJiAxO1xuICB9XG5cbiAgLy8gMSwgOSwgMTcsIDI1LCAzMywgNDEsIDQ5LCA1N1xuICAvLyAyLCAxMCwgMTgsIDI2LCAzNCwgNDIsIDUwLCA1OFxuICAvLyAzLCAxMSwgMTksIDI3LCAzNSwgNDMsIDUxLCA1OVxuICAvLyAzNiwgNDQsIDUyLCA2MFxuICBmb3IgKHZhciBpID0gMTsgaSA8PSAzOyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5SID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluTCA+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG4gIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICBvdXRSIDw8PSAxO1xuICAgIG91dFIgfD0gKGluTCA+PiAoaiArIGkpKSAmIDE7XG4gIH1cblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxuZXhwb3J0cy5yMjhzaGwgPSBmdW5jdGlvbiByMjhzaGwobnVtLCBzaGlmdCkge1xuICByZXR1cm4gKChudW0gPDwgc2hpZnQpICYgMHhmZmZmZmZmKSB8IChudW0gPj4+ICgyOCAtIHNoaWZ0KSk7XG59O1xuXG52YXIgcGMydGFibGUgPSBbXG4gIC8vIGluTCA9PiBvdXRMXG4gIDE0LCAxMSwgMTcsIDQsIDI3LCAyMywgMjUsIDAsXG4gIDEzLCAyMiwgNywgMTgsIDUsIDksIDE2LCAyNCxcbiAgMiwgMjAsIDEyLCAyMSwgMSwgOCwgMTUsIDI2LFxuXG4gIC8vIGluUiA9PiBvdXRSXG4gIDE1LCA0LCAyNSwgMTksIDksIDEsIDI2LCAxNixcbiAgNSwgMTEsIDIzLCA4LCAxMiwgNywgMTcsIDAsXG4gIDIyLCAzLCAxMCwgMTQsIDYsIDIwLCAyNywgMjRcbl07XG5cbmV4cG9ydHMucGMyID0gZnVuY3Rpb24gcGMyKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICB2YXIgbGVuID0gcGMydGFibGUubGVuZ3RoID4+PiAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgb3V0TCA8PD0gMTtcbiAgICBvdXRMIHw9IChpbkwgPj4+IHBjMnRhYmxlW2ldKSAmIDB4MTtcbiAgfVxuICBmb3IgKHZhciBpID0gbGVuOyBpIDwgcGMydGFibGUubGVuZ3RoOyBpKyspIHtcbiAgICBvdXRSIDw8PSAxO1xuICAgIG91dFIgfD0gKGluUiA+Pj4gcGMydGFibGVbaV0pICYgMHgxO1xuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMuZXhwYW5kID0gZnVuY3Rpb24gZXhwYW5kKHIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIG91dEwgPSAoKHIgJiAxKSA8PCA1KSB8IChyID4+PiAyNyk7XG4gIGZvciAodmFyIGkgPSAyMzsgaSA+PSAxNTsgaSAtPSA0KSB7XG4gICAgb3V0TCA8PD0gNjtcbiAgICBvdXRMIHw9IChyID4+PiBpKSAmIDB4M2Y7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDExOyBpID49IDM7IGkgLT0gNCkge1xuICAgIG91dFIgfD0gKHIgPj4+IGkpICYgMHgzZjtcbiAgICBvdXRSIDw8PSA2O1xuICB9XG4gIG91dFIgfD0gKChyICYgMHgxZikgPDwgMSkgfCAociA+Pj4gMzEpO1xuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG52YXIgc1RhYmxlID0gW1xuICAxNCwgMCwgNCwgMTUsIDEzLCA3LCAxLCA0LCAyLCAxNCwgMTUsIDIsIDExLCAxMywgOCwgMSxcbiAgMywgMTAsIDEwLCA2LCA2LCAxMiwgMTIsIDExLCA1LCA5LCA5LCA1LCAwLCAzLCA3LCA4LFxuICA0LCAxNSwgMSwgMTIsIDE0LCA4LCA4LCAyLCAxMywgNCwgNiwgOSwgMiwgMSwgMTEsIDcsXG4gIDE1LCA1LCAxMiwgMTEsIDksIDMsIDcsIDE0LCAzLCAxMCwgMTAsIDAsIDUsIDYsIDAsIDEzLFxuXG4gIDE1LCAzLCAxLCAxMywgOCwgNCwgMTQsIDcsIDYsIDE1LCAxMSwgMiwgMywgOCwgNCwgMTQsXG4gIDksIDEyLCA3LCAwLCAyLCAxLCAxMywgMTAsIDEyLCA2LCAwLCA5LCA1LCAxMSwgMTAsIDUsXG4gIDAsIDEzLCAxNCwgOCwgNywgMTAsIDExLCAxLCAxMCwgMywgNCwgMTUsIDEzLCA0LCAxLCAyLFxuICA1LCAxMSwgOCwgNiwgMTIsIDcsIDYsIDEyLCA5LCAwLCAzLCA1LCAyLCAxNCwgMTUsIDksXG5cbiAgMTAsIDEzLCAwLCA3LCA5LCAwLCAxNCwgOSwgNiwgMywgMywgNCwgMTUsIDYsIDUsIDEwLFxuICAxLCAyLCAxMywgOCwgMTIsIDUsIDcsIDE0LCAxMSwgMTIsIDQsIDExLCAyLCAxNSwgOCwgMSxcbiAgMTMsIDEsIDYsIDEwLCA0LCAxMywgOSwgMCwgOCwgNiwgMTUsIDksIDMsIDgsIDAsIDcsXG4gIDExLCA0LCAxLCAxNSwgMiwgMTQsIDEyLCAzLCA1LCAxMSwgMTAsIDUsIDE0LCAyLCA3LCAxMixcblxuICA3LCAxMywgMTMsIDgsIDE0LCAxMSwgMywgNSwgMCwgNiwgNiwgMTUsIDksIDAsIDEwLCAzLFxuICAxLCA0LCAyLCA3LCA4LCAyLCA1LCAxMiwgMTEsIDEsIDEyLCAxMCwgNCwgMTQsIDE1LCA5LFxuICAxMCwgMywgNiwgMTUsIDksIDAsIDAsIDYsIDEyLCAxMCwgMTEsIDEsIDcsIDEzLCAxMywgOCxcbiAgMTUsIDksIDEsIDQsIDMsIDUsIDE0LCAxMSwgNSwgMTIsIDIsIDcsIDgsIDIsIDQsIDE0LFxuXG4gIDIsIDE0LCAxMiwgMTEsIDQsIDIsIDEsIDEyLCA3LCA0LCAxMCwgNywgMTEsIDEzLCA2LCAxLFxuICA4LCA1LCA1LCAwLCAzLCAxNSwgMTUsIDEwLCAxMywgMywgMCwgOSwgMTQsIDgsIDksIDYsXG4gIDQsIDExLCAyLCA4LCAxLCAxMiwgMTEsIDcsIDEwLCAxLCAxMywgMTQsIDcsIDIsIDgsIDEzLFxuICAxNSwgNiwgOSwgMTUsIDEyLCAwLCA1LCA5LCA2LCAxMCwgMywgNCwgMCwgNSwgMTQsIDMsXG5cbiAgMTIsIDEwLCAxLCAxNSwgMTAsIDQsIDE1LCAyLCA5LCA3LCAyLCAxMiwgNiwgOSwgOCwgNSxcbiAgMCwgNiwgMTMsIDEsIDMsIDEzLCA0LCAxNCwgMTQsIDAsIDcsIDExLCA1LCAzLCAxMSwgOCxcbiAgOSwgNCwgMTQsIDMsIDE1LCAyLCA1LCAxMiwgMiwgOSwgOCwgNSwgMTIsIDE1LCAzLCAxMCxcbiAgNywgMTEsIDAsIDE0LCA0LCAxLCAxMCwgNywgMSwgNiwgMTMsIDAsIDExLCA4LCA2LCAxMyxcblxuICA0LCAxMywgMTEsIDAsIDIsIDExLCAxNCwgNywgMTUsIDQsIDAsIDksIDgsIDEsIDEzLCAxMCxcbiAgMywgMTQsIDEyLCAzLCA5LCA1LCA3LCAxMiwgNSwgMiwgMTAsIDE1LCA2LCA4LCAxLCA2LFxuICAxLCA2LCA0LCAxMSwgMTEsIDEzLCAxMywgOCwgMTIsIDEsIDMsIDQsIDcsIDEwLCAxNCwgNyxcbiAgMTAsIDksIDE1LCA1LCA2LCAwLCA4LCAxNSwgMCwgMTQsIDUsIDIsIDksIDMsIDIsIDEyLFxuXG4gIDEzLCAxLCAyLCAxNSwgOCwgMTMsIDQsIDgsIDYsIDEwLCAxNSwgMywgMTEsIDcsIDEsIDQsXG4gIDEwLCAxMiwgOSwgNSwgMywgNiwgMTQsIDExLCA1LCAwLCAwLCAxNCwgMTIsIDksIDcsIDIsXG4gIDcsIDIsIDExLCAxLCA0LCAxNCwgMSwgNywgOSwgNCwgMTIsIDEwLCAxNCwgOCwgMiwgMTMsXG4gIDAsIDE1LCA2LCAxMiwgMTAsIDksIDEzLCAwLCAxNSwgMywgMywgNSwgNSwgNiwgOCwgMTFcbl07XG5cbmV4cG9ydHMuc3Vic3RpdHV0ZSA9IGZ1bmN0aW9uIHN1YnN0aXR1dGUoaW5MLCBpblIpIHtcbiAgdmFyIG91dCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIGIgPSAoaW5MID4+PiAoMTggLSBpICogNikpICYgMHgzZjtcbiAgICB2YXIgc2IgPSBzVGFibGVbaSAqIDB4NDAgKyBiXTtcblxuICAgIG91dCA8PD0gNDtcbiAgICBvdXQgfD0gc2I7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgYiA9IChpblIgPj4+ICgxOCAtIGkgKiA2KSkgJiAweDNmO1xuICAgIHZhciBzYiA9IHNUYWJsZVs0ICogMHg0MCArIGkgKiAweDQwICsgYl07XG5cbiAgICBvdXQgPDw9IDQ7XG4gICAgb3V0IHw9IHNiO1xuICB9XG4gIHJldHVybiBvdXQgPj4+IDA7XG59O1xuXG52YXIgcGVybXV0ZVRhYmxlID0gW1xuICAxNiwgMjUsIDEyLCAxMSwgMywgMjAsIDQsIDE1LCAzMSwgMTcsIDksIDYsIDI3LCAxNCwgMSwgMjIsXG4gIDMwLCAyNCwgOCwgMTgsIDAsIDUsIDI5LCAyMywgMTMsIDE5LCAyLCAyNiwgMTAsIDIxLCAyOCwgN1xuXTtcblxuZXhwb3J0cy5wZXJtdXRlID0gZnVuY3Rpb24gcGVybXV0ZShudW0pIHtcbiAgdmFyIG91dCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGVybXV0ZVRhYmxlLmxlbmd0aDsgaSsrKSB7XG4gICAgb3V0IDw8PSAxO1xuICAgIG91dCB8PSAobnVtID4+PiBwZXJtdXRlVGFibGVbaV0pICYgMHgxO1xuICB9XG4gIHJldHVybiBvdXQgPj4+IDA7XG59O1xuXG5leHBvcnRzLnBhZFNwbGl0ID0gZnVuY3Rpb24gcGFkU3BsaXQobnVtLCBzaXplLCBncm91cCkge1xuICB2YXIgc3RyID0gbnVtLnRvU3RyaW5nKDIpO1xuICB3aGlsZSAoc3RyLmxlbmd0aCA8IHNpemUpXG4gICAgc3RyID0gJzAnICsgc3RyO1xuXG4gIHZhciBvdXQgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpICs9IGdyb3VwKVxuICAgIG91dC5wdXNoKHN0ci5zbGljZShpLCBpICsgZ3JvdXApKTtcbiAgcmV0dXJuIG91dC5qb2luKCcgJyk7XG59O1xuIiwidmFyIGdlbmVyYXRlUHJpbWUgPSByZXF1aXJlKCcuL2xpYi9nZW5lcmF0ZVByaW1lJylcbnZhciBwcmltZXMgPSByZXF1aXJlKCcuL2xpYi9wcmltZXMuanNvbicpXG5cbnZhciBESCA9IHJlcXVpcmUoJy4vbGliL2RoJylcblxuZnVuY3Rpb24gZ2V0RGlmZmllSGVsbG1hbiAobW9kKSB7XG4gIHZhciBwcmltZSA9IG5ldyBCdWZmZXIocHJpbWVzW21vZF0ucHJpbWUsICdoZXgnKVxuICB2YXIgZ2VuID0gbmV3IEJ1ZmZlcihwcmltZXNbbW9kXS5nZW4sICdoZXgnKVxuXG4gIHJldHVybiBuZXcgREgocHJpbWUsIGdlbilcbn1cblxudmFyIEVOQ09ESU5HUyA9IHtcbiAgJ2JpbmFyeSc6IHRydWUsICdoZXgnOiB0cnVlLCAnYmFzZTY0JzogdHJ1ZVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEaWZmaWVIZWxsbWFuIChwcmltZSwgZW5jLCBnZW5lcmF0b3IsIGdlbmMpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihlbmMpIHx8IEVOQ09ESU5HU1tlbmNdID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gY3JlYXRlRGlmZmllSGVsbG1hbihwcmltZSwgJ2JpbmFyeScsIGVuYywgZ2VuZXJhdG9yKVxuICB9XG5cbiAgZW5jID0gZW5jIHx8ICdiaW5hcnknXG4gIGdlbmMgPSBnZW5jIHx8ICdiaW5hcnknXG4gIGdlbmVyYXRvciA9IGdlbmVyYXRvciB8fCBuZXcgQnVmZmVyKFsyXSlcblxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihnZW5lcmF0b3IpKSB7XG4gICAgZ2VuZXJhdG9yID0gbmV3IEJ1ZmZlcihnZW5lcmF0b3IsIGdlbmMpXG4gIH1cblxuICBpZiAodHlwZW9mIHByaW1lID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBuZXcgREgoZ2VuZXJhdGVQcmltZShwcmltZSwgZ2VuZXJhdG9yKSwgZ2VuZXJhdG9yLCB0cnVlKVxuICB9XG5cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpbWUpKSB7XG4gICAgcHJpbWUgPSBuZXcgQnVmZmVyKHByaW1lLCBlbmMpXG4gIH1cblxuICByZXR1cm4gbmV3IERIKHByaW1lLCBnZW5lcmF0b3IsIHRydWUpXG59XG5cbmV4cG9ydHMuRGlmZmllSGVsbG1hbkdyb3VwID0gZXhwb3J0cy5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXAgPSBleHBvcnRzLmdldERpZmZpZUhlbGxtYW4gPSBnZXREaWZmaWVIZWxsbWFuXG5leHBvcnRzLmNyZWF0ZURpZmZpZUhlbGxtYW4gPSBleHBvcnRzLkRpZmZpZUhlbGxtYW4gPSBjcmVhdGVEaWZmaWVIZWxsbWFuXG4iLCJ2YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIE1pbGxlclJhYmluID0gcmVxdWlyZSgnbWlsbGVyLXJhYmluJyk7XG52YXIgbWlsbGVyUmFiaW4gPSBuZXcgTWlsbGVyUmFiaW4oKTtcbnZhciBUV0VOVFlGT1VSID0gbmV3IEJOKDI0KTtcbnZhciBFTEVWRU4gPSBuZXcgQk4oMTEpO1xudmFyIFRFTiA9IG5ldyBCTigxMCk7XG52YXIgVEhSRUUgPSBuZXcgQk4oMyk7XG52YXIgU0VWRU4gPSBuZXcgQk4oNyk7XG52YXIgcHJpbWVzID0gcmVxdWlyZSgnLi9nZW5lcmF0ZVByaW1lJyk7XG52YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpO1xubW9kdWxlLmV4cG9ydHMgPSBESDtcblxuZnVuY3Rpb24gc2V0UHVibGljS2V5KHB1YiwgZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAndXRmOCc7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHB1YikpIHtcbiAgICBwdWIgPSBuZXcgQnVmZmVyKHB1YiwgZW5jKTtcbiAgfVxuICB0aGlzLl9wdWIgPSBuZXcgQk4ocHViKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIHNldFByaXZhdGVLZXkocHJpdiwgZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAndXRmOCc7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHByaXYpKSB7XG4gICAgcHJpdiA9IG5ldyBCdWZmZXIocHJpdiwgZW5jKTtcbiAgfVxuICB0aGlzLl9wcml2ID0gbmV3IEJOKHByaXYpO1xuICByZXR1cm4gdGhpcztcbn1cblxudmFyIHByaW1lQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGNoZWNrUHJpbWUocHJpbWUsIGdlbmVyYXRvcikge1xuICB2YXIgZ2VuID0gZ2VuZXJhdG9yLnRvU3RyaW5nKCdoZXgnKTtcbiAgdmFyIGhleCA9IFtnZW4sIHByaW1lLnRvU3RyaW5nKDE2KV0uam9pbignXycpO1xuICBpZiAoaGV4IGluIHByaW1lQ2FjaGUpIHtcbiAgICByZXR1cm4gcHJpbWVDYWNoZVtoZXhdO1xuICB9XG4gIHZhciBlcnJvciA9IDA7XG5cbiAgaWYgKHByaW1lLmlzRXZlbigpIHx8XG4gICAgIXByaW1lcy5zaW1wbGVTaWV2ZSB8fFxuICAgICFwcmltZXMuZmVybWF0VGVzdChwcmltZSkgfHxcbiAgICAhbWlsbGVyUmFiaW4udGVzdChwcmltZSkpIHtcbiAgICAvL25vdCBhIHByaW1lIHNvICsxXG4gICAgZXJyb3IgKz0gMTtcblxuICAgIGlmIChnZW4gPT09ICcwMicgfHwgZ2VuID09PSAnMDUnKSB7XG4gICAgICAvLyB3ZSdkIGJlIGFibGUgdG8gY2hlY2sgdGhlIGdlbmVyYXRvclxuICAgICAgLy8gaXQgd291bGQgZmFpbCBzbyArOFxuICAgICAgZXJyb3IgKz0gODtcbiAgICB9IGVsc2Uge1xuICAgICAgLy93ZSB3b3VsZG4ndCBiZSBhYmxlIHRvIHRlc3QgdGhlIGdlbmVyYXRvclxuICAgICAgLy8gc28gKzRcbiAgICAgIGVycm9yICs9IDQ7XG4gICAgfVxuICAgIHByaW1lQ2FjaGVbaGV4XSA9IGVycm9yO1xuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuICBpZiAoIW1pbGxlclJhYmluLnRlc3QocHJpbWUuc2hybigxKSkpIHtcbiAgICAvL25vdCBhIHNhZmUgcHJpbWVcbiAgICBlcnJvciArPSAyO1xuICB9XG4gIHZhciByZW07XG4gIHN3aXRjaCAoZ2VuKSB7XG4gICAgY2FzZSAnMDInOlxuICAgICAgaWYgKHByaW1lLm1vZChUV0VOVFlGT1VSKS5jbXAoRUxFVkVOKSkge1xuICAgICAgICAvLyB1bnN1aWRhYmxlIGdlbmVyYXRvclxuICAgICAgICBlcnJvciArPSA4O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnMDUnOlxuICAgICAgcmVtID0gcHJpbWUubW9kKFRFTik7XG4gICAgICBpZiAocmVtLmNtcChUSFJFRSkgJiYgcmVtLmNtcChTRVZFTikpIHtcbiAgICAgICAgLy8gcHJpbWUgbW9kIDEwIG5lZWRzIHRvIGVxdWFsIDMgb3IgN1xuICAgICAgICBlcnJvciArPSA4O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGVycm9yICs9IDQ7XG4gIH1cbiAgcHJpbWVDYWNoZVtoZXhdID0gZXJyb3I7XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZnVuY3Rpb24gREgocHJpbWUsIGdlbmVyYXRvciwgbWFsbGVhYmxlKSB7XG4gIHRoaXMuc2V0R2VuZXJhdG9yKGdlbmVyYXRvcik7XG4gIHRoaXMuX19wcmltZSA9IG5ldyBCTihwcmltZSk7XG4gIHRoaXMuX3ByaW1lID0gQk4ubW9udCh0aGlzLl9fcHJpbWUpO1xuICB0aGlzLl9wcmltZUxlbiA9IHByaW1lLmxlbmd0aDtcbiAgdGhpcy5fcHViID0gdW5kZWZpbmVkO1xuICB0aGlzLl9wcml2ID0gdW5kZWZpbmVkO1xuICB0aGlzLl9wcmltZUNvZGUgPSB1bmRlZmluZWQ7XG4gIGlmIChtYWxsZWFibGUpIHtcbiAgICB0aGlzLnNldFB1YmxpY0tleSA9IHNldFB1YmxpY0tleTtcbiAgICB0aGlzLnNldFByaXZhdGVLZXkgPSBzZXRQcml2YXRlS2V5O1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX3ByaW1lQ29kZSA9IDg7XG4gIH1cbn1cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShESC5wcm90b3R5cGUsICd2ZXJpZnlFcnJvcicsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9wcmltZUNvZGUgIT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLl9wcmltZUNvZGUgPSBjaGVja1ByaW1lKHRoaXMuX19wcmltZSwgdGhpcy5fX2dlbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9wcmltZUNvZGU7XG4gIH1cbn0pO1xuREgucHJvdG90eXBlLmdlbmVyYXRlS2V5cyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLl9wcml2KSB7XG4gICAgdGhpcy5fcHJpdiA9IG5ldyBCTihyYW5kb21CeXRlcyh0aGlzLl9wcmltZUxlbikpO1xuICB9XG4gIHRoaXMuX3B1YiA9IHRoaXMuX2dlbi50b1JlZCh0aGlzLl9wcmltZSkucmVkUG93KHRoaXMuX3ByaXYpLmZyb21SZWQoKTtcbiAgcmV0dXJuIHRoaXMuZ2V0UHVibGljS2V5KCk7XG59O1xuXG5ESC5wcm90b3R5cGUuY29tcHV0ZVNlY3JldCA9IGZ1bmN0aW9uIChvdGhlcikge1xuICBvdGhlciA9IG5ldyBCTihvdGhlcik7XG4gIG90aGVyID0gb3RoZXIudG9SZWQodGhpcy5fcHJpbWUpO1xuICB2YXIgc2VjcmV0ID0gb3RoZXIucmVkUG93KHRoaXMuX3ByaXYpLmZyb21SZWQoKTtcbiAgdmFyIG91dCA9IG5ldyBCdWZmZXIoc2VjcmV0LnRvQXJyYXkoKSk7XG4gIHZhciBwcmltZSA9IHRoaXMuZ2V0UHJpbWUoKTtcbiAgaWYgKG91dC5sZW5ndGggPCBwcmltZS5sZW5ndGgpIHtcbiAgICB2YXIgZnJvbnQgPSBuZXcgQnVmZmVyKHByaW1lLmxlbmd0aCAtIG91dC5sZW5ndGgpO1xuICAgIGZyb250LmZpbGwoMCk7XG4gICAgb3V0ID0gQnVmZmVyLmNvbmNhdChbZnJvbnQsIG91dF0pO1xuICB9XG4gIHJldHVybiBvdXQ7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0UHVibGljS2V5ID0gZnVuY3Rpb24gZ2V0UHVibGljS2V5KGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fcHViLCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLmdldFByaXZhdGVLZXkgPSBmdW5jdGlvbiBnZXRQcml2YXRlS2V5KGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fcHJpdiwgZW5jKTtcbn07XG5cbkRILnByb3RvdHlwZS5nZXRQcmltZSA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX19wcmltZSwgZW5jKTtcbn07XG5cbkRILnByb3RvdHlwZS5nZXRHZW5lcmF0b3IgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9nZW4sIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuc2V0R2VuZXJhdG9yID0gZnVuY3Rpb24gKGdlbiwgZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAndXRmOCc7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGdlbikpIHtcbiAgICBnZW4gPSBuZXcgQnVmZmVyKGdlbiwgZW5jKTtcbiAgfVxuICB0aGlzLl9fZ2VuID0gZ2VuO1xuICB0aGlzLl9nZW4gPSBuZXcgQk4oZ2VuKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBmb3JtYXRSZXR1cm5WYWx1ZShibiwgZW5jKSB7XG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKGJuLnRvQXJyYXkoKSk7XG4gIGlmICghZW5jKSB7XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVmLnRvU3RyaW5nKGVuYyk7XG4gIH1cbn1cbiIsInZhciByYW5kb21CeXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRQcmltZTtcbmZpbmRQcmltZS5zaW1wbGVTaWV2ZSA9IHNpbXBsZVNpZXZlO1xuZmluZFByaW1lLmZlcm1hdFRlc3QgPSBmZXJtYXRUZXN0O1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBUV0VOVFlGT1VSID0gbmV3IEJOKDI0KTtcbnZhciBNaWxsZXJSYWJpbiA9IHJlcXVpcmUoJ21pbGxlci1yYWJpbicpO1xudmFyIG1pbGxlclJhYmluID0gbmV3IE1pbGxlclJhYmluKCk7XG52YXIgT05FID0gbmV3IEJOKDEpO1xudmFyIFRXTyA9IG5ldyBCTigyKTtcbnZhciBGSVZFID0gbmV3IEJOKDUpO1xudmFyIFNJWFRFRU4gPSBuZXcgQk4oMTYpO1xudmFyIEVJR0hUID0gbmV3IEJOKDgpO1xudmFyIFRFTiA9IG5ldyBCTigxMCk7XG52YXIgVEhSRUUgPSBuZXcgQk4oMyk7XG52YXIgU0VWRU4gPSBuZXcgQk4oNyk7XG52YXIgRUxFVkVOID0gbmV3IEJOKDExKTtcbnZhciBGT1VSID0gbmV3IEJOKDQpO1xudmFyIFRXRUxWRSA9IG5ldyBCTigxMik7XG52YXIgcHJpbWVzID0gbnVsbDtcblxuZnVuY3Rpb24gX2dldFByaW1lcygpIHtcbiAgaWYgKHByaW1lcyAhPT0gbnVsbClcbiAgICByZXR1cm4gcHJpbWVzO1xuXG4gIHZhciBsaW1pdCA9IDB4MTAwMDAwO1xuICB2YXIgcmVzID0gW107XG4gIHJlc1swXSA9IDI7XG4gIGZvciAodmFyIGkgPSAxLCBrID0gMzsgayA8IGxpbWl0OyBrICs9IDIpIHtcbiAgICB2YXIgc3FydCA9IE1hdGguY2VpbChNYXRoLnNxcnQoaykpO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgaSAmJiByZXNbal0gPD0gc3FydDsgaisrKVxuICAgICAgaWYgKGsgJSByZXNbal0gPT09IDApXG4gICAgICAgIGJyZWFrO1xuXG4gICAgaWYgKGkgIT09IGogJiYgcmVzW2pdIDw9IHNxcnQpXG4gICAgICBjb250aW51ZTtcblxuICAgIHJlc1tpKytdID0gaztcbiAgfVxuICBwcmltZXMgPSByZXM7XG4gIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIHNpbXBsZVNpZXZlKHApIHtcbiAgdmFyIHByaW1lcyA9IF9nZXRQcmltZXMoKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHByaW1lcy5sZW5ndGg7IGkrKylcbiAgICBpZiAocC5tb2RuKHByaW1lc1tpXSkgPT09IDApIHtcbiAgICAgIGlmIChwLmNtcG4ocHJpbWVzW2ldKSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGZlcm1hdFRlc3QocCkge1xuICB2YXIgcmVkID0gQk4ubW9udChwKTtcbiAgcmV0dXJuIFRXTy50b1JlZChyZWQpLnJlZFBvdyhwLnN1Ym4oMSkpLmZyb21SZWQoKS5jbXBuKDEpID09PSAwO1xufVxuXG5mdW5jdGlvbiBmaW5kUHJpbWUoYml0cywgZ2VuKSB7XG4gIGlmIChiaXRzIDwgMTYpIHtcbiAgICAvLyB0aGlzIGlzIHdoYXQgb3BlbnNzbCBkb2VzXG4gICAgaWYgKGdlbiA9PT0gMiB8fCBnZW4gPT09IDUpIHtcbiAgICAgIHJldHVybiBuZXcgQk4oWzB4OGMsIDB4N2JdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBCTihbMHg4YywgMHgyN10pO1xuICAgIH1cbiAgfVxuICBnZW4gPSBuZXcgQk4oZ2VuKTtcblxuICB2YXIgbnVtLCBuMjtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIG51bSA9IG5ldyBCTihyYW5kb21CeXRlcyhNYXRoLmNlaWwoYml0cyAvIDgpKSk7XG4gICAgd2hpbGUgKG51bS5iaXRMZW5ndGgoKSA+IGJpdHMpIHtcbiAgICAgIG51bS5pc2hybigxKTtcbiAgICB9XG4gICAgaWYgKG51bS5pc0V2ZW4oKSkge1xuICAgICAgbnVtLmlhZGQoT05FKTtcbiAgICB9XG4gICAgaWYgKCFudW0udGVzdG4oMSkpIHtcbiAgICAgIG51bS5pYWRkKFRXTyk7XG4gICAgfVxuICAgIGlmICghZ2VuLmNtcChUV08pKSB7XG4gICAgICB3aGlsZSAobnVtLm1vZChUV0VOVFlGT1VSKS5jbXAoRUxFVkVOKSkge1xuICAgICAgICBudW0uaWFkZChGT1VSKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFnZW4uY21wKEZJVkUpKSB7XG4gICAgICB3aGlsZSAobnVtLm1vZChURU4pLmNtcChUSFJFRSkpIHtcbiAgICAgICAgbnVtLmlhZGQoRk9VUik7XG4gICAgICB9XG4gICAgfVxuICAgIG4yID0gbnVtLnNocm4oMSk7XG4gICAgaWYgKHNpbXBsZVNpZXZlKG4yKSAmJiBzaW1wbGVTaWV2ZShudW0pICYmXG4gICAgICBmZXJtYXRUZXN0KG4yKSAmJiBmZXJtYXRUZXN0KG51bSkgJiZcbiAgICAgIG1pbGxlclJhYmluLnRlc3QobjIpICYmIG1pbGxlclJhYmluLnRlc3QobnVtKSkge1xuICAgICAgcmV0dXJuIG51bTtcbiAgICB9XG4gIH1cblxufVxuIiwiKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFV0aWxzXG4gIGZ1bmN0aW9uIGFzc2VydCAodmFsLCBtc2cpIHtcbiAgICBpZiAoIXZhbCkgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xuICB9XG5cbiAgLy8gQ291bGQgdXNlIGBpbmhlcml0c2AgbW9kdWxlLCBidXQgZG9uJ3Qgd2FudCB0byBtb3ZlIGZyb20gc2luZ2xlIGZpbGVcbiAgLy8gYXJjaGl0ZWN0dXJlIHlldC5cbiAgZnVuY3Rpb24gaW5oZXJpdHMgKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGU7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKTtcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gIH1cblxuICAvLyBCTlxuXG4gIGZ1bmN0aW9uIEJOIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChCTi5pc0JOKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgdGhpcy53b3JkcyA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgLy8gUmVkdWN0aW9uIGNvbnRleHRcbiAgICB0aGlzLnJlZCA9IG51bGw7XG5cbiAgICBpZiAobnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gJ2xlJyB8fCBiYXNlID09PSAnYmUnKSB7XG4gICAgICAgIGVuZGlhbiA9IGJhc2U7XG4gICAgICAgIGJhc2UgPSAxMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdChudW1iZXIgfHwgMCwgYmFzZSB8fCAxMCwgZW5kaWFuIHx8ICdiZScpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJOO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQk4gPSBCTjtcbiAgfVxuXG4gIEJOLkJOID0gQk47XG4gIEJOLndvcmRTaXplID0gMjY7XG5cbiAgdmFyIEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5CdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBCdWZmZXIgPSB3aW5kb3cuQnVmZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gIH1cblxuICBCTi5pc0JOID0gZnVuY3Rpb24gaXNCTiAobnVtKSB7XG4gICAgaWYgKG51bSBpbnN0YW5jZW9mIEJOKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVtICE9PSBudWxsICYmIHR5cGVvZiBudW0gPT09ICdvYmplY3QnICYmXG4gICAgICBudW0uY29uc3RydWN0b3Iud29yZFNpemUgPT09IEJOLndvcmRTaXplICYmIEFycmF5LmlzQXJyYXkobnVtLndvcmRzKTtcbiAgfTtcblxuICBCTi5tYXggPSBmdW5jdGlvbiBtYXggKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA+IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5taW4gPSBmdW5jdGlvbiBtaW4gKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA8IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXROdW1iZXIobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXRBcnJheShudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBiYXNlID0gMTY7XG4gICAgfVxuICAgIGFzc2VydChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KTtcblxuICAgIG51bWJlciA9IG51bWJlci50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICBzdGFydCsrO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0IDwgbnVtYmVyLmxlbmd0aCkge1xuICAgICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICAgIHRoaXMuX3BhcnNlSGV4KG51bWJlciwgc3RhcnQsIGVuZGlhbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wYXJzZUJhc2UobnVtYmVyLCBiYXNlLCBzdGFydCk7XG4gICAgICAgIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgICAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0TnVtYmVyID0gZnVuY3Rpb24gX2luaXROdW1iZXIgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDB4NDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgbnVtYmVyICYgMHgzZmZmZmZmIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPCAweDEwMDAwMDAwMDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobnVtYmVyIDwgMHgyMDAwMDAwMDAwMDAwMCk7IC8vIDIgXiA1MyAodW5zYWZlKVxuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZixcbiAgICAgICAgMVxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICAvLyBSZXZlcnNlIHRoZSBieXRlc1xuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXRBcnJheSA9IGZ1bmN0aW9uIF9pbml0QXJyYXkgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgLy8gUGVyaGFwcyBhIFVpbnQ4QXJyYXlcbiAgICBhc3NlcnQodHlwZW9mIG51bWJlci5sZW5ndGggPT09ICdudW1iZXInKTtcbiAgICBpZiAobnVtYmVyLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbChudW1iZXIubGVuZ3RoIC8gMyk7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMSwgaiA9IDA7IGkgPj0gMDsgaSAtPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgLSAxXSA8PCA4KSB8IChudW1iZXJbaSAtIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpICsgMV0gPDwgOCkgfCAobnVtYmVyW2kgKyAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUhleDRCaXRzIChzdHJpbmcsIGluZGV4KSB7XG4gICAgdmFyIGMgPSBzdHJpbmcuY2hhckNvZGVBdChpbmRleCk7XG4gICAgLy8gJ0EnIC0gJ0YnXG4gICAgaWYgKGMgPj0gNjUgJiYgYyA8PSA3MCkge1xuICAgICAgcmV0dXJuIGMgLSA1NTtcbiAgICAvLyAnYScgLSAnZidcbiAgICB9IGVsc2UgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMDIpIHtcbiAgICAgIHJldHVybiBjIC0gODc7XG4gICAgLy8gJzAnIC0gJzknXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoYyAtIDQ4KSAmIDB4ZjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUhleEJ5dGUgKHN0cmluZywgbG93ZXJCb3VuZCwgaW5kZXgpIHtcbiAgICB2YXIgciA9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCk7XG4gICAgaWYgKGluZGV4IC0gMSA+PSBsb3dlckJvdW5kKSB7XG4gICAgICByIHw9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCAtIDEpIDw8IDQ7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUhleCA9IGZ1bmN0aW9uIF9wYXJzZUhleCAobnVtYmVyLCBzdGFydCwgZW5kaWFuKSB7XG4gICAgLy8gQ3JlYXRlIHBvc3NpYmx5IGJpZ2dlciBhcnJheSB0byBlbnN1cmUgdGhhdCBpdCBmaXRzIHRoZSBudW1iZXJcbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbCgobnVtYmVyLmxlbmd0aCAtIHN0YXJ0KSAvIDYpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgLy8gMjQtYml0cyBjaHVua3NcbiAgICB2YXIgb2ZmID0gMDtcbiAgICB2YXIgaiA9IDA7XG5cbiAgICB2YXIgdztcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMTsgaSA+PSBzdGFydDsgaSAtPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhcnNlTGVuZ3RoID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgICAgZm9yIChpID0gcGFyc2VMZW5ndGggJSAyID09PSAwID8gc3RhcnQgKyAxIDogc3RhcnQ7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIHIgKz0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICByICs9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUJhc2UgPSBmdW5jdGlvbiBfcGFyc2VCYXNlIChudW1iZXIsIGJhc2UsIHN0YXJ0KSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBhcyB6ZXJvXG4gICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA+IDEgJiYgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX25vcm1TaWduID0gZnVuY3Rpb24gX25vcm1TaWduICgpIHtcbiAgICAvLyAtMCA9IDBcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH07XG5cbiAgLypcblxuICB2YXIgemVyb3MgPSBbXTtcbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXTtcbiAgdmFyIGdyb3VwQmFzZXMgPSBbXTtcblxuICB2YXIgcyA9ICcnO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgQk4ud29yZFNpemUpIHtcbiAgICB6ZXJvc1tpXSA9IHM7XG4gICAgcyArPSAnMCc7XG4gIH1cbiAgZ3JvdXBTaXplc1swXSA9IDA7XG4gIGdyb3VwU2l6ZXNbMV0gPSAwO1xuICBncm91cEJhc2VzWzBdID0gMDtcbiAgZ3JvdXBCYXNlc1sxXSA9IDA7XG4gIHZhciBiYXNlID0gMiAtIDE7XG4gIHdoaWxlICgrK2Jhc2UgPCAzNiArIDEpIHtcbiAgICB2YXIgZ3JvdXBTaXplID0gMDtcbiAgICB2YXIgZ3JvdXBCYXNlID0gMTtcbiAgICB3aGlsZSAoZ3JvdXBCYXNlIDwgKDEgPDwgQk4ud29yZFNpemUpIC8gYmFzZSkge1xuICAgICAgZ3JvdXBCYXNlICo9IGJhc2U7XG4gICAgICBncm91cFNpemUgKz0gMTtcbiAgICB9XG4gICAgZ3JvdXBTaXplc1tiYXNlXSA9IGdyb3VwU2l6ZTtcbiAgICBncm91cEJhc2VzW2Jhc2VdID0gZ3JvdXBCYXNlO1xuICB9XG5cbiAgKi9cblxuICB2YXIgemVyb3MgPSBbXG4gICAgJycsXG4gICAgJzAnLFxuICAgICcwMCcsXG4gICAgJzAwMCcsXG4gICAgJzAwMDAnLFxuICAgICcwMDAwMCcsXG4gICAgJzAwMDAwMCcsXG4gICAgJzAwMDAwMDAnLFxuICAgICcwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gIF07XG5cbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXG4gICAgMCwgMCxcbiAgICAyNSwgMTYsIDEyLCAxMSwgMTAsIDksIDgsXG4gICAgOCwgNywgNywgNywgNywgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNVxuICBdO1xuXG4gIHZhciBncm91cEJhc2VzID0gW1xuICAgIDAsIDAsXG4gICAgMzM1NTQ0MzIsIDQzMDQ2NzIxLCAxNjc3NzIxNiwgNDg4MjgxMjUsIDYwNDY2MTc2LCA0MDM1MzYwNywgMTY3NzcyMTYsXG4gICAgNDMwNDY3MjEsIDEwMDAwMDAwLCAxOTQ4NzE3MSwgMzU4MzE4MDgsIDYyNzQ4NTE3LCA3NTI5NTM2LCAxMTM5MDYyNSxcbiAgICAxNjc3NzIxNiwgMjQxMzc1NjksIDM0MDEyMjI0LCA0NzA0NTg4MSwgNjQwMDAwMDAsIDQwODQxMDEsIDUxNTM2MzIsXG4gICAgNjQzNjM0MywgNzk2MjYyNCwgOTc2NTYyNSwgMTE4ODEzNzYsIDE0MzQ4OTA3LCAxNzIxMDM2OCwgMjA1MTExNDksXG4gICAgMjQzMDAwMDAsIDI4NjI5MTUxLCAzMzU1NDQzMiwgMzkxMzUzOTMsIDQ1NDM1NDI0LCA1MjUyMTg3NSwgNjA0NjYxNzZcbiAgXTtcblxuICBCTi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYmFzZSwgcGFkZGluZykge1xuICAgIGJhc2UgPSBiYXNlIHx8IDEwO1xuICAgIHBhZGRpbmcgPSBwYWRkaW5nIHwgMCB8fCAxO1xuXG4gICAgdmFyIG91dDtcbiAgICBpZiAoYmFzZSA9PT0gMTYgfHwgYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIG9mZiA9IDA7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgICAgdmFyIHdvcmQgPSAoKCh3IDw8IG9mZikgfCBjYXJyeSkgJiAweGZmZmZmZikudG9TdHJpbmcoMTYpO1xuICAgICAgICBjYXJyeSA9ICh3ID4+PiAoMjQgLSBvZmYpKSAmIDB4ZmZmZmZmO1xuICAgICAgICBpZiAoY2FycnkgIT09IDAgfHwgaSAhPT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbNiAtIHdvcmQubGVuZ3RoXSArIHdvcmQgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gd29yZCArIG91dDtcbiAgICAgICAgfVxuICAgICAgICBvZmYgKz0gMjtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgICBvdXQgPSBjYXJyeS50b1N0cmluZygxNikgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNikge1xuICAgICAgLy8gdmFyIGdyb3VwU2l6ZSA9IE1hdGguZmxvb3IoQk4ud29yZFNpemUgKiBNYXRoLkxOMiAvIE1hdGgubG9nKGJhc2UpKTtcbiAgICAgIHZhciBncm91cFNpemUgPSBncm91cFNpemVzW2Jhc2VdO1xuICAgICAgLy8gdmFyIGdyb3VwQmFzZSA9IE1hdGgucG93KGJhc2UsIGdyb3VwU2l6ZSk7XG4gICAgICB2YXIgZ3JvdXBCYXNlID0gZ3JvdXBCYXNlc1tiYXNlXTtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIGMgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjLm5lZ2F0aXZlID0gMDtcbiAgICAgIHdoaWxlICghYy5pc1plcm8oKSkge1xuICAgICAgICB2YXIgciA9IGMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgICB2YXIgbGl0dGxlRW5kaWFuID0gZW5kaWFuID09PSAnbGUnO1xuICAgIHZhciByZXMgPSBuZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7XG5cbiAgICB2YXIgYiwgaTtcbiAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKTtcbiAgICBpZiAoIWxpdHRsZUVuZGlhbikge1xuICAgICAgLy8gQXNzdW1lIGJpZy1lbmRpYW5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXFMZW5ndGggLSBieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW3JlcUxlbmd0aCAtIGkgLSAxXSA9IGI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tpXSA9IGI7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBpIDwgcmVxTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSAmICgxIDw8IHdiaXQpKSA+Pj4gd2JpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdztcbiAgfVxuXG4gIC8vIE51bWJlciBvZiB0cmFpbGluZyB6ZXJvIGJpdHNcbiAgQk4ucHJvdG90eXBlLnplcm9CaXRzID0gZnVuY3Rpb24gemVyb0JpdHMgKCkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gMDtcblxuICAgIHZhciByID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBiID0gdGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7XG4gICAgICByICs9IGI7XG4gICAgICBpZiAoYiAhPT0gMjYpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIGJ5dGVMZW5ndGggKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKSAvIDgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1R3b3MgPSBmdW5jdGlvbiB0b1R3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVR3b3MgPSBmdW5jdGlvbiBmcm9tVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy50ZXN0bih3aWR0aCAtIDEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RuKHdpZHRoKS5pYWRkbigxKS5pbmVnKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gaXNOZWcgKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlICE9PSAwO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluZWcgPSBmdW5jdGlvbiBpbmVnICgpIHtcbiAgICBpZiAoIXRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVvciA9IGZ1bmN0aW9uIGl1b3IgKG51bSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSB8IG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXhvciA9IGZ1bmN0aW9uIGl4b3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1eG9yKG51bSk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5peG9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51eG9yID0gZnVuY3Rpb24gdXhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKTtcbiAgfTtcblxuICAvLyBOb3QgYGB0aGlzYGAgd2l0aCBgYHdpZHRoYGAgYml0d2lkdGhcbiAgQk4ucHJvdG90eXBlLmlub3RuID0gZnVuY3Rpb24gaW5vdG4gKHdpZHRoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgJiYgd2lkdGggPj0gMCk7XG5cbiAgICB2YXIgYnl0ZXNOZWVkZWQgPSBNYXRoLmNlaWwod2lkdGggLyAyNikgfCAwO1xuICAgIHZhciBiaXRzTGVmdCA9IHdpZHRoICUgMjY7XG5cbiAgICAvLyBFeHRlbmQgdGhlIGJ1ZmZlciB3aXRoIGxlYWRpbmcgemVyb2VzXG4gICAgdGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtcblxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIGJ5dGVzTmVlZGVkLS07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRlIHdvcmRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlc05lZWRlZDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRoZSByZXNpZHVlXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgKDB4M2ZmZmZmZiA+PiAoMjYgLSBiaXRzTGVmdCkpO1xuICAgIH1cblxuICAgIC8vIEFuZCByZW1vdmUgbGVhZGluZyB6ZXJvZXNcbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gc21hbGxNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIHZhciBsZW4gPSAoc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoKSB8IDA7XG4gICAgb3V0Lmxlbmd0aCA9IGxlbjtcbiAgICBsZW4gPSAobGVuIC0gMSkgfCAwO1xuXG4gICAgLy8gUGVlbCBvbmUgaXRlcmF0aW9uIChjb21waWxlciBjYW4ndCBkbyBpdCwgYmVjYXVzZSBvZiBjb2RlIGNvbXBsZXhpdHkpXG4gICAgdmFyIGEgPSBzZWxmLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgYiA9IG51bS53b3Jkc1swXSB8IDA7XG4gICAgdmFyIHIgPSBhICogYjtcblxuICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgdmFyIGNhcnJ5ID0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICBvdXQud29yZHNbMF0gPSBsbztcblxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gY2FycnkgPj4+IDI2O1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSAoayAtIGopIHwgMDtcbiAgICAgICAgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgciA9IGEgKiBiICsgcndvcmQ7XG4gICAgICAgIG5jYXJyeSArPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgICByd29yZCA9IHIgJiAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZCB8IDA7XG4gICAgICBjYXJyeSA9IG5jYXJyeSB8IDA7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2FycnkgfCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNobG4gPSBmdW5jdGlvbiBpc2hsbiAoYml0cykge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHQgaW4tcGxhY2VcbiAgLy8gTk9URTogYGhpbnRgIGlzIGEgbG93ZXN0IGJpdCBiZWZvcmUgdHJhaWxpbmcgemVyb2VzXG4gIC8vIE5PVEU6IGlmIGBleHRlbmRlZGAgaXMgcHJlc2VudCAtIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggZGVzdHJveWVkIGJpdHNcbiAgQk4ucHJvdG90eXBlLml1c2hybiA9IGZ1bmN0aW9uIGl1c2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIGg7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIGggPSAoaGludCAtIChoaW50ICUgMjYpKSAvIDI2O1xuICAgIH0gZWxzZSB7XG4gICAgICBoID0gMDtcbiAgICB9XG5cbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IE1hdGgubWluKChiaXRzIC0gcikgLyAyNiwgdGhpcy5sZW5ndGgpO1xuICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgIHZhciBtYXNrZWRXb3JkcyA9IGV4dGVuZGVkO1xuXG4gICAgaCAtPSBzO1xuICAgIGggPSBNYXRoLm1heCgwLCBoKTtcblxuICAgIC8vIEV4dGVuZGVkIG1vZGUsIGNvcHkgbWFza2VkIHBhcnRcbiAgICBpZiAobWFza2VkV29yZHMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIG1hc2tlZFdvcmRzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICAgIG1hc2tlZFdvcmRzLmxlbmd0aCA9IHM7XG4gICAgfVxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIC8vIE5vLW9wLCB3ZSBzaG91bGQgbm90IG1vdmUgYW55dGhpbmcgYXQgYWxsXG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IHMpIHtcbiAgICAgIHRoaXMubGVuZ3RoIC09IHM7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpICsgc107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDAgJiYgKGNhcnJ5ICE9PSAwIHx8IGkgPj0gaCk7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAoY2FycnkgPDwgKDI2IC0gcikpIHwgKHdvcmQgPj4+IHIpO1xuICAgICAgY2FycnkgPSB3b3JkICYgbWFzaztcbiAgICB9XG5cbiAgICAvLyBQdXNoIGNhcnJpZWQgYml0cyBhcyBhIG1hc2tcbiAgICBpZiAobWFza2VkV29yZHMgJiYgY2FycnkgIT09IDApIHtcbiAgICAgIG1hc2tlZFdvcmRzLndvcmRzW21hc2tlZFdvcmRzLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyLnN0cmlwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NCBpbnN0YW5jZVxuICAgICAgICByLnN0cmlwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByIGlzIEJOIHY1IGluc3RhbmNlXG4gICAgICAgIHIuX3N0cmlwKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0KSB7XG4gICAgaW5wdXQuaXVzaHJuKHRoaXMubiwgMCwgb3V0KTtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIHJldHVybiBudW0uaW11bCh0aGlzLmspO1xuICB9O1xuXG4gIGZ1bmN0aW9uIEsyNTYgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdrMjU2JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZicpO1xuICB9XG4gIGluaGVyaXRzKEsyNTYsIE1QcmltZSk7XG5cbiAgSzI1Ni5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dHB1dCkge1xuICAgIC8vIDI1NiA9IDkgKiAyNiArIDIyXG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZjtcblxuICAgIHZhciBvdXRMZW4gPSBNYXRoLm1pbihpbnB1dC5sZW5ndGgsIDkpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0TGVuOyBpKyspIHtcbiAgICAgIG91dHB1dC53b3Jkc1tpXSA9IGlucHV0LndvcmRzW2ldO1xuICAgIH1cbiAgICBvdXRwdXQubGVuZ3RoID0gb3V0TGVuO1xuXG4gICAgaWYgKGlucHV0Lmxlbmd0aCA8PSA5KSB7XG4gICAgICBpbnB1dC53b3Jkc1swXSA9IDA7XG4gICAgICBpbnB1dC5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNoaWZ0IGJ5IDkgbGltYnNcbiAgICB2YXIgcHJldiA9IGlucHV0LndvcmRzWzldO1xuICAgIG91dHB1dC53b3Jkc1tvdXRwdXQubGVuZ3RoKytdID0gcHJldiAmIG1hc2s7XG5cbiAgICBmb3IgKGkgPSAxMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmV4dCA9IGlucHV0LndvcmRzW2ldIHwgMDtcbiAgICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSAoKG5leHQgJiBtYXNrKSA8PCA0KSB8IChwcmV2ID4+PiAyMik7XG4gICAgICBwcmV2ID0gbmV4dDtcbiAgICB9XG4gICAgcHJldiA+Pj49IDIyO1xuICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSBwcmV2O1xuICAgIGlmIChwcmV2ID09PSAwICYmIGlucHV0Lmxlbmd0aCA+IDEwKSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gMTA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSA5O1xuICAgIH1cbiAgfTtcblxuICBLMjU2LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxMDAwMDAzZDEgPSBbIDB4NDAsIDB4M2QxIF1cbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aF0gPSAwO1xuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoICsgMV0gPSAwO1xuICAgIG51bS5sZW5ndGggKz0gMjtcblxuICAgIC8vIGJvdW5kZWQgYXQ6IDB4NDAgKiAweDNmZmZmZmYgKyAweDNkMCA9IDB4MTAwMDAwMzkwXG4gICAgdmFyIGxvID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSBudW0ud29yZHNbaV0gfCAwO1xuICAgICAgbG8gKz0gdyAqIDB4M2QxO1xuICAgICAgbnVtLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICBsbyA9IHcgKiAweDQwICsgKChsbyAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICB9XG5cbiAgICAvLyBGYXN0IGxlbmd0aCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIGZ1bmN0aW9uIFAyMjQgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMjI0JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScpO1xuICB9XG4gIGluaGVyaXRzKFAyMjQsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDE5MiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AxOTInLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDE5MiwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMjU1MTkgKCkge1xuICAgIC8vIDIgXiAyNTUgLSAxOVxuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICcyNTUxOScsXG4gICAgICAnN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCcpO1xuICB9XG4gIGluaGVyaXRzKFAyNTUxOSwgTVByaW1lKTtcblxuICBQMjU1MTkucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEzXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGhpID0gKG51bS53b3Jkc1tpXSB8IDApICogMHgxMyArIGNhcnJ5O1xuICAgICAgdmFyIGxvID0gaGkgJiAweDNmZmZmZmY7XG4gICAgICBoaSA+Pj49IDI2O1xuXG4gICAgICBudW0ud29yZHNbaV0gPSBsbztcbiAgICAgIGNhcnJ5ID0gaGk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgbnVtLndvcmRzW251bS5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICAvLyBFeHBvcnRlZCBtb3N0bHkgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHVzZSBwbGFpbiBuYW1lIGluc3RlYWRcbiAgQk4uX3ByaW1lID0gZnVuY3Rpb24gcHJpbWUgKG5hbWUpIHtcbiAgICAvLyBDYWNoZWQgdmVyc2lvbiBvZiBwcmltZVxuICAgIGlmIChwcmltZXNbbmFtZV0pIHJldHVybiBwcmltZXNbbmFtZV07XG5cbiAgICB2YXIgcHJpbWU7XG4gICAgaWYgKG5hbWUgPT09ICdrMjU2Jykge1xuICAgICAgcHJpbWUgPSBuZXcgSzI1NigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyMjQnKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjI0KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDE5MicpIHtcbiAgICAgIHByaW1lID0gbmV3IFAxOTIoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjU1MTknKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjU1MTkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByaW1lICcgKyBuYW1lKTtcbiAgICB9XG4gICAgcHJpbWVzW25hbWVdID0gcHJpbWU7XG5cbiAgICByZXR1cm4gcHJpbWU7XG4gIH07XG5cbiAgLy9cbiAgLy8gQmFzZSByZWR1Y3Rpb24gZW5naW5lXG4gIC8vXG4gIGZ1bmN0aW9uIFJlZCAobSkge1xuICAgIGlmICh0eXBlb2YgbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBwcmltZSA9IEJOLl9wcmltZShtKTtcbiAgICAgIHRoaXMubSA9IHByaW1lLnA7XG4gICAgICB0aGlzLnByaW1lID0gcHJpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChtLmd0bigxKSwgJ21vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMScpO1xuICAgICAgdGhpcy5tID0gbTtcbiAgICAgIHRoaXMucHJpbWUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTEgPSBmdW5jdGlvbiBfdmVyaWZ5MSAoYSkge1xuICAgIGFzc2VydChhLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQsICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MiA9IGZ1bmN0aW9uIF92ZXJpZnkyIChhLCBiKSB7XG4gICAgYXNzZXJ0KChhLm5lZ2F0aXZlIHwgYi5uZWdhdGl2ZSkgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCAmJiBhLnJlZCA9PT0gYi5yZWQsXG4gICAgICAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW1vZCA9IGZ1bmN0aW9uIGltb2QgKGEpIHtcbiAgICBpZiAodGhpcy5wcmltZSkgcmV0dXJuIHRoaXMucHJpbWUuaXJlZHVjZShhKS5fZm9yY2VSZWQodGhpcyk7XG4gICAgcmV0dXJuIGEudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm0uc3ViKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5hZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlhZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLnN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlzdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNobCA9IGZ1bmN0aW9uIHNobCAoYSwgbnVtKSB7XG4gICAgdGhpcy5fdmVyaWZ5MShhKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEudXNobG4obnVtKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLmltdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEubXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bChhLCBhLmNsb25lKCkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKGEsIGEpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FydCA9IGZ1bmN0aW9uIHNxcnQgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciBtb2QzID0gdGhpcy5tLmFuZGxuKDMpO1xuICAgIGFzc2VydChtb2QzICUgMiA9PT0gMSk7XG5cbiAgICAvLyBGYXN0IGNhc2VcbiAgICBpZiAobW9kMyA9PT0gMykge1xuICAgICAgdmFyIHBvdyA9IHRoaXMubS5hZGQobmV3IEJOKDEpKS5pdXNocm4oMik7XG4gICAgICByZXR1cm4gdGhpcy5wb3coYSwgcG93KTtcbiAgICB9XG5cbiAgICAvLyBUb25lbGxpLVNoYW5rcyBhbGdvcml0aG0gKFRvdGFsbHkgdW5vcHRpbWl6ZWQgYW5kIHNsb3cpXG4gICAgLy9cbiAgICAvLyBGaW5kIFEgYW5kIFMsIHRoYXQgUSAqIDIgXiBTID0gKFAgLSAxKVxuICAgIHZhciBxID0gdGhpcy5tLnN1Ym4oMSk7XG4gICAgdmFyIHMgPSAwO1xuICAgIHdoaWxlICghcS5pc1plcm8oKSAmJiBxLmFuZGxuKDEpID09PSAwKSB7XG4gICAgICBzKys7XG4gICAgICBxLml1c2hybigxKTtcbiAgICB9XG4gICAgYXNzZXJ0KCFxLmlzWmVybygpKTtcblxuICAgIHZhciBvbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgdmFyIG5PbmUgPSBvbmUucmVkTmVnKCk7XG5cbiAgICAvLyBGaW5kIHF1YWRyYXRpYyBub24tcmVzaWR1ZVxuICAgIC8vIE5PVEU6IE1heCBpcyBzdWNoIGJlY2F1c2Ugb2YgZ2VuZXJhbGl6ZWQgUmllbWFubiBoeXBvdGhlc2lzLlxuICAgIHZhciBscG93ID0gdGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpO1xuICAgIHZhciB6ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIHogPSBuZXcgQk4oMiAqIHogKiB6KS50b1JlZCh0aGlzKTtcblxuICAgIHdoaWxlICh0aGlzLnBvdyh6LCBscG93KS5jbXAobk9uZSkgIT09IDApIHtcbiAgICAgIHoucmVkSUFkZChuT25lKTtcbiAgICB9XG5cbiAgICB2YXIgYyA9IHRoaXMucG93KHosIHEpO1xuICAgIHZhciByID0gdGhpcy5wb3coYSwgcS5hZGRuKDEpLml1c2hybigxKSk7XG4gICAgdmFyIHQgPSB0aGlzLnBvdyhhLCBxKTtcbiAgICB2YXIgbSA9IHM7XG4gICAgd2hpbGUgKHQuY21wKG9uZSkgIT09IDApIHtcbiAgICAgIHZhciB0bXAgPSB0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IHRtcC5jbXAob25lKSAhPT0gMDsgaSsrKSB7XG4gICAgICAgIHRtcCA9IHRtcC5yZWRTcXIoKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydChpIDwgbSk7XG4gICAgICB2YXIgYiA9IHRoaXMucG93KGMsIG5ldyBCTigxKS5pdXNobG4obSAtIGkgLSAxKSk7XG5cbiAgICAgIHIgPSByLnJlZE11bChiKTtcbiAgICAgIGMgPSBiLnJlZFNxcigpO1xuICAgICAgdCA9IHQucmVkTXVsKGMpO1xuICAgICAgbSA9IGk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIHZhciBpbnYgPSBhLl9pbnZtcCh0aGlzLm0pO1xuICAgIGlmIChpbnYubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGludi5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludikucmVkTmVnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KTtcbiAgICB9XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKGEsIG51bSkge1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgaWYgKG51bS5jbXBuKDEpID09PSAwKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIHdpbmRvd1NpemUgPSA0O1xuICAgIHZhciB3bmQgPSBuZXcgQXJyYXkoMSA8PCB3aW5kb3dTaXplKTtcbiAgICB3bmRbMF0gPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgd25kWzFdID0gYTtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IHduZC5sZW5ndGg7IGkrKykge1xuICAgICAgd25kW2ldID0gdGhpcy5tdWwod25kW2kgLSAxXSwgYSk7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IHduZFswXTtcbiAgICB2YXIgY3VycmVudCA9IDA7XG4gICAgdmFyIGN1cnJlbnRMZW4gPSAwO1xuICAgIHZhciBzdGFydCA9IG51bS5iaXRMZW5ndGgoKSAlIDI2O1xuICAgIGlmIChzdGFydCA9PT0gMCkge1xuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSBudW0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gbnVtLndvcmRzW2ldO1xuICAgICAgZm9yICh2YXIgaiA9IHN0YXJ0IC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgdmFyIGJpdCA9ICh3b3JkID4+IGopICYgMTtcbiAgICAgICAgaWYgKHJlcyAhPT0gd25kWzBdKSB7XG4gICAgICAgICAgcmVzID0gdGhpcy5zcXIocmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXQgPT09IDAgJiYgY3VycmVudCA9PT0gMCkge1xuICAgICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudCA8PD0gMTtcbiAgICAgICAgY3VycmVudCB8PSBiaXQ7XG4gICAgICAgIGN1cnJlbnRMZW4rKztcbiAgICAgICAgaWYgKGN1cnJlbnRMZW4gIT09IHdpbmRvd1NpemUgJiYgKGkgIT09IDAgfHwgaiAhPT0gMCkpIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHRoaXMubXVsKHJlcywgd25kW2N1cnJlbnRdKTtcbiAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgIGN1cnJlbnQgPSAwO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICB2YXIgciA9IG51bS51bW9kKHRoaXMubSk7XG5cbiAgICByZXR1cm4gciA9PT0gbnVtID8gci5jbG9uZSgpIDogcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByZXMgPSBudW0uY2xvbmUoKTtcbiAgICByZXMucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vXG4gIC8vIE1vbnRnb21lcnkgbWV0aG9kIGVuZ2luZVxuICAvL1xuXG4gIEJOLm1vbnQgPSBmdW5jdGlvbiBtb250IChudW0pIHtcbiAgICByZXR1cm4gbmV3IE1vbnQobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBNb250IChtKSB7XG4gICAgUmVkLmNhbGwodGhpcywgbSk7XG5cbiAgICB0aGlzLnNoaWZ0ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIGlmICh0aGlzLnNoaWZ0ICUgMjYgIT09IDApIHtcbiAgICAgIHRoaXMuc2hpZnQgKz0gMjYgLSAodGhpcy5zaGlmdCAlIDI2KTtcbiAgICB9XG5cbiAgICB0aGlzLnIgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpO1xuICAgIHRoaXMucjIgPSB0aGlzLmltb2QodGhpcy5yLnNxcigpKTtcbiAgICB0aGlzLnJpbnYgPSB0aGlzLnIuX2ludm1wKHRoaXMubSk7XG5cbiAgICB0aGlzLm1pbnYgPSB0aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSk7XG4gICAgdGhpcy5taW52ID0gdGhpcy5taW52LnVtb2QodGhpcy5yKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLnIuc3ViKHRoaXMubWludik7XG4gIH1cbiAgaW5oZXJpdHMoTW9udCwgUmVkKTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmltb2QobnVtLnVzaGxuKHRoaXMuc2hpZnQpKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgciA9IHRoaXMuaW1vZChudW0ubXVsKHRoaXMucmludikpO1xuICAgIHIucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHtcbiAgICAgIGEud29yZHNbMF0gPSAwO1xuICAgICAgYS5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgdmFyIHQgPSBhLmltdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG5cbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMCkuX2ZvcmNlUmVkKHRoaXMpO1xuXG4gICAgdmFyIHQgPSBhLm11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgLy8gKEFSKV4tMSAqIFJeMiA9IChBXi0xICogUl4tMSkgKiBSXjIgPSBBXi0xICogUlxuICAgIHZhciByZXMgPSB0aGlzLmltb2QoYS5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpO1xuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xufSkodHlwZW9mIG1vZHVsZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbW9kdWxlLCB0aGlzKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGVsbGlwdGljID0gZXhwb3J0cztcblxuZWxsaXB0aWMudmVyc2lvbiA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG5lbGxpcHRpYy51dGlscyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvdXRpbHMnKTtcbmVsbGlwdGljLnJhbmQgPSByZXF1aXJlKCdicm9yYW5kJyk7XG5lbGxpcHRpYy5jdXJ2ZSA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvY3VydmUnKTtcbmVsbGlwdGljLmN1cnZlcyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvY3VydmVzJyk7XG5cbi8vIFByb3RvY29sc1xuZWxsaXB0aWMuZWMgPSByZXF1aXJlKCcuL2VsbGlwdGljL2VjJyk7XG5lbGxpcHRpYy5lZGRzYSA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvZWRkc2EnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgZ2V0TkFGID0gdXRpbHMuZ2V0TkFGO1xudmFyIGdldEpTRiA9IHV0aWxzLmdldEpTRjtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEJhc2VDdXJ2ZSh0eXBlLCBjb25mKSB7XG4gIHRoaXMudHlwZSA9IHR5cGU7XG4gIHRoaXMucCA9IG5ldyBCTihjb25mLnAsIDE2KTtcblxuICAvLyBVc2UgTW9udGdvbWVyeSwgd2hlbiB0aGVyZSBpcyBubyBmYXN0IHJlZHVjdGlvbiBmb3IgdGhlIHByaW1lXG4gIHRoaXMucmVkID0gY29uZi5wcmltZSA/IEJOLnJlZChjb25mLnByaW1lKSA6IEJOLm1vbnQodGhpcy5wKTtcblxuICAvLyBVc2VmdWwgZm9yIG1hbnkgY3VydmVzXG4gIHRoaXMuemVybyA9IG5ldyBCTigwKS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMub25lID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy50d28gPSBuZXcgQk4oMikudG9SZWQodGhpcy5yZWQpO1xuXG4gIC8vIEN1cnZlIGNvbmZpZ3VyYXRpb24sIG9wdGlvbmFsXG4gIHRoaXMubiA9IGNvbmYubiAmJiBuZXcgQk4oY29uZi5uLCAxNik7XG4gIHRoaXMuZyA9IGNvbmYuZyAmJiB0aGlzLnBvaW50RnJvbUpTT04oY29uZi5nLCBjb25mLmdSZWQpO1xuXG4gIC8vIFRlbXBvcmFyeSBhcnJheXNcbiAgdGhpcy5fd25hZlQxID0gbmV3IEFycmF5KDQpO1xuICB0aGlzLl93bmFmVDIgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX3duYWZUMyA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fd25hZlQ0ID0gbmV3IEFycmF5KDQpO1xuXG4gIHRoaXMuX2JpdExlbmd0aCA9IHRoaXMubiA/IHRoaXMubi5iaXRMZW5ndGgoKSA6IDA7XG5cbiAgLy8gR2VuZXJhbGl6ZWQgR3JlZyBNYXh3ZWxsJ3MgdHJpY2tcbiAgdmFyIGFkanVzdENvdW50ID0gdGhpcy5uICYmIHRoaXMucC5kaXYodGhpcy5uKTtcbiAgaWYgKCFhZGp1c3RDb3VudCB8fCBhZGp1c3RDb3VudC5jbXBuKDEwMCkgPiAwKSB7XG4gICAgdGhpcy5yZWROID0gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9tYXh3ZWxsVHJpY2sgPSB0cnVlO1xuICAgIHRoaXMucmVkTiA9IHRoaXMubi50b1JlZCh0aGlzLnJlZCk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gQmFzZUN1cnZlO1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLl9maXhlZE5hZk11bCA9IGZ1bmN0aW9uIF9maXhlZE5hZk11bChwLCBrKSB7XG4gIGFzc2VydChwLnByZWNvbXB1dGVkKTtcbiAgdmFyIGRvdWJsZXMgPSBwLl9nZXREb3VibGVzKCk7XG5cbiAgdmFyIG5hZiA9IGdldE5BRihrLCAxLCB0aGlzLl9iaXRMZW5ndGgpO1xuICB2YXIgSSA9ICgxIDw8IChkb3VibGVzLnN0ZXAgKyAxKSkgLSAoZG91Ymxlcy5zdGVwICUgMiA9PT0gMCA/IDIgOiAxKTtcbiAgSSAvPSAzO1xuXG4gIC8vIFRyYW5zbGF0ZSBpbnRvIG1vcmUgd2luZG93ZWQgZm9ybVxuICB2YXIgcmVwciA9IFtdO1xuICB2YXIgajtcbiAgdmFyIG5hZlc7XG4gIGZvciAoaiA9IDA7IGogPCBuYWYubGVuZ3RoOyBqICs9IGRvdWJsZXMuc3RlcCkge1xuICAgIG5hZlcgPSAwO1xuICAgIGZvciAodmFyIGwgPSBqICsgZG91Ymxlcy5zdGVwIC0gMTsgbCA+PSBqOyBsLS0pXG4gICAgICBuYWZXID0gKG5hZlcgPDwgMSkgKyBuYWZbbF07XG4gICAgcmVwci5wdXNoKG5hZlcpO1xuICB9XG5cbiAgdmFyIGEgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgdmFyIGIgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgZm9yICh2YXIgaSA9IEk7IGkgPiAwOyBpLS0pIHtcbiAgICBmb3IgKGogPSAwOyBqIDwgcmVwci5sZW5ndGg7IGorKykge1xuICAgICAgbmFmVyA9IHJlcHJbal07XG4gICAgICBpZiAobmFmVyA9PT0gaSlcbiAgICAgICAgYiA9IGIubWl4ZWRBZGQoZG91Ymxlcy5wb2ludHNbal0pO1xuICAgICAgZWxzZSBpZiAobmFmVyA9PT0gLWkpXG4gICAgICAgIGIgPSBiLm1peGVkQWRkKGRvdWJsZXMucG9pbnRzW2pdLm5lZygpKTtcbiAgICB9XG4gICAgYSA9IGEuYWRkKGIpO1xuICB9XG4gIHJldHVybiBhLnRvUCgpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5fd25hZk11bCA9IGZ1bmN0aW9uIF93bmFmTXVsKHAsIGspIHtcbiAgdmFyIHcgPSA0O1xuXG4gIC8vIFByZWNvbXB1dGUgd2luZG93XG4gIHZhciBuYWZQb2ludHMgPSBwLl9nZXROQUZQb2ludHModyk7XG4gIHcgPSBuYWZQb2ludHMud25kO1xuICB2YXIgd25kID0gbmFmUG9pbnRzLnBvaW50cztcblxuICAvLyBHZXQgTkFGIGZvcm1cbiAgdmFyIG5hZiA9IGdldE5BRihrLCB3LCB0aGlzLl9iaXRMZW5ndGgpO1xuXG4gIC8vIEFkZCBgdGhpc2AqKE4rMSkgZm9yIGV2ZXJ5IHctTkFGIGluZGV4XG4gIHZhciBhY2MgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgZm9yICh2YXIgaSA9IG5hZi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIC8vIENvdW50IHplcm9lc1xuICAgIGZvciAodmFyIGwgPSAwOyBpID49IDAgJiYgbmFmW2ldID09PSAwOyBpLS0pXG4gICAgICBsKys7XG4gICAgaWYgKGkgPj0gMClcbiAgICAgIGwrKztcbiAgICBhY2MgPSBhY2MuZGJscChsKTtcblxuICAgIGlmIChpIDwgMClcbiAgICAgIGJyZWFrO1xuICAgIHZhciB6ID0gbmFmW2ldO1xuICAgIGFzc2VydCh6ICE9PSAwKTtcbiAgICBpZiAocC50eXBlID09PSAnYWZmaW5lJykge1xuICAgICAgLy8gSiArLSBQXG4gICAgICBpZiAoeiA+IDApXG4gICAgICAgIGFjYyA9IGFjYy5taXhlZEFkZCh3bmRbKHogLSAxKSA+PiAxXSk7XG4gICAgICBlbHNlXG4gICAgICAgIGFjYyA9IGFjYy5taXhlZEFkZCh3bmRbKC16IC0gMSkgPj4gMV0ubmVnKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBKICstIEpcbiAgICAgIGlmICh6ID4gMClcbiAgICAgICAgYWNjID0gYWNjLmFkZCh3bmRbKHogLSAxKSA+PiAxXSk7XG4gICAgICBlbHNlXG4gICAgICAgIGFjYyA9IGFjYy5hZGQod25kWygteiAtIDEpID4+IDFdLm5lZygpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHAudHlwZSA9PT0gJ2FmZmluZScgPyBhY2MudG9QKCkgOiBhY2M7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLl93bmFmTXVsQWRkID0gZnVuY3Rpb24gX3duYWZNdWxBZGQoZGVmVyxcbiAgcG9pbnRzLFxuICBjb2VmZnMsXG4gIGxlbixcbiAgamFjb2JpYW5SZXN1bHQpIHtcbiAgdmFyIHduZFdpZHRoID0gdGhpcy5fd25hZlQxO1xuICB2YXIgd25kID0gdGhpcy5fd25hZlQyO1xuICB2YXIgbmFmID0gdGhpcy5fd25hZlQzO1xuXG4gIC8vIEZpbGwgYWxsIGFycmF5c1xuICB2YXIgbWF4ID0gMDtcbiAgdmFyIGk7XG4gIHZhciBqO1xuICB2YXIgcDtcbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgcCA9IHBvaW50c1tpXTtcbiAgICB2YXIgbmFmUG9pbnRzID0gcC5fZ2V0TkFGUG9pbnRzKGRlZlcpO1xuICAgIHduZFdpZHRoW2ldID0gbmFmUG9pbnRzLnduZDtcbiAgICB3bmRbaV0gPSBuYWZQb2ludHMucG9pbnRzO1xuICB9XG5cbiAgLy8gQ29tYiBzbWFsbCB3aW5kb3cgTkFGc1xuICBmb3IgKGkgPSBsZW4gLSAxOyBpID49IDE7IGkgLT0gMikge1xuICAgIHZhciBhID0gaSAtIDE7XG4gICAgdmFyIGIgPSBpO1xuICAgIGlmICh3bmRXaWR0aFthXSAhPT0gMSB8fCB3bmRXaWR0aFtiXSAhPT0gMSkge1xuICAgICAgbmFmW2FdID0gZ2V0TkFGKGNvZWZmc1thXSwgd25kV2lkdGhbYV0sIHRoaXMuX2JpdExlbmd0aCk7XG4gICAgICBuYWZbYl0gPSBnZXROQUYoY29lZmZzW2JdLCB3bmRXaWR0aFtiXSwgdGhpcy5fYml0TGVuZ3RoKTtcbiAgICAgIG1heCA9IE1hdGgubWF4KG5hZlthXS5sZW5ndGgsIG1heCk7XG4gICAgICBtYXggPSBNYXRoLm1heChuYWZbYl0ubGVuZ3RoLCBtYXgpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIGNvbWIgPSBbXG4gICAgICBwb2ludHNbYV0sIC8qIDEgKi9cbiAgICAgIG51bGwsIC8qIDMgKi9cbiAgICAgIG51bGwsIC8qIDUgKi9cbiAgICAgIHBvaW50c1tiXSwgLyogNyAqL1xuICAgIF07XG5cbiAgICAvLyBUcnkgdG8gYXZvaWQgUHJvamVjdGl2ZSBwb2ludHMsIGlmIHBvc3NpYmxlXG4gICAgaWYgKHBvaW50c1thXS55LmNtcChwb2ludHNbYl0ueSkgPT09IDApIHtcbiAgICAgIGNvbWJbMV0gPSBwb2ludHNbYV0uYWRkKHBvaW50c1tiXSk7XG4gICAgICBjb21iWzJdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXS5uZWcoKSk7XG4gICAgfSBlbHNlIGlmIChwb2ludHNbYV0ueS5jbXAocG9pbnRzW2JdLnkucmVkTmVnKCkpID09PSAwKSB7XG4gICAgICBjb21iWzFdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXSk7XG4gICAgICBjb21iWzJdID0gcG9pbnRzW2FdLmFkZChwb2ludHNbYl0ubmVnKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21iWzFdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXSk7XG4gICAgICBjb21iWzJdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXS5uZWcoKSk7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gW1xuICAgICAgLTMsIC8qIC0xIC0xICovXG4gICAgICAtMSwgLyogLTEgMCAqL1xuICAgICAgLTUsIC8qIC0xIDEgKi9cbiAgICAgIC03LCAvKiAwIC0xICovXG4gICAgICAwLCAvKiAwIDAgKi9cbiAgICAgIDcsIC8qIDAgMSAqL1xuICAgICAgNSwgLyogMSAtMSAqL1xuICAgICAgMSwgLyogMSAwICovXG4gICAgICAzLCAgLyogMSAxICovXG4gICAgXTtcblxuICAgIHZhciBqc2YgPSBnZXRKU0YoY29lZmZzW2FdLCBjb2VmZnNbYl0pO1xuICAgIG1heCA9IE1hdGgubWF4KGpzZlswXS5sZW5ndGgsIG1heCk7XG4gICAgbmFmW2FdID0gbmV3IEFycmF5KG1heCk7XG4gICAgbmFmW2JdID0gbmV3IEFycmF5KG1heCk7XG4gICAgZm9yIChqID0gMDsgaiA8IG1heDsgaisrKSB7XG4gICAgICB2YXIgamEgPSBqc2ZbMF1bal0gfCAwO1xuICAgICAgdmFyIGpiID0ganNmWzFdW2pdIHwgMDtcblxuICAgICAgbmFmW2FdW2pdID0gaW5kZXhbKGphICsgMSkgKiAzICsgKGpiICsgMSldO1xuICAgICAgbmFmW2JdW2pdID0gMDtcbiAgICAgIHduZFthXSA9IGNvbWI7XG4gICAgfVxuICB9XG5cbiAgdmFyIGFjYyA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICB2YXIgdG1wID0gdGhpcy5fd25hZlQ0O1xuICBmb3IgKGkgPSBtYXg7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGsgPSAwO1xuXG4gICAgd2hpbGUgKGkgPj0gMCkge1xuICAgICAgdmFyIHplcm8gPSB0cnVlO1xuICAgICAgZm9yIChqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICAgIHRtcFtqXSA9IG5hZltqXVtpXSB8IDA7XG4gICAgICAgIGlmICh0bXBbal0gIT09IDApXG4gICAgICAgICAgemVybyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKCF6ZXJvKVxuICAgICAgICBicmVhaztcbiAgICAgIGsrKztcbiAgICAgIGktLTtcbiAgICB9XG4gICAgaWYgKGkgPj0gMClcbiAgICAgIGsrKztcbiAgICBhY2MgPSBhY2MuZGJscChrKTtcbiAgICBpZiAoaSA8IDApXG4gICAgICBicmVhaztcblxuICAgIGZvciAoaiA9IDA7IGogPCBsZW47IGorKykge1xuICAgICAgdmFyIHogPSB0bXBbal07XG4gICAgICBwO1xuICAgICAgaWYgKHogPT09IDApXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgZWxzZSBpZiAoeiA+IDApXG4gICAgICAgIHAgPSB3bmRbal1bKHogLSAxKSA+PiAxXTtcbiAgICAgIGVsc2UgaWYgKHogPCAwKVxuICAgICAgICBwID0gd25kW2pdWygteiAtIDEpID4+IDFdLm5lZygpO1xuXG4gICAgICBpZiAocC50eXBlID09PSAnYWZmaW5lJylcbiAgICAgICAgYWNjID0gYWNjLm1peGVkQWRkKHApO1xuICAgICAgZWxzZVxuICAgICAgICBhY2MgPSBhY2MuYWRkKHApO1xuICAgIH1cbiAgfVxuICAvLyBaZXJvaWZ5IHJlZmVyZW5jZXNcbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgIHduZFtpXSA9IG51bGw7XG5cbiAgaWYgKGphY29iaWFuUmVzdWx0KVxuICAgIHJldHVybiBhY2M7XG4gIGVsc2VcbiAgICByZXR1cm4gYWNjLnRvUCgpO1xufTtcblxuZnVuY3Rpb24gQmFzZVBvaW50KGN1cnZlLCB0eXBlKSB7XG4gIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5wcmVjb21wdXRlZCA9IG51bGw7XG59XG5CYXNlQ3VydmUuQmFzZVBvaW50ID0gQmFzZVBvaW50O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEoLypvdGhlciovKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLnZhbGlkYXRlKHRoaXMpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5kZWNvZGVQb2ludCA9IGZ1bmN0aW9uIGRlY29kZVBvaW50KGJ5dGVzLCBlbmMpIHtcbiAgYnl0ZXMgPSB1dGlscy50b0FycmF5KGJ5dGVzLCBlbmMpO1xuXG4gIHZhciBsZW4gPSB0aGlzLnAuYnl0ZUxlbmd0aCgpO1xuXG4gIC8vIHVuY29tcHJlc3NlZCwgaHlicmlkLW9kZCwgaHlicmlkLWV2ZW5cbiAgaWYgKChieXRlc1swXSA9PT0gMHgwNCB8fCBieXRlc1swXSA9PT0gMHgwNiB8fCBieXRlc1swXSA9PT0gMHgwNykgJiZcbiAgICAgIGJ5dGVzLmxlbmd0aCAtIDEgPT09IDIgKiBsZW4pIHtcbiAgICBpZiAoYnl0ZXNbMF0gPT09IDB4MDYpXG4gICAgICBhc3NlcnQoYnl0ZXNbYnl0ZXMubGVuZ3RoIC0gMV0gJSAyID09PSAwKTtcbiAgICBlbHNlIGlmIChieXRlc1swXSA9PT0gMHgwNylcbiAgICAgIGFzc2VydChieXRlc1tieXRlcy5sZW5ndGggLSAxXSAlIDIgPT09IDEpO1xuXG4gICAgdmFyIHJlcyA9ICB0aGlzLnBvaW50KGJ5dGVzLnNsaWNlKDEsIDEgKyBsZW4pLFxuICAgICAgYnl0ZXMuc2xpY2UoMSArIGxlbiwgMSArIDIgKiBsZW4pKTtcblxuICAgIHJldHVybiByZXM7XG4gIH0gZWxzZSBpZiAoKGJ5dGVzWzBdID09PSAweDAyIHx8IGJ5dGVzWzBdID09PSAweDAzKSAmJlxuICAgICAgICAgICAgICBieXRlcy5sZW5ndGggLSAxID09PSBsZW4pIHtcbiAgICByZXR1cm4gdGhpcy5wb2ludEZyb21YKGJ5dGVzLnNsaWNlKDEsIDEgKyBsZW4pLCBieXRlc1swXSA9PT0gMHgwMyk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHBvaW50IGZvcm1hdCcpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkID0gZnVuY3Rpb24gZW5jb2RlQ29tcHJlc3NlZChlbmMpIHtcbiAgcmV0dXJuIHRoaXMuZW5jb2RlKGVuYywgdHJ1ZSk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBfZW5jb2RlKGNvbXBhY3QpIHtcbiAgdmFyIGxlbiA9IHRoaXMuY3VydmUucC5ieXRlTGVuZ3RoKCk7XG4gIHZhciB4ID0gdGhpcy5nZXRYKCkudG9BcnJheSgnYmUnLCBsZW4pO1xuXG4gIGlmIChjb21wYWN0KVxuICAgIHJldHVybiBbIHRoaXMuZ2V0WSgpLmlzRXZlbigpID8gMHgwMiA6IDB4MDMgXS5jb25jYXQoeCk7XG5cbiAgcmV0dXJuIFsgMHgwNCBdLmNvbmNhdCh4LCB0aGlzLmdldFkoKS50b0FycmF5KCdiZScsIGxlbikpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZW5jLCBjb21wYWN0KSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy5fZW5jb2RlKGNvbXBhY3QpLCBlbmMpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5wcmVjb21wdXRlID0gZnVuY3Rpb24gcHJlY29tcHV0ZShwb3dlcikge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gdGhpcztcblxuICB2YXIgcHJlY29tcHV0ZWQgPSB7XG4gICAgZG91YmxlczogbnVsbCxcbiAgICBuYWY6IG51bGwsXG4gICAgYmV0YTogbnVsbCxcbiAgfTtcbiAgcHJlY29tcHV0ZWQubmFmID0gdGhpcy5fZ2V0TkFGUG9pbnRzKDgpO1xuICBwcmVjb21wdXRlZC5kb3VibGVzID0gdGhpcy5fZ2V0RG91Ymxlcyg0LCBwb3dlcik7XG4gIHByZWNvbXB1dGVkLmJldGEgPSB0aGlzLl9nZXRCZXRhKCk7XG4gIHRoaXMucHJlY29tcHV0ZWQgPSBwcmVjb21wdXRlZDtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2hhc0RvdWJsZXMgPSBmdW5jdGlvbiBfaGFzRG91YmxlcyhrKSB7XG4gIGlmICghdGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGRvdWJsZXMgPSB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7XG4gIGlmICghZG91YmxlcylcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIGRvdWJsZXMucG9pbnRzLmxlbmd0aCA+PSBNYXRoLmNlaWwoKGsuYml0TGVuZ3RoKCkgKyAxKSAvIGRvdWJsZXMuc3RlcCk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9nZXREb3VibGVzID0gZnVuY3Rpb24gX2dldERvdWJsZXMoc3RlcCwgcG93ZXIpIHtcbiAgaWYgKHRoaXMucHJlY29tcHV0ZWQgJiYgdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzKVxuICAgIHJldHVybiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7XG5cbiAgdmFyIGRvdWJsZXMgPSBbIHRoaXMgXTtcbiAgdmFyIGFjYyA9IHRoaXM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG93ZXI7IGkgKz0gc3RlcCkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc3RlcDsgaisrKVxuICAgICAgYWNjID0gYWNjLmRibCgpO1xuICAgIGRvdWJsZXMucHVzaChhY2MpO1xuICB9XG4gIHJldHVybiB7XG4gICAgc3RlcDogc3RlcCxcbiAgICBwb2ludHM6IGRvdWJsZXMsXG4gIH07XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9nZXROQUZQb2ludHMgPSBmdW5jdGlvbiBfZ2V0TkFGUG9pbnRzKHduZCkge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZCAmJiB0aGlzLnByZWNvbXB1dGVkLm5hZilcbiAgICByZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5uYWY7XG5cbiAgdmFyIHJlcyA9IFsgdGhpcyBdO1xuICB2YXIgbWF4ID0gKDEgPDwgd25kKSAtIDE7XG4gIHZhciBkYmwgPSBtYXggPT09IDEgPyBudWxsIDogdGhpcy5kYmwoKTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBtYXg7IGkrKylcbiAgICByZXNbaV0gPSByZXNbaSAtIDFdLmFkZChkYmwpO1xuICByZXR1cm4ge1xuICAgIHduZDogd25kLFxuICAgIHBvaW50czogcmVzLFxuICB9O1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5fZ2V0QmV0YSA9IGZ1bmN0aW9uIF9nZXRCZXRhKCkge1xuICByZXR1cm4gbnVsbDtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuZGJscCA9IGZ1bmN0aW9uIGRibHAoaykge1xuICB2YXIgciA9IHRoaXM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgazsgaSsrKVxuICAgIHIgPSByLmRibCgpO1xuICByZXR1cm4gcjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBCYXNlID0gcmVxdWlyZSgnLi9iYXNlJyk7XG5cbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEVkd2FyZHNDdXJ2ZShjb25mKSB7XG4gIC8vIE5PVEU6IEltcG9ydGFudCBhcyB3ZSBhcmUgY3JlYXRpbmcgcG9pbnQgaW4gQmFzZS5jYWxsKClcbiAgdGhpcy50d2lzdGVkID0gKGNvbmYuYSB8IDApICE9PSAxO1xuICB0aGlzLm1PbmVBID0gdGhpcy50d2lzdGVkICYmIChjb25mLmEgfCAwKSA9PT0gLTE7XG4gIHRoaXMuZXh0ZW5kZWQgPSB0aGlzLm1PbmVBO1xuXG4gIEJhc2UuY2FsbCh0aGlzLCAnZWR3YXJkcycsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS51bW9kKHRoaXMucmVkLm0pO1xuICB0aGlzLmEgPSB0aGlzLmEudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmMgPSBuZXcgQk4oY29uZi5jLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmMyID0gdGhpcy5jLnJlZFNxcigpO1xuICB0aGlzLmQgPSBuZXcgQk4oY29uZi5kLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmRkID0gdGhpcy5kLnJlZEFkZCh0aGlzLmQpO1xuXG4gIGFzc2VydCghdGhpcy50d2lzdGVkIHx8IHRoaXMuYy5mcm9tUmVkKCkuY21wbigxKSA9PT0gMCk7XG4gIHRoaXMub25lQyA9IChjb25mLmMgfCAwKSA9PT0gMTtcbn1cbmluaGVyaXRzKEVkd2FyZHNDdXJ2ZSwgQmFzZSk7XG5tb2R1bGUuZXhwb3J0cyA9IEVkd2FyZHNDdXJ2ZTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5fbXVsQSA9IGZ1bmN0aW9uIF9tdWxBKG51bSkge1xuICBpZiAodGhpcy5tT25lQSlcbiAgICByZXR1cm4gbnVtLnJlZE5lZygpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuYS5yZWRNdWwobnVtKTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUuX211bEMgPSBmdW5jdGlvbiBfbXVsQyhudW0pIHtcbiAgaWYgKHRoaXMub25lQylcbiAgICByZXR1cm4gbnVtO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuYy5yZWRNdWwobnVtKTtcbn07XG5cbi8vIEp1c3QgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTaG9ydCBjdXJ2ZVxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5qcG9pbnQgPSBmdW5jdGlvbiBqcG9pbnQoeCwgeSwgeiwgdCkge1xuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5LCB6LCB0KTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tWCA9IGZ1bmN0aW9uIHBvaW50RnJvbVgoeCwgb2RkKSB7XG4gIHggPSBuZXcgQk4oeCwgMTYpO1xuICBpZiAoIXgucmVkKVxuICAgIHggPSB4LnRvUmVkKHRoaXMucmVkKTtcblxuICB2YXIgeDIgPSB4LnJlZFNxcigpO1xuICB2YXIgcmhzID0gdGhpcy5jMi5yZWRTdWIodGhpcy5hLnJlZE11bCh4MikpO1xuICB2YXIgbGhzID0gdGhpcy5vbmUucmVkU3ViKHRoaXMuYzIucmVkTXVsKHRoaXMuZCkucmVkTXVsKHgyKSk7XG5cbiAgdmFyIHkyID0gcmhzLnJlZE11bChsaHMucmVkSW52bSgpKTtcbiAgdmFyIHkgPSB5Mi5yZWRTcXJ0KCk7XG4gIGlmICh5LnJlZFNxcigpLnJlZFN1Yih5MikuY21wKHRoaXMuemVybykgIT09IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHBvaW50Jyk7XG5cbiAgdmFyIGlzT2RkID0geS5mcm9tUmVkKCkuaXNPZGQoKTtcbiAgaWYgKG9kZCAmJiAhaXNPZGQgfHwgIW9kZCAmJiBpc09kZClcbiAgICB5ID0geS5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tWSA9IGZ1bmN0aW9uIHBvaW50RnJvbVkoeSwgb2RkKSB7XG4gIHkgPSBuZXcgQk4oeSwgMTYpO1xuICBpZiAoIXkucmVkKVxuICAgIHkgPSB5LnRvUmVkKHRoaXMucmVkKTtcblxuICAvLyB4XjIgPSAoeV4yIC0gY14yKSAvIChjXjIgZCB5XjIgLSBhKVxuICB2YXIgeTIgPSB5LnJlZFNxcigpO1xuICB2YXIgbGhzID0geTIucmVkU3ViKHRoaXMuYzIpO1xuICB2YXIgcmhzID0geTIucmVkTXVsKHRoaXMuZCkucmVkTXVsKHRoaXMuYzIpLnJlZFN1Yih0aGlzLmEpO1xuICB2YXIgeDIgPSBsaHMucmVkTXVsKHJocy5yZWRJbnZtKCkpO1xuXG4gIGlmICh4Mi5jbXAodGhpcy56ZXJvKSA9PT0gMCkge1xuICAgIGlmIChvZGQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5wb2ludCh0aGlzLnplcm8sIHkpO1xuICB9XG5cbiAgdmFyIHggPSB4Mi5yZWRTcXJ0KCk7XG4gIGlmICh4LnJlZFNxcigpLnJlZFN1Yih4MikuY21wKHRoaXMuemVybykgIT09IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHBvaW50Jyk7XG5cbiAgaWYgKHguZnJvbVJlZCgpLmlzT2RkKCkgIT09IG9kZClcbiAgICB4ID0geC5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZShwb2ludCkge1xuICBpZiAocG9pbnQuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0cnVlO1xuXG4gIC8vIEN1cnZlOiBBICogWF4yICsgWV4yID0gQ14yICogKDEgKyBEICogWF4yICogWV4yKVxuICBwb2ludC5ub3JtYWxpemUoKTtcblxuICB2YXIgeDIgPSBwb2ludC54LnJlZFNxcigpO1xuICB2YXIgeTIgPSBwb2ludC55LnJlZFNxcigpO1xuICB2YXIgbGhzID0geDIucmVkTXVsKHRoaXMuYSkucmVkQWRkKHkyKTtcbiAgdmFyIHJocyA9IHRoaXMuYzIucmVkTXVsKHRoaXMub25lLnJlZEFkZCh0aGlzLmQucmVkTXVsKHgyKS5yZWRNdWwoeTIpKSk7XG5cbiAgcmV0dXJuIGxocy5jbXAocmhzKSA9PT0gMDtcbn07XG5cbmZ1bmN0aW9uIFBvaW50KGN1cnZlLCB4LCB5LCB6LCB0KSB7XG4gIEJhc2UuQmFzZVBvaW50LmNhbGwodGhpcywgY3VydmUsICdwcm9qZWN0aXZlJyk7XG4gIGlmICh4ID09PSBudWxsICYmIHkgPT09IG51bGwgJiYgeiA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IHRoaXMuY3VydmUuemVybztcbiAgICB0aGlzLnkgPSB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnogPSB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnQgPSB0aGlzLmN1cnZlLnplcm87XG4gICAgdGhpcy56T25lID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnggPSBuZXcgQk4oeCwgMTYpO1xuICAgIHRoaXMueSA9IG5ldyBCTih5LCAxNik7XG4gICAgdGhpcy56ID0geiA/IG5ldyBCTih6LCAxNikgOiB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnQgPSB0ICYmIG5ldyBCTih0LCAxNik7XG4gICAgaWYgKCF0aGlzLngucmVkKVxuICAgICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMueS5yZWQpXG4gICAgICB0aGlzLnkgPSB0aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy56LnJlZClcbiAgICAgIHRoaXMueiA9IHRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKHRoaXMudCAmJiAhdGhpcy50LnJlZClcbiAgICAgIHRoaXMudCA9IHRoaXMudC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgdGhpcy56T25lID0gdGhpcy56ID09PSB0aGlzLmN1cnZlLm9uZTtcblxuICAgIC8vIFVzZSBleHRlbmRlZCBjb29yZGluYXRlc1xuICAgIGlmICh0aGlzLmN1cnZlLmV4dGVuZGVkICYmICF0aGlzLnQpIHtcbiAgICAgIHRoaXMudCA9IHRoaXMueC5yZWRNdWwodGhpcy55KTtcbiAgICAgIGlmICghdGhpcy56T25lKVxuICAgICAgICB0aGlzLnQgPSB0aGlzLnQucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpO1xuICAgIH1cbiAgfVxufVxuaW5oZXJpdHMoUG9pbnQsIEJhc2UuQmFzZVBvaW50KTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludEZyb21KU09OID0gZnVuY3Rpb24gcG9pbnRGcm9tSlNPTihvYmopIHtcbiAgcmV0dXJuIFBvaW50LmZyb21KU09OKHRoaXMsIG9iaik7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoeCwgeSwgeiwgdCkge1xuICByZXR1cm4gbmV3IFBvaW50KHRoaXMsIHgsIHksIHosIHQpO1xufTtcblxuUG9pbnQuZnJvbUpTT04gPSBmdW5jdGlvbiBmcm9tSlNPTihjdXJ2ZSwgb2JqKSB7XG4gIHJldHVybiBuZXcgUG9pbnQoY3VydmUsIG9ialswXSwgb2JqWzFdLCBvYmpbMl0pO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgeTogJyArIHRoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy54LmNtcG4oMCkgPT09IDAgJiZcbiAgICAodGhpcy55LmNtcCh0aGlzLnopID09PSAwIHx8XG4gICAgKHRoaXMuek9uZSAmJiB0aGlzLnkuY21wKHRoaXMuY3VydmUuYykgPT09IDApKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZXh0RGJsID0gZnVuY3Rpb24gX2V4dERibCgpIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtZXh0ZW5kZWQtMS5odG1sXG4gIC8vICAgICAjZG91YmxpbmctZGJsLTIwMDgtaHdjZFxuICAvLyA0TSArIDRTXG5cbiAgLy8gQSA9IFgxXjJcbiAgdmFyIGEgPSB0aGlzLngucmVkU3FyKCk7XG4gIC8vIEIgPSBZMV4yXG4gIHZhciBiID0gdGhpcy55LnJlZFNxcigpO1xuICAvLyBDID0gMiAqIFoxXjJcbiAgdmFyIGMgPSB0aGlzLnoucmVkU3FyKCk7XG4gIGMgPSBjLnJlZElBZGQoYyk7XG4gIC8vIEQgPSBhICogQVxuICB2YXIgZCA9IHRoaXMuY3VydmUuX211bEEoYSk7XG4gIC8vIEUgPSAoWDEgKyBZMSleMiAtIEEgLSBCXG4gIHZhciBlID0gdGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZFNxcigpLnJlZElTdWIoYSkucmVkSVN1YihiKTtcbiAgLy8gRyA9IEQgKyBCXG4gIHZhciBnID0gZC5yZWRBZGQoYik7XG4gIC8vIEYgPSBHIC0gQ1xuICB2YXIgZiA9IGcucmVkU3ViKGMpO1xuICAvLyBIID0gRCAtIEJcbiAgdmFyIGggPSBkLnJlZFN1YihiKTtcbiAgLy8gWDMgPSBFICogRlxuICB2YXIgbnggPSBlLnJlZE11bChmKTtcbiAgLy8gWTMgPSBHICogSFxuICB2YXIgbnkgPSBnLnJlZE11bChoKTtcbiAgLy8gVDMgPSBFICogSFxuICB2YXIgbnQgPSBlLnJlZE11bChoKTtcbiAgLy8gWjMgPSBGICogR1xuICB2YXIgbnogPSBmLnJlZE11bChnKTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueiwgbnQpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9wcm9qRGJsID0gZnVuY3Rpb24gX3Byb2pEYmwoKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLXByb2plY3RpdmUuaHRtbFxuICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA4LWJiamxwXG4gIC8vICAgICAjZG91YmxpbmctZGJsLTIwMDctYmxcbiAgLy8gYW5kIG90aGVyc1xuICAvLyBHZW5lcmFsbHkgM00gKyA0UyBvciAyTSArIDRTXG5cbiAgLy8gQiA9IChYMSArIFkxKV4yXG4gIHZhciBiID0gdGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZFNxcigpO1xuICAvLyBDID0gWDFeMlxuICB2YXIgYyA9IHRoaXMueC5yZWRTcXIoKTtcbiAgLy8gRCA9IFkxXjJcbiAgdmFyIGQgPSB0aGlzLnkucmVkU3FyKCk7XG5cbiAgdmFyIG54O1xuICB2YXIgbnk7XG4gIHZhciBuejtcbiAgdmFyIGU7XG4gIHZhciBoO1xuICB2YXIgajtcbiAgaWYgKHRoaXMuY3VydmUudHdpc3RlZCkge1xuICAgIC8vIEUgPSBhICogQ1xuICAgIGUgPSB0aGlzLmN1cnZlLl9tdWxBKGMpO1xuICAgIC8vIEYgPSBFICsgRFxuICAgIHZhciBmID0gZS5yZWRBZGQoZCk7XG4gICAgaWYgKHRoaXMuek9uZSkge1xuICAgICAgLy8gWDMgPSAoQiAtIEMgLSBEKSAqIChGIC0gMilcbiAgICAgIG54ID0gYi5yZWRTdWIoYykucmVkU3ViKGQpLnJlZE11bChmLnJlZFN1Yih0aGlzLmN1cnZlLnR3bykpO1xuICAgICAgLy8gWTMgPSBGICogKEUgLSBEKVxuICAgICAgbnkgPSBmLnJlZE11bChlLnJlZFN1YihkKSk7XG4gICAgICAvLyBaMyA9IEZeMiAtIDIgKiBGXG4gICAgICBueiA9IGYucmVkU3FyKCkucmVkU3ViKGYpLnJlZFN1YihmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSCA9IFoxXjJcbiAgICAgIGggPSB0aGlzLnoucmVkU3FyKCk7XG4gICAgICAvLyBKID0gRiAtIDIgKiBIXG4gICAgICBqID0gZi5yZWRTdWIoaCkucmVkSVN1YihoKTtcbiAgICAgIC8vIFgzID0gKEItQy1EKSpKXG4gICAgICBueCA9IGIucmVkU3ViKGMpLnJlZElTdWIoZCkucmVkTXVsKGopO1xuICAgICAgLy8gWTMgPSBGICogKEUgLSBEKVxuICAgICAgbnkgPSBmLnJlZE11bChlLnJlZFN1YihkKSk7XG4gICAgICAvLyBaMyA9IEYgKiBKXG4gICAgICBueiA9IGYucmVkTXVsKGopO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBFID0gQyArIERcbiAgICBlID0gYy5yZWRBZGQoZCk7XG4gICAgLy8gSCA9IChjICogWjEpXjJcbiAgICBoID0gdGhpcy5jdXJ2ZS5fbXVsQyh0aGlzLnopLnJlZFNxcigpO1xuICAgIC8vIEogPSBFIC0gMiAqIEhcbiAgICBqID0gZS5yZWRTdWIoaCkucmVkU3ViKGgpO1xuICAgIC8vIFgzID0gYyAqIChCIC0gRSkgKiBKXG4gICAgbnggPSB0aGlzLmN1cnZlLl9tdWxDKGIucmVkSVN1YihlKSkucmVkTXVsKGopO1xuICAgIC8vIFkzID0gYyAqIEUgKiAoQyAtIEQpXG4gICAgbnkgPSB0aGlzLmN1cnZlLl9tdWxDKGUpLnJlZE11bChjLnJlZElTdWIoZCkpO1xuICAgIC8vIFozID0gRSAqIEpcbiAgICBueiA9IGUucmVkTXVsKGopO1xuICB9XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIERvdWJsZSBpbiBleHRlbmRlZCBjb29yZGluYXRlc1xuICBpZiAodGhpcy5jdXJ2ZS5leHRlbmRlZClcbiAgICByZXR1cm4gdGhpcy5fZXh0RGJsKCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fcHJvakRibCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9leHRBZGQgPSBmdW5jdGlvbiBfZXh0QWRkKHApIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtZXh0ZW5kZWQtMS5odG1sXG4gIC8vICAgICAjYWRkaXRpb24tYWRkLTIwMDgtaHdjZC0zXG4gIC8vIDhNXG5cbiAgLy8gQSA9IChZMSAtIFgxKSAqIChZMiAtIFgyKVxuICB2YXIgYSA9IHRoaXMueS5yZWRTdWIodGhpcy54KS5yZWRNdWwocC55LnJlZFN1YihwLngpKTtcbiAgLy8gQiA9IChZMSArIFgxKSAqIChZMiArIFgyKVxuICB2YXIgYiA9IHRoaXMueS5yZWRBZGQodGhpcy54KS5yZWRNdWwocC55LnJlZEFkZChwLngpKTtcbiAgLy8gQyA9IFQxICogayAqIFQyXG4gIHZhciBjID0gdGhpcy50LnJlZE11bCh0aGlzLmN1cnZlLmRkKS5yZWRNdWwocC50KTtcbiAgLy8gRCA9IFoxICogMiAqIFoyXG4gIHZhciBkID0gdGhpcy56LnJlZE11bChwLnoucmVkQWRkKHAueikpO1xuICAvLyBFID0gQiAtIEFcbiAgdmFyIGUgPSBiLnJlZFN1YihhKTtcbiAgLy8gRiA9IEQgLSBDXG4gIHZhciBmID0gZC5yZWRTdWIoYyk7XG4gIC8vIEcgPSBEICsgQ1xuICB2YXIgZyA9IGQucmVkQWRkKGMpO1xuICAvLyBIID0gQiArIEFcbiAgdmFyIGggPSBiLnJlZEFkZChhKTtcbiAgLy8gWDMgPSBFICogRlxuICB2YXIgbnggPSBlLnJlZE11bChmKTtcbiAgLy8gWTMgPSBHICogSFxuICB2YXIgbnkgPSBnLnJlZE11bChoKTtcbiAgLy8gVDMgPSBFICogSFxuICB2YXIgbnQgPSBlLnJlZE11bChoKTtcbiAgLy8gWjMgPSBGICogR1xuICB2YXIgbnogPSBmLnJlZE11bChnKTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueiwgbnQpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9wcm9qQWRkID0gZnVuY3Rpb24gX3Byb2pBZGQocCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1wcm9qZWN0aXZlLmh0bWxcbiAgLy8gICAgICNhZGRpdGlvbi1hZGQtMjAwOC1iYmpscFxuICAvLyAgICAgI2FkZGl0aW9uLWFkZC0yMDA3LWJsXG4gIC8vIDEwTSArIDFTXG5cbiAgLy8gQSA9IFoxICogWjJcbiAgdmFyIGEgPSB0aGlzLnoucmVkTXVsKHAueik7XG4gIC8vIEIgPSBBXjJcbiAgdmFyIGIgPSBhLnJlZFNxcigpO1xuICAvLyBDID0gWDEgKiBYMlxuICB2YXIgYyA9IHRoaXMueC5yZWRNdWwocC54KTtcbiAgLy8gRCA9IFkxICogWTJcbiAgdmFyIGQgPSB0aGlzLnkucmVkTXVsKHAueSk7XG4gIC8vIEUgPSBkICogQyAqIERcbiAgdmFyIGUgPSB0aGlzLmN1cnZlLmQucmVkTXVsKGMpLnJlZE11bChkKTtcbiAgLy8gRiA9IEIgLSBFXG4gIHZhciBmID0gYi5yZWRTdWIoZSk7XG4gIC8vIEcgPSBCICsgRVxuICB2YXIgZyA9IGIucmVkQWRkKGUpO1xuICAvLyBYMyA9IEEgKiBGICogKChYMSArIFkxKSAqIChYMiArIFkyKSAtIEMgLSBEKVxuICB2YXIgdG1wID0gdGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZE11bChwLngucmVkQWRkKHAueSkpLnJlZElTdWIoYykucmVkSVN1YihkKTtcbiAgdmFyIG54ID0gYS5yZWRNdWwoZikucmVkTXVsKHRtcCk7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICBpZiAodGhpcy5jdXJ2ZS50d2lzdGVkKSB7XG4gICAgLy8gWTMgPSBBICogRyAqIChEIC0gYSAqIEMpXG4gICAgbnkgPSBhLnJlZE11bChnKS5yZWRNdWwoZC5yZWRTdWIodGhpcy5jdXJ2ZS5fbXVsQShjKSkpO1xuICAgIC8vIFozID0gRiAqIEdcbiAgICBueiA9IGYucmVkTXVsKGcpO1xuICB9IGVsc2Uge1xuICAgIC8vIFkzID0gQSAqIEcgKiAoRCAtIEMpXG4gICAgbnkgPSBhLnJlZE11bChnKS5yZWRNdWwoZC5yZWRTdWIoYykpO1xuICAgIC8vIFozID0gYyAqIEYgKiBHXG4gICAgbnogPSB0aGlzLmN1cnZlLl9tdWxDKGYpLnJlZE11bChnKTtcbiAgfVxuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQocCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHA7XG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICBpZiAodGhpcy5jdXJ2ZS5leHRlbmRlZClcbiAgICByZXR1cm4gdGhpcy5fZXh0QWRkKHApO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuX3Byb2pBZGQocCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGspIHtcbiAgaWYgKHRoaXMuX2hhc0RvdWJsZXMoaykpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsIGspO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWwodGhpcywgayk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsQWRkID0gZnVuY3Rpb24gbXVsQWRkKGsxLCBwLCBrMikge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLCBbIHRoaXMsIHAgXSwgWyBrMSwgazIgXSwgMiwgZmFsc2UpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmptdWxBZGQgPSBmdW5jdGlvbiBqbXVsQWRkKGsxLCBwLCBrMikge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLCBbIHRoaXMsIHAgXSwgWyBrMSwgazIgXSwgMiwgdHJ1ZSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubm9ybWFsaXplID0gZnVuY3Rpb24gbm9ybWFsaXplKCkge1xuICBpZiAodGhpcy56T25lKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIE5vcm1hbGl6ZSBjb29yZGluYXRlc1xuICB2YXIgemkgPSB0aGlzLnoucmVkSW52bSgpO1xuICB0aGlzLnggPSB0aGlzLngucmVkTXVsKHppKTtcbiAgdGhpcy55ID0gdGhpcy55LnJlZE11bCh6aSk7XG4gIGlmICh0aGlzLnQpXG4gICAgdGhpcy50ID0gdGhpcy50LnJlZE11bCh6aSk7XG4gIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICB0aGlzLnpPbmUgPSB0cnVlO1xuICByZXR1cm4gdGhpcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcoKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWROZWcoKSxcbiAgICB0aGlzLnksXG4gICAgdGhpcy56LFxuICAgIHRoaXMudCAmJiB0aGlzLnQucmVkTmVnKCkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFggPSBmdW5jdGlvbiBnZXRYKCkge1xuICB0aGlzLm5vcm1hbGl6ZSgpO1xuICByZXR1cm4gdGhpcy54LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gZ2V0WSgpIHtcbiAgdGhpcy5ub3JtYWxpemUoKTtcbiAgcmV0dXJuIHRoaXMueS5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcShvdGhlcikge1xuICByZXR1cm4gdGhpcyA9PT0gb3RoZXIgfHxcbiAgICAgICAgIHRoaXMuZ2V0WCgpLmNtcChvdGhlci5nZXRYKCkpID09PSAwICYmXG4gICAgICAgICB0aGlzLmdldFkoKS5jbXAob3RoZXIuZ2V0WSgpKSA9PT0gMDtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcVhUb1AgPSBmdW5jdGlvbiBlcVhUb1AoeCkge1xuICB2YXIgcnggPSB4LnRvUmVkKHRoaXMuY3VydmUucmVkKS5yZWRNdWwodGhpcy56KTtcbiAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgIHJldHVybiB0cnVlO1xuXG4gIHZhciB4YyA9IHguY2xvbmUoKTtcbiAgdmFyIHQgPSB0aGlzLmN1cnZlLnJlZE4ucmVkTXVsKHRoaXMueik7XG4gIGZvciAoOzspIHtcbiAgICB4Yy5pYWRkKHRoaXMuY3VydmUubik7XG4gICAgaWYgKHhjLmNtcCh0aGlzLmN1cnZlLnApID49IDApXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICByeC5yZWRJQWRkKHQpO1xuICAgIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG4vLyBDb21wYXRpYmlsaXR5IHdpdGggQmFzZUN1cnZlXG5Qb2ludC5wcm90b3R5cGUudG9QID0gUG9pbnQucHJvdG90eXBlLm5vcm1hbGl6ZTtcblBvaW50LnByb3RvdHlwZS5taXhlZEFkZCA9IFBvaW50LnByb3RvdHlwZS5hZGQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjdXJ2ZSA9IGV4cG9ydHM7XG5cbmN1cnZlLmJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcbmN1cnZlLnNob3J0ID0gcmVxdWlyZSgnLi9zaG9ydCcpO1xuY3VydmUubW9udCA9IHJlcXVpcmUoJy4vbW9udCcpO1xuY3VydmUuZWR3YXJkcyA9IHJlcXVpcmUoJy4vZWR3YXJkcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBCYXNlID0gcmVxdWlyZSgnLi9iYXNlJyk7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbmZ1bmN0aW9uIE1vbnRDdXJ2ZShjb25mKSB7XG4gIEJhc2UuY2FsbCh0aGlzLCAnbW9udCcsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYiA9IG5ldyBCTihjb25mLmIsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuaTQgPSBuZXcgQk4oNCkudG9SZWQodGhpcy5yZWQpLnJlZEludm0oKTtcbiAgdGhpcy50d28gPSBuZXcgQk4oMikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmEyNCA9IHRoaXMuaTQucmVkTXVsKHRoaXMuYS5yZWRBZGQodGhpcy50d28pKTtcbn1cbmluaGVyaXRzKE1vbnRDdXJ2ZSwgQmFzZSk7XG5tb2R1bGUuZXhwb3J0cyA9IE1vbnRDdXJ2ZTtcblxuTW9udEN1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKHBvaW50KSB7XG4gIHZhciB4ID0gcG9pbnQubm9ybWFsaXplKCkueDtcbiAgdmFyIHgyID0geC5yZWRTcXIoKTtcbiAgdmFyIHJocyA9IHgyLnJlZE11bCh4KS5yZWRBZGQoeDIucmVkTXVsKHRoaXMuYSkpLnJlZEFkZCh4KTtcbiAgdmFyIHkgPSByaHMucmVkU3FydCgpO1xuXG4gIHJldHVybiB5LnJlZFNxcigpLmNtcChyaHMpID09PSAwO1xufTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHopIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ3Byb2plY3RpdmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeiA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueiA9IHRoaXMuY3VydmUuemVybztcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnggPSBuZXcgQk4oeCwgMTYpO1xuICAgIHRoaXMueiA9IG5ldyBCTih6LCAxNik7XG4gICAgaWYgKCF0aGlzLngucmVkKVxuICAgICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMuei5yZWQpXG4gICAgICB0aGlzLnogPSB0aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICB9XG59XG5pbmhlcml0cyhQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5Nb250Q3VydmUucHJvdG90eXBlLmRlY29kZVBvaW50ID0gZnVuY3Rpb24gZGVjb2RlUG9pbnQoYnl0ZXMsIGVuYykge1xuICByZXR1cm4gdGhpcy5wb2ludCh1dGlscy50b0FycmF5KGJ5dGVzLCBlbmMpLCAxKTtcbn07XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUucG9pbnQgPSBmdW5jdGlvbiBwb2ludCh4LCB6KSB7XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcywgeCwgeik7XG59O1xuXG5Nb250Q3VydmUucHJvdG90eXBlLnBvaW50RnJvbUpTT04gPSBmdW5jdGlvbiBwb2ludEZyb21KU09OKG9iaikge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5wcmVjb21wdXRlID0gZnVuY3Rpb24gcHJlY29tcHV0ZSgpIHtcbiAgLy8gTm8tb3Bcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZW5jb2RlID0gZnVuY3Rpb24gX2VuY29kZSgpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0WCgpLnRvQXJyYXkoJ2JlJywgdGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKSk7XG59O1xuXG5Qb2ludC5mcm9tSlNPTiA9IGZ1bmN0aW9uIGZyb21KU09OKGN1cnZlLCBvYmopIHtcbiAgcmV0dXJuIG5ldyBQb2ludChjdXJ2ZSwgb2JqWzBdLCBvYmpbMV0gfHwgY3VydmUub25lKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIFBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIFBvaW50IHg6ICcgKyB0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHo6ICcgKyB0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgLy8gWFhYIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgemVybyBpcyBhbHdheXMgemVybyBpbiByZWRcbiAgcmV0dXJuIHRoaXMuei5jbXBuKDApID09PSAwO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgLy8gaHR0cDovL2h5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1tb250Z29tLXh6Lmh0bWwjZG91YmxpbmctZGJsLTE5ODctbS0zXG4gIC8vIDJNICsgMlMgKyA0QVxuXG4gIC8vIEEgPSBYMSArIFoxXG4gIHZhciBhID0gdGhpcy54LnJlZEFkZCh0aGlzLnopO1xuICAvLyBBQSA9IEFeMlxuICB2YXIgYWEgPSBhLnJlZFNxcigpO1xuICAvLyBCID0gWDEgLSBaMVxuICB2YXIgYiA9IHRoaXMueC5yZWRTdWIodGhpcy56KTtcbiAgLy8gQkIgPSBCXjJcbiAgdmFyIGJiID0gYi5yZWRTcXIoKTtcbiAgLy8gQyA9IEFBIC0gQkJcbiAgdmFyIGMgPSBhYS5yZWRTdWIoYmIpO1xuICAvLyBYMyA9IEFBICogQkJcbiAgdmFyIG54ID0gYWEucmVkTXVsKGJiKTtcbiAgLy8gWjMgPSBDICogKEJCICsgQTI0ICogQylcbiAgdmFyIG56ID0gYy5yZWRNdWwoYmIucmVkQWRkKHRoaXMuY3VydmUuYTI0LnJlZE11bChjKSkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5kaWZmQWRkID0gZnVuY3Rpb24gZGlmZkFkZChwLCBkaWZmKSB7XG4gIC8vIGh0dHA6Ly9oeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tbW9udGdvbS14ei5odG1sI2RpZmZhZGQtZGFkZC0xOTg3LW0tM1xuICAvLyA0TSArIDJTICsgNkFcblxuICAvLyBBID0gWDIgKyBaMlxuICB2YXIgYSA9IHRoaXMueC5yZWRBZGQodGhpcy56KTtcbiAgLy8gQiA9IFgyIC0gWjJcbiAgdmFyIGIgPSB0aGlzLngucmVkU3ViKHRoaXMueik7XG4gIC8vIEMgPSBYMyArIFozXG4gIHZhciBjID0gcC54LnJlZEFkZChwLnopO1xuICAvLyBEID0gWDMgLSBaM1xuICB2YXIgZCA9IHAueC5yZWRTdWIocC56KTtcbiAgLy8gREEgPSBEICogQVxuICB2YXIgZGEgPSBkLnJlZE11bChhKTtcbiAgLy8gQ0IgPSBDICogQlxuICB2YXIgY2IgPSBjLnJlZE11bChiKTtcbiAgLy8gWDUgPSBaMSAqIChEQSArIENCKV4yXG4gIHZhciBueCA9IGRpZmYuei5yZWRNdWwoZGEucmVkQWRkKGNiKS5yZWRTcXIoKSk7XG4gIC8vIFo1ID0gWDEgKiAoREEgLSBDQileMlxuICB2YXIgbnogPSBkaWZmLngucmVkTXVsKGRhLnJlZElTdWIoY2IpLnJlZFNxcigpKTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG56KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwoaykge1xuICB2YXIgdCA9IGsuY2xvbmUoKTtcbiAgdmFyIGEgPSB0aGlzOyAvLyAoTiAvIDIpICogUSArIFFcbiAgdmFyIGIgPSB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpOyAvLyAoTiAvIDIpICogUVxuICB2YXIgYyA9IHRoaXM7IC8vIFFcblxuICBmb3IgKHZhciBiaXRzID0gW107IHQuY21wbigwKSAhPT0gMDsgdC5pdXNocm4oMSkpXG4gICAgYml0cy5wdXNoKHQuYW5kbG4oMSkpO1xuXG4gIGZvciAodmFyIGkgPSBiaXRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGJpdHNbaV0gPT09IDApIHtcbiAgICAgIC8vIE4gKiBRICsgUSA9ICgoTiAvIDIpICogUSArIFEpKSArIChOIC8gMikgKiBRXG4gICAgICBhID0gYS5kaWZmQWRkKGIsIGMpO1xuICAgICAgLy8gTiAqIFEgPSAyICogKChOIC8gMikgKiBRICsgUSkpXG4gICAgICBiID0gYi5kYmwoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTiAqIFEgPSAoKE4gLyAyKSAqIFEgKyBRKSArICgoTiAvIDIpICogUSlcbiAgICAgIGIgPSBhLmRpZmZBZGQoYiwgYyk7XG4gICAgICAvLyBOICogUSArIFEgPSAyICogKChOIC8gMikgKiBRICsgUSlcbiAgICAgIGEgPSBhLmRibCgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYjtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWxBZGQgPSBmdW5jdGlvbiBtdWxBZGQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlJyk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuanVtbEFkZCA9IGZ1bmN0aW9uIGp1bWxBZGQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlJyk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcShvdGhlcikge1xuICByZXR1cm4gdGhpcy5nZXRYKCkuY21wKG90aGVyLmdldFgoKSkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubm9ybWFsaXplID0gZnVuY3Rpb24gbm9ybWFsaXplKCkge1xuICB0aGlzLnggPSB0aGlzLngucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpO1xuICB0aGlzLnogPSB0aGlzLmN1cnZlLm9uZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uIGdldFgoKSB7XG4gIC8vIE5vcm1hbGl6ZSBjb29yZGluYXRlc1xuICB0aGlzLm5vcm1hbGl6ZSgpO1xuXG4gIHJldHVybiB0aGlzLnguZnJvbVJlZCgpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcblxudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gU2hvcnRDdXJ2ZShjb25mKSB7XG4gIEJhc2UuY2FsbCh0aGlzLCAnc2hvcnQnLCBjb25mKTtcblxuICB0aGlzLmEgPSBuZXcgQk4oY29uZi5hLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmIgPSBuZXcgQk4oY29uZi5iLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLnRpbnYgPSB0aGlzLnR3by5yZWRJbnZtKCk7XG5cbiAgdGhpcy56ZXJvQSA9IHRoaXMuYS5mcm9tUmVkKCkuY21wbigwKSA9PT0gMDtcbiAgdGhpcy50aHJlZUEgPSB0aGlzLmEuZnJvbVJlZCgpLnN1Yih0aGlzLnApLmNtcG4oLTMpID09PSAwO1xuXG4gIC8vIElmIHRoZSBjdXJ2ZSBpcyBlbmRvbW9ycGhpYywgcHJlY2FsY3VsYXRlIGJldGEgYW5kIGxhbWJkYVxuICB0aGlzLmVuZG8gPSB0aGlzLl9nZXRFbmRvbW9ycGhpc20oY29uZik7XG4gIHRoaXMuX2VuZG9XbmFmVDEgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX2VuZG9XbmFmVDIgPSBuZXcgQXJyYXkoNCk7XG59XG5pbmhlcml0cyhTaG9ydEN1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gU2hvcnRDdXJ2ZTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9tb3JwaGlzbSA9IGZ1bmN0aW9uIF9nZXRFbmRvbW9ycGhpc20oY29uZikge1xuICAvLyBObyBlZmZpY2llbnQgZW5kb21vcnBoaXNtXG4gIGlmICghdGhpcy56ZXJvQSB8fCAhdGhpcy5nIHx8ICF0aGlzLm4gfHwgdGhpcy5wLm1vZG4oMykgIT09IDEpXG4gICAgcmV0dXJuO1xuXG4gIC8vIENvbXB1dGUgYmV0YSBhbmQgbGFtYmRhLCB0aGF0IGxhbWJkYSAqIFAgPSAoYmV0YSAqIFB4OyBQeSlcbiAgdmFyIGJldGE7XG4gIHZhciBsYW1iZGE7XG4gIGlmIChjb25mLmJldGEpIHtcbiAgICBiZXRhID0gbmV3IEJOKGNvbmYuYmV0YSwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgYmV0YXMgPSB0aGlzLl9nZXRFbmRvUm9vdHModGhpcy5wKTtcbiAgICAvLyBDaG9vc2UgdGhlIHNtYWxsZXN0IGJldGFcbiAgICBiZXRhID0gYmV0YXNbMF0uY21wKGJldGFzWzFdKSA8IDAgPyBiZXRhc1swXSA6IGJldGFzWzFdO1xuICAgIGJldGEgPSBiZXRhLnRvUmVkKHRoaXMucmVkKTtcbiAgfVxuICBpZiAoY29uZi5sYW1iZGEpIHtcbiAgICBsYW1iZGEgPSBuZXcgQk4oY29uZi5sYW1iZGEsIDE2KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDaG9vc2UgdGhlIGxhbWJkYSB0aGF0IGlzIG1hdGNoaW5nIHNlbGVjdGVkIGJldGFcbiAgICB2YXIgbGFtYmRhcyA9IHRoaXMuX2dldEVuZG9Sb290cyh0aGlzLm4pO1xuICAgIGlmICh0aGlzLmcubXVsKGxhbWJkYXNbMF0pLnguY21wKHRoaXMuZy54LnJlZE11bChiZXRhKSkgPT09IDApIHtcbiAgICAgIGxhbWJkYSA9IGxhbWJkYXNbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhbWJkYSA9IGxhbWJkYXNbMV07XG4gICAgICBhc3NlcnQodGhpcy5nLm11bChsYW1iZGEpLnguY21wKHRoaXMuZy54LnJlZE11bChiZXRhKSkgPT09IDApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdldCBiYXNpcyB2ZWN0b3JzLCB1c2VkIGZvciBiYWxhbmNlZCBsZW5ndGgtdHdvIHJlcHJlc2VudGF0aW9uXG4gIHZhciBiYXNpcztcbiAgaWYgKGNvbmYuYmFzaXMpIHtcbiAgICBiYXNpcyA9IGNvbmYuYmFzaXMubWFwKGZ1bmN0aW9uKHZlYykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYTogbmV3IEJOKHZlYy5hLCAxNiksXG4gICAgICAgIGI6IG5ldyBCTih2ZWMuYiwgMTYpLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBiYXNpcyA9IHRoaXMuX2dldEVuZG9CYXNpcyhsYW1iZGEpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBiZXRhOiBiZXRhLFxuICAgIGxhbWJkYTogbGFtYmRhLFxuICAgIGJhc2lzOiBiYXNpcyxcbiAgfTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9nZXRFbmRvUm9vdHMgPSBmdW5jdGlvbiBfZ2V0RW5kb1Jvb3RzKG51bSkge1xuICAvLyBGaW5kIHJvb3RzIG9mIGZvciB4XjIgKyB4ICsgMSBpbiBGXG4gIC8vIFJvb3QgPSAoLTEgKy0gU3FydCgtMykpIC8gMlxuICAvL1xuICB2YXIgcmVkID0gbnVtID09PSB0aGlzLnAgPyB0aGlzLnJlZCA6IEJOLm1vbnQobnVtKTtcbiAgdmFyIHRpbnYgPSBuZXcgQk4oMikudG9SZWQocmVkKS5yZWRJbnZtKCk7XG4gIHZhciBudGludiA9IHRpbnYucmVkTmVnKCk7XG5cbiAgdmFyIHMgPSBuZXcgQk4oMykudG9SZWQocmVkKS5yZWROZWcoKS5yZWRTcXJ0KCkucmVkTXVsKHRpbnYpO1xuXG4gIHZhciBsMSA9IG50aW52LnJlZEFkZChzKS5mcm9tUmVkKCk7XG4gIHZhciBsMiA9IG50aW52LnJlZFN1YihzKS5mcm9tUmVkKCk7XG4gIHJldHVybiBbIGwxLCBsMiBdO1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9CYXNpcyA9IGZ1bmN0aW9uIF9nZXRFbmRvQmFzaXMobGFtYmRhKSB7XG4gIC8vIGFwcnhTcXJ0ID49IHNxcnQodGhpcy5uKVxuICB2YXIgYXByeFNxcnQgPSB0aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkgLyAyKSk7XG5cbiAgLy8gMy43NFxuICAvLyBSdW4gRUdDRCwgdW50aWwgcihMICsgMSkgPCBhcHJ4U3FydFxuICB2YXIgdSA9IGxhbWJkYTtcbiAgdmFyIHYgPSB0aGlzLm4uY2xvbmUoKTtcbiAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICB2YXIgeTEgPSBuZXcgQk4oMCk7XG4gIHZhciB4MiA9IG5ldyBCTigwKTtcbiAgdmFyIHkyID0gbmV3IEJOKDEpO1xuXG4gIC8vIE5PVEU6IGFsbCB2ZWN0b3JzIGFyZSByb290cyBvZjogYSArIGIgKiBsYW1iZGEgPSAwIChtb2QgbilcbiAgdmFyIGEwO1xuICB2YXIgYjA7XG4gIC8vIEZpcnN0IHZlY3RvclxuICB2YXIgYTE7XG4gIHZhciBiMTtcbiAgLy8gU2Vjb25kIHZlY3RvclxuICB2YXIgYTI7XG4gIHZhciBiMjtcblxuICB2YXIgcHJldlI7XG4gIHZhciBpID0gMDtcbiAgdmFyIHI7XG4gIHZhciB4O1xuICB3aGlsZSAodS5jbXBuKDApICE9PSAwKSB7XG4gICAgdmFyIHEgPSB2LmRpdih1KTtcbiAgICByID0gdi5zdWIocS5tdWwodSkpO1xuICAgIHggPSB4Mi5zdWIocS5tdWwoeDEpKTtcbiAgICB2YXIgeSA9IHkyLnN1YihxLm11bCh5MSkpO1xuXG4gICAgaWYgKCFhMSAmJiByLmNtcChhcHJ4U3FydCkgPCAwKSB7XG4gICAgICBhMCA9IHByZXZSLm5lZygpO1xuICAgICAgYjAgPSB4MTtcbiAgICAgIGExID0gci5uZWcoKTtcbiAgICAgIGIxID0geDtcbiAgICB9IGVsc2UgaWYgKGExICYmICsraSA9PT0gMikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHByZXZSID0gcjtcblxuICAgIHYgPSB1O1xuICAgIHUgPSByO1xuICAgIHgyID0geDE7XG4gICAgeDEgPSB4O1xuICAgIHkyID0geTE7XG4gICAgeTEgPSB5O1xuICB9XG4gIGEyID0gci5uZWcoKTtcbiAgYjIgPSB4O1xuXG4gIHZhciBsZW4xID0gYTEuc3FyKCkuYWRkKGIxLnNxcigpKTtcbiAgdmFyIGxlbjIgPSBhMi5zcXIoKS5hZGQoYjIuc3FyKCkpO1xuICBpZiAobGVuMi5jbXAobGVuMSkgPj0gMCkge1xuICAgIGEyID0gYTA7XG4gICAgYjIgPSBiMDtcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBzaWduc1xuICBpZiAoYTEubmVnYXRpdmUpIHtcbiAgICBhMSA9IGExLm5lZygpO1xuICAgIGIxID0gYjEubmVnKCk7XG4gIH1cbiAgaWYgKGEyLm5lZ2F0aXZlKSB7XG4gICAgYTIgPSBhMi5uZWcoKTtcbiAgICBiMiA9IGIyLm5lZygpO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICB7IGE6IGExLCBiOiBiMSB9LFxuICAgIHsgYTogYTIsIGI6IGIyIH0sXG4gIF07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZW5kb1NwbGl0ID0gZnVuY3Rpb24gX2VuZG9TcGxpdChrKSB7XG4gIHZhciBiYXNpcyA9IHRoaXMuZW5kby5iYXNpcztcbiAgdmFyIHYxID0gYmFzaXNbMF07XG4gIHZhciB2MiA9IGJhc2lzWzFdO1xuXG4gIHZhciBjMSA9IHYyLmIubXVsKGspLmRpdlJvdW5kKHRoaXMubik7XG4gIHZhciBjMiA9IHYxLmIubmVnKCkubXVsKGspLmRpdlJvdW5kKHRoaXMubik7XG5cbiAgdmFyIHAxID0gYzEubXVsKHYxLmEpO1xuICB2YXIgcDIgPSBjMi5tdWwodjIuYSk7XG4gIHZhciBxMSA9IGMxLm11bCh2MS5iKTtcbiAgdmFyIHEyID0gYzIubXVsKHYyLmIpO1xuXG4gIC8vIENhbGN1bGF0ZSBhbnN3ZXJcbiAgdmFyIGsxID0gay5zdWIocDEpLnN1YihwMik7XG4gIHZhciBrMiA9IHExLmFkZChxMikubmVnKCk7XG4gIHJldHVybiB7IGsxOiBrMSwgazI6IGsyIH07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludEZyb21YID0gZnVuY3Rpb24gcG9pbnRGcm9tWCh4LCBvZGQpIHtcbiAgeCA9IG5ldyBCTih4LCAxNik7XG4gIGlmICgheC5yZWQpXG4gICAgeCA9IHgudG9SZWQodGhpcy5yZWQpO1xuXG4gIHZhciB5MiA9IHgucmVkU3FyKCkucmVkTXVsKHgpLnJlZElBZGQoeC5yZWRNdWwodGhpcy5hKSkucmVkSUFkZCh0aGlzLmIpO1xuICB2YXIgeSA9IHkyLnJlZFNxcnQoKTtcbiAgaWYgKHkucmVkU3FyKCkucmVkU3ViKHkyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICAvLyBYWFggSXMgdGhlcmUgYW55IHdheSB0byB0ZWxsIGlmIHRoZSBudW1iZXIgaXMgb2RkIHdpdGhvdXQgY29udmVydGluZyBpdFxuICAvLyB0byBub24tcmVkIGZvcm0/XG4gIHZhciBpc09kZCA9IHkuZnJvbVJlZCgpLmlzT2RkKCk7XG4gIGlmIChvZGQgJiYgIWlzT2RkIHx8ICFvZGQgJiYgaXNPZGQpXG4gICAgeSA9IHkucmVkTmVnKCk7XG5cbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSk7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKHBvaW50KSB7XG4gIGlmIChwb2ludC5pbmYpXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgdmFyIHggPSBwb2ludC54O1xuICB2YXIgeSA9IHBvaW50Lnk7XG5cbiAgdmFyIGF4ID0gdGhpcy5hLnJlZE11bCh4KTtcbiAgdmFyIHJocyA9IHgucmVkU3FyKCkucmVkTXVsKHgpLnJlZElBZGQoYXgpLnJlZElBZGQodGhpcy5iKTtcbiAgcmV0dXJuIHkucmVkU3FyKCkucmVkSVN1YihyaHMpLmNtcG4oMCkgPT09IDA7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZW5kb1duYWZNdWxBZGQgPVxuICAgIGZ1bmN0aW9uIF9lbmRvV25hZk11bEFkZChwb2ludHMsIGNvZWZmcywgamFjb2JpYW5SZXN1bHQpIHtcbiAgICAgIHZhciBucG9pbnRzID0gdGhpcy5fZW5kb1duYWZUMTtcbiAgICAgIHZhciBuY29lZmZzID0gdGhpcy5fZW5kb1duYWZUMjtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzcGxpdCA9IHRoaXMuX2VuZG9TcGxpdChjb2VmZnNbaV0pO1xuICAgICAgICB2YXIgcCA9IHBvaW50c1tpXTtcbiAgICAgICAgdmFyIGJldGEgPSBwLl9nZXRCZXRhKCk7XG5cbiAgICAgICAgaWYgKHNwbGl0LmsxLm5lZ2F0aXZlKSB7XG4gICAgICAgICAgc3BsaXQuazEuaW5lZygpO1xuICAgICAgICAgIHAgPSBwLm5lZyh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3BsaXQuazIubmVnYXRpdmUpIHtcbiAgICAgICAgICBzcGxpdC5rMi5pbmVnKCk7XG4gICAgICAgICAgYmV0YSA9IGJldGEubmVnKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbnBvaW50c1tpICogMl0gPSBwO1xuICAgICAgICBucG9pbnRzW2kgKiAyICsgMV0gPSBiZXRhO1xuICAgICAgICBuY29lZmZzW2kgKiAyXSA9IHNwbGl0LmsxO1xuICAgICAgICBuY29lZmZzW2kgKiAyICsgMV0gPSBzcGxpdC5rMjtcbiAgICAgIH1cbiAgICAgIHZhciByZXMgPSB0aGlzLl93bmFmTXVsQWRkKDEsIG5wb2ludHMsIG5jb2VmZnMsIGkgKiAyLCBqYWNvYmlhblJlc3VsdCk7XG5cbiAgICAgIC8vIENsZWFuLXVwIHJlZmVyZW5jZXMgdG8gcG9pbnRzIGFuZCBjb2VmZmljaWVudHNcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaSAqIDI7IGorKykge1xuICAgICAgICBucG9pbnRzW2pdID0gbnVsbDtcbiAgICAgICAgbmNvZWZmc1tqXSA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbmZ1bmN0aW9uIFBvaW50KGN1cnZlLCB4LCB5LCBpc1JlZCkge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAnYWZmaW5lJyk7XG4gIGlmICh4ID09PSBudWxsICYmIHkgPT09IG51bGwpIHtcbiAgICB0aGlzLnggPSBudWxsO1xuICAgIHRoaXMueSA9IG51bGw7XG4gICAgdGhpcy5pbmYgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy55ID0gbmV3IEJOKHksIDE2KTtcbiAgICAvLyBGb3JjZSByZWRnb21lcnkgcmVwcmVzZW50YXRpb24gd2hlbiBsb2FkaW5nIGZyb20gSlNPTlxuICAgIGlmIChpc1JlZCkge1xuICAgICAgdGhpcy54LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICAgIHRoaXMueS5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgfVxuICAgIGlmICghdGhpcy54LnJlZClcbiAgICAgIHRoaXMueCA9IHRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnkucmVkKVxuICAgICAgdGhpcy55ID0gdGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB0aGlzLmluZiA9IGZhbHNlO1xuICB9XG59XG5pbmhlcml0cyhQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHksIGlzUmVkKSB7XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcywgeCwgeSwgaXNSZWQpO1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqLCByZWQpIHtcbiAgcmV0dXJuIFBvaW50LmZyb21KU09OKHRoaXMsIG9iaiwgcmVkKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZ2V0QmV0YSA9IGZ1bmN0aW9uIF9nZXRCZXRhKCkge1xuICBpZiAoIXRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm47XG5cbiAgdmFyIHByZSA9IHRoaXMucHJlY29tcHV0ZWQ7XG4gIGlmIChwcmUgJiYgcHJlLmJldGEpXG4gICAgcmV0dXJuIHByZS5iZXRhO1xuXG4gIHZhciBiZXRhID0gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTXVsKHRoaXMuY3VydmUuZW5kby5iZXRhKSwgdGhpcy55KTtcbiAgaWYgKHByZSkge1xuICAgIHZhciBjdXJ2ZSA9IHRoaXMuY3VydmU7XG4gICAgdmFyIGVuZG9NdWwgPSBmdW5jdGlvbihwKSB7XG4gICAgICByZXR1cm4gY3VydmUucG9pbnQocC54LnJlZE11bChjdXJ2ZS5lbmRvLmJldGEpLCBwLnkpO1xuICAgIH07XG4gICAgcHJlLmJldGEgPSBiZXRhO1xuICAgIGJldGEucHJlY29tcHV0ZWQgPSB7XG4gICAgICBiZXRhOiBudWxsLFxuICAgICAgbmFmOiBwcmUubmFmICYmIHtcbiAgICAgICAgd25kOiBwcmUubmFmLnduZCxcbiAgICAgICAgcG9pbnRzOiBwcmUubmFmLnBvaW50cy5tYXAoZW5kb011bCksXG4gICAgICB9LFxuICAgICAgZG91YmxlczogcHJlLmRvdWJsZXMgJiYge1xuICAgICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgICBwb2ludHM6IHByZS5kb3VibGVzLnBvaW50cy5tYXAoZW5kb011bCksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIGJldGE7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xuICBpZiAoIXRoaXMucHJlY29tcHV0ZWQpXG4gICAgcmV0dXJuIFsgdGhpcy54LCB0aGlzLnkgXTtcblxuICByZXR1cm4gWyB0aGlzLngsIHRoaXMueSwgdGhpcy5wcmVjb21wdXRlZCAmJiB7XG4gICAgZG91YmxlczogdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzICYmIHtcbiAgICAgIHN0ZXA6IHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5zdGVwLFxuICAgICAgcG9pbnRzOiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMucG9pbnRzLnNsaWNlKDEpLFxuICAgIH0sXG4gICAgbmFmOiB0aGlzLnByZWNvbXB1dGVkLm5hZiAmJiB7XG4gICAgICB3bmQ6IHRoaXMucHJlY29tcHV0ZWQubmFmLnduZCxcbiAgICAgIHBvaW50czogdGhpcy5wcmVjb21wdXRlZC5uYWYucG9pbnRzLnNsaWNlKDEpLFxuICAgIH0sXG4gIH0gXTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaiwgcmVkKSB7XG4gIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJylcbiAgICBvYmogPSBKU09OLnBhcnNlKG9iaik7XG4gIHZhciByZXMgPSBjdXJ2ZS5wb2ludChvYmpbMF0sIG9ialsxXSwgcmVkKTtcbiAgaWYgKCFvYmpbMl0pXG4gICAgcmV0dXJuIHJlcztcblxuICBmdW5jdGlvbiBvYmoycG9pbnQob2JqKSB7XG4gICAgcmV0dXJuIGN1cnZlLnBvaW50KG9ialswXSwgb2JqWzFdLCByZWQpO1xuICB9XG5cbiAgdmFyIHByZSA9IG9ialsyXTtcbiAgcmVzLnByZWNvbXB1dGVkID0ge1xuICAgIGJldGE6IG51bGwsXG4gICAgZG91YmxlczogcHJlLmRvdWJsZXMgJiYge1xuICAgICAgc3RlcDogcHJlLmRvdWJsZXMuc3RlcCxcbiAgICAgIHBvaW50czogWyByZXMgXS5jb25jYXQocHJlLmRvdWJsZXMucG9pbnRzLm1hcChvYmoycG9pbnQpKSxcbiAgICB9LFxuICAgIG5hZjogcHJlLm5hZiAmJiB7XG4gICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgcG9pbnRzOiBbIHJlcyBdLmNvbmNhdChwcmUubmFmLnBvaW50cy5tYXAob2JqMnBvaW50KSksXG4gICAgfSxcbiAgfTtcbiAgcmV0dXJuIHJlcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIFBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIFBvaW50IHg6ICcgKyB0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHk6ICcgKyB0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgcmV0dXJuIHRoaXMuaW5mO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChwKSB7XG4gIC8vIE8gKyBQID0gUFxuICBpZiAodGhpcy5pbmYpXG4gICAgcmV0dXJuIHA7XG5cbiAgLy8gUCArIE8gPSBQXG4gIGlmIChwLmluZilcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBQICsgUCA9IDJQXG4gIGlmICh0aGlzLmVxKHApKVxuICAgIHJldHVybiB0aGlzLmRibCgpO1xuXG4gIC8vIFAgKyAoLVApID0gT1xuICBpZiAodGhpcy5uZWcoKS5lcShwKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLCBudWxsKTtcblxuICAvLyBQICsgUSA9IE9cbiAgaWYgKHRoaXMueC5jbXAocC54KSA9PT0gMClcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLCBudWxsKTtcblxuICB2YXIgYyA9IHRoaXMueS5yZWRTdWIocC55KTtcbiAgaWYgKGMuY21wbigwKSAhPT0gMClcbiAgICBjID0gYy5yZWRNdWwodGhpcy54LnJlZFN1YihwLngpLnJlZEludm0oKSk7XG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0aGlzLngpLnJlZElTdWIocC54KTtcbiAgdmFyIG55ID0gYy5yZWRNdWwodGhpcy54LnJlZFN1YihueCkpLnJlZElTdWIodGhpcy55KTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5kYmwgPSBmdW5jdGlvbiBkYmwoKSB7XG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyAyUCA9IE9cbiAgdmFyIHlzMSA9IHRoaXMueS5yZWRBZGQodGhpcy55KTtcbiAgaWYgKHlzMS5jbXBuKDApID09PSAwKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciBhID0gdGhpcy5jdXJ2ZS5hO1xuXG4gIHZhciB4MiA9IHRoaXMueC5yZWRTcXIoKTtcbiAgdmFyIGR5aW52ID0geXMxLnJlZEludm0oKTtcbiAgdmFyIGMgPSB4Mi5yZWRBZGQoeDIpLnJlZElBZGQoeDIpLnJlZElBZGQoYSkucmVkTXVsKGR5aW52KTtcblxuICB2YXIgbnggPSBjLnJlZFNxcigpLnJlZElTdWIodGhpcy54LnJlZEFkZCh0aGlzLngpKTtcbiAgdmFyIG55ID0gYy5yZWRNdWwodGhpcy54LnJlZFN1YihueCkpLnJlZElTdWIodGhpcy55KTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uIGdldFkoKSB7XG4gIHJldHVybiB0aGlzLnkuZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIGsgPSBuZXcgQk4oaywgMTYpO1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG4gIGVsc2UgaWYgKHRoaXMuX2hhc0RvdWJsZXMoaykpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsIGspO1xuICBlbHNlIGlmICh0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKFsgdGhpcyBdLCBbIGsgXSk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLCBrKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWxBZGQgPSBmdW5jdGlvbiBtdWxBZGQoazEsIHAyLCBrMikge1xuICB2YXIgcG9pbnRzID0gWyB0aGlzLCBwMiBdO1xuICB2YXIgY29lZmZzID0gWyBrMSwgazIgXTtcbiAgaWYgKHRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQocG9pbnRzLCBjb2VmZnMpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgcG9pbnRzLCBjb2VmZnMsIDIpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmptdWxBZGQgPSBmdW5jdGlvbiBqbXVsQWRkKGsxLCBwMiwgazIpIHtcbiAgdmFyIHBvaW50cyA9IFsgdGhpcywgcDIgXTtcbiAgdmFyIGNvZWZmcyA9IFsgazEsIGsyIF07XG4gIGlmICh0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzLCB0cnVlKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIHBvaW50cywgY29lZmZzLCAyLCB0cnVlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKHApIHtcbiAgcmV0dXJuIHRoaXMgPT09IHAgfHxcbiAgICAgICAgIHRoaXMuaW5mID09PSBwLmluZiAmJlxuICAgICAgICAgICAgICh0aGlzLmluZiB8fCB0aGlzLnguY21wKHAueCkgPT09IDAgJiYgdGhpcy55LmNtcChwLnkpID09PSAwKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcoX3ByZWNvbXB1dGUpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIHZhciByZXMgPSB0aGlzLmN1cnZlLnBvaW50KHRoaXMueCwgdGhpcy55LnJlZE5lZygpKTtcbiAgaWYgKF9wcmVjb21wdXRlICYmIHRoaXMucHJlY29tcHV0ZWQpIHtcbiAgICB2YXIgcHJlID0gdGhpcy5wcmVjb21wdXRlZDtcbiAgICB2YXIgbmVnYXRlID0gZnVuY3Rpb24ocCkge1xuICAgICAgcmV0dXJuIHAubmVnKCk7XG4gICAgfTtcbiAgICByZXMucHJlY29tcHV0ZWQgPSB7XG4gICAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgICBwb2ludHM6IHByZS5uYWYucG9pbnRzLm1hcChuZWdhdGUpLFxuICAgICAgfSxcbiAgICAgIGRvdWJsZXM6IHByZS5kb3VibGVzICYmIHtcbiAgICAgICAgc3RlcDogcHJlLmRvdWJsZXMuc3RlcCxcbiAgICAgICAgcG9pbnRzOiBwcmUuZG91Ymxlcy5wb2ludHMubWFwKG5lZ2F0ZSksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cblBvaW50LnByb3RvdHlwZS50b0ogPSBmdW5jdGlvbiB0b0ooKSB7XG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG5cbiAgdmFyIHJlcyA9IHRoaXMuY3VydmUuanBvaW50KHRoaXMueCwgdGhpcy55LCB0aGlzLmN1cnZlLm9uZSk7XG4gIHJldHVybiByZXM7XG59O1xuXG5mdW5jdGlvbiBKUG9pbnQoY3VydmUsIHgsIHksIHopIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ2phY29iaWFuJyk7XG4gIGlmICh4ID09PSBudWxsICYmIHkgPT09IG51bGwgJiYgeiA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueSA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueiA9IG5ldyBCTigwKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnggPSBuZXcgQk4oeCwgMTYpO1xuICAgIHRoaXMueSA9IG5ldyBCTih5LCAxNik7XG4gICAgdGhpcy56ID0gbmV3IEJOKHosIDE2KTtcbiAgfVxuICBpZiAoIXRoaXMueC5yZWQpXG4gICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgaWYgKCF0aGlzLnkucmVkKVxuICAgIHRoaXMueSA9IHRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIGlmICghdGhpcy56LnJlZClcbiAgICB0aGlzLnogPSB0aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuXG4gIHRoaXMuek9uZSA9IHRoaXMueiA9PT0gdGhpcy5jdXJ2ZS5vbmU7XG59XG5pbmhlcml0cyhKUG9pbnQsIEJhc2UuQmFzZVBvaW50KTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuanBvaW50ID0gZnVuY3Rpb24ganBvaW50KHgsIHksIHopIHtcbiAgcmV0dXJuIG5ldyBKUG9pbnQodGhpcywgeCwgeSwgeik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLnRvUCA9IGZ1bmN0aW9uIHRvUCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciB6aW52ID0gdGhpcy56LnJlZEludm0oKTtcbiAgdmFyIHppbnYyID0gemludi5yZWRTcXIoKTtcbiAgdmFyIGF4ID0gdGhpcy54LnJlZE11bCh6aW52Mik7XG4gIHZhciBheSA9IHRoaXMueS5yZWRNdWwoemludjIpLnJlZE11bCh6aW52KTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChheCwgYXkpO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcoKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsIHRoaXMueS5yZWROZWcoKSwgdGhpcy56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gcDtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDEyTSArIDRTICsgN0FcbiAgdmFyIHB6MiA9IHAuei5yZWRTcXIoKTtcbiAgdmFyIHoyID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgdTEgPSB0aGlzLngucmVkTXVsKHB6Mik7XG4gIHZhciB1MiA9IHAueC5yZWRNdWwoejIpO1xuICB2YXIgczEgPSB0aGlzLnkucmVkTXVsKHB6Mi5yZWRNdWwocC56KSk7XG4gIHZhciBzMiA9IHAueS5yZWRNdWwoejIucmVkTXVsKHRoaXMueikpO1xuXG4gIHZhciBoID0gdTEucmVkU3ViKHUyKTtcbiAgdmFyIHIgPSBzMS5yZWRTdWIoczIpO1xuICBpZiAoaC5jbXBuKDApID09PSAwKSB7XG4gICAgaWYgKHIuY21wbigwKSAhPT0gMClcbiAgICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5kYmwoKTtcbiAgfVxuXG4gIHZhciBoMiA9IGgucmVkU3FyKCk7XG4gIHZhciBoMyA9IGgyLnJlZE11bChoKTtcbiAgdmFyIHYgPSB1MS5yZWRNdWwoaDIpO1xuXG4gIHZhciBueCA9IHIucmVkU3FyKCkucmVkSUFkZChoMykucmVkSVN1Yih2KS5yZWRJU3ViKHYpO1xuICB2YXIgbnkgPSByLnJlZE11bCh2LnJlZElTdWIobngpKS5yZWRJU3ViKHMxLnJlZE11bChoMykpO1xuICB2YXIgbnogPSB0aGlzLnoucmVkTXVsKHAueikucmVkTXVsKGgpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUubWl4ZWRBZGQgPSBmdW5jdGlvbiBtaXhlZEFkZChwKSB7XG4gIC8vIE8gKyBQID0gUFxuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHAudG9KKCk7XG5cbiAgLy8gUCArIE8gPSBQXG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyA4TSArIDNTICsgN0FcbiAgdmFyIHoyID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgdTEgPSB0aGlzLng7XG4gIHZhciB1MiA9IHAueC5yZWRNdWwoejIpO1xuICB2YXIgczEgPSB0aGlzLnk7XG4gIHZhciBzMiA9IHAueS5yZWRNdWwoejIpLnJlZE11bCh0aGlzLnopO1xuXG4gIHZhciBoID0gdTEucmVkU3ViKHUyKTtcbiAgdmFyIHIgPSBzMS5yZWRTdWIoczIpO1xuICBpZiAoaC5jbXBuKDApID09PSAwKSB7XG4gICAgaWYgKHIuY21wbigwKSAhPT0gMClcbiAgICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5kYmwoKTtcbiAgfVxuXG4gIHZhciBoMiA9IGgucmVkU3FyKCk7XG4gIHZhciBoMyA9IGgyLnJlZE11bChoKTtcbiAgdmFyIHYgPSB1MS5yZWRNdWwoaDIpO1xuXG4gIHZhciBueCA9IHIucmVkU3FyKCkucmVkSUFkZChoMykucmVkSVN1Yih2KS5yZWRJU3ViKHYpO1xuICB2YXIgbnkgPSByLnJlZE11bCh2LnJlZElTdWIobngpKS5yZWRJU3ViKHMxLnJlZE11bChoMykpO1xuICB2YXIgbnogPSB0aGlzLnoucmVkTXVsKGgpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZGJscCA9IGZ1bmN0aW9uIGRibHAocG93KSB7XG4gIGlmIChwb3cgPT09IDApXG4gICAgcmV0dXJuIHRoaXM7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcbiAgaWYgKCFwb3cpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCk7XG5cbiAgdmFyIGk7XG4gIGlmICh0aGlzLmN1cnZlLnplcm9BIHx8IHRoaXMuY3VydmUudGhyZWVBKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIGZvciAoaSA9IDA7IGkgPCBwb3c7IGkrKylcbiAgICAgIHIgPSByLmRibCgpO1xuICAgIHJldHVybiByO1xuICB9XG5cbiAgLy8gMU0gKyAyUyArIDFBICsgTiAqICg0UyArIDVNICsgOEEpXG4gIC8vIE4gPSAxID0+IDZNICsgNlMgKyA5QVxuICB2YXIgYSA9IHRoaXMuY3VydmUuYTtcbiAgdmFyIHRpbnYgPSB0aGlzLmN1cnZlLnRpbnY7XG5cbiAgdmFyIGp4ID0gdGhpcy54O1xuICB2YXIgankgPSB0aGlzLnk7XG4gIHZhciBqeiA9IHRoaXMuejtcbiAgdmFyIGp6NCA9IGp6LnJlZFNxcigpLnJlZFNxcigpO1xuXG4gIC8vIFJldXNlIHJlc3VsdHNcbiAgdmFyIGp5ZCA9IGp5LnJlZEFkZChqeSk7XG4gIGZvciAoaSA9IDA7IGkgPCBwb3c7IGkrKykge1xuICAgIHZhciBqeDIgPSBqeC5yZWRTcXIoKTtcbiAgICB2YXIganlkMiA9IGp5ZC5yZWRTcXIoKTtcbiAgICB2YXIganlkNCA9IGp5ZDIucmVkU3FyKCk7XG4gICAgdmFyIGMgPSBqeDIucmVkQWRkKGp4MikucmVkSUFkZChqeDIpLnJlZElBZGQoYS5yZWRNdWwoano0KSk7XG5cbiAgICB2YXIgdDEgPSBqeC5yZWRNdWwoanlkMik7XG4gICAgdmFyIG54ID0gYy5yZWRTcXIoKS5yZWRJU3ViKHQxLnJlZEFkZCh0MSkpO1xuICAgIHZhciB0MiA9IHQxLnJlZElTdWIobngpO1xuICAgIHZhciBkbnkgPSBjLnJlZE11bCh0Mik7XG4gICAgZG55ID0gZG55LnJlZElBZGQoZG55KS5yZWRJU3ViKGp5ZDQpO1xuICAgIHZhciBueiA9IGp5ZC5yZWRNdWwoanopO1xuICAgIGlmIChpICsgMSA8IHBvdylcbiAgICAgIGp6NCA9IGp6NC5yZWRNdWwoanlkNCk7XG5cbiAgICBqeCA9IG54O1xuICAgIGp6ID0gbno7XG4gICAganlkID0gZG55O1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KGp4LCBqeWQucmVkTXVsKHRpbnYpLCBqeik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIGlmICh0aGlzLmN1cnZlLnplcm9BKVxuICAgIHJldHVybiB0aGlzLl96ZXJvRGJsKCk7XG4gIGVsc2UgaWYgKHRoaXMuY3VydmUudGhyZWVBKVxuICAgIHJldHVybiB0aGlzLl90aHJlZURibCgpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuX2RibCgpO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5femVyb0RibCA9IGZ1bmN0aW9uIF96ZXJvRGJsKCkge1xuICB2YXIgbng7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICAvLyBaID0gMVxuICBpZiAodGhpcy56T25lKSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0wLmh0bWxcbiAgICAvLyAgICAgI2RvdWJsaW5nLW1kYmwtMjAwNy1ibFxuICAgIC8vIDFNICsgNVMgKyAxNEFcblxuICAgIC8vIFhYID0gWDFeMlxuICAgIHZhciB4eCA9IHRoaXMueC5yZWRTcXIoKTtcbiAgICAvLyBZWSA9IFkxXjJcbiAgICB2YXIgeXkgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gWVlZWSA9IFlZXjJcbiAgICB2YXIgeXl5eSA9IHl5LnJlZFNxcigpO1xuICAgIC8vIFMgPSAyICogKChYMSArIFlZKV4yIC0gWFggLSBZWVlZKVxuICAgIHZhciBzID0gdGhpcy54LnJlZEFkZCh5eSkucmVkU3FyKCkucmVkSVN1Yih4eCkucmVkSVN1Yih5eXl5KTtcbiAgICBzID0gcy5yZWRJQWRkKHMpO1xuICAgIC8vIE0gPSAzICogWFggKyBhOyBhID0gMFxuICAgIHZhciBtID0geHgucmVkQWRkKHh4KS5yZWRJQWRkKHh4KTtcbiAgICAvLyBUID0gTSBeIDIgLSAyKlNcbiAgICB2YXIgdCA9IG0ucmVkU3FyKCkucmVkSVN1YihzKS5yZWRJU3ViKHMpO1xuXG4gICAgLy8gOCAqIFlZWVlcbiAgICB2YXIgeXl5eTggPSB5eXl5LnJlZElBZGQoeXl5eSk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuXG4gICAgLy8gWDMgPSBUXG4gICAgbnggPSB0O1xuICAgIC8vIFkzID0gTSAqIChTIC0gVCkgLSA4ICogWVlZWVxuICAgIG55ID0gbS5yZWRNdWwocy5yZWRJU3ViKHQpKS5yZWRJU3ViKHl5eXk4KTtcbiAgICAvLyBaMyA9IDIqWTFcbiAgICBueiA9IHRoaXMueS5yZWRBZGQodGhpcy55KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTAuaHRtbFxuICAgIC8vICAgICAjZG91YmxpbmctZGJsLTIwMDktbFxuICAgIC8vIDJNICsgNVMgKyAxM0FcblxuICAgIC8vIEEgPSBYMV4yXG4gICAgdmFyIGEgPSB0aGlzLngucmVkU3FyKCk7XG4gICAgLy8gQiA9IFkxXjJcbiAgICB2YXIgYiA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBDID0gQl4yXG4gICAgdmFyIGMgPSBiLnJlZFNxcigpO1xuICAgIC8vIEQgPSAyICogKChYMSArIEIpXjIgLSBBIC0gQylcbiAgICB2YXIgZCA9IHRoaXMueC5yZWRBZGQoYikucmVkU3FyKCkucmVkSVN1YihhKS5yZWRJU3ViKGMpO1xuICAgIGQgPSBkLnJlZElBZGQoZCk7XG4gICAgLy8gRSA9IDMgKiBBXG4gICAgdmFyIGUgPSBhLnJlZEFkZChhKS5yZWRJQWRkKGEpO1xuICAgIC8vIEYgPSBFXjJcbiAgICB2YXIgZiA9IGUucmVkU3FyKCk7XG5cbiAgICAvLyA4ICogQ1xuICAgIHZhciBjOCA9IGMucmVkSUFkZChjKTtcbiAgICBjOCA9IGM4LnJlZElBZGQoYzgpO1xuICAgIGM4ID0gYzgucmVkSUFkZChjOCk7XG5cbiAgICAvLyBYMyA9IEYgLSAyICogRFxuICAgIG54ID0gZi5yZWRJU3ViKGQpLnJlZElTdWIoZCk7XG4gICAgLy8gWTMgPSBFICogKEQgLSBYMykgLSA4ICogQ1xuICAgIG55ID0gZS5yZWRNdWwoZC5yZWRJU3ViKG54KSkucmVkSVN1YihjOCk7XG4gICAgLy8gWjMgPSAyICogWTEgKiBaMVxuICAgIG56ID0gdGhpcy55LnJlZE11bCh0aGlzLnopO1xuICAgIG56ID0gbnoucmVkSUFkZChueik7XG4gIH1cblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLl90aHJlZURibCA9IGZ1bmN0aW9uIF90aHJlZURibCgpIHtcbiAgdmFyIG54O1xuICB2YXIgbnk7XG4gIHZhciBuejtcbiAgLy8gWiA9IDFcbiAgaWYgKHRoaXMuek9uZSkge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMy5odG1sXG4gICAgLy8gICAgICNkb3VibGluZy1tZGJsLTIwMDctYmxcbiAgICAvLyAxTSArIDVTICsgMTVBXG5cbiAgICAvLyBYWCA9IFgxXjJcbiAgICB2YXIgeHggPSB0aGlzLngucmVkU3FyKCk7XG4gICAgLy8gWVkgPSBZMV4yXG4gICAgdmFyIHl5ID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIFlZWVkgPSBZWV4yXG4gICAgdmFyIHl5eXkgPSB5eS5yZWRTcXIoKTtcbiAgICAvLyBTID0gMiAqICgoWDEgKyBZWSleMiAtIFhYIC0gWVlZWSlcbiAgICB2YXIgcyA9IHRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7XG4gICAgcyA9IHMucmVkSUFkZChzKTtcbiAgICAvLyBNID0gMyAqIFhYICsgYVxuICAgIHZhciBtID0geHgucmVkQWRkKHh4KS5yZWRJQWRkKHh4KS5yZWRJQWRkKHRoaXMuY3VydmUuYSk7XG4gICAgLy8gVCA9IE1eMiAtIDIgKiBTXG4gICAgdmFyIHQgPSBtLnJlZFNxcigpLnJlZElTdWIocykucmVkSVN1YihzKTtcbiAgICAvLyBYMyA9IFRcbiAgICBueCA9IHQ7XG4gICAgLy8gWTMgPSBNICogKFMgLSBUKSAtIDggKiBZWVlZXG4gICAgdmFyIHl5eXk4ID0geXl5eS5yZWRJQWRkKHl5eXkpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcbiAgICBueSA9IG0ucmVkTXVsKHMucmVkSVN1Yih0KSkucmVkSVN1Yih5eXl5OCk7XG4gICAgLy8gWjMgPSAyICogWTFcbiAgICBueiA9IHRoaXMueS5yZWRBZGQodGhpcy55KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTMuaHRtbCNkb3VibGluZy1kYmwtMjAwMS1iXG4gICAgLy8gM00gKyA1U1xuXG4gICAgLy8gZGVsdGEgPSBaMV4yXG4gICAgdmFyIGRlbHRhID0gdGhpcy56LnJlZFNxcigpO1xuICAgIC8vIGdhbW1hID0gWTFeMlxuICAgIHZhciBnYW1tYSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBiZXRhID0gWDEgKiBnYW1tYVxuICAgIHZhciBiZXRhID0gdGhpcy54LnJlZE11bChnYW1tYSk7XG4gICAgLy8gYWxwaGEgPSAzICogKFgxIC0gZGVsdGEpICogKFgxICsgZGVsdGEpXG4gICAgdmFyIGFscGhhID0gdGhpcy54LnJlZFN1YihkZWx0YSkucmVkTXVsKHRoaXMueC5yZWRBZGQoZGVsdGEpKTtcbiAgICBhbHBoYSA9IGFscGhhLnJlZEFkZChhbHBoYSkucmVkSUFkZChhbHBoYSk7XG4gICAgLy8gWDMgPSBhbHBoYV4yIC0gOCAqIGJldGFcbiAgICB2YXIgYmV0YTQgPSBiZXRhLnJlZElBZGQoYmV0YSk7XG4gICAgYmV0YTQgPSBiZXRhNC5yZWRJQWRkKGJldGE0KTtcbiAgICB2YXIgYmV0YTggPSBiZXRhNC5yZWRBZGQoYmV0YTQpO1xuICAgIG54ID0gYWxwaGEucmVkU3FyKCkucmVkSVN1YihiZXRhOCk7XG4gICAgLy8gWjMgPSAoWTEgKyBaMSleMiAtIGdhbW1hIC0gZGVsdGFcbiAgICBueiA9IHRoaXMueS5yZWRBZGQodGhpcy56KS5yZWRTcXIoKS5yZWRJU3ViKGdhbW1hKS5yZWRJU3ViKGRlbHRhKTtcbiAgICAvLyBZMyA9IGFscGhhICogKDQgKiBiZXRhIC0gWDMpIC0gOCAqIGdhbW1hXjJcbiAgICB2YXIgZ2dhbW1hOCA9IGdhbW1hLnJlZFNxcigpO1xuICAgIGdnYW1tYTggPSBnZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7XG4gICAgZ2dhbW1hOCA9IGdnYW1tYTgucmVkSUFkZChnZ2FtbWE4KTtcbiAgICBnZ2FtbWE4ID0gZ2dhbW1hOC5yZWRJQWRkKGdnYW1tYTgpO1xuICAgIG55ID0gYWxwaGEucmVkTXVsKGJldGE0LnJlZElTdWIobngpKS5yZWRJU3ViKGdnYW1tYTgpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5fZGJsID0gZnVuY3Rpb24gX2RibCgpIHtcbiAgdmFyIGEgPSB0aGlzLmN1cnZlLmE7XG5cbiAgLy8gNE0gKyA2UyArIDEwQVxuICB2YXIganggPSB0aGlzLng7XG4gIHZhciBqeSA9IHRoaXMueTtcbiAgdmFyIGp6ID0gdGhpcy56O1xuICB2YXIgano0ID0ganoucmVkU3FyKCkucmVkU3FyKCk7XG5cbiAgdmFyIGp4MiA9IGp4LnJlZFNxcigpO1xuICB2YXIgankyID0gankucmVkU3FyKCk7XG5cbiAgdmFyIGMgPSBqeDIucmVkQWRkKGp4MikucmVkSUFkZChqeDIpLnJlZElBZGQoYS5yZWRNdWwoano0KSk7XG5cbiAgdmFyIGp4ZDQgPSBqeC5yZWRBZGQoangpO1xuICBqeGQ0ID0ganhkNC5yZWRJQWRkKGp4ZDQpO1xuICB2YXIgdDEgPSBqeGQ0LnJlZE11bChqeTIpO1xuICB2YXIgbnggPSBjLnJlZFNxcigpLnJlZElTdWIodDEucmVkQWRkKHQxKSk7XG4gIHZhciB0MiA9IHQxLnJlZElTdWIobngpO1xuXG4gIHZhciBqeWQ4ID0gankyLnJlZFNxcigpO1xuICBqeWQ4ID0ganlkOC5yZWRJQWRkKGp5ZDgpO1xuICBqeWQ4ID0ganlkOC5yZWRJQWRkKGp5ZDgpO1xuICBqeWQ4ID0ganlkOC5yZWRJQWRkKGp5ZDgpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0MikucmVkSVN1YihqeWQ4KTtcbiAgdmFyIG56ID0gankucmVkQWRkKGp5KS5yZWRNdWwoanopO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUudHJwbCA9IGZ1bmN0aW9uIHRycGwoKSB7XG4gIGlmICghdGhpcy5jdXJ2ZS56ZXJvQSlcbiAgICByZXR1cm4gdGhpcy5kYmwoKS5hZGQodGhpcyk7XG5cbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0wLmh0bWwjdHJpcGxpbmctdHBsLTIwMDctYmxcbiAgLy8gNU0gKyAxMFMgKyAuLi5cblxuICAvLyBYWCA9IFgxXjJcbiAgdmFyIHh4ID0gdGhpcy54LnJlZFNxcigpO1xuICAvLyBZWSA9IFkxXjJcbiAgdmFyIHl5ID0gdGhpcy55LnJlZFNxcigpO1xuICAvLyBaWiA9IFoxXjJcbiAgdmFyIHp6ID0gdGhpcy56LnJlZFNxcigpO1xuICAvLyBZWVlZID0gWVleMlxuICB2YXIgeXl5eSA9IHl5LnJlZFNxcigpO1xuICAvLyBNID0gMyAqIFhYICsgYSAqIFpaMjsgYSA9IDBcbiAgdmFyIG0gPSB4eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpO1xuICAvLyBNTSA9IE1eMlxuICB2YXIgbW0gPSBtLnJlZFNxcigpO1xuICAvLyBFID0gNiAqICgoWDEgKyBZWSleMiAtIFhYIC0gWVlZWSkgLSBNTVxuICB2YXIgZSA9IHRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7XG4gIGUgPSBlLnJlZElBZGQoZSk7XG4gIGUgPSBlLnJlZEFkZChlKS5yZWRJQWRkKGUpO1xuICBlID0gZS5yZWRJU3ViKG1tKTtcbiAgLy8gRUUgPSBFXjJcbiAgdmFyIGVlID0gZS5yZWRTcXIoKTtcbiAgLy8gVCA9IDE2KllZWVlcbiAgdmFyIHQgPSB5eXl5LnJlZElBZGQoeXl5eSk7XG4gIHQgPSB0LnJlZElBZGQodCk7XG4gIHQgPSB0LnJlZElBZGQodCk7XG4gIHQgPSB0LnJlZElBZGQodCk7XG4gIC8vIFUgPSAoTSArIEUpXjIgLSBNTSAtIEVFIC0gVFxuICB2YXIgdSA9IG0ucmVkSUFkZChlKS5yZWRTcXIoKS5yZWRJU3ViKG1tKS5yZWRJU3ViKGVlKS5yZWRJU3ViKHQpO1xuICAvLyBYMyA9IDQgKiAoWDEgKiBFRSAtIDQgKiBZWSAqIFUpXG4gIHZhciB5eXU0ID0geXkucmVkTXVsKHUpO1xuICB5eXU0ID0geXl1NC5yZWRJQWRkKHl5dTQpO1xuICB5eXU0ID0geXl1NC5yZWRJQWRkKHl5dTQpO1xuICB2YXIgbnggPSB0aGlzLngucmVkTXVsKGVlKS5yZWRJU3ViKHl5dTQpO1xuICBueCA9IG54LnJlZElBZGQobngpO1xuICBueCA9IG54LnJlZElBZGQobngpO1xuICAvLyBZMyA9IDggKiBZMSAqIChVICogKFQgLSBVKSAtIEUgKiBFRSlcbiAgdmFyIG55ID0gdGhpcy55LnJlZE11bCh1LnJlZE11bCh0LnJlZElTdWIodSkpLnJlZElTdWIoZS5yZWRNdWwoZWUpKSk7XG4gIG55ID0gbnkucmVkSUFkZChueSk7XG4gIG55ID0gbnkucmVkSUFkZChueSk7XG4gIG55ID0gbnkucmVkSUFkZChueSk7XG4gIC8vIFozID0gKFoxICsgRSleMiAtIFpaIC0gRUVcbiAgdmFyIG56ID0gdGhpcy56LnJlZEFkZChlKS5yZWRTcXIoKS5yZWRJU3ViKHp6KS5yZWRJU3ViKGVlKTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrLCBrYmFzZSkge1xuICBrID0gbmV3IEJOKGssIGtiYXNlKTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLCBrKTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcShwKSB7XG4gIGlmIChwLnR5cGUgPT09ICdhZmZpbmUnKVxuICAgIHJldHVybiB0aGlzLmVxKHAudG9KKCkpO1xuXG4gIGlmICh0aGlzID09PSBwKVxuICAgIHJldHVybiB0cnVlO1xuXG4gIC8vIHgxICogejJeMiA9PSB4MiAqIHoxXjJcbiAgdmFyIHoyID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgcHoyID0gcC56LnJlZFNxcigpO1xuICBpZiAodGhpcy54LnJlZE11bChwejIpLnJlZElTdWIocC54LnJlZE11bCh6MikpLmNtcG4oMCkgIT09IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIHkxICogejJeMyA9PSB5MiAqIHoxXjNcbiAgdmFyIHozID0gejIucmVkTXVsKHRoaXMueik7XG4gIHZhciBwejMgPSBwejIucmVkTXVsKHAueik7XG4gIHJldHVybiB0aGlzLnkucmVkTXVsKHB6MykucmVkSVN1YihwLnkucmVkTXVsKHozKSkuY21wbigwKSA9PT0gMDtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZXFYVG9QID0gZnVuY3Rpb24gZXFYVG9QKHgpIHtcbiAgdmFyIHpzID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgcnggPSB4LnRvUmVkKHRoaXMuY3VydmUucmVkKS5yZWRNdWwoenMpO1xuICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgdmFyIHhjID0geC5jbG9uZSgpO1xuICB2YXIgdCA9IHRoaXMuY3VydmUucmVkTi5yZWRNdWwoenMpO1xuICBmb3IgKDs7KSB7XG4gICAgeGMuaWFkZCh0aGlzLmN1cnZlLm4pO1xuICAgIGlmICh4Yy5jbXAodGhpcy5jdXJ2ZS5wKSA+PSAwKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgcngucmVkSUFkZCh0KTtcbiAgICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuSlBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIEpQb2ludCBJbmZpbml0eT4nO1xuICByZXR1cm4gJzxFQyBKUG9pbnQgeDogJyArIHRoaXMueC50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB5OiAnICsgdGhpcy55LnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHo6ICcgKyB0aGlzLnoudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgLy8gWFhYIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgemVybyBpcyBhbHdheXMgemVybyBpbiByZWRcbiAgcmV0dXJuIHRoaXMuei5jbXBuKDApID09PSAwO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlcyA9IGV4cG9ydHM7XG5cbnZhciBoYXNoID0gcmVxdWlyZSgnaGFzaC5qcycpO1xudmFyIGN1cnZlID0gcmVxdWlyZSgnLi9jdXJ2ZScpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBQcmVzZXRDdXJ2ZShvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLnR5cGUgPT09ICdzaG9ydCcpXG4gICAgdGhpcy5jdXJ2ZSA9IG5ldyBjdXJ2ZS5zaG9ydChvcHRpb25zKTtcbiAgZWxzZSBpZiAob3B0aW9ucy50eXBlID09PSAnZWR3YXJkcycpXG4gICAgdGhpcy5jdXJ2ZSA9IG5ldyBjdXJ2ZS5lZHdhcmRzKG9wdGlvbnMpO1xuICBlbHNlXG4gICAgdGhpcy5jdXJ2ZSA9IG5ldyBjdXJ2ZS5tb250KG9wdGlvbnMpO1xuICB0aGlzLmcgPSB0aGlzLmN1cnZlLmc7XG4gIHRoaXMubiA9IHRoaXMuY3VydmUubjtcbiAgdGhpcy5oYXNoID0gb3B0aW9ucy5oYXNoO1xuXG4gIGFzc2VydCh0aGlzLmcudmFsaWRhdGUoKSwgJ0ludmFsaWQgY3VydmUnKTtcbiAgYXNzZXJ0KHRoaXMuZy5tdWwodGhpcy5uKS5pc0luZmluaXR5KCksICdJbnZhbGlkIGN1cnZlLCBHKk4gIT0gTycpO1xufVxuY3VydmVzLlByZXNldEN1cnZlID0gUHJlc2V0Q3VydmU7XG5cbmZ1bmN0aW9uIGRlZmluZUN1cnZlKG5hbWUsIG9wdGlvbnMpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN1cnZlcywgbmFtZSwge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY3VydmUgPSBuZXcgUHJlc2V0Q3VydmUob3B0aW9ucyk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3VydmVzLCBuYW1lLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGN1cnZlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY3VydmU7XG4gICAgfSxcbiAgfSk7XG59XG5cbmRlZmluZUN1cnZlKCdwMTkyJywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogJ3AxOTInLFxuICBwOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmMnLFxuICBiOiAnNjQyMTA1MTkgZTU5YzgwZTcgMGZhN2U5YWIgNzIyNDMwNDkgZmViOGRlZWMgYzE0NmI5YjEnLFxuICBuOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgOTlkZWY4MzYgMTQ2YmM5YjEgYjRkMjI4MzEnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnMTg4ZGE4MGUgYjAzMDkwZjYgN2NiZjIwZWIgNDNhMTg4MDAgZjRmZjBhZmQgODJmZjEwMTInLFxuICAgICcwNzE5MmI5NSBmZmM4ZGE3OCA2MzEwMTFlZCA2YjI0Y2RkNSA3M2Y5NzdhMSAxZTc5NDgxMScsXG4gIF0sXG59KTtcblxuZGVmaW5lQ3VydmUoJ3AyMjQnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAncDIyNCcsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScsXG4gIGE6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZScsXG4gIGI6ICdiNDA1MGE4NSAwYzA0YjNhYiBmNTQxMzI1NiA1MDQ0YjBiNyBkN2JmZDhiYSAyNzBiMzk0MyAyMzU1ZmZiNCcsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmMTZhMiBlMGI4ZjAzZSAxM2RkMjk0NSA1YzVjMmEzZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICdiNzBlMGNiZCA2YmI0YmY3ZiAzMjEzOTBiOSA0YTAzYzFkMyA1NmMyMTEyMiAzNDMyODBkNiAxMTVjMWQyMScsXG4gICAgJ2JkMzc2Mzg4IGI1ZjcyM2ZiIDRjMjJkZmU2IGNkNDM3NWEwIDVhMDc0NzY0IDQ0ZDU4MTk5IDg1MDA3ZTM0JyxcbiAgXSxcbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDI1NicsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6IG51bGwsXG4gIHA6ICdmZmZmZmZmZiAwMDAwMDAwMSAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZicsXG4gIGE6ICdmZmZmZmZmZiAwMDAwMDAwMSAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICc1YWM2MzVkOCBhYTNhOTNlNyBiM2ViYmQ1NSA3Njk4ODZiYyA2NTFkMDZiMCBjYzUzYjBmNiAzYmNlM2MzZSAyN2QyNjA0YicsXG4gIG46ICdmZmZmZmZmZiAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBiY2U2ZmFhZCBhNzE3OWU4NCBmM2I5Y2FjMiBmYzYzMjU1MScsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICc2YjE3ZDFmMiBlMTJjNDI0NyBmOGJjZTZlNSA2M2E0NDBmMiA3NzAzN2Q4MSAyZGViMzNhMCBmNGExMzk0NSBkODk4YzI5NicsXG4gICAgJzRmZTM0MmUyIGZlMWE3ZjliIDhlZTdlYjRhIDdjMGY5ZTE2IDJiY2UzMzU3IDZiMzE1ZWNlIGNiYjY0MDY4IDM3YmY1MWY1JyxcbiAgXSxcbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDM4NCcsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6IG51bGwsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmJyxcbiAgYTogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmMnLFxuICBiOiAnYjMzMTJmYTcgZTIzZWU3ZTQgOTg4ZTA1NmIgZTNmODJkMTkgMTgxZDljNmUgZmU4MTQxMTIgMDMxNDA4OGYgJyArXG4gICAgICc1MDEzODc1YSBjNjU2Mzk4ZCA4YTJlZDE5ZCAyYTg1YzhlZCBkM2VjMmFlZicsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBjNzYzNGQ4MSAnICtcbiAgICAgJ2Y0MzcyZGRmIDU4MWEwZGIyIDQ4YjBhNzdhIGVjZWMxOTZhIGNjYzUyOTczJyxcbiAgaGFzaDogaGFzaC5zaGEzODQsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJ2FhODdjYTIyIGJlOGIwNTM3IDhlYjFjNzFlIGYzMjBhZDc0IDZlMWQzYjYyIDhiYTc5Yjk4IDU5Zjc0MWUwIDgyNTQyYTM4ICcgK1xuICAgICc1NTAyZjI1ZCBiZjU1Mjk2YyAzYTU0NWUzOCA3Mjc2MGFiNycsXG4gICAgJzM2MTdkZTRhIDk2MjYyYzZmIDVkOWU5OGJmIDkyOTJkYzI5IGY4ZjQxZGJkIDI4OWExNDdjIGU5ZGEzMTEzIGI1ZjBiOGMwICcgK1xuICAgICcwYTYwYjFjZSAxZDdlODE5ZCA3YTQzMWQ3YyA5MGVhMGU1ZicsXG4gIF0sXG59KTtcblxuZGVmaW5lQ3VydmUoJ3A1MjEnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiBudWxsLFxuICBwOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmJyxcbiAgYTogJzAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICcwMDAwMDA1MSA5NTNlYjk2MSA4ZTFjOWExZiA5MjlhMjFhMCBiNjg1NDBlZSBhMmRhNzI1YiAnICtcbiAgICAgJzk5YjMxNWYzIGI4YjQ4OTkxIDhlZjEwOWUxIDU2MTkzOTUxIGVjN2U5MzdiIDE2NTJjMGJkICcgK1xuICAgICAnM2JiMWJmMDcgMzU3M2RmODggM2QyYzM0ZjEgZWY0NTFmZDQgNmI1MDNmMDAnLFxuICBuOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYSA1MTg2ODc4MyBiZjJmOTY2YiA3ZmNjMDE0OCAnICtcbiAgICAgJ2Y3MDlhNWQwIDNiYjVjOWI4IDg5OWM0N2FlIGJiNmZiNzFlIDkxMzg2NDA5JyxcbiAgaGFzaDogaGFzaC5zaGE1MTIsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzAwMDAwMGM2IDg1OGUwNmI3IDA0MDRlOWNkIDllM2VjYjY2IDIzOTViNDQyIDljNjQ4MTM5ICcgK1xuICAgICcwNTNmYjUyMSBmODI4YWY2MCA2YjRkM2RiYSBhMTRiNWU3NyBlZmU3NTkyOCBmZTFkYzEyNyAnICtcbiAgICAnYTJmZmE4ZGUgMzM0OGIzYzEgODU2YTQyOWIgZjk3ZTdlMzEgYzJlNWJkNjYnLFxuICAgICcwMDAwMDExOCAzOTI5NmE3OCA5YTNiYzAwNCA1YzhhNWZiNCAyYzdkMWJkOSA5OGY1NDQ0OSAnICtcbiAgICAnNTc5YjQ0NjggMTdhZmJkMTcgMjczZTY2MmMgOTdlZTcyOTkgNWVmNDI2NDAgYzU1MGI5MDEgJyArXG4gICAgJzNmYWQwNzYxIDM1M2M3MDg2IGEyNzJjMjQwIDg4YmU5NDc2IDlmZDE2NjUwJyxcbiAgXSxcbn0pO1xuXG5kZWZpbmVDdXJ2ZSgnY3VydmUyNTUxOScsIHtcbiAgdHlwZTogJ21vbnQnLFxuICBwcmltZTogJ3AyNTUxOScsXG4gIHA6ICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyxcbiAgYTogJzc2ZDA2JyxcbiAgYjogJzEnLFxuICBuOiAnMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICc5JyxcbiAgXSxcbn0pO1xuXG5kZWZpbmVDdXJ2ZSgnZWQyNTUxOScsIHtcbiAgdHlwZTogJ2Vkd2FyZHMnLFxuICBwcmltZTogJ3AyNTUxOScsXG4gIHA6ICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyxcbiAgYTogJy0xJyxcbiAgYzogJzEnLFxuICAvLyAtMTIxNjY1ICogKDEyMTY2Nl4oLTEpKSAobW9kIFApXG4gIGQ6ICc1MjAzNmNlZTJiNmZmZTczIDhjYzc0MDc5Nzc3OWU4OTggMDA3MDBhNGQ0MTQxZDhhYiA3NWViNGRjYTEzNTk3OGEzJyxcbiAgbjogJzEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnMjE2OTM2ZDNjZDZlNTNmZWMwYTRlMjMxZmRkNmRjNWM2OTJjYzc2MDk1MjVhN2IyYzk1NjJkNjA4ZjI1ZDUxYScsXG5cbiAgICAvLyA0LzVcbiAgICAnNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY1OCcsXG4gIF0sXG59KTtcblxudmFyIHByZTtcbnRyeSB7XG4gIHByZSA9IHJlcXVpcmUoJy4vcHJlY29tcHV0ZWQvc2VjcDI1NmsxJyk7XG59IGNhdGNoIChlKSB7XG4gIHByZSA9IHVuZGVmaW5lZDtcbn1cblxuZGVmaW5lQ3VydmUoJ3NlY3AyNTZrMScsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6ICdrMjU2JyxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyxcbiAgYTogJzAnLFxuICBiOiAnNycsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBiYWFlZGNlNiBhZjQ4YTAzYiBiZmQyNWU4YyBkMDM2NDE0MScsXG4gIGg6ICcxJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG5cbiAgLy8gUHJlY29tcHV0ZWQgZW5kb21vcnBoaXNtXG4gIGJldGE6ICc3YWU5NmEyYjY1N2MwNzEwNmU2NDQ3OWVhYzM0MzRlOTljZjA0OTc1MTJmNTg5OTVjMTM5NmMyODcxOTUwMWVlJyxcbiAgbGFtYmRhOiAnNTM2M2FkNGNjMDVjMzBlMGE1MjYxYzAyODgxMjY0NWExMjJlMjJlYTIwODE2Njc4ZGYwMjk2N2MxYjIzYmQ3MicsXG4gIGJhc2lzOiBbXG4gICAge1xuICAgICAgYTogJzMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1JyxcbiAgICAgIGI6ICctZTQ0MzdlZDYwMTBlODgyODZmNTQ3ZmE5MGFiZmU0YzMnLFxuICAgIH0sXG4gICAge1xuICAgICAgYTogJzExNGNhNTBmN2E4ZTJmM2Y2NTdjMTEwOGQ5ZDQ0Y2ZkOCcsXG4gICAgICBiOiAnMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUnLFxuICAgIH0sXG4gIF0sXG5cbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCcsXG4gICAgJzQ4M2FkYTc3MjZhM2M0NjU1ZGE0ZmJmYzBlMTEwOGE4ZmQxN2I0NDhhNjg1NTQxOTljNDdkMDhmZmIxMGQ0YjgnLFxuICAgIHByZSxcbiAgXSxcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIEhtYWNEUkJHID0gcmVxdWlyZSgnaG1hYy1kcmJnJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGN1cnZlcyA9IHJlcXVpcmUoJy4uL2N1cnZlcycpO1xudmFyIHJhbmQgPSByZXF1aXJlKCdicm9yYW5kJyk7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG52YXIgS2V5UGFpciA9IHJlcXVpcmUoJy4va2V5Jyk7XG52YXIgU2lnbmF0dXJlID0gcmVxdWlyZSgnLi9zaWduYXR1cmUnKTtcblxuZnVuY3Rpb24gRUMob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRUMpKVxuICAgIHJldHVybiBuZXcgRUMob3B0aW9ucyk7XG5cbiAgLy8gU2hvcnRjdXQgYGVsbGlwdGljLmVjKGN1cnZlLW5hbWUpYFxuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgYXNzZXJ0KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjdXJ2ZXMsIG9wdGlvbnMpLFxuICAgICAgJ1Vua25vd24gY3VydmUgJyArIG9wdGlvbnMpO1xuXG4gICAgb3B0aW9ucyA9IGN1cnZlc1tvcHRpb25zXTtcbiAgfVxuXG4gIC8vIFNob3J0Y3V0IGZvciBgZWxsaXB0aWMuZWMoZWxsaXB0aWMuY3VydmVzLmN1cnZlTmFtZSlgXG4gIGlmIChvcHRpb25zIGluc3RhbmNlb2YgY3VydmVzLlByZXNldEN1cnZlKVxuICAgIG9wdGlvbnMgPSB7IGN1cnZlOiBvcHRpb25zIH07XG5cbiAgdGhpcy5jdXJ2ZSA9IG9wdGlvbnMuY3VydmUuY3VydmU7XG4gIHRoaXMubiA9IHRoaXMuY3VydmUubjtcbiAgdGhpcy5uaCA9IHRoaXMubi51c2hybigxKTtcbiAgdGhpcy5nID0gdGhpcy5jdXJ2ZS5nO1xuXG4gIC8vIFBvaW50IG9uIGN1cnZlXG4gIHRoaXMuZyA9IG9wdGlvbnMuY3VydmUuZztcbiAgdGhpcy5nLnByZWNvbXB1dGUob3B0aW9ucy5jdXJ2ZS5uLmJpdExlbmd0aCgpICsgMSk7XG5cbiAgLy8gSGFzaCBmb3IgZnVuY3Rpb24gZm9yIERSQkdcbiAgdGhpcy5oYXNoID0gb3B0aW9ucy5oYXNoIHx8IG9wdGlvbnMuY3VydmUuaGFzaDtcbn1cbm1vZHVsZS5leHBvcnRzID0gRUM7XG5cbkVDLnByb3RvdHlwZS5rZXlQYWlyID0gZnVuY3Rpb24ga2V5UGFpcihvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgS2V5UGFpcih0aGlzLCBvcHRpb25zKTtcbn07XG5cbkVDLnByb3RvdHlwZS5rZXlGcm9tUHJpdmF0ZSA9IGZ1bmN0aW9uIGtleUZyb21Qcml2YXRlKHByaXYsIGVuYykge1xuICByZXR1cm4gS2V5UGFpci5mcm9tUHJpdmF0ZSh0aGlzLCBwcml2LCBlbmMpO1xufTtcblxuRUMucHJvdG90eXBlLmtleUZyb21QdWJsaWMgPSBmdW5jdGlvbiBrZXlGcm9tUHVibGljKHB1YiwgZW5jKSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21QdWJsaWModGhpcywgcHViLCBlbmMpO1xufTtcblxuRUMucHJvdG90eXBlLmdlbktleVBhaXIgPSBmdW5jdGlvbiBnZW5LZXlQYWlyKG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKVxuICAgIG9wdGlvbnMgPSB7fTtcblxuICAvLyBJbnN0YW50aWF0ZSBIbWFjX0RSQkdcbiAgdmFyIGRyYmcgPSBuZXcgSG1hY0RSQkcoe1xuICAgIGhhc2g6IHRoaXMuaGFzaCxcbiAgICBwZXJzOiBvcHRpb25zLnBlcnMsXG4gICAgcGVyc0VuYzogb3B0aW9ucy5wZXJzRW5jIHx8ICd1dGY4JyxcbiAgICBlbnRyb3B5OiBvcHRpb25zLmVudHJvcHkgfHwgcmFuZCh0aGlzLmhhc2guaG1hY1N0cmVuZ3RoKSxcbiAgICBlbnRyb3B5RW5jOiBvcHRpb25zLmVudHJvcHkgJiYgb3B0aW9ucy5lbnRyb3B5RW5jIHx8ICd1dGY4JyxcbiAgICBub25jZTogdGhpcy5uLnRvQXJyYXkoKSxcbiAgfSk7XG5cbiAgdmFyIGJ5dGVzID0gdGhpcy5uLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG5zMiA9IHRoaXMubi5zdWIobmV3IEJOKDIpKTtcbiAgZm9yICg7Oykge1xuICAgIHZhciBwcml2ID0gbmV3IEJOKGRyYmcuZ2VuZXJhdGUoYnl0ZXMpKTtcbiAgICBpZiAocHJpdi5jbXAobnMyKSA+IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHByaXYuaWFkZG4oMSk7XG4gICAgcmV0dXJuIHRoaXMua2V5RnJvbVByaXZhdGUocHJpdik7XG4gIH1cbn07XG5cbkVDLnByb3RvdHlwZS5fdHJ1bmNhdGVUb04gPSBmdW5jdGlvbiBfdHJ1bmNhdGVUb04obXNnLCB0cnVuY09ubHkpIHtcbiAgdmFyIGRlbHRhID0gbXNnLmJ5dGVMZW5ndGgoKSAqIDggLSB0aGlzLm4uYml0TGVuZ3RoKCk7XG4gIGlmIChkZWx0YSA+IDApXG4gICAgbXNnID0gbXNnLnVzaHJuKGRlbHRhKTtcbiAgaWYgKCF0cnVuY09ubHkgJiYgbXNnLmNtcCh0aGlzLm4pID49IDApXG4gICAgcmV0dXJuIG1zZy5zdWIodGhpcy5uKTtcbiAgZWxzZVxuICAgIHJldHVybiBtc2c7XG59O1xuXG5FQy5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obXNnLCBrZXksIGVuYywgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIGVuYyA9PT0gJ29iamVjdCcpIHtcbiAgICBvcHRpb25zID0gZW5jO1xuICAgIGVuYyA9IG51bGw7XG4gIH1cbiAgaWYgKCFvcHRpb25zKVxuICAgIG9wdGlvbnMgPSB7fTtcblxuICBrZXkgPSB0aGlzLmtleUZyb21Qcml2YXRlKGtleSwgZW5jKTtcbiAgbXNnID0gdGhpcy5fdHJ1bmNhdGVUb04obmV3IEJOKG1zZywgMTYpKTtcblxuICAvLyBaZXJvLWV4dGVuZCBrZXkgdG8gcHJvdmlkZSBlbm91Z2ggZW50cm9weVxuICB2YXIgYnl0ZXMgPSB0aGlzLm4uYnl0ZUxlbmd0aCgpO1xuICB2YXIgYmtleSA9IGtleS5nZXRQcml2YXRlKCkudG9BcnJheSgnYmUnLCBieXRlcyk7XG5cbiAgLy8gWmVyby1leHRlbmQgbm9uY2UgdG8gaGF2ZSB0aGUgc2FtZSBieXRlIHNpemUgYXMgTlxuICB2YXIgbm9uY2UgPSBtc2cudG9BcnJheSgnYmUnLCBieXRlcyk7XG5cbiAgLy8gSW5zdGFudGlhdGUgSG1hY19EUkJHXG4gIHZhciBkcmJnID0gbmV3IEhtYWNEUkJHKHtcbiAgICBoYXNoOiB0aGlzLmhhc2gsXG4gICAgZW50cm9weTogYmtleSxcbiAgICBub25jZTogbm9uY2UsXG4gICAgcGVyczogb3B0aW9ucy5wZXJzLFxuICAgIHBlcnNFbmM6IG9wdGlvbnMucGVyc0VuYyB8fCAndXRmOCcsXG4gIH0pO1xuXG4gIC8vIE51bWJlciBvZiBieXRlcyB0byBnZW5lcmF0ZVxuICB2YXIgbnMxID0gdGhpcy5uLnN1YihuZXcgQk4oMSkpO1xuXG4gIGZvciAodmFyIGl0ZXIgPSAwOyA7IGl0ZXIrKykge1xuICAgIHZhciBrID0gb3B0aW9ucy5rID9cbiAgICAgIG9wdGlvbnMuayhpdGVyKSA6XG4gICAgICBuZXcgQk4oZHJiZy5nZW5lcmF0ZSh0aGlzLm4uYnl0ZUxlbmd0aCgpKSk7XG4gICAgayA9IHRoaXMuX3RydW5jYXRlVG9OKGssIHRydWUpO1xuICAgIGlmIChrLmNtcG4oMSkgPD0gMCB8fCBrLmNtcChuczEpID49IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHZhciBrcCA9IHRoaXMuZy5tdWwoayk7XG4gICAgaWYgKGtwLmlzSW5maW5pdHkoKSlcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIGtwWCA9IGtwLmdldFgoKTtcbiAgICB2YXIgciA9IGtwWC51bW9kKHRoaXMubik7XG4gICAgaWYgKHIuY21wbigwKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIHMgPSBrLmludm0odGhpcy5uKS5tdWwoci5tdWwoa2V5LmdldFByaXZhdGUoKSkuaWFkZChtc2cpKTtcbiAgICBzID0gcy51bW9kKHRoaXMubik7XG4gICAgaWYgKHMuY21wbigwKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIHJlY292ZXJ5UGFyYW0gPSAoa3AuZ2V0WSgpLmlzT2RkKCkgPyAxIDogMCkgfFxuICAgICAgICAgICAgICAgICAgICAgICAgKGtwWC5jbXAocikgIT09IDAgPyAyIDogMCk7XG5cbiAgICAvLyBVc2UgY29tcGxlbWVudCBvZiBgc2AsIGlmIGl0IGlzID4gYG4gLyAyYFxuICAgIGlmIChvcHRpb25zLmNhbm9uaWNhbCAmJiBzLmNtcCh0aGlzLm5oKSA+IDApIHtcbiAgICAgIHMgPSB0aGlzLm4uc3ViKHMpO1xuICAgICAgcmVjb3ZlcnlQYXJhbSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgU2lnbmF0dXJlKHsgcjogciwgczogcywgcmVjb3ZlcnlQYXJhbTogcmVjb3ZlcnlQYXJhbSB9KTtcbiAgfVxufTtcblxuRUMucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeShtc2csIHNpZ25hdHVyZSwga2V5LCBlbmMpIHtcbiAgbXNnID0gdGhpcy5fdHJ1bmNhdGVUb04obmV3IEJOKG1zZywgMTYpKTtcbiAga2V5ID0gdGhpcy5rZXlGcm9tUHVibGljKGtleSwgZW5jKTtcbiAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShzaWduYXR1cmUsICdoZXgnKTtcblxuICAvLyBQZXJmb3JtIHByaW1pdGl2ZSB2YWx1ZXMgdmFsaWRhdGlvblxuICB2YXIgciA9IHNpZ25hdHVyZS5yO1xuICB2YXIgcyA9IHNpZ25hdHVyZS5zO1xuICBpZiAoci5jbXBuKDEpIDwgMCB8fCByLmNtcCh0aGlzLm4pID49IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAocy5jbXBuKDEpIDwgMCB8fCBzLmNtcCh0aGlzLm4pID49IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIFZhbGlkYXRlIHNpZ25hdHVyZVxuICB2YXIgc2ludiA9IHMuaW52bSh0aGlzLm4pO1xuICB2YXIgdTEgPSBzaW52Lm11bChtc2cpLnVtb2QodGhpcy5uKTtcbiAgdmFyIHUyID0gc2ludi5tdWwocikudW1vZCh0aGlzLm4pO1xuICB2YXIgcDtcblxuICBpZiAoIXRoaXMuY3VydmUuX21heHdlbGxUcmljaykge1xuICAgIHAgPSB0aGlzLmcubXVsQWRkKHUxLCBrZXkuZ2V0UHVibGljKCksIHUyKTtcbiAgICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gcC5nZXRYKCkudW1vZCh0aGlzLm4pLmNtcChyKSA9PT0gMDtcbiAgfVxuXG4gIC8vIE5PVEU6IEdyZWcgTWF4d2VsbCdzIHRyaWNrLCBpbnNwaXJlZCBieTpcbiAgLy8gaHR0cHM6Ly9naXQuaW8vdmFkM0tcblxuICBwID0gdGhpcy5nLmptdWxBZGQodTEsIGtleS5nZXRQdWJsaWMoKSwgdTIpO1xuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIENvbXBhcmUgYHAueGAgb2YgSmFjb2JpYW4gcG9pbnQgd2l0aCBgcmAsXG4gIC8vIHRoaXMgd2lsbCBkbyBgcC54ID09IHIgKiBwLnpeMmAgaW5zdGVhZCBvZiBtdWx0aXBseWluZyBgcC54YCBieSB0aGVcbiAgLy8gaW52ZXJzZSBvZiBgcC56XjJgXG4gIHJldHVybiBwLmVxWFRvUChyKTtcbn07XG5cbkVDLnByb3RvdHlwZS5yZWNvdmVyUHViS2V5ID0gZnVuY3Rpb24obXNnLCBzaWduYXR1cmUsIGosIGVuYykge1xuICBhc3NlcnQoKDMgJiBqKSA9PT0gaiwgJ1RoZSByZWNvdmVyeSBwYXJhbSBpcyBtb3JlIHRoYW4gdHdvIGJpdHMnKTtcbiAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShzaWduYXR1cmUsIGVuYyk7XG5cbiAgdmFyIG4gPSB0aGlzLm47XG4gIHZhciBlID0gbmV3IEJOKG1zZyk7XG4gIHZhciByID0gc2lnbmF0dXJlLnI7XG4gIHZhciBzID0gc2lnbmF0dXJlLnM7XG5cbiAgLy8gQSBzZXQgTFNCIHNpZ25pZmllcyB0aGF0IHRoZSB5LWNvb3JkaW5hdGUgaXMgb2RkXG4gIHZhciBpc1lPZGQgPSBqICYgMTtcbiAgdmFyIGlzU2Vjb25kS2V5ID0gaiA+PiAxO1xuICBpZiAoci5jbXAodGhpcy5jdXJ2ZS5wLnVtb2QodGhpcy5jdXJ2ZS5uKSkgPj0gMCAmJiBpc1NlY29uZEtleSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIHNlbmNvbmQga2V5IGNhbmRpbmF0ZScpO1xuXG4gIC8vIDEuMS4gTGV0IHggPSByICsgam4uXG4gIGlmIChpc1NlY29uZEtleSlcbiAgICByID0gdGhpcy5jdXJ2ZS5wb2ludEZyb21YKHIuYWRkKHRoaXMuY3VydmUubiksIGlzWU9kZCk7XG4gIGVsc2VcbiAgICByID0gdGhpcy5jdXJ2ZS5wb2ludEZyb21YKHIsIGlzWU9kZCk7XG5cbiAgdmFyIHJJbnYgPSBzaWduYXR1cmUuci5pbnZtKG4pO1xuICB2YXIgczEgPSBuLnN1YihlKS5tdWwockludikudW1vZChuKTtcbiAgdmFyIHMyID0gcy5tdWwockludikudW1vZChuKTtcblxuICAvLyAxLjYuMSBDb21wdXRlIFEgPSByXi0xIChzUiAtICBlRylcbiAgLy8gICAgICAgICAgICAgICBRID0gcl4tMSAoc1IgKyAtZUcpXG4gIHJldHVybiB0aGlzLmcubXVsQWRkKHMxLCByLCBzMik7XG59O1xuXG5FQy5wcm90b3R5cGUuZ2V0S2V5UmVjb3ZlcnlQYXJhbSA9IGZ1bmN0aW9uKGUsIHNpZ25hdHVyZSwgUSwgZW5jKSB7XG4gIHNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoc2lnbmF0dXJlLCBlbmMpO1xuICBpZiAoc2lnbmF0dXJlLnJlY292ZXJ5UGFyYW0gIT09IG51bGwpXG4gICAgcmV0dXJuIHNpZ25hdHVyZS5yZWNvdmVyeVBhcmFtO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIFFwcmltZTtcbiAgICB0cnkge1xuICAgICAgUXByaW1lID0gdGhpcy5yZWNvdmVyUHViS2V5KGUsIHNpZ25hdHVyZSwgaSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKFFwcmltZS5lcShRKSlcbiAgICAgIHJldHVybiBpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgdmFsaWQgcmVjb3ZlcnkgZmFjdG9yJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEtleVBhaXIoZWMsIG9wdGlvbnMpIHtcbiAgdGhpcy5lYyA9IGVjO1xuICB0aGlzLnByaXYgPSBudWxsO1xuICB0aGlzLnB1YiA9IG51bGw7XG5cbiAgLy8gS2V5UGFpcihlYywgeyBwcml2OiAuLi4sIHB1YjogLi4uIH0pXG4gIGlmIChvcHRpb25zLnByaXYpXG4gICAgdGhpcy5faW1wb3J0UHJpdmF0ZShvcHRpb25zLnByaXYsIG9wdGlvbnMucHJpdkVuYyk7XG4gIGlmIChvcHRpb25zLnB1YilcbiAgICB0aGlzLl9pbXBvcnRQdWJsaWMob3B0aW9ucy5wdWIsIG9wdGlvbnMucHViRW5jKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gS2V5UGFpcjtcblxuS2V5UGFpci5mcm9tUHVibGljID0gZnVuY3Rpb24gZnJvbVB1YmxpYyhlYywgcHViLCBlbmMpIHtcbiAgaWYgKHB1YiBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHB1YjtcblxuICByZXR1cm4gbmV3IEtleVBhaXIoZWMsIHtcbiAgICBwdWI6IHB1YixcbiAgICBwdWJFbmM6IGVuYyxcbiAgfSk7XG59O1xuXG5LZXlQYWlyLmZyb21Qcml2YXRlID0gZnVuY3Rpb24gZnJvbVByaXZhdGUoZWMsIHByaXYsIGVuYykge1xuICBpZiAocHJpdiBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHByaXY7XG5cbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVjLCB7XG4gICAgcHJpdjogcHJpdixcbiAgICBwcml2RW5jOiBlbmMsXG4gIH0pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcbiAgdmFyIHB1YiA9IHRoaXMuZ2V0UHVibGljKCk7XG5cbiAgaWYgKHB1Yi5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHsgcmVzdWx0OiBmYWxzZSwgcmVhc29uOiAnSW52YWxpZCBwdWJsaWMga2V5JyB9O1xuICBpZiAoIXB1Yi52YWxpZGF0ZSgpKVxuICAgIHJldHVybiB7IHJlc3VsdDogZmFsc2UsIHJlYXNvbjogJ1B1YmxpYyBrZXkgaXMgbm90IGEgcG9pbnQnIH07XG4gIGlmICghcHViLm11bCh0aGlzLmVjLmN1cnZlLm4pLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4geyByZXN1bHQ6IGZhbHNlLCByZWFzb246ICdQdWJsaWMga2V5ICogTiAhPSBPJyB9O1xuXG4gIHJldHVybiB7IHJlc3VsdDogdHJ1ZSwgcmVhc29uOiBudWxsIH07XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRQdWJsaWMgPSBmdW5jdGlvbiBnZXRQdWJsaWMoY29tcGFjdCwgZW5jKSB7XG4gIC8vIGNvbXBhY3QgaXMgb3B0aW9uYWwgYXJndW1lbnRcbiAgaWYgKHR5cGVvZiBjb21wYWN0ID09PSAnc3RyaW5nJykge1xuICAgIGVuYyA9IGNvbXBhY3Q7XG4gICAgY29tcGFjdCA9IG51bGw7XG4gIH1cblxuICBpZiAoIXRoaXMucHViKVxuICAgIHRoaXMucHViID0gdGhpcy5lYy5nLm11bCh0aGlzLnByaXYpO1xuXG4gIGlmICghZW5jKVxuICAgIHJldHVybiB0aGlzLnB1YjtcblxuICByZXR1cm4gdGhpcy5wdWIuZW5jb2RlKGVuYywgY29tcGFjdCk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRQcml2YXRlID0gZnVuY3Rpb24gZ2V0UHJpdmF0ZShlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHRoaXMucHJpdi50b1N0cmluZygxNiwgMik7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5wcml2O1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuX2ltcG9ydFByaXZhdGUgPSBmdW5jdGlvbiBfaW1wb3J0UHJpdmF0ZShrZXksIGVuYykge1xuICB0aGlzLnByaXYgPSBuZXcgQk4oa2V5LCBlbmMgfHwgMTYpO1xuXG4gIC8vIEVuc3VyZSB0aGF0IHRoZSBwcml2IHdvbid0IGJlIGJpZ2dlciB0aGFuIG4sIG90aGVyd2lzZSB3ZSBtYXkgZmFpbFxuICAvLyBpbiBmaXhlZCBtdWx0aXBsaWNhdGlvbiBtZXRob2RcbiAgdGhpcy5wcml2ID0gdGhpcy5wcml2LnVtb2QodGhpcy5lYy5jdXJ2ZS5uKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLl9pbXBvcnRQdWJsaWMgPSBmdW5jdGlvbiBfaW1wb3J0UHVibGljKGtleSwgZW5jKSB7XG4gIGlmIChrZXkueCB8fCBrZXkueSkge1xuICAgIC8vIE1vbnRnb21lcnkgcG9pbnRzIG9ubHkgaGF2ZSBhbiBgeGAgY29vcmRpbmF0ZS5cbiAgICAvLyBXZWllcnN0cmFzcy9FZHdhcmRzIHBvaW50cyBvbiB0aGUgb3RoZXIgaGFuZCBoYXZlIGJvdGggYHhgIGFuZFxuICAgIC8vIGB5YCBjb29yZGluYXRlcy5cbiAgICBpZiAodGhpcy5lYy5jdXJ2ZS50eXBlID09PSAnbW9udCcpIHtcbiAgICAgIGFzc2VydChrZXkueCwgJ05lZWQgeCBjb29yZGluYXRlJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmVjLmN1cnZlLnR5cGUgPT09ICdzaG9ydCcgfHxcbiAgICAgICAgICAgICAgIHRoaXMuZWMuY3VydmUudHlwZSA9PT0gJ2Vkd2FyZHMnKSB7XG4gICAgICBhc3NlcnQoa2V5LnggJiYga2V5LnksICdOZWVkIGJvdGggeCBhbmQgeSBjb29yZGluYXRlJyk7XG4gICAgfVxuICAgIHRoaXMucHViID0gdGhpcy5lYy5jdXJ2ZS5wb2ludChrZXkueCwga2V5LnkpO1xuICAgIHJldHVybjtcbiAgfVxuICB0aGlzLnB1YiA9IHRoaXMuZWMuY3VydmUuZGVjb2RlUG9pbnQoa2V5LCBlbmMpO1xufTtcblxuLy8gRUNESFxuS2V5UGFpci5wcm90b3R5cGUuZGVyaXZlID0gZnVuY3Rpb24gZGVyaXZlKHB1Yikge1xuICBpZighcHViLnZhbGlkYXRlKCkpIHtcbiAgICBhc3NlcnQocHViLnZhbGlkYXRlKCksICdwdWJsaWMgcG9pbnQgbm90IHZhbGlkYXRlZCcpO1xuICB9XG4gIHJldHVybiBwdWIubXVsKHRoaXMucHJpdikuZ2V0WCgpO1xufTtcblxuLy8gRUNEU0FcbktleVBhaXIucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1zZywgZW5jLCBvcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLmVjLnNpZ24obXNnLCB0aGlzLCBlbmMsIG9wdGlvbnMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1zZywgc2lnbmF0dXJlKSB7XG4gIHJldHVybiB0aGlzLmVjLnZlcmlmeShtc2csIHNpZ25hdHVyZSwgdGhpcyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgcmV0dXJuICc8S2V5IHByaXY6ICcgKyAodGhpcy5wcml2ICYmIHRoaXMucHJpdi50b1N0cmluZygxNiwgMikpICtcbiAgICAgICAgICcgcHViOiAnICsgKHRoaXMucHViICYmIHRoaXMucHViLmluc3BlY3QoKSkgKyAnID4nO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIFNpZ25hdHVyZShvcHRpb25zLCBlbmMpIHtcbiAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBTaWduYXR1cmUpXG4gICAgcmV0dXJuIG9wdGlvbnM7XG5cbiAgaWYgKHRoaXMuX2ltcG9ydERFUihvcHRpb25zLCBlbmMpKVxuICAgIHJldHVybjtcblxuICBhc3NlcnQob3B0aW9ucy5yICYmIG9wdGlvbnMucywgJ1NpZ25hdHVyZSB3aXRob3V0IHIgb3IgcycpO1xuICB0aGlzLnIgPSBuZXcgQk4ob3B0aW9ucy5yLCAxNik7XG4gIHRoaXMucyA9IG5ldyBCTihvcHRpb25zLnMsIDE2KTtcbiAgaWYgKG9wdGlvbnMucmVjb3ZlcnlQYXJhbSA9PT0gdW5kZWZpbmVkKVxuICAgIHRoaXMucmVjb3ZlcnlQYXJhbSA9IG51bGw7XG4gIGVsc2VcbiAgICB0aGlzLnJlY292ZXJ5UGFyYW0gPSBvcHRpb25zLnJlY292ZXJ5UGFyYW07XG59XG5tb2R1bGUuZXhwb3J0cyA9IFNpZ25hdHVyZTtcblxuZnVuY3Rpb24gUG9zaXRpb24oKSB7XG4gIHRoaXMucGxhY2UgPSAwO1xufVxuXG5mdW5jdGlvbiBnZXRMZW5ndGgoYnVmLCBwKSB7XG4gIHZhciBpbml0aWFsID0gYnVmW3AucGxhY2UrK107XG4gIGlmICghKGluaXRpYWwgJiAweDgwKSkge1xuICAgIHJldHVybiBpbml0aWFsO1xuICB9XG4gIHZhciBvY3RldExlbiA9IGluaXRpYWwgJiAweGY7XG5cbiAgLy8gSW5kZWZpbml0ZSBsZW5ndGggb3Igb3ZlcmZsb3dcbiAgaWYgKG9jdGV0TGVuID09PSAwIHx8IG9jdGV0TGVuID4gNCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciB2YWwgPSAwO1xuICBmb3IgKHZhciBpID0gMCwgb2ZmID0gcC5wbGFjZTsgaSA8IG9jdGV0TGVuOyBpKyssIG9mZisrKSB7XG4gICAgdmFsIDw8PSA4O1xuICAgIHZhbCB8PSBidWZbb2ZmXTtcbiAgICB2YWwgPj4+PSAwO1xuICB9XG5cbiAgLy8gTGVhZGluZyB6ZXJvZXNcbiAgaWYgKHZhbCA8PSAweDdmKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcC5wbGFjZSA9IG9mZjtcbiAgcmV0dXJuIHZhbDtcbn1cblxuZnVuY3Rpb24gcm1QYWRkaW5nKGJ1Zikge1xuICB2YXIgaSA9IDA7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoIC0gMTtcbiAgd2hpbGUgKCFidWZbaV0gJiYgIShidWZbaSArIDFdICYgMHg4MCkgJiYgaSA8IGxlbikge1xuICAgIGkrKztcbiAgfVxuICBpZiAoaSA9PT0gMCkge1xuICAgIHJldHVybiBidWY7XG4gIH1cbiAgcmV0dXJuIGJ1Zi5zbGljZShpKTtcbn1cblxuU2lnbmF0dXJlLnByb3RvdHlwZS5faW1wb3J0REVSID0gZnVuY3Rpb24gX2ltcG9ydERFUihkYXRhLCBlbmMpIHtcbiAgZGF0YSA9IHV0aWxzLnRvQXJyYXkoZGF0YSwgZW5jKTtcbiAgdmFyIHAgPSBuZXcgUG9zaXRpb24oKTtcbiAgaWYgKGRhdGFbcC5wbGFjZSsrXSAhPT0gMHgzMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGVuID0gZ2V0TGVuZ3RoKGRhdGEsIHApO1xuICBpZiAobGVuID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoKGxlbiArIHAucGxhY2UpICE9PSBkYXRhLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoZGF0YVtwLnBsYWNlKytdICE9PSAweDAyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBybGVuID0gZ2V0TGVuZ3RoKGRhdGEsIHApO1xuICBpZiAocmxlbiA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHIgPSBkYXRhLnNsaWNlKHAucGxhY2UsIHJsZW4gKyBwLnBsYWNlKTtcbiAgcC5wbGFjZSArPSBybGVuO1xuICBpZiAoZGF0YVtwLnBsYWNlKytdICE9PSAweDAyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBzbGVuID0gZ2V0TGVuZ3RoKGRhdGEsIHApO1xuICBpZiAoc2xlbiA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGRhdGEubGVuZ3RoICE9PSBzbGVuICsgcC5wbGFjZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcyA9IGRhdGEuc2xpY2UocC5wbGFjZSwgc2xlbiArIHAucGxhY2UpO1xuICBpZiAoclswXSA9PT0gMCkge1xuICAgIGlmIChyWzFdICYgMHg4MCkge1xuICAgICAgciA9IHIuc2xpY2UoMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExlYWRpbmcgemVyb2VzXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGlmIChzWzBdID09PSAwKSB7XG4gICAgaWYgKHNbMV0gJiAweDgwKSB7XG4gICAgICBzID0gcy5zbGljZSgxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGVhZGluZyB6ZXJvZXNcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB0aGlzLnIgPSBuZXcgQk4ocik7XG4gIHRoaXMucyA9IG5ldyBCTihzKTtcbiAgdGhpcy5yZWNvdmVyeVBhcmFtID0gbnVsbDtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdExlbmd0aChhcnIsIGxlbikge1xuICBpZiAobGVuIDwgMHg4MCkge1xuICAgIGFyci5wdXNoKGxlbik7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBvY3RldHMgPSAxICsgKE1hdGgubG9nKGxlbikgLyBNYXRoLkxOMiA+Pj4gMyk7XG4gIGFyci5wdXNoKG9jdGV0cyB8IDB4ODApO1xuICB3aGlsZSAoLS1vY3RldHMpIHtcbiAgICBhcnIucHVzaCgobGVuID4+PiAob2N0ZXRzIDw8IDMpKSAmIDB4ZmYpO1xuICB9XG4gIGFyci5wdXNoKGxlbik7XG59XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9ERVIgPSBmdW5jdGlvbiB0b0RFUihlbmMpIHtcbiAgdmFyIHIgPSB0aGlzLnIudG9BcnJheSgpO1xuICB2YXIgcyA9IHRoaXMucy50b0FycmF5KCk7XG5cbiAgLy8gUGFkIHZhbHVlc1xuICBpZiAoclswXSAmIDB4ODApXG4gICAgciA9IFsgMCBdLmNvbmNhdChyKTtcbiAgLy8gUGFkIHZhbHVlc1xuICBpZiAoc1swXSAmIDB4ODApXG4gICAgcyA9IFsgMCBdLmNvbmNhdChzKTtcblxuICByID0gcm1QYWRkaW5nKHIpO1xuICBzID0gcm1QYWRkaW5nKHMpO1xuXG4gIHdoaWxlICghc1swXSAmJiAhKHNbMV0gJiAweDgwKSkge1xuICAgIHMgPSBzLnNsaWNlKDEpO1xuICB9XG4gIHZhciBhcnIgPSBbIDB4MDIgXTtcbiAgY29uc3RydWN0TGVuZ3RoKGFyciwgci5sZW5ndGgpO1xuICBhcnIgPSBhcnIuY29uY2F0KHIpO1xuICBhcnIucHVzaCgweDAyKTtcbiAgY29uc3RydWN0TGVuZ3RoKGFyciwgcy5sZW5ndGgpO1xuICB2YXIgYmFja0hhbGYgPSBhcnIuY29uY2F0KHMpO1xuICB2YXIgcmVzID0gWyAweDMwIF07XG4gIGNvbnN0cnVjdExlbmd0aChyZXMsIGJhY2tIYWxmLmxlbmd0aCk7XG4gIHJlcyA9IHJlcy5jb25jYXQoYmFja0hhbGYpO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHJlcywgZW5jKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBoYXNoID0gcmVxdWlyZSgnaGFzaC5qcycpO1xudmFyIGN1cnZlcyA9IHJlcXVpcmUoJy4uL2N1cnZlcycpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG52YXIgS2V5UGFpciA9IHJlcXVpcmUoJy4va2V5Jyk7XG52YXIgU2lnbmF0dXJlID0gcmVxdWlyZSgnLi9zaWduYXR1cmUnKTtcblxuZnVuY3Rpb24gRUREU0EoY3VydmUpIHtcbiAgYXNzZXJ0KGN1cnZlID09PSAnZWQyNTUxOScsICdvbmx5IHRlc3RlZCB3aXRoIGVkMjU1MTkgc28gZmFyJyk7XG5cbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEVERFNBKSlcbiAgICByZXR1cm4gbmV3IEVERFNBKGN1cnZlKTtcblxuICBjdXJ2ZSA9IGN1cnZlc1tjdXJ2ZV0uY3VydmU7XG4gIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgdGhpcy5nID0gY3VydmUuZztcbiAgdGhpcy5nLnByZWNvbXB1dGUoY3VydmUubi5iaXRMZW5ndGgoKSArIDEpO1xuXG4gIHRoaXMucG9pbnRDbGFzcyA9IGN1cnZlLnBvaW50KCkuY29uc3RydWN0b3I7XG4gIHRoaXMuZW5jb2RpbmdMZW5ndGggPSBNYXRoLmNlaWwoY3VydmUubi5iaXRMZW5ndGgoKSAvIDgpO1xuICB0aGlzLmhhc2ggPSBoYXNoLnNoYTUxMjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBFRERTQTtcblxuLyoqXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfSBtZXNzYWdlIC0gbWVzc2FnZSBieXRlc1xuKiBAcGFyYW0ge0FycmF5fFN0cmluZ3xLZXlQYWlyfSBzZWNyZXQgLSBzZWNyZXQgYnl0ZXMgb3IgYSBrZXlwYWlyXG4qIEByZXR1cm5zIHtTaWduYXR1cmV9IC0gc2lnbmF0dXJlXG4qL1xuRUREU0EucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1lc3NhZ2UsIHNlY3JldCkge1xuICBtZXNzYWdlID0gcGFyc2VCeXRlcyhtZXNzYWdlKTtcbiAgdmFyIGtleSA9IHRoaXMua2V5RnJvbVNlY3JldChzZWNyZXQpO1xuICB2YXIgciA9IHRoaXMuaGFzaEludChrZXkubWVzc2FnZVByZWZpeCgpLCBtZXNzYWdlKTtcbiAgdmFyIFIgPSB0aGlzLmcubXVsKHIpO1xuICB2YXIgUmVuY29kZWQgPSB0aGlzLmVuY29kZVBvaW50KFIpO1xuICB2YXIgc18gPSB0aGlzLmhhc2hJbnQoUmVuY29kZWQsIGtleS5wdWJCeXRlcygpLCBtZXNzYWdlKVxuICAgIC5tdWwoa2V5LnByaXYoKSk7XG4gIHZhciBTID0gci5hZGQoc18pLnVtb2QodGhpcy5jdXJ2ZS5uKTtcbiAgcmV0dXJuIHRoaXMubWFrZVNpZ25hdHVyZSh7IFI6IFIsIFM6IFMsIFJlbmNvZGVkOiBSZW5jb2RlZCB9KTtcbn07XG5cbi8qKlxuKiBAcGFyYW0ge0FycmF5fSBtZXNzYWdlIC0gbWVzc2FnZSBieXRlc1xuKiBAcGFyYW0ge0FycmF5fFN0cmluZ3xTaWduYXR1cmV9IHNpZyAtIHNpZyBieXRlc1xuKiBAcGFyYW0ge0FycmF5fFN0cmluZ3xQb2ludHxLZXlQYWlyfSBwdWIgLSBwdWJsaWMga2V5XG4qIEByZXR1cm5zIHtCb29sZWFufSAtIHRydWUgaWYgcHVibGljIGtleSBtYXRjaGVzIHNpZyBvZiBtZXNzYWdlXG4qL1xuRUREU0EucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeShtZXNzYWdlLCBzaWcsIHB1Yikge1xuICBtZXNzYWdlID0gcGFyc2VCeXRlcyhtZXNzYWdlKTtcbiAgc2lnID0gdGhpcy5tYWtlU2lnbmF0dXJlKHNpZyk7XG4gIHZhciBrZXkgPSB0aGlzLmtleUZyb21QdWJsaWMocHViKTtcbiAgdmFyIGggPSB0aGlzLmhhc2hJbnQoc2lnLlJlbmNvZGVkKCksIGtleS5wdWJCeXRlcygpLCBtZXNzYWdlKTtcbiAgdmFyIFNHID0gdGhpcy5nLm11bChzaWcuUygpKTtcbiAgdmFyIFJwbHVzQWggPSBzaWcuUigpLmFkZChrZXkucHViKCkubXVsKGgpKTtcbiAgcmV0dXJuIFJwbHVzQWguZXEoU0cpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmhhc2hJbnQgPSBmdW5jdGlvbiBoYXNoSW50KCkge1xuICB2YXIgaGFzaCA9IHRoaXMuaGFzaCgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcbiAgICBoYXNoLnVwZGF0ZShhcmd1bWVudHNbaV0pO1xuICByZXR1cm4gdXRpbHMuaW50RnJvbUxFKGhhc2guZGlnZXN0KCkpLnVtb2QodGhpcy5jdXJ2ZS5uKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5rZXlGcm9tUHVibGljID0gZnVuY3Rpb24ga2V5RnJvbVB1YmxpYyhwdWIpIHtcbiAgcmV0dXJuIEtleVBhaXIuZnJvbVB1YmxpYyh0aGlzLCBwdWIpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmtleUZyb21TZWNyZXQgPSBmdW5jdGlvbiBrZXlGcm9tU2VjcmV0KHNlY3JldCkge1xuICByZXR1cm4gS2V5UGFpci5mcm9tU2VjcmV0KHRoaXMsIHNlY3JldCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUubWFrZVNpZ25hdHVyZSA9IGZ1bmN0aW9uIG1ha2VTaWduYXR1cmUoc2lnKSB7XG4gIGlmIChzaWcgaW5zdGFuY2VvZiBTaWduYXR1cmUpXG4gICAgcmV0dXJuIHNpZztcbiAgcmV0dXJuIG5ldyBTaWduYXR1cmUodGhpcywgc2lnKTtcbn07XG5cbi8qKlxuKiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1qb3NlZnNzb24tZWRkc2EtZWQyNTUxOS0wMyNzZWN0aW9uLTUuMlxuKlxuKiBFRERTQSBkZWZpbmVzIG1ldGhvZHMgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyBwb2ludHMgYW5kIGludGVnZXJzLiBUaGVzZSBhcmVcbiogaGVscGVyIGNvbnZlbmllbmNlIG1ldGhvZHMsIHRoYXQgcGFzcyBhbG9uZyB0byB1dGlsaXR5IGZ1bmN0aW9ucyBpbXBsaWVkXG4qIHBhcmFtZXRlcnMuXG4qXG4qL1xuRUREU0EucHJvdG90eXBlLmVuY29kZVBvaW50ID0gZnVuY3Rpb24gZW5jb2RlUG9pbnQocG9pbnQpIHtcbiAgdmFyIGVuYyA9IHBvaW50LmdldFkoKS50b0FycmF5KCdsZScsIHRoaXMuZW5jb2RpbmdMZW5ndGgpO1xuICBlbmNbdGhpcy5lbmNvZGluZ0xlbmd0aCAtIDFdIHw9IHBvaW50LmdldFgoKS5pc09kZCgpID8gMHg4MCA6IDA7XG4gIHJldHVybiBlbmM7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZGVjb2RlUG9pbnQgPSBmdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcykge1xuICBieXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXMoYnl0ZXMpO1xuXG4gIHZhciBsYXN0SXggPSBieXRlcy5sZW5ndGggLSAxO1xuICB2YXIgbm9ybWVkID0gYnl0ZXMuc2xpY2UoMCwgbGFzdEl4KS5jb25jYXQoYnl0ZXNbbGFzdEl4XSAmIH4weDgwKTtcbiAgdmFyIHhJc09kZCA9IChieXRlc1tsYXN0SXhdICYgMHg4MCkgIT09IDA7XG5cbiAgdmFyIHkgPSB1dGlscy5pbnRGcm9tTEUobm9ybWVkKTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnRGcm9tWSh5LCB4SXNPZGQpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmVuY29kZUludCA9IGZ1bmN0aW9uIGVuY29kZUludChudW0pIHtcbiAgcmV0dXJuIG51bS50b0FycmF5KCdsZScsIHRoaXMuZW5jb2RpbmdMZW5ndGgpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmRlY29kZUludCA9IGZ1bmN0aW9uIGRlY29kZUludChieXRlcykge1xuICByZXR1cm4gdXRpbHMuaW50RnJvbUxFKGJ5dGVzKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5pc1BvaW50ID0gZnVuY3Rpb24gaXNQb2ludCh2YWwpIHtcbiAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIHRoaXMucG9pbnRDbGFzcztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xudmFyIHBhcnNlQnl0ZXMgPSB1dGlscy5wYXJzZUJ5dGVzO1xudmFyIGNhY2hlZFByb3BlcnR5ID0gdXRpbHMuY2FjaGVkUHJvcGVydHk7XG5cbi8qKlxuKiBAcGFyYW0ge0VERFNBfSBlZGRzYSAtIGluc3RhbmNlXG4qIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgLSBwdWJsaWMvcHJpdmF0ZSBrZXkgcGFyYW1ldGVyc1xuKlxuKiBAcGFyYW0ge0FycmF5PEJ5dGU+fSBbcGFyYW1zLnNlY3JldF0gLSBzZWNyZXQgc2VlZCBieXRlc1xuKiBAcGFyYW0ge1BvaW50fSBbcGFyYW1zLnB1Yl0gLSBwdWJsaWMga2V5IHBvaW50IChha2EgYEFgIGluIGVkZHNhIHRlcm1zKVxuKiBAcGFyYW0ge0FycmF5PEJ5dGU+fSBbcGFyYW1zLnB1Yl0gLSBwdWJsaWMga2V5IHBvaW50IGVuY29kZWQgYXMgYnl0ZXNcbipcbiovXG5mdW5jdGlvbiBLZXlQYWlyKGVkZHNhLCBwYXJhbXMpIHtcbiAgdGhpcy5lZGRzYSA9IGVkZHNhO1xuICB0aGlzLl9zZWNyZXQgPSBwYXJzZUJ5dGVzKHBhcmFtcy5zZWNyZXQpO1xuICBpZiAoZWRkc2EuaXNQb2ludChwYXJhbXMucHViKSlcbiAgICB0aGlzLl9wdWIgPSBwYXJhbXMucHViO1xuICBlbHNlXG4gICAgdGhpcy5fcHViQnl0ZXMgPSBwYXJzZUJ5dGVzKHBhcmFtcy5wdWIpO1xufVxuXG5LZXlQYWlyLmZyb21QdWJsaWMgPSBmdW5jdGlvbiBmcm9tUHVibGljKGVkZHNhLCBwdWIpIHtcbiAgaWYgKHB1YiBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHB1YjtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVkZHNhLCB7IHB1YjogcHViIH0pO1xufTtcblxuS2V5UGFpci5mcm9tU2VjcmV0ID0gZnVuY3Rpb24gZnJvbVNlY3JldChlZGRzYSwgc2VjcmV0KSB7XG4gIGlmIChzZWNyZXQgaW5zdGFuY2VvZiBLZXlQYWlyKVxuICAgIHJldHVybiBzZWNyZXQ7XG4gIHJldHVybiBuZXcgS2V5UGFpcihlZGRzYSwgeyBzZWNyZXQ6IHNlY3JldCB9KTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLnNlY3JldCA9IGZ1bmN0aW9uIHNlY3JldCgpIHtcbiAgcmV0dXJuIHRoaXMuX3NlY3JldDtcbn07XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwdWJCeXRlcycsIGZ1bmN0aW9uIHB1YkJ5dGVzKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVQb2ludCh0aGlzLnB1YigpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHViJywgZnVuY3Rpb24gcHViKCkge1xuICBpZiAodGhpcy5fcHViQnl0ZXMpXG4gICAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5fcHViQnl0ZXMpO1xuICByZXR1cm4gdGhpcy5lZGRzYS5nLm11bCh0aGlzLnByaXYoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3ByaXZCeXRlcycsIGZ1bmN0aW9uIHByaXZCeXRlcygpIHtcbiAgdmFyIGVkZHNhID0gdGhpcy5lZGRzYTtcbiAgdmFyIGhhc2ggPSB0aGlzLmhhc2goKTtcbiAgdmFyIGxhc3RJeCA9IGVkZHNhLmVuY29kaW5nTGVuZ3RoIC0gMTtcblxuICB2YXIgYSA9IGhhc2guc2xpY2UoMCwgZWRkc2EuZW5jb2RpbmdMZW5ndGgpO1xuICBhWzBdICY9IDI0ODtcbiAgYVtsYXN0SXhdICY9IDEyNztcbiAgYVtsYXN0SXhdIHw9IDY0O1xuXG4gIHJldHVybiBhO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwcml2JywgZnVuY3Rpb24gcHJpdigpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMucHJpdkJ5dGVzKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdoYXNoJywgZnVuY3Rpb24gaGFzaCgpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuaGFzaCgpLnVwZGF0ZSh0aGlzLnNlY3JldCgpKS5kaWdlc3QoKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAnbWVzc2FnZVByZWZpeCcsIGZ1bmN0aW9uIG1lc3NhZ2VQcmVmaXgoKSB7XG4gIHJldHVybiB0aGlzLmhhc2goKS5zbGljZSh0aGlzLmVkZHNhLmVuY29kaW5nTGVuZ3RoKTtcbn0pO1xuXG5LZXlQYWlyLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbihtZXNzYWdlKSB7XG4gIGFzc2VydCh0aGlzLl9zZWNyZXQsICdLZXlQYWlyIGNhbiBvbmx5IHZlcmlmeScpO1xuICByZXR1cm4gdGhpcy5lZGRzYS5zaWduKG1lc3NhZ2UsIHRoaXMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1lc3NhZ2UsIHNpZykge1xuICByZXR1cm4gdGhpcy5lZGRzYS52ZXJpZnkobWVzc2FnZSwgc2lnLCB0aGlzKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFNlY3JldCA9IGZ1bmN0aW9uIGdldFNlY3JldChlbmMpIHtcbiAgYXNzZXJ0KHRoaXMuX3NlY3JldCwgJ0tleVBhaXIgaXMgcHVibGljIG9ubHknKTtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLnNlY3JldCgpLCBlbmMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuZ2V0UHVibGljID0gZnVuY3Rpb24gZ2V0UHVibGljKGVuYykge1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHRoaXMucHViQnl0ZXMoKSwgZW5jKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gS2V5UGFpcjtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xudmFyIGNhY2hlZFByb3BlcnR5ID0gdXRpbHMuY2FjaGVkUHJvcGVydHk7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG5cbi8qKlxuKiBAcGFyYW0ge0VERFNBfSBlZGRzYSAtIGVkZHNhIGluc3RhbmNlXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fE9iamVjdH0gc2lnIC1cbiogQHBhcmFtIHtBcnJheTxCeXRlcz58UG9pbnR9IFtzaWcuUl0gLSBSIHBvaW50IGFzIFBvaW50IG9yIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fGJufSBbc2lnLlNdIC0gUyBzY2FsYXIgYXMgYm4gb3IgYnl0ZXNcbiogQHBhcmFtIHtBcnJheTxCeXRlcz59IFtzaWcuUmVuY29kZWRdIC0gUiBwb2ludCBlbmNvZGVkXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fSBbc2lnLlNlbmNvZGVkXSAtIFMgc2NhbGFyIGVuY29kZWRcbiovXG5mdW5jdGlvbiBTaWduYXR1cmUoZWRkc2EsIHNpZykge1xuICB0aGlzLmVkZHNhID0gZWRkc2E7XG5cbiAgaWYgKHR5cGVvZiBzaWcgIT09ICdvYmplY3QnKVxuICAgIHNpZyA9IHBhcnNlQnl0ZXMoc2lnKTtcblxuICBpZiAoQXJyYXkuaXNBcnJheShzaWcpKSB7XG4gICAgc2lnID0ge1xuICAgICAgUjogc2lnLnNsaWNlKDAsIGVkZHNhLmVuY29kaW5nTGVuZ3RoKSxcbiAgICAgIFM6IHNpZy5zbGljZShlZGRzYS5lbmNvZGluZ0xlbmd0aCksXG4gICAgfTtcbiAgfVxuXG4gIGFzc2VydChzaWcuUiAmJiBzaWcuUywgJ1NpZ25hdHVyZSB3aXRob3V0IFIgb3IgUycpO1xuXG4gIGlmIChlZGRzYS5pc1BvaW50KHNpZy5SKSlcbiAgICB0aGlzLl9SID0gc2lnLlI7XG4gIGlmIChzaWcuUyBpbnN0YW5jZW9mIEJOKVxuICAgIHRoaXMuX1MgPSBzaWcuUztcblxuICB0aGlzLl9SZW5jb2RlZCA9IEFycmF5LmlzQXJyYXkoc2lnLlIpID8gc2lnLlIgOiBzaWcuUmVuY29kZWQ7XG4gIHRoaXMuX1NlbmNvZGVkID0gQXJyYXkuaXNBcnJheShzaWcuUykgPyBzaWcuUyA6IHNpZy5TZW5jb2RlZDtcbn1cblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUycsIGZ1bmN0aW9uIFMoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZUludCh0aGlzLlNlbmNvZGVkKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1InLCBmdW5jdGlvbiBSKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLlJlbmNvZGVkKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1JlbmNvZGVkJywgZnVuY3Rpb24gUmVuY29kZWQoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMuUigpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShTaWduYXR1cmUsICdTZW5jb2RlZCcsIGZ1bmN0aW9uIFNlbmNvZGVkKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVJbnQodGhpcy5TKCkpO1xufSk7XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9CeXRlcyA9IGZ1bmN0aW9uIHRvQnl0ZXMoKSB7XG4gIHJldHVybiB0aGlzLlJlbmNvZGVkKCkuY29uY2F0KHRoaXMuU2VuY29kZWQoKSk7XG59O1xuXG5TaWduYXR1cmUucHJvdG90eXBlLnRvSGV4ID0gZnVuY3Rpb24gdG9IZXgoKSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy50b0J5dGVzKCksICdoZXgnKS50b1VwcGVyQ2FzZSgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBTaWduYXR1cmU7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgZG91Ymxlczoge1xuICAgIHN0ZXA6IDQsXG4gICAgcG9pbnRzOiBbXG4gICAgICBbXG4gICAgICAgICdlNjBmY2U5M2I1OWU5ZWM1MzAxMWFhYmMyMWMyM2U5N2IyYTMxMzY5Yjg3YTVhZTljNDRlZTg5ZTJhNmRlYzBhJyxcbiAgICAgICAgJ2Y3ZTM1MDczOTllNTk1OTI5ZGI5OWYzNGY1NzkzNzEwMTI5Njg5MWU0NGQyM2YwYmUxZjMyY2NlNjk2MTY4MjEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgyODIyNjMyMTJjNjA5ZDllYTJhNmUzZTE3MmRlMjM4ZDhjMzljYWJkNWFjMWNhMTA2NDZlMjNmZDVmNTE1MDgnLFxuICAgICAgICAnMTFmOGE4MDk4NTU3ZGZlNDVlODI1NmU4MzBiNjBhY2U2MmQ2MTNhYzJmN2IxN2JlZDMxYjZlYWZmNmUyNmNhZicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTc1ZTE1OWY3MjhiODY1YTcyZjk5Y2M2YzZmYzg0NmRlMGI5MzgzM2ZkMjIyMmVkNzNmY2U1YjU1MWU1YjczOScsXG4gICAgICAgICdkMzUwNmUwZDllM2M3OWViYTRlZjk3YTUxZmY3MWY1ZWFjYjU5NTVhZGQyNDM0NWM2ZWZhNmZmZWU5ZmVkNjk1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNjNkOTBkNDQ3YjAwYzljOTljZWFjMDViNjI2MmVlMDUzNDQxYzdlNTU1NTJmZmU1MjZiYWQ4ZjgzZmY0NjQwJyxcbiAgICAgICAgJzRlMjczYWRmYzczMjIyMTk1M2I0NDUzOTdmMzM2MzE0NWI5YTg5MDA4MTk5ZWNiNjIwMDNjN2YzYmVlOWRlOScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGI0YjVmMTY1ZGYzYzJiZThjNjI0NGI1Yjc0NTYzODg0M2U0YTc4MWExNWJjZDFiNjlmNzlhNTVkZmZkZjgwYycsXG4gICAgICAgICc0YWFkMGE2ZjY4ZDMwOGI0YjNmYmQ3ODEzYWIwZGEwNGY5ZTMzNjU0NjE2MmVlNTZiM2VmZjBjNjVmZDRmZDM2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3MjNjYmFhNmU1ZGI5OTZkNmJmNzcxYzAwYmQ1NDhjN2I3MDBkYmZmYTZjMGU3N2JjYjYxMTU5MjUyMzJmY2RhJyxcbiAgICAgICAgJzk2ZTg2N2I1NTk1Y2M0OThhOTIxMTM3NDg4ODI0ZDZlMjY2MGEwNjUzNzc5NDk0ODAxZGMwNjlkOWViMzlmNWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlYmZhNGQ0OTNiZWJmOThiYTVmZWVjODEyYzJkM2I1MDk0Nzk2MTIzN2E5MTk4MzlhNTMzZWNhMGU3ZGQ3ZmEnLFxuICAgICAgICAnNWQ5YThjYTM5NzBlZjBmMjY5ZWU3ZWRhZjE3ODA4OWQ5YWU0Y2RjM2E3MTFmNzEyZGRmZDRmZGFlMWRlODk5OScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTAwZjQ0ZGE2OTZlNzE2NzI3OTFkMGEwOWI3YmRlNDU5ZjEyMTVhMjliM2MwM2JmZWZkNzgzNWIzOWE0OGRiMCcsXG4gICAgICAgICdjZGQ5ZTEzMTkyYTAwYjc3MmVjOGYzMzAwYzA5MDY2NmI3ZmY0YTE4ZmY1MTk1YWMwZmJkNWNkNjJiYzY1YTA5JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMTAzMWJlMjYyYzdlZDFiMWRjOTIyN2E0YTA0YzAxN2E3N2Y4ZDQ0NjRmM2IzODUyYzhhY2RlNmU1MzRmZDJkJyxcbiAgICAgICAgJzlkNzA2MTkyODk0MDQwNWU2YmI2YTQxNzY1OTc1MzVhZjI5MmRkNDE5ZTFjZWQ3OWE0NGYxOGYyOTQ1NmEwMGQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZlZWE2Y2FlNDZkNTViNTMwYWMyODM5ZjE0M2JkN2VjNWNmOGIyNjZhNDFkNmFmNTJkNWU2ODhkOTA5NDY5NmQnLFxuICAgICAgICAnZTU3YzZiNmM5N2RjZTFiYWIwNmU0ZTEyYmYzZWNkNWM5ODFjODk1N2NjNDE0NDJkMzE1NWRlYmYxODA5MDA4OCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGE2N2E5MWQ5MTA0OWNkY2IzNjdiZTRiZTZmZmNhM2NmZWVkNjU3ZDgwODU4M2RlMzNmYTk3OGJjMWVjNmNiMScsXG4gICAgICAgICc5YmFjYWEzNTQ4MTY0MmJjNDFmNDYzZjdlYzk3ODBlNWRlYzdhZGM1MDhmNzQwYTE3ZTllYThlMjdhNjhiZTFkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1MzkwNGZhYTBiMzM0Y2RkYTZlMDAwOTM1ZWYyMjE1MWVjMDhkMGY3YmIxMTA2OWY1NzU0NWNjYzFhMzdiN2MwJyxcbiAgICAgICAgJzViYzA4N2QwYmM4MDEwNmQ4OGM5ZWNjYWMyMGQzYzFjMTM5OTk5ODFlMTQ0MzQ2OTlkY2IwOTZiMDIyNzcxYzgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhlN2JjZDBiZDM1OTgzYTc3MTljY2E3NzY0Y2E5MDY3NzliNTNhMDQzYTliOGJjYWVmZjk1OWY0M2FkODYwNDcnLFxuICAgICAgICAnMTBiNzc3MGIyYTNkYTRiMzk0MDMxMDQyMGNhOTUxNDU3OWU4OGUyZTQ3ZmQ2OGIzZWExMDA0N2U4NDYwMzcyYScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzg1ZWVkMzRjMWNkZmYyMWU2ZDA4MTg2ODliODFiZGU3MWE3ZjRmMTgzOTdlNjY5MGE4NDFlMTU5OWM0Mzg2MicsXG4gICAgICAgICcyODNiZWJjM2U4ZWEyM2Y1NjcwMWRlMTllOWViZjQ1NzZiMzA0ZWVjMjA4NmRjOGNjMDQ1OGZlNTU0MmU1NDUzJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2ZjlkOWI4MDNlY2YxOTE2MzdjNzNhNDQxM2RmYTE4MGZkZGY4NGE1OTQ3ZmJjOWM2MDZlZDg2YzNmYWMzYTcnLFxuICAgICAgICAnN2M4MGM2OGU2MDMwNTliYTY5YjhlMmEzMGU0NWM0ZDQ3ZWE0ZGQyZjVjMjgxMDAyZDg2ODkwNjAzYTg0MjE2MCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzMyMmQ0MDEyNDNjNGUyNTgyYTIxNDdjMTA0ZDZlY2JmNzc0ZDE2M2RiMGY1ZTUzMTNiN2UwZTc0MmQwZTZiZCcsXG4gICAgICAgICc1NmU3MDc5N2U5NjY0ZWY1YmZiMDE5YmM0ZGRhZjliNzI4MDVmNjNlYTI4NzNhZjYyNGYzYTJlOTZjMjhiMmEwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NTY3MmM3ZDJkZTBiN2RhMmJkMTc3MGQ4OTY2NTg2ODc0MWIzZjlhZjc2NDMzOTc3MjFkNzRkMjgxMzRhYjgzJyxcbiAgICAgICAgJzdjNDgxYjliNWI0M2IyZWI2Mzc0MDQ5YmZhNjJjMmU1ZTc3ZjE3ZmNjNTI5OGY0NGM4ZTMwOTRmNzkwMzEzYTYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzk0OGJmODA5YjE5ODhhNDZiMDZjOWYxOTE5NDEzYjEwZjkyMjZjNjBmNjY4ODMyZmZkOTU5YWY2MGM4MmEwYScsXG4gICAgICAgICc1M2E1NjI4NTZkY2I2NjQ2ZGM2Yjc0YzVkMWMzNDE4YzZkNGRmZjA4Yzk3Y2QyYmVkNGNiN2Y4OGQ4YzhlNTg5JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MjYwY2U3ZjQ2MTgwMWMzNGYwNjdjZTBmMDI4NzNhOGYxYjBlNDRkZmM2OTc1MmFjY2VjZDgxOWYzOGZkOGU4JyxcbiAgICAgICAgJ2JjMmRhODJiNmZhNWI1NzFhN2YwOTA0OTc3NmExZWY3ZWNkMjkyMjM4MDUxYzE5OGMxYTg0ZTk1YjJiNGFlMTcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U1MDM3ZGUwYWZjMWQ4ZDQzZDgzNDg0MTRiYmY0MTAzMDQzZWM4ZjU3NWJmZGM0MzI5NTNjYzhkMjAzN2ZhMmQnLFxuICAgICAgICAnNDU3MTUzNGJhYTk0ZDNiNWY5Zjk4ZDA5ZmI5OTBiZGRiZDVmNWIwM2VjNDgxZjEwZTBlNWRjODQxZDc1NWJkYScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTA2MzcyYjBmNGEyMDdhZGY1ZWE5MDVlOGYxNzcxYjRlN2U4ZGJkMWM2YTZjNWI3MjU4NjZhMGFlNGZjZTcyNScsXG4gICAgICAgICc3YTkwODk3NGJjZTE4Y2ZlMTJhMjdiYjJhZDVhNDg4Y2Q3NDg0YTc3ODcxMDQ4NzBiMjcwMzRmOTRlZWUzMWRkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyMTNjN2E3MTVjZDVkNDUzNThkMGJiZjlkYzBjZTAyMjA0YjEwYmRkZTJhM2Y1ODU0MGFkNjkwOGQwNTU5NzU0JyxcbiAgICAgICAgJzRiNmRhZDBiNWFlNDYyNTA3MDEzYWQwNjI0NWJhMTkwYmI0ODUwZjVmMzZhN2VlZGRmZjJjMjc1MzRiNDU4ZjInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRlN2MyNzJhN2FmNGIzNGU4ZGJiOTM1MmE1NDE5YTg3ZTI4MzhjNzBhZGM2MmNkZGYwY2MzYTNiMDhmYmQ1M2MnLFxuICAgICAgICAnMTc3NDljNzY2YzlkMGIxOGUxNmZkMDlmNmRlZjY4MWI1MzBiOTYxNGJmZjdkZDMzZTBiMzk0MTgxN2RjYWFlNicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmVhNzRlM2RiZTc3OGIxYjEwZjIzOGFkNjE2ODZhYTVjNzZlM2RiMmJlNDMwNTc2MzI0MjdlMjg0MGZiMjdiNicsXG4gICAgICAgICc2ZTA1NjhkYjliMGIxMzI5N2NmNjc0ZGVjY2I2YWY5MzEyNmI1OTZiOTczZjdiNzc3MDFkM2RiN2YyM2NiOTZmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NmU2NDExM2Y2NzdjZjBlMTBhMjU3MGQ1OTk5NjhkMzE1NDRlMTc5Yjc2MDQzMjk1MmMwMmE0NDE3YmRkZTM5JyxcbiAgICAgICAgJ2M5MGRkZjhkZWU0ZTk1Y2Y1NzcwNjZkNzA2ODFmMGQzNWUyYTMzZDJiNTZkMjAzMmI0YjE3NTJkMTkwMWFjMDEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M3MzhjNTZiMDNiMmFiZTFlODI4MWJhYTc0M2Y4ZjlhOGY3Y2M2NDNkZjI2Y2JlZTNhYjE1MDI0MmJjYmI4OTEnLFxuICAgICAgICAnODkzZmI1Nzg5NTFhZDI1MzdmNzE4ZjJlYWNiZmJiYmI4MjMxNGVlZjc4ODBjZmU5MTdlNzM1ZDk2OTlhODRjMycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDg5NTYyNjU0OGI2NWI4MWUyNjRjNzYzN2M5NzI4NzdkMWQ3MmU1ZjNhOTI1MDE0MzcyZTlmNjU4OGY2YzE0YicsXG4gICAgICAgICdmZWJmYWEzOGYyYmM3ZWFlNzI4ZWM2MDgxOGMzNDBlYjAzNDI4ZDYzMmJiMDY3ZTE3OTM2M2VkNzVkN2Q5OTFmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiOGRhOTQwMzJhOTU3NTE4ZWIwZjY0MzM1NzFlODc2MWNlZmZjNzM2OTNlODRlZGQ0OTE1MGE1NjRmNjc2ZTAzJyxcbiAgICAgICAgJzI4MDRkZmE0NDgwNWExZTRkN2M5OWNjOTc2MjgwOGIwOTJjYzU4NGQ5NWZmM2I1MTE0ODhlNGU3NGVmZGY2ZTcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U4MGZlYTE0NDQxZmIzM2E3ZDhhZGFiOTQ3NWQ3ZmFiMjAxOWVmZmI1MTU2YTc5MmYxYTExNzc4ZTNjMGRmNWQnLFxuICAgICAgICAnZWVkMWRlN2Y2MzhlMDA3NzFlODk3NjhjYTNjYTk0NDcyZDE1NWU4MGFmMzIyZWE5ZmNiNDI5MWI2YWM5ZWM3OCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTMwMTY5N2JkZmNkNzA0MzEzYmE0OGU1MWQ1Njc1NDNmMmExODIwMzFlZmQ2OTE1ZGRjMDdiYmNjNGUxNjA3MCcsXG4gICAgICAgICc3MzcwZjkxY2ZiNjdlNGY1MDgxODA5ZmEyNWQ0MGY5YjE3MzVkYmY3YzBhMTFhMTMwYzBkMWEwNDFlMTc3ZWExJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5MGFkODViMzg5ZDZiOTM2NDYzZjlkMDUxMjY3OGRlMjA4Y2MzMzBiMTEzMDdmZmZhYjdhYzYzZTNmYjA0ZWQ0JyxcbiAgICAgICAgJ2U1MDdhMzYyMGEzODI2MWFmZmRjYmQ5NDI3MjIyYjgzOWFlZmFiZTE1ODI4OTRkOTkxZDRkNDhjYjZlZjE1MCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGY2OGI5ZDJmNjNiNWYzMzkyMzljMWFkOTgxZjE2MmVlODhjNTY3ODcyM2VhMzM1MWI3YjQ0NGM5ZWM0YzBkYScsXG4gICAgICAgICc2NjJhOWYyZGJhMDYzOTg2ZGUxZDkwYzJiNmJlMjE1ZGJiZWEyY2ZlOTU1MTBiZmRmMjNjYmY3OTUwMWZmZjgyJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNGYzZmIwMTc2YWY4NWQ2NWZmOTlmZjkxOThjMzYwOTFmNDhlODY1MDM2ODFlM2U2Njg2ZmQ1MDUzMjMxZTExJyxcbiAgICAgICAgJzFlNjM2MzNhZDBlZjRmMWMxNjYxYTZkMGVhMDJiNzI4NmNjN2U3NGVjOTUxZDFjOTgyMmMzODU3NmZlYjczYmMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhjMDBmYTliMThlYmYzMzFlYjk2MTUzN2E0NWE0MjY2YzcwMzRmMmYwZDRlMWQwNzE2ZmI2ZWFlMjBlYWUyOWUnLFxuICAgICAgICAnZWZhNDcyNjdmZWE1MjFhMWE5ZGMzNDNhMzczNmM5NzRjMmZhZGFmYTgxZTM2YzU0ZTdkMmE0YzY2NzAyNDE0YicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTdhMjZjZTY5ZGQ0ODI5ZjNlMTBjZWMwYTllOThlZDMxNDNkMDg0ZjMwOGI5MmMwOTk3ZmRkZmM2MGNiM2U0MScsXG4gICAgICAgICcyYTc1OGUzMDBmYTc5ODRiNDcxYjAwNmExYWFmYmIxOGQwYTZiMmMwNDIwZTgzZTIwZThhOTQyMWNmMmNmZDUxJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiNjQ1OWUwZWUzNjYyZWM4ZDIzNTQwYzIyM2JjYmRjNTcxY2JjYjk2N2Q3OTQyNGYzY2YyOWViM2RlNmI4MGVmJyxcbiAgICAgICAgJzY3Yzg3NmQwNmYzZTA2ZGUxZGFkZjE2ZTU2NjFkYjNjNGIzYWU2ZDQ4ZTM1YjJmZjMwYmYwYjYxYTcxYmE0NScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDY4YTgwYzgyODBiYjg0MDc5MzIzNGFhMTE4ZjA2MjMxZDZmMWZjNjdlNzNjNWE1ZGVkYTBmNWI0OTY5NDNlOCcsXG4gICAgICAgICdkYjhiYTlmZmY0YjU4NmQwMGM0YjFmOTE3N2IwZTI4YjViMGU3YjhmNzg0NTI5NWEyOTRjODQyNjZiMTMzMTIwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMjRhZWQ3ZGY2NWM4MDQyNTJkYzAyNzA5MDdhMzBiMDk2MTJhZWI5NzM0NDljZWE0MDk1OTgwZmMyOGQzZDVkJyxcbiAgICAgICAgJzY0OGEzNjU3NzRiNjFmMmZmMTMwYzBjMzVhZWMxZjRmMTkyMTNiMGM3ZTMzMjg0Mzk2NzIyNGFmOTZhYjdjODQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRkZjljMTQ5MTljZGU2MWY2ZDUxZGZkYmU1ZmVlNWRjZWVjNDE0M2JhOGQxY2E4ODhlOGJkMzczZmQwNTRjOTYnLFxuICAgICAgICAnMzVlYzUxMDkyZDg3MjgwNTA5NzRjMjNhMWQ4NWQ0YjVkNTA2Y2RjMjg4NDkwMTkyZWJhYzA2Y2FkMTBkNWQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzljMzkxOWE4NGE0NzQ4NzBmYWVkOGE5YzFjYzY2MDIxNTIzNDg5MDU0ZDdmMDMwOGNiZmM5OWM4YWMxZjk4Y2QnLFxuICAgICAgICAnZGRiODRmMGY0YTRkZGQ1NzU4NGYwNDRiZjI2MGU2NDE5MDUzMjZmNzZjNjRjOGU2YmU3ZTVlMDNkNGZjNTk5ZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjA1NzE3MGIxZGQxMmZkZjhkZTA1ZjI4MWQ4ZTA2YmI5MWUxNDkzYThiOTFkNGNjNWEyMTM4MjEyMGE5NTllNScsXG4gICAgICAgICc5YTFhZjBiMjZhNmE0ODA3YWRkOWEyZGFmNzFkZjI2MjQ2NTE1MmJjM2VlMjRjNjVlODk5YmU5MzIzODVhMmE4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhNTc2ZGY4ZTIzYTA4NDExNDIxNDM5YTQ1MThkYTMxODgwY2VmMGZiYTdkNGRmMTJiMWE2OTczZWVjYjk0MjY2JyxcbiAgICAgICAgJzQwYTZiZjIwZTc2NjQwYjJjOTJiOTdhZmU1OGNkODJjNDMyZTEwYTdmNTE0ZDlmM2VlOGJlMTFhZTFiMjhlYzgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NzhhNzhjMjhkZWMzZTMwYTA1ZmU5NjI5ZGU4YzM4YmIzMGQxZjVjZjlhM2EyMDhmNzYzODg5YmU1OGFkNzEnLFxuICAgICAgICAnMzQ2MjZkOWFiNWE1YjIyZmY3MDk4ZTEyZjJmZjU4MDA4N2IzODQxMWZmMjRhYzU2M2I1MTNmYzFmZDlmNDNhYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTI4OTU1ZWU2MzdhODQ0NjM3MjlmZDMwZTdhZmQyZWQ1Zjk2Mjc0ZTVhZDdlNWNiMDllZGE5YzA2ZDkwM2FjJyxcbiAgICAgICAgJ2MyNTYyMTAwM2QzZjQyYTgyN2I3OGExMzA5M2E5NWVlYWMzZDI2ZWZhOGE4ZDgzZmM1MTgwZTkzNWJjZDA5MWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg1ZDBmZWYzZWM2ZGIxMDkzOTkwNjRmM2EwZTNiMjg1NTY0NWI0YTkwN2FkMzU0NTI3YWFlNzUxNjNkODI3NTEnLFxuICAgICAgICAnMWYwMzY0ODQxM2EzOGMwYmUyOWQ0OTZlNTgyY2Y1NjYzZTg3NTFlOTY4NzczMzE1ODJjMjM3YTI0ZWIxZjk2MicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmYyYjBkY2U5N2VlY2U5N2MxYzliNjA0MTc5OGI4NWRmZGZiNmQ4ODgyZGEyMDMwOGY1NDA0ODI0NTI2MDg3ZScsXG4gICAgICAgICc0OTNkMTNmZWY1MjRiYTE4OGFmNGM0ZGM1NGQwNzkzNmM3YjdlZDZmYjkwZTJjZWIyYzk1MWUwMWYwYzI5OTA3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4MjdmYmJlNGIxZTg4MGVhOWVkMmIyZTYzMDFiMjEyYjU3ZjFlZTE0OGNkNmRkMjg3ODBlNWUyY2Y4NTZlMjQxJyxcbiAgICAgICAgJ2M2MGY5YzkyM2M3MjdiMGI3MWJlZjJjNjdkMWQxMjY4N2ZmN2E2MzE4NjkwMzE2NmQ2MDViNjhiYWVjMjkzZWMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VhYTY0OWYyMWY1MWJkYmFlN2JlNGFlMzRjZTZlNTIxN2E1OGZkY2U3ZjQ3ZjlhYTdmM2I1OGZhMjEyMGUyYjMnLFxuICAgICAgICAnYmUzMjc5ZWQ1YmJiYjAzYWM2OWE4MGY4OTg3OWFhNWEwMWE2Yjk2NWYxM2Y3ZTU5ZDQ3YTUzMDViYTVhZDkzZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTRhNDJkNDNjNWNmMTY5ZDkzOTFkZjZkZWNmNDJlZTU0MWI2ZDhmMGM5YTEzNzQwMWUyMzYzMmRkYTM0ZDI0ZicsXG4gICAgICAgICc0ZDlmOTJlNzE2ZDFjNzM1MjZmYzk5Y2NmYjhhZDM0Y2U4ODZlZWRmYThkOGU0ZjEzYTdmNzEzMWRlYmE5NDE0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxZWM4MGZlZjM2MGNiZGQ5NTQxNjBmYWRhYjM1MmI2YjkyYjUzNTc2YTg4ZmVhNDk0NzE3M2I5ZDQzMDBiZjE5JyxcbiAgICAgICAgJ2FlZWZlOTM3NTZiNTM0MGQyZjNhNDk1OGE3YWJiZjVlMDE0NmU3N2Y2Mjk1YTA3YjY3MWNkYzFjYzEwN2NlZmQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE0NmE3NzhjMDQ2NzBjMmY5MWIwMGFmNDY4MGRmYThiY2UzNDkwNzE3ZDU4YmE4ODlkZGI1OTI4MzY2NjQyYmUnLFxuICAgICAgICAnYjMxOGUwZWMzMzU0MDI4YWRkNjY5ODI3ZjlkNGIyODcwYWFhOTcxZDJmN2U1ZWQxZDBiMjk3NDgzZDgzZWZkMCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmE1MGMwZjYxZDIyZTVmMDdlM2FjZWJiMWFhMDdiMTI4ZDAwMTIyMDlhMjhiOTc3NmQ3NmE4NzkzMTgwZWVmOScsXG4gICAgICAgICc2Yjg0YzY5MjIzOTdlYmE5YjcyY2QyODcyMjgxYTY4YTVlNjgzMjkzYTU3YTIxM2IzOGNkOGQ3ZDNmNGYyODExJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkYTFkNjFkMGNhNzIxYTExYjFhNWJmNmI3ZDg4ZTg0MjFhMjg4YWI1ZDViYmE1MjIwZTUzZDMyYjVmMDY3ZWMyJyxcbiAgICAgICAgJzgxNTdmNTVhN2M5OTMwNmM3OWMwNzY2MTYxYzkxZTI5NjZhNzM4OTlkMjc5YjQ4YTY1NWZiYTBmMWFkODM2ZjEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E4ZTI4MmZmMGM5NzA2OTA3MjE1ZmY5OGU4ZmQ0MTY2MTUzMTFkZTA0NDZmMWUwNjJhNzNiMDYxMGQwNjRlMTMnLFxuICAgICAgICAnN2Y5NzM1NWI4ZGI4MWMwOWFiZmI3ZjNjNWIyNTE1ODg4YjY3OWEzZTUwZGQ2YmQ2Y2VmN2M3MzExMWY0Y2MwYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTc0YTUzYjljOWEyODU4NzJkMzllNTZlNjkxM2NhYjE1ZDU5YjFmYTUxMjUwOGMwMjJmMzgyZGU4MzE5NDk3YycsXG4gICAgICAgICdjY2M5ZGMzN2FiZmM5YzE2NTdiNDE1NWYyYzQ3ZjllNjY0NmIzYTFkOGNiOTg1NDM4M2RhMTNhYzA3OWFmYTczJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5NTkzOTY5ODE5NDM3ODVjM2QzZTU3ZWRmNTAxOGNkYmUwMzllNzMwZTQ5MThiM2Q4ODRmZGZmMDk0NzViN2JhJyxcbiAgICAgICAgJzJlN2U1NTI4ODhjMzMxZGQ4YmEwMzg2YTRiOWNkNjg0OWM2NTNmNjRjODcwOTM4NWU5YjhhYmY4NzUyNGYyZmQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QyYTYzYTUwYWU0MDFlNTZkNjQ1YTExNTNiMTA5YThmY2NhMGE0M2Q1NjFmYmEyZGJiNTEzNDBjOWQ4MmIxNTEnLFxuICAgICAgICAnZTgyZDg2ZmI2NDQzZmNiNzU2NWFlZTU4YjI5NDgyMjBhNzBmNzUwYWY0ODRjYTUyZDQxNDIxNzRkY2Y4OTQwNScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjQ1ODdlMjMzNTQ3MWViODkwZWU3ODk2ZDdjZmRjODY2YmFjYmRiZDM4MzkzMTdiMzQzNmY5YjQ1NjE3ZTA3MycsXG4gICAgICAgICdkOTlmY2RkNWJmNjkwMmUyYWU5NmRkNjQ0N2MyOTlhMTg1YjkwYTM5MTMzYWVhYjM1ODI5OWU1ZTlmYWY2NTg5JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NDgxYmRlMGU0ZTRkODg1YjNhNTQ2ZDNlNTQ5ZGUwNDJmMGFhNmNlYTI1MGU3ZmQzNThkNmM4NmRkNDVlNDU4JyxcbiAgICAgICAgJzM4ZWU3YjhjYmE1NDA0ZGQ4NGEyNWJmMzljZWNiMmNhOTAwYTc5YzQyYjI2MmU1NTZkNjRiMWI1OTc3OTA1N2UnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzEzNDY0YTU3YTc4MTAyYWE2MmI2OTc5YWU4MTdmNDYzN2ZmY2ZlZDNjNGIxY2UzMGJjZDYzMDNmNmNhZjY2NmInLFxuICAgICAgICAnNjliZTE1OTAwNDYxNDU4MGVmN2U0MzM0NTNjY2IwY2E0OGYzMDBhODFkMDk0MmUxM2Y0OTVhOTA3ZjZlY2MyNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYmM0YTlkZjViNzEzZmUyZTlhZWY0MzBiY2MxZGM5N2EwY2Q5Y2NlZGUyZjI4NTg4Y2FkYTNhMGQyZDgzZjM2NicsXG4gICAgICAgICdkM2E4MWNhNmU3ODVjMDYzODM5MzdhZGY0Yjc5OGNhYTZlOGE5ZmJmYTU0N2IxNmQ3NThkNjY2NTgxZjMzYzEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhjMjhhOTdiZjgyOThiYzBkMjNkOGM3NDk0NTJhMzJlNjk0YjY1ZTMwYTk0NzJhMzk1NGFiMzBmZTUzMjRjYWEnLFxuICAgICAgICAnNDBhMzA0NjNhMzMwNTE5MzM3OGZlZGYzMWY3Y2MwZWI3YWU3ODRmMDQ1MWNiOTQ1OWU3MWRjNzNjYmVmOTQ4MicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGVhOTY2NjEzOTUyN2E4YzFkZDk0Y2U0ZjA3MWZkMjNjOGIzNTBjNWE0YmIzMzc0OGM0YmExMTFmYWNjYWUwJyxcbiAgICAgICAgJzYyMGVmYWJiYzhlZTI3ODJlMjRlN2MwY2ZiOTVjNWQ3MzViNzgzYmU5Y2YwZjhlOTU1YWYzNGEzMGU2MmI5NDUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RkMzYyNWZhZWY1YmEwNjA3NDY2OTcxNmJiZDM3ODhkODliZGRlODE1OTU5OTY4MDkyZjc2Y2M0ZWI5YTk3ODcnLFxuICAgICAgICAnN2ExODhmYTM1MjBlMzBkNDYxZGEyNTAxMDQ1NzMxY2E5NDE0NjE5ODI4ODMzOTU5MzdmNjhkMDBjNjQ0YTU3MycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjcxMGQ3OWQ5ZWI5NjIyOTdlNGY2MjMyYjQwZThmN2ZlYjJiYzYzODE0NjE0ZDY5MmMxMmRlNzUyNDA4MjIxZScsXG4gICAgICAgICdlYTk4ZTY3MjMyZDNiMzI5NWQzYjUzNTUzMjExNWNjYWM4NjEyYzcyMTg1MTYxNzUyNmFlNDdhOWM3N2JmYzgyJyxcbiAgICAgIF0sXG4gICAgXSxcbiAgfSxcbiAgbmFmOiB7XG4gICAgd25kOiA3LFxuICAgIHBvaW50czogW1xuICAgICAgW1xuICAgICAgICAnZjkzMDhhMDE5MjU4YzMxMDQ5MzQ0Zjg1Zjg5ZDUyMjliNTMxYzg0NTgzNmY5OWIwODYwMWYxMTNiY2UwMzZmOScsXG4gICAgICAgICczODhmN2IwZjYzMmRlODE0MGZlMzM3ZTYyYTM3ZjM1NjY1MDBhOTk5MzRjMjIzMWI2Y2I5ZmQ3NTg0YjhlNjcyJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyZjhiZGU0ZDFhMDcyMDkzNTViNGE3MjUwYTVjNTEyOGU4OGI4NGJkZGM2MTlhYjdjYmE4ZDU2OWIyNDBlZmU0JyxcbiAgICAgICAgJ2Q4YWMyMjI2MzZlNWUzZDZkNGRiYTlkZGE2YzljNDI2Zjc4ODI3MWJhYjBkNjg0MGRjYTg3ZDNhYTZhYzYyZDYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmMnLFxuICAgICAgICAnNmFlYmNhNDBiYTI1NTk2MGEzMTc4ZDZkODYxYTU0ZGJhODEzZDBiODEzZmRlN2I1YTUwODI2MjgwODcyNjRkYScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWNkNDg0ZTJmMGM3ZjY1MzA5YWQxNzhhOWY1NTlhYmRlMDk3OTY5NzRjNTdlNzE0YzM1ZjExMGRmYzI3Y2NiZScsXG4gICAgICAgICdjYzMzODkyMWIwYTdkOWZkNjQzODA5NzE3NjNiNjFlOWFkZDg4OGE0Mzc1ZjhlMGYwNWNjMjYyYWM2NGY5YzM3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NzRhZTdmODU4YTk0MTFlNWVmNDI0NmI3MGM2NWFhYzU2NDk5ODBiZTVjMTc4OTFiYmVjMTc4OTVkYTAwOGNiJyxcbiAgICAgICAgJ2Q5ODRhMDMyZWI2YjVlMTkwMjQzZGQ1NmQ3YjdiMzY1MzcyZGIxZTJkZmY5ZDZhODMwMWQ3NGM5Yzk1M2M2MWInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2MTBlNThjZGRlZWRkZjhmMTk0MDVhYTgnLFxuICAgICAgICAnYWIwOTAyZThkODgwYTg5NzU4MjEyZWI2NWNkYWY0NzNhMWEwNmRhNTIxZmE5MWYyOWI1Y2I1MmRiMDNlZDgxJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNzkyNGQ0ZjdkNDNlYTk2NWE0NjVhZTMwOTVmZjQxMTMxZTU5NDZmM2M4NWY3OWU0NGFkYmNmOGUyN2UwODBlJyxcbiAgICAgICAgJzU4MWUyODcyYTg2YzcyYTY4Mzg0MmVjMjI4Y2M2ZGVmZWE0MGFmMmJkODk2ZDNhNWM1MDRkYzlmZjZhMjZiNTgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RlZmRlYTRjZGI2Nzc3NTBhNDIwZmVlODA3ZWFjZjIxZWI5ODk4YWU3OWI5NzY4NzY2ZTRmYWEwNGEyZDRhMzQnLFxuICAgICAgICAnNDIxMWFiMDY5NDYzNTE2OGU5OTdiMGVhZDJhOTNkYWVjZWQxZjRhMDRhOTVjMGY2Y2ZiMTk5ZjY5ZTU2ZWI3NycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2YycsXG4gICAgICAgICc4NWU4OWJjMDM3OTQ1ZDkzYjM0MzA4M2I1YTFjODYxMzFhMDFmNjBjNTAyNjk3NjNiNTcwYzg1NGU1YzA5YjdhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNTJiYmY0YTRjZGQxMjU2NGY5M2ZhMzMyY2UzMzMzMDFkOWFkNDAyNzFmODEwNzE4MTM0MGFlZjI1YmU1OWQ1JyxcbiAgICAgICAgJzMyMWViNDA3NTM0OGY1MzRkNTljMTgyNTlkZGEzZTFmNGExYjNiMmU3MWIxMDM5YzY3YmQzZDhiY2Y4MTk5OGMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzJmYTIxMDRkNmIzOGQxMWIwMjMwMDEwNTU5ODc5MTI0ZTQyYWI4ZGZlZmY1ZmYyOWRjOWNkYWRkNGVjYWNjM2YnLFxuICAgICAgICAnMmRlMTA2ODI5NWRkODY1YjY0NTY5MzM1YmQ1ZGQ4MDE4MWQ3MGVjZmM4ODI2NDg0MjNiYTc2YjUzMmI3ZDY3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNhMGNkN2Y1NDUzNzE0JyxcbiAgICAgICAgJzczMDE2ZjdiZjIzNGFhZGU1ZDFhYTcxYmRlYTJiMWZmM2ZjMGRlMmE4ODc5MTJmZmU1NGEzMmNlOTdjYjM0MDInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhZWQ0ZjJiZTNhOGJmMjc4ZTcwMTMyZmIwYmViNzUyMmY1NzBlMTQ0YmY2MTVjMDdlOTk2ZDQ0M2RlZTg3MjknLFxuICAgICAgICAnYTY5ZGNlNGE3ZDZjOThlOGQ0YTFhY2E4N2VmOGQ3MDAzZjgzYzIzMGYzYWZhNzI2YWI0MGU1MjI5MGJlMWM1NScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzQ0ZDEyYzcwNjVkODEyZThhY2YyOGQ3Y2JiMTlmOTAxMWVjZDllOWZkZjI4MWIwZTZhM2I1ZTg3ZDIyZTdkYicsXG4gICAgICAgICcyMTE5YTQ2MGNlMzI2Y2RjNzZjNDU5MjZjOTgyZmRhYzBlMTA2ZTg2MWVkZjYxYzVhMDM5MDYzZjBlMGU2NDgyJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0JyxcbiAgICAgICAgJ2UwMjJjZjQyYzJiZDRhNzA4YjNmNTEyNmYxNmEyNGFkOGIzM2JhNDhkMDQyM2I2ZWZkNWU2MzQ4MTAwZDhhODInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE2OTdmZmE2ZmQ5ZGU2MjdjMDc3ZTNkMmZlNTQxMDg0Y2UxMzMwMGIwYmVjMTE0NmY5NWFlNTdmMGQwYmQ2YTUnLFxuICAgICAgICAnYjljMzk4ZjE4NjgwNmY1ZDI3NTYxNTA2ZTQ1NTc0MzNhMmNmMTUwMDllNDk4YWU3YWRlZTlkNjNkMDFiMjM5NicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjA1YmRiMDE5OTgxNzE4Yjk4NmQwZjA3ZTgzNGNiMGQ5ZGViODM2MGZmYjdmNjFkZjk4MjM0NWVmMjdhNzQ3OScsXG4gICAgICAgICcyOTcyZDJkZTRmOGQyMDY4MWE3OGQ5M2VjOTZmZTIzYzI2YmZhZTg0ZmIxNGRiNDNiMDFlMWU5MDU2YjhjNDknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYzM2QnLFxuICAgICAgICAnODBmYzA2YmQ4Y2M1YjAxMDk4MDg4YTE5NTBlZWQwZGIwMWFhMTMyOTY3YWI0NzIyMzVmNTY0MjQ4M2IyNWVhZicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODBjNjBhZDAwNDBmMjdkYWRlNWI0YjA2YzQwOGU1NmIyYzUwZTlmNTZiOWI4YjQyNWU1NTVjMmY4NjMwOGI2ZicsXG4gICAgICAgICcxYzM4MzAzZjFjYzVjMzBmMjZlNjZiYWQ3ZmU3MmY3MGE2NWVlZDRjYmU3MDI0ZWIxYWEwMWY1NjQzMGJkNTdhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3YTkzNzVhZDYxNjdhZDU0YWE3NGM2MzQ4Y2M1NGQzNDRjYzVkYzk0ODdkODQ3MDQ5ZDVlYWJiMGZhMDNjOGZiJyxcbiAgICAgICAgJ2QwZTNmYTllY2E4NzI2OTA5NTU5ZTBkNzkyNjkwNDZiZGM1OWVhMTBjNzBjZTJiMDJkNDk5ZWMyMjRkYzdmNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFmNDU5YmMzZmZjOScsXG4gICAgICAgICdlZWNmNDEyNTMxMzZlNWY5OTk2NmYyMTg4MWZkNjU2ZWJjNDM0NTQwNWM1MjBkYmMwNjM0NjViNTIxNDA5OTMzJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0OTM3MGE0YjVmNDM0MTJlYTI1ZjUxNGU4ZWNkYWQwNTI2NjExNWU0YTdlY2IxMzg3MjMxODA4ZjhiNDU5NjMnLFxuICAgICAgICAnNzU4ZjNmNDFhZmQ2ZWQ0MjhiMzA4MWIwNTEyZmQ2MmE1NGMzZjNhZmJiNWI2NzY0YjY1MzA1MmExMjk0OWM5YScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzdmMjMwOTM2ZWU4OGNiYmQ3M2RmOTMwZDY0NzAyZWY4ODFkODExZTBlMTQ5OGUyZjFjMTNlYjFmYzM0NWQ3NCcsXG4gICAgICAgICc5NThlZjQyYTc4ODZiNjQwMGEwODI2NmU5YmExYjM3ODk2Yzk1MzMwZDk3MDc3Y2JiZThlYjNjNzY3MWM2MGQ2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwJyxcbiAgICAgICAgJ2UwZGVkYzliM2IyZjhkYWQ0ZGExZjMyZGVjMjUzMWRmOWViNWZiZWIwNTk4ZTRmZDFhMTE3ZGJhNzAzYTNjMzcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ2M2IzZDlmNjYyNjIxZmIxYjRiZThmYmJlMjUyMDEyNWEyMTZjZGZjOWRhZTNkZWJjYmE0ODUwYzY5MGQ0NWInLFxuICAgICAgICAnNWVkNDMwZDc4YzI5NmMzNTQzMTE0MzA2ZGQ4NjIyZDdjNjIyZTI3Yzk3MGExZGUzMWNiMzc3YjAxYWY3MzA3ZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjE2ZjgwNDI0NGU0NmUyYTA5MjMyZDRhZmYzYjU5OTc2Yjk4ZmFjMTQzMjhhMmQxYTMyNDk2YjQ5OTk4ZjI0NycsXG4gICAgICAgICdjZWRhYmQ5YjgyMjAzZjdlMTNkMjA2ZmNkZjRlMzNkOTJhNmM1M2MyNmU1Y2NlMjZkNjU3OTk2MmM0ZTMxZGY2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQxJyxcbiAgICAgICAgJ2NiNDc0NjYwZWYzNWY1ZjJhNDFiNjQzZmE1ZTQ2MDU3NWY0ZmE5Yjc5NjIyMzJhNWMzMmY5MDgzMThhMDQ0NzYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzI2MDBjYTRiMjgyY2I5ODZmODVkMGYxNzA5OTc5ZDhiNDRhMDljMDdjYjg2ZDdjMTI0NDk3YmM4NmYwODIxMjAnLFxuICAgICAgICAnNDExOWI4ODc1M2MxNWJkNmE2OTNiMDNmY2RkYmI0NWQ1YWM2YmU3NGFiNWYwZWY0NGIwYmU5NDc1YTdlNGI0MCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzYzNWNhNzJkN2U4NDMyYzMzOGVjNTNjZDEyMjIwYmMwMWM0ODY4NWUyNGY3ZGM4YzYwMmE3NzQ2OTk4ZTQzNScsXG4gICAgICAgICc5MWI2NDk2MDk0ODlkNjEzZDFkNWU1OTBmNzhlNmQ3NGVjZmMwNjFkNTcwNDhiYWQ5ZTc2ZjMwMmM1YjljNjEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMTgnLFxuICAgICAgICAnNjczZmI4NmU1YmRhMzBmYjNjZDBlZDMwNGVhNDlhMDIzZWUzM2QwMTk3YTY5NWQwYzVkOTgwOTNjNTM2NjgzJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlM2U2YmQxMDcxYTFlOTZhZmY1Nzg1OWM4MmQ1NzBmMDMzMDgwMDY2MWQxYzk1MmY5ZmUyNjk0NjkxZDliOWU4JyxcbiAgICAgICAgJzU5YzllMGJiYTM5NGU3NmY0MGMwYWE1ODM3OWEzY2I2YTVhMjI4Mzk5M2U5MGM0MTY3MDAyYWY0OTIwZTM3ZjUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE4NmI0ODNkMDU2YTAzMzgyNmFlNzNkODhmNzMyOTg1YzRjY2IxZjMyYmEzNWY0YjRjYzQ3ZmRjZjA0YWE2ZWInLFxuICAgICAgICAnM2I5NTJkMzJjNjdjZjc3ZTJlMTc0NDZlMjA0MTgwYWIyMWZiODA5MDg5NTEzOGI0YTRhNzk3Zjg2ZTgwODg4YicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGY5ZDcwYTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZicsXG4gICAgICAgICc1NWViMmRhZmQ4NGQ2Y2NkNWY4NjJiNzg1ZGMzOWQ0YWIxNTcyMjI3MjBlZjlkYTIxN2I4YzQ1Y2YyYmEyNDE3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1ZWRkNWNjMjNjNTFlODdhNDk3Y2E4MTVkNWRjZTBmOGFiNTI1NTRmODQ5ZWQ4OTk1ZGU2NGM1ZjM0Y2U3MTQzJyxcbiAgICAgICAgJ2VmYWU5YzhkYmMxNDEzMDY2MWU4Y2VjMDMwYzg5YWQwYzEzYzY2YzBkMTdhMjkwNWNkYzcwNmFiNzM5OWE4NjgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzI5MDc5OGMyYjY0NzY4MzBkYTEyZmUwMjI4N2U5ZTc3N2FhM2ZiYTFjMzU1YjE3YTcyMmQzNjJmODQ2MTRmYmEnLFxuICAgICAgICAnZTM4ZGE3NmRjZDQ0MDYyMTk4OGQwMGJjZjc5YWYyNWQ1YjI5YzA5NGRiMmEyMzE0NmQwMDNhZmQ0MTk0M2U3YScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NScsXG4gICAgICAgICdmOThhM2ZkODMxZWIyYjc0OWE5M2IwZTZmMzVjZmI0MGM4Y2Q1YWE2NjdhMTU1ODFiYzJmZWRlZDQ5OGZkOWM2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NjZkYmIyNGQxMzRlNzQ1Y2NjYWEyOGM5OWJmMjc0OTA2YmI2NmIyNmRjZjk4ZGY4ZDJmZWQ1MGQ4ODQyNDlhJyxcbiAgICAgICAgJzc0NGIxMTUyZWFjYmU1ZTM4ZGNjODg3OTgwZGEzOGI4OTc1ODRhNjVmYTA2Y2VkZDJjOTI0Zjk3Y2JhYzU5OTYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzU5ZGJmNDZmOGM5NDc1OWJhMjEyNzdjMzM3ODRmNDE2NDVmN2I0NGY2YzU5NmE1OGNlOTJlNjY2MTkxYWJlM2UnLFxuICAgICAgICAnYzUzNGFkNDQxNzVmYmMzMDBmNGVhNmNlNjQ4MzA5YTA0MmNlNzM5YTc5MTk3OThjZDg1ZTIxNmM0YTMwN2Y2ZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjEzYWRhOTUxMDNjNDUzNzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOCcsXG4gICAgICAgICdlMTM4MTdiNDRlZTE0ZGU2NjNiZjRiYzgwODM0MWYzMjY5NDllMjFhNmE3NWMyNTcwNzc4NDE5YmRhZjU3MzNkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NzU0YjRmYTBlOGFjZWQwNmQ0MTY3YTJjNTljY2E0Y2RhMTg2OWMwNmViYWRmYjY0ODg1NTAwMTVhODg1MjJjJyxcbiAgICAgICAgJzMwZTkzZTg2NGU2NjlkODIyMjRiOTY3YzMwMjBiOGZhOGQxZTRlMzUwYjZjYmNjNTM3YTQ4YjU3ODQxMTYzYTInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzk0OGRjYWRmNTk5MGUwNDhhYTM4NzRkNDZhYmVmOWQ3MDE4NThmOTVkZTgwNDFkMmE2ODI4Yzk5ZTIyNjI1MTknLFxuICAgICAgICAnZTQ5MWE0MjUzN2Y2ZTU5N2Q1ZDI4YTMyMjRiMWJjMjVkZjkxNTRlZmJkMmVmMWQyY2JiYTJjYWU1MzQ3ZDU3ZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzk2MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYicsXG4gICAgICAgICcxMDBiNjEwZWM0ZmZiNDc2MGQ1YzFmYzEzM2VmNmY2YjEyNTA3YTA1MWYwNGFjNTc2MGFmYTViMjlkYjgzNDM3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNTE0MDg3ODM0OTY0YjU0YjE1YjE2MDY0NGQ5MTU0ODVhMTY5NzcyMjViODg0N2JiMGRkMDg1MTM3ZWM0N2NhJyxcbiAgICAgICAgJ2VmMGFmYmIyMDU2MjA1NDQ4ZTE2NTJjNDhlODEyN2ZjNjAzOWU3N2MxNWMyMzc4YjdlN2QxNWEwZGUyOTMzMTEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QzY2MzMGFkNmI0ODNlNGJjNzljZTJjOWRkOGJjNTQ5OTNlOTQ3ZWI4ZGY3ODdiNDQyOTQzZDNmN2I1MjdlYWYnLFxuICAgICAgICAnOGIzNzhhMjJkODI3Mjc4ZDg5YzVlOWJlOGY5NTA4YWUzYzJhZDQ2MjkwMzU4NjMwYWZiMzRkYjA0ZWVkZTBhNCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZjYmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMCcsXG4gICAgICAgICc2ODY1MWNmOWI2ZGE5MDNlMDkxNDQ0OGM2Y2Q5ZDRjYTg5Njg3OGY1MjgyYmU0YzhjYzA2ZTJhNDA0MDc4NTc1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3MzNjZTgwZGE5NTVhOGEyNjkwMmM5NTYzM2U2MmE5ODUxOTI0NzRiNWFmMjA3ZGE2ZGY3YjRmZDVmYzYxY2Q0JyxcbiAgICAgICAgJ2Y1NDM1YTJiZDJiYWRmN2Q0ODVhNGQ4YjhkYjlmY2NlM2UxZWY4ZTAyMDFlNDU3OGM1NDY3M2JjMWRjNWVhMWQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE1ZDk0NDEyNTQ5NDUwNjRjZjFhMWMzM2JiZDNiNDlmODk2NmM1MDkyMTcxZTY5OWVmMjU4ZGZhYjgxYzA0NWMnLFxuICAgICAgICAnZDU2ZWIzMGI2OTQ2M2U3MjM0ZjUxMzdiNzNiODQxNzc0MzQ4MDBiYWNlYmZjNjg1ZmMzN2JiZTllZmU0MDcwZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTFkMGZjZjJlYzlkZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MCcsXG4gICAgICAgICdlZGQ3N2Y1MGJjYjVhM2NhYjJlOTA3MzczMDk2NjdmMjY0MTQ2MmE1NDA3MGYzZDUxOTIxMmQzOWMxOTdhNjI5JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMjJmYmUxNWMwYWY4Y2NjNTc4MGMwNzM1Zjg0ZGJlOWE3OTBiYWRlZTgyNDVjMDZjN2NhMzczMzFjYjM2OTgwJyxcbiAgICAgICAgJ2E4NTViYWJhZDVjZDYwYzg4YjQzMGE2OWY1M2ExYTdhMzgyODkxNTQ5NjQ3OTliZTQzZDA2ZDc3ZDMxZGEwNicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzExMDkxZGQ5ODYwZThlMjBlZTEzNDczYzExNTVmNWY2OTYzNWUzOTQ3MDRlYWE3NDAwOTQ1MjI0NmNmYTliMycsXG4gICAgICAgICc2NmRiNjU2Zjg3ZDFmMDRmZmZkMWYwNDc4OGMwNjgzMDg3MWVjNWE2NGZlZWU2ODViZDgwZjBiMTI4NmQ4Mzc0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmJyxcbiAgICAgICAgJzk0MTQ2ODVlOTdiMWI1OTU0YmQ0NmY3MzAxNzQxMzZkNTdmMWNlZWI0ODc0NDNkYzUzMjE4NTdiYTczYWJlZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjIxOWVhNWQ2YjU0NzAxYzFjMTRkZTViNTU3ZWI0MmE4ZDEzZjNhYmJjZDA4YWZmY2MyYTVlNmIwNDliOGQ2MycsXG4gICAgICAgICc0Y2I5NTk1N2U4M2Q0MGIwZjczYWY0NTQ0Y2NjZjZiMWY0YjA4ZDNjMDdiMjdmYjhkOGMyOTYyYTQwMDc2NmQxJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkN2I4NzQwZjc0YThmYmFhYjFmNjgzZGI4ZjQ1ZGUyNjU0M2E1NDkwYmNhNjI3MDg3MjM2OTEyNDY5YTBiNDQ4JyxcbiAgICAgICAgJ2ZhNzc5NjgxMjhkOWM5MmVlMTAxMGYzMzdhZDQ3MTdlZmYxNWRiNWVkM2MwNDliMzQxMWUwMzE1ZWFhNDU5M2InLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmYnLFxuICAgICAgICAnNWYzMDMyZjU4OTIxNTZlMzljY2QzZDc5MTViOWUxZGEyZTZkYWM5ZTZmMjZlOTYxMTE4ZDE0Yjg0NjJlMTY2MScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzQ2MWYzNzE5MTRhYjMyNjcxMDQ1YTE1NWQ5ODMxZWE4NzkzZDc3Y2Q1OTU5MmM0MzQwZjg2Y2JjMTgzNDdiNScsXG4gICAgICAgICc4ZWMwYmEyMzhiOTZiZWMwY2JkZGRjYWUwYWE0NDI1NDJlZWUxZmY1MGM5ODZlYTZiMzk4NDdiM2NjMDkyZmY2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlZTA3OWFkYjFkZjE4NjAwNzQzNTZhMjVhYTM4MjA2YTZkNzE2YjJjM2U2NzQ1M2QyODc2OThiYWQ3YjJiMmQ2JyxcbiAgICAgICAgJzhkYzI0MTJhYWZlM2JlNWM0YzVmMzdlMGVjYzVmOWY2YTQ0Njk4OWFmMDRjNGUyNWViYWFjNDc5ZWMxYzhjMWUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRjOWRjNzJiZmQ4NjE2YmE5ZGE2YjUnLFxuICAgICAgICAnNWU0NjMxMTUwZTYyZmI0MGQwZThjMmE3Y2E1ODA0YTM5ZDU4MTg2YTUwZTQ5NzEzOTYyNjc3OGUyNWIwNjc0ZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWFhNWY5ODBjMjQ1ZjZmMDM4OTc4MjkwYWZhNzBiNmJkODg1NTg5N2Y5OGI2YWE0ODViOTYwNjVkNTM3YmQ5OScsXG4gICAgICAgICdmNjVmNWQzZTI5MmMyZTA4MTlhNTI4MzkxYzk5NDYyNGQ3ODQ4NjlkN2U2ZWE2N2ZiMTgwNDEwMjRlZGMwN2RjJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3OGM5NDA3NTQ0YWMxMzI2OTJlZTE5MTBhMDI0Mzk5NThhZTA0ODc3MTUxMzQyZWE5NmM0YjZiMzVhNDlmNTEnLFxuICAgICAgICAnZjNlMDMxOTE2OWViOWI4NWQ1NDA0Nzk1NTM5YTVlNjhmYTFmYmQ1ODNjMDY0ZDI0NjJiNjc1ZjE5NGEzZGRiNCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNScsXG4gICAgICAgICc0MjI0MmE5NjkyODNhNWYzMzliYTdmMDc1ZTM2YmEyYWY5MjVjZTMwZDc2N2VkNmU1NWY0YjAzMTg4MGQ1NjJjJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhNTk4YTgwMzBkYTZkODZjNmJjN2YyZjUxNDRlYTU0OWQyODIxMWVhNThmYWE3MGViZjRjMWU2NjVjMWZlOWI1JyxcbiAgICAgICAgJzIwNGI1ZDZmODQ4MjJjMzA3ZTRiNGE3MTQwNzM3YWVjMjNmYzYzYjY1YjM1Zjg2YTEwMDI2ZGJkMmQ4NjRlNmInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M0MTkxNjM2NWFiYjJiNWQwOTE5MmY1ZjJkYmVhZmVjMjA4ZjAyMGYxMjU3MGExODRkYmFkYzNlNTg1OTU5OTcnLFxuICAgICAgICAnNGYxNDM1MWQwMDg3ZWZhNDlkMjQ1YjMyODk4NDk4OWQ1Y2FmOTQ1MGYzNGJmYzBlZDE2ZTk2YjU4ZmE5OTEzJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1NTE0NzQyODgxJyxcbiAgICAgICAgJzczODY3ZjU5YzA2NTllODE5MDRmOWExYzc1NDM2OThlNjI1NjJkNjc0NGMxNjljZTdhMzZkZTAxYThkNjE1NCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNWU5NWJiMzk5YTY5NzFkMzc2MDI2OTQ3Zjg5YmRlMmYyODJiMzM4MTA5MjhiZTRkZWQxMTJhYzRkNzBlMjBkNScsXG4gICAgICAgICczOWYyM2YzNjY4MDkwODViZWViZmM3MTE4MTMxMzc3NWE5OWM5YWVkN2Q4YmEzOGIxNjEzODRjNzQ2MDEyODY1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNmU0NjQxYTUzOTQ4ZmQ0NzZjMzlmOGE5OWZkOTc0ZTVlYzA3NTY0YjUzMTVkOGJmOTk0NzFiY2EwZWYyZjY2JyxcbiAgICAgICAgJ2QyNDI0YjFiMWFiZTRlYjgxNjQyMjdiMDg1YzlhYTk0NTZlYTEzNDkzZmQ1NjNlMDZmZDUxY2Y1Njk0Yzc4ZmMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRmYWVhYjI3YzJjNTc5ZjcyNicsXG4gICAgICAgICdlYWQxMjE2ODU5NWZlMWJlOTkyNTIxMjliNmU1NmIzMzkxZjdhYjE0MTBjZDFlMGVmM2RjZGNhYmQyZmRhMjI0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4YWI4OTgxNmRhZGZkNmI2YTFmMjYzNGZjZjAwZWM4NDAzNzgxMDI1ZWQ2ODkwYzQ4NDk3NDI3MDZiZDQzZWRlJyxcbiAgICAgICAgJzZmZGNlZjA5ZjJmNmQwYTA0NGU2NTRhZWY2MjQxMzZmNTAzZDQ1OWMzZTg5ODQ1ODU4YTQ3YTkxMjljZGQyNGUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzFlMzNmMWE3NDZjOWM1Nzc4MTMzMzQ0ZDkyOTlmY2FhMjBiMDkzOGU4YWNmZjI1NDRiYjQwMjg0YjhjNWZiOTQnLFxuICAgICAgICAnNjA2NjAyNTdkZDExYjNhYTljOGVkNjE4ZDI0ZWRmZjIzMDZkMzIwZjFkMDMwMTBlMzNhN2QyMDU3ZjNiM2I2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxJyxcbiAgICAgICAgJzNkOThhOWNkZDAyNmRkNDNmMzkwNDhmMjVhODg0N2Y0ZmNhZmFkMTg5NWQ3YTYzM2M2ZmVkM2MzNWU5OTk1MTEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzI5ZGY5ZmJkOGQ5ZTQ2NTA5Mjc1ZjRiMTI1ZDZkNDVkN2ZiZTlhM2I4NzhhN2FmODcyYTI4MDA2NjFhYzVmNTEnLFxuICAgICAgICAnYjRjNGZlOTljNzc1YTYwNmUyZDg4NjIxNzkxMzlmZmRhNjFkYzg2MWMwMTllNTVjZDI4NzZlYjJhMjdkODRiJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhMGIxY2FlMDZiMGE4NDdhM2ZlYTZlNjcxYWFmOGFkZmRmZTU4Y2EyZjc2ODEwNWM4MDgyYjJlNDQ5ZmNlMjUyJyxcbiAgICAgICAgJ2FlNDM0MTAyZWRkZTA5NThlYzRiMTlkOTE3YTZhMjhlNmI3MmRhMTgzNGFmZjBlNjUwZjA0OTUwM2EyOTZjZjInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUxMjFlNScsXG4gICAgICAgICdjZjIxNzQxMThjOGI2ZDdhNGI0OGY2ZDUzNGNlNWM3OTQyMmMwODZhNjM0NjA1MDJiODI3Y2U2MmEzMjY2ODNjJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkMjRhNDRlMDQ3ZTE5YjZmNWFmYjgxYzdjYTJmNjkwODBhNTA3NjY4OWEwMTA5MTlmNDI3MjVjMmI3ODlhMzNiJyxcbiAgICAgICAgJzZmYjhkNTU5MWI0NjZmOGZjNjNkYjUwZjFjMGYxYzY5MDEzZjk5Njg4N2I4MjQ0ZDJjZGVjNDE3YWZlYThmYTMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VhMDE2MDZhN2E2YzljZGQyNDlmZGZjZmFjYjk5NTg0MDAxZWRkMjhhYmJhYjc3YjUxMDRlOThlOGUzYjM1ZDQnLFxuICAgICAgICAnMzIyYWY0OTA4YzczMTJiMGNmYmZlMzY5ZjdhN2IzY2RiN2Q0NDk0YmMyODIzNzAwY2ZkNjUyMTg4YTNlYTk4ZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZicsXG4gICAgICAgICc2NzQ5ZTY3YzAyOWI4NWY1MmEwMzRlYWZkMDk2ODM2YjI1MjA4MTg2ODBlMjZhYzhmM2RmYmNkYjcxNzQ5NzAwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlM2FlMTk3NDU2NmNhMDZjYzUxNmQ0N2UwZmIxNjVhNjc0YTNkYWJjZmNhMTVlNzIyZjBlMzQ1MGY0NTg4OScsXG4gICAgICAgICcyYWVhYmU3ZTQ1MzE1MTAxMTYyMTdmMDdiZjRkMDczMDBkZTk3ZTQ4NzRmODFmNTMzNDIwYTcyZWViMGJkNmE0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1OTFlZTM1NTMxM2Q5OTcyMWNmNjk5M2ZmZWQxZTNlMzAxOTkzZmYzZWQyNTg4MDIwNzVlYThjZWQzOTdlMjQ2JyxcbiAgICAgICAgJ2IwZWE1NThhMTEzYzMwYmVhNjBmYzQ3NzU0NjBjNzkwMWZmMGIwNTNkMjVjYTJiZGVlZTk4ZjFhNGJlNWQxOTYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzExMzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODQnLFxuICAgICAgICAnOTk4Yzc0YThjZDQ1YWMwMTI4OWQ1ODMzYTdiZWI0NzQ0ZmY1MzZiMDFiMjU3YmU0YzU3NjdiZWE5M2VhNTdhNCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnM2M1ZDJhMWJhMzljNWExNzkwMDAwNzM4YzllMGM0MGI4ZGNkZmQ1NDY4NzU0YjY0MDU1NDAxNTdlMDE3YWE3YScsXG4gICAgICAgICdiMjI4NDI3OTk5NWEzNGUyZjlkNGRlNzM5NmZjMThiODBmOWI4YjlmZGQyNzBmNjY2MWY3OWNhNGM4MWJkMjU3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjYzg3MDRiOGE2MGEwZGVmYTNhOTlhNzI5OWYyZTljM2ZiYzM5NWFmYjA0YWMwNzg0MjVlZjhhMTc5M2NjMDMwJyxcbiAgICAgICAgJ2JkZDQ2MDM5ZmVlZDE3ODgxZDFlMDg2MmRiMzQ3ZjhjZjM5NWI3NGZjNGJjZGM0ZTk0MGI3NGUzYWMxZjFiMTMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTcnLFxuICAgICAgICAnNmYwYTI1NmJjNWVmZGY0MjlhMmZiNjI0MmYxYTQzYTJkOWI5MjViYjRhNGIzYTI2YmI4ZTBmNDVlYjU5NjA5NicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzE0ZjhmMmNjYjI3ZDZmMTA5ZjZkMDhkMDNjYzk2YTY5YmE4YzM0ZWVjMDdiYmNmNTY2ZDQ4ZTMzZGE2NTkzJyxcbiAgICAgICAgJ2MzNTlkNjkyM2JiMzk4ZjdmZDQ0NzNlMTZmZTFjMjg0NzViNzQwZGQwOTgwNzVlNmMwZTg2NDkxMTNkYzNhMzgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E2Y2JjMzA0NmJjNmE0NTBiYWMyNDc4OWZhMTcxMTVhNGM5NzM5ZWQ3NWY4ZjIxY2U0NDFmNzJlMGI5MGU2ZWYnLFxuICAgICAgICAnMjFhZTdmNDY4MGU4ODliYjEzMDYxOWUyYzBmOTVhMzYwY2ViNTczYzcwNjAzMTM5ODYyYWZkNjE3ZmE5YjlmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNDdkNmQ5YTAyYzQ4OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4JyxcbiAgICAgICAgJzYwZWE3ZjYxYTM1MzUyNGQxYzk4N2Y2ZWNlYzkyZjA4NmQ1NjVhYjY4Nzg3MGNiMTI2ODlmZjFlMzFjNzQ0NDgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhNjU0NWQyMTgxZGI4ZDk4M2Y3ZGNiMzc1ZWY1ODY2ZDQ3YzY3YjFiZjMxYzhjZjg1NWVmNzQzN2I3MjY1NmEnLFxuICAgICAgICAnNDliOTY3MTVhYjY4NzhhNzllNzhmMDdjZTU2ODBjNWQ2NjczMDUxYjQ5MzViZDg5N2ZlYTgyNGI3N2RjMjA4YScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzQwNzQ3Y2M5ZDAxMmNiMWExM2I4MTQ4MzA5YzZkZTdlYzI1ZDY5NDVkNjU3MTQ2YjlkNTk5NGI4ZmViMTExMScsXG4gICAgICAgICc1Y2E1NjA3NTNiZTJhMTJmYzZkZTZjYWYyY2I0ODk1NjVkYjkzNjE1NmI5NTE0ZTFiYjVlODMwMzdlMGZhMmQ0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyJyxcbiAgICAgICAgJzc1NzFkNzRlZTVlMGZiOTJhN2E4YjMzYTA3NzgzMzQxYTU0OTIxNDRjYzU0YmNjNDBhOTQ0NzM2OTM2MDY0MzcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM3NzVhYjcwODliYzZhZjgyM2FiYTJlMWFmNzBiMjM2ZDI1MWNhZGIwYzg2NzQzMjg3NTIyYTFiM2IwZGVkZWEnLFxuICAgICAgICAnYmU1MmQxMDdiY2ZhMDlkOGJjYjk3MzZhODI4Y2ZhN2ZhYzhkYjE3YmY3YTc2YTJjNDJhZDk2MTQwOTAxOGNmNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnY2VlMzFjYmY3ZTM0ZWMzNzlkOTRmYjgxNGQzZDc3NWFkOTU0NTk1ZDEzMTRiYTg4NDY5NTllM2U4MmY3NGUyNicsXG4gICAgICAgICc4ZmQ2NGExNGMwNmI1ODljMjZiOTQ3YWUyYmNmNmJmYTAxNDllZjBiZTE0ZWQ0ZDgwZjQ0OGEwMWM0M2IxYzZkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiNGY5ZWFlYTA5YjY5MTc2MTlmNmVhNmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2JyxcbiAgICAgICAgJzM5ZTVjOTkyNWI1YTU0YjA3NDMzYTRmMThjNjE3MjZmOGJiMTMxYzAxMmNhNTQyZWIyNGE4YWMwNzIwMDY4MmEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q0MjYzZGZjM2QyZGY5MjNhMDE3OWE0ODk2NmQzMGNlODRlMjUxNWFmYzNkY2NjMWI3NzkwNzc5MmViY2M2MGUnLFxuICAgICAgICAnNjJkZmFmMDdhMGY3OGZlYjMwZTMwZDYyOTU4NTNjZTE4OWUxMjc3NjBhZDZjZjdmYWUxNjRlMTIyYTIwOGQ1NCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDg0NTc1MjQ4MjBmYTY1YTRmOGQzNWViNjkzMDg1N2MwMDMyYWNjMGE0YTJkZTQyMjIzM2VlZGE4OTc2MTJjNCcsXG4gICAgICAgICcyNWE3NDhhYjM2Nzk3OWQ5ODczM2MzOGExZmExYzJlN2RjNmNjMDdkYjJkNjBhOWFlN2E3NmFhYTQ5YmQwZjc3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZmVlZWYxODgxMTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhJyxcbiAgICAgICAgJ2VjZmI3MDU2Y2YxZGUwNDJmOTQyMGJhYjM5Njc5M2MwYzM5MGJkZTc0YjRiYmRmZjE2YTgzYWUwOWE5YTc1MTcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzZkN2VmNmIxNzU0M2Y4MzczYzU3M2Y0NGUxZjM4OTgzNWQ4OWJjYmM2MDYyY2VkMzZjODJkZjgzYjhmYWU4NTknLFxuICAgICAgICAnY2Q0NTBlYzMzNTQzODk4NmRmZWZhMTBjNTdmZWE5YmNjNTIxYTA5NTliMmQ4MGJiZjc0YjE5MGRjYTcxMmQxMCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTc1NjA1ZDU5MTAyYTVhMjY4NDUwMGQzYjk5MWYyZTNmM2M4OGI5MzIyNTU0NzAzNWFmMjVhZjY2ZTA0NTQxZicsXG4gICAgICAgICdmNWM1NDc1NGE4ZjcxZWU1NDBiOWI0ODcyODQ3M2UzMTRmNzI5YWM1MzA4YjA2OTM4MzYwOTkwZTJiZmFkMTI1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJjOTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjJyxcbiAgICAgICAgJzZjYjlhODg3NmQ5Y2I4NTIwNjA5YWYzYWRkMjZjZDIwYTBhN2NkOGE5NDExMTMxY2U4NWY0NDEwMDA5OTIyM2UnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzEzZTg3YjAyN2Q4NTE0ZDM1OTM5ZjJlNjg5MmIxOTkyMjE1NDU5Njk0MTg4ODMzNmRjMzU2M2UzYjhkYmE5NDInLFxuICAgICAgICAnZmVmNWEzYzY4MDU5YTZkZWM1ZDYyNDExNGJmMWU5MWFhYzJiOWRhNTY4ZDZhYmViMjU3MGQ1NTY0NmI4YWRmMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWUxNjMwMjZlOWZkNmZlMDE3YzM4ZjA2YTViZTZmYzEyNTQyNGIzNzFjZTI3MDhlN2JmNDQ5MTY5MWU1NzY0YScsXG4gICAgICAgICcxYWNiMjUwZjI1NWRkNjFjNDNkOTRjY2M2NzBkMGY1OGY0OWFlM2ZhMTViOTY2MjNlNTQzMGRhMGFkNmM2MmIyJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiMjY4ZjVlZjlhZDUxZTRkNzhkZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwJyxcbiAgICAgICAgJzVmMzEwZDRiM2M5OWI5ZWJiMTlmNzdkNDFjMWRlZTAxOGNmMGQzNGZkNDE5MTYxNDAwM2U5NDVhMTIxNmU0MjMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZmMDdmMzExOGE5ZGYwMzVlOWZhZDg1ZWI2YzdiZmU0MmIwMmYwMWNhOTljZWVhM2JmN2ZmZGJhOTNjNDc1MGQnLFxuICAgICAgICAnNDM4MTM2ZDYwM2U4NThhM2E1YzQ0MGMzOGVjY2JhZGRjMWQyOTQyMTE0ZTJlZGRkNDc0MGQwOThjZWQxZjBkOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGQ4Yjk4NTVjN2MwNTJhMzQxNDZmZDIwZmZiNjU4YmVhNGI5ZjY5ZTBkODI1ZWJlYzE2ZThjM2NlMmI1MjZhMScsXG4gICAgICAgICdjZGI1NTllZWRjMmQ3OWY5MjZiYWY0NGZiODRlYTRkNDRiY2Y1MGZlZTUxZDdjZWIzMGUyZTdmNDYzMDM2NzU4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNlY2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzJyxcbiAgICAgICAgJ2MzYjk5N2QwNTBlZTVkNDIzZWJhZjY2YTZkYjlmNTdiMzE4MGM5MDI4NzU2NzlkZTkyNGI2OWQ4NGE3YjM3NScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTYyZjk0OTBkM2Q1MWRhNjM5NWVmZDI0ZTgwOTE5Y2M3ZDBmMjljM2YzZmE0OGM2ZmZmNTQzYmVjYmQ0MzM1MicsXG4gICAgICAgICc2ZDg5YWQ3YmE0ODc2YjBiMjJjMmNhMjgwYzY4Mjg2MmYzNDJjODU5MWYxZGFmNTE3MGUwN2JmZDljY2FmYTdkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3ZjMwZWEyNDc2YjM5OWI0OTU3NTA5Yzg4Zjc3ZDAxOTFhZmEyZmY1Y2I3YjE0ZmQ2ZDhlN2Q2NWFhYWIxMTkzJyxcbiAgICAgICAgJ2NhNWVmN2Q0YjIzMWM5NGMzYjE1Mzg5YTVmNjMxMWU5ZGFmZjdiYjY3YjEwM2U5ODgwZWY0YmZmNjM3YWNhZWMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDAnLFxuICAgICAgICAnOTczMTE0MWQ4MWZjOGY4MDg0ZDM3YzZlNzU0MjAwNmIzZWUxYjQwZDYwZGZlNTM2MmE1YjEzMmZkMTdkZGMwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMmI3OGM3ZGU5ZWU1MTJhNzI4OTViZTZiOWNiZWZhNmUyZjNjNGNjY2U0NDVjOTZiOWYyYzgxZTI3NzhhZDU4JyxcbiAgICAgICAgJ2VlMTg0OWY1MTNkZjcxZTMyZWZjMzg5NmVlMjgyNjBjNzNiYjgwNTQ3YWUyMjc1YmE0OTcyMzc3OTRjODc1M2MnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UyY2I3NGZkZGM4ZTlmYmNkMDc2ZWVmMmE3YzcyYjBjZTM3ZDUwZjA4MjY5ZGZjMDc0YjU4MTU1MDU0N2E0ZjcnLFxuICAgICAgICAnZDNhYTJlZDcxYzlkZDIyNDdhNjJkZjA2MjczNmViMGJhZGRlYTllMzYxMjJkMmJlODY0MWFiY2IwMDVjYzRhNCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJlMGQ5OWNkMTBhZTNhOCcsXG4gICAgICAgICdjNGUxMDIwOTE2OTgwYTRkYTVkMDFhYzVlNmFkMzMwNzM0ZWYwZDc5MDY2MzFjNGYyMzkwNDI2YjJlZGQ3OTFmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0MTYyZDQ4OGI4OTQwMjAzOWI1ODRjNmZjNmMzMDg4NzA1ODdkOWM0NmY2NjBiODc4YWI2NWM4MmM3MTFkNjdlJyxcbiAgICAgICAgJzY3MTYzZTkwMzIzNjI4OWY3NzZmMjJjMjVmYjhhM2FmYzE3MzJmMmI4NGI0ZTk1ZGJkYTQ3YWU1YTA4NTI2NDknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzNmYWQzZmE4NGNhZjBmMzRmMGY4OWJmZDJkY2Y1NGZjMTc1ZDc2N2FlYzNlNTA2ODRmM2JhNGE0YmY1ZjY4M2QnLFxuICAgICAgICAnY2QxYmM3Y2I2Y2M0MDdiYjJmMGNhNjQ3YzcxOGE3MzBjZjcxODcyZTdkMGQyYTUzZmEyMGVmY2RmZTYxODI2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiJyxcbiAgICAgICAgJzI5OWQyMWY5NDEzZjMzYjNlZGY0M2IyNTcwMDQ1ODBiNzBkYjU3ZGEwYjE4MjI1OWUwOWVlY2M2OWUwZDM4YTUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QzMmY0ZGE1NGFkZTc0YWJiODFiODE1YWQxZmIzYjI2M2Q4MmQ2YzY5MjcxNGJjZmY4N2QyOWJkNWVlOWYwOGYnLFxuICAgICAgICAnZjk0MjllNzM4YjhlNTNiOTY4ZTk5MDE2YzA1OTcwNzc4MmUxNGY0NTM1MzU5ZDU4MmZjNDE2OTEwYjNlZWE4NycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzBlNGU2NzA0MzUzODU1NTZlNTkzNjU3MTM1ODQ1ZDM2ZmJiNjkzMWY3MmIwOGNiMWVkOTU0ZjFlM2NlM2ZmNicsXG4gICAgICAgICc0NjJmOWJjZTYxOTg5ODYzODQ5OTM1MDExM2JiYzliMTBhODc4ZDM1ZGE3MDc0MGRjNjk1YTU1OWViODhkYjdiJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2FkMjk3JyxcbiAgICAgICAgJzYyMTg4YmM0OWQ2MWU1NDI4NTczZDQ4YTc0ZTFjNjU1YjFjNjEwOTA5MDU2ODJhMGQ1NTU4ZWQ3MmRjY2I5YmMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzkzMTQ0NDIzYWNlMzQ1MWVkMjllMGZiOWFjMmFmMjExY2I2ZTg0YTYwMWRmNTk5M2M0MTk4NTlmZmY1ZGYwNGEnLFxuICAgICAgICAnN2MxMGRmYjE2NGMzNDI1ZjVjNzFhM2Y5ZDc5OTIwMzhmMTA2NTIyNGY3MmJiOWQxZDkwMmE2ZDEzMDM3YjQ3YycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYjAxNWY4MDQ0ZjVmY2JkY2YyMWNhMjZkNmMzNGZiODE5NzgyOTIwNWM3YjdkMmE3Y2I2NjQxOGMxNTdiMTEyYycsXG4gICAgICAgICdhYjhjMWUwODZkMDRlODEzNzQ0YTY1NWIyZGY4ZDVmODNiM2NkYzZmYWEzMDg4YzFkM2FlYTE0NTRlM2ExZDVmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNmMmFmMzQxYTIxYjUyJyxcbiAgICAgICAgJzRjYjA0NDM3ZjM5MWVkNzMxMTFhMTNjYzFkNGRkMGRiMTY5MzQ2NWMyMjQwNDgwZDg5NTVlODU5MmYyNzQ0N2EnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QzYWU0MTA0N2RkN2NhMDY1ZGJmOGVkNzdiOTkyNDM5OTgzMDA1Y2Q3MmUxNmQ2Zjk5NmE1MzE2ZDM2OTY2YmInLFxuICAgICAgICAnYmQxYWViMjFhZDIyZWJiMjJhMTBmMDMwMzQxN2M2ZDk2NGY4Y2RkN2RmMGFjYTYxNGIxMGRjMTRkMTI1YWM0NicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDYzZTI3NjNkODg1Zjk1OGZjNjZjZGQyMjgwMGYwYTQ4NzE5N2QwYTgyZTM3N2I0OWY4MGFmODdjODk3YjA2NScsXG4gICAgICAgICdiZmVmYWNkYjBlNWQwZmQ3ZGYzYTMxMWE5NGRlMDYyYjI2YjgwYzYxZmJjOTc1MDhiNzk5OTI2NzFlZjdjYTdmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3JyxcbiAgICAgICAgJzYwM2MxMmRhZjNkOTg2MmVmMmIyNWZlMWRlMjg5YWVkMjRlZDI5MWUwZWM2NzA4NzAzYTViZDU2N2YzMmVkMDMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc0YTFhZDZiNWY3NmUzOWRiMmRkMjQ5NDEwZWFjN2Y5OWU3NGM1OWNiODNkMmQwZWQ1ZmYxNTQzZGE3NzAzZTknLFxuICAgICAgICAnY2M2MTU3ZWYxOGM5YzYzY2Q2MTkzZDgzNjMxYmJlYTAwOTNlMDk2ODk0MmU4YzMzZDU3MzdmZDc5MGUwZGIwOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzA2ODJhNTA3MDMzNzVmNjAyZDQxNjY2NGJhMTliN2ZjOWJhYjQyYzcyNzQ3NDYzYTcxZDA4OTZiMjJmNmRhMycsXG4gICAgICAgICc1NTNlMDRmNmIwMThiNGZhNmM4ZjM5ZTdmMzExZDMxNzYyOTBkMGUwZjE5Y2E3M2YxNzcxNGQ5OTc3YTIyZmY4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3NjllZjU3JyxcbiAgICAgICAgJzcxMmZjZGQxYjkwNTNmMDkwMDNhMzQ4MWZhNzc2MmU5ZmZkN2M4ZWYzNWEzODUwOWUyZmJmMjYyOTAwODM3MycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTc2ZTI2OTg5YTQzYzljZmViYTQwMjljMjAyNTM4YzI4MTcyZTU2NmUzYzRmY2U3MzIyODU3ZjNiZTMyN2Q2NicsXG4gICAgICAgICdlZDhjYzlkMDRiMjllYjg3N2QyNzBiNDg3OGRjNDNjMTlhZWZkMzFmNGVlZTA5ZWU3YjQ3ODM0YzFmYTRiMWMzJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NWQ0NmVmZWEzNzcxZTZlNjhhYmI4OWExM2FkNzQ3ZWNmMTg5MjM5M2RmYzRmMWI3MDA0Nzg4YzUwMzc0ZGE4JyxcbiAgICAgICAgJzk4NTIzOTBhOTk1MDc2NzlmZDBiODZmZDJiMzlhODY4ZDdlZmMyMjE1MTM0NmUxYTNjYTQ3MjY1ODZhNmJlZDgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjEnLFxuICAgICAgICAnOWU5OTQ5ODBkOTkxN2UyMmI3NmIwNjE5MjdmYTA0MTQzZDA5NmNjYzU0OTYzZTZhNWViZmE1ZjNmOGUyODZjMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMWIzODkwM2E0M2Y3ZjExNGVkNDUwMGI0ZWFjNzA4M2ZkZWZlY2UxY2YyOWM2MzUyOGQ1NjM0NDZmOTcyYzE4MCcsXG4gICAgICAgICc0MDM2ZWRjOTMxYTYwYWU4ODkzNTNmNzdmZDUzZGU0YTI3MDhiMjZiNmY1ZGE3MmFkMzM5NDExOWRhZjQwOGY5JyxcbiAgICAgIF0sXG4gICAgXSxcbiAgfSxcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IGV4cG9ydHM7XG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIG1pbkFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBtaW5VdGlscyA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHMnKTtcblxudXRpbHMuYXNzZXJ0ID0gbWluQXNzZXJ0O1xudXRpbHMudG9BcnJheSA9IG1pblV0aWxzLnRvQXJyYXk7XG51dGlscy56ZXJvMiA9IG1pblV0aWxzLnplcm8yO1xudXRpbHMudG9IZXggPSBtaW5VdGlscy50b0hleDtcbnV0aWxzLmVuY29kZSA9IG1pblV0aWxzLmVuY29kZTtcblxuLy8gUmVwcmVzZW50IG51bSBpbiBhIHctTkFGIGZvcm1cbmZ1bmN0aW9uIGdldE5BRihudW0sIHcsIGJpdHMpIHtcbiAgdmFyIG5hZiA9IG5ldyBBcnJheShNYXRoLm1heChudW0uYml0TGVuZ3RoKCksIGJpdHMpICsgMSk7XG4gIG5hZi5maWxsKDApO1xuXG4gIHZhciB3cyA9IDEgPDwgKHcgKyAxKTtcbiAgdmFyIGsgPSBudW0uY2xvbmUoKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5hZi5sZW5ndGg7IGkrKykge1xuICAgIHZhciB6O1xuICAgIHZhciBtb2QgPSBrLmFuZGxuKHdzIC0gMSk7XG4gICAgaWYgKGsuaXNPZGQoKSkge1xuICAgICAgaWYgKG1vZCA+ICh3cyA+PiAxKSAtIDEpXG4gICAgICAgIHogPSAod3MgPj4gMSkgLSBtb2Q7XG4gICAgICBlbHNlXG4gICAgICAgIHogPSBtb2Q7XG4gICAgICBrLmlzdWJuKHopO1xuICAgIH0gZWxzZSB7XG4gICAgICB6ID0gMDtcbiAgICB9XG5cbiAgICBuYWZbaV0gPSB6O1xuICAgIGsuaXVzaHJuKDEpO1xuICB9XG5cbiAgcmV0dXJuIG5hZjtcbn1cbnV0aWxzLmdldE5BRiA9IGdldE5BRjtcblxuLy8gUmVwcmVzZW50IGsxLCBrMiBpbiBhIEpvaW50IFNwYXJzZSBGb3JtXG5mdW5jdGlvbiBnZXRKU0YoazEsIGsyKSB7XG4gIHZhciBqc2YgPSBbXG4gICAgW10sXG4gICAgW10sXG4gIF07XG5cbiAgazEgPSBrMS5jbG9uZSgpO1xuICBrMiA9IGsyLmNsb25lKCk7XG4gIHZhciBkMSA9IDA7XG4gIHZhciBkMiA9IDA7XG4gIHZhciBtODtcbiAgd2hpbGUgKGsxLmNtcG4oLWQxKSA+IDAgfHwgazIuY21wbigtZDIpID4gMCkge1xuICAgIC8vIEZpcnN0IHBoYXNlXG4gICAgdmFyIG0xNCA9IChrMS5hbmRsbigzKSArIGQxKSAmIDM7XG4gICAgdmFyIG0yNCA9IChrMi5hbmRsbigzKSArIGQyKSAmIDM7XG4gICAgaWYgKG0xNCA9PT0gMylcbiAgICAgIG0xNCA9IC0xO1xuICAgIGlmIChtMjQgPT09IDMpXG4gICAgICBtMjQgPSAtMTtcbiAgICB2YXIgdTE7XG4gICAgaWYgKChtMTQgJiAxKSA9PT0gMCkge1xuICAgICAgdTEgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBtOCA9IChrMS5hbmRsbig3KSArIGQxKSAmIDc7XG4gICAgICBpZiAoKG04ID09PSAzIHx8IG04ID09PSA1KSAmJiBtMjQgPT09IDIpXG4gICAgICAgIHUxID0gLW0xNDtcbiAgICAgIGVsc2VcbiAgICAgICAgdTEgPSBtMTQ7XG4gICAgfVxuICAgIGpzZlswXS5wdXNoKHUxKTtcblxuICAgIHZhciB1MjtcbiAgICBpZiAoKG0yNCAmIDEpID09PSAwKSB7XG4gICAgICB1MiA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG04ID0gKGsyLmFuZGxuKDcpICsgZDIpICYgNztcbiAgICAgIGlmICgobTggPT09IDMgfHwgbTggPT09IDUpICYmIG0xNCA9PT0gMilcbiAgICAgICAgdTIgPSAtbTI0O1xuICAgICAgZWxzZVxuICAgICAgICB1MiA9IG0yNDtcbiAgICB9XG4gICAganNmWzFdLnB1c2godTIpO1xuXG4gICAgLy8gU2Vjb25kIHBoYXNlXG4gICAgaWYgKDIgKiBkMSA9PT0gdTEgKyAxKVxuICAgICAgZDEgPSAxIC0gZDE7XG4gICAgaWYgKDIgKiBkMiA9PT0gdTIgKyAxKVxuICAgICAgZDIgPSAxIC0gZDI7XG4gICAgazEuaXVzaHJuKDEpO1xuICAgIGsyLml1c2hybigxKTtcbiAgfVxuXG4gIHJldHVybiBqc2Y7XG59XG51dGlscy5nZXRKU0YgPSBnZXRKU0Y7XG5cbmZ1bmN0aW9uIGNhY2hlZFByb3BlcnR5KG9iaiwgbmFtZSwgY29tcHV0ZXIpIHtcbiAgdmFyIGtleSA9ICdfJyArIG5hbWU7XG4gIG9iai5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiBjYWNoZWRQcm9wZXJ0eSgpIHtcbiAgICByZXR1cm4gdGhpc1trZXldICE9PSB1bmRlZmluZWQgPyB0aGlzW2tleV0gOlxuICAgICAgdGhpc1trZXldID0gY29tcHV0ZXIuY2FsbCh0aGlzKTtcbiAgfTtcbn1cbnV0aWxzLmNhY2hlZFByb3BlcnR5ID0gY2FjaGVkUHJvcGVydHk7XG5cbmZ1bmN0aW9uIHBhcnNlQnl0ZXMoYnl0ZXMpIHtcbiAgcmV0dXJuIHR5cGVvZiBieXRlcyA9PT0gJ3N0cmluZycgPyB1dGlscy50b0FycmF5KGJ5dGVzLCAnaGV4JykgOlxuICAgIGJ5dGVzO1xufVxudXRpbHMucGFyc2VCeXRlcyA9IHBhcnNlQnl0ZXM7XG5cbmZ1bmN0aW9uIGludEZyb21MRShieXRlcykge1xuICByZXR1cm4gbmV3IEJOKGJ5dGVzLCAnaGV4JywgJ2xlJyk7XG59XG51dGlscy5pbnRGcm9tTEUgPSBpbnRGcm9tTEU7XG5cbiIsIihmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBVdGlsc1xuICBmdW5jdGlvbiBhc3NlcnQgKHZhbCwgbXNnKSB7XG4gICAgaWYgKCF2YWwpIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbiAgfVxuXG4gIC8vIENvdWxkIHVzZSBgaW5oZXJpdHNgIG1vZHVsZSwgYnV0IGRvbid0IHdhbnQgdG8gbW92ZSBmcm9tIHNpbmdsZSBmaWxlXG4gIC8vIGFyY2hpdGVjdHVyZSB5ZXQuXG4gIGZ1bmN0aW9uIGluaGVyaXRzIChjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvcjtcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlO1xuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKCk7XG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yO1xuICB9XG5cbiAgLy8gQk5cblxuICBmdW5jdGlvbiBCTiAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAoQk4uaXNCTihudW1iZXIpKSB7XG4gICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cblxuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIHRoaXMud29yZHMgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcblxuICAgIC8vIFJlZHVjdGlvbiBjb250ZXh0XG4gICAgdGhpcy5yZWQgPSBudWxsO1xuXG4gICAgaWYgKG51bWJlciAhPT0gbnVsbCkge1xuICAgICAgaWYgKGJhc2UgPT09ICdsZScgfHwgYmFzZSA9PT0gJ2JlJykge1xuICAgICAgICBlbmRpYW4gPSBiYXNlO1xuICAgICAgICBiYXNlID0gMTA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2luaXQobnVtYmVyIHx8IDAsIGJhc2UgfHwgMTAsIGVuZGlhbiB8fCAnYmUnKTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBCTjtcbiAgfSBlbHNlIHtcbiAgICBleHBvcnRzLkJOID0gQk47XG4gIH1cblxuICBCTi5CTiA9IEJOO1xuICBCTi53b3JkU2l6ZSA9IDI2O1xuXG4gIHZhciBCdWZmZXI7XG4gIHRyeSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuQnVmZmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgQnVmZmVyID0gd2luZG93LkJ1ZmZlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICB9XG5cbiAgQk4uaXNCTiA9IGZ1bmN0aW9uIGlzQk4gKG51bSkge1xuICAgIGlmIChudW0gaW5zdGFuY2VvZiBCTikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bSAhPT0gbnVsbCAmJiB0eXBlb2YgbnVtID09PSAnb2JqZWN0JyAmJlxuICAgICAgbnVtLmNvbnN0cnVjdG9yLndvcmRTaXplID09PSBCTi53b3JkU2l6ZSAmJiBBcnJheS5pc0FycmF5KG51bS53b3Jkcyk7XG4gIH07XG5cbiAgQk4ubWF4ID0gZnVuY3Rpb24gbWF4IChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPiAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ubWluID0gZnVuY3Rpb24gbWluIChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPCAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdCAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0TnVtYmVyKG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0QXJyYXkobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAnaGV4Jykge1xuICAgICAgYmFzZSA9IDE2O1xuICAgIH1cbiAgICBhc3NlcnQoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNik7XG5cbiAgICBudW1iZXIgPSBudW1iZXIudG9TdHJpbmcoKS5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGlmIChudW1iZXJbMF0gPT09ICctJykge1xuICAgICAgc3RhcnQrKztcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA8IG51bWJlci5sZW5ndGgpIHtcbiAgICAgIGlmIChiYXNlID09PSAxNikge1xuICAgICAgICB0aGlzLl9wYXJzZUhleChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcGFyc2VCYXNlKG51bWJlciwgYmFzZSwgc3RhcnQpO1xuICAgICAgICBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICAgICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdE51bWJlciA9IGZ1bmN0aW9uIF9pbml0TnVtYmVyIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIG51bWJlciA9IC1udW1iZXI7XG4gICAgfVxuICAgIGlmIChudW1iZXIgPCAweDQwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIG51bWJlciAmIDB4M2ZmZmZmZiBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMHgxMDAwMDAwMDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZlxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG51bWJlciA8IDB4MjAwMDAwMDAwMDAwMDApOyAvLyAyIF4gNTMgKHVuc2FmZSlcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmYsXG4gICAgICAgIDFcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDM7XG4gICAgfVxuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgLy8gUmV2ZXJzZSB0aGUgYnl0ZXNcbiAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0QXJyYXkgPSBmdW5jdGlvbiBfaW5pdEFycmF5IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIC8vIFBlcmhhcHMgYSBVaW50OEFycmF5XG4gICAgYXNzZXJ0KHR5cGVvZiBudW1iZXIubGVuZ3RoID09PSAnbnVtYmVyJyk7XG4gICAgaWYgKG51bWJlci5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwobnVtYmVyLmxlbmd0aCAvIDMpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGosIHc7XG4gICAgdmFyIG9mZiA9IDA7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDEsIGogPSAwOyBpID49IDA7IGkgLT0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpIC0gMV0gPDwgOCkgfCAobnVtYmVyW2kgLSAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSArIDFdIDw8IDgpIHwgKG51bWJlcltpICsgMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXg0Qml0cyAoc3RyaW5nLCBpbmRleCkge1xuICAgIHZhciBjID0gc3RyaW5nLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgIC8vICdBJyAtICdGJ1xuICAgIGlmIChjID49IDY1ICYmIGMgPD0gNzApIHtcbiAgICAgIHJldHVybiBjIC0gNTU7XG4gICAgLy8gJ2EnIC0gJ2YnXG4gICAgfSBlbHNlIGlmIChjID49IDk3ICYmIGMgPD0gMTAyKSB7XG4gICAgICByZXR1cm4gYyAtIDg3O1xuICAgIC8vICcwJyAtICc5J1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKGMgLSA0OCkgJiAweGY7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXhCeXRlIChzdHJpbmcsIGxvd2VyQm91bmQsIGluZGV4KSB7XG4gICAgdmFyIHIgPSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXgpO1xuICAgIGlmIChpbmRleCAtIDEgPj0gbG93ZXJCb3VuZCkge1xuICAgICAgciB8PSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXggLSAxKSA8PCA0O1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VIZXggPSBmdW5jdGlvbiBfcGFyc2VIZXggKG51bWJlciwgc3RhcnQsIGVuZGlhbikge1xuICAgIC8vIENyZWF0ZSBwb3NzaWJseSBiaWdnZXIgYXJyYXkgdG8gZW5zdXJlIHRoYXQgaXQgZml0cyB0aGUgbnVtYmVyXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwoKG51bWJlci5sZW5ndGggLSBzdGFydCkgLyA2KTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIC8vIDI0LWJpdHMgY2h1bmtzXG4gICAgdmFyIG9mZiA9IDA7XG4gICAgdmFyIGogPSAwO1xuXG4gICAgdmFyIHc7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IGkgLT0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYXJzZUxlbmd0aCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICAgIGZvciAoaSA9IHBhcnNlTGVuZ3RoICUgMiA9PT0gMCA/IHN0YXJ0ICsgMSA6IHN0YXJ0OyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VCYXNlIChzdHIsIHN0YXJ0LCBlbmQsIG11bCkge1xuICAgIHZhciByID0gMDtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oc3RyLmxlbmd0aCwgZW5kKTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKSAtIDQ4O1xuXG4gICAgICByICo9IG11bDtcblxuICAgICAgLy8gJ2EnXG4gICAgICBpZiAoYyA+PSA0OSkge1xuICAgICAgICByICs9IGMgLSA0OSArIDB4YTtcblxuICAgICAgLy8gJ0EnXG4gICAgICB9IGVsc2UgaWYgKGMgPj0gMTcpIHtcbiAgICAgICAgciArPSBjIC0gMTcgKyAweGE7XG5cbiAgICAgIC8vICcwJyAtICc5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgciArPSBjO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VCYXNlID0gZnVuY3Rpb24gX3BhcnNlQmFzZSAobnVtYmVyLCBiYXNlLCBzdGFydCkge1xuICAgIC8vIEluaXRpYWxpemUgYXMgemVyb1xuICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICB0aGlzLmxlbmd0aCA9IDE7XG5cbiAgICAvLyBGaW5kIGxlbmd0aCBvZiBsaW1iIGluIGJhc2VcbiAgICBmb3IgKHZhciBsaW1iTGVuID0gMCwgbGltYlBvdyA9IDE7IGxpbWJQb3cgPD0gMHgzZmZmZmZmOyBsaW1iUG93ICo9IGJhc2UpIHtcbiAgICAgIGxpbWJMZW4rKztcbiAgICB9XG4gICAgbGltYkxlbi0tO1xuICAgIGxpbWJQb3cgPSAobGltYlBvdyAvIGJhc2UpIHwgMDtcblxuICAgIHZhciB0b3RhbCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICB2YXIgbW9kID0gdG90YWwgJSBsaW1iTGVuO1xuICAgIHZhciBlbmQgPSBNYXRoLm1pbih0b3RhbCwgdG90YWwgLSBtb2QpICsgc3RhcnQ7XG5cbiAgICB2YXIgd29yZCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpICs9IGxpbWJMZW4pIHtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBpICsgbGltYkxlbiwgYmFzZSk7XG5cbiAgICAgIHRoaXMuaW11bG4obGltYlBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZCAhPT0gMCkge1xuICAgICAgdmFyIHBvdyA9IDE7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgbnVtYmVyLmxlbmd0aCwgYmFzZSk7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBtb2Q7IGkrKykge1xuICAgICAgICBwb3cgKj0gYmFzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pbXVsbihwb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKGRlc3QpIHtcbiAgICBkZXN0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlc3Qud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgIH1cbiAgICBkZXN0Lmxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIGRlc3QubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIGRlc3QucmVkID0gdGhpcy5yZWQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUgKCkge1xuICAgIHZhciByID0gbmV3IEJOKG51bGwpO1xuICAgIHRoaXMuY29weShyKTtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2V4cGFuZCA9IGZ1bmN0aW9uIF9leHBhbmQgKHNpemUpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBzaXplKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gUmVtb3ZlIGxlYWRpbmcgYDBgIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdHJpcCA9IGZ1bmN0aW9uIHN0cmlwICgpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPiAxICYmIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9ub3JtU2lnbiA9IGZ1bmN0aW9uIF9ub3JtU2lnbiAoKSB7XG4gICAgLy8gLTAgPSAwXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICAgIHJldHVybiAodGhpcy5yZWQgPyAnPEJOLVI6ICcgOiAnPEJOOiAnKSArIHRoaXMudG9TdHJpbmcoMTYpICsgJz4nO1xuICB9O1xuXG4gIC8qXG5cbiAgdmFyIHplcm9zID0gW107XG4gIHZhciBncm91cFNpemVzID0gW107XG4gIHZhciBncm91cEJhc2VzID0gW107XG5cbiAgdmFyIHMgPSAnJztcbiAgdmFyIGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IEJOLndvcmRTaXplKSB7XG4gICAgemVyb3NbaV0gPSBzO1xuICAgIHMgKz0gJzAnO1xuICB9XG4gIGdyb3VwU2l6ZXNbMF0gPSAwO1xuICBncm91cFNpemVzWzFdID0gMDtcbiAgZ3JvdXBCYXNlc1swXSA9IDA7XG4gIGdyb3VwQmFzZXNbMV0gPSAwO1xuICB2YXIgYmFzZSA9IDIgLSAxO1xuICB3aGlsZSAoKytiYXNlIDwgMzYgKyAxKSB7XG4gICAgdmFyIGdyb3VwU2l6ZSA9IDA7XG4gICAgdmFyIGdyb3VwQmFzZSA9IDE7XG4gICAgd2hpbGUgKGdyb3VwQmFzZSA8ICgxIDw8IEJOLndvcmRTaXplKSAvIGJhc2UpIHtcbiAgICAgIGdyb3VwQmFzZSAqPSBiYXNlO1xuICAgICAgZ3JvdXBTaXplICs9IDE7XG4gICAgfVxuICAgIGdyb3VwU2l6ZXNbYmFzZV0gPSBncm91cFNpemU7XG4gICAgZ3JvdXBCYXNlc1tiYXNlXSA9IGdyb3VwQmFzZTtcbiAgfVxuXG4gICovXG5cbiAgdmFyIHplcm9zID0gW1xuICAgICcnLFxuICAgICcwJyxcbiAgICAnMDAnLFxuICAgICcwMDAnLFxuICAgICcwMDAwJyxcbiAgICAnMDAwMDAnLFxuICAgICcwMDAwMDAnLFxuICAgICcwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJ1xuICBdO1xuXG4gIHZhciBncm91cFNpemVzID0gW1xuICAgIDAsIDAsXG4gICAgMjUsIDE2LCAxMiwgMTEsIDEwLCA5LCA4LFxuICAgIDgsIDcsIDcsIDcsIDcsIDYsIDYsXG4gICAgNiwgNiwgNiwgNiwgNiwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDVcbiAgXTtcblxuICB2YXIgZ3JvdXBCYXNlcyA9IFtcbiAgICAwLCAwLFxuICAgIDMzNTU0NDMyLCA0MzA0NjcyMSwgMTY3NzcyMTYsIDQ4ODI4MTI1LCA2MDQ2NjE3NiwgNDAzNTM2MDcsIDE2Nzc3MjE2LFxuICAgIDQzMDQ2NzIxLCAxMDAwMDAwMCwgMTk0ODcxNzEsIDM1ODMxODA4LCA2Mjc0ODUxNywgNzUyOTUzNiwgMTEzOTA2MjUsXG4gICAgMTY3NzcyMTYsIDI0MTM3NTY5LCAzNDAxMjIyNCwgNDcwNDU4ODEsIDY0MDAwMDAwLCA0MDg0MTAxLCA1MTUzNjMyLFxuICAgIDY0MzYzNDMsIDc5NjI2MjQsIDk3NjU2MjUsIDExODgxMzc2LCAxNDM0ODkwNywgMTcyMTAzNjgsIDIwNTExMTQ5LFxuICAgIDI0MzAwMDAwLCAyODYyOTE1MSwgMzM1NTQ0MzIsIDM5MTM1MzkzLCA0NTQzNTQyNCwgNTI1MjE4NzUsIDYwNDY2MTc2XG4gIF07XG5cbiAgQk4ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKGJhc2UsIHBhZGRpbmcpIHtcbiAgICBiYXNlID0gYmFzZSB8fCAxMDtcbiAgICBwYWRkaW5nID0gcGFkZGluZyB8IDAgfHwgMTtcblxuICAgIHZhciBvdXQ7XG4gICAgaWYgKGJhc2UgPT09IDE2IHx8IGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBvZmYgPSAwO1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV07XG4gICAgICAgIHZhciB3b3JkID0gKCgodyA8PCBvZmYpIHwgY2FycnkpICYgMHhmZmZmZmYpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgY2FycnkgPSAodyA+Pj4gKDI0IC0gb2ZmKSkgJiAweGZmZmZmZjtcbiAgICAgICAgaWYgKGNhcnJ5ICE9PSAwIHx8IGkgIT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIG91dCA9IHplcm9zWzYgLSB3b3JkLmxlbmd0aF0gKyB3b3JkICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHdvcmQgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgb2ZmICs9IDI7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgICAgb3V0ID0gY2FycnkudG9TdHJpbmcoMTYpICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpIHtcbiAgICAgIC8vIHZhciBncm91cFNpemUgPSBNYXRoLmZsb29yKEJOLndvcmRTaXplICogTWF0aC5MTjIgLyBNYXRoLmxvZyhiYXNlKSk7XG4gICAgICB2YXIgZ3JvdXBTaXplID0gZ3JvdXBTaXplc1tiYXNlXTtcbiAgICAgIC8vIHZhciBncm91cEJhc2UgPSBNYXRoLnBvdyhiYXNlLCBncm91cFNpemUpO1xuICAgICAgdmFyIGdyb3VwQmFzZSA9IGdyb3VwQmFzZXNbYmFzZV07XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBjID0gdGhpcy5jbG9uZSgpO1xuICAgICAgYy5uZWdhdGl2ZSA9IDA7XG4gICAgICB3aGlsZSAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgdmFyIHIgPSBjLm1vZG4oZ3JvdXBCYXNlKS50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgYyA9IGMuaWRpdm4oZ3JvdXBCYXNlKTtcblxuICAgICAgICBpZiAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1tncm91cFNpemUgLSByLmxlbmd0aF0gKyByICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHIgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGFzc2VydChmYWxzZSwgJ0Jhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYnKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9OdW1iZXIgPSBmdW5jdGlvbiB0b051bWJlciAoKSB7XG4gICAgdmFyIHJldCA9IHRoaXMud29yZHNbMF07XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAyKSB7XG4gICAgICByZXQgKz0gdGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMDtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID09PSAzICYmIHRoaXMud29yZHNbMl0gPT09IDB4MDEpIHtcbiAgICAgIC8vIE5PVEU6IGF0IHRoaXMgc3RhZ2UgaXQgaXMga25vd24gdGhhdCB0aGUgdG9wIGJpdCBpcyBzZXRcbiAgICAgIHJldCArPSAweDEwMDAwMDAwMDAwMDAwICsgKHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiAyKSB7XG4gICAgICBhc3NlcnQoZmFsc2UsICdOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMnKTtcbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLm5lZ2F0aXZlICE9PSAwKSA/IC1yZXQgOiByZXQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0J1ZmZlciA9IGZ1bmN0aW9uIHRvQnVmZmVyIChlbmRpYW4sIGxlbmd0aCkge1xuICAgIGFzc2VydCh0eXBlb2YgQnVmZmVyICE9PSAndW5kZWZpbmVkJyk7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQnVmZmVyLCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiB0b0FycmF5IChlbmRpYW4sIGxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXlMaWtlID0gZnVuY3Rpb24gdG9BcnJheUxpa2UgKEFycmF5VHlwZSwgZW5kaWFuLCBsZW5ndGgpIHtcbiAgICB2YXIgYnl0ZUxlbmd0aCA9IHRoaXMuYnl0ZUxlbmd0aCgpO1xuICAgIHZhciByZXFMZW5ndGggPSBsZW5ndGggfHwgTWF0aC5tYXgoMSwgYnl0ZUxlbmd0aCk7XG4gICAgYXNzZXJ0KGJ5dGVMZW5ndGggPD0gcmVxTGVuZ3RoLCAnYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCcpO1xuICAgIGFzc2VydChyZXFMZW5ndGggPiAwLCAnUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwJyk7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gICAgdmFyIGxpdHRsZUVuZGlhbiA9IGVuZGlhbiA9PT0gJ2xlJztcbiAgICB2YXIgcmVzID0gbmV3IEFycmF5VHlwZShyZXFMZW5ndGgpO1xuXG4gICAgdmFyIGIsIGk7XG4gICAgdmFyIHEgPSB0aGlzLmNsb25lKCk7XG4gICAgaWYgKCFsaXR0bGVFbmRpYW4pIHtcbiAgICAgIC8vIEFzc3VtZSBiaWctZW5kaWFuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgcmVxTGVuZ3RoIC0gYnl0ZUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tyZXFMZW5ndGggLSBpIC0gMV0gPSBiO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbaV0gPSBiO1xuICAgICAgfVxuXG4gICAgICBmb3IgKDsgaSA8IHJlcUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBpZiAoTWF0aC5jbHozMikge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgcmV0dXJuIDMyIC0gTWF0aC5jbHozMih3KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgdmFyIHQgPSB3O1xuICAgICAgdmFyIHIgPSAwO1xuICAgICAgaWYgKHQgPj0gMHgxMDAwKSB7XG4gICAgICAgIHIgKz0gMTM7XG4gICAgICAgIHQgPj4+PSAxMztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4NDApIHtcbiAgICAgICAgciArPSA3O1xuICAgICAgICB0ID4+Pj0gNztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4OCkge1xuICAgICAgICByICs9IDQ7XG4gICAgICAgIHQgPj4+PSA0O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHgwMikge1xuICAgICAgICByICs9IDI7XG4gICAgICAgIHQgPj4+PSAyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHIgKyB0O1xuICAgIH07XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3plcm9CaXRzID0gZnVuY3Rpb24gX3plcm9CaXRzICh3KSB7XG4gICAgLy8gU2hvcnQtY3V0XG4gICAgaWYgKHcgPT09IDApIHJldHVybiAyNjtcblxuICAgIHZhciB0ID0gdztcbiAgICB2YXIgciA9IDA7XG4gICAgaWYgKCh0ICYgMHgxZmZmKSA9PT0gMCkge1xuICAgICAgciArPSAxMztcbiAgICAgIHQgPj4+PSAxMztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHg3ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNztcbiAgICAgIHQgPj4+PSA3O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweGYpID09PSAwKSB7XG4gICAgICByICs9IDQ7XG4gICAgICB0ID4+Pj0gNDtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgzKSA9PT0gMCkge1xuICAgICAgciArPSAyO1xuICAgICAgdCA+Pj49IDI7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MSkgPT09IDApIHtcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG51bWJlciBvZiB1c2VkIGJpdHMgaW4gYSBCTlxuICBCTi5wcm90b3R5cGUuYml0TGVuZ3RoID0gZnVuY3Rpb24gYml0TGVuZ3RoICgpIHtcbiAgICB2YXIgdyA9IHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXTtcbiAgICB2YXIgaGkgPSB0aGlzLl9jb3VudEJpdHModyk7XG4gICAgcmV0dXJuICh0aGlzLmxlbmd0aCAtIDEpICogMjYgKyBoaTtcbiAgfTtcblxuICBmdW5jdGlvbiB0b0JpdEFycmF5IChudW0pIHtcbiAgICB2YXIgdyA9IG5ldyBBcnJheShudW0uYml0TGVuZ3RoKCkpO1xuXG4gICAgZm9yICh2YXIgYml0ID0gMDsgYml0IDwgdy5sZW5ndGg7IGJpdCsrKSB7XG4gICAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgICB3W2JpdF0gPSAobnVtLndvcmRzW29mZl0gJiAoMSA8PCB3Yml0KSkgPj4+IHdiaXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHc7XG4gIH1cblxuICAvLyBOdW1iZXIgb2YgdHJhaWxpbmcgemVybyBiaXRzXG4gIEJOLnByb3RvdHlwZS56ZXJvQml0cyA9IGZ1bmN0aW9uIHplcm9CaXRzICgpIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIDA7XG5cbiAgICB2YXIgciA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYiA9IHRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbaV0pO1xuICAgICAgciArPSBiO1xuICAgICAgaWYgKGIgIT09IDI2KSBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmJ5dGVMZW5ndGggPSBmdW5jdGlvbiBieXRlTGVuZ3RoICgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkgLyA4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9Ud29zID0gZnVuY3Rpb24gdG9Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5hYnMoKS5pbm90bih3aWR0aCkuaWFkZG4oMSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21Ud29zID0gZnVuY3Rpb24gZnJvbVR3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMudGVzdG4od2lkdGggLSAxKSkge1xuICAgICAgcmV0dXJuIHRoaXMubm90bih3aWR0aCkuaWFkZG4oMSkuaW5lZygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uIGlzTmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZSAhPT0gMDtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5lZygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbmVnID0gZnVuY3Rpb24gaW5lZyAoKSB7XG4gICAgaWYgKCF0aGlzLmlzWmVybygpKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1b3IgPSBmdW5jdGlvbiBpdW9yIChudW0pIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gfCBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW9yID0gZnVuY3Rpb24gaW9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdW9yKG51bSk7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gb3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW9yID0gZnVuY3Rpb24gdW9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVvcih0aGlzKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1YW5kID0gZnVuY3Rpb24gaXVhbmQgKG51bSkge1xuICAgIC8vIGIgPSBtaW4tbGVuZ3RoKG51bSwgdGhpcylcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldICYgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYi5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYW5kID0gZnVuY3Rpb24gaWFuZCAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVhbmQobnVtKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIGFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhbmQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVhbmQgPSBmdW5jdGlvbiB1YW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1YW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1YW5kKHRoaXMpO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXV4b3IgPSBmdW5jdGlvbiBpdXhvciAobnVtKSB7XG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhO1xuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV0gXiBiLndvcmRzW2ldO1xuICAgIH1cblxuICAgIGlmICh0aGlzICE9PSBhKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLml4b3IgPSBmdW5jdGlvbiBpeG9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXhvcihudW0pO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24geG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXhvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXhvciA9IGZ1bmN0aW9uIHV4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXV4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXV4b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gTm90IGBgdGhpc2BgIHdpdGggYGB3aWR0aGBgIGJpdHdpZHRoXG4gIEJOLnByb3RvdHlwZS5pbm90biA9IGZ1bmN0aW9uIGlub3RuICh3aWR0aCkge1xuICAgIGFzc2VydCh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInICYmIHdpZHRoID49IDApO1xuXG4gICAgdmFyIGJ5dGVzTmVlZGVkID0gTWF0aC5jZWlsKHdpZHRoIC8gMjYpIHwgMDtcbiAgICB2YXIgYml0c0xlZnQgPSB3aWR0aCAlIDI2O1xuXG4gICAgLy8gRXh0ZW5kIHRoZSBidWZmZXIgd2l0aCBsZWFkaW5nIHplcm9lc1xuICAgIHRoaXMuX2V4cGFuZChieXRlc05lZWRlZCk7XG5cbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICBieXRlc05lZWRlZC0tO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBjb21wbGV0ZSB3b3Jkc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXNOZWVkZWQ7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgcmVzaWR1ZVxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmICgweDNmZmZmZmYgPj4gKDI2IC0gYml0c0xlZnQpKTtcbiAgICB9XG5cbiAgICAvLyBBbmQgcmVtb3ZlIGxlYWRpbmcgemVyb2VzXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubm90biA9IGZ1bmN0aW9uIG5vdG4gKHdpZHRoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bih3aWR0aCk7XG4gIH07XG5cbiAgLy8gU2V0IGBiaXRgIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc2V0biA9IGZ1bmN0aW9uIHNldG4gKGJpdCwgdmFsKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcblxuICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgdGhpcy5fZXhwYW5kKG9mZiArIDEpO1xuXG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdIHwgKDEgPDwgd2JpdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSAmIH4oMSA8PCB3Yml0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChudW0pIHtcbiAgICB2YXIgcjtcblxuICAgIC8vIG5lZ2F0aXZlICsgcG9zaXRpdmVcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG5cbiAgICAvLyBwb3NpdGl2ZSArIG5lZ2F0aXZlXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGhdID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIC8vIENvcHkgdGhlIHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgfSBlbHNlIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChudW0pIHtcbiAgICB2YXIgcmVzO1xuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDAgJiYgdGhpcy5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IHRoaXMuc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIGlmIChudW0ubmVnYXRpdmUgPT09IDAgJiYgdGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSBudW0uc3ViKHRoaXMpO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZChudW0pO1xuXG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhZGQodGhpcyk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChudW0pIHtcbiAgICAvLyB0aGlzIC0gKC1udW0pID0gdGhpcyArIG51bVxuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICB2YXIgciA9IHRoaXMuaWFkZChudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gLXRoaXMgLSBudW0gPSAtKHRoaXMgKyBudW0pXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZChudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmVcbiAgICB2YXIgY21wID0gdGhpcy5jbXAobnVtKTtcblxuICAgIC8vIE9wdGltaXphdGlvbiAtIHplcm9pZnlcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gYSA+IGJcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoY21wID4gMCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApIC0gKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIENvcHkgcmVzdCBvZiB0aGUgd29yZHNcbiAgICBpZiAoY2FycnkgPT09IDAgJiYgaSA8IGEubGVuZ3RoICYmIGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpKTtcblxuICAgIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1YihudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHNtYWxsTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICB2YXIgbGVuID0gKHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aCkgfCAwO1xuICAgIG91dC5sZW5ndGggPSBsZW47XG4gICAgbGVuID0gKGxlbiAtIDEpIHwgMDtcblxuICAgIC8vIFBlZWwgb25lIGl0ZXJhdGlvbiAoY29tcGlsZXIgY2FuJ3QgZG8gaXQsIGJlY2F1c2Ugb2YgY29kZSBjb21wbGV4aXR5KVxuICAgIHZhciBhID0gc2VsZi53b3Jkc1swXSB8IDA7XG4gICAgdmFyIGIgPSBudW0ud29yZHNbMF0gfCAwO1xuICAgIHZhciByID0gYSAqIGI7XG5cbiAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgIHZhciBjYXJyeSA9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgb3V0LndvcmRzWzBdID0gbG87XG5cbiAgICBmb3IgKHZhciBrID0gMTsgayA8IGxlbjsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGNhcnJ5ID4+PiAyNjtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gKGsgLSBqKSB8IDA7XG4gICAgICAgIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHIgPSBhICogYiArIHJ3b3JkO1xuICAgICAgICBuY2FycnkgKz0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgICAgcndvcmQgPSByICYgMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQgfCAwO1xuICAgICAgY2FycnkgPSBuY2FycnkgfCAwO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5IHwgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIC8vIFRPRE8oaW5kdXRueSk6IGl0IG1heSBiZSByZWFzb25hYmxlIHRvIG9taXQgaXQgZm9yIHVzZXJzIHdobyBkb24ndCBuZWVkXG4gIC8vIHRvIHdvcmsgd2l0aCAyNTYtYml0IG51bWJlcnMsIG90aGVyd2lzZSBpdCBnaXZlcyAyMCUgaW1wcm92ZW1lbnQgZm9yIDI1Ni1iaXRcbiAgLy8gbXVsdGlwbGljYXRpb24gKGxpa2UgZWxsaXB0aWMgc2VjcDI1NmsxKS5cbiAgdmFyIGNvbWIxME11bFRvID0gZnVuY3Rpb24gY29tYjEwTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGEgPSBzZWxmLndvcmRzO1xuICAgIHZhciBiID0gbnVtLndvcmRzO1xuICAgIHZhciBvID0gb3V0LndvcmRzO1xuICAgIHZhciBjID0gMDtcbiAgICB2YXIgbG87XG4gICAgdmFyIG1pZDtcbiAgICB2YXIgaGk7XG4gICAgdmFyIGEwID0gYVswXSB8IDA7XG4gICAgdmFyIGFsMCA9IGEwICYgMHgxZmZmO1xuICAgIHZhciBhaDAgPSBhMCA+Pj4gMTM7XG4gICAgdmFyIGExID0gYVsxXSB8IDA7XG4gICAgdmFyIGFsMSA9IGExICYgMHgxZmZmO1xuICAgIHZhciBhaDEgPSBhMSA+Pj4gMTM7XG4gICAgdmFyIGEyID0gYVsyXSB8IDA7XG4gICAgdmFyIGFsMiA9IGEyICYgMHgxZmZmO1xuICAgIHZhciBhaDIgPSBhMiA+Pj4gMTM7XG4gICAgdmFyIGEzID0gYVszXSB8IDA7XG4gICAgdmFyIGFsMyA9IGEzICYgMHgxZmZmO1xuICAgIHZhciBhaDMgPSBhMyA+Pj4gMTM7XG4gICAgdmFyIGE0ID0gYVs0XSB8IDA7XG4gICAgdmFyIGFsNCA9IGE0ICYgMHgxZmZmO1xuICAgIHZhciBhaDQgPSBhNCA+Pj4gMTM7XG4gICAgdmFyIGE1ID0gYVs1XSB8IDA7XG4gICAgdmFyIGFsNSA9IGE1ICYgMHgxZmZmO1xuICAgIHZhciBhaDUgPSBhNSA+Pj4gMTM7XG4gICAgdmFyIGE2ID0gYVs2XSB8IDA7XG4gICAgdmFyIGFsNiA9IGE2ICYgMHgxZmZmO1xuICAgIHZhciBhaDYgPSBhNiA+Pj4gMTM7XG4gICAgdmFyIGE3ID0gYVs3XSB8IDA7XG4gICAgdmFyIGFsNyA9IGE3ICYgMHgxZmZmO1xuICAgIHZhciBhaDcgPSBhNyA+Pj4gMTM7XG4gICAgdmFyIGE4ID0gYVs4XSB8IDA7XG4gICAgdmFyIGFsOCA9IGE4ICYgMHgxZmZmO1xuICAgIHZhciBhaDggPSBhOCA+Pj4gMTM7XG4gICAgdmFyIGE5ID0gYVs5XSB8IDA7XG4gICAgdmFyIGFsOSA9IGE5ICYgMHgxZmZmO1xuICAgIHZhciBhaDkgPSBhOSA+Pj4gMTM7XG4gICAgdmFyIGIwID0gYlswXSB8IDA7XG4gICAgdmFyIGJsMCA9IGIwICYgMHgxZmZmO1xuICAgIHZhciBiaDAgPSBiMCA+Pj4gMTM7XG4gICAgdmFyIGIxID0gYlsxXSB8IDA7XG4gICAgdmFyIGJsMSA9IGIxICYgMHgxZmZmO1xuICAgIHZhciBiaDEgPSBiMSA+Pj4gMTM7XG4gICAgdmFyIGIyID0gYlsyXSB8IDA7XG4gICAgdmFyIGJsMiA9IGIyICYgMHgxZmZmO1xuICAgIHZhciBiaDIgPSBiMiA+Pj4gMTM7XG4gICAgdmFyIGIzID0gYlszXSB8IDA7XG4gICAgdmFyIGJsMyA9IGIzICYgMHgxZmZmO1xuICAgIHZhciBiaDMgPSBiMyA+Pj4gMTM7XG4gICAgdmFyIGI0ID0gYls0XSB8IDA7XG4gICAgdmFyIGJsNCA9IGI0ICYgMHgxZmZmO1xuICAgIHZhciBiaDQgPSBiNCA+Pj4gMTM7XG4gICAgdmFyIGI1ID0gYls1XSB8IDA7XG4gICAgdmFyIGJsNSA9IGI1ICYgMHgxZmZmO1xuICAgIHZhciBiaDUgPSBiNSA+Pj4gMTM7XG4gICAgdmFyIGI2ID0gYls2XSB8IDA7XG4gICAgdmFyIGJsNiA9IGI2ICYgMHgxZmZmO1xuICAgIHZhciBiaDYgPSBiNiA+Pj4gMTM7XG4gICAgdmFyIGI3ID0gYls3XSB8IDA7XG4gICAgdmFyIGJsNyA9IGI3ICYgMHgxZmZmO1xuICAgIHZhciBiaDcgPSBiNyA+Pj4gMTM7XG4gICAgdmFyIGI4ID0gYls4XSB8IDA7XG4gICAgdmFyIGJsOCA9IGI4ICYgMHgxZmZmO1xuICAgIHZhciBiaDggPSBiOCA+Pj4gMTM7XG4gICAgdmFyIGI5ID0gYls5XSB8IDA7XG4gICAgdmFyIGJsOSA9IGI5ICYgMHgxZmZmO1xuICAgIHZhciBiaDkgPSBiOSA+Pj4gMTM7XG5cbiAgICBvdXQubmVnYXRpdmUgPSBzZWxmLm5lZ2F0aXZlIF4gbnVtLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSAxOTtcbiAgICAvKiBrID0gMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwwLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgwLCBiaDApO1xuICAgIHZhciB3MCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzAgPj4+IDI2KSkgfCAwO1xuICAgIHcwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwxLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgxLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMSkpIHwgMDtcbiAgICB2YXIgdzEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxID4+PiAyNikpIHwgMDtcbiAgICB3MSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDIsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgyKSkgfCAwO1xuICAgIHZhciB3MiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzIgPj4+IDI2KSkgfCAwO1xuICAgIHcyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwzLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgzLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgzKSkgfCAwO1xuICAgIHZhciB3MyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzMgPj4+IDI2KSkgfCAwO1xuICAgIHczICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw0LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg0LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNCkpIHwgMDtcbiAgICB2YXIgdzQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc0ID4+PiAyNikpIHwgMDtcbiAgICB3NCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDUsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg1KSkgfCAwO1xuICAgIHZhciB3NSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzUgPj4+IDI2KSkgfCAwO1xuICAgIHc1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw2LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg2LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg2KSkgfCAwO1xuICAgIHZhciB3NiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzYgPj4+IDI2KSkgfCAwO1xuICAgIHc2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw3LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg3LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNykpIHwgMDtcbiAgICB2YXIgdzcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc3ID4+PiAyNikpIHwgMDtcbiAgICB3NyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDgsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg4KSkgfCAwO1xuICAgIHZhciB3OCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzggPj4+IDI2KSkgfCAwO1xuICAgIHc4ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg5KSkgfCAwO1xuICAgIHZhciB3OSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzkgPj4+IDI2KSkgfCAwO1xuICAgIHc5ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgxKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwxKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgxKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMCA+Pj4gMjYpKSB8IDA7XG4gICAgdzEwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgyKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwyKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgyKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzExID4+PiAyNikpIHwgMDtcbiAgICB3MTEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwzKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDMpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDMpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDMpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMiA+Pj4gMjYpKSB8IDA7XG4gICAgdzEyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg0KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw0KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg0KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMyA+Pj4gMjYpKSB8IDA7XG4gICAgdzEzICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg1KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw1KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg1KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE0ID4+PiAyNikpIHwgMDtcbiAgICB3MTQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw2KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDYpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDYpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDYpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNSA+Pj4gMjYpKSB8IDA7XG4gICAgdzE1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg3KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw3KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg3KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNiA+Pj4gMjYpKSB8IDA7XG4gICAgdzE2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg4KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw4KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg4KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE3ID4+PiAyNikpIHwgMDtcbiAgICB3MTcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw5KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDkpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDkpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDkpO1xuICAgIHZhciB3MTggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxOCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE4ICY9IDB4M2ZmZmZmZjtcbiAgICBvWzBdID0gdzA7XG4gICAgb1sxXSA9IHcxO1xuICAgIG9bMl0gPSB3MjtcbiAgICBvWzNdID0gdzM7XG4gICAgb1s0XSA9IHc0O1xuICAgIG9bNV0gPSB3NTtcbiAgICBvWzZdID0gdzY7XG4gICAgb1s3XSA9IHc3O1xuICAgIG9bOF0gPSB3ODtcbiAgICBvWzldID0gdzk7XG4gICAgb1sxMF0gPSB3MTA7XG4gICAgb1sxMV0gPSB3MTE7XG4gICAgb1sxMl0gPSB3MTI7XG4gICAgb1sxM10gPSB3MTM7XG4gICAgb1sxNF0gPSB3MTQ7XG4gICAgb1sxNV0gPSB3MTU7XG4gICAgb1sxNl0gPSB3MTY7XG4gICAgb1sxN10gPSB3MTc7XG4gICAgb1sxOF0gPSB3MTg7XG4gICAgaWYgKGMgIT09IDApIHtcbiAgICAgIG9bMTldID0gYztcbiAgICAgIG91dC5sZW5ndGgrKztcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfTtcblxuICAvLyBQb2x5ZmlsbCBjb21iXG4gIGlmICghTWF0aC5pbXVsKSB7XG4gICAgY29tYjEwTXVsVG8gPSBzbWFsbE11bFRvO1xuICB9XG5cbiAgZnVuY3Rpb24gYmlnTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICB2YXIgaG5jYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBvdXQubGVuZ3RoIC0gMTsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgICBobmNhcnJ5ID0gMDtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gayAtIGo7XG4gICAgICAgIHZhciBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIHZhciBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgdmFyIHIgPSBhICogYjtcblxuICAgICAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKChyIC8gMHg0MDAwMDAwKSB8IDApKSB8IDA7XG4gICAgICAgIGxvID0gKGxvICsgcndvcmQpIHwgMDtcbiAgICAgICAgcndvcmQgPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArIChsbyA+Pj4gMjYpKSB8IDA7XG5cbiAgICAgICAgaG5jYXJyeSArPSBuY2FycnkgPj4+IDI2O1xuICAgICAgICBuY2FycnkgJj0gMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQ7XG4gICAgICBjYXJyeSA9IG5jYXJyeTtcbiAgICAgIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2Fycnk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICBmdW5jdGlvbiBqdW1ib011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBmZnRtID0gbmV3IEZGVE0oKTtcbiAgICByZXR1cm4gZmZ0bS5tdWxwKHNlbGYsIG51bSwgb3V0KTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5tdWxUbyA9IGZ1bmN0aW9uIG11bFRvIChudW0sIG91dCkge1xuICAgIHZhciByZXM7XG4gICAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aDtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEwICYmIG51bS5sZW5ndGggPT09IDEwKSB7XG4gICAgICByZXMgPSBjb21iMTBNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCA2Mykge1xuICAgICAgcmVzID0gc21hbGxNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCAxMDI0KSB7XG4gICAgICByZXMgPSBiaWdNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29vbGV5LVR1a2V5IGFsZ29yaXRobSBmb3IgRkZUXG4gIC8vIHNsaWdodGx5IHJldmlzaXRlZCB0byByZWx5IG9uIGxvb3BpbmcgaW5zdGVhZCBvZiByZWN1cnNpb25cblxuICBmdW5jdGlvbiBGRlRNICh4LCB5KSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICB9XG5cbiAgRkZUTS5wcm90b3R5cGUubWFrZVJCVCA9IGZ1bmN0aW9uIG1ha2VSQlQgKE4pIHtcbiAgICB2YXIgdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbCA9IEJOLnByb3RvdHlwZS5fY291bnRCaXRzKE4pIC0gMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdFtpXSA9IHRoaXMucmV2QmluKGksIGwsIE4pO1xuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYmluYXJ5LXJldmVyc2VkIHJlcHJlc2VudGF0aW9uIG9mIGB4YFxuICBGRlRNLnByb3RvdHlwZS5yZXZCaW4gPSBmdW5jdGlvbiByZXZCaW4gKHgsIGwsIE4pIHtcbiAgICBpZiAoeCA9PT0gMCB8fCB4ID09PSBOIC0gMSkgcmV0dXJuIHg7XG5cbiAgICB2YXIgcmIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICByYiB8PSAoeCAmIDEpIDw8IChsIC0gaSAtIDEpO1xuICAgICAgeCA+Pj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmI7XG4gIH07XG5cbiAgLy8gUGVyZm9ybXMgXCJ0d2VlZGxpbmdcIiBwaGFzZSwgdGhlcmVmb3JlICdlbXVsYXRpbmcnXG4gIC8vIGJlaGF2aW91ciBvZiB0aGUgcmVjdXJzaXZlIGFsZ29yaXRobVxuICBGRlRNLnByb3RvdHlwZS5wZXJtdXRlID0gZnVuY3Rpb24gcGVybXV0ZSAocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBydHdzW2ldID0gcndzW3JidFtpXV07XG4gICAgICBpdHdzW2ldID0gaXdzW3JidFtpXV07XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uIHRyYW5zZm9ybSAocndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4sIHJidCkge1xuICAgIHRoaXMucGVybXV0ZShyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKTtcblxuICAgIGZvciAodmFyIHMgPSAxOyBzIDwgTjsgcyA8PD0gMSkge1xuICAgICAgdmFyIGwgPSBzIDw8IDE7XG5cbiAgICAgIHZhciBydHdkZiA9IE1hdGguY29zKDIgKiBNYXRoLlBJIC8gbCk7XG4gICAgICB2YXIgaXR3ZGYgPSBNYXRoLnNpbigyICogTWF0aC5QSSAvIGwpO1xuXG4gICAgICBmb3IgKHZhciBwID0gMDsgcCA8IE47IHAgKz0gbCkge1xuICAgICAgICB2YXIgcnR3ZGZfID0gcnR3ZGY7XG4gICAgICAgIHZhciBpdHdkZl8gPSBpdHdkZjtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHM7IGorKykge1xuICAgICAgICAgIHZhciByZSA9IHJ0d3NbcCArIGpdO1xuICAgICAgICAgIHZhciBpZSA9IGl0d3NbcCArIGpdO1xuXG4gICAgICAgICAgdmFyIHJvID0gcnR3c1twICsgaiArIHNdO1xuICAgICAgICAgIHZhciBpbyA9IGl0d3NbcCArIGogKyBzXTtcblxuICAgICAgICAgIHZhciByeCA9IHJ0d2RmXyAqIHJvIC0gaXR3ZGZfICogaW87XG5cbiAgICAgICAgICBpbyA9IHJ0d2RmXyAqIGlvICsgaXR3ZGZfICogcm87XG4gICAgICAgICAgcm8gPSByeDtcblxuICAgICAgICAgIHJ0d3NbcCArIGpdID0gcmUgKyBybztcbiAgICAgICAgICBpdHdzW3AgKyBqXSA9IGllICsgaW87XG5cbiAgICAgICAgICBydHdzW3AgKyBqICsgc10gPSByZSAtIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGogKyBzXSA9IGllIC0gaW87XG5cbiAgICAgICAgICAvKiBqc2hpbnQgbWF4ZGVwdGggOiBmYWxzZSAqL1xuICAgICAgICAgIGlmIChqICE9PSBsKSB7XG4gICAgICAgICAgICByeCA9IHJ0d2RmICogcnR3ZGZfIC0gaXR3ZGYgKiBpdHdkZl87XG5cbiAgICAgICAgICAgIGl0d2RmXyA9IHJ0d2RmICogaXR3ZGZfICsgaXR3ZGYgKiBydHdkZl87XG4gICAgICAgICAgICBydHdkZl8gPSByeDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2IgPSBmdW5jdGlvbiBndWVzc0xlbjEzYiAobiwgbSkge1xuICAgIHZhciBOID0gTWF0aC5tYXgobSwgbikgfCAxO1xuICAgIHZhciBvZGQgPSBOICYgMTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yIChOID0gTiAvIDIgfCAwOyBOOyBOID0gTiA+Pj4gMSkge1xuICAgICAgaSsrO1xuICAgIH1cblxuICAgIHJldHVybiAxIDw8IGkgKyAxICsgb2RkO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbmp1Z2F0ZSA9IGZ1bmN0aW9uIGNvbmp1Z2F0ZSAocndzLCBpd3MsIE4pIHtcbiAgICBpZiAoTiA8PSAxKSByZXR1cm47XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB0ID0gcndzW2ldO1xuXG4gICAgICByd3NbaV0gPSByd3NbTiAtIGkgLSAxXTtcbiAgICAgIHJ3c1tOIC0gaSAtIDFdID0gdDtcblxuICAgICAgdCA9IGl3c1tpXTtcblxuICAgICAgaXdzW2ldID0gLWl3c1tOIC0gaSAtIDFdO1xuICAgICAgaXdzW04gLSBpIC0gMV0gPSAtdDtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubm9ybWFsaXplMTNiID0gZnVuY3Rpb24gbm9ybWFsaXplMTNiICh3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdyA9IE1hdGgucm91bmQod3NbMiAqIGkgKyAxXSAvIE4pICogMHgyMDAwICtcbiAgICAgICAgTWF0aC5yb3VuZCh3c1syICogaV0gLyBOKSArXG4gICAgICAgIGNhcnJ5O1xuXG4gICAgICB3c1tpXSA9IHcgJiAweDNmZmZmZmY7XG5cbiAgICAgIGlmICh3IDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhcnJ5ID0gdyAvIDB4NDAwMDAwMCB8IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHdzO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbnZlcnQxM2IgPSBmdW5jdGlvbiBjb252ZXJ0MTNiICh3cywgbGVuLCByd3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNhcnJ5ID0gY2FycnkgKyAod3NbaV0gfCAwKTtcblxuICAgICAgcndzWzIgKiBpXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICAgIHJ3c1syICogaSArIDFdID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgIH1cblxuICAgIC8vIFBhZCB3aXRoIHplcm9lc1xuICAgIGZvciAoaSA9IDIgKiBsZW47IGkgPCBOOyArK2kpIHtcbiAgICAgIHJ3c1tpXSA9IDA7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAwKTtcbiAgICBhc3NlcnQoKGNhcnJ5ICYgfjB4MWZmZikgPT09IDApO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnN0dWIgPSBmdW5jdGlvbiBzdHViIChOKSB7XG4gICAgdmFyIHBoID0gbmV3IEFycmF5KE4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBwaFtpXSA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBoO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm11bHAgPSBmdW5jdGlvbiBtdWxwICh4LCB5LCBvdXQpIHtcbiAgICB2YXIgTiA9IDIgKiB0aGlzLmd1ZXNzTGVuMTNiKHgubGVuZ3RoLCB5Lmxlbmd0aCk7XG5cbiAgICB2YXIgcmJ0ID0gdGhpcy5tYWtlUkJUKE4pO1xuXG4gICAgdmFyIF8gPSB0aGlzLnN0dWIoTik7XG5cbiAgICB2YXIgcndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciByd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBpd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIG5yd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5yd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBuaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBybXdzID0gb3V0LndvcmRzO1xuICAgIHJtd3MubGVuZ3RoID0gTjtcblxuICAgIHRoaXMuY29udmVydDEzYih4LndvcmRzLCB4Lmxlbmd0aCwgcndzLCBOKTtcbiAgICB0aGlzLmNvbnZlcnQxM2IoeS53b3JkcywgeS5sZW5ndGgsIG5yd3MsIE4pO1xuXG4gICAgdGhpcy50cmFuc2Zvcm0ocndzLCBfLCByd3N0LCBpd3N0LCBOLCByYnQpO1xuICAgIHRoaXMudHJhbnNmb3JtKG5yd3MsIF8sIG5yd3N0LCBuaXdzdCwgTiwgcmJ0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB2YXIgcnggPSByd3N0W2ldICogbnJ3c3RbaV0gLSBpd3N0W2ldICogbml3c3RbaV07XG4gICAgICBpd3N0W2ldID0gcndzdFtpXSAqIG5pd3N0W2ldICsgaXdzdFtpXSAqIG5yd3N0W2ldO1xuICAgICAgcndzdFtpXSA9IHJ4O1xuICAgIH1cblxuICAgIHRoaXMuY29uanVnYXRlKHJ3c3QsIGl3c3QsIE4pO1xuICAgIHRoaXMudHJhbnNmb3JtKHJ3c3QsIGl3c3QsIHJtd3MsIF8sIE4sIHJidCk7XG4gICAgdGhpcy5jb25qdWdhdGUocm13cywgXywgTik7XG4gICAgdGhpcy5ub3JtYWxpemUxM2Iocm13cywgTik7XG5cbiAgICBvdXQubmVnYXRpdmUgPSB4Lm5lZ2F0aXZlIF4geS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0geC5sZW5ndGggKyB5Lmxlbmd0aDtcbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgYHRoaXNgIGJ5IGBudW1gXG4gIEJOLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRoaXMubXVsVG8obnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGVtcGxveWluZyBGRlRcbiAgQk4ucHJvdG90eXBlLm11bGYgPSBmdW5jdGlvbiBtdWxmIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBNdWx0aXBsaWNhdGlvblxuICBCTi5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkubXVsVG8obnVtLCB0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW11bG4gPSBmdW5jdGlvbiBpbXVsbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcblxuICAgIC8vIENhcnJ5XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSAqIG51bTtcbiAgICAgIHZhciBsbyA9ICh3ICYgMHgzZmZmZmZmKSArIChjYXJyeSAmIDB4M2ZmZmZmZik7XG4gICAgICBjYXJyeSA+Pj0gMjY7XG4gICAgICBjYXJyeSArPSAodyAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgLy8gTk9URTogbG8gaXMgMjdiaXQgbWF4aW11bVxuICAgICAgY2FycnkgKz0gbG8gPj4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubXVsbiA9IGZ1bmN0aW9uIG11bG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW11bG4obnVtKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKHRoaXMpO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKTtcbiAgfTtcblxuICAvLyBNYXRoLnBvdyhgdGhpc2AsIGBudW1gKVxuICBCTi5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChudW0pIHtcbiAgICB2YXIgdyA9IHRvQml0QXJyYXkobnVtKTtcbiAgICBpZiAody5sZW5ndGggPT09IDApIHJldHVybiBuZXcgQk4oMSk7XG5cbiAgICAvLyBTa2lwIGxlYWRpbmcgemVyb2VzXG4gICAgdmFyIHJlcyA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3Lmxlbmd0aDsgaSsrLCByZXMgPSByZXMuc3FyKCkpIHtcbiAgICAgIGlmICh3W2ldICE9PSAwKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoKytpIDwgdy5sZW5ndGgpIHtcbiAgICAgIGZvciAodmFyIHEgPSByZXMuc3FyKCk7IGkgPCB3Lmxlbmd0aDsgaSsrLCBxID0gcS5zcXIoKSkge1xuICAgICAgICBpZiAod1tpXSA9PT0gMCkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gcmVzLm11bChxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnQgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1c2hsbiA9IGZ1bmN0aW9uIGl1c2hsbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcbiAgICB2YXIgY2FycnlNYXNrID0gKDB4M2ZmZmZmZiA+Pj4gKDI2IC0gcikpIDw8ICgyNiAtIHIpO1xuICAgIHZhciBpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBuZXdDYXJyeSA9IHRoaXMud29yZHNbaV0gJiBjYXJyeU1hc2s7XG4gICAgICAgIHZhciBjID0gKCh0aGlzLndvcmRzW2ldIHwgMCkgLSBuZXdDYXJyeSkgPDwgcjtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGMgfCBjYXJyeTtcbiAgICAgICAgY2FycnkgPSBuZXdDYXJyeSA+Pj4gKDI2IC0gcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYXJyeSkge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHMgIT09IDApIHtcbiAgICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgc10gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCArPSBzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaGxuID0gZnVuY3Rpb24gaXNobG4gKGJpdHMpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0IGluLXBsYWNlXG4gIC8vIE5PVEU6IGBoaW50YCBpcyBhIGxvd2VzdCBiaXQgYmVmb3JlIHRyYWlsaW5nIHplcm9lc1xuICAvLyBOT1RFOiBpZiBgZXh0ZW5kZWRgIGlzIHByZXNlbnQgLSBpdCB3aWxsIGJlIGZpbGxlZCB3aXRoIGRlc3Ryb3llZCBiaXRzXG4gIEJOLnByb3RvdHlwZS5pdXNocm4gPSBmdW5jdGlvbiBpdXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciBoO1xuICAgIGlmIChoaW50KSB7XG4gICAgICBoID0gKGhpbnQgLSAoaGludCAlIDI2KSkgLyAyNjtcbiAgICB9IGVsc2Uge1xuICAgICAgaCA9IDA7XG4gICAgfVxuXG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSBNYXRoLm1pbigoYml0cyAtIHIpIC8gMjYsIHRoaXMubGVuZ3RoKTtcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICB2YXIgbWFza2VkV29yZHMgPSBleHRlbmRlZDtcblxuICAgIGggLT0gcztcbiAgICBoID0gTWF0aC5tYXgoMCwgaCk7XG5cbiAgICAvLyBFeHRlbmRlZCBtb2RlLCBjb3B5IG1hc2tlZCBwYXJ0XG4gICAgaWYgKG1hc2tlZFdvcmRzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICBtYXNrZWRXb3Jkcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG4gICAgICBtYXNrZWRXb3Jkcy5sZW5ndGggPSBzO1xuICAgIH1cblxuICAgIGlmIChzID09PSAwKSB7XG4gICAgICAvLyBOby1vcCwgd2Ugc2hvdWxkIG5vdCBtb3ZlIGFueXRoaW5nIGF0IGFsbFxuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiBzKSB7XG4gICAgICB0aGlzLmxlbmd0aCAtPSBzO1xuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaSArIHNdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwICYmIChjYXJyeSAhPT0gMCB8fCBpID49IGgpOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKGNhcnJ5IDw8ICgyNiAtIHIpKSB8ICh3b3JkID4+PiByKTtcbiAgICAgIGNhcnJ5ID0gd29yZCAmIG1hc2s7XG4gICAgfVxuXG4gICAgLy8gUHVzaCBjYXJyaWVkIGJpdHMgYXMgYSBtYXNrXG4gICAgaWYgKG1hc2tlZFdvcmRzICYmIGNhcnJ5ICE9PSAwKSB7XG4gICAgICBtYXNrZWRXb3Jkcy53b3Jkc1ttYXNrZWRXb3Jkcy5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaHJuID0gZnVuY3Rpb24gaXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hybihiaXRzLCBoaW50LCBleHRlbmRlZCk7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdFxuICBCTi5wcm90b3R5cGUuc2hsbiA9IGZ1bmN0aW9uIHNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hsbiA9IGZ1bmN0aW9uIHVzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHRcbiAgQk4ucHJvdG90eXBlLnNocm4gPSBmdW5jdGlvbiBzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNocm4gPSBmdW5jdGlvbiB1c2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFRlc3QgaWYgbiBiaXQgaXMgc2V0XG4gIEJOLnByb3RvdHlwZS50ZXN0biA9IGZ1bmN0aW9uIHRlc3RuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGJpdCBhbmQgcmV0dXJuXG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3NdO1xuXG4gICAgcmV0dXJuICEhKHcgJiBxKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXIgKGluLXBsYWNlKVxuICBCTi5wcm90b3R5cGUuaW1hc2tuID0gZnVuY3Rpb24gaW1hc2tuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMnKTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgcysrO1xuICAgIH1cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWluKHMsIHRoaXMubGVuZ3RoKTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSAmPSBtYXNrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyXG4gIEJOLnByb3RvdHlwZS5tYXNrbiA9IGZ1bmN0aW9uIG1hc2tuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oYml0cyk7XG4gIH07XG5cbiAgLy8gQWRkIHBsYWluIG51bWJlciBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlhZGRuID0gZnVuY3Rpb24gaWFkZG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlzdWJuKC1udW0pO1xuXG4gICAgLy8gUG9zc2libGUgc2lnbiBjaGFuZ2VcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmICh0aGlzLndvcmRzWzBdIHwgMCkgPCBudW0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSA9IG51bSAtICh0aGlzLndvcmRzWzBdIHwgMCk7XG4gICAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlzdWJuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCB3aXRob3V0IGNoZWNrc1xuICAgIHJldHVybiB0aGlzLl9pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faWFkZG4gPSBmdW5jdGlvbiBfaWFkZG4gKG51bSkge1xuICAgIHRoaXMud29yZHNbMF0gKz0gbnVtO1xuXG4gICAgLy8gQ2FycnlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPj0gMHg0MDAwMDAwOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gLT0gMHg0MDAwMDAwO1xuICAgICAgaWYgKGkgPT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSsrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpICsgMSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBwbGFpbiBudW1iZXIgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlzdWJuID0gZnVuY3Rpb24gaXN1Ym4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlhZGRuKC1udW0pO1xuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkbihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLndvcmRzWzBdIC09IG51bTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdIDwgMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IC10aGlzLndvcmRzWzBdO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENhcnJ5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPCAwOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSArPSAweDQwMDAwMDA7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdIC09IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWRkbiA9IGZ1bmN0aW9uIGFkZG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuc3VibiA9IGZ1bmN0aW9uIHN1Ym4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFicyA9IGZ1bmN0aW9uIGlhYnMgKCkge1xuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uIGFicyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pc2hsbnN1Ym11bCA9IGZ1bmN0aW9uIF9pc2hsbnN1Ym11bCAobnVtLCBtdWwsIHNoaWZ0KSB7XG4gICAgdmFyIGxlbiA9IG51bS5sZW5ndGggKyBzaGlmdDtcbiAgICB2YXIgaTtcblxuICAgIHRoaXMuX2V4cGFuZChsZW4pO1xuXG4gICAgdmFyIHc7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICB2YXIgcmlnaHQgPSAobnVtLndvcmRzW2ldIHwgMCkgKiBtdWw7XG4gICAgICB3IC09IHJpZ2h0ICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSAodyA+PiAyNikgLSAoKHJpZ2h0IC8gMHg0MDAwMDAwKSB8IDApO1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGkgPCB0aGlzLmxlbmd0aCAtIHNoaWZ0OyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ID09PSAwKSByZXR1cm4gdGhpcy5zdHJpcCgpO1xuXG4gICAgLy8gU3VidHJhY3Rpb24gb3ZlcmZsb3dcbiAgICBhc3NlcnQoY2FycnkgPT09IC0xKTtcbiAgICBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAtKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX3dvcmREaXYgPSBmdW5jdGlvbiBfd29yZERpdiAobnVtLCBtb2RlKSB7XG4gICAgdmFyIHNoaWZ0ID0gdGhpcy5sZW5ndGggLSBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGEgPSB0aGlzLmNsb25lKCk7XG4gICAgdmFyIGIgPSBudW07XG5cbiAgICAvLyBOb3JtYWxpemVcbiAgICB2YXIgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB2YXIgYmhpQml0cyA9IHRoaXMuX2NvdW50Qml0cyhiaGkpO1xuICAgIHNoaWZ0ID0gMjYgLSBiaGlCaXRzO1xuICAgIGlmIChzaGlmdCAhPT0gMCkge1xuICAgICAgYiA9IGIudXNobG4oc2hpZnQpO1xuICAgICAgYS5pdXNobG4oc2hpZnQpO1xuICAgICAgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIHF1b3RpZW50XG4gICAgdmFyIG0gPSBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuICAgIHZhciBxO1xuXG4gICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICBxID0gbmV3IEJOKG51bGwpO1xuICAgICAgcS5sZW5ndGggPSBtICsgMTtcbiAgICAgIHEud29yZHMgPSBuZXcgQXJyYXkocS5sZW5ndGgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHEud29yZHNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkaWZmID0gYS5jbG9uZSgpLl9pc2hsbnN1Ym11bChiLCAxLCBtKTtcbiAgICBpZiAoZGlmZi5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgYSA9IGRpZmY7XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW21dID0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gbSAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICB2YXIgcWogPSAoYS53b3Jkc1tiLmxlbmd0aCArIGpdIHwgMCkgKiAweDQwMDAwMDAgK1xuICAgICAgICAoYS53b3Jkc1tiLmxlbmd0aCArIGogLSAxXSB8IDApO1xuXG4gICAgICAvLyBOT1RFOiAocWogLyBiaGkpIGlzICgweDNmZmZmZmYgKiAweDQwMDAwMDAgKyAweDNmZmZmZmYpIC8gMHgyMDAwMDAwIG1heFxuICAgICAgLy8gKDB4N2ZmZmZmZilcbiAgICAgIHFqID0gTWF0aC5taW4oKHFqIC8gYmhpKSB8IDAsIDB4M2ZmZmZmZik7XG5cbiAgICAgIGEuX2lzaGxuc3VibXVsKGIsIHFqLCBqKTtcbiAgICAgIHdoaWxlIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIHFqLS07XG4gICAgICAgIGEubmVnYXRpdmUgPSAwO1xuICAgICAgICBhLl9pc2hsbnN1Ym11bChiLCAxLCBqKTtcbiAgICAgICAgaWYgKCFhLmlzWmVybygpKSB7XG4gICAgICAgICAgYS5uZWdhdGl2ZSBePSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW2pdID0gcWo7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxKSB7XG4gICAgICBxLnN0cmlwKCk7XG4gICAgfVxuICAgIGEuc3RyaXAoKTtcblxuICAgIC8vIERlbm9ybWFsaXplXG4gICAgaWYgKG1vZGUgIT09ICdkaXYnICYmIHNoaWZ0ICE9PSAwKSB7XG4gICAgICBhLml1c2hybihzaGlmdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpdjogcSB8fCBudWxsLFxuICAgICAgbW9kOiBhXG4gICAgfTtcbiAgfTtcblxuICAvLyBOT1RFOiAxKSBgbW9kZWAgY2FuIGJlIHNldCB0byBgbW9kYCB0byByZXF1ZXN0IG1vZCBvbmx5LFxuICAvLyAgICAgICB0byBgZGl2YCB0byByZXF1ZXN0IGRpdiBvbmx5LCBvciBiZSBhYnNlbnQgdG9cbiAgLy8gICAgICAgcmVxdWVzdCBib3RoIGRpdiAmIG1vZFxuICAvLyAgICAgICAyKSBgcG9zaXRpdmVgIGlzIHRydWUgaWYgdW5zaWduZWQgbW9kIGlzIHJlcXVlc3RlZFxuICBCTi5wcm90b3R5cGUuZGl2bW9kID0gZnVuY3Rpb24gZGl2bW9kIChudW0sIG1vZGUsIHBvc2l0aXZlKSB7XG4gICAgYXNzZXJ0KCFudW0uaXNaZXJvKCkpO1xuXG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IG5ldyBCTigwKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZGl2LCBtb2QsIHJlcztcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pYWRkKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IHJlcy5tb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCh0aGlzLm5lZ2F0aXZlICYgbnVtLm5lZ2F0aXZlKSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaXN1YihudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogcmVzLmRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZSBhdCB0aGlzIHBvaW50XG5cbiAgICAvLyBTdHJpcCBib3RoIG51bWJlcnMgdG8gYXBwcm94aW1hdGUgc2hpZnQgdmFsdWVcbiAgICBpZiAobnVtLmxlbmd0aCA+IHRoaXMubGVuZ3RoIHx8IHRoaXMuY21wKG51bSkgPCAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiB0aGlzXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFZlcnkgc2hvcnQgcmVkdWN0aW9uXG4gICAgaWYgKG51bS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGlmIChtb2RlID09PSAnZGl2Jykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgICAgbW9kOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlID09PSAnbW9kJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogbnVsbCxcbiAgICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl93b3JkRGl2KG51bSwgbW9kZSk7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgLyBgbnVtYFxuICBCTi5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gZGl2IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnZGl2JywgZmFsc2UpLmRpdjtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAlIGBudW1gXG4gIEJOLnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiBtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCBmYWxzZSkubW9kO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51bW9kID0gZnVuY3Rpb24gdW1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIHRydWUpLm1vZDtcbiAgfTtcblxuICAvLyBGaW5kIFJvdW5kKGB0aGlzYCAvIGBudW1gKVxuICBCTi5wcm90b3R5cGUuZGl2Um91bmQgPSBmdW5jdGlvbiBkaXZSb3VuZCAobnVtKSB7XG4gICAgdmFyIGRtID0gdGhpcy5kaXZtb2QobnVtKTtcblxuICAgIC8vIEZhc3QgY2FzZSAtIGV4YWN0IGRpdmlzaW9uXG4gICAgaWYgKGRtLm1vZC5pc1plcm8oKSkgcmV0dXJuIGRtLmRpdjtcblxuICAgIHZhciBtb2QgPSBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5tb2QuaXN1YihudW0pIDogZG0ubW9kO1xuXG4gICAgdmFyIGhhbGYgPSBudW0udXNocm4oMSk7XG4gICAgdmFyIHIyID0gbnVtLmFuZGxuKDEpO1xuICAgIHZhciBjbXAgPSBtb2QuY21wKGhhbGYpO1xuXG4gICAgLy8gUm91bmQgZG93blxuICAgIGlmIChjbXAgPCAwIHx8IHIyID09PSAxICYmIGNtcCA9PT0gMCkgcmV0dXJuIGRtLmRpdjtcblxuICAgIC8vIFJvdW5kIHVwXG4gICAgcmV0dXJuIGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLmRpdi5pc3VibigxKSA6IGRtLmRpdi5pYWRkbigxKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubW9kbiA9IGZ1bmN0aW9uIG1vZG4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcbiAgICB2YXIgcCA9ICgxIDw8IDI2KSAlIG51bTtcblxuICAgIHZhciBhY2MgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBhY2MgPSAocCAqIGFjYyArICh0aGlzLndvcmRzW2ldIHwgMCkpICUgbnVtO1xuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgZGl2aXNpb24gYnkgbnVtYmVyXG4gIEJOLnByb3RvdHlwZS5pZGl2biA9IGZ1bmN0aW9uIGlkaXZuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeSAqIDB4NDAwMDAwMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAodyAvIG51bSkgfCAwO1xuICAgICAgY2FycnkgPSB3ICUgbnVtO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmRpdm4gPSBmdW5jdGlvbiBkaXZuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVnY2QgPSBmdW5jdGlvbiBlZ2NkIChwKSB7XG4gICAgYXNzZXJ0KHAubmVnYXRpdmUgPT09IDApO1xuICAgIGFzc2VydCghcC5pc1plcm8oKSk7XG5cbiAgICB2YXIgeCA9IHRoaXM7XG4gICAgdmFyIHkgPSBwLmNsb25lKCk7XG5cbiAgICBpZiAoeC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgeCA9IHgudW1vZChwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHguY2xvbmUoKTtcbiAgICB9XG5cbiAgICAvLyBBICogeCArIEIgKiB5ID0geFxuICAgIHZhciBBID0gbmV3IEJOKDEpO1xuICAgIHZhciBCID0gbmV3IEJOKDApO1xuXG4gICAgLy8gQyAqIHggKyBEICogeSA9IHlcbiAgICB2YXIgQyA9IG5ldyBCTigwKTtcbiAgICB2YXIgRCA9IG5ldyBCTigxKTtcblxuICAgIHZhciBnID0gMDtcblxuICAgIHdoaWxlICh4LmlzRXZlbigpICYmIHkuaXNFdmVuKCkpIHtcbiAgICAgIHguaXVzaHJuKDEpO1xuICAgICAgeS5pdXNocm4oMSk7XG4gICAgICArK2c7XG4gICAgfVxuXG4gICAgdmFyIHlwID0geS5jbG9uZSgpO1xuICAgIHZhciB4cCA9IHguY2xvbmUoKTtcblxuICAgIHdoaWxlICgheC5pc1plcm8oKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGltID0gMTsgKHgud29yZHNbMF0gJiBpbSkgPT09IDAgJiYgaSA8IDI2OyArK2ksIGltIDw8PSAxKTtcbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICB4Lml1c2hybihpKTtcbiAgICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgICBpZiAoQS5pc09kZCgpIHx8IEIuaXNPZGQoKSkge1xuICAgICAgICAgICAgQS5pYWRkKHlwKTtcbiAgICAgICAgICAgIEIuaXN1Yih4cCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQS5pdXNocm4oMSk7XG4gICAgICAgICAgQi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKHkud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICB5Lml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoQy5pc09kZCgpIHx8IEQuaXNPZGQoKSkge1xuICAgICAgICAgICAgQy5pYWRkKHlwKTtcbiAgICAgICAgICAgIEQuaXN1Yih4cCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQy5pdXNocm4oMSk7XG4gICAgICAgICAgRC5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHguY21wKHkpID49IDApIHtcbiAgICAgICAgeC5pc3ViKHkpO1xuICAgICAgICBBLmlzdWIoQyk7XG4gICAgICAgIEIuaXN1YihEKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHkuaXN1Yih4KTtcbiAgICAgICAgQy5pc3ViKEEpO1xuICAgICAgICBELmlzdWIoQik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGE6IEMsXG4gICAgICBiOiBELFxuICAgICAgZ2NkOiB5Lml1c2hsbihnKVxuICAgIH07XG4gIH07XG5cbiAgLy8gVGhpcyBpcyByZWR1Y2VkIGluY2FybmF0aW9uIG9mIHRoZSBiaW5hcnkgRUVBXG4gIC8vIGFib3ZlLCBkZXNpZ25hdGVkIHRvIGludmVydCBtZW1iZXJzIG9mIHRoZVxuICAvLyBfcHJpbWVfIGZpZWxkcyBGKHApIGF0IGEgbWF4aW1hbCBzcGVlZFxuICBCTi5wcm90b3R5cGUuX2ludm1wID0gZnVuY3Rpb24gX2ludm1wIChwKSB7XG4gICAgYXNzZXJ0KHAubmVnYXRpdmUgPT09IDApO1xuICAgIGFzc2VydCghcC5pc1plcm8oKSk7XG5cbiAgICB2YXIgYSA9IHRoaXM7XG4gICAgdmFyIGIgPSBwLmNsb25lKCk7XG5cbiAgICBpZiAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgYSA9IGEudW1vZChwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IGEuY2xvbmUoKTtcbiAgICB9XG5cbiAgICB2YXIgeDEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIHgyID0gbmV3IEJOKDApO1xuXG4gICAgdmFyIGRlbHRhID0gYi5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKGEuY21wbigxKSA+IDAgJiYgYi5jbXBuKDEpID4gMCkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGltID0gMTsgKGEud29yZHNbMF0gJiBpbSkgPT09IDAgJiYgaSA8IDI2OyArK2ksIGltIDw8PSAxKTtcbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICBhLml1c2hybihpKTtcbiAgICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDEuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDEuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDEuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7IChiLndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgYi5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgyLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgyLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgyLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYS5jbXAoYikgPj0gMCkge1xuICAgICAgICBhLmlzdWIoYik7XG4gICAgICAgIHgxLmlzdWIoeDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYi5pc3ViKGEpO1xuICAgICAgICB4Mi5pc3ViKHgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmIChhLmNtcG4oMSkgPT09IDApIHtcbiAgICAgIHJlcyA9IHgxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSB4MjtcbiAgICB9XG5cbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZChwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5nY2QgPSBmdW5jdGlvbiBnY2QgKG51bSkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gbnVtLmFicygpO1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiB0aGlzLmFicygpO1xuXG4gICAgdmFyIGEgPSB0aGlzLmNsb25lKCk7XG4gICAgdmFyIGIgPSBudW0uY2xvbmUoKTtcbiAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICBiLm5lZ2F0aXZlID0gMDtcblxuICAgIC8vIFJlbW92ZSBjb21tb24gZmFjdG9yIG9mIHR3b1xuICAgIGZvciAodmFyIHNoaWZ0ID0gMDsgYS5pc0V2ZW4oKSAmJiBiLmlzRXZlbigpOyBzaGlmdCsrKSB7XG4gICAgICBhLml1c2hybigxKTtcbiAgICAgIGIuaXVzaHJuKDEpO1xuICAgIH1cblxuICAgIGRvIHtcbiAgICAgIHdoaWxlIChhLmlzRXZlbigpKSB7XG4gICAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKGIuaXNFdmVuKCkpIHtcbiAgICAgICAgYi5pdXNocm4oMSk7XG4gICAgICB9XG5cbiAgICAgIHZhciByID0gYS5jbXAoYik7XG4gICAgICBpZiAociA8IDApIHtcbiAgICAgICAgLy8gU3dhcCBgYWAgYW5kIGBiYCB0byBtYWtlIGBhYCBhbHdheXMgYmlnZ2VyIHRoYW4gYGJgXG4gICAgICAgIHZhciB0ID0gYTtcbiAgICAgICAgYSA9IGI7XG4gICAgICAgIGIgPSB0O1xuICAgICAgfSBlbHNlIGlmIChyID09PSAwIHx8IGIuY21wbigxKSA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgYS5pc3ViKGIpO1xuICAgIH0gd2hpbGUgKHRydWUpO1xuXG4gICAgcmV0dXJuIGIuaXVzaGxuKHNoaWZ0KTtcbiAgfTtcblxuICAvLyBJbnZlcnQgbnVtYmVyIGluIHRoZSBmaWVsZCBGKG51bSlcbiAgQk4ucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5lZ2NkKG51bSkuYS51bW9kKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzRXZlbiA9IGZ1bmN0aW9uIGlzRXZlbiAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gaXNPZGQgKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAxO1xuICB9O1xuXG4gIC8vIEFuZCBmaXJzdCB3b3JkIGFuZCBudW1cbiAgQk4ucHJvdG90eXBlLmFuZGxuID0gZnVuY3Rpb24gYW5kbG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLndvcmRzWzBdICYgbnVtO1xuICB9O1xuXG4gIC8vIEluY3JlbWVudCBhdCB0aGUgYml0IHBvc2l0aW9uIGluLWxpbmVcbiAgQk4ucHJvdG90eXBlLmJpbmNuID0gZnVuY3Rpb24gYmluY24gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgdGhpcy5fZXhwYW5kKHMgKyAxKTtcbiAgICAgIHRoaXMud29yZHNbc10gfD0gcTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBiaXQgYW5kIHByb3BhZ2F0ZSwgaWYgbmVlZGVkXG4gICAgdmFyIGNhcnJ5ID0gcTtcbiAgICBmb3IgKHZhciBpID0gczsgY2FycnkgIT09IDAgJiYgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB3ICs9IGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+PiAyNjtcbiAgICAgIHcgJj0gMHgzZmZmZmZmO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHc7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uIGlzWmVybyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNtcG4gPSBmdW5jdGlvbiBjbXBuIChudW0pIHtcbiAgICB2YXIgbmVnYXRpdmUgPSBudW0gPCAwO1xuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgIW5lZ2F0aXZlKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbmVnYXRpdmUpIHJldHVybiAxO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuXG4gICAgdmFyIHJlcztcbiAgICBpZiAodGhpcy5sZW5ndGggPiAxKSB7XG4gICAgICByZXMgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobmVnYXRpdmUpIHtcbiAgICAgICAgbnVtID0gLW51bTtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYsICdOdW1iZXIgaXMgdG9vIGJpZycpO1xuXG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbMF0gfCAwO1xuICAgICAgcmVzID0gdyA9PT0gbnVtID8gMCA6IHcgPCBudW0gPyAtMSA6IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb21wYXJlIHR3byBudW1iZXJzIGFuZCByZXR1cm46XG4gIC8vIDEgLSBpZiBgdGhpc2AgPiBgbnVtYFxuICAvLyAwIC0gaWYgYHRoaXNgID09IGBudW1gXG4gIC8vIC0xIC0gaWYgYHRoaXNgIDwgYG51bWBcbiAgQk4ucHJvdG90eXBlLmNtcCA9IGZ1bmN0aW9uIGNtcCAobnVtKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gMTtcblxuICAgIHZhciByZXMgPSB0aGlzLnVjbXAobnVtKTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gVW5zaWduZWQgY29tcGFyaXNvblxuICBCTi5wcm90b3R5cGUudWNtcCA9IGZ1bmN0aW9uIHVjbXAgKG51bSkge1xuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGhhdmUgdGhlIHNhbWUgc2lnblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiAxO1xuICAgIGlmICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHJldHVybiAtMTtcblxuICAgIHZhciByZXMgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgYSA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdmFyIGIgPSBudW0ud29yZHNbaV0gfCAwO1xuXG4gICAgICBpZiAoYSA9PT0gYikgY29udGludWU7XG4gICAgICBpZiAoYSA8IGIpIHtcbiAgICAgICAgcmVzID0gLTE7XG4gICAgICB9IGVsc2UgaWYgKGEgPiBiKSB7XG4gICAgICAgIHJlcyA9IDE7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RuID0gZnVuY3Rpb24gZ3RuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ID0gZnVuY3Rpb24gZ3QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGVuID0gZnVuY3Rpb24gZ3RlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZSA9IGZ1bmN0aW9uIGd0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRuID0gZnVuY3Rpb24gbHRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdCA9IGZ1bmN0aW9uIGx0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZW4gPSBmdW5jdGlvbiBsdGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlID0gZnVuY3Rpb24gbHRlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcW4gPSBmdW5jdGlvbiBlcW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDA7XG4gIH07XG5cbiAgLy9cbiAgLy8gQSByZWR1Y2UgY29udGV4dCwgY291bGQgYmUgdXNpbmcgbW9udGdvbWVyeSBvciBzb21ldGhpbmcgYmV0dGVyLCBkZXBlbmRpbmdcbiAgLy8gb24gdGhlIGBtYCBpdHNlbGYuXG4gIC8vXG4gIEJOLnJlZCA9IGZ1bmN0aW9uIHJlZCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBSZWQobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9SZWQgPSBmdW5jdGlvbiB0b1JlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgcmV0dXJuIGN0eC5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21SZWQgPSBmdW5jdGlvbiBmcm9tUmVkICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZm9yY2VSZWQgPSBmdW5jdGlvbiBfZm9yY2VSZWQgKGN0eCkge1xuICAgIHRoaXMucmVkID0gY3R4O1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mb3JjZVJlZCA9IGZ1bmN0aW9uIGZvcmNlUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRBZGQgPSBmdW5jdGlvbiByZWRBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElBZGQgPSBmdW5jdGlvbiByZWRJQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFN1YiA9IGZ1bmN0aW9uIHJlZFN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVN1YiA9IGZ1bmN0aW9uIHJlZElTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU2hsID0gZnVuY3Rpb24gcmVkU2hsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNobCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRNdWwgPSBmdW5jdGlvbiByZWRNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5tdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSU11bCA9IGZ1bmN0aW9uIHJlZElNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNxciA9IGZ1bmN0aW9uIHJlZFNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXIodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTcXIgPSBmdW5jdGlvbiByZWRJU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3FyKHRoaXMpO1xuICB9O1xuXG4gIC8vIFNxdWFyZSByb290IG92ZXIgcFxuICBCTi5wcm90b3R5cGUucmVkU3FydCA9IGZ1bmN0aW9uIHJlZFNxcnQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcnQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEludm0gPSBmdW5jdGlvbiByZWRJbnZtICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbnZtKHRoaXMpO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2AgJSBgcmVkIG1vZHVsb2BcbiAgQk4ucHJvdG90eXBlLnJlZE5lZyA9IGZ1bmN0aW9uIHJlZE5lZyAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5uZWcodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFBvdyA9IGZ1bmN0aW9uIHJlZFBvdyAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkICYmICFudW0ucmVkLCAncmVkUG93KG5vcm1hbE51bSknKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQucG93KHRoaXMsIG51bSk7XG4gIH07XG5cbiAgLy8gUHJpbWUgbnVtYmVycyB3aXRoIGVmZmljaWVudCByZWR1Y3Rpb25cbiAgdmFyIHByaW1lcyA9IHtcbiAgICBrMjU2OiBudWxsLFxuICAgIHAyMjQ6IG51bGwsXG4gICAgcDE5MjogbnVsbCxcbiAgICBwMjU1MTk6IG51bGxcbiAgfTtcblxuICAvLyBQc2V1ZG8tTWVyc2VubmUgcHJpbWVcbiAgZnVuY3Rpb24gTVByaW1lIChuYW1lLCBwKSB7XG4gICAgLy8gUCA9IDIgXiBOIC0gS1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wID0gbmV3IEJOKHAsIDE2KTtcbiAgICB0aGlzLm4gPSB0aGlzLnAuYml0TGVuZ3RoKCk7XG4gICAgdGhpcy5rID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKTtcblxuICAgIHRoaXMudG1wID0gdGhpcy5fdG1wKCk7XG4gIH1cblxuICBNUHJpbWUucHJvdG90eXBlLl90bXAgPSBmdW5jdGlvbiBfdG1wICgpIHtcbiAgICB2YXIgdG1wID0gbmV3IEJOKG51bGwpO1xuICAgIHRtcC53b3JkcyA9IG5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uIC8gMTMpKTtcbiAgICByZXR1cm4gdG1wO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaXJlZHVjZSA9IGZ1bmN0aW9uIGlyZWR1Y2UgKG51bSkge1xuICAgIC8vIEFzc3VtZXMgdGhhdCBgbnVtYCBpcyBsZXNzIHRoYW4gYFBeMmBcbiAgICAvLyBudW0gPSBISSAqICgyIF4gTiAtIEspICsgSEkgKiBLICsgTE8gPSBISSAqIEsgKyBMTyAobW9kIFApXG4gICAgdmFyIHIgPSBudW07XG4gICAgdmFyIHJsZW47XG5cbiAgICBkbyB7XG4gICAgICB0aGlzLnNwbGl0KHIsIHRoaXMudG1wKTtcbiAgICAgIHIgPSB0aGlzLmltdWxLKHIpO1xuICAgICAgciA9IHIuaWFkZCh0aGlzLnRtcCk7XG4gICAgICBybGVuID0gci5iaXRMZW5ndGgoKTtcbiAgICB9IHdoaWxlIChybGVuID4gdGhpcy5uKTtcblxuICAgIHZhciBjbXAgPSBybGVuIDwgdGhpcy5uID8gLTEgOiByLnVjbXAodGhpcy5wKTtcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICByLndvcmRzWzBdID0gMDtcbiAgICAgIHIubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKGNtcCA+IDApIHtcbiAgICAgIHIuaXN1Yih0aGlzLnApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoci5zdHJpcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIHIgaXMgQk4gdjQgaW5zdGFuY2VcbiAgICAgICAgci5zdHJpcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NSBpbnN0YW5jZVxuICAgICAgICByLl9zdHJpcCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dCkge1xuICAgIGlucHV0Lml1c2hybih0aGlzLm4sIDAsIG91dCk7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICByZXR1cm4gbnVtLmltdWwodGhpcy5rKTtcbiAgfTtcblxuICBmdW5jdGlvbiBLMjU2ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnazI1NicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYnKTtcbiAgfVxuICBpbmhlcml0cyhLMjU2LCBNUHJpbWUpO1xuXG4gIEsyNTYucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXRwdXQpIHtcbiAgICAvLyAyNTYgPSA5ICogMjYgKyAyMlxuICAgIHZhciBtYXNrID0gMHgzZmZmZmY7XG5cbiAgICB2YXIgb3V0TGVuID0gTWF0aC5taW4oaW5wdXQubGVuZ3RoLCA5KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG91dExlbjsgaSsrKSB7XG4gICAgICBvdXRwdXQud29yZHNbaV0gPSBpbnB1dC53b3Jkc1tpXTtcbiAgICB9XG4gICAgb3V0cHV0Lmxlbmd0aCA9IG91dExlbjtcblxuICAgIGlmIChpbnB1dC5sZW5ndGggPD0gOSkge1xuICAgICAgaW5wdXQud29yZHNbMF0gPSAwO1xuICAgICAgaW5wdXQubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTaGlmdCBieSA5IGxpbWJzXG4gICAgdmFyIHByZXYgPSBpbnB1dC53b3Jkc1s5XTtcbiAgICBvdXRwdXQud29yZHNbb3V0cHV0Lmxlbmd0aCsrXSA9IHByZXYgJiBtYXNrO1xuXG4gICAgZm9yIChpID0gMTA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5leHQgPSBpbnB1dC53b3Jkc1tpXSB8IDA7XG4gICAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gKChuZXh0ICYgbWFzaykgPDwgNCkgfCAocHJldiA+Pj4gMjIpO1xuICAgICAgcHJldiA9IG5leHQ7XG4gICAgfVxuICAgIHByZXYgPj4+PSAyMjtcbiAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gcHJldjtcbiAgICBpZiAocHJldiA9PT0gMCAmJiBpbnB1dC5sZW5ndGggPiAxMCkge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDEwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gOTtcbiAgICB9XG4gIH07XG5cbiAgSzI1Ni5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTAwMDAwM2QxID0gWyAweDQwLCAweDNkMSBdXG4gICAgbnVtLndvcmRzW251bS5sZW5ndGhdID0gMDtcbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aCArIDFdID0gMDtcbiAgICBudW0ubGVuZ3RoICs9IDI7XG5cbiAgICAvLyBib3VuZGVkIGF0OiAweDQwICogMHgzZmZmZmZmICsgMHgzZDAgPSAweDEwMDAwMDM5MFxuICAgIHZhciBsbyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gbnVtLndvcmRzW2ldIHwgMDtcbiAgICAgIGxvICs9IHcgKiAweDNkMTtcbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgbG8gPSB3ICogMHg0MCArICgobG8gLyAweDQwMDAwMDApIHwgMCk7XG4gICAgfVxuXG4gICAgLy8gRmFzdCBsZW5ndGggcmVkdWN0aW9uXG4gICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICBmdW5jdGlvbiBQMjI0ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDIyNCcsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEnKTtcbiAgfVxuICBpbmhlcml0cyhQMjI0LCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAxOTIgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMTkyJyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicpO1xuICB9XG4gIGluaGVyaXRzKFAxOTIsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDI1NTE5ICgpIHtcbiAgICAvLyAyIF4gMjU1IC0gMTlcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnMjU1MTknLFxuICAgICAgJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnKTtcbiAgfVxuICBpbmhlcml0cyhQMjU1MTksIE1QcmltZSk7XG5cbiAgUDI1NTE5LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxM1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoaSA9IChudW0ud29yZHNbaV0gfCAwKSAqIDB4MTMgKyBjYXJyeTtcbiAgICAgIHZhciBsbyA9IGhpICYgMHgzZmZmZmZmO1xuICAgICAgaGkgPj4+PSAyNjtcblxuICAgICAgbnVtLndvcmRzW2ldID0gbG87XG4gICAgICBjYXJyeSA9IGhpO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgLy8gRXhwb3J0ZWQgbW9zdGx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB1c2UgcGxhaW4gbmFtZSBpbnN0ZWFkXG4gIEJOLl9wcmltZSA9IGZ1bmN0aW9uIHByaW1lIChuYW1lKSB7XG4gICAgLy8gQ2FjaGVkIHZlcnNpb24gb2YgcHJpbWVcbiAgICBpZiAocHJpbWVzW25hbWVdKSByZXR1cm4gcHJpbWVzW25hbWVdO1xuXG4gICAgdmFyIHByaW1lO1xuICAgIGlmIChuYW1lID09PSAnazI1NicpIHtcbiAgICAgIHByaW1lID0gbmV3IEsyNTYoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjI0Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDIyNCgpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AxOTInKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMTkyKCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDI1NTE5Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDI1NTE5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBwcmltZSAnICsgbmFtZSk7XG4gICAgfVxuICAgIHByaW1lc1tuYW1lXSA9IHByaW1lO1xuXG4gICAgcmV0dXJuIHByaW1lO1xuICB9O1xuXG4gIC8vXG4gIC8vIEJhc2UgcmVkdWN0aW9uIGVuZ2luZVxuICAvL1xuICBmdW5jdGlvbiBSZWQgKG0pIHtcbiAgICBpZiAodHlwZW9mIG0gPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgcHJpbWUgPSBCTi5fcHJpbWUobSk7XG4gICAgICB0aGlzLm0gPSBwcmltZS5wO1xuICAgICAgdGhpcy5wcmltZSA9IHByaW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobS5ndG4oMSksICdtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEnKTtcbiAgICAgIHRoaXMubSA9IG07XG4gICAgICB0aGlzLnByaW1lID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkxID0gZnVuY3Rpb24gX3ZlcmlmeTEgKGEpIHtcbiAgICBhc3NlcnQoYS5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkLCAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTIgPSBmdW5jdGlvbiBfdmVyaWZ5MiAoYSwgYikge1xuICAgIGFzc2VydCgoYS5uZWdhdGl2ZSB8IGIubmVnYXRpdmUpID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQgJiYgYS5yZWQgPT09IGIucmVkLFxuICAgICAgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltb2QgPSBmdW5jdGlvbiBpbW9kIChhKSB7XG4gICAgaWYgKHRoaXMucHJpbWUpIHJldHVybiB0aGlzLnByaW1lLmlyZWR1Y2UoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICAgIHJldHVybiBhLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIGEuY2xvbmUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tLnN1YihhKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5zdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zaGwgPSBmdW5jdGlvbiBzaGwgKGEsIG51bSkge1xuICAgIHRoaXMuX3ZlcmlmeTEoYSk7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLnVzaGxuKG51bSkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5pbXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLm11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLmltdWwoYSwgYS5jbG9uZSgpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLm11bChhLCBhKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxcnQgPSBmdW5jdGlvbiBzcXJ0IChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgbW9kMyA9IHRoaXMubS5hbmRsbigzKTtcbiAgICBhc3NlcnQobW9kMyAlIDIgPT09IDEpO1xuXG4gICAgLy8gRmFzdCBjYXNlXG4gICAgaWYgKG1vZDMgPT09IDMpIHtcbiAgICAgIHZhciBwb3cgPSB0aGlzLm0uYWRkKG5ldyBCTigxKSkuaXVzaHJuKDIpO1xuICAgICAgcmV0dXJuIHRoaXMucG93KGEsIHBvdyk7XG4gICAgfVxuXG4gICAgLy8gVG9uZWxsaS1TaGFua3MgYWxnb3JpdGhtIChUb3RhbGx5IHVub3B0aW1pemVkIGFuZCBzbG93KVxuICAgIC8vXG4gICAgLy8gRmluZCBRIGFuZCBTLCB0aGF0IFEgKiAyIF4gUyA9IChQIC0gMSlcbiAgICB2YXIgcSA9IHRoaXMubS5zdWJuKDEpO1xuICAgIHZhciBzID0gMDtcbiAgICB3aGlsZSAoIXEuaXNaZXJvKCkgJiYgcS5hbmRsbigxKSA9PT0gMCkge1xuICAgICAgcysrO1xuICAgICAgcS5pdXNocm4oMSk7XG4gICAgfVxuICAgIGFzc2VydCghcS5pc1plcm8oKSk7XG5cbiAgICB2YXIgb25lID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHZhciBuT25lID0gb25lLnJlZE5lZygpO1xuXG4gICAgLy8gRmluZCBxdWFkcmF0aWMgbm9uLXJlc2lkdWVcbiAgICAvLyBOT1RFOiBNYXggaXMgc3VjaCBiZWNhdXNlIG9mIGdlbmVyYWxpemVkIFJpZW1hbm4gaHlwb3RoZXNpcy5cbiAgICB2YXIgbHBvdyA9IHRoaXMubS5zdWJuKDEpLml1c2hybigxKTtcbiAgICB2YXIgeiA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICB6ID0gbmV3IEJOKDIgKiB6ICogeikudG9SZWQodGhpcyk7XG5cbiAgICB3aGlsZSAodGhpcy5wb3coeiwgbHBvdykuY21wKG5PbmUpICE9PSAwKSB7XG4gICAgICB6LnJlZElBZGQobk9uZSk7XG4gICAgfVxuXG4gICAgdmFyIGMgPSB0aGlzLnBvdyh6LCBxKTtcbiAgICB2YXIgciA9IHRoaXMucG93KGEsIHEuYWRkbigxKS5pdXNocm4oMSkpO1xuICAgIHZhciB0ID0gdGhpcy5wb3coYSwgcSk7XG4gICAgdmFyIG0gPSBzO1xuICAgIHdoaWxlICh0LmNtcChvbmUpICE9PSAwKSB7XG4gICAgICB2YXIgdG1wID0gdDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyB0bXAuY21wKG9uZSkgIT09IDA7IGkrKykge1xuICAgICAgICB0bXAgPSB0bXAucmVkU3FyKCk7XG4gICAgICB9XG4gICAgICBhc3NlcnQoaSA8IG0pO1xuICAgICAgdmFyIGIgPSB0aGlzLnBvdyhjLCBuZXcgQk4oMSkuaXVzaGxuKG0gLSBpIC0gMSkpO1xuXG4gICAgICByID0gci5yZWRNdWwoYik7XG4gICAgICBjID0gYi5yZWRTcXIoKTtcbiAgICAgIHQgPSB0LnJlZE11bChjKTtcbiAgICAgIG0gPSBpO1xuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICB2YXIgaW52ID0gYS5faW52bXAodGhpcy5tKTtcbiAgICBpZiAoaW52Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpbnYubmVnYXRpdmUgPSAwO1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpLnJlZE5lZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludik7XG4gICAgfVxuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChhLCBudW0pIHtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIGlmIChudW0uY21wbigxKSA9PT0gMCkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciB3aW5kb3dTaXplID0gNDtcbiAgICB2YXIgd25kID0gbmV3IEFycmF5KDEgPDwgd2luZG93U2l6ZSk7XG4gICAgd25kWzBdID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHduZFsxXSA9IGE7XG4gICAgZm9yICh2YXIgaSA9IDI7IGkgPCB3bmQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHduZFtpXSA9IHRoaXMubXVsKHduZFtpIC0gMV0sIGEpO1xuICAgIH1cblxuICAgIHZhciByZXMgPSB3bmRbMF07XG4gICAgdmFyIGN1cnJlbnQgPSAwO1xuICAgIHZhciBjdXJyZW50TGVuID0gMDtcbiAgICB2YXIgc3RhcnQgPSBudW0uYml0TGVuZ3RoKCkgJSAyNjtcbiAgICBpZiAoc3RhcnQgPT09IDApIHtcbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgZm9yIChpID0gbnVtLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IG51bS53b3Jkc1tpXTtcbiAgICAgIGZvciAodmFyIGogPSBzdGFydCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgIHZhciBiaXQgPSAod29yZCA+PiBqKSAmIDE7XG4gICAgICAgIGlmIChyZXMgIT09IHduZFswXSkge1xuICAgICAgICAgIHJlcyA9IHRoaXMuc3FyKHJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYml0ID09PSAwICYmIGN1cnJlbnQgPT09IDApIHtcbiAgICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnQgPDw9IDE7XG4gICAgICAgIGN1cnJlbnQgfD0gYml0O1xuICAgICAgICBjdXJyZW50TGVuKys7XG4gICAgICAgIGlmIChjdXJyZW50TGVuICE9PSB3aW5kb3dTaXplICYmIChpICE9PSAwIHx8IGogIT09IDApKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSB0aGlzLm11bChyZXMsIHduZFtjdXJyZW50XSk7XG4gICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICBjdXJyZW50ID0gMDtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgdmFyIHIgPSBudW0udW1vZCh0aGlzLm0pO1xuXG4gICAgcmV0dXJuIHIgPT09IG51bSA/IHIuY2xvbmUoKSA6IHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgcmVzID0gbnVtLmNsb25lKCk7XG4gICAgcmVzLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvL1xuICAvLyBNb250Z29tZXJ5IG1ldGhvZCBlbmdpbmVcbiAgLy9cblxuICBCTi5tb250ID0gZnVuY3Rpb24gbW9udCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBNb250KG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gTW9udCAobSkge1xuICAgIFJlZC5jYWxsKHRoaXMsIG0pO1xuXG4gICAgdGhpcy5zaGlmdCA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICBpZiAodGhpcy5zaGlmdCAlIDI2ICE9PSAwKSB7XG4gICAgICB0aGlzLnNoaWZ0ICs9IDI2IC0gKHRoaXMuc2hpZnQgJSAyNik7XG4gICAgfVxuXG4gICAgdGhpcy5yID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLnNoaWZ0KTtcbiAgICB0aGlzLnIyID0gdGhpcy5pbW9kKHRoaXMuci5zcXIoKSk7XG4gICAgdGhpcy5yaW52ID0gdGhpcy5yLl9pbnZtcCh0aGlzLm0pO1xuXG4gICAgdGhpcy5taW52ID0gdGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pO1xuICAgIHRoaXMubWludiA9IHRoaXMubWludi51bW9kKHRoaXMucik7XG4gICAgdGhpcy5taW52ID0gdGhpcy5yLnN1Yih0aGlzLm1pbnYpO1xuICB9XG4gIGluaGVyaXRzKE1vbnQsIFJlZCk7XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5pbW9kKG51bS51c2hsbih0aGlzLnNoaWZ0KSk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHIgPSB0aGlzLmltb2QobnVtLm11bCh0aGlzLnJpbnYpKTtcbiAgICByLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSB7XG4gICAgICBhLndvcmRzWzBdID0gMDtcbiAgICAgIGEubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiBhO1xuICAgIH1cblxuICAgIHZhciB0ID0gYS5pbXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuXG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDApLl9mb3JjZVJlZCh0aGlzKTtcblxuICAgIHZhciB0ID0gYS5tdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIC8vIChBUileLTEgKiBSXjIgPSAoQV4tMSAqIFJeLTEpICogUl4yID0gQV4tMSAqIFJcbiAgICB2YXIgcmVzID0gdGhpcy5pbW9kKGEuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKTtcbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcbn0pKHR5cGVvZiBtb2R1bGUgPT09ICd1bmRlZmluZWQnIHx8IG1vZHVsZSwgdGhpcyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBHZXRJbnRyaW5zaWMgPSByZXF1aXJlKCdnZXQtaW50cmluc2ljJyk7XG5cbnZhciAkZ09QRCA9IEdldEludHJpbnNpYygnJU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IlJyk7XG5pZiAoJGdPUEQpIHtcblx0dHJ5IHtcblx0XHQkZ09QRChbXSwgJ2xlbmd0aCcpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0Ly8gSUUgOCBoYXMgYSBicm9rZW4gZ09QRFxuXHRcdCRnT1BEID0gbnVsbDtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9ICRnT1BEO1xuIiwiLyoqXG4gKiBDb2RlIHJlZmFjdG9yZWQgZnJvbSBNb3ppbGxhIERldmVsb3BlciBOZXR3b3JrOlxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2Fzc2lnblxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgZmlyc3RTb3VyY2UpIHtcbiAgaWYgKHRhcmdldCA9PT0gdW5kZWZpbmVkIHx8IHRhcmdldCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IGZpcnN0IGFyZ3VtZW50IHRvIG9iamVjdCcpO1xuICB9XG5cbiAgdmFyIHRvID0gT2JqZWN0KHRhcmdldCk7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5leHRTb3VyY2UgPSBhcmd1bWVudHNbaV07XG4gICAgaWYgKG5leHRTb3VyY2UgPT09IHVuZGVmaW5lZCB8fCBuZXh0U291cmNlID09PSBudWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIga2V5c0FycmF5ID0gT2JqZWN0LmtleXMoT2JqZWN0KG5leHRTb3VyY2UpKTtcbiAgICBmb3IgKHZhciBuZXh0SW5kZXggPSAwLCBsZW4gPSBrZXlzQXJyYXkubGVuZ3RoOyBuZXh0SW5kZXggPCBsZW47IG5leHRJbmRleCsrKSB7XG4gICAgICB2YXIgbmV4dEtleSA9IGtleXNBcnJheVtuZXh0SW5kZXhdO1xuICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG5leHRTb3VyY2UsIG5leHRLZXkpO1xuICAgICAgaWYgKGRlc2MgIT09IHVuZGVmaW5lZCAmJiBkZXNjLmVudW1lcmFibGUpIHtcbiAgICAgICAgdG9bbmV4dEtleV0gPSBuZXh0U291cmNlW25leHRLZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdG87XG59XG5cbmZ1bmN0aW9uIHBvbHlmaWxsKCkge1xuICBpZiAoIU9iamVjdC5hc3NpZ24pIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LCAnYXNzaWduJywge1xuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBhc3NpZ25cbiAgICB9KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYXNzaWduOiBhc3NpZ24sXG4gIHBvbHlmaWxsOiBwb2x5ZmlsbFxufTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSID0gdHlwZW9mIFJlZmxlY3QgPT09ICdvYmplY3QnID8gUmVmbGVjdCA6IG51bGxcbnZhciBSZWZsZWN0QXBwbHkgPSBSICYmIHR5cGVvZiBSLmFwcGx5ID09PSAnZnVuY3Rpb24nXG4gID8gUi5hcHBseVxuICA6IGZ1bmN0aW9uIFJlZmxlY3RBcHBseSh0YXJnZXQsIHJlY2VpdmVyLCBhcmdzKSB7XG4gICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKHRhcmdldCwgcmVjZWl2ZXIsIGFyZ3MpO1xuICB9XG5cbnZhciBSZWZsZWN0T3duS2V5c1xuaWYgKFIgJiYgdHlwZW9mIFIub3duS2V5cyA9PT0gJ2Z1bmN0aW9uJykge1xuICBSZWZsZWN0T3duS2V5cyA9IFIub3duS2V5c1xufSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gIFJlZmxlY3RPd25LZXlzID0gZnVuY3Rpb24gUmVmbGVjdE93bktleXModGFyZ2V0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldClcbiAgICAgIC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpKTtcbiAgfTtcbn0gZWxzZSB7XG4gIFJlZmxlY3RPd25LZXlzID0gZnVuY3Rpb24gUmVmbGVjdE93bktleXModGFyZ2V0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIFByb2Nlc3NFbWl0V2FybmluZyh3YXJuaW5nKSB7XG4gIGlmIChjb25zb2xlICYmIGNvbnNvbGUud2FybikgY29uc29sZS53YXJuKHdhcm5pbmcpO1xufVxuXG52YXIgTnVtYmVySXNOYU4gPSBOdW1iZXIuaXNOYU4gfHwgZnVuY3Rpb24gTnVtYmVySXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gRXZlbnRFbWl0dGVyKCkge1xuICBFdmVudEVtaXR0ZXIuaW5pdC5jYWxsKHRoaXMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFdmVudEVtaXR0ZXI7XG5tb2R1bGUuZXhwb3J0cy5vbmNlID0gb25jZTtcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC4xMC54XG5FdmVudEVtaXR0ZXIuRXZlbnRFbWl0dGVyID0gRXZlbnRFbWl0dGVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHMgPSB1bmRlZmluZWQ7XG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHNDb3VudCA9IDA7XG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnMgPSB1bmRlZmluZWQ7XG5cbi8vIEJ5IGRlZmF1bHQgRXZlbnRFbWl0dGVycyB3aWxsIHByaW50IGEgd2FybmluZyBpZiBtb3JlIHRoYW4gMTAgbGlzdGVuZXJzIGFyZVxuLy8gYWRkZWQgdG8gaXQuIFRoaXMgaXMgYSB1c2VmdWwgZGVmYXVsdCB3aGljaCBoZWxwcyBmaW5kaW5nIG1lbW9yeSBsZWFrcy5cbnZhciBkZWZhdWx0TWF4TGlzdGVuZXJzID0gMTA7XG5cbmZ1bmN0aW9uIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpIHtcbiAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgbGlzdGVuZXIpO1xuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShFdmVudEVtaXR0ZXIsICdkZWZhdWx0TWF4TGlzdGVuZXJzJywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBkZWZhdWx0TWF4TGlzdGVuZXJzO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uKGFyZykge1xuICAgIGlmICh0eXBlb2YgYXJnICE9PSAnbnVtYmVyJyB8fCBhcmcgPCAwIHx8IE51bWJlcklzTmFOKGFyZykpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyArIGFyZyArICcuJyk7XG4gICAgfVxuICAgIGRlZmF1bHRNYXhMaXN0ZW5lcnMgPSBhcmc7XG4gIH1cbn0pO1xuXG5FdmVudEVtaXR0ZXIuaW5pdCA9IGZ1bmN0aW9uKCkge1xuXG4gIGlmICh0aGlzLl9ldmVudHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy5fZXZlbnRzID09PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2V2ZW50cykge1xuICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICB9XG5cbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gdGhpcy5fbWF4TGlzdGVuZXJzIHx8IHVuZGVmaW5lZDtcbn07XG5cbi8vIE9idmlvdXNseSBub3QgYWxsIEVtaXR0ZXJzIHNob3VsZCBiZSBsaW1pdGVkIHRvIDEwLiBUaGlzIGZ1bmN0aW9uIGFsbG93c1xuLy8gdGhhdCB0byBiZSBpbmNyZWFzZWQuIFNldCB0byB6ZXJvIGZvciB1bmxpbWl0ZWQuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnNldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uIHNldE1heExpc3RlbmVycyhuKSB7XG4gIGlmICh0eXBlb2YgbiAhPT0gJ251bWJlcicgfHwgbiA8IDAgfHwgTnVtYmVySXNOYU4obikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mIFwiblwiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcgKyBuICsgJy4nKTtcbiAgfVxuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSBuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIF9nZXRNYXhMaXN0ZW5lcnModGhhdCkge1xuICBpZiAodGhhdC5fbWF4TGlzdGVuZXJzID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIEV2ZW50RW1pdHRlci5kZWZhdWx0TWF4TGlzdGVuZXJzO1xuICByZXR1cm4gdGhhdC5fbWF4TGlzdGVuZXJzO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmdldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uIGdldE1heExpc3RlbmVycygpIHtcbiAgcmV0dXJuIF9nZXRNYXhMaXN0ZW5lcnModGhpcyk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbiBlbWl0KHR5cGUpIHtcbiAgdmFyIGFyZ3MgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICB2YXIgZG9FcnJvciA9ICh0eXBlID09PSAnZXJyb3InKTtcblxuICB2YXIgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICBpZiAoZXZlbnRzICE9PSB1bmRlZmluZWQpXG4gICAgZG9FcnJvciA9IChkb0Vycm9yICYmIGV2ZW50cy5lcnJvciA9PT0gdW5kZWZpbmVkKTtcbiAgZWxzZSBpZiAoIWRvRXJyb3IpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIElmIHRoZXJlIGlzIG5vICdlcnJvcicgZXZlbnQgbGlzdGVuZXIgdGhlbiB0aHJvdy5cbiAgaWYgKGRvRXJyb3IpIHtcbiAgICB2YXIgZXI7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMClcbiAgICAgIGVyID0gYXJnc1swXTtcbiAgICBpZiAoZXIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgLy8gTm90ZTogVGhlIGNvbW1lbnRzIG9uIHRoZSBgdGhyb3dgIGxpbmVzIGFyZSBpbnRlbnRpb25hbCwgdGhleSBzaG93XG4gICAgICAvLyB1cCBpbiBOb2RlJ3Mgb3V0cHV0IGlmIHRoaXMgcmVzdWx0cyBpbiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLlxuICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50XG4gICAgfVxuICAgIC8vIEF0IGxlYXN0IGdpdmUgc29tZSBraW5kIG9mIGNvbnRleHQgdG8gdGhlIHVzZXJcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCdVbmhhbmRsZWQgZXJyb3IuJyArIChlciA/ICcgKCcgKyBlci5tZXNzYWdlICsgJyknIDogJycpKTtcbiAgICBlcnIuY29udGV4dCA9IGVyO1xuICAgIHRocm93IGVycjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgfVxuXG4gIHZhciBoYW5kbGVyID0gZXZlbnRzW3R5cGVdO1xuXG4gIGlmIChoYW5kbGVyID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIFJlZmxlY3RBcHBseShoYW5kbGVyLCB0aGlzLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbGVuID0gaGFuZGxlci5sZW5ndGg7XG4gICAgdmFyIGxpc3RlbmVycyA9IGFycmF5Q2xvbmUoaGFuZGxlciwgbGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKVxuICAgICAgUmVmbGVjdEFwcGx5KGxpc3RlbmVyc1tpXSwgdGhpcywgYXJncyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmZ1bmN0aW9uIF9hZGRMaXN0ZW5lcih0YXJnZXQsIHR5cGUsIGxpc3RlbmVyLCBwcmVwZW5kKSB7XG4gIHZhciBtO1xuICB2YXIgZXZlbnRzO1xuICB2YXIgZXhpc3Rpbmc7XG5cbiAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG5cbiAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG4gIGlmIChldmVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB0YXJnZXQuX2V2ZW50c0NvdW50ID0gMDtcbiAgfSBlbHNlIHtcbiAgICAvLyBUbyBhdm9pZCByZWN1cnNpb24gaW4gdGhlIGNhc2UgdGhhdCB0eXBlID09PSBcIm5ld0xpc3RlbmVyXCIhIEJlZm9yZVxuICAgIC8vIGFkZGluZyBpdCB0byB0aGUgbGlzdGVuZXJzLCBmaXJzdCBlbWl0IFwibmV3TGlzdGVuZXJcIi5cbiAgICBpZiAoZXZlbnRzLm5ld0xpc3RlbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRhcmdldC5lbWl0KCduZXdMaXN0ZW5lcicsIHR5cGUsXG4gICAgICAgICAgICAgICAgICBsaXN0ZW5lci5saXN0ZW5lciA/IGxpc3RlbmVyLmxpc3RlbmVyIDogbGlzdGVuZXIpO1xuXG4gICAgICAvLyBSZS1hc3NpZ24gYGV2ZW50c2AgYmVjYXVzZSBhIG5ld0xpc3RlbmVyIGhhbmRsZXIgY291bGQgaGF2ZSBjYXVzZWQgdGhlXG4gICAgICAvLyB0aGlzLl9ldmVudHMgdG8gYmUgYXNzaWduZWQgdG8gYSBuZXcgb2JqZWN0XG4gICAgICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcbiAgICB9XG4gICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV07XG4gIH1cblxuICBpZiAoZXhpc3RpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE9wdGltaXplIHRoZSBjYXNlIG9mIG9uZSBsaXN0ZW5lci4gRG9uJ3QgbmVlZCB0aGUgZXh0cmEgYXJyYXkgb2JqZWN0LlxuICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdID0gbGlzdGVuZXI7XG4gICAgKyt0YXJnZXQuX2V2ZW50c0NvdW50O1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgZXhpc3RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIEFkZGluZyB0aGUgc2Vjb25kIGVsZW1lbnQsIG5lZWQgdG8gY2hhbmdlIHRvIGFycmF5LlxuICAgICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV0gPVxuICAgICAgICBwcmVwZW5kID8gW2xpc3RlbmVyLCBleGlzdGluZ10gOiBbZXhpc3RpbmcsIGxpc3RlbmVyXTtcbiAgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZ290IGFuIGFycmF5LCBqdXN0IGFwcGVuZC5cbiAgICB9IGVsc2UgaWYgKHByZXBlbmQpIHtcbiAgICAgIGV4aXN0aW5nLnVuc2hpZnQobGlzdGVuZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBleGlzdGluZy5wdXNoKGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgbGlzdGVuZXIgbGVha1xuICAgIG0gPSBfZ2V0TWF4TGlzdGVuZXJzKHRhcmdldCk7XG4gICAgaWYgKG0gPiAwICYmIGV4aXN0aW5nLmxlbmd0aCA+IG0gJiYgIWV4aXN0aW5nLndhcm5lZCkge1xuICAgICAgZXhpc3Rpbmcud2FybmVkID0gdHJ1ZTtcbiAgICAgIC8vIE5vIGVycm9yIGNvZGUgZm9yIHRoaXMgc2luY2UgaXQgaXMgYSBXYXJuaW5nXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgIHZhciB3ID0gbmV3IEVycm9yKCdQb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5IGxlYWsgZGV0ZWN0ZWQuICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZy5sZW5ndGggKyAnICcgKyBTdHJpbmcodHlwZSkgKyAnIGxpc3RlbmVycyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FkZGVkLiBVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY3JlYXNlIGxpbWl0Jyk7XG4gICAgICB3Lm5hbWUgPSAnTWF4TGlzdGVuZXJzRXhjZWVkZWRXYXJuaW5nJztcbiAgICAgIHcuZW1pdHRlciA9IHRhcmdldDtcbiAgICAgIHcudHlwZSA9IHR5cGU7XG4gICAgICB3LmNvdW50ID0gZXhpc3RpbmcubGVuZ3RoO1xuICAgICAgUHJvY2Vzc0VtaXRXYXJuaW5nKHcpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXIgPSBmdW5jdGlvbiBhZGRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICByZXR1cm4gX2FkZExpc3RlbmVyKHRoaXMsIHR5cGUsIGxpc3RlbmVyLCBmYWxzZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5wcmVwZW5kTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHByZXBlbmRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgcmV0dXJuIF9hZGRMaXN0ZW5lcih0aGlzLCB0eXBlLCBsaXN0ZW5lciwgdHJ1ZSk7XG4gICAgfTtcblxuZnVuY3Rpb24gb25jZVdyYXBwZXIoKSB7XG4gIGlmICghdGhpcy5maXJlZCkge1xuICAgIHRoaXMudGFyZ2V0LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSwgdGhpcy53cmFwRm4pO1xuICAgIHRoaXMuZmlyZWQgPSB0cnVlO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHRoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk7XG4gICAgcmV0dXJuIHRoaXMubGlzdGVuZXIuYXBwbHkodGhpcy50YXJnZXQsIGFyZ3VtZW50cyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX29uY2VXcmFwKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIpIHtcbiAgdmFyIHN0YXRlID0geyBmaXJlZDogZmFsc2UsIHdyYXBGbjogdW5kZWZpbmVkLCB0YXJnZXQ6IHRhcmdldCwgdHlwZTogdHlwZSwgbGlzdGVuZXI6IGxpc3RlbmVyIH07XG4gIHZhciB3cmFwcGVkID0gb25jZVdyYXBwZXIuYmluZChzdGF0ZSk7XG4gIHdyYXBwZWQubGlzdGVuZXIgPSBsaXN0ZW5lcjtcbiAgc3RhdGUud3JhcEZuID0gd3JhcHBlZDtcbiAgcmV0dXJuIHdyYXBwZWQ7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub25jZSA9IGZ1bmN0aW9uIG9uY2UodHlwZSwgbGlzdGVuZXIpIHtcbiAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG4gIHRoaXMub24odHlwZSwgX29uY2VXcmFwKHRoaXMsIHR5cGUsIGxpc3RlbmVyKSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyID1cbiAgICBmdW5jdGlvbiBwcmVwZW5kT25jZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcbiAgICAgIHRoaXMucHJlcGVuZExpc3RlbmVyKHR5cGUsIF9vbmNlV3JhcCh0aGlzLCB0eXBlLCBsaXN0ZW5lcikpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuLy8gRW1pdHMgYSAncmVtb3ZlTGlzdGVuZXInIGV2ZW50IGlmIGFuZCBvbmx5IGlmIHRoZSBsaXN0ZW5lciB3YXMgcmVtb3ZlZC5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICB2YXIgbGlzdCwgZXZlbnRzLCBwb3NpdGlvbiwgaSwgb3JpZ2luYWxMaXN0ZW5lcjtcblxuICAgICAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG5cbiAgICAgIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgICAgIGlmIChldmVudHMgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIGxpc3QgPSBldmVudHNbdHlwZV07XG4gICAgICBpZiAobGlzdCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgaWYgKGxpc3QgPT09IGxpc3RlbmVyIHx8IGxpc3QubGlzdGVuZXIgPT09IGxpc3RlbmVyKSB7XG4gICAgICAgIGlmICgtLXRoaXMuX2V2ZW50c0NvdW50ID09PSAwKVxuICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSBldmVudHNbdHlwZV07XG4gICAgICAgICAgaWYgKGV2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgICAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0Lmxpc3RlbmVyIHx8IGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbGlzdCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBwb3NpdGlvbiA9IC0xO1xuXG4gICAgICAgIGZvciAoaSA9IGxpc3QubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICBpZiAobGlzdFtpXSA9PT0gbGlzdGVuZXIgfHwgbGlzdFtpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgICAgIG9yaWdpbmFsTGlzdGVuZXIgPSBsaXN0W2ldLmxpc3RlbmVyO1xuICAgICAgICAgICAgcG9zaXRpb24gPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uIDwgMClcbiAgICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgICBpZiAocG9zaXRpb24gPT09IDApXG4gICAgICAgICAgbGlzdC5zaGlmdCgpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBzcGxpY2VPbmUobGlzdCwgcG9zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxpc3QubGVuZ3RoID09PSAxKVxuICAgICAgICAgIGV2ZW50c1t0eXBlXSA9IGxpc3RbMF07XG5cbiAgICAgICAgaWYgKGV2ZW50cy5yZW1vdmVMaXN0ZW5lciAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBvcmlnaW5hbExpc3RlbmVyIHx8IGxpc3RlbmVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vZmYgPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9XG4gICAgZnVuY3Rpb24gcmVtb3ZlQWxsTGlzdGVuZXJzKHR5cGUpIHtcbiAgICAgIHZhciBsaXN0ZW5lcnMsIGV2ZW50cywgaTtcblxuICAgICAgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICAgICAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgLy8gbm90IGxpc3RlbmluZyBmb3IgcmVtb3ZlTGlzdGVuZXIsIG5vIG5lZWQgdG8gZW1pdFxuICAgICAgaWYgKGV2ZW50cy5yZW1vdmVMaXN0ZW5lciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnRzW3R5cGVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAoLS10aGlzLl9ldmVudHNDb3VudCA9PT0gMClcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZGVsZXRlIGV2ZW50c1t0eXBlXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgLy8gZW1pdCByZW1vdmVMaXN0ZW5lciBmb3IgYWxsIGxpc3RlbmVycyBvbiBhbGwgZXZlbnRzXG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGV2ZW50cyk7XG4gICAgICAgIHZhciBrZXk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICBpZiAoa2V5ID09PSAncmVtb3ZlTGlzdGVuZXInKSBjb250aW51ZTtcbiAgICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCdyZW1vdmVMaXN0ZW5lcicpO1xuICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBsaXN0ZW5lcnMgPSBldmVudHNbdHlwZV07XG5cbiAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXJzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzKTtcbiAgICAgIH0gZWxzZSBpZiAobGlzdGVuZXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gTElGTyBvcmRlclxuICAgICAgICBmb3IgKGkgPSBsaXN0ZW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuZnVuY3Rpb24gX2xpc3RlbmVycyh0YXJnZXQsIHR5cGUsIHVud3JhcCkge1xuICB2YXIgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG5cbiAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBbXTtcblxuICB2YXIgZXZsaXN0ZW5lciA9IGV2ZW50c1t0eXBlXTtcbiAgaWYgKGV2bGlzdGVuZXIgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gW107XG5cbiAgaWYgKHR5cGVvZiBldmxpc3RlbmVyID09PSAnZnVuY3Rpb24nKVxuICAgIHJldHVybiB1bndyYXAgPyBbZXZsaXN0ZW5lci5saXN0ZW5lciB8fCBldmxpc3RlbmVyXSA6IFtldmxpc3RlbmVyXTtcblxuICByZXR1cm4gdW53cmFwID9cbiAgICB1bndyYXBMaXN0ZW5lcnMoZXZsaXN0ZW5lcikgOiBhcnJheUNsb25lKGV2bGlzdGVuZXIsIGV2bGlzdGVuZXIubGVuZ3RoKTtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lcnMgPSBmdW5jdGlvbiBsaXN0ZW5lcnModHlwZSkge1xuICByZXR1cm4gX2xpc3RlbmVycyh0aGlzLCB0eXBlLCB0cnVlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmF3TGlzdGVuZXJzID0gZnVuY3Rpb24gcmF3TGlzdGVuZXJzKHR5cGUpIHtcbiAgcmV0dXJuIF9saXN0ZW5lcnModGhpcywgdHlwZSwgZmFsc2UpO1xufTtcblxuRXZlbnRFbWl0dGVyLmxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbihlbWl0dGVyLCB0eXBlKSB7XG4gIGlmICh0eXBlb2YgZW1pdHRlci5saXN0ZW5lckNvdW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGVtaXR0ZXIubGlzdGVuZXJDb3VudCh0eXBlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbGlzdGVuZXJDb3VudC5jYWxsKGVtaXR0ZXIsIHR5cGUpO1xuICB9XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVyQ291bnQgPSBsaXN0ZW5lckNvdW50O1xuZnVuY3Rpb24gbGlzdGVuZXJDb3VudCh0eXBlKSB7XG4gIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHM7XG5cbiAgaWYgKGV2ZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIGV2bGlzdGVuZXIgPSBldmVudHNbdHlwZV07XG5cbiAgICBpZiAodHlwZW9mIGV2bGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSBpZiAoZXZsaXN0ZW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZXZsaXN0ZW5lci5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIDA7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZXZlbnROYW1lcyA9IGZ1bmN0aW9uIGV2ZW50TmFtZXMoKSB7XG4gIHJldHVybiB0aGlzLl9ldmVudHNDb3VudCA+IDAgPyBSZWZsZWN0T3duS2V5cyh0aGlzLl9ldmVudHMpIDogW107XG59O1xuXG5mdW5jdGlvbiBhcnJheUNsb25lKGFyciwgbikge1xuICB2YXIgY29weSA9IG5ldyBBcnJheShuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpXG4gICAgY29weVtpXSA9IGFycltpXTtcbiAgcmV0dXJuIGNvcHk7XG59XG5cbmZ1bmN0aW9uIHNwbGljZU9uZShsaXN0LCBpbmRleCkge1xuICBmb3IgKDsgaW5kZXggKyAxIDwgbGlzdC5sZW5ndGg7IGluZGV4KyspXG4gICAgbGlzdFtpbmRleF0gPSBsaXN0W2luZGV4ICsgMV07XG4gIGxpc3QucG9wKCk7XG59XG5cbmZ1bmN0aW9uIHVud3JhcExpc3RlbmVycyhhcnIpIHtcbiAgdmFyIHJldCA9IG5ldyBBcnJheShhcnIubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXQubGVuZ3RoOyArK2kpIHtcbiAgICByZXRbaV0gPSBhcnJbaV0ubGlzdGVuZXIgfHwgYXJyW2ldO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG9uY2UoZW1pdHRlciwgbmFtZSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGVycm9yTGlzdGVuZXIoZXJyKSB7XG4gICAgICBlbWl0dGVyLnJlbW92ZUxpc3RlbmVyKG5hbWUsIHJlc29sdmVyKTtcbiAgICAgIHJlamVjdChlcnIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc29sdmVyKCkge1xuICAgICAgaWYgKHR5cGVvZiBlbWl0dGVyLnJlbW92ZUxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JMaXN0ZW5lcik7XG4gICAgICB9XG4gICAgICByZXNvbHZlKFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7XG4gICAgfTtcblxuICAgIGV2ZW50VGFyZ2V0QWdub3N0aWNBZGRMaXN0ZW5lcihlbWl0dGVyLCBuYW1lLCByZXNvbHZlciwgeyBvbmNlOiB0cnVlIH0pO1xuICAgIGlmIChuYW1lICE9PSAnZXJyb3InKSB7XG4gICAgICBhZGRFcnJvckhhbmRsZXJJZkV2ZW50RW1pdHRlcihlbWl0dGVyLCBlcnJvckxpc3RlbmVyLCB7IG9uY2U6IHRydWUgfSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkRXJyb3JIYW5kbGVySWZFdmVudEVtaXR0ZXIoZW1pdHRlciwgaGFuZGxlciwgZmxhZ3MpIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLm9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZXZlbnRUYXJnZXRBZ25vc3RpY0FkZExpc3RlbmVyKGVtaXR0ZXIsICdlcnJvcicsIGhhbmRsZXIsIGZsYWdzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBldmVudFRhcmdldEFnbm9zdGljQWRkTGlzdGVuZXIoZW1pdHRlciwgbmFtZSwgbGlzdGVuZXIsIGZsYWdzKSB7XG4gIGlmICh0eXBlb2YgZW1pdHRlci5vbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmIChmbGFncy5vbmNlKSB7XG4gICAgICBlbWl0dGVyLm9uY2UobmFtZSwgbGlzdGVuZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbWl0dGVyLm9uKG5hbWUsIGxpc3RlbmVyKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIGVtaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIEV2ZW50VGFyZ2V0IGRvZXMgbm90IGhhdmUgYGVycm9yYCBldmVudCBzZW1hbnRpY3MgbGlrZSBOb2RlXG4gICAgLy8gRXZlbnRFbWl0dGVycywgd2UgZG8gbm90IGxpc3RlbiBmb3IgYGVycm9yYCBldmVudHMgaGVyZS5cbiAgICBlbWl0dGVyLmFkZEV2ZW50TGlzdGVuZXIobmFtZSwgZnVuY3Rpb24gd3JhcExpc3RlbmVyKGFyZykge1xuICAgICAgLy8gSUUgZG9lcyBub3QgaGF2ZSBidWlsdGluIGB7IG9uY2U6IHRydWUgfWAgc3VwcG9ydCBzbyB3ZVxuICAgICAgLy8gaGF2ZSB0byBkbyBpdCBtYW51YWxseS5cbiAgICAgIGlmIChmbGFncy5vbmNlKSB7XG4gICAgICAgIGVtaXR0ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCB3cmFwTGlzdGVuZXIpO1xuICAgICAgfVxuICAgICAgbGlzdGVuZXIoYXJnKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJlbWl0dGVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEV2ZW50RW1pdHRlci4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGVtaXR0ZXIpO1xuICB9XG59XG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBNRDUgPSByZXF1aXJlKCdtZDUuanMnKVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbmZ1bmN0aW9uIEVWUF9CeXRlc1RvS2V5IChwYXNzd29yZCwgc2FsdCwga2V5Qml0cywgaXZMZW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocGFzc3dvcmQpKSBwYXNzd29yZCA9IEJ1ZmZlci5mcm9tKHBhc3N3b3JkLCAnYmluYXJ5JylcbiAgaWYgKHNhbHQpIHtcbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihzYWx0KSkgc2FsdCA9IEJ1ZmZlci5mcm9tKHNhbHQsICdiaW5hcnknKVxuICAgIGlmIChzYWx0Lmxlbmd0aCAhPT0gOCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NhbHQgc2hvdWxkIGJlIEJ1ZmZlciB3aXRoIDggYnl0ZSBsZW5ndGgnKVxuICB9XG5cbiAgdmFyIGtleUxlbiA9IGtleUJpdHMgLyA4XG4gIHZhciBrZXkgPSBCdWZmZXIuYWxsb2Moa2V5TGVuKVxuICB2YXIgaXYgPSBCdWZmZXIuYWxsb2MoaXZMZW4gfHwgMClcbiAgdmFyIHRtcCA9IEJ1ZmZlci5hbGxvYygwKVxuXG4gIHdoaWxlIChrZXlMZW4gPiAwIHx8IGl2TGVuID4gMCkge1xuICAgIHZhciBoYXNoID0gbmV3IE1ENSgpXG4gICAgaGFzaC51cGRhdGUodG1wKVxuICAgIGhhc2gudXBkYXRlKHBhc3N3b3JkKVxuICAgIGlmIChzYWx0KSBoYXNoLnVwZGF0ZShzYWx0KVxuICAgIHRtcCA9IGhhc2guZGlnZXN0KClcblxuICAgIHZhciB1c2VkID0gMFxuXG4gICAgaWYgKGtleUxlbiA+IDApIHtcbiAgICAgIHZhciBrZXlTdGFydCA9IGtleS5sZW5ndGggLSBrZXlMZW5cbiAgICAgIHVzZWQgPSBNYXRoLm1pbihrZXlMZW4sIHRtcC5sZW5ndGgpXG4gICAgICB0bXAuY29weShrZXksIGtleVN0YXJ0LCAwLCB1c2VkKVxuICAgICAga2V5TGVuIC09IHVzZWRcbiAgICB9XG5cbiAgICBpZiAodXNlZCA8IHRtcC5sZW5ndGggJiYgaXZMZW4gPiAwKSB7XG4gICAgICB2YXIgaXZTdGFydCA9IGl2Lmxlbmd0aCAtIGl2TGVuXG4gICAgICB2YXIgbGVuZ3RoID0gTWF0aC5taW4oaXZMZW4sIHRtcC5sZW5ndGggLSB1c2VkKVxuICAgICAgdG1wLmNvcHkoaXYsIGl2U3RhcnQsIHVzZWQsIHVzZWQgKyBsZW5ndGgpXG4gICAgICBpdkxlbiAtPSBsZW5ndGhcbiAgICB9XG4gIH1cblxuICB0bXAuZmlsbCgwKVxuICByZXR1cm4geyBrZXk6IGtleSwgaXY6IGl2IH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBFVlBfQnl0ZXNUb0tleVxuIiwiXG52YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZm9yRWFjaCAob2JqLCBmbiwgY3R4KSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwoZm4pICE9PSAnW29iamVjdCBGdW5jdGlvbl0nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2l0ZXJhdG9yIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgIH1cbiAgICB2YXIgbCA9IG9iai5sZW5ndGg7XG4gICAgaWYgKGwgPT09ICtsKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBmbi5jYWxsKGN0eCwgb2JqW2ldLCBpLCBvYmopO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICh2YXIgayBpbiBvYmopIHtcbiAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChvYmosIGspKSB7XG4gICAgICAgICAgICAgICAgZm4uY2FsbChjdHgsIG9ialtrXSwgaywgb2JqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG5cbiIsIid1c2Ugc3RyaWN0JztcblxuLyogZXNsaW50IG5vLWludmFsaWQtdGhpczogMSAqL1xuXG52YXIgRVJST1JfTUVTU0FHRSA9ICdGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlICc7XG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG52YXIgdG9TdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIGZ1bmNUeXBlID0gJ1tvYmplY3QgRnVuY3Rpb25dJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiaW5kKHRoYXQpIHtcbiAgICB2YXIgdGFyZ2V0ID0gdGhpcztcbiAgICBpZiAodHlwZW9mIHRhcmdldCAhPT0gJ2Z1bmN0aW9uJyB8fCB0b1N0ci5jYWxsKHRhcmdldCkgIT09IGZ1bmNUeXBlKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRVJST1JfTUVTU0FHRSArIHRhcmdldCk7XG4gICAgfVxuICAgIHZhciBhcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG4gICAgdmFyIGJvdW5kO1xuICAgIHZhciBiaW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgYm91bmQpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSB0YXJnZXQuYXBwbHkoXG4gICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICBhcmdzLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cykpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKE9iamVjdChyZXN1bHQpID09PSByZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0LmFwcGx5KFxuICAgICAgICAgICAgICAgIHRoYXQsXG4gICAgICAgICAgICAgICAgYXJncy5jb25jYXQoc2xpY2UuY2FsbChhcmd1bWVudHMpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgYm91bmRMZW5ndGggPSBNYXRoLm1heCgwLCB0YXJnZXQubGVuZ3RoIC0gYXJncy5sZW5ndGgpO1xuICAgIHZhciBib3VuZEFyZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJvdW5kTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYm91bmRBcmdzLnB1c2goJyQnICsgaSk7XG4gICAgfVxuXG4gICAgYm91bmQgPSBGdW5jdGlvbignYmluZGVyJywgJ3JldHVybiBmdW5jdGlvbiAoJyArIGJvdW5kQXJncy5qb2luKCcsJykgKyAnKXsgcmV0dXJuIGJpbmRlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7IH0nKShiaW5kZXIpO1xuXG4gICAgaWYgKHRhcmdldC5wcm90b3R5cGUpIHtcbiAgICAgICAgdmFyIEVtcHR5ID0gZnVuY3Rpb24gRW1wdHkoKSB7fTtcbiAgICAgICAgRW1wdHkucHJvdG90eXBlID0gdGFyZ2V0LnByb3RvdHlwZTtcbiAgICAgICAgYm91bmQucHJvdG90eXBlID0gbmV3IEVtcHR5KCk7XG4gICAgICAgIEVtcHR5LnByb3RvdHlwZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJvdW5kO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGltcGxlbWVudGF0aW9uID0gcmVxdWlyZSgnLi9pbXBsZW1lbnRhdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kIHx8IGltcGxlbWVudGF0aW9uO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdW5kZWZpbmVkO1xuXG52YXIgJFN5bnRheEVycm9yID0gU3ludGF4RXJyb3I7XG52YXIgJEZ1bmN0aW9uID0gRnVuY3Rpb247XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG52YXIgZ2V0RXZhbGxlZENvbnN0cnVjdG9yID0gZnVuY3Rpb24gKGV4cHJlc3Npb25TeW50YXgpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gJEZ1bmN0aW9uKCdcInVzZSBzdHJpY3RcIjsgcmV0dXJuICgnICsgZXhwcmVzc2lvblN5bnRheCArICcpLmNvbnN0cnVjdG9yOycpKCk7XG5cdH0gY2F0Y2ggKGUpIHt9XG59O1xuXG52YXIgJGdPUEQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuaWYgKCRnT1BEKSB7XG5cdHRyeSB7XG5cdFx0JGdPUEQoe30sICcnKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdCRnT1BEID0gbnVsbDsgLy8gdGhpcyBpcyBJRSA4LCB3aGljaCBoYXMgYSBicm9rZW4gZ09QRFxuXHR9XG59XG5cbnZhciB0aHJvd1R5cGVFcnJvciA9IGZ1bmN0aW9uICgpIHtcblx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoKTtcbn07XG52YXIgVGhyb3dUeXBlRXJyb3IgPSAkZ09QRFxuXHQ/IChmdW5jdGlvbiAoKSB7XG5cdFx0dHJ5IHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnMsIG5vLWNhbGxlciwgbm8tcmVzdHJpY3RlZC1wcm9wZXJ0aWVzXG5cdFx0XHRhcmd1bWVudHMuY2FsbGVlOyAvLyBJRSA4IGRvZXMgbm90IHRocm93IGhlcmVcblx0XHRcdHJldHVybiB0aHJvd1R5cGVFcnJvcjtcblx0XHR9IGNhdGNoIChjYWxsZWVUaHJvd3MpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdC8vIElFIDggdGhyb3dzIG9uIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnJylcblx0XHRcdFx0cmV0dXJuICRnT1BEKGFyZ3VtZW50cywgJ2NhbGxlZScpLmdldDtcblx0XHRcdH0gY2F0Y2ggKGdPUER0aHJvd3MpIHtcblx0XHRcdFx0cmV0dXJuIHRocm93VHlwZUVycm9yO1xuXHRcdFx0fVxuXHRcdH1cblx0fSgpKVxuXHQ6IHRocm93VHlwZUVycm9yO1xuXG52YXIgaGFzU3ltYm9scyA9IHJlcXVpcmUoJ2hhcy1zeW1ib2xzJykoKTtcblxudmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4Ll9fcHJvdG9fXzsgfTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm90b1xuXG52YXIgbmVlZHNFdmFsID0ge307XG5cbnZhciBUeXBlZEFycmF5ID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogZ2V0UHJvdG8oVWludDhBcnJheSk7XG5cbnZhciBJTlRSSU5TSUNTID0ge1xuXHQnJUFnZ3JlZ2F0ZUVycm9yJSc6IHR5cGVvZiBBZ2dyZWdhdGVFcnJvciA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBBZ2dyZWdhdGVFcnJvcixcblx0JyVBcnJheSUnOiBBcnJheSxcblx0JyVBcnJheUJ1ZmZlciUnOiB0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogQXJyYXlCdWZmZXIsXG5cdCclQXJyYXlJdGVyYXRvclByb3RvdHlwZSUnOiBoYXNTeW1ib2xzID8gZ2V0UHJvdG8oW11bU3ltYm9sLml0ZXJhdG9yXSgpKSA6IHVuZGVmaW5lZCxcblx0JyVBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUlJzogdW5kZWZpbmVkLFxuXHQnJUFzeW5jRnVuY3Rpb24lJzogbmVlZHNFdmFsLFxuXHQnJUFzeW5jR2VuZXJhdG9yJSc6IG5lZWRzRXZhbCxcblx0JyVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJSc6IG5lZWRzRXZhbCxcblx0JyVBc3luY0l0ZXJhdG9yUHJvdG90eXBlJSc6IG5lZWRzRXZhbCxcblx0JyVBdG9taWNzJSc6IHR5cGVvZiBBdG9taWNzID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEF0b21pY3MsXG5cdCclQmlnSW50JSc6IHR5cGVvZiBCaWdJbnQgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogQmlnSW50LFxuXHQnJUJvb2xlYW4lJzogQm9vbGVhbixcblx0JyVEYXRhVmlldyUnOiB0eXBlb2YgRGF0YVZpZXcgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRGF0YVZpZXcsXG5cdCclRGF0ZSUnOiBEYXRlLFxuXHQnJWRlY29kZVVSSSUnOiBkZWNvZGVVUkksXG5cdCclZGVjb2RlVVJJQ29tcG9uZW50JSc6IGRlY29kZVVSSUNvbXBvbmVudCxcblx0JyVlbmNvZGVVUkklJzogZW5jb2RlVVJJLFxuXHQnJWVuY29kZVVSSUNvbXBvbmVudCUnOiBlbmNvZGVVUklDb21wb25lbnQsXG5cdCclRXJyb3IlJzogRXJyb3IsXG5cdCclZXZhbCUnOiBldmFsLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWV2YWxcblx0JyVFdmFsRXJyb3IlJzogRXZhbEVycm9yLFxuXHQnJUZsb2F0MzJBcnJheSUnOiB0eXBlb2YgRmxvYXQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZsb2F0MzJBcnJheSxcblx0JyVGbG9hdDY0QXJyYXklJzogdHlwZW9mIEZsb2F0NjRBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBGbG9hdDY0QXJyYXksXG5cdCclRmluYWxpemF0aW9uUmVnaXN0cnklJzogdHlwZW9mIEZpbmFsaXphdGlvblJlZ2lzdHJ5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZpbmFsaXphdGlvblJlZ2lzdHJ5LFxuXHQnJUZ1bmN0aW9uJSc6ICRGdW5jdGlvbixcblx0JyVHZW5lcmF0b3JGdW5jdGlvbiUnOiBuZWVkc0V2YWwsXG5cdCclSW50OEFycmF5JSc6IHR5cGVvZiBJbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogSW50OEFycmF5LFxuXHQnJUludDE2QXJyYXklJzogdHlwZW9mIEludDE2QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogSW50MTZBcnJheSxcblx0JyVJbnQzMkFycmF5JSc6IHR5cGVvZiBJbnQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEludDMyQXJyYXksXG5cdCclaXNGaW5pdGUlJzogaXNGaW5pdGUsXG5cdCclaXNOYU4lJzogaXNOYU4sXG5cdCclSXRlcmF0b3JQcm90b3R5cGUlJzogaGFzU3ltYm9scyA/IGdldFByb3RvKGdldFByb3RvKFtdW1N5bWJvbC5pdGVyYXRvcl0oKSkpIDogdW5kZWZpbmVkLFxuXHQnJUpTT04lJzogdHlwZW9mIEpTT04gPT09ICdvYmplY3QnID8gSlNPTiA6IHVuZGVmaW5lZCxcblx0JyVNYXAlJzogdHlwZW9mIE1hcCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBNYXAsXG5cdCclTWFwSXRlcmF0b3JQcm90b3R5cGUlJzogdHlwZW9mIE1hcCA9PT0gJ3VuZGVmaW5lZCcgfHwgIWhhc1N5bWJvbHMgPyB1bmRlZmluZWQgOiBnZXRQcm90byhuZXcgTWFwKClbU3ltYm9sLml0ZXJhdG9yXSgpKSxcblx0JyVNYXRoJSc6IE1hdGgsXG5cdCclTnVtYmVyJSc6IE51bWJlcixcblx0JyVPYmplY3QlJzogT2JqZWN0LFxuXHQnJXBhcnNlRmxvYXQlJzogcGFyc2VGbG9hdCxcblx0JyVwYXJzZUludCUnOiBwYXJzZUludCxcblx0JyVQcm9taXNlJSc6IHR5cGVvZiBQcm9taXNlID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFByb21pc2UsXG5cdCclUHJveHklJzogdHlwZW9mIFByb3h5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFByb3h5LFxuXHQnJVJhbmdlRXJyb3IlJzogUmFuZ2VFcnJvcixcblx0JyVSZWZlcmVuY2VFcnJvciUnOiBSZWZlcmVuY2VFcnJvcixcblx0JyVSZWZsZWN0JSc6IHR5cGVvZiBSZWZsZWN0ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFJlZmxlY3QsXG5cdCclUmVnRXhwJSc6IFJlZ0V4cCxcblx0JyVTZXQlJzogdHlwZW9mIFNldCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBTZXQsXG5cdCclU2V0SXRlcmF0b3JQcm90b3R5cGUlJzogdHlwZW9mIFNldCA9PT0gJ3VuZGVmaW5lZCcgfHwgIWhhc1N5bWJvbHMgPyB1bmRlZmluZWQgOiBnZXRQcm90byhuZXcgU2V0KClbU3ltYm9sLml0ZXJhdG9yXSgpKSxcblx0JyVTaGFyZWRBcnJheUJ1ZmZlciUnOiB0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogU2hhcmVkQXJyYXlCdWZmZXIsXG5cdCclU3RyaW5nJSc6IFN0cmluZyxcblx0JyVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUnOiBoYXNTeW1ib2xzID8gZ2V0UHJvdG8oJydbU3ltYm9sLml0ZXJhdG9yXSgpKSA6IHVuZGVmaW5lZCxcblx0JyVTeW1ib2wlJzogaGFzU3ltYm9scyA/IFN5bWJvbCA6IHVuZGVmaW5lZCxcblx0JyVTeW50YXhFcnJvciUnOiAkU3ludGF4RXJyb3IsXG5cdCclVGhyb3dUeXBlRXJyb3IlJzogVGhyb3dUeXBlRXJyb3IsXG5cdCclVHlwZWRBcnJheSUnOiBUeXBlZEFycmF5LFxuXHQnJVR5cGVFcnJvciUnOiAkVHlwZUVycm9yLFxuXHQnJVVpbnQ4QXJyYXklJzogdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDhBcnJheSxcblx0JyVVaW50OENsYW1wZWRBcnJheSUnOiB0eXBlb2YgVWludDhDbGFtcGVkQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDhDbGFtcGVkQXJyYXksXG5cdCclVWludDE2QXJyYXklJzogdHlwZW9mIFVpbnQxNkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFVpbnQxNkFycmF5LFxuXHQnJVVpbnQzMkFycmF5JSc6IHR5cGVvZiBVaW50MzJBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50MzJBcnJheSxcblx0JyVVUklFcnJvciUnOiBVUklFcnJvcixcblx0JyVXZWFrTWFwJSc6IHR5cGVvZiBXZWFrTWFwID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFdlYWtNYXAsXG5cdCclV2Vha1JlZiUnOiB0eXBlb2YgV2Vha1JlZiA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBXZWFrUmVmLFxuXHQnJVdlYWtTZXQlJzogdHlwZW9mIFdlYWtTZXQgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogV2Vha1NldFxufTtcblxudmFyIGRvRXZhbCA9IGZ1bmN0aW9uIGRvRXZhbChuYW1lKSB7XG5cdHZhciB2YWx1ZTtcblx0aWYgKG5hbWUgPT09ICclQXN5bmNGdW5jdGlvbiUnKSB7XG5cdFx0dmFsdWUgPSBnZXRFdmFsbGVkQ29uc3RydWN0b3IoJ2FzeW5jIGZ1bmN0aW9uICgpIHt9Jyk7XG5cdH0gZWxzZSBpZiAobmFtZSA9PT0gJyVHZW5lcmF0b3JGdW5jdGlvbiUnKSB7XG5cdFx0dmFsdWUgPSBnZXRFdmFsbGVkQ29uc3RydWN0b3IoJ2Z1bmN0aW9uKiAoKSB7fScpO1xuXHR9IGVsc2UgaWYgKG5hbWUgPT09ICclQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiUnKSB7XG5cdFx0dmFsdWUgPSBnZXRFdmFsbGVkQ29uc3RydWN0b3IoJ2FzeW5jIGZ1bmN0aW9uKiAoKSB7fScpO1xuXHR9IGVsc2UgaWYgKG5hbWUgPT09ICclQXN5bmNHZW5lcmF0b3IlJykge1xuXHRcdHZhciBmbiA9IGRvRXZhbCgnJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lJyk7XG5cdFx0aWYgKGZuKSB7XG5cdFx0XHR2YWx1ZSA9IGZuLnByb3RvdHlwZTtcblx0XHR9XG5cdH0gZWxzZSBpZiAobmFtZSA9PT0gJyVBc3luY0l0ZXJhdG9yUHJvdG90eXBlJScpIHtcblx0XHR2YXIgZ2VuID0gZG9FdmFsKCclQXN5bmNHZW5lcmF0b3IlJyk7XG5cdFx0aWYgKGdlbikge1xuXHRcdFx0dmFsdWUgPSBnZXRQcm90byhnZW4ucHJvdG90eXBlKTtcblx0XHR9XG5cdH1cblxuXHRJTlRSSU5TSUNTW25hbWVdID0gdmFsdWU7XG5cblx0cmV0dXJuIHZhbHVlO1xufTtcblxudmFyIExFR0FDWV9BTElBU0VTID0ge1xuXHQnJUFycmF5QnVmZmVyUHJvdG90eXBlJSc6IFsnQXJyYXlCdWZmZXInLCAncHJvdG90eXBlJ10sXG5cdCclQXJyYXlQcm90b3R5cGUlJzogWydBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVBcnJheVByb3RvX2VudHJpZXMlJzogWydBcnJheScsICdwcm90b3R5cGUnLCAnZW50cmllcyddLFxuXHQnJUFycmF5UHJvdG9fZm9yRWFjaCUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZScsICdmb3JFYWNoJ10sXG5cdCclQXJyYXlQcm90b19rZXlzJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJywgJ2tleXMnXSxcblx0JyVBcnJheVByb3RvX3ZhbHVlcyUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZScsICd2YWx1ZXMnXSxcblx0JyVBc3luY0Z1bmN0aW9uUHJvdG90eXBlJSc6IFsnQXN5bmNGdW5jdGlvbicsICdwcm90b3R5cGUnXSxcblx0JyVBc3luY0dlbmVyYXRvciUnOiBbJ0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24nLCAncHJvdG90eXBlJ10sXG5cdCclQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUlJzogWydBc3luY0dlbmVyYXRvckZ1bmN0aW9uJywgJ3Byb3RvdHlwZScsICdwcm90b3R5cGUnXSxcblx0JyVCb29sZWFuUHJvdG90eXBlJSc6IFsnQm9vbGVhbicsICdwcm90b3R5cGUnXSxcblx0JyVEYXRhVmlld1Byb3RvdHlwZSUnOiBbJ0RhdGFWaWV3JywgJ3Byb3RvdHlwZSddLFxuXHQnJURhdGVQcm90b3R5cGUlJzogWydEYXRlJywgJ3Byb3RvdHlwZSddLFxuXHQnJUVycm9yUHJvdG90eXBlJSc6IFsnRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclRXZhbEVycm9yUHJvdG90eXBlJSc6IFsnRXZhbEVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJUZsb2F0MzJBcnJheVByb3RvdHlwZSUnOiBbJ0Zsb2F0MzJBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVGbG9hdDY0QXJyYXlQcm90b3R5cGUlJzogWydGbG9hdDY0QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclRnVuY3Rpb25Qcm90b3R5cGUlJzogWydGdW5jdGlvbicsICdwcm90b3R5cGUnXSxcblx0JyVHZW5lcmF0b3IlJzogWydHZW5lcmF0b3JGdW5jdGlvbicsICdwcm90b3R5cGUnXSxcblx0JyVHZW5lcmF0b3JQcm90b3R5cGUlJzogWydHZW5lcmF0b3JGdW5jdGlvbicsICdwcm90b3R5cGUnLCAncHJvdG90eXBlJ10sXG5cdCclSW50OEFycmF5UHJvdG90eXBlJSc6IFsnSW50OEFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUludDE2QXJyYXlQcm90b3R5cGUlJzogWydJbnQxNkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUludDMyQXJyYXlQcm90b3R5cGUlJzogWydJbnQzMkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUpTT05QYXJzZSUnOiBbJ0pTT04nLCAncGFyc2UnXSxcblx0JyVKU09OU3RyaW5naWZ5JSc6IFsnSlNPTicsICdzdHJpbmdpZnknXSxcblx0JyVNYXBQcm90b3R5cGUlJzogWydNYXAnLCAncHJvdG90eXBlJ10sXG5cdCclTnVtYmVyUHJvdG90eXBlJSc6IFsnTnVtYmVyJywgJ3Byb3RvdHlwZSddLFxuXHQnJU9iamVjdFByb3RvdHlwZSUnOiBbJ09iamVjdCcsICdwcm90b3R5cGUnXSxcblx0JyVPYmpQcm90b190b1N0cmluZyUnOiBbJ09iamVjdCcsICdwcm90b3R5cGUnLCAndG9TdHJpbmcnXSxcblx0JyVPYmpQcm90b192YWx1ZU9mJSc6IFsnT2JqZWN0JywgJ3Byb3RvdHlwZScsICd2YWx1ZU9mJ10sXG5cdCclUHJvbWlzZVByb3RvdHlwZSUnOiBbJ1Byb21pc2UnLCAncHJvdG90eXBlJ10sXG5cdCclUHJvbWlzZVByb3RvX3RoZW4lJzogWydQcm9taXNlJywgJ3Byb3RvdHlwZScsICd0aGVuJ10sXG5cdCclUHJvbWlzZV9hbGwlJzogWydQcm9taXNlJywgJ2FsbCddLFxuXHQnJVByb21pc2VfcmVqZWN0JSc6IFsnUHJvbWlzZScsICdyZWplY3QnXSxcblx0JyVQcm9taXNlX3Jlc29sdmUlJzogWydQcm9taXNlJywgJ3Jlc29sdmUnXSxcblx0JyVSYW5nZUVycm9yUHJvdG90eXBlJSc6IFsnUmFuZ2VFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVSZWZlcmVuY2VFcnJvclByb3RvdHlwZSUnOiBbJ1JlZmVyZW5jZUVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJVJlZ0V4cFByb3RvdHlwZSUnOiBbJ1JlZ0V4cCcsICdwcm90b3R5cGUnXSxcblx0JyVTZXRQcm90b3R5cGUlJzogWydTZXQnLCAncHJvdG90eXBlJ10sXG5cdCclU2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUlJzogWydTaGFyZWRBcnJheUJ1ZmZlcicsICdwcm90b3R5cGUnXSxcblx0JyVTdHJpbmdQcm90b3R5cGUlJzogWydTdHJpbmcnLCAncHJvdG90eXBlJ10sXG5cdCclU3ltYm9sUHJvdG90eXBlJSc6IFsnU3ltYm9sJywgJ3Byb3RvdHlwZSddLFxuXHQnJVN5bnRheEVycm9yUHJvdG90eXBlJSc6IFsnU3ludGF4RXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclVHlwZWRBcnJheVByb3RvdHlwZSUnOiBbJ1R5cGVkQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVHlwZUVycm9yUHJvdG90eXBlJSc6IFsnVHlwZUVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJVVpbnQ4QXJyYXlQcm90b3R5cGUlJzogWydVaW50OEFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJVVpbnQ4Q2xhbXBlZEFycmF5UHJvdG90eXBlJSc6IFsnVWludDhDbGFtcGVkQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVWludDE2QXJyYXlQcm90b3R5cGUlJzogWydVaW50MTZBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVVaW50MzJBcnJheVByb3RvdHlwZSUnOiBbJ1VpbnQzMkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJVVSSUVycm9yUHJvdG90eXBlJSc6IFsnVVJJRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclV2Vha01hcFByb3RvdHlwZSUnOiBbJ1dlYWtNYXAnLCAncHJvdG90eXBlJ10sXG5cdCclV2Vha1NldFByb3RvdHlwZSUnOiBbJ1dlYWtTZXQnLCAncHJvdG90eXBlJ11cbn07XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnZnVuY3Rpb24tYmluZCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJ2hhcycpO1xudmFyICRjb25jYXQgPSBiaW5kLmNhbGwoRnVuY3Rpb24uY2FsbCwgQXJyYXkucHJvdG90eXBlLmNvbmNhdCk7XG52YXIgJHNwbGljZUFwcGx5ID0gYmluZC5jYWxsKEZ1bmN0aW9uLmFwcGx5LCBBcnJheS5wcm90b3R5cGUuc3BsaWNlKTtcbnZhciAkcmVwbGFjZSA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpO1xudmFyICRzdHJTbGljZSA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCBTdHJpbmcucHJvdG90eXBlLnNsaWNlKTtcblxuLyogYWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvNC4xNy4xNS9kaXN0L2xvZGFzaC5qcyNMNjczNS1MNjc0NCAqL1xudmFyIHJlUHJvcE5hbWUgPSAvW14lLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCUkKSkvZztcbnZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZzsgLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgc3RyaW5nVG9QYXRoID0gZnVuY3Rpb24gc3RyaW5nVG9QYXRoKHN0cmluZykge1xuXHR2YXIgZmlyc3QgPSAkc3RyU2xpY2Uoc3RyaW5nLCAwLCAxKTtcblx0dmFyIGxhc3QgPSAkc3RyU2xpY2Uoc3RyaW5nLCAtMSk7XG5cdGlmIChmaXJzdCA9PT0gJyUnICYmIGxhc3QgIT09ICclJykge1xuXHRcdHRocm93IG5ldyAkU3ludGF4RXJyb3IoJ2ludmFsaWQgaW50cmluc2ljIHN5bnRheCwgZXhwZWN0ZWQgY2xvc2luZyBgJWAnKTtcblx0fSBlbHNlIGlmIChsYXN0ID09PSAnJScgJiYgZmlyc3QgIT09ICclJykge1xuXHRcdHRocm93IG5ldyAkU3ludGF4RXJyb3IoJ2ludmFsaWQgaW50cmluc2ljIHN5bnRheCwgZXhwZWN0ZWQgb3BlbmluZyBgJWAnKTtcblx0fVxuXHR2YXIgcmVzdWx0ID0gW107XG5cdCRyZXBsYWNlKHN0cmluZywgcmVQcm9wTmFtZSwgZnVuY3Rpb24gKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcblx0XHRyZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSBxdW90ZSA/ICRyZXBsYWNlKHN1YlN0cmluZywgcmVFc2NhcGVDaGFyLCAnJDEnKSA6IG51bWJlciB8fCBtYXRjaDtcblx0fSk7XG5cdHJldHVybiByZXN1bHQ7XG59O1xuLyogZW5kIGFkYXB0YXRpb24gKi9cblxudmFyIGdldEJhc2VJbnRyaW5zaWMgPSBmdW5jdGlvbiBnZXRCYXNlSW50cmluc2ljKG5hbWUsIGFsbG93TWlzc2luZykge1xuXHR2YXIgaW50cmluc2ljTmFtZSA9IG5hbWU7XG5cdHZhciBhbGlhcztcblx0aWYgKGhhc093bihMRUdBQ1lfQUxJQVNFUywgaW50cmluc2ljTmFtZSkpIHtcblx0XHRhbGlhcyA9IExFR0FDWV9BTElBU0VTW2ludHJpbnNpY05hbWVdO1xuXHRcdGludHJpbnNpY05hbWUgPSAnJScgKyBhbGlhc1swXSArICclJztcblx0fVxuXG5cdGlmIChoYXNPd24oSU5UUklOU0lDUywgaW50cmluc2ljTmFtZSkpIHtcblx0XHR2YXIgdmFsdWUgPSBJTlRSSU5TSUNTW2ludHJpbnNpY05hbWVdO1xuXHRcdGlmICh2YWx1ZSA9PT0gbmVlZHNFdmFsKSB7XG5cdFx0XHR2YWx1ZSA9IGRvRXZhbChpbnRyaW5zaWNOYW1lKTtcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgJiYgIWFsbG93TWlzc2luZykge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2ludHJpbnNpYyAnICsgbmFtZSArICcgZXhpc3RzLCBidXQgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGZpbGUgYW4gaXNzdWUhJyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGFsaWFzOiBhbGlhcyxcblx0XHRcdG5hbWU6IGludHJpbnNpY05hbWUsXG5cdFx0XHR2YWx1ZTogdmFsdWVcblx0XHR9O1xuXHR9XG5cblx0dGhyb3cgbmV3ICRTeW50YXhFcnJvcignaW50cmluc2ljICcgKyBuYW1lICsgJyBkb2VzIG5vdCBleGlzdCEnKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gR2V0SW50cmluc2ljKG5hbWUsIGFsbG93TWlzc2luZykge1xuXHRpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnIHx8IG5hbWUubGVuZ3RoID09PSAwKSB7XG5cdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2ludHJpbnNpYyBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG5cdH1cblx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHR5cGVvZiBhbGxvd01pc3NpbmcgIT09ICdib29sZWFuJykge1xuXHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdcImFsbG93TWlzc2luZ1wiIGFyZ3VtZW50IG11c3QgYmUgYSBib29sZWFuJyk7XG5cdH1cblxuXHR2YXIgcGFydHMgPSBzdHJpbmdUb1BhdGgobmFtZSk7XG5cdHZhciBpbnRyaW5zaWNCYXNlTmFtZSA9IHBhcnRzLmxlbmd0aCA+IDAgPyBwYXJ0c1swXSA6ICcnO1xuXG5cdHZhciBpbnRyaW5zaWMgPSBnZXRCYXNlSW50cmluc2ljKCclJyArIGludHJpbnNpY0Jhc2VOYW1lICsgJyUnLCBhbGxvd01pc3NpbmcpO1xuXHR2YXIgaW50cmluc2ljUmVhbE5hbWUgPSBpbnRyaW5zaWMubmFtZTtcblx0dmFyIHZhbHVlID0gaW50cmluc2ljLnZhbHVlO1xuXHR2YXIgc2tpcEZ1cnRoZXJDYWNoaW5nID0gZmFsc2U7XG5cblx0dmFyIGFsaWFzID0gaW50cmluc2ljLmFsaWFzO1xuXHRpZiAoYWxpYXMpIHtcblx0XHRpbnRyaW5zaWNCYXNlTmFtZSA9IGFsaWFzWzBdO1xuXHRcdCRzcGxpY2VBcHBseShwYXJ0cywgJGNvbmNhdChbMCwgMV0sIGFsaWFzKSk7XG5cdH1cblxuXHRmb3IgKHZhciBpID0gMSwgaXNPd24gPSB0cnVlOyBpIDwgcGFydHMubGVuZ3RoOyBpICs9IDEpIHtcblx0XHR2YXIgcGFydCA9IHBhcnRzW2ldO1xuXHRcdHZhciBmaXJzdCA9ICRzdHJTbGljZShwYXJ0LCAwLCAxKTtcblx0XHR2YXIgbGFzdCA9ICRzdHJTbGljZShwYXJ0LCAtMSk7XG5cdFx0aWYgKFxuXHRcdFx0KFxuXHRcdFx0XHQoZmlyc3QgPT09ICdcIicgfHwgZmlyc3QgPT09IFwiJ1wiIHx8IGZpcnN0ID09PSAnYCcpXG5cdFx0XHRcdHx8IChsYXN0ID09PSAnXCInIHx8IGxhc3QgPT09IFwiJ1wiIHx8IGxhc3QgPT09ICdgJylcblx0XHRcdClcblx0XHRcdCYmIGZpcnN0ICE9PSBsYXN0XG5cdFx0KSB7XG5cdFx0XHR0aHJvdyBuZXcgJFN5bnRheEVycm9yKCdwcm9wZXJ0eSBuYW1lcyB3aXRoIHF1b3RlcyBtdXN0IGhhdmUgbWF0Y2hpbmcgcXVvdGVzJyk7XG5cdFx0fVxuXHRcdGlmIChwYXJ0ID09PSAnY29uc3RydWN0b3InIHx8ICFpc093bikge1xuXHRcdFx0c2tpcEZ1cnRoZXJDYWNoaW5nID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRpbnRyaW5zaWNCYXNlTmFtZSArPSAnLicgKyBwYXJ0O1xuXHRcdGludHJpbnNpY1JlYWxOYW1lID0gJyUnICsgaW50cmluc2ljQmFzZU5hbWUgKyAnJSc7XG5cblx0XHRpZiAoaGFzT3duKElOVFJJTlNJQ1MsIGludHJpbnNpY1JlYWxOYW1lKSkge1xuXHRcdFx0dmFsdWUgPSBJTlRSSU5TSUNTW2ludHJpbnNpY1JlYWxOYW1lXTtcblx0XHR9IGVsc2UgaWYgKHZhbHVlICE9IG51bGwpIHtcblx0XHRcdGlmICghKHBhcnQgaW4gdmFsdWUpKSB7XG5cdFx0XHRcdGlmICghYWxsb3dNaXNzaW5nKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2Jhc2UgaW50cmluc2ljIGZvciAnICsgbmFtZSArICcgZXhpc3RzLCBidXQgdGhlIHByb3BlcnR5IGlzIG5vdCBhdmFpbGFibGUuJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHZvaWQgdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCRnT1BEICYmIChpICsgMSkgPj0gcGFydHMubGVuZ3RoKSB7XG5cdFx0XHRcdHZhciBkZXNjID0gJGdPUEQodmFsdWUsIHBhcnQpO1xuXHRcdFx0XHRpc093biA9ICEhZGVzYztcblxuXHRcdFx0XHQvLyBCeSBjb252ZW50aW9uLCB3aGVuIGEgZGF0YSBwcm9wZXJ0eSBpcyBjb252ZXJ0ZWQgdG8gYW4gYWNjZXNzb3Jcblx0XHRcdFx0Ly8gcHJvcGVydHkgdG8gZW11bGF0ZSBhIGRhdGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBzdWZmZXIgZnJvbVxuXHRcdFx0XHQvLyB0aGUgb3ZlcnJpZGUgbWlzdGFrZSwgdGhhdCBhY2Nlc3NvcidzIGdldHRlciBpcyBtYXJrZWQgd2l0aFxuXHRcdFx0XHQvLyBhbiBgb3JpZ2luYWxWYWx1ZWAgcHJvcGVydHkuIEhlcmUsIHdoZW4gd2UgZGV0ZWN0IHRoaXMsIHdlXG5cdFx0XHRcdC8vIHVwaG9sZCB0aGUgaWxsdXNpb24gYnkgcHJldGVuZGluZyB0byBzZWUgdGhhdCBvcmlnaW5hbCBkYXRhXG5cdFx0XHRcdC8vIHByb3BlcnR5LCBpLmUuLCByZXR1cm5pbmcgdGhlIHZhbHVlIHJhdGhlciB0aGFuIHRoZSBnZXR0ZXJcblx0XHRcdFx0Ly8gaXRzZWxmLlxuXHRcdFx0XHRpZiAoaXNPd24gJiYgJ2dldCcgaW4gZGVzYyAmJiAhKCdvcmlnaW5hbFZhbHVlJyBpbiBkZXNjLmdldCkpIHtcblx0XHRcdFx0XHR2YWx1ZSA9IGRlc2MuZ2V0O1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHZhbHVlID0gdmFsdWVbcGFydF07XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlzT3duID0gaGFzT3duKHZhbHVlLCBwYXJ0KTtcblx0XHRcdFx0dmFsdWUgPSB2YWx1ZVtwYXJ0XTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGlzT3duICYmICFza2lwRnVydGhlckNhY2hpbmcpIHtcblx0XHRcdFx0SU5UUklOU0lDU1tpbnRyaW5zaWNSZWFsTmFtZV0gPSB2YWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIG9yaWdTeW1ib2wgPSB0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2w7XG52YXIgaGFzU3ltYm9sU2hhbSA9IHJlcXVpcmUoJy4vc2hhbXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBoYXNOYXRpdmVTeW1ib2xzKCkge1xuXHRpZiAodHlwZW9mIG9yaWdTeW1ib2wgIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAodHlwZW9mIG9yaWdTeW1ib2woJ2ZvbycpICE9PSAnc3ltYm9sJykgeyByZXR1cm4gZmFsc2U7IH1cblx0aWYgKHR5cGVvZiBTeW1ib2woJ2JhcicpICE9PSAnc3ltYm9sJykgeyByZXR1cm4gZmFsc2U7IH1cblxuXHRyZXR1cm4gaGFzU3ltYm9sU2hhbSgpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyogZXNsaW50IGNvbXBsZXhpdHk6IFsyLCAxOF0sIG1heC1zdGF0ZW1lbnRzOiBbMiwgMzNdICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGhhc1N5bWJvbHMoKSB7XG5cdGlmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICE9PSAnZnVuY3Rpb24nKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAodHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gJ3N5bWJvbCcpIHsgcmV0dXJuIHRydWU7IH1cblxuXHR2YXIgb2JqID0ge307XG5cdHZhciBzeW0gPSBTeW1ib2woJ3Rlc3QnKTtcblx0dmFyIHN5bU9iaiA9IE9iamVjdChzeW0pO1xuXHRpZiAodHlwZW9mIHN5bSA9PT0gJ3N0cmluZycpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0aWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzeW0pICE9PSAnW29iamVjdCBTeW1ib2xdJykgeyByZXR1cm4gZmFsc2U7IH1cblx0aWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzeW1PYmopICE9PSAnW29iamVjdCBTeW1ib2xdJykgeyByZXR1cm4gZmFsc2U7IH1cblxuXHQvLyB0ZW1wIGRpc2FibGVkIHBlciBodHRwczovL2dpdGh1Yi5jb20vbGpoYXJiL29iamVjdC5hc3NpZ24vaXNzdWVzLzE3XG5cdC8vIGlmIChzeW0gaW5zdGFuY2VvZiBTeW1ib2wpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdC8vIHRlbXAgZGlzYWJsZWQgcGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJSZWZsZWN0aW9uL2dldC1vd24tcHJvcGVydHktc3ltYm9scy9pc3N1ZXMvNFxuXHQvLyBpZiAoIShzeW1PYmogaW5zdGFuY2VvZiBTeW1ib2wpKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdC8vIGlmICh0eXBlb2YgU3ltYm9sLnByb3RvdHlwZS50b1N0cmluZyAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm4gZmFsc2U7IH1cblx0Ly8gaWYgKFN0cmluZyhzeW0pICE9PSBTeW1ib2wucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc3ltKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHR2YXIgc3ltVmFsID0gNDI7XG5cdG9ialtzeW1dID0gc3ltVmFsO1xuXHRmb3IgKHN5bSBpbiBvYmopIHsgcmV0dXJuIGZhbHNlOyB9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXgsIG5vLXVucmVhY2hhYmxlLWxvb3Bcblx0aWYgKHR5cGVvZiBPYmplY3Qua2V5cyA9PT0gJ2Z1bmN0aW9uJyAmJiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCAhPT0gMCkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHRpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzID09PSAnZnVuY3Rpb24nICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikubGVuZ3RoICE9PSAwKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdHZhciBzeW1zID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmopO1xuXHRpZiAoc3ltcy5sZW5ndGggIT09IDEgfHwgc3ltc1swXSAhPT0gc3ltKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iaiwgc3ltKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHRpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPT09ICdmdW5jdGlvbicpIHtcblx0XHR2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBzeW0pO1xuXHRcdGlmIChkZXNjcmlwdG9yLnZhbHVlICE9PSBzeW1WYWwgfHwgZGVzY3JpcHRvci5lbnVtZXJhYmxlICE9PSB0cnVlKSB7IHJldHVybiBmYWxzZTsgfVxuXHR9XG5cblx0cmV0dXJuIHRydWU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYmluZCA9IHJlcXVpcmUoJ2Z1bmN0aW9uLWJpbmQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiaW5kLmNhbGwoRnVuY3Rpb24uY2FsbCwgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSk7XG4iLCIndXNlIHN0cmljdCdcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbScpLlRyYW5zZm9ybVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5mdW5jdGlvbiB0aHJvd0lmTm90U3RyaW5nT3JCdWZmZXIgKHZhbCwgcHJlZml4KSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHZhbCkgJiYgdHlwZW9mIHZhbCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHByZWZpeCArICcgbXVzdCBiZSBhIHN0cmluZyBvciBhIGJ1ZmZlcicpXG4gIH1cbn1cblxuZnVuY3Rpb24gSGFzaEJhc2UgKGJsb2NrU2l6ZSkge1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuXG4gIHRoaXMuX2Jsb2NrID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2NrU2l6ZSlcbiAgdGhpcy5fYmxvY2tTaXplID0gYmxvY2tTaXplXG4gIHRoaXMuX2Jsb2NrT2Zmc2V0ID0gMFxuICB0aGlzLl9sZW5ndGggPSBbMCwgMCwgMCwgMF1cblxuICB0aGlzLl9maW5hbGl6ZWQgPSBmYWxzZVxufVxuXG5pbmhlcml0cyhIYXNoQmFzZSwgVHJhbnNmb3JtKVxuXG5IYXNoQmFzZS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gIHZhciBlcnJvciA9IG51bGxcbiAgdHJ5IHtcbiAgICB0aGlzLnVwZGF0ZShjaHVuaywgZW5jb2RpbmcpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGVycm9yID0gZXJyXG4gIH1cblxuICBjYWxsYmFjayhlcnJvcilcbn1cblxuSGFzaEJhc2UucHJvdG90eXBlLl9mbHVzaCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB2YXIgZXJyb3IgPSBudWxsXG4gIHRyeSB7XG4gICAgdGhpcy5wdXNoKHRoaXMuZGlnZXN0KCkpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGVycm9yID0gZXJyXG4gIH1cblxuICBjYWxsYmFjayhlcnJvcilcbn1cblxuSGFzaEJhc2UucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhLCBlbmNvZGluZykge1xuICB0aHJvd0lmTm90U3RyaW5nT3JCdWZmZXIoZGF0YSwgJ0RhdGEnKVxuICBpZiAodGhpcy5fZmluYWxpemVkKSB0aHJvdyBuZXcgRXJyb3IoJ0RpZ2VzdCBhbHJlYWR5IGNhbGxlZCcpXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGRhdGEpKSBkYXRhID0gQnVmZmVyLmZyb20oZGF0YSwgZW5jb2RpbmcpXG5cbiAgLy8gY29uc3VtZSBkYXRhXG4gIHZhciBibG9jayA9IHRoaXMuX2Jsb2NrXG4gIHZhciBvZmZzZXQgPSAwXG4gIHdoaWxlICh0aGlzLl9ibG9ja09mZnNldCArIGRhdGEubGVuZ3RoIC0gb2Zmc2V0ID49IHRoaXMuX2Jsb2NrU2l6ZSkge1xuICAgIGZvciAodmFyIGkgPSB0aGlzLl9ibG9ja09mZnNldDsgaSA8IHRoaXMuX2Jsb2NrU2l6ZTspIGJsb2NrW2krK10gPSBkYXRhW29mZnNldCsrXVxuICAgIHRoaXMuX3VwZGF0ZSgpXG4gICAgdGhpcy5fYmxvY2tPZmZzZXQgPSAwXG4gIH1cbiAgd2hpbGUgKG9mZnNldCA8IGRhdGEubGVuZ3RoKSBibG9ja1t0aGlzLl9ibG9ja09mZnNldCsrXSA9IGRhdGFbb2Zmc2V0KytdXG5cbiAgLy8gdXBkYXRlIGxlbmd0aFxuICBmb3IgKHZhciBqID0gMCwgY2FycnkgPSBkYXRhLmxlbmd0aCAqIDg7IGNhcnJ5ID4gMDsgKytqKSB7XG4gICAgdGhpcy5fbGVuZ3RoW2pdICs9IGNhcnJ5XG4gICAgY2FycnkgPSAodGhpcy5fbGVuZ3RoW2pdIC8gMHgwMTAwMDAwMDAwKSB8IDBcbiAgICBpZiAoY2FycnkgPiAwKSB0aGlzLl9sZW5ndGhbal0gLT0gMHgwMTAwMDAwMDAwICogY2FycnlcbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbkhhc2hCYXNlLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ191cGRhdGUgaXMgbm90IGltcGxlbWVudGVkJylcbn1cblxuSGFzaEJhc2UucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIChlbmNvZGluZykge1xuICBpZiAodGhpcy5fZmluYWxpemVkKSB0aHJvdyBuZXcgRXJyb3IoJ0RpZ2VzdCBhbHJlYWR5IGNhbGxlZCcpXG4gIHRoaXMuX2ZpbmFsaXplZCA9IHRydWVcblxuICB2YXIgZGlnZXN0ID0gdGhpcy5fZGlnZXN0KClcbiAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQpIGRpZ2VzdCA9IGRpZ2VzdC50b1N0cmluZyhlbmNvZGluZylcblxuICAvLyByZXNldCBzdGF0ZVxuICB0aGlzLl9ibG9jay5maWxsKDApXG4gIHRoaXMuX2Jsb2NrT2Zmc2V0ID0gMFxuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkgdGhpcy5fbGVuZ3RoW2ldID0gMFxuXG4gIHJldHVybiBkaWdlc3Rcbn1cblxuSGFzaEJhc2UucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignX2RpZ2VzdCBpcyBub3QgaW1wbGVtZW50ZWQnKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2hCYXNlXG4iLCJ2YXIgaGFzaCA9IGV4cG9ydHM7XG5cbmhhc2gudXRpbHMgPSByZXF1aXJlKCcuL2hhc2gvdXRpbHMnKTtcbmhhc2guY29tbW9uID0gcmVxdWlyZSgnLi9oYXNoL2NvbW1vbicpO1xuaGFzaC5zaGEgPSByZXF1aXJlKCcuL2hhc2gvc2hhJyk7XG5oYXNoLnJpcGVtZCA9IHJlcXVpcmUoJy4vaGFzaC9yaXBlbWQnKTtcbmhhc2guaG1hYyA9IHJlcXVpcmUoJy4vaGFzaC9obWFjJyk7XG5cbi8vIFByb3h5IGhhc2ggZnVuY3Rpb25zIHRvIHRoZSBtYWluIG9iamVjdFxuaGFzaC5zaGExID0gaGFzaC5zaGEuc2hhMTtcbmhhc2guc2hhMjU2ID0gaGFzaC5zaGEuc2hhMjU2O1xuaGFzaC5zaGEyMjQgPSBoYXNoLnNoYS5zaGEyMjQ7XG5oYXNoLnNoYTM4NCA9IGhhc2guc2hhLnNoYTM4NDtcbmhhc2guc2hhNTEyID0gaGFzaC5zaGEuc2hhNTEyO1xuaGFzaC5yaXBlbWQxNjAgPSBoYXNoLnJpcGVtZC5yaXBlbWQxNjA7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbmZ1bmN0aW9uIEJsb2NrSGFzaCgpIHtcbiAgdGhpcy5wZW5kaW5nID0gbnVsbDtcbiAgdGhpcy5wZW5kaW5nVG90YWwgPSAwO1xuICB0aGlzLmJsb2NrU2l6ZSA9IHRoaXMuY29uc3RydWN0b3IuYmxvY2tTaXplO1xuICB0aGlzLm91dFNpemUgPSB0aGlzLmNvbnN0cnVjdG9yLm91dFNpemU7XG4gIHRoaXMuaG1hY1N0cmVuZ3RoID0gdGhpcy5jb25zdHJ1Y3Rvci5obWFjU3RyZW5ndGg7XG4gIHRoaXMucGFkTGVuZ3RoID0gdGhpcy5jb25zdHJ1Y3Rvci5wYWRMZW5ndGggLyA4O1xuICB0aGlzLmVuZGlhbiA9ICdiaWcnO1xuXG4gIHRoaXMuX2RlbHRhOCA9IHRoaXMuYmxvY2tTaXplIC8gODtcbiAgdGhpcy5fZGVsdGEzMiA9IHRoaXMuYmxvY2tTaXplIC8gMzI7XG59XG5leHBvcnRzLkJsb2NrSGFzaCA9IEJsb2NrSGFzaDtcblxuQmxvY2tIYXNoLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUobXNnLCBlbmMpIHtcbiAgLy8gQ29udmVydCBtZXNzYWdlIHRvIGFycmF5LCBwYWQgaXQsIGFuZCBqb2luIGludG8gMzJiaXQgYmxvY2tzXG4gIG1zZyA9IHV0aWxzLnRvQXJyYXkobXNnLCBlbmMpO1xuICBpZiAoIXRoaXMucGVuZGluZylcbiAgICB0aGlzLnBlbmRpbmcgPSBtc2c7XG4gIGVsc2VcbiAgICB0aGlzLnBlbmRpbmcgPSB0aGlzLnBlbmRpbmcuY29uY2F0KG1zZyk7XG4gIHRoaXMucGVuZGluZ1RvdGFsICs9IG1zZy5sZW5ndGg7XG5cbiAgLy8gRW5vdWdoIGRhdGEsIHRyeSB1cGRhdGluZ1xuICBpZiAodGhpcy5wZW5kaW5nLmxlbmd0aCA+PSB0aGlzLl9kZWx0YTgpIHtcbiAgICBtc2cgPSB0aGlzLnBlbmRpbmc7XG5cbiAgICAvLyBQcm9jZXNzIHBlbmRpbmcgZGF0YSBpbiBibG9ja3NcbiAgICB2YXIgciA9IG1zZy5sZW5ndGggJSB0aGlzLl9kZWx0YTg7XG4gICAgdGhpcy5wZW5kaW5nID0gbXNnLnNsaWNlKG1zZy5sZW5ndGggLSByLCBtc2cubGVuZ3RoKTtcbiAgICBpZiAodGhpcy5wZW5kaW5nLmxlbmd0aCA9PT0gMClcbiAgICAgIHRoaXMucGVuZGluZyA9IG51bGw7XG5cbiAgICBtc2cgPSB1dGlscy5qb2luMzIobXNnLCAwLCBtc2cubGVuZ3RoIC0gciwgdGhpcy5lbmRpYW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSB0aGlzLl9kZWx0YTMyKVxuICAgICAgdGhpcy5fdXBkYXRlKG1zZywgaSwgaSArIHRoaXMuX2RlbHRhMzIpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5CbG9ja0hhc2gucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgdGhpcy51cGRhdGUodGhpcy5fcGFkKCkpO1xuICBhc3NlcnQodGhpcy5wZW5kaW5nID09PSBudWxsKTtcblxuICByZXR1cm4gdGhpcy5fZGlnZXN0KGVuYyk7XG59O1xuXG5CbG9ja0hhc2gucHJvdG90eXBlLl9wYWQgPSBmdW5jdGlvbiBwYWQoKSB7XG4gIHZhciBsZW4gPSB0aGlzLnBlbmRpbmdUb3RhbDtcbiAgdmFyIGJ5dGVzID0gdGhpcy5fZGVsdGE4O1xuICB2YXIgayA9IGJ5dGVzIC0gKChsZW4gKyB0aGlzLnBhZExlbmd0aCkgJSBieXRlcyk7XG4gIHZhciByZXMgPSBuZXcgQXJyYXkoayArIHRoaXMucGFkTGVuZ3RoKTtcbiAgcmVzWzBdID0gMHg4MDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBrOyBpKyspXG4gICAgcmVzW2ldID0gMDtcblxuICAvLyBBcHBlbmQgbGVuZ3RoXG4gIGxlbiA8PD0gMztcbiAgaWYgKHRoaXMuZW5kaWFuID09PSAnYmlnJykge1xuICAgIGZvciAodmFyIHQgPSA4OyB0IDwgdGhpcy5wYWRMZW5ndGg7IHQrKylcbiAgICAgIHJlc1tpKytdID0gMDtcblxuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDI0KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAxNikgJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gOCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gbGVuICYgMHhmZjtcbiAgfSBlbHNlIHtcbiAgICByZXNbaSsrXSA9IGxlbiAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiA4KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAxNikgJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMjQpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG5cbiAgICBmb3IgKHQgPSA4OyB0IDwgdGhpcy5wYWRMZW5ndGg7IHQrKylcbiAgICAgIHJlc1tpKytdID0gMDtcbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG5mdW5jdGlvbiBIbWFjKGhhc2gsIGtleSwgZW5jKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBIbWFjKSlcbiAgICByZXR1cm4gbmV3IEhtYWMoaGFzaCwga2V5LCBlbmMpO1xuICB0aGlzLkhhc2ggPSBoYXNoO1xuICB0aGlzLmJsb2NrU2l6ZSA9IGhhc2guYmxvY2tTaXplIC8gODtcbiAgdGhpcy5vdXRTaXplID0gaGFzaC5vdXRTaXplIC8gODtcbiAgdGhpcy5pbm5lciA9IG51bGw7XG4gIHRoaXMub3V0ZXIgPSBudWxsO1xuXG4gIHRoaXMuX2luaXQodXRpbHMudG9BcnJheShrZXksIGVuYykpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBIbWFjO1xuXG5IbWFjLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQoa2V5KSB7XG4gIC8vIFNob3J0ZW4ga2V5LCBpZiBuZWVkZWRcbiAgaWYgKGtleS5sZW5ndGggPiB0aGlzLmJsb2NrU2l6ZSlcbiAgICBrZXkgPSBuZXcgdGhpcy5IYXNoKCkudXBkYXRlKGtleSkuZGlnZXN0KCk7XG4gIGFzc2VydChrZXkubGVuZ3RoIDw9IHRoaXMuYmxvY2tTaXplKTtcblxuICAvLyBBZGQgcGFkZGluZyB0byBrZXlcbiAgZm9yICh2YXIgaSA9IGtleS5sZW5ndGg7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgIGtleS5wdXNoKDApO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBrZXkubGVuZ3RoOyBpKyspXG4gICAga2V5W2ldIF49IDB4MzY7XG4gIHRoaXMuaW5uZXIgPSBuZXcgdGhpcy5IYXNoKCkudXBkYXRlKGtleSk7XG5cbiAgLy8gMHgzNiBeIDB4NWMgPSAweDZhXG4gIGZvciAoaSA9IDA7IGkgPCBrZXkubGVuZ3RoOyBpKyspXG4gICAga2V5W2ldIF49IDB4NmE7XG4gIHRoaXMub3V0ZXIgPSBuZXcgdGhpcy5IYXNoKCkudXBkYXRlKGtleSk7XG59O1xuXG5IbWFjLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUobXNnLCBlbmMpIHtcbiAgdGhpcy5pbm5lci51cGRhdGUobXNnLCBlbmMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkhtYWMucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgdGhpcy5vdXRlci51cGRhdGUodGhpcy5pbm5lci5kaWdlc3QoKSk7XG4gIHJldHVybiB0aGlzLm91dGVyLmRpZ2VzdChlbmMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIGNvbW1vbiA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG5cbnZhciByb3RsMzIgPSB1dGlscy5yb3RsMzI7XG52YXIgc3VtMzIgPSB1dGlscy5zdW0zMjtcbnZhciBzdW0zMl8zID0gdXRpbHMuc3VtMzJfMztcbnZhciBzdW0zMl80ID0gdXRpbHMuc3VtMzJfNDtcbnZhciBCbG9ja0hhc2ggPSBjb21tb24uQmxvY2tIYXNoO1xuXG5mdW5jdGlvbiBSSVBFTUQxNjAoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSSVBFTUQxNjApKVxuICAgIHJldHVybiBuZXcgUklQRU1EMTYwKCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG5cbiAgdGhpcy5oID0gWyAweDY3NDUyMzAxLCAweGVmY2RhYjg5LCAweDk4YmFkY2ZlLCAweDEwMzI1NDc2LCAweGMzZDJlMWYwIF07XG4gIHRoaXMuZW5kaWFuID0gJ2xpdHRsZSc7XG59XG51dGlscy5pbmhlcml0cyhSSVBFTUQxNjAsIEJsb2NrSGFzaCk7XG5leHBvcnRzLnJpcGVtZDE2MCA9IFJJUEVNRDE2MDtcblxuUklQRU1EMTYwLmJsb2NrU2l6ZSA9IDUxMjtcblJJUEVNRDE2MC5vdXRTaXplID0gMTYwO1xuUklQRU1EMTYwLmhtYWNTdHJlbmd0aCA9IDE5MjtcblJJUEVNRDE2MC5wYWRMZW5ndGggPSA2NDtcblxuUklQRU1EMTYwLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKG1zZywgc3RhcnQpIHtcbiAgdmFyIEEgPSB0aGlzLmhbMF07XG4gIHZhciBCID0gdGhpcy5oWzFdO1xuICB2YXIgQyA9IHRoaXMuaFsyXTtcbiAgdmFyIEQgPSB0aGlzLmhbM107XG4gIHZhciBFID0gdGhpcy5oWzRdO1xuICB2YXIgQWggPSBBO1xuICB2YXIgQmggPSBCO1xuICB2YXIgQ2ggPSBDO1xuICB2YXIgRGggPSBEO1xuICB2YXIgRWggPSBFO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyBqKyspIHtcbiAgICB2YXIgVCA9IHN1bTMyKFxuICAgICAgcm90bDMyKFxuICAgICAgICBzdW0zMl80KEEsIGYoaiwgQiwgQywgRCksIG1zZ1tyW2pdICsgc3RhcnRdLCBLKGopKSxcbiAgICAgICAgc1tqXSksXG4gICAgICBFKTtcbiAgICBBID0gRTtcbiAgICBFID0gRDtcbiAgICBEID0gcm90bDMyKEMsIDEwKTtcbiAgICBDID0gQjtcbiAgICBCID0gVDtcbiAgICBUID0gc3VtMzIoXG4gICAgICByb3RsMzIoXG4gICAgICAgIHN1bTMyXzQoQWgsIGYoNzkgLSBqLCBCaCwgQ2gsIERoKSwgbXNnW3JoW2pdICsgc3RhcnRdLCBLaChqKSksXG4gICAgICAgIHNoW2pdKSxcbiAgICAgIEVoKTtcbiAgICBBaCA9IEVoO1xuICAgIEVoID0gRGg7XG4gICAgRGggPSByb3RsMzIoQ2gsIDEwKTtcbiAgICBDaCA9IEJoO1xuICAgIEJoID0gVDtcbiAgfVxuICBUID0gc3VtMzJfMyh0aGlzLmhbMV0sIEMsIERoKTtcbiAgdGhpcy5oWzFdID0gc3VtMzJfMyh0aGlzLmhbMl0sIEQsIEVoKTtcbiAgdGhpcy5oWzJdID0gc3VtMzJfMyh0aGlzLmhbM10sIEUsIEFoKTtcbiAgdGhpcy5oWzNdID0gc3VtMzJfMyh0aGlzLmhbNF0sIEEsIEJoKTtcbiAgdGhpcy5oWzRdID0gc3VtMzJfMyh0aGlzLmhbMF0sIEIsIENoKTtcbiAgdGhpcy5oWzBdID0gVDtcbn07XG5cblJJUEVNRDE2MC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnbGl0dGxlJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdsaXR0bGUnKTtcbn07XG5cbmZ1bmN0aW9uIGYoaiwgeCwgeSwgeikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4geCBeIHkgXiB6O1xuICBlbHNlIGlmIChqIDw9IDMxKVxuICAgIHJldHVybiAoeCAmIHkpIHwgKCh+eCkgJiB6KTtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gKHggfCAofnkpKSBeIHo7XG4gIGVsc2UgaWYgKGogPD0gNjMpXG4gICAgcmV0dXJuICh4ICYgeikgfCAoeSAmICh+eikpO1xuICBlbHNlXG4gICAgcmV0dXJuIHggXiAoeSB8ICh+eikpO1xufVxuXG5mdW5jdGlvbiBLKGopIHtcbiAgaWYgKGogPD0gMTUpXG4gICAgcmV0dXJuIDB4MDAwMDAwMDA7XG4gIGVsc2UgaWYgKGogPD0gMzEpXG4gICAgcmV0dXJuIDB4NWE4Mjc5OTk7XG4gIGVsc2UgaWYgKGogPD0gNDcpXG4gICAgcmV0dXJuIDB4NmVkOWViYTE7XG4gIGVsc2UgaWYgKGogPD0gNjMpXG4gICAgcmV0dXJuIDB4OGYxYmJjZGM7XG4gIGVsc2VcbiAgICByZXR1cm4gMHhhOTUzZmQ0ZTtcbn1cblxuZnVuY3Rpb24gS2goaikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4gMHg1MGEyOGJlNjtcbiAgZWxzZSBpZiAoaiA8PSAzMSlcbiAgICByZXR1cm4gMHg1YzRkZDEyNDtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gMHg2ZDcwM2VmMztcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gMHg3YTZkNzZlOTtcbiAgZWxzZVxuICAgIHJldHVybiAweDAwMDAwMDAwO1xufVxuXG52YXIgciA9IFtcbiAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSxcbiAgNywgNCwgMTMsIDEsIDEwLCA2LCAxNSwgMywgMTIsIDAsIDksIDUsIDIsIDE0LCAxMSwgOCxcbiAgMywgMTAsIDE0LCA0LCA5LCAxNSwgOCwgMSwgMiwgNywgMCwgNiwgMTMsIDExLCA1LCAxMixcbiAgMSwgOSwgMTEsIDEwLCAwLCA4LCAxMiwgNCwgMTMsIDMsIDcsIDE1LCAxNCwgNSwgNiwgMixcbiAgNCwgMCwgNSwgOSwgNywgMTIsIDIsIDEwLCAxNCwgMSwgMywgOCwgMTEsIDYsIDE1LCAxM1xuXTtcblxudmFyIHJoID0gW1xuICA1LCAxNCwgNywgMCwgOSwgMiwgMTEsIDQsIDEzLCA2LCAxNSwgOCwgMSwgMTAsIDMsIDEyLFxuICA2LCAxMSwgMywgNywgMCwgMTMsIDUsIDEwLCAxNCwgMTUsIDgsIDEyLCA0LCA5LCAxLCAyLFxuICAxNSwgNSwgMSwgMywgNywgMTQsIDYsIDksIDExLCA4LCAxMiwgMiwgMTAsIDAsIDQsIDEzLFxuICA4LCA2LCA0LCAxLCAzLCAxMSwgMTUsIDAsIDUsIDEyLCAyLCAxMywgOSwgNywgMTAsIDE0LFxuICAxMiwgMTUsIDEwLCA0LCAxLCA1LCA4LCA3LCA2LCAyLCAxMywgMTQsIDAsIDMsIDksIDExXG5dO1xuXG52YXIgcyA9IFtcbiAgMTEsIDE0LCAxNSwgMTIsIDUsIDgsIDcsIDksIDExLCAxMywgMTQsIDE1LCA2LCA3LCA5LCA4LFxuICA3LCA2LCA4LCAxMywgMTEsIDksIDcsIDE1LCA3LCAxMiwgMTUsIDksIDExLCA3LCAxMywgMTIsXG4gIDExLCAxMywgNiwgNywgMTQsIDksIDEzLCAxNSwgMTQsIDgsIDEzLCA2LCA1LCAxMiwgNywgNSxcbiAgMTEsIDEyLCAxNCwgMTUsIDE0LCAxNSwgOSwgOCwgOSwgMTQsIDUsIDYsIDgsIDYsIDUsIDEyLFxuICA5LCAxNSwgNSwgMTEsIDYsIDgsIDEzLCAxMiwgNSwgMTIsIDEzLCAxNCwgMTEsIDgsIDUsIDZcbl07XG5cbnZhciBzaCA9IFtcbiAgOCwgOSwgOSwgMTEsIDEzLCAxNSwgMTUsIDUsIDcsIDcsIDgsIDExLCAxNCwgMTQsIDEyLCA2LFxuICA5LCAxMywgMTUsIDcsIDEyLCA4LCA5LCAxMSwgNywgNywgMTIsIDcsIDYsIDE1LCAxMywgMTEsXG4gIDksIDcsIDE1LCAxMSwgOCwgNiwgNiwgMTQsIDEyLCAxMywgNSwgMTQsIDEzLCAxMywgNywgNSxcbiAgMTUsIDUsIDgsIDExLCAxNCwgMTQsIDYsIDE0LCA2LCA5LCAxMiwgOSwgMTIsIDUsIDE1LCA4LFxuICA4LCA1LCAxMiwgOSwgMTIsIDUsIDE0LCA2LCA4LCAxMywgNiwgNSwgMTUsIDEzLCAxMSwgMTFcbl07XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuc2hhMSA9IHJlcXVpcmUoJy4vc2hhLzEnKTtcbmV4cG9ydHMuc2hhMjI0ID0gcmVxdWlyZSgnLi9zaGEvMjI0Jyk7XG5leHBvcnRzLnNoYTI1NiA9IHJlcXVpcmUoJy4vc2hhLzI1NicpO1xuZXhwb3J0cy5zaGEzODQgPSByZXF1aXJlKCcuL3NoYS8zODQnKTtcbmV4cG9ydHMuc2hhNTEyID0gcmVxdWlyZSgnLi9zaGEvNTEyJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi4vY29tbW9uJyk7XG52YXIgc2hhQ29tbW9uID0gcmVxdWlyZSgnLi9jb21tb24nKTtcblxudmFyIHJvdGwzMiA9IHV0aWxzLnJvdGwzMjtcbnZhciBzdW0zMiA9IHV0aWxzLnN1bTMyO1xudmFyIHN1bTMyXzUgPSB1dGlscy5zdW0zMl81O1xudmFyIGZ0XzEgPSBzaGFDb21tb24uZnRfMTtcbnZhciBCbG9ja0hhc2ggPSBjb21tb24uQmxvY2tIYXNoO1xuXG52YXIgc2hhMV9LID0gW1xuICAweDVBODI3OTk5LCAweDZFRDlFQkExLFxuICAweDhGMUJCQ0RDLCAweENBNjJDMUQ2XG5dO1xuXG5mdW5jdGlvbiBTSEExKCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMSkpXG4gICAgcmV0dXJuIG5ldyBTSEExKCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFtcbiAgICAweDY3NDUyMzAxLCAweGVmY2RhYjg5LCAweDk4YmFkY2ZlLFxuICAgIDB4MTAzMjU0NzYsIDB4YzNkMmUxZjAgXTtcbiAgdGhpcy5XID0gbmV3IEFycmF5KDgwKTtcbn1cblxudXRpbHMuaW5oZXJpdHMoU0hBMSwgQmxvY2tIYXNoKTtcbm1vZHVsZS5leHBvcnRzID0gU0hBMTtcblxuU0hBMS5ibG9ja1NpemUgPSA1MTI7XG5TSEExLm91dFNpemUgPSAxNjA7XG5TSEExLmhtYWNTdHJlbmd0aCA9IDgwO1xuU0hBMS5wYWRMZW5ndGggPSA2NDtcblxuU0hBMS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgVyA9IHRoaXMuVztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspXG4gICAgV1tpXSA9IG1zZ1tzdGFydCArIGldO1xuXG4gIGZvcig7IGkgPCBXLmxlbmd0aDsgaSsrKVxuICAgIFdbaV0gPSByb3RsMzIoV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XSwgMSk7XG5cbiAgdmFyIGEgPSB0aGlzLmhbMF07XG4gIHZhciBiID0gdGhpcy5oWzFdO1xuICB2YXIgYyA9IHRoaXMuaFsyXTtcbiAgdmFyIGQgPSB0aGlzLmhbM107XG4gIHZhciBlID0gdGhpcy5oWzRdO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBXLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHMgPSB+fihpIC8gMjApO1xuICAgIHZhciB0ID0gc3VtMzJfNShyb3RsMzIoYSwgNSksIGZ0XzEocywgYiwgYywgZCksIGUsIFdbaV0sIHNoYTFfS1tzXSk7XG4gICAgZSA9IGQ7XG4gICAgZCA9IGM7XG4gICAgYyA9IHJvdGwzMihiLCAzMCk7XG4gICAgYiA9IGE7XG4gICAgYSA9IHQ7XG4gIH1cblxuICB0aGlzLmhbMF0gPSBzdW0zMih0aGlzLmhbMF0sIGEpO1xuICB0aGlzLmhbMV0gPSBzdW0zMih0aGlzLmhbMV0sIGIpO1xuICB0aGlzLmhbMl0gPSBzdW0zMih0aGlzLmhbMl0sIGMpO1xuICB0aGlzLmhbM10gPSBzdW0zMih0aGlzLmhbM10sIGQpO1xuICB0aGlzLmhbNF0gPSBzdW0zMih0aGlzLmhbNF0sIGUpO1xufTtcblxuU0hBMS5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdiaWcnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgU0hBMjU2ID0gcmVxdWlyZSgnLi8yNTYnKTtcblxuZnVuY3Rpb24gU0hBMjI0KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMjI0KSlcbiAgICByZXR1cm4gbmV3IFNIQTIyNCgpO1xuXG4gIFNIQTI1Ni5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbXG4gICAgMHhjMTA1OWVkOCwgMHgzNjdjZDUwNywgMHgzMDcwZGQxNywgMHhmNzBlNTkzOSxcbiAgICAweGZmYzAwYjMxLCAweDY4NTgxNTExLCAweDY0Zjk4ZmE3LCAweGJlZmE0ZmE0IF07XG59XG51dGlscy5pbmhlcml0cyhTSEEyMjQsIFNIQTI1Nik7XG5tb2R1bGUuZXhwb3J0cyA9IFNIQTIyNDtcblxuU0hBMjI0LmJsb2NrU2l6ZSA9IDUxMjtcblNIQTIyNC5vdXRTaXplID0gMjI0O1xuU0hBMjI0LmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTIyNC5wYWRMZW5ndGggPSA2NDtcblxuU0hBMjI0LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICAvLyBKdXN0IHRydW5jYXRlIG91dHB1dFxuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmguc2xpY2UoMCwgNyksICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaC5zbGljZSgwLCA3KSwgJ2JpZycpO1xufTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGNvbW1vbiA9IHJlcXVpcmUoJy4uL2NvbW1vbicpO1xudmFyIHNoYUNvbW1vbiA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG52YXIgc3VtMzIgPSB1dGlscy5zdW0zMjtcbnZhciBzdW0zMl80ID0gdXRpbHMuc3VtMzJfNDtcbnZhciBzdW0zMl81ID0gdXRpbHMuc3VtMzJfNTtcbnZhciBjaDMyID0gc2hhQ29tbW9uLmNoMzI7XG52YXIgbWFqMzIgPSBzaGFDb21tb24ubWFqMzI7XG52YXIgczBfMjU2ID0gc2hhQ29tbW9uLnMwXzI1NjtcbnZhciBzMV8yNTYgPSBzaGFDb21tb24uczFfMjU2O1xudmFyIGcwXzI1NiA9IHNoYUNvbW1vbi5nMF8yNTY7XG52YXIgZzFfMjU2ID0gc2hhQ29tbW9uLmcxXzI1NjtcblxudmFyIEJsb2NrSGFzaCA9IGNvbW1vbi5CbG9ja0hhc2g7XG5cbnZhciBzaGEyNTZfSyA9IFtcbiAgMHg0MjhhMmY5OCwgMHg3MTM3NDQ5MSwgMHhiNWMwZmJjZiwgMHhlOWI1ZGJhNSxcbiAgMHgzOTU2YzI1YiwgMHg1OWYxMTFmMSwgMHg5MjNmODJhNCwgMHhhYjFjNWVkNSxcbiAgMHhkODA3YWE5OCwgMHgxMjgzNWIwMSwgMHgyNDMxODViZSwgMHg1NTBjN2RjMyxcbiAgMHg3MmJlNWQ3NCwgMHg4MGRlYjFmZSwgMHg5YmRjMDZhNywgMHhjMTliZjE3NCxcbiAgMHhlNDliNjljMSwgMHhlZmJlNDc4NiwgMHgwZmMxOWRjNiwgMHgyNDBjYTFjYyxcbiAgMHgyZGU5MmM2ZiwgMHg0YTc0ODRhYSwgMHg1Y2IwYTlkYywgMHg3NmY5ODhkYSxcbiAgMHg5ODNlNTE1MiwgMHhhODMxYzY2ZCwgMHhiMDAzMjdjOCwgMHhiZjU5N2ZjNyxcbiAgMHhjNmUwMGJmMywgMHhkNWE3OTE0NywgMHgwNmNhNjM1MSwgMHgxNDI5Mjk2NyxcbiAgMHgyN2I3MGE4NSwgMHgyZTFiMjEzOCwgMHg0ZDJjNmRmYywgMHg1MzM4MGQxMyxcbiAgMHg2NTBhNzM1NCwgMHg3NjZhMGFiYiwgMHg4MWMyYzkyZSwgMHg5MjcyMmM4NSxcbiAgMHhhMmJmZThhMSwgMHhhODFhNjY0YiwgMHhjMjRiOGI3MCwgMHhjNzZjNTFhMyxcbiAgMHhkMTkyZTgxOSwgMHhkNjk5MDYyNCwgMHhmNDBlMzU4NSwgMHgxMDZhYTA3MCxcbiAgMHgxOWE0YzExNiwgMHgxZTM3NmMwOCwgMHgyNzQ4Nzc0YywgMHgzNGIwYmNiNSxcbiAgMHgzOTFjMGNiMywgMHg0ZWQ4YWE0YSwgMHg1YjljY2E0ZiwgMHg2ODJlNmZmMyxcbiAgMHg3NDhmODJlZSwgMHg3OGE1NjM2ZiwgMHg4NGM4NzgxNCwgMHg4Y2M3MDIwOCxcbiAgMHg5MGJlZmZmYSwgMHhhNDUwNmNlYiwgMHhiZWY5YTNmNywgMHhjNjcxNzhmMlxuXTtcblxuZnVuY3Rpb24gU0hBMjU2KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMjU2KSlcbiAgICByZXR1cm4gbmV3IFNIQTI1NigpO1xuXG4gIEJsb2NrSGFzaC5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbXG4gICAgMHg2YTA5ZTY2NywgMHhiYjY3YWU4NSwgMHgzYzZlZjM3MiwgMHhhNTRmZjUzYSxcbiAgICAweDUxMGU1MjdmLCAweDliMDU2ODhjLCAweDFmODNkOWFiLCAweDViZTBjZDE5XG4gIF07XG4gIHRoaXMuayA9IHNoYTI1Nl9LO1xuICB0aGlzLlcgPSBuZXcgQXJyYXkoNjQpO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBMjU2LCBCbG9ja0hhc2gpO1xubW9kdWxlLmV4cG9ydHMgPSBTSEEyNTY7XG5cblNIQTI1Ni5ibG9ja1NpemUgPSA1MTI7XG5TSEEyNTYub3V0U2l6ZSA9IDI1NjtcblNIQTI1Ni5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEEyNTYucGFkTGVuZ3RoID0gNjQ7XG5cblNIQTI1Ni5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgVyA9IHRoaXMuVztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspXG4gICAgV1tpXSA9IG1zZ1tzdGFydCArIGldO1xuICBmb3IgKDsgaSA8IFcubGVuZ3RoOyBpKyspXG4gICAgV1tpXSA9IHN1bTMyXzQoZzFfMjU2KFdbaSAtIDJdKSwgV1tpIC0gN10sIGcwXzI1NihXW2kgLSAxNV0pLCBXW2kgLSAxNl0pO1xuXG4gIHZhciBhID0gdGhpcy5oWzBdO1xuICB2YXIgYiA9IHRoaXMuaFsxXTtcbiAgdmFyIGMgPSB0aGlzLmhbMl07XG4gIHZhciBkID0gdGhpcy5oWzNdO1xuICB2YXIgZSA9IHRoaXMuaFs0XTtcbiAgdmFyIGYgPSB0aGlzLmhbNV07XG4gIHZhciBnID0gdGhpcy5oWzZdO1xuICB2YXIgaCA9IHRoaXMuaFs3XTtcblxuICBhc3NlcnQodGhpcy5rLmxlbmd0aCA9PT0gVy5sZW5ndGgpO1xuICBmb3IgKGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBUMSA9IHN1bTMyXzUoaCwgczFfMjU2KGUpLCBjaDMyKGUsIGYsIGcpLCB0aGlzLmtbaV0sIFdbaV0pO1xuICAgIHZhciBUMiA9IHN1bTMyKHMwXzI1NihhKSwgbWFqMzIoYSwgYiwgYykpO1xuICAgIGggPSBnO1xuICAgIGcgPSBmO1xuICAgIGYgPSBlO1xuICAgIGUgPSBzdW0zMihkLCBUMSk7XG4gICAgZCA9IGM7XG4gICAgYyA9IGI7XG4gICAgYiA9IGE7XG4gICAgYSA9IHN1bTMyKFQxLCBUMik7XG4gIH1cblxuICB0aGlzLmhbMF0gPSBzdW0zMih0aGlzLmhbMF0sIGEpO1xuICB0aGlzLmhbMV0gPSBzdW0zMih0aGlzLmhbMV0sIGIpO1xuICB0aGlzLmhbMl0gPSBzdW0zMih0aGlzLmhbMl0sIGMpO1xuICB0aGlzLmhbM10gPSBzdW0zMih0aGlzLmhbM10sIGQpO1xuICB0aGlzLmhbNF0gPSBzdW0zMih0aGlzLmhbNF0sIGUpO1xuICB0aGlzLmhbNV0gPSBzdW0zMih0aGlzLmhbNV0sIGYpO1xuICB0aGlzLmhbNl0gPSBzdW0zMih0aGlzLmhbNl0sIGcpO1xuICB0aGlzLmhbN10gPSBzdW0zMih0aGlzLmhbN10sIGgpO1xufTtcblxuU0hBMjU2LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2JpZycpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxudmFyIFNIQTUxMiA9IHJlcXVpcmUoJy4vNTEyJyk7XG5cbmZ1bmN0aW9uIFNIQTM4NCgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTM4NCkpXG4gICAgcmV0dXJuIG5ldyBTSEEzODQoKTtcblxuICBTSEE1MTIuY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gW1xuICAgIDB4Y2JiYjlkNWQsIDB4YzEwNTllZDgsXG4gICAgMHg2MjlhMjkyYSwgMHgzNjdjZDUwNyxcbiAgICAweDkxNTkwMTVhLCAweDMwNzBkZDE3LFxuICAgIDB4MTUyZmVjZDgsIDB4ZjcwZTU5MzksXG4gICAgMHg2NzMzMjY2NywgMHhmZmMwMGIzMSxcbiAgICAweDhlYjQ0YTg3LCAweDY4NTgxNTExLFxuICAgIDB4ZGIwYzJlMGQsIDB4NjRmOThmYTcsXG4gICAgMHg0N2I1NDgxZCwgMHhiZWZhNGZhNCBdO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBMzg0LCBTSEE1MTIpO1xubW9kdWxlLmV4cG9ydHMgPSBTSEEzODQ7XG5cblNIQTM4NC5ibG9ja1NpemUgPSAxMDI0O1xuU0hBMzg0Lm91dFNpemUgPSAzODQ7XG5TSEEzODQuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBMzg0LnBhZExlbmd0aCA9IDEyODtcblxuU0hBMzg0LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmguc2xpY2UoMCwgMTIpLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmguc2xpY2UoMCwgMTIpLCAnYmlnJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGNvbW1vbiA9IHJlcXVpcmUoJy4uL2NvbW1vbicpO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxudmFyIHJvdHI2NF9oaSA9IHV0aWxzLnJvdHI2NF9oaTtcbnZhciByb3RyNjRfbG8gPSB1dGlscy5yb3RyNjRfbG87XG52YXIgc2hyNjRfaGkgPSB1dGlscy5zaHI2NF9oaTtcbnZhciBzaHI2NF9sbyA9IHV0aWxzLnNocjY0X2xvO1xudmFyIHN1bTY0ID0gdXRpbHMuc3VtNjQ7XG52YXIgc3VtNjRfaGkgPSB1dGlscy5zdW02NF9oaTtcbnZhciBzdW02NF9sbyA9IHV0aWxzLnN1bTY0X2xvO1xudmFyIHN1bTY0XzRfaGkgPSB1dGlscy5zdW02NF80X2hpO1xudmFyIHN1bTY0XzRfbG8gPSB1dGlscy5zdW02NF80X2xvO1xudmFyIHN1bTY0XzVfaGkgPSB1dGlscy5zdW02NF81X2hpO1xudmFyIHN1bTY0XzVfbG8gPSB1dGlscy5zdW02NF81X2xvO1xuXG52YXIgQmxvY2tIYXNoID0gY29tbW9uLkJsb2NrSGFzaDtcblxudmFyIHNoYTUxMl9LID0gW1xuICAweDQyOGEyZjk4LCAweGQ3MjhhZTIyLCAweDcxMzc0NDkxLCAweDIzZWY2NWNkLFxuICAweGI1YzBmYmNmLCAweGVjNGQzYjJmLCAweGU5YjVkYmE1LCAweDgxODlkYmJjLFxuICAweDM5NTZjMjViLCAweGYzNDhiNTM4LCAweDU5ZjExMWYxLCAweGI2MDVkMDE5LFxuICAweDkyM2Y4MmE0LCAweGFmMTk0ZjliLCAweGFiMWM1ZWQ1LCAweGRhNmQ4MTE4LFxuICAweGQ4MDdhYTk4LCAweGEzMDMwMjQyLCAweDEyODM1YjAxLCAweDQ1NzA2ZmJlLFxuICAweDI0MzE4NWJlLCAweDRlZTRiMjhjLCAweDU1MGM3ZGMzLCAweGQ1ZmZiNGUyLFxuICAweDcyYmU1ZDc0LCAweGYyN2I4OTZmLCAweDgwZGViMWZlLCAweDNiMTY5NmIxLFxuICAweDliZGMwNmE3LCAweDI1YzcxMjM1LCAweGMxOWJmMTc0LCAweGNmNjkyNjk0LFxuICAweGU0OWI2OWMxLCAweDllZjE0YWQyLCAweGVmYmU0Nzg2LCAweDM4NGYyNWUzLFxuICAweDBmYzE5ZGM2LCAweDhiOGNkNWI1LCAweDI0MGNhMWNjLCAweDc3YWM5YzY1LFxuICAweDJkZTkyYzZmLCAweDU5MmIwMjc1LCAweDRhNzQ4NGFhLCAweDZlYTZlNDgzLFxuICAweDVjYjBhOWRjLCAweGJkNDFmYmQ0LCAweDc2Zjk4OGRhLCAweDgzMTE1M2I1LFxuICAweDk4M2U1MTUyLCAweGVlNjZkZmFiLCAweGE4MzFjNjZkLCAweDJkYjQzMjEwLFxuICAweGIwMDMyN2M4LCAweDk4ZmIyMTNmLCAweGJmNTk3ZmM3LCAweGJlZWYwZWU0LFxuICAweGM2ZTAwYmYzLCAweDNkYTg4ZmMyLCAweGQ1YTc5MTQ3LCAweDkzMGFhNzI1LFxuICAweDA2Y2E2MzUxLCAweGUwMDM4MjZmLCAweDE0MjkyOTY3LCAweDBhMGU2ZTcwLFxuICAweDI3YjcwYTg1LCAweDQ2ZDIyZmZjLCAweDJlMWIyMTM4LCAweDVjMjZjOTI2LFxuICAweDRkMmM2ZGZjLCAweDVhYzQyYWVkLCAweDUzMzgwZDEzLCAweDlkOTViM2RmLFxuICAweDY1MGE3MzU0LCAweDhiYWY2M2RlLCAweDc2NmEwYWJiLCAweDNjNzdiMmE4LFxuICAweDgxYzJjOTJlLCAweDQ3ZWRhZWU2LCAweDkyNzIyYzg1LCAweDE0ODIzNTNiLFxuICAweGEyYmZlOGExLCAweDRjZjEwMzY0LCAweGE4MWE2NjRiLCAweGJjNDIzMDAxLFxuICAweGMyNGI4YjcwLCAweGQwZjg5NzkxLCAweGM3NmM1MWEzLCAweDA2NTRiZTMwLFxuICAweGQxOTJlODE5LCAweGQ2ZWY1MjE4LCAweGQ2OTkwNjI0LCAweDU1NjVhOTEwLFxuICAweGY0MGUzNTg1LCAweDU3NzEyMDJhLCAweDEwNmFhMDcwLCAweDMyYmJkMWI4LFxuICAweDE5YTRjMTE2LCAweGI4ZDJkMGM4LCAweDFlMzc2YzA4LCAweDUxNDFhYjUzLFxuICAweDI3NDg3NzRjLCAweGRmOGVlYjk5LCAweDM0YjBiY2I1LCAweGUxOWI0OGE4LFxuICAweDM5MWMwY2IzLCAweGM1Yzk1YTYzLCAweDRlZDhhYTRhLCAweGUzNDE4YWNiLFxuICAweDViOWNjYTRmLCAweDc3NjNlMzczLCAweDY4MmU2ZmYzLCAweGQ2YjJiOGEzLFxuICAweDc0OGY4MmVlLCAweDVkZWZiMmZjLCAweDc4YTU2MzZmLCAweDQzMTcyZjYwLFxuICAweDg0Yzg3ODE0LCAweGExZjBhYjcyLCAweDhjYzcwMjA4LCAweDFhNjQzOWVjLFxuICAweDkwYmVmZmZhLCAweDIzNjMxZTI4LCAweGE0NTA2Y2ViLCAweGRlODJiZGU5LFxuICAweGJlZjlhM2Y3LCAweGIyYzY3OTE1LCAweGM2NzE3OGYyLCAweGUzNzI1MzJiLFxuICAweGNhMjczZWNlLCAweGVhMjY2MTljLCAweGQxODZiOGM3LCAweDIxYzBjMjA3LFxuICAweGVhZGE3ZGQ2LCAweGNkZTBlYjFlLCAweGY1N2Q0ZjdmLCAweGVlNmVkMTc4LFxuICAweDA2ZjA2N2FhLCAweDcyMTc2ZmJhLCAweDBhNjM3ZGM1LCAweGEyYzg5OGE2LFxuICAweDExM2Y5ODA0LCAweGJlZjkwZGFlLCAweDFiNzEwYjM1LCAweDEzMWM0NzFiLFxuICAweDI4ZGI3N2Y1LCAweDIzMDQ3ZDg0LCAweDMyY2FhYjdiLCAweDQwYzcyNDkzLFxuICAweDNjOWViZTBhLCAweDE1YzliZWJjLCAweDQzMWQ2N2M0LCAweDljMTAwZDRjLFxuICAweDRjYzVkNGJlLCAweGNiM2U0MmI2LCAweDU5N2YyOTljLCAweGZjNjU3ZTJhLFxuICAweDVmY2I2ZmFiLCAweDNhZDZmYWVjLCAweDZjNDQxOThjLCAweDRhNDc1ODE3XG5dO1xuXG5mdW5jdGlvbiBTSEE1MTIoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEE1MTIpKVxuICAgIHJldHVybiBuZXcgU0hBNTEyKCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFtcbiAgICAweDZhMDllNjY3LCAweGYzYmNjOTA4LFxuICAgIDB4YmI2N2FlODUsIDB4ODRjYWE3M2IsXG4gICAgMHgzYzZlZjM3MiwgMHhmZTk0ZjgyYixcbiAgICAweGE1NGZmNTNhLCAweDVmMWQzNmYxLFxuICAgIDB4NTEwZTUyN2YsIDB4YWRlNjgyZDEsXG4gICAgMHg5YjA1Njg4YywgMHgyYjNlNmMxZixcbiAgICAweDFmODNkOWFiLCAweGZiNDFiZDZiLFxuICAgIDB4NWJlMGNkMTksIDB4MTM3ZTIxNzkgXTtcbiAgdGhpcy5rID0gc2hhNTEyX0s7XG4gIHRoaXMuVyA9IG5ldyBBcnJheSgxNjApO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBNTEyLCBCbG9ja0hhc2gpO1xubW9kdWxlLmV4cG9ydHMgPSBTSEE1MTI7XG5cblNIQTUxMi5ibG9ja1NpemUgPSAxMDI0O1xuU0hBNTEyLm91dFNpemUgPSA1MTI7XG5TSEE1MTIuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBNTEyLnBhZExlbmd0aCA9IDEyODtcblxuU0hBNTEyLnByb3RvdHlwZS5fcHJlcGFyZUJsb2NrID0gZnVuY3Rpb24gX3ByZXBhcmVCbG9jayhtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIC8vIDMyIHggMzJiaXQgd29yZHNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSsrKVxuICAgIFdbaV0gPSBtc2dbc3RhcnQgKyBpXTtcbiAgZm9yICg7IGkgPCBXLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIGMwX2hpID0gZzFfNTEyX2hpKFdbaSAtIDRdLCBXW2kgLSAzXSk7ICAvLyBpIC0gMlxuICAgIHZhciBjMF9sbyA9IGcxXzUxMl9sbyhXW2kgLSA0XSwgV1tpIC0gM10pO1xuICAgIHZhciBjMV9oaSA9IFdbaSAtIDE0XTsgIC8vIGkgLSA3XG4gICAgdmFyIGMxX2xvID0gV1tpIC0gMTNdO1xuICAgIHZhciBjMl9oaSA9IGcwXzUxMl9oaShXW2kgLSAzMF0sIFdbaSAtIDI5XSk7ICAvLyBpIC0gMTVcbiAgICB2YXIgYzJfbG8gPSBnMF81MTJfbG8oV1tpIC0gMzBdLCBXW2kgLSAyOV0pO1xuICAgIHZhciBjM19oaSA9IFdbaSAtIDMyXTsgIC8vIGkgLSAxNlxuICAgIHZhciBjM19sbyA9IFdbaSAtIDMxXTtcblxuICAgIFdbaV0gPSBzdW02NF80X2hpKFxuICAgICAgYzBfaGksIGMwX2xvLFxuICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgYzNfaGksIGMzX2xvKTtcbiAgICBXW2kgKyAxXSA9IHN1bTY0XzRfbG8oXG4gICAgICBjMF9oaSwgYzBfbG8sXG4gICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICBjM19oaSwgYzNfbG8pO1xuICB9XG59O1xuXG5TSEE1MTIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKG1zZywgc3RhcnQpIHtcbiAgdGhpcy5fcHJlcGFyZUJsb2NrKG1zZywgc3RhcnQpO1xuXG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIHZhciBhaCA9IHRoaXMuaFswXTtcbiAgdmFyIGFsID0gdGhpcy5oWzFdO1xuICB2YXIgYmggPSB0aGlzLmhbMl07XG4gIHZhciBibCA9IHRoaXMuaFszXTtcbiAgdmFyIGNoID0gdGhpcy5oWzRdO1xuICB2YXIgY2wgPSB0aGlzLmhbNV07XG4gIHZhciBkaCA9IHRoaXMuaFs2XTtcbiAgdmFyIGRsID0gdGhpcy5oWzddO1xuICB2YXIgZWggPSB0aGlzLmhbOF07XG4gIHZhciBlbCA9IHRoaXMuaFs5XTtcbiAgdmFyIGZoID0gdGhpcy5oWzEwXTtcbiAgdmFyIGZsID0gdGhpcy5oWzExXTtcbiAgdmFyIGdoID0gdGhpcy5oWzEyXTtcbiAgdmFyIGdsID0gdGhpcy5oWzEzXTtcbiAgdmFyIGhoID0gdGhpcy5oWzE0XTtcbiAgdmFyIGhsID0gdGhpcy5oWzE1XTtcblxuICBhc3NlcnQodGhpcy5rLmxlbmd0aCA9PT0gVy5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IFcubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIgYzBfaGkgPSBoaDtcbiAgICB2YXIgYzBfbG8gPSBobDtcbiAgICB2YXIgYzFfaGkgPSBzMV81MTJfaGkoZWgsIGVsKTtcbiAgICB2YXIgYzFfbG8gPSBzMV81MTJfbG8oZWgsIGVsKTtcbiAgICB2YXIgYzJfaGkgPSBjaDY0X2hpKGVoLCBlbCwgZmgsIGZsLCBnaCwgZ2wpO1xuICAgIHZhciBjMl9sbyA9IGNoNjRfbG8oZWgsIGVsLCBmaCwgZmwsIGdoLCBnbCk7XG4gICAgdmFyIGMzX2hpID0gdGhpcy5rW2ldO1xuICAgIHZhciBjM19sbyA9IHRoaXMua1tpICsgMV07XG4gICAgdmFyIGM0X2hpID0gV1tpXTtcbiAgICB2YXIgYzRfbG8gPSBXW2kgKyAxXTtcblxuICAgIHZhciBUMV9oaSA9IHN1bTY0XzVfaGkoXG4gICAgICBjMF9oaSwgYzBfbG8sXG4gICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICBjM19oaSwgYzNfbG8sXG4gICAgICBjNF9oaSwgYzRfbG8pO1xuICAgIHZhciBUMV9sbyA9IHN1bTY0XzVfbG8oXG4gICAgICBjMF9oaSwgYzBfbG8sXG4gICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICBjM19oaSwgYzNfbG8sXG4gICAgICBjNF9oaSwgYzRfbG8pO1xuXG4gICAgYzBfaGkgPSBzMF81MTJfaGkoYWgsIGFsKTtcbiAgICBjMF9sbyA9IHMwXzUxMl9sbyhhaCwgYWwpO1xuICAgIGMxX2hpID0gbWFqNjRfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCk7XG4gICAgYzFfbG8gPSBtYWo2NF9sbyhhaCwgYWwsIGJoLCBibCwgY2gsIGNsKTtcblxuICAgIHZhciBUMl9oaSA9IHN1bTY0X2hpKGMwX2hpLCBjMF9sbywgYzFfaGksIGMxX2xvKTtcbiAgICB2YXIgVDJfbG8gPSBzdW02NF9sbyhjMF9oaSwgYzBfbG8sIGMxX2hpLCBjMV9sbyk7XG5cbiAgICBoaCA9IGdoO1xuICAgIGhsID0gZ2w7XG5cbiAgICBnaCA9IGZoO1xuICAgIGdsID0gZmw7XG5cbiAgICBmaCA9IGVoO1xuICAgIGZsID0gZWw7XG5cbiAgICBlaCA9IHN1bTY0X2hpKGRoLCBkbCwgVDFfaGksIFQxX2xvKTtcbiAgICBlbCA9IHN1bTY0X2xvKGRsLCBkbCwgVDFfaGksIFQxX2xvKTtcblxuICAgIGRoID0gY2g7XG4gICAgZGwgPSBjbDtcblxuICAgIGNoID0gYmg7XG4gICAgY2wgPSBibDtcblxuICAgIGJoID0gYWg7XG4gICAgYmwgPSBhbDtcblxuICAgIGFoID0gc3VtNjRfaGkoVDFfaGksIFQxX2xvLCBUMl9oaSwgVDJfbG8pO1xuICAgIGFsID0gc3VtNjRfbG8oVDFfaGksIFQxX2xvLCBUMl9oaSwgVDJfbG8pO1xuICB9XG5cbiAgc3VtNjQodGhpcy5oLCAwLCBhaCwgYWwpO1xuICBzdW02NCh0aGlzLmgsIDIsIGJoLCBibCk7XG4gIHN1bTY0KHRoaXMuaCwgNCwgY2gsIGNsKTtcbiAgc3VtNjQodGhpcy5oLCA2LCBkaCwgZGwpO1xuICBzdW02NCh0aGlzLmgsIDgsIGVoLCBlbCk7XG4gIHN1bTY0KHRoaXMuaCwgMTAsIGZoLCBmbCk7XG4gIHN1bTY0KHRoaXMuaCwgMTIsIGdoLCBnbCk7XG4gIHN1bTY0KHRoaXMuaCwgMTQsIGhoLCBobCk7XG59O1xuXG5TSEE1MTIucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCAnYmlnJyk7XG59O1xuXG5mdW5jdGlvbiBjaDY0X2hpKHhoLCB4bCwgeWgsIHlsLCB6aCkge1xuICB2YXIgciA9ICh4aCAmIHloKSBeICgofnhoKSAmIHpoKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBjaDY0X2xvKHhoLCB4bCwgeWgsIHlsLCB6aCwgemwpIHtcbiAgdmFyIHIgPSAoeGwgJiB5bCkgXiAoKH54bCkgJiB6bCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gbWFqNjRfaGkoeGgsIHhsLCB5aCwgeWwsIHpoKSB7XG4gIHZhciByID0gKHhoICYgeWgpIF4gKHhoICYgemgpIF4gKHloICYgemgpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIG1hajY0X2xvKHhoLCB4bCwgeWgsIHlsLCB6aCwgemwpIHtcbiAgdmFyIHIgPSAoeGwgJiB5bCkgXiAoeGwgJiB6bCkgXiAoeWwgJiB6bCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczBfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAyOCk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDIpOyAgLy8gMzRcbiAgdmFyIGMyX2hpID0gcm90cjY0X2hpKHhsLCB4aCwgNyk7ICAvLyAzOVxuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIHMwXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMjgpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCAyKTsgIC8vIDM0XG4gIHZhciBjMl9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDcpOyAgLy8gMzlcblxuICB2YXIgciA9IGMwX2xvIF4gYzFfbG8gXiBjMl9sbztcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMV81MTJfaGkoeGgsIHhsKSB7XG4gIHZhciBjMF9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDE0KTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTgpO1xuICB2YXIgYzJfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCA5KTsgIC8vIDQxXG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczFfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxNCk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDE4KTtcbiAgdmFyIGMyX2xvID0gcm90cjY0X2xvKHhsLCB4aCwgOSk7ICAvLyA0MVxuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcwXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMSk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDgpO1xuICB2YXIgYzJfaGkgPSBzaHI2NF9oaSh4aCwgeGwsIDcpO1xuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcwXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMSk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDgpO1xuICB2YXIgYzJfbG8gPSBzaHI2NF9sbyh4aCwgeGwsIDcpO1xuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcxXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTkpO1xuICB2YXIgYzFfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCAyOSk7ICAvLyA2MVxuICB2YXIgYzJfaGkgPSBzaHI2NF9oaSh4aCwgeGwsIDYpO1xuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcxXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMTkpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCAyOSk7ICAvLyA2MVxuICB2YXIgYzJfbG8gPSBzaHI2NF9sbyh4aCwgeGwsIDYpO1xuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgcm90cjMyID0gdXRpbHMucm90cjMyO1xuXG5mdW5jdGlvbiBmdF8xKHMsIHgsIHksIHopIHtcbiAgaWYgKHMgPT09IDApXG4gICAgcmV0dXJuIGNoMzIoeCwgeSwgeik7XG4gIGlmIChzID09PSAxIHx8IHMgPT09IDMpXG4gICAgcmV0dXJuIHAzMih4LCB5LCB6KTtcbiAgaWYgKHMgPT09IDIpXG4gICAgcmV0dXJuIG1hajMyKHgsIHksIHopO1xufVxuZXhwb3J0cy5mdF8xID0gZnRfMTtcblxuZnVuY3Rpb24gY2gzMih4LCB5LCB6KSB7XG4gIHJldHVybiAoeCAmIHkpIF4gKCh+eCkgJiB6KTtcbn1cbmV4cG9ydHMuY2gzMiA9IGNoMzI7XG5cbmZ1bmN0aW9uIG1hajMyKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgXiAoeCAmIHopIF4gKHkgJiB6KTtcbn1cbmV4cG9ydHMubWFqMzIgPSBtYWozMjtcblxuZnVuY3Rpb24gcDMyKHgsIHksIHopIHtcbiAgcmV0dXJuIHggXiB5IF4gejtcbn1cbmV4cG9ydHMucDMyID0gcDMyO1xuXG5mdW5jdGlvbiBzMF8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDIpIF4gcm90cjMyKHgsIDEzKSBeIHJvdHIzMih4LCAyMik7XG59XG5leHBvcnRzLnMwXzI1NiA9IHMwXzI1NjtcblxuZnVuY3Rpb24gczFfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCA2KSBeIHJvdHIzMih4LCAxMSkgXiByb3RyMzIoeCwgMjUpO1xufVxuZXhwb3J0cy5zMV8yNTYgPSBzMV8yNTY7XG5cbmZ1bmN0aW9uIGcwXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgNykgXiByb3RyMzIoeCwgMTgpIF4gKHggPj4+IDMpO1xufVxuZXhwb3J0cy5nMF8yNTYgPSBnMF8yNTY7XG5cbmZ1bmN0aW9uIGcxXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgMTcpIF4gcm90cjMyKHgsIDE5KSBeICh4ID4+PiAxMCk7XG59XG5leHBvcnRzLmcxXzI1NiA9IGcxXzI1NjtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmV4cG9ydHMuaW5oZXJpdHMgPSBpbmhlcml0cztcblxuZnVuY3Rpb24gaXNTdXJyb2dhdGVQYWlyKG1zZywgaSkge1xuICBpZiAoKG1zZy5jaGFyQ29kZUF0KGkpICYgMHhGQzAwKSAhPT0gMHhEODAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChpIDwgMCB8fCBpICsgMSA+PSBtc2cubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiAobXNnLmNoYXJDb2RlQXQoaSArIDEpICYgMHhGQzAwKSA9PT0gMHhEQzAwO1xufVxuXG5mdW5jdGlvbiB0b0FycmF5KG1zZywgZW5jKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KG1zZykpXG4gICAgcmV0dXJuIG1zZy5zbGljZSgpO1xuICBpZiAoIW1zZylcbiAgICByZXR1cm4gW107XG4gIHZhciByZXMgPSBbXTtcbiAgaWYgKHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKCFlbmMpIHtcbiAgICAgIC8vIEluc3BpcmVkIGJ5IHN0cmluZ1RvVXRmOEJ5dGVBcnJheSgpIGluIGNsb3N1cmUtbGlicmFyeSBieSBHb29nbGVcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1saWJyYXJ5L2Jsb2IvODU5OGQ4NzI0MmFmNTlhYWMyMzMyNzA3NDJjODk4NGUyYjJiZGJlMC9jbG9zdXJlL2dvb2cvY3J5cHQvY3J5cHQuanMjTDExNy1MMTQzXG4gICAgICAvLyBBcGFjaGUgTGljZW5zZSAyLjBcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1saWJyYXJ5L2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAgICAgIHZhciBwID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjID0gbXNnLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIGlmIChjIDwgMTI4KSB7XG4gICAgICAgICAgcmVzW3ArK10gPSBjO1xuICAgICAgICB9IGVsc2UgaWYgKGMgPCAyMDQ4KSB7XG4gICAgICAgICAgcmVzW3ArK10gPSAoYyA+PiA2KSB8IDE5MjtcbiAgICAgICAgICByZXNbcCsrXSA9IChjICYgNjMpIHwgMTI4O1xuICAgICAgICB9IGVsc2UgaWYgKGlzU3Vycm9nYXRlUGFpcihtc2csIGkpKSB7XG4gICAgICAgICAgYyA9IDB4MTAwMDAgKyAoKGMgJiAweDAzRkYpIDw8IDEwKSArIChtc2cuY2hhckNvZGVBdCgrK2kpICYgMHgwM0ZGKTtcbiAgICAgICAgICByZXNbcCsrXSA9IChjID4+IDE4KSB8IDI0MDtcbiAgICAgICAgICByZXNbcCsrXSA9ICgoYyA+PiAxMikgJiA2MykgfCAxMjg7XG4gICAgICAgICAgcmVzW3ArK10gPSAoKGMgPj4gNikgJiA2MykgfCAxMjg7XG4gICAgICAgICAgcmVzW3ArK10gPSAoYyAmIDYzKSB8IDEyODtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNbcCsrXSA9IChjID4+IDEyKSB8IDIyNDtcbiAgICAgICAgICByZXNbcCsrXSA9ICgoYyA+PiA2KSAmIDYzKSB8IDEyODtcbiAgICAgICAgICByZXNbcCsrXSA9IChjICYgNjMpIHwgMTI4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmMgPT09ICdoZXgnKSB7XG4gICAgICBtc2cgPSBtc2cucmVwbGFjZSgvW15hLXowLTldKy9pZywgJycpO1xuICAgICAgaWYgKG1zZy5sZW5ndGggJSAyICE9PSAwKVxuICAgICAgICBtc2cgPSAnMCcgKyBtc2c7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSAyKVxuICAgICAgICByZXMucHVzaChwYXJzZUludChtc2dbaV0gKyBtc2dbaSArIDFdLCAxNikpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgICAgcmVzW2ldID0gbXNnW2ldIHwgMDtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuZXhwb3J0cy50b0FycmF5ID0gdG9BcnJheTtcblxuZnVuY3Rpb24gdG9IZXgobXNnKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspXG4gICAgcmVzICs9IHplcm8yKG1zZ1tpXS50b1N0cmluZygxNikpO1xuICByZXR1cm4gcmVzO1xufVxuZXhwb3J0cy50b0hleCA9IHRvSGV4O1xuXG5mdW5jdGlvbiBodG9ubCh3KSB7XG4gIHZhciByZXMgPSAodyA+Pj4gMjQpIHxcbiAgICAgICAgICAgICgodyA+Pj4gOCkgJiAweGZmMDApIHxcbiAgICAgICAgICAgICgodyA8PCA4KSAmIDB4ZmYwMDAwKSB8XG4gICAgICAgICAgICAoKHcgJiAweGZmKSA8PCAyNCk7XG4gIHJldHVybiByZXMgPj4+IDA7XG59XG5leHBvcnRzLmh0b25sID0gaHRvbmw7XG5cbmZ1bmN0aW9uIHRvSGV4MzIobXNnLCBlbmRpYW4pIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgIHZhciB3ID0gbXNnW2ldO1xuICAgIGlmIChlbmRpYW4gPT09ICdsaXR0bGUnKVxuICAgICAgdyA9IGh0b25sKHcpO1xuICAgIHJlcyArPSB6ZXJvOCh3LnRvU3RyaW5nKDE2KSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbmV4cG9ydHMudG9IZXgzMiA9IHRvSGV4MzI7XG5cbmZ1bmN0aW9uIHplcm8yKHdvcmQpIHtcbiAgaWYgKHdvcmQubGVuZ3RoID09PSAxKVxuICAgIHJldHVybiAnMCcgKyB3b3JkO1xuICBlbHNlXG4gICAgcmV0dXJuIHdvcmQ7XG59XG5leHBvcnRzLnplcm8yID0gemVybzI7XG5cbmZ1bmN0aW9uIHplcm84KHdvcmQpIHtcbiAgaWYgKHdvcmQubGVuZ3RoID09PSA3KVxuICAgIHJldHVybiAnMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gNilcbiAgICByZXR1cm4gJzAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA1KVxuICAgIHJldHVybiAnMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA0KVxuICAgIHJldHVybiAnMDAwMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gMylcbiAgICByZXR1cm4gJzAwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAyKVxuICAgIHJldHVybiAnMDAwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAxKVxuICAgIHJldHVybiAnMDAwMDAwMCcgKyB3b3JkO1xuICBlbHNlXG4gICAgcmV0dXJuIHdvcmQ7XG59XG5leHBvcnRzLnplcm84ID0gemVybzg7XG5cbmZ1bmN0aW9uIGpvaW4zMihtc2csIHN0YXJ0LCBlbmQsIGVuZGlhbikge1xuICB2YXIgbGVuID0gZW5kIC0gc3RhcnQ7XG4gIGFzc2VydChsZW4gJSA0ID09PSAwKTtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShsZW4gLyA0KTtcbiAgZm9yICh2YXIgaSA9IDAsIGsgPSBzdGFydDsgaSA8IHJlcy5sZW5ndGg7IGkrKywgayArPSA0KSB7XG4gICAgdmFyIHc7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JpZycpXG4gICAgICB3ID0gKG1zZ1trXSA8PCAyNCkgfCAobXNnW2sgKyAxXSA8PCAxNikgfCAobXNnW2sgKyAyXSA8PCA4KSB8IG1zZ1trICsgM107XG4gICAgZWxzZVxuICAgICAgdyA9IChtc2dbayArIDNdIDw8IDI0KSB8IChtc2dbayArIDJdIDw8IDE2KSB8IChtc2dbayArIDFdIDw8IDgpIHwgbXNnW2tdO1xuICAgIHJlc1tpXSA9IHcgPj4+IDA7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbmV4cG9ydHMuam9pbjMyID0gam9pbjMyO1xuXG5mdW5jdGlvbiBzcGxpdDMyKG1zZywgZW5kaWFuKSB7XG4gIHZhciByZXMgPSBuZXcgQXJyYXkobXNnLmxlbmd0aCAqIDQpO1xuICBmb3IgKHZhciBpID0gMCwgayA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyssIGsgKz0gNCkge1xuICAgIHZhciBtID0gbXNnW2ldO1xuICAgIGlmIChlbmRpYW4gPT09ICdiaWcnKSB7XG4gICAgICByZXNba10gPSBtID4+PiAyNDtcbiAgICAgIHJlc1trICsgMV0gPSAobSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgIHJlc1trICsgMl0gPSAobSA+Pj4gOCkgJiAweGZmO1xuICAgICAgcmVzW2sgKyAzXSA9IG0gJiAweGZmO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNbayArIDNdID0gbSA+Pj4gMjQ7XG4gICAgICByZXNbayArIDJdID0gKG0gPj4+IDE2KSAmIDB4ZmY7XG4gICAgICByZXNbayArIDFdID0gKG0gPj4+IDgpICYgMHhmZjtcbiAgICAgIHJlc1trXSA9IG0gJiAweGZmO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzO1xufVxuZXhwb3J0cy5zcGxpdDMyID0gc3BsaXQzMjtcblxuZnVuY3Rpb24gcm90cjMyKHcsIGIpIHtcbiAgcmV0dXJuICh3ID4+PiBiKSB8ICh3IDw8ICgzMiAtIGIpKTtcbn1cbmV4cG9ydHMucm90cjMyID0gcm90cjMyO1xuXG5mdW5jdGlvbiByb3RsMzIodywgYikge1xuICByZXR1cm4gKHcgPDwgYikgfCAodyA+Pj4gKDMyIC0gYikpO1xufVxuZXhwb3J0cy5yb3RsMzIgPSByb3RsMzI7XG5cbmZ1bmN0aW9uIHN1bTMyKGEsIGIpIHtcbiAgcmV0dXJuIChhICsgYikgPj4+IDA7XG59XG5leHBvcnRzLnN1bTMyID0gc3VtMzI7XG5cbmZ1bmN0aW9uIHN1bTMyXzMoYSwgYiwgYykge1xuICByZXR1cm4gKGEgKyBiICsgYykgPj4+IDA7XG59XG5leHBvcnRzLnN1bTMyXzMgPSBzdW0zMl8zO1xuXG5mdW5jdGlvbiBzdW0zMl80KGEsIGIsIGMsIGQpIHtcbiAgcmV0dXJuIChhICsgYiArIGMgKyBkKSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtMzJfNCA9IHN1bTMyXzQ7XG5cbmZ1bmN0aW9uIHN1bTMyXzUoYSwgYiwgYywgZCwgZSkge1xuICByZXR1cm4gKGEgKyBiICsgYyArIGQgKyBlKSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtMzJfNSA9IHN1bTMyXzU7XG5cbmZ1bmN0aW9uIHN1bTY0KGJ1ZiwgcG9zLCBhaCwgYWwpIHtcbiAgdmFyIGJoID0gYnVmW3Bvc107XG4gIHZhciBibCA9IGJ1Zltwb3MgKyAxXTtcblxuICB2YXIgbG8gPSAoYWwgKyBibCkgPj4+IDA7XG4gIHZhciBoaSA9IChsbyA8IGFsID8gMSA6IDApICsgYWggKyBiaDtcbiAgYnVmW3Bvc10gPSBoaSA+Pj4gMDtcbiAgYnVmW3BvcyArIDFdID0gbG87XG59XG5leHBvcnRzLnN1bTY0ID0gc3VtNjQ7XG5cbmZ1bmN0aW9uIHN1bTY0X2hpKGFoLCBhbCwgYmgsIGJsKSB7XG4gIHZhciBsbyA9IChhbCArIGJsKSA+Pj4gMDtcbiAgdmFyIGhpID0gKGxvIDwgYWwgPyAxIDogMCkgKyBhaCArIGJoO1xuICByZXR1cm4gaGkgPj4+IDA7XG59XG5leHBvcnRzLnN1bTY0X2hpID0gc3VtNjRfaGk7XG5cbmZ1bmN0aW9uIHN1bTY0X2xvKGFoLCBhbCwgYmgsIGJsKSB7XG4gIHZhciBsbyA9IGFsICsgYmw7XG4gIHJldHVybiBsbyA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtNjRfbG8gPSBzdW02NF9sbztcblxuZnVuY3Rpb24gc3VtNjRfNF9oaShhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGxvID0gYWw7XG4gIGxvID0gKGxvICsgYmwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGFsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgY2wpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGNsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZGwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGRsID8gMSA6IDA7XG5cbiAgdmFyIGhpID0gYWggKyBiaCArIGNoICsgZGggKyBjYXJyeTtcbiAgcmV0dXJuIGhpID4+PiAwO1xufVxuZXhwb3J0cy5zdW02NF80X2hpID0gc3VtNjRfNF9oaTtcblxuZnVuY3Rpb24gc3VtNjRfNF9sbyhhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwpIHtcbiAgdmFyIGxvID0gYWwgKyBibCArIGNsICsgZGw7XG4gIHJldHVybiBsbyA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtNjRfNF9sbyA9IHN1bTY0XzRfbG87XG5cbmZ1bmN0aW9uIHN1bTY0XzVfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsLCBlaCwgZWwpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGxvID0gYWw7XG4gIGxvID0gKGxvICsgYmwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGFsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgY2wpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGNsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZGwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGRsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZWwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGVsID8gMSA6IDA7XG5cbiAgdmFyIGhpID0gYWggKyBiaCArIGNoICsgZGggKyBlaCArIGNhcnJ5O1xuICByZXR1cm4gaGkgPj4+IDA7XG59XG5leHBvcnRzLnN1bTY0XzVfaGkgPSBzdW02NF81X2hpO1xuXG5mdW5jdGlvbiBzdW02NF81X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCwgZWgsIGVsKSB7XG4gIHZhciBsbyA9IGFsICsgYmwgKyBjbCArIGRsICsgZWw7XG5cbiAgcmV0dXJuIGxvID4+PiAwO1xufVxuZXhwb3J0cy5zdW02NF81X2xvID0gc3VtNjRfNV9sbztcblxuZnVuY3Rpb24gcm90cjY0X2hpKGFoLCBhbCwgbnVtKSB7XG4gIHZhciByID0gKGFsIDw8ICgzMiAtIG51bSkpIHwgKGFoID4+PiBudW0pO1xuICByZXR1cm4gciA+Pj4gMDtcbn1cbmV4cG9ydHMucm90cjY0X2hpID0gcm90cjY0X2hpO1xuXG5mdW5jdGlvbiByb3RyNjRfbG8oYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWggPDwgKDMyIC0gbnVtKSkgfCAoYWwgPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufVxuZXhwb3J0cy5yb3RyNjRfbG8gPSByb3RyNjRfbG87XG5cbmZ1bmN0aW9uIHNocjY0X2hpKGFoLCBhbCwgbnVtKSB7XG4gIHJldHVybiBhaCA+Pj4gbnVtO1xufVxuZXhwb3J0cy5zaHI2NF9oaSA9IHNocjY0X2hpO1xuXG5mdW5jdGlvbiBzaHI2NF9sbyhhaCwgYWwsIG51bSkge1xuICB2YXIgciA9IChhaCA8PCAoMzIgLSBudW0pKSB8IChhbCA+Pj4gbnVtKTtcbiAgcmV0dXJuIHIgPj4+IDA7XG59XG5leHBvcnRzLnNocjY0X2xvID0gc2hyNjRfbG87XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBoYXNoID0gcmVxdWlyZSgnaGFzaC5qcycpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWNyeXB0by11dGlscycpO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxuZnVuY3Rpb24gSG1hY0RSQkcob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgSG1hY0RSQkcpKVxuICAgIHJldHVybiBuZXcgSG1hY0RSQkcob3B0aW9ucyk7XG4gIHRoaXMuaGFzaCA9IG9wdGlvbnMuaGFzaDtcbiAgdGhpcy5wcmVkUmVzaXN0ID0gISFvcHRpb25zLnByZWRSZXNpc3Q7XG5cbiAgdGhpcy5vdXRMZW4gPSB0aGlzLmhhc2gub3V0U2l6ZTtcbiAgdGhpcy5taW5FbnRyb3B5ID0gb3B0aW9ucy5taW5FbnRyb3B5IHx8IHRoaXMuaGFzaC5obWFjU3RyZW5ndGg7XG5cbiAgdGhpcy5fcmVzZWVkID0gbnVsbDtcbiAgdGhpcy5yZXNlZWRJbnRlcnZhbCA9IG51bGw7XG4gIHRoaXMuSyA9IG51bGw7XG4gIHRoaXMuViA9IG51bGw7XG5cbiAgdmFyIGVudHJvcHkgPSB1dGlscy50b0FycmF5KG9wdGlvbnMuZW50cm9weSwgb3B0aW9ucy5lbnRyb3B5RW5jIHx8ICdoZXgnKTtcbiAgdmFyIG5vbmNlID0gdXRpbHMudG9BcnJheShvcHRpb25zLm5vbmNlLCBvcHRpb25zLm5vbmNlRW5jIHx8ICdoZXgnKTtcbiAgdmFyIHBlcnMgPSB1dGlscy50b0FycmF5KG9wdGlvbnMucGVycywgb3B0aW9ucy5wZXJzRW5jIHx8ICdoZXgnKTtcbiAgYXNzZXJ0KGVudHJvcHkubGVuZ3RoID49ICh0aGlzLm1pbkVudHJvcHkgLyA4KSxcbiAgICAgICAgICdOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICcgKyB0aGlzLm1pbkVudHJvcHkgKyAnIGJpdHMnKTtcbiAgdGhpcy5faW5pdChlbnRyb3B5LCBub25jZSwgcGVycyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEhtYWNEUkJHO1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0KGVudHJvcHksIG5vbmNlLCBwZXJzKSB7XG4gIHZhciBzZWVkID0gZW50cm9weS5jb25jYXQobm9uY2UpLmNvbmNhdChwZXJzKTtcblxuICB0aGlzLksgPSBuZXcgQXJyYXkodGhpcy5vdXRMZW4gLyA4KTtcbiAgdGhpcy5WID0gbmV3IEFycmF5KHRoaXMub3V0TGVuIC8gOCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5WLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpcy5LW2ldID0gMHgwMDtcbiAgICB0aGlzLlZbaV0gPSAweDAxO1xuICB9XG5cbiAgdGhpcy5fdXBkYXRlKHNlZWQpO1xuICB0aGlzLl9yZXNlZWQgPSAxO1xuICB0aGlzLnJlc2VlZEludGVydmFsID0gMHgxMDAwMDAwMDAwMDAwOyAgLy8gMl40OFxufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLl9obWFjID0gZnVuY3Rpb24gaG1hYygpIHtcbiAgcmV0dXJuIG5ldyBoYXNoLmhtYWModGhpcy5oYXNoLCB0aGlzLkspO1xufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUoc2VlZCkge1xuICB2YXIga21hYyA9IHRoaXMuX2htYWMoKVxuICAgICAgICAgICAgICAgICAudXBkYXRlKHRoaXMuVilcbiAgICAgICAgICAgICAgICAgLnVwZGF0ZShbIDB4MDAgXSk7XG4gIGlmIChzZWVkKVxuICAgIGttYWMgPSBrbWFjLnVwZGF0ZShzZWVkKTtcbiAgdGhpcy5LID0ga21hYy5kaWdlc3QoKTtcbiAgdGhpcy5WID0gdGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpO1xuICBpZiAoIXNlZWQpXG4gICAgcmV0dXJuO1xuXG4gIHRoaXMuSyA9IHRoaXMuX2htYWMoKVxuICAgICAgICAgICAgICAgLnVwZGF0ZSh0aGlzLlYpXG4gICAgICAgICAgICAgICAudXBkYXRlKFsgMHgwMSBdKVxuICAgICAgICAgICAgICAgLnVwZGF0ZShzZWVkKVxuICAgICAgICAgICAgICAgLmRpZ2VzdCgpO1xuICB0aGlzLlYgPSB0aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUucmVzZWVkID0gZnVuY3Rpb24gcmVzZWVkKGVudHJvcHksIGVudHJvcHlFbmMsIGFkZCwgYWRkRW5jKSB7XG4gIC8vIE9wdGlvbmFsIGVudHJvcHkgZW5jXG4gIGlmICh0eXBlb2YgZW50cm9weUVuYyAhPT0gJ3N0cmluZycpIHtcbiAgICBhZGRFbmMgPSBhZGQ7XG4gICAgYWRkID0gZW50cm9weUVuYztcbiAgICBlbnRyb3B5RW5jID0gbnVsbDtcbiAgfVxuXG4gIGVudHJvcHkgPSB1dGlscy50b0FycmF5KGVudHJvcHksIGVudHJvcHlFbmMpO1xuICBhZGQgPSB1dGlscy50b0FycmF5KGFkZCwgYWRkRW5jKTtcblxuICBhc3NlcnQoZW50cm9weS5sZW5ndGggPj0gKHRoaXMubWluRW50cm9weSAvIDgpLFxuICAgICAgICAgJ05vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogJyArIHRoaXMubWluRW50cm9weSArICcgYml0cycpO1xuXG4gIHRoaXMuX3VwZGF0ZShlbnRyb3B5LmNvbmNhdChhZGQgfHwgW10pKTtcbiAgdGhpcy5fcmVzZWVkID0gMTtcbn07XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5nZW5lcmF0ZSA9IGZ1bmN0aW9uIGdlbmVyYXRlKGxlbiwgZW5jLCBhZGQsIGFkZEVuYykge1xuICBpZiAodGhpcy5fcmVzZWVkID4gdGhpcy5yZXNlZWRJbnRlcnZhbClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Jlc2VlZCBpcyByZXF1aXJlZCcpO1xuXG4gIC8vIE9wdGlvbmFsIGVuY29kaW5nXG4gIGlmICh0eXBlb2YgZW5jICE9PSAnc3RyaW5nJykge1xuICAgIGFkZEVuYyA9IGFkZDtcbiAgICBhZGQgPSBlbmM7XG4gICAgZW5jID0gbnVsbDtcbiAgfVxuXG4gIC8vIE9wdGlvbmFsIGFkZGl0aW9uYWwgZGF0YVxuICBpZiAoYWRkKSB7XG4gICAgYWRkID0gdXRpbHMudG9BcnJheShhZGQsIGFkZEVuYyB8fCAnaGV4Jyk7XG4gICAgdGhpcy5fdXBkYXRlKGFkZCk7XG4gIH1cblxuICB2YXIgdGVtcCA9IFtdO1xuICB3aGlsZSAodGVtcC5sZW5ndGggPCBsZW4pIHtcbiAgICB0aGlzLlYgPSB0aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7XG4gICAgdGVtcCA9IHRlbXAuY29uY2F0KHRoaXMuVik7XG4gIH1cblxuICB2YXIgcmVzID0gdGVtcC5zbGljZSgwLCBsZW4pO1xuICB0aGlzLl91cGRhdGUoYWRkKTtcbiAgdGhpcy5fcmVzZWVkKys7XG4gIHJldHVybiB1dGlscy5lbmNvZGUocmVzLCBlbmMpO1xufTtcbiIsIi8qISBpZWVlNzU0LiBCU0QtMy1DbGF1c2UgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovXG5leHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IChuQnl0ZXMgKiA4KSAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgbkJpdHMgPSAtN1xuICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwXG4gIHZhciBkID0gaXNMRSA/IC0xIDogMVxuICB2YXIgcyA9IGJ1ZmZlcltvZmZzZXQgKyBpXVxuXG4gIGkgKz0gZFxuXG4gIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIHMgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IGVMZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IChlICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIGUgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IG1MZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IChtICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSAobkJ5dGVzICogOCkgLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIHJ0ID0gKG1MZW4gPT09IDIzID8gTWF0aC5wb3coMiwgLTI0KSAtIE1hdGgucG93KDIsIC03NykgOiAwKVxuICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpXG4gIHZhciBkID0gaXNMRSA/IDEgOiAtMVxuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkgPyAxIDogMFxuXG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpXG5cbiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICBtID0gaXNOYU4odmFsdWUpID8gMSA6IDBcbiAgICBlID0gZU1heFxuICB9IGVsc2Uge1xuICAgIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbHVlKSAvIE1hdGguTE4yKVxuICAgIGlmICh2YWx1ZSAqIChjID0gTWF0aC5wb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLVxuICAgICAgYyAqPSAyXG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKVxuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrK1xuICAgICAgYyAvPSAyXG4gICAgfVxuXG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMFxuICAgICAgZSA9IGVNYXhcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKCh2YWx1ZSAqIGMpIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IGUgKyBlQmlhc1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSAwXG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge31cblxuICBlID0gKGUgPDwgbUxlbikgfCBtXG4gIGVMZW4gKz0gbUxlblxuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGUgJiAweGZmLCBpICs9IGQsIGUgLz0gMjU2LCBlTGVuIC09IDgpIHt9XG5cbiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4XG59XG4iLCJpZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgLy8gaW1wbGVtZW50YXRpb24gZnJvbSBzdGFuZGFyZCBub2RlLmpzICd1dGlsJyBtb2R1bGVcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBpZiAoc3VwZXJDdG9yKSB7XG4gICAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgICAgY3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ3Rvci5wcm90b3R5cGUsIHtcbiAgICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgICB2YWx1ZTogY3RvcixcbiAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH07XG59IGVsc2Uge1xuICAvLyBvbGQgc2Nob29sIHNoaW0gZm9yIG9sZCBicm93c2Vyc1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGlmIChzdXBlckN0b3IpIHtcbiAgICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fVxuICAgICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZVxuICAgICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKVxuICAgICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yXG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBoYXNUb1N0cmluZ1RhZyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIFN5bWJvbC50b1N0cmluZ1RhZyA9PT0gJ3N5bWJvbCc7XG52YXIgY2FsbEJvdW5kID0gcmVxdWlyZSgnY2FsbC1iaW5kL2NhbGxCb3VuZCcpO1xuXG52YXIgJHRvU3RyaW5nID0gY2FsbEJvdW5kKCdPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nJyk7XG5cbnZhciBpc1N0YW5kYXJkQXJndW1lbnRzID0gZnVuY3Rpb24gaXNBcmd1bWVudHModmFsdWUpIHtcblx0aWYgKGhhc1RvU3RyaW5nVGFnICYmIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnIGluIHZhbHVlKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdHJldHVybiAkdG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBBcmd1bWVudHNdJztcbn07XG5cbnZhciBpc0xlZ2FjeUFyZ3VtZW50cyA9IGZ1bmN0aW9uIGlzQXJndW1lbnRzKHZhbHVlKSB7XG5cdGlmIChpc1N0YW5kYXJkQXJndW1lbnRzKHZhbHVlKSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJlxuXHRcdHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcblx0XHR0eXBlb2YgdmFsdWUubGVuZ3RoID09PSAnbnVtYmVyJyAmJlxuXHRcdHZhbHVlLmxlbmd0aCA+PSAwICYmXG5cdFx0JHRvU3RyaW5nKHZhbHVlKSAhPT0gJ1tvYmplY3QgQXJyYXldJyAmJlxuXHRcdCR0b1N0cmluZyh2YWx1ZS5jYWxsZWUpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xufTtcblxudmFyIHN1cHBvcnRzU3RhbmRhcmRBcmd1bWVudHMgPSAoZnVuY3Rpb24gKCkge1xuXHRyZXR1cm4gaXNTdGFuZGFyZEFyZ3VtZW50cyhhcmd1bWVudHMpO1xufSgpKTtcblxuaXNTdGFuZGFyZEFyZ3VtZW50cy5pc0xlZ2FjeUFyZ3VtZW50cyA9IGlzTGVnYWN5QXJndW1lbnRzOyAvLyBmb3IgdGVzdHNcblxubW9kdWxlLmV4cG9ydHMgPSBzdXBwb3J0c1N0YW5kYXJkQXJndW1lbnRzID8gaXNTdGFuZGFyZEFyZ3VtZW50cyA6IGlzTGVnYWN5QXJndW1lbnRzO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdG9TdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIGZuVG9TdHIgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgaXNGblJlZ2V4ID0gL15cXHMqKD86ZnVuY3Rpb24pP1xcKi87XG52YXIgaGFzVG9TdHJpbmdUYWcgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBTeW1ib2wudG9TdHJpbmdUYWcgPT09ICdzeW1ib2wnO1xudmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xudmFyIGdldEdlbmVyYXRvckZ1bmMgPSBmdW5jdGlvbiAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY29uc2lzdGVudC1yZXR1cm5cblx0aWYgKCFoYXNUb1N0cmluZ1RhZykge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHR0cnkge1xuXHRcdHJldHVybiBGdW5jdGlvbigncmV0dXJuIGZ1bmN0aW9uKigpIHt9JykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHR9XG59O1xudmFyIEdlbmVyYXRvckZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzR2VuZXJhdG9yRnVuY3Rpb24oZm4pIHtcblx0aWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRpZiAoaXNGblJlZ2V4LnRlc3QoZm5Ub1N0ci5jYWxsKGZuKSkpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRpZiAoIWhhc1RvU3RyaW5nVGFnKSB7XG5cdFx0dmFyIHN0ciA9IHRvU3RyLmNhbGwoZm4pO1xuXHRcdHJldHVybiBzdHIgPT09ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSc7XG5cdH1cblx0aWYgKCFnZXRQcm90bykge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRpZiAodHlwZW9mIEdlbmVyYXRvckZ1bmN0aW9uID09PSAndW5kZWZpbmVkJykge1xuXHRcdHZhciBnZW5lcmF0b3JGdW5jID0gZ2V0R2VuZXJhdG9yRnVuYygpO1xuXHRcdEdlbmVyYXRvckZ1bmN0aW9uID0gZ2VuZXJhdG9yRnVuYyA/IGdldFByb3RvKGdlbmVyYXRvckZ1bmMpIDogZmFsc2U7XG5cdH1cblx0cmV0dXJuIGdldFByb3RvKGZuKSA9PT0gR2VuZXJhdG9yRnVuY3Rpb247XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbnVtYmVyLmlzbmFuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNOYU4odmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjYWxsQmluZCA9IHJlcXVpcmUoJ2NhbGwtYmluZCcpO1xudmFyIGRlZmluZSA9IHJlcXVpcmUoJ2RlZmluZS1wcm9wZXJ0aWVzJyk7XG5cbnZhciBpbXBsZW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vaW1wbGVtZW50YXRpb24nKTtcbnZhciBnZXRQb2x5ZmlsbCA9IHJlcXVpcmUoJy4vcG9seWZpbGwnKTtcbnZhciBzaGltID0gcmVxdWlyZSgnLi9zaGltJyk7XG5cbnZhciBwb2x5ZmlsbCA9IGNhbGxCaW5kKGdldFBvbHlmaWxsKCksIE51bWJlcik7XG5cbi8qIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1udW1iZXIuaXNuYW4gKi9cblxuZGVmaW5lKHBvbHlmaWxsLCB7XG5cdGdldFBvbHlmaWxsOiBnZXRQb2x5ZmlsbCxcblx0aW1wbGVtZW50YXRpb246IGltcGxlbWVudGF0aW9uLFxuXHRzaGltOiBzaGltXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBwb2x5ZmlsbDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGltcGxlbWVudGF0aW9uID0gcmVxdWlyZSgnLi9pbXBsZW1lbnRhdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdldFBvbHlmaWxsKCkge1xuXHRpZiAoTnVtYmVyLmlzTmFOICYmIE51bWJlci5pc05hTihOYU4pICYmICFOdW1iZXIuaXNOYU4oJ2EnKSkge1xuXHRcdHJldHVybiBOdW1iZXIuaXNOYU47XG5cdH1cblx0cmV0dXJuIGltcGxlbWVudGF0aW9uO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGRlZmluZSA9IHJlcXVpcmUoJ2RlZmluZS1wcm9wZXJ0aWVzJyk7XG52YXIgZ2V0UG9seWZpbGwgPSByZXF1aXJlKCcuL3BvbHlmaWxsJyk7XG5cbi8qIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1udW1iZXIuaXNuYW4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzaGltTnVtYmVySXNOYU4oKSB7XG5cdHZhciBwb2x5ZmlsbCA9IGdldFBvbHlmaWxsKCk7XG5cdGRlZmluZShOdW1iZXIsIHsgaXNOYU46IHBvbHlmaWxsIH0sIHtcblx0XHRpc05hTjogZnVuY3Rpb24gdGVzdElzTmFOKCkge1xuXHRcdFx0cmV0dXJuIE51bWJlci5pc05hTiAhPT0gcG9seWZpbGw7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIHBvbHlmaWxsO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGZvckVhY2ggPSByZXF1aXJlKCdmb3JlYWNoJyk7XG52YXIgYXZhaWxhYmxlVHlwZWRBcnJheXMgPSByZXF1aXJlKCdhdmFpbGFibGUtdHlwZWQtYXJyYXlzJyk7XG52YXIgY2FsbEJvdW5kID0gcmVxdWlyZSgnY2FsbC1iaW5kL2NhbGxCb3VuZCcpO1xuXG52YXIgJHRvU3RyaW5nID0gY2FsbEJvdW5kKCdPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nJyk7XG52YXIgaGFzU3ltYm9scyA9IHJlcXVpcmUoJ2hhcy1zeW1ib2xzJykoKTtcbnZhciBoYXNUb1N0cmluZ1RhZyA9IGhhc1N5bWJvbHMgJiYgdHlwZW9mIFN5bWJvbC50b1N0cmluZ1RhZyA9PT0gJ3N5bWJvbCc7XG5cbnZhciB0eXBlZEFycmF5cyA9IGF2YWlsYWJsZVR5cGVkQXJyYXlzKCk7XG5cbnZhciAkaW5kZXhPZiA9IGNhbGxCb3VuZCgnQXJyYXkucHJvdG90eXBlLmluZGV4T2YnLCB0cnVlKSB8fCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuXHRmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSArPSAxKSB7XG5cdFx0aWYgKGFycmF5W2ldID09PSB2YWx1ZSkge1xuXHRcdFx0cmV0dXJuIGk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiAtMTtcbn07XG52YXIgJHNsaWNlID0gY2FsbEJvdW5kKCdTdHJpbmcucHJvdG90eXBlLnNsaWNlJyk7XG52YXIgdG9TdHJUYWdzID0ge307XG52YXIgZ09QRCA9IHJlcXVpcmUoJ2VzLWFic3RyYWN0L2hlbHBlcnMvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7IC8vIHJlcXVpcmUoJ2dldHByb3RvdHlwZW9mJyk7XG5pZiAoaGFzVG9TdHJpbmdUYWcgJiYgZ09QRCAmJiBnZXRQcm90b3R5cGVPZikge1xuXHRmb3JFYWNoKHR5cGVkQXJyYXlzLCBmdW5jdGlvbiAodHlwZWRBcnJheSkge1xuXHRcdHZhciBhcnIgPSBuZXcgZ2xvYmFsW3R5cGVkQXJyYXldKCk7XG5cdFx0aWYgKCEoU3ltYm9sLnRvU3RyaW5nVGFnIGluIGFycikpIHtcblx0XHRcdHRocm93IG5ldyBFdmFsRXJyb3IoJ3RoaXMgZW5naW5lIGhhcyBzdXBwb3J0IGZvciBTeW1ib2wudG9TdHJpbmdUYWcsIGJ1dCAnICsgdHlwZWRBcnJheSArICcgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVydHkhIFBsZWFzZSByZXBvcnQgdGhpcy4nKTtcblx0XHR9XG5cdFx0dmFyIHByb3RvID0gZ2V0UHJvdG90eXBlT2YoYXJyKTtcblx0XHR2YXIgZGVzY3JpcHRvciA9IGdPUEQocHJvdG8sIFN5bWJvbC50b1N0cmluZ1RhZyk7XG5cdFx0aWYgKCFkZXNjcmlwdG9yKSB7XG5cdFx0XHR2YXIgc3VwZXJQcm90byA9IGdldFByb3RvdHlwZU9mKHByb3RvKTtcblx0XHRcdGRlc2NyaXB0b3IgPSBnT1BEKHN1cGVyUHJvdG8sIFN5bWJvbC50b1N0cmluZ1RhZyk7XG5cdFx0fVxuXHRcdHRvU3RyVGFnc1t0eXBlZEFycmF5XSA9IGRlc2NyaXB0b3IuZ2V0O1xuXHR9KTtcbn1cblxudmFyIHRyeVR5cGVkQXJyYXlzID0gZnVuY3Rpb24gdHJ5QWxsVHlwZWRBcnJheXModmFsdWUpIHtcblx0dmFyIGFueVRydWUgPSBmYWxzZTtcblx0Zm9yRWFjaCh0b1N0clRhZ3MsIGZ1bmN0aW9uIChnZXR0ZXIsIHR5cGVkQXJyYXkpIHtcblx0XHRpZiAoIWFueVRydWUpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGFueVRydWUgPSBnZXR0ZXIuY2FsbCh2YWx1ZSkgPT09IHR5cGVkQXJyYXk7XG5cdFx0XHR9IGNhdGNoIChlKSB7IC8qKi8gfVxuXHRcdH1cblx0fSk7XG5cdHJldHVybiBhbnlUcnVlO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc1R5cGVkQXJyYXkodmFsdWUpIHtcblx0aWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAoIWhhc1RvU3RyaW5nVGFnKSB7XG5cdFx0dmFyIHRhZyA9ICRzbGljZSgkdG9TdHJpbmcodmFsdWUpLCA4LCAtMSk7XG5cdFx0cmV0dXJuICRpbmRleE9mKHR5cGVkQXJyYXlzLCB0YWcpID4gLTE7XG5cdH1cblx0aWYgKCFnT1BEKSB7IHJldHVybiBmYWxzZTsgfVxuXHRyZXR1cm4gdHJ5VHlwZWRBcnJheXModmFsdWUpO1xufTtcbiIsIid1c2Ugc3RyaWN0J1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2hCYXNlID0gcmVxdWlyZSgnaGFzaC1iYXNlJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgQVJSQVkxNiA9IG5ldyBBcnJheSgxNilcblxuZnVuY3Rpb24gTUQ1ICgpIHtcbiAgSGFzaEJhc2UuY2FsbCh0aGlzLCA2NClcblxuICAvLyBzdGF0ZVxuICB0aGlzLl9hID0gMHg2NzQ1MjMwMVxuICB0aGlzLl9iID0gMHhlZmNkYWI4OVxuICB0aGlzLl9jID0gMHg5OGJhZGNmZVxuICB0aGlzLl9kID0gMHgxMDMyNTQ3NlxufVxuXG5pbmhlcml0cyhNRDUsIEhhc2hCYXNlKVxuXG5NRDUucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBNID0gQVJSQVkxNlxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIE1baV0gPSB0aGlzLl9ibG9jay5yZWFkSW50MzJMRShpICogNClcblxuICB2YXIgYSA9IHRoaXMuX2FcbiAgdmFyIGIgPSB0aGlzLl9iXG4gIHZhciBjID0gdGhpcy5fY1xuICB2YXIgZCA9IHRoaXMuX2RcblxuICBhID0gZm5GKGEsIGIsIGMsIGQsIE1bMF0sIDB4ZDc2YWE0NzgsIDcpXG4gIGQgPSBmbkYoZCwgYSwgYiwgYywgTVsxXSwgMHhlOGM3Yjc1NiwgMTIpXG4gIGMgPSBmbkYoYywgZCwgYSwgYiwgTVsyXSwgMHgyNDIwNzBkYiwgMTcpXG4gIGIgPSBmbkYoYiwgYywgZCwgYSwgTVszXSwgMHhjMWJkY2VlZSwgMjIpXG4gIGEgPSBmbkYoYSwgYiwgYywgZCwgTVs0XSwgMHhmNTdjMGZhZiwgNylcbiAgZCA9IGZuRihkLCBhLCBiLCBjLCBNWzVdLCAweDQ3ODdjNjJhLCAxMilcbiAgYyA9IGZuRihjLCBkLCBhLCBiLCBNWzZdLCAweGE4MzA0NjEzLCAxNylcbiAgYiA9IGZuRihiLCBjLCBkLCBhLCBNWzddLCAweGZkNDY5NTAxLCAyMilcbiAgYSA9IGZuRihhLCBiLCBjLCBkLCBNWzhdLCAweDY5ODA5OGQ4LCA3KVxuICBkID0gZm5GKGQsIGEsIGIsIGMsIE1bOV0sIDB4OGI0NGY3YWYsIDEyKVxuICBjID0gZm5GKGMsIGQsIGEsIGIsIE1bMTBdLCAweGZmZmY1YmIxLCAxNylcbiAgYiA9IGZuRihiLCBjLCBkLCBhLCBNWzExXSwgMHg4OTVjZDdiZSwgMjIpXG4gIGEgPSBmbkYoYSwgYiwgYywgZCwgTVsxMl0sIDB4NmI5MDExMjIsIDcpXG4gIGQgPSBmbkYoZCwgYSwgYiwgYywgTVsxM10sIDB4ZmQ5ODcxOTMsIDEyKVxuICBjID0gZm5GKGMsIGQsIGEsIGIsIE1bMTRdLCAweGE2Nzk0MzhlLCAxNylcbiAgYiA9IGZuRihiLCBjLCBkLCBhLCBNWzE1XSwgMHg0OWI0MDgyMSwgMjIpXG5cbiAgYSA9IGZuRyhhLCBiLCBjLCBkLCBNWzFdLCAweGY2MWUyNTYyLCA1KVxuICBkID0gZm5HKGQsIGEsIGIsIGMsIE1bNl0sIDB4YzA0MGIzNDAsIDkpXG4gIGMgPSBmbkcoYywgZCwgYSwgYiwgTVsxMV0sIDB4MjY1ZTVhNTEsIDE0KVxuICBiID0gZm5HKGIsIGMsIGQsIGEsIE1bMF0sIDB4ZTliNmM3YWEsIDIwKVxuICBhID0gZm5HKGEsIGIsIGMsIGQsIE1bNV0sIDB4ZDYyZjEwNWQsIDUpXG4gIGQgPSBmbkcoZCwgYSwgYiwgYywgTVsxMF0sIDB4MDI0NDE0NTMsIDkpXG4gIGMgPSBmbkcoYywgZCwgYSwgYiwgTVsxNV0sIDB4ZDhhMWU2ODEsIDE0KVxuICBiID0gZm5HKGIsIGMsIGQsIGEsIE1bNF0sIDB4ZTdkM2ZiYzgsIDIwKVxuICBhID0gZm5HKGEsIGIsIGMsIGQsIE1bOV0sIDB4MjFlMWNkZTYsIDUpXG4gIGQgPSBmbkcoZCwgYSwgYiwgYywgTVsxNF0sIDB4YzMzNzA3ZDYsIDkpXG4gIGMgPSBmbkcoYywgZCwgYSwgYiwgTVszXSwgMHhmNGQ1MGQ4NywgMTQpXG4gIGIgPSBmbkcoYiwgYywgZCwgYSwgTVs4XSwgMHg0NTVhMTRlZCwgMjApXG4gIGEgPSBmbkcoYSwgYiwgYywgZCwgTVsxM10sIDB4YTllM2U5MDUsIDUpXG4gIGQgPSBmbkcoZCwgYSwgYiwgYywgTVsyXSwgMHhmY2VmYTNmOCwgOSlcbiAgYyA9IGZuRyhjLCBkLCBhLCBiLCBNWzddLCAweDY3NmYwMmQ5LCAxNClcbiAgYiA9IGZuRyhiLCBjLCBkLCBhLCBNWzEyXSwgMHg4ZDJhNGM4YSwgMjApXG5cbiAgYSA9IGZuSChhLCBiLCBjLCBkLCBNWzVdLCAweGZmZmEzOTQyLCA0KVxuICBkID0gZm5IKGQsIGEsIGIsIGMsIE1bOF0sIDB4ODc3MWY2ODEsIDExKVxuICBjID0gZm5IKGMsIGQsIGEsIGIsIE1bMTFdLCAweDZkOWQ2MTIyLCAxNilcbiAgYiA9IGZuSChiLCBjLCBkLCBhLCBNWzE0XSwgMHhmZGU1MzgwYywgMjMpXG4gIGEgPSBmbkgoYSwgYiwgYywgZCwgTVsxXSwgMHhhNGJlZWE0NCwgNClcbiAgZCA9IGZuSChkLCBhLCBiLCBjLCBNWzRdLCAweDRiZGVjZmE5LCAxMSlcbiAgYyA9IGZuSChjLCBkLCBhLCBiLCBNWzddLCAweGY2YmI0YjYwLCAxNilcbiAgYiA9IGZuSChiLCBjLCBkLCBhLCBNWzEwXSwgMHhiZWJmYmM3MCwgMjMpXG4gIGEgPSBmbkgoYSwgYiwgYywgZCwgTVsxM10sIDB4Mjg5YjdlYzYsIDQpXG4gIGQgPSBmbkgoZCwgYSwgYiwgYywgTVswXSwgMHhlYWExMjdmYSwgMTEpXG4gIGMgPSBmbkgoYywgZCwgYSwgYiwgTVszXSwgMHhkNGVmMzA4NSwgMTYpXG4gIGIgPSBmbkgoYiwgYywgZCwgYSwgTVs2XSwgMHgwNDg4MWQwNSwgMjMpXG4gIGEgPSBmbkgoYSwgYiwgYywgZCwgTVs5XSwgMHhkOWQ0ZDAzOSwgNClcbiAgZCA9IGZuSChkLCBhLCBiLCBjLCBNWzEyXSwgMHhlNmRiOTllNSwgMTEpXG4gIGMgPSBmbkgoYywgZCwgYSwgYiwgTVsxNV0sIDB4MWZhMjdjZjgsIDE2KVxuICBiID0gZm5IKGIsIGMsIGQsIGEsIE1bMl0sIDB4YzRhYzU2NjUsIDIzKVxuXG4gIGEgPSBmbkkoYSwgYiwgYywgZCwgTVswXSwgMHhmNDI5MjI0NCwgNilcbiAgZCA9IGZuSShkLCBhLCBiLCBjLCBNWzddLCAweDQzMmFmZjk3LCAxMClcbiAgYyA9IGZuSShjLCBkLCBhLCBiLCBNWzE0XSwgMHhhYjk0MjNhNywgMTUpXG4gIGIgPSBmbkkoYiwgYywgZCwgYSwgTVs1XSwgMHhmYzkzYTAzOSwgMjEpXG4gIGEgPSBmbkkoYSwgYiwgYywgZCwgTVsxMl0sIDB4NjU1YjU5YzMsIDYpXG4gIGQgPSBmbkkoZCwgYSwgYiwgYywgTVszXSwgMHg4ZjBjY2M5MiwgMTApXG4gIGMgPSBmbkkoYywgZCwgYSwgYiwgTVsxMF0sIDB4ZmZlZmY0N2QsIDE1KVxuICBiID0gZm5JKGIsIGMsIGQsIGEsIE1bMV0sIDB4ODU4NDVkZDEsIDIxKVxuICBhID0gZm5JKGEsIGIsIGMsIGQsIE1bOF0sIDB4NmZhODdlNGYsIDYpXG4gIGQgPSBmbkkoZCwgYSwgYiwgYywgTVsxNV0sIDB4ZmUyY2U2ZTAsIDEwKVxuICBjID0gZm5JKGMsIGQsIGEsIGIsIE1bNl0sIDB4YTMwMTQzMTQsIDE1KVxuICBiID0gZm5JKGIsIGMsIGQsIGEsIE1bMTNdLCAweDRlMDgxMWExLCAyMSlcbiAgYSA9IGZuSShhLCBiLCBjLCBkLCBNWzRdLCAweGY3NTM3ZTgyLCA2KVxuICBkID0gZm5JKGQsIGEsIGIsIGMsIE1bMTFdLCAweGJkM2FmMjM1LCAxMClcbiAgYyA9IGZuSShjLCBkLCBhLCBiLCBNWzJdLCAweDJhZDdkMmJiLCAxNSlcbiAgYiA9IGZuSShiLCBjLCBkLCBhLCBNWzldLCAweGViODZkMzkxLCAyMSlcblxuICB0aGlzLl9hID0gKHRoaXMuX2EgKyBhKSB8IDBcbiAgdGhpcy5fYiA9ICh0aGlzLl9iICsgYikgfCAwXG4gIHRoaXMuX2MgPSAodGhpcy5fYyArIGMpIHwgMFxuICB0aGlzLl9kID0gKHRoaXMuX2QgKyBkKSB8IDBcbn1cblxuTUQ1LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBjcmVhdGUgcGFkZGluZyBhbmQgaGFuZGxlIGJsb2Nrc1xuICB0aGlzLl9ibG9ja1t0aGlzLl9ibG9ja09mZnNldCsrXSA9IDB4ODBcbiAgaWYgKHRoaXMuX2Jsb2NrT2Zmc2V0ID4gNTYpIHtcbiAgICB0aGlzLl9ibG9jay5maWxsKDAsIHRoaXMuX2Jsb2NrT2Zmc2V0LCA2NClcbiAgICB0aGlzLl91cGRhdGUoKVxuICAgIHRoaXMuX2Jsb2NrT2Zmc2V0ID0gMFxuICB9XG5cbiAgdGhpcy5fYmxvY2suZmlsbCgwLCB0aGlzLl9ibG9ja09mZnNldCwgNTYpXG4gIHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzBdLCA1NilcbiAgdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMV0sIDYwKVxuICB0aGlzLl91cGRhdGUoKVxuXG4gIC8vIHByb2R1Y2UgcmVzdWx0XG4gIHZhciBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMTYpXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fYSwgMClcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9iLCA0KVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2MsIDgpXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fZCwgMTIpXG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gcm90bCAoeCwgbikge1xuICByZXR1cm4gKHggPDwgbikgfCAoeCA+Pj4gKDMyIC0gbikpXG59XG5cbmZ1bmN0aW9uIGZuRiAoYSwgYiwgYywgZCwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoKGIgJiBjKSB8ICgofmIpICYgZCkpICsgbSArIGspIHwgMCwgcykgKyBiKSB8IDBcbn1cblxuZnVuY3Rpb24gZm5HIChhLCBiLCBjLCBkLCBtLCBrLCBzKSB7XG4gIHJldHVybiAocm90bCgoYSArICgoYiAmIGQpIHwgKGMgJiAofmQpKSkgKyBtICsgaykgfCAwLCBzKSArIGIpIHwgMFxufVxuXG5mdW5jdGlvbiBmbkggKGEsIGIsIGMsIGQsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKGIgXiBjIF4gZCkgKyBtICsgaykgfCAwLCBzKSArIGIpIHwgMFxufVxuXG5mdW5jdGlvbiBmbkkgKGEsIGIsIGMsIGQsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKChjIF4gKGIgfCAofmQpKSkpICsgbSArIGspIHwgMCwgcykgKyBiKSB8IDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBNRDVcbiIsInZhciBibiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgYnJvcmFuZCA9IHJlcXVpcmUoJ2Jyb3JhbmQnKTtcblxuZnVuY3Rpb24gTWlsbGVyUmFiaW4ocmFuZCkge1xuICB0aGlzLnJhbmQgPSByYW5kIHx8IG5ldyBicm9yYW5kLlJhbmQoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gTWlsbGVyUmFiaW47XG5cbk1pbGxlclJhYmluLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShyYW5kKSB7XG4gIHJldHVybiBuZXcgTWlsbGVyUmFiaW4ocmFuZCk7XG59O1xuXG5NaWxsZXJSYWJpbi5wcm90b3R5cGUuX3JhbmRiZWxvdyA9IGZ1bmN0aW9uIF9yYW5kYmVsb3cobikge1xuICB2YXIgbGVuID0gbi5iaXRMZW5ndGgoKTtcbiAgdmFyIG1pbl9ieXRlcyA9IE1hdGguY2VpbChsZW4gLyA4KTtcblxuICAvLyBHZW5lcmFnZSByYW5kb20gYnl0ZXMgdW50aWwgYSBudW1iZXIgbGVzcyB0aGFuIG4gaXMgZm91bmQuXG4gIC8vIFRoaXMgZW5zdXJlcyB0aGF0IDAuLm4tMSBoYXZlIGFuIGVxdWFsIHByb2JhYmlsaXR5IG9mIGJlaW5nIHNlbGVjdGVkLlxuICBkb1xuICAgIHZhciBhID0gbmV3IGJuKHRoaXMucmFuZC5nZW5lcmF0ZShtaW5fYnl0ZXMpKTtcbiAgd2hpbGUgKGEuY21wKG4pID49IDApO1xuXG4gIHJldHVybiBhO1xufTtcblxuTWlsbGVyUmFiaW4ucHJvdG90eXBlLl9yYW5kcmFuZ2UgPSBmdW5jdGlvbiBfcmFuZHJhbmdlKHN0YXJ0LCBzdG9wKSB7XG4gIC8vIEdlbmVyYXRlIGEgcmFuZG9tIG51bWJlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gc3RhcnQgYW5kIGxlc3MgdGhhbiBzdG9wLlxuICB2YXIgc2l6ZSA9IHN0b3Auc3ViKHN0YXJ0KTtcbiAgcmV0dXJuIHN0YXJ0LmFkZCh0aGlzLl9yYW5kYmVsb3coc2l6ZSkpO1xufTtcblxuTWlsbGVyUmFiaW4ucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbiB0ZXN0KG4sIGssIGNiKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgcmVkID0gYm4ubW9udChuKTtcbiAgdmFyIHJvbmUgPSBuZXcgYm4oMSkudG9SZWQocmVkKTtcblxuICBpZiAoIWspXG4gICAgayA9IE1hdGgubWF4KDEsIChsZW4gLyA0OCkgfCAwKTtcblxuICAvLyBGaW5kIGQgYW5kIHMsIChuIC0gMSkgPSAoMiBeIHMpICogZDtcbiAgdmFyIG4xID0gbi5zdWJuKDEpO1xuICBmb3IgKHZhciBzID0gMDsgIW4xLnRlc3RuKHMpOyBzKyspIHt9XG4gIHZhciBkID0gbi5zaHJuKHMpO1xuXG4gIHZhciBybjEgPSBuMS50b1JlZChyZWQpO1xuXG4gIHZhciBwcmltZSA9IHRydWU7XG4gIGZvciAoOyBrID4gMDsgay0tKSB7XG4gICAgdmFyIGEgPSB0aGlzLl9yYW5kcmFuZ2UobmV3IGJuKDIpLCBuMSk7XG4gICAgaWYgKGNiKVxuICAgICAgY2IoYSk7XG5cbiAgICB2YXIgeCA9IGEudG9SZWQocmVkKS5yZWRQb3coZCk7XG4gICAgaWYgKHguY21wKHJvbmUpID09PSAwIHx8IHguY21wKHJuMSkgPT09IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgczsgaSsrKSB7XG4gICAgICB4ID0geC5yZWRTcXIoKTtcblxuICAgICAgaWYgKHguY21wKHJvbmUpID09PSAwKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoeC5jbXAocm4xKSA9PT0gMClcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IHMpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gcHJpbWU7XG59O1xuXG5NaWxsZXJSYWJpbi5wcm90b3R5cGUuZ2V0RGl2aXNvciA9IGZ1bmN0aW9uIGdldERpdmlzb3Iobiwgaykge1xuICB2YXIgbGVuID0gbi5iaXRMZW5ndGgoKTtcbiAgdmFyIHJlZCA9IGJuLm1vbnQobik7XG4gIHZhciByb25lID0gbmV3IGJuKDEpLnRvUmVkKHJlZCk7XG5cbiAgaWYgKCFrKVxuICAgIGsgPSBNYXRoLm1heCgxLCAobGVuIC8gNDgpIHwgMCk7XG5cbiAgLy8gRmluZCBkIGFuZCBzLCAobiAtIDEpID0gKDIgXiBzKSAqIGQ7XG4gIHZhciBuMSA9IG4uc3VibigxKTtcbiAgZm9yICh2YXIgcyA9IDA7ICFuMS50ZXN0bihzKTsgcysrKSB7fVxuICB2YXIgZCA9IG4uc2hybihzKTtcblxuICB2YXIgcm4xID0gbjEudG9SZWQocmVkKTtcblxuICBmb3IgKDsgayA+IDA7IGstLSkge1xuICAgIHZhciBhID0gdGhpcy5fcmFuZHJhbmdlKG5ldyBibigyKSwgbjEpO1xuXG4gICAgdmFyIGcgPSBuLmdjZChhKTtcbiAgICBpZiAoZy5jbXBuKDEpICE9PSAwKVxuICAgICAgcmV0dXJuIGc7XG5cbiAgICB2YXIgeCA9IGEudG9SZWQocmVkKS5yZWRQb3coZCk7XG4gICAgaWYgKHguY21wKHJvbmUpID09PSAwIHx8IHguY21wKHJuMSkgPT09IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgczsgaSsrKSB7XG4gICAgICB4ID0geC5yZWRTcXIoKTtcblxuICAgICAgaWYgKHguY21wKHJvbmUpID09PSAwKVxuICAgICAgICByZXR1cm4geC5mcm9tUmVkKCkuc3VibigxKS5nY2Qobik7XG4gICAgICBpZiAoeC5jbXAocm4xKSA9PT0gMClcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IHMpIHtcbiAgICAgIHggPSB4LnJlZFNxcigpO1xuICAgICAgcmV0dXJuIHguZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKG4pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG4iLCIoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gVXRpbHNcbiAgZnVuY3Rpb24gYXNzZXJ0ICh2YWwsIG1zZykge1xuICAgIGlmICghdmFsKSB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG4gIH1cblxuICAvLyBDb3VsZCB1c2UgYGluaGVyaXRzYCBtb2R1bGUsIGJ1dCBkb24ndCB3YW50IHRvIG1vdmUgZnJvbSBzaW5nbGUgZmlsZVxuICAvLyBhcmNoaXRlY3R1cmUgeWV0LlxuICBmdW5jdGlvbiBpbmhlcml0cyAoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3I7XG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge307XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZTtcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpO1xuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvcjtcbiAgfVxuXG4gIC8vIEJOXG5cbiAgZnVuY3Rpb24gQk4gKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKEJOLmlzQk4obnVtYmVyKSkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB0aGlzLndvcmRzID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICAvLyBSZWR1Y3Rpb24gY29udGV4dFxuICAgIHRoaXMucmVkID0gbnVsbDtcblxuICAgIGlmIChudW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGlmIChiYXNlID09PSAnbGUnIHx8IGJhc2UgPT09ICdiZScpIHtcbiAgICAgICAgZW5kaWFuID0gYmFzZTtcbiAgICAgICAgYmFzZSA9IDEwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbml0KG51bWJlciB8fCAwLCBiYXNlIHx8IDEwLCBlbmRpYW4gfHwgJ2JlJyk7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gQk47XG4gIH0gZWxzZSB7XG4gICAgZXhwb3J0cy5CTiA9IEJOO1xuICB9XG5cbiAgQk4uQk4gPSBCTjtcbiAgQk4ud29yZFNpemUgPSAyNjtcblxuICB2YXIgQnVmZmVyO1xuICB0cnkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIEJ1ZmZlciA9IHdpbmRvdy5CdWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPCBudW1iZXIubGVuZ3RoKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gMTYpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VIZXgobnVtYmVyLCBzdGFydCwgZW5kaWFuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3BhcnNlQmFzZShudW1iZXIsIGJhc2UsIHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXROdW1iZXIgPSBmdW5jdGlvbiBfaW5pdE51bWJlciAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICBudW1iZXIgPSAtbnVtYmVyO1xuICAgIH1cbiAgICBpZiAobnVtYmVyIDwgMHg0MDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyBudW1iZXIgJiAweDNmZmZmZmYgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKG51bWJlciA8IDB4MTAwMDAwMDAwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmZcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChudW1iZXIgPCAweDIwMDAwMDAwMDAwMDAwKTsgLy8gMiBeIDUzICh1bnNhZmUpXG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmLFxuICAgICAgICAxXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAzO1xuICAgIH1cblxuICAgIGlmIChlbmRpYW4gIT09ICdsZScpIHJldHVybjtcblxuICAgIC8vIFJldmVyc2UgdGhlIGJ5dGVzXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdEFycmF5ID0gZnVuY3Rpb24gX2luaXRBcnJheSAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICAvLyBQZXJoYXBzIGEgVWludDhBcnJheVxuICAgIGFzc2VydCh0eXBlb2YgbnVtYmVyLmxlbmd0aCA9PT0gJ251bWJlcicpO1xuICAgIGlmIChudW1iZXIubGVuZ3RoIDw9IDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKG51bWJlci5sZW5ndGggLyAzKTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIHZhciBqLCB3O1xuICAgIHZhciBvZmYgPSAwO1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxLCBqID0gMDsgaSA+PSAwOyBpIC09IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSAtIDFdIDw8IDgpIHwgKG51bWJlcltpIC0gMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgKyAxXSA8PCA4KSB8IChudW1iZXJbaSArIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4NEJpdHMgKHN0cmluZywgaW5kZXgpIHtcbiAgICB2YXIgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAvLyAnQScgLSAnRidcbiAgICBpZiAoYyA+PSA2NSAmJiBjIDw9IDcwKSB7XG4gICAgICByZXR1cm4gYyAtIDU1O1xuICAgIC8vICdhJyAtICdmJ1xuICAgIH0gZWxzZSBpZiAoYyA+PSA5NyAmJiBjIDw9IDEwMikge1xuICAgICAgcmV0dXJuIGMgLSA4NztcbiAgICAvLyAnMCcgLSAnOSdcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChjIC0gNDgpICYgMHhmO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4Qnl0ZSAoc3RyaW5nLCBsb3dlckJvdW5kLCBpbmRleCkge1xuICAgIHZhciByID0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4KTtcbiAgICBpZiAoaW5kZXggLSAxID49IGxvd2VyQm91bmQpIHtcbiAgICAgIHIgfD0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4IC0gMSkgPDwgNDtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlSGV4ID0gZnVuY3Rpb24gX3BhcnNlSGV4IChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICAvLyAyNC1iaXRzIGNodW5rc1xuICAgIHZhciBvZmYgPSAwO1xuICAgIHZhciBqID0gMDtcblxuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyBpIC09IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFyc2VMZW5ndGggPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgICBmb3IgKGkgPSBwYXJzZUxlbmd0aCAlIDIgPT09IDAgPyBzdGFydCArIDEgOiBzdGFydDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlQmFzZSAoc3RyLCBzdGFydCwgZW5kLCBtdWwpIHtcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKHN0ci5sZW5ndGgsIGVuZCk7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBjID0gc3RyLmNoYXJDb2RlQXQoaSkgLSA0ODtcblxuICAgICAgciAqPSBtdWw7XG5cbiAgICAgIC8vICdhJ1xuICAgICAgaWYgKGMgPj0gNDkpIHtcbiAgICAgICAgciArPSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3KSB7XG4gICAgICAgIHIgKz0gYyAtIDE3ICsgMHhhO1xuXG4gICAgICAvLyAnMCcgLSAnOSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIgKz0gYztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlQmFzZSA9IGZ1bmN0aW9uIF9wYXJzZUJhc2UgKG51bWJlciwgYmFzZSwgc3RhcnQpIHtcbiAgICAvLyBJbml0aWFsaXplIGFzIHplcm9cbiAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuXG4gICAgLy8gRmluZCBsZW5ndGggb2YgbGltYiBpbiBiYXNlXG4gICAgZm9yICh2YXIgbGltYkxlbiA9IDAsIGxpbWJQb3cgPSAxOyBsaW1iUG93IDw9IDB4M2ZmZmZmZjsgbGltYlBvdyAqPSBiYXNlKSB7XG4gICAgICBsaW1iTGVuKys7XG4gICAgfVxuICAgIGxpbWJMZW4tLTtcbiAgICBsaW1iUG93ID0gKGxpbWJQb3cgLyBiYXNlKSB8IDA7XG5cbiAgICB2YXIgdG90YWwgPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgdmFyIG1vZCA9IHRvdGFsICUgbGltYkxlbjtcbiAgICB2YXIgZW5kID0gTWF0aC5taW4odG90YWwsIHRvdGFsIC0gbW9kKSArIHN0YXJ0O1xuXG4gICAgdmFyIHdvcmQgPSAwO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSBsaW1iTGVuKSB7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgaSArIGxpbWJMZW4sIGJhc2UpO1xuXG4gICAgICB0aGlzLmltdWxuKGxpbWJQb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2QgIT09IDApIHtcbiAgICAgIHZhciBwb3cgPSAxO1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIG51bWJlci5sZW5ndGgsIGJhc2UpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbW9kOyBpKyspIHtcbiAgICAgICAgcG93ICo9IGJhc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW11bG4ocG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5IChkZXN0KSB7XG4gICAgZGVzdC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXN0LndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICB9XG4gICAgZGVzdC5sZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICBkZXN0Lm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICBkZXN0LnJlZCA9IHRoaXMucmVkO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICB2YXIgciA9IG5ldyBCTihudWxsKTtcbiAgICB0aGlzLmNvcHkocik7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9leHBhbmQgPSBmdW5jdGlvbiBfZXhwYW5kIChzaXplKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgc2l6ZSkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFJlbW92ZSBsZWFkaW5nIGAwYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3RyaXAgPSBmdW5jdGlvbiBzdHJpcCAoKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoID4gMSAmJiB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fbm9ybVNpZ24gPSBmdW5jdGlvbiBfbm9ybVNpZ24gKCkge1xuICAgIC8vIC0wID0gMFxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICByZXR1cm4gKHRoaXMucmVkID8gJzxCTi1SOiAnIDogJzxCTjogJykgKyB0aGlzLnRvU3RyaW5nKDE2KSArICc+JztcbiAgfTtcblxuICAvKlxuXG4gIHZhciB6ZXJvcyA9IFtdO1xuICB2YXIgZ3JvdXBTaXplcyA9IFtdO1xuICB2YXIgZ3JvdXBCYXNlcyA9IFtdO1xuXG4gIHZhciBzID0gJyc7XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBCTi53b3JkU2l6ZSkge1xuICAgIHplcm9zW2ldID0gcztcbiAgICBzICs9ICcwJztcbiAgfVxuICBncm91cFNpemVzWzBdID0gMDtcbiAgZ3JvdXBTaXplc1sxXSA9IDA7XG4gIGdyb3VwQmFzZXNbMF0gPSAwO1xuICBncm91cEJhc2VzWzFdID0gMDtcbiAgdmFyIGJhc2UgPSAyIC0gMTtcbiAgd2hpbGUgKCsrYmFzZSA8IDM2ICsgMSkge1xuICAgIHZhciBncm91cFNpemUgPSAwO1xuICAgIHZhciBncm91cEJhc2UgPSAxO1xuICAgIHdoaWxlIChncm91cEJhc2UgPCAoMSA8PCBCTi53b3JkU2l6ZSkgLyBiYXNlKSB7XG4gICAgICBncm91cEJhc2UgKj0gYmFzZTtcbiAgICAgIGdyb3VwU2l6ZSArPSAxO1xuICAgIH1cbiAgICBncm91cFNpemVzW2Jhc2VdID0gZ3JvdXBTaXplO1xuICAgIGdyb3VwQmFzZXNbYmFzZV0gPSBncm91cEJhc2U7XG4gIH1cblxuICAqL1xuXG4gIHZhciB6ZXJvcyA9IFtcbiAgICAnJyxcbiAgICAnMCcsXG4gICAgJzAwJyxcbiAgICAnMDAwJyxcbiAgICAnMDAwMCcsXG4gICAgJzAwMDAwJyxcbiAgICAnMDAwMDAwJyxcbiAgICAnMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCdcbiAgXTtcblxuICB2YXIgZ3JvdXBTaXplcyA9IFtcbiAgICAwLCAwLFxuICAgIDI1LCAxNiwgMTIsIDExLCAxMCwgOSwgOCxcbiAgICA4LCA3LCA3LCA3LCA3LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1XG4gIF07XG5cbiAgdmFyIGdyb3VwQmFzZXMgPSBbXG4gICAgMCwgMCxcbiAgICAzMzU1NDQzMiwgNDMwNDY3MjEsIDE2Nzc3MjE2LCA0ODgyODEyNSwgNjA0NjYxNzYsIDQwMzUzNjA3LCAxNjc3NzIxNixcbiAgICA0MzA0NjcyMSwgMTAwMDAwMDAsIDE5NDg3MTcxLCAzNTgzMTgwOCwgNjI3NDg1MTcsIDc1Mjk1MzYsIDExMzkwNjI1LFxuICAgIDE2Nzc3MjE2LCAyNDEzNzU2OSwgMzQwMTIyMjQsIDQ3MDQ1ODgxLCA2NDAwMDAwMCwgNDA4NDEwMSwgNTE1MzYzMixcbiAgICA2NDM2MzQzLCA3OTYyNjI0LCA5NzY1NjI1LCAxMTg4MTM3NiwgMTQzNDg5MDcsIDE3MjEwMzY4LCAyMDUxMTE0OSxcbiAgICAyNDMwMDAwMCwgMjg2MjkxNTEsIDMzNTU0NDMyLCAzOTEzNTM5MywgNDU0MzU0MjQsIDUyNTIxODc1LCA2MDQ2NjE3NlxuICBdO1xuXG4gIEJOLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nIChiYXNlLCBwYWRkaW5nKSB7XG4gICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgcGFkZGluZyA9IHBhZGRpbmcgfCAwIHx8IDE7XG5cbiAgICB2YXIgb3V0O1xuICAgIGlmIChiYXNlID09PSAxNiB8fCBiYXNlID09PSAnaGV4Jykge1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgb2ZmID0gMDtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldO1xuICAgICAgICB2YXIgd29yZCA9ICgoKHcgPDwgb2ZmKSB8IGNhcnJ5KSAmIDB4ZmZmZmZmKS50b1N0cmluZygxNik7XG4gICAgICAgIGNhcnJ5ID0gKHcgPj4+ICgyNCAtIG9mZikpICYgMHhmZmZmZmY7XG4gICAgICAgIGlmIChjYXJyeSAhPT0gMCB8fCBpICE9PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1s2IC0gd29yZC5sZW5ndGhdICsgd29yZCArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSB3b3JkICsgb3V0O1xuICAgICAgICB9XG4gICAgICAgIG9mZiArPSAyO1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICAgIG91dCA9IGNhcnJ5LnRvU3RyaW5nKDE2KSArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KSB7XG4gICAgICAvLyB2YXIgZ3JvdXBTaXplID0gTWF0aC5mbG9vcihCTi53b3JkU2l6ZSAqIE1hdGguTE4yIC8gTWF0aC5sb2coYmFzZSkpO1xuICAgICAgdmFyIGdyb3VwU2l6ZSA9IGdyb3VwU2l6ZXNbYmFzZV07XG4gICAgICAvLyB2YXIgZ3JvdXBCYXNlID0gTWF0aC5wb3coYmFzZSwgZ3JvdXBTaXplKTtcbiAgICAgIHZhciBncm91cEJhc2UgPSBncm91cEJhc2VzW2Jhc2VdO1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgYyA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGMubmVnYXRpdmUgPSAwO1xuICAgICAgd2hpbGUgKCFjLmlzWmVybygpKSB7XG4gICAgICAgIHZhciByID0gYy5tb2RuKGdyb3VwQmFzZSkudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIGMgPSBjLmlkaXZuKGdyb3VwQmFzZSk7XG5cbiAgICAgICAgaWYgKCFjLmlzWmVybygpKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbZ3JvdXBTaXplIC0gci5sZW5ndGhdICsgciArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSByICsgb3V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBhc3NlcnQoZmFsc2UsICdCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Jyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvTnVtYmVyID0gZnVuY3Rpb24gdG9OdW1iZXIgKCkge1xuICAgIHZhciByZXQgPSB0aGlzLndvcmRzWzBdO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0ICs9IHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA9PT0gMyAmJiB0aGlzLndvcmRzWzJdID09PSAweDAxKSB7XG4gICAgICAvLyBOT1RFOiBhdCB0aGlzIHN0YWdlIGl0IGlzIGtub3duIHRoYXQgdGhlIHRvcCBiaXQgaXMgc2V0XG4gICAgICByZXQgKz0gMHgxMDAwMDAwMDAwMDAwMCArICh0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gMikge1xuICAgICAgYXNzZXJ0KGZhbHNlLCAnTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzJyk7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgPyAtcmV0IDogcmV0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKDE2KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9CdWZmZXIgPSBmdW5jdGlvbiB0b0J1ZmZlciAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpO1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEJ1ZmZlciwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gdG9BcnJheSAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5TGlrZSA9IGZ1bmN0aW9uIHRvQXJyYXlMaWtlIChBcnJheVR5cGUsIGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgdmFyIGJ5dGVMZW5ndGggPSB0aGlzLmJ5dGVMZW5ndGgoKTtcbiAgICB2YXIgcmVxTGVuZ3RoID0gbGVuZ3RoIHx8IE1hdGgubWF4KDEsIGJ5dGVMZW5ndGgpO1xuICAgIGFzc2VydChieXRlTGVuZ3RoIDw9IHJlcUxlbmd0aCwgJ2J5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgnKTtcbiAgICBhc3NlcnQocmVxTGVuZ3RoID4gMCwgJ1JlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCcpO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuICAgIHZhciBsaXR0bGVFbmRpYW4gPSBlbmRpYW4gPT09ICdsZSc7XG4gICAgdmFyIHJlcyA9IG5ldyBBcnJheVR5cGUocmVxTGVuZ3RoKTtcblxuICAgIHZhciBiLCBpO1xuICAgIHZhciBxID0gdGhpcy5jbG9uZSgpO1xuICAgIGlmICghbGl0dGxlRW5kaWFuKSB7XG4gICAgICAvLyBBc3N1bWUgYmlnLWVuZGlhblxuICAgICAgZm9yIChpID0gMDsgaSA8IHJlcUxlbmd0aCAtIGJ5dGVMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbcmVxTGVuZ3RoIC0gaSAtIDFdID0gYjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW2ldID0gYjtcbiAgICAgIH1cblxuICAgICAgZm9yICg7IGkgPCByZXFMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgaWYgKE1hdGguY2x6MzIpIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHJldHVybiAzMiAtIE1hdGguY2x6MzIodyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHZhciB0ID0gdztcbiAgICAgIHZhciByID0gMDtcbiAgICAgIGlmICh0ID49IDB4MTAwMCkge1xuICAgICAgICByICs9IDEzO1xuICAgICAgICB0ID4+Pj0gMTM7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDQwKSB7XG4gICAgICAgIHIgKz0gNztcbiAgICAgICAgdCA+Pj49IDc7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDgpIHtcbiAgICAgICAgciArPSA0O1xuICAgICAgICB0ID4+Pj0gNDtcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4MDIpIHtcbiAgICAgICAgciArPSAyO1xuICAgICAgICB0ID4+Pj0gMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByICsgdDtcbiAgICB9O1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl96ZXJvQml0cyA9IGZ1bmN0aW9uIF96ZXJvQml0cyAodykge1xuICAgIC8vIFNob3J0LWN1dFxuICAgIGlmICh3ID09PSAwKSByZXR1cm4gMjY7XG5cbiAgICB2YXIgdCA9IHc7XG4gICAgdmFyIHIgPSAwO1xuICAgIGlmICgodCAmIDB4MWZmZikgPT09IDApIHtcbiAgICAgIHIgKz0gMTM7XG4gICAgICB0ID4+Pj0gMTM7XG4gICAgfVxuICAgIGlmICgodCAmIDB4N2YpID09PSAwKSB7XG4gICAgICByICs9IDc7XG4gICAgICB0ID4+Pj0gNztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHhmKSA9PT0gMCkge1xuICAgICAgciArPSA0O1xuICAgICAgdCA+Pj49IDQ7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MykgPT09IDApIHtcbiAgICAgIHIgKz0gMjtcbiAgICAgIHQgPj4+PSAyO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDEpID09PSAwKSB7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIC8vIFJldHVybiBudW1iZXIgb2YgdXNlZCBiaXRzIGluIGEgQk5cbiAgQk4ucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uIGJpdExlbmd0aCAoKSB7XG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV07XG4gICAgdmFyIGhpID0gdGhpcy5fY291bnRCaXRzKHcpO1xuICAgIHJldHVybiAodGhpcy5sZW5ndGggLSAxKSAqIDI2ICsgaGk7XG4gIH07XG5cbiAgZnVuY3Rpb24gdG9CaXRBcnJheSAobnVtKSB7XG4gICAgdmFyIHcgPSBuZXcgQXJyYXkobnVtLmJpdExlbmd0aCgpKTtcblxuICAgIGZvciAodmFyIGJpdCA9IDA7IGJpdCA8IHcubGVuZ3RoOyBiaXQrKykge1xuICAgICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgICAgd1tiaXRdID0gKG51bS53b3Jkc1tvZmZdICYgKDEgPDwgd2JpdCkpID4+PiB3Yml0O1xuICAgIH1cblxuICAgIHJldHVybiB3O1xuICB9XG5cbiAgLy8gTnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0c1xuICBCTi5wcm90b3R5cGUuemVyb0JpdHMgPSBmdW5jdGlvbiB6ZXJvQml0cyAoKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiAwO1xuXG4gICAgdmFyIHIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGIgPSB0aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2ldKTtcbiAgICAgIHIgKz0gYjtcbiAgICAgIGlmIChiICE9PSAyNikgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ieXRlTGVuZ3RoID0gZnVuY3Rpb24gYnl0ZUxlbmd0aCAoKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpIC8gOCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvVHdvcyA9IGZ1bmN0aW9uIHRvVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWJzKCkuaW5vdG4od2lkdGgpLmlhZGRuKDEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tVHdvcyA9IGZ1bmN0aW9uIGZyb21Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLnRlc3RuKHdpZHRoIC0gMSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdG4od2lkdGgpLmlhZGRuKDEpLmluZWcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiBpc05lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmUgIT09IDA7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5lZyA9IGZ1bmN0aW9uIGluZWcgKCkge1xuICAgIGlmICghdGhpcy5pc1plcm8oKSkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdW9yID0gZnVuY3Rpb24gaXVvciAobnVtKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldIHwgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlvciA9IGZ1bmN0aW9uIGlvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVvcihudW0pO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pb3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVvciA9IGZ1bmN0aW9uIHVvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdWFuZCA9IGZ1bmN0aW9uIGl1YW5kIChudW0pIHtcbiAgICAvLyBiID0gbWluLWxlbmd0aChudW0sIHRoaXMpXG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSAmIG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGIubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFuZCA9IGZ1bmN0aW9uIGlhbmQgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1YW5kKG51bSk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiBhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYW5kKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51YW5kID0gZnVuY3Rpb24gdWFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdWFuZCh0aGlzKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1eG9yID0gZnVuY3Rpb24gaXV4b3IgKG51bSkge1xuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYTtcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldIF4gYi53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcyAhPT0gYSkge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5peG9yID0gZnVuY3Rpb24gaXhvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXV4b3IobnVtKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIHhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5peG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml4b3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnV4b3IgPSBmdW5jdGlvbiB1eG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1eG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1eG9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIE5vdCBgYHRoaXNgYCB3aXRoIGBgd2lkdGhgYCBiaXR3aWR0aFxuICBCTi5wcm90b3R5cGUuaW5vdG4gPSBmdW5jdGlvbiBpbm90biAod2lkdGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyAmJiB3aWR0aCA+PSAwKTtcblxuICAgIHZhciBieXRlc05lZWRlZCA9IE1hdGguY2VpbCh3aWR0aCAvIDI2KSB8IDA7XG4gICAgdmFyIGJpdHNMZWZ0ID0gd2lkdGggJSAyNjtcblxuICAgIC8vIEV4dGVuZCB0aGUgYnVmZmVyIHdpdGggbGVhZGluZyB6ZXJvZXNcbiAgICB0aGlzLl9leHBhbmQoYnl0ZXNOZWVkZWQpO1xuXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgYnl0ZXNOZWVkZWQtLTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgY29tcGxldGUgd29yZHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzTmVlZGVkOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIHJlc2lkdWVcbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAoMHgzZmZmZmZmID4+ICgyNiAtIGJpdHNMZWZ0KSk7XG4gICAgfVxuXG4gICAgLy8gQW5kIHJlbW92ZSBsZWFkaW5nIHplcm9lc1xuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm5vdG4gPSBmdW5jdGlvbiBub3RuICh3aWR0aCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5vdG4od2lkdGgpO1xuICB9O1xuXG4gIC8vIFNldCBgYml0YCBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNldG4gPSBmdW5jdGlvbiBzZXRuIChiaXQsIHZhbCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG5cbiAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgIHRoaXMuX2V4cGFuZChvZmYgKyAxKTtcblxuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSB8ICgxIDw8IHdiaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gJiB+KDEgPDwgd2JpdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAobnVtKSB7XG4gICAgdmFyIHI7XG5cbiAgICAvLyBuZWdhdGl2ZSArIHBvc2l0aXZlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gcG9zaXRpdmUgKyBuZWdhdGl2ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhLCBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAvLyBDb3B5IHRoZSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIH0gZWxzZSBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAobnVtKSB7XG4gICAgdmFyIHJlcztcbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwICYmIHRoaXMubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSB0aGlzLnN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSBpZiAobnVtLm5lZ2F0aXZlID09PSAwICYmIHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gbnVtLnN1Yih0aGlzKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGQobnVtKTtcblxuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYWRkKHRoaXMpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAobnVtKSB7XG4gICAgLy8gdGhpcyAtICgtbnVtKSA9IHRoaXMgKyBudW1cbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgdmFyIHIgPSB0aGlzLmlhZGQobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcblxuICAgIC8vIC10aGlzIC0gbnVtID0gLSh0aGlzICsgbnVtKVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGQobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlXG4gICAgdmFyIGNtcCA9IHRoaXMuY21wKG51bSk7XG5cbiAgICAvLyBPcHRpbWl6YXRpb24gLSB6ZXJvaWZ5XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIGEgPiBiXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGNtcCA+IDApIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSAtIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBDb3B5IHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgaWYgKGNhcnJ5ID09PSAwICYmIGkgPCBhLmxlbmd0aCAmJiBhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSk7XG5cbiAgICBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBzbWFsbE11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgdmFyIGxlbiA9IChzZWxmLmxlbmd0aCArIG51bS5sZW5ndGgpIHwgMDtcbiAgICBvdXQubGVuZ3RoID0gbGVuO1xuICAgIGxlbiA9IChsZW4gLSAxKSB8IDA7XG5cbiAgICAvLyBQZWVsIG9uZSBpdGVyYXRpb24gKGNvbXBpbGVyIGNhbid0IGRvIGl0LCBiZWNhdXNlIG9mIGNvZGUgY29tcGxleGl0eSlcbiAgICB2YXIgYSA9IHNlbGYud29yZHNbMF0gfCAwO1xuICAgIHZhciBiID0gbnVtLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICB2YXIgY2FycnkgPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgIG91dC53b3Jkc1swXSA9IGxvO1xuXG4gICAgZm9yICh2YXIgayA9IDE7IGsgPCBsZW47IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBjYXJyeSA+Pj4gMjY7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IChrIC0gaikgfCAwO1xuICAgICAgICBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICByID0gYSAqIGIgKyByd29yZDtcbiAgICAgICAgbmNhcnJ5ICs9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkIHwgMDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5IHwgMDtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeSB8IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICAvLyBUT0RPKGluZHV0bnkpOiBpdCBtYXkgYmUgcmVhc29uYWJsZSB0byBvbWl0IGl0IGZvciB1c2VycyB3aG8gZG9uJ3QgbmVlZFxuICAvLyB0byB3b3JrIHdpdGggMjU2LWJpdCBudW1iZXJzLCBvdGhlcndpc2UgaXQgZ2l2ZXMgMjAlIGltcHJvdmVtZW50IGZvciAyNTYtYml0XG4gIC8vIG11bHRpcGxpY2F0aW9uIChsaWtlIGVsbGlwdGljIHNlY3AyNTZrMSkuXG4gIHZhciBjb21iMTBNdWxUbyA9IGZ1bmN0aW9uIGNvbWIxME11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBhID0gc2VsZi53b3JkcztcbiAgICB2YXIgYiA9IG51bS53b3JkcztcbiAgICB2YXIgbyA9IG91dC53b3JkcztcbiAgICB2YXIgYyA9IDA7XG4gICAgdmFyIGxvO1xuICAgIHZhciBtaWQ7XG4gICAgdmFyIGhpO1xuICAgIHZhciBhMCA9IGFbMF0gfCAwO1xuICAgIHZhciBhbDAgPSBhMCAmIDB4MWZmZjtcbiAgICB2YXIgYWgwID0gYTAgPj4+IDEzO1xuICAgIHZhciBhMSA9IGFbMV0gfCAwO1xuICAgIHZhciBhbDEgPSBhMSAmIDB4MWZmZjtcbiAgICB2YXIgYWgxID0gYTEgPj4+IDEzO1xuICAgIHZhciBhMiA9IGFbMl0gfCAwO1xuICAgIHZhciBhbDIgPSBhMiAmIDB4MWZmZjtcbiAgICB2YXIgYWgyID0gYTIgPj4+IDEzO1xuICAgIHZhciBhMyA9IGFbM10gfCAwO1xuICAgIHZhciBhbDMgPSBhMyAmIDB4MWZmZjtcbiAgICB2YXIgYWgzID0gYTMgPj4+IDEzO1xuICAgIHZhciBhNCA9IGFbNF0gfCAwO1xuICAgIHZhciBhbDQgPSBhNCAmIDB4MWZmZjtcbiAgICB2YXIgYWg0ID0gYTQgPj4+IDEzO1xuICAgIHZhciBhNSA9IGFbNV0gfCAwO1xuICAgIHZhciBhbDUgPSBhNSAmIDB4MWZmZjtcbiAgICB2YXIgYWg1ID0gYTUgPj4+IDEzO1xuICAgIHZhciBhNiA9IGFbNl0gfCAwO1xuICAgIHZhciBhbDYgPSBhNiAmIDB4MWZmZjtcbiAgICB2YXIgYWg2ID0gYTYgPj4+IDEzO1xuICAgIHZhciBhNyA9IGFbN10gfCAwO1xuICAgIHZhciBhbDcgPSBhNyAmIDB4MWZmZjtcbiAgICB2YXIgYWg3ID0gYTcgPj4+IDEzO1xuICAgIHZhciBhOCA9IGFbOF0gfCAwO1xuICAgIHZhciBhbDggPSBhOCAmIDB4MWZmZjtcbiAgICB2YXIgYWg4ID0gYTggPj4+IDEzO1xuICAgIHZhciBhOSA9IGFbOV0gfCAwO1xuICAgIHZhciBhbDkgPSBhOSAmIDB4MWZmZjtcbiAgICB2YXIgYWg5ID0gYTkgPj4+IDEzO1xuICAgIHZhciBiMCA9IGJbMF0gfCAwO1xuICAgIHZhciBibDAgPSBiMCAmIDB4MWZmZjtcbiAgICB2YXIgYmgwID0gYjAgPj4+IDEzO1xuICAgIHZhciBiMSA9IGJbMV0gfCAwO1xuICAgIHZhciBibDEgPSBiMSAmIDB4MWZmZjtcbiAgICB2YXIgYmgxID0gYjEgPj4+IDEzO1xuICAgIHZhciBiMiA9IGJbMl0gfCAwO1xuICAgIHZhciBibDIgPSBiMiAmIDB4MWZmZjtcbiAgICB2YXIgYmgyID0gYjIgPj4+IDEzO1xuICAgIHZhciBiMyA9IGJbM10gfCAwO1xuICAgIHZhciBibDMgPSBiMyAmIDB4MWZmZjtcbiAgICB2YXIgYmgzID0gYjMgPj4+IDEzO1xuICAgIHZhciBiNCA9IGJbNF0gfCAwO1xuICAgIHZhciBibDQgPSBiNCAmIDB4MWZmZjtcbiAgICB2YXIgYmg0ID0gYjQgPj4+IDEzO1xuICAgIHZhciBiNSA9IGJbNV0gfCAwO1xuICAgIHZhciBibDUgPSBiNSAmIDB4MWZmZjtcbiAgICB2YXIgYmg1ID0gYjUgPj4+IDEzO1xuICAgIHZhciBiNiA9IGJbNl0gfCAwO1xuICAgIHZhciBibDYgPSBiNiAmIDB4MWZmZjtcbiAgICB2YXIgYmg2ID0gYjYgPj4+IDEzO1xuICAgIHZhciBiNyA9IGJbN10gfCAwO1xuICAgIHZhciBibDcgPSBiNyAmIDB4MWZmZjtcbiAgICB2YXIgYmg3ID0gYjcgPj4+IDEzO1xuICAgIHZhciBiOCA9IGJbOF0gfCAwO1xuICAgIHZhciBibDggPSBiOCAmIDB4MWZmZjtcbiAgICB2YXIgYmg4ID0gYjggPj4+IDEzO1xuICAgIHZhciBiOSA9IGJbOV0gfCAwO1xuICAgIHZhciBibDkgPSBiOSAmIDB4MWZmZjtcbiAgICB2YXIgYmg5ID0gYjkgPj4+IDEzO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0gc2VsZi5uZWdhdGl2ZSBeIG51bS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gMTk7XG4gICAgLyogayA9IDAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDAsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMCwgYmgwKTtcbiAgICB2YXIgdzAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcwID4+PiAyNikpIHwgMDtcbiAgICB3MCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDEsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDEpKSB8IDA7XG4gICAgdmFyIHcxID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MSA+Pj4gMjYpKSB8IDA7XG4gICAgdzEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwyLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDIsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDIsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMikpIHwgMDtcbiAgICB2YXIgdzIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcyID4+PiAyNikpIHwgMDtcbiAgICB3MiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDMsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMykpIHwgMDtcbiAgICB2YXIgdzMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHczID4+PiAyNikpIHwgMDtcbiAgICB3MyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDQsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDQpKSB8IDA7XG4gICAgdmFyIHc0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NCA+Pj4gMjYpKSB8IDA7XG4gICAgdzQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw1LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDUsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDUsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNSkpIHwgMDtcbiAgICB2YXIgdzUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc1ID4+PiAyNikpIHwgMDtcbiAgICB3NSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDYsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNikpIHwgMDtcbiAgICB2YXIgdzYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc2ID4+PiAyNikpIHwgMDtcbiAgICB3NiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDcsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDcpKSB8IDA7XG4gICAgdmFyIHc3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NyA+Pj4gMjYpKSB8IDA7XG4gICAgdzcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw4LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDgsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDgsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOCkpIHwgMDtcbiAgICB2YXIgdzggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc4ID4+PiAyNikpIHwgMDtcbiAgICB3OCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDkgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzkgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc5ID4+PiAyNikpIHwgMDtcbiAgICB3OSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDEpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTAgPj4+IDI2KSkgfCAwO1xuICAgIHcxMCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDExICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDIpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMSA+Pj4gMjYpKSB8IDA7XG4gICAgdzExICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgzKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwzKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgzKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTIgPj4+IDI2KSkgfCAwO1xuICAgIHcxMiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDQpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEzID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTMgPj4+IDI2KSkgfCAwO1xuICAgIHcxMyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDUpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg2KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw2KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg2KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTUgPj4+IDI2KSkgfCAwO1xuICAgIHcxNSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDcpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTYgPj4+IDI2KSkgfCAwO1xuICAgIHcxNiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDgpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNyA+Pj4gMjYpKSB8IDA7XG4gICAgdzE3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg5KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw5KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg5KTtcbiAgICB2YXIgdzE4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTggPj4+IDI2KSkgfCAwO1xuICAgIHcxOCAmPSAweDNmZmZmZmY7XG4gICAgb1swXSA9IHcwO1xuICAgIG9bMV0gPSB3MTtcbiAgICBvWzJdID0gdzI7XG4gICAgb1szXSA9IHczO1xuICAgIG9bNF0gPSB3NDtcbiAgICBvWzVdID0gdzU7XG4gICAgb1s2XSA9IHc2O1xuICAgIG9bN10gPSB3NztcbiAgICBvWzhdID0gdzg7XG4gICAgb1s5XSA9IHc5O1xuICAgIG9bMTBdID0gdzEwO1xuICAgIG9bMTFdID0gdzExO1xuICAgIG9bMTJdID0gdzEyO1xuICAgIG9bMTNdID0gdzEzO1xuICAgIG9bMTRdID0gdzE0O1xuICAgIG9bMTVdID0gdzE1O1xuICAgIG9bMTZdID0gdzE2O1xuICAgIG9bMTddID0gdzE3O1xuICAgIG9bMThdID0gdzE4O1xuICAgIGlmIChjICE9PSAwKSB7XG4gICAgICBvWzE5XSA9IGM7XG4gICAgICBvdXQubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH07XG5cbiAgLy8gUG9seWZpbGwgY29tYlxuICBpZiAoIU1hdGguaW11bCkge1xuICAgIGNvbWIxME11bFRvID0gc21hbGxNdWxUbztcbiAgfVxuXG4gIGZ1bmN0aW9uIGJpZ011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aDtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgdmFyIGhuY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb3V0Lmxlbmd0aCAtIDE7IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBobmNhcnJ5O1xuICAgICAgaG5jYXJyeSA9IDA7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IGsgLSBqO1xuICAgICAgICB2YXIgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICB2YXIgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHZhciByID0gYSAqIGI7XG5cbiAgICAgICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArICgociAvIDB4NDAwMDAwMCkgfCAwKSkgfCAwO1xuICAgICAgICBsbyA9IChsbyArIHJ3b3JkKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAobG8gPj4+IDI2KSkgfCAwO1xuXG4gICAgICAgIGhuY2FycnkgKz0gbmNhcnJ5ID4+PiAyNjtcbiAgICAgICAgbmNhcnJ5ICY9IDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkO1xuICAgICAgY2FycnkgPSBuY2Fycnk7XG4gICAgICBuY2FycnkgPSBobmNhcnJ5O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgZnVuY3Rpb24ganVtYm9NdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgZmZ0bSA9IG5ldyBGRlRNKCk7XG4gICAgcmV0dXJuIGZmdG0ubXVscChzZWxmLCBudW0sIG91dCk7XG4gIH1cblxuICBCTi5wcm90b3R5cGUubXVsVG8gPSBmdW5jdGlvbiBtdWxUbyAobnVtLCBvdXQpIHtcbiAgICB2YXIgcmVzO1xuICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCArIG51bS5sZW5ndGg7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxMCAmJiBudW0ubGVuZ3RoID09PSAxMCkge1xuICAgICAgcmVzID0gY29tYjEwTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgNjMpIHtcbiAgICAgIHJlcyA9IHNtYWxsTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgMTAyNCkge1xuICAgICAgcmVzID0gYmlnTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvb2xleS1UdWtleSBhbGdvcml0aG0gZm9yIEZGVFxuICAvLyBzbGlnaHRseSByZXZpc2l0ZWQgdG8gcmVseSBvbiBsb29waW5nIGluc3RlYWQgb2YgcmVjdXJzaW9uXG5cbiAgZnVuY3Rpb24gRkZUTSAoeCwgeSkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIEZGVE0ucHJvdG90eXBlLm1ha2VSQlQgPSBmdW5jdGlvbiBtYWtlUkJUIChOKSB7XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGwgPSBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyhOKSAtIDE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHRbaV0gPSB0aGlzLnJldkJpbihpLCBsLCBOKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGJpbmFyeS1yZXZlcnNlZCByZXByZXNlbnRhdGlvbiBvZiBgeGBcbiAgRkZUTS5wcm90b3R5cGUucmV2QmluID0gZnVuY3Rpb24gcmV2QmluICh4LCBsLCBOKSB7XG4gICAgaWYgKHggPT09IDAgfHwgeCA9PT0gTiAtIDEpIHJldHVybiB4O1xuXG4gICAgdmFyIHJiID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgcmIgfD0gKHggJiAxKSA8PCAobCAtIGkgLSAxKTtcbiAgICAgIHggPj49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJiO1xuICB9O1xuXG4gIC8vIFBlcmZvcm1zIFwidHdlZWRsaW5nXCIgcGhhc2UsIHRoZXJlZm9yZSAnZW11bGF0aW5nJ1xuICAvLyBiZWhhdmlvdXIgb2YgdGhlIHJlY3Vyc2l2ZSBhbGdvcml0aG1cbiAgRkZUTS5wcm90b3R5cGUucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUgKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcnR3c1tpXSA9IHJ3c1tyYnRbaV1dO1xuICAgICAgaXR3c1tpXSA9IGl3c1tyYnRbaV1dO1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiB0cmFuc2Zvcm0gKHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOLCByYnQpIHtcbiAgICB0aGlzLnBlcm11dGUocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTik7XG5cbiAgICBmb3IgKHZhciBzID0gMTsgcyA8IE47IHMgPDw9IDEpIHtcbiAgICAgIHZhciBsID0gcyA8PCAxO1xuXG4gICAgICB2YXIgcnR3ZGYgPSBNYXRoLmNvcygyICogTWF0aC5QSSAvIGwpO1xuICAgICAgdmFyIGl0d2RmID0gTWF0aC5zaW4oMiAqIE1hdGguUEkgLyBsKTtcblxuICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBOOyBwICs9IGwpIHtcbiAgICAgICAgdmFyIHJ0d2RmXyA9IHJ0d2RmO1xuICAgICAgICB2YXIgaXR3ZGZfID0gaXR3ZGY7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzOyBqKyspIHtcbiAgICAgICAgICB2YXIgcmUgPSBydHdzW3AgKyBqXTtcbiAgICAgICAgICB2YXIgaWUgPSBpdHdzW3AgKyBqXTtcblxuICAgICAgICAgIHZhciBybyA9IHJ0d3NbcCArIGogKyBzXTtcbiAgICAgICAgICB2YXIgaW8gPSBpdHdzW3AgKyBqICsgc107XG5cbiAgICAgICAgICB2YXIgcnggPSBydHdkZl8gKiBybyAtIGl0d2RmXyAqIGlvO1xuXG4gICAgICAgICAgaW8gPSBydHdkZl8gKiBpbyArIGl0d2RmXyAqIHJvO1xuICAgICAgICAgIHJvID0gcng7XG5cbiAgICAgICAgICBydHdzW3AgKyBqXSA9IHJlICsgcm87XG4gICAgICAgICAgaXR3c1twICsgal0gPSBpZSArIGlvO1xuXG4gICAgICAgICAgcnR3c1twICsgaiArIHNdID0gcmUgLSBybztcbiAgICAgICAgICBpdHdzW3AgKyBqICsgc10gPSBpZSAtIGlvO1xuXG4gICAgICAgICAgLyoganNoaW50IG1heGRlcHRoIDogZmFsc2UgKi9cbiAgICAgICAgICBpZiAoaiAhPT0gbCkge1xuICAgICAgICAgICAgcnggPSBydHdkZiAqIHJ0d2RmXyAtIGl0d2RmICogaXR3ZGZfO1xuXG4gICAgICAgICAgICBpdHdkZl8gPSBydHdkZiAqIGl0d2RmXyArIGl0d2RmICogcnR3ZGZfO1xuICAgICAgICAgICAgcnR3ZGZfID0gcng7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmd1ZXNzTGVuMTNiID0gZnVuY3Rpb24gZ3Vlc3NMZW4xM2IgKG4sIG0pIHtcbiAgICB2YXIgTiA9IE1hdGgubWF4KG0sIG4pIHwgMTtcbiAgICB2YXIgb2RkID0gTiAmIDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoTiA9IE4gLyAyIHwgMDsgTjsgTiA9IE4gPj4+IDEpIHtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICByZXR1cm4gMSA8PCBpICsgMSArIG9kZDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb25qdWdhdGUgPSBmdW5jdGlvbiBjb25qdWdhdGUgKHJ3cywgaXdzLCBOKSB7XG4gICAgaWYgKE4gPD0gMSkgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdCA9IHJ3c1tpXTtcblxuICAgICAgcndzW2ldID0gcndzW04gLSBpIC0gMV07XG4gICAgICByd3NbTiAtIGkgLSAxXSA9IHQ7XG5cbiAgICAgIHQgPSBpd3NbaV07XG5cbiAgICAgIGl3c1tpXSA9IC1pd3NbTiAtIGkgLSAxXTtcbiAgICAgIGl3c1tOIC0gaSAtIDFdID0gLXQ7XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm5vcm1hbGl6ZTEzYiA9IGZ1bmN0aW9uIG5vcm1hbGl6ZTEzYiAod3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHcgPSBNYXRoLnJvdW5kKHdzWzIgKiBpICsgMV0gLyBOKSAqIDB4MjAwMCArXG4gICAgICAgIE1hdGgucm91bmQod3NbMiAqIGldIC8gTikgK1xuICAgICAgICBjYXJyeTtcblxuICAgICAgd3NbaV0gPSB3ICYgMHgzZmZmZmZmO1xuXG4gICAgICBpZiAodyA8IDB4NDAwMDAwMCkge1xuICAgICAgICBjYXJyeSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJyeSA9IHcgLyAweDQwMDAwMDAgfCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB3cztcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb252ZXJ0MTNiID0gZnVuY3Rpb24gY29udmVydDEzYiAod3MsIGxlbiwgcndzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjYXJyeSA9IGNhcnJ5ICsgKHdzW2ldIHwgMCk7XG5cbiAgICAgIHJ3c1syICogaV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgICByd3NbMiAqIGkgKyAxXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICB9XG5cbiAgICAvLyBQYWQgd2l0aCB6ZXJvZXNcbiAgICBmb3IgKGkgPSAyICogbGVuOyBpIDwgTjsgKytpKSB7XG4gICAgICByd3NbaV0gPSAwO1xuICAgIH1cblxuICAgIGFzc2VydChjYXJyeSA9PT0gMCk7XG4gICAgYXNzZXJ0KChjYXJyeSAmIH4weDFmZmYpID09PSAwKTtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5zdHViID0gZnVuY3Rpb24gc3R1YiAoTikge1xuICAgIHZhciBwaCA9IG5ldyBBcnJheShOKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcGhbaV0gPSAwO1xuICAgIH1cblxuICAgIHJldHVybiBwaDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5tdWxwID0gZnVuY3Rpb24gbXVscCAoeCwgeSwgb3V0KSB7XG4gICAgdmFyIE4gPSAyICogdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCwgeS5sZW5ndGgpO1xuXG4gICAgdmFyIHJidCA9IHRoaXMubWFrZVJCVChOKTtcblxuICAgIHZhciBfID0gdGhpcy5zdHViKE4pO1xuXG4gICAgdmFyIHJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgcndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBucndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBucndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbml3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgcm13cyA9IG91dC53b3JkcztcbiAgICBybXdzLmxlbmd0aCA9IE47XG5cbiAgICB0aGlzLmNvbnZlcnQxM2IoeC53b3JkcywgeC5sZW5ndGgsIHJ3cywgTik7XG4gICAgdGhpcy5jb252ZXJ0MTNiKHkud29yZHMsIHkubGVuZ3RoLCBucndzLCBOKTtcblxuICAgIHRoaXMudHJhbnNmb3JtKHJ3cywgXywgcndzdCwgaXdzdCwgTiwgcmJ0KTtcbiAgICB0aGlzLnRyYW5zZm9ybShucndzLCBfLCBucndzdCwgbml3c3QsIE4sIHJidCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdmFyIHJ4ID0gcndzdFtpXSAqIG5yd3N0W2ldIC0gaXdzdFtpXSAqIG5pd3N0W2ldO1xuICAgICAgaXdzdFtpXSA9IHJ3c3RbaV0gKiBuaXdzdFtpXSArIGl3c3RbaV0gKiBucndzdFtpXTtcbiAgICAgIHJ3c3RbaV0gPSByeDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmp1Z2F0ZShyd3N0LCBpd3N0LCBOKTtcbiAgICB0aGlzLnRyYW5zZm9ybShyd3N0LCBpd3N0LCBybXdzLCBfLCBOLCByYnQpO1xuICAgIHRoaXMuY29uanVnYXRlKHJtd3MsIF8sIE4pO1xuICAgIHRoaXMubm9ybWFsaXplMTNiKHJtd3MsIE4pO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0geC5uZWdhdGl2ZSBeIHkubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHgubGVuZ3RoICsgeS5sZW5ndGg7XG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGB0aGlzYCBieSBgbnVtYFxuICBCTi5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiB0aGlzLm11bFRvKG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBlbXBsb3lpbmcgRkZUXG4gIEJOLnByb3RvdHlwZS5tdWxmID0gZnVuY3Rpb24gbXVsZiAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgTXVsdGlwbGljYXRpb25cbiAgQk4ucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKG51bSwgdGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmltdWxuID0gZnVuY3Rpb24gaW11bG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG5cbiAgICAvLyBDYXJyeVxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKiBudW07XG4gICAgICB2YXIgbG8gPSAodyAmIDB4M2ZmZmZmZikgKyAoY2FycnkgJiAweDNmZmZmZmYpO1xuICAgICAgY2FycnkgPj49IDI2O1xuICAgICAgY2FycnkgKz0gKHcgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgIC8vIE5PVEU6IGxvIGlzIDI3Yml0IG1heGltdW1cbiAgICAgIGNhcnJ5ICs9IGxvID4+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm11bG4gPSBmdW5jdGlvbiBtdWxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKG51bSk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLm11bCh0aGlzKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSk7XG4gIH07XG5cbiAgLy8gTWF0aC5wb3coYHRoaXNgLCBgbnVtYClcbiAgQk4ucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAobnVtKSB7XG4gICAgdmFyIHcgPSB0b0JpdEFycmF5KG51bSk7XG4gICAgaWYgKHcubGVuZ3RoID09PSAwKSByZXR1cm4gbmV3IEJOKDEpO1xuXG4gICAgLy8gU2tpcCBsZWFkaW5nIHplcm9lc1xuICAgIHZhciByZXMgPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdy5sZW5ndGg7IGkrKywgcmVzID0gcmVzLnNxcigpKSB7XG4gICAgICBpZiAod1tpXSAhPT0gMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKCsraSA8IHcubGVuZ3RoKSB7XG4gICAgICBmb3IgKHZhciBxID0gcmVzLnNxcigpOyBpIDwgdy5sZW5ndGg7IGkrKywgcSA9IHEuc3FyKCkpIHtcbiAgICAgICAgaWYgKHdbaV0gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHJlcy5tdWwocSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0IGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXNobG4gPSBmdW5jdGlvbiBpdXNobG4gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG4gICAgdmFyIGNhcnJ5TWFzayA9ICgweDNmZmZmZmYgPj4+ICgyNiAtIHIpKSA8PCAoMjYgLSByKTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbmV3Q2FycnkgPSB0aGlzLndvcmRzW2ldICYgY2FycnlNYXNrO1xuICAgICAgICB2YXIgYyA9ICgodGhpcy53b3Jkc1tpXSB8IDApIC0gbmV3Q2FycnkpIDw8IHI7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjIHwgY2Fycnk7XG4gICAgICAgIGNhcnJ5ID0gbmV3Q2FycnkgPj4+ICgyNiAtIHIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2FycnkpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzICE9PSAwKSB7XG4gICAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIHNdID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggKz0gcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hsbiA9IGZ1bmN0aW9uIGlzaGxuIChiaXRzKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodCBpbi1wbGFjZVxuICAvLyBOT1RFOiBgaGludGAgaXMgYSBsb3dlc3QgYml0IGJlZm9yZSB0cmFpbGluZyB6ZXJvZXNcbiAgLy8gTk9URTogaWYgYGV4dGVuZGVkYCBpcyBwcmVzZW50IC0gaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBkZXN0cm95ZWQgYml0c1xuICBCTi5wcm90b3R5cGUuaXVzaHJuID0gZnVuY3Rpb24gaXVzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgaDtcbiAgICBpZiAoaGludCkge1xuICAgICAgaCA9IChoaW50IC0gKGhpbnQgJSAyNikpIC8gMjY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGggPSAwO1xuICAgIH1cblxuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gTWF0aC5taW4oKGJpdHMgLSByKSAvIDI2LCB0aGlzLmxlbmd0aCk7XG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgdmFyIG1hc2tlZFdvcmRzID0gZXh0ZW5kZWQ7XG5cbiAgICBoIC09IHM7XG4gICAgaCA9IE1hdGgubWF4KDAsIGgpO1xuXG4gICAgLy8gRXh0ZW5kZWQgbW9kZSwgY29weSBtYXNrZWQgcGFydFxuICAgIGlmIChtYXNrZWRXb3Jkcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgbWFza2VkV29yZHMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuICAgICAgbWFza2VkV29yZHMubGVuZ3RoID0gcztcbiAgICB9XG5cbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgLy8gTm8tb3AsIHdlIHNob3VsZCBub3QgbW92ZSBhbnl0aGluZyBhdCBhbGxcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gcykge1xuICAgICAgdGhpcy5sZW5ndGggLT0gcztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2kgKyBzXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiAoY2FycnkgIT09IDAgfHwgaSA+PSBoKTsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IChjYXJyeSA8PCAoMjYgLSByKSkgfCAod29yZCA+Pj4gcik7XG4gICAgICBjYXJyeSA9IHdvcmQgJiBtYXNrO1xuICAgIH1cblxuICAgIC8vIFB1c2ggY2FycmllZCBiaXRzIGFzIGEgbWFza1xuICAgIGlmIChtYXNrZWRXb3JkcyAmJiBjYXJyeSAhPT0gMCkge1xuICAgICAgbWFza2VkV29yZHMud29yZHNbbWFza2VkV29yZHMubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hybiA9IGZ1bmN0aW9uIGlzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNocm4oYml0cywgaGludCwgZXh0ZW5kZWQpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnRcbiAgQk4ucHJvdG90eXBlLnNobG4gPSBmdW5jdGlvbiBzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNobG4gPSBmdW5jdGlvbiB1c2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0XG4gIEJOLnByb3RvdHlwZS5zaHJuID0gZnVuY3Rpb24gc2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaHJuID0gZnVuY3Rpb24gdXNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiaXRzKTtcbiAgfTtcblxuICAvLyBUZXN0IGlmIG4gYml0IGlzIHNldFxuICBCTi5wcm90b3R5cGUudGVzdG4gPSBmdW5jdGlvbiB0ZXN0biAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBiaXQgYW5kIHJldHVyblxuICAgIHZhciB3ID0gdGhpcy53b3Jkc1tzXTtcblxuICAgIHJldHVybiAhISh3ICYgcSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyIChpbi1wbGFjZSlcbiAgQk4ucHJvdG90eXBlLmltYXNrbiA9IGZ1bmN0aW9uIGltYXNrbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcblxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAnaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzJyk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHMrKztcbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1pbihzLCB0aGlzLmxlbmd0aCk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gJj0gbWFzaztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlclxuICBCTi5wcm90b3R5cGUubWFza24gPSBmdW5jdGlvbiBtYXNrbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGJpdHMpO1xuICB9O1xuXG4gIC8vIEFkZCBwbGFpbiBudW1iZXIgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pYWRkbiA9IGZ1bmN0aW9uIGlhZGRuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pc3VibigtbnVtKTtcblxuICAgIC8vIFBvc3NpYmxlIHNpZ24gY2hhbmdlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiAodGhpcy53b3Jkc1swXSB8IDApIDwgbnVtKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gPSBudW0gLSAodGhpcy53b3Jkc1swXSB8IDApO1xuICAgICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pc3VibihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aG91dCBjaGVja3NcbiAgICByZXR1cm4gdGhpcy5faWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lhZGRuID0gZnVuY3Rpb24gX2lhZGRuIChudW0pIHtcbiAgICB0aGlzLndvcmRzWzBdICs9IG51bTtcblxuICAgIC8vIENhcnJ5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldID49IDB4NDAwMDAwMDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldIC09IDB4NDAwMDAwMDtcbiAgICAgIGlmIChpID09PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0rKztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSArIDEpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgcGxhaW4gbnVtYmVyIGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pc3VibiA9IGZ1bmN0aW9uIGlzdWJuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pYWRkbigtbnVtKTtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZG4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy53b3Jkc1swXSAtPSBudW07XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA8IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAtdGhpcy53b3Jkc1swXTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDYXJyeVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldIDwgMDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gKz0gMHg0MDAwMDAwO1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSAtPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFkZG4gPSBmdW5jdGlvbiBhZGRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnN1Ym4gPSBmdW5jdGlvbiBzdWJuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhYnMgPSBmdW5jdGlvbiBpYWJzICgpIHtcbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiBhYnMgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFicygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faXNobG5zdWJtdWwgPSBmdW5jdGlvbiBfaXNobG5zdWJtdWwgKG51bSwgbXVsLCBzaGlmdCkge1xuICAgIHZhciBsZW4gPSBudW0ubGVuZ3RoICsgc2hpZnQ7XG4gICAgdmFyIGk7XG5cbiAgICB0aGlzLl9leHBhbmQobGVuKTtcblxuICAgIHZhciB3O1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgdmFyIHJpZ2h0ID0gKG51bS53b3Jkc1tpXSB8IDApICogbXVsO1xuICAgICAgdyAtPSByaWdodCAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gKHcgPj4gMjYpIC0gKChyaWdodCAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBpIDwgdGhpcy5sZW5ndGggLSBzaGlmdDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSA9PT0gMCkgcmV0dXJuIHRoaXMuc3RyaXAoKTtcblxuICAgIC8vIFN1YnRyYWN0aW9uIG92ZXJmbG93XG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAtMSk7XG4gICAgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gLSh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICB0aGlzLm5lZ2F0aXZlID0gMTtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl93b3JkRGl2ID0gZnVuY3Rpb24gX3dvcmREaXYgKG51bSwgbW9kZSkge1xuICAgIHZhciBzaGlmdCA9IHRoaXMubGVuZ3RoIC0gbnVtLmxlbmd0aDtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtO1xuXG4gICAgLy8gTm9ybWFsaXplXG4gICAgdmFyIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgdmFyIGJoaUJpdHMgPSB0aGlzLl9jb3VudEJpdHMoYmhpKTtcbiAgICBzaGlmdCA9IDI2IC0gYmhpQml0cztcbiAgICBpZiAoc2hpZnQgIT09IDApIHtcbiAgICAgIGIgPSBiLnVzaGxuKHNoaWZ0KTtcbiAgICAgIGEuaXVzaGxuKHNoaWZ0KTtcbiAgICAgIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBxdW90aWVudFxuICAgIHZhciBtID0gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAgICB2YXIgcTtcblxuICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgcSA9IG5ldyBCTihudWxsKTtcbiAgICAgIHEubGVuZ3RoID0gbSArIDE7XG4gICAgICBxLndvcmRzID0gbmV3IEFycmF5KHEubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcS5sZW5ndGg7IGkrKykge1xuICAgICAgICBxLndvcmRzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGlmZiA9IGEuY2xvbmUoKS5faXNobG5zdWJtdWwoYiwgMSwgbSk7XG4gICAgaWYgKGRpZmYubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIGEgPSBkaWZmO1xuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1ttXSA9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IG0gLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgdmFyIHFqID0gKGEud29yZHNbYi5sZW5ndGggKyBqXSB8IDApICogMHg0MDAwMDAwICtcbiAgICAgICAgKGEud29yZHNbYi5sZW5ndGggKyBqIC0gMV0gfCAwKTtcblxuICAgICAgLy8gTk9URTogKHFqIC8gYmhpKSBpcyAoMHgzZmZmZmZmICogMHg0MDAwMDAwICsgMHgzZmZmZmZmKSAvIDB4MjAwMDAwMCBtYXhcbiAgICAgIC8vICgweDdmZmZmZmYpXG4gICAgICBxaiA9IE1hdGgubWluKChxaiAvIGJoaSkgfCAwLCAweDNmZmZmZmYpO1xuXG4gICAgICBhLl9pc2hsbnN1Ym11bChiLCBxaiwgaik7XG4gICAgICB3aGlsZSAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBxai0tO1xuICAgICAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgYS5faXNobG5zdWJtdWwoYiwgMSwgaik7XG4gICAgICAgIGlmICghYS5pc1plcm8oKSkge1xuICAgICAgICAgIGEubmVnYXRpdmUgXj0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1tqXSA9IHFqO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocSkge1xuICAgICAgcS5zdHJpcCgpO1xuICAgIH1cbiAgICBhLnN0cmlwKCk7XG5cbiAgICAvLyBEZW5vcm1hbGl6ZVxuICAgIGlmIChtb2RlICE9PSAnZGl2JyAmJiBzaGlmdCAhPT0gMCkge1xuICAgICAgYS5pdXNocm4oc2hpZnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaXY6IHEgfHwgbnVsbCxcbiAgICAgIG1vZDogYVxuICAgIH07XG4gIH07XG5cbiAgLy8gTk9URTogMSkgYG1vZGVgIGNhbiBiZSBzZXQgdG8gYG1vZGAgdG8gcmVxdWVzdCBtb2Qgb25seSxcbiAgLy8gICAgICAgdG8gYGRpdmAgdG8gcmVxdWVzdCBkaXYgb25seSwgb3IgYmUgYWJzZW50IHRvXG4gIC8vICAgICAgIHJlcXVlc3QgYm90aCBkaXYgJiBtb2RcbiAgLy8gICAgICAgMikgYHBvc2l0aXZlYCBpcyB0cnVlIGlmIHVuc2lnbmVkIG1vZCBpcyByZXF1ZXN0ZWRcbiAgQk4ucHJvdG90eXBlLmRpdm1vZCA9IGZ1bmN0aW9uIGRpdm1vZCAobnVtLCBtb2RlLCBwb3NpdGl2ZSkge1xuICAgIGFzc2VydCghbnVtLmlzWmVybygpKTtcblxuICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiBuZXcgQk4oMClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRpdiwgbW9kLCByZXM7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0sIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaWFkZChudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiByZXMubW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICgodGhpcy5uZWdhdGl2ZSAmIG51bS5uZWdhdGl2ZSkgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlzdWIobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHJlcy5kaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmUgYXQgdGhpcyBwb2ludFxuXG4gICAgLy8gU3RyaXAgYm90aCBudW1iZXJzIHRvIGFwcHJveGltYXRlIHNoaWZ0IHZhbHVlXG4gICAgaWYgKG51bS5sZW5ndGggPiB0aGlzLmxlbmd0aCB8fCB0aGlzLmNtcChudW0pIDwgMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogdGhpc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBWZXJ5IHNob3J0IHJlZHVjdGlvblxuICAgIGlmIChudW0ubGVuZ3RoID09PSAxKSB7XG4gICAgICBpZiAobW9kZSA9PT0gJ2RpdicpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICAgIG1vZDogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSA9PT0gJ21vZCcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IG51bGwsXG4gICAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd29yZERpdihudW0sIG1vZGUpO1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgIC8gYG51bWBcbiAgQk4ucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uIGRpdiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ2RpdicsIGZhbHNlKS5kaXY7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgJSBgbnVtYFxuICBCTi5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgZmFsc2UpLm1vZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW1vZCA9IGZ1bmN0aW9uIHVtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCB0cnVlKS5tb2Q7XG4gIH07XG5cbiAgLy8gRmluZCBSb3VuZChgdGhpc2AgLyBgbnVtYClcbiAgQk4ucHJvdG90eXBlLmRpdlJvdW5kID0gZnVuY3Rpb24gZGl2Um91bmQgKG51bSkge1xuICAgIHZhciBkbSA9IHRoaXMuZGl2bW9kKG51bSk7XG5cbiAgICAvLyBGYXN0IGNhc2UgLSBleGFjdCBkaXZpc2lvblxuICAgIGlmIChkbS5tb2QuaXNaZXJvKCkpIHJldHVybiBkbS5kaXY7XG5cbiAgICB2YXIgbW9kID0gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0ubW9kLmlzdWIobnVtKSA6IGRtLm1vZDtcblxuICAgIHZhciBoYWxmID0gbnVtLnVzaHJuKDEpO1xuICAgIHZhciByMiA9IG51bS5hbmRsbigxKTtcbiAgICB2YXIgY21wID0gbW9kLmNtcChoYWxmKTtcblxuICAgIC8vIFJvdW5kIGRvd25cbiAgICBpZiAoY21wIDwgMCB8fCByMiA9PT0gMSAmJiBjbXAgPT09IDApIHJldHVybiBkbS5kaXY7XG5cbiAgICAvLyBSb3VuZCB1cFxuICAgIHJldHVybiBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5kaXYuaXN1Ym4oMSkgOiBkbS5kaXYuaWFkZG4oMSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm1vZG4gPSBmdW5jdGlvbiBtb2RuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG4gICAgdmFyIHAgPSAoMSA8PCAyNikgJSBudW07XG5cbiAgICB2YXIgYWNjID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgYWNjID0gKHAgKiBhY2MgKyAodGhpcy53b3Jkc1tpXSB8IDApKSAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIGRpdmlzaW9uIGJ5IG51bWJlclxuICBCTi5wcm90b3R5cGUuaWRpdm4gPSBmdW5jdGlvbiBpZGl2biAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICsgY2FycnkgKiAweDQwMDAwMDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKHcgLyBudW0pIHwgMDtcbiAgICAgIGNhcnJ5ID0gdyAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5kaXZuID0gZnVuY3Rpb24gZGl2biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lZ2NkID0gZnVuY3Rpb24gZWdjZCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIHggPSB0aGlzO1xuICAgIHZhciB5ID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKHgubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHggPSB4LnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHggPSB4LmNsb25lKCk7XG4gICAgfVxuXG4gICAgLy8gQSAqIHggKyBCICogeSA9IHhcbiAgICB2YXIgQSA9IG5ldyBCTigxKTtcbiAgICB2YXIgQiA9IG5ldyBCTigwKTtcblxuICAgIC8vIEMgKiB4ICsgRCAqIHkgPSB5XG4gICAgdmFyIEMgPSBuZXcgQk4oMCk7XG4gICAgdmFyIEQgPSBuZXcgQk4oMSk7XG5cbiAgICB2YXIgZyA9IDA7XG5cbiAgICB3aGlsZSAoeC5pc0V2ZW4oKSAmJiB5LmlzRXZlbigpKSB7XG4gICAgICB4Lml1c2hybigxKTtcbiAgICAgIHkuaXVzaHJuKDEpO1xuICAgICAgKytnO1xuICAgIH1cblxuICAgIHZhciB5cCA9IHkuY2xvbmUoKTtcbiAgICB2YXIgeHAgPSB4LmNsb25lKCk7XG5cbiAgICB3aGlsZSAoIXguaXNaZXJvKCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7ICh4LndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgeC5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEEuaXNPZGQoKSB8fCBCLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEEuaWFkZCh5cCk7XG4gICAgICAgICAgICBCLmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEEuaXVzaHJuKDEpO1xuICAgICAgICAgIEIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7ICh5LndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgeS5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEMuaXNPZGQoKSB8fCBELmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEMuaWFkZCh5cCk7XG4gICAgICAgICAgICBELmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEMuaXVzaHJuKDEpO1xuICAgICAgICAgIEQuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh4LmNtcCh5KSA+PSAwKSB7XG4gICAgICAgIHguaXN1Yih5KTtcbiAgICAgICAgQS5pc3ViKEMpO1xuICAgICAgICBCLmlzdWIoRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5LmlzdWIoeCk7XG4gICAgICAgIEMuaXN1YihBKTtcbiAgICAgICAgRC5pc3ViKEIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhOiBDLFxuICAgICAgYjogRCxcbiAgICAgIGdjZDogeS5pdXNobG4oZylcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRoaXMgaXMgcmVkdWNlZCBpbmNhcm5hdGlvbiBvZiB0aGUgYmluYXJ5IEVFQVxuICAvLyBhYm92ZSwgZGVzaWduYXRlZCB0byBpbnZlcnQgbWVtYmVycyBvZiB0aGVcbiAgLy8gX3ByaW1lXyBmaWVsZHMgRihwKSBhdCBhIG1heGltYWwgc3BlZWRcbiAgQk4ucHJvdG90eXBlLl9pbnZtcCA9IGZ1bmN0aW9uIF9pbnZtcCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIGEgPSB0aGlzO1xuICAgIHZhciBiID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGEgPSBhLnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICAgIHZhciB4MiA9IG5ldyBCTigwKTtcblxuICAgIHZhciBkZWx0YSA9IGIuY2xvbmUoKTtcblxuICAgIHdoaWxlIChhLmNtcG4oMSkgPiAwICYmIGIuY21wbigxKSA+IDApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7IChhLndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgYS5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgxLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgxLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgxLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoYi53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIGIuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmICh4Mi5pc09kZCgpKSB7XG4gICAgICAgICAgICB4Mi5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4Mi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGEuY21wKGIpID49IDApIHtcbiAgICAgICAgYS5pc3ViKGIpO1xuICAgICAgICB4MS5pc3ViKHgyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGIuaXN1YihhKTtcbiAgICAgICAgeDIuaXN1Yih4MSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlcztcbiAgICBpZiAoYS5jbXBuKDEpID09PSAwKSB7XG4gICAgICByZXMgPSB4MTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0geDI7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQocCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ2NkID0gZnVuY3Rpb24gZ2NkIChudW0pIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIG51bS5hYnMoKTtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gdGhpcy5hYnMoKTtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtLmNsb25lKCk7XG4gICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgYi5uZWdhdGl2ZSA9IDA7XG5cbiAgICAvLyBSZW1vdmUgY29tbW9uIGZhY3RvciBvZiB0d29cbiAgICBmb3IgKHZhciBzaGlmdCA9IDA7IGEuaXNFdmVuKCkgJiYgYi5pc0V2ZW4oKTsgc2hpZnQrKykge1xuICAgICAgYS5pdXNocm4oMSk7XG4gICAgICBiLml1c2hybigxKTtcbiAgICB9XG5cbiAgICBkbyB7XG4gICAgICB3aGlsZSAoYS5pc0V2ZW4oKSkge1xuICAgICAgICBhLml1c2hybigxKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgIGIuaXVzaHJuKDEpO1xuICAgICAgfVxuXG4gICAgICB2YXIgciA9IGEuY21wKGIpO1xuICAgICAgaWYgKHIgPCAwKSB7XG4gICAgICAgIC8vIFN3YXAgYGFgIGFuZCBgYmAgdG8gbWFrZSBgYWAgYWx3YXlzIGJpZ2dlciB0aGFuIGBiYFxuICAgICAgICB2YXIgdCA9IGE7XG4gICAgICAgIGEgPSBiO1xuICAgICAgICBiID0gdDtcbiAgICAgIH0gZWxzZSBpZiAociA9PT0gMCB8fCBiLmNtcG4oMSkgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGEuaXN1YihiKTtcbiAgICB9IHdoaWxlICh0cnVlKTtcblxuICAgIHJldHVybiBiLml1c2hsbihzaGlmdCk7XG4gIH07XG5cbiAgLy8gSW52ZXJ0IG51bWJlciBpbiB0aGUgZmllbGQgRihudW0pXG4gIEJOLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZWdjZChudW0pLmEudW1vZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiBpc0V2ZW4gKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uIGlzT2RkICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMTtcbiAgfTtcblxuICAvLyBBbmQgZmlyc3Qgd29yZCBhbmQgbnVtXG4gIEJOLnByb3RvdHlwZS5hbmRsbiA9IGZ1bmN0aW9uIGFuZGxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkc1swXSAmIG51bTtcbiAgfTtcblxuICAvLyBJbmNyZW1lbnQgYXQgdGhlIGJpdCBwb3NpdGlvbiBpbi1saW5lXG4gIEJOLnByb3RvdHlwZS5iaW5jbiA9IGZ1bmN0aW9uIGJpbmNuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicpO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHRoaXMuX2V4cGFuZChzICsgMSk7XG4gICAgICB0aGlzLndvcmRzW3NdIHw9IHE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgYml0IGFuZCBwcm9wYWdhdGUsIGlmIG5lZWRlZFxuICAgIHZhciBjYXJyeSA9IHE7XG4gICAgZm9yICh2YXIgaSA9IHM7IGNhcnJ5ICE9PSAwICYmIGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdyArPSBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+Pj4gMjY7XG4gICAgICB3ICY9IDB4M2ZmZmZmZjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiBpc1plcm8gKCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbXBuID0gZnVuY3Rpb24gY21wbiAobnVtKSB7XG4gICAgdmFyIG5lZ2F0aXZlID0gbnVtIDwgMDtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmICFuZWdhdGl2ZSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG5lZ2F0aXZlKSByZXR1cm4gMTtcblxuICAgIHRoaXMuc3RyaXAoKTtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gMSkge1xuICAgICAgcmVzID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5lZ2F0aXZlKSB7XG4gICAgICAgIG51bSA9IC1udW07XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmLCAnTnVtYmVyIGlzIHRvbyBiaWcnKTtcblxuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzWzBdIHwgMDtcbiAgICAgIHJlcyA9IHcgPT09IG51bSA/IDAgOiB3IDwgbnVtID8gLTEgOiAxO1xuICAgIH1cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29tcGFyZSB0d28gbnVtYmVycyBhbmQgcmV0dXJuOlxuICAvLyAxIC0gaWYgYHRoaXNgID4gYG51bWBcbiAgLy8gMCAtIGlmIGB0aGlzYCA9PSBgbnVtYFxuICAvLyAtMSAtIGlmIGB0aGlzYCA8IGBudW1gXG4gIEJOLnByb3RvdHlwZS5jbXAgPSBmdW5jdGlvbiBjbXAgKG51bSkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIDE7XG5cbiAgICB2YXIgcmVzID0gdGhpcy51Y21wKG51bSk7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFVuc2lnbmVkIGNvbXBhcmlzb25cbiAgQk4ucHJvdG90eXBlLnVjbXAgPSBmdW5jdGlvbiB1Y21wIChudW0pIHtcbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBoYXZlIHRoZSBzYW1lIHNpZ25cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSByZXR1cm4gLTE7XG5cbiAgICB2YXIgcmVzID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGEgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHZhciBiID0gbnVtLndvcmRzW2ldIHwgMDtcblxuICAgICAgaWYgKGEgPT09IGIpIGNvbnRpbnVlO1xuICAgICAgaWYgKGEgPCBiKSB7XG4gICAgICAgIHJlcyA9IC0xO1xuICAgICAgfSBlbHNlIGlmIChhID4gYikge1xuICAgICAgICByZXMgPSAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0biA9IGZ1bmN0aW9uIGd0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndCA9IGZ1bmN0aW9uIGd0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlbiA9IGZ1bmN0aW9uIGd0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGUgPSBmdW5jdGlvbiBndGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0biA9IGZ1bmN0aW9uIGx0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHQgPSBmdW5jdGlvbiBsdCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGVuID0gZnVuY3Rpb24gbHRlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZSA9IGZ1bmN0aW9uIGx0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXFuID0gZnVuY3Rpb24gZXFuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAwO1xuICB9O1xuXG4gIC8vXG4gIC8vIEEgcmVkdWNlIGNvbnRleHQsIGNvdWxkIGJlIHVzaW5nIG1vbnRnb21lcnkgb3Igc29tZXRoaW5nIGJldHRlciwgZGVwZW5kaW5nXG4gIC8vIG9uIHRoZSBgbWAgaXRzZWxmLlxuICAvL1xuICBCTi5yZWQgPSBmdW5jdGlvbiByZWQgKG51bSkge1xuICAgIHJldHVybiBuZXcgUmVkKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvUmVkID0gZnVuY3Rpb24gdG9SZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIHJldHVybiBjdHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tUmVkID0gZnVuY3Rpb24gZnJvbVJlZCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAnZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2ZvcmNlUmVkID0gZnVuY3Rpb24gX2ZvcmNlUmVkIChjdHgpIHtcbiAgICB0aGlzLnJlZCA9IGN0eDtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZm9yY2VSZWQgPSBmdW5jdGlvbiBmb3JjZVJlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkQWRkID0gZnVuY3Rpb24gcmVkQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJQWRkID0gZnVuY3Rpb24gcmVkSUFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaWFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTdWIgPSBmdW5jdGlvbiByZWRTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTdWIgPSBmdW5jdGlvbiByZWRJU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNobCA9IGZ1bmN0aW9uIHJlZFNobCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zaGwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkTXVsID0gZnVuY3Rpb24gcmVkTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElNdWwgPSBmdW5jdGlvbiByZWRJTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTcXIgPSBmdW5jdGlvbiByZWRTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FyKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3FyID0gZnVuY3Rpb24gcmVkSVNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXNxcih0aGlzKTtcbiAgfTtcblxuICAvLyBTcXVhcmUgcm9vdCBvdmVyIHBcbiAgQk4ucHJvdG90eXBlLnJlZFNxcnQgPSBmdW5jdGlvbiByZWRTcXJ0ICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXJ0KHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJbnZtID0gZnVuY3Rpb24gcmVkSW52bSAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW52bSh0aGlzKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgICUgYHJlZCBtb2R1bG9gXG4gIEJOLnByb3RvdHlwZS5yZWROZWcgPSBmdW5jdGlvbiByZWROZWcgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubmVnKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRQb3cgPSBmdW5jdGlvbiByZWRQb3cgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCAmJiAhbnVtLnJlZCwgJ3JlZFBvdyhub3JtYWxOdW0pJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnBvdyh0aGlzLCBudW0pO1xuICB9O1xuXG4gIC8vIFByaW1lIG51bWJlcnMgd2l0aCBlZmZpY2llbnQgcmVkdWN0aW9uXG4gIHZhciBwcmltZXMgPSB7XG4gICAgazI1NjogbnVsbCxcbiAgICBwMjI0OiBudWxsLFxuICAgIHAxOTI6IG51bGwsXG4gICAgcDI1NTE5OiBudWxsXG4gIH07XG5cbiAgLy8gUHNldWRvLU1lcnNlbm5lIHByaW1lXG4gIGZ1bmN0aW9uIE1QcmltZSAobmFtZSwgcCkge1xuICAgIC8vIFAgPSAyIF4gTiAtIEtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMucCA9IG5ldyBCTihwLCAxNik7XG4gICAgdGhpcy5uID0gdGhpcy5wLmJpdExlbmd0aCgpO1xuICAgIHRoaXMuayA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCk7XG5cbiAgICB0aGlzLnRtcCA9IHRoaXMuX3RtcCgpO1xuICB9XG5cbiAgTVByaW1lLnByb3RvdHlwZS5fdG1wID0gZnVuY3Rpb24gX3RtcCAoKSB7XG4gICAgdmFyIHRtcCA9IG5ldyBCTihudWxsKTtcbiAgICB0bXAud29yZHMgPSBuZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubiAvIDEzKSk7XG4gICAgcmV0dXJuIHRtcDtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmlyZWR1Y2UgPSBmdW5jdGlvbiBpcmVkdWNlIChudW0pIHtcbiAgICAvLyBBc3N1bWVzIHRoYXQgYG51bWAgaXMgbGVzcyB0aGFuIGBQXjJgXG4gICAgLy8gbnVtID0gSEkgKiAoMiBeIE4gLSBLKSArIEhJICogSyArIExPID0gSEkgKiBLICsgTE8gKG1vZCBQKVxuICAgIHZhciByID0gbnVtO1xuICAgIHZhciBybGVuO1xuXG4gICAgZG8ge1xuICAgICAgdGhpcy5zcGxpdChyLCB0aGlzLnRtcCk7XG4gICAgICByID0gdGhpcy5pbXVsSyhyKTtcbiAgICAgIHIgPSByLmlhZGQodGhpcy50bXApO1xuICAgICAgcmxlbiA9IHIuYml0TGVuZ3RoKCk7XG4gICAgfSB3aGlsZSAocmxlbiA+IHRoaXMubik7XG5cbiAgICB2YXIgY21wID0gcmxlbiA8IHRoaXMubiA/IC0xIDogci51Y21wKHRoaXMucCk7XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgci53b3Jkc1swXSA9IDA7XG4gICAgICByLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgICByLmlzdWIodGhpcy5wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHIuc3RyaXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyByIGlzIEJOIHY0IGluc3RhbmNlXG4gICAgICAgIHIuc3RyaXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHIgaXMgQk4gdjUgaW5zdGFuY2VcbiAgICAgICAgci5fc3RyaXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBhc3NlcnQ7XG5cbmZ1bmN0aW9uIGFzc2VydCh2YWwsIG1zZykge1xuICBpZiAoIXZhbClcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG59XG5cbmFzc2VydC5lcXVhbCA9IGZ1bmN0aW9uIGFzc2VydEVxdWFsKGwsIHIsIG1zZykge1xuICBpZiAobCAhPSByKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgKCdBc3NlcnRpb24gZmFpbGVkOiAnICsgbCArICcgIT0gJyArIHIpKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IGV4cG9ydHM7XG5cbmZ1bmN0aW9uIHRvQXJyYXkobXNnLCBlbmMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobXNnKSlcbiAgICByZXR1cm4gbXNnLnNsaWNlKCk7XG4gIGlmICghbXNnKVxuICAgIHJldHVybiBbXTtcbiAgdmFyIHJlcyA9IFtdO1xuICBpZiAodHlwZW9mIG1zZyAhPT0gJ3N0cmluZycpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICAgIHJlc1tpXSA9IG1zZ1tpXSB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZiAoZW5jID09PSAnaGV4Jykge1xuICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgaWYgKG1zZy5sZW5ndGggJSAyICE9PSAwKVxuICAgICAgbXNnID0gJzAnICsgbXNnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSAyKVxuICAgICAgcmVzLnB1c2gocGFyc2VJbnQobXNnW2ldICsgbXNnW2kgKyAxXSwgMTYpKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSBtc2cuY2hhckNvZGVBdChpKTtcbiAgICAgIHZhciBoaSA9IGMgPj4gODtcbiAgICAgIHZhciBsbyA9IGMgJiAweGZmO1xuICAgICAgaWYgKGhpKVxuICAgICAgICByZXMucHVzaChoaSwgbG8pO1xuICAgICAgZWxzZVxuICAgICAgICByZXMucHVzaChsbyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0FycmF5ID0gdG9BcnJheTtcblxuZnVuY3Rpb24gemVybzIod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbnV0aWxzLnplcm8yID0gemVybzI7XG5cbmZ1bmN0aW9uIHRvSGV4KG1zZykge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgIHJlcyArPSB6ZXJvMihtc2dbaV0udG9TdHJpbmcoMTYpKTtcbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvSGV4ID0gdG9IZXg7XG5cbnV0aWxzLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShhcnIsIGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdG9IZXgoYXJyKTtcbiAgZWxzZVxuICAgIHJldHVybiBhcnI7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgbnVtYmVySXNOYU4gPSBmdW5jdGlvbiAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXMoYSwgYikge1xuXHRpZiAoYSA9PT0gMCAmJiBiID09PSAwKSB7XG5cdFx0cmV0dXJuIDEgLyBhID09PSAxIC8gYjtcblx0fVxuXHRpZiAoYSA9PT0gYikge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdGlmIChudW1iZXJJc05hTihhKSAmJiBudW1iZXJJc05hTihiKSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn07XG5cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGRlZmluZSA9IHJlcXVpcmUoJ2RlZmluZS1wcm9wZXJ0aWVzJyk7XG52YXIgY2FsbEJpbmQgPSByZXF1aXJlKCdjYWxsLWJpbmQnKTtcblxudmFyIGltcGxlbWVudGF0aW9uID0gcmVxdWlyZSgnLi9pbXBsZW1lbnRhdGlvbicpO1xudmFyIGdldFBvbHlmaWxsID0gcmVxdWlyZSgnLi9wb2x5ZmlsbCcpO1xudmFyIHNoaW0gPSByZXF1aXJlKCcuL3NoaW0nKTtcblxudmFyIHBvbHlmaWxsID0gY2FsbEJpbmQoZ2V0UG9seWZpbGwoKSwgT2JqZWN0KTtcblxuZGVmaW5lKHBvbHlmaWxsLCB7XG5cdGdldFBvbHlmaWxsOiBnZXRQb2x5ZmlsbCxcblx0aW1wbGVtZW50YXRpb246IGltcGxlbWVudGF0aW9uLFxuXHRzaGltOiBzaGltXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBwb2x5ZmlsbDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGltcGxlbWVudGF0aW9uID0gcmVxdWlyZSgnLi9pbXBsZW1lbnRhdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdldFBvbHlmaWxsKCkge1xuXHRyZXR1cm4gdHlwZW9mIE9iamVjdC5pcyA9PT0gJ2Z1bmN0aW9uJyA/IE9iamVjdC5pcyA6IGltcGxlbWVudGF0aW9uO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGdldFBvbHlmaWxsID0gcmVxdWlyZSgnLi9wb2x5ZmlsbCcpO1xudmFyIGRlZmluZSA9IHJlcXVpcmUoJ2RlZmluZS1wcm9wZXJ0aWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc2hpbU9iamVjdElzKCkge1xuXHR2YXIgcG9seWZpbGwgPSBnZXRQb2x5ZmlsbCgpO1xuXHRkZWZpbmUoT2JqZWN0LCB7IGlzOiBwb2x5ZmlsbCB9LCB7XG5cdFx0aXM6IGZ1bmN0aW9uIHRlc3RPYmplY3RJcygpIHtcblx0XHRcdHJldHVybiBPYmplY3QuaXMgIT09IHBvbHlmaWxsO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBwb2x5ZmlsbDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBrZXlzU2hpbTtcbmlmICghT2JqZWN0LmtleXMpIHtcblx0Ly8gbW9kaWZpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZXMtc2hpbXMvZXM1LXNoaW1cblx0dmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cdHZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cdHZhciBpc0FyZ3MgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZ2xvYmFsLXJlcXVpcmVcblx0dmFyIGlzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cdHZhciBoYXNEb250RW51bUJ1ZyA9ICFpc0VudW1lcmFibGUuY2FsbCh7IHRvU3RyaW5nOiBudWxsIH0sICd0b1N0cmluZycpO1xuXHR2YXIgaGFzUHJvdG9FbnVtQnVnID0gaXNFbnVtZXJhYmxlLmNhbGwoZnVuY3Rpb24gKCkge30sICdwcm90b3R5cGUnKTtcblx0dmFyIGRvbnRFbnVtcyA9IFtcblx0XHQndG9TdHJpbmcnLFxuXHRcdCd0b0xvY2FsZVN0cmluZycsXG5cdFx0J3ZhbHVlT2YnLFxuXHRcdCdoYXNPd25Qcm9wZXJ0eScsXG5cdFx0J2lzUHJvdG90eXBlT2YnLFxuXHRcdCdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG5cdFx0J2NvbnN0cnVjdG9yJ1xuXHRdO1xuXHR2YXIgZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGUgPSBmdW5jdGlvbiAobykge1xuXHRcdHZhciBjdG9yID0gby5jb25zdHJ1Y3Rvcjtcblx0XHRyZXR1cm4gY3RvciAmJiBjdG9yLnByb3RvdHlwZSA9PT0gbztcblx0fTtcblx0dmFyIGV4Y2x1ZGVkS2V5cyA9IHtcblx0XHQkYXBwbGljYXRpb25DYWNoZTogdHJ1ZSxcblx0XHQkY29uc29sZTogdHJ1ZSxcblx0XHQkZXh0ZXJuYWw6IHRydWUsXG5cdFx0JGZyYW1lOiB0cnVlLFxuXHRcdCRmcmFtZUVsZW1lbnQ6IHRydWUsXG5cdFx0JGZyYW1lczogdHJ1ZSxcblx0XHQkaW5uZXJIZWlnaHQ6IHRydWUsXG5cdFx0JGlubmVyV2lkdGg6IHRydWUsXG5cdFx0JG9ubW96ZnVsbHNjcmVlbmNoYW5nZTogdHJ1ZSxcblx0XHQkb25tb3pmdWxsc2NyZWVuZXJyb3I6IHRydWUsXG5cdFx0JG91dGVySGVpZ2h0OiB0cnVlLFxuXHRcdCRvdXRlcldpZHRoOiB0cnVlLFxuXHRcdCRwYWdlWE9mZnNldDogdHJ1ZSxcblx0XHQkcGFnZVlPZmZzZXQ6IHRydWUsXG5cdFx0JHBhcmVudDogdHJ1ZSxcblx0XHQkc2Nyb2xsTGVmdDogdHJ1ZSxcblx0XHQkc2Nyb2xsVG9wOiB0cnVlLFxuXHRcdCRzY3JvbGxYOiB0cnVlLFxuXHRcdCRzY3JvbGxZOiB0cnVlLFxuXHRcdCRzZWxmOiB0cnVlLFxuXHRcdCR3ZWJraXRJbmRleGVkREI6IHRydWUsXG5cdFx0JHdlYmtpdFN0b3JhZ2VJbmZvOiB0cnVlLFxuXHRcdCR3aW5kb3c6IHRydWVcblx0fTtcblx0dmFyIGhhc0F1dG9tYXRpb25FcXVhbGl0eUJ1ZyA9IChmdW5jdGlvbiAoKSB7XG5cdFx0LyogZ2xvYmFsIHdpbmRvdyAqL1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgeyByZXR1cm4gZmFsc2U7IH1cblx0XHRmb3IgKHZhciBrIGluIHdpbmRvdykge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKCFleGNsdWRlZEtleXNbJyQnICsga10gJiYgaGFzLmNhbGwod2luZG93LCBrKSAmJiB3aW5kb3dba10gIT09IG51bGwgJiYgdHlwZW9mIHdpbmRvd1trXSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0ZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGUod2luZG93W2tdKTtcblx0XHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSgpKTtcblx0dmFyIGVxdWFsc0NvbnN0cnVjdG9yUHJvdG90eXBlSWZOb3RCdWdneSA9IGZ1bmN0aW9uIChvKSB7XG5cdFx0LyogZ2xvYmFsIHdpbmRvdyAqL1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCAhaGFzQXV0b21hdGlvbkVxdWFsaXR5QnVnKSB7XG5cdFx0XHRyZXR1cm4gZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGUobyk7XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGUobyk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fTtcblxuXHRrZXlzU2hpbSA9IGZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG5cdFx0dmFyIGlzT2JqZWN0ID0gb2JqZWN0ICE9PSBudWxsICYmIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnO1xuXHRcdHZhciBpc0Z1bmN0aW9uID0gdG9TdHIuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xuXHRcdHZhciBpc0FyZ3VtZW50cyA9IGlzQXJncyhvYmplY3QpO1xuXHRcdHZhciBpc1N0cmluZyA9IGlzT2JqZWN0ICYmIHRvU3RyLmNhbGwob2JqZWN0KSA9PT0gJ1tvYmplY3QgU3RyaW5nXSc7XG5cdFx0dmFyIHRoZUtleXMgPSBbXTtcblxuXHRcdGlmICghaXNPYmplY3QgJiYgIWlzRnVuY3Rpb24gJiYgIWlzQXJndW1lbnRzKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Jyk7XG5cdFx0fVxuXG5cdFx0dmFyIHNraXBQcm90byA9IGhhc1Byb3RvRW51bUJ1ZyAmJiBpc0Z1bmN0aW9uO1xuXHRcdGlmIChpc1N0cmluZyAmJiBvYmplY3QubGVuZ3RoID4gMCAmJiAhaGFzLmNhbGwob2JqZWN0LCAwKSkge1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBvYmplY3QubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0dGhlS2V5cy5wdXNoKFN0cmluZyhpKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGlzQXJndW1lbnRzICYmIG9iamVjdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IG9iamVjdC5sZW5ndGg7ICsraikge1xuXHRcdFx0XHR0aGVLZXlzLnB1c2goU3RyaW5nKGopKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yICh2YXIgbmFtZSBpbiBvYmplY3QpIHtcblx0XHRcdFx0aWYgKCEoc2tpcFByb3RvICYmIG5hbWUgPT09ICdwcm90b3R5cGUnKSAmJiBoYXMuY2FsbChvYmplY3QsIG5hbWUpKSB7XG5cdFx0XHRcdFx0dGhlS2V5cy5wdXNoKFN0cmluZyhuYW1lKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoaGFzRG9udEVudW1CdWcpIHtcblx0XHRcdHZhciBza2lwQ29uc3RydWN0b3IgPSBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZUlmTm90QnVnZ3kob2JqZWN0KTtcblxuXHRcdFx0Zm9yICh2YXIgayA9IDA7IGsgPCBkb250RW51bXMubGVuZ3RoOyArK2spIHtcblx0XHRcdFx0aWYgKCEoc2tpcENvbnN0cnVjdG9yICYmIGRvbnRFbnVtc1trXSA9PT0gJ2NvbnN0cnVjdG9yJykgJiYgaGFzLmNhbGwob2JqZWN0LCBkb250RW51bXNba10pKSB7XG5cdFx0XHRcdFx0dGhlS2V5cy5wdXNoKGRvbnRFbnVtc1trXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRoZUtleXM7XG5cdH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGtleXNTaGltO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG52YXIgaXNBcmdzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpO1xuXG52YXIgb3JpZ0tleXMgPSBPYmplY3Qua2V5cztcbnZhciBrZXlzU2hpbSA9IG9yaWdLZXlzID8gZnVuY3Rpb24ga2V5cyhvKSB7IHJldHVybiBvcmlnS2V5cyhvKTsgfSA6IHJlcXVpcmUoJy4vaW1wbGVtZW50YXRpb24nKTtcblxudmFyIG9yaWdpbmFsS2V5cyA9IE9iamVjdC5rZXlzO1xuXG5rZXlzU2hpbS5zaGltID0gZnVuY3Rpb24gc2hpbU9iamVjdEtleXMoKSB7XG5cdGlmIChPYmplY3Qua2V5cykge1xuXHRcdHZhciBrZXlzV29ya3NXaXRoQXJndW1lbnRzID0gKGZ1bmN0aW9uICgpIHtcblx0XHRcdC8vIFNhZmFyaSA1LjAgYnVnXG5cdFx0XHR2YXIgYXJncyA9IE9iamVjdC5rZXlzKGFyZ3VtZW50cyk7XG5cdFx0XHRyZXR1cm4gYXJncyAmJiBhcmdzLmxlbmd0aCA9PT0gYXJndW1lbnRzLmxlbmd0aDtcblx0XHR9KDEsIDIpKTtcblx0XHRpZiAoIWtleXNXb3Jrc1dpdGhBcmd1bWVudHMpIHtcblx0XHRcdE9iamVjdC5rZXlzID0gZnVuY3Rpb24ga2V5cyhvYmplY3QpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBmdW5jLW5hbWUtbWF0Y2hpbmdcblx0XHRcdFx0aWYgKGlzQXJncyhvYmplY3QpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9yaWdpbmFsS2V5cyhzbGljZS5jYWxsKG9iamVjdCkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBvcmlnaW5hbEtleXMob2JqZWN0KTtcblx0XHRcdH07XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdE9iamVjdC5rZXlzID0ga2V5c1NoaW07XG5cdH1cblx0cmV0dXJuIE9iamVjdC5rZXlzIHx8IGtleXNTaGltO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzU2hpbTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHRvU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0FyZ3VtZW50cyh2YWx1ZSkge1xuXHR2YXIgc3RyID0gdG9TdHIuY2FsbCh2YWx1ZSk7XG5cdHZhciBpc0FyZ3MgPSBzdHIgPT09ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuXHRpZiAoIWlzQXJncykge1xuXHRcdGlzQXJncyA9IHN0ciAhPT0gJ1tvYmplY3QgQXJyYXldJyAmJlxuXHRcdFx0dmFsdWUgIT09IG51bGwgJiZcblx0XHRcdHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcblx0XHRcdHR5cGVvZiB2YWx1ZS5sZW5ndGggPT09ICdudW1iZXInICYmXG5cdFx0XHR2YWx1ZS5sZW5ndGggPj0gMCAmJlxuXHRcdFx0dG9TdHIuY2FsbCh2YWx1ZS5jYWxsZWUpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xuXHR9XG5cdHJldHVybiBpc0FyZ3M7XG59O1xuIiwiLy8gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9zZWxmLXNpZ25lZC9ibG9iL2doLXBhZ2VzL2xpYi9hc24xLmpzXG4vLyBGZWRvciwgeW91IGFyZSBhbWF6aW5nLlxuJ3VzZSBzdHJpY3QnXG5cbnZhciBhc24xID0gcmVxdWlyZSgnYXNuMS5qcycpXG5cbmV4cG9ydHMuY2VydGlmaWNhdGUgPSByZXF1aXJlKCcuL2NlcnRpZmljYXRlJylcblxudmFyIFJTQVByaXZhdGVLZXkgPSBhc24xLmRlZmluZSgnUlNBUHJpdmF0ZUtleScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3ZlcnNpb24nKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnbW9kdWx1cycpLmludCgpLFxuICAgIHRoaXMua2V5KCdwdWJsaWNFeHBvbmVudCcpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcml2YXRlRXhwb25lbnQnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpbWUxJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaW1lMicpLmludCgpLFxuICAgIHRoaXMua2V5KCdleHBvbmVudDEnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnZXhwb25lbnQyJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2NvZWZmaWNpZW50JykuaW50KClcbiAgKVxufSlcbmV4cG9ydHMuUlNBUHJpdmF0ZUtleSA9IFJTQVByaXZhdGVLZXlcblxudmFyIFJTQVB1YmxpY0tleSA9IGFzbjEuZGVmaW5lKCdSU0FQdWJsaWNLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdtb2R1bHVzJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3B1YmxpY0V4cG9uZW50JykuaW50KClcbiAgKVxufSlcbmV4cG9ydHMuUlNBUHVibGljS2V5ID0gUlNBUHVibGljS2V5XG5cbnZhciBQdWJsaWNLZXkgPSBhc24xLmRlZmluZSgnU3ViamVjdFB1YmxpY0tleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS51c2UoQWxnb3JpdGhtSWRlbnRpZmllciksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQdWJsaWNLZXknKS5iaXRzdHIoKVxuICApXG59KVxuZXhwb3J0cy5QdWJsaWNLZXkgPSBQdWJsaWNLZXlcblxudmFyIEFsZ29yaXRobUlkZW50aWZpZXIgPSBhc24xLmRlZmluZSgnQWxnb3JpdGhtSWRlbnRpZmllcicsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLm9iamlkKCksXG4gICAgdGhpcy5rZXkoJ25vbmUnKS5udWxsXygpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ2N1cnZlJykub2JqaWQoKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdwYXJhbXMnKS5zZXEoKS5vYmooXG4gICAgICB0aGlzLmtleSgncCcpLmludCgpLFxuICAgICAgdGhpcy5rZXkoJ3EnKS5pbnQoKSxcbiAgICAgIHRoaXMua2V5KCdnJykuaW50KClcbiAgICApLm9wdGlvbmFsKClcbiAgKVxufSlcblxudmFyIFByaXZhdGVLZXlJbmZvID0gYXNuMS5kZWZpbmUoJ1ByaXZhdGVLZXlJbmZvJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS51c2UoQWxnb3JpdGhtSWRlbnRpZmllciksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQcml2YXRlS2V5Jykub2N0c3RyKClcbiAgKVxufSlcbmV4cG9ydHMuUHJpdmF0ZUtleSA9IFByaXZhdGVLZXlJbmZvXG52YXIgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8gPSBhc24xLmRlZmluZSgnRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS5zZXEoKS5vYmooXG4gICAgICB0aGlzLmtleSgnaWQnKS5vYmppZCgpLFxuICAgICAgdGhpcy5rZXkoJ2RlY3J5cHQnKS5zZXEoKS5vYmooXG4gICAgICAgIHRoaXMua2V5KCdrZGUnKS5zZXEoKS5vYmooXG4gICAgICAgICAgdGhpcy5rZXkoJ2lkJykub2JqaWQoKSxcbiAgICAgICAgICB0aGlzLmtleSgna2RlcGFyYW1zJykuc2VxKCkub2JqKFxuICAgICAgICAgICAgdGhpcy5rZXkoJ3NhbHQnKS5vY3RzdHIoKSxcbiAgICAgICAgICAgIHRoaXMua2V5KCdpdGVycycpLmludCgpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICB0aGlzLmtleSgnY2lwaGVyJykuc2VxKCkub2JqKFxuICAgICAgICAgIHRoaXMua2V5KCdhbGdvJykub2JqaWQoKSxcbiAgICAgICAgICB0aGlzLmtleSgnaXYnKS5vY3RzdHIoKVxuICAgICAgICApXG4gICAgICApXG4gICAgKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFByaXZhdGVLZXknKS5vY3RzdHIoKVxuICApXG59KVxuXG5leHBvcnRzLkVuY3J5cHRlZFByaXZhdGVLZXkgPSBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mb1xuXG52YXIgRFNBUHJpdmF0ZUtleSA9IGFzbjEuZGVmaW5lKCdEU0FQcml2YXRlS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdwJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3EnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnZycpLmludCgpLFxuICAgIHRoaXMua2V5KCdwdWJfa2V5JykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaXZfa2V5JykuaW50KClcbiAgKVxufSlcbmV4cG9ydHMuRFNBUHJpdmF0ZUtleSA9IERTQVByaXZhdGVLZXlcblxuZXhwb3J0cy5EU0FwYXJhbSA9IGFzbjEuZGVmaW5lKCdEU0FwYXJhbScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5pbnQoKVxufSlcblxudmFyIEVDUHJpdmF0ZUtleSA9IGFzbjEuZGVmaW5lKCdFQ1ByaXZhdGVLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaXZhdGVLZXknKS5vY3RzdHIoKSxcbiAgICB0aGlzLmtleSgncGFyYW1ldGVycycpLm9wdGlvbmFsKCkuZXhwbGljaXQoMCkudXNlKEVDUGFyYW1ldGVycyksXG4gICAgdGhpcy5rZXkoJ3B1YmxpY0tleScpLm9wdGlvbmFsKCkuZXhwbGljaXQoMSkuYml0c3RyKClcbiAgKVxufSlcbmV4cG9ydHMuRUNQcml2YXRlS2V5ID0gRUNQcml2YXRlS2V5XG5cbnZhciBFQ1BhcmFtZXRlcnMgPSBhc24xLmRlZmluZSgnRUNQYXJhbWV0ZXJzJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLmNob2ljZSh7XG4gICAgbmFtZWRDdXJ2ZTogdGhpcy5vYmppZCgpXG4gIH0pXG59KVxuXG5leHBvcnRzLnNpZ25hdHVyZSA9IGFzbjEuZGVmaW5lKCdzaWduYXR1cmUnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdyJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3MnKS5pbnQoKVxuICApXG59KVxuIiwiLy8gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vUmFudGFuZW4vbm9kZS1kdGxzL2Jsb2IvMjVhN2RjODYxYmRhMzhjZmVhYzkzYTcyMzUwMGVlYTRmMGFjMmU4Ni9DZXJ0aWZpY2F0ZS5qc1xuLy8gdGhhbmtzIHRvIEBSYW50YW5lblxuXG4ndXNlIHN0cmljdCdcblxudmFyIGFzbiA9IHJlcXVpcmUoJ2FzbjEuanMnKVxuXG52YXIgVGltZSA9IGFzbi5kZWZpbmUoJ1RpbWUnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2hvaWNlKHtcbiAgICB1dGNUaW1lOiB0aGlzLnV0Y3RpbWUoKSxcbiAgICBnZW5lcmFsVGltZTogdGhpcy5nZW50aW1lKClcbiAgfSlcbn0pXG5cbnZhciBBdHRyaWJ1dGVUeXBlVmFsdWUgPSBhc24uZGVmaW5lKCdBdHRyaWJ1dGVUeXBlVmFsdWUnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd0eXBlJykub2JqaWQoKSxcbiAgICB0aGlzLmtleSgndmFsdWUnKS5hbnkoKVxuICApXG59KVxuXG52YXIgQWxnb3JpdGhtSWRlbnRpZmllciA9IGFzbi5kZWZpbmUoJ0FsZ29yaXRobUlkZW50aWZpZXInLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS5vYmppZCgpLFxuICAgIHRoaXMua2V5KCdwYXJhbWV0ZXJzJykub3B0aW9uYWwoKSxcbiAgICB0aGlzLmtleSgnY3VydmUnKS5vYmppZCgpLm9wdGlvbmFsKClcbiAgKVxufSlcblxudmFyIFN1YmplY3RQdWJsaWNLZXlJbmZvID0gYXNuLmRlZmluZSgnU3ViamVjdFB1YmxpY0tleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS51c2UoQWxnb3JpdGhtSWRlbnRpZmllciksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQdWJsaWNLZXknKS5iaXRzdHIoKVxuICApXG59KVxuXG52YXIgUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSA9IGFzbi5kZWZpbmUoJ1JlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2V0b2YoQXR0cmlidXRlVHlwZVZhbHVlKVxufSlcblxudmFyIFJETlNlcXVlbmNlID0gYXNuLmRlZmluZSgnUkROU2VxdWVuY2UnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2Vxb2YoUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSlcbn0pXG5cbnZhciBOYW1lID0gYXNuLmRlZmluZSgnTmFtZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jaG9pY2Uoe1xuICAgIHJkblNlcXVlbmNlOiB0aGlzLnVzZShSRE5TZXF1ZW5jZSlcbiAgfSlcbn0pXG5cbnZhciBWYWxpZGl0eSA9IGFzbi5kZWZpbmUoJ1ZhbGlkaXR5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnbm90QmVmb3JlJykudXNlKFRpbWUpLFxuICAgIHRoaXMua2V5KCdub3RBZnRlcicpLnVzZShUaW1lKVxuICApXG59KVxuXG52YXIgRXh0ZW5zaW9uID0gYXNuLmRlZmluZSgnRXh0ZW5zaW9uJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnZXh0bklEJykub2JqaWQoKSxcbiAgICB0aGlzLmtleSgnY3JpdGljYWwnKS5ib29sKCkuZGVmKGZhbHNlKSxcbiAgICB0aGlzLmtleSgnZXh0blZhbHVlJykub2N0c3RyKClcbiAgKVxufSlcblxudmFyIFRCU0NlcnRpZmljYXRlID0gYXNuLmRlZmluZSgnVEJTQ2VydGlmaWNhdGUnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuZXhwbGljaXQoMCkuaW50KCkub3B0aW9uYWwoKSxcbiAgICB0aGlzLmtleSgnc2VyaWFsTnVtYmVyJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3NpZ25hdHVyZScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnaXNzdWVyJykudXNlKE5hbWUpLFxuICAgIHRoaXMua2V5KCd2YWxpZGl0eScpLnVzZShWYWxpZGl0eSksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3QnKS51c2UoTmFtZSksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQdWJsaWNLZXlJbmZvJykudXNlKFN1YmplY3RQdWJsaWNLZXlJbmZvKSxcbiAgICB0aGlzLmtleSgnaXNzdWVyVW5pcXVlSUQnKS5pbXBsaWNpdCgxKS5iaXRzdHIoKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdzdWJqZWN0VW5pcXVlSUQnKS5pbXBsaWNpdCgyKS5iaXRzdHIoKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdleHRlbnNpb25zJykuZXhwbGljaXQoMykuc2Vxb2YoRXh0ZW5zaW9uKS5vcHRpb25hbCgpXG4gIClcbn0pXG5cbnZhciBYNTA5Q2VydGlmaWNhdGUgPSBhc24uZGVmaW5lKCdYNTA5Q2VydGlmaWNhdGUnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd0YnNDZXJ0aWZpY2F0ZScpLnVzZShUQlNDZXJ0aWZpY2F0ZSksXG4gICAgdGhpcy5rZXkoJ3NpZ25hdHVyZUFsZ29yaXRobScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnc2lnbmF0dXJlVmFsdWUnKS5iaXRzdHIoKVxuICApXG59KVxuXG5tb2R1bGUuZXhwb3J0cyA9IFg1MDlDZXJ0aWZpY2F0ZVxuIiwiLy8gYWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hcGF0aWwvcGVtc3RyaXBcbnZhciBmaW5kUHJvYyA9IC9Qcm9jLVR5cGU6IDQsRU5DUllQVEVEW1xcblxccl0rREVLLUluZm86IEFFUy0oKD86MTI4KXwoPzoxOTIpfCg/OjI1NikpLUNCQywoWzAtOUEtSF0rKVtcXG5cXHJdKyhbMC05QS16XFxuXFxyKy89XSspW1xcblxccl0rL21cbnZhciBzdGFydFJlZ2V4ID0gL14tLS0tLUJFR0lOICgoPzouKj8gS0VZKXxDRVJUSUZJQ0FURSktLS0tLS9tXG52YXIgZnVsbFJlZ2V4ID0gL14tLS0tLUJFR0lOICgoPzouKj8gS0VZKXxDRVJUSUZJQ0FURSktLS0tLShbMC05QS16XFxuXFxyKy89XSspLS0tLS1FTkQgXFwxLS0tLS0kL21cbnZhciBldnAgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG52YXIgY2lwaGVycyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2tleSwgcGFzc3dvcmQpIHtcbiAgdmFyIGtleSA9IG9rZXkudG9TdHJpbmcoKVxuICB2YXIgbWF0Y2ggPSBrZXkubWF0Y2goZmluZFByb2MpXG4gIHZhciBkZWNyeXB0ZWRcbiAgaWYgKCFtYXRjaCkge1xuICAgIHZhciBtYXRjaDIgPSBrZXkubWF0Y2goZnVsbFJlZ2V4KVxuICAgIGRlY3J5cHRlZCA9IEJ1ZmZlci5mcm9tKG1hdGNoMlsyXS5yZXBsYWNlKC9bXFxyXFxuXS9nLCAnJyksICdiYXNlNjQnKVxuICB9IGVsc2Uge1xuICAgIHZhciBzdWl0ZSA9ICdhZXMnICsgbWF0Y2hbMV1cbiAgICB2YXIgaXYgPSBCdWZmZXIuZnJvbShtYXRjaFsyXSwgJ2hleCcpXG4gICAgdmFyIGNpcGhlclRleHQgPSBCdWZmZXIuZnJvbShtYXRjaFszXS5yZXBsYWNlKC9bXFxyXFxuXS9nLCAnJyksICdiYXNlNjQnKVxuICAgIHZhciBjaXBoZXJLZXkgPSBldnAocGFzc3dvcmQsIGl2LnNsaWNlKDAsIDgpLCBwYXJzZUludChtYXRjaFsxXSwgMTApKS5rZXlcbiAgICB2YXIgb3V0ID0gW11cbiAgICB2YXIgY2lwaGVyID0gY2lwaGVycy5jcmVhdGVEZWNpcGhlcml2KHN1aXRlLCBjaXBoZXJLZXksIGl2KVxuICAgIG91dC5wdXNoKGNpcGhlci51cGRhdGUoY2lwaGVyVGV4dCkpXG4gICAgb3V0LnB1c2goY2lwaGVyLmZpbmFsKCkpXG4gICAgZGVjcnlwdGVkID0gQnVmZmVyLmNvbmNhdChvdXQpXG4gIH1cbiAgdmFyIHRhZyA9IGtleS5tYXRjaChzdGFydFJlZ2V4KVsxXVxuICByZXR1cm4ge1xuICAgIHRhZzogdGFnLFxuICAgIGRhdGE6IGRlY3J5cHRlZFxuICB9XG59XG4iLCJ2YXIgYXNuMSA9IHJlcXVpcmUoJy4vYXNuMScpXG52YXIgYWVzaWQgPSByZXF1aXJlKCcuL2Flc2lkLmpzb24nKVxudmFyIGZpeFByb2MgPSByZXF1aXJlKCcuL2ZpeFByb2MnKVxudmFyIGNpcGhlcnMgPSByZXF1aXJlKCdicm93c2VyaWZ5LWFlcycpXG52YXIgY29tcGF0ID0gcmVxdWlyZSgncGJrZGYyJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZUtleXNcblxuZnVuY3Rpb24gcGFyc2VLZXlzIChidWZmZXIpIHtcbiAgdmFyIHBhc3N3b3JkXG4gIGlmICh0eXBlb2YgYnVmZmVyID09PSAnb2JqZWN0JyAmJiAhQnVmZmVyLmlzQnVmZmVyKGJ1ZmZlcikpIHtcbiAgICBwYXNzd29yZCA9IGJ1ZmZlci5wYXNzcGhyYXNlXG4gICAgYnVmZmVyID0gYnVmZmVyLmtleVxuICB9XG4gIGlmICh0eXBlb2YgYnVmZmVyID09PSAnc3RyaW5nJykge1xuICAgIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJ1ZmZlcilcbiAgfVxuXG4gIHZhciBzdHJpcHBlZCA9IGZpeFByb2MoYnVmZmVyLCBwYXNzd29yZClcblxuICB2YXIgdHlwZSA9IHN0cmlwcGVkLnRhZ1xuICB2YXIgZGF0YSA9IHN0cmlwcGVkLmRhdGFcbiAgdmFyIHN1YnR5cGUsIG5kYXRhXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ0NFUlRJRklDQVRFJzpcbiAgICAgIG5kYXRhID0gYXNuMS5jZXJ0aWZpY2F0ZS5kZWNvZGUoZGF0YSwgJ2RlcicpLnRic0NlcnRpZmljYXRlLnN1YmplY3RQdWJsaWNLZXlJbmZvXG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgY2FzZSAnUFVCTElDIEtFWSc6XG4gICAgICBpZiAoIW5kYXRhKSB7XG4gICAgICAgIG5kYXRhID0gYXNuMS5QdWJsaWNLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgfVxuICAgICAgc3VidHlwZSA9IG5kYXRhLmFsZ29yaXRobS5hbGdvcml0aG0uam9pbignLicpXG4gICAgICBzd2l0Y2ggKHN1YnR5cGUpIHtcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEnOlxuICAgICAgICAgIHJldHVybiBhc24xLlJTQVB1YmxpY0tleS5kZWNvZGUobmRhdGEuc3ViamVjdFB1YmxpY0tleS5kYXRhLCAnZGVyJylcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0NS4yLjEnOlxuICAgICAgICAgIG5kYXRhLnN1YmplY3RQcml2YXRlS2V5ID0gbmRhdGEuc3ViamVjdFB1YmxpY0tleVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnZWMnLFxuICAgICAgICAgICAgZGF0YTogbmRhdGFcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDAuNC4xJzpcbiAgICAgICAgICBuZGF0YS5hbGdvcml0aG0ucGFyYW1zLnB1Yl9rZXkgPSBhc24xLkRTQXBhcmFtLmRlY29kZShuZGF0YS5zdWJqZWN0UHVibGljS2V5LmRhdGEsICdkZXInKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnZHNhJyxcbiAgICAgICAgICAgIGRhdGE6IG5kYXRhLmFsZ29yaXRobS5wYXJhbXNcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgaWQgJyArIHN1YnR5cGUpXG4gICAgICB9XG4gICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IHR5cGUgJyArIHR5cGUpXG4gICAgY2FzZSAnRU5DUllQVEVEIFBSSVZBVEUgS0VZJzpcbiAgICAgIGRhdGEgPSBhc24xLkVuY3J5cHRlZFByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgZGF0YSA9IGRlY3J5cHQoZGF0YSwgcGFzc3dvcmQpXG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgY2FzZSAnUFJJVkFURSBLRVknOlxuICAgICAgbmRhdGEgPSBhc24xLlByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgc3VidHlwZSA9IG5kYXRhLmFsZ29yaXRobS5hbGdvcml0aG0uam9pbignLicpXG4gICAgICBzd2l0Y2ggKHN1YnR5cGUpIHtcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEnOlxuICAgICAgICAgIHJldHVybiBhc24xLlJTQVByaXZhdGVLZXkuZGVjb2RlKG5kYXRhLnN1YmplY3RQcml2YXRlS2V5LCAnZGVyJylcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0NS4yLjEnOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjdXJ2ZTogbmRhdGEuYWxnb3JpdGhtLmN1cnZlLFxuICAgICAgICAgICAgcHJpdmF0ZUtleTogYXNuMS5FQ1ByaXZhdGVLZXkuZGVjb2RlKG5kYXRhLnN1YmplY3RQcml2YXRlS2V5LCAnZGVyJykucHJpdmF0ZUtleVxuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0MC40LjEnOlxuICAgICAgICAgIG5kYXRhLmFsZ29yaXRobS5wYXJhbXMucHJpdl9rZXkgPSBhc24xLkRTQXBhcmFtLmRlY29kZShuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSwgJ2RlcicpXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdkc2EnLFxuICAgICAgICAgICAgcGFyYW1zOiBuZGF0YS5hbGdvcml0aG0ucGFyYW1zXG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IGlkICcgKyBzdWJ0eXBlKVxuICAgICAgfVxuICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSB0eXBlICcgKyB0eXBlKVxuICAgIGNhc2UgJ1JTQSBQVUJMSUMgS0VZJzpcbiAgICAgIHJldHVybiBhc24xLlJTQVB1YmxpY0tleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgY2FzZSAnUlNBIFBSSVZBVEUgS0VZJzpcbiAgICAgIHJldHVybiBhc24xLlJTQVByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgIGNhc2UgJ0RTQSBQUklWQVRFIEtFWSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnZHNhJyxcbiAgICAgICAgcGFyYW1zOiBhc24xLkRTQVByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgfVxuICAgIGNhc2UgJ0VDIFBSSVZBVEUgS0VZJzpcbiAgICAgIGRhdGEgPSBhc24xLkVDUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjdXJ2ZTogZGF0YS5wYXJhbWV0ZXJzLnZhbHVlLFxuICAgICAgICBwcml2YXRlS2V5OiBkYXRhLnByaXZhdGVLZXlcbiAgICAgIH1cbiAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IHR5cGUgJyArIHR5cGUpXG4gIH1cbn1cbnBhcnNlS2V5cy5zaWduYXR1cmUgPSBhc24xLnNpZ25hdHVyZVxuZnVuY3Rpb24gZGVjcnlwdCAoZGF0YSwgcGFzc3dvcmQpIHtcbiAgdmFyIHNhbHQgPSBkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuc2FsdFxuICB2YXIgaXRlcnMgPSBwYXJzZUludChkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuaXRlcnMudG9TdHJpbmcoKSwgMTApXG4gIHZhciBhbGdvID0gYWVzaWRbZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuYWxnby5qb2luKCcuJyldXG4gIHZhciBpdiA9IGRhdGEuYWxnb3JpdGhtLmRlY3J5cHQuY2lwaGVyLml2XG4gIHZhciBjaXBoZXJUZXh0ID0gZGF0YS5zdWJqZWN0UHJpdmF0ZUtleVxuICB2YXIga2V5bGVuID0gcGFyc2VJbnQoYWxnby5zcGxpdCgnLScpWzFdLCAxMCkgLyA4XG4gIHZhciBrZXkgPSBjb21wYXQucGJrZGYyU3luYyhwYXNzd29yZCwgc2FsdCwgaXRlcnMsIGtleWxlbiwgJ3NoYTEnKVxuICB2YXIgY2lwaGVyID0gY2lwaGVycy5jcmVhdGVEZWNpcGhlcml2KGFsZ28sIGtleSwgaXYpXG4gIHZhciBvdXQgPSBbXVxuICBvdXQucHVzaChjaXBoZXIudXBkYXRlKGNpcGhlclRleHQpKVxuICBvdXQucHVzaChjaXBoZXIuZmluYWwoKSlcbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQob3V0KVxufVxuIiwiZXhwb3J0cy5wYmtkZjIgPSByZXF1aXJlKCcuL2xpYi9hc3luYycpXG5leHBvcnRzLnBia2RmMlN5bmMgPSByZXF1aXJlKCcuL2xpYi9zeW5jJylcbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgY2hlY2tQYXJhbWV0ZXJzID0gcmVxdWlyZSgnLi9wcmVjb25kaXRpb24nKVxudmFyIGRlZmF1bHRFbmNvZGluZyA9IHJlcXVpcmUoJy4vZGVmYXVsdC1lbmNvZGluZycpXG52YXIgc3luYyA9IHJlcXVpcmUoJy4vc3luYycpXG52YXIgdG9CdWZmZXIgPSByZXF1aXJlKCcuL3RvLWJ1ZmZlcicpXG5cbnZhciBaRVJPX0JVRlxudmFyIHN1YnRsZSA9IGdsb2JhbC5jcnlwdG8gJiYgZ2xvYmFsLmNyeXB0by5zdWJ0bGVcbnZhciB0b0Jyb3dzZXIgPSB7XG4gIHNoYTogJ1NIQS0xJyxcbiAgJ3NoYS0xJzogJ1NIQS0xJyxcbiAgc2hhMTogJ1NIQS0xJyxcbiAgc2hhMjU2OiAnU0hBLTI1NicsXG4gICdzaGEtMjU2JzogJ1NIQS0yNTYnLFxuICBzaGEzODQ6ICdTSEEtMzg0JyxcbiAgJ3NoYS0zODQnOiAnU0hBLTM4NCcsXG4gICdzaGEtNTEyJzogJ1NIQS01MTInLFxuICBzaGE1MTI6ICdTSEEtNTEyJ1xufVxudmFyIGNoZWNrcyA9IFtdXG5mdW5jdGlvbiBjaGVja05hdGl2ZSAoYWxnbykge1xuICBpZiAoZ2xvYmFsLnByb2Nlc3MgJiYgIWdsb2JhbC5wcm9jZXNzLmJyb3dzZXIpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKVxuICB9XG4gIGlmICghc3VidGxlIHx8ICFzdWJ0bGUuaW1wb3J0S2V5IHx8ICFzdWJ0bGUuZGVyaXZlQml0cykge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpXG4gIH1cbiAgaWYgKGNoZWNrc1thbGdvXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGNoZWNrc1thbGdvXVxuICB9XG4gIFpFUk9fQlVGID0gWkVST19CVUYgfHwgQnVmZmVyLmFsbG9jKDgpXG4gIHZhciBwcm9tID0gYnJvd3NlclBia2RmMihaRVJPX0JVRiwgWkVST19CVUYsIDEwLCAxMjgsIGFsZ28pXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9KVxuICBjaGVja3NbYWxnb10gPSBwcm9tXG4gIHJldHVybiBwcm9tXG59XG52YXIgbmV4dFRpY2tcbmZ1bmN0aW9uIGdldE5leHRUaWNrICgpIHtcbiAgaWYgKG5leHRUaWNrKSB7XG4gICAgcmV0dXJuIG5leHRUaWNrXG4gIH1cbiAgaWYgKGdsb2JhbC5wcm9jZXNzICYmIGdsb2JhbC5wcm9jZXNzLm5leHRUaWNrKSB7XG4gICAgbmV4dFRpY2sgPSBnbG9iYWwucHJvY2Vzcy5uZXh0VGlja1xuICB9IGVsc2UgaWYgKGdsb2JhbC5xdWV1ZU1pY3JvdGFzaykge1xuICAgIG5leHRUaWNrID0gZ2xvYmFsLnF1ZXVlTWljcm90YXNrXG4gIH0gZWxzZSBpZiAoZ2xvYmFsLnNldEltbWVkaWF0ZSkge1xuICAgIG5leHRUaWNrID0gZ2xvYmFsLnNldEltbWVkaWF0ZVxuICB9IGVsc2Uge1xuICAgIG5leHRUaWNrID0gZ2xvYmFsLnNldFRpbWVvdXRcbiAgfVxuICByZXR1cm4gbmV4dFRpY2tcbn1cbmZ1bmN0aW9uIGJyb3dzZXJQYmtkZjIgKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBsZW5ndGgsIGFsZ28pIHtcbiAgcmV0dXJuIHN1YnRsZS5pbXBvcnRLZXkoXG4gICAgJ3JhdycsIHBhc3N3b3JkLCB7IG5hbWU6ICdQQktERjInIH0sIGZhbHNlLCBbJ2Rlcml2ZUJpdHMnXVxuICApLnRoZW4oZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBzdWJ0bGUuZGVyaXZlQml0cyh7XG4gICAgICBuYW1lOiAnUEJLREYyJyxcbiAgICAgIHNhbHQ6IHNhbHQsXG4gICAgICBpdGVyYXRpb25zOiBpdGVyYXRpb25zLFxuICAgICAgaGFzaDoge1xuICAgICAgICBuYW1lOiBhbGdvXG4gICAgICB9XG4gICAgfSwga2V5LCBsZW5ndGggPDwgMylcbiAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHJlcylcbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVByb21pc2UgKHByb21pc2UsIGNhbGxiYWNrKSB7XG4gIHByb21pc2UudGhlbihmdW5jdGlvbiAob3V0KSB7XG4gICAgZ2V0TmV4dFRpY2soKShmdW5jdGlvbiAoKSB7XG4gICAgICBjYWxsYmFjayhudWxsLCBvdXQpXG4gICAgfSlcbiAgfSwgZnVuY3Rpb24gKGUpIHtcbiAgICBnZXROZXh0VGljaygpKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxiYWNrKGUpXG4gICAgfSlcbiAgfSlcbn1cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdCwgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBkaWdlc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IGRpZ2VzdFxuICAgIGRpZ2VzdCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgZGlnZXN0ID0gZGlnZXN0IHx8ICdzaGExJ1xuICB2YXIgYWxnbyA9IHRvQnJvd3NlcltkaWdlc3QudG9Mb3dlckNhc2UoKV1cblxuICBpZiAoIWFsZ28gfHwgdHlwZW9mIGdsb2JhbC5Qcm9taXNlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgZ2V0TmV4dFRpY2soKShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgb3V0XG4gICAgICB0cnkge1xuICAgICAgICBvdXQgPSBzeW5jKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdClcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGUpXG4gICAgICB9XG4gICAgICBjYWxsYmFjayhudWxsLCBvdXQpXG4gICAgfSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNoZWNrUGFyYW1ldGVycyhpdGVyYXRpb25zLCBrZXlsZW4pXG4gIHBhc3N3b3JkID0gdG9CdWZmZXIocGFzc3dvcmQsIGRlZmF1bHRFbmNvZGluZywgJ1Bhc3N3b3JkJylcbiAgc2FsdCA9IHRvQnVmZmVyKHNhbHQsIGRlZmF1bHRFbmNvZGluZywgJ1NhbHQnKVxuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ05vIGNhbGxiYWNrIHByb3ZpZGVkIHRvIHBia2RmMicpXG5cbiAgcmVzb2x2ZVByb21pc2UoY2hlY2tOYXRpdmUoYWxnbykudGhlbihmdW5jdGlvbiAocmVzcCkge1xuICAgIGlmIChyZXNwKSByZXR1cm4gYnJvd3NlclBia2RmMihwYXNzd29yZCwgc2FsdCwgaXRlcmF0aW9ucywga2V5bGVuLCBhbGdvKVxuXG4gICAgcmV0dXJuIHN5bmMocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0KVxuICB9KSwgY2FsbGJhY2spXG59XG4iLCJ2YXIgZGVmYXVsdEVuY29kaW5nXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuaWYgKGdsb2JhbC5wcm9jZXNzICYmIGdsb2JhbC5wcm9jZXNzLmJyb3dzZXIpIHtcbiAgZGVmYXVsdEVuY29kaW5nID0gJ3V0Zi04J1xufSBlbHNlIGlmIChnbG9iYWwucHJvY2VzcyAmJiBnbG9iYWwucHJvY2Vzcy52ZXJzaW9uKSB7XG4gIHZhciBwVmVyc2lvbk1ham9yID0gcGFyc2VJbnQocHJvY2Vzcy52ZXJzaW9uLnNwbGl0KCcuJylbMF0uc2xpY2UoMSksIDEwKVxuXG4gIGRlZmF1bHRFbmNvZGluZyA9IHBWZXJzaW9uTWFqb3IgPj0gNiA/ICd1dGYtOCcgOiAnYmluYXJ5J1xufSBlbHNlIHtcbiAgZGVmYXVsdEVuY29kaW5nID0gJ3V0Zi04J1xufVxubW9kdWxlLmV4cG9ydHMgPSBkZWZhdWx0RW5jb2RpbmdcbiIsInZhciBNQVhfQUxMT0MgPSBNYXRoLnBvdygyLCAzMCkgLSAxIC8vIGRlZmF1bHQgaW4gaW9qc1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRpb25zLCBrZXlsZW4pIHtcbiAgaWYgKHR5cGVvZiBpdGVyYXRpb25zICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0l0ZXJhdGlvbnMgbm90IGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmIChpdGVyYXRpb25zIDwgMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JhZCBpdGVyYXRpb25zJylcbiAgfVxuXG4gIGlmICh0eXBlb2Yga2V5bGVuICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0tleSBsZW5ndGggbm90IGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmIChrZXlsZW4gPCAwIHx8IGtleWxlbiA+IE1BWF9BTExPQyB8fCBrZXlsZW4gIT09IGtleWxlbikgeyAvKiBlc2xpbnQgbm8tc2VsZi1jb21wYXJlOiAwICovXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQmFkIGtleSBsZW5ndGgnKVxuICB9XG59XG4iLCJ2YXIgbWQ1ID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gvbWQ1JylcbnZhciBSSVBFTUQxNjAgPSByZXF1aXJlKCdyaXBlbWQxNjAnKVxudmFyIHNoYSA9IHJlcXVpcmUoJ3NoYS5qcycpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIGNoZWNrUGFyYW1ldGVycyA9IHJlcXVpcmUoJy4vcHJlY29uZGl0aW9uJylcbnZhciBkZWZhdWx0RW5jb2RpbmcgPSByZXF1aXJlKCcuL2RlZmF1bHQtZW5jb2RpbmcnKVxudmFyIHRvQnVmZmVyID0gcmVxdWlyZSgnLi90by1idWZmZXInKVxuXG52YXIgWkVST1MgPSBCdWZmZXIuYWxsb2MoMTI4KVxudmFyIHNpemVzID0ge1xuICBtZDU6IDE2LFxuICBzaGExOiAyMCxcbiAgc2hhMjI0OiAyOCxcbiAgc2hhMjU2OiAzMixcbiAgc2hhMzg0OiA0OCxcbiAgc2hhNTEyOiA2NCxcbiAgcm1kMTYwOiAyMCxcbiAgcmlwZW1kMTYwOiAyMFxufVxuXG5mdW5jdGlvbiBIbWFjIChhbGcsIGtleSwgc2FsdExlbikge1xuICB2YXIgaGFzaCA9IGdldERpZ2VzdChhbGcpXG4gIHZhciBibG9ja3NpemUgPSAoYWxnID09PSAnc2hhNTEyJyB8fCBhbGcgPT09ICdzaGEzODQnKSA/IDEyOCA6IDY0XG5cbiAgaWYgKGtleS5sZW5ndGggPiBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBoYXNoKGtleSlcbiAgfSBlbHNlIGlmIChrZXkubGVuZ3RoIDwgYmxvY2tzaXplKSB7XG4gICAga2V5ID0gQnVmZmVyLmNvbmNhdChba2V5LCBaRVJPU10sIGJsb2Nrc2l6ZSlcbiAgfVxuXG4gIHZhciBpcGFkID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2Nrc2l6ZSArIHNpemVzW2FsZ10pXG4gIHZhciBvcGFkID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2Nrc2l6ZSArIHNpemVzW2FsZ10pXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tzaXplOyBpKyspIHtcbiAgICBpcGFkW2ldID0ga2V5W2ldIF4gMHgzNlxuICAgIG9wYWRbaV0gPSBrZXlbaV0gXiAweDVDXG4gIH1cblxuICB2YXIgaXBhZDEgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYmxvY2tzaXplICsgc2FsdExlbiArIDQpXG4gIGlwYWQuY29weShpcGFkMSwgMCwgMCwgYmxvY2tzaXplKVxuICB0aGlzLmlwYWQxID0gaXBhZDFcbiAgdGhpcy5pcGFkMiA9IGlwYWRcbiAgdGhpcy5vcGFkID0gb3BhZFxuICB0aGlzLmFsZyA9IGFsZ1xuICB0aGlzLmJsb2Nrc2l6ZSA9IGJsb2Nrc2l6ZVxuICB0aGlzLmhhc2ggPSBoYXNoXG4gIHRoaXMuc2l6ZSA9IHNpemVzW2FsZ11cbn1cblxuSG1hYy5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKGRhdGEsIGlwYWQpIHtcbiAgZGF0YS5jb3B5KGlwYWQsIHRoaXMuYmxvY2tzaXplKVxuICB2YXIgaCA9IHRoaXMuaGFzaChpcGFkKVxuICBoLmNvcHkodGhpcy5vcGFkLCB0aGlzLmJsb2Nrc2l6ZSlcbiAgcmV0dXJuIHRoaXMuaGFzaCh0aGlzLm9wYWQpXG59XG5cbmZ1bmN0aW9uIGdldERpZ2VzdCAoYWxnKSB7XG4gIGZ1bmN0aW9uIHNoYUZ1bmMgKGRhdGEpIHtcbiAgICByZXR1cm4gc2hhKGFsZykudXBkYXRlKGRhdGEpLmRpZ2VzdCgpXG4gIH1cbiAgZnVuY3Rpb24gcm1kMTYwRnVuYyAoZGF0YSkge1xuICAgIHJldHVybiBuZXcgUklQRU1EMTYwKCkudXBkYXRlKGRhdGEpLmRpZ2VzdCgpXG4gIH1cblxuICBpZiAoYWxnID09PSAncm1kMTYwJyB8fCBhbGcgPT09ICdyaXBlbWQxNjAnKSByZXR1cm4gcm1kMTYwRnVuY1xuICBpZiAoYWxnID09PSAnbWQ1JykgcmV0dXJuIG1kNVxuICByZXR1cm4gc2hhRnVuY1xufVxuXG5mdW5jdGlvbiBwYmtkZjIgKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdCkge1xuICBjaGVja1BhcmFtZXRlcnMoaXRlcmF0aW9ucywga2V5bGVuKVxuICBwYXNzd29yZCA9IHRvQnVmZmVyKHBhc3N3b3JkLCBkZWZhdWx0RW5jb2RpbmcsICdQYXNzd29yZCcpXG4gIHNhbHQgPSB0b0J1ZmZlcihzYWx0LCBkZWZhdWx0RW5jb2RpbmcsICdTYWx0JylcblxuICBkaWdlc3QgPSBkaWdlc3QgfHwgJ3NoYTEnXG5cbiAgdmFyIGhtYWMgPSBuZXcgSG1hYyhkaWdlc3QsIHBhc3N3b3JkLCBzYWx0Lmxlbmd0aClcblxuICB2YXIgREsgPSBCdWZmZXIuYWxsb2NVbnNhZmUoa2V5bGVuKVxuICB2YXIgYmxvY2sxID0gQnVmZmVyLmFsbG9jVW5zYWZlKHNhbHQubGVuZ3RoICsgNClcbiAgc2FsdC5jb3B5KGJsb2NrMSwgMCwgMCwgc2FsdC5sZW5ndGgpXG5cbiAgdmFyIGRlc3RQb3MgPSAwXG4gIHZhciBoTGVuID0gc2l6ZXNbZGlnZXN0XVxuICB2YXIgbCA9IE1hdGguY2VpbChrZXlsZW4gLyBoTGVuKVxuXG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IGw7IGkrKykge1xuICAgIGJsb2NrMS53cml0ZVVJbnQzMkJFKGksIHNhbHQubGVuZ3RoKVxuXG4gICAgdmFyIFQgPSBobWFjLnJ1bihibG9jazEsIGhtYWMuaXBhZDEpXG4gICAgdmFyIFUgPSBUXG5cbiAgICBmb3IgKHZhciBqID0gMTsgaiA8IGl0ZXJhdGlvbnM7IGorKykge1xuICAgICAgVSA9IGhtYWMucnVuKFUsIGhtYWMuaXBhZDIpXG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IGhMZW47IGsrKykgVFtrXSBePSBVW2tdXG4gICAgfVxuXG4gICAgVC5jb3B5KERLLCBkZXN0UG9zKVxuICAgIGRlc3RQb3MgKz0gaExlblxuICB9XG5cbiAgcmV0dXJuIERLXG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGJrZGYyXG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhpbmcsIGVuY29kaW5nLCBuYW1lKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodGhpbmcpKSB7XG4gICAgcmV0dXJuIHRoaW5nXG4gIH0gZWxzZSBpZiAodHlwZW9mIHRoaW5nID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh0aGluZywgZW5jb2RpbmcpXG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaW5nKSkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh0aGluZy5idWZmZXIpXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihuYW1lICsgJyBtdXN0IGJlIGEgc3RyaW5nLCBhIEJ1ZmZlciwgYSB0eXBlZCBhcnJheSBvciBhIERhdGFWaWV3JylcbiAgfVxufVxuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsImV4cG9ydHMucHVibGljRW5jcnlwdCA9IHJlcXVpcmUoJy4vcHVibGljRW5jcnlwdCcpXG5leHBvcnRzLnByaXZhdGVEZWNyeXB0ID0gcmVxdWlyZSgnLi9wcml2YXRlRGVjcnlwdCcpXG5cbmV4cG9ydHMucHJpdmF0ZUVuY3J5cHQgPSBmdW5jdGlvbiBwcml2YXRlRW5jcnlwdCAoa2V5LCBidWYpIHtcbiAgcmV0dXJuIGV4cG9ydHMucHVibGljRW5jcnlwdChrZXksIGJ1ZiwgdHJ1ZSlcbn1cblxuZXhwb3J0cy5wdWJsaWNEZWNyeXB0ID0gZnVuY3Rpb24gcHVibGljRGVjcnlwdCAoa2V5LCBidWYpIHtcbiAgcmV0dXJuIGV4cG9ydHMucHJpdmF0ZURlY3J5cHQoa2V5LCBidWYsIHRydWUpXG59XG4iLCJ2YXIgY3JlYXRlSGFzaCA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzZWVkLCBsZW4pIHtcbiAgdmFyIHQgPSBCdWZmZXIuYWxsb2MoMClcbiAgdmFyIGkgPSAwXG4gIHZhciBjXG4gIHdoaWxlICh0Lmxlbmd0aCA8IGxlbikge1xuICAgIGMgPSBpMm9wcyhpKyspXG4gICAgdCA9IEJ1ZmZlci5jb25jYXQoW3QsIGNyZWF0ZUhhc2goJ3NoYTEnKS51cGRhdGUoc2VlZCkudXBkYXRlKGMpLmRpZ2VzdCgpXSlcbiAgfVxuICByZXR1cm4gdC5zbGljZSgwLCBsZW4pXG59XG5cbmZ1bmN0aW9uIGkyb3BzIChjKSB7XG4gIHZhciBvdXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoNClcbiAgb3V0LndyaXRlVUludDMyQkUoYywgMClcbiAgcmV0dXJuIG91dFxufVxuIiwiKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFV0aWxzXG4gIGZ1bmN0aW9uIGFzc2VydCAodmFsLCBtc2cpIHtcbiAgICBpZiAoIXZhbCkgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xuICB9XG5cbiAgLy8gQ291bGQgdXNlIGBpbmhlcml0c2AgbW9kdWxlLCBidXQgZG9uJ3Qgd2FudCB0byBtb3ZlIGZyb20gc2luZ2xlIGZpbGVcbiAgLy8gYXJjaGl0ZWN0dXJlIHlldC5cbiAgZnVuY3Rpb24gaW5oZXJpdHMgKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGU7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKTtcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gIH1cblxuICAvLyBCTlxuXG4gIGZ1bmN0aW9uIEJOIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChCTi5pc0JOKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgdGhpcy53b3JkcyA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgLy8gUmVkdWN0aW9uIGNvbnRleHRcbiAgICB0aGlzLnJlZCA9IG51bGw7XG5cbiAgICBpZiAobnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gJ2xlJyB8fCBiYXNlID09PSAnYmUnKSB7XG4gICAgICAgIGVuZGlhbiA9IGJhc2U7XG4gICAgICAgIGJhc2UgPSAxMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdChudW1iZXIgfHwgMCwgYmFzZSB8fCAxMCwgZW5kaWFuIHx8ICdiZScpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJOO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQk4gPSBCTjtcbiAgfVxuXG4gIEJOLkJOID0gQk47XG4gIEJOLndvcmRTaXplID0gMjY7XG5cbiAgdmFyIEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5CdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBCdWZmZXIgPSB3aW5kb3cuQnVmZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gIH1cblxuICBCTi5pc0JOID0gZnVuY3Rpb24gaXNCTiAobnVtKSB7XG4gICAgaWYgKG51bSBpbnN0YW5jZW9mIEJOKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVtICE9PSBudWxsICYmIHR5cGVvZiBudW0gPT09ICdvYmplY3QnICYmXG4gICAgICBudW0uY29uc3RydWN0b3Iud29yZFNpemUgPT09IEJOLndvcmRTaXplICYmIEFycmF5LmlzQXJyYXkobnVtLndvcmRzKTtcbiAgfTtcblxuICBCTi5tYXggPSBmdW5jdGlvbiBtYXggKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA+IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5taW4gPSBmdW5jdGlvbiBtaW4gKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA8IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXROdW1iZXIobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXRBcnJheShudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBiYXNlID0gMTY7XG4gICAgfVxuICAgIGFzc2VydChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KTtcblxuICAgIG51bWJlciA9IG51bWJlci50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICBzdGFydCsrO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0IDwgbnVtYmVyLmxlbmd0aCkge1xuICAgICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICAgIHRoaXMuX3BhcnNlSGV4KG51bWJlciwgc3RhcnQsIGVuZGlhbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wYXJzZUJhc2UobnVtYmVyLCBiYXNlLCBzdGFydCk7XG4gICAgICAgIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgICAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0TnVtYmVyID0gZnVuY3Rpb24gX2luaXROdW1iZXIgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDB4NDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgbnVtYmVyICYgMHgzZmZmZmZmIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPCAweDEwMDAwMDAwMDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobnVtYmVyIDwgMHgyMDAwMDAwMDAwMDAwMCk7IC8vIDIgXiA1MyAodW5zYWZlKVxuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZixcbiAgICAgICAgMVxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICAvLyBSZXZlcnNlIHRoZSBieXRlc1xuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXRBcnJheSA9IGZ1bmN0aW9uIF9pbml0QXJyYXkgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgLy8gUGVyaGFwcyBhIFVpbnQ4QXJyYXlcbiAgICBhc3NlcnQodHlwZW9mIG51bWJlci5sZW5ndGggPT09ICdudW1iZXInKTtcbiAgICBpZiAobnVtYmVyLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbChudW1iZXIubGVuZ3RoIC8gMyk7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMSwgaiA9IDA7IGkgPj0gMDsgaSAtPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgLSAxXSA8PCA4KSB8IChudW1iZXJbaSAtIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpICsgMV0gPDwgOCkgfCAobnVtYmVyW2kgKyAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUhleDRCaXRzIChzdHJpbmcsIGluZGV4KSB7XG4gICAgdmFyIGMgPSBzdHJpbmcuY2hhckNvZGVBdChpbmRleCk7XG4gICAgLy8gJ0EnIC0gJ0YnXG4gICAgaWYgKGMgPj0gNjUgJiYgYyA8PSA3MCkge1xuICAgICAgcmV0dXJuIGMgLSA1NTtcbiAgICAvLyAnYScgLSAnZidcbiAgICB9IGVsc2UgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMDIpIHtcbiAgICAgIHJldHVybiBjIC0gODc7XG4gICAgLy8gJzAnIC0gJzknXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoYyAtIDQ4KSAmIDB4ZjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUhleEJ5dGUgKHN0cmluZywgbG93ZXJCb3VuZCwgaW5kZXgpIHtcbiAgICB2YXIgciA9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCk7XG4gICAgaWYgKGluZGV4IC0gMSA+PSBsb3dlckJvdW5kKSB7XG4gICAgICByIHw9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCAtIDEpIDw8IDQ7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUhleCA9IGZ1bmN0aW9uIF9wYXJzZUhleCAobnVtYmVyLCBzdGFydCwgZW5kaWFuKSB7XG4gICAgLy8gQ3JlYXRlIHBvc3NpYmx5IGJpZ2dlciBhcnJheSB0byBlbnN1cmUgdGhhdCBpdCBmaXRzIHRoZSBudW1iZXJcbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbCgobnVtYmVyLmxlbmd0aCAtIHN0YXJ0KSAvIDYpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgLy8gMjQtYml0cyBjaHVua3NcbiAgICB2YXIgb2ZmID0gMDtcbiAgICB2YXIgaiA9IDA7XG5cbiAgICB2YXIgdztcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMTsgaSA+PSBzdGFydDsgaSAtPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhcnNlTGVuZ3RoID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgICAgZm9yIChpID0gcGFyc2VMZW5ndGggJSAyID09PSAwID8gc3RhcnQgKyAxIDogc3RhcnQ7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIHIgKz0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICByICs9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUJhc2UgPSBmdW5jdGlvbiBfcGFyc2VCYXNlIChudW1iZXIsIGJhc2UsIHN0YXJ0KSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBhcyB6ZXJvXG4gICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA+IDEgJiYgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX25vcm1TaWduID0gZnVuY3Rpb24gX25vcm1TaWduICgpIHtcbiAgICAvLyAtMCA9IDBcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH07XG5cbiAgLypcblxuICB2YXIgemVyb3MgPSBbXTtcbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXTtcbiAgdmFyIGdyb3VwQmFzZXMgPSBbXTtcblxuICB2YXIgcyA9ICcnO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgQk4ud29yZFNpemUpIHtcbiAgICB6ZXJvc1tpXSA9IHM7XG4gICAgcyArPSAnMCc7XG4gIH1cbiAgZ3JvdXBTaXplc1swXSA9IDA7XG4gIGdyb3VwU2l6ZXNbMV0gPSAwO1xuICBncm91cEJhc2VzWzBdID0gMDtcbiAgZ3JvdXBCYXNlc1sxXSA9IDA7XG4gIHZhciBiYXNlID0gMiAtIDE7XG4gIHdoaWxlICgrK2Jhc2UgPCAzNiArIDEpIHtcbiAgICB2YXIgZ3JvdXBTaXplID0gMDtcbiAgICB2YXIgZ3JvdXBCYXNlID0gMTtcbiAgICB3aGlsZSAoZ3JvdXBCYXNlIDwgKDEgPDwgQk4ud29yZFNpemUpIC8gYmFzZSkge1xuICAgICAgZ3JvdXBCYXNlICo9IGJhc2U7XG4gICAgICBncm91cFNpemUgKz0gMTtcbiAgICB9XG4gICAgZ3JvdXBTaXplc1tiYXNlXSA9IGdyb3VwU2l6ZTtcbiAgICBncm91cEJhc2VzW2Jhc2VdID0gZ3JvdXBCYXNlO1xuICB9XG5cbiAgKi9cblxuICB2YXIgemVyb3MgPSBbXG4gICAgJycsXG4gICAgJzAnLFxuICAgICcwMCcsXG4gICAgJzAwMCcsXG4gICAgJzAwMDAnLFxuICAgICcwMDAwMCcsXG4gICAgJzAwMDAwMCcsXG4gICAgJzAwMDAwMDAnLFxuICAgICcwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gIF07XG5cbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXG4gICAgMCwgMCxcbiAgICAyNSwgMTYsIDEyLCAxMSwgMTAsIDksIDgsXG4gICAgOCwgNywgNywgNywgNywgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNVxuICBdO1xuXG4gIHZhciBncm91cEJhc2VzID0gW1xuICAgIDAsIDAsXG4gICAgMzM1NTQ0MzIsIDQzMDQ2NzIxLCAxNjc3NzIxNiwgNDg4MjgxMjUsIDYwNDY2MTc2LCA0MDM1MzYwNywgMTY3NzcyMTYsXG4gICAgNDMwNDY3MjEsIDEwMDAwMDAwLCAxOTQ4NzE3MSwgMzU4MzE4MDgsIDYyNzQ4NTE3LCA3NTI5NTM2LCAxMTM5MDYyNSxcbiAgICAxNjc3NzIxNiwgMjQxMzc1NjksIDM0MDEyMjI0LCA0NzA0NTg4MSwgNjQwMDAwMDAsIDQwODQxMDEsIDUxNTM2MzIsXG4gICAgNjQzNjM0MywgNzk2MjYyNCwgOTc2NTYyNSwgMTE4ODEzNzYsIDE0MzQ4OTA3LCAxNzIxMDM2OCwgMjA1MTExNDksXG4gICAgMjQzMDAwMDAsIDI4NjI5MTUxLCAzMzU1NDQzMiwgMzkxMzUzOTMsIDQ1NDM1NDI0LCA1MjUyMTg3NSwgNjA0NjYxNzZcbiAgXTtcblxuICBCTi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYmFzZSwgcGFkZGluZykge1xuICAgIGJhc2UgPSBiYXNlIHx8IDEwO1xuICAgIHBhZGRpbmcgPSBwYWRkaW5nIHwgMCB8fCAxO1xuXG4gICAgdmFyIG91dDtcbiAgICBpZiAoYmFzZSA9PT0gMTYgfHwgYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIG9mZiA9IDA7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgICAgdmFyIHdvcmQgPSAoKCh3IDw8IG9mZikgfCBjYXJyeSkgJiAweGZmZmZmZikudG9TdHJpbmcoMTYpO1xuICAgICAgICBjYXJyeSA9ICh3ID4+PiAoMjQgLSBvZmYpKSAmIDB4ZmZmZmZmO1xuICAgICAgICBpZiAoY2FycnkgIT09IDAgfHwgaSAhPT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbNiAtIHdvcmQubGVuZ3RoXSArIHdvcmQgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gd29yZCArIG91dDtcbiAgICAgICAgfVxuICAgICAgICBvZmYgKz0gMjtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgICBvdXQgPSBjYXJyeS50b1N0cmluZygxNikgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNikge1xuICAgICAgLy8gdmFyIGdyb3VwU2l6ZSA9IE1hdGguZmxvb3IoQk4ud29yZFNpemUgKiBNYXRoLkxOMiAvIE1hdGgubG9nKGJhc2UpKTtcbiAgICAgIHZhciBncm91cFNpemUgPSBncm91cFNpemVzW2Jhc2VdO1xuICAgICAgLy8gdmFyIGdyb3VwQmFzZSA9IE1hdGgucG93KGJhc2UsIGdyb3VwU2l6ZSk7XG4gICAgICB2YXIgZ3JvdXBCYXNlID0gZ3JvdXBCYXNlc1tiYXNlXTtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIGMgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjLm5lZ2F0aXZlID0gMDtcbiAgICAgIHdoaWxlICghYy5pc1plcm8oKSkge1xuICAgICAgICB2YXIgciA9IGMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgICB2YXIgbGl0dGxlRW5kaWFuID0gZW5kaWFuID09PSAnbGUnO1xuICAgIHZhciByZXMgPSBuZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7XG5cbiAgICB2YXIgYiwgaTtcbiAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKTtcbiAgICBpZiAoIWxpdHRsZUVuZGlhbikge1xuICAgICAgLy8gQXNzdW1lIGJpZy1lbmRpYW5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXFMZW5ndGggLSBieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW3JlcUxlbmd0aCAtIGkgLSAxXSA9IGI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tpXSA9IGI7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBpIDwgcmVxTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSAmICgxIDw8IHdiaXQpKSA+Pj4gd2JpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdztcbiAgfVxuXG4gIC8vIE51bWJlciBvZiB0cmFpbGluZyB6ZXJvIGJpdHNcbiAgQk4ucHJvdG90eXBlLnplcm9CaXRzID0gZnVuY3Rpb24gemVyb0JpdHMgKCkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gMDtcblxuICAgIHZhciByID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBiID0gdGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7XG4gICAgICByICs9IGI7XG4gICAgICBpZiAoYiAhPT0gMjYpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIGJ5dGVMZW5ndGggKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKSAvIDgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1R3b3MgPSBmdW5jdGlvbiB0b1R3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVR3b3MgPSBmdW5jdGlvbiBmcm9tVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy50ZXN0bih3aWR0aCAtIDEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RuKHdpZHRoKS5pYWRkbigxKS5pbmVnKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gaXNOZWcgKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlICE9PSAwO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluZWcgPSBmdW5jdGlvbiBpbmVnICgpIHtcbiAgICBpZiAoIXRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVvciA9IGZ1bmN0aW9uIGl1b3IgKG51bSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSB8IG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXhvciA9IGZ1bmN0aW9uIGl4b3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1eG9yKG51bSk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5peG9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51eG9yID0gZnVuY3Rpb24gdXhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKTtcbiAgfTtcblxuICAvLyBOb3QgYGB0aGlzYGAgd2l0aCBgYHdpZHRoYGAgYml0d2lkdGhcbiAgQk4ucHJvdG90eXBlLmlub3RuID0gZnVuY3Rpb24gaW5vdG4gKHdpZHRoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgJiYgd2lkdGggPj0gMCk7XG5cbiAgICB2YXIgYnl0ZXNOZWVkZWQgPSBNYXRoLmNlaWwod2lkdGggLyAyNikgfCAwO1xuICAgIHZhciBiaXRzTGVmdCA9IHdpZHRoICUgMjY7XG5cbiAgICAvLyBFeHRlbmQgdGhlIGJ1ZmZlciB3aXRoIGxlYWRpbmcgemVyb2VzXG4gICAgdGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtcblxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIGJ5dGVzTmVlZGVkLS07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRlIHdvcmRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlc05lZWRlZDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRoZSByZXNpZHVlXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgKDB4M2ZmZmZmZiA+PiAoMjYgLSBiaXRzTGVmdCkpO1xuICAgIH1cblxuICAgIC8vIEFuZCByZW1vdmUgbGVhZGluZyB6ZXJvZXNcbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gc21hbGxNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIHZhciBsZW4gPSAoc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoKSB8IDA7XG4gICAgb3V0Lmxlbmd0aCA9IGxlbjtcbiAgICBsZW4gPSAobGVuIC0gMSkgfCAwO1xuXG4gICAgLy8gUGVlbCBvbmUgaXRlcmF0aW9uIChjb21waWxlciBjYW4ndCBkbyBpdCwgYmVjYXVzZSBvZiBjb2RlIGNvbXBsZXhpdHkpXG4gICAgdmFyIGEgPSBzZWxmLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgYiA9IG51bS53b3Jkc1swXSB8IDA7XG4gICAgdmFyIHIgPSBhICogYjtcblxuICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgdmFyIGNhcnJ5ID0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICBvdXQud29yZHNbMF0gPSBsbztcblxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gY2FycnkgPj4+IDI2O1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSAoayAtIGopIHwgMDtcbiAgICAgICAgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgciA9IGEgKiBiICsgcndvcmQ7XG4gICAgICAgIG5jYXJyeSArPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgICByd29yZCA9IHIgJiAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZCB8IDA7XG4gICAgICBjYXJyeSA9IG5jYXJyeSB8IDA7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2FycnkgfCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNobG4gPSBmdW5jdGlvbiBpc2hsbiAoYml0cykge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHQgaW4tcGxhY2VcbiAgLy8gTk9URTogYGhpbnRgIGlzIGEgbG93ZXN0IGJpdCBiZWZvcmUgdHJhaWxpbmcgemVyb2VzXG4gIC8vIE5PVEU6IGlmIGBleHRlbmRlZGAgaXMgcHJlc2VudCAtIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggZGVzdHJveWVkIGJpdHNcbiAgQk4ucHJvdG90eXBlLml1c2hybiA9IGZ1bmN0aW9uIGl1c2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIGg7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIGggPSAoaGludCAtIChoaW50ICUgMjYpKSAvIDI2O1xuICAgIH0gZWxzZSB7XG4gICAgICBoID0gMDtcbiAgICB9XG5cbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IE1hdGgubWluKChiaXRzIC0gcikgLyAyNiwgdGhpcy5sZW5ndGgpO1xuICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgIHZhciBtYXNrZWRXb3JkcyA9IGV4dGVuZGVkO1xuXG4gICAgaCAtPSBzO1xuICAgIGggPSBNYXRoLm1heCgwLCBoKTtcblxuICAgIC8vIEV4dGVuZGVkIG1vZGUsIGNvcHkgbWFza2VkIHBhcnRcbiAgICBpZiAobWFza2VkV29yZHMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIG1hc2tlZFdvcmRzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICAgIG1hc2tlZFdvcmRzLmxlbmd0aCA9IHM7XG4gICAgfVxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIC8vIE5vLW9wLCB3ZSBzaG91bGQgbm90IG1vdmUgYW55dGhpbmcgYXQgYWxsXG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IHMpIHtcbiAgICAgIHRoaXMubGVuZ3RoIC09IHM7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpICsgc107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDAgJiYgKGNhcnJ5ICE9PSAwIHx8IGkgPj0gaCk7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAoY2FycnkgPDwgKDI2IC0gcikpIHwgKHdvcmQgPj4+IHIpO1xuICAgICAgY2FycnkgPSB3b3JkICYgbWFzaztcbiAgICB9XG5cbiAgICAvLyBQdXNoIGNhcnJpZWQgYml0cyBhcyBhIG1hc2tcbiAgICBpZiAobWFza2VkV29yZHMgJiYgY2FycnkgIT09IDApIHtcbiAgICAgIG1hc2tlZFdvcmRzLndvcmRzW21hc2tlZFdvcmRzLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyLnN0cmlwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NCBpbnN0YW5jZVxuICAgICAgICByLnN0cmlwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByIGlzIEJOIHY1IGluc3RhbmNlXG4gICAgICAgIHIuX3N0cmlwKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0KSB7XG4gICAgaW5wdXQuaXVzaHJuKHRoaXMubiwgMCwgb3V0KTtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIHJldHVybiBudW0uaW11bCh0aGlzLmspO1xuICB9O1xuXG4gIGZ1bmN0aW9uIEsyNTYgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdrMjU2JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZicpO1xuICB9XG4gIGluaGVyaXRzKEsyNTYsIE1QcmltZSk7XG5cbiAgSzI1Ni5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dHB1dCkge1xuICAgIC8vIDI1NiA9IDkgKiAyNiArIDIyXG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZjtcblxuICAgIHZhciBvdXRMZW4gPSBNYXRoLm1pbihpbnB1dC5sZW5ndGgsIDkpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0TGVuOyBpKyspIHtcbiAgICAgIG91dHB1dC53b3Jkc1tpXSA9IGlucHV0LndvcmRzW2ldO1xuICAgIH1cbiAgICBvdXRwdXQubGVuZ3RoID0gb3V0TGVuO1xuXG4gICAgaWYgKGlucHV0Lmxlbmd0aCA8PSA5KSB7XG4gICAgICBpbnB1dC53b3Jkc1swXSA9IDA7XG4gICAgICBpbnB1dC5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNoaWZ0IGJ5IDkgbGltYnNcbiAgICB2YXIgcHJldiA9IGlucHV0LndvcmRzWzldO1xuICAgIG91dHB1dC53b3Jkc1tvdXRwdXQubGVuZ3RoKytdID0gcHJldiAmIG1hc2s7XG5cbiAgICBmb3IgKGkgPSAxMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmV4dCA9IGlucHV0LndvcmRzW2ldIHwgMDtcbiAgICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSAoKG5leHQgJiBtYXNrKSA8PCA0KSB8IChwcmV2ID4+PiAyMik7XG4gICAgICBwcmV2ID0gbmV4dDtcbiAgICB9XG4gICAgcHJldiA+Pj49IDIyO1xuICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSBwcmV2O1xuICAgIGlmIChwcmV2ID09PSAwICYmIGlucHV0Lmxlbmd0aCA+IDEwKSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gMTA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSA5O1xuICAgIH1cbiAgfTtcblxuICBLMjU2LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxMDAwMDAzZDEgPSBbIDB4NDAsIDB4M2QxIF1cbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aF0gPSAwO1xuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoICsgMV0gPSAwO1xuICAgIG51bS5sZW5ndGggKz0gMjtcblxuICAgIC8vIGJvdW5kZWQgYXQ6IDB4NDAgKiAweDNmZmZmZmYgKyAweDNkMCA9IDB4MTAwMDAwMzkwXG4gICAgdmFyIGxvID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSBudW0ud29yZHNbaV0gfCAwO1xuICAgICAgbG8gKz0gdyAqIDB4M2QxO1xuICAgICAgbnVtLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICBsbyA9IHcgKiAweDQwICsgKChsbyAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICB9XG5cbiAgICAvLyBGYXN0IGxlbmd0aCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIGZ1bmN0aW9uIFAyMjQgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMjI0JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScpO1xuICB9XG4gIGluaGVyaXRzKFAyMjQsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDE5MiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AxOTInLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDE5MiwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMjU1MTkgKCkge1xuICAgIC8vIDIgXiAyNTUgLSAxOVxuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICcyNTUxOScsXG4gICAgICAnN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCcpO1xuICB9XG4gIGluaGVyaXRzKFAyNTUxOSwgTVByaW1lKTtcblxuICBQMjU1MTkucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEzXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGhpID0gKG51bS53b3Jkc1tpXSB8IDApICogMHgxMyArIGNhcnJ5O1xuICAgICAgdmFyIGxvID0gaGkgJiAweDNmZmZmZmY7XG4gICAgICBoaSA+Pj49IDI2O1xuXG4gICAgICBudW0ud29yZHNbaV0gPSBsbztcbiAgICAgIGNhcnJ5ID0gaGk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgbnVtLndvcmRzW251bS5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICAvLyBFeHBvcnRlZCBtb3N0bHkgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHVzZSBwbGFpbiBuYW1lIGluc3RlYWRcbiAgQk4uX3ByaW1lID0gZnVuY3Rpb24gcHJpbWUgKG5hbWUpIHtcbiAgICAvLyBDYWNoZWQgdmVyc2lvbiBvZiBwcmltZVxuICAgIGlmIChwcmltZXNbbmFtZV0pIHJldHVybiBwcmltZXNbbmFtZV07XG5cbiAgICB2YXIgcHJpbWU7XG4gICAgaWYgKG5hbWUgPT09ICdrMjU2Jykge1xuICAgICAgcHJpbWUgPSBuZXcgSzI1NigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyMjQnKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjI0KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDE5MicpIHtcbiAgICAgIHByaW1lID0gbmV3IFAxOTIoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjU1MTknKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjU1MTkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByaW1lICcgKyBuYW1lKTtcbiAgICB9XG4gICAgcHJpbWVzW25hbWVdID0gcHJpbWU7XG5cbiAgICByZXR1cm4gcHJpbWU7XG4gIH07XG5cbiAgLy9cbiAgLy8gQmFzZSByZWR1Y3Rpb24gZW5naW5lXG4gIC8vXG4gIGZ1bmN0aW9uIFJlZCAobSkge1xuICAgIGlmICh0eXBlb2YgbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBwcmltZSA9IEJOLl9wcmltZShtKTtcbiAgICAgIHRoaXMubSA9IHByaW1lLnA7XG4gICAgICB0aGlzLnByaW1lID0gcHJpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChtLmd0bigxKSwgJ21vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMScpO1xuICAgICAgdGhpcy5tID0gbTtcbiAgICAgIHRoaXMucHJpbWUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTEgPSBmdW5jdGlvbiBfdmVyaWZ5MSAoYSkge1xuICAgIGFzc2VydChhLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQsICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MiA9IGZ1bmN0aW9uIF92ZXJpZnkyIChhLCBiKSB7XG4gICAgYXNzZXJ0KChhLm5lZ2F0aXZlIHwgYi5uZWdhdGl2ZSkgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCAmJiBhLnJlZCA9PT0gYi5yZWQsXG4gICAgICAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW1vZCA9IGZ1bmN0aW9uIGltb2QgKGEpIHtcbiAgICBpZiAodGhpcy5wcmltZSkgcmV0dXJuIHRoaXMucHJpbWUuaXJlZHVjZShhKS5fZm9yY2VSZWQodGhpcyk7XG4gICAgcmV0dXJuIGEudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm0uc3ViKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5hZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlhZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLnN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlzdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNobCA9IGZ1bmN0aW9uIHNobCAoYSwgbnVtKSB7XG4gICAgdGhpcy5fdmVyaWZ5MShhKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEudXNobG4obnVtKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLmltdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEubXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bChhLCBhLmNsb25lKCkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKGEsIGEpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FydCA9IGZ1bmN0aW9uIHNxcnQgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciBtb2QzID0gdGhpcy5tLmFuZGxuKDMpO1xuICAgIGFzc2VydChtb2QzICUgMiA9PT0gMSk7XG5cbiAgICAvLyBGYXN0IGNhc2VcbiAgICBpZiAobW9kMyA9PT0gMykge1xuICAgICAgdmFyIHBvdyA9IHRoaXMubS5hZGQobmV3IEJOKDEpKS5pdXNocm4oMik7XG4gICAgICByZXR1cm4gdGhpcy5wb3coYSwgcG93KTtcbiAgICB9XG5cbiAgICAvLyBUb25lbGxpLVNoYW5rcyBhbGdvcml0aG0gKFRvdGFsbHkgdW5vcHRpbWl6ZWQgYW5kIHNsb3cpXG4gICAgLy9cbiAgICAvLyBGaW5kIFEgYW5kIFMsIHRoYXQgUSAqIDIgXiBTID0gKFAgLSAxKVxuICAgIHZhciBxID0gdGhpcy5tLnN1Ym4oMSk7XG4gICAgdmFyIHMgPSAwO1xuICAgIHdoaWxlICghcS5pc1plcm8oKSAmJiBxLmFuZGxuKDEpID09PSAwKSB7XG4gICAgICBzKys7XG4gICAgICBxLml1c2hybigxKTtcbiAgICB9XG4gICAgYXNzZXJ0KCFxLmlzWmVybygpKTtcblxuICAgIHZhciBvbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgdmFyIG5PbmUgPSBvbmUucmVkTmVnKCk7XG5cbiAgICAvLyBGaW5kIHF1YWRyYXRpYyBub24tcmVzaWR1ZVxuICAgIC8vIE5PVEU6IE1heCBpcyBzdWNoIGJlY2F1c2Ugb2YgZ2VuZXJhbGl6ZWQgUmllbWFubiBoeXBvdGhlc2lzLlxuICAgIHZhciBscG93ID0gdGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpO1xuICAgIHZhciB6ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIHogPSBuZXcgQk4oMiAqIHogKiB6KS50b1JlZCh0aGlzKTtcblxuICAgIHdoaWxlICh0aGlzLnBvdyh6LCBscG93KS5jbXAobk9uZSkgIT09IDApIHtcbiAgICAgIHoucmVkSUFkZChuT25lKTtcbiAgICB9XG5cbiAgICB2YXIgYyA9IHRoaXMucG93KHosIHEpO1xuICAgIHZhciByID0gdGhpcy5wb3coYSwgcS5hZGRuKDEpLml1c2hybigxKSk7XG4gICAgdmFyIHQgPSB0aGlzLnBvdyhhLCBxKTtcbiAgICB2YXIgbSA9IHM7XG4gICAgd2hpbGUgKHQuY21wKG9uZSkgIT09IDApIHtcbiAgICAgIHZhciB0bXAgPSB0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IHRtcC5jbXAob25lKSAhPT0gMDsgaSsrKSB7XG4gICAgICAgIHRtcCA9IHRtcC5yZWRTcXIoKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydChpIDwgbSk7XG4gICAgICB2YXIgYiA9IHRoaXMucG93KGMsIG5ldyBCTigxKS5pdXNobG4obSAtIGkgLSAxKSk7XG5cbiAgICAgIHIgPSByLnJlZE11bChiKTtcbiAgICAgIGMgPSBiLnJlZFNxcigpO1xuICAgICAgdCA9IHQucmVkTXVsKGMpO1xuICAgICAgbSA9IGk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIHZhciBpbnYgPSBhLl9pbnZtcCh0aGlzLm0pO1xuICAgIGlmIChpbnYubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGludi5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludikucmVkTmVnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KTtcbiAgICB9XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKGEsIG51bSkge1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgaWYgKG51bS5jbXBuKDEpID09PSAwKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIHdpbmRvd1NpemUgPSA0O1xuICAgIHZhciB3bmQgPSBuZXcgQXJyYXkoMSA8PCB3aW5kb3dTaXplKTtcbiAgICB3bmRbMF0gPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgd25kWzFdID0gYTtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IHduZC5sZW5ndGg7IGkrKykge1xuICAgICAgd25kW2ldID0gdGhpcy5tdWwod25kW2kgLSAxXSwgYSk7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IHduZFswXTtcbiAgICB2YXIgY3VycmVudCA9IDA7XG4gICAgdmFyIGN1cnJlbnRMZW4gPSAwO1xuICAgIHZhciBzdGFydCA9IG51bS5iaXRMZW5ndGgoKSAlIDI2O1xuICAgIGlmIChzdGFydCA9PT0gMCkge1xuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSBudW0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gbnVtLndvcmRzW2ldO1xuICAgICAgZm9yICh2YXIgaiA9IHN0YXJ0IC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgdmFyIGJpdCA9ICh3b3JkID4+IGopICYgMTtcbiAgICAgICAgaWYgKHJlcyAhPT0gd25kWzBdKSB7XG4gICAgICAgICAgcmVzID0gdGhpcy5zcXIocmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXQgPT09IDAgJiYgY3VycmVudCA9PT0gMCkge1xuICAgICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudCA8PD0gMTtcbiAgICAgICAgY3VycmVudCB8PSBiaXQ7XG4gICAgICAgIGN1cnJlbnRMZW4rKztcbiAgICAgICAgaWYgKGN1cnJlbnRMZW4gIT09IHdpbmRvd1NpemUgJiYgKGkgIT09IDAgfHwgaiAhPT0gMCkpIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHRoaXMubXVsKHJlcywgd25kW2N1cnJlbnRdKTtcbiAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgIGN1cnJlbnQgPSAwO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICB2YXIgciA9IG51bS51bW9kKHRoaXMubSk7XG5cbiAgICByZXR1cm4gciA9PT0gbnVtID8gci5jbG9uZSgpIDogcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByZXMgPSBudW0uY2xvbmUoKTtcbiAgICByZXMucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vXG4gIC8vIE1vbnRnb21lcnkgbWV0aG9kIGVuZ2luZVxuICAvL1xuXG4gIEJOLm1vbnQgPSBmdW5jdGlvbiBtb250IChudW0pIHtcbiAgICByZXR1cm4gbmV3IE1vbnQobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBNb250IChtKSB7XG4gICAgUmVkLmNhbGwodGhpcywgbSk7XG5cbiAgICB0aGlzLnNoaWZ0ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIGlmICh0aGlzLnNoaWZ0ICUgMjYgIT09IDApIHtcbiAgICAgIHRoaXMuc2hpZnQgKz0gMjYgLSAodGhpcy5zaGlmdCAlIDI2KTtcbiAgICB9XG5cbiAgICB0aGlzLnIgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpO1xuICAgIHRoaXMucjIgPSB0aGlzLmltb2QodGhpcy5yLnNxcigpKTtcbiAgICB0aGlzLnJpbnYgPSB0aGlzLnIuX2ludm1wKHRoaXMubSk7XG5cbiAgICB0aGlzLm1pbnYgPSB0aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSk7XG4gICAgdGhpcy5taW52ID0gdGhpcy5taW52LnVtb2QodGhpcy5yKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLnIuc3ViKHRoaXMubWludik7XG4gIH1cbiAgaW5oZXJpdHMoTW9udCwgUmVkKTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmltb2QobnVtLnVzaGxuKHRoaXMuc2hpZnQpKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgciA9IHRoaXMuaW1vZChudW0ubXVsKHRoaXMucmludikpO1xuICAgIHIucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHtcbiAgICAgIGEud29yZHNbMF0gPSAwO1xuICAgICAgYS5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgdmFyIHQgPSBhLmltdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG5cbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMCkuX2ZvcmNlUmVkKHRoaXMpO1xuXG4gICAgdmFyIHQgPSBhLm11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgLy8gKEFSKV4tMSAqIFJeMiA9IChBXi0xICogUl4tMSkgKiBSXjIgPSBBXi0xICogUlxuICAgIHZhciByZXMgPSB0aGlzLmltb2QoYS5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpO1xuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xufSkodHlwZW9mIG1vZHVsZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbW9kdWxlLCB0aGlzKTtcbiIsInZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJylcbnZhciBtZ2YgPSByZXF1aXJlKCcuL21nZicpXG52YXIgeG9yID0gcmVxdWlyZSgnLi94b3InKVxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIGNydCA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktcnNhJylcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxudmFyIHdpdGhQdWJsaWMgPSByZXF1aXJlKCcuL3dpdGhQdWJsaWMnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcHJpdmF0ZURlY3J5cHQgKHByaXZhdGVLZXksIGVuYywgcmV2ZXJzZSkge1xuICB2YXIgcGFkZGluZ1xuICBpZiAocHJpdmF0ZUtleS5wYWRkaW5nKSB7XG4gICAgcGFkZGluZyA9IHByaXZhdGVLZXkucGFkZGluZ1xuICB9IGVsc2UgaWYgKHJldmVyc2UpIHtcbiAgICBwYWRkaW5nID0gMVxuICB9IGVsc2Uge1xuICAgIHBhZGRpbmcgPSA0XG4gIH1cblxuICB2YXIga2V5ID0gcGFyc2VLZXlzKHByaXZhdGVLZXkpXG4gIHZhciBrID0ga2V5Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIGlmIChlbmMubGVuZ3RoID4gayB8fCBuZXcgQk4oZW5jKS5jbXAoa2V5Lm1vZHVsdXMpID49IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKVxuICB9XG4gIHZhciBtc2dcbiAgaWYgKHJldmVyc2UpIHtcbiAgICBtc2cgPSB3aXRoUHVibGljKG5ldyBCTihlbmMpLCBrZXkpXG4gIH0gZWxzZSB7XG4gICAgbXNnID0gY3J0KGVuYywga2V5KVxuICB9XG4gIHZhciB6QnVmZmVyID0gQnVmZmVyLmFsbG9jKGsgLSBtc2cubGVuZ3RoKVxuICBtc2cgPSBCdWZmZXIuY29uY2F0KFt6QnVmZmVyLCBtc2ddLCBrKVxuICBpZiAocGFkZGluZyA9PT0gNCkge1xuICAgIHJldHVybiBvYWVwKGtleSwgbXNnKVxuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDEpIHtcbiAgICByZXR1cm4gcGtjczEoa2V5LCBtc2csIHJldmVyc2UpXG4gIH0gZWxzZSBpZiAocGFkZGluZyA9PT0gMykge1xuICAgIHJldHVybiBtc2dcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gcGFkZGluZycpXG4gIH1cbn1cblxuZnVuY3Rpb24gb2FlcCAoa2V5LCBtc2cpIHtcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgdmFyIGlIYXNoID0gY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShCdWZmZXIuYWxsb2MoMCkpLmRpZ2VzdCgpXG4gIHZhciBoTGVuID0gaUhhc2gubGVuZ3RoXG4gIGlmIChtc2dbMF0gIT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKVxuICB9XG4gIHZhciBtYXNrZWRTZWVkID0gbXNnLnNsaWNlKDEsIGhMZW4gKyAxKVxuICB2YXIgbWFza2VkRGIgPSBtc2cuc2xpY2UoaExlbiArIDEpXG4gIHZhciBzZWVkID0geG9yKG1hc2tlZFNlZWQsIG1nZihtYXNrZWREYiwgaExlbikpXG4gIHZhciBkYiA9IHhvcihtYXNrZWREYiwgbWdmKHNlZWQsIGsgLSBoTGVuIC0gMSkpXG4gIGlmIChjb21wYXJlKGlIYXNoLCBkYi5zbGljZSgwLCBoTGVuKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKVxuICB9XG4gIHZhciBpID0gaExlblxuICB3aGlsZSAoZGJbaV0gPT09IDApIHtcbiAgICBpKytcbiAgfVxuICBpZiAoZGJbaSsrXSAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpXG4gIH1cbiAgcmV0dXJuIGRiLnNsaWNlKGkpXG59XG5cbmZ1bmN0aW9uIHBrY3MxIChrZXksIG1zZywgcmV2ZXJzZSkge1xuICB2YXIgcDEgPSBtc2cuc2xpY2UoMCwgMilcbiAgdmFyIGkgPSAyXG4gIHZhciBzdGF0dXMgPSAwXG4gIHdoaWxlIChtc2dbaSsrXSAhPT0gMCkge1xuICAgIGlmIChpID49IG1zZy5sZW5ndGgpIHtcbiAgICAgIHN0YXR1cysrXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuICB2YXIgcHMgPSBtc2cuc2xpY2UoMiwgaSAtIDEpXG5cbiAgaWYgKChwMS50b1N0cmluZygnaGV4JykgIT09ICcwMDAyJyAmJiAhcmV2ZXJzZSkgfHwgKHAxLnRvU3RyaW5nKCdoZXgnKSAhPT0gJzAwMDEnICYmIHJldmVyc2UpKSB7XG4gICAgc3RhdHVzKytcbiAgfVxuICBpZiAocHMubGVuZ3RoIDwgOCkge1xuICAgIHN0YXR1cysrXG4gIH1cbiAgaWYgKHN0YXR1cykge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpXG4gIH1cbiAgcmV0dXJuIG1zZy5zbGljZShpKVxufVxuZnVuY3Rpb24gY29tcGFyZSAoYSwgYikge1xuICBhID0gQnVmZmVyLmZyb20oYSlcbiAgYiA9IEJ1ZmZlci5mcm9tKGIpXG4gIHZhciBkaWYgPSAwXG4gIHZhciBsZW4gPSBhLmxlbmd0aFxuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgZGlmKytcbiAgICBsZW4gPSBNYXRoLm1pbihhLmxlbmd0aCwgYi5sZW5ndGgpXG4gIH1cbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgZGlmICs9IChhW2ldIF4gYltpXSlcbiAgfVxuICByZXR1cm4gZGlmXG59XG4iLCJ2YXIgcGFyc2VLZXlzID0gcmVxdWlyZSgncGFyc2UtYXNuMScpXG52YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpXG52YXIgY3JlYXRlSGFzaCA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoJylcbnZhciBtZ2YgPSByZXF1aXJlKCcuL21nZicpXG52YXIgeG9yID0gcmVxdWlyZSgnLi94b3InKVxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIHdpdGhQdWJsaWMgPSByZXF1aXJlKCcuL3dpdGhQdWJsaWMnKVxudmFyIGNydCA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktcnNhJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHB1YmxpY0VuY3J5cHQgKHB1YmxpY0tleSwgbXNnLCByZXZlcnNlKSB7XG4gIHZhciBwYWRkaW5nXG4gIGlmIChwdWJsaWNLZXkucGFkZGluZykge1xuICAgIHBhZGRpbmcgPSBwdWJsaWNLZXkucGFkZGluZ1xuICB9IGVsc2UgaWYgKHJldmVyc2UpIHtcbiAgICBwYWRkaW5nID0gMVxuICB9IGVsc2Uge1xuICAgIHBhZGRpbmcgPSA0XG4gIH1cbiAgdmFyIGtleSA9IHBhcnNlS2V5cyhwdWJsaWNLZXkpXG4gIHZhciBwYWRkZWRNc2dcbiAgaWYgKHBhZGRpbmcgPT09IDQpIHtcbiAgICBwYWRkZWRNc2cgPSBvYWVwKGtleSwgbXNnKVxuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDEpIHtcbiAgICBwYWRkZWRNc2cgPSBwa2NzMShrZXksIG1zZywgcmV2ZXJzZSlcbiAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAzKSB7XG4gICAgcGFkZGVkTXNnID0gbmV3IEJOKG1zZylcbiAgICBpZiAocGFkZGVkTXNnLmNtcChrZXkubW9kdWx1cykgPj0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIHRvbyBsb25nIGZvciBtb2R1bHVzJylcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIHBhZGRpbmcnKVxuICB9XG4gIGlmIChyZXZlcnNlKSB7XG4gICAgcmV0dXJuIGNydChwYWRkZWRNc2csIGtleSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gd2l0aFB1YmxpYyhwYWRkZWRNc2csIGtleSlcbiAgfVxufVxuXG5mdW5jdGlvbiBvYWVwIChrZXksIG1zZykge1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKVxuICB2YXIgbUxlbiA9IG1zZy5sZW5ndGhcbiAgdmFyIGlIYXNoID0gY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShCdWZmZXIuYWxsb2MoMCkpLmRpZ2VzdCgpXG4gIHZhciBoTGVuID0gaUhhc2gubGVuZ3RoXG4gIHZhciBoTGVuMiA9IDIgKiBoTGVuXG4gIGlmIChtTGVuID4gayAtIGhMZW4yIC0gMikge1xuICAgIHRocm93IG5ldyBFcnJvcignbWVzc2FnZSB0b28gbG9uZycpXG4gIH1cbiAgdmFyIHBzID0gQnVmZmVyLmFsbG9jKGsgLSBtTGVuIC0gaExlbjIgLSAyKVxuICB2YXIgZGJsZW4gPSBrIC0gaExlbiAtIDFcbiAgdmFyIHNlZWQgPSByYW5kb21CeXRlcyhoTGVuKVxuICB2YXIgbWFza2VkRGIgPSB4b3IoQnVmZmVyLmNvbmNhdChbaUhhc2gsIHBzLCBCdWZmZXIuYWxsb2MoMSwgMSksIG1zZ10sIGRibGVuKSwgbWdmKHNlZWQsIGRibGVuKSlcbiAgdmFyIG1hc2tlZFNlZWQgPSB4b3Ioc2VlZCwgbWdmKG1hc2tlZERiLCBoTGVuKSlcbiAgcmV0dXJuIG5ldyBCTihCdWZmZXIuY29uY2F0KFtCdWZmZXIuYWxsb2MoMSksIG1hc2tlZFNlZWQsIG1hc2tlZERiXSwgaykpXG59XG5mdW5jdGlvbiBwa2NzMSAoa2V5LCBtc2csIHJldmVyc2UpIHtcbiAgdmFyIG1MZW4gPSBtc2cubGVuZ3RoXG4gIHZhciBrID0ga2V5Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIGlmIChtTGVuID4gayAtIDExKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXNzYWdlIHRvbyBsb25nJylcbiAgfVxuICB2YXIgcHNcbiAgaWYgKHJldmVyc2UpIHtcbiAgICBwcyA9IEJ1ZmZlci5hbGxvYyhrIC0gbUxlbiAtIDMsIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgcHMgPSBub25aZXJvKGsgLSBtTGVuIC0gMylcbiAgfVxuICByZXR1cm4gbmV3IEJOKEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5mcm9tKFswLCByZXZlcnNlID8gMSA6IDJdKSwgcHMsIEJ1ZmZlci5hbGxvYygxKSwgbXNnXSwgaykpXG59XG5mdW5jdGlvbiBub25aZXJvIChsZW4pIHtcbiAgdmFyIG91dCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW4pXG4gIHZhciBpID0gMFxuICB2YXIgY2FjaGUgPSByYW5kb21CeXRlcyhsZW4gKiAyKVxuICB2YXIgY3VyID0gMFxuICB2YXIgbnVtXG4gIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgaWYgKGN1ciA9PT0gY2FjaGUubGVuZ3RoKSB7XG4gICAgICBjYWNoZSA9IHJhbmRvbUJ5dGVzKGxlbiAqIDIpXG4gICAgICBjdXIgPSAwXG4gICAgfVxuICAgIG51bSA9IGNhY2hlW2N1cisrXVxuICAgIGlmIChudW0pIHtcbiAgICAgIG91dFtpKytdID0gbnVtXG4gICAgfVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsInZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG5mdW5jdGlvbiB3aXRoUHVibGljIChwYWRkZWRNc2csIGtleSkge1xuICByZXR1cm4gQnVmZmVyLmZyb20ocGFkZGVkTXNnXG4gICAgLnRvUmVkKEJOLm1vbnQoa2V5Lm1vZHVsdXMpKVxuICAgIC5yZWRQb3cobmV3IEJOKGtleS5wdWJsaWNFeHBvbmVudCkpXG4gICAgLmZyb21SZWQoKVxuICAgIC50b0FycmF5KCkpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gd2l0aFB1YmxpY1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4b3IgKGEsIGIpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIGFbaV0gXj0gYltpXVxuICB9XG4gIHJldHVybiBhXG59XG4iLCIndXNlIHN0cmljdCdcblxuLy8gbGltaXQgb2YgQ3J5cHRvLmdldFJhbmRvbVZhbHVlcygpXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ3J5cHRvL2dldFJhbmRvbVZhbHVlc1xudmFyIE1BWF9CWVRFUyA9IDY1NTM2XG5cbi8vIE5vZGUgc3VwcG9ydHMgcmVxdWVzdGluZyB1cCB0byB0aGlzIG51bWJlciBvZiBieXRlc1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvbWFzdGVyL2xpYi9pbnRlcm5hbC9jcnlwdG8vcmFuZG9tLmpzI0w0OFxudmFyIE1BWF9VSU5UMzIgPSA0Mjk0OTY3Mjk1XG5cbmZ1bmN0aW9uIG9sZEJyb3dzZXIgKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXIuXFxuVXNlIENocm9tZSwgRmlyZWZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMScpXG59XG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIGNyeXB0byA9IGdsb2JhbC5jcnlwdG8gfHwgZ2xvYmFsLm1zQ3J5cHRvXG5cbmlmIChjcnlwdG8gJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJhbmRvbUJ5dGVzXG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IG9sZEJyb3dzZXJcbn1cblxuZnVuY3Rpb24gcmFuZG9tQnl0ZXMgKHNpemUsIGNiKSB7XG4gIC8vIHBoYW50b21qcyBuZWVkcyB0byB0aHJvd1xuICBpZiAoc2l6ZSA+IE1BWF9VSU5UMzIpIHRocm93IG5ldyBSYW5nZUVycm9yKCdyZXF1ZXN0ZWQgdG9vIG1hbnkgcmFuZG9tIGJ5dGVzJylcblxuICB2YXIgYnl0ZXMgPSBCdWZmZXIuYWxsb2NVbnNhZmUoc2l6ZSlcblxuICBpZiAoc2l6ZSA+IDApIHsgIC8vIGdldFJhbmRvbVZhbHVlcyBmYWlscyBvbiBJRSBpZiBzaXplID09IDBcbiAgICBpZiAoc2l6ZSA+IE1BWF9CWVRFUykgeyAvLyB0aGlzIGlzIHRoZSBtYXggYnl0ZXMgY3J5cHRvLmdldFJhbmRvbVZhbHVlc1xuICAgICAgLy8gY2FuIGRvIGF0IG9uY2Ugc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS93aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlc1xuICAgICAgZm9yICh2YXIgZ2VuZXJhdGVkID0gMDsgZ2VuZXJhdGVkIDwgc2l6ZTsgZ2VuZXJhdGVkICs9IE1BWF9CWVRFUykge1xuICAgICAgICAvLyBidWZmZXIuc2xpY2UgYXV0b21hdGljYWxseSBjaGVja3MgaWYgdGhlIGVuZCBpcyBwYXN0IHRoZSBlbmQgb2ZcbiAgICAgICAgLy8gdGhlIGJ1ZmZlciBzbyB3ZSBkb24ndCBoYXZlIHRvIGhlcmVcbiAgICAgICAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhieXRlcy5zbGljZShnZW5lcmF0ZWQsIGdlbmVyYXRlZCArIE1BWF9CWVRFUykpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYnl0ZXMpXG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNiKG51bGwsIGJ5dGVzKVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5mdW5jdGlvbiBvbGRCcm93c2VyICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdzZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyXFxudXNlIGNocm9tZSwgRmlyZUZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMScpXG59XG52YXIgc2FmZUJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJylcbnZhciByYW5kb21ieXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJylcbnZhciBCdWZmZXIgPSBzYWZlQnVmZmVyLkJ1ZmZlclxudmFyIGtCdWZmZXJNYXhMZW5ndGggPSBzYWZlQnVmZmVyLmtNYXhMZW5ndGhcbnZhciBjcnlwdG8gPSBnbG9iYWwuY3J5cHRvIHx8IGdsb2JhbC5tc0NyeXB0b1xudmFyIGtNYXhVaW50MzIgPSBNYXRoLnBvdygyLCAzMikgLSAxXG5mdW5jdGlvbiBhc3NlcnRPZmZzZXQgKG9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2Ygb2Zmc2V0ICE9PSAnbnVtYmVyJyB8fCBvZmZzZXQgIT09IG9mZnNldCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29mZnNldCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmIChvZmZzZXQgPiBrTWF4VWludDMyIHx8IG9mZnNldCA8IDApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvZmZzZXQgbXVzdCBiZSBhIHVpbnQzMicpXG4gIH1cblxuICBpZiAob2Zmc2V0ID4ga0J1ZmZlck1heExlbmd0aCB8fCBvZmZzZXQgPiBsZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb2Zmc2V0IG91dCBvZiByYW5nZScpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0U2l6ZSAoc2l6ZSwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJyB8fCBzaXplICE9PSBzaXplKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2l6ZSBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmIChzaXplID4ga01heFVpbnQzMiB8fCBzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NpemUgbXVzdCBiZSBhIHVpbnQzMicpXG4gIH1cblxuICBpZiAoc2l6ZSArIG9mZnNldCA+IGxlbmd0aCB8fCBzaXplID4ga0J1ZmZlck1heExlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdidWZmZXIgdG9vIHNtYWxsJylcbiAgfVxufVxuaWYgKChjcnlwdG8gJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcykgfHwgIXByb2Nlc3MuYnJvd3Nlcikge1xuICBleHBvcnRzLnJhbmRvbUZpbGwgPSByYW5kb21GaWxsXG4gIGV4cG9ydHMucmFuZG9tRmlsbFN5bmMgPSByYW5kb21GaWxsU3luY1xufSBlbHNlIHtcbiAgZXhwb3J0cy5yYW5kb21GaWxsID0gb2xkQnJvd3NlclxuICBleHBvcnRzLnJhbmRvbUZpbGxTeW5jID0gb2xkQnJvd3NlclxufVxuZnVuY3Rpb24gcmFuZG9tRmlsbCAoYnVmLCBvZmZzZXQsIHNpemUsIGNiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikgJiYgIShidWYgaW5zdGFuY2VvZiBnbG9iYWwuVWludDhBcnJheSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZlwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgb3IgVWludDhBcnJheScpXG4gIH1cblxuICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gb2Zmc2V0XG4gICAgb2Zmc2V0ID0gMFxuICAgIHNpemUgPSBidWYubGVuZ3RoXG4gIH0gZWxzZSBpZiAodHlwZW9mIHNpemUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IHNpemVcbiAgICBzaXplID0gYnVmLmxlbmd0aCAtIG9mZnNldFxuICB9IGVsc2UgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiY2JcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKVxuICB9XG4gIGFzc2VydE9mZnNldChvZmZzZXQsIGJ1Zi5sZW5ndGgpXG4gIGFzc2VydFNpemUoc2l6ZSwgb2Zmc2V0LCBidWYubGVuZ3RoKVxuICByZXR1cm4gYWN0dWFsRmlsbChidWYsIG9mZnNldCwgc2l6ZSwgY2IpXG59XG5cbmZ1bmN0aW9uIGFjdHVhbEZpbGwgKGJ1Ziwgb2Zmc2V0LCBzaXplLCBjYikge1xuICBpZiAocHJvY2Vzcy5icm93c2VyKSB7XG4gICAgdmFyIG91ckJ1ZiA9IGJ1Zi5idWZmZXJcbiAgICB2YXIgdWludCA9IG5ldyBVaW50OEFycmF5KG91ckJ1Ziwgb2Zmc2V0LCBzaXplKVxuICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXModWludClcbiAgICBpZiAoY2IpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBjYihudWxsLCBidWYpXG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHJldHVybiBidWZcbiAgfVxuICBpZiAoY2IpIHtcbiAgICByYW5kb21ieXRlcyhzaXplLCBmdW5jdGlvbiAoZXJyLCBieXRlcykge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gY2IoZXJyKVxuICAgICAgfVxuICAgICAgYnl0ZXMuY29weShidWYsIG9mZnNldClcbiAgICAgIGNiKG51bGwsIGJ1ZilcbiAgICB9KVxuICAgIHJldHVyblxuICB9XG4gIHZhciBieXRlcyA9IHJhbmRvbWJ5dGVzKHNpemUpXG4gIGJ5dGVzLmNvcHkoYnVmLCBvZmZzZXQpXG4gIHJldHVybiBidWZcbn1cbmZ1bmN0aW9uIHJhbmRvbUZpbGxTeW5jIChidWYsIG9mZnNldCwgc2l6ZSkge1xuICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBvZmZzZXQgPSAwXG4gIH1cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSAmJiAhKGJ1ZiBpbnN0YW5jZW9mIGdsb2JhbC5VaW50OEFycmF5KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBvciBVaW50OEFycmF5JylcbiAgfVxuXG4gIGFzc2VydE9mZnNldChvZmZzZXQsIGJ1Zi5sZW5ndGgpXG5cbiAgaWYgKHNpemUgPT09IHVuZGVmaW5lZCkgc2l6ZSA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcblxuICBhc3NlcnRTaXplKHNpemUsIG9mZnNldCwgYnVmLmxlbmd0aClcblxuICByZXR1cm4gYWN0dWFsRmlsbChidWYsIG9mZnNldCwgc2l6ZSlcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzLnByb3RvdHlwZSk7IHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzOyBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBjb2RlcyA9IHt9O1xuXG5mdW5jdGlvbiBjcmVhdGVFcnJvclR5cGUoY29kZSwgbWVzc2FnZSwgQmFzZSkge1xuICBpZiAoIUJhc2UpIHtcbiAgICBCYXNlID0gRXJyb3I7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRNZXNzYWdlKGFyZzEsIGFyZzIsIGFyZzMpIHtcbiAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1lc3NhZ2UoYXJnMSwgYXJnMiwgYXJnMyk7XG4gICAgfVxuICB9XG5cbiAgdmFyIE5vZGVFcnJvciA9XG4gIC8qI19fUFVSRV9fKi9cbiAgZnVuY3Rpb24gKF9CYXNlKSB7XG4gICAgX2luaGVyaXRzTG9vc2UoTm9kZUVycm9yLCBfQmFzZSk7XG5cbiAgICBmdW5jdGlvbiBOb2RlRXJyb3IoYXJnMSwgYXJnMiwgYXJnMykge1xuICAgICAgcmV0dXJuIF9CYXNlLmNhbGwodGhpcywgZ2V0TWVzc2FnZShhcmcxLCBhcmcyLCBhcmczKSkgfHwgdGhpcztcbiAgICB9XG5cbiAgICByZXR1cm4gTm9kZUVycm9yO1xuICB9KEJhc2UpO1xuXG4gIE5vZGVFcnJvci5wcm90b3R5cGUubmFtZSA9IEJhc2UubmFtZTtcbiAgTm9kZUVycm9yLnByb3RvdHlwZS5jb2RlID0gY29kZTtcbiAgY29kZXNbY29kZV0gPSBOb2RlRXJyb3I7XG59IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL3YxMC44LjAvbGliL2ludGVybmFsL2Vycm9ycy5qc1xuXG5cbmZ1bmN0aW9uIG9uZU9mKGV4cGVjdGVkLCB0aGluZykge1xuICBpZiAoQXJyYXkuaXNBcnJheShleHBlY3RlZCkpIHtcbiAgICB2YXIgbGVuID0gZXhwZWN0ZWQubGVuZ3RoO1xuICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQubWFwKGZ1bmN0aW9uIChpKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKGkpO1xuICAgIH0pO1xuXG4gICAgaWYgKGxlbiA+IDIpIHtcbiAgICAgIHJldHVybiBcIm9uZSBvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWQuc2xpY2UoMCwgbGVuIC0gMSkuam9pbignLCAnKSwgXCIsIG9yIFwiKSArIGV4cGVjdGVkW2xlbiAtIDFdO1xuICAgIH0gZWxzZSBpZiAobGVuID09PSAyKSB7XG4gICAgICByZXR1cm4gXCJvbmUgb2YgXCIuY29uY2F0KHRoaW5nLCBcIiBcIikuY29uY2F0KGV4cGVjdGVkWzBdLCBcIiBvciBcIikuY29uY2F0KGV4cGVjdGVkWzFdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwib2YgXCIuY29uY2F0KHRoaW5nLCBcIiBcIikuY29uY2F0KGV4cGVjdGVkWzBdKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFwib2YgXCIuY29uY2F0KHRoaW5nLCBcIiBcIikuY29uY2F0KFN0cmluZyhleHBlY3RlZCkpO1xuICB9XG59IC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9zdGFydHNXaXRoXG5cblxuZnVuY3Rpb24gc3RhcnRzV2l0aChzdHIsIHNlYXJjaCwgcG9zKSB7XG4gIHJldHVybiBzdHIuc3Vic3RyKCFwb3MgfHwgcG9zIDwgMCA/IDAgOiArcG9zLCBzZWFyY2gubGVuZ3RoKSA9PT0gc2VhcmNoO1xufSAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvZW5kc1dpdGhcblxuXG5mdW5jdGlvbiBlbmRzV2l0aChzdHIsIHNlYXJjaCwgdGhpc19sZW4pIHtcbiAgaWYgKHRoaXNfbGVuID09PSB1bmRlZmluZWQgfHwgdGhpc19sZW4gPiBzdHIubGVuZ3RoKSB7XG4gICAgdGhpc19sZW4gPSBzdHIubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIHN0ci5zdWJzdHJpbmcodGhpc19sZW4gLSBzZWFyY2gubGVuZ3RoLCB0aGlzX2xlbikgPT09IHNlYXJjaDtcbn0gLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nL2luY2x1ZGVzXG5cblxuZnVuY3Rpb24gaW5jbHVkZXMoc3RyLCBzZWFyY2gsIHN0YXJ0KSB7XG4gIGlmICh0eXBlb2Ygc3RhcnQgIT09ICdudW1iZXInKSB7XG4gICAgc3RhcnQgPSAwO1xuICB9XG5cbiAgaWYgKHN0YXJ0ICsgc2VhcmNoLmxlbmd0aCA+IHN0ci5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0ci5pbmRleE9mKHNlYXJjaCwgc3RhcnQpICE9PSAtMTtcbiAgfVxufVxuXG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9JTlZBTElEX09QVF9WQUxVRScsIGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gJ1RoZSB2YWx1ZSBcIicgKyB2YWx1ZSArICdcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCInICsgbmFtZSArICdcIic7XG59LCBUeXBlRXJyb3IpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfSU5WQUxJRF9BUkdfVFlQRScsIGZ1bmN0aW9uIChuYW1lLCBleHBlY3RlZCwgYWN0dWFsKSB7XG4gIC8vIGRldGVybWluZXI6ICdtdXN0IGJlJyBvciAnbXVzdCBub3QgYmUnXG4gIHZhciBkZXRlcm1pbmVyO1xuXG4gIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT09ICdzdHJpbmcnICYmIHN0YXJ0c1dpdGgoZXhwZWN0ZWQsICdub3QgJykpIHtcbiAgICBkZXRlcm1pbmVyID0gJ211c3Qgbm90IGJlJztcbiAgICBleHBlY3RlZCA9IGV4cGVjdGVkLnJlcGxhY2UoL15ub3QgLywgJycpO1xuICB9IGVsc2Uge1xuICAgIGRldGVybWluZXIgPSAnbXVzdCBiZSc7XG4gIH1cblxuICB2YXIgbXNnO1xuXG4gIGlmIChlbmRzV2l0aChuYW1lLCAnIGFyZ3VtZW50JykpIHtcbiAgICAvLyBGb3IgY2FzZXMgbGlrZSAnZmlyc3QgYXJndW1lbnQnXG4gICAgbXNnID0gXCJUaGUgXCIuY29uY2F0KG5hbWUsIFwiIFwiKS5jb25jYXQoZGV0ZXJtaW5lciwgXCIgXCIpLmNvbmNhdChvbmVPZihleHBlY3RlZCwgJ3R5cGUnKSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHR5cGUgPSBpbmNsdWRlcyhuYW1lLCAnLicpID8gJ3Byb3BlcnR5JyA6ICdhcmd1bWVudCc7XG4gICAgbXNnID0gXCJUaGUgXFxcIlwiLmNvbmNhdChuYW1lLCBcIlxcXCIgXCIpLmNvbmNhdCh0eXBlLCBcIiBcIikuY29uY2F0KGRldGVybWluZXIsIFwiIFwiKS5jb25jYXQob25lT2YoZXhwZWN0ZWQsICd0eXBlJykpO1xuICB9XG5cbiAgbXNnICs9IFwiLiBSZWNlaXZlZCB0eXBlIFwiLmNvbmNhdCh0eXBlb2YgYWN0dWFsKTtcbiAgcmV0dXJuIG1zZztcbn0sIFR5cGVFcnJvcik7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YnLCAnc3RyZWFtLnB1c2goKSBhZnRlciBFT0YnKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQnLCBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gJ1RoZSAnICsgbmFtZSArICcgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCc7XG59KTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UnLCAnUHJlbWF0dXJlIGNsb3NlJyk7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9TVFJFQU1fREVTVFJPWUVEJywgZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuICdDYW5ub3QgY2FsbCAnICsgbmFtZSArICcgYWZ0ZXIgYSBzdHJlYW0gd2FzIGRlc3Ryb3llZCc7XG59KTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX01VTFRJUExFX0NBTExCQUNLJywgJ0NhbGxiYWNrIGNhbGxlZCBtdWx0aXBsZSB0aW1lcycpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfU1RSRUFNX0NBTk5PVF9QSVBFJywgJ0Nhbm5vdCBwaXBlLCBub3QgcmVhZGFibGUnKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQnLCAnd3JpdGUgYWZ0ZXIgZW5kJyk7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9TVFJFQU1fTlVMTF9WQUxVRVMnLCAnTWF5IG5vdCB3cml0ZSBudWxsIHZhbHVlcyB0byBzdHJlYW0nLCBUeXBlRXJyb3IpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfVU5LTk9XTl9FTkNPRElORycsIGZ1bmN0aW9uIChhcmcpIHtcbiAgcmV0dXJuICdVbmtub3duIGVuY29kaW5nOiAnICsgYXJnO1xufSwgVHlwZUVycm9yKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVCcsICdzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCcpO1xubW9kdWxlLmV4cG9ydHMuY29kZXMgPSBjb2RlcztcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuLy8gYSBkdXBsZXggc3RyZWFtIGlzIGp1c3QgYSBzdHJlYW0gdGhhdCBpcyBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZS5cbi8vIFNpbmNlIEpTIGRvZXNuJ3QgaGF2ZSBtdWx0aXBsZSBwcm90b3R5cGFsIGluaGVyaXRhbmNlLCB0aGlzIGNsYXNzXG4vLyBwcm90b3R5cGFsbHkgaW5oZXJpdHMgZnJvbSBSZWFkYWJsZSwgYW5kIHRoZW4gcGFyYXNpdGljYWxseSBmcm9tXG4vLyBXcml0YWJsZS5cbid1c2Ugc3RyaWN0Jztcbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBvYmplY3RLZXlzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24gKG9iaikge1xuICB2YXIga2V5cyA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBrZXlzLnB1c2goa2V5KTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5cbm1vZHVsZS5leHBvcnRzID0gRHVwbGV4O1xuXG52YXIgUmVhZGFibGUgPSByZXF1aXJlKCcuL19zdHJlYW1fcmVhZGFibGUnKTtcblxudmFyIFdyaXRhYmxlID0gcmVxdWlyZSgnLi9fc3RyZWFtX3dyaXRhYmxlJyk7XG5cbnJlcXVpcmUoJ2luaGVyaXRzJykoRHVwbGV4LCBSZWFkYWJsZSk7XG5cbntcbiAgLy8gQWxsb3cgdGhlIGtleXMgYXJyYXkgdG8gYmUgR0MnZWQuXG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhXcml0YWJsZS5wcm90b3R5cGUpO1xuXG4gIGZvciAodmFyIHYgPSAwOyB2IDwga2V5cy5sZW5ndGg7IHYrKykge1xuICAgIHZhciBtZXRob2QgPSBrZXlzW3ZdO1xuICAgIGlmICghRHVwbGV4LnByb3RvdHlwZVttZXRob2RdKSBEdXBsZXgucHJvdG90eXBlW21ldGhvZF0gPSBXcml0YWJsZS5wcm90b3R5cGVbbWV0aG9kXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBEdXBsZXgob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRHVwbGV4KSkgcmV0dXJuIG5ldyBEdXBsZXgob3B0aW9ucyk7XG4gIFJlYWRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gIFdyaXRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gIHRoaXMuYWxsb3dIYWxmT3BlbiA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5yZWFkYWJsZSA9PT0gZmFsc2UpIHRoaXMucmVhZGFibGUgPSBmYWxzZTtcbiAgICBpZiAob3B0aW9ucy53cml0YWJsZSA9PT0gZmFsc2UpIHRoaXMud3JpdGFibGUgPSBmYWxzZTtcblxuICAgIGlmIChvcHRpb25zLmFsbG93SGFsZk9wZW4gPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmFsbG93SGFsZk9wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMub25jZSgnZW5kJywgb25lbmQpO1xuICAgIH1cbiAgfVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRHVwbGV4LnByb3RvdHlwZSwgJ3dyaXRhYmxlSGlnaFdhdGVyTWFyaycsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRHVwbGV4LnByb3RvdHlwZSwgJ3dyaXRhYmxlQnVmZmVyJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSAmJiB0aGlzLl93cml0YWJsZVN0YXRlLmdldEJ1ZmZlcigpO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLCAnd3JpdGFibGVMZW5ndGgnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aDtcbiAgfVxufSk7IC8vIHRoZSBuby1oYWxmLW9wZW4gZW5mb3JjZXJcblxuZnVuY3Rpb24gb25lbmQoKSB7XG4gIC8vIElmIHRoZSB3cml0YWJsZSBzaWRlIGVuZGVkLCB0aGVuIHdlJ3JlIG9rLlxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZCkgcmV0dXJuOyAvLyBubyBtb3JlIGRhdGEgY2FuIGJlIHdyaXR0ZW4uXG4gIC8vIEJ1dCBhbGxvdyBtb3JlIHdyaXRlcyB0byBoYXBwZW4gaW4gdGhpcyB0aWNrLlxuXG4gIHByb2Nlc3MubmV4dFRpY2sob25FbmROVCwgdGhpcyk7XG59XG5cbmZ1bmN0aW9uIG9uRW5kTlQoc2VsZikge1xuICBzZWxmLmVuZCgpO1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRHVwbGV4LnByb3RvdHlwZSwgJ2Rlc3Ryb3llZCcsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtXG4gICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG5cblxuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4vLyBhIHBhc3N0aHJvdWdoIHN0cmVhbS5cbi8vIGJhc2ljYWxseSBqdXN0IHRoZSBtb3N0IG1pbmltYWwgc29ydCBvZiBUcmFuc2Zvcm0gc3RyZWFtLlxuLy8gRXZlcnkgd3JpdHRlbiBjaHVuayBnZXRzIG91dHB1dCBhcy1pcy5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBQYXNzVGhyb3VnaDtcblxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vX3N0cmVhbV90cmFuc2Zvcm0nKTtcblxucmVxdWlyZSgnaW5oZXJpdHMnKShQYXNzVGhyb3VnaCwgVHJhbnNmb3JtKTtcblxuZnVuY3Rpb24gUGFzc1Rocm91Z2gob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUGFzc1Rocm91Z2gpKSByZXR1cm4gbmV3IFBhc3NUaHJvdWdoKG9wdGlvbnMpO1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcbn1cblxuUGFzc1Rocm91Z2gucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihudWxsLCBjaHVuayk7XG59OyIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWRhYmxlO1xuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIER1cGxleDtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5SZWFkYWJsZS5SZWFkYWJsZVN0YXRlID0gUmVhZGFibGVTdGF0ZTtcbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcblxudmFyIEVFbGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uIEVFbGlzdGVuZXJDb3VudChlbWl0dGVyLCB0eXBlKSB7XG4gIHJldHVybiBlbWl0dGVyLmxpc3RlbmVycyh0eXBlKS5sZW5ndGg7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG5cblxudmFyIFN0cmVhbSA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9zdHJlYW0nKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbnZhciBPdXJVaW50OEFycmF5ID0gZ2xvYmFsLlVpbnQ4QXJyYXkgfHwgZnVuY3Rpb24gKCkge307XG5cbmZ1bmN0aW9uIF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTtcbn1cblxuZnVuY3Rpb24gX2lzVWludDhBcnJheShvYmopIHtcbiAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihvYmopIHx8IG9iaiBpbnN0YW5jZW9mIE91clVpbnQ4QXJyYXk7XG59XG4vKjxyZXBsYWNlbWVudD4qL1xuXG5cbnZhciBkZWJ1Z1V0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbnZhciBkZWJ1ZztcblxuaWYgKGRlYnVnVXRpbCAmJiBkZWJ1Z1V0aWwuZGVidWdsb2cpIHtcbiAgZGVidWcgPSBkZWJ1Z1V0aWwuZGVidWdsb2coJ3N0cmVhbScpO1xufSBlbHNlIHtcbiAgZGVidWcgPSBmdW5jdGlvbiBkZWJ1ZygpIHt9O1xufVxuLyo8L3JlcGxhY2VtZW50PiovXG5cblxudmFyIEJ1ZmZlckxpc3QgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvYnVmZmVyX2xpc3QnKTtcblxudmFyIGRlc3Ryb3lJbXBsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3knKTtcblxudmFyIF9yZXF1aXJlID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0YXRlJyksXG4gICAgZ2V0SGlnaFdhdGVyTWFyayA9IF9yZXF1aXJlLmdldEhpZ2hXYXRlck1hcms7XG5cbnZhciBfcmVxdWlyZSRjb2RlcyA9IHJlcXVpcmUoJy4uL2Vycm9ycycpLmNvZGVzLFxuICAgIEVSUl9JTlZBTElEX0FSR19UWVBFID0gX3JlcXVpcmUkY29kZXMuRVJSX0lOVkFMSURfQVJHX1RZUEUsXG4gICAgRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRiA9IF9yZXF1aXJlJGNvZGVzLkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YsXG4gICAgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxcbiAgICBFUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UID0gX3JlcXVpcmUkY29kZXMuRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVDsgLy8gTGF6eSBsb2FkZWQgdG8gaW1wcm92ZSB0aGUgc3RhcnR1cCBwZXJmb3JtYW5jZS5cblxuXG52YXIgU3RyaW5nRGVjb2RlcjtcbnZhciBjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3I7XG52YXIgZnJvbTtcblxucmVxdWlyZSgnaW5oZXJpdHMnKShSZWFkYWJsZSwgU3RyZWFtKTtcblxudmFyIGVycm9yT3JEZXN0cm95ID0gZGVzdHJveUltcGwuZXJyb3JPckRlc3Ryb3k7XG52YXIga1Byb3h5RXZlbnRzID0gWydlcnJvcicsICdjbG9zZScsICdkZXN0cm95JywgJ3BhdXNlJywgJ3Jlc3VtZSddO1xuXG5mdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIoZW1pdHRlciwgZXZlbnQsIGZuKSB7XG4gIC8vIFNhZGx5IHRoaXMgaXMgbm90IGNhY2hlYWJsZSBhcyBzb21lIGxpYnJhcmllcyBidW5kbGUgdGhlaXIgb3duXG4gIC8vIGV2ZW50IGVtaXR0ZXIgaW1wbGVtZW50YXRpb24gd2l0aCB0aGVtLlxuICBpZiAodHlwZW9mIGVtaXR0ZXIucHJlcGVuZExpc3RlbmVyID09PSAnZnVuY3Rpb24nKSByZXR1cm4gZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIoZXZlbnQsIGZuKTsgLy8gVGhpcyBpcyBhIGhhY2sgdG8gbWFrZSBzdXJlIHRoYXQgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIGFueVxuICAvLyB1c2VybGFuZCBvbmVzLiAgTkVWRVIgRE8gVEhJUy4gVGhpcyBpcyBoZXJlIG9ubHkgYmVjYXVzZSB0aGlzIGNvZGUgbmVlZHNcbiAgLy8gdG8gY29udGludWUgdG8gd29yayB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIE5vZGUuanMgdGhhdCBkbyBub3QgaW5jbHVkZVxuICAvLyB0aGUgcHJlcGVuZExpc3RlbmVyKCkgbWV0aG9kLiBUaGUgZ29hbCBpcyB0byBldmVudHVhbGx5IHJlbW92ZSB0aGlzIGhhY2suXG5cbiAgaWYgKCFlbWl0dGVyLl9ldmVudHMgfHwgIWVtaXR0ZXIuX2V2ZW50c1tldmVudF0pIGVtaXR0ZXIub24oZXZlbnQsIGZuKTtlbHNlIGlmIChBcnJheS5pc0FycmF5KGVtaXR0ZXIuX2V2ZW50c1tldmVudF0pKSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdLnVuc2hpZnQoZm4pO2Vsc2UgZW1pdHRlci5fZXZlbnRzW2V2ZW50XSA9IFtmbiwgZW1pdHRlci5fZXZlbnRzW2V2ZW50XV07XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtLCBpc0R1cGxleCkge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsgLy8gRHVwbGV4IHN0cmVhbXMgYXJlIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLCBidXQgc2hhcmVcbiAgLy8gdGhlIHNhbWUgb3B0aW9ucyBvYmplY3QuXG4gIC8vIEhvd2V2ZXIsIHNvbWUgY2FzZXMgcmVxdWlyZSBzZXR0aW5nIG9wdGlvbnMgdG8gZGlmZmVyZW50XG4gIC8vIHZhbHVlcyBmb3IgdGhlIHJlYWRhYmxlIGFuZCB0aGUgd3JpdGFibGUgc2lkZXMgb2YgdGhlIGR1cGxleCBzdHJlYW0uXG4gIC8vIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHByb3ZpZGVkIHNlcGFyYXRlbHkgYXMgcmVhZGFibGVYWFggYW5kIHdyaXRhYmxlWFhYLlxuXG4gIGlmICh0eXBlb2YgaXNEdXBsZXggIT09ICdib29sZWFuJykgaXNEdXBsZXggPSBzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXg7IC8vIG9iamVjdCBzdHJlYW0gZmxhZy4gVXNlZCB0byBtYWtlIHJlYWQobikgaWdub3JlIG4gYW5kIHRvXG4gIC8vIG1ha2UgYWxsIHRoZSBidWZmZXIgbWVyZ2luZyBhbmQgbGVuZ3RoIGNoZWNrcyBnbyBhd2F5XG5cbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG4gIGlmIChpc0R1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy5yZWFkYWJsZU9iamVjdE1vZGU7IC8vIHRoZSBwb2ludCBhdCB3aGljaCBpdCBzdG9wcyBjYWxsaW5nIF9yZWFkKCkgdG8gZmlsbCB0aGUgYnVmZmVyXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgXCJkb24ndCBjYWxsIF9yZWFkIHByZWVtcHRpdmVseSBldmVyXCJcblxuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBnZXRIaWdoV2F0ZXJNYXJrKHRoaXMsIG9wdGlvbnMsICdyZWFkYWJsZUhpZ2hXYXRlck1hcmsnLCBpc0R1cGxleCk7IC8vIEEgbGlua2VkIGxpc3QgaXMgdXNlZCB0byBzdG9yZSBkYXRhIGNodW5rcyBpbnN0ZWFkIG9mIGFuIGFycmF5IGJlY2F1c2UgdGhlXG4gIC8vIGxpbmtlZCBsaXN0IGNhbiByZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgYmVnaW5uaW5nIGZhc3RlciB0aGFuXG4gIC8vIGFycmF5LnNoaWZ0KClcblxuICB0aGlzLmJ1ZmZlciA9IG5ldyBCdWZmZXJMaXN0KCk7XG4gIHRoaXMubGVuZ3RoID0gMDtcbiAgdGhpcy5waXBlcyA9IG51bGw7XG4gIHRoaXMucGlwZXNDb3VudCA9IDA7XG4gIHRoaXMuZmxvd2luZyA9IG51bGw7XG4gIHRoaXMuZW5kZWQgPSBmYWxzZTtcbiAgdGhpcy5lbmRFbWl0dGVkID0gZmFsc2U7XG4gIHRoaXMucmVhZGluZyA9IGZhbHNlOyAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBldmVudCAncmVhZGFibGUnLydkYXRhJyBpcyBlbWl0dGVkXG4gIC8vIGltbWVkaWF0ZWx5LCBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlXG4gIC8vIGFueSBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCByZWFkIGNhbGwuXG5cbiAgdGhpcy5zeW5jID0gdHJ1ZTsgLy8gd2hlbmV2ZXIgd2UgcmV0dXJuIG51bGwsIHRoZW4gd2Ugc2V0IGEgZmxhZyB0byBzYXlcbiAgLy8gdGhhdCB3ZSdyZSBhd2FpdGluZyBhICdyZWFkYWJsZScgZXZlbnQgZW1pc3Npb24uXG5cbiAgdGhpcy5uZWVkUmVhZGFibGUgPSBmYWxzZTtcbiAgdGhpcy5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcbiAgdGhpcy5yZWFkYWJsZUxpc3RlbmluZyA9IGZhbHNlO1xuICB0aGlzLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlO1xuICB0aGlzLnBhdXNlZCA9IHRydWU7IC8vIFNob3VsZCBjbG9zZSBiZSBlbWl0dGVkIG9uIGRlc3Ryb3kuIERlZmF1bHRzIHRvIHRydWUuXG5cbiAgdGhpcy5lbWl0Q2xvc2UgPSBvcHRpb25zLmVtaXRDbG9zZSAhPT0gZmFsc2U7IC8vIFNob3VsZCAuZGVzdHJveSgpIGJlIGNhbGxlZCBhZnRlciAnZW5kJyAoYW5kIHBvdGVudGlhbGx5ICdmaW5pc2gnKVxuXG4gIHRoaXMuYXV0b0Rlc3Ryb3kgPSAhIW9wdGlvbnMuYXV0b0Rlc3Ryb3k7IC8vIGhhcyBpdCBiZWVuIGRlc3Ryb3llZFxuXG4gIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7IC8vIENyeXB0byBpcyBraW5kIG9mIG9sZCBhbmQgY3J1c3R5LiAgSGlzdG9yaWNhbGx5LCBpdHMgZGVmYXVsdCBzdHJpbmdcbiAgLy8gZW5jb2RpbmcgaXMgJ2JpbmFyeScgc28gd2UgaGF2ZSB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlLlxuICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guXG5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7IC8vIHRoZSBudW1iZXIgb2Ygd3JpdGVycyB0aGF0IGFyZSBhd2FpdGluZyBhIGRyYWluIGV2ZW50IGluIC5waXBlKClzXG5cbiAgdGhpcy5hd2FpdERyYWluID0gMDsgLy8gaWYgdHJ1ZSwgYSBtYXliZVJlYWRNb3JlIGhhcyBiZWVuIHNjaGVkdWxlZFxuXG4gIHRoaXMucmVhZGluZ01vcmUgPSBmYWxzZTtcbiAgdGhpcy5kZWNvZGVyID0gbnVsbDtcbiAgdGhpcy5lbmNvZGluZyA9IG51bGw7XG5cbiAgaWYgKG9wdGlvbnMuZW5jb2RpbmcpIHtcbiAgICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICAgIHRoaXMuZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKG9wdGlvbnMuZW5jb2RpbmcpO1xuICAgIHRoaXMuZW5jb2RpbmcgPSBvcHRpb25zLmVuY29kaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlKG9wdGlvbnMpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlYWRhYmxlKSkgcmV0dXJuIG5ldyBSZWFkYWJsZShvcHRpb25zKTsgLy8gQ2hlY2tpbmcgZm9yIGEgU3RyZWFtLkR1cGxleCBpbnN0YW5jZSBpcyBmYXN0ZXIgaGVyZSBpbnN0ZWFkIG9mIGluc2lkZVxuICAvLyB0aGUgUmVhZGFibGVTdGF0ZSBjb25zdHJ1Y3RvciwgYXQgbGVhc3Qgd2l0aCBWOCA2LjVcblxuICB2YXIgaXNEdXBsZXggPSB0aGlzIGluc3RhbmNlb2YgRHVwbGV4O1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlID0gbmV3IFJlYWRhYmxlU3RhdGUob3B0aW9ucywgdGhpcywgaXNEdXBsZXgpOyAvLyBsZWdhY3lcblxuICB0aGlzLnJlYWRhYmxlID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5yZWFkID09PSAnZnVuY3Rpb24nKSB0aGlzLl9yZWFkID0gb3B0aW9ucy5yZWFkO1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95O1xuICB9XG5cbiAgU3RyZWFtLmNhbGwodGhpcyk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtXG4gICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgIGlmICghdGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseVxuICAgIC8vIG1hbmFnaW5nIGRlc3Ryb3llZFxuXG5cbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTtcblJlYWRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTtcblJlYWRhYmxlLnByb3RvdHlwZS5fdW5kZXN0cm95ID0gZGVzdHJveUltcGwudW5kZXN0cm95O1xuXG5SZWFkYWJsZS5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICBjYihlcnIpO1xufTsgLy8gTWFudWFsbHkgc2hvdmUgc29tZXRoaW5nIGludG8gdGhlIHJlYWQoKSBidWZmZXIuXG4vLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiB0aGUgaGlnaFdhdGVyTWFyayBoYXMgbm90IGJlZW4gaGl0IHlldCxcbi8vIHNpbWlsYXIgdG8gaG93IFdyaXRhYmxlLndyaXRlKCkgcmV0dXJucyB0cnVlIGlmIHlvdSBzaG91bGRcbi8vIHdyaXRlKCkgc29tZSBtb3JlLlxuXG5cblJlYWRhYmxlLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgc2tpcENodW5rQ2hlY2s7XG5cbiAgaWYgKCFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgc3RhdGUuZGVmYXVsdEVuY29kaW5nO1xuXG4gICAgICBpZiAoZW5jb2RpbmcgIT09IHN0YXRlLmVuY29kaW5nKSB7XG4gICAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgICAgICAgZW5jb2RpbmcgPSAnJztcbiAgICAgIH1cblxuICAgICAgc2tpcENodW5rQ2hlY2sgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBza2lwQ2h1bmtDaGVjayA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBjaHVuaywgZW5jb2RpbmcsIGZhbHNlLCBza2lwQ2h1bmtDaGVjayk7XG59OyAvLyBVbnNoaWZ0IHNob3VsZCAqYWx3YXlzKiBiZSBzb21ldGhpbmcgZGlyZWN0bHkgb3V0IG9mIHJlYWQoKVxuXG5cblJlYWRhYmxlLnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBudWxsLCB0cnVlLCBmYWxzZSk7XG59O1xuXG5mdW5jdGlvbiByZWFkYWJsZUFkZENodW5rKHN0cmVhbSwgY2h1bmssIGVuY29kaW5nLCBhZGRUb0Zyb250LCBza2lwQ2h1bmtDaGVjaykge1xuICBkZWJ1ZygncmVhZGFibGVBZGRDaHVuaycsIGNodW5rKTtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuXG4gIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciBlcjtcbiAgICBpZiAoIXNraXBDaHVua0NoZWNrKSBlciA9IGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspO1xuXG4gICAgaWYgKGVyKSB7XG4gICAgICBlcnJvck9yRGVzdHJveShzdHJlYW0sIGVyKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLm9iamVjdE1vZGUgfHwgY2h1bmsgJiYgY2h1bmsubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgIXN0YXRlLm9iamVjdE1vZGUgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGNodW5rKSAhPT0gQnVmZmVyLnByb3RvdHlwZSkge1xuICAgICAgICBjaHVuayA9IF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspO1xuICAgICAgfVxuXG4gICAgICBpZiAoYWRkVG9Gcm9udCkge1xuICAgICAgICBpZiAoc3RhdGUuZW5kRW1pdHRlZCkgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBuZXcgRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVCgpKTtlbHNlIGFkZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCB0cnVlKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUuZW5kZWQpIHtcbiAgICAgICAgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBuZXcgRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRigpKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUuZGVzdHJveWVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhZW5jb2RpbmcpIHtcbiAgICAgICAgICBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuICAgICAgICAgIGlmIChzdGF0ZS5vYmplY3RNb2RlIHx8IGNodW5rLmxlbmd0aCAhPT0gMCkgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKTtlbHNlIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWFkZFRvRnJvbnQpIHtcbiAgICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICAgIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG4gICAgfVxuICB9IC8vIFdlIGNhbiBwdXNoIG1vcmUgZGF0YSBpZiB3ZSBhcmUgYmVsb3cgdGhlIGhpZ2hXYXRlck1hcmsuXG4gIC8vIEFsc28sIGlmIHdlIGhhdmUgbm8gZGF0YSB5ZXQsIHdlIGNhbiBzdGFuZCBzb21lIG1vcmUgYnl0ZXMuXG4gIC8vIFRoaXMgaXMgdG8gd29yayBhcm91bmQgY2FzZXMgd2hlcmUgaHdtPTAsIHN1Y2ggYXMgdGhlIHJlcGwuXG5cblxuICByZXR1cm4gIXN0YXRlLmVuZGVkICYmIChzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCk7XG59XG5cbmZ1bmN0aW9uIGFkZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBhZGRUb0Zyb250KSB7XG4gIGlmIChzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCAmJiAhc3RhdGUuc3luYykge1xuICAgIHN0YXRlLmF3YWl0RHJhaW4gPSAwO1xuICAgIHN0cmVhbS5lbWl0KCdkYXRhJywgY2h1bmspO1xuICB9IGVsc2Uge1xuICAgIC8vIHVwZGF0ZSB0aGUgYnVmZmVyIGluZm8uXG4gICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgIGlmIChhZGRUb0Zyb250KSBzdGF0ZS5idWZmZXIudW5zaGlmdChjaHVuayk7ZWxzZSBzdGF0ZS5idWZmZXIucHVzaChjaHVuayk7XG4gICAgaWYgKHN0YXRlLm5lZWRSZWFkYWJsZSkgZW1pdFJlYWRhYmxlKHN0cmVhbSk7XG4gIH1cblxuICBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpO1xufVxuXG5mdW5jdGlvbiBjaHVua0ludmFsaWQoc3RhdGUsIGNodW5rKSB7XG4gIHZhciBlcjtcblxuICBpZiAoIV9pc1VpbnQ4QXJyYXkoY2h1bmspICYmIHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdjaHVuaycsIFsnc3RyaW5nJywgJ0J1ZmZlcicsICdVaW50OEFycmF5J10sIGNodW5rKTtcbiAgfVxuXG4gIHJldHVybiBlcjtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLmlzUGF1c2VkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID09PSBmYWxzZTtcbn07IC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuXG5cblJlYWRhYmxlLnByb3RvdHlwZS5zZXRFbmNvZGluZyA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgaWYgKCFTdHJpbmdEZWNvZGVyKSBTdHJpbmdEZWNvZGVyID0gcmVxdWlyZSgnc3RyaW5nX2RlY29kZXIvJykuU3RyaW5nRGVjb2RlcjtcbiAgdmFyIGRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihlbmMpO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIgPSBkZWNvZGVyOyAvLyBJZiBzZXRFbmNvZGluZyhudWxsKSwgZGVjb2Rlci5lbmNvZGluZyBlcXVhbHMgdXRmOFxuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2RpbmcgPSB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIuZW5jb2Rpbmc7IC8vIEl0ZXJhdGUgb3ZlciBjdXJyZW50IGJ1ZmZlciB0byBjb252ZXJ0IGFscmVhZHkgc3RvcmVkIEJ1ZmZlcnM6XG5cbiAgdmFyIHAgPSB0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5oZWFkO1xuICB2YXIgY29udGVudCA9ICcnO1xuXG4gIHdoaWxlIChwICE9PSBudWxsKSB7XG4gICAgY29udGVudCArPSBkZWNvZGVyLndyaXRlKHAuZGF0YSk7XG4gICAgcCA9IHAubmV4dDtcbiAgfVxuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmNsZWFyKCk7XG5cbiAgaWYgKGNvbnRlbnQgIT09ICcnKSB0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5wdXNoKGNvbnRlbnQpO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmxlbmd0aCA9IGNvbnRlbnQubGVuZ3RoO1xuICByZXR1cm4gdGhpcztcbn07IC8vIERvbid0IHJhaXNlIHRoZSBod20gPiAxR0JcblxuXG52YXIgTUFYX0hXTSA9IDB4NDAwMDAwMDA7XG5cbmZ1bmN0aW9uIGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pIHtcbiAgaWYgKG4gPj0gTUFYX0hXTSkge1xuICAgIC8vIFRPRE8ocm9uYWcpOiBUaHJvdyBFUlJfVkFMVUVfT1VUX09GX1JBTkdFLlxuICAgIG4gPSBNQVhfSFdNO1xuICB9IGVsc2Uge1xuICAgIC8vIEdldCB0aGUgbmV4dCBoaWdoZXN0IHBvd2VyIG9mIDIgdG8gcHJldmVudCBpbmNyZWFzaW5nIGh3bSBleGNlc3NpdmVseSBpblxuICAgIC8vIHRpbnkgYW1vdW50c1xuICAgIG4tLTtcbiAgICBuIHw9IG4gPj4+IDE7XG4gICAgbiB8PSBuID4+PiAyO1xuICAgIG4gfD0gbiA+Pj4gNDtcbiAgICBuIHw9IG4gPj4+IDg7XG4gICAgbiB8PSBuID4+PiAxNjtcbiAgICBuKys7XG4gIH1cblxuICByZXR1cm4gbjtcbn0gLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5cblxuZnVuY3Rpb24gaG93TXVjaFRvUmVhZChuLCBzdGF0ZSkge1xuICBpZiAobiA8PSAwIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkgcmV0dXJuIDA7XG4gIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXR1cm4gMTtcblxuICBpZiAobiAhPT0gbikge1xuICAgIC8vIE9ubHkgZmxvdyBvbmUgYnVmZmVyIGF0IGEgdGltZVxuICAgIGlmIChzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmxlbmd0aCkgcmV0dXJuIHN0YXRlLmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoO2Vsc2UgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbiAgfSAvLyBJZiB3ZSdyZSBhc2tpbmcgZm9yIG1vcmUgdGhhbiB0aGUgY3VycmVudCBod20sIHRoZW4gcmFpc2UgdGhlIGh3bS5cblxuXG4gIGlmIChuID4gc3RhdGUuaGlnaFdhdGVyTWFyaykgc3RhdGUuaGlnaFdhdGVyTWFyayA9IGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pO1xuICBpZiAobiA8PSBzdGF0ZS5sZW5ndGgpIHJldHVybiBuOyAvLyBEb24ndCBoYXZlIGVub3VnaFxuXG4gIGlmICghc3RhdGUuZW5kZWQpIHtcbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbn0gLy8geW91IGNhbiBvdmVycmlkZSBlaXRoZXIgdGhpcyBtZXRob2QsIG9yIHRoZSBhc3luYyBfcmVhZChuKSBiZWxvdy5cblxuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIGRlYnVnKCdyZWFkJywgbik7XG4gIG4gPSBwYXJzZUludChuLCAxMCk7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBuT3JpZyA9IG47XG4gIGlmIChuICE9PSAwKSBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTsgLy8gaWYgd2UncmUgZG9pbmcgcmVhZCgwKSB0byB0cmlnZ2VyIGEgcmVhZGFibGUgZXZlbnQsIGJ1dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYSBidW5jaCBvZiBkYXRhIGluIHRoZSBidWZmZXIsIHRoZW4ganVzdCB0cmlnZ2VyXG4gIC8vIHRoZSAncmVhZGFibGUnIGV2ZW50IGFuZCBtb3ZlIG9uLlxuXG4gIGlmIChuID09PSAwICYmIHN0YXRlLm5lZWRSZWFkYWJsZSAmJiAoKHN0YXRlLmhpZ2hXYXRlck1hcmsgIT09IDAgPyBzdGF0ZS5sZW5ndGggPj0gc3RhdGUuaGlnaFdhdGVyTWFyayA6IHN0YXRlLmxlbmd0aCA+IDApIHx8IHN0YXRlLmVuZGVkKSkge1xuICAgIGRlYnVnKCdyZWFkOiBlbWl0UmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLmVuZGVkKTtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtlbHNlIGVtaXRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG4gPSBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKTsgLy8gaWYgd2UndmUgZW5kZWQsIGFuZCB3ZSdyZSBub3cgY2xlYXIsIHRoZW4gZmluaXNoIGl0IHVwLlxuXG4gIGlmIChuID09PSAwICYmIHN0YXRlLmVuZGVkKSB7XG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgZW5kUmVhZGFibGUodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gQWxsIHRoZSBhY3R1YWwgY2h1bmsgZ2VuZXJhdGlvbiBsb2dpYyBuZWVkcyB0byBiZVxuICAvLyAqYmVsb3cqIHRoZSBjYWxsIHRvIF9yZWFkLiAgVGhlIHJlYXNvbiBpcyB0aGF0IGluIGNlcnRhaW5cbiAgLy8gc3ludGhldGljIHN0cmVhbSBjYXNlcywgc3VjaCBhcyBwYXNzdGhyb3VnaCBzdHJlYW1zLCBfcmVhZFxuICAvLyBtYXkgYmUgYSBjb21wbGV0ZWx5IHN5bmNocm9ub3VzIG9wZXJhdGlvbiB3aGljaCBtYXkgY2hhbmdlXG4gIC8vIHRoZSBzdGF0ZSBvZiB0aGUgcmVhZCBidWZmZXIsIHByb3ZpZGluZyBlbm91Z2ggZGF0YSB3aGVuXG4gIC8vIGJlZm9yZSB0aGVyZSB3YXMgKm5vdCogZW5vdWdoLlxuICAvL1xuICAvLyBTbywgdGhlIHN0ZXBzIGFyZTpcbiAgLy8gMS4gRmlndXJlIG91dCB3aGF0IHRoZSBzdGF0ZSBvZiB0aGluZ3Mgd2lsbCBiZSBhZnRlciB3ZSBkb1xuICAvLyBhIHJlYWQgZnJvbSB0aGUgYnVmZmVyLlxuICAvL1xuICAvLyAyLiBJZiB0aGF0IHJlc3VsdGluZyBzdGF0ZSB3aWxsIHRyaWdnZXIgYSBfcmVhZCwgdGhlbiBjYWxsIF9yZWFkLlxuICAvLyBOb3RlIHRoYXQgdGhpcyBtYXkgYmUgYXN5bmNocm9ub3VzLCBvciBzeW5jaHJvbm91cy4gIFllcywgaXQgaXNcbiAgLy8gZGVlcGx5IHVnbHkgdG8gd3JpdGUgQVBJcyB0aGlzIHdheSwgYnV0IHRoYXQgc3RpbGwgZG9lc24ndCBtZWFuXG4gIC8vIHRoYXQgdGhlIFJlYWRhYmxlIGNsYXNzIHNob3VsZCBiZWhhdmUgaW1wcm9wZXJseSwgYXMgc3RyZWFtcyBhcmVcbiAgLy8gZGVzaWduZWQgdG8gYmUgc3luYy9hc3luYyBhZ25vc3RpYy5cbiAgLy8gVGFrZSBub3RlIGlmIHRoZSBfcmVhZCBjYWxsIGlzIHN5bmMgb3IgYXN5bmMgKGllLCBpZiB0aGUgcmVhZCBjYWxsXG4gIC8vIGhhcyByZXR1cm5lZCB5ZXQpLCBzbyB0aGF0IHdlIGtub3cgd2hldGhlciBvciBub3QgaXQncyBzYWZlIHRvIGVtaXRcbiAgLy8gJ3JlYWRhYmxlJyBldGMuXG4gIC8vXG4gIC8vIDMuIEFjdHVhbGx5IHB1bGwgdGhlIHJlcXVlc3RlZCBjaHVua3Mgb3V0IG9mIHRoZSBidWZmZXIgYW5kIHJldHVybi5cbiAgLy8gaWYgd2UgbmVlZCBhIHJlYWRhYmxlIGV2ZW50LCB0aGVuIHdlIG5lZWQgdG8gZG8gc29tZSByZWFkaW5nLlxuXG5cbiAgdmFyIGRvUmVhZCA9IHN0YXRlLm5lZWRSZWFkYWJsZTtcbiAgZGVidWcoJ25lZWQgcmVhZGFibGUnLCBkb1JlYWQpOyAvLyBpZiB3ZSBjdXJyZW50bHkgaGF2ZSBsZXNzIHRoYW4gdGhlIGhpZ2hXYXRlck1hcmssIHRoZW4gYWxzbyByZWFkIHNvbWVcblxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwIHx8IHN0YXRlLmxlbmd0aCAtIG4gPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgZG9SZWFkID0gdHJ1ZTtcbiAgICBkZWJ1ZygnbGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsnLCBkb1JlYWQpO1xuICB9IC8vIGhvd2V2ZXIsIGlmIHdlJ3ZlIGVuZGVkLCB0aGVuIHRoZXJlJ3Mgbm8gcG9pbnQsIGFuZCBpZiB3ZSdyZSBhbHJlYWR5XG4gIC8vIHJlYWRpbmcsIHRoZW4gaXQncyB1bm5lY2Vzc2FyeS5cblxuXG4gIGlmIChzdGF0ZS5lbmRlZCB8fCBzdGF0ZS5yZWFkaW5nKSB7XG4gICAgZG9SZWFkID0gZmFsc2U7XG4gICAgZGVidWcoJ3JlYWRpbmcgb3IgZW5kZWQnLCBkb1JlYWQpO1xuICB9IGVsc2UgaWYgKGRvUmVhZCkge1xuICAgIGRlYnVnKCdkbyByZWFkJyk7XG4gICAgc3RhdGUucmVhZGluZyA9IHRydWU7XG4gICAgc3RhdGUuc3luYyA9IHRydWU7IC8vIGlmIHRoZSBsZW5ndGggaXMgY3VycmVudGx5IHplcm8sIHRoZW4gd2UgKm5lZWQqIGEgcmVhZGFibGUgZXZlbnQuXG5cbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlOyAvLyBjYWxsIGludGVybmFsIHJlYWQgbWV0aG9kXG5cbiAgICB0aGlzLl9yZWFkKHN0YXRlLmhpZ2hXYXRlck1hcmspO1xuXG4gICAgc3RhdGUuc3luYyA9IGZhbHNlOyAvLyBJZiBfcmVhZCBwdXNoZWQgZGF0YSBzeW5jaHJvbm91c2x5LCB0aGVuIGByZWFkaW5nYCB3aWxsIGJlIGZhbHNlLFxuICAgIC8vIGFuZCB3ZSBuZWVkIHRvIHJlLWV2YWx1YXRlIGhvdyBtdWNoIGRhdGEgd2UgY2FuIHJldHVybiB0byB0aGUgdXNlci5cblxuICAgIGlmICghc3RhdGUucmVhZGluZykgbiA9IGhvd011Y2hUb1JlYWQobk9yaWcsIHN0YXRlKTtcbiAgfVxuXG4gIHZhciByZXQ7XG4gIGlmIChuID4gMCkgcmV0ID0gZnJvbUxpc3Qobiwgc3RhdGUpO2Vsc2UgcmV0ID0gbnVsbDtcblxuICBpZiAocmV0ID09PSBudWxsKSB7XG4gICAgc3RhdGUubmVlZFJlYWRhYmxlID0gc3RhdGUubGVuZ3RoIDw9IHN0YXRlLmhpZ2hXYXRlck1hcms7XG4gICAgbiA9IDA7XG4gIH0gZWxzZSB7XG4gICAgc3RhdGUubGVuZ3RoIC09IG47XG4gICAgc3RhdGUuYXdhaXREcmFpbiA9IDA7XG4gIH1cblxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgLy8gSWYgd2UgaGF2ZSBub3RoaW5nIGluIHRoZSBidWZmZXIsIHRoZW4gd2Ugd2FudCB0byBrbm93XG4gICAgLy8gYXMgc29vbiBhcyB3ZSAqZG8qIGdldCBzb21ldGhpbmcgaW50byB0aGUgYnVmZmVyLlxuICAgIGlmICghc3RhdGUuZW5kZWQpIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7IC8vIElmIHdlIHRyaWVkIHRvIHJlYWQoKSBwYXN0IHRoZSBFT0YsIHRoZW4gZW1pdCBlbmQgb24gdGhlIG5leHQgdGljay5cblxuICAgIGlmIChuT3JpZyAhPT0gbiAmJiBzdGF0ZS5lbmRlZCkgZW5kUmVhZGFibGUodGhpcyk7XG4gIH1cblxuICBpZiAocmV0ICE9PSBudWxsKSB0aGlzLmVtaXQoJ2RhdGEnLCByZXQpO1xuICByZXR1cm4gcmV0O1xufTtcblxuZnVuY3Rpb24gb25Fb2ZDaHVuayhzdHJlYW0sIHN0YXRlKSB7XG4gIGRlYnVnKCdvbkVvZkNodW5rJyk7XG4gIGlmIChzdGF0ZS5lbmRlZCkgcmV0dXJuO1xuXG4gIGlmIChzdGF0ZS5kZWNvZGVyKSB7XG4gICAgdmFyIGNodW5rID0gc3RhdGUuZGVjb2Rlci5lbmQoKTtcblxuICAgIGlmIChjaHVuayAmJiBjaHVuay5sZW5ndGgpIHtcbiAgICAgIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKTtcbiAgICAgIHN0YXRlLmxlbmd0aCArPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgICB9XG4gIH1cblxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG5cbiAgaWYgKHN0YXRlLnN5bmMpIHtcbiAgICAvLyBpZiB3ZSBhcmUgc3luYywgd2FpdCB1bnRpbCBuZXh0IHRpY2sgdG8gZW1pdCB0aGUgZGF0YS5cbiAgICAvLyBPdGhlcndpc2Ugd2UgcmlzayBlbWl0dGluZyBkYXRhIGluIHRoZSBmbG93KClcbiAgICAvLyB0aGUgcmVhZGFibGUgY29kZSB0cmlnZ2VycyBkdXJpbmcgYSByZWFkKCkgY2FsbFxuICAgIGVtaXRSZWFkYWJsZShzdHJlYW0pO1xuICB9IGVsc2Uge1xuICAgIC8vIGVtaXQgJ3JlYWRhYmxlJyBub3cgdG8gbWFrZSBzdXJlIGl0IGdldHMgcGlja2VkIHVwLlxuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuXG4gICAgaWYgKCFzdGF0ZS5lbWl0dGVkUmVhZGFibGUpIHtcbiAgICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgICBlbWl0UmVhZGFibGVfKHN0cmVhbSk7XG4gICAgfVxuICB9XG59IC8vIERvbid0IGVtaXQgcmVhZGFibGUgcmlnaHQgYXdheSBpbiBzeW5jIG1vZGUsIGJlY2F1c2UgdGhpcyBjYW4gdHJpZ2dlclxuLy8gYW5vdGhlciByZWFkKCkgY2FsbCA9PiBzdGFjayBvdmVyZmxvdy4gIFRoaXMgd2F5LCBpdCBtaWdodCB0cmlnZ2VyXG4vLyBhIG5leHRUaWNrIHJlY3Vyc2lvbiB3YXJuaW5nLCBidXQgdGhhdCdzIG5vdCBzbyBiYWQuXG5cblxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGRlYnVnKCdlbWl0UmVhZGFibGUnLCBzdGF0ZS5uZWVkUmVhZGFibGUsIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSk7XG4gIHN0YXRlLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuXG4gIGlmICghc3RhdGUuZW1pdHRlZFJlYWRhYmxlKSB7XG4gICAgZGVidWcoJ2VtaXRSZWFkYWJsZScsIHN0YXRlLmZsb3dpbmcpO1xuICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0UmVhZGFibGVfLCBzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVtaXRSZWFkYWJsZV8oc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgZGVidWcoJ2VtaXRSZWFkYWJsZV8nLCBzdGF0ZS5kZXN0cm95ZWQsIHN0YXRlLmxlbmd0aCwgc3RhdGUuZW5kZWQpO1xuXG4gIGlmICghc3RhdGUuZGVzdHJveWVkICYmIChzdGF0ZS5sZW5ndGggfHwgc3RhdGUuZW5kZWQpKSB7XG4gICAgc3RyZWFtLmVtaXQoJ3JlYWRhYmxlJyk7XG4gICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gIH0gLy8gVGhlIHN0cmVhbSBuZWVkcyBhbm90aGVyIHJlYWRhYmxlIGV2ZW50IGlmXG4gIC8vIDEuIEl0IGlzIG5vdCBmbG93aW5nLCBhcyB0aGUgZmxvdyBtZWNoYW5pc20gd2lsbCB0YWtlXG4gIC8vICAgIGNhcmUgb2YgaXQuXG4gIC8vIDIuIEl0IGlzIG5vdCBlbmRlZC5cbiAgLy8gMy4gSXQgaXMgYmVsb3cgdGhlIGhpZ2hXYXRlck1hcmssIHNvIHdlIGNhbiBzY2hlZHVsZVxuICAvLyAgICBhbm90aGVyIHJlYWRhYmxlIGxhdGVyLlxuXG5cbiAgc3RhdGUubmVlZFJlYWRhYmxlID0gIXN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLmVuZGVkICYmIHN0YXRlLmxlbmd0aCA8PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICBmbG93KHN0cmVhbSk7XG59IC8vIGF0IHRoaXMgcG9pbnQsIHRoZSB1c2VyIGhhcyBwcmVzdW1hYmx5IHNlZW4gdGhlICdyZWFkYWJsZScgZXZlbnQsXG4vLyBhbmQgY2FsbGVkIHJlYWQoKSB0byBjb25zdW1lIHNvbWUgZGF0YS4gIHRoYXQgbWF5IGhhdmUgdHJpZ2dlcmVkXG4vLyBpbiB0dXJuIGFub3RoZXIgX3JlYWQobikgY2FsbCwgaW4gd2hpY2ggY2FzZSByZWFkaW5nID0gdHJ1ZSBpZlxuLy8gaXQncyBpbiBwcm9ncmVzcy5cbi8vIEhvd2V2ZXIsIGlmIHdlJ3JlIG5vdCBlbmRlZCwgb3IgcmVhZGluZywgYW5kIHRoZSBsZW5ndGggPCBod20sXG4vLyB0aGVuIGdvIGFoZWFkIGFuZCB0cnkgdG8gcmVhZCBzb21lIG1vcmUgcHJlZW1wdGl2ZWx5LlxuXG5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlYWRpbmdNb3JlKSB7XG4gICAgc3RhdGUucmVhZGluZ01vcmUgPSB0cnVlO1xuICAgIHByb2Nlc3MubmV4dFRpY2sobWF5YmVSZWFkTW9yZV8sIHN0cmVhbSwgc3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgLy8gQXR0ZW1wdCB0byByZWFkIG1vcmUgZGF0YSBpZiB3ZSBzaG91bGQuXG4gIC8vXG4gIC8vIFRoZSBjb25kaXRpb25zIGZvciByZWFkaW5nIG1vcmUgZGF0YSBhcmUgKG9uZSBvZik6XG4gIC8vIC0gTm90IGVub3VnaCBkYXRhIGJ1ZmZlcmVkIChzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKS4gVGhlIGxvb3BcbiAgLy8gICBpcyByZXNwb25zaWJsZSBmb3IgZmlsbGluZyB0aGUgYnVmZmVyIHdpdGggZW5vdWdoIGRhdGEgaWYgc3VjaCBkYXRhXG4gIC8vICAgaXMgYXZhaWxhYmxlLiBJZiBoaWdoV2F0ZXJNYXJrIGlzIDAgYW5kIHdlIGFyZSBub3QgaW4gdGhlIGZsb3dpbmcgbW9kZVxuICAvLyAgIHdlIHNob3VsZCBfbm90XyBhdHRlbXB0IHRvIGJ1ZmZlciBhbnkgZXh0cmEgZGF0YS4gV2UnbGwgZ2V0IG1vcmUgZGF0YVxuICAvLyAgIHdoZW4gdGhlIHN0cmVhbSBjb25zdW1lciBjYWxscyByZWFkKCkgaW5zdGVhZC5cbiAgLy8gLSBObyBkYXRhIGluIHRoZSBidWZmZXIsIGFuZCB0aGUgc3RyZWFtIGlzIGluIGZsb3dpbmcgbW9kZS4gSW4gdGhpcyBtb2RlXG4gIC8vICAgdGhlIGxvb3AgYmVsb3cgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHJlYWQoKSBpcyBjYWxsZWQuIEZhaWxpbmcgdG9cbiAgLy8gICBjYWxsIHJlYWQgaGVyZSB3b3VsZCBhYm9ydCB0aGUgZmxvdyBhbmQgdGhlcmUncyBubyBvdGhlciBtZWNoYW5pc20gZm9yXG4gIC8vICAgY29udGludWluZyB0aGUgZmxvdyBpZiB0aGUgc3RyZWFtIGNvbnN1bWVyIGhhcyBqdXN0IHN1YnNjcmliZWQgdG8gdGhlXG4gIC8vICAgJ2RhdGEnIGV2ZW50LlxuICAvL1xuICAvLyBJbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUgY29uZGl0aW9ucyB0byBrZWVwIHJlYWRpbmcgZGF0YSwgdGhlIGZvbGxvd2luZ1xuICAvLyBjb25kaXRpb25zIHByZXZlbnQgdGhlIGRhdGEgZnJvbSBiZWluZyByZWFkOlxuICAvLyAtIFRoZSBzdHJlYW0gaGFzIGVuZGVkIChzdGF0ZS5lbmRlZCkuXG4gIC8vIC0gVGhlcmUgaXMgYWxyZWFkeSBhIHBlbmRpbmcgJ3JlYWQnIG9wZXJhdGlvbiAoc3RhdGUucmVhZGluZykuIFRoaXMgaXMgYVxuICAvLyAgIGNhc2Ugd2hlcmUgdGhlIHRoZSBzdHJlYW0gaGFzIGNhbGxlZCB0aGUgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBfcmVhZCgpXG4gIC8vICAgbWV0aG9kLCBidXQgdGhleSBhcmUgcHJvY2Vzc2luZyB0aGUgY2FsbCBhc3luY2hyb25vdXNseSBhbmQgaGF2ZSBfbm90X1xuICAvLyAgIGNhbGxlZCBwdXNoKCkgd2l0aCBuZXcgZGF0YS4gSW4gdGhpcyBjYXNlIHdlIHNraXAgcGVyZm9ybWluZyBtb3JlXG4gIC8vICAgcmVhZCgpcy4gVGhlIGV4ZWN1dGlvbiBlbmRzIGluIHRoaXMgbWV0aG9kIGFnYWluIGFmdGVyIHRoZSBfcmVhZCgpIGVuZHNcbiAgLy8gICB1cCBjYWxsaW5nIHB1c2goKSB3aXRoIG1vcmUgZGF0YS5cbiAgd2hpbGUgKCFzdGF0ZS5yZWFkaW5nICYmICFzdGF0ZS5lbmRlZCAmJiAoc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyayB8fCBzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCkpIHtcbiAgICB2YXIgbGVuID0gc3RhdGUubGVuZ3RoO1xuICAgIGRlYnVnKCdtYXliZVJlYWRNb3JlIHJlYWQgMCcpO1xuICAgIHN0cmVhbS5yZWFkKDApO1xuICAgIGlmIChsZW4gPT09IHN0YXRlLmxlbmd0aCkgLy8gZGlkbid0IGdldCBhbnkgZGF0YSwgc3RvcCBzcGlubmluZy5cbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgc3RhdGUucmVhZGluZ01vcmUgPSBmYWxzZTtcbn0gLy8gYWJzdHJhY3QgbWV0aG9kLiAgdG8gYmUgb3ZlcnJpZGRlbiBpbiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gY2FsbCBjYihlciwgZGF0YSkgd2hlcmUgZGF0YSBpcyA8PSBuIGluIGxlbmd0aC5cbi8vIGZvciB2aXJ0dWFsIChub24tc3RyaW5nLCBub24tYnVmZmVyKSBzdHJlYW1zLCBcImxlbmd0aFwiIGlzIHNvbWV3aGF0XG4vLyBhcmJpdHJhcnksIGFuZCBwZXJoYXBzIG5vdCB2ZXJ5IG1lYW5pbmdmdWwuXG5cblxuUmVhZGFibGUucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgZXJyb3JPckRlc3Ryb3kodGhpcywgbmV3IEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEKCdfcmVhZCgpJykpO1xufTtcblxuUmVhZGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoZGVzdCwgcGlwZU9wdHMpIHtcbiAgdmFyIHNyYyA9IHRoaXM7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG5cbiAgc3dpdGNoIChzdGF0ZS5waXBlc0NvdW50KSB7XG4gICAgY2FzZSAwOlxuICAgICAgc3RhdGUucGlwZXMgPSBkZXN0O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDE6XG4gICAgICBzdGF0ZS5waXBlcyA9IFtzdGF0ZS5waXBlcywgZGVzdF07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0ZS5waXBlcy5wdXNoKGRlc3QpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBzdGF0ZS5waXBlc0NvdW50ICs9IDE7XG4gIGRlYnVnKCdwaXBlIGNvdW50PSVkIG9wdHM9JWonLCBzdGF0ZS5waXBlc0NvdW50LCBwaXBlT3B0cyk7XG4gIHZhciBkb0VuZCA9ICghcGlwZU9wdHMgfHwgcGlwZU9wdHMuZW5kICE9PSBmYWxzZSkgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRvdXQgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRlcnI7XG4gIHZhciBlbmRGbiA9IGRvRW5kID8gb25lbmQgOiB1bnBpcGU7XG4gIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBwcm9jZXNzLm5leHRUaWNrKGVuZEZuKTtlbHNlIHNyYy5vbmNlKCdlbmQnLCBlbmRGbik7XG4gIGRlc3Qub24oJ3VucGlwZScsIG9udW5waXBlKTtcblxuICBmdW5jdGlvbiBvbnVucGlwZShyZWFkYWJsZSwgdW5waXBlSW5mbykge1xuICAgIGRlYnVnKCdvbnVucGlwZScpO1xuXG4gICAgaWYgKHJlYWRhYmxlID09PSBzcmMpIHtcbiAgICAgIGlmICh1bnBpcGVJbmZvICYmIHVucGlwZUluZm8uaGFzVW5waXBlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgdW5waXBlSW5mby5oYXNVbnBpcGVkID0gdHJ1ZTtcbiAgICAgICAgY2xlYW51cCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uZW5kKCkge1xuICAgIGRlYnVnKCdvbmVuZCcpO1xuICAgIGRlc3QuZW5kKCk7XG4gIH0gLy8gd2hlbiB0aGUgZGVzdCBkcmFpbnMsIGl0IHJlZHVjZXMgdGhlIGF3YWl0RHJhaW4gY291bnRlclxuICAvLyBvbiB0aGUgc291cmNlLiAgVGhpcyB3b3VsZCBiZSBtb3JlIGVsZWdhbnQgd2l0aCBhIC5vbmNlKClcbiAgLy8gaGFuZGxlciBpbiBmbG93KCksIGJ1dCBhZGRpbmcgYW5kIHJlbW92aW5nIHJlcGVhdGVkbHkgaXNcbiAgLy8gdG9vIHNsb3cuXG5cblxuICB2YXIgb25kcmFpbiA9IHBpcGVPbkRyYWluKHNyYyk7XG4gIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbik7XG4gIHZhciBjbGVhbmVkVXAgPSBmYWxzZTtcblxuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIGRlYnVnKCdjbGVhbnVwJyk7IC8vIGNsZWFudXAgZXZlbnQgaGFuZGxlcnMgb25jZSB0aGUgcGlwZSBpcyBicm9rZW5cblxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCd1bnBpcGUnLCBvbnVucGlwZSk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCB1bnBpcGUpO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZGF0YScsIG9uZGF0YSk7XG4gICAgY2xlYW5lZFVwID0gdHJ1ZTsgLy8gaWYgdGhlIHJlYWRlciBpcyB3YWl0aW5nIGZvciBhIGRyYWluIGV2ZW50IGZyb20gdGhpc1xuICAgIC8vIHNwZWNpZmljIHdyaXRlciwgdGhlbiBpdCB3b3VsZCBjYXVzZSBpdCB0byBuZXZlciBzdGFydFxuICAgIC8vIGZsb3dpbmcgYWdhaW4uXG4gICAgLy8gU28sIGlmIHRoaXMgaXMgYXdhaXRpbmcgYSBkcmFpbiwgdGhlbiB3ZSBqdXN0IGNhbGwgaXQgbm93LlxuICAgIC8vIElmIHdlIGRvbid0IGtub3csIHRoZW4gYXNzdW1lIHRoYXQgd2UgYXJlIHdhaXRpbmcgZm9yIG9uZS5cblxuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluICYmICghZGVzdC5fd3JpdGFibGVTdGF0ZSB8fCBkZXN0Ll93cml0YWJsZVN0YXRlLm5lZWREcmFpbikpIG9uZHJhaW4oKTtcbiAgfVxuXG4gIHNyYy5vbignZGF0YScsIG9uZGF0YSk7XG5cbiAgZnVuY3Rpb24gb25kYXRhKGNodW5rKSB7XG4gICAgZGVidWcoJ29uZGF0YScpO1xuICAgIHZhciByZXQgPSBkZXN0LndyaXRlKGNodW5rKTtcbiAgICBkZWJ1ZygnZGVzdC53cml0ZScsIHJldCk7XG5cbiAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuICAgICAgLy8gSWYgdGhlIHVzZXIgdW5waXBlZCBkdXJpbmcgYGRlc3Qud3JpdGUoKWAsIGl0IGlzIHBvc3NpYmxlXG4gICAgICAvLyB0byBnZXQgc3R1Y2sgaW4gYSBwZXJtYW5lbnRseSBwYXVzZWQgc3RhdGUgaWYgdGhhdCB3cml0ZVxuICAgICAgLy8gYWxzbyByZXR1cm5lZCBmYWxzZS5cbiAgICAgIC8vID0+IENoZWNrIHdoZXRoZXIgYGRlc3RgIGlzIHN0aWxsIGEgcGlwaW5nIGRlc3RpbmF0aW9uLlxuICAgICAgaWYgKChzdGF0ZS5waXBlc0NvdW50ID09PSAxICYmIHN0YXRlLnBpcGVzID09PSBkZXN0IHx8IHN0YXRlLnBpcGVzQ291bnQgPiAxICYmIGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpICE9PSAtMSkgJiYgIWNsZWFuZWRVcCkge1xuICAgICAgICBkZWJ1ZygnZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlJywgc3RhdGUuYXdhaXREcmFpbik7XG4gICAgICAgIHN0YXRlLmF3YWl0RHJhaW4rKztcbiAgICAgIH1cblxuICAgICAgc3JjLnBhdXNlKCk7XG4gICAgfVxuICB9IC8vIGlmIHRoZSBkZXN0IGhhcyBhbiBlcnJvciwgdGhlbiBzdG9wIHBpcGluZyBpbnRvIGl0LlxuICAvLyBob3dldmVyLCBkb24ndCBzdXBwcmVzcyB0aGUgdGhyb3dpbmcgYmVoYXZpb3IgZm9yIHRoaXMuXG5cblxuICBmdW5jdGlvbiBvbmVycm9yKGVyKSB7XG4gICAgZGVidWcoJ29uZXJyb3InLCBlcik7XG4gICAgdW5waXBlKCk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBpZiAoRUVsaXN0ZW5lckNvdW50KGRlc3QsICdlcnJvcicpID09PSAwKSBlcnJvck9yRGVzdHJveShkZXN0LCBlcik7XG4gIH0gLy8gTWFrZSBzdXJlIG91ciBlcnJvciBoYW5kbGVyIGlzIGF0dGFjaGVkIGJlZm9yZSB1c2VybGFuZCBvbmVzLlxuXG5cbiAgcHJlcGVuZExpc3RlbmVyKGRlc3QsICdlcnJvcicsIG9uZXJyb3IpOyAvLyBCb3RoIGNsb3NlIGFuZCBmaW5pc2ggc2hvdWxkIHRyaWdnZXIgdW5waXBlLCBidXQgb25seSBvbmNlLlxuXG4gIGZ1bmN0aW9uIG9uY2xvc2UoKSB7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIHVucGlwZSgpO1xuICB9XG5cbiAgZGVzdC5vbmNlKCdjbG9zZScsIG9uY2xvc2UpO1xuXG4gIGZ1bmN0aW9uIG9uZmluaXNoKCkge1xuICAgIGRlYnVnKCdvbmZpbmlzaCcpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgdW5waXBlKCk7XG4gIH1cblxuICBkZXN0Lm9uY2UoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcblxuICBmdW5jdGlvbiB1bnBpcGUoKSB7XG4gICAgZGVidWcoJ3VucGlwZScpO1xuICAgIHNyYy51bnBpcGUoZGVzdCk7XG4gIH0gLy8gdGVsbCB0aGUgZGVzdCB0aGF0IGl0J3MgYmVpbmcgcGlwZWQgdG9cblxuXG4gIGRlc3QuZW1pdCgncGlwZScsIHNyYyk7IC8vIHN0YXJ0IHRoZSBmbG93IGlmIGl0IGhhc24ndCBiZWVuIHN0YXJ0ZWQgYWxyZWFkeS5cblxuICBpZiAoIXN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncGlwZSByZXN1bWUnKTtcbiAgICBzcmMucmVzdW1lKCk7XG4gIH1cblxuICByZXR1cm4gZGVzdDtcbn07XG5cbmZ1bmN0aW9uIHBpcGVPbkRyYWluKHNyYykge1xuICByZXR1cm4gZnVuY3Rpb24gcGlwZU9uRHJhaW5GdW5jdGlvblJlc3VsdCgpIHtcbiAgICB2YXIgc3RhdGUgPSBzcmMuX3JlYWRhYmxlU3RhdGU7XG4gICAgZGVidWcoJ3BpcGVPbkRyYWluJywgc3RhdGUuYXdhaXREcmFpbik7XG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4pIHN0YXRlLmF3YWl0RHJhaW4tLTtcblxuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluID09PSAwICYmIEVFbGlzdGVuZXJDb3VudChzcmMsICdkYXRhJykpIHtcbiAgICAgIHN0YXRlLmZsb3dpbmcgPSB0cnVlO1xuICAgICAgZmxvdyhzcmMpO1xuICAgIH1cbiAgfTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLnVucGlwZSA9IGZ1bmN0aW9uIChkZXN0KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciB1bnBpcGVJbmZvID0ge1xuICAgIGhhc1VucGlwZWQ6IGZhbHNlXG4gIH07IC8vIGlmIHdlJ3JlIG5vdCBwaXBpbmcgYW55d2hlcmUsIHRoZW4gZG8gbm90aGluZy5cblxuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMCkgcmV0dXJuIHRoaXM7IC8vIGp1c3Qgb25lIGRlc3RpbmF0aW9uLiAgbW9zdCBjb21tb24gY2FzZS5cblxuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMSkge1xuICAgIC8vIHBhc3NlZCBpbiBvbmUsIGJ1dCBpdCdzIG5vdCB0aGUgcmlnaHQgb25lLlxuICAgIGlmIChkZXN0ICYmIGRlc3QgIT09IHN0YXRlLnBpcGVzKSByZXR1cm4gdGhpcztcbiAgICBpZiAoIWRlc3QpIGRlc3QgPSBzdGF0ZS5waXBlczsgLy8gZ290IGEgbWF0Y2guXG5cbiAgICBzdGF0ZS5waXBlcyA9IG51bGw7XG4gICAgc3RhdGUucGlwZXNDb3VudCA9IDA7XG4gICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgIGlmIChkZXN0KSBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pO1xuICAgIHJldHVybiB0aGlzO1xuICB9IC8vIHNsb3cgY2FzZS4gbXVsdGlwbGUgcGlwZSBkZXN0aW5hdGlvbnMuXG5cblxuICBpZiAoIWRlc3QpIHtcbiAgICAvLyByZW1vdmUgYWxsLlxuICAgIHZhciBkZXN0cyA9IHN0YXRlLnBpcGVzO1xuICAgIHZhciBsZW4gPSBzdGF0ZS5waXBlc0NvdW50O1xuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBkZXN0c1tpXS5lbWl0KCd1bnBpcGUnLCB0aGlzLCB7XG4gICAgICAgIGhhc1VucGlwZWQ6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSAvLyB0cnkgdG8gZmluZCB0aGUgcmlnaHQgb25lLlxuXG5cbiAgdmFyIGluZGV4ID0gaW5kZXhPZihzdGF0ZS5waXBlcywgZGVzdCk7XG4gIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiB0aGlzO1xuICBzdGF0ZS5waXBlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICBzdGF0ZS5waXBlc0NvdW50IC09IDE7XG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSBzdGF0ZS5waXBlcyA9IHN0YXRlLnBpcGVzWzBdO1xuICBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pO1xuICByZXR1cm4gdGhpcztcbn07IC8vIHNldCB1cCBkYXRhIGV2ZW50cyBpZiB0aGV5IGFyZSBhc2tlZCBmb3Jcbi8vIEVuc3VyZSByZWFkYWJsZSBsaXN0ZW5lcnMgZXZlbnR1YWxseSBnZXQgc29tZXRoaW5nXG5cblxuUmVhZGFibGUucHJvdG90eXBlLm9uID0gZnVuY3Rpb24gKGV2LCBmbikge1xuICB2YXIgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsIGV2LCBmbik7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG5cbiAgaWYgKGV2ID09PSAnZGF0YScpIHtcbiAgICAvLyB1cGRhdGUgcmVhZGFibGVMaXN0ZW5pbmcgc28gdGhhdCByZXN1bWUoKSBtYXkgYmUgYSBuby1vcFxuICAgIC8vIGEgZmV3IGxpbmVzIGRvd24uIFRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgb25jZSgncmVhZGFibGUnKS5cbiAgICBzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZyA9IHRoaXMubGlzdGVuZXJDb3VudCgncmVhZGFibGUnKSA+IDA7IC8vIFRyeSBzdGFydCBmbG93aW5nIG9uIG5leHQgdGljayBpZiBzdHJlYW0gaXNuJ3QgZXhwbGljaXRseSBwYXVzZWRcblxuICAgIGlmIChzdGF0ZS5mbG93aW5nICE9PSBmYWxzZSkgdGhpcy5yZXN1bWUoKTtcbiAgfSBlbHNlIGlmIChldiA9PT0gJ3JlYWRhYmxlJykge1xuICAgIGlmICghc3RhdGUuZW5kRW1pdHRlZCAmJiAhc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcpIHtcbiAgICAgIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcbiAgICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICAgICAgZGVidWcoJ29uIHJlYWRhYmxlJywgc3RhdGUubGVuZ3RoLCBzdGF0ZS5yZWFkaW5nKTtcblxuICAgICAgaWYgKHN0YXRlLmxlbmd0aCkge1xuICAgICAgICBlbWl0UmVhZGFibGUodGhpcyk7XG4gICAgICB9IGVsc2UgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soblJlYWRpbmdOZXh0VGljaywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cblJlYWRhYmxlLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IFJlYWRhYmxlLnByb3RvdHlwZS5vbjtcblxuUmVhZGFibGUucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID0gZnVuY3Rpb24gKGV2LCBmbikge1xuICB2YXIgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lci5jYWxsKHRoaXMsIGV2LCBmbik7XG5cbiAgaWYgKGV2ID09PSAncmVhZGFibGUnKSB7XG4gICAgLy8gV2UgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBzb21lb25lIHN0aWxsIGxpc3RlbmluZyB0b1xuICAgIC8vIHJlYWRhYmxlIGFuZCByZXNldCB0aGUgc3RhdGUuIEhvd2V2ZXIgdGhpcyBuZWVkcyB0byBoYXBwZW5cbiAgICAvLyBhZnRlciByZWFkYWJsZSBoYXMgYmVlbiBlbWl0dGVkIGJ1dCBiZWZvcmUgSS9PIChuZXh0VGljaykgdG9cbiAgICAvLyBzdXBwb3J0IG9uY2UoJ3JlYWRhYmxlJywgZm4pIGN5Y2xlcy4gVGhpcyBtZWFucyB0aGF0IGNhbGxpbmdcbiAgICAvLyByZXN1bWUgd2l0aGluIHRoZSBzYW1lIHRpY2sgd2lsbCBoYXZlIG5vXG4gICAgLy8gZWZmZWN0LlxuICAgIHByb2Nlc3MubmV4dFRpY2sodXBkYXRlUmVhZGFibGVMaXN0ZW5pbmcsIHRoaXMpO1xuICB9XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cblJlYWRhYmxlLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBmdW5jdGlvbiAoZXYpIHtcbiAgdmFyIHJlcyA9IFN0cmVhbS5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgaWYgKGV2ID09PSAncmVhZGFibGUnIHx8IGV2ID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIHNvbWVvbmUgc3RpbGwgbGlzdGVuaW5nIHRvXG4gICAgLy8gcmVhZGFibGUgYW5kIHJlc2V0IHRoZSBzdGF0ZS4gSG93ZXZlciB0aGlzIG5lZWRzIHRvIGhhcHBlblxuICAgIC8vIGFmdGVyIHJlYWRhYmxlIGhhcyBiZWVuIGVtaXR0ZWQgYnV0IGJlZm9yZSBJL08gKG5leHRUaWNrKSB0b1xuICAgIC8vIHN1cHBvcnQgb25jZSgncmVhZGFibGUnLCBmbikgY3ljbGVzLiBUaGlzIG1lYW5zIHRoYXQgY2FsbGluZ1xuICAgIC8vIHJlc3VtZSB3aXRoaW4gdGhlIHNhbWUgdGljayB3aWxsIGhhdmUgbm9cbiAgICAvLyBlZmZlY3QuXG4gICAgcHJvY2Vzcy5uZXh0VGljayh1cGRhdGVSZWFkYWJsZUxpc3RlbmluZywgdGhpcyk7XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblxuZnVuY3Rpb24gdXBkYXRlUmVhZGFibGVMaXN0ZW5pbmcoc2VsZikge1xuICB2YXIgc3RhdGUgPSBzZWxmLl9yZWFkYWJsZVN0YXRlO1xuICBzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZyA9IHNlbGYubGlzdGVuZXJDb3VudCgncmVhZGFibGUnKSA+IDA7XG5cbiAgaWYgKHN0YXRlLnJlc3VtZVNjaGVkdWxlZCAmJiAhc3RhdGUucGF1c2VkKSB7XG4gICAgLy8gZmxvd2luZyBuZWVkcyB0byBiZSBzZXQgdG8gdHJ1ZSBub3csIG90aGVyd2lzZVxuICAgIC8vIHRoZSB1cGNvbWluZyByZXN1bWUgd2lsbCBub3QgZmxvdy5cbiAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTsgLy8gY3J1ZGUgd2F5IHRvIGNoZWNrIGlmIHdlIHNob3VsZCByZXN1bWVcbiAgfSBlbHNlIGlmIChzZWxmLmxpc3RlbmVyQ291bnQoJ2RhdGEnKSA+IDApIHtcbiAgICBzZWxmLnJlc3VtZSgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG5SZWFkaW5nTmV4dFRpY2soc2VsZikge1xuICBkZWJ1ZygncmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwJyk7XG4gIHNlbGYucmVhZCgwKTtcbn0gLy8gcGF1c2UoKSBhbmQgcmVzdW1lKCkgYXJlIHJlbW5hbnRzIG9mIHRoZSBsZWdhY3kgcmVhZGFibGUgc3RyZWFtIEFQSVxuLy8gSWYgdGhlIHVzZXIgdXNlcyB0aGVtLCB0aGVuIHN3aXRjaCBpbnRvIG9sZCBtb2RlLlxuXG5cblJlYWRhYmxlLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG5cbiAgaWYgKCFzdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3Jlc3VtZScpOyAvLyB3ZSBmbG93IG9ubHkgaWYgdGhlcmUgaXMgbm8gb25lIGxpc3RlbmluZ1xuICAgIC8vIGZvciByZWFkYWJsZSwgYnV0IHdlIHN0aWxsIGhhdmUgdG8gY2FsbFxuICAgIC8vIHJlc3VtZSgpXG5cbiAgICBzdGF0ZS5mbG93aW5nID0gIXN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nO1xuICAgIHJlc3VtZSh0aGlzLCBzdGF0ZSk7XG4gIH1cblxuICBzdGF0ZS5wYXVzZWQgPSBmYWxzZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiByZXN1bWUoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlc3VtZVNjaGVkdWxlZCkge1xuICAgIHN0YXRlLnJlc3VtZVNjaGVkdWxlZCA9IHRydWU7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhyZXN1bWVfLCBzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXN1bWVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgZGVidWcoJ3Jlc3VtZScsIHN0YXRlLnJlYWRpbmcpO1xuXG4gIGlmICghc3RhdGUucmVhZGluZykge1xuICAgIHN0cmVhbS5yZWFkKDApO1xuICB9XG5cbiAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gZmFsc2U7XG4gIHN0cmVhbS5lbWl0KCdyZXN1bWUnKTtcbiAgZmxvdyhzdHJlYW0pO1xuICBpZiAoc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUucmVhZGluZykgc3RyZWFtLnJlYWQoMCk7XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgZGVidWcoJ2NhbGwgcGF1c2UgZmxvd2luZz0laicsIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyk7XG5cbiAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyAhPT0gZmFsc2UpIHtcbiAgICBkZWJ1ZygncGF1c2UnKTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmVtaXQoJ3BhdXNlJyk7XG4gIH1cblxuICB0aGlzLl9yZWFkYWJsZVN0YXRlLnBhdXNlZCA9IHRydWU7XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZmxvdyhzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBkZWJ1ZygnZmxvdycsIHN0YXRlLmZsb3dpbmcpO1xuXG4gIHdoaWxlIChzdGF0ZS5mbG93aW5nICYmIHN0cmVhbS5yZWFkKCkgIT09IG51bGwpIHtcbiAgICA7XG4gIH1cbn0gLy8gd3JhcCBhbiBvbGQtc3R5bGUgc3RyZWFtIGFzIHRoZSBhc3luYyBkYXRhIHNvdXJjZS5cbi8vIFRoaXMgaXMgKm5vdCogcGFydCBvZiB0aGUgcmVhZGFibGUgc3RyZWFtIGludGVyZmFjZS5cbi8vIEl0IGlzIGFuIHVnbHkgdW5mb3J0dW5hdGUgbWVzcyBvZiBoaXN0b3J5LlxuXG5cblJlYWRhYmxlLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24gKHN0cmVhbSkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBwYXVzZWQgPSBmYWxzZTtcbiAgc3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZW5kJyk7XG5cbiAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhc3RhdGUuZW5kZWQpIHtcbiAgICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgICBpZiAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoKSBfdGhpcy5wdXNoKGNodW5rKTtcbiAgICB9XG5cbiAgICBfdGhpcy5wdXNoKG51bGwpO1xuICB9KTtcbiAgc3RyZWFtLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZGF0YScpO1xuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspOyAvLyBkb24ndCBza2lwIG92ZXIgZmFsc3kgdmFsdWVzIGluIG9iamVjdE1vZGVcblxuICAgIGlmIChzdGF0ZS5vYmplY3RNb2RlICYmIChjaHVuayA9PT0gbnVsbCB8fCBjaHVuayA9PT0gdW5kZWZpbmVkKSkgcmV0dXJuO2Vsc2UgaWYgKCFzdGF0ZS5vYmplY3RNb2RlICYmICghY2h1bmsgfHwgIWNodW5rLmxlbmd0aCkpIHJldHVybjtcblxuICAgIHZhciByZXQgPSBfdGhpcy5wdXNoKGNodW5rKTtcblxuICAgIGlmICghcmV0KSB7XG4gICAgICBwYXVzZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLnBhdXNlKCk7XG4gICAgfVxuICB9KTsgLy8gcHJveHkgYWxsIHRoZSBvdGhlciBtZXRob2RzLlxuICAvLyBpbXBvcnRhbnQgd2hlbiB3cmFwcGluZyBmaWx0ZXJzIGFuZCBkdXBsZXhlcy5cblxuICBmb3IgKHZhciBpIGluIHN0cmVhbSkge1xuICAgIGlmICh0aGlzW2ldID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIHN0cmVhbVtpXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpc1tpXSA9IGZ1bmN0aW9uIG1ldGhvZFdyYXAobWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBtZXRob2RXcmFwUmV0dXJuRnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHN0cmVhbVttZXRob2RdLmFwcGx5KHN0cmVhbSwgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICAgIH0oaSk7XG4gICAgfVxuICB9IC8vIHByb3h5IGNlcnRhaW4gaW1wb3J0YW50IGV2ZW50cy5cblxuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwga1Byb3h5RXZlbnRzLmxlbmd0aDsgbisrKSB7XG4gICAgc3RyZWFtLm9uKGtQcm94eUV2ZW50c1tuXSwgdGhpcy5lbWl0LmJpbmQodGhpcywga1Byb3h5RXZlbnRzW25dKSk7XG4gIH0gLy8gd2hlbiB3ZSB0cnkgdG8gY29uc3VtZSBzb21lIG1vcmUgYnl0ZXMsIHNpbXBseSB1bnBhdXNlIHRoZVxuICAvLyB1bmRlcmx5aW5nIHN0cmVhbS5cblxuXG4gIHRoaXMuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICAgIGRlYnVnKCd3cmFwcGVkIF9yZWFkJywgbik7XG5cbiAgICBpZiAocGF1c2VkKSB7XG4gICAgICBwYXVzZWQgPSBmYWxzZTtcbiAgICAgIHN0cmVhbS5yZXN1bWUoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5pZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJykge1xuICBSZWFkYWJsZS5wcm90b3R5cGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY3JlYXRlUmVhZGFibGVTdHJlYW1Bc3luY0l0ZXJhdG9yID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2FzeW5jX2l0ZXJhdG9yJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvcih0aGlzKTtcbiAgfTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ3JlYWRhYmxlSGlnaFdhdGVyTWFyaycsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhZGFibGUucHJvdG90eXBlLCAncmVhZGFibGVCdWZmZXInLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlICYmIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdyZWFkYWJsZUZsb3dpbmcnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gc2V0KHN0YXRlKSB7XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUpIHtcbiAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9IHN0YXRlO1xuICAgIH1cbiAgfVxufSk7IC8vIGV4cG9zZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seS5cblxuUmVhZGFibGUuX2Zyb21MaXN0ID0gZnJvbUxpc3Q7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhZGFibGUucHJvdG90eXBlLCAncmVhZGFibGVMZW5ndGgnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmxlbmd0aDtcbiAgfVxufSk7IC8vIFBsdWNrIG9mZiBuIGJ5dGVzIGZyb20gYW4gYXJyYXkgb2YgYnVmZmVycy5cbi8vIExlbmd0aCBpcyB0aGUgY29tYmluZWQgbGVuZ3RocyBvZiBhbGwgdGhlIGJ1ZmZlcnMgaW4gdGhlIGxpc3QuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cblxuZnVuY3Rpb24gZnJvbUxpc3Qobiwgc3RhdGUpIHtcbiAgLy8gbm90aGluZyBidWZmZXJlZFxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgdmFyIHJldDtcbiAgaWYgKHN0YXRlLm9iamVjdE1vZGUpIHJldCA9IHN0YXRlLmJ1ZmZlci5zaGlmdCgpO2Vsc2UgaWYgKCFuIHx8IG4gPj0gc3RhdGUubGVuZ3RoKSB7XG4gICAgLy8gcmVhZCBpdCBhbGwsIHRydW5jYXRlIHRoZSBsaXN0XG4gICAgaWYgKHN0YXRlLmRlY29kZXIpIHJldCA9IHN0YXRlLmJ1ZmZlci5qb2luKCcnKTtlbHNlIGlmIChzdGF0ZS5idWZmZXIubGVuZ3RoID09PSAxKSByZXQgPSBzdGF0ZS5idWZmZXIuZmlyc3QoKTtlbHNlIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25jYXQoc3RhdGUubGVuZ3RoKTtcbiAgICBzdGF0ZS5idWZmZXIuY2xlYXIoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyByZWFkIHBhcnQgb2YgbGlzdFxuICAgIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25zdW1lKG4sIHN0YXRlLmRlY29kZXIpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGRlYnVnKCdlbmRSZWFkYWJsZScsIHN0YXRlLmVuZEVtaXR0ZWQpO1xuXG4gIGlmICghc3RhdGUuZW5kRW1pdHRlZCkge1xuICAgIHN0YXRlLmVuZGVkID0gdHJ1ZTtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGVuZFJlYWRhYmxlTlQsIHN0YXRlLCBzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlTlQoc3RhdGUsIHN0cmVhbSkge1xuICBkZWJ1ZygnZW5kUmVhZGFibGVOVCcsIHN0YXRlLmVuZEVtaXR0ZWQsIHN0YXRlLmxlbmd0aCk7IC8vIENoZWNrIHRoYXQgd2UgZGlkbid0IGdldCBvbmUgbGFzdCB1bnNoaWZ0LlxuXG4gIGlmICghc3RhdGUuZW5kRW1pdHRlZCAmJiBzdGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICBzdGF0ZS5lbmRFbWl0dGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0ucmVhZGFibGUgPSBmYWxzZTtcbiAgICBzdHJlYW0uZW1pdCgnZW5kJyk7XG5cbiAgICBpZiAoc3RhdGUuYXV0b0Rlc3Ryb3kpIHtcbiAgICAgIC8vIEluIGNhc2Ugb2YgZHVwbGV4IHN0cmVhbXMgd2UgbmVlZCBhIHdheSB0byBkZXRlY3RcbiAgICAgIC8vIGlmIHRoZSB3cml0YWJsZSBzaWRlIGlzIHJlYWR5IGZvciBhdXRvRGVzdHJveSBhcyB3ZWxsXG4gICAgICB2YXIgd1N0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlO1xuXG4gICAgICBpZiAoIXdTdGF0ZSB8fCB3U3RhdGUuYXV0b0Rlc3Ryb3kgJiYgd1N0YXRlLmZpbmlzaGVkKSB7XG4gICAgICAgIHN0cmVhbS5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nKSB7XG4gIFJlYWRhYmxlLmZyb20gPSBmdW5jdGlvbiAoaXRlcmFibGUsIG9wdHMpIHtcbiAgICBpZiAoZnJvbSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBmcm9tID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Zyb20nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJvbShSZWFkYWJsZSwgaXRlcmFibGUsIG9wdHMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBpbmRleE9mKHhzLCB4KSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKHhzW2ldID09PSB4KSByZXR1cm4gaTtcbiAgfVxuXG4gIHJldHVybiAtMTtcbn0iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbi8vIGEgdHJhbnNmb3JtIHN0cmVhbSBpcyBhIHJlYWRhYmxlL3dyaXRhYmxlIHN0cmVhbSB3aGVyZSB5b3UgZG9cbi8vIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhLiAgU29tZXRpbWVzIGl0J3MgY2FsbGVkIGEgXCJmaWx0ZXJcIixcbi8vIGJ1dCB0aGF0J3Mgbm90IGEgZ3JlYXQgbmFtZSBmb3IgaXQsIHNpbmNlIHRoYXQgaW1wbGllcyBhIHRoaW5nIHdoZXJlXG4vLyBzb21lIGJpdHMgcGFzcyB0aHJvdWdoLCBhbmQgb3RoZXJzIGFyZSBzaW1wbHkgaWdub3JlZC4gIChUaGF0IHdvdWxkXG4vLyBiZSBhIHZhbGlkIGV4YW1wbGUgb2YgYSB0cmFuc2Zvcm0sIG9mIGNvdXJzZS4pXG4vL1xuLy8gV2hpbGUgdGhlIG91dHB1dCBpcyBjYXVzYWxseSByZWxhdGVkIHRvIHRoZSBpbnB1dCwgaXQncyBub3QgYVxuLy8gbmVjZXNzYXJpbHkgc3ltbWV0cmljIG9yIHN5bmNocm9ub3VzIHRyYW5zZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsXG4vLyBhIHpsaWIgc3RyZWFtIG1pZ2h0IHRha2UgbXVsdGlwbGUgcGxhaW4tdGV4dCB3cml0ZXMoKSwgYW5kIHRoZW5cbi8vIGVtaXQgYSBzaW5nbGUgY29tcHJlc3NlZCBjaHVuayBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZS5cbi8vXG4vLyBIZXJlJ3MgaG93IHRoaXMgd29ya3M6XG4vL1xuLy8gVGhlIFRyYW5zZm9ybSBzdHJlYW0gaGFzIGFsbCB0aGUgYXNwZWN0cyBvZiB0aGUgcmVhZGFibGUgYW5kIHdyaXRhYmxlXG4vLyBzdHJlYW0gY2xhc3Nlcy4gIFdoZW4geW91IHdyaXRlKGNodW5rKSwgdGhhdCBjYWxscyBfd3JpdGUoY2h1bmssY2IpXG4vLyBpbnRlcm5hbGx5LCBhbmQgcmV0dXJucyBmYWxzZSBpZiB0aGVyZSdzIGEgbG90IG9mIHBlbmRpbmcgd3JpdGVzXG4vLyBidWZmZXJlZCB1cC4gIFdoZW4geW91IGNhbGwgcmVhZCgpLCB0aGF0IGNhbGxzIF9yZWFkKG4pIHVudGlsXG4vLyB0aGVyZSdzIGVub3VnaCBwZW5kaW5nIHJlYWRhYmxlIGRhdGEgYnVmZmVyZWQgdXAuXG4vL1xuLy8gSW4gYSB0cmFuc2Zvcm0gc3RyZWFtLCB0aGUgd3JpdHRlbiBkYXRhIGlzIHBsYWNlZCBpbiBhIGJ1ZmZlci4gIFdoZW5cbi8vIF9yZWFkKG4pIGlzIGNhbGxlZCwgaXQgdHJhbnNmb3JtcyB0aGUgcXVldWVkIHVwIGRhdGEsIGNhbGxpbmcgdGhlXG4vLyBidWZmZXJlZCBfd3JpdGUgY2IncyBhcyBpdCBjb25zdW1lcyBjaHVua3MuICBJZiBjb25zdW1pbmcgYSBzaW5nbGVcbi8vIHdyaXR0ZW4gY2h1bmsgd291bGQgcmVzdWx0IGluIG11bHRpcGxlIG91dHB1dCBjaHVua3MsIHRoZW4gdGhlIGZpcnN0XG4vLyBvdXRwdXR0ZWQgYml0IGNhbGxzIHRoZSByZWFkY2IsIGFuZCBzdWJzZXF1ZW50IGNodW5rcyBqdXN0IGdvIGludG9cbi8vIHRoZSByZWFkIGJ1ZmZlciwgYW5kIHdpbGwgY2F1c2UgaXQgdG8gZW1pdCAncmVhZGFibGUnIGlmIG5lY2Vzc2FyeS5cbi8vXG4vLyBUaGlzIHdheSwgYmFjay1wcmVzc3VyZSBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSByZWFkaW5nIHNpZGUsXG4vLyBzaW5jZSBfcmVhZCBoYXMgdG8gYmUgY2FsbGVkIHRvIHN0YXJ0IHByb2Nlc3NpbmcgYSBuZXcgY2h1bmsuICBIb3dldmVyLFxuLy8gYSBwYXRob2xvZ2ljYWwgaW5mbGF0ZSB0eXBlIG9mIHRyYW5zZm9ybSBjYW4gY2F1c2UgZXhjZXNzaXZlIGJ1ZmZlcmluZ1xuLy8gaGVyZS4gIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3RyZWFtIHdoZXJlIGV2ZXJ5IGJ5dGUgb2YgaW5wdXQgaXNcbi8vIGludGVycHJldGVkIGFzIGFuIGludGVnZXIgZnJvbSAwLTI1NSwgYW5kIHRoZW4gcmVzdWx0cyBpbiB0aGF0IG1hbnlcbi8vIGJ5dGVzIG9mIG91dHB1dC4gIFdyaXRpbmcgdGhlIDQgYnl0ZXMge2ZmLGZmLGZmLGZmfSB3b3VsZCByZXN1bHQgaW5cbi8vIDFrYiBvZiBkYXRhIGJlaW5nIG91dHB1dC4gIEluIHRoaXMgY2FzZSwgeW91IGNvdWxkIHdyaXRlIGEgdmVyeSBzbWFsbFxuLy8gYW1vdW50IG9mIGlucHV0LCBhbmQgZW5kIHVwIHdpdGggYSB2ZXJ5IGxhcmdlIGFtb3VudCBvZiBvdXRwdXQuICBJblxuLy8gc3VjaCBhIHBhdGhvbG9naWNhbCBpbmZsYXRpbmcgbWVjaGFuaXNtLCB0aGVyZSdkIGJlIG5vIHdheSB0byB0ZWxsXG4vLyB0aGUgc3lzdGVtIHRvIHN0b3AgZG9pbmcgdGhlIHRyYW5zZm9ybS4gIEEgc2luZ2xlIDRNQiB3cml0ZSBjb3VsZFxuLy8gY2F1c2UgdGhlIHN5c3RlbSB0byBydW4gb3V0IG9mIG1lbW9yeS5cbi8vXG4vLyBIb3dldmVyLCBldmVuIGluIHN1Y2ggYSBwYXRob2xvZ2ljYWwgY2FzZSwgb25seSBhIHNpbmdsZSB3cml0dGVuIGNodW5rXG4vLyB3b3VsZCBiZSBjb25zdW1lZCwgYW5kIHRoZW4gdGhlIHJlc3Qgd291bGQgd2FpdCAodW4tdHJhbnNmb3JtZWQpIHVudGlsXG4vLyB0aGUgcmVzdWx0cyBvZiB0aGUgcHJldmlvdXMgdHJhbnNmb3JtZWQgY2h1bmsgd2VyZSBjb25zdW1lZC5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBUcmFuc2Zvcm07XG5cbnZhciBfcmVxdWlyZSRjb2RlcyA9IHJlcXVpcmUoJy4uL2Vycm9ycycpLmNvZGVzLFxuICAgIEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEID0gX3JlcXVpcmUkY29kZXMuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsXG4gICAgRVJSX01VTFRJUExFX0NBTExCQUNLID0gX3JlcXVpcmUkY29kZXMuRVJSX01VTFRJUExFX0NBTExCQUNLLFxuICAgIEVSUl9UUkFOU0ZPUk1fQUxSRUFEWV9UUkFOU0ZPUk1JTkcgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfVFJBTlNGT1JNX0FMUkVBRFlfVFJBTlNGT1JNSU5HLFxuICAgIEVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMCA9IF9yZXF1aXJlJGNvZGVzLkVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMDtcblxudmFyIER1cGxleCA9IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxucmVxdWlyZSgnaW5oZXJpdHMnKShUcmFuc2Zvcm0sIER1cGxleCk7XG5cbmZ1bmN0aW9uIGFmdGVyVHJhbnNmb3JtKGVyLCBkYXRhKSB7XG4gIHZhciB0cyA9IHRoaXMuX3RyYW5zZm9ybVN0YXRlO1xuICB0cy50cmFuc2Zvcm1pbmcgPSBmYWxzZTtcbiAgdmFyIGNiID0gdHMud3JpdGVjYjtcblxuICBpZiAoY2IgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFUlJfTVVMVElQTEVfQ0FMTEJBQ0soKSk7XG4gIH1cblxuICB0cy53cml0ZWNodW5rID0gbnVsbDtcbiAgdHMud3JpdGVjYiA9IG51bGw7XG4gIGlmIChkYXRhICE9IG51bGwpIC8vIHNpbmdsZSBlcXVhbHMgY2hlY2sgZm9yIGJvdGggYG51bGxgIGFuZCBgdW5kZWZpbmVkYFxuICAgIHRoaXMucHVzaChkYXRhKTtcbiAgY2IoZXIpO1xuICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICBycy5yZWFkaW5nID0gZmFsc2U7XG5cbiAgaWYgKHJzLm5lZWRSZWFkYWJsZSB8fCBycy5sZW5ndGggPCBycy5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgdGhpcy5fcmVhZChycy5oaWdoV2F0ZXJNYXJrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBUcmFuc2Zvcm0ob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVHJhbnNmb3JtKSkgcmV0dXJuIG5ldyBUcmFuc2Zvcm0ob3B0aW9ucyk7XG4gIER1cGxleC5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZSA9IHtcbiAgICBhZnRlclRyYW5zZm9ybTogYWZ0ZXJUcmFuc2Zvcm0uYmluZCh0aGlzKSxcbiAgICBuZWVkVHJhbnNmb3JtOiBmYWxzZSxcbiAgICB0cmFuc2Zvcm1pbmc6IGZhbHNlLFxuICAgIHdyaXRlY2I6IG51bGwsXG4gICAgd3JpdGVjaHVuazogbnVsbCxcbiAgICB3cml0ZWVuY29kaW5nOiBudWxsXG4gIH07IC8vIHN0YXJ0IG91dCBhc2tpbmcgZm9yIGEgcmVhZGFibGUgZXZlbnQgb25jZSBkYXRhIGlzIHRyYW5zZm9ybWVkLlxuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTsgLy8gd2UgaGF2ZSBpbXBsZW1lbnRlZCB0aGUgX3JlYWQgbWV0aG9kLCBhbmQgZG9uZSB0aGUgb3RoZXIgdGhpbmdzXG4gIC8vIHRoYXQgUmVhZGFibGUgd2FudHMgYmVmb3JlIHRoZSBmaXJzdCBfcmVhZCBjYWxsLCBzbyB1bnNldCB0aGVcbiAgLy8gc3luYyBndWFyZCBmbGFnLlxuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYyA9IGZhbHNlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fdHJhbnNmb3JtID0gb3B0aW9ucy50cmFuc2Zvcm07XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZsdXNoID09PSAnZnVuY3Rpb24nKSB0aGlzLl9mbHVzaCA9IG9wdGlvbnMuZmx1c2g7XG4gIH0gLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBmaW5pc2hlcywgdGhlbiBmbHVzaCBvdXQgYW55dGhpbmcgcmVtYWluaW5nLlxuXG5cbiAgdGhpcy5vbigncHJlZmluaXNoJywgcHJlZmluaXNoKTtcbn1cblxuZnVuY3Rpb24gcHJlZmluaXNoKCkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIGlmICh0eXBlb2YgdGhpcy5fZmx1c2ggPT09ICdmdW5jdGlvbicgJiYgIXRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkKSB7XG4gICAgdGhpcy5fZmx1c2goZnVuY3Rpb24gKGVyLCBkYXRhKSB7XG4gICAgICBkb25lKF90aGlzLCBlciwgZGF0YSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgZG9uZSh0aGlzLCBudWxsLCBudWxsKTtcbiAgfVxufVxuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHRoaXMuX3RyYW5zZm9ybVN0YXRlLm5lZWRUcmFuc2Zvcm0gPSBmYWxzZTtcbiAgcmV0dXJuIER1cGxleC5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsIGNodW5rLCBlbmNvZGluZyk7XG59OyAvLyBUaGlzIGlzIHRoZSBwYXJ0IHdoZXJlIHlvdSBkbyBzdHVmZiFcbi8vIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gaW4gaW1wbGVtZW50YXRpb24gY2xhc3Nlcy5cbi8vICdjaHVuaycgaXMgYW4gaW5wdXQgY2h1bmsuXG4vL1xuLy8gQ2FsbCBgcHVzaChuZXdDaHVuaylgIHRvIHBhc3MgYWxvbmcgdHJhbnNmb3JtZWQgb3V0cHV0XG4vLyB0byB0aGUgcmVhZGFibGUgc2lkZS4gIFlvdSBtYXkgY2FsbCAncHVzaCcgemVybyBvciBtb3JlIHRpbWVzLlxuLy9cbi8vIENhbGwgYGNiKGVycilgIHdoZW4geW91IGFyZSBkb25lIHdpdGggdGhpcyBjaHVuay4gIElmIHlvdSBwYXNzXG4vLyBhbiBlcnJvciwgdGhlbiB0aGF0J2xsIHB1dCB0aGUgaHVydCBvbiB0aGUgd2hvbGUgb3BlcmF0aW9uLiAgSWYgeW91XG4vLyBuZXZlciBjYWxsIGNiKCksIHRoZW4geW91J2xsIG5ldmVyIGdldCBhbm90aGVyIGNodW5rLlxuXG5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIGNiKG5ldyBFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCgnX3RyYW5zZm9ybSgpJykpO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMud3JpdGVjYiA9IGNiO1xuICB0cy53cml0ZWNodW5rID0gY2h1bms7XG4gIHRzLndyaXRlZW5jb2RpbmcgPSBlbmNvZGluZztcblxuICBpZiAoIXRzLnRyYW5zZm9ybWluZykge1xuICAgIHZhciBycyA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gICAgaWYgKHRzLm5lZWRUcmFuc2Zvcm0gfHwgcnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7XG4gIH1cbn07IC8vIERvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIGFyZ3MgYXJlIGhlcmUuXG4vLyBfdHJhbnNmb3JtIGRvZXMgYWxsIHRoZSB3b3JrLlxuLy8gVGhhdCB3ZSBnb3QgaGVyZSBtZWFucyB0aGF0IHRoZSByZWFkYWJsZSBzaWRlIHdhbnRzIG1vcmUgZGF0YS5cblxuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG5cbiAgaWYgKHRzLndyaXRlY2h1bmsgIT09IG51bGwgJiYgIXRzLnRyYW5zZm9ybWluZykge1xuICAgIHRzLnRyYW5zZm9ybWluZyA9IHRydWU7XG5cbiAgICB0aGlzLl90cmFuc2Zvcm0odHMud3JpdGVjaHVuaywgdHMud3JpdGVlbmNvZGluZywgdHMuYWZ0ZXJUcmFuc2Zvcm0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG1hcmsgdGhhdCB3ZSBuZWVkIGEgdHJhbnNmb3JtLCBzbyB0aGF0IGFueSBkYXRhIHRoYXQgY29tZXMgaW5cbiAgICAvLyB3aWxsIGdldCBwcm9jZXNzZWQsIG5vdyB0aGF0IHdlJ3ZlIGFza2VkIGZvciBpdC5cbiAgICB0cy5uZWVkVHJhbnNmb3JtID0gdHJ1ZTtcbiAgfVxufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIER1cGxleC5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLCBlcnIsIGZ1bmN0aW9uIChlcnIyKSB7XG4gICAgY2IoZXJyMik7XG4gIH0pO1xufTtcblxuZnVuY3Rpb24gZG9uZShzdHJlYW0sIGVyLCBkYXRhKSB7XG4gIGlmIChlcikgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgaWYgKGRhdGEgIT0gbnVsbCkgLy8gc2luZ2xlIGVxdWFscyBjaGVjayBmb3IgYm90aCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgXG4gICAgc3RyZWFtLnB1c2goZGF0YSk7IC8vIFRPRE8oQnJpZGdlQVIpOiBXcml0ZSBhIHRlc3QgZm9yIHRoZXNlIHR3byBlcnJvciBjYXNlc1xuICAvLyBpZiB0aGVyZSdzIG5vdGhpbmcgaW4gdGhlIHdyaXRlIGJ1ZmZlciwgdGhlbiB0aGF0IG1lYW5zXG4gIC8vIHRoYXQgbm90aGluZyBtb3JlIHdpbGwgZXZlciBiZSBwcm92aWRlZFxuXG4gIGlmIChzdHJlYW0uX3dyaXRhYmxlU3RhdGUubGVuZ3RoKSB0aHJvdyBuZXcgRVJSX1RSQU5TRk9STV9XSVRIX0xFTkdUSF8wKCk7XG4gIGlmIChzdHJlYW0uX3RyYW5zZm9ybVN0YXRlLnRyYW5zZm9ybWluZykgdGhyb3cgbmV3IEVSUl9UUkFOU0ZPUk1fQUxSRUFEWV9UUkFOU0ZPUk1JTkcoKTtcbiAgcmV0dXJuIHN0cmVhbS5wdXNoKG51bGwpO1xufSIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuLy8gQSBiaXQgc2ltcGxlciB0aGFuIHJlYWRhYmxlIHN0cmVhbXMuXG4vLyBJbXBsZW1lbnQgYW4gYXN5bmMgLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIGNiKSwgYW5kIGl0J2xsIGhhbmRsZSBhbGxcbi8vIHRoZSBkcmFpbiBldmVudCBlbWlzc2lvbiBhbmQgYnVmZmVyaW5nLlxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdyaXRhYmxlO1xuLyogPHJlcGxhY2VtZW50PiAqL1xuXG5mdW5jdGlvbiBXcml0ZVJlcShjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRoaXMuY2h1bmsgPSBjaHVuaztcbiAgdGhpcy5lbmNvZGluZyA9IGVuY29kaW5nO1xuICB0aGlzLmNhbGxiYWNrID0gY2I7XG4gIHRoaXMubmV4dCA9IG51bGw7XG59IC8vIEl0IHNlZW1zIGEgbGlua2VkIGxpc3QgYnV0IGl0IGlzIG5vdFxuLy8gdGhlcmUgd2lsbCBiZSBvbmx5IDIgb2YgdGhlc2UgZm9yIGVhY2ggc3RyZWFtXG5cblxuZnVuY3Rpb24gQ29ya2VkUmVxdWVzdChzdGF0ZSkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHRoaXMubmV4dCA9IG51bGw7XG4gIHRoaXMuZW50cnkgPSBudWxsO1xuXG4gIHRoaXMuZmluaXNoID0gZnVuY3Rpb24gKCkge1xuICAgIG9uQ29ya2VkRmluaXNoKF90aGlzLCBzdGF0ZSk7XG4gIH07XG59XG4vKiA8L3JlcGxhY2VtZW50PiAqL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG5cbnZhciBEdXBsZXg7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuV3JpdGFibGUuV3JpdGFibGVTdGF0ZSA9IFdyaXRhYmxlU3RhdGU7XG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgaW50ZXJuYWxVdGlsID0ge1xuICBkZXByZWNhdGU6IHJlcXVpcmUoJ3V0aWwtZGVwcmVjYXRlJylcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIFN0cmVhbSA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9zdHJlYW0nKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbnZhciBPdXJVaW50OEFycmF5ID0gZ2xvYmFsLlVpbnQ4QXJyYXkgfHwgZnVuY3Rpb24gKCkge307XG5cbmZ1bmN0aW9uIF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTtcbn1cblxuZnVuY3Rpb24gX2lzVWludDhBcnJheShvYmopIHtcbiAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihvYmopIHx8IG9iaiBpbnN0YW5jZW9mIE91clVpbnQ4QXJyYXk7XG59XG5cbnZhciBkZXN0cm95SW1wbCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95Jyk7XG5cbnZhciBfcmVxdWlyZSA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9zdGF0ZScpLFxuICAgIGdldEhpZ2hXYXRlck1hcmsgPSBfcmVxdWlyZS5nZXRIaWdoV2F0ZXJNYXJrO1xuXG52YXIgX3JlcXVpcmUkY29kZXMgPSByZXF1aXJlKCcuLi9lcnJvcnMnKS5jb2RlcyxcbiAgICBFUlJfSU5WQUxJRF9BUkdfVFlQRSA9IF9yZXF1aXJlJGNvZGVzLkVSUl9JTlZBTElEX0FSR19UWVBFLFxuICAgIEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEID0gX3JlcXVpcmUkY29kZXMuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsXG4gICAgRVJSX01VTFRJUExFX0NBTExCQUNLID0gX3JlcXVpcmUkY29kZXMuRVJSX01VTFRJUExFX0NBTExCQUNLLFxuICAgIEVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfU1RSRUFNX0NBTk5PVF9QSVBFLFxuICAgIEVSUl9TVFJFQU1fREVTVFJPWUVEID0gX3JlcXVpcmUkY29kZXMuRVJSX1NUUkVBTV9ERVNUUk9ZRUQsXG4gICAgRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUyA9IF9yZXF1aXJlJGNvZGVzLkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMsXG4gICAgRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCxcbiAgICBFUlJfVU5LTk9XTl9FTkNPRElORyA9IF9yZXF1aXJlJGNvZGVzLkVSUl9VTktOT1dOX0VOQ09ESU5HO1xuXG52YXIgZXJyb3JPckRlc3Ryb3kgPSBkZXN0cm95SW1wbC5lcnJvck9yRGVzdHJveTtcblxucmVxdWlyZSgnaW5oZXJpdHMnKShXcml0YWJsZSwgU3RyZWFtKTtcblxuZnVuY3Rpb24gbm9wKCkge31cblxuZnVuY3Rpb24gV3JpdGFibGVTdGF0ZShvcHRpb25zLCBzdHJlYW0sIGlzRHVwbGV4KSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OyAvLyBEdXBsZXggc3RyZWFtcyBhcmUgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUsIGJ1dCBzaGFyZVxuICAvLyB0aGUgc2FtZSBvcHRpb25zIG9iamVjdC5cbiAgLy8gSG93ZXZlciwgc29tZSBjYXNlcyByZXF1aXJlIHNldHRpbmcgb3B0aW9ucyB0byBkaWZmZXJlbnRcbiAgLy8gdmFsdWVzIGZvciB0aGUgcmVhZGFibGUgYW5kIHRoZSB3cml0YWJsZSBzaWRlcyBvZiB0aGUgZHVwbGV4IHN0cmVhbSxcbiAgLy8gZS5nLiBvcHRpb25zLnJlYWRhYmxlT2JqZWN0TW9kZSB2cy4gb3B0aW9ucy53cml0YWJsZU9iamVjdE1vZGUsIGV0Yy5cblxuICBpZiAodHlwZW9mIGlzRHVwbGV4ICE9PSAnYm9vbGVhbicpIGlzRHVwbGV4ID0gc3RyZWFtIGluc3RhbmNlb2YgRHVwbGV4OyAvLyBvYmplY3Qgc3RyZWFtIGZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhpcyBzdHJlYW1cbiAgLy8gY29udGFpbnMgYnVmZmVycyBvciBvYmplY3RzLlxuXG4gIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlO1xuICBpZiAoaXNEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMud3JpdGFibGVPYmplY3RNb2RlOyAvLyB0aGUgcG9pbnQgYXQgd2hpY2ggd3JpdGUoKSBzdGFydHMgcmV0dXJuaW5nIGZhbHNlXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgdGhhdCB3ZSBhbHdheXMgcmV0dXJuIGZhbHNlIGlmXG4gIC8vIHRoZSBlbnRpcmUgYnVmZmVyIGlzIG5vdCBmbHVzaGVkIGltbWVkaWF0ZWx5IG9uIHdyaXRlKClcblxuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBnZXRIaWdoV2F0ZXJNYXJrKHRoaXMsIG9wdGlvbnMsICd3cml0YWJsZUhpZ2hXYXRlck1hcmsnLCBpc0R1cGxleCk7IC8vIGlmIF9maW5hbCBoYXMgYmVlbiBjYWxsZWRcblxuICB0aGlzLmZpbmFsQ2FsbGVkID0gZmFsc2U7IC8vIGRyYWluIGV2ZW50IGZsYWcuXG5cbiAgdGhpcy5uZWVkRHJhaW4gPSBmYWxzZTsgLy8gYXQgdGhlIHN0YXJ0IG9mIGNhbGxpbmcgZW5kKClcblxuICB0aGlzLmVuZGluZyA9IGZhbHNlOyAvLyB3aGVuIGVuZCgpIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHJldHVybmVkXG5cbiAgdGhpcy5lbmRlZCA9IGZhbHNlOyAvLyB3aGVuICdmaW5pc2gnIGlzIGVtaXR0ZWRcblxuICB0aGlzLmZpbmlzaGVkID0gZmFsc2U7IC8vIGhhcyBpdCBiZWVuIGRlc3Ryb3llZFxuXG4gIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7IC8vIHNob3VsZCB3ZSBkZWNvZGUgc3RyaW5ncyBpbnRvIGJ1ZmZlcnMgYmVmb3JlIHBhc3NpbmcgdG8gX3dyaXRlP1xuICAvLyB0aGlzIGlzIGhlcmUgc28gdGhhdCBzb21lIG5vZGUtY29yZSBzdHJlYW1zIGNhbiBvcHRpbWl6ZSBzdHJpbmdcbiAgLy8gaGFuZGxpbmcgYXQgYSBsb3dlciBsZXZlbC5cblxuICB2YXIgbm9EZWNvZGUgPSBvcHRpb25zLmRlY29kZVN0cmluZ3MgPT09IGZhbHNlO1xuICB0aGlzLmRlY29kZVN0cmluZ3MgPSAhbm9EZWNvZGU7IC8vIENyeXB0byBpcyBraW5kIG9mIG9sZCBhbmQgY3J1c3R5LiAgSGlzdG9yaWNhbGx5LCBpdHMgZGVmYXVsdCBzdHJpbmdcbiAgLy8gZW5jb2RpbmcgaXMgJ2JpbmFyeScgc28gd2UgaGF2ZSB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlLlxuICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guXG5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7IC8vIG5vdCBhbiBhY3R1YWwgYnVmZmVyIHdlIGtlZXAgdHJhY2sgb2YsIGJ1dCBhIG1lYXN1cmVtZW50XG4gIC8vIG9mIGhvdyBtdWNoIHdlJ3JlIHdhaXRpbmcgdG8gZ2V0IHB1c2hlZCB0byBzb21lIHVuZGVybHlpbmdcbiAgLy8gc29ja2V0IG9yIGZpbGUuXG5cbiAgdGhpcy5sZW5ndGggPSAwOyAvLyBhIGZsYWcgdG8gc2VlIHdoZW4gd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIHdyaXRlLlxuXG4gIHRoaXMud3JpdGluZyA9IGZhbHNlOyAvLyB3aGVuIHRydWUgYWxsIHdyaXRlcyB3aWxsIGJlIGJ1ZmZlcmVkIHVudGlsIC51bmNvcmsoKSBjYWxsXG5cbiAgdGhpcy5jb3JrZWQgPSAwOyAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBvbndyaXRlIGNiIGlzIGNhbGxlZCBpbW1lZGlhdGVseSxcbiAgLy8gb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZSBhbnlcbiAgLy8gYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGUgY2FsbC5cblxuICB0aGlzLnN5bmMgPSB0cnVlOyAvLyBhIGZsYWcgdG8ga25vdyBpZiB3ZSdyZSBwcm9jZXNzaW5nIHByZXZpb3VzbHkgYnVmZmVyZWQgaXRlbXMsIHdoaWNoXG4gIC8vIG1heSBjYWxsIHRoZSBfd3JpdGUoKSBjYWxsYmFjayBpbiB0aGUgc2FtZSB0aWNrLCBzbyB0aGF0IHdlIGRvbid0XG4gIC8vIGVuZCB1cCBpbiBhbiBvdmVybGFwcGVkIG9ud3JpdGUgc2l0dWF0aW9uLlxuXG4gIHRoaXMuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlOyAvLyB0aGUgY2FsbGJhY2sgdGhhdCdzIHBhc3NlZCB0byBfd3JpdGUoY2h1bmssY2IpXG5cbiAgdGhpcy5vbndyaXRlID0gZnVuY3Rpb24gKGVyKSB7XG4gICAgb253cml0ZShzdHJlYW0sIGVyKTtcbiAgfTsgLy8gdGhlIGNhbGxiYWNrIHRoYXQgdGhlIHVzZXIgc3VwcGxpZXMgdG8gd3JpdGUoY2h1bmssZW5jb2RpbmcsY2IpXG5cblxuICB0aGlzLndyaXRlY2IgPSBudWxsOyAvLyB0aGUgYW1vdW50IHRoYXQgaXMgYmVpbmcgd3JpdHRlbiB3aGVuIF93cml0ZSBpcyBjYWxsZWQuXG5cbiAgdGhpcy53cml0ZWxlbiA9IDA7XG4gIHRoaXMuYnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgdGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDsgLy8gbnVtYmVyIG9mIHBlbmRpbmcgdXNlci1zdXBwbGllZCB3cml0ZSBjYWxsYmFja3NcbiAgLy8gdGhpcyBtdXN0IGJlIDAgYmVmb3JlICdmaW5pc2gnIGNhbiBiZSBlbWl0dGVkXG5cbiAgdGhpcy5wZW5kaW5nY2IgPSAwOyAvLyBlbWl0IHByZWZpbmlzaCBpZiB0aGUgb25seSB0aGluZyB3ZSdyZSB3YWl0aW5nIGZvciBpcyBfd3JpdGUgY2JzXG4gIC8vIFRoaXMgaXMgcmVsZXZhbnQgZm9yIHN5bmNocm9ub3VzIFRyYW5zZm9ybSBzdHJlYW1zXG5cbiAgdGhpcy5wcmVmaW5pc2hlZCA9IGZhbHNlOyAvLyBUcnVlIGlmIHRoZSBlcnJvciB3YXMgYWxyZWFkeSBlbWl0dGVkIGFuZCBzaG91bGQgbm90IGJlIHRocm93biBhZ2FpblxuXG4gIHRoaXMuZXJyb3JFbWl0dGVkID0gZmFsc2U7IC8vIFNob3VsZCBjbG9zZSBiZSBlbWl0dGVkIG9uIGRlc3Ryb3kuIERlZmF1bHRzIHRvIHRydWUuXG5cbiAgdGhpcy5lbWl0Q2xvc2UgPSBvcHRpb25zLmVtaXRDbG9zZSAhPT0gZmFsc2U7IC8vIFNob3VsZCAuZGVzdHJveSgpIGJlIGNhbGxlZCBhZnRlciAnZmluaXNoJyAoYW5kIHBvdGVudGlhbGx5ICdlbmQnKVxuXG4gIHRoaXMuYXV0b0Rlc3Ryb3kgPSAhIW9wdGlvbnMuYXV0b0Rlc3Ryb3k7IC8vIGNvdW50IGJ1ZmZlcmVkIHJlcXVlc3RzXG5cbiAgdGhpcy5idWZmZXJlZFJlcXVlc3RDb3VudCA9IDA7IC8vIGFsbG9jYXRlIHRoZSBmaXJzdCBDb3JrZWRSZXF1ZXN0LCB0aGVyZSBpcyBhbHdheXNcbiAgLy8gb25lIGFsbG9jYXRlZCBhbmQgZnJlZSB0byB1c2UsIGFuZCB3ZSBtYWludGFpbiBhdCBtb3N0IHR3b1xuXG4gIHRoaXMuY29ya2VkUmVxdWVzdHNGcmVlID0gbmV3IENvcmtlZFJlcXVlc3QodGhpcyk7XG59XG5cbldyaXRhYmxlU3RhdGUucHJvdG90eXBlLmdldEJ1ZmZlciA9IGZ1bmN0aW9uIGdldEJ1ZmZlcigpIHtcbiAgdmFyIGN1cnJlbnQgPSB0aGlzLmJ1ZmZlcmVkUmVxdWVzdDtcbiAgdmFyIG91dCA9IFtdO1xuXG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgb3V0LnB1c2goY3VycmVudCk7XG4gICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59O1xuXG4oZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZVN0YXRlLnByb3RvdHlwZSwgJ2J1ZmZlcicsIHtcbiAgICAgIGdldDogaW50ZXJuYWxVdGlsLmRlcHJlY2F0ZShmdW5jdGlvbiB3cml0YWJsZVN0YXRlQnVmZmVyR2V0dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCdWZmZXIoKTtcbiAgICAgIH0sICdfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMgZGVwcmVjYXRlZC4gVXNlIF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciAnICsgJ2luc3RlYWQuJywgJ0RFUDAwMDMnKVxuICAgIH0pO1xuICB9IGNhdGNoIChfKSB7fVxufSkoKTsgLy8gVGVzdCBfd3JpdGFibGVTdGF0ZSBmb3IgaW5oZXJpdGFuY2UgdG8gYWNjb3VudCBmb3IgRHVwbGV4IHN0cmVhbXMsXG4vLyB3aG9zZSBwcm90b3R5cGUgY2hhaW4gb25seSBwb2ludHMgdG8gUmVhZGFibGUuXG5cblxudmFyIHJlYWxIYXNJbnN0YW5jZTtcblxuaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmhhc0luc3RhbmNlICYmIHR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICByZWFsSGFzSW5zdGFuY2UgPSBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLCBTeW1ib2wuaGFzSW5zdGFuY2UsIHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUob2JqZWN0KSB7XG4gICAgICBpZiAocmVhbEhhc0luc3RhbmNlLmNhbGwodGhpcywgb2JqZWN0KSkgcmV0dXJuIHRydWU7XG4gICAgICBpZiAodGhpcyAhPT0gV3JpdGFibGUpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgb2JqZWN0Ll93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgV3JpdGFibGVTdGF0ZTtcbiAgICB9XG4gIH0pO1xufSBlbHNlIHtcbiAgcmVhbEhhc0luc3RhbmNlID0gZnVuY3Rpb24gcmVhbEhhc0luc3RhbmNlKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiB0aGlzO1xuICB9O1xufVxuXG5mdW5jdGlvbiBXcml0YWJsZShvcHRpb25zKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7IC8vIFdyaXRhYmxlIGN0b3IgaXMgYXBwbGllZCB0byBEdXBsZXhlcywgdG9vLlxuICAvLyBgcmVhbEhhc0luc3RhbmNlYCBpcyBuZWNlc3NhcnkgYmVjYXVzZSB1c2luZyBwbGFpbiBgaW5zdGFuY2VvZmBcbiAgLy8gd291bGQgcmV0dXJuIGZhbHNlLCBhcyBubyBgX3dyaXRhYmxlU3RhdGVgIHByb3BlcnR5IGlzIGF0dGFjaGVkLlxuICAvLyBUcnlpbmcgdG8gdXNlIHRoZSBjdXN0b20gYGluc3RhbmNlb2ZgIGZvciBXcml0YWJsZSBoZXJlIHdpbGwgYWxzbyBicmVhayB0aGVcbiAgLy8gTm9kZS5qcyBMYXp5VHJhbnNmb3JtIGltcGxlbWVudGF0aW9uLCB3aGljaCBoYXMgYSBub24tdHJpdmlhbCBnZXR0ZXIgZm9yXG4gIC8vIGBfd3JpdGFibGVTdGF0ZWAgdGhhdCB3b3VsZCBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgLy8gQ2hlY2tpbmcgZm9yIGEgU3RyZWFtLkR1cGxleCBpbnN0YW5jZSBpcyBmYXN0ZXIgaGVyZSBpbnN0ZWFkIG9mIGluc2lkZVxuICAvLyB0aGUgV3JpdGFibGVTdGF0ZSBjb25zdHJ1Y3RvciwgYXQgbGVhc3Qgd2l0aCBWOCA2LjVcblxuICB2YXIgaXNEdXBsZXggPSB0aGlzIGluc3RhbmNlb2YgRHVwbGV4O1xuICBpZiAoIWlzRHVwbGV4ICYmICFyZWFsSGFzSW5zdGFuY2UuY2FsbChXcml0YWJsZSwgdGhpcykpIHJldHVybiBuZXcgV3JpdGFibGUob3B0aW9ucyk7XG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUgPSBuZXcgV3JpdGFibGVTdGF0ZShvcHRpb25zLCB0aGlzLCBpc0R1cGxleCk7IC8vIGxlZ2FjeS5cblxuICB0aGlzLndyaXRhYmxlID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fd3JpdGUgPSBvcHRpb25zLndyaXRlO1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZXYgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRldiA9IG9wdGlvbnMud3JpdGV2O1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95O1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5maW5hbCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmluYWwgPSBvcHRpb25zLmZpbmFsO1xuICB9XG5cbiAgU3RyZWFtLmNhbGwodGhpcyk7XG59IC8vIE90aGVyd2lzZSBwZW9wbGUgY2FuIHBpcGUgV3JpdGFibGUgc3RyZWFtcywgd2hpY2ggaXMganVzdCB3cm9uZy5cblxuXG5Xcml0YWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgZXJyb3JPckRlc3Ryb3kodGhpcywgbmV3IEVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUoKSk7XG59O1xuXG5mdW5jdGlvbiB3cml0ZUFmdGVyRW5kKHN0cmVhbSwgY2IpIHtcbiAgdmFyIGVyID0gbmV3IEVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5EKCk7IC8vIFRPRE86IGRlZmVyIGVycm9yIGV2ZW50cyBjb25zaXN0ZW50bHkgZXZlcnl3aGVyZSwgbm90IGp1c3QgdGhlIGNiXG5cbiAgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBlcik7XG4gIHByb2Nlc3MubmV4dFRpY2soY2IsIGVyKTtcbn0gLy8gQ2hlY2tzIHRoYXQgYSB1c2VyLXN1cHBsaWVkIGNodW5rIGlzIHZhbGlkLCBlc3BlY2lhbGx5IGZvciB0aGUgcGFydGljdWxhclxuLy8gbW9kZSB0aGUgc3RyZWFtIGlzIGluLiBDdXJyZW50bHkgdGhpcyBtZWFucyB0aGF0IGBudWxsYCBpcyBuZXZlciBhY2NlcHRlZFxuLy8gYW5kIHVuZGVmaW5lZC9ub24tc3RyaW5nIHZhbHVlcyBhcmUgb25seSBhbGxvd2VkIGluIG9iamVjdCBtb2RlLlxuXG5cbmZ1bmN0aW9uIHZhbGlkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGNiKSB7XG4gIHZhciBlcjtcblxuICBpZiAoY2h1bmsgPT09IG51bGwpIHtcbiAgICBlciA9IG5ldyBFUlJfU1RSRUFNX05VTExfVkFMVUVTKCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdjaHVuaycsIFsnc3RyaW5nJywgJ0J1ZmZlciddLCBjaHVuayk7XG4gIH1cblxuICBpZiAoZXIpIHtcbiAgICBlcnJvck9yRGVzdHJveShzdHJlYW0sIGVyKTtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGNiLCBlcik7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbldyaXRhYmxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG4gIHZhciByZXQgPSBmYWxzZTtcblxuICB2YXIgaXNCdWYgPSAhc3RhdGUub2JqZWN0TW9kZSAmJiBfaXNVaW50OEFycmF5KGNodW5rKTtcblxuICBpZiAoaXNCdWYgJiYgIUJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIHtcbiAgICBjaHVuayA9IF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gZW5jb2Rpbmc7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9XG5cbiAgaWYgKGlzQnVmKSBlbmNvZGluZyA9ICdidWZmZXInO2Vsc2UgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG4gIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIGNiID0gbm9wO1xuICBpZiAoc3RhdGUuZW5kaW5nKSB3cml0ZUFmdGVyRW5kKHRoaXMsIGNiKTtlbHNlIGlmIChpc0J1ZiB8fCB2YWxpZENodW5rKHRoaXMsIHN0YXRlLCBjaHVuaywgY2IpKSB7XG4gICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgcmV0ID0gd3JpdGVPckJ1ZmZlcih0aGlzLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICB9XG4gIHJldHVybiByZXQ7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuY29yayA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fd3JpdGFibGVTdGF0ZS5jb3JrZWQrKztcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS51bmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHN0YXRlLmNvcmtlZCkge1xuICAgIHN0YXRlLmNvcmtlZC0tO1xuICAgIGlmICghc3RhdGUud3JpdGluZyAmJiAhc3RhdGUuY29ya2VkICYmICFzdGF0ZS5idWZmZXJQcm9jZXNzaW5nICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCkgY2xlYXJCdWZmZXIodGhpcywgc3RhdGUpO1xuICB9XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nID0gZnVuY3Rpb24gc2V0RGVmYXVsdEVuY29kaW5nKGVuY29kaW5nKSB7XG4gIC8vIG5vZGU6OlBhcnNlRW5jb2RpbmcoKSByZXF1aXJlcyBsb3dlciBjYXNlLlxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykgZW5jb2RpbmcgPSBlbmNvZGluZy50b0xvd2VyQ2FzZSgpO1xuICBpZiAoIShbJ2hleCcsICd1dGY4JywgJ3V0Zi04JywgJ2FzY2lpJywgJ2JpbmFyeScsICdiYXNlNjQnLCAndWNzMicsICd1Y3MtMicsICd1dGYxNmxlJywgJ3V0Zi0xNmxlJywgJ3JhdyddLmluZGV4T2YoKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKCkpID4gLTEpKSB0aHJvdyBuZXcgRVJSX1VOS05PV05fRU5DT0RJTkcoZW5jb2RpbmcpO1xuICB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZyA9IGVuY29kaW5nO1xuICByZXR1cm4gdGhpcztcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICd3cml0YWJsZUJ1ZmZlcicsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGRlY29kZUNodW5rKHN0YXRlLCBjaHVuaywgZW5jb2RpbmcpIHtcbiAgaWYgKCFzdGF0ZS5vYmplY3RNb2RlICYmIHN0YXRlLmRlY29kZVN0cmluZ3MgIT09IGZhbHNlICYmIHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICBjaHVuayA9IEJ1ZmZlci5mcm9tKGNodW5rLCBlbmNvZGluZyk7XG4gIH1cblxuICByZXR1cm4gY2h1bms7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICd3cml0YWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pOyAvLyBpZiB3ZSdyZSBhbHJlYWR5IHdyaXRpbmcgc29tZXRoaW5nLCB0aGVuIGp1c3QgcHV0IHRoaXNcbi8vIGluIHRoZSBxdWV1ZSwgYW5kIHdhaXQgb3VyIHR1cm4uICBPdGhlcndpc2UsIGNhbGwgX3dyaXRlXG4vLyBJZiB3ZSByZXR1cm4gZmFsc2UsIHRoZW4gd2UgbmVlZCBhIGRyYWluIGV2ZW50LCBzbyBzZXQgdGhhdCBmbGFnLlxuXG5mdW5jdGlvbiB3cml0ZU9yQnVmZmVyKHN0cmVhbSwgc3RhdGUsIGlzQnVmLCBjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIGlmICghaXNCdWYpIHtcbiAgICB2YXIgbmV3Q2h1bmsgPSBkZWNvZGVDaHVuayhzdGF0ZSwgY2h1bmssIGVuY29kaW5nKTtcblxuICAgIGlmIChjaHVuayAhPT0gbmV3Q2h1bmspIHtcbiAgICAgIGlzQnVmID0gdHJ1ZTtcbiAgICAgIGVuY29kaW5nID0gJ2J1ZmZlcic7XG4gICAgICBjaHVuayA9IG5ld0NodW5rO1xuICAgIH1cbiAgfVxuXG4gIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgc3RhdGUubGVuZ3RoICs9IGxlbjtcbiAgdmFyIHJldCA9IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcms7IC8vIHdlIG11c3QgZW5zdXJlIHRoYXQgcHJldmlvdXMgbmVlZERyYWluIHdpbGwgbm90IGJlIHJlc2V0IHRvIGZhbHNlLlxuXG4gIGlmICghcmV0KSBzdGF0ZS5uZWVkRHJhaW4gPSB0cnVlO1xuXG4gIGlmIChzdGF0ZS53cml0aW5nIHx8IHN0YXRlLmNvcmtlZCkge1xuICAgIHZhciBsYXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0ge1xuICAgICAgY2h1bms6IGNodW5rLFxuICAgICAgZW5jb2Rpbmc6IGVuY29kaW5nLFxuICAgICAgaXNCdWY6IGlzQnVmLFxuICAgICAgY2FsbGJhY2s6IGNiLFxuICAgICAgbmV4dDogbnVsbFxuICAgIH07XG5cbiAgICBpZiAobGFzdCkge1xuICAgICAgbGFzdC5uZXh0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9XG5cbiAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudCArPSAxO1xuICB9IGVsc2Uge1xuICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmFsc2UsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHdyaXRldiwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHN0YXRlLndyaXRlbGVuID0gbGVuO1xuICBzdGF0ZS53cml0ZWNiID0gY2I7XG4gIHN0YXRlLndyaXRpbmcgPSB0cnVlO1xuICBzdGF0ZS5zeW5jID0gdHJ1ZTtcbiAgaWYgKHN0YXRlLmRlc3Ryb3llZCkgc3RhdGUub253cml0ZShuZXcgRVJSX1NUUkVBTV9ERVNUUk9ZRUQoJ3dyaXRlJykpO2Vsc2UgaWYgKHdyaXRldikgc3RyZWFtLl93cml0ZXYoY2h1bmssIHN0YXRlLm9ud3JpdGUpO2Vsc2Ugc3RyZWFtLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIHN0YXRlLm9ud3JpdGUpO1xuICBzdGF0ZS5zeW5jID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpIHtcbiAgLS1zdGF0ZS5wZW5kaW5nY2I7XG5cbiAgaWYgKHN5bmMpIHtcbiAgICAvLyBkZWZlciB0aGUgY2FsbGJhY2sgaWYgd2UgYXJlIGJlaW5nIGNhbGxlZCBzeW5jaHJvbm91c2x5XG4gICAgLy8gdG8gYXZvaWQgcGlsaW5nIHVwIHRoaW5ncyBvbiB0aGUgc3RhY2tcbiAgICBwcm9jZXNzLm5leHRUaWNrKGNiLCBlcik7IC8vIHRoaXMgY2FuIGVtaXQgZmluaXNoLCBhbmQgaXQgd2lsbCBhbHdheXMgaGFwcGVuXG4gICAgLy8gYWZ0ZXIgZXJyb3JcblxuICAgIHByb2Nlc3MubmV4dFRpY2soZmluaXNoTWF5YmUsIHN0cmVhbSwgc3RhdGUpO1xuICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXIpO1xuICB9IGVsc2Uge1xuICAgIC8vIHRoZSBjYWxsZXIgZXhwZWN0IHRoaXMgdG8gaGFwcGVuIGJlZm9yZSBpZlxuICAgIC8vIGl0IGlzIGFzeW5jXG4gICAgY2IoZXIpO1xuICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXIpOyAvLyB0aGlzIGNhbiBlbWl0IGZpbmlzaCwgYnV0IGZpbmlzaCBtdXN0XG4gICAgLy8gYWx3YXlzIGZvbGxvdyBlcnJvclxuXG4gICAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKSB7XG4gIHN0YXRlLndyaXRpbmcgPSBmYWxzZTtcbiAgc3RhdGUud3JpdGVjYiA9IG51bGw7XG4gIHN0YXRlLmxlbmd0aCAtPSBzdGF0ZS53cml0ZWxlbjtcbiAgc3RhdGUud3JpdGVsZW4gPSAwO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlKHN0cmVhbSwgZXIpIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlO1xuICB2YXIgc3luYyA9IHN0YXRlLnN5bmM7XG4gIHZhciBjYiA9IHN0YXRlLndyaXRlY2I7XG4gIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBFUlJfTVVMVElQTEVfQ0FMTEJBQ0soKTtcbiAgb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKTtcbiAgaWYgKGVyKSBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgc3luYywgZXIsIGNiKTtlbHNlIHtcbiAgICAvLyBDaGVjayBpZiB3ZSdyZSBhY3R1YWxseSByZWFkeSB0byBmaW5pc2gsIGJ1dCBkb24ndCBlbWl0IHlldFxuICAgIHZhciBmaW5pc2hlZCA9IG5lZWRGaW5pc2goc3RhdGUpIHx8IHN0cmVhbS5kZXN0cm95ZWQ7XG5cbiAgICBpZiAoIWZpbmlzaGVkICYmICFzdGF0ZS5jb3JrZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSB7XG4gICAgICBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKTtcbiAgICB9XG5cbiAgICBpZiAoc3luYykge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhhZnRlcldyaXRlLCBzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKSB7XG4gIGlmICghZmluaXNoZWQpIG9ud3JpdGVEcmFpbihzdHJlYW0sIHN0YXRlKTtcbiAgc3RhdGUucGVuZGluZ2NiLS07XG4gIGNiKCk7XG4gIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xufSAvLyBNdXN0IGZvcmNlIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBvbiBuZXh0VGljaywgc28gdGhhdCB3ZSBkb24ndFxuLy8gZW1pdCAnZHJhaW4nIGJlZm9yZSB0aGUgd3JpdGUoKSBjb25zdW1lciBnZXRzIHRoZSAnZmFsc2UnIHJldHVyblxuLy8gdmFsdWUsIGFuZCBoYXMgYSBjaGFuY2UgdG8gYXR0YWNoIGEgJ2RyYWluJyBsaXN0ZW5lci5cblxuXG5mdW5jdGlvbiBvbndyaXRlRHJhaW4oc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLm5lZWREcmFpbikge1xuICAgIHN0YXRlLm5lZWREcmFpbiA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdkcmFpbicpO1xuICB9XG59IC8vIGlmIHRoZXJlJ3Mgc29tZXRoaW5nIGluIHRoZSBidWZmZXIgd2FpdGluZywgdGhlbiBwcm9jZXNzIGl0XG5cblxuZnVuY3Rpb24gY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSkge1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gdHJ1ZTtcbiAgdmFyIGVudHJ5ID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0O1xuXG4gIGlmIChzdHJlYW0uX3dyaXRldiAmJiBlbnRyeSAmJiBlbnRyeS5uZXh0KSB7XG4gICAgLy8gRmFzdCBjYXNlLCB3cml0ZSBldmVyeXRoaW5nIHVzaW5nIF93cml0ZXYoKVxuICAgIHZhciBsID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQ7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShsKTtcbiAgICB2YXIgaG9sZGVyID0gc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlO1xuICAgIGhvbGRlci5lbnRyeSA9IGVudHJ5O1xuICAgIHZhciBjb3VudCA9IDA7XG4gICAgdmFyIGFsbEJ1ZmZlcnMgPSB0cnVlO1xuXG4gICAgd2hpbGUgKGVudHJ5KSB7XG4gICAgICBidWZmZXJbY291bnRdID0gZW50cnk7XG4gICAgICBpZiAoIWVudHJ5LmlzQnVmKSBhbGxCdWZmZXJzID0gZmFsc2U7XG4gICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gICAgICBjb3VudCArPSAxO1xuICAgIH1cblxuICAgIGJ1ZmZlci5hbGxCdWZmZXJzID0gYWxsQnVmZmVycztcbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHRydWUsIHN0YXRlLmxlbmd0aCwgYnVmZmVyLCAnJywgaG9sZGVyLmZpbmlzaCk7IC8vIGRvV3JpdGUgaXMgYWxtb3N0IGFsd2F5cyBhc3luYywgZGVmZXIgdGhlc2UgdG8gc2F2ZSBhIGJpdCBvZiB0aW1lXG4gICAgLy8gYXMgdGhlIGhvdCBwYXRoIGVuZHMgd2l0aCBkb1dyaXRlXG5cbiAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcblxuICAgIGlmIChob2xkZXIubmV4dCkge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gaG9sZGVyLm5leHQ7XG4gICAgICBob2xkZXIubmV4dCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHN0YXRlKTtcbiAgICB9XG5cbiAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgLy8gU2xvdyBjYXNlLCB3cml0ZSBjaHVua3Mgb25lLWJ5LW9uZVxuICAgIHdoaWxlIChlbnRyeSkge1xuICAgICAgdmFyIGNodW5rID0gZW50cnkuY2h1bms7XG4gICAgICB2YXIgZW5jb2RpbmcgPSBlbnRyeS5lbmNvZGluZztcbiAgICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgICAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50LS07IC8vIGlmIHdlIGRpZG4ndCBjYWxsIHRoZSBvbndyaXRlIGltbWVkaWF0ZWx5LCB0aGVuXG4gICAgICAvLyBpdCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gd2FpdCB1bnRpbCBpdCBkb2VzLlxuICAgICAgLy8gYWxzbywgdGhhdCBtZWFucyB0aGF0IHRoZSBjaHVuayBhbmQgY2IgYXJlIGN1cnJlbnRseVxuICAgICAgLy8gYmVpbmcgcHJvY2Vzc2VkLCBzbyBtb3ZlIHRoZSBidWZmZXIgY291bnRlciBwYXN0IHRoZW0uXG5cbiAgICAgIGlmIChzdGF0ZS53cml0aW5nKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbnRyeSA9PT0gbnVsbCkgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gIH1cblxuICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBlbnRyeTtcbiAgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlO1xufVxuXG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobmV3IEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEKCdfd3JpdGUoKScpKTtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGV2ID0gbnVsbDtcblxuV3JpdGFibGUucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gY2h1bms7XG4gICAgY2h1bmsgPSBudWxsO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjaHVuayAhPT0gbnVsbCAmJiBjaHVuayAhPT0gdW5kZWZpbmVkKSB0aGlzLndyaXRlKGNodW5rLCBlbmNvZGluZyk7IC8vIC5lbmQoKSBmdWxseSB1bmNvcmtzXG5cbiAgaWYgKHN0YXRlLmNvcmtlZCkge1xuICAgIHN0YXRlLmNvcmtlZCA9IDE7XG4gICAgdGhpcy51bmNvcmsoKTtcbiAgfSAvLyBpZ25vcmUgdW5uZWNlc3NhcnkgZW5kKCkgY2FsbHMuXG5cblxuICBpZiAoIXN0YXRlLmVuZGluZykgZW5kV3JpdGFibGUodGhpcywgc3RhdGUsIGNiKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGVMZW5ndGgnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aDtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIG5lZWRGaW5pc2goc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlLmVuZGluZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID09PSBudWxsICYmICFzdGF0ZS5maW5pc2hlZCAmJiAhc3RhdGUud3JpdGluZztcbn1cblxuZnVuY3Rpb24gY2FsbEZpbmFsKHN0cmVhbSwgc3RhdGUpIHtcbiAgc3RyZWFtLl9maW5hbChmdW5jdGlvbiAoZXJyKSB7XG4gICAgc3RhdGUucGVuZGluZ2NiLS07XG5cbiAgICBpZiAoZXJyKSB7XG4gICAgICBlcnJvck9yRGVzdHJveShzdHJlYW0sIGVycik7XG4gICAgfVxuXG4gICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5lbWl0KCdwcmVmaW5pc2gnKTtcbiAgICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucHJlZmluaXNoZWQgJiYgIXN0YXRlLmZpbmFsQ2FsbGVkKSB7XG4gICAgaWYgKHR5cGVvZiBzdHJlYW0uX2ZpbmFsID09PSAnZnVuY3Rpb24nICYmICFzdGF0ZS5kZXN0cm95ZWQpIHtcbiAgICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgICAgc3RhdGUuZmluYWxDYWxsZWQgPSB0cnVlO1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhjYWxsRmluYWwsIHN0cmVhbSwgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5wcmVmaW5pc2hlZCA9IHRydWU7XG4gICAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpIHtcbiAgdmFyIG5lZWQgPSBuZWVkRmluaXNoKHN0YXRlKTtcblxuICBpZiAobmVlZCkge1xuICAgIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKTtcblxuICAgIGlmIChzdGF0ZS5wZW5kaW5nY2IgPT09IDApIHtcbiAgICAgIHN0YXRlLmZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5lbWl0KCdmaW5pc2gnKTtcblxuICAgICAgaWYgKHN0YXRlLmF1dG9EZXN0cm95KSB7XG4gICAgICAgIC8vIEluIGNhc2Ugb2YgZHVwbGV4IHN0cmVhbXMgd2UgbmVlZCBhIHdheSB0byBkZXRlY3RcbiAgICAgICAgLy8gaWYgdGhlIHJlYWRhYmxlIHNpZGUgaXMgcmVhZHkgZm9yIGF1dG9EZXN0cm95IGFzIHdlbGxcbiAgICAgICAgdmFyIHJTdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcblxuICAgICAgICBpZiAoIXJTdGF0ZSB8fCByU3RhdGUuYXV0b0Rlc3Ryb3kgJiYgclN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICAgICAgICBzdHJlYW0uZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5lZWQ7XG59XG5cbmZ1bmN0aW9uIGVuZFdyaXRhYmxlKHN0cmVhbSwgc3RhdGUsIGNiKSB7XG4gIHN0YXRlLmVuZGluZyA9IHRydWU7XG4gIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuXG4gIGlmIChjYikge1xuICAgIGlmIChzdGF0ZS5maW5pc2hlZCkgcHJvY2Vzcy5uZXh0VGljayhjYik7ZWxzZSBzdHJlYW0ub25jZSgnZmluaXNoJywgY2IpO1xuICB9XG5cbiAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICBzdHJlYW0ud3JpdGFibGUgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gb25Db3JrZWRGaW5pc2goY29ya1JlcSwgc3RhdGUsIGVycikge1xuICB2YXIgZW50cnkgPSBjb3JrUmVxLmVudHJ5O1xuICBjb3JrUmVxLmVudHJ5ID0gbnVsbDtcblxuICB3aGlsZSAoZW50cnkpIHtcbiAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjaztcbiAgICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgICBjYihlcnIpO1xuICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgfSAvLyByZXVzZSB0aGUgZnJlZSBjb3JrUmVxLlxuXG5cbiAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQgPSBjb3JrUmVxO1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLCAnZGVzdHJveWVkJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbVxuICAgIC8vIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcbiAgICBpZiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRoZSB1c2VyIGlzIGV4cGxpY2l0bHlcbiAgICAvLyBtYW5hZ2luZyBkZXN0cm95ZWRcblxuXG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7XG5Xcml0YWJsZS5wcm90b3R5cGUuZGVzdHJveSA9IGRlc3Ryb3lJbXBsLmRlc3Ryb3k7XG5Xcml0YWJsZS5wcm90b3R5cGUuX3VuZGVzdHJveSA9IGRlc3Ryb3lJbXBsLnVuZGVzdHJveTtcblxuV3JpdGFibGUucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgY2IoZXJyKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgX09iamVjdCRzZXRQcm90b3R5cGVPO1xuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG52YXIgZmluaXNoZWQgPSByZXF1aXJlKCcuL2VuZC1vZi1zdHJlYW0nKTtcblxudmFyIGtMYXN0UmVzb2x2ZSA9IFN5bWJvbCgnbGFzdFJlc29sdmUnKTtcbnZhciBrTGFzdFJlamVjdCA9IFN5bWJvbCgnbGFzdFJlamVjdCcpO1xudmFyIGtFcnJvciA9IFN5bWJvbCgnZXJyb3InKTtcbnZhciBrRW5kZWQgPSBTeW1ib2woJ2VuZGVkJyk7XG52YXIga0xhc3RQcm9taXNlID0gU3ltYm9sKCdsYXN0UHJvbWlzZScpO1xudmFyIGtIYW5kbGVQcm9taXNlID0gU3ltYm9sKCdoYW5kbGVQcm9taXNlJyk7XG52YXIga1N0cmVhbSA9IFN5bWJvbCgnc3RyZWFtJyk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUl0ZXJSZXN1bHQodmFsdWUsIGRvbmUpIHtcbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgZG9uZTogZG9uZVxuICB9O1xufVxuXG5mdW5jdGlvbiByZWFkQW5kUmVzb2x2ZShpdGVyKSB7XG4gIHZhciByZXNvbHZlID0gaXRlcltrTGFzdFJlc29sdmVdO1xuXG4gIGlmIChyZXNvbHZlICE9PSBudWxsKSB7XG4gICAgdmFyIGRhdGEgPSBpdGVyW2tTdHJlYW1dLnJlYWQoKTsgLy8gd2UgZGVmZXIgaWYgZGF0YSBpcyBudWxsXG4gICAgLy8gd2UgY2FuIGJlIGV4cGVjdGluZyBlaXRoZXIgJ2VuZCcgb3JcbiAgICAvLyAnZXJyb3InXG5cbiAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgaXRlcltrTGFzdFByb21pc2VdID0gbnVsbDtcbiAgICAgIGl0ZXJba0xhc3RSZXNvbHZlXSA9IG51bGw7XG4gICAgICBpdGVyW2tMYXN0UmVqZWN0XSA9IG51bGw7XG4gICAgICByZXNvbHZlKGNyZWF0ZUl0ZXJSZXN1bHQoZGF0YSwgZmFsc2UpKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gb25SZWFkYWJsZShpdGVyKSB7XG4gIC8vIHdlIHdhaXQgZm9yIHRoZSBuZXh0IHRpY2ssIGJlY2F1c2UgaXQgbWlnaHRcbiAgLy8gZW1pdCBhbiBlcnJvciB3aXRoIHByb2Nlc3MubmV4dFRpY2tcbiAgcHJvY2Vzcy5uZXh0VGljayhyZWFkQW5kUmVzb2x2ZSwgaXRlcik7XG59XG5cbmZ1bmN0aW9uIHdyYXBGb3JOZXh0KGxhc3RQcm9taXNlLCBpdGVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgbGFzdFByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoaXRlcltrRW5kZWRdKSB7XG4gICAgICAgIHJlc29sdmUoY3JlYXRlSXRlclJlc3VsdCh1bmRlZmluZWQsIHRydWUpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpdGVyW2tIYW5kbGVQcm9taXNlXShyZXNvbHZlLCByZWplY3QpO1xuICAgIH0sIHJlamVjdCk7XG4gIH07XG59XG5cbnZhciBBc3luY0l0ZXJhdG9yUHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGZ1bmN0aW9uICgpIHt9KTtcbnZhciBSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3JQcm90b3R5cGUgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YoKF9PYmplY3Qkc2V0UHJvdG90eXBlTyA9IHtcbiAgZ2V0IHN0cmVhbSgpIHtcbiAgICByZXR1cm4gdGhpc1trU3RyZWFtXTtcbiAgfSxcblxuICBuZXh0OiBmdW5jdGlvbiBuZXh0KCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAvLyBpZiB3ZSBoYXZlIGRldGVjdGVkIGFuIGVycm9yIGluIHRoZSBtZWFud2hpbGVcbiAgICAvLyByZWplY3Qgc3RyYWlnaHQgYXdheVxuICAgIHZhciBlcnJvciA9IHRoaXNba0Vycm9yXTtcblxuICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICB9XG5cbiAgICBpZiAodGhpc1trRW5kZWRdKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNyZWF0ZUl0ZXJSZXN1bHQodW5kZWZpbmVkLCB0cnVlKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXNba1N0cmVhbV0uZGVzdHJveWVkKSB7XG4gICAgICAvLyBXZSBuZWVkIHRvIGRlZmVyIHZpYSBuZXh0VGljayBiZWNhdXNlIGlmIC5kZXN0cm95KGVycikgaXNcbiAgICAgIC8vIGNhbGxlZCwgdGhlIGVycm9yIHdpbGwgYmUgZW1pdHRlZCB2aWEgbmV4dFRpY2ssIGFuZFxuICAgICAgLy8gd2UgY2Fubm90IGd1YXJhbnRlZSB0aGF0IHRoZXJlIGlzIG5vIGVycm9yIGxpbmdlcmluZyBhcm91bmRcbiAgICAgIC8vIHdhaXRpbmcgdG8gYmUgZW1pdHRlZC5cbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChfdGhpc1trRXJyb3JdKSB7XG4gICAgICAgICAgICByZWplY3QoX3RoaXNba0Vycm9yXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoY3JlYXRlSXRlclJlc3VsdCh1bmRlZmluZWQsIHRydWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSAvLyBpZiB3ZSBoYXZlIG11bHRpcGxlIG5leHQoKSBjYWxsc1xuICAgIC8vIHdlIHdpbGwgd2FpdCBmb3IgdGhlIHByZXZpb3VzIFByb21pc2UgdG8gZmluaXNoXG4gICAgLy8gdGhpcyBsb2dpYyBpcyBvcHRpbWl6ZWQgdG8gc3VwcG9ydCBmb3IgYXdhaXQgbG9vcHMsXG4gICAgLy8gd2hlcmUgbmV4dCgpIGlzIG9ubHkgY2FsbGVkIG9uY2UgYXQgYSB0aW1lXG5cblxuICAgIHZhciBsYXN0UHJvbWlzZSA9IHRoaXNba0xhc3RQcm9taXNlXTtcbiAgICB2YXIgcHJvbWlzZTtcblxuICAgIGlmIChsYXN0UHJvbWlzZSkge1xuICAgICAgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHdyYXBGb3JOZXh0KGxhc3RQcm9taXNlLCB0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZhc3QgcGF0aCBuZWVkZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSB0aGlzLnB1c2goKVxuICAgICAgLy8gd2l0aG91dCB0cmlnZ2VyaW5nIHRoZSBuZXh0KCkgcXVldWVcbiAgICAgIHZhciBkYXRhID0gdGhpc1trU3RyZWFtXS5yZWFkKCk7XG5cbiAgICAgIGlmIChkYXRhICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY3JlYXRlSXRlclJlc3VsdChkYXRhLCBmYWxzZSkpO1xuICAgICAgfVxuXG4gICAgICBwcm9taXNlID0gbmV3IFByb21pc2UodGhpc1trSGFuZGxlUHJvbWlzZV0pO1xuICAgIH1cblxuICAgIHRoaXNba0xhc3RQcm9taXNlXSA9IHByb21pc2U7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cbn0sIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JHNldFByb3RvdHlwZU8sIFN5bWJvbC5hc3luY0l0ZXJhdG9yLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzO1xufSksIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JHNldFByb3RvdHlwZU8sIFwicmV0dXJuXCIsIGZ1bmN0aW9uIF9yZXR1cm4oKSB7XG4gIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gIC8vIGRlc3Ryb3koZXJyLCBjYikgaXMgYSBwcml2YXRlIEFQSVxuICAvLyB3ZSBjYW4gZ3VhcmFudGVlIHdlIGhhdmUgdGhhdCBoZXJlLCBiZWNhdXNlIHdlIGNvbnRyb2wgdGhlXG4gIC8vIFJlYWRhYmxlIGNsYXNzIHRoaXMgaXMgYXR0YWNoZWQgdG9cbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBfdGhpczJba1N0cmVhbV0uZGVzdHJveShudWxsLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmUoY3JlYXRlSXRlclJlc3VsdCh1bmRlZmluZWQsIHRydWUpKTtcbiAgICB9KTtcbiAgfSk7XG59KSwgX09iamVjdCRzZXRQcm90b3R5cGVPKSwgQXN5bmNJdGVyYXRvclByb3RvdHlwZSk7XG5cbnZhciBjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3IgPSBmdW5jdGlvbiBjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3Ioc3RyZWFtKSB7XG4gIHZhciBfT2JqZWN0JGNyZWF0ZTtcblxuICB2YXIgaXRlcmF0b3IgPSBPYmplY3QuY3JlYXRlKFJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgKF9PYmplY3QkY3JlYXRlID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JGNyZWF0ZSwga1N0cmVhbSwge1xuICAgIHZhbHVlOiBzdHJlYW0sXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSksIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JGNyZWF0ZSwga0xhc3RSZXNvbHZlLCB7XG4gICAgdmFsdWU6IG51bGwsXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSksIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JGNyZWF0ZSwga0xhc3RSZWplY3QsIHtcbiAgICB2YWx1ZTogbnVsbCxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3QkY3JlYXRlLCBrRXJyb3IsIHtcbiAgICB2YWx1ZTogbnVsbCxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3QkY3JlYXRlLCBrRW5kZWQsIHtcbiAgICB2YWx1ZTogc3RyZWFtLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQsXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSksIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JGNyZWF0ZSwga0hhbmRsZVByb21pc2UsIHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgZGF0YSA9IGl0ZXJhdG9yW2tTdHJlYW1dLnJlYWQoKTtcblxuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgaXRlcmF0b3Jba0xhc3RQcm9taXNlXSA9IG51bGw7XG4gICAgICAgIGl0ZXJhdG9yW2tMYXN0UmVzb2x2ZV0gPSBudWxsO1xuICAgICAgICBpdGVyYXRvcltrTGFzdFJlamVjdF0gPSBudWxsO1xuICAgICAgICByZXNvbHZlKGNyZWF0ZUl0ZXJSZXN1bHQoZGF0YSwgZmFsc2UpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZXJhdG9yW2tMYXN0UmVzb2x2ZV0gPSByZXNvbHZlO1xuICAgICAgICBpdGVyYXRvcltrTGFzdFJlamVjdF0gPSByZWplY3Q7XG4gICAgICB9XG4gICAgfSxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KSwgX09iamVjdCRjcmVhdGUpKTtcbiAgaXRlcmF0b3Jba0xhc3RQcm9taXNlXSA9IG51bGw7XG4gIGZpbmlzaGVkKHN0cmVhbSwgZnVuY3Rpb24gKGVycikge1xuICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgIT09ICdFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRScpIHtcbiAgICAgIHZhciByZWplY3QgPSBpdGVyYXRvcltrTGFzdFJlamVjdF07IC8vIHJlamVjdCBpZiB3ZSBhcmUgd2FpdGluZyBmb3IgZGF0YSBpbiB0aGUgUHJvbWlzZVxuICAgICAgLy8gcmV0dXJuZWQgYnkgbmV4dCgpIGFuZCBzdG9yZSB0aGUgZXJyb3JcblxuICAgICAgaWYgKHJlamVjdCAhPT0gbnVsbCkge1xuICAgICAgICBpdGVyYXRvcltrTGFzdFByb21pc2VdID0gbnVsbDtcbiAgICAgICAgaXRlcmF0b3Jba0xhc3RSZXNvbHZlXSA9IG51bGw7XG4gICAgICAgIGl0ZXJhdG9yW2tMYXN0UmVqZWN0XSA9IG51bGw7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfVxuXG4gICAgICBpdGVyYXRvcltrRXJyb3JdID0gZXJyO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciByZXNvbHZlID0gaXRlcmF0b3Jba0xhc3RSZXNvbHZlXTtcblxuICAgIGlmIChyZXNvbHZlICE9PSBudWxsKSB7XG4gICAgICBpdGVyYXRvcltrTGFzdFByb21pc2VdID0gbnVsbDtcbiAgICAgIGl0ZXJhdG9yW2tMYXN0UmVzb2x2ZV0gPSBudWxsO1xuICAgICAgaXRlcmF0b3Jba0xhc3RSZWplY3RdID0gbnVsbDtcbiAgICAgIHJlc29sdmUoY3JlYXRlSXRlclJlc3VsdCh1bmRlZmluZWQsIHRydWUpKTtcbiAgICB9XG5cbiAgICBpdGVyYXRvcltrRW5kZWRdID0gdHJ1ZTtcbiAgfSk7XG4gIHN0cmVhbS5vbigncmVhZGFibGUnLCBvblJlYWRhYmxlLmJpbmQobnVsbCwgaXRlcmF0b3IpKTtcbiAgcmV0dXJuIGl0ZXJhdG9yO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3I7IiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG52YXIgX3JlcXVpcmUgPSByZXF1aXJlKCdidWZmZXInKSxcbiAgICBCdWZmZXIgPSBfcmVxdWlyZS5CdWZmZXI7XG5cbnZhciBfcmVxdWlyZTIgPSByZXF1aXJlKCd1dGlsJyksXG4gICAgaW5zcGVjdCA9IF9yZXF1aXJlMi5pbnNwZWN0O1xuXG52YXIgY3VzdG9tID0gaW5zcGVjdCAmJiBpbnNwZWN0LmN1c3RvbSB8fCAnaW5zcGVjdCc7XG5cbmZ1bmN0aW9uIGNvcHlCdWZmZXIoc3JjLCB0YXJnZXQsIG9mZnNldCkge1xuICBCdWZmZXIucHJvdG90eXBlLmNvcHkuY2FsbChzcmMsIHRhcmdldCwgb2Zmc2V0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBCdWZmZXJMaXN0KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCdWZmZXJMaXN0KTtcblxuICAgIHRoaXMuaGVhZCA9IG51bGw7XG4gICAgdGhpcy50YWlsID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQnVmZmVyTGlzdCwgW3tcbiAgICBrZXk6IFwicHVzaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXNoKHYpIHtcbiAgICAgIHZhciBlbnRyeSA9IHtcbiAgICAgICAgZGF0YTogdixcbiAgICAgICAgbmV4dDogbnVsbFxuICAgICAgfTtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA+IDApIHRoaXMudGFpbC5uZXh0ID0gZW50cnk7ZWxzZSB0aGlzLmhlYWQgPSBlbnRyeTtcbiAgICAgIHRoaXMudGFpbCA9IGVudHJ5O1xuICAgICAgKyt0aGlzLmxlbmd0aDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidW5zaGlmdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1bnNoaWZ0KHYpIHtcbiAgICAgIHZhciBlbnRyeSA9IHtcbiAgICAgICAgZGF0YTogdixcbiAgICAgICAgbmV4dDogdGhpcy5oZWFkXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB0aGlzLnRhaWwgPSBlbnRyeTtcbiAgICAgIHRoaXMuaGVhZCA9IGVudHJ5O1xuICAgICAgKyt0aGlzLmxlbmd0aDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2hpZnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2hpZnQoKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICAgIHZhciByZXQgPSB0aGlzLmhlYWQuZGF0YTtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSkgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtlbHNlIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0O1xuICAgICAgLS10aGlzLmxlbmd0aDtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNsZWFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiam9pblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBqb2luKHMpIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICAgICAgdmFyIHAgPSB0aGlzLmhlYWQ7XG4gICAgICB2YXIgcmV0ID0gJycgKyBwLmRhdGE7XG5cbiAgICAgIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgICAgIHJldCArPSBzICsgcC5kYXRhO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb25jYXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29uY2F0KG4pIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKTtcbiAgICAgIHZhciByZXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobiA+Pj4gMCk7XG4gICAgICB2YXIgcCA9IHRoaXMuaGVhZDtcbiAgICAgIHZhciBpID0gMDtcblxuICAgICAgd2hpbGUgKHApIHtcbiAgICAgICAgY29weUJ1ZmZlcihwLmRhdGEsIHJldCwgaSk7XG4gICAgICAgIGkgKz0gcC5kYXRhLmxlbmd0aDtcbiAgICAgICAgcCA9IHAubmV4dDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IC8vIENvbnN1bWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyBvciBjaGFyYWN0ZXJzIGZyb20gdGhlIGJ1ZmZlcmVkIGRhdGEuXG5cbiAgfSwge1xuICAgIGtleTogXCJjb25zdW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbnN1bWUobiwgaGFzU3RyaW5ncykge1xuICAgICAgdmFyIHJldDtcblxuICAgICAgaWYgKG4gPCB0aGlzLmhlYWQuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgLy8gYHNsaWNlYCBpcyB0aGUgc2FtZSBmb3IgYnVmZmVycyBhbmQgc3RyaW5ncy5cbiAgICAgICAgcmV0ID0gdGhpcy5oZWFkLmRhdGEuc2xpY2UoMCwgbik7XG4gICAgICAgIHRoaXMuaGVhZC5kYXRhID0gdGhpcy5oZWFkLmRhdGEuc2xpY2Uobik7XG4gICAgICB9IGVsc2UgaWYgKG4gPT09IHRoaXMuaGVhZC5kYXRhLmxlbmd0aCkge1xuICAgICAgICAvLyBGaXJzdCBjaHVuayBpcyBhIHBlcmZlY3QgbWF0Y2guXG4gICAgICAgIHJldCA9IHRoaXMuc2hpZnQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlc3VsdCBzcGFucyBtb3JlIHRoYW4gb25lIGJ1ZmZlci5cbiAgICAgICAgcmV0ID0gaGFzU3RyaW5ncyA/IHRoaXMuX2dldFN0cmluZyhuKSA6IHRoaXMuX2dldEJ1ZmZlcihuKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZmlyc3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmlyc3QoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oZWFkLmRhdGE7XG4gICAgfSAvLyBDb25zdW1lcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgY2hhcmFjdGVycyBmcm9tIHRoZSBidWZmZXJlZCBkYXRhLlxuXG4gIH0sIHtcbiAgICBrZXk6IFwiX2dldFN0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZ2V0U3RyaW5nKG4pIHtcbiAgICAgIHZhciBwID0gdGhpcy5oZWFkO1xuICAgICAgdmFyIGMgPSAxO1xuICAgICAgdmFyIHJldCA9IHAuZGF0YTtcbiAgICAgIG4gLT0gcmV0Lmxlbmd0aDtcblxuICAgICAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICAgICAgdmFyIHN0ciA9IHAuZGF0YTtcbiAgICAgICAgdmFyIG5iID0gbiA+IHN0ci5sZW5ndGggPyBzdHIubGVuZ3RoIDogbjtcbiAgICAgICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSByZXQgKz0gc3RyO2Vsc2UgcmV0ICs9IHN0ci5zbGljZSgwLCBuKTtcbiAgICAgICAgbiAtPSBuYjtcblxuICAgICAgICBpZiAobiA9PT0gMCkge1xuICAgICAgICAgIGlmIChuYiA9PT0gc3RyLmxlbmd0aCkge1xuICAgICAgICAgICAgKytjO1xuICAgICAgICAgICAgaWYgKHAubmV4dCkgdGhpcy5oZWFkID0gcC5uZXh0O2Vsc2UgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oZWFkID0gcDtcbiAgICAgICAgICAgIHAuZGF0YSA9IHN0ci5zbGljZShuYik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICArK2M7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoIC09IGM7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gLy8gQ29uc3VtZXMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIGJ5dGVzIGZyb20gdGhlIGJ1ZmZlcmVkIGRhdGEuXG5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0QnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRCdWZmZXIobikge1xuICAgICAgdmFyIHJldCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuKTtcbiAgICAgIHZhciBwID0gdGhpcy5oZWFkO1xuICAgICAgdmFyIGMgPSAxO1xuICAgICAgcC5kYXRhLmNvcHkocmV0KTtcbiAgICAgIG4gLT0gcC5kYXRhLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICAgICAgdmFyIGJ1ZiA9IHAuZGF0YTtcbiAgICAgICAgdmFyIG5iID0gbiA+IGJ1Zi5sZW5ndGggPyBidWYubGVuZ3RoIDogbjtcbiAgICAgICAgYnVmLmNvcHkocmV0LCByZXQubGVuZ3RoIC0gbiwgMCwgbmIpO1xuICAgICAgICBuIC09IG5iO1xuXG4gICAgICAgIGlmIChuID09PSAwKSB7XG4gICAgICAgICAgaWYgKG5iID09PSBidWYubGVuZ3RoKSB7XG4gICAgICAgICAgICArK2M7XG4gICAgICAgICAgICBpZiAocC5uZXh0KSB0aGlzLmhlYWQgPSBwLm5leHQ7ZWxzZSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhlYWQgPSBwO1xuICAgICAgICAgICAgcC5kYXRhID0gYnVmLnNsaWNlKG5iKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgICsrYztcbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggLT0gYztcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSAvLyBNYWtlIHN1cmUgdGhlIGxpbmtlZCBsaXN0IG9ubHkgc2hvd3MgdGhlIG1pbmltYWwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uLlxuXG4gIH0sIHtcbiAgICBrZXk6IGN1c3RvbSxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUoXywgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIGluc3BlY3QodGhpcywgX29iamVjdFNwcmVhZCh7fSwgb3B0aW9ucywge1xuICAgICAgICAvLyBPbmx5IGluc3BlY3Qgb25lIGxldmVsLlxuICAgICAgICBkZXB0aDogMCxcbiAgICAgICAgLy8gSXQgc2hvdWxkIG5vdCByZWN1cnNlLlxuICAgICAgICBjdXN0b21JbnNwZWN0OiBmYWxzZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBCdWZmZXJMaXN0O1xufSgpOyIsIid1c2Ugc3RyaWN0JzsgLy8gdW5kb2N1bWVudGVkIGNiKCkgQVBJLCBuZWVkZWQgZm9yIGNvcmUsIG5vdCBmb3IgcHVibGljIEFQSVxuXG5mdW5jdGlvbiBkZXN0cm95KGVyciwgY2IpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB2YXIgcmVhZGFibGVEZXN0cm95ZWQgPSB0aGlzLl9yZWFkYWJsZVN0YXRlICYmIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB2YXIgd3JpdGFibGVEZXN0cm95ZWQgPSB0aGlzLl93cml0YWJsZVN0YXRlICYmIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO1xuXG4gIGlmIChyZWFkYWJsZURlc3Ryb3llZCB8fCB3cml0YWJsZURlc3Ryb3llZCkge1xuICAgIGlmIChjYikge1xuICAgICAgY2IoZXJyKTtcbiAgICB9IGVsc2UgaWYgKGVycikge1xuICAgICAgaWYgKCF0aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yTlQsIHRoaXMsIGVycik7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCkge1xuICAgICAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yTlQsIHRoaXMsIGVycik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gLy8gd2Ugc2V0IGRlc3Ryb3llZCB0byB0cnVlIGJlZm9yZSBmaXJpbmcgZXJyb3IgY2FsbGJhY2tzIGluIG9yZGVyXG4gIC8vIHRvIG1ha2UgaXQgcmUtZW50cmFuY2Ugc2FmZSBpbiBjYXNlIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2l0aGluIGNhbGxiYWNrc1xuXG5cbiAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUpIHtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHRydWU7XG4gIH0gLy8gaWYgdGhpcyBpcyBhIGR1cGxleCBzdHJlYW0gbWFyayB0aGUgd3JpdGFibGUgcGFydCBhcyBkZXN0cm95ZWQgYXMgd2VsbFxuXG5cbiAgaWYgKHRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHRydWU7XG4gIH1cblxuICB0aGlzLl9kZXN0cm95KGVyciB8fCBudWxsLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKCFjYiAmJiBlcnIpIHtcbiAgICAgIGlmICghX3RoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0RXJyb3JBbmRDbG9zZU5ULCBfdGhpcywgZXJyKTtcbiAgICAgIH0gZWxzZSBpZiAoIV90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCkge1xuICAgICAgICBfdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGVtaXRFcnJvckFuZENsb3NlTlQsIF90aGlzLCBlcnIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0Q2xvc2VOVCwgX3RoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2IpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTlQsIF90aGlzKTtcbiAgICAgIGNiKGVycik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTlQsIF90aGlzKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBlbWl0RXJyb3JBbmRDbG9zZU5UKHNlbGYsIGVycikge1xuICBlbWl0RXJyb3JOVChzZWxmLCBlcnIpO1xuICBlbWl0Q2xvc2VOVChzZWxmKTtcbn1cblxuZnVuY3Rpb24gZW1pdENsb3NlTlQoc2VsZikge1xuICBpZiAoc2VsZi5fd3JpdGFibGVTdGF0ZSAmJiAhc2VsZi5fd3JpdGFibGVTdGF0ZS5lbWl0Q2xvc2UpIHJldHVybjtcbiAgaWYgKHNlbGYuX3JlYWRhYmxlU3RhdGUgJiYgIXNlbGYuX3JlYWRhYmxlU3RhdGUuZW1pdENsb3NlKSByZXR1cm47XG4gIHNlbGYuZW1pdCgnY2xvc2UnKTtcbn1cblxuZnVuY3Rpb24gdW5kZXN0cm95KCkge1xuICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluYWxDYWxsZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLnByZWZpbmlzaGVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1pdEVycm9yTlQoc2VsZiwgZXJyKSB7XG4gIHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpO1xufVxuXG5mdW5jdGlvbiBlcnJvck9yRGVzdHJveShzdHJlYW0sIGVycikge1xuICAvLyBXZSBoYXZlIHRlc3RzIHRoYXQgcmVseSBvbiBlcnJvcnMgYmVpbmcgZW1pdHRlZFxuICAvLyBpbiB0aGUgc2FtZSB0aWNrLCBzbyBjaGFuZ2luZyB0aGlzIGlzIHNlbXZlciBtYWpvci5cbiAgLy8gRm9yIG5vdyB3aGVuIHlvdSBvcHQtaW4gdG8gYXV0b0Rlc3Ryb3kgd2UgYWxsb3dcbiAgLy8gdGhlIGVycm9yIHRvIGJlIGVtaXR0ZWQgbmV4dFRpY2suIEluIGEgZnV0dXJlXG4gIC8vIHNlbXZlciBtYWpvciB1cGRhdGUgd2Ugc2hvdWxkIGNoYW5nZSB0aGUgZGVmYXVsdCB0byB0aGlzLlxuICB2YXIgclN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgd1N0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlO1xuICBpZiAoclN0YXRlICYmIHJTdGF0ZS5hdXRvRGVzdHJveSB8fCB3U3RhdGUgJiYgd1N0YXRlLmF1dG9EZXN0cm95KSBzdHJlYW0uZGVzdHJveShlcnIpO2Vsc2Ugc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGRlc3Ryb3k6IGRlc3Ryb3ksXG4gIHVuZGVzdHJveTogdW5kZXN0cm95LFxuICBlcnJvck9yRGVzdHJveTogZXJyb3JPckRlc3Ryb3lcbn07IiwiLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC9lbmQtb2Ytc3RyZWFtIHdpdGhcbi8vIHBlcm1pc3Npb24gZnJvbSB0aGUgYXV0aG9yLCBNYXRoaWFzIEJ1dXMgKEBtYWZpbnRvc2gpLlxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UgPSByZXF1aXJlKCcuLi8uLi8uLi9lcnJvcnMnKS5jb2Rlcy5FUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRTtcblxuZnVuY3Rpb24gb25jZShjYWxsYmFjaykge1xuICB2YXIgY2FsbGVkID0gZmFsc2U7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGNhbGxlZCkgcmV0dXJuO1xuICAgIGNhbGxlZCA9IHRydWU7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgY2FsbGJhY2suYXBwbHkodGhpcywgYXJncyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5mdW5jdGlvbiBpc1JlcXVlc3Qoc3RyZWFtKSB7XG4gIHJldHVybiBzdHJlYW0uc2V0SGVhZGVyICYmIHR5cGVvZiBzdHJlYW0uYWJvcnQgPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGVvcyhzdHJlYW0sIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGVvcyhzdHJlYW0sIG51bGwsIG9wdHMpO1xuICBpZiAoIW9wdHMpIG9wdHMgPSB7fTtcbiAgY2FsbGJhY2sgPSBvbmNlKGNhbGxiYWNrIHx8IG5vb3ApO1xuICB2YXIgcmVhZGFibGUgPSBvcHRzLnJlYWRhYmxlIHx8IG9wdHMucmVhZGFibGUgIT09IGZhbHNlICYmIHN0cmVhbS5yZWFkYWJsZTtcbiAgdmFyIHdyaXRhYmxlID0gb3B0cy53cml0YWJsZSB8fCBvcHRzLndyaXRhYmxlICE9PSBmYWxzZSAmJiBzdHJlYW0ud3JpdGFibGU7XG5cbiAgdmFyIG9ubGVnYWN5ZmluaXNoID0gZnVuY3Rpb24gb25sZWdhY3lmaW5pc2goKSB7XG4gICAgaWYgKCFzdHJlYW0ud3JpdGFibGUpIG9uZmluaXNoKCk7XG4gIH07XG5cbiAgdmFyIHdyaXRhYmxlRW5kZWQgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGUgJiYgc3RyZWFtLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkO1xuXG4gIHZhciBvbmZpbmlzaCA9IGZ1bmN0aW9uIG9uZmluaXNoKCkge1xuICAgIHdyaXRhYmxlID0gZmFsc2U7XG4gICAgd3JpdGFibGVFbmRlZCA9IHRydWU7XG4gICAgaWYgKCFyZWFkYWJsZSkgY2FsbGJhY2suY2FsbChzdHJlYW0pO1xuICB9O1xuXG4gIHZhciByZWFkYWJsZUVuZGVkID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlICYmIHN0cmVhbS5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkO1xuXG4gIHZhciBvbmVuZCA9IGZ1bmN0aW9uIG9uZW5kKCkge1xuICAgIHJlYWRhYmxlID0gZmFsc2U7XG4gICAgcmVhZGFibGVFbmRlZCA9IHRydWU7XG4gICAgaWYgKCF3cml0YWJsZSkgY2FsbGJhY2suY2FsbChzdHJlYW0pO1xuICB9O1xuXG4gIHZhciBvbmVycm9yID0gZnVuY3Rpb24gb25lcnJvcihlcnIpIHtcbiAgICBjYWxsYmFjay5jYWxsKHN0cmVhbSwgZXJyKTtcbiAgfTtcblxuICB2YXIgb25jbG9zZSA9IGZ1bmN0aW9uIG9uY2xvc2UoKSB7XG4gICAgdmFyIGVycjtcblxuICAgIGlmIChyZWFkYWJsZSAmJiAhcmVhZGFibGVFbmRlZCkge1xuICAgICAgaWYgKCFzdHJlYW0uX3JlYWRhYmxlU3RhdGUgfHwgIXN0cmVhbS5fcmVhZGFibGVTdGF0ZS5lbmRlZCkgZXJyID0gbmV3IEVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFKCk7XG4gICAgICByZXR1cm4gY2FsbGJhY2suY2FsbChzdHJlYW0sIGVycik7XG4gICAgfVxuXG4gICAgaWYgKHdyaXRhYmxlICYmICF3cml0YWJsZUVuZGVkKSB7XG4gICAgICBpZiAoIXN0cmVhbS5fd3JpdGFibGVTdGF0ZSB8fCAhc3RyZWFtLl93cml0YWJsZVN0YXRlLmVuZGVkKSBlcnIgPSBuZXcgRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UoKTtcbiAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKHN0cmVhbSwgZXJyKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIG9ucmVxdWVzdCA9IGZ1bmN0aW9uIG9ucmVxdWVzdCgpIHtcbiAgICBzdHJlYW0ucmVxLm9uKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gIH07XG5cbiAgaWYgKGlzUmVxdWVzdChzdHJlYW0pKSB7XG4gICAgc3RyZWFtLm9uKCdjb21wbGV0ZScsIG9uZmluaXNoKTtcbiAgICBzdHJlYW0ub24oJ2Fib3J0Jywgb25jbG9zZSk7XG4gICAgaWYgKHN0cmVhbS5yZXEpIG9ucmVxdWVzdCgpO2Vsc2Ugc3RyZWFtLm9uKCdyZXF1ZXN0Jywgb25yZXF1ZXN0KTtcbiAgfSBlbHNlIGlmICh3cml0YWJsZSAmJiAhc3RyZWFtLl93cml0YWJsZVN0YXRlKSB7XG4gICAgLy8gbGVnYWN5IHN0cmVhbXNcbiAgICBzdHJlYW0ub24oJ2VuZCcsIG9ubGVnYWN5ZmluaXNoKTtcbiAgICBzdHJlYW0ub24oJ2Nsb3NlJywgb25sZWdhY3lmaW5pc2gpO1xuICB9XG5cbiAgc3RyZWFtLm9uKCdlbmQnLCBvbmVuZCk7XG4gIHN0cmVhbS5vbignZmluaXNoJywgb25maW5pc2gpO1xuICBpZiAob3B0cy5lcnJvciAhPT0gZmFsc2UpIHN0cmVhbS5vbignZXJyb3InLCBvbmVycm9yKTtcbiAgc3RyZWFtLm9uKCdjbG9zZScsIG9uY2xvc2UpO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignY29tcGxldGUnLCBvbmZpbmlzaCk7XG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdhYm9ydCcsIG9uY2xvc2UpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcigncmVxdWVzdCcsIG9ucmVxdWVzdCk7XG4gICAgaWYgKHN0cmVhbS5yZXEpIHN0cmVhbS5yZXEucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9ubGVnYWN5ZmluaXNoKTtcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25sZWdhY3lmaW5pc2gpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZW9zOyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ1JlYWRhYmxlLmZyb20gaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnJvd3NlcicpXG59O1xuIiwiLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC9wdW1wIHdpdGhcbi8vIHBlcm1pc3Npb24gZnJvbSB0aGUgYXV0aG9yLCBNYXRoaWFzIEJ1dXMgKEBtYWZpbnRvc2gpLlxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW9zO1xuXG5mdW5jdGlvbiBvbmNlKGNhbGxiYWNrKSB7XG4gIHZhciBjYWxsZWQgPSBmYWxzZTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoY2FsbGVkKSByZXR1cm47XG4gICAgY2FsbGVkID0gdHJ1ZTtcbiAgICBjYWxsYmFjay5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbnZhciBfcmVxdWlyZSRjb2RlcyA9IHJlcXVpcmUoJy4uLy4uLy4uL2Vycm9ycycpLmNvZGVzLFxuICAgIEVSUl9NSVNTSU5HX0FSR1MgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfTUlTU0lOR19BUkdTLFxuICAgIEVSUl9TVFJFQU1fREVTVFJPWUVEID0gX3JlcXVpcmUkY29kZXMuRVJSX1NUUkVBTV9ERVNUUk9ZRUQ7XG5cbmZ1bmN0aW9uIG5vb3AoZXJyKSB7XG4gIC8vIFJldGhyb3cgdGhlIGVycm9yIGlmIGl0IGV4aXN0cyB0byBhdm9pZCBzd2FsbG93aW5nIGl0XG4gIGlmIChlcnIpIHRocm93IGVycjtcbn1cblxuZnVuY3Rpb24gaXNSZXF1ZXN0KHN0cmVhbSkge1xuICByZXR1cm4gc3RyZWFtLnNldEhlYWRlciAmJiB0eXBlb2Ygc3RyZWFtLmFib3J0ID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBkZXN0cm95ZXIoc3RyZWFtLCByZWFkaW5nLCB3cml0aW5nLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayA9IG9uY2UoY2FsbGJhY2spO1xuICB2YXIgY2xvc2VkID0gZmFsc2U7XG4gIHN0cmVhbS5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgY2xvc2VkID0gdHJ1ZTtcbiAgfSk7XG4gIGlmIChlb3MgPT09IHVuZGVmaW5lZCkgZW9zID0gcmVxdWlyZSgnLi9lbmQtb2Ytc3RyZWFtJyk7XG4gIGVvcyhzdHJlYW0sIHtcbiAgICByZWFkYWJsZTogcmVhZGluZyxcbiAgICB3cml0YWJsZTogd3JpdGluZ1xuICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgY2xvc2VkID0gdHJ1ZTtcbiAgICBjYWxsYmFjaygpO1xuICB9KTtcbiAgdmFyIGRlc3Ryb3llZCA9IGZhbHNlO1xuICByZXR1cm4gZnVuY3Rpb24gKGVycikge1xuICAgIGlmIChjbG9zZWQpIHJldHVybjtcbiAgICBpZiAoZGVzdHJveWVkKSByZXR1cm47XG4gICAgZGVzdHJveWVkID0gdHJ1ZTsgLy8gcmVxdWVzdC5kZXN0cm95IGp1c3QgZG8gLmVuZCAtIC5hYm9ydCBpcyB3aGF0IHdlIHdhbnRcblxuICAgIGlmIChpc1JlcXVlc3Qoc3RyZWFtKSkgcmV0dXJuIHN0cmVhbS5hYm9ydCgpO1xuICAgIGlmICh0eXBlb2Ygc3RyZWFtLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHJldHVybiBzdHJlYW0uZGVzdHJveSgpO1xuICAgIGNhbGxiYWNrKGVyciB8fCBuZXcgRVJSX1NUUkVBTV9ERVNUUk9ZRUQoJ3BpcGUnKSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNhbGwoZm4pIHtcbiAgZm4oKTtcbn1cblxuZnVuY3Rpb24gcGlwZShmcm9tLCB0bykge1xuICByZXR1cm4gZnJvbS5waXBlKHRvKTtcbn1cblxuZnVuY3Rpb24gcG9wQ2FsbGJhY2soc3RyZWFtcykge1xuICBpZiAoIXN0cmVhbXMubGVuZ3RoKSByZXR1cm4gbm9vcDtcbiAgaWYgKHR5cGVvZiBzdHJlYW1zW3N0cmVhbXMubGVuZ3RoIC0gMV0gIT09ICdmdW5jdGlvbicpIHJldHVybiBub29wO1xuICByZXR1cm4gc3RyZWFtcy5wb3AoKTtcbn1cblxuZnVuY3Rpb24gcGlwZWxpbmUoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzdHJlYW1zID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIHN0cmVhbXNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICB2YXIgY2FsbGJhY2sgPSBwb3BDYWxsYmFjayhzdHJlYW1zKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc3RyZWFtc1swXSkpIHN0cmVhbXMgPSBzdHJlYW1zWzBdO1xuXG4gIGlmIChzdHJlYW1zLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgRVJSX01JU1NJTkdfQVJHUygnc3RyZWFtcycpO1xuICB9XG5cbiAgdmFyIGVycm9yO1xuICB2YXIgZGVzdHJveXMgPSBzdHJlYW1zLm1hcChmdW5jdGlvbiAoc3RyZWFtLCBpKSB7XG4gICAgdmFyIHJlYWRpbmcgPSBpIDwgc3RyZWFtcy5sZW5ndGggLSAxO1xuICAgIHZhciB3cml0aW5nID0gaSA+IDA7XG4gICAgcmV0dXJuIGRlc3Ryb3llcihzdHJlYW0sIHJlYWRpbmcsIHdyaXRpbmcsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmICghZXJyb3IpIGVycm9yID0gZXJyO1xuICAgICAgaWYgKGVycikgZGVzdHJveXMuZm9yRWFjaChjYWxsKTtcbiAgICAgIGlmIChyZWFkaW5nKSByZXR1cm47XG4gICAgICBkZXN0cm95cy5mb3JFYWNoKGNhbGwpO1xuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHN0cmVhbXMucmVkdWNlKHBpcGUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBpcGVsaW5lOyIsIid1c2Ugc3RyaWN0JztcblxudmFyIEVSUl9JTlZBTElEX09QVF9WQUxVRSA9IHJlcXVpcmUoJy4uLy4uLy4uL2Vycm9ycycpLmNvZGVzLkVSUl9JTlZBTElEX09QVF9WQUxVRTtcblxuZnVuY3Rpb24gaGlnaFdhdGVyTWFya0Zyb20ob3B0aW9ucywgaXNEdXBsZXgsIGR1cGxleEtleSkge1xuICByZXR1cm4gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrICE9IG51bGwgPyBvcHRpb25zLmhpZ2hXYXRlck1hcmsgOiBpc0R1cGxleCA/IG9wdGlvbnNbZHVwbGV4S2V5XSA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldEhpZ2hXYXRlck1hcmsoc3RhdGUsIG9wdGlvbnMsIGR1cGxleEtleSwgaXNEdXBsZXgpIHtcbiAgdmFyIGh3bSA9IGhpZ2hXYXRlck1hcmtGcm9tKG9wdGlvbnMsIGlzRHVwbGV4LCBkdXBsZXhLZXkpO1xuXG4gIGlmIChod20gIT0gbnVsbCkge1xuICAgIGlmICghKGlzRmluaXRlKGh3bSkgJiYgTWF0aC5mbG9vcihod20pID09PSBod20pIHx8IGh3bSA8IDApIHtcbiAgICAgIHZhciBuYW1lID0gaXNEdXBsZXggPyBkdXBsZXhLZXkgOiAnaGlnaFdhdGVyTWFyayc7XG4gICAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfT1BUX1ZBTFVFKG5hbWUsIGh3bSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoaHdtKTtcbiAgfSAvLyBEZWZhdWx0IHZhbHVlXG5cblxuICByZXR1cm4gc3RhdGUub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0SGlnaFdhdGVyTWFyazogZ2V0SGlnaFdhdGVyTWFya1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbiIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fcmVhZGFibGUuanMnKTtcbmV4cG9ydHMuU3RyZWFtID0gZXhwb3J0cztcbmV4cG9ydHMuUmVhZGFibGUgPSBleHBvcnRzO1xuZXhwb3J0cy5Xcml0YWJsZSA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fd3JpdGFibGUuanMnKTtcbmV4cG9ydHMuRHVwbGV4ID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9kdXBsZXguanMnKTtcbmV4cG9ydHMuVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMnKTtcbmV4cG9ydHMuUGFzc1Rocm91Z2ggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzJyk7XG5leHBvcnRzLmZpbmlzaGVkID0gcmVxdWlyZSgnLi9saWIvaW50ZXJuYWwvc3RyZWFtcy9lbmQtb2Ytc3RyZWFtLmpzJyk7XG5leHBvcnRzLnBpcGVsaW5lID0gcmVxdWlyZSgnLi9saWIvaW50ZXJuYWwvc3RyZWFtcy9waXBlbGluZS5qcycpO1xuIiwiJ3VzZSBzdHJpY3QnXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaEJhc2UgPSByZXF1aXJlKCdoYXNoLWJhc2UnKVxuXG52YXIgQVJSQVkxNiA9IG5ldyBBcnJheSgxNilcblxudmFyIHpsID0gW1xuICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LFxuICA3LCA0LCAxMywgMSwgMTAsIDYsIDE1LCAzLCAxMiwgMCwgOSwgNSwgMiwgMTQsIDExLCA4LFxuICAzLCAxMCwgMTQsIDQsIDksIDE1LCA4LCAxLCAyLCA3LCAwLCA2LCAxMywgMTEsIDUsIDEyLFxuICAxLCA5LCAxMSwgMTAsIDAsIDgsIDEyLCA0LCAxMywgMywgNywgMTUsIDE0LCA1LCA2LCAyLFxuICA0LCAwLCA1LCA5LCA3LCAxMiwgMiwgMTAsIDE0LCAxLCAzLCA4LCAxMSwgNiwgMTUsIDEzXG5dXG5cbnZhciB6ciA9IFtcbiAgNSwgMTQsIDcsIDAsIDksIDIsIDExLCA0LCAxMywgNiwgMTUsIDgsIDEsIDEwLCAzLCAxMixcbiAgNiwgMTEsIDMsIDcsIDAsIDEzLCA1LCAxMCwgMTQsIDE1LCA4LCAxMiwgNCwgOSwgMSwgMixcbiAgMTUsIDUsIDEsIDMsIDcsIDE0LCA2LCA5LCAxMSwgOCwgMTIsIDIsIDEwLCAwLCA0LCAxMyxcbiAgOCwgNiwgNCwgMSwgMywgMTEsIDE1LCAwLCA1LCAxMiwgMiwgMTMsIDksIDcsIDEwLCAxNCxcbiAgMTIsIDE1LCAxMCwgNCwgMSwgNSwgOCwgNywgNiwgMiwgMTMsIDE0LCAwLCAzLCA5LCAxMVxuXVxuXG52YXIgc2wgPSBbXG4gIDExLCAxNCwgMTUsIDEyLCA1LCA4LCA3LCA5LCAxMSwgMTMsIDE0LCAxNSwgNiwgNywgOSwgOCxcbiAgNywgNiwgOCwgMTMsIDExLCA5LCA3LCAxNSwgNywgMTIsIDE1LCA5LCAxMSwgNywgMTMsIDEyLFxuICAxMSwgMTMsIDYsIDcsIDE0LCA5LCAxMywgMTUsIDE0LCA4LCAxMywgNiwgNSwgMTIsIDcsIDUsXG4gIDExLCAxMiwgMTQsIDE1LCAxNCwgMTUsIDksIDgsIDksIDE0LCA1LCA2LCA4LCA2LCA1LCAxMixcbiAgOSwgMTUsIDUsIDExLCA2LCA4LCAxMywgMTIsIDUsIDEyLCAxMywgMTQsIDExLCA4LCA1LCA2XG5dXG5cbnZhciBzciA9IFtcbiAgOCwgOSwgOSwgMTEsIDEzLCAxNSwgMTUsIDUsIDcsIDcsIDgsIDExLCAxNCwgMTQsIDEyLCA2LFxuICA5LCAxMywgMTUsIDcsIDEyLCA4LCA5LCAxMSwgNywgNywgMTIsIDcsIDYsIDE1LCAxMywgMTEsXG4gIDksIDcsIDE1LCAxMSwgOCwgNiwgNiwgMTQsIDEyLCAxMywgNSwgMTQsIDEzLCAxMywgNywgNSxcbiAgMTUsIDUsIDgsIDExLCAxNCwgMTQsIDYsIDE0LCA2LCA5LCAxMiwgOSwgMTIsIDUsIDE1LCA4LFxuICA4LCA1LCAxMiwgOSwgMTIsIDUsIDE0LCA2LCA4LCAxMywgNiwgNSwgMTUsIDEzLCAxMSwgMTFcbl1cblxudmFyIGhsID0gWzB4MDAwMDAwMDAsIDB4NWE4Mjc5OTksIDB4NmVkOWViYTEsIDB4OGYxYmJjZGMsIDB4YTk1M2ZkNGVdXG52YXIgaHIgPSBbMHg1MGEyOGJlNiwgMHg1YzRkZDEyNCwgMHg2ZDcwM2VmMywgMHg3YTZkNzZlOSwgMHgwMDAwMDAwMF1cblxuZnVuY3Rpb24gUklQRU1EMTYwICgpIHtcbiAgSGFzaEJhc2UuY2FsbCh0aGlzLCA2NClcblxuICAvLyBzdGF0ZVxuICB0aGlzLl9hID0gMHg2NzQ1MjMwMVxuICB0aGlzLl9iID0gMHhlZmNkYWI4OVxuICB0aGlzLl9jID0gMHg5OGJhZGNmZVxuICB0aGlzLl9kID0gMHgxMDMyNTQ3NlxuICB0aGlzLl9lID0gMHhjM2QyZTFmMFxufVxuXG5pbmhlcml0cyhSSVBFTUQxNjAsIEhhc2hCYXNlKVxuXG5SSVBFTUQxNjAucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB3b3JkcyA9IEFSUkFZMTZcbiAgZm9yICh2YXIgaiA9IDA7IGogPCAxNjsgKytqKSB3b3Jkc1tqXSA9IHRoaXMuX2Jsb2NrLnJlYWRJbnQzMkxFKGogKiA0KVxuXG4gIHZhciBhbCA9IHRoaXMuX2EgfCAwXG4gIHZhciBibCA9IHRoaXMuX2IgfCAwXG4gIHZhciBjbCA9IHRoaXMuX2MgfCAwXG4gIHZhciBkbCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlbCA9IHRoaXMuX2UgfCAwXG5cbiAgdmFyIGFyID0gdGhpcy5fYSB8IDBcbiAgdmFyIGJyID0gdGhpcy5fYiB8IDBcbiAgdmFyIGNyID0gdGhpcy5fYyB8IDBcbiAgdmFyIGRyID0gdGhpcy5fZCB8IDBcbiAgdmFyIGVyID0gdGhpcy5fZSB8IDBcblxuICAvLyBjb21wdXRhdGlvblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDgwOyBpICs9IDEpIHtcbiAgICB2YXIgdGxcbiAgICB2YXIgdHJcbiAgICBpZiAoaSA8IDE2KSB7XG4gICAgICB0bCA9IGZuMShhbCwgYmwsIGNsLCBkbCwgZWwsIHdvcmRzW3psW2ldXSwgaGxbMF0sIHNsW2ldKVxuICAgICAgdHIgPSBmbjUoYXIsIGJyLCBjciwgZHIsIGVyLCB3b3Jkc1t6cltpXV0sIGhyWzBdLCBzcltpXSlcbiAgICB9IGVsc2UgaWYgKGkgPCAzMikge1xuICAgICAgdGwgPSBmbjIoYWwsIGJsLCBjbCwgZGwsIGVsLCB3b3Jkc1t6bFtpXV0sIGhsWzFdLCBzbFtpXSlcbiAgICAgIHRyID0gZm40KGFyLCBiciwgY3IsIGRyLCBlciwgd29yZHNbenJbaV1dLCBoclsxXSwgc3JbaV0pXG4gICAgfSBlbHNlIGlmIChpIDwgNDgpIHtcbiAgICAgIHRsID0gZm4zKGFsLCBibCwgY2wsIGRsLCBlbCwgd29yZHNbemxbaV1dLCBobFsyXSwgc2xbaV0pXG4gICAgICB0ciA9IGZuMyhhciwgYnIsIGNyLCBkciwgZXIsIHdvcmRzW3pyW2ldXSwgaHJbMl0sIHNyW2ldKVxuICAgIH0gZWxzZSBpZiAoaSA8IDY0KSB7XG4gICAgICB0bCA9IGZuNChhbCwgYmwsIGNsLCBkbCwgZWwsIHdvcmRzW3psW2ldXSwgaGxbM10sIHNsW2ldKVxuICAgICAgdHIgPSBmbjIoYXIsIGJyLCBjciwgZHIsIGVyLCB3b3Jkc1t6cltpXV0sIGhyWzNdLCBzcltpXSlcbiAgICB9IGVsc2UgeyAvLyBpZiAoaTw4MCkge1xuICAgICAgdGwgPSBmbjUoYWwsIGJsLCBjbCwgZGwsIGVsLCB3b3Jkc1t6bFtpXV0sIGhsWzRdLCBzbFtpXSlcbiAgICAgIHRyID0gZm4xKGFyLCBiciwgY3IsIGRyLCBlciwgd29yZHNbenJbaV1dLCBocls0XSwgc3JbaV0pXG4gICAgfVxuXG4gICAgYWwgPSBlbFxuICAgIGVsID0gZGxcbiAgICBkbCA9IHJvdGwoY2wsIDEwKVxuICAgIGNsID0gYmxcbiAgICBibCA9IHRsXG5cbiAgICBhciA9IGVyXG4gICAgZXIgPSBkclxuICAgIGRyID0gcm90bChjciwgMTApXG4gICAgY3IgPSBiclxuICAgIGJyID0gdHJcbiAgfVxuXG4gIC8vIHVwZGF0ZSBzdGF0ZVxuICB2YXIgdCA9ICh0aGlzLl9iICsgY2wgKyBkcikgfCAwXG4gIHRoaXMuX2IgPSAodGhpcy5fYyArIGRsICsgZXIpIHwgMFxuICB0aGlzLl9jID0gKHRoaXMuX2QgKyBlbCArIGFyKSB8IDBcbiAgdGhpcy5fZCA9ICh0aGlzLl9lICsgYWwgKyBicikgfCAwXG4gIHRoaXMuX2UgPSAodGhpcy5fYSArIGJsICsgY3IpIHwgMFxuICB0aGlzLl9hID0gdFxufVxuXG5SSVBFTUQxNjAucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIGNyZWF0ZSBwYWRkaW5nIGFuZCBoYW5kbGUgYmxvY2tzXG4gIHRoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdID0gMHg4MFxuICBpZiAodGhpcy5fYmxvY2tPZmZzZXQgPiA1Nikge1xuICAgIHRoaXMuX2Jsb2NrLmZpbGwoMCwgdGhpcy5fYmxvY2tPZmZzZXQsIDY0KVxuICAgIHRoaXMuX3VwZGF0ZSgpXG4gICAgdGhpcy5fYmxvY2tPZmZzZXQgPSAwXG4gIH1cblxuICB0aGlzLl9ibG9jay5maWxsKDAsIHRoaXMuX2Jsb2NrT2Zmc2V0LCA1NilcbiAgdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMF0sIDU2KVxuICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFsxXSwgNjApXG4gIHRoaXMuX3VwZGF0ZSgpXG5cbiAgLy8gcHJvZHVjZSByZXN1bHRcbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyA/IEJ1ZmZlci5hbGxvYygyMCkgOiBuZXcgQnVmZmVyKDIwKVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2EsIDApXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fYiwgNClcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9jLCA4KVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2QsIDEyKVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2UsIDE2KVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIHJvdGwgKHgsIG4pIHtcbiAgcmV0dXJuICh4IDw8IG4pIHwgKHggPj4+ICgzMiAtIG4pKVxufVxuXG5mdW5jdGlvbiBmbjEgKGEsIGIsIGMsIGQsIGUsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKGIgXiBjIF4gZCkgKyBtICsgaykgfCAwLCBzKSArIGUpIHwgMFxufVxuXG5mdW5jdGlvbiBmbjIgKGEsIGIsIGMsIGQsIGUsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKChiICYgYykgfCAoKH5iKSAmIGQpKSArIG0gKyBrKSB8IDAsIHMpICsgZSkgfCAwXG59XG5cbmZ1bmN0aW9uIGZuMyAoYSwgYiwgYywgZCwgZSwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoKGIgfCAofmMpKSBeIGQpICsgbSArIGspIHwgMCwgcykgKyBlKSB8IDBcbn1cblxuZnVuY3Rpb24gZm40IChhLCBiLCBjLCBkLCBlLCBtLCBrLCBzKSB7XG4gIHJldHVybiAocm90bCgoYSArICgoYiAmIGQpIHwgKGMgJiAofmQpKSkgKyBtICsgaykgfCAwLCBzKSArIGUpIHwgMFxufVxuXG5mdW5jdGlvbiBmbjUgKGEsIGIsIGMsIGQsIGUsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKGIgXiAoYyB8ICh+ZCkpKSArIG0gKyBrKSB8IDAsIHMpICsgZSkgfCAwXG59XG5cbm1vZHVsZS5leHBvcnRzID0gUklQRU1EMTYwXG4iLCIvKiEgc2FmZS1idWZmZXIuIE1JVCBMaWNlbnNlLiBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmcvb3BlbnNvdXJjZT4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vZGUvbm8tZGVwcmVjYXRlZC1hcGkgKi9cbnZhciBidWZmZXIgPSByZXF1aXJlKCdidWZmZXInKVxudmFyIEJ1ZmZlciA9IGJ1ZmZlci5CdWZmZXJcblxuLy8gYWx0ZXJuYXRpdmUgdG8gdXNpbmcgT2JqZWN0LmtleXMgZm9yIG9sZCBicm93c2Vyc1xuZnVuY3Rpb24gY29weVByb3BzIChzcmMsIGRzdCkge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgZHN0W2tleV0gPSBzcmNba2V5XVxuICB9XG59XG5pZiAoQnVmZmVyLmZyb20gJiYgQnVmZmVyLmFsbG9jICYmIEJ1ZmZlci5hbGxvY1Vuc2FmZSAmJiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KSB7XG4gIG1vZHVsZS5leHBvcnRzID0gYnVmZmVyXG59IGVsc2Uge1xuICAvLyBDb3B5IHByb3BlcnRpZXMgZnJvbSByZXF1aXJlKCdidWZmZXInKVxuICBjb3B5UHJvcHMoYnVmZmVyLCBleHBvcnRzKVxuICBleHBvcnRzLkJ1ZmZlciA9IFNhZmVCdWZmZXJcbn1cblxuZnVuY3Rpb24gU2FmZUJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuU2FmZUJ1ZmZlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJ1ZmZlci5wcm90b3R5cGUpXG5cbi8vIENvcHkgc3RhdGljIG1ldGhvZHMgZnJvbSBCdWZmZXJcbmNvcHlQcm9wcyhCdWZmZXIsIFNhZmVCdWZmZXIpXG5cblNhZmVCdWZmZXIuZnJvbSA9IGZ1bmN0aW9uIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuU2FmZUJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgdmFyIGJ1ZiA9IEJ1ZmZlcihzaXplKVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgIH0gZWxzZSB7XG4gICAgICBidWYuZmlsbChmaWxsKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBidWYuZmlsbCgwKVxuICB9XG4gIHJldHVybiBidWZcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKHNpemUpXG59XG5cblNhZmVCdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBidWZmZXIuU2xvd0J1ZmZlcihzaXplKVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgbm9kZS9uby1kZXByZWNhdGVkLWFwaSAqL1xuXG4ndXNlIHN0cmljdCdcblxudmFyIGJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpXG52YXIgQnVmZmVyID0gYnVmZmVyLkJ1ZmZlclxuXG52YXIgc2FmZXIgPSB7fVxuXG52YXIga2V5XG5cbmZvciAoa2V5IGluIGJ1ZmZlcikge1xuICBpZiAoIWJ1ZmZlci5oYXNPd25Qcm9wZXJ0eShrZXkpKSBjb250aW51ZVxuICBpZiAoa2V5ID09PSAnU2xvd0J1ZmZlcicgfHwga2V5ID09PSAnQnVmZmVyJykgY29udGludWVcbiAgc2FmZXJba2V5XSA9IGJ1ZmZlcltrZXldXG59XG5cbnZhciBTYWZlciA9IHNhZmVyLkJ1ZmZlciA9IHt9XG5mb3IgKGtleSBpbiBCdWZmZXIpIHtcbiAgaWYgKCFCdWZmZXIuaGFzT3duUHJvcGVydHkoa2V5KSkgY29udGludWVcbiAgaWYgKGtleSA9PT0gJ2FsbG9jVW5zYWZlJyB8fCBrZXkgPT09ICdhbGxvY1Vuc2FmZVNsb3cnKSBjb250aW51ZVxuICBTYWZlcltrZXldID0gQnVmZmVyW2tleV1cbn1cblxuc2FmZXIuQnVmZmVyLnByb3RvdHlwZSA9IEJ1ZmZlci5wcm90b3R5cGVcblxuaWYgKCFTYWZlci5mcm9tIHx8IFNhZmVyLmZyb20gPT09IFVpbnQ4QXJyYXkuZnJvbSkge1xuICBTYWZlci5mcm9tID0gZnVuY3Rpb24gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwidmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIHZhbHVlKVxuICAgIH1cbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlLmxlbmd0aCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgdmFsdWUpXG4gICAgfVxuICAgIHJldHVybiBCdWZmZXIodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxufVxuXG5pZiAoIVNhZmVyLmFsbG9jKSB7XG4gIFNhZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gICAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwic2l6ZVwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBzaXplKVxuICAgIH1cbiAgICBpZiAoc2l6ZSA8IDAgfHwgc2l6ZSA+PSAyICogKDEgPDwgMzApKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIFwiJyArIHNpemUgKyAnXCIgaXMgaW52YWxpZCBmb3Igb3B0aW9uIFwic2l6ZVwiJylcbiAgICB9XG4gICAgdmFyIGJ1ZiA9IEJ1ZmZlcihzaXplKVxuICAgIGlmICghZmlsbCB8fCBmaWxsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYnVmLmZpbGwoMClcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgIH0gZWxzZSB7XG4gICAgICBidWYuZmlsbChmaWxsKVxuICAgIH1cbiAgICByZXR1cm4gYnVmXG4gIH1cbn1cblxuaWYgKCFzYWZlci5rU3RyaW5nTWF4TGVuZ3RoKSB7XG4gIHRyeSB7XG4gICAgc2FmZXIua1N0cmluZ01heExlbmd0aCA9IHByb2Nlc3MuYmluZGluZygnYnVmZmVyJykua1N0cmluZ01heExlbmd0aFxuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gd2UgY2FuJ3QgZGV0ZXJtaW5lIGtTdHJpbmdNYXhMZW5ndGggaW4gZW52aXJvbm1lbnRzIHdoZXJlIHByb2Nlc3MuYmluZGluZ1xuICAgIC8vIGlzIHVuc3VwcG9ydGVkLCBzbyBsZXQncyBub3Qgc2V0IGl0XG4gIH1cbn1cblxuaWYgKCFzYWZlci5jb25zdGFudHMpIHtcbiAgc2FmZXIuY29uc3RhbnRzID0ge1xuICAgIE1BWF9MRU5HVEg6IHNhZmVyLmtNYXhMZW5ndGhcbiAgfVxuICBpZiAoc2FmZXIua1N0cmluZ01heExlbmd0aCkge1xuICAgIHNhZmVyLmNvbnN0YW50cy5NQVhfU1RSSU5HX0xFTkdUSCA9IHNhZmVyLmtTdHJpbmdNYXhMZW5ndGhcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNhZmVyXG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxuLy8gcHJvdG90eXBlIGNsYXNzIGZvciBoYXNoIGZ1bmN0aW9uc1xuZnVuY3Rpb24gSGFzaCAoYmxvY2tTaXplLCBmaW5hbFNpemUpIHtcbiAgdGhpcy5fYmxvY2sgPSBCdWZmZXIuYWxsb2MoYmxvY2tTaXplKVxuICB0aGlzLl9maW5hbFNpemUgPSBmaW5hbFNpemVcbiAgdGhpcy5fYmxvY2tTaXplID0gYmxvY2tTaXplXG4gIHRoaXMuX2xlbiA9IDBcbn1cblxuSGFzaC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jID0gZW5jIHx8ICd1dGY4J1xuICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBlbmMpXG4gIH1cblxuICB2YXIgYmxvY2sgPSB0aGlzLl9ibG9ja1xuICB2YXIgYmxvY2tTaXplID0gdGhpcy5fYmxvY2tTaXplXG4gIHZhciBsZW5ndGggPSBkYXRhLmxlbmd0aFxuICB2YXIgYWNjdW0gPSB0aGlzLl9sZW5cblxuICBmb3IgKHZhciBvZmZzZXQgPSAwOyBvZmZzZXQgPCBsZW5ndGg7KSB7XG4gICAgdmFyIGFzc2lnbmVkID0gYWNjdW0gJSBibG9ja1NpemVcbiAgICB2YXIgcmVtYWluZGVyID0gTWF0aC5taW4obGVuZ3RoIC0gb2Zmc2V0LCBibG9ja1NpemUgLSBhc3NpZ25lZClcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVtYWluZGVyOyBpKyspIHtcbiAgICAgIGJsb2NrW2Fzc2lnbmVkICsgaV0gPSBkYXRhW29mZnNldCArIGldXG4gICAgfVxuXG4gICAgYWNjdW0gKz0gcmVtYWluZGVyXG4gICAgb2Zmc2V0ICs9IHJlbWFpbmRlclxuXG4gICAgaWYgKChhY2N1bSAlIGJsb2NrU2l6ZSkgPT09IDApIHtcbiAgICAgIHRoaXMuX3VwZGF0ZShibG9jaylcbiAgICB9XG4gIH1cblxuICB0aGlzLl9sZW4gKz0gbGVuZ3RoXG4gIHJldHVybiB0aGlzXG59XG5cbkhhc2gucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgdmFyIHJlbSA9IHRoaXMuX2xlbiAlIHRoaXMuX2Jsb2NrU2l6ZVxuXG4gIHRoaXMuX2Jsb2NrW3JlbV0gPSAweDgwXG5cbiAgLy8gemVybyAocmVtICsgMSkgdHJhaWxpbmcgYml0cywgd2hlcmUgKHJlbSArIDEpIGlzIHRoZSBzbWFsbGVzdFxuICAvLyBub24tbmVnYXRpdmUgc29sdXRpb24gdG8gdGhlIGVxdWF0aW9uIChsZW5ndGggKyAxICsgKHJlbSArIDEpKSA9PT0gZmluYWxTaXplIG1vZCBibG9ja1NpemVcbiAgdGhpcy5fYmxvY2suZmlsbCgwLCByZW0gKyAxKVxuXG4gIGlmIChyZW0gPj0gdGhpcy5fZmluYWxTaXplKSB7XG4gICAgdGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKVxuICAgIHRoaXMuX2Jsb2NrLmZpbGwoMClcbiAgfVxuXG4gIHZhciBiaXRzID0gdGhpcy5fbGVuICogOFxuXG4gIC8vIHVpbnQzMlxuICBpZiAoYml0cyA8PSAweGZmZmZmZmZmKSB7XG4gICAgdGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRShiaXRzLCB0aGlzLl9ibG9ja1NpemUgLSA0KVxuXG4gIC8vIHVpbnQ2NFxuICB9IGVsc2Uge1xuICAgIHZhciBsb3dCaXRzID0gKGJpdHMgJiAweGZmZmZmZmZmKSA+Pj4gMFxuICAgIHZhciBoaWdoQml0cyA9IChiaXRzIC0gbG93Qml0cykgLyAweDEwMDAwMDAwMFxuXG4gICAgdGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRShoaWdoQml0cywgdGhpcy5fYmxvY2tTaXplIC0gOClcbiAgICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKGxvd0JpdHMsIHRoaXMuX2Jsb2NrU2l6ZSAtIDQpXG4gIH1cblxuICB0aGlzLl91cGRhdGUodGhpcy5fYmxvY2spXG4gIHZhciBoYXNoID0gdGhpcy5faGFzaCgpXG5cbiAgcmV0dXJuIGVuYyA/IGhhc2gudG9TdHJpbmcoZW5jKSA6IGhhc2hcbn1cblxuSGFzaC5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdfdXBkYXRlIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MnKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2hcbiIsInZhciBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBTSEEgKGFsZ29yaXRobSkge1xuICBhbGdvcml0aG0gPSBhbGdvcml0aG0udG9Mb3dlckNhc2UoKVxuXG4gIHZhciBBbGdvcml0aG0gPSBleHBvcnRzW2FsZ29yaXRobV1cbiAgaWYgKCFBbGdvcml0aG0pIHRocm93IG5ldyBFcnJvcihhbGdvcml0aG0gKyAnIGlzIG5vdCBzdXBwb3J0ZWQgKHdlIGFjY2VwdCBwdWxsIHJlcXVlc3RzKScpXG5cbiAgcmV0dXJuIG5ldyBBbGdvcml0aG0oKVxufVxuXG5leHBvcnRzLnNoYSA9IHJlcXVpcmUoJy4vc2hhJylcbmV4cG9ydHMuc2hhMSA9IHJlcXVpcmUoJy4vc2hhMScpXG5leHBvcnRzLnNoYTIyNCA9IHJlcXVpcmUoJy4vc2hhMjI0JylcbmV4cG9ydHMuc2hhMjU2ID0gcmVxdWlyZSgnLi9zaGEyNTYnKVxuZXhwb3J0cy5zaGEzODQgPSByZXF1aXJlKCcuL3NoYTM4NCcpXG5leHBvcnRzLnNoYTUxMiA9IHJlcXVpcmUoJy4vc2hhNTEyJylcbiIsIi8qXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTAsIGFzIGRlZmluZWRcbiAqIGluIEZJUFMgUFVCIDE4MC0xXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGRlcml2ZWQgZnJvbSBzaGExLmpzIG9mIHRoZSBzYW1lIHJlcG9zaXRvcnkuXG4gKiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFNIQS0wIGFuZCBTSEEtMSBpcyBqdXN0IGEgYml0d2lzZSByb3RhdGUgbGVmdFxuICogb3BlcmF0aW9uIHdhcyBhZGRlZC5cbiAqL1xuXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIEsgPSBbXG4gIDB4NWE4Mjc5OTksIDB4NmVkOWViYTEsIDB4OGYxYmJjZGMgfCAwLCAweGNhNjJjMWQ2IHwgMFxuXVxuXG52YXIgVyA9IG5ldyBBcnJheSg4MClcblxuZnVuY3Rpb24gU2hhICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgNjQsIDU2KVxufVxuXG5pbmhlcml0cyhTaGEsIEhhc2gpXG5cblNoYS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYSA9IDB4Njc0NTIzMDFcbiAgdGhpcy5fYiA9IDB4ZWZjZGFiODlcbiAgdGhpcy5fYyA9IDB4OThiYWRjZmVcbiAgdGhpcy5fZCA9IDB4MTAzMjU0NzZcbiAgdGhpcy5fZSA9IDB4YzNkMmUxZjBcblxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiByb3RsNSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDUpIHwgKG51bSA+Pj4gMjcpXG59XG5cbmZ1bmN0aW9uIHJvdGwzMCAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDMwKSB8IChudW0gPj4+IDIpXG59XG5cbmZ1bmN0aW9uIGZ0IChzLCBiLCBjLCBkKSB7XG4gIGlmIChzID09PSAwKSByZXR1cm4gKGIgJiBjKSB8ICgofmIpICYgZClcbiAgaWYgKHMgPT09IDIpIHJldHVybiAoYiAmIGMpIHwgKGIgJiBkKSB8IChjICYgZClcbiAgcmV0dXJuIGIgXiBjIF4gZFxufVxuXG5TaGEucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYSA9IHRoaXMuX2EgfCAwXG4gIHZhciBiID0gdGhpcy5fYiB8IDBcbiAgdmFyIGMgPSB0aGlzLl9jIHwgMFxuICB2YXIgZCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlID0gdGhpcy5fZSB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICBmb3IgKDsgaSA8IDgwOyArK2kpIFdbaV0gPSBXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4MDsgKytqKSB7XG4gICAgdmFyIHMgPSB+fihqIC8gMjApXG4gICAgdmFyIHQgPSAocm90bDUoYSkgKyBmdChzLCBiLCBjLCBkKSArIGUgKyBXW2pdICsgS1tzXSkgfCAwXG5cbiAgICBlID0gZFxuICAgIGQgPSBjXG4gICAgYyA9IHJvdGwzMChiKVxuICAgIGIgPSBhXG4gICAgYSA9IHRcbiAgfVxuXG4gIHRoaXMuX2EgPSAoYSArIHRoaXMuX2EpIHwgMFxuICB0aGlzLl9iID0gKGIgKyB0aGlzLl9iKSB8IDBcbiAgdGhpcy5fYyA9IChjICsgdGhpcy5fYykgfCAwXG4gIHRoaXMuX2QgPSAoZCArIHRoaXMuX2QpIHwgMFxuICB0aGlzLl9lID0gKGUgKyB0aGlzLl9lKSB8IDBcbn1cblxuU2hhLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBCdWZmZXIuYWxsb2NVbnNhZmUoMjApXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSB8IDAsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IgfCAwLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jIHwgMCwgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCB8IDAsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lIHwgMCwgMTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGFcbiIsIi8qXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTEsIGFzIGRlZmluZWRcbiAqIGluIEZJUFMgUFVCIDE4MC0xXG4gKiBWZXJzaW9uIDIuMWEgQ29weXJpZ2h0IFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDIuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2VcbiAqIFNlZSBodHRwOi8vcGFqaG9tZS5vcmcudWsvY3J5cHQvbWQ1IGZvciBkZXRhaWxzLlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgSyA9IFtcbiAgMHg1YTgyNzk5OSwgMHg2ZWQ5ZWJhMSwgMHg4ZjFiYmNkYyB8IDAsIDB4Y2E2MmMxZDYgfCAwXG5dXG5cbnZhciBXID0gbmV3IEFycmF5KDgwKVxuXG5mdW5jdGlvbiBTaGExICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgNjQsIDU2KVxufVxuXG5pbmhlcml0cyhTaGExLCBIYXNoKVxuXG5TaGExLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2NzQ1MjMwMVxuICB0aGlzLl9iID0gMHhlZmNkYWI4OVxuICB0aGlzLl9jID0gMHg5OGJhZGNmZVxuICB0aGlzLl9kID0gMHgxMDMyNTQ3NlxuICB0aGlzLl9lID0gMHhjM2QyZTFmMFxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIHJvdGwxIChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgMSkgfCAobnVtID4+PiAzMSlcbn1cblxuZnVuY3Rpb24gcm90bDUgKG51bSkge1xuICByZXR1cm4gKG51bSA8PCA1KSB8IChudW0gPj4+IDI3KVxufVxuXG5mdW5jdGlvbiByb3RsMzAgKG51bSkge1xuICByZXR1cm4gKG51bSA8PCAzMCkgfCAobnVtID4+PiAyKVxufVxuXG5mdW5jdGlvbiBmdCAocywgYiwgYywgZCkge1xuICBpZiAocyA9PT0gMCkgcmV0dXJuIChiICYgYykgfCAoKH5iKSAmIGQpXG4gIGlmIChzID09PSAyKSByZXR1cm4gKGIgJiBjKSB8IChiICYgZCkgfCAoYyAmIGQpXG4gIHJldHVybiBiIF4gYyBeIGRcbn1cblxuU2hhMS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBXID0gdGhpcy5fd1xuXG4gIHZhciBhID0gdGhpcy5fYSB8IDBcbiAgdmFyIGIgPSB0aGlzLl9iIHwgMFxuICB2YXIgYyA9IHRoaXMuX2MgfCAwXG4gIHZhciBkID0gdGhpcy5fZCB8IDBcbiAgdmFyIGUgPSB0aGlzLl9lIHwgMFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgV1tpXSA9IE0ucmVhZEludDMyQkUoaSAqIDQpXG4gIGZvciAoOyBpIDwgODA7ICsraSkgV1tpXSA9IHJvdGwxKFdbaSAtIDNdIF4gV1tpIC0gOF0gXiBXW2kgLSAxNF0gXiBXW2kgLSAxNl0pXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4MDsgKytqKSB7XG4gICAgdmFyIHMgPSB+fihqIC8gMjApXG4gICAgdmFyIHQgPSAocm90bDUoYSkgKyBmdChzLCBiLCBjLCBkKSArIGUgKyBXW2pdICsgS1tzXSkgfCAwXG5cbiAgICBlID0gZFxuICAgIGQgPSBjXG4gICAgYyA9IHJvdGwzMChiKVxuICAgIGIgPSBhXG4gICAgYSA9IHRcbiAgfVxuXG4gIHRoaXMuX2EgPSAoYSArIHRoaXMuX2EpIHwgMFxuICB0aGlzLl9iID0gKGIgKyB0aGlzLl9iKSB8IDBcbiAgdGhpcy5fYyA9IChjICsgdGhpcy5fYykgfCAwXG4gIHRoaXMuX2QgPSAoZCArIHRoaXMuX2QpIHwgMFxuICB0aGlzLl9lID0gKGUgKyB0aGlzLl9lKSB8IDBcbn1cblxuU2hhMS5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gQnVmZmVyLmFsbG9jVW5zYWZlKDIwKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EgfCAwLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iIHwgMCwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYyB8IDAsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QgfCAwLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSB8IDAsIDE2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMVxuIiwiLyoqXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTI1NiwgYXMgZGVmaW5lZFxuICogaW4gRklQUyAxODAtMlxuICogVmVyc2lvbiAyLjItYmV0YSBDb3B5cmlnaHQgQW5nZWwgTWFyaW4sIFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDkuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBTaGEyNTYgPSByZXF1aXJlKCcuL3NoYTI1NicpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIFcgPSBuZXcgQXJyYXkoNjQpXG5cbmZ1bmN0aW9uIFNoYTIyNCAoKSB7XG4gIHRoaXMuaW5pdCgpXG5cbiAgdGhpcy5fdyA9IFcgLy8gbmV3IEFycmF5KDY0KVxuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTIyNCwgU2hhMjU2KVxuXG5TaGEyMjQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweGMxMDU5ZWQ4XG4gIHRoaXMuX2IgPSAweDM2N2NkNTA3XG4gIHRoaXMuX2MgPSAweDMwNzBkZDE3XG4gIHRoaXMuX2QgPSAweGY3MGU1OTM5XG4gIHRoaXMuX2UgPSAweGZmYzAwYjMxXG4gIHRoaXMuX2YgPSAweDY4NTgxNTExXG4gIHRoaXMuX2cgPSAweDY0Zjk4ZmE3XG4gIHRoaXMuX2ggPSAweGJlZmE0ZmE0XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuU2hhMjI0LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBCdWZmZXIuYWxsb2NVbnNhZmUoMjgpXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSwgMClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYiwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYywgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCwgMTIpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2UsIDE2KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9mLCAyMClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZywgMjQpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGEyMjRcbiIsIi8qKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgSGFzaCBBbGdvcml0aG0sIFNIQS0yNTYsIGFzIGRlZmluZWRcbiAqIGluIEZJUFMgMTgwLTJcbiAqIFZlcnNpb24gMi4yLWJldGEgQ29weXJpZ2h0IEFuZ2VsIE1hcmluLCBQYXVsIEpvaG5zdG9uIDIwMDAgLSAyMDA5LlxuICogT3RoZXIgY29udHJpYnV0b3JzOiBHcmVnIEhvbHQsIEFuZHJldyBLZXBlcnQsIFlkbmFyLCBMb3N0aW5ldFxuICpcbiAqL1xuXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIEsgPSBbXG4gIDB4NDI4QTJGOTgsIDB4NzEzNzQ0OTEsIDB4QjVDMEZCQ0YsIDB4RTlCNURCQTUsXG4gIDB4Mzk1NkMyNUIsIDB4NTlGMTExRjEsIDB4OTIzRjgyQTQsIDB4QUIxQzVFRDUsXG4gIDB4RDgwN0FBOTgsIDB4MTI4MzVCMDEsIDB4MjQzMTg1QkUsIDB4NTUwQzdEQzMsXG4gIDB4NzJCRTVENzQsIDB4ODBERUIxRkUsIDB4OUJEQzA2QTcsIDB4QzE5QkYxNzQsXG4gIDB4RTQ5QjY5QzEsIDB4RUZCRTQ3ODYsIDB4MEZDMTlEQzYsIDB4MjQwQ0ExQ0MsXG4gIDB4MkRFOTJDNkYsIDB4NEE3NDg0QUEsIDB4NUNCMEE5REMsIDB4NzZGOTg4REEsXG4gIDB4OTgzRTUxNTIsIDB4QTgzMUM2NkQsIDB4QjAwMzI3QzgsIDB4QkY1OTdGQzcsXG4gIDB4QzZFMDBCRjMsIDB4RDVBNzkxNDcsIDB4MDZDQTYzNTEsIDB4MTQyOTI5NjcsXG4gIDB4MjdCNzBBODUsIDB4MkUxQjIxMzgsIDB4NEQyQzZERkMsIDB4NTMzODBEMTMsXG4gIDB4NjUwQTczNTQsIDB4NzY2QTBBQkIsIDB4ODFDMkM5MkUsIDB4OTI3MjJDODUsXG4gIDB4QTJCRkU4QTEsIDB4QTgxQTY2NEIsIDB4QzI0QjhCNzAsIDB4Qzc2QzUxQTMsXG4gIDB4RDE5MkU4MTksIDB4RDY5OTA2MjQsIDB4RjQwRTM1ODUsIDB4MTA2QUEwNzAsXG4gIDB4MTlBNEMxMTYsIDB4MUUzNzZDMDgsIDB4Mjc0ODc3NEMsIDB4MzRCMEJDQjUsXG4gIDB4MzkxQzBDQjMsIDB4NEVEOEFBNEEsIDB4NUI5Q0NBNEYsIDB4NjgyRTZGRjMsXG4gIDB4NzQ4RjgyRUUsIDB4NzhBNTYzNkYsIDB4ODRDODc4MTQsIDB4OENDNzAyMDgsXG4gIDB4OTBCRUZGRkEsIDB4QTQ1MDZDRUIsIDB4QkVGOUEzRjcsIDB4QzY3MTc4RjJcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoNjQpXG5cbmZ1bmN0aW9uIFNoYTI1NiAoKSB7XG4gIHRoaXMuaW5pdCgpXG5cbiAgdGhpcy5fdyA9IFcgLy8gbmV3IEFycmF5KDY0KVxuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTI1NiwgSGFzaClcblxuU2hhMjU2LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2YTA5ZTY2N1xuICB0aGlzLl9iID0gMHhiYjY3YWU4NVxuICB0aGlzLl9jID0gMHgzYzZlZjM3MlxuICB0aGlzLl9kID0gMHhhNTRmZjUzYVxuICB0aGlzLl9lID0gMHg1MTBlNTI3ZlxuICB0aGlzLl9mID0gMHg5YjA1Njg4Y1xuICB0aGlzLl9nID0gMHgxZjgzZDlhYlxuICB0aGlzLl9oID0gMHg1YmUwY2QxOVxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIGNoICh4LCB5LCB6KSB7XG4gIHJldHVybiB6IF4gKHggJiAoeSBeIHopKVxufVxuXG5mdW5jdGlvbiBtYWogKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgfCAoeiAmICh4IHwgeSkpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDIgfCB4IDw8IDMwKSBeICh4ID4+PiAxMyB8IHggPDwgMTkpIF4gKHggPj4+IDIyIHwgeCA8PCAxMClcbn1cblxuZnVuY3Rpb24gc2lnbWExICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gNiB8IHggPDwgMjYpIF4gKHggPj4+IDExIHwgeCA8PCAyMSkgXiAoeCA+Pj4gMjUgfCB4IDw8IDcpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDcgfCB4IDw8IDI1KSBeICh4ID4+PiAxOCB8IHggPDwgMTQpIF4gKHggPj4+IDMpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMSAoeCkge1xuICByZXR1cm4gKHggPj4+IDE3IHwgeCA8PCAxNSkgXiAoeCA+Pj4gMTkgfCB4IDw8IDEzKSBeICh4ID4+PiAxMClcbn1cblxuU2hhMjU2LnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG4gIHZhciBmID0gdGhpcy5fZiB8IDBcbiAgdmFyIGcgPSB0aGlzLl9nIHwgMFxuICB2YXIgaCA9IHRoaXMuX2ggfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA2NDsgKytpKSBXW2ldID0gKGdhbW1hMShXW2kgLSAyXSkgKyBXW2kgLSA3XSArIGdhbW1hMChXW2kgLSAxNV0pICsgV1tpIC0gMTZdKSB8IDBcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDY0OyArK2opIHtcbiAgICB2YXIgVDEgPSAoaCArIHNpZ21hMShlKSArIGNoKGUsIGYsIGcpICsgS1tqXSArIFdbal0pIHwgMFxuICAgIHZhciBUMiA9IChzaWdtYTAoYSkgKyBtYWooYSwgYiwgYykpIHwgMFxuXG4gICAgaCA9IGdcbiAgICBnID0gZlxuICAgIGYgPSBlXG4gICAgZSA9IChkICsgVDEpIHwgMFxuICAgIGQgPSBjXG4gICAgYyA9IGJcbiAgICBiID0gYVxuICAgIGEgPSAoVDEgKyBUMikgfCAwXG4gIH1cblxuICB0aGlzLl9hID0gKGEgKyB0aGlzLl9hKSB8IDBcbiAgdGhpcy5fYiA9IChiICsgdGhpcy5fYikgfCAwXG4gIHRoaXMuX2MgPSAoYyArIHRoaXMuX2MpIHwgMFxuICB0aGlzLl9kID0gKGQgKyB0aGlzLl9kKSB8IDBcbiAgdGhpcy5fZSA9IChlICsgdGhpcy5fZSkgfCAwXG4gIHRoaXMuX2YgPSAoZiArIHRoaXMuX2YpIHwgMFxuICB0aGlzLl9nID0gKGcgKyB0aGlzLl9nKSB8IDBcbiAgdGhpcy5faCA9IChoICsgdGhpcy5faCkgfCAwXG59XG5cblNoYTI1Ni5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gQnVmZmVyLmFsbG9jVW5zYWZlKDMyKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IsIDQpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2MsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lLCAxNilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZiwgMjApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2csIDI0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9oLCAyOClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTI1NlxuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIFNIQTUxMiA9IHJlcXVpcmUoJy4vc2hhNTEyJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgVyA9IG5ldyBBcnJheSgxNjApXG5cbmZ1bmN0aW9uIFNoYTM4NCAoKSB7XG4gIHRoaXMuaW5pdCgpXG4gIHRoaXMuX3cgPSBXXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDEyOCwgMTEyKVxufVxuXG5pbmhlcml0cyhTaGEzODQsIFNIQTUxMilcblxuU2hhMzg0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9haCA9IDB4Y2JiYjlkNWRcbiAgdGhpcy5fYmggPSAweDYyOWEyOTJhXG4gIHRoaXMuX2NoID0gMHg5MTU5MDE1YVxuICB0aGlzLl9kaCA9IDB4MTUyZmVjZDhcbiAgdGhpcy5fZWggPSAweDY3MzMyNjY3XG4gIHRoaXMuX2ZoID0gMHg4ZWI0NGE4N1xuICB0aGlzLl9naCA9IDB4ZGIwYzJlMGRcbiAgdGhpcy5faGggPSAweDQ3YjU0ODFkXG5cbiAgdGhpcy5fYWwgPSAweGMxMDU5ZWQ4XG4gIHRoaXMuX2JsID0gMHgzNjdjZDUwN1xuICB0aGlzLl9jbCA9IDB4MzA3MGRkMTdcbiAgdGhpcy5fZGwgPSAweGY3MGU1OTM5XG4gIHRoaXMuX2VsID0gMHhmZmMwMGIzMVxuICB0aGlzLl9mbCA9IDB4Njg1ODE1MTFcbiAgdGhpcy5fZ2wgPSAweDY0Zjk4ZmE3XG4gIHRoaXMuX2hsID0gMHhiZWZhNGZhNFxuXG4gIHJldHVybiB0aGlzXG59XG5cblNoYTM4NC5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gQnVmZmVyLmFsbG9jVW5zYWZlKDQ4KVxuXG4gIGZ1bmN0aW9uIHdyaXRlSW50NjRCRSAoaCwgbCwgb2Zmc2V0KSB7XG4gICAgSC53cml0ZUludDMyQkUoaCwgb2Zmc2V0KVxuICAgIEgud3JpdGVJbnQzMkJFKGwsIG9mZnNldCArIDQpXG4gIH1cblxuICB3cml0ZUludDY0QkUodGhpcy5fYWgsIHRoaXMuX2FsLCAwKVxuICB3cml0ZUludDY0QkUodGhpcy5fYmgsIHRoaXMuX2JsLCA4KVxuICB3cml0ZUludDY0QkUodGhpcy5fY2gsIHRoaXMuX2NsLCAxNilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2RoLCB0aGlzLl9kbCwgMjQpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9laCwgdGhpcy5fZWwsIDMyKVxuICB3cml0ZUludDY0QkUodGhpcy5fZmgsIHRoaXMuX2ZsLCA0MClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTM4NFxuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBLID0gW1xuICAweDQyOGEyZjk4LCAweGQ3MjhhZTIyLCAweDcxMzc0NDkxLCAweDIzZWY2NWNkLFxuICAweGI1YzBmYmNmLCAweGVjNGQzYjJmLCAweGU5YjVkYmE1LCAweDgxODlkYmJjLFxuICAweDM5NTZjMjViLCAweGYzNDhiNTM4LCAweDU5ZjExMWYxLCAweGI2MDVkMDE5LFxuICAweDkyM2Y4MmE0LCAweGFmMTk0ZjliLCAweGFiMWM1ZWQ1LCAweGRhNmQ4MTE4LFxuICAweGQ4MDdhYTk4LCAweGEzMDMwMjQyLCAweDEyODM1YjAxLCAweDQ1NzA2ZmJlLFxuICAweDI0MzE4NWJlLCAweDRlZTRiMjhjLCAweDU1MGM3ZGMzLCAweGQ1ZmZiNGUyLFxuICAweDcyYmU1ZDc0LCAweGYyN2I4OTZmLCAweDgwZGViMWZlLCAweDNiMTY5NmIxLFxuICAweDliZGMwNmE3LCAweDI1YzcxMjM1LCAweGMxOWJmMTc0LCAweGNmNjkyNjk0LFxuICAweGU0OWI2OWMxLCAweDllZjE0YWQyLCAweGVmYmU0Nzg2LCAweDM4NGYyNWUzLFxuICAweDBmYzE5ZGM2LCAweDhiOGNkNWI1LCAweDI0MGNhMWNjLCAweDc3YWM5YzY1LFxuICAweDJkZTkyYzZmLCAweDU5MmIwMjc1LCAweDRhNzQ4NGFhLCAweDZlYTZlNDgzLFxuICAweDVjYjBhOWRjLCAweGJkNDFmYmQ0LCAweDc2Zjk4OGRhLCAweDgzMTE1M2I1LFxuICAweDk4M2U1MTUyLCAweGVlNjZkZmFiLCAweGE4MzFjNjZkLCAweDJkYjQzMjEwLFxuICAweGIwMDMyN2M4LCAweDk4ZmIyMTNmLCAweGJmNTk3ZmM3LCAweGJlZWYwZWU0LFxuICAweGM2ZTAwYmYzLCAweDNkYTg4ZmMyLCAweGQ1YTc5MTQ3LCAweDkzMGFhNzI1LFxuICAweDA2Y2E2MzUxLCAweGUwMDM4MjZmLCAweDE0MjkyOTY3LCAweDBhMGU2ZTcwLFxuICAweDI3YjcwYTg1LCAweDQ2ZDIyZmZjLCAweDJlMWIyMTM4LCAweDVjMjZjOTI2LFxuICAweDRkMmM2ZGZjLCAweDVhYzQyYWVkLCAweDUzMzgwZDEzLCAweDlkOTViM2RmLFxuICAweDY1MGE3MzU0LCAweDhiYWY2M2RlLCAweDc2NmEwYWJiLCAweDNjNzdiMmE4LFxuICAweDgxYzJjOTJlLCAweDQ3ZWRhZWU2LCAweDkyNzIyYzg1LCAweDE0ODIzNTNiLFxuICAweGEyYmZlOGExLCAweDRjZjEwMzY0LCAweGE4MWE2NjRiLCAweGJjNDIzMDAxLFxuICAweGMyNGI4YjcwLCAweGQwZjg5NzkxLCAweGM3NmM1MWEzLCAweDA2NTRiZTMwLFxuICAweGQxOTJlODE5LCAweGQ2ZWY1MjE4LCAweGQ2OTkwNjI0LCAweDU1NjVhOTEwLFxuICAweGY0MGUzNTg1LCAweDU3NzEyMDJhLCAweDEwNmFhMDcwLCAweDMyYmJkMWI4LFxuICAweDE5YTRjMTE2LCAweGI4ZDJkMGM4LCAweDFlMzc2YzA4LCAweDUxNDFhYjUzLFxuICAweDI3NDg3NzRjLCAweGRmOGVlYjk5LCAweDM0YjBiY2I1LCAweGUxOWI0OGE4LFxuICAweDM5MWMwY2IzLCAweGM1Yzk1YTYzLCAweDRlZDhhYTRhLCAweGUzNDE4YWNiLFxuICAweDViOWNjYTRmLCAweDc3NjNlMzczLCAweDY4MmU2ZmYzLCAweGQ2YjJiOGEzLFxuICAweDc0OGY4MmVlLCAweDVkZWZiMmZjLCAweDc4YTU2MzZmLCAweDQzMTcyZjYwLFxuICAweDg0Yzg3ODE0LCAweGExZjBhYjcyLCAweDhjYzcwMjA4LCAweDFhNjQzOWVjLFxuICAweDkwYmVmZmZhLCAweDIzNjMxZTI4LCAweGE0NTA2Y2ViLCAweGRlODJiZGU5LFxuICAweGJlZjlhM2Y3LCAweGIyYzY3OTE1LCAweGM2NzE3OGYyLCAweGUzNzI1MzJiLFxuICAweGNhMjczZWNlLCAweGVhMjY2MTljLCAweGQxODZiOGM3LCAweDIxYzBjMjA3LFxuICAweGVhZGE3ZGQ2LCAweGNkZTBlYjFlLCAweGY1N2Q0ZjdmLCAweGVlNmVkMTc4LFxuICAweDA2ZjA2N2FhLCAweDcyMTc2ZmJhLCAweDBhNjM3ZGM1LCAweGEyYzg5OGE2LFxuICAweDExM2Y5ODA0LCAweGJlZjkwZGFlLCAweDFiNzEwYjM1LCAweDEzMWM0NzFiLFxuICAweDI4ZGI3N2Y1LCAweDIzMDQ3ZDg0LCAweDMyY2FhYjdiLCAweDQwYzcyNDkzLFxuICAweDNjOWViZTBhLCAweDE1YzliZWJjLCAweDQzMWQ2N2M0LCAweDljMTAwZDRjLFxuICAweDRjYzVkNGJlLCAweGNiM2U0MmI2LCAweDU5N2YyOTljLCAweGZjNjU3ZTJhLFxuICAweDVmY2I2ZmFiLCAweDNhZDZmYWVjLCAweDZjNDQxOThjLCAweDRhNDc1ODE3XG5dXG5cbnZhciBXID0gbmV3IEFycmF5KDE2MClcblxuZnVuY3Rpb24gU2hhNTEyICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgMTI4LCAxMTIpXG59XG5cbmluaGVyaXRzKFNoYTUxMiwgSGFzaClcblxuU2hhNTEyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9haCA9IDB4NmEwOWU2NjdcbiAgdGhpcy5fYmggPSAweGJiNjdhZTg1XG4gIHRoaXMuX2NoID0gMHgzYzZlZjM3MlxuICB0aGlzLl9kaCA9IDB4YTU0ZmY1M2FcbiAgdGhpcy5fZWggPSAweDUxMGU1MjdmXG4gIHRoaXMuX2ZoID0gMHg5YjA1Njg4Y1xuICB0aGlzLl9naCA9IDB4MWY4M2Q5YWJcbiAgdGhpcy5faGggPSAweDViZTBjZDE5XG5cbiAgdGhpcy5fYWwgPSAweGYzYmNjOTA4XG4gIHRoaXMuX2JsID0gMHg4NGNhYTczYlxuICB0aGlzLl9jbCA9IDB4ZmU5NGY4MmJcbiAgdGhpcy5fZGwgPSAweDVmMWQzNmYxXG4gIHRoaXMuX2VsID0gMHhhZGU2ODJkMVxuICB0aGlzLl9mbCA9IDB4MmIzZTZjMWZcbiAgdGhpcy5fZ2wgPSAweGZiNDFiZDZiXG4gIHRoaXMuX2hsID0gMHgxMzdlMjE3OVxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIENoICh4LCB5LCB6KSB7XG4gIHJldHVybiB6IF4gKHggJiAoeSBeIHopKVxufVxuXG5mdW5jdGlvbiBtYWogKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgfCAoeiAmICh4IHwgeSkpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAyOCB8IHhsIDw8IDQpIF4gKHhsID4+PiAyIHwgeCA8PCAzMCkgXiAoeGwgPj4+IDcgfCB4IDw8IDI1KVxufVxuXG5mdW5jdGlvbiBzaWdtYTEgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMTQgfCB4bCA8PCAxOCkgXiAoeCA+Pj4gMTggfCB4bCA8PCAxNCkgXiAoeGwgPj4+IDkgfCB4IDw8IDIzKVxufVxuXG5mdW5jdGlvbiBHYW1tYTAgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMSB8IHhsIDw8IDMxKSBeICh4ID4+PiA4IHwgeGwgPDwgMjQpIF4gKHggPj4+IDcpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMGwgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMSB8IHhsIDw8IDMxKSBeICh4ID4+PiA4IHwgeGwgPDwgMjQpIF4gKHggPj4+IDcgfCB4bCA8PCAyNSlcbn1cblxuZnVuY3Rpb24gR2FtbWExICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDE5IHwgeGwgPDwgMTMpIF4gKHhsID4+PiAyOSB8IHggPDwgMykgXiAoeCA+Pj4gNilcbn1cblxuZnVuY3Rpb24gR2FtbWExbCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxOSB8IHhsIDw8IDEzKSBeICh4bCA+Pj4gMjkgfCB4IDw8IDMpIF4gKHggPj4+IDYgfCB4bCA8PCAyNilcbn1cblxuZnVuY3Rpb24gZ2V0Q2FycnkgKGEsIGIpIHtcbiAgcmV0dXJuIChhID4+PiAwKSA8IChiID4+PiAwKSA/IDEgOiAwXG59XG5cblNoYTUxMi5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBXID0gdGhpcy5fd1xuXG4gIHZhciBhaCA9IHRoaXMuX2FoIHwgMFxuICB2YXIgYmggPSB0aGlzLl9iaCB8IDBcbiAgdmFyIGNoID0gdGhpcy5fY2ggfCAwXG4gIHZhciBkaCA9IHRoaXMuX2RoIHwgMFxuICB2YXIgZWggPSB0aGlzLl9laCB8IDBcbiAgdmFyIGZoID0gdGhpcy5fZmggfCAwXG4gIHZhciBnaCA9IHRoaXMuX2doIHwgMFxuICB2YXIgaGggPSB0aGlzLl9oaCB8IDBcblxuICB2YXIgYWwgPSB0aGlzLl9hbCB8IDBcbiAgdmFyIGJsID0gdGhpcy5fYmwgfCAwXG4gIHZhciBjbCA9IHRoaXMuX2NsIHwgMFxuICB2YXIgZGwgPSB0aGlzLl9kbCB8IDBcbiAgdmFyIGVsID0gdGhpcy5fZWwgfCAwXG4gIHZhciBmbCA9IHRoaXMuX2ZsIHwgMFxuICB2YXIgZ2wgPSB0aGlzLl9nbCB8IDBcbiAgdmFyIGhsID0gdGhpcy5faGwgfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSArPSAyKSB7XG4gICAgV1tpXSA9IE0ucmVhZEludDMyQkUoaSAqIDQpXG4gICAgV1tpICsgMV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0ICsgNClcbiAgfVxuICBmb3IgKDsgaSA8IDE2MDsgaSArPSAyKSB7XG4gICAgdmFyIHhoID0gV1tpIC0gMTUgKiAyXVxuICAgIHZhciB4bCA9IFdbaSAtIDE1ICogMiArIDFdXG4gICAgdmFyIGdhbW1hMCA9IEdhbW1hMCh4aCwgeGwpXG4gICAgdmFyIGdhbW1hMGwgPSBHYW1tYTBsKHhsLCB4aClcblxuICAgIHhoID0gV1tpIC0gMiAqIDJdXG4gICAgeGwgPSBXW2kgLSAyICogMiArIDFdXG4gICAgdmFyIGdhbW1hMSA9IEdhbW1hMSh4aCwgeGwpXG4gICAgdmFyIGdhbW1hMWwgPSBHYW1tYTFsKHhsLCB4aClcblxuICAgIC8vIFdbaV0gPSBnYW1tYTAgKyBXW2kgLSA3XSArIGdhbW1hMSArIFdbaSAtIDE2XVxuICAgIHZhciBXaTdoID0gV1tpIC0gNyAqIDJdXG4gICAgdmFyIFdpN2wgPSBXW2kgLSA3ICogMiArIDFdXG5cbiAgICB2YXIgV2kxNmggPSBXW2kgLSAxNiAqIDJdXG4gICAgdmFyIFdpMTZsID0gV1tpIC0gMTYgKiAyICsgMV1cblxuICAgIHZhciBXaWwgPSAoZ2FtbWEwbCArIFdpN2wpIHwgMFxuICAgIHZhciBXaWggPSAoZ2FtbWEwICsgV2k3aCArIGdldENhcnJ5KFdpbCwgZ2FtbWEwbCkpIHwgMFxuICAgIFdpbCA9IChXaWwgKyBnYW1tYTFsKSB8IDBcbiAgICBXaWggPSAoV2loICsgZ2FtbWExICsgZ2V0Q2FycnkoV2lsLCBnYW1tYTFsKSkgfCAwXG4gICAgV2lsID0gKFdpbCArIFdpMTZsKSB8IDBcbiAgICBXaWggPSAoV2loICsgV2kxNmggKyBnZXRDYXJyeShXaWwsIFdpMTZsKSkgfCAwXG5cbiAgICBXW2ldID0gV2loXG4gICAgV1tpICsgMV0gPSBXaWxcbiAgfVxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgMTYwOyBqICs9IDIpIHtcbiAgICBXaWggPSBXW2pdXG4gICAgV2lsID0gV1tqICsgMV1cblxuICAgIHZhciBtYWpoID0gbWFqKGFoLCBiaCwgY2gpXG4gICAgdmFyIG1hamwgPSBtYWooYWwsIGJsLCBjbClcblxuICAgIHZhciBzaWdtYTBoID0gc2lnbWEwKGFoLCBhbClcbiAgICB2YXIgc2lnbWEwbCA9IHNpZ21hMChhbCwgYWgpXG4gICAgdmFyIHNpZ21hMWggPSBzaWdtYTEoZWgsIGVsKVxuICAgIHZhciBzaWdtYTFsID0gc2lnbWExKGVsLCBlaClcblxuICAgIC8vIHQxID0gaCArIHNpZ21hMSArIGNoICsgS1tqXSArIFdbal1cbiAgICB2YXIgS2loID0gS1tqXVxuICAgIHZhciBLaWwgPSBLW2ogKyAxXVxuXG4gICAgdmFyIGNoaCA9IENoKGVoLCBmaCwgZ2gpXG4gICAgdmFyIGNobCA9IENoKGVsLCBmbCwgZ2wpXG5cbiAgICB2YXIgdDFsID0gKGhsICsgc2lnbWExbCkgfCAwXG4gICAgdmFyIHQxaCA9IChoaCArIHNpZ21hMWggKyBnZXRDYXJyeSh0MWwsIGhsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIGNobCkgfCAwXG4gICAgdDFoID0gKHQxaCArIGNoaCArIGdldENhcnJ5KHQxbCwgY2hsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIEtpbCkgfCAwXG4gICAgdDFoID0gKHQxaCArIEtpaCArIGdldENhcnJ5KHQxbCwgS2lsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIFdpbCkgfCAwXG4gICAgdDFoID0gKHQxaCArIFdpaCArIGdldENhcnJ5KHQxbCwgV2lsKSkgfCAwXG5cbiAgICAvLyB0MiA9IHNpZ21hMCArIG1halxuICAgIHZhciB0MmwgPSAoc2lnbWEwbCArIG1hamwpIHwgMFxuICAgIHZhciB0MmggPSAoc2lnbWEwaCArIG1hamggKyBnZXRDYXJyeSh0MmwsIHNpZ21hMGwpKSB8IDBcblxuICAgIGhoID0gZ2hcbiAgICBobCA9IGdsXG4gICAgZ2ggPSBmaFxuICAgIGdsID0gZmxcbiAgICBmaCA9IGVoXG4gICAgZmwgPSBlbFxuICAgIGVsID0gKGRsICsgdDFsKSB8IDBcbiAgICBlaCA9IChkaCArIHQxaCArIGdldENhcnJ5KGVsLCBkbCkpIHwgMFxuICAgIGRoID0gY2hcbiAgICBkbCA9IGNsXG4gICAgY2ggPSBiaFxuICAgIGNsID0gYmxcbiAgICBiaCA9IGFoXG4gICAgYmwgPSBhbFxuICAgIGFsID0gKHQxbCArIHQybCkgfCAwXG4gICAgYWggPSAodDFoICsgdDJoICsgZ2V0Q2FycnkoYWwsIHQxbCkpIHwgMFxuICB9XG5cbiAgdGhpcy5fYWwgPSAodGhpcy5fYWwgKyBhbCkgfCAwXG4gIHRoaXMuX2JsID0gKHRoaXMuX2JsICsgYmwpIHwgMFxuICB0aGlzLl9jbCA9ICh0aGlzLl9jbCArIGNsKSB8IDBcbiAgdGhpcy5fZGwgPSAodGhpcy5fZGwgKyBkbCkgfCAwXG4gIHRoaXMuX2VsID0gKHRoaXMuX2VsICsgZWwpIHwgMFxuICB0aGlzLl9mbCA9ICh0aGlzLl9mbCArIGZsKSB8IDBcbiAgdGhpcy5fZ2wgPSAodGhpcy5fZ2wgKyBnbCkgfCAwXG4gIHRoaXMuX2hsID0gKHRoaXMuX2hsICsgaGwpIHwgMFxuXG4gIHRoaXMuX2FoID0gKHRoaXMuX2FoICsgYWggKyBnZXRDYXJyeSh0aGlzLl9hbCwgYWwpKSB8IDBcbiAgdGhpcy5fYmggPSAodGhpcy5fYmggKyBiaCArIGdldENhcnJ5KHRoaXMuX2JsLCBibCkpIHwgMFxuICB0aGlzLl9jaCA9ICh0aGlzLl9jaCArIGNoICsgZ2V0Q2FycnkodGhpcy5fY2wsIGNsKSkgfCAwXG4gIHRoaXMuX2RoID0gKHRoaXMuX2RoICsgZGggKyBnZXRDYXJyeSh0aGlzLl9kbCwgZGwpKSB8IDBcbiAgdGhpcy5fZWggPSAodGhpcy5fZWggKyBlaCArIGdldENhcnJ5KHRoaXMuX2VsLCBlbCkpIHwgMFxuICB0aGlzLl9maCA9ICh0aGlzLl9maCArIGZoICsgZ2V0Q2FycnkodGhpcy5fZmwsIGZsKSkgfCAwXG4gIHRoaXMuX2doID0gKHRoaXMuX2doICsgZ2ggKyBnZXRDYXJyeSh0aGlzLl9nbCwgZ2wpKSB8IDBcbiAgdGhpcy5faGggPSAodGhpcy5faGggKyBoaCArIGdldENhcnJ5KHRoaXMuX2hsLCBobCkpIHwgMFxufVxuXG5TaGE1MTIucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSg2NClcblxuICBmdW5jdGlvbiB3cml0ZUludDY0QkUgKGgsIGwsIG9mZnNldCkge1xuICAgIEgud3JpdGVJbnQzMkJFKGgsIG9mZnNldClcbiAgICBILndyaXRlSW50MzJCRShsLCBvZmZzZXQgKyA0KVxuICB9XG5cbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2FoLCB0aGlzLl9hbCwgMClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2JoLCB0aGlzLl9ibCwgOClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2NoLCB0aGlzLl9jbCwgMTYpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9kaCwgdGhpcy5fZGwsIDI0KVxuICB3cml0ZUludDY0QkUodGhpcy5fZWgsIHRoaXMuX2VsLCAzMilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2ZoLCB0aGlzLl9mbCwgNDApXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9naCwgdGhpcy5fZ2wsIDQ4KVxuICB3cml0ZUludDY0QkUodGhpcy5faGgsIHRoaXMuX2hsLCA1NilcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTUxMlxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtO1xuXG52YXIgRUUgPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5pbmhlcml0cyhTdHJlYW0sIEVFKTtcblN0cmVhbS5SZWFkYWJsZSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcycpO1xuU3RyZWFtLldyaXRhYmxlID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzJyk7XG5TdHJlYW0uRHVwbGV4ID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX2R1cGxleC5qcycpO1xuU3RyZWFtLlRyYW5zZm9ybSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMnKTtcblN0cmVhbS5QYXNzVGhyb3VnaCA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcycpO1xuU3RyZWFtLmZpbmlzaGVkID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2VuZC1vZi1zdHJlYW0uanMnKVxuU3RyZWFtLnBpcGVsaW5lID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3BpcGVsaW5lLmpzJylcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC40LnhcblN0cmVhbS5TdHJlYW0gPSBTdHJlYW07XG5cblxuXG4vLyBvbGQtc3R5bGUgc3RyZWFtcy4gIE5vdGUgdGhhdCB0aGUgcGlwZSBtZXRob2QgKHRoZSBvbmx5IHJlbGV2YW50XG4vLyBwYXJ0IG9mIHRoaXMgY2xhc3MpIGlzIG92ZXJyaWRkZW4gaW4gdGhlIFJlYWRhYmxlIGNsYXNzLlxuXG5mdW5jdGlvbiBTdHJlYW0oKSB7XG4gIEVFLmNhbGwodGhpcyk7XG59XG5cblN0cmVhbS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uKGRlc3QsIG9wdGlvbnMpIHtcbiAgdmFyIHNvdXJjZSA9IHRoaXM7XG5cbiAgZnVuY3Rpb24gb25kYXRhKGNodW5rKSB7XG4gICAgaWYgKGRlc3Qud3JpdGFibGUpIHtcbiAgICAgIGlmIChmYWxzZSA9PT0gZGVzdC53cml0ZShjaHVuaykgJiYgc291cmNlLnBhdXNlKSB7XG4gICAgICAgIHNvdXJjZS5wYXVzZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNvdXJjZS5vbignZGF0YScsIG9uZGF0YSk7XG5cbiAgZnVuY3Rpb24gb25kcmFpbigpIHtcbiAgICBpZiAoc291cmNlLnJlYWRhYmxlICYmIHNvdXJjZS5yZXN1bWUpIHtcbiAgICAgIHNvdXJjZS5yZXN1bWUoKTtcbiAgICB9XG4gIH1cblxuICBkZXN0Lm9uKCdkcmFpbicsIG9uZHJhaW4pO1xuXG4gIC8vIElmIHRoZSAnZW5kJyBvcHRpb24gaXMgbm90IHN1cHBsaWVkLCBkZXN0LmVuZCgpIHdpbGwgYmUgY2FsbGVkIHdoZW5cbiAgLy8gc291cmNlIGdldHMgdGhlICdlbmQnIG9yICdjbG9zZScgZXZlbnRzLiAgT25seSBkZXN0LmVuZCgpIG9uY2UuXG4gIGlmICghZGVzdC5faXNTdGRpbyAmJiAoIW9wdGlvbnMgfHwgb3B0aW9ucy5lbmQgIT09IGZhbHNlKSkge1xuICAgIHNvdXJjZS5vbignZW5kJywgb25lbmQpO1xuICAgIHNvdXJjZS5vbignY2xvc2UnLCBvbmNsb3NlKTtcbiAgfVxuXG4gIHZhciBkaWRPbkVuZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBvbmVuZCgpIHtcbiAgICBpZiAoZGlkT25FbmQpIHJldHVybjtcbiAgICBkaWRPbkVuZCA9IHRydWU7XG5cbiAgICBkZXN0LmVuZCgpO1xuICB9XG5cblxuICBmdW5jdGlvbiBvbmNsb3NlKCkge1xuICAgIGlmIChkaWRPbkVuZCkgcmV0dXJuO1xuICAgIGRpZE9uRW5kID0gdHJ1ZTtcblxuICAgIGlmICh0eXBlb2YgZGVzdC5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSBkZXN0LmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIGRvbid0IGxlYXZlIGRhbmdsaW5nIHBpcGVzIHdoZW4gdGhlcmUgYXJlIGVycm9ycy5cbiAgZnVuY3Rpb24gb25lcnJvcihlcikge1xuICAgIGNsZWFudXAoKTtcbiAgICBpZiAoRUUubGlzdGVuZXJDb3VudCh0aGlzLCAnZXJyb3InKSA9PT0gMCkge1xuICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCBzdHJlYW0gZXJyb3IgaW4gcGlwZS5cbiAgICB9XG4gIH1cblxuICBzb3VyY2Uub24oJ2Vycm9yJywgb25lcnJvcik7XG4gIGRlc3Qub24oJ2Vycm9yJywgb25lcnJvcik7XG5cbiAgLy8gcmVtb3ZlIGFsbCB0aGUgZXZlbnQgbGlzdGVuZXJzIHRoYXQgd2VyZSBhZGRlZC5cbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcblxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgY2xlYW51cCk7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIGNsZWFudXApO1xuXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBjbGVhbnVwKTtcbiAgfVxuXG4gIHNvdXJjZS5vbignZW5kJywgY2xlYW51cCk7XG4gIHNvdXJjZS5vbignY2xvc2UnLCBjbGVhbnVwKTtcblxuICBkZXN0Lm9uKCdjbG9zZScsIGNsZWFudXApO1xuXG4gIGRlc3QuZW1pdCgncGlwZScsIHNvdXJjZSk7XG5cbiAgLy8gQWxsb3cgZm9yIHVuaXgtbGlrZSB1c2FnZTogQS5waXBlKEIpLnBpcGUoQylcbiAgcmV0dXJuIGRlc3Q7XG59O1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBpc0VuY29kaW5nID0gQnVmZmVyLmlzRW5jb2RpbmcgfHwgZnVuY3Rpb24gKGVuY29kaW5nKSB7XG4gIGVuY29kaW5nID0gJycgKyBlbmNvZGluZztcbiAgc3dpdGNoIChlbmNvZGluZyAmJiBlbmNvZGluZy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpjYXNlICd1dGY4JzpjYXNlICd1dGYtOCc6Y2FzZSAnYXNjaWknOmNhc2UgJ2JpbmFyeSc6Y2FzZSAnYmFzZTY0JzpjYXNlICd1Y3MyJzpjYXNlICd1Y3MtMic6Y2FzZSAndXRmMTZsZSc6Y2FzZSAndXRmLTE2bGUnOmNhc2UgJ3Jhdyc6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5mdW5jdGlvbiBfbm9ybWFsaXplRW5jb2RpbmcoZW5jKSB7XG4gIGlmICghZW5jKSByZXR1cm4gJ3V0ZjgnO1xuICB2YXIgcmV0cmllZDtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuYykge1xuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiAndXRmOCc7XG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gJ3V0ZjE2bGUnO1xuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiAnbGF0aW4xJztcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gZW5jO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHJldHJpZWQpIHJldHVybjsgLy8gdW5kZWZpbmVkXG4gICAgICAgIGVuYyA9ICgnJyArIGVuYykudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0cmllZCA9IHRydWU7XG4gICAgfVxuICB9XG59O1xuXG4vLyBEbyBub3QgY2FjaGUgYEJ1ZmZlci5pc0VuY29kaW5nYCB3aGVuIGNoZWNraW5nIGVuY29kaW5nIG5hbWVzIGFzIHNvbWVcbi8vIG1vZHVsZXMgbW9ua2V5LXBhdGNoIGl0IHRvIHN1cHBvcnQgYWRkaXRpb25hbCBlbmNvZGluZ3NcbmZ1bmN0aW9uIG5vcm1hbGl6ZUVuY29kaW5nKGVuYykge1xuICB2YXIgbmVuYyA9IF9ub3JtYWxpemVFbmNvZGluZyhlbmMpO1xuICBpZiAodHlwZW9mIG5lbmMgIT09ICdzdHJpbmcnICYmIChCdWZmZXIuaXNFbmNvZGluZyA9PT0gaXNFbmNvZGluZyB8fCAhaXNFbmNvZGluZyhlbmMpKSkgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jKTtcbiAgcmV0dXJuIG5lbmMgfHwgZW5jO1xufVxuXG4vLyBTdHJpbmdEZWNvZGVyIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgZWZmaWNpZW50bHkgc3BsaXR0aW5nIGEgc2VyaWVzIG9mXG4vLyBidWZmZXJzIGludG8gYSBzZXJpZXMgb2YgSlMgc3RyaW5ncyB3aXRob3V0IGJyZWFraW5nIGFwYXJ0IG11bHRpLWJ5dGVcbi8vIGNoYXJhY3RlcnMuXG5leHBvcnRzLlN0cmluZ0RlY29kZXIgPSBTdHJpbmdEZWNvZGVyO1xuZnVuY3Rpb24gU3RyaW5nRGVjb2RlcihlbmNvZGluZykge1xuICB0aGlzLmVuY29kaW5nID0gbm9ybWFsaXplRW5jb2RpbmcoZW5jb2RpbmcpO1xuICB2YXIgbmI7XG4gIHN3aXRjaCAodGhpcy5lbmNvZGluZykge1xuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgdGhpcy50ZXh0ID0gdXRmMTZUZXh0O1xuICAgICAgdGhpcy5lbmQgPSB1dGYxNkVuZDtcbiAgICAgIG5iID0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgdGhpcy5maWxsTGFzdCA9IHV0ZjhGaWxsTGFzdDtcbiAgICAgIG5iID0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICB0aGlzLnRleHQgPSBiYXNlNjRUZXh0O1xuICAgICAgdGhpcy5lbmQgPSBiYXNlNjRFbmQ7XG4gICAgICBuYiA9IDM7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhpcy53cml0ZSA9IHNpbXBsZVdyaXRlO1xuICAgICAgdGhpcy5lbmQgPSBzaW1wbGVFbmQ7XG4gICAgICByZXR1cm47XG4gIH1cbiAgdGhpcy5sYXN0TmVlZCA9IDA7XG4gIHRoaXMubGFzdFRvdGFsID0gMDtcbiAgdGhpcy5sYXN0Q2hhciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuYik7XG59XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGJ1Zikge1xuICBpZiAoYnVmLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICB2YXIgcjtcbiAgdmFyIGk7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSB7XG4gICAgciA9IHRoaXMuZmlsbExhc3QoYnVmKTtcbiAgICBpZiAociA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJyc7XG4gICAgaSA9IHRoaXMubGFzdE5lZWQ7XG4gICAgdGhpcy5sYXN0TmVlZCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgaSA9IDA7XG4gIH1cbiAgaWYgKGkgPCBidWYubGVuZ3RoKSByZXR1cm4gciA/IHIgKyB0aGlzLnRleHQoYnVmLCBpKSA6IHRoaXMudGV4dChidWYsIGkpO1xuICByZXR1cm4gciB8fCAnJztcbn07XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmVuZCA9IHV0ZjhFbmQ7XG5cbi8vIFJldHVybnMgb25seSBjb21wbGV0ZSBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS50ZXh0ID0gdXRmOFRleHQ7XG5cbi8vIEF0dGVtcHRzIHRvIGNvbXBsZXRlIGEgcGFydGlhbCBub24tVVRGLTggY2hhcmFjdGVyIHVzaW5nIGJ5dGVzIGZyb20gYSBCdWZmZXJcblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmZpbGxMYXN0ID0gZnVuY3Rpb24gKGJ1Zikge1xuICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7XG4gICAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkLCAwLCB0aGlzLmxhc3ROZWVkKTtcbiAgICByZXR1cm4gdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLCAwLCB0aGlzLmxhc3RUb3RhbCk7XG4gIH1cbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkLCAwLCBidWYubGVuZ3RoKTtcbiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoO1xufTtcblxuLy8gQ2hlY2tzIHRoZSB0eXBlIG9mIGEgVVRGLTggYnl0ZSwgd2hldGhlciBpdCdzIEFTQ0lJLCBhIGxlYWRpbmcgYnl0ZSwgb3IgYVxuLy8gY29udGludWF0aW9uIGJ5dGUuIElmIGFuIGludmFsaWQgYnl0ZSBpcyBkZXRlY3RlZCwgLTIgaXMgcmV0dXJuZWQuXG5mdW5jdGlvbiB1dGY4Q2hlY2tCeXRlKGJ5dGUpIHtcbiAgaWYgKGJ5dGUgPD0gMHg3RikgcmV0dXJuIDA7ZWxzZSBpZiAoYnl0ZSA+PiA1ID09PSAweDA2KSByZXR1cm4gMjtlbHNlIGlmIChieXRlID4+IDQgPT09IDB4MEUpIHJldHVybiAzO2Vsc2UgaWYgKGJ5dGUgPj4gMyA9PT0gMHgxRSkgcmV0dXJuIDQ7XG4gIHJldHVybiBieXRlID4+IDYgPT09IDB4MDIgPyAtMSA6IC0yO1xufVxuXG4vLyBDaGVja3MgYXQgbW9zdCAzIGJ5dGVzIGF0IHRoZSBlbmQgb2YgYSBCdWZmZXIgaW4gb3JkZXIgdG8gZGV0ZWN0IGFuXG4vLyBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyLiBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzICgyLCAzLCBvciA0KVxuLy8gbmVlZGVkIHRvIGNvbXBsZXRlIHRoZSBVVEYtOCBjaGFyYWN0ZXIgKGlmIGFwcGxpY2FibGUpIGFyZSByZXR1cm5lZC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0luY29tcGxldGUoc2VsZiwgYnVmLCBpKSB7XG4gIHZhciBqID0gYnVmLmxlbmd0aCAtIDE7XG4gIGlmIChqIDwgaSkgcmV0dXJuIDA7XG4gIHZhciBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSBzZWxmLmxhc3ROZWVkID0gbmIgLSAxO1xuICAgIHJldHVybiBuYjtcbiAgfVxuICBpZiAoLS1qIDwgaSB8fCBuYiA9PT0gLTIpIHJldHVybiAwO1xuICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSBzZWxmLmxhc3ROZWVkID0gbmIgLSAyO1xuICAgIHJldHVybiBuYjtcbiAgfVxuICBpZiAoLS1qIDwgaSB8fCBuYiA9PT0gLTIpIHJldHVybiAwO1xuICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSB7XG4gICAgICBpZiAobmIgPT09IDIpIG5iID0gMDtlbHNlIHNlbGYubGFzdE5lZWQgPSBuYiAtIDM7XG4gICAgfVxuICAgIHJldHVybiBuYjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy8gVmFsaWRhdGVzIGFzIG1hbnkgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyIGFzXG4vLyBuZWVkZWQgb3IgYXJlIGF2YWlsYWJsZS4gSWYgd2Ugc2VlIGEgbm9uLWNvbnRpbnVhdGlvbiBieXRlIHdoZXJlIHdlIGV4cGVjdFxuLy8gb25lLCB3ZSBcInJlcGxhY2VcIiB0aGUgdmFsaWRhdGVkIGNvbnRpbnVhdGlvbiBieXRlcyB3ZSd2ZSBzZWVuIHNvIGZhciB3aXRoXG4vLyBhIHNpbmdsZSBVVEYtOCByZXBsYWNlbWVudCBjaGFyYWN0ZXIgKCdcXHVmZmZkJyksIHRvIG1hdGNoIHY4J3MgVVRGLTggZGVjb2Rpbmdcbi8vIGJlaGF2aW9yLiBUaGUgY29udGludWF0aW9uIGJ5dGUgY2hlY2sgaXMgaW5jbHVkZWQgdGhyZWUgdGltZXMgaW4gdGhlIGNhc2Vcbi8vIHdoZXJlIGFsbCBvZiB0aGUgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIGNoYXJhY3RlciBleGlzdCBpbiB0aGUgc2FtZSBidWZmZXIuXG4vLyBJdCBpcyBhbHNvIGRvbmUgdGhpcyB3YXkgYXMgYSBzbGlnaHQgcGVyZm9ybWFuY2UgaW5jcmVhc2UgaW5zdGVhZCBvZiB1c2luZyBhXG4vLyBsb29wLlxuZnVuY3Rpb24gdXRmOENoZWNrRXh0cmFCeXRlcyhzZWxmLCBidWYsIHApIHtcbiAgaWYgKChidWZbMF0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgIHNlbGYubGFzdE5lZWQgPSAwO1xuICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gIH1cbiAgaWYgKHNlbGYubGFzdE5lZWQgPiAxICYmIGJ1Zi5sZW5ndGggPiAxKSB7XG4gICAgaWYgKChidWZbMV0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgICAgc2VsZi5sYXN0TmVlZCA9IDE7XG4gICAgICByZXR1cm4gJ1xcdWZmZmQnO1xuICAgIH1cbiAgICBpZiAoc2VsZi5sYXN0TmVlZCA+IDIgJiYgYnVmLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmICgoYnVmWzJdICYgMHhDMCkgIT09IDB4ODApIHtcbiAgICAgICAgc2VsZi5sYXN0TmVlZCA9IDI7XG4gICAgICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dGVtcHRzIHRvIGNvbXBsZXRlIGEgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlci5cbmZ1bmN0aW9uIHV0ZjhGaWxsTGFzdChidWYpIHtcbiAgdmFyIHAgPSB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQ7XG4gIHZhciByID0gdXRmOENoZWNrRXh0cmFCeXRlcyh0aGlzLCBidWYsIHApO1xuICBpZiAociAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcjtcbiAgaWYgKHRoaXMubGFzdE5lZWQgPD0gYnVmLmxlbmd0aCkge1xuICAgIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHAsIDAsIHRoaXMubGFzdE5lZWQpO1xuICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTtcbiAgfVxuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCBwLCAwLCBidWYubGVuZ3RoKTtcbiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoO1xufVxuXG4vLyBSZXR1cm5zIGFsbCBjb21wbGV0ZSBVVEYtOCBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyLiBJZiB0aGUgQnVmZmVyIGVuZGVkIG9uIGFcbi8vIHBhcnRpYWwgY2hhcmFjdGVyLCB0aGUgY2hhcmFjdGVyJ3MgYnl0ZXMgYXJlIGJ1ZmZlcmVkIHVudGlsIHRoZSByZXF1aXJlZFxuLy8gbnVtYmVyIG9mIGJ5dGVzIGFyZSBhdmFpbGFibGUuXG5mdW5jdGlvbiB1dGY4VGV4dChidWYsIGkpIHtcbiAgdmFyIHRvdGFsID0gdXRmOENoZWNrSW5jb21wbGV0ZSh0aGlzLCBidWYsIGkpO1xuICBpZiAoIXRoaXMubGFzdE5lZWQpIHJldHVybiBidWYudG9TdHJpbmcoJ3V0ZjgnLCBpKTtcbiAgdGhpcy5sYXN0VG90YWwgPSB0b3RhbDtcbiAgdmFyIGVuZCA9IGJ1Zi5sZW5ndGggLSAodG90YWwgLSB0aGlzLmxhc3ROZWVkKTtcbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgMCwgZW5kKTtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmOCcsIGksIGVuZCk7XG59XG5cbi8vIEZvciBVVEYtOCwgYSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgaXMgYWRkZWQgd2hlbiBlbmRpbmcgb24gYSBwYXJ0aWFsXG4vLyBjaGFyYWN0ZXIuXG5mdW5jdGlvbiB1dGY4RW5kKGJ1Zikge1xuICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSByZXR1cm4gciArICdcXHVmZmZkJztcbiAgcmV0dXJuIHI7XG59XG5cbi8vIFVURi0xNkxFIHR5cGljYWxseSBuZWVkcyB0d28gYnl0ZXMgcGVyIGNoYXJhY3RlciwgYnV0IGV2ZW4gaWYgd2UgaGF2ZSBhbiBldmVuXG4vLyBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlLCB3ZSBuZWVkIHRvIGNoZWNrIGlmIHdlIGVuZCBvbiBhIGxlYWRpbmcvaGlnaFxuLy8gc3Vycm9nYXRlLiBJbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIG5leHQgdHdvIGJ5dGVzIGluIG9yZGVyIHRvXG4vLyBkZWNvZGUgdGhlIGxhc3QgY2hhcmFjdGVyIHByb3Blcmx5LlxuZnVuY3Rpb24gdXRmMTZUZXh0KGJ1ZiwgaSkge1xuICBpZiAoKGJ1Zi5sZW5ndGggLSBpKSAlIDIgPT09IDApIHtcbiAgICB2YXIgciA9IGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGkpO1xuICAgIGlmIChyKSB7XG4gICAgICB2YXIgYyA9IHIuY2hhckNvZGVBdChyLmxlbmd0aCAtIDEpO1xuICAgICAgaWYgKGMgPj0gMHhEODAwICYmIGMgPD0gMHhEQkZGKSB7XG4gICAgICAgIHRoaXMubGFzdE5lZWQgPSAyO1xuICAgICAgICB0aGlzLmxhc3RUb3RhbCA9IDQ7XG4gICAgICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDJdO1xuICAgICAgICB0aGlzLmxhc3RDaGFyWzFdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgICAgICAgcmV0dXJuIHIuc2xpY2UoMCwgLTEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuICB0aGlzLmxhc3ROZWVkID0gMTtcbiAgdGhpcy5sYXN0VG90YWwgPSAyO1xuICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGksIGJ1Zi5sZW5ndGggLSAxKTtcbn1cblxuLy8gRm9yIFVURi0xNkxFIHdlIGRvIG5vdCBleHBsaWNpdGx5IGFwcGVuZCBzcGVjaWFsIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgaWYgd2Vcbi8vIGVuZCBvbiBhIHBhcnRpYWwgY2hhcmFjdGVyLCB3ZSBzaW1wbHkgbGV0IHY4IGhhbmRsZSB0aGF0LlxuZnVuY3Rpb24gdXRmMTZFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHtcbiAgICB2YXIgZW5kID0gdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkO1xuICAgIHJldHVybiByICsgdGhpcy5sYXN0Q2hhci50b1N0cmluZygndXRmMTZsZScsIDAsIGVuZCk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFRleHQoYnVmLCBpKSB7XG4gIHZhciBuID0gKGJ1Zi5sZW5ndGggLSBpKSAlIDM7XG4gIGlmIChuID09PSAwKSByZXR1cm4gYnVmLnRvU3RyaW5nKCdiYXNlNjQnLCBpKTtcbiAgdGhpcy5sYXN0TmVlZCA9IDMgLSBuO1xuICB0aGlzLmxhc3RUb3RhbCA9IDM7XG4gIGlmIChuID09PSAxKSB7XG4gICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMl07XG4gICAgdGhpcy5sYXN0Q2hhclsxXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIH1cbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygnYmFzZTY0JywgaSwgYnVmLmxlbmd0aCAtIG4pO1xufVxuXG5mdW5jdGlvbiBiYXNlNjRFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHJldHVybiByICsgdGhpcy5sYXN0Q2hhci50b1N0cmluZygnYmFzZTY0JywgMCwgMyAtIHRoaXMubGFzdE5lZWQpO1xuICByZXR1cm4gcjtcbn1cblxuLy8gUGFzcyBieXRlcyBvbiB0aHJvdWdoIGZvciBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MgKGUuZy4gYXNjaWksIGxhdGluMSwgaGV4KVxuZnVuY3Rpb24gc2ltcGxlV3JpdGUoYnVmKSB7XG4gIHJldHVybiBidWYudG9TdHJpbmcodGhpcy5lbmNvZGluZyk7XG59XG5cbmZ1bmN0aW9uIHNpbXBsZUVuZChidWYpIHtcbiAgcmV0dXJuIGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG59IiwiLypcclxuICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlIGNvbnRyaWJ1dG9yXHJcbiAqIGxpY2Vuc2UgYWdyZWVtZW50czsgYW5kIHRvIFlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBcIlxyXG4gKi9cclxuLyogV3JpdHRlbiBieSBTY29wZXZpc2lvIEFHIDIwMjEgKi9cclxuXHJcbi8qIFRoZSBsaXN0IG9mIGNlcnRpY2F0ZXMgdGhhdCBhcmUgdHJ1c3R3b3J0aHkgZm9yIHZhbGlkYXRpb24uXHJcbiAqIFxyXG4gKiBUaGUgbGlzdCBpcyBhY2Nlc3NlZCB2aWEgdGhpcyBzaW5nbGV0b24gY2xhc3MgYW5kIG9yaWdpbmF0ZXNcclxuICogZnJvbSBcclxuICogIGh0dHBzOi8vZGUuZHNjZy51YmlyY2guY29tL3RydXN0TGlzdC9EU0MvXHJcbiAqL1xyXG5cclxuaW1wb3J0IGRhdGEgZnJvbSAnLi9jZXJ0cy5qc29uJ1xyXG5cclxuXHJcbi8qIENlcnRpZmljYXRlIGluZm9ybWF0aW9uLiBUaGlzIGluZm9ybWF0aW5vIGlkZW50aWZpZXMgdGhlIGNlcnRpZmljYXRlXHJcbiAqIHRoYXQgaGFzIHZhbGlkYXRlZCB0aGUgZ2l2ZW4gUVItQ29kZS4gVGhlIGNlcnRpZmljYXRlIGlzIGEgWDUwOSBcclxuICogc3RhbmRhcmQgY2VydGlmaWNhdGUsIGhvd2V2ZXIgdGhpcyBkYXRhc3RydWN0dXJlIHByb3ZpZGVzIGNvbnZlbmllbnQgZmllbGRzLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDZXJ0SW5mbyB7XHJcbiAgICBzdWJqZWN0OiBzdHJpbmc7ICAgICAgIC8vIHN1YmplY3Qgb2YgdGhlIGNlcnRpZmljYXRlXHJcbiAgICBpc3N1ZXI6IHN0cmluZzsgICAgICAgIC8vIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB0aGUgaXNzdWVyIG9mIHRoZSBjZXJ0aWZpY3RlXHJcbiAgICBub3RiZWZvcmU6IG51bWJlcjsgICAgIC8vIGRhdGUgYmVmb3JlIHdoaWNoIHRoZSBjZXJ0aWZpY2F0ZSBzaG91bGQgYmUgY29uc2lkZXJlZCBpbnZhbGlkXHJcbiAgICBub3RhZnRlcjogbnVtYmVyOyAgICAgIC8vIGRhdGUgYWZ0ZXIgd2hpY2ggdGhlIGNlcnRpZmljYXRlIHNob3VsZCBiZSBjb25zaWRlcmVkIGludmFsaWRcclxuICAgIHB1YmtleTogc3RyaW5nOyAgICAgICAgLy8gdGhlIHB1YmxpY2tleSBvZiB0aGUgY2VydGlmaWNhdGUgaW4gYSB3YXkgdGhhdCB0aGUgYnJvd3Nlci1jcnlwdG8gYXBpIGNhbiBwcm9jZXNzIGl0XHJcbiAgICByYXdYNTA5ZGF0YTogc3RyaW5nOyAgIC8vIHRoZSBYNTA5IGNlcnRpZmljYXRlIGluIGJpbmFyeSBERVIgZm9ybWF0LCBlbmNvZGVkIGFzIGJhc2U2NFxyXG4gICAgLy8gdGhlIHJhd1g1MDkgc3RyaW5nIGNvbnRhaW5zIGFsbCB0aGUgb3RoZXIgZmllbGRzLCBidXQgbmVlZHMgdG8gYmUgZGVjb2RlZCB0byBhY2Nlc3MgdGhhdCBpbmZvcm1hdGlvblxyXG4gICAgLy8gb25lIHdheSB0byBkbyB0aGF0IGlzIHVzaW5nICBvcGVuc3NsIC1pbmZvcm0gREVSIC10ZXh0IFxyXG59XHJcblxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBUcnVzdGxpc3Qge1xyXG4gICAgc3RhdGljIGluc3RhbmNlID0gbmV3IFRydXN0bGlzdCgpXHJcblxyXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlXHJcbiAgICBwcml2YXRlIGNlcnRJbmZvczogQ2VydEluZm9bXSA9IFtdXHJcblxyXG4gICAgYXN5bmMgZ2V0Q2VydEluZm9zKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZVxyXG4gICAgICAgICAgICBjb25zdCBjZXJ0cyA9IGRhdGEuY2VydHMgYXMgQ2VydEluZm9bXVxyXG4gICAgICAgICAgICB0aGlzLmNlcnRJbmZvcy5wdXNoKC4uLmNlcnRzKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jZXJ0SW5mb3NcclxuICAgIH1cclxuXHJcblxyXG59XHJcblxyXG4iLCIvKlxyXG4gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUgY29udHJpYnV0b3JcclxuICogbGljZW5zZSBhZ3JlZW1lbnRzOyBhbmQgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFwiXHJcbiAqL1xyXG4vKiBXcml0dGVuIGJ5IFNjb3BldmlzaW8gQUcgMjAyMSAqL1xyXG5cclxuLyogcGFyc2UgdGhlIGNvbnRlbnRzIG9mIGEgY2Jvci9jd3QvemxpYi9iYXNlNDUgZGdjIFxyXG4gKiB0aGlzIGZpbGUgY29udGFpbnMgZXZlcnl0aGluZyBuZWVkZWQgaW50ZXJuYWxseSBmb3IgdmFsaWRhdGlvblxyXG4gKi9cclxuXHJcbmltcG9ydCAqIGFzIGNib3IgZnJvbSAnY2Jvci13ZWInXHJcbmltcG9ydCBiYXNlNDUgZnJvbSAnYmFzZTQ1J1xyXG5pbXBvcnQgemxpYiBmcm9tICd6bGliJ1xyXG5pbXBvcnQgeyBCdWZmZXJ9IGZyb20gJ2J1ZmZlcidcclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIENvc2UxIHtcclxuXHJcbiAgICBwcm90ZWN0ZWRfOiBCdWZmZXJcclxuICAgIHVucHJvdGVjdGVkOiBNYXA8YW55LCBhbnk+XHJcbiAgICBwYXlsb2FkOiBCdWZmZXJcclxuICAgIHNpZ25hdHVyZXM6IEJ1ZmZlclxyXG5cclxuICAgIHN0YXRpYyBhc3luYyBkZWNvZGVDYm9yQXN5bmMoZGF0YTogQnVmZmVyKTogUHJvbWlzZTxudWxsfGFueT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNib3IuZGVjb2RlRmlyc3QoZGF0YSwgZnVuY3Rpb24gKGVycm9yOiBhbnksIG9iajogYW55KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoXCJmYWlsZWQgY2JvcjogXCIgKyBlcnJvcilcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvYmopXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYXN5bmMgdmFsdWVPZihlbmNvZGVkRGF0YTogc3RyaW5nKTogUHJvbWlzZTxDb3NlMSB8IG51bGw+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZW5jb2RlZERhdGEuaW5kZXhPZihcIkhDMTpcIikgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgZW5jb2RlZERhdGEgPSBlbmNvZGVkRGF0YS5zdWJzdHJpbmcoNClcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgZGVjb2RlZERhdGEgPSBiYXNlNDUuZGVjb2RlKGVuY29kZWREYXRhKVxyXG4gICAgICAgICAgICB6bGliLmluZmxhdGUoZGVjb2RlZERhdGEsIGZ1bmN0aW9uIChlcnJvcjogYW55LCBidWY6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KFwiZmFpbGVkIGNvc2UxOiBcIiArIGVycm9yKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2Jvci5kZWNvZGVGaXJzdChidWYsIGZ1bmN0aW9uIChlcnJvcjogYW55LCBvYmo6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXCJmYWlsZWQgY29zZTE6IFwiICsgZXJyb3IpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gb2JqXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvdGVjdGVkXyA9IHQudmFsdWVbMF1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnByb3RlY3RlZCA9IHQudmFsdWVbMV1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gdC52YWx1ZVsyXVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZXMgPSB0LnZhbHVlWzNdXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29zZTEgPSBuZXcgQ29zZTEocHJvdGVjdGVkXywgdW5wcm90ZWN0ZWQsIHBheWxvYWQsIHNpZ25hdHVyZXMpXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShjb3NlMSlcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWRfOiBCdWZmZXIsIHVucHJvdGVjdGVkOiBNYXA8YW55LCBhbnk+LCBwYXlsb2FkOiBCdWZmZXIsIHNpZ25hdHVyZXM6IEJ1ZmZlcikge1xyXG4gICAgICAgIHRoaXMucHJvdGVjdGVkXyA9IHByb3RlY3RlZF9cclxuICAgICAgICB0aGlzLnVucHJvdGVjdGVkID0gdW5wcm90ZWN0ZWRcclxuICAgICAgICB0aGlzLnBheWxvYWQgPSBwYXlsb2FkXHJcbiAgICAgICAgdGhpcy5zaWduYXR1cmVzID0gc2lnbmF0dXJlc1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBtYWtlRGF0YUZvclZlcmlmaWNhdGlvbigpIHtcclxuICAgICAgICAvLyB0aGlzIGFwcHJvYWNoIHNob3VsZCB3b3JrIGJ1dCBkb2Vzbid0XHJcbiAgICAgICAgLypcclxuICAgICAgICBjb25zdCByYXcgPSBjYm9yLmVuY29kZShcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgXCJTaWduYXR1cmUxXCIsIFxyXG4gICAgICAgICAgICAgICAgY29zZTEucHJvdGVjdGVkXywgXHJcbiAgICAgICAgICAgICAgICAvL1VpbnQ4QXJyYXkuZnJvbShbXSksIFxyXG4gICAgICAgICAgICAgICAgNjQsXHJcbiAgICAgICAgICAgICAgICA2NCxcclxuICAgICAgICAgICAgICAgIGNvc2UxLnBheWxvYWQsXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICApIGFzIFVpbnQ4QXJyYXlcclxuICAgICAgICAqL1xyXG5cclxuICAgICAgICAvLyBzaW5jZSB0aGUgYWJvdmUgZG9lc24ndCB3b3JrLCB3ZSBkbyB0aGUgY2JvciBzZW1pLW1hbnVhbGx5XHJcbiAgICAgICAgLy8gd2UgbWFrZSAyIGNodW5rcywgaW5zZXJ0IGEgNjQgKGVtcHR5IHRhZykgYW5kIHRoZW4gYXNzaWduIDB4ODRcclxuICAgICAgICAvLyB0byBtYXJrIHRoZSBzdHJ1Y3R1cmUgYXMgYSA0IGVudHJ5IGNib3JcclxuICAgICAgICBjb25zdCByYXcxID0gY2Jvci5lbmNvZGUoXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgIFwiU2lnbmF0dXJlMVwiLCBcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvdGVjdGVkXywgXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICApIGFzIFVpbnQ4QXJyYXlcclxuICAgICAgICBjb25zdCByYXcyID0gY2Jvci5lbmNvZGUoXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgIHRoaXMucGF5bG9hZCxcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICkgYXMgVWludDhBcnJheVxyXG4gICAgICAgIGNvbnN0IHJhdyA9IG5ldyBVaW50OEFycmF5KHJhdzEubGVuZ3RoICsgcmF3Mi5sZW5ndGgpXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSByYXcxLmxlbmd0aDsgaSA8IG47IGkrKykgcmF3W2ldID0gcmF3MVtpXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gcmF3Mi5sZW5ndGg7IGkgPCBuOyBpKyspIHJhd1tyYXcxLmxlbmd0aCArIGldID0gcmF3MltpXVxyXG4gICAgICAgIHJhd1tyYXcxLmxlbmd0aF0gPSA2NCAvLyBlbXB0eSBzbG90XHJcbiAgICAgICAgcmF3WzBdID0gMHg4NCAvLyBhcnJheSBvZiBsZW5ndGggNFxyXG4gICAgICAgIHJldHVybiByYXdcclxuICAgIH1cclxuXHJcbiAgICAvLyBzbWFsbCBhc24xIHV0aWxpdHlcclxuICAgIGVuY29kZWRVbnNpZ25lZEludGVnZXIoaTogVWludDhBcnJheSkgIHtcclxuICAgICAgICBsZXQgcGFkID0gMFxyXG4gICAgICAgIGxldCBvZmZzZXQgPSAwO1xyXG4gICAgICAgIHdoaWxlIChvZmZzZXQgPCBpLmxlbmd0aCAmJiBpW29mZnNldF0gPT0gMCkge1xyXG4gICAgICAgICAgICBvZmZzZXQrK1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob2Zmc2V0ID09IGkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShbIDB4MDIsIDB4MDEsIDB4MDAgXSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChpW29mZnNldF0gJiAweDgwKSAhPSAwKSB7XHJcbiAgICAgICAgICAgIHBhZCsrXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGkubGVuZ3RoIC0gb2Zmc2V0XHJcbiAgICAgICAgY29uc3QgZGVyID0gbmV3IFVpbnQ4QXJyYXkoMiArIGxlbmd0aCArIHBhZClcclxuICAgICAgICBkZXJbMF0gPSAweDAyXHJcbiAgICAgICAgZGVyWzFdID0gbGVuZ3RoICsgcGFkXHJcbiAgICAgICAgZm9yIChsZXQgcHRyID0gMDsgcHRyIDwgbGVuZ3RoOyArK3B0cikge1xyXG4gICAgICAgICAgICBkZXJbMiArIHBhZCArIHB0cl0gPSBpW29mZnNldCArIHB0cl1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRlclxyXG4gICAgfVxyXG5cclxuICAgIC8vIHNtYWxsIGFzbjEgdXRpbGl0eSAoQWdhaW4pXHJcbiAgICBjb21wdXRlTGVuZ3RoKHg6IG51bWJlcikgIHtcclxuICAgICAgICBpZiAoeCA8PSAxMjcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KFsgeCBdKVxyXG4gICAgICAgIH0gZWxzZSBpZiAoeCA8IDI1Nikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzB4ODEsIHhdKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aHJvdyBcInRvbyBsb25nXCJcclxuICAgIH1cclxuXHJcbiAgICAvLyBhcnJheWNvcHlcclxuICAgIHN0YXRpYyBzZXQoc3JjOiBVaW50OEFycmF5LCBzcmNwb3M6IG51bWJlciwgZGVzdDogVWludDhBcnJheSwgZGVzdHBvczogbnVtYmVyLCBuOiBudW1iZXIpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBkZXN0W2Rlc3Rwb3MgKyBpXSA9IHNyY1tzcmNwb3MgKyBpXVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBlbmNvZGUgdGhlIGNvc2UxIHNpZ25hdHVyZSBpbnRvIGFzbjEgci9zIHR5cGUgb2YgZm9ybWF0IChpbiBhc24xKVxyXG4gICAgZW5jb2RlU2lnbmF0dXJlKHJhdzogVWludDhBcnJheSkge1xyXG4gICAgICAgIGNvbnN0IHIgPSBuZXcgVWludDhBcnJheShyYXcubGVuZ3RoIC8gMilcclxuICAgICAgICBjb25zdCBzID0gbmV3IFVpbnQ4QXJyYXkocmF3Lmxlbmd0aCAvIDIpXHJcbiAgICAgICAgQ29zZTEuc2V0KHJhdywgMCwgciwgMCwgci5sZW5ndGgpXHJcbiAgICAgICAgQ29zZTEuc2V0KHJhdywgcy5sZW5ndGgsIHMsIDAsIHMubGVuZ3RoKVxyXG4gICAgICAgIGNvbnN0IHJlID0gdGhpcy5lbmNvZGVkVW5zaWduZWRJbnRlZ2VyKHIpXHJcbiAgICAgICAgY29uc3Qgc2UgPSB0aGlzLmVuY29kZWRVbnNpZ25lZEludGVnZXIocylcclxuICAgICAgICBjb25zdCBsZW4gPSB0aGlzLmNvbXB1dGVMZW5ndGgocmUubGVuZ3RoICsgc2UubGVuZ3RoKVxyXG4gICAgICAgIGNvbnN0IHNpZyA9IG5ldyBVaW50OEFycmF5KDEgKyBsZW4ubGVuZ3RoICsgcmUubGVuZ3RoICsgc2UubGVuZ3RoKVxyXG4gICAgICAgIHNpZ1swXSA9IDB4MzBcclxuICAgICAgICBDb3NlMS5zZXQobGVuLCAwLCBzaWcsIDEsIGxlbi5sZW5ndGgpXHJcbiAgICAgICAgQ29zZTEuc2V0KHJlLCAwLCBzaWcsIDEgKyBsZW4ubGVuZ3RoLCByZS5sZW5ndGgpXHJcbiAgICAgICAgQ29zZTEuc2V0KHNlLCAwLCBzaWcsIDEgKyBsZW4ubGVuZ3RoICsgcmUubGVuZ3RoLCBzZS5sZW5ndGgpXHJcbiAgICAgICAgcmV0dXJuIHNpZ1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuXHJcbn1cclxuXHJcbmNvbnNvbGUubG9nKFwiY29zZTEudHNcIilcclxuIiwiLypcclxuICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlIGNvbnRyaWJ1dG9yXHJcbiAqIGxpY2Vuc2UgYWdyZWVtZW50czsgYW5kIHRvIFlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBcIlxyXG4gKi9cclxuLyogV3JpdHRlbiBieSBTY29wZXZpc2lvIEFHIDIwMjEgKi9cclxuXHJcbi8qIFxyXG4gKiBwYXJzZSB0aGUgY29udGVudHMgb2YgYSBjYm9yL2N3dC96bGliL2Jhc2U0NSBkZ2NcclxuICpcclxuICogU3BlY3MgY2FuIGJlIGZvdW5kIGF0OlxyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZWhuLWRjYy1kZXZlbG9wbWVudC9oY2VydC1zcGVjL2Jsb2IvbWFpbi9oY2VydF9zcGVjLm1kXHJcbiAqL1xyXG5cclxuaW1wb3J0ICogYXMgY2JvciBmcm9tICdjYm9yLXdlYidcclxuaW1wb3J0IGJhc2U0NSBmcm9tICdiYXNlNDUnXHJcbmltcG9ydCB6bGliIGZyb20gJ3psaWInXHJcbmltcG9ydCB7IENlcnRJbmZvLCBUcnVzdGxpc3QgfSBmcm9tICcuL3RydXN0bGlzdCdcclxuaW1wb3J0IHsgQ29zZTEgfSBmcm9tICcuL2Nvc2UxJ1xyXG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInXHJcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvLWJyb3dzZXJpZnknXHJcblxyXG5cclxuY29uc3QgQ2xhaW1LZXlIY2VydCA9IC0yNjBcclxuY29uc3QgQ2xhaW1LZXlFdURnY1YxID0gMVxyXG5cclxuLypcclxuICogZXVkZ2MgcmVjb3JkXHJcbiAqXHJcbiAqIGNvbnRhaW5zIGFuIGFycmF5IG9mIHZhY2NpbmF0aW9uc1xyXG4gKiBhbmQgdXNlciBpbmZvcm1hdGlvblxyXG4gKiBcclxuICogaG93ZXZlciBpZiB0aGlzIGlzIHRvIGJlIHRyYW5zcG9ydGVkIGluc2lkZSBhIHFyY29kZSwgbW9zdFxyXG4gKiBsaWtlbHkgdGhlcmUgd2lsbCBiZSBvbmx5IG9uZSB2YWNjaW5hdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBFdURnY0NlcnQge1xyXG4gICAgXCJ2XCI6IEV1RGdjVmFjY2luY2F0aW9uW107ICAgIC8vIGFuIGFycmF5IG9mIHZhY2NpbmF0aW9ucywgcHJvYmFibHkganVzdCAxIHJpZ2h0IG5vd1xyXG4gICAgXCJkb2JcIjogc3RyaW5nOyAgICAgICAgICAgICAgIC8vIGRhdGUgb2YgYmlydGggXCIxOTcwLTAxLTMxXCIsXHJcbiAgICBcIm5hbVwiOiB7XHJcbiAgICAgICAgXCJmblwiOiBzdHJpbmc7ICAgICAgICAgICAgLy8gZmFtaWxpeSBuYW1lXHJcbiAgICAgICAgXCJnblwiOiBzdHJpbmc7ICAgICAgICAgICAgLy8gZmlyc3RuYW1lXHJcbiAgICAgICAgXCJmbnRcIjogc3RyaW5nOyAgICAgICAgICAgLy8gZm4gaW4gY2FwcyBhbmQgd2l0aG91dCBVbWxhdXRzIFxyXG4gICAgICAgIFwiZ250XCI6IHN0cmluZzsgICAgICAgICAgIC8vIGduIGluIGNhcHMgYW5kIHdpdGhvdXQgVW1sYXV0c1xyXG4gICAgfTtcclxuICAgIFwidmVyXCI6IHN0cmluZzsgIC8vIFwiMS4wLjBcIiA/XHJcbn1cclxuXHJcbi8qXHJcbiAqIGV1ZGdjIHZhY2NpbmF0aW9uIHJlY29yZFxyXG4gKlxyXG4gKiBmdWxsIGltbXVuaXphdGlvbiBpcyBnaXZlbiB3aGVuIHsgZG4gPT0gc2QgfVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBFdURnY1ZhY2NpbmNhdGlvbiB7XHJcbiAgICBcImNpXCI6IHN0cmluZzsgIC8vIFwiVVJOOlVWQ0k6MDFERS8uLi4uLlwiICBVbmlxdWUgQ2VydGlmaWNhdGUgSWRlbnRpZmllcjogVVZDSVxyXG4gICAgXCJjb1wiOiBzdHJpbmc7ICAvLyBcIkRFXCIsIHZhY2NpbmF0aW9uIG51bWJlclxyXG4gICAgXCJkblwiOiBudW1iZXI7ICAvLyAxLCAyIC4uLiBudW1iZXIgb2YgZG9zZVxyXG4gICAgXCJkdFwiOiBzdHJpbmc7ICAvLyBcIjIwMjEtMDItMjhcIiwgZGF0ZSBvZiB2YWNjaW5hdGlvblxyXG4gICAgXCJpc1wiOiBzdHJpbmc7ICAvLyBlZyBcIlJvYmVydCBLb2NoLUluc3RpdHV0XCIsIGlzc3VlclxyXG4gICAgXCJtYVwiOiBzdHJpbmc7ICAvLyBNYXJrZXRpbmcgQXV0aG9yaXphdGlvbiBIb2xkZXIgLSBpZiBubyBNQUggcHJlc2VudCwgdGhlbiBtYW51ZmFjdHVyZXJcclxuICAgIFwibXBcIjogc3RyaW5nOyAgLy8gVmFjY2luZSBtZWRpY2luYWwgcHJvZHVjdFxyXG4gICAgXCJzZFwiOiBudW1iZXI7ICAvLyBUb3RhbCBTZXJpZXMgb2YgRG9zZXNcclxuICAgIFwidGdcIjogc3RyaW5nOyAgLy8gRGlzZWFzZSBvciBhZ2VudCB0YXJnZXRlZFxyXG4gICAgXCJ2cFwiOiBzdHJpbmc7ICAvLyBWYWNjaW5lIG9yIHByb3BoeWxheGlzXHJcbn1cclxuXHJcblxyXG4vKlxyXG4gKiBPYmplY3QgdGhhdCBjb250YWlucyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgdG8gdGhlIHZhbGlkYXRlIG1ldGhvZC5cclxuICpcclxuICogWW91IGNhbiBwYXNzIGluIGEgZmlsdGVyIG9uIHdoYXQgY2VydGlmaWNhdGVzIHRvIHVzZVxyXG4gKiBvciBhbiBleHBsaWNpdCBsaXN0IG9mIGNlcnRpZmljYXRlcy4gU2VlIGJlbG93IGZvciBhdmFpbGFibGUgb3B0aW9ucy5cclxuICpcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbk9wdGlvbnMge1xyXG5cclxuICAgIC8qIGNlcnRGaWx0ZXI6IGlzIGFuIG9wdGlvbmFsIGZpbHRlciBwcmVkaWNhdGUgZnVuY3Rpb24uIEl0IGlzIHBhc3NlZCBlYWNoIFxyXG4gICAgICogY2VydEluZm8gYW5kIHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIGNlcnRpZmljYXRlcyB0aGF0IHNob3VsZCBiZSBza2lwcGVkXHJcbiAgICAgKiBkdXJpbmcgdmFsaWRhdGlvbi4gSWYgdGhlIGNlcnRGaWx0ZXIgaXMgdW5kZWZpbmVkIG9yIG51bGwsIHRoZW4gYWxsIFxyXG4gICAgICogY2VydHMgd2lsbCBiZSB1c2VkIGZvciB2YWxpZGF0aW9uLlxyXG4gICAgICovXHJcbiAgICBjZXJ0RmlsdGVyPzogKGNlcnRJbmZvOiBDZXJ0SW5mbykgPT4gYm9vbGVhbjtcclxuXHJcbiAgICAvKiBleHBsaWNpdENlcnRzOiBhbiBvcHRpb25hbCBhcnJheSBvZiBjZXJ0aWZpY2F0ZXMgdG8gdXNlIGZvciBcclxuICAgICAqIHZhbGlkYXRpb24uIHRoaXMgYWxsb3dzIHRvIHBhc3MgaW4gbW9yZSByZWNlbnQgY2VydGlmaWNhdGVzIG9yIG90aGVyXHJcbiAgICAgKiBjZXJ0aWZpY2F0ZXMuIFxyXG4gICAgICogXHJcbiAgICAgKiBQbGVhc2Ugbm90ZSB0aGF0IG9uZSBjYW4gb2J0YWluIHdyb25nIGFuZCBpbnZhbGlkKCEpXHJcbiAgICAgKiByZXN1bHRzIGJ5IGRvaW5nIHNvLiBUaGUgcmVzcG9uc2liaWxpdHkgdG8gb25seSBpbmRpY2F0ZSByZWFsbHlcclxuICAgICAqIHZhbGlkIGNlcnRpZmljYXRlcyBhcyB2YWxpZCBpbiB5b3VyIHByb2R1Y3QgaXMgdXAgdG8geW91LiBcclxuICAgICAqIFRoaXMgaXMgYWxzbyBwb3RlbnRpYWxseSB1c2VmdWxsIGZvciBkZWJ1Z2dpbmcuXHJcbiAgICAgKi9cclxuICAgIGV4cGxpY2l0Q2VydHM/OiBDZXJ0SW5mb1tdO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEV1RGdjIHtcclxuICAgICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXJzZXMgdGhlIGRhdGEgb2YgYSBkaWdpdGFsIHZhY2NpbmF0aW9uIHFyY29kZSBhbmQgcmV0dXJucyBhIHByb21pc2UgXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBlbmNvZGVkRGF0YSB0aGUgZGF0YSBpbnNpZGUgdGhlIHFyLWNvZGUuXHJcbiAgICAgKiBAcmV0dXJucyBhIGphdmFzY3JpcCBzdHJ1Y3R1cmUgd2l0aCB0aGUgY29udGVudHMgXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBhc3luYyBwYXJzZShlbmNvZGVkRGF0YTogc3RyaW5nKTogUHJvbWlzZTxFdURnY0NlcnQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZW5jb2RlZERhdGEuaW5kZXhPZihcIkhDMTpcIikgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgZW5jb2RlZERhdGEgPSBlbmNvZGVkRGF0YS5zdWJzdHJpbmcoNCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZGVjb2RlZERhdGEgPSBiYXNlNDUuZGVjb2RlKGVuY29kZWREYXRhKTtcclxuICAgICAgICAgICAgemxpYi5pbmZsYXRlKGRlY29kZWREYXRhLCBmdW5jdGlvbiAoZXJyb3I6IGFueSwgYnVmOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coYnVmLnRvU3RyaW5nKFwiaGV4XCIpKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNib3JXZWIgPSBjYm9yXHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNib3JXZWIuZGVjb2RlRmlyc3QoYnVmLCBmdW5jdGlvbiAoZXJyb3I6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gb2JqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN3dCA9IHQudG9KU09OKCkudmFsdWVbMl1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2Jvci5kZWNvZGVGaXJzdChjd3QsIGZ1bmN0aW9uIChlcnJvcjogYW55LCBvYmo6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdDIgPSBvYmpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhjZXJ0UmF3ID0gdDIuZ2V0KENsYWltS2V5SGNlcnQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBldWRnYyA9IGhjZXJ0UmF3LmdldChDbGFpbUtleUV1RGdjVjEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShldWRnYywgbnVsbCwgNCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGV1ZGdjKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTsgIFxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICAqIC4uLiBwZXJmb3JtIHRoZSB2YWxpZGF0aW9uXHJcbiAgICAgKlxyXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgdGhlIGNlcnQgaXMgaW52YWxpZC5cclxuICAgICAqIHRoaXMgY2FuIGJlIHRoZSBjYXNlIGlmIFxyXG4gICAgICogXHJcbiAgICAgKiAxLiB0aGUgY2VydCBmYWxzZWx5IGNsYWltcyB0byBiZSBzaWduZWQgYnkgb25lIG9mIHRoZSBzaWduYXR1cmVzIGluIHRoZSBcclxuICAgICAqICAgIHRydXN0bGlzdCBcclxuICAgICAqIDIuIG9yIGlmIHRoZSBjZXJ0IGlzIG5vdCBzaWduZWQgY29ycmVjdGx5IGF0IGFsbFxyXG4gICAgICogMy4gb3IgaWYgdGhlIGNlcnQgaXMgc2lnbmVkIGNvcnJlY3RseSBieSBzb21lIHVua25vd24gc2lnbmF0dXJlIFxyXG4gICAgICogXHJcbiAgICAgKiBhbGwgdGhyZWUgY2FzZXMgcmVzdWx0IGluIGFuIGludmFsaWQgY2VydGlmaWNhdGVcclxuICAgICAqIFxyXG4gICAgICogdGhlIHNlY29uZCBvcHRpb25hbCBhcmd1bWVudCBjb250cm9sbHMgc2V2ZXJhbCBhc3BlY3RzIG9mIGhvdyB0aGUgXHJcbiAgICAgKiB2YWxpZGF0aW9uIG1ldGhvZCBzaG91bGQgd29yay5cclxuICAgICAqICBcclxuICAgICAqIENlcnRpZmljYXRlcyB0aGF0IGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoZSBjbGllbnQtc2lkZSBicm93c2VyIGNyeXB0byBhcmUgYWxzbyBza2lwcGVkXHJcbiAgICAgKiBhbmQgYSB3YXJuaW5nIG1lc3NhZ2UgaXMgcHJpbnRlZCBvbiB0aGUgY29uc29sZS4gXHJcbiAgICAgKiBcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGFzeW5jIHZhbGlkYXRlKGVuY29kZWREYXRhOiBzdHJpbmcsIG9wdGlvbnM/OiBWYWxpZGF0aW9uT3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IGNvc2UxID0gYXdhaXQgQ29zZTEudmFsdWVPZihlbmNvZGVkRGF0YSlcclxuICAgICAgICBpZiAoIWNvc2UxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJhdyA9IGNvc2UxLm1ha2VEYXRhRm9yVmVyaWZpY2F0aW9uKClcclxuICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBCdWZmZXIuZnJvbShjb3NlMS5lbmNvZGVTaWduYXR1cmUoY29zZTEuc2lnbmF0dXJlcykpLnRvU3RyaW5nKFwiaGV4XCIpXHJcbiAgICAgICAgdmFyIGNlcnRJbmZvcyA9IGF3YWl0IFRydXN0bGlzdC5pbnN0YW5jZS5nZXRDZXJ0SW5mb3MoKVxyXG4gICAgICAgIGlmIChvcHRpb25zPy5leHBsaWNpdENlcnRzKSB7XHJcbiAgICAgICAgICAgIGNlcnRJbmZvcyA9IFsuLi5vcHRpb25zPy5leHBsaWNpdENlcnRzXVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBmaWx0ZXIgY2VydHNcclxuICAgICAgICBpZiAob3B0aW9ucz8uY2VydEZpbHRlcikge1xyXG4gICAgICAgICAgICBjb25zdCBvbGRDb3VudCA9IGNlcnRJbmZvcy5sZW5ndGhcclxuICAgICAgICAgICAgY2VydEluZm9zID0gY2VydEluZm9zLmZpbHRlcihvcHRpb25zPy5jZXJ0RmlsdGVyKVxyXG4gICAgICAgICAgICBpZiAoY2VydEluZm9zLmxlbmd0aCAhPSBvbGRDb3VudCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKFwiI1wiICsgKG9sZENvdW50IC0gY2VydEluZm9zLmxlbmd0aCkgKyBcIiBvZiBcIiArIG9sZENvdW50ICsgXCIgY2VydGlmY2F0ZXMgcmVtb3ZlZCBieSBmaWx0ZXJcIilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbiA9IGNlcnRJbmZvcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgY2VydEluZm8gPSBjZXJ0SW5mb3NbaV1cclxuICAgICAgICAgICAgLy8gaWYgd2UgcnVuIGludG8gYW4gZXhjZXB0aW9uIG9uIG9uZSBjZXJ0aW5mbywgY29udGludWUgd2l0aCB0aGUgb3RoZXJzXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2ZXJpZnkgPSBjcnlwdG8uY3JlYXRlVmVyaWZ5KFwic2hhMjU2XCIpXHJcbiAgICAgICAgICAgICAgICB2ZXJpZnkudXBkYXRlKHJhdylcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHZlcmlmeS52ZXJpZnkoY2VydEluZm8ucHVia2V5LCBzaWduYXR1cmUsIFwiaGV4XCIpXHJcbiAgICAgICAgICAgICAgICBpZiAodmVyaWZpY2F0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgZm9yIGRhdGUgKHZhbGlkaXR5IGRhdGVzIG9mIHg1MDkgY2VydGlmaWNhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKClcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aW1lVmFsaWQgPSBub3cgPj0gY2VydEluZm8ubm90YmVmb3JlICYmIG5vdyA8PSBjZXJ0SW5mby5ub3RhZnRlclxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aW1lVmFsaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNlcnRJbmZvXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJ1bmFibGUgdG8gaGFuZGxlIGNlcnQgXCIgKyAoaSArIDEpICsgXCIgb2YgXCIgKyBuICsgXCI6IFwiICsgY2VydEluZm8uc3ViamVjdCArIFwiOiBcIiArIGUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhyb3cgXCJOb3QgbWF0Y2hpbmcgY2VydGlmaWNhdGUgZm91bmRcIlxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IEV1RGdjX3BhcnNlID0gRXVEZ2MucGFyc2U7XHJcbmV4cG9ydCBjb25zdCBFdURnY192YWxpZGF0ZSA9IEV1RGdjLnZhbGlkYXRlO1xyXG5cclxuLy8gZGVmaW5lIGEgXCJnbG9iYWxcIiBtZXRob2QgaW4gdGhlIGJyb3dzZXJzIHdpbmRvdyBvYmplY3QgaWZmIHJ1bm5pbmdcclxuLy8gaW4gYSBicm93c2VyIGVudmlyb25tZW50XHJcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAod2luZG93IGFzIGFueSkuRXVEZ2NfcGFyc2UgPSBFdURnYy5wYXJzZTtcclxuICAgICh3aW5kb3cgYXMgYW55KS5FdURnY192YWxpZGF0ZSA9IEV1RGdjLnZhbGlkYXRlO1xyXG59XHJcblxyXG5jb25zb2xlLmxvZyhcImV1ZGdjLnRzXCIpXHJcbiIsIi8qXHJcbiAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZSBjb250cmlidXRvclxyXG4gKiBsaWNlbnNlIGFncmVlbWVudHM7IGFuZCB0byBZb3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gXCJcclxuICovXHJcbi8qXHJcbiAqIFdyaXR0ZW4gYnkgU2NvcGV2aXNpbyBBRyAyMDIxXHJcbiAqL1xyXG5pbXBvcnQgXCIuL2V1ZGdjXCJcclxuaW1wb3J0IFwiLi9jb3NlMVwiXHJcblxyXG5jb25zb2xlLmxvZyhcIkVVREdDIGJ5IFNjb3BldmlzaW8gQUdcIikiLCJcbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBkZXByZWNhdGU7XG5cbi8qKlxuICogTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbiAqIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS5ub0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50aHJvd0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIHRocm93IGFuIEVycm9yIHdoZW4gaW52b2tlZC5cbiAqXG4gKiBJZiBgbG9jYWxTdG9yYWdlLnRyYWNlRGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gZGVwcmVjYXRlZCBmdW5jdGlvbnNcbiAqIHdpbGwgaW52b2tlIGBjb25zb2xlLnRyYWNlKClgIGluc3RlYWQgb2YgYGNvbnNvbGUuZXJyb3IoKWAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSB0aGUgZnVuY3Rpb24gdG8gZGVwcmVjYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gbXNnIC0gdGhlIHN0cmluZyB0byBwcmludCB0byB0aGUgY29uc29sZSB3aGVuIGBmbmAgaXMgaW52b2tlZFxuICogQHJldHVybnMge0Z1bmN0aW9ufSBhIG5ldyBcImRlcHJlY2F0ZWRcIiB2ZXJzaW9uIG9mIGBmbmBcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVwcmVjYXRlIChmbiwgbXNnKSB7XG4gIGlmIChjb25maWcoJ25vRGVwcmVjYXRpb24nKSkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgaWYgKGNvbmZpZygndGhyb3dEZXByZWNhdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChjb25maWcoJ3RyYWNlRGVwcmVjYXRpb24nKSkge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgIH1cbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGBsb2NhbFN0b3JhZ2VgIGZvciBib29sZWFuIHZhbHVlcyBmb3IgdGhlIGdpdmVuIGBuYW1lYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb25maWcgKG5hbWUpIHtcbiAgLy8gYWNjZXNzaW5nIGdsb2JhbC5sb2NhbFN0b3JhZ2UgY2FuIHRyaWdnZXIgYSBET01FeGNlcHRpb24gaW4gc2FuZGJveGVkIGlmcmFtZXNcbiAgdHJ5IHtcbiAgICBpZiAoIWdsb2JhbC5sb2NhbFN0b3JhZ2UpIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdmFsID0gZ2xvYmFsLmxvY2FsU3RvcmFnZVtuYW1lXTtcbiAgaWYgKG51bGwgPT0gdmFsKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBTdHJpbmcodmFsKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQnVmZmVyKGFyZykge1xuICByZXR1cm4gYXJnICYmIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnXG4gICAgJiYgdHlwZW9mIGFyZy5jb3B5ID09PSAnZnVuY3Rpb24nXG4gICAgJiYgdHlwZW9mIGFyZy5maWxsID09PSAnZnVuY3Rpb24nXG4gICAgJiYgdHlwZW9mIGFyZy5yZWFkVUludDggPT09ICdmdW5jdGlvbic7XG59IiwiLy8gQ3VycmVudGx5IGluIHN5bmMgd2l0aCBOb2RlLmpzIGxpYi9pbnRlcm5hbC91dGlsL3R5cGVzLmpzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvY29tbWl0LzExMmNjN2MyNzU1MTI1NGFhMmIxNzA5OGZiNzc0ODY3ZjA1ZWQwZDlcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBcmd1bWVudHNPYmplY3QgPSByZXF1aXJlKCdpcy1hcmd1bWVudHMnKTtcbnZhciBpc0dlbmVyYXRvckZ1bmN0aW9uID0gcmVxdWlyZSgnaXMtZ2VuZXJhdG9yLWZ1bmN0aW9uJyk7XG52YXIgd2hpY2hUeXBlZEFycmF5ID0gcmVxdWlyZSgnd2hpY2gtdHlwZWQtYXJyYXknKTtcbnZhciBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCdpcy10eXBlZC1hcnJheScpO1xuXG5mdW5jdGlvbiB1bmN1cnJ5VGhpcyhmKSB7XG4gIHJldHVybiBmLmNhbGwuYmluZChmKTtcbn1cblxudmFyIEJpZ0ludFN1cHBvcnRlZCA9IHR5cGVvZiBCaWdJbnQgIT09ICd1bmRlZmluZWQnO1xudmFyIFN5bWJvbFN1cHBvcnRlZCA9IHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnO1xuXG52YXIgT2JqZWN0VG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyhPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKTtcblxudmFyIG51bWJlclZhbHVlID0gdW5jdXJyeVRoaXMoTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mKTtcbnZhciBzdHJpbmdWYWx1ZSA9IHVuY3VycnlUaGlzKFN0cmluZy5wcm90b3R5cGUudmFsdWVPZik7XG52YXIgYm9vbGVhblZhbHVlID0gdW5jdXJyeVRoaXMoQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZik7XG5cbmlmIChCaWdJbnRTdXBwb3J0ZWQpIHtcbiAgdmFyIGJpZ0ludFZhbHVlID0gdW5jdXJyeVRoaXMoQmlnSW50LnByb3RvdHlwZS52YWx1ZU9mKTtcbn1cblxuaWYgKFN5bWJvbFN1cHBvcnRlZCkge1xuICB2YXIgc3ltYm9sVmFsdWUgPSB1bmN1cnJ5VGhpcyhTeW1ib2wucHJvdG90eXBlLnZhbHVlT2YpO1xufVxuXG5mdW5jdGlvbiBjaGVja0JveGVkUHJpbWl0aXZlKHZhbHVlLCBwcm90b3R5cGVWYWx1ZU9mKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgcHJvdG90eXBlVmFsdWVPZih2YWx1ZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2goZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnRzLmlzQXJndW1lbnRzT2JqZWN0ID0gaXNBcmd1bWVudHNPYmplY3Q7XG5leHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBpc0dlbmVyYXRvckZ1bmN0aW9uO1xuZXhwb3J0cy5pc1R5cGVkQXJyYXkgPSBpc1R5cGVkQXJyYXk7XG5cbi8vIFRha2VuIGZyb20gaGVyZSBhbmQgbW9kaWZpZWQgZm9yIGJldHRlciBicm93c2VyIHN1cHBvcnRcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvcC1pcy1wcm9taXNlL2Jsb2IvY2RhMzVhNTEzYmRhMDNmOTc3YWQ1Y2RlM2EwNzlkMjM3ZTgyZDdlZi9pbmRleC5qc1xuZnVuY3Rpb24gaXNQcm9taXNlKGlucHV0KSB7XG5cdHJldHVybiAoXG5cdFx0KFxuXHRcdFx0dHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnICYmXG5cdFx0XHRpbnB1dCBpbnN0YW5jZW9mIFByb21pc2Vcblx0XHQpIHx8XG5cdFx0KFxuXHRcdFx0aW5wdXQgIT09IG51bGwgJiZcblx0XHRcdHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcgJiZcblx0XHRcdHR5cGVvZiBpbnB1dC50aGVuID09PSAnZnVuY3Rpb24nICYmXG5cdFx0XHR0eXBlb2YgaW5wdXQuY2F0Y2ggPT09ICdmdW5jdGlvbidcblx0XHQpXG5cdCk7XG59XG5leHBvcnRzLmlzUHJvbWlzZSA9IGlzUHJvbWlzZTtcblxuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlclZpZXcodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgQXJyYXlCdWZmZXIuaXNWaWV3KSB7XG4gICAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIGlzVHlwZWRBcnJheSh2YWx1ZSkgfHxcbiAgICBpc0RhdGFWaWV3KHZhbHVlKVxuICApO1xufVxuZXhwb3J0cy5pc0FycmF5QnVmZmVyVmlldyA9IGlzQXJyYXlCdWZmZXJWaWV3O1xuXG5cbmZ1bmN0aW9uIGlzVWludDhBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ1VpbnQ4QXJyYXknO1xufVxuZXhwb3J0cy5pc1VpbnQ4QXJyYXkgPSBpc1VpbnQ4QXJyYXk7XG5cbmZ1bmN0aW9uIGlzVWludDhDbGFtcGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkgPT09ICdVaW50OENsYW1wZWRBcnJheSc7XG59XG5leHBvcnRzLmlzVWludDhDbGFtcGVkQXJyYXkgPSBpc1VpbnQ4Q2xhbXBlZEFycmF5O1xuXG5mdW5jdGlvbiBpc1VpbnQxNkFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnVWludDE2QXJyYXknO1xufVxuZXhwb3J0cy5pc1VpbnQxNkFycmF5ID0gaXNVaW50MTZBcnJheTtcblxuZnVuY3Rpb24gaXNVaW50MzJBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ1VpbnQzMkFycmF5Jztcbn1cbmV4cG9ydHMuaXNVaW50MzJBcnJheSA9IGlzVWludDMyQXJyYXk7XG5cbmZ1bmN0aW9uIGlzSW50OEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnSW50OEFycmF5Jztcbn1cbmV4cG9ydHMuaXNJbnQ4QXJyYXkgPSBpc0ludDhBcnJheTtcblxuZnVuY3Rpb24gaXNJbnQxNkFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnSW50MTZBcnJheSc7XG59XG5leHBvcnRzLmlzSW50MTZBcnJheSA9IGlzSW50MTZBcnJheTtcblxuZnVuY3Rpb24gaXNJbnQzMkFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnSW50MzJBcnJheSc7XG59XG5leHBvcnRzLmlzSW50MzJBcnJheSA9IGlzSW50MzJBcnJheTtcblxuZnVuY3Rpb24gaXNGbG9hdDMyQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkgPT09ICdGbG9hdDMyQXJyYXknO1xufVxuZXhwb3J0cy5pc0Zsb2F0MzJBcnJheSA9IGlzRmxvYXQzMkFycmF5O1xuXG5mdW5jdGlvbiBpc0Zsb2F0NjRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ0Zsb2F0NjRBcnJheSc7XG59XG5leHBvcnRzLmlzRmxvYXQ2NEFycmF5ID0gaXNGbG9hdDY0QXJyYXk7XG5cbmZ1bmN0aW9uIGlzQmlnSW50NjRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ0JpZ0ludDY0QXJyYXknO1xufVxuZXhwb3J0cy5pc0JpZ0ludDY0QXJyYXkgPSBpc0JpZ0ludDY0QXJyYXk7XG5cbmZ1bmN0aW9uIGlzQmlnVWludDY0QXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkgPT09ICdCaWdVaW50NjRBcnJheSc7XG59XG5leHBvcnRzLmlzQmlnVWludDY0QXJyYXkgPSBpc0JpZ1VpbnQ2NEFycmF5O1xuXG5mdW5jdGlvbiBpc01hcFRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IE1hcF0nO1xufVxuaXNNYXBUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgTWFwICE9PSAndW5kZWZpbmVkJyAmJlxuICBpc01hcFRvU3RyaW5nKG5ldyBNYXAoKSlcbik7XG5cbmZ1bmN0aW9uIGlzTWFwKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgTWFwID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBpc01hcFRvU3RyaW5nLndvcmtpbmdcbiAgICA/IGlzTWFwVG9TdHJpbmcodmFsdWUpXG4gICAgOiB2YWx1ZSBpbnN0YW5jZW9mIE1hcDtcbn1cbmV4cG9ydHMuaXNNYXAgPSBpc01hcDtcblxuZnVuY3Rpb24gaXNTZXRUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBTZXRdJztcbn1cbmlzU2V0VG9TdHJpbmcud29ya2luZyA9IChcbiAgdHlwZW9mIFNldCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgaXNTZXRUb1N0cmluZyhuZXcgU2V0KCkpXG4pO1xuZnVuY3Rpb24gaXNTZXQodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBTZXQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzU2V0VG9TdHJpbmcud29ya2luZ1xuICAgID8gaXNTZXRUb1N0cmluZyh2YWx1ZSlcbiAgICA6IHZhbHVlIGluc3RhbmNlb2YgU2V0O1xufVxuZXhwb3J0cy5pc1NldCA9IGlzU2V0O1xuXG5mdW5jdGlvbiBpc1dlYWtNYXBUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBXZWFrTWFwXSc7XG59XG5pc1dlYWtNYXBUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgV2Vha01hcCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgaXNXZWFrTWFwVG9TdHJpbmcobmV3IFdlYWtNYXAoKSlcbik7XG5mdW5jdGlvbiBpc1dlYWtNYXAodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBXZWFrTWFwID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBpc1dlYWtNYXBUb1N0cmluZy53b3JraW5nXG4gICAgPyBpc1dlYWtNYXBUb1N0cmluZyh2YWx1ZSlcbiAgICA6IHZhbHVlIGluc3RhbmNlb2YgV2Vha01hcDtcbn1cbmV4cG9ydHMuaXNXZWFrTWFwID0gaXNXZWFrTWFwO1xuXG5mdW5jdGlvbiBpc1dlYWtTZXRUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBXZWFrU2V0XSc7XG59XG5pc1dlYWtTZXRUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgV2Vha1NldCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgaXNXZWFrU2V0VG9TdHJpbmcobmV3IFdlYWtTZXQoKSlcbik7XG5mdW5jdGlvbiBpc1dlYWtTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzV2Vha1NldFRvU3RyaW5nKHZhbHVlKTtcbn1cbmV4cG9ydHMuaXNXZWFrU2V0ID0gaXNXZWFrU2V0O1xuXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyVG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdFRvU3RyaW5nKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcbn1cbmlzQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmXG4gIGlzQXJyYXlCdWZmZXJUb1N0cmluZyhuZXcgQXJyYXlCdWZmZXIoKSlcbik7XG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nXG4gICAgPyBpc0FycmF5QnVmZmVyVG9TdHJpbmcodmFsdWUpXG4gICAgOiB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyO1xufVxuZXhwb3J0cy5pc0FycmF5QnVmZmVyID0gaXNBcnJheUJ1ZmZlcjtcblxuZnVuY3Rpb24gaXNEYXRhVmlld1RvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IERhdGFWaWV3XSc7XG59XG5pc0RhdGFWaWV3VG9TdHJpbmcud29ya2luZyA9IChcbiAgdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJlxuICB0eXBlb2YgRGF0YVZpZXcgIT09ICd1bmRlZmluZWQnICYmXG4gIGlzRGF0YVZpZXdUb1N0cmluZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpLCAwLCAxKSlcbik7XG5mdW5jdGlvbiBpc0RhdGFWaWV3KHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgRGF0YVZpZXcgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzRGF0YVZpZXdUb1N0cmluZy53b3JraW5nXG4gICAgPyBpc0RhdGFWaWV3VG9TdHJpbmcodmFsdWUpXG4gICAgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGFWaWV3O1xufVxuZXhwb3J0cy5pc0RhdGFWaWV3ID0gaXNEYXRhVmlldztcblxuLy8gU3RvcmUgYSBjb3B5IG9mIFNoYXJlZEFycmF5QnVmZmVyIGluIGNhc2UgaXQncyBkZWxldGVkIGVsc2V3aGVyZVxudmFyIFNoYXJlZEFycmF5QnVmZmVyQ29weSA9IHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgPyBTaGFyZWRBcnJheUJ1ZmZlciA6IHVuZGVmaW5lZDtcbmZ1bmN0aW9uIGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBTaGFyZWRBcnJheUJ1ZmZlcl0nO1xufVxuZnVuY3Rpb24gaXNTaGFyZWRBcnJheUJ1ZmZlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyQ29weSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nID09PSAndW5kZWZpbmVkJykge1xuICAgIGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nID0gaXNTaGFyZWRBcnJheUJ1ZmZlclRvU3RyaW5nKG5ldyBTaGFyZWRBcnJheUJ1ZmZlckNvcHkoKSk7XG4gIH1cblxuICByZXR1cm4gaXNTaGFyZWRBcnJheUJ1ZmZlclRvU3RyaW5nLndvcmtpbmdcbiAgICA/IGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZyh2YWx1ZSlcbiAgICA6IHZhbHVlIGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXJDb3B5O1xufVxuZXhwb3J0cy5pc1NoYXJlZEFycmF5QnVmZmVyID0gaXNTaGFyZWRBcnJheUJ1ZmZlcjtcblxuZnVuY3Rpb24gaXNBc3luY0Z1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJztcbn1cbmV4cG9ydHMuaXNBc3luY0Z1bmN0aW9uID0gaXNBc3luY0Z1bmN0aW9uO1xuXG5mdW5jdGlvbiBpc01hcEl0ZXJhdG9yKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IE1hcCBJdGVyYXRvcl0nO1xufVxuZXhwb3J0cy5pc01hcEl0ZXJhdG9yID0gaXNNYXBJdGVyYXRvcjtcblxuZnVuY3Rpb24gaXNTZXRJdGVyYXRvcih2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBTZXQgSXRlcmF0b3JdJztcbn1cbmV4cG9ydHMuaXNTZXRJdGVyYXRvciA9IGlzU2V0SXRlcmF0b3I7XG5cbmZ1bmN0aW9uIGlzR2VuZXJhdG9yT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IEdlbmVyYXRvcl0nO1xufVxuZXhwb3J0cy5pc0dlbmVyYXRvck9iamVjdCA9IGlzR2VuZXJhdG9yT2JqZWN0O1xuXG5mdW5jdGlvbiBpc1dlYkFzc2VtYmx5Q29tcGlsZWRNb2R1bGUodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdFRvU3RyaW5nKHZhbHVlKSA9PT0gJ1tvYmplY3QgV2ViQXNzZW1ibHkuTW9kdWxlXSc7XG59XG5leHBvcnRzLmlzV2ViQXNzZW1ibHlDb21waWxlZE1vZHVsZSA9IGlzV2ViQXNzZW1ibHlDb21waWxlZE1vZHVsZTtcblxuZnVuY3Rpb24gaXNOdW1iZXJPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGNoZWNrQm94ZWRQcmltaXRpdmUodmFsdWUsIG51bWJlclZhbHVlKTtcbn1cbmV4cG9ydHMuaXNOdW1iZXJPYmplY3QgPSBpc051bWJlck9iamVjdDtcblxuZnVuY3Rpb24gaXNTdHJpbmdPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGNoZWNrQm94ZWRQcmltaXRpdmUodmFsdWUsIHN0cmluZ1ZhbHVlKTtcbn1cbmV4cG9ydHMuaXNTdHJpbmdPYmplY3QgPSBpc1N0cmluZ09iamVjdDtcblxuZnVuY3Rpb24gaXNCb29sZWFuT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBjaGVja0JveGVkUHJpbWl0aXZlKHZhbHVlLCBib29sZWFuVmFsdWUpO1xufVxuZXhwb3J0cy5pc0Jvb2xlYW5PYmplY3QgPSBpc0Jvb2xlYW5PYmplY3Q7XG5cbmZ1bmN0aW9uIGlzQmlnSW50T2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBCaWdJbnRTdXBwb3J0ZWQgJiYgY2hlY2tCb3hlZFByaW1pdGl2ZSh2YWx1ZSwgYmlnSW50VmFsdWUpO1xufVxuZXhwb3J0cy5pc0JpZ0ludE9iamVjdCA9IGlzQmlnSW50T2JqZWN0O1xuXG5mdW5jdGlvbiBpc1N5bWJvbE9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gU3ltYm9sU3VwcG9ydGVkICYmIGNoZWNrQm94ZWRQcmltaXRpdmUodmFsdWUsIHN5bWJvbFZhbHVlKTtcbn1cbmV4cG9ydHMuaXNTeW1ib2xPYmplY3QgPSBpc1N5bWJvbE9iamVjdDtcblxuZnVuY3Rpb24gaXNCb3hlZFByaW1pdGl2ZSh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIGlzTnVtYmVyT2JqZWN0KHZhbHVlKSB8fFxuICAgIGlzU3RyaW5nT2JqZWN0KHZhbHVlKSB8fFxuICAgIGlzQm9vbGVhbk9iamVjdCh2YWx1ZSkgfHxcbiAgICBpc0JpZ0ludE9iamVjdCh2YWx1ZSkgfHxcbiAgICBpc1N5bWJvbE9iamVjdCh2YWx1ZSlcbiAgKTtcbn1cbmV4cG9ydHMuaXNCb3hlZFByaW1pdGl2ZSA9IGlzQm94ZWRQcmltaXRpdmU7XG5cbmZ1bmN0aW9uIGlzQW55QXJyYXlCdWZmZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyAmJiAoXG4gICAgaXNBcnJheUJ1ZmZlcih2YWx1ZSkgfHxcbiAgICBpc1NoYXJlZEFycmF5QnVmZmVyKHZhbHVlKVxuICApO1xufVxuZXhwb3J0cy5pc0FueUFycmF5QnVmZmVyID0gaXNBbnlBcnJheUJ1ZmZlcjtcblxuWydpc1Byb3h5JywgJ2lzRXh0ZXJuYWwnLCAnaXNNb2R1bGVOYW1lc3BhY2VPYmplY3QnXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbWV0aG9kLCB7XG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgdmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1ldGhvZCArICcgaXMgbm90IHN1cHBvcnRlZCBpbiB1c2VybGFuZCcpO1xuICAgIH1cbiAgfSk7XG59KTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIHx8XG4gIGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKSB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgIHZhciBkZXNjcmlwdG9ycyA9IHt9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzY3JpcHRvcnNba2V5c1tpXV0gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5c1tpXSk7XG4gICAgfVxuICAgIHJldHVybiBkZXNjcmlwdG9ycztcbiAgfTtcblxudmFyIGZvcm1hdFJlZ0V4cCA9IC8lW3NkaiVdL2c7XG5leHBvcnRzLmZvcm1hdCA9IGZ1bmN0aW9uKGYpIHtcbiAgaWYgKCFpc1N0cmluZyhmKSkge1xuICAgIHZhciBvYmplY3RzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIG9iamVjdHMucHVzaChpbnNwZWN0KGFyZ3VtZW50c1tpXSkpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0cy5qb2luKCcgJyk7XG4gIH1cblxuICB2YXIgaSA9IDE7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBzdHIgPSBTdHJpbmcoZikucmVwbGFjZShmb3JtYXRSZWdFeHAsIGZ1bmN0aW9uKHgpIHtcbiAgICBpZiAoeCA9PT0gJyUlJykgcmV0dXJuICclJztcbiAgICBpZiAoaSA+PSBsZW4pIHJldHVybiB4O1xuICAgIHN3aXRjaCAoeCkge1xuICAgICAgY2FzZSAnJXMnOiByZXR1cm4gU3RyaW5nKGFyZ3NbaSsrXSk7XG4gICAgICBjYXNlICclZCc6IHJldHVybiBOdW1iZXIoYXJnc1tpKytdKTtcbiAgICAgIGNhc2UgJyVqJzpcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJnc1tpKytdKTtcbiAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgfSk7XG4gIGZvciAodmFyIHggPSBhcmdzW2ldOyBpIDwgbGVuOyB4ID0gYXJnc1srK2ldKSB7XG4gICAgaWYgKGlzTnVsbCh4KSB8fCAhaXNPYmplY3QoeCkpIHtcbiAgICAgIHN0ciArPSAnICcgKyB4O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgKz0gJyAnICsgaW5zcGVjdCh4KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn07XG5cblxuLy8gTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbi8vIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4vLyBJZiAtLW5vLWRlcHJlY2F0aW9uIGlzIHNldCwgdGhlbiBpdCBpcyBhIG5vLW9wLlxuZXhwb3J0cy5kZXByZWNhdGUgPSBmdW5jdGlvbihmbiwgbXNnKSB7XG4gIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5ub0RlcHJlY2F0aW9uID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgLy8gQWxsb3cgZm9yIGRlcHJlY2F0aW5nIHRoaW5ncyBpbiB0aGUgcHJvY2VzcyBvZiBzdGFydGluZyB1cC5cbiAgaWYgKHR5cGVvZiBwcm9jZXNzID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBleHBvcnRzLmRlcHJlY2F0ZShmbiwgbXNnKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cblxuICB2YXIgd2FybmVkID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGRlcHJlY2F0ZWQoKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIGlmIChwcm9jZXNzLnRocm93RGVwcmVjYXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICB9IGVsc2UgaWYgKHByb2Nlc3MudHJhY2VEZXByZWNhdGlvbikge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7XG4gICAgICB9XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIHJldHVybiBkZXByZWNhdGVkO1xufTtcblxuXG52YXIgZGVidWdzID0ge307XG52YXIgZGVidWdFbnZSZWdleCA9IC9eJC87XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0RFQlVHKSB7XG4gIHZhciBkZWJ1Z0VudiA9IHByb2Nlc3MuZW52Lk5PREVfREVCVUc7XG4gIGRlYnVnRW52ID0gZGVidWdFbnYucmVwbGFjZSgvW3xcXFxce30oKVtcXF1eJCs/Ll0vZywgJ1xcXFwkJicpXG4gICAgLnJlcGxhY2UoL1xcKi9nLCAnLionKVxuICAgIC5yZXBsYWNlKC8sL2csICckfF4nKVxuICAgIC50b1VwcGVyQ2FzZSgpO1xuICBkZWJ1Z0VudlJlZ2V4ID0gbmV3IFJlZ0V4cCgnXicgKyBkZWJ1Z0VudiArICckJywgJ2knKTtcbn1cbmV4cG9ydHMuZGVidWdsb2cgPSBmdW5jdGlvbihzZXQpIHtcbiAgc2V0ID0gc2V0LnRvVXBwZXJDYXNlKCk7XG4gIGlmICghZGVidWdzW3NldF0pIHtcbiAgICBpZiAoZGVidWdFbnZSZWdleC50ZXN0KHNldCkpIHtcbiAgICAgIHZhciBwaWQgPSBwcm9jZXNzLnBpZDtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBtc2cgPSBleHBvcnRzLmZvcm1hdC5hcHBseShleHBvcnRzLCBhcmd1bWVudHMpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCclcyAlZDogJXMnLCBzZXQsIHBpZCwgbXNnKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlYnVnc1tzZXRdO1xufTtcblxuXG4vKipcbiAqIEVjaG9zIHRoZSB2YWx1ZSBvZiBhIHZhbHVlLiBUcnlzIHRvIHByaW50IHRoZSB2YWx1ZSBvdXRcbiAqIGluIHRoZSBiZXN0IHdheSBwb3NzaWJsZSBnaXZlbiB0aGUgZGlmZmVyZW50IHR5cGVzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBwcmludCBvdXQuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25hbCBvcHRpb25zIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgb3V0cHV0LlxuICovXG4vKiBsZWdhY3k6IG9iaiwgc2hvd0hpZGRlbiwgZGVwdGgsIGNvbG9ycyovXG5mdW5jdGlvbiBpbnNwZWN0KG9iaiwgb3B0cykge1xuICAvLyBkZWZhdWx0IG9wdGlvbnNcbiAgdmFyIGN0eCA9IHtcbiAgICBzZWVuOiBbXSxcbiAgICBzdHlsaXplOiBzdHlsaXplTm9Db2xvclxuICB9O1xuICAvLyBsZWdhY3kuLi5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gMykgY3R4LmRlcHRoID0gYXJndW1lbnRzWzJdO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+PSA0KSBjdHguY29sb3JzID0gYXJndW1lbnRzWzNdO1xuICBpZiAoaXNCb29sZWFuKG9wdHMpKSB7XG4gICAgLy8gbGVnYWN5Li4uXG4gICAgY3R4LnNob3dIaWRkZW4gPSBvcHRzO1xuICB9IGVsc2UgaWYgKG9wdHMpIHtcbiAgICAvLyBnb3QgYW4gXCJvcHRpb25zXCIgb2JqZWN0XG4gICAgZXhwb3J0cy5fZXh0ZW5kKGN0eCwgb3B0cyk7XG4gIH1cbiAgLy8gc2V0IGRlZmF1bHQgb3B0aW9uc1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LnNob3dIaWRkZW4pKSBjdHguc2hvd0hpZGRlbiA9IGZhbHNlO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmRlcHRoKSkgY3R4LmRlcHRoID0gMjtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jb2xvcnMpKSBjdHguY29sb3JzID0gZmFsc2U7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguY3VzdG9tSW5zcGVjdCkpIGN0eC5jdXN0b21JbnNwZWN0ID0gdHJ1ZTtcbiAgaWYgKGN0eC5jb2xvcnMpIGN0eC5zdHlsaXplID0gc3R5bGl6ZVdpdGhDb2xvcjtcbiAgcmV0dXJuIGZvcm1hdFZhbHVlKGN0eCwgb2JqLCBjdHguZGVwdGgpO1xufVxuZXhwb3J0cy5pbnNwZWN0ID0gaW5zcGVjdDtcblxuXG4vLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FOU0lfZXNjYXBlX2NvZGUjZ3JhcGhpY3Ncbmluc3BlY3QuY29sb3JzID0ge1xuICAnYm9sZCcgOiBbMSwgMjJdLFxuICAnaXRhbGljJyA6IFszLCAyM10sXG4gICd1bmRlcmxpbmUnIDogWzQsIDI0XSxcbiAgJ2ludmVyc2UnIDogWzcsIDI3XSxcbiAgJ3doaXRlJyA6IFszNywgMzldLFxuICAnZ3JleScgOiBbOTAsIDM5XSxcbiAgJ2JsYWNrJyA6IFszMCwgMzldLFxuICAnYmx1ZScgOiBbMzQsIDM5XSxcbiAgJ2N5YW4nIDogWzM2LCAzOV0sXG4gICdncmVlbicgOiBbMzIsIDM5XSxcbiAgJ21hZ2VudGEnIDogWzM1LCAzOV0sXG4gICdyZWQnIDogWzMxLCAzOV0sXG4gICd5ZWxsb3cnIDogWzMzLCAzOV1cbn07XG5cbi8vIERvbid0IHVzZSAnYmx1ZScgbm90IHZpc2libGUgb24gY21kLmV4ZVxuaW5zcGVjdC5zdHlsZXMgPSB7XG4gICdzcGVjaWFsJzogJ2N5YW4nLFxuICAnbnVtYmVyJzogJ3llbGxvdycsXG4gICdib29sZWFuJzogJ3llbGxvdycsXG4gICd1bmRlZmluZWQnOiAnZ3JleScsXG4gICdudWxsJzogJ2JvbGQnLFxuICAnc3RyaW5nJzogJ2dyZWVuJyxcbiAgJ2RhdGUnOiAnbWFnZW50YScsXG4gIC8vIFwibmFtZVwiOiBpbnRlbnRpb25hbGx5IG5vdCBzdHlsaW5nXG4gICdyZWdleHAnOiAncmVkJ1xufTtcblxuXG5mdW5jdGlvbiBzdHlsaXplV2l0aENvbG9yKHN0ciwgc3R5bGVUeXBlKSB7XG4gIHZhciBzdHlsZSA9IGluc3BlY3Quc3R5bGVzW3N0eWxlVHlwZV07XG5cbiAgaWYgKHN0eWxlKSB7XG4gICAgcmV0dXJuICdcXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMF0gKyAnbScgKyBzdHIgK1xuICAgICAgICAgICAnXFx1MDAxYlsnICsgaW5zcGVjdC5jb2xvcnNbc3R5bGVdWzFdICsgJ20nO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdHI7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBzdHlsaXplTm9Db2xvcihzdHIsIHN0eWxlVHlwZSkge1xuICByZXR1cm4gc3RyO1xufVxuXG5cbmZ1bmN0aW9uIGFycmF5VG9IYXNoKGFycmF5KSB7XG4gIHZhciBoYXNoID0ge307XG5cbiAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbih2YWwsIGlkeCkge1xuICAgIGhhc2hbdmFsXSA9IHRydWU7XG4gIH0pO1xuXG4gIHJldHVybiBoYXNoO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdFZhbHVlKGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcykge1xuICAvLyBQcm92aWRlIGEgaG9vayBmb3IgdXNlci1zcGVjaWZpZWQgaW5zcGVjdCBmdW5jdGlvbnMuXG4gIC8vIENoZWNrIHRoYXQgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYW4gaW5zcGVjdCBmdW5jdGlvbiBvbiBpdFxuICBpZiAoY3R4LmN1c3RvbUluc3BlY3QgJiZcbiAgICAgIHZhbHVlICYmXG4gICAgICBpc0Z1bmN0aW9uKHZhbHVlLmluc3BlY3QpICYmXG4gICAgICAvLyBGaWx0ZXIgb3V0IHRoZSB1dGlsIG1vZHVsZSwgaXQncyBpbnNwZWN0IGZ1bmN0aW9uIGlzIHNwZWNpYWxcbiAgICAgIHZhbHVlLmluc3BlY3QgIT09IGV4cG9ydHMuaW5zcGVjdCAmJlxuICAgICAgLy8gQWxzbyBmaWx0ZXIgb3V0IGFueSBwcm90b3R5cGUgb2JqZWN0cyB1c2luZyB0aGUgY2lyY3VsYXIgY2hlY2suXG4gICAgICAhKHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gdmFsdWUpKSB7XG4gICAgdmFyIHJldCA9IHZhbHVlLmluc3BlY3QocmVjdXJzZVRpbWVzLCBjdHgpO1xuICAgIGlmICghaXNTdHJpbmcocmV0KSkge1xuICAgICAgcmV0ID0gZm9ybWF0VmFsdWUoY3R4LCByZXQsIHJlY3Vyc2VUaW1lcyk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvLyBQcmltaXRpdmUgdHlwZXMgY2Fubm90IGhhdmUgcHJvcGVydGllc1xuICB2YXIgcHJpbWl0aXZlID0gZm9ybWF0UHJpbWl0aXZlKGN0eCwgdmFsdWUpO1xuICBpZiAocHJpbWl0aXZlKSB7XG4gICAgcmV0dXJuIHByaW1pdGl2ZTtcbiAgfVxuXG4gIC8vIExvb2sgdXAgdGhlIGtleXMgb2YgdGhlIG9iamVjdC5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gIHZhciB2aXNpYmxlS2V5cyA9IGFycmF5VG9IYXNoKGtleXMpO1xuXG4gIGlmIChjdHguc2hvd0hpZGRlbikge1xuICAgIGtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh2YWx1ZSk7XG4gIH1cblxuICAvLyBJRSBkb2Vzbid0IG1ha2UgZXJyb3IgZmllbGRzIG5vbi1lbnVtZXJhYmxlXG4gIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9kd3c1MnNidCh2PXZzLjk0KS5hc3B4XG4gIGlmIChpc0Vycm9yKHZhbHVlKVxuICAgICAgJiYgKGtleXMuaW5kZXhPZignbWVzc2FnZScpID49IDAgfHwga2V5cy5pbmRleE9mKCdkZXNjcmlwdGlvbicpID49IDApKSB7XG4gICAgcmV0dXJuIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgfVxuXG4gIC8vIFNvbWUgdHlwZSBvZiBvYmplY3Qgd2l0aG91dCBwcm9wZXJ0aWVzIGNhbiBiZSBzaG9ydGN1dHRlZC5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICB2YXIgbmFtZSA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKCdbRnVuY3Rpb24nICsgbmFtZSArICddJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTtcbiAgICB9XG4gICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ2RhdGUnKTtcbiAgICB9XG4gICAgaWYgKGlzRXJyb3IodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNlID0gJycsIGFycmF5ID0gZmFsc2UsIGJyYWNlcyA9IFsneycsICd9J107XG5cbiAgLy8gTWFrZSBBcnJheSBzYXkgdGhhdCB0aGV5IGFyZSBBcnJheVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBhcnJheSA9IHRydWU7XG4gICAgYnJhY2VzID0gWydbJywgJ10nXTtcbiAgfVxuXG4gIC8vIE1ha2UgZnVuY3Rpb25zIHNheSB0aGF0IHRoZXkgYXJlIGZ1bmN0aW9uc1xuICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICB2YXIgbiA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgIGJhc2UgPSAnIFtGdW5jdGlvbicgKyBuICsgJ10nO1xuICB9XG5cbiAgLy8gTWFrZSBSZWdFeHBzIHNheSB0aGF0IHRoZXkgYXJlIFJlZ0V4cHNcbiAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBkYXRlcyB3aXRoIHByb3BlcnRpZXMgZmlyc3Qgc2F5IHRoZSBkYXRlXG4gIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIERhdGUucHJvdG90eXBlLnRvVVRDU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBlcnJvciB3aXRoIG1lc3NhZ2UgZmlyc3Qgc2F5IHRoZSBlcnJvclxuICBpZiAoaXNFcnJvcih2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgZm9ybWF0RXJyb3IodmFsdWUpO1xuICB9XG5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwICYmICghYXJyYXkgfHwgdmFsdWUubGVuZ3RoID09IDApKSB7XG4gICAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyBicmFjZXNbMV07XG4gIH1cblxuICBpZiAocmVjdXJzZVRpbWVzIDwgMCkge1xuICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAncmVnZXhwJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW09iamVjdF0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuXG4gIGN0eC5zZWVuLnB1c2godmFsdWUpO1xuXG4gIHZhciBvdXRwdXQ7XG4gIGlmIChhcnJheSkge1xuICAgIG91dHB1dCA9IGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpO1xuICB9IGVsc2Uge1xuICAgIG91dHB1dCA9IGtleXMubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpO1xuICAgIH0pO1xuICB9XG5cbiAgY3R4LnNlZW4ucG9wKCk7XG5cbiAgcmV0dXJuIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSkge1xuICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgndW5kZWZpbmVkJywgJ3VuZGVmaW5lZCcpO1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgdmFyIHNpbXBsZSA9ICdcXCcnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpLnJlcGxhY2UoL15cInxcIiQvZywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFwiL2csICdcIicpICsgJ1xcJyc7XG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKHNpbXBsZSwgJ3N0cmluZycpO1xuICB9XG4gIGlmIChpc051bWJlcih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdudW1iZXInKTtcbiAgaWYgKGlzQm9vbGVhbih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdib29sZWFuJyk7XG4gIC8vIEZvciBzb21lIHJlYXNvbiB0eXBlb2YgbnVsbCBpcyBcIm9iamVjdFwiLCBzbyBzcGVjaWFsIGNhc2UgaGVyZS5cbiAgaWYgKGlzTnVsbCh2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCdudWxsJywgJ251bGwnKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRFcnJvcih2YWx1ZSkge1xuICByZXR1cm4gJ1snICsgRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpICsgJ10nO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eSh2YWx1ZSwgU3RyaW5nKGkpKSkge1xuICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cyxcbiAgICAgICAgICBTdHJpbmcoaSksIHRydWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goJycpO1xuICAgIH1cbiAgfVxuICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKCFrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLFxuICAgICAgICAgIGtleSwgdHJ1ZSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvdXRwdXQ7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5LCBhcnJheSkge1xuICB2YXIgbmFtZSwgc3RyLCBkZXNjO1xuICBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih2YWx1ZSwga2V5KSB8fCB7IHZhbHVlOiB2YWx1ZVtrZXldIH07XG4gIGlmIChkZXNjLmdldCkge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tHZXR0ZXIvU2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tTZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFoYXNPd25Qcm9wZXJ0eSh2aXNpYmxlS2V5cywga2V5KSkge1xuICAgIG5hbWUgPSAnWycgKyBrZXkgKyAnXSc7XG4gIH1cbiAgaWYgKCFzdHIpIHtcbiAgICBpZiAoY3R4LnNlZW4uaW5kZXhPZihkZXNjLnZhbHVlKSA8IDApIHtcbiAgICAgIGlmIChpc051bGwocmVjdXJzZVRpbWVzKSkge1xuICAgICAgICBzdHIgPSBmb3JtYXRWYWx1ZShjdHgsIGRlc2MudmFsdWUsIG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBkZXNjLnZhbHVlLCByZWN1cnNlVGltZXMgLSAxKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdHIuaW5kZXhPZignXFxuJykgPiAtMSkge1xuICAgICAgICBpZiAoYXJyYXkpIHtcbiAgICAgICAgICBzdHIgPSBzdHIuc3BsaXQoJ1xcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gJyAgJyArIGxpbmU7XG4gICAgICAgICAgfSkuam9pbignXFxuJykuc3Vic3RyKDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0ciA9ICdcXG4nICsgc3RyLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuICcgICAnICsgbGluZTtcbiAgICAgICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0NpcmN1bGFyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG4gIGlmIChpc1VuZGVmaW5lZChuYW1lKSkge1xuICAgIGlmIChhcnJheSAmJiBrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBuYW1lID0gSlNPTi5zdHJpbmdpZnkoJycgKyBrZXkpO1xuICAgIGlmIChuYW1lLm1hdGNoKC9eXCIoW2EtekEtWl9dW2EtekEtWl8wLTldKilcIiQvKSkge1xuICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyKDEsIG5hbWUubGVuZ3RoIC0gMik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ25hbWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJylcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyheXCJ8XCIkKS9nLCBcIidcIik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ3N0cmluZycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYW1lICsgJzogJyArIHN0cjtcbn1cblxuXG5mdW5jdGlvbiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQsIGJhc2UsIGJyYWNlcykge1xuICB2YXIgbnVtTGluZXNFc3QgPSAwO1xuICB2YXIgbGVuZ3RoID0gb3V0cHV0LnJlZHVjZShmdW5jdGlvbihwcmV2LCBjdXIpIHtcbiAgICBudW1MaW5lc0VzdCsrO1xuICAgIGlmIChjdXIuaW5kZXhPZignXFxuJykgPj0gMCkgbnVtTGluZXNFc3QrKztcbiAgICByZXR1cm4gcHJldiArIGN1ci5yZXBsYWNlKC9cXHUwMDFiXFxbXFxkXFxkP20vZywgJycpLmxlbmd0aCArIDE7XG4gIH0sIDApO1xuXG4gIGlmIChsZW5ndGggPiA2MCkge1xuICAgIHJldHVybiBicmFjZXNbMF0gK1xuICAgICAgICAgICAoYmFzZSA9PT0gJycgPyAnJyA6IGJhc2UgKyAnXFxuICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgb3V0cHV0LmpvaW4oJyxcXG4gICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgYnJhY2VzWzFdO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyAnICcgKyBvdXRwdXQuam9pbignLCAnKSArICcgJyArIGJyYWNlc1sxXTtcbn1cblxuXG4vLyBOT1RFOiBUaGVzZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBgaW5zdGFuY2VvZmBcbi8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3aXRoIGBPYmplY3QuY3JlYXRlKClgLlxuZXhwb3J0cy50eXBlcyA9IHJlcXVpcmUoJy4vc3VwcG9ydC90eXBlcycpO1xuXG5mdW5jdGlvbiBpc0FycmF5KGFyKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGFyKTtcbn1cbmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJztcbn1cbmV4cG9ydHMuaXNCb29sZWFuID0gaXNCb29sZWFuO1xuXG5mdW5jdGlvbiBpc051bGwoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbCA9IGlzTnVsbDtcblxuZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydHMuaXNOdW1iZXIgPSBpc051bWJlcjtcblxuZnVuY3Rpb24gaXNTdHJpbmcoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3RyaW5nJztcbn1cbmV4cG9ydHMuaXNTdHJpbmcgPSBpc1N0cmluZztcblxuZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cbmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDtcblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbmV4cG9ydHMuaXNVbmRlZmluZWQgPSBpc1VuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNSZWdFeHAocmUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHJlKSAmJiBvYmplY3RUb1N0cmluZyhyZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuZXhwb3J0cy5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuZXhwb3J0cy50eXBlcy5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuXG5mdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNPYmplY3QgPSBpc09iamVjdDtcblxuZnVuY3Rpb24gaXNEYXRlKGQpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGQpICYmIG9iamVjdFRvU3RyaW5nKGQpID09PSAnW29iamVjdCBEYXRlXSc7XG59XG5leHBvcnRzLmlzRGF0ZSA9IGlzRGF0ZTtcbmV4cG9ydHMudHlwZXMuaXNEYXRlID0gaXNEYXRlO1xuXG5mdW5jdGlvbiBpc0Vycm9yKGUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGUpICYmXG4gICAgICAob2JqZWN0VG9TdHJpbmcoZSkgPT09ICdbb2JqZWN0IEVycm9yXScgfHwgZSBpbnN0YW5jZW9mIEVycm9yKTtcbn1cbmV4cG9ydHMuaXNFcnJvciA9IGlzRXJyb3I7XG5leHBvcnRzLnR5cGVzLmlzTmF0aXZlRXJyb3IgPSBpc0Vycm9yO1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuZXhwb3J0cy5pc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlO1xuXG5leHBvcnRzLmlzQnVmZmVyID0gcmVxdWlyZSgnLi9zdXBwb3J0L2lzQnVmZmVyJyk7XG5cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTtcbn1cblxuXG5mdW5jdGlvbiBwYWQobikge1xuICByZXR1cm4gbiA8IDEwID8gJzAnICsgbi50b1N0cmluZygxMCkgOiBuLnRvU3RyaW5nKDEwKTtcbn1cblxuXG52YXIgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsXG4gICAgICAgICAgICAgICdPY3QnLCAnTm92JywgJ0RlYyddO1xuXG4vLyAyNiBGZWIgMTY6MTk6MzRcbmZ1bmN0aW9uIHRpbWVzdGFtcCgpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSgpO1xuICB2YXIgdGltZSA9IFtwYWQoZC5nZXRIb3VycygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0TWludXRlcygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0U2Vjb25kcygpKV0uam9pbignOicpO1xuICByZXR1cm4gW2QuZ2V0RGF0ZSgpLCBtb250aHNbZC5nZXRNb250aCgpXSwgdGltZV0uam9pbignICcpO1xufVxuXG5cbi8vIGxvZyBpcyBqdXN0IGEgdGhpbiB3cmFwcGVyIHRvIGNvbnNvbGUubG9nIHRoYXQgcHJlcGVuZHMgYSB0aW1lc3RhbXBcbmV4cG9ydHMubG9nID0gZnVuY3Rpb24oKSB7XG4gIGNvbnNvbGUubG9nKCclcyAtICVzJywgdGltZXN0YW1wKCksIGV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsIGFyZ3VtZW50cykpO1xufTtcblxuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlci5cbiAqXG4gKiBUaGUgRnVuY3Rpb24ucHJvdG90eXBlLmluaGVyaXRzIGZyb20gbGFuZy5qcyByZXdyaXR0ZW4gYXMgYSBzdGFuZGFsb25lXG4gKiBmdW5jdGlvbiAobm90IG9uIEZ1bmN0aW9uLnByb3RvdHlwZSkuIE5PVEU6IElmIHRoaXMgZmlsZSBpcyB0byBiZSBsb2FkZWRcbiAqIGR1cmluZyBib290c3RyYXBwaW5nIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcmV3cml0dGVuIHVzaW5nIHNvbWUgbmF0aXZlXG4gKiBmdW5jdGlvbnMgYXMgcHJvdG90eXBlIHNldHVwIHVzaW5nIG5vcm1hbCBKYXZhU2NyaXB0IGRvZXMgbm90IHdvcmsgYXNcbiAqIGV4cGVjdGVkIGR1cmluZyBib290c3RyYXBwaW5nIChzZWUgbWlycm9yLmpzIGluIHIxMTQ5MDMpLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gd2hpY2ggbmVlZHMgdG8gaW5oZXJpdCB0aGVcbiAqICAgICBwcm90b3R5cGUuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gdG8gaW5oZXJpdCBwcm90b3R5cGUgZnJvbS5cbiAqL1xuZXhwb3J0cy5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmV4cG9ydHMuX2V4dGVuZCA9IGZ1bmN0aW9uKG9yaWdpbiwgYWRkKSB7XG4gIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIGFkZCBpc24ndCBhbiBvYmplY3RcbiAgaWYgKCFhZGQgfHwgIWlzT2JqZWN0KGFkZCkpIHJldHVybiBvcmlnaW47XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhZGQpO1xuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgb3JpZ2luW2tleXNbaV1dID0gYWRkW2tleXNbaV1dO1xuICB9XG4gIHJldHVybiBvcmlnaW47XG59O1xuXG5mdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxuXG52YXIga0N1c3RvbVByb21pc2lmaWVkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgPyBTeW1ib2woJ3V0aWwucHJvbWlzaWZ5LmN1c3RvbScpIDogdW5kZWZpbmVkO1xuXG5leHBvcnRzLnByb21pc2lmeSA9IGZ1bmN0aW9uIHByb21pc2lmeShvcmlnaW5hbCkge1xuICBpZiAodHlwZW9mIG9yaWdpbmFsICE9PSAnZnVuY3Rpb24nKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcIm9yaWdpbmFsXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uJyk7XG5cbiAgaWYgKGtDdXN0b21Qcm9taXNpZmllZFN5bWJvbCAmJiBvcmlnaW5hbFtrQ3VzdG9tUHJvbWlzaWZpZWRTeW1ib2xdKSB7XG4gICAgdmFyIGZuID0gb3JpZ2luYWxba0N1c3RvbVByb21pc2lmaWVkU3ltYm9sXTtcbiAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJ1dGlsLnByb21pc2lmeS5jdXN0b21cIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCBrQ3VzdG9tUHJvbWlzaWZpZWRTeW1ib2wsIHtcbiAgICAgIHZhbHVlOiBmbiwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgZnVuY3Rpb24gZm4oKSB7XG4gICAgdmFyIHByb21pc2VSZXNvbHZlLCBwcm9taXNlUmVqZWN0O1xuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgcHJvbWlzZVJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgcHJvbWlzZVJlamVjdCA9IHJlamVjdDtcbiAgICB9KTtcblxuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cbiAgICBhcmdzLnB1c2goZnVuY3Rpb24gKGVyciwgdmFsdWUpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcHJvbWlzZVJlamVjdChlcnIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvbWlzZVJlc29sdmUodmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcHJvbWlzZVJlamVjdChlcnIpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGZuLCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob3JpZ2luYWwpKTtcblxuICBpZiAoa0N1c3RvbVByb21pc2lmaWVkU3ltYm9sKSBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sIGtDdXN0b21Qcm9taXNpZmllZFN5bWJvbCwge1xuICAgIHZhbHVlOiBmbiwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoXG4gICAgZm4sXG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvcmlnaW5hbClcbiAgKTtcbn1cblxuZXhwb3J0cy5wcm9taXNpZnkuY3VzdG9tID0ga0N1c3RvbVByb21pc2lmaWVkU3ltYm9sXG5cbmZ1bmN0aW9uIGNhbGxiYWNraWZ5T25SZWplY3RlZChyZWFzb24sIGNiKSB7XG4gIC8vIGAhcmVhc29uYCBndWFyZCBpbnNwaXJlZCBieSBibHVlYmlyZCAoUmVmOiBodHRwczovL2dvby5nbC90NUlTNk0pLlxuICAvLyBCZWNhdXNlIGBudWxsYCBpcyBhIHNwZWNpYWwgZXJyb3IgdmFsdWUgaW4gY2FsbGJhY2tzIHdoaWNoIG1lYW5zIFwibm8gZXJyb3JcbiAgLy8gb2NjdXJyZWRcIiwgd2UgZXJyb3Itd3JhcCBzbyB0aGUgY2FsbGJhY2sgY29uc3VtZXIgY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW5cbiAgLy8gXCJ0aGUgcHJvbWlzZSByZWplY3RlZCB3aXRoIG51bGxcIiBvciBcInRoZSBwcm9taXNlIGZ1bGZpbGxlZCB3aXRoIHVuZGVmaW5lZFwiLlxuICBpZiAoIXJlYXNvbikge1xuICAgIHZhciBuZXdSZWFzb24gPSBuZXcgRXJyb3IoJ1Byb21pc2Ugd2FzIHJlamVjdGVkIHdpdGggYSBmYWxzeSB2YWx1ZScpO1xuICAgIG5ld1JlYXNvbi5yZWFzb24gPSByZWFzb247XG4gICAgcmVhc29uID0gbmV3UmVhc29uO1xuICB9XG4gIHJldHVybiBjYihyZWFzb24pO1xufVxuXG5mdW5jdGlvbiBjYWxsYmFja2lmeShvcmlnaW5hbCkge1xuICBpZiAodHlwZW9mIG9yaWdpbmFsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3JpZ2luYWxcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtcbiAgfVxuXG4gIC8vIFdlIERPIE5PVCByZXR1cm4gdGhlIHByb21pc2UgYXMgaXQgZ2l2ZXMgdGhlIHVzZXIgYSBmYWxzZSBzZW5zZSB0aGF0XG4gIC8vIHRoZSBwcm9taXNlIGlzIGFjdHVhbGx5IHNvbWVob3cgcmVsYXRlZCB0byB0aGUgY2FsbGJhY2sncyBleGVjdXRpb25cbiAgLy8gYW5kIHRoYXQgdGhlIGNhbGxiYWNrIHRocm93aW5nIHdpbGwgcmVqZWN0IHRoZSBwcm9taXNlLlxuICBmdW5jdGlvbiBjYWxsYmFja2lmaWVkKCkge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cblxuICAgIHZhciBtYXliZUNiID0gYXJncy5wb3AoKTtcbiAgICBpZiAodHlwZW9mIG1heWJlQ2IgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBsYXN0IGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbicpO1xuICAgIH1cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNiID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gbWF5YmVDYi5hcHBseShzZWxmLCBhcmd1bWVudHMpO1xuICAgIH07XG4gICAgLy8gSW4gdHJ1ZSBub2RlIHN0eWxlIHdlIHByb2Nlc3MgdGhlIGNhbGxiYWNrIG9uIGBuZXh0VGlja2Agd2l0aCBhbGwgdGhlXG4gICAgLy8gaW1wbGljYXRpb25zIChzdGFjaywgYHVuY2F1Z2h0RXhjZXB0aW9uYCwgYGFzeW5jX2hvb2tzYClcbiAgICBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKVxuICAgICAgLnRoZW4oZnVuY3Rpb24ocmV0KSB7IHByb2Nlc3MubmV4dFRpY2soY2IuYmluZChudWxsLCBudWxsLCByZXQpKSB9LFxuICAgICAgICAgICAgZnVuY3Rpb24ocmVqKSB7IHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2tpZnlPblJlamVjdGVkLmJpbmQobnVsbCwgcmVqLCBjYikpIH0pO1xuICB9XG5cbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGNhbGxiYWNraWZpZWQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihvcmlnaW5hbCkpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjYWxsYmFja2lmaWVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9yaWdpbmFsKSk7XG4gIHJldHVybiBjYWxsYmFja2lmaWVkO1xufVxuZXhwb3J0cy5jYWxsYmFja2lmeSA9IGNhbGxiYWNraWZ5O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZm9yRWFjaCA9IHJlcXVpcmUoJ2ZvcmVhY2gnKTtcbnZhciBhdmFpbGFibGVUeXBlZEFycmF5cyA9IHJlcXVpcmUoJ2F2YWlsYWJsZS10eXBlZC1hcnJheXMnKTtcbnZhciBjYWxsQm91bmQgPSByZXF1aXJlKCdjYWxsLWJpbmQvY2FsbEJvdW5kJyk7XG5cbnZhciAkdG9TdHJpbmcgPSBjYWxsQm91bmQoJ09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcnKTtcbnZhciBoYXNTeW1ib2xzID0gcmVxdWlyZSgnaGFzLXN5bWJvbHMnKSgpO1xudmFyIGhhc1RvU3RyaW5nVGFnID0gaGFzU3ltYm9scyAmJiB0eXBlb2YgU3ltYm9sLnRvU3RyaW5nVGFnID09PSAnc3ltYm9sJztcblxudmFyIHR5cGVkQXJyYXlzID0gYXZhaWxhYmxlVHlwZWRBcnJheXMoKTtcblxudmFyICRzbGljZSA9IGNhbGxCb3VuZCgnU3RyaW5nLnByb3RvdHlwZS5zbGljZScpO1xudmFyIHRvU3RyVGFncyA9IHt9O1xudmFyIGdPUEQgPSByZXF1aXJlKCdlcy1hYnN0cmFjdC9oZWxwZXJzL2dldE93blByb3BlcnR5RGVzY3JpcHRvcicpO1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mOyAvLyByZXF1aXJlKCdnZXRwcm90b3R5cGVvZicpO1xuaWYgKGhhc1RvU3RyaW5nVGFnICYmIGdPUEQgJiYgZ2V0UHJvdG90eXBlT2YpIHtcblx0Zm9yRWFjaCh0eXBlZEFycmF5cywgZnVuY3Rpb24gKHR5cGVkQXJyYXkpIHtcblx0XHRpZiAodHlwZW9mIGdsb2JhbFt0eXBlZEFycmF5XSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dmFyIGFyciA9IG5ldyBnbG9iYWxbdHlwZWRBcnJheV0oKTtcblx0XHRcdGlmICghKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBhcnIpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFdmFsRXJyb3IoJ3RoaXMgZW5naW5lIGhhcyBzdXBwb3J0IGZvciBTeW1ib2wudG9TdHJpbmdUYWcsIGJ1dCAnICsgdHlwZWRBcnJheSArICcgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVydHkhIFBsZWFzZSByZXBvcnQgdGhpcy4nKTtcblx0XHRcdH1cblx0XHRcdHZhciBwcm90byA9IGdldFByb3RvdHlwZU9mKGFycik7XG5cdFx0XHR2YXIgZGVzY3JpcHRvciA9IGdPUEQocHJvdG8sIFN5bWJvbC50b1N0cmluZ1RhZyk7XG5cdFx0XHRpZiAoIWRlc2NyaXB0b3IpIHtcblx0XHRcdFx0dmFyIHN1cGVyUHJvdG8gPSBnZXRQcm90b3R5cGVPZihwcm90byk7XG5cdFx0XHRcdGRlc2NyaXB0b3IgPSBnT1BEKHN1cGVyUHJvdG8sIFN5bWJvbC50b1N0cmluZ1RhZyk7XG5cdFx0XHR9XG5cdFx0XHR0b1N0clRhZ3NbdHlwZWRBcnJheV0gPSBkZXNjcmlwdG9yLmdldDtcblx0XHR9XG5cdH0pO1xufVxuXG52YXIgdHJ5VHlwZWRBcnJheXMgPSBmdW5jdGlvbiB0cnlBbGxUeXBlZEFycmF5cyh2YWx1ZSkge1xuXHR2YXIgZm91bmROYW1lID0gZmFsc2U7XG5cdGZvckVhY2godG9TdHJUYWdzLCBmdW5jdGlvbiAoZ2V0dGVyLCB0eXBlZEFycmF5KSB7XG5cdFx0aWYgKCFmb3VuZE5hbWUpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHZhciBuYW1lID0gZ2V0dGVyLmNhbGwodmFsdWUpO1xuXHRcdFx0XHRpZiAobmFtZSA9PT0gdHlwZWRBcnJheSkge1xuXHRcdFx0XHRcdGZvdW5kTmFtZSA9IG5hbWU7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGUpIHt9XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGZvdW5kTmFtZTtcbn07XG5cbnZhciBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCdpcy10eXBlZC1hcnJheScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkge1xuXHRpZiAoIWlzVHlwZWRBcnJheSh2YWx1ZSkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICghaGFzVG9TdHJpbmdUYWcpIHsgcmV0dXJuICRzbGljZSgkdG9TdHJpbmcodmFsdWUpLCA4LCAtMSk7IH1cblx0cmV0dXJuIHRyeVR5cGVkQXJyYXlzKHZhbHVlKTtcbn07XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIl9fd2VicGFja19yZXF1aXJlX18ubm1kID0gKG1vZHVsZSkgPT4ge1xuXHRtb2R1bGUucGF0aHMgPSBbXTtcblx0aWYgKCFtb2R1bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xuXHRyZXR1cm4gbW9kdWxlO1xufTsiLCIvLyBzdGFydHVwXG4vLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8vIFRoaXMgZW50cnkgbW9kdWxlIGRvZXNuJ3QgdGVsbCBhYm91dCBpdCdzIHRvcC1sZXZlbCBkZWNsYXJhdGlvbnMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg2NzcpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/package.json b/package.json index 8d750ec..b749660 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,6 @@ "version": "1.0.6", "description": "EuDGC (European Digital Green Certificate) handling in Javascript and Typescript", "main": "dist/eudgc.js", - "type": "module", "scripts": { "fetch": "node tool/FetchCerts.js", "watch": "npx webpack serve --mode=development", diff --git a/src/certs.json b/src/certs.json index 0f8309f..85b042d 100644 --- a/src/certs.json +++ b/src/certs.json @@ -1,2074 +1 @@ -{ - "certs": [ - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_007", - "notbefore": 1646866800000, - "notafter": 1710025200000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXJGIIZHZOHRSV3CdXUpGpZ9660BB\n+15fkJgO8Rk8H+TlqeSYvBIfeRK+hVpc9GzUcFiKiPU0jbXZ0rorqNyxfg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEIDCCAgigAwIBAgIUetGukHDBgpqpT82eXBBZwkWqlCEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMwOTIzMDAwMFoXDTI0MDMwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXJGIIZHZOHRSV3CdXUpGpZ9660BB+15fkJgO8Rk8H+TlqeSYvBIfeRK+hVpc9GzUcFiKiPU0jbXZ0rorqNyxfqOB4DCB3TAdBgNVHQ4EFgQU9yU3/1u14+b8LpUG5bc2f7rCXJswHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQAPO0+DbQ5zIkFbECIN+SGoH7m/1j6HgDFAze4go1Idf5U3n8ua3wFwf9Tj2knGigSHSkBgFK7UKIlkFz4aotljp4/ZU4iKGuTn0oo6XT7eEi/KQlNHZHkxtSO9TQCRHw0KigXG5pA8cqSWcC9coYr57+4t82F67WNHoi2x6seN+sgIZxZiLuBNMjoibwnT5leJKLAwClYOtCpoFSzAZf7cTeZVmCymHaoeHx56ftOdXBUoMjBTMFRQEP598lauU2W1FZOwucbOSIsk3lpAhhG+akzEJJdBqo7nS7XrFRlxinvV7shia90RkGBdyNIo4zU8glgiDSIvZQQbvOuFcMZPxxANdaD5UMLEXb0cW1ypGW+r9s/bUwRghQT4vDNHoy7WqBSPgybuJT+WbbGnzeKtQeSnJU0sBCG7KT4mZbsWNGY4m02JC4MZz/DD5aRx9izz5bw1Tm1U61yE+VivWRYzacWWgTOrdUcZx7zArV7x38Biihw/dyUaps8HxvoP6MWBJOvAv5aKIbyvBOxcjh+3oZjMvKk6L+EUlSli76c0S7gCEjN3SMLgPbgR272xYoomNZYapYKwKq9fu+vL5PgoWWEhfQDO7BYGfJryV+N1I4sBoOqh1a5wsp6FEij+vi1grNiNpTKXqpaN5UKOLK3pb+LFOPETXm9kqepI+PyVdA==", - "kid": "+cDVEVtFWME=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_026", - "notbefore": 1639522800000, - "notafter": 1702594800000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuGGqMuc3NK3Y9fI82qbrWAiNKKKK\nYm6nLpibiL+DBRILW2+5cFXZ19HLfbKwtAxyVOsv2N6x2VS8zklYStHGEg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGzCCAgOgAwIBAgIUftzSPzs3lKyxin4HzGAPSInAlHwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLhhqjLnNzSt2PXyPNqm61gIjSiiimJupy6Ym4i/gwUSC1tvuXBV2dfRy32ysLQMclTrL9jesdlUvM5JWErRxhKjgeAwgd0wHQYDVR0OBBYEFJRMukUQrFVGUPhjzucJOPTIs0uEMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAsalnKHPbwm0FnkhrFHCfZt79nvNRML5k/gPI0Ab70inRKqqTETv/T+l0xtSBNbU5cOu2SdymWqaYZDiDdfKhmw1MBJsieP/+Q7yIAHt/RYlhOwMoPcxsTHtrSpW9kRYH77OYX6Ou9davXN7Pd4sv0Itl33FYxoXhHv1lPA2IEf19zCxgqeStforkAqm3jD6tlEc+gfCUnKsqJetIdAeKVYt5qcz/hmCFnl+GgSVswG9SqogySJD1F9Uesvi0k1laWphmU5IkxHymJqy7W57FgayiIrG1cUtuVcPaCxZ9eNWYoM03p6NdVcSr7qkGuglzkgtzxk5ncruJ2+NRUeUEBlwTtzI5QIcW1w0lnOXbLrvx40VyhJhY3ixZcd3+TiHhMxohPTA5ECg35u3q5/xBA0XF9nyiJ66Zr0WUy722QlGzOQyChGLeE/yHsBahNEq1Kc3L4IrqZu/TB54qM6xYKMllli7CCyzYH6NzMYJeHrrjNyeakX0riniPpKvuW08mwReqsuZ8uS05JoR93z5eSxJewvdUlirrBQPZEjA6f/+3fkMT21JJp4nuGDJQSwYXWTlxOI8jwzi0k887yNFIeTgu6PVRqzOGQF7JR/n0VbwKASOAvOnvG8nNWhAhdYyzDfQ71KAcDkx+rRu0mgmdtgbEUA//B++J5sZjHUlb8Ig=", - "kid": "0oCvyNKB210=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_027", - "notbefore": 1642201200000, - "notafter": 1705273200000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF+/sS02b7zIFGgBu4UwddBeosNhu\n+zvARa+ySKeK2Rd2AJxx1lnnUgfkD0MHlO72kUEwhYdqfRZ7gSgFEgdEkQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGzCCAgOgAwIBAgIUeVVanArVip2h9V4zfLC4CgjqA/MwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDExNDIzMDAwMFoXDTI0MDExNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBfv7EtNm+8yBRoAbuFMHXQXqLDYbvs7wEWvskinitkXdgCccdZZ51IH5A9DB5Tu9pFBMIWHan0We4EoBRIHRJGjgeAwgd0wHQYDVR0OBBYEFPSGVTQu85GTEXtAynAWYMIEdyb0MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAFl1G9mpI4FDpwyx7oXu1bY3IXUrUslXJo0Bmv3ayqQ1jCVXOqz0ZemN5lOIVwUMDynZLngsHmKz+fTR8K3CI6PaSxeDy0Rw/CsyWQgt1CWUR6q296z1DaPMsDGfO7dKDqKTGgoge3K4IPCjtQixVYgylfo6kxBHutIWAIgFV+cXxx+fn3K828SMoS7DkvKtAkvEQAXGGk6pbP3EdAtUJbDSbOufxS0W45a34C6tKiDAOJiXlCZjhtNHyTxSXDDmiyoabxxICNLmKJ5IMEe45pOwwZC5uPr9q0Qc72+jVsF9VeutV/ybocLY8Mi9GRJFKP5HQ/yQY5aYTstbV2V9pSDP8bVgdkzYSbmEVTgJ6W6Io1B9OFrbkeeOQzwugumUDjV4aA7NM4kX1Hh0WRtGnrVqo0Lfy0Rbj10goEb6BidecOUMq9iBuD7OsGIBqCO/p77xBC4TPt2rdaO2hDddFt0KLzesFgNrHJzMRH67MUHTDUaPVq0s3vu18XurOerivE5d7EJWboGelIWLNGkhOV0rza+4slR56wqve4I/A+Qhf7FwPZofZuPk8JvE3gxXQyktH1wzWGYBUUFYIbScJbHMb0hTecaPye0gGcKtQ1Y2VR7JA5NldYZ3cRMcdH4WNqYfu7qKl0NeQ1hqp1+pL7iWsOLG24zr0Yi8/Mm/xE5k=", - "kid": "14QQ1b6JFLk=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_20", - "notbefore": 1632261600000, - "notafter": 1695333600000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmRk7MSZQCX2u4UIQgVzma1JEo3yA\nSVafls/5nw/V9T6e5EbsK64MM0KhsPH9aK/aElRt1+Rxtd1AsHVvsQJjKw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGTCCAgGgAwIBAgIUFpv5DkvJU5K1vn/H2/M9MQneJrYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkyMTIyMDAwMFoXDTIzMDkyMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjAwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASZGTsxJlAJfa7hQhCBXOZrUkSjfIBJVp+Wz/mfD9X1Pp7kRuwrrgwzQqGw8f1or9oSVG3X5HG13UCwdW+xAmMro4HgMIHdMB0GA1UdDgQWBBTb/Lh313Pu4DiRm9Z5SS83yZeXmDAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAAY2cWLc8Ce7zLl6vxt0kWgpTibXFhgx/Que5ExTAJOpsl6K64MpJCofzPfO7MzxYRtIL+Lj1l1avGKNr8BNpA/+A8KeJQsocJc6RfOMVPt+2Cmpr8DTDeIjNzsmZtXMaRtgDjGV1qMTtCaThdGgzC5KfgL0OylkXDnFyMDRVDCxVxJUC4aMolQmnCVyyqD2bHBm9Oj4+x1UFrx1E3q/1FbQsy/Rji14kS+84c35qAuTkp05kqzxoZZswLQY/bYXJtU6u1SDwo/Geirre9nhm8Ck4Zr+8ARIh31oVyK615s+13A6p2Iux7T00aODsfRHZKh60o7+FcjeQJ3LbNdwBEHN0qc8aPsT5h61ZuAOnpmit80wVR+btu1d8e7Hq2u8AChmIGDcxjwHs7ygfbRDEmSM56ZhQ/a9PGDvri+jnuN3GW2TUajlXogrdMmvVsQN3nssR1E3nxBltyOS6EP88uMdr/ajAOjOT02ISmkaUWfTmrwEJGHeezOPiJGVvqp2Z0UOiwCivGB/PU03cAcu/ms0EXIKZ2qFosrZeJgTfZy2LMFKgQbj5b4iLDWormO2RCGvM3QMfmYd1XwTISCvSlDyEgT2hBRgYnLJ9ipPD8ngRmQXoX+nYbIDi23R/5vlU3qNw1cFAyGamNAsUNgPeRGaqIzB8eEON03DROAKulU4", - "kid": "26Fcjnjuf2s=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_006", - "notbefore": 1639090800000, - "notafter": 1702162800000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ua6q+h0NvU1yqdisTbi7nRqu9xp\nX4qBSU1boIc6PWIbY4EKPTSQlxT7hhJwYBR37PZZX8JdOBh1ZqUjG9j87w==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEIDCCAgigAwIBAgIUMhJIBrZi2FAUhLPwN7JzstvhMsUwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIwOTIzMDAwMFoXDTIzMTIwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ua6q+h0NvU1yqdisTbi7nRqu9xpX4qBSU1boIc6PWIbY4EKPTSQlxT7hhJwYBR37PZZX8JdOBh1ZqUjG9j876OB4DCB3TAdBgNVHQ4EFgQU+eeSlsYWARhP/uY/e3iyCsunMAcwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCac75HtV6gRBG2AQXz0YcprJTZAZW+VZOHh+JBmIXkBEUzjmRtsTe0/SqOhs7M4ln5WpqsT6ET/TZYoGTUy6oocjqy38MtZMV4W9sGSSdR/ltfVLkgyofPrdNg/XzNGEF+jZ9xWNCQqBHaxBzXaPhUa/p9B1Amof3ksyl2ChdcOu73QyOQ9qcFxBr0U1DJ2K6ZDIbiMdu/f7xWN355HJNfGFaKioe5wkrRJOxiu0sfn1yH3hCS4ge5iJtLvux4GVF5m02bRYtIe32+FrjQAg3pH2ayyDJ2V38P6cIi9lIdoGdoQuA+As8m+Nsl4pfXmeKqaSF0grlPVlhTh9BW6+N6ktybw1srgfR+TLKvTrQ5nvbEWtDmVddhNGauwSB1YHA2YK+nzlDS9o8091vKuFFSCCUeNWyZPHzw569izxAy+Pu3MrXiuiPISfneQIikl3EoVowS1vyWpnYWkFfrUpgT231Y4IIu5w7tHeD/ieEU0tq8UQUamMshiPFpXJqZMzeaxBqaAoTDRYmOGPoyGiKN99Bz83BFchpgaZgtMQFH+X0XvEsLr9KYDD+svyfuZZLqmIPCxq3ejF2O1YGoe9HfGh+LWqlw6n4usqBhix8QUznUSkkQwM4NrCDbQUOSyOtMXGwbLFiGmrlg41RMiJ+txZkCtSmsc2iHq6YHnKNU0w==", - "kid": "2YrkPPOntQQ=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_015", - "notbefore": 1628805600000, - "notafter": 1691877600000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC\n2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwIw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGjCCAgKgAwIBAgIUc4Z21skZZ8Xy07UbGOonQJh/3uYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxMjIyMDAwMFoXDTIzMDgxMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwI6OB4DCB3TAdBgNVHQ4EFgQU8CPvYMvFZX51QjwEsL6RmVrYhCgwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCfhMpfpfaBZQLkBuT1XZJWVfMy/UxqunIhPyjjJejxCnYupYB5LoyUKeuI16+StNTxGNHML7S73SWywDSgFwP0ttoLK1fiGVKtOBfxcvPP6RiuhbgkdXlUboXW3azVLUB0y4ZxnFsp3ZupaTBCpBQNAaC30tEAx0ZEZvOBl3MGRHqfR6SdUc+aMj0bibqm29J8hOZAe051JwGNF+y7O0pLdDkmAg3rdBsHaTNvA6AcyRRV9Wm8vB6bf20JXm3mvVtgdyidUgSTTMJ2BOqvGzDsJma5q7vh4nFZxPDRGp9Ny1WU8MzGUIUilv/UJKDexfqyQdzBOF8jHXCY/gHGXrOQH7MZ6ApdG07+RY8R4AxZ51OJyGQw/KPFdU6XLSaDtyTXptGxl2JPIaik1TtNNR3/pAdDVp67tik7En8QICqEdv+OqzBbxVrFRHmW7bSeiX8aSuk52ypHTAR6MkstVNxd5J0mzPxBqQVWa2LDy4vGkFn+qQ2/tsVpdJJLQwfcix4rEP1kazm6nWqTyyoDEU1MM9i5y/Dv/GkAwMeXPqf9Uy2z/QWyja+me06DI42hf8eLN36uHcMS10MT2/ei2w4i3UULge0NyN2+wmjR6xKJHEu9P+LXci1jik33FbwGZKXVb1uI7Y/iU+NIBOPgHQfEvBuKDDvHC+vh3r9sraXeCA==", - "kid": "2Yv0kajsIlA=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSCO_FR_0004", - "notbefore": 1641942000000, - "notafter": 1705014000000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV9ZwrSsN3vr0WUaDkS4UzyPLz/2y\n4hm7yEnCOaAidrjZlVlIjQZkhDeNLYOLKcaGnEBQxBQNpCgLTJWTRnopPw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEHDCCAgSgAwIBAgIUaGRg9ynElihMD05ckXc84WVL8f4wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDExMTIzMDAwMFoXDTI0MDExMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARX1nCtKw3e+vRZRoORLhTPI8vP/bLiGbvIScI5oCJ2uNmVWUiNBmSEN40tg4spxoacQFDEFA2kKAtMlZNGeik/o4HgMIHdMB0GA1UdDgQWBBR1DNHWK9PsTyKp+5wxalsj5t9ECzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIxN06gTwfxHWcwBQw+tPhWqNv/caBLzM8Jh+DyOQWyanukoaU+4hsQm6Ouws79tCdGVPnDUgwxG8xM3YGOh5CxbhbsSfzihNmwUBS2F7LgBrK9PXaMOh6EX5+CMeMOMWPlc9c/OiHdqqr7yWPv9NEGHIUrsoYk6+PXNmUo1Q8smzWpLzyNdtdsCVyager9w/5hA0ZMBj7idZFAqDVWBVtUCtHH6QqW+NJ3Ukp+vqo+7RupVrXda3hkT6f/icnOxygH+UXRUwzqKeni7hLDDU1xfjd8kg1sa7zVRp4j8defmvrq2sZlFA3kyLKyDS5bk/97gejBI2W9efho5pM4Ky5jDuT/zoAwbepPuvB6cMo5evTmMivQoqO9k9NAqwe0Ou7YGhojAHIbnK/SoGWlKPAAwNzD+tSIVg7EBV3HWCMWsUu0CN7yDOLjatnbupT3crwEVa9M3E6Aw3c17KK3YqLyXJWOSAiR+8ZTE290atJT/4e+njj1+foFJdiAcQ+yG8qiLjGDYXxxbTU6B8XH2KXlikmeEZW1sNsafpg67jG8QPPfauZHtcSnbIJwk3Vni41IQcoytkc+b5ixpHkmXkbFgDR2aF5GwH5uF6Q1DBJdTiT3UpDsj1ZqGRrOKdj58OALAhRi/fibUXVJkJcwTPyXF95dT3N2LxIuEsvb2ilwA", - "kid": "2uMhJx5tEEU=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_22", - "notbefore": 1635894000000, - "notafter": 1698966000000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ws8GOmbxIZm3jIeG2vN3jsMTvjN\nuC40InFfPoXbMRVFjhOBjro3792wiunoFYiG7TZsgCEi/+IOCUsxa5+H/g==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGTCCAgGgAwIBAgIUHZbL5MhK3RIo99XEV0xY6jiBrQkwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwMjIzMDAwMFoXDTIzMTEwMjIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT7CzwY6ZvEhmbeMh4ba83eOwxO+M24LjQicV8+hdsxFUWOE4GOujfv3bCK6egViIbtNmyAISL/4g4JSzFrn4f+o4HgMIHdMB0GA1UdDgQWBBQtDNVIN839gYsiXOJR5IAF+tqWvzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAJdRrpKYXb0KAu7BXEq/45XlLSt4+UB4MamR5d9uZuVL+KkKHy9jiDJ2ydKSoCDJnZZtKdYG8hqqCFKUj/WqkTJGysZo7rWmeHT4/AZPSHsLGtaYtqKVPJOie4nyywdmMt07fJIcqVdGtmHqM9/dhEXVWWJqtDWC1cZ3HdS4Xf8LgPORm2iusGIKO7hJuBn9Z4dtqKlY2VzHY0jlqdFdOFVychusOQyZWdliJ/FsERDj3jj4TEk30w0Pk+V1Th6MogVmiVcv0QnxKG71Nck06JcYLkes6zgmdcY0vapUfmLGHECgMkYwuAR/tB06xAZPVPU9mq653ezbElwXPXNM6qc6TaCEnkUpjrLsjy/vD2naq+PtkZRlrKH+HxV8ZAEbAsg3WDAPG/9xVrWtp8FjmXhq3F6I/LGp3TCh8/q/9UmfDDNldidA95QcsAMJZUjEJNr8JXuegt3aBWUbpz8EbfyHVVS8Bzh9H8s9z/mwXT8X63y85YUzlMGshKdqI/7lESJUunA2U3pIZHixGJMK3MelZeqEBqxd22h7/gmNI9LrK3MBEtBQtnis+YBTyaR4BbDHDOur3eQA7Fy/FoIl5LUHPmbjqD+tJUuojg9+E6jGz18BeJYLtnPHNNF02XtfASwg2WO1+eujIQiyp+6e/xLUv8qxzEUQDi885fvHv//V", - "kid": "3aGO1ni4qKA=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_023", - "notbefore": 1634248800000, - "notafter": 1697320800000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgu/WJBn1Q+RCOfQx3NLT5oIGUCHs\nqSRXuu7EZsqfqZN5PvHk6/E++88wvj2fMrfmAptk5tVld2xBH4P4tRs8JQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGzCCAgOgAwIBAgIUbjokPqcsK9BPa9UdWexJeyEqilowDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTAxNDIyMDAwMFoXDTIzMTAxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABILv1iQZ9UPkQjn0MdzS0+aCBlAh7KkkV7ruxGbKn6mTeT7x5OvxPvvPML49nzK35gKbZObVZXdsQR+D+LUbPCWjgeAwgd0wHQYDVR0OBBYEFFmAYyEK7sVvsDvIY+w6fmNz2BT4MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEApMhsApIqDdjtJiC6mOsvI8L9Uwf+gw/dv06vVIwTQ7y+4AgtfZ2HTWeqW7IlXvNYs0m44U4VyL43pnoV167rwBOAMGTrYqT+83Hl5adOtl5ui0RxVHzNdUPiVPL2dV/OgZQKq/TFjm8wuJOxhjGIx2CFVKX2PpcbHAZ/IawdJjhOsisBZpfYuBpKFV8hBj9/SF/EwCrbswB81IrOjNEl9MkG6JrYarO/uztKHv9OIFy5SC6BaKkO4OItM2xx4H1w2cl7Cqt32n94WLxP0HLeAKqUA8/7Ttoa98x04iLElhkg8Fd+aL6Foi1mWlWBRlgHz7iHxZ7zYDmi8NksxnKECSwBm4FpP2Guz7CWY/tsREyGvrzZ2DjYFtNtIOHW15xr7aTPRJ0yD0DYtmZ6l9aYlFVGUgNWypUuNOe3BJh25X2re7nIwSvUWZeAnUFbJ+2YYt9xQfjgSll/DByUG/SfT6EqstPWlbVFVLljs6azzxQyozRB8JYPVG1Kny8WSl3YokIDLVofulJqYpi+ac2DDFCA1L6Mtnfw/go7Rq7uiorduqZi3FL8vKwy0M6S3ckP06pWjpJdOyKaLk1cbHJR4fuzY+PrhvDkKmSSlEzsWCIKe6B//ErN64MJ5xJxc6HnP2KvXV4hf7XbFsNat5ETxb3VdQhVDyHzgbqSpVo9BIM=", - "kid": "53FOjX/4aJs=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_029", - "notbefore": 1647298800000, - "notafter": 1710457200000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvPje+J0NfHHDSd2eilS/vlPfvFyg\n2GqaQe5uDcfbRNwXV51JZqQ9bno+FOnw+AFrLd9aOvsqWkvH6ogsKHk26g==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGzCCAgOgAwIBAgIUV/o7xkGXd5ZK2x7x5++zZSO6I/0wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMxNDIzMDAwMFoXDTI0MDMxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyOTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLz43vidDXxxw0ndnopUv75T37xcoNhqmkHubg3H20TcF1edSWakPW56PhTp8PgBay3fWjr7KlpLx+qILCh5NuqjgeAwgd0wHQYDVR0OBBYEFNNslXmB1flUg6kCQdJEDjP5T+rhMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAYRbsqQL82TwM6rQ75T0D/ZDzIHz2VP5rGoUBUGMvoqXYBFVZT5DbpjHjmb438xzeMFFUe64JRm5vkvyliwZrDK1WJD9W2A12mzIXx5DDakYh4JUkRUQSmpFynP3zrpr+P0hOZmDjC/UPUbSVRkFAwa8OieTSppv1GkNXTyDK/nZC/5+z0tzSWcg+xnR5ryKSov+oelpM4lGfSbOjJOXlEe/Vum7jt8dOkbCMyXCxKM/GGtOCVFmEUwieDe6vXmxRbkQHWyPclYB+RsNTct7vD+V04mXaO2M/EPdp7uN6r/4gI3e1UiJgQzh6Fntp9pDe9nkAQRjaotmokiakWGILMcJNMjKXTcWGtGECR2jIHCvvH7j/HSZxEQe6TXddnnMzLovH72RFnNQ2ZarK2hXcc+o+Rh8sGDlyZddTTJYzVm5lxQr1BtEMT8eNfc2Xd2VxaFaAp7abyKX0TaY8/WKkab+VgFgGoTf72LV6mUyWSSvm3U6578RCPgf21RVfIuE5J42Aq1eeYkkw0jCF9cVSq1ZQ7oLZzyk/qPI+LXcwgh02eaEwgZaimDb6GTXvNGLiG/UPVMXlVYdLTGBWr4BaIgk+pFwzx+4Zmwj85hHBSNObw6SJBETnK2K8nuD65IzfIevB1j+Mv28l5oBD714/o2ctSVcBYmxwFp0CzjG16Zg=", - "kid": "5IJmAxfUwrM=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_008", - "notbefore": 1646866800000, - "notafter": 1710025200000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFe6+khPXHMXLN/gLpWJi9cmNmalZ\nJ/H9Ko5t6+W1F6dPaUYnTpV/RyCBxWd9vpgjSKHLD66FjsxMjp/3Q8U+kA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEIDCCAgigAwIBAgIUGIV11m6B5igxihjlFKRkwVNsOAIwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMwOTIzMDAwMFoXDTI0MDMwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFe6+khPXHMXLN/gLpWJi9cmNmalZJ/H9Ko5t6+W1F6dPaUYnTpV/RyCBxWd9vpgjSKHLD66FjsxMjp/3Q8U+kKOB4DCB3TAdBgNVHQ4EFgQUGwpsSQJaSChkXvDR4rLovd0XxwwwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCGunJPiKmLdtXndGJEMy7bUnhBJogJBDdY4QoYUL9cVGwBVeVzRyoKh1LHAYC1OLzPb8kyP51GVZvZtbJlMhh40x2bDoyA+pidQUQBPs9pSun8//evz2n2TWsTDZ6vSeNgdEtLZsVFSnVKTLgjpm4IJDS2T/sr3OlGZMMryqeVx8GDpxVysZY0rRZ953mLHHTh4NVi2TOr1gHogKDpLCk0yIR8ac1gtdIGSxNtJtUf6gfoly+sLtRR84cQWqZNiFrYkxrPPV7mKD5cvWcqYl7oq//5YMUHI9Roi/9L9fwUEGKh/XWe4GrZIV6CRmmjGYwN/aKoDrOviPzmcmY07yMzuk10U4j5QGHJ9B9ePgvGkRMp3mR+5h3G03zr/PuiIhmiufhdomAMmd6tl0G7oAl8a4apugBN5DluJ42EJpkK9rHIIEi+2+ZvkNIYquyoYcCam3/FgHQuuedxaZR4b36m4t7sY2zmWjjnchZHCv66FgJEVYIWJm0wz/HmWBv847ErUunoKLEopY5cHrqfuii+A4HzO0U9+vYZw6DA2RwuVq8Ya5VdDlbZRva1OqzzDB4rXWgFwPZulwfqMxclrRHej3M7m44ynNW+7fpS44ADFyvLN6k4cS4kDQzfuL9bRcSiR9+UpCQGDxtOx6RF5/kyCwBfshXpinmayXrXCH4oNA==", - "kid": "696cpdD4YGw=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_031", - "notbefore": 1652565600000, - "notafter": 1715724000000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsdkkXqwhvUOcRao3EMIcLnDwZNiB\n87ofJwLuwqzIlQhOOZ7ndf8f/flfzxzogN7OgekiNNMpPGjOy58MZQ7Kpw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGzCCAgOgAwIBAgIUWplIUjX5w9eTfcPRQLG1AUcIeI0wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDUxNDIyMDAwMFoXDTI0MDUxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLHZJF6sIb1DnEWqNxDCHC5w8GTYgfO6HycC7sKsyJUITjme53X/H/35X88c6IDezoHpIjTTKTxozsufDGUOyqejgeAwgd0wHQYDVR0OBBYEFJ27qMfQU5fnLnX4wi76bSxJ6QboMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAlzY0s3UVOuyqTJGhyBVb3cfkrD4Hyqy0QSrB2shuv5JjGudzjSuGqurDp09Ozyg97+PuNm9F6JqxiZbz+IhmzZX2yyYwBEOKv8KnN57DEIY65qOLn1o6yJEJpNWVhCjqW5MnhND7CGxcvTGF3FHeEB5OfxnSZaC5aDkNauMoI8pUddONpYwrtHiaIsxsYce/k7w3RctO+8ZcYJ/BE1Urc/rpmcV1FWpBC6FzFG1rbu1vXMkfPmKLXFCPZv9Pzu5u9/et2h8TFWS7DyMnWiSBcuJiF635CccYfzlQLeBBeGKFR00IqTOiSVQZPccB6PC7/g6Vlm9ZSrYQwBwraQIXIYRwMpIkOifn4bT3xNLlGp6b0k9xj12HKYR4MSg9GZHj8ctFCqHiajdjG6s5azH7wOAEyvzA047/RSjNyoX5hcLZE+6SIfDjZPDY8ZVE2IF1LBj1TW1mHWOeXnYD2ss3nC6nUXYByEekN+6pn62zlzwv+BnNPCZa+MqUJMvfRa7IC2qCF6VIB4KHhWH8Ev/3JiimdmmnqS9xgb7Go+r8h3iXbmR/wjucS5tuDJSkkEJDG+5VcEzKdxrIrmbTLIlDf84gpcaH2EYFn2a5VsYyybGndNl0Q7qICVJGax3CPZe1gQaVNqhtEDLbfh0iXttV5F+UdxrO2rQ/AH+fOrV0Q0Q=", - "kid": "768E5xdq4Eg=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_016", - "notbefore": 1630620000000, - "notafter": 1693692000000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTC\nmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFDw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGjCCAgKgAwIBAgIURQaZ+EBTL+Y6w52qaQUNZ8YBNs8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkwMjIyMDAwMFoXDTIzMDkwMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTCmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFD6OB4DCB3TAdBgNVHQ4EFgQU7OG+JgHJZf/maDGo2iSgWdFzl7EwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCVWdsW/zEmkJ4uRQVoYTxdDHlmS+mbDvEGv3em3wtFVWX/0FZKRRxHZba4wElR7DjEv4A/d6sYPn/9Mp5PhBDS/lofFzUMNYAumH4uls+MT6a9ezZFCtcATKj9pP2hMySfSn2rfQzOR9yXS6I/GcruzehqedBmzxc5uKjbSeyLA7sgsgl/JB2DW5G4tIqjxIY8KytMTkrrlJYaG/vPokpS2ajUNZisBbLHJAGLx4XKnjlLviTBSp3iAsoCh/FFHJxtQJ2pFvmgRmVaQUKpTaAuHH5pPmw4Q8rgXq+qX0vFaPe6LaUCpJkEguY5lxGtHqZGoqoVaKG3/LX9qkuzyJ5ijI//e+Uzah/zCBmW4kK9HLHUVWNyOD9fbVhWHJfXKkNJ0dH5JV3bKD2G/MvM81R5Q41F9PUjOXYoCrDnY2tmBPuXisR4mCulrWyM6Bj0/r8CkMkwMNcr7AoTEfXpa8MxJANVWFARG76IYiQtn8M1dtBxmy+bf4/+n/k6S6Z4w31tTl0YsNWQ6TnlHS2PQ+UiV1zchJcZ5RW2YwlWjLRhJHOzrcv2m1jRIsqPASvRLJjeAs+77ZDyBmBFA3piutllZj5SBDCLzStyIplruJWHhCnhGj90b+fGQUPAhj8XxhRuCnRtXBwWED8hC6dQh8QaiKB7sTrlU9L/8wn5mCGnuQ==", - "kid": "AX/m4PDDCXE=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_21", - "notbefore": 1634076000000, - "notafter": 1697148000000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2KIu7zh4VbMsB2Y8H2VRojkDFFA8\nhQwDsYjuAuxqIvqqx0Rjjv0+teHsdtIwdXW5f3BrIp5D5WXbPechk9nR9w==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGTCCAgGgAwIBAgIUaC1i8U4Vp9O89KqNCGnoL/BxXpUwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTAxMjIyMDAwMFoXDTIzMTAxMjIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATYoi7vOHhVsywHZjwfZVGiOQMUUDyFDAOxiO4C7Goi+qrHRGOO/T614ex20jB1dbl/cGsinkPlZds95yGT2dH3o4HgMIHdMB0GA1UdDgQWBBQbSJqpNjLhe5I8/Jl9l7JWE78a0TAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBABSg7TvfutJ43UXAOblrRH4vATAYUUHb542Pnqr87+7IVl68HtYLeBI8kuDgbo+E4D/vLiWJFq7V+9pUQnLvqbIlgESQP2saVFb1DRVzBk6UdAZ98kAfrND5Aom7VPGoZE9UpRBWYJtH+E9vXR/6zr3ikIbLSghS9S23R6PqEp+KD9bd2DUv2URn2VsAncTIwOovN3sCVfbiI7sByCyqzoCOpK+lK4GbTRUDnrnS4thexvi/T+pMmJ7jYUtz83tD+rp6PO5L6Ps8JVhYDNYRyUqrxSNcU6mfKikE6I118eeHCHwCTh4TXsE9wTwJ0oZwzo0RlZo54GuJ3XTH9zJZv4rOm8BZwVFXXKcPR/MKmRTBTK0lsvCb/yFSJjW9h7EOBZCJB6tmrsXEaZJSzSepge4hT3+qO4S2VgeruUpeoZy+X7ytWsMAWL8NMWBxVba9pkwM8zTKluw2dFIaMm3+p26rXyw0Ahg7jDFGyPyCjlORrepgMuqhG1nwg5+INYhqDNx6MOY+paAkHCjacmvDlcx780SrcztES4D5h7tMWH5rpHGQdAmr0Ga8klWp6QaJs+E+RvlfjTCx/jqYHaC1MGjxiUQikOEbcxZH6m+crrtcyMH3Jps1pqCDOYHVgsqOIyqkqdmtLxfdvGzPUn0hKIMC43gkyPX9O5CphGmwJEaR", - "kid": "Cj0KwOpRFvQ=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_013", - "notbefore": 1625176800000, - "notafter": 1688248800000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6\n/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGjCCAgKgAwIBAgIUdvwPgIGxxk3GeLBFSk0RuKP1NnEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcwMTIyMDAwMFoXDTIzMDcwMTIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuKOB4DCB3TAdBgNVHQ4EFgQUK/s/lmhAfvZK1RyuXxMIhJ7oTm4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCwoySNQghvF3QSu/6RtHg1XDV/4eNFFPwl+qmZn1AfODHAfVS42hjsmMLeDOLv0JUg3Xdx8debts/8/ljys1XMy1tODB9y06ZrQ1X1GxtutC4cSacBYWsy06qyI/vn1Q6vwKkNHADNJP2GNxQUlolkXkdgS7q+2tWCxcK8lQE4t2TrrNUi5UN8tlagLkbuGYqnzHnGdZ8AN6NskBhq8j0mcDHxhZ32yBg/+ZmLGdnCqRuZ9fjrH6B3k/n7fHhDG5UPnk+m+LReCRN9Zud4lGzLn3HSS1dqB5V3k3lsszmQKEi9haFljxImcU2aJ+IRepO6T/kXh+bn5ei64sEro3fad70eAOg9C4hkD3krsHMpYdM3TBF704dahPbuusRFqDCD9XrLpYP4e6UD+EdjOg/aqG4i5DEdk9cFJtv+5gp8ExtqUXkIk56jjmShQFwfNgA5SWa6lFWniQCYPxb978BMIqOamOL/6BwnyaazQWFm2Qyl4AzlWot1CrOt3r+aK/i0m1nE028dju2xa3BTKEsxjCAXJ7eOldXkezBPFVGpfrdWssqnbzaWVXtVIfZ/CNMmEk9/cqgS+A6lrZlC5Og28ziRrkQatnL2SIbBXmcJ729H1SHRfAVKu+yXDzHV2fcwcoFBgZUf1g/IS/ImzU4A4sJImfDAvaFY3mcQslcm4Q==", - "kid": "CvmI4xOoMj4=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_025", - "notbefore": 1623708000000, - "notafter": 1686780000000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEGSSdtJPZeYWU3QrR2cR4M2Cv6sY\nKuY870qkBKKREtlSel4Cxpfm8EnPZ+OPVVDXxArWdYR0MoLK6Ox9aEIkmw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGzCCAgOgAwIBAgIUEE5lEugsksKBZO8ZFddktB2zEZgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBBkknbST2XmFlN0K0dnEeDNgr+rGCrmPO9KpASikRLZUnpeAsaX5vBJz2fjj1VQ18QK1nWEdDKCyujsfWhCJJujgeAwgd0wHQYDVR0OBBYEFHo8gi1E3sTHBnZB1uyUzxdv5GyzMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAM2QCIIa2/qraMLp/+N3JR3gBVI+zSFird5rWdWPWptnVq+E2MEPwJhz3a288axhZPetnm2vxRHtrzI8OS0tcl0qoDhHmMQAPzYHth6xGoGx9+jfLFMoynA1hcRmILtiitPoOT8SYe9K+ln3sia2xn52Rysy1xLTQZquBmczVAdxAS3B+h2nNw7V0b9ukamul6w9Fp7ifg25pT6mTt5sXD89hTSqTf/fhiTCjRTrBTJuVA9VgKrWUiZHI/vIwKRHoqUvMDDW3RK/QoAqfQWzztKV9yRCpBhv5focv50owbyu1VYpnT0gnl20UZsLwEXt6TusJFvGoiySFCLLanU6gyoHcXudNem8YEosOzxFSR1wvKJws8JJjuaQweQBtu/XRlwti73KZjwltHsehHC3nFsl3VwMf97A2cmre2ueEUcjRFvElh2PfpIIL17Srpu/mvu3hSVHndsUoFVZnZUWz8rVQL0M394Ik9ZBaZXVrIZud1FfuDQzbVKjRTO9mOIv9WZ784MAON+g0p0xKvJ2MZmwe+ZF4FvxRP2fCC9vlMk3As4bccS3IUKsrupIFXar1THfGPL8obpn6ktjVJ4dCT+y2w5JHGtxclhIjdqG5w/PrMPjeGrq8wlALwGjKMTF6gOZ+BtfjNCaG8h8lpt+oKeML7GP/Fe5Adjcovc0DBY8=", - "kid": "G3jDFQ1oK0Q=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_020", - "notbefore": 1626300000000, - "notafter": 1689372000000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECmvd9b56sHucHEi7GBjqapZy6IAZ\n4MFIFg7Acr85jXp/oBSNzFBP9CnkswLR5vwmr836uS9JL5sddzLT4K4+5A==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGzCCAgOgAwIBAgIUY7ZCHR/KM3Pu7zkxGX7a6r2xWT8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcxNDIyMDAwMFoXDTIzMDcxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABApr3fW+erB7nBxIuxgY6mqWcuiAGeDBSBYOwHK/OY16f6AUjcxQT/Qp5LMC0eb8Jq/N+rkvSS+bHXcy0+CuPuSjgeAwgd0wHQYDVR0OBBYEFGaKMaCARFztgSv4jjRlAu75x3ILMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEADKs8pzrmE48ZExyNbGa8kV7CjJjCfWGTOEfzxaA6X7gL0kaHVnvPeNq4yQh6CZl0mwrEmdxvuXKRefU+nCg/prbn6CAwC2irDHU5hS48Qvya7JwqNTMOU66phFs3FDuXOpUvm/fe+w6Vy9M0IqbKu7kEWizZ923G5YjrcUgnTuF9xZ0pOd2HjYh9efNOmbeda0JmJEQKxi5+WAGjOTqidDXfh/G+2jB/Ja67kyoZSeMHBEz7IyJ8hBrUWRWV5oEzIRQdMlZ2xPD9S9nS00T09gkl2nhx+U7nTqRPQa+qKMiejQA27+EwDgszkl5hUMTeqB5xA21l2SqBqz4W+v3WBy0ziDNS9Qa5HC1+lZp/7R+33pfGZMOC9iw2+yyC+SC8cFwUB/iuwZ+0096LV0wZshB74ZjU//sUNJIL5/ZWaNGohnIorJ8nbzMFm2rPfU66dOanfQ03IkrtIlbxH2IOAuBsC7Fk1OH6DDMoOJRia7OSAOv1UT696M7R4MtKyWhCiiNajxT2jSJbvpVj5YmS83G7cfbsYHu8x7VGxrwMXyyeyhKPh8D9xXCYdRrkAo5hhd9ETLRI4QeJHPQvw7UOL3Upog+fZmaXBeEetGl1Y8PQG2JHjY0BUGclNvvBApH6jEMWiOMUMjnR+mE8FC2LB5GJScjq1MLjaDqYpj5f2jI=", - "kid": "IMgNr10pfPQ=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_24", - "notbefore": 1639522800000, - "notafter": 1702594800000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEv9oPMoRAqA3JV2+cNikqVChE7Y8W\nxGrVkEm5PV1bFndPkVXnRgpdgznH2H/x/3IcOdv6edXz4iorfKud7oJoYg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGTCCAgGgAwIBAgIUcMofBDuZv7du/lkGLSBUaCPoRdQwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS/2g8yhECoDclXb5w2KSpUKETtjxbEatWQSbk9XVsWd0+RVedGCl2DOcfYf/H/chw52/p51fPiKit8q53ugmhio4HgMIHdMB0GA1UdDgQWBBRRA97mCPpiiEm0TRCs24gbDkkU3jAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIrIAYlDdyvTTVinMgb6JUX15O3zMMieoVig1T58oCLVQFAdMvJAWvi9SKVe7FdIeDLVUDuBtEc8P51rI4Da3Ln+2eNvcO3HMyq/1IFH5llBH3mNIlynTny1G02qYVGAmWvaKNIKeS50Q5c38qBQFLvabIOB2RTVJLAZ1sbRhRnossB+MEmLpn19/UFl23TQqzBgAzRILCmuuSwyoJmLq/jAMAtvOtx32awLv1tRWpdDK0hM7/Nl30ysNEgc8AXhHNpgVS5SmMC41WQWXgMB8ZiP1t6h+nKPmLHRDKnM5H+ukg1Lob5bTdMUibmC64b6yl/PISPqHCojnJRTz/kKXf+E1zn+ybkoYE+608a8RO+4EY7vEsuvGTqTBtJ4m7qDkYLMfXMTQoCg0GbAal7sa7aJVA/vdno3gDGWisu/EzCi0X6C6Gu3nxJuwEp+Il1kD2nIySSfQzBgUoZ4KUHUbvYlvRJBYQKijUItaJkThvUfFE+C+TUH0aqdWBl33zEDilXiaJEYTIyVtRRmPMF/EMK44DGc0DF4tlxeexeXrAXQcG8PmxRVfysxv9JN+53ubchR1SZ4fuPiRFtCliKz8luUmpVKBtbtvPPyxSWacRR2Anfy2KCVQ95eLFJUdMpp7qSTGvcIJKtuoNMKW1eZrvISldQDejMcoFXz+QgtCv08", - "kid": "LkrphwJykEw=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_25", - "notbefore": 1630447200000, - "notafter": 1693519200000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEB5mLr8niSSWcqZ3EbDPjFseikZTP\n0rPRJPDW1+hvblECWjmEOsWEiXQ87RUStArNabZ9JMysQccgbb5IJ7bbOw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGTCCAgGgAwIBAgIUPXRtjcQUp7b28v0vmppxnIFeWH4wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgzMTIyMDAwMFoXDTIzMDgzMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQHmYuvyeJJJZypncRsM+MWx6KRlM/Ss9Ek8NbX6G9uUQJaOYQ6xYSJdDztFRK0Cs1ptn0kzKxBxyBtvkgntts7o4HgMIHdMB0GA1UdDgQWBBS8BY4cl2GX44Dn1QTF8A1NVL8unjAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAE7zd0O/XHFUy06u2iTzp11wD8QZiGVEL9SPpI/fB1cdqZKL012FyiiN/wljpgo6b+p9SFvAY2nfod4Rs+by+PXgEdsVkuoU3QWCl0JKDqu/4RPLX350rufJWHSHBIocgBCUjvsgfcpJa2ureQ9iY9e0PVyRqEtTZzlcJWzZQwVYGxEcUnaC7pgmwS9awJ0r52GrnWNIpekSFvJcMsbT+gsfUeQU32lXENVdgsUxfX5VJZ2ooyw7bOzPJYInUwIMs1msLQOhl4scLKZtopaRztSNrQCkN5Y5C8OjEimkCq4ed7yznYhRBI/nN/1ORuniYS6jAilF0R8QBYdZOumjFozYWt6HIOuABikGvec4dp/5xqPhTTKrjygU+UMEl9bV9XtdPdHdbJUP9wV8gV90Fs5mUUlzbZjkfOr6wLxPMR1Acq5t3usakHLLFSSKHmoCwhCiiGGeYRPSjdcryxHW19zfSyHiKOaWlV/Ex99VjgWMZqV/JAl9fdjx4F58d03gp9iQY2+zm2WQnrVTUPrkEYdLoqcVtn4nZbJJnFlPVi2H9LcDN+LkJroXFx/eQQ4BVBQgIQ9pWjPUF6ay8TIpE1/PWhf+EBVet0FA4QqR/gypJI+cNDfgYUTA/2zJ5QpGDQSrUdH+8nBCx5RgtE4/OZBj83edTfcbC5+GPFXC88xZ", - "kid": "M+R7JFFk6G8=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_19", - "notbefore": 1630447200000, - "notafter": 1693519200000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERSQZ3mIam9saggM/z1bCW2+wGPWF\n6yNJN7qrsTLHntxEu2JpPJRPP866gJVIsHmIMqU/Kg/BnQ1bb6icYxpcTg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGTCCAgGgAwIBAgIUF0n80rrBMJH3PxQUQLM+vM20uCgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgzMTIyMDAwMFoXDTIzMDgzMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMTkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARFJBneYhqb2xqCAz/PVsJbb7AY9YXrI0k3uquxMsee3ES7Ymk8lE8/zrqAlUiweYgypT8qD8GdDVtvqJxjGlxOo4HgMIHdMB0GA1UdDgQWBBQZBTK8TIaJS4alif7cZXMDRas7UzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAEqB7XsEFQ1yVxI4+qUO1wYS3j5CY32bvzlbL5TfH04VsS1UJvMnzU1gR5m90bncj4z+sqe4m0cHygP5VncDt/Hjfat4FBu7EfxIlBYTF08iBVClMxbnA64ak9XXibT6QlGDNGnLPK6FaadJosV8pkVUYKhgkIaR/5bz8CzOR1pECkQnpeAjZddHM21YfbGDlawwnMbjLJx6Zi2//RLLlCwmE8lv1VfAyG5fvJOcrx/9QgrIyLO9BmPwMBgxK9BXBv7fePFpYktbmhgpf7oLbUdmREbfweVNodmB7VjN4FiidTbL+m4EFsi0Su/l0YgXdcKCRZgS0OZn3lqR+KuYAsNxw6EbGAub8FuXrw+5BQ+WJ2ECxMN8fmi1yWMj5Lr2oHV3K30m15HTcRWuWZw1gYnfNf0z1NNPUK8LeyMDqJoPG/Oc55zrd+BkCecHQEbaa6sj1cdKwYabXOjCgTLVBxXV0XwHoB2qLjyXVjGoRHO1dwAEgnozfaUWB01Sh9Fe+xuSfHAS8cNaIBCMBCKktly7Rs+8bDTf8SNSuPlWqiXi5DY8a5UEEjj/iVFxmS8jheF4EQAA9j+WEFNyEn6szw5FH0zJO/nYhBS6y24l6aGanes3KcOL53tz1H+pGw58HDiWVhUpTDLWCFk+JGbTu92nRVxA0axLsimfhPR0lVLA", - "kid": "MJuQDybecd4=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_032", - "notbefore": 1639522800000, - "notafter": 1702594800000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqqevv+I14Er0ap62pyJsNnWkipxM\nuuogVRR94OSi2ZgIe6ejB5/8Xnw7URRJkYfEaixM6nz6Y6h9xHT4rQOXcg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGzCCAgOgAwIBAgIUAsAQyVk0S89PuVooonmdBhY5tSMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKqnr7/iNeBK9GqetqcibDZ1pIqcTLrqIFUUfeDkotmYCHunowef/F58O1EUSZGHxGosTOp8+mOofcR0+K0Dl3KjgeAwgd0wHQYDVR0OBBYEFNsZf6xdKlAdeMErziNj3zg4kqzNMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAmHRGMyQKn86+JFT66yII52aBFp5199r13R+pMhCpTPdibTDItLAdehLwyZBCW88PpdCu5fUzVZOSbBQJt3ocTQY07AO4E/4bdW/A9vXYCvL2eKgRuu9pgyDeWFFDh5u9us7SMW1WSGC8TBGoQTizjeP6gQ/iznZG19TG9+G5FtoCobzGm/kMGtyX9s988LijLRAc2UBa4mk1E1MLkXGOnbzVHoIhxeFVWgXwBzCwCoO5ta2jF8e2AQggj+6uJCHnoeHwOS9JTxBanFag9LIilMZnFrZ1dyEYQtBzZUf3gfzNziNdYwv8oGbye3qFCS3YAwO/QCBGLAuzMiN6iJTL7+ivw06lpkwbCnREMRcNuBd8nSzzh/AJODVK0Zbm7elKitAfOl9xJ552kSCIpw3DRljsAvidhjP8ylgTKsfVhwb2bK9HEHSgo/MRc3ImWlYun1IipPwAfhp4uQfqcP0T8FLFfSBCK9sLN3F1jby5dcURpfYSi5BQvIgbgiiHpnxjueOStAGoof7ebmfFaehRnc7KoGlCfkAFrbBgRrLMsRbYv2xl47TOh+xPAjdbiZylD3wlzKD0ZDGpAfq6P0ovYoTZGRzzalw4Fuo5RW+S7SlDQCsdkNEKgAmFpGVnLed3YKhmLKJFmljlZXdeZVjul8KshpP6//HW3ceY5GXvXv4=", - "kid": "Of6ltPMXuJo=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_024", - "notbefore": 1636930800000, - "notafter": 1700002800000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7B4Il+aYBZk8hs1MI28H4Z4GF2HZ\nCXgX/DSTxvUoCMVze4xp449WJLblSCKXreGdiT0Mycgevo4rWYVGbwtUxg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGzCCAgOgAwIBAgIUQGT66i1j72Yd+CXVZxgaJFhLGKcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTExNDIzMDAwMFoXDTIzMTExNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOweCJfmmAWZPIbNTCNvB+GeBhdh2Ql4F/w0k8b1KAjFc3uMaeOPViS25Ugil63hnYk9DMnIHr6OK1mFRm8LVMajgeAwgd0wHQYDVR0OBBYEFOkihiD6srcZ+6gH9LiQNVc6QwQ8MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAg1Vrsxtjk49QaxQ/LWFLC1WmRTNO/8XeLyASVHjPZXWfvrl9ft+SlKqlhIom7sYbxiYF5+g0qRjwBWMVqfFkYPpJkeuri2awLQo9Hr8oiPNVSHpFi3zjr4gMLEv2buQ6LUbvAT2U6eOW17AiNhT/3XzND8tILs++7JKU675p46YtKNguJhJVPEO+9cMdBdeJUM8d0RRV40AlkY/ThVI6BzqxmiD6jAka4bWJFztR8xkBs3RBxcumGXPIJIpC8cJ9dqnnsBdLJfDlWLfvpn9k03QIU9/XObnw3wLGwFWnxdr6sQMNxJCMpk3U2tT6og6DGylD4OQbGQvqFzm1x+5X11DQIdhQhBbbz+ymVBhVjVTm6D5JsEHYOcXi00aIs5zuDs0AYJhWZW/eimBgkRy2WE/6eH49pBSl80OmNAcxboqZHQS1jmLqZ9yptJ3pbSOXZS1ABgsGOYXCyHTPy5OQA5zHIt+zakgyvcFJm4YcIOD9gKzrpyiB7qJLbzliTHcimuIoMfKfzMi82K2rsFZ18glgRnm0/G1I8Cgnol2qXjkJTJq3BgI46+aA2ad8sMWB+3L7J9dj/nQJrNaZcYZ5IMhyHxeZRxpo9brURgzt9J/Qj2hF5gv2ovJXo+FgjMiLusVpsi3HKcYyUS36dKj+f4ty0kPdUklcdx52ogQ7K44=", - "kid": "Qe8D6lfZ5/Y=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_030", - "notbefore": 1649973600000, - "notafter": 1713132000000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzuWkpSJGbVsp+E2UNf389FyOI+S1\noE2U48ZdgllNRQo5KJ9TCmLL+U+eRVmId9es+oj3BS/rWfQR1fKhs6TznA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGzCCAgOgAwIBAgIUAj1HEBf1NelaSBuczWgaH5Ch36UwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDQxNDIyMDAwMFoXDTI0MDQxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABM7lpKUiRm1bKfhNlDX9/PRcjiPktaBNlOPGXYJZTUUKOSifUwpiy/lPnkVZiHfXrPqI9wUv61n0EdXyobOk85yjgeAwgd0wHQYDVR0OBBYEFA6IIFDXpLz5r7sQnjnVOJ0MgUafMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAUeglZ3THwmpehcaD5UTX7ZRYeq7cpC0+jkir+N8Y09cA2S39ZF2DZBbE1UaVNDfLCICb4TkW9vHk+YEBjkykz4tSH0tkGUX2acNX3inHIDykff4mkRqwjYRInylc/MD9wrUwtIOslp0gW6CcJta6SMw9wcjaG4/tv5SddMvWUDs5UZyylY8Q4O0rpbxAcQ/wkF1R4S4XZ5KFD7nodJz3ig7b1dF08X47pOYjBmcNBePNq4nf3IS6x63LhWmDfpVc4+75NKwelBrLTErnVhd9EorlUWPHYvhfjalFanUxQmQdlJpcVhAh/BZEyGKb38ECMoHWzat66SDBVHGrM23uliXxDM6sC06ulab/6HWr5DjzUcgwx7UJU5lvGP1Et1b1MJNNd3D1Do7QoWwphwT81BUr5wB9CJSG+iOjRfv9pT85iYcNfpqtit//3H23Duw3K2EwSPGvxpQqSZlwxDCLhLfm49doBeVItCU1qDlncH3ky/D2XgV6ENCMZaQTcyWHeKOzbTMuwINsfc7VfgygaVySmGQjfyNukvx6ywI7Tg4H20gogMStLaj+yPPnsul4N+EOBHsSKCenfwlaTe141+nfKB9eUA1kSApybWY7E4pflmTaDmuHEBYb2sz8nq2lD3DkdiFYe60v45ZOsYwzACyM5L7j3Vu1/my6EQBb074=", - "kid": "UcuKeuV1sys=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSCO_FR_0003", - "notbefore": 1640127600000, - "notafter": 1703199600000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkDtFRuH55y0i+agPf50duCfKbdQl\nqeZWlNSQGiNCmHQ2uwU3uz9F1/PrzwwI9HiXQQRNiHdSDBpf/iBkFR+B1A==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEHDCCAgSgAwIBAgIUQkSt3NEP7eZXRRnAVGA0zskx+JEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIyMTIzMDAwMFoXDTIzMTIyMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASQO0VG4fnnLSL5qA9/nR24J8pt1CWp5laU1JAaI0KYdDa7BTe7P0XX8+vPDAj0eJdBBE2Id1IMGl/+IGQVH4HUo4HgMIHdMB0GA1UdDgQWBBRM5vCkGmWh+WbL/93iZ9SHcFFJ7TAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAHBYP+J01kD3SOJHli5VwmVFRYBLv73mJOlS8SdRO9IWs7KLTSiMAM/izNYp9gIFkgVsNepmJmrccKu5jJUaEZhkjXbhvhnFZQuI0cvMcstZF0iNIFN2vukr2ssIKeFlmVNXkqjTNCawvpzV1IKrwpqGMthe33N67AtkvmLT+Z8Cf2900b8Pgq4kZj1dUekMtz/RwNnf9nOu3Sr1H0pQ845YcUr01DsFsMFyDd/EEmI3OGBHzvvEAA15Kk4fwTCLY7AIy9Z/cAIzy2pvlMoJpPDQF10/JIV0IFPd/nLtNiulU3eeFrzWzXsaw7mIXLfDaattYmP9zc00YSvgcUvOJc4Y0ZF3XWIrPoMYJMNFJic+AjVf6uOHARVb5TN5GDdjtmzzL7dTRl+2mNRXpuOkgWJA4/S8DVPiGZ8N0zbXLltLAnoKW1j+3/sPxX4Zpgz+kSY7Qa2BrAwvj03jOXBGNxiMPFv5ilLCwqSQudA6STA6VlPvuKwpiUZOZ4nVSMJ8cRyKmac4KKb+vi/O3HsGGbLYA3WiqRs9oI3IO45S7S0kHdLLlXOGsQtQWxbVxRxm1WbaOrqk++xxCIKm4PziwY9BgElDi63LHbPt+zksEOCqcneD3viBlNLoYXOpvap834c3oL8pxynSxLp2UXygiz8EUjZPyVLYHNIZwKvf3yps", - "kid": "UnanmcgtfUA=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_005", - "notbefore": 1639090800000, - "notafter": 1702162800000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgA/VBlwh3BT6L02+aBkegInc4i0O\n+dpqxTnWaR4lFtdAQZih8DMwQnHTE+FMYh+3ELno/d3jUOtr2KRfMiwcgw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEIDCCAgigAwIBAgIUEn7EY32bIQI6cjr9LsydaBRkYLgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIwOTIzMDAwMFoXDTIzMTIwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgA/VBlwh3BT6L02+aBkegInc4i0O+dpqxTnWaR4lFtdAQZih8DMwQnHTE+FMYh+3ELno/d3jUOtr2KRfMiwcg6OB4DCB3TAdBgNVHQ4EFgQUmoAU9xV+MEtzaiWTfIByf3qqNNwwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQC6G6FD54QaC3FBbQog8erXva9jokzjpUynW4DPLMyWQxOS1PlgfeakHADREVs0Q2erL3P1+VRxSzk11Rzss2lztKGU6r3G0EvLWeXT8C6FjWKv+Ej7tzjsWo47JC5cqffYOcDJWx/sAaBNW/OuTiG0SVSVjI2p3VTSPmuC1oZQEKvtqOkCgD4/MClxmVijOF0p344xh/l1ggmoqFZPupyG/lR4Ixx60IVUoe7HYLJrjGX3XxWVb+3CMVqIBUmZNajvxuDigdtMq9gArwymWK6k9yqmlroQ05XWt9gI93uLNJLnZmHrMOvXLa8lp6XgxUmDOYjvFhIWCCh1PO+nxfb3TlxKb1f1E0AmylVt2s3+/7af1RAj702f5aEscUtK+3OwAc6AfUo5x1HsZR9KCm4ZVdHLwTA01UWePGMSmuUTsaJUGo1PY+soNm26XcjFvU2SMHodTPb5Mj87ghAyiMbyb3KdNneJoQ4jfXz26jeN3yo4Yw+fYd881UukDwq6sG4PoxHHWGrkLqoZoKYznegkmAyLwZE2Z4llH/JQ8WWOm6uo1AqovXzMpAYA15o6P9OWFnXv+db+L26naLjWnuOYsiTqfrc8lcdzEpKqKdTMMfPLmhHcL3DCYJi+K373AvXj55vzCkWUr6gM74xttGtsnmuIcXsfc6tLw6QWlJv6LA==", - "kid": "V2i/L/Yb0Mo=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_017", - "notbefore": 1632434400000, - "notafter": 1695506400000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/\nMCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGjCCAgKgAwIBAgIUGxW97yNy30SefumeNAP3zZwINLMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkyMzIyMDAwMFoXDTIzMDkyMzIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/MCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxaOB4DCB3TAdBgNVHQ4EFgQU65Kf02Ri58/6NMKPr33J+Wz8lrYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCAD7IAnsIa2VrGdmp7kv5Tj49lhY4FgzphvUB8YcPGPy+EtrAGi+uU1hKT/nbGeB82f92nj12iQUF57gwRSalGAUvlkz4c22L9dt5pla7u54TI08GPOmR5wUs8zixYaZDjAdNr+WbfgbDzqifwlhrjIMbKwCfW22187hxcrQgD4gVc927EyruFmJxxSDNJ33NxFkZ0uXS5TMN9gWLuI+xhcosLeW9SlwscLI9WNqBigzln/nLAHYzBpS+lprHVOa+jJzktlJbATB40BCz9jpGcCDgkUTCNZ5z3pOHas2rVm2aBLcHVttVbps+ynYwyWtSI2jr9oN6GzdyS6JZykxvqGoZO3odhxe61ioVhjyhH+e9mQIvpM7qJ2/mxUFp3ND252wmnGW9FuzbFamH/SGD6LipPVyXK4oW2nxYcN7Fjdc1w/5rHXz3sYfIGORfrumSeRnfIdXglfsQi+T19cA/kwbuGagjGHntN2bnZP/FDvs07PgixNAi357BAAuwpHKMHiwXSjTW4smx4+agRVIlGZ4zuEQXLPpFSwW0ktPeLdr4DRtfL8cRav5Qs5TrG02c3lJP/PQAnpXpbGBImjAmBsat+0m7nuBU7Ix3F/A5HBkSlSHUgvw9Ze3PZUxw5igsMm0eEcd6h3hhxV8HZcS40I53y9l63gr9j1Mas7BfceQ==", - "kid": "Xo78qgBEx8k=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_014", - "notbefore": 1626991200000, - "notafter": 1690063200000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZ\nmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGjCCAgKgAwIBAgIULSQWphYP//zk1JQmpv94dIH6cmQwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcyMjIyMDAwMFoXDTIzMDcyMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHqOB4DCB3TAdBgNVHQ4EFgQUZprkhn12tER7SWBEtD8mPNDNmK8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBCJgkoi4nyqPEXv8VCIXzO47sLWS4GOrT4eQ9NjEBuXqkCVWwMiQ+0PPiNi23QWx67ZK6DYUQJUOHAV8VRKZRK6G+UHRWX76hk00+hmW5qL7YT4+Z8RsXj8TA/DbUTXwEeSSinfQYefLoC8J9G7vTYmS4su0CaG0wr0qsSOMKZCM/sh0DUCNtZTpzTspDj/i2TPhTNhthyG2QWFKnTdQruEyT3XC1disruo/H0tohKOAmZhqXocdKFTl6Ycbn21A2Pm/xJRh+W/T19bFF97Z+i5T7CfS4Zrf0VQm4ZNrUv96gwye532d0QQ/6JZCTT7aL9fjEnEzkQdtdYPE0051HI9gRKmW6k++hWFiokhcarvWAsNkN4B4MIzTufRm92hCbzFh5IvsHYaaAUsfEMDsrhFSkuZ1swzimP2AQ38R1O0Brb2pls3sF7SAc3j5LA/bXZNhMJ9iBroc1SV7YC6Vv1DZOHTumSLw2fvwDt358sEicsCgdpzpm4gKTOf62rzqGiNpKWBbZW2mJvuv6WNV5C0/aW7r1nfuJ9+qSd2SUrZUFceE4vpxM2ccgsodHnspbSo7jKTeJ7l14rQn9XvoZY3E+YFcdbJQQeY0nABB83acJw1PVKfVsyt9D3DLwWXEcUcwUGioxVwiHR01VyrB2FBKurrXYEx0PglSI/NZBL/w==", - "kid": "YDAy+yvD5lU=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_018", - "notbefore": 1623362400000, - "notafter": 1686434400000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjH\nz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINRw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGjCCAgKgAwIBAgIUW6BjdX2GIko8Yv84sS428c3DH6swDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjHz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINR6OB4DCB3TAdBgNVHQ4EFgQU0ONM/OVD0tP9BuSIGmIZRrPdEnEwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQA7FyRe/36WDJi/2FU5cpnrV8dXpZUHEGzHRZ6vaZIP02S8EdlcDO39+amGmv7HrQbcLAh7tmPhpii7DylowyjvnjBFc8cJtn+ScbMQ34I0yokOvtFJvyfSBOlK5udIyFrDjdsfqr2BNx982X4dK0UYQfGCufppflZOfaqv4Y8A5lBTRXAlXPJBSZ/GMvFAN5mesGhnPD0nFNnpOHGfXG5DkNE3gBRYUyswIY2d7vdhCNiCH82fSW4mzPs/oMQaI3Hw8IiAgUwwpMqXBHs0Fxn8d4WxrpGj07r2WjIOVNk1JV1OHKvHfuVPS1roZ9pNNUkoKHf1h46f1nWczUM5jmVy0Xvvw+ZhvSelRwC7PQ74BUoPgbYzsNP0SvGOnhJQrhOYk3GSIf9EaQxklqVT8WREoCDNxfRmNYdCJzQXr/GZ/Eg1+6RPvYuQWgsB3SYgdVQz/pCRHCZvEjU8vUL2lwW4wgWlw+Q7OrXrpW1JOxl98zRRSpWxRrlE24crzTJ31hM7n8WFSsF1ZNnOoAhy0nRxdeOkpDcEVyoxauuPGHUCNIMmvvPG5psrO417HLJGHf3oLkKadSBK/Nn9u0YCCa9ypN6LRJ9slwxITAsKTrYttjEgNAisYVLojtHcCkAr5JfqL93rFYI9BYS2x/k2QGTlKM9LoUUpzaYDz16rddiaSQ==", - "kid": "YVpBYnLh1Hs=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSCO_FR_0001", - "notbefore": 1636498800000, - "notafter": 1699570800000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoeh3CrNm35gaheVMze+v7L5DLRvJ\nSyz2yimQlMPUwNJ95g/0wI7VdYnuZqALEnMFgf2MxB0y14PKwDTdmsFBzw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEHDCCAgSgAwIBAgIUJFYOxQLyE+KpwY0ONOh2K3kEyYwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwOTIzMDAwMFoXDTIzMTEwOTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASh6HcKs2bfmBqF5UzN76/svkMtG8lLLPbKKZCUw9TA0n3mD/TAjtV1ie5moAsScwWB/YzEHTLXg8rANN2awUHPo4HgMIHdMB0GA1UdDgQWBBSvVt3VTF438kOOMNhDVxezJ9kiDjAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAFtVxRCvoRCgLbiHwE/j8odxsgT3vt9isAZPtkfH0/Zd+iPdfsnPyXL2v/TKu47IBXm3kurH1UY4ovq0N2yJmOkSS5Z+zflBCOtaRY/R4q5HbK9XDe500OTARIl2w0SVQXQPaQ4sLuiW6KyZEi5rzc5L9Hylm5Gu5aYoozM/rRanoe5CgJ1gCBPkkwW9gDqKictz3g3+92gOBdMckylYV+WpUmgHyQRaBaEGJAicDsI8ZntEiBtEbckKNtz6O0ctYR+GxFj55b66n0BPXE3vqV+kT4gz6vOUFcZOdP4KVW0bdCPNAolE44yK2M0ktC9skVvBhxiZXDuZM9Zk/MAaSfq9uO5C52bhF+LYP9T2Lgp8Au65JE7if671AZ9qs17Nz9ZQg4ialE2k2L4CE4FEWkeuF1MhyGlSD8ripcluctPTB6Elvo3ffBPcgZnSwirswGlc26cFwHciUyPe1odNexgtzLFS8EGgkt8kPCXzrAtpuVD0YGg6dYMHNs1fLcDAyZNJbI/stsJ3yX2As6z+9JHzWAwiLCZtgFs6lWQ+7IyRperWftWOoT+3lwCK+ul2IMzmG7KadVFJ2Un0sAseM1LNKEzRaa4avqIZwAJkRUBN4us0l6sKzYeeZ24u4uNiYFKeWHV54McVxQBT9VNekxL5cvo7ap9p06nzfjiTYuV5", - "kid": "Yb1a+1WV/1Y=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSCO_FR_0002", - "notbefore": 1638313200000, - "notafter": 1701385200000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuFC53glgMbuEwfdH97ghieGzGlgx\nMInMhVzw4VX9NYrIuf/M6vnEofMFUuH6LIwSBQeT2ZpgonJ35a+vQllmrA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEHDCCAgSgAwIBAgIUBMl2JoBkz+RWi5SWbpnyalMO3VgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEzMDIzMDAwMFoXDTIzMTEzMDIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4ULneCWAxu4TB90f3uCGJ4bMaWDEwicyFXPDhVf01isi5/8zq+cSh8wVS4fosjBIFB5PZmmCicnflr69CWWaso4HgMIHdMB0GA1UdDgQWBBSDC2InnziqUQroYRTeKdlO3DLQvzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAA/VLMVc8tiJgpKRZAJ9kZIWVgjDcCJT166RSzuSfF92dQy6Z9F4GdFoh1Je76gY2f9fkQ6sYuJDO6FTzstUbKDI1qzGrfKFeFHpZziXSz1Oa+fZUAa9GjOdsIyLDjszoRBLGB0A9p43VK2cGI3GBb3bu0WMLBcPmxm2jG8WpIK+w5+xpoDkv7jjIwFVnVvepgvleB6vmFMqR7GinJMp6pejtEYSstc/0InPor4TZsjzPftXgzlioapgPYmGVTQSVer6zGITALQCBWYnUJFd5YXPD/I6jttwzV4b+3t0OXMPOitBRpLe7Uc3VCTff4ERj3O0EkyYkUwS8+5c/Y7RrM+UN53FaAodfBRW6yT4VZ+YJ4+Lzr5CHsVz1yaeYwLKlUtqRkLBvUBwZciyKhtRuWG5hKSKSE3Nby/4OViIOpUgR0pZEUoAbGTXWEuAFGem1RGsMtsSU4lluqPUCgQ6N1aTdcb5pQZ334kEYdPrd8sYusZgxEo7FrJ0V4gEiWtQRdZDKNNB/dHOquE7zqUCnZmCIiBQuxsK/Bpux382DqaR/4YktRXpY9EAnUeqA/+33gL4C3kUUJAgSWXCuGsxCN40DZlT3pI/xSBbIEx1JsZp4LHJLSbiLa0J9kGe/+2o8NvEbjuz8NGr+fi9zoE99vaUkz5eKt06npXdi5GPjRL0", - "kid": "ZsDoB5l3ETw=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_001", - "notbefore": 1623362400000, - "notafter": 1686434400000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjR\nkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEIDCCAgigAwIBAgIUbNtFh5SyNNW36Tj3lSGsVZ1yzJkwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjRkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCqOB4DCB3TAdBgNVHQ4EFgQUkqfVrNfmsMs1UB/NA0C3KVEx3O4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQAhOMLYhWn1iV43jduVRRivgVT1jYwHmouj7nff+S7gVnxiIlX52jc/VmQDl6xOZjBHUBiRTRqjan1tdH1LvBfg1HoZWv3HaC5HbfkMu0nqItE5zbFwtJGsUpHRTSP/wrjqL83o5akkR8Uw/iIYhkLvuEKH3/ZqwZYRwOJ/NyXJnKgRuHvgsL0zbwf5X2EdbqaTtDDGHHCbg68o8CqkQ/guBP0jKHXBFWgboMQB2bruquGqVO2xKIZIU2E3sc3dhNbDYGD3KfgJbdFtnbISvxaIfnCn3anZtQgonSsHc0LWIpgobY+NxXSNfBKzICdI350hhmnHz2NS2VtrF0Xa59kZd/WMPcOzlfKi6aVI/Y+LcpujeO9ujlFGNU6aMxi2s9RWy31tjWxsOmr/sbEKF25YGuTWwvqe/MgXzpbTF0C1lVcARXaBVT8Q18nNbLLK/VLAtzjLYTblFM4zdXA5ZnfCqXDqZZathkyyf8aY/svDELxROVm72F9GnYC/OqnGeCOed+Iscp8ne8HUTgT0iNFiAR1pRz25v047QFE7G7jwo4YTA+ynwCxnVaoK3pkyfIiXstyPxMpu3Q7t90br/mAPDCWDHFpvxqvPcRlMpd3p5JcjiurGreGbivgPdJYGRPbWb/Kwp/99ACqZFA8FaGL7aP+ivAO6cBv6DNF2XXvoww==", - "kid": "e+bFdywyJQE=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSCO_FR_BK01", - "notbefore": 1636498800000, - "notafter": 1699570800000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEw85KMUnYZdEdDYh5hyBfVFCJEUz4\nbhbItd92P5Mn3sXQMHRJ4gCSJlNHMDaehYzYHQQNun1trn9fyQ89jUVHVQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEHDCCAgSgAwIBAgIUIHkOe/e5NZZz8nE/r3Qh1delIC8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwOTIzMDAwMFoXDTIzMTEwOTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSX0JLMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATDzkoxSdhl0R0NiHmHIF9UUIkRTPhuFsi133Y/kyfexdAwdEniAJImU0cwNp6FjNgdBA26fW2uf1/JDz2NRUdVo4HgMIHdMB0GA1UdDgQWBBSo6rsZAC0hV0TGvuC8k6tflOShaTAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAHg8WLw8DxxxXFp6XXypXncQyGA4HFmZSMLJKPU01rmjqpLeR+5/gAbRj0OVhQYo0B3kHNUNlA24I2i6Zzx7zKjODdCWaKsZYfBeOttVVETMs+s0X7a2V/9P/uCj8tkYOOxCnKyv7TiWn1rfaHZxJS5Wqooy5IyerATOhueiL9ixorMAqWC5oaqactyL2psTuQWRjYBNtiNJgyjAXxUo7jITJWE+gGJkXwzBU9x1EcFnCoR5eiHHRdjQWiATLEgqcbWrYymgyj6D8o1QHXS2cOWlXxVpb4a1ghXFKRbN8yblgHSB2UE6ipBS/xqcbtycHpwy1Vpja9VG0WR/K4U10zqq0XHXHQl+RMPeKQcYI0qtPKH3yDBGM+rXNiaTnmRHASx5p1fYS//7SK22xIBto2qOO2HoIoNHkI6iYJFPk9g6JP2FBaH0PzaWaX4Qz5Z/TOZ4hfKEOv+0+ZOcIKvguT+DownHQjr2EjsOKB0l0npRtbk9HtRwh0TV1Rv88Fe/ea6rkKobRXBT+9EHKkWYGNgaMrbzNg4JqYOHywAivq/XmvTPwkVpdpplp7/sFYs18U08qL15r9lF5ztwzGYrgEobsdmOYcunVbIBVJ9G+miTc08ezKZga7Wr67l0L2FizmdbWepidnz1E26n49l5PXmkA6hCTjWmjwGd0X1MHlid", - "kid": "eOvGe2r9RbA=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_002", - "notbefore": 1623362400000, - "notafter": 1686434400000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g14\n4vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4g==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEIDCCAgigAwIBAgIUQporYv8Mt3ziR1r6G4s54HzRVpcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g144vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4qOB4DCB3TAdBgNVHQ4EFgQUxhlqVg/2EyJWoDdVGkyJrsY4CXkwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCbA+2eQnPJWMmh2eIH1gMJhggl5GSmOBFKeXyC4jeYQSDRY97/rsDWRXAYtE4DgZQO1cZcwsM4ybbZ+khmb0iCeO/0oiKIux8FU14B7zFksZFxZpbUSAJGD9lE1xRFnfUIyoPL3lza7lWqZ8lSfLuoqoN4mODkGpPYwWu/GC8sR3ynDt2jhrdBcLnos3k47+4ZRypwDnv9FRU4/9fEnl3Y4iK+hUtq83tI5offQETsXIq+VMmcw6zmeUTaMcHRnnMo4WknrSHbe9x1MOwQmADn7ZjYzMooI4TyM/dzo1IOH8iovgMbJP7zxWqp8zgtqZPpDtp500V9yCBjGCQWgRofrBhUojKj4BkGslCZaHHkRqp0A7WOIejCpCYwNRhom3Hu8oClJ0fGcIEIrdybYISYemClnbSlM+tXt9vATf7oMRZgXSGR/9HrY95naG5U7/+eHRgm3qHAJbbbTDHET7ba+Wiq9rnYScChSH/bMN2yLsuBcpVozokcX6k2l69KVzAsVtKCjPS/ISBWHDiEaVx++RyPB5YfbVX7ykJ4SaWX1ED6DLeszCdcLNb57i1Xu35kb1SGh+CUeALUEqBtJUcEheLixnTxJIHG2xq59a560SsZBdMf8r/qYTz9DqEgBXPSlNeHn5aIG/2u0bLrM3Q9GvBk4zBj3C4zWZJVUTZBNA==", - "kid": "eQOY6BDp+vM=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_022", - "notbefore": 1631656800000, - "notafter": 1694728800000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2HtKUYnSxJw/bgED+2LJQMAIjyA\n+I2plnVS50JCXaIALKstac37wB1lUvasfdvbE+nNbCvMkGPdMjLluMfT3g==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGzCCAgOgAwIBAgIUHHuaV60Jmxj0/Safb44HGezp2U8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxNDIyMDAwMFoXDTIzMDkxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMdh7SlGJ0sScP24BA/tiyUDACI8gPiNqZZ1UudCQl2iACyrLWnN+8AdZVL2rH3b2xPpzWwrzJBj3TIy5bjH096jgeAwgd0wHQYDVR0OBBYEFG+4PXS0sdtKNozOKQXcYVDA1Hn1MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAkjEVtzPSxFVMTUece3w7PeM4Q2fOn+MnaN60g6AusxnUUZGHErNnmjxVeU6isLYPB9gCHB3b2yZYXHh8IjMsf570yiDhsWBzwRjQc8a6uQoZSrCXFyVuvAGZ/hXWDf9AIKQrbrg/YlsN0qnhs7x3VsGZ62XHCQCBup2wMdW4VOa76YFgskKITmVB8RNE/r7sQn9tRmGW7RFC2f78v7vm8rshqB/6LFtwRe8kcBmRSw5l9pVMKHYLPW81NaEYN1BB3BNH+BH39rg89FPuuLMcO70Ow+1g7ebD+UH4VbgfhSrx9XKP5+FtQWTsatHdVg6vYYNPa9TR9/9e4Q3j3BAfnIdmhsT4DuRy9P+En9WZmg4NNFUVr8adlSKkiZOoJKSQh9TOavF4Ikvd/BD0S1UdjprApN3XauDRqvjKn4itsLc0m0ctUE5e234CLMbdNJM6ExPG+ukAdtK5V9FXwdyvl0+xVIBY9nI43z50KO5ZeyOWnqwRWCPqZ11FLuqFvoEpQPpx3d2Nc/IlQoalLWXtZYPOiEklhqAC7p1Qa+AG2RgsTxyIaMzCANjCDIFMBzcO6EbnHDPR9L5Xy4wqiLeQ06zeU0YR2WF+9DVMDR5j5lUR5QWFCDTK/B8ObjdsZl/Y9Qd7RoQT9wbtAa1+MpCXk7TnoRGG1HSdhi/yee661P0=", - "kid": "eUVY16rD2Kc=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_019", - "notbefore": 1623708000000, - "notafter": 1686780000000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEImIFaugzwB5f/VyfQ3KTfTSoukwA\nPVSgHZWrtrc2j4FuAUpw/ObRnA9pBjN/HdUc1zcl9SO/vsCEnHkXhxjz4Q==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGzCCAgOgAwIBAgIUNWO7+/2lmGQGT1cep5petfsOFocwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAxOTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCJiBWroM8AeX/1cn0Nyk300qLpMAD1UoB2Vq7a3No+BbgFKcPzm0ZwPaQYzfx3VHNc3JfUjv77AhJx5F4cY8+GjgeAwgd0wHQYDVR0OBBYEFF6mKwOiAheaIxTCkdVKd8zgd7urMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAu8BaLZXFj9/e2/a59mBrOhY2m5SpcAoayxF3zOkIOt7LNX0QqHuomOyGLHMnAhNALgS2vhDXD0hhs96ZcKaystlMePpYsVRyaYa53GwMrGHiLwFxH5qQNClCcktAP++wCcdQXzTyZOn9/GNdmquW1PNMLPCEfqlnzWawdpITr+CYMXa9R5BEMmdX19F41HcoPRn9/X2uHW/ONmBywTwJ3s0U8F5HF21buZtxVDvX4ey+qINBru4MiGwgRCsklS9kDbl3ODUox0lwhs2VgQzqjALF4xYgsdN2LJezrwAiL8GMRAenmX9eDdgzMGnjKFT6yW8BCrPsyUnM15RAou3BrwIp6oxXHnR8wbeKG7pzZZY1J4zk4yYyihwxguWbUZGksJsNAQoNdNHBZtc8a7Oj5onLyUIetd7ELXxdk8uy7WVFeye5V8qJRhWrFyhWWFscQeY8GktefXiGEh6fxGfRU5R5b0PznxfMiA3olad3s17dr+jzqCM/hcY2FmUTjYrSrAyrhHdmCYIJ3US71If74UeMs6NZnQRRiu3tbAX+TiDOHsEHEIOHldbyQqFfclyiC26fHTqcNfIAxXPmPDQ1jpEmhRjFDlOWHoSnzsGZi/wa1kmSb6+2uHgUP/C/O2oi+yAk8GpwpEi8Sgv+HH/p7z0ympQK8IUOG/4K3/urdto=", - "kid": "fGLuvg6n5wk=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSCO_FR_0005", - "notbefore": 1643756400000, - "notafter": 1706828400000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuJH/fgV1ST2egWe4mJXWL6e5pu33\nF08BzsYkDCiHKFIGtXj9LuOm+d6xiBreJ7NPzGxQP1Pt/UzRAnDsjmsAgA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEHDCCAgSgAwIBAgIUcnYrQMFgK1Fy648tt2Nq9kP7j7swDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIwMTIzMDAwMFoXDTI0MDIwMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4kf9+BXVJPZ6BZ7iYldYvp7mm7fcXTwHOxiQMKIcoUga1eP0u46b53rGIGt4ns0/MbFA/U+39TNECcOyOawCAo4HgMIHdMB0GA1UdDgQWBBSw76s2nUSROAzjhc98PGBEguhsMzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIlg9HMtb7I0/zvhB/XZMHBDqRQ6cDUvT/NeVfavcNqpJ6ZAxA9iIRTObsjkryqLfCAVzclXHUydiuX9K+KhjYVIKJQqU5Bng+GJOyXUYIy1RqKGVdKxDpMFPNQwzXVAQTjDvlQAJTQLtWyJnZ2Z3TNUOJXfO+9Su2MEr1InFHSAhgh+sx+R9uFMGcyRdho6VlxbyMlNPfi+UsT1+9L00m62kKXekd5Pm6tkj1PgRDnbAfTKowJMDxGgCOTvf6+atNwdYhO1egGREWVv8jPmH+WufBLw3602wzbQN/DJ7KEphVcz9vmeVt7r9TWMTmaqObgR1DIPyQHOssWhfA9n078dRYEUtJylDk8QWBydS3VTzcLBgJA8yroEZmQ3Y9nozweLrYaq5mnmUd1ZQ8HAdQuasjYJpZJSOmBuJIVA/oyGNAjJ6JJQFLKTnkRI0w+lH2nBDx7/ldEKXfWvqUqjAH9cN8P9nphBQ8ZY3C/w4F2R2naCf/WY1xpGSky0g2XZpBBPjluGKx1D+s80onWTZnQFgYT8RIaJnxEN4hgEG+/pvPH/QUfEnc4nek1nnXK6/l5n7AUeGg920H46+MTFNax8qlxSBvbktGckpmTIPW0wmr8SyJd9pD9W5OPhupo/JPfTK/hMKN/2jlWR4qKmuxEOiZkOCnOe2OjC4pH0JZgv", - "kid": "j95whXY9F8Y=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_012", - "notbefore": 1623362400000, - "notafter": 1686434400000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQ\nWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5lQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGjCCAgKgAwIBAgIUdhAMHzJmtfI9KC2HeZuteJ8+o3kwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5laOB4DCB3TAdBgNVHQ4EFgQUowemG/S5PIzFStnYia0U6RWU2Z8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBlqQgxVgPA/EwOPMNUY4OJm4vGvxNYc3LU6R5/5q7hRwa04yTuQOwyRzTcMgJ211G79lsFwiprgzN0kixDYRrwa1NflFQS7Ygi64qGa1KZqDziB1SqDYiHXXCkkTTe4H/vkpZkH5U/+8jVUYI73q7MYIskxgHc1OZV1oKMWilU8rSdWzDQHH6WRk2BUuTORIsGpT0U8eBQQUaNhY8V0GDkKLwrqIWEbKC6ylLa0pGNYM8QMHAvV1SurqdwohC4/6ToNzypyYNctOJUTcgCyDpKdfQ+xWRdFDqje3XUdIRByEHAb7o9/F6H9NJoN0gyVF6YyGAYLD6zBfYhpnPXNxDCa7QltXogVi1gJFglsAVrQabTMXsA4/1+IOrdqMv0Ale/jy+0gEWZOHzUquSQTpxVz+Gj2j9ZXLJPzRSHg7O+LjxNON3mz/jl7cL7wjwbKqnMpYBALvedavnDetISU46qo2QwPO3qAwWF+3/17Mcb2a7IkhlHVKxNgGOEpVAZOQE8ritoVZV+B6xbpnNY2J68vZFqYy/BnkgJ+aL/9Uq0AqA+1Ivsjd2P+Clk5qpm0ZnQ8+CzaEiNENBRNE7aDFohgkezqET1gilIkvGoqDiahw/3hbr1BF848++6+ES20vUSxK2Uga4JQ0MGaKaKJyyAwwYO1MJITQosvt1JwtgiwQ==", - "kid": "lrxgMs2Duac=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_021", - "notbefore": 1628978400000, - "notafter": 1692050400000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1PApTQ/nFA6JcYUuo7GgP+gPSKf9\n8BQh88IKHOt/yNS8ZrjxjL+lVY6EH4yyQdbQZGqS9d2Se5dxNwx5C3jxkA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGzCCAgOgAwIBAgIUPUAmrN9wBn+eVuHqMp8b/blfPPMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxNDIyMDAwMFoXDTIzMDgxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNTwKU0P5xQOiXGFLqOxoD/oD0in/fAUIfPCChzrf8jUvGa48Yy/pVWOhB+MskHW0GRqkvXdknuXcTcMeQt48ZCjgeAwgd0wHQYDVR0OBBYEFIRbucEIacei+qS6DFsuclGQo2o7MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAhYhTafMjVKmyAFJhTx703KE211fPRx3YlWid6JeUNDIuYTQfIC0yPlvtaFM4Z9TVioHcTwweEfqNi10sGVNbWmWAk1RZhay01VCzzsCVscNmi2/7n+qAIHZWgLyAOjJZ2jVDidC8MWGQjb/qdpu1zh46AIiVmfUfhyvBfXP7dQKgx+nPrV+HhxwuaVGci/KccFIHoOu0rttjuUfg2HCQCr4CjLKZ+RHXny6zjfD3R9T1scndEkJot2L/f0lIIZez+oTx/Wo8ivNoy9C9T3py6as2AChlz1rXSNPsdJZ9M2pcCk8z1I8fAspOu+uEevXPig20cxBz1kJzHrAmvYPTB9JTwZHqek2wriAQ/7Oy92hWxr/6tnkdPC5aKUz0nEYBvJWWq3qO4O1GBXCBt8VdXklgPHvZCym2Yc1XKMdhtMVNpOOOZV6SoSTjoi6R3Eu2VSMQCd8RKYc7DjLss0FF6y5qYjBqmizjV5MKTxtxKFA62QUF0jI/9DypU1Pk3Vias9RpFkLiHE3UcVdGMbTvAc4hwH/bkOtg0W7lqnGsJTWdc8MbnZ3blVtrXylveHA/IXgERhyI3J0YCg3pWjJbEwnEqltUa0n93o0S6sDv78lt1uKAMre1+JUQ0lNNHldtljV6dvcQ7R+ebs3GEZUyDI20fmhIcNZCtmOehZm5fyM=", - "kid": "mo/w8S8rZ0Q=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = CNAM OU = 180035024 CN = DSC_FR_028", - "notbefore": 1644879600000, - "notafter": 1707951600000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDFL/JfC54w5DhacEkzUU1ni7QALe\ne86PYN+pLto0V+CXCRch9j54eDQagr/xGcyP3UBThBUnpqtEG/CtBHvExg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGzCCAgOgAwIBAgIUPtrkrg2WkDHMSTavB6nBxxSKE2kwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIxNDIzMDAwMFoXDTI0MDIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyODBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAxS/yXwueMOQ4WnBJM1FNZ4u0AC3nvOj2DfqS7aNFfglwkXIfY+eHg0GoK/8RnMj91AU4QVJ6arRBvwrQR7xMajgeAwgd0wHQYDVR0OBBYEFEK7//liPw35XcS3wODcluwZM1CNMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAdxpY/iCo8yx9FLLRjfApnDHj6yQJ9yTEtGNRCVcPoUtFQyM3fv1Ep9oRUpTcHYD2Kt857fLENbV+C8lwAYjl+QpFViyGXSDLdyLHN6ua/qQXiKG29bT9nmRZIn3QWUrpagVcPySSpztw7d0/sfAFi05VmuQZ2UUTEhsKiR/+eoM2JOPM/m27xwsKo4g4ffSDEOqb4VCGwtKTBrKg64MHcXC0zWsaouFZNeZEOUOyXCsSjDc0zvvYj4llgC5bafbivgSRLGjO1M21vhQHr2FZDh1lokIbIo/PHGDunxVe6rbnIZMMrrhLzgBwUQP1Ihco1AG6NPFwKAxDEyt/dVPxIu5xDUjDujk2L+yf7c3tcMCXjktS8QG0y46FftIKY4ZTzPE67iWYDtRszqX6eNzkUhANjDs6nQJiSKbQLgQn/kalj/qZDZC9u/Xfpv5LDlhVZraDJ6vOXFMko9PlpOHWelN/UQL0yp4XIKfZNBZPq9lzZP6beujHyz6dMdDczXy9Xo+PZ3rNtci9UYCrpdhljifQaj5Q76cPXpJUCXFsM9JyQ4uXuGA0Q+gCzED87eOjEsKd+NFQQGpMqdEUdzZnc7veoyqOwUiwSGXaWDaWISPNNnKBQ4sAUtLIlQAYiQ/hxQtZu6DBgW2c4I3ecryp/PpJB1+m1Hvzf5TNJgHEeag=", - "kid": "oGix7vDtlq4=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_003", - "notbefore": 1631311200000, - "notafter": 1694383200000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5Pw\nahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEIDCCAgigAwIBAgIUaaZNZoiS7up4kcKvogrzW8iwXbIwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5PwahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzKOB4DCB3TAdBgNVHQ4EFgQUPQQuG8z6nMfreGSJOz8MdoIMvFYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCe8I1wV8foZkHBp6MM5QbHFNut+gQ45nTjZEOVF2wzAZz4xa48Knhl9K6JdeBQhedQBzx3jKWEpl9A4ycPbwCwS7+HlpDzC23ZaesAGPhR+VAEyYMUEH8ONbsjKIA+rg/4OIJ5byPYxnZkdrSNH+NQzEn8Pb5ZAW8DQXeJgJ/x3Wg+Ogd0iM8yNd1sMMQiO20C4eBRaOtJZnr8W3xLRYaD5sxVHSWRkkCVELQXAVcugmiL6u9MR4KgxV5qWqi66GqHI4zfbe1H+EQ67bnH17YZ+ye0r+FRi7aacXy7Xtk08zQCqhDFaZDr2H7wTj5NJIuSnZc83gAyV+C4QxrkYIbVqPVJ+bea2RGvXYrcyH9LrZdPDJqylcKOoRpvSJoCoyJ40zu4B1tiludT2HdTwN5wjVLmAvJfPT+ZKnVXOgwabm/95Xs/Y8fOcfaRzH44p4j3e65uZ4U1n/gUnya9iaiNpBqYq0c8czOquRm1CJVf/shRkqmQTw7p8BaMygYs2VrS521LbiEeZALpG+sdoVUQfMRN8Ii2+RrJVu+AWUdz93+u98TRDodTRKfCIJq4/rDo9yepiKSgUjaxvvgDszQLcqHBFzHB9Y/Gv+l8YQzIKK9ZxFVEjEDX++heFPYC7C+LQToZcn9CKZAC6M3D7rRBEZ1ibMpVyEW4YXu9tu8RfA==", - "kid": "pe6raiG2dWE=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSC_FR_23", - "notbefore": 1637708400000, - "notafter": 1700780400000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2U0nHQxTR9PPb0QwY+YS7qJs9XDN\n5a9fc+lCqTltrFE5D8kEZMRFY+qNhMbo5JY4VU473btztC0zWP52tgFH+g==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGTCCAgGgAwIBAgIUKCG1aBTkAAn0E/gVD+HRZXrMgBYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEyMzIzMDAwMFoXDTIzMTEyMzIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATZTScdDFNH089vRDBj5hLuomz1cM3lr19z6UKpOW2sUTkPyQRkxEVj6o2ExujkljhVTjvdu3O0LTNY/na2AUf6o4HgMIHdMB0GA1UdDgQWBBQHXz8rvdiW65BcQaIdyRy4gzUNXzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAImn8pvfl1UnkNvTynXjRrI00kIdbn9RsUe8lKMyyOhhfV1Sia2on+Gd5AFk+IMyunMFLBcl18H9BHHfuPMVR2BleZ9u0kSboF6uYennSwqVcpmGwJSnzl/P8jq3gDz1iAXpIQoc+PtHyc0c0BJ0/TrfEx4bBoMXwRz3N3r+zaa67zntv144zbBTInrDQC62ZCO/QIjP3o9rtZnI60YscEWL8ul8TDHQWiMU5hZ+X5hpb+vkMSi+c7bSiIcMFSd9CNnaJIJ1AC1FCH62hT9edCY+EFwS5I3+s1uMW2N+upDCS8aegXYcpVqnLdvwDA3sgnPwn2cOsPuLltHA//OKIF3cOFnMPIKnn3/zM5LilxWZYxy7Lg0uwfoOMV3SnWvxv9aj4wQOxljwiorL/qw71uQHSaAEphKS5MZVS2v2nV4Pj2KG/eOd9axsTy8GvOx8DbNdGxYDnzu1zH8mkWnQZ1TX6gskoJc5U8NTcHseUTj2oUYzLLe3hgawK3gvmiugHCotj1xCJa2+qlBg2ubFYPAiK26FhW94i9b6vRuNbhc7OvRoQahdKoOvPSO/SuTvfSxxGI1XYw76ZZxwx7P5z4hb0StCjeCqTuAhWJMafHzc4jNHWnb11ggF9+9krByzdgNj2dWJqWjg1MSN+/9CjiB961SvvmERhAsXOduh/rDl", - "kid": "qrdfSzqcjRc=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = APHP OU = 26750045200011 CN = DSC_FR_004", - "notbefore": 1631311200000, - "notafter": 1694383200000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+\n1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEIDCCAgigAwIBAgIUIxJMjNw3dr88EcIE+hNISSiImkwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMKOB4DCB3TAdBgNVHQ4EFgQUW8d5IrarC3lBI/Bj5O53KmwrwI0wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCalwjJDDOjgInZboNfXmrdZjrxA7i65O84bWW1rnOSGZwBpdMcdKrNDiizyjklB6tSKuLH0fllMPUCMd2Umz9zTTKJG1usxQ5Yaf9BBW+g8Pwgn/mNRprogPK/VXFdLCOCmxr1/y1FEPgnecD3oBFhm4ojZywwWVrcUoPnRvqIfJLEvzvYais7y9PqkaFqW0TNyvaRq9tBYyFkvZUQuizKK10nmIXLzg6JYnSXR6awtRcZJs1eF53UQynv0dQmVZbMl/JM01y+sard38byiKzQc+v/ANI24zLHWw9iJm2/jlFTch8S2eazMEAe8EvpMqzzSOcIrmgrL/r9CQo00cFFkCGCIZWnHhHEKv+uuEPVilSJC7ijM8p5npt1PwqCCB4HWcdZEY1oCu3zjjOIIRIySZmKoailNEV4iZeAw0D++wkR1+OyywIebkaRVWKk/irrToYuvQYiTDlh1yIh7mmrL0/lULdONjsawOh/s0/vxKSyD+gkMVRzxBax7BhT3DLzj2L7E/Tw5DNL87k7zmlxcHGW8Oa6sIJwKRsTg/76frIf21u99FhfqeWkhfhZ5yTzGiJR6FquZ/tTrlq216MqICXO4QN8/p8OrP9foTS2+3FvWRWxk0pBEVZget0CtMP3PpZ+IC7gwp3wALhWtZwwY/64FUl9ZLZqId8RtbQBEQ==", - "kid": "rLMiGt6uB3U=" - }, - { - "issuer": "C = FR O = Gouv CN = CSCA-FRANCE", - "subject": "C = FR O = DGS OU = 120036017 CN = DSCO_FR_0006", - "notbefore": 1645570800000, - "notafter": 1708642800000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0uciJTqR/3fxFNZ9yeUUoPYUx38Q\n8OH1jFEsJqJvfN6jrx+s8h12VqrUGv/8oBY+dECMhySMeviq8Yg6kT4r2A==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEHDCCAgSgAwIBAgIUdp9CXnOFuqVuiiT7jg9FodyeACYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIyMjIzMDAwMFoXDTI0MDIyMjIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATS5yIlOpH/d/EU1n3J5RSg9hTHfxDw4fWMUSwmom983qOvH6zyHXZWqtQa//ygFj50QIyHJIx6+KrxiDqRPivYo4HgMIHdMB0GA1UdDgQWBBToe/OectWamtD2LONpMXn0znvh7jAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBABcKi+7I0gwOKKEb8WCP+E7NTzP4Ts0L3F+bGNdeFASZhcQQAMFwtPoJOfSsO8I/9p2uXHMjawyVXlWEanb5oHWLfafCrQmROIQQQBHfuHlD0N+YdHFe1W1ItvzDeouUMUndfuBEd0q7KcdmNnoH9EnPdEt/vqLU8Pj1PKD4lI7TAL84jyxYUQKGzj/D6dKsawa85Xk6+jEucHVJ9lphPFyXatPRHf1bebu84ybCwOjuY9V96+ltzFQowlkaQO6sYw22btDlsjldpwgLBV6jhZVkWNz8rWR3Um+lX6idz4BjHnk8GQt0HKEwQdgJbrMiAykkemSghxB4XYPn6iN0nlgmTOGPJTODgOJxsvdLyX3+5gIX3OOp+3rFUvH/1LKlYGis7OSeMxDQerOAV+5TaYjHKeGZhLkJpgRym1pofypRa2gX1dVL2Un9cn9tOBmsuhl7MAM1gHbeBLlw5nBW5K49vfAZhMsqQ5X1PvyFzHVPmnhQlD/syAKzuSUABona+oUl0zkv3XxoxWZx4QZXiWR3gCfCio58P1DEBf0Y4lehMuNJ7b1sla6NXRSY97w1Usg/biDxJR5BbkbTU/00Q9zICVgtAYlV2CguUr16PG+o3kpxRjkjvg+Fo9WG9dtOTycZPNcWEAscdzpzLzmtU6iXQEkIEyIpvfWSwTAjC3iE", - "kid": "uy59WoRKBUg=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = IBSALUT-CVD-SELLO serialName = Q0719003F OU = SELLO ELECTRONICO 2.5.4.97 = VATES-Q0719003F O = SERVICIO DE SALUD DE LAS ISLAS BALEARES C = ES", - "notbefore": 1621857600000, - "notafter": 1684929600000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbxlQ/UTz0AxZWF+xQs+w+xveq5Ec\nhe9zf16LnDFYY/K8pZ6l6sb2KlXw8Z/kwopzzbv5LCX1VxLsGO9Rs9OzLg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "/IcqIBnnZzc=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = Servicio Extremeño de Salud serialName = Q0600413I OU = SELLO ELECTRONICO OU = SSII 2.5.4.97 = VATES-Q0600413I O = Servicio Extremeño de Salud C = ES", - "notbefore": 1622097780000, - "notafter": 1685169780000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEManlPIcO9J8UBpHCAbku/KkAfiBr\nGLIre1buTIzhhoncL0YIO+DQ9uPs6UfzPKXzQq791V5I5avhmpQ6j2zFsQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "3IsdmTYkAAM=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = GERENCIA REGIONAL DE SALUD CASTILLA Y LEÓN (SACYL) serialName = Q4700608E OU = SELLO ELECTRONICO OU = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON 2.5.4.97 = VATES- Q4700608E O = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON C = ES", - "notbefore": 1619789400000, - "notafter": 1682861400000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1Tqtnz\nC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIHXDCCBwKgAwIBAgIJDDdEkclPCGsoMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNDMwMTMzMDAwWhcNMjMwNDMwMTMzMDAwWjCCAQYxPDA6BgNVBAMMM0dFUkVOQ0lBIFJFR0lPTkFMIERFIFNBTFVEIENBU1RJTExBIFkgTEXDk04gKFNBQ1lMKTESMBAGA1UEBRMJUTQ3MDA2MDhFMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzE2MDQGA1UECwwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRkwFwYDVQRhDBBWQVRFUy0gUTQ3MDA2MDhFMTYwNAYDVQQKDC1HRVJFTkNJQSBSRUdJT05BTCBERSBTQUxVRCBERSBDQVNUSUxMQSBZIExFT04xCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1TqtnzC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfKOCBKowggSmMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBmgYDVR0RBIGSMIGPpIGMMIGJMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE8MDoGCWCFVAEDBQYCAgwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRgwFgYJYIVUAQMFBgIDDAlRNDcwMDYwOEUwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBR0F5hsHIJ6Y7MLOV4IRJYpbxoKgDAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDSAAwRQIhANiNJAq66hiD/nftp0jcuZQJtkHq0LiGFxpWmKCnCClcAiAVLvoNwAKGUOPPJ88g/UPTytviavcuFfaN9F5Iw0fVhg==", - "kid": "4Qmniw7B0gc=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = Gobierno de La Rioja serialName = S2633001I OU = SELLO ELECTRONICO OU = DIRECCIÓN GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS 2.5.4.97 = VATES-S2633001I O = DIRECCION GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS C = ES", - "notbefore": 1621587300000, - "notafter": 1684659300000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqF22rG5bDXpWn/tKy358h2KwYyaS\nKzCZV0HJptUQq7sWxfeDE86HSoebBrpOvpjhZX2/ZkTF/YRlkh0ztnkclw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIHVjCCBv2gAwIBAgIJSC0ZeCXmMXCnMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTIxMDg1NTAwWhcNMjMwNTIxMDg1NTAwWjCB+TEdMBsGA1UEAwwUR29iaWVybm8gZGUgTGEgUmlvamExEjAQBgNVBAUTCVMyNjMzMDAxSTEaMBgGA1UECwwRU0VMTE8gRUxFQ1RST05JQ08xQDA+BgNVBAsMN0RJUkVDQ0nDk04gR0VORVJBTCBERSBTQUxVRCBQVUJMSUNBLCBDT05TVU1PIFkgQ1VJREFET1MxGDAWBgNVBGEMD1ZBVEVTLVMyNjMzMDAxSTE/MD0GA1UECgw2RElSRUNDSU9OIEdFTkVSQUwgREUgU0FMVUQgUFVCTElDQSwgQ09OU1VNTyBZIENVSURBRE9TMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKhdtqxuWw16Vp/7Sst+fIdisGMmkiswmVdByabVEKu7FsX3gxPOh0qHmwa6Tr6Y4WV9v2ZExf2EZZIdM7Z5HJejggSzMIIErzAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgaMGA1UdEQSBmzCBmKSBlTCBkjEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xRTBDBglghVQBAwUGAgIMNkRJUkVDQ0lPTiBHRU5FUkFMIERFIFNBTFVEIFBVQkxJQ0EsIENPTlNVTU8gWSBDVUlEQURPUzEYMBYGCWCFVAEDBQYCAwwJUzI2MzMwMDFJMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQU7oukZ17hZNqgXn+9zb1nFVmNAdYwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0cAMEQCIFAVrmKucmULegrWgBKqAHeiiJ6VmRGXBVo5LrvtuXwnAiB0+buKOXmu4gpE5vu2Du0seQ5DdaCsLOS99ZTz6Ea0yw==", - "kid": "6ag2wJkSHtk=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = Secretaría General del Servicio Canario de la Salud serialName = Q8555011I OU = SELLO ELECTRONICO OU = Secretaría General del Servicio Canario de la Salud 2.5.4.97 = VATES-Q8555011I O = Servicio Canario de la Salud C = ES", - "notbefore": 1619788200000, - "notafter": 1682860200000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEblis8RR4Oc4Xqq4RZdhrJ0DnkAvK\n4vY8AamWbFg9T7OG17La8TJYTq3FqJJd5KttTP71GojxRF0REKpF+uwAtw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIHPDCCBuKgAwIBAgIJOckozpBul66ZMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNDMwMTMxMDAwWhcNMjMwNDMwMTMxMDAwWjCB/DE9MDsGA1UEAww0U2VjcmV0YXLDrWEgR2VuZXJhbCBkZWwgU2VydmljaW8gQ2FuYXJpbyBkZSBsYSBTYWx1ZDESMBAGA1UEBRMJUTg1NTUwMTFJMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzE9MDsGA1UECww0U2VjcmV0YXLDrWEgR2VuZXJhbCBkZWwgU2VydmljaW8gQ2FuYXJpbyBkZSBsYSBTYWx1ZDEYMBYGA1UEYQwPVkFURVMtUTg1NTUwMTFJMSUwIwYDVQQKDBxTZXJ2aWNpbyBDYW5hcmlvIGRlIGxhIFNhbHVkMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABG5YrPEUeDnOF6quEWXYaydA55ALyuL2PAGplmxYPU+zhtey2vEyWE6txaiSXeSrbUz+9RqI8URdERCqRfrsALejggSVMIIEkTAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgYUGA1UdEQR+MHykejB4MS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzErMCkGCWCFVAEDBQYCAgwcU2VydmljaW8gQ2FuYXJpbyBkZSBsYSBTYWx1ZDEYMBYGCWCFVAEDBQYCAwwJUTg1NTUwMTFJMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQUzwtpIOM3wCvgU6irkvmMsLyXia4wDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0gAMEUCIA5gJ2zPavFpTkqPhm3H6eC0Y5aWg3lJgT6WGwWZCAPDAiEAl4gyCg4ykOVVLw0mwba8IleqvqLof2Z439RPIL22Zls=", - "kid": "ARrNkCRtprY=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = SELLO ELECTRONICO DE LA CIUDAD AUTÓNOMA DE MELILLA serialName = S7900010E OU = SELLO ELECTRONICO OU = DIRECCIÓN GENERAL DE LA SOCIEDAD DE LA INFORMACIÓN 2.5.4.97 = VATES-S7900010E O = CIUDAD AUTÓNOMA DE MELILLA C = ES", - "notbefore": 1622213100000, - "notafter": 1685285100000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEe1XUTCn6DkdbSOKlyzczFWQfDvtP\n31uGdjzVCzAkuxorNeEX3F827gnycL/mTzRm8lfDxz64lEUcTww0I7unwA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "BEnvMVnNFK8=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = SELLO SAS PARA CERTIFICADO COVID DE LA UE serialName = Q9150013B OU = SELLO ELECTRONICO OU = SERVICIO ANDALUZ DE SALUD 2.5.4.97 = VATES-Q9150013B O = SERVICIO ANDALUZ DE SALUD C = ES", - "notbefore": 1621599300000, - "notafter": 1684671300000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt3OX+XF/LZlHff6ZWiHRqQu4WBrg\nzNZYz4wFJkwkBmk/z0ROsLJ4FlwOLPs2cUEIIV0Pu1cmnngva6+EzQpbAA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "GMFMBu1RlCg=" - }, - { - "issuer": "C = ES O = IZENPE S.A. OU = Peer CN = iCA Izenpe", - "subject": "C = ES O = EUSKO JAURLARITZA - GOBIERNO VASCO OU = SELLO ELECTRONICO 2.5.4.97 = VATES-S4833001C CN = DIRECCIÓN DE SALUD PÚBLICA Y ADICCIONES", - "notbefore": 1622208492000, - "notafter": 1716902892000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8PO\npQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1Q==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEEjCCA7mgAwIBAgIQA8IozyvkMlFgsO/sU+TnrzAKBggqhkjOPQQDAjBHMQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xDTALBgNVBAsMBFBlZXIxEzARBgNVBAMMCmlDQSBJemVucGUwHhcNMjEwNTI4MTMyODEyWhcNMjQwNTI4MTMyODEyWjCBpDELMAkGA1UEBhMCRVMxKzApBgNVBAoMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08xGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMRgwFgYDVQRhDA9WQVRFUy1TNDgzMzAwMUMxMjAwBgNVBAMMKURJUkVDQ0nDk04gREUgU0FMVUQgUMOaQkxJQ0EgWSBBRElDQ0lPTkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8POpQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1aOCAicwggIjMFoGA1UdEQRTMFGkTzBNMRgwFgYJKwYBBAHzOQAGDAlTNDgzMzAwMUMxMTAvBgkrBgEEAfM5AAUMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08wDgYDVR0PAQH/BAQDAgXgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQWBBRJ5qXgwbq6JnfYaHEo99QEkecqADAfBgNVHSMEGDAWgBRzFw8OFM+MtdUG96YEM8MZfTG+7TCCAR8GA1UdIASCARYwggESMIIBDgYKKwYBBAHzOYFIATCB/zAlBggrBgEFBQcCARYZaHR0cDovL3d3dy5pemVucGUuZXVzL2NwczCB1QYIKwYBBQUHAgIwgcgMgcVLb250c3VsdGEgd3d3Lml6ZW5wZS5ldXMtZW4gYmFsZGludHphayBldGEga29uZGl6aW9hayB6aXVydGFnaXJpYW4gZmlkYXR1IGVkbyBlcmFiaWxpIGF1cnJldGlrIC0gQ29uc3VsdGUgZW4gd3d3Lml6ZW5wZS5ldXMgbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGFudGVzIGRlIHV0aWxpemFyIG8gY29uZmlhciBlbiBlbCBjZXJ0aWZpY2FkbzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsZGVzLml6ZW5wZS5jb20vY2dpLWJpbi9jcmxiY2l6ZW5wZTAKBggqhkjOPQQDAgNHADBEAiBtHbVrpnsLMptmRI5QL4JhOG86pqSBVQXiOUMsIkpcPgIgY/npsrzRMcUHAh7NwvqhnbgWvv1VwbRy3bxD6+o3RGw=", - "kid": "GuQPQRxbMsU=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = Servicio Cántabro de Salud serialName = Q3900738J OU = SELLO ELECTRONICO 2.5.4.97 = VATES-Q3900738J O = Servicio Cántabro de Salud C = ES", - "notbefore": 1622120280000, - "notafter": 1685192280000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEj/wPWM6e8JDYxW9673ivEvwlu2JA\nZpsNBrr2sQW5ppku6rcqJUKx7Kbvf2Zx1AJeIS7+PQq2iNcugfD+RC/VfQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "IaGR283U1jA=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = SESCAM Certificado Digital COVID UE serialName = Q4500146H OU = SELLO ELECTRONICO 2.5.4.97 = VATES- Q4500146H O = Servicio de Salud de Castilla-La Mancha C = ES", - "notbefore": 1621946400000, - "notafter": 1685018400000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDvCuOC6NlQCaL18+CEn4sbjC3NNn\nN4jBAmZo6lrGXbjIfAQ3YWmXc3gqLnSFq84EEV6+2PFy9yyLgq4JmFAfDA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "JHd4CkNzadI=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = Inspección General de Sanidad de la Defensa serialName = S2830001J OU = SELLO ELECTRONICO OU = Inspección General de Sanidad de la Defensa 2.5.4.97 = VATES-S2830001J O = Ministerio de Defensa C = ES", - "notbefore": 1622115540000, - "notafter": 1685187540000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE62orr7HL0POyQCqmgbbEqfcbcdcT\n4vyfQZEPYfxk69ZRv9T8Iy6nWAyEjF0VxvknfCg/x9uig5HFWrpedW2Epw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIHHTCCBsOgAwIBAgIJJDxrMWsTHmc+MAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI3MTEzOTAwWhcNMjMwNTI3MTEzOTAwWjCB5TE1MDMGA1UEAwwsSW5zcGVjY2nDs24gR2VuZXJhbCBkZSBTYW5pZGFkIGRlIGxhIERlZmVuc2ExEjAQBgNVBAUTCVMyODMwMDAxSjEaMBgGA1UECwwRU0VMTE8gRUxFQ1RST05JQ08xNTAzBgNVBAsMLEluc3BlY2Npw7NuIEdlbmVyYWwgZGUgU2FuaWRhZCBkZSBsYSBEZWZlbnNhMRgwFgYDVQRhDA9WQVRFUy1TMjgzMDAwMUoxHjAcBgNVBAoMFU1pbmlzdGVyaW8gZGUgRGVmZW5zYTELMAkGA1UEBhMCRVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATraiuvscvQ87JAKqaBtsSp9xtx1xPi/J9BkQ9h/GTr1lG/1PwjLqdYDISMXRXG+Sd8KD/H26KDkcVaul51bYSno4IEjTCCBIkwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBTTTGw6vTb+cIcjhzruPZDPy5v3ITB5BggrBgEFBQcBAQRtMGswRAYIKwYBBQUHMAKGOGh0dHA6Ly9jYS5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lYWR0cnVzdC5ldTBjBgNVHRIEXDBagQ5jYUBlYWR0cnVzdC5ldYYWaHR0cDovL3d3dy5lYWR0cnVzdC5ldYYVaHR0cDovL2NhLmVhZHRydXN0LmV1hhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MH4GA1UdEQR3MHWkczBxMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzEkMCIGCWCFVAEDBQYCAgwVTWluaXN0ZXJpbyBkZSBEZWZlbnNhMRgwFgYJYIVUAQMFBgIDDAlTMjgzMDAwMUowggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBTYY8en6KTq/y0Yj7lw834+ZctC2jAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDSAAwRQIhALhK5+5kkLEUBlWyNVyMG7+aXU58KiX/zN8vZYHoqcuhAiBQsKu0JqsKtS8UG4N9e9OUsjhd3/YJPA4i9Q/tCj0Vxg==", - "kid": "MtI93IMknMk=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = Consejería de Salud del Principado de Asturias serialName = S3333001J OU = SELLO ELECTRONICO 2.5.4.97 = VATES- S3333001J O = Principado de Asturias C = ES", - "notbefore": 1621860000000, - "notafter": 1684932000000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUvljql1ZGpwzC92AbO4J751kqnIE\nXaCI8hYUIEArhReqJcx5qClAGSkDFcbrTPV9WuUtmDQ/NpoV+EejqBmlyg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "NCc6YSsVioM=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = Sello Electrónico del Servicio Navarro de Salud-Osasunbidea serialName = Q3150004D OU = SELLO ELECTRONICO OU = Servicio Navarro de Salud-Osasunbidea 2.5.4.97 = VATES-Q3150004D O = Servicio Navarro de Salud-Osasunbidea C = ES", - "notbefore": 1620984900000, - "notafter": 1684056900000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4\nB/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgHw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIHTDCCBvGgAwIBAgIJfoL0UPrrsbuIMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTE0MDkzNTAwWhcNMjMwNTE0MDkzNTAwWjCB/jFFMEMGA1UEAww8U2VsbG8gRWxlY3Ryw7NuaWNvIGRlbCBTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRIwEAYDVQQFEwlRMzE1MDAwNEQxGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMS4wLAYDVQQLDCVTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRgwFgYDVQRhDA9WQVRFUy1RMzE1MDAwNEQxLjAsBgNVBAoMJVNlcnZpY2lvIE5hdmFycm8gZGUgU2FsdWQtT3Nhc3VuYmlkZWExCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4B/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgH6OCBKIwggSeMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBkgYDVR0RBIGKMIGHpIGEMIGBMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE0MDIGCWCFVAEDBQYCAgwlU2VydmljaW8gTmF2YXJybyBkZSBTYWx1ZC1Pc2FzdW5iaWRlYTEYMBYGCWCFVAEDBQYCAwwJUTMxNTAwMDREMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQUDoSdwvhJkRliLuZyPLYo9xeX1vcwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0kAMEYCIQC5rwYPPmeafyGrOsjX/SeqgFtgrqURrFrnbwC7QvM6MgIhAN4Pl5n+ACj+56aPhHsHRo4xS2ZeXShYFQQpxUCM9R17", - "kid": "YRYidQ+wetg=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = CEUTA serialName = S6100007A OU = SELLO ELECTRONICO OU = CIUDAD AUTONOMA DE CEUTA 2.5.4.97 = VATES-S6100007A O = CIUDAD AUTONOMA DE CEUTA C = ES", - "notbefore": 1620984600000, - "notafter": 1684056600000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgOuoVfBtfKWYpcffhNWfiCf4g4oZ\nBdaPcdrn0HBtkQ/9xYp6FlfFAP1Ze29LaM1emnFxjyQNWV3KeNmoc/vFYA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "YU9+X9nepqU=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = GENERALITAT VALENCIANA serialName = S4611001A OU = SELLO ELECTRONICO OU = CONSELLERIA DE SANITAT UNIVERSAL I SALUT PÚBLICA 2.5.4.97 = VATES-S4611001A O = GENERALITAT VALENCIANA C = ES", - "notbefore": 1622199300000, - "notafter": 1685271300000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV61Sl3v6NzBqyCbqSb8/fBodGle+\nb3RJ7Utk+uExDwbOxzS//2GUTRFKW43ppskyr3G60/xeJCaeN7S9Cvssdg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "ZcfkloEvfGQ=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = CERT-GENCAT-1S-21 serialName = S0811001G OU = SELLO ELECTRONICO OU = Departament de Salut 2.5.4.97 = VATES-S0811001G O = Departament de Salut de la Generalitat de Catalunya C = ES", - "notbefore": 1622037600000, - "notafter": 1685109600000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZjrINN6u+ZGfRqaYqgqL+yZZCDl\nu+PKPCkVS/ysPosrontwlhznbPsq5W+d2NyxXeaUAT+lTyRKy1NAxOFqAA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "e9SH8dtWwdY=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = DIRECCIÓN GENERAL DE SALUD PÚBLICA Y ADICCIONES serialName = S3011001l OU = SELLO ELECTRONICO OU = DIRECCION GENERAL INFORMATICA CORPORATIVA 2.5.4.97 = VATES- S3011001l O = COMUNIDAD AUTONOMA DE LA REGION DE MURCIA C = ES", - "notbefore": 1621867800000, - "notafter": 1684939800000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEli8eKthiom9EydKvhg7LHXj/f88/\nZeNUpfEFm6kIAr3K1NCRSv1grJnNiBc9lvggtAjqFHQSGTovtRcGHcVuRA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIHTDCCBvOgAwIBAgIJA+zla2386Iy/MAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI0MTQ1MDAwWhcNMjMwNTI0MTQ1MDAwWjCB/DE6MDgGA1UEAwwxRElSRUNDScOTTiBHRU5FUkFMIERFIFNBTFVEIFDDmkJMSUNBIFkgQURJQ0NJT05FUzESMBAGA1UEBRMJUzMwMTEwMDFsMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzEyMDAGA1UECwwpRElSRUNDSU9OIEdFTkVSQUwgSU5GT1JNQVRJQ0EgQ09SUE9SQVRJVkExGTAXBgNVBGEMEFZBVEVTLSBTMzAxMTAwMWwxMjAwBgNVBAoMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJYvHirYYqJvRMnSr4YOyx14/3/PP2XjVKXxBZupCAK9ytTQkUr9YKyZzYgXPZb4ILQI6hR0Ehk6L7UXBh3FbkSjggSmMIIEojAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgZYGA1UdEQSBjjCBi6SBiDCBhTEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xODA2BglghVQBAwUGAgIMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMRgwFgYJYIVUAQMFBgIDDAlTMzAxMTAwMWwwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBQBzqvKX8AY+IVJiHykPj5www64JTAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDRwAwRAIgb52hsDkWShWodg6mznBV4Ut/vr0C2rgRLyV0rzHWq3ECID/elZUrZyPy0V6CdrlZxaCUIQB6jsFkAl2/wFTHC5pU", - "kid": "hgpHHrTb4ws=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19 serialName = S2827001E OU = SELLO ELECTRONICO OU = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19 2.5.4.97 = VATES-S2827001E O = MINISTERIO DE SANIDAD C = ES", - "notbefore": 1622708100000, - "notafter": 1685780100000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3KVI7Sy+id+bprJ8Eh9AHtW+1qeC\n4qoHH1oK7HN87UKH9KxQix0jq0RySb2c+5CN+kbAfsYEvULfHToz2FWzWQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIHKDCCBs2gAwIBAgIJCNJzqS4wRBNsMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNjAzMDgxNTAwWhcNMjMwNjAzMDgxNTAwWjCB7zE6MDgGA1UEAwwxU0VMTE8gTUlOSVNURVJJTyBERSBTQU5JREFEIENFUlRJRklDQUNJT04gQ09WSUQxOTESMBAGA1UEBRMJUzI4MjcwMDFFMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzE6MDgGA1UECwwxU0VMTE8gTUlOSVNURVJJTyBERSBTQU5JREFEIENFUlRJRklDQUNJT04gQ09WSUQxOTEYMBYGA1UEYQwPVkFURVMtUzI4MjcwMDFFMR4wHAYDVQQKDBVNSU5JU1RFUklPIERFIFNBTklEQUQxCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3KVI7Sy+id+bprJ8Eh9AHtW+1qeC4qoHH1oK7HN87UKH9KxQix0jq0RySb2c+5CN+kbAfsYEvULfHToz2FWzWaOCBI0wggSJMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTB+BgNVHREEdzB1pHMwcTEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xJDAiBglghVQBAwUGAgIMFU1JTklTVEVSSU8gREUgU0FOSURBRDEYMBYGCWCFVAEDBQYCAwwJUzI4MjcwMDFFMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQUxT5vnraH1YD5RI5MVE4gfWpCYzAwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0kAMEYCIQDTXgJxN4vlSW3VeRQosQOD7MwkjUfxKyP2ARTcopBBugIhAOEj0YxLCHFm0b62Ybnj3UJlhXy1IqAVbJEe2iB/MPwX", - "kid": "qFNF2dC+mjQ=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = DEPARTAMENTO DE SANIDAD DEL GOBIERNO DE ARAGON serialName = S5011001D OU = SELLO ELECTRONICO OU = DEPARTAMENTO DE SANIDAD 2.5.4.97 = VATES-S5011001D O = GOBIERNO DE ARAGON C = ES", - "notbefore": 1620386100000, - "notafter": 1683458100000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDOg7lpxitz9+ytOAKFXxS7F4qc9I\nfKWrj388ETiCbLEQuoYeWEp+4wXPLCF7RRpg6Zxt9iGG93ZAwxl8g05Oag==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "tCM87WnaaQE=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = FIRMA CERTIFICADO COVID DIGITAL UE 1 serialName = Q2801221I OU = SELLO ELECTRONICO OU = DG SISTEMAS DE INFORMACION Y EQUIPAMIENTOS SANITARIOS 2.5.4.97 = VATES-Q2801221I O = SERVICIO MADRILEÑO DE SALUD C = ES", - "notbefore": 1622109600000, - "notafter": 1685181600000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhe+kvml2tx/+/wipHR5ttSw1PdmW\nGLpoEqzNiel2mWsZovfSBR+Jzri7NpH8s8RBSnEDc0kQTl2dSiECy9D45Q==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "ub6Qmv9xtAo=" - }, - { - "issuer": "CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person", - "subject": "CN = ConselleriadeSanidade.XuntadeGalicia serialName = S1511001H OU = SELLO ELECTRONICO 2.5.4.97 = VATES-S1511001H O = Consellería de Sanidad C = ES", - "notbefore": 1622213100000, - "notafter": 1685285100000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeC6+zmnjgdAUmYG4kIPJsMwSFSJc\nlYoKuHKcIQ5PpX4xKyM36Gp2fkKvARbyJYjduU8JzO9nrSILVxjuKRapFw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "x3ch4ml934I=" - }, - { - "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", - "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 3", - "notbefore": 1623232264000, - "notafter": 1686304264000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5EtYbOu+RuUcFAu1NN1rqsuKqNzp\nl0Y6bgg9wNKcmVLzfBO81jH2dcupHtKlp7My5KGjCyBAKvjJUSE/fnDd5g==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIE3zCCApOgAwIBAgIIKbUPDyxggQcwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTEwNFoXDTIzMDYwOTA5NTEwNFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABORLWGzrvkblHBQLtTTda6rLiqjc6ZdGOm4IPcDSnJlS83wTvNYx9nXLqR7SpaezMuShowsgQCr4yVEhP35w3eajggESMIIBDjAdBgNVHQ4EFgQUQiz2ueCR4OeY2/dQbISIOzQRh20wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxMDRagQ8yMDIxMTIwNjA5NTEwNFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBADVwHF/3fcmmkQgU+HLb1LGhj4RvsR9NUkrkYHyWROt37d5D3EyqNjNIpWebfDXLnQNpEQDd/2HyaEW70citcb4ad/5RXD/hr3BjVsqnbRHOctv1+Twy9XfDM7OcDgj2tE7slsZ2dKAPEg09dq7MoClXDuTcIkBqEHuZ+dzA8PYDvITLjHtJqMKBj335tRU+Zl8WT0GGXzQw7/lRD4yE8BndK7C6MO7xC4tIUGgHP3P+kImRiPCq+pQbt78XGJBzEgCpBbe8HuXgja5yTk2AGLdCH5GxbSQMjGA4icefROoPO86uNwCekAKGFd46Li5/+JfIi9nJCd2x7PsUzAr15fzwcTks0Hk+7dZqj6gXuJpZFwoCzvY4Z0O1B99L1SCwZNXsCEevqQ5an3LUWUWE+7JhkkGtqeddockt5M8Q7omw8O4gvV9W9Y4Cbvshxy9RroTSU135NBMm3Iu0s2FdsKj3JMaE/xulRCJ4bxaEcKTdrjGaJSPT5ROgPWQj0yD7yw5j0lRGzph3Pu1o5q6J4v+w3cfWVu9Ka1H4wpQY3ip4emVaXpstg0NNPMH+JERLFy8Bg94J0uOCKAVAPMjpr9DW7/r1Ooey4a7pfdGqCb2QxUkuLr1YOQcairnvOpjjEfHbvWmKV4EGpENpI21qY54URKtoYse7tnkVtz9RrsyY", - "kid": "02vdAOY/+gI=" - }, - { - "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", - "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 2", - "notbefore": 1623232205000, - "notafter": 1686304205000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvIs/H8NhtE23q5tR84V9WwbbdGDc\n3hh7mjrXom4PRzjGRuSvfC9OIFLtRzOohsdnbcE62FWN+Fz09ugJcaqhtA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIE3zCCApOgAwIBAgIIX7IVIHG/M4swQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTAwNVoXDTIzMDYwOTA5NTAwNVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLyLPx/DYbRNt6ubUfOFfVsG23Rg3N4Ye5o616JuD0c4xkbkr3wvTiBS7UczqIbHZ23BOthVjfhc9PboCXGqobSjggESMIIBDjAdBgNVHQ4EFgQUvoCTP+xA0/1nmxS2GKtTaxp0TYAwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUwMDVagQ8yMDIxMTIwNjA5NTAwNVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAKT1bQpoLJpJbb3qAbYcQkZKPNQa5aisXFiLlmIBWHzPYI67BWJu/CjDOeHUPgzpcgiDe33t5ZacnccTwMGZYXnZQ8jNwOxAi//7NJkJHEtrMcYQ9pqSeKqnNwTwMetQm1u5rHjAtjMSZdyWMMjDIcX5Z2lXiPgoO548fYKrwbeCloFDk6qWrk/Jc6NKyNgVEhVvkwHLfDloS7Boln2I4eT4VfTAXt50/zEsu4KHIDpDTDMFNg5KTYugOFHOQise6z5oYmnwZB95OKfFGR0xeDR8JN+Kn2TcdiTpin87jhtyHzCScFLlWbHum9y/OKKNgK/2hWRrikyU9zo/OmHwStftOkggBSeDVtwRkCAKZpK9IXWWRNCj/gkRnVDDeg3ehQ9qRykU+BkUiMi2LhLDVUITCZhmRyS94xHP5PoCY5tUanCNxkgjYwvDHMU8hIPL8rsOdHxc7tK6jaavBP7ZbDG1W3bEcYU1oaKWvbYyPBhJPnAVDVH2SLU68gdEcdjMtiOPaH1ImERhQ2cF9KzCsU/svCoOJrEd2lQZ6xFodkicg0XN4sdXKyypdPic+Cvai/033DdiS1i7HH59hO0Z9l6I2gsJHULDMeSnJxTB9Tves79iYSRdBocm+LHfT8uvwRwn6+SmTD7/ttzHm/H/m/k1hsLPZDNMdn+kMuXCiEnn", - "kid": "0kAwFy+vLpg=" - }, - { - "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", - "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 7", - "notbefore": 1630587789000, - "notafter": 1693659789000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7U8cYsFNOZawVgxC9FBfvNzL05Xe\ntv6jVxj+aii7IkXcXCIiRsruAdrAHCLCtpDgIFzwLsFNwJs5ZFu+8lr6nw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIE3zCCApOgAwIBAgIILKLkHn6rwKAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDkwMjEzMDMwOVoXDTIzMDkwMjEzMDMwOVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO1PHGLBTTmWsFYMQvRQX7zcy9OV3rb+o1cY/moouyJF3FwiIkbK7gHawBwiwraQ4CBc8C7BTcCbOWRbvvJa+p+jggESMIIBDjAdBgNVHQ4EFgQU5MUl/8big5VpHbJE35E0EJ5cuF8wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA5MDIxMzAzMDlagQ8yMDIyMDMwMTEzMDMwOVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAAQI3H/45srCJtEi5+gwT2GCEx6zV65ytEOsct9bUu41U5UDYhYp5rtaIWpguPB2DuHs1zFY7bqwiD7INyDeRIhCrBZuQkrIsBGImE+IcoXJAdri/vUOPToYxpcA3uwqH/1EOhuhSlUz8Czzb7rDY72K1fXQYCKYGNkEBEDrSC66F9bMD4ATtRb97DMZAY5QmTX8MVjSvrd9WoiroQ0YaT3Bt38SYzwY8QV10ovbo+VqkY3d4bK4zTHGFh1If2ttsPAWOLV8mc3bp6CGPm9VxfZY5tMBgVsDNcpY9LKLFGHivmsduvSFfugNsPDELnj8gBMihCtnOTzI9Qugs298tIYg8awef2GkJmdsdQX1IcQJjrw19ukgbjuGDr3EIfmDrjfRcdFdDSvE6xBIWRWa/XnrmdoKvUnuRrCFzcOSfaMBEER5qJ+dQh/08KtKPdRXvNFoyDLfS8eHRRLIkEDtd3HeuKedHclHjn/+JbazIGBYjogqXothsnSK8bDBblJnO8nAFc3AdVk6BbmjitMSQsU0oYhpSg7Ew3HxHYXGCmZ8rHLxzGOC8h/KaEcS3qP7IuyMlwnZdITbeli3qy3UVTA0jd61/HJLDqJMaYX8bvcPpcfqW5mbVV/X64il/jyNURdoKkAYFFYoMNgBz4QY9XKn1dGC1WcE7EFXAjCUMawC", - "kid": "Amn7EaBy1ag=" - }, - { - "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", - "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 6", - "notbefore": 1637317418000, - "notafter": 1700389418000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAM+XCsJYYmHT5wSsEfx7DF5PWT3D\nCIbIdWjSxS2NWcbsPx7zjbWi/lMKbaSDdrYnO37o5zn0fI7LUU1LS5pKtQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIE3zCCApOgAwIBAgIIOrhc6Me7w+wwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMTExOTEwMjMzOFoXDTIzMTExOTEwMjMzOFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABADPlwrCWGJh0+cErBH8ewxeT1k9wwiGyHVo0sUtjVnG7D8e8421ov5TCm2kg3a2Jzt+6Oc59HyOy1FNS0uaSrWjggESMIIBDjAdBgNVHQ4EFgQUf89Xu5cdTN4gfMJ2P/Cv6Hx3swAwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTExMTkxMDIzMzhagQ8yMDIyMDUxODEwMjMzOFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAC1HMWC2knZxMj/RtkmRMgG+5iCve04Pv69avIHfdKLTzUDTPyEhtROjZ+IFUIK/RddtJ2KMyJbgprTZLMtOiOT18BEumkZB3L3VRyPa3PfLQ6DqoAgqvjep3tjyH9jP3Ibn2LWHKiLrAHmKl/IekWFfZcZ+gsmqRvRhUpi944X0rBD9i/Xe0T7BTS8CjCZBptIPY2/MRsvteAR/L6h/lm7S0CzofA/FnEtdD/hskVzIbgsJgSPWfUZsKLUwP7gsE71Xq89Q+BeZiUy10x1moTk/sWGnNVcGXwCobCfRnaOA6FUpBoayq3L1jvZST5l92+HhrfUOVTlbcJHOxHQe/2KIT0w1O8geLaPB8Fo8LzEX5h0PTrA/qnG7JqLE8PF/mHs1WKywDmbrx1UFwIfQknvLPdqcnHmFvvSf94BpbwN2Mk8E586krKu71rGMhZBHWmbQ+YVgA9lKt6vP+MnqSwj7RtEEfsyySGrLP9zoFa6RD7aLKBvwhnFuk3knOfdXo3h9TXJpMoLkG5BDK6mJ5zNU8+pYedDyea/QEpE4K7Ledo6RpYyTj47H46KPgyfGnb0YZT/LC3Kn99ejnf0hoHRL3zUt75BoEngLAR6g4BAyyrXoEcVpt8JtDTcAHCMMwMAD84FZBAVNcaCrPNkedX3eyBoN1bIwbGBeKhrgMrq7", - "kid": "SiEt1ct5otQ=" - }, - { - "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", - "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 4", - "notbefore": 1623232314000, - "notafter": 1686304314000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHTBJY0Z+T5I8EmqQmrbZAr8equIc\nKKE+YriIGw/AKJyw0ZAj1Dd2MRTM3+AEiNARxXIF08a2rhUvFCyyHCJ2DA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIE3zCCApOgAwIBAgIIbOmJZDQoP+owQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTE1NFoXDTIzMDYwOTA5NTE1NFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB0wSWNGfk+SPBJqkJq22QK/HqriHCihPmK4iBsPwCicsNGQI9Q3djEUzN/gBIjQEcVyBdPGtq4VLxQsshwidgyjggESMIIBDjAdBgNVHQ4EFgQUhHOTxbELqlA8J5QtocLrpUvgC48wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxNTRagQ8yMDIxMTIwNjA5NTE1NFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAEa+gpgHss7+IdPOrr4bzlMSavqHqybtRzSH2hVBrbZ9Ov3vVDmIksbUNM3nlVPL5gFAReHEJmXhHxwvoxyCO/NXOS+itmGkYRPHRH57xTa9XIGcwWmAnbwxVy41B/NnOMeAB2TouWWfX/ZYzKiNyFJ7JEIdaQcZ/2+55c5mlEVFMdpeDR2vmB+cgrz6j0iFxoJ1/QQeWkjfD8nr/Auy7zfm0MgQL5wZEI08A9LAKZjFbawHcJx2RWuwWFc8dLBTMxYM0ptrXYNH/dDRpuNXMuqh68Os/aei5kbolHM24bSBycvInYBYyVRTi2ABDdRpItl9BEGqPSkJoYrrB2hZ3roNNugANF1rm1Fx7hlK80QiMoELoM1RyIovlrymQb45USV2+OuEtvZ6BJ85l7q47tbwr0xxHqIL9n82t4My4M0U7cIu5SPv6qv+ubLGnbqJvgoT9Tf3QGrH5j3XDyU0V4YfvfQhcOBLNlduuA2cihdAh+M6MLRbtG9svKsrA4k0PtyB9UCtqufsfDhkjM4LRGjmylclgmDtNH6DixcFxYlK1+fikZSIPnw476WgS8/2biw2m4gAsxEZ5/vg9L/u11i853AOSsh/sFxjp62K3O5mFAvdmLAJmrofOUghoNcAzJdDbSWtHzqQYJ+BWIjoIDiJh0m8Sl5/hVv6Bh6Xtrp/", - "kid": "bBnmkeVMV6A=" - }, - { - "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", - "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 8", - "notbefore": 1637317780000, - "notafter": 1700389780000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+vHkPlOZP+DAP5kw5j4miyzrtTc5\nwM5vNkcNqWy4e8YHf4ZR1bEpQjRS+ksnCKfbEDf82p0RRzdtbQCdvSdsEg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIE3zCCApOgAwIBAgIIRuunuryIv2MwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMTExOTEwMjk0MFoXDTIzMTExOTEwMjk0MFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgODBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPrx5D5TmT/gwD+ZMOY+Joss67U3OcDObzZHDalsuHvGB3+GUdWxKUI0UvpLJwin2xA3/NqdEUc3bW0Anb0nbBKjggESMIIBDjAdBgNVHQ4EFgQU+Wj2rLs9D5DTRelKDWzq59tIm9YwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTExMTkxMDI5NDBagQ8yMDIyMDUxODEwMjk0MFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAE+CfZcxHrwDJmXImxn7vMOlRw/Bvy2wv+SIWHE5HOMvHa0eAbbADPz87HhyoMMnC9vDKfeEjaa8qyiVTtAcAT0yBtJJaLITEMm+uGkIHFcA3LkzLVubqFhDGUs3bqRRqvBY0+tqdLKRvWLn80XC0KpHrtppUAhwhDYZ9LKcAeDC9Hz2Zh44J8MYyYlcrGrzNvoEWE80+IHfOXkztop0P1ruwa6zpyrElbJ2AJ/Cfd39MaYxxpB2lLRXKjm1IkqjjYmolKphoF66+NLKdz6Iirtdt3i47G34ASHvu77/GHSrSsb0qsxlcQI7hjhB0jU4WIQOPKBPpdiBH5lqQ78GLe2oFsNv0FFEn3sbnmcZOLaaDzUlgcP+TqAQq0mjXZIXmTzvEc9Oc7sO7LeZWH05b3kQdywL6xa0US9Q+fpz3olPi1DAos0hC2I5Th1veQqUQ/+7EVHWaicX3W/S/+TUMHBixNr8CA3kioFGu16fDUNdyuKlrmnitpjeiELG2Dn9dkqpKDDVHPy9NLPLBY2D4m+GFxfuficry7G499rDyEkeAWjmG5xzwIgzx4zSdGVDsmBLmNNkhIoBWpnjB5+7ff+lCj93yLMfGfU3+kuWjYHd6XiymcqQSjBwzR6pzb0k2q/AsRn6ovWKf0e2ZE/yVD9LLUmUJOXoVdIRB1rizuk3", - "kid": "gcZRP1ogHyU=" - }, - { - "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", - "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 1", - "notbefore": 1623232135000, - "notafter": 1686304135000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEExXQauou3f3g77qOsZ0rSPFjoTDi\nKQDhG+Bpf34YyoeFkYMBML890KaqmZL4uezBc8xxg1f170qcZWHILjp4qw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIE3zCCApOgAwIBAgIIM5IkTBngr+AwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NDg1NVoXDTIzMDYwOTA5NDg1NVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBMV0GrqLt394O+6jrGdK0jxY6Ew4ikA4RvgaX9+GMqHhZGDATC/PdCmqpmS+LnswXPMcYNX9e9KnGVhyC46eKujggESMIIBDjAdBgNVHQ4EFgQUX4tTu4HFKg7kh7/7FCeP8+7D5CwwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTQ4NTVagQ8yMDIxMTIwNjA5NDg1NVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAE5HQ1OIeJz3gkH2Wrokpb2nLC/ytoe5t9zkK2LY+UmVvTP59uG1dyIWV5pv2hwYnCiSOOG82YJRfdsts3i/0NHlESPChvyoG/E97tvdjB8doTj4gCCTx1JmRpp2vOQZuQsOB5QeTY7nL3yCHZF7yniFDPQpk2WpE4tY4gxxt08hlhRs4C2iZ8jiN2DcMqJwippu0OdAca9mRFPnVs/tGjBT72QrEnPPXWu1pz1xdIW6sDbC2OhCkAMPC4qehWh00DuhxeYgkJF6cg5NOLT2iiAeEv0/DGdYsy1lM5JxE4BmWaZ9mRuvNvzf3lC6DVFHTr3R7/88RblxfWA/TH7E2TQT40JwhQ0YyhqWYC+W0T2cTW2NICedtIpAv8oECRentxzvceovuQw/BxacZUbs8WEJFW+WKGJvAeyaFrkLrze3U5UH3kurD3tG97E77wbFu31iivDmftrvWv/OSDFWpFiPkEP0pe46eY+x/KGiBZNYj6sxeC21W7CxAftQdgoOAPU91j9otI/0n/7XLV71Y1fnt02nZwDOu7ajLHebpjUtnnDsHojOAr3NQKEy836Xg2E3JtGCWWBKnkvgj1/swYBLaZxE9FEGo3nTst9TpwS8GpgXFoQEoTNSV5UBVCwT2djcZCEmhG4GPCrqeoh1c6bfTRbtORXv2HZqYgv7w6eo", - "kid": "ln8K+9SqfuA=" - }, - { - "issuer": "C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA", - "subject": "C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 5", - "notbefore": 1630587618000, - "notafter": 1693659618000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHcMt1ez6jhOR9UBCXlFg//cHD/Jo\nypGzNaG4C/gYl4qQdN+Vns7/idf8DO6Fk5z+Yh+I/vQ4vUQ5bWZSwRwUJg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIE3zCCApOgAwIBAgIIOZExjV2kjGAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDkwMjEzMDAxOFoXDTIzMDkwMjEzMDAxOFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB3DLdXs+o4TkfVAQl5RYP/3Bw/yaMqRszWhuAv4GJeKkHTflZ7O/4nX/AzuhZOc/mIfiP70OL1EOW1mUsEcFCajggESMIIBDjAdBgNVHQ4EFgQUAiIZbrncLuwgAWNZTfPNphbK5EcwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA5MDIxMzAwMThagQ8yMDIyMDMwMTEzMDAxOFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAJrQJUzTWjcyjHZj2Na/4TuSNTolOM2bDlEBoEqUAY3rfx42rM7xJT8giWcKL75arhGgkpzEqtJeQBaq2yE/itDN9dGI35qi/MvIhkx0e94d14QwOkfMF5c9mJFMcXEbb2v5UE4cQq7Obic77cjGlSemS1ieTrjxT4yYu3LOYOcTXQqR5qNeor97zHze3esvAC7VjTFo1wcg3kK8PZV9s25q9IeiNvhzcu3IeMIEtB6sC/E3q2B1KbvkEInr7/uHMRylh4cqfyK8VCewkIDIEReudLbSjKJBAQipDnNSuTswu89vNB1nY7kdRIyISqtgoB5opoadPDEdA6DISea2dvfXs5LohgjN4zkJK8R9h7TQizFaI1PKMVADzP6e25hPA87SVVb2nDGxzlXY2tJRGstvuD6cWvtfhc9fn71VUtIsjG3iF9XJA5xYOijEM8xzqznv8GJltrmv7f/pxTOQuyb4FR5pRzVRFaft0B9igToiEDeZoq8O/jVn09fvDRa2sxeQpXvRcQvd9B1YppLdziHzVyzQ/X6iD0nuQ/8osGZyq81yMrvN1uPpROgfcleo+yatl3VavV7HRG1e1Ur0G0SZ3xmC12RRoA3m3FVSTx7WsQcy/uurcmGpAs5gf9BkcTcodGM4ktPjjpu7UvoKPysSlI0tI3TtXYY0aRICSCYa", - "kid": "o11W81MgYYg=" - }, - { - "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", - "subject": "C = NL O = Country of Curacao OU = Ministry of Health Environment and Nature serialName = 1 CN = Health DSC for recovery", - "notbefore": 1627981990000, - "notafter": 1974877990000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENlKRwpA1S14Zfx6LZuAWm9ExHy86\no7O9ijCq4AmZ1dFu2d2wowdylJzAvbbVsR1RoxfNJPzy5dwu9Nsm0PvsEg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDOzCCAuGgAwIBAgIUExGmExTT4ef8rDmoU1gm1xnsB3swCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTEzMTBaFw0zMjA3MzEwOTEzMTBaMIGMMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEgMB4GA1UEAwwXSGVhbHRoIERTQyBmb3IgcmVjb3ZlcnkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ2UpHCkDVLXhl/Hotm4Bab0TEfLzqjs72KMKrgCZnV0W7Z3bCjB3KUnMC9ttWxHVGjF80k/PLl3C702ybQ++wSo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANDVVcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEDMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFGxsRf1q1IJFSUabsYjk8Zhu4yi4MCsGA1UdEAQkMCKADzIwMjEwODAzMDkxMzEwWoEPMjAyMjAzMDEwOTEzMTBaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiAmvnUyiPPbVM7Ds+gisStbuwGRZ/ujjlfpKU0Kxhon6AIhAM8VBy0s4syzH9gDqrayITXG1r9253IAvNyxoHFhej6P", - "kid": "0JzyumjttZU=" - }, - { - "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", - "subject": "C = NL O = Aruba OU = Ministry of Tourism Public Health and Sports serialName = 1 CN = Health DSC for test", - "notbefore": 1627978373000, - "notafter": 1974874373000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKBG1WklnURluKXTg5+tm6/S7pMFL\nBE8cZ5xNxnCCAL5nvUi6JzSgTjAmOaUNPXVwvA2TYl/GkJNbh4TazMeF3w==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDLDCCAtKgAwIBAgIUHVt+j6ML1RILakWOrokwx1vJhWQwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEyNTNaFw0zMjA3MzEwODEyNTNaMH4xCzAJBgNVBAYTAk5MMQ4wDAYDVQQKDAVBcnViYTE1MDMGA1UECwwsTWluaXN0cnkgb2YgVG91cmlzbSBQdWJsaWMgSGVhbHRoIGFuZCBTcG9ydHMxCjAIBgNVBAUTATExHDAaBgNVBAMME0hlYWx0aCBEU0MgZm9yIHRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQoEbVaSWdRGW4pdODn62br9LukwUsETxxnnE3GcIIAvme9SLonNKBOMCY5pQ09dXC8DZNiX8aQk1uHhNrMx4Xfo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANBQlcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEBMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFFtRlFbRHNsuvQN/xIEwp1U/8DPXMCsGA1UdEAQkMCKADzIwMjEwODAzMDgxMjUzWoEPMjAyMjAzMDEwODEyNTNaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBNaAhthCNLRsfnXOACy3Wc+bkJ/oGxaEnqx8S0y3EkdgIhAKlbCGuSnLbyeUSBQ00N1K+iNzc2JoaP5CNyOGDOFAqg", - "kid": "2Bh+2HrOg0c=" - }, - { - "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", - "subject": "C = NL O = Kingdom of the Netherlands OU = Ministry of Health Welfare and Sport serialName = 1 CN = Health DSC for vaccinations", - "notbefore": 1622471252000, - "notafter": 1969367252000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsO\nNkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw89w==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDQjCCAuigAwIBAgIUU0JrRUBVL8DEW1z0jx8/+KAChLIwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDI3MzJaFw0zMjA1MjgxNDI3MzJaMIGTMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEkMCIGA1UEAwwbSGVhbHRoIERTQyBmb3IgdmFjY2luYXRpb25zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsONkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw896OCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBRVYJgZWfyzk3JJwB0HVdom7P7AxDArBgNVHRAEJDAigA8yMDIxMDUzMTE0MjczMlqBDzIwMjExMjI3MTQyNzMyWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAMMFkIuctSqsZbVBvE56YEZoxrF6m1n+F/IajFdNsRyeAiAC77Q6e6IOsDkPwq/ajPA5vslzeFETwcqNodsfAcJJEg==", - "kid": "3lTmAZX19GQ=" - }, - { - "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", - "subject": "C = NL O = Sint Maarten OU = Ministry of Public Health Social Development and Labor serialName = 1 CN = Health DSC for recovery", - "notbefore": 1627927711000, - "notafter": 1974823711000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQb+DcAtDpjI4ftm5ICNC5KGz10zJ\nvY682GDCREwLupvC17QzWFvc6S0jbk2NJt2VY5V4svj2FfLGkSWbUqUFnQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDQjCCAuigAwIBAgIURZYaoJKl/Wy6+MSJA+7KBAfLQpEwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODA4MzFaFw0zMjA3MzAxODA4MzFaMIGTMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExIDAeBgNVBAMMF0hlYWx0aCBEU0MgZm9yIHJlY292ZXJ5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQb+DcAtDpjI4ftm5ICNC5KGz10zJvY682GDCREwLupvC17QzWFvc6S0jbk2NJt2VY5V4svj2FfLGkSWbUqUFnaOCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDU1hNMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAzA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBRnd3nKzgJx3I/4ejFn+5GLW5DFMzArBgNVHRAEJDAigA8yMDIxMDgwMjE4MDgzMVqBDzIwMjIwMjI4MTgwODMxWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIgaUm6pa07v+OCyyGzYK8XIuUIl1RF3Yvlzw7otvuvZVoCIQCdKQONn+bW52R3pKdoTb4ssYYYHpizX2UvWUJinjwf7g==", - "kid": "4Ss2raOqhTw=" - }, - { - "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", - "subject": "C = NL O = Country of Curacao OU = Ministry of Health Environment and Nature serialName = 1 CN = Health DSC for vaccinations", - "notbefore": 1627982110000, - "notafter": 1974878110000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEawHNq4c7wLusLEYNhn7CBSqk6bdY\n7Phqjt1+Q+CVRHqBFfSRfWG+9dgoEMBdFHY12g4qsO3nnT2P4qhADwIvng==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDPzCCAuWgAwIBAgIUNoYe1qfQWUKjenQM2hZk75Gj67kwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTE1MTBaFw0zMjA3MzEwOTE1MTBaMIGQMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEkMCIGA1UEAwwbSGVhbHRoIERTQyBmb3IgdmFjY2luYXRpb25zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEawHNq4c7wLusLEYNhn7CBSqk6bdY7Phqjt1+Q+CVRHqBFfSRfWG+9dgoEMBdFHY12g4qsO3nnT2P4qhADwIvnqOCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDQ1VXMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBSvCnweDV0fhXiABpn551ECcIPLeDArBgNVHRAEJDAigA8yMDIxMDgwMzA5MTUxMFqBDzIwMjIwMzAxMDkxNTEwWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAOFtWGrE3NItKSKHvNypt0dHo8pfWcGwtWov+UinZkXUAiBYAd6OmxMik1GktF+cph96ldfimOpNnCobSLhpuhrhGQ==", - "kid": "H6b6bQ8qij4=" - }, - { - "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", - "subject": "C = NL O = Sint Maarten OU = Ministry of Public Health Social Development and Labor serialName = 1 CN = Health DSC for vaccinations", - "notbefore": 1627927825000, - "notafter": 1974823825000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERw+zOjyFNs4ntgwxcvouetTqlBIz\ntiTtJhOi8DesKXv5uX/m1pVAbYium/fhyu0IaBeh3DVOLfLJtPaUEx8eiw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDRjCCAuygAwIBAgIUeS2exS2QVGgMamwCH1rOy8XFhEcwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODEwMjVaFw0zMjA3MzAxODEwMjVaMIGXMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExJDAiBgNVBAMMG0hlYWx0aCBEU0MgZm9yIHZhY2NpbmF0aW9uczBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEcPszo8hTbOJ7YMMXL6LnrU6pQSM7Yk7SYTovA3rCl7+bl/5taVQG2Irpv34crtCGgXodw1Ti3yybT2lBMfHoujggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA1NYTTAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUznY2NjB8NXsMUCHPOlgYek97hZYwKwYDVR0QBCQwIoAPMjAyMTA4MDIxODEwMjVagQ8yMDIyMDIyODE4MTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQDx1fY/jA5stQeKO1mdP5EgJ8iOho81Ob/B/yXfg8XKTQIgSyuSbgQQu0j1fY5gxnFhyW+1M2Si8suaq4As21gBf5o=", - "kid": "JsReuAsmza8=" - }, - { - "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", - "subject": "C = NL O = Country of Curacao OU = Ministry of Health Environment and Nature serialName = 1 CN = Health DSC for test", - "notbefore": 1627982059000, - "notafter": 1974878059000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPVZAyUlqrJ3XW8kCQu401SKWJ1Gj\nF+LBjT16DUZO0RaRdAPsKx8FUBwqRBtn8dPzIP+EWDX7iUppuG0TNkt3Ug==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDODCCAt2gAwIBAgIUR6VYtf0ovWBCl7FHT35IVzVQ1EIwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTE0MTlaFw0zMjA3MzEwOTE0MTlaMIGIMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEcMBoGA1UEAwwTSGVhbHRoIERTQyBmb3IgdGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD1WQMlJaqyd11vJAkLuNNUilidRoxfiwY09eg1GTtEWkXQD7CsfBVAcKkQbZ/HT8yD/hFg1+4lKabhtEzZLd1KjggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA0NVVzAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUp42ATAZjIq8GuJM8TlU1qEBtzWUwKwYDVR0QBCQwIoAPMjAyMTA4MDMwOTE0MTlagQ8yMDIyMDMwMTA5MTQxOVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0kAMEYCIQD11uNYCNN/3xpgzvNI60u1gF/5aycL7HhApAh2mX8x7AIhANi3q/cTgsLOq53sX8mbZAZolL1LMGhfWHyRkwY7mIVn", - "kid": "T8kbYovQlYU=" - }, - { - "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", - "subject": "C = NL O = Kingdom of the Netherlands OU = Ministry of Health Welfare and Sport serialName = 1 CN = Health DSC for test", - "notbefore": 1622470783000, - "notafter": 1969366783000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERyOtPhis4M+vOSM+4AoqtBot3s7A\nGrqQOSA2ZY3a25z5e4QlRpExd1S399CADvo5j0Nyqrm/azrhFIsSAc8FIg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDOTCCAuCgAwIBAgIUDWwu6rWJGF0zIQk/aKjdU0TXoQowCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE5NDNaFw0zMjA1MjgxNDE5NDNaMIGLMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEcMBoGA1UEAwwTSGVhbHRoIERTQyBmb3IgdGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEcjrT4YrODPrzkjPuAKKrQaLd7OwBq6kDkgNmWN2tuc+XuEJUaRMXdUt/fQgA76OY9Dcqq5v2s64RSLEgHPBSKjggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUJ6rwxau+2kWqjA+f1f8vUJSkiDkwKwYDVR0QBCQwIoAPMjAyMTA1MzExNDE5NDNagQ8yMDIxMTIyNzE0MTk0M1owDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0cAMEQCIFuevBHjahuLYCe1bOFCmy6V5FSfyJrVo5+hd0GCSDRMAiBdRK619VMnXNGf573r/PG6nVpeJ9aP/qpkmZG3TVGQDg==", - "kid": "f+4yAPIGTWg=" - }, - { - "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", - "subject": "C = NL O = Aruba OU = Ministry of Tourism Public Health and Sports serialName = 1 CN = Health DSC for recovery", - "notbefore": 1627978251000, - "notafter": 1974874251000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf85n2j7jSWalqCH8Dquo5E3uyYIw\nYReoWWAiPkIvnwaaoPUt427OizGvRF35l0wPD6zSkbiQZxWI1DMaf+UeXQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDMDCCAtegAwIBAgIUf+V5qIHrABBVrichazDaEgY0x3EwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEwNTFaFw0zMjA3MzEwODEwNTFaMIGCMQswCQYDVQQGEwJOTDEOMAwGA1UECgwFQXJ1YmExNTAzBgNVBAsMLE1pbmlzdHJ5IG9mIFRvdXJpc20gUHVibGljIEhlYWx0aCBhbmQgU3BvcnRzMQowCAYDVQQFEwExMSAwHgYDVQQDDBdIZWFsdGggRFNDIGZvciByZWNvdmVyeTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH/OZ9o+40lmpagh/A6rqORN7smCMGEXqFlgIj5CL58GmqD1LeNuzosxr0Rd+ZdMDw+s0pG4kGcViNQzGn/lHl2jggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA0FCVzAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQMwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUsGbf7QCnDPzuBPOlOmArt9xBPZYwKwYDVR0QBCQwIoAPMjAyMTA4MDMwODEwNTFagQ8yMDIyMDMwMTA4MTA1MVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0cAMEQCIEg83+MS877WyCurvbC15pDKViLqWrbQvSRD2tjTT6JzAiBKlOFgjK69luoWCDFIFd/TXNVp6vIX9YOU1YZmrlFu4A==", - "kid": "lzGYCpOBQsU=" - }, - { - "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", - "subject": "C = NL O = Kingdom of the Netherlands OU = Ministry of Health Welfare and Sport serialName = 1 CN = Health DSC for recovery", - "notbefore": 1622470440000, - "notafter": 1969366440000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEiY+AGRWtd8tCUb5PQdEPaCWAZl0D\n/SIOtcDH8R8yrp/JT8MmMxV/wM15WiZf09Eyy3iJXwFT+9YOCyrBA/Cejg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDPTCCAuSgAwIBAgIUSK4bme7ziau/JZkM80IOLM8iauswCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE0MDBaFw0zMjA1MjgxNDE0MDBaMIGPMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEgMB4GA1UEAwwXSGVhbHRoIERTQyBmb3IgcmVjb3ZlcnkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASJj4AZFa13y0JRvk9B0Q9oJYBmXQP9Ig61wMfxHzKun8lPwyYzFX/AzXlaJl/T0TLLeIlfAVP71g4LKsED8J6Oo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANOTEQwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEDMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFO9JANKEcntn4oTJgtch48rqSZMpMCsGA1UdEAQkMCKADzIwMjEwNTMxMTQxNDAwWoEPMjAyMTEyMjcxNDE0MDBaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiA9SzdZR+dN+yQ8+lUKzFCUl7noJ6YzB49zVsdYBsXJbQIgFvifkX+12Ib3SsdCb9TGkzQtD4ZxCLrx1T0ycsNwiUU=", - "kid": "pSEfhlMubh4=" - }, - { - "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", - "subject": "C = NL O = Aruba OU = Ministry of Tourism Public Health and Sports serialName = 1 CN = Health DSC for vaccinations", - "notbefore": 1627978403000, - "notafter": 1974874403000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcI1v9r69Swup7ghwGhCA5xoG8Sop\nLiD2DnfkhTydslZQBHc+TuieZ11aHYkD91gmngRXRsGU8Tow/LEoKPkyuQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDNTCCAtugAwIBAgIUECsnQP2ouWaoN8GWtDfzIzOjQsAwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEzMjNaFw0zMjA3MzEwODEzMjNaMIGGMQswCQYDVQQGEwJOTDEOMAwGA1UECgwFQXJ1YmExNTAzBgNVBAsMLE1pbmlzdHJ5IG9mIFRvdXJpc20gUHVibGljIEhlYWx0aCBhbmQgU3BvcnRzMQowCAYDVQQFEwExMSQwIgYDVQQDDBtIZWFsdGggRFNDIGZvciB2YWNjaW5hdGlvbnMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARwjW/2vr1LC6nuCHAaEIDnGgbxKikuIPYOd+SFPJ2yVlAEdz5O6J5nXVodiQP3WCaeBFdGwZTxOjD8sSgo+TK5o4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANBQlcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQECMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFM3bsoRYxPuXAB71DUGiFlVsI2pOMCsGA1UdEAQkMCKADzIwMjEwODAzMDgxMzIzWoEPMjAyMjAzMDEwODEzMjNaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiA4NIHd9nrtJJutNFlPr7hMwLAG5S0Fg8/sDNGgTiO42AIhAO8+HmKyw4rg55MS25dFf5zZYvQ/Gu0ddo97T49wK3qn", - "kid": "ryvXsisPPeU=" - }, - { - "issuer": "CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL", - "subject": "C = NL O = Sint Maarten OU = Ministry of Public Health Social Development and Labor serialName = 1 CN = Health DSC for test", - "notbefore": 1627927778000, - "notafter": 1974823778000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnRYo0qQ5BM+B3lWzaaqBhgTqQ99w\nnzj078WYakRSXv7LyJbz21EGEQkNpe3UOlENX5Q7RdzkrrXFbs7pHfNDpw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDPzCCAuSgAwIBAgIUAc0BMCshHZKc4/+JL2MOXBv10d4wCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODA5MzhaFw0zMjA3MzAxODA5MzhaMIGPMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExHDAaBgNVBAMME0hlYWx0aCBEU0MgZm9yIHRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASdFijSpDkEz4HeVbNpqoGGBOpD33CfOPTvxZhqRFJe/svIlvPbUQYRCQ2l7dQ6UQ1flDtF3OSutcVuzukd80Ono4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANTWE0wFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEBMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFAPQ7CLWYkeVzUr1/A2Qhww+QJc0MCsGA1UdEAQkMCKADzIwMjEwODAyMTgwOTM4WoEPMjAyMjAyMjgxODA5MzhaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNJADBGAiEAnQEMyEA+/j3kz/5N2bYc456EmYIDMlPaWa/8y9CKAhQCIQCz6RYG5r3ZJ3tRmbb4n2EVBGUVjcldIZDh1f2R9veJpQ==", - "kid": "ypEjzbYNqEw=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571146 ST = Berlin", - "notbefore": 1624540407000, - "notafter": 1687958007000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUdPPsk9xzY1vM1zdjgvHDsRCST55\nY9SJBJUXI5uqGb6ckpT7xQFGbm+WGQuFJ9E0w3Zyyqb9P/bsMJQmJkrpkg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "0L7AaIwu+EY=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413462 ST = Berlin", - "notbefore": 1623059747000, - "notafter": 1686477347000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqD56CIMWer5HDRhCpUrq5lZ6F8Wr\nFPy/IDwjgb44oE2BELk1xBbjXvz7kSPpf3jp48wPI7WWLcx/V5K1A6obNA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "1+da8dKEjlE=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382898 ST = Berlin", - "notbefore": 1622717182000, - "notafter": 1686134782000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtGEETBc2arnjxxBWO3aDW+rwFgwm\nhqPbxhaUuOEC6kkd3GPhmXPFYKtmFM4IQDj1Cfqu2bIHa6RqF9uEMbtxwQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "2BGoyFIyYPs=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460071 ST = Berlin", - "notbefore": 1623423164000, - "notafter": 1686840764000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeL12fn7+nUNW+9T9zJLaiZF18rfz\nL1I735fT+3zuKryR3K2oMIMBDFbrrLVva3UeOEZaz+sUwUKWHMg2HgQttg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "2JelGO/ymxQ=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413213 ST = Berlin", - "notbefore": 1623059345000, - "notafter": 1686476945000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtgz2ifmTj/vZbBaz6xlNCdQlw4FQ\nU7v3dUrJYQEigk4Lz8dY1c3pGzYO33TjrgN/Qn+yHaYMHl6+06Gk7AuW6w==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "3LCRmucB9kU=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382791 ST = Berlin", - "notbefore": 1622716844000, - "notafter": 1686134444000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8nZrLqMlw5EvdfvJXgxb2rXj9OBT\n2UWBqAFLeCoQXuY+YOZJpUtL4wFQHMGPbvyoWvvcfWtrz3ZXHwaaigQG/A==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "3jqajzfHpKE=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414054 ST = Berlin", - "notbefore": 1623061369000, - "notafter": 1686478969000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE71N2pH6YyC6gfUHwiEJDzIxwMIW/\nHs+Cgn/gPQbZAkFcyX/LTE2j2gZD8hLs55TErTTKokvHkrEOWtHYkIDhyQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "3lrBUHc4iQE=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460099 ST = Berlin", - "notbefore": 1623423223000, - "notafter": 1686840823000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5sqOpW4x66Hmcposox406LFRWyGI\nvH2CA+Di7pgvWYIJLX7soTE36YKx53vPYRUhKtzexJ7nI90MtClg6NsTAw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "3oYtiEZ9wp4=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413639 ST = Berlin", - "notbefore": 1623060017000, - "notafter": 1686477617000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzma5iz5ZBIh1KDZhj9fSnqJoKK9w\neOGB/91w6FpdAUjFEKGDphj/MdGRfVro/gSyHRhpaQghZJXRDECOuSAzqQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "5xtSr6KkAGA=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382995 ST = Berlin", - "notbefore": 1622717670000, - "notafter": 1686135270000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8xghqNrE21susvTQHV9fwN3RWhBI\ndCYBu3laCz66NasqyquT47PJXuOifSUiNY2/qOyDuu0Ae8MKIHeUmN5wdA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "6FNkACSMLEc=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571164 ST = Berlin", - "notbefore": 1624540468000, - "notafter": 1687958068000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHrXK9pJSpMrEB4xUrXTTnb7RakIR\nzDtNh6ugnjfV513NFsu5rKopJYYDOk/Bfy5MyNug6nD3kSSUUy5yePrgmA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "6VdOPLF8/Fg=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614703 ST = Berlin", - "notbefore": 1632294727000, - "notafter": 1695712327000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErm7fxPeto31KuUPtQl6VxVchANLA\n6NTLFaFJ5bupx2WsBsICmk32sqx46/ZCHCmiFqGyfYv9IxatTrP233n5zw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "72XVTQ2A9Jw=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383046 ST = Berlin", - "notbefore": 1622717862000, - "notafter": 1686135462000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkkxNdS0EZvjP8j17j2k92vHZpX3q\nSNMDbCqBYPvmqzj1jnNEqsAZSp8uppwoShgmQPdUSmC5jvSaI0PiIRUJhg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "7XLhQx1KXdQ=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614776 ST = Berlin", - "notbefore": 1632295062000, - "notafter": 1695712662000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZftKRdrOhX1qx8KzPyrbXB/V8TYi\n2ZAsEwcr5gkoSkiPWyN+LH0BaRwG6HbqfjpqgdFztwj6PIRisTIQ6LYXKQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "7byt9scureM=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413569 ST = Berlin", - "notbefore": 1623059919000, - "notafter": 1686477519000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEOl2NFM+2gkakrrAa7g+F7KOXRziS\n4ydbxiNbm3XTu+L9LP+oSKMLOeJOBcjJA3RqrqAiWfoMriWGd0LRYM6TWQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "8AnF/hcilSo=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571377 ST = Berlin", - "notbefore": 1624541075000, - "notafter": 1687958675000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE65QJlG4NQ1UKM3/5Yf6n9u430S0g\ntEarOF4e+WrILwUamksO2zJfSgAwXJV2ZzzenNRml1iFffdf4V7yxzgLUw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "9IZVOkJRZPQ=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026523255 ST = Berlin", - "notbefore": 1624011175000, - "notafter": 1687428775000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzIzHRqk76vDGIUAj3dIo3UVev41t\nak5P5oxO+zaOlsKnxUNbo9yqIcpOo7stI8WLrif4RRaiZoQ0tvahSHH2iw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "9v3FozjKAUo=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413994 ST = Berlin", - "notbefore": 1623061275000, - "notafter": 1686478875000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEM7zYPRk1r4viA/oG6BxLec1shhb0\nJoDGjLAUuPxmGSMw+aCQZUcY5MtUqnVD3x//kviuFZDumf65i0V1o7Gsew==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "AQCGDydsS1Q=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383019 ST = Berlin", - "notbefore": 1622717764000, - "notafter": 1686135364000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuCgNX5VUmp7/lN7/UDF5kRDz7qvW\nnpgFOKwv1AxJXbSvwJj5ADOP9wGAsocoSJtPr3LbjbmqAqndrgr3831+tg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIHUTCCBQmgAwIBAgIQbgdWdUXBjiTi9qd1o/ipvzA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDMxMDU2MDRaFw0yMzA2MDcxMDU2MDRaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjYzODMwMTkxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLgoDV+VVJqe/5Te/1AxeZEQ8+6r1p6YBTisL9QMSV20r8CY+QAzj/cBgLKHKEibT69y2425qgKp3a4K9/N9frajggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFM0Ve3NRDSeLhVKYtnpgS2eMqBhtMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAGgPupqaHdMhPUEHL8HFJSTuHZX5kpNI85CL/FXDLfCm13xOwuHnfWKwr0J46yV6t896hvA7u3NyZDEKM1FjCPyfgzF1YOuVbBp79QfJDjcJ7DppWJX9p7pkKDOOHyavCdggNPzBiB2HGZNNy7MnV+GaSnz/w8vfIReX/ZbuIzuO6gDUgwjTwetRA0309+yMg+YmQXi2Rs9yGk2Cf70aynj9Y0Ao3+KLZT/2/pAiDniJ/t5Wk7aMkSoZVyapUSKltYuclNHKoOcNNJ5LhFzTotmUK1g6ks1852e1kGpwkx9j+Bil4XJTxpHoC9165fy7bOQlgS+1EV3RaZnkhODC1Nj+qmmmRRaOVFX+IEqYV3DrG0h3CbnBW8JYN23XEIpiEUhHvHd3BKfcQYQ2udfVR/DQwZ4vVGURWbkgeDODUN8uR6oZqc2K+/aCZNSGD6ceC3ihjRMmzTYC2BhKtTE5l0RUiS49xjB7HcxCKkcYk6sGfFOi8uror0ElDN5k17GbefnWXsC3g8W7iD8GRjBofZaZIlnew/zji2mSQhhx+jSe/jCWScT2Yq2t7j4ZD3xBV6aXs9E58cs6L96KbsaClXLqknv/SOk6bBYJFEDIt3oB/kt7wb25SgwebaWsxXBG7mC2HfgGmvMyO+KDemyueIYejezVQ/tc+dV5QhrpBnAs=", - "kid": "CvktK3hdjeY=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413231 ST = Berlin", - "notbefore": 1623059412000, - "notafter": 1686477012000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExfciFuh1jL3LBPzaNAVmmVTL87eJ\n6wVctSg393nUcXxVL1v5vCgp6jWlRdJglVJj8jRG0TfF3OLjDUHAPn2rAw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "DusseXrzqO8=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614837 ST = Berlin", - "notbefore": 1632295172000, - "notafter": 1695712772000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6JUSmYQDMdlfXO6t5UIh71Hhib6D\nZ7VFVaRHqIiSem6blCKAJ9bSQoEJDjl+zrXVBbnTZYJAtFXt+VBqIzq51A==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIHUTCCBQmgAwIBAgIQdR/Ssc9chsjFSNmB+iE5aDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA5MjIwNzE5MzJaFw0yMzA5MjYwNzE5MzJaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjc2MTQ4MzcxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOiVEpmEAzHZX1zureVCIe9R4Ym+g2e1RVWkR6iIknpum5QigCfW0kKBCQ45fs611QW502WCQLRV7flQaiM6udSjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IYyaHR0cDovL2NybC5kLXRydXN0Lm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmyGO2h0dHA6Ly9jZG4uZC10cnVzdC1jbG91ZGNybC5uZXQvY3JsL2QtdHJ1c3RfY2FfMi0yXzIwMTkuY3JshmlsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwHQYDVR0OBBYEFPeVuN8qHYmsT07fPk0gmp/22ZJmMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAf8NaC8deTquKkKHJbs62dGMbsToP4lvuXUy1cc7RgcO7wIJLilnIZInqdQn5BLlkcobx3vsUN7bk2jLGK8bLAvjtoRkb7fzOrtU3uZkX28dmEomJq0f8lon9tG75oYiUPx4XKjczBBow9Dau8WPHCgaXUGhRCbNELIXS3iXZ/LSTQXwYrf7eOZE82BfeVWbjaUuirmNTfWj7Cd1mQLZGcrndBeLNmfxiI5IW+7jzLqd6zdQQTLrz/2Ol3pU072Xb175ixyZTu47hwxU5vsbcNGK9PIFrKFBDc8j5XLQSITOvXkHWZahuIVZ4T6XxV4i+hHuXi8XFPWbLwJj9KyHIqYxNHQENNfvdmELI4ZrtVYPBxqj5ypIO44wHwhSxAEaoNPqVHpqVtmg9+5ve/20iE632ZPUqvVY+S5M+TGRDx7V/46vEiFZRRNHvj0kT7GmQBmunAV4nsNvxHO3u2f+8rhPtWo4+XFGymI658Au8e31iIo5y3m1aUSjxclY0VwqDEojE/rkBX2Cc/E4iVy7ovekIRRrPipZDhtULbdKkIWtR9aRRCNsPs2O+RaBKl1slNG9VOsPNgCs1bUiXpYrnVvFsQo5l4WIi/yvjg3GWv+PEgfgZaOmQqPy118SNOgGD2zMZZiHRjzy7wMrJJoqWfMNUU+SZ/ZxLHkPs1XXFOcw=", - "kid": "EDSWY8Hnul4=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614916 ST = Berlin", - "notbefore": 1632295270000, - "notafter": 1695712870000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESb7iWoF0mDYKwlP2EkoD9oJdt0Ew\n3tomFYMPK51gX10VgQPMGAUhwigTTGrSJsT865r6sshKSy20xzsrMZ3buQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "IKMstf8yj/4=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414212 ST = Berlin", - "notbefore": 1623061818000, - "notafter": 1686479418000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyxW76RQrbDUSOEHxYksWk5CaGGyg\nxDJJ7A9jRiop+FlpwmPReFTmJNVRMCjE56zKy1oxdi4KXCHI/yJIuw4zWw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIHUTCCBQmgAwIBAgIQfgStcxX0bZR8G+U9u9iHhjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDcxMDMwMThaFw0yMzA2MTExMDMwMThaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0MTQyMTIxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMsVu+kUK2w1EjhB8WJLFpOQmhhsoMQySewPY0YqKfhZacJj0XhU5iTVUTAoxOesystaMXYuClwhyP8iSLsOM1ujggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFC89WKGag45TcGYXFpSyIbOJ4jzIMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAyr7l2zgCbY/NSYVgR0KCs59kN32hcdUg/vgNb6BzJ9GuZaoIOVU4yShzFqBd+4fF2oPfjqXOngdivO5WzV6OyVigoB/eMgUzIRKRVpYV7+Mlc3dMnXb5A032oQiTZitNGJzA8qUVx8ZofBi3I/COD4/vSaNDv0ptn0KOGTDAE6NXeBMCzmbquQDs+SE/eoDp4xIKUHzwRIrM0OG3LwxOtGEtBZmX5iJZXAJ3Gq1LCzJs2QoBBa+1W5ANkEgKtJ8a22MWydE7F78/vh9z2IgTIevUpvz62WIFUkEk/qow6C9xR9xxIu9DtlkeuzNRD2DyWj+p7Ak4jpQRZdHLQcLlafn7BCu/WMJ1lWuw90e4kdT8imlY2MTePfSr2mQQsP6yHe0kDr1EyfW1ZogNAJxuSrf5nkYPKOnPjbyprYVp5fSjb8HX+RR7jBfeQ4Dcub1FzKYY2OFkRyv4KuR5RZkWzY9HNE+xocwfhZoJSGhZ4dN9qAKA06EeBDyoRza4hgATym1r1kcOKlO0x7PaaIFWG4Lozmg8pkeu38ro8Dh/ruXindtJzxDljGzTuCWZJyoBQiXLCbuWdv+LqJYMwSfHAO11/iYEwxhRHKA+TNkHoeZHh3b1H1P6MrWeUkm5dX2q3jegRjv19sfkGZOeHkiXsfcIKZEuRj6eUhX+oWNgvoE=", - "kid": "IZftFLRmKGY=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026164195 ST = Berlin", - "notbefore": 1620396932000, - "notafter": 1683814532000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEorGGRfEic2GL5o9XnITdq3nd9d7p\nWDvy6waSkDMI633+wvCluSBV3rWR/QkL3FdfpcL2FOCWaAR5/sXOihpfrw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIHUTCCBQmgAwIBAgIQUl/a6dCJQYWN7+hvCmQMjDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA1MDcxNDE1MzJaFw0yMzA1MTExNDE1MzJaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjYxNjQxOTUxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKKxhkXxInNhi+aPV5yE3at53fXe6Vg78usGkpAzCOt9/sLwpbkgVd61kf0JC9xXX6XC9hTglmgEef7FzooaX6+jggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFLZUelpTEvjvhoJ0FEt3jzVhmdMtMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAobJq9rpQ7gjNp0cvnJgVytpdrq9Brej3T/Jef4/M1YK+7uk1uGSDiR9+go/49IWiDFWBX5HBa1s+8bHxAUQNvMP7Y3Dje75KFX1a2L2XExjpoKxkwC96L/UvKZK5de3h0fZDGHFQb8nQB7CT4Ygky5iFO8TnRdSoVz33su+OM0d6LejPP+SU21bsg//pzVVuzDXAF2rngBbcYSSjSaZxKKfGAMv9p5pnXbmjeNLPn7u1cBCu20CKbsMu/ARfisW+jR1kAFo5gfOToOd2xetkKTL/p8wC8PdJc9vK5wimEK5p/lgFG3i0DPfDlQ8Zjs0yTV3lbuaIjv4EQgb8GjhmcJOlpO6zTVp7kDLO4vgSnW45HS//pckR7rijMb9QRfn6fLE2KW3l3er1XC+/9f1oZBf394PTKJevOQEPQynWuNbw29WyFElWdFwnPbvup6g4D4a6VcUUtDLYAMX8raSpvgcTu5PjVgTnsTItSgG6rz096it0dQODyswmNUdig8TxYmalJNB0SMLijCpodeUZehOtpNwJ/9U5ejNEn5puwaKjwiVom+OeMOLj5ujsNrhQP6KxlfjBGcz2xV+9dxXgez/izIoo+Q8eaHmXWAbhOH2BOkCceIwihL/2Y28IlBCL2f47YOKpEAU0zffeC96U0XzKYDV0I3jIOuyvySylMuE=", - "kid": "L7XIA2gi2ps=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460044 ST = Berlin", - "notbefore": 1623423085000, - "notafter": 1686840685000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqXPIlxahww0kgegwTgRNQWpChqH2\nPfXelyd1D77uo8dy08tlDhsE7zpyzWXfZTUAMxPtgw+JTqiaL1FQtvdkyA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "M8bcnysCMj4=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382913 ST = Berlin", - "notbefore": 1622717283000, - "notafter": 1686134883000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKPuGAJsDLPU7vw4aDg52nFxuxz3A\nsJtWUmtsY7tQegwCVfll+e5sQJu6y5CZnOD+gKdMKfnjuB719z/tF9qB9g==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "MxhfdcoHinc=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413347 ST = Berlin", - "notbefore": 1623059592000, - "notafter": 1686477192000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEszk+l0BVoDOXZg5SKeeNbLUAggqL\nKB2a3NlMXWfxfdcdHsPqqlKWcFTZBzD3/kIyxJi5rlxk1Uk2JsFNEbjt7w==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "NCdyt3s+cak=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382843 ST = Berlin", - "notbefore": 1622717035000, - "notafter": 1686134635000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUCSPQOg4hIgEJzD2PHFjccnQzSQI\nvYs+gbBuJqHxv7tCAEpyEj5XIfjjfMjNxA+so+AdZyEfwszhKr2A1/nVSQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "OKpEjMo/2MY=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413541 ST = Berlin", - "notbefore": 1623059843000, - "notafter": 1686477443000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/eGWuKcNV/od7Eh4EJuiqBPv+0yP\n4q+qzhOlNFdkzuuWy6l+hhjVHxdfxp4XDVvOUV2D9wff81/tNfBuc4pCmA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "R7q7yd90ZPU=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460123 ST = Berlin", - "notbefore": 1623423294000, - "notafter": 1686840894000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh4UMl8PsQUsu36Hq7xK+dyGWGrEL\nxsfzVOny20ZnkHhyBYxBUIGoHEYl70bpzjFBJN4WLGtilZD/0aLWE/+ykw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "TGjTR+Re+yk=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413860 ST = Berlin", - "notbefore": 1623060911000, - "notafter": 1686478511000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEs77Dr92zb+HOBL9gdfCWOwkna+9D\n3Kdq0HgUqpVByi7kqykRPAFKPZBA771qyoBy0uHFhdYIzNAPzdHj7KrPsA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIHUTCCBQmgAwIBAgIQdtwg/AvsQRQYNembzxdETTA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDcxMDE1MTFaFw0yMzA2MTExMDE1MTFaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0MTM4NjAxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLO+w6/ds2/hzgS/YHXwljsJJ2vvQ9ynatB4FKqVQcou5KspETwBSj2QQO+9asqActLhxYXWCMzQD83R4+yqz7CjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFI2kXVSw0GCts+2a6IR0lRF4sHRBMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAQnLsCxLlLS1wifrtAP4R/4g3VFTVlnLkbgkWa6NQqZ8E9lZbZRxYNUSDHbgV0u18dWeFkeElhxZcR5M3mOFBuEmK5PJ1QkL/LTk2O8/FyV/F69AmjLPWXklkoKfK6Cr9r/ewlHocByvLD+wEB+/0zIBkQa1OvLhNY4LlwiWKqnKiF9GNCaw5bwHbJvCym3eZyyKZlY5Der2RXMSUHP2k5NNSoRyE6RJXtTxQ4iMigd3mumpCHweDtCu8wrirTMXFCfl5lBvG8V29vEI0XmMB5AXsWJbu1MR1WsGCma+xb3DHniex+art1t8l3oM96DMGhG5eQhxiSXGXhzSl57vISTUajTrCpJuEClcgG6logprZDpE5mAwrlDuVcO2ILYDzlZN2Ilq5BKYu2d2xWfrJwubx5CX5TyERIrF9z4kbOJqsbV8x34d3OBFU/yW3UUcf8F1tS40AHiUCP/mVmbelm2KoUbgHS4g9tXy6R8FpKfC1i/Jv2EkYonMsgN8Y1Ocxdh7Sm0CQC00bEFDjYlsoMSclroDaRLaSNOvRtRSAgPM6yoj9O2kxjmQCnoTZkR/jmhsUmvA3xOMtEQtxLRDt02LVfc7R4BewZB5NdIC1QYr9iu0SyzQkifyDLenkPvyCgsmvqJtprKODHSP89izJmGptcPP4Y4R8/paQKtjM/1c=", - "kid": "TpQIkAHAym4=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413417 ST = Berlin", - "notbefore": 1623059674000, - "notafter": 1686477274000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEopaKkUUE4nCgNpRBE9ugmShuJd90\n7aOocVvFvxPLxiJ5qqQ2pq/GVsq5Vf/0V/b1V3rAoKO8bMvxP4jkTWTxqQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIHUTCCBQmgAwIBAgIQSmzXIutph62voZMKf080cDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDcwOTU0MzRaFw0yMzA2MTEwOTU0MzRaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0MTM0MTcxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKKWipFFBOJwoDaUQRPboJkobiXfdO2jqHFbxb8Ty8YieaqkNqavxlbKuVX/9Ff29Vd6wKCjvGzL8T+I5E1k8amjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFJF68AZvWQbq9LpkM0RG2MkcKlLcMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAtTuwh1wCg8gltwzM7ReqjnWjpaDVVg5t/ULFWfZ6ZL2ND5wGAbSQLGQOoYF8rYbY3oXq/SkWDJDcmsBO2MFODujkomMkb971yvLXYzHlNUZGtWEOee/DZVZUkws6Ly+NLtCQPRm9h2YQyMGThDa7IDilrBg3nXgoFiQsYqXTZr70Q1N7HzMylaRLFpeVVWZ8Ldj4QR3l3+U9WUaaMk4ZYE5ycCCLpxxx5qQaN8+IO65HtcYoYB1WpR6JPantndgvivdZXSL/8sZCx6ZOO7LmL0h8YvNLFWc+0rpEJhxuJrPWrXlc9d898KBMyEkMej26tOUDzXkVui+Ub/0nwTD8xp6HYS3xTbIGjcZGUfayadDpLZBBtoJDFw2zQ9KHzbUckd6lPhXaBkfRAHBvUeaGFy1l7MU3sEQrY34wJbICLcqCu/AwVomH2esMJUW7DrksMmnIqEBZffHwFj5fH0ETqrIbmkF/Bj6uGkyS1biDTrT+6bSiqTw+OrtpbHEd/pSeh6iJn2I0G0eeeb1Wg2FUlJf2D7f/L34bBlTdtAQ/NWgGkwq7X8Yy67IAwwhtJGugISR7jLdNCg060n25NZ89CCXEFu4y552Hw9DdKPsvrHqBtGRBMcT4LC1QMrp9twQGLBfv0CfYJzPnbS4pL5sAUI+6Ec5zXtppnPWpWF9U/QU=", - "kid": "Uj77p+qIQNs=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460026 ST = Berlin", - "notbefore": 1623423021000, - "notafter": 1686840621000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh934IiMCsXp977pDeG7Wi11S+uGG\noem6nSNbtCILcST4+/FqGlLOBJvIZPSh3hTHx2V7V+3Lzqi6R2dahOno/g==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "XkVWZqUeeFc=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413693 ST = Berlin", - "notbefore": 1623060128000, - "notafter": 1686477728000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyV/EBSORniEE7SMMNmvSWT3dOAuD\nuviDHFv7rvnrcZ2wyfQkIjyYPkrtVrGwiNdwOcbHKreB2eW6li/+fDQPEA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "XuCERkHu8kY=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413897 ST = Berlin", - "notbefore": 1623060976000, - "notafter": 1686478576000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5eOmRsTsPlyUVzKnWK3xYlY04+DO\nffgg07nWx4FTa4mouXQ9nfCxmMHgpuZv2RxbVSzYzewjcmKaknNEYDdCdQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "Yr8a8Rd+zqI=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382773 ST = Berlin", - "notbefore": 1622716737000, - "notafter": 1686134337000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZM5AMBImcqdKPFM6P5xx0LmZxo8\n1NcnuydrdPUQaaa0NhsRctuX4qB8YSd2pG12ilwSSfEcgju8I7AsFJSAOQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "ZDoFfkn+yhY=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414081 ST = Berlin", - "notbefore": 1623061438000, - "notafter": 1686479038000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaOhuajeY34pPu/12SnuMv2qlG8Er\nMOj7s0eAEM2679YVzsiZWLIp1S1jNWsoIJJTEiLWUtj1mqCsMOR3gA7CBA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "bKmas9wa5tc=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571270 ST = Berlin", - "notbefore": 1624540790000, - "notafter": 1687958390000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUtMktlZKpvOfwhumIvsvpKMWE1Ly\nMq32RkRCbVM5TBBxHsCUYdXSjbqPK3cZ8tYkCkcYlyluKbQO++HaSsGjSQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "c1XrnEBoj/c=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026164168 ST = Berlin", - "notbefore": 1620396811000, - "notafter": 1683814411000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsLa/zRhSxxsmrPE/RwPNKXGblvI4\nJrdqfPNYpuPn3TpkExb/vod11MuW7BismmErZcJC+oWuItW1UH+wcXHJcQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIHUTCCBQmgAwIBAgIQaGDRZfTGbC39OIGT8bGzTDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA1MDcxNDEzMzFaFw0yMzA1MTExNDEzMzFaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjYxNjQxNjgxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLC2v80YUscbJqzxP0cDzSlxm5byOCa3anzzWKbj5906ZBMW/76HddTLluwYrJphK2XCQvqFriLVtVB/sHFxyXGjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFOD+kCm/8vMqv2+fE52qq6SyHE5iMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAQQNbHHkUH2QW8zZWFzaUTJy+OwzoXYxyFt+sAOcYoeEv9057PPyJNDqZSbJV0Mt1jFHaukPrhFjlmnFd5BLGmljCL82d2hQWWzPKE1yYe/dim1pU3CVlbhWq49VL9pPeSXRfBeMue3EyeKpGjX68i84XAUclBeuHRt6OGIlRpX+8LMj3d7FPtU5YXOTixkIzQf/D+LeIC9kTkKChBEP30t+MXb2qc/XSPHYxr4Ommq68PY+63YpMxLFCTXgiPnpu4SVGI92EZyfiGOGfPHRWMYwhsYmvei4N28CFMTT3a0dRx5qPFXdAhNqZMI/bUd2m2BlyNE5kUeQAWi6LH+cmnbWP37S6CgDInh4wg68CO4XRtN7GmdHQ3msQ/v1hg3A4yCbA+iOf+E0ktuVcFdz5qTNQE906+gf9A3aUB+Iwzo6l+Raweiw7J4H5nrzBRV2VbXO1JzKke79h3S1F4DDBfJrG8nojtGsXWlaKl3LAIr0jmqn3cRz4VJ6wa2W5/9TNXInqjlbCcqaTC8p9pApicfwYqI02ROeaL/ubAp+5Ytbms2Xbc07JUZuEN1bMeHT87DWOSr1aB+f15KxpDCjUIlkrFlzkDyvnCabSQGrSH+Zhgs4JwOL33X6n+MtRZ1BOFwW//PP03obm86XUQtO5Ml48mhiH1ngbkHolP8BLnC0=", - "kid": "dhSzPDr4G2M=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614758 ST = Berlin", - "notbefore": 1632294922000, - "notafter": 1695712522000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExfzglJTFBrKFErvCRkqtHq0U7O7S\nmxzRntsiUENJFzkpxD0rHs+0H6Qb23WUiaDe368iOrWfNk03uOEjviJurg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "hWoyHrtJs+E=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382931 ST = Berlin", - "notbefore": 1622717389000, - "notafter": 1686134989000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5D4cdY3G91kHagLyAGon0ufC2jqz\nQ17V1wjvYHOLxZSY1evmQVhovIVUS9AU5Z73aeW++2ZyNUFg7L/9Zk1E7g==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "i5SVuCsR5TA=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383125 ST = Berlin", - "notbefore": 1622718187000, - "notafter": 1686135787000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpobykjScOX2uy+5C/BYBXDRcVUVO\nBDWLUgUaIhP2q0GoF8FBBDYBjx1peWhf4Nd+rtjBivr5WDcFmjMVn+FVzg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "izUDZjGtHWY=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413286 ST = Berlin", - "notbefore": 1623059521000, - "notafter": 1686477121000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgxLpjMDX1/tMRghYLQKMI0nK4UkZ\nuK9pnAAJTC7BeQUaHYFp4pJkC8z/VHcW74CpwTeTRITzs4MZflkN/WHtqQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "juskqrNQf6k=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383107 ST = Berlin", - "notbefore": 1622718068000, - "notafter": 1686135668000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtLZ1N2Y7UQHgRO3yKGyRTsJWdYFG\nDld5kbglFGHrMvZQwa5XoBclH9xTrP3dXcTsgjnml7Hx5YZOnGHhJMrenw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIHUTCCBQmgAwIBAgIQYFM56IjYwAfzNPz4bHe+7zA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDMxMTAxMDhaFw0yMzA2MDcxMTAxMDhaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjYzODMxMDcxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLS2dTdmO1EB4ETt8ihskU7CVnWBRg5XeZG4JRRh6zL2UMGuV6AXJR/cU6z93V3E7II55pex8eWGTpxh4STK3p+jggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFGjKw6EL7Nbgc7rb5AWVgAglrOb1MA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAyYU7vUVO4YioEqUt0y9N2DZ1uRGys0HWyz3W7fccQXco4rmNqyOGOx5LhZyLsDlRLTizY5D4nXys+7Go82LCIaDEYEwmh4droEV9a3u65gQB/8KUsolNzUqxb3a8V9rjuzL6U+7c/QXB7JvDACWKRDkMtjc2GrAxIx2Gyyc0jnWOjXKa6a+HIdFtPNj7MQKAOGyLCCmhP+1r2ClhmCro6813IwD9UqNfSxtheAqniqhXf0w9Caye2XUE7WaiJG79rcqwrCzYPyDHWS7TyxxnNkK2WnArjYDObiCX9BN5/iM8+raIkvl5vsqoIZs44cf7kU8kwmtJcTbQM33VG7RkZLig9U0AlT8VUUICXKom69K2u/KG7V3QhMhkjDB+YlvIZmOGhS40NrALIJYfoHczZU5mIU1WMYlkR0Rs/6NhTmx/G04ma0Cd1Ps2oW0/XpRmV+Efm1MhZJbI/i9G0vQcBdpoodkJ3wr/HAcnHjur6vLsyQidswxwSMNE7aJNIlMD1aScD1lLH03o3MKdjoDEx2njWpynVg60mokYjF/hN0xmuDKmcXYyUCH8eV7HmF+i9ekp/F0yXQUN6eHFQ/YZ8F9OxMhQZKoclI4yISVGuEtMTFPSsNk94Obg1iUHiCxqFDfM3rMWDoRbftgrQSUo6JxtO6vH90fTYle4XGXnPPU=", - "kid": "kjEx2H7huNE=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571313 ST = Berlin", - "notbefore": 1624540920000, - "notafter": 1687958520000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx4HHLyxeH1wp/aPCCwyRxWVEcfUA\nLP66kgwanudG4b8upvGFMsVXpzg0ohEParVa912A9UBuCkjDM6jFAsgZIQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "nHmZ5K96UY4=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026317104 ST = Berlin", - "notbefore": 1622032330000, - "notafter": 1685449930000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJmki+G1pd9DNiLX/eT709p/ZeCd/\nmcjrmRLoTgP6nlDqJxUvZ0rQ64y/Lj2Vk5ehGHtuV/RmyuNXJYxFB58bdA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "nPKEYm3gXzU=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414115 ST = Berlin", - "notbefore": 1623061538000, - "notafter": 1686479138000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd+grPnJ58prZvOeLC3vi9P2mnqlv\nvGNfsbT0HmxAVHAoNB73PT149IhGWhNZFSMFRel7vu8vi4wPoaSuIjraPw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "nTrG8glLUls=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414160 ST = Berlin", - "notbefore": 1623061647000, - "notafter": 1686479247000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPdriVdFsidKrE0nr7S+75iO7+8LO\ntzFp99++4BLqKKMKn/mAXvgkInEN5xqsifTYFWk9KmLcUGbD9dtwQlaA+w==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "npo0ZWgdQSY=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460008 ST = Berlin", - "notbefore": 1623422950000, - "notafter": 1686840550000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7f4SNNst1BMsb6Ub0yVCz01aDWB9\nI2/ajVbLyJpTr2pKwSocQpiM0mcy9XX+dMYYlUaQVBOmtoE//fnw8w2vDA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "r9YkEJZgi9k=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571191 ST = Berlin", - "notbefore": 1624540537000, - "notafter": 1687958137000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbQZPoqfjpTx8m/wAZZWk3uoDxzfp\niISsNSuZg/+9VN/cSefrEHFRvQwM2AjN6vOjhzVMdjZ14MSRJUMJEu85Lw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "rKMDA66RiLE=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571331 ST = Berlin", - "notbefore": 1624540997000, - "notafter": 1687958597000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+fBKs9tgAlGoiBIglL4JDLpguDzB\ncXqCuIulrUkBy/wZrJtv7fsirU/YCvcn70rPzMCloqePEoDPCf1wWX8Dpw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "rXP9L7xddL8=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414197 ST = Berlin", - "notbefore": 1623061757000, - "notafter": 1686479357000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE40rFr8baZEDNvONEE+Rxf5ePnZLL\nmqR+5Uwx/S5I2ylMijZyZ4c2kD3OyTHlfTNa1mS09zXnXNJKqZyqi3GGQw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "sYXcYixrOGA=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414133 ST = Berlin", - "notbefore": 1623061594000, - "notafter": 1686479194000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2TqSv2wB9nB0Ev3u5VmckxWzq/L0\nfvl1HVI3ZBXCF+7k55bo0zUABUPBz6/e1PaDxDCIS8+NybrbpUT3w5D3Iw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "vjm0I2ATJ+Y=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571243 ST = Berlin", - "notbefore": 1624540685000, - "notafter": 1687958285000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDRVIqu7uo4HOgXlXyxYBl2L1arxx\nvDfwfgnYHjgVKQpFEj+hV9YEjSECJS+YrhGr5RXZU7eRzKvfKtRI1POaww==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "vq08l/LTxhk=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571119 ST = Berlin", - "notbefore": 1624540344000, - "notafter": 1687957944000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElGYxcioPZFzAfJHtsB07FzUDpJlc\n6C18W2kcnCGEE1ujahisK6ZvE+UoSGh4ABGNQOX8RypMp4t8bzj7VAqI7w==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "wb/2450PPrc=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571298 ST = Berlin", - "notbefore": 1624540865000, - "notafter": 1687958465000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6/QS0f7r433yqdq7XKh3OOKhOEig\ng+VVixYEToozbg9QgAqADIZYDe3WEQnO8u8fqdzd2ouVZo54/Gc13gszYA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "wtYpyAmNmdk=" - }, - { - "issuer": "C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346", - "subject": "C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382968 ST = Berlin", - "notbefore": 1622717573000, - "notafter": 1686135173000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgMhpOktfDD7Vn7Wm+BlHabFbpOs2\nUmCVrtIpcOFpIlr8+2wHP5/VSUZslExSo284fpwuoJ5eKcjDuvlCPjZNhQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "yWCRdph8XJs=" - }, - { - "issuer": "C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA", - "subject": "C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020007", - "notbefore": 1635986474000, - "notafter": 1961714473000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESDFA3IUS71aOIaAiVxG9QDby5hfT\nSqPSuHAagC8/vhKbIG6quGGAQjRcxbjxB2+KCt8RhSkBzTPpzX8D6iSpBA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICmDCCAh6gAwIBAgIUN7QAlQwRtBkiAZZmQo6EuSzr2TkwCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNDExNFoXDTMyMDMwMTAwNDExM1owgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESDFA3IUS71aOIaAiVxG9QDby5hfTSqPSuHAagC8/vhKbIG6quGGAQjRcxbjxB2+KCt8RhSkBzTPpzX8D6iSpBKN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFMkTYUd+m7dTqQrgXROc796CHD2sMCsGA1UdEAQkMCKADzIwMjExMTA0MDA0MTE0WoEPMjAyMjAzMDQwMDQxMTRaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjAhZylOip2hsx2QTptQMSKUwjmA5MSWxJi01hCB2cUQWYWBLRP+RzxcVC2tAnUpGiACMQDoNr7Vs/ID/BJMMHlkj9WAfb1vbY1ePMZGtGh4aNCi9B90uZczIQctXmP4w/o6G0c=", - "kid": "0NQWnxTv90c=" - }, - { - "issuer": "C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA", - "subject": "C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020010", - "notbefore": 1635987788000, - "notafter": 1961715787000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQEqBzWkYP17/i2b+EPcLpiQvTKLx\nasVDjA3A7IvRt9RHjYFIQGpFQCR7ZJLD5XQNsjcFfHzxwVEITkb5M7fIyQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICmDCCAh6gAwIBAgIUNe+sDjaZPIfOw8OIMwqniNZ1ABEwCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAxMDMwOFoXDTMyMDMwMTAxMDMwN1owgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDEwMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQEqBzWkYP17/i2b+EPcLpiQvTKLxasVDjA3A7IvRt9RHjYFIQGpFQCR7ZJLD5XQNsjcFfHzxwVEITkb5M7fIyaN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFIrSwiSmYianLXQsxR6ZAFL5/ltIMCsGA1UdEAQkMCKADzIwMjExMTA0MDEwMzA4WoEPMjAyMjAzMDQwMTAzMDhaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjEA9UwmICswUwNiWRzvb4V+U0Z7qKebbIIldgtTp+nHmcme5HGjKc8UuT/yvuzzK4qoAjBvlH+kAQGZuXrSXduh+CtY20W+NEPrYV6bjDUdxQEzCxmOrsA1LWl2lHdIcLRSDdc=", - "kid": "dy8HnMQYOrE=" - }, - { - "issuer": "C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA", - "subject": "C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020009", - "notbefore": 1635987543000, - "notafter": 1961715542000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEn/wOHL0ulsMkJCwPvwhEPoPE2LiF\nf9MEsma3tYaPfANxLqX4K5e6Lk9F3tvg8OtBnVBI1amxen9cOlmSRXHg+w==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIClzCCAh6gAwIBAgIUfn/tDIC04XNn08DedD/Mgv0Y7Q8wCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNTkwM1oXDTMyMDMwMTAwNTkwMlowgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEn/wOHL0ulsMkJCwPvwhEPoPE2LiFf9MEsma3tYaPfANxLqX4K5e6Lk9F3tvg8OtBnVBI1amxen9cOlmSRXHg+6N8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFAHaV5pGrS6VpJVmDC3vnQ5FbGlYMCsGA1UdEAQkMCKADzIwMjExMTA0MDA1OTAzWoEPMjAyMjAzMDQwMDU5MDNaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNnADBkAjAdOz+yESmxwxVmK9YQjs4MPYfcoCxU19xPeB90YL5mB+uDH3/Kf77UTnZehqtX/m8CMA+YOej3Ymvg3flZJH/+lQ5owd4lvU4PJTxwQS/D+JroiKvnIeG6O3WT9LvnRSKwEA==", - "kid": "jIF6MH+OYkI=" - }, - { - "issuer": "C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA", - "subject": "C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020008", - "notbefore": 1635987266000, - "notafter": 1961715265000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+axE1mKfKiVwARulc2LnH6co1SoC\nrfqtL11PQqYh7TBRrdawgzPokpfjoFGDkMU0ZPg7cnwilW6LnYH+vkjVhA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICmDCCAh6gAwIBAgIUapkq2mxmLiK29lTfgGNiKmLH/o0wCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNTQyNloXDTMyMDMwMTAwNTQyNVowgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+axE1mKfKiVwARulc2LnH6co1SoCrfqtL11PQqYh7TBRrdawgzPokpfjoFGDkMU0ZPg7cnwilW6LnYH+vkjVhKN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFGNFtRIN7owNYF3S4WS3IkmDxnqQMCsGA1UdEAQkMCKADzIwMjExMTA0MDA1NDI2WoEPMjAyMjAzMDQwMDU0MjZaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjEA/2L/gI6AFNxKty+dHwt8nPypmd0pJDWe5ePduw1gKQnOxqM62i95FHFMPxU6uJBjAjAmDdxcr1IdCU4RO5f6PY9AS3pdb3VAkifbZe5cu2963QvvCoyfWWFXwj/D3xsvTGk=", - "kid": "oMpN3FsJYsQ=" - }, - { - "issuer": "C = GB ST = NI L = Belfast O = Department of Health OU = DHCNI CN = CSCA_DGC_GB_NI_01", - "subject": "C = GB ST = NI L = Belfast O = Department of Health OU = DHCNI CN = DSC_DGC_GB_NI_01", - "notbefore": 1626708138000, - "notafter": 1689780138000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZ+fdcTa4UWA/6PT5V4a0+0j1/s++\n4JQEsW/HvGnxxP7mGfuQDfn/FRdUMGQtTkoCGaky1gpYVZXkkoYu9ZjlUw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICWjCCAf+gAwIBAgIURUEDe5VRVC+xFuvzbQDxI+NcG3EwCgYIKoZIzj0EAwIwdzELMAkGA1UEBhMCR0IxCzAJBgNVBAgMAk5JMRAwDgYDVQQHDAdCZWxmYXN0MR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEOMAwGA1UECwwFREhDTkkxGjAYBgNVBAMMEUNTQ0FfREdDX0dCX05JXzAxMB4XDTIxMDcxOTE1MjIxOFoXDTIzMDcxOTE1MjIxOFowdjELMAkGA1UEBhMCR0IxCzAJBgNVBAgMAk5JMRAwDgYDVQQHDAdCZWxmYXN0MR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEOMAwGA1UECwwFREhDTkkxGTAXBgNVBAMMEERTQ19ER0NfR0JfTklfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARn591xNrhRYD/o9PlXhrT7SPX+z77glASxb8e8afHE/uYZ+5AN+f8VF1QwZC1OSgIZqTLWClhVleSShi71mOVTo2owaDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFK0wrYr+jzkfX//YOKxzXH7hoBxZMB8GA1UdIwQYMBaAFM8DHzf3z6ezJWzZlg9ICbLTTRxnMBYGA1UdJQQPMA0GCysGAQQBjjePZQECMAoGCCqGSM49BAMCA0kAMEYCIQDfC7E6QPDcgPAwNkK/uRJDMnUWOfslHC6CyeCKPcm3SwIhAN4tcL2/7T6HYbfNv+hfFz2mAGWLCa8wmqJcs9YsBNG7", - "kid": "1J9pb87ndV0=" - }, - { - "issuer": "C = GB O = NHS Digital CN = England DCC CSCA", - "subject": "C = GB O = NHS Digital ST = Jersey CN = DSC_DCC_GB_JE_02", - "notbefore": 1632923452000, - "notafter": 1695997252000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEORjyQk/KOoCEJWGfLLyqyEcOqRRr\neyVdSH+ELi4GqqS17W4aYeOl2cvm/5unZwgCQUzB09uxYESXGmBJ3xgsEg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIC8TCCApagAwIBAgIEYVCF1jAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM1MDUyWhcNMjMwOTI5MTQyMDUyWjBPMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxDzANBgNVBAgTBkplcnNleTEZMBcGA1UEAwwQRFNDX0RDQ19HQl9KRV8wMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDkY8kJPyjqAhCVhnyy8qshHDqkUa3slXUh/hC4uBqqkte1uGmHjpdnL5v+bp2cIAkFMwdPbsWBElxpgSd8YLBKjggFvMIIBazAOBgNVHQ8BAf8EBAMCB4AweAYDVR0SBHEwb4EPcGtpQG5oc3gubmhzLnVrgkpodHRwczovL3d3dy5uaHN4Lm5ocy51ay9rZXktdG9vbHMtYW5kLWluZm8vcHVibGljLWtleS1pbmZyYXN0cnVjdHVyZXMvY3NjYaQQMA4xDDAKBgNVBAcMA0dCUjByBgNVHR8EazBpMGegZaBjhidodHRwOi8vcGtpLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmyGOGh0dHA6Ly9jb3ZpZC1zdGF0dXMuc2VydmljZS5uaHN4Lm5ocy51ay9DUkwvRU5HX0NTQ0EuY3JsMCsGA1UdEAQkMCKADzIwMjEwOTI5MTM1MDUyWoEPMjAyMjAzMzEwMjIwNTJaMB8GA1UdIwQYMBaAFNouzsP3Ovv4vhBzqMTxiL0r1PHKMB0GA1UdDgQWBBRxHKzMVi9gZ9kvS9PBsjKIxWf96DAKBggqhkjOPQQDBANJADBGAiEA842nlrMUsAYRJhQv4DeltKOnR1kyBBcIiqHBRq+EIiYCIQCeUc6GkrFiI6jhQzgD5/c/A66+AiRSZ1Z3SMNM073D0w==", - "kid": "1PtilTAMiyk=" - }, - { - "issuer": "C = GB O = NHS Scotland ST = Scotland CN = Scotland DCC CSCA", - "subject": "C = GB O = NHS Scotland ST = Scotland CN = DSC_PRD_GB_NSS_01", - "notbefore": 1632935105000, - "notafter": 1696008905000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEr9bj163kKNBLl5bxWhZBlyJv3pHa\n2QMb24OAdXZwJN6xx2CR03VG4DhQmd9wzVuPmw164+T7/sDmoRNOh4QbQQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDKTCCAs6gAwIBAgIEYVGffzAKBggqhkjOPQQDBDBTMQswCQYDVQQGEwJHQjEVMBMGA1UEChMMTkhTIFNjb3RsYW5kMREwDwYDVQQIEwhTY290bGFuZDEaMBgGA1UEAxMRU2NvdGxhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTcwNTA1WhcNMjMwOTI5MTczNTA1WjBTMQswCQYDVQQGEwJHQjEVMBMGA1UEChMMTkhTIFNjb3RsYW5kMREwDwYDVQQIEwhTY290bGFuZDEaMBgGA1UEAwwRRFNDX1BSRF9HQl9OU1NfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASv1uPXreQo0EuXlvFaFkGXIm/ekdrZAxvbg4B1dnAk3rHHYJHTdUbgOFCZ33DNW4+bDXrj5Pv+wOahE06HhBtBo4IBjjCCAYowDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML1NDT19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9TQ09fQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxNzA1MDVagQ8yMDIyMDMzMTA1MzUwNVowHwYDVR0jBBgwFoAUpkyHivaTZHND98x+LTp83mX+1ecwHQYDVR0OBBYEFJdsDfNoq4LpdpKboD1l1QO6vomQMAoGCCqGSM49BAMEA0kAMEYCIQCk2A3NDa/GEeAmLk0H0ryrSXR8XE1ramqYSX9/DCJ9WwIhANDgNfuShBJxUxydkgQtQ1Z348dfpLye7Dsio45DQaT5", - "kid": "26YSc5g0nG8=" - }, - { - "issuer": "C = GB O = NHS Digital CN = England DCC CSCA", - "subject": "C = GB O = NHS Digital ST = Guernsey CN = DSC_DCC_GB_GG_02", - "notbefore": 1632923277000, - "notafter": 1695997077000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsrcO+nNM8OkcO7IhbRh4D4D++Tgr\n3PyGt9q6vXkSwIY6vctXRXke4WdrRtWbYzB8xGREifNxSgd6Fdik+bg44g==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIC8jCCApigAwIBAgIEYVCF0zAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0NzU3WhcNMjMwOTI5MTQxNzU3WjBRMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxETAPBgNVBAgTCEd1ZXJuc2V5MRkwFwYDVQQDDBBEU0NfRENDX0dCX0dHXzAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsrcO+nNM8OkcO7IhbRh4D4D++Tgr3PyGt9q6vXkSwIY6vctXRXke4WdrRtWbYzB8xGREifNxSgd6Fdik+bg44qOCAW8wggFrMA4GA1UdDwEB/wQEAwIHgDB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxMzQ3NTdagQ8yMDIyMDMzMTAyMTc1N1owHwYDVR0jBBgwFoAU2i7Ow/c6+/i+EHOoxPGIvSvU8cowHQYDVR0OBBYEFFtQNDLuwfv9Xbg7o8AKPzQnkx4cMAoGCCqGSM49BAMEA0gAMEUCIQDfWA3YY6s4hivruPkv+ro6/0mi4Vm7gY1EED8u39k+LAIgOKfybRclbzyRnz/ucnH18B2r9ZEi6z/7LnmqNZobPPE=", - "kid": "I0+qkOLr2e0=" - }, - { - "issuer": "C = GB O = NHS Digital CN = England DCC CSCA", - "subject": "C = GB O = NHS Digital ST = Isle Of Man CN = DSC_DCC_GB_IM_02", - "notbefore": 1632923398000, - "notafter": 1695997198000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKrPl/bqJRA4on2AtNgXUOhCwjkr8\nkUkeol8ZMH8d6+ILPJCgc3y4d2AnGcNMIxwk/JWVjD2V0lkxSB2Hh7shtA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIC9DCCApugAwIBAgIEYVCF1TAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0OTU4WhcNMjMwOTI5MTQxOTU4WjBUMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxFDASBgNVBAgTC0lzbGUgT2YgTWFuMRkwFwYDVQQDDBBEU0NfRENDX0dCX0lNXzAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKrPl/bqJRA4on2AtNgXUOhCwjkr8kUkeol8ZMH8d6+ILPJCgc3y4d2AnGcNMIxwk/JWVjD2V0lkxSB2Hh7shtKOCAW8wggFrMA4GA1UdDwEB/wQEAwIHgDB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxMzQ5NThagQ8yMDIyMDMzMTAyMTk1OFowHwYDVR0jBBgwFoAU2i7Ow/c6+/i+EHOoxPGIvSvU8cowHQYDVR0OBBYEFFyh/c31dQVmHKwncfKzVmIgj636MAoGCCqGSM49BAMEA0cAMEQCIFpZ4V77QqTvr7ExCp5Agt4ssTmrJTjStHNmIZvU40zmAiAU5Oz3FfvC+zrKARL9h4aDJ8osIvuekXfyOjP2wdxirg==", - "kid": "lYkujLws7SE=" - }, - { - "issuer": "C = GB O = NHS Digital CN = England DCC CSCA", - "subject": "C = GB O = NHS Digital ST = England & Wales CN = DSC_DCC_GB_ENG_02", - "notbefore": 1632923232000, - "notafter": 1695997032000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE17Mn/OPO2RQfYEZM62rPQcvhfRd6\nZTWo1MZnPvSBMCzjuY0ZdmtsXwDHH7wDOVcTs1NSylkb+/EmC1t/7XV0Ow==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIC+jCCAqCgAwIBAgIEYVCF0jAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0NzEyWhcNMjMwOTI5MTQxNzEyWjBZMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGDAWBgNVBAgMD0VuZ2xhbmQgJiBXYWxlczEaMBgGA1UEAwwRRFNDX0RDQ19HQl9FTkdfMDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATXsyf8487ZFB9gRkzras9By+F9F3plNajUxmc+9IEwLOO5jRl2a2xfAMcfvAM5VxOzU1LKWRv78SYLW3/tdXQ7o4IBbzCCAWswDgYDVR0PAQH/BAQDAgeAMHgGA1UdEgRxMG+BD3BraUBuaHN4Lm5ocy51a4JKaHR0cHM6Ly93d3cubmhzeC5uaHMudWsva2V5LXRvb2xzLWFuZC1pbmZvL3B1YmxpYy1rZXktaW5mcmFzdHJ1Y3R1cmVzL2NzY2GkEDAOMQwwCgYDVQQHDANHQlIwcgYDVR0fBGswaTBnoGWgY4YnaHR0cDovL3BraS5uaHN4Lm5ocy51ay9DUkwvRU5HX0NTQ0EuY3JshjhodHRwOi8vY292aWQtc3RhdHVzLnNlcnZpY2UubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybDArBgNVHRAEJDAigA8yMDIxMDkyOTEzNDcxMlqBDzIwMjIwMzMxMDIxNzEyWjAfBgNVHSMEGDAWgBTaLs7D9zr7+L4Qc6jE8Yi9K9TxyjAdBgNVHQ4EFgQUcOpem+yb6Ti0xloFxJUhNtmBWbQwCgYIKoZIzj0EAwQDSAAwRQIhAKzGgopNYhDdfMGDBD7uzxXkwYErNfLqrMKCcv8L/JklAiBYV6GgmwXY0coHRshuWHGVEuGfQtYuFUnn3cb6snTgqg==", - "kid": "osFRFyFIWdU=" - }, - { - "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", - "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH01_TestedCertificate_13_10", - "notbefore": 1634193569000, - "notafter": 1728887969000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwFh8HIBXfjcz7G4uPL7o\noBpVAwoZofGJgWNr8Nstxhe4CQuGGo7Cl6QrZyQDtZovLOpcR1S5c4VIUAhegJY2\nlBEtrIzdR/hcooabkOUyDULsPejaOcii4LtE/25rSKF/6sGyQiCLFb1u4JGlZK7C\nGmJcXE/NYnDQDvJv6K4dhpwGIoeNFhoG2X6fDHjZemO+/BYZZjRh2BuUf/QnSpVY\nl6bhmOuJP2EAHBiSt+2S6Xn7O+j0qF5EK5Tm6tttSOjnmz59isc35GlwloszjRn5\nriUR2t8TYt5UEMYJY2N8iEGIpu9HiJBQyMB1kjzwc7ClwYo4/jB3zWqwZGwhjj5w\ngwIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIH4DCCBcigAwIBAgIQOrzxCI+hNfy2ZddgNqFRgjANBgkqhkiG9w0BAQsFADCBtzELMAkGA1UEBhMCQ0gxHjAcBgNVBGETFVZBVENILUNIRS0yMjEuMDMyLjU3MzE+MDwGA1UEChM1QnVuZGVzYW10IGZ1ZXIgSW5mb3JtYXRpayB1bmQgVGVsZWtvbW11bmlrYXRpb24gKEJJVCkxHTAbBgNVBAsTFFN3aXNzIEdvdmVybm1lbnQgUEtJMSkwJwYDVQQDEyBTd2lzcyBHb3Zlcm5tZW50IFJlZ3VsYXRlZCBDQSAwMjAeFw0yMTEwMTQwNjM5MjlaFw0yNDEwMTQwNjM5MjlaMIH0MQswCQYDVQQGEwJDSDENMAsGA1UECAwEQmVybjEPMA0GA1UEBwwGS8O2bml6MRowGAYDVQQPDBFHb3Zlcm5tZW50IEVudGl0eTEeMBwGA1UEYRMVTlRSQ0gtQ0hFLTQ2Ny4wMjMuNTY4MSgwJgYDVQQKDB9CdW5kZXNhbXQgZsO8ciBHZXN1bmRoZWl0IChCQUcpMRQwEgYDVQQLDAtHRS0wMjIwLUJBRzEfMB0GA1UECwwWVGFza2ZvcmNlIEJBRyBDb3ZpZC0xOTEoMCYGA1UEAwwfQ0NfQ0gwMV9UZXN0ZWRDZXJ0aWZpY2F0ZV8xM18xMDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMBYfByAV343M+xuLjy+6KAaVQMKGaHxiYFja/DbLcYXuAkLhhqOwpekK2ckA7WaLyzqXEdUuXOFSFAIXoCWNpQRLayM3Uf4XKKGm5DlMg1C7D3o2jnIouC7RP9ua0ihf+rBskIgixW9buCRpWSuwhpiXFxPzWJw0A7yb+iuHYacBiKHjRYaBtl+nwx42XpjvvwWGWY0YdgblH/0J0qVWJem4ZjriT9hABwYkrftkul5+zvo9KheRCuU5urbbUjo55s+fYrHN+RpcJaLM40Z+a4lEdrfE2LeVBDGCWNjfIhBiKbvR4iQUMjAdZI88HOwpcGKOP4wd81qsGRsIY4+cIMCAwEAAaOCAqcwggKjMCgGA1UdEQQhMB+BHWNvdmlkLXplcnRpZmlrYXRAYmFnLmFkbWluLmNoMA4GA1UdDwEB/wQEAwIHgDCB1wYDVR0gBIHPMIHMMIHJBglghXQBEQMFAg4wgbswQwYIKwYBBQUHAgEWN2h0dHA6Ly93d3cucGtpLmFkbWluLmNoL2Nwcy9DUFNfMl8xNl83NTZfMV8xN18zXzVfMC5wZGYwdAYIKwYBBQUHAgIwaAxmVGhpcyBpcyBhIHJlZ3VsYXRlZCBjZXJ0aWZpY2F0ZSBmb3IgbGVnYWwgcGVyc29ucyBhcyBkZWZpbmVkIGJ5IHRoZSBTd2lzcyBmZWRlcmFsIGxhdyBTUiA5NDMuMDMgWmVydEVTMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly93d3cucGtpLmFkbWluLmNoL2NybC9SZWd1bGF0ZWRDQTAyLmNybDB3BggrBgEFBQcBAQRrMGkwOQYIKwYBBQUHMAKGLWh0dHA6Ly93d3cucGtpLmFkbWluLmNoL2FpYS9SZWd1bGF0ZWRDQTAyLmNydDAsBggrBgEFBQcwAYYgaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvYWlhL29jc3AwgZMGCCsGAQUFBwEDBIGGMIGDMAoGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEEMEsGBgQAjkYBBTBBMD8WOWh0dHA6Ly93d3cucGtpLmFkbWluLmNoL2Nwcy9QRFMtU0dQS0lfUmVndWxhdGVkX0NBXzAyLnBkZhMCRU4wEwYGBACORgEGMAkGBwQAjkYBBgIwHwYDVR0jBBgwFoAUNAu+8hU+pA9XB+JBZIsyEdEpC2EwHQYDVR0OBBYEFFqx9KVYf2NCS3VKom6WON/XsPtmMA0GCSqGSIb3DQEBCwUAA4ICAQCXcjffivLTesJThgf8ggbaDo6TW3Y3t6G70GD17Xzkf3IZpHBn1sCslnxGYEkM6gVKmzSay75CPcfJimbD5Eu090tzb5yDbugl0sshMffG1YNcrOXlXEdi8KOJfLqtRpnlRnz7OLN/L4QqTYeMkglb96iemLtrziKLNfPh9OKbTH+HNiK2rQHoTKqCOnnIsE9Ag0UwofrY27Xz9Rh1gV9g9EXddsGZRATquXF5E+JcOA4j/GXHntz1GCbRWBtTnzkKY+gL17aXKSSGw/tH3TEOGs+2HMDwW0mdz9R9hAf1nlgY/DxyM+a1sBaZ4tfrJs305DRXKfFOKiEEnqxQ7NK9fmX07wM1ckH9BMONINgcFzo7wKAfajQfYYpsnRW6a/jbG7K700G5OcsOIcgzeS8jY2WJ8E/7rvDn/nKrn7WmPhx90PBZNdaFctZg6jJBYy0QIFkzvolnTtqS/CqhyHOxBFWT7EdgAnohEU+4a3vW3nnkq0zrvVB16Gz4HqRjhNZx+NgOVuF/1McadnrzCxCZQjJ5EDnk3nvYIvEIsg8McA7JYdGW9BJHgCMoAEVlrt/3iWlOsLcKjAOt2784yarB2njzMNj6p8hOV0JdqIifCB03syR5bDMlVcPGeG9fG9KmT3s9YublOQfivBWwDZ67FgUcH3lqgHfYc/JomLRkOA==", - "kid": "1MTFjluEWHU=" - }, - { - "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", - "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201528_21_09", - "notbefore": 1632395577000, - "notafter": 1727089977000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wSNYJMn6P/DgJDmQKob\nZubHIBOAlIEG7dI+6p4uXZqyw+gXcUXaaTEEn5F9i+OMAz9GdiTlXo6dPr7LNOm0\nyoNWNJMcmW4ePGWKpTm70Ie3YhkAzLiZ2kvTUnAKJj3q49IttvL6gj1pOOGroUyL\nBB44JOvd21GSW2N5LCZU9JlGXmVe/xPirbMFgQx9hgcwPlmzY3OGHGwdosO6aEew\n8fBvgHwyJfqbALRF757EpA/qNfLH+QwinigkIl613yghzslRzoejvyOz4UkKOQm1\n8fAbBF173J/Uur4yLF7voui03QK2we21sLlW8WkS4xKDnlL/rKvnsSyTEFqsC0Jx\njwIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "2eCjZcuOoEo=" - }, - { - "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", - "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH_1200005_0511", - "notbefore": 1636462670000, - "notafter": 1731157070000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqssyXfYarvjSj+v2XSgQ\nb6nPrpx+0p5CV98Hr4rSpcFJo8DOUf4BzWD4vpAY+kvrGrxnvBlZv+fBrnJcA46u\nPGpE0GILlqHFxBmm8CVbAS/UFrHf9DqG0AiMD9zLBsLCW9M+6zlIQkX5CsbWbjCu\nnJoySDBQyMmvo74EFoTpJMW05yYZA9WRSGGf6qNCPxRkXPIaO43FMLWVlTTCAnHt\nXzHpakG5qZDULLEWZhOs78KT9oHCcTBakPb38pgUTBNwTFMPuSm57jtiqm8oPbx1\nhxxQGb6XxMuIa/eKWIh8z1/oLORaiixxU6YNHNPFbl5oAOX6CjN6i+krI2zbpisy\nnQIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "CGFUps8kh3M=" - }, - { - "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", - "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200002_21_09", - "notbefore": 1632395402000, - "notafter": 1727089802000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvJk7BZo+4PHBDZzfie8+\nBPTzwzcBmpTFqP6dP2X6MsXmKX8a1Rww2x7/O4bBkpea+UOWGQJ+ryUDwnK0u0AJ\nHEID7OAg/gHyK0571RIpcMsiP+rZJjg6j9s7EDIogf6cf641hjVyaWuhkvuw0Uye\nX5SRVzFQ+eAkAHXwK50mIkIfIJ4DFDvz2Hv/JDMaeSzz9aP9XuDJYu+JX6nGJ0WF\nmjtjQXmJ39HT4j4q4nsLZh6sHOtiqCVrOfzoOGk6HUxI7nDbqPO+4UwP2o1S82l9\nLgQSABvFwCtox+w1AGKM/bUeyfTrEIoMAIgDiKDL7k3ks7iyiPZauvtvhSS0MeFl\nOQIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIH0zCCBbugAwIBAgIQeWXSqU+IImooC7XjCjIieTANBgkqhkiG9w0BAQsFADCBtzELMAkGA1UEBhMCQ0gxHjAcBgNVBGETFVZBVENILUNIRS0yMjEuMDMyLjU3MzE+MDwGA1UEChM1QnVuZGVzYW10IGZ1ZXIgSW5mb3JtYXRpayB1bmQgVGVsZWtvbW11bmlrYXRpb24gKEJJVCkxHTAbBgNVBAsTFFN3aXNzIEdvdmVybm1lbnQgUEtJMSkwJwYDVQQDEyBTd2lzcyBHb3Zlcm5tZW50IFJlZ3VsYXRlZCBDQSAwMjAeFw0yMTA5MjMxMTEwMDJaFw0yNDA5MjMxMTEwMDJaMIHnMQswCQYDVQQGEwJDSDENMAsGA1UECAwEQmVybjEPMA0GA1UEBwwGS8O2bml6MRowGAYDVQQPDBFHb3Zlcm5tZW50IEVudGl0eTEeMBwGA1UEYRMVTlRSQ0gtQ0hFLTQ2Ny4wMjMuNTY4MSgwJgYDVQQKDB9CdW5kZXNhbXQgZsO8ciBHZXN1bmRoZWl0IChCQUcpMRQwEgYDVQQLDAtHRS0wMjIwLUJBRzEfMB0GA1UECwwWVGFza2ZvcmNlIEJBRyBDb3ZpZC0xOTEbMBkGA1UEAwwSQ0NfQ0gxMjAwMDAyXzIxXzA5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvJk7BZo+4PHBDZzfie8+BPTzwzcBmpTFqP6dP2X6MsXmKX8a1Rww2x7/O4bBkpea+UOWGQJ+ryUDwnK0u0AJHEID7OAg/gHyK0571RIpcMsiP+rZJjg6j9s7EDIogf6cf641hjVyaWuhkvuw0UyeX5SRVzFQ+eAkAHXwK50mIkIfIJ4DFDvz2Hv/JDMaeSzz9aP9XuDJYu+JX6nGJ0WFmjtjQXmJ39HT4j4q4nsLZh6sHOtiqCVrOfzoOGk6HUxI7nDbqPO+4UwP2o1S82l9LgQSABvFwCtox+w1AGKM/bUeyfTrEIoMAIgDiKDL7k3ks7iyiPZauvtvhSS0MeFlOQIDAQABo4ICpzCCAqMwKAYDVR0RBCEwH4EdY292aWQtemVydGlmaWthdEBiYWcuYWRtaW4uY2gwDgYDVR0PAQH/BAQDAgeAMIHXBgNVHSAEgc8wgcwwgckGCWCFdAERAwUCDjCBuzBDBggrBgEFBQcCARY3aHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3BzL0NQU18yXzE2Xzc1Nl8xXzE3XzNfNV8wLnBkZjB0BggrBgEFBQcCAjBoDGZUaGlzIGlzIGEgcmVndWxhdGVkIGNlcnRpZmljYXRlIGZvciBsZWdhbCBwZXJzb25zIGFzIGRlZmluZWQgYnkgdGhlIFN3aXNzIGZlZGVyYWwgbGF3IFNSIDk0My4wMyBaZXJ0RVMwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3JsL1JlZ3VsYXRlZENBMDIuY3JsMHcGCCsGAQUFBwEBBGswaTA5BggrBgEFBQcwAoYtaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvYWlhL1JlZ3VsYXRlZENBMDIuY3J0MCwGCCsGAQUFBzABhiBodHRwOi8vd3d3LnBraS5hZG1pbi5jaC9haWEvb2NzcDCBkwYIKwYBBQUHAQMEgYYwgYMwCgYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQQwSwYGBACORgEFMEEwPxY5aHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3BzL1BEUy1TR1BLSV9SZWd1bGF0ZWRfQ0FfMDIucGRmEwJFTjATBgYEAI5GAQYwCQYHBACORgEGAjAfBgNVHSMEGDAWgBQ0C77yFT6kD1cH4kFkizIR0SkLYTAdBgNVHQ4EFgQUtPvvyZ3bj2qMkxebjSBA85IkVYYwDQYJKoZIhvcNAQELBQADggIBAIUYt6lTJ2YIQnxq9+pQXdEmhN6Oy9UGG0j76ASaOobMzZoHHTpGztH2TYOtT0ykDQxwpjYKbqYiKsguGtpzft5bcNc/c2/r+awmYsL5FQgdumEYEdXbRUGHciJ0vqYwS05DdyNfjdXSV/8O5t4Vfn3s++7sUWsC/0FGlQOiSGyzKrWUD8RKl+NaMMYYTRBKJwIAuI9ahunH6m9w0KAnfjS0hZI2SjJi0GTUtFMsSTF3ZEypFQoxm/oiaBup2B/Ury7y0IBFV0FFcgGxvRfU+XXeFcNi/ONESXj9NRcjJoG7/1E3GwULzMgR19MtQjaz5glLap+80NahI1xkUEjomq7EHFsfIWftpwpEUjXXMu5+WnQoMqzEjciBv0xfjpAcLHTf2P1yKbyrr2DPcWTbt+HoAWGM9ZaRlZpZ6c7Tgd4yzggPcXehtI+roaJEe3crGf2impyNuoD0kmLZIWey4NXPGtUKczKET5xqLfJru1qMDorYLHzzffl+OahwCSkdbNbsUdk0V+E2ygKPgyRKxdm231Zn9DvkwTmMmkf6ExX6DbllYJ6RZ+eNBzcav6ZhNEXauuGZ0LMzOQy5nYUq1AYp+qItvX0U7rmfmmiSqkFISNxtyOe0jBJ/jeqM5fBMYdqSHSWtPFyt3G++mYNkBcaX1TvlvolX0mSIs8PjC7Ne", - "kid": "JZhMLV9Gyck=" - }, - { - "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", - "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = COVID-certificate-CH-21-05", - "notbefore": 1621505071000, - "notafter": 1716199471000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtk/51stJXU48RqD2lh4I\ndsxFrjlJfmTCrLr3cQNEXkrEoI3OEV8NnotE1RjVmQrqLTT04oxpWlcbMolXtJBt\nu3rOiLNwQvyVEbj/xSc6KT84Tp7GBo1P/kkunY+Vmab6HUCV/oGZYmsdiUP/OnTP\nX6Wy6delDhnrgHIDti73/TSsG7Zl1V6km7+KIkjAkVCEDkkUD7uffd4G+GBZ0B9F\n1KOT0IcFQNvDm0zlROVoGFlmPS8DWlrLHuIdMbB281uiDjcN+kNUt7rUyyj6TFgX\n9WCgEB/5mQBMRaaXK1zeDTaNkmC2S7IWxhMQsMBXJyAdbD9AnQOZc6XRjBauO7gz\n0wIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "Ll3NP03zOxY=" - }, - { - "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", - "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200001_21_09", - "notbefore": 1632395376000, - "notafter": 1727089776000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvCn2NP604m2TFWnyKbIy\nhup78wpXMM62pHod3InusDPPPFXWgVsN0NG1E65jy+W7LDY+Q719jVCC8pusghPL\nmDze1KWwGrGdRyUGmqwFWW5sI0uxKJCsEXMRcKqKpf5NXxJlSo1FIv/ZKKFAnUt1\nIFUzLo5HP7rqCiKlU58uk9N4puECCW3QEUIgm4mwflcR1crqY1Pdd1UxIceRTGcv\nT0q4wN9w1fwko+grpV0N7EK2drSVVdvPYlo2fHCU+hDwTJ6AThTktzRiybznhq4F\nqf3jEyzVFQA5W1VvAoWhMZgAxHRCZXFXex/MtGvOD4Q+ovP3m1EYX0+C/qsaSsHb\n2QIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "TQeqi04M2ek=" - }, - { - "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", - "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201529_21_09", - "notbefore": 1632395629000, - "notafter": 1727090029000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2MyDsFqh2Xhdc6PUbR+0\nalU0hD8tT6BSJpCbigvdZAbz5slDPAIrXvyz2Aac79U6jvyyMHHDbIOL1DxU1/pc\n7shgd/B0btHJogwQQUxyh149GnA8e1i3LLJhu8dtC4LxBPZK91nknkgrKyYU55sJ\niQTnx2VYuF6WDBXFW4Q2EHsN+KIC68uDNousFHdw4Dk9rb4vEHLqsbY/afEZ1HmW\nbrvN+6pPyPFh43ogvYWkVcn5JahOXQqpoePVFUAq0sdqG9DluoSXWqpyNfcTQp3W\nCVldqsyMfAzGwceR/hKohMDXBmxAAbv5h8U05KX1xHgwAWfPPiITtqqIKt0EvFJP\nzwIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "d+WbDD8Gr5g=" - }, - { - "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", - "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201525_21_09", - "notbefore": 1632395556000, - "notafter": 1727089956000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0urbzgg7+VIvee9+u7Ti\nW+a+xDKAhqh9CXfPS+Lydi9Y527boI6bbqZxA2qhFVWp4FFzxRYRy6pVfReokpgS\nQvcjoR6YvRNi/HK4c44tLvz5gymhX/80oR43Gr/vOUkvne3c3SD8BN+tZlJScIt7\nMrIm0KNWjGGBoCnswxcn2dYGNoYFvHVN/3exg+oC4oO5QU3rNyFh3PWSHIn3svZA\nAeT3NLLdZ2inGoRyGTY3IYcPk6vj2y69wDxz/rO3kV2SpwHMCkKqcwwsdlOiqS6n\nd6AvOpQYMRRC5mEFbB1J0g7z73YdH+WNzEsa/B25xzDrIWi/sul2INhd3q0OTw2v\nqQIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "hGUS4Zj9fLM=" - }, - { - "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", - "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201507_21_09", - "notbefore": 1632395524000, - "notafter": 1727089924000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA195RM978uHXQTBanwOqW\n5vt6WBnO8skLa7kiY4q4l8MOgSrIitQvBcnuJFiTazMTjJpdEAblB0E4mZuzvn2p\n1I7SrFL7mwqQFrQ9GXvNp6gwBHYJrMci+J0FshxnWc9EYFFbnmixdSsyla5c4W8b\n/pfasFYWkuCwUCGLrspMrkJ/gsWcj4h0HvlCO9hHsHlLqD/kY0y0VGUAizsah255\nYZhTeB4ag60E93wUHt6HX0q4ngCk05S04aH9eaBF9GIuRhxrI4GEDcYIPB8GasrK\nPIS8ufOMQsSE8uJkPhJGQblDh+fPZb2bnUPX9vUSBPTJD5XgHsPGancWrpzBGttO\n3wIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "l+UqotarLJc=" - }, - { - "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", - "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200003_21_09", - "notbefore": 1632395440000, - "notafter": 1727089840000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApU+JIe3bHtVFBRbLLcZ/\nMHfaOB8dKwsWj7nAh8wr3Iv2+te2Kmq3MLDPZFR0q/hAAEg9gY/K1XVh74S3Zf8U\niSm9UJgALVIsxCi96eVpa1GGUtpbQvEg7Uz43PM/vUEkAs8xA/45BtFX1WE2nQ1z\n2PFcI3pOaJl4UHOVTA1LxEwOrAPBhlApcYwp75Gc9+KahxpJzaDR618ooV9MICYY\ng8swv4d99u11mjgwMAZcpiNf9iIa1H4phann+5RuNLbRHebVJgBot95AJ4MrOEEq\nIXg7LpDD9pBofVbV6IB7tuFcIjBIPJhLaUI6nLyg8oxh5NA8fKE9Nc2zbl8po84S\nrQIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "oVKwwScGxuY=" - }, - { - "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", - "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200000_21_09", - "notbefore": 1632395333000, - "notafter": 1727089733000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5G85GgStNuJe4lqs7Jkb\n7/3tBfhNTs0DDuxm0XpJIptqBLFvTLllQqMO8QI/lx1266VlfthTASK2ZpnQC6Id\ns/NEdNrLHuGIRNktd7oaq3Priz7f96TnXiW9qX/WLL55wpXcHSmLyvEfdP7BSdyQ\n9xrzm8bwg8cD638e69lScBeGpG04Z8hOVSQAQOBzAjSGkWPzhkah001vVev9CNcZ\nBiL56iVox6nIJ/sgbzOlvwJDaXnKZOOXRk+xKQA+BDjjBfmvq6KvKoiRoGhvmG3g\ntMFvXPEr+mvBkbHvzswPr6aKpbm4sFzDbbgsSb6zGJcPLhs6aMm0FaIuetyc0lxf\nSQIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "ohI9KlFR2P8=" - }, - { - "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", - "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH01_RecoveredCertificate_13_10", - "notbefore": 1634193433000, - "notafter": 1728887833000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvG8EuhEV3qydjzXibNlK\neBaRiswEivR7Ths756AhlCuY1xd1MC2qtTpledWZpdYaEr2QunzcE4OU7Tzj0Q4I\ny6Ru12yenffGAZVxt31TpwjMioh/hICU9kh5KospkHf4wH6S2+JoK9P3stljHbJd\ndJith9LzyzDQ+ezTVksE4KBD9iKLlvx6kOQE1LSW1lvnm89JqoY+Hlpdy0Gux8uj\nQ+HsPG5CQc4B7DuoYEjmmWSxGIIR3tuym4UjqUpOYYdq2Ee3ahGt4qPV8mhERHwd\nT0XeMgTbKaakfBjdQeH+Imd2IRmVaZUkgxTSXpXSCP/tus8k77BNknCtf54N5o2H\nPwIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "rTEJEs6D1ik=" - }, - { - "issuer": "C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02", - "subject": "C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200004_21_09", - "notbefore": 1632395497000, - "notafter": 1727089897000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAphhhJq5dIl4yUEbliJyc\nkuldKiylWZZfTRQNx/k0xUFU60n9tUR4Ky1AibJHIiN/nIhSZTgwSSuALWinuEri\nI1ROb++TsQODtC3dDFFbNIwq1sVuT1TI7o6nnGTRHxwJckNP5++obdKSZtUfT6LO\nClxFsNoYl2EAzwb8YdcOiWNEB8gj7aY+vPL9BmECb9IRxPwhOxzPYkgLUkvqzt2U\nzV6CFKM5t4LxM4pTICy9vlIViZTcx6FDJ78AuT2C5AbW+ILYmc6/V189uga2/PTy\nEJyABw3gRg2BItkwy1flAjQcNIhKzshorcwGPD9EtuqpWF26DyU/HIQUabptMC6P\nCwIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "rVPuf3yKLBg=" - }, - { - "issuer": "C = HR O = AKD d.o.o. CN = Croatia DGC CSCA", - "subject": "C = HR O = AKD d.o.o. CN = Croatia DGC DS 001", - "notbefore": 1621516666000, - "notafter": 1684588665000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV\n5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICwDCCAmagAwIBAgIIPR9jkXY7CPEwCgYIKoZIzj0EAwIwPTELMAkGA1UEBhMCSFIxEzARBgNVBAoMCkFLRCBkLm8uby4xGTAXBgNVBAMMEENyb2F0aWEgREdDIENTQ0EwHhcNMjEwNTIwMTMxNzQ2WhcNMjMwNTIwMTMxNzQ1WjA/MQswCQYDVQQGEwJIUjETMBEGA1UECgwKQUtEIGQuby5vLjEbMBkGA1UEAwwSQ3JvYXRpYSBER0MgRFMgMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzaOCAUwwggFIMB8GA1UdIwQYMBaAFDErHKPIgGXhH70EktAlPHyGj1LRMC8GA1UdEgQoMCaBEkNyb2F0aWEuREdDQGRnYy5ocqQQMA4xDDAKBgNVBAcMA0hSVjAvBgNVHREEKDAmgRJDcm9hdGlhLkRHQ0BkZ2MuaHKkEDAOMQwwCgYDVQQHDANIUlYwZwYDVR0fBGAwXjAtoCugKYYnaHR0cDovL2RnYzEuZGdjLmhyL2Nyb2F0aWEtZGdjLWNzY2EuY3JsMC2gK6AphidodHRwOi8vZGdjMi5kZ2MuaHIvY3JvYXRpYS1kZ2MtY3NjYS5jcmwwHQYDVR0OBBYEFB55yLnz+T3ShQFs345mxQEJZb7TMCsGA1UdEAQkMCKADzIwMjEwNTIwMTMxNzQ2WoEPMjAyMTExMTYxMzE3NDZaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiANYlqMzCo7P6/FbwxS88MCB43CIBgfpJDmQ+D120Ov0gIhALJNQbk8HdHnkd31GV88U1N4YghHSZslLY8eZX8wSYR/", - "kid": "25QCxBrBJvA=" - }, - { - "issuer": "C = HR O = AKD d.o.o. CN = Croatia DGC CSCA", - "subject": "C = HR O = AKD d.o.o. CN = Croatia DGC DS 002", - "notbefore": 1636488815000, - "notafter": 1699560814000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsHGctEPFotenAxVqYr/5Ztl46BU9\nhWNYAYdGWihiGzRTOgXzONqCQJqB37pacA53L7OlXPFONvT9KWYvbsVeiw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICwDCCAmagAwIBAgIIcPs80UkeH/UwCgYIKoZIzj0EAwIwPTELMAkGA1UEBhMCSFIxEzARBgNVBAoMCkFLRCBkLm8uby4xGTAXBgNVBAMMEENyb2F0aWEgREdDIENTQ0EwHhcNMjExMTA5MjAxMzM1WhcNMjMxMTA5MjAxMzM0WjA/MQswCQYDVQQGEwJIUjETMBEGA1UECgwKQUtEIGQuby5vLjEbMBkGA1UEAwwSQ3JvYXRpYSBER0MgRFMgMDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsHGctEPFotenAxVqYr/5Ztl46BU9hWNYAYdGWihiGzRTOgXzONqCQJqB37pacA53L7OlXPFONvT9KWYvbsVei6OCAUwwggFIMB8GA1UdIwQYMBaAFDErHKPIgGXhH70EktAlPHyGj1LRMC8GA1UdEgQoMCaBEkNyb2F0aWEuREdDQGRnYy5ocqQQMA4xDDAKBgNVBAcMA0hSVjAvBgNVHREEKDAmgRJDcm9hdGlhLkRHQ0BkZ2MuaHKkEDAOMQwwCgYDVQQHDANIUlYwZwYDVR0fBGAwXjAtoCugKYYnaHR0cDovL2RnYzEuZGdjLmhyL2Nyb2F0aWEtZGdjLWNzY2EuY3JsMC2gK6AphidodHRwOi8vZGdjMi5kZ2MuaHIvY3JvYXRpYS1kZ2MtY3NjYS5jcmwwHQYDVR0OBBYEFIZqz9SFr6ueNBY4r/u1ZNovF+WlMCsGA1UdEAQkMCKADzIwMjExMTA5MjAxMzM1WoEPMjAyMjA1MDgyMDEzMzVaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiALjpDpXS59EIpkdvCjEAdR6UPq41CbnhWAat7dGT8+zwIhAOdLwTxsmuRttRDg6ZX0CGxwjHFu7NfxCwqdrOd8n50E", - "kid": "IoybU6axZJE=" - }, - { - "issuer": "C = HU ST = Budapest L = Budapest O = EESZT CN = DGC_CSCA_HU_PRD_20210621_01", - "subject": "C = HU ST = Budapest L = Budapest O = OKFO CN = DGC_DSC_HU_PRD_20210628_01", - "notbefore": 1624889734000, - "notafter": 1687961734000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadM\nS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/A==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICnDCCAkGgAwIBAgIUa/gUnrKtSo4XzXVTPkV2APtPwXEwCgYIKoZIzj0EAwIwaTELMAkGA1UEBhMCSFUxETAPBgNVBAgMCEJ1ZGFwZXN0MREwDwYDVQQHDAhCdWRhcGVzdDEOMAwGA1UECgwFRUVTWlQxJDAiBgNVBAMMG0RHQ19DU0NBX0hVX1BSRF8yMDIxMDYyMV8wMTAeFw0yMTA2MjgxNDE1MzRaFw0yMzA2MjgxNDE1MzRaMGcxCzAJBgNVBAYTAkhVMREwDwYDVQQIDAhCdWRhcGVzdDERMA8GA1UEBwwIQnVkYXBlc3QxDTALBgNVBAoMBE9LRk8xIzAhBgNVBAMMGkRHQ19EU0NfSFVfUFJEXzIwMjEwNjI4XzAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadMS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/KOByDCBxTAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFLfwN2b/BblsB3wY92Sbxbc7QOmZMB8GA1UdIwQYMBaAFPHcUjbpr2UPGVKQEwKXLMGD4sDTMEEGA1UdHwQ6MDgwNqA0oDKGMGh0dHBzOi8vd3d3LmVlc3p0Lmdvdi5odS9jcmwvZGNjL0NTQ0FfUFJEXzAxLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCxhu4NSIKO9F8jlaxe3EqAIDoPAaF5A9+GPy03W0PpVQIhAL12JyQzJ9f7qnLapDMUSf6HD0+AMNHl9BjHZphNBUlu", - "kid": "4GkJs9YsYS4=" - }, - { - "issuer": "C = SK ST = SK L = Bratislava O = NCZI OU = DGCOperations CN = CSCA_DGC_SK_01", - "subject": "C = SK L = Bratislava O = NCZI OU = DGCOperations CN = DGC_01", - "notbefore": 1599004800000, - "notafter": 1725148800000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6qxT6sSK3TDheWFHTBkfveooRhtU\nWqEqrELD9B7aAk7xjPS3MBETtmnWb4nRzBINvFwrLDxQCqTX8Jevp33c4Q==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICVTCCAfqgAwIBAgIUSfAlV5Ro7+hRqRa9kH4Un95XIGQwCgYIKoZIzj0EAwIwbzELMAkGA1UEBhMCU0sxCzAJBgNVBAgMAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMRcwFQYDVQQDDA5DU0NBX0RHQ19TS18wMTAeFw0yMDA5MDIwMDAwMDBaFw0yNDA5MDEwMDAwMDBaMFoxCzAJBgNVBAYTAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMQ8wDQYDVQQDDAZER0NfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATqrFPqxIrdMOF5YUdMGR+96ihGG1RaoSqsQsP0HtoCTvGM9LcwERO2adZvidHMEg28XCssPFAKpNfwl6+nfdzho4GIMIGFMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUj9izCT/z9ccQUX6CeZ0ns8Zu0SMwHwYDVR0jBBgwFoAUm9JYe8TeF7J1Gm8LZ2DfcBXXLHMwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNJADBGAiEA1jDNVMcnPoIOaGxeFRKaRZ8MrwR6xmmv0F0I0l5wKuUCIQDnaar37bg6T8i3rJp6KHQkJqJ1NSnc0Qltw1qghCJC0g==", - "kid": "6CDB1hL+uKU=" - }, - { - "issuer": "C = LT O = State Enterprise Centre of Registers CN = LT_DGC_CSCA_1", - "subject": "C = LT ST = Lithuania O = Ministry of Health of The Republic of Lithuania CN = LT_DGC_DSC_2", - "notbefore": 1625090401000, - "notafter": 1688162401000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsIcppmCVhq96vMc4NtW8\nX+yV6O1oC7hfKnewK1/pxfByqlVTPpETDLAjNq9knNQpCs7vGjadCbDAylsQRK7q\nfU3sUUKamh6FgDhFo1dzC4mUHCy3XBL04XJie2eT/a6Wgjrn6NjEFk5M4Jl4N8u/\nRbfaVxqaOjUM0hBfuzfZeL2LT30POqDHj1hcyod1fIbG4vv2Upqxe3OX/WLr+WzS\nPbRkPwxcJjmYeNYODT0rEcd9VSzJpljaK+eDVwxT0wMRnCH2QLxdw8sR+oDYDTZB\naabeHYyZ0CfYzSoBOZT3fVMAbjkVAl8GFyH8tUm4lMQbYEMbl/FkftcZQicaqvRd\nQQIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIFBDCCArigAwIBAgIGAXpe76SiMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYzMDIyMDAwMVoXDTIzMDYzMDIyMDAwMVowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCHKaZglYaverzHODbVvF/slejtaAu4Xyp3sCtf6cXwcqpVUz6REwywIzavZJzUKQrO7xo2nQmwwMpbEESu6n1N7FFCmpoehYA4RaNXcwuJlBwst1wS9OFyYntnk/2uloI65+jYxBZOTOCZeDfLv0W32lcamjo1DNIQX7s32Xi9i099Dzqgx49YXMqHdXyGxuL79lKasXtzl/1i6/ls0j20ZD8MXCY5mHjWDg09KxHHfVUsyaZY2ivng1cMU9MDEZwh9kC8XcPLEfqA2A02QWmm3h2MmdAn2M0qATmU931TAG45FQJfBhch/LVJuJTEG2BDG5fxZH7XGUInGqr0XUECAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUPZCkpW9sE+8wWf3UeVmVyI2yuKMwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQAh3n6+6+wrWjfQc0PYua+M5sB7QMU1K0jo3Hs+lwYiMEnIZNbdQgnuNAYHm4cf3Qy1YLt9XkMQdzwRz3kbSUQ4iythOby2GBEgCZ7fr17h/2o7VL9QC+hMUqsBXWYEQ1JuYz/L64X60sbIgt2qLy+oeA4WEVc1Yuz7DQsJG0qZRovVQvRy0cL7RHc6uiraaUxsKX7WFzNf6KlT1C1GeFJzcPSTclYMtHR3UgecUEaEenPciPMmUsJY5AOmZqxvJT62Nit9iuR18SieBNK+rJTrmxF4AV5Q7PE7Dhq5HBZhy7gE0UG1XfvSVSIcJcbMiDLxa+lXCFCVOf7drq2CaaIc6UQ0UXTeVmdbkJPid1/pvGLbIyL4UmOqxpzETcIRJKtvhF3UF1cD86/V/77qtZh0UeoCMGSdarZFvWB4As4PrEuvJB6Sfo1D++dCfQkfFEhQZO7wk1zLUB3Pqip2Io3eLn1oXMPxqtoYYH1vGv3HANhd8hVuO3ujYQgb9InLCnl7qPix5f8QrnRA4q72gpofoBnfGziMAyo9EKBib72waWaIpHi8Aw1XJntpHwld0gOV/cs/BquYdtqJpdW2FpoUvP4SbbxUVyDub+Uu2+Q9LKuIFlG4fqgRCUQ5NbgB5wmTxlYEc0xTb/VNICUtDSga4Fjeznm5l0oc4NoS6G4wzw==", - "kid": "7AfAwcpWOv0=" - }, - { - "issuer": "C = LT O = State Enterprise Centre of Registers CN = LT_DGC_CSCA_1", - "subject": "C = LT ST = Lithuania O = Ministry of Health of The Republic of Lithuania CN = LT_DGC_DSC_1", - "notbefore": 1623009026000, - "notafter": 1686081026000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnhBpxzeGXNlQs7U+j/Av\n1BUZ6CCgMR3bFLT4rRjO8KQ4IpAKqSCQ3j57MJqdumk3AUfHO5zhMZF4Awy0wqV3\noFlyP49/56KKZxGARe5UkyfPjVbl8AZpLmgYoS/Ior53TLrwmT/+zvXynzFYbOi2\nOtCtqanG+9OUhSVRrXEEB+56PpCltE31wemX1behxDuCbE4tuqyTYODFw9Le3dGC\nbHWdjxi5W3XIUNo8j2u2PKue0KS76Xv0zAYItTgChgv7mM55/G109m4MfeU7AHah\n43bJth8K8y+SxG3RYHskmNZ7sfn3w8w7WyW7D3/tKHcMt3hgIh9z3DuWeR1C296J\nyQIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIFBDCCArigAwIBAgIGAXni4GKHMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYwNjE5NTAyNloXDTIzMDYwNjE5NTAyNlowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ4Qacc3hlzZULO1Po/wL9QVGeggoDEd2xS0+K0YzvCkOCKQCqkgkN4+ezCanbppNwFHxzuc4TGReAMMtMKld6BZcj+Pf+eiimcRgEXuVJMnz41W5fAGaS5oGKEvyKK+d0y68Jk//s718p8xWGzotjrQrampxvvTlIUlUa1xBAfuej6QpbRN9cHpl9W3ocQ7gmxOLbqsk2DgxcPS3t3Rgmx1nY8YuVt1yFDaPI9rtjyrntCku+l79MwGCLU4AoYL+5jOefxtdPZuDH3lOwB2oeN2ybYfCvMvksRt0WB7JJjWe7H598PMO1sluw9/7Sh3DLd4YCIfc9w7lnkdQtveickCAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUwMNfEDstM4gYK8a8WQno8Qt1IZQwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQANsbkQ7P3OljNurVYmgB4g/76/tLMzbRExCuUltzxJW1zVZb4juuHNkmjIsUupaiYG8F8fQJpeRam2qgaPaPWqTYwn1lm8K+Ab4jE+9F6nyTJfvI2+BzOcGFsTUr+6If2YafJE9UMCeQWGP1kLX5srtQVTvb7fNHHnEvmijdKoqPv8Xcnkl6j53aZjeM6RrpSqrdtneHwquq9OWnjuKVDGZ1bDiIl52wjCQ+GLczPUtHai+qHNmhOibiT+JoT//fDb96vHlf40Y39zyxRFx0kx9zws8CbAPtvJOfWg6OjY50ARZRfixc6uFrCmnHtpzfcO3f+XwPBIBmvTjphZDGRqNjP46wqUv5vfpquIprhNef+jYi3k+719IBn5QuBNq4vJcMYHitK4WJ24TIxemq5YIXQYQct4t90V04Byhz7phox5P2rZJl3VBOSss7bGu64qc5Dh96joLLHFLChqqqDbhq7RI6Gl8Yn0ShUMg3WTbktTQ9dpGzYdH3wbbuMbzvGOYRTqTVGBH8eb9KJbgC0cDDhelHNXUcwn3Vvbdx3Y9KB2y50VTs9ZcawH52o4BuNwx3vO/L3Eq2EnkIZ2mobJDIGbBJUN2ttBim5muQxgEKns/QgNTpEZgBTkFjQ7mB7gIC8SHDDmU5wXe5aA3GN5/Gl5aUc3rHDmnZQKax63jw==", - "kid": "lshLbYfCWRg=" - }, - { - "issuer": "C = CY ST = Nicosia L = Nicosia O = Ministry of Health OU = IT Department CN = CSCA_EUDCC_CY_01", - "subject": "C = CY ST = Nicosia L = Nicosia O = Ministry of Health OU = IT Department CN = DSC_EUDCC_CY_01", - "notbefore": 1624533802000, - "notafter": 1686741802000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7S/R06707Glu721qJqvxIFzQ2LSb\nq9P2uu6nRKCBLsH5ryP3wXpggL6hGh080F462bGLTuI/hXrxEB2kR2Vjww==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICjzCCAjWgAwIBAgIJAPS0Vbm3L3MTMAoGCCqGSM49BAMCMIGBMQswCQYDVQQGEwJDWTEQMA4GA1UECAwHTmljb3NpYTEQMA4GA1UEBwwHTmljb3NpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRkwFwYDVQQDDBBDU0NBX0VVRENDX0NZXzAxMB4XDTIxMDYyNDExMjMyMloXDTIzMDYxNDExMjMyMlowgYAxCzAJBgNVBAYTAkNZMRAwDgYDVQQIDAdOaWNvc2lhMRAwDgYDVQQHDAdOaWNvc2lhMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxGDAWBgNVBAMMD0RTQ19FVURDQ19DWV8wMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO0v0dOu9Oxpbu9taiar8SBc0Ni0m6vT9rrup0SggS7B+a8j98F6YIC+oRodPNBeOtmxi07iP4V68RAdpEdlY8OjgZQwgZEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2NybC5ldWRjYy5nb3YuY3kvZHNjLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMCsGA1UdEAQkMCKADzIwMjEwNjIzMDAwMDAwWoEPMjAyMzA2MjMwMDAwMDBaMAoGCCqGSM49BAMCA0gAMEUCIQCL2pPCMNugzz3sGPDO02C6oMYvlkj6lfxPbckgmegv6QIgANPWEyptdWnK8y0WpU85VROr4cjobAkRNioquyCln00=", - "kid": "7rZbUrXNlLk=" - }, - { - "issuer": "C = NO O = Norsk helsenett SF CN = NO NHN CSCA PROD", - "subject": "C = NO O = Norwegian Institute of Public Health CN = DSC HN EU 2", - "notbefore": 1623057373000, - "notafter": 1686129973000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErbWQM5hj5SeR23DzCV0TVKrFhfYs\nmNVVSbPFxwyw4ZEfersZ3bp2h+rw2BhbLbzVHZIwWfnhaKZ72+JciUksFQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICLzCCAdWgAwIBAgITWQAAAAMkF9vUXhL/vwAAAAAAAzAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYwNzA5MTYxM1oXDTIzMDYwNzA5MjYxM1owUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEhOIEVVIDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASttZAzmGPlJ5HbcPMJXRNUqsWF9iyY1VVJs8XHDLDhkR96uxndunaH6vDYGFstvNUdkjBZ+eFopnvb4lyJSSwVo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBTjjLs+qOV9Ef2iKzss4qIJTpVymjAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIFoTcS0308Htrwu8gtsc1YX2679u/+UjB6i3iG4BvUGFAiEAirH6ggtWwXqXH94+kfwQ0A5q0pPGCdik4BIlnYmnpMk=", - "kid": "7z8+6oww2a8=" - }, - { - "issuer": "C = NO O = Norsk helsenett SF CN = NO NHN CSCA PROD", - "subject": "C = NO O = Norwegian Institute of Public Health CN = DSC AN EU 5", - "notbefore": 1623749441000, - "notafter": 1686822041000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfBeQBQBjyKpvjsCujqi15xnygRMy\nhjNsEy198LzTYuB+Mje1lxIvPYkfO/PEHQFgA52gn26bHCXE75GWqq6UMw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICLzCCAdWgAwIBAgITWQAAAAY+BhnAubZsywAAAAAABjAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzA0MVoXDTIzMDYxNTA5NDA0MVowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR8F5AFAGPIqm+OwK6OqLXnGfKBEzKGM2wTLX3wvNNi4H4yN7WXEi89iR8788QdAWADnaCfbpscJcTvkZaqrpQzo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRQ+3DSiNYiK7x+Rm48SPxVU66ILzAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIQCpipDAPcRMuFYLkVIA2qxW3bikYzJzNxdvnqzDMMitFAIgFt8q+4FM53rl4bfBzwnQRpXDLaGc4bdKC0wcjBUHKyQ=", - "kid": "Er5OTMwLd78=" - }, - { - "issuer": "C = NO O = Norsk helsenett SF CN = NO NHN CSCA PROD", - "subject": "C = NO O = Norwegian Institute of Public Health CN = DSC AN EU 4", - "notbefore": 1623749426000, - "notafter": 1686822026000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElH46JUamhvfj2ocSTxw9Eq7nVdP9\nOzBOxQ/zaWNXN5ucagla6nruNqfDiZXQMcz4gpZ6pcjtJl+xra2ATzZ9Pw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICMDCCAdWgAwIBAgITWQAAAAVu7yCnw/v4agAAAAAABTAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzAyNloXDTIzMDYxNTA5NDAyNlowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASUfjolRqaG9+PahxJPHD0SrudV0/07ME7FD/NpY1c3m5xqCVrqeu42p8OJldAxzPiClnqlyO0mX7GtrYBPNn0/o4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBSLtW/xwBSwzLlO3mNEzuueB3HOOTAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0kAMEYCIQDhu8xPp4rym01BCIlLAPB4UftU+yrPjxnsEPk+q4Bk4wIhAKVSgCN39hpSqqb5ErHWJdTp6+zJalGHg3Oj990zNYBY", - "kid": "cdm9Ymfwn2I=" - }, - { - "issuer": "C = IT O = Ministero della Salute CN = Italy DGC CSCA 1", - "subject": "C = IT O = Ministero della Salute CN = Italy DGC DSC 3", - "notbefore": 1636724505000, - "notafter": 1699796504000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwlU23NYZQba7t++TVejbvPxgS6w\ndW8uE7UPe14VkhXoKINhhrCT0EWHP+aPim6apT46Ktd0lfoNVTsbg2QQ2A==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEDzCCAfegAwIBAgIUdtfIwH49VX3gzjg7sw1okOP/KAIwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjExMTEyMTM0MTQ1WhcNMjMxMTEyMTM0MTQ0WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwlU23NYZQba7t++TVejbvPxgS6wdW8uE7UPe14VkhXoKINhhrCT0EWHP+aPim6apT46Ktd0lfoNVTsbg2QQ2KOBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFCR9+jzaaoSYO/7wB8YLfAk4Vw1FMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAokc+BGagX9kFseWotrm4fPrXBm6JLAxn9rC/Mz1awCXehbinERs+AVl029UApYXNp3/wiA57/9z1NkmMtZspBn1b0rJ4WP5hcRDhcsXxFvkSNx03/LwTCBi9iJSFNDQSv6bq8+YVSenamvwGJ+wNpemAIthrPshIGU2+MEipWhFmERYE6JaGJVFGs6n8r4IHzOx3gKeyUoGK2p4vM0Aw4LCfaqffEQz47lVMi+dDk3/h6CWWKZ6//+/15DKsuuj+BBAt9HBaqKAgCQke8RVceGJ1dsZFUW0yuCMqCSmoc3pksjQghYki9p4gs8Ex9khXCusRnCw81sG7VGrZgiDCEGHtbny774/CLCFNDpPC/CJLSEiyDP2exV6um2NEtAqQvGPlCdKVxHiLJ1FkunuHV0zYMLQi4+5mjAWbs4DuTgsOfkuZoJ7t8lFp9rqx3maNrew8Dw/w2nTuOHfk5f4xb99nlVXqA0rUPejZ/kf4ajU2AXrszxLAGXZnopryEcCSzxUSu1vRnv9NMtneTn3l0fDQTwPFVV2zquQUwl85Rm672r12Lupisn74UgwKgElxkgHjNRry++64ULoksydKWMz78ElfLV1tws8xoEx8I744pxsq7DTK52tcFuIZjASIfley6AbGLWzu8DUVGA3o/ANbavT56O8sXlT2OGipPx0=", - "kid": "8hilYZIP6uI=" - }, - { - "issuer": "C = IT O = Ministero della Salute CN = Italy DGC CSCA 1", - "subject": "C = IT O = Ministero della Salute CN = Italy DGC DSC 1", - "notbefore": 1620807497000, - "notafter": 1683879119000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/\njbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehojw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEDzCCAfegAwIBAgIURldu5rsfrDeZtDBxrJ+SujMr2IswDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjEwNTEyMDgxODE3WhcNMjMwNTEyMDgxMTU5WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/jbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehoj6OBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFC4bAbCvpArrgZ0E+RrqS8V7TNNIMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAjxTeF7yhKz/3PKZ9+WfgZPaIzZvnO/nmuUartgVd3xuTPNtd5tuYRNS/1B78HNNk7fXiq5hH2q8xHF9yxYxExov2qFrfUMD5HOZzYKHZcjcWFNHvH6jx7qDCtb5PrOgSK5QUQzycR7MgWIFinoWwsWIrA1AJOwfUoi7v1aoWNMK1eHZmR3Y9LQ84qeE2yDk3jqEGjlJVCbgBp7O8emzy2KhWv3JyRZgTmFz7p6eRXDzUYHtJaufveIhkNM/U8p3S7egQegliIFMmufvEyZemD2BMvb97H9PQpuzeMwB8zcFbuZmNl42AFMQ2PhQe27pU0wFsDEqLe0ETb5eR3T9L6zdSrWldw6UuXoYV0/5fvjA55qCjAaLJ0qi16Ca/jt6iKuws/KKh9yr+FqZMnZUH2D2j2i8LBA67Ie0JoZPSojr8cwSTxQBdJFI722uczCj/Rt69Y4sLdV3hNQ2A9hHrXesyQslr0ez3UHHzDRFMVlOXWCayj3LIgvtfTjKrT1J+/3Vu9fvs1+CCJELuC9gtVLxMsdRc/A6/bvW4mAsyY78ROX27Bi8CxPN5IZbtiyjpmdfr2bufDcwhwzdwsdQQDoSiIF1LZqCn7sHBmUhzoPcBJdXFET58EKow0BWcerZzpvsVHcMTE2uuAUr/JUh1SBpoJCiMIRSl+XPoEA2qqYU=", - "kid": "NJpCsMLQco4=" - }, - { - "issuer": "C = IT O = Ministero della Salute CN = Italy DGC CSCA 1", - "subject": "C = IT O = Ministero della Salute CN = Italy DGC DSC 2", - "notbefore": 1636724438000, - "notafter": 1699796437000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhX3UYfApjRF+CwtZqZJga6pwzbvN\nic585TOlc0qa2DbRcer1H3FYNY1HErSbo3+tOLiYkPHbrbQdLTE05rymtA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEDzCCAfegAwIBAgIUUfSAdqIwpkqwXjDhZ+0JdUPaICAwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjExMTEyMTM0MDM4WhcNMjMxMTEyMTM0MDM3WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhX3UYfApjRF+CwtZqZJga6pwzbvNic585TOlc0qa2DbRcer1H3FYNY1HErSbo3+tOLiYkPHbrbQdLTE05rymtKOBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFNyqHmbZQ9GcMJjdpjpoJXEwFn/8MA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEART1krCdKJhBVe9N4ydQ2UGQlgjEL1OgHj1s0TNCQKL3kEwYcafkKstW0vtsFi1ZGKrfgWkXCcWwkl5/NxfRNoSACApZog4cgSYDlgxa2G7KAoXa7xLuN2ADMEK02zXY5tGnd7Sv6Jl2nMfuUXMirAotr1vA6QETSDmbQNJqyKciDOQkdjxL1mGKhDzeneYRxLeKkOVox/X0uPguRYT2NS7jr2U7S3Z48667Ow46YLAI6n7IZGodn7Wktz1aqFWPGoBhJ2Y5C/QvBjzWn/0WfLBX65cchOdkZoYvfJcnbWS7Z7N/G1V2/CNYNr09EHiZnsmdcsqBX/ywyIGdybCGbx3cDqXsOBfcjH5Jy8moe7QL3oEraUDUEk5JF7un17GcdB4pjOlB8e1AWEthMpa2UMUw/vox1TCUjZ3pZa4rYn+yhcBoA6dYgu8B2HXcNFAE2S35XXDT15C0LvYh858UvtWSLoRmwyrkbNr7ImtgVrdzOKhIEetbmKLdM7fB7kcsYWZ05LTD3VsA2A8AHCOZ2noI4f50pd+VF1FtOz8ogRrCvHz7TJ4T7Kg6aIq/K1zlu06LaJQj2s8f4mJeCYZBfYmm4uywO2PHI8Hcv5MwTrbQ27CuvBkayfIToNOrNLsI8qlcE20Vfei/rLFAGWQoF0xVoJ+boNIBtwn/NBJDtIb4=", - "kid": "zrMytIH40Rk=" - }, - { - "issuer": "C = SI O = NIJZ, National Institute of Public Health of Slovenia OU = NIJZ eHealth CN = Slovenian Digital Covid Certificate CSCA", - "subject": "C = SI O = NIJZ, National Institute of Public Health of Slovenia OU = NIJZ eHealth CN = Slovenian Digital Covid Certificate Signer", - "notbefore": 1622793213000, - "notafter": 1685865213000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEmxEg2iFDaol9DVnrqIY5zkPXrBA\nNQlakmUfrBhogaDC2ZZ7fkQ2IcOJgEF4rQSyb34g5jDw88g7QaIknaLKMw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIC6jCCApCgAwIBAgIUJUAGAXpxHsU1S82LcnISggTrZYcwCgYIKoZIzj0EAwIwgZcxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTEwLwYDVQQDDChTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBDU0NBMB4XDTIxMDYwNDA3NTMzM1oXDTIzMDYwNDA3NTMzM1owgZkxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTMwMQYDVQQDDCpTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQSbESDaIUNqiX0NWeuohjnOQ9esEA1CVqSZR+sGGiBoMLZlnt+RDYhw4mAQXitBLJvfiDmMPDzyDtBoiSdosozo4G1MIGyMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUhB9+YwGh9z/Z2AFAekINW9AqzMwwHwYDVR0jBBgwFoAU1u0NkxR1dJeR9jh6pZ04KsvRFV8wMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzArBgNVHRAEJDAigA8yMDIxMDUyODEwMDAwMFqBDzIwMjIwNTI4MTAwMDAwWjAKBggqhkjOPQQDAgNIADBFAiEAgD02EKWZhDUblN1geYhOR8UYvbz1kKcncPzq4Y7SgS0CIEsbjBaDw8vWDqXsbDg7gckdK6SuF16w9Uvr/peExozy", - "kid": "90CNG8dcdn0=" - }, - { - "issuer": "CN = Poland DGC RootCSCA 1 O = Ministry of Health C = PL", - "subject": "CN = Poland Test DGC Service 1 OU = eHealth Centre O = Ministry of Health C = PL", - "notbefore": 1622029825000, - "notafter": 1685101825000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERG4yI/SSv70zEtVjzIrn/CypR1e0\nBZO5u8bIgltZicrg+992n2a7GucxK6zy91xq8F8XH7B0SJU75qkr8Z1d9A==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIChjCCAiygAwIBAgIISPHH9eN/DsUwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTAyNVoXDTIzMDUyNjExNTAyNVowZzEiMCAGA1UEAwwZUG9sYW5kIFRlc3QgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAREbjIj9JK/vTMS1WPMiuf8LKlHV7QFk7m7xsiCW1mJyuD733afZrsa5zErrPL3XGrwXxcfsHRIlTvmqSvxnV30o4HeMIHbMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQUJtco+4DwjQXe7tYA2X0svBWc8aowKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTUwMjVagQ8yMDIyMDUyNjExNTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQD0aM2oui9agdjvs3W3CBnJzNj1QTn86txDT8z4f92U/QIgdfA1+c567xA4y/11vguxxe9nDHAtAAEpXe8FkupyFTk=", - "kid": "AN1EeLIMAmo=" - }, - { - "issuer": "CN = Poland DGC RootCSCA 1 O = Ministry of Health C = PL", - "subject": "CN = Recovery DGC Service 1 OU = eHealth Centre O = Ministry of Health C = PL", - "notbefore": 1622029789000, - "notafter": 1685101789000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdxvWMfuk6CHCbffZWPS6bRgVYglY\ndED1NT1FCfXstUZ81AWmYOh6tbZgOF9OM1lzqdpFD1uOmEZ0A8XXYmkB1A==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICgDCCAiagAwIBAgIINrcF73thXScwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNDk0OVoXDTIzMDUyNjExNDk0OVowZDEfMB0GA1UEAwwWUmVjb3ZlcnkgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3G9Yx+6ToIcJt99lY9LptGBViCVh0QPU1PUUJ9ey1RnzUBaZg6Hq1tmA4X04zWXOp2kUPW46YRnQDxddiaQHUo4HbMIHYMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQU88MJtD/tgeFEqpb+Her86lI3G3UwKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTQ5NDlagQ8yMDIyMDUyNjExNDk0OVowCwYDVR0PBAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQDA6URDSMLbEYaFP1V1bfDlZDE5aANs8FcjghZGnadrHwIgbCe6gwSV5PAMwGXMgtbf9ItPzgFxV67mZzvH+avXOck=", - "kid": "FDNJjaSCWi0=" - }, - { - "issuer": "CN = Poland DGC RootCSCA 1 O = Ministry of Health C = PL", - "subject": "CN = Poland Vaccination DGC Service 1 OU = eHealth Centre O = Ministry of Health C = PL", - "notbefore": 1622029990000, - "notafter": 1685101990000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3N\nVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78g==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICiTCCAjCgAwIBAgIIPrgTduwYL84wCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTMxMFoXDTIzMDUyNjExNTMxMFowbjEpMCcGA1UEAwwgUG9sYW5kIFZhY2NpbmF0aW9uIERHQyBTZXJ2aWNlIDExFzAVBgNVBAsMDmVIZWFsdGggQ2VudHJlMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3NVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78qOB2zCB2DAfBgNVHSMEGDAWgBSReaLaaIESwKN0GqS63esPmeyLATAWBgNVHSUEDzANBgsrBgEEAY43j2UBAjBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vcDEuZXpkcm93aWUuZ292LnBsL2NjcDEvY3JsL0RHQ1Jvb3RDU0NBMS5jcmwwHQYDVR0OBBYEFEfkBAHCnTR6Ar66rg0lwacUkD9aMCsGA1UdEAQkMCKADzIwMjEwNTI2MTE1MzEwWoEPMjAyMjA1MjYxMTUzMTBaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiBrwE3IHj2Vjq71fA3jNBz/Hso3xXhVtPXa42JcfDJrvgIgLsib0ZAxm3ERXePd4Nlgvt+lISofEHlIi+CEBpJd5sE=", - "kid": "HhkeqvrtQ0U=" - }, - { - "issuer": "CN = DGC Country Signing CA OU = Public Service Development Agency O = Ministry of Justice of Georgia C = GE", - "subject": "CN = DGC DS Signer 2 OU = LEPL Information Technologies Agency O = Ministry of Internally Displaced Persons From the Occupied Territories, Labour, Health and Social Affairs of Georgia C = GE", - "notbefore": 1635527288000, - "notafter": 1698599287000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OUh2s00z3fKc2NTrYN+8SQERWvy\n3gRdGsmjrGMZQ9nZPT3bYLYDuyuhpYfQ8CSOuU2bScmWN9xthX3T6V1T8g==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDLTCCAtKgAwIBAgIUbq8e2Rnwzdt8bImI5KhdT7wvIZIwCgYIKoZIzj0EAwIwgYMxHzAdBgNVBAMMFkRHQyBDb3VudHJ5IFNpZ25pbmcgQ0ExKjAoBgNVBAsMIVB1YmxpYyBTZXJ2aWNlIERldmVsb3BtZW50IEFnZW5jeTEnMCUGA1UECgweTWluaXN0cnkgb2YgSnVzdGljZSBvZiBHZW9yZ2lhMQswCQYDVQQGEwJHRTAeFw0yMTEwMjkxNzA4MDhaFw0yMzEwMjkxNzA4MDdaMIHVMRgwFgYDVQQDDA9ER0MgRFMgU2lnbmVyIDIxLTArBgNVBAsMJExFUEwgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIEFnZW5jeTF9MHsGA1UECgx0TWluaXN0cnkgb2YgSW50ZXJuYWxseSBEaXNwbGFjZWQgUGVyc29ucyBGcm9tIHRoZSBPY2N1cGllZCBUZXJyaXRvcmllcywgTGFib3VyLCBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzIG9mIEdlb3JnaWExCzAJBgNVBAYTAkdFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OUh2s00z3fKc2NTrYN+8SQERWvy3gRdGsmjrGMZQ9nZPT3bYLYDuyuhpYfQ8CSOuU2bScmWN9xthX3T6V1T8qOBzzCBzDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGdNMng/by4nCNGrYeB79TXd3c2wMDAGA1UdJQQpMCcGCysGAQQBjjePZQEDBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5jcmEuZ2UvZGdjY291bnRyeXNpZ25pbmdjYS5jcmwwHQYDVR0OBBYEFBlRrQE2MFW1c+X7ZPuq50qEp6YDMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNJADBGAiEAiDjXwDLMCbYtUOhS3p6HIN1aZdJg2x+q7QlFldqYoBkCIQDsv+uGlrWi8ZAjn1QsyqsU6HKc3a2oD+bTsg0UA/ZboQ==", - "kid": "AcOmDWpm7kI=" - }, - { - "issuer": "CN = DGC Country Signing CA OU = Public Service Development Agency O = Ministry of Justice of Georgia C = GE", - "subject": "CN = DGC DS Signer 1 OU = LEPL Information Technologies Agency O = Ministry of Internally Displaced Persons From the Occupied Territories, Labour, Health and Social Affairs of Georgia C = GE", - "notbefore": 1635526565000, - "notafter": 1698598564000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEa5QqEDGwiaDJSMCLVHg6l9ScX3LI\n/9mzuzs6e+E0YBgeKTdQ5VV0IBCSIZkgjSb/Hfzghmi9rOa9aGuww7BU9Q==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDLDCCAtKgAwIBAgIUVO20iQwJJtX9tVMEQrEQl/B+5XswCgYIKoZIzj0EAwIwgYMxHzAdBgNVBAMMFkRHQyBDb3VudHJ5IFNpZ25pbmcgQ0ExKjAoBgNVBAsMIVB1YmxpYyBTZXJ2aWNlIERldmVsb3BtZW50IEFnZW5jeTEnMCUGA1UECgweTWluaXN0cnkgb2YgSnVzdGljZSBvZiBHZW9yZ2lhMQswCQYDVQQGEwJHRTAeFw0yMTEwMjkxNjU2MDVaFw0yMzEwMjkxNjU2MDRaMIHVMRgwFgYDVQQDDA9ER0MgRFMgU2lnbmVyIDExLTArBgNVBAsMJExFUEwgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIEFnZW5jeTF9MHsGA1UECgx0TWluaXN0cnkgb2YgSW50ZXJuYWxseSBEaXNwbGFjZWQgUGVyc29ucyBGcm9tIHRoZSBPY2N1cGllZCBUZXJyaXRvcmllcywgTGFib3VyLCBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzIG9mIEdlb3JnaWExCzAJBgNVBAYTAkdFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEa5QqEDGwiaDJSMCLVHg6l9ScX3LI/9mzuzs6e+E0YBgeKTdQ5VV0IBCSIZkgjSb/Hfzghmi9rOa9aGuww7BU9aOBzzCBzDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGdNMng/by4nCNGrYeB79TXd3c2wMDAGA1UdJQQpMCcGCysGAQQBjjePZQEDBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5jcmEuZ2UvZGdjY291bnRyeXNpZ25pbmdjYS5jcmwwHQYDVR0OBBYEFHtiZBY7D8iDDRpr5yECOpZ1cyfLMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBH/RuRLyOU640ZMdX0CDXC2/Hlv8tDsQN2Tjm2+fmbbAIhALY7w0RCZyu0JY1jmnBMKtzPr7mdqZGCR1oi7jC8RvXO", - "kid": "ZqPYe26eEEk=" - }, - { - "issuer": "C = FI O = Vaestorekisterikeskus CA OU = Sosiaali- ja terveydenhuollon palveluvarmenteet CN = VRK CA for Social Welfare and Health Care Service Providers", - "subject": "C = FI ST = Finland L = Helsinki O = Kansanelakelaitos OU = Kanta serialName = 1.2.246.556.12.21.2 CN = Todistuspalvelu", - "notbefore": 1624014000000, - "notafter": 1687121999000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEepKcLfnTZIej9gSNJVmR8sRYMMgz\ntnG9h0ZGWx7D1X1g32V/GtJc55HkoH+vqkbkhKJnvDBJ1JdsbkKKmBJb2Q==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "BKBFhNFXWAU=" - }, - { - "issuer": "C = EE O = Estonia OU = Police and Border Guard Board serialName = 01-2020 CN = CSCA_Estonia", - "subject": "CN = 02-2021_DCC serialName = 02-2021 C = EE O = Estonia OU = Health and Welfare Information Systems Centre", - "notbefore": 1623152362000, - "notafter": 1701776362000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNf\nd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4A==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEtzCCAm+gAwIBAgIBFjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDBwMQswCQYDVQQGEwJFRTEQMA4GA1UECgwHRXN0b25pYTEmMCQGA1UECwwdUG9saWNlIGFuZCBCb3JkZXIgR3VhcmQgQm9hcmQxEDAOBgNVBAUTBzAxLTIwMjAxFTATBgNVBAMMDENTQ0FfRXN0b25pYTAeFw0yMTA2MDgxMTM5MjJaFw0yMzEyMDUxMTM5MjJaMH8xFDASBgNVBAMWCzAyLTIwMjFfRENDMRAwDgYDVQQFEwcwMi0yMDIxMQswCQYDVQQGEwJFRTEQMA4GA1UEChMHRXN0b25pYTE2MDQGA1UECxMtSGVhbHRoIGFuZCBXZWxmYXJlIEluZm9ybWF0aW9uIFN5c3RlbXMgQ2VudHJlMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNfd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4KOBtzCBtDAdBgNVHQ4EFgQUrz4uJgDuJ+1fAWhBPQpmWJOqvUMwKwYDVR0QBCQwIoAPMjAyMTA2MDgxMTM5MjJagQ8yMDIxMTIwNTExMzkyMlowDgYDVR0PAQH/BAQDAgeAMDUGA1UdHwQuMCwwKqAooCaGJGh0dHBzOi8vd3d3LnBraS5wb2xpdHNlaS5lZS9jc2NhLmNybDAfBgNVHSMEGDAWgBRVq9JvhX7uQOBhSt+YPiu2k2xVvDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIAOCAgEAJ/OIJaw1Hg+yD7TH3YPG7ux6I4Fpx1QC1UPdIouG0HcHm8Lde+cB1IHlHc/C03jvVWnkbeH0mlpHLcStNICIgc8wfhOLS/yDvor/sYSNNX2v9OcJuxWmL6a2b3C5vuQJNr09HrSqv+1MDM/Qj7qRSraO9JSm59StyaoEdZXgK40eNnSxfRD2HFRpqr6aY+FB7ONH53/nCi/PT+fW6LB2hS+VtBUaWt1pShs2W8cahNJ/O6oujquKDhTj8uqdbhV9lug2JJ2/eLxWawEYVGC20HMrg9qwW971mR3UeGZmbJb0KyHr4b1LupC+sN88/A0CwCybS3x2Dla/OvPff7W1BqFyhEzBgDL1jB9iVF57erYGkoPd9oHKTIQdZ84u7JKLvi13xJGAR4KAsryrfP0Wcc29+TQJPZwedaauz96OUpC92hcu21cI5drikSF/Y9U96gGay0AWHM+DafA6NEUiWRMIFC3IaMjMr6FFwz4uq6KTK08YZoN/Dn09eVgrBcXqHR69FSJ00lwduDDamN9JHmy5wuLw22rDaXiymUYAkZZCc1PS2yJG8bIOfzYEAHAbESlJQ671MmudVDRM3PuvVICRp0jXZg/sNzT053rDpk0Z2nxKLcAVzPo0wRgnpih1zVchVTakNbWxwsOPftCSVnZjEhAHvq/GZ3ysssMNRUc=", - "kid": "EzYR1uk/E0I=" - }, - { - "issuer": "O = State enterprise \"DIIA\" CN = \"DIIA\". Green Certificate CSCA serialName = UA-43395033-2021 C = UA L = Kyiv 2.5.4.97 = NTRUA-43395033", - "subject": "O = State enterprise \"DIIA\" CN = \"DIIA\". Green Certificate DSC 2 serialName = 22 C = UA L = Kyiv", - "notbefore": 1629234000000, - "notafter": 1692305999000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd22zt56DQx1ao5dd4u6jU3KPELJd\ncWfl0+FJ6cVhCb8s0SmQleFtS9m5RQqVzbBr/JnUfqVZjvrPFzwpbgdMeQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEuzCCBGGgAwIBAgIUeQTIILWQh4cEAAAAFgAAACEAAAAwCgYIKoZIzj0EAwIwgZsxIDAeBgNVBAoMF1N0YXRlIGVudGVycHJpc2UgIkRJSUEiMScwJQYDVQQDDB4iRElJQSIuIEdyZWVuIENlcnRpZmljYXRlIENTQ0ExGTAXBgNVBAUTEFVBLTQzMzk1MDMzLTIwMjExCzAJBgNVBAYTAlVBMQ0wCwYDVQQHDARLeWl2MRcwFQYDVQRhDA5OVFJVQS00MzM5NTAzMzAeFw0yMTA4MTcyMTAwMDBaFw0yMzA4MTcyMDU5NTlaMHUxIDAeBgNVBAoMF1N0YXRlIGVudGVycHJpc2UgIkRJSUEiMSgwJgYDVQQDDB8iRElJQSIuIEdyZWVuIENlcnRpZmljYXRlIERTQyAyMQswCQYDVQQFEwIyMjELMAkGA1UEBhMCVUExDTALBgNVBAcMBEt5aXYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3bbO3noNDHVqjl13i7qNTco8Qsl1xZ+XT4UnpxWEJvyzRKZCV4W1L2blFCpXNsGv8mdR+pVmO+s8XPCluB0x5o4ICpjCCAqIwHQYDVR0OBBYEFIjv6MDr8gqaj1GvhYENJ5FvDg+LMB8GA1UdIwQYMBaAFHkEyCC1kIeHDT09MC0K0Ko+YXcCMA4GA1UdDwEB/wQEAwIGwDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMEEGA1UdIAQ6MDgwNgYJKoYkAgEBAQICMCkwJwYIKwYBBQUHAgEWG2h0dHBzOi8vZ3JlZW5jYS5kaWlhLmdvdi51YTAJBgNVHRMEAjAAMFQGCCsGAQUFBwEDBEgwRjAIBgYEAI5GAQEwLQYGBACORgEFMCMwIRYbaHR0cHM6Ly9ncmVlbmNhLmRpaWEuZ292LnVhEwJlbjALBgkqhiQCAQEBAgEwTgYDVR0fBEcwRTBDoEGgP4Y9aHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvZG93bmxvYWQvY3Jscy9DQS03OTA0QzgyMC1GdWxsLmNybDBPBgNVHS4ESDBGMESgQqBAhj5odHRwOi8vZ3JlZW5jYS5kaWlhLmdvdi51YS9kb3dubG9hZC9jcmxzL0NBLTc5MDRDODIwLURlbHRhLmNybDCBiQYIKwYBBQUHAQEEfTB7MDUGCCsGAQUFBzABhilodHRwOi8vZ3JlZW5jYS5kaWlhLmdvdi51YS9zZXJ2aWNlcy9vY3NwLzBCBggrBgEFBQcwAoY2aHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvY2EtY2VydGlmaWNhdGVzL2dyZWVuY2EucDdiMEoGCCsGAQUFBwELBD4wPDA6BggrBgEFBQcwA4YuaHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvc2VydmljZXMvdHNwL2VjZHNhLzAKBggqhkjOPQQDAgNIADBFAiEAzrDXxTuym77Eo9J4GNB/GoZRm9lTVtmUpLCjhzr7t5ICIDdt0waoDoBfm201AGoLjErsage0uxBI3SkncWQaP7nZ", - "kid": "FhciF/j3plg=" - }, - { - "issuer": "C = MC O = Principality of Monaco OU = Foreign Office of Monaco CN = CSCAPKI_MC", - "subject": "C = MC O = Principality of Monaco OU = Ministry of Health and Social Affairs CN = DSPKI_MC_DGC_1", - "notbefore": 1632143989000, - "notafter": 1679491189000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/XCqYpwUi4RLldTOqsukogo6l4ZU\nIXO4ZtjkUxEpDToYLFI0uApt1KXSfpsn8EfNGPaWF+YW2B1QKpbCtbtZFg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIE6zCCAtOgAwIBAgITEfc5jeKc7JLK6DrtdI7KoEudnzANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJNQzEfMB0GA1UECgwWUHJpbmNpcGFsaXR5IG9mIE1vbmFjbzEhMB8GA1UECwwYRm9yZWlnbiBPZmZpY2Ugb2YgTW9uYWNvMRMwEQYDVQQDDApDU0NBUEtJX01DMB4XDTIxMDkyMDEzMTk0OVoXDTIzMDMyMjEzMTk0OVowdzELMAkGA1UEBhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25hY28xLjAsBgNVBAsMJU1pbmlzdHJ5IG9mIEhlYWx0aCBhbmQgU29jaWFsIEFmZmFpcnMxFzAVBgNVBAMMDkRTUEtJX01DX0RHQ18xMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/XCqYpwUi4RLldTOqsukogo6l4ZUIXO4ZtjkUxEpDToYLFI0uApt1KXSfpsn8EfNGPaWF+YW2B1QKpbCtbtZFqOCAUowggFGMCgGA1UdEQQhMB+CC3d3dy5nb3V2Lm1jpBAwDjEMMAoGA1UEBwwDTUNPMDUGA1UdEgQuMCyGGGh0dHBzOi8vY3NjYS1tY28uZ291di5tY6QQMA4xDDAKBgNVBAcMA01DTzAOBgNVHQ8BAf8EBAMCB4AwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzArBgNVHRAEJDAigA8yMDIxMDkyMDA3NDQ0OFqBDzIwMjIwMzIwMDc0NDQ4WjAdBgNVHQ4EFgQU5DhDGjpYh+dwXciftwec8RGrW00wHwYDVR0jBBgwFoAUMDKcfP59jwLtxRJa4OtXv+iFiSkwMQYDVR0fBCowKDAmoCSgIoYgaHR0cHM6Ly9jc2NhLW1jby5nb3V2Lm1jL01DTy5jcmwwDQYJKoZIhvcNAQELBQADggIBAAnLvzFhQlE4lohlktg0QUnF6DGIA1JEC26QRnJi+1gMXNZok90Q37DPJ54uml8UnCkieGVIpQaDp5jIxMax+t6QmwkgQNoQzjiJJqeKP6xBsEUmGUKURx0g5z7ULem+TdedSIiMEqSrie3YX5Zfea3dzy3zIw2s6cCa67RHj860OqXZHrMtYc7rqoXxkWkqGaSJovxSthmiBWQisTPFMTzFZqm85ojU11A3uY8ReuUrUuvyefVAFENLuz8j2T6CGOIigNxnmyZzm+2TpH+53Dd5S8MlVwuZZ4RHv2g+p/YygOvHceGPIORSeLcqrIW4kgz6HxonBy/vjC6Pj07wFlyFafo3V5KQxPUQZtFQ8blhe7ZrRPyimObcA55Oh20V/HnVewzz3onjEQuotg1QNRJ7gzoJeBunwFXpHrG/mUg3dVeow0pOV0vsQ/QAOCM0p7GVABoHT4O4dOWLNoaWcoQBvPSGbAl5O1YhzOhXRTlyYfxNSUxKavWfpTF1mB1WXyThtatvQ2cP7qlgVYbBjvejyz+RTpK2cgyDFDlcBJaBakCBeuqEJvKvMxX50NqQAVBTfywrQyIyynttQgoxxl5KwkEPJ4BrbP/XIw8KkuGO5C9EKGjaftQNQ25GkdNDQFyMiJU7EhN6Hp/6dsgZXnfG8gacZu4vnIiXphYBigi2", - "kid": "FtUwA9uHJoo=" - }, - { - "issuer": "C = MC O = Principality of Monaco OU = Foreign Office of Monaco CN = CSCAPKI_MC", - "subject": "C = MC O = Principality of Monaco OU = Ministry of Health and Social Affairs CN = DSPKI_MC_DGC_1", - "notbefore": 1623918269000, - "notafter": 1671265469000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcrxlv5/uGbsaXM/QMSpvZV2iNtF0\no4QBech6LGpy3OEefbJLf+4iqI19QNWtUXEjlMMytB4+1ESLHdXyki5X2g==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIE7DCCAtSgAwIBAgIUAJdHETmGhF9czCBAxz36xGrwMPkwDQYJKoZIhvcNAQELBQAwZjELMAkGA1UEBhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25hY28xITAfBgNVBAsMGEZvcmVpZ24gT2ZmaWNlIG9mIE1vbmFjbzETMBEGA1UEAwwKQ1NDQVBLSV9NQzAeFw0yMTA2MTcwODI0MjlaFw0yMjEyMTcwODI0MjlaMHcxCzAJBgNVBAYTAk1DMR8wHQYDVQQKDBZQcmluY2lwYWxpdHkgb2YgTW9uYWNvMS4wLAYDVQQLDCVNaW5pc3RyeSBvZiBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzMRcwFQYDVQQDDA5EU1BLSV9NQ19ER0NfMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHK8Zb+f7hm7GlzP0DEqb2VdojbRdKOEAXnIeixqctzhHn2yS3/uIqiNfUDVrVFxI5TDMrQePtREix3V8pIuV9qjggFKMIIBRjAoBgNVHREEITAfggt3d3cuZ291di5tY6QQMA4xDDAKBgNVBAcMA01DTzA1BgNVHRIELjAshhhodHRwczovL2NzY2EtbWNvLmdvdXYubWOkEDAOMQwwCgYDVQQHDANNQ08wDgYDVR0PAQH/BAQDAgeAMDMGA1UdJQQsMCoGDCsGAQQBAI43j2UBAQYMKwYBBAEAjjePZQECBgwrBgEEAQCON49lAQMwKwYDVR0QBCQwIoAPMjAyMTA2MTcwODE0MDBagQ8yMDIxMTIxNzA4MTQwMFowHQYDVR0OBBYEFCurTSCZX0MwxJXi6a/cJR4zZn9WMB8GA1UdIwQYMBaAFDAynHz+fY8C7cUSWuDrV7/ohYkpMDEGA1UdHwQqMCgwJqAkoCKGIGh0dHBzOi8vY3NjYS1tY28uZ291di5tYy9NQ08uY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQAEaZtWub0CVASIEHG95DCwcFIVdaVZZupOzKuIimUNRH8+9pa9IPekVPLiArnGlmpAg6o4Ac8MVHvCkEiSAA8HVDkABbssmrKm6ZZ4XRDtBokrGlYskUy2B8AQypPKjKXz/vMYnVMNl4kkcehG8+B0KyPrpYMK7VXQuRxe+QC0CaemS2NGLNvr2+vnpfXeJAfM6TpnSPaN7MjAgt/8UyGJP6HLuHbGgbALgcxwqq5CniU3f8zLjIXRKWqhDmE4M8ufu/VFVR18fWoHqeytcOpFTdmN3YLxu9jA573KHyLRLO7g20PlOJYuHtOoG2SzwEa2Ut0ooFAajLnxwVoYuCfYKWubYRRqReFI45EtNtC8Tut8J3SAIk53IH6v1mG4m2QFCGFV7ehu6A+jwsVrg8o+XesHV96EK8jJooEjp2jIIrHHU8LTozrWSECiRsnEWv7e4TP4+3dj/6Yrrzm6DlzCw/y9s6T/Iolp1SKaNsHOHJwwNTJAqzGxP8N8fdnxs1c1iLXXxHJy8AKZC8eNFj09AF8Tvi/IQTOpmMFhRGkCCkrNMf5Zf7vFLtAm+yqOsOOYNhTiyoqX96tKipsxcm+CDIAnhyUgJgxVfEUO547lg3/hdJUvI62/0gisUqXBnYDwMiWlXZHmS+K9lMar0k1NeKb2K5BSox7U3oP+d/RPpg==", - "kid": "Pcl7yBWEQ7c=" - }, - { - "issuer": "C = MT O = Government of Malta CN = Malta DCC Signing CA", - "subject": "CN = MLT-DSC-RECOVERY-003 O = Government of Malta C = MT", - "notbefore": 1625097600000, - "notafter": 1688255999000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDON\nYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICgTCCAiegAwIBAgIIFwgHF3EO4GkwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDMxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDONYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdaOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBR9uzKFO2DLNzUjBFGi4relF01KBTB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNIADBFAiEA99DvYsvpGT4tqpc0BMSCZeyZ7WMbt8ZM1PpabmhX8+cCIGCtDA+B0wWuPtFcN+xk/jBG5t30dSFLWQB43XkMQLug", - "kid": "GvVR3e6VJIM=" - }, - { - "issuer": "C = MT O = Government of Malta CN = Malta DCC Signing CA", - "subject": "CN = MLT-DSC-TEST-001 O = Government of Malta C = MT", - "notbefore": 1624233600000, - "notafter": 1687391999000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfapP8+QeyFgXVvY41YkQudlUUh7I\nZBBpIdOJ34xYmxCEuHXbVUFqt/JSnbpVsGsd7ZBPUjL2u5Ks9moBMDEPLg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICfjCCAiOgAwIBAgIIejS7d37VXgEwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMTEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR9qk/z5B7IWBdW9jjViRC52VRSHshkEGkh04nfjFibEIS4ddtVQWq38lKdulWwax3tkE9SMva7kqz2agEwMQ8uo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFBR+KFEXuumXgCc5GWe258iqVrnfMHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNjIxMDAwMDAwWoEPMjAyMTEyMjEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDBnG+uLfchypa5wnmHMUi2aWEzWkbjoGgn5WsWmXffcAIhAKMusBaq7xzWVRMreNFvQsitrCaSaqDoQPvQuU72+SjN", - "kid": "QacbC7DdD4U=" - }, - { - "issuer": "C = MT O = Government of Malta CN = Malta DCC Signing CA", - "subject": "CN = MLT-DSC-VACCINATIONS-001 O = Government of Malta C = MT", - "notbefore": 1624233600000, - "notafter": 1687391999000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1q1nvgXLGIbibQuYQU+f+Xs+mcbP\nmukAc3KQAyy/5KZH+n5F4bG4V0XIjphX093YxHh1JbHWOzuhKuan9FboyA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIChTCCAiugAwIBAgIIZEwDM+Nt1KMwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAxMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNatZ74FyxiG4m0LmEFPn/l7PpnGz5rpAHNykAMsv+SmR/p+ReGxuFdFyI6YV9Pd2MR4dSWx1js7oSrmp/RW6MijgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUuCrjQfrYEdJhuUeDcYx4JKEFOf4weQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA2MjEwMDAwMDBagQ8yMDIxMTIyMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIgZGBb0sNv06M+s8UpL7ziN/FU4+4AGksrMB2BIIkZDBwCIQDXwcZZQKZFsV55HpRm/AxXSBLXu4vPFR2Lx3rdqy0nFg==", - "kid": "UZ1cSMaPcaQ=" - }, - { - "issuer": "C = MT O = Government of Malta CN = Malta DCC Signing CA", - "subject": "CN = MLT-DSC-TEST-002 O = Government of Malta C = MT", - "notbefore": 1625097600000, - "notafter": 1688255999000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4DsoM1rJFjHyQPcX6WKDWZkouBeh\nfQGxqOgwFAYyRKXbrSuL+tkz8sJfo8djfsuQRLDSuZxud0IOsMB9YsTMpg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICfjCCAiOgAwIBAgIIJTfDXWft5tcwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMjEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATgOygzWskWMfJA9xfpYoNZmSi4F6F9AbGo6DAUBjJEpdutK4v62TPywl+jx2N+y5BEsNK5nG53Qg6wwH1ixMymo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFAdYsuwV3Y8H3ArMdIP4+88NQzj6MHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNzAxMDAwMDAwWoEPMjAyMjAxMDEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDKRMYKb/xaog2wAz78sg7nxPSSGvmXDSmGm3OAvywYtwIhAL1aS9k2jC5FGCnXL146W6TNwJOLZXhG0WELPuo1eaPF", - "kid": "bfoj2trt6bE=" - }, - { - "issuer": "C = MT O = Government of Malta CN = Malta DCC Signing CA", - "subject": "CN = MLT-DSC-VACCINATIONS-002 O = Government of Malta C = MT", - "notbefore": 1625097600000, - "notafter": 1688255999000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXj9fU7e4KVYe1VakCDZjYquHzkox\nSHT8D33zeMDfyLbYi/GSVpKQtPwBPZlPx65r2Kb2warIK8BgxSgsQvMIag==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIChTCCAiugAwIBAgIIWGrho8bBjMowCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAyMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABF4/X1O3uClWHtVWpAg2Y2Krh85KMUh0/A9983jA38i22IvxklaSkLT8AT2ZT8eua9im9sGqyCvAYMUoLELzCGqjgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUOLKcvXnMDSbbBkkI/qyub1XWtNUweQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA3MDEwMDAwMDBagQ8yMDIyMDEwMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIhAPh/K0cwTwjugfRAGr47Ntn3O6iy5Dq6vtWdminY7WDrAiA/usc8ejitliKRcw9kWYkRTe5M8QTrGi0d8ISZfbWPzw==", - "kid": "ccgQ13tmkU8=" - }, - { - "issuer": "C = MT O = Government of Malta CN = Malta DCC Signing CA", - "subject": "CN = MLT-DSC-RECOVERY-002 O = Government of Malta C = MT", - "notbefore": 1625097600000, - "notafter": 1688255999000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNx\ndEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4Q==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICgjCCAiegAwIBAgIIK+HdvXWkN9YwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDIxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNxdEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4aOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBQpm2iI+XG+uIq9XM2lqhKzZ5i5MDB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNJADBGAiEAvxNjK3WJhVQiCHwFKMfUClW0xa0ikhLAPaHirWYEgKMCIQDWDa7xu71vGhmTaIeKuMywD+f1yfPsaCzeEpr1yUITbA==", - "kid": "f6J92LRKpj0=" - }, - { - "issuer": "CN = IS DGC CSCA 1 serialName = 1 OU = Directorate of Health O = Directorate of Health C = IS", - "subject": "CN = IS-DSC-testrec-1 serialName = 2 OU = Directorate of Health O = Directorate of Health C = IS", - "notbefore": 1625249448000, - "notafter": 1688321448000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvwlwjQL5cId7nINp/A/b+XNY/Wzg\nX9sIOde8ggZmZjXvIYhDhz7Fvs52ozmdqatDp3yIwPpr6nAMmaNTj0KdZg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIBzTCCAXQCAnBLMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA3MDIxODEwNDhaFw0yMzA3MDIxODEwNDhaMHQxGTAXBgNVBAMMEElTLURTQy10ZXN0cmVjLTExCjAIBgNVBAUTATIxHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABL8JcI0C+XCHe5yDafwP2/lzWP1s4F/bCDnXvIIGZmY17yGIQ4c+xb7OdqM5namrQ6d8iMD6a+pwDJmjU49CnWYwCgYIKoZIzj0EAwIDRwAwRAIgGuvSzxkT7wtN8UW9b8VavzmUbfC1Ojl99ZLu6iNNxbgCIHvbmygVJAEC9/GJgitb+1wQx5fHp/SEcfnkqPOqzFrn", - "kid": "HeWuzGwEM5c=" - }, - { - "issuer": "CN = IS DGC CSCA 1 serialName = 1 OU = Directorate of Health O = Directorate of Health C = IS", - "subject": "CN = IS-DSC-1 serialName = 1 OU = Directorate of Health O = Directorate of Health C = IS", - "notbefore": 1623406705000, - "notafter": 1686478705000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEO42X7C2X5bSDTnfSJwnk4qAjSk2m\n11Cy/mmFqryl7J1MhrZDfy77ky4uS0o1iW181Ev51mAiW0J3i3SeKYeEOw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIBxTCCAWwCAgQRMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA2MTExMDE4MjVaFw0yMzA2MTExMDE4MjVaMGwxETAPBgNVBAMMCElTLURTQy0xMQowCAYDVQQFEwExMR4wHAYDVQQLDBVEaXJlY3RvcmF0ZSBvZiBIZWFsdGgxHjAcBgNVBAoMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDELMAkGA1UEBhMCSVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ7jZfsLZfltINOd9InCeTioCNKTabXULL+aYWqvKXsnUyGtkN/LvuTLi5LSjWJbXzUS/nWYCJbQneLdJ4ph4Q7MAoGCCqGSM49BAMCA0cAMEQCIFH/Cm+epgBJoz2S3eZaSPQLb2+3seJAEe2rgvrTcA4ZAiB6kXpC2VR9kqcv+HpDrbmx4Xq3PgTsQ5HxY1B5vepJ2g==", - "kid": "Pbydc1LscXo=" - }, - { - "issuer": "C = AT O = BMSGPK serialName = 001 CN = AT DGC CSCA 1", - "subject": "C = AT O = BMSGPK serialName = 001001 CN = AT DGC DSC 1", - "notbefore": 1622641524000, - "notafter": 1685713524000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYE24qIKmdcfRWUh2TqklkfZ6nyNB\npX4VHeLMxfFl8rkQ8Zku0bcnH5OZXckkSt+tKs+FGZ9tKJ1VtNDmedlL6w==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIB7zCCAZagAwIBAgIKAXnM+L47fmBcezAKBggqhkjOPQQDAjBEMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQwwCgYDVQQFEwMwMDExFjAUBgNVBAMMDUFUIERHQyBDU0NBIDEwHhcNMjEwNjAyMTM0NTI0WhcNMjMwNjAyMTM0NTI0WjBGMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQ8wDQYDVQQFEwYwMDEwMDExFTATBgNVBAMMDEFUIERHQyBEU0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGBNuKiCpnXH0VlIdk6pJZH2ep8jQaV+FR3izMXxZfK5EPGZLtG3Jx+TmV3JJErfrSrPhRmfbSidVbTQ5nnZS+ujbjBsMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUNs2smrjBhuR5Bqxl6teE1x1o2ycwHwYDVR0jBBgwFoAUHyKsHGUWKbTBmLNjb7/dCZ27e3swGgYDVR0QBBMwEYEPMjAyMTEyMTYxNDQ1MjRaMAoGCCqGSM49BAMCA0cAMEQCIDjXHnyzq3sTisMX1uY8xQ2ZqCRL2xmxtYOPhSZ9ZacYAiAqHUMOC7WNgq4h28n31WLc1mMPAYauWslSEwnXC79AGw==", - "kid": "Is2JtrOJhik=" - }, - { - "issuer": "C = LV O = VAS Latvijas Valsts radio un televīzijas centrs 2.5.4.97 = NTRLV-40003011203 CN = Digital Green Certificate CSCA", - "subject": "C = LV O = NTRLV-90009649337 CN = lv_dsc_003", - "notbefore": 1636018245000, - "notafter": 1699090245000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6aTLMp6+apBgDNYyDeBS+BranY97\nxhfHhRYV+/D6WsCBJ93WCnduv7YsSFj4NGf/xoJynxeckYR3+JhYBvdOyA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIE0TCCArmgAwIBAgIQMgfVJ9KIWgdhg6hFmVPWzDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTExMDQwOTMwNDVaFw0yMzExMDQwOTMwNDVaMD4xCzAJBgNVBAYTAkxWMRowGAYDVQQKDBFOVFJMVi05MDAwOTY0OTMzNzETMBEGA1UEAwwKbHZfZHNjXzAwMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOmkyzKevmqQYAzWMg3gUvga2p2Pe8YXx4UWFfvw+lrAgSfd1gp3br+2LEhY+DRn/8aCcp8XnJGEd/iYWAb3TsijggFEMIIBQDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMB0GA1UdDgQWBBSNXXFCsYbyQpaR9CVhus96/tOAejAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzIuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCFbvni9IiyVakliliz/jPuPfk3N2RETFV7cEGjRABugInh43DAPZz0siRPi2dmMy5B1b2T22QxFI7Od0qBkiPcGXKqwik1GU097mNWZ+5p8PuOVMN8E7nj5kX/vBJnmLw+XT1/taPMoz3cBVQ/7NTu1ycXVmJ1lWR8nPsBbqWRgnJbXFL1Q4Io+jngV2Y20o/OC+yvc0TsdofuM6dgDBEBunAU2kmiuexEtpyPVWgBuu5nz6mXOD1U10pXnxvDM5S6w+IDY04Nt3K4ONrlG/ghWUhTjrlYjpFMofqtK6CuKpGo8HQMpgQqb/bTTaAGeE3jEdoRVQxvQcsoUKEzM6cLf/XHz/MIoxlCfX0Rs+we93g/X4vjpXaoO0Dns57hEbRz53t3sE2Fty1rjY3qjGUd269vOtDIl2DooipUAnvSevUQQ3tRu7HeFGnc2ARrb82RG9lj2xwcce+JE5owTQYI2nSdnor1C2sQYhbMKNfbeLEwmoiWLUJyuhB95CPffwUffxQfF6EBbVEK9w6Rpu2I5Mo2qM9cwfJOYc9EIN4Bw8k3h7J3bNNFueVITL4WmVSjXnOaDFtt8PPF/H37exix0akaePpB4BGc5fpJN+OfIwPqEPU0ZDR+wFzwwHZrNF/aMD+j2myGGIuKcAkdt2rqzErGRznR6QClCNpJ3JF2Ew==", - "kid": "J8p9pf+5/9M=" - }, - { - "issuer": "C = LV O = VAS Latvijas Valsts radio un televīzijas centrs 2.5.4.97 = NTRLV-40003011203 CN = Digital Green Certificate CSCA", - "subject": "CN = LV DSC 002 O = Nacionālais veselības dienests C = LV", - "notbefore": 1624985695000, - "notafter": 1688057695000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5/m2YdN8L81Ajoi+2brFJbul628a\nlfXRXU26t7hRYEvvsb74tSVm2Dm9cbuhrgFJ+/wXecdxh0tTSHCkMfB0hQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIE4DCCAsigAwIBAgIQIVI8+7pCJKdg21Bf1/kMnDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA2MjkxNjU0NTVaFw0yMzA2MjkxNjU0NTVaME0xEzARBgNVBAMMCkxWIERTQyAwMDIxKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOf5tmHTfC/NQI6Ivtm6xSW7petvGpX10V1Nure4UWBL77G++LUlZtg5vXG7oa4BSfv8F3nHcYdLU0hwpDHwdIWjggFEMIIBQDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMB0GA1UdDgQWBBRJf+oSyT8lY9W8EXkcQkkbATciFzAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQA4+nXE7XWgwDhBUeldjoFgT1kRu6D5LzgFUsrTqicHFjGWXeXQKBnM9Dfx8iZBSY64O7FS/ompqIGxMFFZcBRYUgdaC9KQorL48w4b8WFCSQe0KUhDNqdlACWceq6/0tVtfek1M85bQ+ETU6InqY5sir7cZpyXFRXXXbdHqXjioC/EwfRo1/OB3wBX3/9HWcebIEskw4or2Z5p5BERPi2EQfp5cfv6BpH7tPYt0XJ7vA9WhsLLZGWPfKIU10iBF/DTGW5c2u/3yVCEbF215khpXx187kvXchIln4ZCbIiGkJrJRmnS6XZ++1c0BQpW4tdvUvxhuhqqln7GQPrOZK6HoOwFOjOC/k0oIkgYzJ+8xv7DA2PIXlOjSmkuZIqB4fr3DVKtnAVqWKKxnBMXqgyYlJenTUvp7OpUl+iYKqvSn7WX2F0wZQlYH+Gz1pGDdeyw4+cKZtUND6rFwHC9OxzeXM00wDp+G7O7IFBtwzaVrO/hRFGTG0W6vOv0Shc0lmVj++IzItVQx/SJRl9Lkfz58sQbRE8FphiUw4Wza3ad/eFafjDH3r0gtT/WA8aKUEp5j70kmb5XXIk9UMkk/T7385FRL3Q1ciqyoOVrRhL10wkEO+DDXuaqawXXtTz+3MDWX43TcE4wtQYDfw9i3tiDKkpzyRm43VvWoIDzGPDZ8g==", - "kid": "MrT00mhDxLQ=" - }, - { - "issuer": "C = LV O = VAS Latvijas Valsts radio un televīzijas centrs 2.5.4.97 = NTRLV-40003011203 CN = Digital Green Certificate CSCA", - "subject": "CN = LV DSC 001 O = Nacionālais veselības dienests C = LV", - "notbefore": 1622220600000, - "notafter": 1685292600000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPUwE7htr+kD1eVnJBfRf5tx0kA17\nqu4p1wRz3EKPxsJyyIznIqr9+HsnMd7k9ID/f0deqjP8dulzS2cFrVVnFQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIE4zCCAsugAwIBAgIQfBNf4Ug47/BgsR84n0s5NDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA1MjgxNjUwMDBaFw0yMzA1MjgxNjUwMDBaME0xEzARBgNVBAMMCkxWIERTQyAwMDExKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD1MBO4ba/pA9XlZyQX0X+bcdJANe6ruKdcEc9xCj8bCcsiM5yKq/fh7JzHe5PSA/39HXqoz/Hbpc0tnBa1VZxWjggFHMIIBQzAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRivdWHr9big4cJkaojQ5INsdnuNDAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCCMrABdfqTT+3ux1VQ5RdqsFgArimneuPxVHSSitIqZ3rPwkS0EsTl5fUm6m5ZqxZreu5ChfGMzC9+/Z4OQfafuvVp0i/T5eD+oiN46g33bdcbxhaBg0i7++xpbRGKM5Wh9LuEW4iUq/wIxJBEJdYFGyvF2eP95mFMadKxcs8+aKdHWEix9CUgJozMEKsAslG81xYlSzVtCmAT5qraC9uz/qGTj/bYfivtMCEdChp7BWp7MP4hD3UG2rW+wxHzD1gYLy7NqqRG3+qPfolNM0SqliZederytEYoszv2zLoUleVGPq33XavqLTfCgPhOqhxPsnH0NLcuJkgSeq5yxg8FWQaRdIR6+BlENzVQ6LYNamsuBRxNZPDurKXL58rt/8dZoeEIn+qO92mo8oVrD4xDOHvjJJIuOqZ2zcODbvV/wBhCXjrTDBiUSe9tpeagE5UKfLN/pyh3TGzMzVyo5Tn30ihqXEIX6IawpZfLJNslZnEbDFi1/2K8b00t78x7pNTSFKyXou8VaabQVPspvuWsoW9D0nyig1ymLcCrSFpnCpf/GEKONRYI6Zi+LYpWzjI81/DzVyC49Gh25ZX6Z0k6ThgDq1J4qmiGU3I1W+VcQ+fNtTsCz9fv2Kdi62U0oYqmt3FAc2Vnt30yoKqgnSfyD4xhZSafHxz2ml0jFS1xzg==", - "kid": "hFpY/ySOrwI=" - }, - { - "issuer": "C = BG O = Ministry of Health OU = Health Information System CN = Bulgaria DGC CSCA 1", - "subject": "C = BG L = Sofia O = Ministry of Health OU = Health Information System CN = DGC DSC 1", - "notbefore": 1622205711000, - "notafter": 1685277711000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmyxlsE2inBusapxY7LvRiPN0s+ds\nHnakaaa9M/5NDZZTljSZCzeK77fWO9MFRcGCXrTQaXNE3FhkV4+a92hRaw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICpDCCAkugAwIBAgIURXVV/Gq2Irn6g/NqhBUW+K90bQowCgYIKoZIzj0EAwIwbDELMAkGA1UEBhMCQkcxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDEiMCAGA1UECwwZSGVhbHRoIEluZm9ybWF0aW9uIFN5c3RlbTEcMBoGA1UEAwwTQnVsZ2FyaWEgREdDIENTQ0EgMTAeFw0yMTA1MjgxMjQxNTFaFw0yMzA1MjgxMjQxNTFaMHIxCzAJBgNVBAYTAkJHMQ4wDAYDVQQHDAVTb2ZpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMSIwIAYDVQQLDBlIZWFsdGggSW5mb3JtYXRpb24gU3lzdGVtMRIwEAYDVQQDDAlER0MgRFNDIDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASbLGWwTaKcG6xqnFjsu9GI83Sz52wedqRppr0z/k0NllOWNJkLN4rvt9Y70wVFwYJetNBpc0TcWGRXj5r3aFFro4HEMIHBMAwGA1UdEwEB/wQCMAAwLAYDVR0fBCUwIzAhoB+gHYYbaHR0cDovL2NybC5oaXMuYmcvY3NjYTEuY3JsMB8GA1UdIwQYMBaAFFeMHPlme+J4tvwi8r3u4ZCmP7FWMB0GA1UdDgQWBBS+Zk3uynTTHvB0Mb9eAgWF0vA6DDAOBgNVHQ8BAf8EBAMCB4AwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNHADBEAiBjSeBvjP2L5USPCkCAZggp/d4Mw/PUGt17jQdEet7f1AIgFI0GKAKWwdMW+xDfZmN4XAv27Z20ryj6kFY08jdIlo0=", - "kid": "Jjql9rBrjHI=" - }, - { - "issuer": "C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-CSCA-PROD-20210608 E = webmaster@llv.li", - "subject": "C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-DSC-TEST-PROD-20210608 E = webmaster@llv.li", - "notbefore": 1623138120000, - "notafter": 1686210120000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBnFUjr8FpfpVaVFtCUW7Yg6JBk/n\n1TlJKEKpm/rZOvAEzKpwoTCpXpXPP1SPGhvQXzJ+i4dBQHgbdw2SDpcZmQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIC8zCCApqgAwIBAgIIP9+ZLHC2FYQwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc0MjAwWhcNMjMwNjA4MDc0MjAwWjCBlDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEmMCQGA1UEAxMdREdDLU5CLURTQy1URVNULVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQGcVSOvwWl+lVpUW0JRbtiDokGT+fVOUkoQqmb+tk68ATMqnChMKlelc8/VI8aG9BfMn6Lh0FAeBt3DZIOlxmZo4HXMIHUMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFKdEjVLpS/bdKCMQdvpMviuko+rEMB8GA1UdIwQYMBaAFPSeeHwW3w57BFMM1pp4NCgcTd+FMA4GA1UdDwEB/wQEAwIHgDA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vY3JsLmxsdi5saS9ER0MtTkItQ1NDQS1QUk9ELTIwMjEwNjA4MB4GCWCGSAGG+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwFgYDVR0lBA8wDQYLKwYBBAGON49lAQEwCgYIKoZIzj0EAwIDRwAwRAIgTvGgYK3ij9bZvyKshoyDlYrQwXR7Btj0JIcpdq6NFqECIHd6ABGRr+NyKJjnlB7ZlYiJDfrERVPyF/q/Esmhv56P", - "kid": "JkFekJel6/o=" - }, - { - "issuer": "C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-CSCA-PROD-20210608 E = webmaster@llv.li", - "subject": "C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-DSC-RECOVERY-PROD-20210608 E = webmaster@llv.li", - "notbefore": 1623139020000, - "notafter": 1686211020000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9B\nnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiAw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIC+TCCAp6gAwIBAgIIEVh/vC3chgUwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NzAwWhcNMjMwNjA4MDc1NzAwWjCBmDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEqMCgGA1UEAxMhREdDLU5CLURTQy1SRUNPVkVSWS1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9BnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiA6OB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBT+nyG6/wNEQ0TEblj8ow7u2bNB4DAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQDqBN9eq6TjWFWqhOkU9hvdA5hBacvUjL0Rt3i5dbV8kwIhAKhpBMwxHfoFXS7FwiuXOyj4zxZ60pPvPbxYGawo9OZI", - "kid": "e/YRqyv++qY=" - }, - { - "issuer": "C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-CSCA-PROD-20210608 E = webmaster@llv.li", - "subject": "C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-DSC-VACCINATION-PROD-20210608 E = webmaster@llv.li", - "notbefore": 1623138840000, - "notafter": 1686210840000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30f\ntIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIC+jCCAqGgAwIBAgIIECN/LlZb7kkwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NDAwWhcNMjMwNjA4MDc1NDAwWjCBmzELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEtMCsGA1UEAxMkREdDLU5CLURTQy1WQUNDSU5BVElPTi1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30ftIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJKOB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQ3BvFcjsG6REaqwESNcZW1BjNTwDAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQECMAoGCCqGSM49BAMCA0cAMEQCIEEnfB5SgmatugluROBG4Q06cVdBulDo4S4vQJXO0lj2AiABMtLp5pBQA/cS9ksKlYkCuj/X2TTnM3yIPhngaEN/7A==", - "kid": "jYpr5GHCDiQ=" - }, - { - "issuer": "C = MK ST = North Macedonia L = Skopje O = Ministry of Health CN = zdravstvo.gov.mk E = contact@zdravstvo.gov.mk", - "subject": "C = MK ST = North Macedonia L = Skopje O = Ministry of Health, North Macedonia OU = E-Health, North Macedonia CN = zdravstvo.gov.mk E = contact@zdravstvo.gov.mk", - "notbefore": 1635409469000, - "notafter": 1666945469000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA65H+Vak/9kWmQXGYEZEu\nA2hSykjqYu72g//uaBs/Ac0JYV9Zhqwjb6iPf1tATe87vzg7sD5gGOqtabbOYMcV\nW50e3X5Ix4XxKMMoAvtkyDI/TbMK4HqiEY5FVf/JhPZEp4+nSVjwhozn0p7pKSk+\nWKYEjIG/zpceLyikArxxSt5SwYdVMmau+6kdHT4Q0m3btE5ORl+B0exu+KS3xb6W\nRsiU5E8kXyQFBS3zK6DxFqDDVyWhWVt4NfoJt76ZE3zuXPutyPs3AVscJDWB5mkn\n/yM8Fg20WAsZ0O9p3uyyK+MSwFdRmUzK7Gr6dnQhce4oh0HTAFsodFwnDsPCfJxc\nskoIYZW2xWX1W03jpngQWXgA1eJ44/4Ve0u09w5DpwNrgT3SoznZhZ3DPfH38NV3\nfxhm8KuVmNtmKms2ctExY8RftHXMFAQC4jDgutnaJz1zyC95QVkp06drreGLzX4X\nvPYZZdZhh4UYqT/IYXaX2yt09Tu+ueVm1MRlWeuEzlYYApbMceBseE7MuWdCVPwc\nx/QMjp7b4BSnRH+w4XIqs/wS8nXkMyBEdCMbCH3PFKNQOmbmA3Lq6X2eFWhgRud3\nFGyPacS5ADeV/s/aei+UJY/i9tY/NeXCYLtox4PXucUU4gbU9wV7rvLTNvwWIr5g\nga/gu18hrHe6Dag7p9wsU3ECAwEAAQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "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", - "kid": "KBPNEuXUvrY=" - }, - { - "issuer": "CN = CSCA Saude serialName = 001 O = Republica Portuguesa - Portuguese Republic C = PT", - "subject": "CN = DGC DS serialName = 001 O = Republica Portuguesa - Portuguese Republic C = PT", - "notbefore": 1621613831000, - "notafter": 1684685830000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnjK8A8ato900a+wQ1IaxJyaeUGQ5\nlwsYOCRlq47X4DKGe+P3L22utYcGTWtCekBqarcEzzSHH/X+s5aeEQgYYA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICKTCCAc6gAwIBAgIUb724peU13ddK2UiaXfZ8lJA3KpAwCgYIKoZIzj0EAwIwZTETMBEGA1UEAwwKQ1NDQSBTYXVkZTEMMAoGA1UEBRMDMDAxMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vlc2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMB4XDTIxMDUyMTE2MTcxMVoXDTIzMDUyMTE2MTcxMFowYTEPMA0GA1UEAwwGREdDIERTMQwwCgYDVQQFEwMwMDExMzAxBgNVBAoMKlJlcHVibGljYSBQb3J0dWd1ZXNhIC0gUG9ydHVndWVzZSBSZXB1YmxpYzELMAkGA1UEBhMCUFQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASeMrwDxq2j3TRr7BDUhrEnJp5QZDmXCxg4JGWrjtfgMoZ74/cvba61hwZNa0J6QGpqtwTPNIcf9f6zlp4RCBhgo2AwXjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFH4yvG+XLvlf69AVR2efiYzKIWgOMB0GA1UdDgQWBBQlYiuUojmAFDYjAmowakBbgeqeNTAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSQAwRgIhALe/oIGICdSXhdPOH7yFiPAUR/FhjdX+dsCyvU8Am4pLAiEA2HtA78ZO3jLs7BoIgh+xZ5fqaJbCIFMdwVzdJ/hCvWY=", - "kid": "KG9lzdohSY0=" - }, - { - "issuer": "C = DK O = The Danish Health Data Authority OU = The Danish Health Data Authority CN = PROD_CSCA_DGC_DK_01 E = kontakt@sundhedsdata.dk", - "subject": "C = DK O = The Danish Health Data Authority OU = The Danish Health Data Authority CN = PROD_DSC_DGC_DK_01 E = kontakt@sundhedsdata.dk", - "notbefore": 1621417645000, - "notafter": 1684576045000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBmdgY/VORsecXxY/0xNNOzoJNRaV\nnMMmHs5jiXrGvaDOy1jzDUOyvR++Jxgf0+YuGyp5/UAY0QIh75b+JQnlHA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICyzCCAnGgAwIBAgIBATAKBggqhkjOPQQDAjCBqTELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEcMBoGA1UEAwwTUFJPRF9DU0NBX0RHQ19ES18wMTEmMCQGCSqGSIb3DQEJARYXa29udGFrdEBzdW5kaGVkc2RhdGEuZGswHhcNMjEwNTE5MDk0NzI1WhcNMjMwNTIwMDk0NzI1WjCBqDELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEbMBkGA1UEAwwSUFJPRF9EU0NfREdDX0RLXzAxMSYwJAYJKoZIhvcNAQkBFhdrb250YWt0QHN1bmRoZWRzZGF0YS5kazBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAZnYGP1TkbHnF8WP9MTTTs6CTUWlZzDJh7OY4l6xr2gzstY8w1Dsr0fvicYH9PmLhsqef1AGNECIe+W/iUJ5RyjgYgwgYUwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBRXm2TEfVc2DPhwR/do67XrHDz4FzAfBgNVHSMEGDAWgBSb8DXRV1S8RJEI55z8etM+2ZXtSjAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMAoGCCqGSM49BAMCA0gAMEUCIB+IJn+8uICEfEnONXufysFrmtYBcTppGomj1Pr8WZF8AiEA0c3LZ3OShcmWfin0kwWzbf39irEMvJlF1idothpb0Eg=", - "kid": "NAyCKly+hCg=" - }, - { - "issuer": "C = BE O = eHealth - Belgium CN = Belgium Covid19 Country Signing CA 01", - "subject": "C = BE O = eHealth - Belgium CN = Belgium Covid19 DSC 01", - "notbefore": 1622110367000, - "notafter": 1685182367000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHo\nznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICLTCCAdOgAwIBAgIIXf7//TpWDVgwCgYIKoZIzj0EAwIwWTELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMS4wLAYDVQQDDCVCZWxnaXVtIENvdmlkMTkgQ291bnRyeSBTaWduaW5nIENBIDAxMB4XDTIxMDUyNzEwMTI0N1oXDTIzMDUyNzEwMTI0N1owSjELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMR8wHQYDVQQDDBZCZWxnaXVtIENvdmlkMTkgRFNDIDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHoznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyKOBkzCBkDAdBgNVHQ4EFgQUr/AjSs5HKJsXQVr617Z6OO2Z9h8wHwYDVR0jBBgwFoAUMc4oJrfby5Fk9eLZSMutpWhvX9UwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NlcnQtYXBwLmJlL3Jldm9rZWRMaXN0L2RnY19jc2NhMDEuY3JsMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiA56koPekERN3iWtlXwuD8rwBgbsTkZj2Yqe8kL2doIbwIhAKYOJyyIeR4Po523PY5rniN4jaaSkgefulusXXKiEthU", - "kid": "ODqaG8mnbro=" - }, - { - "issuer": "C = BE O = eHealth - Belgium CN = Belgium Covid19 Country Signing CA 01", - "subject": "C = BE O = eHealth - Belgium CN = Belgium Covid19 DSC 02", - "notbefore": 1637054072000, - "notafter": 1700126072000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEX79y3o+S4vY8UyqO1uzSAT6W7zUL\npaFWqe6MqPue8fVNOhQ1bwN/yKHKN64HkcJ+sGIpLtgaJb4iGr06NiAWfQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICLTCCAdOgAwIBAgIIG+DS62eZmPswCgYIKoZIzj0EAwIwWTELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMS4wLAYDVQQDDCVCZWxnaXVtIENvdmlkMTkgQ291bnRyeSBTaWduaW5nIENBIDAxMB4XDTIxMTExNjA5MTQzMloXDTIzMTExNjA5MTQzMlowSjELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMR8wHQYDVQQDDBZCZWxnaXVtIENvdmlkMTkgRFNDIDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEX79y3o+S4vY8UyqO1uzSAT6W7zULpaFWqe6MqPue8fVNOhQ1bwN/yKHKN64HkcJ+sGIpLtgaJb4iGr06NiAWfaOBkzCBkDAdBgNVHQ4EFgQUGQizN6eLdUb55YpiOuht4TeeiigwHwYDVR0jBBgwFoAUMc4oJrfby5Fk9eLZSMutpWhvX9UwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NlcnQtYXBwLmJlL3Jldm9rZWRMaXN0L2RnY19jc2NhMDEuY3JsMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBm+UkB5ZbZO7CqGiaA4J4Xj/LhFP61DZV9gY54U47S4gIhAPFP3U9ekHl9ecHOxL0oEZ0/4GdaIZ1E0wnBFvB98UPm", - "kid": "aCU0KJl+gMg=" - }, - { - "issuer": "C = IE ST = Dublin L = Dublin O = Department of Health OU = eHealth CN = CSCA_DGC_IE_01", - "subject": "C = IE O = Department of Health CN = validateqr.gov.ie 2020135457912391810539600999694555", - "notbefore": 1625650281000, - "notafter": 1687858281000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETPE5ItolrGzLQLPqYxOT+orVmYJu\nsLDsPWLwrK+bbJKBBtXBsrD2Py/osWYr9LF5ffORpzxmBUQmzp7K4uPiIw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICqjCCAlGgAwIBAgIJAIFaAnBKVQR5MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNzA3MDkzMTIxWhcNMjMwNjI3MDkzMTIxWjBrMQswCQYDVQQGEwJJRTEdMBsGA1UEChMURGVwYXJ0bWVudCBvZiBIZWFsdGgxPTA7BgNVBAMTNHZhbGlkYXRlcXIuZ292LmllIDIwMjAxMzU0NTc5MTIzOTE4MTA1Mzk2MDA5OTk2OTQ1NTUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARM8Tki2iWsbMtAs+pjE5P6itWZgm6wsOw9YvCsr5tskoEG1cGysPY/L+ixZiv0sXl985GnPGYFRCbOnsri4+Ijo4HQMIHNMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUT2vp7aj2JBxHrQ1vkpX4bZJoi10wHwYDVR0jBBgwFoAUXIe2JeQrVG0xki6dmWYLVblvTFAwSQYDVR0fBEIwQDA+oDygOoY4aHR0cHM6Ly9nZW4uZGlnaXRhbGNvdmlkY2VydGlmaWNhdGVzLmdvdi5pZS9hcGkvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCIAEEtN5Jh3HP0OTeYkyq0o4eaL0yGZnAbDhUUa0+StGTAiEA5trl/PUTtSwMNUSpc1UAA/viDLCW3FXyfx9cJaheFsQ=", - "kid": "PBpDVqnJ7Us=" - }, - { - "issuer": "C = IE ST = Dublin L = Dublin O = Department of Health OU = eHealth CN = CSCA_DGC_IE_01", - "subject": "C = IE ST = Dublin L = Dublin O = Department of Health OU = eHealth CN = DGC CSR", - "notbefore": 1625060335000, - "notafter": 1688132335000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZ\nwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8Q==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICmDCCAj+gAwIBAgIJAIFaAnBKVQR3MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNjMwMTMzODU1WhcNMjMwNjMwMTMzODU1WjByMQswCQYDVQQGEwJJRTEPMA0GA1UECAwGRHVibGluMQ8wDQYDVQQHDAZEdWJsaW4xHTAbBgNVBAoMFERlcGFydG1lbnQgb2YgSGVhbHRoMRAwDgYDVQQLDAdlSGVhbHRoMRAwDgYDVQQDDAdER0MgQ1NSMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8aOBtzCBtDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFBgOd1YgJce5VyyJvYhrUDZbtTrZMB8GA1UdIwQYMBaAFFyHtiXkK1RtMZIunZlmC1W5b0xQMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9jZXJ0Lmdvdi5pZS9DUkwvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCICD5ra8JbGVJCDS7k9BeY1D8SlL8dv8eVH8mMXKFJek4AiEA5j7KharjyLlp7GtXvJeS+Ht+0dgaaesqpMNfuPH7TmI=", - "kid": "eNNsg2jd4wA=" - }, - { - "issuer": "C = PA O = FIRMA ELECTRONICA CN = AUTORIDAD NACIONAL PARA LA INNOVACION GUBERNAMENTAL", - "subject": "C = PA ST = Panama L = Panama O = AIG OU = AIG CN = AIG", - "notbefore": 1631790882000, - "notafter": 1694862882000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6B5cdgxOlktZr67WAjgdIgoJwG5Z\nSTRBM6yEZb0y3rrlIHQi95rlKO6dFtQxo5rRPZYjvWSbaqVBgvbc0djcxw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDQDCCAiigAwIBAgIUNLMk961tL/NV8V23sWCKJoUwj4kwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UEBhMCUEExGjAYBgNVBAoMEUZJUk1BIEVMRUNUUk9OSUNBMTwwOgYDVQQDDDNBVVRPUklEQUQgTkFDSU9OQUwgUEFSQSBMQSBJTk5PVkFDSU9OIEdVQkVSTkFNRU5UQUwwHhcNMjEwOTE2MTExNDQyWhcNMjMwOTE2MTExNDQyWjBZMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMQ8wDQYDVQQHDAZQYW5hbWExDDAKBgNVBAoMA0FJRzEMMAoGA1UECwwDQUlHMQwwCgYDVQQDDANBSUcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAToHlx2DE6WS1mvrtYCOB0iCgnAbllJNEEzrIRlvTLeuuUgdCL3muUo7p0W1DGjmtE9liO9ZJtqpUGC9tzR2NzHo4G8MIG5MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUhd6zV7FXbysIfctxWIRFj/snGO8wHwYDVR0jBBgwFoAUjQVO+fAPdNAQMNdSugA4+rjnIVQwNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3d3dy5wa2kuZ29iLnBhL2NybHMvY2Fnb2IuY3JsMDAGA1UdJQQpMCcGCysGAQQBjjePZQEBBgsrBgEEAY43j2UBAgYLKwYBBAGON49lAQMwDQYJKoZIhvcNAQELBQADggEBAIJlTzhpBZn/hDvsviHRVpk7W+ICxubhJ7nEOjC6GLECQ22/dWmLo1U98BEv1nZKA1CF2/Uo2vdzryMILJ8tysDjs/7WOa8WH3oZ0f8FVj/vj/9H07xI2bJuQfX3O+SO5LvuMtZzyxBkIVdTn2B7PBsO9AzXPRn8m1W068VTema97toGiqqOn9Yhe6nhgjD4d+AGwmLlHSl/73n+oYzmmznf3JJTwf5Of1t2lH3P3crTyvfLZZHvf6ubQ7JzBcOgRXNgizksh6YNtyZhAjMhHgV6UfOe0ik14IE8xqWkf3k4aq8RS2oSdAeWMQ4rZbPaswKWBWRuNVywheR+xjSaO6o=", - "kid": "Ui7DXQikstE=" - }, - { - "issuer": "C = AM L = Yerevan O = Armed OU = DGCOperations CN = CSCA_DGC_AM_01", - "subject": "C = AM ST = Some-State L = Yerevan O = Armed CN = DSC_DGC_AM_O1", - "notbefore": 1633589669000, - "notafter": 1696661669000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGsoQ+d21h6C2haw4Ty4q/38Ux+t5\n1x9qe6EhVH30tsO5cxpvULTb+FFQbkcHcu0V9WbqIyIMaANSYH4ntN1H4A==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICRTCCAeqgAwIBAgIUfvIoqYr4oy/CWPFHPFoVgTgAPLUwCgYIKoZIzj0EAwIwYDELMAkGA1UEBhMCQU0xEDAOBgNVBAcMB1llcmV2YW4xDjAMBgNVBAoMBUFybWVkMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMRcwFQYDVQQDDA5DU0NBX0RHQ19BTV8wMTAeFw0yMTEwMDcwNjU0MjlaFw0yMzEwMDcwNjU0MjlaMFwxCzAJBgNVBAYTAkFNMRMwEQYDVQQIDApTb21lLVN0YXRlMRAwDgYDVQQHDAdZZXJldmFuMQ4wDAYDVQQKDAVBcm1lZDEWMBQGA1UEAwwNRFNDX0RHQ19BTV9PMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBrKEPndtYegtoWsOE8uKv9/FMfredcfanuhIVR99LbDuXMab1C02/hRUG5HB3LtFfVm6iMiDGgDUmB+J7TdR+CjgYUwgYIwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBRqxeKvv2wDiKAhCFTKOAz+UVyatDAfBgNVHSMEGDAWgBTTJV9hj0P3rLMweZAdJnUKadCwaDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCW6k0AfZPRXJBATVg9tHajdGcerq93YUnw3BJt++DM1QIhAMhUzyF6wEDAq+wJbTeI2mTc0+qVWbNTzchg870FSU29", - "kid": "W0NjksmJMm0=" - }, - { - "issuer": "C = RS L = Beograd 2.5.4.97 = VATRS-110177886 O = Kancelarija za informacione tehnologije i elektronsku upravu CN = RS NBCSCA", - "subject": "CN = RS PROD DSC2 O = Kancelarija za informacione tehnologije i elektronsku upravu C = RS", - "notbefore": 1636986858000, - "notafter": 1700058858000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtc0dmUPU8wLDfYTVnSXD\nxhCr4AHEG+GKSy13pMGI5Fj8IK1e9JVLrLoemtLnlaFV5WAPr6G8ialeG9TV9Xnw\nfiiWzAaxLT28u8/8MG4jihRKw5cVAPC0mizABynleAzU+dOYkNFlmwEpt6M6+VXl\n39aild/WVqMnZ0I/k/Vg0tQe5lS7aBPBtb7WJaaOYhzDx2hcv0z7IrYSBmigWgl3\njOO0TN+/1viQPtMbtbvC6gxXGDyQ8/HCwgt69HYNDHrBglFjLIvbelLuTsgoDooz\nIV+BUKIDal2vtAGvd1cDrN6YvqqiZRwqOn3gtv1oj/XmZUnl7aMtKisQ1MuqKVHm\ntQIDAQAB\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIFKjCCAxKgAwIBAgIUBsFy8hwKgnDAZGz/bi/+8NsJbrswDQYJKoZIhvcNAQELBQAwgZQxCzAJBgNVBAYTAlJTMRAwDgYDVQQHEwdCZW9ncmFkMRgwFgYDVQRhEw9WQVRSUy0xMTAxNzc4ODYxRTBDBgNVBAoTPEthbmNlbGFyaWphIHphIGluZm9ybWFjaW9uZSB0ZWhub2xvZ2lqZSBpIGVsZWt0cm9uc2t1IHVwcmF2dTESMBAGA1UEAxMJUlMgTkJDU0NBMB4XDTIxMTExNTE0MzQxOFoXDTIzMTExNTE0MzQxOFowazEVMBMGA1UEAwwMUlMgUFJPRCBEU0MyMUUwQwYDVQQKDDxLYW5jZWxhcmlqYSB6YSBpbmZvcm1hY2lvbmUgdGVobm9sb2dpamUgaSBlbGVrdHJvbnNrdSB1cHJhdnUxCzAJBgNVBAYTAlJTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtc0dmUPU8wLDfYTVnSXDxhCr4AHEG+GKSy13pMGI5Fj8IK1e9JVLrLoemtLnlaFV5WAPr6G8ialeG9TV9XnwfiiWzAaxLT28u8/8MG4jihRKw5cVAPC0mizABynleAzU+dOYkNFlmwEpt6M6+VXl39aild/WVqMnZ0I/k/Vg0tQe5lS7aBPBtb7WJaaOYhzDx2hcv0z7IrYSBmigWgl3jOO0TN+/1viQPtMbtbvC6gxXGDyQ8/HCwgt69HYNDHrBglFjLIvbelLuTsgoDoozIV+BUKIDal2vtAGvd1cDrN6YvqqiZRwqOn3gtv1oj/XmZUnl7aMtKisQ1MuqKVHmtQIDAQABo4GbMIGYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFPHhcSjAsmKP7ijI10VI7Lc8dDTIMDgGA1UdHwQxMC8wLaAroCmGJ2h0dHBzOi8vY2xvdWQuZWlkLmdvdi5ycy9jcmwvbmJjc2NhLmNybDAdBgNVHQ4EFgQU5/vY+2xxURwDV2bNEeYIFGMWSLgwDQYJKoZIhvcNAQELBQADggIBAHQexmp5RK8OA8j/SKhwUpiUTSvgQg/2/UgdQ2v5x4lzo8N9cQ6fS5VxY5YK3CpJBNEz8i5qRmzsD0UozOvEeLbcum3L4hCoOPXWhsPMcRkaEEwYn5kDP4Evz7iqmqviHL74BBxx3zZ9WVfoq8SCbkawywrw2Hwtoeuo3XKOWDK0jsesewcEHWv9MfEXhKjZtxlS0v1lkCF/5AvSEUPIYz4FasPeCoX31JIizErdZZLXiy5FGKxxBW6LP7GUAQkouKDeLZLsV/5247rNADICYkrOyd2jtZY37BY6UobYNH7flofqbwTbXfvfT+xD9cb5uyPTWD18lukcQirJahE64Fsa2ZE/E6+SiFDRsLTazEItW0bVAECA2gQd8Gg2FesBMMlJbQFTGxXdU4FQCP31/SlIc9DJjo8KIEfwr+khMRUaD91wq1Nwfmf3NuB4qv3nX6rQI9bAoCNs0/eU1A8LqJ4ugKf0LUHpfMTk585lhSyHKeXX823Uu5cPnk05Z1zDVJ72VrH57qETto+4gJ1DK2iLcgJHWkUQqwiWHygWzDsVvFIv26CRSItK2JpV2gZM8sTYFAoqquAlzyAkvumdvwpg4aUWMyWHZV0W9X71YGM1To8ZPU1v4dIOB7ESjGwEluD35arlYn9IjuvQBbnO++/Cr/STq2n9DS/mG2XDkVi/", - "kid": "YgBnrpZDGXk=" - }, - { - "issuer": "C = SE O = Swedish eHealth Agency OU = Digital Covid Certificate Services 2.5.4.97 = 202100-6552 CN = Swedish Digital Covid Certificate CSCA", - "subject": "C = SE O = Swedish eHealth Agency 2.5.4.97 = 202100-6552 CN = DCC Signer", - "notbefore": 1624255651000, - "notafter": 1687328851000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaLOo1IGTspZSdr2BqdAvKjZjHfW/\nZq8VDrI6nEhBlXUr3VCDlzjrXo5v6ix2qF9RCySJsHgZxUrqWQpFQbrbMw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDbzCCAtGgAwIBAgIRAKzjP3XRAzwsEbbfxdhLsK0wCgYIKoZIzj0EAwIwgaIxCzAJBgNVBAYTAlNFMR8wHQYDVQQKDBZTd2VkaXNoIGVIZWFsdGggQWdlbmN5MSswKQYDVQQLDCJEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIFNlcnZpY2VzMRQwEgYDVQRhDAsyMDIxMDAtNjU1MjEvMC0GA1UEAwwmU3dlZGlzaCBEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIENTQ0EwHhcNMjEwNjIxMDYwNzMxWhcNMjMwNjIxMDYyNzMxWjBZMQswCQYDVQQGEwJTRTEfMB0GA1UECgwWU3dlZGlzaCBlSGVhbHRoIEFnZW5jeTEUMBIGA1UEYQwLMjAyMTAwLTY1NTIxEzARBgNVBAMMCkRDQyBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARos6jUgZOyllJ2vYGp0C8qNmMd9b9mrxUOsjqcSEGVdSvdUIOXOOtejm/qLHaoX1ELJImweBnFSupZCkVButszo4IBLjCCASowCQYDVR0TBAIwADArBgNVHSMEJDAigCACTjrfhadUh3CvxKG9ilhNH5em/z3iqGdiDEqCy0uCujApBgNVHQ4EIgQgcumMkPVDerXtTa5yvY0Vp+vbcHWxuiqfF0N9MU0I6hEwDgYDVR0PAQH/BAQDAgOIMD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHBzOi8vZGdjZy5jb3ZpZGJldmlzLnNlL2NzY2EvY3JsL2NzY2EwMS5jcmwwRwYIKwYBBQUHAQEEOzA5MDcGCCsGAQUFBzABhitodHRwczovL2RnY2cuY292aWRiZXZpcy5zZS9jc2NhL29jc3AvY3NjYTAxMCsGA1UdEQQkMCKBIHJlZ2lzdHJhdG9yQGVoYWxzb215bmRpZ2hldGVuLnNlMAoGCCqGSM49BAMCA4GLADCBhwJCAJH08xci9Y2aQQcUJTnA+WIVSblO5K/ncVsYFd+jzM/m1chhh7CD75oN5twgWMl0aPMcjqaylNH/p82zPONaERqmAkEyCrbICfyUiio20CrFRmWS8KWq4LL8dkHapxgqVrG75/3xrmhAdxlH1WoC+Af1I602E6dsaCZw6mmMY0GPOEvGhw==", - "kid": "Z7k1XpIWZOE=" - }, - { - "issuer": "C = MA OU = Ministry of Health O = Kingdom of Morocco CN = CSCA Health MA", - "subject": "C = MA O = Kingdom of Morocco OU = Ministry of Health CN = DSC-MA", - "notbefore": 1631800460000, - "notafter": 1694872460000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvILEthEWN9hu06zQ9GCUCthQJ9OA\na/0eskYOKbfQZVEf9kNzPEH9qbVrwvr8jhwKL6CKoXAefNLlrBKZ+Mtpzg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDSzCCAvCgAwIBAgITNQAAAASf3f6XNUKvGAAAAAAABDAKBggqhkjOPQQDAjBgMQswCQYDVQQGEwJNQTEbMBkGA1UECxMSTWluaXN0cnkgb2YgSGVhbHRoMRswGQYDVQQKExJLaW5nZG9tIG9mIE1vcm9jY28xFzAVBgNVBAMTDkNTQ0EgSGVhbHRoIE1BMB4XDTIxMDkxNjEzNTQyMFoXDTIzMDkxNjEzNTQyMFowWDELMAkGA1UEBhMCTUExGzAZBgNVBAoTEktpbmdkb20gb2YgTW9yb2NjbzEbMBkGA1UECxMSTWluaXN0cnkgb2YgSGVhbHRoMQ8wDQYDVQQDEwZEU0MtTUEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS8gsS2ERY32G7TrND0YJQK2FAn04Br/R6yRg4pt9BlUR/2Q3M8Qf2ptWvC+vyOHAovoIqhcB580uWsEpn4y2nOo4IBjzCCAYswPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIgvu3EoKquCSH3YEMhdOqaoTo4wQVh/uOCoXE3wgCAWQCAQwwMQYDVR0lBCowKAYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGCisGAQQBgjcKAwwwDgYDVR0PAQH/BAQDAgbAMAwGA1UdEwEB/wQCMAAwPQYJKwYBBAGCNxUKBDAwLjAOBgwrBgEEAQCON49lAQEwDgYMKwYBBAEAjjePZQECMAwGCisGAQQBgjcKAwwwHQYDVR0OBBYEFKda1UHydNCDDid5anJrgzvYRipXMB8GA1UdIwQYMBaAFMKQ1XKb4BABLnDYaZMGbye1kxhEMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9OQk1vcm9jY28ubWEvQ1JMcy9NQS1IZWFsdGguY3JsMEEGCCsGAQUFBwEBBDUwMzAxBggrBgEFBQcwAYYlaHR0cDovL05CTW9yb2Njby5tYS9BSUEvTUEtSGVhbHRoLmNydDAKBggqhkjOPQQDAgNJADBGAiEAozqhzCknO/8+LbUU7EWGoKr9Xx9gx7u/jh4BHN3mt5kCIQDit7cWPpLSCWOr25AHpmdccHK6kGk0mOlAPVIGFnssdQ==", - "kid": "ZpnsokK1DgM=" - }, - { - "issuer": "C = IL 0.9.2342.19200300.100.1.25 = IL 0.9.2342.19200300.100.1.25 = GOV 0.9.2342.19200300.100.1.25 = HEALTH 0.9.2342.19200300.100.1.25 = MOH ST = Israel L = Jerusalem O = Ministry of Health OU = Digital Health CN = CSCA-Health-DCG-IL-01", - "subject": "C = IL ST = Israel L = Jerusalem O = Ministry of Health OU = Digital Health CN = IL-NB-DSC-01", - "notbefore": 1630826160000, - "notafter": 1693898160000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcw+UZUnryP4rqSw+a8xQw4wLHZkc\nu4MDjJP7QeBUEpDt8xh4i4RSIBEJrBkAukSSobRDkwMb0dSCsWwK0rfMgQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEGDCCA76gAwIBAgITHQAAAAdFhwvAgMs01AAAAAAABzAKBggqhkjOPQQDAjCB3jELMAkGA1UEBhMCSUwxEjAQBgoJkiaJk/IsZAEZFgJJTDETMBEGCgmSJomT8ixkARkWA0dPVjEWMBQGCgmSJomT8ixkARkWBkhFQUxUSDETMBEGCgmSJomT8ixkARkWA01PSDEPMA0GA1UECBMGSXNyYWVsMRIwEAYDVQQHEwlKZXJ1c2FsZW0xGzAZBgNVBAoTEk1pbmlzdHJ5IG9mIEhlYWx0aDEXMBUGA1UECxMORGlnaXRhbCBIZWFsdGgxHjAcBgNVBAMTFUNTQ0EtSGVhbHRoLURDRy1JTC0wMTAeFw0yMTA5MDUwNzE2MDBaFw0yMzA5MDUwNzE2MDBaMH8xCzAJBgNVBAYTAklMMQ8wDQYDVQQIEwZJc3JhZWwxEjAQBgNVBAcTCUplcnVzYWxlbTEbMBkGA1UEChMSTWluaXN0cnkgb2YgSGVhbHRoMRcwFQYDVQQLEw5EaWdpdGFsIEhlYWx0aDEVMBMGA1UEAxMMSUwtTkItRFNDLTAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcw+UZUnryP4rqSw+a8xQw4wLHZkcu4MDjJP7QeBUEpDt8xh4i4RSIBEJrBkAukSSobRDkwMb0dSCsWwK0rfMgaOCAbcwggGzMD4GCSsGAQQBgjcVBwQxMC8GJysGAQQBgjcVCIHfvEqGsP5shImdOoHa71aE5rZjgR6HqL9hhrfIGwIBZAIBATA6BgNVHSUEMzAxBggrBgEFBQcDAwYLKwYBBAGON49lAQMGCysGAQQBjjePZQEBBgsrBgEEAY43j2UBAjAOBgNVHQ8BAf8EBAMCB4AwSAYJKwYBBAGCNxUKBDswOTAKBggrBgEFBQcDAzANBgsrBgEEAY43j2UBAzANBgsrBgEEAY43j2UBATANBgsrBgEEAY43j2UBAjAdBgNVHQ4EFgQUwT5hHIGSYoKxJeYKXe2rSc9vQCQwHwYDVR0jBBgwFoAUBb9drdvo+jTMbWZX2BWGWxPT3uwwRwYDVR0fBEAwPjA8oDqgOIY2aHR0cDovL2NkcC5oZWFsdGguZ292LmlsL2NybC9DU0NBLUhlYWx0aC1EQ0ctSUwtMDEuY3JsMFIGCCsGAQUFBwEBBEYwRDBCBggrBgEFBQcwAoY2aHR0cDovL3BraS5oZWFsdGguZ292LmlsL3BraS9DU0NBLUhlYWx0aC1EQ0ctSUwtMDEuY3J0MAoGCCqGSM49BAMCA0gAMEUCIQCWjjvyGozH4GMhl6d81s5PolAOAXXipAvnnP6RiLGt4QIgabSTGYvdNpepTEdQ7+F8KMdiBZStUJ1utwJqVN1Ov/M=", - "kid": "cS/wou0g/po=" - }, - { - "issuer": "C = VA O = STATO CITTA’ DEL VATICANO OU = DIREZIONE DI SANITA' E IGIENE CN = CSCA_DGC_VA_01", - "subject": "C = VA O = STATO CITTA’ DEL VATICANO OU = DIREZIONE DI SANITA' E IGIENE CN = DSC_DGC_VA_01", - "notbefore": 1624614420000, - "notafter": 1687686420000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEI6Q/krjPDaHJ2WsrBzR9sGYnYjFq\nkflAAWhJgXbXt3RuUVfJt4c53N6v9J2BE3kPqCVl9FbYrwqQ0vZ+Ps5e+Q==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICbzCCAhSgAwIBAgIIc/6LARpWk7YwCgYIKoZIzj0EAwIwdDELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFzAVBgNVBAMMDkNTQ0FfREdDX1ZBXzAxMB4XDTIxMDYyNTA5NDcwMFoXDTIzMDYyNTA5NDcwMFowczELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFjAUBgNVBAMMDURTQ19ER0NfVkFfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQjpD+SuM8NocnZaysHNH2wZidiMWqR+UABaEmBdte3dG5RV8m3hznc3q/0nYETeQ+oJWX0VtivCpDS9n4+zl75o4GQMIGNMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFHjsdxdRG2UcVpJ5tq07/6TxOa+jMB8GA1UdIwQYMBaAFL2EdVekv64Aod98sSbpzAqLftAtMAsGA1UdDwQEAwIDuDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCedrxueUJyy8gthgOF7b2Fdv+chSkliDs1z2oOuRagWQIhAJh4vf8YxtkfC3MB+B9y1x2OwC2GRGFCtaF5WaB7K6F5", - "kid": "crm1HLAeaTo=" - }, - { - "issuer": "C = CZ O = MZCR CN = CZ DSC CSCA 1", - "subject": "C = CZ O = MZCR CN = CZ DSC 1", - "notbefore": 1620311040000, - "notafter": 1683383040000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3l\nAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKUw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0AzMA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDUwNjE0MjQwMFoXDTIzMDUwNjE0MjQwMFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3lAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKU6NdMFswHQYDVR0OBBYEFDReRuL4VneLcO8YqdVWn2+gpPl9MB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQAZpv8/b4k+QxliHeWKAiJ34OKMEYh8xn1Dc9+55f+h0NLY4ZSelGrf2SrJIt9yhomzjOQUARqiumbuSzZMMPUNzKIRsPSa1NkfRq7y3QehG+cuhKKdLYpWErjRdp97gubCVGLXld7+iuschYCwAztKnyPof94yPgAGkdCEnTNW1z6tc33E/Fnd59nF8/JBZdSTt2uRXxFY8plasmoRzdXYASwTUyXXheZcG+KNYJ5NxYSF3LJeF81ucJ6mWkAk+MwoJXVu7VVZ6pn51JPL+YyArV2FaN8lWs9QYW2XgCuUTm4IC9T/BgVKTstr6eGQiHLOEbyE8NmLond1Bzv27ClLXEBvL9lIqJ5hJFvVWbfpNPvJAjI4z3LA7DuYgQ3ws8mf0iMW+4aOkLCd7dv0HNcUPoHUOTelgcfAzEsZuajUcH3uGwgcs2wEBdW1KfqEP8L7bgwBGC+UGe1yeGM4k7OYOnGP2SMm3Gk+MrYaqW51Fun20bcXkagDxMJh06PpDm4=", - "kid": "e4lH6I4iMIM=" - }, - { - "issuer": "C = CZ O = MZCR CN = CZ DSC CSCA 1", - "subject": "C = CZ O = MZCR CN = CZ DSC 2", - "notbefore": 1623319578000, - "notafter": 1686391578000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2k\nYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0A0MA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDYxMDEwMDYxOFoXDTIzMDYxMDEwMDYxOFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2kYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOqNdMFswHQYDVR0OBBYEFAKjMTdShDzGev/eNqlHHzJIHdXVMB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQA3d3iNHRpsKWia1XiF5QQlKUFwcvDdtAlFhfmy99oI+ywmppys7xoeOrIKazIyAyZ3tNImPkcde0ARSvMmAzsr6T/BqxsV78htXzUoILy1z6Y8QZ8+RXcNmR79k9iqudKv5tWZ2S2ticNeo78WV6oB18oV5/hhLlkS/NQC5wZ5LJar+wEF1VaxkvG2GmooaODPgPbRutjStTamSu2Din4SRg8pIWlyCMy0qnzVDMzdYUsjvmC3myxzHevFSTs36hj1aiLxaeAmVTvCi39o6s0EBjyM8Yk2WHJS9k5EkvBcJcEx4z55RkBLKo4PJalQS1hJc62GFM3J3lyyKqecSZBn2xj5bM8UEkI+8ylHsF/D3vrjtu1MaxM9loTogvf8wu4S7DMP/yXBanmr2G4k132JbSX7goclMF2zel7kGAn2B2vUQrGM76Rqb4lkddPWCc+0dossH1zAvbOAo5+raC9xaUU00GC3wR7+30xjJtBw0JbDlSBk3l1xnGnvLehkqV8=", - "kid": "fNf883wPIEg=" - }, - { - "issuer": "CN = Faroe Islands Health Authority CSCA v1 O = Gjaldstovan C = FO", - "subject": "CN = DSC_DGC_FO_345334_TEST_01 O = SJUKRAHUSVERKID C = FO", - "notbefore": 1625755197000, - "notafter": 1688827197000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyOmUr7E52s+yofKQE/TmtLQxLPEp\nZnZMA/OL647R1ZZG+O3tA7F3CfMXmgZZV4OOjuoaAbgHh01F5MdEg1eQpg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICwTCCAmegAwIBAgIUNEcJXMYBcHdOAkMYq/Oxeh8O2hwwCgYIKoZIzj0EAwIwVDEvMC0GA1UEAwwmRmFyb2UgSXNsYW5kcyBIZWFsdGggQXV0aG9yaXR5IENTQ0EgdjExFDASBgNVBAoMC0dqYWxkc3RvdmFuMQswCQYDVQQGEwJGTzAeFw0yMTA3MDgxNDM5NTdaFw0yMzA3MDgxNDM5NTdaMEsxIjAgBgNVBAMMGURTQ19ER0NfRk9fMzQ1MzM0X1RFU1RfMDExGDAWBgNVBAoMD1NKVUtSQUhVU1ZFUktJRDELMAkGA1UEBhMCRk8wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATI6ZSvsTnaz7Kh8pAT9Oa0tDEs8SlmdkwD84vrjtHVlkb47e0DsXcJ8xeaBllXg46O6hoBuAeHTUXkx0SDV5Cmo4IBHjCCARowHwYDVR0jBBgwFoAU7jyBpuYetlF0RODQ9DAz4upqvqEwXAYDVR0gBFUwUzBRBggqgVCBPQIBATBFMEMGCCsGAQUFBwIBFjdodHRwczovL3JlcG9zaXRvcnkuc2FtbGVpa2kuZm8vbGVnYWwtcmVwb3NpdG9yeS9laGVhbHRoMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwuc2FtbGVpa2kuZm8vRmFyb2UtSXNsYW5kcy1IZWFsdGgtQXV0aG9yaXR5LUNTQ0EtdjEuY3JsMB0GA1UdDgQWBBRoTJ4+NjLdr8NB6IGKfB1XhMs0kjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAIFSB54lOmRGpWORORdkNMCupU6c+ujY64AOdb3Sp9rNAiAXlZatIjO4ENXA4H+WJEa4ZUHRAxKFEh//IXBloU0V3w==", - "kid": "fNstNUxgGSI=" - }, - { - "issuer": "CN = Faroe Islands Health Authority CSCA v1 O = Gjaldstovan C = FO", - "subject": "CN = DSC_DGC_FO_345334_VACCINATION_01 O = SJUKRAHUSVERKID C = FO", - "notbefore": 1625755531000, - "notafter": 1688827531000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIp1kjKkjq85G7p7edy5EfNsWF0l4\nXZu5Rz+nL3viEVP/qiZYWwsQ30RXMDwixcFXI2tSzfu82J31dIEGQ3Ceog==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICyTCCAm6gAwIBAgIUJUU4n5bintk3G2D7kThvmJ+NHlwwCgYIKoZIzj0EAwIwVDEvMC0GA1UEAwwmRmFyb2UgSXNsYW5kcyBIZWFsdGggQXV0aG9yaXR5IENTQ0EgdjExFDASBgNVBAoMC0dqYWxkc3RvdmFuMQswCQYDVQQGEwJGTzAeFw0yMTA3MDgxNDQ1MzFaFw0yMzA3MDgxNDQ1MzFaMFIxKTAnBgNVBAMMIERTQ19ER0NfRk9fMzQ1MzM0X1ZBQ0NJTkFUSU9OXzAxMRgwFgYDVQQKDA9TSlVLUkFIVVNWRVJLSUQxCzAJBgNVBAYTAkZPMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIp1kjKkjq85G7p7edy5EfNsWF0l4XZu5Rz+nL3viEVP/qiZYWwsQ30RXMDwixcFXI2tSzfu82J31dIEGQ3CeoqOCAR4wggEaMB8GA1UdIwQYMBaAFO48gabmHrZRdETg0PQwM+Lqar6hMFwGA1UdIARVMFMwUQYIKoFQgT0CAQEwRTBDBggrBgEFBQcCARY3aHR0cHM6Ly9yZXBvc2l0b3J5LnNhbWxlaWtpLmZvL2xlZ2FsLXJlcG9zaXRvcnkvZWhlYWx0aDAWBgNVHSUEDzANBgsrBgEEAY43j2UBAjBSBgNVHR8ESzBJMEegRaBDhkFodHRwOi8vY3JsLnNhbWxlaWtpLmZvL0Zhcm9lLUlzbGFuZHMtSGVhbHRoLUF1dGhvcml0eS1DU0NBLXYxLmNybDAdBgNVHQ4EFgQU784333ONVF7EvtIgnj6nYCOli8QwDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0kAMEYCIQDOLxwWGsaCNVSWy3EpEkSIqNub0Ci4kSOu/O+vvPq64gIhAK5cop6G89f+Z39b52KoyZKcFq3zLCNOdgPg1280oBnN", - "kid": "l8W4rhh9nTs=" - }, - { - "issuer": "C = TR ST = ANKARA L = ÇANKAYA O = T.C. SAĞLIK BAKANLIĞI OU = SAĞLIK BİLGİ SİSTEMLERİ GENEL MÜDÜRLÜĞÜ CN = healthpassgwprod.saglik.gov.tr", - "subject": "C = TR ST = ANKARA L = ÇANKAYA O = T.C. SAĞLIK BAKANLIĞI OU = SAĞLIK BİLGİ SİSTEMLERİ GENEL MÜDÜRLÜĞÜ CN = healthpassgwuat.saglik.gov.tr", - "notbefore": 1628103725000, - "notafter": 1691175725000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4gGExz9UXm77v21gaWNSjjtigr9V\nIyGL9S92FqnF99YqS/ekrLWvW4N6fmHfUST9VJLJVaB9uP3SX1rXlfq7lg==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDZDCCAwqgAwIBAgIJAKh1+Khc/oXwMAkGByqGSM49BAEwgdIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQIDAZBTktBUkExEzARBgNVBAcMCsODwodBTktBWUExJDAiBgNVBAoMG1QuQy4gU0HDhMKeTElLIEJBS0FOTEnDhMKeSTFOMEwGA1UECwxFU0HDhMKeTElLIELDhMKwTEfDhMKwIFPDhMKwU1RFTUxFUsOEwrAgR0VORUwgTcODwpxEw4PCnFJMw4PCnMOEwp7Dg8KcMScwJQYDVQQDDB5oZWFsdGhwYXNzZ3dwcm9kLnNhZ2xpay5nb3YudHIwHhcNMjEwODA0MTkwMjA1WhcNMjMwODA0MTkwMjA1WjCB0TELMAkGA1UEBhMCVFIxDzANBgNVBAgMBkFOS0FSQTETMBEGA1UEBwwKw4PCh0FOS0FZQTEkMCIGA1UECgwbVC5DLiBTQcOEwp5MSUsgQkFLQU5MScOEwp5JMU4wTAYDVQQLDEVTQcOEwp5MSUsgQsOEwrBMR8OEwrAgU8OEwrBTVEVNTEVSw4TCsCBHRU5FTCBNw4PCnETDg8KcUkzDg8Kcw4TCnsODwpwxJjAkBgNVBAMMHWhlYWx0aHBhc3Nnd3VhdC5zYWdsaWsuZ292LnRyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4gGExz9UXm77v21gaWNSjjtigr9VIyGL9S92FqnF99YqS/ekrLWvW4N6fmHfUST9VJLJVaB9uP3SX1rXlfq7lqOByDCBxTAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFCswn+ChTJKoWppyEWvYjIGyDJybMB8GA1UdIwQYMBaAFPbenUPEZ1KYGCZLyK4/nzCJVz+bMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9jcmwuZXhhbXBsZWRvbWFpbi5leGFtcGxlL0NSTC9DU0NBLmNybDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMAkGByqGSM49BAEDSQAwRgIhAMdvZvXW4yhE0096flq4umtUExjaOSOM6bob8cMsriqbAiEAv5b1d/EFA0rM9LYK1jt49+bSOgGxcxgs0jAOYzAjMrU=", - "kid": "gEIK4Q/lAG0=" - }, - { - "issuer": "C = RO O = Ministerul Sanatatii CN = AC Ministerul Sanatatii", - "subject": "C = RO O = Ministerul Sanatatii CN = BSC", - "notbefore": 1624023359000, - "notafter": 1782135359000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1Di\nHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5cw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIElDCCAnygAwIBAgIFFhg4IyAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCUk8xHTAbBgNVBAoMFE1pbmlzdGVydWwgU2FuYXRhdGlpMSAwHgYDVQQDDBdBQyBNaW5pc3RlcnVsIFNhbmF0YXRpaTAeFw0yMTA2MTgxMzM1NTlaFw0yNjA2MjIxMzM1NTlaMDoxCzAJBgNVBAYTAlJPMR0wGwYDVQQKDBRNaW5pc3RlcnVsIFNhbmF0YXRpaTEMMAoGA1UEAwwDQlNDMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1DiHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5c6OCAVYwggFSMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUVyznYDPTSIjlI6bI6W+mgQc9JjwwHwYDVR0jBBgwFoAUMuKQDubF6PpGuKuAPWshl3a4SCEwGgYDVR0RBBMwEaQPMA0xCzAJBgNVBAcMAlJPMBoGA1UdEgQTMBGkDzANMQswCQYDVQQHDAJSTzAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vY2Euc3RzaXNwLnJvL2NybC9ER0MuY3JsMDMGA1UdJQQsMCoGDCsGAQQBAI43j2UBAQYMKwYBBAEAjjePZQECBgwrBgEEAQCON49lAQMwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vY2Euc3RzaXNwLnJvOjI1NjAwKwYDVR0QBCQwIoAPMjAyMTA0MDEwMDAwMDBagQ8yMDI2MDcwMTAwMDAwMFowDQYJKoZIhvcNAQELBQADggIBAFLRYkrv2Jp8XNhFJbMUviTLgPsDgcFDQwzdU4RH/KY3vjlIqxI/o40wct9QrN5FqRDTVIYD4Z4vLy8vhigh+DrdWfaBK+SGw11ZwigDem0Unjpqz0aFTotv8hry5n2jY/gf6YpU8pMd3t0dNF5Je5hrY1YLPJdt+BMWAizRwSAaa/OqTDP2blNqebrUTpsiXnxMXRiIHZl596RiSVsiwI/4PhU/HhfbMCg4kO8YUtgTBzWvBGohG0Znyi2bQFhwWEa1jZc2YfsIqWu4hwGz0zWOKMyx5ULZS3qkQ0EIHH2XrOx2ZxEc/5vZT27nTlKW0FCtBWeB36rLy/9dYbm+wjB86gvjYEQLAoFSY5GyCxVHaQE/HK8nFqM0oFq/4u0D7ZN9o6N6i4EfGhSRye0NCld3iaM9JdKmQNoCE9fd9OfMG9HlrQbIZvsjZ3btvtiC/R/LoyvrKz2EVbePZIVj03+GelCI0/jWq+w9YK3JIGhBfMjvCK/QnphOm0otuiuEY+0QYPKIx/c8zU5H4cEWp4NamsIRTpP13Yazh4NVjCNAU+J1rbcwGkJIRXHpL6QqL1WNt9zZSMXvw+vBoBq8yBqeLGlxPr+DFL79xhRBZnpp5mn2vUmR77k1745VwwGVMw/t9K28y5HpLcTp49f3wR0bDC+K0n/8PdcrhOXh+DTP", - "kid": "hA1+pwEOxCI=" - }, - { - "issuer": "C = AL O = NAIS CN = NAIS Class 3 Certification Authority", - "subject": "C = AL O = Ministria e Shendetesise dhe Mbrojtjes Sociale OU = Production CN = Ministria e Shendetesise dhe Mbrojtjes Sociale", - "notbefore": 1631192067000, - "notafter": 1662728067000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENFtonAma5ngnltfk78rprtlz8Cue\n6/t2XzvM/OR3wOn/1nD4QDWTP0KjGsFtiJ80Aed5gQ0JbMXUL8M2mQyQPw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIETzCCAzegAwIBAgILQ/9i89Nx5cy6y84wDQYJKoZIhvcNAQELBQAwSzELMAkGA1UEBhMCQUwxDTALBgNVBAoTBE5BSVMxLTArBgNVBAMTJE5BSVMgQ2xhc3MgMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0yMTA5MDkxMjU0MjdaFw0yMjA5MDkxMjU0MjdaMIGUMQswCQYDVQQGEwJBTDE3MDUGA1UECgwuTWluaXN0cmlhIGUgU2hlbmRldGVzaXNlIGRoZSBNYnJvanRqZXMgU29jaWFsZTETMBEGA1UECwwKUHJvZHVjdGlvbjE3MDUGA1UEAwwuTWluaXN0cmlhIGUgU2hlbmRldGVzaXNlIGRoZSBNYnJvanRqZXMgU29jaWFsZTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDRbaJwJmuZ4J5bX5O/K6a7Zc/Arnuv7dl87zPzkd8Dp/9Zw+EA1kz9CoxrBbYifNAHneYENCWzF1C/DNpkMkD+jggGzMIIBrzBmBggrBgEFBQcBAQRaMFgwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmFrc2hpLmdvdi5hbDAwBggrBgEFBQcwAoYkaHR0cDovL2NlcnRzLmFrc2hpLmdvdi5hbC9jbGFzczMuY3J0MA4GA1UdDwEB/wQEAwIGwDAfBgNVHSMEGDAWgBSHJqj72ytRmznQmNb0xjNWR1zYBTAdBgNVHQ4EFgQUomIXCcGEr8gLcxPBp8qNqsAwuywwSwYDVR0gBEQwQjBABgwrBgEEAYKxbAoBAQMwMDAuBggrBgEFBQcCARYiaHR0cDovL3d3dy5ha3NoaS5nb3YuYWwvcmVwb3NpdG9yeTCBpwYDVR0fBIGfMIGcMIGZoIGWoIGThiJodHRwOi8vY3JsLmFrc2hpLmdvdi5hbC9jbGFzczMuY3Jshm1sZGFwOi8vbGRhcC5ha3NoaS5nb3YuYWwvQ049TkFJUyBDbGFzcyAzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5LE89TkFJUyxDPUFMP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q7YmluYXJ5MA0GCSqGSIb3DQEBCwUAA4IBAQAxX1oVSlIui82fALGFk0YQK5UOFN59Bk+dNovoYLH7rewnK3Zu1C8xJivs/ncsvb08J/B14Iw2DlIORCNMmfXaCIEeRwUepPrC0T9gBMFZGf+nOH1YR19YA+24gxSxlsU6t8/lCwMY2HfCUxEKvHqr1jp3lgim8y+IiMsA9ISr7J8YDwue6Zvpr1zPQN+nd4xB1ZuxoM64dCvzaV5mA/D3P7Rqf5c1+rt5EqztjVOiNpFvH+xSEp9veAJxRDG37kHe7brgb7CGLdBQw/pib8kgfDusUMIjuXDN4MzjVUtM3G6s6DfoJ/QIf5CGq2lJ9bdxORh9PICVxVxcUqpwD+r2", - "kid": "hHffSLS1AIU=" - }, - { - "issuer": "C = AL O = NAIS CN = NAIS Class 3 Certification Authority", - "subject": "C = AL O = Ministria e Shendetesise dhe Mbrojtjes Sociale OU = Production CN = Ministria e Shendetesise dhe Mbrojtjes Sociale", - "notbefore": 1634731214000, - "notafter": 1666267214000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkyi6sf8k8/kk2KjTBNiIVFpnIeZc\nj4oUXwV8kk5D6BySdIUx9jSD5BuSiUyXKmIghKHPvpio9M7nYklZCdur0w==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIEUDCCAzigAwIBAgIMQwFSlIJziU/M83ZyMA0GCSqGSIb3DQEBCwUAMEsxCzAJBgNVBAYTAkFMMQ0wCwYDVQQKEwROQUlTMS0wKwYDVQQDEyROQUlTIENsYXNzIDMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjExMDIwMTIwMDE0WhcNMjIxMDIwMTIwMDE0WjCBlDELMAkGA1UEBhMCQUwxNzA1BgNVBAoMLk1pbmlzdHJpYSBlIFNoZW5kZXRlc2lzZSBkaGUgTWJyb2p0amVzIFNvY2lhbGUxEzARBgNVBAsMClByb2R1Y3Rpb24xNzA1BgNVBAMMLk1pbmlzdHJpYSBlIFNoZW5kZXRlc2lzZSBkaGUgTWJyb2p0amVzIFNvY2lhbGUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASTKLqx/yTz+STYqNME2IhUWmch5lyPihRfBXySTkPoHJJ0hTH2NIPkG5KJTJcqYiCEoc++mKj0zudiSVkJ26vTo4IBszCCAa8wZgYIKwYBBQUHAQEEWjBYMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5ha3NoaS5nb3YuYWwwMAYIKwYBBQUHMAKGJGh0dHA6Ly9jZXJ0cy5ha3NoaS5nb3YuYWwvY2xhc3MzLmNydDAOBgNVHQ8BAf8EBAMCBsAwHwYDVR0jBBgwFoAUhyao+9srUZs50JjW9MYzVkdc2AUwHQYDVR0OBBYEFGPWnU1pbP9aLGlfxoOY//lobEDxMEsGA1UdIAREMEIwQAYMKwYBBAGCsWwKAQEDMDAwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuYWtzaGkuZ292LmFsL3JlcG9zaXRvcnkwgacGA1UdHwSBnzCBnDCBmaCBlqCBk4YiaHR0cDovL2NybC5ha3NoaS5nb3YuYWwvY2xhc3MzLmNybIZtbGRhcDovL2xkYXAuYWtzaGkuZ292LmFsL0NOPU5BSVMgQ2xhc3MgMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSxPPU5BSVMsQz1BTD9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0O2JpbmFyeTANBgkqhkiG9w0BAQsFAAOCAQEApvfjN0ZeYCl6OH8HmJSG4UcL8KrVB1uqa/b0OPBihreOzVN0MyCRCKqUY+JJBc2S1k8OssCZuconsPLdTW2UkDxP5oFrgnzBN4Tor+3EMq2d/TTQnhp+872m2B4Gck0bRMBn0N19MbIrdii5joNir9pcHJgU5I/fTTehL9wtZGoL1o5cUUu9S+hYMIP0uNHP6NjxQhwZ+lpleNCUsYT4o4icvnbW3EaB84KBImCfezIu3Q+MdgwWmGpZOXUVoiX9UiyWrlEnzNzictXgOSud5xJ8E9ZUezO8u1UMRKY82Xi15KM6FML2qJ6teTC8iMjXaDxhVZSDAvtXclLKqIvAzg==", - "kid": "udrotE0n7i0=" - }, - { - "issuer": "2.5.4.97 = NRTAD-U129638U O = SAAS CN = DGCG C = AD", - "subject": "C = AD ST = Andorra L = Escaldes-Engordany O = SAAS OU = SSII CN = dsc", - "notbefore": 1630843042000, - "notafter": 1693915042000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGvHqf7SYtlvevOyA/no+i1/WcmS0\nbOYP1bgP+pJTjTkBOpQi+f7Ie6415WFl9aoqzMmKRJmE6Ur4H+b9Vba7FA==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDNTCCAh2gAwIBAgIUPlH4JERPPj3GoUrvEpBgHChJmOcwDQYJKoZIhvcNAQELBQAwRDEXMBUGA1UEYQwOTlJUQUQtVTEyOTYzOFUxDTALBgNVBAoMBFNBQVMxDTALBgNVBAMMBERHQ0cxCzAJBgNVBAYTAkFEMB4XDTIxMDkwNTExNTcyMloXDTIzMDkwNTExNTcyMlowaDELMAkGA1UEBhMCQUQxEDAOBgNVBAgMB0FuZG9ycmExGzAZBgNVBAcMEkVzY2FsZGVzLUVuZ29yZGFueTENMAsGA1UECgwEU0FBUzENMAsGA1UECwwEU1NJSTEMMAoGA1UEAwwDZHNjMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGvHqf7SYtlvevOyA/no+i1/WcmS0bOYP1bgP+pJTjTkBOpQi+f7Ie6415WFl9aoqzMmKRJmE6Ur4H+b9Vba7FKOBxTCBwjAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFOZE/2bkC1HwzFPPcZQJ82uVyOTTMB8GA1UdIwQYMBaAFGiVtMJNO5SQY5dOAz9JNlmRi90OMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9jcmwuZXhhbXBsZWRvbWFpbi5leGFtcGxlL0NSTC9DU0NBLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMA0GCSqGSIb3DQEBCwUAA4IBAQBB7UNVlexZwtC19yXkui85kfGT0RT0CqfLAvFPXy22Cy0/Al1OWItlWiN7z4RKSfhXel9jBPkowWjm4TH/Z9SS558sa/CQohYUaPlgR2UluMhbDVUsyLicQbqVx571GIA3BLoInJsFnp3Srv+XgP8ic2T72/mXwxnHCg1Jra2X8W0GGaxrUuvf+dxnPhDTeBNVqmYgk6q1vS3Nj3yugkgmg2xXNIWpcFjeC6/FVsTEORxi4SOjjn5Omhb9uZLeq11hXx04fORw9ctzppi5P5TDNDdmqa5iLRVsgS7Z7+Fp7V4QmfiRsVjyX+2QadvREEIbgcw8Y9d1j1qIXrCYwhCE", - "kid": "mqWkXpNR0Rk=" - }, - { - "issuer": "C = MD ST = Republic of Moldova L = Chisinau O = STISC OU = CCCP CN = Republic of Moldova National CSCA 01", - "subject": "C = MD ST = Republic of Moldova L = Chisinau O = Ministry of Health CN = Republic of Moldova DSC 01", - "notbefore": 1635269461000, - "notafter": 1698341461000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEurid6V6ennaGMYu1h8Q2PFJ7eMkj\n7FiBzBEiQMnNb/YzAj60g6cnvX02AB+E48Hoz4amNlralKXL3CvjaxHGLw==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICljCCAjygAwIBAgIUfKVPCJ2DSOQlBmu5AcgWL+pt9wkwCgYIKoZIzj0EAwIwgYwxCzAJBgNVBAYTAk1EMRwwGgYDVQQIDBNSZXB1YmxpYyBvZiBNb2xkb3ZhMREwDwYDVQQHDAhDaGlzaW5hdTEOMAwGA1UECgwFU1RJU0MxDTALBgNVBAsMBENDQ1AxLTArBgNVBAMMJFJlcHVibGljIG9mIE1vbGRvdmEgTmF0aW9uYWwgQ1NDQSAwMTAeFw0yMTEwMjYxNzMxMDFaFw0yMzEwMjYxNzMxMDFaMIGAMQswCQYDVQQGEwJNRDEcMBoGA1UECAwTUmVwdWJsaWMgb2YgTW9sZG92YTERMA8GA1UEBwwIQ2hpc2luYXUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDEjMCEGA1UEAwwaUmVwdWJsaWMgb2YgTW9sZG92YSBEU0MgMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS6uJ3pXp6edoYxi7WHxDY8Unt4ySPsWIHMESJAyc1v9jMCPrSDpye9fTYAH4TjwejPhqY2WtqUpcvcK+NrEcYvo4GFMIGCMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUtk8/4i4hj2sDFnz+oTBPM3gsriUwHwYDVR0jBBgwFoAU5leuhgfUUggxBYNy0n+tKWe46lIwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAKBggqhkjOPQQDAgNIADBFAiA0P/CM3hswqmbtlgRCGfsMs2DCmPGQwoqVJYoDFHyx/wIhAM2PdlwhGVVyeVugqUXabGMmLNwchyNqMNdABoH3eI9q", - "kid": "p64sutu48UA=" - }, - { - "issuer": "C = SM ST = SM L = City of San Marino O = San Marino Innovation OU = DGCOperations CN = CSCA_DGC_SM_01", - "subject": "C = SM ST = San Marino L = City of San Marino O = Istituto per la Sicurezza Sociale OU = DGCOperations CN = DSC_CSR_DGC_SM_01 E = smdcc@iss.sm", - "notbefore": 1623321959000, - "notafter": 1686393959000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEH2+GOTdCPhSUdDZmaM7hq/hRJkZC\nd3wPyOwB8lS30s4N81r4XFpv1Yev+1bfB4A173DByhZyIKkdnZc/FfaAXQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIIDBTCCAqugAwIBAgIUeATFyjMaoiT84DKJmiNU72+mkVgwCgYIKoZIzj0EAwIwgYgxCzAJBgNVBAYTAlNNMQswCQYDVQQIDAJTTTEbMBkGA1UEBwwSQ2l0eSBvZiBTYW4gTWFyaW5vMR4wHAYDVQQKDBVTYW4gTWFyaW5vIElubm92YXRpb24xFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxFzAVBgNVBAMMDkNTQ0FfREdDX1NNXzAxMB4XDTIxMDYxMDEwNDU1OVoXDTIzMDYxMDEwNDU1OVowgb0xCzAJBgNVBAYTAlNNMRMwEQYDVQQIDApTYW4gTWFyaW5vMRswGQYDVQQHDBJDaXR5IG9mIFNhbiBNYXJpbm8xKzApBgNVBAoMIklzdGl0dXRvIHBlciBsYSBTaWN1cmV6emEgU29jaWFsZSAxFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxGjAYBgNVBAMMEURTQ19DU1JfREdDX1NNXzAxMRswGQYJKoZIhvcNAQkBFgxzbWRjY0Bpc3Muc20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQfb4Y5N0I+FJR0NmZozuGr+FEmRkJ3fA/I7AHyVLfSzg3zWvhcWm/Vh6/7Vt8HgDXvcMHKFnIgqR2dlz8V9oBdo4G7MIG4MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUXBEgxHdIds6E5XLz7K3xKYM1ZYcwHwYDVR0jBBgwFoAU3R4p+KmXTKHb/B2ZD1s9d0P+tlUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDovL3d3dy5zbWRjYy5zbS9DUkwvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiAqKNSdqhkdyZaMENowSdL1xU3Cq/A/u6PaO90ApEBVfgIhAOaFehZJJsm5o3LAhZ+q3bWBZHbB7nsFbTzvowcNyc2K", - "kid": "r9RtWK9x7dM=" - }, - { - "issuer": "C = GR CN = grnet.gr", - "subject": "C = GR CN = grnet.gr", - "notbefore": 1621881325000, - "notafter": 1684953325000, - "pubkey": "-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFP\nen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEQ==\n-----END PUBLIC KEY-----\n", - "rawX509data": "MIICBjCCAaygAwIBAgIUKhlB7j/znUbHbqEQfJErud8AyPMwCgYIKoZIzj0EAwIwIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMB4XDTIxMDUyNDE4MzUyNVoXDTIzMDUyNDE4MzUyNVowIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFPen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEaOBwzCBwDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFKfRIrjTBVN2/tmTt8I32yrVl3DRMB8GA1UdIwQYMBaAFHAWm9K/JxbEXkf7XcqhKPGmpDK9MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHBzOi8vY3JsLmRnYy5zZXJ2aWNlcy5nb3YuZ3IvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiBdWbGhPUZmHxMV9eXlVEkLRY+zGdCsKVxgAMk2JYqU8AIhANkXZhiDVPD5IDiEw3Z3r0MdBxx7jy6rQzBj/K4OSgCl", - "kid": "vvYa1vaWkGg=" - } - ] -} \ No newline at end of file +{"certs":[{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_007","notbefore":1646866800000,"notafter":1710025200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXJGIIZHZOHRSV3CdXUpGpZ9660BB\n+15fkJgO8Rk8H+TlqeSYvBIfeRK+hVpc9GzUcFiKiPU0jbXZ0rorqNyxfg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUetGukHDBgpqpT82eXBBZwkWqlCEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMwOTIzMDAwMFoXDTI0MDMwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXJGIIZHZOHRSV3CdXUpGpZ9660BB+15fkJgO8Rk8H+TlqeSYvBIfeRK+hVpc9GzUcFiKiPU0jbXZ0rorqNyxfqOB4DCB3TAdBgNVHQ4EFgQU9yU3/1u14+b8LpUG5bc2f7rCXJswHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQAPO0+DbQ5zIkFbECIN+SGoH7m/1j6HgDFAze4go1Idf5U3n8ua3wFwf9Tj2knGigSHSkBgFK7UKIlkFz4aotljp4/ZU4iKGuTn0oo6XT7eEi/KQlNHZHkxtSO9TQCRHw0KigXG5pA8cqSWcC9coYr57+4t82F67WNHoi2x6seN+sgIZxZiLuBNMjoibwnT5leJKLAwClYOtCpoFSzAZf7cTeZVmCymHaoeHx56ftOdXBUoMjBTMFRQEP598lauU2W1FZOwucbOSIsk3lpAhhG+akzEJJdBqo7nS7XrFRlxinvV7shia90RkGBdyNIo4zU8glgiDSIvZQQbvOuFcMZPxxANdaD5UMLEXb0cW1ypGW+r9s/bUwRghQT4vDNHoy7WqBSPgybuJT+WbbGnzeKtQeSnJU0sBCG7KT4mZbsWNGY4m02JC4MZz/DD5aRx9izz5bw1Tm1U61yE+VivWRYzacWWgTOrdUcZx7zArV7x38Biihw/dyUaps8HxvoP6MWBJOvAv5aKIbyvBOxcjh+3oZjMvKk6L+EUlSli76c0S7gCEjN3SMLgPbgR272xYoomNZYapYKwKq9fu+vL5PgoWWEhfQDO7BYGfJryV+N1I4sBoOqh1a5wsp6FEij+vi1grNiNpTKXqpaN5UKOLK3pb+LFOPETXm9kqepI+PyVdA==","kid":"+cDVEVtFWME="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_026","notbefore":1639522800000,"notafter":1702594800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuGGqMuc3NK3Y9fI82qbrWAiNKKKK\nYm6nLpibiL+DBRILW2+5cFXZ19HLfbKwtAxyVOsv2N6x2VS8zklYStHGEg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUftzSPzs3lKyxin4HzGAPSInAlHwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLhhqjLnNzSt2PXyPNqm61gIjSiiimJupy6Ym4i/gwUSC1tvuXBV2dfRy32ysLQMclTrL9jesdlUvM5JWErRxhKjgeAwgd0wHQYDVR0OBBYEFJRMukUQrFVGUPhjzucJOPTIs0uEMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAsalnKHPbwm0FnkhrFHCfZt79nvNRML5k/gPI0Ab70inRKqqTETv/T+l0xtSBNbU5cOu2SdymWqaYZDiDdfKhmw1MBJsieP/+Q7yIAHt/RYlhOwMoPcxsTHtrSpW9kRYH77OYX6Ou9davXN7Pd4sv0Itl33FYxoXhHv1lPA2IEf19zCxgqeStforkAqm3jD6tlEc+gfCUnKsqJetIdAeKVYt5qcz/hmCFnl+GgSVswG9SqogySJD1F9Uesvi0k1laWphmU5IkxHymJqy7W57FgayiIrG1cUtuVcPaCxZ9eNWYoM03p6NdVcSr7qkGuglzkgtzxk5ncruJ2+NRUeUEBlwTtzI5QIcW1w0lnOXbLrvx40VyhJhY3ixZcd3+TiHhMxohPTA5ECg35u3q5/xBA0XF9nyiJ66Zr0WUy722QlGzOQyChGLeE/yHsBahNEq1Kc3L4IrqZu/TB54qM6xYKMllli7CCyzYH6NzMYJeHrrjNyeakX0riniPpKvuW08mwReqsuZ8uS05JoR93z5eSxJewvdUlirrBQPZEjA6f/+3fkMT21JJp4nuGDJQSwYXWTlxOI8jwzi0k887yNFIeTgu6PVRqzOGQF7JR/n0VbwKASOAvOnvG8nNWhAhdYyzDfQ71KAcDkx+rRu0mgmdtgbEUA//B++J5sZjHUlb8Ig=","kid":"0oCvyNKB210="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_027","notbefore":1642201200000,"notafter":1705273200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF+/sS02b7zIFGgBu4UwddBeosNhu\n+zvARa+ySKeK2Rd2AJxx1lnnUgfkD0MHlO72kUEwhYdqfRZ7gSgFEgdEkQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUeVVanArVip2h9V4zfLC4CgjqA/MwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDExNDIzMDAwMFoXDTI0MDExNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBfv7EtNm+8yBRoAbuFMHXQXqLDYbvs7wEWvskinitkXdgCccdZZ51IH5A9DB5Tu9pFBMIWHan0We4EoBRIHRJGjgeAwgd0wHQYDVR0OBBYEFPSGVTQu85GTEXtAynAWYMIEdyb0MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAFl1G9mpI4FDpwyx7oXu1bY3IXUrUslXJo0Bmv3ayqQ1jCVXOqz0ZemN5lOIVwUMDynZLngsHmKz+fTR8K3CI6PaSxeDy0Rw/CsyWQgt1CWUR6q296z1DaPMsDGfO7dKDqKTGgoge3K4IPCjtQixVYgylfo6kxBHutIWAIgFV+cXxx+fn3K828SMoS7DkvKtAkvEQAXGGk6pbP3EdAtUJbDSbOufxS0W45a34C6tKiDAOJiXlCZjhtNHyTxSXDDmiyoabxxICNLmKJ5IMEe45pOwwZC5uPr9q0Qc72+jVsF9VeutV/ybocLY8Mi9GRJFKP5HQ/yQY5aYTstbV2V9pSDP8bVgdkzYSbmEVTgJ6W6Io1B9OFrbkeeOQzwugumUDjV4aA7NM4kX1Hh0WRtGnrVqo0Lfy0Rbj10goEb6BidecOUMq9iBuD7OsGIBqCO/p77xBC4TPt2rdaO2hDddFt0KLzesFgNrHJzMRH67MUHTDUaPVq0s3vu18XurOerivE5d7EJWboGelIWLNGkhOV0rza+4slR56wqve4I/A+Qhf7FwPZofZuPk8JvE3gxXQyktH1wzWGYBUUFYIbScJbHMb0hTecaPye0gGcKtQ1Y2VR7JA5NldYZ3cRMcdH4WNqYfu7qKl0NeQ1hqp1+pL7iWsOLG24zr0Yi8/Mm/xE5k=","kid":"14QQ1b6JFLk="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_20","notbefore":1632261600000,"notafter":1695333600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmRk7MSZQCX2u4UIQgVzma1JEo3yA\nSVafls/5nw/V9T6e5EbsK64MM0KhsPH9aK/aElRt1+Rxtd1AsHVvsQJjKw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUFpv5DkvJU5K1vn/H2/M9MQneJrYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkyMTIyMDAwMFoXDTIzMDkyMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjAwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASZGTsxJlAJfa7hQhCBXOZrUkSjfIBJVp+Wz/mfD9X1Pp7kRuwrrgwzQqGw8f1or9oSVG3X5HG13UCwdW+xAmMro4HgMIHdMB0GA1UdDgQWBBTb/Lh313Pu4DiRm9Z5SS83yZeXmDAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAAY2cWLc8Ce7zLl6vxt0kWgpTibXFhgx/Que5ExTAJOpsl6K64MpJCofzPfO7MzxYRtIL+Lj1l1avGKNr8BNpA/+A8KeJQsocJc6RfOMVPt+2Cmpr8DTDeIjNzsmZtXMaRtgDjGV1qMTtCaThdGgzC5KfgL0OylkXDnFyMDRVDCxVxJUC4aMolQmnCVyyqD2bHBm9Oj4+x1UFrx1E3q/1FbQsy/Rji14kS+84c35qAuTkp05kqzxoZZswLQY/bYXJtU6u1SDwo/Geirre9nhm8Ck4Zr+8ARIh31oVyK615s+13A6p2Iux7T00aODsfRHZKh60o7+FcjeQJ3LbNdwBEHN0qc8aPsT5h61ZuAOnpmit80wVR+btu1d8e7Hq2u8AChmIGDcxjwHs7ygfbRDEmSM56ZhQ/a9PGDvri+jnuN3GW2TUajlXogrdMmvVsQN3nssR1E3nxBltyOS6EP88uMdr/ajAOjOT02ISmkaUWfTmrwEJGHeezOPiJGVvqp2Z0UOiwCivGB/PU03cAcu/ms0EXIKZ2qFosrZeJgTfZy2LMFKgQbj5b4iLDWormO2RCGvM3QMfmYd1XwTISCvSlDyEgT2hBRgYnLJ9ipPD8ngRmQXoX+nYbIDi23R/5vlU3qNw1cFAyGamNAsUNgPeRGaqIzB8eEON03DROAKulU4","kid":"26Fcjnjuf2s="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_006","notbefore":1639090800000,"notafter":1702162800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ua6q+h0NvU1yqdisTbi7nRqu9xp\nX4qBSU1boIc6PWIbY4EKPTSQlxT7hhJwYBR37PZZX8JdOBh1ZqUjG9j87w==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUMhJIBrZi2FAUhLPwN7JzstvhMsUwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIwOTIzMDAwMFoXDTIzMTIwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ua6q+h0NvU1yqdisTbi7nRqu9xpX4qBSU1boIc6PWIbY4EKPTSQlxT7hhJwYBR37PZZX8JdOBh1ZqUjG9j876OB4DCB3TAdBgNVHQ4EFgQU+eeSlsYWARhP/uY/e3iyCsunMAcwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCac75HtV6gRBG2AQXz0YcprJTZAZW+VZOHh+JBmIXkBEUzjmRtsTe0/SqOhs7M4ln5WpqsT6ET/TZYoGTUy6oocjqy38MtZMV4W9sGSSdR/ltfVLkgyofPrdNg/XzNGEF+jZ9xWNCQqBHaxBzXaPhUa/p9B1Amof3ksyl2ChdcOu73QyOQ9qcFxBr0U1DJ2K6ZDIbiMdu/f7xWN355HJNfGFaKioe5wkrRJOxiu0sfn1yH3hCS4ge5iJtLvux4GVF5m02bRYtIe32+FrjQAg3pH2ayyDJ2V38P6cIi9lIdoGdoQuA+As8m+Nsl4pfXmeKqaSF0grlPVlhTh9BW6+N6ktybw1srgfR+TLKvTrQ5nvbEWtDmVddhNGauwSB1YHA2YK+nzlDS9o8091vKuFFSCCUeNWyZPHzw569izxAy+Pu3MrXiuiPISfneQIikl3EoVowS1vyWpnYWkFfrUpgT231Y4IIu5w7tHeD/ieEU0tq8UQUamMshiPFpXJqZMzeaxBqaAoTDRYmOGPoyGiKN99Bz83BFchpgaZgtMQFH+X0XvEsLr9KYDD+svyfuZZLqmIPCxq3ejF2O1YGoe9HfGh+LWqlw6n4usqBhix8QUznUSkkQwM4NrCDbQUOSyOtMXGwbLFiGmrlg41RMiJ+txZkCtSmsc2iHq6YHnKNU0w==","kid":"2YrkPPOntQQ="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_015","notbefore":1628805600000,"notafter":1691877600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC\n2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwIw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUc4Z21skZZ8Xy07UbGOonQJh/3uYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxMjIyMDAwMFoXDTIzMDgxMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwI6OB4DCB3TAdBgNVHQ4EFgQU8CPvYMvFZX51QjwEsL6RmVrYhCgwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCfhMpfpfaBZQLkBuT1XZJWVfMy/UxqunIhPyjjJejxCnYupYB5LoyUKeuI16+StNTxGNHML7S73SWywDSgFwP0ttoLK1fiGVKtOBfxcvPP6RiuhbgkdXlUboXW3azVLUB0y4ZxnFsp3ZupaTBCpBQNAaC30tEAx0ZEZvOBl3MGRHqfR6SdUc+aMj0bibqm29J8hOZAe051JwGNF+y7O0pLdDkmAg3rdBsHaTNvA6AcyRRV9Wm8vB6bf20JXm3mvVtgdyidUgSTTMJ2BOqvGzDsJma5q7vh4nFZxPDRGp9Ny1WU8MzGUIUilv/UJKDexfqyQdzBOF8jHXCY/gHGXrOQH7MZ6ApdG07+RY8R4AxZ51OJyGQw/KPFdU6XLSaDtyTXptGxl2JPIaik1TtNNR3/pAdDVp67tik7En8QICqEdv+OqzBbxVrFRHmW7bSeiX8aSuk52ypHTAR6MkstVNxd5J0mzPxBqQVWa2LDy4vGkFn+qQ2/tsVpdJJLQwfcix4rEP1kazm6nWqTyyoDEU1MM9i5y/Dv/GkAwMeXPqf9Uy2z/QWyja+me06DI42hf8eLN36uHcMS10MT2/ei2w4i3UULge0NyN2+wmjR6xKJHEu9P+LXci1jik33FbwGZKXVb1uI7Y/iU+NIBOPgHQfEvBuKDDvHC+vh3r9sraXeCA==","kid":"2Yv0kajsIlA="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0004","notbefore":1641942000000,"notafter":1705014000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV9ZwrSsN3vr0WUaDkS4UzyPLz/2y\n4hm7yEnCOaAidrjZlVlIjQZkhDeNLYOLKcaGnEBQxBQNpCgLTJWTRnopPw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUaGRg9ynElihMD05ckXc84WVL8f4wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDExMTIzMDAwMFoXDTI0MDExMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARX1nCtKw3e+vRZRoORLhTPI8vP/bLiGbvIScI5oCJ2uNmVWUiNBmSEN40tg4spxoacQFDEFA2kKAtMlZNGeik/o4HgMIHdMB0GA1UdDgQWBBR1DNHWK9PsTyKp+5wxalsj5t9ECzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIxN06gTwfxHWcwBQw+tPhWqNv/caBLzM8Jh+DyOQWyanukoaU+4hsQm6Ouws79tCdGVPnDUgwxG8xM3YGOh5CxbhbsSfzihNmwUBS2F7LgBrK9PXaMOh6EX5+CMeMOMWPlc9c/OiHdqqr7yWPv9NEGHIUrsoYk6+PXNmUo1Q8smzWpLzyNdtdsCVyager9w/5hA0ZMBj7idZFAqDVWBVtUCtHH6QqW+NJ3Ukp+vqo+7RupVrXda3hkT6f/icnOxygH+UXRUwzqKeni7hLDDU1xfjd8kg1sa7zVRp4j8defmvrq2sZlFA3kyLKyDS5bk/97gejBI2W9efho5pM4Ky5jDuT/zoAwbepPuvB6cMo5evTmMivQoqO9k9NAqwe0Ou7YGhojAHIbnK/SoGWlKPAAwNzD+tSIVg7EBV3HWCMWsUu0CN7yDOLjatnbupT3crwEVa9M3E6Aw3c17KK3YqLyXJWOSAiR+8ZTE290atJT/4e+njj1+foFJdiAcQ+yG8qiLjGDYXxxbTU6B8XH2KXlikmeEZW1sNsafpg67jG8QPPfauZHtcSnbIJwk3Vni41IQcoytkc+b5ixpHkmXkbFgDR2aF5GwH5uF6Q1DBJdTiT3UpDsj1ZqGRrOKdj58OALAhRi/fibUXVJkJcwTPyXF95dT3N2LxIuEsvb2ilwA","kid":"2uMhJx5tEEU="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_22","notbefore":1635894000000,"notafter":1698966000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ws8GOmbxIZm3jIeG2vN3jsMTvjN\nuC40InFfPoXbMRVFjhOBjro3792wiunoFYiG7TZsgCEi/+IOCUsxa5+H/g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUHZbL5MhK3RIo99XEV0xY6jiBrQkwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwMjIzMDAwMFoXDTIzMTEwMjIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT7CzwY6ZvEhmbeMh4ba83eOwxO+M24LjQicV8+hdsxFUWOE4GOujfv3bCK6egViIbtNmyAISL/4g4JSzFrn4f+o4HgMIHdMB0GA1UdDgQWBBQtDNVIN839gYsiXOJR5IAF+tqWvzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAJdRrpKYXb0KAu7BXEq/45XlLSt4+UB4MamR5d9uZuVL+KkKHy9jiDJ2ydKSoCDJnZZtKdYG8hqqCFKUj/WqkTJGysZo7rWmeHT4/AZPSHsLGtaYtqKVPJOie4nyywdmMt07fJIcqVdGtmHqM9/dhEXVWWJqtDWC1cZ3HdS4Xf8LgPORm2iusGIKO7hJuBn9Z4dtqKlY2VzHY0jlqdFdOFVychusOQyZWdliJ/FsERDj3jj4TEk30w0Pk+V1Th6MogVmiVcv0QnxKG71Nck06JcYLkes6zgmdcY0vapUfmLGHECgMkYwuAR/tB06xAZPVPU9mq653ezbElwXPXNM6qc6TaCEnkUpjrLsjy/vD2naq+PtkZRlrKH+HxV8ZAEbAsg3WDAPG/9xVrWtp8FjmXhq3F6I/LGp3TCh8/q/9UmfDDNldidA95QcsAMJZUjEJNr8JXuegt3aBWUbpz8EbfyHVVS8Bzh9H8s9z/mwXT8X63y85YUzlMGshKdqI/7lESJUunA2U3pIZHixGJMK3MelZeqEBqxd22h7/gmNI9LrK3MBEtBQtnis+YBTyaR4BbDHDOur3eQA7Fy/FoIl5LUHPmbjqD+tJUuojg9+E6jGz18BeJYLtnPHNNF02XtfASwg2WO1+eujIQiyp+6e/xLUv8qxzEUQDi885fvHv//V","kid":"3aGO1ni4qKA="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_023","notbefore":1634248800000,"notafter":1697320800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgu/WJBn1Q+RCOfQx3NLT5oIGUCHs\nqSRXuu7EZsqfqZN5PvHk6/E++88wvj2fMrfmAptk5tVld2xBH4P4tRs8JQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUbjokPqcsK9BPa9UdWexJeyEqilowDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTAxNDIyMDAwMFoXDTIzMTAxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABILv1iQZ9UPkQjn0MdzS0+aCBlAh7KkkV7ruxGbKn6mTeT7x5OvxPvvPML49nzK35gKbZObVZXdsQR+D+LUbPCWjgeAwgd0wHQYDVR0OBBYEFFmAYyEK7sVvsDvIY+w6fmNz2BT4MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEApMhsApIqDdjtJiC6mOsvI8L9Uwf+gw/dv06vVIwTQ7y+4AgtfZ2HTWeqW7IlXvNYs0m44U4VyL43pnoV167rwBOAMGTrYqT+83Hl5adOtl5ui0RxVHzNdUPiVPL2dV/OgZQKq/TFjm8wuJOxhjGIx2CFVKX2PpcbHAZ/IawdJjhOsisBZpfYuBpKFV8hBj9/SF/EwCrbswB81IrOjNEl9MkG6JrYarO/uztKHv9OIFy5SC6BaKkO4OItM2xx4H1w2cl7Cqt32n94WLxP0HLeAKqUA8/7Ttoa98x04iLElhkg8Fd+aL6Foi1mWlWBRlgHz7iHxZ7zYDmi8NksxnKECSwBm4FpP2Guz7CWY/tsREyGvrzZ2DjYFtNtIOHW15xr7aTPRJ0yD0DYtmZ6l9aYlFVGUgNWypUuNOe3BJh25X2re7nIwSvUWZeAnUFbJ+2YYt9xQfjgSll/DByUG/SfT6EqstPWlbVFVLljs6azzxQyozRB8JYPVG1Kny8WSl3YokIDLVofulJqYpi+ac2DDFCA1L6Mtnfw/go7Rq7uiorduqZi3FL8vKwy0M6S3ckP06pWjpJdOyKaLk1cbHJR4fuzY+PrhvDkKmSSlEzsWCIKe6B//ErN64MJ5xJxc6HnP2KvXV4hf7XbFsNat5ETxb3VdQhVDyHzgbqSpVo9BIM=","kid":"53FOjX/4aJs="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_029","notbefore":1647298800000,"notafter":1710457200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvPje+J0NfHHDSd2eilS/vlPfvFyg\n2GqaQe5uDcfbRNwXV51JZqQ9bno+FOnw+AFrLd9aOvsqWkvH6ogsKHk26g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUV/o7xkGXd5ZK2x7x5++zZSO6I/0wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMxNDIzMDAwMFoXDTI0MDMxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyOTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLz43vidDXxxw0ndnopUv75T37xcoNhqmkHubg3H20TcF1edSWakPW56PhTp8PgBay3fWjr7KlpLx+qILCh5NuqjgeAwgd0wHQYDVR0OBBYEFNNslXmB1flUg6kCQdJEDjP5T+rhMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAYRbsqQL82TwM6rQ75T0D/ZDzIHz2VP5rGoUBUGMvoqXYBFVZT5DbpjHjmb438xzeMFFUe64JRm5vkvyliwZrDK1WJD9W2A12mzIXx5DDakYh4JUkRUQSmpFynP3zrpr+P0hOZmDjC/UPUbSVRkFAwa8OieTSppv1GkNXTyDK/nZC/5+z0tzSWcg+xnR5ryKSov+oelpM4lGfSbOjJOXlEe/Vum7jt8dOkbCMyXCxKM/GGtOCVFmEUwieDe6vXmxRbkQHWyPclYB+RsNTct7vD+V04mXaO2M/EPdp7uN6r/4gI3e1UiJgQzh6Fntp9pDe9nkAQRjaotmokiakWGILMcJNMjKXTcWGtGECR2jIHCvvH7j/HSZxEQe6TXddnnMzLovH72RFnNQ2ZarK2hXcc+o+Rh8sGDlyZddTTJYzVm5lxQr1BtEMT8eNfc2Xd2VxaFaAp7abyKX0TaY8/WKkab+VgFgGoTf72LV6mUyWSSvm3U6578RCPgf21RVfIuE5J42Aq1eeYkkw0jCF9cVSq1ZQ7oLZzyk/qPI+LXcwgh02eaEwgZaimDb6GTXvNGLiG/UPVMXlVYdLTGBWr4BaIgk+pFwzx+4Zmwj85hHBSNObw6SJBETnK2K8nuD65IzfIevB1j+Mv28l5oBD714/o2ctSVcBYmxwFp0CzjG16Zg=","kid":"5IJmAxfUwrM="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_008","notbefore":1646866800000,"notafter":1710025200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFe6+khPXHMXLN/gLpWJi9cmNmalZ\nJ/H9Ko5t6+W1F6dPaUYnTpV/RyCBxWd9vpgjSKHLD66FjsxMjp/3Q8U+kA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUGIV11m6B5igxihjlFKRkwVNsOAIwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMwOTIzMDAwMFoXDTI0MDMwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFe6+khPXHMXLN/gLpWJi9cmNmalZJ/H9Ko5t6+W1F6dPaUYnTpV/RyCBxWd9vpgjSKHLD66FjsxMjp/3Q8U+kKOB4DCB3TAdBgNVHQ4EFgQUGwpsSQJaSChkXvDR4rLovd0XxwwwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCGunJPiKmLdtXndGJEMy7bUnhBJogJBDdY4QoYUL9cVGwBVeVzRyoKh1LHAYC1OLzPb8kyP51GVZvZtbJlMhh40x2bDoyA+pidQUQBPs9pSun8//evz2n2TWsTDZ6vSeNgdEtLZsVFSnVKTLgjpm4IJDS2T/sr3OlGZMMryqeVx8GDpxVysZY0rRZ953mLHHTh4NVi2TOr1gHogKDpLCk0yIR8ac1gtdIGSxNtJtUf6gfoly+sLtRR84cQWqZNiFrYkxrPPV7mKD5cvWcqYl7oq//5YMUHI9Roi/9L9fwUEGKh/XWe4GrZIV6CRmmjGYwN/aKoDrOviPzmcmY07yMzuk10U4j5QGHJ9B9ePgvGkRMp3mR+5h3G03zr/PuiIhmiufhdomAMmd6tl0G7oAl8a4apugBN5DluJ42EJpkK9rHIIEi+2+ZvkNIYquyoYcCam3/FgHQuuedxaZR4b36m4t7sY2zmWjjnchZHCv66FgJEVYIWJm0wz/HmWBv847ErUunoKLEopY5cHrqfuii+A4HzO0U9+vYZw6DA2RwuVq8Ya5VdDlbZRva1OqzzDB4rXWgFwPZulwfqMxclrRHej3M7m44ynNW+7fpS44ADFyvLN6k4cS4kDQzfuL9bRcSiR9+UpCQGDxtOx6RF5/kyCwBfshXpinmayXrXCH4oNA==","kid":"696cpdD4YGw="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_031","notbefore":1652565600000,"notafter":1715724000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsdkkXqwhvUOcRao3EMIcLnDwZNiB\n87ofJwLuwqzIlQhOOZ7ndf8f/flfzxzogN7OgekiNNMpPGjOy58MZQ7Kpw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUWplIUjX5w9eTfcPRQLG1AUcIeI0wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDUxNDIyMDAwMFoXDTI0MDUxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLHZJF6sIb1DnEWqNxDCHC5w8GTYgfO6HycC7sKsyJUITjme53X/H/35X88c6IDezoHpIjTTKTxozsufDGUOyqejgeAwgd0wHQYDVR0OBBYEFJ27qMfQU5fnLnX4wi76bSxJ6QboMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAlzY0s3UVOuyqTJGhyBVb3cfkrD4Hyqy0QSrB2shuv5JjGudzjSuGqurDp09Ozyg97+PuNm9F6JqxiZbz+IhmzZX2yyYwBEOKv8KnN57DEIY65qOLn1o6yJEJpNWVhCjqW5MnhND7CGxcvTGF3FHeEB5OfxnSZaC5aDkNauMoI8pUddONpYwrtHiaIsxsYce/k7w3RctO+8ZcYJ/BE1Urc/rpmcV1FWpBC6FzFG1rbu1vXMkfPmKLXFCPZv9Pzu5u9/et2h8TFWS7DyMnWiSBcuJiF635CccYfzlQLeBBeGKFR00IqTOiSVQZPccB6PC7/g6Vlm9ZSrYQwBwraQIXIYRwMpIkOifn4bT3xNLlGp6b0k9xj12HKYR4MSg9GZHj8ctFCqHiajdjG6s5azH7wOAEyvzA047/RSjNyoX5hcLZE+6SIfDjZPDY8ZVE2IF1LBj1TW1mHWOeXnYD2ss3nC6nUXYByEekN+6pn62zlzwv+BnNPCZa+MqUJMvfRa7IC2qCF6VIB4KHhWH8Ev/3JiimdmmnqS9xgb7Go+r8h3iXbmR/wjucS5tuDJSkkEJDG+5VcEzKdxrIrmbTLIlDf84gpcaH2EYFn2a5VsYyybGndNl0Q7qICVJGax3CPZe1gQaVNqhtEDLbfh0iXttV5F+UdxrO2rQ/AH+fOrV0Q0Q=","kid":"768E5xdq4Eg="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_016","notbefore":1630620000000,"notafter":1693692000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTC\nmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFDw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGjCCAgKgAwIBAgIURQaZ+EBTL+Y6w52qaQUNZ8YBNs8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkwMjIyMDAwMFoXDTIzMDkwMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTCmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFD6OB4DCB3TAdBgNVHQ4EFgQU7OG+JgHJZf/maDGo2iSgWdFzl7EwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCVWdsW/zEmkJ4uRQVoYTxdDHlmS+mbDvEGv3em3wtFVWX/0FZKRRxHZba4wElR7DjEv4A/d6sYPn/9Mp5PhBDS/lofFzUMNYAumH4uls+MT6a9ezZFCtcATKj9pP2hMySfSn2rfQzOR9yXS6I/GcruzehqedBmzxc5uKjbSeyLA7sgsgl/JB2DW5G4tIqjxIY8KytMTkrrlJYaG/vPokpS2ajUNZisBbLHJAGLx4XKnjlLviTBSp3iAsoCh/FFHJxtQJ2pFvmgRmVaQUKpTaAuHH5pPmw4Q8rgXq+qX0vFaPe6LaUCpJkEguY5lxGtHqZGoqoVaKG3/LX9qkuzyJ5ijI//e+Uzah/zCBmW4kK9HLHUVWNyOD9fbVhWHJfXKkNJ0dH5JV3bKD2G/MvM81R5Q41F9PUjOXYoCrDnY2tmBPuXisR4mCulrWyM6Bj0/r8CkMkwMNcr7AoTEfXpa8MxJANVWFARG76IYiQtn8M1dtBxmy+bf4/+n/k6S6Z4w31tTl0YsNWQ6TnlHS2PQ+UiV1zchJcZ5RW2YwlWjLRhJHOzrcv2m1jRIsqPASvRLJjeAs+77ZDyBmBFA3piutllZj5SBDCLzStyIplruJWHhCnhGj90b+fGQUPAhj8XxhRuCnRtXBwWED8hC6dQh8QaiKB7sTrlU9L/8wn5mCGnuQ==","kid":"AX/m4PDDCXE="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_21","notbefore":1634076000000,"notafter":1697148000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2KIu7zh4VbMsB2Y8H2VRojkDFFA8\nhQwDsYjuAuxqIvqqx0Rjjv0+teHsdtIwdXW5f3BrIp5D5WXbPechk9nR9w==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUaC1i8U4Vp9O89KqNCGnoL/BxXpUwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTAxMjIyMDAwMFoXDTIzMTAxMjIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATYoi7vOHhVsywHZjwfZVGiOQMUUDyFDAOxiO4C7Goi+qrHRGOO/T614ex20jB1dbl/cGsinkPlZds95yGT2dH3o4HgMIHdMB0GA1UdDgQWBBQbSJqpNjLhe5I8/Jl9l7JWE78a0TAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBABSg7TvfutJ43UXAOblrRH4vATAYUUHb542Pnqr87+7IVl68HtYLeBI8kuDgbo+E4D/vLiWJFq7V+9pUQnLvqbIlgESQP2saVFb1DRVzBk6UdAZ98kAfrND5Aom7VPGoZE9UpRBWYJtH+E9vXR/6zr3ikIbLSghS9S23R6PqEp+KD9bd2DUv2URn2VsAncTIwOovN3sCVfbiI7sByCyqzoCOpK+lK4GbTRUDnrnS4thexvi/T+pMmJ7jYUtz83tD+rp6PO5L6Ps8JVhYDNYRyUqrxSNcU6mfKikE6I118eeHCHwCTh4TXsE9wTwJ0oZwzo0RlZo54GuJ3XTH9zJZv4rOm8BZwVFXXKcPR/MKmRTBTK0lsvCb/yFSJjW9h7EOBZCJB6tmrsXEaZJSzSepge4hT3+qO4S2VgeruUpeoZy+X7ytWsMAWL8NMWBxVba9pkwM8zTKluw2dFIaMm3+p26rXyw0Ahg7jDFGyPyCjlORrepgMuqhG1nwg5+INYhqDNx6MOY+paAkHCjacmvDlcx780SrcztES4D5h7tMWH5rpHGQdAmr0Ga8klWp6QaJs+E+RvlfjTCx/jqYHaC1MGjxiUQikOEbcxZH6m+crrtcyMH3Jps1pqCDOYHVgsqOIyqkqdmtLxfdvGzPUn0hKIMC43gkyPX9O5CphGmwJEaR","kid":"Cj0KwOpRFvQ="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_013","notbefore":1625176800000,"notafter":1688248800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6\n/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUdvwPgIGxxk3GeLBFSk0RuKP1NnEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcwMTIyMDAwMFoXDTIzMDcwMTIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuKOB4DCB3TAdBgNVHQ4EFgQUK/s/lmhAfvZK1RyuXxMIhJ7oTm4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCwoySNQghvF3QSu/6RtHg1XDV/4eNFFPwl+qmZn1AfODHAfVS42hjsmMLeDOLv0JUg3Xdx8debts/8/ljys1XMy1tODB9y06ZrQ1X1GxtutC4cSacBYWsy06qyI/vn1Q6vwKkNHADNJP2GNxQUlolkXkdgS7q+2tWCxcK8lQE4t2TrrNUi5UN8tlagLkbuGYqnzHnGdZ8AN6NskBhq8j0mcDHxhZ32yBg/+ZmLGdnCqRuZ9fjrH6B3k/n7fHhDG5UPnk+m+LReCRN9Zud4lGzLn3HSS1dqB5V3k3lsszmQKEi9haFljxImcU2aJ+IRepO6T/kXh+bn5ei64sEro3fad70eAOg9C4hkD3krsHMpYdM3TBF704dahPbuusRFqDCD9XrLpYP4e6UD+EdjOg/aqG4i5DEdk9cFJtv+5gp8ExtqUXkIk56jjmShQFwfNgA5SWa6lFWniQCYPxb978BMIqOamOL/6BwnyaazQWFm2Qyl4AzlWot1CrOt3r+aK/i0m1nE028dju2xa3BTKEsxjCAXJ7eOldXkezBPFVGpfrdWssqnbzaWVXtVIfZ/CNMmEk9/cqgS+A6lrZlC5Og28ziRrkQatnL2SIbBXmcJ729H1SHRfAVKu+yXDzHV2fcwcoFBgZUf1g/IS/ImzU4A4sJImfDAvaFY3mcQslcm4Q==","kid":"CvmI4xOoMj4="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_025","notbefore":1623708000000,"notafter":1686780000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEGSSdtJPZeYWU3QrR2cR4M2Cv6sY\nKuY870qkBKKREtlSel4Cxpfm8EnPZ+OPVVDXxArWdYR0MoLK6Ox9aEIkmw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUEE5lEugsksKBZO8ZFddktB2zEZgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBBkknbST2XmFlN0K0dnEeDNgr+rGCrmPO9KpASikRLZUnpeAsaX5vBJz2fjj1VQ18QK1nWEdDKCyujsfWhCJJujgeAwgd0wHQYDVR0OBBYEFHo8gi1E3sTHBnZB1uyUzxdv5GyzMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAM2QCIIa2/qraMLp/+N3JR3gBVI+zSFird5rWdWPWptnVq+E2MEPwJhz3a288axhZPetnm2vxRHtrzI8OS0tcl0qoDhHmMQAPzYHth6xGoGx9+jfLFMoynA1hcRmILtiitPoOT8SYe9K+ln3sia2xn52Rysy1xLTQZquBmczVAdxAS3B+h2nNw7V0b9ukamul6w9Fp7ifg25pT6mTt5sXD89hTSqTf/fhiTCjRTrBTJuVA9VgKrWUiZHI/vIwKRHoqUvMDDW3RK/QoAqfQWzztKV9yRCpBhv5focv50owbyu1VYpnT0gnl20UZsLwEXt6TusJFvGoiySFCLLanU6gyoHcXudNem8YEosOzxFSR1wvKJws8JJjuaQweQBtu/XRlwti73KZjwltHsehHC3nFsl3VwMf97A2cmre2ueEUcjRFvElh2PfpIIL17Srpu/mvu3hSVHndsUoFVZnZUWz8rVQL0M394Ik9ZBaZXVrIZud1FfuDQzbVKjRTO9mOIv9WZ784MAON+g0p0xKvJ2MZmwe+ZF4FvxRP2fCC9vlMk3As4bccS3IUKsrupIFXar1THfGPL8obpn6ktjVJ4dCT+y2w5JHGtxclhIjdqG5w/PrMPjeGrq8wlALwGjKMTF6gOZ+BtfjNCaG8h8lpt+oKeML7GP/Fe5Adjcovc0DBY8=","kid":"G3jDFQ1oK0Q="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_020","notbefore":1626300000000,"notafter":1689372000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECmvd9b56sHucHEi7GBjqapZy6IAZ\n4MFIFg7Acr85jXp/oBSNzFBP9CnkswLR5vwmr836uS9JL5sddzLT4K4+5A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUY7ZCHR/KM3Pu7zkxGX7a6r2xWT8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcxNDIyMDAwMFoXDTIzMDcxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABApr3fW+erB7nBxIuxgY6mqWcuiAGeDBSBYOwHK/OY16f6AUjcxQT/Qp5LMC0eb8Jq/N+rkvSS+bHXcy0+CuPuSjgeAwgd0wHQYDVR0OBBYEFGaKMaCARFztgSv4jjRlAu75x3ILMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEADKs8pzrmE48ZExyNbGa8kV7CjJjCfWGTOEfzxaA6X7gL0kaHVnvPeNq4yQh6CZl0mwrEmdxvuXKRefU+nCg/prbn6CAwC2irDHU5hS48Qvya7JwqNTMOU66phFs3FDuXOpUvm/fe+w6Vy9M0IqbKu7kEWizZ923G5YjrcUgnTuF9xZ0pOd2HjYh9efNOmbeda0JmJEQKxi5+WAGjOTqidDXfh/G+2jB/Ja67kyoZSeMHBEz7IyJ8hBrUWRWV5oEzIRQdMlZ2xPD9S9nS00T09gkl2nhx+U7nTqRPQa+qKMiejQA27+EwDgszkl5hUMTeqB5xA21l2SqBqz4W+v3WBy0ziDNS9Qa5HC1+lZp/7R+33pfGZMOC9iw2+yyC+SC8cFwUB/iuwZ+0096LV0wZshB74ZjU//sUNJIL5/ZWaNGohnIorJ8nbzMFm2rPfU66dOanfQ03IkrtIlbxH2IOAuBsC7Fk1OH6DDMoOJRia7OSAOv1UT696M7R4MtKyWhCiiNajxT2jSJbvpVj5YmS83G7cfbsYHu8x7VGxrwMXyyeyhKPh8D9xXCYdRrkAo5hhd9ETLRI4QeJHPQvw7UOL3Upog+fZmaXBeEetGl1Y8PQG2JHjY0BUGclNvvBApH6jEMWiOMUMjnR+mE8FC2LB5GJScjq1MLjaDqYpj5f2jI=","kid":"IMgNr10pfPQ="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_24","notbefore":1639522800000,"notafter":1702594800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEv9oPMoRAqA3JV2+cNikqVChE7Y8W\nxGrVkEm5PV1bFndPkVXnRgpdgznH2H/x/3IcOdv6edXz4iorfKud7oJoYg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUcMofBDuZv7du/lkGLSBUaCPoRdQwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS/2g8yhECoDclXb5w2KSpUKETtjxbEatWQSbk9XVsWd0+RVedGCl2DOcfYf/H/chw52/p51fPiKit8q53ugmhio4HgMIHdMB0GA1UdDgQWBBRRA97mCPpiiEm0TRCs24gbDkkU3jAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIrIAYlDdyvTTVinMgb6JUX15O3zMMieoVig1T58oCLVQFAdMvJAWvi9SKVe7FdIeDLVUDuBtEc8P51rI4Da3Ln+2eNvcO3HMyq/1IFH5llBH3mNIlynTny1G02qYVGAmWvaKNIKeS50Q5c38qBQFLvabIOB2RTVJLAZ1sbRhRnossB+MEmLpn19/UFl23TQqzBgAzRILCmuuSwyoJmLq/jAMAtvOtx32awLv1tRWpdDK0hM7/Nl30ysNEgc8AXhHNpgVS5SmMC41WQWXgMB8ZiP1t6h+nKPmLHRDKnM5H+ukg1Lob5bTdMUibmC64b6yl/PISPqHCojnJRTz/kKXf+E1zn+ybkoYE+608a8RO+4EY7vEsuvGTqTBtJ4m7qDkYLMfXMTQoCg0GbAal7sa7aJVA/vdno3gDGWisu/EzCi0X6C6Gu3nxJuwEp+Il1kD2nIySSfQzBgUoZ4KUHUbvYlvRJBYQKijUItaJkThvUfFE+C+TUH0aqdWBl33zEDilXiaJEYTIyVtRRmPMF/EMK44DGc0DF4tlxeexeXrAXQcG8PmxRVfysxv9JN+53ubchR1SZ4fuPiRFtCliKz8luUmpVKBtbtvPPyxSWacRR2Anfy2KCVQ95eLFJUdMpp7qSTGvcIJKtuoNMKW1eZrvISldQDejMcoFXz+QgtCv08","kid":"LkrphwJykEw="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_25","notbefore":1630447200000,"notafter":1693519200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEB5mLr8niSSWcqZ3EbDPjFseikZTP\n0rPRJPDW1+hvblECWjmEOsWEiXQ87RUStArNabZ9JMysQccgbb5IJ7bbOw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUPXRtjcQUp7b28v0vmppxnIFeWH4wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgzMTIyMDAwMFoXDTIzMDgzMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQHmYuvyeJJJZypncRsM+MWx6KRlM/Ss9Ek8NbX6G9uUQJaOYQ6xYSJdDztFRK0Cs1ptn0kzKxBxyBtvkgntts7o4HgMIHdMB0GA1UdDgQWBBS8BY4cl2GX44Dn1QTF8A1NVL8unjAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAE7zd0O/XHFUy06u2iTzp11wD8QZiGVEL9SPpI/fB1cdqZKL012FyiiN/wljpgo6b+p9SFvAY2nfod4Rs+by+PXgEdsVkuoU3QWCl0JKDqu/4RPLX350rufJWHSHBIocgBCUjvsgfcpJa2ureQ9iY9e0PVyRqEtTZzlcJWzZQwVYGxEcUnaC7pgmwS9awJ0r52GrnWNIpekSFvJcMsbT+gsfUeQU32lXENVdgsUxfX5VJZ2ooyw7bOzPJYInUwIMs1msLQOhl4scLKZtopaRztSNrQCkN5Y5C8OjEimkCq4ed7yznYhRBI/nN/1ORuniYS6jAilF0R8QBYdZOumjFozYWt6HIOuABikGvec4dp/5xqPhTTKrjygU+UMEl9bV9XtdPdHdbJUP9wV8gV90Fs5mUUlzbZjkfOr6wLxPMR1Acq5t3usakHLLFSSKHmoCwhCiiGGeYRPSjdcryxHW19zfSyHiKOaWlV/Ex99VjgWMZqV/JAl9fdjx4F58d03gp9iQY2+zm2WQnrVTUPrkEYdLoqcVtn4nZbJJnFlPVi2H9LcDN+LkJroXFx/eQQ4BVBQgIQ9pWjPUF6ay8TIpE1/PWhf+EBVet0FA4QqR/gypJI+cNDfgYUTA/2zJ5QpGDQSrUdH+8nBCx5RgtE4/OZBj83edTfcbC5+GPFXC88xZ","kid":"M+R7JFFk6G8="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_19","notbefore":1630447200000,"notafter":1693519200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERSQZ3mIam9saggM/z1bCW2+wGPWF\n6yNJN7qrsTLHntxEu2JpPJRPP866gJVIsHmIMqU/Kg/BnQ1bb6icYxpcTg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUF0n80rrBMJH3PxQUQLM+vM20uCgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgzMTIyMDAwMFoXDTIzMDgzMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMTkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARFJBneYhqb2xqCAz/PVsJbb7AY9YXrI0k3uquxMsee3ES7Ymk8lE8/zrqAlUiweYgypT8qD8GdDVtvqJxjGlxOo4HgMIHdMB0GA1UdDgQWBBQZBTK8TIaJS4alif7cZXMDRas7UzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAEqB7XsEFQ1yVxI4+qUO1wYS3j5CY32bvzlbL5TfH04VsS1UJvMnzU1gR5m90bncj4z+sqe4m0cHygP5VncDt/Hjfat4FBu7EfxIlBYTF08iBVClMxbnA64ak9XXibT6QlGDNGnLPK6FaadJosV8pkVUYKhgkIaR/5bz8CzOR1pECkQnpeAjZddHM21YfbGDlawwnMbjLJx6Zi2//RLLlCwmE8lv1VfAyG5fvJOcrx/9QgrIyLO9BmPwMBgxK9BXBv7fePFpYktbmhgpf7oLbUdmREbfweVNodmB7VjN4FiidTbL+m4EFsi0Su/l0YgXdcKCRZgS0OZn3lqR+KuYAsNxw6EbGAub8FuXrw+5BQ+WJ2ECxMN8fmi1yWMj5Lr2oHV3K30m15HTcRWuWZw1gYnfNf0z1NNPUK8LeyMDqJoPG/Oc55zrd+BkCecHQEbaa6sj1cdKwYabXOjCgTLVBxXV0XwHoB2qLjyXVjGoRHO1dwAEgnozfaUWB01Sh9Fe+xuSfHAS8cNaIBCMBCKktly7Rs+8bDTf8SNSuPlWqiXi5DY8a5UEEjj/iVFxmS8jheF4EQAA9j+WEFNyEn6szw5FH0zJO/nYhBS6y24l6aGanes3KcOL53tz1H+pGw58HDiWVhUpTDLWCFk+JGbTu92nRVxA0axLsimfhPR0lVLA","kid":"MJuQDybecd4="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_032","notbefore":1639522800000,"notafter":1702594800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqqevv+I14Er0ap62pyJsNnWkipxM\nuuogVRR94OSi2ZgIe6ejB5/8Xnw7URRJkYfEaixM6nz6Y6h9xHT4rQOXcg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUAsAQyVk0S89PuVooonmdBhY5tSMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKqnr7/iNeBK9GqetqcibDZ1pIqcTLrqIFUUfeDkotmYCHunowef/F58O1EUSZGHxGosTOp8+mOofcR0+K0Dl3KjgeAwgd0wHQYDVR0OBBYEFNsZf6xdKlAdeMErziNj3zg4kqzNMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAmHRGMyQKn86+JFT66yII52aBFp5199r13R+pMhCpTPdibTDItLAdehLwyZBCW88PpdCu5fUzVZOSbBQJt3ocTQY07AO4E/4bdW/A9vXYCvL2eKgRuu9pgyDeWFFDh5u9us7SMW1WSGC8TBGoQTizjeP6gQ/iznZG19TG9+G5FtoCobzGm/kMGtyX9s988LijLRAc2UBa4mk1E1MLkXGOnbzVHoIhxeFVWgXwBzCwCoO5ta2jF8e2AQggj+6uJCHnoeHwOS9JTxBanFag9LIilMZnFrZ1dyEYQtBzZUf3gfzNziNdYwv8oGbye3qFCS3YAwO/QCBGLAuzMiN6iJTL7+ivw06lpkwbCnREMRcNuBd8nSzzh/AJODVK0Zbm7elKitAfOl9xJ552kSCIpw3DRljsAvidhjP8ylgTKsfVhwb2bK9HEHSgo/MRc3ImWlYun1IipPwAfhp4uQfqcP0T8FLFfSBCK9sLN3F1jby5dcURpfYSi5BQvIgbgiiHpnxjueOStAGoof7ebmfFaehRnc7KoGlCfkAFrbBgRrLMsRbYv2xl47TOh+xPAjdbiZylD3wlzKD0ZDGpAfq6P0ovYoTZGRzzalw4Fuo5RW+S7SlDQCsdkNEKgAmFpGVnLed3YKhmLKJFmljlZXdeZVjul8KshpP6//HW3ceY5GXvXv4=","kid":"Of6ltPMXuJo="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_024","notbefore":1636930800000,"notafter":1700002800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7B4Il+aYBZk8hs1MI28H4Z4GF2HZ\nCXgX/DSTxvUoCMVze4xp449WJLblSCKXreGdiT0Mycgevo4rWYVGbwtUxg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUQGT66i1j72Yd+CXVZxgaJFhLGKcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTExNDIzMDAwMFoXDTIzMTExNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOweCJfmmAWZPIbNTCNvB+GeBhdh2Ql4F/w0k8b1KAjFc3uMaeOPViS25Ugil63hnYk9DMnIHr6OK1mFRm8LVMajgeAwgd0wHQYDVR0OBBYEFOkihiD6srcZ+6gH9LiQNVc6QwQ8MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAg1Vrsxtjk49QaxQ/LWFLC1WmRTNO/8XeLyASVHjPZXWfvrl9ft+SlKqlhIom7sYbxiYF5+g0qRjwBWMVqfFkYPpJkeuri2awLQo9Hr8oiPNVSHpFi3zjr4gMLEv2buQ6LUbvAT2U6eOW17AiNhT/3XzND8tILs++7JKU675p46YtKNguJhJVPEO+9cMdBdeJUM8d0RRV40AlkY/ThVI6BzqxmiD6jAka4bWJFztR8xkBs3RBxcumGXPIJIpC8cJ9dqnnsBdLJfDlWLfvpn9k03QIU9/XObnw3wLGwFWnxdr6sQMNxJCMpk3U2tT6og6DGylD4OQbGQvqFzm1x+5X11DQIdhQhBbbz+ymVBhVjVTm6D5JsEHYOcXi00aIs5zuDs0AYJhWZW/eimBgkRy2WE/6eH49pBSl80OmNAcxboqZHQS1jmLqZ9yptJ3pbSOXZS1ABgsGOYXCyHTPy5OQA5zHIt+zakgyvcFJm4YcIOD9gKzrpyiB7qJLbzliTHcimuIoMfKfzMi82K2rsFZ18glgRnm0/G1I8Cgnol2qXjkJTJq3BgI46+aA2ad8sMWB+3L7J9dj/nQJrNaZcYZ5IMhyHxeZRxpo9brURgzt9J/Qj2hF5gv2ovJXo+FgjMiLusVpsi3HKcYyUS36dKj+f4ty0kPdUklcdx52ogQ7K44=","kid":"Qe8D6lfZ5/Y="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_030","notbefore":1649973600000,"notafter":1713132000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzuWkpSJGbVsp+E2UNf389FyOI+S1\noE2U48ZdgllNRQo5KJ9TCmLL+U+eRVmId9es+oj3BS/rWfQR1fKhs6TznA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUAj1HEBf1NelaSBuczWgaH5Ch36UwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDQxNDIyMDAwMFoXDTI0MDQxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABM7lpKUiRm1bKfhNlDX9/PRcjiPktaBNlOPGXYJZTUUKOSifUwpiy/lPnkVZiHfXrPqI9wUv61n0EdXyobOk85yjgeAwgd0wHQYDVR0OBBYEFA6IIFDXpLz5r7sQnjnVOJ0MgUafMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAUeglZ3THwmpehcaD5UTX7ZRYeq7cpC0+jkir+N8Y09cA2S39ZF2DZBbE1UaVNDfLCICb4TkW9vHk+YEBjkykz4tSH0tkGUX2acNX3inHIDykff4mkRqwjYRInylc/MD9wrUwtIOslp0gW6CcJta6SMw9wcjaG4/tv5SddMvWUDs5UZyylY8Q4O0rpbxAcQ/wkF1R4S4XZ5KFD7nodJz3ig7b1dF08X47pOYjBmcNBePNq4nf3IS6x63LhWmDfpVc4+75NKwelBrLTErnVhd9EorlUWPHYvhfjalFanUxQmQdlJpcVhAh/BZEyGKb38ECMoHWzat66SDBVHGrM23uliXxDM6sC06ulab/6HWr5DjzUcgwx7UJU5lvGP1Et1b1MJNNd3D1Do7QoWwphwT81BUr5wB9CJSG+iOjRfv9pT85iYcNfpqtit//3H23Duw3K2EwSPGvxpQqSZlwxDCLhLfm49doBeVItCU1qDlncH3ky/D2XgV6ENCMZaQTcyWHeKOzbTMuwINsfc7VfgygaVySmGQjfyNukvx6ywI7Tg4H20gogMStLaj+yPPnsul4N+EOBHsSKCenfwlaTe141+nfKB9eUA1kSApybWY7E4pflmTaDmuHEBYb2sz8nq2lD3DkdiFYe60v45ZOsYwzACyM5L7j3Vu1/my6EQBb074=","kid":"UcuKeuV1sys="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0003","notbefore":1640127600000,"notafter":1703199600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkDtFRuH55y0i+agPf50duCfKbdQl\nqeZWlNSQGiNCmHQ2uwU3uz9F1/PrzwwI9HiXQQRNiHdSDBpf/iBkFR+B1A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUQkSt3NEP7eZXRRnAVGA0zskx+JEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIyMTIzMDAwMFoXDTIzMTIyMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASQO0VG4fnnLSL5qA9/nR24J8pt1CWp5laU1JAaI0KYdDa7BTe7P0XX8+vPDAj0eJdBBE2Id1IMGl/+IGQVH4HUo4HgMIHdMB0GA1UdDgQWBBRM5vCkGmWh+WbL/93iZ9SHcFFJ7TAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAHBYP+J01kD3SOJHli5VwmVFRYBLv73mJOlS8SdRO9IWs7KLTSiMAM/izNYp9gIFkgVsNepmJmrccKu5jJUaEZhkjXbhvhnFZQuI0cvMcstZF0iNIFN2vukr2ssIKeFlmVNXkqjTNCawvpzV1IKrwpqGMthe33N67AtkvmLT+Z8Cf2900b8Pgq4kZj1dUekMtz/RwNnf9nOu3Sr1H0pQ845YcUr01DsFsMFyDd/EEmI3OGBHzvvEAA15Kk4fwTCLY7AIy9Z/cAIzy2pvlMoJpPDQF10/JIV0IFPd/nLtNiulU3eeFrzWzXsaw7mIXLfDaattYmP9zc00YSvgcUvOJc4Y0ZF3XWIrPoMYJMNFJic+AjVf6uOHARVb5TN5GDdjtmzzL7dTRl+2mNRXpuOkgWJA4/S8DVPiGZ8N0zbXLltLAnoKW1j+3/sPxX4Zpgz+kSY7Qa2BrAwvj03jOXBGNxiMPFv5ilLCwqSQudA6STA6VlPvuKwpiUZOZ4nVSMJ8cRyKmac4KKb+vi/O3HsGGbLYA3WiqRs9oI3IO45S7S0kHdLLlXOGsQtQWxbVxRxm1WbaOrqk++xxCIKm4PziwY9BgElDi63LHbPt+zksEOCqcneD3viBlNLoYXOpvap834c3oL8pxynSxLp2UXygiz8EUjZPyVLYHNIZwKvf3yps","kid":"UnanmcgtfUA="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_005","notbefore":1639090800000,"notafter":1702162800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgA/VBlwh3BT6L02+aBkegInc4i0O\n+dpqxTnWaR4lFtdAQZih8DMwQnHTE+FMYh+3ELno/d3jUOtr2KRfMiwcgw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUEn7EY32bIQI6cjr9LsydaBRkYLgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIwOTIzMDAwMFoXDTIzMTIwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgA/VBlwh3BT6L02+aBkegInc4i0O+dpqxTnWaR4lFtdAQZih8DMwQnHTE+FMYh+3ELno/d3jUOtr2KRfMiwcg6OB4DCB3TAdBgNVHQ4EFgQUmoAU9xV+MEtzaiWTfIByf3qqNNwwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQC6G6FD54QaC3FBbQog8erXva9jokzjpUynW4DPLMyWQxOS1PlgfeakHADREVs0Q2erL3P1+VRxSzk11Rzss2lztKGU6r3G0EvLWeXT8C6FjWKv+Ej7tzjsWo47JC5cqffYOcDJWx/sAaBNW/OuTiG0SVSVjI2p3VTSPmuC1oZQEKvtqOkCgD4/MClxmVijOF0p344xh/l1ggmoqFZPupyG/lR4Ixx60IVUoe7HYLJrjGX3XxWVb+3CMVqIBUmZNajvxuDigdtMq9gArwymWK6k9yqmlroQ05XWt9gI93uLNJLnZmHrMOvXLa8lp6XgxUmDOYjvFhIWCCh1PO+nxfb3TlxKb1f1E0AmylVt2s3+/7af1RAj702f5aEscUtK+3OwAc6AfUo5x1HsZR9KCm4ZVdHLwTA01UWePGMSmuUTsaJUGo1PY+soNm26XcjFvU2SMHodTPb5Mj87ghAyiMbyb3KdNneJoQ4jfXz26jeN3yo4Yw+fYd881UukDwq6sG4PoxHHWGrkLqoZoKYznegkmAyLwZE2Z4llH/JQ8WWOm6uo1AqovXzMpAYA15o6P9OWFnXv+db+L26naLjWnuOYsiTqfrc8lcdzEpKqKdTMMfPLmhHcL3DCYJi+K373AvXj55vzCkWUr6gM74xttGtsnmuIcXsfc6tLw6QWlJv6LA==","kid":"V2i/L/Yb0Mo="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_017","notbefore":1632434400000,"notafter":1695506400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/\nMCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUGxW97yNy30SefumeNAP3zZwINLMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkyMzIyMDAwMFoXDTIzMDkyMzIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/MCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxaOB4DCB3TAdBgNVHQ4EFgQU65Kf02Ri58/6NMKPr33J+Wz8lrYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCAD7IAnsIa2VrGdmp7kv5Tj49lhY4FgzphvUB8YcPGPy+EtrAGi+uU1hKT/nbGeB82f92nj12iQUF57gwRSalGAUvlkz4c22L9dt5pla7u54TI08GPOmR5wUs8zixYaZDjAdNr+WbfgbDzqifwlhrjIMbKwCfW22187hxcrQgD4gVc927EyruFmJxxSDNJ33NxFkZ0uXS5TMN9gWLuI+xhcosLeW9SlwscLI9WNqBigzln/nLAHYzBpS+lprHVOa+jJzktlJbATB40BCz9jpGcCDgkUTCNZ5z3pOHas2rVm2aBLcHVttVbps+ynYwyWtSI2jr9oN6GzdyS6JZykxvqGoZO3odhxe61ioVhjyhH+e9mQIvpM7qJ2/mxUFp3ND252wmnGW9FuzbFamH/SGD6LipPVyXK4oW2nxYcN7Fjdc1w/5rHXz3sYfIGORfrumSeRnfIdXglfsQi+T19cA/kwbuGagjGHntN2bnZP/FDvs07PgixNAi357BAAuwpHKMHiwXSjTW4smx4+agRVIlGZ4zuEQXLPpFSwW0ktPeLdr4DRtfL8cRav5Qs5TrG02c3lJP/PQAnpXpbGBImjAmBsat+0m7nuBU7Ix3F/A5HBkSlSHUgvw9Ze3PZUxw5igsMm0eEcd6h3hhxV8HZcS40I53y9l63gr9j1Mas7BfceQ==","kid":"Xo78qgBEx8k="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_014","notbefore":1626991200000,"notafter":1690063200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZ\nmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGjCCAgKgAwIBAgIULSQWphYP//zk1JQmpv94dIH6cmQwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcyMjIyMDAwMFoXDTIzMDcyMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHqOB4DCB3TAdBgNVHQ4EFgQUZprkhn12tER7SWBEtD8mPNDNmK8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBCJgkoi4nyqPEXv8VCIXzO47sLWS4GOrT4eQ9NjEBuXqkCVWwMiQ+0PPiNi23QWx67ZK6DYUQJUOHAV8VRKZRK6G+UHRWX76hk00+hmW5qL7YT4+Z8RsXj8TA/DbUTXwEeSSinfQYefLoC8J9G7vTYmS4su0CaG0wr0qsSOMKZCM/sh0DUCNtZTpzTspDj/i2TPhTNhthyG2QWFKnTdQruEyT3XC1disruo/H0tohKOAmZhqXocdKFTl6Ycbn21A2Pm/xJRh+W/T19bFF97Z+i5T7CfS4Zrf0VQm4ZNrUv96gwye532d0QQ/6JZCTT7aL9fjEnEzkQdtdYPE0051HI9gRKmW6k++hWFiokhcarvWAsNkN4B4MIzTufRm92hCbzFh5IvsHYaaAUsfEMDsrhFSkuZ1swzimP2AQ38R1O0Brb2pls3sF7SAc3j5LA/bXZNhMJ9iBroc1SV7YC6Vv1DZOHTumSLw2fvwDt358sEicsCgdpzpm4gKTOf62rzqGiNpKWBbZW2mJvuv6WNV5C0/aW7r1nfuJ9+qSd2SUrZUFceE4vpxM2ccgsodHnspbSo7jKTeJ7l14rQn9XvoZY3E+YFcdbJQQeY0nABB83acJw1PVKfVsyt9D3DLwWXEcUcwUGioxVwiHR01VyrB2FBKurrXYEx0PglSI/NZBL/w==","kid":"YDAy+yvD5lU="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_018","notbefore":1623362400000,"notafter":1686434400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjH\nz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINRw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUW6BjdX2GIko8Yv84sS428c3DH6swDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjHz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINR6OB4DCB3TAdBgNVHQ4EFgQU0ONM/OVD0tP9BuSIGmIZRrPdEnEwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQA7FyRe/36WDJi/2FU5cpnrV8dXpZUHEGzHRZ6vaZIP02S8EdlcDO39+amGmv7HrQbcLAh7tmPhpii7DylowyjvnjBFc8cJtn+ScbMQ34I0yokOvtFJvyfSBOlK5udIyFrDjdsfqr2BNx982X4dK0UYQfGCufppflZOfaqv4Y8A5lBTRXAlXPJBSZ/GMvFAN5mesGhnPD0nFNnpOHGfXG5DkNE3gBRYUyswIY2d7vdhCNiCH82fSW4mzPs/oMQaI3Hw8IiAgUwwpMqXBHs0Fxn8d4WxrpGj07r2WjIOVNk1JV1OHKvHfuVPS1roZ9pNNUkoKHf1h46f1nWczUM5jmVy0Xvvw+ZhvSelRwC7PQ74BUoPgbYzsNP0SvGOnhJQrhOYk3GSIf9EaQxklqVT8WREoCDNxfRmNYdCJzQXr/GZ/Eg1+6RPvYuQWgsB3SYgdVQz/pCRHCZvEjU8vUL2lwW4wgWlw+Q7OrXrpW1JOxl98zRRSpWxRrlE24crzTJ31hM7n8WFSsF1ZNnOoAhy0nRxdeOkpDcEVyoxauuPGHUCNIMmvvPG5psrO417HLJGHf3oLkKadSBK/Nn9u0YCCa9ypN6LRJ9slwxITAsKTrYttjEgNAisYVLojtHcCkAr5JfqL93rFYI9BYS2x/k2QGTlKM9LoUUpzaYDz16rddiaSQ==","kid":"YVpBYnLh1Hs="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0001","notbefore":1636498800000,"notafter":1699570800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoeh3CrNm35gaheVMze+v7L5DLRvJ\nSyz2yimQlMPUwNJ95g/0wI7VdYnuZqALEnMFgf2MxB0y14PKwDTdmsFBzw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUJFYOxQLyE+KpwY0ONOh2K3kEyYwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwOTIzMDAwMFoXDTIzMTEwOTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASh6HcKs2bfmBqF5UzN76/svkMtG8lLLPbKKZCUw9TA0n3mD/TAjtV1ie5moAsScwWB/YzEHTLXg8rANN2awUHPo4HgMIHdMB0GA1UdDgQWBBSvVt3VTF438kOOMNhDVxezJ9kiDjAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAFtVxRCvoRCgLbiHwE/j8odxsgT3vt9isAZPtkfH0/Zd+iPdfsnPyXL2v/TKu47IBXm3kurH1UY4ovq0N2yJmOkSS5Z+zflBCOtaRY/R4q5HbK9XDe500OTARIl2w0SVQXQPaQ4sLuiW6KyZEi5rzc5L9Hylm5Gu5aYoozM/rRanoe5CgJ1gCBPkkwW9gDqKictz3g3+92gOBdMckylYV+WpUmgHyQRaBaEGJAicDsI8ZntEiBtEbckKNtz6O0ctYR+GxFj55b66n0BPXE3vqV+kT4gz6vOUFcZOdP4KVW0bdCPNAolE44yK2M0ktC9skVvBhxiZXDuZM9Zk/MAaSfq9uO5C52bhF+LYP9T2Lgp8Au65JE7if671AZ9qs17Nz9ZQg4ialE2k2L4CE4FEWkeuF1MhyGlSD8ripcluctPTB6Elvo3ffBPcgZnSwirswGlc26cFwHciUyPe1odNexgtzLFS8EGgkt8kPCXzrAtpuVD0YGg6dYMHNs1fLcDAyZNJbI/stsJ3yX2As6z+9JHzWAwiLCZtgFs6lWQ+7IyRperWftWOoT+3lwCK+ul2IMzmG7KadVFJ2Un0sAseM1LNKEzRaa4avqIZwAJkRUBN4us0l6sKzYeeZ24u4uNiYFKeWHV54McVxQBT9VNekxL5cvo7ap9p06nzfjiTYuV5","kid":"Yb1a+1WV/1Y="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0002","notbefore":1638313200000,"notafter":1701385200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuFC53glgMbuEwfdH97ghieGzGlgx\nMInMhVzw4VX9NYrIuf/M6vnEofMFUuH6LIwSBQeT2ZpgonJ35a+vQllmrA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUBMl2JoBkz+RWi5SWbpnyalMO3VgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEzMDIzMDAwMFoXDTIzMTEzMDIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4ULneCWAxu4TB90f3uCGJ4bMaWDEwicyFXPDhVf01isi5/8zq+cSh8wVS4fosjBIFB5PZmmCicnflr69CWWaso4HgMIHdMB0GA1UdDgQWBBSDC2InnziqUQroYRTeKdlO3DLQvzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAA/VLMVc8tiJgpKRZAJ9kZIWVgjDcCJT166RSzuSfF92dQy6Z9F4GdFoh1Je76gY2f9fkQ6sYuJDO6FTzstUbKDI1qzGrfKFeFHpZziXSz1Oa+fZUAa9GjOdsIyLDjszoRBLGB0A9p43VK2cGI3GBb3bu0WMLBcPmxm2jG8WpIK+w5+xpoDkv7jjIwFVnVvepgvleB6vmFMqR7GinJMp6pejtEYSstc/0InPor4TZsjzPftXgzlioapgPYmGVTQSVer6zGITALQCBWYnUJFd5YXPD/I6jttwzV4b+3t0OXMPOitBRpLe7Uc3VCTff4ERj3O0EkyYkUwS8+5c/Y7RrM+UN53FaAodfBRW6yT4VZ+YJ4+Lzr5CHsVz1yaeYwLKlUtqRkLBvUBwZciyKhtRuWG5hKSKSE3Nby/4OViIOpUgR0pZEUoAbGTXWEuAFGem1RGsMtsSU4lluqPUCgQ6N1aTdcb5pQZ334kEYdPrd8sYusZgxEo7FrJ0V4gEiWtQRdZDKNNB/dHOquE7zqUCnZmCIiBQuxsK/Bpux382DqaR/4YktRXpY9EAnUeqA/+33gL4C3kUUJAgSWXCuGsxCN40DZlT3pI/xSBbIEx1JsZp4LHJLSbiLa0J9kGe/+2o8NvEbjuz8NGr+fi9zoE99vaUkz5eKt06npXdi5GPjRL0","kid":"ZsDoB5l3ETw="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_001","notbefore":1623362400000,"notafter":1686434400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjR\nkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUbNtFh5SyNNW36Tj3lSGsVZ1yzJkwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjRkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCqOB4DCB3TAdBgNVHQ4EFgQUkqfVrNfmsMs1UB/NA0C3KVEx3O4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQAhOMLYhWn1iV43jduVRRivgVT1jYwHmouj7nff+S7gVnxiIlX52jc/VmQDl6xOZjBHUBiRTRqjan1tdH1LvBfg1HoZWv3HaC5HbfkMu0nqItE5zbFwtJGsUpHRTSP/wrjqL83o5akkR8Uw/iIYhkLvuEKH3/ZqwZYRwOJ/NyXJnKgRuHvgsL0zbwf5X2EdbqaTtDDGHHCbg68o8CqkQ/guBP0jKHXBFWgboMQB2bruquGqVO2xKIZIU2E3sc3dhNbDYGD3KfgJbdFtnbISvxaIfnCn3anZtQgonSsHc0LWIpgobY+NxXSNfBKzICdI350hhmnHz2NS2VtrF0Xa59kZd/WMPcOzlfKi6aVI/Y+LcpujeO9ujlFGNU6aMxi2s9RWy31tjWxsOmr/sbEKF25YGuTWwvqe/MgXzpbTF0C1lVcARXaBVT8Q18nNbLLK/VLAtzjLYTblFM4zdXA5ZnfCqXDqZZathkyyf8aY/svDELxROVm72F9GnYC/OqnGeCOed+Iscp8ne8HUTgT0iNFiAR1pRz25v047QFE7G7jwo4YTA+ynwCxnVaoK3pkyfIiXstyPxMpu3Q7t90br/mAPDCWDHFpvxqvPcRlMpd3p5JcjiurGreGbivgPdJYGRPbWb/Kwp/99ACqZFA8FaGL7aP+ivAO6cBv6DNF2XXvoww==","kid":"e+bFdywyJQE="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_BK01","notbefore":1636498800000,"notafter":1699570800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEw85KMUnYZdEdDYh5hyBfVFCJEUz4\nbhbItd92P5Mn3sXQMHRJ4gCSJlNHMDaehYzYHQQNun1trn9fyQ89jUVHVQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUIHkOe/e5NZZz8nE/r3Qh1delIC8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwOTIzMDAwMFoXDTIzMTEwOTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSX0JLMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATDzkoxSdhl0R0NiHmHIF9UUIkRTPhuFsi133Y/kyfexdAwdEniAJImU0cwNp6FjNgdBA26fW2uf1/JDz2NRUdVo4HgMIHdMB0GA1UdDgQWBBSo6rsZAC0hV0TGvuC8k6tflOShaTAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAHg8WLw8DxxxXFp6XXypXncQyGA4HFmZSMLJKPU01rmjqpLeR+5/gAbRj0OVhQYo0B3kHNUNlA24I2i6Zzx7zKjODdCWaKsZYfBeOttVVETMs+s0X7a2V/9P/uCj8tkYOOxCnKyv7TiWn1rfaHZxJS5Wqooy5IyerATOhueiL9ixorMAqWC5oaqactyL2psTuQWRjYBNtiNJgyjAXxUo7jITJWE+gGJkXwzBU9x1EcFnCoR5eiHHRdjQWiATLEgqcbWrYymgyj6D8o1QHXS2cOWlXxVpb4a1ghXFKRbN8yblgHSB2UE6ipBS/xqcbtycHpwy1Vpja9VG0WR/K4U10zqq0XHXHQl+RMPeKQcYI0qtPKH3yDBGM+rXNiaTnmRHASx5p1fYS//7SK22xIBto2qOO2HoIoNHkI6iYJFPk9g6JP2FBaH0PzaWaX4Qz5Z/TOZ4hfKEOv+0+ZOcIKvguT+DownHQjr2EjsOKB0l0npRtbk9HtRwh0TV1Rv88Fe/ea6rkKobRXBT+9EHKkWYGNgaMrbzNg4JqYOHywAivq/XmvTPwkVpdpplp7/sFYs18U08qL15r9lF5ztwzGYrgEobsdmOYcunVbIBVJ9G+miTc08ezKZga7Wr67l0L2FizmdbWepidnz1E26n49l5PXmkA6hCTjWmjwGd0X1MHlid","kid":"eOvGe2r9RbA="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_002","notbefore":1623362400000,"notafter":1686434400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g14\n4vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUQporYv8Mt3ziR1r6G4s54HzRVpcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g144vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4qOB4DCB3TAdBgNVHQ4EFgQUxhlqVg/2EyJWoDdVGkyJrsY4CXkwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCbA+2eQnPJWMmh2eIH1gMJhggl5GSmOBFKeXyC4jeYQSDRY97/rsDWRXAYtE4DgZQO1cZcwsM4ybbZ+khmb0iCeO/0oiKIux8FU14B7zFksZFxZpbUSAJGD9lE1xRFnfUIyoPL3lza7lWqZ8lSfLuoqoN4mODkGpPYwWu/GC8sR3ynDt2jhrdBcLnos3k47+4ZRypwDnv9FRU4/9fEnl3Y4iK+hUtq83tI5offQETsXIq+VMmcw6zmeUTaMcHRnnMo4WknrSHbe9x1MOwQmADn7ZjYzMooI4TyM/dzo1IOH8iovgMbJP7zxWqp8zgtqZPpDtp500V9yCBjGCQWgRofrBhUojKj4BkGslCZaHHkRqp0A7WOIejCpCYwNRhom3Hu8oClJ0fGcIEIrdybYISYemClnbSlM+tXt9vATf7oMRZgXSGR/9HrY95naG5U7/+eHRgm3qHAJbbbTDHET7ba+Wiq9rnYScChSH/bMN2yLsuBcpVozokcX6k2l69KVzAsVtKCjPS/ISBWHDiEaVx++RyPB5YfbVX7ykJ4SaWX1ED6DLeszCdcLNb57i1Xu35kb1SGh+CUeALUEqBtJUcEheLixnTxJIHG2xq59a560SsZBdMf8r/qYTz9DqEgBXPSlNeHn5aIG/2u0bLrM3Q9GvBk4zBj3C4zWZJVUTZBNA==","kid":"eQOY6BDp+vM="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_022","notbefore":1631656800000,"notafter":1694728800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2HtKUYnSxJw/bgED+2LJQMAIjyA\n+I2plnVS50JCXaIALKstac37wB1lUvasfdvbE+nNbCvMkGPdMjLluMfT3g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUHHuaV60Jmxj0/Safb44HGezp2U8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxNDIyMDAwMFoXDTIzMDkxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMdh7SlGJ0sScP24BA/tiyUDACI8gPiNqZZ1UudCQl2iACyrLWnN+8AdZVL2rH3b2xPpzWwrzJBj3TIy5bjH096jgeAwgd0wHQYDVR0OBBYEFG+4PXS0sdtKNozOKQXcYVDA1Hn1MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAkjEVtzPSxFVMTUece3w7PeM4Q2fOn+MnaN60g6AusxnUUZGHErNnmjxVeU6isLYPB9gCHB3b2yZYXHh8IjMsf570yiDhsWBzwRjQc8a6uQoZSrCXFyVuvAGZ/hXWDf9AIKQrbrg/YlsN0qnhs7x3VsGZ62XHCQCBup2wMdW4VOa76YFgskKITmVB8RNE/r7sQn9tRmGW7RFC2f78v7vm8rshqB/6LFtwRe8kcBmRSw5l9pVMKHYLPW81NaEYN1BB3BNH+BH39rg89FPuuLMcO70Ow+1g7ebD+UH4VbgfhSrx9XKP5+FtQWTsatHdVg6vYYNPa9TR9/9e4Q3j3BAfnIdmhsT4DuRy9P+En9WZmg4NNFUVr8adlSKkiZOoJKSQh9TOavF4Ikvd/BD0S1UdjprApN3XauDRqvjKn4itsLc0m0ctUE5e234CLMbdNJM6ExPG+ukAdtK5V9FXwdyvl0+xVIBY9nI43z50KO5ZeyOWnqwRWCPqZ11FLuqFvoEpQPpx3d2Nc/IlQoalLWXtZYPOiEklhqAC7p1Qa+AG2RgsTxyIaMzCANjCDIFMBzcO6EbnHDPR9L5Xy4wqiLeQ06zeU0YR2WF+9DVMDR5j5lUR5QWFCDTK/B8ObjdsZl/Y9Qd7RoQT9wbtAa1+MpCXk7TnoRGG1HSdhi/yee661P0=","kid":"eUVY16rD2Kc="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_019","notbefore":1623708000000,"notafter":1686780000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEImIFaugzwB5f/VyfQ3KTfTSoukwA\nPVSgHZWrtrc2j4FuAUpw/ObRnA9pBjN/HdUc1zcl9SO/vsCEnHkXhxjz4Q==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUNWO7+/2lmGQGT1cep5petfsOFocwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAxOTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCJiBWroM8AeX/1cn0Nyk300qLpMAD1UoB2Vq7a3No+BbgFKcPzm0ZwPaQYzfx3VHNc3JfUjv77AhJx5F4cY8+GjgeAwgd0wHQYDVR0OBBYEFF6mKwOiAheaIxTCkdVKd8zgd7urMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAu8BaLZXFj9/e2/a59mBrOhY2m5SpcAoayxF3zOkIOt7LNX0QqHuomOyGLHMnAhNALgS2vhDXD0hhs96ZcKaystlMePpYsVRyaYa53GwMrGHiLwFxH5qQNClCcktAP++wCcdQXzTyZOn9/GNdmquW1PNMLPCEfqlnzWawdpITr+CYMXa9R5BEMmdX19F41HcoPRn9/X2uHW/ONmBywTwJ3s0U8F5HF21buZtxVDvX4ey+qINBru4MiGwgRCsklS9kDbl3ODUox0lwhs2VgQzqjALF4xYgsdN2LJezrwAiL8GMRAenmX9eDdgzMGnjKFT6yW8BCrPsyUnM15RAou3BrwIp6oxXHnR8wbeKG7pzZZY1J4zk4yYyihwxguWbUZGksJsNAQoNdNHBZtc8a7Oj5onLyUIetd7ELXxdk8uy7WVFeye5V8qJRhWrFyhWWFscQeY8GktefXiGEh6fxGfRU5R5b0PznxfMiA3olad3s17dr+jzqCM/hcY2FmUTjYrSrAyrhHdmCYIJ3US71If74UeMs6NZnQRRiu3tbAX+TiDOHsEHEIOHldbyQqFfclyiC26fHTqcNfIAxXPmPDQ1jpEmhRjFDlOWHoSnzsGZi/wa1kmSb6+2uHgUP/C/O2oi+yAk8GpwpEi8Sgv+HH/p7z0ympQK8IUOG/4K3/urdto=","kid":"fGLuvg6n5wk="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0005","notbefore":1643756400000,"notafter":1706828400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuJH/fgV1ST2egWe4mJXWL6e5pu33\nF08BzsYkDCiHKFIGtXj9LuOm+d6xiBreJ7NPzGxQP1Pt/UzRAnDsjmsAgA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUcnYrQMFgK1Fy648tt2Nq9kP7j7swDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIwMTIzMDAwMFoXDTI0MDIwMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4kf9+BXVJPZ6BZ7iYldYvp7mm7fcXTwHOxiQMKIcoUga1eP0u46b53rGIGt4ns0/MbFA/U+39TNECcOyOawCAo4HgMIHdMB0GA1UdDgQWBBSw76s2nUSROAzjhc98PGBEguhsMzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIlg9HMtb7I0/zvhB/XZMHBDqRQ6cDUvT/NeVfavcNqpJ6ZAxA9iIRTObsjkryqLfCAVzclXHUydiuX9K+KhjYVIKJQqU5Bng+GJOyXUYIy1RqKGVdKxDpMFPNQwzXVAQTjDvlQAJTQLtWyJnZ2Z3TNUOJXfO+9Su2MEr1InFHSAhgh+sx+R9uFMGcyRdho6VlxbyMlNPfi+UsT1+9L00m62kKXekd5Pm6tkj1PgRDnbAfTKowJMDxGgCOTvf6+atNwdYhO1egGREWVv8jPmH+WufBLw3602wzbQN/DJ7KEphVcz9vmeVt7r9TWMTmaqObgR1DIPyQHOssWhfA9n078dRYEUtJylDk8QWBydS3VTzcLBgJA8yroEZmQ3Y9nozweLrYaq5mnmUd1ZQ8HAdQuasjYJpZJSOmBuJIVA/oyGNAjJ6JJQFLKTnkRI0w+lH2nBDx7/ldEKXfWvqUqjAH9cN8P9nphBQ8ZY3C/w4F2R2naCf/WY1xpGSky0g2XZpBBPjluGKx1D+s80onWTZnQFgYT8RIaJnxEN4hgEG+/pvPH/QUfEnc4nek1nnXK6/l5n7AUeGg920H46+MTFNax8qlxSBvbktGckpmTIPW0wmr8SyJd9pD9W5OPhupo/JPfTK/hMKN/2jlWR4qKmuxEOiZkOCnOe2OjC4pH0JZgv","kid":"j95whXY9F8Y="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_012","notbefore":1623362400000,"notafter":1686434400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQ\nWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5lQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUdhAMHzJmtfI9KC2HeZuteJ8+o3kwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5laOB4DCB3TAdBgNVHQ4EFgQUowemG/S5PIzFStnYia0U6RWU2Z8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBlqQgxVgPA/EwOPMNUY4OJm4vGvxNYc3LU6R5/5q7hRwa04yTuQOwyRzTcMgJ211G79lsFwiprgzN0kixDYRrwa1NflFQS7Ygi64qGa1KZqDziB1SqDYiHXXCkkTTe4H/vkpZkH5U/+8jVUYI73q7MYIskxgHc1OZV1oKMWilU8rSdWzDQHH6WRk2BUuTORIsGpT0U8eBQQUaNhY8V0GDkKLwrqIWEbKC6ylLa0pGNYM8QMHAvV1SurqdwohC4/6ToNzypyYNctOJUTcgCyDpKdfQ+xWRdFDqje3XUdIRByEHAb7o9/F6H9NJoN0gyVF6YyGAYLD6zBfYhpnPXNxDCa7QltXogVi1gJFglsAVrQabTMXsA4/1+IOrdqMv0Ale/jy+0gEWZOHzUquSQTpxVz+Gj2j9ZXLJPzRSHg7O+LjxNON3mz/jl7cL7wjwbKqnMpYBALvedavnDetISU46qo2QwPO3qAwWF+3/17Mcb2a7IkhlHVKxNgGOEpVAZOQE8ritoVZV+B6xbpnNY2J68vZFqYy/BnkgJ+aL/9Uq0AqA+1Ivsjd2P+Clk5qpm0ZnQ8+CzaEiNENBRNE7aDFohgkezqET1gilIkvGoqDiahw/3hbr1BF848++6+ES20vUSxK2Uga4JQ0MGaKaKJyyAwwYO1MJITQosvt1JwtgiwQ==","kid":"lrxgMs2Duac="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_021","notbefore":1628978400000,"notafter":1692050400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1PApTQ/nFA6JcYUuo7GgP+gPSKf9\n8BQh88IKHOt/yNS8ZrjxjL+lVY6EH4yyQdbQZGqS9d2Se5dxNwx5C3jxkA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUPUAmrN9wBn+eVuHqMp8b/blfPPMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxNDIyMDAwMFoXDTIzMDgxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNTwKU0P5xQOiXGFLqOxoD/oD0in/fAUIfPCChzrf8jUvGa48Yy/pVWOhB+MskHW0GRqkvXdknuXcTcMeQt48ZCjgeAwgd0wHQYDVR0OBBYEFIRbucEIacei+qS6DFsuclGQo2o7MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAhYhTafMjVKmyAFJhTx703KE211fPRx3YlWid6JeUNDIuYTQfIC0yPlvtaFM4Z9TVioHcTwweEfqNi10sGVNbWmWAk1RZhay01VCzzsCVscNmi2/7n+qAIHZWgLyAOjJZ2jVDidC8MWGQjb/qdpu1zh46AIiVmfUfhyvBfXP7dQKgx+nPrV+HhxwuaVGci/KccFIHoOu0rttjuUfg2HCQCr4CjLKZ+RHXny6zjfD3R9T1scndEkJot2L/f0lIIZez+oTx/Wo8ivNoy9C9T3py6as2AChlz1rXSNPsdJZ9M2pcCk8z1I8fAspOu+uEevXPig20cxBz1kJzHrAmvYPTB9JTwZHqek2wriAQ/7Oy92hWxr/6tnkdPC5aKUz0nEYBvJWWq3qO4O1GBXCBt8VdXklgPHvZCym2Yc1XKMdhtMVNpOOOZV6SoSTjoi6R3Eu2VSMQCd8RKYc7DjLss0FF6y5qYjBqmizjV5MKTxtxKFA62QUF0jI/9DypU1Pk3Vias9RpFkLiHE3UcVdGMbTvAc4hwH/bkOtg0W7lqnGsJTWdc8MbnZ3blVtrXylveHA/IXgERhyI3J0YCg3pWjJbEwnEqltUa0n93o0S6sDv78lt1uKAMre1+JUQ0lNNHldtljV6dvcQ7R+ebs3GEZUyDI20fmhIcNZCtmOehZm5fyM=","kid":"mo/w8S8rZ0Q="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_028","notbefore":1644879600000,"notafter":1707951600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDFL/JfC54w5DhacEkzUU1ni7QALe\ne86PYN+pLto0V+CXCRch9j54eDQagr/xGcyP3UBThBUnpqtEG/CtBHvExg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUPtrkrg2WkDHMSTavB6nBxxSKE2kwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIxNDIzMDAwMFoXDTI0MDIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyODBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAxS/yXwueMOQ4WnBJM1FNZ4u0AC3nvOj2DfqS7aNFfglwkXIfY+eHg0GoK/8RnMj91AU4QVJ6arRBvwrQR7xMajgeAwgd0wHQYDVR0OBBYEFEK7//liPw35XcS3wODcluwZM1CNMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAdxpY/iCo8yx9FLLRjfApnDHj6yQJ9yTEtGNRCVcPoUtFQyM3fv1Ep9oRUpTcHYD2Kt857fLENbV+C8lwAYjl+QpFViyGXSDLdyLHN6ua/qQXiKG29bT9nmRZIn3QWUrpagVcPySSpztw7d0/sfAFi05VmuQZ2UUTEhsKiR/+eoM2JOPM/m27xwsKo4g4ffSDEOqb4VCGwtKTBrKg64MHcXC0zWsaouFZNeZEOUOyXCsSjDc0zvvYj4llgC5bafbivgSRLGjO1M21vhQHr2FZDh1lokIbIo/PHGDunxVe6rbnIZMMrrhLzgBwUQP1Ihco1AG6NPFwKAxDEyt/dVPxIu5xDUjDujk2L+yf7c3tcMCXjktS8QG0y46FftIKY4ZTzPE67iWYDtRszqX6eNzkUhANjDs6nQJiSKbQLgQn/kalj/qZDZC9u/Xfpv5LDlhVZraDJ6vOXFMko9PlpOHWelN/UQL0yp4XIKfZNBZPq9lzZP6beujHyz6dMdDczXy9Xo+PZ3rNtci9UYCrpdhljifQaj5Q76cPXpJUCXFsM9JyQ4uXuGA0Q+gCzED87eOjEsKd+NFQQGpMqdEUdzZnc7veoyqOwUiwSGXaWDaWISPNNnKBQ4sAUtLIlQAYiQ/hxQtZu6DBgW2c4I3ecryp/PpJB1+m1Hvzf5TNJgHEeag=","kid":"oGix7vDtlq4="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_003","notbefore":1631311200000,"notafter":1694383200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5Pw\nahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUaaZNZoiS7up4kcKvogrzW8iwXbIwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5PwahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzKOB4DCB3TAdBgNVHQ4EFgQUPQQuG8z6nMfreGSJOz8MdoIMvFYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCe8I1wV8foZkHBp6MM5QbHFNut+gQ45nTjZEOVF2wzAZz4xa48Knhl9K6JdeBQhedQBzx3jKWEpl9A4ycPbwCwS7+HlpDzC23ZaesAGPhR+VAEyYMUEH8ONbsjKIA+rg/4OIJ5byPYxnZkdrSNH+NQzEn8Pb5ZAW8DQXeJgJ/x3Wg+Ogd0iM8yNd1sMMQiO20C4eBRaOtJZnr8W3xLRYaD5sxVHSWRkkCVELQXAVcugmiL6u9MR4KgxV5qWqi66GqHI4zfbe1H+EQ67bnH17YZ+ye0r+FRi7aacXy7Xtk08zQCqhDFaZDr2H7wTj5NJIuSnZc83gAyV+C4QxrkYIbVqPVJ+bea2RGvXYrcyH9LrZdPDJqylcKOoRpvSJoCoyJ40zu4B1tiludT2HdTwN5wjVLmAvJfPT+ZKnVXOgwabm/95Xs/Y8fOcfaRzH44p4j3e65uZ4U1n/gUnya9iaiNpBqYq0c8czOquRm1CJVf/shRkqmQTw7p8BaMygYs2VrS521LbiEeZALpG+sdoVUQfMRN8Ii2+RrJVu+AWUdz93+u98TRDodTRKfCIJq4/rDo9yepiKSgUjaxvvgDszQLcqHBFzHB9Y/Gv+l8YQzIKK9ZxFVEjEDX++heFPYC7C+LQToZcn9CKZAC6M3D7rRBEZ1ibMpVyEW4YXu9tu8RfA==","kid":"pe6raiG2dWE="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_23","notbefore":1637708400000,"notafter":1700780400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2U0nHQxTR9PPb0QwY+YS7qJs9XDN\n5a9fc+lCqTltrFE5D8kEZMRFY+qNhMbo5JY4VU473btztC0zWP52tgFH+g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUKCG1aBTkAAn0E/gVD+HRZXrMgBYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEyMzIzMDAwMFoXDTIzMTEyMzIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATZTScdDFNH089vRDBj5hLuomz1cM3lr19z6UKpOW2sUTkPyQRkxEVj6o2ExujkljhVTjvdu3O0LTNY/na2AUf6o4HgMIHdMB0GA1UdDgQWBBQHXz8rvdiW65BcQaIdyRy4gzUNXzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAImn8pvfl1UnkNvTynXjRrI00kIdbn9RsUe8lKMyyOhhfV1Sia2on+Gd5AFk+IMyunMFLBcl18H9BHHfuPMVR2BleZ9u0kSboF6uYennSwqVcpmGwJSnzl/P8jq3gDz1iAXpIQoc+PtHyc0c0BJ0/TrfEx4bBoMXwRz3N3r+zaa67zntv144zbBTInrDQC62ZCO/QIjP3o9rtZnI60YscEWL8ul8TDHQWiMU5hZ+X5hpb+vkMSi+c7bSiIcMFSd9CNnaJIJ1AC1FCH62hT9edCY+EFwS5I3+s1uMW2N+upDCS8aegXYcpVqnLdvwDA3sgnPwn2cOsPuLltHA//OKIF3cOFnMPIKnn3/zM5LilxWZYxy7Lg0uwfoOMV3SnWvxv9aj4wQOxljwiorL/qw71uQHSaAEphKS5MZVS2v2nV4Pj2KG/eOd9axsTy8GvOx8DbNdGxYDnzu1zH8mkWnQZ1TX6gskoJc5U8NTcHseUTj2oUYzLLe3hgawK3gvmiugHCotj1xCJa2+qlBg2ubFYPAiK26FhW94i9b6vRuNbhc7OvRoQahdKoOvPSO/SuTvfSxxGI1XYw76ZZxwx7P5z4hb0StCjeCqTuAhWJMafHzc4jNHWnb11ggF9+9krByzdgNj2dWJqWjg1MSN+/9CjiB961SvvmERhAsXOduh/rDl","kid":"qrdfSzqcjRc="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_004","notbefore":1631311200000,"notafter":1694383200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+\n1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEIDCCAgigAwIBAgIUIxJMjNw3dr88EcIE+hNISSiImkwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMKOB4DCB3TAdBgNVHQ4EFgQUW8d5IrarC3lBI/Bj5O53KmwrwI0wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCalwjJDDOjgInZboNfXmrdZjrxA7i65O84bWW1rnOSGZwBpdMcdKrNDiizyjklB6tSKuLH0fllMPUCMd2Umz9zTTKJG1usxQ5Yaf9BBW+g8Pwgn/mNRprogPK/VXFdLCOCmxr1/y1FEPgnecD3oBFhm4ojZywwWVrcUoPnRvqIfJLEvzvYais7y9PqkaFqW0TNyvaRq9tBYyFkvZUQuizKK10nmIXLzg6JYnSXR6awtRcZJs1eF53UQynv0dQmVZbMl/JM01y+sard38byiKzQc+v/ANI24zLHWw9iJm2/jlFTch8S2eazMEAe8EvpMqzzSOcIrmgrL/r9CQo00cFFkCGCIZWnHhHEKv+uuEPVilSJC7ijM8p5npt1PwqCCB4HWcdZEY1oCu3zjjOIIRIySZmKoailNEV4iZeAw0D++wkR1+OyywIebkaRVWKk/irrToYuvQYiTDlh1yIh7mmrL0/lULdONjsawOh/s0/vxKSyD+gkMVRzxBax7BhT3DLzj2L7E/Tw5DNL87k7zmlxcHGW8Oa6sIJwKRsTg/76frIf21u99FhfqeWkhfhZ5yTzGiJR6FquZ/tTrlq216MqICXO4QN8/p8OrP9foTS2+3FvWRWxk0pBEVZget0CtMP3PpZ+IC7gwp3wALhWtZwwY/64FUl9ZLZqId8RtbQBEQ==","kid":"rLMiGt6uB3U="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0006","notbefore":1645570800000,"notafter":1708642800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0uciJTqR/3fxFNZ9yeUUoPYUx38Q\n8OH1jFEsJqJvfN6jrx+s8h12VqrUGv/8oBY+dECMhySMeviq8Yg6kT4r2A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUdp9CXnOFuqVuiiT7jg9FodyeACYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIyMjIzMDAwMFoXDTI0MDIyMjIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATS5yIlOpH/d/EU1n3J5RSg9hTHfxDw4fWMUSwmom983qOvH6zyHXZWqtQa//ygFj50QIyHJIx6+KrxiDqRPivYo4HgMIHdMB0GA1UdDgQWBBToe/OectWamtD2LONpMXn0znvh7jAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBABcKi+7I0gwOKKEb8WCP+E7NTzP4Ts0L3F+bGNdeFASZhcQQAMFwtPoJOfSsO8I/9p2uXHMjawyVXlWEanb5oHWLfafCrQmROIQQQBHfuHlD0N+YdHFe1W1ItvzDeouUMUndfuBEd0q7KcdmNnoH9EnPdEt/vqLU8Pj1PKD4lI7TAL84jyxYUQKGzj/D6dKsawa85Xk6+jEucHVJ9lphPFyXatPRHf1bebu84ybCwOjuY9V96+ltzFQowlkaQO6sYw22btDlsjldpwgLBV6jhZVkWNz8rWR3Um+lX6idz4BjHnk8GQt0HKEwQdgJbrMiAykkemSghxB4XYPn6iN0nlgmTOGPJTODgOJxsvdLyX3+5gIX3OOp+3rFUvH/1LKlYGis7OSeMxDQerOAV+5TaYjHKeGZhLkJpgRym1pofypRa2gX1dVL2Un9cn9tOBmsuhl7MAM1gHbeBLlw5nBW5K49vfAZhMsqQ5X1PvyFzHVPmnhQlD/syAKzuSUABona+oUl0zkv3XxoxWZx4QZXiWR3gCfCio58P1DEBf0Y4lehMuNJ7b1sla6NXRSY97w1Usg/biDxJR5BbkbTU/00Q9zICVgtAYlV2CguUr16PG+o3kpxRjkjvg+Fo9WG9dtOTycZPNcWEAscdzpzLzmtU6iXQEkIEyIpvfWSwTAjC3iE","kid":"uy59WoRKBUg="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = IBSALUT-CVD-SELLO serialName = Q0719003F OU = SELLO ELECTRONICO 2.5.4.97 = VATES-Q0719003F O = SERVICIO DE SALUD DE LAS ISLAS BALEARES C = ES","notbefore":1621857600000,"notafter":1684929600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbxlQ/UTz0AxZWF+xQs+w+xveq5Ec\nhe9zf16LnDFYY/K8pZ6l6sb2KlXw8Z/kwopzzbv5LCX1VxLsGO9Rs9OzLg==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"/IcqIBnnZzc="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Servicio Extremeño de Salud serialName = Q0600413I OU = SELLO ELECTRONICO OU = SSII 2.5.4.97 = VATES-Q0600413I O = Servicio Extremeño de Salud C = ES","notbefore":1622097780000,"notafter":1685169780000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEManlPIcO9J8UBpHCAbku/KkAfiBr\nGLIre1buTIzhhoncL0YIO+DQ9uPs6UfzPKXzQq791V5I5avhmpQ6j2zFsQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"3IsdmTYkAAM="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = GERENCIA REGIONAL DE SALUD CASTILLA Y LEÓN (SACYL) serialName = Q4700608E OU = SELLO ELECTRONICO OU = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON 2.5.4.97 = VATES- Q4700608E O = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON C = ES","notbefore":1619789400000,"notafter":1682861400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1Tqtnz\nC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHXDCCBwKgAwIBAgIJDDdEkclPCGsoMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNDMwMTMzMDAwWhcNMjMwNDMwMTMzMDAwWjCCAQYxPDA6BgNVBAMMM0dFUkVOQ0lBIFJFR0lPTkFMIERFIFNBTFVEIENBU1RJTExBIFkgTEXDk04gKFNBQ1lMKTESMBAGA1UEBRMJUTQ3MDA2MDhFMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzE2MDQGA1UECwwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRkwFwYDVQRhDBBWQVRFUy0gUTQ3MDA2MDhFMTYwNAYDVQQKDC1HRVJFTkNJQSBSRUdJT05BTCBERSBTQUxVRCBERSBDQVNUSUxMQSBZIExFT04xCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1TqtnzC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfKOCBKowggSmMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBmgYDVR0RBIGSMIGPpIGMMIGJMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE8MDoGCWCFVAEDBQYCAgwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRgwFgYJYIVUAQMFBgIDDAlRNDcwMDYwOEUwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBR0F5hsHIJ6Y7MLOV4IRJYpbxoKgDAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDSAAwRQIhANiNJAq66hiD/nftp0jcuZQJtkHq0LiGFxpWmKCnCClcAiAVLvoNwAKGUOPPJ88g/UPTytviavcuFfaN9F5Iw0fVhg==","kid":"4Qmniw7B0gc="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Gobierno de La Rioja serialName = S2633001I OU = SELLO ELECTRONICO OU = DIRECCIÓN GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS 2.5.4.97 = VATES-S2633001I O = DIRECCION GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS C = ES","notbefore":1621587300000,"notafter":1684659300000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqF22rG5bDXpWn/tKy358h2KwYyaS\nKzCZV0HJptUQq7sWxfeDE86HSoebBrpOvpjhZX2/ZkTF/YRlkh0ztnkclw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHVjCCBv2gAwIBAgIJSC0ZeCXmMXCnMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTIxMDg1NTAwWhcNMjMwNTIxMDg1NTAwWjCB+TEdMBsGA1UEAwwUR29iaWVybm8gZGUgTGEgUmlvamExEjAQBgNVBAUTCVMyNjMzMDAxSTEaMBgGA1UECwwRU0VMTE8gRUxFQ1RST05JQ08xQDA+BgNVBAsMN0RJUkVDQ0nDk04gR0VORVJBTCBERSBTQUxVRCBQVUJMSUNBLCBDT05TVU1PIFkgQ1VJREFET1MxGDAWBgNVBGEMD1ZBVEVTLVMyNjMzMDAxSTE/MD0GA1UECgw2RElSRUNDSU9OIEdFTkVSQUwgREUgU0FMVUQgUFVCTElDQSwgQ09OU1VNTyBZIENVSURBRE9TMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKhdtqxuWw16Vp/7Sst+fIdisGMmkiswmVdByabVEKu7FsX3gxPOh0qHmwa6Tr6Y4WV9v2ZExf2EZZIdM7Z5HJejggSzMIIErzAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgaMGA1UdEQSBmzCBmKSBlTCBkjEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xRTBDBglghVQBAwUGAgIMNkRJUkVDQ0lPTiBHRU5FUkFMIERFIFNBTFVEIFBVQkxJQ0EsIENPTlNVTU8gWSBDVUlEQURPUzEYMBYGCWCFVAEDBQYCAwwJUzI2MzMwMDFJMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQU7oukZ17hZNqgXn+9zb1nFVmNAdYwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0cAMEQCIFAVrmKucmULegrWgBKqAHeiiJ6VmRGXBVo5LrvtuXwnAiB0+buKOXmu4gpE5vu2Du0seQ5DdaCsLOS99ZTz6Ea0yw==","kid":"6ag2wJkSHtk="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Secretaría General del Servicio Canario de la Salud serialName = Q8555011I OU = SELLO ELECTRONICO OU = Secretaría General del Servicio Canario de la Salud 2.5.4.97 = VATES-Q8555011I O = Servicio Canario de la Salud C = ES","notbefore":1619788200000,"notafter":1682860200000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEblis8RR4Oc4Xqq4RZdhrJ0DnkAvK\n4vY8AamWbFg9T7OG17La8TJYTq3FqJJd5KttTP71GojxRF0REKpF+uwAtw==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"ARrNkCRtprY="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = SELLO ELECTRONICO DE LA CIUDAD AUTÓNOMA DE MELILLA serialName = S7900010E OU = SELLO ELECTRONICO OU = DIRECCIÓN GENERAL DE LA SOCIEDAD DE LA INFORMACIÓN 2.5.4.97 = VATES-S7900010E O = CIUDAD AUTÓNOMA DE MELILLA C = ES","notbefore":1622213100000,"notafter":1685285100000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEe1XUTCn6DkdbSOKlyzczFWQfDvtP\n31uGdjzVCzAkuxorNeEX3F827gnycL/mTzRm8lfDxz64lEUcTww0I7unwA==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"BEnvMVnNFK8="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = SELLO SAS PARA CERTIFICADO COVID DE LA UE serialName = Q9150013B OU = SELLO ELECTRONICO OU = SERVICIO ANDALUZ DE SALUD 2.5.4.97 = VATES-Q9150013B O = SERVICIO ANDALUZ DE SALUD C = ES","notbefore":1621599300000,"notafter":1684671300000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt3OX+XF/LZlHff6ZWiHRqQu4WBrg\nzNZYz4wFJkwkBmk/z0ROsLJ4FlwOLPs2cUEIIV0Pu1cmnngva6+EzQpbAA==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"GMFMBu1RlCg="},{"issuer":"C = ES O = IZENPE S.A. OU = Peer CN = iCA Izenpe","subject":"C = ES O = EUSKO JAURLARITZA - GOBIERNO VASCO OU = SELLO ELECTRONICO 2.5.4.97 = VATES-S4833001C CN = DIRECCIÓN DE SALUD PÚBLICA Y ADICCIONES","notbefore":1622208492000,"notafter":1716902892000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8PO\npQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1Q==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEEjCCA7mgAwIBAgIQA8IozyvkMlFgsO/sU+TnrzAKBggqhkjOPQQDAjBHMQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xDTALBgNVBAsMBFBlZXIxEzARBgNVBAMMCmlDQSBJemVucGUwHhcNMjEwNTI4MTMyODEyWhcNMjQwNTI4MTMyODEyWjCBpDELMAkGA1UEBhMCRVMxKzApBgNVBAoMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08xGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMRgwFgYDVQRhDA9WQVRFUy1TNDgzMzAwMUMxMjAwBgNVBAMMKURJUkVDQ0nDk04gREUgU0FMVUQgUMOaQkxJQ0EgWSBBRElDQ0lPTkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8POpQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1aOCAicwggIjMFoGA1UdEQRTMFGkTzBNMRgwFgYJKwYBBAHzOQAGDAlTNDgzMzAwMUMxMTAvBgkrBgEEAfM5AAUMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08wDgYDVR0PAQH/BAQDAgXgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQWBBRJ5qXgwbq6JnfYaHEo99QEkecqADAfBgNVHSMEGDAWgBRzFw8OFM+MtdUG96YEM8MZfTG+7TCCAR8GA1UdIASCARYwggESMIIBDgYKKwYBBAHzOYFIATCB/zAlBggrBgEFBQcCARYZaHR0cDovL3d3dy5pemVucGUuZXVzL2NwczCB1QYIKwYBBQUHAgIwgcgMgcVLb250c3VsdGEgd3d3Lml6ZW5wZS5ldXMtZW4gYmFsZGludHphayBldGEga29uZGl6aW9hayB6aXVydGFnaXJpYW4gZmlkYXR1IGVkbyBlcmFiaWxpIGF1cnJldGlrIC0gQ29uc3VsdGUgZW4gd3d3Lml6ZW5wZS5ldXMgbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGFudGVzIGRlIHV0aWxpemFyIG8gY29uZmlhciBlbiBlbCBjZXJ0aWZpY2FkbzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsZGVzLml6ZW5wZS5jb20vY2dpLWJpbi9jcmxiY2l6ZW5wZTAKBggqhkjOPQQDAgNHADBEAiBtHbVrpnsLMptmRI5QL4JhOG86pqSBVQXiOUMsIkpcPgIgY/npsrzRMcUHAh7NwvqhnbgWvv1VwbRy3bxD6+o3RGw=","kid":"GuQPQRxbMsU="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Servicio Cántabro de Salud serialName = Q3900738J OU = SELLO ELECTRONICO 2.5.4.97 = VATES-Q3900738J O = Servicio Cántabro de Salud C = ES","notbefore":1622120280000,"notafter":1685192280000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEj/wPWM6e8JDYxW9673ivEvwlu2JA\nZpsNBrr2sQW5ppku6rcqJUKx7Kbvf2Zx1AJeIS7+PQq2iNcugfD+RC/VfQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"IaGR283U1jA="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = SESCAM Certificado Digital COVID UE serialName = Q4500146H OU = SELLO ELECTRONICO 2.5.4.97 = VATES- Q4500146H O = Servicio de Salud de Castilla-La Mancha C = ES","notbefore":1621946400000,"notafter":1685018400000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDvCuOC6NlQCaL18+CEn4sbjC3NNn\nN4jBAmZo6lrGXbjIfAQ3YWmXc3gqLnSFq84EEV6+2PFy9yyLgq4JmFAfDA==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"JHd4CkNzadI="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Inspección General de Sanidad de la Defensa serialName = S2830001J OU = SELLO ELECTRONICO OU = Inspección General de Sanidad de la Defensa 2.5.4.97 = VATES-S2830001J O = Ministerio de Defensa C = ES","notbefore":1622115540000,"notafter":1685187540000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE62orr7HL0POyQCqmgbbEqfcbcdcT\n4vyfQZEPYfxk69ZRv9T8Iy6nWAyEjF0VxvknfCg/x9uig5HFWrpedW2Epw==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"MtI93IMknMk="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Consejería de Salud del Principado de Asturias serialName = S3333001J OU = SELLO ELECTRONICO 2.5.4.97 = VATES- S3333001J O = Principado de Asturias C = ES","notbefore":1621860000000,"notafter":1684932000000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUvljql1ZGpwzC92AbO4J751kqnIE\nXaCI8hYUIEArhReqJcx5qClAGSkDFcbrTPV9WuUtmDQ/NpoV+EejqBmlyg==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"NCc6YSsVioM="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Sello Electrónico del Servicio Navarro de Salud-Osasunbidea serialName = Q3150004D OU = SELLO ELECTRONICO OU = Servicio Navarro de Salud-Osasunbidea 2.5.4.97 = VATES-Q3150004D O = Servicio Navarro de Salud-Osasunbidea C = ES","notbefore":1620984900000,"notafter":1684056900000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4\nB/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgHw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHTDCCBvGgAwIBAgIJfoL0UPrrsbuIMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTE0MDkzNTAwWhcNMjMwNTE0MDkzNTAwWjCB/jFFMEMGA1UEAww8U2VsbG8gRWxlY3Ryw7NuaWNvIGRlbCBTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRIwEAYDVQQFEwlRMzE1MDAwNEQxGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMS4wLAYDVQQLDCVTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRgwFgYDVQRhDA9WQVRFUy1RMzE1MDAwNEQxLjAsBgNVBAoMJVNlcnZpY2lvIE5hdmFycm8gZGUgU2FsdWQtT3Nhc3VuYmlkZWExCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4B/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgH6OCBKIwggSeMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBkgYDVR0RBIGKMIGHpIGEMIGBMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE0MDIGCWCFVAEDBQYCAgwlU2VydmljaW8gTmF2YXJybyBkZSBTYWx1ZC1Pc2FzdW5iaWRlYTEYMBYGCWCFVAEDBQYCAwwJUTMxNTAwMDREMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQUDoSdwvhJkRliLuZyPLYo9xeX1vcwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0kAMEYCIQC5rwYPPmeafyGrOsjX/SeqgFtgrqURrFrnbwC7QvM6MgIhAN4Pl5n+ACj+56aPhHsHRo4xS2ZeXShYFQQpxUCM9R17","kid":"YRYidQ+wetg="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = CEUTA serialName = S6100007A OU = SELLO ELECTRONICO OU = CIUDAD AUTONOMA DE CEUTA 2.5.4.97 = VATES-S6100007A O = CIUDAD AUTONOMA DE CEUTA C = ES","notbefore":1620984600000,"notafter":1684056600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgOuoVfBtfKWYpcffhNWfiCf4g4oZ\nBdaPcdrn0HBtkQ/9xYp6FlfFAP1Ze29LaM1emnFxjyQNWV3KeNmoc/vFYA==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"YU9+X9nepqU="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = GENERALITAT VALENCIANA serialName = S4611001A OU = SELLO ELECTRONICO OU = CONSELLERIA DE SANITAT UNIVERSAL I SALUT PÚBLICA 2.5.4.97 = VATES-S4611001A O = GENERALITAT VALENCIANA C = ES","notbefore":1622199300000,"notafter":1685271300000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV61Sl3v6NzBqyCbqSb8/fBodGle+\nb3RJ7Utk+uExDwbOxzS//2GUTRFKW43ppskyr3G60/xeJCaeN7S9Cvssdg==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"ZcfkloEvfGQ="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = CERT-GENCAT-1S-21 serialName = S0811001G OU = SELLO ELECTRONICO OU = Departament de Salut 2.5.4.97 = VATES-S0811001G O = Departament de Salut de la Generalitat de Catalunya C = ES","notbefore":1622037600000,"notafter":1685109600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZjrINN6u+ZGfRqaYqgqL+yZZCDl\nu+PKPCkVS/ysPosrontwlhznbPsq5W+d2NyxXeaUAT+lTyRKy1NAxOFqAA==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"e9SH8dtWwdY="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = DIRECCIÓN GENERAL DE SALUD PÚBLICA Y ADICCIONES serialName = S3011001l OU = SELLO ELECTRONICO OU = DIRECCION GENERAL INFORMATICA CORPORATIVA 2.5.4.97 = VATES- S3011001l O = COMUNIDAD AUTONOMA DE LA REGION DE MURCIA C = ES","notbefore":1621867800000,"notafter":1684939800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEli8eKthiom9EydKvhg7LHXj/f88/\nZeNUpfEFm6kIAr3K1NCRSv1grJnNiBc9lvggtAjqFHQSGTovtRcGHcVuRA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHTDCCBvOgAwIBAgIJA+zla2386Iy/MAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI0MTQ1MDAwWhcNMjMwNTI0MTQ1MDAwWjCB/DE6MDgGA1UEAwwxRElSRUNDScOTTiBHRU5FUkFMIERFIFNBTFVEIFDDmkJMSUNBIFkgQURJQ0NJT05FUzESMBAGA1UEBRMJUzMwMTEwMDFsMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzEyMDAGA1UECwwpRElSRUNDSU9OIEdFTkVSQUwgSU5GT1JNQVRJQ0EgQ09SUE9SQVRJVkExGTAXBgNVBGEMEFZBVEVTLSBTMzAxMTAwMWwxMjAwBgNVBAoMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJYvHirYYqJvRMnSr4YOyx14/3/PP2XjVKXxBZupCAK9ytTQkUr9YKyZzYgXPZb4ILQI6hR0Ehk6L7UXBh3FbkSjggSmMIIEojAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgZYGA1UdEQSBjjCBi6SBiDCBhTEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xODA2BglghVQBAwUGAgIMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMRgwFgYJYIVUAQMFBgIDDAlTMzAxMTAwMWwwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBQBzqvKX8AY+IVJiHykPj5www64JTAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDRwAwRAIgb52hsDkWShWodg6mznBV4Ut/vr0C2rgRLyV0rzHWq3ECID/elZUrZyPy0V6CdrlZxaCUIQB6jsFkAl2/wFTHC5pU","kid":"hgpHHrTb4ws="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19 serialName = S2827001E OU = SELLO ELECTRONICO OU = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19 2.5.4.97 = VATES-S2827001E O = MINISTERIO DE SANIDAD C = ES","notbefore":1622708100000,"notafter":1685780100000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3KVI7Sy+id+bprJ8Eh9AHtW+1qeC\n4qoHH1oK7HN87UKH9KxQix0jq0RySb2c+5CN+kbAfsYEvULfHToz2FWzWQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"qFNF2dC+mjQ="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = DEPARTAMENTO DE SANIDAD DEL GOBIERNO DE ARAGON serialName = S5011001D OU = SELLO ELECTRONICO OU = DEPARTAMENTO DE SANIDAD 2.5.4.97 = VATES-S5011001D O = GOBIERNO DE ARAGON C = ES","notbefore":1620386100000,"notafter":1683458100000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDOg7lpxitz9+ytOAKFXxS7F4qc9I\nfKWrj388ETiCbLEQuoYeWEp+4wXPLCF7RRpg6Zxt9iGG93ZAwxl8g05Oag==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"tCM87WnaaQE="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = FIRMA CERTIFICADO COVID DIGITAL UE 1 serialName = Q2801221I OU = SELLO ELECTRONICO OU = DG SISTEMAS DE INFORMACION Y EQUIPAMIENTOS SANITARIOS 2.5.4.97 = VATES-Q2801221I O = SERVICIO MADRILEÑO DE SALUD C = ES","notbefore":1622109600000,"notafter":1685181600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhe+kvml2tx/+/wipHR5ttSw1PdmW\nGLpoEqzNiel2mWsZovfSBR+Jzri7NpH8s8RBSnEDc0kQTl2dSiECy9D45Q==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"ub6Qmv9xtAo="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = ConselleriadeSanidade.XuntadeGalicia serialName = S1511001H OU = SELLO ELECTRONICO 2.5.4.97 = VATES-S1511001H O = Consellería de Sanidad C = ES","notbefore":1622213100000,"notafter":1685285100000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeC6+zmnjgdAUmYG4kIPJsMwSFSJc\nlYoKuHKcIQ5PpX4xKyM36Gp2fkKvARbyJYjduU8JzO9nrSILVxjuKRapFw==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"x3ch4ml934I="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 3","notbefore":1623232264000,"notafter":1686304264000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5EtYbOu+RuUcFAu1NN1rqsuKqNzp\nl0Y6bgg9wNKcmVLzfBO81jH2dcupHtKlp7My5KGjCyBAKvjJUSE/fnDd5g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIIKbUPDyxggQcwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTEwNFoXDTIzMDYwOTA5NTEwNFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABORLWGzrvkblHBQLtTTda6rLiqjc6ZdGOm4IPcDSnJlS83wTvNYx9nXLqR7SpaezMuShowsgQCr4yVEhP35w3eajggESMIIBDjAdBgNVHQ4EFgQUQiz2ueCR4OeY2/dQbISIOzQRh20wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxMDRagQ8yMDIxMTIwNjA5NTEwNFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBADVwHF/3fcmmkQgU+HLb1LGhj4RvsR9NUkrkYHyWROt37d5D3EyqNjNIpWebfDXLnQNpEQDd/2HyaEW70citcb4ad/5RXD/hr3BjVsqnbRHOctv1+Twy9XfDM7OcDgj2tE7slsZ2dKAPEg09dq7MoClXDuTcIkBqEHuZ+dzA8PYDvITLjHtJqMKBj335tRU+Zl8WT0GGXzQw7/lRD4yE8BndK7C6MO7xC4tIUGgHP3P+kImRiPCq+pQbt78XGJBzEgCpBbe8HuXgja5yTk2AGLdCH5GxbSQMjGA4icefROoPO86uNwCekAKGFd46Li5/+JfIi9nJCd2x7PsUzAr15fzwcTks0Hk+7dZqj6gXuJpZFwoCzvY4Z0O1B99L1SCwZNXsCEevqQ5an3LUWUWE+7JhkkGtqeddockt5M8Q7omw8O4gvV9W9Y4Cbvshxy9RroTSU135NBMm3Iu0s2FdsKj3JMaE/xulRCJ4bxaEcKTdrjGaJSPT5ROgPWQj0yD7yw5j0lRGzph3Pu1o5q6J4v+w3cfWVu9Ka1H4wpQY3ip4emVaXpstg0NNPMH+JERLFy8Bg94J0uOCKAVAPMjpr9DW7/r1Ooey4a7pfdGqCb2QxUkuLr1YOQcairnvOpjjEfHbvWmKV4EGpENpI21qY54URKtoYse7tnkVtz9RrsyY","kid":"02vdAOY/+gI="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 2","notbefore":1623232205000,"notafter":1686304205000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvIs/H8NhtE23q5tR84V9WwbbdGDc\n3hh7mjrXom4PRzjGRuSvfC9OIFLtRzOohsdnbcE62FWN+Fz09ugJcaqhtA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIIX7IVIHG/M4swQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTAwNVoXDTIzMDYwOTA5NTAwNVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLyLPx/DYbRNt6ubUfOFfVsG23Rg3N4Ye5o616JuD0c4xkbkr3wvTiBS7UczqIbHZ23BOthVjfhc9PboCXGqobSjggESMIIBDjAdBgNVHQ4EFgQUvoCTP+xA0/1nmxS2GKtTaxp0TYAwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUwMDVagQ8yMDIxMTIwNjA5NTAwNVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAKT1bQpoLJpJbb3qAbYcQkZKPNQa5aisXFiLlmIBWHzPYI67BWJu/CjDOeHUPgzpcgiDe33t5ZacnccTwMGZYXnZQ8jNwOxAi//7NJkJHEtrMcYQ9pqSeKqnNwTwMetQm1u5rHjAtjMSZdyWMMjDIcX5Z2lXiPgoO548fYKrwbeCloFDk6qWrk/Jc6NKyNgVEhVvkwHLfDloS7Boln2I4eT4VfTAXt50/zEsu4KHIDpDTDMFNg5KTYugOFHOQise6z5oYmnwZB95OKfFGR0xeDR8JN+Kn2TcdiTpin87jhtyHzCScFLlWbHum9y/OKKNgK/2hWRrikyU9zo/OmHwStftOkggBSeDVtwRkCAKZpK9IXWWRNCj/gkRnVDDeg3ehQ9qRykU+BkUiMi2LhLDVUITCZhmRyS94xHP5PoCY5tUanCNxkgjYwvDHMU8hIPL8rsOdHxc7tK6jaavBP7ZbDG1W3bEcYU1oaKWvbYyPBhJPnAVDVH2SLU68gdEcdjMtiOPaH1ImERhQ2cF9KzCsU/svCoOJrEd2lQZ6xFodkicg0XN4sdXKyypdPic+Cvai/033DdiS1i7HH59hO0Z9l6I2gsJHULDMeSnJxTB9Tves79iYSRdBocm+LHfT8uvwRwn6+SmTD7/ttzHm/H/m/k1hsLPZDNMdn+kMuXCiEnn","kid":"0kAwFy+vLpg="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 7","notbefore":1630587789000,"notafter":1693659789000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7U8cYsFNOZawVgxC9FBfvNzL05Xe\ntv6jVxj+aii7IkXcXCIiRsruAdrAHCLCtpDgIFzwLsFNwJs5ZFu+8lr6nw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIILKLkHn6rwKAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDkwMjEzMDMwOVoXDTIzMDkwMjEzMDMwOVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO1PHGLBTTmWsFYMQvRQX7zcy9OV3rb+o1cY/moouyJF3FwiIkbK7gHawBwiwraQ4CBc8C7BTcCbOWRbvvJa+p+jggESMIIBDjAdBgNVHQ4EFgQU5MUl/8big5VpHbJE35E0EJ5cuF8wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA5MDIxMzAzMDlagQ8yMDIyMDMwMTEzMDMwOVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAAQI3H/45srCJtEi5+gwT2GCEx6zV65ytEOsct9bUu41U5UDYhYp5rtaIWpguPB2DuHs1zFY7bqwiD7INyDeRIhCrBZuQkrIsBGImE+IcoXJAdri/vUOPToYxpcA3uwqH/1EOhuhSlUz8Czzb7rDY72K1fXQYCKYGNkEBEDrSC66F9bMD4ATtRb97DMZAY5QmTX8MVjSvrd9WoiroQ0YaT3Bt38SYzwY8QV10ovbo+VqkY3d4bK4zTHGFh1If2ttsPAWOLV8mc3bp6CGPm9VxfZY5tMBgVsDNcpY9LKLFGHivmsduvSFfugNsPDELnj8gBMihCtnOTzI9Qugs298tIYg8awef2GkJmdsdQX1IcQJjrw19ukgbjuGDr3EIfmDrjfRcdFdDSvE6xBIWRWa/XnrmdoKvUnuRrCFzcOSfaMBEER5qJ+dQh/08KtKPdRXvNFoyDLfS8eHRRLIkEDtd3HeuKedHclHjn/+JbazIGBYjogqXothsnSK8bDBblJnO8nAFc3AdVk6BbmjitMSQsU0oYhpSg7Ew3HxHYXGCmZ8rHLxzGOC8h/KaEcS3qP7IuyMlwnZdITbeli3qy3UVTA0jd61/HJLDqJMaYX8bvcPpcfqW5mbVV/X64il/jyNURdoKkAYFFYoMNgBz4QY9XKn1dGC1WcE7EFXAjCUMawC","kid":"Amn7EaBy1ag="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 6","notbefore":1637317418000,"notafter":1700389418000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAM+XCsJYYmHT5wSsEfx7DF5PWT3D\nCIbIdWjSxS2NWcbsPx7zjbWi/lMKbaSDdrYnO37o5zn0fI7LUU1LS5pKtQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIIOrhc6Me7w+wwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMTExOTEwMjMzOFoXDTIzMTExOTEwMjMzOFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABADPlwrCWGJh0+cErBH8ewxeT1k9wwiGyHVo0sUtjVnG7D8e8421ov5TCm2kg3a2Jzt+6Oc59HyOy1FNS0uaSrWjggESMIIBDjAdBgNVHQ4EFgQUf89Xu5cdTN4gfMJ2P/Cv6Hx3swAwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTExMTkxMDIzMzhagQ8yMDIyMDUxODEwMjMzOFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAC1HMWC2knZxMj/RtkmRMgG+5iCve04Pv69avIHfdKLTzUDTPyEhtROjZ+IFUIK/RddtJ2KMyJbgprTZLMtOiOT18BEumkZB3L3VRyPa3PfLQ6DqoAgqvjep3tjyH9jP3Ibn2LWHKiLrAHmKl/IekWFfZcZ+gsmqRvRhUpi944X0rBD9i/Xe0T7BTS8CjCZBptIPY2/MRsvteAR/L6h/lm7S0CzofA/FnEtdD/hskVzIbgsJgSPWfUZsKLUwP7gsE71Xq89Q+BeZiUy10x1moTk/sWGnNVcGXwCobCfRnaOA6FUpBoayq3L1jvZST5l92+HhrfUOVTlbcJHOxHQe/2KIT0w1O8geLaPB8Fo8LzEX5h0PTrA/qnG7JqLE8PF/mHs1WKywDmbrx1UFwIfQknvLPdqcnHmFvvSf94BpbwN2Mk8E586krKu71rGMhZBHWmbQ+YVgA9lKt6vP+MnqSwj7RtEEfsyySGrLP9zoFa6RD7aLKBvwhnFuk3knOfdXo3h9TXJpMoLkG5BDK6mJ5zNU8+pYedDyea/QEpE4K7Ledo6RpYyTj47H46KPgyfGnb0YZT/LC3Kn99ejnf0hoHRL3zUt75BoEngLAR6g4BAyyrXoEcVpt8JtDTcAHCMMwMAD84FZBAVNcaCrPNkedX3eyBoN1bIwbGBeKhrgMrq7","kid":"SiEt1ct5otQ="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 4","notbefore":1623232314000,"notafter":1686304314000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHTBJY0Z+T5I8EmqQmrbZAr8equIc\nKKE+YriIGw/AKJyw0ZAj1Dd2MRTM3+AEiNARxXIF08a2rhUvFCyyHCJ2DA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIIbOmJZDQoP+owQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTE1NFoXDTIzMDYwOTA5NTE1NFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB0wSWNGfk+SPBJqkJq22QK/HqriHCihPmK4iBsPwCicsNGQI9Q3djEUzN/gBIjQEcVyBdPGtq4VLxQsshwidgyjggESMIIBDjAdBgNVHQ4EFgQUhHOTxbELqlA8J5QtocLrpUvgC48wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxNTRagQ8yMDIxMTIwNjA5NTE1NFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAEa+gpgHss7+IdPOrr4bzlMSavqHqybtRzSH2hVBrbZ9Ov3vVDmIksbUNM3nlVPL5gFAReHEJmXhHxwvoxyCO/NXOS+itmGkYRPHRH57xTa9XIGcwWmAnbwxVy41B/NnOMeAB2TouWWfX/ZYzKiNyFJ7JEIdaQcZ/2+55c5mlEVFMdpeDR2vmB+cgrz6j0iFxoJ1/QQeWkjfD8nr/Auy7zfm0MgQL5wZEI08A9LAKZjFbawHcJx2RWuwWFc8dLBTMxYM0ptrXYNH/dDRpuNXMuqh68Os/aei5kbolHM24bSBycvInYBYyVRTi2ABDdRpItl9BEGqPSkJoYrrB2hZ3roNNugANF1rm1Fx7hlK80QiMoELoM1RyIovlrymQb45USV2+OuEtvZ6BJ85l7q47tbwr0xxHqIL9n82t4My4M0U7cIu5SPv6qv+ubLGnbqJvgoT9Tf3QGrH5j3XDyU0V4YfvfQhcOBLNlduuA2cihdAh+M6MLRbtG9svKsrA4k0PtyB9UCtqufsfDhkjM4LRGjmylclgmDtNH6DixcFxYlK1+fikZSIPnw476WgS8/2biw2m4gAsxEZ5/vg9L/u11i853AOSsh/sFxjp62K3O5mFAvdmLAJmrofOUghoNcAzJdDbSWtHzqQYJ+BWIjoIDiJh0m8Sl5/hVv6Bh6Xtrp/","kid":"bBnmkeVMV6A="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 8","notbefore":1637317780000,"notafter":1700389780000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+vHkPlOZP+DAP5kw5j4miyzrtTc5\nwM5vNkcNqWy4e8YHf4ZR1bEpQjRS+ksnCKfbEDf82p0RRzdtbQCdvSdsEg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIIRuunuryIv2MwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMTExOTEwMjk0MFoXDTIzMTExOTEwMjk0MFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgODBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPrx5D5TmT/gwD+ZMOY+Joss67U3OcDObzZHDalsuHvGB3+GUdWxKUI0UvpLJwin2xA3/NqdEUc3bW0Anb0nbBKjggESMIIBDjAdBgNVHQ4EFgQU+Wj2rLs9D5DTRelKDWzq59tIm9YwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTExMTkxMDI5NDBagQ8yMDIyMDUxODEwMjk0MFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAE+CfZcxHrwDJmXImxn7vMOlRw/Bvy2wv+SIWHE5HOMvHa0eAbbADPz87HhyoMMnC9vDKfeEjaa8qyiVTtAcAT0yBtJJaLITEMm+uGkIHFcA3LkzLVubqFhDGUs3bqRRqvBY0+tqdLKRvWLn80XC0KpHrtppUAhwhDYZ9LKcAeDC9Hz2Zh44J8MYyYlcrGrzNvoEWE80+IHfOXkztop0P1ruwa6zpyrElbJ2AJ/Cfd39MaYxxpB2lLRXKjm1IkqjjYmolKphoF66+NLKdz6Iirtdt3i47G34ASHvu77/GHSrSsb0qsxlcQI7hjhB0jU4WIQOPKBPpdiBH5lqQ78GLe2oFsNv0FFEn3sbnmcZOLaaDzUlgcP+TqAQq0mjXZIXmTzvEc9Oc7sO7LeZWH05b3kQdywL6xa0US9Q+fpz3olPi1DAos0hC2I5Th1veQqUQ/+7EVHWaicX3W/S/+TUMHBixNr8CA3kioFGu16fDUNdyuKlrmnitpjeiELG2Dn9dkqpKDDVHPy9NLPLBY2D4m+GFxfuficry7G499rDyEkeAWjmG5xzwIgzx4zSdGVDsmBLmNNkhIoBWpnjB5+7ff+lCj93yLMfGfU3+kuWjYHd6XiymcqQSjBwzR6pzb0k2q/AsRn6ovWKf0e2ZE/yVD9LLUmUJOXoVdIRB1rizuk3","kid":"gcZRP1ogHyU="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 1","notbefore":1623232135000,"notafter":1686304135000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEExXQauou3f3g77qOsZ0rSPFjoTDi\nKQDhG+Bpf34YyoeFkYMBML890KaqmZL4uezBc8xxg1f170qcZWHILjp4qw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIIM5IkTBngr+AwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NDg1NVoXDTIzMDYwOTA5NDg1NVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBMV0GrqLt394O+6jrGdK0jxY6Ew4ikA4RvgaX9+GMqHhZGDATC/PdCmqpmS+LnswXPMcYNX9e9KnGVhyC46eKujggESMIIBDjAdBgNVHQ4EFgQUX4tTu4HFKg7kh7/7FCeP8+7D5CwwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTQ4NTVagQ8yMDIxMTIwNjA5NDg1NVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAE5HQ1OIeJz3gkH2Wrokpb2nLC/ytoe5t9zkK2LY+UmVvTP59uG1dyIWV5pv2hwYnCiSOOG82YJRfdsts3i/0NHlESPChvyoG/E97tvdjB8doTj4gCCTx1JmRpp2vOQZuQsOB5QeTY7nL3yCHZF7yniFDPQpk2WpE4tY4gxxt08hlhRs4C2iZ8jiN2DcMqJwippu0OdAca9mRFPnVs/tGjBT72QrEnPPXWu1pz1xdIW6sDbC2OhCkAMPC4qehWh00DuhxeYgkJF6cg5NOLT2iiAeEv0/DGdYsy1lM5JxE4BmWaZ9mRuvNvzf3lC6DVFHTr3R7/88RblxfWA/TH7E2TQT40JwhQ0YyhqWYC+W0T2cTW2NICedtIpAv8oECRentxzvceovuQw/BxacZUbs8WEJFW+WKGJvAeyaFrkLrze3U5UH3kurD3tG97E77wbFu31iivDmftrvWv/OSDFWpFiPkEP0pe46eY+x/KGiBZNYj6sxeC21W7CxAftQdgoOAPU91j9otI/0n/7XLV71Y1fnt02nZwDOu7ajLHebpjUtnnDsHojOAr3NQKEy836Xg2E3JtGCWWBKnkvgj1/swYBLaZxE9FEGo3nTst9TpwS8GpgXFoQEoTNSV5UBVCwT2djcZCEmhG4GPCrqeoh1c6bfTRbtORXv2HZqYgv7w6eo","kid":"ln8K+9SqfuA="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 5","notbefore":1630587618000,"notafter":1693659618000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHcMt1ez6jhOR9UBCXlFg//cHD/Jo\nypGzNaG4C/gYl4qQdN+Vns7/idf8DO6Fk5z+Yh+I/vQ4vUQ5bWZSwRwUJg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE3zCCApOgAwIBAgIIOZExjV2kjGAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDkwMjEzMDAxOFoXDTIzMDkwMjEzMDAxOFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB3DLdXs+o4TkfVAQl5RYP/3Bw/yaMqRszWhuAv4GJeKkHTflZ7O/4nX/AzuhZOc/mIfiP70OL1EOW1mUsEcFCajggESMIIBDjAdBgNVHQ4EFgQUAiIZbrncLuwgAWNZTfPNphbK5EcwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA5MDIxMzAwMThagQ8yMDIyMDMwMTEzMDAxOFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAJrQJUzTWjcyjHZj2Na/4TuSNTolOM2bDlEBoEqUAY3rfx42rM7xJT8giWcKL75arhGgkpzEqtJeQBaq2yE/itDN9dGI35qi/MvIhkx0e94d14QwOkfMF5c9mJFMcXEbb2v5UE4cQq7Obic77cjGlSemS1ieTrjxT4yYu3LOYOcTXQqR5qNeor97zHze3esvAC7VjTFo1wcg3kK8PZV9s25q9IeiNvhzcu3IeMIEtB6sC/E3q2B1KbvkEInr7/uHMRylh4cqfyK8VCewkIDIEReudLbSjKJBAQipDnNSuTswu89vNB1nY7kdRIyISqtgoB5opoadPDEdA6DISea2dvfXs5LohgjN4zkJK8R9h7TQizFaI1PKMVADzP6e25hPA87SVVb2nDGxzlXY2tJRGstvuD6cWvtfhc9fn71VUtIsjG3iF9XJA5xYOijEM8xzqznv8GJltrmv7f/pxTOQuyb4FR5pRzVRFaft0B9igToiEDeZoq8O/jVn09fvDRa2sxeQpXvRcQvd9B1YppLdziHzVyzQ/X6iD0nuQ/8osGZyq81yMrvN1uPpROgfcleo+yatl3VavV7HRG1e1Ur0G0SZ3xmC12RRoA3m3FVSTx7WsQcy/uurcmGpAs5gf9BkcTcodGM4ktPjjpu7UvoKPysSlI0tI3TtXYY0aRICSCYa","kid":"o11W81MgYYg="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Country of Curacao OU = Ministry of Health Environment and Nature serialName = 1 CN = Health DSC for recovery","notbefore":1627981990000,"notafter":1974877990000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENlKRwpA1S14Zfx6LZuAWm9ExHy86\no7O9ijCq4AmZ1dFu2d2wowdylJzAvbbVsR1RoxfNJPzy5dwu9Nsm0PvsEg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDOzCCAuGgAwIBAgIUExGmExTT4ef8rDmoU1gm1xnsB3swCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTEzMTBaFw0zMjA3MzEwOTEzMTBaMIGMMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEgMB4GA1UEAwwXSGVhbHRoIERTQyBmb3IgcmVjb3ZlcnkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ2UpHCkDVLXhl/Hotm4Bab0TEfLzqjs72KMKrgCZnV0W7Z3bCjB3KUnMC9ttWxHVGjF80k/PLl3C702ybQ++wSo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANDVVcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEDMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFGxsRf1q1IJFSUabsYjk8Zhu4yi4MCsGA1UdEAQkMCKADzIwMjEwODAzMDkxMzEwWoEPMjAyMjAzMDEwOTEzMTBaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiAmvnUyiPPbVM7Ds+gisStbuwGRZ/ujjlfpKU0Kxhon6AIhAM8VBy0s4syzH9gDqrayITXG1r9253IAvNyxoHFhej6P","kid":"0JzyumjttZU="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Aruba OU = Ministry of Tourism Public Health and Sports serialName = 1 CN = Health DSC for test","notbefore":1627978373000,"notafter":1974874373000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKBG1WklnURluKXTg5+tm6/S7pMFL\nBE8cZ5xNxnCCAL5nvUi6JzSgTjAmOaUNPXVwvA2TYl/GkJNbh4TazMeF3w==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDLDCCAtKgAwIBAgIUHVt+j6ML1RILakWOrokwx1vJhWQwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEyNTNaFw0zMjA3MzEwODEyNTNaMH4xCzAJBgNVBAYTAk5MMQ4wDAYDVQQKDAVBcnViYTE1MDMGA1UECwwsTWluaXN0cnkgb2YgVG91cmlzbSBQdWJsaWMgSGVhbHRoIGFuZCBTcG9ydHMxCjAIBgNVBAUTATExHDAaBgNVBAMME0hlYWx0aCBEU0MgZm9yIHRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQoEbVaSWdRGW4pdODn62br9LukwUsETxxnnE3GcIIAvme9SLonNKBOMCY5pQ09dXC8DZNiX8aQk1uHhNrMx4Xfo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANBQlcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEBMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFFtRlFbRHNsuvQN/xIEwp1U/8DPXMCsGA1UdEAQkMCKADzIwMjEwODAzMDgxMjUzWoEPMjAyMjAzMDEwODEyNTNaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBNaAhthCNLRsfnXOACy3Wc+bkJ/oGxaEnqx8S0y3EkdgIhAKlbCGuSnLbyeUSBQ00N1K+iNzc2JoaP5CNyOGDOFAqg","kid":"2Bh+2HrOg0c="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Kingdom of the Netherlands OU = Ministry of Health Welfare and Sport serialName = 1 CN = Health DSC for vaccinations","notbefore":1622471252000,"notafter":1969367252000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsO\nNkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw89w==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDQjCCAuigAwIBAgIUU0JrRUBVL8DEW1z0jx8/+KAChLIwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDI3MzJaFw0zMjA1MjgxNDI3MzJaMIGTMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEkMCIGA1UEAwwbSGVhbHRoIERTQyBmb3IgdmFjY2luYXRpb25zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsONkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw896OCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBRVYJgZWfyzk3JJwB0HVdom7P7AxDArBgNVHRAEJDAigA8yMDIxMDUzMTE0MjczMlqBDzIwMjExMjI3MTQyNzMyWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAMMFkIuctSqsZbVBvE56YEZoxrF6m1n+F/IajFdNsRyeAiAC77Q6e6IOsDkPwq/ajPA5vslzeFETwcqNodsfAcJJEg==","kid":"3lTmAZX19GQ="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Sint Maarten OU = Ministry of Public Health Social Development and Labor serialName = 1 CN = Health DSC for recovery","notbefore":1627927711000,"notafter":1974823711000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQb+DcAtDpjI4ftm5ICNC5KGz10zJ\nvY682GDCREwLupvC17QzWFvc6S0jbk2NJt2VY5V4svj2FfLGkSWbUqUFnQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDQjCCAuigAwIBAgIURZYaoJKl/Wy6+MSJA+7KBAfLQpEwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODA4MzFaFw0zMjA3MzAxODA4MzFaMIGTMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExIDAeBgNVBAMMF0hlYWx0aCBEU0MgZm9yIHJlY292ZXJ5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQb+DcAtDpjI4ftm5ICNC5KGz10zJvY682GDCREwLupvC17QzWFvc6S0jbk2NJt2VY5V4svj2FfLGkSWbUqUFnaOCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDU1hNMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAzA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBRnd3nKzgJx3I/4ejFn+5GLW5DFMzArBgNVHRAEJDAigA8yMDIxMDgwMjE4MDgzMVqBDzIwMjIwMjI4MTgwODMxWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIgaUm6pa07v+OCyyGzYK8XIuUIl1RF3Yvlzw7otvuvZVoCIQCdKQONn+bW52R3pKdoTb4ssYYYHpizX2UvWUJinjwf7g==","kid":"4Ss2raOqhTw="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Country of Curacao OU = Ministry of Health Environment and Nature serialName = 1 CN = Health DSC for vaccinations","notbefore":1627982110000,"notafter":1974878110000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEawHNq4c7wLusLEYNhn7CBSqk6bdY\n7Phqjt1+Q+CVRHqBFfSRfWG+9dgoEMBdFHY12g4qsO3nnT2P4qhADwIvng==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDPzCCAuWgAwIBAgIUNoYe1qfQWUKjenQM2hZk75Gj67kwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTE1MTBaFw0zMjA3MzEwOTE1MTBaMIGQMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEkMCIGA1UEAwwbSGVhbHRoIERTQyBmb3IgdmFjY2luYXRpb25zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEawHNq4c7wLusLEYNhn7CBSqk6bdY7Phqjt1+Q+CVRHqBFfSRfWG+9dgoEMBdFHY12g4qsO3nnT2P4qhADwIvnqOCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDQ1VXMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBSvCnweDV0fhXiABpn551ECcIPLeDArBgNVHRAEJDAigA8yMDIxMDgwMzA5MTUxMFqBDzIwMjIwMzAxMDkxNTEwWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAOFtWGrE3NItKSKHvNypt0dHo8pfWcGwtWov+UinZkXUAiBYAd6OmxMik1GktF+cph96ldfimOpNnCobSLhpuhrhGQ==","kid":"H6b6bQ8qij4="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Sint Maarten OU = Ministry of Public Health Social Development and Labor serialName = 1 CN = Health DSC for vaccinations","notbefore":1627927825000,"notafter":1974823825000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERw+zOjyFNs4ntgwxcvouetTqlBIz\ntiTtJhOi8DesKXv5uX/m1pVAbYium/fhyu0IaBeh3DVOLfLJtPaUEx8eiw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDRjCCAuygAwIBAgIUeS2exS2QVGgMamwCH1rOy8XFhEcwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODEwMjVaFw0zMjA3MzAxODEwMjVaMIGXMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExJDAiBgNVBAMMG0hlYWx0aCBEU0MgZm9yIHZhY2NpbmF0aW9uczBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEcPszo8hTbOJ7YMMXL6LnrU6pQSM7Yk7SYTovA3rCl7+bl/5taVQG2Irpv34crtCGgXodw1Ti3yybT2lBMfHoujggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA1NYTTAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUznY2NjB8NXsMUCHPOlgYek97hZYwKwYDVR0QBCQwIoAPMjAyMTA4MDIxODEwMjVagQ8yMDIyMDIyODE4MTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQDx1fY/jA5stQeKO1mdP5EgJ8iOho81Ob/B/yXfg8XKTQIgSyuSbgQQu0j1fY5gxnFhyW+1M2Si8suaq4As21gBf5o=","kid":"JsReuAsmza8="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Country of Curacao OU = Ministry of Health Environment and Nature serialName = 1 CN = Health DSC for test","notbefore":1627982059000,"notafter":1974878059000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPVZAyUlqrJ3XW8kCQu401SKWJ1Gj\nF+LBjT16DUZO0RaRdAPsKx8FUBwqRBtn8dPzIP+EWDX7iUppuG0TNkt3Ug==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDODCCAt2gAwIBAgIUR6VYtf0ovWBCl7FHT35IVzVQ1EIwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTE0MTlaFw0zMjA3MzEwOTE0MTlaMIGIMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEcMBoGA1UEAwwTSGVhbHRoIERTQyBmb3IgdGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD1WQMlJaqyd11vJAkLuNNUilidRoxfiwY09eg1GTtEWkXQD7CsfBVAcKkQbZ/HT8yD/hFg1+4lKabhtEzZLd1KjggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA0NVVzAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUp42ATAZjIq8GuJM8TlU1qEBtzWUwKwYDVR0QBCQwIoAPMjAyMTA4MDMwOTE0MTlagQ8yMDIyMDMwMTA5MTQxOVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0kAMEYCIQD11uNYCNN/3xpgzvNI60u1gF/5aycL7HhApAh2mX8x7AIhANi3q/cTgsLOq53sX8mbZAZolL1LMGhfWHyRkwY7mIVn","kid":"T8kbYovQlYU="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Kingdom of the Netherlands OU = Ministry of Health Welfare and Sport serialName = 1 CN = Health DSC for test","notbefore":1622470783000,"notafter":1969366783000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERyOtPhis4M+vOSM+4AoqtBot3s7A\nGrqQOSA2ZY3a25z5e4QlRpExd1S399CADvo5j0Nyqrm/azrhFIsSAc8FIg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDOTCCAuCgAwIBAgIUDWwu6rWJGF0zIQk/aKjdU0TXoQowCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE5NDNaFw0zMjA1MjgxNDE5NDNaMIGLMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEcMBoGA1UEAwwTSGVhbHRoIERTQyBmb3IgdGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEcjrT4YrODPrzkjPuAKKrQaLd7OwBq6kDkgNmWN2tuc+XuEJUaRMXdUt/fQgA76OY9Dcqq5v2s64RSLEgHPBSKjggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUJ6rwxau+2kWqjA+f1f8vUJSkiDkwKwYDVR0QBCQwIoAPMjAyMTA1MzExNDE5NDNagQ8yMDIxMTIyNzE0MTk0M1owDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0cAMEQCIFuevBHjahuLYCe1bOFCmy6V5FSfyJrVo5+hd0GCSDRMAiBdRK619VMnXNGf573r/PG6nVpeJ9aP/qpkmZG3TVGQDg==","kid":"f+4yAPIGTWg="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Aruba OU = Ministry of Tourism Public Health and Sports serialName = 1 CN = Health DSC for recovery","notbefore":1627978251000,"notafter":1974874251000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf85n2j7jSWalqCH8Dquo5E3uyYIw\nYReoWWAiPkIvnwaaoPUt427OizGvRF35l0wPD6zSkbiQZxWI1DMaf+UeXQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDMDCCAtegAwIBAgIUf+V5qIHrABBVrichazDaEgY0x3EwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEwNTFaFw0zMjA3MzEwODEwNTFaMIGCMQswCQYDVQQGEwJOTDEOMAwGA1UECgwFQXJ1YmExNTAzBgNVBAsMLE1pbmlzdHJ5IG9mIFRvdXJpc20gUHVibGljIEhlYWx0aCBhbmQgU3BvcnRzMQowCAYDVQQFEwExMSAwHgYDVQQDDBdIZWFsdGggRFNDIGZvciByZWNvdmVyeTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH/OZ9o+40lmpagh/A6rqORN7smCMGEXqFlgIj5CL58GmqD1LeNuzosxr0Rd+ZdMDw+s0pG4kGcViNQzGn/lHl2jggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA0FCVzAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQMwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUsGbf7QCnDPzuBPOlOmArt9xBPZYwKwYDVR0QBCQwIoAPMjAyMTA4MDMwODEwNTFagQ8yMDIyMDMwMTA4MTA1MVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0cAMEQCIEg83+MS877WyCurvbC15pDKViLqWrbQvSRD2tjTT6JzAiBKlOFgjK69luoWCDFIFd/TXNVp6vIX9YOU1YZmrlFu4A==","kid":"lzGYCpOBQsU="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Kingdom of the Netherlands OU = Ministry of Health Welfare and Sport serialName = 1 CN = Health DSC for recovery","notbefore":1622470440000,"notafter":1969366440000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEiY+AGRWtd8tCUb5PQdEPaCWAZl0D\n/SIOtcDH8R8yrp/JT8MmMxV/wM15WiZf09Eyy3iJXwFT+9YOCyrBA/Cejg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDPTCCAuSgAwIBAgIUSK4bme7ziau/JZkM80IOLM8iauswCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE0MDBaFw0zMjA1MjgxNDE0MDBaMIGPMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEgMB4GA1UEAwwXSGVhbHRoIERTQyBmb3IgcmVjb3ZlcnkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASJj4AZFa13y0JRvk9B0Q9oJYBmXQP9Ig61wMfxHzKun8lPwyYzFX/AzXlaJl/T0TLLeIlfAVP71g4LKsED8J6Oo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANOTEQwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEDMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFO9JANKEcntn4oTJgtch48rqSZMpMCsGA1UdEAQkMCKADzIwMjEwNTMxMTQxNDAwWoEPMjAyMTEyMjcxNDE0MDBaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiA9SzdZR+dN+yQ8+lUKzFCUl7noJ6YzB49zVsdYBsXJbQIgFvifkX+12Ib3SsdCb9TGkzQtD4ZxCLrx1T0ycsNwiUU=","kid":"pSEfhlMubh4="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Aruba OU = Ministry of Tourism Public Health and Sports serialName = 1 CN = Health DSC for vaccinations","notbefore":1627978403000,"notafter":1974874403000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcI1v9r69Swup7ghwGhCA5xoG8Sop\nLiD2DnfkhTydslZQBHc+TuieZ11aHYkD91gmngRXRsGU8Tow/LEoKPkyuQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDNTCCAtugAwIBAgIUECsnQP2ouWaoN8GWtDfzIzOjQsAwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEzMjNaFw0zMjA3MzEwODEzMjNaMIGGMQswCQYDVQQGEwJOTDEOMAwGA1UECgwFQXJ1YmExNTAzBgNVBAsMLE1pbmlzdHJ5IG9mIFRvdXJpc20gUHVibGljIEhlYWx0aCBhbmQgU3BvcnRzMQowCAYDVQQFEwExMSQwIgYDVQQDDBtIZWFsdGggRFNDIGZvciB2YWNjaW5hdGlvbnMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARwjW/2vr1LC6nuCHAaEIDnGgbxKikuIPYOd+SFPJ2yVlAEdz5O6J5nXVodiQP3WCaeBFdGwZTxOjD8sSgo+TK5o4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANBQlcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQECMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFM3bsoRYxPuXAB71DUGiFlVsI2pOMCsGA1UdEAQkMCKADzIwMjEwODAzMDgxMzIzWoEPMjAyMjAzMDEwODEzMjNaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiA4NIHd9nrtJJutNFlPr7hMwLAG5S0Fg8/sDNGgTiO42AIhAO8+HmKyw4rg55MS25dFf5zZYvQ/Gu0ddo97T49wK3qn","kid":"ryvXsisPPeU="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Sint Maarten OU = Ministry of Public Health Social Development and Labor serialName = 1 CN = Health DSC for test","notbefore":1627927778000,"notafter":1974823778000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnRYo0qQ5BM+B3lWzaaqBhgTqQ99w\nnzj078WYakRSXv7LyJbz21EGEQkNpe3UOlENX5Q7RdzkrrXFbs7pHfNDpw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDPzCCAuSgAwIBAgIUAc0BMCshHZKc4/+JL2MOXBv10d4wCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODA5MzhaFw0zMjA3MzAxODA5MzhaMIGPMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExHDAaBgNVBAMME0hlYWx0aCBEU0MgZm9yIHRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASdFijSpDkEz4HeVbNpqoGGBOpD33CfOPTvxZhqRFJe/svIlvPbUQYRCQ2l7dQ6UQ1flDtF3OSutcVuzukd80Ono4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANTWE0wFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEBMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFAPQ7CLWYkeVzUr1/A2Qhww+QJc0MCsGA1UdEAQkMCKADzIwMjEwODAyMTgwOTM4WoEPMjAyMjAyMjgxODA5MzhaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNJADBGAiEAnQEMyEA+/j3kz/5N2bYc456EmYIDMlPaWa/8y9CKAhQCIQCz6RYG5r3ZJ3tRmbb4n2EVBGUVjcldIZDh1f2R9veJpQ==","kid":"ypEjzbYNqEw="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571146 ST = Berlin","notbefore":1624540407000,"notafter":1687958007000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUdPPsk9xzY1vM1zdjgvHDsRCST55\nY9SJBJUXI5uqGb6ckpT7xQFGbm+WGQuFJ9E0w3Zyyqb9P/bsMJQmJkrpkg==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"0L7AaIwu+EY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413462 ST = Berlin","notbefore":1623059747000,"notafter":1686477347000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqD56CIMWer5HDRhCpUrq5lZ6F8Wr\nFPy/IDwjgb44oE2BELk1xBbjXvz7kSPpf3jp48wPI7WWLcx/V5K1A6obNA==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"1+da8dKEjlE="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382898 ST = Berlin","notbefore":1622717182000,"notafter":1686134782000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtGEETBc2arnjxxBWO3aDW+rwFgwm\nhqPbxhaUuOEC6kkd3GPhmXPFYKtmFM4IQDj1Cfqu2bIHa6RqF9uEMbtxwQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"2BGoyFIyYPs="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460071 ST = Berlin","notbefore":1623423164000,"notafter":1686840764000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeL12fn7+nUNW+9T9zJLaiZF18rfz\nL1I735fT+3zuKryR3K2oMIMBDFbrrLVva3UeOEZaz+sUwUKWHMg2HgQttg==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"2JelGO/ymxQ="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413213 ST = Berlin","notbefore":1623059345000,"notafter":1686476945000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtgz2ifmTj/vZbBaz6xlNCdQlw4FQ\nU7v3dUrJYQEigk4Lz8dY1c3pGzYO33TjrgN/Qn+yHaYMHl6+06Gk7AuW6w==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"3LCRmucB9kU="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382791 ST = Berlin","notbefore":1622716844000,"notafter":1686134444000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8nZrLqMlw5EvdfvJXgxb2rXj9OBT\n2UWBqAFLeCoQXuY+YOZJpUtL4wFQHMGPbvyoWvvcfWtrz3ZXHwaaigQG/A==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"3jqajzfHpKE="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414054 ST = Berlin","notbefore":1623061369000,"notafter":1686478969000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE71N2pH6YyC6gfUHwiEJDzIxwMIW/\nHs+Cgn/gPQbZAkFcyX/LTE2j2gZD8hLs55TErTTKokvHkrEOWtHYkIDhyQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"3lrBUHc4iQE="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460099 ST = Berlin","notbefore":1623423223000,"notafter":1686840823000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5sqOpW4x66Hmcposox406LFRWyGI\nvH2CA+Di7pgvWYIJLX7soTE36YKx53vPYRUhKtzexJ7nI90MtClg6NsTAw==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"3oYtiEZ9wp4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413639 ST = Berlin","notbefore":1623060017000,"notafter":1686477617000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzma5iz5ZBIh1KDZhj9fSnqJoKK9w\neOGB/91w6FpdAUjFEKGDphj/MdGRfVro/gSyHRhpaQghZJXRDECOuSAzqQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"5xtSr6KkAGA="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382995 ST = Berlin","notbefore":1622717670000,"notafter":1686135270000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8xghqNrE21susvTQHV9fwN3RWhBI\ndCYBu3laCz66NasqyquT47PJXuOifSUiNY2/qOyDuu0Ae8MKIHeUmN5wdA==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"6FNkACSMLEc="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571164 ST = Berlin","notbefore":1624540468000,"notafter":1687958068000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHrXK9pJSpMrEB4xUrXTTnb7RakIR\nzDtNh6ugnjfV513NFsu5rKopJYYDOk/Bfy5MyNug6nD3kSSUUy5yePrgmA==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"6VdOPLF8/Fg="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614703 ST = Berlin","notbefore":1632294727000,"notafter":1695712327000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErm7fxPeto31KuUPtQl6VxVchANLA\n6NTLFaFJ5bupx2WsBsICmk32sqx46/ZCHCmiFqGyfYv9IxatTrP233n5zw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQUSkrdg8HjBhWr6tNMjLTsDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA5MjIwNzEyMDdaFw0yMzA5MjYwNzEyMDdaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjc2MTQ3MDMxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABK5u38T3raN9SrlD7UJelcVXIQDSwOjUyxWhSeW7qcdlrAbCAppN9rKseOv2Qhwpohahsn2L/SMWrU6z9t95+c+jggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IYyaHR0cDovL2NybC5kLXRydXN0Lm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmyGO2h0dHA6Ly9jZG4uZC10cnVzdC1jbG91ZGNybC5uZXQvY3JsL2QtdHJ1c3RfY2FfMi0yXzIwMTkuY3JshmlsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwHQYDVR0OBBYEFKMqWypaMB2Nn78KOcFSsibSU/4wMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAVUDqZuTAyc7SHOPv6GANhJZpoMFRtppfWHgjqFSVmKlbhmIO+AJm3MGgGhzVUQ7H0yAphrmSDTBB1lFZJUkfhrTjKvfRUm0m1zOdDMmYtKj8dmH8tb+x9vYK8bkeG4EAyo7/90DLiWqVd5ovjO+IHpKn62kcNjMv2wTFAbphqtqRf9vsM5c/8hBhdIxb2rsKRgf4RfXTBixBTsgcRcqLns1SK84+JgXffHwHpRiaEUr9l2X6GbgsFWmGR4gZlpy++QMgJIxkpUsElNMXHVMfOfcLmaf3MFN72wveVR9aQbLZHPCmo5mH16QoFgziDkQV9QZbOxiGrLhSRQsWf8MbJax/qDXGi3wTfG+FbLfe+CgazfIY+Dj74d+GUp4AVxgtrzxba5Y9yqaudjBeyJ/QQF4skWG/iop2fGr9ruqZUKgmNjcbif85Pp1WomkpmgJ/6dt+dlahHtOVcb+VEScPujOkZea+qwwD3YKkQFuZ7vpnEHAZmPzoUYZErISacW7QCIWyYIsiKC2bHOYCwZYXEQLP9BQGcdDCdj2r4u7U4QRgi4L5yc1lbrgXybZQ9k17jIUADVz46QtlOQ1kwk6qLzPWKGodb0ONj//E72e76ihEJxJgUDl79h2Xcs3qztZ0zrKN2Eeaph+ML3uXgcOy8cn/J9aznu642sNAR4CZuh0=","kid":"72XVTQ2A9Jw="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383046 ST = Berlin","notbefore":1622717862000,"notafter":1686135462000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkkxNdS0EZvjP8j17j2k92vHZpX3q\nSNMDbCqBYPvmqzj1jnNEqsAZSp8uppwoShgmQPdUSmC5jvSaI0PiIRUJhg==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"7XLhQx1KXdQ="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614776 ST = Berlin","notbefore":1632295062000,"notafter":1695712662000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZftKRdrOhX1qx8KzPyrbXB/V8TYi\n2ZAsEwcr5gkoSkiPWyN+LH0BaRwG6HbqfjpqgdFztwj6PIRisTIQ6LYXKQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"7byt9scureM="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413569 ST = Berlin","notbefore":1623059919000,"notafter":1686477519000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEOl2NFM+2gkakrrAa7g+F7KOXRziS\n4ydbxiNbm3XTu+L9LP+oSKMLOeJOBcjJA3RqrqAiWfoMriWGd0LRYM6TWQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQbawDmGIpuNyewGKrbDNN8DA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDcwOTU4MzlaFw0yMzA2MTEwOTU4MzlaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0MTM1NjkxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDpdjRTPtoJGpK6wGu4Pheyjl0c4kuMnW8YjW5t107vi/Sz/qEijCzniTgXIyQN0aq6gIln6DK4lhndC0WDOk1mjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFMbuu7+RYSVgR6r70yxBdw11uLulMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAd5IVk3EaWaTMnV1LsDjeQ5/mkThChywdak9m8894RiekGSvQhVrJ+xllejM4nH9BVfTIWCgKkBlrjRZ32OyVNFJXHy8gq6GO0WNSCPXd1D6xShgxePpMeGoqEdJ/bIAV0P1pq3sWpsoOLYWFjOyypJYkKzS6Oq+qzP9yU+D84GIgv+zpJTKuh1ArsicrMzcRtQzs2rsoIqW2d5aiW42W8jLWwwrrovQaJTB/hgJ7q7m7ULVr19PsVLJCbTxJB5DvaHeAk4JBAFnnWLBPG3mgOIdlFLzsWzVyRFGwTr/kIDXrDtH9P7RFGR7tROhF4hO9Dq7Hh5Fhqo9grX2/20B9e7G++b1p6hEPhG4tawhByZFJTNZjImISGRphRiQtQSDfl4re0XY0gQ1lRHHlg9JQhgskoa7eqqeWJ3vtu++tpGlXQZRfMWGd0BVPiX8B9dvpURizsdZrjIcpDB3MonsT2lHY9uVjJCrhpy+IEqa2vDvAIQVSq4E4RQ/dF5xa34CyujDAfkT9tdgJ+59h1TsaQ9UGSUklYfdQYmoZ7D0ThTQ7R5LRsXitMOKMWM6WYQNLp/QV7fSrfmXh+0IbI9yTHe9aETMiKbqWpSTzZIwXixUoi2vj6xXTan5JuyaOGxTjsSQpWP/nJO3aUfWr5YM9vSO6TaAcIgOa7xyH6eGcptM=","kid":"8AnF/hcilSo="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571377 ST = Berlin","notbefore":1624541075000,"notafter":1687958675000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE65QJlG4NQ1UKM3/5Yf6n9u430S0g\ntEarOF4e+WrILwUamksO2zJfSgAwXJV2ZzzenNRml1iFffdf4V7yxzgLUw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQd3pDjJDBF5H9c7naNT0u3jA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MjQxMzI0MzVaFw0yMzA2MjgxMzI0MzVaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY1NzEzNzcxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOuUCZRuDUNVCjN/+WH+p/buN9EtILRGqzheHvlqyC8FGppLDtsyX0oAMFyVdmc83pzUZpdYhX33X+Fe8sc4C1OjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IYyaHR0cDovL2NybC5kLXRydXN0Lm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmyGO2h0dHA6Ly9jZG4uZC10cnVzdC1jbG91ZGNybC5uZXQvY3JsL2QtdHJ1c3RfY2FfMi0yXzIwMTkuY3JshmlsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwHQYDVR0OBBYEFKhG83SeAxJpBIVFkUd8NB5OzWGlMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAeBhaPRipxAT9QTlMHCtLzHpdHwDqpJ182I65QxwPRxYBZ1tAZUNi79wDSd8RheVg5RAJzX8MJiayp0RnPk2+XHuX8fS1LS904n4ZmePASjohR6UHR+BeptPILn+EFVK6UxpGEm1zK8lFIiwIeOdXjNSDtObNRum2gzhOTzSK+aLkL4M4JweA3nKddua39ZVffW9LzENOLsCrsmj4GynaPpF3XkWFPQ4+PnfR3t4snMOy+1QoteCEbjsYhC1hRTWTcn+FE0VtqDu/QPqeTBidvv6n8vRMp9KHmh3Y7UbdLeFr8Bi8lVxwGqFL5I6n0/arJiNBq2n9kS078xErKbOMx/skVTEYM/TSAGfKe/UkfBDLWoMODfKroMWYbdqkqLADgiqyMRvWh0qVzwD+lssnSKekNnBSOUqy+WaCd7RoHiSU5SMIFhhTh7L9d5cmkpfzRvGZDuxb1ufwbNpoXqgqSkmP2/8+3dRQ2BOwmMHyvs2tUgszdAjmiCY0I1EQizlXCleoxlKjuBW3dpdJr2+wHG790+sjkwZ1yEAp/97V2Ru7WJaIbU4WcraUN6vwzoTxPNvxVgllDOQovaJ7iWzJWv3eMBhrZVTzcfitbrAPAo5vs6LoKNEcRjWKUaFBxUmeVN5tIyy3jjQE+uHAjTixqc+X04+3rnsEmaHsjnf6ZLo=","kid":"9IZVOkJRZPQ="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026523255 ST = Berlin","notbefore":1624011175000,"notafter":1687428775000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzIzHRqk76vDGIUAj3dIo3UVev41t\nak5P5oxO+zaOlsKnxUNbo9yqIcpOo7stI8WLrif4RRaiZoQ0tvahSHH2iw==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"9v3FozjKAUo="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413994 ST = Berlin","notbefore":1623061275000,"notafter":1686478875000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEM7zYPRk1r4viA/oG6BxLec1shhb0\nJoDGjLAUuPxmGSMw+aCQZUcY5MtUqnVD3x//kviuFZDumf65i0V1o7Gsew==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"AQCGDydsS1Q="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383019 ST = Berlin","notbefore":1622717764000,"notafter":1686135364000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuCgNX5VUmp7/lN7/UDF5kRDz7qvW\nnpgFOKwv1AxJXbSvwJj5ADOP9wGAsocoSJtPr3LbjbmqAqndrgr3831+tg==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"CvktK3hdjeY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413231 ST = Berlin","notbefore":1623059412000,"notafter":1686477012000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExfciFuh1jL3LBPzaNAVmmVTL87eJ\n6wVctSg393nUcXxVL1v5vCgp6jWlRdJglVJj8jRG0TfF3OLjDUHAPn2rAw==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"DusseXrzqO8="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614837 ST = Berlin","notbefore":1632295172000,"notafter":1695712772000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6JUSmYQDMdlfXO6t5UIh71Hhib6D\nZ7VFVaRHqIiSem6blCKAJ9bSQoEJDjl+zrXVBbnTZYJAtFXt+VBqIzq51A==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"EDSWY8Hnul4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614916 ST = Berlin","notbefore":1632295270000,"notafter":1695712870000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESb7iWoF0mDYKwlP2EkoD9oJdt0Ew\n3tomFYMPK51gX10VgQPMGAUhwigTTGrSJsT865r6sshKSy20xzsrMZ3buQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"IKMstf8yj/4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414212 ST = Berlin","notbefore":1623061818000,"notafter":1686479418000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyxW76RQrbDUSOEHxYksWk5CaGGyg\nxDJJ7A9jRiop+FlpwmPReFTmJNVRMCjE56zKy1oxdi4KXCHI/yJIuw4zWw==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"IZftFLRmKGY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026164195 ST = Berlin","notbefore":1620396932000,"notafter":1683814532000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEorGGRfEic2GL5o9XnITdq3nd9d7p\nWDvy6waSkDMI633+wvCluSBV3rWR/QkL3FdfpcL2FOCWaAR5/sXOihpfrw==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"L7XIA2gi2ps="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460044 ST = Berlin","notbefore":1623423085000,"notafter":1686840685000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqXPIlxahww0kgegwTgRNQWpChqH2\nPfXelyd1D77uo8dy08tlDhsE7zpyzWXfZTUAMxPtgw+JTqiaL1FQtvdkyA==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"M8bcnysCMj4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382913 ST = Berlin","notbefore":1622717283000,"notafter":1686134883000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKPuGAJsDLPU7vw4aDg52nFxuxz3A\nsJtWUmtsY7tQegwCVfll+e5sQJu6y5CZnOD+gKdMKfnjuB719z/tF9qB9g==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"MxhfdcoHinc="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413347 ST = Berlin","notbefore":1623059592000,"notafter":1686477192000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEszk+l0BVoDOXZg5SKeeNbLUAggqL\nKB2a3NlMXWfxfdcdHsPqqlKWcFTZBzD3/kIyxJi5rlxk1Uk2JsFNEbjt7w==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"NCdyt3s+cak="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382843 ST = Berlin","notbefore":1622717035000,"notafter":1686134635000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUCSPQOg4hIgEJzD2PHFjccnQzSQI\nvYs+gbBuJqHxv7tCAEpyEj5XIfjjfMjNxA+so+AdZyEfwszhKr2A1/nVSQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"OKpEjMo/2MY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413541 ST = Berlin","notbefore":1623059843000,"notafter":1686477443000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/eGWuKcNV/od7Eh4EJuiqBPv+0yP\n4q+qzhOlNFdkzuuWy6l+hhjVHxdfxp4XDVvOUV2D9wff81/tNfBuc4pCmA==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"R7q7yd90ZPU="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460123 ST = Berlin","notbefore":1623423294000,"notafter":1686840894000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh4UMl8PsQUsu36Hq7xK+dyGWGrEL\nxsfzVOny20ZnkHhyBYxBUIGoHEYl70bpzjFBJN4WLGtilZD/0aLWE/+ykw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQfctFzDulJQkaXXsawJdCOjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MTExNDU0NTRaFw0yMzA2MTUxNDU0NTRaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0NjAxMjMxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIeFDJfD7EFLLt+h6u8SvnchlhqxC8bH81Tp8ttGZ5B4cgWMQVCBqBxGJe9G6c4xQSTeFixrYpWQ/9Gi1hP/spOjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFM84saHDYJ3yYLXQt0OMOTHwLtKdMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAzsOMos1KU3U6BbaFEAjJqc79DgyM+uES9vPRaJKcTyui1zPoQyOmZzDgFpK5ee4UsueVZyjQ6JO6DCKfyihxPlA9LyXw5ZhC6bLqf9Z7NF0uz5hC10dPeI4KGAKROcGMj57skzP1/T9qxxoserjTEzcWhRs2pCpM3aBlNcDfVYj2F0Sy6HbozmcWhO4C2VnIjj+sLtJX5O8t31p/vaoc1RnZd3pNkrxwZXRuqi0XDydD5fZCGUx9aAmncafDDvH2YUPzD2PmysuBz/fk8su/oHbotZcezGQsu/HqEo2mqrJCMY2lov3nw8p3dV0TvFVaHhKuUGrhyg31BjNM6Opt27Z5SLj/5M0JVN36d9heTb6l3wbuYbcobm3m9rXAnadHc5aJH6m2QjIfDb4KfTjP02B/NtxbJzjHnIAvLWzleP3h7kWiHwMK6bdpl0XsxWC+pu+lzHrixX6vhCtBUGiiMiOltr52wbLGsjVMCwTgcQn9q8HIt0sRmVs8y/rYgT8k8IAQS0jhNsFvW4H5bUvT/aSuIBoTeWROrlukRlZqvLKorpRz30Z7P/o6BIb7BYcubrzOe/qQEfyNDynBddpJHLiudW1eAnatGNFtp/s7Q/tnQMm5RiD9qOlONtfi3ktU+IKCeAMch3tE4ErphbI7dfkE5kcZ6LKHv+gpVrZz/TQ=","kid":"TGjTR+Re+yk="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413860 ST = Berlin","notbefore":1623060911000,"notafter":1686478511000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEs77Dr92zb+HOBL9gdfCWOwkna+9D\n3Kdq0HgUqpVByi7kqykRPAFKPZBA771qyoBy0uHFhdYIzNAPzdHj7KrPsA==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"TpQIkAHAym4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413417 ST = Berlin","notbefore":1623059674000,"notafter":1686477274000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEopaKkUUE4nCgNpRBE9ugmShuJd90\n7aOocVvFvxPLxiJ5qqQ2pq/GVsq5Vf/0V/b1V3rAoKO8bMvxP4jkTWTxqQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"Uj77p+qIQNs="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460026 ST = Berlin","notbefore":1623423021000,"notafter":1686840621000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh934IiMCsXp977pDeG7Wi11S+uGG\noem6nSNbtCILcST4+/FqGlLOBJvIZPSh3hTHx2V7V+3Lzqi6R2dahOno/g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQUIKkn9dGJ+Fvw2iuEU4tejA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MTExNDUwMjFaFw0yMzA2MTUxNDUwMjFaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0NjAwMjYxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfd+CIjArF6fe+6Q3hu1otdUvrhhqHpup0jW7QiC3Ek+PvxahpSzgSbyGT0od4Ux8dle1fty86oukdnWoTp6P6jggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFPdFwMQGQturw7wXqRcebaB+nz6vMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEA0XRsfatBY5BT/HfWbUQvQXtisS0xp2qxVXZkgejDV2r90KsxGAAM9MZIw3eebywbg7ygwhdKwu4ZYGdFpr/cYH+j5pRPCjYoJOsjCEDA7GDtdWenQruM0JcKI4KGgtm01LZGT1L3rBHKh0Dg9fOrAS3L05ZR+cQ1oDKrMUuGm57CDTgcPXmxawmxadjLKOagfPpOkMmZabNMDd3+06gIQ7KfH3BWwZHYbqkg5dHHyb6cvdwQarfLjPKlcWrACWX6KyvYYv8Aj3fxu9w1RYCA1HqOGfIWl0in1LoCJhYLNb4GcS3feqhvnUAKL0BZN+5oSgMbQfi4hqGcwhBKNH4UVfnL47f7dsJxr3ob9U+VLkCUJ7yC6FPjY0pefGgsgQl+9rabBjNaSLwjxoOmEx7PbnjU5xmxipYa7LK+gLuLfZysu+VAFUXAxSFljz5cKWn80sqgSchzOlJRobCI/xTrziQc74pRGV+eWBXpybRu6bvZ8Y96EHpbdyWsG9sDPCeJgiq5XdWfR3JUprVsQzaEBDzBGq1Y0fWxOOoi+gQIQXPvx9sBjc9fdOvnFEODI1NXotab2LlKztNTQU3eEBhbsHjg30a1pIVwiL/nmxsMLxxiNJAZ/9t0D71llbrSBS665BTkmObNnr1xHoS94wg4L9UfinLFsSkHpTer+cQhrA4=","kid":"XkVWZqUeeFc="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413693 ST = Berlin","notbefore":1623060128000,"notafter":1686477728000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyV/EBSORniEE7SMMNmvSWT3dOAuD\nuviDHFv7rvnrcZ2wyfQkIjyYPkrtVrGwiNdwOcbHKreB2eW6li/+fDQPEA==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"XuCERkHu8kY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413897 ST = Berlin","notbefore":1623060976000,"notafter":1686478576000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5eOmRsTsPlyUVzKnWK3xYlY04+DO\nffgg07nWx4FTa4mouXQ9nfCxmMHgpuZv2RxbVSzYzewjcmKaknNEYDdCdQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"Yr8a8Rd+zqI="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382773 ST = Berlin","notbefore":1622716737000,"notafter":1686134337000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZM5AMBImcqdKPFM6P5xx0LmZxo8\n1NcnuydrdPUQaaa0NhsRctuX4qB8YSd2pG12ilwSSfEcgju8I7AsFJSAOQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"ZDoFfkn+yhY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414081 ST = Berlin","notbefore":1623061438000,"notafter":1686479038000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaOhuajeY34pPu/12SnuMv2qlG8Er\nMOj7s0eAEM2679YVzsiZWLIp1S1jNWsoIJJTEiLWUtj1mqCsMOR3gA7CBA==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"bKmas9wa5tc="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571270 ST = Berlin","notbefore":1624540790000,"notafter":1687958390000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUtMktlZKpvOfwhumIvsvpKMWE1Ly\nMq32RkRCbVM5TBBxHsCUYdXSjbqPK3cZ8tYkCkcYlyluKbQO++HaSsGjSQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"c1XrnEBoj/c="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026164168 ST = Berlin","notbefore":1620396811000,"notafter":1683814411000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsLa/zRhSxxsmrPE/RwPNKXGblvI4\nJrdqfPNYpuPn3TpkExb/vod11MuW7BismmErZcJC+oWuItW1UH+wcXHJcQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"dhSzPDr4G2M="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614758 ST = Berlin","notbefore":1632294922000,"notafter":1695712522000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExfzglJTFBrKFErvCRkqtHq0U7O7S\nmxzRntsiUENJFzkpxD0rHs+0H6Qb23WUiaDe368iOrWfNk03uOEjviJurg==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"hWoyHrtJs+E="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382931 ST = Berlin","notbefore":1622717389000,"notafter":1686134989000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5D4cdY3G91kHagLyAGon0ufC2jqz\nQ17V1wjvYHOLxZSY1evmQVhovIVUS9AU5Z73aeW++2ZyNUFg7L/9Zk1E7g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQXKmwMnHFMAedCerBwjj8EDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDMxMDQ5NDlaFw0yMzA2MDcxMDQ5NDlaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjYzODI5MzExDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOQ+HHWNxvdZB2oC8gBqJ9Lnwto6s0Ne1dcI72Bzi8WUmNXr5kFYaLyFVEvQFOWe92nlvvtmcjVBYOy//WZNRO6jggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFGZlyYlSHp7uqb8+OOxFJBL0QQTuMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAbqfEiwNYfoc/sMps88u6HXcUEgpRXSFbiwepm/Z+CeAKkqUVvby1yzkMSNndgSrx3Hxd8MuueDCO7qdk1VrygTVi/njW1WIAdbkFZItP7adDeV8eUCOo5XSQenJInxoGddBP85vV+FA29i0KYcJrR5Uf1yg83LlRJQPBd78Oa8jAC/IcGdXL8HUJ6GxBvlZSgBwVhCy7m6nLbD2nlaDkvTKoPUNSq8A9YICjUw8+epNRRP1Y3LG3Gm4Ky7hBtCi/VN5q9DJWNdjiYXDxH4r+vlj9h1osjJ0mxuZkjcNngzey13Yd0cZKIJKt0JkwXresfO6towM+2bK/q8IZkGzeeqPmRkxJN0EDyFVKx/ssiJtPKrApJb09SWOJkGTsP0Osi9KUjTA4PO4TEaAoGUTsPfIB/+by5G8SiOObUeHk07By/9B+dGDDL/fC5qN8hmN5LXp1dU8Mw9HppGRvjxRGGlu2WZ0+tcNDp48Ab/KrsG9sAnH5BiWPP3RESK264W/FNeB41R3IvklaBbdki0HiNAhmgxC6R1ncP1zinFakcwnBCI0yTugIjnV0At3CYGS6wBDmI1Zmvhe+/38UbzFeAsVUV2GRci+UvWC6aALFcnTK3Bmgzgan0y/MRqLUtPbFyqwcPOfwnHq7u5dcRSe5C1ghu627wVyyNLdnrNJvLLE=","kid":"i5SVuCsR5TA="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383125 ST = Berlin","notbefore":1622718187000,"notafter":1686135787000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpobykjScOX2uy+5C/BYBXDRcVUVO\nBDWLUgUaIhP2q0GoF8FBBDYBjx1peWhf4Nd+rtjBivr5WDcFmjMVn+FVzg==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"izUDZjGtHWY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413286 ST = Berlin","notbefore":1623059521000,"notafter":1686477121000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgxLpjMDX1/tMRghYLQKMI0nK4UkZ\nuK9pnAAJTC7BeQUaHYFp4pJkC8z/VHcW74CpwTeTRITzs4MZflkN/WHtqQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQQFnWzg0kkF13NUF3F6qLxDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDcwOTUyMDFaFw0yMzA2MTEwOTUyMDFaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0MTMyODYxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIMS6YzA19f7TEYIWC0CjCNJyuFJGbivaZwACUwuwXkFGh2BaeKSZAvM/1R3Fu+AqcE3k0SE87ODGX5ZDf1h7amjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFBfOKfHGrkBesoFI7OaSGsO9eaZDMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAwzERLEOySg0YrSvwTA536v52kB17LEKOnHJ4R1HdtxwPkjCHxOEu9My/L+XpzLxq3DpvL3j67zqhkmG3R8qGhrSC5L2rWhojBsZq6E9bH3gf7y+TN3SvwPYiHuHV0FLU0IzmCXSG9xh4lD6NC2vUUWKxqZ2pR3EdD42ZtymfyRCMmhMfkGuePDOqR+kl8rU0btaXOmpGaXfcRVY6MZ+EpBuVvLk9UpZpwub1xM0Z053O9rS+QOIYpJVFH5aQwnQ5JvLa7ip15ls0F1egNA11Wxr5AK4aWp5DBVPTqS5tESt++FQGeaqf7w/sE7SKS89CK+ySpC+MhZsOjFnvn++53y88E4bphaNbWjTmvt3wvDxc/9/Yo13OvVSq173HC7TVZI1runjRnfKw1260N/3Hz8clWnNTmCzkVhhsvRrBlQgwpKhfgIAJ/XfMRMETxOB3lAohQSrV44mWo1gatF/BMosifvFKIRf2o0BNy/eH7QBQbteQeBUXNG5eP5ZYD4irKIvUOH4t9+9to6wiXA79OWB1jwue71/2o28D7XIS0EwafgFs4i1kBAVGzCLV9GI+n1IYJc65TZ6hEX1Z/+/JBR6pJDVdpbHzGCeDCHM4IIOPCwTmYyAzaGOXssNHd3B8LE8VFpSyZMtDM7ySjFWqvFOueQUO85xIxeFl+J/hO8k=","kid":"juskqrNQf6k="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383107 ST = Berlin","notbefore":1622718068000,"notafter":1686135668000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtLZ1N2Y7UQHgRO3yKGyRTsJWdYFG\nDld5kbglFGHrMvZQwa5XoBclH9xTrP3dXcTsgjnml7Hx5YZOnGHhJMrenw==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"kjEx2H7huNE="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571313 ST = Berlin","notbefore":1624540920000,"notafter":1687958520000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx4HHLyxeH1wp/aPCCwyRxWVEcfUA\nLP66kgwanudG4b8upvGFMsVXpzg0ohEParVa912A9UBuCkjDM6jFAsgZIQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"nHmZ5K96UY4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026317104 ST = Berlin","notbefore":1622032330000,"notafter":1685449930000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJmki+G1pd9DNiLX/eT709p/ZeCd/\nmcjrmRLoTgP6nlDqJxUvZ0rQ64y/Lj2Vk5ehGHtuV/RmyuNXJYxFB58bdA==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"nPKEYm3gXzU="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414115 ST = Berlin","notbefore":1623061538000,"notafter":1686479138000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd+grPnJ58prZvOeLC3vi9P2mnqlv\nvGNfsbT0HmxAVHAoNB73PT149IhGWhNZFSMFRel7vu8vi4wPoaSuIjraPw==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"nTrG8glLUls="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414160 ST = Berlin","notbefore":1623061647000,"notafter":1686479247000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPdriVdFsidKrE0nr7S+75iO7+8LO\ntzFp99++4BLqKKMKn/mAXvgkInEN5xqsifTYFWk9KmLcUGbD9dtwQlaA+w==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"npo0ZWgdQSY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460008 ST = Berlin","notbefore":1623422950000,"notafter":1686840550000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7f4SNNst1BMsb6Ub0yVCz01aDWB9\nI2/ajVbLyJpTr2pKwSocQpiM0mcy9XX+dMYYlUaQVBOmtoE//fnw8w2vDA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQa3EfpIJxEQWbFKABTToYxzA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MTExNDQ5MTBaFw0yMzA2MTUxNDQ5MTBaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0NjAwMDgxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO3+EjTbLdQTLG+lG9MlQs9NWg1gfSNv2o1Wy8iaU69qSsEqHEKYjNJnMvV1/nTGGJVGkFQTpraBP/358PMNrwyjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFOnH1hRU8J3IP2P3zqqdI/PRssfHMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEABP/zORyij1UypZj4JppvMe5h2warlNHUqqf71W4IGaJKAjcKi2kazMJsyhJH25csxg0MaUT92YZYIRx6Iano+heWPAfvMvymfruJvCH5Mt/6DJuaW+8D1IQa42Qy0m/n2OknEquvui/XEnZEPEqDq4ZVTnM/e2kSM/ieue8Cid7YS7kLOzwcTJkQwq9duc5cwGgaQak6HcNpJtl/C3j8FvsDK2n19JPr7XI2J0RNnMdkB+UH/diOgihRy+WMx9g07bk5xaeoCE8HstlG0XmLKDvuKQhAtd9l869120LzyT6XXhdQ96mLaYli00wPahgLRxKFZmZw8YFjyzFU7MNVXz40OHQpejLUf71MLl+0X9S+VABE5KOpl3IY5smqF1CNCq17bEMzt9jFo/ItqOtq5wnHnBbATpFwYJIX86xHcikkOHLLJZS+Y1a4+y6/Ul3l4Lw8WPaFCOwdGXDQ8gK+sEWkOg4y2yA1+U8XAAsmRcjSpK7hDZL1wfTyjnN6UhD5ry4bCGDdurTCazdyPOoTaj9dtIpL9NiN+Wd5reaaxcNinmQSyufBSdPvdMqAPFa0dq3eeFi598qm2FXcWIpHg/jzv31ZTfcHR1Rc9joEY53ReCHxeHEhsaAeINWOCRj3/G+E4mfe9saz7ppdp+ahb6pMvJxvJXLqqweZ+GznqiE=","kid":"r9YkEJZgi9k="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571191 ST = Berlin","notbefore":1624540537000,"notafter":1687958137000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbQZPoqfjpTx8m/wAZZWk3uoDxzfp\niISsNSuZg/+9VN/cSefrEHFRvQwM2AjN6vOjhzVMdjZ14MSRJUMJEu85Lw==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"rKMDA66RiLE="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571331 ST = Berlin","notbefore":1624540997000,"notafter":1687958597000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+fBKs9tgAlGoiBIglL4JDLpguDzB\ncXqCuIulrUkBy/wZrJtv7fsirU/YCvcn70rPzMCloqePEoDPCf1wWX8Dpw==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"rXP9L7xddL8="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414197 ST = Berlin","notbefore":1623061757000,"notafter":1686479357000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE40rFr8baZEDNvONEE+Rxf5ePnZLL\nmqR+5Uwx/S5I2ylMijZyZ4c2kD3OyTHlfTNa1mS09zXnXNJKqZyqi3GGQw==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"sYXcYixrOGA="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414133 ST = Berlin","notbefore":1623061594000,"notafter":1686479194000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2TqSv2wB9nB0Ev3u5VmckxWzq/L0\nfvl1HVI3ZBXCF+7k55bo0zUABUPBz6/e1PaDxDCIS8+NybrbpUT3w5D3Iw==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"vjm0I2ATJ+Y="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571243 ST = Berlin","notbefore":1624540685000,"notafter":1687958285000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDRVIqu7uo4HOgXlXyxYBl2L1arxx\nvDfwfgnYHjgVKQpFEj+hV9YEjSECJS+YrhGr5RXZU7eRzKvfKtRI1POaww==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"vq08l/LTxhk="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571119 ST = Berlin","notbefore":1624540344000,"notafter":1687957944000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElGYxcioPZFzAfJHtsB07FzUDpJlc\n6C18W2kcnCGEE1ujahisK6ZvE+UoSGh4ABGNQOX8RypMp4t8bzj7VAqI7w==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"wb/2450PPrc="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571298 ST = Berlin","notbefore":1624540865000,"notafter":1687958465000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6/QS0f7r433yqdq7XKh3OOKhOEig\ng+VVixYEToozbg9QgAqADIZYDe3WEQnO8u8fqdzd2ouVZo54/Gc13gszYA==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"wtYpyAmNmdk="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382968 ST = Berlin","notbefore":1622717573000,"notafter":1686135173000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgMhpOktfDD7Vn7Wm+BlHabFbpOs2\nUmCVrtIpcOFpIlr8+2wHP5/VSUZslExSo284fpwuoJ5eKcjDuvlCPjZNhQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"yWCRdph8XJs="},{"issuer":"C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA","subject":"C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020007","notbefore":1635986474000,"notafter":1961714473000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESDFA3IUS71aOIaAiVxG9QDby5hfT\nSqPSuHAagC8/vhKbIG6quGGAQjRcxbjxB2+KCt8RhSkBzTPpzX8D6iSpBA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICmDCCAh6gAwIBAgIUN7QAlQwRtBkiAZZmQo6EuSzr2TkwCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNDExNFoXDTMyMDMwMTAwNDExM1owgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESDFA3IUS71aOIaAiVxG9QDby5hfTSqPSuHAagC8/vhKbIG6quGGAQjRcxbjxB2+KCt8RhSkBzTPpzX8D6iSpBKN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFMkTYUd+m7dTqQrgXROc796CHD2sMCsGA1UdEAQkMCKADzIwMjExMTA0MDA0MTE0WoEPMjAyMjAzMDQwMDQxMTRaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjAhZylOip2hsx2QTptQMSKUwjmA5MSWxJi01hCB2cUQWYWBLRP+RzxcVC2tAnUpGiACMQDoNr7Vs/ID/BJMMHlkj9WAfb1vbY1ePMZGtGh4aNCi9B90uZczIQctXmP4w/o6G0c=","kid":"0NQWnxTv90c="},{"issuer":"C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA","subject":"C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020010","notbefore":1635987788000,"notafter":1961715787000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQEqBzWkYP17/i2b+EPcLpiQvTKLx\nasVDjA3A7IvRt9RHjYFIQGpFQCR7ZJLD5XQNsjcFfHzxwVEITkb5M7fIyQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICmDCCAh6gAwIBAgIUNe+sDjaZPIfOw8OIMwqniNZ1ABEwCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAxMDMwOFoXDTMyMDMwMTAxMDMwN1owgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDEwMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQEqBzWkYP17/i2b+EPcLpiQvTKLxasVDjA3A7IvRt9RHjYFIQGpFQCR7ZJLD5XQNsjcFfHzxwVEITkb5M7fIyaN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFIrSwiSmYianLXQsxR6ZAFL5/ltIMCsGA1UdEAQkMCKADzIwMjExMTA0MDEwMzA4WoEPMjAyMjAzMDQwMTAzMDhaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjEA9UwmICswUwNiWRzvb4V+U0Z7qKebbIIldgtTp+nHmcme5HGjKc8UuT/yvuzzK4qoAjBvlH+kAQGZuXrSXduh+CtY20W+NEPrYV6bjDUdxQEzCxmOrsA1LWl2lHdIcLRSDdc=","kid":"dy8HnMQYOrE="},{"issuer":"C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA","subject":"C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020009","notbefore":1635987543000,"notafter":1961715542000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEn/wOHL0ulsMkJCwPvwhEPoPE2LiF\nf9MEsma3tYaPfANxLqX4K5e6Lk9F3tvg8OtBnVBI1amxen9cOlmSRXHg+w==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIClzCCAh6gAwIBAgIUfn/tDIC04XNn08DedD/Mgv0Y7Q8wCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNTkwM1oXDTMyMDMwMTAwNTkwMlowgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEn/wOHL0ulsMkJCwPvwhEPoPE2LiFf9MEsma3tYaPfANxLqX4K5e6Lk9F3tvg8OtBnVBI1amxen9cOlmSRXHg+6N8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFAHaV5pGrS6VpJVmDC3vnQ5FbGlYMCsGA1UdEAQkMCKADzIwMjExMTA0MDA1OTAzWoEPMjAyMjAzMDQwMDU5MDNaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNnADBkAjAdOz+yESmxwxVmK9YQjs4MPYfcoCxU19xPeB90YL5mB+uDH3/Kf77UTnZehqtX/m8CMA+YOej3Ymvg3flZJH/+lQ5owd4lvU4PJTxwQS/D+JroiKvnIeG6O3WT9LvnRSKwEA==","kid":"jIF6MH+OYkI="},{"issuer":"C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA","subject":"C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020008","notbefore":1635987266000,"notafter":1961715265000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+axE1mKfKiVwARulc2LnH6co1SoC\nrfqtL11PQqYh7TBRrdawgzPokpfjoFGDkMU0ZPg7cnwilW6LnYH+vkjVhA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICmDCCAh6gAwIBAgIUapkq2mxmLiK29lTfgGNiKmLH/o0wCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNTQyNloXDTMyMDMwMTAwNTQyNVowgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+axE1mKfKiVwARulc2LnH6co1SoCrfqtL11PQqYh7TBRrdawgzPokpfjoFGDkMU0ZPg7cnwilW6LnYH+vkjVhKN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFGNFtRIN7owNYF3S4WS3IkmDxnqQMCsGA1UdEAQkMCKADzIwMjExMTA0MDA1NDI2WoEPMjAyMjAzMDQwMDU0MjZaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjEA/2L/gI6AFNxKty+dHwt8nPypmd0pJDWe5ePduw1gKQnOxqM62i95FHFMPxU6uJBjAjAmDdxcr1IdCU4RO5f6PY9AS3pdb3VAkifbZe5cu2963QvvCoyfWWFXwj/D3xsvTGk=","kid":"oMpN3FsJYsQ="},{"issuer":"C = GB ST = NI L = Belfast O = Department of Health OU = DHCNI CN = CSCA_DGC_GB_NI_01","subject":"C = GB ST = NI L = Belfast O = Department of Health OU = DHCNI CN = DSC_DGC_GB_NI_01","notbefore":1626708138000,"notafter":1689780138000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZ+fdcTa4UWA/6PT5V4a0+0j1/s++\n4JQEsW/HvGnxxP7mGfuQDfn/FRdUMGQtTkoCGaky1gpYVZXkkoYu9ZjlUw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICWjCCAf+gAwIBAgIURUEDe5VRVC+xFuvzbQDxI+NcG3EwCgYIKoZIzj0EAwIwdzELMAkGA1UEBhMCR0IxCzAJBgNVBAgMAk5JMRAwDgYDVQQHDAdCZWxmYXN0MR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEOMAwGA1UECwwFREhDTkkxGjAYBgNVBAMMEUNTQ0FfREdDX0dCX05JXzAxMB4XDTIxMDcxOTE1MjIxOFoXDTIzMDcxOTE1MjIxOFowdjELMAkGA1UEBhMCR0IxCzAJBgNVBAgMAk5JMRAwDgYDVQQHDAdCZWxmYXN0MR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEOMAwGA1UECwwFREhDTkkxGTAXBgNVBAMMEERTQ19ER0NfR0JfTklfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARn591xNrhRYD/o9PlXhrT7SPX+z77glASxb8e8afHE/uYZ+5AN+f8VF1QwZC1OSgIZqTLWClhVleSShi71mOVTo2owaDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFK0wrYr+jzkfX//YOKxzXH7hoBxZMB8GA1UdIwQYMBaAFM8DHzf3z6ezJWzZlg9ICbLTTRxnMBYGA1UdJQQPMA0GCysGAQQBjjePZQECMAoGCCqGSM49BAMCA0kAMEYCIQDfC7E6QPDcgPAwNkK/uRJDMnUWOfslHC6CyeCKPcm3SwIhAN4tcL2/7T6HYbfNv+hfFz2mAGWLCa8wmqJcs9YsBNG7","kid":"1J9pb87ndV0="},{"issuer":"C = GB O = NHS Digital CN = England DCC CSCA","subject":"C = GB O = NHS Digital ST = Jersey CN = DSC_DCC_GB_JE_02","notbefore":1632923452000,"notafter":1695997252000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEORjyQk/KOoCEJWGfLLyqyEcOqRRr\neyVdSH+ELi4GqqS17W4aYeOl2cvm/5unZwgCQUzB09uxYESXGmBJ3xgsEg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC8TCCApagAwIBAgIEYVCF1jAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM1MDUyWhcNMjMwOTI5MTQyMDUyWjBPMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxDzANBgNVBAgTBkplcnNleTEZMBcGA1UEAwwQRFNDX0RDQ19HQl9KRV8wMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDkY8kJPyjqAhCVhnyy8qshHDqkUa3slXUh/hC4uBqqkte1uGmHjpdnL5v+bp2cIAkFMwdPbsWBElxpgSd8YLBKjggFvMIIBazAOBgNVHQ8BAf8EBAMCB4AweAYDVR0SBHEwb4EPcGtpQG5oc3gubmhzLnVrgkpodHRwczovL3d3dy5uaHN4Lm5ocy51ay9rZXktdG9vbHMtYW5kLWluZm8vcHVibGljLWtleS1pbmZyYXN0cnVjdHVyZXMvY3NjYaQQMA4xDDAKBgNVBAcMA0dCUjByBgNVHR8EazBpMGegZaBjhidodHRwOi8vcGtpLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmyGOGh0dHA6Ly9jb3ZpZC1zdGF0dXMuc2VydmljZS5uaHN4Lm5ocy51ay9DUkwvRU5HX0NTQ0EuY3JsMCsGA1UdEAQkMCKADzIwMjEwOTI5MTM1MDUyWoEPMjAyMjAzMzEwMjIwNTJaMB8GA1UdIwQYMBaAFNouzsP3Ovv4vhBzqMTxiL0r1PHKMB0GA1UdDgQWBBRxHKzMVi9gZ9kvS9PBsjKIxWf96DAKBggqhkjOPQQDBANJADBGAiEA842nlrMUsAYRJhQv4DeltKOnR1kyBBcIiqHBRq+EIiYCIQCeUc6GkrFiI6jhQzgD5/c/A66+AiRSZ1Z3SMNM073D0w==","kid":"1PtilTAMiyk="},{"issuer":"C = GB O = NHS Scotland ST = Scotland CN = Scotland DCC CSCA","subject":"C = GB O = NHS Scotland ST = Scotland CN = DSC_PRD_GB_NSS_01","notbefore":1632935105000,"notafter":1696008905000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEr9bj163kKNBLl5bxWhZBlyJv3pHa\n2QMb24OAdXZwJN6xx2CR03VG4DhQmd9wzVuPmw164+T7/sDmoRNOh4QbQQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDKTCCAs6gAwIBAgIEYVGffzAKBggqhkjOPQQDBDBTMQswCQYDVQQGEwJHQjEVMBMGA1UEChMMTkhTIFNjb3RsYW5kMREwDwYDVQQIEwhTY290bGFuZDEaMBgGA1UEAxMRU2NvdGxhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTcwNTA1WhcNMjMwOTI5MTczNTA1WjBTMQswCQYDVQQGEwJHQjEVMBMGA1UEChMMTkhTIFNjb3RsYW5kMREwDwYDVQQIEwhTY290bGFuZDEaMBgGA1UEAwwRRFNDX1BSRF9HQl9OU1NfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASv1uPXreQo0EuXlvFaFkGXIm/ekdrZAxvbg4B1dnAk3rHHYJHTdUbgOFCZ33DNW4+bDXrj5Pv+wOahE06HhBtBo4IBjjCCAYowDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML1NDT19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9TQ09fQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxNzA1MDVagQ8yMDIyMDMzMTA1MzUwNVowHwYDVR0jBBgwFoAUpkyHivaTZHND98x+LTp83mX+1ecwHQYDVR0OBBYEFJdsDfNoq4LpdpKboD1l1QO6vomQMAoGCCqGSM49BAMEA0kAMEYCIQCk2A3NDa/GEeAmLk0H0ryrSXR8XE1ramqYSX9/DCJ9WwIhANDgNfuShBJxUxydkgQtQ1Z348dfpLye7Dsio45DQaT5","kid":"26YSc5g0nG8="},{"issuer":"C = GB O = NHS Digital CN = England DCC CSCA","subject":"C = GB O = NHS Digital ST = Guernsey CN = DSC_DCC_GB_GG_02","notbefore":1632923277000,"notafter":1695997077000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsrcO+nNM8OkcO7IhbRh4D4D++Tgr\n3PyGt9q6vXkSwIY6vctXRXke4WdrRtWbYzB8xGREifNxSgd6Fdik+bg44g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC8jCCApigAwIBAgIEYVCF0zAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0NzU3WhcNMjMwOTI5MTQxNzU3WjBRMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxETAPBgNVBAgTCEd1ZXJuc2V5MRkwFwYDVQQDDBBEU0NfRENDX0dCX0dHXzAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsrcO+nNM8OkcO7IhbRh4D4D++Tgr3PyGt9q6vXkSwIY6vctXRXke4WdrRtWbYzB8xGREifNxSgd6Fdik+bg44qOCAW8wggFrMA4GA1UdDwEB/wQEAwIHgDB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxMzQ3NTdagQ8yMDIyMDMzMTAyMTc1N1owHwYDVR0jBBgwFoAU2i7Ow/c6+/i+EHOoxPGIvSvU8cowHQYDVR0OBBYEFFtQNDLuwfv9Xbg7o8AKPzQnkx4cMAoGCCqGSM49BAMEA0gAMEUCIQDfWA3YY6s4hivruPkv+ro6/0mi4Vm7gY1EED8u39k+LAIgOKfybRclbzyRnz/ucnH18B2r9ZEi6z/7LnmqNZobPPE=","kid":"I0+qkOLr2e0="},{"issuer":"C = GB O = NHS Digital CN = England DCC CSCA","subject":"C = GB O = NHS Digital ST = Isle Of Man CN = DSC_DCC_GB_IM_02","notbefore":1632923398000,"notafter":1695997198000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKrPl/bqJRA4on2AtNgXUOhCwjkr8\nkUkeol8ZMH8d6+ILPJCgc3y4d2AnGcNMIxwk/JWVjD2V0lkxSB2Hh7shtA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC9DCCApugAwIBAgIEYVCF1TAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0OTU4WhcNMjMwOTI5MTQxOTU4WjBUMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxFDASBgNVBAgTC0lzbGUgT2YgTWFuMRkwFwYDVQQDDBBEU0NfRENDX0dCX0lNXzAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKrPl/bqJRA4on2AtNgXUOhCwjkr8kUkeol8ZMH8d6+ILPJCgc3y4d2AnGcNMIxwk/JWVjD2V0lkxSB2Hh7shtKOCAW8wggFrMA4GA1UdDwEB/wQEAwIHgDB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxMzQ5NThagQ8yMDIyMDMzMTAyMTk1OFowHwYDVR0jBBgwFoAU2i7Ow/c6+/i+EHOoxPGIvSvU8cowHQYDVR0OBBYEFFyh/c31dQVmHKwncfKzVmIgj636MAoGCCqGSM49BAMEA0cAMEQCIFpZ4V77QqTvr7ExCp5Agt4ssTmrJTjStHNmIZvU40zmAiAU5Oz3FfvC+zrKARL9h4aDJ8osIvuekXfyOjP2wdxirg==","kid":"lYkujLws7SE="},{"issuer":"C = GB O = NHS Digital CN = England DCC CSCA","subject":"C = GB O = NHS Digital ST = England & Wales CN = DSC_DCC_GB_ENG_02","notbefore":1632923232000,"notafter":1695997032000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE17Mn/OPO2RQfYEZM62rPQcvhfRd6\nZTWo1MZnPvSBMCzjuY0ZdmtsXwDHH7wDOVcTs1NSylkb+/EmC1t/7XV0Ow==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC+jCCAqCgAwIBAgIEYVCF0jAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0NzEyWhcNMjMwOTI5MTQxNzEyWjBZMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGDAWBgNVBAgMD0VuZ2xhbmQgJiBXYWxlczEaMBgGA1UEAwwRRFNDX0RDQ19HQl9FTkdfMDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATXsyf8487ZFB9gRkzras9By+F9F3plNajUxmc+9IEwLOO5jRl2a2xfAMcfvAM5VxOzU1LKWRv78SYLW3/tdXQ7o4IBbzCCAWswDgYDVR0PAQH/BAQDAgeAMHgGA1UdEgRxMG+BD3BraUBuaHN4Lm5ocy51a4JKaHR0cHM6Ly93d3cubmhzeC5uaHMudWsva2V5LXRvb2xzLWFuZC1pbmZvL3B1YmxpYy1rZXktaW5mcmFzdHJ1Y3R1cmVzL2NzY2GkEDAOMQwwCgYDVQQHDANHQlIwcgYDVR0fBGswaTBnoGWgY4YnaHR0cDovL3BraS5uaHN4Lm5ocy51ay9DUkwvRU5HX0NTQ0EuY3JshjhodHRwOi8vY292aWQtc3RhdHVzLnNlcnZpY2UubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybDArBgNVHRAEJDAigA8yMDIxMDkyOTEzNDcxMlqBDzIwMjIwMzMxMDIxNzEyWjAfBgNVHSMEGDAWgBTaLs7D9zr7+L4Qc6jE8Yi9K9TxyjAdBgNVHQ4EFgQUcOpem+yb6Ti0xloFxJUhNtmBWbQwCgYIKoZIzj0EAwQDSAAwRQIhAKzGgopNYhDdfMGDBD7uzxXkwYErNfLqrMKCcv8L/JklAiBYV6GgmwXY0coHRshuWHGVEuGfQtYuFUnn3cb6snTgqg==","kid":"osFRFyFIWdU="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH01_TestedCertificate_13_10","notbefore":1634193569000,"notafter":1728887969000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwFh8HIBXfjcz7G4uPL7o\noBpVAwoZofGJgWNr8Nstxhe4CQuGGo7Cl6QrZyQDtZovLOpcR1S5c4VIUAhegJY2\nlBEtrIzdR/hcooabkOUyDULsPejaOcii4LtE/25rSKF/6sGyQiCLFb1u4JGlZK7C\nGmJcXE/NYnDQDvJv6K4dhpwGIoeNFhoG2X6fDHjZemO+/BYZZjRh2BuUf/QnSpVY\nl6bhmOuJP2EAHBiSt+2S6Xn7O+j0qF5EK5Tm6tttSOjnmz59isc35GlwloszjRn5\nriUR2t8TYt5UEMYJY2N8iEGIpu9HiJBQyMB1kjzwc7ClwYo4/jB3zWqwZGwhjj5w\ngwIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"MIIH4DCCBcigAwIBAgIQOrzxCI+hNfy2ZddgNqFRgjANBgkqhkiG9w0BAQsFADCBtzELMAkGA1UEBhMCQ0gxHjAcBgNVBGETFVZBVENILUNIRS0yMjEuMDMyLjU3MzE+MDwGA1UEChM1QnVuZGVzYW10IGZ1ZXIgSW5mb3JtYXRpayB1bmQgVGVsZWtvbW11bmlrYXRpb24gKEJJVCkxHTAbBgNVBAsTFFN3aXNzIEdvdmVybm1lbnQgUEtJMSkwJwYDVQQDEyBTd2lzcyBHb3Zlcm5tZW50IFJlZ3VsYXRlZCBDQSAwMjAeFw0yMTEwMTQwNjM5MjlaFw0yNDEwMTQwNjM5MjlaMIH0MQswCQYDVQQGEwJDSDENMAsGA1UECAwEQmVybjEPMA0GA1UEBwwGS8O2bml6MRowGAYDVQQPDBFHb3Zlcm5tZW50IEVudGl0eTEeMBwGA1UEYRMVTlRSQ0gtQ0hFLTQ2Ny4wMjMuNTY4MSgwJgYDVQQKDB9CdW5kZXNhbXQgZsO8ciBHZXN1bmRoZWl0IChCQUcpMRQwEgYDVQQLDAtHRS0wMjIwLUJBRzEfMB0GA1UECwwWVGFza2ZvcmNlIEJBRyBDb3ZpZC0xOTEoMCYGA1UEAwwfQ0NfQ0gwMV9UZXN0ZWRDZXJ0aWZpY2F0ZV8xM18xMDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMBYfByAV343M+xuLjy+6KAaVQMKGaHxiYFja/DbLcYXuAkLhhqOwpekK2ckA7WaLyzqXEdUuXOFSFAIXoCWNpQRLayM3Uf4XKKGm5DlMg1C7D3o2jnIouC7RP9ua0ihf+rBskIgixW9buCRpWSuwhpiXFxPzWJw0A7yb+iuHYacBiKHjRYaBtl+nwx42XpjvvwWGWY0YdgblH/0J0qVWJem4ZjriT9hABwYkrftkul5+zvo9KheRCuU5urbbUjo55s+fYrHN+RpcJaLM40Z+a4lEdrfE2LeVBDGCWNjfIhBiKbvR4iQUMjAdZI88HOwpcGKOP4wd81qsGRsIY4+cIMCAwEAAaOCAqcwggKjMCgGA1UdEQQhMB+BHWNvdmlkLXplcnRpZmlrYXRAYmFnLmFkbWluLmNoMA4GA1UdDwEB/wQEAwIHgDCB1wYDVR0gBIHPMIHMMIHJBglghXQBEQMFAg4wgbswQwYIKwYBBQUHAgEWN2h0dHA6Ly93d3cucGtpLmFkbWluLmNoL2Nwcy9DUFNfMl8xNl83NTZfMV8xN18zXzVfMC5wZGYwdAYIKwYBBQUHAgIwaAxmVGhpcyBpcyBhIHJlZ3VsYXRlZCBjZXJ0aWZpY2F0ZSBmb3IgbGVnYWwgcGVyc29ucyBhcyBkZWZpbmVkIGJ5IHRoZSBTd2lzcyBmZWRlcmFsIGxhdyBTUiA5NDMuMDMgWmVydEVTMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly93d3cucGtpLmFkbWluLmNoL2NybC9SZWd1bGF0ZWRDQTAyLmNybDB3BggrBgEFBQcBAQRrMGkwOQYIKwYBBQUHMAKGLWh0dHA6Ly93d3cucGtpLmFkbWluLmNoL2FpYS9SZWd1bGF0ZWRDQTAyLmNydDAsBggrBgEFBQcwAYYgaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvYWlhL29jc3AwgZMGCCsGAQUFBwEDBIGGMIGDMAoGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEEMEsGBgQAjkYBBTBBMD8WOWh0dHA6Ly93d3cucGtpLmFkbWluLmNoL2Nwcy9QRFMtU0dQS0lfUmVndWxhdGVkX0NBXzAyLnBkZhMCRU4wEwYGBACORgEGMAkGBwQAjkYBBgIwHwYDVR0jBBgwFoAUNAu+8hU+pA9XB+JBZIsyEdEpC2EwHQYDVR0OBBYEFFqx9KVYf2NCS3VKom6WON/XsPtmMA0GCSqGSIb3DQEBCwUAA4ICAQCXcjffivLTesJThgf8ggbaDo6TW3Y3t6G70GD17Xzkf3IZpHBn1sCslnxGYEkM6gVKmzSay75CPcfJimbD5Eu090tzb5yDbugl0sshMffG1YNcrOXlXEdi8KOJfLqtRpnlRnz7OLN/L4QqTYeMkglb96iemLtrziKLNfPh9OKbTH+HNiK2rQHoTKqCOnnIsE9Ag0UwofrY27Xz9Rh1gV9g9EXddsGZRATquXF5E+JcOA4j/GXHntz1GCbRWBtTnzkKY+gL17aXKSSGw/tH3TEOGs+2HMDwW0mdz9R9hAf1nlgY/DxyM+a1sBaZ4tfrJs305DRXKfFOKiEEnqxQ7NK9fmX07wM1ckH9BMONINgcFzo7wKAfajQfYYpsnRW6a/jbG7K700G5OcsOIcgzeS8jY2WJ8E/7rvDn/nKrn7WmPhx90PBZNdaFctZg6jJBYy0QIFkzvolnTtqS/CqhyHOxBFWT7EdgAnohEU+4a3vW3nnkq0zrvVB16Gz4HqRjhNZx+NgOVuF/1McadnrzCxCZQjJ5EDnk3nvYIvEIsg8McA7JYdGW9BJHgCMoAEVlrt/3iWlOsLcKjAOt2784yarB2njzMNj6p8hOV0JdqIifCB03syR5bDMlVcPGeG9fG9KmT3s9YublOQfivBWwDZ67FgUcH3lqgHfYc/JomLRkOA==","kid":"1MTFjluEWHU="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201528_21_09","notbefore":1632395577000,"notafter":1727089977000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wSNYJMn6P/DgJDmQKob\nZubHIBOAlIEG7dI+6p4uXZqyw+gXcUXaaTEEn5F9i+OMAz9GdiTlXo6dPr7LNOm0\nyoNWNJMcmW4ePGWKpTm70Ie3YhkAzLiZ2kvTUnAKJj3q49IttvL6gj1pOOGroUyL\nBB44JOvd21GSW2N5LCZU9JlGXmVe/xPirbMFgQx9hgcwPlmzY3OGHGwdosO6aEew\n8fBvgHwyJfqbALRF757EpA/qNfLH+QwinigkIl613yghzslRzoejvyOz4UkKOQm1\n8fAbBF173J/Uur4yLF7voui03QK2we21sLlW8WkS4xKDnlL/rKvnsSyTEFqsC0Jx\njwIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"2eCjZcuOoEo="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH_1200005_0511","notbefore":1636462670000,"notafter":1731157070000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqssyXfYarvjSj+v2XSgQ\nb6nPrpx+0p5CV98Hr4rSpcFJo8DOUf4BzWD4vpAY+kvrGrxnvBlZv+fBrnJcA46u\nPGpE0GILlqHFxBmm8CVbAS/UFrHf9DqG0AiMD9zLBsLCW9M+6zlIQkX5CsbWbjCu\nnJoySDBQyMmvo74EFoTpJMW05yYZA9WRSGGf6qNCPxRkXPIaO43FMLWVlTTCAnHt\nXzHpakG5qZDULLEWZhOs78KT9oHCcTBakPb38pgUTBNwTFMPuSm57jtiqm8oPbx1\nhxxQGb6XxMuIa/eKWIh8z1/oLORaiixxU6YNHNPFbl5oAOX6CjN6i+krI2zbpisy\nnQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"CGFUps8kh3M="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200002_21_09","notbefore":1632395402000,"notafter":1727089802000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvJk7BZo+4PHBDZzfie8+\nBPTzwzcBmpTFqP6dP2X6MsXmKX8a1Rww2x7/O4bBkpea+UOWGQJ+ryUDwnK0u0AJ\nHEID7OAg/gHyK0571RIpcMsiP+rZJjg6j9s7EDIogf6cf641hjVyaWuhkvuw0Uye\nX5SRVzFQ+eAkAHXwK50mIkIfIJ4DFDvz2Hv/JDMaeSzz9aP9XuDJYu+JX6nGJ0WF\nmjtjQXmJ39HT4j4q4nsLZh6sHOtiqCVrOfzoOGk6HUxI7nDbqPO+4UwP2o1S82l9\nLgQSABvFwCtox+w1AGKM/bUeyfTrEIoMAIgDiKDL7k3ks7iyiPZauvtvhSS0MeFl\nOQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"MIIH0zCCBbugAwIBAgIQeWXSqU+IImooC7XjCjIieTANBgkqhkiG9w0BAQsFADCBtzELMAkGA1UEBhMCQ0gxHjAcBgNVBGETFVZBVENILUNIRS0yMjEuMDMyLjU3MzE+MDwGA1UEChM1QnVuZGVzYW10IGZ1ZXIgSW5mb3JtYXRpayB1bmQgVGVsZWtvbW11bmlrYXRpb24gKEJJVCkxHTAbBgNVBAsTFFN3aXNzIEdvdmVybm1lbnQgUEtJMSkwJwYDVQQDEyBTd2lzcyBHb3Zlcm5tZW50IFJlZ3VsYXRlZCBDQSAwMjAeFw0yMTA5MjMxMTEwMDJaFw0yNDA5MjMxMTEwMDJaMIHnMQswCQYDVQQGEwJDSDENMAsGA1UECAwEQmVybjEPMA0GA1UEBwwGS8O2bml6MRowGAYDVQQPDBFHb3Zlcm5tZW50IEVudGl0eTEeMBwGA1UEYRMVTlRSQ0gtQ0hFLTQ2Ny4wMjMuNTY4MSgwJgYDVQQKDB9CdW5kZXNhbXQgZsO8ciBHZXN1bmRoZWl0IChCQUcpMRQwEgYDVQQLDAtHRS0wMjIwLUJBRzEfMB0GA1UECwwWVGFza2ZvcmNlIEJBRyBDb3ZpZC0xOTEbMBkGA1UEAwwSQ0NfQ0gxMjAwMDAyXzIxXzA5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvJk7BZo+4PHBDZzfie8+BPTzwzcBmpTFqP6dP2X6MsXmKX8a1Rww2x7/O4bBkpea+UOWGQJ+ryUDwnK0u0AJHEID7OAg/gHyK0571RIpcMsiP+rZJjg6j9s7EDIogf6cf641hjVyaWuhkvuw0UyeX5SRVzFQ+eAkAHXwK50mIkIfIJ4DFDvz2Hv/JDMaeSzz9aP9XuDJYu+JX6nGJ0WFmjtjQXmJ39HT4j4q4nsLZh6sHOtiqCVrOfzoOGk6HUxI7nDbqPO+4UwP2o1S82l9LgQSABvFwCtox+w1AGKM/bUeyfTrEIoMAIgDiKDL7k3ks7iyiPZauvtvhSS0MeFlOQIDAQABo4ICpzCCAqMwKAYDVR0RBCEwH4EdY292aWQtemVydGlmaWthdEBiYWcuYWRtaW4uY2gwDgYDVR0PAQH/BAQDAgeAMIHXBgNVHSAEgc8wgcwwgckGCWCFdAERAwUCDjCBuzBDBggrBgEFBQcCARY3aHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3BzL0NQU18yXzE2Xzc1Nl8xXzE3XzNfNV8wLnBkZjB0BggrBgEFBQcCAjBoDGZUaGlzIGlzIGEgcmVndWxhdGVkIGNlcnRpZmljYXRlIGZvciBsZWdhbCBwZXJzb25zIGFzIGRlZmluZWQgYnkgdGhlIFN3aXNzIGZlZGVyYWwgbGF3IFNSIDk0My4wMyBaZXJ0RVMwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3JsL1JlZ3VsYXRlZENBMDIuY3JsMHcGCCsGAQUFBwEBBGswaTA5BggrBgEFBQcwAoYtaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvYWlhL1JlZ3VsYXRlZENBMDIuY3J0MCwGCCsGAQUFBzABhiBodHRwOi8vd3d3LnBraS5hZG1pbi5jaC9haWEvb2NzcDCBkwYIKwYBBQUHAQMEgYYwgYMwCgYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQQwSwYGBACORgEFMEEwPxY5aHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3BzL1BEUy1TR1BLSV9SZWd1bGF0ZWRfQ0FfMDIucGRmEwJFTjATBgYEAI5GAQYwCQYHBACORgEGAjAfBgNVHSMEGDAWgBQ0C77yFT6kD1cH4kFkizIR0SkLYTAdBgNVHQ4EFgQUtPvvyZ3bj2qMkxebjSBA85IkVYYwDQYJKoZIhvcNAQELBQADggIBAIUYt6lTJ2YIQnxq9+pQXdEmhN6Oy9UGG0j76ASaOobMzZoHHTpGztH2TYOtT0ykDQxwpjYKbqYiKsguGtpzft5bcNc/c2/r+awmYsL5FQgdumEYEdXbRUGHciJ0vqYwS05DdyNfjdXSV/8O5t4Vfn3s++7sUWsC/0FGlQOiSGyzKrWUD8RKl+NaMMYYTRBKJwIAuI9ahunH6m9w0KAnfjS0hZI2SjJi0GTUtFMsSTF3ZEypFQoxm/oiaBup2B/Ury7y0IBFV0FFcgGxvRfU+XXeFcNi/ONESXj9NRcjJoG7/1E3GwULzMgR19MtQjaz5glLap+80NahI1xkUEjomq7EHFsfIWftpwpEUjXXMu5+WnQoMqzEjciBv0xfjpAcLHTf2P1yKbyrr2DPcWTbt+HoAWGM9ZaRlZpZ6c7Tgd4yzggPcXehtI+roaJEe3crGf2impyNuoD0kmLZIWey4NXPGtUKczKET5xqLfJru1qMDorYLHzzffl+OahwCSkdbNbsUdk0V+E2ygKPgyRKxdm231Zn9DvkwTmMmkf6ExX6DbllYJ6RZ+eNBzcav6ZhNEXauuGZ0LMzOQy5nYUq1AYp+qItvX0U7rmfmmiSqkFISNxtyOe0jBJ/jeqM5fBMYdqSHSWtPFyt3G++mYNkBcaX1TvlvolX0mSIs8PjC7Ne","kid":"JZhMLV9Gyck="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = COVID-certificate-CH-21-05","notbefore":1621505071000,"notafter":1716199471000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtk/51stJXU48RqD2lh4I\ndsxFrjlJfmTCrLr3cQNEXkrEoI3OEV8NnotE1RjVmQrqLTT04oxpWlcbMolXtJBt\nu3rOiLNwQvyVEbj/xSc6KT84Tp7GBo1P/kkunY+Vmab6HUCV/oGZYmsdiUP/OnTP\nX6Wy6delDhnrgHIDti73/TSsG7Zl1V6km7+KIkjAkVCEDkkUD7uffd4G+GBZ0B9F\n1KOT0IcFQNvDm0zlROVoGFlmPS8DWlrLHuIdMbB281uiDjcN+kNUt7rUyyj6TFgX\n9WCgEB/5mQBMRaaXK1zeDTaNkmC2S7IWxhMQsMBXJyAdbD9AnQOZc6XRjBauO7gz\n0wIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"Ll3NP03zOxY="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200001_21_09","notbefore":1632395376000,"notafter":1727089776000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvCn2NP604m2TFWnyKbIy\nhup78wpXMM62pHod3InusDPPPFXWgVsN0NG1E65jy+W7LDY+Q719jVCC8pusghPL\nmDze1KWwGrGdRyUGmqwFWW5sI0uxKJCsEXMRcKqKpf5NXxJlSo1FIv/ZKKFAnUt1\nIFUzLo5HP7rqCiKlU58uk9N4puECCW3QEUIgm4mwflcR1crqY1Pdd1UxIceRTGcv\nT0q4wN9w1fwko+grpV0N7EK2drSVVdvPYlo2fHCU+hDwTJ6AThTktzRiybznhq4F\nqf3jEyzVFQA5W1VvAoWhMZgAxHRCZXFXex/MtGvOD4Q+ovP3m1EYX0+C/qsaSsHb\n2QIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"TQeqi04M2ek="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201529_21_09","notbefore":1632395629000,"notafter":1727090029000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2MyDsFqh2Xhdc6PUbR+0\nalU0hD8tT6BSJpCbigvdZAbz5slDPAIrXvyz2Aac79U6jvyyMHHDbIOL1DxU1/pc\n7shgd/B0btHJogwQQUxyh149GnA8e1i3LLJhu8dtC4LxBPZK91nknkgrKyYU55sJ\niQTnx2VYuF6WDBXFW4Q2EHsN+KIC68uDNousFHdw4Dk9rb4vEHLqsbY/afEZ1HmW\nbrvN+6pPyPFh43ogvYWkVcn5JahOXQqpoePVFUAq0sdqG9DluoSXWqpyNfcTQp3W\nCVldqsyMfAzGwceR/hKohMDXBmxAAbv5h8U05KX1xHgwAWfPPiITtqqIKt0EvFJP\nzwIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"d+WbDD8Gr5g="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201525_21_09","notbefore":1632395556000,"notafter":1727089956000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0urbzgg7+VIvee9+u7Ti\nW+a+xDKAhqh9CXfPS+Lydi9Y527boI6bbqZxA2qhFVWp4FFzxRYRy6pVfReokpgS\nQvcjoR6YvRNi/HK4c44tLvz5gymhX/80oR43Gr/vOUkvne3c3SD8BN+tZlJScIt7\nMrIm0KNWjGGBoCnswxcn2dYGNoYFvHVN/3exg+oC4oO5QU3rNyFh3PWSHIn3svZA\nAeT3NLLdZ2inGoRyGTY3IYcPk6vj2y69wDxz/rO3kV2SpwHMCkKqcwwsdlOiqS6n\nd6AvOpQYMRRC5mEFbB1J0g7z73YdH+WNzEsa/B25xzDrIWi/sul2INhd3q0OTw2v\nqQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"hGUS4Zj9fLM="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201507_21_09","notbefore":1632395524000,"notafter":1727089924000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA195RM978uHXQTBanwOqW\n5vt6WBnO8skLa7kiY4q4l8MOgSrIitQvBcnuJFiTazMTjJpdEAblB0E4mZuzvn2p\n1I7SrFL7mwqQFrQ9GXvNp6gwBHYJrMci+J0FshxnWc9EYFFbnmixdSsyla5c4W8b\n/pfasFYWkuCwUCGLrspMrkJ/gsWcj4h0HvlCO9hHsHlLqD/kY0y0VGUAizsah255\nYZhTeB4ag60E93wUHt6HX0q4ngCk05S04aH9eaBF9GIuRhxrI4GEDcYIPB8GasrK\nPIS8ufOMQsSE8uJkPhJGQblDh+fPZb2bnUPX9vUSBPTJD5XgHsPGancWrpzBGttO\n3wIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"l+UqotarLJc="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200003_21_09","notbefore":1632395440000,"notafter":1727089840000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApU+JIe3bHtVFBRbLLcZ/\nMHfaOB8dKwsWj7nAh8wr3Iv2+te2Kmq3MLDPZFR0q/hAAEg9gY/K1XVh74S3Zf8U\niSm9UJgALVIsxCi96eVpa1GGUtpbQvEg7Uz43PM/vUEkAs8xA/45BtFX1WE2nQ1z\n2PFcI3pOaJl4UHOVTA1LxEwOrAPBhlApcYwp75Gc9+KahxpJzaDR618ooV9MICYY\ng8swv4d99u11mjgwMAZcpiNf9iIa1H4phann+5RuNLbRHebVJgBot95AJ4MrOEEq\nIXg7LpDD9pBofVbV6IB7tuFcIjBIPJhLaUI6nLyg8oxh5NA8fKE9Nc2zbl8po84S\nrQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"oVKwwScGxuY="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200000_21_09","notbefore":1632395333000,"notafter":1727089733000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5G85GgStNuJe4lqs7Jkb\n7/3tBfhNTs0DDuxm0XpJIptqBLFvTLllQqMO8QI/lx1266VlfthTASK2ZpnQC6Id\ns/NEdNrLHuGIRNktd7oaq3Priz7f96TnXiW9qX/WLL55wpXcHSmLyvEfdP7BSdyQ\n9xrzm8bwg8cD638e69lScBeGpG04Z8hOVSQAQOBzAjSGkWPzhkah001vVev9CNcZ\nBiL56iVox6nIJ/sgbzOlvwJDaXnKZOOXRk+xKQA+BDjjBfmvq6KvKoiRoGhvmG3g\ntMFvXPEr+mvBkbHvzswPr6aKpbm4sFzDbbgsSb6zGJcPLhs6aMm0FaIuetyc0lxf\nSQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"ohI9KlFR2P8="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH01_RecoveredCertificate_13_10","notbefore":1634193433000,"notafter":1728887833000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvG8EuhEV3qydjzXibNlK\neBaRiswEivR7Ths756AhlCuY1xd1MC2qtTpledWZpdYaEr2QunzcE4OU7Tzj0Q4I\ny6Ru12yenffGAZVxt31TpwjMioh/hICU9kh5KospkHf4wH6S2+JoK9P3stljHbJd\ndJith9LzyzDQ+ezTVksE4KBD9iKLlvx6kOQE1LSW1lvnm89JqoY+Hlpdy0Gux8uj\nQ+HsPG5CQc4B7DuoYEjmmWSxGIIR3tuym4UjqUpOYYdq2Ee3ahGt4qPV8mhERHwd\nT0XeMgTbKaakfBjdQeH+Imd2IRmVaZUkgxTSXpXSCP/tus8k77BNknCtf54N5o2H\nPwIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"rTEJEs6D1ik="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200004_21_09","notbefore":1632395497000,"notafter":1727089897000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAphhhJq5dIl4yUEbliJyc\nkuldKiylWZZfTRQNx/k0xUFU60n9tUR4Ky1AibJHIiN/nIhSZTgwSSuALWinuEri\nI1ROb++TsQODtC3dDFFbNIwq1sVuT1TI7o6nnGTRHxwJckNP5++obdKSZtUfT6LO\nClxFsNoYl2EAzwb8YdcOiWNEB8gj7aY+vPL9BmECb9IRxPwhOxzPYkgLUkvqzt2U\nzV6CFKM5t4LxM4pTICy9vlIViZTcx6FDJ78AuT2C5AbW+ILYmc6/V189uga2/PTy\nEJyABw3gRg2BItkwy1flAjQcNIhKzshorcwGPD9EtuqpWF26DyU/HIQUabptMC6P\nCwIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"rVPuf3yKLBg="},{"issuer":"C = HR O = AKD d.o.o. CN = Croatia DGC CSCA","subject":"C = HR O = AKD d.o.o. CN = Croatia DGC DS 001","notbefore":1621516666000,"notafter":1684588665000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV\n5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICwDCCAmagAwIBAgIIPR9jkXY7CPEwCgYIKoZIzj0EAwIwPTELMAkGA1UEBhMCSFIxEzARBgNVBAoMCkFLRCBkLm8uby4xGTAXBgNVBAMMEENyb2F0aWEgREdDIENTQ0EwHhcNMjEwNTIwMTMxNzQ2WhcNMjMwNTIwMTMxNzQ1WjA/MQswCQYDVQQGEwJIUjETMBEGA1UECgwKQUtEIGQuby5vLjEbMBkGA1UEAwwSQ3JvYXRpYSBER0MgRFMgMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzaOCAUwwggFIMB8GA1UdIwQYMBaAFDErHKPIgGXhH70EktAlPHyGj1LRMC8GA1UdEgQoMCaBEkNyb2F0aWEuREdDQGRnYy5ocqQQMA4xDDAKBgNVBAcMA0hSVjAvBgNVHREEKDAmgRJDcm9hdGlhLkRHQ0BkZ2MuaHKkEDAOMQwwCgYDVQQHDANIUlYwZwYDVR0fBGAwXjAtoCugKYYnaHR0cDovL2RnYzEuZGdjLmhyL2Nyb2F0aWEtZGdjLWNzY2EuY3JsMC2gK6AphidodHRwOi8vZGdjMi5kZ2MuaHIvY3JvYXRpYS1kZ2MtY3NjYS5jcmwwHQYDVR0OBBYEFB55yLnz+T3ShQFs345mxQEJZb7TMCsGA1UdEAQkMCKADzIwMjEwNTIwMTMxNzQ2WoEPMjAyMTExMTYxMzE3NDZaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiANYlqMzCo7P6/FbwxS88MCB43CIBgfpJDmQ+D120Ov0gIhALJNQbk8HdHnkd31GV88U1N4YghHSZslLY8eZX8wSYR/","kid":"25QCxBrBJvA="},{"issuer":"C = HR O = AKD d.o.o. CN = Croatia DGC CSCA","subject":"C = HR O = AKD d.o.o. CN = Croatia DGC DS 002","notbefore":1636488815000,"notafter":1699560814000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsHGctEPFotenAxVqYr/5Ztl46BU9\nhWNYAYdGWihiGzRTOgXzONqCQJqB37pacA53L7OlXPFONvT9KWYvbsVeiw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICwDCCAmagAwIBAgIIcPs80UkeH/UwCgYIKoZIzj0EAwIwPTELMAkGA1UEBhMCSFIxEzARBgNVBAoMCkFLRCBkLm8uby4xGTAXBgNVBAMMEENyb2F0aWEgREdDIENTQ0EwHhcNMjExMTA5MjAxMzM1WhcNMjMxMTA5MjAxMzM0WjA/MQswCQYDVQQGEwJIUjETMBEGA1UECgwKQUtEIGQuby5vLjEbMBkGA1UEAwwSQ3JvYXRpYSBER0MgRFMgMDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsHGctEPFotenAxVqYr/5Ztl46BU9hWNYAYdGWihiGzRTOgXzONqCQJqB37pacA53L7OlXPFONvT9KWYvbsVei6OCAUwwggFIMB8GA1UdIwQYMBaAFDErHKPIgGXhH70EktAlPHyGj1LRMC8GA1UdEgQoMCaBEkNyb2F0aWEuREdDQGRnYy5ocqQQMA4xDDAKBgNVBAcMA0hSVjAvBgNVHREEKDAmgRJDcm9hdGlhLkRHQ0BkZ2MuaHKkEDAOMQwwCgYDVQQHDANIUlYwZwYDVR0fBGAwXjAtoCugKYYnaHR0cDovL2RnYzEuZGdjLmhyL2Nyb2F0aWEtZGdjLWNzY2EuY3JsMC2gK6AphidodHRwOi8vZGdjMi5kZ2MuaHIvY3JvYXRpYS1kZ2MtY3NjYS5jcmwwHQYDVR0OBBYEFIZqz9SFr6ueNBY4r/u1ZNovF+WlMCsGA1UdEAQkMCKADzIwMjExMTA5MjAxMzM1WoEPMjAyMjA1MDgyMDEzMzVaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiALjpDpXS59EIpkdvCjEAdR6UPq41CbnhWAat7dGT8+zwIhAOdLwTxsmuRttRDg6ZX0CGxwjHFu7NfxCwqdrOd8n50E","kid":"IoybU6axZJE="},{"issuer":"C = HU ST = Budapest L = Budapest O = EESZT CN = DGC_CSCA_HU_PRD_20210621_01","subject":"C = HU ST = Budapest L = Budapest O = OKFO CN = DGC_DSC_HU_PRD_20210628_01","notbefore":1624889734000,"notafter":1687961734000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadM\nS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICnDCCAkGgAwIBAgIUa/gUnrKtSo4XzXVTPkV2APtPwXEwCgYIKoZIzj0EAwIwaTELMAkGA1UEBhMCSFUxETAPBgNVBAgMCEJ1ZGFwZXN0MREwDwYDVQQHDAhCdWRhcGVzdDEOMAwGA1UECgwFRUVTWlQxJDAiBgNVBAMMG0RHQ19DU0NBX0hVX1BSRF8yMDIxMDYyMV8wMTAeFw0yMTA2MjgxNDE1MzRaFw0yMzA2MjgxNDE1MzRaMGcxCzAJBgNVBAYTAkhVMREwDwYDVQQIDAhCdWRhcGVzdDERMA8GA1UEBwwIQnVkYXBlc3QxDTALBgNVBAoMBE9LRk8xIzAhBgNVBAMMGkRHQ19EU0NfSFVfUFJEXzIwMjEwNjI4XzAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadMS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/KOByDCBxTAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFLfwN2b/BblsB3wY92Sbxbc7QOmZMB8GA1UdIwQYMBaAFPHcUjbpr2UPGVKQEwKXLMGD4sDTMEEGA1UdHwQ6MDgwNqA0oDKGMGh0dHBzOi8vd3d3LmVlc3p0Lmdvdi5odS9jcmwvZGNjL0NTQ0FfUFJEXzAxLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCxhu4NSIKO9F8jlaxe3EqAIDoPAaF5A9+GPy03W0PpVQIhAL12JyQzJ9f7qnLapDMUSf6HD0+AMNHl9BjHZphNBUlu","kid":"4GkJs9YsYS4="},{"issuer":"C = SK ST = SK L = Bratislava O = NCZI OU = DGCOperations CN = CSCA_DGC_SK_01","subject":"C = SK L = Bratislava O = NCZI OU = DGCOperations CN = DGC_01","notbefore":1599004800000,"notafter":1725148800000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6qxT6sSK3TDheWFHTBkfveooRhtU\nWqEqrELD9B7aAk7xjPS3MBETtmnWb4nRzBINvFwrLDxQCqTX8Jevp33c4Q==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICVTCCAfqgAwIBAgIUSfAlV5Ro7+hRqRa9kH4Un95XIGQwCgYIKoZIzj0EAwIwbzELMAkGA1UEBhMCU0sxCzAJBgNVBAgMAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMRcwFQYDVQQDDA5DU0NBX0RHQ19TS18wMTAeFw0yMDA5MDIwMDAwMDBaFw0yNDA5MDEwMDAwMDBaMFoxCzAJBgNVBAYTAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMQ8wDQYDVQQDDAZER0NfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATqrFPqxIrdMOF5YUdMGR+96ihGG1RaoSqsQsP0HtoCTvGM9LcwERO2adZvidHMEg28XCssPFAKpNfwl6+nfdzho4GIMIGFMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUj9izCT/z9ccQUX6CeZ0ns8Zu0SMwHwYDVR0jBBgwFoAUm9JYe8TeF7J1Gm8LZ2DfcBXXLHMwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNJADBGAiEA1jDNVMcnPoIOaGxeFRKaRZ8MrwR6xmmv0F0I0l5wKuUCIQDnaar37bg6T8i3rJp6KHQkJqJ1NSnc0Qltw1qghCJC0g==","kid":"6CDB1hL+uKU="},{"issuer":"C = TG ST = MARITIME L = LOME O = MENTD OU = DCA CN = e-certs.gouv.tg E = support_it@support.gouv.tg","subject":"C = TG ST = MARITIME L = LOME O = INH OU = INH CN = inh.tg E = wemboo.halatoko@inh.tg","notbefore":1637830480000,"notafter":1700902480000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/t+Slm3djgmEU6EDiHQ9NbBluAow\nmiJ1WRBnCP8M+zS4nz8F8i3999918JYKA4wJni8OaHwhzb+ay8KJIxhNFA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC2zCCAoGgAwIBAgIULouI8zvjFtrALV9M/d6BMSwuJGMwCgYIKoZIzj0EAwIwgZIxCzAJBgNVBAYTAlRHMREwDwYDVQQIDAhNQVJJVElNRTENMAsGA1UEBwwETE9NRTEOMAwGA1UECgwFTUVOVEQxDDAKBgNVBAsMA0RDQTEYMBYGA1UEAwwPZS1jZXJ0cy5nb3V2LnRnMSkwJwYJKoZIhvcNAQkBFhpzdXBwb3J0X2l0QHN1cHBvcnQuZ291di50ZzAeFw0yMTExMjUwODU0NDBaFw0yMzExMjUwODU0NDBaMIGDMQswCQYDVQQGEwJURzERMA8GA1UECAwITUFSSVRJTUUxDTALBgNVBAcMBExPTUUxDDAKBgNVBAoMA0lOSDEMMAoGA1UECwwDSU5IMQ8wDQYDVQQDDAZpbmgudGcxJTAjBgkqhkiG9w0BCQEWFndlbWJvby5oYWxhdG9rb0BpbmgudGcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT+35KWbd2OCYRToQOIdD01sGW4CjCaInVZEGcI/wz7NLifPwXyLf3333XwlgoDjAmeLw5ofCHNv5rLwokjGE0Uo4HBMIG+MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUX0ifcWO3ft5jnss/sOmn05KXgJ0wHwYDVR0jBBgwFoAUJFqHPi2oSniAyBTIA4WUfx9rajQwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cHM6Ly9lLWNlcnRzLmdvdXYudGcvY3JsL2hjZXJ0L2NvdmlkMTkwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAKBggqhkjOPQQDAgNIADBFAiEAqCcu7hOCqNW7QeuBSElenRiUCB7vD+JFbCepz9EOBKkCIEoPgp6HBsSdUbe7aa8LO4/AbCx+ByLBpLAUxWcO0wNX","kid":"6ptpKJA1J90="},{"issuer":"C = LT O = State Enterprise Centre of Registers CN = LT_DGC_CSCA_1","subject":"C = LT ST = Lithuania O = Ministry of Health of The Republic of Lithuania CN = LT_DGC_DSC_2","notbefore":1625090401000,"notafter":1688162401000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsIcppmCVhq96vMc4NtW8\nX+yV6O1oC7hfKnewK1/pxfByqlVTPpETDLAjNq9knNQpCs7vGjadCbDAylsQRK7q\nfU3sUUKamh6FgDhFo1dzC4mUHCy3XBL04XJie2eT/a6Wgjrn6NjEFk5M4Jl4N8u/\nRbfaVxqaOjUM0hBfuzfZeL2LT30POqDHj1hcyod1fIbG4vv2Upqxe3OX/WLr+WzS\nPbRkPwxcJjmYeNYODT0rEcd9VSzJpljaK+eDVwxT0wMRnCH2QLxdw8sR+oDYDTZB\naabeHYyZ0CfYzSoBOZT3fVMAbjkVAl8GFyH8tUm4lMQbYEMbl/FkftcZQicaqvRd\nQQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"MIIFBDCCArigAwIBAgIGAXpe76SiMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYzMDIyMDAwMVoXDTIzMDYzMDIyMDAwMVowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCHKaZglYaverzHODbVvF/slejtaAu4Xyp3sCtf6cXwcqpVUz6REwywIzavZJzUKQrO7xo2nQmwwMpbEESu6n1N7FFCmpoehYA4RaNXcwuJlBwst1wS9OFyYntnk/2uloI65+jYxBZOTOCZeDfLv0W32lcamjo1DNIQX7s32Xi9i099Dzqgx49YXMqHdXyGxuL79lKasXtzl/1i6/ls0j20ZD8MXCY5mHjWDg09KxHHfVUsyaZY2ivng1cMU9MDEZwh9kC8XcPLEfqA2A02QWmm3h2MmdAn2M0qATmU931TAG45FQJfBhch/LVJuJTEG2BDG5fxZH7XGUInGqr0XUECAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUPZCkpW9sE+8wWf3UeVmVyI2yuKMwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQAh3n6+6+wrWjfQc0PYua+M5sB7QMU1K0jo3Hs+lwYiMEnIZNbdQgnuNAYHm4cf3Qy1YLt9XkMQdzwRz3kbSUQ4iythOby2GBEgCZ7fr17h/2o7VL9QC+hMUqsBXWYEQ1JuYz/L64X60sbIgt2qLy+oeA4WEVc1Yuz7DQsJG0qZRovVQvRy0cL7RHc6uiraaUxsKX7WFzNf6KlT1C1GeFJzcPSTclYMtHR3UgecUEaEenPciPMmUsJY5AOmZqxvJT62Nit9iuR18SieBNK+rJTrmxF4AV5Q7PE7Dhq5HBZhy7gE0UG1XfvSVSIcJcbMiDLxa+lXCFCVOf7drq2CaaIc6UQ0UXTeVmdbkJPid1/pvGLbIyL4UmOqxpzETcIRJKtvhF3UF1cD86/V/77qtZh0UeoCMGSdarZFvWB4As4PrEuvJB6Sfo1D++dCfQkfFEhQZO7wk1zLUB3Pqip2Io3eLn1oXMPxqtoYYH1vGv3HANhd8hVuO3ujYQgb9InLCnl7qPix5f8QrnRA4q72gpofoBnfGziMAyo9EKBib72waWaIpHi8Aw1XJntpHwld0gOV/cs/BquYdtqJpdW2FpoUvP4SbbxUVyDub+Uu2+Q9LKuIFlG4fqgRCUQ5NbgB5wmTxlYEc0xTb/VNICUtDSga4Fjeznm5l0oc4NoS6G4wzw==","kid":"7AfAwcpWOv0="},{"issuer":"C = LT O = State Enterprise Centre of Registers CN = LT_DGC_CSCA_1","subject":"C = LT ST = Lithuania O = Ministry of Health of The Republic of Lithuania CN = LT_DGC_DSC_1","notbefore":1623009026000,"notafter":1686081026000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnhBpxzeGXNlQs7U+j/Av\n1BUZ6CCgMR3bFLT4rRjO8KQ4IpAKqSCQ3j57MJqdumk3AUfHO5zhMZF4Awy0wqV3\noFlyP49/56KKZxGARe5UkyfPjVbl8AZpLmgYoS/Ior53TLrwmT/+zvXynzFYbOi2\nOtCtqanG+9OUhSVRrXEEB+56PpCltE31wemX1behxDuCbE4tuqyTYODFw9Le3dGC\nbHWdjxi5W3XIUNo8j2u2PKue0KS76Xv0zAYItTgChgv7mM55/G109m4MfeU7AHah\n43bJth8K8y+SxG3RYHskmNZ7sfn3w8w7WyW7D3/tKHcMt3hgIh9z3DuWeR1C296J\nyQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"MIIFBDCCArigAwIBAgIGAXni4GKHMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYwNjE5NTAyNloXDTIzMDYwNjE5NTAyNlowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ4Qacc3hlzZULO1Po/wL9QVGeggoDEd2xS0+K0YzvCkOCKQCqkgkN4+ezCanbppNwFHxzuc4TGReAMMtMKld6BZcj+Pf+eiimcRgEXuVJMnz41W5fAGaS5oGKEvyKK+d0y68Jk//s718p8xWGzotjrQrampxvvTlIUlUa1xBAfuej6QpbRN9cHpl9W3ocQ7gmxOLbqsk2DgxcPS3t3Rgmx1nY8YuVt1yFDaPI9rtjyrntCku+l79MwGCLU4AoYL+5jOefxtdPZuDH3lOwB2oeN2ybYfCvMvksRt0WB7JJjWe7H598PMO1sluw9/7Sh3DLd4YCIfc9w7lnkdQtveickCAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUwMNfEDstM4gYK8a8WQno8Qt1IZQwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQANsbkQ7P3OljNurVYmgB4g/76/tLMzbRExCuUltzxJW1zVZb4juuHNkmjIsUupaiYG8F8fQJpeRam2qgaPaPWqTYwn1lm8K+Ab4jE+9F6nyTJfvI2+BzOcGFsTUr+6If2YafJE9UMCeQWGP1kLX5srtQVTvb7fNHHnEvmijdKoqPv8Xcnkl6j53aZjeM6RrpSqrdtneHwquq9OWnjuKVDGZ1bDiIl52wjCQ+GLczPUtHai+qHNmhOibiT+JoT//fDb96vHlf40Y39zyxRFx0kx9zws8CbAPtvJOfWg6OjY50ARZRfixc6uFrCmnHtpzfcO3f+XwPBIBmvTjphZDGRqNjP46wqUv5vfpquIprhNef+jYi3k+719IBn5QuBNq4vJcMYHitK4WJ24TIxemq5YIXQYQct4t90V04Byhz7phox5P2rZJl3VBOSss7bGu64qc5Dh96joLLHFLChqqqDbhq7RI6Gl8Yn0ShUMg3WTbktTQ9dpGzYdH3wbbuMbzvGOYRTqTVGBH8eb9KJbgC0cDDhelHNXUcwn3Vvbdx3Y9KB2y50VTs9ZcawH52o4BuNwx3vO/L3Eq2EnkIZ2mobJDIGbBJUN2ttBim5muQxgEKns/QgNTpEZgBTkFjQ7mB7gIC8SHDDmU5wXe5aA3GN5/Gl5aUc3rHDmnZQKax63jw==","kid":"lshLbYfCWRg="},{"issuer":"C = CY ST = Nicosia L = Nicosia O = Ministry of Health OU = IT Department CN = CSCA_EUDCC_CY_01","subject":"C = CY ST = Nicosia L = Nicosia O = Ministry of Health OU = IT Department CN = DSC_EUDCC_CY_01","notbefore":1624533802000,"notafter":1686741802000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7S/R06707Glu721qJqvxIFzQ2LSb\nq9P2uu6nRKCBLsH5ryP3wXpggL6hGh080F462bGLTuI/hXrxEB2kR2Vjww==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICjzCCAjWgAwIBAgIJAPS0Vbm3L3MTMAoGCCqGSM49BAMCMIGBMQswCQYDVQQGEwJDWTEQMA4GA1UECAwHTmljb3NpYTEQMA4GA1UEBwwHTmljb3NpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRkwFwYDVQQDDBBDU0NBX0VVRENDX0NZXzAxMB4XDTIxMDYyNDExMjMyMloXDTIzMDYxNDExMjMyMlowgYAxCzAJBgNVBAYTAkNZMRAwDgYDVQQIDAdOaWNvc2lhMRAwDgYDVQQHDAdOaWNvc2lhMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxGDAWBgNVBAMMD0RTQ19FVURDQ19DWV8wMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO0v0dOu9Oxpbu9taiar8SBc0Ni0m6vT9rrup0SggS7B+a8j98F6YIC+oRodPNBeOtmxi07iP4V68RAdpEdlY8OjgZQwgZEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2NybC5ldWRjYy5nb3YuY3kvZHNjLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMCsGA1UdEAQkMCKADzIwMjEwNjIzMDAwMDAwWoEPMjAyMzA2MjMwMDAwMDBaMAoGCCqGSM49BAMCA0gAMEUCIQCL2pPCMNugzz3sGPDO02C6oMYvlkj6lfxPbckgmegv6QIgANPWEyptdWnK8y0WpU85VROr4cjobAkRNioquyCln00=","kid":"7rZbUrXNlLk="},{"issuer":"C = NO O = Norsk helsenett SF CN = NO NHN CSCA PROD","subject":"C = NO O = Norwegian Institute of Public Health CN = DSC HN EU 2","notbefore":1623057373000,"notafter":1686129973000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErbWQM5hj5SeR23DzCV0TVKrFhfYs\nmNVVSbPFxwyw4ZEfersZ3bp2h+rw2BhbLbzVHZIwWfnhaKZ72+JciUksFQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICLzCCAdWgAwIBAgITWQAAAAMkF9vUXhL/vwAAAAAAAzAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYwNzA5MTYxM1oXDTIzMDYwNzA5MjYxM1owUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEhOIEVVIDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASttZAzmGPlJ5HbcPMJXRNUqsWF9iyY1VVJs8XHDLDhkR96uxndunaH6vDYGFstvNUdkjBZ+eFopnvb4lyJSSwVo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBTjjLs+qOV9Ef2iKzss4qIJTpVymjAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIFoTcS0308Htrwu8gtsc1YX2679u/+UjB6i3iG4BvUGFAiEAirH6ggtWwXqXH94+kfwQ0A5q0pPGCdik4BIlnYmnpMk=","kid":"7z8+6oww2a8="},{"issuer":"C = NO O = Norsk helsenett SF CN = NO NHN CSCA PROD","subject":"C = NO O = Norwegian Institute of Public Health CN = DSC AN EU 5","notbefore":1623749441000,"notafter":1686822041000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfBeQBQBjyKpvjsCujqi15xnygRMy\nhjNsEy198LzTYuB+Mje1lxIvPYkfO/PEHQFgA52gn26bHCXE75GWqq6UMw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICLzCCAdWgAwIBAgITWQAAAAY+BhnAubZsywAAAAAABjAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzA0MVoXDTIzMDYxNTA5NDA0MVowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR8F5AFAGPIqm+OwK6OqLXnGfKBEzKGM2wTLX3wvNNi4H4yN7WXEi89iR8788QdAWADnaCfbpscJcTvkZaqrpQzo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRQ+3DSiNYiK7x+Rm48SPxVU66ILzAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIQCpipDAPcRMuFYLkVIA2qxW3bikYzJzNxdvnqzDMMitFAIgFt8q+4FM53rl4bfBzwnQRpXDLaGc4bdKC0wcjBUHKyQ=","kid":"Er5OTMwLd78="},{"issuer":"C = NO O = Norsk helsenett SF CN = NO NHN CSCA PROD","subject":"C = NO O = Norwegian Institute of Public Health CN = DSC AN EU 4","notbefore":1623749426000,"notafter":1686822026000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElH46JUamhvfj2ocSTxw9Eq7nVdP9\nOzBOxQ/zaWNXN5ucagla6nruNqfDiZXQMcz4gpZ6pcjtJl+xra2ATzZ9Pw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICMDCCAdWgAwIBAgITWQAAAAVu7yCnw/v4agAAAAAABTAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzAyNloXDTIzMDYxNTA5NDAyNlowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASUfjolRqaG9+PahxJPHD0SrudV0/07ME7FD/NpY1c3m5xqCVrqeu42p8OJldAxzPiClnqlyO0mX7GtrYBPNn0/o4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBSLtW/xwBSwzLlO3mNEzuueB3HOOTAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0kAMEYCIQDhu8xPp4rym01BCIlLAPB4UftU+yrPjxnsEPk+q4Bk4wIhAKVSgCN39hpSqqb5ErHWJdTp6+zJalGHg3Oj990zNYBY","kid":"cdm9Ymfwn2I="},{"issuer":"C = IT O = Ministero della Salute CN = Italy DGC CSCA 1","subject":"C = IT O = Ministero della Salute CN = Italy DGC DSC 3","notbefore":1636724505000,"notafter":1699796504000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwlU23NYZQba7t++TVejbvPxgS6w\ndW8uE7UPe14VkhXoKINhhrCT0EWHP+aPim6apT46Ktd0lfoNVTsbg2QQ2A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEDzCCAfegAwIBAgIUdtfIwH49VX3gzjg7sw1okOP/KAIwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjExMTEyMTM0MTQ1WhcNMjMxMTEyMTM0MTQ0WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwlU23NYZQba7t++TVejbvPxgS6wdW8uE7UPe14VkhXoKINhhrCT0EWHP+aPim6apT46Ktd0lfoNVTsbg2QQ2KOBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFCR9+jzaaoSYO/7wB8YLfAk4Vw1FMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAokc+BGagX9kFseWotrm4fPrXBm6JLAxn9rC/Mz1awCXehbinERs+AVl029UApYXNp3/wiA57/9z1NkmMtZspBn1b0rJ4WP5hcRDhcsXxFvkSNx03/LwTCBi9iJSFNDQSv6bq8+YVSenamvwGJ+wNpemAIthrPshIGU2+MEipWhFmERYE6JaGJVFGs6n8r4IHzOx3gKeyUoGK2p4vM0Aw4LCfaqffEQz47lVMi+dDk3/h6CWWKZ6//+/15DKsuuj+BBAt9HBaqKAgCQke8RVceGJ1dsZFUW0yuCMqCSmoc3pksjQghYki9p4gs8Ex9khXCusRnCw81sG7VGrZgiDCEGHtbny774/CLCFNDpPC/CJLSEiyDP2exV6um2NEtAqQvGPlCdKVxHiLJ1FkunuHV0zYMLQi4+5mjAWbs4DuTgsOfkuZoJ7t8lFp9rqx3maNrew8Dw/w2nTuOHfk5f4xb99nlVXqA0rUPejZ/kf4ajU2AXrszxLAGXZnopryEcCSzxUSu1vRnv9NMtneTn3l0fDQTwPFVV2zquQUwl85Rm672r12Lupisn74UgwKgElxkgHjNRry++64ULoksydKWMz78ElfLV1tws8xoEx8I744pxsq7DTK52tcFuIZjASIfley6AbGLWzu8DUVGA3o/ANbavT56O8sXlT2OGipPx0=","kid":"8hilYZIP6uI="},{"issuer":"C = IT O = Ministero della Salute CN = Italy DGC CSCA 1","subject":"C = IT O = Ministero della Salute CN = Italy DGC DSC 1","notbefore":1620807497000,"notafter":1683879119000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/\njbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehojw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEDzCCAfegAwIBAgIURldu5rsfrDeZtDBxrJ+SujMr2IswDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjEwNTEyMDgxODE3WhcNMjMwNTEyMDgxMTU5WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/jbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehoj6OBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFC4bAbCvpArrgZ0E+RrqS8V7TNNIMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAjxTeF7yhKz/3PKZ9+WfgZPaIzZvnO/nmuUartgVd3xuTPNtd5tuYRNS/1B78HNNk7fXiq5hH2q8xHF9yxYxExov2qFrfUMD5HOZzYKHZcjcWFNHvH6jx7qDCtb5PrOgSK5QUQzycR7MgWIFinoWwsWIrA1AJOwfUoi7v1aoWNMK1eHZmR3Y9LQ84qeE2yDk3jqEGjlJVCbgBp7O8emzy2KhWv3JyRZgTmFz7p6eRXDzUYHtJaufveIhkNM/U8p3S7egQegliIFMmufvEyZemD2BMvb97H9PQpuzeMwB8zcFbuZmNl42AFMQ2PhQe27pU0wFsDEqLe0ETb5eR3T9L6zdSrWldw6UuXoYV0/5fvjA55qCjAaLJ0qi16Ca/jt6iKuws/KKh9yr+FqZMnZUH2D2j2i8LBA67Ie0JoZPSojr8cwSTxQBdJFI722uczCj/Rt69Y4sLdV3hNQ2A9hHrXesyQslr0ez3UHHzDRFMVlOXWCayj3LIgvtfTjKrT1J+/3Vu9fvs1+CCJELuC9gtVLxMsdRc/A6/bvW4mAsyY78ROX27Bi8CxPN5IZbtiyjpmdfr2bufDcwhwzdwsdQQDoSiIF1LZqCn7sHBmUhzoPcBJdXFET58EKow0BWcerZzpvsVHcMTE2uuAUr/JUh1SBpoJCiMIRSl+XPoEA2qqYU=","kid":"NJpCsMLQco4="},{"issuer":"C = IT O = Ministero della Salute CN = Italy DGC CSCA 1","subject":"C = IT O = Ministero della Salute CN = Italy DGC DSC 2","notbefore":1636724438000,"notafter":1699796437000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhX3UYfApjRF+CwtZqZJga6pwzbvN\nic585TOlc0qa2DbRcer1H3FYNY1HErSbo3+tOLiYkPHbrbQdLTE05rymtA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEDzCCAfegAwIBAgIUUfSAdqIwpkqwXjDhZ+0JdUPaICAwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjExMTEyMTM0MDM4WhcNMjMxMTEyMTM0MDM3WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhX3UYfApjRF+CwtZqZJga6pwzbvNic585TOlc0qa2DbRcer1H3FYNY1HErSbo3+tOLiYkPHbrbQdLTE05rymtKOBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFNyqHmbZQ9GcMJjdpjpoJXEwFn/8MA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEART1krCdKJhBVe9N4ydQ2UGQlgjEL1OgHj1s0TNCQKL3kEwYcafkKstW0vtsFi1ZGKrfgWkXCcWwkl5/NxfRNoSACApZog4cgSYDlgxa2G7KAoXa7xLuN2ADMEK02zXY5tGnd7Sv6Jl2nMfuUXMirAotr1vA6QETSDmbQNJqyKciDOQkdjxL1mGKhDzeneYRxLeKkOVox/X0uPguRYT2NS7jr2U7S3Z48667Ow46YLAI6n7IZGodn7Wktz1aqFWPGoBhJ2Y5C/QvBjzWn/0WfLBX65cchOdkZoYvfJcnbWS7Z7N/G1V2/CNYNr09EHiZnsmdcsqBX/ywyIGdybCGbx3cDqXsOBfcjH5Jy8moe7QL3oEraUDUEk5JF7un17GcdB4pjOlB8e1AWEthMpa2UMUw/vox1TCUjZ3pZa4rYn+yhcBoA6dYgu8B2HXcNFAE2S35XXDT15C0LvYh858UvtWSLoRmwyrkbNr7ImtgVrdzOKhIEetbmKLdM7fB7kcsYWZ05LTD3VsA2A8AHCOZ2noI4f50pd+VF1FtOz8ogRrCvHz7TJ4T7Kg6aIq/K1zlu06LaJQj2s8f4mJeCYZBfYmm4uywO2PHI8Hcv5MwTrbQ27CuvBkayfIToNOrNLsI8qlcE20Vfei/rLFAGWQoF0xVoJ+boNIBtwn/NBJDtIb4=","kid":"zrMytIH40Rk="},{"issuer":"C = SI O = NIJZ, National Institute of Public Health of Slovenia OU = NIJZ eHealth CN = Slovenian Digital Covid Certificate CSCA","subject":"C = SI O = NIJZ, National Institute of Public Health of Slovenia OU = NIJZ eHealth CN = Slovenian Digital Covid Certificate Signer","notbefore":1622793213000,"notafter":1685865213000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEmxEg2iFDaol9DVnrqIY5zkPXrBA\nNQlakmUfrBhogaDC2ZZ7fkQ2IcOJgEF4rQSyb34g5jDw88g7QaIknaLKMw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC6jCCApCgAwIBAgIUJUAGAXpxHsU1S82LcnISggTrZYcwCgYIKoZIzj0EAwIwgZcxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTEwLwYDVQQDDChTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBDU0NBMB4XDTIxMDYwNDA3NTMzM1oXDTIzMDYwNDA3NTMzM1owgZkxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTMwMQYDVQQDDCpTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQSbESDaIUNqiX0NWeuohjnOQ9esEA1CVqSZR+sGGiBoMLZlnt+RDYhw4mAQXitBLJvfiDmMPDzyDtBoiSdosozo4G1MIGyMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUhB9+YwGh9z/Z2AFAekINW9AqzMwwHwYDVR0jBBgwFoAU1u0NkxR1dJeR9jh6pZ04KsvRFV8wMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzArBgNVHRAEJDAigA8yMDIxMDUyODEwMDAwMFqBDzIwMjIwNTI4MTAwMDAwWjAKBggqhkjOPQQDAgNIADBFAiEAgD02EKWZhDUblN1geYhOR8UYvbz1kKcncPzq4Y7SgS0CIEsbjBaDw8vWDqXsbDg7gckdK6SuF16w9Uvr/peExozy","kid":"90CNG8dcdn0="},{"issuer":"CN = Poland DGC RootCSCA 1 O = Ministry of Health C = PL","subject":"CN = Poland Test DGC Service 1 OU = eHealth Centre O = Ministry of Health C = PL","notbefore":1622029825000,"notafter":1685101825000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERG4yI/SSv70zEtVjzIrn/CypR1e0\nBZO5u8bIgltZicrg+992n2a7GucxK6zy91xq8F8XH7B0SJU75qkr8Z1d9A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIChjCCAiygAwIBAgIISPHH9eN/DsUwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTAyNVoXDTIzMDUyNjExNTAyNVowZzEiMCAGA1UEAwwZUG9sYW5kIFRlc3QgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAREbjIj9JK/vTMS1WPMiuf8LKlHV7QFk7m7xsiCW1mJyuD733afZrsa5zErrPL3XGrwXxcfsHRIlTvmqSvxnV30o4HeMIHbMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQUJtco+4DwjQXe7tYA2X0svBWc8aowKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTUwMjVagQ8yMDIyMDUyNjExNTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQD0aM2oui9agdjvs3W3CBnJzNj1QTn86txDT8z4f92U/QIgdfA1+c567xA4y/11vguxxe9nDHAtAAEpXe8FkupyFTk=","kid":"AN1EeLIMAmo="},{"issuer":"CN = Poland DGC RootCSCA 1 O = Ministry of Health C = PL","subject":"CN = Recovery DGC Service 1 OU = eHealth Centre O = Ministry of Health C = PL","notbefore":1622029789000,"notafter":1685101789000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdxvWMfuk6CHCbffZWPS6bRgVYglY\ndED1NT1FCfXstUZ81AWmYOh6tbZgOF9OM1lzqdpFD1uOmEZ0A8XXYmkB1A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICgDCCAiagAwIBAgIINrcF73thXScwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNDk0OVoXDTIzMDUyNjExNDk0OVowZDEfMB0GA1UEAwwWUmVjb3ZlcnkgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3G9Yx+6ToIcJt99lY9LptGBViCVh0QPU1PUUJ9ey1RnzUBaZg6Hq1tmA4X04zWXOp2kUPW46YRnQDxddiaQHUo4HbMIHYMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQU88MJtD/tgeFEqpb+Her86lI3G3UwKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTQ5NDlagQ8yMDIyMDUyNjExNDk0OVowCwYDVR0PBAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQDA6URDSMLbEYaFP1V1bfDlZDE5aANs8FcjghZGnadrHwIgbCe6gwSV5PAMwGXMgtbf9ItPzgFxV67mZzvH+avXOck=","kid":"FDNJjaSCWi0="},{"issuer":"CN = Poland DGC RootCSCA 1 O = Ministry of Health C = PL","subject":"CN = Poland Vaccination DGC Service 1 OU = eHealth Centre O = Ministry of Health C = PL","notbefore":1622029990000,"notafter":1685101990000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3N\nVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICiTCCAjCgAwIBAgIIPrgTduwYL84wCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTMxMFoXDTIzMDUyNjExNTMxMFowbjEpMCcGA1UEAwwgUG9sYW5kIFZhY2NpbmF0aW9uIERHQyBTZXJ2aWNlIDExFzAVBgNVBAsMDmVIZWFsdGggQ2VudHJlMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3NVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78qOB2zCB2DAfBgNVHSMEGDAWgBSReaLaaIESwKN0GqS63esPmeyLATAWBgNVHSUEDzANBgsrBgEEAY43j2UBAjBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vcDEuZXpkcm93aWUuZ292LnBsL2NjcDEvY3JsL0RHQ1Jvb3RDU0NBMS5jcmwwHQYDVR0OBBYEFEfkBAHCnTR6Ar66rg0lwacUkD9aMCsGA1UdEAQkMCKADzIwMjEwNTI2MTE1MzEwWoEPMjAyMjA1MjYxMTUzMTBaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiBrwE3IHj2Vjq71fA3jNBz/Hso3xXhVtPXa42JcfDJrvgIgLsib0ZAxm3ERXePd4Nlgvt+lISofEHlIi+CEBpJd5sE=","kid":"HhkeqvrtQ0U="},{"issuer":"CN = DGC Country Signing CA OU = Public Service Development Agency O = Ministry of Justice of Georgia C = GE","subject":"CN = DGC DS Signer 2 OU = LEPL Information Technologies Agency O = Ministry of Internally Displaced Persons From the Occupied Territories, Labour, Health and Social Affairs of Georgia C = GE","notbefore":1635527288000,"notafter":1698599287000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OUh2s00z3fKc2NTrYN+8SQERWvy\n3gRdGsmjrGMZQ9nZPT3bYLYDuyuhpYfQ8CSOuU2bScmWN9xthX3T6V1T8g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDLTCCAtKgAwIBAgIUbq8e2Rnwzdt8bImI5KhdT7wvIZIwCgYIKoZIzj0EAwIwgYMxHzAdBgNVBAMMFkRHQyBDb3VudHJ5IFNpZ25pbmcgQ0ExKjAoBgNVBAsMIVB1YmxpYyBTZXJ2aWNlIERldmVsb3BtZW50IEFnZW5jeTEnMCUGA1UECgweTWluaXN0cnkgb2YgSnVzdGljZSBvZiBHZW9yZ2lhMQswCQYDVQQGEwJHRTAeFw0yMTEwMjkxNzA4MDhaFw0yMzEwMjkxNzA4MDdaMIHVMRgwFgYDVQQDDA9ER0MgRFMgU2lnbmVyIDIxLTArBgNVBAsMJExFUEwgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIEFnZW5jeTF9MHsGA1UECgx0TWluaXN0cnkgb2YgSW50ZXJuYWxseSBEaXNwbGFjZWQgUGVyc29ucyBGcm9tIHRoZSBPY2N1cGllZCBUZXJyaXRvcmllcywgTGFib3VyLCBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzIG9mIEdlb3JnaWExCzAJBgNVBAYTAkdFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OUh2s00z3fKc2NTrYN+8SQERWvy3gRdGsmjrGMZQ9nZPT3bYLYDuyuhpYfQ8CSOuU2bScmWN9xthX3T6V1T8qOBzzCBzDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGdNMng/by4nCNGrYeB79TXd3c2wMDAGA1UdJQQpMCcGCysGAQQBjjePZQEDBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5jcmEuZ2UvZGdjY291bnRyeXNpZ25pbmdjYS5jcmwwHQYDVR0OBBYEFBlRrQE2MFW1c+X7ZPuq50qEp6YDMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNJADBGAiEAiDjXwDLMCbYtUOhS3p6HIN1aZdJg2x+q7QlFldqYoBkCIQDsv+uGlrWi8ZAjn1QsyqsU6HKc3a2oD+bTsg0UA/ZboQ==","kid":"AcOmDWpm7kI="},{"issuer":"CN = DGC Country Signing CA OU = Public Service Development Agency O = Ministry of Justice of Georgia C = GE","subject":"CN = DGC DS Signer 1 OU = LEPL Information Technologies Agency O = Ministry of Internally Displaced Persons From the Occupied Territories, Labour, Health and Social Affairs of Georgia C = GE","notbefore":1635526565000,"notafter":1698598564000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEa5QqEDGwiaDJSMCLVHg6l9ScX3LI\n/9mzuzs6e+E0YBgeKTdQ5VV0IBCSIZkgjSb/Hfzghmi9rOa9aGuww7BU9Q==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDLDCCAtKgAwIBAgIUVO20iQwJJtX9tVMEQrEQl/B+5XswCgYIKoZIzj0EAwIwgYMxHzAdBgNVBAMMFkRHQyBDb3VudHJ5IFNpZ25pbmcgQ0ExKjAoBgNVBAsMIVB1YmxpYyBTZXJ2aWNlIERldmVsb3BtZW50IEFnZW5jeTEnMCUGA1UECgweTWluaXN0cnkgb2YgSnVzdGljZSBvZiBHZW9yZ2lhMQswCQYDVQQGEwJHRTAeFw0yMTEwMjkxNjU2MDVaFw0yMzEwMjkxNjU2MDRaMIHVMRgwFgYDVQQDDA9ER0MgRFMgU2lnbmVyIDExLTArBgNVBAsMJExFUEwgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIEFnZW5jeTF9MHsGA1UECgx0TWluaXN0cnkgb2YgSW50ZXJuYWxseSBEaXNwbGFjZWQgUGVyc29ucyBGcm9tIHRoZSBPY2N1cGllZCBUZXJyaXRvcmllcywgTGFib3VyLCBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzIG9mIEdlb3JnaWExCzAJBgNVBAYTAkdFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEa5QqEDGwiaDJSMCLVHg6l9ScX3LI/9mzuzs6e+E0YBgeKTdQ5VV0IBCSIZkgjSb/Hfzghmi9rOa9aGuww7BU9aOBzzCBzDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGdNMng/by4nCNGrYeB79TXd3c2wMDAGA1UdJQQpMCcGCysGAQQBjjePZQEDBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5jcmEuZ2UvZGdjY291bnRyeXNpZ25pbmdjYS5jcmwwHQYDVR0OBBYEFHtiZBY7D8iDDRpr5yECOpZ1cyfLMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBH/RuRLyOU640ZMdX0CDXC2/Hlv8tDsQN2Tjm2+fmbbAIhALY7w0RCZyu0JY1jmnBMKtzPr7mdqZGCR1oi7jC8RvXO","kid":"ZqPYe26eEEk="},{"issuer":"C = FI O = Vaestorekisterikeskus CA OU = Sosiaali- ja terveydenhuollon palveluvarmenteet CN = VRK CA for Social Welfare and Health Care Service Providers","subject":"C = FI ST = Finland L = Helsinki O = Kansanelakelaitos OU = Kanta serialName = 1.2.246.556.12.21.2 CN = Todistuspalvelu","notbefore":1624014000000,"notafter":1687121999000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEepKcLfnTZIej9gSNJVmR8sRYMMgz\ntnG9h0ZGWx7D1X1g32V/GtJc55HkoH+vqkbkhKJnvDBJ1JdsbkKKmBJb2Q==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"BKBFhNFXWAU="},{"issuer":"C = EE O = Estonia OU = Police and Border Guard Board serialName = 01-2020 CN = CSCA_Estonia","subject":"CN = 02-2021_DCC serialName = 02-2021 C = EE O = Estonia OU = Health and Welfare Information Systems Centre","notbefore":1623152362000,"notafter":1701776362000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNf\nd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEtzCCAm+gAwIBAgIBFjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDBwMQswCQYDVQQGEwJFRTEQMA4GA1UECgwHRXN0b25pYTEmMCQGA1UECwwdUG9saWNlIGFuZCBCb3JkZXIgR3VhcmQgQm9hcmQxEDAOBgNVBAUTBzAxLTIwMjAxFTATBgNVBAMMDENTQ0FfRXN0b25pYTAeFw0yMTA2MDgxMTM5MjJaFw0yMzEyMDUxMTM5MjJaMH8xFDASBgNVBAMWCzAyLTIwMjFfRENDMRAwDgYDVQQFEwcwMi0yMDIxMQswCQYDVQQGEwJFRTEQMA4GA1UEChMHRXN0b25pYTE2MDQGA1UECxMtSGVhbHRoIGFuZCBXZWxmYXJlIEluZm9ybWF0aW9uIFN5c3RlbXMgQ2VudHJlMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNfd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4KOBtzCBtDAdBgNVHQ4EFgQUrz4uJgDuJ+1fAWhBPQpmWJOqvUMwKwYDVR0QBCQwIoAPMjAyMTA2MDgxMTM5MjJagQ8yMDIxMTIwNTExMzkyMlowDgYDVR0PAQH/BAQDAgeAMDUGA1UdHwQuMCwwKqAooCaGJGh0dHBzOi8vd3d3LnBraS5wb2xpdHNlaS5lZS9jc2NhLmNybDAfBgNVHSMEGDAWgBRVq9JvhX7uQOBhSt+YPiu2k2xVvDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIAOCAgEAJ/OIJaw1Hg+yD7TH3YPG7ux6I4Fpx1QC1UPdIouG0HcHm8Lde+cB1IHlHc/C03jvVWnkbeH0mlpHLcStNICIgc8wfhOLS/yDvor/sYSNNX2v9OcJuxWmL6a2b3C5vuQJNr09HrSqv+1MDM/Qj7qRSraO9JSm59StyaoEdZXgK40eNnSxfRD2HFRpqr6aY+FB7ONH53/nCi/PT+fW6LB2hS+VtBUaWt1pShs2W8cahNJ/O6oujquKDhTj8uqdbhV9lug2JJ2/eLxWawEYVGC20HMrg9qwW971mR3UeGZmbJb0KyHr4b1LupC+sN88/A0CwCybS3x2Dla/OvPff7W1BqFyhEzBgDL1jB9iVF57erYGkoPd9oHKTIQdZ84u7JKLvi13xJGAR4KAsryrfP0Wcc29+TQJPZwedaauz96OUpC92hcu21cI5drikSF/Y9U96gGay0AWHM+DafA6NEUiWRMIFC3IaMjMr6FFwz4uq6KTK08YZoN/Dn09eVgrBcXqHR69FSJ00lwduDDamN9JHmy5wuLw22rDaXiymUYAkZZCc1PS2yJG8bIOfzYEAHAbESlJQ671MmudVDRM3PuvVICRp0jXZg/sNzT053rDpk0Z2nxKLcAVzPo0wRgnpih1zVchVTakNbWxwsOPftCSVnZjEhAHvq/GZ3ysssMNRUc=","kid":"EzYR1uk/E0I="},{"issuer":"O = State enterprise \"DIIA\" CN = \"DIIA\". Green Certificate CSCA serialName = UA-43395033-2021 C = UA L = Kyiv 2.5.4.97 = NTRUA-43395033","subject":"O = State enterprise \"DIIA\" CN = \"DIIA\". Green Certificate DSC 2 serialName = 22 C = UA L = Kyiv","notbefore":1629234000000,"notafter":1692305999000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd22zt56DQx1ao5dd4u6jU3KPELJd\ncWfl0+FJ6cVhCb8s0SmQleFtS9m5RQqVzbBr/JnUfqVZjvrPFzwpbgdMeQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEuzCCBGGgAwIBAgIUeQTIILWQh4cEAAAAFgAAACEAAAAwCgYIKoZIzj0EAwIwgZsxIDAeBgNVBAoMF1N0YXRlIGVudGVycHJpc2UgIkRJSUEiMScwJQYDVQQDDB4iRElJQSIuIEdyZWVuIENlcnRpZmljYXRlIENTQ0ExGTAXBgNVBAUTEFVBLTQzMzk1MDMzLTIwMjExCzAJBgNVBAYTAlVBMQ0wCwYDVQQHDARLeWl2MRcwFQYDVQRhDA5OVFJVQS00MzM5NTAzMzAeFw0yMTA4MTcyMTAwMDBaFw0yMzA4MTcyMDU5NTlaMHUxIDAeBgNVBAoMF1N0YXRlIGVudGVycHJpc2UgIkRJSUEiMSgwJgYDVQQDDB8iRElJQSIuIEdyZWVuIENlcnRpZmljYXRlIERTQyAyMQswCQYDVQQFEwIyMjELMAkGA1UEBhMCVUExDTALBgNVBAcMBEt5aXYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3bbO3noNDHVqjl13i7qNTco8Qsl1xZ+XT4UnpxWEJvyzRKZCV4W1L2blFCpXNsGv8mdR+pVmO+s8XPCluB0x5o4ICpjCCAqIwHQYDVR0OBBYEFIjv6MDr8gqaj1GvhYENJ5FvDg+LMB8GA1UdIwQYMBaAFHkEyCC1kIeHDT09MC0K0Ko+YXcCMA4GA1UdDwEB/wQEAwIGwDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMEEGA1UdIAQ6MDgwNgYJKoYkAgEBAQICMCkwJwYIKwYBBQUHAgEWG2h0dHBzOi8vZ3JlZW5jYS5kaWlhLmdvdi51YTAJBgNVHRMEAjAAMFQGCCsGAQUFBwEDBEgwRjAIBgYEAI5GAQEwLQYGBACORgEFMCMwIRYbaHR0cHM6Ly9ncmVlbmNhLmRpaWEuZ292LnVhEwJlbjALBgkqhiQCAQEBAgEwTgYDVR0fBEcwRTBDoEGgP4Y9aHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvZG93bmxvYWQvY3Jscy9DQS03OTA0QzgyMC1GdWxsLmNybDBPBgNVHS4ESDBGMESgQqBAhj5odHRwOi8vZ3JlZW5jYS5kaWlhLmdvdi51YS9kb3dubG9hZC9jcmxzL0NBLTc5MDRDODIwLURlbHRhLmNybDCBiQYIKwYBBQUHAQEEfTB7MDUGCCsGAQUFBzABhilodHRwOi8vZ3JlZW5jYS5kaWlhLmdvdi51YS9zZXJ2aWNlcy9vY3NwLzBCBggrBgEFBQcwAoY2aHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvY2EtY2VydGlmaWNhdGVzL2dyZWVuY2EucDdiMEoGCCsGAQUFBwELBD4wPDA6BggrBgEFBQcwA4YuaHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvc2VydmljZXMvdHNwL2VjZHNhLzAKBggqhkjOPQQDAgNIADBFAiEAzrDXxTuym77Eo9J4GNB/GoZRm9lTVtmUpLCjhzr7t5ICIDdt0waoDoBfm201AGoLjErsage0uxBI3SkncWQaP7nZ","kid":"FhciF/j3plg="},{"issuer":"C = MC O = Principality of Monaco OU = Foreign Office of Monaco CN = CSCAPKI_MC","subject":"C = MC O = Principality of Monaco OU = Ministry of Health and Social Affairs CN = DSPKI_MC_DGC_1","notbefore":1632143989000,"notafter":1679491189000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/XCqYpwUi4RLldTOqsukogo6l4ZU\nIXO4ZtjkUxEpDToYLFI0uApt1KXSfpsn8EfNGPaWF+YW2B1QKpbCtbtZFg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE6zCCAtOgAwIBAgITEfc5jeKc7JLK6DrtdI7KoEudnzANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJNQzEfMB0GA1UECgwWUHJpbmNpcGFsaXR5IG9mIE1vbmFjbzEhMB8GA1UECwwYRm9yZWlnbiBPZmZpY2Ugb2YgTW9uYWNvMRMwEQYDVQQDDApDU0NBUEtJX01DMB4XDTIxMDkyMDEzMTk0OVoXDTIzMDMyMjEzMTk0OVowdzELMAkGA1UEBhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25hY28xLjAsBgNVBAsMJU1pbmlzdHJ5IG9mIEhlYWx0aCBhbmQgU29jaWFsIEFmZmFpcnMxFzAVBgNVBAMMDkRTUEtJX01DX0RHQ18xMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/XCqYpwUi4RLldTOqsukogo6l4ZUIXO4ZtjkUxEpDToYLFI0uApt1KXSfpsn8EfNGPaWF+YW2B1QKpbCtbtZFqOCAUowggFGMCgGA1UdEQQhMB+CC3d3dy5nb3V2Lm1jpBAwDjEMMAoGA1UEBwwDTUNPMDUGA1UdEgQuMCyGGGh0dHBzOi8vY3NjYS1tY28uZ291di5tY6QQMA4xDDAKBgNVBAcMA01DTzAOBgNVHQ8BAf8EBAMCB4AwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzArBgNVHRAEJDAigA8yMDIxMDkyMDA3NDQ0OFqBDzIwMjIwMzIwMDc0NDQ4WjAdBgNVHQ4EFgQU5DhDGjpYh+dwXciftwec8RGrW00wHwYDVR0jBBgwFoAUMDKcfP59jwLtxRJa4OtXv+iFiSkwMQYDVR0fBCowKDAmoCSgIoYgaHR0cHM6Ly9jc2NhLW1jby5nb3V2Lm1jL01DTy5jcmwwDQYJKoZIhvcNAQELBQADggIBAAnLvzFhQlE4lohlktg0QUnF6DGIA1JEC26QRnJi+1gMXNZok90Q37DPJ54uml8UnCkieGVIpQaDp5jIxMax+t6QmwkgQNoQzjiJJqeKP6xBsEUmGUKURx0g5z7ULem+TdedSIiMEqSrie3YX5Zfea3dzy3zIw2s6cCa67RHj860OqXZHrMtYc7rqoXxkWkqGaSJovxSthmiBWQisTPFMTzFZqm85ojU11A3uY8ReuUrUuvyefVAFENLuz8j2T6CGOIigNxnmyZzm+2TpH+53Dd5S8MlVwuZZ4RHv2g+p/YygOvHceGPIORSeLcqrIW4kgz6HxonBy/vjC6Pj07wFlyFafo3V5KQxPUQZtFQ8blhe7ZrRPyimObcA55Oh20V/HnVewzz3onjEQuotg1QNRJ7gzoJeBunwFXpHrG/mUg3dVeow0pOV0vsQ/QAOCM0p7GVABoHT4O4dOWLNoaWcoQBvPSGbAl5O1YhzOhXRTlyYfxNSUxKavWfpTF1mB1WXyThtatvQ2cP7qlgVYbBjvejyz+RTpK2cgyDFDlcBJaBakCBeuqEJvKvMxX50NqQAVBTfywrQyIyynttQgoxxl5KwkEPJ4BrbP/XIw8KkuGO5C9EKGjaftQNQ25GkdNDQFyMiJU7EhN6Hp/6dsgZXnfG8gacZu4vnIiXphYBigi2","kid":"FtUwA9uHJoo="},{"issuer":"C = MC O = Principality of Monaco OU = Foreign Office of Monaco CN = CSCAPKI_MC","subject":"C = MC O = Principality of Monaco OU = Ministry of Health and Social Affairs CN = DSPKI_MC_DGC_1","notbefore":1623918269000,"notafter":1671265469000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcrxlv5/uGbsaXM/QMSpvZV2iNtF0\no4QBech6LGpy3OEefbJLf+4iqI19QNWtUXEjlMMytB4+1ESLHdXyki5X2g==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE7DCCAtSgAwIBAgIUAJdHETmGhF9czCBAxz36xGrwMPkwDQYJKoZIhvcNAQELBQAwZjELMAkGA1UEBhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25hY28xITAfBgNVBAsMGEZvcmVpZ24gT2ZmaWNlIG9mIE1vbmFjbzETMBEGA1UEAwwKQ1NDQVBLSV9NQzAeFw0yMTA2MTcwODI0MjlaFw0yMjEyMTcwODI0MjlaMHcxCzAJBgNVBAYTAk1DMR8wHQYDVQQKDBZQcmluY2lwYWxpdHkgb2YgTW9uYWNvMS4wLAYDVQQLDCVNaW5pc3RyeSBvZiBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzMRcwFQYDVQQDDA5EU1BLSV9NQ19ER0NfMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHK8Zb+f7hm7GlzP0DEqb2VdojbRdKOEAXnIeixqctzhHn2yS3/uIqiNfUDVrVFxI5TDMrQePtREix3V8pIuV9qjggFKMIIBRjAoBgNVHREEITAfggt3d3cuZ291di5tY6QQMA4xDDAKBgNVBAcMA01DTzA1BgNVHRIELjAshhhodHRwczovL2NzY2EtbWNvLmdvdXYubWOkEDAOMQwwCgYDVQQHDANNQ08wDgYDVR0PAQH/BAQDAgeAMDMGA1UdJQQsMCoGDCsGAQQBAI43j2UBAQYMKwYBBAEAjjePZQECBgwrBgEEAQCON49lAQMwKwYDVR0QBCQwIoAPMjAyMTA2MTcwODE0MDBagQ8yMDIxMTIxNzA4MTQwMFowHQYDVR0OBBYEFCurTSCZX0MwxJXi6a/cJR4zZn9WMB8GA1UdIwQYMBaAFDAynHz+fY8C7cUSWuDrV7/ohYkpMDEGA1UdHwQqMCgwJqAkoCKGIGh0dHBzOi8vY3NjYS1tY28uZ291di5tYy9NQ08uY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQAEaZtWub0CVASIEHG95DCwcFIVdaVZZupOzKuIimUNRH8+9pa9IPekVPLiArnGlmpAg6o4Ac8MVHvCkEiSAA8HVDkABbssmrKm6ZZ4XRDtBokrGlYskUy2B8AQypPKjKXz/vMYnVMNl4kkcehG8+B0KyPrpYMK7VXQuRxe+QC0CaemS2NGLNvr2+vnpfXeJAfM6TpnSPaN7MjAgt/8UyGJP6HLuHbGgbALgcxwqq5CniU3f8zLjIXRKWqhDmE4M8ufu/VFVR18fWoHqeytcOpFTdmN3YLxu9jA573KHyLRLO7g20PlOJYuHtOoG2SzwEa2Ut0ooFAajLnxwVoYuCfYKWubYRRqReFI45EtNtC8Tut8J3SAIk53IH6v1mG4m2QFCGFV7ehu6A+jwsVrg8o+XesHV96EK8jJooEjp2jIIrHHU8LTozrWSECiRsnEWv7e4TP4+3dj/6Yrrzm6DlzCw/y9s6T/Iolp1SKaNsHOHJwwNTJAqzGxP8N8fdnxs1c1iLXXxHJy8AKZC8eNFj09AF8Tvi/IQTOpmMFhRGkCCkrNMf5Zf7vFLtAm+yqOsOOYNhTiyoqX96tKipsxcm+CDIAnhyUgJgxVfEUO547lg3/hdJUvI62/0gisUqXBnYDwMiWlXZHmS+K9lMar0k1NeKb2K5BSox7U3oP+d/RPpg==","kid":"Pcl7yBWEQ7c="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-RECOVERY-003 O = Government of Malta C = MT","notbefore":1625097600000,"notafter":1688255999000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDON\nYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICgTCCAiegAwIBAgIIFwgHF3EO4GkwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDMxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDONYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdaOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBR9uzKFO2DLNzUjBFGi4relF01KBTB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNIADBFAiEA99DvYsvpGT4tqpc0BMSCZeyZ7WMbt8ZM1PpabmhX8+cCIGCtDA+B0wWuPtFcN+xk/jBG5t30dSFLWQB43XkMQLug","kid":"GvVR3e6VJIM="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-TEST-001 O = Government of Malta C = MT","notbefore":1624233600000,"notafter":1687391999000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfapP8+QeyFgXVvY41YkQudlUUh7I\nZBBpIdOJ34xYmxCEuHXbVUFqt/JSnbpVsGsd7ZBPUjL2u5Ks9moBMDEPLg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICfjCCAiOgAwIBAgIIejS7d37VXgEwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMTEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR9qk/z5B7IWBdW9jjViRC52VRSHshkEGkh04nfjFibEIS4ddtVQWq38lKdulWwax3tkE9SMva7kqz2agEwMQ8uo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFBR+KFEXuumXgCc5GWe258iqVrnfMHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNjIxMDAwMDAwWoEPMjAyMTEyMjEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDBnG+uLfchypa5wnmHMUi2aWEzWkbjoGgn5WsWmXffcAIhAKMusBaq7xzWVRMreNFvQsitrCaSaqDoQPvQuU72+SjN","kid":"QacbC7DdD4U="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-VACCINATIONS-001 O = Government of Malta C = MT","notbefore":1624233600000,"notafter":1687391999000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1q1nvgXLGIbibQuYQU+f+Xs+mcbP\nmukAc3KQAyy/5KZH+n5F4bG4V0XIjphX093YxHh1JbHWOzuhKuan9FboyA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIChTCCAiugAwIBAgIIZEwDM+Nt1KMwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAxMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNatZ74FyxiG4m0LmEFPn/l7PpnGz5rpAHNykAMsv+SmR/p+ReGxuFdFyI6YV9Pd2MR4dSWx1js7oSrmp/RW6MijgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUuCrjQfrYEdJhuUeDcYx4JKEFOf4weQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA2MjEwMDAwMDBagQ8yMDIxMTIyMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIgZGBb0sNv06M+s8UpL7ziN/FU4+4AGksrMB2BIIkZDBwCIQDXwcZZQKZFsV55HpRm/AxXSBLXu4vPFR2Lx3rdqy0nFg==","kid":"UZ1cSMaPcaQ="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-TEST-002 O = Government of Malta C = MT","notbefore":1625097600000,"notafter":1688255999000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4DsoM1rJFjHyQPcX6WKDWZkouBeh\nfQGxqOgwFAYyRKXbrSuL+tkz8sJfo8djfsuQRLDSuZxud0IOsMB9YsTMpg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICfjCCAiOgAwIBAgIIJTfDXWft5tcwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMjEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATgOygzWskWMfJA9xfpYoNZmSi4F6F9AbGo6DAUBjJEpdutK4v62TPywl+jx2N+y5BEsNK5nG53Qg6wwH1ixMymo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFAdYsuwV3Y8H3ArMdIP4+88NQzj6MHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNzAxMDAwMDAwWoEPMjAyMjAxMDEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDKRMYKb/xaog2wAz78sg7nxPSSGvmXDSmGm3OAvywYtwIhAL1aS9k2jC5FGCnXL146W6TNwJOLZXhG0WELPuo1eaPF","kid":"bfoj2trt6bE="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-VACCINATIONS-002 O = Government of Malta C = MT","notbefore":1625097600000,"notafter":1688255999000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXj9fU7e4KVYe1VakCDZjYquHzkox\nSHT8D33zeMDfyLbYi/GSVpKQtPwBPZlPx65r2Kb2warIK8BgxSgsQvMIag==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIChTCCAiugAwIBAgIIWGrho8bBjMowCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAyMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABF4/X1O3uClWHtVWpAg2Y2Krh85KMUh0/A9983jA38i22IvxklaSkLT8AT2ZT8eua9im9sGqyCvAYMUoLELzCGqjgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUOLKcvXnMDSbbBkkI/qyub1XWtNUweQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA3MDEwMDAwMDBagQ8yMDIyMDEwMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIhAPh/K0cwTwjugfRAGr47Ntn3O6iy5Dq6vtWdminY7WDrAiA/usc8ejitliKRcw9kWYkRTe5M8QTrGi0d8ISZfbWPzw==","kid":"ccgQ13tmkU8="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-RECOVERY-002 O = Government of Malta C = MT","notbefore":1625097600000,"notafter":1688255999000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNx\ndEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4Q==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICgjCCAiegAwIBAgIIK+HdvXWkN9YwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDIxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNxdEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4aOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBQpm2iI+XG+uIq9XM2lqhKzZ5i5MDB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNJADBGAiEAvxNjK3WJhVQiCHwFKMfUClW0xa0ikhLAPaHirWYEgKMCIQDWDa7xu71vGhmTaIeKuMywD+f1yfPsaCzeEpr1yUITbA==","kid":"f6J92LRKpj0="},{"issuer":"CN = IS DGC CSCA 1 serialName = 1 OU = Directorate of Health O = Directorate of Health C = IS","subject":"CN = IS-DSC-testrec-1 serialName = 2 OU = Directorate of Health O = Directorate of Health C = IS","notbefore":1625249448000,"notafter":1688321448000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvwlwjQL5cId7nINp/A/b+XNY/Wzg\nX9sIOde8ggZmZjXvIYhDhz7Fvs52ozmdqatDp3yIwPpr6nAMmaNTj0KdZg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIBzTCCAXQCAnBLMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA3MDIxODEwNDhaFw0yMzA3MDIxODEwNDhaMHQxGTAXBgNVBAMMEElTLURTQy10ZXN0cmVjLTExCjAIBgNVBAUTATIxHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABL8JcI0C+XCHe5yDafwP2/lzWP1s4F/bCDnXvIIGZmY17yGIQ4c+xb7OdqM5namrQ6d8iMD6a+pwDJmjU49CnWYwCgYIKoZIzj0EAwIDRwAwRAIgGuvSzxkT7wtN8UW9b8VavzmUbfC1Ojl99ZLu6iNNxbgCIHvbmygVJAEC9/GJgitb+1wQx5fHp/SEcfnkqPOqzFrn","kid":"HeWuzGwEM5c="},{"issuer":"CN = IS DGC CSCA 1 serialName = 1 OU = Directorate of Health O = Directorate of Health C = IS","subject":"CN = IS-DSC-1 serialName = 1 OU = Directorate of Health O = Directorate of Health C = IS","notbefore":1623406705000,"notafter":1686478705000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEO42X7C2X5bSDTnfSJwnk4qAjSk2m\n11Cy/mmFqryl7J1MhrZDfy77ky4uS0o1iW181Ev51mAiW0J3i3SeKYeEOw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIBxTCCAWwCAgQRMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA2MTExMDE4MjVaFw0yMzA2MTExMDE4MjVaMGwxETAPBgNVBAMMCElTLURTQy0xMQowCAYDVQQFEwExMR4wHAYDVQQLDBVEaXJlY3RvcmF0ZSBvZiBIZWFsdGgxHjAcBgNVBAoMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDELMAkGA1UEBhMCSVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ7jZfsLZfltINOd9InCeTioCNKTabXULL+aYWqvKXsnUyGtkN/LvuTLi5LSjWJbXzUS/nWYCJbQneLdJ4ph4Q7MAoGCCqGSM49BAMCA0cAMEQCIFH/Cm+epgBJoz2S3eZaSPQLb2+3seJAEe2rgvrTcA4ZAiB6kXpC2VR9kqcv+HpDrbmx4Xq3PgTsQ5HxY1B5vepJ2g==","kid":"Pbydc1LscXo="},{"issuer":"C = AT O = BMSGPK serialName = 001 CN = AT DGC CSCA 1","subject":"C = AT O = BMSGPK serialName = 001001 CN = AT DGC DSC 1","notbefore":1622641524000,"notafter":1685713524000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYE24qIKmdcfRWUh2TqklkfZ6nyNB\npX4VHeLMxfFl8rkQ8Zku0bcnH5OZXckkSt+tKs+FGZ9tKJ1VtNDmedlL6w==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIB7zCCAZagAwIBAgIKAXnM+L47fmBcezAKBggqhkjOPQQDAjBEMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQwwCgYDVQQFEwMwMDExFjAUBgNVBAMMDUFUIERHQyBDU0NBIDEwHhcNMjEwNjAyMTM0NTI0WhcNMjMwNjAyMTM0NTI0WjBGMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQ8wDQYDVQQFEwYwMDEwMDExFTATBgNVBAMMDEFUIERHQyBEU0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGBNuKiCpnXH0VlIdk6pJZH2ep8jQaV+FR3izMXxZfK5EPGZLtG3Jx+TmV3JJErfrSrPhRmfbSidVbTQ5nnZS+ujbjBsMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUNs2smrjBhuR5Bqxl6teE1x1o2ycwHwYDVR0jBBgwFoAUHyKsHGUWKbTBmLNjb7/dCZ27e3swGgYDVR0QBBMwEYEPMjAyMTEyMTYxNDQ1MjRaMAoGCCqGSM49BAMCA0cAMEQCIDjXHnyzq3sTisMX1uY8xQ2ZqCRL2xmxtYOPhSZ9ZacYAiAqHUMOC7WNgq4h28n31WLc1mMPAYauWslSEwnXC79AGw==","kid":"Is2JtrOJhik="},{"issuer":"C = LV O = VAS Latvijas Valsts radio un televīzijas centrs 2.5.4.97 = NTRLV-40003011203 CN = Digital Green Certificate CSCA","subject":"C = LV O = NTRLV-90009649337 CN = lv_dsc_003","notbefore":1636018245000,"notafter":1699090245000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6aTLMp6+apBgDNYyDeBS+BranY97\nxhfHhRYV+/D6WsCBJ93WCnduv7YsSFj4NGf/xoJynxeckYR3+JhYBvdOyA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE0TCCArmgAwIBAgIQMgfVJ9KIWgdhg6hFmVPWzDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTExMDQwOTMwNDVaFw0yMzExMDQwOTMwNDVaMD4xCzAJBgNVBAYTAkxWMRowGAYDVQQKDBFOVFJMVi05MDAwOTY0OTMzNzETMBEGA1UEAwwKbHZfZHNjXzAwMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOmkyzKevmqQYAzWMg3gUvga2p2Pe8YXx4UWFfvw+lrAgSfd1gp3br+2LEhY+DRn/8aCcp8XnJGEd/iYWAb3TsijggFEMIIBQDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMB0GA1UdDgQWBBSNXXFCsYbyQpaR9CVhus96/tOAejAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzIuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCFbvni9IiyVakliliz/jPuPfk3N2RETFV7cEGjRABugInh43DAPZz0siRPi2dmMy5B1b2T22QxFI7Od0qBkiPcGXKqwik1GU097mNWZ+5p8PuOVMN8E7nj5kX/vBJnmLw+XT1/taPMoz3cBVQ/7NTu1ycXVmJ1lWR8nPsBbqWRgnJbXFL1Q4Io+jngV2Y20o/OC+yvc0TsdofuM6dgDBEBunAU2kmiuexEtpyPVWgBuu5nz6mXOD1U10pXnxvDM5S6w+IDY04Nt3K4ONrlG/ghWUhTjrlYjpFMofqtK6CuKpGo8HQMpgQqb/bTTaAGeE3jEdoRVQxvQcsoUKEzM6cLf/XHz/MIoxlCfX0Rs+we93g/X4vjpXaoO0Dns57hEbRz53t3sE2Fty1rjY3qjGUd269vOtDIl2DooipUAnvSevUQQ3tRu7HeFGnc2ARrb82RG9lj2xwcce+JE5owTQYI2nSdnor1C2sQYhbMKNfbeLEwmoiWLUJyuhB95CPffwUffxQfF6EBbVEK9w6Rpu2I5Mo2qM9cwfJOYc9EIN4Bw8k3h7J3bNNFueVITL4WmVSjXnOaDFtt8PPF/H37exix0akaePpB4BGc5fpJN+OfIwPqEPU0ZDR+wFzwwHZrNF/aMD+j2myGGIuKcAkdt2rqzErGRznR6QClCNpJ3JF2Ew==","kid":"J8p9pf+5/9M="},{"issuer":"C = LV O = VAS Latvijas Valsts radio un televīzijas centrs 2.5.4.97 = NTRLV-40003011203 CN = Digital Green Certificate CSCA","subject":"CN = LV DSC 002 O = Nacionālais veselības dienests C = LV","notbefore":1624985695000,"notafter":1688057695000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5/m2YdN8L81Ajoi+2brFJbul628a\nlfXRXU26t7hRYEvvsb74tSVm2Dm9cbuhrgFJ+/wXecdxh0tTSHCkMfB0hQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE4DCCAsigAwIBAgIQIVI8+7pCJKdg21Bf1/kMnDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA2MjkxNjU0NTVaFw0yMzA2MjkxNjU0NTVaME0xEzARBgNVBAMMCkxWIERTQyAwMDIxKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOf5tmHTfC/NQI6Ivtm6xSW7petvGpX10V1Nure4UWBL77G++LUlZtg5vXG7oa4BSfv8F3nHcYdLU0hwpDHwdIWjggFEMIIBQDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMB0GA1UdDgQWBBRJf+oSyT8lY9W8EXkcQkkbATciFzAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQA4+nXE7XWgwDhBUeldjoFgT1kRu6D5LzgFUsrTqicHFjGWXeXQKBnM9Dfx8iZBSY64O7FS/ompqIGxMFFZcBRYUgdaC9KQorL48w4b8WFCSQe0KUhDNqdlACWceq6/0tVtfek1M85bQ+ETU6InqY5sir7cZpyXFRXXXbdHqXjioC/EwfRo1/OB3wBX3/9HWcebIEskw4or2Z5p5BERPi2EQfp5cfv6BpH7tPYt0XJ7vA9WhsLLZGWPfKIU10iBF/DTGW5c2u/3yVCEbF215khpXx187kvXchIln4ZCbIiGkJrJRmnS6XZ++1c0BQpW4tdvUvxhuhqqln7GQPrOZK6HoOwFOjOC/k0oIkgYzJ+8xv7DA2PIXlOjSmkuZIqB4fr3DVKtnAVqWKKxnBMXqgyYlJenTUvp7OpUl+iYKqvSn7WX2F0wZQlYH+Gz1pGDdeyw4+cKZtUND6rFwHC9OxzeXM00wDp+G7O7IFBtwzaVrO/hRFGTG0W6vOv0Shc0lmVj++IzItVQx/SJRl9Lkfz58sQbRE8FphiUw4Wza3ad/eFafjDH3r0gtT/WA8aKUEp5j70kmb5XXIk9UMkk/T7385FRL3Q1ciqyoOVrRhL10wkEO+DDXuaqawXXtTz+3MDWX43TcE4wtQYDfw9i3tiDKkpzyRm43VvWoIDzGPDZ8g==","kid":"MrT00mhDxLQ="},{"issuer":"C = LV O = VAS Latvijas Valsts radio un televīzijas centrs 2.5.4.97 = NTRLV-40003011203 CN = Digital Green Certificate CSCA","subject":"CN = LV DSC 001 O = Nacionālais veselības dienests C = LV","notbefore":1622220600000,"notafter":1685292600000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPUwE7htr+kD1eVnJBfRf5tx0kA17\nqu4p1wRz3EKPxsJyyIznIqr9+HsnMd7k9ID/f0deqjP8dulzS2cFrVVnFQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIE4zCCAsugAwIBAgIQfBNf4Ug47/BgsR84n0s5NDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA1MjgxNjUwMDBaFw0yMzA1MjgxNjUwMDBaME0xEzARBgNVBAMMCkxWIERTQyAwMDExKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD1MBO4ba/pA9XlZyQX0X+bcdJANe6ruKdcEc9xCj8bCcsiM5yKq/fh7JzHe5PSA/39HXqoz/Hbpc0tnBa1VZxWjggFHMIIBQzAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRivdWHr9big4cJkaojQ5INsdnuNDAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCCMrABdfqTT+3ux1VQ5RdqsFgArimneuPxVHSSitIqZ3rPwkS0EsTl5fUm6m5ZqxZreu5ChfGMzC9+/Z4OQfafuvVp0i/T5eD+oiN46g33bdcbxhaBg0i7++xpbRGKM5Wh9LuEW4iUq/wIxJBEJdYFGyvF2eP95mFMadKxcs8+aKdHWEix9CUgJozMEKsAslG81xYlSzVtCmAT5qraC9uz/qGTj/bYfivtMCEdChp7BWp7MP4hD3UG2rW+wxHzD1gYLy7NqqRG3+qPfolNM0SqliZederytEYoszv2zLoUleVGPq33XavqLTfCgPhOqhxPsnH0NLcuJkgSeq5yxg8FWQaRdIR6+BlENzVQ6LYNamsuBRxNZPDurKXL58rt/8dZoeEIn+qO92mo8oVrD4xDOHvjJJIuOqZ2zcODbvV/wBhCXjrTDBiUSe9tpeagE5UKfLN/pyh3TGzMzVyo5Tn30ihqXEIX6IawpZfLJNslZnEbDFi1/2K8b00t78x7pNTSFKyXou8VaabQVPspvuWsoW9D0nyig1ymLcCrSFpnCpf/GEKONRYI6Zi+LYpWzjI81/DzVyC49Gh25ZX6Z0k6ThgDq1J4qmiGU3I1W+VcQ+fNtTsCz9fv2Kdi62U0oYqmt3FAc2Vnt30yoKqgnSfyD4xhZSafHxz2ml0jFS1xzg==","kid":"hFpY/ySOrwI="},{"issuer":"C = BG O = Ministry of Health OU = Health Information System CN = Bulgaria DGC CSCA 1","subject":"C = BG L = Sofia O = Ministry of Health OU = Health Information System CN = DGC DSC 1","notbefore":1622205711000,"notafter":1685277711000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmyxlsE2inBusapxY7LvRiPN0s+ds\nHnakaaa9M/5NDZZTljSZCzeK77fWO9MFRcGCXrTQaXNE3FhkV4+a92hRaw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICpDCCAkugAwIBAgIURXVV/Gq2Irn6g/NqhBUW+K90bQowCgYIKoZIzj0EAwIwbDELMAkGA1UEBhMCQkcxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDEiMCAGA1UECwwZSGVhbHRoIEluZm9ybWF0aW9uIFN5c3RlbTEcMBoGA1UEAwwTQnVsZ2FyaWEgREdDIENTQ0EgMTAeFw0yMTA1MjgxMjQxNTFaFw0yMzA1MjgxMjQxNTFaMHIxCzAJBgNVBAYTAkJHMQ4wDAYDVQQHDAVTb2ZpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMSIwIAYDVQQLDBlIZWFsdGggSW5mb3JtYXRpb24gU3lzdGVtMRIwEAYDVQQDDAlER0MgRFNDIDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASbLGWwTaKcG6xqnFjsu9GI83Sz52wedqRppr0z/k0NllOWNJkLN4rvt9Y70wVFwYJetNBpc0TcWGRXj5r3aFFro4HEMIHBMAwGA1UdEwEB/wQCMAAwLAYDVR0fBCUwIzAhoB+gHYYbaHR0cDovL2NybC5oaXMuYmcvY3NjYTEuY3JsMB8GA1UdIwQYMBaAFFeMHPlme+J4tvwi8r3u4ZCmP7FWMB0GA1UdDgQWBBS+Zk3uynTTHvB0Mb9eAgWF0vA6DDAOBgNVHQ8BAf8EBAMCB4AwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNHADBEAiBjSeBvjP2L5USPCkCAZggp/d4Mw/PUGt17jQdEet7f1AIgFI0GKAKWwdMW+xDfZmN4XAv27Z20ryj6kFY08jdIlo0=","kid":"Jjql9rBrjHI="},{"issuer":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-CSCA-PROD-20210608 E = webmaster@llv.li","subject":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-DSC-TEST-PROD-20210608 E = webmaster@llv.li","notbefore":1623138120000,"notafter":1686210120000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBnFUjr8FpfpVaVFtCUW7Yg6JBk/n\n1TlJKEKpm/rZOvAEzKpwoTCpXpXPP1SPGhvQXzJ+i4dBQHgbdw2SDpcZmQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC8zCCApqgAwIBAgIIP9+ZLHC2FYQwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc0MjAwWhcNMjMwNjA4MDc0MjAwWjCBlDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEmMCQGA1UEAxMdREdDLU5CLURTQy1URVNULVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQGcVSOvwWl+lVpUW0JRbtiDokGT+fVOUkoQqmb+tk68ATMqnChMKlelc8/VI8aG9BfMn6Lh0FAeBt3DZIOlxmZo4HXMIHUMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFKdEjVLpS/bdKCMQdvpMviuko+rEMB8GA1UdIwQYMBaAFPSeeHwW3w57BFMM1pp4NCgcTd+FMA4GA1UdDwEB/wQEAwIHgDA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vY3JsLmxsdi5saS9ER0MtTkItQ1NDQS1QUk9ELTIwMjEwNjA4MB4GCWCGSAGG+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwFgYDVR0lBA8wDQYLKwYBBAGON49lAQEwCgYIKoZIzj0EAwIDRwAwRAIgTvGgYK3ij9bZvyKshoyDlYrQwXR7Btj0JIcpdq6NFqECIHd6ABGRr+NyKJjnlB7ZlYiJDfrERVPyF/q/Esmhv56P","kid":"JkFekJel6/o="},{"issuer":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-CSCA-PROD-20210608 E = webmaster@llv.li","subject":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-DSC-RECOVERY-PROD-20210608 E = webmaster@llv.li","notbefore":1623139020000,"notafter":1686211020000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9B\nnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiAw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC+TCCAp6gAwIBAgIIEVh/vC3chgUwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NzAwWhcNMjMwNjA4MDc1NzAwWjCBmDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEqMCgGA1UEAxMhREdDLU5CLURTQy1SRUNPVkVSWS1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9BnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiA6OB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBT+nyG6/wNEQ0TEblj8ow7u2bNB4DAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQDqBN9eq6TjWFWqhOkU9hvdA5hBacvUjL0Rt3i5dbV8kwIhAKhpBMwxHfoFXS7FwiuXOyj4zxZ60pPvPbxYGawo9OZI","kid":"e/YRqyv++qY="},{"issuer":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-CSCA-PROD-20210608 E = webmaster@llv.li","subject":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-DSC-VACCINATION-PROD-20210608 E = webmaster@llv.li","notbefore":1623138840000,"notafter":1686210840000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30f\ntIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC+jCCAqGgAwIBAgIIECN/LlZb7kkwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NDAwWhcNMjMwNjA4MDc1NDAwWjCBmzELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEtMCsGA1UEAxMkREdDLU5CLURTQy1WQUNDSU5BVElPTi1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30ftIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJKOB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQ3BvFcjsG6REaqwESNcZW1BjNTwDAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQECMAoGCCqGSM49BAMCA0cAMEQCIEEnfB5SgmatugluROBG4Q06cVdBulDo4S4vQJXO0lj2AiABMtLp5pBQA/cS9ksKlYkCuj/X2TTnM3yIPhngaEN/7A==","kid":"jYpr5GHCDiQ="},{"issuer":"C = MK ST = North Macedonia L = Skopje O = Ministry of Health CN = zdravstvo.gov.mk E = contact@zdravstvo.gov.mk","subject":"C = MK ST = North Macedonia L = Skopje O = Ministry of Health, North Macedonia OU = E-Health, North Macedonia CN = zdravstvo.gov.mk E = contact@zdravstvo.gov.mk","notbefore":1635409469000,"notafter":1666945469000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA65H+Vak/9kWmQXGYEZEu\nA2hSykjqYu72g//uaBs/Ac0JYV9Zhqwjb6iPf1tATe87vzg7sD5gGOqtabbOYMcV\nW50e3X5Ix4XxKMMoAvtkyDI/TbMK4HqiEY5FVf/JhPZEp4+nSVjwhozn0p7pKSk+\nWKYEjIG/zpceLyikArxxSt5SwYdVMmau+6kdHT4Q0m3btE5ORl+B0exu+KS3xb6W\nRsiU5E8kXyQFBS3zK6DxFqDDVyWhWVt4NfoJt76ZE3zuXPutyPs3AVscJDWB5mkn\n/yM8Fg20WAsZ0O9p3uyyK+MSwFdRmUzK7Gr6dnQhce4oh0HTAFsodFwnDsPCfJxc\nskoIYZW2xWX1W03jpngQWXgA1eJ44/4Ve0u09w5DpwNrgT3SoznZhZ3DPfH38NV3\nfxhm8KuVmNtmKms2ctExY8RftHXMFAQC4jDgutnaJz1zyC95QVkp06drreGLzX4X\nvPYZZdZhh4UYqT/IYXaX2yt09Tu+ueVm1MRlWeuEzlYYApbMceBseE7MuWdCVPwc\nx/QMjp7b4BSnRH+w4XIqs/wS8nXkMyBEdCMbCH3PFKNQOmbmA3Lq6X2eFWhgRud3\nFGyPacS5ADeV/s/aei+UJY/i9tY/NeXCYLtox4PXucUU4gbU9wV7rvLTNvwWIr5g\nga/gu18hrHe6Dag7p9wsU3ECAwEAAQ==\n-----END PUBLIC KEY-----\n","rawX509data":"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","kid":"KBPNEuXUvrY="},{"issuer":"CN = CSCA Saude serialName = 001 O = Republica Portuguesa - Portuguese Republic C = PT","subject":"CN = DGC DS serialName = 001 O = Republica Portuguesa - Portuguese Republic C = PT","notbefore":1621613831000,"notafter":1684685830000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnjK8A8ato900a+wQ1IaxJyaeUGQ5\nlwsYOCRlq47X4DKGe+P3L22utYcGTWtCekBqarcEzzSHH/X+s5aeEQgYYA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICKTCCAc6gAwIBAgIUb724peU13ddK2UiaXfZ8lJA3KpAwCgYIKoZIzj0EAwIwZTETMBEGA1UEAwwKQ1NDQSBTYXVkZTEMMAoGA1UEBRMDMDAxMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vlc2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMB4XDTIxMDUyMTE2MTcxMVoXDTIzMDUyMTE2MTcxMFowYTEPMA0GA1UEAwwGREdDIERTMQwwCgYDVQQFEwMwMDExMzAxBgNVBAoMKlJlcHVibGljYSBQb3J0dWd1ZXNhIC0gUG9ydHVndWVzZSBSZXB1YmxpYzELMAkGA1UEBhMCUFQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASeMrwDxq2j3TRr7BDUhrEnJp5QZDmXCxg4JGWrjtfgMoZ74/cvba61hwZNa0J6QGpqtwTPNIcf9f6zlp4RCBhgo2AwXjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFH4yvG+XLvlf69AVR2efiYzKIWgOMB0GA1UdDgQWBBQlYiuUojmAFDYjAmowakBbgeqeNTAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSQAwRgIhALe/oIGICdSXhdPOH7yFiPAUR/FhjdX+dsCyvU8Am4pLAiEA2HtA78ZO3jLs7BoIgh+xZ5fqaJbCIFMdwVzdJ/hCvWY=","kid":"KG9lzdohSY0="},{"issuer":"C = DK O = The Danish Health Data Authority OU = The Danish Health Data Authority CN = PROD_CSCA_DGC_DK_01 E = kontakt@sundhedsdata.dk","subject":"C = DK O = The Danish Health Data Authority OU = The Danish Health Data Authority CN = PROD_DSC_DGC_DK_01 E = kontakt@sundhedsdata.dk","notbefore":1621417645000,"notafter":1684576045000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBmdgY/VORsecXxY/0xNNOzoJNRaV\nnMMmHs5jiXrGvaDOy1jzDUOyvR++Jxgf0+YuGyp5/UAY0QIh75b+JQnlHA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICyzCCAnGgAwIBAgIBATAKBggqhkjOPQQDAjCBqTELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEcMBoGA1UEAwwTUFJPRF9DU0NBX0RHQ19ES18wMTEmMCQGCSqGSIb3DQEJARYXa29udGFrdEBzdW5kaGVkc2RhdGEuZGswHhcNMjEwNTE5MDk0NzI1WhcNMjMwNTIwMDk0NzI1WjCBqDELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEbMBkGA1UEAwwSUFJPRF9EU0NfREdDX0RLXzAxMSYwJAYJKoZIhvcNAQkBFhdrb250YWt0QHN1bmRoZWRzZGF0YS5kazBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAZnYGP1TkbHnF8WP9MTTTs6CTUWlZzDJh7OY4l6xr2gzstY8w1Dsr0fvicYH9PmLhsqef1AGNECIe+W/iUJ5RyjgYgwgYUwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBRXm2TEfVc2DPhwR/do67XrHDz4FzAfBgNVHSMEGDAWgBSb8DXRV1S8RJEI55z8etM+2ZXtSjAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMAoGCCqGSM49BAMCA0gAMEUCIB+IJn+8uICEfEnONXufysFrmtYBcTppGomj1Pr8WZF8AiEA0c3LZ3OShcmWfin0kwWzbf39irEMvJlF1idothpb0Eg=","kid":"NAyCKly+hCg="},{"issuer":"C = BE O = eHealth - Belgium CN = Belgium Covid19 Country Signing CA 01","subject":"C = BE O = eHealth - Belgium CN = Belgium Covid19 DSC 01","notbefore":1622110367000,"notafter":1685182367000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHo\nznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICLTCCAdOgAwIBAgIIXf7//TpWDVgwCgYIKoZIzj0EAwIwWTELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMS4wLAYDVQQDDCVCZWxnaXVtIENvdmlkMTkgQ291bnRyeSBTaWduaW5nIENBIDAxMB4XDTIxMDUyNzEwMTI0N1oXDTIzMDUyNzEwMTI0N1owSjELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMR8wHQYDVQQDDBZCZWxnaXVtIENvdmlkMTkgRFNDIDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHoznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyKOBkzCBkDAdBgNVHQ4EFgQUr/AjSs5HKJsXQVr617Z6OO2Z9h8wHwYDVR0jBBgwFoAUMc4oJrfby5Fk9eLZSMutpWhvX9UwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NlcnQtYXBwLmJlL3Jldm9rZWRMaXN0L2RnY19jc2NhMDEuY3JsMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiA56koPekERN3iWtlXwuD8rwBgbsTkZj2Yqe8kL2doIbwIhAKYOJyyIeR4Po523PY5rniN4jaaSkgefulusXXKiEthU","kid":"ODqaG8mnbro="},{"issuer":"C = BE O = eHealth - Belgium CN = Belgium Covid19 Country Signing CA 01","subject":"C = BE O = eHealth - Belgium CN = Belgium Covid19 DSC 02","notbefore":1637054072000,"notafter":1700126072000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEX79y3o+S4vY8UyqO1uzSAT6W7zUL\npaFWqe6MqPue8fVNOhQ1bwN/yKHKN64HkcJ+sGIpLtgaJb4iGr06NiAWfQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICLTCCAdOgAwIBAgIIG+DS62eZmPswCgYIKoZIzj0EAwIwWTELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMS4wLAYDVQQDDCVCZWxnaXVtIENvdmlkMTkgQ291bnRyeSBTaWduaW5nIENBIDAxMB4XDTIxMTExNjA5MTQzMloXDTIzMTExNjA5MTQzMlowSjELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMR8wHQYDVQQDDBZCZWxnaXVtIENvdmlkMTkgRFNDIDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEX79y3o+S4vY8UyqO1uzSAT6W7zULpaFWqe6MqPue8fVNOhQ1bwN/yKHKN64HkcJ+sGIpLtgaJb4iGr06NiAWfaOBkzCBkDAdBgNVHQ4EFgQUGQizN6eLdUb55YpiOuht4TeeiigwHwYDVR0jBBgwFoAUMc4oJrfby5Fk9eLZSMutpWhvX9UwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NlcnQtYXBwLmJlL3Jldm9rZWRMaXN0L2RnY19jc2NhMDEuY3JsMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBm+UkB5ZbZO7CqGiaA4J4Xj/LhFP61DZV9gY54U47S4gIhAPFP3U9ekHl9ecHOxL0oEZ0/4GdaIZ1E0wnBFvB98UPm","kid":"aCU0KJl+gMg="},{"issuer":"C = IE ST = Dublin L = Dublin O = Department of Health OU = eHealth CN = CSCA_DGC_IE_01","subject":"C = IE O = Department of Health CN = validateqr.gov.ie 2020135457912391810539600999694555","notbefore":1625650281000,"notafter":1687858281000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETPE5ItolrGzLQLPqYxOT+orVmYJu\nsLDsPWLwrK+bbJKBBtXBsrD2Py/osWYr9LF5ffORpzxmBUQmzp7K4uPiIw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICqjCCAlGgAwIBAgIJAIFaAnBKVQR5MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNzA3MDkzMTIxWhcNMjMwNjI3MDkzMTIxWjBrMQswCQYDVQQGEwJJRTEdMBsGA1UEChMURGVwYXJ0bWVudCBvZiBIZWFsdGgxPTA7BgNVBAMTNHZhbGlkYXRlcXIuZ292LmllIDIwMjAxMzU0NTc5MTIzOTE4MTA1Mzk2MDA5OTk2OTQ1NTUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARM8Tki2iWsbMtAs+pjE5P6itWZgm6wsOw9YvCsr5tskoEG1cGysPY/L+ixZiv0sXl985GnPGYFRCbOnsri4+Ijo4HQMIHNMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUT2vp7aj2JBxHrQ1vkpX4bZJoi10wHwYDVR0jBBgwFoAUXIe2JeQrVG0xki6dmWYLVblvTFAwSQYDVR0fBEIwQDA+oDygOoY4aHR0cHM6Ly9nZW4uZGlnaXRhbGNvdmlkY2VydGlmaWNhdGVzLmdvdi5pZS9hcGkvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCIAEEtN5Jh3HP0OTeYkyq0o4eaL0yGZnAbDhUUa0+StGTAiEA5trl/PUTtSwMNUSpc1UAA/viDLCW3FXyfx9cJaheFsQ=","kid":"PBpDVqnJ7Us="},{"issuer":"C = IE ST = Dublin L = Dublin O = Department of Health OU = eHealth CN = CSCA_DGC_IE_01","subject":"C = IE ST = Dublin L = Dublin O = Department of Health OU = eHealth CN = DGC CSR","notbefore":1625060335000,"notafter":1688132335000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZ\nwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8Q==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICmDCCAj+gAwIBAgIJAIFaAnBKVQR3MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNjMwMTMzODU1WhcNMjMwNjMwMTMzODU1WjByMQswCQYDVQQGEwJJRTEPMA0GA1UECAwGRHVibGluMQ8wDQYDVQQHDAZEdWJsaW4xHTAbBgNVBAoMFERlcGFydG1lbnQgb2YgSGVhbHRoMRAwDgYDVQQLDAdlSGVhbHRoMRAwDgYDVQQDDAdER0MgQ1NSMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8aOBtzCBtDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFBgOd1YgJce5VyyJvYhrUDZbtTrZMB8GA1UdIwQYMBaAFFyHtiXkK1RtMZIunZlmC1W5b0xQMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9jZXJ0Lmdvdi5pZS9DUkwvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCICD5ra8JbGVJCDS7k9BeY1D8SlL8dv8eVH8mMXKFJek4AiEA5j7KharjyLlp7GtXvJeS+Ht+0dgaaesqpMNfuPH7TmI=","kid":"eNNsg2jd4wA="},{"issuer":"C = PA O = FIRMA ELECTRONICA CN = AUTORIDAD NACIONAL PARA LA INNOVACION GUBERNAMENTAL","subject":"C = PA ST = Panama L = Panama O = AIG OU = AIG CN = AIG","notbefore":1631790882000,"notafter":1694862882000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6B5cdgxOlktZr67WAjgdIgoJwG5Z\nSTRBM6yEZb0y3rrlIHQi95rlKO6dFtQxo5rRPZYjvWSbaqVBgvbc0djcxw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDQDCCAiigAwIBAgIUNLMk961tL/NV8V23sWCKJoUwj4kwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UEBhMCUEExGjAYBgNVBAoMEUZJUk1BIEVMRUNUUk9OSUNBMTwwOgYDVQQDDDNBVVRPUklEQUQgTkFDSU9OQUwgUEFSQSBMQSBJTk5PVkFDSU9OIEdVQkVSTkFNRU5UQUwwHhcNMjEwOTE2MTExNDQyWhcNMjMwOTE2MTExNDQyWjBZMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMQ8wDQYDVQQHDAZQYW5hbWExDDAKBgNVBAoMA0FJRzEMMAoGA1UECwwDQUlHMQwwCgYDVQQDDANBSUcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAToHlx2DE6WS1mvrtYCOB0iCgnAbllJNEEzrIRlvTLeuuUgdCL3muUo7p0W1DGjmtE9liO9ZJtqpUGC9tzR2NzHo4G8MIG5MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUhd6zV7FXbysIfctxWIRFj/snGO8wHwYDVR0jBBgwFoAUjQVO+fAPdNAQMNdSugA4+rjnIVQwNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3d3dy5wa2kuZ29iLnBhL2NybHMvY2Fnb2IuY3JsMDAGA1UdJQQpMCcGCysGAQQBjjePZQEBBgsrBgEEAY43j2UBAgYLKwYBBAGON49lAQMwDQYJKoZIhvcNAQELBQADggEBAIJlTzhpBZn/hDvsviHRVpk7W+ICxubhJ7nEOjC6GLECQ22/dWmLo1U98BEv1nZKA1CF2/Uo2vdzryMILJ8tysDjs/7WOa8WH3oZ0f8FVj/vj/9H07xI2bJuQfX3O+SO5LvuMtZzyxBkIVdTn2B7PBsO9AzXPRn8m1W068VTema97toGiqqOn9Yhe6nhgjD4d+AGwmLlHSl/73n+oYzmmznf3JJTwf5Of1t2lH3P3crTyvfLZZHvf6ubQ7JzBcOgRXNgizksh6YNtyZhAjMhHgV6UfOe0ik14IE8xqWkf3k4aq8RS2oSdAeWMQ4rZbPaswKWBWRuNVywheR+xjSaO6o=","kid":"Ui7DXQikstE="},{"issuer":"C = AM L = Yerevan O = Armed OU = DGCOperations CN = CSCA_DGC_AM_01","subject":"C = AM ST = Some-State L = Yerevan O = Armed CN = DSC_DGC_AM_O1","notbefore":1633589669000,"notafter":1696661669000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGsoQ+d21h6C2haw4Ty4q/38Ux+t5\n1x9qe6EhVH30tsO5cxpvULTb+FFQbkcHcu0V9WbqIyIMaANSYH4ntN1H4A==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICRTCCAeqgAwIBAgIUfvIoqYr4oy/CWPFHPFoVgTgAPLUwCgYIKoZIzj0EAwIwYDELMAkGA1UEBhMCQU0xEDAOBgNVBAcMB1llcmV2YW4xDjAMBgNVBAoMBUFybWVkMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMRcwFQYDVQQDDA5DU0NBX0RHQ19BTV8wMTAeFw0yMTEwMDcwNjU0MjlaFw0yMzEwMDcwNjU0MjlaMFwxCzAJBgNVBAYTAkFNMRMwEQYDVQQIDApTb21lLVN0YXRlMRAwDgYDVQQHDAdZZXJldmFuMQ4wDAYDVQQKDAVBcm1lZDEWMBQGA1UEAwwNRFNDX0RHQ19BTV9PMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBrKEPndtYegtoWsOE8uKv9/FMfredcfanuhIVR99LbDuXMab1C02/hRUG5HB3LtFfVm6iMiDGgDUmB+J7TdR+CjgYUwgYIwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBRqxeKvv2wDiKAhCFTKOAz+UVyatDAfBgNVHSMEGDAWgBTTJV9hj0P3rLMweZAdJnUKadCwaDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCW6k0AfZPRXJBATVg9tHajdGcerq93YUnw3BJt++DM1QIhAMhUzyF6wEDAq+wJbTeI2mTc0+qVWbNTzchg870FSU29","kid":"W0NjksmJMm0="},{"issuer":"C = RS L = Beograd 2.5.4.97 = VATRS-110177886 O = Kancelarija za informacione tehnologije i elektronsku upravu CN = RS NBCSCA","subject":"CN = RS PROD DSC2 O = Kancelarija za informacione tehnologije i elektronsku upravu C = RS","notbefore":1636986858000,"notafter":1700058858000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtc0dmUPU8wLDfYTVnSXD\nxhCr4AHEG+GKSy13pMGI5Fj8IK1e9JVLrLoemtLnlaFV5WAPr6G8ialeG9TV9Xnw\nfiiWzAaxLT28u8/8MG4jihRKw5cVAPC0mizABynleAzU+dOYkNFlmwEpt6M6+VXl\n39aild/WVqMnZ0I/k/Vg0tQe5lS7aBPBtb7WJaaOYhzDx2hcv0z7IrYSBmigWgl3\njOO0TN+/1viQPtMbtbvC6gxXGDyQ8/HCwgt69HYNDHrBglFjLIvbelLuTsgoDooz\nIV+BUKIDal2vtAGvd1cDrN6YvqqiZRwqOn3gtv1oj/XmZUnl7aMtKisQ1MuqKVHm\ntQIDAQAB\n-----END PUBLIC KEY-----\n","rawX509data":"MIIFKjCCAxKgAwIBAgIUBsFy8hwKgnDAZGz/bi/+8NsJbrswDQYJKoZIhvcNAQELBQAwgZQxCzAJBgNVBAYTAlJTMRAwDgYDVQQHEwdCZW9ncmFkMRgwFgYDVQRhEw9WQVRSUy0xMTAxNzc4ODYxRTBDBgNVBAoTPEthbmNlbGFyaWphIHphIGluZm9ybWFjaW9uZSB0ZWhub2xvZ2lqZSBpIGVsZWt0cm9uc2t1IHVwcmF2dTESMBAGA1UEAxMJUlMgTkJDU0NBMB4XDTIxMTExNTE0MzQxOFoXDTIzMTExNTE0MzQxOFowazEVMBMGA1UEAwwMUlMgUFJPRCBEU0MyMUUwQwYDVQQKDDxLYW5jZWxhcmlqYSB6YSBpbmZvcm1hY2lvbmUgdGVobm9sb2dpamUgaSBlbGVrdHJvbnNrdSB1cHJhdnUxCzAJBgNVBAYTAlJTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtc0dmUPU8wLDfYTVnSXDxhCr4AHEG+GKSy13pMGI5Fj8IK1e9JVLrLoemtLnlaFV5WAPr6G8ialeG9TV9XnwfiiWzAaxLT28u8/8MG4jihRKw5cVAPC0mizABynleAzU+dOYkNFlmwEpt6M6+VXl39aild/WVqMnZ0I/k/Vg0tQe5lS7aBPBtb7WJaaOYhzDx2hcv0z7IrYSBmigWgl3jOO0TN+/1viQPtMbtbvC6gxXGDyQ8/HCwgt69HYNDHrBglFjLIvbelLuTsgoDoozIV+BUKIDal2vtAGvd1cDrN6YvqqiZRwqOn3gtv1oj/XmZUnl7aMtKisQ1MuqKVHmtQIDAQABo4GbMIGYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFPHhcSjAsmKP7ijI10VI7Lc8dDTIMDgGA1UdHwQxMC8wLaAroCmGJ2h0dHBzOi8vY2xvdWQuZWlkLmdvdi5ycy9jcmwvbmJjc2NhLmNybDAdBgNVHQ4EFgQU5/vY+2xxURwDV2bNEeYIFGMWSLgwDQYJKoZIhvcNAQELBQADggIBAHQexmp5RK8OA8j/SKhwUpiUTSvgQg/2/UgdQ2v5x4lzo8N9cQ6fS5VxY5YK3CpJBNEz8i5qRmzsD0UozOvEeLbcum3L4hCoOPXWhsPMcRkaEEwYn5kDP4Evz7iqmqviHL74BBxx3zZ9WVfoq8SCbkawywrw2Hwtoeuo3XKOWDK0jsesewcEHWv9MfEXhKjZtxlS0v1lkCF/5AvSEUPIYz4FasPeCoX31JIizErdZZLXiy5FGKxxBW6LP7GUAQkouKDeLZLsV/5247rNADICYkrOyd2jtZY37BY6UobYNH7flofqbwTbXfvfT+xD9cb5uyPTWD18lukcQirJahE64Fsa2ZE/E6+SiFDRsLTazEItW0bVAECA2gQd8Gg2FesBMMlJbQFTGxXdU4FQCP31/SlIc9DJjo8KIEfwr+khMRUaD91wq1Nwfmf3NuB4qv3nX6rQI9bAoCNs0/eU1A8LqJ4ugKf0LUHpfMTk585lhSyHKeXX823Uu5cPnk05Z1zDVJ72VrH57qETto+4gJ1DK2iLcgJHWkUQqwiWHygWzDsVvFIv26CRSItK2JpV2gZM8sTYFAoqquAlzyAkvumdvwpg4aUWMyWHZV0W9X71YGM1To8ZPU1v4dIOB7ESjGwEluD35arlYn9IjuvQBbnO++/Cr/STq2n9DS/mG2XDkVi/","kid":"YgBnrpZDGXk="},{"issuer":"C = SE O = Swedish eHealth Agency OU = Digital Covid Certificate Services 2.5.4.97 = 202100-6552 CN = Swedish Digital Covid Certificate CSCA","subject":"C = SE O = Swedish eHealth Agency 2.5.4.97 = 202100-6552 CN = DCC Signer","notbefore":1624255651000,"notafter":1687328851000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaLOo1IGTspZSdr2BqdAvKjZjHfW/\nZq8VDrI6nEhBlXUr3VCDlzjrXo5v6ix2qF9RCySJsHgZxUrqWQpFQbrbMw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDbzCCAtGgAwIBAgIRAKzjP3XRAzwsEbbfxdhLsK0wCgYIKoZIzj0EAwIwgaIxCzAJBgNVBAYTAlNFMR8wHQYDVQQKDBZTd2VkaXNoIGVIZWFsdGggQWdlbmN5MSswKQYDVQQLDCJEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIFNlcnZpY2VzMRQwEgYDVQRhDAsyMDIxMDAtNjU1MjEvMC0GA1UEAwwmU3dlZGlzaCBEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIENTQ0EwHhcNMjEwNjIxMDYwNzMxWhcNMjMwNjIxMDYyNzMxWjBZMQswCQYDVQQGEwJTRTEfMB0GA1UECgwWU3dlZGlzaCBlSGVhbHRoIEFnZW5jeTEUMBIGA1UEYQwLMjAyMTAwLTY1NTIxEzARBgNVBAMMCkRDQyBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARos6jUgZOyllJ2vYGp0C8qNmMd9b9mrxUOsjqcSEGVdSvdUIOXOOtejm/qLHaoX1ELJImweBnFSupZCkVButszo4IBLjCCASowCQYDVR0TBAIwADArBgNVHSMEJDAigCACTjrfhadUh3CvxKG9ilhNH5em/z3iqGdiDEqCy0uCujApBgNVHQ4EIgQgcumMkPVDerXtTa5yvY0Vp+vbcHWxuiqfF0N9MU0I6hEwDgYDVR0PAQH/BAQDAgOIMD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHBzOi8vZGdjZy5jb3ZpZGJldmlzLnNlL2NzY2EvY3JsL2NzY2EwMS5jcmwwRwYIKwYBBQUHAQEEOzA5MDcGCCsGAQUFBzABhitodHRwczovL2RnY2cuY292aWRiZXZpcy5zZS9jc2NhL29jc3AvY3NjYTAxMCsGA1UdEQQkMCKBIHJlZ2lzdHJhdG9yQGVoYWxzb215bmRpZ2hldGVuLnNlMAoGCCqGSM49BAMCA4GLADCBhwJCAJH08xci9Y2aQQcUJTnA+WIVSblO5K/ncVsYFd+jzM/m1chhh7CD75oN5twgWMl0aPMcjqaylNH/p82zPONaERqmAkEyCrbICfyUiio20CrFRmWS8KWq4LL8dkHapxgqVrG75/3xrmhAdxlH1WoC+Af1I602E6dsaCZw6mmMY0GPOEvGhw==","kid":"Z7k1XpIWZOE="},{"issuer":"C = MA OU = Ministry of Health O = Kingdom of Morocco CN = CSCA Health MA","subject":"C = MA O = Kingdom of Morocco OU = Ministry of Health CN = DSC-MA","notbefore":1631800460000,"notafter":1694872460000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvILEthEWN9hu06zQ9GCUCthQJ9OA\na/0eskYOKbfQZVEf9kNzPEH9qbVrwvr8jhwKL6CKoXAefNLlrBKZ+Mtpzg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDSzCCAvCgAwIBAgITNQAAAASf3f6XNUKvGAAAAAAABDAKBggqhkjOPQQDAjBgMQswCQYDVQQGEwJNQTEbMBkGA1UECxMSTWluaXN0cnkgb2YgSGVhbHRoMRswGQYDVQQKExJLaW5nZG9tIG9mIE1vcm9jY28xFzAVBgNVBAMTDkNTQ0EgSGVhbHRoIE1BMB4XDTIxMDkxNjEzNTQyMFoXDTIzMDkxNjEzNTQyMFowWDELMAkGA1UEBhMCTUExGzAZBgNVBAoTEktpbmdkb20gb2YgTW9yb2NjbzEbMBkGA1UECxMSTWluaXN0cnkgb2YgSGVhbHRoMQ8wDQYDVQQDEwZEU0MtTUEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS8gsS2ERY32G7TrND0YJQK2FAn04Br/R6yRg4pt9BlUR/2Q3M8Qf2ptWvC+vyOHAovoIqhcB580uWsEpn4y2nOo4IBjzCCAYswPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIgvu3EoKquCSH3YEMhdOqaoTo4wQVh/uOCoXE3wgCAWQCAQwwMQYDVR0lBCowKAYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGCisGAQQBgjcKAwwwDgYDVR0PAQH/BAQDAgbAMAwGA1UdEwEB/wQCMAAwPQYJKwYBBAGCNxUKBDAwLjAOBgwrBgEEAQCON49lAQEwDgYMKwYBBAEAjjePZQECMAwGCisGAQQBgjcKAwwwHQYDVR0OBBYEFKda1UHydNCDDid5anJrgzvYRipXMB8GA1UdIwQYMBaAFMKQ1XKb4BABLnDYaZMGbye1kxhEMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9OQk1vcm9jY28ubWEvQ1JMcy9NQS1IZWFsdGguY3JsMEEGCCsGAQUFBwEBBDUwMzAxBggrBgEFBQcwAYYlaHR0cDovL05CTW9yb2Njby5tYS9BSUEvTUEtSGVhbHRoLmNydDAKBggqhkjOPQQDAgNJADBGAiEAozqhzCknO/8+LbUU7EWGoKr9Xx9gx7u/jh4BHN3mt5kCIQDit7cWPpLSCWOr25AHpmdccHK6kGk0mOlAPVIGFnssdQ==","kid":"ZpnsokK1DgM="},{"issuer":"C = IL 0.9.2342.19200300.100.1.25 = IL 0.9.2342.19200300.100.1.25 = GOV 0.9.2342.19200300.100.1.25 = HEALTH 0.9.2342.19200300.100.1.25 = MOH ST = Israel L = Jerusalem O = Ministry of Health OU = Digital Health CN = CSCA-Health-DCG-IL-01","subject":"C = IL ST = Israel L = Jerusalem O = Ministry of Health OU = Digital Health CN = IL-NB-DSC-01","notbefore":1630826160000,"notafter":1693898160000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcw+UZUnryP4rqSw+a8xQw4wLHZkc\nu4MDjJP7QeBUEpDt8xh4i4RSIBEJrBkAukSSobRDkwMb0dSCsWwK0rfMgQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEGDCCA76gAwIBAgITHQAAAAdFhwvAgMs01AAAAAAABzAKBggqhkjOPQQDAjCB3jELMAkGA1UEBhMCSUwxEjAQBgoJkiaJk/IsZAEZFgJJTDETMBEGCgmSJomT8ixkARkWA0dPVjEWMBQGCgmSJomT8ixkARkWBkhFQUxUSDETMBEGCgmSJomT8ixkARkWA01PSDEPMA0GA1UECBMGSXNyYWVsMRIwEAYDVQQHEwlKZXJ1c2FsZW0xGzAZBgNVBAoTEk1pbmlzdHJ5IG9mIEhlYWx0aDEXMBUGA1UECxMORGlnaXRhbCBIZWFsdGgxHjAcBgNVBAMTFUNTQ0EtSGVhbHRoLURDRy1JTC0wMTAeFw0yMTA5MDUwNzE2MDBaFw0yMzA5MDUwNzE2MDBaMH8xCzAJBgNVBAYTAklMMQ8wDQYDVQQIEwZJc3JhZWwxEjAQBgNVBAcTCUplcnVzYWxlbTEbMBkGA1UEChMSTWluaXN0cnkgb2YgSGVhbHRoMRcwFQYDVQQLEw5EaWdpdGFsIEhlYWx0aDEVMBMGA1UEAxMMSUwtTkItRFNDLTAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcw+UZUnryP4rqSw+a8xQw4wLHZkcu4MDjJP7QeBUEpDt8xh4i4RSIBEJrBkAukSSobRDkwMb0dSCsWwK0rfMgaOCAbcwggGzMD4GCSsGAQQBgjcVBwQxMC8GJysGAQQBgjcVCIHfvEqGsP5shImdOoHa71aE5rZjgR6HqL9hhrfIGwIBZAIBATA6BgNVHSUEMzAxBggrBgEFBQcDAwYLKwYBBAGON49lAQMGCysGAQQBjjePZQEBBgsrBgEEAY43j2UBAjAOBgNVHQ8BAf8EBAMCB4AwSAYJKwYBBAGCNxUKBDswOTAKBggrBgEFBQcDAzANBgsrBgEEAY43j2UBAzANBgsrBgEEAY43j2UBATANBgsrBgEEAY43j2UBAjAdBgNVHQ4EFgQUwT5hHIGSYoKxJeYKXe2rSc9vQCQwHwYDVR0jBBgwFoAUBb9drdvo+jTMbWZX2BWGWxPT3uwwRwYDVR0fBEAwPjA8oDqgOIY2aHR0cDovL2NkcC5oZWFsdGguZ292LmlsL2NybC9DU0NBLUhlYWx0aC1EQ0ctSUwtMDEuY3JsMFIGCCsGAQUFBwEBBEYwRDBCBggrBgEFBQcwAoY2aHR0cDovL3BraS5oZWFsdGguZ292LmlsL3BraS9DU0NBLUhlYWx0aC1EQ0ctSUwtMDEuY3J0MAoGCCqGSM49BAMCA0gAMEUCIQCWjjvyGozH4GMhl6d81s5PolAOAXXipAvnnP6RiLGt4QIgabSTGYvdNpepTEdQ7+F8KMdiBZStUJ1utwJqVN1Ov/M=","kid":"cS/wou0g/po="},{"issuer":"C = VA O = STATO CITTA’ DEL VATICANO OU = DIREZIONE DI SANITA' E IGIENE CN = CSCA_DGC_VA_01","subject":"C = VA O = STATO CITTA’ DEL VATICANO OU = DIREZIONE DI SANITA' E IGIENE CN = DSC_DGC_VA_01","notbefore":1624614420000,"notafter":1687686420000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEI6Q/krjPDaHJ2WsrBzR9sGYnYjFq\nkflAAWhJgXbXt3RuUVfJt4c53N6v9J2BE3kPqCVl9FbYrwqQ0vZ+Ps5e+Q==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICbzCCAhSgAwIBAgIIc/6LARpWk7YwCgYIKoZIzj0EAwIwdDELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFzAVBgNVBAMMDkNTQ0FfREdDX1ZBXzAxMB4XDTIxMDYyNTA5NDcwMFoXDTIzMDYyNTA5NDcwMFowczELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFjAUBgNVBAMMDURTQ19ER0NfVkFfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQjpD+SuM8NocnZaysHNH2wZidiMWqR+UABaEmBdte3dG5RV8m3hznc3q/0nYETeQ+oJWX0VtivCpDS9n4+zl75o4GQMIGNMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFHjsdxdRG2UcVpJ5tq07/6TxOa+jMB8GA1UdIwQYMBaAFL2EdVekv64Aod98sSbpzAqLftAtMAsGA1UdDwQEAwIDuDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCedrxueUJyy8gthgOF7b2Fdv+chSkliDs1z2oOuRagWQIhAJh4vf8YxtkfC3MB+B9y1x2OwC2GRGFCtaF5WaB7K6F5","kid":"crm1HLAeaTo="},{"issuer":"C = CZ O = MZCR CN = CZ DSC CSCA 1","subject":"C = CZ O = MZCR CN = CZ DSC 1","notbefore":1620311040000,"notafter":1683383040000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3l\nAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKUw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0AzMA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDUwNjE0MjQwMFoXDTIzMDUwNjE0MjQwMFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3lAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKU6NdMFswHQYDVR0OBBYEFDReRuL4VneLcO8YqdVWn2+gpPl9MB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQAZpv8/b4k+QxliHeWKAiJ34OKMEYh8xn1Dc9+55f+h0NLY4ZSelGrf2SrJIt9yhomzjOQUARqiumbuSzZMMPUNzKIRsPSa1NkfRq7y3QehG+cuhKKdLYpWErjRdp97gubCVGLXld7+iuschYCwAztKnyPof94yPgAGkdCEnTNW1z6tc33E/Fnd59nF8/JBZdSTt2uRXxFY8plasmoRzdXYASwTUyXXheZcG+KNYJ5NxYSF3LJeF81ucJ6mWkAk+MwoJXVu7VVZ6pn51JPL+YyArV2FaN8lWs9QYW2XgCuUTm4IC9T/BgVKTstr6eGQiHLOEbyE8NmLond1Bzv27ClLXEBvL9lIqJ5hJFvVWbfpNPvJAjI4z3LA7DuYgQ3ws8mf0iMW+4aOkLCd7dv0HNcUPoHUOTelgcfAzEsZuajUcH3uGwgcs2wEBdW1KfqEP8L7bgwBGC+UGe1yeGM4k7OYOnGP2SMm3Gk+MrYaqW51Fun20bcXkagDxMJh06PpDm4=","kid":"e4lH6I4iMIM="},{"issuer":"C = CZ O = MZCR CN = CZ DSC CSCA 1","subject":"C = CZ O = MZCR CN = CZ DSC 2","notbefore":1623319578000,"notafter":1686391578000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2k\nYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0A0MA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDYxMDEwMDYxOFoXDTIzMDYxMDEwMDYxOFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2kYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOqNdMFswHQYDVR0OBBYEFAKjMTdShDzGev/eNqlHHzJIHdXVMB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQA3d3iNHRpsKWia1XiF5QQlKUFwcvDdtAlFhfmy99oI+ywmppys7xoeOrIKazIyAyZ3tNImPkcde0ARSvMmAzsr6T/BqxsV78htXzUoILy1z6Y8QZ8+RXcNmR79k9iqudKv5tWZ2S2ticNeo78WV6oB18oV5/hhLlkS/NQC5wZ5LJar+wEF1VaxkvG2GmooaODPgPbRutjStTamSu2Din4SRg8pIWlyCMy0qnzVDMzdYUsjvmC3myxzHevFSTs36hj1aiLxaeAmVTvCi39o6s0EBjyM8Yk2WHJS9k5EkvBcJcEx4z55RkBLKo4PJalQS1hJc62GFM3J3lyyKqecSZBn2xj5bM8UEkI+8ylHsF/D3vrjtu1MaxM9loTogvf8wu4S7DMP/yXBanmr2G4k132JbSX7goclMF2zel7kGAn2B2vUQrGM76Rqb4lkddPWCc+0dossH1zAvbOAo5+raC9xaUU00GC3wR7+30xjJtBw0JbDlSBk3l1xnGnvLehkqV8=","kid":"fNf883wPIEg="},{"issuer":"CN = Faroe Islands Health Authority CSCA v1 O = Gjaldstovan C = FO","subject":"CN = DSC_DGC_FO_345334_TEST_01 O = SJUKRAHUSVERKID C = FO","notbefore":1625755197000,"notafter":1688827197000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyOmUr7E52s+yofKQE/TmtLQxLPEp\nZnZMA/OL647R1ZZG+O3tA7F3CfMXmgZZV4OOjuoaAbgHh01F5MdEg1eQpg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICwTCCAmegAwIBAgIUNEcJXMYBcHdOAkMYq/Oxeh8O2hwwCgYIKoZIzj0EAwIwVDEvMC0GA1UEAwwmRmFyb2UgSXNsYW5kcyBIZWFsdGggQXV0aG9yaXR5IENTQ0EgdjExFDASBgNVBAoMC0dqYWxkc3RvdmFuMQswCQYDVQQGEwJGTzAeFw0yMTA3MDgxNDM5NTdaFw0yMzA3MDgxNDM5NTdaMEsxIjAgBgNVBAMMGURTQ19ER0NfRk9fMzQ1MzM0X1RFU1RfMDExGDAWBgNVBAoMD1NKVUtSQUhVU1ZFUktJRDELMAkGA1UEBhMCRk8wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATI6ZSvsTnaz7Kh8pAT9Oa0tDEs8SlmdkwD84vrjtHVlkb47e0DsXcJ8xeaBllXg46O6hoBuAeHTUXkx0SDV5Cmo4IBHjCCARowHwYDVR0jBBgwFoAU7jyBpuYetlF0RODQ9DAz4upqvqEwXAYDVR0gBFUwUzBRBggqgVCBPQIBATBFMEMGCCsGAQUFBwIBFjdodHRwczovL3JlcG9zaXRvcnkuc2FtbGVpa2kuZm8vbGVnYWwtcmVwb3NpdG9yeS9laGVhbHRoMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwuc2FtbGVpa2kuZm8vRmFyb2UtSXNsYW5kcy1IZWFsdGgtQXV0aG9yaXR5LUNTQ0EtdjEuY3JsMB0GA1UdDgQWBBRoTJ4+NjLdr8NB6IGKfB1XhMs0kjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAIFSB54lOmRGpWORORdkNMCupU6c+ujY64AOdb3Sp9rNAiAXlZatIjO4ENXA4H+WJEa4ZUHRAxKFEh//IXBloU0V3w==","kid":"fNstNUxgGSI="},{"issuer":"CN = Faroe Islands Health Authority CSCA v1 O = Gjaldstovan C = FO","subject":"CN = DSC_DGC_FO_345334_VACCINATION_01 O = SJUKRAHUSVERKID C = FO","notbefore":1625755531000,"notafter":1688827531000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIp1kjKkjq85G7p7edy5EfNsWF0l4\nXZu5Rz+nL3viEVP/qiZYWwsQ30RXMDwixcFXI2tSzfu82J31dIEGQ3Ceog==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICyTCCAm6gAwIBAgIUJUU4n5bintk3G2D7kThvmJ+NHlwwCgYIKoZIzj0EAwIwVDEvMC0GA1UEAwwmRmFyb2UgSXNsYW5kcyBIZWFsdGggQXV0aG9yaXR5IENTQ0EgdjExFDASBgNVBAoMC0dqYWxkc3RvdmFuMQswCQYDVQQGEwJGTzAeFw0yMTA3MDgxNDQ1MzFaFw0yMzA3MDgxNDQ1MzFaMFIxKTAnBgNVBAMMIERTQ19ER0NfRk9fMzQ1MzM0X1ZBQ0NJTkFUSU9OXzAxMRgwFgYDVQQKDA9TSlVLUkFIVVNWRVJLSUQxCzAJBgNVBAYTAkZPMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIp1kjKkjq85G7p7edy5EfNsWF0l4XZu5Rz+nL3viEVP/qiZYWwsQ30RXMDwixcFXI2tSzfu82J31dIEGQ3CeoqOCAR4wggEaMB8GA1UdIwQYMBaAFO48gabmHrZRdETg0PQwM+Lqar6hMFwGA1UdIARVMFMwUQYIKoFQgT0CAQEwRTBDBggrBgEFBQcCARY3aHR0cHM6Ly9yZXBvc2l0b3J5LnNhbWxlaWtpLmZvL2xlZ2FsLXJlcG9zaXRvcnkvZWhlYWx0aDAWBgNVHSUEDzANBgsrBgEEAY43j2UBAjBSBgNVHR8ESzBJMEegRaBDhkFodHRwOi8vY3JsLnNhbWxlaWtpLmZvL0Zhcm9lLUlzbGFuZHMtSGVhbHRoLUF1dGhvcml0eS1DU0NBLXYxLmNybDAdBgNVHQ4EFgQU784333ONVF7EvtIgnj6nYCOli8QwDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0kAMEYCIQDOLxwWGsaCNVSWy3EpEkSIqNub0Ci4kSOu/O+vvPq64gIhAK5cop6G89f+Z39b52KoyZKcFq3zLCNOdgPg1280oBnN","kid":"l8W4rhh9nTs="},{"issuer":"C = TR ST = ANKARA L = ÇANKAYA O = T.C. SAĞLIK BAKANLIĞI OU = SAĞLIK BİLGİ SİSTEMLERİ GENEL MÜDÜRLÜĞÜ CN = healthpassgwprod.saglik.gov.tr","subject":"C = TR ST = ANKARA L = ÇANKAYA O = T.C. SAĞLIK BAKANLIĞI OU = SAĞLIK BİLGİ SİSTEMLERİ GENEL MÜDÜRLÜĞÜ CN = healthpassgwuat.saglik.gov.tr","notbefore":1628103725000,"notafter":1691175725000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4gGExz9UXm77v21gaWNSjjtigr9V\nIyGL9S92FqnF99YqS/ekrLWvW4N6fmHfUST9VJLJVaB9uP3SX1rXlfq7lg==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDZDCCAwqgAwIBAgIJAKh1+Khc/oXwMAkGByqGSM49BAEwgdIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQIDAZBTktBUkExEzARBgNVBAcMCsODwodBTktBWUExJDAiBgNVBAoMG1QuQy4gU0HDhMKeTElLIEJBS0FOTEnDhMKeSTFOMEwGA1UECwxFU0HDhMKeTElLIELDhMKwTEfDhMKwIFPDhMKwU1RFTUxFUsOEwrAgR0VORUwgTcODwpxEw4PCnFJMw4PCnMOEwp7Dg8KcMScwJQYDVQQDDB5oZWFsdGhwYXNzZ3dwcm9kLnNhZ2xpay5nb3YudHIwHhcNMjEwODA0MTkwMjA1WhcNMjMwODA0MTkwMjA1WjCB0TELMAkGA1UEBhMCVFIxDzANBgNVBAgMBkFOS0FSQTETMBEGA1UEBwwKw4PCh0FOS0FZQTEkMCIGA1UECgwbVC5DLiBTQcOEwp5MSUsgQkFLQU5MScOEwp5JMU4wTAYDVQQLDEVTQcOEwp5MSUsgQsOEwrBMR8OEwrAgU8OEwrBTVEVNTEVSw4TCsCBHRU5FTCBNw4PCnETDg8KcUkzDg8Kcw4TCnsODwpwxJjAkBgNVBAMMHWhlYWx0aHBhc3Nnd3VhdC5zYWdsaWsuZ292LnRyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4gGExz9UXm77v21gaWNSjjtigr9VIyGL9S92FqnF99YqS/ekrLWvW4N6fmHfUST9VJLJVaB9uP3SX1rXlfq7lqOByDCBxTAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFCswn+ChTJKoWppyEWvYjIGyDJybMB8GA1UdIwQYMBaAFPbenUPEZ1KYGCZLyK4/nzCJVz+bMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9jcmwuZXhhbXBsZWRvbWFpbi5leGFtcGxlL0NSTC9DU0NBLmNybDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMAkGByqGSM49BAEDSQAwRgIhAMdvZvXW4yhE0096flq4umtUExjaOSOM6bob8cMsriqbAiEAv5b1d/EFA0rM9LYK1jt49+bSOgGxcxgs0jAOYzAjMrU=","kid":"gEIK4Q/lAG0="},{"issuer":"C = RO O = Ministerul Sanatatii CN = AC Ministerul Sanatatii","subject":"C = RO O = Ministerul Sanatatii CN = BSC","notbefore":1624023359000,"notafter":1782135359000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1Di\nHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5cw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIElDCCAnygAwIBAgIFFhg4IyAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCUk8xHTAbBgNVBAoMFE1pbmlzdGVydWwgU2FuYXRhdGlpMSAwHgYDVQQDDBdBQyBNaW5pc3RlcnVsIFNhbmF0YXRpaTAeFw0yMTA2MTgxMzM1NTlaFw0yNjA2MjIxMzM1NTlaMDoxCzAJBgNVBAYTAlJPMR0wGwYDVQQKDBRNaW5pc3RlcnVsIFNhbmF0YXRpaTEMMAoGA1UEAwwDQlNDMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1DiHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5c6OCAVYwggFSMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUVyznYDPTSIjlI6bI6W+mgQc9JjwwHwYDVR0jBBgwFoAUMuKQDubF6PpGuKuAPWshl3a4SCEwGgYDVR0RBBMwEaQPMA0xCzAJBgNVBAcMAlJPMBoGA1UdEgQTMBGkDzANMQswCQYDVQQHDAJSTzAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vY2Euc3RzaXNwLnJvL2NybC9ER0MuY3JsMDMGA1UdJQQsMCoGDCsGAQQBAI43j2UBAQYMKwYBBAEAjjePZQECBgwrBgEEAQCON49lAQMwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vY2Euc3RzaXNwLnJvOjI1NjAwKwYDVR0QBCQwIoAPMjAyMTA0MDEwMDAwMDBagQ8yMDI2MDcwMTAwMDAwMFowDQYJKoZIhvcNAQELBQADggIBAFLRYkrv2Jp8XNhFJbMUviTLgPsDgcFDQwzdU4RH/KY3vjlIqxI/o40wct9QrN5FqRDTVIYD4Z4vLy8vhigh+DrdWfaBK+SGw11ZwigDem0Unjpqz0aFTotv8hry5n2jY/gf6YpU8pMd3t0dNF5Je5hrY1YLPJdt+BMWAizRwSAaa/OqTDP2blNqebrUTpsiXnxMXRiIHZl596RiSVsiwI/4PhU/HhfbMCg4kO8YUtgTBzWvBGohG0Znyi2bQFhwWEa1jZc2YfsIqWu4hwGz0zWOKMyx5ULZS3qkQ0EIHH2XrOx2ZxEc/5vZT27nTlKW0FCtBWeB36rLy/9dYbm+wjB86gvjYEQLAoFSY5GyCxVHaQE/HK8nFqM0oFq/4u0D7ZN9o6N6i4EfGhSRye0NCld3iaM9JdKmQNoCE9fd9OfMG9HlrQbIZvsjZ3btvtiC/R/LoyvrKz2EVbePZIVj03+GelCI0/jWq+w9YK3JIGhBfMjvCK/QnphOm0otuiuEY+0QYPKIx/c8zU5H4cEWp4NamsIRTpP13Yazh4NVjCNAU+J1rbcwGkJIRXHpL6QqL1WNt9zZSMXvw+vBoBq8yBqeLGlxPr+DFL79xhRBZnpp5mn2vUmR77k1745VwwGVMw/t9K28y5HpLcTp49f3wR0bDC+K0n/8PdcrhOXh+DTP","kid":"hA1+pwEOxCI="},{"issuer":"C = AL O = NAIS CN = NAIS Class 3 Certification Authority","subject":"C = AL O = Ministria e Shendetesise dhe Mbrojtjes Sociale OU = Production CN = Ministria e Shendetesise dhe Mbrojtjes Sociale","notbefore":1631192067000,"notafter":1662728067000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENFtonAma5ngnltfk78rprtlz8Cue\n6/t2XzvM/OR3wOn/1nD4QDWTP0KjGsFtiJ80Aed5gQ0JbMXUL8M2mQyQPw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIETzCCAzegAwIBAgILQ/9i89Nx5cy6y84wDQYJKoZIhvcNAQELBQAwSzELMAkGA1UEBhMCQUwxDTALBgNVBAoTBE5BSVMxLTArBgNVBAMTJE5BSVMgQ2xhc3MgMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0yMTA5MDkxMjU0MjdaFw0yMjA5MDkxMjU0MjdaMIGUMQswCQYDVQQGEwJBTDE3MDUGA1UECgwuTWluaXN0cmlhIGUgU2hlbmRldGVzaXNlIGRoZSBNYnJvanRqZXMgU29jaWFsZTETMBEGA1UECwwKUHJvZHVjdGlvbjE3MDUGA1UEAwwuTWluaXN0cmlhIGUgU2hlbmRldGVzaXNlIGRoZSBNYnJvanRqZXMgU29jaWFsZTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDRbaJwJmuZ4J5bX5O/K6a7Zc/Arnuv7dl87zPzkd8Dp/9Zw+EA1kz9CoxrBbYifNAHneYENCWzF1C/DNpkMkD+jggGzMIIBrzBmBggrBgEFBQcBAQRaMFgwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmFrc2hpLmdvdi5hbDAwBggrBgEFBQcwAoYkaHR0cDovL2NlcnRzLmFrc2hpLmdvdi5hbC9jbGFzczMuY3J0MA4GA1UdDwEB/wQEAwIGwDAfBgNVHSMEGDAWgBSHJqj72ytRmznQmNb0xjNWR1zYBTAdBgNVHQ4EFgQUomIXCcGEr8gLcxPBp8qNqsAwuywwSwYDVR0gBEQwQjBABgwrBgEEAYKxbAoBAQMwMDAuBggrBgEFBQcCARYiaHR0cDovL3d3dy5ha3NoaS5nb3YuYWwvcmVwb3NpdG9yeTCBpwYDVR0fBIGfMIGcMIGZoIGWoIGThiJodHRwOi8vY3JsLmFrc2hpLmdvdi5hbC9jbGFzczMuY3Jshm1sZGFwOi8vbGRhcC5ha3NoaS5nb3YuYWwvQ049TkFJUyBDbGFzcyAzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5LE89TkFJUyxDPUFMP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q7YmluYXJ5MA0GCSqGSIb3DQEBCwUAA4IBAQAxX1oVSlIui82fALGFk0YQK5UOFN59Bk+dNovoYLH7rewnK3Zu1C8xJivs/ncsvb08J/B14Iw2DlIORCNMmfXaCIEeRwUepPrC0T9gBMFZGf+nOH1YR19YA+24gxSxlsU6t8/lCwMY2HfCUxEKvHqr1jp3lgim8y+IiMsA9ISr7J8YDwue6Zvpr1zPQN+nd4xB1ZuxoM64dCvzaV5mA/D3P7Rqf5c1+rt5EqztjVOiNpFvH+xSEp9veAJxRDG37kHe7brgb7CGLdBQw/pib8kgfDusUMIjuXDN4MzjVUtM3G6s6DfoJ/QIf5CGq2lJ9bdxORh9PICVxVxcUqpwD+r2","kid":"hHffSLS1AIU="},{"issuer":"C = AL O = NAIS CN = NAIS Class 3 Certification Authority","subject":"C = AL O = Ministria e Shendetesise dhe Mbrojtjes Sociale OU = Production CN = Ministria e Shendetesise dhe Mbrojtjes Sociale","notbefore":1634731214000,"notafter":1666267214000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkyi6sf8k8/kk2KjTBNiIVFpnIeZc\nj4oUXwV8kk5D6BySdIUx9jSD5BuSiUyXKmIghKHPvpio9M7nYklZCdur0w==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIEUDCCAzigAwIBAgIMQwFSlIJziU/M83ZyMA0GCSqGSIb3DQEBCwUAMEsxCzAJBgNVBAYTAkFMMQ0wCwYDVQQKEwROQUlTMS0wKwYDVQQDEyROQUlTIENsYXNzIDMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjExMDIwMTIwMDE0WhcNMjIxMDIwMTIwMDE0WjCBlDELMAkGA1UEBhMCQUwxNzA1BgNVBAoMLk1pbmlzdHJpYSBlIFNoZW5kZXRlc2lzZSBkaGUgTWJyb2p0amVzIFNvY2lhbGUxEzARBgNVBAsMClByb2R1Y3Rpb24xNzA1BgNVBAMMLk1pbmlzdHJpYSBlIFNoZW5kZXRlc2lzZSBkaGUgTWJyb2p0amVzIFNvY2lhbGUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASTKLqx/yTz+STYqNME2IhUWmch5lyPihRfBXySTkPoHJJ0hTH2NIPkG5KJTJcqYiCEoc++mKj0zudiSVkJ26vTo4IBszCCAa8wZgYIKwYBBQUHAQEEWjBYMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5ha3NoaS5nb3YuYWwwMAYIKwYBBQUHMAKGJGh0dHA6Ly9jZXJ0cy5ha3NoaS5nb3YuYWwvY2xhc3MzLmNydDAOBgNVHQ8BAf8EBAMCBsAwHwYDVR0jBBgwFoAUhyao+9srUZs50JjW9MYzVkdc2AUwHQYDVR0OBBYEFGPWnU1pbP9aLGlfxoOY//lobEDxMEsGA1UdIAREMEIwQAYMKwYBBAGCsWwKAQEDMDAwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuYWtzaGkuZ292LmFsL3JlcG9zaXRvcnkwgacGA1UdHwSBnzCBnDCBmaCBlqCBk4YiaHR0cDovL2NybC5ha3NoaS5nb3YuYWwvY2xhc3MzLmNybIZtbGRhcDovL2xkYXAuYWtzaGkuZ292LmFsL0NOPU5BSVMgQ2xhc3MgMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSxPPU5BSVMsQz1BTD9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0O2JpbmFyeTANBgkqhkiG9w0BAQsFAAOCAQEApvfjN0ZeYCl6OH8HmJSG4UcL8KrVB1uqa/b0OPBihreOzVN0MyCRCKqUY+JJBc2S1k8OssCZuconsPLdTW2UkDxP5oFrgnzBN4Tor+3EMq2d/TTQnhp+872m2B4Gck0bRMBn0N19MbIrdii5joNir9pcHJgU5I/fTTehL9wtZGoL1o5cUUu9S+hYMIP0uNHP6NjxQhwZ+lpleNCUsYT4o4icvnbW3EaB84KBImCfezIu3Q+MdgwWmGpZOXUVoiX9UiyWrlEnzNzictXgOSud5xJ8E9ZUezO8u1UMRKY82Xi15KM6FML2qJ6teTC8iMjXaDxhVZSDAvtXclLKqIvAzg==","kid":"udrotE0n7i0="},{"issuer":"2.5.4.97 = NRTAD-U129638U O = SAAS CN = DGCG C = AD","subject":"C = AD ST = Andorra L = Escaldes-Engordany O = SAAS OU = SSII CN = dsc","notbefore":1630843042000,"notafter":1693915042000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGvHqf7SYtlvevOyA/no+i1/WcmS0\nbOYP1bgP+pJTjTkBOpQi+f7Ie6415WFl9aoqzMmKRJmE6Ur4H+b9Vba7FA==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDNTCCAh2gAwIBAgIUPlH4JERPPj3GoUrvEpBgHChJmOcwDQYJKoZIhvcNAQELBQAwRDEXMBUGA1UEYQwOTlJUQUQtVTEyOTYzOFUxDTALBgNVBAoMBFNBQVMxDTALBgNVBAMMBERHQ0cxCzAJBgNVBAYTAkFEMB4XDTIxMDkwNTExNTcyMloXDTIzMDkwNTExNTcyMlowaDELMAkGA1UEBhMCQUQxEDAOBgNVBAgMB0FuZG9ycmExGzAZBgNVBAcMEkVzY2FsZGVzLUVuZ29yZGFueTENMAsGA1UECgwEU0FBUzENMAsGA1UECwwEU1NJSTEMMAoGA1UEAwwDZHNjMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGvHqf7SYtlvevOyA/no+i1/WcmS0bOYP1bgP+pJTjTkBOpQi+f7Ie6415WFl9aoqzMmKRJmE6Ur4H+b9Vba7FKOBxTCBwjAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFOZE/2bkC1HwzFPPcZQJ82uVyOTTMB8GA1UdIwQYMBaAFGiVtMJNO5SQY5dOAz9JNlmRi90OMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9jcmwuZXhhbXBsZWRvbWFpbi5leGFtcGxlL0NSTC9DU0NBLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMA0GCSqGSIb3DQEBCwUAA4IBAQBB7UNVlexZwtC19yXkui85kfGT0RT0CqfLAvFPXy22Cy0/Al1OWItlWiN7z4RKSfhXel9jBPkowWjm4TH/Z9SS558sa/CQohYUaPlgR2UluMhbDVUsyLicQbqVx571GIA3BLoInJsFnp3Srv+XgP8ic2T72/mXwxnHCg1Jra2X8W0GGaxrUuvf+dxnPhDTeBNVqmYgk6q1vS3Nj3yugkgmg2xXNIWpcFjeC6/FVsTEORxi4SOjjn5Omhb9uZLeq11hXx04fORw9ctzppi5P5TDNDdmqa5iLRVsgS7Z7+Fp7V4QmfiRsVjyX+2QadvREEIbgcw8Y9d1j1qIXrCYwhCE","kid":"mqWkXpNR0Rk="},{"issuer":"C = MD ST = Republic of Moldova L = Chisinau O = STISC OU = CCCP CN = Republic of Moldova National CSCA 01","subject":"C = MD ST = Republic of Moldova L = Chisinau O = Ministry of Health CN = Republic of Moldova DSC 01","notbefore":1635269461000,"notafter":1698341461000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEurid6V6ennaGMYu1h8Q2PFJ7eMkj\n7FiBzBEiQMnNb/YzAj60g6cnvX02AB+E48Hoz4amNlralKXL3CvjaxHGLw==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICljCCAjygAwIBAgIUfKVPCJ2DSOQlBmu5AcgWL+pt9wkwCgYIKoZIzj0EAwIwgYwxCzAJBgNVBAYTAk1EMRwwGgYDVQQIDBNSZXB1YmxpYyBvZiBNb2xkb3ZhMREwDwYDVQQHDAhDaGlzaW5hdTEOMAwGA1UECgwFU1RJU0MxDTALBgNVBAsMBENDQ1AxLTArBgNVBAMMJFJlcHVibGljIG9mIE1vbGRvdmEgTmF0aW9uYWwgQ1NDQSAwMTAeFw0yMTEwMjYxNzMxMDFaFw0yMzEwMjYxNzMxMDFaMIGAMQswCQYDVQQGEwJNRDEcMBoGA1UECAwTUmVwdWJsaWMgb2YgTW9sZG92YTERMA8GA1UEBwwIQ2hpc2luYXUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDEjMCEGA1UEAwwaUmVwdWJsaWMgb2YgTW9sZG92YSBEU0MgMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS6uJ3pXp6edoYxi7WHxDY8Unt4ySPsWIHMESJAyc1v9jMCPrSDpye9fTYAH4TjwejPhqY2WtqUpcvcK+NrEcYvo4GFMIGCMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUtk8/4i4hj2sDFnz+oTBPM3gsriUwHwYDVR0jBBgwFoAU5leuhgfUUggxBYNy0n+tKWe46lIwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAKBggqhkjOPQQDAgNIADBFAiA0P/CM3hswqmbtlgRCGfsMs2DCmPGQwoqVJYoDFHyx/wIhAM2PdlwhGVVyeVugqUXabGMmLNwchyNqMNdABoH3eI9q","kid":"p64sutu48UA="},{"issuer":"C = SM ST = SM L = City of San Marino O = San Marino Innovation OU = DGCOperations CN = CSCA_DGC_SM_01","subject":"C = SM ST = San Marino L = City of San Marino O = Istituto per la Sicurezza Sociale OU = DGCOperations CN = DSC_CSR_DGC_SM_01 E = smdcc@iss.sm","notbefore":1623321959000,"notafter":1686393959000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEH2+GOTdCPhSUdDZmaM7hq/hRJkZC\nd3wPyOwB8lS30s4N81r4XFpv1Yev+1bfB4A173DByhZyIKkdnZc/FfaAXQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIIDBTCCAqugAwIBAgIUeATFyjMaoiT84DKJmiNU72+mkVgwCgYIKoZIzj0EAwIwgYgxCzAJBgNVBAYTAlNNMQswCQYDVQQIDAJTTTEbMBkGA1UEBwwSQ2l0eSBvZiBTYW4gTWFyaW5vMR4wHAYDVQQKDBVTYW4gTWFyaW5vIElubm92YXRpb24xFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxFzAVBgNVBAMMDkNTQ0FfREdDX1NNXzAxMB4XDTIxMDYxMDEwNDU1OVoXDTIzMDYxMDEwNDU1OVowgb0xCzAJBgNVBAYTAlNNMRMwEQYDVQQIDApTYW4gTWFyaW5vMRswGQYDVQQHDBJDaXR5IG9mIFNhbiBNYXJpbm8xKzApBgNVBAoMIklzdGl0dXRvIHBlciBsYSBTaWN1cmV6emEgU29jaWFsZSAxFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxGjAYBgNVBAMMEURTQ19DU1JfREdDX1NNXzAxMRswGQYJKoZIhvcNAQkBFgxzbWRjY0Bpc3Muc20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQfb4Y5N0I+FJR0NmZozuGr+FEmRkJ3fA/I7AHyVLfSzg3zWvhcWm/Vh6/7Vt8HgDXvcMHKFnIgqR2dlz8V9oBdo4G7MIG4MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUXBEgxHdIds6E5XLz7K3xKYM1ZYcwHwYDVR0jBBgwFoAU3R4p+KmXTKHb/B2ZD1s9d0P+tlUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDovL3d3dy5zbWRjYy5zbS9DUkwvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiAqKNSdqhkdyZaMENowSdL1xU3Cq/A/u6PaO90ApEBVfgIhAOaFehZJJsm5o3LAhZ+q3bWBZHbB7nsFbTzvowcNyc2K","kid":"r9RtWK9x7dM="},{"issuer":"C = GR CN = grnet.gr","subject":"C = GR CN = grnet.gr","notbefore":1621881325000,"notafter":1684953325000,"pubkey":"-----BEGIN PUBLIC KEY-----\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFP\nen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEQ==\n-----END PUBLIC KEY-----\n","rawX509data":"MIICBjCCAaygAwIBAgIUKhlB7j/znUbHbqEQfJErud8AyPMwCgYIKoZIzj0EAwIwIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMB4XDTIxMDUyNDE4MzUyNVoXDTIzMDUyNDE4MzUyNVowIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFPen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEaOBwzCBwDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFKfRIrjTBVN2/tmTt8I32yrVl3DRMB8GA1UdIwQYMBaAFHAWm9K/JxbEXkf7XcqhKPGmpDK9MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHBzOi8vY3JsLmRnYy5zZXJ2aWNlcy5nb3YuZ3IvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiBdWbGhPUZmHxMV9eXlVEkLRY+zGdCsKVxgAMk2JYqU8AIhANkXZhiDVPD5IDiEw3Z3r0MdBxx7jy6rQzBj/K4OSgCl","kid":"vvYa1vaWkGg="}]} \ No newline at end of file diff --git a/tool/FetchCerts.js b/tool/FetchCerts.js index f4af034..99aca5d 100644 --- a/tool/FetchCerts.js +++ b/tool/FetchCerts.js @@ -1,13 +1,13 @@ -import axios from 'axios'; -import { Certificate } from '@fidm/x509'; -import * as fs from "fs"; -import * as path from "path"; +const axios = require('axios'); +const { Certificate } = require('@fidm/x509'); +const fs = require("fs"); +const path = require("path"); /* * Fetches the certs from https://de.dscg.ubirch.com/trustList/DSC/ * and creates the certs.json file in scr folder */ -export class FetchCerts { +class FetchCerts { constructor() { this.fetchAndUpdate(); @@ -57,28 +57,35 @@ export class FetchCerts { } async fetchAndUpdate() { + console.log('Start fetching certs') try { const result = await axios.get('https://de.dscg.ubirch.com/trustList/DSC/'); - const rawData = result.data; - const comps = rawData.split('\n'); - const json = JSON.parse(comps[1]); - let certs = { - certs: [] - } + if (result.status === 200) { + const rawData = result.data; + const comps = rawData.split('\n'); + const json = JSON.parse(comps[1]); - for (const cert of json.certificates) { - const data = this.decodeX509(cert.rawData, cert.kid); + let certs = { + certs: [] + } - certs.certs.push(data); - } + for (const cert of json.certificates) { + const data = this.decodeX509(cert.rawData, cert.kid); + + certs.certs.push(data); + } - fs.mkdirSync(path.join('./src'), { recursive: true }); - fs.writeFile(path.join('./src/certs.json'), JSON.stringify(certs,null,0), () => {}); + fs.mkdirSync(path.join('./src'), { recursive: true }); + fs.writeFile(path.join('./src/certs.json'), JSON.stringify(certs,null,0), () => {}); + console.log('Finished fetching certs') + } else { + console.error('Failed to fetch with status: \n' + result.status + ': ' + result.statusText) + } } catch (err) { - console.error('failed to submit document: ' + err); + console.error('Failed to fetch, with error: ' + err); } } } From 27f5ece9e1869361d328ad6ed517c7a75eefc5f0 Mon Sep 17 00:00:00 2001 From: Kevin Date: Thu, 25 Nov 2021 15:50:58 +0100 Subject: [PATCH 3/3] Added copyfile to dev dependencies, to be able to copy on different operating systems --- docs/eudgc.js | 4 +- package-lock.json | 438 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 5 +- 3 files changed, 443 insertions(+), 4 deletions(-) diff --git a/docs/eudgc.js b/docs/eudgc.js index cfc4092..5e5d31b 100644 --- a/docs/eudgc.js +++ b/docs/eudgc.js @@ -1,3 +1,3 @@ /*! For license information please see eudgc.js.LICENSE.txt */ -(()=>{var t={9809:(t,e,r)=>{"use strict";const i=e;i.bignum=r(4590),i.define=r(2500).define,i.base=r(1979),i.constants=r(6826),i.decoders=r(8307),i.encoders=r(6579)},2500:(t,e,r)=>{"use strict";const i=r(6579),n=r(8307),o=r(5717);function s(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}e.define=function(t,e){return new s(t,e)},s.prototype._createNamed=function(t){const e=this.name;function r(t){this._initNamed(t,e)}return o(r,t),r.prototype._initNamed=function(e,r){t.call(this,e,r)},new r(this)},s.prototype._getDecoder=function(t){return t=t||"der",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(n[t])),this.decoders[t]},s.prototype.decode=function(t,e,r){return this._getDecoder(e).decode(t,r)},s.prototype._getEncoder=function(t){return t=t||"der",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(i[t])),this.encoders[t]},s.prototype.encode=function(t,e,r){return this._getEncoder(e).encode(t,r)}},6625:(t,e,r)=>{"use strict";const i=r(5717),n=r(8465).b,o=r(2399).Buffer;function s(t,e){n.call(this,e),o.isBuffer(t)?(this.base=t,this.offset=0,this.length=t.length):this.error("Input not Buffer")}function a(t,e){if(Array.isArray(t))this.length=0,this.value=t.map((function(t){return a.isEncoderBuffer(t)||(t=new a(t,e)),this.length+=t.length,t}),this);else if("number"==typeof t){if(!(0<=t&&t<=255))return e.error("non-byte EncoderBuffer value");this.value=t,this.length=1}else if("string"==typeof t)this.value=t,this.length=o.byteLength(t);else{if(!o.isBuffer(t))return e.error("Unsupported type: "+typeof t);this.value=t,this.length=t.length}}i(s,n),e.C=s,s.isDecoderBuffer=function(t){return t instanceof s||"object"==typeof t&&o.isBuffer(t.base)&&"DecoderBuffer"===t.constructor.name&&"number"==typeof t.offset&&"number"==typeof t.length&&"function"==typeof t.save&&"function"==typeof t.restore&&"function"==typeof t.isEmpty&&"function"==typeof t.readUInt8&&"function"==typeof t.skip&&"function"==typeof t.raw},s.prototype.save=function(){return{offset:this.offset,reporter:n.prototype.save.call(this)}},s.prototype.restore=function(t){const e=new s(this.base);return e.offset=t.offset,e.length=this.offset,this.offset=t.offset,n.prototype.restore.call(this,t.reporter),e},s.prototype.isEmpty=function(){return this.offset===this.length},s.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||"DecoderBuffer overrun")},s.prototype.skip=function(t,e){if(!(this.offset+t<=this.length))return this.error(e||"DecoderBuffer overrun");const r=new s(this.base);return r._reporterState=this._reporterState,r.offset=this.offset,r.length=this.offset+t,this.offset+=t,r},s.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)},e.R=a,a.isEncoderBuffer=function(t){return t instanceof a||"object"==typeof t&&"EncoderBuffer"===t.constructor.name&&"number"==typeof t.length&&"function"==typeof t.join},a.prototype.join=function(t,e){return t||(t=o.alloc(this.length)),e||(e=0),0===this.length||(Array.isArray(this.value)?this.value.forEach((function(r){r.join(t,e),e+=r.length})):("number"==typeof this.value?t[e]=this.value:"string"==typeof this.value?t.write(this.value,e):o.isBuffer(this.value)&&this.value.copy(t,e),e+=this.length)),t}},1979:(t,e,r)=>{"use strict";const i=e;i.Reporter=r(8465).b,i.DecoderBuffer=r(6625).C,i.EncoderBuffer=r(6625).R,i.Node=r(1949)},1949:(t,e,r)=>{"use strict";const i=r(8465).b,n=r(6625).R,o=r(6625).C,s=r(9746),a=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],h=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(a);function u(t,e,r){const i={};this._baseState=i,i.name=r,i.enc=t,i.parent=e||null,i.children=null,i.tag=null,i.args=null,i.reverseArgs=null,i.choice=null,i.optional=!1,i.any=!1,i.obj=!1,i.use=null,i.useDecoder=null,i.key=null,i.default=null,i.explicit=null,i.implicit=null,i.contains=null,i.parent||(i.children=[],this._wrap())}t.exports=u;const l=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];u.prototype.clone=function(){const t=this._baseState,e={};l.forEach((function(r){e[r]=t[r]}));const r=new this.constructor(e.parent);return r._baseState=e,r},u.prototype._wrap=function(){const t=this._baseState;h.forEach((function(e){this[e]=function(){const r=new this.constructor(this);return t.children.push(r),r[e].apply(r,arguments)}}),this)},u.prototype._init=function(t){const e=this._baseState;s(null===e.parent),t.call(this),e.children=e.children.filter((function(t){return t._baseState.parent===this}),this),s.equal(e.children.length,1,"Root node can have only one child")},u.prototype._useArgs=function(t){const e=this._baseState,r=t.filter((function(t){return t instanceof this.constructor}),this);t=t.filter((function(t){return!(t instanceof this.constructor)}),this),0!==r.length&&(s(null===e.children),e.children=r,r.forEach((function(t){t._baseState.parent=this}),this)),0!==t.length&&(s(null===e.args),e.args=t,e.reverseArgs=t.map((function(t){if("object"!=typeof t||t.constructor!==Object)return t;const e={};return Object.keys(t).forEach((function(r){r==(0|r)&&(r|=0);const i=t[r];e[i]=r})),e})))},["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"].forEach((function(t){u.prototype[t]=function(){const e=this._baseState;throw new Error(t+" not implemented for encoding: "+e.enc)}})),a.forEach((function(t){u.prototype[t]=function(){const e=this._baseState,r=Array.prototype.slice.call(arguments);return s(null===e.tag),e.tag=t,this._useArgs(r),this}})),u.prototype.use=function(t){s(t);const e=this._baseState;return s(null===e.use),e.use=t,this},u.prototype.optional=function(){return this._baseState.optional=!0,this},u.prototype.def=function(t){const e=this._baseState;return s(null===e.default),e.default=t,e.optional=!0,this},u.prototype.explicit=function(t){const e=this._baseState;return s(null===e.explicit&&null===e.implicit),e.explicit=t,this},u.prototype.implicit=function(t){const e=this._baseState;return s(null===e.explicit&&null===e.implicit),e.implicit=t,this},u.prototype.obj=function(){const t=this._baseState,e=Array.prototype.slice.call(arguments);return t.obj=!0,0!==e.length&&this._useArgs(e),this},u.prototype.key=function(t){const e=this._baseState;return s(null===e.key),e.key=t,this},u.prototype.any=function(){return this._baseState.any=!0,this},u.prototype.choice=function(t){const e=this._baseState;return s(null===e.choice),e.choice=t,this._useArgs(Object.keys(t).map((function(e){return t[e]}))),this},u.prototype.contains=function(t){const e=this._baseState;return s(null===e.use),e.contains=t,this},u.prototype._decode=function(t,e){const r=this._baseState;if(null===r.parent)return t.wrapResult(r.children[0]._decode(t,e));let i,n=r.default,s=!0,a=null;if(null!==r.key&&(a=t.enterKey(r.key)),r.optional){let i=null;if(null!==r.explicit?i=r.explicit:null!==r.implicit?i=r.implicit:null!==r.tag&&(i=r.tag),null!==i||r.any){if(s=this._peekTag(t,i,r.any),t.isError(s))return s}else{const i=t.save();try{null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),s=!0}catch(t){s=!1}t.restore(i)}}if(r.obj&&s&&(i=t.enterObject()),s){if(null!==r.explicit){const e=this._decodeTag(t,r.explicit);if(t.isError(e))return e;t=e}const i=t.offset;if(null===r.use&&null===r.choice){let e;r.any&&(e=t.save());const i=this._decodeTag(t,null!==r.implicit?r.implicit:r.tag,r.any);if(t.isError(i))return i;r.any?n=t.raw(e):t=i}if(e&&e.track&&null!==r.tag&&e.track(t.path(),i,t.length,"tagged"),e&&e.track&&null!==r.tag&&e.track(t.path(),t.offset,t.length,"content"),r.any||(n=null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e)),t.isError(n))return n;if(r.any||null!==r.choice||null===r.children||r.children.forEach((function(r){r._decode(t,e)})),r.contains&&("octstr"===r.tag||"bitstr"===r.tag)){const i=new o(n);n=this._getUse(r.contains,t._reporterState.obj)._decode(i,e)}}return r.obj&&s&&(n=t.leaveObject(i)),null===r.key||null===n&&!0!==s?null!==a&&t.exitKey(a):t.leaveKey(a,r.key,n),n},u.prototype._decodeGeneric=function(t,e,r){const i=this._baseState;return"seq"===t||"set"===t?null:"seqof"===t||"setof"===t?this._decodeList(e,t,i.args[0],r):/str$/.test(t)?this._decodeStr(e,t,r):"objid"===t&&i.args?this._decodeObjid(e,i.args[0],i.args[1],r):"objid"===t?this._decodeObjid(e,null,null,r):"gentime"===t||"utctime"===t?this._decodeTime(e,t,r):"null_"===t?this._decodeNull(e,r):"bool"===t?this._decodeBool(e,r):"objDesc"===t?this._decodeStr(e,t,r):"int"===t||"enum"===t?this._decodeInt(e,i.args&&i.args[0],r):null!==i.use?this._getUse(i.use,e._reporterState.obj)._decode(e,r):e.error("unknown tag: "+t)},u.prototype._getUse=function(t,e){const r=this._baseState;return r.useDecoder=this._use(t,e),s(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},u.prototype._decodeChoice=function(t,e){const r=this._baseState;let i=null,n=!1;return Object.keys(r.choice).some((function(o){const s=t.save(),a=r.choice[o];try{const r=a._decode(t,e);if(t.isError(r))return!1;i={type:o,value:r},n=!0}catch(e){return t.restore(s),!1}return!0}),this),n?i:t.error("Choice not matched")},u.prototype._createEncoderBuffer=function(t){return new n(t,this.reporter)},u.prototype._encode=function(t,e,r){const i=this._baseState;if(null!==i.default&&i.default===t)return;const n=this._encodeValue(t,e,r);return void 0===n||this._skipDefault(n,e,r)?void 0:n},u.prototype._encodeValue=function(t,e,r){const n=this._baseState;if(null===n.parent)return n.children[0]._encode(t,e||new i);let o=null;if(this.reporter=e,n.optional&&void 0===t){if(null===n.default)return;t=n.default}let s=null,a=!1;if(n.any)o=this._createEncoderBuffer(t);else if(n.choice)o=this._encodeChoice(t,e);else if(n.contains)s=this._getUse(n.contains,r)._encode(t,e),a=!0;else if(n.children)s=n.children.map((function(r){if("null_"===r._baseState.tag)return r._encode(null,e,t);if(null===r._baseState.key)return e.error("Child should have a key");const i=e.enterKey(r._baseState.key);if("object"!=typeof t)return e.error("Child expected, but input is not object");const n=r._encode(t[r._baseState.key],e,t);return e.leaveKey(i),n}),this).filter((function(t){return t})),s=this._createEncoderBuffer(s);else if("seqof"===n.tag||"setof"===n.tag){if(!n.args||1!==n.args.length)return e.error("Too many args for : "+n.tag);if(!Array.isArray(t))return e.error("seqof/setof, but data is not Array");const r=this.clone();r._baseState.implicit=null,s=this._createEncoderBuffer(t.map((function(r){const i=this._baseState;return this._getUse(i.args[0],t)._encode(r,e)}),r))}else null!==n.use?o=this._getUse(n.use,r)._encode(t,e):(s=this._encodePrimitive(n.tag,t),a=!0);if(!n.any&&null===n.choice){const t=null!==n.implicit?n.implicit:n.tag,r=null===n.implicit?"universal":"context";null===t?null===n.use&&e.error("Tag could be omitted only for .use()"):null===n.use&&(o=this._encodeComposite(t,a,r,s))}return null!==n.explicit&&(o=this._encodeComposite(n.explicit,!1,"context",o)),o},u.prototype._encodeChoice=function(t,e){const r=this._baseState,i=r.choice[t.type];return i||s(!1,t.type+" not found in "+JSON.stringify(Object.keys(r.choice))),i._encode(t.value,e)},u.prototype._encodePrimitive=function(t,e){const r=this._baseState;if(/str$/.test(t))return this._encodeStr(e,t);if("objid"===t&&r.args)return this._encodeObjid(e,r.reverseArgs[0],r.args[1]);if("objid"===t)return this._encodeObjid(e,null,null);if("gentime"===t||"utctime"===t)return this._encodeTime(e,t);if("null_"===t)return this._encodeNull();if("int"===t||"enum"===t)return this._encodeInt(e,r.args&&r.reverseArgs[0]);if("bool"===t)return this._encodeBool(e);if("objDesc"===t)return this._encodeStr(e,t);throw new Error("Unsupported tag: "+t)},u.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},u.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(t)}},8465:(t,e,r)=>{"use strict";const i=r(5717);function n(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function o(t,e){this.path=t,this.rethrow(e)}e.b=n,n.prototype.isError=function(t){return t instanceof o},n.prototype.save=function(){const t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},n.prototype.restore=function(t){const e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},n.prototype.enterKey=function(t){return this._reporterState.path.push(t)},n.prototype.exitKey=function(t){const e=this._reporterState;e.path=e.path.slice(0,t-1)},n.prototype.leaveKey=function(t,e,r){const i=this._reporterState;this.exitKey(t),null!==i.obj&&(i.obj[e]=r)},n.prototype.path=function(){return this._reporterState.path.join("/")},n.prototype.enterObject=function(){const t=this._reporterState,e=t.obj;return t.obj={},e},n.prototype.leaveObject=function(t){const e=this._reporterState,r=e.obj;return e.obj=t,r},n.prototype.error=function(t){let e;const r=this._reporterState,i=t instanceof o;if(e=i?t:new o(r.path.map((function(t){return"["+JSON.stringify(t)+"]"})).join(""),t.message||t,t.stack),!r.options.partial)throw e;return i||r.errors.push(e),e},n.prototype.wrapResult=function(t){const e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},i(o,Error),o.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,o),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},160:(t,e)=>{"use strict";function r(t){const e={};return Object.keys(t).forEach((function(r){(0|r)==r&&(r|=0);const i=t[r];e[i]=r})),e}e.tagClass={0:"universal",1:"application",2:"context",3:"private"},e.tagClassByName=r(e.tagClass),e.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},e.tagByName=r(e.tag)},6826:(t,e,r)=>{"use strict";const i=e;i._reverse=function(t){const e={};return Object.keys(t).forEach((function(r){(0|r)==r&&(r|=0);const i=t[r];e[i]=r})),e},i.der=r(160)},1671:(t,e,r)=>{"use strict";const i=r(5717),n=r(4590),o=r(6625).C,s=r(1949),a=r(160);function h(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new u,this.tree._init(t.body)}function u(t){s.call(this,"der",t)}function l(t,e){let r=t.readUInt8(e);if(t.isError(r))return r;const i=a.tagClass[r>>6],n=0==(32&r);if(31==(31&r)){let i=r;for(r=0;128==(128&i);){if(i=t.readUInt8(e),t.isError(i))return i;r<<=7,r|=127&i}}else r&=31;return{cls:i,primitive:n,tag:r,tagStr:a.tag[r]}}function c(t,e,r){let i=t.readUInt8(r);if(t.isError(i))return i;if(!e&&128===i)return null;if(0==(128&i))return i;const n=127&i;if(n>4)return t.error("length octect is too long");i=0;for(let e=0;e{"use strict";const i=e;i.der=r(1671),i.pem=r(9631)},9631:(t,e,r)=>{"use strict";const i=r(5717),n=r(2399).Buffer,o=r(1671);function s(t){o.call(this,t),this.enc="pem"}i(s,o),t.exports=s,s.prototype.decode=function(t,e){const r=t.toString().split(/[\r\n]+/g),i=e.label.toUpperCase(),s=/^-----(BEGIN|END) ([^-]+)-----$/;let a=-1,h=-1;for(let t=0;t{"use strict";const i=r(5717),n=r(2399).Buffer,o=r(1949),s=r(160);function a(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new h,this.tree._init(t.body)}function h(t){o.call(this,"der",t)}function u(t){return t<10?"0"+t:t}t.exports=a,a.prototype.encode=function(t,e){return this.tree._encode(t,e).join()},i(h,o),h.prototype._encodeComposite=function(t,e,r,i){const o=function(t,e,r,i){let n;if("seqof"===t?t="seq":"setof"===t&&(t="set"),s.tagByName.hasOwnProperty(t))n=s.tagByName[t];else{if("number"!=typeof t||(0|t)!==t)return i.error("Unknown tag: "+t);n=t}return n>=31?i.error("Multi-octet tag encoding unsupported"):(e||(n|=32),n|=s.tagClassByName[r||"universal"]<<6,n)}(t,e,r,this.reporter);if(i.length<128){const t=n.alloc(2);return t[0]=o,t[1]=i.length,this._createEncoderBuffer([t,i])}let a=1;for(let t=i.length;t>=256;t>>=8)a++;const h=n.alloc(2+a);h[0]=o,h[1]=128|a;for(let t=1+a,e=i.length;e>0;t--,e>>=8)h[t]=255&e;return this._createEncoderBuffer([h,i])},h.prototype._encodeStr=function(t,e){if("bitstr"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if("bmpstr"===e){const e=n.alloc(2*t.length);for(let r=0;r=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,40*t[0]+t[1])}let i=0;for(let e=0;e=128;r>>=7)i++}const o=n.alloc(i);let s=o.length-1;for(let e=t.length-1;e>=0;e--){let r=t[e];for(o[s--]=127&r;(r>>=7)>0;)o[s--]=128|127&r}return this._createEncoderBuffer(o)},h.prototype._encodeTime=function(t,e){let r;const i=new Date(t);return"gentime"===e?r=[u(i.getUTCFullYear()),u(i.getUTCMonth()+1),u(i.getUTCDate()),u(i.getUTCHours()),u(i.getUTCMinutes()),u(i.getUTCSeconds()),"Z"].join(""):"utctime"===e?r=[u(i.getUTCFullYear()%100),u(i.getUTCMonth()+1),u(i.getUTCDate()),u(i.getUTCHours()),u(i.getUTCMinutes()),u(i.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+e+" time is not supported yet"),this._encodeStr(r,"octstr")},h.prototype._encodeNull=function(){return this._createEncoderBuffer("")},h.prototype._encodeInt=function(t,e){if("string"==typeof t){if(!e)return this.reporter.error("String int or enum given, but no values map");if(!e.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=e[t]}if("number"!=typeof t&&!n.isBuffer(t)){const e=t.toArray();!t.sign&&128&e[0]&&e.unshift(0),t=n.from(e)}if(n.isBuffer(t)){let e=t.length;0===t.length&&e++;const r=n.alloc(e);return t.copy(r),0===t.length&&(r[0]=0),this._createEncoderBuffer(r)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);let r=1;for(let e=t;e>=256;e>>=8)r++;const i=new Array(r);for(let e=i.length-1;e>=0;e--)i[e]=255&t,t>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(n.from(i))},h.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},h.prototype._use=function(t,e){return"function"==typeof t&&(t=t(e)),t._getEncoder("der").tree},h.prototype._skipDefault=function(t,e,r){const i=this._baseState;let n;if(null===i.default)return!1;const o=t.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,e,r).join()),o.length!==i.defaultBuffer.length)return!1;for(n=0;n{"use strict";const i=e;i.der=r(6984),i.pem=r(2883)},2883:(t,e,r)=>{"use strict";const i=r(5717),n=r(6984);function o(t){n.call(this,t),this.enc="pem"}i(o,n),t.exports=o,o.prototype.encode=function(t,e){const r=n.prototype.encode.call(this,t).toString("base64"),i=["-----BEGIN "+e.label+"-----"];for(let t=0;t=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,c=67108863&h,f=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=f;d++){var g=u-d|0;l+=(s=(n=0|t.words[g])*(o=0|e.words[d])+c)/67108864|0,c=67108863&s}r.words[u]=0|c,h=0|l}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?l[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=c[t],d=f[t];r="";var g=this.clone();for(g.negative=0;!g.isZero();){var A=g.modn(d).toString(t);r=(g=g.idivn(d)).isZero()?A+r:l[u-A.length]+A+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),l=this.clone();if(h){for(a=0;!l.isZero();a++)s=l.andln(255),l.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],g=8191&d,A=d>>>13,M=0|s[2],p=8191&M,w=M>>>13,B=0|s[3],m=8191&B,E=B>>>13,y=0|s[4],b=8191&y,I=y>>>13,v=0|s[5],C=8191&v,Q=v>>>13,D=0|s[6],N=8191&D,R=D>>>13,G=0|s[7],U=8191&G,V=G>>>13,S=0|s[8],T=8191&S,Y=S>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,x=j>>>13,z=0|a[1],O=8191&z,H=z>>>13,_=0|a[2],W=8191&_,J=_>>>13,X=0|a[3],P=8191&X,K=X>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,lt=0|a[8],ct=8191<,ft=lt>>>13,dt=0|a[9],gt=8191&dt,At=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(c,Z))|0)+((8191&(n=(n=Math.imul(c,x))+Math.imul(f,Z)|0))<<13)|0;u=((o=Math.imul(f,x))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(g,Z),n=(n=Math.imul(g,x))+Math.imul(A,Z)|0,o=Math.imul(A,x);var pt=(u+(i=i+Math.imul(c,O)|0)|0)+((8191&(n=(n=n+Math.imul(c,H)|0)+Math.imul(f,O)|0))<<13)|0;u=((o=o+Math.imul(f,H)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,x))+Math.imul(w,Z)|0,o=Math.imul(w,x),i=i+Math.imul(g,O)|0,n=(n=n+Math.imul(g,H)|0)+Math.imul(A,O)|0,o=o+Math.imul(A,H)|0;var wt=(u+(i=i+Math.imul(c,W)|0)|0)+((8191&(n=(n=n+Math.imul(c,J)|0)+Math.imul(f,W)|0))<<13)|0;u=((o=o+Math.imul(f,J)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(m,Z),n=(n=Math.imul(m,x))+Math.imul(E,Z)|0,o=Math.imul(E,x),i=i+Math.imul(p,O)|0,n=(n=n+Math.imul(p,H)|0)+Math.imul(w,O)|0,o=o+Math.imul(w,H)|0,i=i+Math.imul(g,W)|0,n=(n=n+Math.imul(g,J)|0)+Math.imul(A,W)|0,o=o+Math.imul(A,J)|0;var Bt=(u+(i=i+Math.imul(c,P)|0)|0)+((8191&(n=(n=n+Math.imul(c,K)|0)+Math.imul(f,P)|0))<<13)|0;u=((o=o+Math.imul(f,K)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,x))+Math.imul(I,Z)|0,o=Math.imul(I,x),i=i+Math.imul(m,O)|0,n=(n=n+Math.imul(m,H)|0)+Math.imul(E,O)|0,o=o+Math.imul(E,H)|0,i=i+Math.imul(p,W)|0,n=(n=n+Math.imul(p,J)|0)+Math.imul(w,W)|0,o=o+Math.imul(w,J)|0,i=i+Math.imul(g,P)|0,n=(n=n+Math.imul(g,K)|0)+Math.imul(A,P)|0,o=o+Math.imul(A,K)|0;var mt=(u+(i=i+Math.imul(c,$)|0)|0)+((8191&(n=(n=n+Math.imul(c,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,x))+Math.imul(Q,Z)|0,o=Math.imul(Q,x),i=i+Math.imul(b,O)|0,n=(n=n+Math.imul(b,H)|0)+Math.imul(I,O)|0,o=o+Math.imul(I,H)|0,i=i+Math.imul(m,W)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,J)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,K)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,K)|0,i=i+Math.imul(g,$)|0,n=(n=n+Math.imul(g,tt)|0)+Math.imul(A,$)|0,o=o+Math.imul(A,tt)|0;var Et=(u+(i=i+Math.imul(c,rt)|0)|0)+((8191&(n=(n=n+Math.imul(c,it)|0)+Math.imul(f,rt)|0))<<13)|0;u=((o=o+Math.imul(f,it)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,Z),n=(n=Math.imul(N,x))+Math.imul(R,Z)|0,o=Math.imul(R,x),i=i+Math.imul(C,O)|0,n=(n=n+Math.imul(C,H)|0)+Math.imul(Q,O)|0,o=o+Math.imul(Q,H)|0,i=i+Math.imul(b,W)|0,n=(n=n+Math.imul(b,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,i=i+Math.imul(m,P)|0,n=(n=n+Math.imul(m,K)|0)+Math.imul(E,P)|0,o=o+Math.imul(E,K)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(g,rt)|0,n=(n=n+Math.imul(g,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0;var yt=(u+(i=i+Math.imul(c,ot)|0)|0)+((8191&(n=(n=n+Math.imul(c,st)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(U,Z),n=(n=Math.imul(U,x))+Math.imul(V,Z)|0,o=Math.imul(V,x),i=i+Math.imul(N,O)|0,n=(n=n+Math.imul(N,H)|0)+Math.imul(R,O)|0,o=o+Math.imul(R,H)|0,i=i+Math.imul(C,W)|0,n=(n=n+Math.imul(C,J)|0)+Math.imul(Q,W)|0,o=o+Math.imul(Q,J)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,K)|0)+Math.imul(I,P)|0,o=o+Math.imul(I,K)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(g,ot)|0,n=(n=n+Math.imul(g,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0;var bt=(u+(i=i+Math.imul(c,ht)|0)|0)+((8191&(n=(n=n+Math.imul(c,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,x))+Math.imul(Y,Z)|0,o=Math.imul(Y,x),i=i+Math.imul(U,O)|0,n=(n=n+Math.imul(U,H)|0)+Math.imul(V,O)|0,o=o+Math.imul(V,H)|0,i=i+Math.imul(N,W)|0,n=(n=n+Math.imul(N,J)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,J)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,K)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,K)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,tt)|0,i=i+Math.imul(m,rt)|0,n=(n=n+Math.imul(m,it)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(g,ht)|0,n=(n=n+Math.imul(g,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0;var It=(u+(i=i+Math.imul(c,ct)|0)|0)+((8191&(n=(n=n+Math.imul(c,ft)|0)+Math.imul(f,ct)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,x))+Math.imul(L,Z)|0,o=Math.imul(L,x),i=i+Math.imul(T,O)|0,n=(n=n+Math.imul(T,H)|0)+Math.imul(Y,O)|0,o=o+Math.imul(Y,H)|0,i=i+Math.imul(U,W)|0,n=(n=n+Math.imul(U,J)|0)+Math.imul(V,W)|0,o=o+Math.imul(V,J)|0,i=i+Math.imul(N,P)|0,n=(n=n+Math.imul(N,K)|0)+Math.imul(R,P)|0,o=o+Math.imul(R,K)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,it)|0,i=i+Math.imul(m,ot)|0,n=(n=n+Math.imul(m,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(g,ct)|0,n=(n=n+Math.imul(g,ft)|0)+Math.imul(A,ct)|0,o=o+Math.imul(A,ft)|0;var vt=(u+(i=i+Math.imul(c,gt)|0)|0)+((8191&(n=(n=n+Math.imul(c,At)|0)+Math.imul(f,gt)|0))<<13)|0;u=((o=o+Math.imul(f,At)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,O),n=(n=Math.imul(F,H))+Math.imul(L,O)|0,o=Math.imul(L,H),i=i+Math.imul(T,W)|0,n=(n=n+Math.imul(T,J)|0)+Math.imul(Y,W)|0,o=o+Math.imul(Y,J)|0,i=i+Math.imul(U,P)|0,n=(n=n+Math.imul(U,K)|0)+Math.imul(V,P)|0,o=o+Math.imul(V,K)|0,i=i+Math.imul(N,$)|0,n=(n=n+Math.imul(N,tt)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,i=i+Math.imul(m,ht)|0,n=(n=n+Math.imul(m,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,i=i+Math.imul(p,ct)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(w,ct)|0,o=o+Math.imul(w,ft)|0;var Ct=(u+(i=i+Math.imul(g,gt)|0)|0)+((8191&(n=(n=n+Math.imul(g,At)|0)+Math.imul(A,gt)|0))<<13)|0;u=((o=o+Math.imul(A,At)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,W),n=(n=Math.imul(F,J))+Math.imul(L,W)|0,o=Math.imul(L,J),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,K)|0)+Math.imul(Y,P)|0,o=o+Math.imul(Y,K)|0,i=i+Math.imul(U,$)|0,n=(n=n+Math.imul(U,tt)|0)+Math.imul(V,$)|0,o=o+Math.imul(V,tt)|0,i=i+Math.imul(N,rt)|0,n=(n=n+Math.imul(N,it)|0)+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,ut)|0,i=i+Math.imul(m,ct)|0,n=(n=n+Math.imul(m,ft)|0)+Math.imul(E,ct)|0,o=o+Math.imul(E,ft)|0;var Qt=(u+(i=i+Math.imul(p,gt)|0)|0)+((8191&(n=(n=n+Math.imul(p,At)|0)+Math.imul(w,gt)|0))<<13)|0;u=((o=o+Math.imul(w,At)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,K))+Math.imul(L,P)|0,o=Math.imul(L,K),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(Y,$)|0,o=o+Math.imul(Y,tt)|0,i=i+Math.imul(U,rt)|0,n=(n=n+Math.imul(U,it)|0)+Math.imul(V,rt)|0,o=o+Math.imul(V,it)|0,i=i+Math.imul(N,ot)|0,n=(n=n+Math.imul(N,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(b,ct)|0,n=(n=n+Math.imul(b,ft)|0)+Math.imul(I,ct)|0,o=o+Math.imul(I,ft)|0;var Dt=(u+(i=i+Math.imul(m,gt)|0)|0)+((8191&(n=(n=n+Math.imul(m,At)|0)+Math.imul(E,gt)|0))<<13)|0;u=((o=o+Math.imul(E,At)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(Y,rt)|0,o=o+Math.imul(Y,it)|0,i=i+Math.imul(U,ot)|0,n=(n=n+Math.imul(U,st)|0)+Math.imul(V,ot)|0,o=o+Math.imul(V,st)|0,i=i+Math.imul(N,ht)|0,n=(n=n+Math.imul(N,ut)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,ut)|0,i=i+Math.imul(C,ct)|0,n=(n=n+Math.imul(C,ft)|0)+Math.imul(Q,ct)|0,o=o+Math.imul(Q,ft)|0;var Nt=(u+(i=i+Math.imul(b,gt)|0)|0)+((8191&(n=(n=n+Math.imul(b,At)|0)+Math.imul(I,gt)|0))<<13)|0;u=((o=o+Math.imul(I,At)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(Y,ot)|0,o=o+Math.imul(Y,st)|0,i=i+Math.imul(U,ht)|0,n=(n=n+Math.imul(U,ut)|0)+Math.imul(V,ht)|0,o=o+Math.imul(V,ut)|0,i=i+Math.imul(N,ct)|0,n=(n=n+Math.imul(N,ft)|0)+Math.imul(R,ct)|0,o=o+Math.imul(R,ft)|0;var Rt=(u+(i=i+Math.imul(C,gt)|0)|0)+((8191&(n=(n=n+Math.imul(C,At)|0)+Math.imul(Q,gt)|0))<<13)|0;u=((o=o+Math.imul(Q,At)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(Y,ht)|0,o=o+Math.imul(Y,ut)|0,i=i+Math.imul(U,ct)|0,n=(n=n+Math.imul(U,ft)|0)+Math.imul(V,ct)|0,o=o+Math.imul(V,ft)|0;var Gt=(u+(i=i+Math.imul(N,gt)|0)|0)+((8191&(n=(n=n+Math.imul(N,At)|0)+Math.imul(R,gt)|0))<<13)|0;u=((o=o+Math.imul(R,At)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,ct)|0,n=(n=n+Math.imul(T,ft)|0)+Math.imul(Y,ct)|0,o=o+Math.imul(Y,ft)|0;var Ut=(u+(i=i+Math.imul(U,gt)|0)|0)+((8191&(n=(n=n+Math.imul(U,At)|0)+Math.imul(V,gt)|0))<<13)|0;u=((o=o+Math.imul(V,At)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,i=Math.imul(F,ct),n=(n=Math.imul(F,ft))+Math.imul(L,ct)|0,o=Math.imul(L,ft);var Vt=(u+(i=i+Math.imul(T,gt)|0)|0)+((8191&(n=(n=n+Math.imul(T,At)|0)+Math.imul(Y,gt)|0))<<13)|0;u=((o=o+Math.imul(Y,At)|0)+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863;var St=(u+(i=Math.imul(F,gt))|0)+((8191&(n=(n=Math.imul(F,At))+Math.imul(L,gt)|0))<<13)|0;return u=((o=Math.imul(L,At))+(n>>>13)|0)+(St>>>26)|0,St&=67108863,h[0]=Mt,h[1]=pt,h[2]=wt,h[3]=Bt,h[4]=mt,h[5]=Et,h[6]=yt,h[7]=bt,h[8]=It,h[9]=vt,h[10]=Ct,h[11]=Qt,h[12]=Dt,h[13]=Nt,h[14]=Rt,h[15]=Gt,h[16]=Ut,h[17]=Vt,h[18]=St,0!==u&&(h[19]=u,r.length++),r};function A(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(g=d),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?g(this,t,e):r<63?d(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):A(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==l||u>=n);u--){var c=0|this.words[u];this.words[u]=l<<26-o|c>>>o,l=c&a}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;c--){var f=67108864*(0|i.words[n.length+c])+(0|i.words[n.length+c-1]);for(f=Math.min(f/s|0,67108863),i._ishlnsubmul(n,f,c);0!==i.negative;)f--,i.negative=0,i._ishlnsubmul(n,1,c),i.isZero()||(i.negative^=1);a&&(a.words[c]=f)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),c=e.clone();!e.isZero();){for(var f=0,d=1;0==(e.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(l),s.isub(c)),n.iushrn(1),s.iushrn(1);for(var g=0,A=1;0==(r.words[0]&A)&&g<26;++g,A<<=1);if(g>0)for(r.iushrn(g);g-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(l),h.isub(c)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var c=0,f=1;0==(r.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(r.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var p={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function B(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function m(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function E(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function I(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(B,w),B.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},B.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(p[t])return p[t];var e;if("k256"===t)e=new B;else if("p224"===t)e=new m;else if("p192"===t)e=new E;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return p[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var c=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),g=s;0!==d.cmp(a);){for(var A=d,M=0;0!==A.cmp(a);M++)A=A.redSqr();i(M=0;i--){for(var u=e.words[i],l=h-1;l>=0;l--){var c=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==c||0!==s?(s<<=1,s|=c,(4==++a||0===i&&0===l)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new I(t)},n(I,b),I.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},I.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},I.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},I.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},I.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},9282:(t,e,r)=>{"use strict";var i=r(4155);function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var o,s,a=r(2136).codes,h=a.ERR_AMBIGUOUS_ARGUMENT,u=a.ERR_INVALID_ARG_TYPE,l=a.ERR_INVALID_ARG_VALUE,c=a.ERR_INVALID_RETURN_VALUE,f=a.ERR_MISSING_ARGS,d=r(5961),g=r(9539).inspect,A=r(9539).types,M=A.isPromise,p=A.isRegExp,w=Object.assign?Object.assign:r(8091).assign,B=Object.is?Object.is:r(609);function m(){var t=r(9158);o=t.isDeepEqual,s=t.isDeepStrictEqual}new Map;var E=!1,y=t.exports=C,b={};function I(t){if(t.message instanceof Error)throw t.message;throw new d(t)}function v(t,e,r,i){if(!r){var n=!1;if(0===e)n=!0,i="No value argument passed to `assert.ok()`";else if(i instanceof Error)throw i;var o=new d({actual:r,expected:!0,message:i,operator:"==",stackStartFn:t});throw o.generatedMessage=n,o}}function C(){for(var t=arguments.length,e=new Array(t),r=0;r1?r-1:0),n=1;n1?r-1:0),n=1;n1?r-1:0),n=1;n1?r-1:0),n=1;n{"use strict";var i=r(4155);function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){for(var r=0;rt.length)&&(r=t.length),t.substring(r-e.length,r)===e}var p="",w="",B="",m="",E={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"};function y(t){var e=Object.keys(t),r=Object.create(Object.getPrototypeOf(t));return e.forEach((function(e){r[e]=t[e]})),Object.defineProperty(r,"message",{value:t.message}),r}function b(t){return g(t,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}var I=function(t){function e(t){var r;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),"object"!==d(t)||null===t)throw new A("options","Object",t);var n=t.message,o=t.operator,h=t.stackStartFn,u=t.actual,l=t.expected,c=Error.stackTraceLimit;if(Error.stackTraceLimit=0,null!=n)r=s(this,f(e).call(this,String(n)));else if(i.stderr&&i.stderr.isTTY&&(i.stderr&&i.stderr.getColorDepth&&1!==i.stderr.getColorDepth()?(p="",w="",m="",B=""):(p="",w="",m="",B="")),"object"===d(u)&&null!==u&&"object"===d(l)&&null!==l&&"stack"in u&&u instanceof Error&&"stack"in l&&l instanceof Error&&(u=y(u),l=y(l)),"deepStrictEqual"===o||"strictEqual"===o)r=s(this,f(e).call(this,function(t,e,r){var n="",o="",s=0,a="",h=!1,u=b(t),l=u.split("\n"),c=b(e).split("\n"),f=0,g="";if("strictEqual"===r&&"object"===d(t)&&"object"===d(e)&&null!==t&&null!==e&&(r="strictEqualObject"),1===l.length&&1===c.length&&l[0]!==c[0]){var A=l[0].length+c[0].length;if(A<=10){if(!("object"===d(t)&&null!==t||"object"===d(e)&&null!==e||0===t&&0===e))return"".concat(E[r],"\n\n")+"".concat(l[0]," !== ").concat(c[0],"\n")}else if("strictEqualObject"!==r&&A<(i.stderr&&i.stderr.isTTY?i.stderr.columns:80)){for(;l[0][f]===c[0][f];)f++;f>2&&(g="\n ".concat(function(t,e){if(e=Math.floor(e),0==t.length||0==e)return"";var r=t.length*e;for(e=Math.floor(Math.log(e)/Math.log(2));e;)t+=t,e--;return t+t.substring(0,r-t.length)}(" ",f),"^"),f=0)}}for(var y=l[l.length-1],I=c[c.length-1];y===I&&(f++<2?a="\n ".concat(y).concat(a):n=y,l.pop(),c.pop(),0!==l.length&&0!==c.length);)y=l[l.length-1],I=c[c.length-1];var v=Math.max(l.length,c.length);if(0===v){var C=u.split("\n");if(C.length>30)for(C[26]="".concat(p,"...").concat(m);C.length>27;)C.pop();return"".concat(E.notIdentical,"\n\n").concat(C.join("\n"),"\n")}f>3&&(a="\n".concat(p,"...").concat(m).concat(a),h=!0),""!==n&&(a="\n ".concat(n).concat(a),n="");var Q=0,D=E[r]+"\n".concat(w,"+ actual").concat(m," ").concat(B,"- expected").concat(m),N=" ".concat(p,"...").concat(m," Lines skipped");for(f=0;f1&&f>2&&(R>4?(o+="\n".concat(p,"...").concat(m),h=!0):R>3&&(o+="\n ".concat(c[f-2]),Q++),o+="\n ".concat(c[f-1]),Q++),s=f,n+="\n".concat(B,"-").concat(m," ").concat(c[f]),Q++;else if(c.length1&&f>2&&(R>4?(o+="\n".concat(p,"...").concat(m),h=!0):R>3&&(o+="\n ".concat(l[f-2]),Q++),o+="\n ".concat(l[f-1]),Q++),s=f,o+="\n".concat(w,"+").concat(m," ").concat(l[f]),Q++;else{var G=c[f],U=l[f],V=U!==G&&(!M(U,",")||U.slice(0,-1)!==G);V&&M(G,",")&&G.slice(0,-1)===U&&(V=!1,U+=","),V?(R>1&&f>2&&(R>4?(o+="\n".concat(p,"...").concat(m),h=!0):R>3&&(o+="\n ".concat(l[f-2]),Q++),o+="\n ".concat(l[f-1]),Q++),s=f,o+="\n".concat(w,"+").concat(m," ").concat(U),n+="\n".concat(B,"-").concat(m," ").concat(G),Q+=2):(o+=n,n="",1!==R&&0!==f||(o+="\n ".concat(U),Q++))}if(Q>20&&f30)for(I[26]="".concat(p,"...").concat(m);I.length>27;)I.pop();r=1===I.length?s(this,f(e).call(this,"".concat(g," ").concat(I[0]))):s(this,f(e).call(this,"".concat(g,"\n\n").concat(I.join("\n"),"\n")))}else{var v=b(u),C="",Q=E[o];"notDeepEqual"===o||"notEqual"===o?(v="".concat(E[o],"\n\n").concat(v)).length>1024&&(v="".concat(v.slice(0,1021),"...")):(C="".concat(b(l)),v.length>512&&(v="".concat(v.slice(0,509),"...")),C.length>512&&(C="".concat(C.slice(0,509),"...")),"deepEqual"===o||"equal"===o?v="".concat(Q,"\n\n").concat(v,"\n\nshould equal\n\n"):C=" ".concat(o," ").concat(C)),r=s(this,f(e).call(this,"".concat(v).concat(C)))}return Error.stackTraceLimit=c,r.generatedMessage=!n,Object.defineProperty(a(r),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),r.code="ERR_ASSERTION",r.actual=u,r.expected=l,r.operator=o,Error.captureStackTrace&&Error.captureStackTrace(a(r),h),r.stack,r.name="AssertionError",s(r)}var r,h;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&c(t,e)}(e,t),r=e,(h=[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:g.custom,value:function(t,e){return g(this,function(t){for(var e=1;e{"use strict";function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function n(t){return(n=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function o(t,e){return(o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var s,a,h={};function u(t,e,r){r||(r=Error);var s=function(r){function s(r,o,a){var h;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,s),(h=function(t,e){return!e||"object"!==i(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}(this,n(s).call(this,function(t,r,i){return"string"==typeof e?e:e(t,r,i)}(r,o,a)))).code=t,h}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(s,r),s}(r);h[t]=s}function l(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map((function(t){return String(t)})),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}u("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError),u("ERR_INVALID_ARG_TYPE",(function(t,e,n){var o,a,h,u,c;if(void 0===s&&(s=r(9282)),s("string"==typeof t,"'name' must be a string"),"string"==typeof e&&(a="not ",e.substr(0,a.length)===a)?(o="must not be",e=e.replace(/^not /,"")):o="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t," argument"))h="The ".concat(t," ").concat(o," ").concat(l(e,"type"));else{var f=("number"!=typeof c&&(c=0),c+".".length>(u=t).length||-1===u.indexOf(".",c)?"argument":"property");h='The "'.concat(t,'" ').concat(f," ").concat(o," ").concat(l(e,"type"))}return h+". Received type ".concat(i(n))}),TypeError),u("ERR_INVALID_ARG_VALUE",(function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"is invalid";void 0===a&&(a=r(9539));var n=a.inspect(e);return n.length>128&&(n="".concat(n.slice(0,128),"...")),"The argument '".concat(t,"' ").concat(i,". Received ").concat(n)}),TypeError,RangeError),u("ERR_INVALID_RETURN_VALUE",(function(t,e,r){var n;return n=r&&r.constructor&&r.constructor.name?"instance of ".concat(r.constructor.name):"type ".concat(i(r)),"Expected ".concat(t,' to be returned from the "').concat(e,'"')+" function but got ".concat(n,".")}),TypeError),u("ERR_MISSING_ARGS",(function(){for(var t=arguments.length,e=new Array(t),i=0;i0,"At least one arg needs to be specified");var n="The ",o=e.length;switch(e=e.map((function(t){return'"'.concat(t,'"')})),o){case 1:n+="".concat(e[0]," argument");break;case 2:n+="".concat(e[0]," and ").concat(e[1]," arguments");break;default:n+=e.slice(0,o-1).join(", "),n+=", and ".concat(e[o-1]," arguments")}return"".concat(n," must be specified")}),TypeError),t.exports.codes=h},9158:(t,e,r)=>{"use strict";function i(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=[],i=!0,n=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(r.push(s.value),!e||r.length!==e);i=!0);}catch(t){n=!0,o=t}finally{try{i||null==a.return||a.return()}finally{if(n)throw o}}return r}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var o=void 0!==/a/g.flags,s=function(t){var e=[];return t.forEach((function(t){return e.push(t)})),e},a=function(t){var e=[];return t.forEach((function(t,r){return e.push([r,t])})),e},h=Object.is?Object.is:r(609),u=Object.getOwnPropertySymbols?Object.getOwnPropertySymbols:function(){return[]},l=Number.isNaN?Number.isNaN:r(360);function c(t){return t.call.bind(t)}var f=c(Object.prototype.hasOwnProperty),d=c(Object.prototype.propertyIsEnumerable),g=c(Object.prototype.toString),A=r(9539).types,M=A.isAnyArrayBuffer,p=A.isArrayBufferView,w=A.isDate,B=A.isMap,m=A.isRegExp,E=A.isSet,y=A.isNativeError,b=A.isBoxedPrimitive,I=A.isNumberObject,v=A.isStringObject,C=A.isBooleanObject,Q=A.isBigIntObject,D=A.isSymbolObject,N=A.isFloat32Array,R=A.isFloat64Array;function G(t){if(0===t.length||t.length>10)return!0;for(var e=0;e57)return!0}return 10===t.length&&t>=Math.pow(2,32)}function U(t){return Object.keys(t).filter(G).concat(u(t).filter(Object.prototype.propertyIsEnumerable.bind(t)))}function V(t,e){if(t===e)return 0;for(var r=t.length,i=e.length,n=0,o=Math.min(r,i);n{"use strict";var i=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"];t.exports=function(){for(var t=[],e=0;e{t.exports=r(5267)},5267:(t,e,r)=>{var i=r(8764).Buffer;const n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",o=(t,e)=>[Math.floor(t/e),t%e];t.exports={encode:t=>{"string"==typeof t&&(t=i.from(t));let e="";for(let r=0;r1){const i=(t[r]<<8)+t[r+1],[s,a]=o(i,2025),[h,u]=o(a,45);e+=n[u]+n[h]+n[s]}else{const[i,s]=o(t[r],45);e+=n[s]+n[i]}return e},decode:t=>{const e=Array.from(t).map((t=>n.indexOf(t))),r=[];for(let t=0;t=3){const i=e[t]+45*e[t+1]+45*e[t+2]*45;r.push(...o(i,256))}else{const i=e[t]+45*e[t+1];r.push(i)}return i.from(r)}}},9742:(t,e)=>{"use strict";e.byteLength=function(t){var e=h(t),r=e[0],i=e[1];return 3*(r+i)/4-i},e.toByteArray=function(t){var e,r,o=h(t),s=o[0],a=o[1],u=new n(function(t,e,r){return 3*(e+r)/4-r}(0,s,a)),l=0,c=a>0?s-4:s;for(r=0;r>16&255,u[l++]=e>>8&255,u[l++]=255&e;return 2===a&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,u[l++]=255&e),1===a&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,u[l++]=e>>8&255,u[l++]=255&e),u},e.fromByteArray=function(t){for(var e,i=t.length,n=i%3,o=[],s=16383,a=0,h=i-n;ah?h:a+s));return 1===n?(e=t[i-1],o.push(r[e>>2]+r[e<<4&63]+"==")):2===n&&(e=(t[i-2]<<8)+t[i-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),o.join("")};for(var r=[],i=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,a=o.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,i){for(var n,o,s=[],a=e;a>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},4431:function(t,e,r){var i;!function(n){"use strict";var o,s=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,a=Math.ceil,h=Math.floor,u="[BigNumber Error] ",l=u+"Number primitive has more than 15 significant digits: ",c=1e14,f=14,d=9007199254740991,g=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],A=1e7,M=1e9;function p(t){var e=0|t;return t>0||t===e?e:e-1}function w(t){for(var e,r,i=1,n=t.length,o=t[0]+"";iu^r?1:-1;for(a=(h=n.length)<(u=o.length)?h:u,s=0;so[s]^r?1:-1;return h==u?0:h>u^r?1:-1}function m(t,e,r,i){if(tr||t!==h(t))throw Error(u+(i||"Argument")+("number"==typeof t?tr?" out of range: ":" not an integer: ":" not a primitive number: ")+String(t))}function E(t){var e=t.c.length-1;return p(t.e/f)==e&&t.c[e]%2!=0}function y(t,e){return(t.length>1?t.charAt(0)+"."+t.slice(1):t)+(e<0?"e":"e+")+e}function b(t,e,r){var i,n;if(e<0){for(n=r+".";++e;n+=r);t=n+t}else if(++e>(i=t.length)){for(n=r,e-=i;--e;n+=r);t+=n}else ek?p.c=p.e=null:t.e=10;c/=10,u++);return void(u>k?p.c=p.e=null:(p.e=u,p.c=[t]))}M=String(t)}else{if(!s.test(M=String(t)))return n(p,M,g);p.s=45==M.charCodeAt(0)?(M=M.slice(1),-1):1}(u=M.indexOf("."))>-1&&(M=M.replace(".","")),(c=M.search(/e/i))>0?(u<0&&(u=c),u+=+M.slice(c+1),M=M.substring(0,c)):u<0&&(u=M.length)}else{if(m(e,2,x.length,"Base"),10==e)return W(p=new z(t),U+p.e+1,V);if(M=String(t),g="number"==typeof t){if(0*t!=0)return n(p,M,g,e);if(p.s=1/t<0?(M=M.slice(1),-1):1,z.DEBUG&&M.replace(/^0\.0*|\./,"").length>15)throw Error(l+t)}else p.s=45===M.charCodeAt(0)?(M=M.slice(1),-1):1;for(r=x.slice(0,e),u=c=0,A=M.length;cu){u=A;continue}}else if(!a&&(M==M.toUpperCase()&&(M=M.toLowerCase())||M==M.toLowerCase()&&(M=M.toUpperCase()))){a=!0,c=-1,u=0;continue}return n(p,String(t),g,e)}g=!1,(u=(M=i(M,e,10,p.s)).indexOf("."))>-1?M=M.replace(".",""):u=M.length}for(c=0;48===M.charCodeAt(c);c++);for(A=M.length;48===M.charCodeAt(--A););if(M=M.slice(c,++A)){if(A-=c,g&&z.DEBUG&&A>15&&(t>d||t!==h(t)))throw Error(l+p.s*t);if((u=u-c-1)>k)p.c=p.e=null;else if(u=T)?y(h,s):b(h,s,"0");else if(o=(t=W(new z(t),e,r)).e,a=(h=w(t.c)).length,1==i||2==i&&(e<=o||o<=S)){for(;aa){if(--e>0)for(h+=".";e--;h+="0");}else if((e+=o-a)>0)for(o+1==a&&(h+=".");e--;h+="0");return t.s<0&&n?"-"+h:h}function H(t,e){for(var r,i=1,n=new z(t[0]);i=10;n/=10,i++);return(r=i+r*f-1)>k?t.c=t.e=null:r=10;u/=10,n++);if((o=e-n)<0)o+=f,s=e,A=(l=M[d=0])/p[n-s-1]%10|0;else if((d=a((o+1)/f))>=M.length){if(!i)break t;for(;M.length<=d;M.push(0));l=A=0,n=1,s=(o%=f)-f+1}else{for(l=u=M[d],n=1;u>=10;u/=10,n++);A=(s=(o%=f)-f+n)<0?0:l/p[n-s-1]%10|0}if(i=i||e<0||null!=M[d+1]||(s<0?l:l%p[n-s-1]),i=r<4?(A||i)&&(0==r||r==(t.s<0?3:2)):A>5||5==A&&(4==r||i||6==r&&(o>0?s>0?l/p[n-s]:0:M[d-1])%10&1||r==(t.s<0?8:7)),e<1||!M[0])return M.length=0,i?(e-=t.e+1,M[0]=p[(f-e%f)%f],t.e=-e||0):M[0]=t.e=0,t;if(0==o?(M.length=d,u=1,d--):(M.length=d+1,u=p[f-o],M[d]=s>0?h(l/p[n-s]%p[s])*u:0),i)for(;;){if(0==d){for(o=1,s=M[0];s>=10;s/=10,o++);for(s=M[0]+=u,u=1;s>=10;s/=10,u++);o!=u&&(t.e++,M[0]==c&&(M[0]=1));break}if(M[d]+=u,M[d]!=c)break;M[d--]=0,u=1}for(o=M.length;0===M[--o];M.pop());}t.e>k?t.c=t.e=null:t.e=T?y(e,r):b(e,r,"0"),t.s<0?"-"+e:e)}return z.clone=t,z.ROUND_UP=0,z.ROUND_DOWN=1,z.ROUND_CEIL=2,z.ROUND_FLOOR=3,z.ROUND_HALF_UP=4,z.ROUND_HALF_DOWN=5,z.ROUND_HALF_EVEN=6,z.ROUND_HALF_CEIL=7,z.ROUND_HALF_FLOOR=8,z.EUCLID=9,z.config=z.set=function(t){var e,r;if(null!=t){if("object"!=typeof t)throw Error(u+"Object expected: "+t);if(t.hasOwnProperty(e="DECIMAL_PLACES")&&(m(r=t[e],0,M,e),U=r),t.hasOwnProperty(e="ROUNDING_MODE")&&(m(r=t[e],0,8,e),V=r),t.hasOwnProperty(e="EXPONENTIAL_AT")&&((r=t[e])&&r.pop?(m(r[0],-M,0,e),m(r[1],0,M,e),S=r[0],T=r[1]):(m(r,-M,M,e),S=-(T=r<0?-r:r))),t.hasOwnProperty(e="RANGE"))if((r=t[e])&&r.pop)m(r[0],-M,-1,e),m(r[1],1,M,e),Y=r[0],k=r[1];else{if(m(r,-M,M,e),!r)throw Error(u+e+" cannot be zero: "+r);Y=-(k=r<0?-r:r)}if(t.hasOwnProperty(e="CRYPTO")){if((r=t[e])!==!!r)throw Error(u+e+" not true or false: "+r);if(r){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw F=!r,Error(u+"crypto unavailable");F=r}else F=r}if(t.hasOwnProperty(e="MODULO_MODE")&&(m(r=t[e],0,9,e),L=r),t.hasOwnProperty(e="POW_PRECISION")&&(m(r=t[e],0,M,e),j=r),t.hasOwnProperty(e="FORMAT")){if("object"!=typeof(r=t[e]))throw Error(u+e+" not an object: "+r);Z=r}if(t.hasOwnProperty(e="ALPHABET")){if("string"!=typeof(r=t[e])||/^.?$|[+\-.\s]|(.).*\1/.test(r))throw Error(u+e+" invalid: "+r);x=r}}return{DECIMAL_PLACES:U,ROUNDING_MODE:V,EXPONENTIAL_AT:[S,T],RANGE:[Y,k],CRYPTO:F,MODULO_MODE:L,POW_PRECISION:j,FORMAT:Z,ALPHABET:x}},z.isBigNumber=function(t){if(!t||!0!==t._isBigNumber)return!1;if(!z.DEBUG)return!0;var e,r,i=t.c,n=t.e,o=t.s;t:if("[object Array]"=={}.toString.call(i)){if((1===o||-1===o)&&n>=-M&&n<=M&&n===h(n)){if(0===i[0]){if(0===n&&1===i.length)return!0;break t}if((e=(n+1)%f)<1&&(e+=f),String(i[0]).length==e){for(e=0;e=c||r!==h(r))break t;if(0!==r)return!0}}}else if(null===i&&null===n&&(null===o||1===o||-1===o))return!0;throw Error(u+"Invalid BigNumber: "+t)},z.maximum=z.max=function(){return H(arguments,R.lt)},z.minimum=z.min=function(){return H(arguments,R.gt)},z.random=(o=9007199254740992,I=Math.random()*o&2097151?function(){return h(Math.random()*o)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(t){var e,r,i,n,o,s=0,l=[],c=new z(G);if(null==t?t=U:m(t,0,M),n=a(t/f),F)if(crypto.getRandomValues){for(e=crypto.getRandomValues(new Uint32Array(n*=2));s>>11))>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),e[s]=r[0],e[s+1]=r[1]):(l.push(o%1e14),s+=2);s=n/2}else{if(!crypto.randomBytes)throw F=!1,Error(u+"crypto unavailable");for(e=crypto.randomBytes(n*=7);s=9e15?crypto.randomBytes(7).copy(e,s):(l.push(o%1e14),s+=7);s=n/7}if(!F)for(;s=10;o/=10,s++);sr-1&&(null==s[n+1]&&(s[n+1]=0),s[n+1]+=s[n]/r|0,s[n]%=r)}return s.reverse()}return function(i,n,o,s,a){var h,u,l,c,f,d,g,A,M=i.indexOf("."),p=U,B=V;for(M>=0&&(c=j,j=0,i=i.replace(".",""),d=(A=new z(n)).pow(i.length-M),j=c,A.c=e(b(w(d.c),d.e,"0"),10,o,t),A.e=A.c.length),l=c=(g=e(i,n,o,a?(h=x,t):(h=t,x))).length;0==g[--c];g.pop());if(!g[0])return h.charAt(0);if(M<0?--l:(d.c=g,d.e=l,d.s=s,g=(d=r(d,A,p,B,o)).c,f=d.r,l=d.e),M=g[u=l+p+1],c=o/2,f=f||u<0||null!=g[u+1],f=B<4?(null!=M||f)&&(0==B||B==(d.s<0?3:2)):M>c||M==c&&(4==B||f||6==B&&1&g[u-1]||B==(d.s<0?8:7)),u<1||!g[0])i=f?b(h.charAt(1),-p,h.charAt(0)):h.charAt(0);else{if(g.length=u,f)for(--o;++g[--u]>o;)g[u]=0,u||(++l,g=[1].concat(g));for(c=g.length;!g[--c];);for(M=0,i="";M<=c;i+=h.charAt(g[M++]));i=b(i,l,h.charAt(0))}return i}}(),r=function(){function t(t,e,r){var i,n,o,s,a=0,h=t.length,u=e%A,l=e/A|0;for(t=t.slice();h--;)a=((n=u*(o=t[h]%A)+(i=l*o+(s=t[h]/A|0)*u)%A*A+a)/r|0)+(i/A|0)+l*s,t[h]=n%r;return a&&(t=[a].concat(t)),t}function e(t,e,r,i){var n,o;if(r!=i)o=r>i?1:-1;else for(n=o=0;ne[n]?1:-1;break}return o}function r(t,e,r,i){for(var n=0;r--;)t[r]-=n,n=t[r]1;t.splice(0,1));}return function(i,n,o,s,a){var u,l,d,g,A,M,w,B,m,E,y,b,I,v,C,Q,D,N=i.s==n.s?1:-1,R=i.c,G=n.c;if(!(R&&R[0]&&G&&G[0]))return new z(i.s&&n.s&&(R?!G||R[0]!=G[0]:G)?R&&0==R[0]||!G?0*N:N/0:NaN);for(m=(B=new z(N)).c=[],N=o+(l=i.e-n.e)+1,a||(a=c,l=p(i.e/f)-p(n.e/f),N=N/f|0),d=0;G[d]==(R[d]||0);d++);if(G[d]>(R[d]||0)&&l--,N<0)m.push(1),g=!0;else{for(v=R.length,Q=G.length,d=0,N+=2,(A=h(a/(G[0]+1)))>1&&(G=t(G,A,a),R=t(R,A,a),Q=G.length,v=R.length),I=Q,y=(E=R.slice(0,Q)).length;y=a/2&&C++;do{if(A=0,(u=e(G,E,Q,y))<0){if(b=E[0],Q!=y&&(b=b*a+(E[1]||0)),(A=h(b/C))>1)for(A>=a&&(A=a-1),w=(M=t(G,A,a)).length,y=E.length;1==e(M,E,w,y);)A--,r(M,Q=10;N/=10,d++);W(B,o+(B.e=d+l*f-1)+1,s,g)}else B.e=l,B.r=+g;return B}}(),v=/^(-?)0([xbo])(?=\w[\w.]*$)/i,C=/^([^.]+)\.$/,Q=/^\.([^.]+)$/,D=/^-?(Infinity|NaN)$/,N=/^\s*\+(?=[\w.])|^\s+|\s+$/g,n=function(t,e,r,i){var n,o=r?e:e.replace(N,"");if(D.test(o))t.s=isNaN(o)?null:o<0?-1:1;else{if(!r&&(o=o.replace(v,(function(t,e,r){return n="x"==(r=r.toLowerCase())?16:"b"==r?2:8,i&&i!=n?t:e})),i&&(n=i,o=o.replace(C,"$1").replace(Q,"0.$1")),e!=o))return new z(o,n);if(z.DEBUG)throw Error(u+"Not a"+(i?" base "+i:"")+" number: "+e);t.s=null}t.c=t.e=null},R.absoluteValue=R.abs=function(){var t=new z(this);return t.s<0&&(t.s=1),t},R.comparedTo=function(t,e){return B(this,new z(t,e))},R.decimalPlaces=R.dp=function(t,e){var r,i,n,o=this;if(null!=t)return m(t,0,M),null==e?e=V:m(e,0,8),W(new z(o),t+o.e+1,e);if(!(r=o.c))return null;if(i=((n=r.length-1)-p(this.e/f))*f,n=r[n])for(;n%10==0;n/=10,i--);return i<0&&(i=0),i},R.dividedBy=R.div=function(t,e){return r(this,new z(t,e),U,V)},R.dividedToIntegerBy=R.idiv=function(t,e){return r(this,new z(t,e),0,1)},R.exponentiatedBy=R.pow=function(t,e){var r,i,n,o,s,l,c,d,g=this;if((t=new z(t)).c&&!t.isInteger())throw Error(u+"Exponent not an integer: "+J(t));if(null!=e&&(e=new z(e)),s=t.e>14,!g.c||!g.c[0]||1==g.c[0]&&!g.e&&1==g.c.length||!t.c||!t.c[0])return d=new z(Math.pow(+J(g),s?2-E(t):+J(t))),e?d.mod(e):d;if(l=t.s<0,e){if(e.c?!e.c[0]:!e.s)return new z(NaN);(i=!l&&g.isInteger()&&e.isInteger())&&(g=g.mod(e))}else{if(t.e>9&&(g.e>0||g.e<-1||(0==g.e?g.c[0]>1||s&&g.c[1]>=24e7:g.c[0]<8e13||s&&g.c[0]<=9999975e7)))return o=g.s<0&&E(t)?-0:0,g.e>-1&&(o=1/o),new z(l?1/o:o);j&&(o=a(j/f+2))}for(s?(r=new z(.5),l&&(t.s=1),c=E(t)):c=(n=Math.abs(+J(t)))%2,d=new z(G);;){if(c){if(!(d=d.times(g)).c)break;o?d.c.length>o&&(d.c.length=o):i&&(d=d.mod(e))}if(n){if(0===(n=h(n/2)))break;c=n%2}else if(W(t=t.times(r),t.e+1,1),t.e>14)c=E(t);else{if(0==(n=+J(t)))break;c=n%2}g=g.times(g),o?g.c&&g.c.length>o&&(g.c.length=o):i&&(g=g.mod(e))}return i?d:(l&&(d=G.div(d)),e?d.mod(e):o?W(d,j,V,void 0):d)},R.integerValue=function(t){var e=new z(this);return null==t?t=V:m(t,0,8),W(e,e.e+1,t)},R.isEqualTo=R.eq=function(t,e){return 0===B(this,new z(t,e))},R.isFinite=function(){return!!this.c},R.isGreaterThan=R.gt=function(t,e){return B(this,new z(t,e))>0},R.isGreaterThanOrEqualTo=R.gte=function(t,e){return 1===(e=B(this,new z(t,e)))||0===e},R.isInteger=function(){return!!this.c&&p(this.e/f)>this.c.length-2},R.isLessThan=R.lt=function(t,e){return B(this,new z(t,e))<0},R.isLessThanOrEqualTo=R.lte=function(t,e){return-1===(e=B(this,new z(t,e)))||0===e},R.isNaN=function(){return!this.s},R.isNegative=function(){return this.s<0},R.isPositive=function(){return this.s>0},R.isZero=function(){return!!this.c&&0==this.c[0]},R.minus=function(t,e){var r,i,n,o,s=this,a=s.s;if(e=(t=new z(t,e)).s,!a||!e)return new z(NaN);if(a!=e)return t.s=-e,s.plus(t);var h=s.e/f,u=t.e/f,l=s.c,d=t.c;if(!h||!u){if(!l||!d)return l?(t.s=-e,t):new z(d?s:NaN);if(!l[0]||!d[0])return d[0]?(t.s=-e,t):new z(l[0]?s:3==V?-0:0)}if(h=p(h),u=p(u),l=l.slice(),a=h-u){for((o=a<0)?(a=-a,n=l):(u=h,n=d),n.reverse(),e=a;e--;n.push(0));n.reverse()}else for(i=(o=(a=l.length)<(e=d.length))?a:e,a=e=0;e0)for(;e--;l[r++]=0);for(e=c-1;i>a;){if(l[--i]=0;){for(r=0,g=b[n]%m,M=b[n]/m|0,o=n+(s=h);o>n;)r=((u=g*(u=y[--s]%m)+(a=M*u+(l=y[s]/m|0)*g)%m*m+w[o]+r)/B|0)+(a/m|0)+M*l,w[o--]=u%B;w[o]=r}return r?++i:w.splice(0,1),_(t,w,i)},R.negated=function(){var t=new z(this);return t.s=-t.s||null,t},R.plus=function(t,e){var r,i=this,n=i.s;if(e=(t=new z(t,e)).s,!n||!e)return new z(NaN);if(n!=e)return t.s=-e,i.minus(t);var o=i.e/f,s=t.e/f,a=i.c,h=t.c;if(!o||!s){if(!a||!h)return new z(n/0);if(!a[0]||!h[0])return h[0]?t:new z(a[0]?i:0*n)}if(o=p(o),s=p(s),a=a.slice(),n=o-s){for(n>0?(s=o,r=h):(n=-n,r=a),r.reverse();n--;r.push(0));r.reverse()}for((n=a.length)-(e=h.length)<0&&(r=h,h=a,a=r,e=n),n=0;e;)n=(a[--e]=a[e]+h[e]+n)/c|0,a[e]=c===a[e]?0:a[e]%c;return n&&(a=[n].concat(a),++s),_(t,a,s)},R.precision=R.sd=function(t,e){var r,i,n,o=this;if(null!=t&&t!==!!t)return m(t,1,M),null==e?e=V:m(e,0,8),W(new z(o),t,e);if(!(r=o.c))return null;if(i=(n=r.length-1)*f+1,n=r[n]){for(;n%10==0;n/=10,i--);for(n=r[0];n>=10;n/=10,i++);}return t&&o.e+1>i&&(i=o.e+1),i},R.shiftedBy=function(t){return m(t,-9007199254740991,d),this.times("1e"+t)},R.squareRoot=R.sqrt=function(){var t,e,i,n,o,s=this,a=s.c,h=s.s,u=s.e,l=U+4,c=new z("0.5");if(1!==h||!a||!a[0])return new z(!h||h<0&&(!a||a[0])?NaN:a?s:1/0);if(0==(h=Math.sqrt(+J(s)))||h==1/0?(((e=w(a)).length+u)%2==0&&(e+="0"),h=Math.sqrt(+e),u=p((u+1)/2)-(u<0||u%2),i=new z(e=h==1/0?"5e"+u:(e=h.toExponential()).slice(0,e.indexOf("e")+1)+u)):i=new z(h+""),i.c[0])for((h=(u=i.e)+l)<3&&(h=0);;)if(o=i,i=c.times(o.plus(r(s,o,l,1))),w(o.c).slice(0,h)===(e=w(i.c)).slice(0,h)){if(i.e0&&A>0){for(o=A%a||a,c=g.substr(0,o);o0&&(c+=l+g.slice(o)),d&&(c="-"+c)}i=f?c+(r.decimalSeparator||"")+((h=+r.fractionGroupSize)?f.replace(new RegExp("\\d{"+h+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):f):c}return(r.prefix||"")+i+(r.suffix||"")},R.toFraction=function(t){var e,i,n,o,s,a,h,l,c,d,A,M,p=this,B=p.c;if(null!=t&&(!(h=new z(t)).isInteger()&&(h.c||1!==h.s)||h.lt(G)))throw Error(u+"Argument "+(h.isInteger()?"out of range: ":"not an integer: ")+J(h));if(!B)return new z(p);for(e=new z(G),c=i=new z(G),n=l=new z(G),M=w(B),s=e.e=M.length-p.e-1,e.c[0]=g[(a=s%f)<0?f+a:a],t=!t||h.comparedTo(e)>0?s>0?e:c:h,a=k,k=1/0,h=new z(M),l.c[0]=0;d=r(h,e,0,1),1!=(o=i.plus(d.times(n))).comparedTo(t);)i=n,n=o,c=l.plus(d.times(o=c)),l=o,e=h.minus(d.times(o=e)),h=o;return o=r(t.minus(i),n,0,1),l=l.plus(o.times(c)),i=i.plus(o.times(n)),l.s=c.s=p.s,A=r(c,n,s*=2,V).minus(p).abs().comparedTo(r(l,i,s,V).minus(p).abs())<1?[c,n]:[l,i],k=a,A},R.toNumber=function(){return+J(this)},R.toPrecision=function(t,e){return null!=t&&m(t,1,M),O(this,t,e,2)},R.toString=function(t){var e,r=this,n=r.s,o=r.e;return null===o?n?(e="Infinity",n<0&&(e="-"+e)):e="NaN":(null==t?e=o<=S||o>=T?y(w(r.c),o):b(w(r.c),o,"0"):10===t?e=b(w((r=W(new z(r),U+o+1,V)).c),r.e,"0"):(m(t,2,x.length,"Base"),e=i(b(w(r.c),o,"0"),10,t,n,!0)),n<0&&r.c[0]&&(e="-"+e)),e},R.valueOf=R.toJSON=function(){return J(this)},R._isBigNumber=!0,null!=e&&z.set(e),z}()).default=o.BigNumber=o,void 0===(i=function(){return o}.call(e,r,e,t))||(t.exports=i)}()},3550:function(t,e,r){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(6601).Buffer}catch(t){}function a(t,e){var r=t.charCodeAt(e);return r>=48&&r<=57?r-48:r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:void i(!1,"Invalid character in "+t)}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,n){for(var o=0,s=0,a=Math.min(t.length,r),h=e;h=49?u-49+10:u>=17?u-17+10:u,i(u>=0&&s0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this._strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this._strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=c}catch(t){o.prototype.inspect=c}else o.prototype.inspect=c;function c(){return(this.red?""}var f=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],g=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function A(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,c=67108863&h,f=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=f;d++){var g=u-d|0;l+=(s=(n=0|t.words[g])*(o=0|e.words[d])+c)/67108864|0,c=67108863&s}r.words[u]=0|c,h=0|l}return 0!==h?r.words[u]=0|h:r.length--,r._strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?f[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=d[t],l=g[t];r="";var c=this.clone();for(c.negative=0;!c.isZero();){var A=c.modrn(l).toString(t);r=(c=c.idivn(l)).isZero()?A+r:f[u-A.length]+A+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16,2)},s&&(o.prototype.toBuffer=function(t,e){return this.toArrayLike(s,t,e)}),o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){this._strip();var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0");var s=function(t,e){return t.allocUnsafe?t.allocUnsafe(e):new t(e)}(t,o);return this["_toArrayLike"+("le"===e?"LE":"BE")](s,n),s},o.prototype._toArrayLikeLE=function(t,e){for(var r=0,i=0,n=0,o=0;n>8&255),r>16&255),6===o?(r>24&255),i=0,o=0):(i=s>>>24,o+=2)}if(r=0&&(t[r--]=s>>8&255),r>=0&&(t[r--]=s>>16&255),6===o?(r>=0&&(t[r--]=s>>24&255),i=0,o=0):(i=s>>>24,o+=2)}if(r>=0)for(t[r--]=i;r>=0;)t[r--]=0},Math.clz32?o.prototype._countBits=function(t){return 32-Math.clz32(t)}:o.prototype._countBits=function(t){var e=t,r=0;return e>=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this._strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],g=8191&d,A=d>>>13,M=0|s[2],p=8191&M,w=M>>>13,B=0|s[3],m=8191&B,E=B>>>13,y=0|s[4],b=8191&y,I=y>>>13,v=0|s[5],C=8191&v,Q=v>>>13,D=0|s[6],N=8191&D,R=D>>>13,G=0|s[7],U=8191&G,V=G>>>13,S=0|s[8],T=8191&S,Y=S>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,x=j>>>13,z=0|a[1],O=8191&z,H=z>>>13,_=0|a[2],W=8191&_,J=_>>>13,X=0|a[3],P=8191&X,K=X>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,lt=0|a[8],ct=8191<,ft=lt>>>13,dt=0|a[9],gt=8191&dt,At=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(c,Z))|0)+((8191&(n=(n=Math.imul(c,x))+Math.imul(f,Z)|0))<<13)|0;u=((o=Math.imul(f,x))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(g,Z),n=(n=Math.imul(g,x))+Math.imul(A,Z)|0,o=Math.imul(A,x);var pt=(u+(i=i+Math.imul(c,O)|0)|0)+((8191&(n=(n=n+Math.imul(c,H)|0)+Math.imul(f,O)|0))<<13)|0;u=((o=o+Math.imul(f,H)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,x))+Math.imul(w,Z)|0,o=Math.imul(w,x),i=i+Math.imul(g,O)|0,n=(n=n+Math.imul(g,H)|0)+Math.imul(A,O)|0,o=o+Math.imul(A,H)|0;var wt=(u+(i=i+Math.imul(c,W)|0)|0)+((8191&(n=(n=n+Math.imul(c,J)|0)+Math.imul(f,W)|0))<<13)|0;u=((o=o+Math.imul(f,J)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(m,Z),n=(n=Math.imul(m,x))+Math.imul(E,Z)|0,o=Math.imul(E,x),i=i+Math.imul(p,O)|0,n=(n=n+Math.imul(p,H)|0)+Math.imul(w,O)|0,o=o+Math.imul(w,H)|0,i=i+Math.imul(g,W)|0,n=(n=n+Math.imul(g,J)|0)+Math.imul(A,W)|0,o=o+Math.imul(A,J)|0;var Bt=(u+(i=i+Math.imul(c,P)|0)|0)+((8191&(n=(n=n+Math.imul(c,K)|0)+Math.imul(f,P)|0))<<13)|0;u=((o=o+Math.imul(f,K)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,x))+Math.imul(I,Z)|0,o=Math.imul(I,x),i=i+Math.imul(m,O)|0,n=(n=n+Math.imul(m,H)|0)+Math.imul(E,O)|0,o=o+Math.imul(E,H)|0,i=i+Math.imul(p,W)|0,n=(n=n+Math.imul(p,J)|0)+Math.imul(w,W)|0,o=o+Math.imul(w,J)|0,i=i+Math.imul(g,P)|0,n=(n=n+Math.imul(g,K)|0)+Math.imul(A,P)|0,o=o+Math.imul(A,K)|0;var mt=(u+(i=i+Math.imul(c,$)|0)|0)+((8191&(n=(n=n+Math.imul(c,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,x))+Math.imul(Q,Z)|0,o=Math.imul(Q,x),i=i+Math.imul(b,O)|0,n=(n=n+Math.imul(b,H)|0)+Math.imul(I,O)|0,o=o+Math.imul(I,H)|0,i=i+Math.imul(m,W)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,J)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,K)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,K)|0,i=i+Math.imul(g,$)|0,n=(n=n+Math.imul(g,tt)|0)+Math.imul(A,$)|0,o=o+Math.imul(A,tt)|0;var Et=(u+(i=i+Math.imul(c,rt)|0)|0)+((8191&(n=(n=n+Math.imul(c,it)|0)+Math.imul(f,rt)|0))<<13)|0;u=((o=o+Math.imul(f,it)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,Z),n=(n=Math.imul(N,x))+Math.imul(R,Z)|0,o=Math.imul(R,x),i=i+Math.imul(C,O)|0,n=(n=n+Math.imul(C,H)|0)+Math.imul(Q,O)|0,o=o+Math.imul(Q,H)|0,i=i+Math.imul(b,W)|0,n=(n=n+Math.imul(b,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,i=i+Math.imul(m,P)|0,n=(n=n+Math.imul(m,K)|0)+Math.imul(E,P)|0,o=o+Math.imul(E,K)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(g,rt)|0,n=(n=n+Math.imul(g,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0;var yt=(u+(i=i+Math.imul(c,ot)|0)|0)+((8191&(n=(n=n+Math.imul(c,st)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(U,Z),n=(n=Math.imul(U,x))+Math.imul(V,Z)|0,o=Math.imul(V,x),i=i+Math.imul(N,O)|0,n=(n=n+Math.imul(N,H)|0)+Math.imul(R,O)|0,o=o+Math.imul(R,H)|0,i=i+Math.imul(C,W)|0,n=(n=n+Math.imul(C,J)|0)+Math.imul(Q,W)|0,o=o+Math.imul(Q,J)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,K)|0)+Math.imul(I,P)|0,o=o+Math.imul(I,K)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(g,ot)|0,n=(n=n+Math.imul(g,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0;var bt=(u+(i=i+Math.imul(c,ht)|0)|0)+((8191&(n=(n=n+Math.imul(c,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,x))+Math.imul(Y,Z)|0,o=Math.imul(Y,x),i=i+Math.imul(U,O)|0,n=(n=n+Math.imul(U,H)|0)+Math.imul(V,O)|0,o=o+Math.imul(V,H)|0,i=i+Math.imul(N,W)|0,n=(n=n+Math.imul(N,J)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,J)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,K)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,K)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,tt)|0,i=i+Math.imul(m,rt)|0,n=(n=n+Math.imul(m,it)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(g,ht)|0,n=(n=n+Math.imul(g,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0;var It=(u+(i=i+Math.imul(c,ct)|0)|0)+((8191&(n=(n=n+Math.imul(c,ft)|0)+Math.imul(f,ct)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,x))+Math.imul(L,Z)|0,o=Math.imul(L,x),i=i+Math.imul(T,O)|0,n=(n=n+Math.imul(T,H)|0)+Math.imul(Y,O)|0,o=o+Math.imul(Y,H)|0,i=i+Math.imul(U,W)|0,n=(n=n+Math.imul(U,J)|0)+Math.imul(V,W)|0,o=o+Math.imul(V,J)|0,i=i+Math.imul(N,P)|0,n=(n=n+Math.imul(N,K)|0)+Math.imul(R,P)|0,o=o+Math.imul(R,K)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,it)|0,i=i+Math.imul(m,ot)|0,n=(n=n+Math.imul(m,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(g,ct)|0,n=(n=n+Math.imul(g,ft)|0)+Math.imul(A,ct)|0,o=o+Math.imul(A,ft)|0;var vt=(u+(i=i+Math.imul(c,gt)|0)|0)+((8191&(n=(n=n+Math.imul(c,At)|0)+Math.imul(f,gt)|0))<<13)|0;u=((o=o+Math.imul(f,At)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,O),n=(n=Math.imul(F,H))+Math.imul(L,O)|0,o=Math.imul(L,H),i=i+Math.imul(T,W)|0,n=(n=n+Math.imul(T,J)|0)+Math.imul(Y,W)|0,o=o+Math.imul(Y,J)|0,i=i+Math.imul(U,P)|0,n=(n=n+Math.imul(U,K)|0)+Math.imul(V,P)|0,o=o+Math.imul(V,K)|0,i=i+Math.imul(N,$)|0,n=(n=n+Math.imul(N,tt)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,i=i+Math.imul(m,ht)|0,n=(n=n+Math.imul(m,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,i=i+Math.imul(p,ct)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(w,ct)|0,o=o+Math.imul(w,ft)|0;var Ct=(u+(i=i+Math.imul(g,gt)|0)|0)+((8191&(n=(n=n+Math.imul(g,At)|0)+Math.imul(A,gt)|0))<<13)|0;u=((o=o+Math.imul(A,At)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,W),n=(n=Math.imul(F,J))+Math.imul(L,W)|0,o=Math.imul(L,J),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,K)|0)+Math.imul(Y,P)|0,o=o+Math.imul(Y,K)|0,i=i+Math.imul(U,$)|0,n=(n=n+Math.imul(U,tt)|0)+Math.imul(V,$)|0,o=o+Math.imul(V,tt)|0,i=i+Math.imul(N,rt)|0,n=(n=n+Math.imul(N,it)|0)+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,ut)|0,i=i+Math.imul(m,ct)|0,n=(n=n+Math.imul(m,ft)|0)+Math.imul(E,ct)|0,o=o+Math.imul(E,ft)|0;var Qt=(u+(i=i+Math.imul(p,gt)|0)|0)+((8191&(n=(n=n+Math.imul(p,At)|0)+Math.imul(w,gt)|0))<<13)|0;u=((o=o+Math.imul(w,At)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,K))+Math.imul(L,P)|0,o=Math.imul(L,K),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(Y,$)|0,o=o+Math.imul(Y,tt)|0,i=i+Math.imul(U,rt)|0,n=(n=n+Math.imul(U,it)|0)+Math.imul(V,rt)|0,o=o+Math.imul(V,it)|0,i=i+Math.imul(N,ot)|0,n=(n=n+Math.imul(N,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(b,ct)|0,n=(n=n+Math.imul(b,ft)|0)+Math.imul(I,ct)|0,o=o+Math.imul(I,ft)|0;var Dt=(u+(i=i+Math.imul(m,gt)|0)|0)+((8191&(n=(n=n+Math.imul(m,At)|0)+Math.imul(E,gt)|0))<<13)|0;u=((o=o+Math.imul(E,At)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(Y,rt)|0,o=o+Math.imul(Y,it)|0,i=i+Math.imul(U,ot)|0,n=(n=n+Math.imul(U,st)|0)+Math.imul(V,ot)|0,o=o+Math.imul(V,st)|0,i=i+Math.imul(N,ht)|0,n=(n=n+Math.imul(N,ut)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,ut)|0,i=i+Math.imul(C,ct)|0,n=(n=n+Math.imul(C,ft)|0)+Math.imul(Q,ct)|0,o=o+Math.imul(Q,ft)|0;var Nt=(u+(i=i+Math.imul(b,gt)|0)|0)+((8191&(n=(n=n+Math.imul(b,At)|0)+Math.imul(I,gt)|0))<<13)|0;u=((o=o+Math.imul(I,At)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(Y,ot)|0,o=o+Math.imul(Y,st)|0,i=i+Math.imul(U,ht)|0,n=(n=n+Math.imul(U,ut)|0)+Math.imul(V,ht)|0,o=o+Math.imul(V,ut)|0,i=i+Math.imul(N,ct)|0,n=(n=n+Math.imul(N,ft)|0)+Math.imul(R,ct)|0,o=o+Math.imul(R,ft)|0;var Rt=(u+(i=i+Math.imul(C,gt)|0)|0)+((8191&(n=(n=n+Math.imul(C,At)|0)+Math.imul(Q,gt)|0))<<13)|0;u=((o=o+Math.imul(Q,At)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(Y,ht)|0,o=o+Math.imul(Y,ut)|0,i=i+Math.imul(U,ct)|0,n=(n=n+Math.imul(U,ft)|0)+Math.imul(V,ct)|0,o=o+Math.imul(V,ft)|0;var Gt=(u+(i=i+Math.imul(N,gt)|0)|0)+((8191&(n=(n=n+Math.imul(N,At)|0)+Math.imul(R,gt)|0))<<13)|0;u=((o=o+Math.imul(R,At)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,ct)|0,n=(n=n+Math.imul(T,ft)|0)+Math.imul(Y,ct)|0,o=o+Math.imul(Y,ft)|0;var Ut=(u+(i=i+Math.imul(U,gt)|0)|0)+((8191&(n=(n=n+Math.imul(U,At)|0)+Math.imul(V,gt)|0))<<13)|0;u=((o=o+Math.imul(V,At)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,i=Math.imul(F,ct),n=(n=Math.imul(F,ft))+Math.imul(L,ct)|0,o=Math.imul(L,ft);var Vt=(u+(i=i+Math.imul(T,gt)|0)|0)+((8191&(n=(n=n+Math.imul(T,At)|0)+Math.imul(Y,gt)|0))<<13)|0;u=((o=o+Math.imul(Y,At)|0)+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863;var St=(u+(i=Math.imul(F,gt))|0)+((8191&(n=(n=Math.imul(F,At))+Math.imul(L,gt)|0))<<13)|0;return u=((o=Math.imul(L,At))+(n>>>13)|0)+(St>>>26)|0,St&=67108863,h[0]=Mt,h[1]=pt,h[2]=wt,h[3]=Bt,h[4]=mt,h[5]=Et,h[6]=yt,h[7]=bt,h[8]=It,h[9]=vt,h[10]=Ct,h[11]=Qt,h[12]=Dt,h[13]=Nt,h[14]=Rt,h[15]=Gt,h[16]=Ut,h[17]=Vt,h[18]=St,0!==u&&(h[19]=u,r.length++),r};function p(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r._strip()}function w(t,e,r){return p(t,e,r)}function B(t,e){this.x=t,this.y=e}Math.imul||(M=A),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?M(this,t,e):r<63?A(this,t,e):r<1024?p(this,t,e):w(this,t,e)},B.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},B.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,r+=o/67108864|0,r+=s>>>26,this.words[n]=67108863&s}return 0!==r&&(this.words[n]=r,this.length++),e?this.ineg():this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n&1}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==l||u>=n);u--){var c=0|this.words[u];this.words[u]=l<<26-o|c>>>o,l=c&a}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this._strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this._strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;c--){var f=67108864*(0|i.words[n.length+c])+(0|i.words[n.length+c-1]);for(f=Math.min(f/s|0,67108863),i._ishlnsubmul(n,f,c);0!==i.negative;)f--,i.negative=0,i._ishlnsubmul(n,1,c),i.isZero()||(i.negative^=1);a&&(a.words[c]=f)}return a&&a._strip(),i._strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modrn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modrn=function(t){var e=t<0;e&&(t=-t),i(t<=67108863);for(var r=(1<<26)%t,n=0,o=this.length-1;o>=0;o--)n=(r*n+(0|this.words[o]))%t;return e?-n:n},o.prototype.modn=function(t){return this.modrn(t)},o.prototype.idivn=function(t){var e=t<0;e&&(t=-t),i(t<=67108863);for(var r=0,n=this.length-1;n>=0;n--){var o=(0|this.words[n])+67108864*r;this.words[n]=o/t|0,r=o%t}return this._strip(),e?this.ineg():this},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),c=e.clone();!e.isZero();){for(var f=0,d=1;0==(e.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(l),s.isub(c)),n.iushrn(1),s.iushrn(1);for(var g=0,A=1;0==(r.words[0]&A)&&g<26;++g,A<<=1);if(g>0)for(r.iushrn(g);g-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(l),h.isub(c)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var c=0,f=1;0==(r.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(r.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this._strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new C(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var m={k256:null,p224:null,p192:null,p25519:null};function E(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function y(){E.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){E.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function I(){E.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function v(){E.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function C(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function Q(t){C.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}E.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},E.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},E.prototype.split=function(t,e){t.iushrn(this.n,0,e)},E.prototype.imulK=function(t){return t.imul(this.k)},n(y,E),y.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},y.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(m[t])return m[t];var e;if("k256"===t)e=new y;else if("p224"===t)e=new b;else if("p192"===t)e=new I;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new v}return m[t]=e,e},C.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},C.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},C.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(l(t,t.umod(this.m)._forceRed(this)),t)},C.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},C.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},C.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},C.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},C.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},C.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},C.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},C.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},C.prototype.isqr=function(t){return this.imul(t,t.clone())},C.prototype.sqr=function(t){return this.mul(t,t)},C.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var c=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),g=s;0!==d.cmp(a);){for(var A=d,M=0;0!==A.cmp(a);M++)A=A.redSqr();i(M=0;i--){for(var u=e.words[i],l=h-1;l>=0;l--){var c=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==c||0!==s?(s<<=1,s|=c,(4==++a||0===i&&0===l)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},C.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},C.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new Q(t)},n(Q,C),Q.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},Q.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},Q.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},Q.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},Q.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},9931:(t,e,r)=>{var i;function n(t){this.rand=t}if(t.exports=function(t){return i||(i=new n(null)),i.generate(t)},t.exports.Rand=n,n.prototype.generate=function(t){return this._rand(t)},n.prototype._rand=function(t){if(this.rand.getBytes)return this.rand.getBytes(t);for(var e=new Uint8Array(t),r=0;r{var i=r(9509).Buffer;function n(t){i.isBuffer(t)||(t=i.from(t));for(var e=t.length/4|0,r=new Array(e),n=0;n>>24]^l[g>>>16&255]^c[A>>>8&255]^f[255&M]^e[p++],s=u[g>>>24]^l[A>>>16&255]^c[M>>>8&255]^f[255&d]^e[p++],a=u[A>>>24]^l[M>>>16&255]^c[d>>>8&255]^f[255&g]^e[p++],h=u[M>>>24]^l[d>>>16&255]^c[g>>>8&255]^f[255&A]^e[p++],d=o,g=s,A=a,M=h;return o=(i[d>>>24]<<24|i[g>>>16&255]<<16|i[A>>>8&255]<<8|i[255&M])^e[p++],s=(i[g>>>24]<<24|i[A>>>16&255]<<16|i[M>>>8&255]<<8|i[255&d])^e[p++],a=(i[A>>>24]<<24|i[M>>>16&255]<<16|i[d>>>8&255]<<8|i[255&g])^e[p++],h=(i[M>>>24]<<24|i[d>>>16&255]<<16|i[g>>>8&255]<<8|i[255&A])^e[p++],[o>>>=0,s>>>=0,a>>>=0,h>>>=0]}var a=[0,1,2,4,8,16,32,64,128,27,54],h=function(){for(var t=new Array(256),e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;for(var r=[],i=[],n=[[],[],[],[]],o=[[],[],[],[]],s=0,a=0,h=0;h<256;++h){var u=a^a<<1^a<<2^a<<3^a<<4;u=u>>>8^255&u^99,r[s]=u,i[u]=s;var l=t[s],c=t[l],f=t[c],d=257*t[u]^16843008*u;n[0][s]=d<<24|d>>>8,n[1][s]=d<<16|d>>>16,n[2][s]=d<<8|d>>>24,n[3][s]=d,d=16843009*f^65537*c^257*l^16843008*s,o[0][u]=d<<24|d>>>8,o[1][u]=d<<16|d>>>16,o[2][u]=d<<8|d>>>24,o[3][u]=d,0===s?s=a=1:(s=l^t[t[t[f^l]]],a^=t[t[a]])}return{SBOX:r,INV_SBOX:i,SUB_MIX:n,INV_SUB_MIX:o}}();function u(t){this._key=n(t),this._reset()}u.blockSize=16,u.keySize=32,u.prototype.blockSize=u.blockSize,u.prototype.keySize=u.keySize,u.prototype._reset=function(){for(var t=this._key,e=t.length,r=e+6,i=4*(r+1),n=[],o=0;o>>24,s=h.SBOX[s>>>24]<<24|h.SBOX[s>>>16&255]<<16|h.SBOX[s>>>8&255]<<8|h.SBOX[255&s],s^=a[o/e|0]<<24):e>6&&o%e==4&&(s=h.SBOX[s>>>24]<<24|h.SBOX[s>>>16&255]<<16|h.SBOX[s>>>8&255]<<8|h.SBOX[255&s]),n[o]=n[o-e]^s}for(var u=[],l=0;l>>24]]^h.INV_SUB_MIX[1][h.SBOX[f>>>16&255]]^h.INV_SUB_MIX[2][h.SBOX[f>>>8&255]]^h.INV_SUB_MIX[3][h.SBOX[255&f]]}this._nRounds=r,this._keySchedule=n,this._invKeySchedule=u},u.prototype.encryptBlockRaw=function(t){return s(t=n(t),this._keySchedule,h.SUB_MIX,h.SBOX,this._nRounds)},u.prototype.encryptBlock=function(t){var e=this.encryptBlockRaw(t),r=i.allocUnsafe(16);return r.writeUInt32BE(e[0],0),r.writeUInt32BE(e[1],4),r.writeUInt32BE(e[2],8),r.writeUInt32BE(e[3],12),r},u.prototype.decryptBlock=function(t){var e=(t=n(t))[1];t[1]=t[3],t[3]=e;var r=s(t,this._invKeySchedule,h.INV_SUB_MIX,h.INV_SBOX,this._nRounds),o=i.allocUnsafe(16);return o.writeUInt32BE(r[0],0),o.writeUInt32BE(r[3],4),o.writeUInt32BE(r[2],8),o.writeUInt32BE(r[1],12),o},u.prototype.scrub=function(){o(this._keySchedule),o(this._invKeySchedule),o(this._key)},t.exports.AES=u},2422:(t,e,r)=>{var i=r(4497),n=r(9509).Buffer,o=r(1027),s=r(5717),a=r(3288),h=r(7295),u=r(685);function l(t,e,r,s){o.call(this);var h=n.alloc(4,0);this._cipher=new i.AES(e);var l=this._cipher.encryptBlock(h);this._ghash=new a(l),r=function(t,e,r){if(12===e.length)return t._finID=n.concat([e,n.from([0,0,0,1])]),n.concat([e,n.from([0,0,0,2])]);var i=new a(r),o=e.length,s=o%16;i.update(e),s&&(s=16-s,i.update(n.alloc(s,0))),i.update(n.alloc(8,0));var h=8*o,l=n.alloc(8);l.writeUIntBE(h,0,8),i.update(l),t._finID=i.state;var c=n.from(t._finID);return u(c),c}(this,r,l),this._prev=n.from(r),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=s,this._alen=0,this._len=0,this._mode=t,this._authTag=null,this._called=!1}s(l,o),l.prototype._update=function(t){if(!this._called&&this._alen){var e=16-this._alen%16;e<16&&(e=n.alloc(e,0),this._ghash.update(e))}this._called=!0;var r=this._mode.encrypt(this,t);return this._decrypt?this._ghash.update(t):this._ghash.update(r),this._len+=t.length,r},l.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error("Unsupported state or unable to authenticate data");var t=h(this._ghash.final(8*this._alen,8*this._len),this._cipher.encryptBlock(this._finID));if(this._decrypt&&function(t,e){var r=0;t.length!==e.length&&r++;for(var i=Math.min(t.length,e.length),n=0;n{var i=r(1494),n=r(6193),o=r(5415);e.createCipher=e.Cipher=i.createCipher,e.createCipheriv=e.Cipheriv=i.createCipheriv,e.createDecipher=e.Decipher=n.createDecipher,e.createDecipheriv=e.Decipheriv=n.createDecipheriv,e.listCiphers=e.getCiphers=function(){return Object.keys(o)}},6193:(t,e,r)=>{var i=r(2422),n=r(9509).Buffer,o=r(45),s=r(5969),a=r(1027),h=r(4497),u=r(3048);function l(t,e,r){a.call(this),this._cache=new c,this._last=void 0,this._cipher=new h.AES(e),this._prev=n.from(r),this._mode=t,this._autopadding=!0}function c(){this.cache=n.allocUnsafe(0)}function f(t,e,r){var a=o[t.toLowerCase()];if(!a)throw new TypeError("invalid suite type");if("string"==typeof r&&(r=n.from(r)),"GCM"!==a.mode&&r.length!==a.iv)throw new TypeError("invalid iv length "+r.length);if("string"==typeof e&&(e=n.from(e)),e.length!==a.key/8)throw new TypeError("invalid key length "+e.length);return"stream"===a.type?new s(a.module,e,r,!0):"auth"===a.type?new i(a.module,e,r,!0):new l(a.module,e,r)}r(5717)(l,a),l.prototype._update=function(t){var e,r;this._cache.add(t);for(var i=[];e=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,e),i.push(r);return n.concat(i)},l.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return function(t){var e=t[15];if(e<1||e>16)throw new Error("unable to decrypt data");for(var r=-1;++r16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},c.prototype.flush=function(){if(this.cache.length)return this.cache},e.createDecipher=function(t,e){var r=o[t.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=u(e,!1,r.key,r.iv);return f(t,i.key,i.iv)},e.createDecipheriv=f},1494:(t,e,r)=>{var i=r(45),n=r(2422),o=r(9509).Buffer,s=r(5969),a=r(1027),h=r(4497),u=r(3048);function l(t,e,r){a.call(this),this._cache=new f,this._cipher=new h.AES(e),this._prev=o.from(r),this._mode=t,this._autopadding=!0}r(5717)(l,a),l.prototype._update=function(t){var e,r;this._cache.add(t);for(var i=[];e=this._cache.get();)r=this._mode.encrypt(this,e),i.push(r);return o.concat(i)};var c=o.alloc(16,16);function f(){this.cache=o.allocUnsafe(0)}function d(t,e,r){var a=i[t.toLowerCase()];if(!a)throw new TypeError("invalid suite type");if("string"==typeof e&&(e=o.from(e)),e.length!==a.key/8)throw new TypeError("invalid key length "+e.length);if("string"==typeof r&&(r=o.from(r)),"GCM"!==a.mode&&r.length!==a.iv)throw new TypeError("invalid iv length "+r.length);return"stream"===a.type?new s(a.module,e,r):"auth"===a.type?new n(a.module,e,r):new l(a.module,e,r)}l.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(!t.equals(c))throw this._cipher.scrub(),new Error("data not multiple of block length")},l.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},f.prototype.add=function(t){this.cache=o.concat([this.cache,t])},f.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},f.prototype.flush=function(){for(var t=16-this.cache.length,e=o.allocUnsafe(t),r=-1;++r{var i=r(9509).Buffer,n=i.alloc(16,0);function o(t){var e=i.allocUnsafe(16);return e.writeUInt32BE(t[0]>>>0,0),e.writeUInt32BE(t[1]>>>0,4),e.writeUInt32BE(t[2]>>>0,8),e.writeUInt32BE(t[3]>>>0,12),e}function s(t){this.h=t,this.state=i.alloc(16,0),this.cache=i.allocUnsafe(0)}s.prototype.ghash=function(t){for(var e=-1;++e0;e--)i[e]=i[e]>>>1|(1&i[e-1])<<31;i[0]=i[0]>>>1,r&&(i[0]=i[0]^225<<24)}this.state=o(n)},s.prototype.update=function(t){var e;for(this.cache=i.concat([this.cache,t]);this.cache.length>=16;)e=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(e)},s.prototype.final=function(t,e){return this.cache.length&&this.ghash(i.concat([this.cache,n],16)),this.ghash(o([0,t,0,e])),this.state},t.exports=s},685:t=>{t.exports=function(t){for(var e,r=t.length;r--;){if(255!==(e=t.readUInt8(r))){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}},5292:(t,e,r)=>{var i=r(7295);e.encrypt=function(t,e){var r=i(e,t._prev);return t._prev=t._cipher.encryptBlock(r),t._prev},e.decrypt=function(t,e){var r=t._prev;t._prev=e;var n=t._cipher.decryptBlock(e);return i(n,r)}},6311:(t,e,r)=>{var i=r(9509).Buffer,n=r(7295);function o(t,e,r){var o=e.length,s=n(e,t._cache);return t._cache=t._cache.slice(o),t._prev=i.concat([t._prev,r?e:s]),s}e.encrypt=function(t,e,r){for(var n,s=i.allocUnsafe(0);e.length;){if(0===t._cache.length&&(t._cache=t._cipher.encryptBlock(t._prev),t._prev=i.allocUnsafe(0)),!(t._cache.length<=e.length)){s=i.concat([s,o(t,e,r)]);break}n=t._cache.length,s=i.concat([s,o(t,e.slice(0,n),r)]),e=e.slice(n)}return s}},1510:(t,e,r)=>{var i=r(9509).Buffer;function n(t,e,r){for(var i,n,s=-1,a=0;++s<8;)i=e&1<<7-s?128:0,a+=(128&(n=t._cipher.encryptBlock(t._prev)[0]^i))>>s%8,t._prev=o(t._prev,r?i:n);return a}function o(t,e){var r=t.length,n=-1,o=i.allocUnsafe(t.length);for(t=i.concat([t,i.from([e])]);++n>7;return o}e.encrypt=function(t,e,r){for(var o=e.length,s=i.allocUnsafe(o),a=-1;++a{var i=r(9509).Buffer;function n(t,e,r){var n=t._cipher.encryptBlock(t._prev)[0]^e;return t._prev=i.concat([t._prev.slice(1),i.from([r?e:n])]),n}e.encrypt=function(t,e,r){for(var o=e.length,s=i.allocUnsafe(o),a=-1;++a{var i=r(7295),n=r(9509).Buffer,o=r(685);function s(t){var e=t._cipher.encryptBlockRaw(t._prev);return o(t._prev),e}e.encrypt=function(t,e){var r=Math.ceil(e.length/16),o=t._cache.length;t._cache=n.concat([t._cache,n.allocUnsafe(16*r)]);for(var a=0;a{e.encrypt=function(t,e){return t._cipher.encryptBlock(e)},e.decrypt=function(t,e){return t._cipher.decryptBlock(e)}},45:(t,e,r)=>{var i={ECB:r(1084),CBC:r(5292),CFB:r(6311),CFB8:r(1964),CFB1:r(1510),OFB:r(8861),CTR:r(6009),GCM:r(6009)},n=r(5415);for(var o in n)n[o].module=i[n[o].mode];t.exports=n},5415:t=>{"use strict";t.exports=JSON.parse('{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}')},8861:(t,e,r)=>{var i=r(8764).Buffer,n=r(7295);function o(t){return t._prev=t._cipher.encryptBlock(t._prev),t._prev}e.encrypt=function(t,e){for(;t._cache.length{var i=r(4497),n=r(9509).Buffer,o=r(1027);function s(t,e,r,s){o.call(this),this._cipher=new i.AES(e),this._prev=n.from(r),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=s,this._mode=t}r(5717)(s,o),s.prototype._update=function(t){return this._mode.encrypt(this,t,this._decrypt)},s.prototype._final=function(){this._cipher.scrub()},t.exports=s},3614:(t,e,r)=>{var i=r(7667),n=r(4696),o=r(45),s=r(9715),a=r(3048);function h(t,e,r){if(t=t.toLowerCase(),o[t])return n.createCipheriv(t,e,r);if(s[t])return new i({key:e,iv:r,mode:t});throw new TypeError("invalid suite type")}function u(t,e,r){if(t=t.toLowerCase(),o[t])return n.createDecipheriv(t,e,r);if(s[t])return new i({key:e,iv:r,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}e.createCipher=e.Cipher=function(t,e){var r,i;if(t=t.toLowerCase(),o[t])r=o[t].key,i=o[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");r=8*s[t].key,i=s[t].iv}var n=a(e,!1,r,i);return h(t,n.key,n.iv)},e.createCipheriv=e.Cipheriv=h,e.createDecipher=e.Decipher=function(t,e){var r,i;if(t=t.toLowerCase(),o[t])r=o[t].key,i=o[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");r=8*s[t].key,i=s[t].iv}var n=a(e,!1,r,i);return u(t,n.key,n.iv)},e.createDecipheriv=e.Decipheriv=u,e.listCiphers=e.getCiphers=function(){return Object.keys(s).concat(n.getCiphers())}},7667:(t,e,r)=>{var i=r(1027),n=r(5251),o=r(5717),s=r(9509).Buffer,a={"des-ede3-cbc":n.CBC.instantiate(n.EDE),"des-ede3":n.EDE,"des-ede-cbc":n.CBC.instantiate(n.EDE),"des-ede":n.EDE,"des-cbc":n.CBC.instantiate(n.DES),"des-ecb":n.DES};function h(t){i.call(this);var e,r=t.mode.toLowerCase(),n=a[r];e=t.decrypt?"decrypt":"encrypt";var o=t.key;s.isBuffer(o)||(o=s.from(o)),"des-ede"!==r&&"des-ede-cbc"!==r||(o=s.concat([o,o.slice(0,8)]));var h=t.iv;s.isBuffer(h)||(h=s.from(h)),this._des=n.create({key:o,iv:h,type:e})}a.des=a["des-cbc"],a.des3=a["des-ede3-cbc"],t.exports=h,o(h,i),h.prototype._update=function(t){return s.from(this._des.update(t))},h.prototype._final=function(){return s.from(this._des.final())}},9715:(t,e)=>{e["des-ecb"]={key:8,iv:0},e["des-cbc"]=e.des={key:8,iv:8},e["des-ede3-cbc"]=e.des3={key:24,iv:8},e["des-ede3"]={key:24,iv:0},e["des-ede-cbc"]={key:16,iv:8},e["des-ede"]={key:16,iv:0}},3663:(t,e,r)=>{var i=r(8764).Buffer,n=r(3550),o=r(1798);function s(t){var e,r=t.modulus.byteLength();do{e=new n(o(r))}while(e.cmp(t.modulus)>=0||!e.umod(t.prime1)||!e.umod(t.prime2));return e}function a(t,e){var r=function(t){var e=s(t);return{blinder:e.toRed(n.mont(t.modulus)).redPow(new n(t.publicExponent)).fromRed(),unblinder:e.invm(t.modulus)}}(e),o=e.modulus.byteLength(),a=new n(t).mul(r.blinder).umod(e.modulus),h=a.toRed(n.mont(e.prime1)),u=a.toRed(n.mont(e.prime2)),l=e.coefficient,c=e.prime1,f=e.prime2,d=h.redPow(e.exponent1).fromRed(),g=u.redPow(e.exponent2).fromRed(),A=d.isub(g).imul(l).umod(c).imul(f);return g.iadd(A).imul(r.unblinder).umod(e.modulus).toArrayLike(i,"be",o)}a.getr=s,t.exports=a},6042:(t,e,r)=>{t.exports=r(2063)},2063:t=>{"use strict";t.exports=JSON.parse('{"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}}')},2236:t=>{"use strict";t.exports=JSON.parse('{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}')},4743:(t,e,r)=>{var i=r(9509).Buffer,n=r(3482),o=r(8473),s=r(5717),a=r(2957),h=r(7753),u=r(2063);function l(t){o.Writable.call(this);var e=u[t];if(!e)throw new Error("Unknown message digest");this._hashType=e.hash,this._hash=n(e.hash),this._tag=e.id,this._signType=e.sign}function c(t){o.Writable.call(this);var e=u[t];if(!e)throw new Error("Unknown message digest");this._hash=n(e.hash),this._tag=e.id,this._signType=e.sign}function f(t){return new l(t)}function d(t){return new c(t)}Object.keys(u).forEach((function(t){u[t].id=i.from(u[t].id,"hex"),u[t.toLowerCase()]=u[t]})),s(l,o.Writable),l.prototype._write=function(t,e,r){this._hash.update(t),r()},l.prototype.update=function(t,e){return"string"==typeof t&&(t=i.from(t,e)),this._hash.update(t),this},l.prototype.sign=function(t,e){this.end();var r=this._hash.digest(),i=a(r,t,this._hashType,this._signType,this._tag);return e?i.toString(e):i},s(c,o.Writable),c.prototype._write=function(t,e,r){this._hash.update(t),r()},c.prototype.update=function(t,e){return"string"==typeof t&&(t=i.from(t,e)),this._hash.update(t),this},c.prototype.verify=function(t,e,r){"string"==typeof e&&(e=i.from(e,r)),this.end();var n=this._hash.digest();return h(e,n,t,this._signType,this._tag)},t.exports={Sign:f,Verify:d,createSign:f,createVerify:d}},2957:(t,e,r)=>{var i=r(9509).Buffer,n=r(8355),o=r(3663),s=r(6266).ec,a=r(3550),h=r(980),u=r(2236);function l(t,e,r,o){if((t=i.from(t.toArray())).length0&&r.ishrn(i),r}function f(t,e,r){var o,s;do{for(o=i.alloc(0);8*o.length{var i=r(9509).Buffer,n=r(3550),o=r(6266).ec,s=r(980),a=r(2236);function h(t,e){if(t.cmpn(0)<=0)throw new Error("invalid sig");if(t.cmp(e)>=e)throw new Error("invalid sig")}t.exports=function(t,e,r,u,l){var c=s(r);if("ec"===c.type){if("ecdsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");return function(t,e,r){var i=a[r.data.algorithm.curve.join(".")];if(!i)throw new Error("unknown curve "+r.data.algorithm.curve.join("."));var n=new o(i),s=r.data.subjectPrivateKey.data;return n.verify(e,t,s)}(t,e,c)}if("dsa"===c.type){if("dsa"!==u)throw new Error("wrong public key type");return function(t,e,r){var i=r.data.p,o=r.data.q,a=r.data.g,u=r.data.pub_key,l=s.signature.decode(t,"der"),c=l.s,f=l.r;h(c,o),h(f,o);var d=n.mont(i),g=c.invm(o);return 0===a.toRed(d).redPow(new n(e).mul(g).mod(o)).fromRed().mul(u.toRed(d).redPow(f.mul(g).mod(o)).fromRed()).mod(i).mod(o).cmp(f)}(t,e,c)}if("rsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");e=i.concat([l,e]);for(var f=c.modulus.byteLength(),d=[1],g=0;e.length+d.length+2{"use strict";var i=r(8764).Buffer,n=r(4155),o=r(9282),s=r(2292),a=r(405),h=r(7948),u=r(1619);for(var l in u)e[l]=u[l];function c(t){if("number"!=typeof t||te.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=t,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}e.NONE=0,e.DEFLATE=1,e.INFLATE=2,e.GZIP=3,e.GUNZIP=4,e.DEFLATERAW=5,e.INFLATERAW=6,e.UNZIP=7,c.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,o(this.init_done,"close before init"),o(this.mode<=e.UNZIP),this.mode===e.DEFLATE||this.mode===e.GZIP||this.mode===e.DEFLATERAW?a.deflateEnd(this.strm):this.mode!==e.INFLATE&&this.mode!==e.GUNZIP&&this.mode!==e.INFLATERAW&&this.mode!==e.UNZIP||h.inflateEnd(this.strm),this.mode=e.NONE,this.dictionary=null)},c.prototype.write=function(t,e,r,i,n,o,s){return this._write(!0,t,e,r,i,n,o,s)},c.prototype.writeSync=function(t,e,r,i,n,o,s){return this._write(!1,t,e,r,i,n,o,s)},c.prototype._write=function(t,r,s,a,h,u,l,c){if(o.equal(arguments.length,8),o(this.init_done,"write before init"),o(this.mode!==e.NONE,"already finalized"),o.equal(!1,this.write_in_progress,"write already in progress"),o.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,o.equal(!1,void 0===r,"must provide flush value"),this.write_in_progress=!0,r!==e.Z_NO_FLUSH&&r!==e.Z_PARTIAL_FLUSH&&r!==e.Z_SYNC_FLUSH&&r!==e.Z_FULL_FLUSH&&r!==e.Z_FINISH&&r!==e.Z_BLOCK)throw new Error("Invalid flush value");if(null==s&&(s=i.alloc(0),h=0,a=0),this.strm.avail_in=h,this.strm.input=s,this.strm.next_in=a,this.strm.avail_out=c,this.strm.output=u,this.strm.next_out=l,this.flush=r,!t)return this._process(),this._checkError()?this._afterSync():void 0;var f=this;return n.nextTick((function(){f._process(),f._after()})),this},c.prototype._afterSync=function(){var t=this.strm.avail_out,e=this.strm.avail_in;return this.write_in_progress=!1,[e,t]},c.prototype._process=function(){var t=null;switch(this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:this.err=a.deflate(this.strm,this.flush);break;case e.UNZIP:switch(this.strm.avail_in>0&&(t=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===t)break;if(31!==this.strm.input[t]){this.mode=e.INFLATE;break}if(this.gzip_id_bytes_read=1,t++,1===this.strm.avail_in)break;case 1:if(null===t)break;139===this.strm.input[t]?(this.gzip_id_bytes_read=2,this.mode=e.GUNZIP):this.mode=e.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:for(this.err=h.inflate(this.strm,this.flush),this.err===e.Z_NEED_DICT&&this.dictionary&&(this.err=h.inflateSetDictionary(this.strm,this.dictionary),this.err===e.Z_OK?this.err=h.inflate(this.strm,this.flush):this.err===e.Z_DATA_ERROR&&(this.err=e.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===e.GUNZIP&&this.err===e.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=h.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},c.prototype._checkError=function(){switch(this.err){case e.Z_OK:case e.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===e.Z_FINISH)return this._error("unexpected end of file"),!1;break;case e.Z_STREAM_END:break;case e.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},c.prototype._after=function(){if(this._checkError()){var t=this.strm.avail_out,e=this.strm.avail_in;this.write_in_progress=!1,this.callback(e,t),this.pending_close&&this.close()}},c.prototype._error=function(t){this.strm.msg&&(t=this.strm.msg),this.onerror(t,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},c.prototype.init=function(t,r,i,n,s){o(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),o(t>=8&&t<=15,"invalid windowBits"),o(r>=-1&&r<=9,"invalid compression level"),o(i>=1&&i<=9,"invalid memlevel"),o(n===e.Z_FILTERED||n===e.Z_HUFFMAN_ONLY||n===e.Z_RLE||n===e.Z_FIXED||n===e.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(r,t,i,n,s),this._setDictionary()},c.prototype.params=function(){throw new Error("deflateParams Not supported")},c.prototype.reset=function(){this._reset(),this._setDictionary()},c.prototype._init=function(t,r,i,n,o){switch(this.level=t,this.windowBits=r,this.memLevel=i,this.strategy=n,this.flush=e.Z_NO_FLUSH,this.err=e.Z_OK,this.mode!==e.GZIP&&this.mode!==e.GUNZIP||(this.windowBits+=16),this.mode===e.UNZIP&&(this.windowBits+=32),this.mode!==e.DEFLATERAW&&this.mode!==e.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new s,this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:this.err=a.deflateInit2(this.strm,this.level,e.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:case e.UNZIP:this.err=h.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==e.Z_OK&&this._error("Init error"),this.dictionary=o,this.write_in_progress=!1,this.init_done=!0},c.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=e.Z_OK,this.mode){case e.DEFLATE:case e.DEFLATERAW:this.err=a.deflateSetDictionary(this.strm,this.dictionary)}this.err!==e.Z_OK&&this._error("Failed to set dictionary")}},c.prototype._reset=function(){switch(this.err=e.Z_OK,this.mode){case e.DEFLATE:case e.DEFLATERAW:case e.GZIP:this.err=a.deflateReset(this.strm);break;case e.INFLATE:case e.INFLATERAW:case e.GUNZIP:this.err=h.inflateReset(this.strm)}this.err!==e.Z_OK&&this._error("Failed to reset stream")},e.Zlib=c},2635:(t,e,r)=>{"use strict";var i=r(4155),n=r(8764).Buffer,o=r(2830).Transform,s=r(4505),a=r(9539),h=r(9282).ok,u=r(8764).kMaxLength,l="Cannot create final Buffer. It would be larger than 0x"+u.toString(16)+" bytes";s.Z_MIN_WINDOWBITS=8,s.Z_MAX_WINDOWBITS=15,s.Z_DEFAULT_WINDOWBITS=15,s.Z_MIN_CHUNK=64,s.Z_MAX_CHUNK=1/0,s.Z_DEFAULT_CHUNK=16384,s.Z_MIN_MEMLEVEL=1,s.Z_MAX_MEMLEVEL=9,s.Z_DEFAULT_MEMLEVEL=8,s.Z_MIN_LEVEL=-1,s.Z_MAX_LEVEL=9,s.Z_DEFAULT_LEVEL=s.Z_DEFAULT_COMPRESSION;for(var c=Object.keys(s),f=0;f=u?s=new RangeError(l):e=n.concat(i,o),i=[],t.close(),r(s,e)}t.on("error",(function(e){t.removeListener("end",a),t.removeListener("readable",s),r(e)})),t.on("end",a),t.end(e),s()}function B(t,e){if("string"==typeof e&&(e=n.from(e)),!n.isBuffer(e))throw new TypeError("Not a string or buffer");var r=t._finishFlushFlag;return t._processChunk(e,r)}function m(t){if(!(this instanceof m))return new m(t);D.call(this,t,s.DEFLATE)}function E(t){if(!(this instanceof E))return new E(t);D.call(this,t,s.INFLATE)}function y(t){if(!(this instanceof y))return new y(t);D.call(this,t,s.GZIP)}function b(t){if(!(this instanceof b))return new b(t);D.call(this,t,s.GUNZIP)}function I(t){if(!(this instanceof I))return new I(t);D.call(this,t,s.DEFLATERAW)}function v(t){if(!(this instanceof v))return new v(t);D.call(this,t,s.INFLATERAW)}function C(t){if(!(this instanceof C))return new C(t);D.call(this,t,s.UNZIP)}function Q(t){return t===s.Z_NO_FLUSH||t===s.Z_PARTIAL_FLUSH||t===s.Z_SYNC_FLUSH||t===s.Z_FULL_FLUSH||t===s.Z_FINISH||t===s.Z_BLOCK}function D(t,r){var i=this;if(this._opts=t=t||{},this._chunkSize=t.chunkSize||e.Z_DEFAULT_CHUNK,o.call(this,t),t.flush&&!Q(t.flush))throw new Error("Invalid flush flag: "+t.flush);if(t.finishFlush&&!Q(t.finishFlush))throw new Error("Invalid flush flag: "+t.finishFlush);if(this._flushFlag=t.flush||s.Z_NO_FLUSH,this._finishFlushFlag=void 0!==t.finishFlush?t.finishFlush:s.Z_FINISH,t.chunkSize&&(t.chunkSizee.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+t.chunkSize);if(t.windowBits&&(t.windowBitse.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+t.windowBits);if(t.level&&(t.levele.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+t.level);if(t.memLevel&&(t.memLevele.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+t.memLevel);if(t.strategy&&t.strategy!=e.Z_FILTERED&&t.strategy!=e.Z_HUFFMAN_ONLY&&t.strategy!=e.Z_RLE&&t.strategy!=e.Z_FIXED&&t.strategy!=e.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+t.strategy);if(t.dictionary&&!n.isBuffer(t.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new s.Zlib(r);var a=this;this._hadError=!1,this._handle.onerror=function(t,r){N(a),a._hadError=!0;var i=new Error(t);i.errno=r,i.code=e.codes[r],a.emit("error",i)};var h=e.Z_DEFAULT_COMPRESSION;"number"==typeof t.level&&(h=t.level);var u=e.Z_DEFAULT_STRATEGY;"number"==typeof t.strategy&&(u=t.strategy),this._handle.init(t.windowBits||e.Z_DEFAULT_WINDOWBITS,h,t.memLevel||e.Z_DEFAULT_MEMLEVEL,u,t.dictionary),this._buffer=n.allocUnsafe(this._chunkSize),this._offset=0,this._level=h,this._strategy=u,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!i._handle},configurable:!0,enumerable:!0})}function N(t,e){e&&i.nextTick(e),t._handle&&(t._handle.close(),t._handle=null)}function R(t){t.emit("close")}Object.defineProperty(e,"codes",{enumerable:!0,value:Object.freeze(g),writable:!1}),e.Deflate=m,e.Inflate=E,e.Gzip=y,e.Gunzip=b,e.DeflateRaw=I,e.InflateRaw=v,e.Unzip=C,e.createDeflate=function(t){return new m(t)},e.createInflate=function(t){return new E(t)},e.createDeflateRaw=function(t){return new I(t)},e.createInflateRaw=function(t){return new v(t)},e.createGzip=function(t){return new y(t)},e.createGunzip=function(t){return new b(t)},e.createUnzip=function(t){return new C(t)},e.deflate=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new m(e),t,r)},e.deflateSync=function(t,e){return B(new m(e),t)},e.gzip=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new y(e),t,r)},e.gzipSync=function(t,e){return B(new y(e),t)},e.deflateRaw=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new I(e),t,r)},e.deflateRawSync=function(t,e){return B(new I(e),t)},e.unzip=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new C(e),t,r)},e.unzipSync=function(t,e){return B(new C(e),t)},e.inflate=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new E(e),t,r)},e.inflateSync=function(t,e){return B(new E(e),t)},e.gunzip=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new b(e),t,r)},e.gunzipSync=function(t,e){return B(new b(e),t)},e.inflateRaw=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new v(e),t,r)},e.inflateRawSync=function(t,e){return B(new v(e),t)},a.inherits(D,o),D.prototype.params=function(t,r,n){if(te.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+t);if(r!=e.Z_FILTERED&&r!=e.Z_HUFFMAN_ONLY&&r!=e.Z_RLE&&r!=e.Z_FIXED&&r!=e.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+r);if(this._level!==t||this._strategy!==r){var o=this;this.flush(s.Z_SYNC_FLUSH,(function(){h(o._handle,"zlib binding closed"),o._handle.params(t,r),o._hadError||(o._level=t,o._strategy=r,n&&n())}))}else i.nextTick(n)},D.prototype.reset=function(){return h(this._handle,"zlib binding closed"),this._handle.reset()},D.prototype._flush=function(t){this._transform(n.alloc(0),"",t)},D.prototype.flush=function(t,e){var r=this,o=this._writableState;("function"==typeof t||void 0===t&&!e)&&(e=t,t=s.Z_FULL_FLUSH),o.ended?e&&i.nextTick(e):o.ending?e&&this.once("end",e):o.needDrain?e&&this.once("drain",(function(){return r.flush(t,e)})):(this._flushFlag=t,this.write(n.alloc(0),"",e))},D.prototype.close=function(t){N(this,t),i.nextTick(R,this)},D.prototype._transform=function(t,e,r){var i,o=this._writableState,a=(o.ending||o.ended)&&(!t||o.length===t.length);return null===t||n.isBuffer(t)?this._handle?(a?i=this._finishFlushFlag:(i=this._flushFlag,t.length>=o.length&&(this._flushFlag=this._opts.flush||s.Z_NO_FLUSH)),void this._processChunk(t,i,r)):r(new Error("zlib binding closed")):r(new Error("invalid input"))},D.prototype._processChunk=function(t,e,r){var i=t&&t.length,o=this._chunkSize-this._offset,s=0,a=this,c="function"==typeof r;if(!c){var f,d=[],g=0;this.on("error",(function(t){f=t})),h(this._handle,"zlib binding closed");do{var A=this._handle.writeSync(e,t,s,i,this._buffer,this._offset,o)}while(!this._hadError&&w(A[0],A[1]));if(this._hadError)throw f;if(g>=u)throw N(this),new RangeError(l);var M=n.concat(d,g);return N(this),M}h(this._handle,"zlib binding closed");var p=this._handle.write(e,t,s,i,this._buffer,this._offset,o);function w(u,l){if(this&&(this.buffer=null,this.callback=null),!a._hadError){var f=o-l;if(h(f>=0,"have should not go down"),f>0){var A=a._buffer.slice(a._offset,a._offset+f);a._offset+=f,c?a.push(A):(d.push(A),g+=A.length)}if((0===l||a._offset>=a._chunkSize)&&(o=a._chunkSize,a._offset=0,a._buffer=n.allocUnsafe(a._chunkSize)),0===l){if(s+=i-u,i=u,!c)return!0;var M=a._handle.write(e,t,s,i,a._buffer,a._offset,a._chunkSize);return M.callback=w,void(M.buffer=t)}if(!c)return!1;r()}}p.buffer=t,p.callback=w},a.inherits(m,D),a.inherits(E,D),a.inherits(y,D),a.inherits(b,D),a.inherits(I,D),a.inherits(v,D),a.inherits(C,D)},7295:(t,e,r)=>{var i=r(8764).Buffer;t.exports=function(t,e){for(var r=Math.min(t.length,e.length),n=new i(r),o=0;o{"use strict";const i=r(9742),n=r(645),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=h,e.SlowBuffer=function(t){return+t!=t&&(t=0),h.alloc(+t)},e.INSPECT_MAX_BYTES=50;const s=2147483647;function a(t){if(t>s)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,h.prototype),e}function h(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return c(t)}return u(t,e,r)}function u(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!h.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|A(t,e);let i=a(r);const n=i.write(t,e);return n!==r&&(i=i.slice(0,n)),i}(t,e);if(ArrayBuffer.isView(t))return function(t){if(X(t,Uint8Array)){const e=new Uint8Array(t);return d(e.buffer,e.byteOffset,e.byteLength)}return f(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(X(t,ArrayBuffer)||t&&X(t.buffer,ArrayBuffer))return d(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(X(t,SharedArrayBuffer)||t&&X(t.buffer,SharedArrayBuffer)))return d(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const i=t.valueOf&&t.valueOf();if(null!=i&&i!==t)return h.from(i,e,r);const n=function(t){if(h.isBuffer(t)){const e=0|g(t.length),r=a(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||P(t.length)?a(0):f(t):"Buffer"===t.type&&Array.isArray(t.data)?f(t.data):void 0}(t);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return h.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function l(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function c(t){return l(t),a(t<0?0:0|g(t))}function f(t){const e=t.length<0?0:0|g(t.length),r=a(e);for(let i=0;i=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|t}function A(t,e){if(h.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||X(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;let n=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return _(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return W(t).length;default:if(n)return i?-1:_(t).length;e=(""+e).toLowerCase(),n=!0}}function M(t,e,r){let i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return R(this,e,r);case"utf8":case"utf-8":return C(this,e,r);case"ascii":return D(this,e,r);case"latin1":case"binary":return N(this,e,r);case"base64":return v(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return G(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function p(t,e,r){const i=t[e];t[e]=t[r],t[r]=i}function w(t,e,r,i,n){if(0===t.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),P(r=+r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof e&&(e=h.from(e,i)),h.isBuffer(e))return 0===e.length?-1:B(t,e,r,i,n);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):B(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function B(t,e,r,i,n){let o,s=1,a=t.length,h=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;s=2,a/=2,h/=2,r/=2}function u(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(n){let i=-1;for(o=r;oa&&(r=a-h),o=r;o>=0;o--){let r=!0;for(let i=0;in&&(i=n):i=n;const o=e.length;let s;for(i>o/2&&(i=o/2),s=0;s>8,n=r%256,o.push(n),o.push(i);return o}(e,t.length-r),t,r,i)}function v(t,e,r){return 0===e&&r===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,r))}function C(t,e,r){r=Math.min(t.length,r);const i=[];let n=e;for(;n239?4:e>223?3:e>191?2:1;if(n+s<=r){let r,i,a,h;switch(s){case 1:e<128&&(o=e);break;case 2:r=t[n+1],128==(192&r)&&(h=(31&e)<<6|63&r,h>127&&(o=h));break;case 3:r=t[n+1],i=t[n+2],128==(192&r)&&128==(192&i)&&(h=(15&e)<<12|(63&r)<<6|63&i,h>2047&&(h<55296||h>57343)&&(o=h));break;case 4:r=t[n+1],i=t[n+2],a=t[n+3],128==(192&r)&&128==(192&i)&&128==(192&a)&&(h=(15&e)<<18|(63&r)<<12|(63&i)<<6|63&a,h>65535&&h<1114112&&(o=h))}}null===o?(o=65533,s=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|1023&o),i.push(o),n+=s}return function(t){const e=t.length;if(e<=Q)return String.fromCharCode.apply(String,t);let r="",i=0;for(;ii.length?(h.isBuffer(e)||(e=h.from(e)),e.copy(i,n)):Uint8Array.prototype.set.call(i,e,n);else{if(!h.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(i,n)}n+=e.length}return i},h.byteLength=A,h.prototype._isBuffer=!0,h.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},o&&(h.prototype[o]=h.prototype.inspect),h.prototype.compare=function(t,e,r,i,n){if(X(t,Uint8Array)&&(t=h.from(t,t.offset,t.byteLength)),!h.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),e<0||r>t.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&e>=r)return 0;if(i>=n)return-1;if(e>=r)return 1;if(this===t)return 0;let o=(n>>>=0)-(i>>>=0),s=(r>>>=0)-(e>>>=0);const a=Math.min(o,s),u=this.slice(i,n),l=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i="utf8")):(i=r,r=void 0)}const n=this.length-e;if((void 0===r||r>n)&&(r=n),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return m(this,t,e,r);case"utf8":case"utf-8":return E(this,t,e,r);case"ascii":case"latin1":case"binary":return y(this,t,e,r);case"base64":return b(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const Q=4096;function D(t,e,r){let i="";r=Math.min(t.length,r);for(let n=e;ni)&&(r=i);let n="";for(let i=e;ir)throw new RangeError("Trying to access beyond buffer length")}function V(t,e,r,i,n,o){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}function S(t,e,r,i,n){x(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,r}function T(t,e,r,i,n){x(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=s,s>>=8,t[r+2]=s,s>>=8,t[r+1]=s,s>>=8,t[r]=s,r+8}function Y(t,e,r,i,n,o){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(t,e,r,i,o){return e=+e,r>>>=0,o||Y(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function F(t,e,r,i,o){return e=+e,r>>>=0,o||Y(t,0,r,8),n.write(t,e,r,i,52,8),r+8}h.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||U(t,e,this.length);let i=this[t],n=1,o=0;for(;++o>>=0,e>>>=0,r||U(t,e,this.length);let i=this[t+--e],n=1;for(;e>0&&(n*=256);)i+=this[t+--e]*n;return i},h.prototype.readUint8=h.prototype.readUInt8=function(t,e){return t>>>=0,e||U(t,1,this.length),this[t]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(t,e){return t>>>=0,e||U(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(t,e){return t>>>=0,e||U(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(t,e){return t>>>=0,e||U(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(t,e){return t>>>=0,e||U(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readBigUInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,n=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(i)+(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=e*2**24+65536*this[++t]+256*this[++t]+this[++t],n=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(i)<>>=0,e>>>=0,r||U(t,e,this.length);let i=this[t],n=1,o=0;for(;++o=n&&(i-=Math.pow(2,8*e)),i},h.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||U(t,e,this.length);let i=e,n=1,o=this[t+--i];for(;i>0&&(n*=256);)o+=this[t+--i]*n;return n*=128,o>=n&&(o-=Math.pow(2,8*e)),o},h.prototype.readInt8=function(t,e){return t>>>=0,e||U(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){t>>>=0,e||U(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt16BE=function(t,e){t>>>=0,e||U(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt32LE=function(t,e){return t>>>=0,e||U(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return t>>>=0,e||U(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readBigInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(i)<>>=0,e||U(t,4,this.length),n.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return t>>>=0,e||U(t,4,this.length),n.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return t>>>=0,e||U(t,8,this.length),n.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return t>>>=0,e||U(t,8,this.length),n.read(this,t,!1,52,8)},h.prototype.writeUintLE=h.prototype.writeUIntLE=function(t,e,r,i){t=+t,e>>>=0,r>>>=0,i||V(this,t,e,r,Math.pow(2,8*r)-1,0);let n=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,i||V(this,t,e,r,Math.pow(2,8*r)-1,0);let n=r-1,o=1;for(this[e+n]=255&t;--n>=0&&(o*=256);)this[e+n]=t/o&255;return e+r},h.prototype.writeUint8=h.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,1,255,0),this[e]=255&t,e+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigUInt64LE=q((function(t,e=0){return S(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeBigUInt64BE=q((function(t,e=0){return T(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeIntLE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);V(this,t,e,r,i-1,-i)}let n=0,o=1,s=0;for(this[e]=255&t;++n>0)-s&255;return e+r},h.prototype.writeIntBE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);V(this,t,e,r,i-1,-i)}let n=r-1,o=1,s=0;for(this[e+n]=255&t;--n>=0&&(o*=256);)t<0&&0===s&&0!==this[e+n+1]&&(s=1),this[e+n]=(t/o>>0)-s&255;return e+r},h.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},h.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigInt64LE=q((function(t,e=0){return S(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeBigInt64BE=q((function(t,e=0){return T(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeFloatLE=function(t,e,r){return k(this,t,e,!0,r)},h.prototype.writeFloatBE=function(t,e,r){return k(this,t,e,!1,r)},h.prototype.writeDoubleLE=function(t,e,r){return F(this,t,e,!0,r)},h.prototype.writeDoubleBE=function(t,e,r){return F(this,t,e,!1,r)},h.prototype.copy=function(t,e,r,i){if(!h.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(n=e;n=i+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function x(t,e,r,i,n,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${i} and < 2${i} ** ${8*(o+1)}${i}`:`>= -(2${i} ** ${8*(o+1)-1}${i}) and < 2 ** ${8*(o+1)-1}${i}`:`>= ${e}${i} and <= ${r}${i}`,new L.ERR_OUT_OF_RANGE("value",n,t)}!function(t,e,r){z(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||O(e,t.length-(r+1))}(i,n,o)}function z(t,e){if("number"!=typeof t)throw new L.ERR_INVALID_ARG_TYPE(e,"number",t)}function O(t,e,r){if(Math.floor(t)!==t)throw z(t,r),new L.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new L.ERR_BUFFER_OUT_OF_BOUNDS;throw new L.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}j("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),j("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),j("ERR_OUT_OF_RANGE",(function(t,e,r){let i=`The value of "${t}" is out of range.`,n=r;return Number.isInteger(r)&&Math.abs(r)>2**32?n=Z(String(r)):"bigint"==typeof r&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=Z(n)),n+="n"),i+=` It must be ${e}. Received ${n}`,i}),RangeError);const H=/[^+/0-9A-Za-z-_]/g;function _(t,e){let r;e=e||1/0;const i=t.length;let n=null;const o=[];for(let s=0;s55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===i){(e-=3)>-1&&o.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(e-=3)>-1&&o.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function W(t){return i.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(H,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function J(t,e,r,i){let n;for(n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}function X(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function P(t){return t!=t}const K=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const i=16*r;for(let n=0;n<16;++n)e[i+n]=t[r]+t[n]}return e}();function q(t){return"undefined"==typeof BigInt?$:t}function $(){throw new Error("BigInt not supported")}},1924:(t,e,r)=>{"use strict";var i=r(210),n=r(5559),o=n(i("String.prototype.indexOf"));t.exports=function(t,e){var r=i(t,!!e);return"function"==typeof r&&o(t,".prototype.")>-1?n(r):r}},5559:(t,e,r)=>{"use strict";var i=r(8612),n=r(210),o=n("%Function.prototype.apply%"),s=n("%Function.prototype.call%"),a=n("%Reflect.apply%",!0)||i.call(s,o),h=n("%Object.getOwnPropertyDescriptor%",!0),u=n("%Object.defineProperty%",!0),l=n("%Math.max%");if(u)try{u({},"a",{value:1})}catch(t){u=null}t.exports=function(t){var e=a(i,s,arguments);if(h&&u){var r=h(e,"length");r.configurable&&u(e,"length",{value:1+l(0,t.length-(arguments.length-1))})}return e};var c=function(){return a(i,o,arguments)};u?u(t.exports,"apply",{value:c}):t.exports.apply=c},5581:function(t,e,r){var i,n;t.exports=(i=function(){try{return r(4431)}catch(t){}}(),n=r(9539),(()=>{var t={742:(t,e)=>{"use strict";e.byteLength=function(t){var e=h(t),r=e[0],i=e[1];return 3*(r+i)/4-i},e.toByteArray=function(t){var e,r,o=h(t),s=o[0],a=o[1],u=new n(function(t,e,r){return 3*(e+r)/4-r}(0,s,a)),l=0,c=a>0?s-4:s;for(r=0;r>16&255,u[l++]=e>>8&255,u[l++]=255&e;return 2===a&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,u[l++]=255&e),1===a&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,u[l++]=e>>8&255,u[l++]=255&e),u},e.fromByteArray=function(t){for(var e,i=t.length,n=i%3,o=[],s=16383,a=0,h=i-n;ah?h:a+s));return 1===n?(e=t[i-1],o.push(r[e>>2]+r[e<<4&63]+"==")):2===n&&(e=(t[i-2]<<8)+t[i-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),o.join("")};for(var r=[],i=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,a=o.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,i){for(var n,o,s=[],a=e;a>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},764:(t,e,r)=>{"use strict";const i=r(742),n=r(645),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=h,e.SlowBuffer=function(t){return+t!=t&&(t=0),h.alloc(+t)},e.INSPECT_MAX_BYTES=50;const s=2147483647;function a(t){if(t>s)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,h.prototype),e}function h(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return c(t)}return u(t,e,r)}function u(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!h.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|A(t,e);let i=a(r);const n=i.write(t,e);return n!==r&&(i=i.slice(0,n)),i}(t,e);if(ArrayBuffer.isView(t))return function(t){if(X(t,Uint8Array)){const e=new Uint8Array(t);return d(e.buffer,e.byteOffset,e.byteLength)}return f(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(X(t,ArrayBuffer)||t&&X(t.buffer,ArrayBuffer))return d(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(X(t,SharedArrayBuffer)||t&&X(t.buffer,SharedArrayBuffer)))return d(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const i=t.valueOf&&t.valueOf();if(null!=i&&i!==t)return h.from(i,e,r);const n=function(t){if(h.isBuffer(t)){const e=0|g(t.length),r=a(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||P(t.length)?a(0):f(t):"Buffer"===t.type&&Array.isArray(t.data)?f(t.data):void 0}(t);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return h.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function l(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function c(t){return l(t),a(t<0?0:0|g(t))}function f(t){const e=t.length<0?0:0|g(t.length),r=a(e);for(let i=0;i=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|t}function A(t,e){if(h.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||X(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;let n=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return _(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return W(t).length;default:if(n)return i?-1:_(t).length;e=(""+e).toLowerCase(),n=!0}}function M(t,e,r){let i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return R(this,e,r);case"utf8":case"utf-8":return C(this,e,r);case"ascii":return D(this,e,r);case"latin1":case"binary":return N(this,e,r);case"base64":return v(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return G(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function p(t,e,r){const i=t[e];t[e]=t[r],t[r]=i}function w(t,e,r,i,n){if(0===t.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),P(r=+r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof e&&(e=h.from(e,i)),h.isBuffer(e))return 0===e.length?-1:B(t,e,r,i,n);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):B(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function B(t,e,r,i,n){let o,s=1,a=t.length,h=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;s=2,a/=2,h/=2,r/=2}function u(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(n){let i=-1;for(o=r;oa&&(r=a-h),o=r;o>=0;o--){let r=!0;for(let i=0;in&&(i=n):i=n;const o=e.length;let s;for(i>o/2&&(i=o/2),s=0;s>8,n=r%256,o.push(n),o.push(i);return o}(e,t.length-r),t,r,i)}function v(t,e,r){return 0===e&&r===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,r))}function C(t,e,r){r=Math.min(t.length,r);const i=[];let n=e;for(;n239?4:e>223?3:e>191?2:1;if(n+s<=r){let r,i,a,h;switch(s){case 1:e<128&&(o=e);break;case 2:r=t[n+1],128==(192&r)&&(h=(31&e)<<6|63&r,h>127&&(o=h));break;case 3:r=t[n+1],i=t[n+2],128==(192&r)&&128==(192&i)&&(h=(15&e)<<12|(63&r)<<6|63&i,h>2047&&(h<55296||h>57343)&&(o=h));break;case 4:r=t[n+1],i=t[n+2],a=t[n+3],128==(192&r)&&128==(192&i)&&128==(192&a)&&(h=(15&e)<<18|(63&r)<<12|(63&i)<<6|63&a,h>65535&&h<1114112&&(o=h))}}null===o?(o=65533,s=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|1023&o),i.push(o),n+=s}return function(t){const e=t.length;if(e<=Q)return String.fromCharCode.apply(String,t);let r="",i=0;for(;ii.length?(h.isBuffer(e)||(e=h.from(e)),e.copy(i,n)):Uint8Array.prototype.set.call(i,e,n);else{if(!h.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(i,n)}n+=e.length}return i},h.byteLength=A,h.prototype._isBuffer=!0,h.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},o&&(h.prototype[o]=h.prototype.inspect),h.prototype.compare=function(t,e,r,i,n){if(X(t,Uint8Array)&&(t=h.from(t,t.offset,t.byteLength)),!h.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),e<0||r>t.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&e>=r)return 0;if(i>=n)return-1;if(e>=r)return 1;if(this===t)return 0;let o=(n>>>=0)-(i>>>=0),s=(r>>>=0)-(e>>>=0);const a=Math.min(o,s),u=this.slice(i,n),l=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i="utf8")):(i=r,r=void 0)}const n=this.length-e;if((void 0===r||r>n)&&(r=n),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return m(this,t,e,r);case"utf8":case"utf-8":return E(this,t,e,r);case"ascii":case"latin1":case"binary":return y(this,t,e,r);case"base64":return b(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const Q=4096;function D(t,e,r){let i="";r=Math.min(t.length,r);for(let n=e;ni)&&(r=i);let n="";for(let i=e;ir)throw new RangeError("Trying to access beyond buffer length")}function V(t,e,r,i,n,o){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}function S(t,e,r,i,n){x(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,r}function T(t,e,r,i,n){x(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=s,s>>=8,t[r+2]=s,s>>=8,t[r+1]=s,s>>=8,t[r]=s,r+8}function Y(t,e,r,i,n,o){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(t,e,r,i,o){return e=+e,r>>>=0,o||Y(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function F(t,e,r,i,o){return e=+e,r>>>=0,o||Y(t,0,r,8),n.write(t,e,r,i,52,8),r+8}h.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||U(t,e,this.length);let i=this[t],n=1,o=0;for(;++o>>=0,e>>>=0,r||U(t,e,this.length);let i=this[t+--e],n=1;for(;e>0&&(n*=256);)i+=this[t+--e]*n;return i},h.prototype.readUint8=h.prototype.readUInt8=function(t,e){return t>>>=0,e||U(t,1,this.length),this[t]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(t,e){return t>>>=0,e||U(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(t,e){return t>>>=0,e||U(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(t,e){return t>>>=0,e||U(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(t,e){return t>>>=0,e||U(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readBigUInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,n=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(i)+(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=e*2**24+65536*this[++t]+256*this[++t]+this[++t],n=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(i)<>>=0,e>>>=0,r||U(t,e,this.length);let i=this[t],n=1,o=0;for(;++o=n&&(i-=Math.pow(2,8*e)),i},h.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||U(t,e,this.length);let i=e,n=1,o=this[t+--i];for(;i>0&&(n*=256);)o+=this[t+--i]*n;return n*=128,o>=n&&(o-=Math.pow(2,8*e)),o},h.prototype.readInt8=function(t,e){return t>>>=0,e||U(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){t>>>=0,e||U(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt16BE=function(t,e){t>>>=0,e||U(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt32LE=function(t,e){return t>>>=0,e||U(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return t>>>=0,e||U(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readBigInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||O(t,this.length-8);const i=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(i)<>>=0,e||U(t,4,this.length),n.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return t>>>=0,e||U(t,4,this.length),n.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return t>>>=0,e||U(t,8,this.length),n.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return t>>>=0,e||U(t,8,this.length),n.read(this,t,!1,52,8)},h.prototype.writeUintLE=h.prototype.writeUIntLE=function(t,e,r,i){t=+t,e>>>=0,r>>>=0,i||V(this,t,e,r,Math.pow(2,8*r)-1,0);let n=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,i||V(this,t,e,r,Math.pow(2,8*r)-1,0);let n=r-1,o=1;for(this[e+n]=255&t;--n>=0&&(o*=256);)this[e+n]=t/o&255;return e+r},h.prototype.writeUint8=h.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,1,255,0),this[e]=255&t,e+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigUInt64LE=q((function(t,e=0){return S(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeBigUInt64BE=q((function(t,e=0){return T(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeIntLE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);V(this,t,e,r,i-1,-i)}let n=0,o=1,s=0;for(this[e]=255&t;++n>0)-s&255;return e+r},h.prototype.writeIntBE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);V(this,t,e,r,i-1,-i)}let n=r-1,o=1,s=0;for(this[e+n]=255&t;--n>=0&&(o*=256);)t<0&&0===s&&0!==this[e+n+1]&&(s=1),this[e+n]=(t/o>>0)-s&255;return e+r},h.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},h.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||V(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigInt64LE=q((function(t,e=0){return S(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeBigInt64BE=q((function(t,e=0){return T(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeFloatLE=function(t,e,r){return k(this,t,e,!0,r)},h.prototype.writeFloatBE=function(t,e,r){return k(this,t,e,!1,r)},h.prototype.writeDoubleLE=function(t,e,r){return F(this,t,e,!0,r)},h.prototype.writeDoubleBE=function(t,e,r){return F(this,t,e,!1,r)},h.prototype.copy=function(t,e,r,i){if(!h.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(n=e;n=i+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function x(t,e,r,i,n,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${i} and < 2${i} ** ${8*(o+1)}${i}`:`>= -(2${i} ** ${8*(o+1)-1}${i}) and < 2 ** ${8*(o+1)-1}${i}`:`>= ${e}${i} and <= ${r}${i}`,new L.ERR_OUT_OF_RANGE("value",n,t)}!function(t,e,r){z(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||O(e,t.length-(r+1))}(i,n,o)}function z(t,e){if("number"!=typeof t)throw new L.ERR_INVALID_ARG_TYPE(e,"number",t)}function O(t,e,r){if(Math.floor(t)!==t)throw z(t,r),new L.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new L.ERR_BUFFER_OUT_OF_BOUNDS;throw new L.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}j("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),j("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),j("ERR_OUT_OF_RANGE",(function(t,e,r){let i=`The value of "${t}" is out of range.`,n=r;return Number.isInteger(r)&&Math.abs(r)>2**32?n=Z(String(r)):"bigint"==typeof r&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=Z(n)),n+="n"),i+=` It must be ${e}. Received ${n}`,i}),RangeError);const H=/[^+/0-9A-Za-z-_]/g;function _(t,e){let r;e=e||1/0;const i=t.length;let n=null;const o=[];for(let s=0;s55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===i){(e-=3)>-1&&o.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(e-=3)>-1&&o.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function W(t){return i.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(H,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function J(t,e,r,i){let n;for(n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}function X(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function P(t){return t!=t}const K=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const i=16*r;for(let n=0;n<16;++n)e[i+n]=t[r]+t[n]}return e}();function q(t){return"undefined"==typeof BigInt?$:t}function $(){throw new Error("BigInt not supported")}},141:(t,e,r)=>{"use strict";e.BigNumber=r(66).BigNumber,e.Commented=r(20),e.Diagnose=r(694),e.Decoder=r(774),e.Encoder=r(666),e.Simple=r(32),e.Tagged=r(785),e.Map=r(70),e.UI=e.Commented.comment,e.fI=e.Decoder.decodeAll,e.h8=e.Decoder.decodeFirst,e.cc=e.Decoder.decodeAllSync,e.$u=e.Decoder.decodeFirstSync,e.M=e.Diagnose.diagnose,e.cv=e.Encoder.encode,e.N2=e.Encoder.encodeCanonical,e.TG=e.Encoder.encodeOne,e.WR=e.Encoder.encodeAsync,e.Jx=e.Decoder.decodeFirstSync,e.ww={decode:e.Decoder.decodeFirstSync,encode:e.Encoder.encode,buffer:!0,name:"cbor"},e.vc=!0},20:(t,e,r)=>{"use strict";const i=r(830),n=r(873),o=r(774),s=r(202),{MT:a,NUMBYTES:h,SYMS:u}=r(66),{Buffer:l}=r(764);function c(t){return t>1?"s":""}class f extends i.Transform{constructor(t={}){const{depth:e=1,max_depth:r=10,no_summary:i=!1,tags:n={},bigint:a,preferWeb:h,encoding:u,...l}=t;super({...l,readableObjectMode:!1,writableObjectMode:!1}),this.depth=e,this.max_depth=r,this.all=new s,n[24]||(n[24]=this._tag_24.bind(this)),this.parser=new o({tags:n,max_depth:r,bigint:a,preferWeb:h,encoding:u}),this.parser.on("value",this._on_value.bind(this)),this.parser.on("start",this._on_start.bind(this)),this.parser.on("start-string",this._on_start_string.bind(this)),this.parser.on("stop",this._on_stop.bind(this)),this.parser.on("more-bytes",this._on_more.bind(this)),this.parser.on("error",this._on_error.bind(this)),i||this.parser.on("data",this._on_data.bind(this)),this.parser.bs.on("read",this._on_read.bind(this))}_tag_24(t){const e=new f({depth:this.depth+1,no_summary:!0});e.on("data",(t=>this.push(t))),e.on("error",(t=>this.emit("error",t))),e.end(t)}_transform(t,e,r){this.parser.write(t,e,r)}_flush(t){return this.parser._flush(t)}static comment(t,e={},r=null){if(null==t)throw new Error("input required");({options:e,cb:r}=function(t,e){switch(typeof t){case"function":return{options:{},cb:t};case"string":return{options:{encoding:t},cb:e};case"number":return{options:{max_depth:t},cb:e};case"object":return{options:t||{},cb:e};default:throw new TypeError("Unknown option type")}}(e,r));const i=new s,{encoding:o="hex",...a}=e,h=new f(a);let u=null;return"function"==typeof r?(h.on("end",(()=>{r(null,i.toString("utf8"))})),h.on("error",r)):u=new Promise(((t,e)=>{h.on("end",(()=>{t(i.toString("utf8"))})),h.on("error",e)})),h.pipe(i),n.guessEncoding(t,o).pipe(h),u}_on_error(t){this.push("ERROR: "),this.push(t.toString()),this.push("\n")}_on_read(t){this.all.write(t);const e=t.toString("hex");this.push(new Array(this.depth+1).join(" ")),this.push(e);let r=2*(this.max_depth-this.depth)-e.length;return r<1&&(r=1),this.push(new Array(r+1).join(" ")),this.push("-- ")}_on_more(t,e,r,i){let n="";switch(this.depth++,t){case a.POS_INT:n="Positive number,";break;case a.NEG_INT:n="Negative number,";break;case a.ARRAY:n="Array, length";break;case a.MAP:n="Map, count";break;case a.BYTE_STRING:n="Bytes, length";break;case a.UTF8_STRING:n="String, length";break;case a.SIMPLE_FLOAT:n=1===e?"Simple value,":"Float,"}return this.push(n+" next "+e+" byte"+c(e)+"\n")}_on_start_string(t,e,r,i){let n="";switch(this.depth++,t){case a.BYTE_STRING:n="Bytes, length: "+e;break;case a.UTF8_STRING:n="String, length: "+e.toString()}return this.push(n+"\n")}_on_start(t,e,r,i){switch(this.depth++,r){case a.ARRAY:this.push(`[${i}], `);break;case a.MAP:i%2?this.push(`{Val:${Math.floor(i/2)}}, `):this.push(`{Key:${Math.floor(i/2)}}, `)}switch(t){case a.TAG:this.push(`Tag #${e}`),24===e&&this.push(" Encoded CBOR data item");break;case a.ARRAY:e===u.STREAM?this.push("Array (streaming)"):this.push(`Array, ${e} item${c(e)}`);break;case a.MAP:e===u.STREAM?this.push("Map (streaming)"):this.push(`Map, ${e} pair${c(e)}`);break;case a.BYTE_STRING:this.push("Bytes (streaming)");break;case a.UTF8_STRING:this.push("String (streaming)")}return this.push("\n")}_on_stop(t){return this.depth--}_on_value(t,e,r,i){if(t!==u.BREAK)switch(e){case a.ARRAY:this.push(`[${r}], `);break;case a.MAP:r%2?this.push(`{Val:${Math.floor(r/2)}}, `):this.push(`{Key:${Math.floor(r/2)}}, `)}const o=n.cborValueToString(t,-1/0);switch("string"==typeof t||l.isBuffer(t)?(t.length>0&&(this.push(o),this.push("\n")),this.depth--):(this.push(o),this.push("\n")),i){case h.ONE:case h.TWO:case h.FOUR:case h.EIGHT:this.depth--}}_on_data(){return this.push("0x"),this.push(this.all.read().toString("hex")),this.push("\n")}}t.exports=f},66:(t,e,r)=>{"use strict";let i=null;try{i=r(937).BigNumber}catch(t){}if(e.BigNumber=i,e.MT={POS_INT:0,NEG_INT:1,BYTE_STRING:2,UTF8_STRING:3,ARRAY:4,MAP:5,TAG:6,SIMPLE_FLOAT:7},e.TAG={DATE_STRING:0,DATE_EPOCH:1,POS_BIGINT:2,NEG_BIGINT:3,DECIMAL_FRAC:4,BIGFLOAT:5,BASE64URL_EXPECTED:21,BASE64_EXPECTED:22,BASE16_EXPECTED:23,CBOR:24,URI:32,BASE64URL:33,BASE64:34,REGEXP:35,MIME:36,SET:258},e.NUMBYTES={ZERO:0,ONE:24,TWO:25,FOUR:26,EIGHT:27,INDEFINITE:31},e.SIMPLE={FALSE:20,TRUE:21,NULL:22,UNDEFINED:23},e.SYMS={NULL:Symbol.for("github.com/hildjj/node-cbor/null"),UNDEFINED:Symbol.for("github.com/hildjj/node-cbor/undef"),PARENT:Symbol.for("github.com/hildjj/node-cbor/parent"),BREAK:Symbol.for("github.com/hildjj/node-cbor/break"),STREAM:Symbol.for("github.com/hildjj/node-cbor/stream")},e.SHIFT32=4294967296,e.BI={MINUS_ONE:BigInt(-1),NEG_MAX:BigInt(-1)-BigInt(Number.MAX_SAFE_INTEGER),MAXINT32:BigInt("0xffffffff"),MAXINT64:BigInt("0xffffffffffffffff"),SHIFT32:BigInt(e.SHIFT32)},e.BigNumber){const t=new e.BigNumber(-1);e.BN={MINUS_ONE:t,NEG_MAX:t.minus(new e.BigNumber(Number.MAX_SAFE_INTEGER.toString(16),16)),TWO:new e.BigNumber(2),MAXINT:new e.BigNumber("0x20000000000000"),MAXINT32:new e.BigNumber(4294967295),MAXINT64:new e.BigNumber("0xffffffffffffffff"),SHIFT32:new e.BigNumber(e.SHIFT32)}}},774:(t,e,r)=>{"use strict";const i=r(71),n=r(785),o=r(32),s=r(873),a=r(202),h=r(66),{MT:u,NUMBYTES:l,SYMS:c,BI:f}=h,{Buffer:d}=r(764),g=Symbol("count"),A=Symbol("major type"),M=Symbol("error"),p=Symbol("not found");function w(t,e,r){const i=[];return i[g]=r,i[c.PARENT]=t,i[A]=e,i}function B(t,e){const r=new a;return r[g]=-1,r[c.PARENT]=t,r[A]=e,r}function m(t){return s.bufferToBigInt(t)}function E(t){return f.MINUS_ONE-s.bufferToBigInt(t)}class y extends Error{constructor(t,e){super(`Unexpected data: 0x${t.toString(16)}`),this.name="UnexpectedDataError",this.byte=t,this.value=e}}function b(t,e){switch(typeof t){case"function":return{options:{},cb:t};case"string":return{options:{encoding:t},cb:e};case"object":return{options:t||{},cb:e};default:throw new TypeError("Unknown option type")}}class I extends i{constructor(t={}){const{tags:e={},max_depth:r=-1,bigint:i=!0,preferWeb:n=!1,required:o=!1,encoding:s="hex",extendedResults:h=!1,...u}=t;super({defaultEncoding:s,...u}),this.running=!0,this.max_depth=r,this.tags=e,this.preferWeb=n,this.extendedResults=h,this.bigint=i,this.required=o,h&&(this.bs.on("read",this._onRead.bind(this)),this.valueBytes=new a),i&&(null==this.tags[2]&&(this.tags[2]=m),null==this.tags[3]&&(this.tags[3]=E))}static nullcheck(t){switch(t){case c.NULL:return null;case c.UNDEFINED:return;case p:throw new Error("Value not found");default:return t}}static decodeFirstSync(t,e={}){if(null==t)throw new TypeError("input required");({options:e}=b(e));const{encoding:r="hex",...i}=e,n=new I(i),o=s.guessEncoding(t,r),a=n._parse();let h=a.next();for(;!h.done;){const t=o.read(h.value);if(null==t||t.length!==h.value)throw new Error("Insufficient data");n.extendedResults&&n.valueBytes.write(t),h=a.next(t)}let u=null;if(n.extendedResults)u=h.value,u.unused=o.read();else if(u=I.nullcheck(h.value),o.length>0){const t=o.read(1);throw o.unshift(t),new y(t[0],u)}return u}static decodeAllSync(t,e={}){if(null==t)throw new TypeError("input required");({options:e}=b(e));const{encoding:r="hex",...i}=e,n=new I(i),o=s.guessEncoding(t,r),a=[];for(;o.length>0;){const t=n._parse();let e=t.next();for(;!e.done;){const r=o.read(e.value);if(null==r||r.length!==e.value)throw new Error("Insufficient data");n.extendedResults&&n.valueBytes.write(r),e=t.next(r)}a.push(I.nullcheck(e.value))}return a}static decodeFirst(t,e={},r=null){if(null==t)throw new TypeError("input required");({options:e,cb:r}=b(e,r));const{encoding:i="hex",required:n=!1,...o}=e,a=new I(o);let h=p;const u=s.guessEncoding(t,i),l=new Promise(((t,e)=>{a.on("data",(t=>{h=I.nullcheck(t),a.close()})),a.once("error",(r=>a.extendedResults&&r instanceof y?(h.unused=a.bs.slice(),t(h)):(h!==p&&(r.value=h),h=M,a.close(),e(r)))),a.once("end",(()=>{switch(h){case p:return n?e(new Error("No CBOR found")):t(h);case M:return;default:return t(h)}}))}));return"function"==typeof r&&l.then((t=>r(null,t)),r),u.pipe(a),l}static decodeAll(t,e={},r=null){if(null==t)throw new TypeError("input required");({options:e,cb:r}=b(e,r));const{encoding:i="hex",...n}=e,o=new I(n),a=[];o.on("data",(t=>a.push(I.nullcheck(t))));const h=new Promise(((t,e)=>{o.on("error",e),o.on("end",(()=>t(a)))}));return"function"==typeof r&&h.then((t=>r(void 0,t)),(t=>r(t,void 0))),s.guessEncoding(t,i).pipe(o),h}close(){this.running=!1,this.__fresh=!0}_onRead(t){this.valueBytes.write(t)}*_parse(){let t=null,e=0,r=null;for(;;){if(this.max_depth>=0&&e>this.max_depth)throw new Error("Maximum depth "+this.max_depth+" exceeded");const[i]=yield 1;if(!this.running)throw this.bs.unshift(d.from([i])),new y(i);const M=i>>5,p=31&i,m=null!=t?t[A]:void 0,E=null!=t?t.length:void 0;switch(p){case l.ONE:this.emit("more-bytes",M,1,m,E),[r]=yield 1;break;case l.TWO:case l.FOUR:case l.EIGHT:{const t=1<{"use strict";const i=r(830),n=r(774),o=r(873),s=r(202),{MT:a,SYMS:h}=r(66);class u extends i.Transform{constructor(t={}){const{separator:e="\n",stream_errors:r=!1,tags:i,max_depth:o,bigint:s,preferWeb:a,encoding:h,...u}=t;super({...u,readableObjectMode:!1,writableObjectMode:!1}),this.float_bytes=-1,this.separator=e,this.stream_errors=r,this.parser=new n({tags:i,max_depth:o,bigint:s,preferWeb:a,encoding:h}),this.parser.on("more-bytes",this._on_more.bind(this)),this.parser.on("value",this._on_value.bind(this)),this.parser.on("start",this._on_start.bind(this)),this.parser.on("stop",this._on_stop.bind(this)),this.parser.on("data",this._on_data.bind(this)),this.parser.on("error",this._on_error.bind(this))}_transform(t,e,r){return this.parser.write(t,e,r)}_flush(t){return this.parser._flush((e=>this.stream_errors?(e&&this._on_error(e),t()):t(e)))}static diagnose(t,e={},r=null){if(null==t)throw new Error("input required");({options:e,cb:r}=function(t,e){switch(typeof t){case"function":return{options:{},cb:t};case"string":return{options:{encoding:t},cb:e};case"object":return{options:t||{},cb:e};default:throw new TypeError("Unknown option type")}}(e,r));const{encoding:i="hex",...n}=e,a=new s,h=new u(n);let l=null;return"function"==typeof r?(h.on("end",(()=>r(null,a.toString("utf8")))),h.on("error",r)):l=new Promise(((t,e)=>{h.on("end",(()=>t(a.toString("utf8")))),h.on("error",e)})),h.pipe(a),o.guessEncoding(t,i).pipe(h),l}_on_error(t){return this.stream_errors?this.push(t.toString()):this.emit("error",t)}_on_more(t,e,r,i){t===a.SIMPLE_FLOAT&&(this.float_bytes={2:1,4:2,8:3}[e])}_fore(t,e){switch(t){case a.BYTE_STRING:case a.UTF8_STRING:case a.ARRAY:e>0&&this.push(", ");break;case a.MAP:e>0&&(e%2?this.push(": "):this.push(", "))}}_on_value(t,e,r){if(t===h.BREAK)return;this._fore(e,r);const i=this.float_bytes;this.float_bytes=-1,this.push(o.cborValueToString(t,i))}_on_start(t,e,r,i){switch(this._fore(r,i),t){case a.TAG:this.push(`${e}(`);break;case a.ARRAY:this.push("[");break;case a.MAP:this.push("{");break;case a.BYTE_STRING:case a.UTF8_STRING:this.push("(")}e===h.STREAM&&this.push("_ ")}_on_stop(t){switch(t){case a.TAG:this.push(")");break;case a.ARRAY:this.push("]");break;case a.MAP:this.push("}");break;case a.BYTE_STRING:case a.UTF8_STRING:this.push(")")}}_on_data(){this.push(this.separator)}}t.exports=u},666:(t,e,r)=>{"use strict";const i=r(830),n=r(202),o=r(873),s=r(66),{MT:a,NUMBYTES:h,SHIFT32:u,SIMPLE:l,SYMS:c,TAG:f,BI:d}=s,{Buffer:g}=r(764),A=a.SIMPLE_FLOAT<<5|h.TWO,M=a.SIMPLE_FLOAT<<5|h.FOUR,p=a.SIMPLE_FLOAT<<5|h.EIGHT,w=a.SIMPLE_FLOAT<<5|l.TRUE,B=a.SIMPLE_FLOAT<<5|l.FALSE,m=a.SIMPLE_FLOAT<<5|l.UNDEFINED,E=a.SIMPLE_FLOAT<<5|l.NULL,y=g.from([255]),b=g.from("f97e00","hex"),I=g.from("f9fc00","hex"),v=g.from("f97c00","hex"),C=g.from("f98000","hex");class Q extends i.Transform{constructor(t={}){const{canonical:e=!1,encodeUndefined:r,disallowUndefinedKeys:i=!1,dateType:o="number",collapseBigIntegers:a=!1,detectLoops:h=!1,omitUndefinedProperties:u=!1,genTypes:l=[],...c}=t;if(super({...c,readableObjectMode:!1,writableObjectMode:!0}),this.canonical=e,this.encodeUndefined=r,this.disallowUndefinedKeys=i,this.dateType=function(t){if(!t)return"number";switch(t.toLowerCase()){case"number":return"number";case"float":return"float";case"int":return"int";case"string":return"string"}throw new TypeError(`dateType invalid, got "${t}"`)}(o),this.collapseBigIntegers=!!this.canonical||a,this.detectLoops=h,"boolean"==typeof h)h&&(this.detectLoops=new WeakSet);else if(!(h instanceof WeakSet))throw new TypeError("detectLoops must be boolean or WeakSet");if(this.omitUndefinedProperties=u,this.semanticTypes={Array:this._pushArray,Date:this._pushDate,Buffer:this._pushBuffer,[g.name]:this._pushBuffer,Map:this._pushMap,NoFilter:this._pushNoFilter,[n.name]:this._pushNoFilter,RegExp:this._pushRegexp,Set:this._pushSet,ArrayBuffer:this._pushArrayBuffer,Uint8ClampedArray:this._pushTypedArray,Uint8Array:this._pushTypedArray,Uint16Array:this._pushTypedArray,Uint32Array:this._pushTypedArray,Int8Array:this._pushTypedArray,Int16Array:this._pushTypedArray,Int32Array:this._pushTypedArray,Float32Array:this._pushTypedArray,Float64Array:this._pushTypedArray,URL:this._pushURL,Boolean:this._pushBoxed,Number:this._pushBoxed,String:this._pushBoxed},s.BigNumber&&(this.semanticTypes[s.BigNumber.name]=this._pushBigNumber),"undefined"!=typeof BigUint64Array&&(this.semanticTypes[BigUint64Array.name]=this._pushTypedArray),"undefined"!=typeof BigInt64Array&&(this.semanticTypes[BigInt64Array.name]=this._pushTypedArray),Array.isArray(l))for(let t=0,e=l.length;tvoid 0!==e))),r.indefinite){if(!t._pushUInt8(a.MAP<<5|h.INDEFINITE))return!1}else if(!t._pushInt(i.length,a.MAP))return!1;if(t.canonical){const e=new Q({genTypes:t.semanticTypes,canonical:t.canonical,detectLoops:!!t.detectLoops,dateType:t.dateType,disallowUndefinedKeys:t.disallowUndefinedKeys,collapseBigIntegers:t.collapseBigIntegers}),r=new n({highWaterMark:t.readableHighWaterMark});e.pipe(r),i.sort((([t],[i])=>{e.pushAny(t);const n=r.read();e.pushAny(i);const o=r.read();return n.compare(o)}));for(const[e,r]of i){if(t.disallowUndefinedKeys&&void 0===e)throw new Error("Invalid Map key: undefined");if(!t.pushAny(e)||!t.pushAny(r))return!1}}else for(const[e,r]of i){if(t.disallowUndefinedKeys&&void 0===e)throw new Error("Invalid Map key: undefined");if(!t.pushAny(e)||!t.pushAny(r))return!1}return!(r.indefinite&&!t.push(y))}_pushTypedArray(t,e){let r=64,i=e.BYTES_PER_ELEMENT;const{name:n}=e.constructor;return n.startsWith("Float")?(r|=16,i/=2):n.includes("U")||(r|=8),(n.includes("Clamped")||1!==i&&!o.isBigEndian())&&(r|=4),r|={1:0,2:1,4:2,8:3}[i],!!t._pushTag(r)&&t._pushBuffer(t,g.from(e.buffer,e.byteOffset,e.byteLength))}_pushArrayBuffer(t,e){return t._pushBuffer(t,g.from(e))}removeLoopDetectors(){return!!this.detectLoops&&(this.detectLoops=new WeakSet,!0)}_pushObject(t,e){if(!t)return this._pushNull(t);if(!(e={indefinite:!1,skipTypes:!1,...e}).indefinite&&this.detectLoops){if(this.detectLoops.has(t))throw new Error("Loop detected while CBOR encoding.\nCall removeLoopDetectors before resuming.");this.detectLoops.add(t)}if(!e.skipTypes){const e=t.encodeCBOR;if("function"==typeof e)return e.call(t,this);const r=this.semanticTypes[t.constructor.name];if(r)return r.call(t,this,t)}const r=Object.keys(t).filter((e=>{const r=typeof t[e];return"function"!==r&&(!this.omitUndefinedProperties||"undefined"!==r)})),i={};if(this.canonical&&r.sort(((t,e)=>{const r=i[t]||(i[t]=Q.encode(t)),n=i[e]||(i[e]=Q.encode(e));return r.compare(n)})),e.indefinite){if(!this._pushUInt8(a.MAP<<5|h.INDEFINITE))return!1}else if(!this._pushInt(r.length,a.MAP))return!1;let n=null;for(let e=0,o=r.length;e{const n=[],o=new Q(e);o.on("data",(t=>n.push(t))),o.on("error",i),o.on("finish",(()=>r(g.concat(n)))),o.pushAny(t),o.end()}))}}t.exports=Q},70:(t,e,r)=>{"use strict";const{Buffer:i}=r(764),n=r(666),o=r(774),{MT:s}=r(66);class a extends Map{constructor(t){super(t)}static _encode(t){return n.encodeCanonical(t).toString("base64")}static _decode(t){return o.decodeFirstSync(t,"base64")}get(t){return super.get(a._encode(t))}set(t,e){return super.set(a._encode(t),e)}delete(t){return super.delete(a._encode(t))}has(t){return super.has(a._encode(t))}*keys(){for(const t of super.keys())yield a._decode(t)}*entries(){for(const t of super.entries())yield[a._decode(t[0]),t[1]]}[Symbol.iterator](){return this.entries()}forEach(t,e){if("function"!=typeof t)throw new TypeError("Must be function");for(const e of super.entries())t.call(this,e[1],a._decode(e[0]),this)}encodeCBOR(t){if(!t._pushInt(this.size,s.MAP))return!1;if(t.canonical){const e=Array.from(super.entries()).map((t=>[i.from(t[0],"base64"),t[1]]));e.sort(((t,e)=>t[0].compare(e[0])));for(const r of e)if(!t.push(r[0])||!t.pushAny(r[1]))return!1}else for(const e of super.entries())if(!t.push(i.from(e[0],"base64"))||!t.pushAny(e[1]))return!1;return!0}}t.exports=a},32:(t,e,r)=>{"use strict";const{MT:i,SIMPLE:n,SYMS:o}=r(66);class s{constructor(t){if("number"!=typeof t)throw new Error("Invalid Simple type: "+typeof t);if(t<0||t>255||(0|t)!==t)throw new Error("value must be a small positive integer: "+t);this.value=t}toString(){return"simple("+this.value+")"}inspect(t,e){return"simple("+this.value+")"}encodeCBOR(t){return t._pushInt(this.value,i.SIMPLE_FLOAT)}static isSimple(t){return t instanceof s}static decode(t,e=!0,r=!1){switch(t){case n.FALSE:return!1;case n.TRUE:return!0;case n.NULL:return e?null:o.NULL;case n.UNDEFINED:if(e)return;return o.UNDEFINED;case-1:if(!e||!r)throw new Error("Invalid BREAK");return o.BREAK;default:return new s(t)}}}t.exports=s},785:(t,e,r)=>{"use strict";const i=r(66),n=r(873);function o(t,e){if(n.isBufferish(t))t.toJSON=e;else if(Array.isArray(t))for(const r of t)o(r,e);else if(t&&"object"==typeof t&&(!(t instanceof h)||t.tag<21||t.tag>23))for(const r of Object.values(t))o(r,e)}const s={64:Uint8Array,65:Uint16Array,66:Uint32Array,68:Uint8ClampedArray,69:Uint16Array,70:Uint32Array,72:Int8Array,73:Int16Array,74:Int32Array,77:Int16Array,78:Int32Array,81:Float32Array,82:Float64Array,85:Float32Array,86:Float64Array};"undefined"!=typeof BigUint64Array&&(s[67]=BigUint64Array,s[71]=BigUint64Array),"undefined"!=typeof BigInt64Array&&(s[75]=BigInt64Array,s[79]=BigInt64Array);const a=Symbol("INTERNAL_JSON");class h{constructor(t,e,r){if(this.tag=t,this.value=e,this.err=r,"number"!=typeof this.tag)throw new Error("Invalid tag type ("+typeof this.tag+")");if(this.tag<0||(0|this.tag)!==this.tag)throw new Error("Tag must be a positive integer: "+this.tag)}toJSON(){if(this[a])return this[a]();const t={tag:this.tag,value:this.value};return this.err&&(t.err=this.err),t}toString(){return`${this.tag}(${JSON.stringify(this.value)})`}encodeCBOR(t){return t._pushTag(this.tag),t.pushAny(this.value)}convert(t){let e=null!=t?t[this.tag]:void 0;if("function"!=typeof e&&(e=h["_tag_"+this.tag],"function"!=typeof e)){if(e=s[this.tag],"function"!=typeof e)return this;e=this._toTypedArray}try{return e.call(this,this.value)}catch(t){return t&&t.message&&t.message.length>0?this.err=t.message:this.err=t,this}}_toTypedArray(t){const{tag:e}=this,r=s[e];if(!r)throw new Error(`Invalid typed array tag: ${e}`);const i=2**(((16&e)>>4)+(3&e));return!(4&e)!==n.isBigEndian()&&i>1&&function(t,e,r,i){const n=new DataView(t),[o,s]={2:[n.getUint16,n.setUint16],4:[n.getUint32,n.setUint32],8:[n.getBigUint64,n.setBigUint64]}[e],a=r+i;for(let t=r;tn.base64url(t):o(t,(function(){return n.base64url(this)})),this}static _tag_22(t){return n.isBufferish(t)?this[a]=()=>n.base64(t):o(t,(function(){return n.base64(this)})),this}static _tag_23(t){return n.isBufferish(t)?this[a]=()=>t.toString("hex"):o(t,(function(){return this.toString("hex")})),this}static _tag_32(t){return new URL(t)}static _tag_33(t){if(!t.match(/^[a-zA-Z0-9_-]+$/))throw new Error("Invalid base64url characters");const e=t.length%4;if(1===e)throw new Error("Invalid base64url length");if(2===e){if(-1==="AQgw".indexOf(t[t.length-1]))throw new Error("Invalid base64 padding")}else if(3===e&&-1==="AEIMQUYcgkosw048".indexOf(t[t.length-1]))throw new Error("Invalid base64 padding");return this}static _tag_34(t){const e=t.match(/^[a-zA-Z0-9+/]+(={0,2})$/);if(!e)throw new Error("Invalid base64url characters");if(t.length%4!=0)throw new Error("Invalid base64url length");if("="===e[1]){if(-1==="AQgw".indexOf(t[t.length-2]))throw new Error("Invalid base64 padding")}else if("=="===e[1]&&-1==="AEIMQUYcgkosw048".indexOf(t[t.length-3]))throw new Error("Invalid base64 padding");return this}static _tag_35(t){return new RegExp(t)}static _tag_258(t){return new Set(t)}}h.INTERNAL_JSON=a,t.exports=h},873:(t,e,r)=>{"use strict";const{Buffer:i}=r(764),n=r(202),o=r(830),s=r(960),a=r(66),{NUMBYTES:h,SHIFT32:u,BI:l,SYMS:c}=a;let f=null;try{f=r(669)}catch(t){f=r(595)}e.inspect=f.inspect;const d=new s("utf8",{fatal:!0,ignoreBOM:!0});e.utf8=t=>d.decode(t),e.utf8.checksUTF8=!0,e.isBufferish=function(t){return t&&"object"==typeof t&&(i.isBuffer(t)||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof ArrayBuffer||t instanceof DataView)},e.bufferishToBuffer=function(t){return i.isBuffer(t)?t:ArrayBuffer.isView(t)?i.from(t.buffer,t.byteOffset,t.byteLength):t instanceof ArrayBuffer?i.from(t):null},e.parseCBORint=function(t,e,r=!0){switch(t){case h.ONE:return e.readUInt8(0);case h.TWO:return e.readUInt16BE(0);case h.FOUR:return e.readUInt32BE(0);case h.EIGHT:{const t=e.readUInt32BE(0),i=e.readUInt32BE(4);if(t>2097151){if(r)return BigInt(t)*l.SHIFT32+BigInt(i);if(!a.BigNumber)throw new Error("No bigint and no bignumber.js");return new a.BigNumber(t).times(u).plus(i)}return t*u+i}default:throw new Error("Invalid additional info for int: "+t)}},e.writeHalf=function(t,e){const r=i.allocUnsafe(4);r.writeFloatBE(e,0);const n=r.readUInt32BE(0);if(0!=(8191&n))return!1;let o=n>>16&32768;const s=n>>23&255,a=8388607&n;if(s>=113&&s<=142)o+=(s-112<<10)+(a>>13);else{if(!(s>=103&&s<113))return!1;if(a&(1<<126-s)-1)return!1;o+=a+8388608>>126-s}return t.writeUInt16BE(o),!0},e.parseHalf=function(t){const e=128&t[0]?-1:1,r=(124&t[0])>>2,i=(3&t[0])<<8|t[1];return r?31===r?e*(i?NaN:1/0):e*Math.pow(2,r-25)*(1024+i):5.960464477539063e-8*e*i},e.parseCBORfloat=function(t){switch(t.length){case 2:return e.parseHalf(t);case 4:return t.readFloatBE(0);case 8:return t.readDoubleBE(0);default:throw new Error("Invalid float size: "+t.length)}},e.hex=function(t){return i.from(t.replace(/^0x/,""),"hex")},e.bin=function(t){let e=0,r=(t=t.replace(/\s/g,"")).length%8||8;const n=[];for(;r<=t.length;)n.push(parseInt(t.slice(e,r),2)),e=r,r+=8;return i.from(n)},e.arrayEqual=function(t,e){return null==t&&null==e||null!=t&&null!=e&&t.length===e.length&&t.every(((t,r)=>t===e[r]))},e.bufferToBignumber=function(t){if(!a.BigNumber)throw new Error("No bigint and no bignumber.js");return new a.BigNumber(t.toString("hex"),16)},e.bufferToBigInt=function(t){return BigInt("0x"+t.toString("hex"))},e.cborValueToString=function(t,r=-1){switch(typeof t){case"symbol":{switch(t){case c.NULL:return"null";case c.UNDEFINED:return"undefined";case c.BREAK:return"BREAK"}if(t.description)return t.description;const e=t.toString().match(/^Symbol\((.*)\)/);return e&&e[1]?e[1]:"Symbol"}case"string":return JSON.stringify(t);case"bigint":return t.toString();case"number":return r>0?f.inspect(t)+"_"+r:f.inspect(t)}const i=e.bufferishToBuffer(t);if(i){const t=i.toString("hex");return r===-1/0?t:`h'${t}'`}return a.BigNumber&&a.BigNumber.isBigNumber(t)?t.toString():t&&"function"==typeof t.inspect?t.inspect():f.inspect(t)},e.guessEncoding=function(t,r){if("string"==typeof t)return new n(t,null!=r?r:"hex");const i=e.bufferishToBuffer(t);if(i)return new n(i);if((s=t)instanceof o.Readable||["read","on","pipe"].every((t=>"function"==typeof s[t])))return t;var s;throw new Error("Unknown input type")};const g={"=":"","+":"-","/":"_"};e.base64url=function(t){return e.bufferishToBuffer(t).toString("base64").replace(/[=+/]/g,(t=>g[t]))},e.base64=function(t){return e.bufferishToBuffer(t).toString("base64")},e.isBigEndian=function(){const t=new Uint8Array(4);return!((new Uint32Array(t.buffer)[0]=1)&t[0])}},960:(t,e,r)=>{"use strict";let i=null;if("function"==typeof TextDecoder)i=TextDecoder;else if("undefined"!=typeof window)i=window.TextDecoder;else if("undefined"!=typeof self)i=self.TextDecoder;else try{const t=r(669);"function"!=typeof i&&(i=t.TextDecoder)}catch(t){}if("function"!=typeof i){class t{constructor(t,e){this.utfLabel=t,this.options=e}decode(t){const e=t.toString(this.utfLabel);if(this.options.fatal)for(const t of e)if(65533===t.codePointAt(0)){const t=new TypeError("[ERR_ENCODING_INVALID_ENCODED_DATA]: The encoded data was not valid for encoding "+this.utfLabel);throw t.code="ERR_ENCODING_INVALID_ENCODED_DATA",t.errno=12,t}return e}}i=t}t.exports=i},202:(t,e,r)=>{"use strict";const i=r(830),{Buffer:n}=r(764),o=r(960);let s=null,a=Symbol.for("nodejs.util.inspect.custom");try{s=r(669),a=s.inspect.custom}catch(t){}const h=new o("utf8",{fatal:!0,ignoreBOM:!0});class u extends i.Transform{constructor(t,e,r){null==r&&(r={});let i=null,o=null;switch(typeof t){case"object":n.isBuffer(t)?(i=t,null!=e&&"object"==typeof e&&(r=e)):r=t;break;case"string":i=t,null!=e&&"object"==typeof e?r=e:o=e}null==r&&(r={}),null==i&&(i=r.input),null==o&&(o=r.inputEncoding),delete r.input,delete r.inputEncoding;const s=null==r.watchPipe||r.watchPipe;delete r.watchPipe;const a=!!r.readError;delete r.readError,super(r),this.readError=a,s&&this.on("pipe",(t=>{const e=t._readableState.objectMode;if(this.length>0&&e!==this._readableState.objectMode)throw new Error("Do not switch objectMode in the middle of the stream");this._readableState.objectMode=e,this._writableState.objectMode=e})),null!=i&&this.end(i,o)}static isNoFilter(t){return t instanceof this}static compare(t,e){if(!(t instanceof this))throw new TypeError("Arguments must be NoFilters");return t===e?0:t.compare(e)}static concat(t,e){if(!Array.isArray(t))throw new TypeError("list argument must be an Array of NoFilters");if(0===t.length||0===e)return n.alloc(0);null==e&&(e=t.reduce(((t,e)=>{if(!(e instanceof u))throw new TypeError("list argument must be an Array of NoFilters");return t+e.length}),0));let r=!0,i=!0;const o=t.map((t=>{if(!(t instanceof u))throw new TypeError("list argument must be an Array of NoFilters");const e=t.slice();return n.isBuffer(e)?i=!1:r=!1,e}));if(r)return n.concat(o,e);if(i)return[].concat(...o).slice(0,e);throw new Error("Concatenating mixed object and byte streams not supported")}_transform(t,e,r){this._readableState.objectMode||n.isBuffer(t)||(t=n.from(t,e)),this.push(t),r()}_bufArray(){let t=this._readableState.buffer;if(!Array.isArray(t)){let e=t.head;for(t=[];null!=e;)t.push(e.data),e=e.next}return t}read(t){const e=super.read(t);if(null!=e){if(this.emit("read",e),this.readError&&e.length{this.on("finish",(()=>{const i=this.read();null==t||e||(e=!0,t(null,i)),r(i)})),this.on("error",(r=>{null==t||e||(e=!0,t(r)),i(r)}))}))}compare(t){if(!(t instanceof u))throw new TypeError("Arguments must be NoFilters");if(this===t)return 0;const e=this.slice(),r=t.slice();if(n.isBuffer(e)&&n.isBuffer(r))return e.compare(r);throw new Error("Cannot compare streams in object mode")}equals(t){return 0===this.compare(t)}slice(t,e){if(this._readableState.objectMode)return this._bufArray().slice(t,e);const r=this._bufArray();switch(r.length){case 0:return n.alloc(0);case 1:return r[0].slice(t,e);default:return n.concat(r).slice(t,e)}}get(t){return this.slice()[t]}toJSON(){const t=this.slice();return n.isBuffer(t)?t.toJSON():t}toString(t,e,r){const i=this.slice(e,r);return n.isBuffer(i)?t&&"utf8"!==t?i.toString(t,e,r):h.decode(i):JSON.stringify(i)}inspect(t,e){return this[a](t,e)}[a](t,e){const r=this._bufArray().map((t=>n.isBuffer(t)?(null!=e?e.stylize:void 0)?e.stylize(t.toString("hex"),"string"):t.toString("hex"):s?s.inspect(t,e):t.toString())).join(", ");return`${this.constructor.name} [${r}]`}get length(){return this._readableState.length}writeBigInt(t){let e=t.toString(16);if(t<0){const r=BigInt(Math.floor(e.length/2));e=(t=(BigInt(1)<{"use strict";const i=r(830),n=r(202),o=i.Transform;t.exports=class extends o{constructor(t){super(t),this._writableState.objectMode=!1,this._readableState.objectMode=!0,this.bs=new n,this.__restart()}_transform(t,e,r){for(this.bs.write(t);this.bs.length>=this.__needed;){let e=null;const i=null===this.__needed?void 0:this.bs.read(this.__needed);try{e=this.__parser.next(i)}catch(t){return r(t)}this.__needed&&(this.__fresh=!1),e.done?(this.push(e.value),this.__restart()):this.__needed=e.value||1/0}return r()}*_parse(){throw new Error("Must be implemented in subclass")}__restart(){this.__needed=null,this.__parser=this._parse(),this.__fresh=!0}_flush(t){t(this.__fresh?null:new Error("unexpected end of input"))}}},187:t=>{"use strict";var e,r="object"==typeof Reflect?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};e=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var n=Number.isNaN||function(t){return t!=t};function o(){o.init.call(this)}t.exports=o,t.exports.once=function(t,e){return new Promise((function(r,i){function n(r){t.removeListener(e,o),i(r)}function o(){"function"==typeof t.removeListener&&t.removeListener("error",n),r([].slice.call(arguments))}A(t,e,o,{once:!0}),"error"!==e&&function(t,e,r){"function"==typeof t.on&&A(t,"error",e,{once:!0})}(t,n)}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function a(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function h(t){return void 0===t._maxListeners?o.defaultMaxListeners:t._maxListeners}function u(t,e,r,i){var n,o,s,u;if(a(r),void 0===(o=t._events)?(o=t._events=Object.create(null),t._eventsCount=0):(void 0!==o.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),o=t._events),s=o[e]),void 0===s)s=o[e]=r,++t._eventsCount;else if("function"==typeof s?s=o[e]=i?[r,s]:[s,r]:i?s.unshift(r):s.push(r),(n=h(t))>0&&s.length>n&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=t,l.type=e,l.count=s.length,u=l,console&&console.warn&&console.warn(u)}return t}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function c(t,e,r){var i={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},n=l.bind(i);return n.listener=r,i.wrapFn=n,n}function f(t,e,r){var i=t._events;if(void 0===i)return[];var n=i[e];return void 0===n?[]:"function"==typeof n?r?[n.listener||n]:[n]:r?function(t){for(var e=new Array(t.length),r=0;r0&&(s=e[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var h=o[t];if(void 0===h)return!1;if("function"==typeof h)i(h,this,e);else{var u=h.length,l=g(h,u);for(r=0;r=0;o--)if(r[o]===e||r[o].listener===e){s=r[o].listener,n=o;break}if(n<0)return this;0===n?r.shift():function(t,e){for(;e+1=0;i--)this.removeListener(t,e[i]);return this},o.prototype.listeners=function(t){return f(this,t,!0)},o.prototype.rawListeners=function(t){return f(this,t,!1)},o.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):d.call(t,e)},o.prototype.listenerCount=d,o.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}},645:(t,e)=>{e.read=function(t,e,r,i,n){var o,s,a=8*n-i-1,h=(1<>1,l=-7,c=r?n-1:0,f=r?-1:1,d=t[e+c];for(c+=f,o=d&(1<<-l)-1,d>>=-l,l+=a;l>0;o=256*o+t[e+c],c+=f,l-=8);for(s=o&(1<<-l)-1,o>>=-l,l+=i;l>0;s=256*s+t[e+c],c+=f,l-=8);if(0===o)o=1-u;else{if(o===h)return s?NaN:1/0*(d?-1:1);s+=Math.pow(2,i),o-=u}return(d?-1:1)*s*Math.pow(2,o-i)},e.write=function(t,e,r,i,n,o){var s,a,h,u=8*o-n-1,l=(1<>1,f=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,d=i?0:o-1,g=i?1:-1,A=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=l):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),(e+=s+c>=1?f/h:f*Math.pow(2,1-c))*h>=2&&(s++,h/=2),s+c>=l?(a=0,s=l):s+c>=1?(a=(e*h-1)*Math.pow(2,n),s+=c):(a=e*Math.pow(2,c-1)*Math.pow(2,n),s=0));n>=8;t[r+d]=255&a,d+=g,a/=256,n-=8);for(s=s<0;t[r+d]=255&s,d+=g,s/=256,u-=8);t[r+d-g]|=128*A}},717:t=>{"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},595:function(t){t.exports=(()=>{"use strict";var t={255:(t,e)=>{e.l=class{hexSlice(t=0,e){return Array.prototype.map.call(this.slice(t,e),(t=>("00"+t.toString(16)).slice(-2))).join("")}}},48:(t,e,r)=>{const i=r(765),{internalBinding:n,Array:o,ArrayIsArray:s,ArrayPrototypeFilter:a,ArrayPrototypeForEach:h,ArrayPrototypePush:u,ArrayPrototypePushApply:l,ArrayPrototypeSort:c,ArrayPrototypeUnshift:f,BigIntPrototypeValueOf:d,BooleanPrototypeValueOf:g,DatePrototypeGetTime:A,DatePrototypeToISOString:M,DatePrototypeToString:p,ErrorPrototypeToString:w,FunctionPrototypeCall:B,FunctionPrototypeToString:m,JSONStringify:E,MapPrototypeGetSize:y,MapPrototypeEntries:b,MathFloor:I,MathMax:v,MathMin:C,MathRound:Q,MathSqrt:D,Number:N,NumberIsNaN:R,NumberParseFloat:G,NumberParseInt:U,NumberPrototypeValueOf:V,Object:S,ObjectAssign:T,ObjectCreate:Y,ObjectDefineProperty:k,ObjectGetOwnPropertyDescriptor:F,ObjectGetOwnPropertyNames:L,ObjectGetOwnPropertySymbols:j,ObjectGetPrototypeOf:Z,ObjectIs:x,ObjectKeys:z,ObjectPrototypeHasOwnProperty:O,ObjectPrototypePropertyIsEnumerable:H,ObjectSeal:_,ObjectSetPrototypeOf:W,ReflectOwnKeys:J,RegExp:X,RegExpPrototypeTest:P,RegExpPrototypeToString:K,SafeStringIterator:q,SafeMap:$,SafeSet:tt,SetPrototypeGetSize:et,SetPrototypeValues:rt,String:it,StringPrototypeCharCodeAt:nt,StringPrototypeCodePointAt:ot,StringPrototypeIncludes:st,StringPrototypeNormalize:at,StringPrototypePadEnd:ht,StringPrototypePadStart:ut,StringPrototypeRepeat:lt,StringPrototypeReplace:ct,StringPrototypeSlice:ft,StringPrototypeSplit:dt,StringPrototypeToLowerCase:gt,StringPrototypeTrim:At,StringPrototypeValueOf:Mt,SymbolPrototypeToString:pt,SymbolPrototypeValueOf:wt,SymbolIterator:Bt,SymbolToStringTag:mt,TypedArrayPrototypeGetLength:Et,TypedArrayPrototypeGetSymbolToStringTag:yt,Uint8Array:bt,uncurryThis:It}=i,{getOwnNonIndexProperties:vt,getPromiseDetails:Ct,getProxyDetails:Qt,kPending:Dt,kRejected:Nt,previewEntries:Rt,getConstructorName:Gt,getExternalValue:Ut,propertyFilter:{ALL_PROPERTIES:Vt,ONLY_ENUMERABLE:St},Proxy:Tt}=r(891),{customInspectSymbol:Yt,isError:kt,join:Ft,removeColors:Lt}=r(335),{codes:{ERR_INVALID_ARG_TYPE:jt},isStackOverflowError:Zt}=r(101),{isAsyncFunction:xt,isGeneratorFunction:zt,isAnyArrayBuffer:Ot,isArrayBuffer:Ht,isArgumentsObject:_t,isBoxedPrimitive:Wt,isDataView:Jt,isExternal:Xt,isMap:Pt,isMapIterator:Kt,isModuleNamespaceObject:qt,isNativeError:$t,isPromise:te,isSet:ee,isSetIterator:re,isWeakMap:ie,isWeakSet:ne,isRegExp:oe,isDate:se,isTypedArray:ae,isStringObject:he,isNumberObject:ue,isBooleanObject:le,isBigIntObject:ce}=r(63),fe=r(183),{NativeModule:de}=r(992),{validateObject:ge}=r(356);let Ae;const Me=new tt(a(L(r.g),(t=>P(/^[A-Z][a-zA-Z0-9]+$/,t)))),pe=t=>void 0===t&&void 0!==t,we=_({showHidden:!1,depth:2,colors:!1,customInspect:!0,showProxy:!1,maxArrayLength:100,maxStringLength:1e4,breakLength:80,compact:3,sorted:!1,getters:!1}),Be=/[\x00-\x1f\x27\x5c\x7f-\x9f]/,me=/[\x00-\x1f\x27\x5c\x7f-\x9f]/g,Ee=/[\x00-\x1f\x5c\x7f-\x9f]/,ye=/[\x00-\x1f\x5c\x7f-\x9f]/g,be=/^[a-zA-Z_][a-zA-Z_0-9]*$/,Ie=/^(0|[1-9][0-9]*)$/,ve=/^ at (?:[^/\\(]+ \(|)node:(.+):\d+:\d+\)?$/,Ce=/^ at (?:[^/\\(]+ \(|)(.+)\.js:\d+:\d+\)?$/,Qe=/[/\\]node_modules[/\\](.+?)(?=[/\\])/g,De=/^(\s+[^(]*?)\s*{/,Ne=/(\/\/.*?\n)|(\/\*(.|\n)*?\*\/)/g,Re=["\\x00","\\x01","\\x02","\\x03","\\x04","\\x05","\\x06","\\x07","\\b","\\t","\\n","\\x0B","\\f","\\r","\\x0E","\\x0F","\\x10","\\x11","\\x12","\\x13","\\x14","\\x15","\\x16","\\x17","\\x18","\\x19","\\x1A","\\x1B","\\x1C","\\x1D","\\x1E","\\x1F","","","","","","","","\\'","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\\\","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\x7F","\\x80","\\x81","\\x82","\\x83","\\x84","\\x85","\\x86","\\x87","\\x88","\\x89","\\x8A","\\x8B","\\x8C","\\x8D","\\x8E","\\x8F","\\x90","\\x91","\\x92","\\x93","\\x94","\\x95","\\x96","\\x97","\\x98","\\x99","\\x9A","\\x9B","\\x9C","\\x9D","\\x9E","\\x9F"],Ge=new X("[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))","g");let Ue;function Ve(t,e){const r={budget:{},indentationLvl:0,seen:[],currentDepth:0,stylize:Ze,showHidden:we.showHidden,depth:we.depth,colors:we.colors,customInspect:we.customInspect,showProxy:we.showProxy,maxArrayLength:we.maxArrayLength,maxStringLength:we.maxStringLength,breakLength:we.breakLength,compact:we.compact,sorted:we.sorted,getters:we.getters};if(arguments.length>1)if(arguments.length>2&&(void 0!==arguments[2]&&(r.depth=arguments[2]),arguments.length>3&&void 0!==arguments[3]&&(r.colors=arguments[3])),"boolean"==typeof e)r.showHidden=e;else if(e){const t=z(e);for(let i=0;iwe,set:t=>(ge(t,"options"),T(we,t))});const Se=39,Te=49;function Ye(t,e){k(Ve.colors,e,{get(){return this[t]},set(e){this[t]=e},configurable:!0,enumerable:!1})}function ke(t,e){return-1===e?`"${t}"`:-2===e?`\`${t}\``:`'${t}'`}Ve.colors=T(Y(null),{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],blink:[5,25],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],doubleunderline:[21,24],black:[30,Se],red:[31,Se],green:[32,Se],yellow:[33,Se],blue:[34,Se],magenta:[35,Se],cyan:[36,Se],white:[37,Se],bgBlack:[40,Te],bgRed:[41,Te],bgGreen:[42,Te],bgYellow:[43,Te],bgBlue:[44,Te],bgMagenta:[45,Te],bgCyan:[46,Te],bgWhite:[47,Te],framed:[51,54],overlined:[53,55],gray:[90,Se],redBright:[91,Se],greenBright:[92,Se],yellowBright:[93,Se],blueBright:[94,Se],magentaBright:[95,Se],cyanBright:[96,Se],whiteBright:[97,Se],bgGray:[100,Te],bgRedBright:[101,Te],bgGreenBright:[102,Te],bgYellowBright:[103,Te],bgBlueBright:[104,Te],bgMagentaBright:[105,Te],bgCyanBright:[106,Te],bgWhiteBright:[107,Te]}),Ye("gray","grey"),Ye("gray","blackBright"),Ye("bgGray","bgGrey"),Ye("bgGray","bgBlackBright"),Ye("dim","faint"),Ye("strikethrough","crossedout"),Ye("strikethrough","strikeThrough"),Ye("strikethrough","crossedOut"),Ye("hidden","conceal"),Ye("inverse","swapColors"),Ye("inverse","swapcolors"),Ye("doubleunderline","doubleUnderline"),Ve.styles=T(Y(null),{special:"cyan",number:"yellow",bigint:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",symbol:"green",date:"magenta",regexp:"red",module:"underline"});const Fe=t=>Re[nt(t)];function Le(t){let e=Be,r=me,i=39;if(st(t,"'")&&(st(t,'"')?st(t,"`")||st(t,"${")||(i=-2):i=-1,39!==i&&(e=Ee,r=ye)),t.length<5e3&&!P(e,t))return ke(t,i);if(t.length>100)return ke(t=ct(t,r,Fe),i);let n="",o=0;const s=t.length;for(let e=0;e126&&r<160)&&(n+=o===e?Re[r]:`${ft(t,o,e)}${Re[r]}`,o=e+1)}return o!==s&&(n+=ft(t,o)),ke(n,i)}function je(t,e){const r=Ve.styles[e];if(void 0!==r){const e=Ve.colors[r];if(void 0!==e)return`[${e[0]}m${t}[${e[1]}m`}return t}function Ze(t){return t}function xe(){return[]}function ze(t,e){try{return t instanceof e}catch{return!1}}function Oe(t,e,r,i){let n;const o=t;for(;t||pe(t);){const s=F(t,"constructor");if(void 0!==s&&"function"==typeof s.value&&""!==s.value.name&&ze(o,s.value))return void 0===i||n===t&&Me.has(s.value.name)||He(e,o,n||o,r,i),s.value.name;t=Z(t),void 0===n&&(n=t)}if(null===n)return null;const s=Gt(o);if(r>e.depth&&null!==e.depth)return`${s} `;const a=Oe(n,e,r+1,i);return null===a?`${s} <${Ve(n,{...e,customInspect:!1,depth:-1})}>`:`${s} <${a}>`}function He(t,e,r,i,n){let o,s,a=0;do{if(0!==a||e===r){if(null===(r=Z(r)))return;const t=F(r,"constructor");if(void 0!==t&&"function"==typeof t.value&&Me.has(t.value.name))return}0===a?s=new tt:h(o,(t=>s.add(t))),o=J(r);for(const h of o){if("constructor"===h||O(e,h)||0!==a&&s.has(h))continue;const o=F(r,h);if("function"==typeof o.value)continue;const l=gr(t,r,i,h,0,o,e);t.colors?u(n,`${l}`):u(n,l)}}while(3!=++a)}function _e(t,e,r,i=""){return null===t?""!==e&&r!==e?`[${r}${i}: null prototype] [${e}] `:`[${r}${i}: null prototype] `:""!==e&&t!==e?`${t}${i} [${e}] `:`${t}${i} `}function We(t,e){let r;const i=j(t);if(e)r=L(t),0!==i.length&&l(r,i);else{try{r=z(t)}catch(e){fe($t(e)&&"ReferenceError"===e.name&&qt(t)),r=L(t)}0!==i.length&&l(r,a(i,(e=>H(t,e))))}return r}function Je(t,e,r){let i="";return null===e&&(i=Gt(t),i===r&&(i="Object")),_e(e,r,i)}function Xe(t,e,r,n){if("object"!=typeof e&&"function"!=typeof e&&!pe(e))return $e(t.stylize,e,t);if(null===e)return t.stylize("null","null");const o=e,a=Qt(e,!!t.showProxy);if(void 0!==a){if(t.showProxy)return function(t,e,r){if(r>t.depth&&null!==t.depth)return t.stylize("Proxy [Array]","special");r+=1,t.indentationLvl+=2;const i=[Xe(t,e[0],r),Xe(t,e[1],r)];return t.indentationLvl-=2,Mr(t,i,"",["Proxy [","]"],2,r)}(t,a,r);e=a}if(t.customInspect){const i=e[Yt];if("function"==typeof i&&i!==Ve&&(!e.constructor||e.constructor.prototype!==e)){const e=null===t.depth?null:t.depth-r,n=B(i,o,e,function(t,e){const r={stylize:t.stylize,showHidden:t.showHidden,depth:t.depth,colors:t.colors,customInspect:t.customInspect,showProxy:t.showProxy,maxArrayLength:t.maxArrayLength,maxStringLength:t.maxStringLength,breakLength:t.breakLength,compact:t.compact,sorted:t.sorted,getters:t.getters,...t.userOptions};if(e){W(r,null);for(const t of z(r))"object"!=typeof r[t]&&"function"!=typeof r[t]||null===r[t]||delete r[t];r.stylize=W(((e,r)=>{let i;try{i=`${t.stylize(e,r)}`}catch{}return"string"!=typeof i?e:i}),null)}return r}(t,void 0!==a||!(o instanceof S)));if(n!==o)return"string"!=typeof n?Xe(t,n,r):n.replace(/\n/g,`\n${" ".repeat(t.indentationLvl)}`)}}if(t.seen.includes(e)){let r=1;return void 0===t.circular?(t.circular=new $,t.circular.set(e,r)):(r=t.circular.get(e),void 0===r&&(r=t.circular.size+1,t.circular.set(e,r))),t.stylize(`[Circular *${r}]`,"special")}return function(t,e,r,n){let o,a;t.showHidden&&(r<=t.depth||null===t.depth)&&(a=[]);const h=Oe(e,t,r,a);void 0!==a&&0===a.length&&(a=void 0);let u=e[mt];("string"!=typeof u||""!==u&&(t.showHidden?O:H)(e,mt))&&(u="");let l,c="",B=xe,E=!0,I=0;const v=t.showHidden?Vt:St;let C,Q=0;if(e[Bt]||null===h)if(E=!1,s(e)){const t="Array"!==h||""!==u?_e(h,u,"Array",`(${e.length})`):"";if(o=vt(e,v),l=[`${t}[`,"]"],0===e.length&&0===o.length&&void 0===a)return`${l[0]}]`;Q=2,B=ir}else if(ee(e)){const r=et(e),i=_e(h,u,"Set",`(${r})`);if(o=We(e,t.showHidden),B=null!==h?or.bind(null,e):or.bind(null,rt(e)),0===r&&0===o.length&&void 0===a)return`${i}{}`;l=[`${i}{`,"}"]}else if(Pt(e)){const r=y(e),i=_e(h,u,"Map",`(${r})`);if(o=We(e,t.showHidden),B=null!==h?sr.bind(null,e):sr.bind(null,b(e)),0===r&&0===o.length&&void 0===a)return`${i}{}`;l=[`${i}{`,"}"]}else if(ae(e)){o=vt(e,v);let r=e,n="";null===h&&(n=yt(e),r=new i[n](e));const s=Et(e);if(l=[`${_e(h,u,n,`(${s})`)}[`,"]"],0===e.length&&0===o.length&&!t.showHidden)return`${l[0]}]`;B=nr.bind(null,r,s),Q=2}else Kt(e)?(o=We(e,t.showHidden),l=Pe("Map",u),B=fr.bind(null,l)):re(e)?(o=We(e,t.showHidden),l=Pe("Set",u),B=fr.bind(null,l)):E=!0;if(E)if(o=We(e,t.showHidden),l=["{","}"],"Object"===h){if(_t(e)?l[0]="[Arguments] {":""!==u&&(l[0]=`${_e(h,u,"Object")}{`),0===o.length&&void 0===a)return`${l[0]}}`}else if("function"==typeof e){if(c=function(t,e,r){const i=m(t);if("class"===i.slice(0,5)&&i.endsWith("}")){const n=i.slice(5,-1),o=n.indexOf("{");if(-1!==o&&(!n.slice(0,o).includes("(")||De.test(n.replace(Ne))))return function(t,e,r){let i=`class ${O(t,"name")&&t.name||"(anonymous)"}`;if("Function"!==e&&null!==e&&(i+=` [${e}]`),""!==r&&e!==r&&(i+=` [${r}]`),null!==e){const e=Z(t).name;e&&(i+=` extends ${e}`)}else i+=" extends [null prototype]";return`[${i}]`}(t,e,r)}let n="Function";zt(t)&&(n=`Generator${n}`),xt(t)&&(n=`Async${n}`);let o=`[${n}`;return null===e&&(o+=" (null prototype)"),""===t.name?o+=" (anonymous)":o+=`: ${t.name}`,o+="]",e!==n&&null!==e&&(o+=` ${e}`),""!==r&&e!==r&&(o+=` [${r}]`),o}(e,h,u),0===o.length&&void 0===a)return t.stylize(c,"special")}else if(oe(e)){c=K(null!==h?e:new X(e));const i=_e(h,u,"RegExp");if("RegExp "!==i&&(c=`${i}${c}`),0===o.length&&void 0===a||r>t.depth&&null!==t.depth)return t.stylize(c,"regexp")}else if(se(e)){c=R(A(e))?p(e):M(e);const r=_e(h,u,"Date");if("Date "!==r&&(c=`${r}${c}`),0===o.length&&void 0===a)return t.stylize(c,"date")}else if(kt(e)){if(c=function(t,e,r,i,n){const o=null!=t.name?it(t.name):"Error";let s=o.length,a=t.stack?it(t.stack):w(t);if(!i.showHidden&&0!==n.length)for(const e of["name","message","stack"]){const r=n.indexOf(e);-1!==r&&a.includes(t[e])&&n.splice(r,1)}if(null===e||o.endsWith("Error")&&a.startsWith(o)&&(a.length===s||":"===a[s]||"\n"===a[s])){let t="Error";if(null===e){const e=a.match(/^([A-Z][a-z_ A-Z0-9[\]()-]+)(?::|\n {4}at)/)||a.match(/^([a-z_A-Z0-9-]*Error)$/);t=e&&e[1]||"",s=t.length,t=t||"Error"}const i=_e(e,r,t).slice(0,-1);o!==i&&(a=i.includes(o)?0===s?`${i}: ${a}`:`${i}${a.slice(s)}`:`${i} [${o}]${a.slice(s)}`)}let h=t.message&&a.indexOf(t.message)||-1;-1!==h&&(h+=t.message.length);const u=a.indexOf("\n at",h);if(-1===u)a=`[${a}]`;else if(i.colors){let t=a.slice(0,u);const e=a.slice(u+1).split("\n");for(const r of e){const e=r.match(ve)||r.match(Ce);if(null!==e&&de.exists(e[1]))t+=`\n${i.stylize(r,"undefined")}`;else{let e;t+="\n";let n=0;for(;e=Qe.exec(r);)t+=r.slice(n,e.index+14),t+=i.stylize(e[1],"module"),n=e.index+e[0].length;t+=0===n?r:r.slice(n)}}a=t}if(0!==i.indentationLvl){const t=" ".repeat(i.indentationLvl);a=a.replace(/\n/g,`\n${t}`)}return a}(e,h,u,t,o),0===o.length&&void 0===a)return c}else if(Ot(e)){const r=_e(h,u,Ht(e)?"ArrayBuffer":"SharedArrayBuffer");if(void 0===n)B=rr;else if(0===o.length&&void 0===a)return r+`{ byteLength: ${Ke(t.stylize,e.byteLength)} }`;l[0]=`${r}{`,f(o,"byteLength")}else if(Jt(e))l[0]=`${_e(h,u,"DataView")}{`,f(o,"byteLength","byteOffset","buffer");else if(te(e))l[0]=`${_e(h,u,"Promise")}{`,B=dr;else if(ne(e))l[0]=`${_e(h,u,"WeakSet")}{`,B=t.showHidden?lr:ur;else if(ie(e))l[0]=`${_e(h,u,"WeakMap")}{`,B=t.showHidden?cr:ur;else if(qt(e))l[0]=`${_e(h,u,"Module")}{`,B=tr.bind(null,o);else if(Wt(e)){if(c=function(t,e,r,i,n){let o,s;ue(t)?(o=V,s="Number"):he(t)?(o=Mt,s="String",r.splice(0,t.length)):le(t)?(o=g,s="Boolean"):ce(t)?(o=d,s="BigInt"):(o=wt,s="Symbol");let a=`[${s}`;return s!==i&&(a+=null===i?" (null prototype)":` (${i})`),a+=`: ${$e(Ze,o(t),e)}]`,""!==n&&n!==i&&(a+=` [${n}]`),0!==r.length||e.stylize===Ze?a:e.stylize(a,gt(s))}(e,t,o,h,u),0===o.length&&void 0===a)return c}else{if(0===o.length&&void 0===a){if(Xt(e)){const r=Ut(e).toString(16);return t.stylize(`[External: ${r}]`,"special")}return`${Je(e,h,u)}{}`}l[0]=`${Je(e,h,u)}{`}if(r>t.depth&&null!==t.depth){let r=Je(e,h,u).slice(0,-1);return null!==h&&(r=`[${r}]`),t.stylize(r,"special")}r+=1,t.seen.push(e),t.currentDepth=r;const D=t.indentationLvl;try{for(C=B(t,e,r),I=0;I`,"special");!0!==t.compact?c=""===c?e:`${e} ${c}`:l[0]=`${e} ${l[0]}`}}if(t.seen.pop(),t.sorted){const e=!0===t.sorted?void 0:t.sorted;if(0===Q)C=C.sort(e);else if(o.length>1){const t=C.slice(C.length-o.length).sort(e);C.splice(C.length-o.length,o.length,...t)}}const N=Mr(t,C,c,l,Q,r,e),G=(t.budget[t.indentationLvl]||0)+N.length;return t.budget[t.indentationLvl]=G,G>2**27&&(t.depth=-1),N}(t,e,r,n)}function Pe(t,e){return e!==`${t} Iterator`&&(""!==e&&(e+="] ["),e+=`${t} Iterator`),[`[${e}] {`,"}"]}function Ke(t,e){return t(x(e,-0)?"-0":`${e}`,"number")}function qe(t,e){return t(`${e}n`,"bigint")}function $e(t,e,r){if("string"==typeof e){let i="";if(e.length>r.maxStringLength){const t=e.length-r.maxStringLength;e=e.slice(0,r.maxStringLength),i=`... ${t} more character${t>1?"s":""}`}return!0!==r.compact&&e.length>16&&e.length>r.breakLength-r.indentationLvl-4?e.split(/\n/).map(((e,r,i)=>t(Le(e+(r===i.length-1?"":"\n")),"string"))).join(` +\n${" ".repeat(r.indentationLvl+2)}`)+i:t(Le(e),"string")+i}return"number"==typeof e?Ke(t,e):"bigint"==typeof e?qe(t,e):"boolean"==typeof e?t(`${e}`,"boolean"):void 0===e?t("undefined","undefined"):t(pt(e),"symbol")}function tr(t,e,r,i){const n=new o(t.length);for(let o=0;o","special")}return t.length=0,n}function er(t,e,r,i,n,o){const s=z(e);let a=o;for(;o2**32-2)break;if(`${a}`!==h){if(!Ie.test(h))break;const e=u-a,r=`<${e} empty item${e>1?"s":""}>`;if(n.push(t.stylize(r,"undefined")),a=u,n.length===i)break}n.push(gr(t,e,r,h,1)),a++}const h=e.length-a;if(n.length!==i){if(h>0){const e=`<${h} empty item${h>1?"s":""}>`;n.push(t.stylize(e,"undefined"))}}else h>0&&n.push(`... ${h} more item${h>1?"s":""}`);return n}function rr(t,e){let i;try{i=new bt(e)}catch{return[t.stylize("(detached)","special")]}void 0===Ae&&(Ae=It(r(255).l.prototype.hexSlice));let n=At(ct(Ae(i,0,C(t.maxArrayLength,i.length)),/(.{2})/g,"$1 "));const o=i.length-t.maxArrayLength;return o>0&&(n+=` ... ${o} more byte${o>1?"s":""}`),[`${t.stylize("[Uint8Contents]","special")}: <${n}>`]}function ir(t,e,r){const i=e.length,n=C(v(0,t.maxArrayLength),i),o=i-n,s=[];for(let i=0;i0&&s.push(`... ${o} more item${o>1?"s":""}`),s}function nr(t,e,r,i,n){const s=C(v(0,r.maxArrayLength),e),a=t.length-s,h=new o(s),l=t.length>0&&"number"==typeof t[0]?Ke:qe;for(let e=0;e0&&(h[s]=`... ${a} more item${a>1?"s":""}`),r.showHidden){r.indentationLvl+=2;for(const e of["BYTES_PER_ELEMENT","length","byteLength","byteOffset","buffer"]){const i=Xe(r,t[e],n,!0);u(h,`[${e}]: ${i}`)}r.indentationLvl-=2}return h}function or(t,e,r,i){const n=[];e.indentationLvl+=2;for(const r of t)u(n,Xe(e,r,i));return e.indentationLvl-=2,n}function sr(t,e,r,i){const n=[];e.indentationLvl+=2;for(const{0:r,1:o}of t)n.push(`${Xe(e,r,i)} => `+Xe(e,o,i));return e.indentationLvl-=2,n}function ar(t,e,r,i){const n=v(t.maxArrayLength,0),s=C(n,r.length),a=new o(s);t.indentationLvl+=2;for(let i=0;i0&&u(a,`... ${h} more item${h>1?"s":""}`),a}function hr(t,e,r,i){const n=v(t.maxArrayLength,0),s=r.length/2,a=s-n,h=C(n,s);let u=new o(h),l=0;if(t.indentationLvl+=2,0===i){for(;l ${Xe(t,r[i+1],e)}`}t.sorted||(u=u.sort())}else for(;l0&&u.push(`... ${a} more item${a>1?"s":""}`),u}function ur(t){return[t.stylize("","special")]}function lr(t,e,r){return ar(t,r,Rt(e),0)}function cr(t,e,r){return hr(t,r,Rt(e),0)}function fr(t,e,r,i){const{0:n,1:o}=Rt(r,!0);return o?(t[0]=t[0].replace(/ Iterator] {$/," Entries] {"),hr(e,i,n,2)):ar(e,i,n,1)}function dr(t,e,r){let i;const{0:n,1:o}=Ct(e);if(n===Dt)i=[t.stylize("","special")];else{t.indentationLvl+=2;const e=Xe(t,o,r);t.indentationLvl-=2,i=[n===Nt?`${t.stylize("","special")} ${e}`:e]}return i}function gr(t,e,r,i,n,o,s=e){let a,h,u=" ";if(void 0!==(o=o||F(e,i)||{value:e[i],enumerable:!0}).value){const e=!0!==t.compact||0!==n?2:3;t.indentationLvl+=e,h=Xe(t,o.value,r),3===e&&t.breakLength`;h=`${i(`[${e}:`,n)} ${r}${i("]",n)}`}else h=t.stylize(`[${e}]`,n)}else h=void 0!==o.set?t.stylize("[Setter]","special"):t.stylize("undefined","undefined");if(1===n)return h;if("symbol"==typeof i){const e=ct(pt(i),me,Fe);a=`[${t.stylize(e,"symbol")}]`}else a="__proto__"===i?"['__proto__']":!1===o.enumerable?`[${ct(i,me,Fe)}]`:P(be,i)?t.stylize(i,"name"):t.stylize(Le(i),"string");return`${a}:${u}${h}`}function Ar(t,e,r,i){let n=e.length+r;if(n+e.length>t.breakLength)return!1;for(let r=0;rt.breakLength)return!1;return""===i||!st(i,"\n")}function Mr(t,e,r,i,n,s,a){if(!0!==t.compact){if("number"==typeof t.compact&&t.compact>=1){const h=e.length;if(2===n&&h>6&&(e=function(t,e,r){let i=0,n=0,s=0,a=e.length;t.maxArrayLength5||n<=6)){const n=2.5,o=D(l-i/e.length),s=v(l-3-o,1),c=C(Q(D(n*s*a)/s),I((t.breakLength-t.indentationLvl)/l),4*t.compact,15);if(c<=1)return e;const f=[],d=[];for(let t=0;tr&&(r=h[i]);r+=2,d[t]=r}let g=ut;if(void 0!==r)for(let t=0;tdt(t.message,"\n",1)[0];let Br;function mr(t){try{return E(t)}catch(t){if(!Br)try{const t={};t.a=t,E(t)}catch(t){Br=wr(t)}if("TypeError"===t.name&&wr(t)===Br)return"[Circular]";throw t}}function Er(t,e){const r=e[0];let i=0,n="",o="";if("string"==typeof r){if(1===e.length)return r;let s,a=0;for(let o=0;o=127){i+=t.getStringWidth(e.slice(r).normalize("NFC"));break}i+=n>=32?1:0}return i}}else{Ue=function(r,i=!0){let n=0;i&&(r=yr(r)),r=at(r,"NFC");for(const i of new q(r)){const r=ot(i,0);t(r)?n+=2:e(r)||n++}return n};const t=t=>t>=4352&&(t<=4447||9001===t||9002===t||t>=11904&&t<=12871&&12351!==t||t>=12880&&t<=19903||t>=19968&&t<=42182||t>=43360&&t<=43388||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65131||t>=65281&&t<=65376||t>=65504&&t<=65510||t>=110592&&t<=110593||t>=127488&&t<=127569||t>=127744&&t<=128591||t>=131072&&t<=262141),e=t=>t<=31||t>=127&&t<=159||t>=768&&t<=879||t>=8203&&t<=8207||t>=8400&&t<=8447||t>=65024&&t<=65039||t>=65056&&t<=65071||t>=917760&&t<=917999}function yr(t){return t.replace(Ge,"")}t.exports={inspect:Ve,format:function(...t){return Er(void 0,t)},formatWithOptions:function(t,...e){if("object"!=typeof t||null===t)throw new jt("inspectOptions","object",t);return Er(t,e)},getStringWidth:Ue,inspectDefaultOptions:we,stripVTControlCharacters:yr,stylizeWithColor:je,stylizeWithHTML(t,e){const r=Ve.styles[e];return void 0!==r?`${t}`:t},Proxy:Tt}},183:t=>{t.exports=function(t){if(!t)throw new Error("Assertion failed")}},992:(t,e)=>{e.NativeModule={exists:t=>!t.startsWith("/")}},101:(t,e,r)=>{const{ArrayIsArray:i,ArrayPrototypeIncludes:n,ArrayPrototypeIndexOf:o,ArrayPrototypeJoin:s,ArrayPrototypePop:a,ArrayPrototypePush:h,ArrayPrototypeSplice:u,ErrorCaptureStackTrace:l,ObjectDefineProperty:c,ReflectApply:f,RegExpPrototypeTest:d,SafeMap:g,StringPrototypeEndsWith:A,StringPrototypeIncludes:M,StringPrototypeSlice:p,StringPrototypeToLowerCase:w}=r(765),B=new g,m={},E=/^([A-Z][a-z0-9]*)+$/,y=["string","function","number","object","Function","Object","boolean","bigint","symbol"];let b,I,v=null;function C(){return v||(v=r(48)),v}const Q=D((function(t,e,r){(t=N(t)).name=`${e} [${r}]`,t.stack,delete t.name}));function D(t){const e="__node_internal_"+t.name;return c(t,"name",{value:e}),t}const N=D((function(t){return b=Error.stackTraceLimit,Error.stackTraceLimit=1/0,l(t),Error.stackTraceLimit=b,t}));let R,G;var U,V,S,T,Y;t.exports={codes:m,hideStackFrames:D,isStackOverflowError:function(t){if(void 0===G)try{!function t(){t()}()}catch(t){G=t.message,R=t.name}return t&&t.name===R&&t.message===G}},U="ERR_INVALID_ARG_TYPE",V=(t,e,r)=>{I("string"==typeof t,"'name' must be a string"),i(e)||(e=[e]);let l="The ";A(t," argument")?l+=`${t} `:l+=`"${t}" ${M(t,".")?"property":"argument"} `,l+="must be ";const c=[],f=[],g=[];for(const t of e)I("string"==typeof t,"All expected entries have to be of type string"),n(y,t)?h(c,w(t)):d(E,t)?h(f,t):(I("object"!==t,'The value "object" should be written as "Object"'),h(g,t));if(f.length>0){const t=o(c,"object");-1!==t&&(u(c,t,1),h(f,"Object"))}if(c.length>0){if(c.length>2){const t=a(c);l+=`one of type ${s(c,", ")}, or ${t}`}else l+=2===c.length?`one of type ${c[0]} or ${c[1]}`:`of type ${c[0]}`;(f.length>0||g.length>0)&&(l+=" or ")}if(f.length>0){if(f.length>2){const t=a(f);l+=`an instance of ${s(f,", ")}, or ${t}`}else l+=`an instance of ${f[0]}`,2===f.length&&(l+=` or ${f[1]}`);g.length>0&&(l+=" or ")}if(g.length>0)if(g.length>2){const t=a(g);l+=`one of ${s(g,", ")}, or ${t}`}else 2===g.length?l+=`one of ${g[0]} or ${g[1]}`:(w(g[0])!==g[0]&&(l+="an "),l+=`${g[0]}`);if(null==r)l+=`. Received ${r}`;else if("function"==typeof r&&r.name)l+=`. Received function ${r.name}`;else if("object"==typeof r)r.constructor&&r.constructor.name?l+=`. Received an instance of ${r.constructor.name}`:l+=`. Received ${C().inspect(r,{depth:-1})}`;else{let t=C().inspect(r,{colors:!1});t.length>25&&(t=`${p(t,0,25)}...`),l+=`. Received type ${typeof r} (${t})`}return l},S=TypeError,B.set(U,V),m[U]=(T=S,Y=U,function(...t){const e=Error.stackTraceLimit;Error.stackTraceLimit=0;const i=new T;Error.stackTraceLimit=e;const n=function(t,e,i){const n=B.get(t);return void 0===I&&(I=r(183)),I("function"==typeof n),I(n.length<=e.length,`Code: ${t}; The provided arguments length (${e.length}) does not match the required ones (${n.length}).`),f(n,i,e)}(Y,t,i);return c(i,"message",{value:n,enumerable:!1,writable:!0,configurable:!0}),c(i,"toString",{value(){return`${this.name} [${Y}]: ${this.message}`},enumerable:!1,writable:!0,configurable:!0}),Q(i,T.name,Y),i.code=Y,i})},335:t=>{const e=/\u001b\[\d\d?m/g;t.exports={customInspectSymbol:Symbol.for("nodejs.util.inspect.custom"),isError:t=>t instanceof Error,join:Array.prototype.join.call.bind(Array.prototype.join),removeColors:t=>String.prototype.replace.call(t,e,"")}},63:(t,e,r)=>{const{getConstructorName:i}=r(891);function n(t,...e){for(const r of e){const e=globalThis[r];if(e&&t instanceof e)return!0}for(;t;){if("object"!=typeof t)return!1;if(e.indexOf(i(t))>=0)return!0;t=Object.getPrototypeOf(t)}return!1}function o(t){return e=>{if(!n(e,t.name))return!1;try{t.prototype.valueOf.call(e)}catch{return!1}return!0}}"object"!=typeof globalThis&&(Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__);const s=o(String),a=o(Number),h=o(Boolean),u=o(BigInt),l=o(Symbol);t.exports={isAsyncFunction:t=>"function"==typeof t&&Function.prototype.toString.call(t).startsWith("async"),isGeneratorFunction:t=>"function"==typeof t&&Function.prototype.toString.call(t).match(/^(async\s+)?function *\*/),isAnyArrayBuffer:t=>n(t,"ArrayBuffer","SharedArrayBuffer"),isArrayBuffer:t=>n(t,"ArrayBuffer"),isArgumentsObject:t=>!1,isBoxedPrimitive:t=>a(t)||s(t)||h(t)||u(t)||l(t),isDataView:t=>n(t,"DataView"),isExternal:t=>"object"==typeof t&&Object.isFrozen(t)&&null==Object.getPrototypeOf(t),isMap(t){if(!n(t,"Map"))return!1;try{t.has()}catch{return!1}return!0},isMapIterator:t=>"[object Map Iterator]"===Object.prototype.toString.call(Object.getPrototypeOf(t)),isModuleNamespaceObject:t=>t&&"object"==typeof t&&"Module"===t[Symbol.toStringTag],isNativeError:t=>t instanceof Error&&n(t,"Error","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","AggregateError"),isPromise:t=>n(t,"Promise"),isSet(t){if(!n(t,"Set"))return!1;try{t.has()}catch{return!1}return!0},isSetIterator:t=>"[object Set Iterator]"===Object.prototype.toString.call(Object.getPrototypeOf(t)),isWeakMap:t=>n(t,"WeakMap"),isWeakSet:t=>n(t,"WeakSet"),isRegExp:t=>n(t,"RegExp"),isDate(t){if(n(t,"Date"))try{return Date.prototype.getTime.call(t),!0}catch{}return!1},isTypedArray:t=>n(t,"Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"),isStringObject:s,isNumberObject:a,isBooleanObject:h,isBigIntObject:u,isSymbolObject:l}},356:(t,e,r)=>{const{hideStackFrames:i,codes:{ERR_INVALID_ARG_TYPE:n}}=r(101);e.validateObject=i(((t,e,{nullable:r=!1}={})=>{if(!r&&null===t||Array.isArray(t)||"object"!=typeof t)throw new n(e,"Object",t)}))},765:t=>{const e=(t,e)=>{class r{constructor(e){this._iterator=t(e)}next(){return e(this._iterator)}[Symbol.iterator](){return this}}return Object.setPrototypeOf(r.prototype,null),Object.freeze(r.prototype),Object.freeze(r),r};function r(t,e){return Function.prototype.call.bind(t.prototype.__lookupGetter__(e))}function i(t){return Function.prototype.call.bind(t)}const n=(t,e)=>{Array.prototype.forEach.call(Reflect.ownKeys(t),(r=>{Reflect.getOwnPropertyDescriptor(e,r)||Reflect.defineProperty(e,r,Reflect.getOwnPropertyDescriptor(t,r))}))},o=(t,r)=>{if(Symbol.iterator in t.prototype){const n=new t;let o;Array.prototype.forEach.call(Reflect.ownKeys(t.prototype),(s=>{if(!Reflect.getOwnPropertyDescriptor(r.prototype,s)){const a=Reflect.getOwnPropertyDescriptor(t.prototype,s);if("function"==typeof a.value&&0===a.value.length&&Symbol.iterator in(Function.prototype.call.call(a.value,n)||{})){const t=i(a.value);null==o&&(o=i(t(n).next));const r=e(t,o);a.value=function(){return new r(this)}}Reflect.defineProperty(r.prototype,s,a)}}))}else n(t.prototype,r.prototype);return n(t,r),Object.setPrototypeOf(r.prototype,null),Object.freeze(r.prototype),Object.freeze(r),r},s=Function.prototype.call.bind(String.prototype[Symbol.iterator]),a=Reflect.getPrototypeOf(s(""));t.exports={makeSafe:o,internalBinding(t){if("config"===t)return{hasIntl:!1};throw new Error(`unknown module: "${t}"`)},Array,ArrayIsArray:Array.isArray,ArrayPrototypeFilter:Function.prototype.call.bind(Array.prototype.filter),ArrayPrototypeForEach:Function.prototype.call.bind(Array.prototype.forEach),ArrayPrototypeIncludes:Function.prototype.call.bind(Array.prototype.includes),ArrayPrototypeIndexOf:Function.prototype.call.bind(Array.prototype.indexOf),ArrayPrototypeJoin:Function.prototype.call.bind(Array.prototype.join),ArrayPrototypePop:Function.prototype.call.bind(Array.prototype.pop),ArrayPrototypePush:Function.prototype.call.bind(Array.prototype.push),ArrayPrototypePushApply:Function.apply.bind(Array.prototype.push),ArrayPrototypeSort:Function.prototype.call.bind(Array.prototype.sort),ArrayPrototypeSplice:Function.prototype.call.bind(Array.prototype.slice),ArrayPrototypeUnshift:Function.prototype.call.bind(Array.prototype.unshift),BigIntPrototypeValueOf:Function.prototype.call.bind(BigInt.prototype.valueOf),BooleanPrototypeValueOf:Function.prototype.call.bind(Boolean.prototype.valueOf),DatePrototypeGetTime:Function.prototype.call.bind(Date.prototype.getTime),DatePrototypeToISOString:Function.prototype.call.bind(Date.prototype.toISOString),DatePrototypeToString:Function.prototype.call.bind(Date.prototype.toString),ErrorCaptureStackTrace:function(t){const e=(new Error).stack;t.stack=e.replace(/.*\n.*/,"$1")},ErrorPrototypeToString:Function.prototype.call.bind(Error.prototype.toString),FunctionPrototypeCall:Function.prototype.call.bind(Function.prototype.call),FunctionPrototypeToString:Function.prototype.call.bind(Function.prototype.toString),JSONStringify:JSON.stringify,MapPrototypeGetSize:r(Map,"size"),MapPrototypeEntries:Function.prototype.call.bind(Map.prototype.entries),MathFloor:Math.floor,MathMax:Math.max,MathMin:Math.min,MathRound:Math.round,MathSqrt:Math.sqrt,Number,NumberIsNaN:Number.isNaN,NumberParseFloat:Number.parseFloat,NumberParseInt:Number.parseInt,NumberPrototypeValueOf:Function.prototype.call.bind(Number.prototype.valueOf),Object,ObjectAssign:Object.assign,ObjectCreate:Object.create,ObjectDefineProperty:Object.defineProperty,ObjectGetOwnPropertyDescriptor:Object.getOwnPropertyDescriptor,ObjectGetOwnPropertyNames:Object.getOwnPropertyNames,ObjectGetOwnPropertySymbols:Object.getOwnPropertySymbols,ObjectGetPrototypeOf:Object.getPrototypeOf,ObjectIs:Object.is,ObjectKeys:Object.keys,ObjectPrototypeHasOwnProperty:Function.prototype.call.bind(Object.prototype.hasOwnProperty),ObjectPrototypePropertyIsEnumerable:Function.prototype.call.bind(Object.prototype.propertyIsEnumerable),ObjectSeal:Object.seal,ObjectSetPrototypeOf:Object.setPrototypeOf,ReflectApply:Reflect.apply,ReflectOwnKeys:Reflect.ownKeys,RegExp,RegExpPrototypeTest:Function.prototype.call.bind(RegExp.prototype.test),RegExpPrototypeToString:Function.prototype.call.bind(RegExp.prototype.toString),SafeStringIterator:e(s,Function.prototype.call.bind(a.next)),SafeMap:o(Map,class extends Map{constructor(t){super(t)}}),SafeSet:o(Set,class extends Set{constructor(t){super(t)}}),SetPrototypeGetSize:r(Set,"size"),SetPrototypeValues:Function.prototype.call.bind(Set.prototype.values),String,StringPrototypeCharCodeAt:Function.prototype.call.bind(String.prototype.charCodeAt),StringPrototypeCodePointAt:Function.prototype.call.bind(String.prototype.codePointAt),StringPrototypeEndsWith:Function.prototype.call.bind(String.prototype.endsWith),StringPrototypeIncludes:Function.prototype.call.bind(String.prototype.includes),StringPrototypeNormalize:Function.prototype.call.bind(String.prototype.normalize),StringPrototypePadEnd:Function.prototype.call.bind(String.prototype.padEnd),StringPrototypePadStart:Function.prototype.call.bind(String.prototype.padStart),StringPrototypeRepeat:Function.prototype.call.bind(String.prototype.repeat),StringPrototypeReplace:Function.prototype.call.bind(String.prototype.replace),StringPrototypeSlice:Function.prototype.call.bind(String.prototype.slice),StringPrototypeSplit:Function.prototype.call.bind(String.prototype.split),StringPrototypeToLowerCase:Function.prototype.call.bind(String.prototype.toLowerCase),StringPrototypeTrim:Function.prototype.call.bind(String.prototype.trim),StringPrototypeValueOf:Function.prototype.call.bind(String.prototype.valueOf),SymbolPrototypeToString:Function.prototype.call.bind(Symbol.prototype.toString),SymbolPrototypeValueOf:Function.prototype.call.bind(Symbol.prototype.valueOf),SymbolIterator:Symbol.iterator,SymbolFor:Symbol.for,SymbolToStringTag:Symbol.toStringTag,TypedArrayPrototypeGetLength:t=>t.constructor.prototype.__lookupGetter__("length").call(t),Uint8Array,uncurryThis:i}},161:t=>{const e=new WeakMap;class r{constructor(t,r){const i=new Proxy(t,r);return e.set(i,[t,r]),i}static getProxyDetails(t,r=!0){const i=e.get(t);if(i)return r?i:i[0]}}t.exports={getProxyDetails:r.getProxyDetails.bind(r),Proxy:r}},891:(t,e,r)=>{const i=r(161),n=Symbol("kPending"),o=Symbol("kRejected");t.exports={getOwnNonIndexProperties:function(t,e=2){const r=Object.getOwnPropertyDescriptors(t),i=[];for(const[t,n]of Object.entries(r))if(!/^(0|[1-9][0-9]*)$/.test(t)||parseInt(t,10)>=2**32-1){if(2===e&&!n.enumerable)continue;i.push(t)}for(const r of Object.getOwnPropertySymbols(t)){const n=Object.getOwnPropertyDescriptor(t,r);(2!==e||n.enumerable)&&i.push(r)}return i},getPromiseDetails:()=>[n,void 0],getProxyDetails:i.getProxyDetails,Proxy:i.Proxy,kPending:n,kRejected:o,previewEntries:t=>[[],!1],getConstructorName(t){if(!t||"object"!=typeof t)throw new Error("Invalid object");if(t.constructor&&t.constructor.name)return t.constructor.name;const e=Object.prototype.toString.call(t).match(/^\[object ([^\]]+)\]/);return e?e[1]:"Object"},getExternalValue:()=>BigInt(0),propertyFilter:{ALL_PROPERTIES:0,ONLY_ENUMERABLE:2}}}},e={};function r(i){var n=e[i];if(void 0!==n)return n.exports;var o=e[i]={exports:{}};return t[i](o,o.exports,r),o.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r(48)})()},155:t=>{var e,r,i=t.exports={};function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(e===setTimeout)return setTimeout(t,0);if((e===n||!e)&&setTimeout)return e=setTimeout,setTimeout(t,0);try{return e(t,0)}catch(r){try{return e.call(null,t,0)}catch(r){return e.call(this,t,0)}}}!function(){try{e="function"==typeof setTimeout?setTimeout:n}catch(t){e=n}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var a,h=[],u=!1,l=-1;function c(){u&&a&&(u=!1,a.length?h=a.concat(h):l=-1,h.length&&f())}function f(){if(!u){var t=s(c);u=!0;for(var e=h.length;e;){for(a=h,h=[];++l1)for(var r=1;r{"use strict";var e={};function r(t,r,i){i||(i=Error);var n=function(t){var e,i;function n(e,i,n){return t.call(this,function(t,e,i){return"string"==typeof r?r:r(t,e,i)}(e,i,n))||this}return i=t,(e=n).prototype=Object.create(i.prototype),e.prototype.constructor=e,e.__proto__=i,n}(i);n.prototype.name=i.name,n.prototype.code=t,e[t]=n}function i(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map((function(t){return String(t)})),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",(function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'}),TypeError),r("ERR_INVALID_ARG_TYPE",(function(t,e,r){var n,o,s,a,h;if("string"==typeof e&&(o="not ",e.substr(0,o.length)===o)?(n="must not be",e=e.replace(/^not /,"")):n="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t," argument"))s="The ".concat(t," ").concat(n," ").concat(i(e,"type"));else{var u=("number"!=typeof h&&(h=0),h+".".length>(a=t).length||-1===a.indexOf(".",h)?"argument":"property");s='The "'.concat(t,'" ').concat(u," ").concat(n," ").concat(i(e,"type"))}return s+". Received type ".concat(typeof r)}),TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",(function(t){return"The "+t+" method is not implemented"})),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",(function(t){return"Cannot call "+t+" after a stream was destroyed"})),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",(function(t){return"Unknown encoding: "+t}),TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.q=e},753:(t,e,r)=>{"use strict";var i=r(155),n=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=l;var o=r(481),s=r(229);r(717)(l,o);for(var a=n(s.prototype),h=0;h{"use strict";t.exports=n;var i=r(605);function n(t){if(!(this instanceof n))return new n(t);i.call(this,t)}r(717)(n,i),n.prototype._transform=function(t,e,r){r(null,t)}},481:(t,e,r)=>{"use strict";var i,n=r(155);t.exports=v,v.ReadableState=I,r(187).EventEmitter;var o,s=function(t,e){return t.listeners(e).length},a=r(503),h=r(764).Buffer,u=r.g.Uint8Array||function(){},l=r(669);o=l&&l.debuglog?l.debuglog("stream"):function(){};var c,f,d,g=r(327),A=r(195),M=r(457).getHighWaterMark,p=r(281).q,w=p.ERR_INVALID_ARG_TYPE,B=p.ERR_STREAM_PUSH_AFTER_EOF,m=p.ERR_METHOD_NOT_IMPLEMENTED,E=p.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r(717)(v,a);var y=A.errorOrDestroy,b=["error","close","destroy","pause","resume"];function I(t,e,n){i=i||r(753),t=t||{},"boolean"!=typeof n&&(n=e instanceof i),this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=M(this,t,"readableHighWaterMark",n),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(c||(c=r(553).s),this.decoder=new c(t.encoding),this.encoding=t.encoding)}function v(t){if(i=i||r(753),!(this instanceof v))return new v(t);var e=this instanceof i;this._readableState=new I(t,this,e),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),a.call(this)}function C(t,e,r,i,n){o("readableAddChunk",e);var s,a=t._readableState;if(null===e)a.reading=!1,function(t,e){if(o("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?R(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,G(t)))}}(t,a);else if(n||(s=function(t,e){var r,i;return i=e,h.isBuffer(i)||i instanceof u||"string"==typeof e||void 0===e||t.objectMode||(r=new w("chunk",["string","Buffer","Uint8Array"],e)),r}(a,e)),s)y(t,s);else if(a.objectMode||e&&e.length>0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===h.prototype||(e=function(t){return h.from(t)}(e)),i)a.endEmitted?y(t,new E):Q(t,a,e,!0);else if(a.ended)y(t,new B);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?Q(t,a,e,!1):U(t,a)):Q(t,a,e,!1)}else i||(a.reading=!1,U(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=D?t=D:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function R(t){var e=t._readableState;o("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(o("emitReadable",e.flowing),e.emittedReadable=!0,n.nextTick(G,t))}function G(t){var e=t._readableState;o("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,k(t)}function U(t,e){e.readingMore||(e.readingMore=!0,n.nextTick(V,t,e))}function V(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function T(t){o("readable nexttick read 0"),t.read(0)}function Y(t,e){o("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),k(t),e.flowing&&!e.reading&&t.read(0)}function k(t){var e=t._readableState;for(o("flow",e.flowing);e.flowing&&null!==t.read(););}function F(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function L(t){var e=t._readableState;o("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,n.nextTick(j,e,t))}function j(t,e){if(o("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function Z(t,e){for(var r=0,i=t.length;r=e.highWaterMark:e.length>0)||e.ended))return o("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?L(this):R(this),null;if(0===(t=N(t,e))&&e.ended)return 0===e.length&&L(this),null;var i,n=e.needReadable;return o("need readable",n),(0===e.length||e.length-t0?F(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&L(this)),null!==i&&this.emit("data",i),i},v.prototype._read=function(t){y(this,new m("_read()"))},v.prototype.pipe=function(t,e){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=t;break;case 1:i.pipes=[i.pipes,t];break;default:i.pipes.push(t)}i.pipesCount+=1,o("pipe count=%d opts=%j",i.pipesCount,e);var a=e&&!1===e.end||t===n.stdout||t===n.stderr?A:h;function h(){o("onend"),t.end()}i.endEmitted?n.nextTick(a):r.once("end",a),t.on("unpipe",(function e(n,s){o("onunpipe"),n===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,o("cleanup"),t.removeListener("close",d),t.removeListener("finish",g),t.removeListener("drain",u),t.removeListener("error",f),t.removeListener("unpipe",e),r.removeListener("end",h),r.removeListener("end",A),r.removeListener("data",c),l=!0,!i.awaitDrain||t._writableState&&!t._writableState.needDrain||u())}));var u=function(t){return function(){var e=t._readableState;o("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,k(t))}}(r);t.on("drain",u);var l=!1;function c(e){o("ondata");var n=t.write(e);o("dest.write",n),!1===n&&((1===i.pipesCount&&i.pipes===t||i.pipesCount>1&&-1!==Z(i.pipes,t))&&!l&&(o("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function f(e){o("onerror",e),A(),t.removeListener("error",f),0===s(t,"error")&&y(t,e)}function d(){t.removeListener("finish",g),A()}function g(){o("onfinish"),t.removeListener("close",d),A()}function A(){o("unpipe"),r.unpipe(t)}return r.on("data",c),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events.error?Array.isArray(t._events.error)?t._events.error.unshift(r):t._events.error=[r,t._events.error]:t.on(e,r)}(t,"error",f),t.once("close",d),t.once("finish",g),t.emit("pipe",r),i.flowing||(o("pipe resume"),r.resume()),t},v.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o0,!1!==i.flowing&&this.resume()):"readable"===t&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,o("on readable",i.length,i.reading),i.length?R(this):i.reading||n.nextTick(T,this))),r},v.prototype.addListener=v.prototype.on,v.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&n.nextTick(S,this),r},v.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||n.nextTick(S,this),e},v.prototype.resume=function(){var t=this._readableState;return t.flowing||(o("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,n.nextTick(Y,t,e))}(this,t)),t.paused=!1,this},v.prototype.pause=function(){return o("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(o("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},v.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;for(var n in t.on("end",(function(){if(o("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on("data",(function(n){o("wrapped data"),r.decoder&&(n=r.decoder.write(n)),r.objectMode&&null==n||(r.objectMode||n&&n.length)&&(e.push(n)||(i=!0,t.pause()))})),t)void 0===this[n]&&"function"==typeof t[n]&&(this[n]=function(e){return function(){return t[e].apply(t,arguments)}}(n));for(var s=0;s{"use strict";t.exports=l;var i=r(281).q,n=i.ERR_METHOD_NOT_IMPLEMENTED,o=i.ERR_MULTIPLE_CALLBACK,s=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=i.ERR_TRANSFORM_WITH_LENGTH_0,h=r(753);function u(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(null===i)return this.emit("error",new o);r.writechunk=null,r.writecb=null,null!=e&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";var i,n=r(155);function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var i=t.entry;for(t.entry=null;i;){var n=i.callback;e.pendingcb--,n(void 0),i=i.next}e.corkedRequestsFree.next=t}(e,t)}}t.exports=v,v.WritableState=I;var s,a={deprecate:r(927)},h=r(503),u=r(764).Buffer,l=r.g.Uint8Array||function(){},c=r(195),f=r(457).getHighWaterMark,d=r(281).q,g=d.ERR_INVALID_ARG_TYPE,A=d.ERR_METHOD_NOT_IMPLEMENTED,M=d.ERR_MULTIPLE_CALLBACK,p=d.ERR_STREAM_CANNOT_PIPE,w=d.ERR_STREAM_DESTROYED,B=d.ERR_STREAM_NULL_VALUES,m=d.ERR_STREAM_WRITE_AFTER_END,E=d.ERR_UNKNOWN_ENCODING,y=c.errorOrDestroy;function b(){}function I(t,e,s){i=i||r(753),t=t||{},"boolean"!=typeof s&&(s=e instanceof i),this.objectMode=!!t.objectMode,s&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=f(this,t,"writableHighWaterMark",s),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===t.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,i=r.sync,o=r.writecb;if("function"!=typeof o)throw new M;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,i,o){--e.pendingcb,r?(n.nextTick(o,i),n.nextTick(G,t,e),t._writableState.errorEmitted=!0,y(t,i)):(o(i),t._writableState.errorEmitted=!0,y(t,i),G(t,e))}(t,r,i,e,o);else{var s=N(r)||t.destroyed;s||r.corked||r.bufferProcessing||!r.bufferedRequest||D(t,r),i?n.nextTick(Q,t,r,s,o):Q(t,r,s,o)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function v(t){var e=this instanceof(i=i||r(753));if(!e&&!s.call(v,this))return new v(t);this._writableState=new I(t,this,e),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),h.call(this)}function C(t,e,r,i,n,o,s){e.writelen=i,e.writecb=s,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new w("write")):r?t._writev(n,e.onwrite):t._write(n,o,e.onwrite),e.sync=!1}function Q(t,e,r,i){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,i(),G(t,e)}function D(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var i=e.bufferedRequestCount,n=new Array(i),s=e.corkedRequestsFree;s.entry=r;for(var a=0,h=!0;r;)n[a]=r,r.isBuf||(h=!1),r=r.next,a+=1;n.allBuffers=h,C(t,e,!0,e.length,n,"",s.finish),e.pendingcb++,e.lastBufferedRequest=null,s.next?(e.corkedRequestsFree=s.next,s.next=null):e.corkedRequestsFree=new o(e),e.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,l=r.encoding,c=r.callback;if(C(t,e,!1,e.objectMode?1:u.length,u,l,c),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function N(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function R(t,e){t._final((function(r){e.pendingcb--,r&&y(t,r),e.prefinished=!0,t.emit("prefinish"),G(t,e)}))}function G(t,e){var r=N(e);if(r&&(function(t,e){e.prefinished||e.finalCalled||("function"!=typeof t._final||e.destroyed?(e.prefinished=!0,t.emit("prefinish")):(e.pendingcb++,e.finalCalled=!0,n.nextTick(R,t,e)))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"),e.autoDestroy))){var i=t._readableState;(!i||i.autoDestroy&&i.endEmitted)&&t.destroy()}return r}r(717)(v,h),I.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(I.prototype,"buffer",{get:a.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(s=Function.prototype[Symbol.hasInstance],Object.defineProperty(v,Symbol.hasInstance,{value:function(t){return!!s.call(this,t)||this===v&&t&&t._writableState instanceof I}})):s=function(t){return t instanceof this},v.prototype.pipe=function(){y(this,new p)},v.prototype.write=function(t,e,r){var i,o=this._writableState,s=!1,a=!o.objectMode&&(i=t,u.isBuffer(i)||i instanceof l);return a&&!u.isBuffer(t)&&(t=function(t){return u.from(t)}(t)),"function"==typeof e&&(r=e,e=null),a?e="buffer":e||(e=o.defaultEncoding),"function"!=typeof r&&(r=b),o.ending?function(t,e){var r=new m;y(t,r),n.nextTick(e,r)}(this,r):(a||function(t,e,r,i){var o;return null===r?o=new B:"string"==typeof r||e.objectMode||(o=new g("chunk",["string","Buffer"],r)),!o||(y(t,o),n.nextTick(i,o),!1)}(this,o,t,r))&&(o.pendingcb++,s=function(t,e,r,i,n,o){if(!r){var s=function(t,e,r){return t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=u.from(e,r)),e}(e,i,n);i!==s&&(r=!0,n="buffer",i=s)}var a=e.objectMode?1:i.length;e.length+=a;var h=e.length-1))throw new E(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(v.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(v.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),v.prototype._write=function(t,e,r){r(new A("_write()"))},v.prototype._writev=null,v.prototype.end=function(t,e,r){var i=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||function(t,e,r){e.ending=!0,G(t,e),r&&(e.finished?n.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,i,r),this},Object.defineProperty(v.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(v.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),v.prototype.destroy=c.destroy,v.prototype._undestroy=c.undestroy,v.prototype._destroy=function(t,e){e(t)}},850:(t,e,r)=>{"use strict";var i,n=r(155);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(610),a=Symbol("lastResolve"),h=Symbol("lastReject"),u=Symbol("error"),l=Symbol("ended"),c=Symbol("lastPromise"),f=Symbol("handlePromise"),d=Symbol("stream");function g(t,e){return{value:t,done:e}}function A(t){var e=t[a];if(null!==e){var r=t[d].read();null!==r&&(t[c]=null,t[a]=null,t[h]=null,e(g(r,!1)))}}function M(t){n.nextTick(A,t)}var p=Object.getPrototypeOf((function(){})),w=Object.setPrototypeOf((o(i={get stream(){return this[d]},next:function(){var t=this,e=this[u];if(null!==e)return Promise.reject(e);if(this[l])return Promise.resolve(g(void 0,!0));if(this[d].destroyed)return new Promise((function(e,r){n.nextTick((function(){t[u]?r(t[u]):e(g(void 0,!0))}))}));var r,i=this[c];if(i)r=new Promise(function(t,e){return function(r,i){t.then((function(){e[l]?r(g(void 0,!0)):e[f](r,i)}),i)}}(i,this));else{var o=this[d].read();if(null!==o)return Promise.resolve(g(o,!1));r=new Promise(this[f])}return this[c]=r,r}},Symbol.asyncIterator,(function(){return this})),o(i,"return",(function(){var t=this;return new Promise((function(e,r){t[d].destroy(null,(function(t){t?r(t):e(g(void 0,!0))}))}))})),i),p);t.exports=function(t){var e,r=Object.create(w,(o(e={},d,{value:t,writable:!0}),o(e,a,{value:null,writable:!0}),o(e,h,{value:null,writable:!0}),o(e,u,{value:null,writable:!0}),o(e,l,{value:t._readableState.endEmitted,writable:!0}),o(e,f,{value:function(t,e){var i=r[d].read();i?(r[c]=null,r[a]=null,r[h]=null,t(g(i,!1))):(r[a]=t,r[h]=e)},writable:!0}),e));return r[c]=null,s(t,(function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[h];return null!==e&&(r[c]=null,r[a]=null,r[h]=null,e(t)),void(r[u]=t)}var i=r[a];null!==i&&(r[c]=null,r[a]=null,r[h]=null,i(g(void 0,!0))),r[l]=!0})),t.on("readable",M.bind(null,r)),r}},327:(t,e,r)=>{"use strict";function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var o=r(764).Buffer,s=r(669).inspect,a=s&&s.custom||"inspect";t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}var e;return(e=[{key:"push",value:function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return o.alloc(0);for(var e,r,i,n=o.allocUnsafe(t>>>0),s=this.head,a=0;s;)e=s.data,r=n,i=a,o.prototype.copy.call(e,r,i),a+=s.data.length,s=s.next;return n}},{key:"consume",value:function(t,e){var r;return tn.length?n.length:t;if(o===n.length?i+=n:i+=n.slice(0,t),0==(t-=o)){o===n.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(o));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(t){var e=o.allocUnsafe(t),r=this.head,i=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var n=r.data,s=t>n.length?n.length:t;if(n.copy(e,e.length-t,0,s),0==(t-=s)){s===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(s));break}++i}return this.length-=i,e}},{key:a,value:function(t,e){return s(this,function(t){for(var e=1;e{"use strict";var i=r(155);function n(t,e){s(t,e),o(t)}function o(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,h=this._writableState&&this._writableState.destroyed;return a||h?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,i.nextTick(s,this,t)):i.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!e&&t?r._writableState?r._writableState.errorEmitted?i.nextTick(o,r):(r._writableState.errorEmitted=!0,i.nextTick(n,r,t)):i.nextTick(n,r,t):e?(i.nextTick(o,r),e(t)):i.nextTick(o,r)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}}},610:(t,e,r)=>{"use strict";var i=r(281).q.ERR_STREAM_PREMATURE_CLOSE;function n(){}t.exports=function t(e,r,o){if("function"==typeof r)return t(e,null,r);r||(r={}),o=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{t.exports=function(){throw new Error("Readable.from is not available in the browser")}},946:(t,e,r)=>{"use strict";var i,n=r(281).q,o=n.ERR_MISSING_ARGS,s=n.ERR_STREAM_DESTROYED;function a(t){if(t)throw t}function h(t,e,n,o){o=function(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}(o);var a=!1;t.on("close",(function(){a=!0})),void 0===i&&(i=r(610)),i(t,{readable:e,writable:n},(function(t){if(t)return o(t);a=!0,o()}));var h=!1;return function(e){if(!a&&!h)return h=!0,function(t){return t.setHeader&&"function"==typeof t.abort}(t)?t.abort():"function"==typeof t.destroy?t.destroy():void o(e||new s("pipe"))}}function u(t){t()}function l(t,e){return t.pipe(e)}function c(t){return t.length?"function"!=typeof t[t.length-1]?a:t.pop():a}t.exports=function(){for(var t=arguments.length,e=new Array(t),r=0;r0,(function(t){i||(i=t),t&&s.forEach(u),o||(s.forEach(u),n(i))}))}));return e.reduce(l)}},457:(t,e,r)=>{"use strict";var i=r(281).q.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,n){var o=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,n,r);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new i(n?r:"highWaterMark",o);return Math.floor(o)}return t.objectMode?16:16384}}},503:(t,e,r)=>{t.exports=r(187).EventEmitter},509:(t,e,r)=>{var i=r(764),n=i.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function s(t,e,r){return n(t,e,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=i:(o(i,e),e.Buffer=s),s.prototype=Object.create(n.prototype),o(n,s),s.from=function(t,e,r){if("number"==typeof t)throw new TypeError("Argument must not be a number");return n(t,e,r)},s.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=n(t);return void 0!==e?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i},s.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n(t)},s.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},830:(t,e,r)=>{t.exports=n;var i=r(187).EventEmitter;function n(){i.call(this)}r(717)(n,i),n.Readable=r(481),n.Writable=r(229),n.Duplex=r(753),n.Transform=r(605),n.PassThrough=r(725),n.finished=r(610),n.pipeline=r(946),n.Stream=n,n.prototype.pipe=function(t,e){var r=this;function n(e){t.writable&&!1===t.write(e)&&r.pause&&r.pause()}function o(){r.readable&&r.resume&&r.resume()}r.on("data",n),t.on("drain",o),t._isStdio||e&&!1===e.end||(r.on("end",a),r.on("close",h));var s=!1;function a(){s||(s=!0,t.end())}function h(){s||(s=!0,"function"==typeof t.destroy&&t.destroy())}function u(t){if(l(),0===i.listenerCount(this,"error"))throw t}function l(){r.removeListener("data",n),t.removeListener("drain",o),r.removeListener("end",a),r.removeListener("close",h),r.removeListener("error",u),t.removeListener("error",u),r.removeListener("end",l),r.removeListener("close",l),t.removeListener("close",l)}return r.on("error",u),t.on("error",u),r.on("end",l),r.on("close",l),t.on("close",l),t.emit("pipe",r),t}},553:(t,e,r)=>{"use strict";var i=r(509).Buffer,n=i.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(i.isEncoding===n||!n(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=h,this.end=u,e=4;break;case"utf8":this.fillLast=a,e=4;break;case"base64":this.text=l,this.end=c,e=3;break;default:return this.write=f,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(e)}function s(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function h(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function u(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function l(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function c(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function f(t){return t.toString(this.encoding)}function d(t){return t&&t.length?this.write(t):""}e.s=o,o.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(2===n?n=0:t.lastNeed=n-3),n):0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},927:(t,e,r)=>{function i(t){try{if(!r.g.localStorage)return!1}catch(t){return!1}var e=r.g.localStorage[t];return null!=e&&"true"===String(e).toLowerCase()}t.exports=function(t,e){if(i("noDeprecation"))return t;var r=!1;return function(){if(!r){if(i("throwDeprecation"))throw new Error(e);i("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}}},669:t=>{"use strict";t.exports=n},937:t=>{"use strict";if(void 0===i){var e=new Error("Cannot find module 'undefined'");throw e.code="MODULE_NOT_FOUND",e}t.exports=i}},e={};function r(i){var n=e[i];if(void 0!==n)return n.exports;var o=e[i]={exports:{}};return t[i].call(o.exports,o,o.exports,r),o.exports}r.d=(t,e)=>{for(var i in e)r.o(e,i)&&!r.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var o={};return(()=>{"use strict";r.r(o),r.d(o,{BigNumber:()=>t.BigNumber,Commented:()=>t.Commented,Decoder:()=>t.Decoder,Diagnose:()=>t.Diagnose,Encoder:()=>t.Encoder,Map:()=>t.Map,Simple:()=>t.Simple,Tagged:()=>t.Tagged,comment:()=>t.UI,decode:()=>t.Jx,decodeAll:()=>t.fI,decodeAllSync:()=>t.cc,decodeFirst:()=>t.h8,decodeFirstSync:()=>t.$u,diagnose:()=>t.M,encode:()=>t.cv,encodeAsync:()=>t.WR,encodeCanonical:()=>t.N2,encodeOne:()=>t.TG,hasBigInt:()=>t.vc,leveldb:()=>t.ww});var t=r(141)})(),o})())},1027:(t,e,r)=>{var i=r(9509).Buffer,n=r(2830).Transform,o=r(2553).s;function s(t){n.call(this),this.hashMode="string"==typeof t,this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}r(5717)(s,n),s.prototype.update=function(t,e,r){"string"==typeof t&&(t=i.from(t,e));var n=this._update(t);return this.hashMode?this:(r&&(n=this._toString(n,r)),n)},s.prototype.setAutoPadding=function(){},s.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},s.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},s.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},s.prototype._transform=function(t,e,r){var i;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(t){i=t}finally{r(i)}},s.prototype._flush=function(t){var e;try{this.push(this.__final())}catch(t){e=t}t(e)},s.prototype._finalOrDigest=function(t){var e=this.__final()||i.alloc(0);return t&&(e=this._toString(e,t,!0)),e},s.prototype._toString=function(t,e,r){if(this._decoder||(this._decoder=new o(e),this._encoding=e),this._encoding!==e)throw new Error("can't switch encodings");var i=this._decoder.write(t);return r&&(i+=this._decoder.end()),i},t.exports=s},6393:(t,e,r)=>{var i=r(8764).Buffer,n=r(6266),o=r(6426);t.exports=function(t){return new a(t)};var s={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};function a(t){this.curveType=s[t],this.curveType||(this.curveType={name:t}),this.curve=new n.ec(this.curveType.name),this.keys=void 0}function h(t,e,r){Array.isArray(t)||(t=t.toArray());var n=new i(t);if(r&&n.length=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,c=67108863&h,f=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=f;d++){var g=u-d|0;l+=(s=(n=0|t.words[g])*(o=0|e.words[d])+c)/67108864|0,c=67108863&s}r.words[u]=0|c,h=0|l}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?l[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=c[t],d=f[t];r="";var g=this.clone();for(g.negative=0;!g.isZero();){var A=g.modn(d).toString(t);r=(g=g.idivn(d)).isZero()?A+r:l[u-A.length]+A+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),l=this.clone();if(h){for(a=0;!l.isZero();a++)s=l.andln(255),l.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],g=8191&d,A=d>>>13,M=0|s[2],p=8191&M,w=M>>>13,B=0|s[3],m=8191&B,E=B>>>13,y=0|s[4],b=8191&y,I=y>>>13,v=0|s[5],C=8191&v,Q=v>>>13,D=0|s[6],N=8191&D,R=D>>>13,G=0|s[7],U=8191&G,V=G>>>13,S=0|s[8],T=8191&S,Y=S>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,x=j>>>13,z=0|a[1],O=8191&z,H=z>>>13,_=0|a[2],W=8191&_,J=_>>>13,X=0|a[3],P=8191&X,K=X>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,lt=0|a[8],ct=8191<,ft=lt>>>13,dt=0|a[9],gt=8191&dt,At=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(c,Z))|0)+((8191&(n=(n=Math.imul(c,x))+Math.imul(f,Z)|0))<<13)|0;u=((o=Math.imul(f,x))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(g,Z),n=(n=Math.imul(g,x))+Math.imul(A,Z)|0,o=Math.imul(A,x);var pt=(u+(i=i+Math.imul(c,O)|0)|0)+((8191&(n=(n=n+Math.imul(c,H)|0)+Math.imul(f,O)|0))<<13)|0;u=((o=o+Math.imul(f,H)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,x))+Math.imul(w,Z)|0,o=Math.imul(w,x),i=i+Math.imul(g,O)|0,n=(n=n+Math.imul(g,H)|0)+Math.imul(A,O)|0,o=o+Math.imul(A,H)|0;var wt=(u+(i=i+Math.imul(c,W)|0)|0)+((8191&(n=(n=n+Math.imul(c,J)|0)+Math.imul(f,W)|0))<<13)|0;u=((o=o+Math.imul(f,J)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(m,Z),n=(n=Math.imul(m,x))+Math.imul(E,Z)|0,o=Math.imul(E,x),i=i+Math.imul(p,O)|0,n=(n=n+Math.imul(p,H)|0)+Math.imul(w,O)|0,o=o+Math.imul(w,H)|0,i=i+Math.imul(g,W)|0,n=(n=n+Math.imul(g,J)|0)+Math.imul(A,W)|0,o=o+Math.imul(A,J)|0;var Bt=(u+(i=i+Math.imul(c,P)|0)|0)+((8191&(n=(n=n+Math.imul(c,K)|0)+Math.imul(f,P)|0))<<13)|0;u=((o=o+Math.imul(f,K)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,x))+Math.imul(I,Z)|0,o=Math.imul(I,x),i=i+Math.imul(m,O)|0,n=(n=n+Math.imul(m,H)|0)+Math.imul(E,O)|0,o=o+Math.imul(E,H)|0,i=i+Math.imul(p,W)|0,n=(n=n+Math.imul(p,J)|0)+Math.imul(w,W)|0,o=o+Math.imul(w,J)|0,i=i+Math.imul(g,P)|0,n=(n=n+Math.imul(g,K)|0)+Math.imul(A,P)|0,o=o+Math.imul(A,K)|0;var mt=(u+(i=i+Math.imul(c,$)|0)|0)+((8191&(n=(n=n+Math.imul(c,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,x))+Math.imul(Q,Z)|0,o=Math.imul(Q,x),i=i+Math.imul(b,O)|0,n=(n=n+Math.imul(b,H)|0)+Math.imul(I,O)|0,o=o+Math.imul(I,H)|0,i=i+Math.imul(m,W)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,J)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,K)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,K)|0,i=i+Math.imul(g,$)|0,n=(n=n+Math.imul(g,tt)|0)+Math.imul(A,$)|0,o=o+Math.imul(A,tt)|0;var Et=(u+(i=i+Math.imul(c,rt)|0)|0)+((8191&(n=(n=n+Math.imul(c,it)|0)+Math.imul(f,rt)|0))<<13)|0;u=((o=o+Math.imul(f,it)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,Z),n=(n=Math.imul(N,x))+Math.imul(R,Z)|0,o=Math.imul(R,x),i=i+Math.imul(C,O)|0,n=(n=n+Math.imul(C,H)|0)+Math.imul(Q,O)|0,o=o+Math.imul(Q,H)|0,i=i+Math.imul(b,W)|0,n=(n=n+Math.imul(b,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,i=i+Math.imul(m,P)|0,n=(n=n+Math.imul(m,K)|0)+Math.imul(E,P)|0,o=o+Math.imul(E,K)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(g,rt)|0,n=(n=n+Math.imul(g,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0;var yt=(u+(i=i+Math.imul(c,ot)|0)|0)+((8191&(n=(n=n+Math.imul(c,st)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(U,Z),n=(n=Math.imul(U,x))+Math.imul(V,Z)|0,o=Math.imul(V,x),i=i+Math.imul(N,O)|0,n=(n=n+Math.imul(N,H)|0)+Math.imul(R,O)|0,o=o+Math.imul(R,H)|0,i=i+Math.imul(C,W)|0,n=(n=n+Math.imul(C,J)|0)+Math.imul(Q,W)|0,o=o+Math.imul(Q,J)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,K)|0)+Math.imul(I,P)|0,o=o+Math.imul(I,K)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(g,ot)|0,n=(n=n+Math.imul(g,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0;var bt=(u+(i=i+Math.imul(c,ht)|0)|0)+((8191&(n=(n=n+Math.imul(c,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,x))+Math.imul(Y,Z)|0,o=Math.imul(Y,x),i=i+Math.imul(U,O)|0,n=(n=n+Math.imul(U,H)|0)+Math.imul(V,O)|0,o=o+Math.imul(V,H)|0,i=i+Math.imul(N,W)|0,n=(n=n+Math.imul(N,J)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,J)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,K)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,K)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,tt)|0,i=i+Math.imul(m,rt)|0,n=(n=n+Math.imul(m,it)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(g,ht)|0,n=(n=n+Math.imul(g,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0;var It=(u+(i=i+Math.imul(c,ct)|0)|0)+((8191&(n=(n=n+Math.imul(c,ft)|0)+Math.imul(f,ct)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,x))+Math.imul(L,Z)|0,o=Math.imul(L,x),i=i+Math.imul(T,O)|0,n=(n=n+Math.imul(T,H)|0)+Math.imul(Y,O)|0,o=o+Math.imul(Y,H)|0,i=i+Math.imul(U,W)|0,n=(n=n+Math.imul(U,J)|0)+Math.imul(V,W)|0,o=o+Math.imul(V,J)|0,i=i+Math.imul(N,P)|0,n=(n=n+Math.imul(N,K)|0)+Math.imul(R,P)|0,o=o+Math.imul(R,K)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,it)|0,i=i+Math.imul(m,ot)|0,n=(n=n+Math.imul(m,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(g,ct)|0,n=(n=n+Math.imul(g,ft)|0)+Math.imul(A,ct)|0,o=o+Math.imul(A,ft)|0;var vt=(u+(i=i+Math.imul(c,gt)|0)|0)+((8191&(n=(n=n+Math.imul(c,At)|0)+Math.imul(f,gt)|0))<<13)|0;u=((o=o+Math.imul(f,At)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,O),n=(n=Math.imul(F,H))+Math.imul(L,O)|0,o=Math.imul(L,H),i=i+Math.imul(T,W)|0,n=(n=n+Math.imul(T,J)|0)+Math.imul(Y,W)|0,o=o+Math.imul(Y,J)|0,i=i+Math.imul(U,P)|0,n=(n=n+Math.imul(U,K)|0)+Math.imul(V,P)|0,o=o+Math.imul(V,K)|0,i=i+Math.imul(N,$)|0,n=(n=n+Math.imul(N,tt)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,i=i+Math.imul(m,ht)|0,n=(n=n+Math.imul(m,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,i=i+Math.imul(p,ct)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(w,ct)|0,o=o+Math.imul(w,ft)|0;var Ct=(u+(i=i+Math.imul(g,gt)|0)|0)+((8191&(n=(n=n+Math.imul(g,At)|0)+Math.imul(A,gt)|0))<<13)|0;u=((o=o+Math.imul(A,At)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,W),n=(n=Math.imul(F,J))+Math.imul(L,W)|0,o=Math.imul(L,J),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,K)|0)+Math.imul(Y,P)|0,o=o+Math.imul(Y,K)|0,i=i+Math.imul(U,$)|0,n=(n=n+Math.imul(U,tt)|0)+Math.imul(V,$)|0,o=o+Math.imul(V,tt)|0,i=i+Math.imul(N,rt)|0,n=(n=n+Math.imul(N,it)|0)+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,ut)|0,i=i+Math.imul(m,ct)|0,n=(n=n+Math.imul(m,ft)|0)+Math.imul(E,ct)|0,o=o+Math.imul(E,ft)|0;var Qt=(u+(i=i+Math.imul(p,gt)|0)|0)+((8191&(n=(n=n+Math.imul(p,At)|0)+Math.imul(w,gt)|0))<<13)|0;u=((o=o+Math.imul(w,At)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,K))+Math.imul(L,P)|0,o=Math.imul(L,K),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(Y,$)|0,o=o+Math.imul(Y,tt)|0,i=i+Math.imul(U,rt)|0,n=(n=n+Math.imul(U,it)|0)+Math.imul(V,rt)|0,o=o+Math.imul(V,it)|0,i=i+Math.imul(N,ot)|0,n=(n=n+Math.imul(N,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(b,ct)|0,n=(n=n+Math.imul(b,ft)|0)+Math.imul(I,ct)|0,o=o+Math.imul(I,ft)|0;var Dt=(u+(i=i+Math.imul(m,gt)|0)|0)+((8191&(n=(n=n+Math.imul(m,At)|0)+Math.imul(E,gt)|0))<<13)|0;u=((o=o+Math.imul(E,At)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(Y,rt)|0,o=o+Math.imul(Y,it)|0,i=i+Math.imul(U,ot)|0,n=(n=n+Math.imul(U,st)|0)+Math.imul(V,ot)|0,o=o+Math.imul(V,st)|0,i=i+Math.imul(N,ht)|0,n=(n=n+Math.imul(N,ut)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,ut)|0,i=i+Math.imul(C,ct)|0,n=(n=n+Math.imul(C,ft)|0)+Math.imul(Q,ct)|0,o=o+Math.imul(Q,ft)|0;var Nt=(u+(i=i+Math.imul(b,gt)|0)|0)+((8191&(n=(n=n+Math.imul(b,At)|0)+Math.imul(I,gt)|0))<<13)|0;u=((o=o+Math.imul(I,At)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(Y,ot)|0,o=o+Math.imul(Y,st)|0,i=i+Math.imul(U,ht)|0,n=(n=n+Math.imul(U,ut)|0)+Math.imul(V,ht)|0,o=o+Math.imul(V,ut)|0,i=i+Math.imul(N,ct)|0,n=(n=n+Math.imul(N,ft)|0)+Math.imul(R,ct)|0,o=o+Math.imul(R,ft)|0;var Rt=(u+(i=i+Math.imul(C,gt)|0)|0)+((8191&(n=(n=n+Math.imul(C,At)|0)+Math.imul(Q,gt)|0))<<13)|0;u=((o=o+Math.imul(Q,At)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(Y,ht)|0,o=o+Math.imul(Y,ut)|0,i=i+Math.imul(U,ct)|0,n=(n=n+Math.imul(U,ft)|0)+Math.imul(V,ct)|0,o=o+Math.imul(V,ft)|0;var Gt=(u+(i=i+Math.imul(N,gt)|0)|0)+((8191&(n=(n=n+Math.imul(N,At)|0)+Math.imul(R,gt)|0))<<13)|0;u=((o=o+Math.imul(R,At)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,ct)|0,n=(n=n+Math.imul(T,ft)|0)+Math.imul(Y,ct)|0,o=o+Math.imul(Y,ft)|0;var Ut=(u+(i=i+Math.imul(U,gt)|0)|0)+((8191&(n=(n=n+Math.imul(U,At)|0)+Math.imul(V,gt)|0))<<13)|0;u=((o=o+Math.imul(V,At)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,i=Math.imul(F,ct),n=(n=Math.imul(F,ft))+Math.imul(L,ct)|0,o=Math.imul(L,ft);var Vt=(u+(i=i+Math.imul(T,gt)|0)|0)+((8191&(n=(n=n+Math.imul(T,At)|0)+Math.imul(Y,gt)|0))<<13)|0;u=((o=o+Math.imul(Y,At)|0)+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863;var St=(u+(i=Math.imul(F,gt))|0)+((8191&(n=(n=Math.imul(F,At))+Math.imul(L,gt)|0))<<13)|0;return u=((o=Math.imul(L,At))+(n>>>13)|0)+(St>>>26)|0,St&=67108863,h[0]=Mt,h[1]=pt,h[2]=wt,h[3]=Bt,h[4]=mt,h[5]=Et,h[6]=yt,h[7]=bt,h[8]=It,h[9]=vt,h[10]=Ct,h[11]=Qt,h[12]=Dt,h[13]=Nt,h[14]=Rt,h[15]=Gt,h[16]=Ut,h[17]=Vt,h[18]=St,0!==u&&(h[19]=u,r.length++),r};function A(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(g=d),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?g(this,t,e):r<63?d(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):A(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==l||u>=n);u--){var c=0|this.words[u];this.words[u]=l<<26-o|c>>>o,l=c&a}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;c--){var f=67108864*(0|i.words[n.length+c])+(0|i.words[n.length+c-1]);for(f=Math.min(f/s|0,67108863),i._ishlnsubmul(n,f,c);0!==i.negative;)f--,i.negative=0,i._ishlnsubmul(n,1,c),i.isZero()||(i.negative^=1);a&&(a.words[c]=f)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),c=e.clone();!e.isZero();){for(var f=0,d=1;0==(e.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(l),s.isub(c)),n.iushrn(1),s.iushrn(1);for(var g=0,A=1;0==(r.words[0]&A)&&g<26;++g,A<<=1);if(g>0)for(r.iushrn(g);g-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(l),h.isub(c)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var c=0,f=1;0==(r.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(r.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var p={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function B(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function m(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function E(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function I(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(B,w),B.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},B.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(p[t])return p[t];var e;if("k256"===t)e=new B;else if("p224"===t)e=new m;else if("p192"===t)e=new E;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return p[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var c=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),g=s;0!==d.cmp(a);){for(var A=d,M=0;0!==A.cmp(a);M++)A=A.redSqr();i(M=0;i--){for(var u=e.words[i],l=h-1;l>=0;l--){var c=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==c||0!==s?(s<<=1,s|=c,(4==++a||0===i&&0===l)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new I(t)},n(I,b),I.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},I.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},I.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},I.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},I.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},3482:(t,e,r)=>{"use strict";var i=r(5717),n=r(2318),o=r(9785),s=r(9072),a=r(1027);function h(t){a.call(this,"digest"),this._hash=t}i(h,a),h.prototype._update=function(t){this._hash.update(t)},h.prototype._final=function(){return this._hash.digest()},t.exports=function(t){return"md5"===(t=t.toLowerCase())?new n:"rmd160"===t||"ripemd160"===t?new o:new h(s(t))}},8028:(t,e,r)=>{var i=r(2318);t.exports=function(t){return(new i).update(t).digest()}},8355:(t,e,r)=>{"use strict";var i=r(5717),n=r(1031),o=r(1027),s=r(9509).Buffer,a=r(8028),h=r(9785),u=r(9072),l=s.alloc(128);function c(t,e){o.call(this,"digest"),"string"==typeof e&&(e=s.from(e));var r="sha512"===t||"sha384"===t?128:64;this._alg=t,this._key=e,e.length>r?e=("rmd160"===t?new h:u(t)).update(e).digest():e.length{"use strict";var i=r(5717),n=r(9509).Buffer,o=r(1027),s=n.alloc(128),a=64;function h(t,e){o.call(this,"digest"),"string"==typeof e&&(e=n.from(e)),this._alg=t,this._key=e,e.length>a?e=t(e):e.length{"use strict";e.randomBytes=e.rng=e.pseudoRandomBytes=e.prng=r(1798),e.createHash=e.Hash=r(3482),e.createHmac=e.Hmac=r(8355);var i=r(6042),n=Object.keys(i),o=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(n);e.getHashes=function(){return o};var s=r(5632);e.pbkdf2=s.pbkdf2,e.pbkdf2Sync=s.pbkdf2Sync;var a=r(3614);e.Cipher=a.Cipher,e.createCipher=a.createCipher,e.Cipheriv=a.Cipheriv,e.createCipheriv=a.createCipheriv,e.Decipher=a.Decipher,e.createDecipher=a.createDecipher,e.Decipheriv=a.Decipheriv,e.createDecipheriv=a.createDecipheriv,e.getCiphers=a.getCiphers,e.listCiphers=a.listCiphers;var h=r(2607);e.DiffieHellmanGroup=h.DiffieHellmanGroup,e.createDiffieHellmanGroup=h.createDiffieHellmanGroup,e.getDiffieHellman=h.getDiffieHellman,e.createDiffieHellman=h.createDiffieHellman,e.DiffieHellman=h.DiffieHellman;var u=r(4743);e.createSign=u.createSign,e.Sign=u.Sign,e.createVerify=u.createVerify,e.Verify=u.Verify,e.createECDH=r(6393);var l=r(7900);e.publicEncrypt=l.publicEncrypt,e.privateEncrypt=l.privateEncrypt,e.publicDecrypt=l.publicDecrypt,e.privateDecrypt=l.privateDecrypt;var c=r(7963);e.randomFill=c.randomFill,e.randomFillSync=c.randomFillSync,e.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))},e.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},4289:(t,e,r)=>{"use strict";var i=r(2215),n="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),o=Object.prototype.toString,s=Array.prototype.concat,a=Object.defineProperty,h=a&&function(){var t={};try{for(var e in a(t,"x",{enumerable:!1,value:t}),t)return!1;return t.x===t}catch(t){return!1}}(),u=function(t,e,r,i){var n;(!(e in t)||"function"==typeof(n=i)&&"[object Function]"===o.call(n)&&i())&&(h?a(t,e,{configurable:!0,enumerable:!1,value:r,writable:!0}):t[e]=r)},l=function(t,e){var r=arguments.length>2?arguments[2]:{},o=i(e);n&&(o=s.call(o,Object.getOwnPropertySymbols(e)));for(var a=0;a{"use strict";e.utils=r(1278),e.Cipher=r(5756),e.DES=r(778),e.CBC=r(9051),e.EDE=r(651)},9051:(t,e,r)=>{"use strict";var i=r(9746),n=r(5717),o={};function s(t){i.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var e=0;e{"use strict";var i=r(9746);function n(t){this.options=t,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}t.exports=n,n.prototype._init=function(){},n.prototype.update=function(t){return 0===t.length?[]:"decrypt"===this.type?this._updateDecrypt(t):this._updateEncrypt(t)},n.prototype._buffer=function(t,e){for(var r=Math.min(this.buffer.length-this.bufferOff,t.length-e),i=0;i0;i--)e+=this._buffer(t,e),r+=this._flushBuffer(n,r);return e+=this._buffer(t,e),n},n.prototype.final=function(t){var e,r;return t&&(e=this.update(t)),r="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),e?e.concat(r):r},n.prototype._pad=function(t,e){if(0===e)return!1;for(;e{"use strict";var i=r(9746),n=r(5717),o=r(1278),s=r(5756);function a(){this.tmp=new Array(2),this.keys=null}function h(t){s.call(this,t);var e=new a;this._desState=e,this.deriveKeys(e,t.key)}n(h,s),t.exports=h,h.create=function(t){return new h(t)};var u=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];h.prototype.deriveKeys=function(t,e){t.keys=new Array(32),i.equal(e.length,this.blockSize,"Invalid key length");var r=o.readUInt32BE(e,0),n=o.readUInt32BE(e,4);o.pc1(r,n,t.tmp,0),r=t.tmp[0],n=t.tmp[1];for(var s=0;s>>1];r=o.r28shl(r,a),n=o.r28shl(n,a),o.pc2(r,n,t.keys,s)}},h.prototype._update=function(t,e,r,i){var n=this._desState,s=o.readUInt32BE(t,e),a=o.readUInt32BE(t,e+4);o.ip(s,a,n.tmp,0),s=n.tmp[0],a=n.tmp[1],"encrypt"===this.type?this._encrypt(n,s,a,n.tmp,0):this._decrypt(n,s,a,n.tmp,0),s=n.tmp[0],a=n.tmp[1],o.writeUInt32BE(r,s,i),o.writeUInt32BE(r,a,i+4)},h.prototype._pad=function(t,e){for(var r=t.length-e,i=e;i>>0,s=f}o.rip(a,s,i,n)},h.prototype._decrypt=function(t,e,r,i,n){for(var s=r,a=e,h=t.keys.length-2;h>=0;h-=2){var u=t.keys[h],l=t.keys[h+1];o.expand(s,t.tmp,0),u^=t.tmp[0],l^=t.tmp[1];var c=o.substitute(u,l),f=s;s=(a^o.permute(c))>>>0,a=f}o.rip(s,a,i,n)}},651:(t,e,r)=>{"use strict";var i=r(9746),n=r(5717),o=r(5756),s=r(778);function a(t,e){i.equal(e.length,24,"Invalid key length");var r=e.slice(0,8),n=e.slice(8,16),o=e.slice(16,24);this.ciphers="encrypt"===t?[s.create({type:"encrypt",key:r}),s.create({type:"decrypt",key:n}),s.create({type:"encrypt",key:o})]:[s.create({type:"decrypt",key:o}),s.create({type:"encrypt",key:n}),s.create({type:"decrypt",key:r})]}function h(t){o.call(this,t);var e=new a(this.type,this.options.key);this._edeState=e}n(h,o),t.exports=h,h.create=function(t){return new h(t)},h.prototype._update=function(t,e,r,i){var n=this._edeState;n.ciphers[0]._update(t,e,r,i),n.ciphers[1]._update(r,i,r,i),n.ciphers[2]._update(r,i,r,i)},h.prototype._pad=s.prototype._pad,h.prototype._unpad=s.prototype._unpad},1278:(t,e)=>{"use strict";e.readUInt32BE=function(t,e){return(t[0+e]<<24|t[1+e]<<16|t[2+e]<<8|t[3+e])>>>0},e.writeUInt32BE=function(t,e,r){t[0+r]=e>>>24,t[1+r]=e>>>16&255,t[2+r]=e>>>8&255,t[3+r]=255&e},e.ip=function(t,e,r,i){for(var n=0,o=0,s=6;s>=0;s-=2){for(var a=0;a<=24;a+=8)n<<=1,n|=e>>>a+s&1;for(a=0;a<=24;a+=8)n<<=1,n|=t>>>a+s&1}for(s=6;s>=0;s-=2){for(a=1;a<=25;a+=8)o<<=1,o|=e>>>a+s&1;for(a=1;a<=25;a+=8)o<<=1,o|=t>>>a+s&1}r[i+0]=n>>>0,r[i+1]=o>>>0},e.rip=function(t,e,r,i){for(var n=0,o=0,s=0;s<4;s++)for(var a=24;a>=0;a-=8)n<<=1,n|=e>>>a+s&1,n<<=1,n|=t>>>a+s&1;for(s=4;s<8;s++)for(a=24;a>=0;a-=8)o<<=1,o|=e>>>a+s&1,o<<=1,o|=t>>>a+s&1;r[i+0]=n>>>0,r[i+1]=o>>>0},e.pc1=function(t,e,r,i){for(var n=0,o=0,s=7;s>=5;s--){for(var a=0;a<=24;a+=8)n<<=1,n|=e>>a+s&1;for(a=0;a<=24;a+=8)n<<=1,n|=t>>a+s&1}for(a=0;a<=24;a+=8)n<<=1,n|=e>>a+s&1;for(s=1;s<=3;s++){for(a=0;a<=24;a+=8)o<<=1,o|=e>>a+s&1;for(a=0;a<=24;a+=8)o<<=1,o|=t>>a+s&1}for(a=0;a<=24;a+=8)o<<=1,o|=t>>a+s&1;r[i+0]=n>>>0,r[i+1]=o>>>0},e.r28shl=function(t,e){return t<>>28-e};var r=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];e.pc2=function(t,e,i,n){for(var o=0,s=0,a=r.length>>>1,h=0;h>>r[h]&1;for(h=a;h>>r[h]&1;i[n+0]=o>>>0,i[n+1]=s>>>0},e.expand=function(t,e,r){var i=0,n=0;i=(1&t)<<5|t>>>27;for(var o=23;o>=15;o-=4)i<<=6,i|=t>>>o&63;for(o=11;o>=3;o-=4)n|=t>>>o&63,n<<=6;n|=(31&t)<<1|t>>>31,e[r+0]=i>>>0,e[r+1]=n>>>0};var i=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];e.substitute=function(t,e){for(var r=0,n=0;n<4;n++)r<<=4,r|=i[64*n+(t>>>18-6*n&63)];for(n=0;n<4;n++)r<<=4,r|=i[256+64*n+(e>>>18-6*n&63)];return r>>>0};var n=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];e.permute=function(t){for(var e=0,r=0;r>>n[r]&1;return e>>>0},e.padSplit=function(t,e,r){for(var i=t.toString(2);i.length{var i=r(8764).Buffer,n=r(3590),o=r(1930),s=r(7426),a={binary:!0,hex:!0,base64:!0};e.DiffieHellmanGroup=e.createDiffieHellmanGroup=e.getDiffieHellman=function(t){var e=new i(o[t].prime,"hex"),r=new i(o[t].gen,"hex");return new s(e,r)},e.createDiffieHellman=e.DiffieHellman=function t(e,r,o,h){return i.isBuffer(r)||void 0===a[r]?t(e,"binary",r,o):(r=r||"binary",h=h||"binary",o=o||new i([2]),i.isBuffer(o)||(o=new i(o,h)),"number"==typeof e?new s(n(e,o),o,!0):(i.isBuffer(e)||(e=new i(e,r)),new s(e,o,!0)))}},7426:(t,e,r)=>{var i=r(8764).Buffer,n=r(3620),o=new(r(3047)),s=new n(24),a=new n(11),h=new n(10),u=new n(3),l=new n(7),c=r(3590),f=r(1798);function d(t,e){return e=e||"utf8",i.isBuffer(t)||(t=new i(t,e)),this._pub=new n(t),this}function g(t,e){return e=e||"utf8",i.isBuffer(t)||(t=new i(t,e)),this._priv=new n(t),this}t.exports=M;var A={};function M(t,e,r){this.setGenerator(e),this.__prime=new n(t),this._prime=n.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=d,this.setPrivateKey=g):this._primeCode=8}function p(t,e){var r=new i(t.toArray());return e?r.toString(e):r}Object.defineProperty(M.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(t,e){var r=e.toString("hex"),i=[r,t.toString(16)].join("_");if(i in A)return A[i];var n,f=0;if(t.isEven()||!c.simpleSieve||!c.fermatTest(t)||!o.test(t))return f+=1,f+="02"===r||"05"===r?8:4,A[i]=f,f;switch(o.test(t.shrn(1))||(f+=2),r){case"02":t.mod(s).cmp(a)&&(f+=8);break;case"05":(n=t.mod(h)).cmp(u)&&n.cmp(l)&&(f+=8);break;default:f+=4}return A[i]=f,f}(this.__prime,this.__gen)),this._primeCode}}),M.prototype.generateKeys=function(){return this._priv||(this._priv=new n(f(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},M.prototype.computeSecret=function(t){var e=(t=(t=new n(t)).toRed(this._prime)).redPow(this._priv).fromRed(),r=new i(e.toArray()),o=this.getPrime();if(r.length{var i=r(1798);t.exports=w,w.simpleSieve=M,w.fermatTest=p;var n=r(3620),o=new n(24),s=new(r(3047)),a=new n(1),h=new n(2),u=new n(5),l=(new n(16),new n(8),new n(10)),c=new n(3),f=(new n(7),new n(11)),d=new n(4),g=(new n(12),null);function A(){if(null!==g)return g;var t=[];t[0]=2;for(var e=1,r=3;r<1048576;r+=2){for(var i=Math.ceil(Math.sqrt(r)),n=0;nt;)r.ishrn(1);if(r.isEven()&&r.iadd(a),r.testn(1)||r.iadd(h),e.cmp(h)){if(!e.cmp(u))for(;r.mod(l).cmp(c);)r.iadd(d)}else for(;r.mod(o).cmp(f);)r.iadd(d);if(M(g=r.shrn(1))&&M(r)&&p(g)&&p(r)&&s.test(g)&&s.test(r))return r}}},1930:t=>{"use strict";t.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},3620:function(t,e,r){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(7748).Buffer}catch(t){}function a(t,e){var r=t.charCodeAt(e);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,c=67108863&h,f=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=f;d++){var g=u-d|0;l+=(s=(n=0|t.words[g])*(o=0|e.words[d])+c)/67108864|0,c=67108863&s}r.words[u]=0|c,h=0|l}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?l[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=c[t],d=f[t];r="";var g=this.clone();for(g.negative=0;!g.isZero();){var A=g.modn(d).toString(t);r=(g=g.idivn(d)).isZero()?A+r:l[u-A.length]+A+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),l=this.clone();if(h){for(a=0;!l.isZero();a++)s=l.andln(255),l.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],g=8191&d,A=d>>>13,M=0|s[2],p=8191&M,w=M>>>13,B=0|s[3],m=8191&B,E=B>>>13,y=0|s[4],b=8191&y,I=y>>>13,v=0|s[5],C=8191&v,Q=v>>>13,D=0|s[6],N=8191&D,R=D>>>13,G=0|s[7],U=8191&G,V=G>>>13,S=0|s[8],T=8191&S,Y=S>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,x=j>>>13,z=0|a[1],O=8191&z,H=z>>>13,_=0|a[2],W=8191&_,J=_>>>13,X=0|a[3],P=8191&X,K=X>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,lt=0|a[8],ct=8191<,ft=lt>>>13,dt=0|a[9],gt=8191&dt,At=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(c,Z))|0)+((8191&(n=(n=Math.imul(c,x))+Math.imul(f,Z)|0))<<13)|0;u=((o=Math.imul(f,x))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(g,Z),n=(n=Math.imul(g,x))+Math.imul(A,Z)|0,o=Math.imul(A,x);var pt=(u+(i=i+Math.imul(c,O)|0)|0)+((8191&(n=(n=n+Math.imul(c,H)|0)+Math.imul(f,O)|0))<<13)|0;u=((o=o+Math.imul(f,H)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,x))+Math.imul(w,Z)|0,o=Math.imul(w,x),i=i+Math.imul(g,O)|0,n=(n=n+Math.imul(g,H)|0)+Math.imul(A,O)|0,o=o+Math.imul(A,H)|0;var wt=(u+(i=i+Math.imul(c,W)|0)|0)+((8191&(n=(n=n+Math.imul(c,J)|0)+Math.imul(f,W)|0))<<13)|0;u=((o=o+Math.imul(f,J)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(m,Z),n=(n=Math.imul(m,x))+Math.imul(E,Z)|0,o=Math.imul(E,x),i=i+Math.imul(p,O)|0,n=(n=n+Math.imul(p,H)|0)+Math.imul(w,O)|0,o=o+Math.imul(w,H)|0,i=i+Math.imul(g,W)|0,n=(n=n+Math.imul(g,J)|0)+Math.imul(A,W)|0,o=o+Math.imul(A,J)|0;var Bt=(u+(i=i+Math.imul(c,P)|0)|0)+((8191&(n=(n=n+Math.imul(c,K)|0)+Math.imul(f,P)|0))<<13)|0;u=((o=o+Math.imul(f,K)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,x))+Math.imul(I,Z)|0,o=Math.imul(I,x),i=i+Math.imul(m,O)|0,n=(n=n+Math.imul(m,H)|0)+Math.imul(E,O)|0,o=o+Math.imul(E,H)|0,i=i+Math.imul(p,W)|0,n=(n=n+Math.imul(p,J)|0)+Math.imul(w,W)|0,o=o+Math.imul(w,J)|0,i=i+Math.imul(g,P)|0,n=(n=n+Math.imul(g,K)|0)+Math.imul(A,P)|0,o=o+Math.imul(A,K)|0;var mt=(u+(i=i+Math.imul(c,$)|0)|0)+((8191&(n=(n=n+Math.imul(c,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,x))+Math.imul(Q,Z)|0,o=Math.imul(Q,x),i=i+Math.imul(b,O)|0,n=(n=n+Math.imul(b,H)|0)+Math.imul(I,O)|0,o=o+Math.imul(I,H)|0,i=i+Math.imul(m,W)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,J)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,K)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,K)|0,i=i+Math.imul(g,$)|0,n=(n=n+Math.imul(g,tt)|0)+Math.imul(A,$)|0,o=o+Math.imul(A,tt)|0;var Et=(u+(i=i+Math.imul(c,rt)|0)|0)+((8191&(n=(n=n+Math.imul(c,it)|0)+Math.imul(f,rt)|0))<<13)|0;u=((o=o+Math.imul(f,it)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,Z),n=(n=Math.imul(N,x))+Math.imul(R,Z)|0,o=Math.imul(R,x),i=i+Math.imul(C,O)|0,n=(n=n+Math.imul(C,H)|0)+Math.imul(Q,O)|0,o=o+Math.imul(Q,H)|0,i=i+Math.imul(b,W)|0,n=(n=n+Math.imul(b,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,i=i+Math.imul(m,P)|0,n=(n=n+Math.imul(m,K)|0)+Math.imul(E,P)|0,o=o+Math.imul(E,K)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(g,rt)|0,n=(n=n+Math.imul(g,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0;var yt=(u+(i=i+Math.imul(c,ot)|0)|0)+((8191&(n=(n=n+Math.imul(c,st)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(U,Z),n=(n=Math.imul(U,x))+Math.imul(V,Z)|0,o=Math.imul(V,x),i=i+Math.imul(N,O)|0,n=(n=n+Math.imul(N,H)|0)+Math.imul(R,O)|0,o=o+Math.imul(R,H)|0,i=i+Math.imul(C,W)|0,n=(n=n+Math.imul(C,J)|0)+Math.imul(Q,W)|0,o=o+Math.imul(Q,J)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,K)|0)+Math.imul(I,P)|0,o=o+Math.imul(I,K)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(g,ot)|0,n=(n=n+Math.imul(g,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0;var bt=(u+(i=i+Math.imul(c,ht)|0)|0)+((8191&(n=(n=n+Math.imul(c,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,x))+Math.imul(Y,Z)|0,o=Math.imul(Y,x),i=i+Math.imul(U,O)|0,n=(n=n+Math.imul(U,H)|0)+Math.imul(V,O)|0,o=o+Math.imul(V,H)|0,i=i+Math.imul(N,W)|0,n=(n=n+Math.imul(N,J)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,J)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,K)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,K)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,tt)|0,i=i+Math.imul(m,rt)|0,n=(n=n+Math.imul(m,it)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(g,ht)|0,n=(n=n+Math.imul(g,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0;var It=(u+(i=i+Math.imul(c,ct)|0)|0)+((8191&(n=(n=n+Math.imul(c,ft)|0)+Math.imul(f,ct)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,x))+Math.imul(L,Z)|0,o=Math.imul(L,x),i=i+Math.imul(T,O)|0,n=(n=n+Math.imul(T,H)|0)+Math.imul(Y,O)|0,o=o+Math.imul(Y,H)|0,i=i+Math.imul(U,W)|0,n=(n=n+Math.imul(U,J)|0)+Math.imul(V,W)|0,o=o+Math.imul(V,J)|0,i=i+Math.imul(N,P)|0,n=(n=n+Math.imul(N,K)|0)+Math.imul(R,P)|0,o=o+Math.imul(R,K)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,it)|0,i=i+Math.imul(m,ot)|0,n=(n=n+Math.imul(m,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(g,ct)|0,n=(n=n+Math.imul(g,ft)|0)+Math.imul(A,ct)|0,o=o+Math.imul(A,ft)|0;var vt=(u+(i=i+Math.imul(c,gt)|0)|0)+((8191&(n=(n=n+Math.imul(c,At)|0)+Math.imul(f,gt)|0))<<13)|0;u=((o=o+Math.imul(f,At)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,O),n=(n=Math.imul(F,H))+Math.imul(L,O)|0,o=Math.imul(L,H),i=i+Math.imul(T,W)|0,n=(n=n+Math.imul(T,J)|0)+Math.imul(Y,W)|0,o=o+Math.imul(Y,J)|0,i=i+Math.imul(U,P)|0,n=(n=n+Math.imul(U,K)|0)+Math.imul(V,P)|0,o=o+Math.imul(V,K)|0,i=i+Math.imul(N,$)|0,n=(n=n+Math.imul(N,tt)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,i=i+Math.imul(m,ht)|0,n=(n=n+Math.imul(m,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,i=i+Math.imul(p,ct)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(w,ct)|0,o=o+Math.imul(w,ft)|0;var Ct=(u+(i=i+Math.imul(g,gt)|0)|0)+((8191&(n=(n=n+Math.imul(g,At)|0)+Math.imul(A,gt)|0))<<13)|0;u=((o=o+Math.imul(A,At)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,W),n=(n=Math.imul(F,J))+Math.imul(L,W)|0,o=Math.imul(L,J),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,K)|0)+Math.imul(Y,P)|0,o=o+Math.imul(Y,K)|0,i=i+Math.imul(U,$)|0,n=(n=n+Math.imul(U,tt)|0)+Math.imul(V,$)|0,o=o+Math.imul(V,tt)|0,i=i+Math.imul(N,rt)|0,n=(n=n+Math.imul(N,it)|0)+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,ut)|0,i=i+Math.imul(m,ct)|0,n=(n=n+Math.imul(m,ft)|0)+Math.imul(E,ct)|0,o=o+Math.imul(E,ft)|0;var Qt=(u+(i=i+Math.imul(p,gt)|0)|0)+((8191&(n=(n=n+Math.imul(p,At)|0)+Math.imul(w,gt)|0))<<13)|0;u=((o=o+Math.imul(w,At)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,K))+Math.imul(L,P)|0,o=Math.imul(L,K),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(Y,$)|0,o=o+Math.imul(Y,tt)|0,i=i+Math.imul(U,rt)|0,n=(n=n+Math.imul(U,it)|0)+Math.imul(V,rt)|0,o=o+Math.imul(V,it)|0,i=i+Math.imul(N,ot)|0,n=(n=n+Math.imul(N,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(b,ct)|0,n=(n=n+Math.imul(b,ft)|0)+Math.imul(I,ct)|0,o=o+Math.imul(I,ft)|0;var Dt=(u+(i=i+Math.imul(m,gt)|0)|0)+((8191&(n=(n=n+Math.imul(m,At)|0)+Math.imul(E,gt)|0))<<13)|0;u=((o=o+Math.imul(E,At)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(Y,rt)|0,o=o+Math.imul(Y,it)|0,i=i+Math.imul(U,ot)|0,n=(n=n+Math.imul(U,st)|0)+Math.imul(V,ot)|0,o=o+Math.imul(V,st)|0,i=i+Math.imul(N,ht)|0,n=(n=n+Math.imul(N,ut)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,ut)|0,i=i+Math.imul(C,ct)|0,n=(n=n+Math.imul(C,ft)|0)+Math.imul(Q,ct)|0,o=o+Math.imul(Q,ft)|0;var Nt=(u+(i=i+Math.imul(b,gt)|0)|0)+((8191&(n=(n=n+Math.imul(b,At)|0)+Math.imul(I,gt)|0))<<13)|0;u=((o=o+Math.imul(I,At)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(Y,ot)|0,o=o+Math.imul(Y,st)|0,i=i+Math.imul(U,ht)|0,n=(n=n+Math.imul(U,ut)|0)+Math.imul(V,ht)|0,o=o+Math.imul(V,ut)|0,i=i+Math.imul(N,ct)|0,n=(n=n+Math.imul(N,ft)|0)+Math.imul(R,ct)|0,o=o+Math.imul(R,ft)|0;var Rt=(u+(i=i+Math.imul(C,gt)|0)|0)+((8191&(n=(n=n+Math.imul(C,At)|0)+Math.imul(Q,gt)|0))<<13)|0;u=((o=o+Math.imul(Q,At)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(Y,ht)|0,o=o+Math.imul(Y,ut)|0,i=i+Math.imul(U,ct)|0,n=(n=n+Math.imul(U,ft)|0)+Math.imul(V,ct)|0,o=o+Math.imul(V,ft)|0;var Gt=(u+(i=i+Math.imul(N,gt)|0)|0)+((8191&(n=(n=n+Math.imul(N,At)|0)+Math.imul(R,gt)|0))<<13)|0;u=((o=o+Math.imul(R,At)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,ct)|0,n=(n=n+Math.imul(T,ft)|0)+Math.imul(Y,ct)|0,o=o+Math.imul(Y,ft)|0;var Ut=(u+(i=i+Math.imul(U,gt)|0)|0)+((8191&(n=(n=n+Math.imul(U,At)|0)+Math.imul(V,gt)|0))<<13)|0;u=((o=o+Math.imul(V,At)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,i=Math.imul(F,ct),n=(n=Math.imul(F,ft))+Math.imul(L,ct)|0,o=Math.imul(L,ft);var Vt=(u+(i=i+Math.imul(T,gt)|0)|0)+((8191&(n=(n=n+Math.imul(T,At)|0)+Math.imul(Y,gt)|0))<<13)|0;u=((o=o+Math.imul(Y,At)|0)+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863;var St=(u+(i=Math.imul(F,gt))|0)+((8191&(n=(n=Math.imul(F,At))+Math.imul(L,gt)|0))<<13)|0;return u=((o=Math.imul(L,At))+(n>>>13)|0)+(St>>>26)|0,St&=67108863,h[0]=Mt,h[1]=pt,h[2]=wt,h[3]=Bt,h[4]=mt,h[5]=Et,h[6]=yt,h[7]=bt,h[8]=It,h[9]=vt,h[10]=Ct,h[11]=Qt,h[12]=Dt,h[13]=Nt,h[14]=Rt,h[15]=Gt,h[16]=Ut,h[17]=Vt,h[18]=St,0!==u&&(h[19]=u,r.length++),r};function A(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(g=d),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?g(this,t,e):r<63?d(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):A(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==l||u>=n);u--){var c=0|this.words[u];this.words[u]=l<<26-o|c>>>o,l=c&a}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;c--){var f=67108864*(0|i.words[n.length+c])+(0|i.words[n.length+c-1]);for(f=Math.min(f/s|0,67108863),i._ishlnsubmul(n,f,c);0!==i.negative;)f--,i.negative=0,i._ishlnsubmul(n,1,c),i.isZero()||(i.negative^=1);a&&(a.words[c]=f)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),c=e.clone();!e.isZero();){for(var f=0,d=1;0==(e.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(l),s.isub(c)),n.iushrn(1),s.iushrn(1);for(var g=0,A=1;0==(r.words[0]&A)&&g<26;++g,A<<=1);if(g>0)for(r.iushrn(g);g-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(l),h.isub(c)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var c=0,f=1;0==(r.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(r.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var p={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function B(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function m(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function E(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function I(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(B,w),B.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},B.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(p[t])return p[t];var e;if("k256"===t)e=new B;else if("p224"===t)e=new m;else if("p192"===t)e=new E;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return p[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var c=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),g=s;0!==d.cmp(a);){for(var A=d,M=0;0!==A.cmp(a);M++)A=A.redSqr();i(M=0;i--){for(var u=e.words[i],l=h-1;l>=0;l--){var c=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==c||0!==s?(s<<=1,s|=c,(4==++a||0===i&&0===l)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new I(t)},n(I,b),I.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},I.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},I.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},I.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},I.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},6266:(t,e,r)=>{"use strict";var i=e;i.version=r(7519).i8,i.utils=r(953),i.rand=r(9931),i.curve=r(8254),i.curves=r(5427),i.ec=r(7954),i.eddsa=r(5980)},4918:(t,e,r)=>{"use strict";var i=r(3785),n=r(953),o=n.getNAF,s=n.getJSF,a=n.assert;function h(t,e){this.type=t,this.p=new i(e.p,16),this.red=e.prime?i.red(e.prime):i.mont(this.p),this.zero=new i(0).toRed(this.red),this.one=new i(1).toRed(this.red),this.two=new i(2).toRed(this.red),this.n=e.n&&new i(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function u(t,e){this.curve=t,this.type=e,this.precomputed=null}t.exports=h,h.prototype.point=function(){throw new Error("Not implemented")},h.prototype.validate=function(){throw new Error("Not implemented")},h.prototype._fixedNafMul=function(t,e){a(t.precomputed);var r=t._getDoubles(),i=o(e,1,this._bitLength),n=(1<=s;l--)h=(h<<1)+i[l];u.push(h)}for(var c=this.jpoint(null,null,null),f=this.jpoint(null,null,null),d=n;d>0;d--){for(s=0;s=0;u--){for(var l=0;u>=0&&0===s[u];u--)l++;if(u>=0&&l++,h=h.dblp(l),u<0)break;var c=s[u];a(0!==c),h="affine"===t.type?c>0?h.mixedAdd(n[c-1>>1]):h.mixedAdd(n[-c-1>>1].neg()):c>0?h.add(n[c-1>>1]):h.add(n[-c-1>>1].neg())}return"affine"===t.type?h.toP():h},h.prototype._wnafMulAdd=function(t,e,r,i,n){var a,h,u,l=this._wnafT1,c=this._wnafT2,f=this._wnafT3,d=0;for(a=0;a=1;a-=2){var A=a-1,M=a;if(1===l[A]&&1===l[M]){var p=[e[A],null,null,e[M]];0===e[A].y.cmp(e[M].y)?(p[1]=e[A].add(e[M]),p[2]=e[A].toJ().mixedAdd(e[M].neg())):0===e[A].y.cmp(e[M].y.redNeg())?(p[1]=e[A].toJ().mixedAdd(e[M]),p[2]=e[A].add(e[M].neg())):(p[1]=e[A].toJ().mixedAdd(e[M]),p[2]=e[A].toJ().mixedAdd(e[M].neg()));var w=[-3,-1,-5,-7,0,7,5,1,3],B=s(r[A],r[M]);for(d=Math.max(B[0].length,d),f[A]=new Array(d),f[M]=new Array(d),h=0;h=0;a--){for(var I=0;a>=0;){var v=!0;for(h=0;h=0&&I++,y=y.dblp(I),a<0)break;for(h=0;h0?u=c[h][C-1>>1]:C<0&&(u=c[h][-C-1>>1].neg()),y="affine"===u.type?y.mixedAdd(u):y.add(u))}}for(a=0;a=Math.ceil((t.bitLength()+1)/e.step)},u.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,n=0;n{"use strict";var i=r(953),n=r(3785),o=r(5717),s=r(4918),a=i.assert;function h(t){this.twisted=1!=(0|t.a),this.mOneA=this.twisted&&-1==(0|t.a),this.extended=this.mOneA,s.call(this,"edwards",t),this.a=new n(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new n(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new n(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),a(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|t.c)}function u(t,e,r,i,o){s.BasePoint.call(this,t,"projective"),null===e&&null===r&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new n(e,16),this.y=new n(r,16),this.z=i?new n(i,16):this.curve.one,this.t=o&&new n(o,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}o(h,s),t.exports=h,h.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)},h.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)},h.prototype.jpoint=function(t,e,r,i){return this.point(t,e,r,i)},h.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr(),i=this.c2.redSub(this.a.redMul(r)),o=this.one.redSub(this.c2.redMul(this.d).redMul(r)),s=i.redMul(o.redInvm()),a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");var h=a.fromRed().isOdd();return(e&&!h||!e&&h)&&(a=a.redNeg()),this.point(t,a)},h.prototype.pointFromY=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr(),i=r.redSub(this.c2),o=r.redMul(this.d).redMul(this.c2).redSub(this.a),s=i.redMul(o.redInvm());if(0===s.cmp(this.zero)){if(e)throw new Error("invalid point");return this.point(this.zero,t)}var a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");return a.fromRed().isOdd()!==e&&(a=a.redNeg()),this.point(a,t)},h.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var e=t.x.redSqr(),r=t.y.redSqr(),i=e.redMul(this.a).redAdd(r),n=this.c2.redMul(this.one.redAdd(this.d.redMul(e).redMul(r)));return 0===i.cmp(n)},o(u,s.BasePoint),h.prototype.pointFromJSON=function(t){return u.fromJSON(this,t)},h.prototype.point=function(t,e,r,i){return new u(this,t,e,r,i)},u.fromJSON=function(t,e){return new u(t,e[0],e[1],e[2])},u.prototype.inspect=function(){return this.isInfinity()?"":""},u.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},u.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(t),n=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=i.redAdd(e),s=o.redSub(r),a=i.redSub(e),h=n.redMul(s),u=o.redMul(a),l=n.redMul(a),c=s.redMul(o);return this.curve.point(h,u,c,l)},u.prototype._projDbl=function(){var t,e,r,i,n,o,s=this.x.redAdd(this.y).redSqr(),a=this.x.redSqr(),h=this.y.redSqr();if(this.curve.twisted){var u=(i=this.curve._mulA(a)).redAdd(h);this.zOne?(t=s.redSub(a).redSub(h).redMul(u.redSub(this.curve.two)),e=u.redMul(i.redSub(h)),r=u.redSqr().redSub(u).redSub(u)):(n=this.z.redSqr(),o=u.redSub(n).redISub(n),t=s.redSub(a).redISub(h).redMul(o),e=u.redMul(i.redSub(h)),r=u.redMul(o))}else i=a.redAdd(h),n=this.curve._mulC(this.z).redSqr(),o=i.redSub(n).redSub(n),t=this.curve._mulC(s.redISub(i)).redMul(o),e=this.curve._mulC(i).redMul(a.redISub(h)),r=i.redMul(o);return this.curve.point(t,e,r)},u.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},u.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),i=this.t.redMul(this.curve.dd).redMul(t.t),n=this.z.redMul(t.z.redAdd(t.z)),o=r.redSub(e),s=n.redSub(i),a=n.redAdd(i),h=r.redAdd(e),u=o.redMul(s),l=a.redMul(h),c=o.redMul(h),f=s.redMul(a);return this.curve.point(u,l,f,c)},u.prototype._projAdd=function(t){var e,r,i=this.z.redMul(t.z),n=i.redSqr(),o=this.x.redMul(t.x),s=this.y.redMul(t.y),a=this.curve.d.redMul(o).redMul(s),h=n.redSub(a),u=n.redAdd(a),l=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(s),c=i.redMul(h).redMul(l);return this.curve.twisted?(e=i.redMul(u).redMul(s.redSub(this.curve._mulA(o))),r=h.redMul(u)):(e=i.redMul(u).redMul(s.redSub(o)),r=this.curve._mulC(h).redMul(u)),this.curve.point(c,e,r)},u.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},u.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},u.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},u.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},u.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()},u.prototype.getY=function(){return this.normalize(),this.y.fromRed()},u.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},u.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(i),0===this.x.cmp(e))return!0}},u.prototype.toP=u.prototype.normalize,u.prototype.mixedAdd=u.prototype.add},8254:(t,e,r)=>{"use strict";var i=e;i.base=r(4918),i.short=r(6673),i.mont=r(2881),i.edwards=r(1138)},2881:(t,e,r)=>{"use strict";var i=r(3785),n=r(5717),o=r(4918),s=r(953);function a(t){o.call(this,"mont",t),this.a=new i(t.a,16).toRed(this.red),this.b=new i(t.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function h(t,e,r){o.BasePoint.call(this,t,"projective"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(e,16),this.z=new i(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}n(a,o),t.exports=a,a.prototype.validate=function(t){var e=t.normalize().x,r=e.redSqr(),i=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e);return 0===i.redSqrt().redSqr().cmp(i)},n(h,o.BasePoint),a.prototype.decodePoint=function(t,e){return this.point(s.toArray(t,e),1)},a.prototype.point=function(t,e){return new h(this,t,e)},a.prototype.pointFromJSON=function(t){return h.fromJSON(this,t)},h.prototype.precompute=function(){},h.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},h.fromJSON=function(t,e){return new h(t,e[0],e[1]||t.one)},h.prototype.inspect=function(){return this.isInfinity()?"":""},h.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},h.prototype.dbl=function(){var t=this.x.redAdd(this.z).redSqr(),e=this.x.redSub(this.z).redSqr(),r=t.redSub(e),i=t.redMul(e),n=r.redMul(e.redAdd(this.curve.a24.redMul(r)));return this.curve.point(i,n)},h.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),n=t.x.redAdd(t.z),o=t.x.redSub(t.z).redMul(r),s=n.redMul(i),a=e.z.redMul(o.redAdd(s).redSqr()),h=e.x.redMul(o.redISub(s).redSqr());return this.curve.point(a,h)},h.prototype.mul=function(t){for(var e=t.clone(),r=this,i=this.curve.point(null,null),n=[];0!==e.cmpn(0);e.iushrn(1))n.push(e.andln(1));for(var o=n.length-1;o>=0;o--)0===n[o]?(r=r.diffAdd(i,this),i=i.dbl()):(i=r.diffAdd(i,this),r=r.dbl());return i},h.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},h.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},h.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},6673:(t,e,r)=>{"use strict";var i=r(953),n=r(3785),o=r(5717),s=r(4918),a=i.assert;function h(t){s.call(this,"short",t),this.a=new n(t.a,16).toRed(this.red),this.b=new n(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function u(t,e,r,i){s.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new n(e,16),this.y=new n(r,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function l(t,e,r,i){s.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===i?(this.x=this.curve.one,this.y=this.curve.one,this.z=new n(0)):(this.x=new n(e,16),this.y=new n(r,16),this.z=new n(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}o(h,s),t.exports=h,h.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new n(t.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);e=(e=i[0].cmp(i[1])<0?i[0]:i[1]).toRed(this.red)}if(t.lambda)r=new n(t.lambda,16);else{var o=this._getEndoRoots(this.n);0===this.g.mul(o[0]).x.cmp(this.g.x.redMul(e))?r=o[0]:(r=o[1],a(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:r,basis:t.basis?t.basis.map((function(t){return{a:new n(t.a,16),b:new n(t.b,16)}})):this._getEndoBasis(r)}}},h.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:n.mont(t),r=new n(2).toRed(e).redInvm(),i=r.redNeg(),o=new n(3).toRed(e).redNeg().redSqrt().redMul(r);return[i.redAdd(o).fromRed(),i.redSub(o).fromRed()]},h.prototype._getEndoBasis=function(t){for(var e,r,i,o,s,a,h,u,l,c=this.n.ushrn(Math.floor(this.n.bitLength()/2)),f=t,d=this.n.clone(),g=new n(1),A=new n(0),M=new n(0),p=new n(1),w=0;0!==f.cmpn(0);){var B=d.div(f);u=d.sub(B.mul(f)),l=M.sub(B.mul(g));var m=p.sub(B.mul(A));if(!i&&u.cmp(c)<0)e=h.neg(),r=g,i=u.neg(),o=l;else if(i&&2==++w)break;h=u,d=f,f=u,M=g,g=l,p=A,A=m}s=u.neg(),a=l;var E=i.sqr().add(o.sqr());return s.sqr().add(a.sqr()).cmp(E)>=0&&(s=e,a=r),i.negative&&(i=i.neg(),o=o.neg()),s.negative&&(s=s.neg(),a=a.neg()),[{a:i,b:o},{a:s,b:a}]},h.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],i=e[1],n=i.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),s=n.mul(r.a),a=o.mul(i.a),h=n.mul(r.b),u=o.mul(i.b);return{k1:t.sub(s).sub(a),k2:h.add(u).neg()}},h.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(0!==i.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var o=i.fromRed().isOdd();return(e&&!o||!e&&o)&&(i=i.redNeg()),this.point(t,i)},h.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,i=this.a.redMul(e),n=e.redSqr().redMul(e).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(n).cmpn(0)},h.prototype._endoWnafMulAdd=function(t,e,r){for(var i=this._endoWnafT1,n=this._endoWnafT2,o=0;o":""},u.prototype.isInfinity=function(){return this.inf},u.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),i=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},u.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),i=t.redInvm(),n=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(i),o=n.redSqr().redISub(this.x.redAdd(this.x)),s=n.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},u.prototype.getX=function(){return this.x.fromRed()},u.prototype.getY=function(){return this.y.fromRed()},u.prototype.mul=function(t){return t=new n(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,e,r){var i=[this,e],n=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n):this.curve._wnafMulAdd(1,i,n,2)},u.prototype.jmulAdd=function(t,e,r){var i=[this,e],n=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n,!0):this.curve._wnafMulAdd(1,i,n,2,!0)},u.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},u.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,i=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return e},u.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},o(l,s.BasePoint),h.prototype.jpoint=function(t,e,r){return new l(this,t,e,r)},l.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),i=this.y.redMul(e).redMul(t);return this.curve.point(r,i)},l.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},l.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(e),n=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),s=t.y.redMul(r.redMul(this.z)),a=i.redSub(n),h=o.redSub(s);if(0===a.cmpn(0))return 0!==h.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=a.redSqr(),l=u.redMul(a),c=i.redMul(u),f=h.redSqr().redIAdd(l).redISub(c).redISub(c),d=h.redMul(c.redISub(f)).redISub(o.redMul(l)),g=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(f,d,g)},l.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,i=t.x.redMul(e),n=this.y,o=t.y.redMul(e).redMul(this.z),s=r.redSub(i),a=n.redSub(o);if(0===s.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var h=s.redSqr(),u=h.redMul(s),l=r.redMul(h),c=a.redSqr().redIAdd(u).redISub(l).redISub(l),f=a.redMul(l.redISub(c)).redISub(n.redMul(u)),d=this.z.redMul(s);return this.curve.jpoint(c,f,d)},l.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var r=this;for(e=0;e=0)return!1;if(r.redIAdd(n),0===this.x.cmp(r))return!0}},l.prototype.inspect=function(){return this.isInfinity()?"":""},l.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},5427:(t,e,r)=>{"use strict";var i,n=e,o=r(3715),s=r(8254),a=r(953).assert;function h(t){"short"===t.type?this.curve=new s.short(t):"edwards"===t.type?this.curve=new s.edwards(t):this.curve=new s.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,a(this.g.validate(),"Invalid curve"),a(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function u(t,e){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var r=new h(e);return Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=h,u("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),u("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),u("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),u("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),u("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),u("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),u("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{i=r(1037)}catch(t){i=void 0}u("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",i]})},7954:(t,e,r)=>{"use strict";var i=r(3785),n=r(2156),o=r(953),s=r(5427),a=r(9931),h=o.assert,u=r(1251),l=r(611);function c(t){if(!(this instanceof c))return new c(t);"string"==typeof t&&(h(Object.prototype.hasOwnProperty.call(s,t),"Unknown curve "+t),t=s[t]),t instanceof s.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}t.exports=c,c.prototype.keyPair=function(t){return new u(this,t)},c.prototype.keyFromPrivate=function(t,e){return u.fromPrivate(this,t,e)},c.prototype.keyFromPublic=function(t,e){return u.fromPublic(this,t,e)},c.prototype.genKeyPair=function(t){t||(t={});for(var e=new n({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||a(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),o=this.n.sub(new i(2));;){var s=new i(e.generate(r));if(!(s.cmp(o)>0))return s.iaddn(1),this.keyFromPrivate(s)}},c.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},c.prototype.sign=function(t,e,r,o){"object"==typeof r&&(o=r,r=null),o||(o={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new i(t,16));for(var s=this.n.byteLength(),a=e.getPrivate().toArray("be",s),h=t.toArray("be",s),u=new n({hash:this.hash,entropy:a,nonce:h,pers:o.pers,persEnc:o.persEnc||"utf8"}),c=this.n.sub(new i(1)),f=0;;f++){var d=o.k?o.k(f):new i(u.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(c)>=0)){var g=this.g.mul(d);if(!g.isInfinity()){var A=g.getX(),M=A.umod(this.n);if(0!==M.cmpn(0)){var p=d.invm(this.n).mul(M.mul(e.getPrivate()).iadd(t));if(0!==(p=p.umod(this.n)).cmpn(0)){var w=(g.getY().isOdd()?1:0)|(0!==A.cmp(M)?2:0);return o.canonical&&p.cmp(this.nh)>0&&(p=this.n.sub(p),w^=1),new l({r:M,s:p,recoveryParam:w})}}}}}},c.prototype.verify=function(t,e,r,n){t=this._truncateToN(new i(t,16)),r=this.keyFromPublic(r,n);var o=(e=new l(e,"hex")).r,s=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;var a,h=s.invm(this.n),u=h.mul(t).umod(this.n),c=h.mul(o).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(u,r.getPublic(),c)).isInfinity()&&a.eqXToP(o):!(a=this.g.mulAdd(u,r.getPublic(),c)).isInfinity()&&0===a.getX().umod(this.n).cmp(o)},c.prototype.recoverPubKey=function(t,e,r,n){h((3&r)===r,"The recovery param is more than two bits"),e=new l(e,n);var o=this.n,s=new i(t),a=e.r,u=e.s,c=1&r,f=r>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&f)throw new Error("Unable to find sencond key candinate");a=f?this.curve.pointFromX(a.add(this.curve.n),c):this.curve.pointFromX(a,c);var d=e.r.invm(o),g=o.sub(s).mul(d).umod(o),A=u.mul(d).umod(o);return this.g.mulAdd(g,a,A)},c.prototype.getKeyRecoveryParam=function(t,e,r,i){if(null!==(e=new l(e,i)).recoveryParam)return e.recoveryParam;for(var n=0;n<4;n++){var o;try{o=this.recoverPubKey(t,e,n)}catch(t){continue}if(o.eq(r))return n}throw new Error("Unable to find valid recovery factor")}},1251:(t,e,r)=>{"use strict";var i=r(3785),n=r(953).assert;function o(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}t.exports=o,o.fromPublic=function(t,e,r){return e instanceof o?e:new o(t,{pub:e,pubEnc:r})},o.fromPrivate=function(t,e,r){return e instanceof o?e:new o(t,{priv:e,privEnc:r})},o.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},o.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},o.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},o.prototype._importPrivate=function(t,e){this.priv=new i(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},o.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?n(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||n(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},o.prototype.derive=function(t){return t.validate()||n(t.validate(),"public point not validated"),t.mul(this.priv).getX()},o.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},o.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},o.prototype.inspect=function(){return""}},611:(t,e,r)=>{"use strict";var i=r(3785),n=r(953),o=n.assert;function s(t,e){if(t instanceof s)return t;this._importDER(t,e)||(o(t.r&&t.s,"Signature without r or s"),this.r=new i(t.r,16),this.s=new i(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}function a(){this.place=0}function h(t,e){var r=t[e.place++];if(!(128&r))return r;var i=15&r;if(0===i||i>4)return!1;for(var n=0,o=0,s=e.place;o>>=0;return!(n<=127)&&(e.place=s,n)}function u(t){for(var e=0,r=t.length-1;!t[e]&&!(128&t[e+1])&&e>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}t.exports=s,s.prototype._importDER=function(t,e){t=n.toArray(t,e);var r=new a;if(48!==t[r.place++])return!1;var o=h(t,r);if(!1===o)return!1;if(o+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var s=h(t,r);if(!1===s)return!1;var u=t.slice(r.place,s+r.place);if(r.place+=s,2!==t[r.place++])return!1;var l=h(t,r);if(!1===l)return!1;if(t.length!==l+r.place)return!1;var c=t.slice(r.place,l+r.place);if(0===u[0]){if(!(128&u[1]))return!1;u=u.slice(1)}if(0===c[0]){if(!(128&c[1]))return!1;c=c.slice(1)}return this.r=new i(u),this.s=new i(c),this.recoveryParam=null,!0},s.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=u(e),r=u(r);!(r[0]||128&r[1]);)r=r.slice(1);var i=[2];l(i,e.length),(i=i.concat(e)).push(2),l(i,r.length);var o=i.concat(r),s=[48];return l(s,o.length),s=s.concat(o),n.encode(s,t)}},5980:(t,e,r)=>{"use strict";var i=r(3715),n=r(5427),o=r(953),s=o.assert,a=o.parseBytes,h=r(9087),u=r(3622);function l(t){if(s("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof l))return new l(t);t=n[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}t.exports=l,l.prototype.sign=function(t,e){t=a(t);var r=this.keyFromSecret(e),i=this.hashInt(r.messagePrefix(),t),n=this.g.mul(i),o=this.encodePoint(n),s=this.hashInt(o,r.pubBytes(),t).mul(r.priv()),h=i.add(s).umod(this.curve.n);return this.makeSignature({R:n,S:h,Rencoded:o})},l.prototype.verify=function(t,e,r){t=a(t),e=this.makeSignature(e);var i=this.keyFromPublic(r),n=this.hashInt(e.Rencoded(),i.pubBytes(),t),o=this.g.mul(e.S());return e.R().add(i.pub().mul(n)).eq(o)},l.prototype.hashInt=function(){for(var t=this.hash(),e=0;e{"use strict";var i=r(953),n=i.assert,o=i.parseBytes,s=i.cachedProperty;function a(t,e){this.eddsa=t,this._secret=o(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=o(e.pub)}a.fromPublic=function(t,e){return e instanceof a?e:new a(t,{pub:e})},a.fromSecret=function(t,e){return e instanceof a?e:new a(t,{secret:e})},a.prototype.secret=function(){return this._secret},s(a,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),s(a,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),s(a,"privBytes",(function(){var t=this.eddsa,e=this.hash(),r=t.encodingLength-1,i=e.slice(0,t.encodingLength);return i[0]&=248,i[r]&=127,i[r]|=64,i})),s(a,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),s(a,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),s(a,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),a.prototype.sign=function(t){return n(this._secret,"KeyPair can only verify"),this.eddsa.sign(t,this)},a.prototype.verify=function(t,e){return this.eddsa.verify(t,e,this)},a.prototype.getSecret=function(t){return n(this._secret,"KeyPair is public only"),i.encode(this.secret(),t)},a.prototype.getPublic=function(t){return i.encode(this.pubBytes(),t)},t.exports=a},3622:(t,e,r)=>{"use strict";var i=r(3785),n=r(953),o=n.assert,s=n.cachedProperty,a=n.parseBytes;function h(t,e){this.eddsa=t,"object"!=typeof e&&(e=a(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),o(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof i&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}s(h,"S",(function(){return this.eddsa.decodeInt(this.Sencoded())})),s(h,"R",(function(){return this.eddsa.decodePoint(this.Rencoded())})),s(h,"Rencoded",(function(){return this.eddsa.encodePoint(this.R())})),s(h,"Sencoded",(function(){return this.eddsa.encodeInt(this.S())})),h.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},h.prototype.toHex=function(){return n.encode(this.toBytes(),"hex").toUpperCase()},t.exports=h},1037:t=>{t.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}},953:(t,e,r)=>{"use strict";var i=e,n=r(3785),o=r(9746),s=r(4504);i.assert=o,i.toArray=s.toArray,i.zero2=s.zero2,i.toHex=s.toHex,i.encode=s.encode,i.getNAF=function(t,e,r){var i=new Array(Math.max(t.bitLength(),r)+1);i.fill(0);for(var n=1<(n>>1)-1?(n>>1)-h:h,o.isubn(a)):a=0,i[s]=a,o.iushrn(1)}return i},i.getJSF=function(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var i,n=0,o=0;t.cmpn(-n)>0||e.cmpn(-o)>0;){var s,a,h=t.andln(3)+n&3,u=e.andln(3)+o&3;3===h&&(h=-1),3===u&&(u=-1),s=0==(1&h)?0:3!=(i=t.andln(7)+n&7)&&5!==i||2!==u?h:-h,r[0].push(s),a=0==(1&u)?0:3!=(i=e.andln(7)+o&7)&&5!==i||2!==h?u:-u,r[1].push(a),2*n===s+1&&(n=1-n),2*o===a+1&&(o=1-o),t.iushrn(1),e.iushrn(1)}return r},i.cachedProperty=function(t,e,r){var i="_"+e;t.prototype[e]=function(){return void 0!==this[i]?this[i]:this[i]=r.call(this)}},i.parseBytes=function(t){return"string"==typeof t?i.toArray(t,"hex"):t},i.intFromLE=function(t){return new n(t,"hex","le")}},3785:function(t,e,r){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(5568).Buffer}catch(t){}function a(t,e){var r=t.charCodeAt(e);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,c=67108863&h,f=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=f;d++){var g=u-d|0;l+=(s=(n=0|t.words[g])*(o=0|e.words[d])+c)/67108864|0,c=67108863&s}r.words[u]=0|c,h=0|l}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?l[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=c[t],d=f[t];r="";var g=this.clone();for(g.negative=0;!g.isZero();){var A=g.modn(d).toString(t);r=(g=g.idivn(d)).isZero()?A+r:l[u-A.length]+A+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),l=this.clone();if(h){for(a=0;!l.isZero();a++)s=l.andln(255),l.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],g=8191&d,A=d>>>13,M=0|s[2],p=8191&M,w=M>>>13,B=0|s[3],m=8191&B,E=B>>>13,y=0|s[4],b=8191&y,I=y>>>13,v=0|s[5],C=8191&v,Q=v>>>13,D=0|s[6],N=8191&D,R=D>>>13,G=0|s[7],U=8191&G,V=G>>>13,S=0|s[8],T=8191&S,Y=S>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,x=j>>>13,z=0|a[1],O=8191&z,H=z>>>13,_=0|a[2],W=8191&_,J=_>>>13,X=0|a[3],P=8191&X,K=X>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,lt=0|a[8],ct=8191<,ft=lt>>>13,dt=0|a[9],gt=8191&dt,At=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(c,Z))|0)+((8191&(n=(n=Math.imul(c,x))+Math.imul(f,Z)|0))<<13)|0;u=((o=Math.imul(f,x))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(g,Z),n=(n=Math.imul(g,x))+Math.imul(A,Z)|0,o=Math.imul(A,x);var pt=(u+(i=i+Math.imul(c,O)|0)|0)+((8191&(n=(n=n+Math.imul(c,H)|0)+Math.imul(f,O)|0))<<13)|0;u=((o=o+Math.imul(f,H)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,x))+Math.imul(w,Z)|0,o=Math.imul(w,x),i=i+Math.imul(g,O)|0,n=(n=n+Math.imul(g,H)|0)+Math.imul(A,O)|0,o=o+Math.imul(A,H)|0;var wt=(u+(i=i+Math.imul(c,W)|0)|0)+((8191&(n=(n=n+Math.imul(c,J)|0)+Math.imul(f,W)|0))<<13)|0;u=((o=o+Math.imul(f,J)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(m,Z),n=(n=Math.imul(m,x))+Math.imul(E,Z)|0,o=Math.imul(E,x),i=i+Math.imul(p,O)|0,n=(n=n+Math.imul(p,H)|0)+Math.imul(w,O)|0,o=o+Math.imul(w,H)|0,i=i+Math.imul(g,W)|0,n=(n=n+Math.imul(g,J)|0)+Math.imul(A,W)|0,o=o+Math.imul(A,J)|0;var Bt=(u+(i=i+Math.imul(c,P)|0)|0)+((8191&(n=(n=n+Math.imul(c,K)|0)+Math.imul(f,P)|0))<<13)|0;u=((o=o+Math.imul(f,K)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,x))+Math.imul(I,Z)|0,o=Math.imul(I,x),i=i+Math.imul(m,O)|0,n=(n=n+Math.imul(m,H)|0)+Math.imul(E,O)|0,o=o+Math.imul(E,H)|0,i=i+Math.imul(p,W)|0,n=(n=n+Math.imul(p,J)|0)+Math.imul(w,W)|0,o=o+Math.imul(w,J)|0,i=i+Math.imul(g,P)|0,n=(n=n+Math.imul(g,K)|0)+Math.imul(A,P)|0,o=o+Math.imul(A,K)|0;var mt=(u+(i=i+Math.imul(c,$)|0)|0)+((8191&(n=(n=n+Math.imul(c,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,x))+Math.imul(Q,Z)|0,o=Math.imul(Q,x),i=i+Math.imul(b,O)|0,n=(n=n+Math.imul(b,H)|0)+Math.imul(I,O)|0,o=o+Math.imul(I,H)|0,i=i+Math.imul(m,W)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,J)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,K)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,K)|0,i=i+Math.imul(g,$)|0,n=(n=n+Math.imul(g,tt)|0)+Math.imul(A,$)|0,o=o+Math.imul(A,tt)|0;var Et=(u+(i=i+Math.imul(c,rt)|0)|0)+((8191&(n=(n=n+Math.imul(c,it)|0)+Math.imul(f,rt)|0))<<13)|0;u=((o=o+Math.imul(f,it)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,Z),n=(n=Math.imul(N,x))+Math.imul(R,Z)|0,o=Math.imul(R,x),i=i+Math.imul(C,O)|0,n=(n=n+Math.imul(C,H)|0)+Math.imul(Q,O)|0,o=o+Math.imul(Q,H)|0,i=i+Math.imul(b,W)|0,n=(n=n+Math.imul(b,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,i=i+Math.imul(m,P)|0,n=(n=n+Math.imul(m,K)|0)+Math.imul(E,P)|0,o=o+Math.imul(E,K)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(g,rt)|0,n=(n=n+Math.imul(g,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0;var yt=(u+(i=i+Math.imul(c,ot)|0)|0)+((8191&(n=(n=n+Math.imul(c,st)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(U,Z),n=(n=Math.imul(U,x))+Math.imul(V,Z)|0,o=Math.imul(V,x),i=i+Math.imul(N,O)|0,n=(n=n+Math.imul(N,H)|0)+Math.imul(R,O)|0,o=o+Math.imul(R,H)|0,i=i+Math.imul(C,W)|0,n=(n=n+Math.imul(C,J)|0)+Math.imul(Q,W)|0,o=o+Math.imul(Q,J)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,K)|0)+Math.imul(I,P)|0,o=o+Math.imul(I,K)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(g,ot)|0,n=(n=n+Math.imul(g,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0;var bt=(u+(i=i+Math.imul(c,ht)|0)|0)+((8191&(n=(n=n+Math.imul(c,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,x))+Math.imul(Y,Z)|0,o=Math.imul(Y,x),i=i+Math.imul(U,O)|0,n=(n=n+Math.imul(U,H)|0)+Math.imul(V,O)|0,o=o+Math.imul(V,H)|0,i=i+Math.imul(N,W)|0,n=(n=n+Math.imul(N,J)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,J)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,K)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,K)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,tt)|0,i=i+Math.imul(m,rt)|0,n=(n=n+Math.imul(m,it)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(g,ht)|0,n=(n=n+Math.imul(g,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0;var It=(u+(i=i+Math.imul(c,ct)|0)|0)+((8191&(n=(n=n+Math.imul(c,ft)|0)+Math.imul(f,ct)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,x))+Math.imul(L,Z)|0,o=Math.imul(L,x),i=i+Math.imul(T,O)|0,n=(n=n+Math.imul(T,H)|0)+Math.imul(Y,O)|0,o=o+Math.imul(Y,H)|0,i=i+Math.imul(U,W)|0,n=(n=n+Math.imul(U,J)|0)+Math.imul(V,W)|0,o=o+Math.imul(V,J)|0,i=i+Math.imul(N,P)|0,n=(n=n+Math.imul(N,K)|0)+Math.imul(R,P)|0,o=o+Math.imul(R,K)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,it)|0,i=i+Math.imul(m,ot)|0,n=(n=n+Math.imul(m,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(g,ct)|0,n=(n=n+Math.imul(g,ft)|0)+Math.imul(A,ct)|0,o=o+Math.imul(A,ft)|0;var vt=(u+(i=i+Math.imul(c,gt)|0)|0)+((8191&(n=(n=n+Math.imul(c,At)|0)+Math.imul(f,gt)|0))<<13)|0;u=((o=o+Math.imul(f,At)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,O),n=(n=Math.imul(F,H))+Math.imul(L,O)|0,o=Math.imul(L,H),i=i+Math.imul(T,W)|0,n=(n=n+Math.imul(T,J)|0)+Math.imul(Y,W)|0,o=o+Math.imul(Y,J)|0,i=i+Math.imul(U,P)|0,n=(n=n+Math.imul(U,K)|0)+Math.imul(V,P)|0,o=o+Math.imul(V,K)|0,i=i+Math.imul(N,$)|0,n=(n=n+Math.imul(N,tt)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,i=i+Math.imul(m,ht)|0,n=(n=n+Math.imul(m,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,i=i+Math.imul(p,ct)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(w,ct)|0,o=o+Math.imul(w,ft)|0;var Ct=(u+(i=i+Math.imul(g,gt)|0)|0)+((8191&(n=(n=n+Math.imul(g,At)|0)+Math.imul(A,gt)|0))<<13)|0;u=((o=o+Math.imul(A,At)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,W),n=(n=Math.imul(F,J))+Math.imul(L,W)|0,o=Math.imul(L,J),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,K)|0)+Math.imul(Y,P)|0,o=o+Math.imul(Y,K)|0,i=i+Math.imul(U,$)|0,n=(n=n+Math.imul(U,tt)|0)+Math.imul(V,$)|0,o=o+Math.imul(V,tt)|0,i=i+Math.imul(N,rt)|0,n=(n=n+Math.imul(N,it)|0)+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,ut)|0,i=i+Math.imul(m,ct)|0,n=(n=n+Math.imul(m,ft)|0)+Math.imul(E,ct)|0,o=o+Math.imul(E,ft)|0;var Qt=(u+(i=i+Math.imul(p,gt)|0)|0)+((8191&(n=(n=n+Math.imul(p,At)|0)+Math.imul(w,gt)|0))<<13)|0;u=((o=o+Math.imul(w,At)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,K))+Math.imul(L,P)|0,o=Math.imul(L,K),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(Y,$)|0,o=o+Math.imul(Y,tt)|0,i=i+Math.imul(U,rt)|0,n=(n=n+Math.imul(U,it)|0)+Math.imul(V,rt)|0,o=o+Math.imul(V,it)|0,i=i+Math.imul(N,ot)|0,n=(n=n+Math.imul(N,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(b,ct)|0,n=(n=n+Math.imul(b,ft)|0)+Math.imul(I,ct)|0,o=o+Math.imul(I,ft)|0;var Dt=(u+(i=i+Math.imul(m,gt)|0)|0)+((8191&(n=(n=n+Math.imul(m,At)|0)+Math.imul(E,gt)|0))<<13)|0;u=((o=o+Math.imul(E,At)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(Y,rt)|0,o=o+Math.imul(Y,it)|0,i=i+Math.imul(U,ot)|0,n=(n=n+Math.imul(U,st)|0)+Math.imul(V,ot)|0,o=o+Math.imul(V,st)|0,i=i+Math.imul(N,ht)|0,n=(n=n+Math.imul(N,ut)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,ut)|0,i=i+Math.imul(C,ct)|0,n=(n=n+Math.imul(C,ft)|0)+Math.imul(Q,ct)|0,o=o+Math.imul(Q,ft)|0;var Nt=(u+(i=i+Math.imul(b,gt)|0)|0)+((8191&(n=(n=n+Math.imul(b,At)|0)+Math.imul(I,gt)|0))<<13)|0;u=((o=o+Math.imul(I,At)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(Y,ot)|0,o=o+Math.imul(Y,st)|0,i=i+Math.imul(U,ht)|0,n=(n=n+Math.imul(U,ut)|0)+Math.imul(V,ht)|0,o=o+Math.imul(V,ut)|0,i=i+Math.imul(N,ct)|0,n=(n=n+Math.imul(N,ft)|0)+Math.imul(R,ct)|0,o=o+Math.imul(R,ft)|0;var Rt=(u+(i=i+Math.imul(C,gt)|0)|0)+((8191&(n=(n=n+Math.imul(C,At)|0)+Math.imul(Q,gt)|0))<<13)|0;u=((o=o+Math.imul(Q,At)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(Y,ht)|0,o=o+Math.imul(Y,ut)|0,i=i+Math.imul(U,ct)|0,n=(n=n+Math.imul(U,ft)|0)+Math.imul(V,ct)|0,o=o+Math.imul(V,ft)|0;var Gt=(u+(i=i+Math.imul(N,gt)|0)|0)+((8191&(n=(n=n+Math.imul(N,At)|0)+Math.imul(R,gt)|0))<<13)|0;u=((o=o+Math.imul(R,At)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,ct)|0,n=(n=n+Math.imul(T,ft)|0)+Math.imul(Y,ct)|0,o=o+Math.imul(Y,ft)|0;var Ut=(u+(i=i+Math.imul(U,gt)|0)|0)+((8191&(n=(n=n+Math.imul(U,At)|0)+Math.imul(V,gt)|0))<<13)|0;u=((o=o+Math.imul(V,At)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,i=Math.imul(F,ct),n=(n=Math.imul(F,ft))+Math.imul(L,ct)|0,o=Math.imul(L,ft);var Vt=(u+(i=i+Math.imul(T,gt)|0)|0)+((8191&(n=(n=n+Math.imul(T,At)|0)+Math.imul(Y,gt)|0))<<13)|0;u=((o=o+Math.imul(Y,At)|0)+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863;var St=(u+(i=Math.imul(F,gt))|0)+((8191&(n=(n=Math.imul(F,At))+Math.imul(L,gt)|0))<<13)|0;return u=((o=Math.imul(L,At))+(n>>>13)|0)+(St>>>26)|0,St&=67108863,h[0]=Mt,h[1]=pt,h[2]=wt,h[3]=Bt,h[4]=mt,h[5]=Et,h[6]=yt,h[7]=bt,h[8]=It,h[9]=vt,h[10]=Ct,h[11]=Qt,h[12]=Dt,h[13]=Nt,h[14]=Rt,h[15]=Gt,h[16]=Ut,h[17]=Vt,h[18]=St,0!==u&&(h[19]=u,r.length++),r};function A(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(g=d),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?g(this,t,e):r<63?d(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):A(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==l||u>=n);u--){var c=0|this.words[u];this.words[u]=l<<26-o|c>>>o,l=c&a}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;c--){var f=67108864*(0|i.words[n.length+c])+(0|i.words[n.length+c-1]);for(f=Math.min(f/s|0,67108863),i._ishlnsubmul(n,f,c);0!==i.negative;)f--,i.negative=0,i._ishlnsubmul(n,1,c),i.isZero()||(i.negative^=1);a&&(a.words[c]=f)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),c=e.clone();!e.isZero();){for(var f=0,d=1;0==(e.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(l),s.isub(c)),n.iushrn(1),s.iushrn(1);for(var g=0,A=1;0==(r.words[0]&A)&&g<26;++g,A<<=1);if(g>0)for(r.iushrn(g);g-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(l),h.isub(c)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var c=0,f=1;0==(r.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(r.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var p={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function B(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function m(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function E(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function I(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(B,w),B.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},B.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(p[t])return p[t];var e;if("k256"===t)e=new B;else if("p224"===t)e=new m;else if("p192"===t)e=new E;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return p[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var c=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),g=s;0!==d.cmp(a);){for(var A=d,M=0;0!==A.cmp(a);M++)A=A.redSqr();i(M=0;i--){for(var u=e.words[i],l=h-1;l>=0;l--){var c=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==c||0!==s?(s<<=1,s|=c,(4==++a||0===i&&0===l)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new I(t)},n(I,b),I.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},I.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},I.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},I.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},I.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},7519:t=>{"use strict";t.exports={i8:"6.5.4"}},4079:(t,e,r)=>{"use strict";var i=r(210)("%Object.getOwnPropertyDescriptor%");if(i)try{i([],"length")}catch(t){i=null}t.exports=i},8091:t=>{"use strict";function e(t,e){if(null==t)throw new TypeError("Cannot convert first argument to object");for(var r=Object(t),i=1;i{"use strict";var e,r="object"==typeof Reflect?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};e=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var n=Number.isNaN||function(t){return t!=t};function o(){o.init.call(this)}t.exports=o,t.exports.once=function(t,e){return new Promise((function(r,i){function n(r){t.removeListener(e,o),i(r)}function o(){"function"==typeof t.removeListener&&t.removeListener("error",n),r([].slice.call(arguments))}A(t,e,o,{once:!0}),"error"!==e&&function(t,e,r){"function"==typeof t.on&&A(t,"error",e,{once:!0})}(t,n)}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function a(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function h(t){return void 0===t._maxListeners?o.defaultMaxListeners:t._maxListeners}function u(t,e,r,i){var n,o,s,u;if(a(r),void 0===(o=t._events)?(o=t._events=Object.create(null),t._eventsCount=0):(void 0!==o.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),o=t._events),s=o[e]),void 0===s)s=o[e]=r,++t._eventsCount;else if("function"==typeof s?s=o[e]=i?[r,s]:[s,r]:i?s.unshift(r):s.push(r),(n=h(t))>0&&s.length>n&&!s.warned){s.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=t,l.type=e,l.count=s.length,u=l,console&&console.warn&&console.warn(u)}return t}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function c(t,e,r){var i={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},n=l.bind(i);return n.listener=r,i.wrapFn=n,n}function f(t,e,r){var i=t._events;if(void 0===i)return[];var n=i[e];return void 0===n?[]:"function"==typeof n?r?[n.listener||n]:[n]:r?function(t){for(var e=new Array(t.length),r=0;r0&&(s=e[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var h=o[t];if(void 0===h)return!1;if("function"==typeof h)i(h,this,e);else{var u=h.length,l=g(h,u);for(r=0;r=0;o--)if(r[o]===e||r[o].listener===e){s=r[o].listener,n=o;break}if(n<0)return this;0===n?r.shift():function(t,e){for(;e+1=0;i--)this.removeListener(t,e[i]);return this},o.prototype.listeners=function(t){return f(this,t,!0)},o.prototype.rawListeners=function(t){return f(this,t,!1)},o.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):d.call(t,e)},o.prototype.listenerCount=d,o.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}},3048:(t,e,r)=>{var i=r(9509).Buffer,n=r(2318);t.exports=function(t,e,r,o){if(i.isBuffer(t)||(t=i.from(t,"binary")),e&&(i.isBuffer(e)||(e=i.from(e,"binary")),8!==e.length))throw new RangeError("salt should be Buffer with 8 byte length");for(var s=r/8,a=i.alloc(s),h=i.alloc(o||0),u=i.alloc(0);s>0||o>0;){var l=new n;l.update(u),l.update(t),e&&l.update(e),u=l.digest();var c=0;if(s>0){var f=a.length-s;c=Math.min(s,u.length),u.copy(a,f,0,c),s-=c}if(c0){var d=h.length-o,g=Math.min(o,u.length-c);u.copy(h,d,c,c+g),o-=g}}return u.fill(0),{key:a,iv:h}}},9804:t=>{var e=Object.prototype.hasOwnProperty,r=Object.prototype.toString;t.exports=function(t,i,n){if("[object Function]"!==r.call(i))throw new TypeError("iterator must be a function");var o=t.length;if(o===+o)for(var s=0;s{"use strict";var e="Function.prototype.bind called on incompatible ",r=Array.prototype.slice,i=Object.prototype.toString,n="[object Function]";t.exports=function(t){var o=this;if("function"!=typeof o||i.call(o)!==n)throw new TypeError(e+o);for(var s,a=r.call(arguments,1),h=function(){if(this instanceof s){var e=o.apply(this,a.concat(r.call(arguments)));return Object(e)===e?e:this}return o.apply(t,a.concat(r.call(arguments)))},u=Math.max(0,o.length-a.length),l=[],c=0;c{"use strict";var i=r(7648);t.exports=Function.prototype.bind||i},210:(t,e,r)=>{"use strict";var i,n=SyntaxError,o=Function,s=TypeError,a=function(t){try{return o('"use strict"; return ('+t+").constructor;")()}catch(t){}},h=Object.getOwnPropertyDescriptor;if(h)try{h({},"")}catch(t){h=null}var u=function(){throw new s},l=h?function(){try{return u}catch(t){try{return h(arguments,"callee").get}catch(t){return u}}}():u,c=r(1405)(),f=Object.getPrototypeOf||function(t){return t.__proto__},d={},g="undefined"==typeof Uint8Array?i:f(Uint8Array),A={"%AggregateError%":"undefined"==typeof AggregateError?i:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?i:ArrayBuffer,"%ArrayIteratorPrototype%":c?f([][Symbol.iterator]()):i,"%AsyncFromSyncIteratorPrototype%":i,"%AsyncFunction%":d,"%AsyncGenerator%":d,"%AsyncGeneratorFunction%":d,"%AsyncIteratorPrototype%":d,"%Atomics%":"undefined"==typeof Atomics?i:Atomics,"%BigInt%":"undefined"==typeof BigInt?i:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?i:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?i:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?i:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?i:FinalizationRegistry,"%Function%":o,"%GeneratorFunction%":d,"%Int8Array%":"undefined"==typeof Int8Array?i:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?i:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?i:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":c?f(f([][Symbol.iterator]())):i,"%JSON%":"object"==typeof JSON?JSON:i,"%Map%":"undefined"==typeof Map?i:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&c?f((new Map)[Symbol.iterator]()):i,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?i:Promise,"%Proxy%":"undefined"==typeof Proxy?i:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?i:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?i:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&c?f((new Set)[Symbol.iterator]()):i,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?i:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":c?f(""[Symbol.iterator]()):i,"%Symbol%":c?Symbol:i,"%SyntaxError%":n,"%ThrowTypeError%":l,"%TypedArray%":g,"%TypeError%":s,"%Uint8Array%":"undefined"==typeof Uint8Array?i:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?i:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?i:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?i:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?i:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?i:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?i:WeakSet},M=function t(e){var r;if("%AsyncFunction%"===e)r=a("async function () {}");else if("%GeneratorFunction%"===e)r=a("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=a("async function* () {}");else if("%AsyncGenerator%"===e){var i=t("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===e){var n=t("%AsyncGenerator%");n&&(r=f(n.prototype))}return A[e]=r,r},p={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},w=r(8612),B=r(7642),m=w.call(Function.call,Array.prototype.concat),E=w.call(Function.apply,Array.prototype.splice),y=w.call(Function.call,String.prototype.replace),b=w.call(Function.call,String.prototype.slice),I=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,v=/\\(\\)?/g,C=function(t){var e=b(t,0,1),r=b(t,-1);if("%"===e&&"%"!==r)throw new n("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new n("invalid intrinsic syntax, expected opening `%`");var i=[];return y(t,I,(function(t,e,r,n){i[i.length]=r?y(n,v,"$1"):e||t})),i},Q=function(t,e){var r,i=t;if(B(p,i)&&(i="%"+(r=p[i])[0]+"%"),B(A,i)){var o=A[i];if(o===d&&(o=M(i)),void 0===o&&!e)throw new s("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:o}}throw new n("intrinsic "+t+" does not exist!")};t.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new s("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new s('"allowMissing" argument must be a boolean');var r=C(t),i=r.length>0?r[0]:"",o=Q("%"+i+"%",e),a=o.name,u=o.value,l=!1,c=o.alias;c&&(i=c[0],E(r,m([0,1],c)));for(var f=1,d=!0;f=r.length){var w=h(u,g);u=(d=!!w)&&"get"in w&&!("originalValue"in w.get)?w.get:u[g]}else d=B(u,g),u=u[g];d&&!l&&(A[a]=u)}}return u}},1405:(t,e,r)=>{"use strict";var i="undefined"!=typeof Symbol&&Symbol,n=r(5419);t.exports=function(){return"function"==typeof i&&"function"==typeof Symbol&&"symbol"==typeof i("foo")&&"symbol"==typeof Symbol("bar")&&n()}},5419:t=>{"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(e in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var i=Object.getOwnPropertySymbols(t);if(1!==i.length||i[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var n=Object.getOwnPropertyDescriptor(t,e);if(42!==n.value||!0!==n.enumerable)return!1}return!0}},7642:(t,e,r)=>{"use strict";var i=r(8612);t.exports=i.call(Function.call,Object.prototype.hasOwnProperty)},3349:(t,e,r)=>{"use strict";var i=r(9509).Buffer,n=r(8473).Transform;function o(t){n.call(this),this._block=i.allocUnsafe(t),this._blockSize=t,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}r(5717)(o,n),o.prototype._transform=function(t,e,r){var i=null;try{this.update(t,e)}catch(t){i=t}r(i)},o.prototype._flush=function(t){var e=null;try{this.push(this.digest())}catch(t){e=t}t(e)},o.prototype.update=function(t,e){if(function(t,e){if(!i.isBuffer(t)&&"string"!=typeof t)throw new TypeError("Data must be a string or a buffer")}(t),this._finalized)throw new Error("Digest already called");i.isBuffer(t)||(t=i.from(t,e));for(var r=this._block,n=0;this._blockOffset+t.length-n>=this._blockSize;){for(var o=this._blockOffset;o0;++s)this._length[s]+=a,(a=this._length[s]/4294967296|0)>0&&(this._length[s]-=4294967296*a);return this},o.prototype._update=function(){throw new Error("_update is not implemented")},o.prototype.digest=function(t){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var e=this._digest();void 0!==t&&(e=e.toString(t)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return e},o.prototype._digest=function(){throw new Error("_digest is not implemented")},t.exports=o},3715:(t,e,r)=>{var i=e;i.utils=r(6436),i.common=r(5772),i.sha=r(9041),i.ripemd=r(2949),i.hmac=r(2344),i.sha1=i.sha.sha1,i.sha256=i.sha.sha256,i.sha224=i.sha.sha224,i.sha384=i.sha.sha384,i.sha512=i.sha.sha512,i.ripemd160=i.ripemd.ripemd160},5772:(t,e,r)=>{"use strict";var i=r(6436),n=r(9746);function o(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}e.BlockHash=o,o.prototype.update=function(t,e){if(t=i.toArray(t,e),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){var r=(t=this.pending).length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=i.join32(t,0,t.length-r,this.endian);for(var n=0;n>>24&255,i[n++]=t>>>16&255,i[n++]=t>>>8&255,i[n++]=255&t}else for(i[n++]=255&t,i[n++]=t>>>8&255,i[n++]=t>>>16&255,i[n++]=t>>>24&255,i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=0,o=8;o{"use strict";var i=r(6436),n=r(9746);function o(t,e,r){if(!(this instanceof o))return new o(t,e,r);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(i.toArray(e,r))}t.exports=o,o.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),n(t.length<=this.blockSize);for(var e=t.length;e{"use strict";var i=r(6436),n=r(5772),o=i.rotl32,s=i.sum32,a=i.sum32_3,h=i.sum32_4,u=n.BlockHash;function l(){if(!(this instanceof l))return new l;u.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function c(t,e,r,i){return t<=15?e^r^i:t<=31?e&r|~e&i:t<=47?(e|~r)^i:t<=63?e&i|r&~i:e^(r|~i)}function f(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function d(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}i.inherits(l,u),e.ripemd160=l,l.blockSize=512,l.outSize=160,l.hmacStrength=192,l.padLength=64,l.prototype._update=function(t,e){for(var r=this.h[0],i=this.h[1],n=this.h[2],u=this.h[3],l=this.h[4],w=r,B=i,m=n,E=u,y=l,b=0;b<80;b++){var I=s(o(h(r,c(b,i,n,u),t[g[b]+e],f(b)),M[b]),l);r=l,l=u,u=o(n,10),n=i,i=I,I=s(o(h(w,c(79-b,B,m,E),t[A[b]+e],d(b)),p[b]),y),w=y,y=E,E=o(m,10),m=B,B=I}I=a(this.h[1],n,E),this.h[1]=a(this.h[2],u,y),this.h[2]=a(this.h[3],l,w),this.h[3]=a(this.h[4],r,B),this.h[4]=a(this.h[0],i,m),this.h[0]=I},l.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h,"little"):i.split32(this.h,"little")};var g=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],A=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],M=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],p=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},9041:(t,e,r)=>{"use strict";e.sha1=r(4761),e.sha224=r(799),e.sha256=r(9344),e.sha384=r(772),e.sha512=r(5900)},4761:(t,e,r)=>{"use strict";var i=r(6436),n=r(5772),o=r(7038),s=i.rotl32,a=i.sum32,h=i.sum32_5,u=o.ft_1,l=n.BlockHash,c=[1518500249,1859775393,2400959708,3395469782];function f(){if(!(this instanceof f))return new f;l.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}i.inherits(f,l),t.exports=f,f.blockSize=512,f.outSize=160,f.hmacStrength=80,f.padLength=64,f.prototype._update=function(t,e){for(var r=this.W,i=0;i<16;i++)r[i]=t[e+i];for(;i{"use strict";var i=r(6436),n=r(9344);function o(){if(!(this instanceof o))return new o;n.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}i.inherits(o,n),t.exports=o,o.blockSize=512,o.outSize=224,o.hmacStrength=192,o.padLength=64,o.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h.slice(0,7),"big"):i.split32(this.h.slice(0,7),"big")}},9344:(t,e,r)=>{"use strict";var i=r(6436),n=r(5772),o=r(7038),s=r(9746),a=i.sum32,h=i.sum32_4,u=i.sum32_5,l=o.ch32,c=o.maj32,f=o.s0_256,d=o.s1_256,g=o.g0_256,A=o.g1_256,M=n.BlockHash,p=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function w(){if(!(this instanceof w))return new w;M.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=p,this.W=new Array(64)}i.inherits(w,M),t.exports=w,w.blockSize=512,w.outSize=256,w.hmacStrength=192,w.padLength=64,w.prototype._update=function(t,e){for(var r=this.W,i=0;i<16;i++)r[i]=t[e+i];for(;i{"use strict";var i=r(6436),n=r(5900);function o(){if(!(this instanceof o))return new o;n.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}i.inherits(o,n),t.exports=o,o.blockSize=1024,o.outSize=384,o.hmacStrength=192,o.padLength=128,o.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h.slice(0,12),"big"):i.split32(this.h.slice(0,12),"big")}},5900:(t,e,r)=>{"use strict";var i=r(6436),n=r(5772),o=r(9746),s=i.rotr64_hi,a=i.rotr64_lo,h=i.shr64_hi,u=i.shr64_lo,l=i.sum64,c=i.sum64_hi,f=i.sum64_lo,d=i.sum64_4_hi,g=i.sum64_4_lo,A=i.sum64_5_hi,M=i.sum64_5_lo,p=n.BlockHash,w=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function B(){if(!(this instanceof B))return new B;p.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=w,this.W=new Array(160)}function m(t,e,r,i,n){var o=t&r^~t&n;return o<0&&(o+=4294967296),o}function E(t,e,r,i,n,o){var s=e&i^~e&o;return s<0&&(s+=4294967296),s}function y(t,e,r,i,n){var o=t&r^t&n^r&n;return o<0&&(o+=4294967296),o}function b(t,e,r,i,n,o){var s=e&i^e&o^i&o;return s<0&&(s+=4294967296),s}function I(t,e){var r=s(t,e,28)^s(e,t,2)^s(e,t,7);return r<0&&(r+=4294967296),r}function v(t,e){var r=a(t,e,28)^a(e,t,2)^a(e,t,7);return r<0&&(r+=4294967296),r}function C(t,e){var r=a(t,e,14)^a(t,e,18)^a(e,t,9);return r<0&&(r+=4294967296),r}function Q(t,e){var r=s(t,e,1)^s(t,e,8)^h(t,e,7);return r<0&&(r+=4294967296),r}function D(t,e){var r=a(t,e,1)^a(t,e,8)^u(t,e,7);return r<0&&(r+=4294967296),r}function N(t,e){var r=a(t,e,19)^a(e,t,29)^u(t,e,6);return r<0&&(r+=4294967296),r}i.inherits(B,p),t.exports=B,B.blockSize=1024,B.outSize=512,B.hmacStrength=192,B.padLength=128,B.prototype._prepareBlock=function(t,e){for(var r=this.W,i=0;i<32;i++)r[i]=t[e+i];for(;i{"use strict";var i=r(6436).rotr32;function n(t,e,r){return t&e^~t&r}function o(t,e,r){return t&e^t&r^e&r}function s(t,e,r){return t^e^r}e.ft_1=function(t,e,r,i){return 0===t?n(e,r,i):1===t||3===t?s(e,r,i):2===t?o(e,r,i):void 0},e.ch32=n,e.maj32=o,e.p32=s,e.s0_256=function(t){return i(t,2)^i(t,13)^i(t,22)},e.s1_256=function(t){return i(t,6)^i(t,11)^i(t,25)},e.g0_256=function(t){return i(t,7)^i(t,18)^t>>>3},e.g1_256=function(t){return i(t,17)^i(t,19)^t>>>10}},6436:(t,e,r)=>{"use strict";var i=r(9746),n=r(5717);function o(t,e){return 55296==(64512&t.charCodeAt(e))&&!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1))}function s(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function a(t){return 1===t.length?"0"+t:t}function h(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}e.inherits=n,e.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),n=0;n>6|192,r[i++]=63&s|128):o(t,n)?(s=65536+((1023&s)<<10)+(1023&t.charCodeAt(++n)),r[i++]=s>>18|240,r[i++]=s>>12&63|128,r[i++]=s>>6&63|128,r[i++]=63&s|128):(r[i++]=s>>12|224,r[i++]=s>>6&63|128,r[i++]=63&s|128)}else for(n=0;n>>0}return s},e.split32=function(t,e){for(var r=new Array(4*t.length),i=0,n=0;i>>24,r[n+1]=o>>>16&255,r[n+2]=o>>>8&255,r[n+3]=255&o):(r[n+3]=o>>>24,r[n+2]=o>>>16&255,r[n+1]=o>>>8&255,r[n]=255&o)}return r},e.rotr32=function(t,e){return t>>>e|t<<32-e},e.rotl32=function(t,e){return t<>>32-e},e.sum32=function(t,e){return t+e>>>0},e.sum32_3=function(t,e,r){return t+e+r>>>0},e.sum32_4=function(t,e,r,i){return t+e+r+i>>>0},e.sum32_5=function(t,e,r,i,n){return t+e+r+i+n>>>0},e.sum64=function(t,e,r,i){var n=t[e],o=i+t[e+1]>>>0,s=(o>>0,t[e+1]=o},e.sum64_hi=function(t,e,r,i){return(e+i>>>0>>0},e.sum64_lo=function(t,e,r,i){return e+i>>>0},e.sum64_4_hi=function(t,e,r,i,n,o,s,a){var h=0,u=e;return h+=(u=u+i>>>0)>>0)>>0)>>0},e.sum64_4_lo=function(t,e,r,i,n,o,s,a){return e+i+o+a>>>0},e.sum64_5_hi=function(t,e,r,i,n,o,s,a,h,u){var l=0,c=e;return l+=(c=c+i>>>0)>>0)>>0)>>0)>>0},e.sum64_5_lo=function(t,e,r,i,n,o,s,a,h,u){return e+i+o+a+u>>>0},e.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},e.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},e.shr64_hi=function(t,e,r){return t>>>r},e.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0}},2156:(t,e,r)=>{"use strict";var i=r(3715),n=r(4504),o=r(9746);function s(t){if(!(this instanceof s))return new s(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=n.toArray(t.entropy,t.entropyEnc||"hex"),r=n.toArray(t.nonce,t.nonceEnc||"hex"),i=n.toArray(t.pers,t.persEnc||"hex");o(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}t.exports=s,s.prototype._init=function(t,e,r){var i=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},s.prototype.generate=function(t,e,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(i=r,r=e,e=null),r&&(r=n.toArray(r,i||"hex"),this._update(r));for(var o=[];o.length{e.read=function(t,e,r,i,n){var o,s,a=8*n-i-1,h=(1<>1,l=-7,c=r?n-1:0,f=r?-1:1,d=t[e+c];for(c+=f,o=d&(1<<-l)-1,d>>=-l,l+=a;l>0;o=256*o+t[e+c],c+=f,l-=8);for(s=o&(1<<-l)-1,o>>=-l,l+=i;l>0;s=256*s+t[e+c],c+=f,l-=8);if(0===o)o=1-u;else{if(o===h)return s?NaN:1/0*(d?-1:1);s+=Math.pow(2,i),o-=u}return(d?-1:1)*s*Math.pow(2,o-i)},e.write=function(t,e,r,i,n,o){var s,a,h,u=8*o-n-1,l=(1<>1,f=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,d=i?0:o-1,g=i?1:-1,A=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=l):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),(e+=s+c>=1?f/h:f*Math.pow(2,1-c))*h>=2&&(s++,h/=2),s+c>=l?(a=0,s=l):s+c>=1?(a=(e*h-1)*Math.pow(2,n),s+=c):(a=e*Math.pow(2,c-1)*Math.pow(2,n),s=0));n>=8;t[r+d]=255&a,d+=g,a/=256,n-=8);for(s=s<0;t[r+d]=255&s,d+=g,s/=256,u-=8);t[r+d-g]|=128*A}},5717:t=>{"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},2584:(t,e,r)=>{"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,n=r(1924)("Object.prototype.toString"),o=function(t){return!(i&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===n(t)},s=function(t){return!!o(t)||null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==n(t)&&"[object Function]"===n(t.callee)},a=function(){return o(arguments)}();o.isLegacyArguments=s,t.exports=a?o:s},8662:t=>{"use strict";var e,r=Object.prototype.toString,i=Function.prototype.toString,n=/^\s*(?:function)?\*/,o="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,s=Object.getPrototypeOf;t.exports=function(t){if("function"!=typeof t)return!1;if(n.test(i.call(t)))return!0;if(!o)return"[object GeneratorFunction]"===r.call(t);if(!s)return!1;if(void 0===e){var a=function(){if(!o)return!1;try{return Function("return function*() {}")()}catch(t){}}();e=!!a&&s(a)}return s(t)===e}},8611:t=>{"use strict";t.exports=function(t){return t!=t}},360:(t,e,r)=>{"use strict";var i=r(5559),n=r(4289),o=r(8611),s=r(9415),a=r(3194),h=i(s(),Number);n(h,{getPolyfill:s,implementation:o,shim:a}),t.exports=h},9415:(t,e,r)=>{"use strict";var i=r(8611);t.exports=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:i}},3194:(t,e,r)=>{"use strict";var i=r(4289),n=r(9415);t.exports=function(){var t=n();return i(Number,{isNaN:t},{isNaN:function(){return Number.isNaN!==t}}),t}},5692:(t,e,r)=>{"use strict";var i=r(9804),n=r(6314),o=r(1924),s=o("Object.prototype.toString"),a=r(1405)()&&"symbol"==typeof Symbol.toStringTag,h=n(),u=o("Array.prototype.indexOf",!0)||function(t,e){for(var r=0;r-1}return!!f&&function(t){var e=!1;return i(c,(function(r,i){if(!e)try{e=r.call(t)===i}catch(t){}})),e}(t)}},2318:(t,e,r)=>{"use strict";var i=r(5717),n=r(3349),o=r(9509).Buffer,s=new Array(16);function a(){n.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function h(t,e){return t<>>32-e}function u(t,e,r,i,n,o,s){return h(t+(e&r|~e&i)+n+o|0,s)+e|0}function l(t,e,r,i,n,o,s){return h(t+(e&i|r&~i)+n+o|0,s)+e|0}function c(t,e,r,i,n,o,s){return h(t+(e^r^i)+n+o|0,s)+e|0}function f(t,e,r,i,n,o,s){return h(t+(r^(e|~i))+n+o|0,s)+e|0}i(a,n),a.prototype._update=function(){for(var t=s,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);var r=this._a,i=this._b,n=this._c,o=this._d;r=u(r,i,n,o,t[0],3614090360,7),o=u(o,r,i,n,t[1],3905402710,12),n=u(n,o,r,i,t[2],606105819,17),i=u(i,n,o,r,t[3],3250441966,22),r=u(r,i,n,o,t[4],4118548399,7),o=u(o,r,i,n,t[5],1200080426,12),n=u(n,o,r,i,t[6],2821735955,17),i=u(i,n,o,r,t[7],4249261313,22),r=u(r,i,n,o,t[8],1770035416,7),o=u(o,r,i,n,t[9],2336552879,12),n=u(n,o,r,i,t[10],4294925233,17),i=u(i,n,o,r,t[11],2304563134,22),r=u(r,i,n,o,t[12],1804603682,7),o=u(o,r,i,n,t[13],4254626195,12),n=u(n,o,r,i,t[14],2792965006,17),r=l(r,i=u(i,n,o,r,t[15],1236535329,22),n,o,t[1],4129170786,5),o=l(o,r,i,n,t[6],3225465664,9),n=l(n,o,r,i,t[11],643717713,14),i=l(i,n,o,r,t[0],3921069994,20),r=l(r,i,n,o,t[5],3593408605,5),o=l(o,r,i,n,t[10],38016083,9),n=l(n,o,r,i,t[15],3634488961,14),i=l(i,n,o,r,t[4],3889429448,20),r=l(r,i,n,o,t[9],568446438,5),o=l(o,r,i,n,t[14],3275163606,9),n=l(n,o,r,i,t[3],4107603335,14),i=l(i,n,o,r,t[8],1163531501,20),r=l(r,i,n,o,t[13],2850285829,5),o=l(o,r,i,n,t[2],4243563512,9),n=l(n,o,r,i,t[7],1735328473,14),r=c(r,i=l(i,n,o,r,t[12],2368359562,20),n,o,t[5],4294588738,4),o=c(o,r,i,n,t[8],2272392833,11),n=c(n,o,r,i,t[11],1839030562,16),i=c(i,n,o,r,t[14],4259657740,23),r=c(r,i,n,o,t[1],2763975236,4),o=c(o,r,i,n,t[4],1272893353,11),n=c(n,o,r,i,t[7],4139469664,16),i=c(i,n,o,r,t[10],3200236656,23),r=c(r,i,n,o,t[13],681279174,4),o=c(o,r,i,n,t[0],3936430074,11),n=c(n,o,r,i,t[3],3572445317,16),i=c(i,n,o,r,t[6],76029189,23),r=c(r,i,n,o,t[9],3654602809,4),o=c(o,r,i,n,t[12],3873151461,11),n=c(n,o,r,i,t[15],530742520,16),r=f(r,i=c(i,n,o,r,t[2],3299628645,23),n,o,t[0],4096336452,6),o=f(o,r,i,n,t[7],1126891415,10),n=f(n,o,r,i,t[14],2878612391,15),i=f(i,n,o,r,t[5],4237533241,21),r=f(r,i,n,o,t[12],1700485571,6),o=f(o,r,i,n,t[3],2399980690,10),n=f(n,o,r,i,t[10],4293915773,15),i=f(i,n,o,r,t[1],2240044497,21),r=f(r,i,n,o,t[8],1873313359,6),o=f(o,r,i,n,t[15],4264355552,10),n=f(n,o,r,i,t[6],2734768916,15),i=f(i,n,o,r,t[13],1309151649,21),r=f(r,i,n,o,t[4],4149444226,6),o=f(o,r,i,n,t[11],3174756917,10),n=f(n,o,r,i,t[2],718787259,15),i=f(i,n,o,r,t[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+i|0,this._c=this._c+n|0,this._d=this._d+o|0},a.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=o.allocUnsafe(16);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t},t.exports=a},3047:(t,e,r)=>{var i=r(6240),n=r(9931);function o(t){this.rand=t||new n.Rand}t.exports=o,o.create=function(t){return new o(t)},o.prototype._randbelow=function(t){var e=t.bitLength(),r=Math.ceil(e/8);do{var n=new i(this.rand.generate(r))}while(n.cmp(t)>=0);return n},o.prototype._randrange=function(t,e){var r=e.sub(t);return t.add(this._randbelow(r))},o.prototype.test=function(t,e,r){var n=t.bitLength(),o=i.mont(t),s=new i(1).toRed(o);e||(e=Math.max(1,n/48|0));for(var a=t.subn(1),h=0;!a.testn(h);h++);for(var u=t.shrn(h),l=a.toRed(o);e>0;e--){var c=this._randrange(new i(2),a);r&&r(c);var f=c.toRed(o).redPow(u);if(0!==f.cmp(s)&&0!==f.cmp(l)){for(var d=1;d0;e--){var l=this._randrange(new i(2),s),c=t.gcd(l);if(0!==c.cmpn(1))return c;var f=l.toRed(n).redPow(h);if(0!==f.cmp(o)&&0!==f.cmp(u)){for(var d=1;d=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,c=67108863&h,f=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=f;d++){var g=u-d|0;l+=(s=(n=0|t.words[g])*(o=0|e.words[d])+c)/67108864|0,c=67108863&s}r.words[u]=0|c,h=0|l}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?l[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=c[t],d=f[t];r="";var g=this.clone();for(g.negative=0;!g.isZero();){var A=g.modn(d).toString(t);r=(g=g.idivn(d)).isZero()?A+r:l[u-A.length]+A+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),l=this.clone();if(h){for(a=0;!l.isZero();a++)s=l.andln(255),l.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],g=8191&d,A=d>>>13,M=0|s[2],p=8191&M,w=M>>>13,B=0|s[3],m=8191&B,E=B>>>13,y=0|s[4],b=8191&y,I=y>>>13,v=0|s[5],C=8191&v,Q=v>>>13,D=0|s[6],N=8191&D,R=D>>>13,G=0|s[7],U=8191&G,V=G>>>13,S=0|s[8],T=8191&S,Y=S>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,x=j>>>13,z=0|a[1],O=8191&z,H=z>>>13,_=0|a[2],W=8191&_,J=_>>>13,X=0|a[3],P=8191&X,K=X>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,lt=0|a[8],ct=8191<,ft=lt>>>13,dt=0|a[9],gt=8191&dt,At=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(c,Z))|0)+((8191&(n=(n=Math.imul(c,x))+Math.imul(f,Z)|0))<<13)|0;u=((o=Math.imul(f,x))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(g,Z),n=(n=Math.imul(g,x))+Math.imul(A,Z)|0,o=Math.imul(A,x);var pt=(u+(i=i+Math.imul(c,O)|0)|0)+((8191&(n=(n=n+Math.imul(c,H)|0)+Math.imul(f,O)|0))<<13)|0;u=((o=o+Math.imul(f,H)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,x))+Math.imul(w,Z)|0,o=Math.imul(w,x),i=i+Math.imul(g,O)|0,n=(n=n+Math.imul(g,H)|0)+Math.imul(A,O)|0,o=o+Math.imul(A,H)|0;var wt=(u+(i=i+Math.imul(c,W)|0)|0)+((8191&(n=(n=n+Math.imul(c,J)|0)+Math.imul(f,W)|0))<<13)|0;u=((o=o+Math.imul(f,J)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(m,Z),n=(n=Math.imul(m,x))+Math.imul(E,Z)|0,o=Math.imul(E,x),i=i+Math.imul(p,O)|0,n=(n=n+Math.imul(p,H)|0)+Math.imul(w,O)|0,o=o+Math.imul(w,H)|0,i=i+Math.imul(g,W)|0,n=(n=n+Math.imul(g,J)|0)+Math.imul(A,W)|0,o=o+Math.imul(A,J)|0;var Bt=(u+(i=i+Math.imul(c,P)|0)|0)+((8191&(n=(n=n+Math.imul(c,K)|0)+Math.imul(f,P)|0))<<13)|0;u=((o=o+Math.imul(f,K)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,x))+Math.imul(I,Z)|0,o=Math.imul(I,x),i=i+Math.imul(m,O)|0,n=(n=n+Math.imul(m,H)|0)+Math.imul(E,O)|0,o=o+Math.imul(E,H)|0,i=i+Math.imul(p,W)|0,n=(n=n+Math.imul(p,J)|0)+Math.imul(w,W)|0,o=o+Math.imul(w,J)|0,i=i+Math.imul(g,P)|0,n=(n=n+Math.imul(g,K)|0)+Math.imul(A,P)|0,o=o+Math.imul(A,K)|0;var mt=(u+(i=i+Math.imul(c,$)|0)|0)+((8191&(n=(n=n+Math.imul(c,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,x))+Math.imul(Q,Z)|0,o=Math.imul(Q,x),i=i+Math.imul(b,O)|0,n=(n=n+Math.imul(b,H)|0)+Math.imul(I,O)|0,o=o+Math.imul(I,H)|0,i=i+Math.imul(m,W)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,J)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,K)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,K)|0,i=i+Math.imul(g,$)|0,n=(n=n+Math.imul(g,tt)|0)+Math.imul(A,$)|0,o=o+Math.imul(A,tt)|0;var Et=(u+(i=i+Math.imul(c,rt)|0)|0)+((8191&(n=(n=n+Math.imul(c,it)|0)+Math.imul(f,rt)|0))<<13)|0;u=((o=o+Math.imul(f,it)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,Z),n=(n=Math.imul(N,x))+Math.imul(R,Z)|0,o=Math.imul(R,x),i=i+Math.imul(C,O)|0,n=(n=n+Math.imul(C,H)|0)+Math.imul(Q,O)|0,o=o+Math.imul(Q,H)|0,i=i+Math.imul(b,W)|0,n=(n=n+Math.imul(b,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,i=i+Math.imul(m,P)|0,n=(n=n+Math.imul(m,K)|0)+Math.imul(E,P)|0,o=o+Math.imul(E,K)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(g,rt)|0,n=(n=n+Math.imul(g,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0;var yt=(u+(i=i+Math.imul(c,ot)|0)|0)+((8191&(n=(n=n+Math.imul(c,st)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(U,Z),n=(n=Math.imul(U,x))+Math.imul(V,Z)|0,o=Math.imul(V,x),i=i+Math.imul(N,O)|0,n=(n=n+Math.imul(N,H)|0)+Math.imul(R,O)|0,o=o+Math.imul(R,H)|0,i=i+Math.imul(C,W)|0,n=(n=n+Math.imul(C,J)|0)+Math.imul(Q,W)|0,o=o+Math.imul(Q,J)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,K)|0)+Math.imul(I,P)|0,o=o+Math.imul(I,K)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(g,ot)|0,n=(n=n+Math.imul(g,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0;var bt=(u+(i=i+Math.imul(c,ht)|0)|0)+((8191&(n=(n=n+Math.imul(c,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,x))+Math.imul(Y,Z)|0,o=Math.imul(Y,x),i=i+Math.imul(U,O)|0,n=(n=n+Math.imul(U,H)|0)+Math.imul(V,O)|0,o=o+Math.imul(V,H)|0,i=i+Math.imul(N,W)|0,n=(n=n+Math.imul(N,J)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,J)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,K)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,K)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,tt)|0,i=i+Math.imul(m,rt)|0,n=(n=n+Math.imul(m,it)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(g,ht)|0,n=(n=n+Math.imul(g,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0;var It=(u+(i=i+Math.imul(c,ct)|0)|0)+((8191&(n=(n=n+Math.imul(c,ft)|0)+Math.imul(f,ct)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,x))+Math.imul(L,Z)|0,o=Math.imul(L,x),i=i+Math.imul(T,O)|0,n=(n=n+Math.imul(T,H)|0)+Math.imul(Y,O)|0,o=o+Math.imul(Y,H)|0,i=i+Math.imul(U,W)|0,n=(n=n+Math.imul(U,J)|0)+Math.imul(V,W)|0,o=o+Math.imul(V,J)|0,i=i+Math.imul(N,P)|0,n=(n=n+Math.imul(N,K)|0)+Math.imul(R,P)|0,o=o+Math.imul(R,K)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,it)|0,i=i+Math.imul(m,ot)|0,n=(n=n+Math.imul(m,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(g,ct)|0,n=(n=n+Math.imul(g,ft)|0)+Math.imul(A,ct)|0,o=o+Math.imul(A,ft)|0;var vt=(u+(i=i+Math.imul(c,gt)|0)|0)+((8191&(n=(n=n+Math.imul(c,At)|0)+Math.imul(f,gt)|0))<<13)|0;u=((o=o+Math.imul(f,At)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,O),n=(n=Math.imul(F,H))+Math.imul(L,O)|0,o=Math.imul(L,H),i=i+Math.imul(T,W)|0,n=(n=n+Math.imul(T,J)|0)+Math.imul(Y,W)|0,o=o+Math.imul(Y,J)|0,i=i+Math.imul(U,P)|0,n=(n=n+Math.imul(U,K)|0)+Math.imul(V,P)|0,o=o+Math.imul(V,K)|0,i=i+Math.imul(N,$)|0,n=(n=n+Math.imul(N,tt)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,i=i+Math.imul(m,ht)|0,n=(n=n+Math.imul(m,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,i=i+Math.imul(p,ct)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(w,ct)|0,o=o+Math.imul(w,ft)|0;var Ct=(u+(i=i+Math.imul(g,gt)|0)|0)+((8191&(n=(n=n+Math.imul(g,At)|0)+Math.imul(A,gt)|0))<<13)|0;u=((o=o+Math.imul(A,At)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,W),n=(n=Math.imul(F,J))+Math.imul(L,W)|0,o=Math.imul(L,J),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,K)|0)+Math.imul(Y,P)|0,o=o+Math.imul(Y,K)|0,i=i+Math.imul(U,$)|0,n=(n=n+Math.imul(U,tt)|0)+Math.imul(V,$)|0,o=o+Math.imul(V,tt)|0,i=i+Math.imul(N,rt)|0,n=(n=n+Math.imul(N,it)|0)+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,ut)|0,i=i+Math.imul(m,ct)|0,n=(n=n+Math.imul(m,ft)|0)+Math.imul(E,ct)|0,o=o+Math.imul(E,ft)|0;var Qt=(u+(i=i+Math.imul(p,gt)|0)|0)+((8191&(n=(n=n+Math.imul(p,At)|0)+Math.imul(w,gt)|0))<<13)|0;u=((o=o+Math.imul(w,At)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,K))+Math.imul(L,P)|0,o=Math.imul(L,K),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(Y,$)|0,o=o+Math.imul(Y,tt)|0,i=i+Math.imul(U,rt)|0,n=(n=n+Math.imul(U,it)|0)+Math.imul(V,rt)|0,o=o+Math.imul(V,it)|0,i=i+Math.imul(N,ot)|0,n=(n=n+Math.imul(N,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(b,ct)|0,n=(n=n+Math.imul(b,ft)|0)+Math.imul(I,ct)|0,o=o+Math.imul(I,ft)|0;var Dt=(u+(i=i+Math.imul(m,gt)|0)|0)+((8191&(n=(n=n+Math.imul(m,At)|0)+Math.imul(E,gt)|0))<<13)|0;u=((o=o+Math.imul(E,At)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(Y,rt)|0,o=o+Math.imul(Y,it)|0,i=i+Math.imul(U,ot)|0,n=(n=n+Math.imul(U,st)|0)+Math.imul(V,ot)|0,o=o+Math.imul(V,st)|0,i=i+Math.imul(N,ht)|0,n=(n=n+Math.imul(N,ut)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,ut)|0,i=i+Math.imul(C,ct)|0,n=(n=n+Math.imul(C,ft)|0)+Math.imul(Q,ct)|0,o=o+Math.imul(Q,ft)|0;var Nt=(u+(i=i+Math.imul(b,gt)|0)|0)+((8191&(n=(n=n+Math.imul(b,At)|0)+Math.imul(I,gt)|0))<<13)|0;u=((o=o+Math.imul(I,At)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(Y,ot)|0,o=o+Math.imul(Y,st)|0,i=i+Math.imul(U,ht)|0,n=(n=n+Math.imul(U,ut)|0)+Math.imul(V,ht)|0,o=o+Math.imul(V,ut)|0,i=i+Math.imul(N,ct)|0,n=(n=n+Math.imul(N,ft)|0)+Math.imul(R,ct)|0,o=o+Math.imul(R,ft)|0;var Rt=(u+(i=i+Math.imul(C,gt)|0)|0)+((8191&(n=(n=n+Math.imul(C,At)|0)+Math.imul(Q,gt)|0))<<13)|0;u=((o=o+Math.imul(Q,At)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(Y,ht)|0,o=o+Math.imul(Y,ut)|0,i=i+Math.imul(U,ct)|0,n=(n=n+Math.imul(U,ft)|0)+Math.imul(V,ct)|0,o=o+Math.imul(V,ft)|0;var Gt=(u+(i=i+Math.imul(N,gt)|0)|0)+((8191&(n=(n=n+Math.imul(N,At)|0)+Math.imul(R,gt)|0))<<13)|0;u=((o=o+Math.imul(R,At)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,ct)|0,n=(n=n+Math.imul(T,ft)|0)+Math.imul(Y,ct)|0,o=o+Math.imul(Y,ft)|0;var Ut=(u+(i=i+Math.imul(U,gt)|0)|0)+((8191&(n=(n=n+Math.imul(U,At)|0)+Math.imul(V,gt)|0))<<13)|0;u=((o=o+Math.imul(V,At)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,i=Math.imul(F,ct),n=(n=Math.imul(F,ft))+Math.imul(L,ct)|0,o=Math.imul(L,ft);var Vt=(u+(i=i+Math.imul(T,gt)|0)|0)+((8191&(n=(n=n+Math.imul(T,At)|0)+Math.imul(Y,gt)|0))<<13)|0;u=((o=o+Math.imul(Y,At)|0)+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863;var St=(u+(i=Math.imul(F,gt))|0)+((8191&(n=(n=Math.imul(F,At))+Math.imul(L,gt)|0))<<13)|0;return u=((o=Math.imul(L,At))+(n>>>13)|0)+(St>>>26)|0,St&=67108863,h[0]=Mt,h[1]=pt,h[2]=wt,h[3]=Bt,h[4]=mt,h[5]=Et,h[6]=yt,h[7]=bt,h[8]=It,h[9]=vt,h[10]=Ct,h[11]=Qt,h[12]=Dt,h[13]=Nt,h[14]=Rt,h[15]=Gt,h[16]=Ut,h[17]=Vt,h[18]=St,0!==u&&(h[19]=u,r.length++),r};function A(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(g=d),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?g(this,t,e):r<63?d(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):A(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==l||u>=n);u--){var c=0|this.words[u];this.words[u]=l<<26-o|c>>>o,l=c&a}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;c--){var f=67108864*(0|i.words[n.length+c])+(0|i.words[n.length+c-1]);for(f=Math.min(f/s|0,67108863),i._ishlnsubmul(n,f,c);0!==i.negative;)f--,i.negative=0,i._ishlnsubmul(n,1,c),i.isZero()||(i.negative^=1);a&&(a.words[c]=f)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),c=e.clone();!e.isZero();){for(var f=0,d=1;0==(e.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(l),s.isub(c)),n.iushrn(1),s.iushrn(1);for(var g=0,A=1;0==(r.words[0]&A)&&g<26;++g,A<<=1);if(g>0)for(r.iushrn(g);g-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(l),h.isub(c)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var c=0,f=1;0==(r.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(r.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var p={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function B(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function m(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function E(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function I(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(B,w),B.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},B.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(p[t])return p[t];var e;if("k256"===t)e=new B;else if("p224"===t)e=new m;else if("p192"===t)e=new E;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return p[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var c=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),g=s;0!==d.cmp(a);){for(var A=d,M=0;0!==A.cmp(a);M++)A=A.redSqr();i(M=0;i--){for(var u=e.words[i],l=h-1;l>=0;l--){var c=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==c||0!==s?(s<<=1,s|=c,(4==++a||0===i&&0===l)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new I(t)},n(I,b),I.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},I.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},I.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},I.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},I.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},9746:t=>{function e(t,e){if(!t)throw new Error(e||"Assertion failed")}t.exports=e,e.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)}},4504:(t,e)=>{"use strict";var r=e;function i(t){return 1===t.length?"0"+t:t}function n(t){for(var e="",r=0;r>8,s=255&n;o?r.push(o,s):r.push(s)}return r},r.zero2=i,r.toHex=n,r.encode=function(t,e){return"hex"===e?n(t):t}},4244:t=>{"use strict";var e=function(t){return t!=t};t.exports=function(t,r){return 0===t&&0===r?1/t==1/r:t===r||!(!e(t)||!e(r))}},609:(t,e,r)=>{"use strict";var i=r(4289),n=r(5559),o=r(4244),s=r(5624),a=r(2281),h=n(s(),Object);i(h,{getPolyfill:s,implementation:o,shim:a}),t.exports=h},5624:(t,e,r)=>{"use strict";var i=r(4244);t.exports=function(){return"function"==typeof Object.is?Object.is:i}},2281:(t,e,r)=>{"use strict";var i=r(5624),n=r(4289);t.exports=function(){var t=i();return n(Object,{is:t},{is:function(){return Object.is!==t}}),t}},8987:(t,e,r)=>{"use strict";var i;if(!Object.keys){var n=Object.prototype.hasOwnProperty,o=Object.prototype.toString,s=r(1414),a=Object.prototype.propertyIsEnumerable,h=!a.call({toString:null},"toString"),u=a.call((function(){}),"prototype"),l=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],c=function(t){var e=t.constructor;return e&&e.prototype===t},f={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},d=function(){if("undefined"==typeof window)return!1;for(var t in window)try{if(!f["$"+t]&&n.call(window,t)&&null!==window[t]&&"object"==typeof window[t])try{c(window[t])}catch(t){return!0}}catch(t){return!0}return!1}();i=function(t){var e=null!==t&&"object"==typeof t,r="[object Function]"===o.call(t),i=s(t),a=e&&"[object String]"===o.call(t),f=[];if(!e&&!r&&!i)throw new TypeError("Object.keys called on a non-object");var g=u&&r;if(a&&t.length>0&&!n.call(t,0))for(var A=0;A0)for(var M=0;M{"use strict";var i=Array.prototype.slice,n=r(1414),o=Object.keys,s=o?function(t){return o(t)}:r(8987),a=Object.keys;s.shim=function(){return Object.keys?function(){var t=Object.keys(arguments);return t&&t.length===arguments.length}(1,2)||(Object.keys=function(t){return n(t)?a(i.call(t)):a(t)}):Object.keys=s,Object.keys||s},t.exports=s},1414:t=>{"use strict";var e=Object.prototype.toString;t.exports=function(t){var r=e.call(t),i="[object Arguments]"===r;return i||(i="[object Array]"!==r&&null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Function]"===e.call(t.callee)),i}},4236:(t,e)=>{"use strict";var r="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var r=e.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var n in r)i(r,n)&&(t[n]=r[n])}}return t},e.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var n={arraySet:function(t,e,r,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(r,r+i),n);else for(var o=0;o{"use strict";t.exports=function(t,e,r,i){for(var n=65535&t|0,o=t>>>16&65535|0,s=0;0!==r;){r-=s=r>2e3?2e3:r;do{o=o+(n=n+e[i++]|0)|0}while(--s);n%=65521,o%=65521}return n|o<<16|0}},1619:t=>{"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},2869:t=>{"use strict";var e=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();t.exports=function(t,r,i,n){var o=e,s=n+i;t^=-1;for(var a=n;a>>8^o[255&(t^r[a])];return-1^t}},405:(t,e,r)=>{"use strict";var i,n=r(4236),o=r(342),s=r(6069),a=r(2869),h=r(8898),u=-2,l=258,c=262,f=103,d=113,g=666;function A(t,e){return t.msg=h[e],e}function M(t){return(t<<1)-(t>4?9:0)}function p(t){for(var e=t.length;--e>=0;)t[e]=0}function w(t){var e=t.state,r=e.pending;r>t.avail_out&&(r=t.avail_out),0!==r&&(n.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))}function B(t,e){o._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,w(t.strm)}function m(t,e){t.pending_buf[t.pending++]=e}function E(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function y(t,e){var r,i,n=t.max_chain_length,o=t.strstart,s=t.prev_length,a=t.nice_match,h=t.strstart>t.w_size-c?t.strstart-(t.w_size-c):0,u=t.window,f=t.w_mask,d=t.prev,g=t.strstart+l,A=u[o+s-1],M=u[o+s];t.prev_length>=t.good_match&&(n>>=2),a>t.lookahead&&(a=t.lookahead);do{if(u[(r=e)+s]===M&&u[r+s-1]===A&&u[r]===u[o]&&u[++r]===u[o+1]){o+=2,r++;do{}while(u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&os){if(t.match_start=e,s=i,i>=a)break;A=u[o+s-1],M=u[o+s]}}}while((e=d[e&f])>h&&0!=--n);return s<=t.lookahead?s:t.lookahead}function b(t){var e,r,i,o,h,u,l,f,d,g,A=t.w_size;do{if(o=t.window_size-t.lookahead-t.strstart,t.strstart>=A+(A-c)){n.arraySet(t.window,t.window,A,A,0),t.match_start-=A,t.strstart-=A,t.block_start-=A,e=r=t.hash_size;do{i=t.head[--e],t.head[e]=i>=A?i-A:0}while(--r);e=r=A;do{i=t.prev[--e],t.prev[e]=i>=A?i-A:0}while(--r);o+=A}if(0===t.strm.avail_in)break;if(u=t.strm,l=t.window,f=t.strstart+t.lookahead,d=o,g=void 0,(g=u.avail_in)>d&&(g=d),r=0===g?0:(u.avail_in-=g,n.arraySet(l,u.input,u.next_in,g,f),1===u.state.wrap?u.adler=s(u.adler,l,g,f):2===u.state.wrap&&(u.adler=a(u.adler,l,g,f)),u.next_in+=g,u.total_in+=g,g),t.lookahead+=r,t.lookahead+t.insert>=3)for(h=t.strstart-t.insert,t.ins_h=t.window[h],t.ins_h=(t.ins_h<=3&&(t.ins_h=(t.ins_h<=3)if(i=o._tr_tally(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<=3&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=o._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=(t.ins_h<15&&(a=2,i-=16),o<1||o>9||8!==r||i<8||i>15||e<0||e>9||s<0||s>4)return A(t,u);8===i&&(i=9);var h=new Q;return t.state=h,h.strm=t,h.wrap=a,h.gzhead=null,h.w_bits=i,h.w_size=1<t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(b(t),0===t.lookahead&&0===e)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+r;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,B(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-c&&(B(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(B(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(B(t,!1),t.strm.avail_out),1)})),new C(4,4,8,4,I),new C(4,5,16,8,I),new C(4,6,32,32,I),new C(4,4,16,16,v),new C(8,16,32,32,v),new C(8,16,128,128,v),new C(8,32,128,256,v),new C(32,128,258,1024,v),new C(32,258,258,4096,v)],e.deflateInit=function(t,e){return R(t,e,8,15,8,0)},e.deflateInit2=R,e.deflateReset=N,e.deflateResetKeep=D,e.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?u:(t.state.gzhead=e,0):u},e.deflate=function(t,e){var r,n,s,h;if(!t||!t.state||e>5||e<0)return t?A(t,u):u;if(n=t.state,!t.output||!t.input&&0!==t.avail_in||n.status===g&&4!==e)return A(t,0===t.avail_out?-5:u);if(n.strm=t,r=n.last_flush,n.last_flush=e,42===n.status)if(2===n.wrap)t.adler=0,m(n,31),m(n,139),m(n,8),n.gzhead?(m(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),m(n,255&n.gzhead.time),m(n,n.gzhead.time>>8&255),m(n,n.gzhead.time>>16&255),m(n,n.gzhead.time>>24&255),m(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),m(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(m(n,255&n.gzhead.extra.length),m(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=a(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(m(n,0),m(n,0),m(n,0),m(n,0),m(n,0),m(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),m(n,3),n.status=d);else{var c=8+(n.w_bits-8<<4)<<8;c|=(n.strategy>=2||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(c|=32),c+=31-c%31,n.status=d,E(n,c),0!==n.strstart&&(E(n,t.adler>>>16),E(n,65535&t.adler)),t.adler=1}if(69===n.status)if(n.gzhead.extra){for(s=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),w(t),s=n.pending,n.pending!==n.pending_buf_size));)m(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){s=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),w(t),s=n.pending,n.pending===n.pending_buf_size)){h=1;break}h=n.gzindexs&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),0===h&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){s=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),w(t),s=n.pending,n.pending===n.pending_buf_size)){h=1;break}h=n.gzindexs&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),0===h&&(n.status=f)}else n.status=f;if(n.status===f&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&w(t),n.pending+2<=n.pending_buf_size&&(m(n,255&t.adler),m(n,t.adler>>8&255),t.adler=0,n.status=d)):n.status=d),0!==n.pending){if(w(t),0===t.avail_out)return n.last_flush=-1,0}else if(0===t.avail_in&&M(e)<=M(r)&&4!==e)return A(t,-5);if(n.status===g&&0!==t.avail_in)return A(t,-5);if(0!==t.avail_in||0!==n.lookahead||0!==e&&n.status!==g){var y=2===n.strategy?function(t,e){for(var r;;){if(0===t.lookahead&&(b(t),0===t.lookahead)){if(0===e)return 1;break}if(t.match_length=0,r=o._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(B(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(B(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(B(t,!1),0===t.strm.avail_out)?1:2}(n,e):3===n.strategy?function(t,e){for(var r,i,n,s,a=t.window;;){if(t.lookahead<=l){if(b(t),t.lookahead<=l&&0===e)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(i=a[n=t.strstart-1])===a[++n]&&i===a[++n]&&i===a[++n]){s=t.strstart+l;do{}while(i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(r=o._tr_tally(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=o._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(B(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(B(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(B(t,!1),0===t.strm.avail_out)?1:2}(n,e):i[n.level].func(n,e);if(3!==y&&4!==y||(n.status=g),1===y||3===y)return 0===t.avail_out&&(n.last_flush=-1),0;if(2===y&&(1===e?o._tr_align(n):5!==e&&(o._tr_stored_block(n,0,0,!1),3===e&&(p(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),w(t),0===t.avail_out))return n.last_flush=-1,0}return 4!==e?0:n.wrap<=0?1:(2===n.wrap?(m(n,255&t.adler),m(n,t.adler>>8&255),m(n,t.adler>>16&255),m(n,t.adler>>24&255),m(n,255&t.total_in),m(n,t.total_in>>8&255),m(n,t.total_in>>16&255),m(n,t.total_in>>24&255)):(E(n,t.adler>>>16),E(n,65535&t.adler)),w(t),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?0:1)},e.deflateEnd=function(t){var e;return t&&t.state?42!==(e=t.state.status)&&69!==e&&73!==e&&91!==e&&e!==f&&e!==d&&e!==g?A(t,u):(t.state=null,e===d?A(t,-3):0):u},e.deflateSetDictionary=function(t,e){var r,i,o,a,h,l,c,f,d=e.length;if(!t||!t.state)return u;if(2===(a=(r=t.state).wrap)||1===a&&42!==r.status||r.lookahead)return u;for(1===a&&(t.adler=s(t.adler,e,d,0)),r.wrap=0,d>=r.w_size&&(0===a&&(p(r.head),r.strstart=0,r.block_start=0,r.insert=0),f=new n.Buf8(r.w_size),n.arraySet(f,e,d-r.w_size,r.w_size,0),e=f,d=r.w_size),h=t.avail_in,l=t.next_in,c=t.input,t.avail_in=d,t.next_in=0,t.input=e,b(r);r.lookahead>=3;){i=r.strstart,o=r.lookahead-2;do{r.ins_h=(r.ins_h<{"use strict";t.exports=function(t,e){var r,i,n,o,s,a,h,u,l,c,f,d,g,A,M,p,w,B,m,E,y,b,I,v,C;r=t.state,i=t.next_in,v=t.input,n=i+(t.avail_in-5),o=t.next_out,C=t.output,s=o-(e-t.avail_out),a=o+(t.avail_out-257),h=r.dmax,u=r.wsize,l=r.whave,c=r.wnext,f=r.window,d=r.hold,g=r.bits,A=r.lencode,M=r.distcode,p=(1<>>=m=B>>>24,g-=m,0==(m=B>>>16&255))C[o++]=65535&B;else{if(!(16&m)){if(0==(64&m)){B=A[(65535&B)+(d&(1<>>=m,g-=m),g<15&&(d+=v[i++]<>>=m=B>>>24,g-=m,!(16&(m=B>>>16&255))){if(0==(64&m)){B=M[(65535&B)+(d&(1<h){t.msg="invalid distance too far back",r.mode=30;break t}if(d>>>=m,g-=m,y>(m=o-s)){if((m=y-m)>l&&r.sane){t.msg="invalid distance too far back",r.mode=30;break t}if(b=0,I=f,0===c){if(b+=u-m,m2;)C[o++]=I[b++],C[o++]=I[b++],C[o++]=I[b++],E-=3;E&&(C[o++]=I[b++],E>1&&(C[o++]=I[b++]))}else{b=o-y;do{C[o++]=C[b++],C[o++]=C[b++],C[o++]=C[b++],E-=3}while(E>2);E&&(C[o++]=C[b++],E>1&&(C[o++]=C[b++]))}break}}break}}while(i>3,d&=(1<<(g-=E<<3))-1,t.next_in=i,t.next_out=o,t.avail_in=i{"use strict";var i=r(4236),n=r(6069),o=r(2869),s=r(4264),a=r(9241),h=-2,u=12,l=30;function c(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function f(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function d(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new i.Buf32(852),e.distcode=e.distdyn=new i.Buf32(592),e.sane=1,e.back=-1,0):h}function g(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,d(t)):h}function A(t,e){var r,i;return t&&t.state?(i=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?h:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=r,i.wbits=e,g(t))):h}function M(t,e){var r,i;return t?(i=new f,t.state=i,i.window=null,0!==(r=A(t,e))&&(t.state=null),r):h}var p,w,B=!0;function m(t){if(B){var e;for(p=new i.Buf32(512),w=new i.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(a(1,t.lens,0,288,p,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;a(2,t.lens,0,32,w,0,t.work,{bits:5}),B=!1}t.lencode=p,t.lenbits=9,t.distcode=w,t.distbits=5}function E(t,e,r,n){var o,s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(i.arraySet(s.window,e,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):((o=s.wsize-s.wnext)>n&&(o=n),i.arraySet(s.window,e,r-n,o,s.wnext),(n-=o)?(i.arraySet(s.window,e,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=o,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=o(r.check,F,2,0),w=0,B=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&w)<<8)+(w>>8))%31){t.msg="incorrect header check",r.mode=l;break}if(8!=(15&w)){t.msg="unknown compression method",r.mode=l;break}if(B-=4,V=8+(15&(w>>>=4)),0===r.wbits)r.wbits=V;else if(V>r.wbits){t.msg="invalid window size",r.mode=l;break}r.dmax=1<>8&1),512&r.flags&&(F[0]=255&w,F[1]=w>>>8&255,r.check=o(r.check,F,2,0)),w=0,B=0,r.mode=3;case 3:for(;B<32;){if(0===M)break t;M--,w+=f[g++]<>>8&255,F[2]=w>>>16&255,F[3]=w>>>24&255,r.check=o(r.check,F,4,0)),w=0,B=0,r.mode=4;case 4:for(;B<16;){if(0===M)break t;M--,w+=f[g++]<>8),512&r.flags&&(F[0]=255&w,F[1]=w>>>8&255,r.check=o(r.check,F,2,0)),w=0,B=0,r.mode=5;case 5:if(1024&r.flags){for(;B<16;){if(0===M)break t;M--,w+=f[g++]<>>8&255,r.check=o(r.check,F,2,0)),w=0,B=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((I=r.length)>M&&(I=M),I&&(r.head&&(V=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),i.arraySet(r.head.extra,f,g,I,V)),512&r.flags&&(r.check=o(r.check,f,I,g)),M-=I,g+=I,r.length-=I),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===M)break t;I=0;do{V=f[g+I++],r.head&&V&&r.length<65536&&(r.head.name+=String.fromCharCode(V))}while(V&&I>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=u;break;case 10:for(;B<32;){if(0===M)break t;M--,w+=f[g++]<>>=7&B,B-=7&B,r.mode=27;break}for(;B<3;){if(0===M)break t;M--,w+=f[g++]<>>=1)){case 0:r.mode=14;break;case 1:if(m(r),r.mode=20,6===e){w>>>=2,B-=2;break t}break;case 2:r.mode=17;break;case 3:t.msg="invalid block type",r.mode=l}w>>>=2,B-=2;break;case 14:for(w>>>=7&B,B-=7&B;B<32;){if(0===M)break t;M--,w+=f[g++]<>>16^65535)){t.msg="invalid stored block lengths",r.mode=l;break}if(r.length=65535&w,w=0,B=0,r.mode=15,6===e)break t;case 15:r.mode=16;case 16:if(I=r.length){if(I>M&&(I=M),I>p&&(I=p),0===I)break t;i.arraySet(d,f,g,I,A),M-=I,g+=I,p-=I,A+=I,r.length-=I;break}r.mode=u;break;case 17:for(;B<14;){if(0===M)break t;M--,w+=f[g++]<>>=5,B-=5,r.ndist=1+(31&w),w>>>=5,B-=5,r.ncode=4+(15&w),w>>>=4,B-=4,r.nlen>286||r.ndist>30){t.msg="too many length or distance symbols",r.mode=l;break}r.have=0,r.mode=18;case 18:for(;r.have>>=3,B-=3}for(;r.have<19;)r.lens[L[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,T={bits:r.lenbits},S=a(0,r.lens,0,19,r.lencode,0,r.work,T),r.lenbits=T.bits,S){t.msg="invalid code lengths set",r.mode=l;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,N=65535&k,!((Q=k>>>24)<=B);){if(0===M)break t;M--,w+=f[g++]<>>=Q,B-=Q,r.lens[r.have++]=N;else{if(16===N){for(Y=Q+2;B>>=Q,B-=Q,0===r.have){t.msg="invalid bit length repeat",r.mode=l;break}V=r.lens[r.have-1],I=3+(3&w),w>>>=2,B-=2}else if(17===N){for(Y=Q+3;B>>=Q)),w>>>=3,B-=3}else{for(Y=Q+7;B>>=Q)),w>>>=7,B-=7}if(r.have+I>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=l;break}for(;I--;)r.lens[r.have++]=V}}if(r.mode===l)break;if(0===r.lens[256]){t.msg="invalid code -- missing end-of-block",r.mode=l;break}if(r.lenbits=9,T={bits:r.lenbits},S=a(1,r.lens,0,r.nlen,r.lencode,0,r.work,T),r.lenbits=T.bits,S){t.msg="invalid literal/lengths set",r.mode=l;break}if(r.distbits=6,r.distcode=r.distdyn,T={bits:r.distbits},S=a(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,T),r.distbits=T.bits,S){t.msg="invalid distances set",r.mode=l;break}if(r.mode=20,6===e)break t;case 20:r.mode=21;case 21:if(M>=6&&p>=258){t.next_out=A,t.avail_out=p,t.next_in=g,t.avail_in=M,r.hold=w,r.bits=B,s(t,b),A=t.next_out,d=t.output,p=t.avail_out,g=t.next_in,f=t.input,M=t.avail_in,w=r.hold,B=r.bits,r.mode===u&&(r.back=-1);break}for(r.back=0;D=(k=r.lencode[w&(1<>>16&255,N=65535&k,!((Q=k>>>24)<=B);){if(0===M)break t;M--,w+=f[g++]<>R)])>>>16&255,N=65535&k,!(R+(Q=k>>>24)<=B);){if(0===M)break t;M--,w+=f[g++]<>>=R,B-=R,r.back+=R}if(w>>>=Q,B-=Q,r.back+=Q,r.length=N,0===D){r.mode=26;break}if(32&D){r.back=-1,r.mode=u;break}if(64&D){t.msg="invalid literal/length code",r.mode=l;break}r.extra=15&D,r.mode=22;case 22:if(r.extra){for(Y=r.extra;B>>=r.extra,B-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;D=(k=r.distcode[w&(1<>>16&255,N=65535&k,!((Q=k>>>24)<=B);){if(0===M)break t;M--,w+=f[g++]<>R)])>>>16&255,N=65535&k,!(R+(Q=k>>>24)<=B);){if(0===M)break t;M--,w+=f[g++]<>>=R,B-=R,r.back+=R}if(w>>>=Q,B-=Q,r.back+=Q,64&D){t.msg="invalid distance code",r.mode=l;break}r.offset=N,r.extra=15&D,r.mode=24;case 24:if(r.extra){for(Y=r.extra;B>>=r.extra,B-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=l;break}r.mode=25;case 25:if(0===p)break t;if(I=b-p,r.offset>I){if((I=r.offset-I)>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=l;break}I>r.wnext?(I-=r.wnext,v=r.wsize-I):v=r.wnext-I,I>r.length&&(I=r.length),C=r.window}else C=d,v=A-r.offset,I=r.length;I>p&&(I=p),p-=I,r.length-=I;do{d[A++]=C[v++]}while(--I);0===r.length&&(r.mode=21);break;case 26:if(0===p)break t;d[A++]=r.length,p--,r.mode=21;break;case 27:if(r.wrap){for(;B<32;){if(0===M)break t;M--,w|=f[g++]<{"use strict";var i=r(4236),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],o=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],s=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],a=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(t,e,r,h,u,l,c,f){var d,g,A,M,p,w,B,m,E,y=f.bits,b=0,I=0,v=0,C=0,Q=0,D=0,N=0,R=0,G=0,U=0,V=null,S=0,T=new i.Buf16(16),Y=new i.Buf16(16),k=null,F=0;for(b=0;b<=15;b++)T[b]=0;for(I=0;I=1&&0===T[C];C--);if(Q>C&&(Q=C),0===C)return u[l++]=20971520,u[l++]=20971520,f.bits=1,0;for(v=1;v0&&(0===t||1!==C))return-1;for(Y[1]=0,b=1;b<15;b++)Y[b+1]=Y[b]+T[b];for(I=0;I852||2===t&&G>592)return 1;for(;;){B=b-N,c[I]w?(m=k[F+c[I]],E=V[S+c[I]]):(m=96,E=0),d=1<>N)+(g-=d)]=B<<24|m<<16|E|0}while(0!==g);for(d=1<>=1;if(0!==d?(U&=d-1,U+=d):U=0,I++,0==--T[b]){if(b===C)break;b=e[r+c[I]]}if(b>Q&&(U&M)!==A){for(0===N&&(N=Q),p+=v,R=1<<(D=b-N);D+N852||2===t&&G>592)return 1;u[A=U&M]=Q<<24|D<<16|p-l|0}}return 0!==U&&(u[p+U]=b-N<<24|64<<16|0),f.bits=Q,0}},8898:t=>{"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},342:(t,e,r)=>{"use strict";var i=r(4236);function n(t){for(var e=t.length;--e>=0;)t[e]=0}var o=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],s=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],h=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],u=new Array(576);n(u);var l=new Array(60);n(l);var c=new Array(512);n(c);var f=new Array(256);n(f);var d=new Array(29);n(d);var g,A,M,p=new Array(30);function w(t,e,r,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function B(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function m(t){return t<256?c[t]:c[256+(t>>>7)]}function E(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function y(t,e,r){t.bi_valid>16-r?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=r-16):(t.bi_buf|=e<>>=1,r<<=1}while(--e>0);return r>>>1}function v(t,e,r){var i,n,o=new Array(16),s=0;for(i=1;i<=15;i++)o[i]=s=s+r[i-1]<<1;for(n=0;n<=e;n++){var a=t[2*n+1];0!==a&&(t[2*n]=I(o[a]++,a))}}function C(t){var e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function Q(t){t.bi_valid>8?E(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function D(t,e,r,i){var n=2*e,o=2*r;return t[n]>1;r>=1;r--)N(t,o,r);n=h;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],N(t,o,1),i=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=i,o[2*n]=o[2*r]+o[2*i],t.depth[n]=(t.depth[r]>=t.depth[i]?t.depth[r]:t.depth[i])+1,o[2*r+1]=o[2*i+1]=n,t.heap[1]=n++,N(t,o,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var r,i,n,o,s,a,h=e.dyn_tree,u=e.max_code,l=e.stat_desc.static_tree,c=e.stat_desc.has_stree,f=e.stat_desc.extra_bits,d=e.stat_desc.extra_base,g=e.stat_desc.max_length,A=0;for(o=0;o<=15;o++)t.bl_count[o]=0;for(h[2*t.heap[t.heap_max]+1]=0,r=t.heap_max+1;r<573;r++)(o=h[2*h[2*(i=t.heap[r])+1]+1]+1)>g&&(o=g,A++),h[2*i+1]=o,i>u||(t.bl_count[o]++,s=0,i>=d&&(s=f[i-d]),a=h[2*i],t.opt_len+=a*(o+s),c&&(t.static_len+=a*(l[2*i+1]+s)));if(0!==A){do{for(o=g-1;0===t.bl_count[o];)o--;t.bl_count[o]--,t.bl_count[o+1]+=2,t.bl_count[g]--,A-=2}while(A>0);for(o=g;0!==o;o--)for(i=t.bl_count[o];0!==i;)(n=t.heap[--r])>u||(h[2*n+1]!==o&&(t.opt_len+=(o-h[2*n+1])*h[2*n],h[2*n+1]=o),i--)}}(t,e),v(o,u,t.bl_count)}function U(t,e,r){var i,n,o=-1,s=e[1],a=0,h=7,u=4;for(0===s&&(h=138,u=3),e[2*(r+1)+1]=65535,i=0;i<=r;i++)n=s,s=e[2*(i+1)+1],++a>=7;i<30;i++)for(p[i]=n<<7,t=0;t<1<0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,r=4093624447;for(e=0;e<=31;e++,r>>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),G(t,t.l_desc),G(t,t.d_desc),s=function(t){var e;for(U(t,t.dyn_ltree,t.l_desc.max_code),U(t,t.dyn_dtree,t.d_desc.max_code),G(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),n=t.opt_len+3+7>>>3,(o=t.static_len+3+7>>>3)<=n&&(n=o)):n=o=r+5,r+4<=n&&-1!==e?T(t,e,r,i):4===t.strategy||o===n?(y(t,2+(i?1:0),3),R(t,u,l)):(y(t,4+(i?1:0),3),function(t,e,r,i){var n;for(y(t,e-257,5),y(t,r-1,5),y(t,i-4,4),n=0;n>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(f[r]+256+1)]++,t.dyn_dtree[2*m(e)]++),t.last_lit===t.lit_bufsize-1},e._tr_align=function(t){y(t,2,3),b(t,256,u),function(t){16===t.bi_valid?(E(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},2292:t=>{"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},873:t=>{"use strict";t.exports=JSON.parse('{"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}')},2818:(t,e,r)=>{"use strict";var i=r(9809);e.certificate=r(1934);var n=i.define("RSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())}));e.RSAPrivateKey=n;var o=i.define("RSAPublicKey",(function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())}));e.RSAPublicKey=o;var s=i.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(a),this.key("subjectPublicKey").bitstr())}));e.PublicKey=s;var a=i.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())})),h=i.define("PrivateKeyInfo",(function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(a),this.key("subjectPrivateKey").octstr())}));e.PrivateKey=h;var u=i.define("EncryptedPrivateKeyInfo",(function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())}));e.EncryptedPrivateKey=u;var l=i.define("DSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())}));e.DSAPrivateKey=l,e.DSAparam=i.define("DSAparam",(function(){this.int()}));var c=i.define("ECPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(f),this.key("publicKey").optional().explicit(1).bitstr())}));e.ECPrivateKey=c;var f=i.define("ECParameters",(function(){this.choice({namedCurve:this.objid()})}));e.signature=i.define("signature",(function(){this.seq().obj(this.key("r").int(),this.key("s").int())}))},1934:(t,e,r)=>{"use strict";var i=r(9809),n=i.define("Time",(function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})})),o=i.define("AttributeTypeValue",(function(){this.seq().obj(this.key("type").objid(),this.key("value").any())})),s=i.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())})),a=i.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(s),this.key("subjectPublicKey").bitstr())})),h=i.define("RelativeDistinguishedName",(function(){this.setof(o)})),u=i.define("RDNSequence",(function(){this.seqof(h)})),l=i.define("Name",(function(){this.choice({rdnSequence:this.use(u)})})),c=i.define("Validity",(function(){this.seq().obj(this.key("notBefore").use(n),this.key("notAfter").use(n))})),f=i.define("Extension",(function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())})),d=i.define("TBSCertificate",(function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(s),this.key("issuer").use(l),this.key("validity").use(c),this.key("subject").use(l),this.key("subjectPublicKeyInfo").use(a),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(f).optional())})),g=i.define("X509Certificate",(function(){this.seq().obj(this.key("tbsCertificate").use(d),this.key("signatureAlgorithm").use(s),this.key("signatureValue").bitstr())}));t.exports=g},7631:(t,e,r)=>{var i=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,n=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,o=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,s=r(3048),a=r(4696),h=r(9509).Buffer;t.exports=function(t,e){var r,u=t.toString(),l=u.match(i);if(l){var c="aes"+l[1],f=h.from(l[2],"hex"),d=h.from(l[3].replace(/[\r\n]/g,""),"base64"),g=s(e,f.slice(0,8),parseInt(l[1],10)).key,A=[],M=a.createDecipheriv(c,g,f);A.push(M.update(d)),A.push(M.final()),r=h.concat(A)}else{var p=u.match(o);r=h.from(p[2].replace(/[\r\n]/g,""),"base64")}return{tag:u.match(n)[1],data:r}}},980:(t,e,r)=>{var i=r(2818),n=r(873),o=r(7631),s=r(4696),a=r(5632),h=r(9509).Buffer;function u(t){var e;"object"!=typeof t||h.isBuffer(t)||(e=t.passphrase,t=t.key),"string"==typeof t&&(t=h.from(t));var r,u,l=o(t,e),c=l.tag,f=l.data;switch(c){case"CERTIFICATE":u=i.certificate.decode(f,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(u||(u=i.PublicKey.decode(f,"der")),r=u.algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return i.RSAPublicKey.decode(u.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return u.subjectPrivateKey=u.subjectPublicKey,{type:"ec",data:u};case"1.2.840.10040.4.1":return u.algorithm.params.pub_key=i.DSAparam.decode(u.subjectPublicKey.data,"der"),{type:"dsa",data:u.algorithm.params};default:throw new Error("unknown key id "+r)}case"ENCRYPTED PRIVATE KEY":f=function(t,e){var r=t.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(),10),o=n[t.algorithm.decrypt.cipher.algo.join(".")],u=t.algorithm.decrypt.cipher.iv,l=t.subjectPrivateKey,c=parseInt(o.split("-")[1],10)/8,f=a.pbkdf2Sync(e,r,i,c,"sha1"),d=s.createDecipheriv(o,f,u),g=[];return g.push(d.update(l)),g.push(d.final()),h.concat(g)}(f=i.EncryptedPrivateKey.decode(f,"der"),e);case"PRIVATE KEY":switch(r=(u=i.PrivateKey.decode(f,"der")).algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return i.RSAPrivateKey.decode(u.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:u.algorithm.curve,privateKey:i.ECPrivateKey.decode(u.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return u.algorithm.params.priv_key=i.DSAparam.decode(u.subjectPrivateKey,"der"),{type:"dsa",params:u.algorithm.params};default:throw new Error("unknown key id "+r)}case"RSA PUBLIC KEY":return i.RSAPublicKey.decode(f,"der");case"RSA PRIVATE KEY":return i.RSAPrivateKey.decode(f,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:i.DSAPrivateKey.decode(f,"der")};case"EC PRIVATE KEY":return{curve:(f=i.ECPrivateKey.decode(f,"der")).parameters.value,privateKey:f.privateKey};default:throw new Error("unknown key type "+c)}}t.exports=u,u.signature=i.signature},5632:(t,e,r)=>{e.pbkdf2=r(8638),e.pbkdf2Sync=r(1257)},8638:(t,e,r)=>{var i,n,o=r(9509).Buffer,s=r(7357),a=r(2368),h=r(1257),u=r(7777),l=r.g.crypto&&r.g.crypto.subtle,c={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},f=[];function d(){return n||(n=r.g.process&&r.g.process.nextTick?r.g.process.nextTick:r.g.queueMicrotask?r.g.queueMicrotask:r.g.setImmediate?r.g.setImmediate:r.g.setTimeout)}function g(t,e,r,i,n){return l.importKey("raw",t,{name:"PBKDF2"},!1,["deriveBits"]).then((function(t){return l.deriveBits({name:"PBKDF2",salt:e,iterations:r,hash:{name:n}},t,i<<3)})).then((function(t){return o.from(t)}))}t.exports=function(t,e,n,A,M,p){"function"==typeof M&&(p=M,M=void 0);var w=c[(M=M||"sha1").toLowerCase()];if(w&&"function"==typeof r.g.Promise){if(s(n,A),t=u(t,a,"Password"),e=u(e,a,"Salt"),"function"!=typeof p)throw new Error("No callback provided to pbkdf2");!function(t,e){t.then((function(t){d()((function(){e(null,t)}))}),(function(t){d()((function(){e(t)}))}))}(function(t){if(r.g.process&&!r.g.process.browser)return Promise.resolve(!1);if(!l||!l.importKey||!l.deriveBits)return Promise.resolve(!1);if(void 0!==f[t])return f[t];var e=g(i=i||o.alloc(8),i,10,128,t).then((function(){return!0})).catch((function(){return!1}));return f[t]=e,e}(w).then((function(r){return r?g(t,e,n,A,w):h(t,e,n,A,M)})),p)}else d()((function(){var r;try{r=h(t,e,n,A,M)}catch(t){return p(t)}p(null,r)}))}},2368:(t,e,r)=>{var i,n=r(4155);i=r.g.process&&r.g.process.browser?"utf-8":r.g.process&&r.g.process.version?parseInt(n.version.split(".")[0].slice(1),10)>=6?"utf-8":"binary":"utf-8",t.exports=i},7357:t=>{var e=Math.pow(2,30)-1;t.exports=function(t,r){if("number"!=typeof t)throw new TypeError("Iterations not a number");if(t<0)throw new TypeError("Bad iterations");if("number"!=typeof r)throw new TypeError("Key length not a number");if(r<0||r>e||r!=r)throw new TypeError("Bad key length")}},1257:(t,e,r)=>{var i=r(8028),n=r(9785),o=r(9072),s=r(9509).Buffer,a=r(7357),h=r(2368),u=r(7777),l=s.alloc(128),c={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function f(t,e,r){var a=function(t){return"rmd160"===t||"ripemd160"===t?function(t){return(new n).update(t).digest()}:"md5"===t?i:function(e){return o(t).update(e).digest()}}(t),h="sha512"===t||"sha384"===t?128:64;e.length>h?e=a(e):e.length{var i=r(9509).Buffer;t.exports=function(t,e,r){if(i.isBuffer(t))return t;if("string"==typeof t)return i.from(t,e);if(ArrayBuffer.isView(t))return i.from(t.buffer);throw new TypeError(r+" must be a string, a Buffer, a typed array or a DataView")}},4155:t=>{var e,r,i=t.exports={};function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(e===setTimeout)return setTimeout(t,0);if((e===n||!e)&&setTimeout)return e=setTimeout,setTimeout(t,0);try{return e(t,0)}catch(r){try{return e.call(null,t,0)}catch(r){return e.call(this,t,0)}}}!function(){try{e="function"==typeof setTimeout?setTimeout:n}catch(t){e=n}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var a,h=[],u=!1,l=-1;function c(){u&&a&&(u=!1,a.length?h=a.concat(h):l=-1,h.length&&f())}function f(){if(!u){var t=s(c);u=!0;for(var e=h.length;e;){for(a=h,h=[];++l1)for(var r=1;r{e.publicEncrypt=r(6559),e.privateDecrypt=r(6138),e.privateEncrypt=function(t,r){return e.publicEncrypt(t,r,!0)},e.publicDecrypt=function(t,r){return e.privateDecrypt(t,r,!0)}},9199:(t,e,r)=>{var i=r(3482),n=r(9509).Buffer;function o(t){var e=n.allocUnsafe(4);return e.writeUInt32BE(t,0),e}t.exports=function(t,e){for(var r,s=n.alloc(0),a=0;s.length=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var l=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],c=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function d(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,c=67108863&h,f=Math.min(u,e.length-1),d=Math.max(0,u-t.length+1);d<=f;d++){var g=u-d|0;l+=(s=(n=0|t.words[g])*(o=0|e.words[d])+c)/67108864|0,c=67108863&s}r.words[u]=0|c,h=0|l}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?l[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=c[t],d=f[t];r="";var g=this.clone();for(g.negative=0;!g.isZero();){var A=g.modn(d).toString(t);r=(g=g.idivn(d)).isZero()?A+r:l[u-A.length]+A+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),l=this.clone();if(h){for(a=0;!l.isZero();a++)s=l.andln(255),l.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,d=0|s[1],g=8191&d,A=d>>>13,M=0|s[2],p=8191&M,w=M>>>13,B=0|s[3],m=8191&B,E=B>>>13,y=0|s[4],b=8191&y,I=y>>>13,v=0|s[5],C=8191&v,Q=v>>>13,D=0|s[6],N=8191&D,R=D>>>13,G=0|s[7],U=8191&G,V=G>>>13,S=0|s[8],T=8191&S,Y=S>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,x=j>>>13,z=0|a[1],O=8191&z,H=z>>>13,_=0|a[2],W=8191&_,J=_>>>13,X=0|a[3],P=8191&X,K=X>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,lt=0|a[8],ct=8191<,ft=lt>>>13,dt=0|a[9],gt=8191&dt,At=dt>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(c,Z))|0)+((8191&(n=(n=Math.imul(c,x))+Math.imul(f,Z)|0))<<13)|0;u=((o=Math.imul(f,x))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(g,Z),n=(n=Math.imul(g,x))+Math.imul(A,Z)|0,o=Math.imul(A,x);var pt=(u+(i=i+Math.imul(c,O)|0)|0)+((8191&(n=(n=n+Math.imul(c,H)|0)+Math.imul(f,O)|0))<<13)|0;u=((o=o+Math.imul(f,H)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,x))+Math.imul(w,Z)|0,o=Math.imul(w,x),i=i+Math.imul(g,O)|0,n=(n=n+Math.imul(g,H)|0)+Math.imul(A,O)|0,o=o+Math.imul(A,H)|0;var wt=(u+(i=i+Math.imul(c,W)|0)|0)+((8191&(n=(n=n+Math.imul(c,J)|0)+Math.imul(f,W)|0))<<13)|0;u=((o=o+Math.imul(f,J)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(m,Z),n=(n=Math.imul(m,x))+Math.imul(E,Z)|0,o=Math.imul(E,x),i=i+Math.imul(p,O)|0,n=(n=n+Math.imul(p,H)|0)+Math.imul(w,O)|0,o=o+Math.imul(w,H)|0,i=i+Math.imul(g,W)|0,n=(n=n+Math.imul(g,J)|0)+Math.imul(A,W)|0,o=o+Math.imul(A,J)|0;var Bt=(u+(i=i+Math.imul(c,P)|0)|0)+((8191&(n=(n=n+Math.imul(c,K)|0)+Math.imul(f,P)|0))<<13)|0;u=((o=o+Math.imul(f,K)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,x))+Math.imul(I,Z)|0,o=Math.imul(I,x),i=i+Math.imul(m,O)|0,n=(n=n+Math.imul(m,H)|0)+Math.imul(E,O)|0,o=o+Math.imul(E,H)|0,i=i+Math.imul(p,W)|0,n=(n=n+Math.imul(p,J)|0)+Math.imul(w,W)|0,o=o+Math.imul(w,J)|0,i=i+Math.imul(g,P)|0,n=(n=n+Math.imul(g,K)|0)+Math.imul(A,P)|0,o=o+Math.imul(A,K)|0;var mt=(u+(i=i+Math.imul(c,$)|0)|0)+((8191&(n=(n=n+Math.imul(c,tt)|0)+Math.imul(f,$)|0))<<13)|0;u=((o=o+Math.imul(f,tt)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,x))+Math.imul(Q,Z)|0,o=Math.imul(Q,x),i=i+Math.imul(b,O)|0,n=(n=n+Math.imul(b,H)|0)+Math.imul(I,O)|0,o=o+Math.imul(I,H)|0,i=i+Math.imul(m,W)|0,n=(n=n+Math.imul(m,J)|0)+Math.imul(E,W)|0,o=o+Math.imul(E,J)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,K)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,K)|0,i=i+Math.imul(g,$)|0,n=(n=n+Math.imul(g,tt)|0)+Math.imul(A,$)|0,o=o+Math.imul(A,tt)|0;var Et=(u+(i=i+Math.imul(c,rt)|0)|0)+((8191&(n=(n=n+Math.imul(c,it)|0)+Math.imul(f,rt)|0))<<13)|0;u=((o=o+Math.imul(f,it)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(N,Z),n=(n=Math.imul(N,x))+Math.imul(R,Z)|0,o=Math.imul(R,x),i=i+Math.imul(C,O)|0,n=(n=n+Math.imul(C,H)|0)+Math.imul(Q,O)|0,o=o+Math.imul(Q,H)|0,i=i+Math.imul(b,W)|0,n=(n=n+Math.imul(b,J)|0)+Math.imul(I,W)|0,o=o+Math.imul(I,J)|0,i=i+Math.imul(m,P)|0,n=(n=n+Math.imul(m,K)|0)+Math.imul(E,P)|0,o=o+Math.imul(E,K)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(g,rt)|0,n=(n=n+Math.imul(g,it)|0)+Math.imul(A,rt)|0,o=o+Math.imul(A,it)|0;var yt=(u+(i=i+Math.imul(c,ot)|0)|0)+((8191&(n=(n=n+Math.imul(c,st)|0)+Math.imul(f,ot)|0))<<13)|0;u=((o=o+Math.imul(f,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(U,Z),n=(n=Math.imul(U,x))+Math.imul(V,Z)|0,o=Math.imul(V,x),i=i+Math.imul(N,O)|0,n=(n=n+Math.imul(N,H)|0)+Math.imul(R,O)|0,o=o+Math.imul(R,H)|0,i=i+Math.imul(C,W)|0,n=(n=n+Math.imul(C,J)|0)+Math.imul(Q,W)|0,o=o+Math.imul(Q,J)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,K)|0)+Math.imul(I,P)|0,o=o+Math.imul(I,K)|0,i=i+Math.imul(m,$)|0,n=(n=n+Math.imul(m,tt)|0)+Math.imul(E,$)|0,o=o+Math.imul(E,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(g,ot)|0,n=(n=n+Math.imul(g,st)|0)+Math.imul(A,ot)|0,o=o+Math.imul(A,st)|0;var bt=(u+(i=i+Math.imul(c,ht)|0)|0)+((8191&(n=(n=n+Math.imul(c,ut)|0)+Math.imul(f,ht)|0))<<13)|0;u=((o=o+Math.imul(f,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,x))+Math.imul(Y,Z)|0,o=Math.imul(Y,x),i=i+Math.imul(U,O)|0,n=(n=n+Math.imul(U,H)|0)+Math.imul(V,O)|0,o=o+Math.imul(V,H)|0,i=i+Math.imul(N,W)|0,n=(n=n+Math.imul(N,J)|0)+Math.imul(R,W)|0,o=o+Math.imul(R,J)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,K)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,K)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,tt)|0,i=i+Math.imul(m,rt)|0,n=(n=n+Math.imul(m,it)|0)+Math.imul(E,rt)|0,o=o+Math.imul(E,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(g,ht)|0,n=(n=n+Math.imul(g,ut)|0)+Math.imul(A,ht)|0,o=o+Math.imul(A,ut)|0;var It=(u+(i=i+Math.imul(c,ct)|0)|0)+((8191&(n=(n=n+Math.imul(c,ft)|0)+Math.imul(f,ct)|0))<<13)|0;u=((o=o+Math.imul(f,ft)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,x))+Math.imul(L,Z)|0,o=Math.imul(L,x),i=i+Math.imul(T,O)|0,n=(n=n+Math.imul(T,H)|0)+Math.imul(Y,O)|0,o=o+Math.imul(Y,H)|0,i=i+Math.imul(U,W)|0,n=(n=n+Math.imul(U,J)|0)+Math.imul(V,W)|0,o=o+Math.imul(V,J)|0,i=i+Math.imul(N,P)|0,n=(n=n+Math.imul(N,K)|0)+Math.imul(R,P)|0,o=o+Math.imul(R,K)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(I,rt)|0,o=o+Math.imul(I,it)|0,i=i+Math.imul(m,ot)|0,n=(n=n+Math.imul(m,st)|0)+Math.imul(E,ot)|0,o=o+Math.imul(E,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(g,ct)|0,n=(n=n+Math.imul(g,ft)|0)+Math.imul(A,ct)|0,o=o+Math.imul(A,ft)|0;var vt=(u+(i=i+Math.imul(c,gt)|0)|0)+((8191&(n=(n=n+Math.imul(c,At)|0)+Math.imul(f,gt)|0))<<13)|0;u=((o=o+Math.imul(f,At)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,O),n=(n=Math.imul(F,H))+Math.imul(L,O)|0,o=Math.imul(L,H),i=i+Math.imul(T,W)|0,n=(n=n+Math.imul(T,J)|0)+Math.imul(Y,W)|0,o=o+Math.imul(Y,J)|0,i=i+Math.imul(U,P)|0,n=(n=n+Math.imul(U,K)|0)+Math.imul(V,P)|0,o=o+Math.imul(V,K)|0,i=i+Math.imul(N,$)|0,n=(n=n+Math.imul(N,tt)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(I,ot)|0,o=o+Math.imul(I,st)|0,i=i+Math.imul(m,ht)|0,n=(n=n+Math.imul(m,ut)|0)+Math.imul(E,ht)|0,o=o+Math.imul(E,ut)|0,i=i+Math.imul(p,ct)|0,n=(n=n+Math.imul(p,ft)|0)+Math.imul(w,ct)|0,o=o+Math.imul(w,ft)|0;var Ct=(u+(i=i+Math.imul(g,gt)|0)|0)+((8191&(n=(n=n+Math.imul(g,At)|0)+Math.imul(A,gt)|0))<<13)|0;u=((o=o+Math.imul(A,At)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,W),n=(n=Math.imul(F,J))+Math.imul(L,W)|0,o=Math.imul(L,J),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,K)|0)+Math.imul(Y,P)|0,o=o+Math.imul(Y,K)|0,i=i+Math.imul(U,$)|0,n=(n=n+Math.imul(U,tt)|0)+Math.imul(V,$)|0,o=o+Math.imul(V,tt)|0,i=i+Math.imul(N,rt)|0,n=(n=n+Math.imul(N,it)|0)+Math.imul(R,rt)|0,o=o+Math.imul(R,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(I,ht)|0,o=o+Math.imul(I,ut)|0,i=i+Math.imul(m,ct)|0,n=(n=n+Math.imul(m,ft)|0)+Math.imul(E,ct)|0,o=o+Math.imul(E,ft)|0;var Qt=(u+(i=i+Math.imul(p,gt)|0)|0)+((8191&(n=(n=n+Math.imul(p,At)|0)+Math.imul(w,gt)|0))<<13)|0;u=((o=o+Math.imul(w,At)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,K))+Math.imul(L,P)|0,o=Math.imul(L,K),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(Y,$)|0,o=o+Math.imul(Y,tt)|0,i=i+Math.imul(U,rt)|0,n=(n=n+Math.imul(U,it)|0)+Math.imul(V,rt)|0,o=o+Math.imul(V,it)|0,i=i+Math.imul(N,ot)|0,n=(n=n+Math.imul(N,st)|0)+Math.imul(R,ot)|0,o=o+Math.imul(R,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(b,ct)|0,n=(n=n+Math.imul(b,ft)|0)+Math.imul(I,ct)|0,o=o+Math.imul(I,ft)|0;var Dt=(u+(i=i+Math.imul(m,gt)|0)|0)+((8191&(n=(n=n+Math.imul(m,At)|0)+Math.imul(E,gt)|0))<<13)|0;u=((o=o+Math.imul(E,At)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(Y,rt)|0,o=o+Math.imul(Y,it)|0,i=i+Math.imul(U,ot)|0,n=(n=n+Math.imul(U,st)|0)+Math.imul(V,ot)|0,o=o+Math.imul(V,st)|0,i=i+Math.imul(N,ht)|0,n=(n=n+Math.imul(N,ut)|0)+Math.imul(R,ht)|0,o=o+Math.imul(R,ut)|0,i=i+Math.imul(C,ct)|0,n=(n=n+Math.imul(C,ft)|0)+Math.imul(Q,ct)|0,o=o+Math.imul(Q,ft)|0;var Nt=(u+(i=i+Math.imul(b,gt)|0)|0)+((8191&(n=(n=n+Math.imul(b,At)|0)+Math.imul(I,gt)|0))<<13)|0;u=((o=o+Math.imul(I,At)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(Y,ot)|0,o=o+Math.imul(Y,st)|0,i=i+Math.imul(U,ht)|0,n=(n=n+Math.imul(U,ut)|0)+Math.imul(V,ht)|0,o=o+Math.imul(V,ut)|0,i=i+Math.imul(N,ct)|0,n=(n=n+Math.imul(N,ft)|0)+Math.imul(R,ct)|0,o=o+Math.imul(R,ft)|0;var Rt=(u+(i=i+Math.imul(C,gt)|0)|0)+((8191&(n=(n=n+Math.imul(C,At)|0)+Math.imul(Q,gt)|0))<<13)|0;u=((o=o+Math.imul(Q,At)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(Y,ht)|0,o=o+Math.imul(Y,ut)|0,i=i+Math.imul(U,ct)|0,n=(n=n+Math.imul(U,ft)|0)+Math.imul(V,ct)|0,o=o+Math.imul(V,ft)|0;var Gt=(u+(i=i+Math.imul(N,gt)|0)|0)+((8191&(n=(n=n+Math.imul(N,At)|0)+Math.imul(R,gt)|0))<<13)|0;u=((o=o+Math.imul(R,At)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,ct)|0,n=(n=n+Math.imul(T,ft)|0)+Math.imul(Y,ct)|0,o=o+Math.imul(Y,ft)|0;var Ut=(u+(i=i+Math.imul(U,gt)|0)|0)+((8191&(n=(n=n+Math.imul(U,At)|0)+Math.imul(V,gt)|0))<<13)|0;u=((o=o+Math.imul(V,At)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,i=Math.imul(F,ct),n=(n=Math.imul(F,ft))+Math.imul(L,ct)|0,o=Math.imul(L,ft);var Vt=(u+(i=i+Math.imul(T,gt)|0)|0)+((8191&(n=(n=n+Math.imul(T,At)|0)+Math.imul(Y,gt)|0))<<13)|0;u=((o=o+Math.imul(Y,At)|0)+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863;var St=(u+(i=Math.imul(F,gt))|0)+((8191&(n=(n=Math.imul(F,At))+Math.imul(L,gt)|0))<<13)|0;return u=((o=Math.imul(L,At))+(n>>>13)|0)+(St>>>26)|0,St&=67108863,h[0]=Mt,h[1]=pt,h[2]=wt,h[3]=Bt,h[4]=mt,h[5]=Et,h[6]=yt,h[7]=bt,h[8]=It,h[9]=vt,h[10]=Ct,h[11]=Qt,h[12]=Dt,h[13]=Nt,h[14]=Rt,h[15]=Gt,h[16]=Ut,h[17]=Vt,h[18]=St,0!==u&&(h[19]=u,r.length++),r};function A(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(g=d),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?g(this,t,e):r<63?d(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):A(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==l||u>=n);u--){var c=0|this.words[u];this.words[u]=l<<26-o|c>>>o,l=c&a}return h&&0!==l&&(h.words[h.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;c--){var f=67108864*(0|i.words[n.length+c])+(0|i.words[n.length+c-1]);for(f=Math.min(f/s|0,67108863),i._ishlnsubmul(n,f,c);0!==i.negative;)f--,i.negative=0,i._ishlnsubmul(n,1,c),i.isZero()||(i.negative^=1);a&&(a.words[c]=f)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var l=r.clone(),c=e.clone();!e.isZero();){for(var f=0,d=1;0==(e.words[0]&d)&&f<26;++f,d<<=1);if(f>0)for(e.iushrn(f);f-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(l),s.isub(c)),n.iushrn(1),s.iushrn(1);for(var g=0,A=1;0==(r.words[0]&A)&&g<26;++g,A<<=1);if(g>0)for(r.iushrn(g);g-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(l),h.isub(c)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,l=1;0==(e.words[0]&l)&&u<26;++u,l<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var c=0,f=1;0==(r.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(r.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var p={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function B(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function m(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function E(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function I(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(B,w),B.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},B.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(p[t])return p[t];var e;if("k256"===t)e=new B;else if("p224"===t)e=new m;else if("p192"===t)e=new E;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return p[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,u).cmp(h);)l.redIAdd(h);for(var c=this.pow(l,n),f=this.pow(t,n.addn(1).iushrn(1)),d=this.pow(t,n),g=s;0!==d.cmp(a);){for(var A=d,M=0;0!==A.cmp(a);M++)A=A.redSqr();i(M=0;i--){for(var u=e.words[i],l=h-1;l>=0;l--){var c=u>>l&1;n!==r[0]&&(n=this.sqr(n)),0!==c||0!==s?(s<<=1,s|=c,(4==++a||0===i&&0===l)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new I(t)},n(I,b),I.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},I.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},I.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},I.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},I.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},6138:(t,e,r)=>{var i=r(980),n=r(9199),o=r(7859),s=r(2144),a=r(3663),h=r(3482),u=r(4818),l=r(9509).Buffer;t.exports=function(t,e,r){var c;c=t.padding?t.padding:r?1:4;var f,d=i(t),g=d.modulus.byteLength();if(e.length>g||new s(e).cmp(d.modulus)>=0)throw new Error("decryption error");f=r?u(new s(e),d):a(e,d);var A=l.alloc(g-f.length);if(f=l.concat([A,f],g),4===c)return function(t,e){var r=t.modulus.byteLength(),i=h("sha1").update(l.alloc(0)).digest(),s=i.length;if(0!==e[0])throw new Error("decryption error");var a=e.slice(1,s+1),u=e.slice(s+1),c=o(a,n(u,s)),f=o(u,n(c,r-s-1));if(function(t,e){t=l.from(t),e=l.from(e);var r=0,i=t.length;t.length!==e.length&&(r++,i=Math.min(t.length,e.length));for(var n=-1;++n=e.length){o++;break}var s=e.slice(2,n-1);if(("0002"!==i.toString("hex")&&!r||"0001"!==i.toString("hex")&&r)&&o++,s.length<8&&o++,o)throw new Error("decryption error");return e.slice(n)}(0,f,r);if(3===c)return f;throw new Error("unknown padding")}},6559:(t,e,r)=>{var i=r(980),n=r(1798),o=r(3482),s=r(9199),a=r(7859),h=r(2144),u=r(4818),l=r(3663),c=r(9509).Buffer;t.exports=function(t,e,r){var f;f=t.padding?t.padding:r?1:4;var d,g=i(t);if(4===f)d=function(t,e){var r=t.modulus.byteLength(),i=e.length,u=o("sha1").update(c.alloc(0)).digest(),l=u.length,f=2*l;if(i>r-f-2)throw new Error("message too long");var d=c.alloc(r-i-f-2),g=r-l-1,A=n(l),M=a(c.concat([u,d,c.alloc(1,1),e],g),s(A,g)),p=a(A,s(M,l));return new h(c.concat([c.alloc(1),p,M],r))}(g,e);else if(1===f)d=function(t,e,r){var i,o=e.length,s=t.modulus.byteLength();if(o>s-11)throw new Error("message too long");return i=r?c.alloc(s-o-3,255):function(t){for(var e,r=c.allocUnsafe(t),i=0,o=n(2*t),s=0;i=0)throw new Error("data too long for modulus")}return r?l(d,g):u(d,g)}},4818:(t,e,r)=>{var i=r(2144),n=r(9509).Buffer;t.exports=function(t,e){return n.from(t.toRed(i.mont(e.modulus)).redPow(new i(e.publicExponent)).fromRed().toArray())}},7859:t=>{t.exports=function(t,e){for(var r=t.length,i=-1;++i{"use strict";var i=r(4155),n=65536,o=r(9509).Buffer,s=r.g.crypto||r.g.msCrypto;s&&s.getRandomValues?t.exports=function(t,e){if(t>4294967295)throw new RangeError("requested too many random bytes");var r=o.allocUnsafe(t);if(t>0)if(t>n)for(var a=0;a{"use strict";var i=r(4155);function n(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var o=r(9509),s=r(1798),a=o.Buffer,h=o.kMaxLength,u=r.g.crypto||r.g.msCrypto,l=Math.pow(2,32)-1;function c(t,e){if("number"!=typeof t||t!=t)throw new TypeError("offset must be a number");if(t>l||t<0)throw new TypeError("offset must be a uint32");if(t>h||t>e)throw new RangeError("offset out of range")}function f(t,e,r){if("number"!=typeof t||t!=t)throw new TypeError("size must be a number");if(t>l||t<0)throw new TypeError("size must be a uint32");if(t+e>r||t>h)throw new RangeError("buffer too small")}function d(t,e,r,n){if(i.browser){var o=t.buffer,a=new Uint8Array(o,e,r);return u.getRandomValues(a),n?void i.nextTick((function(){n(null,t)})):t}if(!n)return s(r).copy(t,e),t;s(r,(function(r,i){if(r)return n(r);i.copy(t,e),n(null,t)}))}u&&u.getRandomValues||!i.browser?(e.randomFill=function(t,e,i,n){if(!(a.isBuffer(t)||t instanceof r.g.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof e)n=e,e=0,i=t.length;else if("function"==typeof i)n=i,i=t.length-e;else if("function"!=typeof n)throw new TypeError('"cb" argument must be a function');return c(e,t.length),f(i,e,t.length),d(t,e,i,n)},e.randomFillSync=function(t,e,i){if(void 0===e&&(e=0),!(a.isBuffer(t)||t instanceof r.g.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return c(e,t.length),void 0===i&&(i=t.length-e),f(i,e,t.length),d(t,e,i)}):(e.randomFill=n,e.randomFillSync=n)},4281:t=>{"use strict";var e={};function r(t,r,i){i||(i=Error);var n=function(t){var e,i;function n(e,i,n){return t.call(this,function(t,e,i){return"string"==typeof r?r:r(t,e,i)}(e,i,n))||this}return i=t,(e=n).prototype=Object.create(i.prototype),e.prototype.constructor=e,e.__proto__=i,n}(i);n.prototype.name=i.name,n.prototype.code=t,e[t]=n}function i(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map((function(t){return String(t)})),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",(function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'}),TypeError),r("ERR_INVALID_ARG_TYPE",(function(t,e,r){var n,o,s,a,h;if("string"==typeof e&&(o="not ",e.substr(0,o.length)===o)?(n="must not be",e=e.replace(/^not /,"")):n="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t," argument"))s="The ".concat(t," ").concat(n," ").concat(i(e,"type"));else{var u=("number"!=typeof h&&(h=0),h+".".length>(a=t).length||-1===a.indexOf(".",h)?"argument":"property");s='The "'.concat(t,'" ').concat(u," ").concat(n," ").concat(i(e,"type"))}return s+". Received type ".concat(typeof r)}),TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",(function(t){return"The "+t+" method is not implemented"})),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",(function(t){return"Cannot call "+t+" after a stream was destroyed"})),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",(function(t){return"Unknown encoding: "+t}),TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.q=e},6753:(t,e,r)=>{"use strict";var i=r(4155),n=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=l;var o=r(9481),s=r(4229);r(5717)(l,o);for(var a=n(s.prototype),h=0;h{"use strict";t.exports=n;var i=r(4605);function n(t){if(!(this instanceof n))return new n(t);i.call(this,t)}r(5717)(n,i),n.prototype._transform=function(t,e,r){r(null,t)}},9481:(t,e,r)=>{"use strict";var i,n=r(4155);t.exports=v,v.ReadableState=I,r(7187).EventEmitter;var o,s=function(t,e){return t.listeners(e).length},a=r(2503),h=r(8764).Buffer,u=r.g.Uint8Array||function(){},l=r(4616);o=l&&l.debuglog?l.debuglog("stream"):function(){};var c,f,d,g=r(7327),A=r(1195),M=r(2457).getHighWaterMark,p=r(4281).q,w=p.ERR_INVALID_ARG_TYPE,B=p.ERR_STREAM_PUSH_AFTER_EOF,m=p.ERR_METHOD_NOT_IMPLEMENTED,E=p.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r(5717)(v,a);var y=A.errorOrDestroy,b=["error","close","destroy","pause","resume"];function I(t,e,n){i=i||r(6753),t=t||{},"boolean"!=typeof n&&(n=e instanceof i),this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=M(this,t,"readableHighWaterMark",n),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(c||(c=r(2553).s),this.decoder=new c(t.encoding),this.encoding=t.encoding)}function v(t){if(i=i||r(6753),!(this instanceof v))return new v(t);var e=this instanceof i;this._readableState=new I(t,this,e),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),a.call(this)}function C(t,e,r,i,n){o("readableAddChunk",e);var s,a=t._readableState;if(null===e)a.reading=!1,function(t,e){if(o("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?R(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,G(t)))}}(t,a);else if(n||(s=function(t,e){var r,i;return i=e,h.isBuffer(i)||i instanceof u||"string"==typeof e||void 0===e||t.objectMode||(r=new w("chunk",["string","Buffer","Uint8Array"],e)),r}(a,e)),s)y(t,s);else if(a.objectMode||e&&e.length>0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===h.prototype||(e=function(t){return h.from(t)}(e)),i)a.endEmitted?y(t,new E):Q(t,a,e,!0);else if(a.ended)y(t,new B);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?Q(t,a,e,!1):U(t,a)):Q(t,a,e,!1)}else i||(a.reading=!1,U(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=D?t=D:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function R(t){var e=t._readableState;o("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(o("emitReadable",e.flowing),e.emittedReadable=!0,n.nextTick(G,t))}function G(t){var e=t._readableState;o("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,k(t)}function U(t,e){e.readingMore||(e.readingMore=!0,n.nextTick(V,t,e))}function V(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function T(t){o("readable nexttick read 0"),t.read(0)}function Y(t,e){o("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),k(t),e.flowing&&!e.reading&&t.read(0)}function k(t){var e=t._readableState;for(o("flow",e.flowing);e.flowing&&null!==t.read(););}function F(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function L(t){var e=t._readableState;o("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,n.nextTick(j,e,t))}function j(t,e){if(o("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function Z(t,e){for(var r=0,i=t.length;r=e.highWaterMark:e.length>0)||e.ended))return o("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?L(this):R(this),null;if(0===(t=N(t,e))&&e.ended)return 0===e.length&&L(this),null;var i,n=e.needReadable;return o("need readable",n),(0===e.length||e.length-t0?F(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&L(this)),null!==i&&this.emit("data",i),i},v.prototype._read=function(t){y(this,new m("_read()"))},v.prototype.pipe=function(t,e){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=t;break;case 1:i.pipes=[i.pipes,t];break;default:i.pipes.push(t)}i.pipesCount+=1,o("pipe count=%d opts=%j",i.pipesCount,e);var a=e&&!1===e.end||t===n.stdout||t===n.stderr?A:h;function h(){o("onend"),t.end()}i.endEmitted?n.nextTick(a):r.once("end",a),t.on("unpipe",(function e(n,s){o("onunpipe"),n===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,o("cleanup"),t.removeListener("close",d),t.removeListener("finish",g),t.removeListener("drain",u),t.removeListener("error",f),t.removeListener("unpipe",e),r.removeListener("end",h),r.removeListener("end",A),r.removeListener("data",c),l=!0,!i.awaitDrain||t._writableState&&!t._writableState.needDrain||u())}));var u=function(t){return function(){var e=t._readableState;o("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,k(t))}}(r);t.on("drain",u);var l=!1;function c(e){o("ondata");var n=t.write(e);o("dest.write",n),!1===n&&((1===i.pipesCount&&i.pipes===t||i.pipesCount>1&&-1!==Z(i.pipes,t))&&!l&&(o("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function f(e){o("onerror",e),A(),t.removeListener("error",f),0===s(t,"error")&&y(t,e)}function d(){t.removeListener("finish",g),A()}function g(){o("onfinish"),t.removeListener("close",d),A()}function A(){o("unpipe"),r.unpipe(t)}return r.on("data",c),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events.error?Array.isArray(t._events.error)?t._events.error.unshift(r):t._events.error=[r,t._events.error]:t.on(e,r)}(t,"error",f),t.once("close",d),t.once("finish",g),t.emit("pipe",r),i.flowing||(o("pipe resume"),r.resume()),t},v.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o0,!1!==i.flowing&&this.resume()):"readable"===t&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,o("on readable",i.length,i.reading),i.length?R(this):i.reading||n.nextTick(T,this))),r},v.prototype.addListener=v.prototype.on,v.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&n.nextTick(S,this),r},v.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||n.nextTick(S,this),e},v.prototype.resume=function(){var t=this._readableState;return t.flowing||(o("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,n.nextTick(Y,t,e))}(this,t)),t.paused=!1,this},v.prototype.pause=function(){return o("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(o("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},v.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;for(var n in t.on("end",(function(){if(o("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on("data",(function(n){o("wrapped data"),r.decoder&&(n=r.decoder.write(n)),r.objectMode&&null==n||(r.objectMode||n&&n.length)&&(e.push(n)||(i=!0,t.pause()))})),t)void 0===this[n]&&"function"==typeof t[n]&&(this[n]=function(e){return function(){return t[e].apply(t,arguments)}}(n));for(var s=0;s{"use strict";t.exports=l;var i=r(4281).q,n=i.ERR_METHOD_NOT_IMPLEMENTED,o=i.ERR_MULTIPLE_CALLBACK,s=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=i.ERR_TRANSFORM_WITH_LENGTH_0,h=r(6753);function u(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(null===i)return this.emit("error",new o);r.writechunk=null,r.writecb=null,null!=e&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";var i,n=r(4155);function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var i=t.entry;for(t.entry=null;i;){var n=i.callback;e.pendingcb--,n(undefined),i=i.next}e.corkedRequestsFree.next=t}(e,t)}}t.exports=v,v.WritableState=I;var s,a={deprecate:r(4927)},h=r(2503),u=r(8764).Buffer,l=r.g.Uint8Array||function(){},c=r(1195),f=r(2457).getHighWaterMark,d=r(4281).q,g=d.ERR_INVALID_ARG_TYPE,A=d.ERR_METHOD_NOT_IMPLEMENTED,M=d.ERR_MULTIPLE_CALLBACK,p=d.ERR_STREAM_CANNOT_PIPE,w=d.ERR_STREAM_DESTROYED,B=d.ERR_STREAM_NULL_VALUES,m=d.ERR_STREAM_WRITE_AFTER_END,E=d.ERR_UNKNOWN_ENCODING,y=c.errorOrDestroy;function b(){}function I(t,e,s){i=i||r(6753),t=t||{},"boolean"!=typeof s&&(s=e instanceof i),this.objectMode=!!t.objectMode,s&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=f(this,t,"writableHighWaterMark",s),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===t.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,i=r.sync,o=r.writecb;if("function"!=typeof o)throw new M;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,i,o){--e.pendingcb,r?(n.nextTick(o,i),n.nextTick(G,t,e),t._writableState.errorEmitted=!0,y(t,i)):(o(i),t._writableState.errorEmitted=!0,y(t,i),G(t,e))}(t,r,i,e,o);else{var s=N(r)||t.destroyed;s||r.corked||r.bufferProcessing||!r.bufferedRequest||D(t,r),i?n.nextTick(Q,t,r,s,o):Q(t,r,s,o)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function v(t){var e=this instanceof(i=i||r(6753));if(!e&&!s.call(v,this))return new v(t);this._writableState=new I(t,this,e),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),h.call(this)}function C(t,e,r,i,n,o,s){e.writelen=i,e.writecb=s,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new w("write")):r?t._writev(n,e.onwrite):t._write(n,o,e.onwrite),e.sync=!1}function Q(t,e,r,i){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,i(),G(t,e)}function D(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var i=e.bufferedRequestCount,n=new Array(i),s=e.corkedRequestsFree;s.entry=r;for(var a=0,h=!0;r;)n[a]=r,r.isBuf||(h=!1),r=r.next,a+=1;n.allBuffers=h,C(t,e,!0,e.length,n,"",s.finish),e.pendingcb++,e.lastBufferedRequest=null,s.next?(e.corkedRequestsFree=s.next,s.next=null):e.corkedRequestsFree=new o(e),e.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,l=r.encoding,c=r.callback;if(C(t,e,!1,e.objectMode?1:u.length,u,l,c),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function N(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function R(t,e){t._final((function(r){e.pendingcb--,r&&y(t,r),e.prefinished=!0,t.emit("prefinish"),G(t,e)}))}function G(t,e){var r=N(e);if(r&&(function(t,e){e.prefinished||e.finalCalled||("function"!=typeof t._final||e.destroyed?(e.prefinished=!0,t.emit("prefinish")):(e.pendingcb++,e.finalCalled=!0,n.nextTick(R,t,e)))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"),e.autoDestroy))){var i=t._readableState;(!i||i.autoDestroy&&i.endEmitted)&&t.destroy()}return r}r(5717)(v,h),I.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(I.prototype,"buffer",{get:a.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(s=Function.prototype[Symbol.hasInstance],Object.defineProperty(v,Symbol.hasInstance,{value:function(t){return!!s.call(this,t)||this===v&&t&&t._writableState instanceof I}})):s=function(t){return t instanceof this},v.prototype.pipe=function(){y(this,new p)},v.prototype.write=function(t,e,r){var i,o=this._writableState,s=!1,a=!o.objectMode&&(i=t,u.isBuffer(i)||i instanceof l);return a&&!u.isBuffer(t)&&(t=function(t){return u.from(t)}(t)),"function"==typeof e&&(r=e,e=null),a?e="buffer":e||(e=o.defaultEncoding),"function"!=typeof r&&(r=b),o.ending?function(t,e){var r=new m;y(t,r),n.nextTick(e,r)}(this,r):(a||function(t,e,r,i){var o;return null===r?o=new B:"string"==typeof r||e.objectMode||(o=new g("chunk",["string","Buffer"],r)),!o||(y(t,o),n.nextTick(i,o),!1)}(this,o,t,r))&&(o.pendingcb++,s=function(t,e,r,i,n,o){if(!r){var s=function(t,e,r){return t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=u.from(e,r)),e}(e,i,n);i!==s&&(r=!0,n="buffer",i=s)}var a=e.objectMode?1:i.length;e.length+=a;var h=e.length-1))throw new E(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(v.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(v.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),v.prototype._write=function(t,e,r){r(new A("_write()"))},v.prototype._writev=null,v.prototype.end=function(t,e,r){var i=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||function(t,e,r){e.ending=!0,G(t,e),r&&(e.finished?n.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,i,r),this},Object.defineProperty(v.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(v.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),v.prototype.destroy=c.destroy,v.prototype._undestroy=c.undestroy,v.prototype._destroy=function(t,e){e(t)}},5850:(t,e,r)=>{"use strict";var i,n=r(4155);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(8610),a=Symbol("lastResolve"),h=Symbol("lastReject"),u=Symbol("error"),l=Symbol("ended"),c=Symbol("lastPromise"),f=Symbol("handlePromise"),d=Symbol("stream");function g(t,e){return{value:t,done:e}}function A(t){var e=t[a];if(null!==e){var r=t[d].read();null!==r&&(t[c]=null,t[a]=null,t[h]=null,e(g(r,!1)))}}function M(t){n.nextTick(A,t)}var p=Object.getPrototypeOf((function(){})),w=Object.setPrototypeOf((o(i={get stream(){return this[d]},next:function(){var t=this,e=this[u];if(null!==e)return Promise.reject(e);if(this[l])return Promise.resolve(g(void 0,!0));if(this[d].destroyed)return new Promise((function(e,r){n.nextTick((function(){t[u]?r(t[u]):e(g(void 0,!0))}))}));var r,i=this[c];if(i)r=new Promise(function(t,e){return function(r,i){t.then((function(){e[l]?r(g(void 0,!0)):e[f](r,i)}),i)}}(i,this));else{var o=this[d].read();if(null!==o)return Promise.resolve(g(o,!1));r=new Promise(this[f])}return this[c]=r,r}},Symbol.asyncIterator,(function(){return this})),o(i,"return",(function(){var t=this;return new Promise((function(e,r){t[d].destroy(null,(function(t){t?r(t):e(g(void 0,!0))}))}))})),i),p);t.exports=function(t){var e,r=Object.create(w,(o(e={},d,{value:t,writable:!0}),o(e,a,{value:null,writable:!0}),o(e,h,{value:null,writable:!0}),o(e,u,{value:null,writable:!0}),o(e,l,{value:t._readableState.endEmitted,writable:!0}),o(e,f,{value:function(t,e){var i=r[d].read();i?(r[c]=null,r[a]=null,r[h]=null,t(g(i,!1))):(r[a]=t,r[h]=e)},writable:!0}),e));return r[c]=null,s(t,(function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[h];return null!==e&&(r[c]=null,r[a]=null,r[h]=null,e(t)),void(r[u]=t)}var i=r[a];null!==i&&(r[c]=null,r[a]=null,r[h]=null,i(g(void 0,!0))),r[l]=!0})),t.on("readable",M.bind(null,r)),r}},7327:(t,e,r)=>{"use strict";function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){for(var r=0;r0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return s.alloc(0);for(var e,r,i,n=s.allocUnsafe(t>>>0),o=this.head,a=0;o;)e=o.data,r=n,i=a,s.prototype.copy.call(e,r,i),a+=o.data.length,o=o.next;return n}},{key:"consume",value:function(t,e){var r;return tn.length?n.length:t;if(o===n.length?i+=n:i+=n.slice(0,t),0==(t-=o)){o===n.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(o));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(t){var e=s.allocUnsafe(t),r=this.head,i=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var n=r.data,o=t>n.length?n.length:t;if(n.copy(e,e.length-t,0,o),0==(t-=o)){o===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(o));break}++i}return this.length-=i,e}},{key:h,value:function(t,e){return a(this,function(t){for(var e=1;e{"use strict";var i=r(4155);function n(t,e){s(t,e),o(t)}function o(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,h=this._writableState&&this._writableState.destroyed;return a||h?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,i.nextTick(s,this,t)):i.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!e&&t?r._writableState?r._writableState.errorEmitted?i.nextTick(o,r):(r._writableState.errorEmitted=!0,i.nextTick(n,r,t)):i.nextTick(n,r,t):e?(i.nextTick(o,r),e(t)):i.nextTick(o,r)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}}},8610:(t,e,r)=>{"use strict";var i=r(4281).q.ERR_STREAM_PREMATURE_CLOSE;function n(){}t.exports=function t(e,r,o){if("function"==typeof r)return t(e,null,r);r||(r={}),o=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{t.exports=function(){throw new Error("Readable.from is not available in the browser")}},9946:(t,e,r)=>{"use strict";var i,n=r(4281).q,o=n.ERR_MISSING_ARGS,s=n.ERR_STREAM_DESTROYED;function a(t){if(t)throw t}function h(t,e,n,o){o=function(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}(o);var a=!1;t.on("close",(function(){a=!0})),void 0===i&&(i=r(8610)),i(t,{readable:e,writable:n},(function(t){if(t)return o(t);a=!0,o()}));var h=!1;return function(e){if(!a&&!h)return h=!0,function(t){return t.setHeader&&"function"==typeof t.abort}(t)?t.abort():"function"==typeof t.destroy?t.destroy():void o(e||new s("pipe"))}}function u(t){t()}function l(t,e){return t.pipe(e)}function c(t){return t.length?"function"!=typeof t[t.length-1]?a:t.pop():a}t.exports=function(){for(var t=arguments.length,e=new Array(t),r=0;r0,(function(t){i||(i=t),t&&s.forEach(u),o||(s.forEach(u),n(i))}))}));return e.reduce(l)}},2457:(t,e,r)=>{"use strict";var i=r(4281).q.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,n){var o=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,n,r);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new i(n?r:"highWaterMark",o);return Math.floor(o)}return t.objectMode?16:16384}}},2503:(t,e,r)=>{t.exports=r(7187).EventEmitter},8473:(t,e,r)=>{(e=t.exports=r(9481)).Stream=e,e.Readable=e,e.Writable=r(4229),e.Duplex=r(6753),e.Transform=r(4605),e.PassThrough=r(2725),e.finished=r(8610),e.pipeline=r(9946)},9785:(t,e,r)=>{"use strict";var i=r(8764).Buffer,n=r(5717),o=r(3349),s=new Array(16),a=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],h=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],u=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],l=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],c=[0,1518500249,1859775393,2400959708,2840853838],f=[1352829926,1548603684,1836072691,2053994217,0];function d(){o.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function g(t,e){return t<>>32-e}function A(t,e,r,i,n,o,s,a){return g(t+(e^r^i)+o+s|0,a)+n|0}function M(t,e,r,i,n,o,s,a){return g(t+(e&r|~e&i)+o+s|0,a)+n|0}function p(t,e,r,i,n,o,s,a){return g(t+((e|~r)^i)+o+s|0,a)+n|0}function w(t,e,r,i,n,o,s,a){return g(t+(e&i|r&~i)+o+s|0,a)+n|0}function B(t,e,r,i,n,o,s,a){return g(t+(e^(r|~i))+o+s|0,a)+n|0}n(d,o),d.prototype._update=function(){for(var t=s,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);for(var r=0|this._a,i=0|this._b,n=0|this._c,o=0|this._d,d=0|this._e,m=0|this._a,E=0|this._b,y=0|this._c,b=0|this._d,I=0|this._e,v=0;v<80;v+=1){var C,Q;v<16?(C=A(r,i,n,o,d,t[a[v]],c[0],u[v]),Q=B(m,E,y,b,I,t[h[v]],f[0],l[v])):v<32?(C=M(r,i,n,o,d,t[a[v]],c[1],u[v]),Q=w(m,E,y,b,I,t[h[v]],f[1],l[v])):v<48?(C=p(r,i,n,o,d,t[a[v]],c[2],u[v]),Q=p(m,E,y,b,I,t[h[v]],f[2],l[v])):v<64?(C=w(r,i,n,o,d,t[a[v]],c[3],u[v]),Q=M(m,E,y,b,I,t[h[v]],f[3],l[v])):(C=B(r,i,n,o,d,t[a[v]],c[4],u[v]),Q=A(m,E,y,b,I,t[h[v]],f[4],l[v])),r=d,d=o,o=g(n,10),n=i,i=C,m=I,I=b,b=g(y,10),y=E,E=Q}var D=this._b+n+b|0;this._b=this._c+o+I|0,this._c=this._d+d+m|0,this._d=this._e+r+E|0,this._e=this._a+i+y|0,this._a=D},d.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=i.alloc?i.alloc(20):new i(20);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t.writeInt32LE(this._e,16),t},t.exports=d},9509:(t,e,r)=>{var i=r(8764),n=i.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function s(t,e,r){return n(t,e,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=i:(o(i,e),e.Buffer=s),s.prototype=Object.create(n.prototype),o(n,s),s.from=function(t,e,r){if("number"==typeof t)throw new TypeError("Argument must not be a number");return n(t,e,r)},s.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=n(t);return void 0!==e?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i},s.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n(t)},s.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},2399:(t,e,r)=>{"use strict";var i,n=r(4155),o=r(8764),s=o.Buffer,a={};for(i in o)o.hasOwnProperty(i)&&"SlowBuffer"!==i&&"Buffer"!==i&&(a[i]=o[i]);var h=a.Buffer={};for(i in s)s.hasOwnProperty(i)&&"allocUnsafe"!==i&&"allocUnsafeSlow"!==i&&(h[i]=s[i]);if(a.Buffer.prototype=s.prototype,h.from&&h.from!==Uint8Array.from||(h.from=function(t,e,r){if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&void 0===t.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return s(t,e,r)}),h.alloc||(h.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var i=s(t);return e&&0!==e.length?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i}),!a.kStringMaxLength)try{a.kStringMaxLength=n.binding("buffer").kStringMaxLength}catch(t){}a.constants||(a.constants={MAX_LENGTH:a.kMaxLength},a.kStringMaxLength&&(a.constants.MAX_STRING_LENGTH=a.kStringMaxLength)),t.exports=a},4189:(t,e,r)=>{var i=r(9509).Buffer;function n(t,e){this._block=i.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}n.prototype.update=function(t,e){"string"==typeof t&&(e=e||"utf8",t=i.from(t,e));for(var r=this._block,n=this._blockSize,o=t.length,s=this._len,a=0;a=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(4294967295&r)>>>0,n=(r-i)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var o=this._hash();return t?o.toString(t):o},n.prototype._update=function(){throw new Error("_update must be implemented by subclass")},t.exports=n},9072:(t,e,r)=>{var i=t.exports=function(t){t=t.toLowerCase();var e=i[t];if(!e)throw new Error(t+" is not supported (we accept pull requests)");return new e};i.sha=r(4448),i.sha1=r(8336),i.sha224=r(8432),i.sha256=r(7499),i.sha384=r(1686),i.sha512=r(7816)},4448:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t){return t<<30|t>>>2}function l(t,e,r,i){return 0===t?e&r|~e&i:2===t?e&r|e&i|r&i:e^r^i}i(h,n),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,c=0;c<16;++c)r[c]=t.readInt32BE(4*c);for(;c<80;++c)r[c]=r[c-3]^r[c-8]^r[c-14]^r[c-16];for(var f=0;f<80;++f){var d=~~(f/20),g=0|((e=i)<<5|e>>>27)+l(d,n,o,a)+h+r[f]+s[d];h=a,a=o,o=u(n),n=i,i=g}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0},h.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=h},8336:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t){return t<<5|t>>>27}function l(t){return t<<30|t>>>2}function c(t,e,r,i){return 0===t?e&r|~e&i:2===t?e&r|e&i|r&i:e^r^i}i(h,n),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,f=0;f<16;++f)r[f]=t.readInt32BE(4*f);for(;f<80;++f)r[f]=(e=r[f-3]^r[f-8]^r[f-14]^r[f-16])<<1|e>>>31;for(var d=0;d<80;++d){var g=~~(d/20),A=u(i)+c(g,n,o,a)+h+r[d]+s[g]|0;h=a,a=o,o=l(n),n=i,i=A}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0},h.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=h},8432:(t,e,r)=>{var i=r(5717),n=r(7499),o=r(4189),s=r(9509).Buffer,a=new Array(64);function h(){this.init(),this._w=a,o.call(this,64,56)}i(h,n),h.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},h.prototype._hash=function(){var t=s.allocUnsafe(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},t.exports=h},7499:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],a=new Array(64);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t,e,r){return r^t&(e^r)}function l(t,e,r){return t&e|r&(t|e)}function c(t){return(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function f(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function d(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}i(h,n),h.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,g=0|this._f,A=0|this._g,M=0|this._h,p=0;p<16;++p)r[p]=t.readInt32BE(4*p);for(;p<64;++p)r[p]=0|(((e=r[p-2])>>>17|e<<15)^(e>>>19|e<<13)^e>>>10)+r[p-7]+d(r[p-15])+r[p-16];for(var w=0;w<64;++w){var B=M+f(h)+u(h,g,A)+s[w]+r[w]|0,m=c(i)+l(i,n,o)|0;M=A,A=g,g=h,h=a+B|0,a=o,o=n,n=i,i=B+m|0}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0,this._f=g+this._f|0,this._g=A+this._g|0,this._h=M+this._h|0},h.prototype._hash=function(){var t=o.allocUnsafe(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},t.exports=h},1686:(t,e,r)=>{var i=r(5717),n=r(7816),o=r(4189),s=r(9509).Buffer,a=new Array(160);function h(){this.init(),this._w=a,o.call(this,128,112)}i(h,n),h.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},h.prototype._hash=function(){var t=s.allocUnsafe(48);function e(e,r,i){t.writeInt32BE(e,i),t.writeInt32BE(r,i+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),t},t.exports=h},7816:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],a=new Array(160);function h(){this.init(),this._w=a,n.call(this,128,112)}function u(t,e,r){return r^t&(e^r)}function l(t,e,r){return t&e|r&(t|e)}function c(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function f(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function d(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function g(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function A(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function M(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function p(t,e){return t>>>0>>0?1:0}i(h,n),h.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},h.prototype._update=function(t){for(var e=this._w,r=0|this._ah,i=0|this._bh,n=0|this._ch,o=0|this._dh,a=0|this._eh,h=0|this._fh,w=0|this._gh,B=0|this._hh,m=0|this._al,E=0|this._bl,y=0|this._cl,b=0|this._dl,I=0|this._el,v=0|this._fl,C=0|this._gl,Q=0|this._hl,D=0;D<32;D+=2)e[D]=t.readInt32BE(4*D),e[D+1]=t.readInt32BE(4*D+4);for(;D<160;D+=2){var N=e[D-30],R=e[D-30+1],G=d(N,R),U=g(R,N),V=A(N=e[D-4],R=e[D-4+1]),S=M(R,N),T=e[D-14],Y=e[D-14+1],k=e[D-32],F=e[D-32+1],L=U+Y|0,j=G+T+p(L,U)|0;j=(j=j+V+p(L=L+S|0,S)|0)+k+p(L=L+F|0,F)|0,e[D]=j,e[D+1]=L}for(var Z=0;Z<160;Z+=2){j=e[Z],L=e[Z+1];var x=l(r,i,n),z=l(m,E,y),O=c(r,m),H=c(m,r),_=f(a,I),W=f(I,a),J=s[Z],X=s[Z+1],P=u(a,h,w),K=u(I,v,C),q=Q+W|0,$=B+_+p(q,Q)|0;$=($=($=$+P+p(q=q+K|0,K)|0)+J+p(q=q+X|0,X)|0)+j+p(q=q+L|0,L)|0;var tt=H+z|0,et=O+x+p(tt,H)|0;B=w,Q=C,w=h,C=v,h=a,v=I,a=o+$+p(I=b+q|0,b)|0,o=n,b=y,n=i,y=E,i=r,E=m,r=$+et+p(m=q+tt|0,q)|0}this._al=this._al+m|0,this._bl=this._bl+E|0,this._cl=this._cl+y|0,this._dl=this._dl+b|0,this._el=this._el+I|0,this._fl=this._fl+v|0,this._gl=this._gl+C|0,this._hl=this._hl+Q|0,this._ah=this._ah+r+p(this._al,m)|0,this._bh=this._bh+i+p(this._bl,E)|0,this._ch=this._ch+n+p(this._cl,y)|0,this._dh=this._dh+o+p(this._dl,b)|0,this._eh=this._eh+a+p(this._el,I)|0,this._fh=this._fh+h+p(this._fl,v)|0,this._gh=this._gh+w+p(this._gl,C)|0,this._hh=this._hh+B+p(this._hl,Q)|0},h.prototype._hash=function(){var t=o.allocUnsafe(64);function e(e,r,i){t.writeInt32BE(e,i),t.writeInt32BE(r,i+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),e(this._gh,this._gl,48),e(this._hh,this._hl,56),t},t.exports=h},2830:(t,e,r)=>{t.exports=n;var i=r(7187).EventEmitter;function n(){i.call(this)}r(5717)(n,i),n.Readable=r(9481),n.Writable=r(4229),n.Duplex=r(6753),n.Transform=r(4605),n.PassThrough=r(2725),n.finished=r(8610),n.pipeline=r(9946),n.Stream=n,n.prototype.pipe=function(t,e){var r=this;function n(e){t.writable&&!1===t.write(e)&&r.pause&&r.pause()}function o(){r.readable&&r.resume&&r.resume()}r.on("data",n),t.on("drain",o),t._isStdio||e&&!1===e.end||(r.on("end",a),r.on("close",h));var s=!1;function a(){s||(s=!0,t.end())}function h(){s||(s=!0,"function"==typeof t.destroy&&t.destroy())}function u(t){if(l(),0===i.listenerCount(this,"error"))throw t}function l(){r.removeListener("data",n),t.removeListener("drain",o),r.removeListener("end",a),r.removeListener("close",h),r.removeListener("error",u),t.removeListener("error",u),r.removeListener("end",l),r.removeListener("close",l),t.removeListener("close",l)}return r.on("error",u),t.on("error",u),r.on("end",l),r.on("close",l),t.on("close",l),t.emit("pipe",r),t}},2553:(t,e,r)=>{"use strict";var i=r(9509).Buffer,n=i.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(i.isEncoding===n||!n(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=h,this.end=u,e=4;break;case"utf8":this.fillLast=a,e=4;break;case"base64":this.text=l,this.end=c,e=3;break;default:return this.write=f,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(e)}function s(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function h(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function u(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function l(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function c(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function f(t){return t.toString(this.encoding)}function d(t){return t&&t.length?this.write(t):""}e.s=o,o.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(2===n?n=0:t.lastNeed=n-3),n):0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},8677:(t,e,r)=>{"use strict";var i=r(5581),n=r(8469),o=r.n(n),s=r(2635),a=r.n(s);const h=JSON.parse('{"$":[{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = IBSALUT-CVD-SELLO, serialNumber = Q0719003F, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES-Q0719003F, O = SERVICIO DE SALUD DE LAS ISLAS BALEARES, C = ES","notbefore":1621850400000,"notafter":1684922400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbxlQ/UTz0AxZWF+xQs+w+xveq5Ec\\nhe9zf16LnDFYY/K8pZ6l6sb2KlXw8Z/kwopzzbv5LCX1VxLsGO9Rs9OzLg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = Servicio Extreme\\\\C3\\\\B1o de Salud, serialNumber = Q0600413I, OU = SELLO ELECTRONICO, OU = SSII, 2.5.4.97 = VATES-Q0600413I, O = Servicio Extreme\\\\C3\\\\B1o de Salud, C = ES","notbefore":1622090580000,"notafter":1685162580000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEManlPIcO9J8UBpHCAbku/KkAfiBr\\nGLIre1buTIzhhoncL0YIO+DQ9uPs6UfzPKXzQq791V5I5avhmpQ6j2zFsQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = GERENCIA REGIONAL DE SALUD CASTILLA Y LE\\\\C3\\\\93N (SACYL), serialNumber = Q4700608E, OU = SELLO ELECTRONICO, OU = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON, 2.5.4.97 = VATES- Q4700608E, O = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON, C = ES","notbefore":1619782200000,"notafter":1682854200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1Tqtnz\\nC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHXDCCBwKgAwIBAgIJDDdEkclPCGsoMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNDMwMTMzMDAwWhcNMjMwNDMwMTMzMDAwWjCCAQYxPDA6BgNVBAMMM0dFUkVOQ0lBIFJFR0lPTkFMIERFIFNBTFVEIENBU1RJTExBIFkgTEXDk04gKFNBQ1lMKTESMBAGA1UEBRMJUTQ3MDA2MDhFMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzE2MDQGA1UECwwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRkwFwYDVQRhDBBWQVRFUy0gUTQ3MDA2MDhFMTYwNAYDVQQKDC1HRVJFTkNJQSBSRUdJT05BTCBERSBTQUxVRCBERSBDQVNUSUxMQSBZIExFT04xCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1TqtnzC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfKOCBKowggSmMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBmgYDVR0RBIGSMIGPpIGMMIGJMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE8MDoGCWCFVAEDBQYCAgwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRgwFgYJYIVUAQMFBgIDDAlRNDcwMDYwOEUwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBR0F5hsHIJ6Y7MLOV4IRJYpbxoKgDAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDSAAwRQIhANiNJAq66hiD/nftp0jcuZQJtkHq0LiGFxpWmKCnCClcAiAVLvoNwAKGUOPPJ88g/UPTytviavcuFfaN9F5Iw0fVhg=="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = Gobierno de La Rioja, serialNumber = S2633001I, OU = SELLO ELECTRONICO, OU = \\"DIRECCI\\\\C3\\\\93N GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS\\", 2.5.4.97 = VATES-S2633001I, O = \\"DIRECCION GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS\\", C = ES","notbefore":1621580100000,"notafter":1684652100000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqF22rG5bDXpWn/tKy358h2KwYyaS\\nKzCZV0HJptUQq7sWxfeDE86HSoebBrpOvpjhZX2/ZkTF/YRlkh0ztnkclw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHVjCCBv2gAwIBAgIJSC0ZeCXmMXCnMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTIxMDg1NTAwWhcNMjMwNTIxMDg1NTAwWjCB+TEdMBsGA1UEAwwUR29iaWVybm8gZGUgTGEgUmlvamExEjAQBgNVBAUTCVMyNjMzMDAxSTEaMBgGA1UECwwRU0VMTE8gRUxFQ1RST05JQ08xQDA+BgNVBAsMN0RJUkVDQ0nDk04gR0VORVJBTCBERSBTQUxVRCBQVUJMSUNBLCBDT05TVU1PIFkgQ1VJREFET1MxGDAWBgNVBGEMD1ZBVEVTLVMyNjMzMDAxSTE/MD0GA1UECgw2RElSRUNDSU9OIEdFTkVSQUwgREUgU0FMVUQgUFVCTElDQSwgQ09OU1VNTyBZIENVSURBRE9TMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKhdtqxuWw16Vp/7Sst+fIdisGMmkiswmVdByabVEKu7FsX3gxPOh0qHmwa6Tr6Y4WV9v2ZExf2EZZIdM7Z5HJejggSzMIIErzAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgaMGA1UdEQSBmzCBmKSBlTCBkjEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xRTBDBglghVQBAwUGAgIMNkRJUkVDQ0lPTiBHRU5FUkFMIERFIFNBTFVEIFBVQkxJQ0EsIENPTlNVTU8gWSBDVUlEQURPUzEYMBYGCWCFVAEDBQYCAwwJUzI2MzMwMDFJMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQU7oukZ17hZNqgXn+9zb1nFVmNAdYwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0cAMEQCIFAVrmKucmULegrWgBKqAHeiiJ6VmRGXBVo5LrvtuXwnAiB0+buKOXmu4gpE5vu2Du0seQ5DdaCsLOS99ZTz6Ea0yw=="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = Secretar\\\\C3\\\\ADa General del Servicio Canario de la Salud, serialNumber = Q8555011I, OU = SELLO ELECTRONICO, OU = Secretar\\\\C3\\\\ADa General del Servicio Canario de la Salud, 2.5.4.97 = VATES-Q8555011I, O = Servicio Canario de la Salud, C = ES","notbefore":1619781000000,"notafter":1682853000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEblis8RR4Oc4Xqq4RZdhrJ0DnkAvK\\n4vY8AamWbFg9T7OG17La8TJYTq3FqJJd5KttTP71GojxRF0REKpF+uwAtw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = SELLO ELECTRONICO DE LA CIUDAD AUT\\\\C3\\\\93NOMA DE MELILLA, serialNumber = S7900010E, OU = SELLO ELECTRONICO, OU = DIRECCI\\\\C3\\\\93N GENERAL DE LA SOCIEDAD DE LA INFORMACI\\\\C3\\\\93N, 2.5.4.97 = VATES-S7900010E, O = CIUDAD AUT\\\\C3\\\\93NOMA DE MELILLA, C = ES","notbefore":1622205900000,"notafter":1685277900000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEe1XUTCn6DkdbSOKlyzczFWQfDvtP\\n31uGdjzVCzAkuxorNeEX3F827gnycL/mTzRm8lfDxz64lEUcTww0I7unwA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHOjCCBt+gAwIBAgIJcW0NgkBa2laaMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI4MTQ0NTAwWhcNMjMwNTI4MTQ0NTAwWjCB+jE8MDoGA1UEAwwzU0VMTE8gRUxFQ1RST05JQ08gREUgTEEgQ0lVREFEIEFVVMOTTk9NQSBERSBNRUxJTExBMRIwEAYDVQQFEwlTNzkwMDAxMEUxGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMT0wOwYDVQQLDDRESVJFQ0NJw5NOIEdFTkVSQUwgREUgTEEgU09DSUVEQUQgREUgTEEgSU5GT1JNQUNJw5NOMRgwFgYDVQRhDA9WQVRFUy1TNzkwMDAxMEUxJDAiBgNVBAoMG0NJVURBRCBBVVTDk05PTUEgREUgTUVMSUxMQTELMAkGA1UEBhMCRVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR7VdRMKfoOR1tI4qXLNzMVZB8O+0/fW4Z2PNULMCS7Gis14RfcXzbuCfJwv+ZPNGbyV8PHPriURRxPDDQju6fAo4IElDCCBJAwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBTTTGw6vTb+cIcjhzruPZDPy5v3ITB5BggrBgEFBQcBAQRtMGswRAYIKwYBBQUHMAKGOGh0dHA6Ly9jYS5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lYWR0cnVzdC5ldTBjBgNVHRIEXDBagQ5jYUBlYWR0cnVzdC5ldYYWaHR0cDovL3d3dy5lYWR0cnVzdC5ldYYVaHR0cDovL2NhLmVhZHRydXN0LmV1hhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIGEBgNVHREEfTB7pHkwdzEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xKjAoBglghVQBAwUGAgIMG0NJVURBRCBBVVTDk05PTUEgREUgTUVMSUxMQTEYMBYGCWCFVAEDBQYCAwwJUzc5MDAwMTBFMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQUJz+K4T2iZOOrK3asDSbzVk8JIGEwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0kAMEYCIQD+hmZFOEoXKR0Fz/kiOGpWCl/2S3Chc/o+Tf2uI0TzRAIhAPowoRWMESOdZr+YTRAd+Gvck+ybAnHzcT7qdpcn+zuX"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = SELLO SAS PARA CERTIFICADO COVID DE LA UE, serialNumber = Q9150013B, OU = SELLO ELECTRONICO, OU = SERVICIO ANDALUZ DE SALUD, 2.5.4.97 = VATES-Q9150013B, O = SERVICIO ANDALUZ DE SALUD, C = ES","notbefore":1621592100000,"notafter":1684664100000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt3OX+XF/LZlHff6ZWiHRqQu4WBrg\\nzNZYz4wFJkwkBmk/z0ROsLJ4FlwOLPs2cUEIIV0Pu1cmnngva6+EzQpbAA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = ES, O = IZENPE S.A., OU = Peer, CN = iCA Izenpe\\nValidity","subject":"C = ES, O = EUSKO JAURLARITZA - GOBIERNO VASCO, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES-S4833001C, CN = DIRECCI\\\\C3\\\\93N DE SALUD P\\\\C3\\\\9ABLICA Y ADICCIONES","notbefore":1622201292000,"notafter":1716895692000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8PO\\npQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEEjCCA7mgAwIBAgIQA8IozyvkMlFgsO/sU+TnrzAKBggqhkjOPQQDAjBHMQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xDTALBgNVBAsMBFBlZXIxEzARBgNVBAMMCmlDQSBJemVucGUwHhcNMjEwNTI4MTMyODEyWhcNMjQwNTI4MTMyODEyWjCBpDELMAkGA1UEBhMCRVMxKzApBgNVBAoMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08xGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMRgwFgYDVQRhDA9WQVRFUy1TNDgzMzAwMUMxMjAwBgNVBAMMKURJUkVDQ0nDk04gREUgU0FMVUQgUMOaQkxJQ0EgWSBBRElDQ0lPTkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8POpQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1aOCAicwggIjMFoGA1UdEQRTMFGkTzBNMRgwFgYJKwYBBAHzOQAGDAlTNDgzMzAwMUMxMTAvBgkrBgEEAfM5AAUMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08wDgYDVR0PAQH/BAQDAgXgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQWBBRJ5qXgwbq6JnfYaHEo99QEkecqADAfBgNVHSMEGDAWgBRzFw8OFM+MtdUG96YEM8MZfTG+7TCCAR8GA1UdIASCARYwggESMIIBDgYKKwYBBAHzOYFIATCB/zAlBggrBgEFBQcCARYZaHR0cDovL3d3dy5pemVucGUuZXVzL2NwczCB1QYIKwYBBQUHAgIwgcgMgcVLb250c3VsdGEgd3d3Lml6ZW5wZS5ldXMtZW4gYmFsZGludHphayBldGEga29uZGl6aW9hayB6aXVydGFnaXJpYW4gZmlkYXR1IGVkbyBlcmFiaWxpIGF1cnJldGlrIC0gQ29uc3VsdGUgZW4gd3d3Lml6ZW5wZS5ldXMgbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGFudGVzIGRlIHV0aWxpemFyIG8gY29uZmlhciBlbiBlbCBjZXJ0aWZpY2FkbzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsZGVzLml6ZW5wZS5jb20vY2dpLWJpbi9jcmxiY2l6ZW5wZTAKBggqhkjOPQQDAgNHADBEAiBtHbVrpnsLMptmRI5QL4JhOG86pqSBVQXiOUMsIkpcPgIgY/npsrzRMcUHAh7NwvqhnbgWvv1VwbRy3bxD6+o3RGw="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = Servicio C\\\\C3\\\\A1ntabro de Salud, serialNumber = Q3900738J, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES-Q3900738J, O = Servicio C\\\\C3\\\\A1ntabro de Salud, C = ES","notbefore":1622113080000,"notafter":1685185080000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEj/wPWM6e8JDYxW9673ivEvwlu2JA\\nZpsNBrr2sQW5ppku6rcqJUKx7Kbvf2Zx1AJeIS7+PQq2iNcugfD+RC/VfQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = SESCAM Certificado Digital COVID UE, serialNumber = Q4500146H, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES- Q4500146H, O = Servicio de Salud de Castilla-La Mancha, C = ES","notbefore":1621939200000,"notafter":1685011200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDvCuOC6NlQCaL18+CEn4sbjC3NNn\\nN4jBAmZo6lrGXbjIfAQ3YWmXc3gqLnSFq84EEV6+2PFy9yyLgq4JmFAfDA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHBzCCBq2gAwIBAgIJUoPmtL83RMWiMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI1MTI0MDAwWhcNMjMwNTI1MTI0MDAwWjCBuDEsMCoGA1UEAwwjU0VTQ0FNIENlcnRpZmljYWRvIERpZ2l0YWwgQ09WSUQgVUUxEjAQBgNVBAUTCVE0NTAwMTQ2SDEaMBgGA1UECwwRU0VMTE8gRUxFQ1RST05JQ08xGTAXBgNVBGEMEFZBVEVTLSBRNDUwMDE0NkgxMDAuBgNVBAoMJ1NlcnZpY2lvIGRlIFNhbHVkIGRlIENhc3RpbGxhLUxhIE1hbmNoYTELMAkGA1UEBhMCRVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQO8K44Lo2VAJovXz4ISfixuMLc02c3iMECZmjqWsZduMh8BDdhaZdzeCoudIWrzgQRXr7Y8XL3LIuCrgmYUB8Mo4IEpDCCBKAwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBTTTGw6vTb+cIcjhzruPZDPy5v3ITB5BggrBgEFBQcBAQRtMGswRAYIKwYBBQUHMAKGOGh0dHA6Ly9jYS5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lYWR0cnVzdC5ldTBjBgNVHRIEXDBagQ5jYUBlYWR0cnVzdC5ldYYWaHR0cDovL3d3dy5lYWR0cnVzdC5ldYYVaHR0cDovL2NhLmVhZHRydXN0LmV1hhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIGUBgNVHREEgYwwgYmkgYYwgYMxLzAtBglghVQBAwUGAgEMIFNFTExPIEVMRUNUUk9OSUNPIERFIE5JVkVMIE1FRElPMTYwNAYJYIVUAQMFBgICDCdTZXJ2aWNpbyBkZSBTYWx1ZCBkZSBDYXN0aWxsYS1MYSBNYW5jaGExGDAWBglghVQBAwUGAgMMCVE0NTAwMTQ2SDCCAZgGA1UdIASCAY8wggGLMAoGCGCFVAEDBQYCMG8GBwQAi+xAAQEwZDBiBggrBgEFBQcCAjBWDFRFdXJvcGVhbiBUZWxlY29tbXVuaWNhdGlvbnMgU3RhbmRhcmRzIEluc3RpdHV0ZS4gZUlEQVMgRXVyb3BlYW4gUmVndWxhdGlvbiBDb21wbGlhbnQwggEKBg4rBgEEAYN1AgEBAILCETCB9zAlBggrBgEFBQcCARYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBzQYIKwYBBQUHAgIwgcAMgb1DZXJ0aWZpY2FkbyBjdWFsaWZpY2FkbyBkZSBzZWxsbyBlbGVjdHLDs25pY28gZGUgQWRtaW5pc3RyYWNpw7NuLCDDs3JnYW5vIG8gZW50aWRhZCBkZSBkZXJlY2hvIHDDumJsaWNvLCBuaXZlbCBNZWRpby9TdXN0YW5jaWFsLiBDb25zdWx0ZSBsYXMgY29uZGljaW9uZXMgZGUgdXNvIGVuIGh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMIHBBggrBgEFBQcBAwSBtDCBsTAVBggrBgEFBQcLAjAJBgcEAIvsSQECMAgGBgQAjkYBATALBgYEAI5GAQMCAQ8wEwYGBACORgEGMAkGBwQAjkYBBgIwbAYGBACORgEFMGIwMBYqaHR0cHM6Ly9lYWR0cnVzdC5ldS9lbi9kb2N1bWVudHMtaW4tZm9yY2UvEwJlbjAuFihodHRwczovL2VhZHRydXN0LmV1L2RvY3VtZW50b3MtdmlnZW50ZXMvEwJlczBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vY3JsLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcmwwHQYDVR0OBBYEFLscJ0BjSAtnCqvC+ftrx00zOR5YMA4GA1UdDwEB/wQEAwIF4DAKBggqhkjOPQQDAgNIADBFAiEAsCVrBVVY0bS808dwSsBk+aHA+/JYgSGO4UpRBQ4SiaUCIDJBWCiAD1T2eZpbJfH+w1hE3g6Io5jg19ndNYDBZ0Y8"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = Inspecci\\\\C3\\\\B3n General de Sanidad de la Defensa, serialNumber = S2830001J, OU = SELLO ELECTRONICO, OU = Inspecci\\\\C3\\\\B3n General de Sanidad de la Defensa, 2.5.4.97 = VATES-S2830001J, O = Ministerio de Defensa, C = ES","notbefore":1622108340000,"notafter":1685180340000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE62orr7HL0POyQCqmgbbEqfcbcdcT\\n4vyfQZEPYfxk69ZRv9T8Iy6nWAyEjF0VxvknfCg/x9uig5HFWrpedW2Epw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = Consejer\\\\C3\\\\ADa de Salud del Principado de Asturias, serialNumber = S3333001J, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES- S3333001J, O = Principado de Asturias, C = ES","notbefore":1621852800000,"notafter":1684924800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUvljql1ZGpwzC92AbO4J751kqnIE\\nXaCI8hYUIEArhReqJcx5qClAGSkDFcbrTPV9WuUtmDQ/NpoV+EejqBmlyg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = Sello Electr\\\\C3\\\\B3nico del Servicio Navarro de Salud-Osasunbidea, serialNumber = Q3150004D, OU = SELLO ELECTRONICO, OU = Servicio Navarro de Salud-Osasunbidea, 2.5.4.97 = VATES-Q3150004D, O = Servicio Navarro de Salud-Osasunbidea, C = ES","notbefore":1620977700000,"notafter":1684049700000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4\\nB/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgHw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHTDCCBvGgAwIBAgIJfoL0UPrrsbuIMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTE0MDkzNTAwWhcNMjMwNTE0MDkzNTAwWjCB/jFFMEMGA1UEAww8U2VsbG8gRWxlY3Ryw7NuaWNvIGRlbCBTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRIwEAYDVQQFEwlRMzE1MDAwNEQxGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMS4wLAYDVQQLDCVTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRgwFgYDVQRhDA9WQVRFUy1RMzE1MDAwNEQxLjAsBgNVBAoMJVNlcnZpY2lvIE5hdmFycm8gZGUgU2FsdWQtT3Nhc3VuYmlkZWExCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4B/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgH6OCBKIwggSeMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBkgYDVR0RBIGKMIGHpIGEMIGBMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE0MDIGCWCFVAEDBQYCAgwlU2VydmljaW8gTmF2YXJybyBkZSBTYWx1ZC1Pc2FzdW5iaWRlYTEYMBYGCWCFVAEDBQYCAwwJUTMxNTAwMDREMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQUDoSdwvhJkRliLuZyPLYo9xeX1vcwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0kAMEYCIQC5rwYPPmeafyGrOsjX/SeqgFtgrqURrFrnbwC7QvM6MgIhAN4Pl5n+ACj+56aPhHsHRo4xS2ZeXShYFQQpxUCM9R17"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = CEUTA, serialNumber = S6100007A, OU = SELLO ELECTRONICO, OU = CIUDAD AUTONOMA DE CEUTA, 2.5.4.97 = VATES-S6100007A, O = CIUDAD AUTONOMA DE CEUTA, C = ES","notbefore":1620977400000,"notafter":1684049400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgOuoVfBtfKWYpcffhNWfiCf4g4oZ\\nBdaPcdrn0HBtkQ/9xYp6FlfFAP1Ze29LaM1emnFxjyQNWV3KeNmoc/vFYA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = GENERALITAT VALENCIANA, serialNumber = S4611001A, OU = SELLO ELECTRONICO, OU = CONSELLERIA DE SANITAT UNIVERSAL I SALUT P\\\\C3\\\\9ABLICA, 2.5.4.97 = VATES-S4611001A, O = GENERALITAT VALENCIANA, C = ES","notbefore":1622192100000,"notafter":1685264100000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV61Sl3v6NzBqyCbqSb8/fBodGle+\\nb3RJ7Utk+uExDwbOxzS//2GUTRFKW43ppskyr3G60/xeJCaeN7S9Cvssdg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = CERT-GENCAT-1S-21, serialNumber = S0811001G, OU = SELLO ELECTRONICO, OU = Departament de Salut, 2.5.4.97 = VATES-S0811001G, O = Departament de Salut de la Generalitat de Catalunya, C = ES","notbefore":1622030400000,"notafter":1685102400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZjrINN6u+ZGfRqaYqgqL+yZZCDl\\nu+PKPCkVS/ysPosrontwlhznbPsq5W+d2NyxXeaUAT+lTyRKy1NAxOFqAA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = DIRECCI\\\\C3\\\\93N GENERAL DE SALUD P\\\\C3\\\\9ABLICA Y ADICCIONES, serialNumber = S3011001l, OU = SELLO ELECTRONICO, OU = DIRECCION GENERAL INFORMATICA CORPORATIVA, 2.5.4.97 = VATES- S3011001l, O = COMUNIDAD AUTONOMA DE LA REGION DE MURCIA, C = ES","notbefore":1621860600000,"notafter":1684932600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEli8eKthiom9EydKvhg7LHXj/f88/\\nZeNUpfEFm6kIAr3K1NCRSv1grJnNiBc9lvggtAjqFHQSGTovtRcGHcVuRA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHTDCCBvOgAwIBAgIJA+zla2386Iy/MAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI0MTQ1MDAwWhcNMjMwNTI0MTQ1MDAwWjCB/DE6MDgGA1UEAwwxRElSRUNDScOTTiBHRU5FUkFMIERFIFNBTFVEIFDDmkJMSUNBIFkgQURJQ0NJT05FUzESMBAGA1UEBRMJUzMwMTEwMDFsMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzEyMDAGA1UECwwpRElSRUNDSU9OIEdFTkVSQUwgSU5GT1JNQVRJQ0EgQ09SUE9SQVRJVkExGTAXBgNVBGEMEFZBVEVTLSBTMzAxMTAwMWwxMjAwBgNVBAoMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJYvHirYYqJvRMnSr4YOyx14/3/PP2XjVKXxBZupCAK9ytTQkUr9YKyZzYgXPZb4ILQI6hR0Ehk6L7UXBh3FbkSjggSmMIIEojAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgZYGA1UdEQSBjjCBi6SBiDCBhTEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xODA2BglghVQBAwUGAgIMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMRgwFgYJYIVUAQMFBgIDDAlTMzAxMTAwMWwwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBQBzqvKX8AY+IVJiHykPj5www64JTAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDRwAwRAIgb52hsDkWShWodg6mznBV4Ut/vr0C2rgRLyV0rzHWq3ECID/elZUrZyPy0V6CdrlZxaCUIQB6jsFkAl2/wFTHC5pU"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19, serialNumber = S2827001E, OU = SELLO ELECTRONICO, OU = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19, 2.5.4.97 = VATES-S2827001E, O = MINISTERIO DE SANIDAD, C = ES","notbefore":991548900000,"notafter":991548900000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3KVI7Sy+id+bprJ8Eh9AHtW+1qeC\\n4qoHH1oK7HN87UKH9KxQix0jq0RySb2c+5CN+kbAfsYEvULfHToz2FWzWQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHKDCCBs2gAwIBAgIJCNJzqS4wRBNsMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNjAzMDgxNTAwWhcNMjMwNjAzMDgxNTAwWjCB7zE6MDgGA1UEAwwxU0VMTE8gTUlOSVNURVJJTyBERSBTQU5JREFEIENFUlRJRklDQUNJT04gQ09WSUQxOTESMBAGA1UEBRMJUzI4MjcwMDFFMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzE6MDgGA1UECwwxU0VMTE8gTUlOSVNURVJJTyBERSBTQU5JREFEIENFUlRJRklDQUNJT04gQ09WSUQxOTEYMBYGA1UEYQwPVkFURVMtUzI4MjcwMDFFMR4wHAYDVQQKDBVNSU5JU1RFUklPIERFIFNBTklEQUQxCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3KVI7Sy+id+bprJ8Eh9AHtW+1qeC4qoHH1oK7HN87UKH9KxQix0jq0RySb2c+5CN+kbAfsYEvULfHToz2FWzWaOCBI0wggSJMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTB+BgNVHREEdzB1pHMwcTEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xJDAiBglghVQBAwUGAgIMFU1JTklTVEVSSU8gREUgU0FOSURBRDEYMBYGCWCFVAEDBQYCAwwJUzI4MjcwMDFFMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQUxT5vnraH1YD5RI5MVE4gfWpCYzAwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0kAMEYCIQDTXgJxN4vlSW3VeRQosQOD7MwkjUfxKyP2ARTcopBBugIhAOEj0YxLCHFm0b62Ybnj3UJlhXy1IqAVbJEe2iB/MPwX"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = DEPARTAMENTO DE SANIDAD DEL GOBIERNO DE ARAGON, serialNumber = S5011001D, OU = SELLO ELECTRONICO, OU = DEPARTAMENTO DE SANIDAD, 2.5.4.97 = VATES-S5011001D, O = GOBIERNO DE ARAGON, C = ES","notbefore":989226900000,"notafter":989226900000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDOg7lpxitz9+ytOAKFXxS7F4qc9I\\nfKWrj388ETiCbLEQuoYeWEp+4wXPLCF7RRpg6Zxt9iGG93ZAwxl8g05Oag==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHBDCCBqqgAwIBAgIJfhC5x3b/0YP3MAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTA3MTExNTAwWhcNMjMwNTA3MTExNTAwWjCBzzE3MDUGA1UEAwwuREVQQVJUQU1FTlRPIERFIFNBTklEQUQgREVMIEdPQklFUk5PIERFIEFSQUdPTjESMBAGA1UEBRMJUzUwMTEwMDFEMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzEgMB4GA1UECwwXREVQQVJUQU1FTlRPIERFIFNBTklEQUQxGDAWBgNVBGEMD1ZBVEVTLVM1MDExMDAxRDEbMBkGA1UECgwSR09CSUVSTk8gREUgQVJBR09OMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAzoO5acYrc/fsrTgChV8UuxeKnPSHylq49/PBE4gmyxELqGHlhKfuMFzywhe0UaYOmcbfYhhvd2QMMZfINOTmqjggSKMIIEhjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwewYDVR0RBHQwcqRwMG4xLzAtBglghVQBAwUGAgEMIFNFTExPIEVMRUNUUk9OSUNPIERFIE5JVkVMIE1FRElPMSEwHwYJYIVUAQMFBgICDBJHT0JJRVJOTyBERSBBUkFHT04xGDAWBglghVQBAwUGAgMMCVM1MDExMDAxRDCCAZgGA1UdIASCAY8wggGLMAoGCGCFVAEDBQYCMG8GBwQAi+xAAQEwZDBiBggrBgEFBQcCAjBWDFRFdXJvcGVhbiBUZWxlY29tbXVuaWNhdGlvbnMgU3RhbmRhcmRzIEluc3RpdHV0ZS4gZUlEQVMgRXVyb3BlYW4gUmVndWxhdGlvbiBDb21wbGlhbnQwggEKBg4rBgEEAYN1AgEBAILCETCB9zAlBggrBgEFBQcCARYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBzQYIKwYBBQUHAgIwgcAMgb1DZXJ0aWZpY2FkbyBjdWFsaWZpY2FkbyBkZSBzZWxsbyBlbGVjdHLDs25pY28gZGUgQWRtaW5pc3RyYWNpw7NuLCDDs3JnYW5vIG8gZW50aWRhZCBkZSBkZXJlY2hvIHDDumJsaWNvLCBuaXZlbCBNZWRpby9TdXN0YW5jaWFsLiBDb25zdWx0ZSBsYXMgY29uZGljaW9uZXMgZGUgdXNvIGVuIGh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMIHBBggrBgEFBQcBAwSBtDCBsTAVBggrBgEFBQcLAjAJBgcEAIvsSQECMAgGBgQAjkYBATALBgYEAI5GAQMCAQ8wEwYGBACORgEGMAkGBwQAjkYBBgIwbAYGBACORgEFMGIwMBYqaHR0cHM6Ly9lYWR0cnVzdC5ldS9lbi9kb2N1bWVudHMtaW4tZm9yY2UvEwJlbjAuFihodHRwczovL2VhZHRydXN0LmV1L2RvY3VtZW50b3MtdmlnZW50ZXMvEwJlczBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vY3JsLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcmwwHQYDVR0OBBYEFIcH0VmwYuLAspPbw0ytX4MnAOqIMA4GA1UdDwEB/wQEAwIF4DAKBggqhkjOPQQDAgNIADBFAiEAkdkJnUNWN8MlL8vqsSFCdQsRtPpEnzoBKxrexfryd5sCIBjk+TQoNey+Ayp5SmQk860nNthN2zLsg7cnFIceVp7u"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = FIRMA CERTIFICADO COVID DIGITAL UE 1, serialNumber = Q2801221I, OU = SELLO ELECTRONICO, OU = DG SISTEMAS DE INFORMACION Y EQUIPAMIENTOS SANITARIOS, 2.5.4.97 = VATES-Q2801221I, O = SERVICIO MADRILE\\\\C3\\\\91O DE SALUD, C = ES","notbefore":1622102400000,"notafter":1685174400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhe+kvml2tx/+/wipHR5ttSw1PdmW\\nGLpoEqzNiel2mWsZovfSBR+Jzri7NpH8s8RBSnEDc0kQTl2dSiECy9D45Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019, O = \\"European Agency of Digital Trust, S.L.\\", C = ES, 2.5.4.97 = VATES-B85626240, OU = Legal Person\\nValidity","subject":"CN = ConselleriadeSanidade.XuntadeGalicia, serialNumber = S1511001H, OU = SELLO ELECTRONICO, 2.5.4.97 = VATES-S1511001H, O = Conseller\\\\C3\\\\ADa de Sanidad, C = ES","notbefore":1622205900000,"notafter":1685277900000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeC6+zmnjgdAUmYG4kIPJsMwSFSJc\\nlYoKuHKcIQ5PpX4xKyM36Gp2fkKvARbyJYjduU8JzO9nrSILVxjuKRapFw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 3","notbefore":992073064000,"notafter":992073064000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5EtYbOu+RuUcFAu1NN1rqsuKqNzp\\nl0Y6bgg9wNKcmVLzfBO81jH2dcupHtKlp7My5KGjCyBAKvjJUSE/fnDd5g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIKbUPDyxggQcwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTEwNFoXDTIzMDYwOTA5NTEwNFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABORLWGzrvkblHBQLtTTda6rLiqjc6ZdGOm4IPcDSnJlS83wTvNYx9nXLqR7SpaezMuShowsgQCr4yVEhP35w3eajggESMIIBDjAdBgNVHQ4EFgQUQiz2ueCR4OeY2/dQbISIOzQRh20wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxMDRagQ8yMDIxMTIwNjA5NTEwNFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBADVwHF/3fcmmkQgU+HLb1LGhj4RvsR9NUkrkYHyWROt37d5D3EyqNjNIpWebfDXLnQNpEQDd/2HyaEW70citcb4ad/5RXD/hr3BjVsqnbRHOctv1+Twy9XfDM7OcDgj2tE7slsZ2dKAPEg09dq7MoClXDuTcIkBqEHuZ+dzA8PYDvITLjHtJqMKBj335tRU+Zl8WT0GGXzQw7/lRD4yE8BndK7C6MO7xC4tIUGgHP3P+kImRiPCq+pQbt78XGJBzEgCpBbe8HuXgja5yTk2AGLdCH5GxbSQMjGA4icefROoPO86uNwCekAKGFd46Li5/+JfIi9nJCd2x7PsUzAr15fzwcTks0Hk+7dZqj6gXuJpZFwoCzvY4Z0O1B99L1SCwZNXsCEevqQ5an3LUWUWE+7JhkkGtqeddockt5M8Q7omw8O4gvV9W9Y4Cbvshxy9RroTSU135NBMm3Iu0s2FdsKj3JMaE/xulRCJ4bxaEcKTdrjGaJSPT5ROgPWQj0yD7yw5j0lRGzph3Pu1o5q6J4v+w3cfWVu9Ka1H4wpQY3ip4emVaXpstg0NNPMH+JERLFy8Bg94J0uOCKAVAPMjpr9DW7/r1Ooey4a7pfdGqCb2QxUkuLr1YOQcairnvOpjjEfHbvWmKV4EGpENpI21qY54URKtoYse7tnkVtz9RrsyY"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 2","notbefore":992073005000,"notafter":992073005000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvIs/H8NhtE23q5tR84V9WwbbdGDc\\n3hh7mjrXom4PRzjGRuSvfC9OIFLtRzOohsdnbcE62FWN+Fz09ugJcaqhtA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIX7IVIHG/M4swQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTAwNVoXDTIzMDYwOTA5NTAwNVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLyLPx/DYbRNt6ubUfOFfVsG23Rg3N4Ye5o616JuD0c4xkbkr3wvTiBS7UczqIbHZ23BOthVjfhc9PboCXGqobSjggESMIIBDjAdBgNVHQ4EFgQUvoCTP+xA0/1nmxS2GKtTaxp0TYAwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUwMDVagQ8yMDIxMTIwNjA5NTAwNVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAKT1bQpoLJpJbb3qAbYcQkZKPNQa5aisXFiLlmIBWHzPYI67BWJu/CjDOeHUPgzpcgiDe33t5ZacnccTwMGZYXnZQ8jNwOxAi//7NJkJHEtrMcYQ9pqSeKqnNwTwMetQm1u5rHjAtjMSZdyWMMjDIcX5Z2lXiPgoO548fYKrwbeCloFDk6qWrk/Jc6NKyNgVEhVvkwHLfDloS7Boln2I4eT4VfTAXt50/zEsu4KHIDpDTDMFNg5KTYugOFHOQise6z5oYmnwZB95OKfFGR0xeDR8JN+Kn2TcdiTpin87jhtyHzCScFLlWbHum9y/OKKNgK/2hWRrikyU9zo/OmHwStftOkggBSeDVtwRkCAKZpK9IXWWRNCj/gkRnVDDeg3ehQ9qRykU+BkUiMi2LhLDVUITCZhmRyS94xHP5PoCY5tUanCNxkgjYwvDHMU8hIPL8rsOdHxc7tK6jaavBP7ZbDG1W3bEcYU1oaKWvbYyPBhJPnAVDVH2SLU68gdEcdjMtiOPaH1ImERhQ2cF9KzCsU/svCoOJrEd2lQZ6xFodkicg0XN4sdXKyypdPic+Cvai/033DdiS1i7HH59hO0Z9l6I2gsJHULDMeSnJxTB9Tves79iYSRdBocm+LHfT8uvwRwn6+SmTD7/ttzHm/H/m/k1hsLPZDNMdn+kMuXCiEnn"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 4","notbefore":992073114000,"notafter":992073114000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHTBJY0Z+T5I8EmqQmrbZAr8equIc\\nKKE+YriIGw/AKJyw0ZAj1Dd2MRTM3+AEiNARxXIF08a2rhUvFCyyHCJ2DA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIbOmJZDQoP+owQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTE1NFoXDTIzMDYwOTA5NTE1NFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB0wSWNGfk+SPBJqkJq22QK/HqriHCihPmK4iBsPwCicsNGQI9Q3djEUzN/gBIjQEcVyBdPGtq4VLxQsshwidgyjggESMIIBDjAdBgNVHQ4EFgQUhHOTxbELqlA8J5QtocLrpUvgC48wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxNTRagQ8yMDIxMTIwNjA5NTE1NFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAEa+gpgHss7+IdPOrr4bzlMSavqHqybtRzSH2hVBrbZ9Ov3vVDmIksbUNM3nlVPL5gFAReHEJmXhHxwvoxyCO/NXOS+itmGkYRPHRH57xTa9XIGcwWmAnbwxVy41B/NnOMeAB2TouWWfX/ZYzKiNyFJ7JEIdaQcZ/2+55c5mlEVFMdpeDR2vmB+cgrz6j0iFxoJ1/QQeWkjfD8nr/Auy7zfm0MgQL5wZEI08A9LAKZjFbawHcJx2RWuwWFc8dLBTMxYM0ptrXYNH/dDRpuNXMuqh68Os/aei5kbolHM24bSBycvInYBYyVRTi2ABDdRpItl9BEGqPSkJoYrrB2hZ3roNNugANF1rm1Fx7hlK80QiMoELoM1RyIovlrymQb45USV2+OuEtvZ6BJ85l7q47tbwr0xxHqIL9n82t4My4M0U7cIu5SPv6qv+ubLGnbqJvgoT9Tf3QGrH5j3XDyU0V4YfvfQhcOBLNlduuA2cihdAh+M6MLRbtG9svKsrA4k0PtyB9UCtqufsfDhkjM4LRGjmylclgmDtNH6DixcFxYlK1+fikZSIPnw476WgS8/2biw2m4gAsxEZ5/vg9L/u11i853AOSsh/sFxjp62K3O5mFAvdmLAJmrofOUghoNcAzJdDbSWtHzqQYJ+BWIjoIDiJh0m8Sl5/hVv6Bh6Xtrp/"},{"issuer":"C = LU, O = INCERT public agency, CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU, O = Ministry of Health, CN = Grand Duchy of Luxembourg DS DCC 1","notbefore":992072935000,"notafter":992072935000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEExXQauou3f3g77qOsZ0rSPFjoTDi\\nKQDhG+Bpf34YyoeFkYMBML890KaqmZL4uezBc8xxg1f170qcZWHILjp4qw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIM5IkTBngr+AwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NDg1NVoXDTIzMDYwOTA5NDg1NVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBMV0GrqLt394O+6jrGdK0jxY6Ew4ikA4RvgaX9+GMqHhZGDATC/PdCmqpmS+LnswXPMcYNX9e9KnGVhyC46eKujggESMIIBDjAdBgNVHQ4EFgQUX4tTu4HFKg7kh7/7FCeP8+7D5CwwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTQ4NTVagQ8yMDIxMTIwNjA5NDg1NVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAE5HQ1OIeJz3gkH2Wrokpb2nLC/ytoe5t9zkK2LY+UmVvTP59uG1dyIWV5pv2hwYnCiSOOG82YJRfdsts3i/0NHlESPChvyoG/E97tvdjB8doTj4gCCTx1JmRpp2vOQZuQsOB5QeTY7nL3yCHZF7yniFDPQpk2WpE4tY4gxxt08hlhRs4C2iZ8jiN2DcMqJwippu0OdAca9mRFPnVs/tGjBT72QrEnPPXWu1pz1xdIW6sDbC2OhCkAMPC4qehWh00DuhxeYgkJF6cg5NOLT2iiAeEv0/DGdYsy1lM5JxE4BmWaZ9mRuvNvzf3lC6DVFHTr3R7/88RblxfWA/TH7E2TQT40JwhQ0YyhqWYC+W0T2cTW2NICedtIpAv8oECRentxzvceovuQw/BxacZUbs8WEJFW+WKGJvAeyaFrkLrze3U5UH3kurD3tG97E77wbFu31iivDmftrvWv/OSDFWpFiPkEP0pe46eY+x/KGiBZNYj6sxeC21W7CxAftQdgoOAPU91j9otI/0n/7XLV71Y1fnt02nZwDOu7ajLHebpjUtnnDsHojOAr3NQKEy836Xg2E3JtGCWWBKnkvgj1/swYBLaZxE9FEGo3nTst9TpwS8GpgXFoQEoTNSV5UBVCwT2djcZCEmhG4GPCrqeoh1c6bfTRbtORXv2HZqYgv7w6eo"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571146, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533207000,"notafter":1687950807000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUdPPsk9xzY1vM1zdjgvHDsRCST55\\nY9SJBJUXI5uqGb6ckpT7xQFGbm+WGQuFJ9E0w3Zyyqb9P/bsMJQmJkrpkg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413462, ST = Berlin\\nSubject Public Key Info:","notbefore":991900547000,"notafter":1686470147000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqD56CIMWer5HDRhCpUrq5lZ6F8Wr\\nFPy/IDwjgb44oE2BELk1xBbjXvz7kSPpf3jp48wPI7WWLcx/V5K1A6obNA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382898, ST = Berlin\\nSubject Public Key Info:","notbefore":991557982000,"notafter":991903582000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtGEETBc2arnjxxBWO3aDW+rwFgwm\\nhqPbxhaUuOEC6kkd3GPhmXPFYKtmFM4IQDj1Cfqu2bIHa6RqF9uEMbtxwQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460071, ST = Berlin\\nSubject Public Key Info:","notbefore":1623415964000,"notafter":1686833564000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeL12fn7+nUNW+9T9zJLaiZF18rfz\\nL1I735fT+3zuKryR3K2oMIMBDFbrrLVva3UeOEZaz+sUwUKWHMg2HgQttg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413213, ST = Berlin\\nSubject Public Key Info:","notbefore":991900145000,"notafter":1686469745000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtgz2ifmTj/vZbBaz6xlNCdQlw4FQ\\nU7v3dUrJYQEigk4Lz8dY1c3pGzYO33TjrgN/Qn+yHaYMHl6+06Gk7AuW6w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382791, ST = Berlin\\nSubject Public Key Info:","notbefore":991557644000,"notafter":991903244000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8nZrLqMlw5EvdfvJXgxb2rXj9OBT\\n2UWBqAFLeCoQXuY+YOZJpUtL4wFQHMGPbvyoWvvcfWtrz3ZXHwaaigQG/A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414054, ST = Berlin\\nSubject Public Key Info:","notbefore":991902169000,"notafter":1686471769000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE71N2pH6YyC6gfUHwiEJDzIxwMIW/\\nHs+Cgn/gPQbZAkFcyX/LTE2j2gZD8hLs55TErTTKokvHkrEOWtHYkIDhyQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460099, ST = Berlin\\nSubject Public Key Info:","notbefore":1623416023000,"notafter":1686833623000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5sqOpW4x66Hmcposox406LFRWyGI\\nvH2CA+Di7pgvWYIJLX7soTE36YKx53vPYRUhKtzexJ7nI90MtClg6NsTAw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413639, ST = Berlin\\nSubject Public Key Info:","notbefore":991900817000,"notafter":1686470417000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzma5iz5ZBIh1KDZhj9fSnqJoKK9w\\neOGB/91w6FpdAUjFEKGDphj/MdGRfVro/gSyHRhpaQghZJXRDECOuSAzqQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQcJl/1jZZRbVsCMkDxixYejA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDcxMDAwMTdaFw0yMzA2MTExMDAwMTdaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0MTM2MzkxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABM5muYs+WQSIdSg2YY/X0p6iaCivcHjhgf/dcOhaXQFIxRChg6YY/zHRkX1a6P4Esh0YaWkIIWSV0QxAjrkgM6mjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFC8OsD1mJkLxyXSAjI8RGfTo5uITMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAMylVMm3kJ0SVKQEOprMFtVX4Cnw6LA7JjxN18UJsiveEafLYdL6MF1jdXj1xOLygzFdfrZhr2r6E+QYnEmU6OFAkLuJ0gFOYNYgovn8j+QW6Gv9w5Zex/DjW1+tSg2YFtkDeYfuW3IASs1ZX4+k39vRfFVJnliiTI9OT/qiZg9E2UIj8TI7P3dD1sTj6kpiyKAU/6LWVX35E4l9ApxZvK0q6KbH5xitLLVqAYz0XzAXDJsWxnWQfJ78tYazFiQN6kUgVFaeTTCV0kifZlMsMBdjCE1WYu/JFeLauZVBhjeYLtoeuKw5ng63uBjZJFOwsVOxLrmxr4VA/xv1H8oGn344mE/7h9yipiS55sjvMjUGj22MqHyBonPGuEKXYWjoPGSyIkBNB+3jXuFna9O18DRY2y+Wftc8jbfYoI+UplNeU4iFlHbjm2f87cjh4wS7O/yTRUIMV9nsP6aur1PGgy6aawB2jHljO2dnNUIM3E2xk/RmXddIvmHw7wonjaf9/MuBEnDoMw88F+fj2IMBd3VlBldwTmM4wRQcrTIZAVoirTrYxIFt9qoiIzgq2fnpobTGUpEReE7sHnhXjHftcgzRgxDgI6I1qJWUR8VAn/UBSlzRf8mjomvU15eWj5Eagmsh11E5FQt/Ix2+JSUqE/yXOHVGEFA3KKiuBJEvwPug="},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382995, ST = Berlin\\nSubject Public Key Info:","notbefore":991558470000,"notafter":991904070000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8xghqNrE21susvTQHV9fwN3RWhBI\\ndCYBu3laCz66NasqyquT47PJXuOifSUiNY2/qOyDuu0Ae8MKIHeUmN5wdA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571164, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533268000,"notafter":1687950868000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHrXK9pJSpMrEB4xUrXTTnb7RakIR\\nzDtNh6ugnjfV513NFsu5rKopJYYDOk/Bfy5MyNug6nD3kSSUUy5yePrgmA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026383046, ST = Berlin\\nSubject Public Key Info:","notbefore":991558662000,"notafter":991904262000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkkxNdS0EZvjP8j17j2k92vHZpX3q\\nSNMDbCqBYPvmqzj1jnNEqsAZSp8uppwoShgmQPdUSmC5jvSaI0PiIRUJhg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413569, ST = Berlin\\nSubject Public Key Info:","notbefore":991900719000,"notafter":1686470319000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEOl2NFM+2gkakrrAa7g+F7KOXRziS\\n4ydbxiNbm3XTu+L9LP+oSKMLOeJOBcjJA3RqrqAiWfoMriWGd0LRYM6TWQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571377, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533875000,"notafter":1687951475000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE65QJlG4NQ1UKM3/5Yf6n9u430S0g\\ntEarOF4e+WrILwUamksO2zJfSgAwXJV2ZzzenNRml1iFffdf4V7yxzgLUw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026523255, ST = Berlin\\nSubject Public Key Info:","notbefore":1624003975000,"notafter":1687421575000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzIzHRqk76vDGIUAj3dIo3UVev41t\\nak5P5oxO+zaOlsKnxUNbo9yqIcpOo7stI8WLrif4RRaiZoQ0tvahSHH2iw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413994, ST = Berlin\\nSubject Public Key Info:","notbefore":991902075000,"notafter":1686471675000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEM7zYPRk1r4viA/oG6BxLec1shhb0\\nJoDGjLAUuPxmGSMw+aCQZUcY5MtUqnVD3x//kviuFZDumf65i0V1o7Gsew==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026383019, ST = Berlin\\nSubject Public Key Info:","notbefore":991558564000,"notafter":991904164000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuCgNX5VUmp7/lN7/UDF5kRDz7qvW\\nnpgFOKwv1AxJXbSvwJj5ADOP9wGAsocoSJtPr3LbjbmqAqndrgr3831+tg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413231, ST = Berlin\\nSubject Public Key Info:","notbefore":991900212000,"notafter":1686469812000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExfciFuh1jL3LBPzaNAVmmVTL87eJ\\n6wVctSg393nUcXxVL1v5vCgp6jWlRdJglVJj8jRG0TfF3OLjDUHAPn2rAw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414212, ST = Berlin\\nSubject Public Key Info:","notbefore":991902618000,"notafter":1686472218000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyxW76RQrbDUSOEHxYksWk5CaGGyg\\nxDJJ7A9jRiop+FlpwmPReFTmJNVRMCjE56zKy1oxdi4KXCHI/yJIuw4zWw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026164195, ST = Berlin\\nSubject Public Key Info:","notbefore":989237732000,"notafter":1683807332000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEorGGRfEic2GL5o9XnITdq3nd9d7p\\nWDvy6waSkDMI633+wvCluSBV3rWR/QkL3FdfpcL2FOCWaAR5/sXOihpfrw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460044, ST = Berlin\\nSubject Public Key Info:","notbefore":1623415885000,"notafter":1686833485000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqXPIlxahww0kgegwTgRNQWpChqH2\\nPfXelyd1D77uo8dy08tlDhsE7zpyzWXfZTUAMxPtgw+JTqiaL1FQtvdkyA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382913, ST = Berlin\\nSubject Public Key Info:","notbefore":991558083000,"notafter":991903683000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKPuGAJsDLPU7vw4aDg52nFxuxz3A\\nsJtWUmtsY7tQegwCVfll+e5sQJu6y5CZnOD+gKdMKfnjuB719z/tF9qB9g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413347, ST = Berlin\\nSubject Public Key Info:","notbefore":991900392000,"notafter":1686469992000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEszk+l0BVoDOXZg5SKeeNbLUAggqL\\nKB2a3NlMXWfxfdcdHsPqqlKWcFTZBzD3/kIyxJi5rlxk1Uk2JsFNEbjt7w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382843, ST = Berlin\\nSubject Public Key Info:","notbefore":991557835000,"notafter":991903435000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUCSPQOg4hIgEJzD2PHFjccnQzSQI\\nvYs+gbBuJqHxv7tCAEpyEj5XIfjjfMjNxA+so+AdZyEfwszhKr2A1/nVSQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413541, ST = Berlin\\nSubject Public Key Info:","notbefore":991900643000,"notafter":1686470243000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/eGWuKcNV/od7Eh4EJuiqBPv+0yP\\n4q+qzhOlNFdkzuuWy6l+hhjVHxdfxp4XDVvOUV2D9wff81/tNfBuc4pCmA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460123, ST = Berlin\\nSubject Public Key Info:","notbefore":1623416094000,"notafter":1686833694000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh4UMl8PsQUsu36Hq7xK+dyGWGrEL\\nxsfzVOny20ZnkHhyBYxBUIGoHEYl70bpzjFBJN4WLGtilZD/0aLWE/+ykw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413860, ST = Berlin\\nSubject Public Key Info:","notbefore":991901711000,"notafter":1686471311000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEs77Dr92zb+HOBL9gdfCWOwkna+9D\\n3Kdq0HgUqpVByi7kqykRPAFKPZBA771qyoBy0uHFhdYIzNAPzdHj7KrPsA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413417, ST = Berlin\\nSubject Public Key Info:","notbefore":991900474000,"notafter":1686470074000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEopaKkUUE4nCgNpRBE9ugmShuJd90\\n7aOocVvFvxPLxiJ5qqQ2pq/GVsq5Vf/0V/b1V3rAoKO8bMvxP4jkTWTxqQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460026, ST = Berlin\\nSubject Public Key Info:","notbefore":1623415821000,"notafter":1686833421000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh934IiMCsXp977pDeG7Wi11S+uGG\\noem6nSNbtCILcST4+/FqGlLOBJvIZPSh3hTHx2V7V+3Lzqi6R2dahOno/g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413693, ST = Berlin\\nSubject Public Key Info:","notbefore":991900928000,"notafter":1686470528000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyV/EBSORniEE7SMMNmvSWT3dOAuD\\nuviDHFv7rvnrcZ2wyfQkIjyYPkrtVrGwiNdwOcbHKreB2eW6li/+fDQPEA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413897, ST = Berlin\\nSubject Public Key Info:","notbefore":991901776000,"notafter":1686471376000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5eOmRsTsPlyUVzKnWK3xYlY04+DO\\nffgg07nWx4FTa4mouXQ9nfCxmMHgpuZv2RxbVSzYzewjcmKaknNEYDdCdQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382773, ST = Berlin\\nSubject Public Key Info:","notbefore":991557537000,"notafter":991903137000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZM5AMBImcqdKPFM6P5xx0LmZxo8\\n1NcnuydrdPUQaaa0NhsRctuX4qB8YSd2pG12ilwSSfEcgju8I7AsFJSAOQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414081, ST = Berlin\\nSubject Public Key Info:","notbefore":991902238000,"notafter":1686471838000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaOhuajeY34pPu/12SnuMv2qlG8Er\\nMOj7s0eAEM2679YVzsiZWLIp1S1jNWsoIJJTEiLWUtj1mqCsMOR3gA7CBA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571270, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533590000,"notafter":1687951190000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUtMktlZKpvOfwhumIvsvpKMWE1Ly\\nMq32RkRCbVM5TBBxHsCUYdXSjbqPK3cZ8tYkCkcYlyluKbQO++HaSsGjSQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026164168, ST = Berlin\\nSubject Public Key Info:","notbefore":989237611000,"notafter":1683807211000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsLa/zRhSxxsmrPE/RwPNKXGblvI4\\nJrdqfPNYpuPn3TpkExb/vod11MuW7BismmErZcJC+oWuItW1UH+wcXHJcQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382931, ST = Berlin\\nSubject Public Key Info:","notbefore":991558189000,"notafter":991903789000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5D4cdY3G91kHagLyAGon0ufC2jqz\\nQ17V1wjvYHOLxZSY1evmQVhovIVUS9AU5Z73aeW++2ZyNUFg7L/9Zk1E7g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026383125, ST = Berlin\\nSubject Public Key Info:","notbefore":991558987000,"notafter":991904587000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpobykjScOX2uy+5C/BYBXDRcVUVO\\nBDWLUgUaIhP2q0GoF8FBBDYBjx1peWhf4Nd+rtjBivr5WDcFmjMVn+FVzg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026413286, ST = Berlin\\nSubject Public Key Info:","notbefore":991900321000,"notafter":1686469921000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgxLpjMDX1/tMRghYLQKMI0nK4UkZ\\nuK9pnAAJTC7BeQUaHYFp4pJkC8z/VHcW74CpwTeTRITzs4MZflkN/WHtqQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026383107, ST = Berlin\\nSubject Public Key Info:","notbefore":991558868000,"notafter":991904468000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtLZ1N2Y7UQHgRO3yKGyRTsJWdYFG\\nDld5kbglFGHrMvZQwa5XoBclH9xTrP3dXcTsgjnml7Hx5YZOnGHhJMrenw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571313, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533720000,"notafter":1687951320000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx4HHLyxeH1wp/aPCCwyRxWVEcfUA\\nLP66kgwanudG4b8upvGFMsVXpzg0ohEParVa912A9UBuCkjDM6jFAsgZIQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026317104, ST = Berlin\\nSubject Public Key Info:","notbefore":1622025130000,"notafter":1685442730000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJmki+G1pd9DNiLX/eT709p/ZeCd/\\nmcjrmRLoTgP6nlDqJxUvZ0rQ64y/Lj2Vk5ehGHtuV/RmyuNXJYxFB58bdA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414115, ST = Berlin\\nSubject Public Key Info:","notbefore":991902338000,"notafter":1686471938000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd+grPnJ58prZvOeLC3vi9P2mnqlv\\nvGNfsbT0HmxAVHAoNB73PT149IhGWhNZFSMFRel7vu8vi4wPoaSuIjraPw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414160, ST = Berlin\\nSubject Public Key Info:","notbefore":991902447000,"notafter":1686472047000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPdriVdFsidKrE0nr7S+75iO7+8LO\\ntzFp99++4BLqKKMKn/mAXvgkInEN5xqsifTYFWk9KmLcUGbD9dtwQlaA+w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026460008, ST = Berlin\\nSubject Public Key Info:","notbefore":1623415750000,"notafter":1686833350000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7f4SNNst1BMsb6Ub0yVCz01aDWB9\\nI2/ajVbLyJpTr2pKwSocQpiM0mcy9XX+dMYYlUaQVBOmtoE//fnw8w2vDA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571191, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533337000,"notafter":1687950937000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbQZPoqfjpTx8m/wAZZWk3uoDxzfp\\niISsNSuZg/+9VN/cSefrEHFRvQwM2AjN6vOjhzVMdjZ14MSRJUMJEu85Lw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571331, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533797000,"notafter":1687951397000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+fBKs9tgAlGoiBIglL4JDLpguDzB\\ncXqCuIulrUkBy/wZrJtv7fsirU/YCvcn70rPzMCloqePEoDPCf1wWX8Dpw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414197, ST = Berlin\\nSubject Public Key Info:","notbefore":991902557000,"notafter":1686472157000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE40rFr8baZEDNvONEE+Rxf5ePnZLL\\nmqR+5Uwx/S5I2ylMijZyZ4c2kD3OyTHlfTNa1mS09zXnXNJKqZyqi3GGQw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026414133, ST = Berlin\\nSubject Public Key Info:","notbefore":991902394000,"notafter":1686471994000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2TqSv2wB9nB0Ev3u5VmckxWzq/L0\\nfvl1HVI3ZBXCF+7k55bo0zUABUPBz6/e1PaDxDCIS8+NybrbpUT3w5D3Iw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571243, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533485000,"notafter":1687951085000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDRVIqu7uo4HOgXlXyxYBl2L1arxx\\nvDfwfgnYHjgVKQpFEj+hV9YEjSECJS+YrhGr5RXZU7eRzKvfKtRI1POaww==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571119, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533144000,"notafter":1687950744000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElGYxcioPZFzAfJHtsB07FzUDpJlc\\n6C18W2kcnCGEE1ujahisK6ZvE+UoSGh4ABGNQOX8RypMp4t8bzj7VAqI7w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026571298, ST = Berlin\\nSubject Public Key Info:","notbefore":1624533665000,"notafter":1687951265000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6/QS0f7r433yqdq7XKh3OOKhOEig\\ng+VVixYEToozbg9QgAqADIZYDe3WEQnO8u8fqdzd2ouVZo54/Gc13gszYA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = DE, O = D-Trust GmbH, CN = D-TRUST CA 2-2 2019, 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE, O = Robert Koch-Institut, OU = Elektronischer Impfnachweis, CN = Robert Koch-Institut, L = Berlin, postalCode = 13353, street = Nordufer 20, 2.5.4.97 = DT:DE-3023531445, serialNumber = CSM026382968, ST = Berlin\\nSubject Public Key Info:","notbefore":991558373000,"notafter":991903973000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgMhpOktfDD7Vn7Wm+BlHabFbpOs2\\nUmCVrtIpcOFpIlr8+2wHP5/VSUZslExSo284fpwuoJ5eKcjDuvlCPjZNhQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = HR, O = AKD d.o.o., CN = Croatia DGC CSCA\\nValidity","subject":"C = HR, O = AKD d.o.o., CN = Croatia DGC DS 001","notbefore":1621509466000,"notafter":1684581465000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV\\n5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICwDCCAmagAwIBAgIIPR9jkXY7CPEwCgYIKoZIzj0EAwIwPTELMAkGA1UEBhMCSFIxEzARBgNVBAoMCkFLRCBkLm8uby4xGTAXBgNVBAMMEENyb2F0aWEgREdDIENTQ0EwHhcNMjEwNTIwMTMxNzQ2WhcNMjMwNTIwMTMxNzQ1WjA/MQswCQYDVQQGEwJIUjETMBEGA1UECgwKQUtEIGQuby5vLjEbMBkGA1UEAwwSQ3JvYXRpYSBER0MgRFMgMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzaOCAUwwggFIMB8GA1UdIwQYMBaAFDErHKPIgGXhH70EktAlPHyGj1LRMC8GA1UdEgQoMCaBEkNyb2F0aWEuREdDQGRnYy5ocqQQMA4xDDAKBgNVBAcMA0hSVjAvBgNVHREEKDAmgRJDcm9hdGlhLkRHQ0BkZ2MuaHKkEDAOMQwwCgYDVQQHDANIUlYwZwYDVR0fBGAwXjAtoCugKYYnaHR0cDovL2RnYzEuZGdjLmhyL2Nyb2F0aWEtZGdjLWNzY2EuY3JsMC2gK6AphidodHRwOi8vZGdjMi5kZ2MuaHIvY3JvYXRpYS1kZ2MtY3NjYS5jcmwwHQYDVR0OBBYEFB55yLnz+T3ShQFs345mxQEJZb7TMCsGA1UdEAQkMCKADzIwMjEwNTIwMTMxNzQ2WoEPMjAyMTExMTYxMzE3NDZaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiANYlqMzCo7P6/FbwxS88MCB43CIBgfpJDmQ+D120Ov0gIhALJNQbk8HdHnkd31GV88U1N4YghHSZslLY8eZX8wSYR/"},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_015","notbefore":1628798400000,"notafter":1691870400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC\\n2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwIw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUc4Z21skZZ8Xy07UbGOonQJh/3uYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxMjIyMDAwMFoXDTIzMDgxMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwI6OB4DCB3TAdBgNVHQ4EFgQU8CPvYMvFZX51QjwEsL6RmVrYhCgwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCfhMpfpfaBZQLkBuT1XZJWVfMy/UxqunIhPyjjJejxCnYupYB5LoyUKeuI16+StNTxGNHML7S73SWywDSgFwP0ttoLK1fiGVKtOBfxcvPP6RiuhbgkdXlUboXW3azVLUB0y4ZxnFsp3ZupaTBCpBQNAaC30tEAx0ZEZvOBl3MGRHqfR6SdUc+aMj0bibqm29J8hOZAe051JwGNF+y7O0pLdDkmAg3rdBsHaTNvA6AcyRRV9Wm8vB6bf20JXm3mvVtgdyidUgSTTMJ2BOqvGzDsJma5q7vh4nFZxPDRGp9Ny1WU8MzGUIUilv/UJKDexfqyQdzBOF8jHXCY/gHGXrOQH7MZ6ApdG07+RY8R4AxZ51OJyGQw/KPFdU6XLSaDtyTXptGxl2JPIaik1TtNNR3/pAdDVp67tik7En8QICqEdv+OqzBbxVrFRHmW7bSeiX8aSuk52ypHTAR6MkstVNxd5J0mzPxBqQVWa2LDy4vGkFn+qQ2/tsVpdJJLQwfcix4rEP1kazm6nWqTyyoDEU1MM9i5y/Dv/GkAwMeXPqf9Uy2z/QWyja+me06DI42hf8eLN36uHcMS10MT2/ei2w4i3UULge0NyN2+wmjR6xKJHEu9P+LXci1jik33FbwGZKXVb1uI7Y/iU+NIBOPgHQfEvBuKDDvHC+vh3r9sraXeCA=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_023","notbefore":1634241600000,"notafter":1697313600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgu/WJBn1Q+RCOfQx3NLT5oIGUCHs\\nqSRXuu7EZsqfqZN5PvHk6/E++88wvj2fMrfmAptk5tVld2xBH4P4tRs8JQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUbjokPqcsK9BPa9UdWexJeyEqilowDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTAxNDIyMDAwMFoXDTIzMTAxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABILv1iQZ9UPkQjn0MdzS0+aCBlAh7KkkV7ruxGbKn6mTeT7x5OvxPvvPML49nzK35gKbZObVZXdsQR+D+LUbPCWjgeAwgd0wHQYDVR0OBBYEFFmAYyEK7sVvsDvIY+w6fmNz2BT4MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEApMhsApIqDdjtJiC6mOsvI8L9Uwf+gw/dv06vVIwTQ7y+4AgtfZ2HTWeqW7IlXvNYs0m44U4VyL43pnoV167rwBOAMGTrYqT+83Hl5adOtl5ui0RxVHzNdUPiVPL2dV/OgZQKq/TFjm8wuJOxhjGIx2CFVKX2PpcbHAZ/IawdJjhOsisBZpfYuBpKFV8hBj9/SF/EwCrbswB81IrOjNEl9MkG6JrYarO/uztKHv9OIFy5SC6BaKkO4OItM2xx4H1w2cl7Cqt32n94WLxP0HLeAKqUA8/7Ttoa98x04iLElhkg8Fd+aL6Foi1mWlWBRlgHz7iHxZ7zYDmi8NksxnKECSwBm4FpP2Guz7CWY/tsREyGvrzZ2DjYFtNtIOHW15xr7aTPRJ0yD0DYtmZ6l9aYlFVGUgNWypUuNOe3BJh25X2re7nIwSvUWZeAnUFbJ+2YYt9xQfjgSll/DByUG/SfT6EqstPWlbVFVLljs6azzxQyozRB8JYPVG1Kny8WSl3YokIDLVofulJqYpi+ac2DDFCA1L6Mtnfw/go7Rq7uiorduqZi3FL8vKwy0M6S3ckP06pWjpJdOyKaLk1cbHJR4fuzY+PrhvDkKmSSlEzsWCIKe6B//ErN64MJ5xJxc6HnP2KvXV4hf7XbFsNat5ETxb3VdQhVDyHzgbqSpVo9BIM="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_016","notbefore":999460800000,"notafter":999460800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTC\\nmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFDw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIURQaZ+EBTL+Y6w52qaQUNZ8YBNs8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkwMjIyMDAwMFoXDTIzMDkwMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTCmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFD6OB4DCB3TAdBgNVHQ4EFgQU7OG+JgHJZf/maDGo2iSgWdFzl7EwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCVWdsW/zEmkJ4uRQVoYTxdDHlmS+mbDvEGv3em3wtFVWX/0FZKRRxHZba4wElR7DjEv4A/d6sYPn/9Mp5PhBDS/lofFzUMNYAumH4uls+MT6a9ezZFCtcATKj9pP2hMySfSn2rfQzOR9yXS6I/GcruzehqedBmzxc5uKjbSeyLA7sgsgl/JB2DW5G4tIqjxIY8KytMTkrrlJYaG/vPokpS2ajUNZisBbLHJAGLx4XKnjlLviTBSp3iAsoCh/FFHJxtQJ2pFvmgRmVaQUKpTaAuHH5pPmw4Q8rgXq+qX0vFaPe6LaUCpJkEguY5lxGtHqZGoqoVaKG3/LX9qkuzyJ5ijI//e+Uzah/zCBmW4kK9HLHUVWNyOD9fbVhWHJfXKkNJ0dH5JV3bKD2G/MvM81R5Q41F9PUjOXYoCrDnY2tmBPuXisR4mCulrWyM6Bj0/r8CkMkwMNcr7AoTEfXpa8MxJANVWFARG76IYiQtn8M1dtBxmy+bf4/+n/k6S6Z4w31tTl0YsNWQ6TnlHS2PQ+UiV1zchJcZ5RW2YwlWjLRhJHOzrcv2m1jRIsqPASvRLJjeAs+77ZDyBmBFA3piutllZj5SBDCLzStyIplruJWHhCnhGj90b+fGQUPAhj8XxhRuCnRtXBwWED8hC6dQh8QaiKB7sTrlU9L/8wn5mCGnuQ=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_013","notbefore":994017600000,"notafter":994017600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6\\n/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUdvwPgIGxxk3GeLBFSk0RuKP1NnEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcwMTIyMDAwMFoXDTIzMDcwMTIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuKOB4DCB3TAdBgNVHQ4EFgQUK/s/lmhAfvZK1RyuXxMIhJ7oTm4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCwoySNQghvF3QSu/6RtHg1XDV/4eNFFPwl+qmZn1AfODHAfVS42hjsmMLeDOLv0JUg3Xdx8debts/8/ljys1XMy1tODB9y06ZrQ1X1GxtutC4cSacBYWsy06qyI/vn1Q6vwKkNHADNJP2GNxQUlolkXkdgS7q+2tWCxcK8lQE4t2TrrNUi5UN8tlagLkbuGYqnzHnGdZ8AN6NskBhq8j0mcDHxhZ32yBg/+ZmLGdnCqRuZ9fjrH6B3k/n7fHhDG5UPnk+m+LReCRN9Zud4lGzLn3HSS1dqB5V3k3lsszmQKEi9haFljxImcU2aJ+IRepO6T/kXh+bn5ei64sEro3fad70eAOg9C4hkD3krsHMpYdM3TBF704dahPbuusRFqDCD9XrLpYP4e6UD+EdjOg/aqG4i5DEdk9cFJtv+5gp8ExtqUXkIk56jjmShQFwfNgA5SWa6lFWniQCYPxb978BMIqOamOL/6BwnyaazQWFm2Qyl4AzlWot1CrOt3r+aK/i0m1nE028dju2xa3BTKEsxjCAXJ7eOldXkezBPFVGpfrdWssqnbzaWVXtVIfZ/CNMmEk9/cqgS+A6lrZlC5Og28ziRrkQatnL2SIbBXmcJ729H1SHRfAVKu+yXDzHV2fcwcoFBgZUf1g/IS/ImzU4A4sJImfDAvaFY3mcQslcm4Q=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_025","notbefore":1623700800000,"notafter":1686772800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEGSSdtJPZeYWU3QrR2cR4M2Cv6sY\\nKuY870qkBKKREtlSel4Cxpfm8EnPZ+OPVVDXxArWdYR0MoLK6Ox9aEIkmw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUEE5lEugsksKBZO8ZFddktB2zEZgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBBkknbST2XmFlN0K0dnEeDNgr+rGCrmPO9KpASikRLZUnpeAsaX5vBJz2fjj1VQ18QK1nWEdDKCyujsfWhCJJujgeAwgd0wHQYDVR0OBBYEFHo8gi1E3sTHBnZB1uyUzxdv5GyzMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAM2QCIIa2/qraMLp/+N3JR3gBVI+zSFird5rWdWPWptnVq+E2MEPwJhz3a288axhZPetnm2vxRHtrzI8OS0tcl0qoDhHmMQAPzYHth6xGoGx9+jfLFMoynA1hcRmILtiitPoOT8SYe9K+ln3sia2xn52Rysy1xLTQZquBmczVAdxAS3B+h2nNw7V0b9ukamul6w9Fp7ifg25pT6mTt5sXD89hTSqTf/fhiTCjRTrBTJuVA9VgKrWUiZHI/vIwKRHoqUvMDDW3RK/QoAqfQWzztKV9yRCpBhv5focv50owbyu1VYpnT0gnl20UZsLwEXt6TusJFvGoiySFCLLanU6gyoHcXudNem8YEosOzxFSR1wvKJws8JJjuaQweQBtu/XRlwti73KZjwltHsehHC3nFsl3VwMf97A2cmre2ueEUcjRFvElh2PfpIIL17Srpu/mvu3hSVHndsUoFVZnZUWz8rVQL0M394Ik9ZBaZXVrIZud1FfuDQzbVKjRTO9mOIv9WZ784MAON+g0p0xKvJ2MZmwe+ZF4FvxRP2fCC9vlMk3As4bccS3IUKsrupIFXar1THfGPL8obpn6ktjVJ4dCT+y2w5JHGtxclhIjdqG5w/PrMPjeGrq8wlALwGjKMTF6gOZ+BtfjNCaG8h8lpt+oKeML7GP/Fe5Adjcovc0DBY8="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_020","notbefore":1626292800000,"notafter":1689364800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECmvd9b56sHucHEi7GBjqapZy6IAZ\\n4MFIFg7Acr85jXp/oBSNzFBP9CnkswLR5vwmr836uS9JL5sddzLT4K4+5A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUY7ZCHR/KM3Pu7zkxGX7a6r2xWT8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcxNDIyMDAwMFoXDTIzMDcxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABApr3fW+erB7nBxIuxgY6mqWcuiAGeDBSBYOwHK/OY16f6AUjcxQT/Qp5LMC0eb8Jq/N+rkvSS+bHXcy0+CuPuSjgeAwgd0wHQYDVR0OBBYEFGaKMaCARFztgSv4jjRlAu75x3ILMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEADKs8pzrmE48ZExyNbGa8kV7CjJjCfWGTOEfzxaA6X7gL0kaHVnvPeNq4yQh6CZl0mwrEmdxvuXKRefU+nCg/prbn6CAwC2irDHU5hS48Qvya7JwqNTMOU66phFs3FDuXOpUvm/fe+w6Vy9M0IqbKu7kEWizZ923G5YjrcUgnTuF9xZ0pOd2HjYh9efNOmbeda0JmJEQKxi5+WAGjOTqidDXfh/G+2jB/Ja67kyoZSeMHBEz7IyJ8hBrUWRWV5oEzIRQdMlZ2xPD9S9nS00T09gkl2nhx+U7nTqRPQa+qKMiejQA27+EwDgszkl5hUMTeqB5xA21l2SqBqz4W+v3WBy0ziDNS9Qa5HC1+lZp/7R+33pfGZMOC9iw2+yyC+SC8cFwUB/iuwZ+0096LV0wZshB74ZjU//sUNJIL5/ZWaNGohnIorJ8nbzMFm2rPfU66dOanfQ03IkrtIlbxH2IOAuBsC7Fk1OH6DDMoOJRia7OSAOv1UT696M7R4MtKyWhCiiNajxT2jSJbvpVj5YmS83G7cfbsYHu8x7VGxrwMXyyeyhKPh8D9xXCYdRrkAo5hhd9ETLRI4QeJHPQvw7UOL3Upog+fZmaXBeEetGl1Y8PQG2JHjY0BUGclNvvBApH6jEMWiOMUMjnR+mE8FC2LB5GJScjq1MLjaDqYpj5f2jI="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_024","notbefore":1636927200000,"notafter":1699999200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7B4Il+aYBZk8hs1MI28H4Z4GF2HZ\\nCXgX/DSTxvUoCMVze4xp449WJLblSCKXreGdiT0Mycgevo4rWYVGbwtUxg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUQGT66i1j72Yd+CXVZxgaJFhLGKcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTExNDIzMDAwMFoXDTIzMTExNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOweCJfmmAWZPIbNTCNvB+GeBhdh2Ql4F/w0k8b1KAjFc3uMaeOPViS25Ugil63hnYk9DMnIHr6OK1mFRm8LVMajgeAwgd0wHQYDVR0OBBYEFOkihiD6srcZ+6gH9LiQNVc6QwQ8MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAg1Vrsxtjk49QaxQ/LWFLC1WmRTNO/8XeLyASVHjPZXWfvrl9ft+SlKqlhIom7sYbxiYF5+g0qRjwBWMVqfFkYPpJkeuri2awLQo9Hr8oiPNVSHpFi3zjr4gMLEv2buQ6LUbvAT2U6eOW17AiNhT/3XzND8tILs++7JKU675p46YtKNguJhJVPEO+9cMdBdeJUM8d0RRV40AlkY/ThVI6BzqxmiD6jAka4bWJFztR8xkBs3RBxcumGXPIJIpC8cJ9dqnnsBdLJfDlWLfvpn9k03QIU9/XObnw3wLGwFWnxdr6sQMNxJCMpk3U2tT6og6DGylD4OQbGQvqFzm1x+5X11DQIdhQhBbbz+ymVBhVjVTm6D5JsEHYOcXi00aIs5zuDs0AYJhWZW/eimBgkRy2WE/6eH49pBSl80OmNAcxboqZHQS1jmLqZ9yptJ3pbSOXZS1ABgsGOYXCyHTPy5OQA5zHIt+zakgyvcFJm4YcIOD9gKzrpyiB7qJLbzliTHcimuIoMfKfzMi82K2rsFZ18glgRnm0/G1I8Cgnol2qXjkJTJq3BgI46+aA2ad8sMWB+3L7J9dj/nQJrNaZcYZ5IMhyHxeZRxpo9brURgzt9J/Qj2hF5gv2ovJXo+FgjMiLusVpsi3HKcYyUS36dKj+f4ty0kPdUklcdx52ogQ7K44="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_017","notbefore":1632427200000,"notafter":1695499200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/\\nMCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUGxW97yNy30SefumeNAP3zZwINLMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkyMzIyMDAwMFoXDTIzMDkyMzIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/MCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxaOB4DCB3TAdBgNVHQ4EFgQU65Kf02Ri58/6NMKPr33J+Wz8lrYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCAD7IAnsIa2VrGdmp7kv5Tj49lhY4FgzphvUB8YcPGPy+EtrAGi+uU1hKT/nbGeB82f92nj12iQUF57gwRSalGAUvlkz4c22L9dt5pla7u54TI08GPOmR5wUs8zixYaZDjAdNr+WbfgbDzqifwlhrjIMbKwCfW22187hxcrQgD4gVc927EyruFmJxxSDNJ33NxFkZ0uXS5TMN9gWLuI+xhcosLeW9SlwscLI9WNqBigzln/nLAHYzBpS+lprHVOa+jJzktlJbATB40BCz9jpGcCDgkUTCNZ5z3pOHas2rVm2aBLcHVttVbps+ynYwyWtSI2jr9oN6GzdyS6JZykxvqGoZO3odhxe61ioVhjyhH+e9mQIvpM7qJ2/mxUFp3ND252wmnGW9FuzbFamH/SGD6LipPVyXK4oW2nxYcN7Fjdc1w/5rHXz3sYfIGORfrumSeRnfIdXglfsQi+T19cA/kwbuGagjGHntN2bnZP/FDvs07PgixNAi357BAAuwpHKMHiwXSjTW4smx4+agRVIlGZ4zuEQXLPpFSwW0ktPeLdr4DRtfL8cRav5Qs5TrG02c3lJP/PQAnpXpbGBImjAmBsat+0m7nuBU7Ix3F/A5HBkSlSHUgvw9Ze3PZUxw5igsMm0eEcd6h3hhxV8HZcS40I53y9l63gr9j1Mas7BfceQ=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_014","notbefore":1626984000000,"notafter":1690056000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZ\\nmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIULSQWphYP//zk1JQmpv94dIH6cmQwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcyMjIyMDAwMFoXDTIzMDcyMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHqOB4DCB3TAdBgNVHQ4EFgQUZprkhn12tER7SWBEtD8mPNDNmK8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBCJgkoi4nyqPEXv8VCIXzO47sLWS4GOrT4eQ9NjEBuXqkCVWwMiQ+0PPiNi23QWx67ZK6DYUQJUOHAV8VRKZRK6G+UHRWX76hk00+hmW5qL7YT4+Z8RsXj8TA/DbUTXwEeSSinfQYefLoC8J9G7vTYmS4su0CaG0wr0qsSOMKZCM/sh0DUCNtZTpzTspDj/i2TPhTNhthyG2QWFKnTdQruEyT3XC1disruo/H0tohKOAmZhqXocdKFTl6Ycbn21A2Pm/xJRh+W/T19bFF97Z+i5T7CfS4Zrf0VQm4ZNrUv96gwye532d0QQ/6JZCTT7aL9fjEnEzkQdtdYPE0051HI9gRKmW6k++hWFiokhcarvWAsNkN4B4MIzTufRm92hCbzFh5IvsHYaaAUsfEMDsrhFSkuZ1swzimP2AQ38R1O0Brb2pls3sF7SAc3j5LA/bXZNhMJ9iBroc1SV7YC6Vv1DZOHTumSLw2fvwDt358sEicsCgdpzpm4gKTOf62rzqGiNpKWBbZW2mJvuv6WNV5C0/aW7r1nfuJ9+qSd2SUrZUFceE4vpxM2ccgsodHnspbSo7jKTeJ7l14rQn9XvoZY3E+YFcdbJQQeY0nABB83acJw1PVKfVsyt9D3DLwWXEcUcwUGioxVwiHR01VyrB2FBKurrXYEx0PglSI/NZBL/w=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_018","notbefore":1623355200000,"notafter":1686427200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjH\\nz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINRw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUW6BjdX2GIko8Yv84sS428c3DH6swDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjHz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINR6OB4DCB3TAdBgNVHQ4EFgQU0ONM/OVD0tP9BuSIGmIZRrPdEnEwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQA7FyRe/36WDJi/2FU5cpnrV8dXpZUHEGzHRZ6vaZIP02S8EdlcDO39+amGmv7HrQbcLAh7tmPhpii7DylowyjvnjBFc8cJtn+ScbMQ34I0yokOvtFJvyfSBOlK5udIyFrDjdsfqr2BNx982X4dK0UYQfGCufppflZOfaqv4Y8A5lBTRXAlXPJBSZ/GMvFAN5mesGhnPD0nFNnpOHGfXG5DkNE3gBRYUyswIY2d7vdhCNiCH82fSW4mzPs/oMQaI3Hw8IiAgUwwpMqXBHs0Fxn8d4WxrpGj07r2WjIOVNk1JV1OHKvHfuVPS1roZ9pNNUkoKHf1h46f1nWczUM5jmVy0Xvvw+ZhvSelRwC7PQ74BUoPgbYzsNP0SvGOnhJQrhOYk3GSIf9EaQxklqVT8WREoCDNxfRmNYdCJzQXr/GZ/Eg1+6RPvYuQWgsB3SYgdVQz/pCRHCZvEjU8vUL2lwW4wgWlw+Q7OrXrpW1JOxl98zRRSpWxRrlE24crzTJ31hM7n8WFSsF1ZNnOoAhy0nRxdeOkpDcEVyoxauuPGHUCNIMmvvPG5psrO417HLJGHf3oLkKadSBK/Nn9u0YCCa9ypN6LRJ9slwxITAsKTrYttjEgNAisYVLojtHcCkAr5JfqL93rFYI9BYS2x/k2QGTlKM9LoUUpzaYDz16rddiaSQ=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_001","notbefore":1623355200000,"notafter":1686427200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjR\\nkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUbNtFh5SyNNW36Tj3lSGsVZ1yzJkwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjRkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCqOB4DCB3TAdBgNVHQ4EFgQUkqfVrNfmsMs1UB/NA0C3KVEx3O4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQAhOMLYhWn1iV43jduVRRivgVT1jYwHmouj7nff+S7gVnxiIlX52jc/VmQDl6xOZjBHUBiRTRqjan1tdH1LvBfg1HoZWv3HaC5HbfkMu0nqItE5zbFwtJGsUpHRTSP/wrjqL83o5akkR8Uw/iIYhkLvuEKH3/ZqwZYRwOJ/NyXJnKgRuHvgsL0zbwf5X2EdbqaTtDDGHHCbg68o8CqkQ/guBP0jKHXBFWgboMQB2bruquGqVO2xKIZIU2E3sc3dhNbDYGD3KfgJbdFtnbISvxaIfnCn3anZtQgonSsHc0LWIpgobY+NxXSNfBKzICdI350hhmnHz2NS2VtrF0Xa59kZd/WMPcOzlfKi6aVI/Y+LcpujeO9ujlFGNU6aMxi2s9RWy31tjWxsOmr/sbEKF25YGuTWwvqe/MgXzpbTF0C1lVcARXaBVT8Q18nNbLLK/VLAtzjLYTblFM4zdXA5ZnfCqXDqZZathkyyf8aY/svDELxROVm72F9GnYC/OqnGeCOed+Iscp8ne8HUTgT0iNFiAR1pRz25v047QFE7G7jwo4YTA+ynwCxnVaoK3pkyfIiXstyPxMpu3Q7t90br/mAPDCWDHFpvxqvPcRlMpd3p5JcjiurGreGbivgPdJYGRPbWb/Kwp/99ACqZFA8FaGL7aP+ivAO6cBv6DNF2XXvoww=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_002","notbefore":1623355200000,"notafter":1686427200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g14\\n4vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUQporYv8Mt3ziR1r6G4s54HzRVpcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g144vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4qOB4DCB3TAdBgNVHQ4EFgQUxhlqVg/2EyJWoDdVGkyJrsY4CXkwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCbA+2eQnPJWMmh2eIH1gMJhggl5GSmOBFKeXyC4jeYQSDRY97/rsDWRXAYtE4DgZQO1cZcwsM4ybbZ+khmb0iCeO/0oiKIux8FU14B7zFksZFxZpbUSAJGD9lE1xRFnfUIyoPL3lza7lWqZ8lSfLuoqoN4mODkGpPYwWu/GC8sR3ynDt2jhrdBcLnos3k47+4ZRypwDnv9FRU4/9fEnl3Y4iK+hUtq83tI5offQETsXIq+VMmcw6zmeUTaMcHRnnMo4WknrSHbe9x1MOwQmADn7ZjYzMooI4TyM/dzo1IOH8iovgMbJP7zxWqp8zgtqZPpDtp500V9yCBjGCQWgRofrBhUojKj4BkGslCZaHHkRqp0A7WOIejCpCYwNRhom3Hu8oClJ0fGcIEIrdybYISYemClnbSlM+tXt9vATf7oMRZgXSGR/9HrY95naG5U7/+eHRgm3qHAJbbbTDHET7ba+Wiq9rnYScChSH/bMN2yLsuBcpVozokcX6k2l69KVzAsVtKCjPS/ISBWHDiEaVx++RyPB5YfbVX7ykJ4SaWX1ED6DLeszCdcLNb57i1Xu35kb1SGh+CUeALUEqBtJUcEheLixnTxJIHG2xq59a560SsZBdMf8r/qYTz9DqEgBXPSlNeHn5aIG/2u0bLrM3Q9GvBk4zBj3C4zWZJVUTZBNA=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_022","notbefore":1631649600000,"notafter":1694721600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2HtKUYnSxJw/bgED+2LJQMAIjyA\\n+I2plnVS50JCXaIALKstac37wB1lUvasfdvbE+nNbCvMkGPdMjLluMfT3g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUHHuaV60Jmxj0/Safb44HGezp2U8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxNDIyMDAwMFoXDTIzMDkxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMdh7SlGJ0sScP24BA/tiyUDACI8gPiNqZZ1UudCQl2iACyrLWnN+8AdZVL2rH3b2xPpzWwrzJBj3TIy5bjH096jgeAwgd0wHQYDVR0OBBYEFG+4PXS0sdtKNozOKQXcYVDA1Hn1MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAkjEVtzPSxFVMTUece3w7PeM4Q2fOn+MnaN60g6AusxnUUZGHErNnmjxVeU6isLYPB9gCHB3b2yZYXHh8IjMsf570yiDhsWBzwRjQc8a6uQoZSrCXFyVuvAGZ/hXWDf9AIKQrbrg/YlsN0qnhs7x3VsGZ62XHCQCBup2wMdW4VOa76YFgskKITmVB8RNE/r7sQn9tRmGW7RFC2f78v7vm8rshqB/6LFtwRe8kcBmRSw5l9pVMKHYLPW81NaEYN1BB3BNH+BH39rg89FPuuLMcO70Ow+1g7ebD+UH4VbgfhSrx9XKP5+FtQWTsatHdVg6vYYNPa9TR9/9e4Q3j3BAfnIdmhsT4DuRy9P+En9WZmg4NNFUVr8adlSKkiZOoJKSQh9TOavF4Ikvd/BD0S1UdjprApN3XauDRqvjKn4itsLc0m0ctUE5e234CLMbdNJM6ExPG+ukAdtK5V9FXwdyvl0+xVIBY9nI43z50KO5ZeyOWnqwRWCPqZ11FLuqFvoEpQPpx3d2Nc/IlQoalLWXtZYPOiEklhqAC7p1Qa+AG2RgsTxyIaMzCANjCDIFMBzcO6EbnHDPR9L5Xy4wqiLeQ06zeU0YR2WF+9DVMDR5j5lUR5QWFCDTK/B8ObjdsZl/Y9Qd7RoQT9wbtAa1+MpCXk7TnoRGG1HSdhi/yee661P0="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_019","notbefore":1623700800000,"notafter":1686772800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEImIFaugzwB5f/VyfQ3KTfTSoukwA\\nPVSgHZWrtrc2j4FuAUpw/ObRnA9pBjN/HdUc1zcl9SO/vsCEnHkXhxjz4Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUNWO7+/2lmGQGT1cep5petfsOFocwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAxOTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCJiBWroM8AeX/1cn0Nyk300qLpMAD1UoB2Vq7a3No+BbgFKcPzm0ZwPaQYzfx3VHNc3JfUjv77AhJx5F4cY8+GjgeAwgd0wHQYDVR0OBBYEFF6mKwOiAheaIxTCkdVKd8zgd7urMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAu8BaLZXFj9/e2/a59mBrOhY2m5SpcAoayxF3zOkIOt7LNX0QqHuomOyGLHMnAhNALgS2vhDXD0hhs96ZcKaystlMePpYsVRyaYa53GwMrGHiLwFxH5qQNClCcktAP++wCcdQXzTyZOn9/GNdmquW1PNMLPCEfqlnzWawdpITr+CYMXa9R5BEMmdX19F41HcoPRn9/X2uHW/ONmBywTwJ3s0U8F5HF21buZtxVDvX4ey+qINBru4MiGwgRCsklS9kDbl3ODUox0lwhs2VgQzqjALF4xYgsdN2LJezrwAiL8GMRAenmX9eDdgzMGnjKFT6yW8BCrPsyUnM15RAou3BrwIp6oxXHnR8wbeKG7pzZZY1J4zk4yYyihwxguWbUZGksJsNAQoNdNHBZtc8a7Oj5onLyUIetd7ELXxdk8uy7WVFeye5V8qJRhWrFyhWWFscQeY8GktefXiGEh6fxGfRU5R5b0PznxfMiA3olad3s17dr+jzqCM/hcY2FmUTjYrSrAyrhHdmCYIJ3US71If74UeMs6NZnQRRiu3tbAX+TiDOHsEHEIOHldbyQqFfclyiC26fHTqcNfIAxXPmPDQ1jpEmhRjFDlOWHoSnzsGZi/wa1kmSb6+2uHgUP/C/O2oi+yAk8GpwpEi8Sgv+HH/p7z0ympQK8IUOG/4K3/urdto="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = DGS, OU = 120036017, CN = DSC_FR_012","notbefore":1623355200000,"notafter":1686427200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQ\\nWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5lQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUdhAMHzJmtfI9KC2HeZuteJ8+o3kwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5laOB4DCB3TAdBgNVHQ4EFgQUowemG/S5PIzFStnYia0U6RWU2Z8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBlqQgxVgPA/EwOPMNUY4OJm4vGvxNYc3LU6R5/5q7hRwa04yTuQOwyRzTcMgJ211G79lsFwiprgzN0kixDYRrwa1NflFQS7Ygi64qGa1KZqDziB1SqDYiHXXCkkTTe4H/vkpZkH5U/+8jVUYI73q7MYIskxgHc1OZV1oKMWilU8rSdWzDQHH6WRk2BUuTORIsGpT0U8eBQQUaNhY8V0GDkKLwrqIWEbKC6ylLa0pGNYM8QMHAvV1SurqdwohC4/6ToNzypyYNctOJUTcgCyDpKdfQ+xWRdFDqje3XUdIRByEHAb7o9/F6H9NJoN0gyVF6YyGAYLD6zBfYhpnPXNxDCa7QltXogVi1gJFglsAVrQabTMXsA4/1+IOrdqMv0Ale/jy+0gEWZOHzUquSQTpxVz+Gj2j9ZXLJPzRSHg7O+LjxNON3mz/jl7cL7wjwbKqnMpYBALvedavnDetISU46qo2QwPO3qAwWF+3/17Mcb2a7IkhlHVKxNgGOEpVAZOQE8ritoVZV+B6xbpnNY2J68vZFqYy/BnkgJ+aL/9Uq0AqA+1Ivsjd2P+Clk5qpm0ZnQ8+CzaEiNENBRNE7aDFohgkezqET1gilIkvGoqDiahw/3hbr1BF848++6+ES20vUSxK2Uga4JQ0MGaKaKJyyAwwYO1MJITQosvt1JwtgiwQ=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = CNAM, OU = 180035024, CN = DSC_FR_021","notbefore":1628971200000,"notafter":1692043200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1PApTQ/nFA6JcYUuo7GgP+gPSKf9\\n8BQh88IKHOt/yNS8ZrjxjL+lVY6EH4yyQdbQZGqS9d2Se5dxNwx5C3jxkA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUPUAmrN9wBn+eVuHqMp8b/blfPPMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxNDIyMDAwMFoXDTIzMDgxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNTwKU0P5xQOiXGFLqOxoD/oD0in/fAUIfPCChzrf8jUvGa48Yy/pVWOhB+MskHW0GRqkvXdknuXcTcMeQt48ZCjgeAwgd0wHQYDVR0OBBYEFIRbucEIacei+qS6DFsuclGQo2o7MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAhYhTafMjVKmyAFJhTx703KE211fPRx3YlWid6JeUNDIuYTQfIC0yPlvtaFM4Z9TVioHcTwweEfqNi10sGVNbWmWAk1RZhay01VCzzsCVscNmi2/7n+qAIHZWgLyAOjJZ2jVDidC8MWGQjb/qdpu1zh46AIiVmfUfhyvBfXP7dQKgx+nPrV+HhxwuaVGci/KccFIHoOu0rttjuUfg2HCQCr4CjLKZ+RHXny6zjfD3R9T1scndEkJot2L/f0lIIZez+oTx/Wo8ivNoy9C9T3py6as2AChlz1rXSNPsdJZ9M2pcCk8z1I8fAspOu+uEevXPig20cxBz1kJzHrAmvYPTB9JTwZHqek2wriAQ/7Oy92hWxr/6tnkdPC5aKUz0nEYBvJWWq3qO4O1GBXCBt8VdXklgPHvZCym2Yc1XKMdhtMVNpOOOZV6SoSTjoi6R3Eu2VSMQCd8RKYc7DjLss0FF6y5qYjBqmizjV5MKTxtxKFA62QUF0jI/9DypU1Pk3Vias9RpFkLiHE3UcVdGMbTvAc4hwH/bkOtg0W7lqnGsJTWdc8MbnZ3blVtrXylveHA/IXgERhyI3J0YCg3pWjJbEwnEqltUa0n93o0S6sDv78lt1uKAMre1+JUQ0lNNHldtljV6dvcQ7R+ebs3GEZUyDI20fmhIcNZCtmOehZm5fyM="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_003","notbefore":1631304000000,"notafter":1694376000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5Pw\\nahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUaaZNZoiS7up4kcKvogrzW8iwXbIwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5PwahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzKOB4DCB3TAdBgNVHQ4EFgQUPQQuG8z6nMfreGSJOz8MdoIMvFYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCe8I1wV8foZkHBp6MM5QbHFNut+gQ45nTjZEOVF2wzAZz4xa48Knhl9K6JdeBQhedQBzx3jKWEpl9A4ycPbwCwS7+HlpDzC23ZaesAGPhR+VAEyYMUEH8ONbsjKIA+rg/4OIJ5byPYxnZkdrSNH+NQzEn8Pb5ZAW8DQXeJgJ/x3Wg+Ogd0iM8yNd1sMMQiO20C4eBRaOtJZnr8W3xLRYaD5sxVHSWRkkCVELQXAVcugmiL6u9MR4KgxV5qWqi66GqHI4zfbe1H+EQ67bnH17YZ+ye0r+FRi7aacXy7Xtk08zQCqhDFaZDr2H7wTj5NJIuSnZc83gAyV+C4QxrkYIbVqPVJ+bea2RGvXYrcyH9LrZdPDJqylcKOoRpvSJoCoyJ40zu4B1tiludT2HdTwN5wjVLmAvJfPT+ZKnVXOgwabm/95Xs/Y8fOcfaRzH44p4j3e65uZ4U1n/gUnya9iaiNpBqYq0c8czOquRm1CJVf/shRkqmQTw7p8BaMygYs2VrS521LbiEeZALpG+sdoVUQfMRN8Ii2+RrJVu+AWUdz93+u98TRDodTRKfCIJq4/rDo9yepiKSgUjaxvvgDszQLcqHBFzHB9Y/Gv+l8YQzIKK9ZxFVEjEDX++heFPYC7C+LQToZcn9CKZAC6M3D7rRBEZ1ibMpVyEW4YXu9tu8RfA=="},{"issuer":"C = FR, O = Gouv, CN = CSCA-FRANCE\\nValidity","subject":"C = FR, O = APHP, OU = 26750045200011, CN = DSC_FR_004","notbefore":1631304000000,"notafter":1694376000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+\\n1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUIxJMjNw3dr88EcIE+hNISSiImkwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMKOB4DCB3TAdBgNVHQ4EFgQUW8d5IrarC3lBI/Bj5O53KmwrwI0wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCalwjJDDOjgInZboNfXmrdZjrxA7i65O84bWW1rnOSGZwBpdMcdKrNDiizyjklB6tSKuLH0fllMPUCMd2Umz9zTTKJG1usxQ5Yaf9BBW+g8Pwgn/mNRprogPK/VXFdLCOCmxr1/y1FEPgnecD3oBFhm4ojZywwWVrcUoPnRvqIfJLEvzvYais7y9PqkaFqW0TNyvaRq9tBYyFkvZUQuizKK10nmIXLzg6JYnSXR6awtRcZJs1eF53UQynv0dQmVZbMl/JM01y+sard38byiKzQc+v/ANI24zLHWw9iJm2/jlFTch8S2eazMEAe8EvpMqzzSOcIrmgrL/r9CQo00cFFkCGCIZWnHhHEKv+uuEPVilSJC7ijM8p5npt1PwqCCB4HWcdZEY1oCu3zjjOIIRIySZmKoailNEV4iZeAw0D++wkR1+OyywIebkaRVWKk/irrToYuvQYiTDlh1yIh7mmrL0/lULdONjsawOh/s0/vxKSyD+gkMVRzxBax7BhT3DLzj2L7E/Tw5DNL87k7zmlxcHGW8Oa6sIJwKRsTg/76frIf21u99FhfqeWkhfhZ5yTzGiJR6FquZ/tTrlq216MqICXO4QN8/p8OrP9foTS2+3FvWRWxk0pBEVZget0CtMP3PpZ+IC7gwp3wALhWtZwwY/64FUl9ZLZqId8RtbQBEQ=="},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\\nValidity","subject":"C = NL, O = Kingdom of the Netherlands, OU = Ministry of Health Welfare and Sport, serialNumber = 1, CN = Health DSC for vaccinations","notbefore":1622464052000,"notafter":1969360052000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsO\\nNkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw89w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDQjCCAuigAwIBAgIUU0JrRUBVL8DEW1z0jx8/+KAChLIwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDI3MzJaFw0zMjA1MjgxNDI3MzJaMIGTMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEkMCIGA1UEAwwbSGVhbHRoIERTQyBmb3IgdmFjY2luYXRpb25zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsONkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw896OCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBRVYJgZWfyzk3JJwB0HVdom7P7AxDArBgNVHRAEJDAigA8yMDIxMDUzMTE0MjczMlqBDzIwMjExMjI3MTQyNzMyWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAMMFkIuctSqsZbVBvE56YEZoxrF6m1n+F/IajFdNsRyeAiAC77Q6e6IOsDkPwq/ajPA5vslzeFETwcqNodsfAcJJEg=="},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\\nValidity","subject":"C = NL, O = Kingdom of the Netherlands, OU = Ministry of Health Welfare and Sport, serialNumber = 1, CN = Health DSC for test","notbefore":1622463583000,"notafter":1969359583000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERyOtPhis4M+vOSM+4AoqtBot3s7A\\nGrqQOSA2ZY3a25z5e4QlRpExd1S399CADvo5j0Nyqrm/azrhFIsSAc8FIg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDOTCCAuCgAwIBAgIUDWwu6rWJGF0zIQk/aKjdU0TXoQowCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE5NDNaFw0zMjA1MjgxNDE5NDNaMIGLMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEcMBoGA1UEAwwTSGVhbHRoIERTQyBmb3IgdGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEcjrT4YrODPrzkjPuAKKrQaLd7OwBq6kDkgNmWN2tuc+XuEJUaRMXdUt/fQgA76OY9Dcqq5v2s64RSLEgHPBSKjggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUJ6rwxau+2kWqjA+f1f8vUJSkiDkwKwYDVR0QBCQwIoAPMjAyMTA1MzExNDE5NDNagQ8yMDIxMTIyNzE0MTk0M1owDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0cAMEQCIFuevBHjahuLYCe1bOFCmy6V5FSfyJrVo5+hd0GCSDRMAiBdRK619VMnXNGf573r/PG6nVpeJ9aP/qpkmZG3TVGQDg=="},{"issuer":"CN = CSCA Health NL, serialNumber = 1, OU = Ministry of Health Welfare and Sport, O = Kingdom of the Netherlands, C = NL\\nValidity","subject":"C = NL, O = Kingdom of the Netherlands, OU = Ministry of Health Welfare and Sport, serialNumber = 1, CN = Health DSC for recovery","notbefore":1622463240000,"notafter":1969359240000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEiY+AGRWtd8tCUb5PQdEPaCWAZl0D\\n/SIOtcDH8R8yrp/JT8MmMxV/wM15WiZf09Eyy3iJXwFT+9YOCyrBA/Cejg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDPTCCAuSgAwIBAgIUSK4bme7ziau/JZkM80IOLM8iauswCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE0MDBaFw0zMjA1MjgxNDE0MDBaMIGPMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEgMB4GA1UEAwwXSGVhbHRoIERTQyBmb3IgcmVjb3ZlcnkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASJj4AZFa13y0JRvk9B0Q9oJYBmXQP9Ig61wMfxHzKun8lPwyYzFX/AzXlaJl/T0TLLeIlfAVP71g4LKsED8J6Oo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANOTEQwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEDMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFO9JANKEcntn4oTJgtch48rqSZMpMCsGA1UdEAQkMCKADzIwMjEwNTMxMTQxNDAwWoEPMjAyMTEyMjcxNDE0MDBaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiA9SzdZR+dN+yQ8+lUKzFCUl7noJ6YzB49zVsdYBsXJbQIgFvifkX+12Ib3SsdCb9TGkzQtD4ZxCLrx1T0ycsNwiUU="},{"issuer":"C = HU, ST = Budapest, L = Budapest, O = EESZT, CN = DGC_CSCA_HU_PRD_20210621_01\\nValidity","subject":"C = HU, ST = Budapest, L = Budapest, O = OKFO, CN = DGC_DSC_HU_PRD_20210628_01","notbefore":1624882534000,"notafter":1687954534000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadM\\nS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICnDCCAkGgAwIBAgIUa/gUnrKtSo4XzXVTPkV2APtPwXEwCgYIKoZIzj0EAwIwaTELMAkGA1UEBhMCSFUxETAPBgNVBAgMCEJ1ZGFwZXN0MREwDwYDVQQHDAhCdWRhcGVzdDEOMAwGA1UECgwFRUVTWlQxJDAiBgNVBAMMG0RHQ19DU0NBX0hVX1BSRF8yMDIxMDYyMV8wMTAeFw0yMTA2MjgxNDE1MzRaFw0yMzA2MjgxNDE1MzRaMGcxCzAJBgNVBAYTAkhVMREwDwYDVQQIDAhCdWRhcGVzdDERMA8GA1UEBwwIQnVkYXBlc3QxDTALBgNVBAoMBE9LRk8xIzAhBgNVBAMMGkRHQ19EU0NfSFVfUFJEXzIwMjEwNjI4XzAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadMS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/KOByDCBxTAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFLfwN2b/BblsB3wY92Sbxbc7QOmZMB8GA1UdIwQYMBaAFPHcUjbpr2UPGVKQEwKXLMGD4sDTMEEGA1UdHwQ6MDgwNqA0oDKGMGh0dHBzOi8vd3d3LmVlc3p0Lmdvdi5odS9jcmwvZGNjL0NTQ0FfUFJEXzAxLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCxhu4NSIKO9F8jlaxe3EqAIDoPAaF5A9+GPy03W0PpVQIhAL12JyQzJ9f7qnLapDMUSf6HD0+AMNHl9BjHZphNBUlu"},{"issuer":"C = SK, ST = SK, L = Bratislava, O = NCZI, OU = DGCOperations, CN = CSCA_DGC_SK_01\\nValidity","subject":"C = SK, L = Bratislava, O = NCZI, OU = DGCOperations, CN = DGC_01","notbefore":999381600000,"notafter":999295200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6qxT6sSK3TDheWFHTBkfveooRhtU\\nWqEqrELD9B7aAk7xjPS3MBETtmnWb4nRzBINvFwrLDxQCqTX8Jevp33c4Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICVTCCAfqgAwIBAgIUSfAlV5Ro7+hRqRa9kH4Un95XIGQwCgYIKoZIzj0EAwIwbzELMAkGA1UEBhMCU0sxCzAJBgNVBAgMAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMRcwFQYDVQQDDA5DU0NBX0RHQ19TS18wMTAeFw0yMDA5MDIwMDAwMDBaFw0yNDA5MDEwMDAwMDBaMFoxCzAJBgNVBAYTAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMQ8wDQYDVQQDDAZER0NfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATqrFPqxIrdMOF5YUdMGR+96ihGG1RaoSqsQsP0HtoCTvGM9LcwERO2adZvidHMEg28XCssPFAKpNfwl6+nfdzho4GIMIGFMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUj9izCT/z9ccQUX6CeZ0ns8Zu0SMwHwYDVR0jBBgwFoAUm9JYe8TeF7J1Gm8LZ2DfcBXXLHMwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNJADBGAiEA1jDNVMcnPoIOaGxeFRKaRZ8MrwR6xmmv0F0I0l5wKuUCIQDnaar37bg6T8i3rJp6KHQkJqJ1NSnc0Qltw1qghCJC0g=="},{"issuer":"C = LT, O = State Enterprise Centre of Registers, CN = LT_DGC_CSCA_1","subject":"C = LT, ST = Lithuania, O = Ministry of Health of The Republic of Lithuania, CN = LT_DGC_DSC_2","notbefore":1625083201000,"notafter":1688155201000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsIcppmCVhq96vMc4NtW8\\nX+yV6O1oC7hfKnewK1/pxfByqlVTPpETDLAjNq9knNQpCs7vGjadCbDAylsQRK7q\\nfU3sUUKamh6FgDhFo1dzC4mUHCy3XBL04XJie2eT/a6Wgjrn6NjEFk5M4Jl4N8u/\\nRbfaVxqaOjUM0hBfuzfZeL2LT30POqDHj1hcyod1fIbG4vv2Upqxe3OX/WLr+WzS\\nPbRkPwxcJjmYeNYODT0rEcd9VSzJpljaK+eDVwxT0wMRnCH2QLxdw8sR+oDYDTZB\\naabeHYyZ0CfYzSoBOZT3fVMAbjkVAl8GFyH8tUm4lMQbYEMbl/FkftcZQicaqvRd\\nQQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIFBDCCArigAwIBAgIGAXpe76SiMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYzMDIyMDAwMVoXDTIzMDYzMDIyMDAwMVowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCHKaZglYaverzHODbVvF/slejtaAu4Xyp3sCtf6cXwcqpVUz6REwywIzavZJzUKQrO7xo2nQmwwMpbEESu6n1N7FFCmpoehYA4RaNXcwuJlBwst1wS9OFyYntnk/2uloI65+jYxBZOTOCZeDfLv0W32lcamjo1DNIQX7s32Xi9i099Dzqgx49YXMqHdXyGxuL79lKasXtzl/1i6/ls0j20ZD8MXCY5mHjWDg09KxHHfVUsyaZY2ivng1cMU9MDEZwh9kC8XcPLEfqA2A02QWmm3h2MmdAn2M0qATmU931TAG45FQJfBhch/LVJuJTEG2BDG5fxZH7XGUInGqr0XUECAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUPZCkpW9sE+8wWf3UeVmVyI2yuKMwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQAh3n6+6+wrWjfQc0PYua+M5sB7QMU1K0jo3Hs+lwYiMEnIZNbdQgnuNAYHm4cf3Qy1YLt9XkMQdzwRz3kbSUQ4iythOby2GBEgCZ7fr17h/2o7VL9QC+hMUqsBXWYEQ1JuYz/L64X60sbIgt2qLy+oeA4WEVc1Yuz7DQsJG0qZRovVQvRy0cL7RHc6uiraaUxsKX7WFzNf6KlT1C1GeFJzcPSTclYMtHR3UgecUEaEenPciPMmUsJY5AOmZqxvJT62Nit9iuR18SieBNK+rJTrmxF4AV5Q7PE7Dhq5HBZhy7gE0UG1XfvSVSIcJcbMiDLxa+lXCFCVOf7drq2CaaIc6UQ0UXTeVmdbkJPid1/pvGLbIyL4UmOqxpzETcIRJKtvhF3UF1cD86/V/77qtZh0UeoCMGSdarZFvWB4As4PrEuvJB6Sfo1D++dCfQkfFEhQZO7wk1zLUB3Pqip2Io3eLn1oXMPxqtoYYH1vGv3HANhd8hVuO3ujYQgb9InLCnl7qPix5f8QrnRA4q72gpofoBnfGziMAyo9EKBib72waWaIpHi8Aw1XJntpHwld0gOV/cs/BquYdtqJpdW2FpoUvP4SbbxUVyDub+Uu2+Q9LKuIFlG4fqgRCUQ5NbgB5wmTxlYEc0xTb/VNICUtDSga4Fjeznm5l0oc4NoS6G4wzw=="},{"issuer":"C = LT, O = State Enterprise Centre of Registers, CN = LT_DGC_CSCA_1","subject":"C = LT, ST = Lithuania, O = Ministry of Health of The Republic of Lithuania, CN = LT_DGC_DSC_1","notbefore":991849826000,"notafter":991849826000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnhBpxzeGXNlQs7U+j/Av\\n1BUZ6CCgMR3bFLT4rRjO8KQ4IpAKqSCQ3j57MJqdumk3AUfHO5zhMZF4Awy0wqV3\\noFlyP49/56KKZxGARe5UkyfPjVbl8AZpLmgYoS/Ior53TLrwmT/+zvXynzFYbOi2\\nOtCtqanG+9OUhSVRrXEEB+56PpCltE31wemX1behxDuCbE4tuqyTYODFw9Le3dGC\\nbHWdjxi5W3XIUNo8j2u2PKue0KS76Xv0zAYItTgChgv7mM55/G109m4MfeU7AHah\\n43bJth8K8y+SxG3RYHskmNZ7sfn3w8w7WyW7D3/tKHcMt3hgIh9z3DuWeR1C296J\\nyQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIFBDCCArigAwIBAgIGAXni4GKHMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYwNjE5NTAyNloXDTIzMDYwNjE5NTAyNlowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ4Qacc3hlzZULO1Po/wL9QVGeggoDEd2xS0+K0YzvCkOCKQCqkgkN4+ezCanbppNwFHxzuc4TGReAMMtMKld6BZcj+Pf+eiimcRgEXuVJMnz41W5fAGaS5oGKEvyKK+d0y68Jk//s718p8xWGzotjrQrampxvvTlIUlUa1xBAfuej6QpbRN9cHpl9W3ocQ7gmxOLbqsk2DgxcPS3t3Rgmx1nY8YuVt1yFDaPI9rtjyrntCku+l79MwGCLU4AoYL+5jOefxtdPZuDH3lOwB2oeN2ybYfCvMvksRt0WB7JJjWe7H598PMO1sluw9/7Sh3DLd4YCIfc9w7lnkdQtveickCAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUwMNfEDstM4gYK8a8WQno8Qt1IZQwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQANsbkQ7P3OljNurVYmgB4g/76/tLMzbRExCuUltzxJW1zVZb4juuHNkmjIsUupaiYG8F8fQJpeRam2qgaPaPWqTYwn1lm8K+Ab4jE+9F6nyTJfvI2+BzOcGFsTUr+6If2YafJE9UMCeQWGP1kLX5srtQVTvb7fNHHnEvmijdKoqPv8Xcnkl6j53aZjeM6RrpSqrdtneHwquq9OWnjuKVDGZ1bDiIl52wjCQ+GLczPUtHai+qHNmhOibiT+JoT//fDb96vHlf40Y39zyxRFx0kx9zws8CbAPtvJOfWg6OjY50ARZRfixc6uFrCmnHtpzfcO3f+XwPBIBmvTjphZDGRqNjP46wqUv5vfpquIprhNef+jYi3k+719IBn5QuBNq4vJcMYHitK4WJ24TIxemq5YIXQYQct4t90V04Byhz7phox5P2rZJl3VBOSss7bGu64qc5Dh96joLLHFLChqqqDbhq7RI6Gl8Yn0ShUMg3WTbktTQ9dpGzYdH3wbbuMbzvGOYRTqTVGBH8eb9KJbgC0cDDhelHNXUcwn3Vvbdx3Y9KB2y50VTs9ZcawH52o4BuNwx3vO/L3Eq2EnkIZ2mobJDIGbBJUN2ttBim5muQxgEKns/QgNTpEZgBTkFjQ7mB7gIC8SHDDmU5wXe5aA3GN5/Gl5aUc3rHDmnZQKax63jw=="},{"issuer":"C = CY, ST = Nicosia, L = Nicosia, O = Ministry of Health, OU = IT Department, CN = CSCA_EUDCC_CY_01\\nValidity","subject":"C = CY, ST = Nicosia, L = Nicosia, O = Ministry of Health, OU = IT Department, CN = DSC_EUDCC_CY_01","notbefore":1624399200000,"notafter":1686734602000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7S/R06707Glu721qJqvxIFzQ2LSb\\nq9P2uu6nRKCBLsH5ryP3wXpggL6hGh080F462bGLTuI/hXrxEB2kR2Vjww==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICjzCCAjWgAwIBAgIJAPS0Vbm3L3MTMAoGCCqGSM49BAMCMIGBMQswCQYDVQQGEwJDWTEQMA4GA1UECAwHTmljb3NpYTEQMA4GA1UEBwwHTmljb3NpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRkwFwYDVQQDDBBDU0NBX0VVRENDX0NZXzAxMB4XDTIxMDYyNDExMjMyMloXDTIzMDYxNDExMjMyMlowgYAxCzAJBgNVBAYTAkNZMRAwDgYDVQQIDAdOaWNvc2lhMRAwDgYDVQQHDAdOaWNvc2lhMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxGDAWBgNVBAMMD0RTQ19FVURDQ19DWV8wMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO0v0dOu9Oxpbu9taiar8SBc0Ni0m6vT9rrup0SggS7B+a8j98F6YIC+oRodPNBeOtmxi07iP4V68RAdpEdlY8OjgZQwgZEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2NybC5ldWRjYy5nb3YuY3kvZHNjLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMCsGA1UdEAQkMCKADzIwMjEwNjIzMDAwMDAwWoEPMjAyMzA2MjMwMDAwMDBaMAoGCCqGSM49BAMCA0gAMEUCIQCL2pPCMNugzz3sGPDO02C6oMYvlkj6lfxPbckgmegv6QIgANPWEyptdWnK8y0WpU85VROr4cjobAkRNioquyCln00="},{"issuer":"C = NO, O = Norsk helsenett SF, CN = NO NHN CSCA PROD\\nValidity","subject":"C = NO, O = Norwegian Institute of Public Health, CN = DSC HN EU 2","notbefore":991898173000,"notafter":991898773000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErbWQM5hj5SeR23DzCV0TVKrFhfYs\\nmNVVSbPFxwyw4ZEfersZ3bp2h+rw2BhbLbzVHZIwWfnhaKZ72+JciUksFQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICLzCCAdWgAwIBAgITWQAAAAMkF9vUXhL/vwAAAAAAAzAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYwNzA5MTYxM1oXDTIzMDYwNzA5MjYxM1owUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEhOIEVVIDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASttZAzmGPlJ5HbcPMJXRNUqsWF9iyY1VVJs8XHDLDhkR96uxndunaH6vDYGFstvNUdkjBZ+eFopnvb4lyJSSwVo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBTjjLs+qOV9Ef2iKzss4qIJTpVymjAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIFoTcS0308Htrwu8gtsc1YX2679u/+UjB6i3iG4BvUGFAiEAirH6ggtWwXqXH94+kfwQ0A5q0pPGCdik4BIlnYmnpMk="},{"issuer":"C = NO, O = Norsk helsenett SF, CN = NO NHN CSCA PROD\\nValidity","subject":"C = NO, O = Norwegian Institute of Public Health, CN = DSC AN EU 5","notbefore":1623742241000,"notafter":1686814841000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfBeQBQBjyKpvjsCujqi15xnygRMy\\nhjNsEy198LzTYuB+Mje1lxIvPYkfO/PEHQFgA52gn26bHCXE75GWqq6UMw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICLzCCAdWgAwIBAgITWQAAAAY+BhnAubZsywAAAAAABjAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzA0MVoXDTIzMDYxNTA5NDA0MVowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR8F5AFAGPIqm+OwK6OqLXnGfKBEzKGM2wTLX3wvNNi4H4yN7WXEi89iR8788QdAWADnaCfbpscJcTvkZaqrpQzo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRQ+3DSiNYiK7x+Rm48SPxVU66ILzAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIQCpipDAPcRMuFYLkVIA2qxW3bikYzJzNxdvnqzDMMitFAIgFt8q+4FM53rl4bfBzwnQRpXDLaGc4bdKC0wcjBUHKyQ="},{"issuer":"C = NO, O = Norsk helsenett SF, CN = NO NHN CSCA PROD\\nValidity","subject":"C = NO, O = Norwegian Institute of Public Health, CN = DSC AN EU 4","notbefore":1623742226000,"notafter":1686814826000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElH46JUamhvfj2ocSTxw9Eq7nVdP9\\nOzBOxQ/zaWNXN5ucagla6nruNqfDiZXQMcz4gpZ6pcjtJl+xra2ATzZ9Pw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICMDCCAdWgAwIBAgITWQAAAAVu7yCnw/v4agAAAAAABTAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzAyNloXDTIzMDYxNTA5NDAyNlowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASUfjolRqaG9+PahxJPHD0SrudV0/07ME7FD/NpY1c3m5xqCVrqeu42p8OJldAxzPiClnqlyO0mX7GtrYBPNn0/o4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBSLtW/xwBSwzLlO3mNEzuueB3HOOTAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0kAMEYCIQDhu8xPp4rym01BCIlLAPB4UftU+yrPjxnsEPk+q4Bk4wIhAKVSgCN39hpSqqb5ErHWJdTp6+zJalGHg3Oj990zNYBY"},{"issuer":"C = SI, O = \\"NIJZ, National Institute of Public Health of Slovenia\\", OU = NIJZ eHealth, CN = Slovenian Digital Covid Certificate CSCA\\nValidity","subject":"C = SI, O = \\"NIJZ, National Institute of Public Health of Slovenia\\", OU = NIJZ eHealth, CN = Slovenian Digital Covid Certificate Signer","notbefore":1622188800000,"notafter":991634013000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEmxEg2iFDaol9DVnrqIY5zkPXrBA\\nNQlakmUfrBhogaDC2ZZ7fkQ2IcOJgEF4rQSyb34g5jDw88g7QaIknaLKMw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC6jCCApCgAwIBAgIUJUAGAXpxHsU1S82LcnISggTrZYcwCgYIKoZIzj0EAwIwgZcxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTEwLwYDVQQDDChTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBDU0NBMB4XDTIxMDYwNDA3NTMzM1oXDTIzMDYwNDA3NTMzM1owgZkxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTMwMQYDVQQDDCpTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQSbESDaIUNqiX0NWeuohjnOQ9esEA1CVqSZR+sGGiBoMLZlnt+RDYhw4mAQXitBLJvfiDmMPDzyDtBoiSdosozo4G1MIGyMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUhB9+YwGh9z/Z2AFAekINW9AqzMwwHwYDVR0jBBgwFoAU1u0NkxR1dJeR9jh6pZ04KsvRFV8wMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzArBgNVHRAEJDAigA8yMDIxMDUyODEwMDAwMFqBDzIwMjIwNTI4MTAwMDAwWjAKBggqhkjOPQQDAgNIADBFAiEAgD02EKWZhDUblN1geYhOR8UYvbz1kKcncPzq4Y7SgS0CIEsbjBaDw8vWDqXsbDg7gckdK6SuF16w9Uvr/peExozy"},{"issuer":"CN = Poland DGC RootCSCA 1, O = Ministry of Health, C = PL\\nValidity","subject":"CN = Poland Test DGC Service 1, OU = eHealth Centre, O = Ministry of Health, C = PL","notbefore":1622022625000,"notafter":1685094625000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERG4yI/SSv70zEtVjzIrn/CypR1e0\\nBZO5u8bIgltZicrg+992n2a7GucxK6zy91xq8F8XH7B0SJU75qkr8Z1d9A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIChjCCAiygAwIBAgIISPHH9eN/DsUwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTAyNVoXDTIzMDUyNjExNTAyNVowZzEiMCAGA1UEAwwZUG9sYW5kIFRlc3QgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAREbjIj9JK/vTMS1WPMiuf8LKlHV7QFk7m7xsiCW1mJyuD733afZrsa5zErrPL3XGrwXxcfsHRIlTvmqSvxnV30o4HeMIHbMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQUJtco+4DwjQXe7tYA2X0svBWc8aowKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTUwMjVagQ8yMDIyMDUyNjExNTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQD0aM2oui9agdjvs3W3CBnJzNj1QTn86txDT8z4f92U/QIgdfA1+c567xA4y/11vguxxe9nDHAtAAEpXe8FkupyFTk="},{"issuer":"CN = Poland DGC RootCSCA 1, O = Ministry of Health, C = PL\\nValidity","subject":"CN = Recovery DGC Service 1, OU = eHealth Centre, O = Ministry of Health, C = PL","notbefore":1622022589000,"notafter":1685094589000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdxvWMfuk6CHCbffZWPS6bRgVYglY\\ndED1NT1FCfXstUZ81AWmYOh6tbZgOF9OM1lzqdpFD1uOmEZ0A8XXYmkB1A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICgDCCAiagAwIBAgIINrcF73thXScwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNDk0OVoXDTIzMDUyNjExNDk0OVowZDEfMB0GA1UEAwwWUmVjb3ZlcnkgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3G9Yx+6ToIcJt99lY9LptGBViCVh0QPU1PUUJ9ey1RnzUBaZg6Hq1tmA4X04zWXOp2kUPW46YRnQDxddiaQHUo4HbMIHYMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQU88MJtD/tgeFEqpb+Her86lI3G3UwKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTQ5NDlagQ8yMDIyMDUyNjExNDk0OVowCwYDVR0PBAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQDA6URDSMLbEYaFP1V1bfDlZDE5aANs8FcjghZGnadrHwIgbCe6gwSV5PAMwGXMgtbf9ItPzgFxV67mZzvH+avXOck="},{"issuer":"CN = Poland DGC RootCSCA 1, O = Ministry of Health, C = PL\\nValidity","subject":"CN = Poland Vaccination DGC Service 1, OU = eHealth Centre, O = Ministry of Health, C = PL","notbefore":1622022790000,"notafter":1685094790000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3N\\nVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICiTCCAjCgAwIBAgIIPrgTduwYL84wCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTMxMFoXDTIzMDUyNjExNTMxMFowbjEpMCcGA1UEAwwgUG9sYW5kIFZhY2NpbmF0aW9uIERHQyBTZXJ2aWNlIDExFzAVBgNVBAsMDmVIZWFsdGggQ2VudHJlMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3NVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78qOB2zCB2DAfBgNVHSMEGDAWgBSReaLaaIESwKN0GqS63esPmeyLATAWBgNVHSUEDzANBgsrBgEEAY43j2UBAjBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vcDEuZXpkcm93aWUuZ292LnBsL2NjcDEvY3JsL0RHQ1Jvb3RDU0NBMS5jcmwwHQYDVR0OBBYEFEfkBAHCnTR6Ar66rg0lwacUkD9aMCsGA1UdEAQkMCKADzIwMjEwNTI2MTE1MzEwWoEPMjAyMjA1MjYxMTUzMTBaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiBrwE3IHj2Vjq71fA3jNBz/Hso3xXhVtPXa42JcfDJrvgIgLsib0ZAxm3ERXePd4Nlgvt+lISofEHlIi+CEBpJd5sE="},{"issuer":"C = FI, O = Vaestorekisterikeskus CA, OU = Sosiaali- ja terveydenhuollon palveluvarmenteet, CN = VRK CA for Social Welfare and Health Care Service Providers\\nValidity","subject":"C = FI, ST = Finland, L = Helsinki, O = Kansanelakelaitos, OU = Kanta, serialNumber = 1.2.246.556.12.21.2, CN = Todistuspalvelu","notbefore":1624006800000,"notafter":1687114799000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEepKcLfnTZIej9gSNJVmR8sRYMMgz\\ntnG9h0ZGWx7D1X1g32V/GtJc55HkoH+vqkbkhKJnvDBJ1JdsbkKKmBJb2Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIGOTCCBCGgAwIBAgIEHhL8kTANBgkqhkiG9w0BAQsFADCBsDELMAkGA1UEBhMCRkkxITAfBgNVBAoTGFZhZXN0b3Jla2lzdGVyaWtlc2t1cyBDQTE4MDYGA1UECxMvU29zaWFhbGktIGphIHRlcnZleWRlbmh1b2xsb24gcGFsdmVsdXZhcm1lbnRlZXQxRDBCBgNVBAMTO1ZSSyBDQSBmb3IgU29jaWFsIFdlbGZhcmUgYW5kIEhlYWx0aCBDYXJlIFNlcnZpY2UgUHJvdmlkZXJzMB4XDTIxMDYxODExMDAwMFoXDTIzMDYxODIwNTk1OVowgZYxCzAJBgNVBAYTAkZJMRAwDgYDVQQIDAdGaW5sYW5kMREwDwYDVQQHDAhIZWxzaW5raTEaMBgGA1UECgwRS2Fuc2FuZWxha2VsYWl0b3MxDjAMBgNVBAsMBUthbnRhMRwwGgYDVQQFExMxLjIuMjQ2LjU1Ni4xMi4yMS4yMRgwFgYDVQQDDA9Ub2Rpc3R1c3BhbHZlbHUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR6kpwt+dNkh6P2BI0lWZHyxFgwyDO2cb2HRkZbHsPVfWDfZX8a0lznkeSgf6+qRuSEome8MEnUl2xuQoqYElvZo4ICPDCCAjgwHwYDVR0jBBgwFoAUHSRFwQpHbGJL/GegaZ/8hZ+wccswHQYDVR0OBBYEFF3mgz1ib+Ym2Y1PFDsl8pSpZVw8MA4GA1UdDwEB/wQEAwIGwDCB1QYDVR0gBIHNMIHKMAgGBgQAj3oBBzCBvQYJKoF2hAUBCgoCMIGvMCYGCCsGAQUFBwIBFhpodHRwOi8vd3d3LmZpbmVpZC5maS9jcHM5LzCBhAYIKwYBBQUHAgIweBp2VmFybWVubmVwb2xpdGlpa2thIG9uIHNhYXRhdmlsbGEgLSBDZXJ0aWZpa2F0IHBvbGljeSBmaW5ucyAtIENlcnRpZmljYXRlIHBvbGljeSBpcyBhdmFpbGFibGUgaHR0cDovL3d3dy5maW5laWQuZmkvY3BzOTAgBgNVHREEGTAXgRV0ZWtuaW5lbnR1a2lAa2FudGEuZmkwDwYDVR0TAQH/BAUwAwEBADA4BgNVHR8EMTAvMC2gK6AphidodHRwOi8vcHJveHkuZmluZWlkLmZpL2NybC92cmtzaHNwYy5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzBsBggrBgEFBQcBAQRgMF4wMQYIKwYBBQUHMAKGJWh0dHA6Ly9wcm94eS5maW5laWQuZmkvY2EvdnJrc2hzcC5jcnQwKQYIKwYBBQUHMAGGHWh0dHA6Ly9vY3NwLmZpbmVpZC5maS92cmtzaHNwMA0GCSqGSIb3DQEBCwUAA4ICAQADw7+Mk+sN7E9d+DZ55TLlcB7o3SID+nCo4ujysSF7zHMuigFQZ2c/gXA3YvGNDLRGh9t3U6HBV80Qlio1vd+ndZUE79AzWzwXe7falcU2dkBcfAd1/iM2bo3PDac2CygtwOyCJlaVQ7Pyc3tFHWUBtpSij3/nyYzIZzxOLgs6qvRo9BhAFWXI5c4MvPUQsQh/lznpwm7GLNFfuSguilQUFJtznK6fwq5fookTyBy9YgA9kGPTKgaaFWFXAGjmtHmXZIrHK3byRoGmOfnQVEBm7dwWPvHGE37CyhPR0B9K/vXQLMr8qOnxD5dc34quLDYCxG6P99H0YGQY/N2ZMvSYjc//bHNfDUhAOC2zcqYl0Vmcz3bH3u2zFRaiqJ52LoLNQzj1+zmHR6EZ1s91iJ8tBFI+IM4ed2iMF3tahpzt4xM7HledA1BD9ARpDj37+ZS89hUxdLlUf9Q7qm3OL4cdnQ0lidlPgYjHBd7QTbpxYHWHH0U52ALzaAS8JhvSPYpw+bg2OGNA6TOnxXy1n4Jxu4hILnzmgIk/u/JoVVZJ6UiuDCkJF9n6Lvxq05rtYemVCQvNHBjyQzQ2M3CMDWWvAVBLDh/nf3iwiWrnKz3zL4enXzPFleT2uKhmP9VMTE+Omk6WlALrSuEWAUb20Z/ruCIRwJbiNO4fl2MOqFwooQ=="},{"issuer":"C = EE, O = Estonia, OU = Police and Border Guard Board, serialNumber = 01-2020, CN = CSCA_Estonia","subject":"CN = 02-2021_DCC, serialNumber = 02-2021, C = EE, O = Estonia, OU = Health and Welfare Information Systems Centre","notbefore":991993162000,"notafter":1007548762000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNf\\nd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEtzCCAm+gAwIBAgIBFjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDBwMQswCQYDVQQGEwJFRTEQMA4GA1UECgwHRXN0b25pYTEmMCQGA1UECwwdUG9saWNlIGFuZCBCb3JkZXIgR3VhcmQgQm9hcmQxEDAOBgNVBAUTBzAxLTIwMjAxFTATBgNVBAMMDENTQ0FfRXN0b25pYTAeFw0yMTA2MDgxMTM5MjJaFw0yMzEyMDUxMTM5MjJaMH8xFDASBgNVBAMWCzAyLTIwMjFfRENDMRAwDgYDVQQFEwcwMi0yMDIxMQswCQYDVQQGEwJFRTEQMA4GA1UEChMHRXN0b25pYTE2MDQGA1UECxMtSGVhbHRoIGFuZCBXZWxmYXJlIEluZm9ybWF0aW9uIFN5c3RlbXMgQ2VudHJlMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNfd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4KOBtzCBtDAdBgNVHQ4EFgQUrz4uJgDuJ+1fAWhBPQpmWJOqvUMwKwYDVR0QBCQwIoAPMjAyMTA2MDgxMTM5MjJagQ8yMDIxMTIwNTExMzkyMlowDgYDVR0PAQH/BAQDAgeAMDUGA1UdHwQuMCwwKqAooCaGJGh0dHBzOi8vd3d3LnBraS5wb2xpdHNlaS5lZS9jc2NhLmNybDAfBgNVHSMEGDAWgBRVq9JvhX7uQOBhSt+YPiu2k2xVvDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIAOCAgEAJ/OIJaw1Hg+yD7TH3YPG7ux6I4Fpx1QC1UPdIouG0HcHm8Lde+cB1IHlHc/C03jvVWnkbeH0mlpHLcStNICIgc8wfhOLS/yDvor/sYSNNX2v9OcJuxWmL6a2b3C5vuQJNr09HrSqv+1MDM/Qj7qRSraO9JSm59StyaoEdZXgK40eNnSxfRD2HFRpqr6aY+FB7ONH53/nCi/PT+fW6LB2hS+VtBUaWt1pShs2W8cahNJ/O6oujquKDhTj8uqdbhV9lug2JJ2/eLxWawEYVGC20HMrg9qwW971mR3UeGZmbJb0KyHr4b1LupC+sN88/A0CwCybS3x2Dla/OvPff7W1BqFyhEzBgDL1jB9iVF57erYGkoPd9oHKTIQdZ84u7JKLvi13xJGAR4KAsryrfP0Wcc29+TQJPZwedaauz96OUpC92hcu21cI5drikSF/Y9U96gGay0AWHM+DafA6NEUiWRMIFC3IaMjMr6FFwz4uq6KTK08YZoN/Dn09eVgrBcXqHR69FSJ00lwduDDamN9JHmy5wuLw22rDaXiymUYAkZZCc1PS2yJG8bIOfzYEAHAbESlJQ671MmudVDRM3PuvVICRp0jXZg/sNzT053rDpk0Z2nxKLcAVzPo0wRgnpih1zVchVTakNbWxwsOPftCSVnZjEhAHvq/GZ3ysssMNRUc="},{"issuer":"C = AT, O = BMSGPK, serialNumber = 001, CN = AT DGC CSCA 1\\nValidity","subject":"C = AT, O = BMSGPK, serialNumber = 001001, CN = AT DGC DSC 1","notbefore":991482324000,"notafter":1639662324000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYE24qIKmdcfRWUh2TqklkfZ6nyNB\\npX4VHeLMxfFl8rkQ8Zku0bcnH5OZXckkSt+tKs+FGZ9tKJ1VtNDmedlL6w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIB7zCCAZagAwIBAgIKAXnM+L47fmBcezAKBggqhkjOPQQDAjBEMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQwwCgYDVQQFEwMwMDExFjAUBgNVBAMMDUFUIERHQyBDU0NBIDEwHhcNMjEwNjAyMTM0NTI0WhcNMjMwNjAyMTM0NTI0WjBGMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQ8wDQYDVQQFEwYwMDEwMDExFTATBgNVBAMMDEFUIERHQyBEU0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGBNuKiCpnXH0VlIdk6pJZH2ep8jQaV+FR3izMXxZfK5EPGZLtG3Jx+TmV3JJErfrSrPhRmfbSidVbTQ5nnZS+ujbjBsMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUNs2smrjBhuR5Bqxl6teE1x1o2ycwHwYDVR0jBBgwFoAUHyKsHGUWKbTBmLNjb7/dCZ27e3swGgYDVR0QBBMwEYEPMjAyMTEyMTYxNDQ1MjRaMAoGCCqGSM49BAMCA0cAMEQCIDjXHnyzq3sTisMX1uY8xQ2ZqCRL2xmxtYOPhSZ9ZacYAiAqHUMOC7WNgq4h28n31WLc1mMPAYauWslSEwnXC79AGw=="},{"issuer":"C = BG, O = Ministry of Health, OU = Health Information System, CN = Bulgaria DGC CSCA 1\\nValidity","subject":"C = BG, L = Sofia, O = Ministry of Health, OU = Health Information System, CN = DGC DSC 1","notbefore":1622198511000,"notafter":1685270511000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmyxlsE2inBusapxY7LvRiPN0s+ds\\nHnakaaa9M/5NDZZTljSZCzeK77fWO9MFRcGCXrTQaXNE3FhkV4+a92hRaw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICpDCCAkugAwIBAgIURXVV/Gq2Irn6g/NqhBUW+K90bQowCgYIKoZIzj0EAwIwbDELMAkGA1UEBhMCQkcxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDEiMCAGA1UECwwZSGVhbHRoIEluZm9ybWF0aW9uIFN5c3RlbTEcMBoGA1UEAwwTQnVsZ2FyaWEgREdDIENTQ0EgMTAeFw0yMTA1MjgxMjQxNTFaFw0yMzA1MjgxMjQxNTFaMHIxCzAJBgNVBAYTAkJHMQ4wDAYDVQQHDAVTb2ZpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMSIwIAYDVQQLDBlIZWFsdGggSW5mb3JtYXRpb24gU3lzdGVtMRIwEAYDVQQDDAlER0MgRFNDIDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASbLGWwTaKcG6xqnFjsu9GI83Sz52wedqRppr0z/k0NllOWNJkLN4rvt9Y70wVFwYJetNBpc0TcWGRXj5r3aFFro4HEMIHBMAwGA1UdEwEB/wQCMAAwLAYDVR0fBCUwIzAhoB+gHYYbaHR0cDovL2NybC5oaXMuYmcvY3NjYTEuY3JsMB8GA1UdIwQYMBaAFFeMHPlme+J4tvwi8r3u4ZCmP7FWMB0GA1UdDgQWBBS+Zk3uynTTHvB0Mb9eAgWF0vA6DDAOBgNVHQ8BAf8EBAMCB4AwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNHADBEAiBjSeBvjP2L5USPCkCAZggp/d4Mw/PUGt17jQdEet7f1AIgFI0GKAKWwdMW+xDfZmN4XAv27Z20ryj6kFY08jdIlo0="},{"issuer":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-CSCA-PROD-20210608, emailAddress = webmaster@llv.li\\nValidity","subject":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-DSC-TEST-PROD-20210608, emailAddress = webmaster@llv.li","notbefore":991978920000,"notafter":991978920000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBnFUjr8FpfpVaVFtCUW7Yg6JBk/n\\n1TlJKEKpm/rZOvAEzKpwoTCpXpXPP1SPGhvQXzJ+i4dBQHgbdw2SDpcZmQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC8zCCApqgAwIBAgIIP9+ZLHC2FYQwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc0MjAwWhcNMjMwNjA4MDc0MjAwWjCBlDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEmMCQGA1UEAxMdREdDLU5CLURTQy1URVNULVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQGcVSOvwWl+lVpUW0JRbtiDokGT+fVOUkoQqmb+tk68ATMqnChMKlelc8/VI8aG9BfMn6Lh0FAeBt3DZIOlxmZo4HXMIHUMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFKdEjVLpS/bdKCMQdvpMviuko+rEMB8GA1UdIwQYMBaAFPSeeHwW3w57BFMM1pp4NCgcTd+FMA4GA1UdDwEB/wQEAwIHgDA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vY3JsLmxsdi5saS9ER0MtTkItQ1NDQS1QUk9ELTIwMjEwNjA4MB4GCWCGSAGG+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwFgYDVR0lBA8wDQYLKwYBBAGON49lAQEwCgYIKoZIzj0EAwIDRwAwRAIgTvGgYK3ij9bZvyKshoyDlYrQwXR7Btj0JIcpdq6NFqECIHd6ABGRr+NyKJjnlB7ZlYiJDfrERVPyF/q/Esmhv56P"},{"issuer":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-CSCA-PROD-20210608, emailAddress = webmaster@llv.li\\nValidity","subject":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-DSC-RECOVERY-PROD-20210608, emailAddress = webmaster@llv.li","notbefore":991979820000,"notafter":991979820000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9B\\nnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiAw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+TCCAp6gAwIBAgIIEVh/vC3chgUwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NzAwWhcNMjMwNjA4MDc1NzAwWjCBmDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEqMCgGA1UEAxMhREdDLU5CLURTQy1SRUNPVkVSWS1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9BnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiA6OB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBT+nyG6/wNEQ0TEblj8ow7u2bNB4DAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQDqBN9eq6TjWFWqhOkU9hvdA5hBacvUjL0Rt3i5dbV8kwIhAKhpBMwxHfoFXS7FwiuXOyj4zxZ60pPvPbxYGawo9OZI"},{"issuer":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-CSCA-PROD-20210608, emailAddress = webmaster@llv.li\\nValidity","subject":"C = LI, L = Vaduz, O = Liechtensteinische Landesverwaltung, CN = DGC-NB-DSC-VACCINATION-PROD-20210608, emailAddress = webmaster@llv.li","notbefore":991979640000,"notafter":991979640000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30f\\ntIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+jCCAqGgAwIBAgIIECN/LlZb7kkwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NDAwWhcNMjMwNjA4MDc1NDAwWjCBmzELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEtMCsGA1UEAxMkREdDLU5CLURTQy1WQUNDSU5BVElPTi1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30ftIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJKOB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQ3BvFcjsG6REaqwESNcZW1BjNTwDAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQECMAoGCCqGSM49BAMCA0cAMEQCIEEnfB5SgmatugluROBG4Q06cVdBulDo4S4vQJXO0lj2AiABMtLp5pBQA/cS9ksKlYkCuj/X2TTnM3yIPhngaEN/7A=="},{"issuer":"CN = CSCA Saude, serialNumber = 001, O = Republica Portuguesa - Portuguese Republic, C = PT\\nValidity","subject":"CN = DGC DS, serialNumber = 001, O = Republica Portuguesa - Portuguese Republic, C = PT","notbefore":1621606631000,"notafter":1684678630000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnjK8A8ato900a+wQ1IaxJyaeUGQ5\\nlwsYOCRlq47X4DKGe+P3L22utYcGTWtCekBqarcEzzSHH/X+s5aeEQgYYA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICKTCCAc6gAwIBAgIUb724peU13ddK2UiaXfZ8lJA3KpAwCgYIKoZIzj0EAwIwZTETMBEGA1UEAwwKQ1NDQSBTYXVkZTEMMAoGA1UEBRMDMDAxMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vlc2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMB4XDTIxMDUyMTE2MTcxMVoXDTIzMDUyMTE2MTcxMFowYTEPMA0GA1UEAwwGREdDIERTMQwwCgYDVQQFEwMwMDExMzAxBgNVBAoMKlJlcHVibGljYSBQb3J0dWd1ZXNhIC0gUG9ydHVndWVzZSBSZXB1YmxpYzELMAkGA1UEBhMCUFQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASeMrwDxq2j3TRr7BDUhrEnJp5QZDmXCxg4JGWrjtfgMoZ74/cvba61hwZNa0J6QGpqtwTPNIcf9f6zlp4RCBhgo2AwXjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFH4yvG+XLvlf69AVR2efiYzKIWgOMB0GA1UdDgQWBBQlYiuUojmAFDYjAmowakBbgeqeNTAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSQAwRgIhALe/oIGICdSXhdPOH7yFiPAUR/FhjdX+dsCyvU8Am4pLAiEA2HtA78ZO3jLs7BoIgh+xZ5fqaJbCIFMdwVzdJ/hCvWY="},{"issuer":"C = LV, O = VAS Latvijas Valsts radio un telev\\\\C4\\\\ABzijas centrs, 2.5.4.97 = NTRLV-40003011203, CN = Digital Green Certificate CSCA\\nValidity","subject":"CN = LV DSC 002, O = Nacion\\\\C4\\\\81lais vesel\\\\C4\\\\ABbas dienests, C = LV","notbefore":1624978495000,"notafter":1688050495000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5/m2YdN8L81Ajoi+2brFJbul628a\\nlfXRXU26t7hRYEvvsb74tSVm2Dm9cbuhrgFJ+/wXecdxh0tTSHCkMfB0hQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE4DCCAsigAwIBAgIQIVI8+7pCJKdg21Bf1/kMnDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA2MjkxNjU0NTVaFw0yMzA2MjkxNjU0NTVaME0xEzARBgNVBAMMCkxWIERTQyAwMDIxKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOf5tmHTfC/NQI6Ivtm6xSW7petvGpX10V1Nure4UWBL77G++LUlZtg5vXG7oa4BSfv8F3nHcYdLU0hwpDHwdIWjggFEMIIBQDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMB0GA1UdDgQWBBRJf+oSyT8lY9W8EXkcQkkbATciFzAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQA4+nXE7XWgwDhBUeldjoFgT1kRu6D5LzgFUsrTqicHFjGWXeXQKBnM9Dfx8iZBSY64O7FS/ompqIGxMFFZcBRYUgdaC9KQorL48w4b8WFCSQe0KUhDNqdlACWceq6/0tVtfek1M85bQ+ETU6InqY5sir7cZpyXFRXXXbdHqXjioC/EwfRo1/OB3wBX3/9HWcebIEskw4or2Z5p5BERPi2EQfp5cfv6BpH7tPYt0XJ7vA9WhsLLZGWPfKIU10iBF/DTGW5c2u/3yVCEbF215khpXx187kvXchIln4ZCbIiGkJrJRmnS6XZ++1c0BQpW4tdvUvxhuhqqln7GQPrOZK6HoOwFOjOC/k0oIkgYzJ+8xv7DA2PIXlOjSmkuZIqB4fr3DVKtnAVqWKKxnBMXqgyYlJenTUvp7OpUl+iYKqvSn7WX2F0wZQlYH+Gz1pGDdeyw4+cKZtUND6rFwHC9OxzeXM00wDp+G7O7IFBtwzaVrO/hRFGTG0W6vOv0Shc0lmVj++IzItVQx/SJRl9Lkfz58sQbRE8FphiUw4Wza3ad/eFafjDH3r0gtT/WA8aKUEp5j70kmb5XXIk9UMkk/T7385FRL3Q1ciqyoOVrRhL10wkEO+DDXuaqawXXtTz+3MDWX43TcE4wtQYDfw9i3tiDKkpzyRm43VvWoIDzGPDZ8g=="},{"issuer":"C = LV, O = VAS Latvijas Valsts radio un telev\\\\C4\\\\ABzijas centrs, 2.5.4.97 = NTRLV-40003011203, CN = Digital Green Certificate CSCA\\nValidity","subject":"CN = LV DSC 001, O = Nacion\\\\C4\\\\81lais vesel\\\\C4\\\\ABbas dienests, C = LV","notbefore":1622213400000,"notafter":1685285400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPUwE7htr+kD1eVnJBfRf5tx0kA17\\nqu4p1wRz3EKPxsJyyIznIqr9+HsnMd7k9ID/f0deqjP8dulzS2cFrVVnFQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE4zCCAsugAwIBAgIQfBNf4Ug47/BgsR84n0s5NDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA1MjgxNjUwMDBaFw0yMzA1MjgxNjUwMDBaME0xEzARBgNVBAMMCkxWIERTQyAwMDExKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD1MBO4ba/pA9XlZyQX0X+bcdJANe6ruKdcEc9xCj8bCcsiM5yKq/fh7JzHe5PSA/39HXqoz/Hbpc0tnBa1VZxWjggFHMIIBQzAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRivdWHr9big4cJkaojQ5INsdnuNDAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCCMrABdfqTT+3ux1VQ5RdqsFgArimneuPxVHSSitIqZ3rPwkS0EsTl5fUm6m5ZqxZreu5ChfGMzC9+/Z4OQfafuvVp0i/T5eD+oiN46g33bdcbxhaBg0i7++xpbRGKM5Wh9LuEW4iUq/wIxJBEJdYFGyvF2eP95mFMadKxcs8+aKdHWEix9CUgJozMEKsAslG81xYlSzVtCmAT5qraC9uz/qGTj/bYfivtMCEdChp7BWp7MP4hD3UG2rW+wxHzD1gYLy7NqqRG3+qPfolNM0SqliZederytEYoszv2zLoUleVGPq33XavqLTfCgPhOqhxPsnH0NLcuJkgSeq5yxg8FWQaRdIR6+BlENzVQ6LYNamsuBRxNZPDurKXL58rt/8dZoeEIn+qO92mo8oVrD4xDOHvjJJIuOqZ2zcODbvV/wBhCXjrTDBiUSe9tpeagE5UKfLN/pyh3TGzMzVyo5Tn30ihqXEIX6IawpZfLJNslZnEbDFi1/2K8b00t78x7pNTSFKyXou8VaabQVPspvuWsoW9D0nyig1ymLcCrSFpnCpf/GEKONRYI6Zi+LYpWzjI81/DzVyC49Gh25ZX6Z0k6ThgDq1J4qmiGU3I1W+VcQ+fNtTsCz9fv2Kdi62U0oYqmt3FAc2Vnt30yoKqgnSfyD4xhZSafHxz2ml0jFS1xzg=="},{"issuer":"C = DK, O = The Danish Health Data Authority, OU = The Danish Health Data Authority, CN = PROD_CSCA_DGC_DK_01, emailAddress = kontakt@sundhedsdata.dk\\nValidity","subject":"C = DK, O = The Danish Health Data Authority, OU = The Danish Health Data Authority, CN = PROD_DSC_DGC_DK_01, emailAddress = kontakt@sundhedsdata.dk","notbefore":1621410445000,"notafter":1684568845000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBmdgY/VORsecXxY/0xNNOzoJNRaV\\nnMMmHs5jiXrGvaDOy1jzDUOyvR++Jxgf0+YuGyp5/UAY0QIh75b+JQnlHA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICyzCCAnGgAwIBAgIBATAKBggqhkjOPQQDAjCBqTELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEcMBoGA1UEAwwTUFJPRF9DU0NBX0RHQ19ES18wMTEmMCQGCSqGSIb3DQEJARYXa29udGFrdEBzdW5kaGVkc2RhdGEuZGswHhcNMjEwNTE5MDk0NzI1WhcNMjMwNTIwMDk0NzI1WjCBqDELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEbMBkGA1UEAwwSUFJPRF9EU0NfREdDX0RLXzAxMSYwJAYJKoZIhvcNAQkBFhdrb250YWt0QHN1bmRoZWRzZGF0YS5kazBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAZnYGP1TkbHnF8WP9MTTTs6CTUWlZzDJh7OY4l6xr2gzstY8w1Dsr0fvicYH9PmLhsqef1AGNECIe+W/iUJ5RyjgYgwgYUwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBRXm2TEfVc2DPhwR/do67XrHDz4FzAfBgNVHSMEGDAWgBSb8DXRV1S8RJEI55z8etM+2ZXtSjAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMAoGCCqGSM49BAMCA0gAMEUCIB+IJn+8uICEfEnONXufysFrmtYBcTppGomj1Pr8WZF8AiEA0c3LZ3OShcmWfin0kwWzbf39irEMvJlF1idothpb0Eg="},{"issuer":"C = IT, O = Ministero della Salute, CN = Italy DGC CSCA 1\\nValidity","subject":"C = IT, O = Ministero della Salute, CN = Italy DGC DSC 1","notbefore":1620800297000,"notafter":1683871919000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/\\njbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehojw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEDzCCAfegAwIBAgIURldu5rsfrDeZtDBxrJ+SujMr2IswDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjEwNTEyMDgxODE3WhcNMjMwNTEyMDgxMTU5WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/jbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehoj6OBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFC4bAbCvpArrgZ0E+RrqS8V7TNNIMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAjxTeF7yhKz/3PKZ9+WfgZPaIzZvnO/nmuUartgVd3xuTPNtd5tuYRNS/1B78HNNk7fXiq5hH2q8xHF9yxYxExov2qFrfUMD5HOZzYKHZcjcWFNHvH6jx7qDCtb5PrOgSK5QUQzycR7MgWIFinoWwsWIrA1AJOwfUoi7v1aoWNMK1eHZmR3Y9LQ84qeE2yDk3jqEGjlJVCbgBp7O8emzy2KhWv3JyRZgTmFz7p6eRXDzUYHtJaufveIhkNM/U8p3S7egQegliIFMmufvEyZemD2BMvb97H9PQpuzeMwB8zcFbuZmNl42AFMQ2PhQe27pU0wFsDEqLe0ETb5eR3T9L6zdSrWldw6UuXoYV0/5fvjA55qCjAaLJ0qi16Ca/jt6iKuws/KKh9yr+FqZMnZUH2D2j2i8LBA67Ie0JoZPSojr8cwSTxQBdJFI722uczCj/Rt69Y4sLdV3hNQ2A9hHrXesyQslr0ez3UHHzDRFMVlOXWCayj3LIgvtfTjKrT1J+/3Vu9fvs1+CCJELuC9gtVLxMsdRc/A6/bvW4mAsyY78ROX27Bi8CxPN5IZbtiyjpmdfr2bufDcwhwzdwsdQQDoSiIF1LZqCn7sHBmUhzoPcBJdXFET58EKow0BWcerZzpvsVHcMTE2uuAUr/JUh1SBpoJCiMIRSl+XPoEA2qqYU="},{"issuer":"C = BE, O = eHealth - Belgium, CN = Belgium Covid19 Country Signing CA 01\\nValidity","subject":"C = BE, O = eHealth - Belgium, CN = Belgium Covid19 DSC 01","notbefore":1622103167000,"notafter":1685175167000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHo\\nznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICLTCCAdOgAwIBAgIIXf7//TpWDVgwCgYIKoZIzj0EAwIwWTELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMS4wLAYDVQQDDCVCZWxnaXVtIENvdmlkMTkgQ291bnRyeSBTaWduaW5nIENBIDAxMB4XDTIxMDUyNzEwMTI0N1oXDTIzMDUyNzEwMTI0N1owSjELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMR8wHQYDVQQDDBZCZWxnaXVtIENvdmlkMTkgRFNDIDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHoznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyKOBkzCBkDAdBgNVHQ4EFgQUr/AjSs5HKJsXQVr617Z6OO2Z9h8wHwYDVR0jBBgwFoAUMc4oJrfby5Fk9eLZSMutpWhvX9UwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NlcnQtYXBwLmJlL3Jldm9rZWRMaXN0L2RnY19jc2NhMDEuY3JsMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiA56koPekERN3iWtlXwuD8rwBgbsTkZj2Yqe8kL2doIbwIhAKYOJyyIeR4Po523PY5rniN4jaaSkgefulusXXKiEthU"},{"issuer":"CN = IS DGC CSCA 1, serialNumber = 1, OU = Directorate of Health, O = Directorate of Health, C = IS\\nValidity","subject":"CN = IS-DSC-1, serialNumber = 1, OU = Directorate of Health, O = Directorate of Health, C = IS","notbefore":1623399505000,"notafter":1686471505000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEO42X7C2X5bSDTnfSJwnk4qAjSk2m\\n11Cy/mmFqryl7J1MhrZDfy77ky4uS0o1iW181Ev51mAiW0J3i3SeKYeEOw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIBxTCCAWwCAgQRMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA2MTExMDE4MjVaFw0yMzA2MTExMDE4MjVaMGwxETAPBgNVBAMMCElTLURTQy0xMQowCAYDVQQFEwExMR4wHAYDVQQLDBVEaXJlY3RvcmF0ZSBvZiBIZWFsdGgxHjAcBgNVBAoMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDELMAkGA1UEBhMCSVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ7jZfsLZfltINOd9InCeTioCNKTabXULL+aYWqvKXsnUyGtkN/LvuTLi5LSjWJbXzUS/nWYCJbQneLdJ4ph4Q7MAoGCCqGSM49BAMCA0cAMEQCIFH/Cm+epgBJoz2S3eZaSPQLb2+3seJAEe2rgvrTcA4ZAiB6kXpC2VR9kqcv+HpDrbmx4Xq3PgTsQ5HxY1B5vepJ2g=="},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\\nValidity","subject":"CN = MLT-DSC-TEST-001, O = Government of Malta, C = MT","notbefore":1624226400000,"notafter":1687384799000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfapP8+QeyFgXVvY41YkQudlUUh7I\\nZBBpIdOJ34xYmxCEuHXbVUFqt/JSnbpVsGsd7ZBPUjL2u5Ks9moBMDEPLg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICfjCCAiOgAwIBAgIIejS7d37VXgEwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMTEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR9qk/z5B7IWBdW9jjViRC52VRSHshkEGkh04nfjFibEIS4ddtVQWq38lKdulWwax3tkE9SMva7kqz2agEwMQ8uo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFBR+KFEXuumXgCc5GWe258iqVrnfMHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNjIxMDAwMDAwWoEPMjAyMTEyMjEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDBnG+uLfchypa5wnmHMUi2aWEzWkbjoGgn5WsWmXffcAIhAKMusBaq7xzWVRMreNFvQsitrCaSaqDoQPvQuU72+SjN"},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\\nValidity","subject":"CN = MLT-DSC-VACCINATIONS-001, O = Government of Malta, C = MT","notbefore":1624226400000,"notafter":1687384799000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1q1nvgXLGIbibQuYQU+f+Xs+mcbP\\nmukAc3KQAyy/5KZH+n5F4bG4V0XIjphX093YxHh1JbHWOzuhKuan9FboyA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIChTCCAiugAwIBAgIIZEwDM+Nt1KMwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAxMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNatZ74FyxiG4m0LmEFPn/l7PpnGz5rpAHNykAMsv+SmR/p+ReGxuFdFyI6YV9Pd2MR4dSWx1js7oSrmp/RW6MijgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUuCrjQfrYEdJhuUeDcYx4JKEFOf4weQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA2MjEwMDAwMDBagQ8yMDIxMTIyMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIgZGBb0sNv06M+s8UpL7ziN/FU4+4AGksrMB2BIIkZDBwCIQDXwcZZQKZFsV55HpRm/AxXSBLXu4vPFR2Lx3rdqy0nFg=="},{"issuer":"C = SE, O = Swedish eHealth Agency, OU = Digital Covid Certificate Services, 2.5.4.97 = 202100-6552, CN = Swedish Digital Covid Certificate CSCA\\nValidity","subject":"C = SE, O = Swedish eHealth Agency, 2.5.4.97 = 202100-6552, CN = DCC Signer","notbefore":1624248451000,"notafter":1687321651000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaLOo1IGTspZSdr2BqdAvKjZjHfW/\\nZq8VDrI6nEhBlXUr3VCDlzjrXo5v6ix2qF9RCySJsHgZxUrqWQpFQbrbMw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDbzCCAtGgAwIBAgIRAKzjP3XRAzwsEbbfxdhLsK0wCgYIKoZIzj0EAwIwgaIxCzAJBgNVBAYTAlNFMR8wHQYDVQQKDBZTd2VkaXNoIGVIZWFsdGggQWdlbmN5MSswKQYDVQQLDCJEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIFNlcnZpY2VzMRQwEgYDVQRhDAsyMDIxMDAtNjU1MjEvMC0GA1UEAwwmU3dlZGlzaCBEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIENTQ0EwHhcNMjEwNjIxMDYwNzMxWhcNMjMwNjIxMDYyNzMxWjBZMQswCQYDVQQGEwJTRTEfMB0GA1UECgwWU3dlZGlzaCBlSGVhbHRoIEFnZW5jeTEUMBIGA1UEYQwLMjAyMTAwLTY1NTIxEzARBgNVBAMMCkRDQyBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARos6jUgZOyllJ2vYGp0C8qNmMd9b9mrxUOsjqcSEGVdSvdUIOXOOtejm/qLHaoX1ELJImweBnFSupZCkVButszo4IBLjCCASowCQYDVR0TBAIwADArBgNVHSMEJDAigCACTjrfhadUh3CvxKG9ilhNH5em/z3iqGdiDEqCy0uCujApBgNVHQ4EIgQgcumMkPVDerXtTa5yvY0Vp+vbcHWxuiqfF0N9MU0I6hEwDgYDVR0PAQH/BAQDAgOIMD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHBzOi8vZGdjZy5jb3ZpZGJldmlzLnNlL2NzY2EvY3JsL2NzY2EwMS5jcmwwRwYIKwYBBQUHAQEEOzA5MDcGCCsGAQUFBzABhitodHRwczovL2RnY2cuY292aWRiZXZpcy5zZS9jc2NhL29jc3AvY3NjYTAxMCsGA1UdEQQkMCKBIHJlZ2lzdHJhdG9yQGVoYWxzb215bmRpZ2hldGVuLnNlMAoGCCqGSM49BAMCA4GLADCBhwJCAJH08xci9Y2aQQcUJTnA+WIVSblO5K/ncVsYFd+jzM/m1chhh7CD75oN5twgWMl0aPMcjqaylNH/p82zPONaERqmAkEyCrbICfyUiio20CrFRmWS8KWq4LL8dkHapxgqVrG75/3xrmhAdxlH1WoC+Af1I602E6dsaCZw6mmMY0GPOEvGhw=="},{"issuer":"C = CZ, O = MZCR, CN = CZ DSC CSCA 1\\nValidity","subject":"C = CZ, O = MZCR, CN = CZ DSC 1","notbefore":989151840000,"notafter":989151840000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3l\\nAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKUw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0AzMA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDUwNjE0MjQwMFoXDTIzMDUwNjE0MjQwMFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3lAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKU6NdMFswHQYDVR0OBBYEFDReRuL4VneLcO8YqdVWn2+gpPl9MB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQAZpv8/b4k+QxliHeWKAiJ34OKMEYh8xn1Dc9+55f+h0NLY4ZSelGrf2SrJIt9yhomzjOQUARqiumbuSzZMMPUNzKIRsPSa1NkfRq7y3QehG+cuhKKdLYpWErjRdp97gubCVGLXld7+iuschYCwAztKnyPof94yPgAGkdCEnTNW1z6tc33E/Fnd59nF8/JBZdSTt2uRXxFY8plasmoRzdXYASwTUyXXheZcG+KNYJ5NxYSF3LJeF81ucJ6mWkAk+MwoJXVu7VVZ6pn51JPL+YyArV2FaN8lWs9QYW2XgCuUTm4IC9T/BgVKTstr6eGQiHLOEbyE8NmLond1Bzv27ClLXEBvL9lIqJ5hJFvVWbfpNPvJAjI4z3LA7DuYgQ3ws8mf0iMW+4aOkLCd7dv0HNcUPoHUOTelgcfAzEsZuajUcH3uGwgcs2wEBdW1KfqEP8L7bgwBGC+UGe1yeGM4k7OYOnGP2SMm3Gk+MrYaqW51Fun20bcXkagDxMJh06PpDm4="},{"issuer":"C = CZ, O = MZCR, CN = CZ DSC CSCA 1\\nValidity","subject":"C = CZ, O = MZCR, CN = CZ DSC 2","notbefore":1623312378000,"notafter":1686384378000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2k\\nYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0A0MA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDYxMDEwMDYxOFoXDTIzMDYxMDEwMDYxOFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2kYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOqNdMFswHQYDVR0OBBYEFAKjMTdShDzGev/eNqlHHzJIHdXVMB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQA3d3iNHRpsKWia1XiF5QQlKUFwcvDdtAlFhfmy99oI+ywmppys7xoeOrIKazIyAyZ3tNImPkcde0ARSvMmAzsr6T/BqxsV78htXzUoILy1z6Y8QZ8+RXcNmR79k9iqudKv5tWZ2S2ticNeo78WV6oB18oV5/hhLlkS/NQC5wZ5LJar+wEF1VaxkvG2GmooaODPgPbRutjStTamSu2Din4SRg8pIWlyCMy0qnzVDMzdYUsjvmC3myxzHevFSTs36hj1aiLxaeAmVTvCi39o6s0EBjyM8Yk2WHJS9k5EkvBcJcEx4z55RkBLKo4PJalQS1hJc62GFM3J3lyyKqecSZBn2xj5bM8UEkI+8ylHsF/D3vrjtu1MaxM9loTogvf8wu4S7DMP/yXBanmr2G4k132JbSX7goclMF2zel7kGAn2B2vUQrGM76Rqb4lkddPWCc+0dossH1zAvbOAo5+raC9xaUU00GC3wR7+30xjJtBw0JbDlSBk3l1xnGnvLehkqV8="},{"issuer":"C = IE, ST = Dublin, L = Dublin, O = Department of Health, OU = eHealth, CN = CSCA_DGC_IE_01\\nValidity","subject":"C = IE, ST = Dublin, L = Dublin, O = Department of Health, OU = eHealth, CN = DGC CSR","notbefore":1625053135000,"notafter":1688125135000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZ\\nwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICmDCCAj+gAwIBAgIJAIFaAnBKVQR3MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNjMwMTMzODU1WhcNMjMwNjMwMTMzODU1WjByMQswCQYDVQQGEwJJRTEPMA0GA1UECAwGRHVibGluMQ8wDQYDVQQHDAZEdWJsaW4xHTAbBgNVBAoMFERlcGFydG1lbnQgb2YgSGVhbHRoMRAwDgYDVQQLDAdlSGVhbHRoMRAwDgYDVQQDDAdER0MgQ1NSMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8aOBtzCBtDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFBgOd1YgJce5VyyJvYhrUDZbtTrZMB8GA1UdIwQYMBaAFFyHtiXkK1RtMZIunZlmC1W5b0xQMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9jZXJ0Lmdvdi5pZS9DUkwvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCICD5ra8JbGVJCDS7k9BeY1D8SlL8dv8eVH8mMXKFJek4AiEA5j7KharjyLlp7GtXvJeS+Ht+0dgaaesqpMNfuPH7TmI="},{"issuer":"C = RO, O = Ministerul Sanatatii, CN = AC Ministerul Sanatatii\\nValidity","subject":"C = RO, O = Ministerul Sanatatii, CN = BSC","notbefore":986076000000,"notafter":1782128159000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1Di\\nHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5cw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIElDCCAnygAwIBAgIFFhg4IyAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCUk8xHTAbBgNVBAoMFE1pbmlzdGVydWwgU2FuYXRhdGlpMSAwHgYDVQQDDBdBQyBNaW5pc3RlcnVsIFNhbmF0YXRpaTAeFw0yMTA2MTgxMzM1NTlaFw0yNjA2MjIxMzM1NTlaMDoxCzAJBgNVBAYTAlJPMR0wGwYDVQQKDBRNaW5pc3RlcnVsIFNhbmF0YXRpaTEMMAoGA1UEAwwDQlNDMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1DiHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5c6OCAVYwggFSMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUVyznYDPTSIjlI6bI6W+mgQc9JjwwHwYDVR0jBBgwFoAUMuKQDubF6PpGuKuAPWshl3a4SCEwGgYDVR0RBBMwEaQPMA0xCzAJBgNVBAcMAlJPMBoGA1UdEgQTMBGkDzANMQswCQYDVQQHDAJSTzAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vY2Euc3RzaXNwLnJvL2NybC9ER0MuY3JsMDMGA1UdJQQsMCoGDCsGAQQBAI43j2UBAQYMKwYBBAEAjjePZQECBgwrBgEEAQCON49lAQMwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vY2Euc3RzaXNwLnJvOjI1NjAwKwYDVR0QBCQwIoAPMjAyMTA0MDEwMDAwMDBagQ8yMDI2MDcwMTAwMDAwMFowDQYJKoZIhvcNAQELBQADggIBAFLRYkrv2Jp8XNhFJbMUviTLgPsDgcFDQwzdU4RH/KY3vjlIqxI/o40wct9QrN5FqRDTVIYD4Z4vLy8vhigh+DrdWfaBK+SGw11ZwigDem0Unjpqz0aFTotv8hry5n2jY/gf6YpU8pMd3t0dNF5Je5hrY1YLPJdt+BMWAizRwSAaa/OqTDP2blNqebrUTpsiXnxMXRiIHZl596RiSVsiwI/4PhU/HhfbMCg4kO8YUtgTBzWvBGohG0Znyi2bQFhwWEa1jZc2YfsIqWu4hwGz0zWOKMyx5ULZS3qkQ0EIHH2XrOx2ZxEc/5vZT27nTlKW0FCtBWeB36rLy/9dYbm+wjB86gvjYEQLAoFSY5GyCxVHaQE/HK8nFqM0oFq/4u0D7ZN9o6N6i4EfGhSRye0NCld3iaM9JdKmQNoCE9fd9OfMG9HlrQbIZvsjZ3btvtiC/R/LoyvrKz2EVbePZIVj03+GelCI0/jWq+w9YK3JIGhBfMjvCK/QnphOm0otuiuEY+0QYPKIx/c8zU5H4cEWp4NamsIRTpP13Yazh4NVjCNAU+J1rbcwGkJIRXHpL6QqL1WNt9zZSMXvw+vBoBq8yBqeLGlxPr+DFL79xhRBZnpp5mn2vUmR77k1745VwwGVMw/t9K28y5HpLcTp49f3wR0bDC+K0n/8PdcrhOXh+DTP"},{"issuer":"C = GR, CN = grnet.gr\\nValidity","subject":"C = GR, CN = grnet.gr","notbefore":1621874125000,"notafter":1684946125000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFP\\nen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICBjCCAaygAwIBAgIUKhlB7j/znUbHbqEQfJErud8AyPMwCgYIKoZIzj0EAwIwIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMB4XDTIxMDUyNDE4MzUyNVoXDTIzMDUyNDE4MzUyNVowIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFPen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEaOBwzCBwDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFKfRIrjTBVN2/tmTt8I32yrVl3DRMB8GA1UdIwQYMBaAFHAWm9K/JxbEXkf7XcqhKPGmpDK9MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHBzOi8vY3JsLmRnYy5zZXJ2aWNlcy5nb3YuZ3IvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiBdWbGhPUZmHxMV9eXlVEkLRY+zGdCsKVxgAMk2JYqU8AIhANkXZhiDVPD5IDiEw3Z3r0MdBxx7jy6rQzBj/K4OSgCl"},{"issuer":"CN = IS DGC CSCA 1, serialNumber = 1, OU = Directorate of Health, O = Directorate of Health, C = IS\\nValidity","subject":"CN = IS-DSC-testrec-1, serialNumber = 2, OU = Directorate of Health, O = Directorate of Health, C = IS","notbefore":994090248000,"notafter":994090248000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvwlwjQL5cId7nINp/A/b+XNY/Wzg\\nX9sIOde8ggZmZjXvIYhDhz7Fvs52ozmdqatDp3yIwPpr6nAMmaNTj0KdZg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIBzTCCAXQCAnBLMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA3MDIxODEwNDhaFw0yMzA3MDIxODEwNDhaMHQxGTAXBgNVBAMMEElTLURTQy10ZXN0cmVjLTExCjAIBgNVBAUTATIxHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABL8JcI0C+XCHe5yDafwP2/lzWP1s4F/bCDnXvIIGZmY17yGIQ4c+xb7OdqM5namrQ6d8iMD6a+pwDJmjU49CnWYwCgYIKoZIzj0EAwIDRwAwRAIgGuvSzxkT7wtN8UW9b8VavzmUbfC1Ojl99ZLu6iNNxbgCIHvbmygVJAEC9/GJgitb+1wQx5fHp/SEcfnkqPOqzFrn"},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\\nValidity","subject":"CN = MLT-DSC-RECOVERY-003, O = Government of Malta, C = MT","notbefore":993938400000,"notafter":994024799000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDON\\nYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICgTCCAiegAwIBAgIIFwgHF3EO4GkwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDMxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDONYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdaOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBR9uzKFO2DLNzUjBFGi4relF01KBTB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNIADBFAiEA99DvYsvpGT4tqpc0BMSCZeyZ7WMbt8ZM1PpabmhX8+cCIGCtDA+B0wWuPtFcN+xk/jBG5t30dSFLWQB43XkMQLug"},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\\nValidity","subject":"CN = MLT-DSC-TEST-002, O = Government of Malta, C = MT","notbefore":993938400000,"notafter":994024799000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4DsoM1rJFjHyQPcX6WKDWZkouBeh\\nfQGxqOgwFAYyRKXbrSuL+tkz8sJfo8djfsuQRLDSuZxud0IOsMB9YsTMpg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICfjCCAiOgAwIBAgIIJTfDXWft5tcwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMjEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATgOygzWskWMfJA9xfpYoNZmSi4F6F9AbGo6DAUBjJEpdutK4v62TPywl+jx2N+y5BEsNK5nG53Qg6wwH1ixMymo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFAdYsuwV3Y8H3ArMdIP4+88NQzj6MHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNzAxMDAwMDAwWoEPMjAyMjAxMDEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDKRMYKb/xaog2wAz78sg7nxPSSGvmXDSmGm3OAvywYtwIhAL1aS9k2jC5FGCnXL146W6TNwJOLZXhG0WELPuo1eaPF"},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\\nValidity","subject":"CN = MLT-DSC-VACCINATIONS-002, O = Government of Malta, C = MT","notbefore":993938400000,"notafter":994024799000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXj9fU7e4KVYe1VakCDZjYquHzkox\\nSHT8D33zeMDfyLbYi/GSVpKQtPwBPZlPx65r2Kb2warIK8BgxSgsQvMIag==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIChTCCAiugAwIBAgIIWGrho8bBjMowCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAyMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABF4/X1O3uClWHtVWpAg2Y2Krh85KMUh0/A9983jA38i22IvxklaSkLT8AT2ZT8eua9im9sGqyCvAYMUoLELzCGqjgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUOLKcvXnMDSbbBkkI/qyub1XWtNUweQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA3MDEwMDAwMDBagQ8yMDIyMDEwMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIhAPh/K0cwTwjugfRAGr47Ntn3O6iy5Dq6vtWdminY7WDrAiA/usc8ejitliKRcw9kWYkRTe5M8QTrGi0d8ISZfbWPzw=="},{"issuer":"C = MT, O = Government of Malta, CN = Malta DCC Signing CA\\nValidity","subject":"CN = MLT-DSC-RECOVERY-002, O = Government of Malta, C = MT","notbefore":993938400000,"notafter":994024799000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNx\\ndEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICgjCCAiegAwIBAgIIK+HdvXWkN9YwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDIxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNxdEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4aOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBQpm2iI+XG+uIq9XM2lqhKzZ5i5MDB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNJADBGAiEAvxNjK3WJhVQiCHwFKMfUClW0xa0ikhLAPaHirWYEgKMCIQDWDa7xu71vGhmTaIeKuMywD+f1yfPsaCzeEpr1yUITbA=="},{"issuer":"CN = Poland DGC RootCSCA 1, O = Ministry of Health, C = PL\\nValidity","subject":"CN = Poland Test DGC Service 1, OU = eHealth Centre, O = Ministry of Health, C = PL","notbefore":1622022625000,"notafter":1685094625000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERG4yI/SSv70zEtVjzIrn/CypR1e0\\nBZO5u8bIgltZicrg+992n2a7GucxK6zy91xq8F8XH7B0SJU75qkr8Z1d9A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIChjCCAiygAwIBAgIISPHH9eN/DsUwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTAyNVoXDTIzMDUyNjExNTAyNVowZzEiMCAGA1UEAwwZUG9sYW5kIFRlc3QgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAREbjIj9JK/vTMS1WPMiuf8LKlHV7QFk7m7xsiCW1mJyuD733afZrsa5zErrPL3XGrwXxcfsHRIlTvmqSvxnV30o4HeMIHbMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQUJtco+4DwjQXe7tYA2X0svBWc8aowKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTUwMjVagQ8yMDIyMDUyNjExNTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQD0aM2oui9agdjvs3W3CBnJzNj1QTn86txDT8z4f92U/QIgdfA1+c567xA4y/11vguxxe9nDHAtAAEpXe8FkupyFTk="},{"issuer":"C = IE, ST = Dublin, L = Dublin, O = Department of Health, OU = eHealth, CN = CSCA_DGC_IE_01\\nValidity","subject":"C = IE, O = Department of Health, CN = validateqr.gov.ie 2020135457912391810539600999694555","notbefore":994491081000,"notafter":1687851081000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETPE5ItolrGzLQLPqYxOT+orVmYJu\\nsLDsPWLwrK+bbJKBBtXBsrD2Py/osWYr9LF5ffORpzxmBUQmzp7K4uPiIw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICqjCCAlGgAwIBAgIJAIFaAnBKVQR5MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNzA3MDkzMTIxWhcNMjMwNjI3MDkzMTIxWjBrMQswCQYDVQQGEwJJRTEdMBsGA1UEChMURGVwYXJ0bWVudCBvZiBIZWFsdGgxPTA7BgNVBAMTNHZhbGlkYXRlcXIuZ292LmllIDIwMjAxMzU0NTc5MTIzOTE4MTA1Mzk2MDA5OTk2OTQ1NTUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARM8Tki2iWsbMtAs+pjE5P6itWZgm6wsOw9YvCsr5tskoEG1cGysPY/L+ixZiv0sXl985GnPGYFRCbOnsri4+Ijo4HQMIHNMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUT2vp7aj2JBxHrQ1vkpX4bZJoi10wHwYDVR0jBBgwFoAUXIe2JeQrVG0xki6dmWYLVblvTFAwSQYDVR0fBEIwQDA+oDygOoY4aHR0cHM6Ly9nZW4uZGlnaXRhbGNvdmlkY2VydGlmaWNhdGVzLmdvdi5pZS9hcGkvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCIAEEtN5Jh3HP0OTeYkyq0o4eaL0yGZnAbDhUUa0+StGTAiEA5trl/PUTtSwMNUSpc1UAA/viDLCW3FXyfx9cJaheFsQ="},{"issuer":"C = CH, 2.5.4.97 = VATCH-CHE-221.032.573, O = Bundesamt fuer Informatik und Telekommunikation (BIT), OU = Swiss Government PKI, CN = Swiss Government Regulated CA 02\\nValidity","subject":"C = CH, ST = Bern, L = K\\\\C3\\\\B6niz, businessCategory = Government Entity, 2.5.4.97 = NTRCH-CHE-467.023.568, O = Bundesamt f\\\\C3\\\\BCr Gesundheit (BAG), OU = GE-0220-BAG, OU = Taskforce BAG Covid-19, CN = COVID-certificate-CH-21-05","notbefore":1621497871000,"notafter":1716192271000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtk/51stJXU48RqD2lh4I\\ndsxFrjlJfmTCrLr3cQNEXkrEoI3OEV8NnotE1RjVmQrqLTT04oxpWlcbMolXtJBt\\nu3rOiLNwQvyVEbj/xSc6KT84Tp7GBo1P/kkunY+Vmab6HUCV/oGZYmsdiUP/OnTP\\nX6Wy6delDhnrgHIDti73/TSsG7Zl1V6km7+KIkjAkVCEDkkUD7uffd4G+GBZ0B9F\\n1KOT0IcFQNvDm0zlROVoGFlmPS8DWlrLHuIdMbB281uiDjcN+kNUt7rUyyj6TFgX\\n9WCgEB/5mQBMRaaXK1zeDTaNkmC2S7IWxhMQsMBXJyAdbD9AnQOZc6XRjBauO7gz\\n0wIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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"},{"issuer":"C = SM, ST = SM, L = City of San Marino, O = San Marino Innovation, OU = DGCOperations, CN = CSCA_DGC_SM_01\\nValidity","subject":"C = SM, ST = San Marino, L = City of San Marino, O = \\"Istituto per la Sicurezza Sociale \\", OU = DGCOperations, CN = DSC_CSR_DGC_SM_01, emailAddress = smdcc@iss.sm","notbefore":1623314759000,"notafter":1686386759000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEH2+GOTdCPhSUdDZmaM7hq/hRJkZC\\nd3wPyOwB8lS30s4N81r4XFpv1Yev+1bfB4A173DByhZyIKkdnZc/FfaAXQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDBTCCAqugAwIBAgIUeATFyjMaoiT84DKJmiNU72+mkVgwCgYIKoZIzj0EAwIwgYgxCzAJBgNVBAYTAlNNMQswCQYDVQQIDAJTTTEbMBkGA1UEBwwSQ2l0eSBvZiBTYW4gTWFyaW5vMR4wHAYDVQQKDBVTYW4gTWFyaW5vIElubm92YXRpb24xFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxFzAVBgNVBAMMDkNTQ0FfREdDX1NNXzAxMB4XDTIxMDYxMDEwNDU1OVoXDTIzMDYxMDEwNDU1OVowgb0xCzAJBgNVBAYTAlNNMRMwEQYDVQQIDApTYW4gTWFyaW5vMRswGQYDVQQHDBJDaXR5IG9mIFNhbiBNYXJpbm8xKzApBgNVBAoMIklzdGl0dXRvIHBlciBsYSBTaWN1cmV6emEgU29jaWFsZSAxFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxGjAYBgNVBAMMEURTQ19DU1JfREdDX1NNXzAxMRswGQYJKoZIhvcNAQkBFgxzbWRjY0Bpc3Muc20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQfb4Y5N0I+FJR0NmZozuGr+FEmRkJ3fA/I7AHyVLfSzg3zWvhcWm/Vh6/7Vt8HgDXvcMHKFnIgqR2dlz8V9oBdo4G7MIG4MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUXBEgxHdIds6E5XLz7K3xKYM1ZYcwHwYDVR0jBBgwFoAU3R4p+KmXTKHb/B2ZD1s9d0P+tlUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDovL3d3dy5zbWRjYy5zbS9DUkwvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiAqKNSdqhkdyZaMENowSdL1xU3Cq/A/u6PaO90ApEBVfgIhAOaFehZJJsm5o3LAhZ+q3bWBZHbB7nsFbTzvowcNyc2K"},{"issuer":"C = VA, O = STATO CITTA\\\\E2\\\\80\\\\99 DEL VATICANO, OU = DIREZIONE DI SANITA\' E IGIENE, CN = CSCA_DGC_VA_01\\nValidity","subject":"C = VA, O = STATO CITTA\\\\E2\\\\80\\\\99 DEL VATICANO, OU = DIREZIONE DI SANITA\' E IGIENE, CN = DSC_DGC_VA_01","notbefore":1624607220000,"notafter":1687679220000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEI6Q/krjPDaHJ2WsrBzR9sGYnYjFq\\nkflAAWhJgXbXt3RuUVfJt4c53N6v9J2BE3kPqCVl9FbYrwqQ0vZ+Ps5e+Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICbzCCAhSgAwIBAgIIc/6LARpWk7YwCgYIKoZIzj0EAwIwdDELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFzAVBgNVBAMMDkNTQ0FfREdDX1ZBXzAxMB4XDTIxMDYyNTA5NDcwMFoXDTIzMDYyNTA5NDcwMFowczELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFjAUBgNVBAMMDURTQ19ER0NfVkFfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQjpD+SuM8NocnZaysHNH2wZidiMWqR+UABaEmBdte3dG5RV8m3hznc3q/0nYETeQ+oJWX0VtivCpDS9n4+zl75o4GQMIGNMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFHjsdxdRG2UcVpJ5tq07/6TxOa+jMB8GA1UdIwQYMBaAFL2EdVekv64Aod98sSbpzAqLftAtMAsGA1UdDwQEAwIDuDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCedrxueUJyy8gthgOF7b2Fdv+chSkliDs1z2oOuRagWQIhAJh4vf8YxtkfC3MB+B9y1x2OwC2GRGFCtaF5WaB7K6F5"}]}');class u{static instance=new u;initialized=!1;certInfos=[];async getCertInfos(){if(!this.initialized){this.initialized=!0;const t=h.$;this.certInfos.push(...t)}return this.certInfos}}class l{protected_;unprotected;payload;signatures;static async decodeCborAsync(t){return new Promise(((e,r)=>{i.decodeFirst(t,(function(t,i){if(t)return r("failed cbor: "+t),null;e(i)}))}))}static async valueOf(t){return new Promise(((e,r)=>{0==t.indexOf("HC1:")&&(t=t.substring(4));const n=o().decode(t);a().inflate(n,(function(t,n){t?r("failed cose1: "+t):i.decodeFirst(n,(function(t,i){if(t)return void r("failed cose1: "+t);const n=i,o=n.value[0],s=n.value[1],a=n.value[2],h=n.value[3],u=new l(o,s,a,h);e(u)}))}))}))}constructor(t,e,r,i){this.protected_=t,this.unprotected=e,this.payload=r,this.signatures=i}makeDataForVerification(){const t=i.encode(["Signature1",this.protected_]),e=i.encode([this.payload]),r=new Uint8Array(t.length+e.length);for(let e=0,i=t.length;e{0==t.indexOf("HC1:")&&(t=t.substring(4));const n=o().decode(t);a().inflate(n,(function(t,n){const o=i;try{o.decodeFirst(n,(function(t,n){if(t)return void r(t);const o=n.toJSON().value[2];i.decodeFirst(o,(function(t,i){if(t)return void r(t);const n=i.get(-260).get(1);console.log(JSON.stringify(n,null,4)),e(n)}))}))}catch(t){r(t)}}))}))}static async validate(t,e){const r=await l.valueOf(t);if(!r)return null;const i=r.makeDataForVerification(),n=c.Buffer.from(r.encodeSignature(r.signatures)).toString("hex");var o=await u.instance.getCertInfos();if(e?.explicitCerts&&(o=[...e?.explicitCerts]),e?.certFilter){const t=o.length;(o=o.filter(e?.certFilter)).length!=t&&console.info("#"+(t-o.length)+" of "+t+" certifcates removed by filter")}for(let t=0,e=o.length;t=r.notbefore&&t<=r.notafter)return r}}catch(i){console.warn("unable to handle cert "+(t+1)+" of "+e+": "+r.subject+": "+i)}}throw"Not matching certificate found"}}"undefined"!=typeof window&&(window.EuDgc_parse=d.parse,window.EuDgc_validate=d.validate),console.log("eudgc.ts"),console.log("EUDGC by Scopevisio AG")},4927:(t,e,r)=>{function i(t){try{if(!r.g.localStorage)return!1}catch(t){return!1}var e=r.g.localStorage[t];return null!=e&&"true"===String(e).toLowerCase()}t.exports=function(t,e){if(i("noDeprecation"))return t;var r=!1;return function(){if(!r){if(i("throwDeprecation"))throw new Error(e);i("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}}},384:t=>{t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},5955:(t,e,r)=>{"use strict";var i=r(2584),n=r(8662),o=r(6430),s=r(5692);function a(t){return t.call.bind(t)}var h="undefined"!=typeof BigInt,u="undefined"!=typeof Symbol,l=a(Object.prototype.toString),c=a(Number.prototype.valueOf),f=a(String.prototype.valueOf),d=a(Boolean.prototype.valueOf);if(h)var g=a(BigInt.prototype.valueOf);if(u)var A=a(Symbol.prototype.valueOf);function M(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function p(t){return"[object Map]"===l(t)}function w(t){return"[object Set]"===l(t)}function B(t){return"[object WeakMap]"===l(t)}function m(t){return"[object WeakSet]"===l(t)}function E(t){return"[object ArrayBuffer]"===l(t)}function y(t){return"undefined"!=typeof ArrayBuffer&&(E.working?E(t):t instanceof ArrayBuffer)}function b(t){return"[object DataView]"===l(t)}function I(t){return"undefined"!=typeof DataView&&(b.working?b(t):t instanceof DataView)}e.isArgumentsObject=i,e.isGeneratorFunction=n,e.isTypedArray=s,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):s(t)||I(t)},e.isUint8Array=function(t){return"Uint8Array"===o(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===o(t)},e.isUint16Array=function(t){return"Uint16Array"===o(t)},e.isUint32Array=function(t){return"Uint32Array"===o(t)},e.isInt8Array=function(t){return"Int8Array"===o(t)},e.isInt16Array=function(t){return"Int16Array"===o(t)},e.isInt32Array=function(t){return"Int32Array"===o(t)},e.isFloat32Array=function(t){return"Float32Array"===o(t)},e.isFloat64Array=function(t){return"Float64Array"===o(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===o(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===o(t)},p.working="undefined"!=typeof Map&&p(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(p.working?p(t):t instanceof Map)},w.working="undefined"!=typeof Set&&w(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(w.working?w(t):t instanceof Set)},B.working="undefined"!=typeof WeakMap&&B(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(B.working?B(t):t instanceof WeakMap)},m.working="undefined"!=typeof WeakSet&&m(new WeakSet),e.isWeakSet=function(t){return m(t)},E.working="undefined"!=typeof ArrayBuffer&&E(new ArrayBuffer),e.isArrayBuffer=y,b.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&b(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=I;var v="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function C(t){return"[object SharedArrayBuffer]"===l(t)}function Q(t){return void 0!==v&&(void 0===C.working&&(C.working=C(new v)),C.working?C(t):t instanceof v)}function D(t){return M(t,c)}function N(t){return M(t,f)}function R(t){return M(t,d)}function G(t){return h&&M(t,g)}function U(t){return u&&M(t,A)}e.isSharedArrayBuffer=Q,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===l(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===l(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===l(t)},e.isGeneratorObject=function(t){return"[object Generator]"===l(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===l(t)},e.isNumberObject=D,e.isStringObject=N,e.isBooleanObject=R,e.isBigIntObject=G,e.isSymbolObject=U,e.isBoxedPrimitive=function(t){return D(t)||N(t)||R(t)||G(t)||U(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(y(t)||Q(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach((function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})}))},9539:(t,e,r)=>{var i=r(4155),n=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},i=0;i=n)return t;switch(t){case"%s":return String(i[r++]);case"%d":return Number(i[r++]);case"%j":try{return JSON.stringify(i[r++])}catch(t){return"[Circular]"}default:return t}})),a=i[r];r=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),M(r)?i.showHidden=r:r&&e._extend(i,r),m(i.showHidden)&&(i.showHidden=!1),m(i.depth)&&(i.depth=2),m(i.colors)&&(i.colors=!1),m(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=l),f(i,t,i.depth)}function l(t,e){var r=u.styles[e];return r?"["+u.colors[r][0]+"m"+t+"["+u.colors[r][1]+"m":t}function c(t,e){return t}function f(t,r,i){if(t.customInspect&&r&&v(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var n=r.inspect(i,t);return B(n)||(n=f(t,n,i)),n}var o=function(t,e){if(m(e))return t.stylize("undefined","undefined");if(B(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return w(e)?t.stylize(""+e,"number"):M(e)?t.stylize(""+e,"boolean"):p(e)?t.stylize("null","null"):void 0}(t,r);if(o)return o;var s=Object.keys(r),a=function(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),I(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return d(r);if(0===s.length){if(v(r)){var h=r.name?": "+r.name:"";return t.stylize("[Function"+h+"]","special")}if(E(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(b(r))return t.stylize(Date.prototype.toString.call(r),"date");if(I(r))return d(r)}var u,l="",c=!1,y=["{","}"];return A(r)&&(c=!0,y=["[","]"]),v(r)&&(l=" [Function"+(r.name?": "+r.name:"")+"]"),E(r)&&(l=" "+RegExp.prototype.toString.call(r)),b(r)&&(l=" "+Date.prototype.toUTCString.call(r)),I(r)&&(l=" "+d(r)),0!==s.length||c&&0!=r.length?i<0?E(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),u=c?function(t,e,r,i,n){for(var o=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(u,l,y)):y[0]+l+y[1]}function d(t){return"["+Error.prototype.toString.call(t)+"]"}function g(t,e,r,i,n,o){var s,a,h;if((h=Object.getOwnPropertyDescriptor(e,n)||{value:e[n]}).get?a=h.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):h.set&&(a=t.stylize("[Setter]","special")),R(i,n)||(s="["+n+"]"),a||(t.seen.indexOf(h.value)<0?(a=p(r)?f(t,h.value,null):f(t,h.value,r-1)).indexOf("\n")>-1&&(a=o?a.split("\n").map((function(t){return" "+t})).join("\n").substr(2):"\n"+a.split("\n").map((function(t){return" "+t})).join("\n")):a=t.stylize("[Circular]","special")),m(s)){if(o&&n.match(/^\d+$/))return a;(s=JSON.stringify(""+n)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function A(t){return Array.isArray(t)}function M(t){return"boolean"==typeof t}function p(t){return null===t}function w(t){return"number"==typeof t}function B(t){return"string"==typeof t}function m(t){return void 0===t}function E(t){return y(t)&&"[object RegExp]"===C(t)}function y(t){return"object"==typeof t&&null!==t}function b(t){return y(t)&&"[object Date]"===C(t)}function I(t){return y(t)&&("[object Error]"===C(t)||t instanceof Error)}function v(t){return"function"==typeof t}function C(t){return Object.prototype.toString.call(t)}function Q(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r=i.pid;s[t]=function(){var i=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,i)}}else s[t]=function(){};return s[t]},e.inspect=u,u.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},u.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(5955),e.isArray=A,e.isBoolean=M,e.isNull=p,e.isNullOrUndefined=function(t){return null==t},e.isNumber=w,e.isString=B,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=m,e.isRegExp=E,e.types.isRegExp=E,e.isObject=y,e.isDate=b,e.types.isDate=b,e.isError=I,e.types.isNativeError=I,e.isFunction=v,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(384);var D=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function N(){var t=new Date,e=[Q(t.getHours()),Q(t.getMinutes()),Q(t.getSeconds())].join(":");return[t.getDate(),D[t.getMonth()],e].join(" ")}function R(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){console.log("%s - %s",N(),e.format.apply(e,arguments))},e.inherits=r(5717),e._extend=function(t,e){if(!e||!y(e))return t;for(var r=Object.keys(e),i=r.length;i--;)t[r[i]]=e[r[i]];return t};var G="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function U(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(G&&t[G]){var e;if("function"!=typeof(e=t[G]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,G,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,i=new Promise((function(t,i){e=t,r=i})),n=[],o=0;o{"use strict";var i=r(9804),n=r(6314),o=r(1924),s=o("Object.prototype.toString"),a=r(1405)()&&"symbol"==typeof Symbol.toStringTag,h=n(),u=o("String.prototype.slice"),l={},c=r(4079),f=Object.getPrototypeOf;a&&c&&f&&i(h,(function(t){if("function"==typeof r.g[t]){var e=new r.g[t];if(!(Symbol.toStringTag in e))throw new EvalError("this engine has support for Symbol.toStringTag, but "+t+" does not have the property! Please report this.");var i=f(e),n=c(i,Symbol.toStringTag);if(!n){var o=f(i);n=c(o,Symbol.toStringTag)}l[t]=n.get}}));var d=r(5692);t.exports=function(t){return!!d(t)&&(a?function(t){var e=!1;return i(l,(function(r,i){if(!e)try{var n=r.call(t);n===i&&(e=n)}catch(t){}})),e}(t):u(s(t),8,-1))}},950:()=>{},6601:()=>{},9214:()=>{},8623:()=>{},7748:()=>{},5568:()=>{},6619:()=>{},7108:()=>{},2361:()=>{},4616:()=>{}},e={};function r(i){var n=e[i];if(void 0!==n)return n.exports;var o=e[i]={id:i,loaded:!1,exports:{}};return t[i].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var i in e)r.o(e,i)&&!r.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r(8677)})(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYXBpLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9idWZmZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9ub2RlLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2NvbnN0YW50cy9kZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9jb25zdGFudHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9kZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2RlY29kZXJzL3BlbS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL2Rlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZW5jb2RlcnMvcGVtLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc3NlcnQvYnVpbGQvYXNzZXJ0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Fzc2VydC9idWlsZC9pbnRlcm5hbC9hc3NlcnQvYXNzZXJ0aW9uX2Vycm9yLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Fzc2VydC9idWlsZC9pbnRlcm5hbC9lcnJvcnMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNzZXJ0L2J1aWxkL2ludGVybmFsL3V0aWwvY29tcGFyaXNvbnMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXZhaWxhYmxlLXR5cGVkLWFycmF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9iYXNlNDUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYmFzZTQ1L2xpYi9iYXNlNDUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYmFzZTY0LWpzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2JpZ251bWJlci5qcy9iaWdudW1iZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYm4uanMvbGliL2JuLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3JhbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYWVzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2F1dGhDaXBoZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9kZWNyeXB0ZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvZW5jcnlwdGVyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2doYXNoLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2luY3IzMi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jYmMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2ZiLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYjEuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2ZiOC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jdHIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvZWNiLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL29mYi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9zdHJlYW1DaXBoZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1jaXBoZXIvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWRlcy9tb2Rlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXJzYS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ24vYWxnb3MuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2Jyb3dzZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2Jyb3dzZXIvc2lnbi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ24vYnJvd3Nlci92ZXJpZnkuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL2xpYi9iaW5kaW5nLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktemxpYi9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnVmZmVyLXhvci9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9idWZmZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvY2FsbC1iaW5kL2NhbGxCb3VuZC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jYWxsLWJpbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvY2Jvci13ZWIvZGlzdC9jYm9yLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NpcGhlci1iYXNlL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1lY2RoL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvY3JlYXRlLWVjZGgvbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jcmVhdGUtaGFzaC9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1oYXNoL21kNS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jcmVhdGUtaG1hYy9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1obWFjL2xlZ2FjeS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tYnJvd3NlcmlmeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZWZpbmUtcHJvcGVydGllcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9jYmMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvY2lwaGVyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2Rlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9lZGUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kaWZmaWUtaGVsbG1hbi9saWIvZGguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbGliL2dlbmVyYXRlUHJpbWUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Jhc2UuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Vkd2FyZHMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9tb250LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9zaG9ydC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmVzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWMva2V5LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9zaWduYXR1cmUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9rZXkuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL3NpZ25hdHVyZS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvcHJlY29tcHV0ZWQvc2VjcDI1NmsxLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy91dGlscy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9ub2RlX21vZHVsZXMvYm4uanMvbGliL2JuLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VzLWFic3RyYWN0L2hlbHBlcnMvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VzNi1vYmplY3QtYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2V2ZW50cy9ldmVudHMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZXZwX2J5dGVzdG9rZXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZm9yZWFjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9mdW5jdGlvbi1iaW5kL2ltcGxlbWVudGF0aW9uLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Z1bmN0aW9uLWJpbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZ2V0LWludHJpbnNpYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXMtc3ltYm9scy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXMtc3ltYm9scy9zaGFtcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXMvc3JjL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2gtYmFzZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvY29tbW9uLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvaG1hYy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3JpcGVtZC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS8xLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLzIyNC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS8yNTYuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9zaGEvMzg0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLzUxMi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS9jb21tb24uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC91dGlscy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9obWFjLWRyYmcvbGliL2htYWMtZHJiZy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pZWVlNzU0L2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2luaGVyaXRzL2luaGVyaXRzX2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaXMtYXJndW1lbnRzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2lzLWdlbmVyYXRvci1mdW5jdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pcy1uYW4vaW1wbGVtZW50YXRpb24uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaXMtbmFuL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2lzLW5hbi9wb2x5ZmlsbC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pcy1uYW4vc2hpbS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pcy10eXBlZC1hcnJheS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9tZDUuanMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvbWlsbGVyLXJhYmluL2xpYi9tci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9taWxsZXItcmFiaW4vbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9taW5pbWFsaXN0aWMtYXNzZXJ0L2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL21pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHMvbGliL3V0aWxzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1pcy9pbXBsZW1lbnRhdGlvbi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9vYmplY3QtaXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvb2JqZWN0LWlzL3BvbHlmaWxsLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1pcy9zaGltLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1rZXlzL2ltcGxlbWVudGF0aW9uLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1rZXlzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1rZXlzL2lzQXJndW1lbnRzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3V0aWxzL2NvbW1vbi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2FkbGVyMzIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9jcmMzMi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2RlZmxhdGUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9pbmZmYXN0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvaW5mbGF0ZS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2luZnRyZWVzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvbWVzc2FnZXMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi90cmVlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL3pzdHJlYW0uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9hc24xLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvY2VydGlmaWNhdGUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9maXhQcm9jLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGJrZGYyL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi9hc3luYy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wYmtkZjIvbGliL2RlZmF1bHQtZW5jb2RpbmcuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi9wcmVjb25kaXRpb24uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi9zeW5jLWJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi90by1idWZmZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvbWdmLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L25vZGVfbW9kdWxlcy9ibi5qcy9saWIvYm4uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvcHJpdmF0ZURlY3J5cHQuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvcHVibGljRW5jcnlwdC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC93aXRoUHVibGljLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3hvci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yYW5kb21ieXRlcy9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JhbmRvbWZpbGwvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vZXJyb3JzLWJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX2R1cGxleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3JlYWRhYmxlLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9hc3luY19pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvYnVmZmVyX2xpc3QuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3kuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2VuZC1vZi1zdHJlYW0uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2Zyb20tYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvcGlwZWxpbmUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3N0YXRlLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9zdHJlYW0tYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vcmVhZGFibGUtYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yaXBlbWQxNjAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvc2FmZS1idWZmZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvc2FmZXItYnVmZmVyL3NhZmVyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9oYXNoLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9zaGEuanMvc2hhLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9zaGExLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9zaGEyMjQuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvc2hhLmpzL3NoYTI1Ni5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9zaGEuanMvc2hhMzg0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9zaGE1MTIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvc3RyZWFtLWJyb3dzZXJpZnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvc3RyaW5nX2RlY29kZXIvbGliL3N0cmluZ19kZWNvZGVyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vc3JjL3RydXN0bGlzdC50cyIsIndlYnBhY2s6Ly9ldWRnYy8uL3NyYy9jb3NlMS50cyIsIndlYnBhY2s6Ly9ldWRnYy8uL3NyYy9ldWRnYy50cyIsIndlYnBhY2s6Ly9ldWRnYy8uL3NyYy9pbmRleC50cyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy91dGlsLWRlcHJlY2F0ZS9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3V0aWwvc3VwcG9ydC9pc0J1ZmZlckJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvdXRpbC9zdXBwb3J0L3R5cGVzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3V0aWwvdXRpbC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy93aGljaC10eXBlZC1hcnJheS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9ldWRnYy93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9ldWRnYy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vZXVkZ2Mvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9ldWRnYy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL2V1ZGdjL3dlYnBhY2svcnVudGltZS9ub2RlIG1vZHVsZSBkZWNvcmF0b3IiLCJ3ZWJwYWNrOi8vZXVkZ2Mvd2VicGFjay9zdGFydHVwIl0sIm5hbWVzIjpbImFzbjEiLCJleHBvcnRzIiwiYmlnbnVtIiwiZGVmaW5lIiwiYmFzZSIsImNvbnN0YW50cyIsImRlY29kZXJzIiwiZW5jb2RlcnMiLCJpbmhlcml0cyIsIkVudGl0eSIsIm5hbWUiLCJib2R5IiwidGhpcyIsInByb3RvdHlwZSIsIl9jcmVhdGVOYW1lZCIsIkJhc2UiLCJHZW5lcmF0ZWQiLCJlbnRpdHkiLCJfaW5pdE5hbWVkIiwiY2FsbCIsIl9nZXREZWNvZGVyIiwiZW5jIiwiaGFzT3duUHJvcGVydHkiLCJkZWNvZGUiLCJkYXRhIiwib3B0aW9ucyIsIl9nZXRFbmNvZGVyIiwiZW5jb2RlIiwicmVwb3J0ZXIiLCJSZXBvcnRlciIsIkJ1ZmZlciIsIkRlY29kZXJCdWZmZXIiLCJpc0J1ZmZlciIsIm9mZnNldCIsImxlbmd0aCIsImVycm9yIiwiRW5jb2RlckJ1ZmZlciIsInZhbHVlIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwiaXRlbSIsImlzRW5jb2RlckJ1ZmZlciIsImJ5dGVMZW5ndGgiLCJpc0RlY29kZXJCdWZmZXIiLCJjb25zdHJ1Y3RvciIsInNhdmUiLCJyZXN0b3JlIiwiaXNFbXB0eSIsInJlYWRVSW50OCIsInNraXAiLCJyYXciLCJyZXMiLCJmYWlsIiwiYnl0ZXMiLCJfcmVwb3J0ZXJTdGF0ZSIsInNsaWNlIiwiam9pbiIsIm91dCIsImFsbG9jIiwiZm9yRWFjaCIsIndyaXRlIiwiY29weSIsIk5vZGUiLCJhc3NlcnQiLCJ0YWdzIiwibWV0aG9kcyIsImNvbmNhdCIsInBhcmVudCIsInN0YXRlIiwiX2Jhc2VTdGF0ZSIsImNoaWxkcmVuIiwidGFnIiwiYXJncyIsInJldmVyc2VBcmdzIiwiY2hvaWNlIiwib3B0aW9uYWwiLCJhbnkiLCJvYmoiLCJ1c2UiLCJ1c2VEZWNvZGVyIiwia2V5IiwiZXhwbGljaXQiLCJpbXBsaWNpdCIsImNvbnRhaW5zIiwiX3dyYXAiLCJtb2R1bGUiLCJzdGF0ZVByb3BzIiwiY2xvbmUiLCJjc3RhdGUiLCJwcm9wIiwibWV0aG9kIiwicHVzaCIsImFwcGx5IiwiYXJndW1lbnRzIiwiX2luaXQiLCJmaWx0ZXIiLCJjaGlsZCIsImVxdWFsIiwiX3VzZUFyZ3MiLCJhcmciLCJPYmplY3QiLCJrZXlzIiwiRXJyb3IiLCJkZWYiLCJ2YWwiLCJudW0iLCJuZXdLZXkiLCJfZGVjb2RlIiwiaW5wdXQiLCJ3cmFwUmVzdWx0IiwicHJldk9iaiIsInJlc3VsdCIsInByZXNlbnQiLCJwcmV2S2V5IiwiZW50ZXJLZXkiLCJfcGVla1RhZyIsImlzRXJyb3IiLCJfZGVjb2RlR2VuZXJpYyIsIl9kZWNvZGVDaG9pY2UiLCJlIiwiZW50ZXJPYmplY3QiLCJfZGVjb2RlVGFnIiwic3RhcnQiLCJ0cmFjayIsInBhdGgiLCJfZ2V0VXNlIiwibGVhdmVPYmplY3QiLCJleGl0S2V5IiwibGVhdmVLZXkiLCJfZGVjb2RlTGlzdCIsInRlc3QiLCJfZGVjb2RlU3RyIiwiX2RlY29kZU9iamlkIiwiX2RlY29kZVRpbWUiLCJfZGVjb2RlTnVsbCIsIl9kZWNvZGVCb29sIiwiX2RlY29kZUludCIsIl91c2UiLCJtYXRjaCIsInNvbWUiLCJub2RlIiwidHlwZSIsIl9jcmVhdGVFbmNvZGVyQnVmZmVyIiwiX2VuY29kZSIsIl9lbmNvZGVWYWx1ZSIsInVuZGVmaW5lZCIsIl9za2lwRGVmYXVsdCIsImNvbnRlbnQiLCJwcmltaXRpdmUiLCJfZW5jb2RlQ2hvaWNlIiwiX2VuY29kZVByaW1pdGl2ZSIsImNscyIsIl9lbmNvZGVDb21wb3NpdGUiLCJKU09OIiwic3RyaW5naWZ5IiwiX2VuY29kZVN0ciIsIl9lbmNvZGVPYmppZCIsIl9lbmNvZGVUaW1lIiwiX2VuY29kZU51bGwiLCJfZW5jb2RlSW50IiwiX2VuY29kZUJvb2wiLCJfaXNOdW1zdHIiLCJzdHIiLCJfaXNQcmludHN0ciIsImVycm9ycyIsIlJlcG9ydGVyRXJyb3IiLCJtc2ciLCJyZXRocm93IiwicGF0aExlbiIsImluZGV4IiwicHJldiIsIm5vdyIsImVyciIsImluaGVyaXRlZCIsImVsZW0iLCJtZXNzYWdlIiwic3RhY2siLCJwYXJ0aWFsIiwiY2FwdHVyZVN0YWNrVHJhY2UiLCJyZXZlcnNlIiwidGFnQ2xhc3MiLCJ0YWdDbGFzc0J5TmFtZSIsInRhZ0J5TmFtZSIsIl9yZXZlcnNlIiwiZGVyIiwiREVSRGVjb2RlciIsInRyZWUiLCJERVJOb2RlIiwiZGVyRGVjb2RlVGFnIiwiYnVmIiwib2N0IiwidGFnU3RyIiwiZGVyRGVjb2RlTGVuIiwibGVuIiwiaSIsImoiLCJidWZmZXIiLCJkZWNvZGVkVGFnIiwiX3NraXBVbnRpbEVuZCIsImRlY29kZXIiLCJwb3NzaWJsZUVuZCIsInVudXNlZCIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsInJlYWRVSW50MTZCRSIsIm51bXN0ciIsInRvU3RyaW5nIiwicHJpbnRzdHIiLCJ2YWx1ZXMiLCJyZWxhdGl2ZSIsImlkZW50aWZpZXJzIiwiaWRlbnQiLCJzdWJpZGVudCIsImZpcnN0Iiwic2Vjb25kIiwidG1wIiwieWVhciIsIm1vbiIsImRheSIsImhvdXIiLCJtaW4iLCJzZWMiLCJEYXRlIiwiVVRDIiwicGVtIiwiUEVNRGVjb2RlciIsImxpbmVzIiwic3BsaXQiLCJsYWJlbCIsInRvVXBwZXJDYXNlIiwicmUiLCJlbmQiLCJiYXNlNjQiLCJyZXBsYWNlIiwiZnJvbSIsIkRFUkVuY29kZXIiLCJ0d28iLCJlbmNvZGVkVGFnIiwiZW5jb2RlVGFnIiwiaGVhZGVyIiwibGVuT2N0ZXRzIiwid3JpdGVVSW50MTZCRSIsImNoYXJDb2RlQXQiLCJpZCIsInNwbGljZSIsInNpemUiLCJvYmppZCIsInRpbWUiLCJkYXRlIiwiZ2V0VVRDRnVsbFllYXIiLCJnZXRVVENNb250aCIsImdldFVUQ0RhdGUiLCJnZXRVVENIb3VycyIsImdldFVUQ01pbnV0ZXMiLCJnZXRVVENTZWNvbmRzIiwibnVtQXJyYXkiLCJ0b0FycmF5Iiwic2lnbiIsInVuc2hpZnQiLCJkYXRhQnVmZmVyIiwiZGVmYXVsdEJ1ZmZlciIsIlBFTUVuY29kZXIiLCJwIiwiY3RvciIsInN1cGVyQ3RvciIsInN1cGVyXyIsIlRlbXBDdG9yIiwiQk4iLCJudW1iZXIiLCJlbmRpYW4iLCJpc0JOIiwibmVnYXRpdmUiLCJ3b3JkcyIsInJlZCIsIndvcmRTaXplIiwid2luZG93IiwicGFyc2VIZXg0Qml0cyIsInN0cmluZyIsImMiLCJwYXJzZUhleEJ5dGUiLCJsb3dlckJvdW5kIiwiciIsInBhcnNlQmFzZSIsIm11bCIsIk1hdGgiLCJtYXgiLCJsZWZ0IiwicmlnaHQiLCJjbXAiLCJfaW5pdE51bWJlciIsIl9pbml0QXJyYXkiLCJfcGFyc2VIZXgiLCJfcGFyc2VCYXNlIiwiY2VpbCIsInciLCJvZmYiLCJzdHJpcCIsImxpbWJMZW4iLCJsaW1iUG93IiwidG90YWwiLCJtb2QiLCJ3b3JkIiwiaW11bG4iLCJfaWFkZG4iLCJwb3ciLCJkZXN0IiwiX2V4cGFuZCIsIl9ub3JtU2lnbiIsImluc3BlY3QiLCJ6ZXJvcyIsImdyb3VwU2l6ZXMiLCJncm91cEJhc2VzIiwic21hbGxNdWxUbyIsInNlbGYiLCJhIiwiYiIsImxvIiwiY2FycnkiLCJrIiwibmNhcnJ5IiwicndvcmQiLCJtYXhKIiwicGFkZGluZyIsImdyb3VwU2l6ZSIsImdyb3VwQmFzZSIsImlzWmVybyIsIm1vZG4iLCJpZGl2biIsInRvTnVtYmVyIiwicmV0IiwidG9KU09OIiwidG9CdWZmZXIiLCJ0b0FycmF5TGlrZSIsIkFycmF5VHlwZSIsInJlcUxlbmd0aCIsImxpdHRsZUVuZGlhbiIsInEiLCJhbmRsbiIsIml1c2hybiIsImNsejMyIiwiX2NvdW50Qml0cyIsInQiLCJfemVyb0JpdHMiLCJiaXRMZW5ndGgiLCJoaSIsInplcm9CaXRzIiwidG9Ud29zIiwid2lkdGgiLCJhYnMiLCJpbm90biIsImlhZGRuIiwiZnJvbVR3b3MiLCJ0ZXN0biIsIm5vdG4iLCJpbmVnIiwiaXNOZWciLCJuZWciLCJpdW9yIiwiaW9yIiwib3IiLCJ1b3IiLCJpdWFuZCIsImlhbmQiLCJhbmQiLCJ1YW5kIiwiaXV4b3IiLCJpeG9yIiwieG9yIiwidXhvciIsImJ5dGVzTmVlZGVkIiwiYml0c0xlZnQiLCJzZXRuIiwiYml0Iiwid2JpdCIsImlhZGQiLCJpc3ViIiwiYWRkIiwic3ViIiwiY29tYjEwTXVsVG8iLCJtaWQiLCJvIiwiYTAiLCJhbDAiLCJhaDAiLCJhMSIsImFsMSIsImFoMSIsImEyIiwiYWwyIiwiYWgyIiwiYTMiLCJhbDMiLCJhaDMiLCJhNCIsImFsNCIsImFoNCIsImE1IiwiYWw1IiwiYWg1IiwiYTYiLCJhbDYiLCJhaDYiLCJhNyIsImFsNyIsImFoNyIsImE4IiwiYWw4IiwiYWg4IiwiYTkiLCJhbDkiLCJhaDkiLCJiMCIsImJsMCIsImJoMCIsImIxIiwiYmwxIiwiYmgxIiwiYjIiLCJibDIiLCJiaDIiLCJiMyIsImJsMyIsImJoMyIsImI0IiwiYmw0IiwiYmg0IiwiYjUiLCJibDUiLCJiaDUiLCJiNiIsImJsNiIsImJoNiIsImI3IiwiYmw3IiwiYmg3IiwiYjgiLCJibDgiLCJiaDgiLCJiOSIsImJsOSIsImJoOSIsIncwIiwiaW11bCIsIncxIiwidzIiLCJ3MyIsInc0IiwidzUiLCJ3NiIsInc3IiwidzgiLCJ3OSIsIncxMCIsIncxMSIsIncxMiIsIncxMyIsIncxNCIsIncxNSIsIncxNiIsIncxNyIsIncxOCIsImp1bWJvTXVsVG8iLCJGRlRNIiwibXVscCIsIngiLCJ5IiwibXVsVG8iLCJobmNhcnJ5IiwiYmlnTXVsVG8iLCJtYWtlUkJUIiwiTiIsImwiLCJyZXZCaW4iLCJyYiIsInBlcm11dGUiLCJyYnQiLCJyd3MiLCJpd3MiLCJydHdzIiwiaXR3cyIsInRyYW5zZm9ybSIsInMiLCJydHdkZiIsImNvcyIsIlBJIiwiaXR3ZGYiLCJzaW4iLCJydHdkZl8iLCJpdHdkZl8iLCJpZSIsInJvIiwiaW8iLCJyeCIsImd1ZXNzTGVuMTNiIiwibiIsIm0iLCJvZGQiLCJjb25qdWdhdGUiLCJub3JtYWxpemUxM2IiLCJ3cyIsInJvdW5kIiwiY29udmVydDEzYiIsInN0dWIiLCJwaCIsIl8iLCJyd3N0IiwiaXdzdCIsIm5yd3MiLCJucndzdCIsIm5pd3N0Iiwicm13cyIsIm11bGYiLCJtdWxuIiwic3FyIiwiaXNxciIsInRvQml0QXJyYXkiLCJpdXNobG4iLCJiaXRzIiwiY2FycnlNYXNrIiwibmV3Q2FycnkiLCJpc2hsbiIsImhpbnQiLCJleHRlbmRlZCIsImgiLCJtYXNrIiwibWFza2VkV29yZHMiLCJpc2hybiIsInNobG4iLCJ1c2hsbiIsInNocm4iLCJ1c2hybiIsImltYXNrbiIsIm1hc2tuIiwiaXN1Ym4iLCJhZGRuIiwic3VibiIsImlhYnMiLCJfaXNobG5zdWJtdWwiLCJzaGlmdCIsIl93b3JkRGl2IiwibW9kZSIsImJoaSIsImRpZmYiLCJxaiIsImRpdiIsImRpdm1vZCIsInBvc2l0aXZlIiwiZGl2biIsInVtb2QiLCJkaXZSb3VuZCIsImRtIiwiaGFsZiIsInIyIiwiYWNjIiwiZWdjZCIsIkEiLCJCIiwiQyIsIkQiLCJnIiwiaXNFdmVuIiwieXAiLCJ4cCIsImltIiwiaXNPZGQiLCJqbSIsImdjZCIsIl9pbnZtcCIsIngxIiwieDIiLCJkZWx0YSIsImNtcG4iLCJpbnZtIiwiYmluY24iLCJ1Y21wIiwiZ3RuIiwiZ3QiLCJndGVuIiwiZ3RlIiwibHRuIiwibHQiLCJsdGVuIiwibHRlIiwiZXFuIiwiZXEiLCJSZWQiLCJ0b1JlZCIsImN0eCIsImNvbnZlcnRUbyIsIl9mb3JjZVJlZCIsImZyb21SZWQiLCJjb252ZXJ0RnJvbSIsImZvcmNlUmVkIiwicmVkQWRkIiwicmVkSUFkZCIsInJlZFN1YiIsInJlZElTdWIiLCJyZWRTaGwiLCJzaGwiLCJyZWRNdWwiLCJfdmVyaWZ5MiIsInJlZElNdWwiLCJyZWRTcXIiLCJfdmVyaWZ5MSIsInJlZElTcXIiLCJyZWRTcXJ0Iiwic3FydCIsInJlZEludm0iLCJyZWROZWciLCJyZWRQb3ciLCJwcmltZXMiLCJrMjU2IiwicDIyNCIsInAxOTIiLCJwMjU1MTkiLCJNUHJpbWUiLCJfdG1wIiwiSzI1NiIsIlAyMjQiLCJQMTkyIiwiUDI1NTE5IiwicHJpbWUiLCJfcHJpbWUiLCJNb250IiwiaW1vZCIsInJpbnYiLCJtaW52IiwiaXJlZHVjZSIsInJsZW4iLCJpbXVsSyIsIl9zdHJpcCIsIm91dHB1dCIsIm91dExlbiIsIm5leHQiLCJtb2QzIiwib25lIiwibk9uZSIsImxwb3ciLCJ6IiwiaW52Iiwid25kIiwiY3VycmVudCIsImN1cnJlbnRMZW4iLCJtb250IiwidSIsIl90eXBlb2YiLCJTeW1ib2wiLCJpdGVyYXRvciIsImlzRGVlcEVxdWFsIiwiaXNEZWVwU3RyaWN0RXF1YWwiLCJfcmVxdWlyZSRjb2RlcyIsImNvZGVzIiwiRVJSX0FNQklHVU9VU19BUkdVTUVOVCIsIkVSUl9JTlZBTElEX0FSR19UWVBFIiwiRVJSX0lOVkFMSURfQVJHX1ZBTFVFIiwiRVJSX0lOVkFMSURfUkVUVVJOX1ZBTFVFIiwiRVJSX01JU1NJTkdfQVJHUyIsIkFzc2VydGlvbkVycm9yIiwiX3JlcXVpcmUkdHlwZXMiLCJpc1Byb21pc2UiLCJpc1JlZ0V4cCIsIm9iamVjdEFzc2lnbiIsImFzc2lnbiIsIm9iamVjdElzIiwiaXMiLCJsYXp5TG9hZENvbXBhcmlzb24iLCJjb21wYXJpc29uIiwiTWFwIiwid2FybmVkIiwib2siLCJOT19FWENFUFRJT05fU0VOVElORUwiLCJpbm5lckZhaWwiLCJpbm5lck9rIiwiZm4iLCJhcmdMZW4iLCJnZW5lcmF0ZWRNZXNzYWdlIiwiYWN0dWFsIiwiZXhwZWN0ZWQiLCJvcGVyYXRvciIsInN0YWNrU3RhcnRGbiIsIl9sZW4iLCJfa2V5IiwiaW50ZXJuYWxNZXNzYWdlIiwiYXJnc0xlbiIsIndhcm4iLCJwcm9jZXNzIiwiZW1pdFdhcm5pbmciLCJjb25zb2xlIiwiYmluZCIsImVyckFyZ3MiLCJub3RFcXVhbCIsImRlZXBFcXVhbCIsIm5vdERlZXBFcXVhbCIsImRlZXBTdHJpY3RFcXVhbCIsIm5vdERlZXBTdHJpY3RFcXVhbCIsInN0cmljdEVxdWFsIiwibm90U3RyaWN0RXF1YWwiLCJDb21wYXJpc29uIiwiX3RoaXMiLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiVHlwZUVycm9yIiwiX2NsYXNzQ2FsbENoZWNrIiwiY29tcGFyZUV4Y2VwdGlvbktleSIsImV4cGVjdGVkRXhjZXB0aW9uIiwiaXNQcm90b3R5cGVPZiIsImdldEFjdHVhbCIsImNoZWNrSXNQcm9taXNlIiwidGhlbiIsImNhdGNoIiwid2FpdEZvckFjdHVhbCIsInByb21pc2VGbiIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVzdWx0UHJvbWlzZSIsImV4cGVjdHNFcnJvciIsImRldGFpbHMiLCJmblR5cGUiLCJleHBlY3RzTm9FcnJvciIsInN0cmljdCIsIl9sZW42IiwiX2tleTYiLCJ0aHJvd3MiLCJfbGVuMiIsIl9rZXkyIiwicmVqZWN0cyIsIl9sZW4zIiwiX2tleTMiLCJkb2VzTm90VGhyb3ciLCJfbGVuNCIsIl9rZXk0IiwiZG9lc05vdFJlamVjdCIsIl9sZW41IiwiX2tleTUiLCJpZkVycm9yIiwibmV3RXJyIiwib3JpZ1N0YWNrIiwidG1wMiIsInRtcDEiLCJwb3MiLCJpbmRleE9mIiwiX2RlZmluZVByb3BlcnR5IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJfZGVmaW5lUHJvcGVydGllcyIsInRhcmdldCIsInByb3BzIiwiZGVzY3JpcHRvciIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsIlJlZmVyZW5jZUVycm9yIiwiX3dyYXBOYXRpdmVTdXBlciIsIkNsYXNzIiwiX2NhY2hlIiwiRnVuY3Rpb24iLCJoYXMiLCJnZXQiLCJzZXQiLCJXcmFwcGVyIiwiX2NvbnN0cnVjdCIsIl9nZXRQcm90b3R5cGVPZiIsImNyZWF0ZSIsIl9zZXRQcm90b3R5cGVPZiIsImlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJzaGFtIiwiUHJveHkiLCJQYXJlbnQiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImdldFByb3RvdHlwZU9mIiwiZW5kc1dpdGgiLCJzZWFyY2giLCJ0aGlzX2xlbiIsInN1YnN0cmluZyIsImJsdWUiLCJncmVlbiIsIndoaXRlIiwia1JlYWRhYmxlT3BlcmF0b3IiLCJzdHJpY3RFcXVhbE9iamVjdCIsIm5vdFN0cmljdEVxdWFsT2JqZWN0Iiwibm90SWRlbnRpY2FsIiwiY29weUVycm9yIiwic291cmNlIiwiaW5zcGVjdFZhbHVlIiwiY29tcGFjdCIsImN1c3RvbUluc3BlY3QiLCJkZXB0aCIsIm1heEFycmF5TGVuZ3RoIiwiSW5maW5pdHkiLCJzaG93SGlkZGVuIiwiYnJlYWtMZW5ndGgiLCJzaG93UHJveHkiLCJzb3J0ZWQiLCJnZXR0ZXJzIiwiX0Vycm9yIiwibGltaXQiLCJzdGFja1RyYWNlTGltaXQiLCJzdGRlcnIiLCJpc1RUWSIsImdldENvbG9yRGVwdGgiLCJvdGhlciIsImxhc3RQb3MiLCJza2lwcGVkIiwiYWN0dWFsSW5zcGVjdGVkIiwiYWN0dWFsTGluZXMiLCJleHBlY3RlZExpbmVzIiwiaW5kaWNhdG9yIiwiaW5wdXRMZW5ndGgiLCJjb2x1bW5zIiwiY291bnQiLCJmbG9vciIsIm1heENvdW50IiwibG9nIiwicmVwZWF0IiwicG9wIiwibWF4TGluZXMiLCJfYWN0dWFsTGluZXMiLCJwcmludGVkTGluZXMiLCJza2lwcGVkTXNnIiwiY3VyIiwiZXhwZWN0ZWRMaW5lIiwiYWN0dWFsTGluZSIsImRpdmVyZ2luZ0xpbmVzIiwiY3JlYXRlRXJyRGlmZiIsIl9yZXMiLCJrbm93bk9wZXJhdG9ycyIsImNvZGUiLCJwcm90b1Byb3BzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiX2luaGVyaXRzIiwiY3VzdG9tIiwicmVjdXJzZVRpbWVzIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9vYmplY3RTcHJlYWQiLCJ1dGlsIiwiY3JlYXRlRXJyb3JUeXBlIiwiTm9kZUVycm9yIiwiX0Jhc2UiLCJhcmcxIiwiYXJnMiIsImFyZzMiLCJnZXRNZXNzYWdlIiwib25lT2YiLCJ0aGluZyIsImRldGVybWluZXIiLCJzdWJzdHIiLCJyZWFzb24iLCJpbnNwZWN0ZWQiLCJSYW5nZUVycm9yIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfYXJyIiwiX24iLCJfZCIsIl9lIiwiX3MiLCJfaSIsImRvbmUiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwicmVnZXhGbGFnc1N1cHBvcnRlZCIsImZsYWdzIiwiYXJyYXlGcm9tU2V0IiwiYXJyYXkiLCJhcnJheUZyb21NYXAiLCJvYmplY3RHZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJudW1iZXJJc05hTiIsIk51bWJlciIsImlzTmFOIiwidW5jdXJyeVRoaXMiLCJmIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJvYmplY3RUb1N0cmluZyIsImlzQW55QXJyYXlCdWZmZXIiLCJpc0FycmF5QnVmZmVyVmlldyIsImlzRGF0ZSIsImlzTWFwIiwiaXNTZXQiLCJpc05hdGl2ZUVycm9yIiwiaXNCb3hlZFByaW1pdGl2ZSIsImlzTnVtYmVyT2JqZWN0IiwiaXNTdHJpbmdPYmplY3QiLCJpc0Jvb2xlYW5PYmplY3QiLCJpc0JpZ0ludE9iamVjdCIsImlzU3ltYm9sT2JqZWN0IiwiaXNGbG9hdDMyQXJyYXkiLCJpc0Zsb2F0NjRBcnJheSIsImlzTm9uSW5kZXgiLCJnZXRPd25Ob25JbmRleFByb3BlcnRpZXMiLCJjb21wYXJlIiwiaW5uZXJEZWVwRXF1YWwiLCJ2YWwxIiwidmFsMiIsIm1lbW9zIiwiYnVmMSIsImJ1ZjIiLCJ2YWwxVGFnIiwia2V5czEiLCJrZXlzMiIsImtleUNoZWNrIiwiZ2V0VGltZSIsIlJlZ0V4cCIsIlVpbnQ4QXJyYXkiLCJieXRlT2Zmc2V0IiwiYXJlU2ltaWxhclR5cGVkQXJyYXlzIiwiYXJlU2ltaWxhckZsb2F0QXJyYXlzIiwiX2tleXMiLCJfa2V5czIiLCJ2YWx1ZU9mIiwiQm9vbGVhbiIsIkJpZ0ludCIsImlzRXF1YWxCb3hlZFByaW1pdGl2ZSIsImdldEVudW1lcmFibGVzIiwiaXRlcmF0aW9uVHlwZSIsImFLZXlzIiwiYktleXMiLCJzeW1ib2xLZXlzQSIsInN5bWJvbEtleXNCIiwiX3N5bWJvbEtleXNCIiwicG9zaXRpb24iLCJ2YWwyTWVtb0EiLCJ2YWwyTWVtb0IiLCJhcmVFcSIsIm9iakVxdWl2IiwiZGVsZXRlIiwic2V0SGFzRXF1YWxFbGVtZW50IiwibWVtbyIsInNldFZhbHVlcyIsImZpbmRMb29zZU1hdGNoaW5nUHJpbWl0aXZlcyIsInByaW0iLCJzZXRNaWdodEhhdmVMb29zZVByaW0iLCJhbHRWYWx1ZSIsIm1hcE1pZ2h0SGF2ZUxvb3NlUHJpbSIsImN1ckIiLCJtYXBIYXNFcXVhbEVudHJ5Iiwia2V5MSIsIml0ZW0xIiwia2V5MiIsImFWYWx1ZXMiLCJTZXQiLCJiVmFsdWVzIiwiX3ZhbCIsInNldEVxdWl2IiwiYUVudHJpZXMiLCJfYUVudHJpZXMkaSIsIml0ZW0yIiwiYkVudHJpZXMiLCJfaTIiLCJfYkVudHJpZXMkX2kiLCJtYXBFcXVpdiIsImtleXNBIiwicG9zc2libGVOYW1lcyIsImNoYXJzZXQiLCJyZXN0IiwiZCIsImI2NCIsImxlbnMiLCJnZXRMZW5zIiwidmFsaWRMZW4iLCJwbGFjZUhvbGRlcnNMZW4iLCJ0b0J5dGVBcnJheSIsIkFyciIsIl9ieXRlTGVuZ3RoIiwiY3VyQnl0ZSIsInJldkxvb2t1cCIsImZyb21CeXRlQXJyYXkiLCJ1aW50OCIsImV4dHJhQnl0ZXMiLCJwYXJ0cyIsIm1heENodW5rTGVuZ3RoIiwibGVuMiIsImVuY29kZUNodW5rIiwibG9va3VwIiwiZ2xvYmFsT2JqZWN0IiwiQmlnTnVtYmVyIiwiaXNOdW1lcmljIiwibWF0aGNlaWwiLCJtYXRoZmxvb3IiLCJiaWdudW1iZXJFcnJvciIsInRvb01hbnlEaWdpdHMiLCJCQVNFIiwiTE9HX0JBU0UiLCJNQVhfU0FGRV9JTlRFR0VSIiwiUE9XU19URU4iLCJTUVJUX0JBU0UiLCJNQVgiLCJiaXRGbG9vciIsImNvZWZmVG9TdHJpbmciLCJ4YyIsInljIiwiaW50Q2hlY2siLCJ0b0V4cG9uZW50aWFsIiwiY2hhckF0IiwidG9GaXhlZFBvaW50IiwienMiLCJjb25maWdPYmplY3QiLCJjb252ZXJ0QmFzZSIsInBhcnNlTnVtZXJpYyIsInBvdzJfNTMiLCJyYW5kb201M2JpdEludCIsImJhc2VQcmVmaXgiLCJkb3RBZnRlciIsImRvdEJlZm9yZSIsImlzSW5maW5pdHlPck5hTiIsIndoaXRlc3BhY2VPclBsdXMiLCJQIiwiT05FIiwiREVDSU1BTF9QTEFDRVMiLCJST1VORElOR19NT0RFIiwiVE9fRVhQX05FRyIsIlRPX0VYUF9QT1MiLCJNSU5fRVhQIiwiTUFYX0VYUCIsIkNSWVBUTyIsIk1PRFVMT19NT0RFIiwiUE9XX1BSRUNJU0lPTiIsIkZPUk1BVCIsInByZWZpeCIsInNlY29uZGFyeUdyb3VwU2l6ZSIsImdyb3VwU2VwYXJhdG9yIiwiZGVjaW1hbFNlcGFyYXRvciIsImZyYWN0aW9uR3JvdXBTaXplIiwiZnJhY3Rpb25Hcm91cFNlcGFyYXRvciIsInN1ZmZpeCIsIkFMUEhBQkVUIiwidiIsImFscGhhYmV0IiwiY2FzZUNoYW5nZWQiLCJpc051bSIsIl9pc0JpZ051bWJlciIsIkRFQlVHIiwidG9Mb3dlckNhc2UiLCJmb3JtYXQiLCJybSIsImMwIiwibmUiLCJtYXhPck1pbiIsIm5vcm1hbGlzZSIsInNkIiwibmkiLCJyZCIsInBvd3MxMCIsIlJPVU5EX1VQIiwiUk9VTkRfRE9XTiIsIlJPVU5EX0NFSUwiLCJST1VORF9GTE9PUiIsIlJPVU5EX0hBTEZfVVAiLCJST1VORF9IQUxGX0RPV04iLCJST1VORF9IQUxGX0VWRU4iLCJST1VORF9IQUxGX0NFSUwiLCJST1VORF9IQUxGX0ZMT09SIiwiRVVDTElEIiwiY29uZmlnIiwiY3J5cHRvIiwiZ2V0UmFuZG9tVmFsdWVzIiwicmFuZG9tQnl0ZXMiLCJFWFBPTkVOVElBTF9BVCIsIlJBTkdFIiwiaXNCaWdOdW1iZXIiLCJtYXhpbXVtIiwibWluaW11bSIsInJhbmRvbSIsImRwIiwicmFuZCIsIlVpbnQzMkFycmF5Iiwic3VtIiwicGx1cyIsImRlY2ltYWwiLCJ0b0Jhc2VPdXQiLCJiYXNlSW4iLCJiYXNlT3V0IiwiYXJyTCIsImNhbGxlcklzVG9TdHJpbmciLCJtdWx0aXBseSIsInRlbXAiLCJ4bG8iLCJ4aGkiLCJrbG8iLCJraGkiLCJhTCIsImJMIiwic3VidHJhY3QiLCJtb3JlIiwicHJvZCIsInByb2RMIiwicWMiLCJyZW0iLCJyZW1MIiwicmVtMCIsInhpIiwieEwiLCJ5YzAiLCJ5TCIsInl6IiwiTmFOIiwicDEiLCJwMiIsImFic29sdXRlVmFsdWUiLCJjb21wYXJlZFRvIiwiZGVjaW1hbFBsYWNlcyIsImRpdmlkZWRCeSIsImRpdmlkZWRUb0ludGVnZXJCeSIsImlkaXYiLCJleHBvbmVudGlhdGVkQnkiLCJpc01vZEV4cCIsIm5Jc0JpZyIsIm5Jc05lZyIsIm5Jc09kZCIsImlzSW50ZWdlciIsInRpbWVzIiwiaW50ZWdlclZhbHVlIiwiaXNFcXVhbFRvIiwiaXNGaW5pdGUiLCJpc0dyZWF0ZXJUaGFuIiwiaXNHcmVhdGVyVGhhbk9yRXF1YWxUbyIsImlzTGVzc1RoYW4iLCJpc0xlc3NUaGFuT3JFcXVhbFRvIiwiaXNOZWdhdGl2ZSIsImlzUG9zaXRpdmUiLCJtaW51cyIsInhMVHkiLCJ4ZSIsInllIiwibW9kdWxvIiwibXVsdGlwbGllZEJ5IiwieGNMIiwieWNMIiwieWxvIiwieWhpIiwiemMiLCJzcXJ0QmFzZSIsIm5lZ2F0ZWQiLCJwcmVjaXNpb24iLCJzaGlmdGVkQnkiLCJzcXVhcmVSb290IiwicmVwIiwidG9GaXhlZCIsInRvRm9ybWF0IiwiZzEiLCJnMiIsImludFBhcnQiLCJmcmFjdGlvblBhcnQiLCJpbnREaWdpdHMiLCJ0b0ZyYWN0aW9uIiwibWQiLCJkMCIsImQxIiwiZDIiLCJleHAiLCJuMCIsIm4xIiwidG9QcmVjaXNpb24iLCJtb3ZlIiwic3JjIiwiX21vdmUiLCJmb3IiLCJtb2RybiIsImFsbG9jVW5zYWZlIiwiYWxsb2NhdGUiLCJfdG9BcnJheUxpa2VMRSIsIl90b0FycmF5TGlrZUJFIiwiaXNOZWdOdW0iLCJSYW5kIiwiZ2VuZXJhdGUiLCJfcmFuZCIsImdldEJ5dGVzIiwiZ2V0Qnl0ZSIsIm1zQ3J5cHRvIiwiYXNVSW50MzJBcnJheSIsInJlYWRVSW50MzJCRSIsInNjcnViVmVjIiwiY3J5cHRCbG9jayIsIk0iLCJrZXlTY2hlZHVsZSIsIlNVQl9NSVgiLCJTQk9YIiwiblJvdW5kcyIsInQwIiwidDEiLCJ0MiIsInQzIiwiU1VCX01JWDAiLCJTVUJfTUlYMSIsIlNVQl9NSVgyIiwiU1VCX01JWDMiLCJzMCIsInMxIiwiczIiLCJzMyIsImtzUm93IiwiUkNPTiIsIkciLCJJTlZfU0JPWCIsIklOVl9TVUJfTUlYIiwic3giLCJ4NCIsIng4IiwiQUVTIiwiX3Jlc2V0IiwiYmxvY2tTaXplIiwia2V5U2l6ZSIsImtleVdvcmRzIiwia3NSb3dzIiwiaW52S2V5U2NoZWR1bGUiLCJpayIsImtzUiIsInR0IiwiX25Sb3VuZHMiLCJfa2V5U2NoZWR1bGUiLCJfaW52S2V5U2NoZWR1bGUiLCJlbmNyeXB0QmxvY2tSYXciLCJlbmNyeXB0QmxvY2siLCJ3cml0ZVVJbnQzMkJFIiwiZGVjcnlwdEJsb2NrIiwibTEiLCJzY3J1YiIsImFlcyIsIlRyYW5zZm9ybSIsIkdIQVNIIiwiaW5jcjMyIiwiU3RyZWFtQ2lwaGVyIiwiaXYiLCJkZWNyeXB0IiwiX2NpcGhlciIsImNrIiwiX2doYXNoIiwiX2ZpbklEIiwiZ2hhc2giLCJ0b1BhZCIsInVwZGF0ZSIsIml2Qml0cyIsInRhaWwiLCJ3cml0ZVVJbnRCRSIsImNhbGNJdiIsIl9wcmV2IiwiX3NlY0NhY2hlIiwiX2RlY3J5cHQiLCJfYWxlbiIsIl9tb2RlIiwiX2F1dGhUYWciLCJfY2FsbGVkIiwiX3VwZGF0ZSIsImNodW5rIiwicnVtcCIsImVuY3J5cHQiLCJfZmluYWwiLCJmaW5hbCIsInhvclRlc3QiLCJnZXRBdXRoVGFnIiwic2V0QXV0aFRhZyIsInNldEFBRCIsImNpcGhlcnMiLCJkZWNpcGhlcnMiLCJtb2RlcyIsImNyZWF0ZUNpcGhlciIsIkNpcGhlciIsImNyZWF0ZUNpcGhlcml2IiwiQ2lwaGVyaXYiLCJjcmVhdGVEZWNpcGhlciIsIkRlY2lwaGVyIiwiY3JlYXRlRGVjaXBoZXJpdiIsIkRlY2lwaGVyaXYiLCJsaXN0Q2lwaGVycyIsImdldENpcGhlcnMiLCJBdXRoQ2lwaGVyIiwiTU9ERVMiLCJlYnRrIiwiU3BsaXR0ZXIiLCJfbGFzdCIsIl9hdXRvcGFkZGluZyIsImNhY2hlIiwic3VpdGUiLCJwYXNzd29yZCIsImZsdXNoIiwibGFzdCIsInBhZGRlZCIsInVucGFkIiwic2V0QXV0b1BhZGRpbmciLCJzZXRUbyIsImF1dG9QYWRkaW5nIiwiUEFERElORyIsImVxdWFscyIsInBhZEJ1ZmYiLCJ3cml0ZVVJbnQ4IiwiWkVST0VTIiwiZnJvbUFycmF5IiwiYmxvY2siLCJfbXVsdGlwbHkiLCJsc2JWaSIsIlZpIiwiWmkiLCJhYmwiLCJibCIsInBhZCIsImVuY3J5cHRTdGFydCIsImVuY3J5cHRCeXRlIiwiYnl0ZVBhcmFtIiwic2hpZnRJbiIsImdldEJsb2NrIiwiY2h1bmtOdW0iLCJtb2RlTW9kdWxlcyIsIkVDQiIsIkNCQyIsIkNGQiIsIkNGQjgiLCJDRkIxIiwiT0ZCIiwiQ1RSIiwiR0NNIiwiREVTIiwiYWVzTW9kZXMiLCJkZXNNb2RlcyIsImtleUxlbiIsIml2TGVuIiwiQ2lwaGVyQmFzZSIsImRlcyIsImluc3RhbnRpYXRlIiwiRURFIiwib3B0cyIsIm1vZGVOYW1lIiwiX2RlcyIsImRlczMiLCJnZXRyIiwicHJpdiIsIm1vZHVsdXMiLCJwcmltZTEiLCJwcmltZTIiLCJjcnQiLCJibGluZHMiLCJibGluZGVyIiwicHVibGljRXhwb25lbnQiLCJ1bmJsaW5kZXIiLCJibGluZCIsImJsaW5kZWQiLCJjMSIsImMyIiwicWludiIsImNvZWZmaWNpZW50IiwiZXhwb25lbnQxIiwibTIiLCJleHBvbmVudDIiLCJjcmVhdGVIYXNoIiwic3RyZWFtIiwidmVyaWZ5IiwiYWxnb3JpdGhtcyIsIlNpZ24iLCJhbGdvcml0aG0iLCJXcml0YWJsZSIsIl9oYXNoVHlwZSIsImhhc2giLCJfaGFzaCIsIl90YWciLCJfc2lnblR5cGUiLCJWZXJpZnkiLCJjcmVhdGVTaWduIiwiY3JlYXRlVmVyaWZ5IiwiX3dyaXRlIiwiZGlnZXN0Iiwic2lnIiwiY3JlYXRlSG1hYyIsIkVDIiwicGFyc2VLZXlzIiwiY3VydmVzIiwiZ2V0S2V5IiwiYWxnbyIsImhsZW4iLCJoYml0cyIsImJpdHMyaW50IiwiYml0czJvY3RldHMiLCJmaWxsIiwib2JpdHMiLCJtYWtlS2V5Iiwia3YiLCJtYWtlUiIsImhhc2hUeXBlIiwic2lnblR5cGUiLCJjdXJ2ZSIsImN1cnZlSWQiLCJrZXlGcm9tUHJpdmF0ZSIsInByaXZhdGVLZXkiLCJ0b0RFUiIsImVjU2lnbiIsInBhcmFtcyIsInByaXZfa2V5IiwiSCIsImRzYVNpZ24iLCJjaGVja1ZhbHVlIiwicHViIiwicHVia2V5Iiwic3ViamVjdFByaXZhdGVLZXkiLCJlY1ZlcmlmeSIsInB1Yl9rZXkiLCJ1bnBhY2tlZCIsInNpZ25hdHVyZSIsIm1vbnRwIiwiZHNhVmVyaWZ5IiwicGFkTnVtIiwiWnN0cmVhbSIsInpsaWJfZGVmbGF0ZSIsInpsaWJfaW5mbGF0ZSIsIlpsaWIiLCJERUZMQVRFIiwiVU5aSVAiLCJkaWN0aW9uYXJ5IiwiaW5pdF9kb25lIiwibGV2ZWwiLCJtZW1MZXZlbCIsInN0cmF0ZWd5Iiwid2luZG93Qml0cyIsIndyaXRlX2luX3Byb2dyZXNzIiwicGVuZGluZ19jbG9zZSIsImd6aXBfaWRfYnl0ZXNfcmVhZCIsIk5PTkUiLCJJTkZMQVRFIiwiR1pJUCIsIkdVTlpJUCIsIkRFRkxBVEVSQVciLCJJTkZMQVRFUkFXIiwiY2xvc2UiLCJkZWZsYXRlRW5kIiwic3RybSIsImluZmxhdGVFbmQiLCJpbl9vZmYiLCJpbl9sZW4iLCJvdXRfb2ZmIiwib3V0X2xlbiIsIndyaXRlU3luYyIsImFzeW5jIiwiWl9OT19GTFVTSCIsIlpfUEFSVElBTF9GTFVTSCIsIlpfU1lOQ19GTFVTSCIsIlpfRlVMTF9GTFVTSCIsIlpfRklOSVNIIiwiWl9CTE9DSyIsImF2YWlsX2luIiwibmV4dF9pbiIsImF2YWlsX291dCIsIm5leHRfb3V0IiwiX3Byb2Nlc3MiLCJfY2hlY2tFcnJvciIsIl9hZnRlclN5bmMiLCJuZXh0VGljayIsIl9hZnRlciIsIm5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUiLCJkZWZsYXRlIiwiaW5mbGF0ZSIsIlpfTkVFRF9ESUNUIiwiaW5mbGF0ZVNldERpY3Rpb25hcnkiLCJaX09LIiwiWl9EQVRBX0VSUk9SIiwiWl9TVFJFQU1fRU5EIiwicmVzZXQiLCJaX0JVRl9FUlJPUiIsIl9lcnJvciIsImNhbGxiYWNrIiwib25lcnJvciIsImluaXQiLCJaX0ZJTFRFUkVEIiwiWl9IVUZGTUFOX09OTFkiLCJaX1JMRSIsIlpfRklYRUQiLCJaX0RFRkFVTFRfU1RSQVRFR1kiLCJfc2V0RGljdGlvbmFyeSIsImRlZmxhdGVJbml0MiIsIlpfREVGTEFURUQiLCJpbmZsYXRlSW5pdDIiLCJkZWZsYXRlU2V0RGljdGlvbmFyeSIsImRlZmxhdGVSZXNldCIsImluZmxhdGVSZXNldCIsImJpbmRpbmciLCJrTWF4TGVuZ3RoIiwia1JhbmdlRXJyb3JNZXNzYWdlIiwiWl9NSU5fV0lORE9XQklUUyIsIlpfTUFYX1dJTkRPV0JJVFMiLCJaX0RFRkFVTFRfV0lORE9XQklUUyIsIlpfTUlOX0NIVU5LIiwiWl9NQVhfQ0hVTksiLCJaX0RFRkFVTFRfQ0hVTksiLCJaX01JTl9NRU1MRVZFTCIsIlpfTUFYX01FTUxFVkVMIiwiWl9ERUZBVUxUX01FTUxFVkVMIiwiWl9NSU5fTEVWRUwiLCJaX01BWF9MRVZFTCIsIlpfREVGQVVMVF9MRVZFTCIsIlpfREVGQVVMVF9DT01QUkVTU0lPTiIsImJrZXlzIiwiYmsiLCJia2V5IiwiWl9FUlJOTyIsIlpfU1RSRUFNX0VSUk9SIiwiWl9NRU1fRVJST1IiLCJaX1ZFUlNJT05fRVJST1IiLCJja2V5cyIsImNrZXkiLCJ6bGliQnVmZmVyIiwiZW5naW5lIiwiYnVmZmVycyIsIm5yZWFkIiwiZmxvdyIsInJlYWQiLCJvbmNlIiwib25FbmQiLCJvbiIsInJlbW92ZUxpc3RlbmVyIiwiemxpYkJ1ZmZlclN5bmMiLCJmbHVzaEZsYWciLCJfZmluaXNoRmx1c2hGbGFnIiwiX3Byb2Nlc3NDaHVuayIsIkRlZmxhdGUiLCJJbmZsYXRlIiwiR3ppcCIsIkd1bnppcCIsIkRlZmxhdGVSYXciLCJJbmZsYXRlUmF3IiwiVW56aXAiLCJpc1ZhbGlkRmx1c2hGbGFnIiwiZmxhZyIsIl9vcHRzIiwiX2NodW5rU2l6ZSIsImNodW5rU2l6ZSIsImZpbmlzaEZsdXNoIiwiX2ZsdXNoRmxhZyIsIl9oYW5kbGUiLCJfaGFkRXJyb3IiLCJlcnJubyIsIl9jbG9zZSIsImVtaXQiLCJfYnVmZmVyIiwiX29mZnNldCIsIl9sZXZlbCIsIl9zdHJhdGVneSIsImVtaXRDbG9zZU5UIiwiZnJlZXplIiwiY3JlYXRlRGVmbGF0ZSIsImNyZWF0ZUluZmxhdGUiLCJjcmVhdGVEZWZsYXRlUmF3IiwiY3JlYXRlSW5mbGF0ZVJhdyIsImNyZWF0ZUd6aXAiLCJjcmVhdGVHdW56aXAiLCJjcmVhdGVVbnppcCIsImRlZmxhdGVTeW5jIiwiZ3ppcCIsImd6aXBTeW5jIiwiZGVmbGF0ZVJhdyIsImRlZmxhdGVSYXdTeW5jIiwidW56aXAiLCJ1bnppcFN5bmMiLCJpbmZsYXRlU3luYyIsImd1bnppcCIsImd1bnppcFN5bmMiLCJpbmZsYXRlUmF3IiwiaW5mbGF0ZVJhd1N5bmMiLCJfZmx1c2giLCJfdHJhbnNmb3JtIiwia2luZCIsIl90aGlzMiIsIl93cml0YWJsZVN0YXRlIiwiZW5kZWQiLCJlbmRpbmciLCJuZWVkRHJhaW4iLCJlbmNvZGluZyIsImNiIiwiYXZhaWxJbkJlZm9yZSIsImF2YWlsT3V0QmVmb3JlIiwiaW5PZmYiLCJlciIsInJlcSIsImF2YWlsSW5BZnRlciIsImF2YWlsT3V0QWZ0ZXIiLCJoYXZlIiwibmV3UmVxIiwiaWVlZTc1NCIsImN1c3RvbUluc3BlY3RTeW1ib2wiLCJTbG93QnVmZmVyIiwiSU5TUEVDVF9NQVhfQllURVMiLCJLX01BWF9MRU5HVEgiLCJjcmVhdGVCdWZmZXIiLCJlbmNvZGluZ09yT2Zmc2V0IiwiaXNFbmNvZGluZyIsImZyb21TdHJpbmciLCJBcnJheUJ1ZmZlciIsImlzVmlldyIsImFycmF5VmlldyIsImlzSW5zdGFuY2UiLCJmcm9tQXJyYXlCdWZmZXIiLCJmcm9tQXJyYXlMaWtlIiwiZnJvbUFycmF5VmlldyIsIlNoYXJlZEFycmF5QnVmZmVyIiwiY2hlY2tlZCIsImZyb21PYmplY3QiLCJ0b1ByaW1pdGl2ZSIsImFzc2VydFNpemUiLCJtdXN0TWF0Y2giLCJsb3dlcmVkQ2FzZSIsInV0ZjhUb0J5dGVzIiwiYmFzZTY0VG9CeXRlcyIsInNsb3dUb1N0cmluZyIsImhleFNsaWNlIiwidXRmOFNsaWNlIiwiYXNjaWlTbGljZSIsImxhdGluMVNsaWNlIiwiYmFzZTY0U2xpY2UiLCJ1dGYxNmxlU2xpY2UiLCJzd2FwIiwiYmlkaXJlY3Rpb25hbEluZGV4T2YiLCJkaXIiLCJhcnJheUluZGV4T2YiLCJsYXN0SW5kZXhPZiIsImluZGV4U2l6ZSIsImFyckxlbmd0aCIsInZhbExlbmd0aCIsImZvdW5kSW5kZXgiLCJmb3VuZCIsImhleFdyaXRlIiwicmVtYWluaW5nIiwic3RyTGVuIiwicGFyc2VkIiwicGFyc2VJbnQiLCJ1dGY4V3JpdGUiLCJibGl0QnVmZmVyIiwiYXNjaWlXcml0ZSIsImJ5dGVBcnJheSIsImFzY2lpVG9CeXRlcyIsImJhc2U2NFdyaXRlIiwidWNzMldyaXRlIiwidW5pdHMiLCJ1dGYxNmxlVG9CeXRlcyIsImZpcnN0Qnl0ZSIsImNvZGVQb2ludCIsImJ5dGVzUGVyU2VxdWVuY2UiLCJzZWNvbmRCeXRlIiwidGhpcmRCeXRlIiwiZm91cnRoQnl0ZSIsInRlbXBDb2RlUG9pbnQiLCJjb2RlUG9pbnRzIiwiTUFYX0FSR1VNRU5UU19MRU5HVEgiLCJkZWNvZGVDb2RlUG9pbnRzQXJyYXkiLCJUWVBFRF9BUlJBWV9TVVBQT1JUIiwicHJvdG8iLCJmb28iLCJ0eXBlZEFycmF5U3VwcG9ydCIsInBvb2xTaXplIiwiYWxsb2NVbnNhZmVTbG93IiwiX2lzQnVmZmVyIiwibGlzdCIsInN3YXAxNiIsInN3YXAzMiIsInN3YXA2NCIsInRvTG9jYWxlU3RyaW5nIiwidHJpbSIsInRoaXNTdGFydCIsInRoaXNFbmQiLCJ0aGlzQ29weSIsInRhcmdldENvcHkiLCJpbmNsdWRlcyIsImhleFNsaWNlTG9va3VwVGFibGUiLCJjaGVja09mZnNldCIsImV4dCIsImNoZWNrSW50Iiwid3J0QmlnVUludDY0TEUiLCJjaGVja0ludEJJIiwid3J0QmlnVUludDY0QkUiLCJjaGVja0lFRUU3NTQiLCJ3cml0ZUZsb2F0Iiwibm9Bc3NlcnQiLCJ3cml0ZURvdWJsZSIsIm5ld0J1ZiIsInN1YmFycmF5IiwicmVhZFVpbnRMRSIsInJlYWRVSW50TEUiLCJyZWFkVWludEJFIiwicmVhZFVJbnRCRSIsInJlYWRVaW50OCIsInJlYWRVaW50MTZMRSIsInJlYWRVSW50MTZMRSIsInJlYWRVaW50MTZCRSIsInJlYWRVaW50MzJMRSIsInJlYWRVSW50MzJMRSIsInJlYWRVaW50MzJCRSIsInJlYWRCaWdVSW50NjRMRSIsImRlZmluZUJpZ0ludE1ldGhvZCIsInZhbGlkYXRlTnVtYmVyIiwiYm91bmRzRXJyb3IiLCJyZWFkQmlnVUludDY0QkUiLCJyZWFkSW50TEUiLCJyZWFkSW50QkUiLCJyZWFkSW50OCIsInJlYWRJbnQxNkxFIiwicmVhZEludDE2QkUiLCJyZWFkSW50MzJMRSIsInJlYWRJbnQzMkJFIiwicmVhZEJpZ0ludDY0TEUiLCJyZWFkQmlnSW50NjRCRSIsInJlYWRGbG9hdExFIiwicmVhZEZsb2F0QkUiLCJyZWFkRG91YmxlTEUiLCJyZWFkRG91YmxlQkUiLCJ3cml0ZVVpbnRMRSIsIndyaXRlVUludExFIiwid3JpdGVVaW50QkUiLCJ3cml0ZVVpbnQ4Iiwid3JpdGVVaW50MTZMRSIsIndyaXRlVUludDE2TEUiLCJ3cml0ZVVpbnQxNkJFIiwid3JpdGVVaW50MzJMRSIsIndyaXRlVUludDMyTEUiLCJ3cml0ZVVpbnQzMkJFIiwid3JpdGVCaWdVSW50NjRMRSIsIndyaXRlQmlnVUludDY0QkUiLCJ3cml0ZUludExFIiwid3JpdGVJbnRCRSIsIndyaXRlSW50OCIsIndyaXRlSW50MTZMRSIsIndyaXRlSW50MTZCRSIsIndyaXRlSW50MzJMRSIsIndyaXRlSW50MzJCRSIsIndyaXRlQmlnSW50NjRMRSIsIndyaXRlQmlnSW50NjRCRSIsIndyaXRlRmxvYXRMRSIsIndyaXRlRmxvYXRCRSIsIndyaXRlRG91YmxlTEUiLCJ3cml0ZURvdWJsZUJFIiwidGFyZ2V0U3RhcnQiLCJjb3B5V2l0aGluIiwiRSIsInN1cGVyIiwiYWRkTnVtZXJpY2FsU2VwYXJhdG9yIiwicmFuZ2UiLCJFUlJfT1VUX09GX1JBTkdFIiwiY2hlY2tCb3VuZHMiLCJFUlJfQlVGRkVSX09VVF9PRl9CT1VORFMiLCJyZWNlaXZlZCIsIklOVkFMSURfQkFTRTY0X1JFIiwibGVhZFN1cnJvZ2F0ZSIsImJhc2U2NGNsZWFuIiwiZHN0IiwidGFibGUiLCJpMTYiLCJCdWZmZXJCaWdJbnROb3REZWZpbmVkIiwiR2V0SW50cmluc2ljIiwiY2FsbEJpbmQiLCIkaW5kZXhPZiIsImFsbG93TWlzc2luZyIsImludHJpbnNpYyIsIiRhcHBseSIsIiRjYWxsIiwiJHJlZmxlY3RBcHBseSIsIiRnT1BEIiwiJGRlZmluZVByb3BlcnR5IiwiJG1heCIsIm9yaWdpbmFsRnVuY3Rpb24iLCJmdW5jIiwiZGVzYyIsImFwcGx5QmluZCIsIksiLCJYIiwiWSIsIlIiLCJJIiwiTyIsIlQiLCJWIiwiUyIsIkoiLCJMIiwiVSIsIiQiLCJaIiwiVyIsIkYiLCJRIiwiQ29tbWVudGVkIiwiRGlhZ25vc2UiLCJEZWNvZGVyIiwiRW5jb2RlciIsIlNpbXBsZSIsIlRhZ2dlZCIsIlVJIiwiY29tbWVudCIsImZJIiwiZGVjb2RlQWxsIiwiaDgiLCJkZWNvZGVGaXJzdCIsImNjIiwiZGVjb2RlQWxsU3luYyIsIiR1IiwiZGVjb2RlRmlyc3RTeW5jIiwiZGlhZ25vc2UiLCJjdiIsIk4yIiwiZW5jb2RlQ2Fub25pY2FsIiwiVEciLCJlbmNvZGVPbmUiLCJXUiIsImVuY29kZUFzeW5jIiwiSngiLCJ3dyIsInZjIiwiTVQiLCJOVU1CWVRFUyIsIlNZTVMiLCJtYXhfZGVwdGgiLCJub19zdW1tYXJ5IiwiYmlnaW50IiwicHJlZmVyV2ViIiwicmVhZGFibGVPYmplY3RNb2RlIiwid3JpdGFibGVPYmplY3RNb2RlIiwiYWxsIiwiX3RhZ18yNCIsInBhcnNlciIsIl9vbl92YWx1ZSIsIl9vbl9zdGFydCIsIl9vbl9zdGFydF9zdHJpbmciLCJfb25fc3RvcCIsIl9vbl9tb3JlIiwiX29uX2Vycm9yIiwiX29uX2RhdGEiLCJicyIsIl9vbl9yZWFkIiwicGlwZSIsImd1ZXNzRW5jb2RpbmciLCJQT1NfSU5UIiwiTkVHX0lOVCIsIkFSUkFZIiwiTUFQIiwiQllURV9TVFJJTkciLCJVVEY4X1NUUklORyIsIlNJTVBMRV9GTE9BVCIsIlRBRyIsIlNUUkVBTSIsIkJSRUFLIiwiY2JvclZhbHVlVG9TdHJpbmciLCJUV08iLCJGT1VSIiwiRUlHSFQiLCJEQVRFX1NUUklORyIsIkRBVEVfRVBPQ0giLCJQT1NfQklHSU5UIiwiTkVHX0JJR0lOVCIsIkRFQ0lNQUxfRlJBQyIsIkJJR0ZMT0FUIiwiQkFTRTY0VVJMX0VYUEVDVEVEIiwiQkFTRTY0X0VYUEVDVEVEIiwiQkFTRTE2X0VYUEVDVEVEIiwiQ0JPUiIsIlVSSSIsIkJBU0U2NFVSTCIsIkJBU0U2NCIsIlJFR0VYUCIsIk1JTUUiLCJTRVQiLCJaRVJPIiwiSU5ERUZJTklURSIsIlNJTVBMRSIsIkZBTFNFIiwiVFJVRSIsIk5VTEwiLCJVTkRFRklORUQiLCJQQVJFTlQiLCJTSElGVDMyIiwiQkkiLCJNSU5VU19PTkUiLCJORUdfTUFYIiwiTUFYSU5UMzIiLCJNQVhJTlQ2NCIsIk1BWElOVCIsImJ1ZmZlclRvQmlnSW50IiwiYnl0ZSIsInJlcXVpcmVkIiwiZXh0ZW5kZWRSZXN1bHRzIiwiZGVmYXVsdEVuY29kaW5nIiwicnVubmluZyIsIl9vblJlYWQiLCJ2YWx1ZUJ5dGVzIiwiX3BhcnNlIiwibnVsbGNoZWNrIiwiX19mcmVzaCIsInBhcnNlQ0JPUmludCIsInV0ZjgiLCJwYXJzZUNCT1JmbG9hdCIsImNvbnZlcnQiLCJOT1RfRk9VTkQiLCJzZXBhcmF0b3IiLCJzdHJlYW1fZXJyb3JzIiwiZmxvYXRfYnl0ZXMiLCJfZm9yZSIsImNhbm9uaWNhbCIsImVuY29kZVVuZGVmaW5lZCIsImRpc2FsbG93VW5kZWZpbmVkS2V5cyIsImRhdGVUeXBlIiwiY29sbGFwc2VCaWdJbnRlZ2VycyIsImRldGVjdExvb3BzIiwib21pdFVuZGVmaW5lZFByb3BlcnRpZXMiLCJnZW5UeXBlcyIsIldlYWtTZXQiLCJzZW1hbnRpY1R5cGVzIiwiX3B1c2hBcnJheSIsIl9wdXNoRGF0ZSIsIl9wdXNoQnVmZmVyIiwiX3B1c2hNYXAiLCJOb0ZpbHRlciIsIl9wdXNoTm9GaWx0ZXIiLCJfcHVzaFJlZ2V4cCIsIl9wdXNoU2V0IiwiX3B1c2hBcnJheUJ1ZmZlciIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiX3B1c2hUeXBlZEFycmF5IiwiVWludDE2QXJyYXkiLCJJbnQ4QXJyYXkiLCJJbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsIlVSTCIsIl9wdXNoVVJMIiwiX3B1c2hCb3hlZCIsIl9wdXNoQmlnTnVtYmVyIiwiQmlnVWludDY0QXJyYXkiLCJCaWdJbnQ2NEFycmF5IiwiYWRkU2VtYW50aWNUeXBlIiwiZW50cmllcyIsInB1c2hBbnkiLCJfcHVzaFVJbnQ4IiwiX3B1c2hVSW50MTZCRSIsIl9wdXNoVUludDMyQkUiLCJfcHVzaEZsb2F0QkUiLCJfcHVzaERvdWJsZUJFIiwiX3B1c2hOYU4iLCJfcHVzaEluZmluaXR5IiwiX3B1c2hGbG9hdCIsIndyaXRlSGFsZiIsImZyb3VuZCIsIl9wdXNoSW50IiwiX3B1c2hJbnROdW0iLCJfcHVzaE51bWJlciIsIl9wdXNoU3RyaW5nIiwiX3B1c2hCb29sZWFuIiwiX3B1c2hVbmRlZmluZWQiLCJidWZmZXJpc2hUb0J1ZmZlciIsIl9wdXNoTnVsbCIsImluZGVmaW5pdGUiLCJfcHVzaFRhZyIsInRvSVNPU3RyaW5nIiwiX3B1c2hBbnkiLCJfcHVzaEJpZ2ludCIsIl9wdXNoSlNCaWdpbnQiLCJoaWdoV2F0ZXJNYXJrIiwicmVhZGFibGVIaWdoV2F0ZXJNYXJrIiwic29ydCIsIkJZVEVTX1BFUl9FTEVNRU5UIiwic3RhcnRzV2l0aCIsImlzQmlnRW5kaWFuIiwicmVtb3ZlTG9vcERldGVjdG9ycyIsIl9wdXNoT2JqZWN0Iiwic2tpcFR5cGVzIiwiZW5jb2RlQ0JPUiIsIl9lbmNvZGVBbGwiLCJpc0J1ZmZlcmlzaCIsIl90b1R5cGVkQXJyYXkiLCJEYXRhVmlldyIsImdldFVpbnQxNiIsInNldFVpbnQxNiIsImdldFVpbnQzMiIsInNldFVpbnQzMiIsImdldEJpZ1VpbnQ2NCIsInNldEJpZ1VpbnQ2NCIsImJ1ZmZlclRvQmlnbnVtYmVyIiwiYmFzZTY0dXJsIiwiSU5URVJOQUxfSlNPTiIsImZhdGFsIiwiaWdub3JlQk9NIiwiY2hlY2tzVVRGOCIsInBhcnNlSGFsZiIsImhleCIsImJpbiIsImFycmF5RXF1YWwiLCJldmVyeSIsImRlc2NyaXB0aW9uIiwiUmVhZGFibGUiLCJUZXh0RGVjb2RlciIsInV0ZkxhYmVsIiwiY29kZVBvaW50QXQiLCJpbnB1dEVuY29kaW5nIiwid2F0Y2hQaXBlIiwicmVhZEVycm9yIiwiX3JlYWRhYmxlU3RhdGUiLCJvYmplY3RNb2RlIiwicmVkdWNlIiwiX2J1ZkFycmF5IiwiaGVhZCIsInByb21pc2UiLCJzdHlsaXplIiwid3JpdGVCaWdJbnQiLCJyZWFkVUJpZ0ludCIsInJlYWRCaWdJbnQiLCJfX3Jlc3RhcnQiLCJfX25lZWRlZCIsIl9fcGFyc2VyIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsIkV2ZW50RW1pdHRlciIsIl9ldmVudHMiLCJfZXZlbnRzQ291bnQiLCJfbWF4TGlzdGVuZXJzIiwiZGVmYXVsdE1heExpc3RlbmVycyIsIm5ld0xpc3RlbmVyIiwibGlzdGVuZXIiLCJlbWl0dGVyIiwiZmlyZWQiLCJ3cmFwRm4iLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNldE1heExpc3RlbmVycyIsImdldE1heExpc3RlbmVycyIsImNvbnRleHQiLCJhZGRMaXN0ZW5lciIsInByZXBlbmRMaXN0ZW5lciIsInByZXBlbmRPbmNlTGlzdGVuZXIiLCJyZW1vdmVBbGxMaXN0ZW5lcnMiLCJsaXN0ZW5lcnMiLCJyYXdMaXN0ZW5lcnMiLCJsaXN0ZW5lckNvdW50IiwiZXZlbnROYW1lcyIsIkxOMiIsImludGVybmFsQmluZGluZyIsIkFycmF5SXNBcnJheSIsIkFycmF5UHJvdG90eXBlRmlsdGVyIiwiQXJyYXlQcm90b3R5cGVGb3JFYWNoIiwiQXJyYXlQcm90b3R5cGVQdXNoIiwiQXJyYXlQcm90b3R5cGVQdXNoQXBwbHkiLCJBcnJheVByb3RvdHlwZVNvcnQiLCJBcnJheVByb3RvdHlwZVVuc2hpZnQiLCJCaWdJbnRQcm90b3R5cGVWYWx1ZU9mIiwiQm9vbGVhblByb3RvdHlwZVZhbHVlT2YiLCJEYXRlUHJvdG90eXBlR2V0VGltZSIsIkRhdGVQcm90b3R5cGVUb0lTT1N0cmluZyIsIkRhdGVQcm90b3R5cGVUb1N0cmluZyIsIkVycm9yUHJvdG90eXBlVG9TdHJpbmciLCJGdW5jdGlvblByb3RvdHlwZUNhbGwiLCJGdW5jdGlvblByb3RvdHlwZVRvU3RyaW5nIiwiSlNPTlN0cmluZ2lmeSIsIk1hcFByb3RvdHlwZUdldFNpemUiLCJNYXBQcm90b3R5cGVFbnRyaWVzIiwiTWF0aEZsb29yIiwiTWF0aE1heCIsIk1hdGhNaW4iLCJNYXRoUm91bmQiLCJNYXRoU3FydCIsIk51bWJlcklzTmFOIiwiTnVtYmVyUGFyc2VGbG9hdCIsIk51bWJlclBhcnNlSW50IiwiTnVtYmVyUHJvdG90eXBlVmFsdWVPZiIsIk9iamVjdEFzc2lnbiIsIk9iamVjdENyZWF0ZSIsIk9iamVjdERlZmluZVByb3BlcnR5IiwiT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lcyIsIk9iamVjdEdldE93blByb3BlcnR5U3ltYm9scyIsIk9iamVjdEdldFByb3RvdHlwZU9mIiwiT2JqZWN0SXMiLCJPYmplY3RLZXlzIiwiT2JqZWN0UHJvdG90eXBlSGFzT3duUHJvcGVydHkiLCJPYmplY3RQcm90b3R5cGVQcm9wZXJ0eUlzRW51bWVyYWJsZSIsIk9iamVjdFNlYWwiLCJPYmplY3RTZXRQcm90b3R5cGVPZiIsIlJlZmxlY3RPd25LZXlzIiwiUmVnRXhwUHJvdG90eXBlVGVzdCIsIlJlZ0V4cFByb3RvdHlwZVRvU3RyaW5nIiwiU2FmZVN0cmluZ0l0ZXJhdG9yIiwiU2FmZU1hcCIsIlNhZmVTZXQiLCJTZXRQcm90b3R5cGVHZXRTaXplIiwiZXQiLCJTZXRQcm90b3R5cGVWYWx1ZXMiLCJydCIsIm50IiwiU3RyaW5nUHJvdG90eXBlQ2hhckNvZGVBdCIsIml0IiwiU3RyaW5nUHJvdG90eXBlQ29kZVBvaW50QXQiLCJvdCIsIlN0cmluZ1Byb3RvdHlwZUluY2x1ZGVzIiwic3QiLCJTdHJpbmdQcm90b3R5cGVOb3JtYWxpemUiLCJhdCIsIlN0cmluZ1Byb3RvdHlwZVBhZEVuZCIsInV0IiwiU3RyaW5nUHJvdG90eXBlUGFkU3RhcnQiLCJTdHJpbmdQcm90b3R5cGVSZXBlYXQiLCJjdCIsIlN0cmluZ1Byb3RvdHlwZVJlcGxhY2UiLCJmdCIsIlN0cmluZ1Byb3RvdHlwZVNsaWNlIiwiaHQiLCJTdHJpbmdQcm90b3R5cGVTcGxpdCIsInB0IiwiU3RyaW5nUHJvdG90eXBlVG9Mb3dlckNhc2UiLCJkdCIsIlN0cmluZ1Byb3RvdHlwZVRyaW0iLCJ5dCIsIlN0cmluZ1Byb3RvdHlwZVZhbHVlT2YiLCJTeW1ib2xQcm90b3R5cGVUb1N0cmluZyIsImJ0IiwiU3ltYm9sUHJvdG90eXBlVmFsdWVPZiIsIm10IiwiU3ltYm9sSXRlcmF0b3IiLCJ3dCIsIlN5bWJvbFRvU3RyaW5nVGFnIiwiX3QiLCJUeXBlZEFycmF5UHJvdG90eXBlR2V0TGVuZ3RoIiwiRXQiLCJUeXBlZEFycmF5UHJvdG90eXBlR2V0U3ltYm9sVG9TdHJpbmdUYWciLCJ2dCIsIlN0IiwiQXQiLCJUdCIsImdldFByb21pc2VEZXRhaWxzIiwiSXQiLCJnZXRQcm94eURldGFpbHMiLCJCdCIsImtQZW5kaW5nIiwiT3QiLCJrUmVqZWN0ZWQiLCJ4dCIsInByZXZpZXdFbnRyaWVzIiwiUnQiLCJnZXRDb25zdHJ1Y3Rvck5hbWUiLCJOdCIsImdldEV4dGVybmFsVmFsdWUiLCJMdCIsInByb3BlcnR5RmlsdGVyIiwiQUxMX1BST1BFUlRJRVMiLCJQdCIsIk9OTFlfRU5VTUVSQUJMRSIsIk10IiwiVXQiLCJqdCIsImt0IiwiJHQiLCJyZW1vdmVDb2xvcnMiLCJGdCIsIkR0IiwiaXNTdGFja092ZXJmbG93RXJyb3IiLCJDdCIsImlzQXN5bmNGdW5jdGlvbiIsIkd0IiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsIld0IiwienQiLCJpc0FycmF5QnVmZmVyIiwiSHQiLCJpc0FyZ3VtZW50c09iamVjdCIsIll0IiwicXQiLCJpc0RhdGFWaWV3IiwiVnQiLCJpc0V4dGVybmFsIiwiS3QiLCJYdCIsImlzTWFwSXRlcmF0b3IiLCJKdCIsImlzTW9kdWxlTmFtZXNwYWNlT2JqZWN0IiwiWnQiLCJRdCIsInRlIiwiZWUiLCJpc1NldEl0ZXJhdG9yIiwiaXNXZWFrTWFwIiwiaXNXZWFrU2V0Iiwib2UiLCJzZSIsImlzVHlwZWRBcnJheSIsImFlIiwidWUiLCJsZSIsImNlIiwiZmUiLCJoZSIsIk5hdGl2ZU1vZHVsZSIsInBlIiwidmFsaWRhdGVPYmplY3QiLCJkZSIsImdlIiwiYmUiLCJtZSIsImNvbG9ycyIsIm1heFN0cmluZ0xlbmd0aCIsIndlIiwiRWUiLCJ2ZSIsIlNlIiwiQWUiLCJUZSIsIkllIiwiQmUiLCJPZSIsIlJlIiwiTmUiLCJMZSIsIlBlIiwiYnVkZ2V0IiwiaW5kZW50YXRpb25MdmwiLCJzZWVuIiwiY3VycmVudERlcHRoIiwiQ2UiLCJ1c2VyT3B0aW9ucyIsIkRlIiwiS2UiLCJNZSIsIlVlIiwiamUiLCJrZSIsImJvbGQiLCJkaW0iLCJpdGFsaWMiLCJ1bmRlcmxpbmUiLCJibGluayIsImludmVyc2UiLCJoaWRkZW4iLCJzdHJpa2V0aHJvdWdoIiwiZG91YmxldW5kZXJsaW5lIiwiYmxhY2siLCJ5ZWxsb3ciLCJtYWdlbnRhIiwiY3lhbiIsImJnQmxhY2siLCJiZ1JlZCIsImJnR3JlZW4iLCJiZ1llbGxvdyIsImJnQmx1ZSIsImJnTWFnZW50YSIsImJnQ3lhbiIsImJnV2hpdGUiLCJmcmFtZWQiLCJvdmVybGluZWQiLCJncmF5IiwicmVkQnJpZ2h0IiwiZ3JlZW5CcmlnaHQiLCJ5ZWxsb3dCcmlnaHQiLCJibHVlQnJpZ2h0IiwibWFnZW50YUJyaWdodCIsImN5YW5CcmlnaHQiLCJ3aGl0ZUJyaWdodCIsImJnR3JheSIsImJnUmVkQnJpZ2h0IiwiYmdHcmVlbkJyaWdodCIsImJnWWVsbG93QnJpZ2h0IiwiYmdCbHVlQnJpZ2h0IiwiYmdNYWdlbnRhQnJpZ2h0IiwiYmdDeWFuQnJpZ2h0IiwiYmdXaGl0ZUJyaWdodCIsInN0eWxlcyIsInNwZWNpYWwiLCJib29sZWFuIiwibnVsbCIsInN5bWJvbCIsInJlZ2V4cCIsIiRlIiwiRmUiLCJHZSIsIldlIiwiemUiLCJIZSIsImRyIiwiWWUiLCJxZSIsIlZlIiwiUWUiLCJnciIsImNpcmN1bGFyIiwibnIiLCJzciIsImlyIiwiWGUiLCJociIsImV4aXN0cyIsImV4ZWMiLCJyciIsIkplIiwicHIiLCJjciIsImxyIiwiZnIiLCJ0ciIsIlplIiwiYXIiLCJ1ciIsInlyIiwiYnIiLCJtciIsIndyIiwiX3IiLCJFciIsImhhc0ludGwiLCJ2ciIsImdldFN0cmluZ1dpZHRoIiwibm9ybWFsaXplIiwiZm9ybWF0V2l0aE9wdGlvbnMiLCJpbnNwZWN0RGVmYXVsdE9wdGlvbnMiLCJzdHJpcFZUQ29udHJvbENoYXJhY3RlcnMiLCJzdHlsaXplV2l0aENvbG9yIiwic3R5bGl6ZVdpdGhIVE1MIiwiQXJyYXlQcm90b3R5cGVJbmNsdWRlcyIsIkFycmF5UHJvdG90eXBlSW5kZXhPZiIsIkFycmF5UHJvdG90eXBlSm9pbiIsIkFycmF5UHJvdG90eXBlUG9wIiwiQXJyYXlQcm90b3R5cGVTcGxpY2UiLCJFcnJvckNhcHR1cmVTdGFja1RyYWNlIiwiUmVmbGVjdEFwcGx5IiwiU3RyaW5nUHJvdG90eXBlRW5kc1dpdGgiLCJoaWRlU3RhY2tGcmFtZXMiLCJnbG9iYWxUaGlzIiwiX19tYWdpY19fIiwiaXNGcm96ZW4iLCJ0b1N0cmluZ1RhZyIsIm51bGxhYmxlIiwiX2l0ZXJhdG9yIiwiX19sb29rdXBHZXR0ZXJfXyIsIm1ha2VTYWZlIiwicGFyc2VGbG9hdCIsInNlYWwiLCJwYWRFbmQiLCJwYWRTdGFydCIsIlN5bWJvbEZvciIsIldlYWtNYXAiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsInJ1biIsImZ1biIsInRpdGxlIiwiYnJvd3NlciIsImVudiIsImFyZ3YiLCJ2ZXJzaW9uIiwidmVyc2lvbnMiLCJjd2QiLCJjaGRpciIsInVtYXNrIiwiYWxsb3dIYWxmT3BlbiIsInJlYWRhYmxlIiwiZ2V0QnVmZmVyIiwiZGVzdHJveWVkIiwiUmVhZGFibGVTdGF0ZSIsImRlYnVnbG9nIiwiZ2V0SGlnaFdhdGVyTWFyayIsIkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YiLCJFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCIsIkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQiLCJlcnJvck9yRGVzdHJveSIsInBpcGVzIiwicGlwZXNDb3VudCIsImZsb3dpbmciLCJlbmRFbWl0dGVkIiwicmVhZGluZyIsInN5bmMiLCJuZWVkUmVhZGFibGUiLCJlbWl0dGVkUmVhZGFibGUiLCJyZWFkYWJsZUxpc3RlbmluZyIsInJlc3VtZVNjaGVkdWxlZCIsInBhdXNlZCIsImVtaXRDbG9zZSIsImF1dG9EZXN0cm95IiwiYXdhaXREcmFpbiIsInJlYWRpbmdNb3JlIiwiX3JlYWQiLCJkZXN0cm95IiwiX2Rlc3Ryb3kiLCJfdW5kZXN0cm95IiwidW5kZXN0cm95IiwiaXNQYXVzZWQiLCJzZXRFbmNvZGluZyIsImNsZWFyIiwicmVzdW1lIiwiY29uc3VtZSIsImZpbmlzaGVkIiwic3Rkb3V0IiwiaGFzVW5waXBlZCIsInBhdXNlIiwidW5waXBlIiwid3JhcCIsImFzeW5jSXRlcmF0b3IiLCJfZnJvbUxpc3QiLCJFUlJfTVVMVElQTEVfQ0FMTEJBQ0siLCJFUlJfVFJBTlNGT1JNX0FMUkVBRFlfVFJBTlNGT1JNSU5HIiwiRVJSX1RSQU5TRk9STV9XSVRIX0xFTkdUSF8wIiwiX3RyYW5zZm9ybVN0YXRlIiwidHJhbnNmb3JtaW5nIiwid3JpdGVjYiIsIndyaXRlY2h1bmsiLCJhZnRlclRyYW5zZm9ybSIsIm5lZWRUcmFuc2Zvcm0iLCJ3cml0ZWVuY29kaW5nIiwiZW50cnkiLCJmaW5pc2giLCJwZW5kaW5nY2IiLCJjb3JrZWRSZXF1ZXN0c0ZyZWUiLCJXcml0YWJsZVN0YXRlIiwiZGVwcmVjYXRlIiwiRVJSX1NUUkVBTV9DQU5OT1RfUElQRSIsIkVSUl9TVFJFQU1fREVTVFJPWUVEIiwiRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUyIsIkVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5EIiwiRVJSX1VOS05PV05fRU5DT0RJTkciLCJmaW5hbENhbGxlZCIsImRlY29kZVN0cmluZ3MiLCJ3cml0aW5nIiwiY29ya2VkIiwiYnVmZmVyUHJvY2Vzc2luZyIsIm9ud3JpdGUiLCJ3cml0ZWxlbiIsImVycm9yRW1pdHRlZCIsImJ1ZmZlcmVkUmVxdWVzdCIsImxhc3RCdWZmZXJlZFJlcXVlc3QiLCJwcmVmaW5pc2hlZCIsImJ1ZmZlcmVkUmVxdWVzdENvdW50Iiwid3JpdGV2IiwiX3dyaXRldiIsImlzQnVmIiwiYWxsQnVmZmVycyIsImhhc0luc3RhbmNlIiwiY29yayIsInVuY29yayIsInNldERlZmF1bHRFbmNvZGluZyIsInJlamVjdCIsIl9nZXRTdHJpbmciLCJfZ2V0QnVmZmVyIiwiZGVmaW5lUHJvcGVydGllcyIsIkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFIiwic2V0SGVhZGVyIiwiYWJvcnQiLCJFUlJfSU5WQUxJRF9PUFRfVkFMVUUiLCJEdXBsZXgiLCJQYXNzVGhyb3VnaCIsInBpcGVsaW5lIiwiU3RyZWFtIiwiX2lzU3RkaW8iLCJ0ZXh0IiwiZmlsbExhc3QiLCJsYXN0TmVlZCIsImxhc3RUb3RhbCIsImxhc3RDaGFyIiwibG9jYWxTdG9yYWdlIiwidHJhY2UiLCJoYXNCaWdJbnQiLCJsZXZlbGRiIiwiU3RyaW5nRGVjb2RlciIsImhhc2hNb2RlIiwiX2ZpbmFsT3JEaWdlc3QiLCJfX2ZpbmFsIiwiX2RlY29kZXIiLCJfZW5jb2RpbmciLCJpbnB1dEVuYyIsIm91dHB1dEVuYyIsIm91dERhdGEiLCJfdG9TdHJpbmciLCJmaW4iLCJlbGxpcHRpYyIsIkVDREgiLCJhbGlhc2VzIiwic2VjcDI1NmsxIiwic2VjcDIyNHIxIiwicHJpbWUyNTZ2MSIsInByaW1lMTkydjEiLCJlZDI1NTE5Iiwic2VjcDM4NHIxIiwic2VjcDUyMXIxIiwiY3VydmVUeXBlIiwiZWMiLCJmb3JtYXRSZXR1cm5WYWx1ZSIsImJuIiwicDI1NiIsInNlY3AyNTZyMSIsInNlY3AxOTJyMSIsInAzODQiLCJwNTIxIiwiZ2VuZXJhdGVLZXlzIiwiZ2VuS2V5UGFpciIsImdldFB1YmxpY0tleSIsImNvbXB1dGVTZWNyZXQiLCJpbmVuYyIsImtleUZyb21QdWJsaWMiLCJnZXRQdWJsaWMiLCJnZXRQcml2YXRlIiwiZ2V0WCIsImdldFByaXZhdGVLZXkiLCJzZXRQdWJsaWNLZXkiLCJfaW1wb3J0UHVibGljIiwic2V0UHJpdmF0ZUtleSIsIl9wcml2IiwiX2ltcG9ydFByaXZhdGUiLCJNRDUiLCJSSVBFTUQxNjAiLCJzaGEiLCJIYXNoIiwiYWxnIiwiTGVnYWN5IiwibWQ1IiwiWkVST1MiLCJIbWFjIiwiYmxvY2tzaXplIiwiX2FsZyIsImlwYWQiLCJfaXBhZCIsIm9wYWQiLCJfb3BhZCIsInJuZyIsInBzZXVkb1JhbmRvbUJ5dGVzIiwicHJuZyIsImFsZ29zIiwiYWxnb0tleXMiLCJoYXNoZXMiLCJnZXRIYXNoZXMiLCJwYmtkZjIiLCJwYmtkZjJTeW5jIiwiZGgiLCJEaWZmaWVIZWxsbWFuR3JvdXAiLCJjcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXAiLCJnZXREaWZmaWVIZWxsbWFuIiwiY3JlYXRlRGlmZmllSGVsbG1hbiIsIkRpZmZpZUhlbGxtYW4iLCJjcmVhdGVFQ0RIIiwicHVibGljRW5jcnlwdCIsInByaXZhdGVFbmNyeXB0IiwicHVibGljRGVjcnlwdCIsInByaXZhdGVEZWNyeXB0IiwicmYiLCJyYW5kb21GaWxsIiwicmFuZG9tRmlsbFN5bmMiLCJjcmVhdGVDcmVkZW50aWFscyIsImhhc1N5bWJvbHMiLCJ0b1N0ciIsIm9yaWdEZWZpbmVQcm9wZXJ0eSIsInN1cHBvcnRzRGVzY3JpcHRvcnMiLCJhcmVQcm9wZXJ0eURlc2NyaXB0b3JzU3VwcG9ydGVkIiwib2JqZWN0IiwicHJlZGljYXRlIiwicHJlZGljYXRlcyIsInV0aWxzIiwiQ0JDU3RhdGUiLCJfY2JjSW5pdCIsIl9jYmNTdGF0ZSIsImlucCIsIm91dE9mZiIsInN1cGVyUHJvdG8iLCJidWZmZXJPZmYiLCJfdXBkYXRlRGVjcnlwdCIsIl91cGRhdGVFbmNyeXB0IiwiX2ZsdXNoQnVmZmVyIiwiaW5wdXRPZmYiLCJvdXRwdXRPZmYiLCJfZmluYWxFbmNyeXB0IiwiX2ZpbmFsRGVjcnlwdCIsIl9wYWQiLCJfdW5wYWQiLCJERVNTdGF0ZSIsIl9kZXNTdGF0ZSIsImRlcml2ZUtleXMiLCJzaGlmdFRhYmxlIiwia0wiLCJrUiIsInBjMSIsInIyOHNobCIsInBjMiIsImlwIiwiX2VuY3J5cHQiLCJsU3RhcnQiLCJyU3RhcnQiLCJrZXlMIiwia2V5UiIsImV4cGFuZCIsInN1YnN0aXR1dGUiLCJyaXAiLCJFREVTdGF0ZSIsImsxIiwiazIiLCJrMyIsIl9lZGVTdGF0ZSIsImluTCIsImluUiIsIm91dEwiLCJvdXRSIiwicGMydGFibGUiLCJzVGFibGUiLCJwZXJtdXRlVGFibGUiLCJwYWRTcGxpdCIsImdyb3VwIiwiZ2VuZXJhdGVQcmltZSIsIkRIIiwiRU5DT0RJTkdTIiwiZ2VuIiwiZ2VuZXJhdG9yIiwiZ2VuYyIsIm1pbGxlclJhYmluIiwiVFdFTlRZRk9VUiIsIkVMRVZFTiIsIlRFTiIsIlRIUkVFIiwiU0VWRU4iLCJfcHViIiwicHJpbWVDYWNoZSIsIm1hbGxlYWJsZSIsInNldEdlbmVyYXRvciIsIl9fcHJpbWUiLCJfcHJpbWVMZW4iLCJfcHJpbWVDb2RlIiwic2ltcGxlU2lldmUiLCJmZXJtYXRUZXN0IiwiY2hlY2tQcmltZSIsIl9fZ2VuIiwiX2dlbiIsInNlY3JldCIsImdldFByaW1lIiwiZnJvbnQiLCJnZXRHZW5lcmF0b3IiLCJmaW5kUHJpbWUiLCJGSVZFIiwiX2dldFByaW1lcyIsIm4yIiwiZWRkc2EiLCJnZXROQUYiLCJnZXRKU0YiLCJCYXNlQ3VydmUiLCJjb25mIiwiemVybyIsInBvaW50RnJvbUpTT04iLCJnUmVkIiwiX3duYWZUMSIsIl93bmFmVDIiLCJfd25hZlQzIiwiX3duYWZUNCIsIl9iaXRMZW5ndGgiLCJhZGp1c3RDb3VudCIsInJlZE4iLCJfbWF4d2VsbFRyaWNrIiwiQmFzZVBvaW50IiwicHJlY29tcHV0ZWQiLCJwb2ludCIsInZhbGlkYXRlIiwiX2ZpeGVkTmFmTXVsIiwiZG91YmxlcyIsIl9nZXREb3VibGVzIiwibmFmIiwic3RlcCIsIm5hZlciLCJyZXByIiwianBvaW50IiwibWl4ZWRBZGQiLCJwb2ludHMiLCJ0b1AiLCJfd25hZk11bCIsIm5hZlBvaW50cyIsIl9nZXROQUZQb2ludHMiLCJkYmxwIiwiX3duYWZNdWxBZGQiLCJkZWZXIiwiY29lZmZzIiwiamFjb2JpYW5SZXN1bHQiLCJ3bmRXaWR0aCIsImNvbWIiLCJ0b0oiLCJqc2YiLCJqYSIsImpiIiwiZGVjb2RlUG9pbnQiLCJwb2ludEZyb21YIiwiZW5jb2RlQ29tcHJlc3NlZCIsImdldFkiLCJwcmVjb21wdXRlIiwicG93ZXIiLCJiZXRhIiwiX2dldEJldGEiLCJfaGFzRG91YmxlcyIsImRibCIsIkVkd2FyZHNDdXJ2ZSIsInR3aXN0ZWQiLCJtT25lQSIsImRkIiwib25lQyIsIlBvaW50Iiwiek9uZSIsIl9tdWxBIiwiX211bEMiLCJyaHMiLCJsaHMiLCJ5MiIsInBvaW50RnJvbVkiLCJpc0luZmluaXR5IiwiZnJvbUpTT04iLCJfZXh0RGJsIiwibngiLCJueSIsIm56IiwiX3Byb2pEYmwiLCJfZXh0QWRkIiwiX3Byb2pBZGQiLCJtdWxBZGQiLCJqbXVsQWRkIiwiemkiLCJlcVhUb1AiLCJzaG9ydCIsImVkd2FyZHMiLCJNb250Q3VydmUiLCJpNCIsImEyNCIsImFhIiwiYmIiLCJkaWZmQWRkIiwiZGEiLCJqdW1sQWRkIiwiU2hvcnRDdXJ2ZSIsInRpbnYiLCJ6ZXJvQSIsInRocmVlQSIsImVuZG8iLCJfZ2V0RW5kb21vcnBoaXNtIiwiX2VuZG9XbmFmVDEiLCJfZW5kb1duYWZUMiIsImlzUmVkIiwiaW5mIiwiSlBvaW50IiwibGFtYmRhIiwiYmV0YXMiLCJfZ2V0RW5kb1Jvb3RzIiwibGFtYmRhcyIsImJhc2lzIiwidmVjIiwiX2dldEVuZG9CYXNpcyIsIm50aW52IiwicHJldlIiLCJhcHJ4U3FydCIsInkxIiwibGVuMSIsIl9lbmRvU3BsaXQiLCJ2MSIsInYyIiwicTEiLCJxMiIsImF4IiwiX2VuZG9XbmFmTXVsQWRkIiwibnBvaW50cyIsIm5jb2VmZnMiLCJwcmUiLCJlbmRvTXVsIiwicGFyc2UiLCJvYmoycG9pbnQiLCJ5czEiLCJkeWludiIsIl9wcmVjb21wdXRlIiwibmVnYXRlIiwiemludiIsInppbnYyIiwiYXkiLCJwejIiLCJ6MiIsInUxIiwidTIiLCJoMiIsImgzIiwiangiLCJqeSIsImp6Iiwiano0IiwianlkIiwiangyIiwianlkMiIsImp5ZDQiLCJkbnkiLCJfemVyb0RibCIsIl90aHJlZURibCIsIl9kYmwiLCJ4eCIsInl5IiwieXl5eSIsInl5eXk4IiwiYzgiLCJnYW1tYSIsImFscGhhIiwiYmV0YTQiLCJiZXRhOCIsImdnYW1tYTgiLCJqeTIiLCJqeGQ0IiwianlkOCIsInRycGwiLCJ6eiIsIm1tIiwieXl1NCIsImtiYXNlIiwiejMiLCJwejMiLCJQcmVzZXRDdXJ2ZSIsImRlZmluZUN1cnZlIiwic2hhMjU2Iiwic2hhMzg0Iiwic2hhNTEyIiwiSG1hY0RSQkciLCJLZXlQYWlyIiwiU2lnbmF0dXJlIiwibmgiLCJrZXlQYWlyIiwiZnJvbVByaXZhdGUiLCJmcm9tUHVibGljIiwiZHJiZyIsInBlcnMiLCJwZXJzRW5jIiwiZW50cm9weSIsImhtYWNTdHJlbmd0aCIsImVudHJvcHlFbmMiLCJub25jZSIsIm5zMiIsIl90cnVuY2F0ZVRvTiIsInRydW5jT25seSIsIm5zMSIsIml0ZXIiLCJrcCIsImtwWCIsInJlY292ZXJ5UGFyYW0iLCJzaW52IiwicmVjb3ZlclB1YktleSIsImlzWU9kZCIsImlzU2Vjb25kS2V5IiwickludiIsImdldEtleVJlY292ZXJ5UGFyYW0iLCJRcHJpbWUiLCJwcml2RW5jIiwicHViRW5jIiwiZGVyaXZlIiwiX2ltcG9ydERFUiIsIlBvc2l0aW9uIiwicGxhY2UiLCJnZXRMZW5ndGgiLCJpbml0aWFsIiwib2N0ZXRMZW4iLCJybVBhZGRpbmciLCJjb25zdHJ1Y3RMZW5ndGgiLCJvY3RldHMiLCJzbGVuIiwiYmFja0hhbGYiLCJwYXJzZUJ5dGVzIiwiRUREU0EiLCJwb2ludENsYXNzIiwiZW5jb2RpbmdMZW5ndGgiLCJrZXlGcm9tU2VjcmV0IiwiaGFzaEludCIsIm1lc3NhZ2VQcmVmaXgiLCJSZW5jb2RlZCIsImVuY29kZVBvaW50Iiwic18iLCJwdWJCeXRlcyIsIm1ha2VTaWduYXR1cmUiLCJTRyIsImludEZyb21MRSIsImZyb21TZWNyZXQiLCJsYXN0SXgiLCJub3JtZWQiLCJ4SXNPZGQiLCJlbmNvZGVJbnQiLCJkZWNvZGVJbnQiLCJpc1BvaW50IiwiY2FjaGVkUHJvcGVydHkiLCJfc2VjcmV0IiwiX3B1YkJ5dGVzIiwicHJpdkJ5dGVzIiwiZ2V0U2VjcmV0IiwiX1IiLCJfUyIsIl9SZW5jb2RlZCIsIl9TZW5jb2RlZCIsIlNlbmNvZGVkIiwidG9CeXRlcyIsInRvSGV4IiwibWluQXNzZXJ0IiwibWluVXRpbHMiLCJ6ZXJvMiIsIm04IiwibTE0IiwibTI0IiwiY29tcHV0ZXIiLCJmaXJzdFNvdXJjZSIsInRvIiwibmV4dFNvdXJjZSIsImtleXNBcnJheSIsIm5leHRJbmRleCIsIm5leHRLZXkiLCJwb2x5ZmlsbCIsInJlY2VpdmVyIiwiZXJyb3JMaXN0ZW5lciIsInJlc29sdmVyIiwiZXZlbnRUYXJnZXRBZ25vc3RpY0FkZExpc3RlbmVyIiwiaGFuZGxlciIsImFkZEVycm9ySGFuZGxlcklmRXZlbnRFbWl0dGVyIiwiY2hlY2tMaXN0ZW5lciIsIl9nZXRNYXhMaXN0ZW5lcnMiLCJ0aGF0IiwiX2FkZExpc3RlbmVyIiwicHJlcGVuZCIsImV2ZW50cyIsImV4aXN0aW5nIiwid2FybmluZyIsIm9uY2VXcmFwcGVyIiwiX29uY2VXcmFwIiwid3JhcHBlZCIsIl9saXN0ZW5lcnMiLCJ1bndyYXAiLCJldmxpc3RlbmVyIiwidW53cmFwTGlzdGVuZXJzIiwiYXJyYXlDbG9uZSIsIndyYXBMaXN0ZW5lciIsImRvRXJyb3IiLCJvcmlnaW5hbExpc3RlbmVyIiwic3BsaWNlT25lIiwic2FsdCIsImtleUJpdHMiLCJ1c2VkIiwia2V5U3RhcnQiLCJpdlN0YXJ0IiwiaGFzT3duIiwiRVJST1JfTUVTU0FHRSIsImZ1bmNUeXBlIiwiYm91bmQiLCJiaW5kZXIiLCJib3VuZExlbmd0aCIsImJvdW5kQXJncyIsIkVtcHR5IiwiaW1wbGVtZW50YXRpb24iLCIkU3ludGF4RXJyb3IiLCJTeW50YXhFcnJvciIsIiRGdW5jdGlvbiIsIiRUeXBlRXJyb3IiLCJnZXRFdmFsbGVkQ29uc3RydWN0b3IiLCJleHByZXNzaW9uU3ludGF4IiwidGhyb3dUeXBlRXJyb3IiLCJUaHJvd1R5cGVFcnJvciIsImNhbGxlZVRocm93cyIsImdPUER0aHJvd3MiLCJnZXRQcm90byIsIm5lZWRzRXZhbCIsIlR5cGVkQXJyYXkiLCJJTlRSSU5TSUNTIiwiQWdncmVnYXRlRXJyb3IiLCJBdG9taWNzIiwiZGVjb2RlVVJJIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiZW5jb2RlVVJJIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwiZXZhbCIsIkV2YWxFcnJvciIsIkZpbmFsaXphdGlvblJlZ2lzdHJ5IiwiVVJJRXJyb3IiLCJXZWFrUmVmIiwiZG9FdmFsIiwiTEVHQUNZX0FMSUFTRVMiLCIkY29uY2F0IiwiJHNwbGljZUFwcGx5IiwiJHJlcGxhY2UiLCIkc3RyU2xpY2UiLCJyZVByb3BOYW1lIiwicmVFc2NhcGVDaGFyIiwic3RyaW5nVG9QYXRoIiwicXVvdGUiLCJzdWJTdHJpbmciLCJnZXRCYXNlSW50cmluc2ljIiwiYWxpYXMiLCJpbnRyaW5zaWNOYW1lIiwiaW50cmluc2ljQmFzZU5hbWUiLCJpbnRyaW5zaWNSZWFsTmFtZSIsInNraXBGdXJ0aGVyQ2FjaGluZyIsImlzT3duIiwicGFydCIsIm9yaWdTeW1ib2wiLCJoYXNTeW1ib2xTaGFtIiwic3ltT2JqIiwic3ltcyIsIkhhc2hCYXNlIiwiX2Jsb2NrIiwiX2Jsb2NrU2l6ZSIsIl9ibG9ja09mZnNldCIsIl9sZW5ndGgiLCJfZmluYWxpemVkIiwidGhyb3dJZk5vdFN0cmluZ09yQnVmZmVyIiwiX2RpZ2VzdCIsImNvbW1vbiIsInJpcGVtZCIsImhtYWMiLCJzaGExIiwic2hhMjI0IiwicmlwZW1kMTYwIiwiQmxvY2tIYXNoIiwicGVuZGluZyIsInBlbmRpbmdUb3RhbCIsIm91dFNpemUiLCJwYWRMZW5ndGgiLCJfZGVsdGE4IiwiX2RlbHRhMzIiLCJqb2luMzIiLCJpbm5lciIsIm91dGVyIiwicm90bDMyIiwic3VtMzIiLCJzdW0zMl8zIiwic3VtMzJfNCIsIktoIiwiQWgiLCJCaCIsIkNoIiwiRGgiLCJFaCIsInJoIiwic2giLCJ0b0hleDMyIiwic3BsaXQzMiIsInNoYUNvbW1vbiIsInN1bTMyXzUiLCJmdF8xIiwic2hhMV9LIiwiU0hBMSIsIlNIQTI1NiIsIlNIQTIyNCIsImNoMzIiLCJtYWozMiIsInMwXzI1NiIsInMxXzI1NiIsImcwXzI1NiIsImcxXzI1NiIsInNoYTI1Nl9LIiwiVDEiLCJUMiIsIlNIQTUxMiIsIlNIQTM4NCIsInJvdHI2NF9oaSIsInJvdHI2NF9sbyIsInNocjY0X2hpIiwic2hyNjRfbG8iLCJzdW02NCIsInN1bTY0X2hpIiwic3VtNjRfbG8iLCJzdW02NF80X2hpIiwic3VtNjRfNF9sbyIsInN1bTY0XzVfaGkiLCJzdW02NF81X2xvIiwic2hhNTEyX0siLCJjaDY0X2hpIiwieGgiLCJ4bCIsInloIiwieWwiLCJ6aCIsImNoNjRfbG8iLCJ6bCIsIm1hajY0X2hpIiwibWFqNjRfbG8iLCJzMF81MTJfaGkiLCJzMF81MTJfbG8iLCJzMV81MTJfbG8iLCJnMF81MTJfaGkiLCJnMF81MTJfbG8iLCJnMV81MTJfbG8iLCJfcHJlcGFyZUJsb2NrIiwiYzBfaGkiLCJjMF9sbyIsImMxX2hpIiwiYzFfbG8iLCJjMl9oaSIsImMyX2xvIiwiYzNfaGkiLCJjM19sbyIsImFoIiwiYWwiLCJiaCIsImNoIiwiY2wiLCJkbCIsImVoIiwiZWwiLCJmaCIsImZsIiwiZ2giLCJnbCIsImhoIiwiaGwiLCJjNF9oaSIsImM0X2xvIiwiVDFfaGkiLCJUMV9sbyIsIlQyX2hpIiwiVDJfbG8iLCJyb3RyMzIiLCJwMzIiLCJpc1N1cnJvZ2F0ZVBhaXIiLCJodG9ubCIsInplcm84IiwicHJlZFJlc2lzdCIsIm1pbkVudHJvcHkiLCJfcmVzZWVkIiwicmVzZWVkSW50ZXJ2YWwiLCJub25jZUVuYyIsInNlZWQiLCJfaG1hYyIsImttYWMiLCJyZXNlZWQiLCJhZGRFbmMiLCJpc0xFIiwibUxlbiIsIm5CeXRlcyIsImVMZW4iLCJlTWF4IiwiZUJpYXMiLCJuQml0cyIsImhhc1RvU3RyaW5nVGFnIiwiJHRvU3RyaW5nIiwiY2FsbEJvdW5kIiwiaXNTdGFuZGFyZEFyZ3VtZW50cyIsImlzTGVnYWN5QXJndW1lbnRzIiwiY2FsbGVlIiwic3VwcG9ydHNTdGFuZGFyZEFyZ3VtZW50cyIsIkdlbmVyYXRvckZ1bmN0aW9uIiwiZm5Ub1N0ciIsImlzRm5SZWdleCIsImdlbmVyYXRvckZ1bmMiLCJnZXRHZW5lcmF0b3JGdW5jIiwiZ2V0UG9seWZpbGwiLCJzaGltIiwiYXZhaWxhYmxlVHlwZWRBcnJheXMiLCJ0eXBlZEFycmF5cyIsIiRzbGljZSIsInRvU3RyVGFncyIsImdPUEQiLCJ0eXBlZEFycmF5IiwiYW55VHJ1ZSIsImdldHRlciIsInRyeVR5cGVkQXJyYXlzIiwiQVJSQVkxNiIsIl9hIiwiX2IiLCJfYyIsInJvdGwiLCJmbkYiLCJmbkciLCJmbkgiLCJmbkkiLCJicm9yYW5kIiwiTWlsbGVyUmFiaW4iLCJfcmFuZGJlbG93IiwibWluX2J5dGVzIiwiX3JhbmRyYW5nZSIsInN0b3AiLCJyb25lIiwicm4xIiwiZ2V0RGl2aXNvciIsImtleXNTaGltIiwiaXNBcmdzIiwiaXNFbnVtZXJhYmxlIiwiaGFzRG9udEVudW1CdWciLCJoYXNQcm90b0VudW1CdWciLCJkb250RW51bXMiLCJlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZSIsImV4Y2x1ZGVkS2V5cyIsIiRhcHBsaWNhdGlvbkNhY2hlIiwiJGNvbnNvbGUiLCIkZXh0ZXJuYWwiLCIkZnJhbWUiLCIkZnJhbWVFbGVtZW50IiwiJGZyYW1lcyIsIiRpbm5lckhlaWdodCIsIiRpbm5lcldpZHRoIiwiJG9ubW96ZnVsbHNjcmVlbmNoYW5nZSIsIiRvbm1vemZ1bGxzY3JlZW5lcnJvciIsIiRvdXRlckhlaWdodCIsIiRvdXRlcldpZHRoIiwiJHBhZ2VYT2Zmc2V0IiwiJHBhZ2VZT2Zmc2V0IiwiJHBhcmVudCIsIiRzY3JvbGxMZWZ0IiwiJHNjcm9sbFRvcCIsIiRzY3JvbGxYIiwiJHNjcm9sbFkiLCIkc2VsZiIsIiR3ZWJraXRJbmRleGVkREIiLCIkd2Via2l0U3RvcmFnZUluZm8iLCIkd2luZG93IiwiaGFzQXV0b21hdGlvbkVxdWFsaXR5QnVnIiwiaXNPYmplY3QiLCJpc0Z1bmN0aW9uIiwiaXNBcmd1bWVudHMiLCJpc1N0cmluZyIsInRoZUtleXMiLCJza2lwUHJvdG8iLCJza2lwQ29uc3RydWN0b3IiLCJlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZUlmTm90QnVnZ3kiLCJvcmlnS2V5cyIsIm9yaWdpbmFsS2V5cyIsIlRZUEVEX09LIiwiX2hhcyIsInNvdXJjZXMiLCJzaHJpbmtCdWYiLCJmblR5cGVkIiwiYXJyYXlTZXQiLCJzcmNfb2ZmcyIsImRlc3Rfb2ZmcyIsImZsYXR0ZW5DaHVua3MiLCJjaHVua3MiLCJmblVudHlwZWQiLCJzZXRUeXBlZCIsIkJ1ZjgiLCJCdWYxNiIsIkJ1ZjMyIiwiYWRsZXIiLCJaX1RSRUVTIiwiWl9OT19DT01QUkVTU0lPTiIsIlpfQkVTVF9TUEVFRCIsIlpfQkVTVF9DT01QUkVTU0lPTiIsIlpfQklOQVJZIiwiWl9URVhUIiwiWl9VTktOT1dOIiwiY3JjVGFibGUiLCJtYWtlVGFibGUiLCJjcmMiLCJjb25maWd1cmF0aW9uX3RhYmxlIiwidHJlZXMiLCJhZGxlcjMyIiwiY3JjMzIiLCJNQVhfTUFUQ0giLCJNSU5fTE9PS0FIRUFEIiwiSENSQ19TVEFURSIsIkJVU1lfU1RBVEUiLCJGSU5JU0hfU1RBVEUiLCJlcnJvckNvZGUiLCJyYW5rIiwiZmx1c2hfcGVuZGluZyIsInBlbmRpbmdfYnVmIiwicGVuZGluZ19vdXQiLCJ0b3RhbF9vdXQiLCJmbHVzaF9ibG9ja19vbmx5IiwiX3RyX2ZsdXNoX2Jsb2NrIiwiYmxvY2tfc3RhcnQiLCJzdHJzdGFydCIsInB1dF9ieXRlIiwicHV0U2hvcnRNU0IiLCJsb25nZXN0X21hdGNoIiwiY3VyX21hdGNoIiwiY2hhaW5fbGVuZ3RoIiwibWF4X2NoYWluX2xlbmd0aCIsInNjYW4iLCJiZXN0X2xlbiIsInByZXZfbGVuZ3RoIiwibmljZV9tYXRjaCIsIndfc2l6ZSIsIl93aW4iLCJ3bWFzayIsIndfbWFzayIsInN0cmVuZCIsInNjYW5fZW5kMSIsInNjYW5fZW5kIiwiZ29vZF9tYXRjaCIsImxvb2thaGVhZCIsIm1hdGNoX3N0YXJ0IiwiZmlsbF93aW5kb3ciLCJfd19zaXplIiwid2luZG93X3NpemUiLCJoYXNoX3NpemUiLCJ0b3RhbF9pbiIsImluc2VydCIsImluc19oIiwiaGFzaF9zaGlmdCIsImhhc2hfbWFzayIsImRlZmxhdGVfZmFzdCIsImhhc2hfaGVhZCIsImJmbHVzaCIsIm1hdGNoX2xlbmd0aCIsIl90cl90YWxseSIsIm1heF9sYXp5X21hdGNoIiwiTUlOX01BVENIIiwibGFzdF9saXQiLCJkZWZsYXRlX3Nsb3ciLCJtYXhfaW5zZXJ0IiwicHJldl9tYXRjaCIsIm1hdGNoX2F2YWlsYWJsZSIsIkNvbmZpZyIsImdvb2RfbGVuZ3RoIiwibWF4X2xhenkiLCJuaWNlX2xlbmd0aCIsIm1heF9jaGFpbiIsIkRlZmxhdGVTdGF0ZSIsInN0YXR1cyIsInBlbmRpbmdfYnVmX3NpemUiLCJnemhlYWQiLCJnemluZGV4IiwibGFzdF9mbHVzaCIsIndfYml0cyIsImhhc2hfYml0cyIsImR5bl9sdHJlZSIsIkhFQVBfU0laRSIsImR5bl9kdHJlZSIsImJsX3RyZWUiLCJsX2Rlc2MiLCJkX2Rlc2MiLCJibF9kZXNjIiwiYmxfY291bnQiLCJNQVhfQklUUyIsImhlYXAiLCJoZWFwX2xlbiIsImhlYXBfbWF4IiwibF9idWYiLCJsaXRfYnVmc2l6ZSIsImRfYnVmIiwib3B0X2xlbiIsInN0YXRpY19sZW4iLCJtYXRjaGVzIiwiYmlfYnVmIiwiYmlfdmFsaWQiLCJkZWZsYXRlUmVzZXRLZWVwIiwiZGF0YV90eXBlIiwiX3RyX2luaXQiLCJtYXhfYmxvY2tfc2l6ZSIsIm1heF9zdGFydCIsImRlZmxhdGVJbml0IiwiZGVmbGF0ZVNldEhlYWRlciIsIm9sZF9mbHVzaCIsImJlZyIsImhjcmMiLCJleHRyYSIsIm9zIiwiYnN0YXRlIiwiZGVmbGF0ZV9odWZmIiwiZGVmbGF0ZV9ybGUiLCJfdHJfYWxpZ24iLCJfdHJfc3RvcmVkX2Jsb2NrIiwiYXZhaWwiLCJ0bXBEaWN0IiwiZGljdExlbmd0aCIsImRlZmxhdGVJbmZvIiwiX2luIiwiX291dCIsImRtYXgiLCJ3c2l6ZSIsIndoYXZlIiwid25leHQiLCJzX3dpbmRvdyIsImhvbGQiLCJsY29kZSIsImRjb2RlIiwibG1hc2siLCJkbWFzayIsImhlcmUiLCJvcCIsImRpc3QiLCJmcm9tX3NvdXJjZSIsImxlbmNvZGUiLCJkaXN0Y29kZSIsImxlbmJpdHMiLCJkaXN0Yml0cyIsInRvcCIsImRvbGVuIiwiZG9kaXN0Iiwic2FuZSIsImluZmxhdGVfZmFzdCIsImluZmxhdGVfdGFibGUiLCJUWVBFIiwiQkFEIiwienN3YXAzMiIsIkluZmxhdGVTdGF0ZSIsImhhdmVkaWN0IiwiY2hlY2siLCJ3Yml0cyIsIm5jb2RlIiwibmxlbiIsIm5kaXN0Iiwid29yayIsImxlbmR5biIsImRpc3RkeW4iLCJiYWNrIiwid2FzIiwiaW5mbGF0ZVJlc2V0S2VlcCIsImluZmxhdGVSZXNldDIiLCJsZW5maXgiLCJkaXN0Zml4IiwidmlyZ2luIiwiZml4ZWR0YWJsZXMiLCJ1cGRhdGV3aW5kb3ciLCJpbmZsYXRlSW5pdCIsInB1dCIsImhlcmVfYml0cyIsImhlcmVfb3AiLCJoZXJlX3ZhbCIsImxhc3RfYml0cyIsImxhc3Rfb3AiLCJsYXN0X3ZhbCIsImhidWYiLCJvcmRlciIsImluZl9sZWF2ZSIsInhmbGFncyIsImV4dHJhX2xlbiIsImluZmxhdGVHZXRIZWFkZXIiLCJpbmZsYXRlSW5mbyIsImxiYXNlIiwibGV4dCIsImRiYXNlIiwiZGV4dCIsImxlbnNfaW5kZXgiLCJ0YWJsZV9pbmRleCIsImluY3IiLCJsb3ciLCJyb290IiwiY3VyciIsImRyb3AiLCJodWZmIiwiYmFzZV9pbmRleCIsIk1BWEJJVFMiLCJvZmZzIiwiZXh0cmFfaW5kZXgiLCJleHRyYV9sYml0cyIsImV4dHJhX2RiaXRzIiwiZXh0cmFfYmxiaXRzIiwiYmxfb3JkZXIiLCJzdGF0aWNfbHRyZWUiLCJzdGF0aWNfZHRyZWUiLCJEX0NPREVTIiwiX2Rpc3RfY29kZSIsIl9sZW5ndGhfY29kZSIsImJhc2VfbGVuZ3RoIiwic3RhdGljX2xfZGVzYyIsInN0YXRpY19kX2Rlc2MiLCJzdGF0aWNfYmxfZGVzYyIsImJhc2VfZGlzdCIsIlN0YXRpY1RyZWVEZXNjIiwic3RhdGljX3RyZWUiLCJleHRyYV9iaXRzIiwiZXh0cmFfYmFzZSIsImVsZW1zIiwibWF4X2xlbmd0aCIsImhhc19zdHJlZSIsIlRyZWVEZXNjIiwiZHluX3RyZWUiLCJzdGF0X2Rlc2MiLCJtYXhfY29kZSIsImRfY29kZSIsInB1dF9zaG9ydCIsInNlbmRfYml0cyIsInNlbmRfY29kZSIsImJpX3JldmVyc2UiLCJnZW5fY29kZXMiLCJuZXh0X2NvZGUiLCJpbml0X2Jsb2NrIiwiTElURVJBTFMiLCJFTkRfQkxPQ0siLCJiaV93aW5kdXAiLCJzbWFsbGVyIiwiX24yIiwiX20yIiwicHFkb3duaGVhcCIsImNvbXByZXNzX2Jsb2NrIiwibHRyZWUiLCJkdHJlZSIsImxjIiwibHgiLCJidWlsZF90cmVlIiwic3RyZWUiLCJ4Yml0cyIsIm92ZXJmbG93IiwiZ2VuX2JpdGxlbiIsInNjYW5fdHJlZSIsImN1cmxlbiIsInByZXZsZW4iLCJuZXh0bGVuIiwibWF4X2NvdW50IiwibWluX2NvdW50IiwiUkVQXzNfNiIsIlJFUFpfM18xMCIsIlJFUFpfMTFfMTM4Iiwic2VuZF90cmVlIiwic3RhdGljX2luaXRfZG9uZSIsInN0b3JlZF9sZW4iLCJjb3B5X2Jsb2NrIiwiTEVOR1RIX0NPREVTIiwiTF9DT0RFUyIsInRyX3N0YXRpY19pbml0Iiwib3B0X2xlbmIiLCJzdGF0aWNfbGVuYiIsIm1heF9ibGluZGV4IiwiYmxhY2tfbWFzayIsImRldGVjdF9kYXRhX3R5cGUiLCJCTF9DT0RFUyIsImJ1aWxkX2JsX3RyZWUiLCJsY29kZXMiLCJkY29kZXMiLCJibGNvZGVzIiwic2VuZF9hbGxfdHJlZXMiLCJTVEFUSUNfVFJFRVMiLCJiaV9mbHVzaCIsImNlcnRpZmljYXRlIiwiUlNBUHJpdmF0ZUtleSIsInNlcSIsImludCIsIlJTQVB1YmxpY0tleSIsIlB1YmxpY0tleSIsIkFsZ29yaXRobUlkZW50aWZpZXIiLCJiaXRzdHIiLCJudWxsXyIsIlByaXZhdGVLZXlJbmZvIiwib2N0c3RyIiwiUHJpdmF0ZUtleSIsIkVuY3J5cHRlZFByaXZhdGVLZXlJbmZvIiwiRW5jcnlwdGVkUHJpdmF0ZUtleSIsIkRTQVByaXZhdGVLZXkiLCJEU0FwYXJhbSIsIkVDUHJpdmF0ZUtleSIsIkVDUGFyYW1ldGVycyIsIm5hbWVkQ3VydmUiLCJhc24iLCJUaW1lIiwidXRjVGltZSIsInV0Y3RpbWUiLCJnZW5lcmFsVGltZSIsImdlbnRpbWUiLCJBdHRyaWJ1dGVUeXBlVmFsdWUiLCJTdWJqZWN0UHVibGljS2V5SW5mbyIsIlJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUiLCJzZXRvZiIsIlJETlNlcXVlbmNlIiwic2Vxb2YiLCJOYW1lIiwicmRuU2VxdWVuY2UiLCJWYWxpZGl0eSIsIkV4dGVuc2lvbiIsImJvb2wiLCJUQlNDZXJ0aWZpY2F0ZSIsIlg1MDlDZXJ0aWZpY2F0ZSIsImZpbmRQcm9jIiwic3RhcnRSZWdleCIsImZ1bGxSZWdleCIsImV2cCIsIm9rZXkiLCJkZWNyeXB0ZWQiLCJjaXBoZXJUZXh0IiwiY2lwaGVyS2V5IiwiY2lwaGVyIiwibWF0Y2gyIiwiYWVzaWQiLCJmaXhQcm9jIiwiY29tcGF0IiwicGFzc3BocmFzZSIsInN1YnR5cGUiLCJuZGF0YSIsInN0cmlwcGVkIiwidGJzQ2VydGlmaWNhdGUiLCJzdWJqZWN0UHVibGljS2V5SW5mbyIsInN1YmplY3RQdWJsaWNLZXkiLCJrZGUiLCJrZGVwYXJhbXMiLCJpdGVycyIsImtleWxlbiIsInBhcmFtZXRlcnMiLCJaRVJPX0JVRiIsImNoZWNrUGFyYW1ldGVycyIsInN1YnRsZSIsInRvQnJvd3NlciIsImNoZWNrcyIsImdldE5leHRUaWNrIiwicXVldWVNaWNyb3Rhc2siLCJzZXRJbW1lZGlhdGUiLCJicm93c2VyUGJrZGYyIiwiaXRlcmF0aW9ucyIsImltcG9ydEtleSIsImRlcml2ZUJpdHMiLCJyZXNvbHZlUHJvbWlzZSIsInByb20iLCJjaGVja05hdGl2ZSIsInJlc3AiLCJNQVhfQUxMT0MiLCJzaXplcyIsInJtZDE2MCIsInNhbHRMZW4iLCJnZXREaWdlc3QiLCJpcGFkMSIsImlwYWQyIiwiREsiLCJibG9jazEiLCJkZXN0UG9zIiwiaExlbiIsImNhY2hlZFNldFRpbWVvdXQiLCJjYWNoZWRDbGVhclRpbWVvdXQiLCJkZWZhdWx0U2V0VGltb3V0IiwiZGVmYXVsdENsZWFyVGltZW91dCIsInJ1blRpbWVvdXQiLCJjdXJyZW50UXVldWUiLCJxdWV1ZSIsImRyYWluaW5nIiwicXVldWVJbmRleCIsImNsZWFuVXBOZXh0VGljayIsImRyYWluUXVldWUiLCJ0aW1lb3V0IiwibWFya2VyIiwicnVuQ2xlYXJUaW1lb3V0IiwiSXRlbSIsIm5vb3AiLCJpMm9wcyIsIm1nZiIsIndpdGhQdWJsaWMiLCJ6QnVmZmVyIiwiaUhhc2giLCJtYXNrZWRTZWVkIiwibWFza2VkRGIiLCJkYiIsImRpZiIsIm9hZXAiLCJwcyIsInBrY3MxIiwicHVibGljS2V5IiwicGFkZGVkTXNnIiwiaExlbjIiLCJkYmxlbiIsIm5vblplcm8iLCJNQVhfQllURVMiLCJnZW5lcmF0ZWQiLCJvbGRCcm93c2VyIiwic2FmZUJ1ZmZlciIsInJhbmRvbWJ5dGVzIiwia0J1ZmZlck1heExlbmd0aCIsImtNYXhVaW50MzIiLCJhc3NlcnRPZmZzZXQiLCJhY3R1YWxGaWxsIiwib3VyQnVmIiwidWludCIsIm9iamVjdEtleXMiLCJvbmVuZCIsIm9uRW5kTlQiLCJkZWJ1ZyIsIkVFbGlzdGVuZXJDb3VudCIsIk91clVpbnQ4QXJyYXkiLCJkZWJ1Z1V0aWwiLCJjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3IiLCJCdWZmZXJMaXN0IiwiZGVzdHJveUltcGwiLCJrUHJveHlFdmVudHMiLCJpc0R1cGxleCIsInJlYWRhYmxlQWRkQ2h1bmsiLCJhZGRUb0Zyb250Iiwic2tpcENodW5rQ2hlY2siLCJlbWl0UmVhZGFibGUiLCJlbWl0UmVhZGFibGVfIiwib25Fb2ZDaHVuayIsImNodW5rSW52YWxpZCIsIl91aW50OEFycmF5VG9CdWZmZXIiLCJhZGRDaHVuayIsIm1heWJlUmVhZE1vcmUiLCJNQVhfSFdNIiwiaG93TXVjaFRvUmVhZCIsImNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrIiwibWF5YmVSZWFkTW9yZV8iLCJ1cGRhdGVSZWFkYWJsZUxpc3RlbmluZyIsIm5SZWFkaW5nTmV4dFRpY2siLCJyZXN1bWVfIiwiZnJvbUxpc3QiLCJlbmRSZWFkYWJsZSIsImVuZFJlYWRhYmxlTlQiLCJ3U3RhdGUiLCJ4cyIsIm5PcmlnIiwiZG9SZWFkIiwicGlwZU9wdHMiLCJlbmRGbiIsIm9udW5waXBlIiwidW5waXBlSW5mbyIsIm9uY2xvc2UiLCJvbmZpbmlzaCIsIm9uZHJhaW4iLCJvbmRhdGEiLCJjbGVhbmVkVXAiLCJwaXBlT25EcmFpbiIsImV2ZW50IiwiZGVzdHMiLCJldiIsIml0ZXJhYmxlIiwidHMiLCJycyIsInByZWZpbmlzaCIsImVycjIiLCJDb3JrZWRSZXF1ZXN0IiwiY29ya1JlcSIsIm9uQ29ya2VkRmluaXNoIiwicmVhbEhhc0luc3RhbmNlIiwiaW50ZXJuYWxVdGlsIiwibm9wIiwibm9EZWNvZGUiLCJvbndyaXRlU3RhdGVVcGRhdGUiLCJmaW5pc2hNYXliZSIsIm9ud3JpdGVFcnJvciIsIm5lZWRGaW5pc2giLCJjbGVhckJ1ZmZlciIsImFmdGVyV3JpdGUiLCJkb1dyaXRlIiwib253cml0ZURyYWluIiwiaG9sZGVyIiwiY2FsbEZpbmFsIiwibmVlZCIsInJTdGF0ZSIsIndyaXRlQWZ0ZXJFbmQiLCJ2YWxpZENodW5rIiwibmV3Q2h1bmsiLCJkZWNvZGVDaHVuayIsIndyaXRlT3JCdWZmZXIiLCJlbmRXcml0YWJsZSIsIl9PYmplY3Qkc2V0UHJvdG90eXBlTyIsImtMYXN0UmVzb2x2ZSIsImtMYXN0UmVqZWN0Iiwia0Vycm9yIiwia0VuZGVkIiwia0xhc3RQcm9taXNlIiwia0hhbmRsZVByb21pc2UiLCJrU3RyZWFtIiwiY3JlYXRlSXRlclJlc3VsdCIsInJlYWRBbmRSZXNvbHZlIiwib25SZWFkYWJsZSIsIkFzeW5jSXRlcmF0b3JQcm90b3R5cGUiLCJSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3JQcm90b3R5cGUiLCJsYXN0UHJvbWlzZSIsIndyYXBGb3JOZXh0IiwiX09iamVjdCRjcmVhdGUiLCJlbnVtZXJhYmxlT25seSIsInN5bWJvbHMiLCJoYXNTdHJpbmdzIiwibmIiLCJlbWl0RXJyb3JBbmRDbG9zZU5UIiwiZW1pdEVycm9yTlQiLCJyZWFkYWJsZURlc3Ryb3llZCIsIndyaXRhYmxlRGVzdHJveWVkIiwiZW9zIiwiY2FsbGVkIiwib25sZWdhY3lmaW5pc2giLCJ3cml0YWJsZUVuZGVkIiwicmVhZGFibGVFbmRlZCIsIm9ucmVxdWVzdCIsImlzUmVxdWVzdCIsImRlc3Ryb3llciIsImNsb3NlZCIsInBvcENhbGxiYWNrIiwic3RyZWFtcyIsImRlc3Ryb3lzIiwiZHVwbGV4S2V5IiwiaHdtIiwiaGlnaFdhdGVyTWFya0Zyb20iLCJ6ciIsInNsIiwiZm4xIiwiZm4yIiwiZm4zIiwiZm40IiwiZm41IiwidGwiLCJjb3B5UHJvcHMiLCJTYWZlQnVmZmVyIiwic2FmZXIiLCJTYWZlciIsImtTdHJpbmdNYXhMZW5ndGgiLCJNQVhfTEVOR1RIIiwiTUFYX1NUUklOR19MRU5HVEgiLCJmaW5hbFNpemUiLCJfZmluYWxTaXplIiwiYWNjdW0iLCJhc3NpZ25lZCIsInJlbWFpbmRlciIsImxvd0JpdHMiLCJoaWdoQml0cyIsIkFsZ29yaXRobSIsIlNoYSIsIl93Iiwicm90bDMwIiwiU2hhMSIsInJvdGw1IiwiU2hhMjU2IiwiU2hhMjI0IiwiX2YiLCJfZyIsIl9oIiwibWFqIiwic2lnbWEwIiwic2lnbWExIiwiZ2FtbWEwIiwiU2hhMzg0IiwiX2FoIiwiX2JoIiwiX2NoIiwiX2RoIiwiX2VoIiwiX2ZoIiwiX2doIiwiX2hoIiwiX2FsIiwiX2JsIiwiX2NsIiwiX2RsIiwiX2VsIiwiX2ZsIiwiX2dsIiwiX2hsIiwid3JpdGVJbnQ2NEJFIiwiU2hhNTEyIiwiR2FtbWEwIiwiR2FtbWEwbCIsIkdhbW1hMSIsIkdhbW1hMWwiLCJnZXRDYXJyeSIsImdhbW1hMGwiLCJnYW1tYTEiLCJnYW1tYTFsIiwiV2k3aCIsIldpN2wiLCJXaTE2aCIsIldpMTZsIiwiV2lsIiwiV2loIiwibWFqaCIsIm1hamwiLCJzaWdtYTBoIiwic2lnbWEwbCIsInNpZ21hMWgiLCJzaWdtYTFsIiwiS2loIiwiS2lsIiwiY2hoIiwiY2hsIiwidDFsIiwidDFoIiwidDJsIiwidDJoIiwiRUUiLCJkaWRPbkVuZCIsImNsZWFudXAiLCJuZW5jIiwicmV0cmllZCIsIl9ub3JtYWxpemVFbmNvZGluZyIsIm5vcm1hbGl6ZUVuY29kaW5nIiwidXRmMTZUZXh0IiwidXRmMTZFbmQiLCJ1dGY4RmlsbExhc3QiLCJiYXNlNjRUZXh0IiwiYmFzZTY0RW5kIiwic2ltcGxlV3JpdGUiLCJzaW1wbGVFbmQiLCJ1dGY4Q2hlY2tCeXRlIiwidXRmOENoZWNrRXh0cmFCeXRlcyIsInV0ZjhDaGVja0luY29tcGxldGUiLCJUcnVzdGxpc3QiLCJpbml0aWFsaXplZCIsImNlcnRJbmZvcyIsImNlcnRzIiwiQ29zZTEiLCJwcm90ZWN0ZWRfIiwidW5wcm90ZWN0ZWQiLCJwYXlsb2FkIiwic2lnbmF0dXJlcyIsImNib3IiLCJlbmNvZGVkRGF0YSIsImRlY29kZWREYXRhIiwiY29zZTEiLCJtYWtlRGF0YUZvclZlcmlmaWNhdGlvbiIsInJhdzEiLCJyYXcyIiwiZW5jb2RlZFVuc2lnbmVkSW50ZWdlciIsInB0ciIsImNvbXB1dGVMZW5ndGgiLCJzcmNwb3MiLCJkZXN0cG9zIiwiZW5jb2RlU2lnbmF0dXJlIiwiRXVEZ2MiLCJjYm9yV2ViIiwiY3d0IiwiZXVkZ2MiLCJnZXRDZXJ0SW5mb3MiLCJleHBsaWNpdENlcnRzIiwiY2VydEZpbHRlciIsIm9sZENvdW50IiwiaW5mbyIsImNlcnRJbmZvIiwibm90YmVmb3JlIiwibm90YWZ0ZXIiLCJzdWJqZWN0IiwiRXVEZ2NfcGFyc2UiLCJFdURnY192YWxpZGF0ZSIsIndoaWNoVHlwZWRBcnJheSIsIkJpZ0ludFN1cHBvcnRlZCIsIlN5bWJvbFN1cHBvcnRlZCIsIk9iamVjdFRvU3RyaW5nIiwibnVtYmVyVmFsdWUiLCJzdHJpbmdWYWx1ZSIsImJvb2xlYW5WYWx1ZSIsImJpZ0ludFZhbHVlIiwic3ltYm9sVmFsdWUiLCJjaGVja0JveGVkUHJpbWl0aXZlIiwicHJvdG90eXBlVmFsdWVPZiIsImlzTWFwVG9TdHJpbmciLCJpc1NldFRvU3RyaW5nIiwiaXNXZWFrTWFwVG9TdHJpbmciLCJpc1dlYWtTZXRUb1N0cmluZyIsImlzQXJyYXlCdWZmZXJUb1N0cmluZyIsIndvcmtpbmciLCJpc0RhdGFWaWV3VG9TdHJpbmciLCJpc1VpbnQ4QXJyYXkiLCJpc1VpbnQ4Q2xhbXBlZEFycmF5IiwiaXNVaW50MTZBcnJheSIsImlzVWludDMyQXJyYXkiLCJpc0ludDhBcnJheSIsImlzSW50MTZBcnJheSIsImlzSW50MzJBcnJheSIsImlzQmlnSW50NjRBcnJheSIsImlzQmlnVWludDY0QXJyYXkiLCJTaGFyZWRBcnJheUJ1ZmZlckNvcHkiLCJpc1NoYXJlZEFycmF5QnVmZmVyVG9TdHJpbmciLCJpc1NoYXJlZEFycmF5QnVmZmVyIiwiaXNHZW5lcmF0b3JPYmplY3QiLCJpc1dlYkFzc2VtYmx5Q29tcGlsZWRNb2R1bGUiLCJkZXNjcmlwdG9ycyIsImZvcm1hdFJlZ0V4cCIsIm9iamVjdHMiLCJpc051bGwiLCJub0RlcHJlY2F0aW9uIiwidGhyb3dEZXByZWNhdGlvbiIsInRyYWNlRGVwcmVjYXRpb24iLCJkZWJ1Z3MiLCJkZWJ1Z0VudlJlZ2V4IiwiTk9ERV9ERUJVRyIsImRlYnVnRW52Iiwic3R5bGl6ZU5vQ29sb3IiLCJpc0Jvb2xlYW4iLCJfZXh0ZW5kIiwiaXNVbmRlZmluZWQiLCJmb3JtYXRWYWx1ZSIsInN0eWxlVHlwZSIsInN0eWxlIiwic2ltcGxlIiwiaXNOdW1iZXIiLCJmb3JtYXRQcmltaXRpdmUiLCJ2aXNpYmxlS2V5cyIsImlkeCIsImFycmF5VG9IYXNoIiwiZm9ybWF0RXJyb3IiLCJicmFjZXMiLCJ0b1VUQ1N0cmluZyIsImZvcm1hdFByb3BlcnR5IiwiZm9ybWF0QXJyYXkiLCJyZWR1Y2VUb1NpbmdsZVN0cmluZyIsImxpbmUiLCJwaWQiLCJ0eXBlcyIsImlzTnVsbE9yVW5kZWZpbmVkIiwiaXNTeW1ib2wiLCJpc1ByaW1pdGl2ZSIsIm1vbnRocyIsInRpbWVzdGFtcCIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJnZXREYXRlIiwiZ2V0TW9udGgiLCJvcmlnaW4iLCJrQ3VzdG9tUHJvbWlzaWZpZWRTeW1ib2wiLCJjYWxsYmFja2lmeU9uUmVqZWN0ZWQiLCJuZXdSZWFzb24iLCJwcm9taXNpZnkiLCJvcmlnaW5hbCIsInByb21pc2VSZXNvbHZlIiwicHJvbWlzZVJlamVjdCIsImNhbGxiYWNraWZ5IiwiY2FsbGJhY2tpZmllZCIsIm1heWJlQ2IiLCJyZWoiLCJmb3VuZE5hbWUiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJsb2FkZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiX19lc01vZHVsZSIsImRlZmluaXRpb24iLCJubWQiLCJwYXRocyJdLCJtYXBwaW5ncyI6Ijt5Q0FFQSxNQUFNQSxFQUFPQyxFQUViRCxFQUFLRSxPQUFTLEVBQVEsTUFFdEJGLEVBQUtHLE9BQVMsZUFDZEgsRUFBS0ksS0FBTyxFQUFRLE1BQ3BCSixFQUFLSyxVQUFZLEVBQVEsTUFDekJMLEVBQUtNLFNBQVcsRUFBUSxNQUN4Qk4sRUFBS08sU0FBVyxFQUFRLE8sNEJDUnhCLE1BQU1BLEVBQVcsRUFBUSxNQUNuQkQsRUFBVyxFQUFRLE1BQ25CRSxFQUFXLEVBQVEsTUFRekIsU0FBU0MsRUFBT0MsRUFBTUMsR0FDcEJDLEtBQUtGLEtB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LEVBQUcsR0FDbEQsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFDbkQsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFDcEQsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFFbEQsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FDakQsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFDcEQsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDakQsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FFcEQsRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFDbkQsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEdBQUksRUFDbkQsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFDcEQsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FFakQsRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFDcEQsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFDbEQsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FDbkQsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFFbEQsR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFDbkQsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFDbkQsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FDbEQsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FFbEQsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FDbkQsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFDbEQsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFDcEQsR0FBSSxF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LEVBQ05LLE9BQVEsQ0FDTixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxrRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0Usa0VBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esc0VBSU5OLElBQUssQ0FDSHo5RCxJQUFLLEVBQ0wrOUQsT0FBUSxDQUNOLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0Usa0VBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLGtFQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLGtFQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsaUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0Usa0VBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Es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QUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUNuRCxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxHQUNsRCxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUNuRCxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxJQUdoRDhxRixFQUFLLENBQ1AsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FDbEQsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFDbkQsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FDbEQsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FDbEQsR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsSUFHaER0K0UsRUFBSSxDQUNOLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQ3JELEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUks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QUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUNuRCxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxJQUdoRHFyQixFQUFLLENBQ1AsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FDbEQsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFDbkQsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FDbEQsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FDbEQsR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsSUFHaERDLEVBQUssQ0FDUCxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUNyRCxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUNwRCxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxFQUNyRCxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUNwRCxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxH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QTQ0SCxFQUFvQkgsR0FBVXYzSCxLQUFLbUUsRUFBT3JGLFFBQVNxRixFQUFRQSxFQUFPckYsUUFBU3c0SCxHQUczRW56SCxFQUFPc3pILFFBQVMsRUFHVHR6SCxFQUFPckYsUUN2QmZ3NEgsRUFBb0IxNUcsRUFBS3paLElBQ3hCLElBQUk0K0YsRUFBUzUrRixHQUFVQSxFQUFPd3pILFdBQzdCLElBQU94ekgsRUFBaUIsUUFDeEIsSUFBTSxFQUVQLE9BREFtekgsRUFBb0JyOEYsRUFBRThuRSxFQUFRLENBQUV2d0YsRUFBR3V3RixJQUM1QkEsR0NMUnUwQixFQUFvQnI4RixFQUFJLENBQUNuOEIsRUFBUzg0SCxLQUNqQyxJQUFJLElBQUk5ekgsS0FBTzh6SCxFQUNYTixFQUFvQjVnSCxFQUFFa2hILEVBQVk5ekgsS0FBU3d6SCxFQUFvQjVnSCxFQUFFNVgsRUFBU2dGLElBQzVFb0IsT0FBT2tvQixlQUFldHVCLEVBQVNnRixFQUFLLENBQUV1cEIsWUFBWSxFQUFNZSxJQUFLd3BHLEVBQVc5ekgsTUNKM0V3ekgsRUFBb0J6MUcsRUFBSSxXQUN2QixHQUEwQixpQkFBZit0RCxXQUF5QixPQUFPQSxXQUMzQyxJQUNDLE9BQU9ud0UsTUFBUSxJQUFJeXVCLFNBQVMsY0FBYixHQUNkLE1BQU83bkIsR0FDUixHQUFzQixpQkFBWDRKLE9BQXFCLE9BQU9BLFFBTGpCLEdDQXhCcW5ILEVBQW9CNWdILEVBQUksQ0FBQy9TLEVBQUtZLElBQVVXLE9BQU94RixVQUFVUyxlQUFlSCxLQUFLMkQsRUFBS1ksR0NBbEYreUgsRUFBb0JPLElBQU8xekgsSUFDMUJBLEVBQU8yekgsTUFBUSxHQUNWM3pILEVBQU9mLFdBQVVlLEVBQU9mLFNBQVcsSUFDakNlLEdDQWtCbXpILEVBQW9CLE8iLCJmaWxlIjoiZXVkZ2MuanMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGFzbjEgPSBleHBvcnRzO1xuXG5hc24xLmJpZ251bSA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbmFzbjEuZGVmaW5lID0gcmVxdWlyZSgnLi9hc24xL2FwaScpLmRlZmluZTtcbmFzbjEuYmFzZSA9IHJlcXVpcmUoJy4vYXNuMS9iYXNlJyk7XG5hc24xLmNvbnN0YW50cyA9IHJlcXVpcmUoJy4vYXNuMS9jb25zdGFudHMnKTtcbmFzbjEuZGVjb2RlcnMgPSByZXF1aXJlKCcuL2FzbjEvZGVjb2RlcnMnKTtcbmFzbjEuZW5jb2RlcnMgPSByZXF1aXJlKCcuL2FzbjEvZW5jb2RlcnMnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgZW5jb2RlcnMgPSByZXF1aXJlKCcuL2VuY29kZXJzJyk7XG5jb25zdCBkZWNvZGVycyA9IHJlcXVpcmUoJy4vZGVjb2RlcnMnKTtcbmNvbnN0IGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuY29uc3QgYXBpID0gZXhwb3J0cztcblxuYXBpLmRlZmluZSA9IGZ1bmN0aW9uIGRlZmluZShuYW1lLCBib2R5KSB7XG4gIHJldHVybiBuZXcgRW50aXR5KG5hbWUsIGJvZHkpO1xufTtcblxuZnVuY3Rpb24gRW50aXR5KG5hbWUsIGJvZHkpIHtcbiAgdGhpcy5uYW1lID0gbmFtZTtcbiAgdGhpcy5ib2R5ID0gYm9keTtcblxuICB0aGlzLmRlY29kZXJzID0ge307XG4gIHRoaXMuZW5jb2RlcnMgPSB7fTtcbn1cblxuRW50aXR5LnByb3RvdHlwZS5fY3JlYXRlTmFtZWQgPSBmdW5jdGlvbiBjcmVhdGVOYW1lZChCYXNlKSB7XG4gIGNvbnN0IG5hbWUgPSB0aGlzLm5hbWU7XG5cbiAgZnVuY3Rpb24gR2VuZXJhdGVkKGVudGl0eSkge1xuICAgIHRoaXMuX2luaXROYW1lZChlbnRpdHksIG5hbWUpO1xuICB9XG4gIGluaGVyaXRzKEdlbmVyYXRlZCwgQmFzZSk7XG4gIEdlbmVyYXRlZC5wcm90b3R5cGUuX2luaXROYW1lZCA9IGZ1bmN0aW9uIF9pbml0TmFtZWQoZW50aXR5LCBuYW1lKSB7XG4gICAgQmFzZS5jYWxsKHRoaXMsIGVudGl0eSwgbmFtZSk7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBHZW5lcmF0ZWQodGhpcyk7XG59O1xuXG5FbnRpdHkucHJvdG90eXBlLl9nZXREZWNvZGVyID0gZnVuY3Rpb24gX2dldERlY29kZXIoZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAnZGVyJztcbiAgLy8gTGF6aWx5IGNyZWF0ZSBkZWNvZGVyXG4gIGlmICghdGhpcy5kZWNvZGVycy5oYXNPd25Qcm9wZXJ0eShlbmMpKVxuICAgIHRoaXMuZGVjb2RlcnNbZW5jXSA9IHRoaXMuX2NyZWF0ZU5hbWVkKGRlY29kZXJzW2VuY10pO1xuICByZXR1cm4gdGhpcy5kZWNvZGVyc1tlbmNdO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoZGF0YSwgZW5jLCBvcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLl9nZXREZWNvZGVyKGVuYykuZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5fZ2V0RW5jb2RlciA9IGZ1bmN0aW9uIF9nZXRFbmNvZGVyKGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ2Rlcic7XG4gIC8vIExhemlseSBjcmVhdGUgZW5jb2RlclxuICBpZiAoIXRoaXMuZW5jb2RlcnMuaGFzT3duUHJvcGVydHkoZW5jKSlcbiAgICB0aGlzLmVuY29kZXJzW2VuY10gPSB0aGlzLl9jcmVhdGVOYW1lZChlbmNvZGVyc1tlbmNdKTtcbiAgcmV0dXJuIHRoaXMuZW5jb2RlcnNbZW5jXTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIGVuYywgLyogaW50ZXJuYWwgKi8gcmVwb3J0ZXIpIHtcbiAgcmV0dXJuIHRoaXMuX2dldEVuY29kZXIoZW5jKS5lbmNvZGUoZGF0YSwgcmVwb3J0ZXIpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuY29uc3QgUmVwb3J0ZXIgPSByZXF1aXJlKCcuLi9iYXNlL3JlcG9ydGVyJykuUmVwb3J0ZXI7XG5jb25zdCBCdWZmZXIgPSByZXF1aXJlKCdzYWZlci1idWZmZXInKS5CdWZmZXI7XG5cbmZ1bmN0aW9uIERlY29kZXJCdWZmZXIoYmFzZSwgb3B0aW9ucykge1xuICBSZXBvcnRlci5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiYXNlKSkge1xuICAgIHRoaXMuZXJyb3IoJ0lucHV0IG5vdCBCdWZmZXInKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLmJhc2UgPSBiYXNlO1xuICB0aGlzLm9mZnNldCA9IDA7XG4gIHRoaXMubGVuZ3RoID0gYmFzZS5sZW5ndGg7XG59XG5pbmhlcml0cyhEZWNvZGVyQnVmZmVyLCBSZXBvcnRlcik7XG5leHBvcnRzLkRlY29kZXJCdWZmZXIgPSBEZWNvZGVyQnVmZmVyO1xuXG5EZWNvZGVyQnVmZmVyLmlzRGVjb2RlckJ1ZmZlciA9IGZ1bmN0aW9uIGlzRGVjb2RlckJ1ZmZlcihkYXRhKSB7XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgRGVjb2RlckJ1ZmZlcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gT3IgYWNjZXB0IGNvbXBhdGlibGUgQVBJXG4gIGNvbnN0IGlzQ29tcGF0aWJsZSA9IHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJlxuICAgIEJ1ZmZlci5pc0J1ZmZlcihkYXRhLmJhc2UpICYmXG4gICAgZGF0YS5jb25zdHJ1Y3Rvci5uYW1lID09PSAnRGVjb2RlckJ1ZmZlcicgJiZcbiAgICB0eXBlb2YgZGF0YS5vZmZzZXQgPT09ICdudW1iZXInICYmXG4gICAgdHlwZW9mIGRhdGEubGVuZ3RoID09PSAnbnVtYmVyJyAmJlxuICAgIHR5cGVvZiBkYXRhLnNhdmUgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgZGF0YS5yZXN0b3JlID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIGRhdGEuaXNFbXB0eSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBkYXRhLnJlYWRVSW50OCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBkYXRhLnNraXAgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgZGF0YS5yYXcgPT09ICdmdW5jdGlvbic7XG5cbiAgcmV0dXJuIGlzQ29tcGF0aWJsZTtcbn07XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLnNhdmUgPSBmdW5jdGlvbiBzYXZlKCkge1xuICByZXR1cm4geyBvZmZzZXQ6IHRoaXMub2Zmc2V0LCByZXBvcnRlcjogUmVwb3J0ZXIucHJvdG90eXBlLnNhdmUuY2FsbCh0aGlzKSB9O1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUucmVzdG9yZSA9IGZ1bmN0aW9uIHJlc3RvcmUoc2F2ZSkge1xuICAvLyBSZXR1cm4gc2tpcHBlZCBkYXRhXG4gIGNvbnN0IHJlcyA9IG5ldyBEZWNvZGVyQnVmZmVyKHRoaXMuYmFzZSk7XG4gIHJlcy5vZmZzZXQgPSBzYXZlLm9mZnNldDtcbiAgcmVzLmxlbmd0aCA9IHRoaXMub2Zmc2V0O1xuXG4gIHRoaXMub2Zmc2V0ID0gc2F2ZS5vZmZzZXQ7XG4gIFJlcG9ydGVyLnByb3RvdHlwZS5yZXN0b3JlLmNhbGwodGhpcywgc2F2ZS5yZXBvcnRlcik7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLmlzRW1wdHkgPSBmdW5jdGlvbiBpc0VtcHR5KCkge1xuICByZXR1cm4gdGhpcy5vZmZzZXQgPT09IHRoaXMubGVuZ3RoO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4KGZhaWwpIHtcbiAgaWYgKHRoaXMub2Zmc2V0ICsgMSA8PSB0aGlzLmxlbmd0aClcbiAgICByZXR1cm4gdGhpcy5iYXNlLnJlYWRVSW50OCh0aGlzLm9mZnNldCsrLCB0cnVlKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmVycm9yKGZhaWwgfHwgJ0RlY29kZXJCdWZmZXIgb3ZlcnJ1bicpO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuc2tpcCA9IGZ1bmN0aW9uIHNraXAoYnl0ZXMsIGZhaWwpIHtcbiAgaWYgKCEodGhpcy5vZmZzZXQgKyBieXRlcyA8PSB0aGlzLmxlbmd0aCkpXG4gICAgcmV0dXJuIHRoaXMuZXJyb3IoZmFpbCB8fCAnRGVjb2RlckJ1ZmZlciBvdmVycnVuJyk7XG5cbiAgY29uc3QgcmVzID0gbmV3IERlY29kZXJCdWZmZXIodGhpcy5iYXNlKTtcblxuICAvLyBTaGFyZSByZXBvcnRlciBzdGF0ZVxuICByZXMuX3JlcG9ydGVyU3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHJlcy5vZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgcmVzLmxlbmd0aCA9IHRoaXMub2Zmc2V0ICsgYnl0ZXM7XG4gIHRoaXMub2Zmc2V0ICs9IGJ5dGVzO1xuICByZXR1cm4gcmVzO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUucmF3ID0gZnVuY3Rpb24gcmF3KHNhdmUpIHtcbiAgcmV0dXJuIHRoaXMuYmFzZS5zbGljZShzYXZlID8gc2F2ZS5vZmZzZXQgOiB0aGlzLm9mZnNldCwgdGhpcy5sZW5ndGgpO1xufTtcblxuZnVuY3Rpb24gRW5jb2RlckJ1ZmZlcih2YWx1ZSwgcmVwb3J0ZXIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZS5tYXAoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgaWYgKCFFbmNvZGVyQnVmZmVyLmlzRW5jb2RlckJ1ZmZlcihpdGVtKSlcbiAgICAgICAgaXRlbSA9IG5ldyBFbmNvZGVyQnVmZmVyKGl0ZW0sIHJlcG9ydGVyKTtcbiAgICAgIHRoaXMubGVuZ3RoICs9IGl0ZW0ubGVuZ3RoO1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfSwgdGhpcyk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIGlmICghKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMHhmZikpXG4gICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ25vbi1ieXRlIEVuY29kZXJCdWZmZXIgdmFsdWUnKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5sZW5ndGggPSBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSk7XG4gIH0gZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSkge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1Vuc3VwcG9ydGVkIHR5cGU6ICcgKyB0eXBlb2YgdmFsdWUpO1xuICB9XG59XG5leHBvcnRzLkVuY29kZXJCdWZmZXIgPSBFbmNvZGVyQnVmZmVyO1xuXG5FbmNvZGVyQnVmZmVyLmlzRW5jb2RlckJ1ZmZlciA9IGZ1bmN0aW9uIGlzRW5jb2RlckJ1ZmZlcihkYXRhKSB7XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgRW5jb2RlckJ1ZmZlcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gT3IgYWNjZXB0IGNvbXBhdGlibGUgQVBJXG4gIGNvbnN0IGlzQ29tcGF0aWJsZSA9IHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJlxuICAgIGRhdGEuY29uc3RydWN0b3IubmFtZSA9PT0gJ0VuY29kZXJCdWZmZXInICYmXG4gICAgdHlwZW9mIGRhdGEubGVuZ3RoID09PSAnbnVtYmVyJyAmJlxuICAgIHR5cGVvZiBkYXRhLmpvaW4gPT09ICdmdW5jdGlvbic7XG5cbiAgcmV0dXJuIGlzQ29tcGF0aWJsZTtcbn07XG5cbkVuY29kZXJCdWZmZXIucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBqb2luKG91dCwgb2Zmc2V0KSB7XG4gIGlmICghb3V0KVxuICAgIG91dCA9IEJ1ZmZlci5hbGxvYyh0aGlzLmxlbmd0aCk7XG4gIGlmICghb2Zmc2V0KVxuICAgIG9mZnNldCA9IDA7XG5cbiAgaWYgKHRoaXMubGVuZ3RoID09PSAwKVxuICAgIHJldHVybiBvdXQ7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICB0aGlzLnZhbHVlLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgaXRlbS5qb2luKG91dCwgb2Zmc2V0KTtcbiAgICAgIG9mZnNldCArPSBpdGVtLmxlbmd0aDtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdudW1iZXInKVxuICAgICAgb3V0W29mZnNldF0gPSB0aGlzLnZhbHVlO1xuICAgIGVsc2UgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnc3RyaW5nJylcbiAgICAgIG91dC53cml0ZSh0aGlzLnZhbHVlLCBvZmZzZXQpO1xuICAgIGVsc2UgaWYgKEJ1ZmZlci5pc0J1ZmZlcih0aGlzLnZhbHVlKSlcbiAgICAgIHRoaXMudmFsdWUuY29weShvdXQsIG9mZnNldCk7XG4gICAgb2Zmc2V0ICs9IHRoaXMubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIG91dDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGJhc2UgPSBleHBvcnRzO1xuXG5iYXNlLlJlcG9ydGVyID0gcmVxdWlyZSgnLi9yZXBvcnRlcicpLlJlcG9ydGVyO1xuYmFzZS5EZWNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi9idWZmZXInKS5EZWNvZGVyQnVmZmVyO1xuYmFzZS5FbmNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi9idWZmZXInKS5FbmNvZGVyQnVmZmVyO1xuYmFzZS5Ob2RlID0gcmVxdWlyZSgnLi9ub2RlJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IFJlcG9ydGVyID0gcmVxdWlyZSgnLi4vYmFzZS9yZXBvcnRlcicpLlJlcG9ydGVyO1xuY29uc3QgRW5jb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4uL2Jhc2UvYnVmZmVyJykuRW5jb2RlckJ1ZmZlcjtcbmNvbnN0IERlY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuLi9iYXNlL2J1ZmZlcicpLkRlY29kZXJCdWZmZXI7XG5jb25zdCBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbi8vIFN1cHBvcnRlZCB0YWdzXG5jb25zdCB0YWdzID0gW1xuICAnc2VxJywgJ3NlcW9mJywgJ3NldCcsICdzZXRvZicsICdvYmppZCcsICdib29sJyxcbiAgJ2dlbnRpbWUnLCAndXRjdGltZScsICdudWxsXycsICdlbnVtJywgJ2ludCcsICdvYmpEZXNjJyxcbiAgJ2JpdHN0cicsICdibXBzdHInLCAnY2hhcnN0cicsICdnZW5zdHInLCAnZ3JhcGhzdHInLCAnaWE1c3RyJywgJ2lzbzY0NnN0cicsXG4gICdudW1zdHInLCAnb2N0c3RyJywgJ3ByaW50c3RyJywgJ3Q2MXN0cicsICd1bmlzdHInLCAndXRmOHN0cicsICd2aWRlb3N0cidcbl07XG5cbi8vIFB1YmxpYyBtZXRob2RzIGxpc3RcbmNvbnN0IG1ldGhvZHMgPSBbXG4gICdrZXknLCAnb2JqJywgJ3VzZScsICdvcHRpb25hbCcsICdleHBsaWNpdCcsICdpbXBsaWNpdCcsICdkZWYnLCAnY2hvaWNlJyxcbiAgJ2FueScsICdjb250YWlucydcbl0uY29uY2F0KHRhZ3MpO1xuXG4vLyBPdmVycmlkZWQgbWV0aG9kcyBsaXN0XG5jb25zdCBvdmVycmlkZWQgPSBbXG4gICdfcGVla1RhZycsICdfZGVjb2RlVGFnJywgJ191c2UnLFxuICAnX2RlY29kZVN0cicsICdfZGVjb2RlT2JqaWQnLCAnX2RlY29kZVRpbWUnLFxuICAnX2RlY29kZU51bGwnLCAnX2RlY29kZUludCcsICdfZGVjb2RlQm9vbCcsICdfZGVjb2RlTGlzdCcsXG5cbiAgJ19lbmNvZGVDb21wb3NpdGUnLCAnX2VuY29kZVN0cicsICdfZW5jb2RlT2JqaWQnLCAnX2VuY29kZVRpbWUnLFxuICAnX2VuY29kZU51bGwnLCAnX2VuY29kZUludCcsICdfZW5jb2RlQm9vbCdcbl07XG5cbmZ1bmN0aW9uIE5vZGUoZW5jLCBwYXJlbnQsIG5hbWUpIHtcbiAgY29uc3Qgc3RhdGUgPSB7fTtcbiAgdGhpcy5fYmFzZVN0YXRlID0gc3RhdGU7XG5cbiAgc3RhdGUubmFtZSA9IG5hbWU7XG4gIHN0YXRlLmVuYyA9IGVuYztcblxuICBzdGF0ZS5wYXJlbnQgPSBwYXJlbnQgfHwgbnVsbDtcbiAgc3RhdGUuY2hpbGRyZW4gPSBudWxsO1xuXG4gIC8vIFN0YXRlXG4gIHN0YXRlLnRhZyA9IG51bGw7XG4gIHN0YXRlLmFyZ3MgPSBudWxsO1xuICBzdGF0ZS5yZXZlcnNlQXJncyA9IG51bGw7XG4gIHN0YXRlLmNob2ljZSA9IG51bGw7XG4gIHN0YXRlLm9wdGlvbmFsID0gZmFsc2U7XG4gIHN0YXRlLmFueSA9IGZhbHNlO1xuICBzdGF0ZS5vYmogPSBmYWxzZTtcbiAgc3RhdGUudXNlID0gbnVsbDtcbiAgc3RhdGUudXNlRGVjb2RlciA9IG51bGw7XG4gIHN0YXRlLmtleSA9IG51bGw7XG4gIHN0YXRlWydkZWZhdWx0J10gPSBudWxsO1xuICBzdGF0ZS5leHBsaWNpdCA9IG51bGw7XG4gIHN0YXRlLmltcGxpY2l0ID0gbnVsbDtcbiAgc3RhdGUuY29udGFpbnMgPSBudWxsO1xuXG4gIC8vIFNob3VsZCBjcmVhdGUgbmV3IGluc3RhbmNlIG9uIGVhY2ggbWV0aG9kXG4gIGlmICghc3RhdGUucGFyZW50KSB7XG4gICAgc3RhdGUuY2hpbGRyZW4gPSBbXTtcbiAgICB0aGlzLl93cmFwKCk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gTm9kZTtcblxuY29uc3Qgc3RhdGVQcm9wcyA9IFtcbiAgJ2VuYycsICdwYXJlbnQnLCAnY2hpbGRyZW4nLCAndGFnJywgJ2FyZ3MnLCAncmV2ZXJzZUFyZ3MnLCAnY2hvaWNlJyxcbiAgJ29wdGlvbmFsJywgJ2FueScsICdvYmonLCAndXNlJywgJ2FsdGVyZWRVc2UnLCAna2V5JywgJ2RlZmF1bHQnLCAnZXhwbGljaXQnLFxuICAnaW1wbGljaXQnLCAnY29udGFpbnMnXG5dO1xuXG5Ob2RlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lKCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgY29uc3QgY3N0YXRlID0ge307XG4gIHN0YXRlUHJvcHMuZm9yRWFjaChmdW5jdGlvbihwcm9wKSB7XG4gICAgY3N0YXRlW3Byb3BdID0gc3RhdGVbcHJvcF07XG4gIH0pO1xuICBjb25zdCByZXMgPSBuZXcgdGhpcy5jb25zdHJ1Y3Rvcihjc3RhdGUucGFyZW50KTtcbiAgcmVzLl9iYXNlU3RhdGUgPSBjc3RhdGU7XG4gIHJldHVybiByZXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fd3JhcCA9IGZ1bmN0aW9uIHdyYXAoKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICBtZXRob2RzLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgdGhpc1ttZXRob2RdID0gZnVuY3Rpb24gX3dyYXBwZWRNZXRob2QoKSB7XG4gICAgICBjb25zdCBjbG9uZSA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO1xuICAgICAgc3RhdGUuY2hpbGRyZW4ucHVzaChjbG9uZSk7XG4gICAgICByZXR1cm4gY2xvbmVbbWV0aG9kXS5hcHBseShjbG9uZSwgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9LCB0aGlzKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdChib2R5KSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5wYXJlbnQgPT09IG51bGwpO1xuICBib2R5LmNhbGwodGhpcyk7XG5cbiAgLy8gRmlsdGVyIGNoaWxkcmVuXG4gIHN0YXRlLmNoaWxkcmVuID0gc3RhdGUuY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgcmV0dXJuIGNoaWxkLl9iYXNlU3RhdGUucGFyZW50ID09PSB0aGlzO1xuICB9LCB0aGlzKTtcbiAgYXNzZXJ0LmVxdWFsKHN0YXRlLmNoaWxkcmVuLmxlbmd0aCwgMSwgJ1Jvb3Qgbm9kZSBjYW4gaGF2ZSBvbmx5IG9uZSBjaGlsZCcpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX3VzZUFyZ3MgPSBmdW5jdGlvbiB1c2VBcmdzKGFyZ3MpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgLy8gRmlsdGVyIGNoaWxkcmVuIGFuZCBhcmdzXG4gIGNvbnN0IGNoaWxkcmVuID0gYXJncy5maWx0ZXIoZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGFyZyBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I7XG4gIH0sIHRoaXMpO1xuICBhcmdzID0gYXJncy5maWx0ZXIoZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuICEoYXJnIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcik7XG4gIH0sIHRoaXMpO1xuXG4gIGlmIChjaGlsZHJlbi5sZW5ndGggIT09IDApIHtcbiAgICBhc3NlcnQoc3RhdGUuY2hpbGRyZW4gPT09IG51bGwpO1xuICAgIHN0YXRlLmNoaWxkcmVuID0gY2hpbGRyZW47XG5cbiAgICAvLyBSZXBsYWNlIHBhcmVudCB0byBtYWludGFpbiBiYWNrd2FyZCBsaW5rXG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihjaGlsZCkge1xuICAgICAgY2hpbGQuX2Jhc2VTdGF0ZS5wYXJlbnQgPSB0aGlzO1xuICAgIH0sIHRoaXMpO1xuICB9XG4gIGlmIChhcmdzLmxlbmd0aCAhPT0gMCkge1xuICAgIGFzc2VydChzdGF0ZS5hcmdzID09PSBudWxsKTtcbiAgICBzdGF0ZS5hcmdzID0gYXJncztcbiAgICBzdGF0ZS5yZXZlcnNlQXJncyA9IGFyZ3MubWFwKGZ1bmN0aW9uKGFyZykge1xuICAgICAgaWYgKHR5cGVvZiBhcmcgIT09ICdvYmplY3QnIHx8IGFyZy5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0KVxuICAgICAgICByZXR1cm4gYXJnO1xuXG4gICAgICBjb25zdCByZXMgPSB7fTtcbiAgICAgIE9iamVjdC5rZXlzKGFyZykuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgaWYgKGtleSA9PSAoa2V5IHwgMCkpXG4gICAgICAgICAga2V5IHw9IDA7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gYXJnW2tleV07XG4gICAgICAgIHJlc1t2YWx1ZV0gPSBrZXk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSk7XG4gIH1cbn07XG5cbi8vXG4vLyBPdmVycmlkZWQgbWV0aG9kc1xuLy9cblxub3ZlcnJpZGVkLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gIE5vZGUucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiBfb3ZlcnJpZGVkKCkge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICAgIHRocm93IG5ldyBFcnJvcihtZXRob2QgKyAnIG5vdCBpbXBsZW1lbnRlZCBmb3IgZW5jb2Rpbmc6ICcgKyBzdGF0ZS5lbmMpO1xuICB9O1xufSk7XG5cbi8vXG4vLyBQdWJsaWMgbWV0aG9kc1xuLy9cblxudGFncy5mb3JFYWNoKGZ1bmN0aW9uKHRhZykge1xuICBOb2RlLnByb3RvdHlwZVt0YWddID0gZnVuY3Rpb24gX3RhZ01ldGhvZCgpIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgICBjb25zdCBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICAgIGFzc2VydChzdGF0ZS50YWcgPT09IG51bGwpO1xuICAgIHN0YXRlLnRhZyA9IHRhZztcblxuICAgIHRoaXMuX3VzZUFyZ3MoYXJncyk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn0pO1xuXG5Ob2RlLnByb3RvdHlwZS51c2UgPSBmdW5jdGlvbiB1c2UoaXRlbSkge1xuICBhc3NlcnQoaXRlbSk7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS51c2UgPT09IG51bGwpO1xuICBzdGF0ZS51c2UgPSBpdGVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUub3B0aW9uYWwgPSBmdW5jdGlvbiBvcHRpb25hbCgpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgc3RhdGUub3B0aW9uYWwgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuZGVmID0gZnVuY3Rpb24gZGVmKHZhbCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGVbJ2RlZmF1bHQnXSA9PT0gbnVsbCk7XG4gIHN0YXRlWydkZWZhdWx0J10gPSB2YWw7XG4gIHN0YXRlLm9wdGlvbmFsID0gdHJ1ZTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmV4cGxpY2l0ID0gZnVuY3Rpb24gZXhwbGljaXQobnVtKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5leHBsaWNpdCA9PT0gbnVsbCAmJiBzdGF0ZS5pbXBsaWNpdCA9PT0gbnVsbCk7XG4gIHN0YXRlLmV4cGxpY2l0ID0gbnVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuaW1wbGljaXQgPSBmdW5jdGlvbiBpbXBsaWNpdChudW0pIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLmV4cGxpY2l0ID09PSBudWxsICYmIHN0YXRlLmltcGxpY2l0ID09PSBudWxsKTtcbiAgc3RhdGUuaW1wbGljaXQgPSBudW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5vYmogPSBmdW5jdGlvbiBvYmooKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICBjb25zdCBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICBzdGF0ZS5vYmogPSB0cnVlO1xuXG4gIGlmIChhcmdzLmxlbmd0aCAhPT0gMClcbiAgICB0aGlzLl91c2VBcmdzKGFyZ3MpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUua2V5ID0gZnVuY3Rpb24ga2V5KG5ld0tleSkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUua2V5ID09PSBudWxsKTtcbiAgc3RhdGUua2V5ID0gbmV3S2V5O1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuYW55ID0gZnVuY3Rpb24gYW55KCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBzdGF0ZS5hbnkgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuY2hvaWNlID0gZnVuY3Rpb24gY2hvaWNlKG9iaikge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUuY2hvaWNlID09PSBudWxsKTtcbiAgc3RhdGUuY2hvaWNlID0gb2JqO1xuICB0aGlzLl91c2VBcmdzKE9iamVjdC5rZXlzKG9iaikubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgIHJldHVybiBvYmpba2V5XTtcbiAgfSkpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiBjb250YWlucyhpdGVtKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS51c2UgPT09IG51bGwpO1xuICBzdGF0ZS5jb250YWlucyA9IGl0ZW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vL1xuLy8gRGVjb2Rpbmdcbi8vXG5cbk5vZGUucHJvdG90eXBlLl9kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoaW5wdXQsIG9wdGlvbnMpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgLy8gRGVjb2RlIHJvb3Qgbm9kZVxuICBpZiAoc3RhdGUucGFyZW50ID09PSBudWxsKVxuICAgIHJldHVybiBpbnB1dC53cmFwUmVzdWx0KHN0YXRlLmNoaWxkcmVuWzBdLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpKTtcblxuICBsZXQgcmVzdWx0ID0gc3RhdGVbJ2RlZmF1bHQnXTtcbiAgbGV0IHByZXNlbnQgPSB0cnVlO1xuXG4gIGxldCBwcmV2S2V5ID0gbnVsbDtcbiAgaWYgKHN0YXRlLmtleSAhPT0gbnVsbClcbiAgICBwcmV2S2V5ID0gaW5wdXQuZW50ZXJLZXkoc3RhdGUua2V5KTtcblxuICAvLyBDaGVjayBpZiB0YWcgaXMgdGhlcmVcbiAgaWYgKHN0YXRlLm9wdGlvbmFsKSB7XG4gICAgbGV0IHRhZyA9IG51bGw7XG4gICAgaWYgKHN0YXRlLmV4cGxpY2l0ICE9PSBudWxsKVxuICAgICAgdGFnID0gc3RhdGUuZXhwbGljaXQ7XG4gICAgZWxzZSBpZiAoc3RhdGUuaW1wbGljaXQgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS5pbXBsaWNpdDtcbiAgICBlbHNlIGlmIChzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS50YWc7XG5cbiAgICBpZiAodGFnID09PSBudWxsICYmICFzdGF0ZS5hbnkpIHtcbiAgICAgIC8vIFRyaWFsIGFuZCBFcnJvclxuICAgICAgY29uc3Qgc2F2ZSA9IGlucHV0LnNhdmUoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChzdGF0ZS5jaG9pY2UgPT09IG51bGwpXG4gICAgICAgICAgdGhpcy5fZGVjb2RlR2VuZXJpYyhzdGF0ZS50YWcsIGlucHV0LCBvcHRpb25zKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRoaXMuX2RlY29kZUNob2ljZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICAgIHByZXNlbnQgPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBwcmVzZW50ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpbnB1dC5yZXN0b3JlKHNhdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVzZW50ID0gdGhpcy5fcGVla1RhZyhpbnB1dCwgdGFnLCBzdGF0ZS5hbnkpO1xuXG4gICAgICBpZiAoaW5wdXQuaXNFcnJvcihwcmVzZW50KSlcbiAgICAgICAgcmV0dXJuIHByZXNlbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUHVzaCBvYmplY3Qgb24gc3RhY2tcbiAgbGV0IHByZXZPYmo7XG4gIGlmIChzdGF0ZS5vYmogJiYgcHJlc2VudClcbiAgICBwcmV2T2JqID0gaW5wdXQuZW50ZXJPYmplY3QoKTtcblxuICBpZiAocHJlc2VudCkge1xuICAgIC8vIFVud3JhcCBleHBsaWNpdCB2YWx1ZXNcbiAgICBpZiAoc3RhdGUuZXhwbGljaXQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGV4cGxpY2l0ID0gdGhpcy5fZGVjb2RlVGFnKGlucHV0LCBzdGF0ZS5leHBsaWNpdCk7XG4gICAgICBpZiAoaW5wdXQuaXNFcnJvcihleHBsaWNpdCkpXG4gICAgICAgIHJldHVybiBleHBsaWNpdDtcbiAgICAgIGlucHV0ID0gZXhwbGljaXQ7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBpbnB1dC5vZmZzZXQ7XG5cbiAgICAvLyBVbndyYXAgaW1wbGljaXQgYW5kIG5vcm1hbCB2YWx1ZXNcbiAgICBpZiAoc3RhdGUudXNlID09PSBudWxsICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCkge1xuICAgICAgbGV0IHNhdmU7XG4gICAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgICBzYXZlID0gaW5wdXQuc2F2ZSgpO1xuICAgICAgY29uc3QgYm9keSA9IHRoaXMuX2RlY29kZVRhZyhcbiAgICAgICAgaW5wdXQsXG4gICAgICAgIHN0YXRlLmltcGxpY2l0ICE9PSBudWxsID8gc3RhdGUuaW1wbGljaXQgOiBzdGF0ZS50YWcsXG4gICAgICAgIHN0YXRlLmFueVxuICAgICAgKTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKGJvZHkpKVxuICAgICAgICByZXR1cm4gYm9keTtcblxuICAgICAgaWYgKHN0YXRlLmFueSlcbiAgICAgICAgcmVzdWx0ID0gaW5wdXQucmF3KHNhdmUpO1xuICAgICAgZWxzZVxuICAgICAgICBpbnB1dCA9IGJvZHk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy50cmFjayAmJiBzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICBvcHRpb25zLnRyYWNrKGlucHV0LnBhdGgoKSwgc3RhcnQsIGlucHV0Lmxlbmd0aCwgJ3RhZ2dlZCcpO1xuXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy50cmFjayAmJiBzdGF0ZS50YWcgIT09IG51bGwpXG4gICAgICBvcHRpb25zLnRyYWNrKGlucHV0LnBhdGgoKSwgaW5wdXQub2Zmc2V0LCBpbnB1dC5sZW5ndGgsICdjb250ZW50Jyk7XG5cbiAgICAvLyBTZWxlY3QgcHJvcGVyIG1ldGhvZCBmb3IgdGFnXG4gICAgaWYgKHN0YXRlLmFueSkge1xuICAgICAgLy8gbm8tb3BcbiAgICB9IGVsc2UgaWYgKHN0YXRlLmNob2ljZSA9PT0gbnVsbCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5fZGVjb2RlR2VuZXJpYyhzdGF0ZS50YWcsIGlucHV0LCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ID0gdGhpcy5fZGVjb2RlQ2hvaWNlKGlucHV0LCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBpZiAoaW5wdXQuaXNFcnJvcihyZXN1bHQpKVxuICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgIC8vIERlY29kZSBjaGlsZHJlblxuICAgIGlmICghc3RhdGUuYW55ICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCAmJiBzdGF0ZS5jaGlsZHJlbiAhPT0gbnVsbCkge1xuICAgICAgc3RhdGUuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiBkZWNvZGVDaGlsZHJlbihjaGlsZCkge1xuICAgICAgICAvLyBOT1RFOiBXZSBhcmUgaWdub3JpbmcgZXJyb3JzIGhlcmUsIHRvIGxldCBwYXJzZXIgY29udGludWUgd2l0aCBvdGhlclxuICAgICAgICAvLyBwYXJ0cyBvZiBlbmNvZGVkIGRhdGFcbiAgICAgICAgY2hpbGQuX2RlY29kZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBEZWNvZGUgY29udGFpbmVkL2VuY29kZWQgYnkgc2NoZW1hLCBvbmx5IGluIGJpdCBvciBvY3RldCBzdHJpbmdzXG4gICAgaWYgKHN0YXRlLmNvbnRhaW5zICYmIChzdGF0ZS50YWcgPT09ICdvY3RzdHInIHx8IHN0YXRlLnRhZyA9PT0gJ2JpdHN0cicpKSB7XG4gICAgICBjb25zdCBkYXRhID0gbmV3IERlY29kZXJCdWZmZXIocmVzdWx0KTtcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2dldFVzZShzdGF0ZS5jb250YWlucywgaW5wdXQuX3JlcG9ydGVyU3RhdGUub2JqKVxuICAgICAgICAuX2RlY29kZShkYXRhLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICAvLyBQb3Agb2JqZWN0XG4gIGlmIChzdGF0ZS5vYmogJiYgcHJlc2VudClcbiAgICByZXN1bHQgPSBpbnB1dC5sZWF2ZU9iamVjdChwcmV2T2JqKTtcblxuICAvLyBTZXQga2V5XG4gIGlmIChzdGF0ZS5rZXkgIT09IG51bGwgJiYgKHJlc3VsdCAhPT0gbnVsbCB8fCBwcmVzZW50ID09PSB0cnVlKSlcbiAgICBpbnB1dC5sZWF2ZUtleShwcmV2S2V5LCBzdGF0ZS5rZXksIHJlc3VsdCk7XG4gIGVsc2UgaWYgKHByZXZLZXkgIT09IG51bGwpXG4gICAgaW5wdXQuZXhpdEtleShwcmV2S2V5KTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2RlY29kZUdlbmVyaWMgPSBmdW5jdGlvbiBkZWNvZGVHZW5lcmljKHRhZywgaW5wdXQsIG9wdGlvbnMpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgaWYgKHRhZyA9PT0gJ3NlcScgfHwgdGFnID09PSAnc2V0JylcbiAgICByZXR1cm4gbnVsbDtcbiAgaWYgKHRhZyA9PT0gJ3NlcW9mJyB8fCB0YWcgPT09ICdzZXRvZicpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUxpc3QoaW5wdXQsIHRhZywgc3RhdGUuYXJnc1swXSwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZVN0cihpbnB1dCwgdGFnLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnICYmIHN0YXRlLmFyZ3MpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU9iamlkKGlucHV0LCBzdGF0ZS5hcmdzWzBdLCBzdGF0ZS5hcmdzWzFdLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVPYmppZChpbnB1dCwgbnVsbCwgbnVsbCwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnIHx8IHRhZyA9PT0gJ3V0Y3RpbWUnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVUaW1lKGlucHV0LCB0YWcsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdudWxsXycpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU51bGwoaW5wdXQsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdib29sJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlQm9vbChpbnB1dCwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iakRlc2MnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVTdHIoaW5wdXQsIHRhZywgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2ludCcgfHwgdGFnID09PSAnZW51bScpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUludChpbnB1dCwgc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzWzBdLCBvcHRpb25zKTtcblxuICBpZiAoc3RhdGUudXNlICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFVzZShzdGF0ZS51c2UsIGlucHV0Ll9yZXBvcnRlclN0YXRlLm9iailcbiAgICAgIC5fZGVjb2RlKGlucHV0LCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaW5wdXQuZXJyb3IoJ3Vua25vd24gdGFnOiAnICsgdGFnKTtcbiAgfVxufTtcblxuTm9kZS5wcm90b3R5cGUuX2dldFVzZSA9IGZ1bmN0aW9uIF9nZXRVc2UoZW50aXR5LCBvYmopIHtcblxuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgLy8gQ3JlYXRlIGFsdGVyZWQgdXNlIGRlY29kZXIgaWYgaW1wbGljaXQgaXMgc2V0XG4gIHN0YXRlLnVzZURlY29kZXIgPSB0aGlzLl91c2UoZW50aXR5LCBvYmopO1xuICBhc3NlcnQoc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLnBhcmVudCA9PT0gbnVsbCk7XG4gIHN0YXRlLnVzZURlY29kZXIgPSBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuY2hpbGRyZW5bMF07XG4gIGlmIChzdGF0ZS5pbXBsaWNpdCAhPT0gc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0KSB7XG4gICAgc3RhdGUudXNlRGVjb2RlciA9IHN0YXRlLnVzZURlY29kZXIuY2xvbmUoKTtcbiAgICBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQgPSBzdGF0ZS5pbXBsaWNpdDtcbiAgfVxuICByZXR1cm4gc3RhdGUudXNlRGVjb2Rlcjtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9kZWNvZGVDaG9pY2UgPSBmdW5jdGlvbiBkZWNvZGVDaG9pY2UoaW5wdXQsIG9wdGlvbnMpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIGxldCByZXN1bHQgPSBudWxsO1xuICBsZXQgbWF0Y2ggPSBmYWxzZTtcblxuICBPYmplY3Qua2V5cyhzdGF0ZS5jaG9pY2UpLnNvbWUoZnVuY3Rpb24oa2V5KSB7XG4gICAgY29uc3Qgc2F2ZSA9IGlucHV0LnNhdmUoKTtcbiAgICBjb25zdCBub2RlID0gc3RhdGUuY2hvaWNlW2tleV07XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gbm9kZS5fZGVjb2RlKGlucHV0LCBvcHRpb25zKTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKHZhbHVlKSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICByZXN1bHQgPSB7IHR5cGU6IGtleSwgdmFsdWU6IHZhbHVlIH07XG4gICAgICBtYXRjaCA9IHRydWU7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaW5wdXQucmVzdG9yZShzYXZlKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sIHRoaXMpO1xuXG4gIGlmICghbWF0Y2gpXG4gICAgcmV0dXJuIGlucHV0LmVycm9yKCdDaG9pY2Ugbm90IG1hdGNoZWQnKTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy9cbi8vIEVuY29kaW5nXG4vL1xuXG5Ob2RlLnByb3RvdHlwZS5fY3JlYXRlRW5jb2RlckJ1ZmZlciA9IGZ1bmN0aW9uIGNyZWF0ZUVuY29kZXJCdWZmZXIoZGF0YSkge1xuICByZXR1cm4gbmV3IEVuY29kZXJCdWZmZXIoZGF0YSwgdGhpcy5yZXBvcnRlcik7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIGlmIChzdGF0ZVsnZGVmYXVsdCddICE9PSBudWxsICYmIHN0YXRlWydkZWZhdWx0J10gPT09IGRhdGEpXG4gICAgcmV0dXJuO1xuXG4gIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2VuY29kZVZhbHVlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpO1xuICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuO1xuXG4gIGlmICh0aGlzLl9za2lwRGVmYXVsdChyZXN1bHQsIHJlcG9ydGVyLCBwYXJlbnQpKVxuICAgIHJldHVybjtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVZhbHVlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgLy8gRGVjb2RlIHJvb3Qgbm9kZVxuICBpZiAoc3RhdGUucGFyZW50ID09PSBudWxsKVxuICAgIHJldHVybiBzdGF0ZS5jaGlsZHJlblswXS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyIHx8IG5ldyBSZXBvcnRlcigpKTtcblxuICBsZXQgcmVzdWx0ID0gbnVsbDtcblxuICAvLyBTZXQgcmVwb3J0ZXIgdG8gc2hhcmUgaXQgd2l0aCBhIGNoaWxkIGNsYXNzXG4gIHRoaXMucmVwb3J0ZXIgPSByZXBvcnRlcjtcblxuICAvLyBDaGVjayBpZiBkYXRhIGlzIHRoZXJlXG4gIGlmIChzdGF0ZS5vcHRpb25hbCAmJiBkYXRhID09PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoc3RhdGVbJ2RlZmF1bHQnXSAhPT0gbnVsbClcbiAgICAgIGRhdGEgPSBzdGF0ZVsnZGVmYXVsdCddO1xuICAgIGVsc2VcbiAgICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEVuY29kZSBjaGlsZHJlbiBmaXJzdFxuICBsZXQgY29udGVudCA9IG51bGw7XG4gIGxldCBwcmltaXRpdmUgPSBmYWxzZTtcbiAgaWYgKHN0YXRlLmFueSkge1xuICAgIC8vIEFueXRoaW5nIHRoYXQgd2FzIGdpdmVuIGlzIHRyYW5zbGF0ZWQgdG8gYnVmZmVyXG4gICAgcmVzdWx0ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhKTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5jaG9pY2UpIHtcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNvbnRhaW5zKSB7XG4gICAgY29udGVudCA9IHRoaXMuX2dldFVzZShzdGF0ZS5jb250YWlucywgcGFyZW50KS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKTtcbiAgICBwcmltaXRpdmUgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNoaWxkcmVuKSB7XG4gICAgY29udGVudCA9IHN0YXRlLmNoaWxkcmVuLm1hcChmdW5jdGlvbihjaGlsZCkge1xuICAgICAgaWYgKGNoaWxkLl9iYXNlU3RhdGUudGFnID09PSAnbnVsbF8nKVxuICAgICAgICByZXR1cm4gY2hpbGQuX2VuY29kZShudWxsLCByZXBvcnRlciwgZGF0YSk7XG5cbiAgICAgIGlmIChjaGlsZC5fYmFzZVN0YXRlLmtleSA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdDaGlsZCBzaG91bGQgaGF2ZSBhIGtleScpO1xuICAgICAgY29uc3QgcHJldktleSA9IHJlcG9ydGVyLmVudGVyS2V5KGNoaWxkLl9iYXNlU3RhdGUua2V5KTtcblxuICAgICAgaWYgKHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0JylcbiAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdDaGlsZCBleHBlY3RlZCwgYnV0IGlucHV0IGlzIG5vdCBvYmplY3QnKTtcblxuICAgICAgY29uc3QgcmVzID0gY2hpbGQuX2VuY29kZShkYXRhW2NoaWxkLl9iYXNlU3RhdGUua2V5XSwgcmVwb3J0ZXIsIGRhdGEpO1xuICAgICAgcmVwb3J0ZXIubGVhdmVLZXkocHJldktleSk7XG5cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSwgdGhpcykuZmlsdGVyKGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfSk7XG4gICAgY29udGVudCA9IHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoY29udGVudCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHN0YXRlLnRhZyA9PT0gJ3NlcW9mJyB8fCBzdGF0ZS50YWcgPT09ICdzZXRvZicpIHtcbiAgICAgIC8vIFRPRE8oaW5kdXRueSk6IHRoaXMgc2hvdWxkIGJlIHRocm93biBvbiBEU0wgbGV2ZWxcbiAgICAgIGlmICghKHN0YXRlLmFyZ3MgJiYgc3RhdGUuYXJncy5sZW5ndGggPT09IDEpKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1RvbyBtYW55IGFyZ3MgZm9yIDogJyArIHN0YXRlLnRhZyk7XG5cbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShkYXRhKSlcbiAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdzZXFvZi9zZXRvZiwgYnV0IGRhdGEgaXMgbm90IEFycmF5Jyk7XG5cbiAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy5jbG9uZSgpO1xuICAgICAgY2hpbGQuX2Jhc2VTdGF0ZS5pbXBsaWNpdCA9IG51bGw7XG4gICAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhLm1hcChmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRVc2Uoc3RhdGUuYXJnc1swXSwgZGF0YSkuX2VuY29kZShpdGVtLCByZXBvcnRlcik7XG4gICAgICB9LCBjaGlsZCkpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUudXNlICE9PSBudWxsKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLl9nZXRVc2Uoc3RhdGUudXNlLCBwYXJlbnQpLl9lbmNvZGUoZGF0YSwgcmVwb3J0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250ZW50ID0gdGhpcy5fZW5jb2RlUHJpbWl0aXZlKHN0YXRlLnRhZywgZGF0YSk7XG4gICAgICBwcmltaXRpdmUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIEVuY29kZSBkYXRhIGl0c2VsZlxuICBpZiAoIXN0YXRlLmFueSAmJiBzdGF0ZS5jaG9pY2UgPT09IG51bGwpIHtcbiAgICBjb25zdCB0YWcgPSBzdGF0ZS5pbXBsaWNpdCAhPT0gbnVsbCA/IHN0YXRlLmltcGxpY2l0IDogc3RhdGUudGFnO1xuICAgIGNvbnN0IGNscyA9IHN0YXRlLmltcGxpY2l0ID09PSBudWxsID8gJ3VuaXZlcnNhbCcgOiAnY29udGV4dCc7XG5cbiAgICBpZiAodGFnID09PSBudWxsKSB7XG4gICAgICBpZiAoc3RhdGUudXNlID09PSBudWxsKVxuICAgICAgICByZXBvcnRlci5lcnJvcignVGFnIGNvdWxkIGJlIG9taXR0ZWQgb25seSBmb3IgLnVzZSgpJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwpXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZUNvbXBvc2l0ZSh0YWcsIHByaW1pdGl2ZSwgY2xzLCBjb250ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBXcmFwIGluIGV4cGxpY2l0XG4gIGlmIChzdGF0ZS5leHBsaWNpdCAhPT0gbnVsbClcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDb21wb3NpdGUoc3RhdGUuZXhwbGljaXQsIGZhbHNlLCAnY29udGV4dCcsIHJlc3VsdCk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGVDaG9pY2UgPSBmdW5jdGlvbiBlbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgY29uc3Qgbm9kZSA9IHN0YXRlLmNob2ljZVtkYXRhLnR5cGVdO1xuICBpZiAoIW5vZGUpIHtcbiAgICBhc3NlcnQoXG4gICAgICBmYWxzZSxcbiAgICAgIGRhdGEudHlwZSArICcgbm90IGZvdW5kIGluICcgK1xuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMoc3RhdGUuY2hvaWNlKSkpO1xuICB9XG4gIHJldHVybiBub2RlLl9lbmNvZGUoZGF0YS52YWx1ZSwgcmVwb3J0ZXIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVByaW1pdGl2ZSA9IGZ1bmN0aW9uIGVuY29kZVByaW1pdGl2ZSh0YWcsIGRhdGEpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgaWYgKC9zdHIkLy50ZXN0KHRhZykpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZVN0cihkYXRhLCB0YWcpO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmppZCcgJiYgc3RhdGUuYXJncylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQoZGF0YSwgc3RhdGUucmV2ZXJzZUFyZ3NbMF0sIHN0YXRlLmFyZ3NbMV0pO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmppZCcpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZU9iamlkKGRhdGEsIG51bGwsIG51bGwpO1xuICBlbHNlIGlmICh0YWcgPT09ICdnZW50aW1lJyB8fCB0YWcgPT09ICd1dGN0aW1lJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlVGltZShkYXRhLCB0YWcpO1xuICBlbHNlIGlmICh0YWcgPT09ICdudWxsXycpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZU51bGwoKTtcbiAgZWxzZSBpZiAodGFnID09PSAnaW50JyB8fCB0YWcgPT09ICdlbnVtJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlSW50KGRhdGEsIHN0YXRlLmFyZ3MgJiYgc3RhdGUucmV2ZXJzZUFyZ3NbMF0pO1xuICBlbHNlIGlmICh0YWcgPT09ICdib29sJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlQm9vbChkYXRhKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqRGVzYycpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZVN0cihkYXRhLCB0YWcpO1xuICBlbHNlXG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCB0YWc6ICcgKyB0YWcpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2lzTnVtc3RyID0gZnVuY3Rpb24gaXNOdW1zdHIoc3RyKSB7XG4gIHJldHVybiAvXlswLTkgXSokLy50ZXN0KHN0cik7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faXNQcmludHN0ciA9IGZ1bmN0aW9uIGlzUHJpbnRzdHIoc3RyKSB7XG4gIHJldHVybiAvXltBLVphLXowLTkgJygpKywtLi86PT9dKiQvLnRlc3Qoc3RyKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZnVuY3Rpb24gUmVwb3J0ZXIob3B0aW9ucykge1xuICB0aGlzLl9yZXBvcnRlclN0YXRlID0ge1xuICAgIG9iajogbnVsbCxcbiAgICBwYXRoOiBbXSxcbiAgICBvcHRpb25zOiBvcHRpb25zIHx8IHt9LFxuICAgIGVycm9yczogW11cbiAgfTtcbn1cbmV4cG9ydHMuUmVwb3J0ZXIgPSBSZXBvcnRlcjtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmlzRXJyb3IgPSBmdW5jdGlvbiBpc0Vycm9yKG9iaikge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgUmVwb3J0ZXJFcnJvcjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gc2F2ZSgpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHJldHVybiB7IG9iajogc3RhdGUub2JqLCBwYXRoTGVuOiBzdGF0ZS5wYXRoLmxlbmd0aCB9O1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLnJlc3RvcmUgPSBmdW5jdGlvbiByZXN0b3JlKGRhdGEpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHN0YXRlLm9iaiA9IGRhdGEub2JqO1xuICBzdGF0ZS5wYXRoID0gc3RhdGUucGF0aC5zbGljZSgwLCBkYXRhLnBhdGhMZW4pO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmVudGVyS2V5ID0gZnVuY3Rpb24gZW50ZXJLZXkoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9yZXBvcnRlclN0YXRlLnBhdGgucHVzaChrZXkpO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmV4aXRLZXkgPSBmdW5jdGlvbiBleGl0S2V5KGluZGV4KSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICBzdGF0ZS5wYXRoID0gc3RhdGUucGF0aC5zbGljZSgwLCBpbmRleCAtIDEpO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmxlYXZlS2V5ID0gZnVuY3Rpb24gbGVhdmVLZXkoaW5kZXgsIGtleSwgdmFsdWUpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHRoaXMuZXhpdEtleShpbmRleCk7XG4gIGlmIChzdGF0ZS5vYmogIT09IG51bGwpXG4gICAgc3RhdGUub2JqW2tleV0gPSB2YWx1ZTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5wYXRoID0gZnVuY3Rpb24gcGF0aCgpIHtcbiAgcmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5qb2luKCcvJyk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZW50ZXJPYmplY3QgPSBmdW5jdGlvbiBlbnRlck9iamVjdCgpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIGNvbnN0IHByZXYgPSBzdGF0ZS5vYmo7XG4gIHN0YXRlLm9iaiA9IHt9O1xuICByZXR1cm4gcHJldjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5sZWF2ZU9iamVjdCA9IGZ1bmN0aW9uIGxlYXZlT2JqZWN0KHByZXYpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIGNvbnN0IG5vdyA9IHN0YXRlLm9iajtcbiAgc3RhdGUub2JqID0gcHJldjtcbiAgcmV0dXJuIG5vdztcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5lcnJvciA9IGZ1bmN0aW9uIGVycm9yKG1zZykge1xuICBsZXQgZXJyO1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgY29uc3QgaW5oZXJpdGVkID0gbXNnIGluc3RhbmNlb2YgUmVwb3J0ZXJFcnJvcjtcbiAgaWYgKGluaGVyaXRlZCkge1xuICAgIGVyciA9IG1zZztcbiAgfSBlbHNlIHtcbiAgICBlcnIgPSBuZXcgUmVwb3J0ZXJFcnJvcihzdGF0ZS5wYXRoLm1hcChmdW5jdGlvbihlbGVtKSB7XG4gICAgICByZXR1cm4gJ1snICsgSlNPTi5zdHJpbmdpZnkoZWxlbSkgKyAnXSc7XG4gICAgfSkuam9pbignJyksIG1zZy5tZXNzYWdlIHx8IG1zZywgbXNnLnN0YWNrKTtcbiAgfVxuXG4gIGlmICghc3RhdGUub3B0aW9ucy5wYXJ0aWFsKVxuICAgIHRocm93IGVycjtcblxuICBpZiAoIWluaGVyaXRlZClcbiAgICBzdGF0ZS5lcnJvcnMucHVzaChlcnIpO1xuXG4gIHJldHVybiBlcnI7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUud3JhcFJlc3VsdCA9IGZ1bmN0aW9uIHdyYXBSZXN1bHQocmVzdWx0KSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcbiAgaWYgKCFzdGF0ZS5vcHRpb25zLnBhcnRpYWwpXG4gICAgcmV0dXJuIHJlc3VsdDtcblxuICByZXR1cm4ge1xuICAgIHJlc3VsdDogdGhpcy5pc0Vycm9yKHJlc3VsdCkgPyBudWxsIDogcmVzdWx0LFxuICAgIGVycm9yczogc3RhdGUuZXJyb3JzXG4gIH07XG59O1xuXG5mdW5jdGlvbiBSZXBvcnRlckVycm9yKHBhdGgsIG1zZykge1xuICB0aGlzLnBhdGggPSBwYXRoO1xuICB0aGlzLnJldGhyb3cobXNnKTtcbn1cbmluaGVyaXRzKFJlcG9ydGVyRXJyb3IsIEVycm9yKTtcblxuUmVwb3J0ZXJFcnJvci5wcm90b3R5cGUucmV0aHJvdyA9IGZ1bmN0aW9uIHJldGhyb3cobXNnKSB7XG4gIHRoaXMubWVzc2FnZSA9IG1zZyArICcgYXQ6ICcgKyAodGhpcy5wYXRoIHx8ICcoc2hhbGxvdyknKTtcbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKVxuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIFJlcG9ydGVyRXJyb3IpO1xuXG4gIGlmICghdGhpcy5zdGFjaykge1xuICAgIHRyeSB7XG4gICAgICAvLyBJRSBvbmx5IGFkZHMgc3RhY2sgd2hlbiB0aHJvd25cbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLm1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuc3RhY2sgPSBlLnN0YWNrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIEhlbHBlclxuZnVuY3Rpb24gcmV2ZXJzZShtYXApIHtcbiAgY29uc3QgcmVzID0ge307XG5cbiAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgIC8vIENvbnZlcnQga2V5IHRvIGludGVnZXIgaWYgaXQgaXMgc3RyaW5naWZpZWRcbiAgICBpZiAoKGtleSB8IDApID09IGtleSlcbiAgICAgIGtleSA9IGtleSB8IDA7XG5cbiAgICBjb25zdCB2YWx1ZSA9IG1hcFtrZXldO1xuICAgIHJlc1t2YWx1ZV0gPSBrZXk7XG4gIH0pO1xuXG4gIHJldHVybiByZXM7XG59XG5cbmV4cG9ydHMudGFnQ2xhc3MgPSB7XG4gIDA6ICd1bml2ZXJzYWwnLFxuICAxOiAnYXBwbGljYXRpb24nLFxuICAyOiAnY29udGV4dCcsXG4gIDM6ICdwcml2YXRlJ1xufTtcbmV4cG9ydHMudGFnQ2xhc3NCeU5hbWUgPSByZXZlcnNlKGV4cG9ydHMudGFnQ2xhc3MpO1xuXG5leHBvcnRzLnRhZyA9IHtcbiAgMHgwMDogJ2VuZCcsXG4gIDB4MDE6ICdib29sJyxcbiAgMHgwMjogJ2ludCcsXG4gIDB4MDM6ICdiaXRzdHInLFxuICAweDA0OiAnb2N0c3RyJyxcbiAgMHgwNTogJ251bGxfJyxcbiAgMHgwNjogJ29iamlkJyxcbiAgMHgwNzogJ29iakRlc2MnLFxuICAweDA4OiAnZXh0ZXJuYWwnLFxuICAweDA5OiAncmVhbCcsXG4gIDB4MGE6ICdlbnVtJyxcbiAgMHgwYjogJ2VtYmVkJyxcbiAgMHgwYzogJ3V0ZjhzdHInLFxuICAweDBkOiAncmVsYXRpdmVPaWQnLFxuICAweDEwOiAnc2VxJyxcbiAgMHgxMTogJ3NldCcsXG4gIDB4MTI6ICdudW1zdHInLFxuICAweDEzOiAncHJpbnRzdHInLFxuICAweDE0OiAndDYxc3RyJyxcbiAgMHgxNTogJ3ZpZGVvc3RyJyxcbiAgMHgxNjogJ2lhNXN0cicsXG4gIDB4MTc6ICd1dGN0aW1lJyxcbiAgMHgxODogJ2dlbnRpbWUnLFxuICAweDE5OiAnZ3JhcGhzdHInLFxuICAweDFhOiAnaXNvNjQ2c3RyJyxcbiAgMHgxYjogJ2dlbnN0cicsXG4gIDB4MWM6ICd1bmlzdHInLFxuICAweDFkOiAnY2hhcnN0cicsXG4gIDB4MWU6ICdibXBzdHInXG59O1xuZXhwb3J0cy50YWdCeU5hbWUgPSByZXZlcnNlKGV4cG9ydHMudGFnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgY29uc3RhbnRzID0gZXhwb3J0cztcblxuLy8gSGVscGVyXG5jb25zdGFudHMuX3JldmVyc2UgPSBmdW5jdGlvbiByZXZlcnNlKG1hcCkge1xuICBjb25zdCByZXMgPSB7fTtcblxuICBPYmplY3Qua2V5cyhtYXApLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgLy8gQ29udmVydCBrZXkgdG8gaW50ZWdlciBpZiBpdCBpcyBzdHJpbmdpZmllZFxuICAgIGlmICgoa2V5IHwgMCkgPT0ga2V5KVxuICAgICAga2V5ID0ga2V5IHwgMDtcblxuICAgIGNvbnN0IHZhbHVlID0gbWFwW2tleV07XG4gICAgcmVzW3ZhbHVlXSA9IGtleTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbmNvbnN0YW50cy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmNvbnN0IGJpZ251bSA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5jb25zdCBEZWNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi4vYmFzZS9idWZmZXInKS5EZWNvZGVyQnVmZmVyO1xuY29uc3QgTm9kZSA9IHJlcXVpcmUoJy4uL2Jhc2Uvbm9kZScpO1xuXG4vLyBJbXBvcnQgREVSIGNvbnN0YW50c1xuY29uc3QgZGVyID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL2RlcicpO1xuXG5mdW5jdGlvbiBERVJEZWNvZGVyKGVudGl0eSkge1xuICB0aGlzLmVuYyA9ICdkZXInO1xuICB0aGlzLm5hbWUgPSBlbnRpdHkubmFtZTtcbiAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XG5cbiAgLy8gQ29uc3RydWN0IGJhc2UgdHJlZVxuICB0aGlzLnRyZWUgPSBuZXcgREVSTm9kZSgpO1xuICB0aGlzLnRyZWUuX2luaXQoZW50aXR5LmJvZHkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBERVJEZWNvZGVyO1xuXG5ERVJEZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoZGF0YSwgb3B0aW9ucykge1xuICBpZiAoIURlY29kZXJCdWZmZXIuaXNEZWNvZGVyQnVmZmVyKGRhdGEpKSB7XG4gICAgZGF0YSA9IG5ldyBEZWNvZGVyQnVmZmVyKGRhdGEsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMudHJlZS5fZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xufTtcblxuLy8gVHJlZSBtZXRob2RzXG5cbmZ1bmN0aW9uIERFUk5vZGUocGFyZW50KSB7XG4gIE5vZGUuY2FsbCh0aGlzLCAnZGVyJywgcGFyZW50KTtcbn1cbmluaGVyaXRzKERFUk5vZGUsIE5vZGUpO1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fcGVla1RhZyA9IGZ1bmN0aW9uIHBlZWtUYWcoYnVmZmVyLCB0YWcsIGFueSkge1xuICBpZiAoYnVmZmVyLmlzRW1wdHkoKSlcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgY29uc3Qgc3RhdGUgPSBidWZmZXIuc2F2ZSgpO1xuICBjb25zdCBkZWNvZGVkVGFnID0gZGVyRGVjb2RlVGFnKGJ1ZmZlciwgJ0ZhaWxlZCB0byBwZWVrIHRhZzogXCInICsgdGFnICsgJ1wiJyk7XG4gIGlmIChidWZmZXIuaXNFcnJvcihkZWNvZGVkVGFnKSlcbiAgICByZXR1cm4gZGVjb2RlZFRhZztcblxuICBidWZmZXIucmVzdG9yZShzdGF0ZSk7XG5cbiAgcmV0dXJuIGRlY29kZWRUYWcudGFnID09PSB0YWcgfHwgZGVjb2RlZFRhZy50YWdTdHIgPT09IHRhZyB8fFxuICAgIChkZWNvZGVkVGFnLnRhZ1N0ciArICdvZicpID09PSB0YWcgfHwgYW55O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVRhZyA9IGZ1bmN0aW9uIGRlY29kZVRhZyhidWZmZXIsIHRhZywgYW55KSB7XG4gIGNvbnN0IGRlY29kZWRUYWcgPSBkZXJEZWNvZGVUYWcoYnVmZmVyLFxuICAgICdGYWlsZWQgdG8gZGVjb2RlIHRhZyBvZiBcIicgKyB0YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKGRlY29kZWRUYWcpKVxuICAgIHJldHVybiBkZWNvZGVkVGFnO1xuXG4gIGxldCBsZW4gPSBkZXJEZWNvZGVMZW4oYnVmZmVyLFxuICAgIGRlY29kZWRUYWcucHJpbWl0aXZlLFxuICAgICdGYWlsZWQgdG8gZ2V0IGxlbmd0aCBvZiBcIicgKyB0YWcgKyAnXCInKTtcblxuICAvLyBGYWlsdXJlXG4gIGlmIChidWZmZXIuaXNFcnJvcihsZW4pKVxuICAgIHJldHVybiBsZW47XG5cbiAgaWYgKCFhbnkgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnICE9PSB0YWcgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnU3RyICE9PSB0YWcgJiZcbiAgICAgIGRlY29kZWRUYWcudGFnU3RyICsgJ29mJyAhPT0gdGFnKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRmFpbGVkIHRvIG1hdGNoIHRhZzogXCInICsgdGFnICsgJ1wiJyk7XG4gIH1cblxuICBpZiAoZGVjb2RlZFRhZy5wcmltaXRpdmUgfHwgbGVuICE9PSBudWxsKVxuICAgIHJldHVybiBidWZmZXIuc2tpcChsZW4sICdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInICsgdGFnICsgJ1wiJyk7XG5cbiAgLy8gSW5kZWZpbml0ZSBsZW5ndGguLi4gZmluZCBFTkQgdGFnXG4gIGNvbnN0IHN0YXRlID0gYnVmZmVyLnNhdmUoKTtcbiAgY29uc3QgcmVzID0gdGhpcy5fc2tpcFVudGlsRW5kKFxuICAgIGJ1ZmZlcixcbiAgICAnRmFpbGVkIHRvIHNraXAgaW5kZWZpbml0ZSBsZW5ndGggYm9keTogXCInICsgdGhpcy50YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKHJlcykpXG4gICAgcmV0dXJuIHJlcztcblxuICBsZW4gPSBidWZmZXIub2Zmc2V0IC0gc3RhdGUub2Zmc2V0O1xuICBidWZmZXIucmVzdG9yZShzdGF0ZSk7XG4gIHJldHVybiBidWZmZXIuc2tpcChsZW4sICdGYWlsZWQgdG8gbWF0Y2ggYm9keSBvZjogXCInICsgdGFnICsgJ1wiJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fc2tpcFVudGlsRW5kID0gZnVuY3Rpb24gc2tpcFVudGlsRW5kKGJ1ZmZlciwgZmFpbCkge1xuICBmb3IgKDs7KSB7XG4gICAgY29uc3QgdGFnID0gZGVyRGVjb2RlVGFnKGJ1ZmZlciwgZmFpbCk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHRhZykpXG4gICAgICByZXR1cm4gdGFnO1xuICAgIGNvbnN0IGxlbiA9IGRlckRlY29kZUxlbihidWZmZXIsIHRhZy5wcmltaXRpdmUsIGZhaWwpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcihsZW4pKVxuICAgICAgcmV0dXJuIGxlbjtcblxuICAgIGxldCByZXM7XG4gICAgaWYgKHRhZy5wcmltaXRpdmUgfHwgbGVuICE9PSBudWxsKVxuICAgICAgcmVzID0gYnVmZmVyLnNraXAobGVuKTtcbiAgICBlbHNlXG4gICAgICByZXMgPSB0aGlzLl9za2lwVW50aWxFbmQoYnVmZmVyLCBmYWlsKTtcblxuICAgIC8vIEZhaWx1cmVcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSlcbiAgICAgIHJldHVybiByZXM7XG5cbiAgICBpZiAodGFnLnRhZ1N0ciA9PT0gJ2VuZCcpXG4gICAgICBicmVhaztcbiAgfVxufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZUxpc3QgPSBmdW5jdGlvbiBkZWNvZGVMaXN0KGJ1ZmZlciwgdGFnLCBkZWNvZGVyLFxuICBvcHRpb25zKSB7XG4gIGNvbnN0IHJlc3VsdCA9IFtdO1xuICB3aGlsZSAoIWJ1ZmZlci5pc0VtcHR5KCkpIHtcbiAgICBjb25zdCBwb3NzaWJsZUVuZCA9IHRoaXMuX3BlZWtUYWcoYnVmZmVyLCAnZW5kJyk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHBvc3NpYmxlRW5kKSlcbiAgICAgIHJldHVybiBwb3NzaWJsZUVuZDtcblxuICAgIGNvbnN0IHJlcyA9IGRlY29kZXIuZGVjb2RlKGJ1ZmZlciwgJ2RlcicsIG9wdGlvbnMpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcihyZXMpICYmIHBvc3NpYmxlRW5kKVxuICAgICAgYnJlYWs7XG4gICAgcmVzdWx0LnB1c2gocmVzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVN0ciA9IGZ1bmN0aW9uIGRlY29kZVN0cihidWZmZXIsIHRhZykge1xuICBpZiAodGFnID09PSAnYml0c3RyJykge1xuICAgIGNvbnN0IHVudXNlZCA9IGJ1ZmZlci5yZWFkVUludDgoKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IodW51c2VkKSlcbiAgICAgIHJldHVybiB1bnVzZWQ7XG4gICAgcmV0dXJuIHsgdW51c2VkOiB1bnVzZWQsIGRhdGE6IGJ1ZmZlci5yYXcoKSB9O1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2JtcHN0cicpIHtcbiAgICBjb25zdCByYXcgPSBidWZmZXIucmF3KCk7XG4gICAgaWYgKHJhdy5sZW5ndGggJSAyID09PSAxKVxuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IGJtcHN0ciBsZW5ndGggbWlzbWF0Y2gnKTtcblxuICAgIGxldCBzdHIgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJhdy5sZW5ndGggLyAyOyBpKyspIHtcbiAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHJhdy5yZWFkVUludDE2QkUoaSAqIDIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdudW1zdHInKSB7XG4gICAgY29uc3QgbnVtc3RyID0gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCdhc2NpaScpO1xuICAgIGlmICghdGhpcy5faXNOdW1zdHIobnVtc3RyKSkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVtc3RyIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMnKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bXN0cjtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdvY3RzdHInKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5yYXcoKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJykge1xuICAgIHJldHVybiBidWZmZXIucmF3KCk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAncHJpbnRzdHInKSB7XG4gICAgY29uc3QgcHJpbnRzdHIgPSBidWZmZXIucmF3KCkudG9TdHJpbmcoJ2FzY2lpJyk7XG4gICAgaWYgKCF0aGlzLl9pc1ByaW50c3RyKHByaW50c3RyKSkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnRzdHIgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycycpO1xuICAgIH1cbiAgICByZXR1cm4gcHJpbnRzdHI7XG4gIH0gZWxzZSBpZiAoL3N0ciQvLnRlc3QodGFnKSkge1xuICAgIHJldHVybiBidWZmZXIucmF3KCkudG9TdHJpbmcoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogJyArIHRhZyArICcgdW5zdXBwb3J0ZWQnKTtcbiAgfVxufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZU9iamlkID0gZnVuY3Rpb24gZGVjb2RlT2JqaWQoYnVmZmVyLCB2YWx1ZXMsIHJlbGF0aXZlKSB7XG4gIGxldCByZXN1bHQ7XG4gIGNvbnN0IGlkZW50aWZpZXJzID0gW107XG4gIGxldCBpZGVudCA9IDA7XG4gIGxldCBzdWJpZGVudCA9IDA7XG4gIHdoaWxlICghYnVmZmVyLmlzRW1wdHkoKSkge1xuICAgIHN1YmlkZW50ID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgIGlkZW50IDw8PSA3O1xuICAgIGlkZW50IHw9IHN1YmlkZW50ICYgMHg3ZjtcbiAgICBpZiAoKHN1YmlkZW50ICYgMHg4MCkgPT09IDApIHtcbiAgICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnQpO1xuICAgICAgaWRlbnQgPSAwO1xuICAgIH1cbiAgfVxuICBpZiAoc3ViaWRlbnQgJiAweDgwKVxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnQpO1xuXG4gIGNvbnN0IGZpcnN0ID0gKGlkZW50aWZpZXJzWzBdIC8gNDApIHwgMDtcbiAgY29uc3Qgc2Vjb25kID0gaWRlbnRpZmllcnNbMF0gJSA0MDtcblxuICBpZiAocmVsYXRpdmUpXG4gICAgcmVzdWx0ID0gaWRlbnRpZmllcnM7XG4gIGVsc2VcbiAgICByZXN1bHQgPSBbZmlyc3QsIHNlY29uZF0uY29uY2F0KGlkZW50aWZpZXJzLnNsaWNlKDEpKTtcblxuICBpZiAodmFsdWVzKSB7XG4gICAgbGV0IHRtcCA9IHZhbHVlc1tyZXN1bHQuam9pbignICcpXTtcbiAgICBpZiAodG1wID09PSB1bmRlZmluZWQpXG4gICAgICB0bXAgPSB2YWx1ZXNbcmVzdWx0LmpvaW4oJy4nKV07XG4gICAgaWYgKHRtcCAhPT0gdW5kZWZpbmVkKVxuICAgICAgcmVzdWx0ID0gdG1wO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVUaW1lID0gZnVuY3Rpb24gZGVjb2RlVGltZShidWZmZXIsIHRhZykge1xuICBjb25zdCBzdHIgPSBidWZmZXIucmF3KCkudG9TdHJpbmcoKTtcblxuICBsZXQgeWVhcjtcbiAgbGV0IG1vbjtcbiAgbGV0IGRheTtcbiAgbGV0IGhvdXI7XG4gIGxldCBtaW47XG4gIGxldCBzZWM7XG4gIGlmICh0YWcgPT09ICdnZW50aW1lJykge1xuICAgIHllYXIgPSBzdHIuc2xpY2UoMCwgNCkgfCAwO1xuICAgIG1vbiA9IHN0ci5zbGljZSg0LCA2KSB8IDA7XG4gICAgZGF5ID0gc3RyLnNsaWNlKDYsIDgpIHwgMDtcbiAgICBob3VyID0gc3RyLnNsaWNlKDgsIDEwKSB8IDA7XG4gICAgbWluID0gc3RyLnNsaWNlKDEwLCAxMikgfCAwO1xuICAgIHNlYyA9IHN0ci5zbGljZSgxMiwgMTQpIHwgMDtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICd1dGN0aW1lJykge1xuICAgIHllYXIgPSBzdHIuc2xpY2UoMCwgMikgfCAwO1xuICAgIG1vbiA9IHN0ci5zbGljZSgyLCA0KSB8IDA7XG4gICAgZGF5ID0gc3RyLnNsaWNlKDQsIDYpIHwgMDtcbiAgICBob3VyID0gc3RyLnNsaWNlKDYsIDgpIHwgMDtcbiAgICBtaW4gPSBzdHIuc2xpY2UoOCwgMTApIHwgMDtcbiAgICBzZWMgPSBzdHIuc2xpY2UoMTAsIDEyKSB8IDA7XG4gICAgaWYgKHllYXIgPCA3MClcbiAgICAgIHllYXIgPSAyMDAwICsgeWVhcjtcbiAgICBlbHNlXG4gICAgICB5ZWFyID0gMTkwMCArIHllYXI7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2RpbmcgJyArIHRhZyArICcgdGltZSBpcyBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICB9XG5cbiAgcmV0dXJuIERhdGUuVVRDKHllYXIsIG1vbiAtIDEsIGRheSwgaG91ciwgbWluLCBzZWMsIDApO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZU51bGwgPSBmdW5jdGlvbiBkZWNvZGVOdWxsKCkge1xuICByZXR1cm4gbnVsbDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVCb29sID0gZnVuY3Rpb24gZGVjb2RlQm9vbChidWZmZXIpIHtcbiAgY29uc3QgcmVzID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSlcbiAgICByZXR1cm4gcmVzO1xuICBlbHNlXG4gICAgcmV0dXJuIHJlcyAhPT0gMDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVJbnQgPSBmdW5jdGlvbiBkZWNvZGVJbnQoYnVmZmVyLCB2YWx1ZXMpIHtcbiAgLy8gQmlnaW50LCByZXR1cm4gYXMgaXQgaXMgKGFzc3VtZSBiaWcgZW5kaWFuKVxuICBjb25zdCByYXcgPSBidWZmZXIucmF3KCk7XG4gIGxldCByZXMgPSBuZXcgYmlnbnVtKHJhdyk7XG5cbiAgaWYgKHZhbHVlcylcbiAgICByZXMgPSB2YWx1ZXNbcmVzLnRvU3RyaW5nKDEwKV0gfHwgcmVzO1xuXG4gIHJldHVybiByZXM7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fdXNlID0gZnVuY3Rpb24gdXNlKGVudGl0eSwgb2JqKSB7XG4gIGlmICh0eXBlb2YgZW50aXR5ID09PSAnZnVuY3Rpb24nKVxuICAgIGVudGl0eSA9IGVudGl0eShvYmopO1xuICByZXR1cm4gZW50aXR5Ll9nZXREZWNvZGVyKCdkZXInKS50cmVlO1xufTtcblxuLy8gVXRpbGl0eSBtZXRob2RzXG5cbmZ1bmN0aW9uIGRlckRlY29kZVRhZyhidWYsIGZhaWwpIHtcbiAgbGV0IHRhZyA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gIGlmIChidWYuaXNFcnJvcih0YWcpKVxuICAgIHJldHVybiB0YWc7XG5cbiAgY29uc3QgY2xzID0gZGVyLnRhZ0NsYXNzW3RhZyA+PiA2XTtcbiAgY29uc3QgcHJpbWl0aXZlID0gKHRhZyAmIDB4MjApID09PSAwO1xuXG4gIC8vIE11bHRpLW9jdGV0IHRhZyAtIGxvYWRcbiAgaWYgKCh0YWcgJiAweDFmKSA9PT0gMHgxZikge1xuICAgIGxldCBvY3QgPSB0YWc7XG4gICAgdGFnID0gMDtcbiAgICB3aGlsZSAoKG9jdCAmIDB4ODApID09PSAweDgwKSB7XG4gICAgICBvY3QgPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICAgICAgaWYgKGJ1Zi5pc0Vycm9yKG9jdCkpXG4gICAgICAgIHJldHVybiBvY3Q7XG5cbiAgICAgIHRhZyA8PD0gNztcbiAgICAgIHRhZyB8PSBvY3QgJiAweDdmO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0YWcgJj0gMHgxZjtcbiAgfVxuICBjb25zdCB0YWdTdHIgPSBkZXIudGFnW3RhZ107XG5cbiAgcmV0dXJuIHtcbiAgICBjbHM6IGNscyxcbiAgICBwcmltaXRpdmU6IHByaW1pdGl2ZSxcbiAgICB0YWc6IHRhZyxcbiAgICB0YWdTdHI6IHRhZ1N0clxuICB9O1xufVxuXG5mdW5jdGlvbiBkZXJEZWNvZGVMZW4oYnVmLCBwcmltaXRpdmUsIGZhaWwpIHtcbiAgbGV0IGxlbiA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gIGlmIChidWYuaXNFcnJvcihsZW4pKVxuICAgIHJldHVybiBsZW47XG5cbiAgLy8gSW5kZWZpbml0ZSBmb3JtXG4gIGlmICghcHJpbWl0aXZlICYmIGxlbiA9PT0gMHg4MClcbiAgICByZXR1cm4gbnVsbDtcblxuICAvLyBEZWZpbml0ZSBmb3JtXG4gIGlmICgobGVuICYgMHg4MCkgPT09IDApIHtcbiAgICAvLyBTaG9ydCBmb3JtXG4gICAgcmV0dXJuIGxlbjtcbiAgfVxuXG4gIC8vIExvbmcgZm9ybVxuICBjb25zdCBudW0gPSBsZW4gJiAweDdmO1xuICBpZiAobnVtID4gNClcbiAgICByZXR1cm4gYnVmLmVycm9yKCdsZW5ndGggb2N0ZWN0IGlzIHRvbyBsb25nJyk7XG5cbiAgbGVuID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW07IGkrKykge1xuICAgIGxlbiA8PD0gODtcbiAgICBjb25zdCBqID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgICBpZiAoYnVmLmlzRXJyb3IoaikpXG4gICAgICByZXR1cm4gajtcbiAgICBsZW4gfD0gajtcbiAgfVxuXG4gIHJldHVybiBsZW47XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGRlY29kZXJzID0gZXhwb3J0cztcblxuZGVjb2RlcnMuZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcbmRlY29kZXJzLnBlbSA9IHJlcXVpcmUoJy4vcGVtJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbmNvbnN0IEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmVyLWJ1ZmZlcicpLkJ1ZmZlcjtcblxuY29uc3QgREVSRGVjb2RlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG5cbmZ1bmN0aW9uIFBFTURlY29kZXIoZW50aXR5KSB7XG4gIERFUkRlY29kZXIuY2FsbCh0aGlzLCBlbnRpdHkpO1xuICB0aGlzLmVuYyA9ICdwZW0nO1xufVxuaW5oZXJpdHMoUEVNRGVjb2RlciwgREVSRGVjb2Rlcik7XG5tb2R1bGUuZXhwb3J0cyA9IFBFTURlY29kZXI7XG5cblBFTURlY29kZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShkYXRhLCBvcHRpb25zKSB7XG4gIGNvbnN0IGxpbmVzID0gZGF0YS50b1N0cmluZygpLnNwbGl0KC9bXFxyXFxuXSsvZyk7XG5cbiAgY29uc3QgbGFiZWwgPSBvcHRpb25zLmxhYmVsLnRvVXBwZXJDYXNlKCk7XG5cbiAgY29uc3QgcmUgPSAvXi0tLS0tKEJFR0lOfEVORCkgKFteLV0rKS0tLS0tJC87XG4gIGxldCBzdGFydCA9IC0xO1xuICBsZXQgZW5kID0gLTE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBtYXRjaCA9IGxpbmVzW2ldLm1hdGNoKHJlKTtcbiAgICBpZiAobWF0Y2ggPT09IG51bGwpXG4gICAgICBjb250aW51ZTtcblxuICAgIGlmIChtYXRjaFsyXSAhPT0gbGFiZWwpXG4gICAgICBjb250aW51ZTtcblxuICAgIGlmIChzdGFydCA9PT0gLTEpIHtcbiAgICAgIGlmIChtYXRjaFsxXSAhPT0gJ0JFR0lOJylcbiAgICAgICAgYnJlYWs7XG4gICAgICBzdGFydCA9IGk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChtYXRjaFsxXSAhPT0gJ0VORCcpXG4gICAgICAgIGJyZWFrO1xuICAgICAgZW5kID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAoc3RhcnQgPT09IC0xIHx8IGVuZCA9PT0gLTEpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdQRU0gc2VjdGlvbiBub3QgZm91bmQgZm9yOiAnICsgbGFiZWwpO1xuXG4gIGNvbnN0IGJhc2U2NCA9IGxpbmVzLnNsaWNlKHN0YXJ0ICsgMSwgZW5kKS5qb2luKCcnKTtcbiAgLy8gUmVtb3ZlIGV4Y2Vzc2l2ZSBzeW1ib2xzXG4gIGJhc2U2NC5yZXBsYWNlKC9bXmEtejAtOSsvPV0rL2dpLCAnJyk7XG5cbiAgY29uc3QgaW5wdXQgPSBCdWZmZXIuZnJvbShiYXNlNjQsICdiYXNlNjQnKTtcbiAgcmV0dXJuIERFUkRlY29kZXIucHJvdG90eXBlLmRlY29kZS5jYWxsKHRoaXMsIGlucHV0LCBvcHRpb25zKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbmNvbnN0IEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmVyLWJ1ZmZlcicpLkJ1ZmZlcjtcbmNvbnN0IE5vZGUgPSByZXF1aXJlKCcuLi9iYXNlL25vZGUnKTtcblxuLy8gSW1wb3J0IERFUiBjb25zdGFudHNcbmNvbnN0IGRlciA9IHJlcXVpcmUoJy4uL2NvbnN0YW50cy9kZXInKTtcblxuZnVuY3Rpb24gREVSRW5jb2RlcihlbnRpdHkpIHtcbiAgdGhpcy5lbmMgPSAnZGVyJztcbiAgdGhpcy5uYW1lID0gZW50aXR5Lm5hbWU7XG4gIHRoaXMuZW50aXR5ID0gZW50aXR5O1xuXG4gIC8vIENvbnN0cnVjdCBiYXNlIHRyZWVcbiAgdGhpcy50cmVlID0gbmV3IERFUk5vZGUoKTtcbiAgdGhpcy50cmVlLl9pbml0KGVudGl0eS5ib2R5KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gREVSRW5jb2RlcjtcblxuREVSRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyKSB7XG4gIHJldHVybiB0aGlzLnRyZWUuX2VuY29kZShkYXRhLCByZXBvcnRlcikuam9pbigpO1xufTtcblxuLy8gVHJlZSBtZXRob2RzXG5cbmZ1bmN0aW9uIERFUk5vZGUocGFyZW50KSB7XG4gIE5vZGUuY2FsbCh0aGlzLCAnZGVyJywgcGFyZW50KTtcbn1cbmluaGVyaXRzKERFUk5vZGUsIE5vZGUpO1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlQ29tcG9zaXRlID0gZnVuY3Rpb24gZW5jb2RlQ29tcG9zaXRlKHRhZyxcbiAgcHJpbWl0aXZlLFxuICBjbHMsXG4gIGNvbnRlbnQpIHtcbiAgY29uc3QgZW5jb2RlZFRhZyA9IGVuY29kZVRhZyh0YWcsIHByaW1pdGl2ZSwgY2xzLCB0aGlzLnJlcG9ydGVyKTtcblxuICAvLyBTaG9ydCBmb3JtXG4gIGlmIChjb250ZW50Lmxlbmd0aCA8IDB4ODApIHtcbiAgICBjb25zdCBoZWFkZXIgPSBCdWZmZXIuYWxsb2MoMik7XG4gICAgaGVhZGVyWzBdID0gZW5jb2RlZFRhZztcbiAgICBoZWFkZXJbMV0gPSBjb250ZW50Lmxlbmd0aDtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbIGhlYWRlciwgY29udGVudCBdKTtcbiAgfVxuXG4gIC8vIExvbmcgZm9ybVxuICAvLyBDb3VudCBvY3RldHMgcmVxdWlyZWQgdG8gc3RvcmUgbGVuZ3RoXG4gIGxldCBsZW5PY3RldHMgPSAxO1xuICBmb3IgKGxldCBpID0gY29udGVudC5sZW5ndGg7IGkgPj0gMHgxMDA7IGkgPj49IDgpXG4gICAgbGVuT2N0ZXRzKys7XG5cbiAgY29uc3QgaGVhZGVyID0gQnVmZmVyLmFsbG9jKDEgKyAxICsgbGVuT2N0ZXRzKTtcbiAgaGVhZGVyWzBdID0gZW5jb2RlZFRhZztcbiAgaGVhZGVyWzFdID0gMHg4MCB8IGxlbk9jdGV0cztcblxuICBmb3IgKGxldCBpID0gMSArIGxlbk9jdGV0cywgaiA9IGNvbnRlbnQubGVuZ3RoOyBqID4gMDsgaS0tLCBqID4+PSA4KVxuICAgIGhlYWRlcltpXSA9IGogJiAweGZmO1xuXG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgaGVhZGVyLCBjb250ZW50IF0pO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZVN0ciA9IGZ1bmN0aW9uIGVuY29kZVN0cihzdHIsIHRhZykge1xuICBpZiAodGFnID09PSAnYml0c3RyJykge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgc3RyLnVudXNlZCB8IDAsIHN0ci5kYXRhIF0pO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2JtcHN0cicpIHtcbiAgICBjb25zdCBidWYgPSBCdWZmZXIuYWxsb2Moc3RyLmxlbmd0aCAqIDIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICBidWYud3JpdGVVSW50MTZCRShzdHIuY2hhckNvZGVBdChpKSwgaSAqIDIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihidWYpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ251bXN0cicpIHtcbiAgICBpZiAoIXRoaXMuX2lzTnVtc3RyKHN0cikpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogbnVtc3RyIHN1cHBvcnRzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ubHkgZGlnaXRzIGFuZCBzcGFjZScpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3ByaW50c3RyJykge1xuICAgIGlmICghdGhpcy5faXNQcmludHN0cihzdHIpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6IHByaW50c3RyIHN1cHBvcnRzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29ubHkgbGF0aW4gdXBwZXIgYW5kIGxvd2VyIGNhc2UgbGV0dGVycywgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlnaXRzLCBzcGFjZSwgYXBvc3Ryb3BoZSwgbGVmdCBhbmQgcmlndGggJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyZW50aGVzaXMsIHBsdXMgc2lnbiwgY29tbWEsIGh5cGhlbiwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG90LCBzbGFzaCwgY29sb24sIGVxdWFsIHNpZ24sICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1ZXN0aW9uIG1hcmsnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIGlmICgvc3RyJC8udGVzdCh0YWcpKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJykge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHN0cik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ0VuY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICsgdGFnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHVuc3VwcG9ydGVkJyk7XG4gIH1cbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVPYmppZCA9IGZ1bmN0aW9uIGVuY29kZU9iamlkKGlkLCB2YWx1ZXMsIHJlbGF0aXZlKSB7XG4gIGlmICh0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKCF2YWx1ZXMpXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignc3RyaW5nIG9iamlkIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcCBmb3VuZCcpO1xuICAgIGlmICghdmFsdWVzLmhhc093blByb3BlcnR5KGlkKSlcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdvYmppZCBub3QgZm91bmQgaW4gdmFsdWVzIG1hcCcpO1xuICAgIGlkID0gdmFsdWVzW2lkXS5zcGxpdCgvW1xccy5dKy9nKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKVxuICAgICAgaWRbaV0gfD0gMDtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGlkKSkge1xuICAgIGlkID0gaWQuc2xpY2UoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKVxuICAgICAgaWRbaV0gfD0gMDtcbiAgfVxuXG4gIGlmICghQXJyYXkuaXNBcnJheShpZCkpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignb2JqaWQoKSBzaG91bGQgYmUgZWl0aGVyIGFycmF5IG9yIHN0cmluZywgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dvdDogJyArIEpTT04uc3RyaW5naWZ5KGlkKSk7XG4gIH1cblxuICBpZiAoIXJlbGF0aXZlKSB7XG4gICAgaWYgKGlkWzFdID49IDQwKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ1NlY29uZCBvYmppZCBpZGVudGlmaWVyIE9PQicpO1xuICAgIGlkLnNwbGljZSgwLCAyLCBpZFswXSAqIDQwICsgaWRbMV0pO1xuICB9XG5cbiAgLy8gQ291bnQgbnVtYmVyIG9mIG9jdGV0c1xuICBsZXQgc2l6ZSA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaWRlbnQgPSBpZFtpXTtcbiAgICBmb3IgKHNpemUrKzsgaWRlbnQgPj0gMHg4MDsgaWRlbnQgPj49IDcpXG4gICAgICBzaXplKys7XG4gIH1cblxuICBjb25zdCBvYmppZCA9IEJ1ZmZlci5hbGxvYyhzaXplKTtcbiAgbGV0IG9mZnNldCA9IG9iamlkLmxlbmd0aCAtIDE7XG4gIGZvciAobGV0IGkgPSBpZC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGxldCBpZGVudCA9IGlkW2ldO1xuICAgIG9iamlkW29mZnNldC0tXSA9IGlkZW50ICYgMHg3ZjtcbiAgICB3aGlsZSAoKGlkZW50ID4+PSA3KSA+IDApXG4gICAgICBvYmppZFtvZmZzZXQtLV0gPSAweDgwIHwgKGlkZW50ICYgMHg3Zik7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihvYmppZCk7XG59O1xuXG5mdW5jdGlvbiB0d28obnVtKSB7XG4gIGlmIChudW0gPCAxMClcbiAgICByZXR1cm4gJzAnICsgbnVtO1xuICBlbHNlXG4gICAgcmV0dXJuIG51bTtcbn1cblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZVRpbWUgPSBmdW5jdGlvbiBlbmNvZGVUaW1lKHRpbWUsIHRhZykge1xuICBsZXQgc3RyO1xuICBjb25zdCBkYXRlID0gbmV3IERhdGUodGltZSk7XG5cbiAgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnKSB7XG4gICAgc3RyID0gW1xuICAgICAgdHdvKGRhdGUuZ2V0VVRDRnVsbFllYXIoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNb250aCgpICsgMSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENEYXRlKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDSG91cnMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNaW51dGVzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDU2Vjb25kcygpKSxcbiAgICAgICdaJ1xuICAgIF0uam9pbignJyk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAndXRjdGltZScpIHtcbiAgICBzdHIgPSBbXG4gICAgICB0d28oZGF0ZS5nZXRVVENGdWxsWWVhcigpICUgMTAwKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01vbnRoKCkgKyAxKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0RhdGUoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENIb3VycygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01pbnV0ZXMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENTZWNvbmRzKCkpLFxuICAgICAgJ1onXG4gICAgXS5qb2luKCcnKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyAnICsgdGFnICsgJyB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Jyk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fZW5jb2RlU3RyKHN0ciwgJ29jdHN0cicpO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZU51bGwgPSBmdW5jdGlvbiBlbmNvZGVOdWxsKCkge1xuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcignJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlSW50ID0gZnVuY3Rpb24gZW5jb2RlSW50KG51bSwgdmFsdWVzKSB7XG4gIGlmICh0eXBlb2YgbnVtID09PSAnc3RyaW5nJykge1xuICAgIGlmICghdmFsdWVzKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ1N0cmluZyBpbnQgb3IgZW51bSBnaXZlbiwgYnV0IG5vIHZhbHVlcyBtYXAnKTtcbiAgICBpZiAoIXZhbHVlcy5oYXNPd25Qcm9wZXJ0eShudW0pKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignVmFsdWVzIG1hcCBkb2VzblxcJ3QgY29udGFpbjogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShudW0pKTtcbiAgICB9XG4gICAgbnVtID0gdmFsdWVzW251bV07XG4gIH1cblxuICAvLyBCaWdudW0sIGFzc3VtZSBiaWcgZW5kaWFuXG4gIGlmICh0eXBlb2YgbnVtICE9PSAnbnVtYmVyJyAmJiAhQnVmZmVyLmlzQnVmZmVyKG51bSkpIHtcbiAgICBjb25zdCBudW1BcnJheSA9IG51bS50b0FycmF5KCk7XG4gICAgaWYgKCFudW0uc2lnbiAmJiBudW1BcnJheVswXSAmIDB4ODApIHtcbiAgICAgIG51bUFycmF5LnVuc2hpZnQoMCk7XG4gICAgfVxuICAgIG51bSA9IEJ1ZmZlci5mcm9tKG51bUFycmF5KTtcbiAgfVxuXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIobnVtKSkge1xuICAgIGxldCBzaXplID0gbnVtLmxlbmd0aDtcbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMClcbiAgICAgIHNpemUrKztcblxuICAgIGNvbnN0IG91dCA9IEJ1ZmZlci5hbGxvYyhzaXplKTtcbiAgICBudW0uY29weShvdXQpO1xuICAgIGlmIChudW0ubGVuZ3RoID09PSAwKVxuICAgICAgb3V0WzBdID0gMDtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihvdXQpO1xuICB9XG5cbiAgaWYgKG51bSA8IDB4ODApXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIobnVtKTtcblxuICBpZiAobnVtIDwgMHgxMDApXG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWzAsIG51bV0pO1xuXG4gIGxldCBzaXplID0gMTtcbiAgZm9yIChsZXQgaSA9IG51bTsgaSA+PSAweDEwMDsgaSA+Pj0gOClcbiAgICBzaXplKys7XG5cbiAgY29uc3Qgb3V0ID0gbmV3IEFycmF5KHNpemUpO1xuICBmb3IgKGxldCBpID0gb3V0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgb3V0W2ldID0gbnVtICYgMHhmZjtcbiAgICBudW0gPj49IDg7XG4gIH1cbiAgaWYob3V0WzBdICYgMHg4MCkge1xuICAgIG91dC51bnNoaWZ0KDApO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoQnVmZmVyLmZyb20ob3V0KSk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlQm9vbCA9IGZ1bmN0aW9uIGVuY29kZUJvb2wodmFsdWUpIHtcbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIodmFsdWUgPyAweGZmIDogMCk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fdXNlID0gZnVuY3Rpb24gdXNlKGVudGl0eSwgb2JqKSB7XG4gIGlmICh0eXBlb2YgZW50aXR5ID09PSAnZnVuY3Rpb24nKVxuICAgIGVudGl0eSA9IGVudGl0eShvYmopO1xuICByZXR1cm4gZW50aXR5Ll9nZXRFbmNvZGVyKCdkZXInKS50cmVlO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX3NraXBEZWZhdWx0ID0gZnVuY3Rpb24gc2tpcERlZmF1bHQoZGF0YUJ1ZmZlciwgcmVwb3J0ZXIsIHBhcmVudCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgbGV0IGk7XG4gIGlmIChzdGF0ZVsnZGVmYXVsdCddID09PSBudWxsKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBkYXRhID0gZGF0YUJ1ZmZlci5qb2luKCk7XG4gIGlmIChzdGF0ZS5kZWZhdWx0QnVmZmVyID09PSB1bmRlZmluZWQpXG4gICAgc3RhdGUuZGVmYXVsdEJ1ZmZlciA9IHRoaXMuX2VuY29kZVZhbHVlKHN0YXRlWydkZWZhdWx0J10sIHJlcG9ydGVyLCBwYXJlbnQpLmpvaW4oKTtcblxuICBpZiAoZGF0YS5sZW5ndGggIT09IHN0YXRlLmRlZmF1bHRCdWZmZXIubGVuZ3RoKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBmb3IgKGk9MDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspXG4gICAgaWYgKGRhdGFbaV0gIT09IHN0YXRlLmRlZmF1bHRCdWZmZXJbaV0pXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG4vLyBVdGlsaXR5IG1ldGhvZHNcblxuZnVuY3Rpb24gZW5jb2RlVGFnKHRhZywgcHJpbWl0aXZlLCBjbHMsIHJlcG9ydGVyKSB7XG4gIGxldCByZXM7XG5cbiAgaWYgKHRhZyA9PT0gJ3NlcW9mJylcbiAgICB0YWcgPSAnc2VxJztcbiAgZWxzZSBpZiAodGFnID09PSAnc2V0b2YnKVxuICAgIHRhZyA9ICdzZXQnO1xuXG4gIGlmIChkZXIudGFnQnlOYW1lLmhhc093blByb3BlcnR5KHRhZykpXG4gICAgcmVzID0gZGVyLnRhZ0J5TmFtZVt0YWddO1xuICBlbHNlIGlmICh0eXBlb2YgdGFnID09PSAnbnVtYmVyJyAmJiAodGFnIHwgMCkgPT09IHRhZylcbiAgICByZXMgPSB0YWc7XG4gIGVsc2VcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ1Vua25vd24gdGFnOiAnICsgdGFnKTtcblxuICBpZiAocmVzID49IDB4MWYpXG4gICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdNdWx0aS1vY3RldCB0YWcgZW5jb2RpbmcgdW5zdXBwb3J0ZWQnKTtcblxuICBpZiAoIXByaW1pdGl2ZSlcbiAgICByZXMgfD0gMHgyMDtcblxuICByZXMgfD0gKGRlci50YWdDbGFzc0J5TmFtZVtjbHMgfHwgJ3VuaXZlcnNhbCddIDw8IDYpO1xuXG4gIHJldHVybiByZXM7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGVuY29kZXJzID0gZXhwb3J0cztcblxuZW5jb2RlcnMuZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcbmVuY29kZXJzLnBlbSA9IHJlcXVpcmUoJy4vcGVtJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuY29uc3QgREVSRW5jb2RlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG5cbmZ1bmN0aW9uIFBFTUVuY29kZXIoZW50aXR5KSB7XG4gIERFUkVuY29kZXIuY2FsbCh0aGlzLCBlbnRpdHkpO1xuICB0aGlzLmVuYyA9ICdwZW0nO1xufVxuaW5oZXJpdHMoUEVNRW5jb2RlciwgREVSRW5jb2Rlcik7XG5tb2R1bGUuZXhwb3J0cyA9IFBFTUVuY29kZXI7XG5cblBFTUVuY29kZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCBvcHRpb25zKSB7XG4gIGNvbnN0IGJ1ZiA9IERFUkVuY29kZXIucHJvdG90eXBlLmVuY29kZS5jYWxsKHRoaXMsIGRhdGEpO1xuXG4gIGNvbnN0IHAgPSBidWYudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICBjb25zdCBvdXQgPSBbICctLS0tLUJFR0lOICcgKyBvcHRpb25zLmxhYmVsICsgJy0tLS0tJyBdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHAubGVuZ3RoOyBpICs9IDY0KVxuICAgIG91dC5wdXNoKHAuc2xpY2UoaSwgaSArIDY0KSk7XG4gIG91dC5wdXNoKCctLS0tLUVORCAnICsgb3B0aW9ucy5sYWJlbCArICctLS0tLScpO1xuICByZXR1cm4gb3V0LmpvaW4oJ1xcbicpO1xufTtcbiIsIihmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBVdGlsc1xuICBmdW5jdGlvbiBhc3NlcnQgKHZhbCwgbXNnKSB7XG4gICAgaWYgKCF2YWwpIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbiAgfVxuXG4gIC8vIENvdWxkIHVzZSBgaW5oZXJpdHNgIG1vZHVsZSwgYnV0IGRvbid0IHdhbnQgdG8gbW92ZSBmcm9tIHNpbmdsZSBmaWxlXG4gIC8vIGFyY2hpdGVjdHVyZSB5ZXQuXG4gIGZ1bmN0aW9uIGluaGVyaXRzIChjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvcjtcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlO1xuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKCk7XG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yO1xuICB9XG5cbiAgLy8gQk5cblxuICBmdW5jdGlvbiBCTiAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAoQk4uaXNCTihudW1iZXIpKSB7XG4gICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cblxuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIHRoaXMud29yZHMgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcblxuICAgIC8vIFJlZHVjdGlvbiBjb250ZXh0XG4gICAgdGhpcy5yZWQgPSBudWxsO1xuXG4gICAgaWYgKG51bWJlciAhPT0gbnVsbCkge1xuICAgICAgaWYgKGJhc2UgPT09ICdsZScgfHwgYmFzZSA9PT0gJ2JlJykge1xuICAgICAgICBlbmRpYW4gPSBiYXNlO1xuICAgICAgICBiYXNlID0gMTA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2luaXQobnVtYmVyIHx8IDAsIGJhc2UgfHwgMTAsIGVuZGlhbiB8fCAnYmUnKTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBCTjtcbiAgfSBlbHNlIHtcbiAgICBleHBvcnRzLkJOID0gQk47XG4gIH1cblxuICBCTi5CTiA9IEJOO1xuICBCTi53b3JkU2l6ZSA9IDI2O1xuXG4gIHZhciBCdWZmZXI7XG4gIHRyeSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuQnVmZmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgQnVmZmVyID0gd2luZG93LkJ1ZmZlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICB9XG5cbiAgQk4uaXNCTiA9IGZ1bmN0aW9uIGlzQk4gKG51bSkge1xuICAgIGlmIChudW0gaW5zdGFuY2VvZiBCTikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bSAhPT0gbnVsbCAmJiB0eXBlb2YgbnVtID09PSAnb2JqZWN0JyAmJlxuICAgICAgbnVtLmNvbnN0cnVjdG9yLndvcmRTaXplID09PSBCTi53b3JkU2l6ZSAmJiBBcnJheS5pc0FycmF5KG51bS53b3Jkcyk7XG4gIH07XG5cbiAgQk4ubWF4ID0gZnVuY3Rpb24gbWF4IChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPiAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ubWluID0gZnVuY3Rpb24gbWluIChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPCAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdCAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0TnVtYmVyKG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0QXJyYXkobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAnaGV4Jykge1xuICAgICAgYmFzZSA9IDE2O1xuICAgIH1cbiAgICBhc3NlcnQoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNik7XG5cbiAgICBudW1iZXIgPSBudW1iZXIudG9TdHJpbmcoKS5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGlmIChudW1iZXJbMF0gPT09ICctJykge1xuICAgICAgc3RhcnQrKztcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA8IG51bWJlci5sZW5ndGgpIHtcbiAgICAgIGlmIChiYXNlID09PSAxNikge1xuICAgICAgICB0aGlzLl9wYXJzZUhleChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcGFyc2VCYXNlKG51bWJlciwgYmFzZSwgc3RhcnQpO1xuICAgICAgICBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICAgICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdE51bWJlciA9IGZ1bmN0aW9uIF9pbml0TnVtYmVyIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIG51bWJlciA9IC1udW1iZXI7XG4gICAgfVxuICAgIGlmIChudW1iZXIgPCAweDQwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIG51bWJlciAmIDB4M2ZmZmZmZiBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMHgxMDAwMDAwMDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZlxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG51bWJlciA8IDB4MjAwMDAwMDAwMDAwMDApOyAvLyAyIF4gNTMgKHVuc2FmZSlcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmYsXG4gICAgICAgIDFcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDM7XG4gICAgfVxuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgLy8gUmV2ZXJzZSB0aGUgYnl0ZXNcbiAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0QXJyYXkgPSBmdW5jdGlvbiBfaW5pdEFycmF5IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIC8vIFBlcmhhcHMgYSBVaW50OEFycmF5XG4gICAgYXNzZXJ0KHR5cGVvZiBudW1iZXIubGVuZ3RoID09PSAnbnVtYmVyJyk7XG4gICAgaWYgKG51bWJlci5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwobnVtYmVyLmxlbmd0aCAvIDMpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGosIHc7XG4gICAgdmFyIG9mZiA9IDA7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDEsIGogPSAwOyBpID49IDA7IGkgLT0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpIC0gMV0gPDwgOCkgfCAobnVtYmVyW2kgLSAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSArIDFdIDw8IDgpIHwgKG51bWJlcltpICsgMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXg0Qml0cyAoc3RyaW5nLCBpbmRleCkge1xuICAgIHZhciBjID0gc3RyaW5nLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgIC8vICdBJyAtICdGJ1xuICAgIGlmIChjID49IDY1ICYmIGMgPD0gNzApIHtcbiAgICAgIHJldHVybiBjIC0gNTU7XG4gICAgLy8gJ2EnIC0gJ2YnXG4gICAgfSBlbHNlIGlmIChjID49IDk3ICYmIGMgPD0gMTAyKSB7XG4gICAgICByZXR1cm4gYyAtIDg3O1xuICAgIC8vICcwJyAtICc5J1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKGMgLSA0OCkgJiAweGY7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXhCeXRlIChzdHJpbmcsIGxvd2VyQm91bmQsIGluZGV4KSB7XG4gICAgdmFyIHIgPSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXgpO1xuICAgIGlmIChpbmRleCAtIDEgPj0gbG93ZXJCb3VuZCkge1xuICAgICAgciB8PSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXggLSAxKSA8PCA0O1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VIZXggPSBmdW5jdGlvbiBfcGFyc2VIZXggKG51bWJlciwgc3RhcnQsIGVuZGlhbikge1xuICAgIC8vIENyZWF0ZSBwb3NzaWJseSBiaWdnZXIgYXJyYXkgdG8gZW5zdXJlIHRoYXQgaXQgZml0cyB0aGUgbnVtYmVyXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwoKG51bWJlci5sZW5ndGggLSBzdGFydCkgLyA2KTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIC8vIDI0LWJpdHMgY2h1bmtzXG4gICAgdmFyIG9mZiA9IDA7XG4gICAgdmFyIGogPSAwO1xuXG4gICAgdmFyIHc7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IGkgLT0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYXJzZUxlbmd0aCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICAgIGZvciAoaSA9IHBhcnNlTGVuZ3RoICUgMiA9PT0gMCA/IHN0YXJ0ICsgMSA6IHN0YXJ0OyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VCYXNlIChzdHIsIHN0YXJ0LCBlbmQsIG11bCkge1xuICAgIHZhciByID0gMDtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oc3RyLmxlbmd0aCwgZW5kKTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKSAtIDQ4O1xuXG4gICAgICByICo9IG11bDtcblxuICAgICAgLy8gJ2EnXG4gICAgICBpZiAoYyA+PSA0OSkge1xuICAgICAgICByICs9IGMgLSA0OSArIDB4YTtcblxuICAgICAgLy8gJ0EnXG4gICAgICB9IGVsc2UgaWYgKGMgPj0gMTcpIHtcbiAgICAgICAgciArPSBjIC0gMTcgKyAweGE7XG5cbiAgICAgIC8vICcwJyAtICc5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgciArPSBjO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VCYXNlID0gZnVuY3Rpb24gX3BhcnNlQmFzZSAobnVtYmVyLCBiYXNlLCBzdGFydCkge1xuICAgIC8vIEluaXRpYWxpemUgYXMgemVyb1xuICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICB0aGlzLmxlbmd0aCA9IDE7XG5cbiAgICAvLyBGaW5kIGxlbmd0aCBvZiBsaW1iIGluIGJhc2VcbiAgICBmb3IgKHZhciBsaW1iTGVuID0gMCwgbGltYlBvdyA9IDE7IGxpbWJQb3cgPD0gMHgzZmZmZmZmOyBsaW1iUG93ICo9IGJhc2UpIHtcbiAgICAgIGxpbWJMZW4rKztcbiAgICB9XG4gICAgbGltYkxlbi0tO1xuICAgIGxpbWJQb3cgPSAobGltYlBvdyAvIGJhc2UpIHwgMDtcblxuICAgIHZhciB0b3RhbCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICB2YXIgbW9kID0gdG90YWwgJSBsaW1iTGVuO1xuICAgIHZhciBlbmQgPSBNYXRoLm1pbih0b3RhbCwgdG90YWwgLSBtb2QpICsgc3RhcnQ7XG5cbiAgICB2YXIgd29yZCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpICs9IGxpbWJMZW4pIHtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBpICsgbGltYkxlbiwgYmFzZSk7XG5cbiAgICAgIHRoaXMuaW11bG4obGltYlBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZCAhPT0gMCkge1xuICAgICAgdmFyIHBvdyA9IDE7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgbnVtYmVyLmxlbmd0aCwgYmFzZSk7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBtb2Q7IGkrKykge1xuICAgICAgICBwb3cgKj0gYmFzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pbXVsbihwb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKGRlc3QpIHtcbiAgICBkZXN0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlc3Qud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgIH1cbiAgICBkZXN0Lmxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIGRlc3QubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIGRlc3QucmVkID0gdGhpcy5yZWQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUgKCkge1xuICAgIHZhciByID0gbmV3IEJOKG51bGwpO1xuICAgIHRoaXMuY29weShyKTtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2V4cGFuZCA9IGZ1bmN0aW9uIF9leHBhbmQgKHNpemUpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBzaXplKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gUmVtb3ZlIGxlYWRpbmcgYDBgIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdHJpcCA9IGZ1bmN0aW9uIHN0cmlwICgpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPiAxICYmIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9ub3JtU2lnbiA9IGZ1bmN0aW9uIF9ub3JtU2lnbiAoKSB7XG4gICAgLy8gLTAgPSAwXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICAgIHJldHVybiAodGhpcy5yZWQgPyAnPEJOLVI6ICcgOiAnPEJOOiAnKSArIHRoaXMudG9TdHJpbmcoMTYpICsgJz4nO1xuICB9O1xuXG4gIC8qXG5cbiAgdmFyIHplcm9zID0gW107XG4gIHZhciBncm91cFNpemVzID0gW107XG4gIHZhciBncm91cEJhc2VzID0gW107XG5cbiAgdmFyIHMgPSAnJztcbiAgdmFyIGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IEJOLndvcmRTaXplKSB7XG4gICAgemVyb3NbaV0gPSBzO1xuICAgIHMgKz0gJzAnO1xuICB9XG4gIGdyb3VwU2l6ZXNbMF0gPSAwO1xuICBncm91cFNpemVzWzFdID0gMDtcbiAgZ3JvdXBCYXNlc1swXSA9IDA7XG4gIGdyb3VwQmFzZXNbMV0gPSAwO1xuICB2YXIgYmFzZSA9IDIgLSAxO1xuICB3aGlsZSAoKytiYXNlIDwgMzYgKyAxKSB7XG4gICAgdmFyIGdyb3VwU2l6ZSA9IDA7XG4gICAgdmFyIGdyb3VwQmFzZSA9IDE7XG4gICAgd2hpbGUgKGdyb3VwQmFzZSA8ICgxIDw8IEJOLndvcmRTaXplKSAvIGJhc2UpIHtcbiAgICAgIGdyb3VwQmFzZSAqPSBiYXNlO1xuICAgICAgZ3JvdXBTaXplICs9IDE7XG4gICAgfVxuICAgIGdyb3VwU2l6ZXNbYmFzZV0gPSBncm91cFNpemU7XG4gICAgZ3JvdXBCYXNlc1tiYXNlXSA9IGdyb3VwQmFzZTtcbiAgfVxuXG4gICovXG5cbiAgdmFyIHplcm9zID0gW1xuICAgICcnLFxuICAgICcwJyxcbiAgICAnMDAnLFxuICAgICcwMDAnLFxuICAgICcwMDAwJyxcbiAgICAnMDAwMDAnLFxuICAgICcwMDAwMDAnLFxuICAgICcwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJ1xuICBdO1xuXG4gIHZhciBncm91cFNpemVzID0gW1xuICAgIDAsIDAsXG4gICAgMjUsIDE2LCAxMiwgMTEsIDEwLCA5LCA4LFxuICAgIDgsIDcsIDcsIDcsIDcsIDYsIDYsXG4gICAgNiwgNiwgNiwgNiwgNiwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDVcbiAgXTtcblxuICB2YXIgZ3JvdXBCYXNlcyA9IFtcbiAgICAwLCAwLFxuICAgIDMzNTU0NDMyLCA0MzA0NjcyMSwgMTY3NzcyMTYsIDQ4ODI4MTI1LCA2MDQ2NjE3NiwgNDAzNTM2MDcsIDE2Nzc3MjE2LFxuICAgIDQzMDQ2NzIxLCAxMDAwMDAwMCwgMTk0ODcxNzEsIDM1ODMxODA4LCA2Mjc0ODUxNywgNzUyOTUzNiwgMTEzOTA2MjUsXG4gICAgMTY3NzcyMTYsIDI0MTM3NTY5LCAzNDAxMjIyNCwgNDcwNDU4ODEsIDY0MDAwMDAwLCA0MDg0MTAxLCA1MTUzNjMyLFxuICAgIDY0MzYzNDMsIDc5NjI2MjQsIDk3NjU2MjUsIDExODgxMzc2LCAxNDM0ODkwNywgMTcyMTAzNjgsIDIwNTExMTQ5LFxuICAgIDI0MzAwMDAwLCAyODYyOTE1MSwgMzM1NTQ0MzIsIDM5MTM1MzkzLCA0NTQzNTQyNCwgNTI1MjE4NzUsIDYwNDY2MTc2XG4gIF07XG5cbiAgQk4ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKGJhc2UsIHBhZGRpbmcpIHtcbiAgICBiYXNlID0gYmFzZSB8fCAxMDtcbiAgICBwYWRkaW5nID0gcGFkZGluZyB8IDAgfHwgMTtcblxuICAgIHZhciBvdXQ7XG4gICAgaWYgKGJhc2UgPT09IDE2IHx8IGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBvZmYgPSAwO1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV07XG4gICAgICAgIHZhciB3b3JkID0gKCgodyA8PCBvZmYpIHwgY2FycnkpICYgMHhmZmZmZmYpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgY2FycnkgPSAodyA+Pj4gKDI0IC0gb2ZmKSkgJiAweGZmZmZmZjtcbiAgICAgICAgaWYgKGNhcnJ5ICE9PSAwIHx8IGkgIT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIG91dCA9IHplcm9zWzYgLSB3b3JkLmxlbmd0aF0gKyB3b3JkICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHdvcmQgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgb2ZmICs9IDI7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgICAgb3V0ID0gY2FycnkudG9TdHJpbmcoMTYpICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpIHtcbiAgICAgIC8vIHZhciBncm91cFNpemUgPSBNYXRoLmZsb29yKEJOLndvcmRTaXplICogTWF0aC5MTjIgLyBNYXRoLmxvZyhiYXNlKSk7XG4gICAgICB2YXIgZ3JvdXBTaXplID0gZ3JvdXBTaXplc1tiYXNlXTtcbiAgICAgIC8vIHZhciBncm91cEJhc2UgPSBNYXRoLnBvdyhiYXNlLCBncm91cFNpemUpO1xuICAgICAgdmFyIGdyb3VwQmFzZSA9IGdyb3VwQmFzZXNbYmFzZV07XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBjID0gdGhpcy5jbG9uZSgpO1xuICAgICAgYy5uZWdhdGl2ZSA9IDA7XG4gICAgICB3aGlsZSAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgdmFyIHIgPSBjLm1vZG4oZ3JvdXBCYXNlKS50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgYyA9IGMuaWRpdm4oZ3JvdXBCYXNlKTtcblxuICAgICAgICBpZiAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1tncm91cFNpemUgLSByLmxlbmd0aF0gKyByICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHIgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGFzc2VydChmYWxzZSwgJ0Jhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYnKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9OdW1iZXIgPSBmdW5jdGlvbiB0b051bWJlciAoKSB7XG4gICAgdmFyIHJldCA9IHRoaXMud29yZHNbMF07XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAyKSB7XG4gICAgICByZXQgKz0gdGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMDtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID09PSAzICYmIHRoaXMud29yZHNbMl0gPT09IDB4MDEpIHtcbiAgICAgIC8vIE5PVEU6IGF0IHRoaXMgc3RhZ2UgaXQgaXMga25vd24gdGhhdCB0aGUgdG9wIGJpdCBpcyBzZXRcbiAgICAgIHJldCArPSAweDEwMDAwMDAwMDAwMDAwICsgKHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiAyKSB7XG4gICAgICBhc3NlcnQoZmFsc2UsICdOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMnKTtcbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLm5lZ2F0aXZlICE9PSAwKSA/IC1yZXQgOiByZXQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0J1ZmZlciA9IGZ1bmN0aW9uIHRvQnVmZmVyIChlbmRpYW4sIGxlbmd0aCkge1xuICAgIGFzc2VydCh0eXBlb2YgQnVmZmVyICE9PSAndW5kZWZpbmVkJyk7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQnVmZmVyLCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiB0b0FycmF5IChlbmRpYW4sIGxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXlMaWtlID0gZnVuY3Rpb24gdG9BcnJheUxpa2UgKEFycmF5VHlwZSwgZW5kaWFuLCBsZW5ndGgpIHtcbiAgICB2YXIgYnl0ZUxlbmd0aCA9IHRoaXMuYnl0ZUxlbmd0aCgpO1xuICAgIHZhciByZXFMZW5ndGggPSBsZW5ndGggfHwgTWF0aC5tYXgoMSwgYnl0ZUxlbmd0aCk7XG4gICAgYXNzZXJ0KGJ5dGVMZW5ndGggPD0gcmVxTGVuZ3RoLCAnYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCcpO1xuICAgIGFzc2VydChyZXFMZW5ndGggPiAwLCAnUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwJyk7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gICAgdmFyIGxpdHRsZUVuZGlhbiA9IGVuZGlhbiA9PT0gJ2xlJztcbiAgICB2YXIgcmVzID0gbmV3IEFycmF5VHlwZShyZXFMZW5ndGgpO1xuXG4gICAgdmFyIGIsIGk7XG4gICAgdmFyIHEgPSB0aGlzLmNsb25lKCk7XG4gICAgaWYgKCFsaXR0bGVFbmRpYW4pIHtcbiAgICAgIC8vIEFzc3VtZSBiaWctZW5kaWFuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgcmVxTGVuZ3RoIC0gYnl0ZUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tyZXFMZW5ndGggLSBpIC0gMV0gPSBiO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbaV0gPSBiO1xuICAgICAgfVxuXG4gICAgICBmb3IgKDsgaSA8IHJlcUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBpZiAoTWF0aC5jbHozMikge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgcmV0dXJuIDMyIC0gTWF0aC5jbHozMih3KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgdmFyIHQgPSB3O1xuICAgICAgdmFyIHIgPSAwO1xuICAgICAgaWYgKHQgPj0gMHgxMDAwKSB7XG4gICAgICAgIHIgKz0gMTM7XG4gICAgICAgIHQgPj4+PSAxMztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4NDApIHtcbiAgICAgICAgciArPSA3O1xuICAgICAgICB0ID4+Pj0gNztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4OCkge1xuICAgICAgICByICs9IDQ7XG4gICAgICAgIHQgPj4+PSA0O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHgwMikge1xuICAgICAgICByICs9IDI7XG4gICAgICAgIHQgPj4+PSAyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHIgKyB0O1xuICAgIH07XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3plcm9CaXRzID0gZnVuY3Rpb24gX3plcm9CaXRzICh3KSB7XG4gICAgLy8gU2hvcnQtY3V0XG4gICAgaWYgKHcgPT09IDApIHJldHVybiAyNjtcblxuICAgIHZhciB0ID0gdztcbiAgICB2YXIgciA9IDA7XG4gICAgaWYgKCh0ICYgMHgxZmZmKSA9PT0gMCkge1xuICAgICAgciArPSAxMztcbiAgICAgIHQgPj4+PSAxMztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHg3ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNztcbiAgICAgIHQgPj4+PSA3O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweGYpID09PSAwKSB7XG4gICAgICByICs9IDQ7XG4gICAgICB0ID4+Pj0gNDtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgzKSA9PT0gMCkge1xuICAgICAgciArPSAyO1xuICAgICAgdCA+Pj49IDI7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MSkgPT09IDApIHtcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG51bWJlciBvZiB1c2VkIGJpdHMgaW4gYSBCTlxuICBCTi5wcm90b3R5cGUuYml0TGVuZ3RoID0gZnVuY3Rpb24gYml0TGVuZ3RoICgpIHtcbiAgICB2YXIgdyA9IHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXTtcbiAgICB2YXIgaGkgPSB0aGlzLl9jb3VudEJpdHModyk7XG4gICAgcmV0dXJuICh0aGlzLmxlbmd0aCAtIDEpICogMjYgKyBoaTtcbiAgfTtcblxuICBmdW5jdGlvbiB0b0JpdEFycmF5IChudW0pIHtcbiAgICB2YXIgdyA9IG5ldyBBcnJheShudW0uYml0TGVuZ3RoKCkpO1xuXG4gICAgZm9yICh2YXIgYml0ID0gMDsgYml0IDwgdy5sZW5ndGg7IGJpdCsrKSB7XG4gICAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgICB3W2JpdF0gPSAobnVtLndvcmRzW29mZl0gJiAoMSA8PCB3Yml0KSkgPj4+IHdiaXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHc7XG4gIH1cblxuICAvLyBOdW1iZXIgb2YgdHJhaWxpbmcgemVybyBiaXRzXG4gIEJOLnByb3RvdHlwZS56ZXJvQml0cyA9IGZ1bmN0aW9uIHplcm9CaXRzICgpIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIDA7XG5cbiAgICB2YXIgciA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYiA9IHRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbaV0pO1xuICAgICAgciArPSBiO1xuICAgICAgaWYgKGIgIT09IDI2KSBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmJ5dGVMZW5ndGggPSBmdW5jdGlvbiBieXRlTGVuZ3RoICgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkgLyA4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9Ud29zID0gZnVuY3Rpb24gdG9Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5hYnMoKS5pbm90bih3aWR0aCkuaWFkZG4oMSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21Ud29zID0gZnVuY3Rpb24gZnJvbVR3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMudGVzdG4od2lkdGggLSAxKSkge1xuICAgICAgcmV0dXJuIHRoaXMubm90bih3aWR0aCkuaWFkZG4oMSkuaW5lZygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uIGlzTmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZSAhPT0gMDtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5lZygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbmVnID0gZnVuY3Rpb24gaW5lZyAoKSB7XG4gICAgaWYgKCF0aGlzLmlzWmVybygpKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1b3IgPSBmdW5jdGlvbiBpdW9yIChudW0pIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gfCBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW9yID0gZnVuY3Rpb24gaW9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdW9yKG51bSk7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gb3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW9yID0gZnVuY3Rpb24gdW9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVvcih0aGlzKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1YW5kID0gZnVuY3Rpb24gaXVhbmQgKG51bSkge1xuICAgIC8vIGIgPSBtaW4tbGVuZ3RoKG51bSwgdGhpcylcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldICYgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYi5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYW5kID0gZnVuY3Rpb24gaWFuZCAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVhbmQobnVtKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIGFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhbmQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVhbmQgPSBmdW5jdGlvbiB1YW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1YW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1YW5kKHRoaXMpO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXV4b3IgPSBmdW5jdGlvbiBpdXhvciAobnVtKSB7XG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhO1xuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV0gXiBiLndvcmRzW2ldO1xuICAgIH1cblxuICAgIGlmICh0aGlzICE9PSBhKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLml4b3IgPSBmdW5jdGlvbiBpeG9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXhvcihudW0pO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24geG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXhvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXhvciA9IGZ1bmN0aW9uIHV4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXV4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXV4b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gTm90IGBgdGhpc2BgIHdpdGggYGB3aWR0aGBgIGJpdHdpZHRoXG4gIEJOLnByb3RvdHlwZS5pbm90biA9IGZ1bmN0aW9uIGlub3RuICh3aWR0aCkge1xuICAgIGFzc2VydCh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInICYmIHdpZHRoID49IDApO1xuXG4gICAgdmFyIGJ5dGVzTmVlZGVkID0gTWF0aC5jZWlsKHdpZHRoIC8gMjYpIHwgMDtcbiAgICB2YXIgYml0c0xlZnQgPSB3aWR0aCAlIDI2O1xuXG4gICAgLy8gRXh0ZW5kIHRoZSBidWZmZXIgd2l0aCBsZWFkaW5nIHplcm9lc1xuICAgIHRoaXMuX2V4cGFuZChieXRlc05lZWRlZCk7XG5cbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICBieXRlc05lZWRlZC0tO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBjb21wbGV0ZSB3b3Jkc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXNOZWVkZWQ7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgcmVzaWR1ZVxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmICgweDNmZmZmZmYgPj4gKDI2IC0gYml0c0xlZnQpKTtcbiAgICB9XG5cbiAgICAvLyBBbmQgcmVtb3ZlIGxlYWRpbmcgemVyb2VzXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubm90biA9IGZ1bmN0aW9uIG5vdG4gKHdpZHRoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bih3aWR0aCk7XG4gIH07XG5cbiAgLy8gU2V0IGBiaXRgIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc2V0biA9IGZ1bmN0aW9uIHNldG4gKGJpdCwgdmFsKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcblxuICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgdGhpcy5fZXhwYW5kKG9mZiArIDEpO1xuXG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdIHwgKDEgPDwgd2JpdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSAmIH4oMSA8PCB3Yml0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChudW0pIHtcbiAgICB2YXIgcjtcblxuICAgIC8vIG5lZ2F0aXZlICsgcG9zaXRpdmVcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG5cbiAgICAvLyBwb3NpdGl2ZSArIG5lZ2F0aXZlXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGhdID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIC8vIENvcHkgdGhlIHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgfSBlbHNlIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChudW0pIHtcbiAgICB2YXIgcmVzO1xuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDAgJiYgdGhpcy5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IHRoaXMuc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIGlmIChudW0ubmVnYXRpdmUgPT09IDAgJiYgdGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSBudW0uc3ViKHRoaXMpO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZChudW0pO1xuXG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhZGQodGhpcyk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChudW0pIHtcbiAgICAvLyB0aGlzIC0gKC1udW0pID0gdGhpcyArIG51bVxuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICB2YXIgciA9IHRoaXMuaWFkZChudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gLXRoaXMgLSBudW0gPSAtKHRoaXMgKyBudW0pXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZChudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmVcbiAgICB2YXIgY21wID0gdGhpcy5jbXAobnVtKTtcblxuICAgIC8vIE9wdGltaXphdGlvbiAtIHplcm9pZnlcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gYSA+IGJcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoY21wID4gMCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApIC0gKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIENvcHkgcmVzdCBvZiB0aGUgd29yZHNcbiAgICBpZiAoY2FycnkgPT09IDAgJiYgaSA8IGEubGVuZ3RoICYmIGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpKTtcblxuICAgIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1YihudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHNtYWxsTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICB2YXIgbGVuID0gKHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aCkgfCAwO1xuICAgIG91dC5sZW5ndGggPSBsZW47XG4gICAgbGVuID0gKGxlbiAtIDEpIHwgMDtcblxuICAgIC8vIFBlZWwgb25lIGl0ZXJhdGlvbiAoY29tcGlsZXIgY2FuJ3QgZG8gaXQsIGJlY2F1c2Ugb2YgY29kZSBjb21wbGV4aXR5KVxuICAgIHZhciBhID0gc2VsZi53b3Jkc1swXSB8IDA7XG4gICAgdmFyIGIgPSBudW0ud29yZHNbMF0gfCAwO1xuICAgIHZhciByID0gYSAqIGI7XG5cbiAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgIHZhciBjYXJyeSA9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgb3V0LndvcmRzWzBdID0gbG87XG5cbiAgICBmb3IgKHZhciBrID0gMTsgayA8IGxlbjsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGNhcnJ5ID4+PiAyNjtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gKGsgLSBqKSB8IDA7XG4gICAgICAgIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHIgPSBhICogYiArIHJ3b3JkO1xuICAgICAgICBuY2FycnkgKz0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgICAgcndvcmQgPSByICYgMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQgfCAwO1xuICAgICAgY2FycnkgPSBuY2FycnkgfCAwO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5IHwgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIC8vIFRPRE8oaW5kdXRueSk6IGl0IG1heSBiZSByZWFzb25hYmxlIHRvIG9taXQgaXQgZm9yIHVzZXJzIHdobyBkb24ndCBuZWVkXG4gIC8vIHRvIHdvcmsgd2l0aCAyNTYtYml0IG51bWJlcnMsIG90aGVyd2lzZSBpdCBnaXZlcyAyMCUgaW1wcm92ZW1lbnQgZm9yIDI1Ni1iaXRcbiAgLy8gbXVsdGlwbGljYXRpb24gKGxpa2UgZWxsaXB0aWMgc2VjcDI1NmsxKS5cbiAgdmFyIGNvbWIxME11bFRvID0gZnVuY3Rpb24gY29tYjEwTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGEgPSBzZWxmLndvcmRzO1xuICAgIHZhciBiID0gbnVtLndvcmRzO1xuICAgIHZhciBvID0gb3V0LndvcmRzO1xuICAgIHZhciBjID0gMDtcbiAgICB2YXIgbG87XG4gICAgdmFyIG1pZDtcbiAgICB2YXIgaGk7XG4gICAgdmFyIGEwID0gYVswXSB8IDA7XG4gICAgdmFyIGFsMCA9IGEwICYgMHgxZmZmO1xuICAgIHZhciBhaDAgPSBhMCA+Pj4gMTM7XG4gICAgdmFyIGExID0gYVsxXSB8IDA7XG4gICAgdmFyIGFsMSA9IGExICYgMHgxZmZmO1xuICAgIHZhciBhaDEgPSBhMSA+Pj4gMTM7XG4gICAgdmFyIGEyID0gYVsyXSB8IDA7XG4gICAgdmFyIGFsMiA9IGEyICYgMHgxZmZmO1xuICAgIHZhciBhaDIgPSBhMiA+Pj4gMTM7XG4gICAgdmFyIGEzID0gYVszXSB8IDA7XG4gICAgdmFyIGFsMyA9IGEzICYgMHgxZmZmO1xuICAgIHZhciBhaDMgPSBhMyA+Pj4gMTM7XG4gICAgdmFyIGE0ID0gYVs0XSB8IDA7XG4gICAgdmFyIGFsNCA9IGE0ICYgMHgxZmZmO1xuICAgIHZhciBhaDQgPSBhNCA+Pj4gMTM7XG4gICAgdmFyIGE1ID0gYVs1XSB8IDA7XG4gICAgdmFyIGFsNSA9IGE1ICYgMHgxZmZmO1xuICAgIHZhciBhaDUgPSBhNSA+Pj4gMTM7XG4gICAgdmFyIGE2ID0gYVs2XSB8IDA7XG4gICAgdmFyIGFsNiA9IGE2ICYgMHgxZmZmO1xuICAgIHZhciBhaDYgPSBhNiA+Pj4gMTM7XG4gICAgdmFyIGE3ID0gYVs3XSB8IDA7XG4gICAgdmFyIGFsNyA9IGE3ICYgMHgxZmZmO1xuICAgIHZhciBhaDcgPSBhNyA+Pj4gMTM7XG4gICAgdmFyIGE4ID0gYVs4XSB8IDA7XG4gICAgdmFyIGFsOCA9IGE4ICYgMHgxZmZmO1xuICAgIHZhciBhaDggPSBhOCA+Pj4gMTM7XG4gICAgdmFyIGE5ID0gYVs5XSB8IDA7XG4gICAgdmFyIGFsOSA9IGE5ICYgMHgxZmZmO1xuICAgIHZhciBhaDkgPSBhOSA+Pj4gMTM7XG4gICAgdmFyIGIwID0gYlswXSB8IDA7XG4gICAgdmFyIGJsMCA9IGIwICYgMHgxZmZmO1xuICAgIHZhciBiaDAgPSBiMCA+Pj4gMTM7XG4gICAgdmFyIGIxID0gYlsxXSB8IDA7XG4gICAgdmFyIGJsMSA9IGIxICYgMHgxZmZmO1xuICAgIHZhciBiaDEgPSBiMSA+Pj4gMTM7XG4gICAgdmFyIGIyID0gYlsyXSB8IDA7XG4gICAgdmFyIGJsMiA9IGIyICYgMHgxZmZmO1xuICAgIHZhciBiaDIgPSBiMiA+Pj4gMTM7XG4gICAgdmFyIGIzID0gYlszXSB8IDA7XG4gICAgdmFyIGJsMyA9IGIzICYgMHgxZmZmO1xuICAgIHZhciBiaDMgPSBiMyA+Pj4gMTM7XG4gICAgdmFyIGI0ID0gYls0XSB8IDA7XG4gICAgdmFyIGJsNCA9IGI0ICYgMHgxZmZmO1xuICAgIHZhciBiaDQgPSBiNCA+Pj4gMTM7XG4gICAgdmFyIGI1ID0gYls1XSB8IDA7XG4gICAgdmFyIGJsNSA9IGI1ICYgMHgxZmZmO1xuICAgIHZhciBiaDUgPSBiNSA+Pj4gMTM7XG4gICAgdmFyIGI2ID0gYls2XSB8IDA7XG4gICAgdmFyIGJsNiA9IGI2ICYgMHgxZmZmO1xuICAgIHZhciBiaDYgPSBiNiA+Pj4gMTM7XG4gICAgdmFyIGI3ID0gYls3XSB8IDA7XG4gICAgdmFyIGJsNyA9IGI3ICYgMHgxZmZmO1xuICAgIHZhciBiaDcgPSBiNyA+Pj4gMTM7XG4gICAgdmFyIGI4ID0gYls4XSB8IDA7XG4gICAgdmFyIGJsOCA9IGI4ICYgMHgxZmZmO1xuICAgIHZhciBiaDggPSBiOCA+Pj4gMTM7XG4gICAgdmFyIGI5ID0gYls5XSB8IDA7XG4gICAgdmFyIGJsOSA9IGI5ICYgMHgxZmZmO1xuICAgIHZhciBiaDkgPSBiOSA+Pj4gMTM7XG5cbiAgICBvdXQubmVnYXRpdmUgPSBzZWxmLm5lZ2F0aXZlIF4gbnVtLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSAxOTtcbiAgICAvKiBrID0gMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwwLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgwLCBiaDApO1xuICAgIHZhciB3MCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzAgPj4+IDI2KSkgfCAwO1xuICAgIHcwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwxLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgxLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMSkpIHwgMDtcbiAgICB2YXIgdzEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxID4+PiAyNikpIHwgMDtcbiAgICB3MSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDIsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgyKSkgfCAwO1xuICAgIHZhciB3MiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzIgPj4+IDI2KSkgfCAwO1xuICAgIHcyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwzLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgzLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgzKSkgfCAwO1xuICAgIHZhciB3MyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzMgPj4+IDI2KSkgfCAwO1xuICAgIHczICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw0LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg0LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNCkpIHwgMDtcbiAgICB2YXIgdzQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc0ID4+PiAyNikpIHwgMDtcbiAgICB3NCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDUsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg1KSkgfCAwO1xuICAgIHZhciB3NSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzUgPj4+IDI2KSkgfCAwO1xuICAgIHc1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw2LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg2LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg2KSkgfCAwO1xuICAgIHZhciB3NiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzYgPj4+IDI2KSkgfCAwO1xuICAgIHc2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw3LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg3LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNykpIHwgMDtcbiAgICB2YXIgdzcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc3ID4+PiAyNikpIHwgMDtcbiAgICB3NyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDgsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg4KSkgfCAwO1xuICAgIHZhciB3OCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzggPj4+IDI2KSkgfCAwO1xuICAgIHc4ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg5KSkgfCAwO1xuICAgIHZhciB3OSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzkgPj4+IDI2KSkgfCAwO1xuICAgIHc5ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgxKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwxKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgxKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMCA+Pj4gMjYpKSB8IDA7XG4gICAgdzEwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgyKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwyKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgyKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzExID4+PiAyNikpIHwgMDtcbiAgICB3MTEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwzKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDMpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDMpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDMpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMiA+Pj4gMjYpKSB8IDA7XG4gICAgdzEyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg0KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw0KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg0KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMyA+Pj4gMjYpKSB8IDA7XG4gICAgdzEzICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg1KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw1KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg1KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE0ID4+PiAyNikpIHwgMDtcbiAgICB3MTQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw2KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDYpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDYpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDYpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNSA+Pj4gMjYpKSB8IDA7XG4gICAgdzE1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg3KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw3KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg3KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNiA+Pj4gMjYpKSB8IDA7XG4gICAgdzE2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg4KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw4KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg4KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE3ID4+PiAyNikpIHwgMDtcbiAgICB3MTcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw5KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDkpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDkpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDkpO1xuICAgIHZhciB3MTggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxOCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE4ICY9IDB4M2ZmZmZmZjtcbiAgICBvWzBdID0gdzA7XG4gICAgb1sxXSA9IHcxO1xuICAgIG9bMl0gPSB3MjtcbiAgICBvWzNdID0gdzM7XG4gICAgb1s0XSA9IHc0O1xuICAgIG9bNV0gPSB3NTtcbiAgICBvWzZdID0gdzY7XG4gICAgb1s3XSA9IHc3O1xuICAgIG9bOF0gPSB3ODtcbiAgICBvWzldID0gdzk7XG4gICAgb1sxMF0gPSB3MTA7XG4gICAgb1sxMV0gPSB3MTE7XG4gICAgb1sxMl0gPSB3MTI7XG4gICAgb1sxM10gPSB3MTM7XG4gICAgb1sxNF0gPSB3MTQ7XG4gICAgb1sxNV0gPSB3MTU7XG4gICAgb1sxNl0gPSB3MTY7XG4gICAgb1sxN10gPSB3MTc7XG4gICAgb1sxOF0gPSB3MTg7XG4gICAgaWYgKGMgIT09IDApIHtcbiAgICAgIG9bMTldID0gYztcbiAgICAgIG91dC5sZW5ndGgrKztcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfTtcblxuICAvLyBQb2x5ZmlsbCBjb21iXG4gIGlmICghTWF0aC5pbXVsKSB7XG4gICAgY29tYjEwTXVsVG8gPSBzbWFsbE11bFRvO1xuICB9XG5cbiAgZnVuY3Rpb24gYmlnTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICB2YXIgaG5jYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBvdXQubGVuZ3RoIC0gMTsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgICBobmNhcnJ5ID0gMDtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gayAtIGo7XG4gICAgICAgIHZhciBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIHZhciBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgdmFyIHIgPSBhICogYjtcblxuICAgICAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKChyIC8gMHg0MDAwMDAwKSB8IDApKSB8IDA7XG4gICAgICAgIGxvID0gKGxvICsgcndvcmQpIHwgMDtcbiAgICAgICAgcndvcmQgPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArIChsbyA+Pj4gMjYpKSB8IDA7XG5cbiAgICAgICAgaG5jYXJyeSArPSBuY2FycnkgPj4+IDI2O1xuICAgICAgICBuY2FycnkgJj0gMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQ7XG4gICAgICBjYXJyeSA9IG5jYXJyeTtcbiAgICAgIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2Fycnk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICBmdW5jdGlvbiBqdW1ib011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBmZnRtID0gbmV3IEZGVE0oKTtcbiAgICByZXR1cm4gZmZ0bS5tdWxwKHNlbGYsIG51bSwgb3V0KTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5tdWxUbyA9IGZ1bmN0aW9uIG11bFRvIChudW0sIG91dCkge1xuICAgIHZhciByZXM7XG4gICAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aDtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEwICYmIG51bS5sZW5ndGggPT09IDEwKSB7XG4gICAgICByZXMgPSBjb21iMTBNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCA2Mykge1xuICAgICAgcmVzID0gc21hbGxNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCAxMDI0KSB7XG4gICAgICByZXMgPSBiaWdNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29vbGV5LVR1a2V5IGFsZ29yaXRobSBmb3IgRkZUXG4gIC8vIHNsaWdodGx5IHJldmlzaXRlZCB0byByZWx5IG9uIGxvb3BpbmcgaW5zdGVhZCBvZiByZWN1cnNpb25cblxuICBmdW5jdGlvbiBGRlRNICh4LCB5KSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICB9XG5cbiAgRkZUTS5wcm90b3R5cGUubWFrZVJCVCA9IGZ1bmN0aW9uIG1ha2VSQlQgKE4pIHtcbiAgICB2YXIgdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbCA9IEJOLnByb3RvdHlwZS5fY291bnRCaXRzKE4pIC0gMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdFtpXSA9IHRoaXMucmV2QmluKGksIGwsIE4pO1xuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYmluYXJ5LXJldmVyc2VkIHJlcHJlc2VudGF0aW9uIG9mIGB4YFxuICBGRlRNLnByb3RvdHlwZS5yZXZCaW4gPSBmdW5jdGlvbiByZXZCaW4gKHgsIGwsIE4pIHtcbiAgICBpZiAoeCA9PT0gMCB8fCB4ID09PSBOIC0gMSkgcmV0dXJuIHg7XG5cbiAgICB2YXIgcmIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICByYiB8PSAoeCAmIDEpIDw8IChsIC0gaSAtIDEpO1xuICAgICAgeCA+Pj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmI7XG4gIH07XG5cbiAgLy8gUGVyZm9ybXMgXCJ0d2VlZGxpbmdcIiBwaGFzZSwgdGhlcmVmb3JlICdlbXVsYXRpbmcnXG4gIC8vIGJlaGF2aW91ciBvZiB0aGUgcmVjdXJzaXZlIGFsZ29yaXRobVxuICBGRlRNLnByb3RvdHlwZS5wZXJtdXRlID0gZnVuY3Rpb24gcGVybXV0ZSAocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBydHdzW2ldID0gcndzW3JidFtpXV07XG4gICAgICBpdHdzW2ldID0gaXdzW3JidFtpXV07XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uIHRyYW5zZm9ybSAocndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4sIHJidCkge1xuICAgIHRoaXMucGVybXV0ZShyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKTtcblxuICAgIGZvciAodmFyIHMgPSAxOyBzIDwgTjsgcyA8PD0gMSkge1xuICAgICAgdmFyIGwgPSBzIDw8IDE7XG5cbiAgICAgIHZhciBydHdkZiA9IE1hdGguY29zKDIgKiBNYXRoLlBJIC8gbCk7XG4gICAgICB2YXIgaXR3ZGYgPSBNYXRoLnNpbigyICogTWF0aC5QSSAvIGwpO1xuXG4gICAgICBmb3IgKHZhciBwID0gMDsgcCA8IE47IHAgKz0gbCkge1xuICAgICAgICB2YXIgcnR3ZGZfID0gcnR3ZGY7XG4gICAgICAgIHZhciBpdHdkZl8gPSBpdHdkZjtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHM7IGorKykge1xuICAgICAgICAgIHZhciByZSA9IHJ0d3NbcCArIGpdO1xuICAgICAgICAgIHZhciBpZSA9IGl0d3NbcCArIGpdO1xuXG4gICAgICAgICAgdmFyIHJvID0gcnR3c1twICsgaiArIHNdO1xuICAgICAgICAgIHZhciBpbyA9IGl0d3NbcCArIGogKyBzXTtcblxuICAgICAgICAgIHZhciByeCA9IHJ0d2RmXyAqIHJvIC0gaXR3ZGZfICogaW87XG5cbiAgICAgICAgICBpbyA9IHJ0d2RmXyAqIGlvICsgaXR3ZGZfICogcm87XG4gICAgICAgICAgcm8gPSByeDtcblxuICAgICAgICAgIHJ0d3NbcCArIGpdID0gcmUgKyBybztcbiAgICAgICAgICBpdHdzW3AgKyBqXSA9IGllICsgaW87XG5cbiAgICAgICAgICBydHdzW3AgKyBqICsgc10gPSByZSAtIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGogKyBzXSA9IGllIC0gaW87XG5cbiAgICAgICAgICAvKiBqc2hpbnQgbWF4ZGVwdGggOiBmYWxzZSAqL1xuICAgICAgICAgIGlmIChqICE9PSBsKSB7XG4gICAgICAgICAgICByeCA9IHJ0d2RmICogcnR3ZGZfIC0gaXR3ZGYgKiBpdHdkZl87XG5cbiAgICAgICAgICAgIGl0d2RmXyA9IHJ0d2RmICogaXR3ZGZfICsgaXR3ZGYgKiBydHdkZl87XG4gICAgICAgICAgICBydHdkZl8gPSByeDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2IgPSBmdW5jdGlvbiBndWVzc0xlbjEzYiAobiwgbSkge1xuICAgIHZhciBOID0gTWF0aC5tYXgobSwgbikgfCAxO1xuICAgIHZhciBvZGQgPSBOICYgMTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yIChOID0gTiAvIDIgfCAwOyBOOyBOID0gTiA+Pj4gMSkge1xuICAgICAgaSsrO1xuICAgIH1cblxuICAgIHJldHVybiAxIDw8IGkgKyAxICsgb2RkO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbmp1Z2F0ZSA9IGZ1bmN0aW9uIGNvbmp1Z2F0ZSAocndzLCBpd3MsIE4pIHtcbiAgICBpZiAoTiA8PSAxKSByZXR1cm47XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB0ID0gcndzW2ldO1xuXG4gICAgICByd3NbaV0gPSByd3NbTiAtIGkgLSAxXTtcbiAgICAgIHJ3c1tOIC0gaSAtIDFdID0gdDtcblxuICAgICAgdCA9IGl3c1tpXTtcblxuICAgICAgaXdzW2ldID0gLWl3c1tOIC0gaSAtIDFdO1xuICAgICAgaXdzW04gLSBpIC0gMV0gPSAtdDtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubm9ybWFsaXplMTNiID0gZnVuY3Rpb24gbm9ybWFsaXplMTNiICh3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdyA9IE1hdGgucm91bmQod3NbMiAqIGkgKyAxXSAvIE4pICogMHgyMDAwICtcbiAgICAgICAgTWF0aC5yb3VuZCh3c1syICogaV0gLyBOKSArXG4gICAgICAgIGNhcnJ5O1xuXG4gICAgICB3c1tpXSA9IHcgJiAweDNmZmZmZmY7XG5cbiAgICAgIGlmICh3IDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhcnJ5ID0gdyAvIDB4NDAwMDAwMCB8IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHdzO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbnZlcnQxM2IgPSBmdW5jdGlvbiBjb252ZXJ0MTNiICh3cywgbGVuLCByd3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNhcnJ5ID0gY2FycnkgKyAod3NbaV0gfCAwKTtcblxuICAgICAgcndzWzIgKiBpXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICAgIHJ3c1syICogaSArIDFdID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgIH1cblxuICAgIC8vIFBhZCB3aXRoIHplcm9lc1xuICAgIGZvciAoaSA9IDIgKiBsZW47IGkgPCBOOyArK2kpIHtcbiAgICAgIHJ3c1tpXSA9IDA7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAwKTtcbiAgICBhc3NlcnQoKGNhcnJ5ICYgfjB4MWZmZikgPT09IDApO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnN0dWIgPSBmdW5jdGlvbiBzdHViIChOKSB7XG4gICAgdmFyIHBoID0gbmV3IEFycmF5KE4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBwaFtpXSA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBoO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm11bHAgPSBmdW5jdGlvbiBtdWxwICh4LCB5LCBvdXQpIHtcbiAgICB2YXIgTiA9IDIgKiB0aGlzLmd1ZXNzTGVuMTNiKHgubGVuZ3RoLCB5Lmxlbmd0aCk7XG5cbiAgICB2YXIgcmJ0ID0gdGhpcy5tYWtlUkJUKE4pO1xuXG4gICAgdmFyIF8gPSB0aGlzLnN0dWIoTik7XG5cbiAgICB2YXIgcndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciByd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBpd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIG5yd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5yd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBuaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBybXdzID0gb3V0LndvcmRzO1xuICAgIHJtd3MubGVuZ3RoID0gTjtcblxuICAgIHRoaXMuY29udmVydDEzYih4LndvcmRzLCB4Lmxlbmd0aCwgcndzLCBOKTtcbiAgICB0aGlzLmNvbnZlcnQxM2IoeS53b3JkcywgeS5sZW5ndGgsIG5yd3MsIE4pO1xuXG4gICAgdGhpcy50cmFuc2Zvcm0ocndzLCBfLCByd3N0LCBpd3N0LCBOLCByYnQpO1xuICAgIHRoaXMudHJhbnNmb3JtKG5yd3MsIF8sIG5yd3N0LCBuaXdzdCwgTiwgcmJ0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB2YXIgcnggPSByd3N0W2ldICogbnJ3c3RbaV0gLSBpd3N0W2ldICogbml3c3RbaV07XG4gICAgICBpd3N0W2ldID0gcndzdFtpXSAqIG5pd3N0W2ldICsgaXdzdFtpXSAqIG5yd3N0W2ldO1xuICAgICAgcndzdFtpXSA9IHJ4O1xuICAgIH1cblxuICAgIHRoaXMuY29uanVnYXRlKHJ3c3QsIGl3c3QsIE4pO1xuICAgIHRoaXMudHJhbnNmb3JtKHJ3c3QsIGl3c3QsIHJtd3MsIF8sIE4sIHJidCk7XG4gICAgdGhpcy5jb25qdWdhdGUocm13cywgXywgTik7XG4gICAgdGhpcy5ub3JtYWxpemUxM2Iocm13cywgTik7XG5cbiAgICBvdXQubmVnYXRpdmUgPSB4Lm5lZ2F0aXZlIF4geS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0geC5sZW5ndGggKyB5Lmxlbmd0aDtcbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgYHRoaXNgIGJ5IGBudW1gXG4gIEJOLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRoaXMubXVsVG8obnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGVtcGxveWluZyBGRlRcbiAgQk4ucHJvdG90eXBlLm11bGYgPSBmdW5jdGlvbiBtdWxmIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBNdWx0aXBsaWNhdGlvblxuICBCTi5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkubXVsVG8obnVtLCB0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW11bG4gPSBmdW5jdGlvbiBpbXVsbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcblxuICAgIC8vIENhcnJ5XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSAqIG51bTtcbiAgICAgIHZhciBsbyA9ICh3ICYgMHgzZmZmZmZmKSArIChjYXJyeSAmIDB4M2ZmZmZmZik7XG4gICAgICBjYXJyeSA+Pj0gMjY7XG4gICAgICBjYXJyeSArPSAodyAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgLy8gTk9URTogbG8gaXMgMjdiaXQgbWF4aW11bVxuICAgICAgY2FycnkgKz0gbG8gPj4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubXVsbiA9IGZ1bmN0aW9uIG11bG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW11bG4obnVtKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKHRoaXMpO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKTtcbiAgfTtcblxuICAvLyBNYXRoLnBvdyhgdGhpc2AsIGBudW1gKVxuICBCTi5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChudW0pIHtcbiAgICB2YXIgdyA9IHRvQml0QXJyYXkobnVtKTtcbiAgICBpZiAody5sZW5ndGggPT09IDApIHJldHVybiBuZXcgQk4oMSk7XG5cbiAgICAvLyBTa2lwIGxlYWRpbmcgemVyb2VzXG4gICAgdmFyIHJlcyA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3Lmxlbmd0aDsgaSsrLCByZXMgPSByZXMuc3FyKCkpIHtcbiAgICAgIGlmICh3W2ldICE9PSAwKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoKytpIDwgdy5sZW5ndGgpIHtcbiAgICAgIGZvciAodmFyIHEgPSByZXMuc3FyKCk7IGkgPCB3Lmxlbmd0aDsgaSsrLCBxID0gcS5zcXIoKSkge1xuICAgICAgICBpZiAod1tpXSA9PT0gMCkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gcmVzLm11bChxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnQgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1c2hsbiA9IGZ1bmN0aW9uIGl1c2hsbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcbiAgICB2YXIgY2FycnlNYXNrID0gKDB4M2ZmZmZmZiA+Pj4gKDI2IC0gcikpIDw8ICgyNiAtIHIpO1xuICAgIHZhciBpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBuZXdDYXJyeSA9IHRoaXMud29yZHNbaV0gJiBjYXJyeU1hc2s7XG4gICAgICAgIHZhciBjID0gKCh0aGlzLndvcmRzW2ldIHwgMCkgLSBuZXdDYXJyeSkgPDwgcjtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGMgfCBjYXJyeTtcbiAgICAgICAgY2FycnkgPSBuZXdDYXJyeSA+Pj4gKDI2IC0gcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYXJyeSkge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHMgIT09IDApIHtcbiAgICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgc10gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCArPSBzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaGxuID0gZnVuY3Rpb24gaXNobG4gKGJpdHMpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0IGluLXBsYWNlXG4gIC8vIE5PVEU6IGBoaW50YCBpcyBhIGxvd2VzdCBiaXQgYmVmb3JlIHRyYWlsaW5nIHplcm9lc1xuICAvLyBOT1RFOiBpZiBgZXh0ZW5kZWRgIGlzIHByZXNlbnQgLSBpdCB3aWxsIGJlIGZpbGxlZCB3aXRoIGRlc3Ryb3llZCBiaXRzXG4gIEJOLnByb3RvdHlwZS5pdXNocm4gPSBmdW5jdGlvbiBpdXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciBoO1xuICAgIGlmIChoaW50KSB7XG4gICAgICBoID0gKGhpbnQgLSAoaGludCAlIDI2KSkgLyAyNjtcbiAgICB9IGVsc2Uge1xuICAgICAgaCA9IDA7XG4gICAgfVxuXG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSBNYXRoLm1pbigoYml0cyAtIHIpIC8gMjYsIHRoaXMubGVuZ3RoKTtcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICB2YXIgbWFza2VkV29yZHMgPSBleHRlbmRlZDtcblxuICAgIGggLT0gcztcbiAgICBoID0gTWF0aC5tYXgoMCwgaCk7XG5cbiAgICAvLyBFeHRlbmRlZCBtb2RlLCBjb3B5IG1hc2tlZCBwYXJ0XG4gICAgaWYgKG1hc2tlZFdvcmRzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICBtYXNrZWRXb3Jkcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG4gICAgICBtYXNrZWRXb3Jkcy5sZW5ndGggPSBzO1xuICAgIH1cblxuICAgIGlmIChzID09PSAwKSB7XG4gICAgICAvLyBOby1vcCwgd2Ugc2hvdWxkIG5vdCBtb3ZlIGFueXRoaW5nIGF0IGFsbFxuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiBzKSB7XG4gICAgICB0aGlzLmxlbmd0aCAtPSBzO1xuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaSArIHNdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwICYmIChjYXJyeSAhPT0gMCB8fCBpID49IGgpOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKGNhcnJ5IDw8ICgyNiAtIHIpKSB8ICh3b3JkID4+PiByKTtcbiAgICAgIGNhcnJ5ID0gd29yZCAmIG1hc2s7XG4gICAgfVxuXG4gICAgLy8gUHVzaCBjYXJyaWVkIGJpdHMgYXMgYSBtYXNrXG4gICAgaWYgKG1hc2tlZFdvcmRzICYmIGNhcnJ5ICE9PSAwKSB7XG4gICAgICBtYXNrZWRXb3Jkcy53b3Jkc1ttYXNrZWRXb3Jkcy5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaHJuID0gZnVuY3Rpb24gaXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hybihiaXRzLCBoaW50LCBleHRlbmRlZCk7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdFxuICBCTi5wcm90b3R5cGUuc2hsbiA9IGZ1bmN0aW9uIHNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hsbiA9IGZ1bmN0aW9uIHVzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHRcbiAgQk4ucHJvdG90eXBlLnNocm4gPSBmdW5jdGlvbiBzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNocm4gPSBmdW5jdGlvbiB1c2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFRlc3QgaWYgbiBiaXQgaXMgc2V0XG4gIEJOLnByb3RvdHlwZS50ZXN0biA9IGZ1bmN0aW9uIHRlc3RuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGJpdCBhbmQgcmV0dXJuXG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3NdO1xuXG4gICAgcmV0dXJuICEhKHcgJiBxKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXIgKGluLXBsYWNlKVxuICBCTi5wcm90b3R5cGUuaW1hc2tuID0gZnVuY3Rpb24gaW1hc2tuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMnKTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgcysrO1xuICAgIH1cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWluKHMsIHRoaXMubGVuZ3RoKTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSAmPSBtYXNrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyXG4gIEJOLnByb3RvdHlwZS5tYXNrbiA9IGZ1bmN0aW9uIG1hc2tuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oYml0cyk7XG4gIH07XG5cbiAgLy8gQWRkIHBsYWluIG51bWJlciBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlhZGRuID0gZnVuY3Rpb24gaWFkZG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlzdWJuKC1udW0pO1xuXG4gICAgLy8gUG9zc2libGUgc2lnbiBjaGFuZ2VcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmICh0aGlzLndvcmRzWzBdIHwgMCkgPCBudW0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSA9IG51bSAtICh0aGlzLndvcmRzWzBdIHwgMCk7XG4gICAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlzdWJuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCB3aXRob3V0IGNoZWNrc1xuICAgIHJldHVybiB0aGlzLl9pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faWFkZG4gPSBmdW5jdGlvbiBfaWFkZG4gKG51bSkge1xuICAgIHRoaXMud29yZHNbMF0gKz0gbnVtO1xuXG4gICAgLy8gQ2FycnlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPj0gMHg0MDAwMDAwOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gLT0gMHg0MDAwMDAwO1xuICAgICAgaWYgKGkgPT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSsrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpICsgMSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBwbGFpbiBudW1iZXIgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlzdWJuID0gZnVuY3Rpb24gaXN1Ym4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlhZGRuKC1udW0pO1xuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkbihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLndvcmRzWzBdIC09IG51bTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdIDwgMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IC10aGlzLndvcmRzWzBdO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENhcnJ5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPCAwOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSArPSAweDQwMDAwMDA7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdIC09IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWRkbiA9IGZ1bmN0aW9uIGFkZG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuc3VibiA9IGZ1bmN0aW9uIHN1Ym4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFicyA9IGZ1bmN0aW9uIGlhYnMgKCkge1xuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uIGFicyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pc2hsbnN1Ym11bCA9IGZ1bmN0aW9uIF9pc2hsbnN1Ym11bCAobnVtLCBtdWwsIHNoaWZ0KSB7XG4gICAgdmFyIGxlbiA9IG51bS5sZW5ndGggKyBzaGlmdDtcbiAgICB2YXIgaTtcblxuICAgIHRoaXMuX2V4cGFuZChsZW4pO1xuXG4gICAgdmFyIHc7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICB2YXIgcmlnaHQgPSAobnVtLndvcmRzW2ldIHwgMCkgKiBtdWw7XG4gICAgICB3IC09IHJpZ2h0ICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSAodyA+PiAyNikgLSAoKHJpZ2h0IC8gMHg0MDAwMDAwKSB8IDApO1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGkgPCB0aGlzLmxlbmd0aCAtIHNoaWZ0OyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ID09PSAwKSByZXR1cm4gdGhpcy5zdHJpcCgpO1xuXG4gICAgLy8gU3VidHJhY3Rpb24gb3ZlcmZsb3dcbiAgICBhc3NlcnQoY2FycnkgPT09IC0xKTtcbiAgICBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAtKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX3dvcmREaXYgPSBmdW5jdGlvbiBfd29yZERpdiAobnVtLCBtb2RlKSB7XG4gICAgdmFyIHNoaWZ0ID0gdGhpcy5sZW5ndGggLSBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGEgPSB0aGlzLmNsb25lKCk7XG4gICAgdmFyIGIgPSBudW07XG5cbiAgICAvLyBOb3JtYWxpemVcbiAgICB2YXIgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB2YXIgYmhpQml0cyA9IHRoaXMuX2NvdW50Qml0cyhiaGkpO1xuICAgIHNoaWZ0ID0gMjYgLSBiaGlCaXRzO1xuICAgIGlmIChzaGlmdCAhPT0gMCkge1xuICAgICAgYiA9IGIudXNobG4oc2hpZnQpO1xuICAgICAgYS5pdXNobG4oc2hpZnQpO1xuICAgICAgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIHF1b3RpZW50XG4gICAgdmFyIG0gPSBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuICAgIHZhciBxO1xuXG4gICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICBxID0gbmV3IEJOKG51bGwpO1xuICAgICAgcS5sZW5ndGggPSBtICsgMTtcbiAgICAgIHEud29yZHMgPSBuZXcgQXJyYXkocS5sZW5ndGgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHEud29yZHNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkaWZmID0gYS5jbG9uZSgpLl9pc2hsbnN1Ym11bChiLCAxLCBtKTtcbiAgICBpZiAoZGlmZi5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgYSA9IGRpZmY7XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW21dID0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gbSAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICB2YXIgcWogPSAoYS53b3Jkc1tiLmxlbmd0aCArIGpdIHwgMCkgKiAweDQwMDAwMDAgK1xuICAgICAgICAoYS53b3Jkc1tiLmxlbmd0aCArIGogLSAxXSB8IDApO1xuXG4gICAgICAvLyBOT1RFOiAocWogLyBiaGkpIGlzICgweDNmZmZmZmYgKiAweDQwMDAwMDAgKyAweDNmZmZmZmYpIC8gMHgyMDAwMDAwIG1heFxuICAgICAgLy8gKDB4N2ZmZmZmZilcbiAgICAgIHFqID0gTWF0aC5taW4oKHFqIC8gYmhpKSB8IDAsIDB4M2ZmZmZmZik7XG5cbiAgICAgIGEuX2lzaGxuc3VibXVsKGIsIHFqLCBqKTtcbiAgICAgIHdoaWxlIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIHFqLS07XG4gICAgICAgIGEubmVnYXRpdmUgPSAwO1xuICAgICAgICBhLl9pc2hsbnN1Ym11bChiLCAxLCBqKTtcbiAgICAgICAgaWYgKCFhLmlzWmVybygpKSB7XG4gICAgICAgICAgYS5uZWdhdGl2ZSBePSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW2pdID0gcWo7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxKSB7XG4gICAgICBxLnN0cmlwKCk7XG4gICAgfVxuICAgIGEuc3RyaXAoKTtcblxuICAgIC8vIERlbm9ybWFsaXplXG4gICAgaWYgKG1vZGUgIT09ICdkaXYnICYmIHNoaWZ0ICE9PSAwKSB7XG4gICAgICBhLml1c2hybihzaGlmdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpdjogcSB8fCBudWxsLFxuICAgICAgbW9kOiBhXG4gICAgfTtcbiAgfTtcblxuICAvLyBOT1RFOiAxKSBgbW9kZWAgY2FuIGJlIHNldCB0byBgbW9kYCB0byByZXF1ZXN0IG1vZCBvbmx5LFxuICAvLyAgICAgICB0byBgZGl2YCB0byByZXF1ZXN0IGRpdiBvbmx5LCBvciBiZSBhYnNlbnQgdG9cbiAgLy8gICAgICAgcmVxdWVzdCBib3RoIGRpdiAmIG1vZFxuICAvLyAgICAgICAyKSBgcG9zaXRpdmVgIGlzIHRydWUgaWYgdW5zaWduZWQgbW9kIGlzIHJlcXVlc3RlZFxuICBCTi5wcm90b3R5cGUuZGl2bW9kID0gZnVuY3Rpb24gZGl2bW9kIChudW0sIG1vZGUsIHBvc2l0aXZlKSB7XG4gICAgYXNzZXJ0KCFudW0uaXNaZXJvKCkpO1xuXG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IG5ldyBCTigwKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZGl2LCBtb2QsIHJlcztcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pYWRkKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IHJlcy5tb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCh0aGlzLm5lZ2F0aXZlICYgbnVtLm5lZ2F0aXZlKSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaXN1YihudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogcmVzLmRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZSBhdCB0aGlzIHBvaW50XG5cbiAgICAvLyBTdHJpcCBib3RoIG51bWJlcnMgdG8gYXBwcm94aW1hdGUgc2hpZnQgdmFsdWVcbiAgICBpZiAobnVtLmxlbmd0aCA+IHRoaXMubGVuZ3RoIHx8IHRoaXMuY21wKG51bSkgPCAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiB0aGlzXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFZlcnkgc2hvcnQgcmVkdWN0aW9uXG4gICAgaWYgKG51bS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGlmIChtb2RlID09PSAnZGl2Jykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgICAgbW9kOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlID09PSAnbW9kJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogbnVsbCxcbiAgICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl93b3JkRGl2KG51bSwgbW9kZSk7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgLyBgbnVtYFxuICBCTi5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gZGl2IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnZGl2JywgZmFsc2UpLmRpdjtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAlIGBudW1gXG4gIEJOLnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiBtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCBmYWxzZSkubW9kO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51bW9kID0gZnVuY3Rpb24gdW1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIHRydWUpLm1vZDtcbiAgfTtcblxuICAvLyBGaW5kIFJvdW5kKGB0aGlzYCAvIGBudW1gKVxuICBCTi5wcm90b3R5cGUuZGl2Um91bmQgPSBmdW5jdGlvbiBkaXZSb3VuZCAobnVtKSB7XG4gICAgdmFyIGRtID0gdGhpcy5kaXZtb2QobnVtKTtcblxuICAgIC8vIEZhc3QgY2FzZSAtIGV4YWN0IGRpdmlzaW9uXG4gICAgaWYgKGRtLm1vZC5pc1plcm8oKSkgcmV0dXJuIGRtLmRpdjtcblxuICAgIHZhciBtb2QgPSBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5tb2QuaXN1YihudW0pIDogZG0ubW9kO1xuXG4gICAgdmFyIGhhbGYgPSBudW0udXNocm4oMSk7XG4gICAgdmFyIHIyID0gbnVtLmFuZGxuKDEpO1xuICAgIHZhciBjbXAgPSBtb2QuY21wKGhhbGYpO1xuXG4gICAgLy8gUm91bmQgZG93blxuICAgIGlmIChjbXAgPCAwIHx8IHIyID09PSAxICYmIGNtcCA9PT0gMCkgcmV0dXJuIGRtLmRpdjtcblxuICAgIC8vIFJvdW5kIHVwXG4gICAgcmV0dXJuIGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLmRpdi5pc3VibigxKSA6IGRtLmRpdi5pYWRkbigxKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubW9kbiA9IGZ1bmN0aW9uIG1vZG4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcbiAgICB2YXIgcCA9ICgxIDw8IDI2KSAlIG51bTtcblxuICAgIHZhciBhY2MgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBhY2MgPSAocCAqIGFjYyArICh0aGlzLndvcmRzW2ldIHwgMCkpICUgbnVtO1xuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgZGl2aXNpb24gYnkgbnVtYmVyXG4gIEJOLnByb3RvdHlwZS5pZGl2biA9IGZ1bmN0aW9uIGlkaXZuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeSAqIDB4NDAwMDAwMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAodyAvIG51bSkgfCAwO1xuICAgICAgY2FycnkgPSB3ICUgbnVtO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmRpdm4gPSBmdW5jdGlvbiBkaXZuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVnY2QgPSBmdW5jdGlvbiBlZ2NkIChwKSB7XG4gICAgYXNzZXJ0KHAubmVnYXRpdmUgPT09IDApO1xuICAgIGFzc2VydCghcC5pc1plcm8oKSk7XG5cbiAgICB2YXIgeCA9IHRoaXM7XG4gICAgdmFyIHkgPSBwLmNsb25lKCk7XG5cbiAgICBpZiAoeC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgeCA9IHgudW1vZChwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHguY2xvbmUoKTtcbiAgICB9XG5cbiAgICAvLyBBICogeCArIEIgKiB5ID0geFxuICAgIHZhciBBID0gbmV3IEJOKDEpO1xuICAgIHZhciBCID0gbmV3IEJOKDApO1xuXG4gICAgLy8gQyAqIHggKyBEICogeSA9IHlcbiAgICB2YXIgQyA9IG5ldyBCTigwKTtcbiAgICB2YXIgRCA9IG5ldyBCTigxKTtcblxuICAgIHZhciBnID0gMDtcblxuICAgIHdoaWxlICh4LmlzRXZlbigpICYmIHkuaXNFdmVuKCkpIHtcbiAgICAgIHguaXVzaHJuKDEpO1xuICAgICAgeS5pdXNocm4oMSk7XG4gICAgICArK2c7XG4gICAgfVxuXG4gICAgdmFyIHlwID0geS5jbG9uZSgpO1xuICAgIHZhciB4cCA9IHguY2xvbmUoKTtcblxuICAgIHdoaWxlICgheC5pc1plcm8oKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGltID0gMTsgKHgud29yZHNbMF0gJiBpbSkgPT09IDAgJiYgaSA8IDI2OyArK2ksIGltIDw8PSAxKTtcbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICB4Lml1c2hybihpKTtcbiAgICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgICBpZiAoQS5pc09kZCgpIHx8IEIuaXNPZGQoKSkge1xuICAgICAgICAgICAgQS5pYWRkKHlwKTtcbiAgICAgICAgICAgIEIuaXN1Yih4cCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQS5pdXNocm4oMSk7XG4gICAgICAgICAgQi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKHkud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICB5Lml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoQy5pc09kZCgpIHx8IEQuaXNPZGQoKSkge1xuICAgICAgICAgICAgQy5pYWRkKHlwKTtcbiAgICAgICAgICAgIEQuaXN1Yih4cCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQy5pdXNocm4oMSk7XG4gICAgICAgICAgRC5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHguY21wKHkpID49IDApIHtcbiAgICAgICAgeC5pc3ViKHkpO1xuICAgICAgICBBLmlzdWIoQyk7XG4gICAgICAgIEIuaXN1YihEKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHkuaXN1Yih4KTtcbiAgICAgICAgQy5pc3ViKEEpO1xuICAgICAgICBELmlzdWIoQik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGE6IEMsXG4gICAgICBiOiBELFxuICAgICAgZ2NkOiB5Lml1c2hsbihnKVxuICAgIH07XG4gIH07XG5cbiAgLy8gVGhpcyBpcyByZWR1Y2VkIGluY2FybmF0aW9uIG9mIHRoZSBiaW5hcnkgRUVBXG4gIC8vIGFib3ZlLCBkZXNpZ25hdGVkIHRvIGludmVydCBtZW1iZXJzIG9mIHRoZVxuICAvLyBfcHJpbWVfIGZpZWxkcyBGKHApIGF0IGEgbWF4aW1hbCBzcGVlZFxuICBCTi5wcm90b3R5cGUuX2ludm1wID0gZnVuY3Rpb24gX2ludm1wIChwKSB7XG4gICAgYXNzZXJ0KHAubmVnYXRpdmUgPT09IDApO1xuICAgIGFzc2VydCghcC5pc1plcm8oKSk7XG5cbiAgICB2YXIgYSA9IHRoaXM7XG4gICAgdmFyIGIgPSBwLmNsb25lKCk7XG5cbiAgICBpZiAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgYSA9IGEudW1vZChwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IGEuY2xvbmUoKTtcbiAgICB9XG5cbiAgICB2YXIgeDEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIHgyID0gbmV3IEJOKDApO1xuXG4gICAgdmFyIGRlbHRhID0gYi5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKGEuY21wbigxKSA+IDAgJiYgYi5jbXBuKDEpID4gMCkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGltID0gMTsgKGEud29yZHNbMF0gJiBpbSkgPT09IDAgJiYgaSA8IDI2OyArK2ksIGltIDw8PSAxKTtcbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICBhLml1c2hybihpKTtcbiAgICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDEuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDEuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDEuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7IChiLndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgYi5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgyLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgyLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgyLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYS5jbXAoYikgPj0gMCkge1xuICAgICAgICBhLmlzdWIoYik7XG4gICAgICAgIHgxLmlzdWIoeDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYi5pc3ViKGEpO1xuICAgICAgICB4Mi5pc3ViKHgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmIChhLmNtcG4oMSkgPT09IDApIHtcbiAgICAgIHJlcyA9IHgxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSB4MjtcbiAgICB9XG5cbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZChwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5nY2QgPSBmdW5jdGlvbiBnY2QgKG51bSkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gbnVtLmFicygpO1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiB0aGlzLmFicygpO1xuXG4gICAgdmFyIGEgPSB0aGlzLmNsb25lKCk7XG4gICAgdmFyIGIgPSBudW0uY2xvbmUoKTtcbiAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICBiLm5lZ2F0aXZlID0gMDtcblxuICAgIC8vIFJlbW92ZSBjb21tb24gZmFjdG9yIG9mIHR3b1xuICAgIGZvciAodmFyIHNoaWZ0ID0gMDsgYS5pc0V2ZW4oKSAmJiBiLmlzRXZlbigpOyBzaGlmdCsrKSB7XG4gICAgICBhLml1c2hybigxKTtcbiAgICAgIGIuaXVzaHJuKDEpO1xuICAgIH1cblxuICAgIGRvIHtcbiAgICAgIHdoaWxlIChhLmlzRXZlbigpKSB7XG4gICAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKGIuaXNFdmVuKCkpIHtcbiAgICAgICAgYi5pdXNocm4oMSk7XG4gICAgICB9XG5cbiAgICAgIHZhciByID0gYS5jbXAoYik7XG4gICAgICBpZiAociA8IDApIHtcbiAgICAgICAgLy8gU3dhcCBgYWAgYW5kIGBiYCB0byBtYWtlIGBhYCBhbHdheXMgYmlnZ2VyIHRoYW4gYGJgXG4gICAgICAgIHZhciB0ID0gYTtcbiAgICAgICAgYSA9IGI7XG4gICAgICAgIGIgPSB0O1xuICAgICAgfSBlbHNlIGlmIChyID09PSAwIHx8IGIuY21wbigxKSA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgYS5pc3ViKGIpO1xuICAgIH0gd2hpbGUgKHRydWUpO1xuXG4gICAgcmV0dXJuIGIuaXVzaGxuKHNoaWZ0KTtcbiAgfTtcblxuICAvLyBJbnZlcnQgbnVtYmVyIGluIHRoZSBmaWVsZCBGKG51bSlcbiAgQk4ucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5lZ2NkKG51bSkuYS51bW9kKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzRXZlbiA9IGZ1bmN0aW9uIGlzRXZlbiAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gaXNPZGQgKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAxO1xuICB9O1xuXG4gIC8vIEFuZCBmaXJzdCB3b3JkIGFuZCBudW1cbiAgQk4ucHJvdG90eXBlLmFuZGxuID0gZnVuY3Rpb24gYW5kbG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLndvcmRzWzBdICYgbnVtO1xuICB9O1xuXG4gIC8vIEluY3JlbWVudCBhdCB0aGUgYml0IHBvc2l0aW9uIGluLWxpbmVcbiAgQk4ucHJvdG90eXBlLmJpbmNuID0gZnVuY3Rpb24gYmluY24gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgdGhpcy5fZXhwYW5kKHMgKyAxKTtcbiAgICAgIHRoaXMud29yZHNbc10gfD0gcTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBiaXQgYW5kIHByb3BhZ2F0ZSwgaWYgbmVlZGVkXG4gICAgdmFyIGNhcnJ5ID0gcTtcbiAgICBmb3IgKHZhciBpID0gczsgY2FycnkgIT09IDAgJiYgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB3ICs9IGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+PiAyNjtcbiAgICAgIHcgJj0gMHgzZmZmZmZmO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHc7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uIGlzWmVybyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNtcG4gPSBmdW5jdGlvbiBjbXBuIChudW0pIHtcbiAgICB2YXIgbmVnYXRpdmUgPSBudW0gPCAwO1xuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgIW5lZ2F0aXZlKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbmVnYXRpdmUpIHJldHVybiAxO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuXG4gICAgdmFyIHJlcztcbiAgICBpZiAodGhpcy5sZW5ndGggPiAxKSB7XG4gICAgICByZXMgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobmVnYXRpdmUpIHtcbiAgICAgICAgbnVtID0gLW51bTtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYsICdOdW1iZXIgaXMgdG9vIGJpZycpO1xuXG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbMF0gfCAwO1xuICAgICAgcmVzID0gdyA9PT0gbnVtID8gMCA6IHcgPCBudW0gPyAtMSA6IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb21wYXJlIHR3byBudW1iZXJzIGFuZCByZXR1cm46XG4gIC8vIDEgLSBpZiBgdGhpc2AgPiBgbnVtYFxuICAvLyAwIC0gaWYgYHRoaXNgID09IGBudW1gXG4gIC8vIC0xIC0gaWYgYHRoaXNgIDwgYG51bWBcbiAgQk4ucHJvdG90eXBlLmNtcCA9IGZ1bmN0aW9uIGNtcCAobnVtKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gMTtcblxuICAgIHZhciByZXMgPSB0aGlzLnVjbXAobnVtKTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gVW5zaWduZWQgY29tcGFyaXNvblxuICBCTi5wcm90b3R5cGUudWNtcCA9IGZ1bmN0aW9uIHVjbXAgKG51bSkge1xuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGhhdmUgdGhlIHNhbWUgc2lnblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiAxO1xuICAgIGlmICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHJldHVybiAtMTtcblxuICAgIHZhciByZXMgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgYSA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdmFyIGIgPSBudW0ud29yZHNbaV0gfCAwO1xuXG4gICAgICBpZiAoYSA9PT0gYikgY29udGludWU7XG4gICAgICBpZiAoYSA8IGIpIHtcbiAgICAgICAgcmVzID0gLTE7XG4gICAgICB9IGVsc2UgaWYgKGEgPiBiKSB7XG4gICAgICAgIHJlcyA9IDE7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RuID0gZnVuY3Rpb24gZ3RuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ID0gZnVuY3Rpb24gZ3QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGVuID0gZnVuY3Rpb24gZ3RlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZSA9IGZ1bmN0aW9uIGd0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRuID0gZnVuY3Rpb24gbHRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdCA9IGZ1bmN0aW9uIGx0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZW4gPSBmdW5jdGlvbiBsdGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlID0gZnVuY3Rpb24gbHRlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcW4gPSBmdW5jdGlvbiBlcW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDA7XG4gIH07XG5cbiAgLy9cbiAgLy8gQSByZWR1Y2UgY29udGV4dCwgY291bGQgYmUgdXNpbmcgbW9udGdvbWVyeSBvciBzb21ldGhpbmcgYmV0dGVyLCBkZXBlbmRpbmdcbiAgLy8gb24gdGhlIGBtYCBpdHNlbGYuXG4gIC8vXG4gIEJOLnJlZCA9IGZ1bmN0aW9uIHJlZCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBSZWQobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9SZWQgPSBmdW5jdGlvbiB0b1JlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgcmV0dXJuIGN0eC5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21SZWQgPSBmdW5jdGlvbiBmcm9tUmVkICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZm9yY2VSZWQgPSBmdW5jdGlvbiBfZm9yY2VSZWQgKGN0eCkge1xuICAgIHRoaXMucmVkID0gY3R4O1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mb3JjZVJlZCA9IGZ1bmN0aW9uIGZvcmNlUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRBZGQgPSBmdW5jdGlvbiByZWRBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElBZGQgPSBmdW5jdGlvbiByZWRJQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFN1YiA9IGZ1bmN0aW9uIHJlZFN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVN1YiA9IGZ1bmN0aW9uIHJlZElTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU2hsID0gZnVuY3Rpb24gcmVkU2hsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNobCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRNdWwgPSBmdW5jdGlvbiByZWRNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5tdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSU11bCA9IGZ1bmN0aW9uIHJlZElNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNxciA9IGZ1bmN0aW9uIHJlZFNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXIodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTcXIgPSBmdW5jdGlvbiByZWRJU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3FyKHRoaXMpO1xuICB9O1xuXG4gIC8vIFNxdWFyZSByb290IG92ZXIgcFxuICBCTi5wcm90b3R5cGUucmVkU3FydCA9IGZ1bmN0aW9uIHJlZFNxcnQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcnQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEludm0gPSBmdW5jdGlvbiByZWRJbnZtICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbnZtKHRoaXMpO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2AgJSBgcmVkIG1vZHVsb2BcbiAgQk4ucHJvdG90eXBlLnJlZE5lZyA9IGZ1bmN0aW9uIHJlZE5lZyAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5uZWcodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFBvdyA9IGZ1bmN0aW9uIHJlZFBvdyAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkICYmICFudW0ucmVkLCAncmVkUG93KG5vcm1hbE51bSknKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQucG93KHRoaXMsIG51bSk7XG4gIH07XG5cbiAgLy8gUHJpbWUgbnVtYmVycyB3aXRoIGVmZmljaWVudCByZWR1Y3Rpb25cbiAgdmFyIHByaW1lcyA9IHtcbiAgICBrMjU2OiBudWxsLFxuICAgIHAyMjQ6IG51bGwsXG4gICAgcDE5MjogbnVsbCxcbiAgICBwMjU1MTk6IG51bGxcbiAgfTtcblxuICAvLyBQc2V1ZG8tTWVyc2VubmUgcHJpbWVcbiAgZnVuY3Rpb24gTVByaW1lIChuYW1lLCBwKSB7XG4gICAgLy8gUCA9IDIgXiBOIC0gS1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wID0gbmV3IEJOKHAsIDE2KTtcbiAgICB0aGlzLm4gPSB0aGlzLnAuYml0TGVuZ3RoKCk7XG4gICAgdGhpcy5rID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKTtcblxuICAgIHRoaXMudG1wID0gdGhpcy5fdG1wKCk7XG4gIH1cblxuICBNUHJpbWUucHJvdG90eXBlLl90bXAgPSBmdW5jdGlvbiBfdG1wICgpIHtcbiAgICB2YXIgdG1wID0gbmV3IEJOKG51bGwpO1xuICAgIHRtcC53b3JkcyA9IG5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uIC8gMTMpKTtcbiAgICByZXR1cm4gdG1wO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaXJlZHVjZSA9IGZ1bmN0aW9uIGlyZWR1Y2UgKG51bSkge1xuICAgIC8vIEFzc3VtZXMgdGhhdCBgbnVtYCBpcyBsZXNzIHRoYW4gYFBeMmBcbiAgICAvLyBudW0gPSBISSAqICgyIF4gTiAtIEspICsgSEkgKiBLICsgTE8gPSBISSAqIEsgKyBMTyAobW9kIFApXG4gICAgdmFyIHIgPSBudW07XG4gICAgdmFyIHJsZW47XG5cbiAgICBkbyB7XG4gICAgICB0aGlzLnNwbGl0KHIsIHRoaXMudG1wKTtcbiAgICAgIHIgPSB0aGlzLmltdWxLKHIpO1xuICAgICAgciA9IHIuaWFkZCh0aGlzLnRtcCk7XG4gICAgICBybGVuID0gci5iaXRMZW5ndGgoKTtcbiAgICB9IHdoaWxlIChybGVuID4gdGhpcy5uKTtcblxuICAgIHZhciBjbXAgPSBybGVuIDwgdGhpcy5uID8gLTEgOiByLnVjbXAodGhpcy5wKTtcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICByLndvcmRzWzBdID0gMDtcbiAgICAgIHIubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKGNtcCA+IDApIHtcbiAgICAgIHIuaXN1Yih0aGlzLnApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoci5zdHJpcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIHIgaXMgQk4gdjQgaW5zdGFuY2VcbiAgICAgICAgci5zdHJpcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NSBpbnN0YW5jZVxuICAgICAgICByLl9zdHJpcCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dCkge1xuICAgIGlucHV0Lml1c2hybih0aGlzLm4sIDAsIG91dCk7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICByZXR1cm4gbnVtLmltdWwodGhpcy5rKTtcbiAgfTtcblxuICBmdW5jdGlvbiBLMjU2ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnazI1NicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYnKTtcbiAgfVxuICBpbmhlcml0cyhLMjU2LCBNUHJpbWUpO1xuXG4gIEsyNTYucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXRwdXQpIHtcbiAgICAvLyAyNTYgPSA5ICogMjYgKyAyMlxuICAgIHZhciBtYXNrID0gMHgzZmZmZmY7XG5cbiAgICB2YXIgb3V0TGVuID0gTWF0aC5taW4oaW5wdXQubGVuZ3RoLCA5KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG91dExlbjsgaSsrKSB7XG4gICAgICBvdXRwdXQud29yZHNbaV0gPSBpbnB1dC53b3Jkc1tpXTtcbiAgICB9XG4gICAgb3V0cHV0Lmxlbmd0aCA9IG91dExlbjtcblxuICAgIGlmIChpbnB1dC5sZW5ndGggPD0gOSkge1xuICAgICAgaW5wdXQud29yZHNbMF0gPSAwO1xuICAgICAgaW5wdXQubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTaGlmdCBieSA5IGxpbWJzXG4gICAgdmFyIHByZXYgPSBpbnB1dC53b3Jkc1s5XTtcbiAgICBvdXRwdXQud29yZHNbb3V0cHV0Lmxlbmd0aCsrXSA9IHByZXYgJiBtYXNrO1xuXG4gICAgZm9yIChpID0gMTA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5leHQgPSBpbnB1dC53b3Jkc1tpXSB8IDA7XG4gICAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gKChuZXh0ICYgbWFzaykgPDwgNCkgfCAocHJldiA+Pj4gMjIpO1xuICAgICAgcHJldiA9IG5leHQ7XG4gICAgfVxuICAgIHByZXYgPj4+PSAyMjtcbiAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gcHJldjtcbiAgICBpZiAocHJldiA9PT0gMCAmJiBpbnB1dC5sZW5ndGggPiAxMCkge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDEwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gOTtcbiAgICB9XG4gIH07XG5cbiAgSzI1Ni5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTAwMDAwM2QxID0gWyAweDQwLCAweDNkMSBdXG4gICAgbnVtLndvcmRzW251bS5sZW5ndGhdID0gMDtcbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aCArIDFdID0gMDtcbiAgICBudW0ubGVuZ3RoICs9IDI7XG5cbiAgICAvLyBib3VuZGVkIGF0OiAweDQwICogMHgzZmZmZmZmICsgMHgzZDAgPSAweDEwMDAwMDM5MFxuICAgIHZhciBsbyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gbnVtLndvcmRzW2ldIHwgMDtcbiAgICAgIGxvICs9IHcgKiAweDNkMTtcbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgbG8gPSB3ICogMHg0MCArICgobG8gLyAweDQwMDAwMDApIHwgMCk7XG4gICAgfVxuXG4gICAgLy8gRmFzdCBsZW5ndGggcmVkdWN0aW9uXG4gICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICBmdW5jdGlvbiBQMjI0ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDIyNCcsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEnKTtcbiAgfVxuICBpbmhlcml0cyhQMjI0LCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAxOTIgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMTkyJyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicpO1xuICB9XG4gIGluaGVyaXRzKFAxOTIsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDI1NTE5ICgpIHtcbiAgICAvLyAyIF4gMjU1IC0gMTlcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnMjU1MTknLFxuICAgICAgJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnKTtcbiAgfVxuICBpbmhlcml0cyhQMjU1MTksIE1QcmltZSk7XG5cbiAgUDI1NTE5LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxM1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoaSA9IChudW0ud29yZHNbaV0gfCAwKSAqIDB4MTMgKyBjYXJyeTtcbiAgICAgIHZhciBsbyA9IGhpICYgMHgzZmZmZmZmO1xuICAgICAgaGkgPj4+PSAyNjtcblxuICAgICAgbnVtLndvcmRzW2ldID0gbG87XG4gICAgICBjYXJyeSA9IGhpO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgLy8gRXhwb3J0ZWQgbW9zdGx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB1c2UgcGxhaW4gbmFtZSBpbnN0ZWFkXG4gIEJOLl9wcmltZSA9IGZ1bmN0aW9uIHByaW1lIChuYW1lKSB7XG4gICAgLy8gQ2FjaGVkIHZlcnNpb24gb2YgcHJpbWVcbiAgICBpZiAocHJpbWVzW25hbWVdKSByZXR1cm4gcHJpbWVzW25hbWVdO1xuXG4gICAgdmFyIHByaW1lO1xuICAgIGlmIChuYW1lID09PSAnazI1NicpIHtcbiAgICAgIHByaW1lID0gbmV3IEsyNTYoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjI0Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDIyNCgpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AxOTInKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMTkyKCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDI1NTE5Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDI1NTE5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBwcmltZSAnICsgbmFtZSk7XG4gICAgfVxuICAgIHByaW1lc1tuYW1lXSA9IHByaW1lO1xuXG4gICAgcmV0dXJuIHByaW1lO1xuICB9O1xuXG4gIC8vXG4gIC8vIEJhc2UgcmVkdWN0aW9uIGVuZ2luZVxuICAvL1xuICBmdW5jdGlvbiBSZWQgKG0pIHtcbiAgICBpZiAodHlwZW9mIG0gPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgcHJpbWUgPSBCTi5fcHJpbWUobSk7XG4gICAgICB0aGlzLm0gPSBwcmltZS5wO1xuICAgICAgdGhpcy5wcmltZSA9IHByaW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobS5ndG4oMSksICdtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEnKTtcbiAgICAgIHRoaXMubSA9IG07XG4gICAgICB0aGlzLnByaW1lID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkxID0gZnVuY3Rpb24gX3ZlcmlmeTEgKGEpIHtcbiAgICBhc3NlcnQoYS5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkLCAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTIgPSBmdW5jdGlvbiBfdmVyaWZ5MiAoYSwgYikge1xuICAgIGFzc2VydCgoYS5uZWdhdGl2ZSB8IGIubmVnYXRpdmUpID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQgJiYgYS5yZWQgPT09IGIucmVkLFxuICAgICAgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltb2QgPSBmdW5jdGlvbiBpbW9kIChhKSB7XG4gICAgaWYgKHRoaXMucHJpbWUpIHJldHVybiB0aGlzLnByaW1lLmlyZWR1Y2UoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICAgIHJldHVybiBhLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIGEuY2xvbmUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tLnN1YihhKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5zdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zaGwgPSBmdW5jdGlvbiBzaGwgKGEsIG51bSkge1xuICAgIHRoaXMuX3ZlcmlmeTEoYSk7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLnVzaGxuKG51bSkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5pbXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLm11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLmltdWwoYSwgYS5jbG9uZSgpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLm11bChhLCBhKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxcnQgPSBmdW5jdGlvbiBzcXJ0IChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgbW9kMyA9IHRoaXMubS5hbmRsbigzKTtcbiAgICBhc3NlcnQobW9kMyAlIDIgPT09IDEpO1xuXG4gICAgLy8gRmFzdCBjYXNlXG4gICAgaWYgKG1vZDMgPT09IDMpIHtcbiAgICAgIHZhciBwb3cgPSB0aGlzLm0uYWRkKG5ldyBCTigxKSkuaXVzaHJuKDIpO1xuICAgICAgcmV0dXJuIHRoaXMucG93KGEsIHBvdyk7XG4gICAgfVxuXG4gICAgLy8gVG9uZWxsaS1TaGFua3MgYWxnb3JpdGhtIChUb3RhbGx5IHVub3B0aW1pemVkIGFuZCBzbG93KVxuICAgIC8vXG4gICAgLy8gRmluZCBRIGFuZCBTLCB0aGF0IFEgKiAyIF4gUyA9IChQIC0gMSlcbiAgICB2YXIgcSA9IHRoaXMubS5zdWJuKDEpO1xuICAgIHZhciBzID0gMDtcbiAgICB3aGlsZSAoIXEuaXNaZXJvKCkgJiYgcS5hbmRsbigxKSA9PT0gMCkge1xuICAgICAgcysrO1xuICAgICAgcS5pdXNocm4oMSk7XG4gICAgfVxuICAgIGFzc2VydCghcS5pc1plcm8oKSk7XG5cbiAgICB2YXIgb25lID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHZhciBuT25lID0gb25lLnJlZE5lZygpO1xuXG4gICAgLy8gRmluZCBxdWFkcmF0aWMgbm9uLXJlc2lkdWVcbiAgICAvLyBOT1RFOiBNYXggaXMgc3VjaCBiZWNhdXNlIG9mIGdlbmVyYWxpemVkIFJpZW1hbm4gaHlwb3RoZXNpcy5cbiAgICB2YXIgbHBvdyA9IHRoaXMubS5zdWJuKDEpLml1c2hybigxKTtcbiAgICB2YXIgeiA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICB6ID0gbmV3IEJOKDIgKiB6ICogeikudG9SZWQodGhpcyk7XG5cbiAgICB3aGlsZSAodGhpcy5wb3coeiwgbHBvdykuY21wKG5PbmUpICE9PSAwKSB7XG4gICAgICB6LnJlZElBZGQobk9uZSk7XG4gICAgfVxuXG4gICAgdmFyIGMgPSB0aGlzLnBvdyh6LCBxKTtcbiAgICB2YXIgciA9IHRoaXMucG93KGEsIHEuYWRkbigxKS5pdXNocm4oMSkpO1xuICAgIHZhciB0ID0gdGhpcy5wb3coYSwgcSk7XG4gICAgdmFyIG0gPSBzO1xuICAgIHdoaWxlICh0LmNtcChvbmUpICE9PSAwKSB7XG4gICAgICB2YXIgdG1wID0gdDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyB0bXAuY21wKG9uZSkgIT09IDA7IGkrKykge1xuICAgICAgICB0bXAgPSB0bXAucmVkU3FyKCk7XG4gICAgICB9XG4gICAgICBhc3NlcnQoaSA8IG0pO1xuICAgICAgdmFyIGIgPSB0aGlzLnBvdyhjLCBuZXcgQk4oMSkuaXVzaGxuKG0gLSBpIC0gMSkpO1xuXG4gICAgICByID0gci5yZWRNdWwoYik7XG4gICAgICBjID0gYi5yZWRTcXIoKTtcbiAgICAgIHQgPSB0LnJlZE11bChjKTtcbiAgICAgIG0gPSBpO1xuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICB2YXIgaW52ID0gYS5faW52bXAodGhpcy5tKTtcbiAgICBpZiAoaW52Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpbnYubmVnYXRpdmUgPSAwO1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpLnJlZE5lZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludik7XG4gICAgfVxuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChhLCBudW0pIHtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIGlmIChudW0uY21wbigxKSA9PT0gMCkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciB3aW5kb3dTaXplID0gNDtcbiAgICB2YXIgd25kID0gbmV3IEFycmF5KDEgPDwgd2luZG93U2l6ZSk7XG4gICAgd25kWzBdID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHduZFsxXSA9IGE7XG4gICAgZm9yICh2YXIgaSA9IDI7IGkgPCB3bmQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHduZFtpXSA9IHRoaXMubXVsKHduZFtpIC0gMV0sIGEpO1xuICAgIH1cblxuICAgIHZhciByZXMgPSB3bmRbMF07XG4gICAgdmFyIGN1cnJlbnQgPSAwO1xuICAgIHZhciBjdXJyZW50TGVuID0gMDtcbiAgICB2YXIgc3RhcnQgPSBudW0uYml0TGVuZ3RoKCkgJSAyNjtcbiAgICBpZiAoc3RhcnQgPT09IDApIHtcbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgZm9yIChpID0gbnVtLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IG51bS53b3Jkc1tpXTtcbiAgICAgIGZvciAodmFyIGogPSBzdGFydCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgIHZhciBiaXQgPSAod29yZCA+PiBqKSAmIDE7XG4gICAgICAgIGlmIChyZXMgIT09IHduZFswXSkge1xuICAgICAgICAgIHJlcyA9IHRoaXMuc3FyKHJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYml0ID09PSAwICYmIGN1cnJlbnQgPT09IDApIHtcbiAgICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnQgPDw9IDE7XG4gICAgICAgIGN1cnJlbnQgfD0gYml0O1xuICAgICAgICBjdXJyZW50TGVuKys7XG4gICAgICAgIGlmIChjdXJyZW50TGVuICE9PSB3aW5kb3dTaXplICYmIChpICE9PSAwIHx8IGogIT09IDApKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSB0aGlzLm11bChyZXMsIHduZFtjdXJyZW50XSk7XG4gICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICBjdXJyZW50ID0gMDtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgdmFyIHIgPSBudW0udW1vZCh0aGlzLm0pO1xuXG4gICAgcmV0dXJuIHIgPT09IG51bSA/IHIuY2xvbmUoKSA6IHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgcmVzID0gbnVtLmNsb25lKCk7XG4gICAgcmVzLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvL1xuICAvLyBNb250Z29tZXJ5IG1ldGhvZCBlbmdpbmVcbiAgLy9cblxuICBCTi5tb250ID0gZnVuY3Rpb24gbW9udCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBNb250KG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gTW9udCAobSkge1xuICAgIFJlZC5jYWxsKHRoaXMsIG0pO1xuXG4gICAgdGhpcy5zaGlmdCA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICBpZiAodGhpcy5zaGlmdCAlIDI2ICE9PSAwKSB7XG4gICAgICB0aGlzLnNoaWZ0ICs9IDI2IC0gKHRoaXMuc2hpZnQgJSAyNik7XG4gICAgfVxuXG4gICAgdGhpcy5yID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLnNoaWZ0KTtcbiAgICB0aGlzLnIyID0gdGhpcy5pbW9kKHRoaXMuci5zcXIoKSk7XG4gICAgdGhpcy5yaW52ID0gdGhpcy5yLl9pbnZtcCh0aGlzLm0pO1xuXG4gICAgdGhpcy5taW52ID0gdGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pO1xuICAgIHRoaXMubWludiA9IHRoaXMubWludi51bW9kKHRoaXMucik7XG4gICAgdGhpcy5taW52ID0gdGhpcy5yLnN1Yih0aGlzLm1pbnYpO1xuICB9XG4gIGluaGVyaXRzKE1vbnQsIFJlZCk7XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5pbW9kKG51bS51c2hsbih0aGlzLnNoaWZ0KSk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHIgPSB0aGlzLmltb2QobnVtLm11bCh0aGlzLnJpbnYpKTtcbiAgICByLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSB7XG4gICAgICBhLndvcmRzWzBdID0gMDtcbiAgICAgIGEubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiBhO1xuICAgIH1cblxuICAgIHZhciB0ID0gYS5pbXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuXG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDApLl9mb3JjZVJlZCh0aGlzKTtcblxuICAgIHZhciB0ID0gYS5tdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIC8vIChBUileLTEgKiBSXjIgPSAoQV4tMSAqIFJeLTEpICogUl4yID0gQV4tMSAqIFJcbiAgICB2YXIgcmVzID0gdGhpcy5pbW9kKGEuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKTtcbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcbn0pKHR5cGVvZiBtb2R1bGUgPT09ICd1bmRlZmluZWQnIHx8IG1vZHVsZSwgdGhpcyk7XG4iLCIvLyBDdXJyZW50bHkgaW4gc3luYyB3aXRoIE5vZGUuanMgbGliL2Fzc2VydC5qc1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2NvbW1pdC8yYTUxYWU0MjRhNTEzZWM5YTZhYTM0NjZiYWEwY2MxZDU1ZGQ0ZjNiXG4vLyBPcmlnaW5hbGx5IGZyb20gbmFyd2hhbC5qcyAoaHR0cDovL25hcndoYWxqcy5vcmcpXG4vLyBDb3B5cmlnaHQgKGMpIDIwMDkgVGhvbWFzIFJvYmluc29uIDwyODBub3J0aC5jb20+XG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgJ1NvZnR3YXJlJyksIHRvXG4vLyBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZVxuLy8gcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yXG4vLyBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICdBUyBJUycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTlxuLy8gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTlxuLy8gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBfcmVxdWlyZSA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvZXJyb3JzJyksXG4gICAgX3JlcXVpcmUkY29kZXMgPSBfcmVxdWlyZS5jb2RlcyxcbiAgICBFUlJfQU1CSUdVT1VTX0FSR1VNRU5UID0gX3JlcXVpcmUkY29kZXMuRVJSX0FNQklHVU9VU19BUkdVTUVOVCxcbiAgICBFUlJfSU5WQUxJRF9BUkdfVFlQRSA9IF9yZXF1aXJlJGNvZGVzLkVSUl9JTlZBTElEX0FSR19UWVBFLFxuICAgIEVSUl9JTlZBTElEX0FSR19WQUxVRSA9IF9yZXF1aXJlJGNvZGVzLkVSUl9JTlZBTElEX0FSR19WQUxVRSxcbiAgICBFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUsXG4gICAgRVJSX01JU1NJTkdfQVJHUyA9IF9yZXF1aXJlJGNvZGVzLkVSUl9NSVNTSU5HX0FSR1M7XG5cbnZhciBBc3NlcnRpb25FcnJvciA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvYXNzZXJ0L2Fzc2VydGlvbl9lcnJvcicpO1xuXG52YXIgX3JlcXVpcmUyID0gcmVxdWlyZSgndXRpbC8nKSxcbiAgICBpbnNwZWN0ID0gX3JlcXVpcmUyLmluc3BlY3Q7XG5cbnZhciBfcmVxdWlyZSR0eXBlcyA9IHJlcXVpcmUoJ3V0aWwvJykudHlwZXMsXG4gICAgaXNQcm9taXNlID0gX3JlcXVpcmUkdHlwZXMuaXNQcm9taXNlLFxuICAgIGlzUmVnRXhwID0gX3JlcXVpcmUkdHlwZXMuaXNSZWdFeHA7XG5cbnZhciBvYmplY3RBc3NpZ24gPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbiA6IHJlcXVpcmUoJ2VzNi1vYmplY3QtYXNzaWduJykuYXNzaWduO1xudmFyIG9iamVjdElzID0gT2JqZWN0LmlzID8gT2JqZWN0LmlzIDogcmVxdWlyZSgnb2JqZWN0LWlzJyk7XG52YXIgZXJyb3JDYWNoZSA9IG5ldyBNYXAoKTtcbnZhciBpc0RlZXBFcXVhbDtcbnZhciBpc0RlZXBTdHJpY3RFcXVhbDtcbnZhciBwYXJzZUV4cHJlc3Npb25BdDtcbnZhciBmaW5kTm9kZUFyb3VuZDtcbnZhciBkZWNvZGVyO1xuXG5mdW5jdGlvbiBsYXp5TG9hZENvbXBhcmlzb24oKSB7XG4gIHZhciBjb21wYXJpc29uID0gcmVxdWlyZSgnLi9pbnRlcm5hbC91dGlsL2NvbXBhcmlzb25zJyk7XG5cbiAgaXNEZWVwRXF1YWwgPSBjb21wYXJpc29uLmlzRGVlcEVxdWFsO1xuICBpc0RlZXBTdHJpY3RFcXVhbCA9IGNvbXBhcmlzb24uaXNEZWVwU3RyaWN0RXF1YWw7XG59IC8vIEVzY2FwZSBjb250cm9sIGNoYXJhY3RlcnMgYnV0IG5vdCBcXG4gYW5kIFxcdCB0byBrZWVwIHRoZSBsaW5lIGJyZWFrcyBhbmRcbi8vIGluZGVudGF0aW9uIGludGFjdC5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb250cm9sLXJlZ2V4XG5cblxudmFyIGVzY2FwZVNlcXVlbmNlc1JlZ0V4cCA9IC9bXFx4MDAtXFx4MDhcXHgwYlxceDBjXFx4MGUtXFx4MWZdL2c7XG52YXIgbWV0YSA9IFtcIlxcXFx1MDAwMFwiLCBcIlxcXFx1MDAwMVwiLCBcIlxcXFx1MDAwMlwiLCBcIlxcXFx1MDAwM1wiLCBcIlxcXFx1MDAwNFwiLCBcIlxcXFx1MDAwNVwiLCBcIlxcXFx1MDAwNlwiLCBcIlxcXFx1MDAwN1wiLCAnXFxcXGInLCAnJywgJycsIFwiXFxcXHUwMDBiXCIsICdcXFxcZicsICcnLCBcIlxcXFx1MDAwZVwiLCBcIlxcXFx1MDAwZlwiLCBcIlxcXFx1MDAxMFwiLCBcIlxcXFx1MDAxMVwiLCBcIlxcXFx1MDAxMlwiLCBcIlxcXFx1MDAxM1wiLCBcIlxcXFx1MDAxNFwiLCBcIlxcXFx1MDAxNVwiLCBcIlxcXFx1MDAxNlwiLCBcIlxcXFx1MDAxN1wiLCBcIlxcXFx1MDAxOFwiLCBcIlxcXFx1MDAxOVwiLCBcIlxcXFx1MDAxYVwiLCBcIlxcXFx1MDAxYlwiLCBcIlxcXFx1MDAxY1wiLCBcIlxcXFx1MDAxZFwiLCBcIlxcXFx1MDAxZVwiLCBcIlxcXFx1MDAxZlwiXTtcblxudmFyIGVzY2FwZUZuID0gZnVuY3Rpb24gZXNjYXBlRm4oc3RyKSB7XG4gIHJldHVybiBtZXRhW3N0ci5jaGFyQ29kZUF0KDApXTtcbn07XG5cbnZhciB3YXJuZWQgPSBmYWxzZTsgLy8gVGhlIGFzc2VydCBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIHRoYXQgdGhyb3dcbi8vIEFzc2VydGlvbkVycm9yJ3Mgd2hlbiBwYXJ0aWN1bGFyIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQuIFRoZVxuLy8gYXNzZXJ0IG1vZHVsZSBtdXN0IGNvbmZvcm0gdG8gdGhlIGZvbGxvd2luZyBpbnRlcmZhY2UuXG5cbnZhciBhc3NlcnQgPSBtb2R1bGUuZXhwb3J0cyA9IG9rO1xudmFyIE5PX0VYQ0VQVElPTl9TRU5USU5FTCA9IHt9OyAvLyBBbGwgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbXVzdCB0aHJvdyBhbiBBc3NlcnRpb25FcnJvclxuLy8gd2hlbiBhIGNvcnJlc3BvbmRpbmcgY29uZGl0aW9uIGlzIG5vdCBtZXQsIHdpdGggYSBtZXNzYWdlIHRoYXRcbi8vIG1heSBiZSB1bmRlZmluZWQgaWYgbm90IHByb3ZpZGVkLiBBbGwgYXNzZXJ0aW9uIG1ldGhvZHMgcHJvdmlkZVxuLy8gYm90aCB0aGUgYWN0dWFsIGFuZCBleHBlY3RlZCB2YWx1ZXMgdG8gdGhlIGFzc2VydGlvbiBlcnJvciBmb3Jcbi8vIGRpc3BsYXkgcHVycG9zZXMuXG5cbmZ1bmN0aW9uIGlubmVyRmFpbChvYmopIHtcbiAgaWYgKG9iai5tZXNzYWdlIGluc3RhbmNlb2YgRXJyb3IpIHRocm93IG9iai5tZXNzYWdlO1xuICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3Iob2JqKTtcbn1cblxuZnVuY3Rpb24gZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCBvcGVyYXRvciwgc3RhY2tTdGFydEZuKSB7XG4gIHZhciBhcmdzTGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGludGVybmFsTWVzc2FnZTtcblxuICBpZiAoYXJnc0xlbiA9PT0gMCkge1xuICAgIGludGVybmFsTWVzc2FnZSA9ICdGYWlsZWQnO1xuICB9IGVsc2UgaWYgKGFyZ3NMZW4gPT09IDEpIHtcbiAgICBtZXNzYWdlID0gYWN0dWFsO1xuICAgIGFjdHVhbCA9IHVuZGVmaW5lZDtcbiAgfSBlbHNlIHtcbiAgICBpZiAod2FybmVkID09PSBmYWxzZSkge1xuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICAgIHZhciB3YXJuID0gcHJvY2Vzcy5lbWl0V2FybmluZyA/IHByb2Nlc3MuZW1pdFdhcm5pbmcgOiBjb25zb2xlLndhcm4uYmluZChjb25zb2xlKTtcbiAgICAgIHdhcm4oJ2Fzc2VydC5mYWlsKCkgd2l0aCBtb3JlIHRoYW4gb25lIGFyZ3VtZW50IGlzIGRlcHJlY2F0ZWQuICcgKyAnUGxlYXNlIHVzZSBhc3NlcnQuc3RyaWN0RXF1YWwoKSBpbnN0ZWFkIG9yIG9ubHkgcGFzcyBhIG1lc3NhZ2UuJywgJ0RlcHJlY2F0aW9uV2FybmluZycsICdERVAwMDk0Jyk7XG4gICAgfVxuXG4gICAgaWYgKGFyZ3NMZW4gPT09IDIpIG9wZXJhdG9yID0gJyE9JztcbiAgfVxuXG4gIGlmIChtZXNzYWdlIGluc3RhbmNlb2YgRXJyb3IpIHRocm93IG1lc3NhZ2U7XG4gIHZhciBlcnJBcmdzID0ge1xuICAgIGFjdHVhbDogYWN0dWFsLFxuICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICBvcGVyYXRvcjogb3BlcmF0b3IgPT09IHVuZGVmaW5lZCA/ICdmYWlsJyA6IG9wZXJhdG9yLFxuICAgIHN0YWNrU3RhcnRGbjogc3RhY2tTdGFydEZuIHx8IGZhaWxcbiAgfTtcblxuICBpZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZXJyQXJncy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgfVxuXG4gIHZhciBlcnIgPSBuZXcgQXNzZXJ0aW9uRXJyb3IoZXJyQXJncyk7XG5cbiAgaWYgKGludGVybmFsTWVzc2FnZSkge1xuICAgIGVyci5tZXNzYWdlID0gaW50ZXJuYWxNZXNzYWdlO1xuICAgIGVyci5nZW5lcmF0ZWRNZXNzYWdlID0gdHJ1ZTtcbiAgfVxuXG4gIHRocm93IGVycjtcbn1cblxuYXNzZXJ0LmZhaWwgPSBmYWlsOyAvLyBUaGUgQXNzZXJ0aW9uRXJyb3IgaXMgZGVmaW5lZCBpbiBpbnRlcm5hbC9lcnJvci5cblxuYXNzZXJ0LkFzc2VydGlvbkVycm9yID0gQXNzZXJ0aW9uRXJyb3I7XG5cbmZ1bmN0aW9uIGlubmVyT2soZm4sIGFyZ0xlbiwgdmFsdWUsIG1lc3NhZ2UpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHZhciBnZW5lcmF0ZWRNZXNzYWdlID0gZmFsc2U7XG5cbiAgICBpZiAoYXJnTGVuID09PSAwKSB7XG4gICAgICBnZW5lcmF0ZWRNZXNzYWdlID0gdHJ1ZTtcbiAgICAgIG1lc3NhZ2UgPSAnTm8gdmFsdWUgYXJndW1lbnQgcGFzc2VkIHRvIGBhc3NlcnQub2soKWAnO1xuICAgIH0gZWxzZSBpZiAobWVzc2FnZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICB0aHJvdyBtZXNzYWdlO1xuICAgIH1cblxuICAgIHZhciBlcnIgPSBuZXcgQXNzZXJ0aW9uRXJyb3Ioe1xuICAgICAgYWN0dWFsOiB2YWx1ZSxcbiAgICAgIGV4cGVjdGVkOiB0cnVlLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIG9wZXJhdG9yOiAnPT0nLFxuICAgICAgc3RhY2tTdGFydEZuOiBmblxuICAgIH0pO1xuICAgIGVyci5nZW5lcmF0ZWRNZXNzYWdlID0gZ2VuZXJhdGVkTWVzc2FnZTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn0gLy8gUHVyZSBhc3NlcnRpb24gdGVzdHMgd2hldGhlciBhIHZhbHVlIGlzIHRydXRoeSwgYXMgZGV0ZXJtaW5lZFxuLy8gYnkgISF2YWx1ZS5cblxuXG5mdW5jdGlvbiBvaygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIGlubmVyT2suYXBwbHkodm9pZCAwLCBbb2ssIGFyZ3MubGVuZ3RoXS5jb25jYXQoYXJncykpO1xufVxuXG5hc3NlcnQub2sgPSBvazsgLy8gVGhlIGVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBzaGFsbG93LCBjb2VyY2l2ZSBlcXVhbGl0eSB3aXRoID09LlxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXByb3BlcnRpZXMgKi9cblxuYXNzZXJ0LmVxdWFsID0gZnVuY3Rpb24gZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgRVJSX01JU1NJTkdfQVJHUygnYWN0dWFsJywgJ2V4cGVjdGVkJyk7XG4gIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVxZXFlcVxuXG5cbiAgaWYgKGFjdHVhbCAhPSBleHBlY3RlZCkge1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogJz09JyxcbiAgICAgIHN0YWNrU3RhcnRGbjogZXF1YWxcbiAgICB9KTtcbiAgfVxufTsgLy8gVGhlIG5vbi1lcXVhbGl0eSBhc3NlcnRpb24gdGVzdHMgZm9yIHdoZXRoZXIgdHdvIG9iamVjdHMgYXJlIG5vdFxuLy8gZXF1YWwgd2l0aCAhPS5cblxuXG5hc3NlcnQubm90RXF1YWwgPSBmdW5jdGlvbiBub3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFUlJfTUlTU0lOR19BUkdTKCdhY3R1YWwnLCAnZXhwZWN0ZWQnKTtcbiAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cblxuICBpZiAoYWN0dWFsID09IGV4cGVjdGVkKSB7XG4gICAgaW5uZXJGYWlsKHtcbiAgICAgIGFjdHVhbDogYWN0dWFsLFxuICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIG9wZXJhdG9yOiAnIT0nLFxuICAgICAgc3RhY2tTdGFydEZuOiBub3RFcXVhbFxuICAgIH0pO1xuICB9XG59OyAvLyBUaGUgZXF1aXZhbGVuY2UgYXNzZXJ0aW9uIHRlc3RzIGEgZGVlcCBlcXVhbGl0eSByZWxhdGlvbi5cblxuXG5hc3NlcnQuZGVlcEVxdWFsID0gZnVuY3Rpb24gZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9NSVNTSU5HX0FSR1MoJ2FjdHVhbCcsICdleHBlY3RlZCcpO1xuICB9XG5cbiAgaWYgKGlzRGVlcEVxdWFsID09PSB1bmRlZmluZWQpIGxhenlMb2FkQ29tcGFyaXNvbigpO1xuXG4gIGlmICghaXNEZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCkpIHtcbiAgICBpbm5lckZhaWwoe1xuICAgICAgYWN0dWFsOiBhY3R1YWwsXG4gICAgICBleHBlY3RlZDogZXhwZWN0ZWQsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgb3BlcmF0b3I6ICdkZWVwRXF1YWwnLFxuICAgICAgc3RhY2tTdGFydEZuOiBkZWVwRXF1YWxcbiAgICB9KTtcbiAgfVxufTsgLy8gVGhlIG5vbi1lcXVpdmFsZW5jZSBhc3NlcnRpb24gdGVzdHMgZm9yIGFueSBkZWVwIGluZXF1YWxpdHkuXG5cblxuYXNzZXJ0Lm5vdERlZXBFcXVhbCA9IGZ1bmN0aW9uIG5vdERlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFUlJfTUlTU0lOR19BUkdTKCdhY3R1YWwnLCAnZXhwZWN0ZWQnKTtcbiAgfVxuXG4gIGlmIChpc0RlZXBFcXVhbCA9PT0gdW5kZWZpbmVkKSBsYXp5TG9hZENvbXBhcmlzb24oKTtcblxuICBpZiAoaXNEZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCkpIHtcbiAgICBpbm5lckZhaWwoe1xuICAgICAgYWN0dWFsOiBhY3R1YWwsXG4gICAgICBleHBlY3RlZDogZXhwZWN0ZWQsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgb3BlcmF0b3I6ICdub3REZWVwRXF1YWwnLFxuICAgICAgc3RhY2tTdGFydEZuOiBub3REZWVwRXF1YWxcbiAgICB9KTtcbiAgfVxufTtcbi8qIGVzbGludC1lbmFibGUgKi9cblxuXG5hc3NlcnQuZGVlcFN0cmljdEVxdWFsID0gZnVuY3Rpb24gZGVlcFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9NSVNTSU5HX0FSR1MoJ2FjdHVhbCcsICdleHBlY3RlZCcpO1xuICB9XG5cbiAgaWYgKGlzRGVlcEVxdWFsID09PSB1bmRlZmluZWQpIGxhenlMb2FkQ29tcGFyaXNvbigpO1xuXG4gIGlmICghaXNEZWVwU3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkpIHtcbiAgICBpbm5lckZhaWwoe1xuICAgICAgYWN0dWFsOiBhY3R1YWwsXG4gICAgICBleHBlY3RlZDogZXhwZWN0ZWQsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgb3BlcmF0b3I6ICdkZWVwU3RyaWN0RXF1YWwnLFxuICAgICAgc3RhY2tTdGFydEZuOiBkZWVwU3RyaWN0RXF1YWxcbiAgICB9KTtcbiAgfVxufTtcblxuYXNzZXJ0Lm5vdERlZXBTdHJpY3RFcXVhbCA9IG5vdERlZXBTdHJpY3RFcXVhbDtcblxuZnVuY3Rpb24gbm90RGVlcFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9NSVNTSU5HX0FSR1MoJ2FjdHVhbCcsICdleHBlY3RlZCcpO1xuICB9XG5cbiAgaWYgKGlzRGVlcEVxdWFsID09PSB1bmRlZmluZWQpIGxhenlMb2FkQ29tcGFyaXNvbigpO1xuXG4gIGlmIChpc0RlZXBTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkKSkge1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogJ25vdERlZXBTdHJpY3RFcXVhbCcsXG4gICAgICBzdGFja1N0YXJ0Rm46IG5vdERlZXBTdHJpY3RFcXVhbFxuICAgIH0pO1xuICB9XG59XG5cbmFzc2VydC5zdHJpY3RFcXVhbCA9IGZ1bmN0aW9uIHN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9NSVNTSU5HX0FSR1MoJ2FjdHVhbCcsICdleHBlY3RlZCcpO1xuICB9XG5cbiAgaWYgKCFvYmplY3RJcyhhY3R1YWwsIGV4cGVjdGVkKSkge1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogJ3N0cmljdEVxdWFsJyxcbiAgICAgIHN0YWNrU3RhcnRGbjogc3RyaWN0RXF1YWxcbiAgICB9KTtcbiAgfVxufTtcblxuYXNzZXJ0Lm5vdFN0cmljdEVxdWFsID0gZnVuY3Rpb24gbm90U3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgRVJSX01JU1NJTkdfQVJHUygnYWN0dWFsJywgJ2V4cGVjdGVkJyk7XG4gIH1cblxuICBpZiAob2JqZWN0SXMoYWN0dWFsLCBleHBlY3RlZCkpIHtcbiAgICBpbm5lckZhaWwoe1xuICAgICAgYWN0dWFsOiBhY3R1YWwsXG4gICAgICBleHBlY3RlZDogZXhwZWN0ZWQsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgb3BlcmF0b3I6ICdub3RTdHJpY3RFcXVhbCcsXG4gICAgICBzdGFja1N0YXJ0Rm46IG5vdFN0cmljdEVxdWFsXG4gICAgfSk7XG4gIH1cbn07XG5cbnZhciBDb21wYXJpc29uID0gZnVuY3Rpb24gQ29tcGFyaXNvbihvYmosIGtleXMsIGFjdHVhbCkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb21wYXJpc29uKTtcblxuICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgICBpZiAoYWN0dWFsICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGFjdHVhbFtrZXldID09PSAnc3RyaW5nJyAmJiBpc1JlZ0V4cChvYmpba2V5XSkgJiYgb2JqW2tleV0udGVzdChhY3R1YWxba2V5XSkpIHtcbiAgICAgICAgX3RoaXNba2V5XSA9IGFjdHVhbFtrZXldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgX3RoaXNba2V5XSA9IG9ialtrZXldO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59O1xuXG5mdW5jdGlvbiBjb21wYXJlRXhjZXB0aW9uS2V5KGFjdHVhbCwgZXhwZWN0ZWQsIGtleSwgbWVzc2FnZSwga2V5cywgZm4pIHtcbiAgaWYgKCEoa2V5IGluIGFjdHVhbCkgfHwgIWlzRGVlcFN0cmljdEVxdWFsKGFjdHVhbFtrZXldLCBleHBlY3RlZFtrZXldKSkge1xuICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgLy8gQ3JlYXRlIHBsYWNlaG9sZGVyIG9iamVjdHMgdG8gY3JlYXRlIGEgbmljZSBvdXRwdXQuXG4gICAgICB2YXIgYSA9IG5ldyBDb21wYXJpc29uKGFjdHVhbCwga2V5cyk7XG4gICAgICB2YXIgYiA9IG5ldyBDb21wYXJpc29uKGV4cGVjdGVkLCBrZXlzLCBhY3R1YWwpO1xuICAgICAgdmFyIGVyciA9IG5ldyBBc3NlcnRpb25FcnJvcih7XG4gICAgICAgIGFjdHVhbDogYSxcbiAgICAgICAgZXhwZWN0ZWQ6IGIsXG4gICAgICAgIG9wZXJhdG9yOiAnZGVlcFN0cmljdEVxdWFsJyxcbiAgICAgICAgc3RhY2tTdGFydEZuOiBmblxuICAgICAgfSk7XG4gICAgICBlcnIuYWN0dWFsID0gYWN0dWFsO1xuICAgICAgZXJyLmV4cGVjdGVkID0gZXhwZWN0ZWQ7XG4gICAgICBlcnIub3BlcmF0b3IgPSBmbi5uYW1lO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogZm4ubmFtZSxcbiAgICAgIHN0YWNrU3RhcnRGbjogZm5cbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkLCBtc2csIGZuKSB7XG4gIGlmICh0eXBlb2YgZXhwZWN0ZWQgIT09ICdmdW5jdGlvbicpIHtcbiAgICBpZiAoaXNSZWdFeHAoZXhwZWN0ZWQpKSByZXR1cm4gZXhwZWN0ZWQudGVzdChhY3R1YWwpOyAvLyBhc3NlcnQuZG9lc05vdFRocm93IGRvZXMgbm90IGFjY2VwdCBvYmplY3RzLlxuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnZXhwZWN0ZWQnLCBbJ0Z1bmN0aW9uJywgJ1JlZ0V4cCddLCBleHBlY3RlZCk7XG4gICAgfSAvLyBIYW5kbGUgcHJpbWl0aXZlcyBwcm9wZXJseS5cblxuXG4gICAgaWYgKF90eXBlb2YoYWN0dWFsKSAhPT0gJ29iamVjdCcgfHwgYWN0dWFsID09PSBudWxsKSB7XG4gICAgICB2YXIgZXJyID0gbmV3IEFzc2VydGlvbkVycm9yKHtcbiAgICAgICAgYWN0dWFsOiBhY3R1YWwsXG4gICAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgICAgbWVzc2FnZTogbXNnLFxuICAgICAgICBvcGVyYXRvcjogJ2RlZXBTdHJpY3RFcXVhbCcsXG4gICAgICAgIHN0YWNrU3RhcnRGbjogZm5cbiAgICAgIH0pO1xuICAgICAgZXJyLm9wZXJhdG9yID0gZm4ubmFtZTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGV4cGVjdGVkKTsgLy8gU3BlY2lhbCBoYW5kbGUgZXJyb3JzIHRvIG1ha2Ugc3VyZSB0aGUgbmFtZSBhbmQgdGhlIG1lc3NhZ2UgYXJlIGNvbXBhcmVkXG4gICAgLy8gYXMgd2VsbC5cblxuICAgIGlmIChleHBlY3RlZCBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBrZXlzLnB1c2goJ25hbWUnLCAnbWVzc2FnZScpO1xuICAgIH0gZWxzZSBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVkFMVUUoJ2Vycm9yJywgZXhwZWN0ZWQsICdtYXkgbm90IGJlIGFuIGVtcHR5IG9iamVjdCcpO1xuICAgIH1cblxuICAgIGlmIChpc0RlZXBFcXVhbCA9PT0gdW5kZWZpbmVkKSBsYXp5TG9hZENvbXBhcmlzb24oKTtcbiAgICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgaWYgKHR5cGVvZiBhY3R1YWxba2V5XSA9PT0gJ3N0cmluZycgJiYgaXNSZWdFeHAoZXhwZWN0ZWRba2V5XSkgJiYgZXhwZWN0ZWRba2V5XS50ZXN0KGFjdHVhbFtrZXldKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbXBhcmVFeGNlcHRpb25LZXkoYWN0dWFsLCBleHBlY3RlZCwga2V5LCBtc2csIGtleXMsIGZuKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyBHdWFyZCBpbnN0YW5jZW9mIGFnYWluc3QgYXJyb3cgZnVuY3Rpb25zIGFzIHRoZXkgZG9uJ3QgaGF2ZSBhIHByb3RvdHlwZS5cblxuXG4gIGlmIChleHBlY3RlZC5wcm90b3R5cGUgIT09IHVuZGVmaW5lZCAmJiBhY3R1YWwgaW5zdGFuY2VvZiBleHBlY3RlZCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKEVycm9yLmlzUHJvdG90eXBlT2YoZXhwZWN0ZWQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGV4cGVjdGVkLmNhbGwoe30sIGFjdHVhbCkgPT09IHRydWU7XG59XG5cbmZ1bmN0aW9uIGdldEFjdHVhbChmbikge1xuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdmbicsICdGdW5jdGlvbicsIGZuKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgZm4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBlO1xuICB9XG5cbiAgcmV0dXJuIE5PX0VYQ0VQVElPTl9TRU5USU5FTDtcbn1cblxuZnVuY3Rpb24gY2hlY2tJc1Byb21pc2Uob2JqKSB7XG4gIC8vIEFjY2VwdCBuYXRpdmUgRVM2IHByb21pc2VzIGFuZCBwcm9taXNlcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBpbiBhIHNpbWlsYXJcbiAgLy8gd2F5LiBEbyBub3QgYWNjZXB0IHRoZW5hYmxlcyB0aGF0IHVzZSBhIGZ1bmN0aW9uIGFzIGBvYmpgIGFuZCB0aGF0IGhhdmUgbm9cbiAgLy8gYGNhdGNoYCBoYW5kbGVyLlxuICAvLyBUT0RPOiB0aGVuYWJsZXMgYXJlIGNoZWNrZWQgdXAgdW50aWwgdGhleSBoYXZlIHRoZSBjb3JyZWN0IG1ldGhvZHMsXG4gIC8vIGJ1dCBhY2NvcmRpbmcgdG8gZG9jdW1lbnRhdGlvbiwgdGhlIGB0aGVuYCBtZXRob2Qgc2hvdWxkIHJlY2VpdmVcbiAgLy8gdGhlIGBmdWxmaWxsYCBhbmQgYHJlamVjdGAgYXJndW1lbnRzIGFzIHdlbGwgb3IgaXQgbWF5IGJlIG5ldmVyIHJlc29sdmVkLlxuICByZXR1cm4gaXNQcm9taXNlKG9iaikgfHwgb2JqICE9PSBudWxsICYmIF90eXBlb2Yob2JqKSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9iai50aGVuID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBvYmouY2F0Y2ggPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIHdhaXRGb3JBY3R1YWwocHJvbWlzZUZuKSB7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzdWx0UHJvbWlzZTtcblxuICAgIGlmICh0eXBlb2YgcHJvbWlzZUZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBSZXR1cm4gYSByZWplY3RlZCBwcm9taXNlIGlmIGBwcm9taXNlRm5gIHRocm93cyBzeW5jaHJvbm91c2x5LlxuICAgICAgcmVzdWx0UHJvbWlzZSA9IHByb21pc2VGbigpOyAvLyBGYWlsIGluIGNhc2Ugbm8gcHJvbWlzZSBpcyByZXR1cm5lZC5cblxuICAgICAgaWYgKCFjaGVja0lzUHJvbWlzZShyZXN1bHRQcm9taXNlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfUkVUVVJOX1ZBTFVFKCdpbnN0YW5jZSBvZiBQcm9taXNlJywgJ3Byb21pc2VGbicsIHJlc3VsdFByb21pc2UpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2hlY2tJc1Byb21pc2UocHJvbWlzZUZuKSkge1xuICAgICAgcmVzdWx0UHJvbWlzZSA9IHByb21pc2VGbjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdwcm9taXNlRm4nLCBbJ0Z1bmN0aW9uJywgJ1Byb21pc2UnXSwgcHJvbWlzZUZuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gcmVzdWx0UHJvbWlzZTtcbiAgICB9KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBOT19FWENFUFRJT05fU0VOVElORUw7XG4gICAgfSkuY2F0Y2goZnVuY3Rpb24gKGUpIHtcbiAgICAgIHJldHVybiBlO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZXhwZWN0c0Vycm9yKHN0YWNrU3RhcnRGbiwgYWN0dWFsLCBlcnJvciwgbWVzc2FnZSkge1xuICBpZiAodHlwZW9mIGVycm9yID09PSAnc3RyaW5nJykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSA0KSB7XG4gICAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ2Vycm9yJywgWydPYmplY3QnLCAnRXJyb3InLCAnRnVuY3Rpb24nLCAnUmVnRXhwJ10sIGVycm9yKTtcbiAgICB9XG5cbiAgICBpZiAoX3R5cGVvZihhY3R1YWwpID09PSAnb2JqZWN0JyAmJiBhY3R1YWwgIT09IG51bGwpIHtcbiAgICAgIGlmIChhY3R1YWwubWVzc2FnZSA9PT0gZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVSUl9BTUJJR1VPVVNfQVJHVU1FTlQoJ2Vycm9yL21lc3NhZ2UnLCBcIlRoZSBlcnJvciBtZXNzYWdlIFxcXCJcIi5jb25jYXQoYWN0dWFsLm1lc3NhZ2UsIFwiXFxcIiBpcyBpZGVudGljYWwgdG8gdGhlIG1lc3NhZ2UuXCIpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGFjdHVhbCA9PT0gZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFUlJfQU1CSUdVT1VTX0FSR1VNRU5UKCdlcnJvci9tZXNzYWdlJywgXCJUaGUgZXJyb3IgXFxcIlwiLmNvbmNhdChhY3R1YWwsIFwiXFxcIiBpcyBpZGVudGljYWwgdG8gdGhlIG1lc3NhZ2UuXCIpKTtcbiAgICB9XG5cbiAgICBtZXNzYWdlID0gZXJyb3I7XG4gICAgZXJyb3IgPSB1bmRlZmluZWQ7XG4gIH0gZWxzZSBpZiAoZXJyb3IgIT0gbnVsbCAmJiBfdHlwZW9mKGVycm9yKSAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIGVycm9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdlcnJvcicsIFsnT2JqZWN0JywgJ0Vycm9yJywgJ0Z1bmN0aW9uJywgJ1JlZ0V4cCddLCBlcnJvcik7XG4gIH1cblxuICBpZiAoYWN0dWFsID09PSBOT19FWENFUFRJT05fU0VOVElORUwpIHtcbiAgICB2YXIgZGV0YWlscyA9ICcnO1xuXG4gICAgaWYgKGVycm9yICYmIGVycm9yLm5hbWUpIHtcbiAgICAgIGRldGFpbHMgKz0gXCIgKFwiLmNvbmNhdChlcnJvci5uYW1lLCBcIilcIik7XG4gICAgfVxuXG4gICAgZGV0YWlscyArPSBtZXNzYWdlID8gXCI6IFwiLmNvbmNhdChtZXNzYWdlKSA6ICcuJztcbiAgICB2YXIgZm5UeXBlID0gc3RhY2tTdGFydEZuLm5hbWUgPT09ICdyZWplY3RzJyA/ICdyZWplY3Rpb24nIDogJ2V4Y2VwdGlvbic7XG4gICAgaW5uZXJGYWlsKHtcbiAgICAgIGFjdHVhbDogdW5kZWZpbmVkLFxuICAgICAgZXhwZWN0ZWQ6IGVycm9yLFxuICAgICAgb3BlcmF0b3I6IHN0YWNrU3RhcnRGbi5uYW1lLFxuICAgICAgbWVzc2FnZTogXCJNaXNzaW5nIGV4cGVjdGVkIFwiLmNvbmNhdChmblR5cGUpLmNvbmNhdChkZXRhaWxzKSxcbiAgICAgIHN0YWNrU3RhcnRGbjogc3RhY2tTdGFydEZuXG4gICAgfSk7XG4gIH1cblxuICBpZiAoZXJyb3IgJiYgIWV4cGVjdGVkRXhjZXB0aW9uKGFjdHVhbCwgZXJyb3IsIG1lc3NhZ2UsIHN0YWNrU3RhcnRGbikpIHtcbiAgICB0aHJvdyBhY3R1YWw7XG4gIH1cbn1cblxuZnVuY3Rpb24gZXhwZWN0c05vRXJyb3Ioc3RhY2tTdGFydEZuLCBhY3R1YWwsIGVycm9yLCBtZXNzYWdlKSB7XG4gIGlmIChhY3R1YWwgPT09IE5PX0VYQ0VQVElPTl9TRU5USU5FTCkgcmV0dXJuO1xuXG4gIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgbWVzc2FnZSA9IGVycm9yO1xuICAgIGVycm9yID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKCFlcnJvciB8fCBleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGVycm9yKSkge1xuICAgIHZhciBkZXRhaWxzID0gbWVzc2FnZSA/IFwiOiBcIi5jb25jYXQobWVzc2FnZSkgOiAnLic7XG4gICAgdmFyIGZuVHlwZSA9IHN0YWNrU3RhcnRGbi5uYW1lID09PSAnZG9lc05vdFJlamVjdCcgPyAncmVqZWN0aW9uJyA6ICdleGNlcHRpb24nO1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBlcnJvcixcbiAgICAgIG9wZXJhdG9yOiBzdGFja1N0YXJ0Rm4ubmFtZSxcbiAgICAgIG1lc3NhZ2U6IFwiR290IHVud2FudGVkIFwiLmNvbmNhdChmblR5cGUpLmNvbmNhdChkZXRhaWxzLCBcIlxcblwiKSArIFwiQWN0dWFsIG1lc3NhZ2U6IFxcXCJcIi5jb25jYXQoYWN0dWFsICYmIGFjdHVhbC5tZXNzYWdlLCBcIlxcXCJcIiksXG4gICAgICBzdGFja1N0YXJ0Rm46IHN0YWNrU3RhcnRGblxuICAgIH0pO1xuICB9XG5cbiAgdGhyb3cgYWN0dWFsO1xufVxuXG5hc3NlcnQudGhyb3dzID0gZnVuY3Rpb24gdGhyb3dzKHByb21pc2VGbikge1xuICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIgPiAxID8gX2xlbjIgLSAxIDogMCksIF9rZXkyID0gMTsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgIGFyZ3NbX2tleTIgLSAxXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gIH1cblxuICBleHBlY3RzRXJyb3IuYXBwbHkodm9pZCAwLCBbdGhyb3dzLCBnZXRBY3R1YWwocHJvbWlzZUZuKV0uY29uY2F0KGFyZ3MpKTtcbn07XG5cbmFzc2VydC5yZWplY3RzID0gZnVuY3Rpb24gcmVqZWN0cyhwcm9taXNlRm4pIHtcbiAgZm9yICh2YXIgX2xlbjMgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4zID4gMSA/IF9sZW4zIC0gMSA6IDApLCBfa2V5MyA9IDE7IF9rZXkzIDwgX2xlbjM7IF9rZXkzKyspIHtcbiAgICBhcmdzW19rZXkzIC0gMV0gPSBhcmd1bWVudHNbX2tleTNdO1xuICB9XG5cbiAgcmV0dXJuIHdhaXRGb3JBY3R1YWwocHJvbWlzZUZuKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICByZXR1cm4gZXhwZWN0c0Vycm9yLmFwcGx5KHZvaWQgMCwgW3JlamVjdHMsIHJlc3VsdF0uY29uY2F0KGFyZ3MpKTtcbiAgfSk7XG59O1xuXG5hc3NlcnQuZG9lc05vdFRocm93ID0gZnVuY3Rpb24gZG9lc05vdFRocm93KGZuKSB7XG4gIGZvciAodmFyIF9sZW40ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuNCA+IDEgPyBfbGVuNCAtIDEgOiAwKSwgX2tleTQgPSAxOyBfa2V5NCA8IF9sZW40OyBfa2V5NCsrKSB7XG4gICAgYXJnc1tfa2V5NCAtIDFdID0gYXJndW1lbnRzW19rZXk0XTtcbiAgfVxuXG4gIGV4cGVjdHNOb0Vycm9yLmFwcGx5KHZvaWQgMCwgW2RvZXNOb3RUaHJvdywgZ2V0QWN0dWFsKGZuKV0uY29uY2F0KGFyZ3MpKTtcbn07XG5cbmFzc2VydC5kb2VzTm90UmVqZWN0ID0gZnVuY3Rpb24gZG9lc05vdFJlamVjdChmbikge1xuICBmb3IgKHZhciBfbGVuNSA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjUgPiAxID8gX2xlbjUgLSAxIDogMCksIF9rZXk1ID0gMTsgX2tleTUgPCBfbGVuNTsgX2tleTUrKykge1xuICAgIGFyZ3NbX2tleTUgLSAxXSA9IGFyZ3VtZW50c1tfa2V5NV07XG4gIH1cblxuICByZXR1cm4gd2FpdEZvckFjdHVhbChmbikudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG4gICAgcmV0dXJuIGV4cGVjdHNOb0Vycm9yLmFwcGx5KHZvaWQgMCwgW2RvZXNOb3RSZWplY3QsIHJlc3VsdF0uY29uY2F0KGFyZ3MpKTtcbiAgfSk7XG59O1xuXG5hc3NlcnQuaWZFcnJvciA9IGZ1bmN0aW9uIGlmRXJyb3IoZXJyKSB7XG4gIGlmIChlcnIgIT09IG51bGwgJiYgZXJyICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgbWVzc2FnZSA9ICdpZkVycm9yIGdvdCB1bndhbnRlZCBleGNlcHRpb246ICc7XG5cbiAgICBpZiAoX3R5cGVvZihlcnIpID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgZXJyLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAoZXJyLm1lc3NhZ2UubGVuZ3RoID09PSAwICYmIGVyci5jb25zdHJ1Y3Rvcikge1xuICAgICAgICBtZXNzYWdlICs9IGVyci5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSArPSBlcnIubWVzc2FnZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZSArPSBpbnNwZWN0KGVycik7XG4gICAgfVxuXG4gICAgdmFyIG5ld0VyciA9IG5ldyBBc3NlcnRpb25FcnJvcih7XG4gICAgICBhY3R1YWw6IGVycixcbiAgICAgIGV4cGVjdGVkOiBudWxsLFxuICAgICAgb3BlcmF0b3I6ICdpZkVycm9yJyxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBzdGFja1N0YXJ0Rm46IGlmRXJyb3JcbiAgICB9KTsgLy8gTWFrZSBzdXJlIHdlIGFjdHVhbGx5IGhhdmUgYSBzdGFjayB0cmFjZSFcblxuICAgIHZhciBvcmlnU3RhY2sgPSBlcnIuc3RhY2s7XG5cbiAgICBpZiAodHlwZW9mIG9yaWdTdGFjayA9PT0gJ3N0cmluZycpIHtcbiAgICAgIC8vIFRoaXMgd2lsbCByZW1vdmUgYW55IGR1cGxpY2F0ZWQgZnJhbWVzIGZyb20gdGhlIGVycm9yIGZyYW1lcyB0YWtlblxuICAgICAgLy8gZnJvbSB3aXRoaW4gYGlmRXJyb3JgIGFuZCBhZGQgdGhlIG9yaWdpbmFsIGVycm9yIGZyYW1lcyB0byB0aGUgbmV3bHlcbiAgICAgIC8vIGNyZWF0ZWQgb25lcy5cbiAgICAgIHZhciB0bXAyID0gb3JpZ1N0YWNrLnNwbGl0KCdcXG4nKTtcbiAgICAgIHRtcDIuc2hpZnQoKTsgLy8gRmlsdGVyIGFsbCBmcmFtZXMgZXhpc3RpbmcgaW4gZXJyLnN0YWNrLlxuXG4gICAgICB2YXIgdG1wMSA9IG5ld0Vyci5zdGFjay5zcGxpdCgnXFxuJyk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG1wMi5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHRoZSBmcmFtZS5cbiAgICAgICAgdmFyIHBvcyA9IHRtcDEuaW5kZXhPZih0bXAyW2ldKTtcblxuICAgICAgICBpZiAocG9zICE9PSAtMSkge1xuICAgICAgICAgIC8vIE9ubHkga2VlcCBuZXcgZnJhbWVzLlxuICAgICAgICAgIHRtcDEgPSB0bXAxLnNsaWNlKDAsIHBvcyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbmV3RXJyLnN0YWNrID0gXCJcIi5jb25jYXQodG1wMS5qb2luKCdcXG4nKSwgXCJcXG5cIikuY29uY2F0KHRtcDIuam9pbignXFxuJykpO1xuICAgIH1cblxuICAgIHRocm93IG5ld0VycjtcbiAgfVxufTsgLy8gRXhwb3NlIGEgc3RyaWN0IG9ubHkgdmFyaWFudCBvZiBhc3NlcnRcblxuXG5mdW5jdGlvbiBzdHJpY3QoKSB7XG4gIGZvciAodmFyIF9sZW42ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuNiksIF9rZXk2ID0gMDsgX2tleTYgPCBfbGVuNjsgX2tleTYrKykge1xuICAgIGFyZ3NbX2tleTZdID0gYXJndW1lbnRzW19rZXk2XTtcbiAgfVxuXG4gIGlubmVyT2suYXBwbHkodm9pZCAwLCBbc3RyaWN0LCBhcmdzLmxlbmd0aF0uY29uY2F0KGFyZ3MpKTtcbn1cblxuYXNzZXJ0LnN0cmljdCA9IG9iamVjdEFzc2lnbihzdHJpY3QsIGFzc2VydCwge1xuICBlcXVhbDogYXNzZXJ0LnN0cmljdEVxdWFsLFxuICBkZWVwRXF1YWw6IGFzc2VydC5kZWVwU3RyaWN0RXF1YWwsXG4gIG5vdEVxdWFsOiBhc3NlcnQubm90U3RyaWN0RXF1YWwsXG4gIG5vdERlZXBFcXVhbDogYXNzZXJ0Lm5vdERlZXBTdHJpY3RFcXVhbFxufSk7XG5hc3NlcnQuc3RyaWN0LnN0cmljdCA9IGFzc2VydC5zdHJpY3Q7IiwiLy8gQ3VycmVudGx5IGluIHN5bmMgd2l0aCBOb2RlLmpzIGxpYi9pbnRlcm5hbC9hc3NlcnQvYXNzZXJ0aW9uX2Vycm9yLmpzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvY29tbWl0LzA4MTc4NDBmNzc1MDMyMTY5ZGRkNzBjODVhYzA1OWYxOGZmY2M4MWNcbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZCh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307IHZhciBvd25LZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgaWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSAnZnVuY3Rpb24nKSB7IG93bktleXMgPSBvd25LZXlzLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZSkuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHsgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBzeW0pLmVudW1lcmFibGU7IH0pKTsgfSBvd25LZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpIHsgdmFyIF9jYWNoZSA9IHR5cGVvZiBNYXAgPT09IFwiZnVuY3Rpb25cIiA/IG5ldyBNYXAoKSA6IHVuZGVmaW5lZDsgX3dyYXBOYXRpdmVTdXBlciA9IGZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpIHsgaWYgKENsYXNzID09PSBudWxsIHx8ICFfaXNOYXRpdmVGdW5jdGlvbihDbGFzcykpIHJldHVybiBDbGFzczsgaWYgKHR5cGVvZiBDbGFzcyAhPT0gXCJmdW5jdGlvblwiKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBpZiAodHlwZW9mIF9jYWNoZSAhPT0gXCJ1bmRlZmluZWRcIikgeyBpZiAoX2NhY2hlLmhhcyhDbGFzcykpIHJldHVybiBfY2FjaGUuZ2V0KENsYXNzKTsgX2NhY2hlLnNldChDbGFzcywgV3JhcHBlcik7IH0gZnVuY3Rpb24gV3JhcHBlcigpIHsgcmV0dXJuIF9jb25zdHJ1Y3QoQ2xhc3MsIGFyZ3VtZW50cywgX2dldFByb3RvdHlwZU9mKHRoaXMpLmNvbnN0cnVjdG9yKTsgfSBXcmFwcGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBXcmFwcGVyLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyByZXR1cm4gX3NldFByb3RvdHlwZU9mKFdyYXBwZXIsIENsYXNzKTsgfTsgcmV0dXJuIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHsgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlOyBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlOyBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlOyB0cnkgeyBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsIFtdLCBmdW5jdGlvbiAoKSB7fSkpOyByZXR1cm4gdHJ1ZTsgfSBjYXRjaCAoZSkgeyByZXR1cm4gZmFsc2U7IH0gfVxuXG5mdW5jdGlvbiBfY29uc3RydWN0KFBhcmVudCwgYXJncywgQ2xhc3MpIHsgaWYgKGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpKSB7IF9jb25zdHJ1Y3QgPSBSZWZsZWN0LmNvbnN0cnVjdDsgfSBlbHNlIHsgX2NvbnN0cnVjdCA9IGZ1bmN0aW9uIF9jb25zdHJ1Y3QoUGFyZW50LCBhcmdzLCBDbGFzcykgeyB2YXIgYSA9IFtudWxsXTsgYS5wdXNoLmFwcGx5KGEsIGFyZ3MpOyB2YXIgQ29uc3RydWN0b3IgPSBGdW5jdGlvbi5iaW5kLmFwcGx5KFBhcmVudCwgYSk7IHZhciBpbnN0YW5jZSA9IG5ldyBDb25zdHJ1Y3RvcigpOyBpZiAoQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihpbnN0YW5jZSwgQ2xhc3MucHJvdG90eXBlKTsgcmV0dXJuIGluc3RhbmNlOyB9OyB9IHJldHVybiBfY29uc3RydWN0LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX2lzTmF0aXZlRnVuY3Rpb24oZm4pIHsgcmV0dXJuIEZ1bmN0aW9uLnRvU3RyaW5nLmNhbGwoZm4pLmluZGV4T2YoXCJbbmF0aXZlIGNvZGVdXCIpICE9PSAtMTsgfVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgby5fX3Byb3RvX18gPSBwOyByZXR1cm4gbzsgfTsgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTsgfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbnZhciBfcmVxdWlyZSA9IHJlcXVpcmUoJ3V0aWwvJyksXG4gICAgaW5zcGVjdCA9IF9yZXF1aXJlLmluc3BlY3Q7XG5cbnZhciBfcmVxdWlyZTIgPSByZXF1aXJlKCcuLi9lcnJvcnMnKSxcbiAgICBFUlJfSU5WQUxJRF9BUkdfVFlQRSA9IF9yZXF1aXJlMi5jb2Rlcy5FUlJfSU5WQUxJRF9BUkdfVFlQRTsgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nL2VuZHNXaXRoXG5cblxuZnVuY3Rpb24gZW5kc1dpdGgoc3RyLCBzZWFyY2gsIHRoaXNfbGVuKSB7XG4gIGlmICh0aGlzX2xlbiA9PT0gdW5kZWZpbmVkIHx8IHRoaXNfbGVuID4gc3RyLmxlbmd0aCkge1xuICAgIHRoaXNfbGVuID0gc3RyLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiBzdHIuc3Vic3RyaW5nKHRoaXNfbGVuIC0gc2VhcmNoLmxlbmd0aCwgdGhpc19sZW4pID09PSBzZWFyY2g7XG59IC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9yZXBlYXRcblxuXG5mdW5jdGlvbiByZXBlYXQoc3RyLCBjb3VudCkge1xuICBjb3VudCA9IE1hdGguZmxvb3IoY291bnQpO1xuICBpZiAoc3RyLmxlbmd0aCA9PSAwIHx8IGNvdW50ID09IDApIHJldHVybiAnJztcbiAgdmFyIG1heENvdW50ID0gc3RyLmxlbmd0aCAqIGNvdW50O1xuICBjb3VudCA9IE1hdGguZmxvb3IoTWF0aC5sb2coY291bnQpIC8gTWF0aC5sb2coMikpO1xuXG4gIHdoaWxlIChjb3VudCkge1xuICAgIHN0ciArPSBzdHI7XG4gICAgY291bnQtLTtcbiAgfVxuXG4gIHN0ciArPSBzdHIuc3Vic3RyaW5nKDAsIG1heENvdW50IC0gc3RyLmxlbmd0aCk7XG4gIHJldHVybiBzdHI7XG59XG5cbnZhciBibHVlID0gJyc7XG52YXIgZ3JlZW4gPSAnJztcbnZhciByZWQgPSAnJztcbnZhciB3aGl0ZSA9ICcnO1xudmFyIGtSZWFkYWJsZU9wZXJhdG9yID0ge1xuICBkZWVwU3RyaWN0RXF1YWw6ICdFeHBlY3RlZCB2YWx1ZXMgdG8gYmUgc3RyaWN0bHkgZGVlcC1lcXVhbDonLFxuICBzdHJpY3RFcXVhbDogJ0V4cGVjdGVkIHZhbHVlcyB0byBiZSBzdHJpY3RseSBlcXVhbDonLFxuICBzdHJpY3RFcXVhbE9iamVjdDogJ0V4cGVjdGVkIFwiYWN0dWFsXCIgdG8gYmUgcmVmZXJlbmNlLWVxdWFsIHRvIFwiZXhwZWN0ZWRcIjonLFxuICBkZWVwRXF1YWw6ICdFeHBlY3RlZCB2YWx1ZXMgdG8gYmUgbG9vc2VseSBkZWVwLWVxdWFsOicsXG4gIGVxdWFsOiAnRXhwZWN0ZWQgdmFsdWVzIHRvIGJlIGxvb3NlbHkgZXF1YWw6JyxcbiAgbm90RGVlcFN0cmljdEVxdWFsOiAnRXhwZWN0ZWQgXCJhY3R1YWxcIiBub3QgdG8gYmUgc3RyaWN0bHkgZGVlcC1lcXVhbCB0bzonLFxuICBub3RTdHJpY3RFcXVhbDogJ0V4cGVjdGVkIFwiYWN0dWFsXCIgdG8gYmUgc3RyaWN0bHkgdW5lcXVhbCB0bzonLFxuICBub3RTdHJpY3RFcXVhbE9iamVjdDogJ0V4cGVjdGVkIFwiYWN0dWFsXCIgbm90IHRvIGJlIHJlZmVyZW5jZS1lcXVhbCB0byBcImV4cGVjdGVkXCI6JyxcbiAgbm90RGVlcEVxdWFsOiAnRXhwZWN0ZWQgXCJhY3R1YWxcIiBub3QgdG8gYmUgbG9vc2VseSBkZWVwLWVxdWFsIHRvOicsXG4gIG5vdEVxdWFsOiAnRXhwZWN0ZWQgXCJhY3R1YWxcIiB0byBiZSBsb29zZWx5IHVuZXF1YWwgdG86JyxcbiAgbm90SWRlbnRpY2FsOiAnVmFsdWVzIGlkZW50aWNhbCBidXQgbm90IHJlZmVyZW5jZS1lcXVhbDonXG59OyAvLyBDb21wYXJpbmcgc2hvcnQgcHJpbWl0aXZlcyBzaG91bGQganVzdCBzaG93ID09PSAvICE9PSBpbnN0ZWFkIG9mIHVzaW5nIHRoZVxuLy8gZGlmZi5cblxudmFyIGtNYXhTaG9ydExlbmd0aCA9IDEwO1xuXG5mdW5jdGlvbiBjb3B5RXJyb3Ioc291cmNlKSB7XG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgdmFyIHRhcmdldCA9IE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHNvdXJjZSkpO1xuICBrZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gIH0pO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCAnbWVzc2FnZScsIHtcbiAgICB2YWx1ZTogc291cmNlLm1lc3NhZ2VcbiAgfSk7XG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIGluc3BlY3RWYWx1ZSh2YWwpIHtcbiAgLy8gVGhlIHV0aWwuaW5zcGVjdCBkZWZhdWx0IHZhbHVlcyBjb3VsZCBiZSBjaGFuZ2VkLiBUaGlzIG1ha2VzIHN1cmUgdGhlXG4gIC8vIGVycm9yIG1lc3NhZ2VzIGNvbnRhaW4gdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBuZXZlcnRoZWxlc3MuXG4gIHJldHVybiBpbnNwZWN0KHZhbCwge1xuICAgIGNvbXBhY3Q6IGZhbHNlLFxuICAgIGN1c3RvbUluc3BlY3Q6IGZhbHNlLFxuICAgIGRlcHRoOiAxMDAwLFxuICAgIG1heEFycmF5TGVuZ3RoOiBJbmZpbml0eSxcbiAgICAvLyBBc3NlcnQgY29tcGFyZXMgb25seSBlbnVtZXJhYmxlIHByb3BlcnRpZXMgKHdpdGggYSBmZXcgZXhjZXB0aW9ucykuXG4gICAgc2hvd0hpZGRlbjogZmFsc2UsXG4gICAgLy8gSGF2aW5nIGEgbG9uZyBsaW5lIGFzIGVycm9yIGlzIGJldHRlciB0aGFuIHdyYXBwaW5nIHRoZSBsaW5lIGZvclxuICAgIC8vIGNvbXBhcmlzb24gZm9yIG5vdy5cbiAgICAvLyBUT0RPKEJyaWRnZUFSKTogYGJyZWFrTGVuZ3RoYCBzaG91bGQgYmUgbGltaXRlZCBhcyBzb29uIGFzIHNvb24gYXMgd2VcbiAgICAvLyBoYXZlIG1ldGEgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGluc3BlY3RlZCBwcm9wZXJ0aWVzIChpLmUuLCBrbm93IHdoZXJlXG4gICAgLy8gaW4gd2hhdCBsaW5lIHRoZSBwcm9wZXJ0eSBzdGFydHMgYW5kIGVuZHMpLlxuICAgIGJyZWFrTGVuZ3RoOiBJbmZpbml0eSxcbiAgICAvLyBBc3NlcnQgZG9lcyBub3QgZGV0ZWN0IHByb3hpZXMgY3VycmVudGx5LlxuICAgIHNob3dQcm94eTogZmFsc2UsXG4gICAgc29ydGVkOiB0cnVlLFxuICAgIC8vIEluc3BlY3QgZ2V0dGVycyBhcyB3ZSBhbHNvIGNoZWNrIHRoZW0gd2hlbiBjb21wYXJpbmcgZW50cmllcy5cbiAgICBnZXR0ZXJzOiB0cnVlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFcnJEaWZmKGFjdHVhbCwgZXhwZWN0ZWQsIG9wZXJhdG9yKSB7XG4gIHZhciBvdGhlciA9ICcnO1xuICB2YXIgcmVzID0gJyc7XG4gIHZhciBsYXN0UG9zID0gMDtcbiAgdmFyIGVuZCA9ICcnO1xuICB2YXIgc2tpcHBlZCA9IGZhbHNlO1xuICB2YXIgYWN0dWFsSW5zcGVjdGVkID0gaW5zcGVjdFZhbHVlKGFjdHVhbCk7XG4gIHZhciBhY3R1YWxMaW5lcyA9IGFjdHVhbEluc3BlY3RlZC5zcGxpdCgnXFxuJyk7XG4gIHZhciBleHBlY3RlZExpbmVzID0gaW5zcGVjdFZhbHVlKGV4cGVjdGVkKS5zcGxpdCgnXFxuJyk7XG4gIHZhciBpID0gMDtcbiAgdmFyIGluZGljYXRvciA9ICcnOyAvLyBJbiBjYXNlIGJvdGggdmFsdWVzIGFyZSBvYmplY3RzIGV4cGxpY2l0bHkgbWFyayB0aGVtIGFzIG5vdCByZWZlcmVuY2UgZXF1YWxcbiAgLy8gZm9yIHRoZSBgc3RyaWN0RXF1YWxgIG9wZXJhdG9yLlxuXG4gIGlmIChvcGVyYXRvciA9PT0gJ3N0cmljdEVxdWFsJyAmJiBfdHlwZW9mKGFjdHVhbCkgPT09ICdvYmplY3QnICYmIF90eXBlb2YoZXhwZWN0ZWQpID09PSAnb2JqZWN0JyAmJiBhY3R1YWwgIT09IG51bGwgJiYgZXhwZWN0ZWQgIT09IG51bGwpIHtcbiAgICBvcGVyYXRvciA9ICdzdHJpY3RFcXVhbE9iamVjdCc7XG4gIH0gLy8gSWYgXCJhY3R1YWxcIiBhbmQgXCJleHBlY3RlZFwiIGZpdCBvbiBhIHNpbmdsZSBsaW5lIGFuZCB0aGV5IGFyZSBub3Qgc3RyaWN0bHlcbiAgLy8gZXF1YWwsIGNoZWNrIGZ1cnRoZXIgc3BlY2lhbCBoYW5kbGluZy5cblxuXG4gIGlmIChhY3R1YWxMaW5lcy5sZW5ndGggPT09IDEgJiYgZXhwZWN0ZWRMaW5lcy5sZW5ndGggPT09IDEgJiYgYWN0dWFsTGluZXNbMF0gIT09IGV4cGVjdGVkTGluZXNbMF0pIHtcbiAgICB2YXIgaW5wdXRMZW5ndGggPSBhY3R1YWxMaW5lc1swXS5sZW5ndGggKyBleHBlY3RlZExpbmVzWzBdLmxlbmd0aDsgLy8gSWYgdGhlIGNoYXJhY3RlciBsZW5ndGggb2YgXCJhY3R1YWxcIiBhbmQgXCJleHBlY3RlZFwiIHRvZ2V0aGVyIGlzIGxlc3MgdGhhblxuICAgIC8vIGtNYXhTaG9ydExlbmd0aCBhbmQgaWYgbmVpdGhlciBpcyBhbiBvYmplY3QgYW5kIGF0IGxlYXN0IG9uZSBvZiB0aGVtIGlzXG4gICAgLy8gbm90IGB6ZXJvYCwgdXNlIHRoZSBzdHJpY3QgZXF1YWwgY29tcGFyaXNvbiB0byB2aXN1YWxpemUgdGhlIG91dHB1dC5cblxuICAgIGlmIChpbnB1dExlbmd0aCA8PSBrTWF4U2hvcnRMZW5ndGgpIHtcbiAgICAgIGlmICgoX3R5cGVvZihhY3R1YWwpICE9PSAnb2JqZWN0JyB8fCBhY3R1YWwgPT09IG51bGwpICYmIChfdHlwZW9mKGV4cGVjdGVkKSAhPT0gJ29iamVjdCcgfHwgZXhwZWN0ZWQgPT09IG51bGwpICYmIChhY3R1YWwgIT09IDAgfHwgZXhwZWN0ZWQgIT09IDApKSB7XG4gICAgICAgIC8vIC0wID09PSArMFxuICAgICAgICByZXR1cm4gXCJcIi5jb25jYXQoa1JlYWRhYmxlT3BlcmF0b3Jbb3BlcmF0b3JdLCBcIlxcblxcblwiKSArIFwiXCIuY29uY2F0KGFjdHVhbExpbmVzWzBdLCBcIiAhPT0gXCIpLmNvbmNhdChleHBlY3RlZExpbmVzWzBdLCBcIlxcblwiKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG9wZXJhdG9yICE9PSAnc3RyaWN0RXF1YWxPYmplY3QnKSB7XG4gICAgICAvLyBJZiB0aGUgc3RkZXJyIGlzIGEgdHR5IGFuZCB0aGUgaW5wdXQgbGVuZ3RoIGlzIGxvd2VyIHRoYW4gdGhlIGN1cnJlbnRcbiAgICAgIC8vIGNvbHVtbnMgcGVyIGxpbmUsIGFkZCBhIG1pc21hdGNoIGluZGljYXRvciBiZWxvdyB0aGUgb3V0cHV0LiBJZiBpdCBpc1xuICAgICAgLy8gbm90IGEgdHR5LCB1c2UgYSBkZWZhdWx0IHZhbHVlIG9mIDgwIGNoYXJhY3RlcnMuXG4gICAgICB2YXIgbWF4TGVuZ3RoID0gcHJvY2Vzcy5zdGRlcnIgJiYgcHJvY2Vzcy5zdGRlcnIuaXNUVFkgPyBwcm9jZXNzLnN0ZGVyci5jb2x1bW5zIDogODA7XG5cbiAgICAgIGlmIChpbnB1dExlbmd0aCA8IG1heExlbmd0aCkge1xuICAgICAgICB3aGlsZSAoYWN0dWFsTGluZXNbMF1baV0gPT09IGV4cGVjdGVkTGluZXNbMF1baV0pIHtcbiAgICAgICAgICBpKys7XG4gICAgICAgIH0gLy8gSWdub3JlIHRoZSBmaXJzdCBjaGFyYWN0ZXJzLlxuXG5cbiAgICAgICAgaWYgKGkgPiAyKSB7XG4gICAgICAgICAgLy8gQWRkIHBvc2l0aW9uIGluZGljYXRvciBmb3IgdGhlIGZpcnN0IG1pc21hdGNoIGluIGNhc2UgaXQgaXMgYVxuICAgICAgICAgIC8vIHNpbmdsZSBsaW5lIGFuZCB0aGUgaW5wdXQgbGVuZ3RoIGlzIGxlc3MgdGhhbiB0aGUgY29sdW1uIGxlbmd0aC5cbiAgICAgICAgICBpbmRpY2F0b3IgPSBcIlxcbiAgXCIuY29uY2F0KHJlcGVhdCgnICcsIGkpLCBcIl5cIik7XG4gICAgICAgICAgaSA9IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gLy8gUmVtb3ZlIGFsbCBlbmRpbmcgbGluZXMgdGhhdCBtYXRjaCAodGhpcyBvcHRpbWl6ZXMgdGhlIG91dHB1dCBmb3JcbiAgLy8gcmVhZGFiaWxpdHkgYnkgcmVkdWNpbmcgdGhlIG51bWJlciBvZiB0b3RhbCBjaGFuZ2VkIGxpbmVzKS5cblxuXG4gIHZhciBhID0gYWN0dWFsTGluZXNbYWN0dWFsTGluZXMubGVuZ3RoIC0gMV07XG4gIHZhciBiID0gZXhwZWN0ZWRMaW5lc1tleHBlY3RlZExpbmVzLmxlbmd0aCAtIDFdO1xuXG4gIHdoaWxlIChhID09PSBiKSB7XG4gICAgaWYgKGkrKyA8IDIpIHtcbiAgICAgIGVuZCA9IFwiXFxuICBcIi5jb25jYXQoYSkuY29uY2F0KGVuZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG90aGVyID0gYTtcbiAgICB9XG5cbiAgICBhY3R1YWxMaW5lcy5wb3AoKTtcbiAgICBleHBlY3RlZExpbmVzLnBvcCgpO1xuICAgIGlmIChhY3R1YWxMaW5lcy5sZW5ndGggPT09IDAgfHwgZXhwZWN0ZWRMaW5lcy5sZW5ndGggPT09IDApIGJyZWFrO1xuICAgIGEgPSBhY3R1YWxMaW5lc1thY3R1YWxMaW5lcy5sZW5ndGggLSAxXTtcbiAgICBiID0gZXhwZWN0ZWRMaW5lc1tleHBlY3RlZExpbmVzLmxlbmd0aCAtIDFdO1xuICB9XG5cbiAgdmFyIG1heExpbmVzID0gTWF0aC5tYXgoYWN0dWFsTGluZXMubGVuZ3RoLCBleHBlY3RlZExpbmVzLmxlbmd0aCk7IC8vIFN0cmljdCBlcXVhbCB3aXRoIGlkZW50aWNhbCBvYmplY3RzIHRoYXQgYXJlIG5vdCBpZGVudGljYWwgYnkgcmVmZXJlbmNlLlxuICAvLyBFLmcuLCBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHsgYTogU3ltYm9sKCkgfSwgeyBhOiBTeW1ib2woKSB9KVxuXG4gIGlmIChtYXhMaW5lcyA9PT0gMCkge1xuICAgIC8vIFdlIGhhdmUgdG8gZ2V0IHRoZSByZXN1bHQgYWdhaW4uIFRoZSBsaW5lcyB3ZXJlIGFsbCByZW1vdmVkIGJlZm9yZS5cbiAgICB2YXIgX2FjdHVhbExpbmVzID0gYWN0dWFsSW5zcGVjdGVkLnNwbGl0KCdcXG4nKTsgLy8gT25seSByZW1vdmUgbGluZXMgaW4gY2FzZSBpdCBtYWtlcyBzZW5zZSB0byBjb2xsYXBzZSB0aG9zZS5cbiAgICAvLyBUT0RPOiBBY2NlcHQgZW52IHRvIGFsd2F5cyBzaG93IHRoZSBmdWxsIGVycm9yLlxuXG5cbiAgICBpZiAoX2FjdHVhbExpbmVzLmxlbmd0aCA+IDMwKSB7XG4gICAgICBfYWN0dWFsTGluZXNbMjZdID0gXCJcIi5jb25jYXQoYmx1ZSwgXCIuLi5cIikuY29uY2F0KHdoaXRlKTtcblxuICAgICAgd2hpbGUgKF9hY3R1YWxMaW5lcy5sZW5ndGggPiAyNykge1xuICAgICAgICBfYWN0dWFsTGluZXMucG9wKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCIuY29uY2F0KGtSZWFkYWJsZU9wZXJhdG9yLm5vdElkZW50aWNhbCwgXCJcXG5cXG5cIikuY29uY2F0KF9hY3R1YWxMaW5lcy5qb2luKCdcXG4nKSwgXCJcXG5cIik7XG4gIH1cblxuICBpZiAoaSA+IDMpIHtcbiAgICBlbmQgPSBcIlxcblwiLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUpLmNvbmNhdChlbmQpO1xuICAgIHNraXBwZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKG90aGVyICE9PSAnJykge1xuICAgIGVuZCA9IFwiXFxuICBcIi5jb25jYXQob3RoZXIpLmNvbmNhdChlbmQpO1xuICAgIG90aGVyID0gJyc7XG4gIH1cblxuICB2YXIgcHJpbnRlZExpbmVzID0gMDtcbiAgdmFyIG1zZyA9IGtSZWFkYWJsZU9wZXJhdG9yW29wZXJhdG9yXSArIFwiXFxuXCIuY29uY2F0KGdyZWVuLCBcIisgYWN0dWFsXCIpLmNvbmNhdCh3aGl0ZSwgXCIgXCIpLmNvbmNhdChyZWQsIFwiLSBleHBlY3RlZFwiKS5jb25jYXQod2hpdGUpO1xuICB2YXIgc2tpcHBlZE1zZyA9IFwiIFwiLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUsIFwiIExpbmVzIHNraXBwZWRcIik7XG5cbiAgZm9yIChpID0gMDsgaSA8IG1heExpbmVzOyBpKyspIHtcbiAgICAvLyBPbmx5IGV4dHJhIGV4cGVjdGVkIGxpbmVzIGV4aXN0XG4gICAgdmFyIGN1ciA9IGkgLSBsYXN0UG9zO1xuXG4gICAgaWYgKGFjdHVhbExpbmVzLmxlbmd0aCA8IGkgKyAxKSB7XG4gICAgICAvLyBJZiB0aGUgbGFzdCBkaXZlcmdpbmcgbGluZSBpcyBtb3JlIHRoYW4gb25lIGxpbmUgYWJvdmUgYW5kIHRoZVxuICAgICAgLy8gY3VycmVudCBsaW5lIGlzIGF0IGxlYXN0IGxpbmUgdGhyZWUsIGFkZCBzb21lIG9mIHRoZSBmb3JtZXIgbGluZXMgYW5kXG4gICAgICAvLyBhbHNvIGFkZCBkb3RzIHRvIGluZGljYXRlIHNraXBwZWQgZW50cmllcy5cbiAgICAgIGlmIChjdXIgPiAxICYmIGkgPiAyKSB7XG4gICAgICAgIGlmIChjdXIgPiA0KSB7XG4gICAgICAgICAgcmVzICs9IFwiXFxuXCIuY29uY2F0KGJsdWUsIFwiLi4uXCIpLmNvbmNhdCh3aGl0ZSk7XG4gICAgICAgICAgc2tpcHBlZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoY3VyID4gMykge1xuICAgICAgICAgIHJlcyArPSBcIlxcbiAgXCIuY29uY2F0KGV4cGVjdGVkTGluZXNbaSAtIDJdKTtcbiAgICAgICAgICBwcmludGVkTGluZXMrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcyArPSBcIlxcbiAgXCIuY29uY2F0KGV4cGVjdGVkTGluZXNbaSAtIDFdKTtcbiAgICAgICAgcHJpbnRlZExpbmVzKys7XG4gICAgICB9IC8vIE1hcmsgdGhlIGN1cnJlbnQgbGluZSBhcyB0aGUgbGFzdCBkaXZlcmdpbmcgb25lLlxuXG5cbiAgICAgIGxhc3RQb3MgPSBpOyAvLyBBZGQgdGhlIGV4cGVjdGVkIGxpbmUgdG8gdGhlIGNhY2hlLlxuXG4gICAgICBvdGhlciArPSBcIlxcblwiLmNvbmNhdChyZWQsIFwiLVwiKS5jb25jYXQod2hpdGUsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWRMaW5lc1tpXSk7XG4gICAgICBwcmludGVkTGluZXMrKzsgLy8gT25seSBleHRyYSBhY3R1YWwgbGluZXMgZXhpc3RcbiAgICB9IGVsc2UgaWYgKGV4cGVjdGVkTGluZXMubGVuZ3RoIDwgaSArIDEpIHtcbiAgICAgIC8vIElmIHRoZSBsYXN0IGRpdmVyZ2luZyBsaW5lIGlzIG1vcmUgdGhhbiBvbmUgbGluZSBhYm92ZSBhbmQgdGhlXG4gICAgICAvLyBjdXJyZW50IGxpbmUgaXMgYXQgbGVhc3QgbGluZSB0aHJlZSwgYWRkIHNvbWUgb2YgdGhlIGZvcm1lciBsaW5lcyBhbmRcbiAgICAgIC8vIGFsc28gYWRkIGRvdHMgdG8gaW5kaWNhdGUgc2tpcHBlZCBlbnRyaWVzLlxuICAgICAgaWYgKGN1ciA+IDEgJiYgaSA+IDIpIHtcbiAgICAgICAgaWYgKGN1ciA+IDQpIHtcbiAgICAgICAgICByZXMgKz0gXCJcXG5cIi5jb25jYXQoYmx1ZSwgXCIuLi5cIikuY29uY2F0KHdoaXRlKTtcbiAgICAgICAgICBza2lwcGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXIgPiAzKSB7XG4gICAgICAgICAgcmVzICs9IFwiXFxuICBcIi5jb25jYXQoYWN0dWFsTGluZXNbaSAtIDJdKTtcbiAgICAgICAgICBwcmludGVkTGluZXMrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcyArPSBcIlxcbiAgXCIuY29uY2F0KGFjdHVhbExpbmVzW2kgLSAxXSk7XG4gICAgICAgIHByaW50ZWRMaW5lcysrO1xuICAgICAgfSAvLyBNYXJrIHRoZSBjdXJyZW50IGxpbmUgYXMgdGhlIGxhc3QgZGl2ZXJnaW5nIG9uZS5cblxuXG4gICAgICBsYXN0UG9zID0gaTsgLy8gQWRkIHRoZSBhY3R1YWwgbGluZSB0byB0aGUgcmVzdWx0LlxuXG4gICAgICByZXMgKz0gXCJcXG5cIi5jb25jYXQoZ3JlZW4sIFwiK1wiKS5jb25jYXQod2hpdGUsIFwiIFwiKS5jb25jYXQoYWN0dWFsTGluZXNbaV0pO1xuICAgICAgcHJpbnRlZExpbmVzKys7IC8vIExpbmVzIGRpdmVyZ2VcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGV4cGVjdGVkTGluZSA9IGV4cGVjdGVkTGluZXNbaV07XG4gICAgICB2YXIgYWN0dWFsTGluZSA9IGFjdHVhbExpbmVzW2ldOyAvLyBJZiB0aGUgbGluZXMgZGl2ZXJnZSwgc3BlY2lmaWNhbGx5IGNoZWNrIGZvciBsaW5lcyB0aGF0IG9ubHkgZGl2ZXJnZSBieVxuICAgICAgLy8gYSB0cmFpbGluZyBjb21tYS4gSW4gdGhhdCBjYXNlIGl0IGlzIGFjdHVhbGx5IGlkZW50aWNhbCBhbmQgd2Ugc2hvdWxkXG4gICAgICAvLyBtYXJrIGl0IGFzIHN1Y2guXG5cbiAgICAgIHZhciBkaXZlcmdpbmdMaW5lcyA9IGFjdHVhbExpbmUgIT09IGV4cGVjdGVkTGluZSAmJiAoIWVuZHNXaXRoKGFjdHVhbExpbmUsICcsJykgfHwgYWN0dWFsTGluZS5zbGljZSgwLCAtMSkgIT09IGV4cGVjdGVkTGluZSk7IC8vIElmIHRoZSBleHBlY3RlZCBsaW5lIGhhcyBhIHRyYWlsaW5nIGNvbW1hIGJ1dCBpcyBvdGhlcndpc2UgaWRlbnRpY2FsLFxuICAgICAgLy8gYWRkIGEgY29tbWEgYXQgdGhlIGVuZCBvZiB0aGUgYWN0dWFsIGxpbmUuIE90aGVyd2lzZSB0aGUgb3V0cHV0IGNvdWxkXG4gICAgICAvLyBsb29rIHdlaXJkIGFzIGluOlxuICAgICAgLy9cbiAgICAgIC8vICAgW1xuICAgICAgLy8gICAgIDEgICAgICAgICAvLyBObyBjb21tYSBhdCB0aGUgZW5kIVxuICAgICAgLy8gKyAgIDJcbiAgICAgIC8vICAgXVxuICAgICAgLy9cblxuICAgICAgaWYgKGRpdmVyZ2luZ0xpbmVzICYmIGVuZHNXaXRoKGV4cGVjdGVkTGluZSwgJywnKSAmJiBleHBlY3RlZExpbmUuc2xpY2UoMCwgLTEpID09PSBhY3R1YWxMaW5lKSB7XG4gICAgICAgIGRpdmVyZ2luZ0xpbmVzID0gZmFsc2U7XG4gICAgICAgIGFjdHVhbExpbmUgKz0gJywnO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGl2ZXJnaW5nTGluZXMpIHtcbiAgICAgICAgLy8gSWYgdGhlIGxhc3QgZGl2ZXJnaW5nIGxpbmUgaXMgbW9yZSB0aGFuIG9uZSBsaW5lIGFib3ZlIGFuZCB0aGVcbiAgICAgICAgLy8gY3VycmVudCBsaW5lIGlzIGF0IGxlYXN0IGxpbmUgdGhyZWUsIGFkZCBzb21lIG9mIHRoZSBmb3JtZXIgbGluZXMgYW5kXG4gICAgICAgIC8vIGFsc28gYWRkIGRvdHMgdG8gaW5kaWNhdGUgc2tpcHBlZCBlbnRyaWVzLlxuICAgICAgICBpZiAoY3VyID4gMSAmJiBpID4gMikge1xuICAgICAgICAgIGlmIChjdXIgPiA0KSB7XG4gICAgICAgICAgICByZXMgKz0gXCJcXG5cIi5jb25jYXQoYmx1ZSwgXCIuLi5cIikuY29uY2F0KHdoaXRlKTtcbiAgICAgICAgICAgIHNraXBwZWQgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY3VyID4gMykge1xuICAgICAgICAgICAgcmVzICs9IFwiXFxuICBcIi5jb25jYXQoYWN0dWFsTGluZXNbaSAtIDJdKTtcbiAgICAgICAgICAgIHByaW50ZWRMaW5lcysrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlcyArPSBcIlxcbiAgXCIuY29uY2F0KGFjdHVhbExpbmVzW2kgLSAxXSk7XG4gICAgICAgICAgcHJpbnRlZExpbmVzKys7XG4gICAgICAgIH0gLy8gTWFyayB0aGUgY3VycmVudCBsaW5lIGFzIHRoZSBsYXN0IGRpdmVyZ2luZyBvbmUuXG5cblxuICAgICAgICBsYXN0UG9zID0gaTsgLy8gQWRkIHRoZSBhY3R1YWwgbGluZSB0byB0aGUgcmVzdWx0IGFuZCBjYWNoZSB0aGUgZXhwZWN0ZWQgZGl2ZXJnaW5nXG4gICAgICAgIC8vIGxpbmUgc28gY29uc2VjdXRpdmUgZGl2ZXJnaW5nIGxpbmVzIHNob3cgdXAgYXMgKysrLS0tIGFuZCBub3QgKy0rLSstLlxuXG4gICAgICAgIHJlcyArPSBcIlxcblwiLmNvbmNhdChncmVlbiwgXCIrXCIpLmNvbmNhdCh3aGl0ZSwgXCIgXCIpLmNvbmNhdChhY3R1YWxMaW5lKTtcbiAgICAgICAgb3RoZXIgKz0gXCJcXG5cIi5jb25jYXQocmVkLCBcIi1cIikuY29uY2F0KHdoaXRlLCBcIiBcIikuY29uY2F0KGV4cGVjdGVkTGluZSk7XG4gICAgICAgIHByaW50ZWRMaW5lcyArPSAyOyAvLyBMaW5lcyBhcmUgaWRlbnRpY2FsXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBZGQgYWxsIGNhY2hlZCBpbmZvcm1hdGlvbiB0byB0aGUgcmVzdWx0IGJlZm9yZSBhZGRpbmcgb3RoZXIgdGhpbmdzXG4gICAgICAgIC8vIGFuZCByZXNldCB0aGUgY2FjaGUuXG4gICAgICAgIHJlcyArPSBvdGhlcjtcbiAgICAgICAgb3RoZXIgPSAnJzsgLy8gSWYgdGhlIGxhc3QgZGl2ZXJnaW5nIGxpbmUgaXMgZXhhY3RseSBvbmUgbGluZSBhYm92ZSBvciBpZiBpdCBpcyB0aGVcbiAgICAgICAgLy8gdmVyeSBmaXJzdCBsaW5lLCBhZGQgdGhlIGxpbmUgdG8gdGhlIHJlc3VsdC5cblxuICAgICAgICBpZiAoY3VyID09PSAxIHx8IGkgPT09IDApIHtcbiAgICAgICAgICByZXMgKz0gXCJcXG4gIFwiLmNvbmNhdChhY3R1YWxMaW5lKTtcbiAgICAgICAgICBwcmludGVkTGluZXMrKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gLy8gSW5zcGVjdGVkIG9iamVjdCB0byBiaWcgKFNob3cgfjIwIHJvd3MgbWF4KVxuXG5cbiAgICBpZiAocHJpbnRlZExpbmVzID4gMjAgJiYgaSA8IG1heExpbmVzIC0gMikge1xuICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KG1zZykuY29uY2F0KHNraXBwZWRNc2csIFwiXFxuXCIpLmNvbmNhdChyZXMsIFwiXFxuXCIpLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUpLmNvbmNhdChvdGhlciwgXCJcXG5cIikgKyBcIlwiLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBcIlwiLmNvbmNhdChtc2cpLmNvbmNhdChza2lwcGVkID8gc2tpcHBlZE1zZyA6ICcnLCBcIlxcblwiKS5jb25jYXQocmVzKS5jb25jYXQob3RoZXIpLmNvbmNhdChlbmQpLmNvbmNhdChpbmRpY2F0b3IpO1xufVxuXG52YXIgQXNzZXJ0aW9uRXJyb3IgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKF9FcnJvcikge1xuICBfaW5oZXJpdHMoQXNzZXJ0aW9uRXJyb3IsIF9FcnJvcik7XG5cbiAgZnVuY3Rpb24gQXNzZXJ0aW9uRXJyb3Iob3B0aW9ucykge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBc3NlcnRpb25FcnJvcik7XG5cbiAgICBpZiAoX3R5cGVvZihvcHRpb25zKSAhPT0gJ29iamVjdCcgfHwgb3B0aW9ucyA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdvcHRpb25zJywgJ09iamVjdCcsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHZhciBtZXNzYWdlID0gb3B0aW9ucy5tZXNzYWdlLFxuICAgICAgICBvcGVyYXRvciA9IG9wdGlvbnMub3BlcmF0b3IsXG4gICAgICAgIHN0YWNrU3RhcnRGbiA9IG9wdGlvbnMuc3RhY2tTdGFydEZuO1xuICAgIHZhciBhY3R1YWwgPSBvcHRpb25zLmFjdHVhbCxcbiAgICAgICAgZXhwZWN0ZWQgPSBvcHRpb25zLmV4cGVjdGVkO1xuICAgIHZhciBsaW1pdCA9IEVycm9yLnN0YWNrVHJhY2VMaW1pdDtcbiAgICBFcnJvci5zdGFja1RyYWNlTGltaXQgPSAwO1xuXG4gICAgaWYgKG1lc3NhZ2UgIT0gbnVsbCkge1xuICAgICAgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoQXNzZXJ0aW9uRXJyb3IpLmNhbGwodGhpcywgU3RyaW5nKG1lc3NhZ2UpKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9jZXNzLnN0ZGVyciAmJiBwcm9jZXNzLnN0ZGVyci5pc1RUWSkge1xuICAgICAgICAvLyBSZXNldCBvbiBlYWNoIGNhbGwgdG8gbWFrZSBzdXJlIHdlIGhhbmRsZSBkeW5hbWljYWxseSBzZXQgZW52aXJvbm1lbnRcbiAgICAgICAgLy8gdmFyaWFibGVzIGNvcnJlY3QuXG4gICAgICAgIGlmIChwcm9jZXNzLnN0ZGVyciAmJiBwcm9jZXNzLnN0ZGVyci5nZXRDb2xvckRlcHRoICYmIHByb2Nlc3Muc3RkZXJyLmdldENvbG9yRGVwdGgoKSAhPT0gMSkge1xuICAgICAgICAgIGJsdWUgPSBcIlxceDFCWzM0bVwiO1xuICAgICAgICAgIGdyZWVuID0gXCJcXHgxQlszMm1cIjtcbiAgICAgICAgICB3aGl0ZSA9IFwiXFx4MUJbMzltXCI7XG4gICAgICAgICAgcmVkID0gXCJcXHgxQlszMW1cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBibHVlID0gJyc7XG4gICAgICAgICAgZ3JlZW4gPSAnJztcbiAgICAgICAgICB3aGl0ZSA9ICcnO1xuICAgICAgICAgIHJlZCA9ICcnO1xuICAgICAgICB9XG4gICAgICB9IC8vIFByZXZlbnQgdGhlIGVycm9yIHN0YWNrIGZyb20gYmVpbmcgdmlzaWJsZSBieSBkdXBsaWNhdGluZyB0aGUgZXJyb3JcbiAgICAgIC8vIGluIGEgdmVyeSBjbG9zZSB3YXkgdG8gdGhlIG9yaWdpbmFsIGluIGNhc2UgYm90aCBzaWRlcyBhcmUgYWN0dWFsbHlcbiAgICAgIC8vIGluc3RhbmNlcyBvZiBFcnJvci5cblxuXG4gICAgICBpZiAoX3R5cGVvZihhY3R1YWwpID09PSAnb2JqZWN0JyAmJiBhY3R1YWwgIT09IG51bGwgJiYgX3R5cGVvZihleHBlY3RlZCkgPT09ICdvYmplY3QnICYmIGV4cGVjdGVkICE9PSBudWxsICYmICdzdGFjaycgaW4gYWN0dWFsICYmIGFjdHVhbCBpbnN0YW5jZW9mIEVycm9yICYmICdzdGFjaycgaW4gZXhwZWN0ZWQgJiYgZXhwZWN0ZWQgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICBhY3R1YWwgPSBjb3B5RXJyb3IoYWN0dWFsKTtcbiAgICAgICAgZXhwZWN0ZWQgPSBjb3B5RXJyb3IoZXhwZWN0ZWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3BlcmF0b3IgPT09ICdkZWVwU3RyaWN0RXF1YWwnIHx8IG9wZXJhdG9yID09PSAnc3RyaWN0RXF1YWwnKSB7XG4gICAgICAgIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX2dldFByb3RvdHlwZU9mKEFzc2VydGlvbkVycm9yKS5jYWxsKHRoaXMsIGNyZWF0ZUVyckRpZmYoYWN0dWFsLCBleHBlY3RlZCwgb3BlcmF0b3IpKSk7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdG9yID09PSAnbm90RGVlcFN0cmljdEVxdWFsJyB8fCBvcGVyYXRvciA9PT0gJ25vdFN0cmljdEVxdWFsJykge1xuICAgICAgICAvLyBJbiBjYXNlIHRoZSBvYmplY3RzIGFyZSBlcXVhbCBidXQgdGhlIG9wZXJhdG9yIHJlcXVpcmVzIHVuZXF1YWwsIHNob3dcbiAgICAgICAgLy8gdGhlIGZpcnN0IG9iamVjdCBhbmQgc2F5IEEgZXF1YWxzIEJcbiAgICAgICAgdmFyIGJhc2UgPSBrUmVhZGFibGVPcGVyYXRvcltvcGVyYXRvcl07XG4gICAgICAgIHZhciByZXMgPSBpbnNwZWN0VmFsdWUoYWN0dWFsKS5zcGxpdCgnXFxuJyk7IC8vIEluIGNhc2UgXCJhY3R1YWxcIiBpcyBhbiBvYmplY3QsIGl0IHNob3VsZCBub3QgYmUgcmVmZXJlbmNlIGVxdWFsLlxuXG4gICAgICAgIGlmIChvcGVyYXRvciA9PT0gJ25vdFN0cmljdEVxdWFsJyAmJiBfdHlwZW9mKGFjdHVhbCkgPT09ICdvYmplY3QnICYmIGFjdHVhbCAhPT0gbnVsbCkge1xuICAgICAgICAgIGJhc2UgPSBrUmVhZGFibGVPcGVyYXRvci5ub3RTdHJpY3RFcXVhbE9iamVjdDtcbiAgICAgICAgfSAvLyBPbmx5IHJlbW92ZSBsaW5lcyBpbiBjYXNlIGl0IG1ha2VzIHNlbnNlIHRvIGNvbGxhcHNlIHRob3NlLlxuICAgICAgICAvLyBUT0RPOiBBY2NlcHQgZW52IHRvIGFsd2F5cyBzaG93IHRoZSBmdWxsIGVycm9yLlxuXG5cbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPiAzMCkge1xuICAgICAgICAgIHJlc1syNl0gPSBcIlwiLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUpO1xuXG4gICAgICAgICAgd2hpbGUgKHJlcy5sZW5ndGggPiAyNykge1xuICAgICAgICAgICAgcmVzLnBvcCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBPbmx5IHByaW50IGEgc2luZ2xlIGlucHV0LlxuXG5cbiAgICAgICAgaWYgKHJlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihBc3NlcnRpb25FcnJvcikuY2FsbCh0aGlzLCBcIlwiLmNvbmNhdChiYXNlLCBcIiBcIikuY29uY2F0KHJlc1swXSkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihBc3NlcnRpb25FcnJvcikuY2FsbCh0aGlzLCBcIlwiLmNvbmNhdChiYXNlLCBcIlxcblxcblwiKS5jb25jYXQocmVzLmpvaW4oJ1xcbicpLCBcIlxcblwiKSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgX3JlcyA9IGluc3BlY3RWYWx1ZShhY3R1YWwpO1xuXG4gICAgICAgIHZhciBvdGhlciA9ICcnO1xuICAgICAgICB2YXIga25vd25PcGVyYXRvcnMgPSBrUmVhZGFibGVPcGVyYXRvcltvcGVyYXRvcl07XG5cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSAnbm90RGVlcEVxdWFsJyB8fCBvcGVyYXRvciA9PT0gJ25vdEVxdWFsJykge1xuICAgICAgICAgIF9yZXMgPSBcIlwiLmNvbmNhdChrUmVhZGFibGVPcGVyYXRvcltvcGVyYXRvcl0sIFwiXFxuXFxuXCIpLmNvbmNhdChfcmVzKTtcblxuICAgICAgICAgIGlmIChfcmVzLmxlbmd0aCA+IDEwMjQpIHtcbiAgICAgICAgICAgIF9yZXMgPSBcIlwiLmNvbmNhdChfcmVzLnNsaWNlKDAsIDEwMjEpLCBcIi4uLlwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3RoZXIgPSBcIlwiLmNvbmNhdChpbnNwZWN0VmFsdWUoZXhwZWN0ZWQpKTtcblxuICAgICAgICAgIGlmIChfcmVzLmxlbmd0aCA+IDUxMikge1xuICAgICAgICAgICAgX3JlcyA9IFwiXCIuY29uY2F0KF9yZXMuc2xpY2UoMCwgNTA5KSwgXCIuLi5cIik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKG90aGVyLmxlbmd0aCA+IDUxMikge1xuICAgICAgICAgICAgb3RoZXIgPSBcIlwiLmNvbmNhdChvdGhlci5zbGljZSgwLCA1MDkpLCBcIi4uLlwiKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob3BlcmF0b3IgPT09ICdkZWVwRXF1YWwnIHx8IG9wZXJhdG9yID09PSAnZXF1YWwnKSB7XG4gICAgICAgICAgICBfcmVzID0gXCJcIi5jb25jYXQoa25vd25PcGVyYXRvcnMsIFwiXFxuXFxuXCIpLmNvbmNhdChfcmVzLCBcIlxcblxcbnNob3VsZCBlcXVhbFxcblxcblwiKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3RoZXIgPSBcIiBcIi5jb25jYXQob3BlcmF0b3IsIFwiIFwiKS5jb25jYXQob3RoZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX2dldFByb3RvdHlwZU9mKEFzc2VydGlvbkVycm9yKS5jYWxsKHRoaXMsIFwiXCIuY29uY2F0KF9yZXMpLmNvbmNhdChvdGhlcikpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBFcnJvci5zdGFja1RyYWNlTGltaXQgPSBsaW1pdDtcbiAgICBfdGhpcy5nZW5lcmF0ZWRNZXNzYWdlID0gIW1lc3NhZ2U7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCAnbmFtZScsIHtcbiAgICAgIHZhbHVlOiAnQXNzZXJ0aW9uRXJyb3IgW0VSUl9BU1NFUlRJT05dJyxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBfdGhpcy5jb2RlID0gJ0VSUl9BU1NFUlRJT04nO1xuICAgIF90aGlzLmFjdHVhbCA9IGFjdHVhbDtcbiAgICBfdGhpcy5leHBlY3RlZCA9IGV4cGVjdGVkO1xuICAgIF90aGlzLm9wZXJhdG9yID0gb3BlcmF0b3I7XG5cbiAgICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIHN0YWNrU3RhcnRGbik7XG4gICAgfSAvLyBDcmVhdGUgZXJyb3IgbWVzc2FnZSBpbmNsdWRpbmcgdGhlIGVycm9yIGNvZGUgaW4gdGhlIG5hbWUuXG5cblxuICAgIF90aGlzLnN0YWNrOyAvLyBSZXNldCB0aGUgbmFtZS5cblxuICAgIF90aGlzLm5hbWUgPSAnQXNzZXJ0aW9uRXJyb3InO1xuICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihfdGhpcyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQXNzZXJ0aW9uRXJyb3IsIFt7XG4gICAga2V5OiBcInRvU3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHRoaXMubmFtZSwgXCIgW1wiKS5jb25jYXQodGhpcy5jb2RlLCBcIl06IFwiKS5jb25jYXQodGhpcy5tZXNzYWdlKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IGluc3BlY3QuY3VzdG9tLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShyZWN1cnNlVGltZXMsIGN0eCkge1xuICAgICAgLy8gVGhpcyBsaW1pdHMgdGhlIGBhY3R1YWxgIGFuZCBgZXhwZWN0ZWRgIHByb3BlcnR5IGRlZmF1bHQgaW5zcGVjdGlvbiB0b1xuICAgICAgLy8gdGhlIG1pbmltdW0gZGVwdGguIE90aGVyd2lzZSB0aG9zZSB2YWx1ZXMgd291bGQgYmUgdG9vIHZlcmJvc2UgY29tcGFyZWRcbiAgICAgIC8vIHRvIHRoZSBhY3R1YWwgZXJyb3IgbWVzc2FnZSB3aGljaCBjb250YWlucyBhIGNvbWJpbmVkIHZpZXcgb2YgdGhlc2UgdHdvXG4gICAgICAvLyBpbnB1dCB2YWx1ZXMuXG4gICAgICByZXR1cm4gaW5zcGVjdCh0aGlzLCBfb2JqZWN0U3ByZWFkKHt9LCBjdHgsIHtcbiAgICAgICAgY3VzdG9tSW5zcGVjdDogZmFsc2UsXG4gICAgICAgIGRlcHRoOiAwXG4gICAgICB9KSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEFzc2VydGlvbkVycm9yO1xufShfd3JhcE5hdGl2ZVN1cGVyKEVycm9yKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gQXNzZXJ0aW9uRXJyb3I7IiwiLy8gQ3VycmVudGx5IGluIHN5bmMgd2l0aCBOb2RlLmpzIGxpYi9pbnRlcm5hbC9lcnJvcnMuanNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9jb21taXQvM2IwNDQ5NjJjNDhmZTMxMzkwNTg3N2E5NmI1ZDA4OTRhNTQwNGY2ZlxuXG4vKiBlc2xpbnQgbm9kZS1jb3JlL2RvY3VtZW50ZWQtZXJyb3JzOiBcImVycm9yXCIgKi9cblxuLyogZXNsaW50IG5vZGUtY29yZS9hbHBoYWJldGl6ZS1lcnJvcnM6IFwiZXJyb3JcIiAqL1xuXG4vKiBlc2xpbnQgbm9kZS1jb3JlL3ByZWZlci11dGlsLWZvcm1hdC1lcnJvcnM6IFwiZXJyb3JcIiAqL1xuJ3VzZSBzdHJpY3QnOyAvLyBUaGUgd2hvbGUgcG9pbnQgYmVoaW5kIHRoaXMgaW50ZXJuYWwgbW9kdWxlIGlzIHRvIGFsbG93IE5vZGUuanMgdG8gbm9cbi8vIGxvbmdlciBiZSBmb3JjZWQgdG8gdHJlYXQgZXZlcnkgZXJyb3IgbWVzc2FnZSBjaGFuZ2UgYXMgYSBzZW12ZXItbWFqb3Jcbi8vIGNoYW5nZS4gVGhlIE5vZGVFcnJvciBjbGFzc2VzIGhlcmUgYWxsIGV4cG9zZSBhIGBjb2RlYCBwcm9wZXJ0eSB3aG9zZVxuLy8gdmFsdWUgc3RhdGljYWxseSBhbmQgcGVybWFuZW50bHkgaWRlbnRpZmllcyB0aGUgZXJyb3IuIFdoaWxlIHRoZSBlcnJvclxuLy8gbWVzc2FnZSBtYXkgY2hhbmdlLCB0aGUgY29kZSBzaG91bGQgbm90LlxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmIChjYWxsICYmIChfdHlwZW9mKGNhbGwpID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpKSB7IHJldHVybiBjYWxsOyB9IHJldHVybiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpOyB9XG5cbmZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZikgeyBpZiAoc2VsZiA9PT0gdm9pZCAwKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gc2VsZjsgfVxuXG5mdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyBfZ2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3QuZ2V0UHJvdG90eXBlT2YgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YobykgeyByZXR1cm4gby5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKG8pOyB9OyByZXR1cm4gX2dldFByb3RvdHlwZU9mKG8pOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbnZhciBjb2RlcyA9IHt9OyAvLyBMYXp5IGxvYWRlZFxuXG52YXIgYXNzZXJ0O1xudmFyIHV0aWw7XG5cbmZ1bmN0aW9uIGNyZWF0ZUVycm9yVHlwZShjb2RlLCBtZXNzYWdlLCBCYXNlKSB7XG4gIGlmICghQmFzZSkge1xuICAgIEJhc2UgPSBFcnJvcjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE1lc3NhZ2UoYXJnMSwgYXJnMiwgYXJnMykge1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbWVzc2FnZShhcmcxLCBhcmcyLCBhcmczKTtcbiAgICB9XG4gIH1cblxuICB2YXIgTm9kZUVycm9yID1cbiAgLyojX19QVVJFX18qL1xuICBmdW5jdGlvbiAoX0Jhc2UpIHtcbiAgICBfaW5oZXJpdHMoTm9kZUVycm9yLCBfQmFzZSk7XG5cbiAgICBmdW5jdGlvbiBOb2RlRXJyb3IoYXJnMSwgYXJnMiwgYXJnMykge1xuICAgICAgdmFyIF90aGlzO1xuXG4gICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTm9kZUVycm9yKTtcblxuICAgICAgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoTm9kZUVycm9yKS5jYWxsKHRoaXMsIGdldE1lc3NhZ2UoYXJnMSwgYXJnMiwgYXJnMykpKTtcbiAgICAgIF90aGlzLmNvZGUgPSBjb2RlO1xuICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cblxuICAgIHJldHVybiBOb2RlRXJyb3I7XG4gIH0oQmFzZSk7XG5cbiAgY29kZXNbY29kZV0gPSBOb2RlRXJyb3I7XG59IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL3YxMC44LjAvbGliL2ludGVybmFsL2Vycm9ycy5qc1xuXG5cbmZ1bmN0aW9uIG9uZU9mKGV4cGVjdGVkLCB0aGluZykge1xuICBpZiAoQXJyYXkuaXNBcnJheShleHBlY3RlZCkpIHtcbiAgICB2YXIgbGVuID0gZXhwZWN0ZWQubGVuZ3RoO1xuICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQubWFwKGZ1bmN0aW9uIChpKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKGkpO1xuICAgIH0pO1xuXG4gICAgaWYgKGxlbiA+IDIpIHtcbiAgICAgIHJldHVybiBcIm9uZSBvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWQuc2xpY2UoMCwgbGVuIC0gMSkuam9pbignLCAnKSwgXCIsIG9yIFwiKSArIGV4cGVjdGVkW2xlbiAtIDFdO1xuICAgIH0gZWxzZSBpZiAobGVuID09PSAyKSB7XG4gICAgICByZXR1cm4gXCJvbmUgb2YgXCIuY29uY2F0KHRoaW5nLCBcIiBcIikuY29uY2F0KGV4cGVjdGVkWzBdLCBcIiBvciBcIikuY29uY2F0KGV4cGVjdGVkWzFdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwib2YgXCIuY29uY2F0KHRoaW5nLCBcIiBcIikuY29uY2F0KGV4cGVjdGVkWzBdKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFwib2YgXCIuY29uY2F0KHRoaW5nLCBcIiBcIikuY29uY2F0KFN0cmluZyhleHBlY3RlZCkpO1xuICB9XG59IC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9zdGFydHNXaXRoXG5cblxuZnVuY3Rpb24gc3RhcnRzV2l0aChzdHIsIHNlYXJjaCwgcG9zKSB7XG4gIHJldHVybiBzdHIuc3Vic3RyKCFwb3MgfHwgcG9zIDwgMCA/IDAgOiArcG9zLCBzZWFyY2gubGVuZ3RoKSA9PT0gc2VhcmNoO1xufSAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvZW5kc1dpdGhcblxuXG5mdW5jdGlvbiBlbmRzV2l0aChzdHIsIHNlYXJjaCwgdGhpc19sZW4pIHtcbiAgaWYgKHRoaXNfbGVuID09PSB1bmRlZmluZWQgfHwgdGhpc19sZW4gPiBzdHIubGVuZ3RoKSB7XG4gICAgdGhpc19sZW4gPSBzdHIubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIHN0ci5zdWJzdHJpbmcodGhpc19sZW4gLSBzZWFyY2gubGVuZ3RoLCB0aGlzX2xlbikgPT09IHNlYXJjaDtcbn0gLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nL2luY2x1ZGVzXG5cblxuZnVuY3Rpb24gaW5jbHVkZXMoc3RyLCBzZWFyY2gsIHN0YXJ0KSB7XG4gIGlmICh0eXBlb2Ygc3RhcnQgIT09ICdudW1iZXInKSB7XG4gICAgc3RhcnQgPSAwO1xuICB9XG5cbiAgaWYgKHN0YXJ0ICsgc2VhcmNoLmxlbmd0aCA+IHN0ci5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0ci5pbmRleE9mKHNlYXJjaCwgc3RhcnQpICE9PSAtMTtcbiAgfVxufVxuXG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9BTUJJR1VPVVNfQVJHVU1FTlQnLCAnVGhlIFwiJXNcIiBhcmd1bWVudCBpcyBhbWJpZ3VvdXMuICVzJywgVHlwZUVycm9yKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX0lOVkFMSURfQVJHX1RZUEUnLCBmdW5jdGlvbiAobmFtZSwgZXhwZWN0ZWQsIGFjdHVhbCkge1xuICBpZiAoYXNzZXJ0ID09PSB1bmRlZmluZWQpIGFzc2VydCA9IHJlcXVpcmUoJy4uL2Fzc2VydCcpO1xuICBhc3NlcnQodHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnLCBcIiduYW1lJyBtdXN0IGJlIGEgc3RyaW5nXCIpOyAvLyBkZXRlcm1pbmVyOiAnbXVzdCBiZScgb3IgJ211c3Qgbm90IGJlJ1xuXG4gIHZhciBkZXRlcm1pbmVyO1xuXG4gIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT09ICdzdHJpbmcnICYmIHN0YXJ0c1dpdGgoZXhwZWN0ZWQsICdub3QgJykpIHtcbiAgICBkZXRlcm1pbmVyID0gJ211c3Qgbm90IGJlJztcbiAgICBleHBlY3RlZCA9IGV4cGVjdGVkLnJlcGxhY2UoL15ub3QgLywgJycpO1xuICB9IGVsc2Uge1xuICAgIGRldGVybWluZXIgPSAnbXVzdCBiZSc7XG4gIH1cblxuICB2YXIgbXNnO1xuXG4gIGlmIChlbmRzV2l0aChuYW1lLCAnIGFyZ3VtZW50JykpIHtcbiAgICAvLyBGb3IgY2FzZXMgbGlrZSAnZmlyc3QgYXJndW1lbnQnXG4gICAgbXNnID0gXCJUaGUgXCIuY29uY2F0KG5hbWUsIFwiIFwiKS5jb25jYXQoZGV0ZXJtaW5lciwgXCIgXCIpLmNvbmNhdChvbmVPZihleHBlY3RlZCwgJ3R5cGUnKSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHR5cGUgPSBpbmNsdWRlcyhuYW1lLCAnLicpID8gJ3Byb3BlcnR5JyA6ICdhcmd1bWVudCc7XG4gICAgbXNnID0gXCJUaGUgXFxcIlwiLmNvbmNhdChuYW1lLCBcIlxcXCIgXCIpLmNvbmNhdCh0eXBlLCBcIiBcIikuY29uY2F0KGRldGVybWluZXIsIFwiIFwiKS5jb25jYXQob25lT2YoZXhwZWN0ZWQsICd0eXBlJykpO1xuICB9IC8vIFRPRE8oQnJpZGdlQVIpOiBJbXByb3ZlIHRoZSBvdXRwdXQgYnkgc2hvd2luZyBgbnVsbGAgYW5kIHNpbWlsYXIuXG5cblxuICBtc2cgKz0gXCIuIFJlY2VpdmVkIHR5cGUgXCIuY29uY2F0KF90eXBlb2YoYWN0dWFsKSk7XG4gIHJldHVybiBtc2c7XG59LCBUeXBlRXJyb3IpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfSU5WQUxJRF9BUkdfVkFMVUUnLCBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgdmFyIHJlYXNvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogJ2lzIGludmFsaWQnO1xuICBpZiAodXRpbCA9PT0gdW5kZWZpbmVkKSB1dGlsID0gcmVxdWlyZSgndXRpbC8nKTtcbiAgdmFyIGluc3BlY3RlZCA9IHV0aWwuaW5zcGVjdCh2YWx1ZSk7XG5cbiAgaWYgKGluc3BlY3RlZC5sZW5ndGggPiAxMjgpIHtcbiAgICBpbnNwZWN0ZWQgPSBcIlwiLmNvbmNhdChpbnNwZWN0ZWQuc2xpY2UoMCwgMTI4KSwgXCIuLi5cIik7XG4gIH1cblxuICByZXR1cm4gXCJUaGUgYXJndW1lbnQgJ1wiLmNvbmNhdChuYW1lLCBcIicgXCIpLmNvbmNhdChyZWFzb24sIFwiLiBSZWNlaXZlZCBcIikuY29uY2F0KGluc3BlY3RlZCk7XG59LCBUeXBlRXJyb3IsIFJhbmdlRXJyb3IpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUnLCBmdW5jdGlvbiAoaW5wdXQsIG5hbWUsIHZhbHVlKSB7XG4gIHZhciB0eXBlO1xuXG4gIGlmICh2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvciAmJiB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lKSB7XG4gICAgdHlwZSA9IFwiaW5zdGFuY2Ugb2YgXCIuY29uY2F0KHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUpO1xuICB9IGVsc2Uge1xuICAgIHR5cGUgPSBcInR5cGUgXCIuY29uY2F0KF90eXBlb2YodmFsdWUpKTtcbiAgfVxuXG4gIHJldHVybiBcIkV4cGVjdGVkIFwiLmNvbmNhdChpbnB1dCwgXCIgdG8gYmUgcmV0dXJuZWQgZnJvbSB0aGUgXFxcIlwiKS5jb25jYXQobmFtZSwgXCJcXFwiXCIpICsgXCIgZnVuY3Rpb24gYnV0IGdvdCBcIi5jb25jYXQodHlwZSwgXCIuXCIpO1xufSwgVHlwZUVycm9yKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX01JU1NJTkdfQVJHUycsIGZ1bmN0aW9uICgpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIGlmIChhc3NlcnQgPT09IHVuZGVmaW5lZCkgYXNzZXJ0ID0gcmVxdWlyZSgnLi4vYXNzZXJ0Jyk7XG4gIGFzc2VydChhcmdzLmxlbmd0aCA+IDAsICdBdCBsZWFzdCBvbmUgYXJnIG5lZWRzIHRvIGJlIHNwZWNpZmllZCcpO1xuICB2YXIgbXNnID0gJ1RoZSAnO1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIGFyZ3MgPSBhcmdzLm1hcChmdW5jdGlvbiAoYSkge1xuICAgIHJldHVybiBcIlxcXCJcIi5jb25jYXQoYSwgXCJcXFwiXCIpO1xuICB9KTtcblxuICBzd2l0Y2ggKGxlbikge1xuICAgIGNhc2UgMTpcbiAgICAgIG1zZyArPSBcIlwiLmNvbmNhdChhcmdzWzBdLCBcIiBhcmd1bWVudFwiKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAyOlxuICAgICAgbXNnICs9IFwiXCIuY29uY2F0KGFyZ3NbMF0sIFwiIGFuZCBcIikuY29uY2F0KGFyZ3NbMV0sIFwiIGFyZ3VtZW50c1wiKTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIG1zZyArPSBhcmdzLnNsaWNlKDAsIGxlbiAtIDEpLmpvaW4oJywgJyk7XG4gICAgICBtc2cgKz0gXCIsIGFuZCBcIi5jb25jYXQoYXJnc1tsZW4gLSAxXSwgXCIgYXJndW1lbnRzXCIpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gXCJcIi5jb25jYXQobXNnLCBcIiBtdXN0IGJlIHNwZWNpZmllZFwiKTtcbn0sIFR5cGVFcnJvcik7XG5tb2R1bGUuZXhwb3J0cy5jb2RlcyA9IGNvZGVzOyIsIi8vIEN1cnJlbnRseSBpbiBzeW5jIHdpdGggTm9kZS5qcyBsaWIvaW50ZXJuYWwvdXRpbC9jb21wYXJpc29ucy5qc1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2NvbW1pdC8xMTJjYzdjMjc1NTEyNTRhYTJiMTcwOThmYjc3NDg2N2YwNWVkMGQ5XG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KGFyciwgaSkgeyByZXR1cm4gX2FycmF5V2l0aEhvbGVzKGFycikgfHwgX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgfHwgX25vbkl0ZXJhYmxlUmVzdCgpOyB9XG5cbmZ1bmN0aW9uIF9ub25JdGVyYWJsZVJlc3QoKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlXCIpOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5mdW5jdGlvbiBfdHlwZW9mKG9iaikgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9OyB9IGVsc2UgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07IH0gcmV0dXJuIF90eXBlb2Yob2JqKTsgfVxuXG52YXIgcmVnZXhGbGFnc1N1cHBvcnRlZCA9IC9hL2cuZmxhZ3MgIT09IHVuZGVmaW5lZDtcblxudmFyIGFycmF5RnJvbVNldCA9IGZ1bmN0aW9uIGFycmF5RnJvbVNldChzZXQpIHtcbiAgdmFyIGFycmF5ID0gW107XG4gIHNldC5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIHJldHVybiBhcnJheS5wdXNoKHZhbHVlKTtcbiAgfSk7XG4gIHJldHVybiBhcnJheTtcbn07XG5cbnZhciBhcnJheUZyb21NYXAgPSBmdW5jdGlvbiBhcnJheUZyb21NYXAobWFwKSB7XG4gIHZhciBhcnJheSA9IFtdO1xuICBtYXAuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIGtleSkge1xuICAgIHJldHVybiBhcnJheS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gIH0pO1xuICByZXR1cm4gYXJyYXk7XG59O1xuXG52YXIgb2JqZWN0SXMgPSBPYmplY3QuaXMgPyBPYmplY3QuaXMgOiByZXF1aXJlKCdvYmplY3QtaXMnKTtcbnZhciBvYmplY3RHZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID8gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA6IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFtdO1xufTtcbnZhciBudW1iZXJJc05hTiA9IE51bWJlci5pc05hTiA/IE51bWJlci5pc05hTiA6IHJlcXVpcmUoJ2lzLW5hbicpO1xuXG5mdW5jdGlvbiB1bmN1cnJ5VGhpcyhmKSB7XG4gIHJldHVybiBmLmNhbGwuYmluZChmKTtcbn1cblxudmFyIGhhc093blByb3BlcnR5ID0gdW5jdXJyeVRoaXMoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSB1bmN1cnJ5VGhpcyhPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlKTtcbnZhciBvYmplY3RUb1N0cmluZyA9IHVuY3VycnlUaGlzKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpO1xuXG52YXIgX3JlcXVpcmUkdHlwZXMgPSByZXF1aXJlKCd1dGlsLycpLnR5cGVzLFxuICAgIGlzQW55QXJyYXlCdWZmZXIgPSBfcmVxdWlyZSR0eXBlcy5pc0FueUFycmF5QnVmZmVyLFxuICAgIGlzQXJyYXlCdWZmZXJWaWV3ID0gX3JlcXVpcmUkdHlwZXMuaXNBcnJheUJ1ZmZlclZpZXcsXG4gICAgaXNEYXRlID0gX3JlcXVpcmUkdHlwZXMuaXNEYXRlLFxuICAgIGlzTWFwID0gX3JlcXVpcmUkdHlwZXMuaXNNYXAsXG4gICAgaXNSZWdFeHAgPSBfcmVxdWlyZSR0eXBlcy5pc1JlZ0V4cCxcbiAgICBpc1NldCA9IF9yZXF1aXJlJHR5cGVzLmlzU2V0LFxuICAgIGlzTmF0aXZlRXJyb3IgPSBfcmVxdWlyZSR0eXBlcy5pc05hdGl2ZUVycm9yLFxuICAgIGlzQm94ZWRQcmltaXRpdmUgPSBfcmVxdWlyZSR0eXBlcy5pc0JveGVkUHJpbWl0aXZlLFxuICAgIGlzTnVtYmVyT2JqZWN0ID0gX3JlcXVpcmUkdHlwZXMuaXNOdW1iZXJPYmplY3QsXG4gICAgaXNTdHJpbmdPYmplY3QgPSBfcmVxdWlyZSR0eXBlcy5pc1N0cmluZ09iamVjdCxcbiAgICBpc0Jvb2xlYW5PYmplY3QgPSBfcmVxdWlyZSR0eXBlcy5pc0Jvb2xlYW5PYmplY3QsXG4gICAgaXNCaWdJbnRPYmplY3QgPSBfcmVxdWlyZSR0eXBlcy5pc0JpZ0ludE9iamVjdCxcbiAgICBpc1N5bWJvbE9iamVjdCA9IF9yZXF1aXJlJHR5cGVzLmlzU3ltYm9sT2JqZWN0LFxuICAgIGlzRmxvYXQzMkFycmF5ID0gX3JlcXVpcmUkdHlwZXMuaXNGbG9hdDMyQXJyYXksXG4gICAgaXNGbG9hdDY0QXJyYXkgPSBfcmVxdWlyZSR0eXBlcy5pc0Zsb2F0NjRBcnJheTtcblxuZnVuY3Rpb24gaXNOb25JbmRleChrZXkpIHtcbiAgaWYgKGtleS5sZW5ndGggPT09IDAgfHwga2V5Lmxlbmd0aCA+IDEwKSByZXR1cm4gdHJ1ZTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjb2RlID0ga2V5LmNoYXJDb2RlQXQoaSk7XG4gICAgaWYgKGNvZGUgPCA0OCB8fCBjb2RlID4gNTcpIHJldHVybiB0cnVlO1xuICB9IC8vIFRoZSBtYXhpbXVtIHNpemUgZm9yIGFuIGFycmF5IGlzIDIgKiogMzIgLTEuXG5cblxuICByZXR1cm4ga2V5Lmxlbmd0aCA9PT0gMTAgJiYga2V5ID49IE1hdGgucG93KDIsIDMyKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3duTm9uSW5kZXhQcm9wZXJ0aWVzKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyh2YWx1ZSkuZmlsdGVyKGlzTm9uSW5kZXgpLmNvbmNhdChvYmplY3RHZXRPd25Qcm9wZXJ0eVN5bWJvbHModmFsdWUpLmZpbHRlcihPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmJpbmQodmFsdWUpKSk7XG59IC8vIFRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvYmxvYi82ODBlOWU1ZTQ4OGYyMmFhYzI3NTk5YTU3ZGM4NDRhNjMxNTkyOGRkL2luZGV4LmpzXG4vLyBvcmlnaW5hbCBub3RpY2U6XG5cbi8qIVxuICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGZlcm9zc0BmZXJvc3Mub3JnPiA8aHR0cDovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cblxuXG5mdW5jdGlvbiBjb21wYXJlKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHZhciB4ID0gYS5sZW5ndGg7XG4gIHZhciB5ID0gYi5sZW5ndGg7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IE1hdGgubWluKHgsIHkpOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkge1xuICAgICAgeCA9IGFbaV07XG4gICAgICB5ID0gYltpXTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIGlmICh5IDwgeCkge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgcmV0dXJuIDA7XG59XG5cbnZhciBPTkxZX0VOVU1FUkFCTEUgPSB1bmRlZmluZWQ7XG52YXIga1N0cmljdCA9IHRydWU7XG52YXIga0xvb3NlID0gZmFsc2U7XG52YXIga05vSXRlcmF0b3IgPSAwO1xudmFyIGtJc0FycmF5ID0gMTtcbnZhciBrSXNTZXQgPSAyO1xudmFyIGtJc01hcCA9IDM7IC8vIENoZWNrIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSBzb3VyY2UgYW5kIGZsYWdzXG5cbmZ1bmN0aW9uIGFyZVNpbWlsYXJSZWdFeHBzKGEsIGIpIHtcbiAgcmV0dXJuIHJlZ2V4RmxhZ3NTdXBwb3J0ZWQgPyBhLnNvdXJjZSA9PT0gYi5zb3VyY2UgJiYgYS5mbGFncyA9PT0gYi5mbGFncyA6IFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKSA9PT0gUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGIpO1xufVxuXG5mdW5jdGlvbiBhcmVTaW1pbGFyRmxvYXRBcnJheXMoYSwgYikge1xuICBpZiAoYS5ieXRlTGVuZ3RoICE9PSBiLmJ5dGVMZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKHZhciBvZmZzZXQgPSAwOyBvZmZzZXQgPCBhLmJ5dGVMZW5ndGg7IG9mZnNldCsrKSB7XG4gICAgaWYgKGFbb2Zmc2V0XSAhPT0gYltvZmZzZXRdKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGFyZVNpbWlsYXJUeXBlZEFycmF5cyhhLCBiKSB7XG4gIGlmIChhLmJ5dGVMZW5ndGggIT09IGIuYnl0ZUxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBjb21wYXJlKG5ldyBVaW50OEFycmF5KGEuYnVmZmVyLCBhLmJ5dGVPZmZzZXQsIGEuYnl0ZUxlbmd0aCksIG5ldyBVaW50OEFycmF5KGIuYnVmZmVyLCBiLmJ5dGVPZmZzZXQsIGIuYnl0ZUxlbmd0aCkpID09PSAwO1xufVxuXG5mdW5jdGlvbiBhcmVFcXVhbEFycmF5QnVmZmVycyhidWYxLCBidWYyKSB7XG4gIHJldHVybiBidWYxLmJ5dGVMZW5ndGggPT09IGJ1ZjIuYnl0ZUxlbmd0aCAmJiBjb21wYXJlKG5ldyBVaW50OEFycmF5KGJ1ZjEpLCBuZXcgVWludDhBcnJheShidWYyKSkgPT09IDA7XG59XG5cbmZ1bmN0aW9uIGlzRXF1YWxCb3hlZFByaW1pdGl2ZSh2YWwxLCB2YWwyKSB7XG4gIGlmIChpc051bWJlck9iamVjdCh2YWwxKSkge1xuICAgIHJldHVybiBpc051bWJlck9iamVjdCh2YWwyKSAmJiBvYmplY3RJcyhOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh2YWwxKSwgTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodmFsMikpO1xuICB9XG5cbiAgaWYgKGlzU3RyaW5nT2JqZWN0KHZhbDEpKSB7XG4gICAgcmV0dXJuIGlzU3RyaW5nT2JqZWN0KHZhbDIpICYmIFN0cmluZy5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDEpID09PSBTdHJpbmcucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh2YWwyKTtcbiAgfVxuXG4gIGlmIChpc0Jvb2xlYW5PYmplY3QodmFsMSkpIHtcbiAgICByZXR1cm4gaXNCb29sZWFuT2JqZWN0KHZhbDIpICYmIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh2YWwxKSA9PT0gQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDIpO1xuICB9XG5cbiAgaWYgKGlzQmlnSW50T2JqZWN0KHZhbDEpKSB7XG4gICAgcmV0dXJuIGlzQmlnSW50T2JqZWN0KHZhbDIpICYmIEJpZ0ludC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDEpID09PSBCaWdJbnQucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh2YWwyKTtcbiAgfVxuXG4gIHJldHVybiBpc1N5bWJvbE9iamVjdCh2YWwyKSAmJiBTeW1ib2wucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh2YWwxKSA9PT0gU3ltYm9sLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodmFsMik7XG59IC8vIE5vdGVzOiBUeXBlIHRhZ3MgYXJlIGhpc3RvcmljYWwgW1tDbGFzc11dIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgc2V0IGJ5XG4vLyBGdW5jdGlvblRlbXBsYXRlOjpTZXRDbGFzc05hbWUoKSBpbiBDKysgb3IgU3ltYm9sLnRvU3RyaW5nVGFnIGluIEpTXG4vLyBhbmQgcmV0cmlldmVkIHVzaW5nIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopIGluIEpTXG4vLyBTZWUgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZ1xuLy8gZm9yIGEgbGlzdCBvZiB0YWdzIHByZS1kZWZpbmVkIGluIHRoZSBzcGVjLlxuLy8gVGhlcmUgYXJlIHNvbWUgdW5zcGVjaWZpZWQgdGFncyBpbiB0aGUgd2lsZCB0b28gKGUuZy4gdHlwZWQgYXJyYXkgdGFncykuXG4vLyBTaW5jZSB0YWdzIGNhbiBiZSBhbHRlcmVkLCB0aGV5IG9ubHkgc2VydmUgZmFzdCBmYWlsdXJlc1xuLy9cbi8vIFR5cGVkIGFycmF5cyBhbmQgYnVmZmVycyBhcmUgY2hlY2tlZCBieSBjb21wYXJpbmcgdGhlIGNvbnRlbnQgaW4gdGhlaXJcbi8vIHVuZGVybHlpbmcgQXJyYXlCdWZmZXIuIFRoaXMgb3B0aW1pemF0aW9uIHJlcXVpcmVzIHRoYXQgaXQnc1xuLy8gcmVhc29uYWJsZSB0byBpbnRlcnByZXQgdGhlaXIgdW5kZXJseWluZyBtZW1vcnkgaW4gdGhlIHNhbWUgd2F5LFxuLy8gd2hpY2ggaXMgY2hlY2tlZCBieSBjb21wYXJpbmcgdGhlaXIgdHlwZSB0YWdzLlxuLy8gKGUuZy4gYSBVaW50OEFycmF5IGFuZCBhIFVpbnQxNkFycmF5IHdpdGggdGhlIHNhbWUgbWVtb3J5IGNvbnRlbnRcbi8vIGNvdWxkIHN0aWxsIGJlIGRpZmZlcmVudCBiZWNhdXNlIHRoZXkgd2lsbCBiZSBpbnRlcnByZXRlZCBkaWZmZXJlbnRseSkuXG4vL1xuLy8gRm9yIHN0cmljdCBjb21wYXJpc29uLCBvYmplY3RzIHNob3VsZCBoYXZlXG4vLyBhKSBUaGUgc2FtZSBidWlsdC1pbiB0eXBlIHRhZ3Ncbi8vIGIpIFRoZSBzYW1lIHByb3RvdHlwZXMuXG5cblxuZnVuY3Rpb24gaW5uZXJEZWVwRXF1YWwodmFsMSwgdmFsMiwgc3RyaWN0LCBtZW1vcykge1xuICAvLyBBbGwgaWRlbnRpY2FsIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgYXMgZGV0ZXJtaW5lZCBieSA9PT0uXG4gIGlmICh2YWwxID09PSB2YWwyKSB7XG4gICAgaWYgKHZhbDEgIT09IDApIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBzdHJpY3QgPyBvYmplY3RJcyh2YWwxLCB2YWwyKSA6IHRydWU7XG4gIH0gLy8gQ2hlY2sgbW9yZSBjbG9zZWx5IGlmIHZhbDEgYW5kIHZhbDIgYXJlIGVxdWFsLlxuXG5cbiAgaWYgKHN0cmljdCkge1xuICAgIGlmIChfdHlwZW9mKHZhbDEpICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHR5cGVvZiB2YWwxID09PSAnbnVtYmVyJyAmJiBudW1iZXJJc05hTih2YWwxKSAmJiBudW1iZXJJc05hTih2YWwyKTtcbiAgICB9XG5cbiAgICBpZiAoX3R5cGVvZih2YWwyKSAhPT0gJ29iamVjdCcgfHwgdmFsMSA9PT0gbnVsbCB8fCB2YWwyID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWwxKSAhPT0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbDIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh2YWwxID09PSBudWxsIHx8IF90eXBlb2YodmFsMSkgIT09ICdvYmplY3QnKSB7XG4gICAgICBpZiAodmFsMiA9PT0gbnVsbCB8fCBfdHlwZW9mKHZhbDIpICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG4gICAgICAgIHJldHVybiB2YWwxID09IHZhbDI7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodmFsMiA9PT0gbnVsbCB8fCBfdHlwZW9mKHZhbDIpICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHZhciB2YWwxVGFnID0gb2JqZWN0VG9TdHJpbmcodmFsMSk7XG4gIHZhciB2YWwyVGFnID0gb2JqZWN0VG9TdHJpbmcodmFsMik7XG5cbiAgaWYgKHZhbDFUYWcgIT09IHZhbDJUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwxKSkge1xuICAgIC8vIENoZWNrIGZvciBzcGFyc2UgYXJyYXlzIGFuZCBnZW5lcmFsIGZhc3QgcGF0aFxuICAgIGlmICh2YWwxLmxlbmd0aCAhPT0gdmFsMi5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIga2V5czEgPSBnZXRPd25Ob25JbmRleFByb3BlcnRpZXModmFsMSwgT05MWV9FTlVNRVJBQkxFKTtcbiAgICB2YXIga2V5czIgPSBnZXRPd25Ob25JbmRleFByb3BlcnRpZXModmFsMiwgT05MWV9FTlVNRVJBQkxFKTtcblxuICAgIGlmIChrZXlzMS5sZW5ndGggIT09IGtleXMyLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBrZXlDaGVjayh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW9zLCBrSXNBcnJheSwga2V5czEpO1xuICB9IC8vIFticm93c2VyaWZ5XSBUaGlzIHRyaWdnZXJzIG9uIGNlcnRhaW4gdHlwZXMgaW4gSUUgKE1hcC9TZXQpIHNvIHdlIGRvbid0XG4gIC8vIHdhbid0IHRvIGVhcmx5IHJldHVybiBvdXQgb2YgdGhlIHJlc3Qgb2YgdGhlIGNoZWNrcy4gSG93ZXZlciB3ZSBjYW4gY2hlY2tcbiAgLy8gaWYgdGhlIHNlY29uZCB2YWx1ZSBpcyBvbmUgb2YgdGhlc2UgdmFsdWVzIGFuZCB0aGUgZmlyc3QgaXNuJ3QuXG5cblxuICBpZiAodmFsMVRhZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICAvLyByZXR1cm4ga2V5Q2hlY2sodmFsMSwgdmFsMiwgc3RyaWN0LCBtZW1vcywga05vSXRlcmF0b3IpO1xuICAgIGlmICghaXNNYXAodmFsMSkgJiYgaXNNYXAodmFsMikgfHwgIWlzU2V0KHZhbDEpICYmIGlzU2V0KHZhbDIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaWYgKGlzRGF0ZSh2YWwxKSkge1xuICAgIGlmICghaXNEYXRlKHZhbDIpIHx8IERhdGUucHJvdG90eXBlLmdldFRpbWUuY2FsbCh2YWwxKSAhPT0gRGF0ZS5wcm90b3R5cGUuZ2V0VGltZS5jYWxsKHZhbDIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzUmVnRXhwKHZhbDEpKSB7XG4gICAgaWYgKCFpc1JlZ0V4cCh2YWwyKSB8fCAhYXJlU2ltaWxhclJlZ0V4cHModmFsMSwgdmFsMikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNOYXRpdmVFcnJvcih2YWwxKSB8fCB2YWwxIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAvLyBEbyBub3QgY29tcGFyZSB0aGUgc3RhY2sgYXMgaXQgbWlnaHQgZGlmZmVyIGV2ZW4gdGhvdWdoIHRoZSBlcnJvciBpdHNlbGZcbiAgICAvLyBpcyBvdGhlcndpc2UgaWRlbnRpY2FsLlxuICAgIGlmICh2YWwxLm1lc3NhZ2UgIT09IHZhbDIubWVzc2FnZSB8fCB2YWwxLm5hbWUgIT09IHZhbDIubmFtZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc0FycmF5QnVmZmVyVmlldyh2YWwxKSkge1xuICAgIGlmICghc3RyaWN0ICYmIChpc0Zsb2F0MzJBcnJheSh2YWwxKSB8fCBpc0Zsb2F0NjRBcnJheSh2YWwxKSkpIHtcbiAgICAgIGlmICghYXJlU2ltaWxhckZsb2F0QXJyYXlzKHZhbDEsIHZhbDIpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFhcmVTaW1pbGFyVHlwZWRBcnJheXModmFsMSwgdmFsMikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IC8vIEJ1ZmZlci5jb21wYXJlIHJldHVybnMgdHJ1ZSwgc28gdmFsMS5sZW5ndGggPT09IHZhbDIubGVuZ3RoLiBJZiB0aGV5IGJvdGhcbiAgICAvLyBvbmx5IGNvbnRhaW4gbnVtZXJpYyBrZXlzLCB3ZSBkb24ndCBuZWVkIHRvIGV4YW0gZnVydGhlciB0aGFuIGNoZWNraW5nXG4gICAgLy8gdGhlIHN5bWJvbHMuXG5cblxuICAgIHZhciBfa2V5cyA9IGdldE93bk5vbkluZGV4UHJvcGVydGllcyh2YWwxLCBPTkxZX0VOVU1FUkFCTEUpO1xuXG4gICAgdmFyIF9rZXlzMiA9IGdldE93bk5vbkluZGV4UHJvcGVydGllcyh2YWwyLCBPTkxZX0VOVU1FUkFCTEUpO1xuXG4gICAgaWYgKF9rZXlzLmxlbmd0aCAhPT0gX2tleXMyLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBrZXlDaGVjayh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW9zLCBrTm9JdGVyYXRvciwgX2tleXMpO1xuICB9IGVsc2UgaWYgKGlzU2V0KHZhbDEpKSB7XG4gICAgaWYgKCFpc1NldCh2YWwyKSB8fCB2YWwxLnNpemUgIT09IHZhbDIuc2l6ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBrZXlDaGVjayh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW9zLCBrSXNTZXQpO1xuICB9IGVsc2UgaWYgKGlzTWFwKHZhbDEpKSB7XG4gICAgaWYgKCFpc01hcCh2YWwyKSB8fCB2YWwxLnNpemUgIT09IHZhbDIuc2l6ZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBrZXlDaGVjayh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW9zLCBrSXNNYXApO1xuICB9IGVsc2UgaWYgKGlzQW55QXJyYXlCdWZmZXIodmFsMSkpIHtcbiAgICBpZiAoIWFyZUVxdWFsQXJyYXlCdWZmZXJzKHZhbDEsIHZhbDIpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzQm94ZWRQcmltaXRpdmUodmFsMSkgJiYgIWlzRXF1YWxCb3hlZFByaW1pdGl2ZSh2YWwxLCB2YWwyKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBrZXlDaGVjayh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW9zLCBrTm9JdGVyYXRvcik7XG59XG5cbmZ1bmN0aW9uIGdldEVudW1lcmFibGVzKHZhbCwga2V5cykge1xuICByZXR1cm4ga2V5cy5maWx0ZXIoZnVuY3Rpb24gKGspIHtcbiAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUodmFsLCBrKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGtleUNoZWNrKHZhbDEsIHZhbDIsIHN0cmljdCwgbWVtb3MsIGl0ZXJhdGlvblR5cGUsIGFLZXlzKSB7XG4gIC8vIEZvciBhbGwgcmVtYWluaW5nIE9iamVjdCBwYWlycywgaW5jbHVkaW5nIEFycmF5LCBvYmplY3RzIGFuZCBNYXBzLFxuICAvLyBlcXVpdmFsZW5jZSBpcyBkZXRlcm1pbmVkIGJ5IGhhdmluZzpcbiAgLy8gYSkgVGhlIHNhbWUgbnVtYmVyIG9mIG93bmVkIGVudW1lcmFibGUgcHJvcGVydGllc1xuICAvLyBiKSBUaGUgc2FtZSBzZXQgb2Yga2V5cy9pbmRleGVzIChhbHRob3VnaCBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgb3JkZXIpXG4gIC8vIGMpIEVxdWl2YWxlbnQgdmFsdWVzIGZvciBldmVyeSBjb3JyZXNwb25kaW5nIGtleS9pbmRleFxuICAvLyBkKSBGb3IgU2V0cyBhbmQgTWFwcywgZXF1YWwgY29udGVudHNcbiAgLy8gTm90ZTogdGhpcyBhY2NvdW50cyBmb3IgYm90aCBuYW1lZCBhbmQgaW5kZXhlZCBwcm9wZXJ0aWVzIG9uIEFycmF5cy5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDUpIHtcbiAgICBhS2V5cyA9IE9iamVjdC5rZXlzKHZhbDEpO1xuICAgIHZhciBiS2V5cyA9IE9iamVjdC5rZXlzKHZhbDIpOyAvLyBUaGUgcGFpciBtdXN0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIG93bmVkIHByb3BlcnRpZXMuXG5cbiAgICBpZiAoYUtleXMubGVuZ3RoICE9PSBiS2V5cy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gLy8gQ2hlYXAga2V5IHRlc3RcblxuXG4gIHZhciBpID0gMDtcblxuICBmb3IgKDsgaSA8IGFLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCFoYXNPd25Qcm9wZXJ0eSh2YWwyLCBhS2V5c1tpXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoc3RyaWN0ICYmIGFyZ3VtZW50cy5sZW5ndGggPT09IDUpIHtcbiAgICB2YXIgc3ltYm9sS2V5c0EgPSBvYmplY3RHZXRPd25Qcm9wZXJ0eVN5bWJvbHModmFsMSk7XG5cbiAgICBpZiAoc3ltYm9sS2V5c0EubGVuZ3RoICE9PSAwKSB7XG4gICAgICB2YXIgY291bnQgPSAwO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgc3ltYm9sS2V5c0EubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGtleSA9IHN5bWJvbEtleXNBW2ldO1xuXG4gICAgICAgIGlmIChwcm9wZXJ0eUlzRW51bWVyYWJsZSh2YWwxLCBrZXkpKSB7XG4gICAgICAgICAgaWYgKCFwcm9wZXJ0eUlzRW51bWVyYWJsZSh2YWwyLCBrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYUtleXMucHVzaChrZXkpO1xuICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJc0VudW1lcmFibGUodmFsMiwga2V5KSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgc3ltYm9sS2V5c0IgPSBvYmplY3RHZXRPd25Qcm9wZXJ0eVN5bWJvbHModmFsMik7XG5cbiAgICAgIGlmIChzeW1ib2xLZXlzQS5sZW5ndGggIT09IHN5bWJvbEtleXNCLmxlbmd0aCAmJiBnZXRFbnVtZXJhYmxlcyh2YWwyLCBzeW1ib2xLZXlzQikubGVuZ3RoICE9PSBjb3VudCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBfc3ltYm9sS2V5c0IgPSBvYmplY3RHZXRPd25Qcm9wZXJ0eVN5bWJvbHModmFsMik7XG5cbiAgICAgIGlmIChfc3ltYm9sS2V5c0IubGVuZ3RoICE9PSAwICYmIGdldEVudW1lcmFibGVzKHZhbDIsIF9zeW1ib2xLZXlzQikubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoYUtleXMubGVuZ3RoID09PSAwICYmIChpdGVyYXRpb25UeXBlID09PSBrTm9JdGVyYXRvciB8fCBpdGVyYXRpb25UeXBlID09PSBrSXNBcnJheSAmJiB2YWwxLmxlbmd0aCA9PT0gMCB8fCB2YWwxLnNpemUgPT09IDApKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gVXNlIG1lbW9zIHRvIGhhbmRsZSBjeWNsZXMuXG5cblxuICBpZiAobWVtb3MgPT09IHVuZGVmaW5lZCkge1xuICAgIG1lbW9zID0ge1xuICAgICAgdmFsMTogbmV3IE1hcCgpLFxuICAgICAgdmFsMjogbmV3IE1hcCgpLFxuICAgICAgcG9zaXRpb246IDBcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIC8vIFdlIHByZXZlbnQgdXAgdG8gdHdvIG1hcC5oYXMoeCkgY2FsbHMgYnkgZGlyZWN0bHkgcmV0cmlldmluZyB0aGUgdmFsdWVcbiAgICAvLyBhbmQgY2hlY2tpbmcgZm9yIHVuZGVmaW5lZC4gVGhlIG1hcCBjYW4gb25seSBjb250YWluIG51bWJlcnMsIHNvIGl0IGlzXG4gICAgLy8gc2FmZSB0byBjaGVjayBmb3IgdW5kZWZpbmVkIG9ubHkuXG4gICAgdmFyIHZhbDJNZW1vQSA9IG1lbW9zLnZhbDEuZ2V0KHZhbDEpO1xuXG4gICAgaWYgKHZhbDJNZW1vQSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB2YXIgdmFsMk1lbW9CID0gbWVtb3MudmFsMi5nZXQodmFsMik7XG5cbiAgICAgIGlmICh2YWwyTWVtb0IgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gdmFsMk1lbW9BID09PSB2YWwyTWVtb0I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWVtb3MucG9zaXRpb24rKztcbiAgfVxuXG4gIG1lbW9zLnZhbDEuc2V0KHZhbDEsIG1lbW9zLnBvc2l0aW9uKTtcbiAgbWVtb3MudmFsMi5zZXQodmFsMiwgbWVtb3MucG9zaXRpb24pO1xuICB2YXIgYXJlRXEgPSBvYmpFcXVpdih2YWwxLCB2YWwyLCBzdHJpY3QsIGFLZXlzLCBtZW1vcywgaXRlcmF0aW9uVHlwZSk7XG4gIG1lbW9zLnZhbDEuZGVsZXRlKHZhbDEpO1xuICBtZW1vcy52YWwyLmRlbGV0ZSh2YWwyKTtcbiAgcmV0dXJuIGFyZUVxO1xufVxuXG5mdW5jdGlvbiBzZXRIYXNFcXVhbEVsZW1lbnQoc2V0LCB2YWwxLCBzdHJpY3QsIG1lbW8pIHtcbiAgLy8gR28gbG9va2luZy5cbiAgdmFyIHNldFZhbHVlcyA9IGFycmF5RnJvbVNldChzZXQpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2V0VmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHZhbDIgPSBzZXRWYWx1ZXNbaV07XG5cbiAgICBpZiAoaW5uZXJEZWVwRXF1YWwodmFsMSwgdmFsMiwgc3RyaWN0LCBtZW1vKSkge1xuICAgICAgLy8gUmVtb3ZlIHRoZSBtYXRjaGluZyBlbGVtZW50IHRvIG1ha2Ugc3VyZSB3ZSBkbyBub3QgY2hlY2sgdGhhdCBhZ2Fpbi5cbiAgICAgIHNldC5kZWxldGUodmFsMik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59IC8vIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L0VxdWFsaXR5X2NvbXBhcmlzb25zX2FuZF9zYW1lbmVzcyNMb29zZV9lcXVhbGl0eV91c2luZ1xuLy8gU2FkbHkgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGRldGVjdCBjb3JyZXNwb25kaW5nIHZhbHVlcyBwcm9wZXJseSBpbiBjYXNlIHRoZVxuLy8gdHlwZSBpcyBhIHN0cmluZywgbnVtYmVyLCBiaWdpbnQgb3IgYm9vbGVhbi4gVGhlIHJlYXNvbiBpcyB0aGF0IHRob3NlIHZhbHVlc1xuLy8gY2FuIG1hdGNoIGxvdHMgb2YgZGlmZmVyZW50IHN0cmluZyB2YWx1ZXMgKGUuZy4sIDFuID09ICcrMDAwMDEnKS5cblxuXG5mdW5jdGlvbiBmaW5kTG9vc2VNYXRjaGluZ1ByaW1pdGl2ZXMocHJpbSkge1xuICBzd2l0Y2ggKF90eXBlb2YocHJpbSkpIHtcbiAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgcmV0dXJuIG51bGw7XG5cbiAgICBjYXNlICdvYmplY3QnOlxuICAgICAgLy8gT25seSBwYXNzIGluIG51bGwgYXMgb2JqZWN0IVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIGNhc2UgJ3N5bWJvbCc6XG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgcHJpbSA9ICtwcmltO1xuICAgIC8vIExvb3NlIGVxdWFsIGVudHJpZXMgZXhpc3Qgb25seSBpZiB0aGUgc3RyaW5nIGlzIHBvc3NpYmxlIHRvIGNvbnZlcnQgdG9cbiAgICAvLyBhIHJlZ3VsYXIgbnVtYmVyIGFuZCBub3QgTmFOLlxuICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGlmIChudW1iZXJJc05hTihwcmltKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBzZXRNaWdodEhhdmVMb29zZVByaW0oYSwgYiwgcHJpbSkge1xuICB2YXIgYWx0VmFsdWUgPSBmaW5kTG9vc2VNYXRjaGluZ1ByaW1pdGl2ZXMocHJpbSk7XG4gIGlmIChhbHRWYWx1ZSAhPSBudWxsKSByZXR1cm4gYWx0VmFsdWU7XG4gIHJldHVybiBiLmhhcyhhbHRWYWx1ZSkgJiYgIWEuaGFzKGFsdFZhbHVlKTtcbn1cblxuZnVuY3Rpb24gbWFwTWlnaHRIYXZlTG9vc2VQcmltKGEsIGIsIHByaW0sIGl0ZW0sIG1lbW8pIHtcbiAgdmFyIGFsdFZhbHVlID0gZmluZExvb3NlTWF0Y2hpbmdQcmltaXRpdmVzKHByaW0pO1xuXG4gIGlmIChhbHRWYWx1ZSAhPSBudWxsKSB7XG4gICAgcmV0dXJuIGFsdFZhbHVlO1xuICB9XG5cbiAgdmFyIGN1ckIgPSBiLmdldChhbHRWYWx1ZSk7XG5cbiAgaWYgKGN1ckIgPT09IHVuZGVmaW5lZCAmJiAhYi5oYXMoYWx0VmFsdWUpIHx8ICFpbm5lckRlZXBFcXVhbChpdGVtLCBjdXJCLCBmYWxzZSwgbWVtbykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gIWEuaGFzKGFsdFZhbHVlKSAmJiBpbm5lckRlZXBFcXVhbChpdGVtLCBjdXJCLCBmYWxzZSwgbWVtbyk7XG59XG5cbmZ1bmN0aW9uIHNldEVxdWl2KGEsIGIsIHN0cmljdCwgbWVtbykge1xuICAvLyBUaGlzIGlzIGEgbGF6aWx5IGluaXRpYXRlZCBTZXQgb2YgZW50cmllcyB3aGljaCBoYXZlIHRvIGJlIGNvbXBhcmVkXG4gIC8vIHBhaXJ3aXNlLlxuICB2YXIgc2V0ID0gbnVsbDtcbiAgdmFyIGFWYWx1ZXMgPSBhcnJheUZyb21TZXQoYSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHZhbCA9IGFWYWx1ZXNbaV07IC8vIE5vdGU6IENoZWNraW5nIGZvciB0aGUgb2JqZWN0cyBmaXJzdCBpbXByb3ZlcyB0aGUgcGVyZm9ybWFuY2UgZm9yIG9iamVjdFxuICAgIC8vIGhlYXZ5IHNldHMgYnV0IGl0IGlzIGEgbWlub3Igc2xvdyBkb3duIGZvciBwcmltaXRpdmVzLiBBcyB0aGV5IGFyZSBmYXN0XG4gICAgLy8gdG8gY2hlY2sgdGhpcyBpbXByb3ZlcyB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBpbnN0ZWFkLlxuXG4gICAgaWYgKF90eXBlb2YodmFsKSA9PT0gJ29iamVjdCcgJiYgdmFsICE9PSBudWxsKSB7XG4gICAgICBpZiAoc2V0ID09PSBudWxsKSB7XG4gICAgICAgIHNldCA9IG5ldyBTZXQoKTtcbiAgICAgIH0gLy8gSWYgdGhlIHNwZWNpZmllZCB2YWx1ZSBkb2Vzbid0IGV4aXN0IGluIHRoZSBzZWNvbmQgc2V0IGl0cyBhbiBub3QgbnVsbFxuICAgICAgLy8gb2JqZWN0IChvciBub24gc3RyaWN0IG9ubHk6IGEgbm90IG1hdGNoaW5nIHByaW1pdGl2ZSkgd2UnbGwgbmVlZCB0byBnb1xuICAgICAgLy8gaHVudGluZyBmb3Igc29tZXRoaW5nIHRoYXRzIGRlZXAtKHN0cmljdC0pZXF1YWwgdG8gaXQuIFRvIG1ha2UgdGhpc1xuICAgICAgLy8gTyhuIGxvZyBuKSBjb21wbGV4aXR5IHdlIGhhdmUgdG8gY29weSB0aGVzZSB2YWx1ZXMgaW4gYSBuZXcgc2V0IGZpcnN0LlxuXG5cbiAgICAgIHNldC5hZGQodmFsKTtcbiAgICB9IGVsc2UgaWYgKCFiLmhhcyh2YWwpKSB7XG4gICAgICBpZiAoc3RyaWN0KSByZXR1cm4gZmFsc2U7IC8vIEZhc3QgcGF0aCB0byBkZXRlY3QgbWlzc2luZyBzdHJpbmcsIHN5bWJvbCwgdW5kZWZpbmVkIGFuZCBudWxsIHZhbHVlcy5cblxuICAgICAgaWYgKCFzZXRNaWdodEhhdmVMb29zZVByaW0oYSwgYiwgdmFsKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZXQgPT09IG51bGwpIHtcbiAgICAgICAgc2V0ID0gbmV3IFNldCgpO1xuICAgICAgfVxuXG4gICAgICBzZXQuYWRkKHZhbCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHNldCAhPT0gbnVsbCkge1xuICAgIHZhciBiVmFsdWVzID0gYXJyYXlGcm9tU2V0KGIpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGJWYWx1ZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX3ZhbCA9IGJWYWx1ZXNbX2ldOyAvLyBXZSBoYXZlIHRvIGNoZWNrIGlmIGEgcHJpbWl0aXZlIHZhbHVlIGlzIGFscmVhZHlcbiAgICAgIC8vIG1hdGNoaW5nIGFuZCBvbmx5IGlmIGl0J3Mgbm90LCBnbyBodW50aW5nIGZvciBpdC5cblxuICAgICAgaWYgKF90eXBlb2YoX3ZhbCkgPT09ICdvYmplY3QnICYmIF92YWwgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKCFzZXRIYXNFcXVhbEVsZW1lbnQoc2V0LCBfdmFsLCBzdHJpY3QsIG1lbW8pKSByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgIWEuaGFzKF92YWwpICYmICFzZXRIYXNFcXVhbEVsZW1lbnQoc2V0LCBfdmFsLCBzdHJpY3QsIG1lbW8pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gc2V0LnNpemUgPT09IDA7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gbWFwSGFzRXF1YWxFbnRyeShzZXQsIG1hcCwga2V5MSwgaXRlbTEsIHN0cmljdCwgbWVtbykge1xuICAvLyBUbyBiZSBhYmxlIHRvIGhhbmRsZSBjYXNlcyBsaWtlOlxuICAvLyAgIE1hcChbW3t9LCAnYSddLCBbe30sICdiJ11dKSB2cyBNYXAoW1t7fSwgJ2InXSwgW3t9LCAnYSddXSlcbiAgLy8gLi4uIHdlIG5lZWQgdG8gY29uc2lkZXIgKmFsbCogbWF0Y2hpbmcga2V5cywgbm90IGp1c3QgdGhlIGZpcnN0IHdlIGZpbmQuXG4gIHZhciBzZXRWYWx1ZXMgPSBhcnJheUZyb21TZXQoc2V0KTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNldFZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkyID0gc2V0VmFsdWVzW2ldO1xuXG4gICAgaWYgKGlubmVyRGVlcEVxdWFsKGtleTEsIGtleTIsIHN0cmljdCwgbWVtbykgJiYgaW5uZXJEZWVwRXF1YWwoaXRlbTEsIG1hcC5nZXQoa2V5MiksIHN0cmljdCwgbWVtbykpIHtcbiAgICAgIHNldC5kZWxldGUoa2V5Mik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG1hcEVxdWl2KGEsIGIsIHN0cmljdCwgbWVtbykge1xuICB2YXIgc2V0ID0gbnVsbDtcbiAgdmFyIGFFbnRyaWVzID0gYXJyYXlGcm9tTWFwKGEpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYUVudHJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgX2FFbnRyaWVzJGkgPSBfc2xpY2VkVG9BcnJheShhRW50cmllc1tpXSwgMiksXG4gICAgICAgIGtleSA9IF9hRW50cmllcyRpWzBdLFxuICAgICAgICBpdGVtMSA9IF9hRW50cmllcyRpWzFdO1xuXG4gICAgaWYgKF90eXBlb2Yoa2V5KSA9PT0gJ29iamVjdCcgJiYga2V5ICE9PSBudWxsKSB7XG4gICAgICBpZiAoc2V0ID09PSBudWxsKSB7XG4gICAgICAgIHNldCA9IG5ldyBTZXQoKTtcbiAgICAgIH1cblxuICAgICAgc2V0LmFkZChrZXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCeSBkaXJlY3RseSByZXRyaWV2aW5nIHRoZSB2YWx1ZSB3ZSBwcmV2ZW50IGFub3RoZXIgYi5oYXMoa2V5KSBjaGVjayBpblxuICAgICAgLy8gYWxtb3N0IGFsbCBwb3NzaWJsZSBjYXNlcy5cbiAgICAgIHZhciBpdGVtMiA9IGIuZ2V0KGtleSk7XG5cbiAgICAgIGlmIChpdGVtMiA9PT0gdW5kZWZpbmVkICYmICFiLmhhcyhrZXkpIHx8ICFpbm5lckRlZXBFcXVhbChpdGVtMSwgaXRlbTIsIHN0cmljdCwgbWVtbykpIHtcbiAgICAgICAgaWYgKHN0cmljdCkgcmV0dXJuIGZhbHNlOyAvLyBGYXN0IHBhdGggdG8gZGV0ZWN0IG1pc3Npbmcgc3RyaW5nLCBzeW1ib2wsIHVuZGVmaW5lZCBhbmQgbnVsbFxuICAgICAgICAvLyBrZXlzLlxuXG4gICAgICAgIGlmICghbWFwTWlnaHRIYXZlTG9vc2VQcmltKGEsIGIsIGtleSwgaXRlbTEsIG1lbW8pKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgaWYgKHNldCA9PT0gbnVsbCkge1xuICAgICAgICAgIHNldCA9IG5ldyBTZXQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldC5hZGQoa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc2V0ICE9PSBudWxsKSB7XG4gICAgdmFyIGJFbnRyaWVzID0gYXJyYXlGcm9tTWFwKGIpO1xuXG4gICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgYkVudHJpZXMubGVuZ3RoOyBfaTIrKykge1xuICAgICAgdmFyIF9iRW50cmllcyRfaSA9IF9zbGljZWRUb0FycmF5KGJFbnRyaWVzW19pMl0sIDIpLFxuICAgICAgICAgIGtleSA9IF9iRW50cmllcyRfaVswXSxcbiAgICAgICAgICBpdGVtID0gX2JFbnRyaWVzJF9pWzFdO1xuXG4gICAgICBpZiAoX3R5cGVvZihrZXkpID09PSAnb2JqZWN0JyAmJiBrZXkgIT09IG51bGwpIHtcbiAgICAgICAgaWYgKCFtYXBIYXNFcXVhbEVudHJ5KHNldCwgYSwga2V5LCBpdGVtLCBzdHJpY3QsIG1lbW8pKSByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKCFzdHJpY3QgJiYgKCFhLmhhcyhrZXkpIHx8ICFpbm5lckRlZXBFcXVhbChhLmdldChrZXkpLCBpdGVtLCBmYWxzZSwgbWVtbykpICYmICFtYXBIYXNFcXVhbEVudHJ5KHNldCwgYSwga2V5LCBpdGVtLCBmYWxzZSwgbWVtbykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzZXQuc2l6ZSA9PT0gMDtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBvYmpFcXVpdihhLCBiLCBzdHJpY3QsIGtleXMsIG1lbW9zLCBpdGVyYXRpb25UeXBlKSB7XG4gIC8vIFNldHMgYW5kIG1hcHMgZG9uJ3QgaGF2ZSB0aGVpciBlbnRyaWVzIGFjY2Vzc2libGUgdmlhIG5vcm1hbCBvYmplY3RcbiAgLy8gcHJvcGVydGllcy5cbiAgdmFyIGkgPSAwO1xuXG4gIGlmIChpdGVyYXRpb25UeXBlID09PSBrSXNTZXQpIHtcbiAgICBpZiAoIXNldEVxdWl2KGEsIGIsIHN0cmljdCwgbWVtb3MpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IGVsc2UgaWYgKGl0ZXJhdGlvblR5cGUgPT09IGtJc01hcCkge1xuICAgIGlmICghbWFwRXF1aXYoYSwgYiwgc3RyaWN0LCBtZW1vcykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXRlcmF0aW9uVHlwZSA9PT0ga0lzQXJyYXkpIHtcbiAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eShhLCBpKSkge1xuICAgICAgICBpZiAoIWhhc093blByb3BlcnR5KGIsIGkpIHx8ICFpbm5lckRlZXBFcXVhbChhW2ldLCBiW2ldLCBzdHJpY3QsIG1lbW9zKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChoYXNPd25Qcm9wZXJ0eShiLCBpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBBcnJheSBpcyBzcGFyc2UuXG4gICAgICAgIHZhciBrZXlzQSA9IE9iamVjdC5rZXlzKGEpO1xuXG4gICAgICAgIGZvciAoOyBpIDwga2V5c0EubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICB2YXIga2V5ID0ga2V5c0FbaV07XG5cbiAgICAgICAgICBpZiAoIWhhc093blByb3BlcnR5KGIsIGtleSkgfHwgIWlubmVyRGVlcEVxdWFsKGFba2V5XSwgYltrZXldLCBzdHJpY3QsIG1lbW9zKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChrZXlzQS5sZW5ndGggIT09IE9iamVjdC5rZXlzKGIpLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBUaGUgcGFpciBtdXN0IGhhdmUgZXF1aXZhbGVudCB2YWx1ZXMgZm9yIGV2ZXJ5IGNvcnJlc3BvbmRpbmcga2V5LlxuICAvLyBQb3NzaWJseSBleHBlbnNpdmUgZGVlcCB0ZXN0OlxuXG5cbiAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgX2tleSA9IGtleXNbaV07XG5cbiAgICBpZiAoIWlubmVyRGVlcEVxdWFsKGFbX2tleV0sIGJbX2tleV0sIHN0cmljdCwgbWVtb3MpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzRGVlcEVxdWFsKHZhbDEsIHZhbDIpIHtcbiAgcmV0dXJuIGlubmVyRGVlcEVxdWFsKHZhbDEsIHZhbDIsIGtMb29zZSk7XG59XG5cbmZ1bmN0aW9uIGlzRGVlcFN0cmljdEVxdWFsKHZhbDEsIHZhbDIpIHtcbiAgcmV0dXJuIGlubmVyRGVlcEVxdWFsKHZhbDEsIHZhbDIsIGtTdHJpY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaXNEZWVwRXF1YWw6IGlzRGVlcEVxdWFsLFxuICBpc0RlZXBTdHJpY3RFcXVhbDogaXNEZWVwU3RyaWN0RXF1YWxcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcG9zc2libGVOYW1lcyA9IFtcblx0J0JpZ0ludDY0QXJyYXknLFxuXHQnQmlnVWludDY0QXJyYXknLFxuXHQnRmxvYXQzMkFycmF5Jyxcblx0J0Zsb2F0NjRBcnJheScsXG5cdCdJbnQxNkFycmF5Jyxcblx0J0ludDMyQXJyYXknLFxuXHQnSW50OEFycmF5Jyxcblx0J1VpbnQxNkFycmF5Jyxcblx0J1VpbnQzMkFycmF5Jyxcblx0J1VpbnQ4QXJyYXknLFxuXHQnVWludDhDbGFtcGVkQXJyYXknXG5dO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGF2YWlsYWJsZVR5cGVkQXJyYXlzKCkge1xuXHR2YXIgb3V0ID0gW107XG5cdGZvciAodmFyIGkgPSAwOyBpIDwgcG9zc2libGVOYW1lcy5sZW5ndGg7IGkrKykge1xuXHRcdGlmICh0eXBlb2YgZ2xvYmFsW3Bvc3NpYmxlTmFtZXNbaV1dID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSBwb3NzaWJsZU5hbWVzW2ldO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gb3V0O1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvYmFzZTQ1JylcbiIsImNvbnN0IGNoYXJzZXQgPSAnMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaICQlKistLi86J1xuY29uc3QgZGl2bW9kID0gKHgsIHkpID0+IFtNYXRoLmZsb29yKHggLyB5KSwgeCAlIHldXG5cbi8vIEVuY29kZSBhIGJ1ZmZlciAob3IgdWludDhhcnJheSkgdG8gYmFzZTQ1LWVuY29kZWQgc3RyaW5nXG5jb25zdCBlbmNvZGUgPSAoYnVmZmVyKSA9PiB7XG4gIGlmICh0eXBlb2YgKGJ1ZmZlcikgPT09ICdzdHJpbmcnKSBidWZmZXIgPSBCdWZmZXIuZnJvbShidWZmZXIpXG4gIGxldCByZXMgPSAnJ1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkgPSBpICsgMikge1xuICAgIGlmIChidWZmZXIubGVuZ3RoIC0gaSA+IDEpIHtcbiAgICAgIGNvbnN0IHggPSAoYnVmZmVyW2ldIDw8IDgpICsgYnVmZmVyW2kgKyAxXVxuICAgICAgY29uc3QgW2UsIHJlc3RdID0gZGl2bW9kKHgsIDQ1ICogNDUpXG4gICAgICBjb25zdCBbZCwgY10gPSBkaXZtb2QocmVzdCwgNDUpXG4gICAgICByZXMgKz0gY2hhcnNldFtjXSArIGNoYXJzZXRbZF0gKyBjaGFyc2V0W2VdXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IFtkLCBjXSA9IGRpdm1vZChidWZmZXJbaV0sIDQ1KVxuICAgICAgcmVzICs9IGNoYXJzZXRbY10gKyBjaGFyc2V0W2RdXG4gICAgfVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuLy8gRGVjb2RlIGJhc2U0NS1lbmNvZGVkIGlucHV0XG5jb25zdCBkZWNvZGUgPSAoaW5wdXQpID0+IHtcbiAgY29uc3QgYnVmZmVyID0gQXJyYXkuZnJvbShpbnB1dCkubWFwKGMgPT4gY2hhcnNldC5pbmRleE9mKGMpKVxuICBjb25zdCByZXMgPSBbXVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkgPSBpICsgMykge1xuICAgIGlmIChidWZmZXIubGVuZ3RoIC0gaSA+PSAzKSB7XG4gICAgICBjb25zdCB4ID0gYnVmZmVyW2ldICsgYnVmZmVyW2kgKyAxXSAqIDQ1ICsgYnVmZmVyW2kgKyAyXSAqIDQ1ICogNDVcbiAgICAgIHJlcy5wdXNoKC4uLmRpdm1vZCh4LCAyNTYpKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB4ID0gYnVmZmVyW2ldICsgYnVmZmVyW2kgKyAxXSAqIDQ1XG4gICAgICByZXMucHVzaCh4KVxuICAgIH1cbiAgfVxuICByZXR1cm4gQnVmZmVyLmZyb20ocmVzKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZW5jb2RlLFxuICBkZWNvZGVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5leHBvcnRzLnRvQnl0ZUFycmF5ID0gdG9CeXRlQXJyYXlcbmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXlcblxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcblxudmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcbmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbi8vIFN1cHBvcnQgZGVjb2RpbmcgVVJMLXNhZmUgYmFzZTY0IHN0cmluZ3MsIGFzIE5vZGUuanMgZG9lcy5cbi8vIFNlZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzZTY0I1VSTF9hcHBsaWNhdGlvbnNcbnJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxucmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzXG5cbmZ1bmN0aW9uIGdldExlbnMgKGI2NCkge1xuICB2YXIgbGVuID0gYjY0Lmxlbmd0aFxuXG4gIGlmIChsZW4gJSA0ID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCcpXG4gIH1cblxuICAvLyBUcmltIG9mZiBleHRyYSBieXRlcyBhZnRlciBwbGFjZWhvbGRlciBieXRlcyBhcmUgZm91bmRcbiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmVhdGdhbW1pdC9iYXNlNjQtanMvaXNzdWVzLzQyXG4gIHZhciB2YWxpZExlbiA9IGI2NC5pbmRleE9mKCc9JylcbiAgaWYgKHZhbGlkTGVuID09PSAtMSkgdmFsaWRMZW4gPSBsZW5cblxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gdmFsaWRMZW4gPT09IGxlblxuICAgID8gMFxuICAgIDogNCAtICh2YWxpZExlbiAlIDQpXG5cbiAgcmV0dXJuIFt2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuXVxufVxuXG4vLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkge1xuICB2YXIgbGVucyA9IGdldExlbnMoYjY0KVxuICB2YXIgdmFsaWRMZW4gPSBsZW5zWzBdXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSBsZW5zWzFdXG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiBfYnl0ZUxlbmd0aCAoYjY0LCB2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuKSB7XG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiB0b0J5dGVBcnJheSAoYjY0KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuXG4gIHZhciBhcnIgPSBuZXcgQXJyKF9ieXRlTGVuZ3RoKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikpXG5cbiAgdmFyIGN1ckJ5dGUgPSAwXG5cbiAgLy8gaWYgdGhlcmUgYXJlIHBsYWNlaG9sZGVycywgb25seSBnZXQgdXAgdG8gdGhlIGxhc3QgY29tcGxldGUgNCBjaGFyc1xuICB2YXIgbGVuID0gcGxhY2VIb2xkZXJzTGVuID4gMFxuICAgID8gdmFsaWRMZW4gLSA0XG4gICAgOiB2YWxpZExlblxuXG4gIHZhciBpXG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxOCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDEyKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPDwgNikgfFxuICAgICAgcmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAzKV1cbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gMTYpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnNMZW4gPT09IDIpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldID4+IDQpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAxKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDEwKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgNCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildID4+IDIpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkge1xuICByZXR1cm4gbG9va3VwW251bSA+PiAxOCAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDEyICYgMHgzRl0gK1xuICAgIGxvb2t1cFtudW0gPj4gNiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtICYgMHgzRl1cbn1cblxuZnVuY3Rpb24gZW5jb2RlQ2h1bmsgKHVpbnQ4LCBzdGFydCwgZW5kKSB7XG4gIHZhciB0bXBcbiAgdmFyIG91dHB1dCA9IFtdXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSAzKSB7XG4gICAgdG1wID1cbiAgICAgICgodWludDhbaV0gPDwgMTYpICYgMHhGRjAwMDApICtcbiAgICAgICgodWludDhbaSArIDFdIDw8IDgpICYgMHhGRjAwKSArXG4gICAgICAodWludDhbaSArIDJdICYgMHhGRilcbiAgICBvdXRwdXQucHVzaCh0cmlwbGV0VG9CYXNlNjQodG1wKSlcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIHBhcnRzID0gW11cbiAgdmFyIG1heENodW5rTGVuZ3RoID0gMTYzODMgLy8gbXVzdCBiZSBtdWx0aXBsZSBvZiAzXG5cbiAgLy8gZ28gdGhyb3VnaCB0aGUgYXJyYXkgZXZlcnkgdGhyZWUgYnl0ZXMsIHdlJ2xsIGRlYWwgd2l0aCB0cmFpbGluZyBzdHVmZiBsYXRlclxuICBmb3IgKHZhciBpID0gMCwgbGVuMiA9IGxlbiAtIGV4dHJhQnl0ZXM7IGkgPCBsZW4yOyBpICs9IG1heENodW5rTGVuZ3RoKSB7XG4gICAgcGFydHMucHVzaChlbmNvZGVDaHVuayh1aW50OCwgaSwgKGkgKyBtYXhDaHVua0xlbmd0aCkgPiBsZW4yID8gbGVuMiA6IChpICsgbWF4Q2h1bmtMZW5ndGgpKSlcbiAgfVxuXG4gIC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXNcbiAgaWYgKGV4dHJhQnl0ZXMgPT09IDEpIHtcbiAgICB0bXAgPSB1aW50OFtsZW4gLSAxXVxuICAgIHBhcnRzLnB1c2goXG4gICAgICBsb29rdXBbdG1wID4+IDJdICtcbiAgICAgIGxvb2t1cFsodG1wIDw8IDQpICYgMHgzRl0gK1xuICAgICAgJz09J1xuICAgIClcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgdWludDhbbGVuIC0gMV1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgbG9va3VwW3RtcCA+PiAxMF0gK1xuICAgICAgbG9va3VwWyh0bXAgPj4gNCkgJiAweDNGXSArXG4gICAgICBsb29rdXBbKHRtcCA8PCAyKSAmIDB4M0ZdICtcbiAgICAgICc9J1xuICAgIClcbiAgfVxuXG4gIHJldHVybiBwYXJ0cy5qb2luKCcnKVxufVxuIiwiOyhmdW5jdGlvbiAoZ2xvYmFsT2JqZWN0KSB7XHJcbiAgJ3VzZSBzdHJpY3QnO1xyXG5cclxuLypcclxuICogICAgICBiaWdudW1iZXIuanMgdjkuMC4xXHJcbiAqICAgICAgQSBKYXZhU2NyaXB0IGxpYnJhcnkgZm9yIGFyYml0cmFyeS1wcmVjaXNpb24gYXJpdGhtZXRpYy5cclxuICogICAgICBodHRwczovL2dpdGh1Yi5jb20vTWlrZU1jbC9iaWdudW1iZXIuanNcclxuICogICAgICBDb3B5cmlnaHQgKGMpIDIwMjAgTWljaGFlbCBNY2xhdWdobGluIDxNOGNoODhsQGdtYWlsLmNvbT5cclxuICogICAgICBNSVQgTGljZW5zZWQuXHJcbiAqXHJcbiAqICAgICAgQmlnTnVtYmVyLnByb3RvdHlwZSBtZXRob2RzICAgICB8ICBCaWdOdW1iZXIgbWV0aG9kc1xyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIGFic29sdXRlVmFsdWUgICAgICAgICAgICBhYnMgICAgfCAgY2xvbmVcclxuICogICAgICBjb21wYXJlZFRvICAgICAgICAgICAgICAgICAgICAgIHwgIGNvbmZpZyAgICAgICAgICAgICAgIHNldFxyXG4gKiAgICAgIGRlY2ltYWxQbGFjZXMgICAgICAgICAgICBkcCAgICAgfCAgICAgIERFQ0lNQUxfUExBQ0VTXHJcbiAqICAgICAgZGl2aWRlZEJ5ICAgICAgICAgICAgICAgIGRpdiAgICB8ICAgICAgUk9VTkRJTkdfTU9ERVxyXG4gKiAgICAgIGRpdmlkZWRUb0ludGVnZXJCeSAgICAgICBpZGl2ICAgfCAgICAgIEVYUE9ORU5USUFMX0FUXHJcbiAqICAgICAgZXhwb25lbnRpYXRlZEJ5ICAgICAgICAgIHBvdyAgICB8ICAgICAgUkFOR0VcclxuICogICAgICBpbnRlZ2VyVmFsdWUgICAgICAgICAgICAgICAgICAgIHwgICAgICBDUllQVE9cclxuICogICAgICBpc0VxdWFsVG8gICAgICAgICAgICAgICAgZXEgICAgIHwgICAgICBNT0RVTE9fTU9ERVxyXG4gKiAgICAgIGlzRmluaXRlICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgIFBPV19QUkVDSVNJT05cclxuICogICAgICBpc0dyZWF0ZXJUaGFuICAgICAgICAgICAgZ3QgICAgIHwgICAgICBGT1JNQVRcclxuICogICAgICBpc0dyZWF0ZXJUaGFuT3JFcXVhbFRvICAgZ3RlICAgIHwgICAgICBBTFBIQUJFVFxyXG4gKiAgICAgIGlzSW50ZWdlciAgICAgICAgICAgICAgICAgICAgICAgfCAgaXNCaWdOdW1iZXJcclxuICogICAgICBpc0xlc3NUaGFuICAgICAgICAgICAgICAgbHQgICAgIHwgIG1heGltdW0gICAgICAgICAgICAgIG1heFxyXG4gKiAgICAgIGlzTGVzc1RoYW5PckVxdWFsVG8gICAgICBsdGUgICAgfCAgbWluaW11bSAgICAgICAgICAgICAgbWluXHJcbiAqICAgICAgaXNOYU4gICAgICAgICAgICAgICAgICAgICAgICAgICB8ICByYW5kb21cclxuICogICAgICBpc05lZ2F0aXZlICAgICAgICAgICAgICAgICAgICAgIHwgIHN1bVxyXG4gKiAgICAgIGlzUG9zaXRpdmUgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIGlzWmVybyAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIG1pbnVzICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIG1vZHVsbyAgICAgICAgICAgICAgICAgICBtb2QgICAgfFxyXG4gKiAgICAgIG11bHRpcGxpZWRCeSAgICAgICAgICAgICB0aW1lcyAgfFxyXG4gKiAgICAgIG5lZ2F0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHBsdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHByZWNpc2lvbiAgICAgICAgICAgICAgICBzZCAgICAgfFxyXG4gKiAgICAgIHNoaWZ0ZWRCeSAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHNxdWFyZVJvb3QgICAgICAgICAgICAgICBzcXJ0ICAgfFxyXG4gKiAgICAgIHRvRXhwb25lbnRpYWwgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHRvRml4ZWQgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHRvRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHRvRnJhY3Rpb24gICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHRvSlNPTiAgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHRvTnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHRvUHJlY2lzaW9uICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHRvU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKiAgICAgIHZhbHVlT2YgICAgICAgICAgICAgICAgICAgICAgICAgfFxyXG4gKlxyXG4gKi9cclxuXHJcblxyXG4gIHZhciBCaWdOdW1iZXIsXHJcbiAgICBpc051bWVyaWMgPSAvXi0/KD86XFxkKyg/OlxcLlxcZCopP3xcXC5cXGQrKSg/OmVbKy1dP1xcZCspPyQvaSxcclxuICAgIG1hdGhjZWlsID0gTWF0aC5jZWlsLFxyXG4gICAgbWF0aGZsb29yID0gTWF0aC5mbG9vcixcclxuXHJcbiAgICBiaWdudW1iZXJFcnJvciA9ICdbQmlnTnVtYmVyIEVycm9yXSAnLFxyXG4gICAgdG9vTWFueURpZ2l0cyA9IGJpZ251bWJlckVycm9yICsgJ051bWJlciBwcmltaXRpdmUgaGFzIG1vcmUgdGhhbiAxNSBzaWduaWZpY2FudCBkaWdpdHM6ICcsXHJcblxyXG4gICAgQkFTRSA9IDFlMTQsXHJcbiAgICBMT0dfQkFTRSA9IDE0LFxyXG4gICAgTUFYX1NBRkVfSU5URUdFUiA9IDB4MWZmZmZmZmZmZmZmZmYsICAgICAgICAgLy8gMl41MyAtIDFcclxuICAgIC8vIE1BWF9JTlQzMiA9IDB4N2ZmZmZmZmYsICAgICAgICAgICAgICAgICAgIC8vIDJeMzEgLSAxXHJcbiAgICBQT1dTX1RFTiA9IFsxLCAxMCwgMTAwLCAxZTMsIDFlNCwgMWU1LCAxZTYsIDFlNywgMWU4LCAxZTksIDFlMTAsIDFlMTEsIDFlMTIsIDFlMTNdLFxyXG4gICAgU1FSVF9CQVNFID0gMWU3LFxyXG5cclxuICAgIC8vIEVESVRBQkxFXHJcbiAgICAvLyBUaGUgbGltaXQgb24gdGhlIHZhbHVlIG9mIERFQ0lNQUxfUExBQ0VTLCBUT19FWFBfTkVHLCBUT19FWFBfUE9TLCBNSU5fRVhQLCBNQVhfRVhQLCBhbmRcclxuICAgIC8vIHRoZSBhcmd1bWVudHMgdG8gdG9FeHBvbmVudGlhbCwgdG9GaXhlZCwgdG9Gb3JtYXQsIGFuZCB0b1ByZWNpc2lvbi5cclxuICAgIE1BWCA9IDFFOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAgdG8gTUFYX0lOVDMyXHJcblxyXG5cclxuICAvKlxyXG4gICAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgQmlnTnVtYmVyIGNvbnN0cnVjdG9yLlxyXG4gICAqL1xyXG4gIGZ1bmN0aW9uIGNsb25lKGNvbmZpZ09iamVjdCkge1xyXG4gICAgdmFyIGRpdiwgY29udmVydEJhc2UsIHBhcnNlTnVtZXJpYyxcclxuICAgICAgUCA9IEJpZ051bWJlci5wcm90b3R5cGUgPSB7IGNvbnN0cnVjdG9yOiBCaWdOdW1iZXIsIHRvU3RyaW5nOiBudWxsLCB2YWx1ZU9mOiBudWxsIH0sXHJcbiAgICAgIE9ORSA9IG5ldyBCaWdOdW1iZXIoMSksXHJcblxyXG5cclxuICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFRElUQUJMRSBDT05GSUcgREVGQVVMVFMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuXHJcbiAgICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlcyBiZWxvdyBtdXN0IGJlIGludGVnZXJzIHdpdGhpbiB0aGUgaW5jbHVzaXZlIHJhbmdlcyBzdGF0ZWQuXHJcbiAgICAgIC8vIFRoZSB2YWx1ZXMgY2FuIGFsc28gYmUgY2hhbmdlZCBhdCBydW4tdGltZSB1c2luZyBCaWdOdW1iZXIuc2V0LlxyXG5cclxuICAgICAgLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzIGZvciBvcGVyYXRpb25zIGludm9sdmluZyBkaXZpc2lvbi5cclxuICAgICAgREVDSU1BTF9QTEFDRVMgPSAyMCwgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIE1BWFxyXG5cclxuICAgICAgLy8gVGhlIHJvdW5kaW5nIG1vZGUgdXNlZCB3aGVuIHJvdW5kaW5nIHRvIHRoZSBhYm92ZSBkZWNpbWFsIHBsYWNlcywgYW5kIHdoZW4gdXNpbmdcclxuICAgICAgLy8gdG9FeHBvbmVudGlhbCwgdG9GaXhlZCwgdG9Gb3JtYXQgYW5kIHRvUHJlY2lzaW9uLCBhbmQgcm91bmQgKGRlZmF1bHQgdmFsdWUpLlxyXG4gICAgICAvLyBVUCAgICAgICAgIDAgQXdheSBmcm9tIHplcm8uXHJcbiAgICAgIC8vIERPV04gICAgICAgMSBUb3dhcmRzIHplcm8uXHJcbiAgICAgIC8vIENFSUwgICAgICAgMiBUb3dhcmRzICtJbmZpbml0eS5cclxuICAgICAgLy8gRkxPT1IgICAgICAzIFRvd2FyZHMgLUluZmluaXR5LlxyXG4gICAgICAvLyBIQUxGX1VQICAgIDQgVG93YXJkcyBuZWFyZXN0IG5laWdoYm91ci4gSWYgZXF1aWRpc3RhbnQsIHVwLlxyXG4gICAgICAvLyBIQUxGX0RPV04gIDUgVG93YXJkcyBuZWFyZXN0IG5laWdoYm91ci4gSWYgZXF1aWRpc3RhbnQsIGRvd24uXHJcbiAgICAgIC8vIEhBTEZfRVZFTiAgNiBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyBldmVuIG5laWdoYm91ci5cclxuICAgICAgLy8gSEFMRl9DRUlMICA3IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCB0b3dhcmRzICtJbmZpbml0eS5cclxuICAgICAgLy8gSEFMRl9GTE9PUiA4IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCB0b3dhcmRzIC1JbmZpbml0eS5cclxuICAgICAgUk9VTkRJTkdfTU9ERSA9IDQsICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIDhcclxuXHJcbiAgICAgIC8vIEVYUE9ORU5USUFMX0FUIDogW1RPX0VYUF9ORUcgLCBUT19FWFBfUE9TXVxyXG5cclxuICAgICAgLy8gVGhlIGV4cG9uZW50IHZhbHVlIGF0IGFuZCBiZW5lYXRoIHdoaWNoIHRvU3RyaW5nIHJldHVybnMgZXhwb25lbnRpYWwgbm90YXRpb24uXHJcbiAgICAgIC8vIE51bWJlciB0eXBlOiAtN1xyXG4gICAgICBUT19FWFBfTkVHID0gLTcsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDAgdG8gLU1BWFxyXG5cclxuICAgICAgLy8gVGhlIGV4cG9uZW50IHZhbHVlIGF0IGFuZCBhYm92ZSB3aGljaCB0b1N0cmluZyByZXR1cm5zIGV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICAvLyBOdW1iZXIgdHlwZTogMjFcclxuICAgICAgVE9fRVhQX1BPUyA9IDIxLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIE1BWFxyXG5cclxuICAgICAgLy8gUkFOR0UgOiBbTUlOX0VYUCwgTUFYX0VYUF1cclxuXHJcbiAgICAgIC8vIFRoZSBtaW5pbXVtIGV4cG9uZW50IHZhbHVlLCBiZW5lYXRoIHdoaWNoIHVuZGVyZmxvdyB0byB6ZXJvIG9jY3Vycy5cclxuICAgICAgLy8gTnVtYmVyIHR5cGU6IC0zMjQgICg1ZS0zMjQpXHJcbiAgICAgIE1JTl9FWFAgPSAtMWU3LCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLTEgdG8gLU1BWFxyXG5cclxuICAgICAgLy8gVGhlIG1heGltdW0gZXhwb25lbnQgdmFsdWUsIGFib3ZlIHdoaWNoIG92ZXJmbG93IHRvIEluZmluaXR5IG9jY3Vycy5cclxuICAgICAgLy8gTnVtYmVyIHR5cGU6ICAzMDggICgxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOClcclxuICAgICAgLy8gRm9yIE1BWF9FWFAgPiAxZTcsIGUuZy4gbmV3IEJpZ051bWJlcignMWUxMDAwMDAwMDAnKS5wbHVzKDEpIG1heSBiZSBzbG93LlxyXG4gICAgICBNQVhfRVhQID0gMWU3LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEgdG8gTUFYXHJcblxyXG4gICAgICAvLyBXaGV0aGVyIHRvIHVzZSBjcnlwdG9ncmFwaGljYWxseS1zZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uLCBpZiBhdmFpbGFibGUuXHJcbiAgICAgIENSWVBUTyA9IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJ1ZSBvciBmYWxzZVxyXG5cclxuICAgICAgLy8gVGhlIG1vZHVsbyBtb2RlIHVzZWQgd2hlbiBjYWxjdWxhdGluZyB0aGUgbW9kdWx1czogYSBtb2Qgbi5cclxuICAgICAgLy8gVGhlIHF1b3RpZW50IChxID0gYSAvIG4pIGlzIGNhbGN1bGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJvdW5kaW5nIG1vZGUuXHJcbiAgICAgIC8vIFRoZSByZW1haW5kZXIgKHIpIGlzIGNhbGN1bGF0ZWQgYXM6IHIgPSBhIC0gbiAqIHEuXHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIFVQICAgICAgICAwIFRoZSByZW1haW5kZXIgaXMgcG9zaXRpdmUgaWYgdGhlIGRpdmlkZW5kIGlzIG5lZ2F0aXZlLCBlbHNlIGlzIG5lZ2F0aXZlLlxyXG4gICAgICAvLyBET1dOICAgICAgMSBUaGUgcmVtYWluZGVyIGhhcyB0aGUgc2FtZSBzaWduIGFzIHRoZSBkaXZpZGVuZC5cclxuICAgICAgLy8gICAgICAgICAgICAgVGhpcyBtb2R1bG8gbW9kZSBpcyBjb21tb25seSBrbm93biBhcyAndHJ1bmNhdGVkIGRpdmlzaW9uJyBhbmQgaXNcclxuICAgICAgLy8gICAgICAgICAgICAgZXF1aXZhbGVudCB0byAoYSAlIG4pIGluIEphdmFTY3JpcHQuXHJcbiAgICAgIC8vIEZMT09SICAgICAzIFRoZSByZW1haW5kZXIgaGFzIHRoZSBzYW1lIHNpZ24gYXMgdGhlIGRpdmlzb3IgKFB5dGhvbiAlKS5cclxuICAgICAgLy8gSEFMRl9FVkVOIDYgVGhpcyBtb2R1bG8gbW9kZSBpbXBsZW1lbnRzIHRoZSBJRUVFIDc1NCByZW1haW5kZXIgZnVuY3Rpb24uXHJcbiAgICAgIC8vIEVVQ0xJRCAgICA5IEV1Y2xpZGlhbiBkaXZpc2lvbi4gcSA9IHNpZ24obikgKiBmbG9vcihhIC8gYWJzKG4pKS5cclxuICAgICAgLy8gICAgICAgICAgICAgVGhlIHJlbWFpbmRlciBpcyBhbHdheXMgcG9zaXRpdmUuXHJcbiAgICAgIC8vXHJcbiAgICAgIC8vIFRoZSB0cnVuY2F0ZWQgZGl2aXNpb24sIGZsb29yZWQgZGl2aXNpb24sIEV1Y2xpZGlhbiBkaXZpc2lvbiBhbmQgSUVFRSA3NTQgcmVtYWluZGVyXHJcbiAgICAgIC8vIG1vZGVzIGFyZSBjb21tb25seSB1c2VkIGZvciB0aGUgbW9kdWx1cyBvcGVyYXRpb24uXHJcbiAgICAgIC8vIEFsdGhvdWdoIHRoZSBvdGhlciByb3VuZGluZyBtb2RlcyBjYW4gYWxzbyBiZSB1c2VkLCB0aGV5IG1heSBub3QgZ2l2ZSB1c2VmdWwgcmVzdWx0cy5cclxuICAgICAgTU9EVUxPX01PREUgPSAxLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIDlcclxuXHJcbiAgICAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMgb2YgdGhlIHJlc3VsdCBvZiB0aGUgZXhwb25lbnRpYXRlZEJ5IG9wZXJhdGlvbi5cclxuICAgICAgLy8gSWYgUE9XX1BSRUNJU0lPTiBpcyAwLCB0aGVyZSB3aWxsIGJlIHVubGltaXRlZCBzaWduaWZpY2FudCBkaWdpdHMuXHJcbiAgICAgIFBPV19QUkVDSVNJT04gPSAwLCAgICAgICAgICAgICAgICAgICAgLy8gMCB0byBNQVhcclxuXHJcbiAgICAgIC8vIFRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiB1c2VkIGJ5IHRoZSBCaWdOdW1iZXIucHJvdG90eXBlLnRvRm9ybWF0IG1ldGhvZC5cclxuICAgICAgRk9STUFUID0ge1xyXG4gICAgICAgIHByZWZpeDogJycsXHJcbiAgICAgICAgZ3JvdXBTaXplOiAzLFxyXG4gICAgICAgIHNlY29uZGFyeUdyb3VwU2l6ZTogMCxcclxuICAgICAgICBncm91cFNlcGFyYXRvcjogJywnLFxyXG4gICAgICAgIGRlY2ltYWxTZXBhcmF0b3I6ICcuJyxcclxuICAgICAgICBmcmFjdGlvbkdyb3VwU2l6ZTogMCxcclxuICAgICAgICBmcmFjdGlvbkdyb3VwU2VwYXJhdG9yOiAnXFx4QTAnLCAgICAgIC8vIG5vbi1icmVha2luZyBzcGFjZVxyXG4gICAgICAgIHN1ZmZpeDogJydcclxuICAgICAgfSxcclxuXHJcbiAgICAgIC8vIFRoZSBhbHBoYWJldCB1c2VkIGZvciBiYXNlIGNvbnZlcnNpb24uIEl0IG11c3QgYmUgYXQgbGVhc3QgMiBjaGFyYWN0ZXJzIGxvbmcsIHdpdGggbm8gJysnLFxyXG4gICAgICAvLyAnLScsICcuJywgd2hpdGVzcGFjZSwgb3IgcmVwZWF0ZWQgY2hhcmFjdGVyLlxyXG4gICAgICAvLyAnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVokXydcclxuICAgICAgQUxQSEFCRVQgPSAnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JztcclxuXHJcblxyXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblxyXG4gICAgLy8gQ09OU1RSVUNUT1JcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFRoZSBCaWdOdW1iZXIgY29uc3RydWN0b3IgYW5kIGV4cG9ydGVkIGZ1bmN0aW9uLlxyXG4gICAgICogQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgYSBCaWdOdW1iZXIgb2JqZWN0LlxyXG4gICAgICpcclxuICAgICAqIHYge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfSBBIG51bWVyaWMgdmFsdWUuXHJcbiAgICAgKiBbYl0ge251bWJlcn0gVGhlIGJhc2Ugb2Ygdi4gSW50ZWdlciwgMiB0byBBTFBIQUJFVC5sZW5ndGggaW5jbHVzaXZlLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBCaWdOdW1iZXIodiwgYikge1xyXG4gICAgICB2YXIgYWxwaGFiZXQsIGMsIGNhc2VDaGFuZ2VkLCBlLCBpLCBpc051bSwgbGVuLCBzdHIsXHJcbiAgICAgICAgeCA9IHRoaXM7XHJcblxyXG4gICAgICAvLyBFbmFibGUgY29uc3RydWN0b3IgY2FsbCB3aXRob3V0IGBuZXdgLlxyXG4gICAgICBpZiAoISh4IGluc3RhbmNlb2YgQmlnTnVtYmVyKSkgcmV0dXJuIG5ldyBCaWdOdW1iZXIodiwgYik7XHJcblxyXG4gICAgICBpZiAoYiA9PSBudWxsKSB7XHJcblxyXG4gICAgICAgIGlmICh2ICYmIHYuX2lzQmlnTnVtYmVyID09PSB0cnVlKSB7XHJcbiAgICAgICAgICB4LnMgPSB2LnM7XHJcblxyXG4gICAgICAgICAgaWYgKCF2LmMgfHwgdi5lID4gTUFYX0VYUCkge1xyXG4gICAgICAgICAgICB4LmMgPSB4LmUgPSBudWxsO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh2LmUgPCBNSU5fRVhQKSB7XHJcbiAgICAgICAgICAgIHguYyA9IFt4LmUgPSAwXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHguZSA9IHYuZTtcclxuICAgICAgICAgICAgeC5jID0gdi5jLnNsaWNlKCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKChpc051bSA9IHR5cGVvZiB2ID09ICdudW1iZXInKSAmJiB2ICogMCA9PSAwKSB7XHJcblxyXG4gICAgICAgICAgLy8gVXNlIGAxIC8gbmAgdG8gaGFuZGxlIG1pbnVzIHplcm8gYWxzby5cclxuICAgICAgICAgIHgucyA9IDEgLyB2IDwgMCA/ICh2ID0gLXYsIC0xKSA6IDE7XHJcblxyXG4gICAgICAgICAgLy8gRmFzdCBwYXRoIGZvciBpbnRlZ2Vycywgd2hlcmUgbiA8IDIxNDc0ODM2NDggKDIqKjMxKS5cclxuICAgICAgICAgIGlmICh2ID09PSB+fnYpIHtcclxuICAgICAgICAgICAgZm9yIChlID0gMCwgaSA9IHY7IGkgPj0gMTA7IGkgLz0gMTAsIGUrKyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoZSA+IE1BWF9FWFApIHtcclxuICAgICAgICAgICAgICB4LmMgPSB4LmUgPSBudWxsO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHguZSA9IGU7XHJcbiAgICAgICAgICAgICAgeC5jID0gW3ZdO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgc3RyID0gU3RyaW5nKHYpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgaWYgKCFpc051bWVyaWMudGVzdChzdHIgPSBTdHJpbmcodikpKSByZXR1cm4gcGFyc2VOdW1lcmljKHgsIHN0ciwgaXNOdW0pO1xyXG5cclxuICAgICAgICAgIHgucyA9IHN0ci5jaGFyQ29kZUF0KDApID09IDQ1ID8gKHN0ciA9IHN0ci5zbGljZSgxKSwgLTEpIDogMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIERlY2ltYWwgcG9pbnQ/XHJcbiAgICAgICAgaWYgKChlID0gc3RyLmluZGV4T2YoJy4nKSkgPiAtMSkgc3RyID0gc3RyLnJlcGxhY2UoJy4nLCAnJyk7XHJcblxyXG4gICAgICAgIC8vIEV4cG9uZW50aWFsIGZvcm0/XHJcbiAgICAgICAgaWYgKChpID0gc3RyLnNlYXJjaCgvZS9pKSkgPiAwKSB7XHJcblxyXG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIGV4cG9uZW50LlxyXG4gICAgICAgICAgaWYgKGUgPCAwKSBlID0gaTtcclxuICAgICAgICAgIGUgKz0gK3N0ci5zbGljZShpICsgMSk7XHJcbiAgICAgICAgICBzdHIgPSBzdHIuc3Vic3RyaW5nKDAsIGkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZSA8IDApIHtcclxuXHJcbiAgICAgICAgICAvLyBJbnRlZ2VyLlxyXG4gICAgICAgICAgZSA9IHN0ci5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIEJhc2Uge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2J9J1xyXG4gICAgICAgIGludENoZWNrKGIsIDIsIEFMUEhBQkVULmxlbmd0aCwgJ0Jhc2UnKTtcclxuXHJcbiAgICAgICAgLy8gQWxsb3cgZXhwb25lbnRpYWwgbm90YXRpb24gdG8gYmUgdXNlZCB3aXRoIGJhc2UgMTAgYXJndW1lbnQsIHdoaWxlXHJcbiAgICAgICAgLy8gYWxzbyByb3VuZGluZyB0byBERUNJTUFMX1BMQUNFUyBhcyB3aXRoIG90aGVyIGJhc2VzLlxyXG4gICAgICAgIGlmIChiID09IDEwKSB7XHJcbiAgICAgICAgICB4ID0gbmV3IEJpZ051bWJlcih2KTtcclxuICAgICAgICAgIHJldHVybiByb3VuZCh4LCBERUNJTUFMX1BMQUNFUyArIHguZSArIDEsIFJPVU5ESU5HX01PREUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RyID0gU3RyaW5nKHYpO1xyXG5cclxuICAgICAgICBpZiAoaXNOdW0gPSB0eXBlb2YgdiA9PSAnbnVtYmVyJykge1xyXG5cclxuICAgICAgICAgIC8vIEF2b2lkIHBvdGVudGlhbCBpbnRlcnByZXRhdGlvbiBvZiBJbmZpbml0eSBhbmQgTmFOIGFzIGJhc2UgNDQrIHZhbHVlcy5cclxuICAgICAgICAgIGlmICh2ICogMCAhPSAwKSByZXR1cm4gcGFyc2VOdW1lcmljKHgsIHN0ciwgaXNOdW0sIGIpO1xyXG5cclxuICAgICAgICAgIHgucyA9IDEgLyB2IDwgMCA/IChzdHIgPSBzdHIuc2xpY2UoMSksIC0xKSA6IDE7XHJcblxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE51bWJlciBwcmltaXRpdmUgaGFzIG1vcmUgdGhhbiAxNSBzaWduaWZpY2FudCBkaWdpdHM6IHtufSdcclxuICAgICAgICAgIGlmIChCaWdOdW1iZXIuREVCVUcgJiYgc3RyLnJlcGxhY2UoL14wXFwuMCp8XFwuLywgJycpLmxlbmd0aCA+IDE1KSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAodG9vTWFueURpZ2l0cyArIHYpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB4LnMgPSBzdHIuY2hhckNvZGVBdCgwKSA9PT0gNDUgPyAoc3RyID0gc3RyLnNsaWNlKDEpLCAtMSkgOiAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYWxwaGFiZXQgPSBBTFBIQUJFVC5zbGljZSgwLCBiKTtcclxuICAgICAgICBlID0gaSA9IDA7XHJcblxyXG4gICAgICAgIC8vIENoZWNrIHRoYXQgc3RyIGlzIGEgdmFsaWQgYmFzZSBiIG51bWJlci5cclxuICAgICAgICAvLyBEb24ndCB1c2UgUmVnRXhwLCBzbyBhbHBoYWJldCBjYW4gY29udGFpbiBzcGVjaWFsIGNoYXJhY3RlcnMuXHJcbiAgICAgICAgZm9yIChsZW4gPSBzdHIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgIGlmIChhbHBoYWJldC5pbmRleE9mKGMgPSBzdHIuY2hhckF0KGkpKSA8IDApIHtcclxuICAgICAgICAgICAgaWYgKGMgPT0gJy4nKSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIElmICcuJyBpcyBub3QgdGhlIGZpcnN0IGNoYXJhY3RlciBhbmQgaXQgaGFzIG5vdCBiZSBmb3VuZCBiZWZvcmUuXHJcbiAgICAgICAgICAgICAgaWYgKGkgPiBlKSB7XHJcbiAgICAgICAgICAgICAgICBlID0gbGVuO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFjYXNlQ2hhbmdlZCkge1xyXG5cclxuICAgICAgICAgICAgICAvLyBBbGxvdyBlLmcuIGhleGFkZWNpbWFsICdGRicgYXMgd2VsbCBhcyAnZmYnLlxyXG4gICAgICAgICAgICAgIGlmIChzdHIgPT0gc3RyLnRvVXBwZXJDYXNlKCkgJiYgKHN0ciA9IHN0ci50b0xvd2VyQ2FzZSgpKSB8fFxyXG4gICAgICAgICAgICAgICAgICBzdHIgPT0gc3RyLnRvTG93ZXJDYXNlKCkgJiYgKHN0ciA9IHN0ci50b1VwcGVyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZUNoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaSA9IC0xO1xyXG4gICAgICAgICAgICAgICAgZSA9IDA7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBwYXJzZU51bWVyaWMoeCwgU3RyaW5nKHYpLCBpc051bSwgYik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBQcmV2ZW50IGxhdGVyIGNoZWNrIGZvciBsZW5ndGggb24gY29udmVydGVkIG51bWJlci5cclxuICAgICAgICBpc051bSA9IGZhbHNlO1xyXG4gICAgICAgIHN0ciA9IGNvbnZlcnRCYXNlKHN0ciwgYiwgMTAsIHgucyk7XHJcblxyXG4gICAgICAgIC8vIERlY2ltYWwgcG9pbnQ/XHJcbiAgICAgICAgaWYgKChlID0gc3RyLmluZGV4T2YoJy4nKSkgPiAtMSkgc3RyID0gc3RyLnJlcGxhY2UoJy4nLCAnJyk7XHJcbiAgICAgICAgZWxzZSBlID0gc3RyLmxlbmd0aDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gRGV0ZXJtaW5lIGxlYWRpbmcgemVyb3MuXHJcbiAgICAgIGZvciAoaSA9IDA7IHN0ci5jaGFyQ29kZUF0KGkpID09PSA0ODsgaSsrKTtcclxuXHJcbiAgICAgIC8vIERldGVybWluZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgZm9yIChsZW4gPSBzdHIubGVuZ3RoOyBzdHIuY2hhckNvZGVBdCgtLWxlbikgPT09IDQ4Oyk7XHJcblxyXG4gICAgICBpZiAoc3RyID0gc3RyLnNsaWNlKGksICsrbGVuKSkge1xyXG4gICAgICAgIGxlbiAtPSBpO1xyXG5cclxuICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gTnVtYmVyIHByaW1pdGl2ZSBoYXMgbW9yZSB0aGFuIDE1IHNpZ25pZmljYW50IGRpZ2l0czoge259J1xyXG4gICAgICAgIGlmIChpc051bSAmJiBCaWdOdW1iZXIuREVCVUcgJiZcclxuICAgICAgICAgIGxlbiA+IDE1ICYmICh2ID4gTUFYX1NBRkVfSU5URUdFUiB8fCB2ICE9PSBtYXRoZmxvb3IodikpKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAodG9vTWFueURpZ2l0cyArICh4LnMgKiB2KSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAgLy8gT3ZlcmZsb3c/XHJcbiAgICAgICAgaWYgKChlID0gZSAtIGkgLSAxKSA+IE1BWF9FWFApIHtcclxuXHJcbiAgICAgICAgICAvLyBJbmZpbml0eS5cclxuICAgICAgICAgIHguYyA9IHguZSA9IG51bGw7XHJcblxyXG4gICAgICAgIC8vIFVuZGVyZmxvdz9cclxuICAgICAgICB9IGVsc2UgaWYgKGUgPCBNSU5fRVhQKSB7XHJcblxyXG4gICAgICAgICAgLy8gWmVyby5cclxuICAgICAgICAgIHguYyA9IFt4LmUgPSAwXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgeC5lID0gZTtcclxuICAgICAgICAgIHguYyA9IFtdO1xyXG5cclxuICAgICAgICAgIC8vIFRyYW5zZm9ybSBiYXNlXHJcblxyXG4gICAgICAgICAgLy8gZSBpcyB0aGUgYmFzZSAxMCBleHBvbmVudC5cclxuICAgICAgICAgIC8vIGkgaXMgd2hlcmUgdG8gc2xpY2Ugc3RyIHRvIGdldCB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgY29lZmZpY2llbnQgYXJyYXkuXHJcbiAgICAgICAgICBpID0gKGUgKyAxKSAlIExPR19CQVNFO1xyXG4gICAgICAgICAgaWYgKGUgPCAwKSBpICs9IExPR19CQVNFOyAgLy8gaSA8IDFcclxuXHJcbiAgICAgICAgICBpZiAoaSA8IGxlbikge1xyXG4gICAgICAgICAgICBpZiAoaSkgeC5jLnB1c2goK3N0ci5zbGljZSgwLCBpKSk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxlbiAtPSBMT0dfQkFTRTsgaSA8IGxlbjspIHtcclxuICAgICAgICAgICAgICB4LmMucHVzaCgrc3RyLnNsaWNlKGksIGkgKz0gTE9HX0JBU0UpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaSA9IExPR19CQVNFIC0gKHN0ciA9IHN0ci5zbGljZShpKSkubGVuZ3RoO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaSAtPSBsZW47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgZm9yICg7IGktLTsgc3RyICs9ICcwJyk7XHJcbiAgICAgICAgICB4LmMucHVzaCgrc3RyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgeC5jID0gW3guZSA9IDBdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIENPTlNUUlVDVE9SIFBST1BFUlRJRVNcclxuXHJcblxyXG4gICAgQmlnTnVtYmVyLmNsb25lID0gY2xvbmU7XHJcblxyXG4gICAgQmlnTnVtYmVyLlJPVU5EX1VQID0gMDtcclxuICAgIEJpZ051bWJlci5ST1VORF9ET1dOID0gMTtcclxuICAgIEJpZ051bWJlci5ST1VORF9DRUlMID0gMjtcclxuICAgIEJpZ051bWJlci5ST1VORF9GTE9PUiA9IDM7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfSEFMRl9VUCA9IDQ7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfSEFMRl9ET1dOID0gNTtcclxuICAgIEJpZ051bWJlci5ST1VORF9IQUxGX0VWRU4gPSA2O1xyXG4gICAgQmlnTnVtYmVyLlJPVU5EX0hBTEZfQ0VJTCA9IDc7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfSEFMRl9GTE9PUiA9IDg7XHJcbiAgICBCaWdOdW1iZXIuRVVDTElEID0gOTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIENvbmZpZ3VyZSBpbmZyZXF1ZW50bHktY2hhbmdpbmcgbGlicmFyeS13aWRlIHNldHRpbmdzLlxyXG4gICAgICpcclxuICAgICAqIEFjY2VwdCBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5nIG9wdGlvbmFsIHByb3BlcnRpZXMgKGlmIHRoZSB2YWx1ZSBvZiBhIHByb3BlcnR5IGlzXHJcbiAgICAgKiBhIG51bWJlciwgaXQgbXVzdCBiZSBhbiBpbnRlZ2VyIHdpdGhpbiB0aGUgaW5jbHVzaXZlIHJhbmdlIHN0YXRlZCk6XHJcbiAgICAgKlxyXG4gICAgICogICBERUNJTUFMX1BMQUNFUyAgIHtudW1iZXJ9ICAgICAgICAgICAwIHRvIE1BWFxyXG4gICAgICogICBST1VORElOR19NT0RFICAgIHtudW1iZXJ9ICAgICAgICAgICAwIHRvIDhcclxuICAgICAqICAgRVhQT05FTlRJQUxfQVQgICB7bnVtYmVyfG51bWJlcltdfSAgLU1BWCB0byBNQVggIG9yICBbLU1BWCB0byAwLCAwIHRvIE1BWF1cclxuICAgICAqICAgUkFOR0UgICAgICAgICAgICB7bnVtYmVyfG51bWJlcltdfSAgLU1BWCB0byBNQVggKG5vdCB6ZXJvKSAgb3IgIFstTUFYIHRvIC0xLCAxIHRvIE1BWF1cclxuICAgICAqICAgQ1JZUFRPICAgICAgICAgICB7Ym9vbGVhbn0gICAgICAgICAgdHJ1ZSBvciBmYWxzZVxyXG4gICAgICogICBNT0RVTE9fTU9ERSAgICAgIHtudW1iZXJ9ICAgICAgICAgICAwIHRvIDlcclxuICAgICAqICAgUE9XX1BSRUNJU0lPTiAgICAgICB7bnVtYmVyfSAgICAgICAgICAgMCB0byBNQVhcclxuICAgICAqICAgQUxQSEFCRVQgICAgICAgICB7c3RyaW5nfSAgICAgICAgICAgQSBzdHJpbmcgb2YgdHdvIG9yIG1vcmUgdW5pcXVlIGNoYXJhY3RlcnMgd2hpY2ggZG9lc1xyXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgY29udGFpbiAnLicuXHJcbiAgICAgKiAgIEZPUk1BVCAgICAgICAgICAge29iamVjdH0gICAgICAgICAgIEFuIG9iamVjdCB3aXRoIHNvbWUgb2YgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxyXG4gICAgICogICAgIHByZWZpeCAgICAgICAgICAgICAgICAge3N0cmluZ31cclxuICAgICAqICAgICBncm91cFNpemUgICAgICAgICAgICAgIHtudW1iZXJ9XHJcbiAgICAgKiAgICAgc2Vjb25kYXJ5R3JvdXBTaXplICAgICB7bnVtYmVyfVxyXG4gICAgICogICAgIGdyb3VwU2VwYXJhdG9yICAgICAgICAge3N0cmluZ31cclxuICAgICAqICAgICBkZWNpbWFsU2VwYXJhdG9yICAgICAgIHtzdHJpbmd9XHJcbiAgICAgKiAgICAgZnJhY3Rpb25Hcm91cFNpemUgICAgICB7bnVtYmVyfVxyXG4gICAgICogICAgIGZyYWN0aW9uR3JvdXBTZXBhcmF0b3Ige3N0cmluZ31cclxuICAgICAqICAgICBzdWZmaXggICAgICAgICAgICAgICAgIHtzdHJpbmd9XHJcbiAgICAgKlxyXG4gICAgICogKFRoZSB2YWx1ZXMgYXNzaWduZWQgdG8gdGhlIGFib3ZlIEZPUk1BVCBvYmplY3QgcHJvcGVydGllcyBhcmUgbm90IGNoZWNrZWQgZm9yIHZhbGlkaXR5LilcclxuICAgICAqXHJcbiAgICAgKiBFLmcuXHJcbiAgICAgKiBCaWdOdW1iZXIuY29uZmlnKHsgREVDSU1BTF9QTEFDRVMgOiAyMCwgUk9VTkRJTkdfTU9ERSA6IDQgfSlcclxuICAgICAqXHJcbiAgICAgKiBJZ25vcmUgcHJvcGVydGllcy9wYXJhbWV0ZXJzIHNldCB0byBudWxsIG9yIHVuZGVmaW5lZCwgZXhjZXB0IGZvciBBTFBIQUJFVC5cclxuICAgICAqXHJcbiAgICAgKiBSZXR1cm4gYW4gb2JqZWN0IHdpdGggdGhlIHByb3BlcnRpZXMgY3VycmVudCB2YWx1ZXMuXHJcbiAgICAgKi9cclxuICAgIEJpZ051bWJlci5jb25maWcgPSBCaWdOdW1iZXIuc2V0ID0gZnVuY3Rpb24gKG9iaikge1xyXG4gICAgICB2YXIgcCwgdjtcclxuXHJcbiAgICAgIGlmIChvYmogIT0gbnVsbCkge1xyXG5cclxuICAgICAgICBpZiAodHlwZW9mIG9iaiA9PSAnb2JqZWN0Jykge1xyXG5cclxuICAgICAgICAgIC8vIERFQ0lNQUxfUExBQ0VTIHtudW1iZXJ9IEludGVnZXIsIDAgdG8gTUFYIGluY2x1c2l2ZS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBERUNJTUFMX1BMQUNFUyB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnREVDSU1BTF9QTEFDRVMnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG4gICAgICAgICAgICBpbnRDaGVjayh2LCAwLCBNQVgsIHApO1xyXG4gICAgICAgICAgICBERUNJTUFMX1BMQUNFUyA9IHY7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gUk9VTkRJTkdfTU9ERSB7bnVtYmVyfSBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIFJPVU5ESU5HX01PREUge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3Z9J1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ1JPVU5ESU5HX01PREUnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG4gICAgICAgICAgICBpbnRDaGVjayh2LCAwLCA4LCBwKTtcclxuICAgICAgICAgICAgUk9VTkRJTkdfTU9ERSA9IHY7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gRVhQT05FTlRJQUxfQVQge251bWJlcnxudW1iZXJbXX1cclxuICAgICAgICAgIC8vIEludGVnZXIsIC1NQVggdG8gTUFYIGluY2x1c2l2ZSBvclxyXG4gICAgICAgICAgLy8gW2ludGVnZXIgLU1BWCB0byAwIGluY2x1c2l2ZSwgMCB0byBNQVggaW5jbHVzaXZlXS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBFWFBPTkVOVElBTF9BVCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnRVhQT05FTlRJQUxfQVQnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG4gICAgICAgICAgICBpZiAodiAmJiB2LnBvcCkge1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHZbMF0sIC1NQVgsIDAsIHApO1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHZbMV0sIDAsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgICAgVE9fRVhQX05FRyA9IHZbMF07XHJcbiAgICAgICAgICAgICAgVE9fRVhQX1BPUyA9IHZbMV07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaW50Q2hlY2sodiwgLU1BWCwgTUFYLCBwKTtcclxuICAgICAgICAgICAgICBUT19FWFBfTkVHID0gLShUT19FWFBfUE9TID0gdiA8IDAgPyAtdiA6IHYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gUkFOR0Uge251bWJlcnxudW1iZXJbXX0gTm9uLXplcm8gaW50ZWdlciwgLU1BWCB0byBNQVggaW5jbHVzaXZlIG9yXHJcbiAgICAgICAgICAvLyBbaW50ZWdlciAtTUFYIHRvIC0xIGluY2x1c2l2ZSwgaW50ZWdlciAxIHRvIE1BWCBpbmNsdXNpdmVdLlxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIFJBTkdFIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZXxjYW5ub3QgYmUgemVyb306IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdSQU5HRScpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcbiAgICAgICAgICAgIGlmICh2ICYmIHYucG9wKSB7XHJcbiAgICAgICAgICAgICAgaW50Q2hlY2sodlswXSwgLU1BWCwgLTEsIHApO1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHZbMV0sIDEsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgICAgTUlOX0VYUCA9IHZbMF07XHJcbiAgICAgICAgICAgICAgTUFYX0VYUCA9IHZbMV07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaW50Q2hlY2sodiwgLU1BWCwgTUFYLCBwKTtcclxuICAgICAgICAgICAgICBpZiAodikge1xyXG4gICAgICAgICAgICAgICAgTUlOX0VYUCA9IC0oTUFYX0VYUCA9IHYgPCAwID8gLXYgOiB2KTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyBwICsgJyBjYW5ub3QgYmUgemVybzogJyArIHYpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIENSWVBUTyB7Ym9vbGVhbn0gdHJ1ZSBvciBmYWxzZS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBDUllQVE8gbm90IHRydWUgb3IgZmFsc2U6IHt2fSdcclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBjcnlwdG8gdW5hdmFpbGFibGUnXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnQ1JZUFRPJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaWYgKHYgPT09ICEhdikge1xyXG4gICAgICAgICAgICAgIGlmICh2KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNyeXB0byAhPSAndW5kZWZpbmVkJyAmJiBjcnlwdG8gJiZcclxuICAgICAgICAgICAgICAgICAoY3J5cHRvLmdldFJhbmRvbVZhbHVlcyB8fCBjcnlwdG8ucmFuZG9tQnl0ZXMpKSB7XHJcbiAgICAgICAgICAgICAgICAgIENSWVBUTyA9IHY7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICBDUllQVE8gPSAhdjtcclxuICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgICAgICAgIChiaWdudW1iZXJFcnJvciArICdjcnlwdG8gdW5hdmFpbGFibGUnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgQ1JZUFRPID0gdjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgcCArICcgbm90IHRydWUgb3IgZmFsc2U6ICcgKyB2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIE1PRFVMT19NT0RFIHtudW1iZXJ9IEludGVnZXIsIDAgdG8gOSBpbmNsdXNpdmUuXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gTU9EVUxPX01PREUge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3Z9J1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ01PRFVMT19NT0RFJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaW50Q2hlY2sodiwgMCwgOSwgcCk7XHJcbiAgICAgICAgICAgIE1PRFVMT19NT0RFID0gdjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBQT1dfUFJFQ0lTSU9OIHtudW1iZXJ9IEludGVnZXIsIDAgdG8gTUFYIGluY2x1c2l2ZS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBQT1dfUFJFQ0lTSU9OIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdQT1dfUFJFQ0lTSU9OJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaW50Q2hlY2sodiwgMCwgTUFYLCBwKTtcclxuICAgICAgICAgICAgUE9XX1BSRUNJU0lPTiA9IHY7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gRk9STUFUIHtvYmplY3R9XHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gRk9STUFUIG5vdCBhbiBvYmplY3Q6IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdGT1JNQVQnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgPT0gJ29iamVjdCcpIEZPUk1BVCA9IHY7XHJcbiAgICAgICAgICAgIGVsc2UgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgIChiaWdudW1iZXJFcnJvciArIHAgKyAnIG5vdCBhbiBvYmplY3Q6ICcgKyB2KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBBTFBIQUJFVCB7c3RyaW5nfVxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIEFMUEhBQkVUIGludmFsaWQ6IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdBTFBIQUJFVCcpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcblxyXG4gICAgICAgICAgICAvLyBEaXNhbGxvdyBpZiBsZXNzIHRoYW4gdHdvIGNoYXJhY3RlcnMsXHJcbiAgICAgICAgICAgIC8vIG9yIGlmIGl0IGNvbnRhaW5zICcrJywgJy0nLCAnLicsIHdoaXRlc3BhY2UsIG9yIGEgcmVwZWF0ZWQgY2hhcmFjdGVyLlxyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgPT0gJ3N0cmluZycgJiYgIS9eLj8kfFsrXFwtLlxcc118KC4pLipcXDEvLnRlc3QodikpIHtcclxuICAgICAgICAgICAgICBBTFBIQUJFVCA9IHY7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgcCArICcgaW52YWxpZDogJyArIHYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE9iamVjdCBleHBlY3RlZDoge3Z9J1xyXG4gICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnT2JqZWN0IGV4cGVjdGVkOiAnICsgb2JqKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgREVDSU1BTF9QTEFDRVM6IERFQ0lNQUxfUExBQ0VTLFxyXG4gICAgICAgIFJPVU5ESU5HX01PREU6IFJPVU5ESU5HX01PREUsXHJcbiAgICAgICAgRVhQT05FTlRJQUxfQVQ6IFtUT19FWFBfTkVHLCBUT19FWFBfUE9TXSxcclxuICAgICAgICBSQU5HRTogW01JTl9FWFAsIE1BWF9FWFBdLFxyXG4gICAgICAgIENSWVBUTzogQ1JZUFRPLFxyXG4gICAgICAgIE1PRFVMT19NT0RFOiBNT0RVTE9fTU9ERSxcclxuICAgICAgICBQT1dfUFJFQ0lTSU9OOiBQT1dfUFJFQ0lTSU9OLFxyXG4gICAgICAgIEZPUk1BVDogRk9STUFULFxyXG4gICAgICAgIEFMUEhBQkVUOiBBTFBIQUJFVFxyXG4gICAgICB9O1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHYgaXMgYSBCaWdOdW1iZXIgaW5zdGFuY2UsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKlxyXG4gICAgICogSWYgQmlnTnVtYmVyLkRFQlVHIGlzIHRydWUsIHRocm93IGlmIGEgQmlnTnVtYmVyIGluc3RhbmNlIGlzIG5vdCB3ZWxsLWZvcm1lZC5cclxuICAgICAqXHJcbiAgICAgKiB2IHthbnl9XHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEludmFsaWQgQmlnTnVtYmVyOiB7dn0nXHJcbiAgICAgKi9cclxuICAgIEJpZ051bWJlci5pc0JpZ051bWJlciA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgIGlmICghdiB8fCB2Ll9pc0JpZ051bWJlciAhPT0gdHJ1ZSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICBpZiAoIUJpZ051bWJlci5ERUJVRykgcmV0dXJuIHRydWU7XHJcblxyXG4gICAgICB2YXIgaSwgbixcclxuICAgICAgICBjID0gdi5jLFxyXG4gICAgICAgIGUgPSB2LmUsXHJcbiAgICAgICAgcyA9IHYucztcclxuXHJcbiAgICAgIG91dDogaWYgKHt9LnRvU3RyaW5nLmNhbGwoYykgPT0gJ1tvYmplY3QgQXJyYXldJykge1xyXG5cclxuICAgICAgICBpZiAoKHMgPT09IDEgfHwgcyA9PT0gLTEpICYmIGUgPj0gLU1BWCAmJiBlIDw9IE1BWCAmJiBlID09PSBtYXRoZmxvb3IoZSkpIHtcclxuXHJcbiAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgZWxlbWVudCBpcyB6ZXJvLCB0aGUgQmlnTnVtYmVyIHZhbHVlIG11c3QgYmUgemVyby5cclxuICAgICAgICAgIGlmIChjWzBdID09PSAwKSB7XHJcbiAgICAgICAgICAgIGlmIChlID09PSAwICYmIGMubGVuZ3RoID09PSAxKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgYnJlYWsgb3V0O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIENhbGN1bGF0ZSBudW1iZXIgb2YgZGlnaXRzIHRoYXQgY1swXSBzaG91bGQgaGF2ZSwgYmFzZWQgb24gdGhlIGV4cG9uZW50LlxyXG4gICAgICAgICAgaSA9IChlICsgMSkgJSBMT0dfQkFTRTtcclxuICAgICAgICAgIGlmIChpIDwgMSkgaSArPSBMT0dfQkFTRTtcclxuXHJcbiAgICAgICAgICAvLyBDYWxjdWxhdGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBjWzBdLlxyXG4gICAgICAgICAgLy9pZiAoTWF0aC5jZWlsKE1hdGgubG9nKGNbMF0gKyAxKSAvIE1hdGguTE4xMCkgPT0gaSkge1xyXG4gICAgICAgICAgaWYgKFN0cmluZyhjWzBdKS5sZW5ndGggPT0gaSkge1xyXG5cclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBuID0gY1tpXTtcclxuICAgICAgICAgICAgICBpZiAobiA8IDAgfHwgbiA+PSBCQVNFIHx8IG4gIT09IG1hdGhmbG9vcihuKSkgYnJlYWsgb3V0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBMYXN0IGVsZW1lbnQgY2Fubm90IGJlIHplcm8sIHVubGVzcyBpdCBpcyB0aGUgb25seSBlbGVtZW50LlxyXG4gICAgICAgICAgICBpZiAobiAhPT0gMCkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgLy8gSW5maW5pdHkvTmFOXHJcbiAgICAgIH0gZWxzZSBpZiAoYyA9PT0gbnVsbCAmJiBlID09PSBudWxsICYmIChzID09PSBudWxsIHx8IHMgPT09IDEgfHwgcyA9PT0gLTEpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ0ludmFsaWQgQmlnTnVtYmVyOiAnICsgdik7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgbWF4aW11bSBvZiB0aGUgYXJndW1lbnRzLlxyXG4gICAgICpcclxuICAgICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xCaWdOdW1iZXJ9XHJcbiAgICAgKi9cclxuICAgIEJpZ051bWJlci5tYXhpbXVtID0gQmlnTnVtYmVyLm1heCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIG1heE9yTWluKGFyZ3VtZW50cywgUC5sdCk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgbWluaW11bSBvZiB0aGUgYXJndW1lbnRzLlxyXG4gICAgICpcclxuICAgICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xCaWdOdW1iZXJ9XHJcbiAgICAgKi9cclxuICAgIEJpZ051bWJlci5taW5pbXVtID0gQmlnTnVtYmVyLm1pbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIG1heE9yTWluKGFyZ3VtZW50cywgUC5ndCk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aXRoIGEgcmFuZG9tIHZhbHVlIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiAwIGFuZCBsZXNzIHRoYW4gMSxcclxuICAgICAqIGFuZCB3aXRoIGRwLCBvciBERUNJTUFMX1BMQUNFUyBpZiBkcCBpcyBvbWl0dGVkLCBkZWNpbWFsIHBsYWNlcyAob3IgbGVzcyBpZiB0cmFpbGluZ1xyXG4gICAgICogemVyb3MgYXJlIHByb2R1Y2VkKS5cclxuICAgICAqXHJcbiAgICAgKiBbZHBdIHtudW1iZXJ9IERlY2ltYWwgcGxhY2VzLiBJbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEFyZ3VtZW50IHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtkcH0nXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gY3J5cHRvIHVuYXZhaWxhYmxlJ1xyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIucmFuZG9tID0gKGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIHBvdzJfNTMgPSAweDIwMDAwMDAwMDAwMDAwO1xyXG5cclxuICAgICAgLy8gUmV0dXJuIGEgNTMgYml0IGludGVnZXIgbiwgd2hlcmUgMCA8PSBuIDwgOTAwNzE5OTI1NDc0MDk5Mi5cclxuICAgICAgLy8gQ2hlY2sgaWYgTWF0aC5yYW5kb20oKSBwcm9kdWNlcyBtb3JlIHRoYW4gMzIgYml0cyBvZiByYW5kb21uZXNzLlxyXG4gICAgICAvLyBJZiBpdCBkb2VzLCBhc3N1bWUgYXQgbGVhc3QgNTMgYml0cyBhcmUgcHJvZHVjZWQsIG90aGVyd2lzZSBhc3N1bWUgYXQgbGVhc3QgMzAgYml0cy5cclxuICAgICAgLy8gMHg0MDAwMDAwMCBpcyAyXjMwLCAweDgwMDAwMCBpcyAyXjIzLCAweDFmZmZmZiBpcyAyXjIxIC0gMS5cclxuICAgICAgdmFyIHJhbmRvbTUzYml0SW50ID0gKE1hdGgucmFuZG9tKCkgKiBwb3cyXzUzKSAmIDB4MWZmZmZmXHJcbiAgICAgICA/IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG1hdGhmbG9vcihNYXRoLnJhbmRvbSgpICogcG93Ml81Myk7IH1cclxuICAgICAgIDogZnVuY3Rpb24gKCkgeyByZXR1cm4gKChNYXRoLnJhbmRvbSgpICogMHg0MDAwMDAwMCB8IDApICogMHg4MDAwMDApICtcclxuICAgICAgICAgKE1hdGgucmFuZG9tKCkgKiAweDgwMDAwMCB8IDApOyB9O1xyXG5cclxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChkcCkge1xyXG4gICAgICAgIHZhciBhLCBiLCBlLCBrLCB2LFxyXG4gICAgICAgICAgaSA9IDAsXHJcbiAgICAgICAgICBjID0gW10sXHJcbiAgICAgICAgICByYW5kID0gbmV3IEJpZ051bWJlcihPTkUpO1xyXG5cclxuICAgICAgICBpZiAoZHAgPT0gbnVsbCkgZHAgPSBERUNJTUFMX1BMQUNFUztcclxuICAgICAgICBlbHNlIGludENoZWNrKGRwLCAwLCBNQVgpO1xyXG5cclxuICAgICAgICBrID0gbWF0aGNlaWwoZHAgLyBMT0dfQkFTRSk7XHJcblxyXG4gICAgICAgIGlmIChDUllQVE8pIHtcclxuXHJcbiAgICAgICAgICAvLyBCcm93c2VycyBzdXBwb3J0aW5nIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMuXHJcbiAgICAgICAgICBpZiAoY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xyXG5cclxuICAgICAgICAgICAgYSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KGsgKj0gMikpO1xyXG5cclxuICAgICAgICAgICAgZm9yICg7IGkgPCBrOykge1xyXG5cclxuICAgICAgICAgICAgICAvLyA1MyBiaXRzOlxyXG4gICAgICAgICAgICAgIC8vICgoTWF0aC5wb3coMiwgMzIpIC0gMSkgKiBNYXRoLnBvdygyLCAyMSkpLnRvU3RyaW5nKDIpXHJcbiAgICAgICAgICAgICAgLy8gMTExMTEgMTExMTExMTEgMTExMTExMTEgMTExMTExMTEgMTExMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDBcclxuICAgICAgICAgICAgICAvLyAoKE1hdGgucG93KDIsIDMyKSAtIDEpID4+PiAxMSkudG9TdHJpbmcoMilcclxuICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMTExMSAxMTExMTExMSAxMTExMTExMVxyXG4gICAgICAgICAgICAgIC8vIDB4MjAwMDAgaXMgMl4yMS5cclxuICAgICAgICAgICAgICB2ID0gYVtpXSAqIDB4MjAwMDAgKyAoYVtpICsgMV0gPj4+IDExKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gUmVqZWN0aW9uIHNhbXBsaW5nOlxyXG4gICAgICAgICAgICAgIC8vIDAgPD0gdiA8IDkwMDcxOTkyNTQ3NDA5OTJcclxuICAgICAgICAgICAgICAvLyBQcm9iYWJpbGl0eSB0aGF0IHYgPj0gOWUxNSwgaXNcclxuICAgICAgICAgICAgICAvLyA3MTk5MjU0NzQwOTkyIC8gOTAwNzE5OTI1NDc0MDk5MiB+PSAwLjAwMDgsIGkuZS4gMSBpbiAxMjUxXHJcbiAgICAgICAgICAgICAgaWYgKHYgPj0gOWUxNSkge1xyXG4gICAgICAgICAgICAgICAgYiA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KDIpKTtcclxuICAgICAgICAgICAgICAgIGFbaV0gPSBiWzBdO1xyXG4gICAgICAgICAgICAgICAgYVtpICsgMV0gPSBiWzFdO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gMCA8PSB2IDw9IDg5OTk5OTk5OTk5OTk5OTlcclxuICAgICAgICAgICAgICAgIC8vIDAgPD0gKHYgJSAxZTE0KSA8PSA5OTk5OTk5OTk5OTk5OVxyXG4gICAgICAgICAgICAgICAgYy5wdXNoKHYgJSAxZTE0KTtcclxuICAgICAgICAgICAgICAgIGkgKz0gMjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaSA9IGsgLyAyO1xyXG5cclxuICAgICAgICAgIC8vIE5vZGUuanMgc3VwcG9ydGluZyBjcnlwdG8ucmFuZG9tQnl0ZXMuXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGNyeXB0by5yYW5kb21CeXRlcykge1xyXG5cclxuICAgICAgICAgICAgLy8gYnVmZmVyXHJcbiAgICAgICAgICAgIGEgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoayAqPSA3KTtcclxuXHJcbiAgICAgICAgICAgIGZvciAoOyBpIDwgazspIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gMHgxMDAwMDAwMDAwMDAwIGlzIDJeNDgsIDB4MTAwMDAwMDAwMDAgaXMgMl40MFxyXG4gICAgICAgICAgICAgIC8vIDB4MTAwMDAwMDAwIGlzIDJeMzIsIDB4MTAwMDAwMCBpcyAyXjI0XHJcbiAgICAgICAgICAgICAgLy8gMTExMTEgMTExMTExMTEgMTExMTExMTEgMTExMTExMTEgMTExMTExMTEgMTExMTExMTEgMTExMTExMTFcclxuICAgICAgICAgICAgICAvLyAwIDw9IHYgPCA5MDA3MTk5MjU0NzQwOTkyXHJcbiAgICAgICAgICAgICAgdiA9ICgoYVtpXSAmIDMxKSAqIDB4MTAwMDAwMDAwMDAwMCkgKyAoYVtpICsgMV0gKiAweDEwMDAwMDAwMDAwKSArXHJcbiAgICAgICAgICAgICAgICAgKGFbaSArIDJdICogMHgxMDAwMDAwMDApICsgKGFbaSArIDNdICogMHgxMDAwMDAwKSArXHJcbiAgICAgICAgICAgICAgICAgKGFbaSArIDRdIDw8IDE2KSArIChhW2kgKyA1XSA8PCA4KSArIGFbaSArIDZdO1xyXG5cclxuICAgICAgICAgICAgICBpZiAodiA+PSA5ZTE1KSB7XHJcbiAgICAgICAgICAgICAgICBjcnlwdG8ucmFuZG9tQnl0ZXMoNykuY29weShhLCBpKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIDAgPD0gKHYgJSAxZTE0KSA8PSA5OTk5OTk5OTk5OTk5OVxyXG4gICAgICAgICAgICAgICAgYy5wdXNoKHYgJSAxZTE0KTtcclxuICAgICAgICAgICAgICAgIGkgKz0gNztcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaSA9IGsgLyA3O1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgQ1JZUFRPID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnY3J5cHRvIHVuYXZhaWxhYmxlJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBVc2UgTWF0aC5yYW5kb20uXHJcbiAgICAgICAgaWYgKCFDUllQVE8pIHtcclxuXHJcbiAgICAgICAgICBmb3IgKDsgaSA8IGs7KSB7XHJcbiAgICAgICAgICAgIHYgPSByYW5kb201M2JpdEludCgpO1xyXG4gICAgICAgICAgICBpZiAodiA8IDllMTUpIGNbaSsrXSA9IHYgJSAxZTE0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgayA9IGNbLS1pXTtcclxuICAgICAgICBkcCAlPSBMT0dfQkFTRTtcclxuXHJcbiAgICAgICAgLy8gQ29udmVydCB0cmFpbGluZyBkaWdpdHMgdG8gemVyb3MgYWNjb3JkaW5nIHRvIGRwLlxyXG4gICAgICAgIGlmIChrICYmIGRwKSB7XHJcbiAgICAgICAgICB2ID0gUE9XU19URU5bTE9HX0JBU0UgLSBkcF07XHJcbiAgICAgICAgICBjW2ldID0gbWF0aGZsb29yKGsgLyB2KSAqIHY7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZW1vdmUgdHJhaWxpbmcgZWxlbWVudHMgd2hpY2ggYXJlIHplcm8uXHJcbiAgICAgICAgZm9yICg7IGNbaV0gPT09IDA7IGMucG9wKCksIGktLSk7XHJcblxyXG4gICAgICAgIC8vIFplcm8/XHJcbiAgICAgICAgaWYgKGkgPCAwKSB7XHJcbiAgICAgICAgICBjID0gW2UgPSAwXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIFJlbW92ZSBsZWFkaW5nIGVsZW1lbnRzIHdoaWNoIGFyZSB6ZXJvIGFuZCBhZGp1c3QgZXhwb25lbnQgYWNjb3JkaW5nbHkuXHJcbiAgICAgICAgICBmb3IgKGUgPSAtMSA7IGNbMF0gPT09IDA7IGMuc3BsaWNlKDAsIDEpLCBlIC09IExPR19CQVNFKTtcclxuXHJcbiAgICAgICAgICAvLyBDb3VudCB0aGUgZGlnaXRzIG9mIHRoZSBmaXJzdCBlbGVtZW50IG9mIGMgdG8gZGV0ZXJtaW5lIGxlYWRpbmcgemVyb3MsIGFuZC4uLlxyXG4gICAgICAgICAgZm9yIChpID0gMSwgdiA9IGNbMF07IHYgPj0gMTA7IHYgLz0gMTAsIGkrKyk7XHJcblxyXG4gICAgICAgICAgLy8gYWRqdXN0IHRoZSBleHBvbmVudCBhY2NvcmRpbmdseS5cclxuICAgICAgICAgIGlmIChpIDwgTE9HX0JBU0UpIGUgLT0gTE9HX0JBU0UgLSBpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmFuZC5lID0gZTtcclxuICAgICAgICByYW5kLmMgPSBjO1xyXG4gICAgICAgIHJldHVybiByYW5kO1xyXG4gICAgICB9O1xyXG4gICAgfSkoKTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgc3VtIG9mIHRoZSBhcmd1bWVudHMuXHJcbiAgICAgKlxyXG4gICAgICogYXJndW1lbnRzIHtudW1iZXJ8c3RyaW5nfEJpZ051bWJlcn1cclxuICAgICAqL1xyXG4gICAgQmlnTnVtYmVyLnN1bSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIGkgPSAxLFxyXG4gICAgICAgIGFyZ3MgPSBhcmd1bWVudHMsXHJcbiAgICAgICAgc3VtID0gbmV3IEJpZ051bWJlcihhcmdzWzBdKTtcclxuICAgICAgZm9yICg7IGkgPCBhcmdzLmxlbmd0aDspIHN1bSA9IHN1bS5wbHVzKGFyZ3NbaSsrXSk7XHJcbiAgICAgIHJldHVybiBzdW07XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvLyBQUklWQVRFIEZVTkNUSU9OU1xyXG5cclxuXHJcbiAgICAvLyBDYWxsZWQgYnkgQmlnTnVtYmVyIGFuZCBCaWdOdW1iZXIucHJvdG90eXBlLnRvU3RyaW5nLlxyXG4gICAgY29udmVydEJhc2UgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgZGVjaW1hbCA9ICcwMTIzNDU2Nzg5JztcclxuXHJcbiAgICAgIC8qXHJcbiAgICAgICAqIENvbnZlcnQgc3RyaW5nIG9mIGJhc2VJbiB0byBhbiBhcnJheSBvZiBudW1iZXJzIG9mIGJhc2VPdXQuXHJcbiAgICAgICAqIEVnLiB0b0Jhc2VPdXQoJzI1NScsIDEwLCAxNikgcmV0dXJucyBbMTUsIDE1XS5cclxuICAgICAgICogRWcuIHRvQmFzZU91dCgnZmYnLCAxNiwgMTApIHJldHVybnMgWzIsIDUsIDVdLlxyXG4gICAgICAgKi9cclxuICAgICAgZnVuY3Rpb24gdG9CYXNlT3V0KHN0ciwgYmFzZUluLCBiYXNlT3V0LCBhbHBoYWJldCkge1xyXG4gICAgICAgIHZhciBqLFxyXG4gICAgICAgICAgYXJyID0gWzBdLFxyXG4gICAgICAgICAgYXJyTCxcclxuICAgICAgICAgIGkgPSAwLFxyXG4gICAgICAgICAgbGVuID0gc3RyLmxlbmd0aDtcclxuXHJcbiAgICAgICAgZm9yICg7IGkgPCBsZW47KSB7XHJcbiAgICAgICAgICBmb3IgKGFyckwgPSBhcnIubGVuZ3RoOyBhcnJMLS07IGFyclthcnJMXSAqPSBiYXNlSW4pO1xyXG5cclxuICAgICAgICAgIGFyclswXSArPSBhbHBoYWJldC5pbmRleE9mKHN0ci5jaGFyQXQoaSsrKSk7XHJcblxyXG4gICAgICAgICAgZm9yIChqID0gMDsgaiA8IGFyci5sZW5ndGg7IGorKykge1xyXG5cclxuICAgICAgICAgICAgaWYgKGFycltqXSA+IGJhc2VPdXQgLSAxKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGFycltqICsgMV0gPT0gbnVsbCkgYXJyW2ogKyAxXSA9IDA7XHJcbiAgICAgICAgICAgICAgYXJyW2ogKyAxXSArPSBhcnJbal0gLyBiYXNlT3V0IHwgMDtcclxuICAgICAgICAgICAgICBhcnJbal0gJT0gYmFzZU91dDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGFyci5yZXZlcnNlKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIENvbnZlcnQgYSBudW1lcmljIHN0cmluZyBvZiBiYXNlSW4gdG8gYSBudW1lcmljIHN0cmluZyBvZiBiYXNlT3V0LlxyXG4gICAgICAvLyBJZiB0aGUgY2FsbGVyIGlzIHRvU3RyaW5nLCB3ZSBhcmUgY29udmVydGluZyBmcm9tIGJhc2UgMTAgdG8gYmFzZU91dC5cclxuICAgICAgLy8gSWYgdGhlIGNhbGxlciBpcyBCaWdOdW1iZXIsIHdlIGFyZSBjb252ZXJ0aW5nIGZyb20gYmFzZUluIHRvIGJhc2UgMTAuXHJcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoc3RyLCBiYXNlSW4sIGJhc2VPdXQsIHNpZ24sIGNhbGxlcklzVG9TdHJpbmcpIHtcclxuICAgICAgICB2YXIgYWxwaGFiZXQsIGQsIGUsIGssIHIsIHgsIHhjLCB5LFxyXG4gICAgICAgICAgaSA9IHN0ci5pbmRleE9mKCcuJyksXHJcbiAgICAgICAgICBkcCA9IERFQ0lNQUxfUExBQ0VTLFxyXG4gICAgICAgICAgcm0gPSBST1VORElOR19NT0RFO1xyXG5cclxuICAgICAgICAvLyBOb24taW50ZWdlci5cclxuICAgICAgICBpZiAoaSA+PSAwKSB7XHJcbiAgICAgICAgICBrID0gUE9XX1BSRUNJU0lPTjtcclxuXHJcbiAgICAgICAgICAvLyBVbmxpbWl0ZWQgcHJlY2lzaW9uLlxyXG4gICAgICAgICAgUE9XX1BSRUNJU0lPTiA9IDA7XHJcbiAgICAgICAgICBzdHIgPSBzdHIucmVwbGFjZSgnLicsICcnKTtcclxuICAgICAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKGJhc2VJbik7XHJcbiAgICAgICAgICB4ID0geS5wb3coc3RyLmxlbmd0aCAtIGkpO1xyXG4gICAgICAgICAgUE9XX1BSRUNJU0lPTiA9IGs7XHJcblxyXG4gICAgICAgICAgLy8gQ29udmVydCBzdHIgYXMgaWYgYW4gaW50ZWdlciwgdGhlbiByZXN0b3JlIHRoZSBmcmFjdGlvbiBwYXJ0IGJ5IGRpdmlkaW5nIHRoZVxyXG4gICAgICAgICAgLy8gcmVzdWx0IGJ5IGl0cyBiYXNlIHJhaXNlZCB0byBhIHBvd2VyLlxyXG5cclxuICAgICAgICAgIHkuYyA9IHRvQmFzZU91dCh0b0ZpeGVkUG9pbnQoY29lZmZUb1N0cmluZyh4LmMpLCB4LmUsICcwJyksXHJcbiAgICAgICAgICAgMTAsIGJhc2VPdXQsIGRlY2ltYWwpO1xyXG4gICAgICAgICAgeS5lID0geS5jLmxlbmd0aDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENvbnZlcnQgdGhlIG51bWJlciBhcyBpbnRlZ2VyLlxyXG5cclxuICAgICAgICB4YyA9IHRvQmFzZU91dChzdHIsIGJhc2VJbiwgYmFzZU91dCwgY2FsbGVySXNUb1N0cmluZ1xyXG4gICAgICAgICA/IChhbHBoYWJldCA9IEFMUEhBQkVULCBkZWNpbWFsKVxyXG4gICAgICAgICA6IChhbHBoYWJldCA9IGRlY2ltYWwsIEFMUEhBQkVUKSk7XHJcblxyXG4gICAgICAgIC8vIHhjIG5vdyByZXByZXNlbnRzIHN0ciBhcyBhbiBpbnRlZ2VyIGFuZCBjb252ZXJ0ZWQgdG8gYmFzZU91dC4gZSBpcyB0aGUgZXhwb25lbnQuXHJcbiAgICAgICAgZSA9IGsgPSB4Yy5sZW5ndGg7XHJcblxyXG4gICAgICAgIC8vIFJlbW92ZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgICBmb3IgKDsgeGNbLS1rXSA9PSAwOyB4Yy5wb3AoKSk7XHJcblxyXG4gICAgICAgIC8vIFplcm8/XHJcbiAgICAgICAgaWYgKCF4Y1swXSkgcmV0dXJuIGFscGhhYmV0LmNoYXJBdCgwKTtcclxuXHJcbiAgICAgICAgLy8gRG9lcyBzdHIgcmVwcmVzZW50IGFuIGludGVnZXI/IElmIHNvLCBubyBuZWVkIGZvciB0aGUgZGl2aXNpb24uXHJcbiAgICAgICAgaWYgKGkgPCAwKSB7XHJcbiAgICAgICAgICAtLWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHguYyA9IHhjO1xyXG4gICAgICAgICAgeC5lID0gZTtcclxuXHJcbiAgICAgICAgICAvLyBUaGUgc2lnbiBpcyBuZWVkZWQgZm9yIGNvcnJlY3Qgcm91bmRpbmcuXHJcbiAgICAgICAgICB4LnMgPSBzaWduO1xyXG4gICAgICAgICAgeCA9IGRpdih4LCB5LCBkcCwgcm0sIGJhc2VPdXQpO1xyXG4gICAgICAgICAgeGMgPSB4LmM7XHJcbiAgICAgICAgICByID0geC5yO1xyXG4gICAgICAgICAgZSA9IHguZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHhjIG5vdyByZXByZXNlbnRzIHN0ciBjb252ZXJ0ZWQgdG8gYmFzZU91dC5cclxuXHJcbiAgICAgICAgLy8gVEhlIGluZGV4IG9mIHRoZSByb3VuZGluZyBkaWdpdC5cclxuICAgICAgICBkID0gZSArIGRwICsgMTtcclxuXHJcbiAgICAgICAgLy8gVGhlIHJvdW5kaW5nIGRpZ2l0OiB0aGUgZGlnaXQgdG8gdGhlIHJpZ2h0IG9mIHRoZSBkaWdpdCB0aGF0IG1heSBiZSByb3VuZGVkIHVwLlxyXG4gICAgICAgIGkgPSB4Y1tkXTtcclxuXHJcbiAgICAgICAgLy8gTG9vayBhdCB0aGUgcm91bmRpbmcgZGlnaXRzIGFuZCBtb2RlIHRvIGRldGVybWluZSB3aGV0aGVyIHRvIHJvdW5kIHVwLlxyXG5cclxuICAgICAgICBrID0gYmFzZU91dCAvIDI7XHJcbiAgICAgICAgciA9IHIgfHwgZCA8IDAgfHwgeGNbZCArIDFdICE9IG51bGw7XHJcblxyXG4gICAgICAgIHIgPSBybSA8IDQgPyAoaSAhPSBudWxsIHx8IHIpICYmIChybSA9PSAwIHx8IHJtID09ICh4LnMgPCAwID8gMyA6IDIpKVxyXG4gICAgICAgICAgICAgIDogaSA+IGsgfHwgaSA9PSBrICYmKHJtID09IDQgfHwgciB8fCBybSA9PSA2ICYmIHhjW2QgLSAxXSAmIDEgfHxcclxuICAgICAgICAgICAgICAgcm0gPT0gKHgucyA8IDAgPyA4IDogNykpO1xyXG5cclxuICAgICAgICAvLyBJZiB0aGUgaW5kZXggb2YgdGhlIHJvdW5kaW5nIGRpZ2l0IGlzIG5vdCBncmVhdGVyIHRoYW4gemVybywgb3IgeGMgcmVwcmVzZW50c1xyXG4gICAgICAgIC8vIHplcm8sIHRoZW4gdGhlIHJlc3VsdCBvZiB0aGUgYmFzZSBjb252ZXJzaW9uIGlzIHplcm8gb3IsIGlmIHJvdW5kaW5nIHVwLCBhIHZhbHVlXHJcbiAgICAgICAgLy8gc3VjaCBhcyAwLjAwMDAxLlxyXG4gICAgICAgIGlmIChkIDwgMSB8fCAheGNbMF0pIHtcclxuXHJcbiAgICAgICAgICAvLyAxXi1kcCBvciAwXHJcbiAgICAgICAgICBzdHIgPSByID8gdG9GaXhlZFBvaW50KGFscGhhYmV0LmNoYXJBdCgxKSwgLWRwLCBhbHBoYWJldC5jaGFyQXQoMCkpIDogYWxwaGFiZXQuY2hhckF0KDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgLy8gVHJ1bmNhdGUgeGMgdG8gdGhlIHJlcXVpcmVkIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcy5cclxuICAgICAgICAgIHhjLmxlbmd0aCA9IGQ7XHJcblxyXG4gICAgICAgICAgLy8gUm91bmQgdXA/XHJcbiAgICAgICAgICBpZiAocikge1xyXG5cclxuICAgICAgICAgICAgLy8gUm91bmRpbmcgdXAgbWF5IG1lYW4gdGhlIHByZXZpb3VzIGRpZ2l0IGhhcyB0byBiZSByb3VuZGVkIHVwIGFuZCBzbyBvbi5cclxuICAgICAgICAgICAgZm9yICgtLWJhc2VPdXQ7ICsreGNbLS1kXSA+IGJhc2VPdXQ7KSB7XHJcbiAgICAgICAgICAgICAgeGNbZF0gPSAwO1xyXG5cclxuICAgICAgICAgICAgICBpZiAoIWQpIHtcclxuICAgICAgICAgICAgICAgICsrZTtcclxuICAgICAgICAgICAgICAgIHhjID0gWzFdLmNvbmNhdCh4Yyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgICAgICAgZm9yIChrID0geGMubGVuZ3RoOyAheGNbLS1rXTspO1xyXG5cclxuICAgICAgICAgIC8vIEUuZy4gWzQsIDExLCAxNV0gYmVjb21lcyA0YmYuXHJcbiAgICAgICAgICBmb3IgKGkgPSAwLCBzdHIgPSAnJzsgaSA8PSBrOyBzdHIgKz0gYWxwaGFiZXQuY2hhckF0KHhjW2krK10pKTtcclxuXHJcbiAgICAgICAgICAvLyBBZGQgbGVhZGluZyB6ZXJvcywgZGVjaW1hbCBwb2ludCBhbmQgdHJhaWxpbmcgemVyb3MgYXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICBzdHIgPSB0b0ZpeGVkUG9pbnQoc3RyLCBlLCBhbHBoYWJldC5jaGFyQXQoMCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVGhlIGNhbGxlciB3aWxsIGFkZCB0aGUgc2lnbi5cclxuICAgICAgICByZXR1cm4gc3RyO1xyXG4gICAgICB9O1xyXG4gICAgfSkoKTtcclxuXHJcblxyXG4gICAgLy8gUGVyZm9ybSBkaXZpc2lvbiBpbiB0aGUgc3BlY2lmaWVkIGJhc2UuIENhbGxlZCBieSBkaXYgYW5kIGNvbnZlcnRCYXNlLlxyXG4gICAgZGl2ID0gKGZ1bmN0aW9uICgpIHtcclxuXHJcbiAgICAgIC8vIEFzc3VtZSBub24temVybyB4IGFuZCBrLlxyXG4gICAgICBmdW5jdGlvbiBtdWx0aXBseSh4LCBrLCBiYXNlKSB7XHJcbiAgICAgICAgdmFyIG0sIHRlbXAsIHhsbywgeGhpLFxyXG4gICAgICAgICAgY2FycnkgPSAwLFxyXG4gICAgICAgICAgaSA9IHgubGVuZ3RoLFxyXG4gICAgICAgICAga2xvID0gayAlIFNRUlRfQkFTRSxcclxuICAgICAgICAgIGtoaSA9IGsgLyBTUVJUX0JBU0UgfCAwO1xyXG5cclxuICAgICAgICBmb3IgKHggPSB4LnNsaWNlKCk7IGktLTspIHtcclxuICAgICAgICAgIHhsbyA9IHhbaV0gJSBTUVJUX0JBU0U7XHJcbiAgICAgICAgICB4aGkgPSB4W2ldIC8gU1FSVF9CQVNFIHwgMDtcclxuICAgICAgICAgIG0gPSBraGkgKiB4bG8gKyB4aGkgKiBrbG87XHJcbiAgICAgICAgICB0ZW1wID0ga2xvICogeGxvICsgKChtICUgU1FSVF9CQVNFKSAqIFNRUlRfQkFTRSkgKyBjYXJyeTtcclxuICAgICAgICAgIGNhcnJ5ID0gKHRlbXAgLyBiYXNlIHwgMCkgKyAobSAvIFNRUlRfQkFTRSB8IDApICsga2hpICogeGhpO1xyXG4gICAgICAgICAgeFtpXSA9IHRlbXAgJSBiYXNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNhcnJ5KSB4ID0gW2NhcnJ5XS5jb25jYXQoeCk7XHJcblxyXG4gICAgICAgIHJldHVybiB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmdW5jdGlvbiBjb21wYXJlKGEsIGIsIGFMLCBiTCkge1xyXG4gICAgICAgIHZhciBpLCBjbXA7XHJcblxyXG4gICAgICAgIGlmIChhTCAhPSBiTCkge1xyXG4gICAgICAgICAgY21wID0gYUwgPiBiTCA/IDEgOiAtMTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIGZvciAoaSA9IGNtcCA9IDA7IGkgPCBhTDsgaSsrKSB7XHJcblxyXG4gICAgICAgICAgICBpZiAoYVtpXSAhPSBiW2ldKSB7XHJcbiAgICAgICAgICAgICAgY21wID0gYVtpXSA+IGJbaV0gPyAxIDogLTE7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBjbXA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGZ1bmN0aW9uIHN1YnRyYWN0KGEsIGIsIGFMLCBiYXNlKSB7XHJcbiAgICAgICAgdmFyIGkgPSAwO1xyXG5cclxuICAgICAgICAvLyBTdWJ0cmFjdCBiIGZyb20gYS5cclxuICAgICAgICBmb3IgKDsgYUwtLTspIHtcclxuICAgICAgICAgIGFbYUxdIC09IGk7XHJcbiAgICAgICAgICBpID0gYVthTF0gPCBiW2FMXSA/IDEgOiAwO1xyXG4gICAgICAgICAgYVthTF0gPSBpICogYmFzZSArIGFbYUxdIC0gYlthTF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZW1vdmUgbGVhZGluZyB6ZXJvcy5cclxuICAgICAgICBmb3IgKDsgIWFbMF0gJiYgYS5sZW5ndGggPiAxOyBhLnNwbGljZSgwLCAxKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIHg6IGRpdmlkZW5kLCB5OiBkaXZpc29yLlxyXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHgsIHksIGRwLCBybSwgYmFzZSkge1xyXG4gICAgICAgIHZhciBjbXAsIGUsIGksIG1vcmUsIG4sIHByb2QsIHByb2RMLCBxLCBxYywgcmVtLCByZW1MLCByZW0wLCB4aSwgeEwsIHljMCxcclxuICAgICAgICAgIHlMLCB5eixcclxuICAgICAgICAgIHMgPSB4LnMgPT0geS5zID8gMSA6IC0xLFxyXG4gICAgICAgICAgeGMgPSB4LmMsXHJcbiAgICAgICAgICB5YyA9IHkuYztcclxuXHJcbiAgICAgICAgLy8gRWl0aGVyIE5hTiwgSW5maW5pdHkgb3IgMD9cclxuICAgICAgICBpZiAoIXhjIHx8ICF4Y1swXSB8fCAheWMgfHwgIXljWzBdKSB7XHJcblxyXG4gICAgICAgICAgcmV0dXJuIG5ldyBCaWdOdW1iZXIoXHJcblxyXG4gICAgICAgICAgIC8vIFJldHVybiBOYU4gaWYgZWl0aGVyIE5hTiwgb3IgYm90aCBJbmZpbml0eSBvciAwLlxyXG4gICAgICAgICAgICF4LnMgfHwgIXkucyB8fCAoeGMgPyB5YyAmJiB4Y1swXSA9PSB5Y1swXSA6ICF5YykgPyBOYU4gOlxyXG5cclxuICAgICAgICAgICAgLy8gUmV0dXJuIMKxMCBpZiB4IGlzIMKxMCBvciB5IGlzIMKxSW5maW5pdHksIG9yIHJldHVybiDCsUluZmluaXR5IGFzIHkgaXMgwrEwLlxyXG4gICAgICAgICAgICB4YyAmJiB4Y1swXSA9PSAwIHx8ICF5YyA/IHMgKiAwIDogcyAvIDBcclxuICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHEgPSBuZXcgQmlnTnVtYmVyKHMpO1xyXG4gICAgICAgIHFjID0gcS5jID0gW107XHJcbiAgICAgICAgZSA9IHguZSAtIHkuZTtcclxuICAgICAgICBzID0gZHAgKyBlICsgMTtcclxuXHJcbiAgICAgICAgaWYgKCFiYXNlKSB7XHJcbiAgICAgICAgICBiYXNlID0gQkFTRTtcclxuICAgICAgICAgIGUgPSBiaXRGbG9vcih4LmUgLyBMT0dfQkFTRSkgLSBiaXRGbG9vcih5LmUgLyBMT0dfQkFTRSk7XHJcbiAgICAgICAgICBzID0gcyAvIExPR19CQVNFIHwgMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFJlc3VsdCBleHBvbmVudCBtYXkgYmUgb25lIGxlc3MgdGhlbiB0aGUgY3VycmVudCB2YWx1ZSBvZiBlLlxyXG4gICAgICAgIC8vIFRoZSBjb2VmZmljaWVudHMgb2YgdGhlIEJpZ051bWJlcnMgZnJvbSBjb252ZXJ0QmFzZSBtYXkgaGF2ZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgICBmb3IgKGkgPSAwOyB5Y1tpXSA9PSAoeGNbaV0gfHwgMCk7IGkrKyk7XHJcblxyXG4gICAgICAgIGlmICh5Y1tpXSA+ICh4Y1tpXSB8fCAwKSkgZS0tO1xyXG5cclxuICAgICAgICBpZiAocyA8IDApIHtcclxuICAgICAgICAgIHFjLnB1c2goMSk7XHJcbiAgICAgICAgICBtb3JlID0gdHJ1ZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgeEwgPSB4Yy5sZW5ndGg7XHJcbiAgICAgICAgICB5TCA9IHljLmxlbmd0aDtcclxuICAgICAgICAgIGkgPSAwO1xyXG4gICAgICAgICAgcyArPSAyO1xyXG5cclxuICAgICAgICAgIC8vIE5vcm1hbGlzZSB4YyBhbmQgeWMgc28gaGlnaGVzdCBvcmRlciBkaWdpdCBvZiB5YyBpcyA+PSBiYXNlIC8gMi5cclxuXHJcbiAgICAgICAgICBuID0gbWF0aGZsb29yKGJhc2UgLyAoeWNbMF0gKyAxKSk7XHJcblxyXG4gICAgICAgICAgLy8gTm90IG5lY2Vzc2FyeSwgYnV0IHRvIGhhbmRsZSBvZGQgYmFzZXMgd2hlcmUgeWNbMF0gPT0gKGJhc2UgLyAyKSAtIDEuXHJcbiAgICAgICAgICAvLyBpZiAobiA+IDEgfHwgbisrID09IDEgJiYgeWNbMF0gPCBiYXNlIC8gMikge1xyXG4gICAgICAgICAgaWYgKG4gPiAxKSB7XHJcbiAgICAgICAgICAgIHljID0gbXVsdGlwbHkoeWMsIG4sIGJhc2UpO1xyXG4gICAgICAgICAgICB4YyA9IG11bHRpcGx5KHhjLCBuLCBiYXNlKTtcclxuICAgICAgICAgICAgeUwgPSB5Yy5sZW5ndGg7XHJcbiAgICAgICAgICAgIHhMID0geGMubGVuZ3RoO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHhpID0geUw7XHJcbiAgICAgICAgICByZW0gPSB4Yy5zbGljZSgwLCB5TCk7XHJcbiAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAvLyBBZGQgemVyb3MgdG8gbWFrZSByZW1haW5kZXIgYXMgbG9uZyBhcyBkaXZpc29yLlxyXG4gICAgICAgICAgZm9yICg7IHJlbUwgPCB5TDsgcmVtW3JlbUwrK10gPSAwKTtcclxuICAgICAgICAgIHl6ID0geWMuc2xpY2UoKTtcclxuICAgICAgICAgIHl6ID0gWzBdLmNvbmNhdCh5eik7XHJcbiAgICAgICAgICB5YzAgPSB5Y1swXTtcclxuICAgICAgICAgIGlmICh5Y1sxXSA+PSBiYXNlIC8gMikgeWMwKys7XHJcbiAgICAgICAgICAvLyBOb3QgbmVjZXNzYXJ5LCBidXQgdG8gcHJldmVudCB0cmlhbCBkaWdpdCBuID4gYmFzZSwgd2hlbiB1c2luZyBiYXNlIDMuXHJcbiAgICAgICAgICAvLyBlbHNlIGlmIChiYXNlID09IDMgJiYgeWMwID09IDEpIHljMCA9IDEgKyAxZS0xNTtcclxuXHJcbiAgICAgICAgICBkbyB7XHJcbiAgICAgICAgICAgIG4gPSAwO1xyXG5cclxuICAgICAgICAgICAgLy8gQ29tcGFyZSBkaXZpc29yIGFuZCByZW1haW5kZXIuXHJcbiAgICAgICAgICAgIGNtcCA9IGNvbXBhcmUoeWMsIHJlbSwgeUwsIHJlbUwpO1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgZGl2aXNvciA8IHJlbWFpbmRlci5cclxuICAgICAgICAgICAgaWYgKGNtcCA8IDApIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRyaWFsIGRpZ2l0LCBuLlxyXG5cclxuICAgICAgICAgICAgICByZW0wID0gcmVtWzBdO1xyXG4gICAgICAgICAgICAgIGlmICh5TCAhPSByZW1MKSByZW0wID0gcmVtMCAqIGJhc2UgKyAocmVtWzFdIHx8IDApO1xyXG5cclxuICAgICAgICAgICAgICAvLyBuIGlzIGhvdyBtYW55IHRpbWVzIHRoZSBkaXZpc29yIGdvZXMgaW50byB0aGUgY3VycmVudCByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgbiA9IG1hdGhmbG9vcihyZW0wIC8geWMwKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gIEFsZ29yaXRobTpcclxuICAgICAgICAgICAgICAvLyAgcHJvZHVjdCA9IGRpdmlzb3IgbXVsdGlwbGllZCBieSB0cmlhbCBkaWdpdCAobikuXHJcbiAgICAgICAgICAgICAgLy8gIENvbXBhcmUgcHJvZHVjdCBhbmQgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIC8vICBJZiBwcm9kdWN0IGlzIGdyZWF0ZXIgdGhhbiByZW1haW5kZXI6XHJcbiAgICAgICAgICAgICAgLy8gICAgU3VidHJhY3QgZGl2aXNvciBmcm9tIHByb2R1Y3QsIGRlY3JlbWVudCB0cmlhbCBkaWdpdC5cclxuICAgICAgICAgICAgICAvLyAgU3VidHJhY3QgcHJvZHVjdCBmcm9tIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAvLyAgSWYgcHJvZHVjdCB3YXMgbGVzcyB0aGFuIHJlbWFpbmRlciBhdCB0aGUgbGFzdCBjb21wYXJlOlxyXG4gICAgICAgICAgICAgIC8vICAgIENvbXBhcmUgbmV3IHJlbWFpbmRlciBhbmQgZGl2aXNvci5cclxuICAgICAgICAgICAgICAvLyAgICBJZiByZW1haW5kZXIgaXMgZ3JlYXRlciB0aGFuIGRpdmlzb3I6XHJcbiAgICAgICAgICAgICAgLy8gICAgICBTdWJ0cmFjdCBkaXZpc29yIGZyb20gcmVtYWluZGVyLCBpbmNyZW1lbnQgdHJpYWwgZGlnaXQuXHJcblxyXG4gICAgICAgICAgICAgIGlmIChuID4gMSkge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIG4gbWF5IGJlID4gYmFzZSBvbmx5IHdoZW4gYmFzZSBpcyAzLlxyXG4gICAgICAgICAgICAgICAgaWYgKG4gPj0gYmFzZSkgbiA9IGJhc2UgLSAxO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIHByb2R1Y3QgPSBkaXZpc29yICogdHJpYWwgZGlnaXQuXHJcbiAgICAgICAgICAgICAgICBwcm9kID0gbXVsdGlwbHkoeWMsIG4sIGJhc2UpO1xyXG4gICAgICAgICAgICAgICAgcHJvZEwgPSBwcm9kLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIHJlbUwgPSByZW0ubGVuZ3RoO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENvbXBhcmUgcHJvZHVjdCBhbmQgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgICAgLy8gSWYgcHJvZHVjdCA+IHJlbWFpbmRlciB0aGVuIHRyaWFsIGRpZ2l0IG4gdG9vIGhpZ2guXHJcbiAgICAgICAgICAgICAgICAvLyBuIGlzIDEgdG9vIGhpZ2ggYWJvdXQgNSUgb2YgdGhlIHRpbWUsIGFuZCBpcyBub3Qga25vd24gdG8gaGF2ZVxyXG4gICAgICAgICAgICAgICAgLy8gZXZlciBiZWVuIG1vcmUgdGhhbiAxIHRvbyBoaWdoLlxyXG4gICAgICAgICAgICAgICAgd2hpbGUgKGNvbXBhcmUocHJvZCwgcmVtLCBwcm9kTCwgcmVtTCkgPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICBuLS07XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBTdWJ0cmFjdCBkaXZpc29yIGZyb20gcHJvZHVjdC5cclxuICAgICAgICAgICAgICAgICAgc3VidHJhY3QocHJvZCwgeUwgPCBwcm9kTCA/IHl6IDogeWMsIHByb2RMLCBiYXNlKTtcclxuICAgICAgICAgICAgICAgICAgcHJvZEwgPSBwcm9kLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgY21wID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIG4gaXMgMCBvciAxLCBjbXAgaXMgLTEuXHJcbiAgICAgICAgICAgICAgICAvLyBJZiBuIGlzIDAsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY29tcGFyZSB5YyBhbmQgcmVtIGFnYWluIGJlbG93LFxyXG4gICAgICAgICAgICAgICAgLy8gc28gY2hhbmdlIGNtcCB0byAxIHRvIGF2b2lkIGl0LlxyXG4gICAgICAgICAgICAgICAgLy8gSWYgbiBpcyAxLCBsZWF2ZSBjbXAgYXMgLTEsIHNvIHljIGFuZCByZW0gYXJlIGNvbXBhcmVkIGFnYWluLlxyXG4gICAgICAgICAgICAgICAgaWYgKG4gPT0gMCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gZGl2aXNvciA8IHJlbWFpbmRlciwgc28gbiBtdXN0IGJlIGF0IGxlYXN0IDEuXHJcbiAgICAgICAgICAgICAgICAgIGNtcCA9IG4gPSAxO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIHByb2R1Y3QgPSBkaXZpc29yXHJcbiAgICAgICAgICAgICAgICBwcm9kID0geWMuc2xpY2UoKTtcclxuICAgICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBpZiAocHJvZEwgPCByZW1MKSBwcm9kID0gWzBdLmNvbmNhdChwcm9kKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gU3VidHJhY3QgcHJvZHVjdCBmcm9tIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICBzdWJ0cmFjdChyZW0sIHByb2QsIHJlbUwsIGJhc2UpO1xyXG4gICAgICAgICAgICAgIHJlbUwgPSByZW0ubGVuZ3RoO1xyXG5cclxuICAgICAgICAgICAgICAgLy8gSWYgcHJvZHVjdCB3YXMgPCByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgaWYgKGNtcCA9PSAtMSkge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIENvbXBhcmUgZGl2aXNvciBhbmQgbmV3IHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIC8vIElmIGRpdmlzb3IgPCBuZXcgcmVtYWluZGVyLCBzdWJ0cmFjdCBkaXZpc29yIGZyb20gcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgICAgLy8gVHJpYWwgZGlnaXQgbiB0b28gbG93LlxyXG4gICAgICAgICAgICAgICAgLy8gbiBpcyAxIHRvbyBsb3cgYWJvdXQgNSUgb2YgdGhlIHRpbWUsIGFuZCB2ZXJ5IHJhcmVseSAyIHRvbyBsb3cuXHJcbiAgICAgICAgICAgICAgICB3aGlsZSAoY29tcGFyZSh5YywgcmVtLCB5TCwgcmVtTCkgPCAxKSB7XHJcbiAgICAgICAgICAgICAgICAgIG4rKztcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIFN1YnRyYWN0IGRpdmlzb3IgZnJvbSByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgICAgIHN1YnRyYWN0KHJlbSwgeUwgPCByZW1MID8geXogOiB5YywgcmVtTCwgYmFzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHJlbUwgPSByZW0ubGVuZ3RoO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjbXAgPT09IDApIHtcclxuICAgICAgICAgICAgICBuKys7XHJcbiAgICAgICAgICAgICAgcmVtID0gWzBdO1xyXG4gICAgICAgICAgICB9IC8vIGVsc2UgY21wID09PSAxIGFuZCBuIHdpbGwgYmUgMFxyXG5cclxuICAgICAgICAgICAgLy8gQWRkIHRoZSBuZXh0IGRpZ2l0LCBuLCB0byB0aGUgcmVzdWx0IGFycmF5LlxyXG4gICAgICAgICAgICBxY1tpKytdID0gbjtcclxuXHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICBpZiAocmVtWzBdKSB7XHJcbiAgICAgICAgICAgICAgcmVtW3JlbUwrK10gPSB4Y1t4aV0gfHwgMDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZW0gPSBbeGNbeGldXTtcclxuICAgICAgICAgICAgICByZW1MID0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSB3aGlsZSAoKHhpKysgPCB4TCB8fCByZW1bMF0gIT0gbnVsbCkgJiYgcy0tKTtcclxuXHJcbiAgICAgICAgICBtb3JlID0gcmVtWzBdICE9IG51bGw7XHJcblxyXG4gICAgICAgICAgLy8gTGVhZGluZyB6ZXJvP1xyXG4gICAgICAgICAgaWYgKCFxY1swXSkgcWMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGJhc2UgPT0gQkFTRSkge1xyXG5cclxuICAgICAgICAgIC8vIFRvIGNhbGN1bGF0ZSBxLmUsIGZpcnN0IGdldCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBxY1swXS5cclxuICAgICAgICAgIGZvciAoaSA9IDEsIHMgPSBxY1swXTsgcyA+PSAxMDsgcyAvPSAxMCwgaSsrKTtcclxuXHJcbiAgICAgICAgICByb3VuZChxLCBkcCArIChxLmUgPSBpICsgZSAqIExPR19CQVNFIC0gMSkgKyAxLCBybSwgbW9yZSk7XHJcblxyXG4gICAgICAgIC8vIENhbGxlciBpcyBjb252ZXJ0QmFzZS5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcS5lID0gZTtcclxuICAgICAgICAgIHEuciA9ICttb3JlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHE7XHJcbiAgICAgIH07XHJcbiAgICB9KSgpO1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyIG4gaW4gZml4ZWQtcG9pbnQgb3IgZXhwb25lbnRpYWxcclxuICAgICAqIG5vdGF0aW9uIHJvdW5kZWQgdG8gdGhlIHNwZWNpZmllZCBkZWNpbWFsIHBsYWNlcyBvciBzaWduaWZpY2FudCBkaWdpdHMuXHJcbiAgICAgKlxyXG4gICAgICogbjogYSBCaWdOdW1iZXIuXHJcbiAgICAgKiBpOiB0aGUgaW5kZXggb2YgdGhlIGxhc3QgZGlnaXQgcmVxdWlyZWQgKGkuZS4gdGhlIGRpZ2l0IHRoYXQgbWF5IGJlIHJvdW5kZWQgdXApLlxyXG4gICAgICogcm06IHRoZSByb3VuZGluZyBtb2RlLlxyXG4gICAgICogaWQ6IDEgKHRvRXhwb25lbnRpYWwpIG9yIDIgKHRvUHJlY2lzaW9uKS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gZm9ybWF0KG4sIGksIHJtLCBpZCkge1xyXG4gICAgICB2YXIgYzAsIGUsIG5lLCBsZW4sIHN0cjtcclxuXHJcbiAgICAgIGlmIChybSA9PSBudWxsKSBybSA9IFJPVU5ESU5HX01PREU7XHJcbiAgICAgIGVsc2UgaW50Q2hlY2socm0sIDAsIDgpO1xyXG5cclxuICAgICAgaWYgKCFuLmMpIHJldHVybiBuLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICBjMCA9IG4uY1swXTtcclxuICAgICAgbmUgPSBuLmU7XHJcblxyXG4gICAgICBpZiAoaSA9PSBudWxsKSB7XHJcbiAgICAgICAgc3RyID0gY29lZmZUb1N0cmluZyhuLmMpO1xyXG4gICAgICAgIHN0ciA9IGlkID09IDEgfHwgaWQgPT0gMiAmJiAobmUgPD0gVE9fRVhQX05FRyB8fCBuZSA+PSBUT19FWFBfUE9TKVxyXG4gICAgICAgICA/IHRvRXhwb25lbnRpYWwoc3RyLCBuZSlcclxuICAgICAgICAgOiB0b0ZpeGVkUG9pbnQoc3RyLCBuZSwgJzAnKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuID0gcm91bmQobmV3IEJpZ051bWJlcihuKSwgaSwgcm0pO1xyXG5cclxuICAgICAgICAvLyBuLmUgbWF5IGhhdmUgY2hhbmdlZCBpZiB0aGUgdmFsdWUgd2FzIHJvdW5kZWQgdXAuXHJcbiAgICAgICAgZSA9IG4uZTtcclxuXHJcbiAgICAgICAgc3RyID0gY29lZmZUb1N0cmluZyhuLmMpO1xyXG4gICAgICAgIGxlbiA9IHN0ci5sZW5ndGg7XHJcblxyXG4gICAgICAgIC8vIHRvUHJlY2lzaW9uIHJldHVybnMgZXhwb25lbnRpYWwgbm90YXRpb24gaWYgdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHNcclxuICAgICAgICAvLyBzcGVjaWZpZWQgaXMgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgZGlnaXRzIG5lY2Vzc2FyeSB0byByZXByZXNlbnQgdGhlIGludGVnZXJcclxuICAgICAgICAvLyBwYXJ0IG9mIHRoZSB2YWx1ZSBpbiBmaXhlZC1wb2ludCBub3RhdGlvbi5cclxuXHJcbiAgICAgICAgLy8gRXhwb25lbnRpYWwgbm90YXRpb24uXHJcbiAgICAgICAgaWYgKGlkID09IDEgfHwgaWQgPT0gMiAmJiAoaSA8PSBlIHx8IGUgPD0gVE9fRVhQX05FRykpIHtcclxuXHJcbiAgICAgICAgICAvLyBBcHBlbmQgemVyb3M/XHJcbiAgICAgICAgICBmb3IgKDsgbGVuIDwgaTsgc3RyICs9ICcwJywgbGVuKyspO1xyXG4gICAgICAgICAgc3RyID0gdG9FeHBvbmVudGlhbChzdHIsIGUpO1xyXG5cclxuICAgICAgICAvLyBGaXhlZC1wb2ludCBub3RhdGlvbi5cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaSAtPSBuZTtcclxuICAgICAgICAgIHN0ciA9IHRvRml4ZWRQb2ludChzdHIsIGUsICcwJyk7XHJcblxyXG4gICAgICAgICAgLy8gQXBwZW5kIHplcm9zP1xyXG4gICAgICAgICAgaWYgKGUgKyAxID4gbGVuKSB7XHJcbiAgICAgICAgICAgIGlmICgtLWkgPiAwKSBmb3IgKHN0ciArPSAnLic7IGktLTsgc3RyICs9ICcwJyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpICs9IGUgLSBsZW47XHJcbiAgICAgICAgICAgIGlmIChpID4gMCkge1xyXG4gICAgICAgICAgICAgIGlmIChlICsgMSA9PSBsZW4pIHN0ciArPSAnLic7XHJcbiAgICAgICAgICAgICAgZm9yICg7IGktLTsgc3RyICs9ICcwJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBuLnMgPCAwICYmIGMwID8gJy0nICsgc3RyIDogc3RyO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBIYW5kbGUgQmlnTnVtYmVyLm1heCBhbmQgQmlnTnVtYmVyLm1pbi5cclxuICAgIGZ1bmN0aW9uIG1heE9yTWluKGFyZ3MsIG1ldGhvZCkge1xyXG4gICAgICB2YXIgbixcclxuICAgICAgICBpID0gMSxcclxuICAgICAgICBtID0gbmV3IEJpZ051bWJlcihhcmdzWzBdKTtcclxuXHJcbiAgICAgIGZvciAoOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIG4gPSBuZXcgQmlnTnVtYmVyKGFyZ3NbaV0pO1xyXG5cclxuICAgICAgICAvLyBJZiBhbnkgbnVtYmVyIGlzIE5hTiwgcmV0dXJuIE5hTi5cclxuICAgICAgICBpZiAoIW4ucykge1xyXG4gICAgICAgICAgbSA9IG47XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKG1ldGhvZC5jYWxsKG0sIG4pKSB7XHJcbiAgICAgICAgICBtID0gbjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBtO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogU3RyaXAgdHJhaWxpbmcgemVyb3MsIGNhbGN1bGF0ZSBiYXNlIDEwIGV4cG9uZW50IGFuZCBjaGVjayBhZ2FpbnN0IE1JTl9FWFAgYW5kIE1BWF9FWFAuXHJcbiAgICAgKiBDYWxsZWQgYnkgbWludXMsIHBsdXMgYW5kIHRpbWVzLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBub3JtYWxpc2UobiwgYywgZSkge1xyXG4gICAgICB2YXIgaSA9IDEsXHJcbiAgICAgICAgaiA9IGMubGVuZ3RoO1xyXG5cclxuICAgICAgIC8vIFJlbW92ZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgZm9yICg7ICFjWy0tal07IGMucG9wKCkpO1xyXG5cclxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBiYXNlIDEwIGV4cG9uZW50LiBGaXJzdCBnZXQgdGhlIG51bWJlciBvZiBkaWdpdHMgb2YgY1swXS5cclxuICAgICAgZm9yIChqID0gY1swXTsgaiA+PSAxMDsgaiAvPSAxMCwgaSsrKTtcclxuXHJcbiAgICAgIC8vIE92ZXJmbG93P1xyXG4gICAgICBpZiAoKGUgPSBpICsgZSAqIExPR19CQVNFIC0gMSkgPiBNQVhfRVhQKSB7XHJcblxyXG4gICAgICAgIC8vIEluZmluaXR5LlxyXG4gICAgICAgIG4uYyA9IG4uZSA9IG51bGw7XHJcblxyXG4gICAgICAvLyBVbmRlcmZsb3c/XHJcbiAgICAgIH0gZWxzZSBpZiAoZSA8IE1JTl9FWFApIHtcclxuXHJcbiAgICAgICAgLy8gWmVyby5cclxuICAgICAgICBuLmMgPSBbbi5lID0gMF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbi5lID0gZTtcclxuICAgICAgICBuLmMgPSBjO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gSGFuZGxlIHZhbHVlcyB0aGF0IGZhaWwgdGhlIHZhbGlkaXR5IHRlc3QgaW4gQmlnTnVtYmVyLlxyXG4gICAgcGFyc2VOdW1lcmljID0gKGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIGJhc2VQcmVmaXggPSAvXigtPykwKFt4Ym9dKSg/PVxcd1tcXHcuXSokKS9pLFxyXG4gICAgICAgIGRvdEFmdGVyID0gL14oW14uXSspXFwuJC8sXHJcbiAgICAgICAgZG90QmVmb3JlID0gL15cXC4oW14uXSspJC8sXHJcbiAgICAgICAgaXNJbmZpbml0eU9yTmFOID0gL14tPyhJbmZpbml0eXxOYU4pJC8sXHJcbiAgICAgICAgd2hpdGVzcGFjZU9yUGx1cyA9IC9eXFxzKlxcKyg/PVtcXHcuXSl8Xlxccyt8XFxzKyQvZztcclxuXHJcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoeCwgc3RyLCBpc051bSwgYikge1xyXG4gICAgICAgIHZhciBiYXNlLFxyXG4gICAgICAgICAgcyA9IGlzTnVtID8gc3RyIDogc3RyLnJlcGxhY2Uod2hpdGVzcGFjZU9yUGx1cywgJycpO1xyXG5cclxuICAgICAgICAvLyBObyBleGNlcHRpb24gb24gwrFJbmZpbml0eSBvciBOYU4uXHJcbiAgICAgICAgaWYgKGlzSW5maW5pdHlPck5hTi50ZXN0KHMpKSB7XHJcbiAgICAgICAgICB4LnMgPSBpc05hTihzKSA/IG51bGwgOiBzIDwgMCA/IC0xIDogMTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCFpc051bSkge1xyXG5cclxuICAgICAgICAgICAgLy8gYmFzZVByZWZpeCA9IC9eKC0/KTAoW3hib10pKD89XFx3W1xcdy5dKiQpL2lcclxuICAgICAgICAgICAgcyA9IHMucmVwbGFjZShiYXNlUHJlZml4LCBmdW5jdGlvbiAobSwgcDEsIHAyKSB7XHJcbiAgICAgICAgICAgICAgYmFzZSA9IChwMiA9IHAyLnRvTG93ZXJDYXNlKCkpID09ICd4JyA/IDE2IDogcDIgPT0gJ2InID8gMiA6IDg7XHJcbiAgICAgICAgICAgICAgcmV0dXJuICFiIHx8IGIgPT0gYmFzZSA/IHAxIDogbTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBpZiAoYikge1xyXG4gICAgICAgICAgICAgIGJhc2UgPSBiO1xyXG5cclxuICAgICAgICAgICAgICAvLyBFLmcuICcxLicgdG8gJzEnLCAnLjEnIHRvICcwLjEnXHJcbiAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZShkb3RBZnRlciwgJyQxJykucmVwbGFjZShkb3RCZWZvcmUsICcwLiQxJyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChzdHIgIT0gcykgcmV0dXJuIG5ldyBCaWdOdW1iZXIocywgYmFzZSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE5vdCBhIG51bWJlcjoge259J1xyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE5vdCBhIGJhc2Uge2J9IG51bWJlcjoge259J1xyXG4gICAgICAgICAgaWYgKEJpZ051bWJlci5ERUJVRykge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAgIChiaWdudW1iZXJFcnJvciArICdOb3QgYScgKyAoYiA/ICcgYmFzZSAnICsgYiA6ICcnKSArICcgbnVtYmVyOiAnICsgc3RyKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBOYU5cclxuICAgICAgICAgIHgucyA9IG51bGw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB4LmMgPSB4LmUgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9KSgpO1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUm91bmQgeCB0byBzZCBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBybS4gQ2hlY2sgZm9yIG92ZXIvdW5kZXItZmxvdy5cclxuICAgICAqIElmIHIgaXMgdHJ1dGh5LCBpdCBpcyBrbm93biB0aGF0IHRoZXJlIGFyZSBtb3JlIGRpZ2l0cyBhZnRlciB0aGUgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIHJvdW5kKHgsIHNkLCBybSwgcikge1xyXG4gICAgICB2YXIgZCwgaSwgaiwgaywgbiwgbmksIHJkLFxyXG4gICAgICAgIHhjID0geC5jLFxyXG4gICAgICAgIHBvd3MxMCA9IFBPV1NfVEVOO1xyXG5cclxuICAgICAgLy8gaWYgeCBpcyBub3QgSW5maW5pdHkgb3IgTmFOLi4uXHJcbiAgICAgIGlmICh4Yykge1xyXG5cclxuICAgICAgICAvLyByZCBpcyB0aGUgcm91bmRpbmcgZGlnaXQsIGkuZS4gdGhlIGRpZ2l0IGFmdGVyIHRoZSBkaWdpdCB0aGF0IG1heSBiZSByb3VuZGVkIHVwLlxyXG4gICAgICAgIC8vIG4gaXMgYSBiYXNlIDFlMTQgbnVtYmVyLCB0aGUgdmFsdWUgb2YgdGhlIGVsZW1lbnQgb2YgYXJyYXkgeC5jIGNvbnRhaW5pbmcgcmQuXHJcbiAgICAgICAgLy8gbmkgaXMgdGhlIGluZGV4IG9mIG4gd2l0aGluIHguYy5cclxuICAgICAgICAvLyBkIGlzIHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIG4uXHJcbiAgICAgICAgLy8gaSBpcyB0aGUgaW5kZXggb2YgcmQgd2l0aGluIG4gaW5jbHVkaW5nIGxlYWRpbmcgemVyb3MuXHJcbiAgICAgICAgLy8gaiBpcyB0aGUgYWN0dWFsIGluZGV4IG9mIHJkIHdpdGhpbiBuIChpZiA8IDAsIHJkIGlzIGEgbGVhZGluZyB6ZXJvKS5cclxuICAgICAgICBvdXQ6IHtcclxuXHJcbiAgICAgICAgICAvLyBHZXQgdGhlIG51bWJlciBvZiBkaWdpdHMgb2YgdGhlIGZpcnN0IGVsZW1lbnQgb2YgeGMuXHJcbiAgICAgICAgICBmb3IgKGQgPSAxLCBrID0geGNbMF07IGsgPj0gMTA7IGsgLz0gMTAsIGQrKyk7XHJcbiAgICAgICAgICBpID0gc2QgLSBkO1xyXG5cclxuICAgICAgICAgIC8vIElmIHRoZSByb3VuZGluZyBkaWdpdCBpcyBpbiB0aGUgZmlyc3QgZWxlbWVudCBvZiB4Yy4uLlxyXG4gICAgICAgICAgaWYgKGkgPCAwKSB7XHJcbiAgICAgICAgICAgIGkgKz0gTE9HX0JBU0U7XHJcbiAgICAgICAgICAgIGogPSBzZDtcclxuICAgICAgICAgICAgbiA9IHhjW25pID0gMF07XHJcblxyXG4gICAgICAgICAgICAvLyBHZXQgdGhlIHJvdW5kaW5nIGRpZ2l0IGF0IGluZGV4IGogb2Ygbi5cclxuICAgICAgICAgICAgcmQgPSBuIC8gcG93czEwW2QgLSBqIC0gMV0gJSAxMCB8IDA7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBuaSA9IG1hdGhjZWlsKChpICsgMSkgLyBMT0dfQkFTRSk7XHJcblxyXG4gICAgICAgICAgICBpZiAobmkgPj0geGMubGVuZ3RoKSB7XHJcblxyXG4gICAgICAgICAgICAgIGlmIChyKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gTmVlZGVkIGJ5IHNxcnQuXHJcbiAgICAgICAgICAgICAgICBmb3IgKDsgeGMubGVuZ3RoIDw9IG5pOyB4Yy5wdXNoKDApKTtcclxuICAgICAgICAgICAgICAgIG4gPSByZCA9IDA7XHJcbiAgICAgICAgICAgICAgICBkID0gMTtcclxuICAgICAgICAgICAgICAgIGkgJT0gTE9HX0JBU0U7XHJcbiAgICAgICAgICAgICAgICBqID0gaSAtIExPR19CQVNFICsgMTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgYnJlYWsgb3V0O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBuID0gayA9IHhjW25pXTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gR2V0IHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIG4uXHJcbiAgICAgICAgICAgICAgZm9yIChkID0gMTsgayA+PSAxMDsgayAvPSAxMCwgZCsrKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gR2V0IHRoZSBpbmRleCBvZiByZCB3aXRoaW4gbi5cclxuICAgICAgICAgICAgICBpICU9IExPR19CQVNFO1xyXG5cclxuICAgICAgICAgICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHJkIHdpdGhpbiBuLCBhZGp1c3RlZCBmb3IgbGVhZGluZyB6ZXJvcy5cclxuICAgICAgICAgICAgICAvLyBUaGUgbnVtYmVyIG9mIGxlYWRpbmcgemVyb3Mgb2YgbiBpcyBnaXZlbiBieSBMT0dfQkFTRSAtIGQuXHJcbiAgICAgICAgICAgICAgaiA9IGkgLSBMT0dfQkFTRSArIGQ7XHJcblxyXG4gICAgICAgICAgICAgIC8vIEdldCB0aGUgcm91bmRpbmcgZGlnaXQgYXQgaW5kZXggaiBvZiBuLlxyXG4gICAgICAgICAgICAgIHJkID0gaiA8IDAgPyAwIDogbiAvIHBvd3MxMFtkIC0gaiAtIDFdICUgMTAgfCAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgciA9IHIgfHwgc2QgPCAwIHx8XHJcblxyXG4gICAgICAgICAgLy8gQXJlIHRoZXJlIGFueSBub24temVybyBkaWdpdHMgYWZ0ZXIgdGhlIHJvdW5kaW5nIGRpZ2l0P1xyXG4gICAgICAgICAgLy8gVGhlIGV4cHJlc3Npb24gIG4gJSBwb3dzMTBbZCAtIGogLSAxXSAgcmV0dXJucyBhbGwgZGlnaXRzIG9mIG4gdG8gdGhlIHJpZ2h0XHJcbiAgICAgICAgICAvLyBvZiB0aGUgZGlnaXQgYXQgaiwgZS5nLiBpZiBuIGlzIDkwODcxNCBhbmQgaiBpcyAyLCB0aGUgZXhwcmVzc2lvbiBnaXZlcyA3MTQuXHJcbiAgICAgICAgICAgeGNbbmkgKyAxXSAhPSBudWxsIHx8IChqIDwgMCA/IG4gOiBuICUgcG93czEwW2QgLSBqIC0gMV0pO1xyXG5cclxuICAgICAgICAgIHIgPSBybSA8IDRcclxuICAgICAgICAgICA/IChyZCB8fCByKSAmJiAocm0gPT0gMCB8fCBybSA9PSAoeC5zIDwgMCA/IDMgOiAyKSlcclxuICAgICAgICAgICA6IHJkID4gNSB8fCByZCA9PSA1ICYmIChybSA9PSA0IHx8IHIgfHwgcm0gPT0gNiAmJlxyXG5cclxuICAgICAgICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGUgZGlnaXQgdG8gdGhlIGxlZnQgb2YgdGhlIHJvdW5kaW5nIGRpZ2l0IGlzIG9kZC5cclxuICAgICAgICAgICAgKChpID4gMCA/IGogPiAwID8gbiAvIHBvd3MxMFtkIC0gal0gOiAwIDogeGNbbmkgLSAxXSkgJSAxMCkgJiAxIHx8XHJcbiAgICAgICAgICAgICBybSA9PSAoeC5zIDwgMCA/IDggOiA3KSk7XHJcblxyXG4gICAgICAgICAgaWYgKHNkIDwgMSB8fCAheGNbMF0pIHtcclxuICAgICAgICAgICAgeGMubGVuZ3RoID0gMDtcclxuXHJcbiAgICAgICAgICAgIGlmIChyKSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIENvbnZlcnQgc2QgdG8gZGVjaW1hbCBwbGFjZXMuXHJcbiAgICAgICAgICAgICAgc2QgLT0geC5lICsgMTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gMSwgMC4xLCAwLjAxLCAwLjAwMSwgMC4wMDAxIGV0Yy5cclxuICAgICAgICAgICAgICB4Y1swXSA9IHBvd3MxMFsoTE9HX0JBU0UgLSBzZCAlIExPR19CQVNFKSAlIExPR19CQVNFXTtcclxuICAgICAgICAgICAgICB4LmUgPSAtc2QgfHwgMDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gWmVyby5cclxuICAgICAgICAgICAgICB4Y1swXSA9IHguZSA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiB4O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJlbW92ZSBleGNlc3MgZGlnaXRzLlxyXG4gICAgICAgICAgaWYgKGkgPT0gMCkge1xyXG4gICAgICAgICAgICB4Yy5sZW5ndGggPSBuaTtcclxuICAgICAgICAgICAgayA9IDE7XHJcbiAgICAgICAgICAgIG5pLS07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4Yy5sZW5ndGggPSBuaSArIDE7XHJcbiAgICAgICAgICAgIGsgPSBwb3dzMTBbTE9HX0JBU0UgLSBpXTtcclxuXHJcbiAgICAgICAgICAgIC8vIEUuZy4gNTY3MDAgYmVjb21lcyA1NjAwMCBpZiA3IGlzIHRoZSByb3VuZGluZyBkaWdpdC5cclxuICAgICAgICAgICAgLy8gaiA+IDAgbWVhbnMgaSA+IG51bWJlciBvZiBsZWFkaW5nIHplcm9zIG9mIG4uXHJcbiAgICAgICAgICAgIHhjW25pXSA9IGogPiAwID8gbWF0aGZsb29yKG4gLyBwb3dzMTBbZCAtIGpdICUgcG93czEwW2pdKSAqIGsgOiAwO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJvdW5kIHVwP1xyXG4gICAgICAgICAgaWYgKHIpIHtcclxuXHJcbiAgICAgICAgICAgIGZvciAoOyA7KSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIElmIHRoZSBkaWdpdCB0byBiZSByb3VuZGVkIHVwIGlzIGluIHRoZSBmaXJzdCBlbGVtZW50IG9mIHhjLi4uXHJcbiAgICAgICAgICAgICAgaWYgKG5pID09IDApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBpIHdpbGwgYmUgdGhlIGxlbmd0aCBvZiB4Y1swXSBiZWZvcmUgayBpcyBhZGRlZC5cclxuICAgICAgICAgICAgICAgIGZvciAoaSA9IDEsIGogPSB4Y1swXTsgaiA+PSAxMDsgaiAvPSAxMCwgaSsrKTtcclxuICAgICAgICAgICAgICAgIGogPSB4Y1swXSArPSBrO1xyXG4gICAgICAgICAgICAgICAgZm9yIChrID0gMTsgaiA+PSAxMDsgaiAvPSAxMCwgaysrKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBpZiBpICE9IGsgdGhlIGxlbmd0aCBoYXMgaW5jcmVhc2VkLlxyXG4gICAgICAgICAgICAgICAgaWYgKGkgIT0gaykge1xyXG4gICAgICAgICAgICAgICAgICB4LmUrKztcclxuICAgICAgICAgICAgICAgICAgaWYgKHhjWzBdID09IEJBU0UpIHhjWzBdID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgeGNbbmldICs9IGs7XHJcbiAgICAgICAgICAgICAgICBpZiAoeGNbbmldICE9IEJBU0UpIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgeGNbbmktLV0gPSAwO1xyXG4gICAgICAgICAgICAgICAgayA9IDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHplcm9zLlxyXG4gICAgICAgICAgZm9yIChpID0geGMubGVuZ3RoOyB4Y1stLWldID09PSAwOyB4Yy5wb3AoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBPdmVyZmxvdz8gSW5maW5pdHkuXHJcbiAgICAgICAgaWYgKHguZSA+IE1BWF9FWFApIHtcclxuICAgICAgICAgIHguYyA9IHguZSA9IG51bGw7XHJcblxyXG4gICAgICAgIC8vIFVuZGVyZmxvdz8gWmVyby5cclxuICAgICAgICB9IGVsc2UgaWYgKHguZSA8IE1JTl9FWFApIHtcclxuICAgICAgICAgIHguYyA9IFt4LmUgPSAwXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB4O1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBmdW5jdGlvbiB2YWx1ZU9mKG4pIHtcclxuICAgICAgdmFyIHN0cixcclxuICAgICAgICBlID0gbi5lO1xyXG5cclxuICAgICAgaWYgKGUgPT09IG51bGwpIHJldHVybiBuLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICBzdHIgPSBjb2VmZlRvU3RyaW5nKG4uYyk7XHJcblxyXG4gICAgICBzdHIgPSBlIDw9IFRPX0VYUF9ORUcgfHwgZSA+PSBUT19FWFBfUE9TXHJcbiAgICAgICAgPyB0b0V4cG9uZW50aWFsKHN0ciwgZSlcclxuICAgICAgICA6IHRvRml4ZWRQb2ludChzdHIsIGUsICcwJyk7XHJcblxyXG4gICAgICByZXR1cm4gbi5zIDwgMCA/ICctJyArIHN0ciA6IHN0cjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gUFJPVE9UWVBFL0lOU1RBTkNFIE1FVEhPRFNcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyLlxyXG4gICAgICovXHJcbiAgICBQLmFic29sdXRlVmFsdWUgPSBQLmFicyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIHggPSBuZXcgQmlnTnVtYmVyKHRoaXMpO1xyXG4gICAgICBpZiAoeC5zIDwgMCkgeC5zID0gMTtcclxuICAgICAgcmV0dXJuIHg7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuXHJcbiAgICAgKiAgIDEgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGdyZWF0ZXIgdGhhbiB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyKHksIGIpLFxyXG4gICAgICogICAtMSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgbGVzcyB0aGFuIHRoZSB2YWx1ZSBvZiBCaWdOdW1iZXIoeSwgYiksXHJcbiAgICAgKiAgIDAgaWYgdGhleSBoYXZlIHRoZSBzYW1lIHZhbHVlLFxyXG4gICAgICogICBvciBudWxsIGlmIHRoZSB2YWx1ZSBvZiBlaXRoZXIgaXMgTmFOLlxyXG4gICAgICovXHJcbiAgICBQLmNvbXBhcmVkVG8gPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICByZXR1cm4gY29tcGFyZSh0aGlzLCBuZXcgQmlnTnVtYmVyKHksIGIpKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBJZiBkcCBpcyB1bmRlZmluZWQgb3IgbnVsbCBvciB0cnVlIG9yIGZhbHNlLCByZXR1cm4gdGhlIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyBvZiB0aGVcclxuICAgICAqIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyLCBvciBudWxsIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyDCsUluZmluaXR5IG9yIE5hTi5cclxuICAgICAqXHJcbiAgICAgKiBPdGhlcndpc2UsIGlmIGRwIGlzIGEgbnVtYmVyLCByZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzXHJcbiAgICAgKiBCaWdOdW1iZXIgcm91bmRlZCB0byBhIG1heGltdW0gb2YgZHAgZGVjaW1hbCBwbGFjZXMgdXNpbmcgcm91bmRpbmcgbW9kZSBybSwgb3JcclxuICAgICAqIFJPVU5ESU5HX01PREUgaWYgcm0gaXMgb21pdHRlZC5cclxuICAgICAqXHJcbiAgICAgKiBbZHBdIHtudW1iZXJ9IERlY2ltYWwgcGxhY2VzOiBpbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEFyZ3VtZW50IHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtkcHxybX0nXHJcbiAgICAgKi9cclxuICAgIFAuZGVjaW1hbFBsYWNlcyA9IFAuZHAgPSBmdW5jdGlvbiAoZHAsIHJtKSB7XHJcbiAgICAgIHZhciBjLCBuLCB2LFxyXG4gICAgICAgIHggPSB0aGlzO1xyXG5cclxuICAgICAgaWYgKGRwICE9IG51bGwpIHtcclxuICAgICAgICBpbnRDaGVjayhkcCwgMCwgTUFYKTtcclxuICAgICAgICBpZiAocm0gPT0gbnVsbCkgcm0gPSBST1VORElOR19NT0RFO1xyXG4gICAgICAgIGVsc2UgaW50Q2hlY2socm0sIDAsIDgpO1xyXG5cclxuICAgICAgICByZXR1cm4gcm91bmQobmV3IEJpZ051bWJlcih4KSwgZHAgKyB4LmUgKyAxLCBybSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghKGMgPSB4LmMpKSByZXR1cm4gbnVsbDtcclxuICAgICAgbiA9ICgodiA9IGMubGVuZ3RoIC0gMSkgLSBiaXRGbG9vcih0aGlzLmUgLyBMT0dfQkFTRSkpICogTE9HX0JBU0U7XHJcblxyXG4gICAgICAvLyBTdWJ0cmFjdCB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIHplcm9zIG9mIHRoZSBsYXN0IG51bWJlci5cclxuICAgICAgaWYgKHYgPSBjW3ZdKSBmb3IgKDsgdiAlIDEwID09IDA7IHYgLz0gMTAsIG4tLSk7XHJcbiAgICAgIGlmIChuIDwgMCkgbiA9IDA7XHJcblxyXG4gICAgICByZXR1cm4gbjtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiAgbiAvIDAgPSBJXHJcbiAgICAgKiAgbiAvIE4gPSBOXHJcbiAgICAgKiAgbiAvIEkgPSAwXHJcbiAgICAgKiAgMCAvIG4gPSAwXHJcbiAgICAgKiAgMCAvIDAgPSBOXHJcbiAgICAgKiAgMCAvIE4gPSBOXHJcbiAgICAgKiAgMCAvIEkgPSAwXHJcbiAgICAgKiAgTiAvIG4gPSBOXHJcbiAgICAgKiAgTiAvIDAgPSBOXHJcbiAgICAgKiAgTiAvIE4gPSBOXHJcbiAgICAgKiAgTiAvIEkgPSBOXHJcbiAgICAgKiAgSSAvIG4gPSBJXHJcbiAgICAgKiAgSSAvIDAgPSBJXHJcbiAgICAgKiAgSSAvIE4gPSBOXHJcbiAgICAgKiAgSSAvIEkgPSBOXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgZGl2aWRlZCBieSB0aGUgdmFsdWUgb2ZcclxuICAgICAqIEJpZ051bWJlcih5LCBiKSwgcm91bmRlZCBhY2NvcmRpbmcgdG8gREVDSU1BTF9QTEFDRVMgYW5kIFJPVU5ESU5HX01PREUuXHJcbiAgICAgKi9cclxuICAgIFAuZGl2aWRlZEJ5ID0gUC5kaXYgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICByZXR1cm4gZGl2KHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYiksIERFQ0lNQUxfUExBQ0VTLCBST1VORElOR19NT0RFKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSBpbnRlZ2VyIHBhcnQgb2YgZGl2aWRpbmcgdGhlIHZhbHVlIG9mIHRoaXNcclxuICAgICAqIEJpZ051bWJlciBieSB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyKHksIGIpLlxyXG4gICAgICovXHJcbiAgICBQLmRpdmlkZWRUb0ludGVnZXJCeSA9IFAuaWRpdiA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHJldHVybiBkaXYodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSwgMCwgMSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBleHBvbmVudGlhdGVkIGJ5IG4uXHJcbiAgICAgKlxyXG4gICAgICogSWYgbSBpcyBwcmVzZW50LCByZXR1cm4gdGhlIHJlc3VsdCBtb2R1bG8gbS5cclxuICAgICAqIElmIG4gaXMgbmVnYXRpdmUgcm91bmQgYWNjb3JkaW5nIHRvIERFQ0lNQUxfUExBQ0VTIGFuZCBST1VORElOR19NT0RFLlxyXG4gICAgICogSWYgUE9XX1BSRUNJU0lPTiBpcyBub24temVybyBhbmQgbSBpcyBub3QgcHJlc2VudCwgcm91bmQgdG8gUE9XX1BSRUNJU0lPTiB1c2luZyBST1VORElOR19NT0RFLlxyXG4gICAgICpcclxuICAgICAqIFRoZSBtb2R1bGFyIHBvd2VyIG9wZXJhdGlvbiB3b3JrcyBlZmZpY2llbnRseSB3aGVuIHgsIG4sIGFuZCBtIGFyZSBpbnRlZ2Vycywgb3RoZXJ3aXNlIGl0XHJcbiAgICAgKiBpcyBlcXVpdmFsZW50IHRvIGNhbGN1bGF0aW5nIHguZXhwb25lbnRpYXRlZEJ5KG4pLm1vZHVsbyhtKSB3aXRoIGEgUE9XX1BSRUNJU0lPTiBvZiAwLlxyXG4gICAgICpcclxuICAgICAqIG4ge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfSBUaGUgZXhwb25lbnQuIEFuIGludGVnZXIuXHJcbiAgICAgKiBbbV0ge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfSBUaGUgbW9kdWx1cy5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gRXhwb25lbnQgbm90IGFuIGludGVnZXI6IHtufSdcclxuICAgICAqL1xyXG4gICAgUC5leHBvbmVudGlhdGVkQnkgPSBQLnBvdyA9IGZ1bmN0aW9uIChuLCBtKSB7XHJcbiAgICAgIHZhciBoYWxmLCBpc01vZEV4cCwgaSwgaywgbW9yZSwgbklzQmlnLCBuSXNOZWcsIG5Jc09kZCwgeSxcclxuICAgICAgICB4ID0gdGhpcztcclxuXHJcbiAgICAgIG4gPSBuZXcgQmlnTnVtYmVyKG4pO1xyXG5cclxuICAgICAgLy8gQWxsb3cgTmFOIGFuZCDCsUluZmluaXR5LCBidXQgbm90IG90aGVyIG5vbi1pbnRlZ2Vycy5cclxuICAgICAgaWYgKG4uYyAmJiAhbi5pc0ludGVnZXIoKSkge1xyXG4gICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnRXhwb25lbnQgbm90IGFuIGludGVnZXI6ICcgKyB2YWx1ZU9mKG4pKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKG0gIT0gbnVsbCkgbSA9IG5ldyBCaWdOdW1iZXIobSk7XHJcblxyXG4gICAgICAvLyBFeHBvbmVudCBvZiBNQVhfU0FGRV9JTlRFR0VSIGlzIDE1LlxyXG4gICAgICBuSXNCaWcgPSBuLmUgPiAxNDtcclxuXHJcbiAgICAgIC8vIElmIHggaXMgTmFOLCDCsUluZmluaXR5LCDCsTAgb3IgwrExLCBvciBuIGlzIMKxSW5maW5pdHksIE5hTiBvciDCsTAuXHJcbiAgICAgIGlmICgheC5jIHx8ICF4LmNbMF0gfHwgeC5jWzBdID09IDEgJiYgIXguZSAmJiB4LmMubGVuZ3RoID09IDEgfHwgIW4uYyB8fCAhbi5jWzBdKSB7XHJcblxyXG4gICAgICAgIC8vIFRoZSBzaWduIG9mIHRoZSByZXN1bHQgb2YgcG93IHdoZW4geCBpcyBuZWdhdGl2ZSBkZXBlbmRzIG9uIHRoZSBldmVubmVzcyBvZiBuLlxyXG4gICAgICAgIC8vIElmICtuIG92ZXJmbG93cyB0byDCsUluZmluaXR5LCB0aGUgZXZlbm5lc3Mgb2YgbiB3b3VsZCBiZSBub3QgYmUga25vd24uXHJcbiAgICAgICAgeSA9IG5ldyBCaWdOdW1iZXIoTWF0aC5wb3coK3ZhbHVlT2YoeCksIG5Jc0JpZyA/IDIgLSBpc09kZChuKSA6ICt2YWx1ZU9mKG4pKSk7XHJcbiAgICAgICAgcmV0dXJuIG0gPyB5Lm1vZChtKSA6IHk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIG5Jc05lZyA9IG4ucyA8IDA7XHJcblxyXG4gICAgICBpZiAobSkge1xyXG5cclxuICAgICAgICAvLyB4ICUgbSByZXR1cm5zIE5hTiBpZiBhYnMobSkgaXMgemVybywgb3IgbSBpcyBOYU4uXHJcbiAgICAgICAgaWYgKG0uYyA/ICFtLmNbMF0gOiAhbS5zKSByZXR1cm4gbmV3IEJpZ051bWJlcihOYU4pO1xyXG5cclxuICAgICAgICBpc01vZEV4cCA9ICFuSXNOZWcgJiYgeC5pc0ludGVnZXIoKSAmJiBtLmlzSW50ZWdlcigpO1xyXG5cclxuICAgICAgICBpZiAoaXNNb2RFeHApIHggPSB4Lm1vZChtKTtcclxuXHJcbiAgICAgIC8vIE92ZXJmbG93IHRvIMKxSW5maW5pdHk6ID49MioqMWUxMCBvciA+PTEuMDAwMDAyNCoqMWUxNS5cclxuICAgICAgLy8gVW5kZXJmbG93IHRvIMKxMDogPD0wLjc5KioxZTEwIG9yIDw9MC45OTk5OTc1KioxZTE1LlxyXG4gICAgICB9IGVsc2UgaWYgKG4uZSA+IDkgJiYgKHguZSA+IDAgfHwgeC5lIDwgLTEgfHwgKHguZSA9PSAwXHJcbiAgICAgICAgLy8gWzEsIDI0MDAwMDAwMF1cclxuICAgICAgICA/IHguY1swXSA+IDEgfHwgbklzQmlnICYmIHguY1sxXSA+PSAyNGU3XHJcbiAgICAgICAgLy8gWzgwMDAwMDAwMDAwMDAwXSAgWzk5OTk5NzUwMDAwMDAwXVxyXG4gICAgICAgIDogeC5jWzBdIDwgOGUxMyB8fCBuSXNCaWcgJiYgeC5jWzBdIDw9IDk5OTk5NzVlNykpKSB7XHJcblxyXG4gICAgICAgIC8vIElmIHggaXMgbmVnYXRpdmUgYW5kIG4gaXMgb2RkLCBrID0gLTAsIGVsc2UgayA9IDAuXHJcbiAgICAgICAgayA9IHgucyA8IDAgJiYgaXNPZGQobikgPyAtMCA6IDA7XHJcblxyXG4gICAgICAgIC8vIElmIHggPj0gMSwgayA9IMKxSW5maW5pdHkuXHJcbiAgICAgICAgaWYgKHguZSA+IC0xKSBrID0gMSAvIGs7XHJcblxyXG4gICAgICAgIC8vIElmIG4gaXMgbmVnYXRpdmUgcmV0dXJuIMKxMCwgZWxzZSByZXR1cm4gwrFJbmZpbml0eS5cclxuICAgICAgICByZXR1cm4gbmV3IEJpZ051bWJlcihuSXNOZWcgPyAxIC8gayA6IGspO1xyXG5cclxuICAgICAgfSBlbHNlIGlmIChQT1dfUFJFQ0lTSU9OKSB7XHJcblxyXG4gICAgICAgIC8vIFRydW5jYXRpbmcgZWFjaCBjb2VmZmljaWVudCBhcnJheSB0byBhIGxlbmd0aCBvZiBrIGFmdGVyIGVhY2ggbXVsdGlwbGljYXRpb25cclxuICAgICAgICAvLyBlcXVhdGVzIHRvIHRydW5jYXRpbmcgc2lnbmlmaWNhbnQgZGlnaXRzIHRvIFBPV19QUkVDSVNJT04gKyBbMjgsIDQxXSxcclxuICAgICAgICAvLyBpLmUuIHRoZXJlIHdpbGwgYmUgYSBtaW5pbXVtIG9mIDI4IGd1YXJkIGRpZ2l0cyByZXRhaW5lZC5cclxuICAgICAgICBrID0gbWF0aGNlaWwoUE9XX1BSRUNJU0lPTiAvIExPR19CQVNFICsgMik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChuSXNCaWcpIHtcclxuICAgICAgICBoYWxmID0gbmV3IEJpZ051bWJlcigwLjUpO1xyXG4gICAgICAgIGlmIChuSXNOZWcpIG4ucyA9IDE7XHJcbiAgICAgICAgbklzT2RkID0gaXNPZGQobik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaSA9IE1hdGguYWJzKCt2YWx1ZU9mKG4pKTtcclxuICAgICAgICBuSXNPZGQgPSBpICUgMjtcclxuICAgICAgfVxyXG5cclxuICAgICAgeSA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuXHJcbiAgICAgIC8vIFBlcmZvcm1zIDU0IGxvb3AgaXRlcmF0aW9ucyBmb3IgbiBvZiA5MDA3MTk5MjU0NzQwOTkxLlxyXG4gICAgICBmb3IgKDsgOykge1xyXG5cclxuICAgICAgICBpZiAobklzT2RkKSB7XHJcbiAgICAgICAgICB5ID0geS50aW1lcyh4KTtcclxuICAgICAgICAgIGlmICgheS5jKSBicmVhaztcclxuXHJcbiAgICAgICAgICBpZiAoaykge1xyXG4gICAgICAgICAgICBpZiAoeS5jLmxlbmd0aCA+IGspIHkuYy5sZW5ndGggPSBrO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChpc01vZEV4cCkge1xyXG4gICAgICAgICAgICB5ID0geS5tb2QobSk7ICAgIC8veSA9IHkubWludXMoZGl2KHksIG0sIDAsIE1PRFVMT19NT0RFKS50aW1lcyhtKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaSkge1xyXG4gICAgICAgICAgaSA9IG1hdGhmbG9vcihpIC8gMik7XHJcbiAgICAgICAgICBpZiAoaSA9PT0gMCkgYnJlYWs7XHJcbiAgICAgICAgICBuSXNPZGQgPSBpICUgMjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbiA9IG4udGltZXMoaGFsZik7XHJcbiAgICAgICAgICByb3VuZChuLCBuLmUgKyAxLCAxKTtcclxuXHJcbiAgICAgICAgICBpZiAobi5lID4gMTQpIHtcclxuICAgICAgICAgICAgbklzT2RkID0gaXNPZGQobik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpID0gK3ZhbHVlT2Yobik7XHJcbiAgICAgICAgICAgIGlmIChpID09PSAwKSBicmVhaztcclxuICAgICAgICAgICAgbklzT2RkID0gaSAlIDI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB4ID0geC50aW1lcyh4KTtcclxuXHJcbiAgICAgICAgaWYgKGspIHtcclxuICAgICAgICAgIGlmICh4LmMgJiYgeC5jLmxlbmd0aCA+IGspIHguYy5sZW5ndGggPSBrO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXNNb2RFeHApIHtcclxuICAgICAgICAgIHggPSB4Lm1vZChtKTsgICAgLy94ID0geC5taW51cyhkaXYoeCwgbSwgMCwgTU9EVUxPX01PREUpLnRpbWVzKG0pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChpc01vZEV4cCkgcmV0dXJuIHk7XHJcbiAgICAgIGlmIChuSXNOZWcpIHkgPSBPTkUuZGl2KHkpO1xyXG5cclxuICAgICAgcmV0dXJuIG0gPyB5Lm1vZChtKSA6IGsgPyByb3VuZCh5LCBQT1dfUFJFQ0lTSU9OLCBST1VORElOR19NT0RFLCBtb3JlKSA6IHk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgcm91bmRlZCB0byBhbiBpbnRlZ2VyXHJcbiAgICAgKiB1c2luZyByb3VuZGluZyBtb2RlIHJtLCBvciBST1VORElOR19NT0RFIGlmIHJtIGlzIG9taXR0ZWQuXHJcbiAgICAgKlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7cm19J1xyXG4gICAgICovXHJcbiAgICBQLmludGVnZXJWYWx1ZSA9IGZ1bmN0aW9uIChybSkge1xyXG4gICAgICB2YXIgbiA9IG5ldyBCaWdOdW1iZXIodGhpcyk7XHJcbiAgICAgIGlmIChybSA9PSBudWxsKSBybSA9IFJPVU5ESU5HX01PREU7XHJcbiAgICAgIGVsc2UgaW50Q2hlY2socm0sIDAsIDgpO1xyXG4gICAgICByZXR1cm4gcm91bmQobiwgbi5lICsgMSwgcm0pO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBlcXVhbCB0byB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyKHksIGIpLFxyXG4gICAgICogb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc0VxdWFsVG8gPSBQLmVxID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSkgPT09IDA7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGEgZmluaXRlIG51bWJlciwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc0Zpbml0ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuICEhdGhpcy5jO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBncmVhdGVyIHRoYW4gdGhlIHZhbHVlIG9mIEJpZ051bWJlcih5LCBiKSxcclxuICAgICAqIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNHcmVhdGVyVGhhbiA9IFAuZ3QgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICByZXR1cm4gY29tcGFyZSh0aGlzLCBuZXcgQmlnTnVtYmVyKHksIGIpKSA+IDA7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdmFsdWUgb2ZcclxuICAgICAqIEJpZ051bWJlcih5LCBiKSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc0dyZWF0ZXJUaGFuT3JFcXVhbFRvID0gUC5ndGUgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICByZXR1cm4gKGIgPSBjb21wYXJlKHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYikpKSA9PT0gMSB8fCBiID09PSAwO1xyXG5cclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgYW4gaW50ZWdlciwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc0ludGVnZXIgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiAhIXRoaXMuYyAmJiBiaXRGbG9vcih0aGlzLmUgLyBMT0dfQkFTRSkgPiB0aGlzLmMubGVuZ3RoIC0gMjtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgbGVzcyB0aGFuIHRoZSB2YWx1ZSBvZiBCaWdOdW1iZXIoeSwgYiksXHJcbiAgICAgKiBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICovXHJcbiAgICBQLmlzTGVzc1RoYW4gPSBQLmx0ID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSkgPCAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYiksIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNMZXNzVGhhbk9yRXF1YWxUbyA9IFAubHRlID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIChiID0gY29tcGFyZSh0aGlzLCBuZXcgQmlnTnVtYmVyKHksIGIpKSkgPT09IC0xIHx8IGIgPT09IDA7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIE5hTiwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc05hTiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuICF0aGlzLnM7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIG5lZ2F0aXZlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICovXHJcbiAgICBQLmlzTmVnYXRpdmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnMgPCAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBwb3NpdGl2ZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc1Bvc2l0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zID4gMDtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgMCBvciAtMCwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiAhIXRoaXMuYyAmJiB0aGlzLmNbMF0gPT0gMDtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiAgbiAtIDAgPSBuXHJcbiAgICAgKiAgbiAtIE4gPSBOXHJcbiAgICAgKiAgbiAtIEkgPSAtSVxyXG4gICAgICogIDAgLSBuID0gLW5cclxuICAgICAqICAwIC0gMCA9IDBcclxuICAgICAqICAwIC0gTiA9IE5cclxuICAgICAqICAwIC0gSSA9IC1JXHJcbiAgICAgKiAgTiAtIG4gPSBOXHJcbiAgICAgKiAgTiAtIDAgPSBOXHJcbiAgICAgKiAgTiAtIE4gPSBOXHJcbiAgICAgKiAgTiAtIEkgPSBOXHJcbiAgICAgKiAgSSAtIG4gPSBJXHJcbiAgICAgKiAgSSAtIDAgPSBJXHJcbiAgICAgKiAgSSAtIE4gPSBOXHJcbiAgICAgKiAgSSAtIEkgPSBOXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgbWludXMgdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYikuXHJcbiAgICAgKi9cclxuICAgIFAubWludXMgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICB2YXIgaSwgaiwgdCwgeExUeSxcclxuICAgICAgICB4ID0gdGhpcyxcclxuICAgICAgICBhID0geC5zO1xyXG5cclxuICAgICAgeSA9IG5ldyBCaWdOdW1iZXIoeSwgYik7XHJcbiAgICAgIGIgPSB5LnM7XHJcblxyXG4gICAgICAvLyBFaXRoZXIgTmFOP1xyXG4gICAgICBpZiAoIWEgfHwgIWIpIHJldHVybiBuZXcgQmlnTnVtYmVyKE5hTik7XHJcblxyXG4gICAgICAvLyBTaWducyBkaWZmZXI/XHJcbiAgICAgIGlmIChhICE9IGIpIHtcclxuICAgICAgICB5LnMgPSAtYjtcclxuICAgICAgICByZXR1cm4geC5wbHVzKHkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgeGUgPSB4LmUgLyBMT0dfQkFTRSxcclxuICAgICAgICB5ZSA9IHkuZSAvIExPR19CQVNFLFxyXG4gICAgICAgIHhjID0geC5jLFxyXG4gICAgICAgIHljID0geS5jO1xyXG5cclxuICAgICAgaWYgKCF4ZSB8fCAheWUpIHtcclxuXHJcbiAgICAgICAgLy8gRWl0aGVyIEluZmluaXR5P1xyXG4gICAgICAgIGlmICgheGMgfHwgIXljKSByZXR1cm4geGMgPyAoeS5zID0gLWIsIHkpIDogbmV3IEJpZ051bWJlcih5YyA/IHggOiBOYU4pO1xyXG5cclxuICAgICAgICAvLyBFaXRoZXIgemVybz9cclxuICAgICAgICBpZiAoIXhjWzBdIHx8ICF5Y1swXSkge1xyXG5cclxuICAgICAgICAgIC8vIFJldHVybiB5IGlmIHkgaXMgbm9uLXplcm8sIHggaWYgeCBpcyBub24temVybywgb3IgemVybyBpZiBib3RoIGFyZSB6ZXJvLlxyXG4gICAgICAgICAgcmV0dXJuIHljWzBdID8gKHkucyA9IC1iLCB5KSA6IG5ldyBCaWdOdW1iZXIoeGNbMF0gPyB4IDpcclxuXHJcbiAgICAgICAgICAgLy8gSUVFRSA3NTQgKDIwMDgpIDYuMzogbiAtIG4gPSAtMCB3aGVuIHJvdW5kaW5nIHRvIC1JbmZpbml0eVxyXG4gICAgICAgICAgIFJPVU5ESU5HX01PREUgPT0gMyA/IC0wIDogMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB4ZSA9IGJpdEZsb29yKHhlKTtcclxuICAgICAgeWUgPSBiaXRGbG9vcih5ZSk7XHJcbiAgICAgIHhjID0geGMuc2xpY2UoKTtcclxuXHJcbiAgICAgIC8vIERldGVybWluZSB3aGljaCBpcyB0aGUgYmlnZ2VyIG51bWJlci5cclxuICAgICAgaWYgKGEgPSB4ZSAtIHllKSB7XHJcblxyXG4gICAgICAgIGlmICh4TFR5ID0gYSA8IDApIHtcclxuICAgICAgICAgIGEgPSAtYTtcclxuICAgICAgICAgIHQgPSB4YztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgeWUgPSB4ZTtcclxuICAgICAgICAgIHQgPSB5YztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHQucmV2ZXJzZSgpO1xyXG5cclxuICAgICAgICAvLyBQcmVwZW5kIHplcm9zIHRvIGVxdWFsaXNlIGV4cG9uZW50cy5cclxuICAgICAgICBmb3IgKGIgPSBhOyBiLS07IHQucHVzaCgwKSk7XHJcbiAgICAgICAgdC5yZXZlcnNlKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIC8vIEV4cG9uZW50cyBlcXVhbC4gQ2hlY2sgZGlnaXQgYnkgZGlnaXQuXHJcbiAgICAgICAgaiA9ICh4TFR5ID0gKGEgPSB4Yy5sZW5ndGgpIDwgKGIgPSB5Yy5sZW5ndGgpKSA/IGEgOiBiO1xyXG5cclxuICAgICAgICBmb3IgKGEgPSBiID0gMDsgYiA8IGo7IGIrKykge1xyXG5cclxuICAgICAgICAgIGlmICh4Y1tiXSAhPSB5Y1tiXSkge1xyXG4gICAgICAgICAgICB4TFR5ID0geGNbYl0gPCB5Y1tiXTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyB4IDwgeT8gUG9pbnQgeGMgdG8gdGhlIGFycmF5IG9mIHRoZSBiaWdnZXIgbnVtYmVyLlxyXG4gICAgICBpZiAoeExUeSkgdCA9IHhjLCB4YyA9IHljLCB5YyA9IHQsIHkucyA9IC15LnM7XHJcblxyXG4gICAgICBiID0gKGogPSB5Yy5sZW5ndGgpIC0gKGkgPSB4Yy5sZW5ndGgpO1xyXG5cclxuICAgICAgLy8gQXBwZW5kIHplcm9zIHRvIHhjIGlmIHNob3J0ZXIuXHJcbiAgICAgIC8vIE5vIG5lZWQgdG8gYWRkIHplcm9zIHRvIHljIGlmIHNob3J0ZXIgYXMgc3VidHJhY3Qgb25seSBuZWVkcyB0byBzdGFydCBhdCB5Yy5sZW5ndGguXHJcbiAgICAgIGlmIChiID4gMCkgZm9yICg7IGItLTsgeGNbaSsrXSA9IDApO1xyXG4gICAgICBiID0gQkFTRSAtIDE7XHJcblxyXG4gICAgICAvLyBTdWJ0cmFjdCB5YyBmcm9tIHhjLlxyXG4gICAgICBmb3IgKDsgaiA+IGE7KSB7XHJcblxyXG4gICAgICAgIGlmICh4Y1stLWpdIDwgeWNbal0pIHtcclxuICAgICAgICAgIGZvciAoaSA9IGo7IGkgJiYgIXhjWy0taV07IHhjW2ldID0gYik7XHJcbiAgICAgICAgICAtLXhjW2ldO1xyXG4gICAgICAgICAgeGNbal0gKz0gQkFTRTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHhjW2pdIC09IHljW2pdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZW1vdmUgbGVhZGluZyB6ZXJvcyBhbmQgYWRqdXN0IGV4cG9uZW50IGFjY29yZGluZ2x5LlxyXG4gICAgICBmb3IgKDsgeGNbMF0gPT0gMDsgeGMuc3BsaWNlKDAsIDEpLCAtLXllKTtcclxuXHJcbiAgICAgIC8vIFplcm8/XHJcbiAgICAgIGlmICgheGNbMF0pIHtcclxuXHJcbiAgICAgICAgLy8gRm9sbG93aW5nIElFRUUgNzU0ICgyMDA4KSA2LjMsXHJcbiAgICAgICAgLy8gbiAtIG4gPSArMCAgYnV0ICBuIC0gbiA9IC0wICB3aGVuIHJvdW5kaW5nIHRvd2FyZHMgLUluZmluaXR5LlxyXG4gICAgICAgIHkucyA9IFJPVU5ESU5HX01PREUgPT0gMyA/IC0xIDogMTtcclxuICAgICAgICB5LmMgPSBbeS5lID0gMF07XHJcbiAgICAgICAgcmV0dXJuIHk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIE5vIG5lZWQgdG8gY2hlY2sgZm9yIEluZmluaXR5IGFzICt4IC0gK3kgIT0gSW5maW5pdHkgJiYgLXggLSAteSAhPSBJbmZpbml0eVxyXG4gICAgICAvLyBmb3IgZmluaXRlIHggYW5kIHkuXHJcbiAgICAgIHJldHVybiBub3JtYWxpc2UoeSwgeGMsIHllKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiAgIG4gJSAwID0gIE5cclxuICAgICAqICAgbiAlIE4gPSAgTlxyXG4gICAgICogICBuICUgSSA9ICBuXHJcbiAgICAgKiAgIDAgJSBuID0gIDBcclxuICAgICAqICAtMCAlIG4gPSAtMFxyXG4gICAgICogICAwICUgMCA9ICBOXHJcbiAgICAgKiAgIDAgJSBOID0gIE5cclxuICAgICAqICAgMCAlIEkgPSAgMFxyXG4gICAgICogICBOICUgbiA9ICBOXHJcbiAgICAgKiAgIE4gJSAwID0gIE5cclxuICAgICAqICAgTiAlIE4gPSAgTlxyXG4gICAgICogICBOICUgSSA9ICBOXHJcbiAgICAgKiAgIEkgJSBuID0gIE5cclxuICAgICAqICAgSSAlIDAgPSAgTlxyXG4gICAgICogICBJICUgTiA9ICBOXHJcbiAgICAgKiAgIEkgJSBJID0gIE5cclxuICAgICAqXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBtb2R1bG8gdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYikuIFRoZSByZXN1bHQgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgTU9EVUxPX01PREUuXHJcbiAgICAgKi9cclxuICAgIFAubW9kdWxvID0gUC5tb2QgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICB2YXIgcSwgcyxcclxuICAgICAgICB4ID0gdGhpcztcclxuXHJcbiAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKHksIGIpO1xyXG5cclxuICAgICAgLy8gUmV0dXJuIE5hTiBpZiB4IGlzIEluZmluaXR5IG9yIE5hTiwgb3IgeSBpcyBOYU4gb3IgemVyby5cclxuICAgICAgaWYgKCF4LmMgfHwgIXkucyB8fCB5LmMgJiYgIXkuY1swXSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKE5hTik7XHJcblxyXG4gICAgICAvLyBSZXR1cm4geCBpZiB5IGlzIEluZmluaXR5IG9yIHggaXMgemVyby5cclxuICAgICAgfSBlbHNlIGlmICgheS5jIHx8IHguYyAmJiAheC5jWzBdKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdOdW1iZXIoeCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChNT0RVTE9fTU9ERSA9PSA5KSB7XHJcblxyXG4gICAgICAgIC8vIEV1Y2xpZGlhbiBkaXZpc2lvbjogcSA9IHNpZ24oeSkgKiBmbG9vcih4IC8gYWJzKHkpKVxyXG4gICAgICAgIC8vIHIgPSB4IC0gcXkgICAgd2hlcmUgIDAgPD0gciA8IGFicyh5KVxyXG4gICAgICAgIHMgPSB5LnM7XHJcbiAgICAgICAgeS5zID0gMTtcclxuICAgICAgICBxID0gZGl2KHgsIHksIDAsIDMpO1xyXG4gICAgICAgIHkucyA9IHM7XHJcbiAgICAgICAgcS5zICo9IHM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcSA9IGRpdih4LCB5LCAwLCBNT0RVTE9fTU9ERSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHkgPSB4Lm1pbnVzKHEudGltZXMoeSkpO1xyXG5cclxuICAgICAgLy8gVG8gbWF0Y2ggSmF2YVNjcmlwdCAlLCBlbnN1cmUgc2lnbiBvZiB6ZXJvIGlzIHNpZ24gb2YgZGl2aWRlbmQuXHJcbiAgICAgIGlmICgheS5jWzBdICYmIE1PRFVMT19NT0RFID09IDEpIHkucyA9IHgucztcclxuXHJcbiAgICAgIHJldHVybiB5O1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqICBuICogMCA9IDBcclxuICAgICAqICBuICogTiA9IE5cclxuICAgICAqICBuICogSSA9IElcclxuICAgICAqICAwICogbiA9IDBcclxuICAgICAqICAwICogMCA9IDBcclxuICAgICAqICAwICogTiA9IE5cclxuICAgICAqICAwICogSSA9IE5cclxuICAgICAqICBOICogbiA9IE5cclxuICAgICAqICBOICogMCA9IE5cclxuICAgICAqICBOICogTiA9IE5cclxuICAgICAqICBOICogSSA9IE5cclxuICAgICAqICBJICogbiA9IElcclxuICAgICAqICBJICogMCA9IE5cclxuICAgICAqICBJICogTiA9IE5cclxuICAgICAqICBJICogSSA9IElcclxuICAgICAqXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBtdWx0aXBsaWVkIGJ5IHRoZSB2YWx1ZVxyXG4gICAgICogb2YgQmlnTnVtYmVyKHksIGIpLlxyXG4gICAgICovXHJcbiAgICBQLm11bHRpcGxpZWRCeSA9IFAudGltZXMgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICB2YXIgYywgZSwgaSwgaiwgaywgbSwgeGNMLCB4bG8sIHhoaSwgeWNMLCB5bG8sIHloaSwgemMsXHJcbiAgICAgICAgYmFzZSwgc3FydEJhc2UsXHJcbiAgICAgICAgeCA9IHRoaXMsXHJcbiAgICAgICAgeGMgPSB4LmMsXHJcbiAgICAgICAgeWMgPSAoeSA9IG5ldyBCaWdOdW1iZXIoeSwgYikpLmM7XHJcblxyXG4gICAgICAvLyBFaXRoZXIgTmFOLCDCsUluZmluaXR5IG9yIMKxMD9cclxuICAgICAgaWYgKCF4YyB8fCAheWMgfHwgIXhjWzBdIHx8ICF5Y1swXSkge1xyXG5cclxuICAgICAgICAvLyBSZXR1cm4gTmFOIGlmIGVpdGhlciBpcyBOYU4sIG9yIG9uZSBpcyAwIGFuZCB0aGUgb3RoZXIgaXMgSW5maW5pdHkuXHJcbiAgICAgICAgaWYgKCF4LnMgfHwgIXkucyB8fCB4YyAmJiAheGNbMF0gJiYgIXljIHx8IHljICYmICF5Y1swXSAmJiAheGMpIHtcclxuICAgICAgICAgIHkuYyA9IHkuZSA9IHkucyA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHkucyAqPSB4LnM7XHJcblxyXG4gICAgICAgICAgLy8gUmV0dXJuIMKxSW5maW5pdHkgaWYgZWl0aGVyIGlzIMKxSW5maW5pdHkuXHJcbiAgICAgICAgICBpZiAoIXhjIHx8ICF5Yykge1xyXG4gICAgICAgICAgICB5LmMgPSB5LmUgPSBudWxsO1xyXG5cclxuICAgICAgICAgIC8vIFJldHVybiDCsTAgaWYgZWl0aGVyIGlzIMKxMC5cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHkuYyA9IFswXTtcclxuICAgICAgICAgICAgeS5lID0gMDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB5O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBlID0gYml0Rmxvb3IoeC5lIC8gTE9HX0JBU0UpICsgYml0Rmxvb3IoeS5lIC8gTE9HX0JBU0UpO1xyXG4gICAgICB5LnMgKj0geC5zO1xyXG4gICAgICB4Y0wgPSB4Yy5sZW5ndGg7XHJcbiAgICAgIHljTCA9IHljLmxlbmd0aDtcclxuXHJcbiAgICAgIC8vIEVuc3VyZSB4YyBwb2ludHMgdG8gbG9uZ2VyIGFycmF5IGFuZCB4Y0wgdG8gaXRzIGxlbmd0aC5cclxuICAgICAgaWYgKHhjTCA8IHljTCkgemMgPSB4YywgeGMgPSB5YywgeWMgPSB6YywgaSA9IHhjTCwgeGNMID0geWNMLCB5Y0wgPSBpO1xyXG5cclxuICAgICAgLy8gSW5pdGlhbGlzZSB0aGUgcmVzdWx0IGFycmF5IHdpdGggemVyb3MuXHJcbiAgICAgIGZvciAoaSA9IHhjTCArIHljTCwgemMgPSBbXTsgaS0tOyB6Yy5wdXNoKDApKTtcclxuXHJcbiAgICAgIGJhc2UgPSBCQVNFO1xyXG4gICAgICBzcXJ0QmFzZSA9IFNRUlRfQkFTRTtcclxuXHJcbiAgICAgIGZvciAoaSA9IHljTDsgLS1pID49IDA7KSB7XHJcbiAgICAgICAgYyA9IDA7XHJcbiAgICAgICAgeWxvID0geWNbaV0gJSBzcXJ0QmFzZTtcclxuICAgICAgICB5aGkgPSB5Y1tpXSAvIHNxcnRCYXNlIHwgMDtcclxuXHJcbiAgICAgICAgZm9yIChrID0geGNMLCBqID0gaSArIGs7IGogPiBpOykge1xyXG4gICAgICAgICAgeGxvID0geGNbLS1rXSAlIHNxcnRCYXNlO1xyXG4gICAgICAgICAgeGhpID0geGNba10gLyBzcXJ0QmFzZSB8IDA7XHJcbiAgICAgICAgICBtID0geWhpICogeGxvICsgeGhpICogeWxvO1xyXG4gICAgICAgICAgeGxvID0geWxvICogeGxvICsgKChtICUgc3FydEJhc2UpICogc3FydEJhc2UpICsgemNbal0gKyBjO1xyXG4gICAgICAgICAgYyA9ICh4bG8gLyBiYXNlIHwgMCkgKyAobSAvIHNxcnRCYXNlIHwgMCkgKyB5aGkgKiB4aGk7XHJcbiAgICAgICAgICB6Y1tqLS1dID0geGxvICUgYmFzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHpjW2pdID0gYztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGMpIHtcclxuICAgICAgICArK2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgemMuc3BsaWNlKDAsIDEpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbm9ybWFsaXNlKHksIHpjLCBlKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBuZWdhdGVkLFxyXG4gICAgICogaS5lLiBtdWx0aXBsaWVkIGJ5IC0xLlxyXG4gICAgICovXHJcbiAgICBQLm5lZ2F0ZWQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciB4ID0gbmV3IEJpZ051bWJlcih0aGlzKTtcclxuICAgICAgeC5zID0gLXgucyB8fCBudWxsO1xyXG4gICAgICByZXR1cm4geDtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiAgbiArIDAgPSBuXHJcbiAgICAgKiAgbiArIE4gPSBOXHJcbiAgICAgKiAgbiArIEkgPSBJXHJcbiAgICAgKiAgMCArIG4gPSBuXHJcbiAgICAgKiAgMCArIDAgPSAwXHJcbiAgICAgKiAgMCArIE4gPSBOXHJcbiAgICAgKiAgMCArIEkgPSBJXHJcbiAgICAgKiAgTiArIG4gPSBOXHJcbiAgICAgKiAgTiArIDAgPSBOXHJcbiAgICAgKiAgTiArIE4gPSBOXHJcbiAgICAgKiAgTiArIEkgPSBOXHJcbiAgICAgKiAgSSArIG4gPSBJXHJcbiAgICAgKiAgSSArIDAgPSBJXHJcbiAgICAgKiAgSSArIE4gPSBOXHJcbiAgICAgKiAgSSArIEkgPSBJXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgcGx1cyB0aGUgdmFsdWUgb2ZcclxuICAgICAqIEJpZ051bWJlcih5LCBiKS5cclxuICAgICAqL1xyXG4gICAgUC5wbHVzID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgdmFyIHQsXHJcbiAgICAgICAgeCA9IHRoaXMsXHJcbiAgICAgICAgYSA9IHgucztcclxuXHJcbiAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKHksIGIpO1xyXG4gICAgICBiID0geS5zO1xyXG5cclxuICAgICAgLy8gRWl0aGVyIE5hTj9cclxuICAgICAgaWYgKCFhIHx8ICFiKSByZXR1cm4gbmV3IEJpZ051bWJlcihOYU4pO1xyXG5cclxuICAgICAgLy8gU2lnbnMgZGlmZmVyP1xyXG4gICAgICAgaWYgKGEgIT0gYikge1xyXG4gICAgICAgIHkucyA9IC1iO1xyXG4gICAgICAgIHJldHVybiB4Lm1pbnVzKHkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB2YXIgeGUgPSB4LmUgLyBMT0dfQkFTRSxcclxuICAgICAgICB5ZSA9IHkuZSAvIExPR19CQVNFLFxyXG4gICAgICAgIHhjID0geC5jLFxyXG4gICAgICAgIHljID0geS5jO1xyXG5cclxuICAgICAgaWYgKCF4ZSB8fCAheWUpIHtcclxuXHJcbiAgICAgICAgLy8gUmV0dXJuIMKxSW5maW5pdHkgaWYgZWl0aGVyIMKxSW5maW5pdHkuXHJcbiAgICAgICAgaWYgKCF4YyB8fCAheWMpIHJldHVybiBuZXcgQmlnTnVtYmVyKGEgLyAwKTtcclxuXHJcbiAgICAgICAgLy8gRWl0aGVyIHplcm8/XHJcbiAgICAgICAgLy8gUmV0dXJuIHkgaWYgeSBpcyBub24temVybywgeCBpZiB4IGlzIG5vbi16ZXJvLCBvciB6ZXJvIGlmIGJvdGggYXJlIHplcm8uXHJcbiAgICAgICAgaWYgKCF4Y1swXSB8fCAheWNbMF0pIHJldHVybiB5Y1swXSA/IHkgOiBuZXcgQmlnTnVtYmVyKHhjWzBdID8geCA6IGEgKiAwKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgeGUgPSBiaXRGbG9vcih4ZSk7XHJcbiAgICAgIHllID0gYml0Rmxvb3IoeWUpO1xyXG4gICAgICB4YyA9IHhjLnNsaWNlKCk7XHJcblxyXG4gICAgICAvLyBQcmVwZW5kIHplcm9zIHRvIGVxdWFsaXNlIGV4cG9uZW50cy4gRmFzdGVyIHRvIHVzZSByZXZlcnNlIHRoZW4gZG8gdW5zaGlmdHMuXHJcbiAgICAgIGlmIChhID0geGUgLSB5ZSkge1xyXG4gICAgICAgIGlmIChhID4gMCkge1xyXG4gICAgICAgICAgeWUgPSB4ZTtcclxuICAgICAgICAgIHQgPSB5YztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYSA9IC1hO1xyXG4gICAgICAgICAgdCA9IHhjO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdC5yZXZlcnNlKCk7XHJcbiAgICAgICAgZm9yICg7IGEtLTsgdC5wdXNoKDApKTtcclxuICAgICAgICB0LnJldmVyc2UoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgYSA9IHhjLmxlbmd0aDtcclxuICAgICAgYiA9IHljLmxlbmd0aDtcclxuXHJcbiAgICAgIC8vIFBvaW50IHhjIHRvIHRoZSBsb25nZXIgYXJyYXksIGFuZCBiIHRvIHRoZSBzaG9ydGVyIGxlbmd0aC5cclxuICAgICAgaWYgKGEgLSBiIDwgMCkgdCA9IHljLCB5YyA9IHhjLCB4YyA9IHQsIGIgPSBhO1xyXG5cclxuICAgICAgLy8gT25seSBzdGFydCBhZGRpbmcgYXQgeWMubGVuZ3RoIC0gMSBhcyB0aGUgZnVydGhlciBkaWdpdHMgb2YgeGMgY2FuIGJlIGlnbm9yZWQuXHJcbiAgICAgIGZvciAoYSA9IDA7IGI7KSB7XHJcbiAgICAgICAgYSA9ICh4Y1stLWJdID0geGNbYl0gKyB5Y1tiXSArIGEpIC8gQkFTRSB8IDA7XHJcbiAgICAgICAgeGNbYl0gPSBCQVNFID09PSB4Y1tiXSA/IDAgOiB4Y1tiXSAlIEJBU0U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChhKSB7XHJcbiAgICAgICAgeGMgPSBbYV0uY29uY2F0KHhjKTtcclxuICAgICAgICArK3llO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBObyBuZWVkIHRvIGNoZWNrIGZvciB6ZXJvLCBhcyAreCArICt5ICE9IDAgJiYgLXggKyAteSAhPSAwXHJcbiAgICAgIC8vIHllID0gTUFYX0VYUCArIDEgcG9zc2libGVcclxuICAgICAgcmV0dXJuIG5vcm1hbGlzZSh5LCB4YywgeWUpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIElmIHNkIGlzIHVuZGVmaW5lZCBvciBudWxsIG9yIHRydWUgb3IgZmFsc2UsIHJldHVybiB0aGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBvZlxyXG4gICAgICogdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyLCBvciBudWxsIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyDCsUluZmluaXR5IG9yIE5hTi5cclxuICAgICAqIElmIHNkIGlzIHRydWUgaW5jbHVkZSBpbnRlZ2VyLXBhcnQgdHJhaWxpbmcgemVyb3MgaW4gdGhlIGNvdW50LlxyXG4gICAgICpcclxuICAgICAqIE90aGVyd2lzZSwgaWYgc2QgaXMgYSBudW1iZXIsIHJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXNcclxuICAgICAqIEJpZ051bWJlciByb3VuZGVkIHRvIGEgbWF4aW11bSBvZiBzZCBzaWduaWZpY2FudCBkaWdpdHMgdXNpbmcgcm91bmRpbmcgbW9kZSBybSwgb3JcclxuICAgICAqIFJPVU5ESU5HX01PREUgaWYgcm0gaXMgb21pdHRlZC5cclxuICAgICAqXHJcbiAgICAgKiBzZCB7bnVtYmVyfGJvb2xlYW59IG51bWJlcjogc2lnbmlmaWNhbnQgZGlnaXRzOiBpbnRlZ2VyLCAxIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW46IHdoZXRoZXIgdG8gY291bnQgaW50ZWdlci1wYXJ0IHRyYWlsaW5nIHplcm9zOiB0cnVlIG9yIGZhbHNlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7c2R8cm19J1xyXG4gICAgICovXHJcbiAgICBQLnByZWNpc2lvbiA9IFAuc2QgPSBmdW5jdGlvbiAoc2QsIHJtKSB7XHJcbiAgICAgIHZhciBjLCBuLCB2LFxyXG4gICAgICAgIHggPSB0aGlzO1xyXG5cclxuICAgICAgaWYgKHNkICE9IG51bGwgJiYgc2QgIT09ICEhc2QpIHtcclxuICAgICAgICBpbnRDaGVjayhzZCwgMSwgTUFYKTtcclxuICAgICAgICBpZiAocm0gPT0gbnVsbCkgcm0gPSBST1VORElOR19NT0RFO1xyXG4gICAgICAgIGVsc2UgaW50Q2hlY2socm0sIDAsIDgpO1xyXG5cclxuICAgICAgICByZXR1cm4gcm91bmQobmV3IEJpZ051bWJlcih4KSwgc2QsIHJtKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCEoYyA9IHguYykpIHJldHVybiBudWxsO1xyXG4gICAgICB2ID0gYy5sZW5ndGggLSAxO1xyXG4gICAgICBuID0gdiAqIExPR19CQVNFICsgMTtcclxuXHJcbiAgICAgIGlmICh2ID0gY1t2XSkge1xyXG5cclxuICAgICAgICAvLyBTdWJ0cmFjdCB0aGUgbnVtYmVyIG9mIHRyYWlsaW5nIHplcm9zIG9mIHRoZSBsYXN0IGVsZW1lbnQuXHJcbiAgICAgICAgZm9yICg7IHYgJSAxMCA9PSAwOyB2IC89IDEwLCBuLS0pO1xyXG5cclxuICAgICAgICAvLyBBZGQgdGhlIG51bWJlciBvZiBkaWdpdHMgb2YgdGhlIGZpcnN0IGVsZW1lbnQuXHJcbiAgICAgICAgZm9yICh2ID0gY1swXTsgdiA+PSAxMDsgdiAvPSAxMCwgbisrKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHNkICYmIHguZSArIDEgPiBuKSBuID0geC5lICsgMTtcclxuXHJcbiAgICAgIHJldHVybiBuO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIHNoaWZ0ZWQgYnkgayBwbGFjZXNcclxuICAgICAqIChwb3dlcnMgb2YgMTApLiBTaGlmdCB0byB0aGUgcmlnaHQgaWYgbiA+IDAsIGFuZCB0byB0aGUgbGVmdCBpZiBuIDwgMC5cclxuICAgICAqXHJcbiAgICAgKiBrIHtudW1iZXJ9IEludGVnZXIsIC1NQVhfU0FGRV9JTlRFR0VSIHRvIE1BWF9TQUZFX0lOVEVHRVIgaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7a30nXHJcbiAgICAgKi9cclxuICAgIFAuc2hpZnRlZEJ5ID0gZnVuY3Rpb24gKGspIHtcclxuICAgICAgaW50Q2hlY2soaywgLU1BWF9TQUZFX0lOVEVHRVIsIE1BWF9TQUZFX0lOVEVHRVIpO1xyXG4gICAgICByZXR1cm4gdGhpcy50aW1lcygnMWUnICsgayk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIHNxcnQoLW4pID0gIE5cclxuICAgICAqICBzcXJ0KE4pID0gIE5cclxuICAgICAqICBzcXJ0KC1JKSA9ICBOXHJcbiAgICAgKiAgc3FydChJKSA9ICBJXHJcbiAgICAgKiAgc3FydCgwKSA9ICAwXHJcbiAgICAgKiAgc3FydCgtMCkgPSAtMFxyXG4gICAgICpcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHNxdWFyZSByb290IG9mIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlcixcclxuICAgICAqIHJvdW5kZWQgYWNjb3JkaW5nIHRvIERFQ0lNQUxfUExBQ0VTIGFuZCBST1VORElOR19NT0RFLlxyXG4gICAgICovXHJcbiAgICBQLnNxdWFyZVJvb3QgPSBQLnNxcnQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBtLCBuLCByLCByZXAsIHQsXHJcbiAgICAgICAgeCA9IHRoaXMsXHJcbiAgICAgICAgYyA9IHguYyxcclxuICAgICAgICBzID0geC5zLFxyXG4gICAgICAgIGUgPSB4LmUsXHJcbiAgICAgICAgZHAgPSBERUNJTUFMX1BMQUNFUyArIDQsXHJcbiAgICAgICAgaGFsZiA9IG5ldyBCaWdOdW1iZXIoJzAuNScpO1xyXG5cclxuICAgICAgLy8gTmVnYXRpdmUvTmFOL0luZmluaXR5L3plcm8/XHJcbiAgICAgIGlmIChzICE9PSAxIHx8ICFjIHx8ICFjWzBdKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdOdW1iZXIoIXMgfHwgcyA8IDAgJiYgKCFjIHx8IGNbMF0pID8gTmFOIDogYyA/IHggOiAxIC8gMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEluaXRpYWwgZXN0aW1hdGUuXHJcbiAgICAgIHMgPSBNYXRoLnNxcnQoK3ZhbHVlT2YoeCkpO1xyXG5cclxuICAgICAgLy8gTWF0aC5zcXJ0IHVuZGVyZmxvdy9vdmVyZmxvdz9cclxuICAgICAgLy8gUGFzcyB4IHRvIE1hdGguc3FydCBhcyBpbnRlZ2VyLCB0aGVuIGFkanVzdCB0aGUgZXhwb25lbnQgb2YgdGhlIHJlc3VsdC5cclxuICAgICAgaWYgKHMgPT0gMCB8fCBzID09IDEgLyAwKSB7XHJcbiAgICAgICAgbiA9IGNvZWZmVG9TdHJpbmcoYyk7XHJcbiAgICAgICAgaWYgKChuLmxlbmd0aCArIGUpICUgMiA9PSAwKSBuICs9ICcwJztcclxuICAgICAgICBzID0gTWF0aC5zcXJ0KCtuKTtcclxuICAgICAgICBlID0gYml0Rmxvb3IoKGUgKyAxKSAvIDIpIC0gKGUgPCAwIHx8IGUgJSAyKTtcclxuXHJcbiAgICAgICAgaWYgKHMgPT0gMSAvIDApIHtcclxuICAgICAgICAgIG4gPSAnNWUnICsgZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbiA9IHMudG9FeHBvbmVudGlhbCgpO1xyXG4gICAgICAgICAgbiA9IG4uc2xpY2UoMCwgbi5pbmRleE9mKCdlJykgKyAxKSArIGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByID0gbmV3IEJpZ051bWJlcihuKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByID0gbmV3IEJpZ051bWJlcihzICsgJycpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDaGVjayBmb3IgemVyby5cclxuICAgICAgLy8gciBjb3VsZCBiZSB6ZXJvIGlmIE1JTl9FWFAgaXMgY2hhbmdlZCBhZnRlciB0aGUgdGhpcyB2YWx1ZSB3YXMgY3JlYXRlZC5cclxuICAgICAgLy8gVGhpcyB3b3VsZCBjYXVzZSBhIGRpdmlzaW9uIGJ5IHplcm8gKHgvdCkgYW5kIGhlbmNlIEluZmluaXR5IGJlbG93LCB3aGljaCB3b3VsZCBjYXVzZVxyXG4gICAgICAvLyBjb2VmZlRvU3RyaW5nIHRvIHRocm93LlxyXG4gICAgICBpZiAoci5jWzBdKSB7XHJcbiAgICAgICAgZSA9IHIuZTtcclxuICAgICAgICBzID0gZSArIGRwO1xyXG4gICAgICAgIGlmIChzIDwgMykgcyA9IDA7XHJcblxyXG4gICAgICAgIC8vIE5ld3Rvbi1SYXBoc29uIGl0ZXJhdGlvbi5cclxuICAgICAgICBmb3IgKDsgOykge1xyXG4gICAgICAgICAgdCA9IHI7XHJcbiAgICAgICAgICByID0gaGFsZi50aW1lcyh0LnBsdXMoZGl2KHgsIHQsIGRwLCAxKSkpO1xyXG5cclxuICAgICAgICAgIGlmIChjb2VmZlRvU3RyaW5nKHQuYykuc2xpY2UoMCwgcykgPT09IChuID0gY29lZmZUb1N0cmluZyhyLmMpKS5zbGljZSgwLCBzKSkge1xyXG5cclxuICAgICAgICAgICAgLy8gVGhlIGV4cG9uZW50IG9mIHIgbWF5IGhlcmUgYmUgb25lIGxlc3MgdGhhbiB0aGUgZmluYWwgcmVzdWx0IGV4cG9uZW50LFxyXG4gICAgICAgICAgICAvLyBlLmcgMC4wMDA5OTk5IChlLTQpIC0tPiAwLjAwMSAoZS0zKSwgc28gYWRqdXN0IHMgc28gdGhlIHJvdW5kaW5nIGRpZ2l0c1xyXG4gICAgICAgICAgICAvLyBhcmUgaW5kZXhlZCBjb3JyZWN0bHkuXHJcbiAgICAgICAgICAgIGlmIChyLmUgPCBlKSAtLXM7XHJcbiAgICAgICAgICAgIG4gPSBuLnNsaWNlKHMgLSAzLCBzICsgMSk7XHJcblxyXG4gICAgICAgICAgICAvLyBUaGUgNHRoIHJvdW5kaW5nIGRpZ2l0IG1heSBiZSBpbiBlcnJvciBieSAtMSBzbyBpZiB0aGUgNCByb3VuZGluZyBkaWdpdHNcclxuICAgICAgICAgICAgLy8gYXJlIDk5OTkgb3IgNDk5OSAoaS5lLiBhcHByb2FjaGluZyBhIHJvdW5kaW5nIGJvdW5kYXJ5KSBjb250aW51ZSB0aGVcclxuICAgICAgICAgICAgLy8gaXRlcmF0aW9uLlxyXG4gICAgICAgICAgICBpZiAobiA9PSAnOTk5OScgfHwgIXJlcCAmJiBuID09ICc0OTk5Jykge1xyXG5cclxuICAgICAgICAgICAgICAvLyBPbiB0aGUgZmlyc3QgaXRlcmF0aW9uIG9ubHksIGNoZWNrIHRvIHNlZSBpZiByb3VuZGluZyB1cCBnaXZlcyB0aGVcclxuICAgICAgICAgICAgICAvLyBleGFjdCByZXN1bHQgYXMgdGhlIG5pbmVzIG1heSBpbmZpbml0ZWx5IHJlcGVhdC5cclxuICAgICAgICAgICAgICBpZiAoIXJlcCkge1xyXG4gICAgICAgICAgICAgICAgcm91bmQodCwgdC5lICsgREVDSU1BTF9QTEFDRVMgKyAyLCAwKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodC50aW1lcyh0KS5lcSh4KSkge1xyXG4gICAgICAgICAgICAgICAgICByID0gdDtcclxuICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBkcCArPSA0O1xyXG4gICAgICAgICAgICAgIHMgKz0gNDtcclxuICAgICAgICAgICAgICByZXAgPSAxO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAvLyBJZiByb3VuZGluZyBkaWdpdHMgYXJlIG51bGwsIDB7MCw0fSBvciA1MHswLDN9LCBjaGVjayBmb3IgZXhhY3RcclxuICAgICAgICAgICAgICAvLyByZXN1bHQuIElmIG5vdCwgdGhlbiB0aGVyZSBhcmUgZnVydGhlciBkaWdpdHMgYW5kIG0gd2lsbCBiZSB0cnV0aHkuXHJcbiAgICAgICAgICAgICAgaWYgKCErbiB8fCAhK24uc2xpY2UoMSkgJiYgbi5jaGFyQXQoMCkgPT0gJzUnKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gVHJ1bmNhdGUgdG8gdGhlIGZpcnN0IHJvdW5kaW5nIGRpZ2l0LlxyXG4gICAgICAgICAgICAgICAgcm91bmQociwgci5lICsgREVDSU1BTF9QTEFDRVMgKyAyLCAxKTtcclxuICAgICAgICAgICAgICAgIG0gPSAhci50aW1lcyhyKS5lcSh4KTtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gcm91bmQociwgci5lICsgREVDSU1BTF9QTEFDRVMgKyAxLCBST1VORElOR19NT0RFLCBtKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpbiBleHBvbmVudGlhbCBub3RhdGlvbiBhbmRcclxuICAgICAqIHJvdW5kZWQgdXNpbmcgUk9VTkRJTkdfTU9ERSB0byBkcCBmaXhlZCBkZWNpbWFsIHBsYWNlcy5cclxuICAgICAqXHJcbiAgICAgKiBbZHBdIHtudW1iZXJ9IERlY2ltYWwgcGxhY2VzLiBJbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEFyZ3VtZW50IHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtkcHxybX0nXHJcbiAgICAgKi9cclxuICAgIFAudG9FeHBvbmVudGlhbCA9IGZ1bmN0aW9uIChkcCwgcm0pIHtcclxuICAgICAgaWYgKGRwICE9IG51bGwpIHtcclxuICAgICAgICBpbnRDaGVjayhkcCwgMCwgTUFYKTtcclxuICAgICAgICBkcCsrO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmb3JtYXQodGhpcywgZHAsIHJtLCAxKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpbiBmaXhlZC1wb2ludCBub3RhdGlvbiByb3VuZGluZ1xyXG4gICAgICogdG8gZHAgZml4ZWQgZGVjaW1hbCBwbGFjZXMgdXNpbmcgcm91bmRpbmcgbW9kZSBybSwgb3IgUk9VTkRJTkdfTU9ERSBpZiBybSBpcyBvbWl0dGVkLlxyXG4gICAgICpcclxuICAgICAqIE5vdGU6IGFzIHdpdGggSmF2YVNjcmlwdCdzIG51bWJlciB0eXBlLCAoLTApLnRvRml4ZWQoMCkgaXMgJzAnLFxyXG4gICAgICogYnV0IGUuZy4gKC0wLjAwMDAxKS50b0ZpeGVkKDApIGlzICctMCcuXHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB8cm19J1xyXG4gICAgICovXHJcbiAgICBQLnRvRml4ZWQgPSBmdW5jdGlvbiAoZHAsIHJtKSB7XHJcbiAgICAgIGlmIChkcCAhPSBudWxsKSB7XHJcbiAgICAgICAgaW50Q2hlY2soZHAsIDAsIE1BWCk7XHJcbiAgICAgICAgZHAgPSBkcCArIHRoaXMuZSArIDE7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGZvcm1hdCh0aGlzLCBkcCwgcm0pO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGluIGZpeGVkLXBvaW50IG5vdGF0aW9uIHJvdW5kZWRcclxuICAgICAqIHVzaW5nIHJtIG9yIFJPVU5ESU5HX01PREUgdG8gZHAgZGVjaW1hbCBwbGFjZXMsIGFuZCBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIHRoZSBwcm9wZXJ0aWVzXHJcbiAgICAgKiBvZiB0aGUgZm9ybWF0IG9yIEZPUk1BVCBvYmplY3QgKHNlZSBCaWdOdW1iZXIuc2V0KS5cclxuICAgICAqXHJcbiAgICAgKiBUaGUgZm9ybWF0dGluZyBvYmplY3QgbWF5IGNvbnRhaW4gc29tZSBvciBhbGwgb2YgdGhlIHByb3BlcnRpZXMgc2hvd24gYmVsb3cuXHJcbiAgICAgKlxyXG4gICAgICogRk9STUFUID0ge1xyXG4gICAgICogICBwcmVmaXg6ICcnLFxyXG4gICAgICogICBncm91cFNpemU6IDMsXHJcbiAgICAgKiAgIHNlY29uZGFyeUdyb3VwU2l6ZTogMCxcclxuICAgICAqICAgZ3JvdXBTZXBhcmF0b3I6ICcsJyxcclxuICAgICAqICAgZGVjaW1hbFNlcGFyYXRvcjogJy4nLFxyXG4gICAgICogICBmcmFjdGlvbkdyb3VwU2l6ZTogMCxcclxuICAgICAqICAgZnJhY3Rpb25Hcm91cFNlcGFyYXRvcjogJ1xceEEwJywgICAgICAvLyBub24tYnJlYWtpbmcgc3BhY2VcclxuICAgICAqICAgc3VmZml4OiAnJ1xyXG4gICAgICogfTtcclxuICAgICAqXHJcbiAgICAgKiBbZHBdIHtudW1iZXJ9IERlY2ltYWwgcGxhY2VzLiBJbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICAgKiBbZm9ybWF0XSB7b2JqZWN0fSBGb3JtYXR0aW5nIG9wdGlvbnMuIFNlZSBGT1JNQVQgcGJqZWN0IGFib3ZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB8cm19J1xyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEFyZ3VtZW50IG5vdCBhbiBvYmplY3Q6IHtmb3JtYXR9J1xyXG4gICAgICovXHJcbiAgICBQLnRvRm9ybWF0ID0gZnVuY3Rpb24gKGRwLCBybSwgZm9ybWF0KSB7XHJcbiAgICAgIHZhciBzdHIsXHJcbiAgICAgICAgeCA9IHRoaXM7XHJcblxyXG4gICAgICBpZiAoZm9ybWF0ID09IG51bGwpIHtcclxuICAgICAgICBpZiAoZHAgIT0gbnVsbCAmJiBybSAmJiB0eXBlb2Ygcm0gPT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIGZvcm1hdCA9IHJtO1xyXG4gICAgICAgICAgcm0gPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZHAgJiYgdHlwZW9mIGRwID09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBmb3JtYXQgPSBkcDtcclxuICAgICAgICAgIGRwID0gcm0gPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmb3JtYXQgPSBGT1JNQVQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmb3JtYXQgIT0gJ29iamVjdCcpIHtcclxuICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ0FyZ3VtZW50IG5vdCBhbiBvYmplY3Q6ICcgKyBmb3JtYXQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBzdHIgPSB4LnRvRml4ZWQoZHAsIHJtKTtcclxuXHJcbiAgICAgIGlmICh4LmMpIHtcclxuICAgICAgICB2YXIgaSxcclxuICAgICAgICAgIGFyciA9IHN0ci5zcGxpdCgnLicpLFxyXG4gICAgICAgICAgZzEgPSArZm9ybWF0Lmdyb3VwU2l6ZSxcclxuICAgICAgICAgIGcyID0gK2Zvcm1hdC5zZWNvbmRhcnlHcm91cFNpemUsXHJcbiAgICAgICAgICBncm91cFNlcGFyYXRvciA9IGZvcm1hdC5ncm91cFNlcGFyYXRvciB8fCAnJyxcclxuICAgICAgICAgIGludFBhcnQgPSBhcnJbMF0sXHJcbiAgICAgICAgICBmcmFjdGlvblBhcnQgPSBhcnJbMV0sXHJcbiAgICAgICAgICBpc05lZyA9IHgucyA8IDAsXHJcbiAgICAgICAgICBpbnREaWdpdHMgPSBpc05lZyA/IGludFBhcnQuc2xpY2UoMSkgOiBpbnRQYXJ0LFxyXG4gICAgICAgICAgbGVuID0gaW50RGlnaXRzLmxlbmd0aDtcclxuXHJcbiAgICAgICAgaWYgKGcyKSBpID0gZzEsIGcxID0gZzIsIGcyID0gaSwgbGVuIC09IGk7XHJcblxyXG4gICAgICAgIGlmIChnMSA+IDAgJiYgbGVuID4gMCkge1xyXG4gICAgICAgICAgaSA9IGxlbiAlIGcxIHx8IGcxO1xyXG4gICAgICAgICAgaW50UGFydCA9IGludERpZ2l0cy5zdWJzdHIoMCwgaSk7XHJcbiAgICAgICAgICBmb3IgKDsgaSA8IGxlbjsgaSArPSBnMSkgaW50UGFydCArPSBncm91cFNlcGFyYXRvciArIGludERpZ2l0cy5zdWJzdHIoaSwgZzEpO1xyXG4gICAgICAgICAgaWYgKGcyID4gMCkgaW50UGFydCArPSBncm91cFNlcGFyYXRvciArIGludERpZ2l0cy5zbGljZShpKTtcclxuICAgICAgICAgIGlmIChpc05lZykgaW50UGFydCA9ICctJyArIGludFBhcnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdHIgPSBmcmFjdGlvblBhcnRcclxuICAgICAgICAgPyBpbnRQYXJ0ICsgKGZvcm1hdC5kZWNpbWFsU2VwYXJhdG9yIHx8ICcnKSArICgoZzIgPSArZm9ybWF0LmZyYWN0aW9uR3JvdXBTaXplKVxyXG4gICAgICAgICAgPyBmcmFjdGlvblBhcnQucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxcZHsnICsgZzIgKyAnfVxcXFxCJywgJ2cnKSxcclxuICAgICAgICAgICAnJCYnICsgKGZvcm1hdC5mcmFjdGlvbkdyb3VwU2VwYXJhdG9yIHx8ICcnKSlcclxuICAgICAgICAgIDogZnJhY3Rpb25QYXJ0KVxyXG4gICAgICAgICA6IGludFBhcnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiAoZm9ybWF0LnByZWZpeCB8fCAnJykgKyBzdHIgKyAoZm9ybWF0LnN1ZmZpeCB8fCAnJyk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGFuIGFycmF5IG9mIHR3byBCaWdOdW1iZXJzIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgYXMgYSBzaW1wbGVcclxuICAgICAqIGZyYWN0aW9uIHdpdGggYW4gaW50ZWdlciBudW1lcmF0b3IgYW5kIGFuIGludGVnZXIgZGVub21pbmF0b3IuXHJcbiAgICAgKiBUaGUgZGVub21pbmF0b3Igd2lsbCBiZSBhIHBvc2l0aXZlIG5vbi16ZXJvIHZhbHVlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgc3BlY2lmaWVkXHJcbiAgICAgKiBtYXhpbXVtIGRlbm9taW5hdG9yLiBJZiBhIG1heGltdW0gZGVub21pbmF0b3IgaXMgbm90IHNwZWNpZmllZCwgdGhlIGRlbm9taW5hdG9yIHdpbGwgYmVcclxuICAgICAqIHRoZSBsb3dlc3QgdmFsdWUgbmVjZXNzYXJ5IHRvIHJlcHJlc2VudCB0aGUgbnVtYmVyIGV4YWN0bHkuXHJcbiAgICAgKlxyXG4gICAgICogW21kXSB7bnVtYmVyfHN0cmluZ3xCaWdOdW1iZXJ9IEludGVnZXIgPj0gMSwgb3IgSW5maW5pdHkuIFRoZSBtYXhpbXVtIGRlbm9taW5hdG9yLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfSA6IHttZH0nXHJcbiAgICAgKi9cclxuICAgIFAudG9GcmFjdGlvbiA9IGZ1bmN0aW9uIChtZCkge1xyXG4gICAgICB2YXIgZCwgZDAsIGQxLCBkMiwgZSwgZXhwLCBuLCBuMCwgbjEsIHEsIHIsIHMsXHJcbiAgICAgICAgeCA9IHRoaXMsXHJcbiAgICAgICAgeGMgPSB4LmM7XHJcblxyXG4gICAgICBpZiAobWQgIT0gbnVsbCkge1xyXG4gICAgICAgIG4gPSBuZXcgQmlnTnVtYmVyKG1kKTtcclxuXHJcbiAgICAgICAgLy8gVGhyb3cgaWYgbWQgaXMgbGVzcyB0aGFuIG9uZSBvciBpcyBub3QgYW4gaW50ZWdlciwgdW5sZXNzIGl0IGlzIEluZmluaXR5LlxyXG4gICAgICAgIGlmICghbi5pc0ludGVnZXIoKSAmJiAobi5jIHx8IG4ucyAhPT0gMSkgfHwgbi5sdChPTkUpKSB7XHJcbiAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnQXJndW1lbnQgJyArXHJcbiAgICAgICAgICAgICAgKG4uaXNJbnRlZ2VyKCkgPyAnb3V0IG9mIHJhbmdlOiAnIDogJ25vdCBhbiBpbnRlZ2VyOiAnKSArIHZhbHVlT2YobikpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKCF4YykgcmV0dXJuIG5ldyBCaWdOdW1iZXIoeCk7XHJcblxyXG4gICAgICBkID0gbmV3IEJpZ051bWJlcihPTkUpO1xyXG4gICAgICBuMSA9IGQwID0gbmV3IEJpZ051bWJlcihPTkUpO1xyXG4gICAgICBkMSA9IG4wID0gbmV3IEJpZ051bWJlcihPTkUpO1xyXG4gICAgICBzID0gY29lZmZUb1N0cmluZyh4Yyk7XHJcblxyXG4gICAgICAvLyBEZXRlcm1pbmUgaW5pdGlhbCBkZW5vbWluYXRvci5cclxuICAgICAgLy8gZCBpcyBhIHBvd2VyIG9mIDEwIGFuZCB0aGUgbWluaW11bSBtYXggZGVub21pbmF0b3IgdGhhdCBzcGVjaWZpZXMgdGhlIHZhbHVlIGV4YWN0bHkuXHJcbiAgICAgIGUgPSBkLmUgPSBzLmxlbmd0aCAtIHguZSAtIDE7XHJcbiAgICAgIGQuY1swXSA9IFBPV1NfVEVOWyhleHAgPSBlICUgTE9HX0JBU0UpIDwgMCA/IExPR19CQVNFICsgZXhwIDogZXhwXTtcclxuICAgICAgbWQgPSAhbWQgfHwgbi5jb21wYXJlZFRvKGQpID4gMCA/IChlID4gMCA/IGQgOiBuMSkgOiBuO1xyXG5cclxuICAgICAgZXhwID0gTUFYX0VYUDtcclxuICAgICAgTUFYX0VYUCA9IDEgLyAwO1xyXG4gICAgICBuID0gbmV3IEJpZ051bWJlcihzKTtcclxuXHJcbiAgICAgIC8vIG4wID0gZDEgPSAwXHJcbiAgICAgIG4wLmNbMF0gPSAwO1xyXG5cclxuICAgICAgZm9yICg7IDspICB7XHJcbiAgICAgICAgcSA9IGRpdihuLCBkLCAwLCAxKTtcclxuICAgICAgICBkMiA9IGQwLnBsdXMocS50aW1lcyhkMSkpO1xyXG4gICAgICAgIGlmIChkMi5jb21wYXJlZFRvKG1kKSA9PSAxKSBicmVhaztcclxuICAgICAgICBkMCA9IGQxO1xyXG4gICAgICAgIGQxID0gZDI7XHJcbiAgICAgICAgbjEgPSBuMC5wbHVzKHEudGltZXMoZDIgPSBuMSkpO1xyXG4gICAgICAgIG4wID0gZDI7XHJcbiAgICAgICAgZCA9IG4ubWludXMocS50aW1lcyhkMiA9IGQpKTtcclxuICAgICAgICBuID0gZDI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGQyID0gZGl2KG1kLm1pbnVzKGQwKSwgZDEsIDAsIDEpO1xyXG4gICAgICBuMCA9IG4wLnBsdXMoZDIudGltZXMobjEpKTtcclxuICAgICAgZDAgPSBkMC5wbHVzKGQyLnRpbWVzKGQxKSk7XHJcbiAgICAgIG4wLnMgPSBuMS5zID0geC5zO1xyXG4gICAgICBlID0gZSAqIDI7XHJcblxyXG4gICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggZnJhY3Rpb24gaXMgY2xvc2VyIHRvIHgsIG4wL2QwIG9yIG4xL2QxXHJcbiAgICAgIHIgPSBkaXYobjEsIGQxLCBlLCBST1VORElOR19NT0RFKS5taW51cyh4KS5hYnMoKS5jb21wYXJlZFRvKFxyXG4gICAgICAgICAgZGl2KG4wLCBkMCwgZSwgUk9VTkRJTkdfTU9ERSkubWludXMoeCkuYWJzKCkpIDwgMSA/IFtuMSwgZDFdIDogW24wLCBkMF07XHJcblxyXG4gICAgICBNQVhfRVhQID0gZXhwO1xyXG5cclxuICAgICAgcmV0dXJuIHI7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBjb252ZXJ0ZWQgdG8gYSBudW1iZXIgcHJpbWl0aXZlLlxyXG4gICAgICovXHJcbiAgICBQLnRvTnVtYmVyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gK3ZhbHVlT2YodGhpcyk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgcm91bmRlZCB0byBzZCBzaWduaWZpY2FudCBkaWdpdHNcclxuICAgICAqIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0gb3IgUk9VTkRJTkdfTU9ERS4gSWYgc2QgaXMgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgZGlnaXRzXHJcbiAgICAgKiBuZWNlc3NhcnkgdG8gcmVwcmVzZW50IHRoZSBpbnRlZ2VyIHBhcnQgb2YgdGhlIHZhbHVlIGluIGZpeGVkLXBvaW50IG5vdGF0aW9uLCB0aGVuIHVzZVxyXG4gICAgICogZXhwb25lbnRpYWwgbm90YXRpb24uXHJcbiAgICAgKlxyXG4gICAgICogW3NkXSB7bnVtYmVyfSBTaWduaWZpY2FudCBkaWdpdHMuIEludGVnZXIsIDEgdG8gTUFYIGluY2x1c2l2ZS5cclxuICAgICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3NkfHJtfSdcclxuICAgICAqL1xyXG4gICAgUC50b1ByZWNpc2lvbiA9IGZ1bmN0aW9uIChzZCwgcm0pIHtcclxuICAgICAgaWYgKHNkICE9IG51bGwpIGludENoZWNrKHNkLCAxLCBNQVgpO1xyXG4gICAgICByZXR1cm4gZm9ybWF0KHRoaXMsIHNkLCBybSwgMik7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaW4gYmFzZSBiLCBvciBiYXNlIDEwIGlmIGIgaXNcclxuICAgICAqIG9taXR0ZWQuIElmIGEgYmFzZSBpcyBzcGVjaWZpZWQsIGluY2x1ZGluZyBiYXNlIDEwLCByb3VuZCBhY2NvcmRpbmcgdG8gREVDSU1BTF9QTEFDRVMgYW5kXHJcbiAgICAgKiBST1VORElOR19NT0RFLiBJZiBhIGJhc2UgaXMgbm90IHNwZWNpZmllZCwgYW5kIHRoaXMgQmlnTnVtYmVyIGhhcyBhIHBvc2l0aXZlIGV4cG9uZW50XHJcbiAgICAgKiB0aGF0IGlzIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiBUT19FWFBfUE9TLCBvciBhIG5lZ2F0aXZlIGV4cG9uZW50IGVxdWFsIHRvIG9yIGxlc3MgdGhhblxyXG4gICAgICogVE9fRVhQX05FRywgcmV0dXJuIGV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICpcclxuICAgICAqIFtiXSB7bnVtYmVyfSBJbnRlZ2VyLCAyIHRvIEFMUEhBQkVULmxlbmd0aCBpbmNsdXNpdmUuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEJhc2Uge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2J9J1xyXG4gICAgICovXHJcbiAgICBQLnRvU3RyaW5nID0gZnVuY3Rpb24gKGIpIHtcclxuICAgICAgdmFyIHN0cixcclxuICAgICAgICBuID0gdGhpcyxcclxuICAgICAgICBzID0gbi5zLFxyXG4gICAgICAgIGUgPSBuLmU7XHJcblxyXG4gICAgICAvLyBJbmZpbml0eSBvciBOYU4/XHJcbiAgICAgIGlmIChlID09PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHMpIHtcclxuICAgICAgICAgIHN0ciA9ICdJbmZpbml0eSc7XHJcbiAgICAgICAgICBpZiAocyA8IDApIHN0ciA9ICctJyArIHN0cjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc3RyID0gJ05hTic7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChiID09IG51bGwpIHtcclxuICAgICAgICAgIHN0ciA9IGUgPD0gVE9fRVhQX05FRyB8fCBlID49IFRPX0VYUF9QT1NcclxuICAgICAgICAgICA/IHRvRXhwb25lbnRpYWwoY29lZmZUb1N0cmluZyhuLmMpLCBlKVxyXG4gICAgICAgICAgIDogdG9GaXhlZFBvaW50KGNvZWZmVG9TdHJpbmcobi5jKSwgZSwgJzAnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGIgPT09IDEwKSB7XHJcbiAgICAgICAgICBuID0gcm91bmQobmV3IEJpZ051bWJlcihuKSwgREVDSU1BTF9QTEFDRVMgKyBlICsgMSwgUk9VTkRJTkdfTU9ERSk7XHJcbiAgICAgICAgICBzdHIgPSB0b0ZpeGVkUG9pbnQoY29lZmZUb1N0cmluZyhuLmMpLCBuLmUsICcwJyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGludENoZWNrKGIsIDIsIEFMUEhBQkVULmxlbmd0aCwgJ0Jhc2UnKTtcclxuICAgICAgICAgIHN0ciA9IGNvbnZlcnRCYXNlKHRvRml4ZWRQb2ludChjb2VmZlRvU3RyaW5nKG4uYyksIGUsICcwJyksIDEwLCBiLCBzLCB0cnVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChzIDwgMCAmJiBuLmNbMF0pIHN0ciA9ICctJyArIHN0cjtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHN0cjtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYXMgdG9TdHJpbmcsIGJ1dCBkbyBub3QgYWNjZXB0IGEgYmFzZSBhcmd1bWVudCwgYW5kIGluY2x1ZGUgdGhlIG1pbnVzIHNpZ24gZm9yXHJcbiAgICAgKiBuZWdhdGl2ZSB6ZXJvLlxyXG4gICAgICovXHJcbiAgICBQLnZhbHVlT2YgPSBQLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIHZhbHVlT2YodGhpcyk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICBQLl9pc0JpZ051bWJlciA9IHRydWU7XHJcblxyXG4gICAgaWYgKGNvbmZpZ09iamVjdCAhPSBudWxsKSBCaWdOdW1iZXIuc2V0KGNvbmZpZ09iamVjdCk7XHJcblxyXG4gICAgcmV0dXJuIEJpZ051bWJlcjtcclxuICB9XHJcblxyXG5cclxuICAvLyBQUklWQVRFIEhFTFBFUiBGVU5DVElPTlNcclxuXHJcbiAgLy8gVGhlc2UgZnVuY3Rpb25zIGRvbid0IG5lZWQgYWNjZXNzIHRvIHZhcmlhYmxlcyxcclxuICAvLyBlLmcuIERFQ0lNQUxfUExBQ0VTLCBpbiB0aGUgc2NvcGUgb2YgdGhlIGBjbG9uZWAgZnVuY3Rpb24gYWJvdmUuXHJcblxyXG5cclxuICBmdW5jdGlvbiBiaXRGbG9vcihuKSB7XHJcbiAgICB2YXIgaSA9IG4gfCAwO1xyXG4gICAgcmV0dXJuIG4gPiAwIHx8IG4gPT09IGkgPyBpIDogaSAtIDE7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gUmV0dXJuIGEgY29lZmZpY2llbnQgYXJyYXkgYXMgYSBzdHJpbmcgb2YgYmFzZSAxMCBkaWdpdHMuXHJcbiAgZnVuY3Rpb24gY29lZmZUb1N0cmluZyhhKSB7XHJcbiAgICB2YXIgcywgeixcclxuICAgICAgaSA9IDEsXHJcbiAgICAgIGogPSBhLmxlbmd0aCxcclxuICAgICAgciA9IGFbMF0gKyAnJztcclxuXHJcbiAgICBmb3IgKDsgaSA8IGo7KSB7XHJcbiAgICAgIHMgPSBhW2krK10gKyAnJztcclxuICAgICAgeiA9IExPR19CQVNFIC0gcy5sZW5ndGg7XHJcbiAgICAgIGZvciAoOyB6LS07IHMgPSAnMCcgKyBzKTtcclxuICAgICAgciArPSBzO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIERldGVybWluZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgIGZvciAoaiA9IHIubGVuZ3RoOyByLmNoYXJDb2RlQXQoLS1qKSA9PT0gNDg7KTtcclxuXHJcbiAgICByZXR1cm4gci5zbGljZSgwLCBqICsgMSB8fCAxKTtcclxuICB9XHJcblxyXG5cclxuICAvLyBDb21wYXJlIHRoZSB2YWx1ZSBvZiBCaWdOdW1iZXJzIHggYW5kIHkuXHJcbiAgZnVuY3Rpb24gY29tcGFyZSh4LCB5KSB7XHJcbiAgICB2YXIgYSwgYixcclxuICAgICAgeGMgPSB4LmMsXHJcbiAgICAgIHljID0geS5jLFxyXG4gICAgICBpID0geC5zLFxyXG4gICAgICBqID0geS5zLFxyXG4gICAgICBrID0geC5lLFxyXG4gICAgICBsID0geS5lO1xyXG5cclxuICAgIC8vIEVpdGhlciBOYU4/XHJcbiAgICBpZiAoIWkgfHwgIWopIHJldHVybiBudWxsO1xyXG5cclxuICAgIGEgPSB4YyAmJiAheGNbMF07XHJcbiAgICBiID0geWMgJiYgIXljWzBdO1xyXG5cclxuICAgIC8vIEVpdGhlciB6ZXJvP1xyXG4gICAgaWYgKGEgfHwgYikgcmV0dXJuIGEgPyBiID8gMCA6IC1qIDogaTtcclxuXHJcbiAgICAvLyBTaWducyBkaWZmZXI/XHJcbiAgICBpZiAoaSAhPSBqKSByZXR1cm4gaTtcclxuXHJcbiAgICBhID0gaSA8IDA7XHJcbiAgICBiID0gayA9PSBsO1xyXG5cclxuICAgIC8vIEVpdGhlciBJbmZpbml0eT9cclxuICAgIGlmICgheGMgfHwgIXljKSByZXR1cm4gYiA/IDAgOiAheGMgXiBhID8gMSA6IC0xO1xyXG5cclxuICAgIC8vIENvbXBhcmUgZXhwb25lbnRzLlxyXG4gICAgaWYgKCFiKSByZXR1cm4gayA+IGwgXiBhID8gMSA6IC0xO1xyXG5cclxuICAgIGogPSAoayA9IHhjLmxlbmd0aCkgPCAobCA9IHljLmxlbmd0aCkgPyBrIDogbDtcclxuXHJcbiAgICAvLyBDb21wYXJlIGRpZ2l0IGJ5IGRpZ2l0LlxyXG4gICAgZm9yIChpID0gMDsgaSA8IGo7IGkrKykgaWYgKHhjW2ldICE9IHljW2ldKSByZXR1cm4geGNbaV0gPiB5Y1tpXSBeIGEgPyAxIDogLTE7XHJcblxyXG4gICAgLy8gQ29tcGFyZSBsZW5ndGhzLlxyXG4gICAgcmV0dXJuIGsgPT0gbCA/IDAgOiBrID4gbCBeIGEgPyAxIDogLTE7XHJcbiAgfVxyXG5cclxuXHJcbiAgLypcclxuICAgKiBDaGVjayB0aGF0IG4gaXMgYSBwcmltaXRpdmUgbnVtYmVyLCBhbiBpbnRlZ2VyLCBhbmQgaW4gcmFuZ2UsIG90aGVyd2lzZSB0aHJvdy5cclxuICAgKi9cclxuICBmdW5jdGlvbiBpbnRDaGVjayhuLCBtaW4sIG1heCwgbmFtZSkge1xyXG4gICAgaWYgKG4gPCBtaW4gfHwgbiA+IG1heCB8fCBuICE9PSBtYXRoZmxvb3IobikpIHtcclxuICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgIChiaWdudW1iZXJFcnJvciArIChuYW1lIHx8ICdBcmd1bWVudCcpICsgKHR5cGVvZiBuID09ICdudW1iZXInXHJcbiAgICAgICAgID8gbiA8IG1pbiB8fCBuID4gbWF4ID8gJyBvdXQgb2YgcmFuZ2U6ICcgOiAnIG5vdCBhbiBpbnRlZ2VyOiAnXHJcbiAgICAgICAgIDogJyBub3QgYSBwcmltaXRpdmUgbnVtYmVyOiAnKSArIFN0cmluZyhuKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gQXNzdW1lcyBmaW5pdGUgbi5cclxuICBmdW5jdGlvbiBpc09kZChuKSB7XHJcbiAgICB2YXIgayA9IG4uYy5sZW5ndGggLSAxO1xyXG4gICAgcmV0dXJuIGJpdEZsb29yKG4uZSAvIExPR19CQVNFKSA9PSBrICYmIG4uY1trXSAlIDIgIT0gMDtcclxuICB9XHJcblxyXG5cclxuICBmdW5jdGlvbiB0b0V4cG9uZW50aWFsKHN0ciwgZSkge1xyXG4gICAgcmV0dXJuIChzdHIubGVuZ3RoID4gMSA/IHN0ci5jaGFyQXQoMCkgKyAnLicgKyBzdHIuc2xpY2UoMSkgOiBzdHIpICtcclxuICAgICAoZSA8IDAgPyAnZScgOiAnZSsnKSArIGU7XHJcbiAgfVxyXG5cclxuXHJcbiAgZnVuY3Rpb24gdG9GaXhlZFBvaW50KHN0ciwgZSwgeikge1xyXG4gICAgdmFyIGxlbiwgenM7XHJcblxyXG4gICAgLy8gTmVnYXRpdmUgZXhwb25lbnQ/XHJcbiAgICBpZiAoZSA8IDApIHtcclxuXHJcbiAgICAgIC8vIFByZXBlbmQgemVyb3MuXHJcbiAgICAgIGZvciAoenMgPSB6ICsgJy4nOyArK2U7IHpzICs9IHopO1xyXG4gICAgICBzdHIgPSB6cyArIHN0cjtcclxuXHJcbiAgICAvLyBQb3NpdGl2ZSBleHBvbmVudFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGVuID0gc3RyLmxlbmd0aDtcclxuXHJcbiAgICAgIC8vIEFwcGVuZCB6ZXJvcy5cclxuICAgICAgaWYgKCsrZSA+IGxlbikge1xyXG4gICAgICAgIGZvciAoenMgPSB6LCBlIC09IGxlbjsgLS1lOyB6cyArPSB6KTtcclxuICAgICAgICBzdHIgKz0genM7XHJcbiAgICAgIH0gZWxzZSBpZiAoZSA8IGxlbikge1xyXG4gICAgICAgIHN0ciA9IHN0ci5zbGljZSgwLCBlKSArICcuJyArIHN0ci5zbGljZShlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdHI7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gRVhQT1JUXHJcblxyXG5cclxuICBCaWdOdW1iZXIgPSBjbG9uZSgpO1xyXG4gIEJpZ051bWJlclsnZGVmYXVsdCddID0gQmlnTnVtYmVyLkJpZ051bWJlciA9IEJpZ051bWJlcjtcclxuXHJcbiAgLy8gQU1ELlxyXG4gIGlmICh0eXBlb2YgZGVmaW5lID09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xyXG4gICAgZGVmaW5lKGZ1bmN0aW9uICgpIHsgcmV0dXJuIEJpZ051bWJlcjsgfSk7XHJcblxyXG4gIC8vIE5vZGUuanMgYW5kIG90aGVyIGVudmlyb25tZW50cyB0aGF0IHN1cHBvcnQgbW9kdWxlLmV4cG9ydHMuXHJcbiAgfSBlbHNlIGlmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XHJcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJpZ051bWJlcjtcclxuXHJcbiAgLy8gQnJvd3Nlci5cclxuICB9IGVsc2Uge1xyXG4gICAgaWYgKCFnbG9iYWxPYmplY3QpIHtcclxuICAgICAgZ2xvYmFsT2JqZWN0ID0gdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZiA/IHNlbGYgOiB3aW5kb3c7XHJcbiAgICB9XHJcblxyXG4gICAgZ2xvYmFsT2JqZWN0LkJpZ051bWJlciA9IEJpZ051bWJlcjtcclxuICB9XHJcbn0pKHRoaXMpO1xyXG4iLCIoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gVXRpbHNcbiAgZnVuY3Rpb24gYXNzZXJ0ICh2YWwsIG1zZykge1xuICAgIGlmICghdmFsKSB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG4gIH1cblxuICAvLyBDb3VsZCB1c2UgYGluaGVyaXRzYCBtb2R1bGUsIGJ1dCBkb24ndCB3YW50IHRvIG1vdmUgZnJvbSBzaW5nbGUgZmlsZVxuICAvLyBhcmNoaXRlY3R1cmUgeWV0LlxuICBmdW5jdGlvbiBpbmhlcml0cyAoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3I7XG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge307XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZTtcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpO1xuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvcjtcbiAgfVxuXG4gIC8vIEJOXG5cbiAgZnVuY3Rpb24gQk4gKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKEJOLmlzQk4obnVtYmVyKSkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB0aGlzLndvcmRzID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICAvLyBSZWR1Y3Rpb24gY29udGV4dFxuICAgIHRoaXMucmVkID0gbnVsbDtcblxuICAgIGlmIChudW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGlmIChiYXNlID09PSAnbGUnIHx8IGJhc2UgPT09ICdiZScpIHtcbiAgICAgICAgZW5kaWFuID0gYmFzZTtcbiAgICAgICAgYmFzZSA9IDEwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbml0KG51bWJlciB8fCAwLCBiYXNlIHx8IDEwLCBlbmRpYW4gfHwgJ2JlJyk7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gQk47XG4gIH0gZWxzZSB7XG4gICAgZXhwb3J0cy5CTiA9IEJOO1xuICB9XG5cbiAgQk4uQk4gPSBCTjtcbiAgQk4ud29yZFNpemUgPSAyNjtcblxuICB2YXIgQnVmZmVyO1xuICB0cnkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIEJ1ZmZlciA9IHdpbmRvdy5CdWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPCBudW1iZXIubGVuZ3RoKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gMTYpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VIZXgobnVtYmVyLCBzdGFydCwgZW5kaWFuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3BhcnNlQmFzZShudW1iZXIsIGJhc2UsIHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXROdW1iZXIgPSBmdW5jdGlvbiBfaW5pdE51bWJlciAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICBudW1iZXIgPSAtbnVtYmVyO1xuICAgIH1cbiAgICBpZiAobnVtYmVyIDwgMHg0MDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW251bWJlciAmIDB4M2ZmZmZmZl07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPCAweDEwMDAwMDAwMDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobnVtYmVyIDwgMHgyMDAwMDAwMDAwMDAwMCk7IC8vIDIgXiA1MyAodW5zYWZlKVxuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZixcbiAgICAgICAgMVxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICAvLyBSZXZlcnNlIHRoZSBieXRlc1xuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXRBcnJheSA9IGZ1bmN0aW9uIF9pbml0QXJyYXkgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgLy8gUGVyaGFwcyBhIFVpbnQ4QXJyYXlcbiAgICBhc3NlcnQodHlwZW9mIG51bWJlci5sZW5ndGggPT09ICdudW1iZXInKTtcbiAgICBpZiAobnVtYmVyLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWzBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwobnVtYmVyLmxlbmd0aCAvIDMpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGosIHc7XG4gICAgdmFyIG9mZiA9IDA7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDEsIGogPSAwOyBpID49IDA7IGkgLT0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpIC0gMV0gPDwgOCkgfCAobnVtYmVyW2kgLSAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSArIDFdIDw8IDgpIHwgKG51bWJlcltpICsgMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4NEJpdHMgKHN0cmluZywgaW5kZXgpIHtcbiAgICB2YXIgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAvLyAnMCcgLSAnOSdcbiAgICBpZiAoYyA+PSA0OCAmJiBjIDw9IDU3KSB7XG4gICAgICByZXR1cm4gYyAtIDQ4O1xuICAgIC8vICdBJyAtICdGJ1xuICAgIH0gZWxzZSBpZiAoYyA+PSA2NSAmJiBjIDw9IDcwKSB7XG4gICAgICByZXR1cm4gYyAtIDU1O1xuICAgIC8vICdhJyAtICdmJ1xuICAgIH0gZWxzZSBpZiAoYyA+PSA5NyAmJiBjIDw9IDEwMikge1xuICAgICAgcmV0dXJuIGMgLSA4NztcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KGZhbHNlLCAnSW52YWxpZCBjaGFyYWN0ZXIgaW4gJyArIHN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXhCeXRlIChzdHJpbmcsIGxvd2VyQm91bmQsIGluZGV4KSB7XG4gICAgdmFyIHIgPSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXgpO1xuICAgIGlmIChpbmRleCAtIDEgPj0gbG93ZXJCb3VuZCkge1xuICAgICAgciB8PSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXggLSAxKSA8PCA0O1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VIZXggPSBmdW5jdGlvbiBfcGFyc2VIZXggKG51bWJlciwgc3RhcnQsIGVuZGlhbikge1xuICAgIC8vIENyZWF0ZSBwb3NzaWJseSBiaWdnZXIgYXJyYXkgdG8gZW5zdXJlIHRoYXQgaXQgZml0cyB0aGUgbnVtYmVyXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwoKG51bWJlci5sZW5ndGggLSBzdGFydCkgLyA2KTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIC8vIDI0LWJpdHMgY2h1bmtzXG4gICAgdmFyIG9mZiA9IDA7XG4gICAgdmFyIGogPSAwO1xuXG4gICAgdmFyIHc7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IGkgLT0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYXJzZUxlbmd0aCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICAgIGZvciAoaSA9IHBhcnNlTGVuZ3RoICUgMiA9PT0gMCA/IHN0YXJ0ICsgMSA6IHN0YXJ0OyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlQmFzZSAoc3RyLCBzdGFydCwgZW5kLCBtdWwpIHtcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIGIgPSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3KSB7XG4gICAgICAgIGIgPSBjIC0gMTcgKyAweGE7XG5cbiAgICAgIC8vICcwJyAtICc5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYiA9IGM7XG4gICAgICB9XG4gICAgICBhc3NlcnQoYyA+PSAwICYmIGIgPCBtdWwsICdJbnZhbGlkIGNoYXJhY3RlcicpO1xuICAgICAgciArPSBiO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VCYXNlID0gZnVuY3Rpb24gX3BhcnNlQmFzZSAobnVtYmVyLCBiYXNlLCBzdGFydCkge1xuICAgIC8vIEluaXRpYWxpemUgYXMgemVyb1xuICAgIHRoaXMud29yZHMgPSBbMF07XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuXG4gICAgLy8gRmluZCBsZW5ndGggb2YgbGltYiBpbiBiYXNlXG4gICAgZm9yICh2YXIgbGltYkxlbiA9IDAsIGxpbWJQb3cgPSAxOyBsaW1iUG93IDw9IDB4M2ZmZmZmZjsgbGltYlBvdyAqPSBiYXNlKSB7XG4gICAgICBsaW1iTGVuKys7XG4gICAgfVxuICAgIGxpbWJMZW4tLTtcbiAgICBsaW1iUG93ID0gKGxpbWJQb3cgLyBiYXNlKSB8IDA7XG5cbiAgICB2YXIgdG90YWwgPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgdmFyIG1vZCA9IHRvdGFsICUgbGltYkxlbjtcbiAgICB2YXIgZW5kID0gTWF0aC5taW4odG90YWwsIHRvdGFsIC0gbW9kKSArIHN0YXJ0O1xuXG4gICAgdmFyIHdvcmQgPSAwO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSBsaW1iTGVuKSB7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgaSArIGxpbWJMZW4sIGJhc2UpO1xuXG4gICAgICB0aGlzLmltdWxuKGxpbWJQb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2QgIT09IDApIHtcbiAgICAgIHZhciBwb3cgPSAxO1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIG51bWJlci5sZW5ndGgsIGJhc2UpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbW9kOyBpKyspIHtcbiAgICAgICAgcG93ICo9IGJhc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW11bG4ocG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBmdW5jdGlvbiBtb3ZlIChkZXN0LCBzcmMpIHtcbiAgICBkZXN0LndvcmRzID0gc3JjLndvcmRzO1xuICAgIGRlc3QubGVuZ3RoID0gc3JjLmxlbmd0aDtcbiAgICBkZXN0Lm5lZ2F0aXZlID0gc3JjLm5lZ2F0aXZlO1xuICAgIGRlc3QucmVkID0gc3JjLnJlZDtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fbW92ZSA9IGZ1bmN0aW9uIF9tb3ZlIChkZXN0KSB7XG4gICAgbW92ZShkZXN0LCB0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLl9zdHJpcCA9IGZ1bmN0aW9uIHN0cmlwICgpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPiAxICYmIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9ub3JtU2lnbiA9IGZ1bmN0aW9uIF9ub3JtU2lnbiAoKSB7XG4gICAgLy8gLTAgPSAwXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBDaGVjayBTeW1ib2wuZm9yIGJlY2F1c2Ugbm90IGV2ZXJ5d2hlcmUgd2hlcmUgU3ltYm9sIGRlZmluZWRcbiAgLy8gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N5bWJvbCNCcm93c2VyX2NvbXBhdGliaWxpdHlcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBTeW1ib2wuZm9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdHJ5IHtcbiAgICAgIEJOLnByb3RvdHlwZVtTeW1ib2wuZm9yKCdub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbScpXSA9IGluc3BlY3Q7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgQk4ucHJvdG90eXBlLmluc3BlY3QgPSBpbnNwZWN0O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBCTi5wcm90b3R5cGUuaW5zcGVjdCA9IGluc3BlY3Q7XG4gIH1cblxuICBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICByZXR1cm4gKHRoaXMucmVkID8gJzxCTi1SOiAnIDogJzxCTjogJykgKyB0aGlzLnRvU3RyaW5nKDE2KSArICc+JztcbiAgfVxuXG4gIC8qXG5cbiAgdmFyIHplcm9zID0gW107XG4gIHZhciBncm91cFNpemVzID0gW107XG4gIHZhciBncm91cEJhc2VzID0gW107XG5cbiAgdmFyIHMgPSAnJztcbiAgdmFyIGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IEJOLndvcmRTaXplKSB7XG4gICAgemVyb3NbaV0gPSBzO1xuICAgIHMgKz0gJzAnO1xuICB9XG4gIGdyb3VwU2l6ZXNbMF0gPSAwO1xuICBncm91cFNpemVzWzFdID0gMDtcbiAgZ3JvdXBCYXNlc1swXSA9IDA7XG4gIGdyb3VwQmFzZXNbMV0gPSAwO1xuICB2YXIgYmFzZSA9IDIgLSAxO1xuICB3aGlsZSAoKytiYXNlIDwgMzYgKyAxKSB7XG4gICAgdmFyIGdyb3VwU2l6ZSA9IDA7XG4gICAgdmFyIGdyb3VwQmFzZSA9IDE7XG4gICAgd2hpbGUgKGdyb3VwQmFzZSA8ICgxIDw8IEJOLndvcmRTaXplKSAvIGJhc2UpIHtcbiAgICAgIGdyb3VwQmFzZSAqPSBiYXNlO1xuICAgICAgZ3JvdXBTaXplICs9IDE7XG4gICAgfVxuICAgIGdyb3VwU2l6ZXNbYmFzZV0gPSBncm91cFNpemU7XG4gICAgZ3JvdXBCYXNlc1tiYXNlXSA9IGdyb3VwQmFzZTtcbiAgfVxuXG4gICovXG5cbiAgdmFyIHplcm9zID0gW1xuICAgICcnLFxuICAgICcwJyxcbiAgICAnMDAnLFxuICAgICcwMDAnLFxuICAgICcwMDAwJyxcbiAgICAnMDAwMDAnLFxuICAgICcwMDAwMDAnLFxuICAgICcwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJ1xuICBdO1xuXG4gIHZhciBncm91cFNpemVzID0gW1xuICAgIDAsIDAsXG4gICAgMjUsIDE2LCAxMiwgMTEsIDEwLCA5LCA4LFxuICAgIDgsIDcsIDcsIDcsIDcsIDYsIDYsXG4gICAgNiwgNiwgNiwgNiwgNiwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDVcbiAgXTtcblxuICB2YXIgZ3JvdXBCYXNlcyA9IFtcbiAgICAwLCAwLFxuICAgIDMzNTU0NDMyLCA0MzA0NjcyMSwgMTY3NzcyMTYsIDQ4ODI4MTI1LCA2MDQ2NjE3NiwgNDAzNTM2MDcsIDE2Nzc3MjE2LFxuICAgIDQzMDQ2NzIxLCAxMDAwMDAwMCwgMTk0ODcxNzEsIDM1ODMxODA4LCA2Mjc0ODUxNywgNzUyOTUzNiwgMTEzOTA2MjUsXG4gICAgMTY3NzcyMTYsIDI0MTM3NTY5LCAzNDAxMjIyNCwgNDcwNDU4ODEsIDY0MDAwMDAwLCA0MDg0MTAxLCA1MTUzNjMyLFxuICAgIDY0MzYzNDMsIDc5NjI2MjQsIDk3NjU2MjUsIDExODgxMzc2LCAxNDM0ODkwNywgMTcyMTAzNjgsIDIwNTExMTQ5LFxuICAgIDI0MzAwMDAwLCAyODYyOTE1MSwgMzM1NTQ0MzIsIDM5MTM1MzkzLCA0NTQzNTQyNCwgNTI1MjE4NzUsIDYwNDY2MTc2XG4gIF07XG5cbiAgQk4ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKGJhc2UsIHBhZGRpbmcpIHtcbiAgICBiYXNlID0gYmFzZSB8fCAxMDtcbiAgICBwYWRkaW5nID0gcGFkZGluZyB8IDAgfHwgMTtcblxuICAgIHZhciBvdXQ7XG4gICAgaWYgKGJhc2UgPT09IDE2IHx8IGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBvZmYgPSAwO1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV07XG4gICAgICAgIHZhciB3b3JkID0gKCgodyA8PCBvZmYpIHwgY2FycnkpICYgMHhmZmZmZmYpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgY2FycnkgPSAodyA+Pj4gKDI0IC0gb2ZmKSkgJiAweGZmZmZmZjtcbiAgICAgICAgaWYgKGNhcnJ5ICE9PSAwIHx8IGkgIT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIG91dCA9IHplcm9zWzYgLSB3b3JkLmxlbmd0aF0gKyB3b3JkICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHdvcmQgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgb2ZmICs9IDI7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgICAgb3V0ID0gY2FycnkudG9TdHJpbmcoMTYpICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpIHtcbiAgICAgIC8vIHZhciBncm91cFNpemUgPSBNYXRoLmZsb29yKEJOLndvcmRTaXplICogTWF0aC5MTjIgLyBNYXRoLmxvZyhiYXNlKSk7XG4gICAgICB2YXIgZ3JvdXBTaXplID0gZ3JvdXBTaXplc1tiYXNlXTtcbiAgICAgIC8vIHZhciBncm91cEJhc2UgPSBNYXRoLnBvdyhiYXNlLCBncm91cFNpemUpO1xuICAgICAgdmFyIGdyb3VwQmFzZSA9IGdyb3VwQmFzZXNbYmFzZV07XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBjID0gdGhpcy5jbG9uZSgpO1xuICAgICAgYy5uZWdhdGl2ZSA9IDA7XG4gICAgICB3aGlsZSAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgdmFyIHIgPSBjLm1vZHJuKGdyb3VwQmFzZSkudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIGMgPSBjLmlkaXZuKGdyb3VwQmFzZSk7XG5cbiAgICAgICAgaWYgKCFjLmlzWmVybygpKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbZ3JvdXBTaXplIC0gci5sZW5ndGhdICsgciArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSByICsgb3V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBhc3NlcnQoZmFsc2UsICdCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Jyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvTnVtYmVyID0gZnVuY3Rpb24gdG9OdW1iZXIgKCkge1xuICAgIHZhciByZXQgPSB0aGlzLndvcmRzWzBdO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0ICs9IHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA9PT0gMyAmJiB0aGlzLndvcmRzWzJdID09PSAweDAxKSB7XG4gICAgICAvLyBOT1RFOiBhdCB0aGlzIHN0YWdlIGl0IGlzIGtub3duIHRoYXQgdGhlIHRvcCBiaXQgaXMgc2V0XG4gICAgICByZXQgKz0gMHgxMDAwMDAwMDAwMDAwMCArICh0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gMikge1xuICAgICAgYXNzZXJ0KGZhbHNlLCAnTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzJyk7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgPyAtcmV0IDogcmV0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKDE2LCAyKTtcbiAgfTtcblxuICBpZiAoQnVmZmVyKSB7XG4gICAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgICB9O1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiB0b0FycmF5IChlbmRpYW4sIGxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgdmFyIGFsbG9jYXRlID0gZnVuY3Rpb24gYWxsb2NhdGUgKEFycmF5VHlwZSwgc2l6ZSkge1xuICAgIGlmIChBcnJheVR5cGUuYWxsb2NVbnNhZmUpIHtcbiAgICAgIHJldHVybiBBcnJheVR5cGUuYWxsb2NVbnNhZmUoc2l6ZSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQXJyYXlUeXBlKHNpemUpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5TGlrZSA9IGZ1bmN0aW9uIHRvQXJyYXlMaWtlIChBcnJheVR5cGUsIGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgdGhpcy5fc3RyaXAoKTtcblxuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHZhciByZXMgPSBhbGxvY2F0ZShBcnJheVR5cGUsIHJlcUxlbmd0aCk7XG4gICAgdmFyIHBvc3RmaXggPSBlbmRpYW4gPT09ICdsZScgPyAnTEUnIDogJ0JFJztcbiAgICB0aGlzWydfdG9BcnJheUxpa2UnICsgcG9zdGZpeF0ocmVzLCBieXRlTGVuZ3RoKTtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fdG9BcnJheUxpa2VMRSA9IGZ1bmN0aW9uIF90b0FycmF5TGlrZUxFIChyZXMsIGJ5dGVMZW5ndGgpIHtcbiAgICB2YXIgcG9zaXRpb24gPSAwO1xuICAgIHZhciBjYXJyeSA9IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMCwgc2hpZnQgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHdvcmQgPSAodGhpcy53b3Jkc1tpXSA8PCBzaGlmdCkgfCBjYXJyeTtcblxuICAgICAgcmVzW3Bvc2l0aW9uKytdID0gd29yZCAmIDB4ZmY7XG4gICAgICBpZiAocG9zaXRpb24gPCByZXMubGVuZ3RoKSB7XG4gICAgICAgIHJlc1twb3NpdGlvbisrXSA9ICh3b3JkID4+IDgpICYgMHhmZjtcbiAgICAgIH1cbiAgICAgIGlmIChwb3NpdGlvbiA8IHJlcy5sZW5ndGgpIHtcbiAgICAgICAgcmVzW3Bvc2l0aW9uKytdID0gKHdvcmQgPj4gMTYpICYgMHhmZjtcbiAgICAgIH1cblxuICAgICAgaWYgKHNoaWZ0ID09PSA2KSB7XG4gICAgICAgIGlmIChwb3NpdGlvbiA8IHJlcy5sZW5ndGgpIHtcbiAgICAgICAgICByZXNbcG9zaXRpb24rK10gPSAod29yZCA+PiAyNCkgJiAweGZmO1xuICAgICAgICB9XG4gICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgICAgc2hpZnQgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3b3JkID4+PiAyNDtcbiAgICAgICAgc2hpZnQgKz0gMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gPCByZXMubGVuZ3RoKSB7XG4gICAgICByZXNbcG9zaXRpb24rK10gPSBjYXJyeTtcblxuICAgICAgd2hpbGUgKHBvc2l0aW9uIDwgcmVzLmxlbmd0aCkge1xuICAgICAgICByZXNbcG9zaXRpb24rK10gPSAwO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX3RvQXJyYXlMaWtlQkUgPSBmdW5jdGlvbiBfdG9BcnJheUxpa2VCRSAocmVzLCBieXRlTGVuZ3RoKSB7XG4gICAgdmFyIHBvc2l0aW9uID0gcmVzLmxlbmd0aCAtIDE7XG4gICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgIGZvciAodmFyIGkgPSAwLCBzaGlmdCA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgd29yZCA9ICh0aGlzLndvcmRzW2ldIDw8IHNoaWZ0KSB8IGNhcnJ5O1xuXG4gICAgICByZXNbcG9zaXRpb24tLV0gPSB3b3JkICYgMHhmZjtcbiAgICAgIGlmIChwb3NpdGlvbiA+PSAwKSB7XG4gICAgICAgIHJlc1twb3NpdGlvbi0tXSA9ICh3b3JkID4+IDgpICYgMHhmZjtcbiAgICAgIH1cbiAgICAgIGlmIChwb3NpdGlvbiA+PSAwKSB7XG4gICAgICAgIHJlc1twb3NpdGlvbi0tXSA9ICh3b3JkID4+IDE2KSAmIDB4ZmY7XG4gICAgICB9XG5cbiAgICAgIGlmIChzaGlmdCA9PT0gNikge1xuICAgICAgICBpZiAocG9zaXRpb24gPj0gMCkge1xuICAgICAgICAgIHJlc1twb3NpdGlvbi0tXSA9ICh3b3JkID4+IDI0KSAmIDB4ZmY7XG4gICAgICAgIH1cbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgICBzaGlmdCA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJyeSA9IHdvcmQgPj4+IDI0O1xuICAgICAgICBzaGlmdCArPSAyO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbiA+PSAwKSB7XG4gICAgICByZXNbcG9zaXRpb24tLV0gPSBjYXJyeTtcblxuICAgICAgd2hpbGUgKHBvc2l0aW9uID49IDApIHtcbiAgICAgICAgcmVzW3Bvc2l0aW9uLS1dID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgaWYgKE1hdGguY2x6MzIpIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHJldHVybiAzMiAtIE1hdGguY2x6MzIodyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHZhciB0ID0gdztcbiAgICAgIHZhciByID0gMDtcbiAgICAgIGlmICh0ID49IDB4MTAwMCkge1xuICAgICAgICByICs9IDEzO1xuICAgICAgICB0ID4+Pj0gMTM7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDQwKSB7XG4gICAgICAgIHIgKz0gNztcbiAgICAgICAgdCA+Pj49IDc7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDgpIHtcbiAgICAgICAgciArPSA0O1xuICAgICAgICB0ID4+Pj0gNDtcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4MDIpIHtcbiAgICAgICAgciArPSAyO1xuICAgICAgICB0ID4+Pj0gMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByICsgdDtcbiAgICB9O1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl96ZXJvQml0cyA9IGZ1bmN0aW9uIF96ZXJvQml0cyAodykge1xuICAgIC8vIFNob3J0LWN1dFxuICAgIGlmICh3ID09PSAwKSByZXR1cm4gMjY7XG5cbiAgICB2YXIgdCA9IHc7XG4gICAgdmFyIHIgPSAwO1xuICAgIGlmICgodCAmIDB4MWZmZikgPT09IDApIHtcbiAgICAgIHIgKz0gMTM7XG4gICAgICB0ID4+Pj0gMTM7XG4gICAgfVxuICAgIGlmICgodCAmIDB4N2YpID09PSAwKSB7XG4gICAgICByICs9IDc7XG4gICAgICB0ID4+Pj0gNztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHhmKSA9PT0gMCkge1xuICAgICAgciArPSA0O1xuICAgICAgdCA+Pj49IDQ7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MykgPT09IDApIHtcbiAgICAgIHIgKz0gMjtcbiAgICAgIHQgPj4+PSAyO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDEpID09PSAwKSB7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIC8vIFJldHVybiBudW1iZXIgb2YgdXNlZCBiaXRzIGluIGEgQk5cbiAgQk4ucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uIGJpdExlbmd0aCAoKSB7XG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV07XG4gICAgdmFyIGhpID0gdGhpcy5fY291bnRCaXRzKHcpO1xuICAgIHJldHVybiAodGhpcy5sZW5ndGggLSAxKSAqIDI2ICsgaGk7XG4gIH07XG5cbiAgZnVuY3Rpb24gdG9CaXRBcnJheSAobnVtKSB7XG4gICAgdmFyIHcgPSBuZXcgQXJyYXkobnVtLmJpdExlbmd0aCgpKTtcblxuICAgIGZvciAodmFyIGJpdCA9IDA7IGJpdCA8IHcubGVuZ3RoOyBiaXQrKykge1xuICAgICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgICAgd1tiaXRdID0gKG51bS53b3Jkc1tvZmZdID4+PiB3Yml0KSAmIDB4MDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHc7XG4gIH1cblxuICAvLyBOdW1iZXIgb2YgdHJhaWxpbmcgemVybyBiaXRzXG4gIEJOLnByb3RvdHlwZS56ZXJvQml0cyA9IGZ1bmN0aW9uIHplcm9CaXRzICgpIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIDA7XG5cbiAgICB2YXIgciA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYiA9IHRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbaV0pO1xuICAgICAgciArPSBiO1xuICAgICAgaWYgKGIgIT09IDI2KSBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmJ5dGVMZW5ndGggPSBmdW5jdGlvbiBieXRlTGVuZ3RoICgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkgLyA4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9Ud29zID0gZnVuY3Rpb24gdG9Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5hYnMoKS5pbm90bih3aWR0aCkuaWFkZG4oMSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21Ud29zID0gZnVuY3Rpb24gZnJvbVR3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMudGVzdG4od2lkdGggLSAxKSkge1xuICAgICAgcmV0dXJuIHRoaXMubm90bih3aWR0aCkuaWFkZG4oMSkuaW5lZygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uIGlzTmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZSAhPT0gMDtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5lZygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbmVnID0gZnVuY3Rpb24gaW5lZyAoKSB7XG4gICAgaWYgKCF0aGlzLmlzWmVybygpKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1b3IgPSBmdW5jdGlvbiBpdW9yIChudW0pIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gfCBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlvciA9IGZ1bmN0aW9uIGlvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVvcihudW0pO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pb3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVvciA9IGZ1bmN0aW9uIHVvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdWFuZCA9IGZ1bmN0aW9uIGl1YW5kIChudW0pIHtcbiAgICAvLyBiID0gbWluLWxlbmd0aChudW0sIHRoaXMpXG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSAmIG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGIubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLml4b3IgPSBmdW5jdGlvbiBpeG9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXhvcihudW0pO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24geG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXhvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXhvciA9IGZ1bmN0aW9uIHV4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXV4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXV4b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gTm90IGBgdGhpc2BgIHdpdGggYGB3aWR0aGBgIGJpdHdpZHRoXG4gIEJOLnByb3RvdHlwZS5pbm90biA9IGZ1bmN0aW9uIGlub3RuICh3aWR0aCkge1xuICAgIGFzc2VydCh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInICYmIHdpZHRoID49IDApO1xuXG4gICAgdmFyIGJ5dGVzTmVlZGVkID0gTWF0aC5jZWlsKHdpZHRoIC8gMjYpIHwgMDtcbiAgICB2YXIgYml0c0xlZnQgPSB3aWR0aCAlIDI2O1xuXG4gICAgLy8gRXh0ZW5kIHRoZSBidWZmZXIgd2l0aCBsZWFkaW5nIHplcm9lc1xuICAgIHRoaXMuX2V4cGFuZChieXRlc05lZWRlZCk7XG5cbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICBieXRlc05lZWRlZC0tO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBjb21wbGV0ZSB3b3Jkc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXNOZWVkZWQ7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgcmVzaWR1ZVxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmICgweDNmZmZmZmYgPj4gKDI2IC0gYml0c0xlZnQpKTtcbiAgICB9XG5cbiAgICAvLyBBbmQgcmVtb3ZlIGxlYWRpbmcgemVyb2VzXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm5vdG4gPSBmdW5jdGlvbiBub3RuICh3aWR0aCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5vdG4od2lkdGgpO1xuICB9O1xuXG4gIC8vIFNldCBgYml0YCBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNldG4gPSBmdW5jdGlvbiBzZXRuIChiaXQsIHZhbCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG5cbiAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgIHRoaXMuX2V4cGFuZChvZmYgKyAxKTtcblxuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSB8ICgxIDw8IHdiaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gJiB+KDEgPDwgd2JpdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1YihudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHNtYWxsTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICB2YXIgbGVuID0gKHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aCkgfCAwO1xuICAgIG91dC5sZW5ndGggPSBsZW47XG4gICAgbGVuID0gKGxlbiAtIDEpIHwgMDtcblxuICAgIC8vIFBlZWwgb25lIGl0ZXJhdGlvbiAoY29tcGlsZXIgY2FuJ3QgZG8gaXQsIGJlY2F1c2Ugb2YgY29kZSBjb21wbGV4aXR5KVxuICAgIHZhciBhID0gc2VsZi53b3Jkc1swXSB8IDA7XG4gICAgdmFyIGIgPSBudW0ud29yZHNbMF0gfCAwO1xuICAgIHZhciByID0gYSAqIGI7XG5cbiAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgIHZhciBjYXJyeSA9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgb3V0LndvcmRzWzBdID0gbG87XG5cbiAgICBmb3IgKHZhciBrID0gMTsgayA8IGxlbjsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGNhcnJ5ID4+PiAyNjtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gKGsgLSBqKSB8IDA7XG4gICAgICAgIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHIgPSBhICogYiArIHJ3b3JkO1xuICAgICAgICBuY2FycnkgKz0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgICAgcndvcmQgPSByICYgMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQgfCAwO1xuICAgICAgY2FycnkgPSBuY2FycnkgfCAwO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5IHwgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuX3N0cmlwKCk7XG4gIH1cblxuICAvLyBUT0RPKGluZHV0bnkpOiBpdCBtYXkgYmUgcmVhc29uYWJsZSB0byBvbWl0IGl0IGZvciB1c2VycyB3aG8gZG9uJ3QgbmVlZFxuICAvLyB0byB3b3JrIHdpdGggMjU2LWJpdCBudW1iZXJzLCBvdGhlcndpc2UgaXQgZ2l2ZXMgMjAlIGltcHJvdmVtZW50IGZvciAyNTYtYml0XG4gIC8vIG11bHRpcGxpY2F0aW9uIChsaWtlIGVsbGlwdGljIHNlY3AyNTZrMSkuXG4gIHZhciBjb21iMTBNdWxUbyA9IGZ1bmN0aW9uIGNvbWIxME11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBhID0gc2VsZi53b3JkcztcbiAgICB2YXIgYiA9IG51bS53b3JkcztcbiAgICB2YXIgbyA9IG91dC53b3JkcztcbiAgICB2YXIgYyA9IDA7XG4gICAgdmFyIGxvO1xuICAgIHZhciBtaWQ7XG4gICAgdmFyIGhpO1xuICAgIHZhciBhMCA9IGFbMF0gfCAwO1xuICAgIHZhciBhbDAgPSBhMCAmIDB4MWZmZjtcbiAgICB2YXIgYWgwID0gYTAgPj4+IDEzO1xuICAgIHZhciBhMSA9IGFbMV0gfCAwO1xuICAgIHZhciBhbDEgPSBhMSAmIDB4MWZmZjtcbiAgICB2YXIgYWgxID0gYTEgPj4+IDEzO1xuICAgIHZhciBhMiA9IGFbMl0gfCAwO1xuICAgIHZhciBhbDIgPSBhMiAmIDB4MWZmZjtcbiAgICB2YXIgYWgyID0gYTIgPj4+IDEzO1xuICAgIHZhciBhMyA9IGFbM10gfCAwO1xuICAgIHZhciBhbDMgPSBhMyAmIDB4MWZmZjtcbiAgICB2YXIgYWgzID0gYTMgPj4+IDEzO1xuICAgIHZhciBhNCA9IGFbNF0gfCAwO1xuICAgIHZhciBhbDQgPSBhNCAmIDB4MWZmZjtcbiAgICB2YXIgYWg0ID0gYTQgPj4+IDEzO1xuICAgIHZhciBhNSA9IGFbNV0gfCAwO1xuICAgIHZhciBhbDUgPSBhNSAmIDB4MWZmZjtcbiAgICB2YXIgYWg1ID0gYTUgPj4+IDEzO1xuICAgIHZhciBhNiA9IGFbNl0gfCAwO1xuICAgIHZhciBhbDYgPSBhNiAmIDB4MWZmZjtcbiAgICB2YXIgYWg2ID0gYTYgPj4+IDEzO1xuICAgIHZhciBhNyA9IGFbN10gfCAwO1xuICAgIHZhciBhbDcgPSBhNyAmIDB4MWZmZjtcbiAgICB2YXIgYWg3ID0gYTcgPj4+IDEzO1xuICAgIHZhciBhOCA9IGFbOF0gfCAwO1xuICAgIHZhciBhbDggPSBhOCAmIDB4MWZmZjtcbiAgICB2YXIgYWg4ID0gYTggPj4+IDEzO1xuICAgIHZhciBhOSA9IGFbOV0gfCAwO1xuICAgIHZhciBhbDkgPSBhOSAmIDB4MWZmZjtcbiAgICB2YXIgYWg5ID0gYTkgPj4+IDEzO1xuICAgIHZhciBiMCA9IGJbMF0gfCAwO1xuICAgIHZhciBibDAgPSBiMCAmIDB4MWZmZjtcbiAgICB2YXIgYmgwID0gYjAgPj4+IDEzO1xuICAgIHZhciBiMSA9IGJbMV0gfCAwO1xuICAgIHZhciBibDEgPSBiMSAmIDB4MWZmZjtcbiAgICB2YXIgYmgxID0gYjEgPj4+IDEzO1xuICAgIHZhciBiMiA9IGJbMl0gfCAwO1xuICAgIHZhciBibDIgPSBiMiAmIDB4MWZmZjtcbiAgICB2YXIgYmgyID0gYjIgPj4+IDEzO1xuICAgIHZhciBiMyA9IGJbM10gfCAwO1xuICAgIHZhciBibDMgPSBiMyAmIDB4MWZmZjtcbiAgICB2YXIgYmgzID0gYjMgPj4+IDEzO1xuICAgIHZhciBiNCA9IGJbNF0gfCAwO1xuICAgIHZhciBibDQgPSBiNCAmIDB4MWZmZjtcbiAgICB2YXIgYmg0ID0gYjQgPj4+IDEzO1xuICAgIHZhciBiNSA9IGJbNV0gfCAwO1xuICAgIHZhciBibDUgPSBiNSAmIDB4MWZmZjtcbiAgICB2YXIgYmg1ID0gYjUgPj4+IDEzO1xuICAgIHZhciBiNiA9IGJbNl0gfCAwO1xuICAgIHZhciBibDYgPSBiNiAmIDB4MWZmZjtcbiAgICB2YXIgYmg2ID0gYjYgPj4+IDEzO1xuICAgIHZhciBiNyA9IGJbN10gfCAwO1xuICAgIHZhciBibDcgPSBiNyAmIDB4MWZmZjtcbiAgICB2YXIgYmg3ID0gYjcgPj4+IDEzO1xuICAgIHZhciBiOCA9IGJbOF0gfCAwO1xuICAgIHZhciBibDggPSBiOCAmIDB4MWZmZjtcbiAgICB2YXIgYmg4ID0gYjggPj4+IDEzO1xuICAgIHZhciBiOSA9IGJbOV0gfCAwO1xuICAgIHZhciBibDkgPSBiOSAmIDB4MWZmZjtcbiAgICB2YXIgYmg5ID0gYjkgPj4+IDEzO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0gc2VsZi5uZWdhdGl2ZSBeIG51bS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gMTk7XG4gICAgLyogayA9IDAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDAsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMCwgYmgwKTtcbiAgICB2YXIgdzAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcwID4+PiAyNikpIHwgMDtcbiAgICB3MCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDEsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDEpKSB8IDA7XG4gICAgdmFyIHcxID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MSA+Pj4gMjYpKSB8IDA7XG4gICAgdzEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwyLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDIsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDIsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMikpIHwgMDtcbiAgICB2YXIgdzIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcyID4+PiAyNikpIHwgMDtcbiAgICB3MiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDMsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMykpIHwgMDtcbiAgICB2YXIgdzMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHczID4+PiAyNikpIHwgMDtcbiAgICB3MyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDQsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDQpKSB8IDA7XG4gICAgdmFyIHc0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NCA+Pj4gMjYpKSB8IDA7XG4gICAgdzQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw1LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDUsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDUsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNSkpIHwgMDtcbiAgICB2YXIgdzUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc1ID4+PiAyNikpIHwgMDtcbiAgICB3NSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDYsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNikpIHwgMDtcbiAgICB2YXIgdzYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc2ID4+PiAyNikpIHwgMDtcbiAgICB3NiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDcsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDcpKSB8IDA7XG4gICAgdmFyIHc3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NyA+Pj4gMjYpKSB8IDA7XG4gICAgdzcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw4LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDgsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDgsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOCkpIHwgMDtcbiAgICB2YXIgdzggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc4ID4+PiAyNikpIHwgMDtcbiAgICB3OCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDkgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzkgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc5ID4+PiAyNikpIHwgMDtcbiAgICB3OSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDEpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTAgPj4+IDI2KSkgfCAwO1xuICAgIHcxMCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDExICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDIpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMSA+Pj4gMjYpKSB8IDA7XG4gICAgdzExICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgzKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwzKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgzKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTIgPj4+IDI2KSkgfCAwO1xuICAgIHcxMiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDQpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEzID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTMgPj4+IDI2KSkgfCAwO1xuICAgIHcxMyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDUpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg2KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw2KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg2KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTUgPj4+IDI2KSkgfCAwO1xuICAgIHcxNSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDcpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTYgPj4+IDI2KSkgfCAwO1xuICAgIHcxNiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDgpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNyA+Pj4gMjYpKSB8IDA7XG4gICAgdzE3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg5KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw5KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg5KTtcbiAgICB2YXIgdzE4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTggPj4+IDI2KSkgfCAwO1xuICAgIHcxOCAmPSAweDNmZmZmZmY7XG4gICAgb1swXSA9IHcwO1xuICAgIG9bMV0gPSB3MTtcbiAgICBvWzJdID0gdzI7XG4gICAgb1szXSA9IHczO1xuICAgIG9bNF0gPSB3NDtcbiAgICBvWzVdID0gdzU7XG4gICAgb1s2XSA9IHc2O1xuICAgIG9bN10gPSB3NztcbiAgICBvWzhdID0gdzg7XG4gICAgb1s5XSA9IHc5O1xuICAgIG9bMTBdID0gdzEwO1xuICAgIG9bMTFdID0gdzExO1xuICAgIG9bMTJdID0gdzEyO1xuICAgIG9bMTNdID0gdzEzO1xuICAgIG9bMTRdID0gdzE0O1xuICAgIG9bMTVdID0gdzE1O1xuICAgIG9bMTZdID0gdzE2O1xuICAgIG9bMTddID0gdzE3O1xuICAgIG9bMThdID0gdzE4O1xuICAgIGlmIChjICE9PSAwKSB7XG4gICAgICBvWzE5XSA9IGM7XG4gICAgICBvdXQubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH07XG5cbiAgLy8gUG9seWZpbGwgY29tYlxuICBpZiAoIU1hdGguaW11bCkge1xuICAgIGNvbWIxME11bFRvID0gc21hbGxNdWxUbztcbiAgfVxuXG4gIGZ1bmN0aW9uIGJpZ011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aDtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgdmFyIGhuY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb3V0Lmxlbmd0aCAtIDE7IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBobmNhcnJ5O1xuICAgICAgaG5jYXJyeSA9IDA7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IGsgLSBqO1xuICAgICAgICB2YXIgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICB2YXIgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHZhciByID0gYSAqIGI7XG5cbiAgICAgICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArICgociAvIDB4NDAwMDAwMCkgfCAwKSkgfCAwO1xuICAgICAgICBsbyA9IChsbyArIHJ3b3JkKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAobG8gPj4+IDI2KSkgfCAwO1xuXG4gICAgICAgIGhuY2FycnkgKz0gbmNhcnJ5ID4+PiAyNjtcbiAgICAgICAgbmNhcnJ5ICY9IDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkO1xuICAgICAgY2FycnkgPSBuY2Fycnk7XG4gICAgICBuY2FycnkgPSBobmNhcnJ5O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5fc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgLy8gVGVtcG9yYXJ5IGRpc2FibGUsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9ibi5qcy9pc3N1ZXMvMjExXG4gICAgLy8gdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIC8vIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICAgIHJldHVybiBiaWdNdWxUbyhzZWxmLCBudW0sIG91dCk7XG4gIH1cblxuICBCTi5wcm90b3R5cGUubXVsVG8gPSBmdW5jdGlvbiBtdWxUbyAobnVtLCBvdXQpIHtcbiAgICB2YXIgcmVzO1xuICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCArIG51bS5sZW5ndGg7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxMCAmJiBudW0ubGVuZ3RoID09PSAxMCkge1xuICAgICAgcmVzID0gY29tYjEwTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgNjMpIHtcbiAgICAgIHJlcyA9IHNtYWxsTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgMTAyNCkge1xuICAgICAgcmVzID0gYmlnTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvb2xleS1UdWtleSBhbGdvcml0aG0gZm9yIEZGVFxuICAvLyBzbGlnaHRseSByZXZpc2l0ZWQgdG8gcmVseSBvbiBsb29waW5nIGluc3RlYWQgb2YgcmVjdXJzaW9uXG5cbiAgZnVuY3Rpb24gRkZUTSAoeCwgeSkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIEZGVE0ucHJvdG90eXBlLm1ha2VSQlQgPSBmdW5jdGlvbiBtYWtlUkJUIChOKSB7XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGwgPSBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyhOKSAtIDE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHRbaV0gPSB0aGlzLnJldkJpbihpLCBsLCBOKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGJpbmFyeS1yZXZlcnNlZCByZXByZXNlbnRhdGlvbiBvZiBgeGBcbiAgRkZUTS5wcm90b3R5cGUucmV2QmluID0gZnVuY3Rpb24gcmV2QmluICh4LCBsLCBOKSB7XG4gICAgaWYgKHggPT09IDAgfHwgeCA9PT0gTiAtIDEpIHJldHVybiB4O1xuXG4gICAgdmFyIHJiID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgcmIgfD0gKHggJiAxKSA8PCAobCAtIGkgLSAxKTtcbiAgICAgIHggPj49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJiO1xuICB9O1xuXG4gIC8vIFBlcmZvcm1zIFwidHdlZWRsaW5nXCIgcGhhc2UsIHRoZXJlZm9yZSAnZW11bGF0aW5nJ1xuICAvLyBiZWhhdmlvdXIgb2YgdGhlIHJlY3Vyc2l2ZSBhbGdvcml0aG1cbiAgRkZUTS5wcm90b3R5cGUucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUgKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcnR3c1tpXSA9IHJ3c1tyYnRbaV1dO1xuICAgICAgaXR3c1tpXSA9IGl3c1tyYnRbaV1dO1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiB0cmFuc2Zvcm0gKHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOLCByYnQpIHtcbiAgICB0aGlzLnBlcm11dGUocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTik7XG5cbiAgICBmb3IgKHZhciBzID0gMTsgcyA8IE47IHMgPDw9IDEpIHtcbiAgICAgIHZhciBsID0gcyA8PCAxO1xuXG4gICAgICB2YXIgcnR3ZGYgPSBNYXRoLmNvcygyICogTWF0aC5QSSAvIGwpO1xuICAgICAgdmFyIGl0d2RmID0gTWF0aC5zaW4oMiAqIE1hdGguUEkgLyBsKTtcblxuICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBOOyBwICs9IGwpIHtcbiAgICAgICAgdmFyIHJ0d2RmXyA9IHJ0d2RmO1xuICAgICAgICB2YXIgaXR3ZGZfID0gaXR3ZGY7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzOyBqKyspIHtcbiAgICAgICAgICB2YXIgcmUgPSBydHdzW3AgKyBqXTtcbiAgICAgICAgICB2YXIgaWUgPSBpdHdzW3AgKyBqXTtcblxuICAgICAgICAgIHZhciBybyA9IHJ0d3NbcCArIGogKyBzXTtcbiAgICAgICAgICB2YXIgaW8gPSBpdHdzW3AgKyBqICsgc107XG5cbiAgICAgICAgICB2YXIgcnggPSBydHdkZl8gKiBybyAtIGl0d2RmXyAqIGlvO1xuXG4gICAgICAgICAgaW8gPSBydHdkZl8gKiBpbyArIGl0d2RmXyAqIHJvO1xuICAgICAgICAgIHJvID0gcng7XG5cbiAgICAgICAgICBydHdzW3AgKyBqXSA9IHJlICsgcm87XG4gICAgICAgICAgaXR3c1twICsgal0gPSBpZSArIGlvO1xuXG4gICAgICAgICAgcnR3c1twICsgaiArIHNdID0gcmUgLSBybztcbiAgICAgICAgICBpdHdzW3AgKyBqICsgc10gPSBpZSAtIGlvO1xuXG4gICAgICAgICAgLyoganNoaW50IG1heGRlcHRoIDogZmFsc2UgKi9cbiAgICAgICAgICBpZiAoaiAhPT0gbCkge1xuICAgICAgICAgICAgcnggPSBydHdkZiAqIHJ0d2RmXyAtIGl0d2RmICogaXR3ZGZfO1xuXG4gICAgICAgICAgICBpdHdkZl8gPSBydHdkZiAqIGl0d2RmXyArIGl0d2RmICogcnR3ZGZfO1xuICAgICAgICAgICAgcnR3ZGZfID0gcng7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmd1ZXNzTGVuMTNiID0gZnVuY3Rpb24gZ3Vlc3NMZW4xM2IgKG4sIG0pIHtcbiAgICB2YXIgTiA9IE1hdGgubWF4KG0sIG4pIHwgMTtcbiAgICB2YXIgb2RkID0gTiAmIDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoTiA9IE4gLyAyIHwgMDsgTjsgTiA9IE4gPj4+IDEpIHtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICByZXR1cm4gMSA8PCBpICsgMSArIG9kZDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb25qdWdhdGUgPSBmdW5jdGlvbiBjb25qdWdhdGUgKHJ3cywgaXdzLCBOKSB7XG4gICAgaWYgKE4gPD0gMSkgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdCA9IHJ3c1tpXTtcblxuICAgICAgcndzW2ldID0gcndzW04gLSBpIC0gMV07XG4gICAgICByd3NbTiAtIGkgLSAxXSA9IHQ7XG5cbiAgICAgIHQgPSBpd3NbaV07XG5cbiAgICAgIGl3c1tpXSA9IC1pd3NbTiAtIGkgLSAxXTtcbiAgICAgIGl3c1tOIC0gaSAtIDFdID0gLXQ7XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm5vcm1hbGl6ZTEzYiA9IGZ1bmN0aW9uIG5vcm1hbGl6ZTEzYiAod3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHcgPSBNYXRoLnJvdW5kKHdzWzIgKiBpICsgMV0gLyBOKSAqIDB4MjAwMCArXG4gICAgICAgIE1hdGgucm91bmQod3NbMiAqIGldIC8gTikgK1xuICAgICAgICBjYXJyeTtcblxuICAgICAgd3NbaV0gPSB3ICYgMHgzZmZmZmZmO1xuXG4gICAgICBpZiAodyA8IDB4NDAwMDAwMCkge1xuICAgICAgICBjYXJyeSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJyeSA9IHcgLyAweDQwMDAwMDAgfCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB3cztcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb252ZXJ0MTNiID0gZnVuY3Rpb24gY29udmVydDEzYiAod3MsIGxlbiwgcndzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjYXJyeSA9IGNhcnJ5ICsgKHdzW2ldIHwgMCk7XG5cbiAgICAgIHJ3c1syICogaV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgICByd3NbMiAqIGkgKyAxXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICB9XG5cbiAgICAvLyBQYWQgd2l0aCB6ZXJvZXNcbiAgICBmb3IgKGkgPSAyICogbGVuOyBpIDwgTjsgKytpKSB7XG4gICAgICByd3NbaV0gPSAwO1xuICAgIH1cblxuICAgIGFzc2VydChjYXJyeSA9PT0gMCk7XG4gICAgYXNzZXJ0KChjYXJyeSAmIH4weDFmZmYpID09PSAwKTtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5zdHViID0gZnVuY3Rpb24gc3R1YiAoTikge1xuICAgIHZhciBwaCA9IG5ldyBBcnJheShOKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcGhbaV0gPSAwO1xuICAgIH1cblxuICAgIHJldHVybiBwaDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5tdWxwID0gZnVuY3Rpb24gbXVscCAoeCwgeSwgb3V0KSB7XG4gICAgdmFyIE4gPSAyICogdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCwgeS5sZW5ndGgpO1xuXG4gICAgdmFyIHJidCA9IHRoaXMubWFrZVJCVChOKTtcblxuICAgIHZhciBfID0gdGhpcy5zdHViKE4pO1xuXG4gICAgdmFyIHJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgcndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBucndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBucndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbml3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgcm13cyA9IG91dC53b3JkcztcbiAgICBybXdzLmxlbmd0aCA9IE47XG5cbiAgICB0aGlzLmNvbnZlcnQxM2IoeC53b3JkcywgeC5sZW5ndGgsIHJ3cywgTik7XG4gICAgdGhpcy5jb252ZXJ0MTNiKHkud29yZHMsIHkubGVuZ3RoLCBucndzLCBOKTtcblxuICAgIHRoaXMudHJhbnNmb3JtKHJ3cywgXywgcndzdCwgaXdzdCwgTiwgcmJ0KTtcbiAgICB0aGlzLnRyYW5zZm9ybShucndzLCBfLCBucndzdCwgbml3c3QsIE4sIHJidCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdmFyIHJ4ID0gcndzdFtpXSAqIG5yd3N0W2ldIC0gaXdzdFtpXSAqIG5pd3N0W2ldO1xuICAgICAgaXdzdFtpXSA9IHJ3c3RbaV0gKiBuaXdzdFtpXSArIGl3c3RbaV0gKiBucndzdFtpXTtcbiAgICAgIHJ3c3RbaV0gPSByeDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmp1Z2F0ZShyd3N0LCBpd3N0LCBOKTtcbiAgICB0aGlzLnRyYW5zZm9ybShyd3N0LCBpd3N0LCBybXdzLCBfLCBOLCByYnQpO1xuICAgIHRoaXMuY29uanVnYXRlKHJtd3MsIF8sIE4pO1xuICAgIHRoaXMubm9ybWFsaXplMTNiKHJtd3MsIE4pO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0geC5uZWdhdGl2ZSBeIHkubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHgubGVuZ3RoICsgeS5sZW5ndGg7XG4gICAgcmV0dXJuIG91dC5fc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICB2YXIgaXNOZWdOdW0gPSBudW0gPCAwO1xuICAgIGlmIChpc05lZ051bSkgbnVtID0gLW51bTtcblxuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG5cbiAgICAvLyBDYXJyeVxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKiBudW07XG4gICAgICB2YXIgbG8gPSAodyAmIDB4M2ZmZmZmZikgKyAoY2FycnkgJiAweDNmZmZmZmYpO1xuICAgICAgY2FycnkgPj49IDI2O1xuICAgICAgY2FycnkgKz0gKHcgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgIC8vIE5PVEU6IGxvIGlzIDI3Yml0IG1heGltdW1cbiAgICAgIGNhcnJ5ICs9IGxvID4+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzTmVnTnVtID8gdGhpcy5pbmVnKCkgOiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaGxuID0gZnVuY3Rpb24gaXNobG4gKGJpdHMpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0IGluLXBsYWNlXG4gIC8vIE5PVEU6IGBoaW50YCBpcyBhIGxvd2VzdCBiaXQgYmVmb3JlIHRyYWlsaW5nIHplcm9lc1xuICAvLyBOT1RFOiBpZiBgZXh0ZW5kZWRgIGlzIHByZXNlbnQgLSBpdCB3aWxsIGJlIGZpbGxlZCB3aXRoIGRlc3Ryb3llZCBiaXRzXG4gIEJOLnByb3RvdHlwZS5pdXNocm4gPSBmdW5jdGlvbiBpdXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciBoO1xuICAgIGlmIChoaW50KSB7XG4gICAgICBoID0gKGhpbnQgLSAoaGludCAlIDI2KSkgLyAyNjtcbiAgICB9IGVsc2Uge1xuICAgICAgaCA9IDA7XG4gICAgfVxuXG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSBNYXRoLm1pbigoYml0cyAtIHIpIC8gMjYsIHRoaXMubGVuZ3RoKTtcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICB2YXIgbWFza2VkV29yZHMgPSBleHRlbmRlZDtcblxuICAgIGggLT0gcztcbiAgICBoID0gTWF0aC5tYXgoMCwgaCk7XG5cbiAgICAvLyBFeHRlbmRlZCBtb2RlLCBjb3B5IG1hc2tlZCBwYXJ0XG4gICAgaWYgKG1hc2tlZFdvcmRzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICBtYXNrZWRXb3Jkcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG4gICAgICBtYXNrZWRXb3Jkcy5sZW5ndGggPSBzO1xuICAgIH1cblxuICAgIGlmIChzID09PSAwKSB7XG4gICAgICAvLyBOby1vcCwgd2Ugc2hvdWxkIG5vdCBtb3ZlIGFueXRoaW5nIGF0IGFsbFxuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiBzKSB7XG4gICAgICB0aGlzLmxlbmd0aCAtPSBzO1xuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaSArIHNdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwICYmIChjYXJyeSAhPT0gMCB8fCBpID49IGgpOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKGNhcnJ5IDw8ICgyNiAtIHIpKSB8ICh3b3JkID4+PiByKTtcbiAgICAgIGNhcnJ5ID0gd29yZCAmIG1hc2s7XG4gICAgfVxuXG4gICAgLy8gUHVzaCBjYXJyaWVkIGJpdHMgYXMgYSBtYXNrXG4gICAgaWYgKG1hc2tlZFdvcmRzICYmIGNhcnJ5ICE9PSAwKSB7XG4gICAgICBtYXNrZWRXb3Jkcy53b3Jkc1ttYXNrZWRXb3Jkcy5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hybiA9IGZ1bmN0aW9uIGlzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNocm4oYml0cywgaGludCwgZXh0ZW5kZWQpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnRcbiAgQk4ucHJvdG90eXBlLnNobG4gPSBmdW5jdGlvbiBzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNobG4gPSBmdW5jdGlvbiB1c2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0XG4gIEJOLnByb3RvdHlwZS5zaHJuID0gZnVuY3Rpb24gc2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaHJuID0gZnVuY3Rpb24gdXNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiaXRzKTtcbiAgfTtcblxuICAvLyBUZXN0IGlmIG4gYml0IGlzIHNldFxuICBCTi5wcm90b3R5cGUudGVzdG4gPSBmdW5jdGlvbiB0ZXN0biAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBiaXQgYW5kIHJldHVyblxuICAgIHZhciB3ID0gdGhpcy53b3Jkc1tzXTtcblxuICAgIHJldHVybiAhISh3ICYgcSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyIChpbi1wbGFjZSlcbiAgQk4ucHJvdG90eXBlLmltYXNrbiA9IGZ1bmN0aW9uIGltYXNrbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcblxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAnaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzJyk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHMrKztcbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1pbihzLCB0aGlzLmxlbmd0aCk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gJj0gbWFzaztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8PSBudW0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSA9IG51bSAtICh0aGlzLndvcmRzWzBdIHwgMCk7XG4gICAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlzdWJuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCB3aXRob3V0IGNoZWNrc1xuICAgIHJldHVybiB0aGlzLl9pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faWFkZG4gPSBmdW5jdGlvbiBfaWFkZG4gKG51bSkge1xuICAgIHRoaXMud29yZHNbMF0gKz0gbnVtO1xuXG4gICAgLy8gQ2FycnlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPj0gMHg0MDAwMDAwOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gLT0gMHg0MDAwMDAwO1xuICAgICAgaWYgKGkgPT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSsrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpICsgMSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBwbGFpbiBudW1iZXIgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlzdWJuID0gZnVuY3Rpb24gaXN1Ym4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlhZGRuKC1udW0pO1xuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkbihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLndvcmRzWzBdIC09IG51bTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdIDwgMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IC10aGlzLndvcmRzWzBdO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENhcnJ5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPCAwOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSArPSAweDQwMDAwMDA7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdIC09IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFkZG4gPSBmdW5jdGlvbiBhZGRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnN1Ym4gPSBmdW5jdGlvbiBzdWJuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhYnMgPSBmdW5jdGlvbiBpYWJzICgpIHtcbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiBhYnMgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFicygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faXNobG5zdWJtdWwgPSBmdW5jdGlvbiBfaXNobG5zdWJtdWwgKG51bSwgbXVsLCBzaGlmdCkge1xuICAgIHZhciBsZW4gPSBudW0ubGVuZ3RoICsgc2hpZnQ7XG4gICAgdmFyIGk7XG5cbiAgICB0aGlzLl9leHBhbmQobGVuKTtcblxuICAgIHZhciB3O1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgdmFyIHJpZ2h0ID0gKG51bS53b3Jkc1tpXSB8IDApICogbXVsO1xuICAgICAgdyAtPSByaWdodCAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gKHcgPj4gMjYpIC0gKChyaWdodCAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBpIDwgdGhpcy5sZW5ndGggLSBzaGlmdDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSA9PT0gMCkgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5fc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX3dvcmREaXYgPSBmdW5jdGlvbiBfd29yZERpdiAobnVtLCBtb2RlKSB7XG4gICAgdmFyIHNoaWZ0ID0gdGhpcy5sZW5ndGggLSBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGEgPSB0aGlzLmNsb25lKCk7XG4gICAgdmFyIGIgPSBudW07XG5cbiAgICAvLyBOb3JtYWxpemVcbiAgICB2YXIgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB2YXIgYmhpQml0cyA9IHRoaXMuX2NvdW50Qml0cyhiaGkpO1xuICAgIHNoaWZ0ID0gMjYgLSBiaGlCaXRzO1xuICAgIGlmIChzaGlmdCAhPT0gMCkge1xuICAgICAgYiA9IGIudXNobG4oc2hpZnQpO1xuICAgICAgYS5pdXNobG4oc2hpZnQpO1xuICAgICAgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIHF1b3RpZW50XG4gICAgdmFyIG0gPSBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuICAgIHZhciBxO1xuXG4gICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICBxID0gbmV3IEJOKG51bGwpO1xuICAgICAgcS5sZW5ndGggPSBtICsgMTtcbiAgICAgIHEud29yZHMgPSBuZXcgQXJyYXkocS5sZW5ndGgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHEud29yZHNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkaWZmID0gYS5jbG9uZSgpLl9pc2hsbnN1Ym11bChiLCAxLCBtKTtcbiAgICBpZiAoZGlmZi5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgYSA9IGRpZmY7XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW21dID0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gbSAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICB2YXIgcWogPSAoYS53b3Jkc1tiLmxlbmd0aCArIGpdIHwgMCkgKiAweDQwMDAwMDAgK1xuICAgICAgICAoYS53b3Jkc1tiLmxlbmd0aCArIGogLSAxXSB8IDApO1xuXG4gICAgICAvLyBOT1RFOiAocWogLyBiaGkpIGlzICgweDNmZmZmZmYgKiAweDQwMDAwMDAgKyAweDNmZmZmZmYpIC8gMHgyMDAwMDAwIG1heFxuICAgICAgLy8gKDB4N2ZmZmZmZilcbiAgICAgIHFqID0gTWF0aC5taW4oKHFqIC8gYmhpKSB8IDAsIDB4M2ZmZmZmZik7XG5cbiAgICAgIGEuX2lzaGxuc3VibXVsKGIsIHFqLCBqKTtcbiAgICAgIHdoaWxlIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIHFqLS07XG4gICAgICAgIGEubmVnYXRpdmUgPSAwO1xuICAgICAgICBhLl9pc2hsbnN1Ym11bChiLCAxLCBqKTtcbiAgICAgICAgaWYgKCFhLmlzWmVybygpKSB7XG4gICAgICAgICAgYS5uZWdhdGl2ZSBePSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW2pdID0gcWo7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxKSB7XG4gICAgICBxLl9zdHJpcCgpO1xuICAgIH1cbiAgICBhLl9zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kcm4obnVtLndvcmRzWzBdKSlcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RybihudW0ud29yZHNbMF0pKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd29yZERpdihudW0sIG1vZGUpO1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgIC8gYG51bWBcbiAgQk4ucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uIGRpdiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ2RpdicsIGZhbHNlKS5kaXY7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgJSBgbnVtYFxuICBCTi5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgZmFsc2UpLm1vZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW1vZCA9IGZ1bmN0aW9uIHVtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCB0cnVlKS5tb2Q7XG4gIH07XG5cbiAgLy8gRmluZCBSb3VuZChgdGhpc2AgLyBgbnVtYClcbiAgQk4ucHJvdG90eXBlLmRpdlJvdW5kID0gZnVuY3Rpb24gZGl2Um91bmQgKG51bSkge1xuICAgIHZhciBkbSA9IHRoaXMuZGl2bW9kKG51bSk7XG5cbiAgICAvLyBGYXN0IGNhc2UgLSBleGFjdCBkaXZpc2lvblxuICAgIGlmIChkbS5tb2QuaXNaZXJvKCkpIHJldHVybiBkbS5kaXY7XG5cbiAgICB2YXIgbW9kID0gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0ubW9kLmlzdWIobnVtKSA6IGRtLm1vZDtcblxuICAgIHZhciBoYWxmID0gbnVtLnVzaHJuKDEpO1xuICAgIHZhciByMiA9IG51bS5hbmRsbigxKTtcbiAgICB2YXIgY21wID0gbW9kLmNtcChoYWxmKTtcblxuICAgIC8vIFJvdW5kIGRvd25cbiAgICBpZiAoY21wIDwgMCB8fCAocjIgPT09IDEgJiYgY21wID09PSAwKSkgcmV0dXJuIGRtLmRpdjtcblxuICAgIC8vIFJvdW5kIHVwXG4gICAgcmV0dXJuIGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLmRpdi5pc3VibigxKSA6IGRtLmRpdi5pYWRkbigxKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubW9kcm4gPSBmdW5jdGlvbiBtb2RybiAobnVtKSB7XG4gICAgdmFyIGlzTmVnTnVtID0gbnVtIDwgMDtcbiAgICBpZiAoaXNOZWdOdW0pIG51bSA9IC1udW07XG5cbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG4gICAgdmFyIHAgPSAoMSA8PCAyNikgJSBudW07XG5cbiAgICB2YXIgYWNjID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgYWNjID0gKHAgKiBhY2MgKyAodGhpcy53b3Jkc1tpXSB8IDApKSAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXNOZWdOdW0gPyAtYWNjIDogYWNjO1xuICB9O1xuXG4gIC8vIFdBUk5JTkc6IERFUFJFQ0FURURcbiAgQk4ucHJvdG90eXBlLm1vZG4gPSBmdW5jdGlvbiBtb2RuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5tb2RybihudW0pO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIGRpdmlzaW9uIGJ5IG51bWJlclxuICBCTi5wcm90b3R5cGUuaWRpdm4gPSBmdW5jdGlvbiBpZGl2biAobnVtKSB7XG4gICAgdmFyIGlzTmVnTnVtID0gbnVtIDwgMDtcbiAgICBpZiAoaXNOZWdOdW0pIG51bSA9IC1udW07XG5cbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeSAqIDB4NDAwMDAwMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAodyAvIG51bSkgfCAwO1xuICAgICAgY2FycnkgPSB3ICUgbnVtO1xuICAgIH1cblxuICAgIHRoaXMuX3N0cmlwKCk7XG4gICAgcmV0dXJuIGlzTmVnTnVtID8gdGhpcy5pbmVnKCkgOiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5kaXZuID0gZnVuY3Rpb24gZGl2biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lZ2NkID0gZnVuY3Rpb24gZWdjZCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIHggPSB0aGlzO1xuICAgIHZhciB5ID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKHgubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHggPSB4LnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHggPSB4LmNsb25lKCk7XG4gICAgfVxuXG4gICAgLy8gQSAqIHggKyBCICogeSA9IHhcbiAgICB2YXIgQSA9IG5ldyBCTigxKTtcbiAgICB2YXIgQiA9IG5ldyBCTigwKTtcblxuICAgIC8vIEMgKiB4ICsgRCAqIHkgPSB5XG4gICAgdmFyIEMgPSBuZXcgQk4oMCk7XG4gICAgdmFyIEQgPSBuZXcgQk4oMSk7XG5cbiAgICB2YXIgZyA9IDA7XG5cbiAgICB3aGlsZSAoeC5pc0V2ZW4oKSAmJiB5LmlzRXZlbigpKSB7XG4gICAgICB4Lml1c2hybigxKTtcbiAgICAgIHkuaXVzaHJuKDEpO1xuICAgICAgKytnO1xuICAgIH1cblxuICAgIHZhciB5cCA9IHkuY2xvbmUoKTtcbiAgICB2YXIgeHAgPSB4LmNsb25lKCk7XG5cbiAgICB3aGlsZSAoIXguaXNaZXJvKCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7ICh4LndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgeC5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEEuaXNPZGQoKSB8fCBCLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEEuaWFkZCh5cCk7XG4gICAgICAgICAgICBCLmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEEuaXVzaHJuKDEpO1xuICAgICAgICAgIEIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7ICh5LndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgeS5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEMuaXNPZGQoKSB8fCBELmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEMuaWFkZCh5cCk7XG4gICAgICAgICAgICBELmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEMuaXVzaHJuKDEpO1xuICAgICAgICAgIEQuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh4LmNtcCh5KSA+PSAwKSB7XG4gICAgICAgIHguaXN1Yih5KTtcbiAgICAgICAgQS5pc3ViKEMpO1xuICAgICAgICBCLmlzdWIoRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5LmlzdWIoeCk7XG4gICAgICAgIEMuaXN1YihBKTtcbiAgICAgICAgRC5pc3ViKEIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhOiBDLFxuICAgICAgYjogRCxcbiAgICAgIGdjZDogeS5pdXNobG4oZylcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRoaXMgaXMgcmVkdWNlZCBpbmNhcm5hdGlvbiBvZiB0aGUgYmluYXJ5IEVFQVxuICAvLyBhYm92ZSwgZGVzaWduYXRlZCB0byBpbnZlcnQgbWVtYmVycyBvZiB0aGVcbiAgLy8gX3ByaW1lXyBmaWVsZHMgRihwKSBhdCBhIG1heGltYWwgc3BlZWRcbiAgQk4ucHJvdG90eXBlLl9pbnZtcCA9IGZ1bmN0aW9uIF9pbnZtcCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIGEgPSB0aGlzO1xuICAgIHZhciBiID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGEgPSBhLnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICAgIHZhciB4MiA9IG5ldyBCTigwKTtcblxuICAgIHZhciBkZWx0YSA9IGIuY2xvbmUoKTtcblxuICAgIHdoaWxlIChhLmNtcG4oMSkgPiAwICYmIGIuY21wbigxKSA+IDApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7IChhLndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgYS5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgxLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgxLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgxLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoYi53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIGIuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmICh4Mi5pc09kZCgpKSB7XG4gICAgICAgICAgICB4Mi5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4Mi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGEuY21wKGIpID49IDApIHtcbiAgICAgICAgYS5pc3ViKGIpO1xuICAgICAgICB4MS5pc3ViKHgyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGIuaXN1YihhKTtcbiAgICAgICAgeDIuaXN1Yih4MSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlcztcbiAgICBpZiAoYS5jbXBuKDEpID09PSAwKSB7XG4gICAgICByZXMgPSB4MTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0geDI7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQocCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ2NkID0gZnVuY3Rpb24gZ2NkIChudW0pIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIG51bS5hYnMoKTtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gdGhpcy5hYnMoKTtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtLmNsb25lKCk7XG4gICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgYi5uZWdhdGl2ZSA9IDA7XG5cbiAgICAvLyBSZW1vdmUgY29tbW9uIGZhY3RvciBvZiB0d29cbiAgICBmb3IgKHZhciBzaGlmdCA9IDA7IGEuaXNFdmVuKCkgJiYgYi5pc0V2ZW4oKTsgc2hpZnQrKykge1xuICAgICAgYS5pdXNocm4oMSk7XG4gICAgICBiLml1c2hybigxKTtcbiAgICB9XG5cbiAgICBkbyB7XG4gICAgICB3aGlsZSAoYS5pc0V2ZW4oKSkge1xuICAgICAgICBhLml1c2hybigxKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgIGIuaXVzaHJuKDEpO1xuICAgICAgfVxuXG4gICAgICB2YXIgciA9IGEuY21wKGIpO1xuICAgICAgaWYgKHIgPCAwKSB7XG4gICAgICAgIC8vIFN3YXAgYGFgIGFuZCBgYmAgdG8gbWFrZSBgYWAgYWx3YXlzIGJpZ2dlciB0aGFuIGBiYFxuICAgICAgICB2YXIgdCA9IGE7XG4gICAgICAgIGEgPSBiO1xuICAgICAgICBiID0gdDtcbiAgICAgIH0gZWxzZSBpZiAociA9PT0gMCB8fCBiLmNtcG4oMSkgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGEuaXN1YihiKTtcbiAgICB9IHdoaWxlICh0cnVlKTtcblxuICAgIHJldHVybiBiLml1c2hsbihzaGlmdCk7XG4gIH07XG5cbiAgLy8gSW52ZXJ0IG51bWJlciBpbiB0aGUgZmllbGQgRihudW0pXG4gIEJOLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZWdjZChudW0pLmEudW1vZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiBpc0V2ZW4gKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uIGlzT2RkICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMTtcbiAgfTtcblxuICAvLyBBbmQgZmlyc3Qgd29yZCBhbmQgbnVtXG4gIEJOLnByb3RvdHlwZS5hbmRsbiA9IGZ1bmN0aW9uIGFuZGxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkc1swXSAmIG51bTtcbiAgfTtcblxuICAvLyBJbmNyZW1lbnQgYXQgdGhlIGJpdCBwb3NpdGlvbiBpbi1saW5lXG4gIEJOLnByb3RvdHlwZS5iaW5jbiA9IGZ1bmN0aW9uIGJpbmNuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicpO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHRoaXMuX2V4cGFuZChzICsgMSk7XG4gICAgICB0aGlzLndvcmRzW3NdIHw9IHE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgYml0IGFuZCBwcm9wYWdhdGUsIGlmIG5lZWRlZFxuICAgIHZhciBjYXJyeSA9IHE7XG4gICAgZm9yICh2YXIgaSA9IHM7IGNhcnJ5ICE9PSAwICYmIGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdyArPSBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+Pj4gMjY7XG4gICAgICB3ICY9IDB4M2ZmZmZmZjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiBpc1plcm8gKCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbXBuID0gZnVuY3Rpb24gY21wbiAobnVtKSB7XG4gICAgdmFyIG5lZ2F0aXZlID0gbnVtIDwgMDtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmICFuZWdhdGl2ZSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG5lZ2F0aXZlKSByZXR1cm4gMTtcblxuICAgIHRoaXMuX3N0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyLnN0cmlwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gciBpcyBhIEJOIHY0IGluc3RhbmNlXG4gICAgICAgIHIuc3RyaXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHIgaXMgYSBCTiB2NSBpbnN0YW5jZVxuICAgICAgICByLl9zdHJpcCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dCkge1xuICAgIGlucHV0Lml1c2hybih0aGlzLm4sIDAsIG91dCk7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICByZXR1cm4gbnVtLmltdWwodGhpcy5rKTtcbiAgfTtcblxuICBmdW5jdGlvbiBLMjU2ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnazI1NicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYnKTtcbiAgfVxuICBpbmhlcml0cyhLMjU2LCBNUHJpbWUpO1xuXG4gIEsyNTYucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXRwdXQpIHtcbiAgICAvLyAyNTYgPSA5ICogMjYgKyAyMlxuICAgIHZhciBtYXNrID0gMHgzZmZmZmY7XG5cbiAgICB2YXIgb3V0TGVuID0gTWF0aC5taW4oaW5wdXQubGVuZ3RoLCA5KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG91dExlbjsgaSsrKSB7XG4gICAgICBvdXRwdXQud29yZHNbaV0gPSBpbnB1dC53b3Jkc1tpXTtcbiAgICB9XG4gICAgb3V0cHV0Lmxlbmd0aCA9IG91dExlbjtcblxuICAgIGlmIChpbnB1dC5sZW5ndGggPD0gOSkge1xuICAgICAgaW5wdXQud29yZHNbMF0gPSAwO1xuICAgICAgaW5wdXQubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTaGlmdCBieSA5IGxpbWJzXG4gICAgdmFyIHByZXYgPSBpbnB1dC53b3Jkc1s5XTtcbiAgICBvdXRwdXQud29yZHNbb3V0cHV0Lmxlbmd0aCsrXSA9IHByZXYgJiBtYXNrO1xuXG4gICAgZm9yIChpID0gMTA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5leHQgPSBpbnB1dC53b3Jkc1tpXSB8IDA7XG4gICAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gKChuZXh0ICYgbWFzaykgPDwgNCkgfCAocHJldiA+Pj4gMjIpO1xuICAgICAgcHJldiA9IG5leHQ7XG4gICAgfVxuICAgIHByZXYgPj4+PSAyMjtcbiAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gcHJldjtcbiAgICBpZiAocHJldiA9PT0gMCAmJiBpbnB1dC5sZW5ndGggPiAxMCkge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDEwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gOTtcbiAgICB9XG4gIH07XG5cbiAgSzI1Ni5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTAwMDAwM2QxID0gWyAweDQwLCAweDNkMSBdXG4gICAgbnVtLndvcmRzW251bS5sZW5ndGhdID0gMDtcbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aCArIDFdID0gMDtcbiAgICBudW0ubGVuZ3RoICs9IDI7XG5cbiAgICAvLyBib3VuZGVkIGF0OiAweDQwICogMHgzZmZmZmZmICsgMHgzZDAgPSAweDEwMDAwMDM5MFxuICAgIHZhciBsbyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gbnVtLndvcmRzW2ldIHwgMDtcbiAgICAgIGxvICs9IHcgKiAweDNkMTtcbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgbG8gPSB3ICogMHg0MCArICgobG8gLyAweDQwMDAwMDApIHwgMCk7XG4gICAgfVxuXG4gICAgLy8gRmFzdCBsZW5ndGggcmVkdWN0aW9uXG4gICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICBmdW5jdGlvbiBQMjI0ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDIyNCcsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEnKTtcbiAgfVxuICBpbmhlcml0cyhQMjI0LCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAxOTIgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMTkyJyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicpO1xuICB9XG4gIGluaGVyaXRzKFAxOTIsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDI1NTE5ICgpIHtcbiAgICAvLyAyIF4gMjU1IC0gMTlcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnMjU1MTknLFxuICAgICAgJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnKTtcbiAgfVxuICBpbmhlcml0cyhQMjU1MTksIE1QcmltZSk7XG5cbiAgUDI1NTE5LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxM1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoaSA9IChudW0ud29yZHNbaV0gfCAwKSAqIDB4MTMgKyBjYXJyeTtcbiAgICAgIHZhciBsbyA9IGhpICYgMHgzZmZmZmZmO1xuICAgICAgaGkgPj4+PSAyNjtcblxuICAgICAgbnVtLndvcmRzW2ldID0gbG87XG4gICAgICBjYXJyeSA9IGhpO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgLy8gRXhwb3J0ZWQgbW9zdGx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB1c2UgcGxhaW4gbmFtZSBpbnN0ZWFkXG4gIEJOLl9wcmltZSA9IGZ1bmN0aW9uIHByaW1lIChuYW1lKSB7XG4gICAgLy8gQ2FjaGVkIHZlcnNpb24gb2YgcHJpbWVcbiAgICBpZiAocHJpbWVzW25hbWVdKSByZXR1cm4gcHJpbWVzW25hbWVdO1xuXG4gICAgdmFyIHByaW1lO1xuICAgIGlmIChuYW1lID09PSAnazI1NicpIHtcbiAgICAgIHByaW1lID0gbmV3IEsyNTYoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjI0Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDIyNCgpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AxOTInKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMTkyKCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDI1NTE5Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDI1NTE5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBwcmltZSAnICsgbmFtZSk7XG4gICAgfVxuICAgIHByaW1lc1tuYW1lXSA9IHByaW1lO1xuXG4gICAgcmV0dXJuIHByaW1lO1xuICB9O1xuXG4gIC8vXG4gIC8vIEJhc2UgcmVkdWN0aW9uIGVuZ2luZVxuICAvL1xuICBmdW5jdGlvbiBSZWQgKG0pIHtcbiAgICBpZiAodHlwZW9mIG0gPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgcHJpbWUgPSBCTi5fcHJpbWUobSk7XG4gICAgICB0aGlzLm0gPSBwcmltZS5wO1xuICAgICAgdGhpcy5wcmltZSA9IHByaW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobS5ndG4oMSksICdtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEnKTtcbiAgICAgIHRoaXMubSA9IG07XG4gICAgICB0aGlzLnByaW1lID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkxID0gZnVuY3Rpb24gX3ZlcmlmeTEgKGEpIHtcbiAgICBhc3NlcnQoYS5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkLCAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTIgPSBmdW5jdGlvbiBfdmVyaWZ5MiAoYSwgYikge1xuICAgIGFzc2VydCgoYS5uZWdhdGl2ZSB8IGIubmVnYXRpdmUpID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQgJiYgYS5yZWQgPT09IGIucmVkLFxuICAgICAgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltb2QgPSBmdW5jdGlvbiBpbW9kIChhKSB7XG4gICAgaWYgKHRoaXMucHJpbWUpIHJldHVybiB0aGlzLnByaW1lLmlyZWR1Y2UoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuXG4gICAgbW92ZShhLCBhLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcykpO1xuICAgIHJldHVybiBhO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwidmFyIHI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmFuZChsZW4pIHtcbiAgaWYgKCFyKVxuICAgIHIgPSBuZXcgUmFuZChudWxsKTtcblxuICByZXR1cm4gci5nZW5lcmF0ZShsZW4pO1xufTtcblxuZnVuY3Rpb24gUmFuZChyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQ7XG59XG5tb2R1bGUuZXhwb3J0cy5SYW5kID0gUmFuZDtcblxuUmFuZC5wcm90b3R5cGUuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZShsZW4pIHtcbiAgcmV0dXJuIHRoaXMuX3JhbmQobGVuKTtcbn07XG5cbi8vIEVtdWxhdGUgY3J5cHRvIEFQSSB1c2luZyByYW5keVxuUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gIGlmICh0aGlzLnJhbmQuZ2V0Qnl0ZXMpXG4gICAgcmV0dXJuIHRoaXMucmFuZC5nZXRCeXRlcyhuKTtcblxuICB2YXIgcmVzID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzLmxlbmd0aDsgaSsrKVxuICAgIHJlc1tpXSA9IHRoaXMucmFuZC5nZXRCeXRlKCk7XG4gIHJldHVybiByZXM7XG59O1xuXG5pZiAodHlwZW9mIHNlbGYgPT09ICdvYmplY3QnKSB7XG4gIGlmIChzZWxmLmNyeXB0byAmJiBzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAvLyBNb2Rlcm4gYnJvd3NlcnNcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICAgIHNlbGYuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnIpO1xuICAgICAgcmV0dXJuIGFycjtcbiAgICB9O1xuICB9IGVsc2UgaWYgKHNlbGYubXNDcnlwdG8gJiYgc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAvLyBJRVxuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcblxuICAvLyBTYWZhcmkncyBXZWJXb3JrZXJzIGRvIG5vdCBoYXZlIGBjcnlwdG9gXG4gIH0gZWxzZSBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBPbGQganVua1xuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCB5ZXQnKTtcbiAgICB9O1xuICB9XG59IGVsc2Uge1xuICAvLyBOb2RlLmpzIG9yIFdlYiB3b3JrZXIgd2l0aCBubyBjcnlwdG8gc3VwcG9ydFxuICB0cnkge1xuICAgIHZhciBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcbiAgICBpZiAodHlwZW9mIGNyeXB0by5yYW5kb21CeXRlcyAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCcpO1xuXG4gICAgUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gICAgICByZXR1cm4gY3J5cHRvLnJhbmRvbUJ5dGVzKG4pO1xuICAgIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxufVxuIiwiLy8gYmFzZWQgb24gdGhlIGFlcyBpbXBsaW1lbnRhdGlvbiBpbiB0cmlwbGUgc2VjXG4vLyBodHRwczovL2dpdGh1Yi5jb20va2V5YmFzZS90cmlwbGVzZWNcbi8vIHdoaWNoIGlzIGluIHR1cm4gYmFzZWQgb24gdGhlIG9uZSBmcm9tIGNyeXB0by1qc1xuLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jcnlwdG8tanMvXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG5mdW5jdGlvbiBhc1VJbnQzMkFycmF5IChidWYpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgYnVmID0gQnVmZmVyLmZyb20oYnVmKVxuXG4gIHZhciBsZW4gPSAoYnVmLmxlbmd0aCAvIDQpIHwgMFxuICB2YXIgb3V0ID0gbmV3IEFycmF5KGxlbilcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgb3V0W2ldID0gYnVmLnJlYWRVSW50MzJCRShpICogNClcbiAgfVxuXG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gc2NydWJWZWMgKHYpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgdisrKSB7XG4gICAgdltpXSA9IDBcbiAgfVxufVxuXG5mdW5jdGlvbiBjcnlwdEJsb2NrIChNLCBrZXlTY2hlZHVsZSwgU1VCX01JWCwgU0JPWCwgblJvdW5kcykge1xuICB2YXIgU1VCX01JWDAgPSBTVUJfTUlYWzBdXG4gIHZhciBTVUJfTUlYMSA9IFNVQl9NSVhbMV1cbiAgdmFyIFNVQl9NSVgyID0gU1VCX01JWFsyXVxuICB2YXIgU1VCX01JWDMgPSBTVUJfTUlYWzNdXG5cbiAgdmFyIHMwID0gTVswXSBeIGtleVNjaGVkdWxlWzBdXG4gIHZhciBzMSA9IE1bMV0gXiBrZXlTY2hlZHVsZVsxXVxuICB2YXIgczIgPSBNWzJdIF4ga2V5U2NoZWR1bGVbMl1cbiAgdmFyIHMzID0gTVszXSBeIGtleVNjaGVkdWxlWzNdXG4gIHZhciB0MCwgdDEsIHQyLCB0M1xuICB2YXIga3NSb3cgPSA0XG5cbiAgZm9yICh2YXIgcm91bmQgPSAxOyByb3VuZCA8IG5Sb3VuZHM7IHJvdW5kKyspIHtcbiAgICB0MCA9IFNVQl9NSVgwW3MwID4+PiAyNF0gXiBTVUJfTUlYMVsoczEgPj4+IDE2KSAmIDB4ZmZdIF4gU1VCX01JWDJbKHMyID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWDNbczMgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDEgPSBTVUJfTUlYMFtzMSA+Pj4gMjRdIF4gU1VCX01JWDFbKHMyID4+PiAxNikgJiAweGZmXSBeIFNVQl9NSVgyWyhzMyA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVgzW3MwICYgMHhmZl0gXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICAgIHQyID0gU1VCX01JWDBbczIgPj4+IDI0XSBeIFNVQl9NSVgxWyhzMyA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYMlsoczAgPj4+IDgpICYgMHhmZl0gXiBTVUJfTUlYM1tzMSAmIDB4ZmZdIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgICB0MyA9IFNVQl9NSVgwW3MzID4+PiAyNF0gXiBTVUJfTUlYMVsoczAgPj4+IDE2KSAmIDB4ZmZdIF4gU1VCX01JWDJbKHMxID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWDNbczIgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgczAgPSB0MFxuICAgIHMxID0gdDFcbiAgICBzMiA9IHQyXG4gICAgczMgPSB0M1xuICB9XG5cbiAgdDAgPSAoKFNCT1hbczAgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczEgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMiA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczMgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICB0MSA9ICgoU0JPWFtzMSA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMiA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMzID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMCAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gIHQyID0gKChTQk9YW3MyID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMzID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczAgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MxICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgdDMgPSAoKFNCT1hbczMgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczAgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMSA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczIgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICB0MCA9IHQwID4+PiAwXG4gIHQxID0gdDEgPj4+IDBcbiAgdDIgPSB0MiA+Pj4gMFxuICB0MyA9IHQzID4+PiAwXG5cbiAgcmV0dXJuIFt0MCwgdDEsIHQyLCB0M11cbn1cblxuLy8gQUVTIGNvbnN0YW50c1xudmFyIFJDT04gPSBbMHgwMCwgMHgwMSwgMHgwMiwgMHgwNCwgMHgwOCwgMHgxMCwgMHgyMCwgMHg0MCwgMHg4MCwgMHgxYiwgMHgzNl1cbnZhciBHID0gKGZ1bmN0aW9uICgpIHtcbiAgLy8gQ29tcHV0ZSBkb3VibGUgdGFibGVcbiAgdmFyIGQgPSBuZXcgQXJyYXkoMjU2KVxuICBmb3IgKHZhciBqID0gMDsgaiA8IDI1NjsgaisrKSB7XG4gICAgaWYgKGogPCAxMjgpIHtcbiAgICAgIGRbal0gPSBqIDw8IDFcbiAgICB9IGVsc2Uge1xuICAgICAgZFtqXSA9IChqIDw8IDEpIF4gMHgxMWJcbiAgICB9XG4gIH1cblxuICB2YXIgU0JPWCA9IFtdXG4gIHZhciBJTlZfU0JPWCA9IFtdXG4gIHZhciBTVUJfTUlYID0gW1tdLCBbXSwgW10sIFtdXVxuICB2YXIgSU5WX1NVQl9NSVggPSBbW10sIFtdLCBbXSwgW11dXG5cbiAgLy8gV2FsayBHRigyXjgpXG4gIHZhciB4ID0gMFxuICB2YXIgeGkgPSAwXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpIHtcbiAgICAvLyBDb21wdXRlIHNib3hcbiAgICB2YXIgc3ggPSB4aSBeICh4aSA8PCAxKSBeICh4aSA8PCAyKSBeICh4aSA8PCAzKSBeICh4aSA8PCA0KVxuICAgIHN4ID0gKHN4ID4+PiA4KSBeIChzeCAmIDB4ZmYpIF4gMHg2M1xuICAgIFNCT1hbeF0gPSBzeFxuICAgIElOVl9TQk9YW3N4XSA9IHhcblxuICAgIC8vIENvbXB1dGUgbXVsdGlwbGljYXRpb25cbiAgICB2YXIgeDIgPSBkW3hdXG4gICAgdmFyIHg0ID0gZFt4Ml1cbiAgICB2YXIgeDggPSBkW3g0XVxuXG4gICAgLy8gQ29tcHV0ZSBzdWIgYnl0ZXMsIG1peCBjb2x1bW5zIHRhYmxlc1xuICAgIHZhciB0ID0gKGRbc3hdICogMHgxMDEpIF4gKHN4ICogMHgxMDEwMTAwKVxuICAgIFNVQl9NSVhbMF1beF0gPSAodCA8PCAyNCkgfCAodCA+Pj4gOClcbiAgICBTVUJfTUlYWzFdW3hdID0gKHQgPDwgMTYpIHwgKHQgPj4+IDE2KVxuICAgIFNVQl9NSVhbMl1beF0gPSAodCA8PCA4KSB8ICh0ID4+PiAyNClcbiAgICBTVUJfTUlYWzNdW3hdID0gdFxuXG4gICAgLy8gQ29tcHV0ZSBpbnYgc3ViIGJ5dGVzLCBpbnYgbWl4IGNvbHVtbnMgdGFibGVzXG4gICAgdCA9ICh4OCAqIDB4MTAxMDEwMSkgXiAoeDQgKiAweDEwMDAxKSBeICh4MiAqIDB4MTAxKSBeICh4ICogMHgxMDEwMTAwKVxuICAgIElOVl9TVUJfTUlYWzBdW3N4XSA9ICh0IDw8IDI0KSB8ICh0ID4+PiA4KVxuICAgIElOVl9TVUJfTUlYWzFdW3N4XSA9ICh0IDw8IDE2KSB8ICh0ID4+PiAxNilcbiAgICBJTlZfU1VCX01JWFsyXVtzeF0gPSAodCA8PCA4KSB8ICh0ID4+PiAyNClcbiAgICBJTlZfU1VCX01JWFszXVtzeF0gPSB0XG5cbiAgICBpZiAoeCA9PT0gMCkge1xuICAgICAgeCA9IHhpID0gMVxuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geDIgXiBkW2RbZFt4OCBeIHgyXV1dXG4gICAgICB4aSBePSBkW2RbeGldXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgU0JPWDogU0JPWCxcbiAgICBJTlZfU0JPWDogSU5WX1NCT1gsXG4gICAgU1VCX01JWDogU1VCX01JWCxcbiAgICBJTlZfU1VCX01JWDogSU5WX1NVQl9NSVhcbiAgfVxufSkoKVxuXG5mdW5jdGlvbiBBRVMgKGtleSkge1xuICB0aGlzLl9rZXkgPSBhc1VJbnQzMkFycmF5KGtleSlcbiAgdGhpcy5fcmVzZXQoKVxufVxuXG5BRVMuYmxvY2tTaXplID0gNCAqIDRcbkFFUy5rZXlTaXplID0gMjU2IC8gOFxuQUVTLnByb3RvdHlwZS5ibG9ja1NpemUgPSBBRVMuYmxvY2tTaXplXG5BRVMucHJvdG90eXBlLmtleVNpemUgPSBBRVMua2V5U2l6ZVxuQUVTLnByb3RvdHlwZS5fcmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBrZXlXb3JkcyA9IHRoaXMuX2tleVxuICB2YXIga2V5U2l6ZSA9IGtleVdvcmRzLmxlbmd0aFxuICB2YXIgblJvdW5kcyA9IGtleVNpemUgKyA2XG4gIHZhciBrc1Jvd3MgPSAoblJvdW5kcyArIDEpICogNFxuXG4gIHZhciBrZXlTY2hlZHVsZSA9IFtdXG4gIGZvciAodmFyIGsgPSAwOyBrIDwga2V5U2l6ZTsgaysrKSB7XG4gICAga2V5U2NoZWR1bGVba10gPSBrZXlXb3Jkc1trXVxuICB9XG5cbiAgZm9yIChrID0ga2V5U2l6ZTsgayA8IGtzUm93czsgaysrKSB7XG4gICAgdmFyIHQgPSBrZXlTY2hlZHVsZVtrIC0gMV1cblxuICAgIGlmIChrICUga2V5U2l6ZSA9PT0gMCkge1xuICAgICAgdCA9ICh0IDw8IDgpIHwgKHQgPj4+IDI0KVxuICAgICAgdCA9XG4gICAgICAgIChHLlNCT1hbdCA+Pj4gMjRdIDw8IDI0KSB8XG4gICAgICAgIChHLlNCT1hbKHQgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8XG4gICAgICAgIChHLlNCT1hbKHQgPj4+IDgpICYgMHhmZl0gPDwgOCkgfFxuICAgICAgICAoRy5TQk9YW3QgJiAweGZmXSlcblxuICAgICAgdCBePSBSQ09OWyhrIC8ga2V5U2l6ZSkgfCAwXSA8PCAyNFxuICAgIH0gZWxzZSBpZiAoa2V5U2l6ZSA+IDYgJiYgayAlIGtleVNpemUgPT09IDQpIHtcbiAgICAgIHQgPVxuICAgICAgICAoRy5TQk9YW3QgPj4+IDI0XSA8PCAyNCkgfFxuICAgICAgICAoRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXSA8PCAxNikgfFxuICAgICAgICAoRy5TQk9YWyh0ID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHxcbiAgICAgICAgKEcuU0JPWFt0ICYgMHhmZl0pXG4gICAgfVxuXG4gICAga2V5U2NoZWR1bGVba10gPSBrZXlTY2hlZHVsZVtrIC0ga2V5U2l6ZV0gXiB0XG4gIH1cblxuICB2YXIgaW52S2V5U2NoZWR1bGUgPSBbXVxuICBmb3IgKHZhciBpayA9IDA7IGlrIDwga3NSb3dzOyBpaysrKSB7XG4gICAgdmFyIGtzUiA9IGtzUm93cyAtIGlrXG4gICAgdmFyIHR0ID0ga2V5U2NoZWR1bGVba3NSIC0gKGlrICUgNCA/IDAgOiA0KV1cblxuICAgIGlmIChpayA8IDQgfHwga3NSIDw9IDQpIHtcbiAgICAgIGludktleVNjaGVkdWxlW2lrXSA9IHR0XG4gICAgfSBlbHNlIHtcbiAgICAgIGludktleVNjaGVkdWxlW2lrXSA9XG4gICAgICAgIEcuSU5WX1NVQl9NSVhbMF1bRy5TQk9YW3R0ID4+PiAyNF1dIF5cbiAgICAgICAgRy5JTlZfU1VCX01JWFsxXVtHLlNCT1hbKHR0ID4+PiAxNikgJiAweGZmXV0gXlxuICAgICAgICBHLklOVl9TVUJfTUlYWzJdW0cuU0JPWFsodHQgPj4+IDgpICYgMHhmZl1dIF5cbiAgICAgICAgRy5JTlZfU1VCX01JWFszXVtHLlNCT1hbdHQgJiAweGZmXV1cbiAgICB9XG4gIH1cblxuICB0aGlzLl9uUm91bmRzID0gblJvdW5kc1xuICB0aGlzLl9rZXlTY2hlZHVsZSA9IGtleVNjaGVkdWxlXG4gIHRoaXMuX2ludktleVNjaGVkdWxlID0gaW52S2V5U2NoZWR1bGVcbn1cblxuQUVTLnByb3RvdHlwZS5lbmNyeXB0QmxvY2tSYXcgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYXNVSW50MzJBcnJheShNKVxuICByZXR1cm4gY3J5cHRCbG9jayhNLCB0aGlzLl9rZXlTY2hlZHVsZSwgRy5TVUJfTUlYLCBHLlNCT1gsIHRoaXMuX25Sb3VuZHMpXG59XG5cbkFFUy5wcm90b3R5cGUuZW5jcnlwdEJsb2NrID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIG91dCA9IHRoaXMuZW5jcnlwdEJsb2NrUmF3KE0pXG4gIHZhciBidWYgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMTYpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFswXSwgMClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCA0KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMl0sIDgpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFszXSwgMTIpXG4gIHJldHVybiBidWZcbn1cblxuQUVTLnByb3RvdHlwZS5kZWNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYXNVSW50MzJBcnJheShNKVxuXG4gIC8vIHN3YXBcbiAgdmFyIG0xID0gTVsxXVxuICBNWzFdID0gTVszXVxuICBNWzNdID0gbTFcblxuICB2YXIgb3V0ID0gY3J5cHRCbG9jayhNLCB0aGlzLl9pbnZLZXlTY2hlZHVsZSwgRy5JTlZfU1VCX01JWCwgRy5JTlZfU0JPWCwgdGhpcy5fblJvdW5kcylcbiAgdmFyIGJ1ZiA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgxNilcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzBdLCAwKVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDQpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsyXSwgOClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCAxMilcbiAgcmV0dXJuIGJ1ZlxufVxuXG5BRVMucHJvdG90eXBlLnNjcnViID0gZnVuY3Rpb24gKCkge1xuICBzY3J1YlZlYyh0aGlzLl9rZXlTY2hlZHVsZSlcbiAgc2NydWJWZWModGhpcy5faW52S2V5U2NoZWR1bGUpXG4gIHNjcnViVmVjKHRoaXMuX2tleSlcbn1cblxubW9kdWxlLmV4cG9ydHMuQUVTID0gQUVTXG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEdIQVNIID0gcmVxdWlyZSgnLi9naGFzaCcpXG52YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG52YXIgaW5jcjMyID0gcmVxdWlyZSgnLi9pbmNyMzInKVxuXG5mdW5jdGlvbiB4b3JUZXN0IChhLCBiKSB7XG4gIHZhciBvdXQgPSAwXG4gIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIG91dCsrXG5cbiAgdmFyIGxlbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIG91dCArPSAoYVtpXSBeIGJbaV0pXG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIGNhbGNJdiAoc2VsZiwgaXYsIGNrKSB7XG4gIGlmIChpdi5sZW5ndGggPT09IDEyKSB7XG4gICAgc2VsZi5fZmluSUQgPSBCdWZmZXIuY29uY2F0KFtpdiwgQnVmZmVyLmZyb20oWzAsIDAsIDAsIDFdKV0pXG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW2l2LCBCdWZmZXIuZnJvbShbMCwgMCwgMCwgMl0pXSlcbiAgfVxuICB2YXIgZ2hhc2ggPSBuZXcgR0hBU0goY2spXG4gIHZhciBsZW4gPSBpdi5sZW5ndGhcbiAgdmFyIHRvUGFkID0gbGVuICUgMTZcbiAgZ2hhc2gudXBkYXRlKGl2KVxuICBpZiAodG9QYWQpIHtcbiAgICB0b1BhZCA9IDE2IC0gdG9QYWRcbiAgICBnaGFzaC51cGRhdGUoQnVmZmVyLmFsbG9jKHRvUGFkLCAwKSlcbiAgfVxuICBnaGFzaC51cGRhdGUoQnVmZmVyLmFsbG9jKDgsIDApKVxuICB2YXIgaXZCaXRzID0gbGVuICogOFxuICB2YXIgdGFpbCA9IEJ1ZmZlci5hbGxvYyg4KVxuICB0YWlsLndyaXRlVUludEJFKGl2Qml0cywgMCwgOClcbiAgZ2hhc2gudXBkYXRlKHRhaWwpXG4gIHNlbGYuX2ZpbklEID0gZ2hhc2guc3RhdGVcbiAgdmFyIG91dCA9IEJ1ZmZlci5mcm9tKHNlbGYuX2ZpbklEKVxuICBpbmNyMzIob3V0KVxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBTdHJlYW1DaXBoZXIgKG1vZGUsIGtleSwgaXYsIGRlY3J5cHQpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcblxuICB2YXIgaCA9IEJ1ZmZlci5hbGxvYyg0LCAwKVxuXG4gIHRoaXMuX2NpcGhlciA9IG5ldyBhZXMuQUVTKGtleSlcbiAgdmFyIGNrID0gdGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayhoKVxuICB0aGlzLl9naGFzaCA9IG5ldyBHSEFTSChjaylcbiAgaXYgPSBjYWxjSXYodGhpcywgaXYsIGNrKVxuXG4gIHRoaXMuX3ByZXYgPSBCdWZmZXIuZnJvbShpdilcbiAgdGhpcy5fY2FjaGUgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbiAgdGhpcy5fc2VjQ2FjaGUgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbiAgdGhpcy5fZGVjcnlwdCA9IGRlY3J5cHRcbiAgdGhpcy5fYWxlbiA9IDBcbiAgdGhpcy5fbGVuID0gMFxuICB0aGlzLl9tb2RlID0gbW9kZVxuXG4gIHRoaXMuX2F1dGhUYWcgPSBudWxsXG4gIHRoaXMuX2NhbGxlZCA9IGZhbHNlXG59XG5cbmluaGVyaXRzKFN0cmVhbUNpcGhlciwgVHJhbnNmb3JtKVxuXG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgaWYgKCF0aGlzLl9jYWxsZWQgJiYgdGhpcy5fYWxlbikge1xuICAgIHZhciBydW1wID0gMTYgLSAodGhpcy5fYWxlbiAlIDE2KVxuICAgIGlmIChydW1wIDwgMTYpIHtcbiAgICAgIHJ1bXAgPSBCdWZmZXIuYWxsb2MocnVtcCwgMClcbiAgICAgIHRoaXMuX2doYXNoLnVwZGF0ZShydW1wKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuX2NhbGxlZCA9IHRydWVcbiAgdmFyIG91dCA9IHRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLCBjaHVuaylcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUoY2h1bmspXG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fZ2hhc2gudXBkYXRlKG91dClcbiAgfVxuICB0aGlzLl9sZW4gKz0gY2h1bmsubGVuZ3RoXG4gIHJldHVybiBvdXRcbn1cblxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLl9kZWNyeXB0ICYmICF0aGlzLl9hdXRoVGFnKSB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YScpXG5cbiAgdmFyIHRhZyA9IHhvcih0aGlzLl9naGFzaC5maW5hbCh0aGlzLl9hbGVuICogOCwgdGhpcy5fbGVuICogOCksIHRoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2sodGhpcy5fZmluSUQpKVxuICBpZiAodGhpcy5fZGVjcnlwdCAmJiB4b3JUZXN0KHRhZywgdGhpcy5fYXV0aFRhZykpIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgc3RhdGUgb3IgdW5hYmxlIHRvIGF1dGhlbnRpY2F0ZSBkYXRhJylcblxuICB0aGlzLl9hdXRoVGFnID0gdGFnXG4gIHRoaXMuX2NpcGhlci5zY3J1YigpXG59XG5cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuZ2V0QXV0aFRhZyA9IGZ1bmN0aW9uIGdldEF1dGhUYWcgKCkge1xuICBpZiAodGhpcy5fZGVjcnlwdCB8fCAhQnVmZmVyLmlzQnVmZmVyKHRoaXMuX2F1dGhUYWcpKSB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcblxuICByZXR1cm4gdGhpcy5fYXV0aFRhZ1xufVxuXG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLnNldEF1dGhUYWcgPSBmdW5jdGlvbiBzZXRBdXRoVGFnICh0YWcpIHtcbiAgaWYgKCF0aGlzLl9kZWNyeXB0KSB0aHJvdyBuZXcgRXJyb3IoJ0F0dGVtcHRpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcblxuICB0aGlzLl9hdXRoVGFnID0gdGFnXG59XG5cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuc2V0QUFEID0gZnVuY3Rpb24gc2V0QUFEIChidWYpIHtcbiAgaWYgKHRoaXMuX2NhbGxlZCkgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIHNldCBBQUQgaW4gdW5zdXBwb3J0ZWQgc3RhdGUnKVxuXG4gIHRoaXMuX2doYXNoLnVwZGF0ZShidWYpXG4gIHRoaXMuX2FsZW4gKz0gYnVmLmxlbmd0aFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0cmVhbUNpcGhlclxuIiwidmFyIGNpcGhlcnMgPSByZXF1aXJlKCcuL2VuY3J5cHRlcicpXG52YXIgZGVjaXBoZXJzID0gcmVxdWlyZSgnLi9kZWNyeXB0ZXInKVxudmFyIG1vZGVzID0gcmVxdWlyZSgnLi9tb2Rlcy9saXN0Lmpzb24nKVxuXG5mdW5jdGlvbiBnZXRDaXBoZXJzICgpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1vZGVzKVxufVxuXG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGV4cG9ydHMuQ2lwaGVyID0gY2lwaGVycy5jcmVhdGVDaXBoZXJcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyaXYgPSBleHBvcnRzLkNpcGhlcml2ID0gY2lwaGVycy5jcmVhdGVDaXBoZXJpdlxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlciA9IGV4cG9ydHMuRGVjaXBoZXIgPSBkZWNpcGhlcnMuY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXJpdiA9IGV4cG9ydHMuRGVjaXBoZXJpdiA9IGRlY2lwaGVycy5jcmVhdGVEZWNpcGhlcml2XG5leHBvcnRzLmxpc3RDaXBoZXJzID0gZXhwb3J0cy5nZXRDaXBoZXJzID0gZ2V0Q2lwaGVyc1xuIiwidmFyIEF1dGhDaXBoZXIgPSByZXF1aXJlKCcuL2F1dGhDaXBoZXInKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgTU9ERVMgPSByZXF1aXJlKCcuL21vZGVzJylcbnZhciBTdHJlYW1DaXBoZXIgPSByZXF1aXJlKCcuL3N0cmVhbUNpcGhlcicpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGFlcyA9IHJlcXVpcmUoJy4vYWVzJylcbnZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5mdW5jdGlvbiBEZWNpcGhlciAobW9kZSwga2V5LCBpdikge1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuXG4gIHRoaXMuX2NhY2hlID0gbmV3IFNwbGl0dGVyKClcbiAgdGhpcy5fbGFzdCA9IHZvaWQgMFxuICB0aGlzLl9jaXBoZXIgPSBuZXcgYWVzLkFFUyhrZXkpXG4gIHRoaXMuX3ByZXYgPSBCdWZmZXIuZnJvbShpdilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5cbmluaGVyaXRzKERlY2lwaGVyLCBUcmFuc2Zvcm0pXG5cbkRlY2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgdGhpcy5fY2FjaGUuYWRkKGRhdGEpXG4gIHZhciBjaHVua1xuICB2YXIgdGhpbmdcbiAgdmFyIG91dCA9IFtdXG4gIHdoaWxlICgoY2h1bmsgPSB0aGlzLl9jYWNoZS5nZXQodGhpcy5fYXV0b3BhZGRpbmcpKSkge1xuICAgIHRoaW5nID0gdGhpcy5fbW9kZS5kZWNyeXB0KHRoaXMsIGNodW5rKVxuICAgIG91dC5wdXNoKHRoaW5nKVxuICB9XG4gIHJldHVybiBCdWZmZXIuY29uY2F0KG91dClcbn1cblxuRGVjaXBoZXIucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNodW5rID0gdGhpcy5fY2FjaGUuZmx1c2goKVxuICBpZiAodGhpcy5fYXV0b3BhZGRpbmcpIHtcbiAgICByZXR1cm4gdW5wYWQodGhpcy5fbW9kZS5kZWNyeXB0KHRoaXMsIGNodW5rKSlcbiAgfSBlbHNlIGlmIChjaHVuaykge1xuICAgIHRocm93IG5ldyBFcnJvcignZGF0YSBub3QgbXVsdGlwbGUgb2YgYmxvY2sgbGVuZ3RoJylcbiAgfVxufVxuXG5EZWNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIFNwbGl0dGVyICgpIHtcbiAgdGhpcy5jYWNoZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxufVxuXG5TcGxpdHRlci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgdGhpcy5jYWNoZSA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuY2FjaGUsIGRhdGFdKVxufVxuXG5TcGxpdHRlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGF1dG9QYWRkaW5nKSB7XG4gIHZhciBvdXRcbiAgaWYgKGF1dG9QYWRkaW5nKSB7XG4gICAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoID4gMTYpIHtcbiAgICAgIG91dCA9IHRoaXMuY2FjaGUuc2xpY2UoMCwgMTYpXG4gICAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICAgIHJldHVybiBvdXRcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoID49IDE2KSB7XG4gICAgICBvdXQgPSB0aGlzLmNhY2hlLnNsaWNlKDAsIDE2KVxuICAgICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGUuc2xpY2UoMTYpXG4gICAgICByZXR1cm4gb3V0XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5jYWNoZS5sZW5ndGgpIHJldHVybiB0aGlzLmNhY2hlXG59XG5cbmZ1bmN0aW9uIHVucGFkIChsYXN0KSB7XG4gIHZhciBwYWRkZWQgPSBsYXN0WzE1XVxuICBpZiAocGFkZGVkIDwgMSB8fCBwYWRkZWQgPiAxNikge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIGRlY3J5cHQgZGF0YScpXG4gIH1cbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgcGFkZGVkKSB7XG4gICAgaWYgKGxhc3RbKGkgKyAoMTYgLSBwYWRkZWQpKV0gIT09IHBhZGRlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmFibGUgdG8gZGVjcnlwdCBkYXRhJylcbiAgICB9XG4gIH1cbiAgaWYgKHBhZGRlZCA9PT0gMTYpIHJldHVyblxuXG4gIHJldHVybiBsYXN0LnNsaWNlKDAsIDE2IC0gcGFkZGVkKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWNpcGhlcml2IChzdWl0ZSwgcGFzc3dvcmQsIGl2KSB7XG4gIHZhciBjb25maWcgPSBNT0RFU1tzdWl0ZS50b0xvd2VyQ2FzZSgpXVxuICBpZiAoIWNvbmZpZykgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcblxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykgaXYgPSBCdWZmZXIuZnJvbShpdilcbiAgaWYgKGNvbmZpZy5tb2RlICE9PSAnR0NNJyAmJiBpdi5sZW5ndGggIT09IGNvbmZpZy5pdikgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBpdiBsZW5ndGggJyArIGl2Lmxlbmd0aClcblxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykgcGFzc3dvcmQgPSBCdWZmZXIuZnJvbShwYXNzd29yZClcbiAgaWYgKHBhc3N3b3JkLmxlbmd0aCAhPT0gY29uZmlnLmtleSAvIDgpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuXG4gIGlmIChjb25maWcudHlwZSA9PT0gJ3N0cmVhbScpIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbUNpcGhlcihjb25maWcubW9kdWxlLCBwYXNzd29yZCwgaXYsIHRydWUpXG4gIH0gZWxzZSBpZiAoY29uZmlnLnR5cGUgPT09ICdhdXRoJykge1xuICAgIHJldHVybiBuZXcgQXV0aENpcGhlcihjb25maWcubW9kdWxlLCBwYXNzd29yZCwgaXYsIHRydWUpXG4gIH1cblxuICByZXR1cm4gbmV3IERlY2lwaGVyKGNvbmZpZy5tb2R1bGUsIHBhc3N3b3JkLCBpdilcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gTU9ERVNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG5cbiAgdmFyIGtleXMgPSBlYnRrKHBhc3N3b3JkLCBmYWxzZSwgY29uZmlnLmtleSwgY29uZmlnLml2KVxuICByZXR1cm4gY3JlYXRlRGVjaXBoZXJpdihzdWl0ZSwga2V5cy5rZXksIGtleXMuaXYpXG59XG5cbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBjcmVhdGVEZWNpcGhlclxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlcml2ID0gY3JlYXRlRGVjaXBoZXJpdlxuIiwidmFyIE1PREVTID0gcmVxdWlyZSgnLi9tb2RlcycpXG52YXIgQXV0aENpcGhlciA9IHJlcXVpcmUoJy4vYXV0aENpcGhlcicpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBTdHJlYW1DaXBoZXIgPSByZXF1aXJlKCcuL3N0cmVhbUNpcGhlcicpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGFlcyA9IHJlcXVpcmUoJy4vYWVzJylcbnZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5mdW5jdGlvbiBDaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcblxuICB0aGlzLl9jYWNoZSA9IG5ldyBTcGxpdHRlcigpXG4gIHRoaXMuX2NpcGhlciA9IG5ldyBhZXMuQUVTKGtleSlcbiAgdGhpcy5fcHJldiA9IEJ1ZmZlci5mcm9tKGl2KVxuICB0aGlzLl9tb2RlID0gbW9kZVxuICB0aGlzLl9hdXRvcGFkZGluZyA9IHRydWVcbn1cblxuaW5oZXJpdHMoQ2lwaGVyLCBUcmFuc2Zvcm0pXG5cbkNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2NhY2hlLmFkZChkYXRhKVxuICB2YXIgY2h1bmtcbiAgdmFyIHRoaW5nXG4gIHZhciBvdXQgPSBbXVxuXG4gIHdoaWxlICgoY2h1bmsgPSB0aGlzLl9jYWNoZS5nZXQoKSkpIHtcbiAgICB0aGluZyA9IHRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLCBjaHVuaylcbiAgICBvdXQucHVzaCh0aGluZylcbiAgfVxuXG4gIHJldHVybiBCdWZmZXIuY29uY2F0KG91dClcbn1cblxudmFyIFBBRERJTkcgPSBCdWZmZXIuYWxsb2MoMTYsIDB4MTApXG5cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIGNodW5rID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIHRoaXMuX2NpcGhlci5zY3J1YigpXG4gICAgcmV0dXJuIGNodW5rXG4gIH1cblxuICBpZiAoIWNodW5rLmVxdWFscyhQQURESU5HKSkge1xuICAgIHRoaXMuX2NpcGhlci5zY3J1YigpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGgnKVxuICB9XG59XG5cbkNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIFNwbGl0dGVyICgpIHtcbiAgdGhpcy5jYWNoZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxufVxuXG5TcGxpdHRlci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgdGhpcy5jYWNoZSA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuY2FjaGUsIGRhdGFdKVxufVxuXG5TcGxpdHRlci5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPiAxNSkge1xuICAgIHZhciBvdXQgPSB0aGlzLmNhY2hlLnNsaWNlKDAsIDE2KVxuICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgIHJldHVybiBvdXRcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG5TcGxpdHRlci5wcm90b3R5cGUuZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBsZW4gPSAxNiAtIHRoaXMuY2FjaGUubGVuZ3RoXG4gIHZhciBwYWRCdWZmID0gQnVmZmVyLmFsbG9jVW5zYWZlKGxlbilcblxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBwYWRCdWZmLndyaXRlVUludDgobGVuLCBpKVxuICB9XG5cbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW3RoaXMuY2FjaGUsIHBhZEJ1ZmZdKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDaXBoZXJpdiAoc3VpdGUsIHBhc3N3b3JkLCBpdikge1xuICB2YXIgY29uZmlnID0gTU9ERVNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG5cbiAgaWYgKHR5cGVvZiBwYXNzd29yZCA9PT0gJ3N0cmluZycpIHBhc3N3b3JkID0gQnVmZmVyLmZyb20ocGFzc3dvcmQpXG4gIGlmIChwYXNzd29yZC5sZW5ndGggIT09IGNvbmZpZy5rZXkgLyA4KSB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIGtleSBsZW5ndGggJyArIHBhc3N3b3JkLmxlbmd0aClcblxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykgaXYgPSBCdWZmZXIuZnJvbShpdilcbiAgaWYgKGNvbmZpZy5tb2RlICE9PSAnR0NNJyAmJiBpdi5sZW5ndGggIT09IGNvbmZpZy5pdikgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBpdiBsZW5ndGggJyArIGl2Lmxlbmd0aClcblxuICBpZiAoY29uZmlnLnR5cGUgPT09ICdzdHJlYW0nKSB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW1DaXBoZXIoY29uZmlnLm1vZHVsZSwgcGFzc3dvcmQsIGl2KVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIoY29uZmlnLm1vZHVsZSwgcGFzc3dvcmQsIGl2KVxuICB9XG5cbiAgcmV0dXJuIG5ldyBDaXBoZXIoY29uZmlnLm1vZHVsZSwgcGFzc3dvcmQsIGl2KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gTU9ERVNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG5cbiAgdmFyIGtleXMgPSBlYnRrKHBhc3N3b3JkLCBmYWxzZSwgY29uZmlnLmtleSwgY29uZmlnLml2KVxuICByZXR1cm4gY3JlYXRlQ2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuXG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyID0gY3JlYXRlQ2lwaGVyXG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBaRVJPRVMgPSBCdWZmZXIuYWxsb2MoMTYsIDApXG5cbmZ1bmN0aW9uIHRvQXJyYXkgKGJ1Zikge1xuICByZXR1cm4gW1xuICAgIGJ1Zi5yZWFkVUludDMyQkUoMCksXG4gICAgYnVmLnJlYWRVSW50MzJCRSg0KSxcbiAgICBidWYucmVhZFVJbnQzMkJFKDgpLFxuICAgIGJ1Zi5yZWFkVUludDMyQkUoMTIpXG4gIF1cbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5IChvdXQpIHtcbiAgdmFyIGJ1ZiA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgxNilcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzBdID4+PiAwLCAwKVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMV0gPj4+IDAsIDQpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsyXSA+Pj4gMCwgOClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzNdID4+PiAwLCAxMilcbiAgcmV0dXJuIGJ1ZlxufVxuXG5mdW5jdGlvbiBHSEFTSCAoa2V5KSB7XG4gIHRoaXMuaCA9IGtleVxuICB0aGlzLnN0YXRlID0gQnVmZmVyLmFsbG9jKDE2LCAwKVxuICB0aGlzLmNhY2hlID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApXG59XG5cbi8vIGZyb20gaHR0cDovL2JpdHdpc2VzaGlmdGxlZnQuZ2l0aHViLmlvL3NqY2wvZG9jL3N5bWJvbHMvc3JjL2NvcmVfZ2NtLmpzLmh0bWxcbi8vIGJ5IEp1aG8gVsOkaMOkLUhlcnR0dWFcbkdIQVNILnByb3RvdHlwZS5naGFzaCA9IGZ1bmN0aW9uIChibG9jaykge1xuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBibG9jay5sZW5ndGgpIHtcbiAgICB0aGlzLnN0YXRlW2ldIF49IGJsb2NrW2ldXG4gIH1cbiAgdGhpcy5fbXVsdGlwbHkoKVxufVxuXG5HSEFTSC5wcm90b3R5cGUuX211bHRpcGx5ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgVmkgPSB0b0FycmF5KHRoaXMuaClcbiAgdmFyIFppID0gWzAsIDAsIDAsIDBdXG4gIHZhciBqLCB4aSwgbHNiVmlcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgMTI4KSB7XG4gICAgeGkgPSAodGhpcy5zdGF0ZVt+fihpIC8gOCldICYgKDEgPDwgKDcgLSAoaSAlIDgpKSkpICE9PSAwXG4gICAgaWYgKHhpKSB7XG4gICAgICAvLyBaX2krMSA9IFpfaSBeIFZfaVxuICAgICAgWmlbMF0gXj0gVmlbMF1cbiAgICAgIFppWzFdIF49IFZpWzFdXG4gICAgICBaaVsyXSBePSBWaVsyXVxuICAgICAgWmlbM10gXj0gVmlbM11cbiAgICB9XG5cbiAgICAvLyBTdG9yZSB0aGUgdmFsdWUgb2YgTFNCKFZfaSlcbiAgICBsc2JWaSA9IChWaVszXSAmIDEpICE9PSAwXG5cbiAgICAvLyBWX2krMSA9IFZfaSA+PiAxXG4gICAgZm9yIChqID0gMzsgaiA+IDA7IGotLSkge1xuICAgICAgVmlbal0gPSAoVmlbal0gPj4+IDEpIHwgKChWaVtqIC0gMV0gJiAxKSA8PCAzMSlcbiAgICB9XG4gICAgVmlbMF0gPSBWaVswXSA+Pj4gMVxuXG4gICAgLy8gSWYgTFNCKFZfaSkgaXMgMSwgVl9pKzEgPSAoVl9pID4+IDEpIF4gUlxuICAgIGlmIChsc2JWaSkge1xuICAgICAgVmlbMF0gPSBWaVswXSBeICgweGUxIDw8IDI0KVxuICAgIH1cbiAgfVxuICB0aGlzLnN0YXRlID0gZnJvbUFycmF5KFppKVxufVxuXG5HSEFTSC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGJ1Zikge1xuICB0aGlzLmNhY2hlID0gQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgYnVmXSlcbiAgdmFyIGNodW5rXG4gIHdoaWxlICh0aGlzLmNhY2hlLmxlbmd0aCA+PSAxNikge1xuICAgIGNodW5rID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICB0aGlzLmdoYXNoKGNodW5rKVxuICB9XG59XG5cbkdIQVNILnByb3RvdHlwZS5maW5hbCA9IGZ1bmN0aW9uIChhYmwsIGJsKSB7XG4gIGlmICh0aGlzLmNhY2hlLmxlbmd0aCkge1xuICAgIHRoaXMuZ2hhc2goQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgWkVST0VTXSwgMTYpKVxuICB9XG5cbiAgdGhpcy5naGFzaChmcm9tQXJyYXkoWzAsIGFibCwgMCwgYmxdKSlcbiAgcmV0dXJuIHRoaXMuc3RhdGVcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBHSEFTSFxuIiwiZnVuY3Rpb24gaW5jcjMyIChpdikge1xuICB2YXIgbGVuID0gaXYubGVuZ3RoXG4gIHZhciBpdGVtXG4gIHdoaWxlIChsZW4tLSkge1xuICAgIGl0ZW0gPSBpdi5yZWFkVUludDgobGVuKVxuICAgIGlmIChpdGVtID09PSAyNTUpIHtcbiAgICAgIGl2LndyaXRlVUludDgoMCwgbGVuKVxuICAgIH0gZWxzZSB7XG4gICAgICBpdGVtKytcbiAgICAgIGl2LndyaXRlVUludDgoaXRlbSwgbGVuKVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gaW5jcjMyXG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBibG9jaykge1xuICB2YXIgZGF0YSA9IHhvcihibG9jaywgc2VsZi5fcHJldilcblxuICBzZWxmLl9wcmV2ID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhkYXRhKVxuICByZXR1cm4gc2VsZi5fcHJldlxufVxuXG5leHBvcnRzLmRlY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgdmFyIHBhZCA9IHNlbGYuX3ByZXZcblxuICBzZWxmLl9wcmV2ID0gYmxvY2tcbiAgdmFyIG91dCA9IHNlbGYuX2NpcGhlci5kZWNyeXB0QmxvY2soYmxvY2spXG5cbiAgcmV0dXJuIHhvcihvdXQsIHBhZClcbn1cbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxuXG5mdW5jdGlvbiBlbmNyeXB0U3RhcnQgKHNlbGYsIGRhdGEsIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGRhdGEubGVuZ3RoXG4gIHZhciBvdXQgPSB4b3IoZGF0YSwgc2VsZi5fY2FjaGUpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UobGVuKVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldiwgZGVjcnlwdCA/IGRhdGEgOiBvdXRdKVxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBkYXRhLCBkZWNyeXB0KSB7XG4gIHZhciBvdXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbiAgdmFyIGxlblxuXG4gIHdoaWxlIChkYXRhLmxlbmd0aCkge1xuICAgIGlmIChzZWxmLl9jYWNoZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHNlbGYuX2NhY2hlID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgICAgc2VsZi5fcHJldiA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxuICAgIH1cblxuICAgIGlmIChzZWxmLl9jYWNoZS5sZW5ndGggPD0gZGF0YS5sZW5ndGgpIHtcbiAgICAgIGxlbiA9IHNlbGYuX2NhY2hlLmxlbmd0aFxuICAgICAgb3V0ID0gQnVmZmVyLmNvbmNhdChbb3V0LCBlbmNyeXB0U3RhcnQoc2VsZiwgZGF0YS5zbGljZSgwLCBsZW4pLCBkZWNyeXB0KV0pXG4gICAgICBkYXRhID0gZGF0YS5zbGljZShsZW4pXG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCA9IEJ1ZmZlci5jb25jYXQoW291dCwgZW5jcnlwdFN0YXJ0KHNlbGYsIGRhdGEsIGRlY3J5cHQpXSlcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG91dFxufVxuIiwidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbmZ1bmN0aW9uIGVuY3J5cHRCeXRlIChzZWxmLCBieXRlUGFyYW0sIGRlY3J5cHQpIHtcbiAgdmFyIHBhZFxuICB2YXIgaSA9IC0xXG4gIHZhciBsZW4gPSA4XG4gIHZhciBvdXQgPSAwXG4gIHZhciBiaXQsIHZhbHVlXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBwYWQgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gICAgYml0ID0gKGJ5dGVQYXJhbSAmICgxIDw8ICg3IC0gaSkpKSA/IDB4ODAgOiAwXG4gICAgdmFsdWUgPSBwYWRbMF0gXiBiaXRcbiAgICBvdXQgKz0gKCh2YWx1ZSAmIDB4ODApID4+IChpICUgOCkpXG4gICAgc2VsZi5fcHJldiA9IHNoaWZ0SW4oc2VsZi5fcHJldiwgZGVjcnlwdCA/IGJpdCA6IHZhbHVlKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gc2hpZnRJbiAoYnVmZmVyLCB2YWx1ZSkge1xuICB2YXIgbGVuID0gYnVmZmVyLmxlbmd0aFxuICB2YXIgaSA9IC0xXG4gIHZhciBvdXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYnVmZmVyLmxlbmd0aClcbiAgYnVmZmVyID0gQnVmZmVyLmNvbmNhdChbYnVmZmVyLCBCdWZmZXIuZnJvbShbdmFsdWVdKV0pXG5cbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIG91dFtpXSA9IGJ1ZmZlcltpXSA8PCAxIHwgYnVmZmVyW2kgKyAxXSA+PiAoNylcbiAgfVxuXG4gIHJldHVybiBvdXRcbn1cblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGNodW5rLCBkZWNyeXB0KSB7XG4gIHZhciBsZW4gPSBjaHVuay5sZW5ndGhcbiAgdmFyIG91dCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW4pXG4gIHZhciBpID0gLTFcblxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gZW5jcnlwdEJ5dGUoc2VsZiwgY2h1bmtbaV0sIGRlY3J5cHQpXG4gIH1cblxuICByZXR1cm4gb3V0XG59XG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxuZnVuY3Rpb24gZW5jcnlwdEJ5dGUgKHNlbGYsIGJ5dGVQYXJhbSwgZGVjcnlwdCkge1xuICB2YXIgcGFkID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICB2YXIgb3V0ID0gcGFkWzBdIF4gYnl0ZVBhcmFtXG5cbiAgc2VsZi5fcHJldiA9IEJ1ZmZlci5jb25jYXQoW1xuICAgIHNlbGYuX3ByZXYuc2xpY2UoMSksXG4gICAgQnVmZmVyLmZyb20oW2RlY3J5cHQgPyBieXRlUGFyYW0gOiBvdXRdKVxuICBdKVxuXG4gIHJldHVybiBvdXRcbn1cblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGNodW5rLCBkZWNyeXB0KSB7XG4gIHZhciBsZW4gPSBjaHVuay5sZW5ndGhcbiAgdmFyIG91dCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW4pXG4gIHZhciBpID0gLTFcblxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gZW5jcnlwdEJ5dGUoc2VsZiwgY2h1bmtbaV0sIGRlY3J5cHQpXG4gIH1cblxuICByZXR1cm4gb3V0XG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBpbmNyMzIgPSByZXF1aXJlKCcuLi9pbmNyMzInKVxuXG5mdW5jdGlvbiBnZXRCbG9jayAoc2VsZikge1xuICB2YXIgb3V0ID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9ja1JhdyhzZWxmLl9wcmV2KVxuICBpbmNyMzIoc2VsZi5fcHJldilcbiAgcmV0dXJuIG91dFxufVxuXG52YXIgYmxvY2tTaXplID0gMTZcbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB2YXIgY2h1bmtOdW0gPSBNYXRoLmNlaWwoY2h1bmsubGVuZ3RoIC8gYmxvY2tTaXplKVxuICB2YXIgc3RhcnQgPSBzZWxmLl9jYWNoZS5sZW5ndGhcbiAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtcbiAgICBzZWxmLl9jYWNoZSxcbiAgICBCdWZmZXIuYWxsb2NVbnNhZmUoY2h1bmtOdW0gKiBibG9ja1NpemUpXG4gIF0pXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY2h1bmtOdW07IGkrKykge1xuICAgIHZhciBvdXQgPSBnZXRCbG9jayhzZWxmKVxuICAgIHZhciBvZmZzZXQgPSBzdGFydCArIGkgKiBibG9ja1NpemVcbiAgICBzZWxmLl9jYWNoZS53cml0ZVVJbnQzMkJFKG91dFswXSwgb2Zmc2V0ICsgMClcbiAgICBzZWxmLl9jYWNoZS53cml0ZVVJbnQzMkJFKG91dFsxXSwgb2Zmc2V0ICsgNClcbiAgICBzZWxmLl9jYWNoZS53cml0ZVVJbnQzMkJFKG91dFsyXSwgb2Zmc2V0ICsgOClcbiAgICBzZWxmLl9jYWNoZS53cml0ZVVJbnQzMkJFKG91dFszXSwgb2Zmc2V0ICsgMTIpXG4gIH1cbiAgdmFyIHBhZCA9IHNlbGYuX2NhY2hlLnNsaWNlKDAsIGNodW5rLmxlbmd0aClcbiAgc2VsZi5fY2FjaGUgPSBzZWxmLl9jYWNoZS5zbGljZShjaHVuay5sZW5ndGgpXG4gIHJldHVybiB4b3IoY2h1bmssIHBhZClcbn1cbiIsImV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBibG9jaykge1xuICByZXR1cm4gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhibG9jaylcbn1cblxuZXhwb3J0cy5kZWNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGJsb2NrKSB7XG4gIHJldHVybiBzZWxmLl9jaXBoZXIuZGVjcnlwdEJsb2NrKGJsb2NrKVxufVxuIiwidmFyIG1vZGVNb2R1bGVzID0ge1xuICBFQ0I6IHJlcXVpcmUoJy4vZWNiJyksXG4gIENCQzogcmVxdWlyZSgnLi9jYmMnKSxcbiAgQ0ZCOiByZXF1aXJlKCcuL2NmYicpLFxuICBDRkI4OiByZXF1aXJlKCcuL2NmYjgnKSxcbiAgQ0ZCMTogcmVxdWlyZSgnLi9jZmIxJyksXG4gIE9GQjogcmVxdWlyZSgnLi9vZmInKSxcbiAgQ1RSOiByZXF1aXJlKCcuL2N0cicpLFxuICBHQ006IHJlcXVpcmUoJy4vY3RyJylcbn1cblxudmFyIG1vZGVzID0gcmVxdWlyZSgnLi9saXN0Lmpzb24nKVxuXG5mb3IgKHZhciBrZXkgaW4gbW9kZXMpIHtcbiAgbW9kZXNba2V5XS5tb2R1bGUgPSBtb2RlTW9kdWxlc1ttb2Rlc1trZXldLm1vZGVdXG59XG5cbm1vZHVsZS5leHBvcnRzID0gbW9kZXNcbiIsInZhciB4b3IgPSByZXF1aXJlKCdidWZmZXIteG9yJylcblxuZnVuY3Rpb24gZ2V0QmxvY2sgKHNlbGYpIHtcbiAgc2VsZi5fcHJldiA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soc2VsZi5fcHJldilcbiAgcmV0dXJuIHNlbGYuX3ByZXZcbn1cblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGNodW5rKSB7XG4gIHdoaWxlIChzZWxmLl9jYWNoZS5sZW5ndGggPCBjaHVuay5sZW5ndGgpIHtcbiAgICBzZWxmLl9jYWNoZSA9IEJ1ZmZlci5jb25jYXQoW3NlbGYuX2NhY2hlLCBnZXRCbG9jayhzZWxmKV0pXG4gIH1cblxuICB2YXIgcGFkID0gc2VsZi5fY2FjaGUuc2xpY2UoMCwgY2h1bmsubGVuZ3RoKVxuICBzZWxmLl9jYWNoZSA9IHNlbGYuX2NhY2hlLnNsaWNlKGNodW5rLmxlbmd0aClcbiAgcmV0dXJuIHhvcihjaHVuaywgcGFkKVxufVxuIiwidmFyIGFlcyA9IHJlcXVpcmUoJy4vYWVzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcblxuZnVuY3Rpb24gU3RyZWFtQ2lwaGVyIChtb2RlLCBrZXksIGl2LCBkZWNyeXB0KSB7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG5cbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gQnVmZmVyLmZyb20oaXYpXG4gIHRoaXMuX2NhY2hlID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApXG4gIHRoaXMuX3NlY0NhY2hlID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApXG4gIHRoaXMuX2RlY3J5cHQgPSBkZWNyeXB0XG4gIHRoaXMuX21vZGUgPSBtb2RlXG59XG5cbmluaGVyaXRzKFN0cmVhbUNpcGhlciwgVHJhbnNmb3JtKVxuXG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgcmV0dXJuIHRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLCBjaHVuaywgdGhpcy5fZGVjcnlwdClcbn1cblxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2NpcGhlci5zY3J1YigpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG4iLCJ2YXIgREVTID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1kZXMnKVxudmFyIGFlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL2Jyb3dzZXInKVxudmFyIGFlc01vZGVzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1hZXMvbW9kZXMnKVxudmFyIGRlc01vZGVzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1kZXMvbW9kZXMnKVxudmFyIGVidGsgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG5cbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlciAoc3VpdGUsIHBhc3N3b3JkKSB7XG4gIHN1aXRlID0gc3VpdGUudG9Mb3dlckNhc2UoKVxuXG4gIHZhciBrZXlMZW4sIGl2TGVuXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0ua2V5XG4gICAgaXZMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0uaXZcbiAgfSBlbHNlIGlmIChkZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBkZXNNb2Rlc1tzdWl0ZV0ua2V5ICogOFxuICAgIGl2TGVuID0gZGVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuXG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGtleUxlbiwgaXZMZW4pXG4gIHJldHVybiBjcmVhdGVDaXBoZXJpdihzdWl0ZSwga2V5cy5rZXksIGtleXMuaXYpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG5cbiAgdmFyIGtleUxlbiwgaXZMZW5cbiAgaWYgKGFlc01vZGVzW3N1aXRlXSkge1xuICAgIGtleUxlbiA9IGFlc01vZGVzW3N1aXRlXS5rZXlcbiAgICBpdkxlbiA9IGFlc01vZGVzW3N1aXRlXS5pdlxuICB9IGVsc2UgaWYgKGRlc01vZGVzW3N1aXRlXSkge1xuICAgIGtleUxlbiA9IGRlc01vZGVzW3N1aXRlXS5rZXkgKiA4XG4gICAgaXZMZW4gPSBkZXNNb2Rlc1tzdWl0ZV0uaXZcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG5cbiAgdmFyIGtleXMgPSBlYnRrKHBhc3N3b3JkLCBmYWxzZSwga2V5TGVuLCBpdkxlbilcbiAgcmV0dXJuIGNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVDaXBoZXJpdiAoc3VpdGUsIGtleSwgaXYpIHtcbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHJldHVybiBhZXMuY3JlYXRlQ2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIGlmIChkZXNNb2Rlc1tzdWl0ZV0pIHJldHVybiBuZXcgREVTKHsga2V5OiBrZXksIGl2OiBpdiwgbW9kZTogc3VpdGUgfSlcblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWNpcGhlcml2IChzdWl0ZSwga2V5LCBpdikge1xuICBzdWl0ZSA9IHN1aXRlLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFlc01vZGVzW3N1aXRlXSkgcmV0dXJuIGFlcy5jcmVhdGVEZWNpcGhlcml2KHN1aXRlLCBrZXksIGl2KVxuICBpZiAoZGVzTW9kZXNbc3VpdGVdKSByZXR1cm4gbmV3IERFUyh7IGtleToga2V5LCBpdjogaXYsIG1vZGU6IHN1aXRlLCBkZWNyeXB0OiB0cnVlIH0pXG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbn1cblxuZnVuY3Rpb24gZ2V0Q2lwaGVycyAoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhkZXNNb2RlcykuY29uY2F0KGFlcy5nZXRDaXBoZXJzKCkpXG59XG5cbmV4cG9ydHMuY3JlYXRlQ2lwaGVyID0gZXhwb3J0cy5DaXBoZXIgPSBjcmVhdGVDaXBoZXJcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyaXYgPSBleHBvcnRzLkNpcGhlcml2ID0gY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBleHBvcnRzLkRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXJpdiA9IGV4cG9ydHMuRGVjaXBoZXJpdiA9IGNyZWF0ZURlY2lwaGVyaXZcbmV4cG9ydHMubGlzdENpcGhlcnMgPSBleHBvcnRzLmdldENpcGhlcnMgPSBnZXRDaXBoZXJzXG4iLCJ2YXIgQ2lwaGVyQmFzZSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBkZXMgPSByZXF1aXJlKCdkZXMuanMnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBtb2RlcyA9IHtcbiAgJ2Rlcy1lZGUzLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlMyc6IGRlcy5FREUsXG4gICdkZXMtZWRlLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlJzogZGVzLkVERSxcbiAgJ2Rlcy1jYmMnOiBkZXMuQ0JDLmluc3RhbnRpYXRlKGRlcy5ERVMpLFxuICAnZGVzLWVjYic6IGRlcy5ERVNcbn1cbm1vZGVzLmRlcyA9IG1vZGVzWydkZXMtY2JjJ11cbm1vZGVzLmRlczMgPSBtb2Rlc1snZGVzLWVkZTMtY2JjJ11cbm1vZHVsZS5leHBvcnRzID0gREVTXG5pbmhlcml0cyhERVMsIENpcGhlckJhc2UpXG5mdW5jdGlvbiBERVMgKG9wdHMpIHtcbiAgQ2lwaGVyQmFzZS5jYWxsKHRoaXMpXG4gIHZhciBtb2RlTmFtZSA9IG9wdHMubW9kZS50b0xvd2VyQ2FzZSgpXG4gIHZhciBtb2RlID0gbW9kZXNbbW9kZU5hbWVdXG4gIHZhciB0eXBlXG4gIGlmIChvcHRzLmRlY3J5cHQpIHtcbiAgICB0eXBlID0gJ2RlY3J5cHQnXG4gIH0gZWxzZSB7XG4gICAgdHlwZSA9ICdlbmNyeXB0J1xuICB9XG4gIHZhciBrZXkgPSBvcHRzLmtleVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihrZXkpKSB7XG4gICAga2V5ID0gQnVmZmVyLmZyb20oa2V5KVxuICB9XG4gIGlmIChtb2RlTmFtZSA9PT0gJ2Rlcy1lZGUnIHx8IG1vZGVOYW1lID09PSAnZGVzLWVkZS1jYmMnKSB7XG4gICAga2V5ID0gQnVmZmVyLmNvbmNhdChba2V5LCBrZXkuc2xpY2UoMCwgOCldKVxuICB9XG4gIHZhciBpdiA9IG9wdHMuaXZcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoaXYpKSB7XG4gICAgaXYgPSBCdWZmZXIuZnJvbShpdilcbiAgfVxuICB0aGlzLl9kZXMgPSBtb2RlLmNyZWF0ZSh7XG4gICAga2V5OiBrZXksXG4gICAgaXY6IGl2LFxuICAgIHR5cGU6IHR5cGVcbiAgfSlcbn1cbkRFUy5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbSh0aGlzLl9kZXMudXBkYXRlKGRhdGEpKVxufVxuREVTLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbSh0aGlzLl9kZXMuZmluYWwoKSlcbn1cbiIsImV4cG9ydHNbJ2Rlcy1lY2InXSA9IHtcbiAga2V5OiA4LFxuICBpdjogMFxufVxuZXhwb3J0c1snZGVzLWNiYyddID0gZXhwb3J0cy5kZXMgPSB7XG4gIGtleTogOCxcbiAgaXY6IDhcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUzLWNiYyddID0gZXhwb3J0cy5kZXMzID0ge1xuICBrZXk6IDI0LFxuICBpdjogOFxufVxuZXhwb3J0c1snZGVzLWVkZTMnXSA9IHtcbiAga2V5OiAyNCxcbiAgaXY6IDBcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUtY2JjJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiA4XG59XG5leHBvcnRzWydkZXMtZWRlJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiAwXG59XG4iLCJ2YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpXG5cbmZ1bmN0aW9uIGJsaW5kIChwcml2KSB7XG4gIHZhciByID0gZ2V0cihwcml2KVxuICB2YXIgYmxpbmRlciA9IHIudG9SZWQoQk4ubW9udChwcml2Lm1vZHVsdXMpKS5yZWRQb3cobmV3IEJOKHByaXYucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKClcbiAgcmV0dXJuIHsgYmxpbmRlcjogYmxpbmRlciwgdW5ibGluZGVyOiByLmludm0ocHJpdi5tb2R1bHVzKSB9XG59XG5cbmZ1bmN0aW9uIGdldHIgKHByaXYpIHtcbiAgdmFyIGxlbiA9IHByaXYubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgdmFyIHJcbiAgZG8ge1xuICAgIHIgPSBuZXcgQk4ocmFuZG9tQnl0ZXMobGVuKSlcbiAgfSB3aGlsZSAoci5jbXAocHJpdi5tb2R1bHVzKSA+PSAwIHx8ICFyLnVtb2QocHJpdi5wcmltZTEpIHx8ICFyLnVtb2QocHJpdi5wcmltZTIpKVxuICByZXR1cm4gclxufVxuXG5mdW5jdGlvbiBjcnQgKG1zZywgcHJpdikge1xuICB2YXIgYmxpbmRzID0gYmxpbmQocHJpdilcbiAgdmFyIGxlbiA9IHByaXYubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgdmFyIGJsaW5kZWQgPSBuZXcgQk4obXNnKS5tdWwoYmxpbmRzLmJsaW5kZXIpLnVtb2QocHJpdi5tb2R1bHVzKVxuICB2YXIgYzEgPSBibGluZGVkLnRvUmVkKEJOLm1vbnQocHJpdi5wcmltZTEpKVxuICB2YXIgYzIgPSBibGluZGVkLnRvUmVkKEJOLm1vbnQocHJpdi5wcmltZTIpKVxuICB2YXIgcWludiA9IHByaXYuY29lZmZpY2llbnRcbiAgdmFyIHAgPSBwcml2LnByaW1lMVxuICB2YXIgcSA9IHByaXYucHJpbWUyXG4gIHZhciBtMSA9IGMxLnJlZFBvdyhwcml2LmV4cG9uZW50MSkuZnJvbVJlZCgpXG4gIHZhciBtMiA9IGMyLnJlZFBvdyhwcml2LmV4cG9uZW50MikuZnJvbVJlZCgpXG4gIHZhciBoID0gbTEuaXN1YihtMikuaW11bChxaW52KS51bW9kKHApLmltdWwocSlcbiAgcmV0dXJuIG0yLmlhZGQoaCkuaW11bChibGluZHMudW5ibGluZGVyKS51bW9kKHByaXYubW9kdWx1cykudG9BcnJheUxpa2UoQnVmZmVyLCAnYmUnLCBsZW4pXG59XG5jcnQuZ2V0ciA9IGdldHJcblxubW9kdWxlLmV4cG9ydHMgPSBjcnRcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9icm93c2VyL2FsZ29yaXRobXMuanNvbicpXG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxudmFyIHN0cmVhbSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbScpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgc2lnbiA9IHJlcXVpcmUoJy4vc2lnbicpXG52YXIgdmVyaWZ5ID0gcmVxdWlyZSgnLi92ZXJpZnknKVxuXG52YXIgYWxnb3JpdGhtcyA9IHJlcXVpcmUoJy4vYWxnb3JpdGhtcy5qc29uJylcbk9iamVjdC5rZXlzKGFsZ29yaXRobXMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICBhbGdvcml0aG1zW2tleV0uaWQgPSBCdWZmZXIuZnJvbShhbGdvcml0aG1zW2tleV0uaWQsICdoZXgnKVxuICBhbGdvcml0aG1zW2tleS50b0xvd2VyQ2FzZSgpXSA9IGFsZ29yaXRobXNba2V5XVxufSlcblxuZnVuY3Rpb24gU2lnbiAoYWxnb3JpdGhtKSB7XG4gIHN0cmVhbS5Xcml0YWJsZS5jYWxsKHRoaXMpXG5cbiAgdmFyIGRhdGEgPSBhbGdvcml0aG1zW2FsZ29yaXRobV1cbiAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2hUeXBlID0gZGF0YS5oYXNoXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGRhdGEuaGFzaClcbiAgdGhpcy5fdGFnID0gZGF0YS5pZFxuICB0aGlzLl9zaWduVHlwZSA9IGRhdGEuc2lnblxufVxuaW5oZXJpdHMoU2lnbiwgc3RyZWFtLldyaXRhYmxlKVxuXG5TaWduLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiBfd3JpdGUgKGRhdGEsIF8sIGRvbmUpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgZG9uZSgpXG59XG5cblNpZ24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoZGF0YSwgZW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBlbmMpXG5cbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgcmV0dXJuIHRoaXNcbn1cblxuU2lnbi5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ25NZXRob2QgKGtleSwgZW5jKSB7XG4gIHRoaXMuZW5kKClcbiAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoLmRpZ2VzdCgpXG4gIHZhciBzaWcgPSBzaWduKGhhc2gsIGtleSwgdGhpcy5faGFzaFR5cGUsIHRoaXMuX3NpZ25UeXBlLCB0aGlzLl90YWcpXG5cbiAgcmV0dXJuIGVuYyA/IHNpZy50b1N0cmluZyhlbmMpIDogc2lnXG59XG5cbmZ1bmN0aW9uIFZlcmlmeSAoYWxnb3JpdGhtKSB7XG4gIHN0cmVhbS5Xcml0YWJsZS5jYWxsKHRoaXMpXG5cbiAgdmFyIGRhdGEgPSBhbGdvcml0aG1zW2FsZ29yaXRobV1cbiAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGRhdGEuaGFzaClcbiAgdGhpcy5fdGFnID0gZGF0YS5pZFxuICB0aGlzLl9zaWduVHlwZSA9IGRhdGEuc2lnblxufVxuaW5oZXJpdHMoVmVyaWZ5LCBzdHJlYW0uV3JpdGFibGUpXG5cblZlcmlmeS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gX3dyaXRlIChkYXRhLCBfLCBkb25lKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG4gIGRvbmUoKVxufVxuXG5WZXJpZnkucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoZGF0YSwgZW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBlbmMpXG5cbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgcmV0dXJuIHRoaXNcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnlNZXRob2QgKGtleSwgc2lnLCBlbmMpIHtcbiAgaWYgKHR5cGVvZiBzaWcgPT09ICdzdHJpbmcnKSBzaWcgPSBCdWZmZXIuZnJvbShzaWcsIGVuYylcblxuICB0aGlzLmVuZCgpXG4gIHZhciBoYXNoID0gdGhpcy5faGFzaC5kaWdlc3QoKVxuICByZXR1cm4gdmVyaWZ5KHNpZywgaGFzaCwga2V5LCB0aGlzLl9zaWduVHlwZSwgdGhpcy5fdGFnKVxufVxuXG5mdW5jdGlvbiBjcmVhdGVTaWduIChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBTaWduKGFsZ29yaXRobSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlVmVyaWZ5IChhbGdvcml0aG0pIHtcbiAgcmV0dXJuIG5ldyBWZXJpZnkoYWxnb3JpdGhtKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgU2lnbjogY3JlYXRlU2lnbixcbiAgVmVyaWZ5OiBjcmVhdGVWZXJpZnksXG4gIGNyZWF0ZVNpZ246IGNyZWF0ZVNpZ24sXG4gIGNyZWF0ZVZlcmlmeTogY3JlYXRlVmVyaWZ5XG59XG4iLCIvLyBtdWNoIG9mIHRoaXMgYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvc2VsZi1zaWduZWQvYmxvYi9naC1wYWdlcy9saWIvcnNhLmpzXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBjcmVhdGVIbWFjID0gcmVxdWlyZSgnY3JlYXRlLWhtYWMnKVxudmFyIGNydCA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktcnNhJylcbnZhciBFQyA9IHJlcXVpcmUoJ2VsbGlwdGljJykuZWNcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJylcbnZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJylcbnZhciBjdXJ2ZXMgPSByZXF1aXJlKCcuL2N1cnZlcy5qc29uJylcblxuZnVuY3Rpb24gc2lnbiAoaGFzaCwga2V5LCBoYXNoVHlwZSwgc2lnblR5cGUsIHRhZykge1xuICB2YXIgcHJpdiA9IHBhcnNlS2V5cyhrZXkpXG4gIGlmIChwcml2LmN1cnZlKSB7XG4gICAgLy8gcnNhIGtleXMgY2FuIGJlIGludGVycHJldGVkIGFzIGVjZHNhIG9uZXMgaW4gb3BlbnNzbFxuICAgIGlmIChzaWduVHlwZSAhPT0gJ2VjZHNhJyAmJiBzaWduVHlwZSAhPT0gJ2VjZHNhL3JzYScpIHRocm93IG5ldyBFcnJvcignd3JvbmcgcHJpdmF0ZSBrZXkgdHlwZScpXG4gICAgcmV0dXJuIGVjU2lnbihoYXNoLCBwcml2KVxuICB9IGVsc2UgaWYgKHByaXYudHlwZSA9PT0gJ2RzYScpIHtcbiAgICBpZiAoc2lnblR5cGUgIT09ICdkc2EnKSB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHByaXZhdGUga2V5IHR5cGUnKVxuICAgIHJldHVybiBkc2FTaWduKGhhc2gsIHByaXYsIGhhc2hUeXBlKVxuICB9IGVsc2Uge1xuICAgIGlmIChzaWduVHlwZSAhPT0gJ3JzYScgJiYgc2lnblR5cGUgIT09ICdlY2RzYS9yc2EnKSB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHByaXZhdGUga2V5IHR5cGUnKVxuICB9XG4gIGhhc2ggPSBCdWZmZXIuY29uY2F0KFt0YWcsIGhhc2hdKVxuICB2YXIgbGVuID0gcHJpdi5tb2R1bHVzLmJ5dGVMZW5ndGgoKVxuICB2YXIgcGFkID0gWzAsIDFdXG4gIHdoaWxlIChoYXNoLmxlbmd0aCArIHBhZC5sZW5ndGggKyAxIDwgbGVuKSBwYWQucHVzaCgweGZmKVxuICBwYWQucHVzaCgweDAwKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBoYXNoLmxlbmd0aCkgcGFkLnB1c2goaGFzaFtpXSlcblxuICB2YXIgb3V0ID0gY3J0KHBhZCwgcHJpdilcbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiBlY1NpZ24gKGhhc2gsIHByaXYpIHtcbiAgdmFyIGN1cnZlSWQgPSBjdXJ2ZXNbcHJpdi5jdXJ2ZS5qb2luKCcuJyldXG4gIGlmICghY3VydmVJZCkgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGN1cnZlICcgKyBwcml2LmN1cnZlLmpvaW4oJy4nKSlcblxuICB2YXIgY3VydmUgPSBuZXcgRUMoY3VydmVJZClcbiAgdmFyIGtleSA9IGN1cnZlLmtleUZyb21Qcml2YXRlKHByaXYucHJpdmF0ZUtleSlcbiAgdmFyIG91dCA9IGtleS5zaWduKGhhc2gpXG5cbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKG91dC50b0RFUigpKVxufVxuXG5mdW5jdGlvbiBkc2FTaWduIChoYXNoLCBwcml2LCBhbGdvKSB7XG4gIHZhciB4ID0gcHJpdi5wYXJhbXMucHJpdl9rZXlcbiAgdmFyIHAgPSBwcml2LnBhcmFtcy5wXG4gIHZhciBxID0gcHJpdi5wYXJhbXMucVxuICB2YXIgZyA9IHByaXYucGFyYW1zLmdcbiAgdmFyIHIgPSBuZXcgQk4oMClcbiAgdmFyIGtcbiAgdmFyIEggPSBiaXRzMmludChoYXNoLCBxKS5tb2QocSlcbiAgdmFyIHMgPSBmYWxzZVxuICB2YXIga3YgPSBnZXRLZXkoeCwgcSwgaGFzaCwgYWxnbylcbiAgd2hpbGUgKHMgPT09IGZhbHNlKSB7XG4gICAgayA9IG1ha2VLZXkocSwga3YsIGFsZ28pXG4gICAgciA9IG1ha2VSKGcsIGssIHAsIHEpXG4gICAgcyA9IGsuaW52bShxKS5pbXVsKEguYWRkKHgubXVsKHIpKSkubW9kKHEpXG4gICAgaWYgKHMuY21wbigwKSA9PT0gMCkge1xuICAgICAgcyA9IGZhbHNlXG4gICAgICByID0gbmV3IEJOKDApXG4gICAgfVxuICB9XG4gIHJldHVybiB0b0RFUihyLCBzKVxufVxuXG5mdW5jdGlvbiB0b0RFUiAociwgcykge1xuICByID0gci50b0FycmF5KClcbiAgcyA9IHMudG9BcnJheSgpXG5cbiAgLy8gUGFkIHZhbHVlc1xuICBpZiAoclswXSAmIDB4ODApIHIgPSBbMF0uY29uY2F0KHIpXG4gIGlmIChzWzBdICYgMHg4MCkgcyA9IFswXS5jb25jYXQocylcblxuICB2YXIgdG90YWwgPSByLmxlbmd0aCArIHMubGVuZ3RoICsgNFxuICB2YXIgcmVzID0gWzB4MzAsIHRvdGFsLCAweDAyLCByLmxlbmd0aF1cbiAgcmVzID0gcmVzLmNvbmNhdChyLCBbMHgwMiwgcy5sZW5ndGhdLCBzKVxuICByZXR1cm4gQnVmZmVyLmZyb20ocmVzKVxufVxuXG5mdW5jdGlvbiBnZXRLZXkgKHgsIHEsIGhhc2gsIGFsZ28pIHtcbiAgeCA9IEJ1ZmZlci5mcm9tKHgudG9BcnJheSgpKVxuICBpZiAoeC5sZW5ndGggPCBxLmJ5dGVMZW5ndGgoKSkge1xuICAgIHZhciB6ZXJvcyA9IEJ1ZmZlci5hbGxvYyhxLmJ5dGVMZW5ndGgoKSAtIHgubGVuZ3RoKVxuICAgIHggPSBCdWZmZXIuY29uY2F0KFt6ZXJvcywgeF0pXG4gIH1cbiAgdmFyIGhsZW4gPSBoYXNoLmxlbmd0aFxuICB2YXIgaGJpdHMgPSBiaXRzMm9jdGV0cyhoYXNoLCBxKVxuICB2YXIgdiA9IEJ1ZmZlci5hbGxvYyhobGVuKVxuICB2LmZpbGwoMSlcbiAgdmFyIGsgPSBCdWZmZXIuYWxsb2MoaGxlbilcbiAgayA9IGNyZWF0ZUhtYWMoYWxnbywgaykudXBkYXRlKHYpLnVwZGF0ZShCdWZmZXIuZnJvbShbMF0pKS51cGRhdGUoeCkudXBkYXRlKGhiaXRzKS5kaWdlc3QoKVxuICB2ID0gY3JlYXRlSG1hYyhhbGdvLCBrKS51cGRhdGUodikuZGlnZXN0KClcbiAgayA9IGNyZWF0ZUhtYWMoYWxnbywgaykudXBkYXRlKHYpLnVwZGF0ZShCdWZmZXIuZnJvbShbMV0pKS51cGRhdGUoeCkudXBkYXRlKGhiaXRzKS5kaWdlc3QoKVxuICB2ID0gY3JlYXRlSG1hYyhhbGdvLCBrKS51cGRhdGUodikuZGlnZXN0KClcbiAgcmV0dXJuIHsgazogaywgdjogdiB9XG59XG5cbmZ1bmN0aW9uIGJpdHMyaW50IChvYml0cywgcSkge1xuICB2YXIgYml0cyA9IG5ldyBCTihvYml0cylcbiAgdmFyIHNoaWZ0ID0gKG9iaXRzLmxlbmd0aCA8PCAzKSAtIHEuYml0TGVuZ3RoKClcbiAgaWYgKHNoaWZ0ID4gMCkgYml0cy5pc2hybihzaGlmdClcbiAgcmV0dXJuIGJpdHNcbn1cblxuZnVuY3Rpb24gYml0czJvY3RldHMgKGJpdHMsIHEpIHtcbiAgYml0cyA9IGJpdHMyaW50KGJpdHMsIHEpXG4gIGJpdHMgPSBiaXRzLm1vZChxKVxuICB2YXIgb3V0ID0gQnVmZmVyLmZyb20oYml0cy50b0FycmF5KCkpXG4gIGlmIChvdXQubGVuZ3RoIDwgcS5ieXRlTGVuZ3RoKCkpIHtcbiAgICB2YXIgemVyb3MgPSBCdWZmZXIuYWxsb2MocS5ieXRlTGVuZ3RoKCkgLSBvdXQubGVuZ3RoKVxuICAgIG91dCA9IEJ1ZmZlci5jb25jYXQoW3plcm9zLCBvdXRdKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gbWFrZUtleSAocSwga3YsIGFsZ28pIHtcbiAgdmFyIHRcbiAgdmFyIGtcblxuICBkbyB7XG4gICAgdCA9IEJ1ZmZlci5hbGxvYygwKVxuXG4gICAgd2hpbGUgKHQubGVuZ3RoICogOCA8IHEuYml0TGVuZ3RoKCkpIHtcbiAgICAgIGt2LnYgPSBjcmVhdGVIbWFjKGFsZ28sIGt2LmspLnVwZGF0ZShrdi52KS5kaWdlc3QoKVxuICAgICAgdCA9IEJ1ZmZlci5jb25jYXQoW3QsIGt2LnZdKVxuICAgIH1cblxuICAgIGsgPSBiaXRzMmludCh0LCBxKVxuICAgIGt2LmsgPSBjcmVhdGVIbWFjKGFsZ28sIGt2LmspLnVwZGF0ZShrdi52KS51cGRhdGUoQnVmZmVyLmZyb20oWzBdKSkuZGlnZXN0KClcbiAgICBrdi52ID0gY3JlYXRlSG1hYyhhbGdvLCBrdi5rKS51cGRhdGUoa3YudikuZGlnZXN0KClcbiAgfSB3aGlsZSAoay5jbXAocSkgIT09IC0xKVxuXG4gIHJldHVybiBrXG59XG5cbmZ1bmN0aW9uIG1ha2VSIChnLCBrLCBwLCBxKSB7XG4gIHJldHVybiBnLnRvUmVkKEJOLm1vbnQocCkpLnJlZFBvdyhrKS5mcm9tUmVkKCkubW9kKHEpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2lnblxubW9kdWxlLmV4cG9ydHMuZ2V0S2V5ID0gZ2V0S2V5XG5tb2R1bGUuZXhwb3J0cy5tYWtlS2V5ID0gbWFrZUtleVxuIiwiLy8gbXVjaCBvZiB0aGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L3NlbGYtc2lnbmVkL2Jsb2IvZ2gtcGFnZXMvbGliL3JzYS5qc1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgRUMgPSByZXF1aXJlKCdlbGxpcHRpYycpLmVjXG52YXIgcGFyc2VLZXlzID0gcmVxdWlyZSgncGFyc2UtYXNuMScpXG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi9jdXJ2ZXMuanNvbicpXG5cbmZ1bmN0aW9uIHZlcmlmeSAoc2lnLCBoYXNoLCBrZXksIHNpZ25UeXBlLCB0YWcpIHtcbiAgdmFyIHB1YiA9IHBhcnNlS2V5cyhrZXkpXG4gIGlmIChwdWIudHlwZSA9PT0gJ2VjJykge1xuICAgIC8vIHJzYSBrZXlzIGNhbiBiZSBpbnRlcnByZXRlZCBhcyBlY2RzYSBvbmVzIGluIG9wZW5zc2xcbiAgICBpZiAoc2lnblR5cGUgIT09ICdlY2RzYScgJiYgc2lnblR5cGUgIT09ICdlY2RzYS9yc2EnKSB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgcmV0dXJuIGVjVmVyaWZ5KHNpZywgaGFzaCwgcHViKVxuICB9IGVsc2UgaWYgKHB1Yi50eXBlID09PSAnZHNhJykge1xuICAgIGlmIChzaWduVHlwZSAhPT0gJ2RzYScpIHRocm93IG5ldyBFcnJvcignd3JvbmcgcHVibGljIGtleSB0eXBlJylcbiAgICByZXR1cm4gZHNhVmVyaWZ5KHNpZywgaGFzaCwgcHViKVxuICB9IGVsc2Uge1xuICAgIGlmIChzaWduVHlwZSAhPT0gJ3JzYScgJiYgc2lnblR5cGUgIT09ICdlY2RzYS9yc2EnKSB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gIH1cbiAgaGFzaCA9IEJ1ZmZlci5jb25jYXQoW3RhZywgaGFzaF0pXG4gIHZhciBsZW4gPSBwdWIubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgdmFyIHBhZCA9IFsxXVxuICB2YXIgcGFkTnVtID0gMFxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMiA8IGxlbikge1xuICAgIHBhZC5wdXNoKDB4ZmYpXG4gICAgcGFkTnVtKytcbiAgfVxuICBwYWQucHVzaCgweDAwKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBoYXNoLmxlbmd0aCkge1xuICAgIHBhZC5wdXNoKGhhc2hbaV0pXG4gIH1cbiAgcGFkID0gQnVmZmVyLmZyb20ocGFkKVxuICB2YXIgcmVkID0gQk4ubW9udChwdWIubW9kdWx1cylcbiAgc2lnID0gbmV3IEJOKHNpZykudG9SZWQocmVkKVxuXG4gIHNpZyA9IHNpZy5yZWRQb3cobmV3IEJOKHB1Yi5wdWJsaWNFeHBvbmVudCkpXG4gIHNpZyA9IEJ1ZmZlci5mcm9tKHNpZy5mcm9tUmVkKCkudG9BcnJheSgpKVxuICB2YXIgb3V0ID0gcGFkTnVtIDwgOCA/IDEgOiAwXG4gIGxlbiA9IE1hdGgubWluKHNpZy5sZW5ndGgsIHBhZC5sZW5ndGgpXG4gIGlmIChzaWcubGVuZ3RoICE9PSBwYWQubGVuZ3RoKSBvdXQgPSAxXG5cbiAgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIG91dCB8PSBzaWdbaV0gXiBwYWRbaV1cbiAgcmV0dXJuIG91dCA9PT0gMFxufVxuXG5mdW5jdGlvbiBlY1ZlcmlmeSAoc2lnLCBoYXNoLCBwdWIpIHtcbiAgdmFyIGN1cnZlSWQgPSBjdXJ2ZXNbcHViLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oJy4nKV1cbiAgaWYgKCFjdXJ2ZUlkKSB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gY3VydmUgJyArIHB1Yi5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBwdWJrZXkgPSBwdWIuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleS5kYXRhXG5cbiAgcmV0dXJuIGN1cnZlLnZlcmlmeShoYXNoLCBzaWcsIHB1YmtleSlcbn1cblxuZnVuY3Rpb24gZHNhVmVyaWZ5IChzaWcsIGhhc2gsIHB1Yikge1xuICB2YXIgcCA9IHB1Yi5kYXRhLnBcbiAgdmFyIHEgPSBwdWIuZGF0YS5xXG4gIHZhciBnID0gcHViLmRhdGEuZ1xuICB2YXIgeSA9IHB1Yi5kYXRhLnB1Yl9rZXlcbiAgdmFyIHVucGFja2VkID0gcGFyc2VLZXlzLnNpZ25hdHVyZS5kZWNvZGUoc2lnLCAnZGVyJylcbiAgdmFyIHMgPSB1bnBhY2tlZC5zXG4gIHZhciByID0gdW5wYWNrZWQuclxuICBjaGVja1ZhbHVlKHMsIHEpXG4gIGNoZWNrVmFsdWUociwgcSlcbiAgdmFyIG1vbnRwID0gQk4ubW9udChwKVxuICB2YXIgdyA9IHMuaW52bShxKVxuICB2YXIgdiA9IGcudG9SZWQobW9udHApXG4gICAgLnJlZFBvdyhuZXcgQk4oaGFzaCkubXVsKHcpLm1vZChxKSlcbiAgICAuZnJvbVJlZCgpXG4gICAgLm11bCh5LnRvUmVkKG1vbnRwKS5yZWRQb3coci5tdWwodykubW9kKHEpKS5mcm9tUmVkKCkpXG4gICAgLm1vZChwKVxuICAgIC5tb2QocSlcbiAgcmV0dXJuIHYuY21wKHIpID09PSAwXG59XG5cbmZ1bmN0aW9uIGNoZWNrVmFsdWUgKGIsIHEpIHtcbiAgaWYgKGIuY21wbigwKSA8PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2lnJylcbiAgaWYgKGIuY21wKHEpID49IHEpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzaWcnKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZlcmlmeVxuIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50IGNhbWVsY2FzZTogXCJvZmZcIiAqL1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jyk7XG5cbnZhciBac3RyZWFtID0gcmVxdWlyZSgncGFrby9saWIvemxpYi96c3RyZWFtJyk7XG52YXIgemxpYl9kZWZsYXRlID0gcmVxdWlyZSgncGFrby9saWIvemxpYi9kZWZsYXRlLmpzJyk7XG52YXIgemxpYl9pbmZsYXRlID0gcmVxdWlyZSgncGFrby9saWIvemxpYi9pbmZsYXRlLmpzJyk7XG52YXIgY29uc3RhbnRzID0gcmVxdWlyZSgncGFrby9saWIvemxpYi9jb25zdGFudHMnKTtcblxuZm9yICh2YXIga2V5IGluIGNvbnN0YW50cykge1xuICBleHBvcnRzW2tleV0gPSBjb25zdGFudHNba2V5XTtcbn1cblxuLy8gemxpYiBtb2Rlc1xuZXhwb3J0cy5OT05FID0gMDtcbmV4cG9ydHMuREVGTEFURSA9IDE7XG5leHBvcnRzLklORkxBVEUgPSAyO1xuZXhwb3J0cy5HWklQID0gMztcbmV4cG9ydHMuR1VOWklQID0gNDtcbmV4cG9ydHMuREVGTEFURVJBVyA9IDU7XG5leHBvcnRzLklORkxBVEVSQVcgPSA2O1xuZXhwb3J0cy5VTlpJUCA9IDc7XG5cbnZhciBHWklQX0hFQURFUl9JRDEgPSAweDFmO1xudmFyIEdaSVBfSEVBREVSX0lEMiA9IDB4OGI7XG5cbi8qKlxuICogRW11bGF0ZSBOb2RlJ3MgemxpYiBDKysgbGF5ZXIgZm9yIHVzZSBieSB0aGUgSlMgbGF5ZXIgaW4gaW5kZXguanNcbiAqL1xuZnVuY3Rpb24gWmxpYihtb2RlKSB7XG4gIGlmICh0eXBlb2YgbW9kZSAhPT0gJ251bWJlcicgfHwgbW9kZSA8IGV4cG9ydHMuREVGTEFURSB8fCBtb2RlID4gZXhwb3J0cy5VTlpJUCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JhZCBhcmd1bWVudCcpO1xuICB9XG5cbiAgdGhpcy5kaWN0aW9uYXJ5ID0gbnVsbDtcbiAgdGhpcy5lcnIgPSAwO1xuICB0aGlzLmZsdXNoID0gMDtcbiAgdGhpcy5pbml0X2RvbmUgPSBmYWxzZTtcbiAgdGhpcy5sZXZlbCA9IDA7XG4gIHRoaXMubWVtTGV2ZWwgPSAwO1xuICB0aGlzLm1vZGUgPSBtb2RlO1xuICB0aGlzLnN0cmF0ZWd5ID0gMDtcbiAgdGhpcy53aW5kb3dCaXRzID0gMDtcbiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IGZhbHNlO1xuICB0aGlzLnBlbmRpbmdfY2xvc2UgPSBmYWxzZTtcbiAgdGhpcy5nemlwX2lkX2J5dGVzX3JlYWQgPSAwO1xufVxuXG5abGliLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MpIHtcbiAgICB0aGlzLnBlbmRpbmdfY2xvc2UgPSB0cnVlO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoaXMucGVuZGluZ19jbG9zZSA9IGZhbHNlO1xuXG4gIGFzc2VydCh0aGlzLmluaXRfZG9uZSwgJ2Nsb3NlIGJlZm9yZSBpbml0Jyk7XG4gIGFzc2VydCh0aGlzLm1vZGUgPD0gZXhwb3J0cy5VTlpJUCk7XG5cbiAgaWYgKHRoaXMubW9kZSA9PT0gZXhwb3J0cy5ERUZMQVRFIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5HWklQIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5ERUZMQVRFUkFXKSB7XG4gICAgemxpYl9kZWZsYXRlLmRlZmxhdGVFbmQodGhpcy5zdHJtKTtcbiAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuSU5GTEFURSB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1VOWklQIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5JTkZMQVRFUkFXIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5VTlpJUCkge1xuICAgIHpsaWJfaW5mbGF0ZS5pbmZsYXRlRW5kKHRoaXMuc3RybSk7XG4gIH1cblxuICB0aGlzLm1vZGUgPSBleHBvcnRzLk5PTkU7XG5cbiAgdGhpcy5kaWN0aW9uYXJ5ID0gbnVsbDtcbn07XG5cblpsaWIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGZsdXNoLCBpbnB1dCwgaW5fb2ZmLCBpbl9sZW4sIG91dCwgb3V0X29mZiwgb3V0X2xlbikge1xuICByZXR1cm4gdGhpcy5fd3JpdGUodHJ1ZSwgZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKTtcbn07XG5cblpsaWIucHJvdG90eXBlLndyaXRlU3luYyA9IGZ1bmN0aW9uIChmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pIHtcbiAgcmV0dXJuIHRoaXMuX3dyaXRlKGZhbHNlLCBmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pO1xufTtcblxuWmxpYi5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGFzeW5jLCBmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pIHtcbiAgYXNzZXJ0LmVxdWFsKGFyZ3VtZW50cy5sZW5ndGgsIDgpO1xuXG4gIGFzc2VydCh0aGlzLmluaXRfZG9uZSwgJ3dyaXRlIGJlZm9yZSBpbml0Jyk7XG4gIGFzc2VydCh0aGlzLm1vZGUgIT09IGV4cG9ydHMuTk9ORSwgJ2FscmVhZHkgZmluYWxpemVkJyk7XG4gIGFzc2VydC5lcXVhbChmYWxzZSwgdGhpcy53cml0ZV9pbl9wcm9ncmVzcywgJ3dyaXRlIGFscmVhZHkgaW4gcHJvZ3Jlc3MnKTtcbiAgYXNzZXJ0LmVxdWFsKGZhbHNlLCB0aGlzLnBlbmRpbmdfY2xvc2UsICdjbG9zZSBpcyBwZW5kaW5nJyk7XG5cbiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IHRydWU7XG5cbiAgYXNzZXJ0LmVxdWFsKGZhbHNlLCBmbHVzaCA9PT0gdW5kZWZpbmVkLCAnbXVzdCBwcm92aWRlIGZsdXNoIHZhbHVlJyk7XG5cbiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IHRydWU7XG5cbiAgaWYgKGZsdXNoICE9PSBleHBvcnRzLlpfTk9fRkxVU0ggJiYgZmx1c2ggIT09IGV4cG9ydHMuWl9QQVJUSUFMX0ZMVVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfU1lOQ19GTFVTSCAmJiBmbHVzaCAhPT0gZXhwb3J0cy5aX0ZVTExfRkxVU0ggJiYgZmx1c2ggIT09IGV4cG9ydHMuWl9GSU5JU0ggJiYgZmx1c2ggIT09IGV4cG9ydHMuWl9CTE9DSykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmbHVzaCB2YWx1ZScpO1xuICB9XG5cbiAgaWYgKGlucHV0ID09IG51bGwpIHtcbiAgICBpbnB1dCA9IEJ1ZmZlci5hbGxvYygwKTtcbiAgICBpbl9sZW4gPSAwO1xuICAgIGluX29mZiA9IDA7XG4gIH1cblxuICB0aGlzLnN0cm0uYXZhaWxfaW4gPSBpbl9sZW47XG4gIHRoaXMuc3RybS5pbnB1dCA9IGlucHV0O1xuICB0aGlzLnN0cm0ubmV4dF9pbiA9IGluX29mZjtcbiAgdGhpcy5zdHJtLmF2YWlsX291dCA9IG91dF9sZW47XG4gIHRoaXMuc3RybS5vdXRwdXQgPSBvdXQ7XG4gIHRoaXMuc3RybS5uZXh0X291dCA9IG91dF9vZmY7XG4gIHRoaXMuZmx1c2ggPSBmbHVzaDtcblxuICBpZiAoIWFzeW5jKSB7XG4gICAgLy8gc3luYyB2ZXJzaW9uXG4gICAgdGhpcy5fcHJvY2VzcygpO1xuXG4gICAgaWYgKHRoaXMuX2NoZWNrRXJyb3IoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2FmdGVyU3luYygpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBhc3luYyB2ZXJzaW9uXG4gIHZhciBzZWxmID0gdGhpcztcbiAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgc2VsZi5fcHJvY2VzcygpO1xuICAgIHNlbGYuX2FmdGVyKCk7XG4gIH0pO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuWmxpYi5wcm90b3R5cGUuX2FmdGVyU3luYyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGF2YWlsX291dCA9IHRoaXMuc3RybS5hdmFpbF9vdXQ7XG4gIHZhciBhdmFpbF9pbiA9IHRoaXMuc3RybS5hdmFpbF9pbjtcblxuICB0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gZmFsc2U7XG5cbiAgcmV0dXJuIFthdmFpbF9pbiwgYXZhaWxfb3V0XTtcbn07XG5cblpsaWIucHJvdG90eXBlLl9wcm9jZXNzID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZSA9IG51bGw7XG5cbiAgLy8gSWYgdGhlIGF2YWlsX291dCBpcyBsZWZ0IGF0IDAsIHRoZW4gaXQgbWVhbnMgdGhhdCBpdCByYW4gb3V0XG4gIC8vIG9mIHJvb20uICBJZiB0aGVyZSB3YXMgYXZhaWxfb3V0IGxlZnQgb3ZlciwgdGhlbiBpdCBtZWFuc1xuICAvLyB0aGF0IGFsbCBvZiB0aGUgaW5wdXQgd2FzIGNvbnN1bWVkLlxuICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFOlxuICAgIGNhc2UgZXhwb3J0cy5HWklQOlxuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFUkFXOlxuICAgICAgdGhpcy5lcnIgPSB6bGliX2RlZmxhdGUuZGVmbGF0ZSh0aGlzLnN0cm0sIHRoaXMuZmx1c2gpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBleHBvcnRzLlVOWklQOlxuICAgICAgaWYgKHRoaXMuc3RybS5hdmFpbF9pbiA+IDApIHtcbiAgICAgICAgbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZSA9IHRoaXMuc3RybS5uZXh0X2luO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHRoaXMuZ3ppcF9pZF9ieXRlc19yZWFkKSB7XG4gICAgICAgIGNhc2UgMDpcbiAgICAgICAgICBpZiAobmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHRoaXMuc3RybS5pbnB1dFtuZXh0X2V4cGVjdGVkX2hlYWRlcl9ieXRlXSA9PT0gR1pJUF9IRUFERVJfSUQxKSB7XG4gICAgICAgICAgICB0aGlzLmd6aXBfaWRfYnl0ZXNfcmVhZCA9IDE7XG4gICAgICAgICAgICBuZXh0X2V4cGVjdGVkX2hlYWRlcl9ieXRlKys7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnN0cm0uYXZhaWxfaW4gPT09IDEpIHtcbiAgICAgICAgICAgICAgLy8gVGhlIG9ubHkgYXZhaWxhYmxlIGJ5dGUgd2FzIGFscmVhZHkgcmVhZC5cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubW9kZSA9IGV4cG9ydHMuSU5GTEFURTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAvLyBmYWxsdGhyb3VnaFxuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnN0cm0uaW5wdXRbbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZV0gPT09IEdaSVBfSEVBREVSX0lEMikge1xuICAgICAgICAgICAgdGhpcy5nemlwX2lkX2J5dGVzX3JlYWQgPSAyO1xuICAgICAgICAgICAgdGhpcy5tb2RlID0gZXhwb3J0cy5HVU5aSVA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIGFjdHVhbCBkaWZmZXJlbmNlIGJldHdlZW4gSU5GTEFURSBhbmQgSU5GTEFURVJBV1xuICAgICAgICAgICAgLy8gKGFmdGVyIGluaXRpYWxpemF0aW9uKS5cbiAgICAgICAgICAgIHRoaXMubW9kZSA9IGV4cG9ydHMuSU5GTEFURTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbnVtYmVyIG9mIGd6aXAgbWFnaWMgbnVtYmVyIGJ5dGVzIHJlYWQnKTtcbiAgICAgIH1cblxuICAgIC8vIGZhbGx0aHJvdWdoXG4gICAgY2FzZSBleHBvcnRzLklORkxBVEU6XG4gICAgY2FzZSBleHBvcnRzLkdVTlpJUDpcbiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURVJBVzpcbiAgICAgIHRoaXMuZXJyID0gemxpYl9pbmZsYXRlLmluZmxhdGUodGhpcy5zdHJtLCB0aGlzLmZsdXNoXG5cbiAgICAgIC8vIElmIGRhdGEgd2FzIGVuY29kZWQgd2l0aCBkaWN0aW9uYXJ5XG4gICAgICApO2lmICh0aGlzLmVyciA9PT0gZXhwb3J0cy5aX05FRURfRElDVCAmJiB0aGlzLmRpY3Rpb25hcnkpIHtcbiAgICAgICAgLy8gTG9hZCBpdFxuICAgICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlU2V0RGljdGlvbmFyeSh0aGlzLnN0cm0sIHRoaXMuZGljdGlvbmFyeSk7XG4gICAgICAgIGlmICh0aGlzLmVyciA9PT0gZXhwb3J0cy5aX09LKSB7XG4gICAgICAgICAgLy8gQW5kIHRyeSB0byBkZWNvZGUgYWdhaW5cbiAgICAgICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlKHRoaXMuc3RybSwgdGhpcy5mbHVzaCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5lcnIgPT09IGV4cG9ydHMuWl9EQVRBX0VSUk9SKSB7XG4gICAgICAgICAgLy8gQm90aCBpbmZsYXRlU2V0RGljdGlvbmFyeSgpIGFuZCBpbmZsYXRlKCkgcmV0dXJuIFpfREFUQV9FUlJPUi5cbiAgICAgICAgICAvLyBNYWtlIGl0IHBvc3NpYmxlIGZvciBBZnRlcigpIHRvIHRlbGwgYSBiYWQgZGljdGlvbmFyeSBmcm9tIGJhZFxuICAgICAgICAgIC8vIGlucHV0LlxuICAgICAgICAgIHRoaXMuZXJyID0gZXhwb3J0cy5aX05FRURfRElDVDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgd2hpbGUgKHRoaXMuc3RybS5hdmFpbF9pbiA+IDAgJiYgdGhpcy5tb2RlID09PSBleHBvcnRzLkdVTlpJUCAmJiB0aGlzLmVyciA9PT0gZXhwb3J0cy5aX1NUUkVBTV9FTkQgJiYgdGhpcy5zdHJtLm5leHRfaW5bMF0gIT09IDB4MDApIHtcbiAgICAgICAgLy8gQnl0ZXMgcmVtYWluIGluIGlucHV0IGJ1ZmZlci4gUGVyaGFwcyB0aGlzIGlzIGFub3RoZXIgY29tcHJlc3NlZFxuICAgICAgICAvLyBtZW1iZXIgaW4gdGhlIHNhbWUgYXJjaGl2ZSwgb3IganVzdCB0cmFpbGluZyBnYXJiYWdlLlxuICAgICAgICAvLyBUcmFpbGluZyB6ZXJvIGJ5dGVzIGFyZSBva2F5LCB0aG91Z2gsIHNpbmNlIHRoZXkgYXJlIGZyZXF1ZW50bHlcbiAgICAgICAgLy8gdXNlZCBmb3IgcGFkZGluZy5cblxuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgIHRoaXMuZXJyID0gemxpYl9pbmZsYXRlLmluZmxhdGUodGhpcy5zdHJtLCB0aGlzLmZsdXNoKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbW9kZSAnICsgdGhpcy5tb2RlKTtcbiAgfVxufTtcblxuWmxpYi5wcm90b3R5cGUuX2NoZWNrRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIEFjY2VwdGFibGUgZXJyb3Igc3RhdGVzIGRlcGVuZCBvbiB0aGUgdHlwZSBvZiB6bGliIHN0cmVhbS5cbiAgc3dpdGNoICh0aGlzLmVycikge1xuICAgIGNhc2UgZXhwb3J0cy5aX09LOlxuICAgIGNhc2UgZXhwb3J0cy5aX0JVRl9FUlJPUjpcbiAgICAgIGlmICh0aGlzLnN0cm0uYXZhaWxfb3V0ICE9PSAwICYmIHRoaXMuZmx1c2ggPT09IGV4cG9ydHMuWl9GSU5JU0gpIHtcbiAgICAgICAgdGhpcy5fZXJyb3IoJ3VuZXhwZWN0ZWQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBleHBvcnRzLlpfU1RSRUFNX0VORDpcbiAgICAgIC8vIG5vcm1hbCBzdGF0dXNlcywgbm90IGZhdGFsXG4gICAgICBicmVhaztcbiAgICBjYXNlIGV4cG9ydHMuWl9ORUVEX0RJQ1Q6XG4gICAgICBpZiAodGhpcy5kaWN0aW9uYXJ5ID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fZXJyb3IoJ01pc3NpbmcgZGljdGlvbmFyeScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZXJyb3IoJ0JhZCBkaWN0aW9uYXJ5Jyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIHNvbWV0aGluZyBlbHNlLlxuICAgICAgdGhpcy5fZXJyb3IoJ1psaWIgZXJyb3InKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuWmxpYi5wcm90b3R5cGUuX2FmdGVyID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXRoaXMuX2NoZWNrRXJyb3IoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBhdmFpbF9vdXQgPSB0aGlzLnN0cm0uYXZhaWxfb3V0O1xuICB2YXIgYXZhaWxfaW4gPSB0aGlzLnN0cm0uYXZhaWxfaW47XG5cbiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IGZhbHNlO1xuXG4gIC8vIGNhbGwgdGhlIHdyaXRlKCkgY2JcbiAgdGhpcy5jYWxsYmFjayhhdmFpbF9pbiwgYXZhaWxfb3V0KTtcblxuICBpZiAodGhpcy5wZW5kaW5nX2Nsb3NlKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG59O1xuXG5abGliLnByb3RvdHlwZS5fZXJyb3IgPSBmdW5jdGlvbiAobWVzc2FnZSkge1xuICBpZiAodGhpcy5zdHJtLm1zZykge1xuICAgIG1lc3NhZ2UgPSB0aGlzLnN0cm0ubXNnO1xuICB9XG4gIHRoaXMub25lcnJvcihtZXNzYWdlLCB0aGlzLmVyclxuXG4gIC8vIG5vIGhvcGUgb2YgcmVzY3VlLlxuICApO3RoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSBmYWxzZTtcbiAgaWYgKHRoaXMucGVuZGluZ19jbG9zZSkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxufTtcblxuWmxpYi5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICh3aW5kb3dCaXRzLCBsZXZlbCwgbWVtTGV2ZWwsIHN0cmF0ZWd5LCBkaWN0aW9uYXJ5KSB7XG4gIGFzc2VydChhcmd1bWVudHMubGVuZ3RoID09PSA0IHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDUsICdpbml0KHdpbmRvd0JpdHMsIGxldmVsLCBtZW1MZXZlbCwgc3RyYXRlZ3ksIFtkaWN0aW9uYXJ5XSknKTtcblxuICBhc3NlcnQod2luZG93Qml0cyA+PSA4ICYmIHdpbmRvd0JpdHMgPD0gMTUsICdpbnZhbGlkIHdpbmRvd0JpdHMnKTtcbiAgYXNzZXJ0KGxldmVsID49IC0xICYmIGxldmVsIDw9IDksICdpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsJyk7XG5cbiAgYXNzZXJ0KG1lbUxldmVsID49IDEgJiYgbWVtTGV2ZWwgPD0gOSwgJ2ludmFsaWQgbWVtbGV2ZWwnKTtcblxuICBhc3NlcnQoc3RyYXRlZ3kgPT09IGV4cG9ydHMuWl9GSUxURVJFRCB8fCBzdHJhdGVneSA9PT0gZXhwb3J0cy5aX0hVRkZNQU5fT05MWSB8fCBzdHJhdGVneSA9PT0gZXhwb3J0cy5aX1JMRSB8fCBzdHJhdGVneSA9PT0gZXhwb3J0cy5aX0ZJWEVEIHx8IHN0cmF0ZWd5ID09PSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWSwgJ2ludmFsaWQgc3RyYXRlZ3knKTtcblxuICB0aGlzLl9pbml0KGxldmVsLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3ksIGRpY3Rpb25hcnkpO1xuICB0aGlzLl9zZXREaWN0aW9uYXJ5KCk7XG59O1xuXG5abGliLnByb3RvdHlwZS5wYXJhbXMgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignZGVmbGF0ZVBhcmFtcyBOb3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5abGliLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fcmVzZXQoKTtcbiAgdGhpcy5fc2V0RGljdGlvbmFyeSgpO1xufTtcblxuWmxpYi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiAobGV2ZWwsIHdpbmRvd0JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSwgZGljdGlvbmFyeSkge1xuICB0aGlzLmxldmVsID0gbGV2ZWw7XG4gIHRoaXMud2luZG93Qml0cyA9IHdpbmRvd0JpdHM7XG4gIHRoaXMubWVtTGV2ZWwgPSBtZW1MZXZlbDtcbiAgdGhpcy5zdHJhdGVneSA9IHN0cmF0ZWd5O1xuXG4gIHRoaXMuZmx1c2ggPSBleHBvcnRzLlpfTk9fRkxVU0g7XG5cbiAgdGhpcy5lcnIgPSBleHBvcnRzLlpfT0s7XG5cbiAgaWYgKHRoaXMubW9kZSA9PT0gZXhwb3J0cy5HWklQIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5HVU5aSVApIHtcbiAgICB0aGlzLndpbmRvd0JpdHMgKz0gMTY7XG4gIH1cblxuICBpZiAodGhpcy5tb2RlID09PSBleHBvcnRzLlVOWklQKSB7XG4gICAgdGhpcy53aW5kb3dCaXRzICs9IDMyO1xuICB9XG5cbiAgaWYgKHRoaXMubW9kZSA9PT0gZXhwb3J0cy5ERUZMQVRFUkFXIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5JTkZMQVRFUkFXKSB7XG4gICAgdGhpcy53aW5kb3dCaXRzID0gLTEgKiB0aGlzLndpbmRvd0JpdHM7XG4gIH1cblxuICB0aGlzLnN0cm0gPSBuZXcgWnN0cmVhbSgpO1xuXG4gIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgY2FzZSBleHBvcnRzLkRFRkxBVEU6XG4gICAgY2FzZSBleHBvcnRzLkdaSVA6XG4gICAgY2FzZSBleHBvcnRzLkRFRkxBVEVSQVc6XG4gICAgICB0aGlzLmVyciA9IHpsaWJfZGVmbGF0ZS5kZWZsYXRlSW5pdDIodGhpcy5zdHJtLCB0aGlzLmxldmVsLCBleHBvcnRzLlpfREVGTEFURUQsIHRoaXMud2luZG93Qml0cywgdGhpcy5tZW1MZXZlbCwgdGhpcy5zdHJhdGVneSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURTpcbiAgICBjYXNlIGV4cG9ydHMuR1VOWklQOlxuICAgIGNhc2UgZXhwb3J0cy5JTkZMQVRFUkFXOlxuICAgIGNhc2UgZXhwb3J0cy5VTlpJUDpcbiAgICAgIHRoaXMuZXJyID0gemxpYl9pbmZsYXRlLmluZmxhdGVJbml0Mih0aGlzLnN0cm0sIHRoaXMud2luZG93Qml0cyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1vZGUgJyArIHRoaXMubW9kZSk7XG4gIH1cblxuICBpZiAodGhpcy5lcnIgIT09IGV4cG9ydHMuWl9PSykge1xuICAgIHRoaXMuX2Vycm9yKCdJbml0IGVycm9yJyk7XG4gIH1cblxuICB0aGlzLmRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5O1xuXG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSBmYWxzZTtcbiAgdGhpcy5pbml0X2RvbmUgPSB0cnVlO1xufTtcblxuWmxpYi5wcm90b3R5cGUuX3NldERpY3Rpb25hcnkgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmRpY3Rpb25hcnkgPT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoaXMuZXJyID0gZXhwb3J0cy5aX09LO1xuXG4gIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgY2FzZSBleHBvcnRzLkRFRkxBVEU6XG4gICAgY2FzZSBleHBvcnRzLkRFRkxBVEVSQVc6XG4gICAgICB0aGlzLmVyciA9IHpsaWJfZGVmbGF0ZS5kZWZsYXRlU2V0RGljdGlvbmFyeSh0aGlzLnN0cm0sIHRoaXMuZGljdGlvbmFyeSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAodGhpcy5lcnIgIT09IGV4cG9ydHMuWl9PSykge1xuICAgIHRoaXMuX2Vycm9yKCdGYWlsZWQgdG8gc2V0IGRpY3Rpb25hcnknKTtcbiAgfVxufTtcblxuWmxpYi5wcm90b3R5cGUuX3Jlc2V0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmVyciA9IGV4cG9ydHMuWl9PSztcblxuICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFOlxuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFUkFXOlxuICAgIGNhc2UgZXhwb3J0cy5HWklQOlxuICAgICAgdGhpcy5lcnIgPSB6bGliX2RlZmxhdGUuZGVmbGF0ZVJlc2V0KHRoaXMuc3RybSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURTpcbiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURVJBVzpcbiAgICBjYXNlIGV4cG9ydHMuR1VOWklQOlxuICAgICAgdGhpcy5lcnIgPSB6bGliX2luZmxhdGUuaW5mbGF0ZVJlc2V0KHRoaXMuc3RybSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAodGhpcy5lcnIgIT09IGV4cG9ydHMuWl9PSykge1xuICAgIHRoaXMuX2Vycm9yKCdGYWlsZWQgdG8gcmVzZXQgc3RyZWFtJyk7XG4gIH1cbn07XG5cbmV4cG9ydHMuWmxpYiA9IFpsaWI7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ3N0cmVhbScpLlRyYW5zZm9ybTtcbnZhciBiaW5kaW5nID0gcmVxdWlyZSgnLi9iaW5kaW5nJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKS5vaztcbnZhciBrTWF4TGVuZ3RoID0gcmVxdWlyZSgnYnVmZmVyJykua01heExlbmd0aDtcbnZhciBrUmFuZ2VFcnJvck1lc3NhZ2UgPSAnQ2Fubm90IGNyZWF0ZSBmaW5hbCBCdWZmZXIuIEl0IHdvdWxkIGJlIGxhcmdlciAnICsgJ3RoYW4gMHgnICsga01heExlbmd0aC50b1N0cmluZygxNikgKyAnIGJ5dGVzJztcblxuLy8gemxpYiBkb2Vzbid0IHByb3ZpZGUgdGhlc2UsIHNvIGtsdWRnZSB0aGVtIGluIGZvbGxvd2luZyB0aGUgc2FtZVxuLy8gY29uc3QgbmFtaW5nIHNjaGVtZSB6bGliIHVzZXMuXG5iaW5kaW5nLlpfTUlOX1dJTkRPV0JJVFMgPSA4O1xuYmluZGluZy5aX01BWF9XSU5ET1dCSVRTID0gMTU7XG5iaW5kaW5nLlpfREVGQVVMVF9XSU5ET1dCSVRTID0gMTU7XG5cbi8vIGZld2VyIHRoYW4gNjQgYnl0ZXMgcGVyIGNodW5rIGlzIHN0dXBpZC5cbi8vIHRlY2huaWNhbGx5IGl0IGNvdWxkIHdvcmsgd2l0aCBhcyBmZXcgYXMgOCwgYnV0IGV2ZW4gNjQgYnl0ZXNcbi8vIGlzIGFic3VyZGx5IGxvdy4gIFVzdWFsbHkgYSBNQiBvciBtb3JlIGlzIGJlc3QuXG5iaW5kaW5nLlpfTUlOX0NIVU5LID0gNjQ7XG5iaW5kaW5nLlpfTUFYX0NIVU5LID0gSW5maW5pdHk7XG5iaW5kaW5nLlpfREVGQVVMVF9DSFVOSyA9IDE2ICogMTAyNDtcblxuYmluZGluZy5aX01JTl9NRU1MRVZFTCA9IDE7XG5iaW5kaW5nLlpfTUFYX01FTUxFVkVMID0gOTtcbmJpbmRpbmcuWl9ERUZBVUxUX01FTUxFVkVMID0gODtcblxuYmluZGluZy5aX01JTl9MRVZFTCA9IC0xO1xuYmluZGluZy5aX01BWF9MRVZFTCA9IDk7XG5iaW5kaW5nLlpfREVGQVVMVF9MRVZFTCA9IGJpbmRpbmcuWl9ERUZBVUxUX0NPTVBSRVNTSU9OO1xuXG4vLyBleHBvc2UgYWxsIHRoZSB6bGliIGNvbnN0YW50c1xudmFyIGJrZXlzID0gT2JqZWN0LmtleXMoYmluZGluZyk7XG5mb3IgKHZhciBiayA9IDA7IGJrIDwgYmtleXMubGVuZ3RoOyBiaysrKSB7XG4gIHZhciBia2V5ID0gYmtleXNbYmtdO1xuICBpZiAoYmtleS5tYXRjaCgvXlovKSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBia2V5LCB7XG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogYmluZGluZ1tia2V5XSwgd3JpdGFibGU6IGZhbHNlXG4gICAgfSk7XG4gIH1cbn1cblxuLy8gdHJhbnNsYXRpb24gdGFibGUgZm9yIHJldHVybiBjb2Rlcy5cbnZhciBjb2RlcyA9IHtcbiAgWl9PSzogYmluZGluZy5aX09LLFxuICBaX1NUUkVBTV9FTkQ6IGJpbmRpbmcuWl9TVFJFQU1fRU5ELFxuICBaX05FRURfRElDVDogYmluZGluZy5aX05FRURfRElDVCxcbiAgWl9FUlJOTzogYmluZGluZy5aX0VSUk5PLFxuICBaX1NUUkVBTV9FUlJPUjogYmluZGluZy5aX1NUUkVBTV9FUlJPUixcbiAgWl9EQVRBX0VSUk9SOiBiaW5kaW5nLlpfREFUQV9FUlJPUixcbiAgWl9NRU1fRVJST1I6IGJpbmRpbmcuWl9NRU1fRVJST1IsXG4gIFpfQlVGX0VSUk9SOiBiaW5kaW5nLlpfQlVGX0VSUk9SLFxuICBaX1ZFUlNJT05fRVJST1I6IGJpbmRpbmcuWl9WRVJTSU9OX0VSUk9SXG59O1xuXG52YXIgY2tleXMgPSBPYmplY3Qua2V5cyhjb2Rlcyk7XG5mb3IgKHZhciBjayA9IDA7IGNrIDwgY2tleXMubGVuZ3RoOyBjaysrKSB7XG4gIHZhciBja2V5ID0gY2tleXNbY2tdO1xuICBjb2Rlc1tjb2Rlc1tja2V5XV0gPSBja2V5O1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ2NvZGVzJywge1xuICBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogT2JqZWN0LmZyZWV6ZShjb2RlcyksIHdyaXRhYmxlOiBmYWxzZVxufSk7XG5cbmV4cG9ydHMuRGVmbGF0ZSA9IERlZmxhdGU7XG5leHBvcnRzLkluZmxhdGUgPSBJbmZsYXRlO1xuZXhwb3J0cy5HemlwID0gR3ppcDtcbmV4cG9ydHMuR3VuemlwID0gR3VuemlwO1xuZXhwb3J0cy5EZWZsYXRlUmF3ID0gRGVmbGF0ZVJhdztcbmV4cG9ydHMuSW5mbGF0ZVJhdyA9IEluZmxhdGVSYXc7XG5leHBvcnRzLlVuemlwID0gVW56aXA7XG5cbmV4cG9ydHMuY3JlYXRlRGVmbGF0ZSA9IGZ1bmN0aW9uIChvKSB7XG4gIHJldHVybiBuZXcgRGVmbGF0ZShvKTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlSW5mbGF0ZSA9IGZ1bmN0aW9uIChvKSB7XG4gIHJldHVybiBuZXcgSW5mbGF0ZShvKTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlRGVmbGF0ZVJhdyA9IGZ1bmN0aW9uIChvKSB7XG4gIHJldHVybiBuZXcgRGVmbGF0ZVJhdyhvKTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlSW5mbGF0ZVJhdyA9IGZ1bmN0aW9uIChvKSB7XG4gIHJldHVybiBuZXcgSW5mbGF0ZVJhdyhvKTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlR3ppcCA9IGZ1bmN0aW9uIChvKSB7XG4gIHJldHVybiBuZXcgR3ppcChvKTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlR3VuemlwID0gZnVuY3Rpb24gKG8pIHtcbiAgcmV0dXJuIG5ldyBHdW56aXAobyk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZVVuemlwID0gZnVuY3Rpb24gKG8pIHtcbiAgcmV0dXJuIG5ldyBVbnppcChvKTtcbn07XG5cbi8vIENvbnZlbmllbmNlIG1ldGhvZHMuXG4vLyBjb21wcmVzcy9kZWNvbXByZXNzIGEgc3RyaW5nIG9yIGJ1ZmZlciBpbiBvbmUgc3RlcC5cbmV4cG9ydHMuZGVmbGF0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gb3B0cztcbiAgICBvcHRzID0ge307XG4gIH1cbiAgcmV0dXJuIHpsaWJCdWZmZXIobmV3IERlZmxhdGUob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0cy5kZWZsYXRlU3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHtcbiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBEZWZsYXRlKG9wdHMpLCBidWZmZXIpO1xufTtcblxuZXhwb3J0cy5nemlwID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgR3ppcChvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7XG59O1xuXG5leHBvcnRzLmd6aXBTeW5jID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cykge1xuICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IEd6aXAob3B0cyksIGJ1ZmZlcik7XG59O1xuXG5leHBvcnRzLmRlZmxhdGVSYXcgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG4gIHJldHVybiB6bGliQnVmZmVyKG5ldyBEZWZsYXRlUmF3KG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTtcbn07XG5cbmV4cG9ydHMuZGVmbGF0ZVJhd1N5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgRGVmbGF0ZVJhdyhvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmV4cG9ydHMudW56aXAgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG4gIHJldHVybiB6bGliQnVmZmVyKG5ldyBVbnppcChvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7XG59O1xuXG5leHBvcnRzLnVuemlwU3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHtcbiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBVbnppcChvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmV4cG9ydHMuaW5mbGF0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gb3B0cztcbiAgICBvcHRzID0ge307XG4gIH1cbiAgcmV0dXJuIHpsaWJCdWZmZXIobmV3IEluZmxhdGUob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0cy5pbmZsYXRlU3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHtcbiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBJbmZsYXRlKG9wdHMpLCBidWZmZXIpO1xufTtcblxuZXhwb3J0cy5ndW56aXAgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG4gIHJldHVybiB6bGliQnVmZmVyKG5ldyBHdW56aXAob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0cy5ndW56aXBTeW5jID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cykge1xuICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IEd1bnppcChvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmV4cG9ydHMuaW5mbGF0ZVJhdyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gb3B0cztcbiAgICBvcHRzID0ge307XG4gIH1cbiAgcmV0dXJuIHpsaWJCdWZmZXIobmV3IEluZmxhdGVSYXcob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0cy5pbmZsYXRlUmF3U3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHtcbiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBJbmZsYXRlUmF3KG9wdHMpLCBidWZmZXIpO1xufTtcblxuZnVuY3Rpb24gemxpYkJ1ZmZlcihlbmdpbmUsIGJ1ZmZlciwgY2FsbGJhY2spIHtcbiAgdmFyIGJ1ZmZlcnMgPSBbXTtcbiAgdmFyIG5yZWFkID0gMDtcblxuICBlbmdpbmUub24oJ2Vycm9yJywgb25FcnJvcik7XG4gIGVuZ2luZS5vbignZW5kJywgb25FbmQpO1xuXG4gIGVuZ2luZS5lbmQoYnVmZmVyKTtcbiAgZmxvdygpO1xuXG4gIGZ1bmN0aW9uIGZsb3coKSB7XG4gICAgdmFyIGNodW5rO1xuICAgIHdoaWxlIChudWxsICE9PSAoY2h1bmsgPSBlbmdpbmUucmVhZCgpKSkge1xuICAgICAgYnVmZmVycy5wdXNoKGNodW5rKTtcbiAgICAgIG5yZWFkICs9IGNodW5rLmxlbmd0aDtcbiAgICB9XG4gICAgZW5naW5lLm9uY2UoJ3JlYWRhYmxlJywgZmxvdyk7XG4gIH1cblxuICBmdW5jdGlvbiBvbkVycm9yKGVycikge1xuICAgIGVuZ2luZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25FbmQpO1xuICAgIGVuZ2luZS5yZW1vdmVMaXN0ZW5lcigncmVhZGFibGUnLCBmbG93KTtcbiAgICBjYWxsYmFjayhlcnIpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25FbmQoKSB7XG4gICAgdmFyIGJ1ZjtcbiAgICB2YXIgZXJyID0gbnVsbDtcblxuICAgIGlmIChucmVhZCA+PSBrTWF4TGVuZ3RoKSB7XG4gICAgICBlcnIgPSBuZXcgUmFuZ2VFcnJvcihrUmFuZ2VFcnJvck1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBidWYgPSBCdWZmZXIuY29uY2F0KGJ1ZmZlcnMsIG5yZWFkKTtcbiAgICB9XG5cbiAgICBidWZmZXJzID0gW107XG4gICAgZW5naW5lLmNsb3NlKCk7XG4gICAgY2FsbGJhY2soZXJyLCBidWYpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHpsaWJCdWZmZXJTeW5jKGVuZ2luZSwgYnVmZmVyKSB7XG4gIGlmICh0eXBlb2YgYnVmZmVyID09PSAnc3RyaW5nJykgYnVmZmVyID0gQnVmZmVyLmZyb20oYnVmZmVyKTtcblxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWZmZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdOb3QgYSBzdHJpbmcgb3IgYnVmZmVyJyk7XG5cbiAgdmFyIGZsdXNoRmxhZyA9IGVuZ2luZS5fZmluaXNoRmx1c2hGbGFnO1xuXG4gIHJldHVybiBlbmdpbmUuX3Byb2Nlc3NDaHVuayhidWZmZXIsIGZsdXNoRmxhZyk7XG59XG5cbi8vIGdlbmVyaWMgemxpYlxuLy8gbWluaW1hbCAyLWJ5dGUgaGVhZGVyXG5mdW5jdGlvbiBEZWZsYXRlKG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERlZmxhdGUpKSByZXR1cm4gbmV3IERlZmxhdGUob3B0cyk7XG4gIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLkRFRkxBVEUpO1xufVxuXG5mdW5jdGlvbiBJbmZsYXRlKG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEluZmxhdGUpKSByZXR1cm4gbmV3IEluZmxhdGUob3B0cyk7XG4gIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLklORkxBVEUpO1xufVxuXG4vLyBnemlwIC0gYmlnZ2VyIGhlYWRlciwgc2FtZSBkZWZsYXRlIGNvbXByZXNzaW9uXG5mdW5jdGlvbiBHemlwKG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEd6aXApKSByZXR1cm4gbmV3IEd6aXAob3B0cyk7XG4gIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLkdaSVApO1xufVxuXG5mdW5jdGlvbiBHdW56aXAob3B0cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgR3VuemlwKSkgcmV0dXJuIG5ldyBHdW56aXAob3B0cyk7XG4gIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLkdVTlpJUCk7XG59XG5cbi8vIHJhdyAtIG5vIGhlYWRlclxuZnVuY3Rpb24gRGVmbGF0ZVJhdyhvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEZWZsYXRlUmF3KSkgcmV0dXJuIG5ldyBEZWZsYXRlUmF3KG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5ERUZMQVRFUkFXKTtcbn1cblxuZnVuY3Rpb24gSW5mbGF0ZVJhdyhvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBJbmZsYXRlUmF3KSkgcmV0dXJuIG5ldyBJbmZsYXRlUmF3KG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5JTkZMQVRFUkFXKTtcbn1cblxuLy8gYXV0by1kZXRlY3QgaGVhZGVyLlxuZnVuY3Rpb24gVW56aXAob3B0cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVW56aXApKSByZXR1cm4gbmV3IFVuemlwKG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5VTlpJUCk7XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRGbHVzaEZsYWcoZmxhZykge1xuICByZXR1cm4gZmxhZyA9PT0gYmluZGluZy5aX05PX0ZMVVNIIHx8IGZsYWcgPT09IGJpbmRpbmcuWl9QQVJUSUFMX0ZMVVNIIHx8IGZsYWcgPT09IGJpbmRpbmcuWl9TWU5DX0ZMVVNIIHx8IGZsYWcgPT09IGJpbmRpbmcuWl9GVUxMX0ZMVVNIIHx8IGZsYWcgPT09IGJpbmRpbmcuWl9GSU5JU0ggfHwgZmxhZyA9PT0gYmluZGluZy5aX0JMT0NLO1xufVxuXG4vLyB0aGUgWmxpYiBjbGFzcyB0aGV5IGFsbCBpbmhlcml0IGZyb21cbi8vIFRoaXMgdGhpbmcgbWFuYWdlcyB0aGUgcXVldWUgb2YgcmVxdWVzdHMsIGFuZCByZXR1cm5zXG4vLyB0cnVlIG9yIGZhbHNlIGlmIHRoZXJlIGlzIGFueXRoaW5nIGluIHRoZSBxdWV1ZSB3aGVuXG4vLyB5b3UgY2FsbCB0aGUgLndyaXRlKCkgbWV0aG9kLlxuXG5mdW5jdGlvbiBabGliKG9wdHMsIG1vZGUpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB0aGlzLl9vcHRzID0gb3B0cyA9IG9wdHMgfHwge307XG4gIHRoaXMuX2NodW5rU2l6ZSA9IG9wdHMuY2h1bmtTaXplIHx8IGV4cG9ydHMuWl9ERUZBVUxUX0NIVU5LO1xuXG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMsIG9wdHMpO1xuXG4gIGlmIChvcHRzLmZsdXNoICYmICFpc1ZhbGlkRmx1c2hGbGFnKG9wdHMuZmx1c2gpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGZsdXNoIGZsYWc6ICcgKyBvcHRzLmZsdXNoKTtcbiAgfVxuICBpZiAob3B0cy5maW5pc2hGbHVzaCAmJiAhaXNWYWxpZEZsdXNoRmxhZyhvcHRzLmZpbmlzaEZsdXNoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmbHVzaCBmbGFnOiAnICsgb3B0cy5maW5pc2hGbHVzaCk7XG4gIH1cblxuICB0aGlzLl9mbHVzaEZsYWcgPSBvcHRzLmZsdXNoIHx8IGJpbmRpbmcuWl9OT19GTFVTSDtcbiAgdGhpcy5fZmluaXNoRmx1c2hGbGFnID0gdHlwZW9mIG9wdHMuZmluaXNoRmx1c2ggIT09ICd1bmRlZmluZWQnID8gb3B0cy5maW5pc2hGbHVzaCA6IGJpbmRpbmcuWl9GSU5JU0g7XG5cbiAgaWYgKG9wdHMuY2h1bmtTaXplKSB7XG4gICAgaWYgKG9wdHMuY2h1bmtTaXplIDwgZXhwb3J0cy5aX01JTl9DSFVOSyB8fCBvcHRzLmNodW5rU2l6ZSA+IGV4cG9ydHMuWl9NQVhfQ0hVTkspIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjaHVuayBzaXplOiAnICsgb3B0cy5jaHVua1NpemUpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLndpbmRvd0JpdHMpIHtcbiAgICBpZiAob3B0cy53aW5kb3dCaXRzIDwgZXhwb3J0cy5aX01JTl9XSU5ET1dCSVRTIHx8IG9wdHMud2luZG93Qml0cyA+IGV4cG9ydHMuWl9NQVhfV0lORE9XQklUUykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHdpbmRvd0JpdHM6ICcgKyBvcHRzLndpbmRvd0JpdHMpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLmxldmVsKSB7XG4gICAgaWYgKG9wdHMubGV2ZWwgPCBleHBvcnRzLlpfTUlOX0xFVkVMIHx8IG9wdHMubGV2ZWwgPiBleHBvcnRzLlpfTUFYX0xFVkVMKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29tcHJlc3Npb24gbGV2ZWw6ICcgKyBvcHRzLmxldmVsKTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy5tZW1MZXZlbCkge1xuICAgIGlmIChvcHRzLm1lbUxldmVsIDwgZXhwb3J0cy5aX01JTl9NRU1MRVZFTCB8fCBvcHRzLm1lbUxldmVsID4gZXhwb3J0cy5aX01BWF9NRU1MRVZFTCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1lbUxldmVsOiAnICsgb3B0cy5tZW1MZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdHMuc3RyYXRlZ3kpIHtcbiAgICBpZiAob3B0cy5zdHJhdGVneSAhPSBleHBvcnRzLlpfRklMVEVSRUQgJiYgb3B0cy5zdHJhdGVneSAhPSBleHBvcnRzLlpfSFVGRk1BTl9PTkxZICYmIG9wdHMuc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX1JMRSAmJiBvcHRzLnN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9GSVhFRCAmJiBvcHRzLnN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9ERUZBVUxUX1NUUkFURUdZKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyYXRlZ3k6ICcgKyBvcHRzLnN0cmF0ZWd5KTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy5kaWN0aW9uYXJ5KSB7XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIob3B0cy5kaWN0aW9uYXJ5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRpY3Rpb25hcnk6IGl0IHNob3VsZCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpO1xuICAgIH1cbiAgfVxuXG4gIHRoaXMuX2hhbmRsZSA9IG5ldyBiaW5kaW5nLlpsaWIobW9kZSk7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB0aGlzLl9oYWRFcnJvciA9IGZhbHNlO1xuICB0aGlzLl9oYW5kbGUub25lcnJvciA9IGZ1bmN0aW9uIChtZXNzYWdlLCBlcnJubykge1xuICAgIC8vIHRoZXJlIGlzIG5vIHdheSB0byBjbGVhbmx5IHJlY292ZXIuXG4gICAgLy8gY29udGludWluZyBvbmx5IG9ic2N1cmVzIHByb2JsZW1zLlxuICAgIF9jbG9zZShzZWxmKTtcbiAgICBzZWxmLl9oYWRFcnJvciA9IHRydWU7XG5cbiAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgZXJyb3IuZXJybm8gPSBlcnJubztcbiAgICBlcnJvci5jb2RlID0gZXhwb3J0cy5jb2Rlc1tlcnJub107XG4gICAgc2VsZi5lbWl0KCdlcnJvcicsIGVycm9yKTtcbiAgfTtcblxuICB2YXIgbGV2ZWwgPSBleHBvcnRzLlpfREVGQVVMVF9DT01QUkVTU0lPTjtcbiAgaWYgKHR5cGVvZiBvcHRzLmxldmVsID09PSAnbnVtYmVyJykgbGV2ZWwgPSBvcHRzLmxldmVsO1xuXG4gIHZhciBzdHJhdGVneSA9IGV4cG9ydHMuWl9ERUZBVUxUX1NUUkFURUdZO1xuICBpZiAodHlwZW9mIG9wdHMuc3RyYXRlZ3kgPT09ICdudW1iZXInKSBzdHJhdGVneSA9IG9wdHMuc3RyYXRlZ3k7XG5cbiAgdGhpcy5faGFuZGxlLmluaXQob3B0cy53aW5kb3dCaXRzIHx8IGV4cG9ydHMuWl9ERUZBVUxUX1dJTkRPV0JJVFMsIGxldmVsLCBvcHRzLm1lbUxldmVsIHx8IGV4cG9ydHMuWl9ERUZBVUxUX01FTUxFVkVMLCBzdHJhdGVneSwgb3B0cy5kaWN0aW9uYXJ5KTtcblxuICB0aGlzLl9idWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUodGhpcy5fY2h1bmtTaXplKTtcbiAgdGhpcy5fb2Zmc2V0ID0gMDtcbiAgdGhpcy5fbGV2ZWwgPSBsZXZlbDtcbiAgdGhpcy5fc3RyYXRlZ3kgPSBzdHJhdGVneTtcblxuICB0aGlzLm9uY2UoJ2VuZCcsIHRoaXMuY2xvc2UpO1xuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnX2Nsb3NlZCcsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAhX3RoaXMuX2hhbmRsZTtcbiAgICB9LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG51dGlsLmluaGVyaXRzKFpsaWIsIFRyYW5zZm9ybSk7XG5cblpsaWIucHJvdG90eXBlLnBhcmFtcyA9IGZ1bmN0aW9uIChsZXZlbCwgc3RyYXRlZ3ksIGNhbGxiYWNrKSB7XG4gIGlmIChsZXZlbCA8IGV4cG9ydHMuWl9NSU5fTEVWRUwgfHwgbGV2ZWwgPiBleHBvcnRzLlpfTUFYX0xFVkVMKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgY29tcHJlc3Npb24gbGV2ZWw6ICcgKyBsZXZlbCk7XG4gIH1cbiAgaWYgKHN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9GSUxURVJFRCAmJiBzdHJhdGVneSAhPSBleHBvcnRzLlpfSFVGRk1BTl9PTkxZICYmIHN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9STEUgJiYgc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0ZJWEVEICYmIHN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9ERUZBVUxUX1NUUkFURUdZKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBzdHJhdGVneTogJyArIHN0cmF0ZWd5KTtcbiAgfVxuXG4gIGlmICh0aGlzLl9sZXZlbCAhPT0gbGV2ZWwgfHwgdGhpcy5fc3RyYXRlZ3kgIT09IHN0cmF0ZWd5KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuZmx1c2goYmluZGluZy5aX1NZTkNfRkxVU0gsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGFzc2VydChzZWxmLl9oYW5kbGUsICd6bGliIGJpbmRpbmcgY2xvc2VkJyk7XG4gICAgICBzZWxmLl9oYW5kbGUucGFyYW1zKGxldmVsLCBzdHJhdGVneSk7XG4gICAgICBpZiAoIXNlbGYuX2hhZEVycm9yKSB7XG4gICAgICAgIHNlbGYuX2xldmVsID0gbGV2ZWw7XG4gICAgICAgIHNlbGYuX3N0cmF0ZWd5ID0gc3RyYXRlZ3k7XG4gICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTtcbiAgfVxufTtcblxuWmxpYi5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIGFzc2VydCh0aGlzLl9oYW5kbGUsICd6bGliIGJpbmRpbmcgY2xvc2VkJyk7XG4gIHJldHVybiB0aGlzLl9oYW5kbGUucmVzZXQoKTtcbn07XG5cbi8vIFRoaXMgaXMgdGhlIF9mbHVzaCBmdW5jdGlvbiBjYWxsZWQgYnkgdGhlIHRyYW5zZm9ybSBjbGFzcyxcbi8vIGludGVybmFsbHksIHdoZW4gdGhlIGxhc3QgY2h1bmsgaGFzIGJlZW4gd3JpdHRlbi5cblpsaWIucHJvdG90eXBlLl9mbHVzaCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB0aGlzLl90cmFuc2Zvcm0oQnVmZmVyLmFsbG9jKDApLCAnJywgY2FsbGJhY2spO1xufTtcblxuWmxpYi5wcm90b3R5cGUuZmx1c2ggPSBmdW5jdGlvbiAoa2luZCwgY2FsbGJhY2spIHtcbiAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgdmFyIHdzID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAodHlwZW9mIGtpbmQgPT09ICdmdW5jdGlvbicgfHwga2luZCA9PT0gdW5kZWZpbmVkICYmICFjYWxsYmFjaykge1xuICAgIGNhbGxiYWNrID0ga2luZDtcbiAgICBraW5kID0gYmluZGluZy5aX0ZVTExfRkxVU0g7XG4gIH1cblxuICBpZiAod3MuZW5kZWQpIHtcbiAgICBpZiAoY2FsbGJhY2spIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2spO1xuICB9IGVsc2UgaWYgKHdzLmVuZGluZykge1xuICAgIGlmIChjYWxsYmFjaykgdGhpcy5vbmNlKCdlbmQnLCBjYWxsYmFjayk7XG4gIH0gZWxzZSBpZiAod3MubmVlZERyYWluKSB7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLm9uY2UoJ2RyYWluJywgZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMyLmZsdXNoKGtpbmQsIGNhbGxiYWNrKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9mbHVzaEZsYWcgPSBraW5kO1xuICAgIHRoaXMud3JpdGUoQnVmZmVyLmFsbG9jKDApLCAnJywgY2FsbGJhY2spO1xuICB9XG59O1xuXG5abGliLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBfY2xvc2UodGhpcywgY2FsbGJhY2spO1xuICBwcm9jZXNzLm5leHRUaWNrKGVtaXRDbG9zZU5ULCB0aGlzKTtcbn07XG5cbmZ1bmN0aW9uIF9jbG9zZShlbmdpbmUsIGNhbGxiYWNrKSB7XG4gIGlmIChjYWxsYmFjaykgcHJvY2Vzcy5uZXh0VGljayhjYWxsYmFjayk7XG5cbiAgLy8gQ2FsbGVyIG1heSBpbnZva2UgLmNsb3NlIGFmdGVyIGEgemxpYiBlcnJvciAod2hpY2ggd2lsbCBudWxsIF9oYW5kbGUpLlxuICBpZiAoIWVuZ2luZS5faGFuZGxlKSByZXR1cm47XG5cbiAgZW5naW5lLl9oYW5kbGUuY2xvc2UoKTtcbiAgZW5naW5lLl9oYW5kbGUgPSBudWxsO1xufVxuXG5mdW5jdGlvbiBlbWl0Q2xvc2VOVChzZWxmKSB7XG4gIHNlbGYuZW1pdCgnY2xvc2UnKTtcbn1cblxuWmxpYi5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBmbHVzaEZsYWc7XG4gIHZhciB3cyA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG4gIHZhciBlbmRpbmcgPSB3cy5lbmRpbmcgfHwgd3MuZW5kZWQ7XG4gIHZhciBsYXN0ID0gZW5kaW5nICYmICghY2h1bmsgfHwgd3MubGVuZ3RoID09PSBjaHVuay5sZW5ndGgpO1xuXG4gIGlmIChjaHVuayAhPT0gbnVsbCAmJiAhQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkgcmV0dXJuIGNiKG5ldyBFcnJvcignaW52YWxpZCBpbnB1dCcpKTtcblxuICBpZiAoIXRoaXMuX2hhbmRsZSkgcmV0dXJuIGNiKG5ldyBFcnJvcignemxpYiBiaW5kaW5nIGNsb3NlZCcpKTtcblxuICAvLyBJZiBpdCdzIHRoZSBsYXN0IGNodW5rLCBvciBhIGZpbmFsIGZsdXNoLCB3ZSB1c2UgdGhlIFpfRklOSVNIIGZsdXNoIGZsYWdcbiAgLy8gKG9yIHdoYXRldmVyIGZsYWcgd2FzIHByb3ZpZGVkIHVzaW5nIG9wdHMuZmluaXNoRmx1c2gpLlxuICAvLyBJZiBpdCdzIGV4cGxpY2l0bHkgZmx1c2hpbmcgYXQgc29tZSBvdGhlciB0aW1lLCB0aGVuIHdlIHVzZVxuICAvLyBaX0ZVTExfRkxVU0guIE90aGVyd2lzZSwgdXNlIFpfTk9fRkxVU0ggZm9yIG1heGltdW0gY29tcHJlc3Npb25cbiAgLy8gZ29vZG5lc3MuXG4gIGlmIChsYXN0KSBmbHVzaEZsYWcgPSB0aGlzLl9maW5pc2hGbHVzaEZsYWc7ZWxzZSB7XG4gICAgZmx1c2hGbGFnID0gdGhpcy5fZmx1c2hGbGFnO1xuICAgIC8vIG9uY2Ugd2UndmUgZmx1c2hlZCB0aGUgbGFzdCBvZiB0aGUgcXVldWUsIHN0b3AgZmx1c2hpbmcgYW5kXG4gICAgLy8gZ28gYmFjayB0byB0aGUgbm9ybWFsIGJlaGF2aW9yLlxuICAgIGlmIChjaHVuay5sZW5ndGggPj0gd3MubGVuZ3RoKSB7XG4gICAgICB0aGlzLl9mbHVzaEZsYWcgPSB0aGlzLl9vcHRzLmZsdXNoIHx8IGJpbmRpbmcuWl9OT19GTFVTSDtcbiAgICB9XG4gIH1cblxuICB0aGlzLl9wcm9jZXNzQ2h1bmsoY2h1bmssIGZsdXNoRmxhZywgY2IpO1xufTtcblxuWmxpYi5wcm90b3R5cGUuX3Byb2Nlc3NDaHVuayA9IGZ1bmN0aW9uIChjaHVuaywgZmx1c2hGbGFnLCBjYikge1xuICB2YXIgYXZhaWxJbkJlZm9yZSA9IGNodW5rICYmIGNodW5rLmxlbmd0aDtcbiAgdmFyIGF2YWlsT3V0QmVmb3JlID0gdGhpcy5fY2h1bmtTaXplIC0gdGhpcy5fb2Zmc2V0O1xuICB2YXIgaW5PZmYgPSAwO1xuXG4gIHZhciBzZWxmID0gdGhpcztcblxuICB2YXIgYXN5bmMgPSB0eXBlb2YgY2IgPT09ICdmdW5jdGlvbic7XG5cbiAgaWYgKCFhc3luYykge1xuICAgIHZhciBidWZmZXJzID0gW107XG4gICAgdmFyIG5yZWFkID0gMDtcblxuICAgIHZhciBlcnJvcjtcbiAgICB0aGlzLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcikge1xuICAgICAgZXJyb3IgPSBlcjtcbiAgICB9KTtcblxuICAgIGFzc2VydCh0aGlzLl9oYW5kbGUsICd6bGliIGJpbmRpbmcgY2xvc2VkJyk7XG4gICAgZG8ge1xuICAgICAgdmFyIHJlcyA9IHRoaXMuX2hhbmRsZS53cml0ZVN5bmMoZmx1c2hGbGFnLCBjaHVuaywgLy8gaW5cbiAgICAgIGluT2ZmLCAvLyBpbl9vZmZcbiAgICAgIGF2YWlsSW5CZWZvcmUsIC8vIGluX2xlblxuICAgICAgdGhpcy5fYnVmZmVyLCAvLyBvdXRcbiAgICAgIHRoaXMuX29mZnNldCwgLy9vdXRfb2ZmXG4gICAgICBhdmFpbE91dEJlZm9yZSk7IC8vIG91dF9sZW5cbiAgICB9IHdoaWxlICghdGhpcy5faGFkRXJyb3IgJiYgY2FsbGJhY2socmVzWzBdLCByZXNbMV0pKTtcblxuICAgIGlmICh0aGlzLl9oYWRFcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgaWYgKG5yZWFkID49IGtNYXhMZW5ndGgpIHtcbiAgICAgIF9jbG9zZSh0aGlzKTtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGtSYW5nZUVycm9yTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgdmFyIGJ1ZiA9IEJ1ZmZlci5jb25jYXQoYnVmZmVycywgbnJlYWQpO1xuICAgIF9jbG9zZSh0aGlzKTtcblxuICAgIHJldHVybiBidWY7XG4gIH1cblxuICBhc3NlcnQodGhpcy5faGFuZGxlLCAnemxpYiBiaW5kaW5nIGNsb3NlZCcpO1xuICB2YXIgcmVxID0gdGhpcy5faGFuZGxlLndyaXRlKGZsdXNoRmxhZywgY2h1bmssIC8vIGluXG4gIGluT2ZmLCAvLyBpbl9vZmZcbiAgYXZhaWxJbkJlZm9yZSwgLy8gaW5fbGVuXG4gIHRoaXMuX2J1ZmZlciwgLy8gb3V0XG4gIHRoaXMuX29mZnNldCwgLy9vdXRfb2ZmXG4gIGF2YWlsT3V0QmVmb3JlKTsgLy8gb3V0X2xlblxuXG4gIHJlcS5idWZmZXIgPSBjaHVuaztcbiAgcmVxLmNhbGxiYWNrID0gY2FsbGJhY2s7XG5cbiAgZnVuY3Rpb24gY2FsbGJhY2soYXZhaWxJbkFmdGVyLCBhdmFpbE91dEFmdGVyKSB7XG4gICAgLy8gV2hlbiB0aGUgY2FsbGJhY2sgaXMgdXNlZCBpbiBhbiBhc3luYyB3cml0ZSwgdGhlIGNhbGxiYWNrJ3NcbiAgICAvLyBjb250ZXh0IGlzIHRoZSBgcmVxYCBvYmplY3QgdGhhdCB3YXMgY3JlYXRlZC4gVGhlIHJlcSBvYmplY3RcbiAgICAvLyBpcyA9PT0gdGhpcy5faGFuZGxlLCBhbmQgdGhhdCdzIHdoeSBpdCdzIGltcG9ydGFudCB0byBudWxsXG4gICAgLy8gb3V0IHRoZSB2YWx1ZXMgYWZ0ZXIgdGhleSBhcmUgZG9uZSBiZWluZyB1c2VkLiBgdGhpcy5faGFuZGxlYFxuICAgIC8vIGNhbiBzdGF5IGluIG1lbW9yeSBsb25nZXIgdGhhbiB0aGUgY2FsbGJhY2sgYW5kIGJ1ZmZlciBhcmUgbmVlZGVkLlxuICAgIGlmICh0aGlzKSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IG51bGw7XG4gICAgICB0aGlzLmNhbGxiYWNrID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoc2VsZi5faGFkRXJyb3IpIHJldHVybjtcblxuICAgIHZhciBoYXZlID0gYXZhaWxPdXRCZWZvcmUgLSBhdmFpbE91dEFmdGVyO1xuICAgIGFzc2VydChoYXZlID49IDAsICdoYXZlIHNob3VsZCBub3QgZ28gZG93bicpO1xuXG4gICAgaWYgKGhhdmUgPiAwKSB7XG4gICAgICB2YXIgb3V0ID0gc2VsZi5fYnVmZmVyLnNsaWNlKHNlbGYuX29mZnNldCwgc2VsZi5fb2Zmc2V0ICsgaGF2ZSk7XG4gICAgICBzZWxmLl9vZmZzZXQgKz0gaGF2ZTtcbiAgICAgIC8vIHNlcnZlIHNvbWUgb3V0cHV0IHRvIHRoZSBjb25zdW1lci5cbiAgICAgIGlmIChhc3luYykge1xuICAgICAgICBzZWxmLnB1c2gob3V0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJ1ZmZlcnMucHVzaChvdXQpO1xuICAgICAgICBucmVhZCArPSBvdXQubGVuZ3RoO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGV4aGF1c3RlZCB0aGUgb3V0cHV0IGJ1ZmZlciwgb3IgdXNlZCBhbGwgdGhlIGlucHV0IGNyZWF0ZSBhIG5ldyBvbmUuXG4gICAgaWYgKGF2YWlsT3V0QWZ0ZXIgPT09IDAgfHwgc2VsZi5fb2Zmc2V0ID49IHNlbGYuX2NodW5rU2l6ZSkge1xuICAgICAgYXZhaWxPdXRCZWZvcmUgPSBzZWxmLl9jaHVua1NpemU7XG4gICAgICBzZWxmLl9vZmZzZXQgPSAwO1xuICAgICAgc2VsZi5fYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKHNlbGYuX2NodW5rU2l6ZSk7XG4gICAgfVxuXG4gICAgaWYgKGF2YWlsT3V0QWZ0ZXIgPT09IDApIHtcbiAgICAgIC8vIE5vdCBhY3R1YWxseSBkb25lLiAgTmVlZCB0byByZXByb2Nlc3MuXG4gICAgICAvLyBBbHNvLCB1cGRhdGUgdGhlIGF2YWlsSW5CZWZvcmUgdG8gdGhlIGF2YWlsSW5BZnRlciB2YWx1ZSxcbiAgICAgIC8vIHNvIHRoYXQgaWYgd2UgaGF2ZSB0byBoaXQgaXQgYSB0aGlyZCAoZm91cnRoLCBldGMuKSB0aW1lLFxuICAgICAgLy8gaXQnbGwgaGF2ZSB0aGUgY29ycmVjdCBieXRlIGNvdW50cy5cbiAgICAgIGluT2ZmICs9IGF2YWlsSW5CZWZvcmUgLSBhdmFpbEluQWZ0ZXI7XG4gICAgICBhdmFpbEluQmVmb3JlID0gYXZhaWxJbkFmdGVyO1xuXG4gICAgICBpZiAoIWFzeW5jKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgdmFyIG5ld1JlcSA9IHNlbGYuX2hhbmRsZS53cml0ZShmbHVzaEZsYWcsIGNodW5rLCBpbk9mZiwgYXZhaWxJbkJlZm9yZSwgc2VsZi5fYnVmZmVyLCBzZWxmLl9vZmZzZXQsIHNlbGYuX2NodW5rU2l6ZSk7XG4gICAgICBuZXdSZXEuY2FsbGJhY2sgPSBjYWxsYmFjazsgLy8gdGhpcyBzYW1lIGZ1bmN0aW9uXG4gICAgICBuZXdSZXEuYnVmZmVyID0gY2h1bms7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFhc3luYykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gZmluaXNoZWQgd2l0aCB0aGUgY2h1bmsuXG4gICAgY2IoKTtcbiAgfVxufTtcblxudXRpbC5pbmhlcml0cyhEZWZsYXRlLCBabGliKTtcbnV0aWwuaW5oZXJpdHMoSW5mbGF0ZSwgWmxpYik7XG51dGlsLmluaGVyaXRzKEd6aXAsIFpsaWIpO1xudXRpbC5pbmhlcml0cyhHdW56aXAsIFpsaWIpO1xudXRpbC5pbmhlcml0cyhEZWZsYXRlUmF3LCBabGliKTtcbnV0aWwuaW5oZXJpdHMoSW5mbGF0ZVJhdywgWmxpYik7XG51dGlsLmluaGVyaXRzKFVuemlwLCBabGliKTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHhvciAoYSwgYikge1xuICB2YXIgbGVuZ3RoID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKVxuICB2YXIgYnVmZmVyID0gbmV3IEJ1ZmZlcihsZW5ndGgpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGJ1ZmZlcltpXSA9IGFbaV0gXiBiW2ldXG4gIH1cblxuICByZXR1cm4gYnVmZmVyXG59XG4iLCIvKiFcbiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLlxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5cbid1c2Ugc3RyaWN0J1xuXG5jb25zdCBiYXNlNjQgPSByZXF1aXJlKCdiYXNlNjQtanMnKVxuY29uc3QgaWVlZTc1NCA9IHJlcXVpcmUoJ2llZWU3NTQnKVxuY29uc3QgY3VzdG9tSW5zcGVjdFN5bWJvbCA9XG4gICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBTeW1ib2xbJ2ZvciddID09PSAnZnVuY3Rpb24nKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGRvdC1ub3RhdGlvblxuICAgID8gU3ltYm9sWydmb3InXSgnbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGRvdC1ub3RhdGlvblxuICAgIDogbnVsbFxuXG5leHBvcnRzLkJ1ZmZlciA9IEJ1ZmZlclxuZXhwb3J0cy5TbG93QnVmZmVyID0gU2xvd0J1ZmZlclxuZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFUyA9IDUwXG5cbmNvbnN0IEtfTUFYX0xFTkdUSCA9IDB4N2ZmZmZmZmZcbmV4cG9ydHMua01heExlbmd0aCA9IEtfTUFYX0xFTkdUSFxuXG4vKipcbiAqIElmIGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGA6XG4gKiAgID09PSB0cnVlICAgIFVzZSBVaW50OEFycmF5IGltcGxlbWVudGF0aW9uIChmYXN0ZXN0KVxuICogICA9PT0gZmFsc2UgICBQcmludCB3YXJuaW5nIGFuZCByZWNvbW1lbmQgdXNpbmcgYGJ1ZmZlcmAgdjQueCB3aGljaCBoYXMgYW4gT2JqZWN0XG4gKiAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIChtb3N0IGNvbXBhdGlibGUsIGV2ZW4gSUU2KVxuICpcbiAqIEJyb3dzZXJzIHRoYXQgc3VwcG9ydCB0eXBlZCBhcnJheXMgYXJlIElFIDEwKywgRmlyZWZveCA0KywgQ2hyb21lIDcrLCBTYWZhcmkgNS4xKyxcbiAqIE9wZXJhIDExLjYrLCBpT1MgNC4yKy5cbiAqXG4gKiBXZSByZXBvcnQgdGhhdCB0aGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBpZiB0aGUgYXJlIG5vdCBzdWJjbGFzc2FibGVcbiAqIHVzaW5nIF9fcHJvdG9fXy4gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWBcbiAqIChTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOCkuIElFIDEwIGxhY2tzIHN1cHBvcnRcbiAqIGZvciBfX3Byb3RvX18gYW5kIGhhcyBhIGJ1Z2d5IHR5cGVkIGFycmF5IGltcGxlbWVudGF0aW9uLlxuICovXG5CdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCA9IHR5cGVkQXJyYXlTdXBwb3J0KClcblxuaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICBjb25zb2xlLmVycm9yKFxuICAgICdUaGlzIGJyb3dzZXIgbGFja3MgdHlwZWQgYXJyYXkgKFVpbnQ4QXJyYXkpIHN1cHBvcnQgd2hpY2ggaXMgcmVxdWlyZWQgYnkgJyArXG4gICAgJ2BidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQuJ1xuICApXG59XG5cbmZ1bmN0aW9uIHR5cGVkQXJyYXlTdXBwb3J0ICgpIHtcbiAgLy8gQ2FuIHR5cGVkIGFycmF5IGluc3RhbmNlcyBjYW4gYmUgYXVnbWVudGVkP1xuICB0cnkge1xuICAgIGNvbnN0IGFyciA9IG5ldyBVaW50OEFycmF5KDEpXG4gICAgY29uc3QgcHJvdG8gPSB7IGZvbzogZnVuY3Rpb24gKCkgeyByZXR1cm4gNDIgfSB9XG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKHByb3RvLCBVaW50OEFycmF5LnByb3RvdHlwZSlcbiAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoYXJyLCBwcm90bylcbiAgICByZXR1cm4gYXJyLmZvbygpID09PSA0MlxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlci5wcm90b3R5cGUsICdwYXJlbnQnLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKHRoaXMpKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyXG4gIH1cbn0pXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIucHJvdG90eXBlLCAnb2Zmc2V0Jywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0aGlzKSkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB0aGlzLmJ5dGVPZmZzZXRcbiAgfVxufSlcblxuZnVuY3Rpb24gY3JlYXRlQnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKGxlbmd0aCA+IEtfTUFYX0xFTkdUSCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInICsgbGVuZ3RoICsgJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcInNpemVcIicpXG4gIH1cbiAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2VcbiAgY29uc3QgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKVxuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoYnVmLCBCdWZmZXIucHJvdG90eXBlKVxuICByZXR1cm4gYnVmXG59XG5cbi8qKlxuICogVGhlIEJ1ZmZlciBjb25zdHJ1Y3RvciByZXR1cm5zIGluc3RhbmNlcyBvZiBgVWludDhBcnJheWAgdGhhdCBoYXZlIHRoZWlyXG4gKiBwcm90b3R5cGUgY2hhbmdlZCB0byBgQnVmZmVyLnByb3RvdHlwZWAuIEZ1cnRoZXJtb3JlLCBgQnVmZmVyYCBpcyBhIHN1YmNsYXNzIG9mXG4gKiBgVWludDhBcnJheWAsIHNvIHRoZSByZXR1cm5lZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGFsbCB0aGUgbm9kZSBgQnVmZmVyYCBtZXRob2RzXG4gKiBhbmQgdGhlIGBVaW50OEFycmF5YCBtZXRob2RzLiBTcXVhcmUgYnJhY2tldCBub3RhdGlvbiB3b3JrcyBhcyBleHBlY3RlZCAtLSBpdFxuICogcmV0dXJucyBhIHNpbmdsZSBvY3RldC5cbiAqXG4gKiBUaGUgYFVpbnQ4QXJyYXlgIHByb3RvdHlwZSByZW1haW5zIHVubW9kaWZpZWQuXG4gKi9cblxuZnVuY3Rpb24gQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICAvLyBDb21tb24gY2FzZS5cbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZ09yT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJ1xuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gYWxsb2NVbnNhZmUoYXJnKVxuICB9XG4gIHJldHVybiBmcm9tKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucG9vbFNpemUgPSA4MTkyIC8vIG5vdCB1c2VkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb25cblxuZnVuY3Rpb24gZnJvbSAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmcm9tU3RyaW5nKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0KVxuICB9XG5cbiAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5Vmlldyh2YWx1ZSlcbiAgfVxuXG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCAnICtcbiAgICAgICdvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnICsgKHR5cGVvZiB2YWx1ZSlcbiAgICApXG4gIH1cblxuICBpZiAoaXNJbnN0YW5jZSh2YWx1ZSwgQXJyYXlCdWZmZXIpIHx8XG4gICAgICAodmFsdWUgJiYgaXNJbnN0YW5jZSh2YWx1ZS5idWZmZXIsIEFycmF5QnVmZmVyKSkpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAodHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgKGlzSW5zdGFuY2UodmFsdWUsIFNoYXJlZEFycmF5QnVmZmVyKSB8fFxuICAgICAgKHZhbHVlICYmIGlzSW5zdGFuY2UodmFsdWUuYnVmZmVyLCBTaGFyZWRBcnJheUJ1ZmZlcikpKSkge1xuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJ2YWx1ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlIG51bWJlcidcbiAgICApXG4gIH1cblxuICBjb25zdCB2YWx1ZU9mID0gdmFsdWUudmFsdWVPZiAmJiB2YWx1ZS52YWx1ZU9mKClcbiAgaWYgKHZhbHVlT2YgIT0gbnVsbCAmJiB2YWx1ZU9mICE9PSB2YWx1ZSkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZU9mLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBjb25zdCBiID0gZnJvbU9iamVjdCh2YWx1ZSlcbiAgaWYgKGIpIHJldHVybiBiXG5cbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1ByaW1pdGl2ZSAhPSBudWxsICYmXG4gICAgICB0eXBlb2YgdmFsdWVbU3ltYm9sLnRvUHJpbWl0aXZlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh2YWx1ZVtTeW1ib2wudG9QcmltaXRpdmVdKCdzdHJpbmcnKSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAnVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgJyArXG4gICAgJ29yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICcgKyAodHlwZW9mIHZhbHVlKVxuICApXG59XG5cbi8qKlxuICogRnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQnVmZmVyKGFyZywgZW5jb2RpbmcpIGJ1dCB0aHJvd3MgYSBUeXBlRXJyb3JcbiAqIGlmIHZhbHVlIGlzIGEgbnVtYmVyLlxuICogQnVmZmVyLmZyb20oc3RyWywgZW5jb2RpbmddKVxuICogQnVmZmVyLmZyb20oYXJyYXkpXG4gKiBCdWZmZXIuZnJvbShidWZmZXIpXG4gKiBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlclssIGJ5dGVPZmZzZXRbLCBsZW5ndGhdXSlcbiAqKi9cbkJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGZyb20odmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuLy8gTm90ZTogQ2hhbmdlIHByb3RvdHlwZSAqYWZ0ZXIqIEJ1ZmZlci5mcm9tIGlzIGRlZmluZWQgdG8gd29ya2Fyb3VuZCBDaHJvbWUgYnVnOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvcHVsbC8xNDhcbk9iamVjdC5zZXRQcm90b3R5cGVPZihCdWZmZXIucHJvdG90eXBlLCBVaW50OEFycmF5LnByb3RvdHlwZSlcbk9iamVjdC5zZXRQcm90b3R5cGVPZihCdWZmZXIsIFVpbnQ4QXJyYXkpXG5cbmZ1bmN0aW9uIGFzc2VydFNpemUgKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXInKVxuICB9IGVsc2UgaWYgKHNpemUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBcIicgKyBzaXplICsgJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcInNpemVcIicpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgaWYgKHNpemUgPD0gMCkge1xuICAgIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSlcbiAgfVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyBhY2NpZGVudGFsbHkgc2VuZGluZyBpbiBhIG51bWJlciB0aGF0IHdvdWxkXG4gICAgLy8gYmUgaW50ZXJwcmV0ZWQgYXMgYSBzdGFydCBvZmZzZXQuXG4gICAgcmV0dXJuIHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZydcbiAgICAgID8gY3JlYXRlQnVmZmVyKHNpemUpLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgICA6IGNyZWF0ZUJ1ZmZlcihzaXplKS5maWxsKGZpbGwpXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcihzaXplKVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqIGFsbG9jKHNpemVbLCBmaWxsWywgZW5jb2RpbmddXSlcbiAqKi9cbkJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICByZXR1cm4gYWxsb2Moc2l6ZSwgZmlsbCwgZW5jb2RpbmcpXG59XG5cbmZ1bmN0aW9uIGFsbG9jVW5zYWZlIChzaXplKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcihzaXplIDwgMCA/IDAgOiBjaGVja2VkKHNpemUpIHwgMClcbn1cblxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIEJ1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShzaXplKVxufVxuLyoqXG4gKiBFcXVpdmFsZW50IHRvIFNsb3dCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHJldHVybiBhbGxvY1Vuc2FmZShzaXplKVxufVxuXG5mdW5jdGlvbiBmcm9tU3RyaW5nIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnIHx8IGVuY29kaW5nID09PSAnJykge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgfVxuXG4gIGNvbnN0IGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nLCBlbmNvZGluZykgfCAwXG4gIGxldCBidWYgPSBjcmVhdGVCdWZmZXIobGVuZ3RoKVxuXG4gIGNvbnN0IGFjdHVhbCA9IGJ1Zi53cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuXG4gIGlmIChhY3R1YWwgIT09IGxlbmd0aCkge1xuICAgIC8vIFdyaXRpbmcgYSBoZXggc3RyaW5nLCBmb3IgZXhhbXBsZSwgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgd2lsbFxuICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuXG4gICAgLy8gJ2FieHhjZCcgd2lsbCBiZSB0cmVhdGVkIGFzICdhYicpXG4gICAgYnVmID0gYnVmLnNsaWNlKDAsIGFjdHVhbClcbiAgfVxuXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAoYXJyYXkpIHtcbiAgY29uc3QgbGVuZ3RoID0gYXJyYXkubGVuZ3RoIDwgMCA/IDAgOiBjaGVja2VkKGFycmF5Lmxlbmd0aCkgfCAwXG4gIGNvbnN0IGJ1ZiA9IGNyZWF0ZUJ1ZmZlcihsZW5ndGgpXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICBidWZbaV0gPSBhcnJheVtpXSAmIDI1NVxuICB9XG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5VmlldyAoYXJyYXlWaWV3KSB7XG4gIGlmIChpc0luc3RhbmNlKGFycmF5VmlldywgVWludDhBcnJheSkpIHtcbiAgICBjb25zdCBjb3B5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlWaWV3KVxuICAgIHJldHVybiBmcm9tQXJyYXlCdWZmZXIoY29weS5idWZmZXIsIGNvcHkuYnl0ZU9mZnNldCwgY29weS5ieXRlTGVuZ3RoKVxuICB9XG4gIHJldHVybiBmcm9tQXJyYXlMaWtlKGFycmF5Vmlldylcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyIChhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmIChieXRlT2Zmc2V0IDwgMCB8fCBhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcIm9mZnNldFwiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQgKyAobGVuZ3RoIHx8IDApKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wibGVuZ3RoXCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGxldCBidWZcbiAgaWYgKGJ5dGVPZmZzZXQgPT09IHVuZGVmaW5lZCAmJiBsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGFycmF5KVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYnVmID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQpXG4gIH0gZWxzZSB7XG4gICAgYnVmID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlXG4gIE9iamVjdC5zZXRQcm90b3R5cGVPZihidWYsIEJ1ZmZlci5wcm90b3R5cGUpXG5cbiAgcmV0dXJuIGJ1ZlxufVxuXG5mdW5jdGlvbiBmcm9tT2JqZWN0IChvYmopIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihvYmopKSB7XG4gICAgY29uc3QgbGVuID0gY2hlY2tlZChvYmoubGVuZ3RoKSB8IDBcbiAgICBjb25zdCBidWYgPSBjcmVhdGVCdWZmZXIobGVuKVxuXG4gICAgaWYgKGJ1Zi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBidWZcbiAgICB9XG5cbiAgICBvYmouY29weShidWYsIDAsIDAsIGxlbilcbiAgICByZXR1cm4gYnVmXG4gIH1cblxuICBpZiAob2JqLmxlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiBvYmoubGVuZ3RoICE9PSAnbnVtYmVyJyB8fCBudW1iZXJJc05hTihvYmoubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcigwKVxuICAgIH1cbiAgICByZXR1cm4gZnJvbUFycmF5TGlrZShvYmopXG4gIH1cblxuICBpZiAob2JqLnR5cGUgPT09ICdCdWZmZXInICYmIEFycmF5LmlzQXJyYXkob2JqLmRhdGEpKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUxpa2Uob2JqLmRhdGEpXG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tlZCAobGVuZ3RoKSB7XG4gIC8vIE5vdGU6IGNhbm5vdCB1c2UgYGxlbmd0aCA8IEtfTUFYX0xFTkdUSGAgaGVyZSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlblxuICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLilcbiAgaWYgKGxlbmd0aCA+PSBLX01BWF9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsgS19NQVhfTEVOR1RILnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKVxuICB9XG4gIHJldHVybiBsZW5ndGggfCAwXG59XG5cbmZ1bmN0aW9uIFNsb3dCdWZmZXIgKGxlbmd0aCkge1xuICBpZiAoK2xlbmd0aCAhPSBsZW5ndGgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBlcWVxZXFcbiAgICBsZW5ndGggPSAwXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5hbGxvYygrbGVuZ3RoKVxufVxuXG5CdWZmZXIuaXNCdWZmZXIgPSBmdW5jdGlvbiBpc0J1ZmZlciAoYikge1xuICByZXR1cm4gYiAhPSBudWxsICYmIGIuX2lzQnVmZmVyID09PSB0cnVlICYmXG4gICAgYiAhPT0gQnVmZmVyLnByb3RvdHlwZSAvLyBzbyBCdWZmZXIuaXNCdWZmZXIoQnVmZmVyLnByb3RvdHlwZSkgd2lsbCBiZSBmYWxzZVxufVxuXG5CdWZmZXIuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGlzSW5zdGFuY2UoYSwgVWludDhBcnJheSkpIGEgPSBCdWZmZXIuZnJvbShhLCBhLm9mZnNldCwgYS5ieXRlTGVuZ3RoKVxuICBpZiAoaXNJbnN0YW5jZShiLCBVaW50OEFycmF5KSkgYiA9IEJ1ZmZlci5mcm9tKGIsIGIub2Zmc2V0LCBiLmJ5dGVMZW5ndGgpXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcImJ1ZjFcIiwgXCJidWYyXCIgYXJndW1lbnRzIG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXknXG4gICAgKVxuICB9XG5cbiAgaWYgKGEgPT09IGIpIHJldHVybiAwXG5cbiAgbGV0IHggPSBhLmxlbmd0aFxuICBsZXQgeSA9IGIubGVuZ3RoXG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IE1hdGgubWluKHgsIHkpOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkge1xuICAgICAgeCA9IGFbaV1cbiAgICAgIHkgPSBiW2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykge1xuICBzd2l0Y2ggKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ2FzY2lpJzpcbiAgICBjYXNlICdsYXRpbjEnOlxuICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuQnVmZmVyLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdCAobGlzdCwgbGVuZ3RoKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gIH1cblxuICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDApXG4gIH1cblxuICBsZXQgaVxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBsZW5ndGggPSAwXG4gICAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICAgIGxlbmd0aCArPSBsaXN0W2ldLmxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW5ndGgpXG4gIGxldCBwb3MgPSAwXG4gIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgbGV0IGJ1ZiA9IGxpc3RbaV1cbiAgICBpZiAoaXNJbnN0YW5jZShidWYsIFVpbnQ4QXJyYXkpKSB7XG4gICAgICBpZiAocG9zICsgYnVmLmxlbmd0aCA+IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgYnVmID0gQnVmZmVyLmZyb20oYnVmKVxuICAgICAgICBidWYuY29weShidWZmZXIsIHBvcylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgICAgIGJ1ZmZlcixcbiAgICAgICAgICBidWYsXG4gICAgICAgICAgcG9zXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpXG4gICAgfVxuICAgIHBvcyArPSBidWYubGVuZ3RoXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcubGVuZ3RoXG4gIH1cbiAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyhzdHJpbmcpIHx8IGlzSW5zdGFuY2Uoc3RyaW5nLCBBcnJheUJ1ZmZlcikpIHtcbiAgICByZXR1cm4gc3RyaW5nLmJ5dGVMZW5ndGhcbiAgfVxuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIG9yIEFycmF5QnVmZmVyLiAnICtcbiAgICAgICdSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2Ygc3RyaW5nXG4gICAgKVxuICB9XG5cbiAgY29uc3QgbGVuID0gc3RyaW5nLmxlbmd0aFxuICBjb25zdCBtdXN0TWF0Y2ggPSAoYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdID09PSB0cnVlKVxuICBpZiAoIW11c3RNYXRjaCAmJiBsZW4gPT09IDApIHJldHVybiAwXG5cbiAgLy8gVXNlIGEgZm9yIGxvb3AgdG8gYXZvaWQgcmVjdXJzaW9uXG4gIGxldCBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxlblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIGxlbiAqIDJcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBsZW4gPj4+IDFcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHtcbiAgICAgICAgICByZXR1cm4gbXVzdE1hdGNoID8gLTEgOiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aCAvLyBhc3N1bWUgdXRmOFxuICAgICAgICB9XG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5CdWZmZXIuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGhcblxuZnVuY3Rpb24gc2xvd1RvU3RyaW5nIChlbmNvZGluZywgc3RhcnQsIGVuZCkge1xuICBsZXQgbG93ZXJlZENhc2UgPSBmYWxzZVxuXG4gIC8vIE5vIG5lZWQgdG8gdmVyaWZ5IHRoYXQgXCJ0aGlzLmxlbmd0aCA8PSBNQVhfVUlOVDMyXCIgc2luY2UgaXQncyBhIHJlYWQtb25seVxuICAvLyBwcm9wZXJ0eSBvZiBhIHR5cGVkIGFycmF5LlxuXG4gIC8vIFRoaXMgYmVoYXZlcyBuZWl0aGVyIGxpa2UgU3RyaW5nIG5vciBVaW50OEFycmF5IGluIHRoYXQgd2Ugc2V0IHN0YXJ0L2VuZFxuICAvLyB0byB0aGVpciB1cHBlci9sb3dlciBib3VuZHMgaWYgdGhlIHZhbHVlIHBhc3NlZCBpcyBvdXQgb2YgcmFuZ2UuXG4gIC8vIHVuZGVmaW5lZCBpcyBoYW5kbGVkIHNwZWNpYWxseSBhcyBwZXIgRUNNQS0yNjIgNnRoIEVkaXRpb24sXG4gIC8vIFNlY3Rpb24gMTMuMy4zLjcgUnVudGltZSBTZW1hbnRpY3M6IEtleWVkQmluZGluZ0luaXRpYWxpemF0aW9uLlxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCB8fCBzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICAvLyBSZXR1cm4gZWFybHkgaWYgc3RhcnQgPiB0aGlzLmxlbmd0aC4gRG9uZSBoZXJlIHRvIHByZXZlbnQgcG90ZW50aWFsIHVpbnQzMlxuICAvLyBjb2VyY2lvbiBmYWlsIGJlbG93LlxuICBpZiAoc3RhcnQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChlbmQgPD0gMCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgLy8gRm9yY2UgY29lcmNpb24gdG8gdWludDMyLiBUaGlzIHdpbGwgYWxzbyBjb2VyY2UgZmFsc2V5L05hTiB2YWx1ZXMgdG8gMC5cbiAgZW5kID4+Pj0gMFxuICBzdGFydCA+Pj49IDBcblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHV0ZjE2bGVTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuLy8gVGhpcyBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGBCdWZmZXIuaXNCdWZmZXJgIChhbmQgdGhlIGBpcy1idWZmZXJgIG5wbSBwYWNrYWdlKVxuLy8gdG8gZGV0ZWN0IGEgQnVmZmVyIGluc3RhbmNlLiBJdCdzIG5vdCBwb3NzaWJsZSB0byB1c2UgYGluc3RhbmNlb2YgQnVmZmVyYFxuLy8gcmVsaWFibHkgaW4gYSBicm93c2VyaWZ5IGNvbnRleHQgYmVjYXVzZSB0aGVyZSBjb3VsZCBiZSBtdWx0aXBsZSBkaWZmZXJlbnRcbi8vIGNvcGllcyBvZiB0aGUgJ2J1ZmZlcicgcGFja2FnZSBpbiB1c2UuIFRoaXMgbWV0aG9kIHdvcmtzIGV2ZW4gZm9yIEJ1ZmZlclxuLy8gaW5zdGFuY2VzIHRoYXQgd2VyZSBjcmVhdGVkIGZyb20gYW5vdGhlciBjb3B5IG9mIHRoZSBgYnVmZmVyYCBwYWNrYWdlLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9pc3N1ZXMvMTU0XG5CdWZmZXIucHJvdG90eXBlLl9pc0J1ZmZlciA9IHRydWVcblxuZnVuY3Rpb24gc3dhcCAoYiwgbiwgbSkge1xuICBjb25zdCBpID0gYltuXVxuICBiW25dID0gYlttXVxuICBiW21dID0gaVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAxNiA9IGZ1bmN0aW9uIHN3YXAxNiAoKSB7XG4gIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSAyICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzJylcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMSlcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAzMiA9IGZ1bmN0aW9uIHN3YXAzMiAoKSB7XG4gIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA0ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzJylcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgMilcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXA2NCA9IGZ1bmN0aW9uIHN3YXA2NCAoKSB7XG4gIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA4ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzJylcbiAgfVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSA4KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgNylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgNilcbiAgICBzd2FwKHRoaXMsIGkgKyAyLCBpICsgNSlcbiAgICBzd2FwKHRoaXMsIGkgKyAzLCBpICsgNClcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICBjb25zdCBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gJydcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB1dGY4U2xpY2UodGhpcywgMCwgbGVuZ3RoKVxuICByZXR1cm4gc2xvd1RvU3RyaW5nLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyA9IEJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmdcblxuQnVmZmVyLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiBlcXVhbHMgKGIpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKVxuICBpZiAodGhpcyA9PT0gYikgcmV0dXJuIHRydWVcbiAgcmV0dXJuIEJ1ZmZlci5jb21wYXJlKHRoaXMsIGIpID09PSAwXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICBsZXQgc3RyID0gJydcbiAgY29uc3QgbWF4ID0gZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFU1xuICBzdHIgPSB0aGlzLnRvU3RyaW5nKCdoZXgnLCAwLCBtYXgpLnJlcGxhY2UoLyguezJ9KS9nLCAnJDEgJykudHJpbSgpXG4gIGlmICh0aGlzLmxlbmd0aCA+IG1heCkgc3RyICs9ICcgLi4uICdcbiAgcmV0dXJuICc8QnVmZmVyICcgKyBzdHIgKyAnPidcbn1cbmlmIChjdXN0b21JbnNwZWN0U3ltYm9sKSB7XG4gIEJ1ZmZlci5wcm90b3R5cGVbY3VzdG9tSW5zcGVjdFN5bWJvbF0gPSBCdWZmZXIucHJvdG90eXBlLmluc3BlY3Rcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAodGFyZ2V0LCBzdGFydCwgZW5kLCB0aGlzU3RhcnQsIHRoaXNFbmQpIHtcbiAgaWYgKGlzSW5zdGFuY2UodGFyZ2V0LCBVaW50OEFycmF5KSkge1xuICAgIHRhcmdldCA9IEJ1ZmZlci5mcm9tKHRhcmdldCwgdGFyZ2V0Lm9mZnNldCwgdGFyZ2V0LmJ5dGVMZW5ndGgpXG4gIH1cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGFyZ2V0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIFwidGFyZ2V0XCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheS4gJyArXG4gICAgICAnUmVjZWl2ZWQgdHlwZSAnICsgKHR5cGVvZiB0YXJnZXQpXG4gICAgKVxuICB9XG5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmQgPSB0YXJnZXQgPyB0YXJnZXQubGVuZ3RoIDogMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNTdGFydCA9IDBcbiAgfVxuICBpZiAodGhpc0VuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc0VuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoc3RhcnQgPCAwIHx8IGVuZCA+IHRhcmdldC5sZW5ndGggfHwgdGhpc1N0YXJ0IDwgMCB8fCB0aGlzRW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCAmJiBzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMFxuICB9XG4gIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCkge1xuICAgIHJldHVybiAtMVxuICB9XG4gIGlmIChzdGFydCA+PSBlbmQpIHtcbiAgICByZXR1cm4gMVxuICB9XG5cbiAgc3RhcnQgPj4+PSAwXG4gIGVuZCA+Pj49IDBcbiAgdGhpc1N0YXJ0ID4+Pj0gMFxuICB0aGlzRW5kID4+Pj0gMFxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQpIHJldHVybiAwXG5cbiAgbGV0IHggPSB0aGlzRW5kIC0gdGhpc1N0YXJ0XG4gIGxldCB5ID0gZW5kIC0gc3RhcnRcbiAgY29uc3QgbGVuID0gTWF0aC5taW4oeCwgeSlcblxuICBjb25zdCB0aGlzQ29weSA9IHRoaXMuc2xpY2UodGhpc1N0YXJ0LCB0aGlzRW5kKVxuICBjb25zdCB0YXJnZXRDb3B5ID0gdGFyZ2V0LnNsaWNlKHN0YXJ0LCBlbmQpXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47ICsraSkge1xuICAgIGlmICh0aGlzQ29weVtpXSAhPT0gdGFyZ2V0Q29weVtpXSkge1xuICAgICAgeCA9IHRoaXNDb3B5W2ldXG4gICAgICB5ID0gdGFyZ2V0Q29weVtpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbi8vIEZpbmRzIGVpdGhlciB0aGUgZmlyc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0ID49IGBieXRlT2Zmc2V0YCxcbi8vIE9SIHRoZSBsYXN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA8PSBgYnl0ZU9mZnNldGAuXG4vL1xuLy8gQXJndW1lbnRzOlxuLy8gLSBidWZmZXIgLSBhIEJ1ZmZlciB0byBzZWFyY2hcbi8vIC0gdmFsIC0gYSBzdHJpbmcsIEJ1ZmZlciwgb3IgbnVtYmVyXG4vLyAtIGJ5dGVPZmZzZXQgLSBhbiBpbmRleCBpbnRvIGBidWZmZXJgOyB3aWxsIGJlIGNsYW1wZWQgdG8gYW4gaW50MzJcbi8vIC0gZW5jb2RpbmcgLSBhbiBvcHRpb25hbCBlbmNvZGluZywgcmVsZXZhbnQgaXMgdmFsIGlzIGEgc3RyaW5nXG4vLyAtIGRpciAtIHRydWUgZm9yIGluZGV4T2YsIGZhbHNlIGZvciBsYXN0SW5kZXhPZlxuZnVuY3Rpb24gYmlkaXJlY3Rpb25hbEluZGV4T2YgKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIC8vIEVtcHR5IGJ1ZmZlciBtZWFucyBubyBtYXRjaFxuICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXRcbiAgaWYgKHR5cGVvZiBieXRlT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gYnl0ZU9mZnNldFxuICAgIGJ5dGVPZmZzZXQgPSAwXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA+IDB4N2ZmZmZmZmYpIHtcbiAgICBieXRlT2Zmc2V0ID0gMHg3ZmZmZmZmZlxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAtMHg4MDAwMDAwMCkge1xuICAgIGJ5dGVPZmZzZXQgPSAtMHg4MDAwMDAwMFxuICB9XG4gIGJ5dGVPZmZzZXQgPSArYnl0ZU9mZnNldCAvLyBDb2VyY2UgdG8gTnVtYmVyLlxuICBpZiAobnVtYmVySXNOYU4oYnl0ZU9mZnNldCkpIHtcbiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCBcImZvb1wiLCBldGMsIHNlYXJjaCB3aG9sZSBidWZmZXJcbiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0OiBuZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggKyBieXRlT2Zmc2V0XG4gIGlmIChieXRlT2Zmc2V0ID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICBpZiAoZGlyKSByZXR1cm4gLTFcbiAgICBlbHNlIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoIC0gMVxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAwKSB7XG4gICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDBcbiAgICBlbHNlIHJldHVybiAtMVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIHZhbFxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICB9XG5cbiAgLy8gRmluYWxseSwgc2VhcmNoIGVpdGhlciBpbmRleE9mIChpZiBkaXIgaXMgdHJ1ZSkgb3IgbGFzdEluZGV4T2ZcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlOiBsb29raW5nIGZvciBlbXB0eSBzdHJpbmcvYnVmZmVyIGFsd2F5cyBmYWlsc1xuICAgIGlmICh2YWwubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gLTFcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDB4RkYgLy8gU2VhcmNoIGZvciBhIGJ5dGUgdmFsdWUgWzAtMjU1XVxuICAgIGlmICh0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKGRpcikge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCBbdmFsXSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpXG59XG5cbmZ1bmN0aW9uIGFycmF5SW5kZXhPZiAoYXJyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgbGV0IGluZGV4U2l6ZSA9IDFcbiAgbGV0IGFyckxlbmd0aCA9IGFyci5sZW5ndGhcbiAgbGV0IHZhbExlbmd0aCA9IHZhbC5sZW5ndGhcblxuICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgaWYgKGVuY29kaW5nID09PSAndWNzMicgfHwgZW5jb2RpbmcgPT09ICd1Y3MtMicgfHxcbiAgICAgICAgZW5jb2RpbmcgPT09ICd1dGYxNmxlJyB8fCBlbmNvZGluZyA9PT0gJ3V0Zi0xNmxlJykge1xuICAgICAgaWYgKGFyci5sZW5ndGggPCAyIHx8IHZhbC5sZW5ndGggPCAyKSB7XG4gICAgICAgIHJldHVybiAtMVxuICAgICAgfVxuICAgICAgaW5kZXhTaXplID0gMlxuICAgICAgYXJyTGVuZ3RoIC89IDJcbiAgICAgIHZhbExlbmd0aCAvPSAyXG4gICAgICBieXRlT2Zmc2V0IC89IDJcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZWFkIChidWYsIGkpIHtcbiAgICBpZiAoaW5kZXhTaXplID09PSAxKSB7XG4gICAgICByZXR1cm4gYnVmW2ldXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBidWYucmVhZFVJbnQxNkJFKGkgKiBpbmRleFNpemUpXG4gICAgfVxuICB9XG5cbiAgbGV0IGlcbiAgaWYgKGRpcikge1xuICAgIGxldCBmb3VuZEluZGV4ID0gLTFcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpIDwgYXJyTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChyZWFkKGFyciwgaSkgPT09IHJlYWQodmFsLCBmb3VuZEluZGV4ID09PSAtMSA/IDAgOiBpIC0gZm91bmRJbmRleCkpIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggPT09IC0xKSBmb3VuZEluZGV4ID0gaVxuICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWxMZW5ndGgpIHJldHVybiBmb3VuZEluZGV4ICogaW5kZXhTaXplXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZm91bmRJbmRleCAhPT0gLTEpIGkgLT0gaSAtIGZvdW5kSW5kZXhcbiAgICAgICAgZm91bmRJbmRleCA9IC0xXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChieXRlT2Zmc2V0ICsgdmFsTGVuZ3RoID4gYXJyTGVuZ3RoKSBieXRlT2Zmc2V0ID0gYXJyTGVuZ3RoIC0gdmFsTGVuZ3RoXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBmb3VuZCA9IHRydWVcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdmFsTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKHJlYWQoYXJyLCBpICsgaikgIT09IHJlYWQodmFsLCBqKSkge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2VcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZm91bmQpIHJldHVybiBpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5jbHVkZXMgPSBmdW5jdGlvbiBpbmNsdWRlcyAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gdGhpcy5pbmRleE9mKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpICE9PSAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBpbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCB0cnVlKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmxhc3RJbmRleE9mID0gZnVuY3Rpb24gbGFzdEluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZhbHNlKVxufVxuXG5mdW5jdGlvbiBoZXhXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDBcbiAgY29uc3QgcmVtYWluaW5nID0gYnVmLmxlbmd0aCAtIG9mZnNldFxuICBpZiAoIWxlbmd0aCkge1xuICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICB9IGVsc2Uge1xuICAgIGxlbmd0aCA9IE51bWJlcihsZW5ndGgpXG4gICAgaWYgKGxlbmd0aCA+IHJlbWFpbmluZykge1xuICAgICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RyTGVuID0gc3RyaW5nLmxlbmd0aFxuXG4gIGlmIChsZW5ndGggPiBzdHJMZW4gLyAyKSB7XG4gICAgbGVuZ3RoID0gc3RyTGVuIC8gMlxuICB9XG4gIGxldCBpXG4gIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KHN0cmluZy5zdWJzdHIoaSAqIDIsIDIpLCAxNilcbiAgICBpZiAobnVtYmVySXNOYU4ocGFyc2VkKSkgcmV0dXJuIGlcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSBwYXJzZWRcbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBhc2NpaVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYXNjaWlUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGJhc2U2NFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiB1Y3MyV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGYxNmxlVG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gd3JpdGUgKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcpXG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkICYmIHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBvZmZzZXRcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgb2Zmc2V0WywgbGVuZ3RoXVssIGVuY29kaW5nXSlcbiAgfSBlbHNlIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gICAgaWYgKGlzRmluaXRlKGxlbmd0aCkpIHtcbiAgICAgIGxlbmd0aCA9IGxlbmd0aCA+Pj4gMFxuICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgfSBlbHNlIHtcbiAgICAgIGVuY29kaW5nID0gbGVuZ3RoXG4gICAgICBsZW5ndGggPSB1bmRlZmluZWRcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0J1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkJ1xuICAgIClcbiAgfVxuXG4gIGNvbnN0IHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBsZW5ndGggPiByZW1haW5pbmcpIGxlbmd0aCA9IHJlbWFpbmluZ1xuXG4gIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgbGV0IGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGFzY2lpV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgLy8gV2FybmluZzogbWF4TGVuZ3RoIG5vdCB0YWtlbiBpbnRvIGFjY291bnQgaW4gYmFzZTY0V3JpdGVcbiAgICAgICAgcmV0dXJuIGJhc2U2NFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1Y3MyV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnQnVmZmVyJyxcbiAgICBkYXRhOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnIgfHwgdGhpcywgMClcbiAgfVxufVxuXG5mdW5jdGlvbiBiYXNlNjRTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGlmIChzdGFydCA9PT0gMCAmJiBlbmQgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYuc2xpY2Uoc3RhcnQsIGVuZCkpXG4gIH1cbn1cblxuZnVuY3Rpb24gdXRmOFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuICBjb25zdCByZXMgPSBbXVxuXG4gIGxldCBpID0gc3RhcnRcbiAgd2hpbGUgKGkgPCBlbmQpIHtcbiAgICBjb25zdCBmaXJzdEJ5dGUgPSBidWZbaV1cbiAgICBsZXQgY29kZVBvaW50ID0gbnVsbFxuICAgIGxldCBieXRlc1BlclNlcXVlbmNlID0gKGZpcnN0Qnl0ZSA+IDB4RUYpXG4gICAgICA/IDRcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4REYpXG4gICAgICAgICAgPyAzXG4gICAgICAgICAgOiAoZmlyc3RCeXRlID4gMHhCRilcbiAgICAgICAgICAgICAgPyAyXG4gICAgICAgICAgICAgIDogMVxuXG4gICAgaWYgKGkgKyBieXRlc1BlclNlcXVlbmNlIDw9IGVuZCkge1xuICAgICAgbGV0IHNlY29uZEJ5dGUsIHRoaXJkQnl0ZSwgZm91cnRoQnl0ZSwgdGVtcENvZGVQb2ludFxuXG4gICAgICBzd2l0Y2ggKGJ5dGVzUGVyU2VxdWVuY2UpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmIChmaXJzdEJ5dGUgPCAweDgwKSB7XG4gICAgICAgICAgICBjb2RlUG9pbnQgPSBmaXJzdEJ5dGVcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHgxRikgPDwgMHg2IHwgKHNlY29uZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4QyB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKHRoaXJkQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0ZGICYmICh0ZW1wQ29kZVBvaW50IDwgMHhEODAwIHx8IHRlbXBDb2RlUG9pbnQgPiAweERGRkYpKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGZvdXJ0aEJ5dGUgPSBidWZbaSArIDNdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwICYmIChmb3VydGhCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweDEyIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweEMgfCAodGhpcmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKGZvdXJ0aEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweEZGRkYgJiYgdGVtcENvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGVQb2ludCA9PT0gbnVsbCkge1xuICAgICAgLy8gd2UgZGlkIG5vdCBnZW5lcmF0ZSBhIHZhbGlkIGNvZGVQb2ludCBzbyBpbnNlcnQgYVxuICAgICAgLy8gcmVwbGFjZW1lbnQgY2hhciAoVStGRkZEKSBhbmQgYWR2YW5jZSBvbmx5IDEgYnl0ZVxuICAgICAgY29kZVBvaW50ID0gMHhGRkZEXG4gICAgICBieXRlc1BlclNlcXVlbmNlID0gMVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50ID4gMHhGRkZGKSB7XG4gICAgICAvLyBlbmNvZGUgdG8gdXRmMTYgKHN1cnJvZ2F0ZSBwYWlyIGRhbmNlKVxuICAgICAgY29kZVBvaW50IC09IDB4MTAwMDBcbiAgICAgIHJlcy5wdXNoKGNvZGVQb2ludCA+Pj4gMTAgJiAweDNGRiB8IDB4RDgwMClcbiAgICAgIGNvZGVQb2ludCA9IDB4REMwMCB8IGNvZGVQb2ludCAmIDB4M0ZGXG4gICAgfVxuXG4gICAgcmVzLnB1c2goY29kZVBvaW50KVxuICAgIGkgKz0gYnl0ZXNQZXJTZXF1ZW5jZVxuICB9XG5cbiAgcmV0dXJuIGRlY29kZUNvZGVQb2ludHNBcnJheShyZXMpXG59XG5cbi8vIEJhc2VkIG9uIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIyNzQ3MjcyLzY4MDc0MiwgdGhlIGJyb3dzZXIgd2l0aFxuLy8gdGhlIGxvd2VzdCBsaW1pdCBpcyBDaHJvbWUsIHdpdGggMHgxMDAwMCBhcmdzLlxuLy8gV2UgZ28gMSBtYWduaXR1ZGUgbGVzcywgZm9yIHNhZmV0eVxuY29uc3QgTUFYX0FSR1VNRU5UU19MRU5HVEggPSAweDEwMDBcblxuZnVuY3Rpb24gZGVjb2RlQ29kZVBvaW50c0FycmF5IChjb2RlUG9pbnRzKSB7XG4gIGNvbnN0IGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoXG4gIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNvZGVQb2ludHMpIC8vIGF2b2lkIGV4dHJhIHNsaWNlKClcbiAgfVxuXG4gIC8vIERlY29kZSBpbiBjaHVua3MgdG8gYXZvaWQgXCJjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRcIi5cbiAgbGV0IHJlcyA9ICcnXG4gIGxldCBpID0gMFxuICB3aGlsZSAoaSA8IGxlbikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFxuICAgICAgU3RyaW5nLFxuICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKVxuICAgIClcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBsZXQgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldICYgMHg3RilcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGxhdGluMVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgbGV0IHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gcmV0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgY29uc3QgbGVuID0gYnVmLmxlbmd0aFxuXG4gIGlmICghc3RhcnQgfHwgc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgfHwgZW5kIDwgMCB8fCBlbmQgPiBsZW4pIGVuZCA9IGxlblxuXG4gIGxldCBvdXQgPSAnJ1xuICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIG91dCArPSBoZXhTbGljZUxvb2t1cFRhYmxlW2J1ZltpXV1cbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGNvbnN0IGJ5dGVzID0gYnVmLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIGxldCByZXMgPSAnJ1xuICAvLyBJZiBieXRlcy5sZW5ndGggaXMgb2RkLCB0aGUgbGFzdCA4IGJpdHMgbXVzdCBiZSBpZ25vcmVkIChzYW1lIGFzIG5vZGUuanMpXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoIC0gMTsgaSArPSAyKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0gKyAoYnl0ZXNbaSArIDFdICogMjU2KSlcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiBzbGljZSAoc3RhcnQsIGVuZCkge1xuICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aFxuICBzdGFydCA9IH5+c3RhcnRcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiB+fmVuZFxuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCArPSBsZW5cbiAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgfSBlbHNlIGlmIChzdGFydCA+IGxlbikge1xuICAgIHN0YXJ0ID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgMCkge1xuICAgIGVuZCArPSBsZW5cbiAgICBpZiAoZW5kIDwgMCkgZW5kID0gMFxuICB9IGVsc2UgaWYgKGVuZCA+IGxlbikge1xuICAgIGVuZCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIGNvbnN0IG5ld0J1ZiA9IHRoaXMuc3ViYXJyYXkoc3RhcnQsIGVuZClcbiAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2VcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKG5ld0J1ZiwgQnVmZmVyLnByb3RvdHlwZSlcblxuICByZXR1cm4gbmV3QnVmXG59XG5cbi8qXG4gKiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGJ1ZmZlciBpc24ndCB0cnlpbmcgdG8gd3JpdGUgb3V0IG9mIGJvdW5kcy5cbiAqL1xuZnVuY3Rpb24gY2hlY2tPZmZzZXQgKG9mZnNldCwgZXh0LCBsZW5ndGgpIHtcbiAgaWYgKChvZmZzZXQgJSAxKSAhPT0gMCB8fCBvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb2Zmc2V0IGlzIG5vdCB1aW50JylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVaW50TEUgPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludExFID0gZnVuY3Rpb24gcmVhZFVJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICBsZXQgdmFsID0gdGhpc1tvZmZzZXRdXG4gIGxldCBtdWwgPSAxXG4gIGxldCBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVpbnRCRSA9XG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50QkUgPSBmdW5jdGlvbiByZWFkVUludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcbiAgfVxuXG4gIGxldCB2YWwgPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF1cbiAgbGV0IG11bCA9IDFcbiAgd2hpbGUgKGJ5dGVMZW5ndGggPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVaW50OCA9XG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50OCA9IGZ1bmN0aW9uIHJlYWRVSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVaW50MTZMRSA9XG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVpbnQxNkJFID1cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkJFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCA4KSB8IHRoaXNbb2Zmc2V0ICsgMV1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludDMyTEUgPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyTEUgPSBmdW5jdGlvbiByZWFkVUludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikpICtcbiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVaW50MzJCRSA9XG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSAqIDB4MTAwMDAwMCkgK1xuICAgICgodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICB0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRCaWdVSW50NjRMRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiByZWFkQmlnVUludDY0TEUgKG9mZnNldCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgdmFsaWRhdGVOdW1iZXIob2Zmc2V0LCAnb2Zmc2V0JylcbiAgY29uc3QgZmlyc3QgPSB0aGlzW29mZnNldF1cbiAgY29uc3QgbGFzdCA9IHRoaXNbb2Zmc2V0ICsgN11cbiAgaWYgKGZpcnN0ID09PSB1bmRlZmluZWQgfHwgbGFzdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYm91bmRzRXJyb3Iob2Zmc2V0LCB0aGlzLmxlbmd0aCAtIDgpXG4gIH1cblxuICBjb25zdCBsbyA9IGZpcnN0ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogOCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDE2ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMjRcblxuICBjb25zdCBoaSA9IHRoaXNbKytvZmZzZXRdICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogOCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDE2ICtcbiAgICBsYXN0ICogMiAqKiAyNFxuXG4gIHJldHVybiBCaWdJbnQobG8pICsgKEJpZ0ludChoaSkgPDwgQmlnSW50KDMyKSlcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEJpZ1VJbnQ2NEJFID0gZGVmaW5lQmlnSW50TWV0aG9kKGZ1bmN0aW9uIHJlYWRCaWdVSW50NjRCRSAob2Zmc2V0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICB2YWxpZGF0ZU51bWJlcihvZmZzZXQsICdvZmZzZXQnKVxuICBjb25zdCBmaXJzdCA9IHRoaXNbb2Zmc2V0XVxuICBjb25zdCBsYXN0ID0gdGhpc1tvZmZzZXQgKyA3XVxuICBpZiAoZmlyc3QgPT09IHVuZGVmaW5lZCB8fCBsYXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICBib3VuZHNFcnJvcihvZmZzZXQsIHRoaXMubGVuZ3RoIC0gOClcbiAgfVxuXG4gIGNvbnN0IGhpID0gZmlyc3QgKiAyICoqIDI0ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMTYgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiA4ICtcbiAgICB0aGlzWysrb2Zmc2V0XVxuXG4gIGNvbnN0IGxvID0gdGhpc1srK29mZnNldF0gKiAyICoqIDI0ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMTYgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiA4ICtcbiAgICBsYXN0XG5cbiAgcmV0dXJuIChCaWdJbnQoaGkpIDw8IEJpZ0ludCgzMikpICsgQmlnSW50KGxvKVxufSlcblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50TEUgPSBmdW5jdGlvbiByZWFkSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgbGV0IHZhbCA9IHRoaXNbb2Zmc2V0XVxuICBsZXQgbXVsID0gMVxuICBsZXQgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG4gIG11bCAqPSAweDgwXG5cbiAgaWYgKHZhbCA+PSBtdWwpIHZhbCAtPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIGxldCBpID0gYnl0ZUxlbmd0aFxuICBsZXQgbXVsID0gMVxuICBsZXQgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWldXG4gIHdoaWxlIChpID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0taV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQ4ID0gZnVuY3Rpb24gcmVhZEludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIGlmICghKHRoaXNbb2Zmc2V0XSAmIDB4ODApKSByZXR1cm4gKHRoaXNbb2Zmc2V0XSlcbiAgcmV0dXJuICgoMHhmZiAtIHRoaXNbb2Zmc2V0XSArIDEpICogLTEpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2TEUgPSBmdW5jdGlvbiByZWFkSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgY29uc3QgdmFsID0gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkJFID0gZnVuY3Rpb24gcmVhZEludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIGNvbnN0IHZhbCA9IHRoaXNbb2Zmc2V0ICsgMV0gfCAodGhpc1tvZmZzZXRdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCAyNCkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRCaWdJbnQ2NExFID0gZGVmaW5lQmlnSW50TWV0aG9kKGZ1bmN0aW9uIHJlYWRCaWdJbnQ2NExFIChvZmZzZXQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIHZhbGlkYXRlTnVtYmVyKG9mZnNldCwgJ29mZnNldCcpXG4gIGNvbnN0IGZpcnN0ID0gdGhpc1tvZmZzZXRdXG4gIGNvbnN0IGxhc3QgPSB0aGlzW29mZnNldCArIDddXG4gIGlmIChmaXJzdCA9PT0gdW5kZWZpbmVkIHx8IGxhc3QgPT09IHVuZGVmaW5lZCkge1xuICAgIGJvdW5kc0Vycm9yKG9mZnNldCwgdGhpcy5sZW5ndGggLSA4KVxuICB9XG5cbiAgY29uc3QgdmFsID0gdGhpc1tvZmZzZXQgKyA0XSArXG4gICAgdGhpc1tvZmZzZXQgKyA1XSAqIDIgKiogOCArXG4gICAgdGhpc1tvZmZzZXQgKyA2XSAqIDIgKiogMTYgK1xuICAgIChsYXN0IDw8IDI0KSAvLyBPdmVyZmxvd1xuXG4gIHJldHVybiAoQmlnSW50KHZhbCkgPDwgQmlnSW50KDMyKSkgK1xuICAgIEJpZ0ludChmaXJzdCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDggK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAxNiArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDI0KVxufSlcblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkQmlnSW50NjRCRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiByZWFkQmlnSW50NjRCRSAob2Zmc2V0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICB2YWxpZGF0ZU51bWJlcihvZmZzZXQsICdvZmZzZXQnKVxuICBjb25zdCBmaXJzdCA9IHRoaXNbb2Zmc2V0XVxuICBjb25zdCBsYXN0ID0gdGhpc1tvZmZzZXQgKyA3XVxuICBpZiAoZmlyc3QgPT09IHVuZGVmaW5lZCB8fCBsYXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICBib3VuZHNFcnJvcihvZmZzZXQsIHRoaXMubGVuZ3RoIC0gOClcbiAgfVxuXG4gIGNvbnN0IHZhbCA9IChmaXJzdCA8PCAyNCkgKyAvLyBPdmVyZmxvd1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAxNiArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDggK1xuICAgIHRoaXNbKytvZmZzZXRdXG5cbiAgcmV0dXJuIChCaWdJbnQodmFsKSA8PCBCaWdJbnQoMzIpKSArXG4gICAgQmlnSW50KHRoaXNbKytvZmZzZXRdICogMiAqKiAyNCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDE2ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogOCArXG4gICAgbGFzdClcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdEJFID0gZnVuY3Rpb24gcmVhZEZsb2F0QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUxFID0gZnVuY3Rpb24gcmVhZERvdWJsZUxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDUyLCA4KVxufVxuXG5mdW5jdGlvbiBjaGVja0ludCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpXG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVWludExFID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjb25zdCBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIGxldCBtdWwgPSAxXG4gIGxldCBpID0gMFxuICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVaW50QkUgPVxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlVUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNvbnN0IG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgbGV0IGkgPSBieXRlTGVuZ3RoIC0gMVxuICBsZXQgbXVsID0gMVxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVpbnQ4ID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50OCA9IGZ1bmN0aW9uIHdyaXRlVUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweGZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVWludDE2TEUgPVxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVpbnQxNkJFID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVaW50MzJMRSA9XG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVWludDMyQkUgPVxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gd3J0QmlnVUludDY0TEUgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbWluLCBtYXgpIHtcbiAgY2hlY2tJbnRCSSh2YWx1ZSwgbWluLCBtYXgsIGJ1Ziwgb2Zmc2V0LCA3KVxuXG4gIGxldCBsbyA9IE51bWJlcih2YWx1ZSAmIEJpZ0ludCgweGZmZmZmZmZmKSlcbiAgYnVmW29mZnNldCsrXSA9IGxvXG4gIGxvID0gbG8gPj4gOFxuICBidWZbb2Zmc2V0KytdID0gbG9cbiAgbG8gPSBsbyA+PiA4XG4gIGJ1ZltvZmZzZXQrK10gPSBsb1xuICBsbyA9IGxvID4+IDhcbiAgYnVmW29mZnNldCsrXSA9IGxvXG4gIGxldCBoaSA9IE51bWJlcih2YWx1ZSA+PiBCaWdJbnQoMzIpICYgQmlnSW50KDB4ZmZmZmZmZmYpKVxuICBidWZbb2Zmc2V0KytdID0gaGlcbiAgaGkgPSBoaSA+PiA4XG4gIGJ1ZltvZmZzZXQrK10gPSBoaVxuICBoaSA9IGhpID4+IDhcbiAgYnVmW29mZnNldCsrXSA9IGhpXG4gIGhpID0gaGkgPj4gOFxuICBidWZbb2Zmc2V0KytdID0gaGlcbiAgcmV0dXJuIG9mZnNldFxufVxuXG5mdW5jdGlvbiB3cnRCaWdVSW50NjRCRSAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBtaW4sIG1heCkge1xuICBjaGVja0ludEJJKHZhbHVlLCBtaW4sIG1heCwgYnVmLCBvZmZzZXQsIDcpXG5cbiAgbGV0IGxvID0gTnVtYmVyKHZhbHVlICYgQmlnSW50KDB4ZmZmZmZmZmYpKVxuICBidWZbb2Zmc2V0ICsgN10gPSBsb1xuICBsbyA9IGxvID4+IDhcbiAgYnVmW29mZnNldCArIDZdID0gbG9cbiAgbG8gPSBsbyA+PiA4XG4gIGJ1ZltvZmZzZXQgKyA1XSA9IGxvXG4gIGxvID0gbG8gPj4gOFxuICBidWZbb2Zmc2V0ICsgNF0gPSBsb1xuICBsZXQgaGkgPSBOdW1iZXIodmFsdWUgPj4gQmlnSW50KDMyKSAmIEJpZ0ludCgweGZmZmZmZmZmKSlcbiAgYnVmW29mZnNldCArIDNdID0gaGlcbiAgaGkgPSBoaSA+PiA4XG4gIGJ1ZltvZmZzZXQgKyAyXSA9IGhpXG4gIGhpID0gaGkgPj4gOFxuICBidWZbb2Zmc2V0ICsgMV0gPSBoaVxuICBoaSA9IGhpID4+IDhcbiAgYnVmW29mZnNldF0gPSBoaVxuICByZXR1cm4gb2Zmc2V0ICsgOFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlQmlnVUludDY0TEUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gd3JpdGVCaWdVSW50NjRMRSAodmFsdWUsIG9mZnNldCA9IDApIHtcbiAgcmV0dXJuIHdydEJpZ1VJbnQ2NExFKHRoaXMsIHZhbHVlLCBvZmZzZXQsIEJpZ0ludCgwKSwgQmlnSW50KCcweGZmZmZmZmZmZmZmZmZmZmYnKSlcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVCaWdVSW50NjRCRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiB3cml0ZUJpZ1VJbnQ2NEJFICh2YWx1ZSwgb2Zmc2V0ID0gMCkge1xuICByZXR1cm4gd3J0QmlnVUludDY0QkUodGhpcywgdmFsdWUsIG9mZnNldCwgQmlnSW50KDApLCBCaWdJbnQoJzB4ZmZmZmZmZmZmZmZmZmZmZicpKVxufSlcblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjb25zdCBsaW1pdCA9IE1hdGgucG93KDIsICg4ICogYnl0ZUxlbmd0aCkgLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICBsZXQgaSA9IDBcbiAgbGV0IG11bCA9IDFcbiAgbGV0IHN1YiA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpIC0gMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludEJFID0gZnVuY3Rpb24gd3JpdGVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjb25zdCBsaW1pdCA9IE1hdGgucG93KDIsICg4ICogYnl0ZUxlbmd0aCkgLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICBsZXQgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIGxldCBtdWwgPSAxXG4gIGxldCBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpICsgMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweDdmLCAtMHg4MClcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlQmlnSW50NjRMRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiB3cml0ZUJpZ0ludDY0TEUgKHZhbHVlLCBvZmZzZXQgPSAwKSB7XG4gIHJldHVybiB3cnRCaWdVSW50NjRMRSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAtQmlnSW50KCcweDgwMDAwMDAwMDAwMDAwMDAnKSwgQmlnSW50KCcweDdmZmZmZmZmZmZmZmZmZmYnKSlcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVCaWdJbnQ2NEJFID0gZGVmaW5lQmlnSW50TWV0aG9kKGZ1bmN0aW9uIHdyaXRlQmlnSW50NjRCRSAodmFsdWUsIG9mZnNldCA9IDApIHtcbiAgcmV0dXJuIHdydEJpZ1VJbnQ2NEJFKHRoaXMsIHZhbHVlLCBvZmZzZXQsIC1CaWdJbnQoJzB4ODAwMDAwMDAwMDAwMDAwMCcpLCBCaWdJbnQoJzB4N2ZmZmZmZmZmZmZmZmZmZicpKVxufSlcblxuZnVuY3Rpb24gY2hlY2tJRUVFNzU0IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHtcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxuICBpZiAob2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRmxvYXQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA4LCAxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCwgLTEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDUyLCA4KVxuICByZXR1cm4gb2Zmc2V0ICsgOFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlTEUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVCRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbi8vIGNvcHkodGFyZ2V0QnVmZmVyLCB0YXJnZXRTdGFydD0wLCBzb3VyY2VTdGFydD0wLCBzb3VyY2VFbmQ9YnVmZmVyLmxlbmd0aClcbkJ1ZmZlci5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKHRhcmdldCwgdGFyZ2V0U3RhcnQsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGFyZ2V0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignYXJndW1lbnQgc2hvdWxkIGJlIGEgQnVmZmVyJylcbiAgaWYgKCFzdGFydCkgc3RhcnQgPSAwXG4gIGlmICghZW5kICYmIGVuZCAhPT0gMCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldFN0YXJ0ID49IHRhcmdldC5sZW5ndGgpIHRhcmdldFN0YXJ0ID0gdGFyZ2V0Lmxlbmd0aFxuICBpZiAoIXRhcmdldFN0YXJ0KSB0YXJnZXRTdGFydCA9IDBcbiAgaWYgKGVuZCA+IDAgJiYgZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgLy8gQ29weSAwIGJ5dGVzOyB3ZSdyZSBkb25lXG4gIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm4gMFxuICBpZiAodGFyZ2V0Lmxlbmd0aCA9PT0gMCB8fCB0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBGYXRhbCBlcnJvciBjb25kaXRpb25zXG4gIGlmICh0YXJnZXRTdGFydCA8IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIH1cbiAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+PSB0aGlzLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIGNvbnN0IGxlbiA9IGVuZCAtIHN0YXJ0XG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCAmJiB0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIFVzZSBidWlsdC1pbiB3aGVuIGF2YWlsYWJsZSwgbWlzc2luZyBmcm9tIElFMTFcbiAgICB0aGlzLmNvcHlXaXRoaW4odGFyZ2V0U3RhcnQsIHN0YXJ0LCBlbmQpXG4gIH0gZWxzZSB7XG4gICAgVWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwoXG4gICAgICB0YXJnZXQsXG4gICAgICB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpLFxuICAgICAgdGFyZ2V0U3RhcnRcbiAgICApXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbi8vIFVzYWdlOlxuLy8gICAgYnVmZmVyLmZpbGwobnVtYmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChidWZmZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKHN0cmluZ1ssIG9mZnNldFssIGVuZF1dWywgZW5jb2RpbmddKVxuQnVmZmVyLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gZmlsbCAodmFsLCBzdGFydCwgZW5kLCBlbmNvZGluZykge1xuICAvLyBIYW5kbGUgc3RyaW5nIGNhc2VzOlxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodHlwZW9mIHN0YXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBzdGFydFxuICAgICAgc3RhcnQgPSAwXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVuZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5kXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH1cbiAgICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nJylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgIH1cbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29uc3QgY29kZSA9IHZhbC5jaGFyQ29kZUF0KDApXG4gICAgICBpZiAoKGVuY29kaW5nID09PSAndXRmOCcgJiYgY29kZSA8IDEyOCkgfHxcbiAgICAgICAgICBlbmNvZGluZyA9PT0gJ2xhdGluMScpIHtcbiAgICAgICAgLy8gRmFzdCBwYXRoOiBJZiBgdmFsYCBmaXRzIGludG8gYSBzaW5nbGUgYnl0ZSwgdXNlIHRoYXQgbnVtZXJpYyB2YWx1ZS5cbiAgICAgICAgdmFsID0gY29kZVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDI1NVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdib29sZWFuJykge1xuICAgIHZhbCA9IE51bWJlcih2YWwpXG4gIH1cblxuICAvLyBJbnZhbGlkIHJhbmdlcyBhcmUgbm90IHNldCB0byBhIGRlZmF1bHQsIHNvIGNhbiByYW5nZSBjaGVjayBlYXJseS5cbiAgaWYgKHN0YXJ0IDwgMCB8fCB0aGlzLmxlbmd0aCA8IHN0YXJ0IHx8IHRoaXMubGVuZ3RoIDwgZW5kKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ091dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHN0YXJ0ID0gc3RhcnQgPj4+IDBcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyB0aGlzLmxlbmd0aCA6IGVuZCA+Pj4gMFxuXG4gIGlmICghdmFsKSB2YWwgPSAwXG5cbiAgbGV0IGlcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgdGhpc1tpXSA9IHZhbFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBieXRlcyA9IEJ1ZmZlci5pc0J1ZmZlcih2YWwpXG4gICAgICA/IHZhbFxuICAgICAgOiBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICAgIGNvbnN0IGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGlmIChsZW4gPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSB2YWx1ZSBcIicgKyB2YWwgK1xuICAgICAgICAnXCIgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQgXCJ2YWx1ZVwiJylcbiAgICB9XG4gICAgZm9yIChpID0gMDsgaSA8IGVuZCAtIHN0YXJ0OyArK2kpIHtcbiAgICAgIHRoaXNbaSArIHN0YXJ0XSA9IGJ5dGVzW2kgJSBsZW5dXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gQ1VTVE9NIEVSUk9SU1xuLy8gPT09PT09PT09PT09PVxuXG4vLyBTaW1wbGlmaWVkIHZlcnNpb25zIGZyb20gTm9kZSwgY2hhbmdlZCBmb3IgQnVmZmVyLW9ubHkgdXNhZ2VcbmNvbnN0IGVycm9ycyA9IHt9XG5mdW5jdGlvbiBFIChzeW0sIGdldE1lc3NhZ2UsIEJhc2UpIHtcbiAgZXJyb3JzW3N5bV0gPSBjbGFzcyBOb2RlRXJyb3IgZXh0ZW5kcyBCYXNlIHtcbiAgICBjb25zdHJ1Y3RvciAoKSB7XG4gICAgICBzdXBlcigpXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnbWVzc2FnZScsIHtcbiAgICAgICAgdmFsdWU6IGdldE1lc3NhZ2UuYXBwbHkodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgfSlcblxuICAgICAgLy8gQWRkIHRoZSBlcnJvciBjb2RlIHRvIHRoZSBuYW1lIHRvIGluY2x1ZGUgaXQgaW4gdGhlIHN0YWNrIHRyYWNlLlxuICAgICAgdGhpcy5uYW1lID0gYCR7dGhpcy5uYW1lfSBbJHtzeW19XWBcbiAgICAgIC8vIEFjY2VzcyB0aGUgc3RhY2sgdG8gZ2VuZXJhdGUgdGhlIGVycm9yIG1lc3NhZ2UgaW5jbHVkaW5nIHRoZSBlcnJvciBjb2RlXG4gICAgICAvLyBmcm9tIHRoZSBuYW1lLlxuICAgICAgdGhpcy5zdGFjayAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuICAgICAgLy8gUmVzZXQgdGhlIG5hbWUgdG8gdGhlIGFjdHVhbCBuYW1lLlxuICAgICAgZGVsZXRlIHRoaXMubmFtZVxuICAgIH1cblxuICAgIGdldCBjb2RlICgpIHtcbiAgICAgIHJldHVybiBzeW1cbiAgICB9XG5cbiAgICBzZXQgY29kZSAodmFsdWUpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnY29kZScsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdG9TdHJpbmcgKCkge1xuICAgICAgcmV0dXJuIGAke3RoaXMubmFtZX0gWyR7c3ltfV06ICR7dGhpcy5tZXNzYWdlfWBcbiAgICB9XG4gIH1cbn1cblxuRSgnRVJSX0JVRkZFUl9PVVRfT0ZfQk9VTkRTJyxcbiAgZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBpZiAobmFtZSkge1xuICAgICAgcmV0dXJuIGAke25hbWV9IGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kc2BcbiAgICB9XG5cbiAgICByZXR1cm4gJ0F0dGVtcHQgdG8gYWNjZXNzIG1lbW9yeSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnXG4gIH0sIFJhbmdlRXJyb3IpXG5FKCdFUlJfSU5WQUxJRF9BUkdfVFlQRScsXG4gIGZ1bmN0aW9uIChuYW1lLCBhY3R1YWwpIHtcbiAgICByZXR1cm4gYFRoZSBcIiR7bmFtZX1cIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIGFjdHVhbH1gXG4gIH0sIFR5cGVFcnJvcilcbkUoJ0VSUl9PVVRfT0ZfUkFOR0UnLFxuICBmdW5jdGlvbiAoc3RyLCByYW5nZSwgaW5wdXQpIHtcbiAgICBsZXQgbXNnID0gYFRoZSB2YWx1ZSBvZiBcIiR7c3RyfVwiIGlzIG91dCBvZiByYW5nZS5gXG4gICAgbGV0IHJlY2VpdmVkID0gaW5wdXRcbiAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihpbnB1dCkgJiYgTWF0aC5hYnMoaW5wdXQpID4gMiAqKiAzMikge1xuICAgICAgcmVjZWl2ZWQgPSBhZGROdW1lcmljYWxTZXBhcmF0b3IoU3RyaW5nKGlucHV0KSlcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgIHJlY2VpdmVkID0gU3RyaW5nKGlucHV0KVxuICAgICAgaWYgKGlucHV0ID4gQmlnSW50KDIpICoqIEJpZ0ludCgzMikgfHwgaW5wdXQgPCAtKEJpZ0ludCgyKSAqKiBCaWdJbnQoMzIpKSkge1xuICAgICAgICByZWNlaXZlZCA9IGFkZE51bWVyaWNhbFNlcGFyYXRvcihyZWNlaXZlZClcbiAgICAgIH1cbiAgICAgIHJlY2VpdmVkICs9ICduJ1xuICAgIH1cbiAgICBtc2cgKz0gYCBJdCBtdXN0IGJlICR7cmFuZ2V9LiBSZWNlaXZlZCAke3JlY2VpdmVkfWBcbiAgICByZXR1cm4gbXNnXG4gIH0sIFJhbmdlRXJyb3IpXG5cbmZ1bmN0aW9uIGFkZE51bWVyaWNhbFNlcGFyYXRvciAodmFsKSB7XG4gIGxldCByZXMgPSAnJ1xuICBsZXQgaSA9IHZhbC5sZW5ndGhcbiAgY29uc3Qgc3RhcnQgPSB2YWxbMF0gPT09ICctJyA/IDEgOiAwXG4gIGZvciAoOyBpID49IHN0YXJ0ICsgNDsgaSAtPSAzKSB7XG4gICAgcmVzID0gYF8ke3ZhbC5zbGljZShpIC0gMywgaSl9JHtyZXN9YFxuICB9XG4gIHJldHVybiBgJHt2YWwuc2xpY2UoMCwgaSl9JHtyZXN9YFxufVxuXG4vLyBDSEVDSyBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PVxuXG5mdW5jdGlvbiBjaGVja0JvdW5kcyAoYnVmLCBvZmZzZXQsIGJ5dGVMZW5ndGgpIHtcbiAgdmFsaWRhdGVOdW1iZXIob2Zmc2V0LCAnb2Zmc2V0JylcbiAgaWYgKGJ1ZltvZmZzZXRdID09PSB1bmRlZmluZWQgfHwgYnVmW29mZnNldCArIGJ5dGVMZW5ndGhdID09PSB1bmRlZmluZWQpIHtcbiAgICBib3VuZHNFcnJvcihvZmZzZXQsIGJ1Zi5sZW5ndGggLSAoYnl0ZUxlbmd0aCArIDEpKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrSW50QkkgKHZhbHVlLCBtaW4sIG1heCwgYnVmLCBvZmZzZXQsIGJ5dGVMZW5ndGgpIHtcbiAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB7XG4gICAgY29uc3QgbiA9IHR5cGVvZiBtaW4gPT09ICdiaWdpbnQnID8gJ24nIDogJydcbiAgICBsZXQgcmFuZ2VcbiAgICBpZiAoYnl0ZUxlbmd0aCA+IDMpIHtcbiAgICAgIGlmIChtaW4gPT09IDAgfHwgbWluID09PSBCaWdJbnQoMCkpIHtcbiAgICAgICAgcmFuZ2UgPSBgPj0gMCR7bn0gYW5kIDwgMiR7bn0gKiogJHsoYnl0ZUxlbmd0aCArIDEpICogOH0ke259YFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmFuZ2UgPSBgPj0gLSgyJHtufSAqKiAkeyhieXRlTGVuZ3RoICsgMSkgKiA4IC0gMX0ke259KSBhbmQgPCAyICoqIGAgK1xuICAgICAgICAgICAgICAgIGAkeyhieXRlTGVuZ3RoICsgMSkgKiA4IC0gMX0ke259YFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByYW5nZSA9IGA+PSAke21pbn0ke259IGFuZCA8PSAke21heH0ke259YFxuICAgIH1cbiAgICB0aHJvdyBuZXcgZXJyb3JzLkVSUl9PVVRfT0ZfUkFOR0UoJ3ZhbHVlJywgcmFuZ2UsIHZhbHVlKVxuICB9XG4gIGNoZWNrQm91bmRzKGJ1Ziwgb2Zmc2V0LCBieXRlTGVuZ3RoKVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZU51bWJlciAodmFsdWUsIG5hbWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkVSUl9JTlZBTElEX0FSR19UWVBFKG5hbWUsICdudW1iZXInLCB2YWx1ZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBib3VuZHNFcnJvciAodmFsdWUsIGxlbmd0aCwgdHlwZSkge1xuICBpZiAoTWF0aC5mbG9vcih2YWx1ZSkgIT09IHZhbHVlKSB7XG4gICAgdmFsaWRhdGVOdW1iZXIodmFsdWUsIHR5cGUpXG4gICAgdGhyb3cgbmV3IGVycm9ycy5FUlJfT1VUX09GX1JBTkdFKHR5cGUgfHwgJ29mZnNldCcsICdhbiBpbnRlZ2VyJywgdmFsdWUpXG4gIH1cblxuICBpZiAobGVuZ3RoIDwgMCkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuRVJSX0JVRkZFUl9PVVRfT0ZfQk9VTkRTKClcbiAgfVxuXG4gIHRocm93IG5ldyBlcnJvcnMuRVJSX09VVF9PRl9SQU5HRSh0eXBlIHx8ICdvZmZzZXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYD49ICR7dHlwZSA/IDEgOiAwfSBhbmQgPD0gJHtsZW5ndGh9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKVxufVxuXG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09XG5cbmNvbnN0IElOVkFMSURfQkFTRTY0X1JFID0gL1teKy8wLTlBLVphLXotX10vZ1xuXG5mdW5jdGlvbiBiYXNlNjRjbGVhbiAoc3RyKSB7XG4gIC8vIE5vZGUgdGFrZXMgZXF1YWwgc2lnbnMgYXMgZW5kIG9mIHRoZSBCYXNlNjQgZW5jb2RpbmdcbiAgc3RyID0gc3RyLnNwbGl0KCc9JylbMF1cbiAgLy8gTm9kZSBzdHJpcHMgb3V0IGludmFsaWQgY2hhcmFjdGVycyBsaWtlIFxcbiBhbmQgXFx0IGZyb20gdGhlIHN0cmluZywgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHN0ciA9IHN0ci50cmltKCkucmVwbGFjZShJTlZBTElEX0JBU0U2NF9SRSwgJycpXG4gIC8vIE5vZGUgY29udmVydHMgc3RyaW5ncyB3aXRoIGxlbmd0aCA8IDIgdG8gJydcbiAgaWYgKHN0ci5sZW5ndGggPCAyKSByZXR1cm4gJydcbiAgLy8gTm9kZSBhbGxvd3MgZm9yIG5vbi1wYWRkZWQgYmFzZTY0IHN0cmluZ3MgKG1pc3NpbmcgdHJhaWxpbmcgPT09KSwgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHdoaWxlIChzdHIubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgIHN0ciA9IHN0ciArICc9J1xuICB9XG4gIHJldHVybiBzdHJcbn1cblxuZnVuY3Rpb24gdXRmOFRvQnl0ZXMgKHN0cmluZywgdW5pdHMpIHtcbiAgdW5pdHMgPSB1bml0cyB8fCBJbmZpbml0eVxuICBsZXQgY29kZVBvaW50XG4gIGNvbnN0IGxlbmd0aCA9IHN0cmluZy5sZW5ndGhcbiAgbGV0IGxlYWRTdXJyb2dhdGUgPSBudWxsXG4gIGNvbnN0IGJ5dGVzID0gW11cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgY29kZVBvaW50ID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcblxuICAgIC8vIGlzIHN1cnJvZ2F0ZSBjb21wb25lbnRcbiAgICBpZiAoY29kZVBvaW50ID4gMHhEN0ZGICYmIGNvZGVQb2ludCA8IDB4RTAwMCkge1xuICAgICAgLy8gbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICghbGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgICAvLyBubyBsZWFkIHlldFxuICAgICAgICBpZiAoY29kZVBvaW50ID4gMHhEQkZGKSB7XG4gICAgICAgICAgLy8gdW5leHBlY3RlZCB0cmFpbFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPT09IGxlbmd0aCkge1xuICAgICAgICAgIC8vIHVucGFpcmVkIGxlYWRcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gdmFsaWQgbGVhZFxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMiBsZWFkcyBpbiBhIHJvd1xuICAgICAgaWYgKGNvZGVQb2ludCA8IDB4REMwMCkge1xuICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyB2YWxpZCBzdXJyb2dhdGUgcGFpclxuICAgICAgY29kZVBvaW50ID0gKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDAgPDwgMTAgfCBjb2RlUG9pbnQgLSAweERDMDApICsgMHgxMDAwMFxuICAgIH0gZWxzZSBpZiAobGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgLy8gdmFsaWQgYm1wIGNoYXIsIGJ1dCBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgfVxuXG4gICAgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcblxuICAgIC8vIGVuY29kZSB1dGY4XG4gICAgaWYgKGNvZGVQb2ludCA8IDB4ODApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMSkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChjb2RlUG9pbnQpXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDgwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2IHwgMHhDMCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyB8IDB4RTAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDQpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDEyIHwgMHhGMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb2RlIHBvaW50JylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlUb0J5dGVzIChzdHIpIHtcbiAgY29uc3QgYnl0ZUFycmF5ID0gW11cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICAvLyBOb2RlJ3MgY29kZSBzZWVtcyB0byBiZSBkb2luZyB0aGlzIGFuZCBub3QgJiAweDdGLi5cbiAgICBieXRlQXJyYXkucHVzaChzdHIuY2hhckNvZGVBdChpKSAmIDB4RkYpXG4gIH1cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiB1dGYxNmxlVG9CeXRlcyAoc3RyLCB1bml0cykge1xuICBsZXQgYywgaGksIGxvXG4gIGNvbnN0IGJ5dGVBcnJheSA9IFtdXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG5cbiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSlcbiAgICBoaSA9IGMgPj4gOFxuICAgIGxvID0gYyAlIDI1NlxuICAgIGJ5dGVBcnJheS5wdXNoKGxvKVxuICAgIGJ5dGVBcnJheS5wdXNoKGhpKVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiBiYXNlNjRUb0J5dGVzIChzdHIpIHtcbiAgcmV0dXJuIGJhc2U2NC50b0J5dGVBcnJheShiYXNlNjRjbGVhbihzdHIpKVxufVxuXG5mdW5jdGlvbiBibGl0QnVmZmVyIChzcmMsIGRzdCwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgbGV0IGlcbiAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgaWYgKChpICsgb2Zmc2V0ID49IGRzdC5sZW5ndGgpIHx8IChpID49IHNyYy5sZW5ndGgpKSBicmVha1xuICAgIGRzdFtpICsgb2Zmc2V0XSA9IHNyY1tpXVxuICB9XG4gIHJldHVybiBpXG59XG5cbi8vIEFycmF5QnVmZmVyIG9yIFVpbnQ4QXJyYXkgb2JqZWN0cyBmcm9tIG90aGVyIGNvbnRleHRzIChpLmUuIGlmcmFtZXMpIGRvIG5vdCBwYXNzXG4vLyB0aGUgYGluc3RhbmNlb2ZgIGNoZWNrIGJ1dCB0aGV5IHNob3VsZCBiZSB0cmVhdGVkIGFzIG9mIHRoYXQgdHlwZS5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvaXNzdWVzLzE2NlxuZnVuY3Rpb24gaXNJbnN0YW5jZSAob2JqLCB0eXBlKSB7XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiB0eXBlIHx8XG4gICAgKG9iaiAhPSBudWxsICYmIG9iai5jb25zdHJ1Y3RvciAhPSBudWxsICYmIG9iai5jb25zdHJ1Y3Rvci5uYW1lICE9IG51bGwgJiZcbiAgICAgIG9iai5jb25zdHJ1Y3Rvci5uYW1lID09PSB0eXBlLm5hbWUpXG59XG5mdW5jdGlvbiBudW1iZXJJc05hTiAob2JqKSB7XG4gIC8vIEZvciBJRTExIHN1cHBvcnRcbiAgcmV0dXJuIG9iaiAhPT0gb2JqIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG59XG5cbi8vIENyZWF0ZSBsb29rdXAgdGFibGUgZm9yIGB0b1N0cmluZygnaGV4JylgXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL2lzc3Vlcy8yMTlcbmNvbnN0IGhleFNsaWNlTG9va3VwVGFibGUgPSAoZnVuY3Rpb24gKCkge1xuICBjb25zdCBhbHBoYWJldCA9ICcwMTIzNDU2Nzg5YWJjZGVmJ1xuICBjb25zdCB0YWJsZSA9IG5ldyBBcnJheSgyNTYpXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgMTY7ICsraSkge1xuICAgIGNvbnN0IGkxNiA9IGkgKiAxNlxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgMTY7ICsraikge1xuICAgICAgdGFibGVbaTE2ICsgal0gPSBhbHBoYWJldFtpXSArIGFscGhhYmV0W2pdXG4gICAgfVxuICB9XG4gIHJldHVybiB0YWJsZVxufSkoKVxuXG4vLyBSZXR1cm4gbm90IGZ1bmN0aW9uIHdpdGggRXJyb3IgaWYgQmlnSW50IG5vdCBzdXBwb3J0ZWRcbmZ1bmN0aW9uIGRlZmluZUJpZ0ludE1ldGhvZCAoZm4pIHtcbiAgcmV0dXJuIHR5cGVvZiBCaWdJbnQgPT09ICd1bmRlZmluZWQnID8gQnVmZmVyQmlnSW50Tm90RGVmaW5lZCA6IGZuXG59XG5cbmZ1bmN0aW9uIEJ1ZmZlckJpZ0ludE5vdERlZmluZWQgKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ0JpZ0ludCBub3Qgc3VwcG9ydGVkJylcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEdldEludHJpbnNpYyA9IHJlcXVpcmUoJ2dldC1pbnRyaW5zaWMnKTtcblxudmFyIGNhbGxCaW5kID0gcmVxdWlyZSgnLi8nKTtcblxudmFyICRpbmRleE9mID0gY2FsbEJpbmQoR2V0SW50cmluc2ljKCdTdHJpbmcucHJvdG90eXBlLmluZGV4T2YnKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY2FsbEJvdW5kSW50cmluc2ljKG5hbWUsIGFsbG93TWlzc2luZykge1xuXHR2YXIgaW50cmluc2ljID0gR2V0SW50cmluc2ljKG5hbWUsICEhYWxsb3dNaXNzaW5nKTtcblx0aWYgKHR5cGVvZiBpbnRyaW5zaWMgPT09ICdmdW5jdGlvbicgJiYgJGluZGV4T2YobmFtZSwgJy5wcm90b3R5cGUuJykgPiAtMSkge1xuXHRcdHJldHVybiBjYWxsQmluZChpbnRyaW5zaWMpO1xuXHR9XG5cdHJldHVybiBpbnRyaW5zaWM7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYmluZCA9IHJlcXVpcmUoJ2Z1bmN0aW9uLWJpbmQnKTtcbnZhciBHZXRJbnRyaW5zaWMgPSByZXF1aXJlKCdnZXQtaW50cmluc2ljJyk7XG5cbnZhciAkYXBwbHkgPSBHZXRJbnRyaW5zaWMoJyVGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHklJyk7XG52YXIgJGNhbGwgPSBHZXRJbnRyaW5zaWMoJyVGdW5jdGlvbi5wcm90b3R5cGUuY2FsbCUnKTtcbnZhciAkcmVmbGVjdEFwcGx5ID0gR2V0SW50cmluc2ljKCclUmVmbGVjdC5hcHBseSUnLCB0cnVlKSB8fCBiaW5kLmNhbGwoJGNhbGwsICRhcHBseSk7XG5cbnZhciAkZ09QRCA9IEdldEludHJpbnNpYygnJU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IlJywgdHJ1ZSk7XG52YXIgJGRlZmluZVByb3BlcnR5ID0gR2V0SW50cmluc2ljKCclT2JqZWN0LmRlZmluZVByb3BlcnR5JScsIHRydWUpO1xudmFyICRtYXggPSBHZXRJbnRyaW5zaWMoJyVNYXRoLm1heCUnKTtcblxuaWYgKCRkZWZpbmVQcm9wZXJ0eSkge1xuXHR0cnkge1xuXHRcdCRkZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IHZhbHVlOiAxIH0pO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0Ly8gSUUgOCBoYXMgYSBicm9rZW4gZGVmaW5lUHJvcGVydHlcblx0XHQkZGVmaW5lUHJvcGVydHkgPSBudWxsO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY2FsbEJpbmQob3JpZ2luYWxGdW5jdGlvbikge1xuXHR2YXIgZnVuYyA9ICRyZWZsZWN0QXBwbHkoYmluZCwgJGNhbGwsIGFyZ3VtZW50cyk7XG5cdGlmICgkZ09QRCAmJiAkZGVmaW5lUHJvcGVydHkpIHtcblx0XHR2YXIgZGVzYyA9ICRnT1BEKGZ1bmMsICdsZW5ndGgnKTtcblx0XHRpZiAoZGVzYy5jb25maWd1cmFibGUpIHtcblx0XHRcdC8vIG9yaWdpbmFsIGxlbmd0aCwgcGx1cyB0aGUgcmVjZWl2ZXIsIG1pbnVzIGFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyAoYWZ0ZXIgdGhlIHJlY2VpdmVyKVxuXHRcdFx0JGRlZmluZVByb3BlcnR5KFxuXHRcdFx0XHRmdW5jLFxuXHRcdFx0XHQnbGVuZ3RoJyxcblx0XHRcdFx0eyB2YWx1ZTogMSArICRtYXgoMCwgb3JpZ2luYWxGdW5jdGlvbi5sZW5ndGggLSAoYXJndW1lbnRzLmxlbmd0aCAtIDEpKSB9XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZnVuYztcbn07XG5cbnZhciBhcHBseUJpbmQgPSBmdW5jdGlvbiBhcHBseUJpbmQoKSB7XG5cdHJldHVybiAkcmVmbGVjdEFwcGx5KGJpbmQsICRhcHBseSwgYXJndW1lbnRzKTtcbn07XG5cbmlmICgkZGVmaW5lUHJvcGVydHkpIHtcblx0JGRlZmluZVByb3BlcnR5KG1vZHVsZS5leHBvcnRzLCAnYXBwbHknLCB7IHZhbHVlOiBhcHBseUJpbmQgfSk7XG59IGVsc2Uge1xuXHRtb2R1bGUuZXhwb3J0cy5hcHBseSA9IGFwcGx5QmluZDtcbn1cbiIsIi8qISBGb3IgbGljZW5zZSBpbmZvcm1hdGlvbiBwbGVhc2Ugc2VlIGNib3IuanMuTElDRU5TRS50eHQgKi9cbiFmdW5jdGlvbih0LGUpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPWUoZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHJlcXVpcmUoXCJiaWdudW1iZXIuanNcIil9Y2F0Y2godCl7fX0oKSxyZXF1aXJlKFwidXRpbFwiKSk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbLFwidXRpbFwiXSxlKTpcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzLmNib3I9ZShmdW5jdGlvbigpe3RyeXtyZXR1cm4gcmVxdWlyZShcImJpZ251bWJlci5qc1wiKX1jYXRjaCh0KXt9fSgpLHJlcXVpcmUoXCJ1dGlsXCIpKTp0LmNib3I9ZSh0LkJpZ051bWJlcix0LnV0aWwpfSh0aGlzLChmdW5jdGlvbih0LGUpe3JldHVybigoKT0+e3ZhciByPXs3NDI6KHQsZSk9PntcInVzZSBzdHJpY3RcIjtlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24odCl7dmFyIGU9dSh0KSxyPWVbMF0sbj1lWzFdO3JldHVybiAzKihyK24pLzQtbn0sZS50b0J5dGVBcnJheT1mdW5jdGlvbih0KXt2YXIgZSxyLG89dSh0KSxzPW9bMF0sYT1vWzFdLGw9bmV3IGkoZnVuY3Rpb24odCxlLHIpe3JldHVybiAzKihlK3IpLzQtcn0oMCxzLGEpKSxjPTAsZj1hPjA/cy00OnM7Zm9yKHI9MDtyPGY7cis9NCllPW5bdC5jaGFyQ29kZUF0KHIpXTw8MTh8blt0LmNoYXJDb2RlQXQocisxKV08PDEyfG5bdC5jaGFyQ29kZUF0KHIrMildPDw2fG5bdC5jaGFyQ29kZUF0KHIrMyldLGxbYysrXT1lPj4xNiYyNTUsbFtjKytdPWU+PjgmMjU1LGxbYysrXT0yNTUmZTtyZXR1cm4gMj09PWEmJihlPW5bdC5jaGFyQ29kZUF0KHIpXTw8MnxuW3QuY2hhckNvZGVBdChyKzEpXT4+NCxsW2MrK109MjU1JmUpLDE9PT1hJiYoZT1uW3QuY2hhckNvZGVBdChyKV08PDEwfG5bdC5jaGFyQ29kZUF0KHIrMSldPDw0fG5bdC5jaGFyQ29kZUF0KHIrMildPj4yLGxbYysrXT1lPj44JjI1NSxsW2MrK109MjU1JmUpLGx9LGUuZnJvbUJ5dGVBcnJheT1mdW5jdGlvbih0KXtmb3IodmFyIGUsbj10Lmxlbmd0aCxpPW4lMyxvPVtdLHM9MTYzODMsYT0wLHU9bi1pO2E8dTthKz1zKW8ucHVzaChsKHQsYSxhK3M+dT91OmErcykpO3JldHVybiAxPT09aT8oZT10W24tMV0sby5wdXNoKHJbZT4+Ml0rcltlPDw0JjYzXStcIj09XCIpKToyPT09aSYmKGU9KHRbbi0yXTw8OCkrdFtuLTFdLG8ucHVzaChyW2U+PjEwXStyW2U+PjQmNjNdK3JbZTw8MiY2M10rXCI9XCIpKSxvLmpvaW4oXCJcIil9O2Zvcih2YXIgcj1bXSxuPVtdLGk9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQ4QXJyYXk/VWludDhBcnJheTpBcnJheSxvPVwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL1wiLHM9MCxhPW8ubGVuZ3RoO3M8YTsrK3MpcltzXT1vW3NdLG5bby5jaGFyQ29kZUF0KHMpXT1zO2Z1bmN0aW9uIHUodCl7dmFyIGU9dC5sZW5ndGg7aWYoZSU0PjApdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNFwiKTt2YXIgcj10LmluZGV4T2YoXCI9XCIpO3JldHVybi0xPT09ciYmKHI9ZSksW3Iscj09PWU/MDo0LXIlNF19ZnVuY3Rpb24gbCh0LGUsbil7Zm9yKHZhciBpLG8scz1bXSxhPWU7YTxuO2ErPTMpaT0odFthXTw8MTYmMTY3MTE2ODApKyh0W2ErMV08PDgmNjUyODApKygyNTUmdFthKzJdKSxzLnB1c2goclsobz1pKT4+MTgmNjNdK3Jbbz4+MTImNjNdK3Jbbz4+NiY2M10rcls2MyZvXSk7cmV0dXJuIHMuam9pbihcIlwiKX1uW1wiLVwiLmNoYXJDb2RlQXQoMCldPTYyLG5bXCJfXCIuY2hhckNvZGVBdCgwKV09NjN9LDc2NDoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7Y29uc3Qgbj1yKDc0MiksaT1yKDY0NSksbz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbC5mb3I/U3ltYm9sLmZvcihcIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tXCIpOm51bGw7ZS5CdWZmZXI9dSxlLlNsb3dCdWZmZXI9ZnVuY3Rpb24odCl7cmV0dXJuK3QhPXQmJih0PTApLHUuYWxsb2MoK3QpfSxlLklOU1BFQ1RfTUFYX0JZVEVTPTUwO2NvbnN0IHM9MjE0NzQ4MzY0NztmdW5jdGlvbiBhKHQpe2lmKHQ+cyl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIFwiJyt0KydcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKTtjb25zdCBlPW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSx1LnByb3RvdHlwZSksZX1mdW5jdGlvbiB1KHQsZSxyKXtpZihcIm51bWJlclwiPT10eXBlb2YgdCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwic3RyaW5nXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIHN0cmluZy4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTtyZXR1cm4gZih0KX1yZXR1cm4gbCh0LGUscil9ZnVuY3Rpb24gbCh0LGUscil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpcmV0dXJuIGZ1bmN0aW9uKHQsZSl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJlwiXCIhPT1lfHwoZT1cInV0ZjhcIiksIXUuaXNFbmNvZGluZyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5rbm93biBlbmNvZGluZzogXCIrZSk7Y29uc3Qgcj0wfHkodCxlKTtsZXQgbj1hKHIpO2NvbnN0IGk9bi53cml0ZSh0LGUpO3JldHVybiBpIT09ciYmKG49bi5zbGljZSgwLGkpKSxufSh0LGUpO2lmKEFycmF5QnVmZmVyLmlzVmlldyh0KSlyZXR1cm4gZnVuY3Rpb24odCl7aWYoSyh0LFVpbnQ4QXJyYXkpKXtjb25zdCBlPW5ldyBVaW50OEFycmF5KHQpO3JldHVybiBwKGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpfXJldHVybiBoKHQpfSh0KTtpZihudWxsPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSBcIit0eXBlb2YgdCk7aWYoSyh0LEFycmF5QnVmZmVyKXx8dCYmSyh0LmJ1ZmZlcixBcnJheUJ1ZmZlcikpcmV0dXJuIHAodCxlLHIpO2lmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciYmKEsodCxTaGFyZWRBcnJheUJ1ZmZlcil8fHQmJksodC5idWZmZXIsU2hhcmVkQXJyYXlCdWZmZXIpKSlyZXR1cm4gcCh0LGUscik7aWYoXCJudW1iZXJcIj09dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwidmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInKTtjb25zdCBuPXQudmFsdWVPZiYmdC52YWx1ZU9mKCk7aWYobnVsbCE9biYmbiE9PXQpcmV0dXJuIHUuZnJvbShuLGUscik7Y29uc3QgaT1mdW5jdGlvbih0KXtpZih1LmlzQnVmZmVyKHQpKXtjb25zdCBlPTB8ZCh0Lmxlbmd0aCkscj1hKGUpO3JldHVybiAwPT09ci5sZW5ndGh8fHQuY29weShyLDAsMCxlKSxyfXJldHVybiB2b2lkIDAhPT10Lmxlbmd0aD9cIm51bWJlclwiIT10eXBlb2YgdC5sZW5ndGh8fFgodC5sZW5ndGgpP2EoMCk6aCh0KTpcIkJ1ZmZlclwiPT09dC50eXBlJiZBcnJheS5pc0FycmF5KHQuZGF0YSk/aCh0LmRhdGEpOnZvaWQgMH0odCk7aWYoaSlyZXR1cm4gaTtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZudWxsIT1TeW1ib2wudG9QcmltaXRpdmUmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHRbU3ltYm9sLnRvUHJpbWl0aXZlXSlyZXR1cm4gdS5mcm9tKHRbU3ltYm9sLnRvUHJpbWl0aXZlXShcInN0cmluZ1wiKSxlLHIpO3Rocm93IG5ldyBUeXBlRXJyb3IoXCJUaGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSBcIit0eXBlb2YgdCl9ZnVuY3Rpb24gYyh0KXtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyJyk7aWYodDwwKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInK3QrJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcInNpemVcIicpfWZ1bmN0aW9uIGYodCl7cmV0dXJuIGModCksYSh0PDA/MDowfGQodCkpfWZ1bmN0aW9uIGgodCl7Y29uc3QgZT10Lmxlbmd0aDwwPzA6MHxkKHQubGVuZ3RoKSxyPWEoZSk7Zm9yKGxldCBuPTA7bjxlO24rPTEpcltuXT0yNTUmdFtuXTtyZXR1cm4gcn1mdW5jdGlvbiBwKHQsZSxyKXtpZihlPDB8fHQuYnl0ZUxlbmd0aDxlKXRocm93IG5ldyBSYW5nZUVycm9yKCdcIm9mZnNldFwiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpO2lmKHQuYnl0ZUxlbmd0aDxlKyhyfHwwKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJsZW5ndGhcIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKTtsZXQgbjtyZXR1cm4gbj12b2lkIDA9PT1lJiZ2b2lkIDA9PT1yP25ldyBVaW50OEFycmF5KHQpOnZvaWQgMD09PXI/bmV3IFVpbnQ4QXJyYXkodCxlKTpuZXcgVWludDhBcnJheSh0LGUsciksT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sdS5wcm90b3R5cGUpLG59ZnVuY3Rpb24gZCh0KXtpZih0Pj1zKXRocm93IG5ldyBSYW5nZUVycm9yKFwiQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSBzaXplOiAweFwiK3MudG9TdHJpbmcoMTYpK1wiIGJ5dGVzXCIpO3JldHVybiAwfHR9ZnVuY3Rpb24geSh0LGUpe2lmKHUuaXNCdWZmZXIodCkpcmV0dXJuIHQubGVuZ3RoO2lmKEFycmF5QnVmZmVyLmlzVmlldyh0KXx8Syh0LEFycmF5QnVmZmVyKSlyZXR1cm4gdC5ieXRlTGVuZ3RoO2lmKFwic3RyaW5nXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIG9yIEFycmF5QnVmZmVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIHQpO2NvbnN0IHI9dC5sZW5ndGgsbj1hcmd1bWVudHMubGVuZ3RoPjImJiEwPT09YXJndW1lbnRzWzJdO2lmKCFuJiYwPT09cilyZXR1cm4gMDtsZXQgaT0hMTtmb3IoOzspc3dpdGNoKGUpe2Nhc2VcImFzY2lpXCI6Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuIHI7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cmV0dXJuIFkodCkubGVuZ3RoO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVybiAyKnI7Y2FzZVwiaGV4XCI6cmV0dXJuIHI+Pj4xO2Nhc2VcImJhc2U2NFwiOnJldHVybiBxKHQpLmxlbmd0aDtkZWZhdWx0OmlmKGkpcmV0dXJuIG4/LTE6WSh0KS5sZW5ndGg7ZT0oXCJcIitlKS50b0xvd2VyQ2FzZSgpLGk9ITB9fWZ1bmN0aW9uIGcodCxlLHIpe2xldCBuPSExO2lmKCh2b2lkIDA9PT1lfHxlPDApJiYoZT0wKSxlPnRoaXMubGVuZ3RoKXJldHVyblwiXCI7aWYoKHZvaWQgMD09PXJ8fHI+dGhpcy5sZW5ndGgpJiYocj10aGlzLmxlbmd0aCkscjw9MClyZXR1cm5cIlwiO2lmKChyPj4+PTApPD0oZT4+Pj0wKSlyZXR1cm5cIlwiO2Zvcih0fHwodD1cInV0ZjhcIik7Oylzd2l0Y2godCl7Y2FzZVwiaGV4XCI6cmV0dXJuIFIodGhpcyxlLHIpO2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOnJldHVybiBJKHRoaXMsZSxyKTtjYXNlXCJhc2NpaVwiOnJldHVybiBPKHRoaXMsZSxyKTtjYXNlXCJsYXRpbjFcIjpjYXNlXCJiaW5hcnlcIjpyZXR1cm4geCh0aGlzLGUscik7Y2FzZVwiYmFzZTY0XCI6cmV0dXJuIFQodGhpcyxlLHIpO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVybiBOKHRoaXMsZSxyKTtkZWZhdWx0OmlmKG4pdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK3QpO3Q9KHQrXCJcIikudG9Mb3dlckNhc2UoKSxuPSEwfX1mdW5jdGlvbiBiKHQsZSxyKXtjb25zdCBuPXRbZV07dFtlXT10W3JdLHRbcl09bn1mdW5jdGlvbiBtKHQsZSxyLG4saSl7aWYoMD09PXQubGVuZ3RoKXJldHVybi0xO2lmKFwic3RyaW5nXCI9PXR5cGVvZiByPyhuPXIscj0wKTpyPjIxNDc0ODM2NDc/cj0yMTQ3NDgzNjQ3OnI8LTIxNDc0ODM2NDgmJihyPS0yMTQ3NDgzNjQ4KSxYKHI9K3IpJiYocj1pPzA6dC5sZW5ndGgtMSkscjwwJiYocj10Lmxlbmd0aCtyKSxyPj10Lmxlbmd0aCl7aWYoaSlyZXR1cm4tMTtyPXQubGVuZ3RoLTF9ZWxzZSBpZihyPDApe2lmKCFpKXJldHVybi0xO3I9MH1pZihcInN0cmluZ1wiPT10eXBlb2YgZSYmKGU9dS5mcm9tKGUsbikpLHUuaXNCdWZmZXIoZSkpcmV0dXJuIDA9PT1lLmxlbmd0aD8tMTp3KHQsZSxyLG4saSk7aWYoXCJudW1iZXJcIj09dHlwZW9mIGUpcmV0dXJuIGUmPTI1NSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mP2k/VWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHQsZSxyKTpVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKHQsZSxyKTp3KHQsW2VdLHIsbixpKTt0aHJvdyBuZXcgVHlwZUVycm9yKFwidmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyXCIpfWZ1bmN0aW9uIHcodCxlLHIsbixpKXtsZXQgbyxzPTEsYT10Lmxlbmd0aCx1PWUubGVuZ3RoO2lmKHZvaWQgMCE9PW4mJihcInVjczJcIj09PShuPVN0cmluZyhuKS50b0xvd2VyQ2FzZSgpKXx8XCJ1Y3MtMlwiPT09bnx8XCJ1dGYxNmxlXCI9PT1ufHxcInV0Zi0xNmxlXCI9PT1uKSl7aWYodC5sZW5ndGg8Mnx8ZS5sZW5ndGg8MilyZXR1cm4tMTtzPTIsYS89Mix1Lz0yLHIvPTJ9ZnVuY3Rpb24gbCh0LGUpe3JldHVybiAxPT09cz90W2VdOnQucmVhZFVJbnQxNkJFKGUqcyl9aWYoaSl7bGV0IG49LTE7Zm9yKG89cjtvPGE7bysrKWlmKGwodCxvKT09PWwoZSwtMT09PW4/MDpvLW4pKXtpZigtMT09PW4mJihuPW8pLG8tbisxPT09dSlyZXR1cm4gbipzfWVsc2UtMSE9PW4mJihvLT1vLW4pLG49LTF9ZWxzZSBmb3Iocit1PmEmJihyPWEtdSksbz1yO28+PTA7by0tKXtsZXQgcj0hMDtmb3IobGV0IG49MDtuPHU7bisrKWlmKGwodCxvK24pIT09bChlLG4pKXtyPSExO2JyZWFrfWlmKHIpcmV0dXJuIG99cmV0dXJuLTF9ZnVuY3Rpb24gXyh0LGUscixuKXtyPU51bWJlcihyKXx8MDtjb25zdCBpPXQubGVuZ3RoLXI7bj8obj1OdW1iZXIobikpPmkmJihuPWkpOm49aTtjb25zdCBvPWUubGVuZ3RoO2xldCBzO2ZvcihuPm8vMiYmKG49by8yKSxzPTA7czxuOysrcyl7Y29uc3Qgbj1wYXJzZUludChlLnN1YnN0cigyKnMsMiksMTYpO2lmKFgobikpcmV0dXJuIHM7dFtyK3NdPW59cmV0dXJuIHN9ZnVuY3Rpb24gRSh0LGUscixuKXtyZXR1cm4gVihZKGUsdC5sZW5ndGgtciksdCxyLG4pfWZ1bmN0aW9uIHYodCxlLHIsbil7cmV0dXJuIFYoZnVuY3Rpb24odCl7Y29uc3QgZT1bXTtmb3IobGV0IHI9MDtyPHQubGVuZ3RoOysrcillLnB1c2goMjU1JnQuY2hhckNvZGVBdChyKSk7cmV0dXJuIGV9KGUpLHQscixuKX1mdW5jdGlvbiBTKHQsZSxyLG4pe3JldHVybiBWKHEoZSksdCxyLG4pfWZ1bmN0aW9uIEEodCxlLHIsbil7cmV0dXJuIFYoZnVuY3Rpb24odCxlKXtsZXQgcixuLGk7Y29uc3Qgbz1bXTtmb3IobGV0IHM9MDtzPHQubGVuZ3RoJiYhKChlLT0yKTwwKTsrK3Mpcj10LmNoYXJDb2RlQXQocyksbj1yPj44LGk9ciUyNTYsby5wdXNoKGkpLG8ucHVzaChuKTtyZXR1cm4gb30oZSx0Lmxlbmd0aC1yKSx0LHIsbil9ZnVuY3Rpb24gVCh0LGUscil7cmV0dXJuIDA9PT1lJiZyPT09dC5sZW5ndGg/bi5mcm9tQnl0ZUFycmF5KHQpOm4uZnJvbUJ5dGVBcnJheSh0LnNsaWNlKGUscikpfWZ1bmN0aW9uIEkodCxlLHIpe3I9TWF0aC5taW4odC5sZW5ndGgscik7Y29uc3Qgbj1bXTtsZXQgaT1lO2Zvcig7aTxyOyl7Y29uc3QgZT10W2ldO2xldCBvPW51bGwscz1lPjIzOT80OmU+MjIzPzM6ZT4xOTE/MjoxO2lmKGkrczw9cil7bGV0IHIsbixhLHU7c3dpdGNoKHMpe2Nhc2UgMTplPDEyOCYmKG89ZSk7YnJlYWs7Y2FzZSAyOnI9dFtpKzFdLDEyOD09KDE5MiZyKSYmKHU9KDMxJmUpPDw2fDYzJnIsdT4xMjcmJihvPXUpKTticmVhaztjYXNlIDM6cj10W2krMV0sbj10W2krMl0sMTI4PT0oMTkyJnIpJiYxMjg9PSgxOTImbikmJih1PSgxNSZlKTw8MTJ8KDYzJnIpPDw2fDYzJm4sdT4yMDQ3JiYodTw1NTI5Nnx8dT41NzM0MykmJihvPXUpKTticmVhaztjYXNlIDQ6cj10W2krMV0sbj10W2krMl0sYT10W2krM10sMTI4PT0oMTkyJnIpJiYxMjg9PSgxOTImbikmJjEyOD09KDE5MiZhKSYmKHU9KDE1JmUpPDwxOHwoNjMmcik8PDEyfCg2MyZuKTw8Nnw2MyZhLHU+NjU1MzUmJnU8MTExNDExMiYmKG89dSkpfX1udWxsPT09bz8obz02NTUzMyxzPTEpOm8+NjU1MzUmJihvLT02NTUzNixuLnB1c2gobz4+PjEwJjEwMjN8NTUyOTYpLG89NTYzMjB8MTAyMyZvKSxuLnB1c2gobyksaSs9c31yZXR1cm4gZnVuY3Rpb24odCl7Y29uc3QgZT10Lmxlbmd0aDtpZihlPD1CKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyx0KTtsZXQgcj1cIlwiLG49MDtmb3IoO248ZTspcis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsdC5zbGljZShuLG4rPUIpKTtyZXR1cm4gcn0obil9ZS5rTWF4TGVuZ3RoPXMsdS5UWVBFRF9BUlJBWV9TVVBQT1JUPWZ1bmN0aW9uKCl7dHJ5e2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoMSksZT17Zm9vOmZ1bmN0aW9uKCl7cmV0dXJuIDQyfX07cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihlLFVpbnQ4QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YodCxlKSw0Mj09PXQuZm9vKCl9Y2F0Y2godCl7cmV0dXJuITF9fSgpLHUuVFlQRURfQVJSQVlfU1VQUE9SVHx8XCJ1bmRlZmluZWRcIj09dHlwZW9mIGNvbnNvbGV8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGNvbnNvbGUuZXJyb3J8fGNvbnNvbGUuZXJyb3IoXCJUaGlzIGJyb3dzZXIgbGFja3MgdHlwZWQgYXJyYXkgKFVpbnQ4QXJyYXkpIHN1cHBvcnQgd2hpY2ggaXMgcmVxdWlyZWQgYnkgYGJ1ZmZlcmAgdjUueC4gVXNlIGBidWZmZXJgIHY0LnggaWYgeW91IHJlcXVpcmUgb2xkIGJyb3dzZXIgc3VwcG9ydC5cIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KHUucHJvdG90eXBlLFwicGFyZW50XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYodS5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5idWZmZXJ9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHUucHJvdG90eXBlLFwib2Zmc2V0XCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7aWYodS5pc0J1ZmZlcih0aGlzKSlyZXR1cm4gdGhpcy5ieXRlT2Zmc2V0fX0pLHUucG9vbFNpemU9ODE5Mix1LmZyb209ZnVuY3Rpb24odCxlLHIpe3JldHVybiBsKHQsZSxyKX0sT2JqZWN0LnNldFByb3RvdHlwZU9mKHUucHJvdG90eXBlLFVpbnQ4QXJyYXkucHJvdG90eXBlKSxPYmplY3Quc2V0UHJvdG90eXBlT2YodSxVaW50OEFycmF5KSx1LmFsbG9jPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIpe3JldHVybiBjKHQpLHQ8PTA/YSh0KTp2b2lkIDAhPT1lP1wic3RyaW5nXCI9PXR5cGVvZiByP2EodCkuZmlsbChlLHIpOmEodCkuZmlsbChlKTphKHQpfSh0LGUscil9LHUuYWxsb2NVbnNhZmU9ZnVuY3Rpb24odCl7cmV0dXJuIGYodCl9LHUuYWxsb2NVbnNhZmVTbG93PWZ1bmN0aW9uKHQpe3JldHVybiBmKHQpfSx1LmlzQnVmZmVyPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiYhMD09PXQuX2lzQnVmZmVyJiZ0IT09dS5wcm90b3R5cGV9LHUuY29tcGFyZT1mdW5jdGlvbih0LGUpe2lmKEsodCxVaW50OEFycmF5KSYmKHQ9dS5mcm9tKHQsdC5vZmZzZXQsdC5ieXRlTGVuZ3RoKSksSyhlLFVpbnQ4QXJyYXkpJiYoZT11LmZyb20oZSxlLm9mZnNldCxlLmJ5dGVMZW5ndGgpKSwhdS5pc0J1ZmZlcih0KXx8IXUuaXNCdWZmZXIoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwiYnVmMVwiLCBcImJ1ZjJcIiBhcmd1bWVudHMgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheScpO2lmKHQ9PT1lKXJldHVybiAwO2xldCByPXQubGVuZ3RoLG49ZS5sZW5ndGg7Zm9yKGxldCBpPTAsbz1NYXRoLm1pbihyLG4pO2k8bzsrK2kpaWYodFtpXSE9PWVbaV0pe3I9dFtpXSxuPWVbaV07YnJlYWt9cmV0dXJuIHI8bj8tMTpuPHI/MTowfSx1LmlzRW5jb2Rpbmc9ZnVuY3Rpb24odCl7c3dpdGNoKFN0cmluZyh0KS50b0xvd2VyQ2FzZSgpKXtjYXNlXCJoZXhcIjpjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpjYXNlXCJhc2NpaVwiOmNhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOmNhc2VcImJhc2U2NFwiOmNhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fSx1LmNvbmNhdD1mdW5jdGlvbih0LGUpe2lmKCFBcnJheS5pc0FycmF5KHQpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2lmKDA9PT10Lmxlbmd0aClyZXR1cm4gdS5hbGxvYygwKTtsZXQgcjtpZih2b2lkIDA9PT1lKWZvcihlPTAscj0wO3I8dC5sZW5ndGg7KytyKWUrPXRbcl0ubGVuZ3RoO2NvbnN0IG49dS5hbGxvY1Vuc2FmZShlKTtsZXQgaT0wO2ZvcihyPTA7cjx0Lmxlbmd0aDsrK3Ipe2xldCBlPXRbcl07aWYoSyhlLFVpbnQ4QXJyYXkpKWkrZS5sZW5ndGg+bi5sZW5ndGg/KHUuaXNCdWZmZXIoZSl8fChlPXUuZnJvbShlKSksZS5jb3B5KG4saSkpOlVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKG4sZSxpKTtlbHNle2lmKCF1LmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpO2UuY29weShuLGkpfWkrPWUubGVuZ3RofXJldHVybiBufSx1LmJ5dGVMZW5ndGg9eSx1LnByb3RvdHlwZS5faXNCdWZmZXI9ITAsdS5wcm90b3R5cGUuc3dhcDE2PWZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmxlbmd0aDtpZih0JTIhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0c1wiKTtmb3IobGV0IGU9MDtlPHQ7ZSs9MiliKHRoaXMsZSxlKzEpO3JldHVybiB0aGlzfSx1LnByb3RvdHlwZS5zd2FwMzI9ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMubGVuZ3RoO2lmKHQlNCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzXCIpO2ZvcihsZXQgZT0wO2U8dDtlKz00KWIodGhpcyxlLGUrMyksYih0aGlzLGUrMSxlKzIpO3JldHVybiB0aGlzfSx1LnByb3RvdHlwZS5zd2FwNjQ9ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMubGVuZ3RoO2lmKHQlOCE9MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkJ1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzXCIpO2ZvcihsZXQgZT0wO2U8dDtlKz04KWIodGhpcyxlLGUrNyksYih0aGlzLGUrMSxlKzYpLGIodGhpcyxlKzIsZSs1KSxiKHRoaXMsZSszLGUrNCk7cmV0dXJuIHRoaXN9LHUucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmxlbmd0aDtyZXR1cm4gMD09PXQ/XCJcIjowPT09YXJndW1lbnRzLmxlbmd0aD9JKHRoaXMsMCx0KTpnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmc9dS5wcm90b3R5cGUudG9TdHJpbmcsdS5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe2lmKCF1LmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyXCIpO3JldHVybiB0aGlzPT09dHx8MD09PXUuY29tcGFyZSh0aGlzLHQpfSx1LnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7bGV0IHQ9XCJcIjtjb25zdCByPWUuSU5TUEVDVF9NQVhfQllURVM7cmV0dXJuIHQ9dGhpcy50b1N0cmluZyhcImhleFwiLDAscikucmVwbGFjZSgvKC57Mn0pL2csXCIkMSBcIikudHJpbSgpLHRoaXMubGVuZ3RoPnImJih0Kz1cIiAuLi4gXCIpLFwiPEJ1ZmZlciBcIit0K1wiPlwifSxvJiYodS5wcm90b3R5cGVbb109dS5wcm90b3R5cGUuaW5zcGVjdCksdS5wcm90b3R5cGUuY29tcGFyZT1mdW5jdGlvbih0LGUscixuLGkpe2lmKEsodCxVaW50OEFycmF5KSYmKHQ9dS5mcm9tKHQsdC5vZmZzZXQsdC5ieXRlTGVuZ3RoKSksIXUuaXNCdWZmZXIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwidGFyZ2V0XCIgYXJndW1lbnQgbXVzdCBiZSBvbmUgb2YgdHlwZSBCdWZmZXIgb3IgVWludDhBcnJheS4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTtpZih2b2lkIDA9PT1lJiYoZT0wKSx2b2lkIDA9PT1yJiYocj10P3QubGVuZ3RoOjApLHZvaWQgMD09PW4mJihuPTApLHZvaWQgMD09PWkmJihpPXRoaXMubGVuZ3RoKSxlPDB8fHI+dC5sZW5ndGh8fG48MHx8aT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIm91dCBvZiByYW5nZSBpbmRleFwiKTtpZihuPj1pJiZlPj1yKXJldHVybiAwO2lmKG4+PWkpcmV0dXJuLTE7aWYoZT49cilyZXR1cm4gMTtpZih0aGlzPT09dClyZXR1cm4gMDtsZXQgbz0oaT4+Pj0wKS0obj4+Pj0wKSxzPShyPj4+PTApLShlPj4+PTApO2NvbnN0IGE9TWF0aC5taW4obyxzKSxsPXRoaXMuc2xpY2UobixpKSxjPXQuc2xpY2UoZSxyKTtmb3IobGV0IHQ9MDt0PGE7Kyt0KWlmKGxbdF0hPT1jW3RdKXtvPWxbdF0scz1jW3RdO2JyZWFrfXJldHVybiBvPHM/LTE6czxvPzE6MH0sdS5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24odCxlLHIpe3JldHVybi0xIT09dGhpcy5pbmRleE9mKHQsZSxyKX0sdS5wcm90b3R5cGUuaW5kZXhPZj1mdW5jdGlvbih0LGUscil7cmV0dXJuIG0odGhpcyx0LGUsciwhMCl9LHUucHJvdG90eXBlLmxhc3RJbmRleE9mPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbSh0aGlzLHQsZSxyLCExKX0sdS5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCxlLHIsbil7aWYodm9pZCAwPT09ZSluPVwidXRmOFwiLHI9dGhpcy5sZW5ndGgsZT0wO2Vsc2UgaWYodm9pZCAwPT09ciYmXCJzdHJpbmdcIj09dHlwZW9mIGUpbj1lLHI9dGhpcy5sZW5ndGgsZT0wO2Vsc2V7aWYoIWlzRmluaXRlKGUpKXRocm93IG5ldyBFcnJvcihcIkJ1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkXCIpO2U+Pj49MCxpc0Zpbml0ZShyKT8ocj4+Pj0wLHZvaWQgMD09PW4mJihuPVwidXRmOFwiKSk6KG49cixyPXZvaWQgMCl9Y29uc3QgaT10aGlzLmxlbmd0aC1lO2lmKCh2b2lkIDA9PT1yfHxyPmkpJiYocj1pKSx0Lmxlbmd0aD4wJiYocjwwfHxlPDApfHxlPnRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKFwiQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHNcIik7bnx8KG49XCJ1dGY4XCIpO2xldCBvPSExO2Zvcig7Oylzd2l0Y2gobil7Y2FzZVwiaGV4XCI6cmV0dXJuIF8odGhpcyx0LGUscik7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cmV0dXJuIEUodGhpcyx0LGUscik7Y2FzZVwiYXNjaWlcIjpjYXNlXCJsYXRpbjFcIjpjYXNlXCJiaW5hcnlcIjpyZXR1cm4gdih0aGlzLHQsZSxyKTtjYXNlXCJiYXNlNjRcIjpyZXR1cm4gUyh0aGlzLHQsZSxyKTtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4gQSh0aGlzLHQsZSxyKTtkZWZhdWx0OmlmKG8pdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK24pO249KFwiXCIrbikudG9Mb3dlckNhc2UoKSxvPSEwfX0sdS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6XCJCdWZmZXJcIixkYXRhOkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2Fycnx8dGhpcywwKX19O2NvbnN0IEI9NDA5NjtmdW5jdGlvbiBPKHQsZSxyKXtsZXQgbj1cIlwiO3I9TWF0aC5taW4odC5sZW5ndGgscik7Zm9yKGxldCBpPWU7aTxyOysraSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDEyNyZ0W2ldKTtyZXR1cm4gbn1mdW5jdGlvbiB4KHQsZSxyKXtsZXQgbj1cIlwiO3I9TWF0aC5taW4odC5sZW5ndGgscik7Zm9yKGxldCBpPWU7aTxyOysraSluKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbaV0pO3JldHVybiBufWZ1bmN0aW9uIFIodCxlLHIpe2NvbnN0IG49dC5sZW5ndGg7KCFlfHxlPDApJiYoZT0wKSwoIXJ8fHI8MHx8cj5uKSYmKHI9bik7bGV0IGk9XCJcIjtmb3IobGV0IG49ZTtuPHI7KytuKWkrPUpbdFtuXV07cmV0dXJuIGl9ZnVuY3Rpb24gTih0LGUscil7Y29uc3Qgbj10LnNsaWNlKGUscik7bGV0IGk9XCJcIjtmb3IobGV0IHQ9MDt0PG4ubGVuZ3RoLTE7dCs9MilpKz1TdHJpbmcuZnJvbUNoYXJDb2RlKG5bdF0rMjU2Km5bdCsxXSk7cmV0dXJuIGl9ZnVuY3Rpb24gTCh0LGUscil7aWYodCUxIT0wfHx0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJvZmZzZXQgaXMgbm90IHVpbnRcIik7aWYodCtlPnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoXCIpfWZ1bmN0aW9uIFAodCxlLHIsbixpLG8pe2lmKCF1LmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpO2lmKGU+aXx8ZTxvKXRocm93IG5ldyBSYW5nZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj50Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKX1mdW5jdGlvbiBNKHQsZSxyLG4saSl7RyhlLG4saSx0LHIsNyk7bGV0IG89TnVtYmVyKGUmQmlnSW50KDQyOTQ5NjcyOTUpKTt0W3IrK109byxvPj49OCx0W3IrK109byxvPj49OCx0W3IrK109byxvPj49OCx0W3IrK109bztsZXQgcz1OdW1iZXIoZT4+QmlnSW50KDMyKSZCaWdJbnQoNDI5NDk2NzI5NSkpO3JldHVybiB0W3IrK109cyxzPj49OCx0W3IrK109cyxzPj49OCx0W3IrK109cyxzPj49OCx0W3IrK109cyxyfWZ1bmN0aW9uIFUodCxlLHIsbixpKXtHKGUsbixpLHQsciw3KTtsZXQgbz1OdW1iZXIoZSZCaWdJbnQoNDI5NDk2NzI5NSkpO3Rbcis3XT1vLG8+Pj04LHRbcis2XT1vLG8+Pj04LHRbcis1XT1vLG8+Pj04LHRbcis0XT1vO2xldCBzPU51bWJlcihlPj5CaWdJbnQoMzIpJkJpZ0ludCg0Mjk0OTY3Mjk1KSk7cmV0dXJuIHRbciszXT1zLHM+Pj04LHRbcisyXT1zLHM+Pj04LHRbcisxXT1zLHM+Pj04LHRbcl09cyxyKzh9ZnVuY3Rpb24gaih0LGUscixuLGksbyl7aWYocituPnQubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKFwiSW5kZXggb3V0IG9mIHJhbmdlXCIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKX1mdW5jdGlvbiBrKHQsZSxyLG4sbyl7cmV0dXJuIGU9K2Uscj4+Pj0wLG98fGoodCwwLHIsNCksaS53cml0ZSh0LGUscixuLDIzLDQpLHIrNH1mdW5jdGlvbiAkKHQsZSxyLG4sbyl7cmV0dXJuIGU9K2Uscj4+Pj0wLG98fGoodCwwLHIsOCksaS53cml0ZSh0LGUscixuLDUyLDgpLHIrOH11LnByb3RvdHlwZS5zbGljZT1mdW5jdGlvbih0LGUpe2NvbnN0IHI9dGhpcy5sZW5ndGg7KHQ9fn50KTwwPyh0Kz1yKTwwJiYodD0wKTp0PnImJih0PXIpLChlPXZvaWQgMD09PWU/cjp+fmUpPDA/KGUrPXIpPDAmJihlPTApOmU+ciYmKGU9ciksZTx0JiYoZT10KTtjb25zdCBuPXRoaXMuc3ViYXJyYXkodCxlKTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sdS5wcm90b3R5cGUpLG59LHUucHJvdG90eXBlLnJlYWRVaW50TEU9dS5wcm90b3R5cGUucmVhZFVJbnRMRT1mdW5jdGlvbih0LGUscil7dD4+Pj0wLGU+Pj49MCxyfHxMKHQsZSx0aGlzLmxlbmd0aCk7bGV0IG49dGhpc1t0XSxpPTEsbz0wO2Zvcig7KytvPGUmJihpKj0yNTYpOyluKz10aGlzW3Qrb10qaTtyZXR1cm4gbn0sdS5wcm90b3R5cGUucmVhZFVpbnRCRT11LnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKHQsZSxyKXt0Pj4+PTAsZT4+Pj0wLHJ8fEwodCxlLHRoaXMubGVuZ3RoKTtsZXQgbj10aGlzW3QrLS1lXSxpPTE7Zm9yKDtlPjAmJihpKj0yNTYpOyluKz10aGlzW3QrLS1lXSppO3JldHVybiBufSx1LnByb3RvdHlwZS5yZWFkVWludDg9dS5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsMSx0aGlzLmxlbmd0aCksdGhpc1t0XX0sdS5wcm90b3R5cGUucmVhZFVpbnQxNkxFPXUucHJvdG90eXBlLnJlYWRVSW50MTZMRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8TCh0LDIsdGhpcy5sZW5ndGgpLHRoaXNbdF18dGhpc1t0KzFdPDw4fSx1LnByb3RvdHlwZS5yZWFkVWludDE2QkU9dS5wcm90b3R5cGUucmVhZFVJbnQxNkJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsMix0aGlzLmxlbmd0aCksdGhpc1t0XTw8OHx0aGlzW3QrMV19LHUucHJvdG90eXBlLnJlYWRVaW50MzJMRT11LnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCw0LHRoaXMubGVuZ3RoKSwodGhpc1t0XXx0aGlzW3QrMV08PDh8dGhpc1t0KzJdPDwxNikrMTY3NzcyMTYqdGhpc1t0KzNdfSx1LnByb3RvdHlwZS5yZWFkVWludDMyQkU9dS5wcm90b3R5cGUucmVhZFVJbnQzMkJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1t0XSsodGhpc1t0KzFdPDwxNnx0aGlzW3QrMl08PDh8dGhpc1t0KzNdKX0sdS5wcm90b3R5cGUucmVhZEJpZ1VJbnQ2NExFPVooKGZ1bmN0aW9uKHQpe1codD4+Pj0wLFwib2Zmc2V0XCIpO2NvbnN0IGU9dGhpc1t0XSxyPXRoaXNbdCs3XTt2b2lkIDAhPT1lJiZ2b2lkIDAhPT1yfHx6KHQsdGhpcy5sZW5ndGgtOCk7Y29uc3Qgbj1lKzI1Nip0aGlzWysrdF0rNjU1MzYqdGhpc1srK3RdK3RoaXNbKyt0XSoyKioyNCxpPXRoaXNbKyt0XSsyNTYqdGhpc1srK3RdKzY1NTM2KnRoaXNbKyt0XStyKjIqKjI0O3JldHVybiBCaWdJbnQobikrKEJpZ0ludChpKTw8QmlnSW50KDMyKSl9KSksdS5wcm90b3R5cGUucmVhZEJpZ1VJbnQ2NEJFPVooKGZ1bmN0aW9uKHQpe1codD4+Pj0wLFwib2Zmc2V0XCIpO2NvbnN0IGU9dGhpc1t0XSxyPXRoaXNbdCs3XTt2b2lkIDAhPT1lJiZ2b2lkIDAhPT1yfHx6KHQsdGhpcy5sZW5ndGgtOCk7Y29uc3Qgbj1lKjIqKjI0KzY1NTM2KnRoaXNbKyt0XSsyNTYqdGhpc1srK3RdK3RoaXNbKyt0XSxpPXRoaXNbKyt0XSoyKioyNCs2NTUzNip0aGlzWysrdF0rMjU2KnRoaXNbKyt0XStyO3JldHVybihCaWdJbnQobik8PEJpZ0ludCgzMikpK0JpZ0ludChpKX0pKSx1LnByb3RvdHlwZS5yZWFkSW50TEU9ZnVuY3Rpb24odCxlLHIpe3Q+Pj49MCxlPj4+PTAscnx8TCh0LGUsdGhpcy5sZW5ndGgpO2xldCBuPXRoaXNbdF0saT0xLG89MDtmb3IoOysrbzxlJiYoaSo9MjU2KTspbis9dGhpc1t0K29dKmk7cmV0dXJuIGkqPTEyOCxuPj1pJiYobi09TWF0aC5wb3coMiw4KmUpKSxufSx1LnByb3RvdHlwZS5yZWFkSW50QkU9ZnVuY3Rpb24odCxlLHIpe3Q+Pj49MCxlPj4+PTAscnx8TCh0LGUsdGhpcy5sZW5ndGgpO2xldCBuPWUsaT0xLG89dGhpc1t0Ky0tbl07Zm9yKDtuPjAmJihpKj0yNTYpOylvKz10aGlzW3QrLS1uXSppO3JldHVybiBpKj0xMjgsbz49aSYmKG8tPU1hdGgucG93KDIsOCplKSksb30sdS5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCwxLHRoaXMubGVuZ3RoKSwxMjgmdGhpc1t0XT8tMSooMjU1LXRoaXNbdF0rMSk6dGhpc1t0XX0sdS5wcm90b3R5cGUucmVhZEludDE2TEU9ZnVuY3Rpb24odCxlKXt0Pj4+PTAsZXx8TCh0LDIsdGhpcy5sZW5ndGgpO2NvbnN0IHI9dGhpc1t0XXx0aGlzW3QrMV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LHUucHJvdG90eXBlLnJlYWRJbnQxNkJFPWZ1bmN0aW9uKHQsZSl7dD4+Pj0wLGV8fEwodCwyLHRoaXMubGVuZ3RoKTtjb25zdCByPXRoaXNbdCsxXXx0aGlzW3RdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSx1LnByb3RvdHlwZS5yZWFkSW50MzJMRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8TCh0LDQsdGhpcy5sZW5ndGgpLHRoaXNbdF18dGhpc1t0KzFdPDw4fHRoaXNbdCsyXTw8MTZ8dGhpc1t0KzNdPDwyNH0sdS5wcm90b3R5cGUucmVhZEludDMyQkU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCw0LHRoaXMubGVuZ3RoKSx0aGlzW3RdPDwyNHx0aGlzW3QrMV08PDE2fHRoaXNbdCsyXTw8OHx0aGlzW3QrM119LHUucHJvdG90eXBlLnJlYWRCaWdJbnQ2NExFPVooKGZ1bmN0aW9uKHQpe1codD4+Pj0wLFwib2Zmc2V0XCIpO2NvbnN0IGU9dGhpc1t0XSxyPXRoaXNbdCs3XTt2b2lkIDAhPT1lJiZ2b2lkIDAhPT1yfHx6KHQsdGhpcy5sZW5ndGgtOCk7Y29uc3Qgbj10aGlzW3QrNF0rMjU2KnRoaXNbdCs1XSs2NTUzNip0aGlzW3QrNl0rKHI8PDI0KTtyZXR1cm4oQmlnSW50KG4pPDxCaWdJbnQoMzIpKStCaWdJbnQoZSsyNTYqdGhpc1srK3RdKzY1NTM2KnRoaXNbKyt0XSt0aGlzWysrdF0qMioqMjQpfSkpLHUucHJvdG90eXBlLnJlYWRCaWdJbnQ2NEJFPVooKGZ1bmN0aW9uKHQpe1codD4+Pj0wLFwib2Zmc2V0XCIpO2NvbnN0IGU9dGhpc1t0XSxyPXRoaXNbdCs3XTt2b2lkIDAhPT1lJiZ2b2lkIDAhPT1yfHx6KHQsdGhpcy5sZW5ndGgtOCk7Y29uc3Qgbj0oZTw8MjQpKzY1NTM2KnRoaXNbKyt0XSsyNTYqdGhpc1srK3RdK3RoaXNbKyt0XTtyZXR1cm4oQmlnSW50KG4pPDxCaWdJbnQoMzIpKStCaWdJbnQodGhpc1srK3RdKjIqKjI0KzY1NTM2KnRoaXNbKyt0XSsyNTYqdGhpc1srK3RdK3IpfSkpLHUucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsNCx0aGlzLmxlbmd0aCksaS5yZWFkKHRoaXMsdCwhMCwyMyw0KX0sdS5wcm90b3R5cGUucmVhZEZsb2F0QkU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCw0LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyx0LCExLDIzLDQpfSx1LnByb3RvdHlwZS5yZWFkRG91YmxlTEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCw4LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyx0LCEwLDUyLDgpfSx1LnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCw4LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyx0LCExLDUyLDgpfSx1LnByb3RvdHlwZS53cml0ZVVpbnRMRT11LnByb3RvdHlwZS53cml0ZVVJbnRMRT1mdW5jdGlvbih0LGUscixuKXt0PSt0LGU+Pj49MCxyPj4+PTAsbnx8UCh0aGlzLHQsZSxyLE1hdGgucG93KDIsOCpyKS0xLDApO2xldCBpPTEsbz0wO2Zvcih0aGlzW2VdPTI1NSZ0OysrbzxyJiYoaSo9MjU2KTspdGhpc1tlK29dPXQvaSYyNTU7cmV0dXJuIGUrcn0sdS5wcm90b3R5cGUud3JpdGVVaW50QkU9dS5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24odCxlLHIsbil7dD0rdCxlPj4+PTAscj4+Pj0wLG58fFAodGhpcyx0LGUscixNYXRoLnBvdygyLDgqciktMSwwKTtsZXQgaT1yLTEsbz0xO2Zvcih0aGlzW2UraV09MjU1JnQ7LS1pPj0wJiYobyo9MjU2KTspdGhpc1tlK2ldPXQvbyYyNTU7cmV0dXJuIGUrcn0sdS5wcm90b3R5cGUud3JpdGVVaW50OD11LnByb3RvdHlwZS53cml0ZVVJbnQ4PWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSwxLDI1NSwwKSx0aGlzW2VdPTI1NSZ0LGUrMX0sdS5wcm90b3R5cGUud3JpdGVVaW50MTZMRT11LnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSwyLDY1NTM1LDApLHRoaXNbZV09MjU1JnQsdGhpc1tlKzFdPXQ+Pj44LGUrMn0sdS5wcm90b3R5cGUud3JpdGVVaW50MTZCRT11LnByb3RvdHlwZS53cml0ZVVJbnQxNkJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSwyLDY1NTM1LDApLHRoaXNbZV09dD4+PjgsdGhpc1tlKzFdPTI1NSZ0LGUrMn0sdS5wcm90b3R5cGUud3JpdGVVaW50MzJMRT11LnByb3RvdHlwZS53cml0ZVVJbnQzMkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSw0LDQyOTQ5NjcyOTUsMCksdGhpc1tlKzNdPXQ+Pj4yNCx0aGlzW2UrMl09dD4+PjE2LHRoaXNbZSsxXT10Pj4+OCx0aGlzW2VdPTI1NSZ0LGUrNH0sdS5wcm90b3R5cGUud3JpdGVVaW50MzJCRT11LnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSw0LDQyOTQ5NjcyOTUsMCksdGhpc1tlXT10Pj4+MjQsdGhpc1tlKzFdPXQ+Pj4xNix0aGlzW2UrMl09dD4+PjgsdGhpc1tlKzNdPTI1NSZ0LGUrNH0sdS5wcm90b3R5cGUud3JpdGVCaWdVSW50NjRMRT1aKChmdW5jdGlvbih0LGU9MCl7cmV0dXJuIE0odGhpcyx0LGUsQmlnSW50KDApLEJpZ0ludChcIjB4ZmZmZmZmZmZmZmZmZmZmZlwiKSl9KSksdS5wcm90b3R5cGUud3JpdGVCaWdVSW50NjRCRT1aKChmdW5jdGlvbih0LGU9MCl7cmV0dXJuIFUodGhpcyx0LGUsQmlnSW50KDApLEJpZ0ludChcIjB4ZmZmZmZmZmZmZmZmZmZmZlwiKSl9KSksdS5wcm90b3R5cGUud3JpdGVJbnRMRT1mdW5jdGlvbih0LGUscixuKXtpZih0PSt0LGU+Pj49MCwhbil7Y29uc3Qgbj1NYXRoLnBvdygyLDgqci0xKTtQKHRoaXMsdCxlLHIsbi0xLC1uKX1sZXQgaT0wLG89MSxzPTA7Zm9yKHRoaXNbZV09MjU1JnQ7KytpPHImJihvKj0yNTYpOyl0PDAmJjA9PT1zJiYwIT09dGhpc1tlK2ktMV0mJihzPTEpLHRoaXNbZStpXT0odC9vPj4wKS1zJjI1NTtyZXR1cm4gZStyfSx1LnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHQ9K3QsZT4+Pj0wLCFuKXtjb25zdCBuPU1hdGgucG93KDIsOCpyLTEpO1AodGhpcyx0LGUscixuLTEsLW4pfWxldCBpPXItMSxvPTEscz0wO2Zvcih0aGlzW2UraV09MjU1JnQ7LS1pPj0wJiYobyo9MjU2KTspdDwwJiYwPT09cyYmMCE9PXRoaXNbZStpKzFdJiYocz0xKSx0aGlzW2UraV09KHQvbz4+MCktcyYyNTU7cmV0dXJuIGUrcn0sdS5wcm90b3R5cGUud3JpdGVJbnQ4PWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSwxLDEyNywtMTI4KSx0PDAmJih0PTI1NSt0KzEpLHRoaXNbZV09MjU1JnQsZSsxfSx1LnByb3RvdHlwZS53cml0ZUludDE2TEU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxQKHRoaXMsdCxlLDIsMzI3NjcsLTMyNzY4KSx0aGlzW2VdPTI1NSZ0LHRoaXNbZSsxXT10Pj4+OCxlKzJ9LHUucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsMiwzMjc2NywtMzI3NjgpLHRoaXNbZV09dD4+PjgsdGhpc1tlKzFdPTI1NSZ0LGUrMn0sdS5wcm90b3R5cGUud3JpdGVJbnQzMkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSw0LDIxNDc0ODM2NDcsLTIxNDc0ODM2NDgpLHRoaXNbZV09MjU1JnQsdGhpc1tlKzFdPXQ+Pj44LHRoaXNbZSsyXT10Pj4+MTYsdGhpc1tlKzNdPXQ+Pj4yNCxlKzR9LHUucHJvdG90eXBlLndyaXRlSW50MzJCRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0PDAmJih0PTQyOTQ5NjcyOTUrdCsxKSx0aGlzW2VdPXQ+Pj4yNCx0aGlzW2UrMV09dD4+PjE2LHRoaXNbZSsyXT10Pj4+OCx0aGlzW2UrM109MjU1JnQsZSs0fSx1LnByb3RvdHlwZS53cml0ZUJpZ0ludDY0TEU9WigoZnVuY3Rpb24odCxlPTApe3JldHVybiBNKHRoaXMsdCxlLC1CaWdJbnQoXCIweDgwMDAwMDAwMDAwMDAwMDBcIiksQmlnSW50KFwiMHg3ZmZmZmZmZmZmZmZmZmZmXCIpKX0pKSx1LnByb3RvdHlwZS53cml0ZUJpZ0ludDY0QkU9WigoZnVuY3Rpb24odCxlPTApe3JldHVybiBVKHRoaXMsdCxlLC1CaWdJbnQoXCIweDgwMDAwMDAwMDAwMDAwMDBcIiksQmlnSW50KFwiMHg3ZmZmZmZmZmZmZmZmZmZmXCIpKX0pKSx1LnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBrKHRoaXMsdCxlLCEwLHIpfSx1LnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBrKHRoaXMsdCxlLCExLHIpfSx1LnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gJCh0aGlzLHQsZSwhMCxyKX0sdS5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbih0LGUscil7cmV0dXJuICQodGhpcyx0LGUsITEscil9LHUucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24odCxlLHIsbil7aWYoIXUuaXNCdWZmZXIodCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcImFyZ3VtZW50IHNob3VsZCBiZSBhIEJ1ZmZlclwiKTtpZihyfHwocj0wKSxufHwwPT09bnx8KG49dGhpcy5sZW5ndGgpLGU+PXQubGVuZ3RoJiYoZT10Lmxlbmd0aCksZXx8KGU9MCksbj4wJiZuPHImJihuPXIpLG49PT1yKXJldHVybiAwO2lmKDA9PT10Lmxlbmd0aHx8MD09PXRoaXMubGVuZ3RoKXJldHVybiAwO2lmKGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHNcIik7aWYocjwwfHxyPj10aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKTtpZihuPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kc1wiKTtuPnRoaXMubGVuZ3RoJiYobj10aGlzLmxlbmd0aCksdC5sZW5ndGgtZTxuLXImJihuPXQubGVuZ3RoLWUrcik7Y29uc3QgaT1uLXI7cmV0dXJuIHRoaXM9PT10JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluP3RoaXMuY29weVdpdGhpbihlLHIsbik6VWludDhBcnJheS5wcm90b3R5cGUuc2V0LmNhbGwodCx0aGlzLnN1YmFycmF5KHIsbiksZSksaX0sdS5wcm90b3R5cGUuZmlsbD1mdW5jdGlvbih0LGUscixuKXtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGU/KG49ZSxlPTAscj10aGlzLmxlbmd0aCk6XCJzdHJpbmdcIj09dHlwZW9mIHImJihuPXIscj10aGlzLmxlbmd0aCksdm9pZCAwIT09biYmXCJzdHJpbmdcIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcihcImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmdcIik7aWYoXCJzdHJpbmdcIj09dHlwZW9mIG4mJiF1LmlzRW5jb2RpbmcobikpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK24pO2lmKDE9PT10Lmxlbmd0aCl7Y29uc3QgZT10LmNoYXJDb2RlQXQoMCk7KFwidXRmOFwiPT09biYmZTwxMjh8fFwibGF0aW4xXCI9PT1uKSYmKHQ9ZSl9fWVsc2VcIm51bWJlclwiPT10eXBlb2YgdD90Jj0yNTU6XCJib29sZWFuXCI9PXR5cGVvZiB0JiYodD1OdW1iZXIodCkpO2lmKGU8MHx8dGhpcy5sZW5ndGg8ZXx8dGhpcy5sZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIk91dCBvZiByYW5nZSBpbmRleFwiKTtpZihyPD1lKXJldHVybiB0aGlzO2xldCBpO2lmKGU+Pj49MCxyPXZvaWQgMD09PXI/dGhpcy5sZW5ndGg6cj4+PjAsdHx8KHQ9MCksXCJudW1iZXJcIj09dHlwZW9mIHQpZm9yKGk9ZTtpPHI7KytpKXRoaXNbaV09dDtlbHNle2NvbnN0IG89dS5pc0J1ZmZlcih0KT90OnUuZnJvbSh0LG4pLHM9by5sZW5ndGg7aWYoMD09PXMpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHZhbHVlIFwiJyt0KydcIiBpcyBpbnZhbGlkIGZvciBhcmd1bWVudCBcInZhbHVlXCInKTtmb3IoaT0wO2k8ci1lOysraSl0aGlzW2krZV09b1tpJXNdfXJldHVybiB0aGlzfTtjb25zdCBGPXt9O2Z1bmN0aW9uIEQodCxlLHIpe0ZbdF09Y2xhc3MgZXh0ZW5kcyBye2NvbnN0cnVjdG9yKCl7c3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxcIm1lc3NhZ2VcIix7dmFsdWU6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksdGhpcy5uYW1lPWAke3RoaXMubmFtZX0gWyR7dH1dYCx0aGlzLnN0YWNrLGRlbGV0ZSB0aGlzLm5hbWV9Z2V0IGNvZGUoKXtyZXR1cm4gdH1zZXQgY29kZSh0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxcImNvZGVcIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6dCx3cml0YWJsZTohMH0pfXRvU3RyaW5nKCl7cmV0dXJuYCR7dGhpcy5uYW1lfSBbJHt0fV06ICR7dGhpcy5tZXNzYWdlfWB9fX1mdW5jdGlvbiBDKHQpe2xldCBlPVwiXCIscj10Lmxlbmd0aDtjb25zdCBuPVwiLVwiPT09dFswXT8xOjA7Zm9yKDtyPj1uKzQ7ci09MyllPWBfJHt0LnNsaWNlKHItMyxyKX0ke2V9YDtyZXR1cm5gJHt0LnNsaWNlKDAscil9JHtlfWB9ZnVuY3Rpb24gRyh0LGUscixuLGksbyl7aWYodD5yfHx0PGUpe2NvbnN0IG49XCJiaWdpbnRcIj09dHlwZW9mIGU/XCJuXCI6XCJcIjtsZXQgaTt0aHJvdyBpPW8+Mz8wPT09ZXx8ZT09PUJpZ0ludCgwKT9gPj0gMCR7bn0gYW5kIDwgMiR7bn0gKiogJHs4KihvKzEpfSR7bn1gOmA+PSAtKDIke259ICoqICR7OCoobysxKS0xfSR7bn0pIGFuZCA8IDIgKiogJHs4KihvKzEpLTF9JHtufWA6YD49ICR7ZX0ke259IGFuZCA8PSAke3J9JHtufWAsbmV3IEYuRVJSX09VVF9PRl9SQU5HRShcInZhbHVlXCIsaSx0KX0hZnVuY3Rpb24odCxlLHIpe1coZSxcIm9mZnNldFwiKSx2b2lkIDAhPT10W2VdJiZ2b2lkIDAhPT10W2Urcl18fHooZSx0Lmxlbmd0aC0ocisxKSl9KG4saSxvKX1mdW5jdGlvbiBXKHQsZSl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEYuRVJSX0lOVkFMSURfQVJHX1RZUEUoZSxcIm51bWJlclwiLHQpfWZ1bmN0aW9uIHoodCxlLHIpe2lmKE1hdGguZmxvb3IodCkhPT10KXRocm93IFcodCxyKSxuZXcgRi5FUlJfT1VUX09GX1JBTkdFKHJ8fFwib2Zmc2V0XCIsXCJhbiBpbnRlZ2VyXCIsdCk7aWYoZTwwKXRocm93IG5ldyBGLkVSUl9CVUZGRVJfT1VUX09GX0JPVU5EUzt0aHJvdyBuZXcgRi5FUlJfT1VUX09GX1JBTkdFKHJ8fFwib2Zmc2V0XCIsYD49ICR7cj8xOjB9IGFuZCA8PSAke2V9YCx0KX1EKFwiRVJSX0JVRkZFUl9PVVRfT0ZfQk9VTkRTXCIsKGZ1bmN0aW9uKHQpe3JldHVybiB0P2Ake3R9IGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kc2A6XCJBdHRlbXB0IHRvIGFjY2VzcyBtZW1vcnkgb3V0c2lkZSBidWZmZXIgYm91bmRzXCJ9KSxSYW5nZUVycm9yKSxEKFwiRVJSX0lOVkFMSURfQVJHX1RZUEVcIiwoZnVuY3Rpb24odCxlKXtyZXR1cm5gVGhlIFwiJHt0fVwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2YgZX1gfSksVHlwZUVycm9yKSxEKFwiRVJSX09VVF9PRl9SQU5HRVwiLChmdW5jdGlvbih0LGUscil7bGV0IG49YFRoZSB2YWx1ZSBvZiBcIiR7dH1cIiBpcyBvdXQgb2YgcmFuZ2UuYCxpPXI7cmV0dXJuIE51bWJlci5pc0ludGVnZXIocikmJk1hdGguYWJzKHIpPjIqKjMyP2k9QyhTdHJpbmcocikpOlwiYmlnaW50XCI9PXR5cGVvZiByJiYoaT1TdHJpbmcociksKHI+QmlnSW50KDIpKipCaWdJbnQoMzIpfHxyPC0oQmlnSW50KDIpKipCaWdJbnQoMzIpKSkmJihpPUMoaSkpLGkrPVwiblwiKSxuKz1gIEl0IG11c3QgYmUgJHtlfS4gUmVjZWl2ZWQgJHtpfWAsbn0pLFJhbmdlRXJyb3IpO2NvbnN0IEg9L1teKy8wLTlBLVphLXotX10vZztmdW5jdGlvbiBZKHQsZSl7bGV0IHI7ZT1lfHwxLzA7Y29uc3Qgbj10Lmxlbmd0aDtsZXQgaT1udWxsO2NvbnN0IG89W107Zm9yKGxldCBzPTA7czxuOysrcyl7aWYocj10LmNoYXJDb2RlQXQocykscj41NTI5NSYmcjw1NzM0NCl7aWYoIWkpe2lmKHI+NTYzMTkpeyhlLT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pZihzKzE9PT1uKXsoZS09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aT1yO2NvbnRpbnVlfWlmKHI8NTYzMjApeyhlLT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KSxpPXI7Y29udGludWV9cj02NTUzNisoaS01NTI5Njw8MTB8ci01NjMyMCl9ZWxzZSBpJiYoZS09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7aWYoaT1udWxsLHI8MTI4KXtpZigoZS09MSk8MClicmVhaztvLnB1c2gocil9ZWxzZSBpZihyPDIwNDgpe2lmKChlLT0yKTwwKWJyZWFrO28ucHVzaChyPj42fDE5Miw2MyZyfDEyOCl9ZWxzZSBpZihyPDY1NTM2KXtpZigoZS09Myk8MClicmVhaztvLnB1c2gocj4+MTJ8MjI0LHI+PjYmNjN8MTI4LDYzJnJ8MTI4KX1lbHNle2lmKCEocjwxMTE0MTEyKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNvZGUgcG9pbnRcIik7aWYoKGUtPTQpPDApYnJlYWs7by5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wxMjgsNjMmcnwxMjgpfX1yZXR1cm4gb31mdW5jdGlvbiBxKHQpe3JldHVybiBuLnRvQnl0ZUFycmF5KGZ1bmN0aW9uKHQpe2lmKCh0PSh0PXQuc3BsaXQoXCI9XCIpWzBdKS50cmltKCkucmVwbGFjZShILFwiXCIpKS5sZW5ndGg8MilyZXR1cm5cIlwiO2Zvcig7dC5sZW5ndGglNCE9MDspdCs9XCI9XCI7cmV0dXJuIHR9KHQpKX1mdW5jdGlvbiBWKHQsZSxyLG4pe2xldCBpO2ZvcihpPTA7aTxuJiYhKGkrcj49ZS5sZW5ndGh8fGk+PXQubGVuZ3RoKTsrK2kpZVtpK3JdPXRbaV07cmV0dXJuIGl9ZnVuY3Rpb24gSyh0LGUpe3JldHVybiB0IGluc3RhbmNlb2YgZXx8bnVsbCE9dCYmbnVsbCE9dC5jb25zdHJ1Y3RvciYmbnVsbCE9dC5jb25zdHJ1Y3Rvci5uYW1lJiZ0LmNvbnN0cnVjdG9yLm5hbWU9PT1lLm5hbWV9ZnVuY3Rpb24gWCh0KXtyZXR1cm4gdCE9dH1jb25zdCBKPWZ1bmN0aW9uKCl7Y29uc3QgdD1cIjAxMjM0NTY3ODlhYmNkZWZcIixlPW5ldyBBcnJheSgyNTYpO2ZvcihsZXQgcj0wO3I8MTY7KytyKXtjb25zdCBuPTE2KnI7Zm9yKGxldCBpPTA7aTwxNjsrK2kpZVtuK2ldPXRbcl0rdFtpXX1yZXR1cm4gZX0oKTtmdW5jdGlvbiBaKHQpe3JldHVyblwidW5kZWZpbmVkXCI9PXR5cGVvZiBCaWdJbnQ/UTp0fWZ1bmN0aW9uIFEoKXt0aHJvdyBuZXcgRXJyb3IoXCJCaWdJbnQgbm90IHN1cHBvcnRlZFwiKX19LDE0MToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7ZS5CaWdOdW1iZXI9cig2NikuQmlnTnVtYmVyLGUuQ29tbWVudGVkPXIoMjApLGUuRGlhZ25vc2U9cig2OTQpLGUuRGVjb2Rlcj1yKDc3NCksZS5FbmNvZGVyPXIoNjY2KSxlLlNpbXBsZT1yKDMyKSxlLlRhZ2dlZD1yKDc4NSksZS5NYXA9cig3MCksZS5VST1lLkNvbW1lbnRlZC5jb21tZW50LGUuZkk9ZS5EZWNvZGVyLmRlY29kZUFsbCxlLmg4PWUuRGVjb2Rlci5kZWNvZGVGaXJzdCxlLmNjPWUuRGVjb2Rlci5kZWNvZGVBbGxTeW5jLGUuJHU9ZS5EZWNvZGVyLmRlY29kZUZpcnN0U3luYyxlLk09ZS5EaWFnbm9zZS5kaWFnbm9zZSxlLmN2PWUuRW5jb2Rlci5lbmNvZGUsZS5OMj1lLkVuY29kZXIuZW5jb2RlQ2Fub25pY2FsLGUuVEc9ZS5FbmNvZGVyLmVuY29kZU9uZSxlLldSPWUuRW5jb2Rlci5lbmNvZGVBc3luYyxlLkp4PWUuRGVjb2Rlci5kZWNvZGVGaXJzdFN5bmMsZS53dz17ZGVjb2RlOmUuRGVjb2Rlci5kZWNvZGVGaXJzdFN5bmMsZW5jb2RlOmUuRW5jb2Rlci5lbmNvZGUsYnVmZmVyOiEwLG5hbWU6XCJjYm9yXCJ9LGUudmM9ITB9LDIwOih0LGUscik9PntcInVzZSBzdHJpY3RcIjtjb25zdCBuPXIoODMwKSxpPXIoODczKSxvPXIoNzc0KSxzPXIoMjAyKSx7TVQ6YSxOVU1CWVRFUzp1LFNZTVM6bH09cig2Nikse0J1ZmZlcjpjfT1yKDc2NCk7ZnVuY3Rpb24gZih0KXtyZXR1cm4gdD4xP1wic1wiOlwiXCJ9Y2xhc3MgaCBleHRlbmRzIG4uVHJhbnNmb3Jte2NvbnN0cnVjdG9yKHQ9e30pe2NvbnN0e2RlcHRoOmU9MSxtYXhfZGVwdGg6cj0xMCxub19zdW1tYXJ5Om49ITEsdGFnczppPXt9LGJpZ2ludDphLHByZWZlcldlYjp1LGVuY29kaW5nOmwsLi4uY309dDtzdXBlcih7Li4uYyxyZWFkYWJsZU9iamVjdE1vZGU6ITEsd3JpdGFibGVPYmplY3RNb2RlOiExfSksdGhpcy5kZXB0aD1lLHRoaXMubWF4X2RlcHRoPXIsdGhpcy5hbGw9bmV3IHMsaVsyNF18fChpWzI0XT10aGlzLl90YWdfMjQuYmluZCh0aGlzKSksdGhpcy5wYXJzZXI9bmV3IG8oe3RhZ3M6aSxtYXhfZGVwdGg6cixiaWdpbnQ6YSxwcmVmZXJXZWI6dSxlbmNvZGluZzpsfSksdGhpcy5wYXJzZXIub24oXCJ2YWx1ZVwiLHRoaXMuX29uX3ZhbHVlLmJpbmQodGhpcykpLHRoaXMucGFyc2VyLm9uKFwic3RhcnRcIix0aGlzLl9vbl9zdGFydC5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcInN0YXJ0LXN0cmluZ1wiLHRoaXMuX29uX3N0YXJ0X3N0cmluZy5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcInN0b3BcIix0aGlzLl9vbl9zdG9wLmJpbmQodGhpcykpLHRoaXMucGFyc2VyLm9uKFwibW9yZS1ieXRlc1wiLHRoaXMuX29uX21vcmUuYmluZCh0aGlzKSksdGhpcy5wYXJzZXIub24oXCJlcnJvclwiLHRoaXMuX29uX2Vycm9yLmJpbmQodGhpcykpLG58fHRoaXMucGFyc2VyLm9uKFwiZGF0YVwiLHRoaXMuX29uX2RhdGEuYmluZCh0aGlzKSksdGhpcy5wYXJzZXIuYnMub24oXCJyZWFkXCIsdGhpcy5fb25fcmVhZC5iaW5kKHRoaXMpKX1fdGFnXzI0KHQpe2NvbnN0IGU9bmV3IGgoe2RlcHRoOnRoaXMuZGVwdGgrMSxub19zdW1tYXJ5OiEwfSk7ZS5vbihcImRhdGFcIiwodD0+dGhpcy5wdXNoKHQpKSksZS5vbihcImVycm9yXCIsKHQ9PnRoaXMuZW1pdChcImVycm9yXCIsdCkpKSxlLmVuZCh0KX1fdHJhbnNmb3JtKHQsZSxyKXt0aGlzLnBhcnNlci53cml0ZSh0LGUscil9X2ZsdXNoKHQpe3JldHVybiB0aGlzLnBhcnNlci5fZmx1c2godCl9c3RhdGljIGNvbW1lbnQodCxlPXt9LHI9bnVsbCl7aWYobnVsbD09dCl0aHJvdyBuZXcgRXJyb3IoXCJpbnB1dCByZXF1aXJlZFwiKTsoe29wdGlvbnM6ZSxjYjpyfT1mdW5jdGlvbih0LGUpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZVwiZnVuY3Rpb25cIjpyZXR1cm57b3B0aW9uczp7fSxjYjp0fTtjYXNlXCJzdHJpbmdcIjpyZXR1cm57b3B0aW9uczp7ZW5jb2Rpbmc6dH0sY2I6ZX07Y2FzZVwibnVtYmVyXCI6cmV0dXJue29wdGlvbnM6e21heF9kZXB0aDp0fSxjYjplfTtjYXNlXCJvYmplY3RcIjpyZXR1cm57b3B0aW9uczp0fHx7fSxjYjplfTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIG9wdGlvbiB0eXBlXCIpfX0oZSxyKSk7Y29uc3Qgbj1uZXcgcyx7ZW5jb2Rpbmc6bz1cImhleFwiLC4uLmF9PWUsdT1uZXcgaChhKTtsZXQgbD1udWxsO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHI/KHUub24oXCJlbmRcIiwoKCk9PntyKG51bGwsbi50b1N0cmluZyhcInV0ZjhcIikpfSkpLHUub24oXCJlcnJvclwiLHIpKTpsPW5ldyBQcm9taXNlKCgodCxlKT0+e3Uub24oXCJlbmRcIiwoKCk9Pnt0KG4udG9TdHJpbmcoXCJ1dGY4XCIpKX0pKSx1Lm9uKFwiZXJyb3JcIixlKX0pKSx1LnBpcGUobiksaS5ndWVzc0VuY29kaW5nKHQsbykucGlwZSh1KSxsfV9vbl9lcnJvcih0KXt0aGlzLnB1c2goXCJFUlJPUjogXCIpLHRoaXMucHVzaCh0LnRvU3RyaW5nKCkpLHRoaXMucHVzaChcIlxcblwiKX1fb25fcmVhZCh0KXt0aGlzLmFsbC53cml0ZSh0KTtjb25zdCBlPXQudG9TdHJpbmcoXCJoZXhcIik7dGhpcy5wdXNoKG5ldyBBcnJheSh0aGlzLmRlcHRoKzEpLmpvaW4oXCIgIFwiKSksdGhpcy5wdXNoKGUpO2xldCByPTIqKHRoaXMubWF4X2RlcHRoLXRoaXMuZGVwdGgpLWUubGVuZ3RoO3JldHVybiByPDEmJihyPTEpLHRoaXMucHVzaChuZXcgQXJyYXkocisxKS5qb2luKFwiIFwiKSksdGhpcy5wdXNoKFwiLS0gXCIpfV9vbl9tb3JlKHQsZSxyLG4pe2xldCBpPVwiXCI7c3dpdGNoKHRoaXMuZGVwdGgrKyx0KXtjYXNlIGEuUE9TX0lOVDppPVwiUG9zaXRpdmUgbnVtYmVyLFwiO2JyZWFrO2Nhc2UgYS5ORUdfSU5UOmk9XCJOZWdhdGl2ZSBudW1iZXIsXCI7YnJlYWs7Y2FzZSBhLkFSUkFZOmk9XCJBcnJheSwgbGVuZ3RoXCI7YnJlYWs7Y2FzZSBhLk1BUDppPVwiTWFwLCBjb3VudFwiO2JyZWFrO2Nhc2UgYS5CWVRFX1NUUklORzppPVwiQnl0ZXMsIGxlbmd0aFwiO2JyZWFrO2Nhc2UgYS5VVEY4X1NUUklORzppPVwiU3RyaW5nLCBsZW5ndGhcIjticmVhaztjYXNlIGEuU0lNUExFX0ZMT0FUOmk9MT09PWU/XCJTaW1wbGUgdmFsdWUsXCI6XCJGbG9hdCxcIn1yZXR1cm4gdGhpcy5wdXNoKGkrXCIgbmV4dCBcIitlK1wiIGJ5dGVcIitmKGUpK1wiXFxuXCIpfV9vbl9zdGFydF9zdHJpbmcodCxlLHIsbil7bGV0IGk9XCJcIjtzd2l0Y2godGhpcy5kZXB0aCsrLHQpe2Nhc2UgYS5CWVRFX1NUUklORzppPVwiQnl0ZXMsIGxlbmd0aDogXCIrZTticmVhaztjYXNlIGEuVVRGOF9TVFJJTkc6aT1cIlN0cmluZywgbGVuZ3RoOiBcIitlLnRvU3RyaW5nKCl9cmV0dXJuIHRoaXMucHVzaChpK1wiXFxuXCIpfV9vbl9zdGFydCh0LGUscixuKXtzd2l0Y2godGhpcy5kZXB0aCsrLHIpe2Nhc2UgYS5BUlJBWTp0aGlzLnB1c2goYFske259XSwgYCk7YnJlYWs7Y2FzZSBhLk1BUDpuJTI/dGhpcy5wdXNoKGB7VmFsOiR7TWF0aC5mbG9vcihuLzIpfX0sIGApOnRoaXMucHVzaChge0tleToke01hdGguZmxvb3Iobi8yKX19LCBgKX1zd2l0Y2godCl7Y2FzZSBhLlRBRzp0aGlzLnB1c2goYFRhZyAjJHtlfWApLDI0PT09ZSYmdGhpcy5wdXNoKFwiIEVuY29kZWQgQ0JPUiBkYXRhIGl0ZW1cIik7YnJlYWs7Y2FzZSBhLkFSUkFZOmU9PT1sLlNUUkVBTT90aGlzLnB1c2goXCJBcnJheSAoc3RyZWFtaW5nKVwiKTp0aGlzLnB1c2goYEFycmF5LCAke2V9IGl0ZW0ke2YoZSl9YCk7YnJlYWs7Y2FzZSBhLk1BUDplPT09bC5TVFJFQU0/dGhpcy5wdXNoKFwiTWFwIChzdHJlYW1pbmcpXCIpOnRoaXMucHVzaChgTWFwLCAke2V9IHBhaXIke2YoZSl9YCk7YnJlYWs7Y2FzZSBhLkJZVEVfU1RSSU5HOnRoaXMucHVzaChcIkJ5dGVzIChzdHJlYW1pbmcpXCIpO2JyZWFrO2Nhc2UgYS5VVEY4X1NUUklORzp0aGlzLnB1c2goXCJTdHJpbmcgKHN0cmVhbWluZylcIil9cmV0dXJuIHRoaXMucHVzaChcIlxcblwiKX1fb25fc3RvcCh0KXtyZXR1cm4gdGhpcy5kZXB0aC0tfV9vbl92YWx1ZSh0LGUscixuKXtpZih0IT09bC5CUkVBSylzd2l0Y2goZSl7Y2FzZSBhLkFSUkFZOnRoaXMucHVzaChgWyR7cn1dLCBgKTticmVhaztjYXNlIGEuTUFQOnIlMj90aGlzLnB1c2goYHtWYWw6JHtNYXRoLmZsb29yKHIvMil9fSwgYCk6dGhpcy5wdXNoKGB7S2V5OiR7TWF0aC5mbG9vcihyLzIpfX0sIGApfWNvbnN0IG89aS5jYm9yVmFsdWVUb1N0cmluZyh0LC0xLzApO3N3aXRjaChcInN0cmluZ1wiPT10eXBlb2YgdHx8Yy5pc0J1ZmZlcih0KT8odC5sZW5ndGg+MCYmKHRoaXMucHVzaChvKSx0aGlzLnB1c2goXCJcXG5cIikpLHRoaXMuZGVwdGgtLSk6KHRoaXMucHVzaChvKSx0aGlzLnB1c2goXCJcXG5cIikpLG4pe2Nhc2UgdS5PTkU6Y2FzZSB1LlRXTzpjYXNlIHUuRk9VUjpjYXNlIHUuRUlHSFQ6dGhpcy5kZXB0aC0tfX1fb25fZGF0YSgpe3JldHVybiB0aGlzLnB1c2goXCIweFwiKSx0aGlzLnB1c2godGhpcy5hbGwucmVhZCgpLnRvU3RyaW5nKFwiaGV4XCIpKSx0aGlzLnB1c2goXCJcXG5cIil9fXQuZXhwb3J0cz1ofSw2NjoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7bGV0IG49bnVsbDt0cnl7bj1yKDkzNykuQmlnTnVtYmVyfWNhdGNoKHQpe31pZihlLkJpZ051bWJlcj1uLGUuTVQ9e1BPU19JTlQ6MCxORUdfSU5UOjEsQllURV9TVFJJTkc6MixVVEY4X1NUUklORzozLEFSUkFZOjQsTUFQOjUsVEFHOjYsU0lNUExFX0ZMT0FUOjd9LGUuVEFHPXtEQVRFX1NUUklORzowLERBVEVfRVBPQ0g6MSxQT1NfQklHSU5UOjIsTkVHX0JJR0lOVDozLERFQ0lNQUxfRlJBQzo0LEJJR0ZMT0FUOjUsQkFTRTY0VVJMX0VYUEVDVEVEOjIxLEJBU0U2NF9FWFBFQ1RFRDoyMixCQVNFMTZfRVhQRUNURUQ6MjMsQ0JPUjoyNCxVUkk6MzIsQkFTRTY0VVJMOjMzLEJBU0U2NDozNCxSRUdFWFA6MzUsTUlNRTozNixTRVQ6MjU4fSxlLk5VTUJZVEVTPXtaRVJPOjAsT05FOjI0LFRXTzoyNSxGT1VSOjI2LEVJR0hUOjI3LElOREVGSU5JVEU6MzF9LGUuU0lNUExFPXtGQUxTRToyMCxUUlVFOjIxLE5VTEw6MjIsVU5ERUZJTkVEOjIzfSxlLlNZTVM9e05VTEw6U3ltYm9sLmZvcihcImdpdGh1Yi5jb20vaGlsZGpqL25vZGUtY2Jvci9udWxsXCIpLFVOREVGSU5FRDpTeW1ib2wuZm9yKFwiZ2l0aHViLmNvbS9oaWxkamovbm9kZS1jYm9yL3VuZGVmXCIpLFBBUkVOVDpTeW1ib2wuZm9yKFwiZ2l0aHViLmNvbS9oaWxkamovbm9kZS1jYm9yL3BhcmVudFwiKSxCUkVBSzpTeW1ib2wuZm9yKFwiZ2l0aHViLmNvbS9oaWxkamovbm9kZS1jYm9yL2JyZWFrXCIpLFNUUkVBTTpTeW1ib2wuZm9yKFwiZ2l0aHViLmNvbS9oaWxkamovbm9kZS1jYm9yL3N0cmVhbVwiKX0sZS5TSElGVDMyPTQyOTQ5NjcyOTYsZS5CST17TUlOVVNfT05FOkJpZ0ludCgtMSksTkVHX01BWDpCaWdJbnQoLTEpLUJpZ0ludChOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiksTUFYSU5UMzI6QmlnSW50KFwiMHhmZmZmZmZmZlwiKSxNQVhJTlQ2NDpCaWdJbnQoXCIweGZmZmZmZmZmZmZmZmZmZmZcIiksU0hJRlQzMjpCaWdJbnQoZS5TSElGVDMyKX0sZS5CaWdOdW1iZXIpe2NvbnN0IHQ9bmV3IGUuQmlnTnVtYmVyKC0xKTtlLkJOPXtNSU5VU19PTkU6dCxORUdfTUFYOnQubWludXMobmV3IGUuQmlnTnVtYmVyKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLnRvU3RyaW5nKDE2KSwxNikpLFRXTzpuZXcgZS5CaWdOdW1iZXIoMiksTUFYSU5UOm5ldyBlLkJpZ051bWJlcihcIjB4MjAwMDAwMDAwMDAwMDBcIiksTUFYSU5UMzI6bmV3IGUuQmlnTnVtYmVyKDQyOTQ5NjcyOTUpLE1BWElOVDY0Om5ldyBlLkJpZ051bWJlcihcIjB4ZmZmZmZmZmZmZmZmZmZmZlwiKSxTSElGVDMyOm5ldyBlLkJpZ051bWJlcihlLlNISUZUMzIpfX19LDc3NDoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7Y29uc3Qgbj1yKDcxKSxpPXIoNzg1KSxvPXIoMzIpLHM9cig4NzMpLGE9cigyMDIpLHU9cig2Nikse01UOmwsTlVNQllURVM6YyxTWU1TOmYsQkk6aH09dSx7QnVmZmVyOnB9PXIoNzY0KSxkPVN5bWJvbChcImNvdW50XCIpLHk9U3ltYm9sKFwibWFqb3IgdHlwZVwiKSxnPVN5bWJvbChcImVycm9yXCIpLGI9U3ltYm9sKFwibm90IGZvdW5kXCIpO2Z1bmN0aW9uIG0odCxlLHIpe2NvbnN0IG49W107cmV0dXJuIG5bZF09cixuW2YuUEFSRU5UXT10LG5beV09ZSxufWZ1bmN0aW9uIHcodCxlKXtjb25zdCByPW5ldyBhO3JldHVybiByW2RdPS0xLHJbZi5QQVJFTlRdPXQsclt5XT1lLHJ9ZnVuY3Rpb24gXyh0KXtyZXR1cm4gcy5idWZmZXJUb0JpZ0ludCh0KX1mdW5jdGlvbiBFKHQpe3JldHVybiBoLk1JTlVTX09ORS1zLmJ1ZmZlclRvQmlnSW50KHQpfWNsYXNzIHYgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKGBVbmV4cGVjdGVkIGRhdGE6IDB4JHt0LnRvU3RyaW5nKDE2KX1gKSx0aGlzLm5hbWU9XCJVbmV4cGVjdGVkRGF0YUVycm9yXCIsdGhpcy5ieXRlPXQsdGhpcy52YWx1ZT1lfX1mdW5jdGlvbiBTKHQsZSl7c3dpdGNoKHR5cGVvZiB0KXtjYXNlXCJmdW5jdGlvblwiOnJldHVybntvcHRpb25zOnt9LGNiOnR9O2Nhc2VcInN0cmluZ1wiOnJldHVybntvcHRpb25zOntlbmNvZGluZzp0fSxjYjplfTtjYXNlXCJvYmplY3RcIjpyZXR1cm57b3B0aW9uczp0fHx7fSxjYjplfTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIG9wdGlvbiB0eXBlXCIpfX1jbGFzcyBBIGV4dGVuZHMgbntjb25zdHJ1Y3Rvcih0PXt9KXtjb25zdHt0YWdzOmU9e30sbWF4X2RlcHRoOnI9LTEsYmlnaW50Om49ITAscHJlZmVyV2ViOmk9ITEscmVxdWlyZWQ6bz0hMSxlbmNvZGluZzpzPVwiaGV4XCIsZXh0ZW5kZWRSZXN1bHRzOnU9ITEsLi4ubH09dDtzdXBlcih7ZGVmYXVsdEVuY29kaW5nOnMsLi4ubH0pLHRoaXMucnVubmluZz0hMCx0aGlzLm1heF9kZXB0aD1yLHRoaXMudGFncz1lLHRoaXMucHJlZmVyV2ViPWksdGhpcy5leHRlbmRlZFJlc3VsdHM9dSx0aGlzLmJpZ2ludD1uLHRoaXMucmVxdWlyZWQ9byx1JiYodGhpcy5icy5vbihcInJlYWRcIix0aGlzLl9vblJlYWQuYmluZCh0aGlzKSksdGhpcy52YWx1ZUJ5dGVzPW5ldyBhKSxuJiYobnVsbD09dGhpcy50YWdzWzJdJiYodGhpcy50YWdzWzJdPV8pLG51bGw9PXRoaXMudGFnc1szXSYmKHRoaXMudGFnc1szXT1FKSl9c3RhdGljIG51bGxjaGVjayh0KXtzd2l0Y2godCl7Y2FzZSBmLk5VTEw6cmV0dXJuIG51bGw7Y2FzZSBmLlVOREVGSU5FRDpyZXR1cm47Y2FzZSBiOnRocm93IG5ldyBFcnJvcihcIlZhbHVlIG5vdCBmb3VuZFwiKTtkZWZhdWx0OnJldHVybiB0fX1zdGF0aWMgZGVjb2RlRmlyc3RTeW5jKHQsZT17fSl7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW5wdXQgcmVxdWlyZWRcIik7KHtvcHRpb25zOmV9PVMoZSkpO2NvbnN0e2VuY29kaW5nOnI9XCJoZXhcIiwuLi5ufT1lLGk9bmV3IEEobiksbz1zLmd1ZXNzRW5jb2RpbmcodCxyKSxhPWkuX3BhcnNlKCk7bGV0IHU9YS5uZXh0KCk7Zm9yKDshdS5kb25lOyl7Y29uc3QgdD1vLnJlYWQodS52YWx1ZSk7aWYobnVsbD09dHx8dC5sZW5ndGghPT11LnZhbHVlKXRocm93IG5ldyBFcnJvcihcIkluc3VmZmljaWVudCBkYXRhXCIpO2kuZXh0ZW5kZWRSZXN1bHRzJiZpLnZhbHVlQnl0ZXMud3JpdGUodCksdT1hLm5leHQodCl9bGV0IGw9bnVsbDtpZihpLmV4dGVuZGVkUmVzdWx0cylsPXUudmFsdWUsbC51bnVzZWQ9by5yZWFkKCk7ZWxzZSBpZihsPUEubnVsbGNoZWNrKHUudmFsdWUpLG8ubGVuZ3RoPjApe2NvbnN0IHQ9by5yZWFkKDEpO3Rocm93IG8udW5zaGlmdCh0KSxuZXcgdih0WzBdLGwpfXJldHVybiBsfXN0YXRpYyBkZWNvZGVBbGxTeW5jKHQsZT17fSl7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW5wdXQgcmVxdWlyZWRcIik7KHtvcHRpb25zOmV9PVMoZSkpO2NvbnN0e2VuY29kaW5nOnI9XCJoZXhcIiwuLi5ufT1lLGk9bmV3IEEobiksbz1zLmd1ZXNzRW5jb2RpbmcodCxyKSxhPVtdO2Zvcig7by5sZW5ndGg+MDspe2NvbnN0IHQ9aS5fcGFyc2UoKTtsZXQgZT10Lm5leHQoKTtmb3IoOyFlLmRvbmU7KXtjb25zdCByPW8ucmVhZChlLnZhbHVlKTtpZihudWxsPT1yfHxyLmxlbmd0aCE9PWUudmFsdWUpdGhyb3cgbmV3IEVycm9yKFwiSW5zdWZmaWNpZW50IGRhdGFcIik7aS5leHRlbmRlZFJlc3VsdHMmJmkudmFsdWVCeXRlcy53cml0ZShyKSxlPXQubmV4dChyKX1hLnB1c2goQS5udWxsY2hlY2soZS52YWx1ZSkpfXJldHVybiBhfXN0YXRpYyBkZWNvZGVGaXJzdCh0LGU9e30scj1udWxsKXtpZihudWxsPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnB1dCByZXF1aXJlZFwiKTsoe29wdGlvbnM6ZSxjYjpyfT1TKGUscikpO2NvbnN0e2VuY29kaW5nOm49XCJoZXhcIixyZXF1aXJlZDppPSExLC4uLm99PWUsYT1uZXcgQShvKTtsZXQgdT1iO2NvbnN0IGw9cy5ndWVzc0VuY29kaW5nKHQsbiksYz1uZXcgUHJvbWlzZSgoKHQsZSk9PnthLm9uKFwiZGF0YVwiLCh0PT57dT1BLm51bGxjaGVjayh0KSxhLmNsb3NlKCl9KSksYS5vbmNlKFwiZXJyb3JcIiwocj0+YS5leHRlbmRlZFJlc3VsdHMmJnIgaW5zdGFuY2VvZiB2Pyh1LnVudXNlZD1hLmJzLnNsaWNlKCksdCh1KSk6KHUhPT1iJiYoci52YWx1ZT11KSx1PWcsYS5jbG9zZSgpLGUocikpKSksYS5vbmNlKFwiZW5kXCIsKCgpPT57c3dpdGNoKHUpe2Nhc2UgYjpyZXR1cm4gaT9lKG5ldyBFcnJvcihcIk5vIENCT1IgZm91bmRcIikpOnQodSk7Y2FzZSBnOnJldHVybjtkZWZhdWx0OnJldHVybiB0KHUpfX0pKX0pKTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiByJiZjLnRoZW4oKHQ9PnIobnVsbCx0KSksciksbC5waXBlKGEpLGN9c3RhdGljIGRlY29kZUFsbCh0LGU9e30scj1udWxsKXtpZihudWxsPT10KXRocm93IG5ldyBUeXBlRXJyb3IoXCJpbnB1dCByZXF1aXJlZFwiKTsoe29wdGlvbnM6ZSxjYjpyfT1TKGUscikpO2NvbnN0e2VuY29kaW5nOm49XCJoZXhcIiwuLi5pfT1lLG89bmV3IEEoaSksYT1bXTtvLm9uKFwiZGF0YVwiLCh0PT5hLnB1c2goQS5udWxsY2hlY2sodCkpKSk7Y29uc3QgdT1uZXcgUHJvbWlzZSgoKHQsZSk9PntvLm9uKFwiZXJyb3JcIixlKSxvLm9uKFwiZW5kXCIsKCgpPT50KGEpKSl9KSk7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgciYmdS50aGVuKCh0PT5yKHZvaWQgMCx0KSksKHQ9PnIodCx2b2lkIDApKSkscy5ndWVzc0VuY29kaW5nKHQsbikucGlwZShvKSx1fWNsb3NlKCl7dGhpcy5ydW5uaW5nPSExLHRoaXMuX19mcmVzaD0hMH1fb25SZWFkKHQpe3RoaXMudmFsdWVCeXRlcy53cml0ZSh0KX0qX3BhcnNlKCl7bGV0IHQ9bnVsbCxlPTAscj1udWxsO2Zvcig7Oyl7aWYodGhpcy5tYXhfZGVwdGg+PTAmJmU+dGhpcy5tYXhfZGVwdGgpdGhyb3cgbmV3IEVycm9yKFwiTWF4aW11bSBkZXB0aCBcIit0aGlzLm1heF9kZXB0aCtcIiBleGNlZWRlZFwiKTtjb25zdFtuXT15aWVsZCAxO2lmKCF0aGlzLnJ1bm5pbmcpdGhyb3cgdGhpcy5icy51bnNoaWZ0KHAuZnJvbShbbl0pKSxuZXcgdihuKTtjb25zdCBnPW4+PjUsYj0zMSZuLF89bnVsbCE9dD90W3ldOnZvaWQgMCxFPW51bGwhPXQ/dC5sZW5ndGg6dm9pZCAwO3N3aXRjaChiKXtjYXNlIGMuT05FOnRoaXMuZW1pdChcIm1vcmUtYnl0ZXNcIixnLDEsXyxFKSxbcl09eWllbGQgMTticmVhaztjYXNlIGMuVFdPOmNhc2UgYy5GT1VSOmNhc2UgYy5FSUdIVDp7Y29uc3QgdD0xPDxiLTI0O3RoaXMuZW1pdChcIm1vcmUtYnl0ZXNcIixnLHQsXyxFKTtjb25zdCBlPXlpZWxkIHQ7cj1nPT09bC5TSU1QTEVfRkxPQVQ/ZTpzLnBhcnNlQ0JPUmludChiLGUsdGhpcy5iaWdpbnQpO2JyZWFrfWNhc2UgMjg6Y2FzZSAyOTpjYXNlIDMwOnRocm93IHRoaXMucnVubmluZz0hMSxuZXcgRXJyb3IoXCJBZGRpdGlvbmFsIGluZm8gbm90IGltcGxlbWVudGVkOiBcIitiKTtjYXNlIGMuSU5ERUZJTklURTpzd2l0Y2goZyl7Y2FzZSBsLlBPU19JTlQ6Y2FzZSBsLk5FR19JTlQ6Y2FzZSBsLlRBRzp0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaW5kZWZpbml0ZSBlbmNvZGluZyBmb3IgTVQgJHtnfWApfXI9LTE7YnJlYWs7ZGVmYXVsdDpyPWJ9c3dpdGNoKGcpe2Nhc2UgbC5QT1NfSU5UOmJyZWFrO2Nhc2UgbC5ORUdfSU5UOmlmKHI9PT1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUilpZih0aGlzLmJpZ2ludClyPWguTkVHX01BWDtlbHNle2lmKCF1LkJpZ051bWJlcil0aHJvdyBuZXcgRXJyb3IoXCJObyBiaWdpbnQgYW5kIG5vIGJpZ251bWJlci5qc1wiKTtyPXUuQk4uTkVHX01BWH1lbHNlIHI9dS5CaWdOdW1iZXImJnIgaW5zdGFuY2VvZiB1LkJpZ051bWJlcj91LkJOLk1JTlVTX09ORS5taW51cyhyKTpcImJpZ2ludFwiPT10eXBlb2Ygcj9oLk1JTlVTX09ORS1yOi0xLXI7YnJlYWs7Y2FzZSBsLkJZVEVfU1RSSU5HOmNhc2UgbC5VVEY4X1NUUklORzpzd2l0Y2gocil7Y2FzZSAwOnRoaXMuZW1pdChcInN0YXJ0LXN0cmluZ1wiLGcscixfLEUpLHI9Zz09PWwuVVRGOF9TVFJJTkc/XCJcIjp0aGlzLnByZWZlcldlYj9uZXcgVWludDhBcnJheSgwKTpwLmFsbG9jVW5zYWZlKDApO2JyZWFrO2Nhc2UtMTp0aGlzLmVtaXQoXCJzdGFydFwiLGcsZi5TVFJFQU0sXyxFKSx0PXcodCxnKSxlKys7Y29udGludWU7ZGVmYXVsdDp0aGlzLmVtaXQoXCJzdGFydC1zdHJpbmdcIixnLHIsXyxFKSxyPXlpZWxkIHIsZz09PWwuVVRGOF9TVFJJTkc/cj1zLnV0Zjgocik6dGhpcy5wcmVmZXJXZWImJihyPW5ldyBVaW50OEFycmF5KHIuYnVmZmVyLHIuYnl0ZU9mZnNldCxyLmxlbmd0aCkpfWJyZWFrO2Nhc2UgbC5BUlJBWTpjYXNlIGwuTUFQOnN3aXRjaChyKXtjYXNlIDA6cj1nPT09bC5NQVA/e306W107YnJlYWs7Y2FzZS0xOnRoaXMuZW1pdChcInN0YXJ0XCIsZyxmLlNUUkVBTSxfLEUpLHQ9bSh0LGcsLTEpLGUrKztjb250aW51ZTtkZWZhdWx0OnRoaXMuZW1pdChcInN0YXJ0XCIsZyxyLF8sRSksdD1tKHQsZyxyKihnLTMpKSxlKys7Y29udGludWV9YnJlYWs7Y2FzZSBsLlRBRzp0aGlzLmVtaXQoXCJzdGFydFwiLGcscixfLEUpLHQ9bSh0LGcsMSksdC5wdXNoKHIpLGUrKztjb250aW51ZTtjYXNlIGwuU0lNUExFX0ZMT0FUOmlmKFwibnVtYmVyXCI9PXR5cGVvZiByKXtpZihiPT09Yy5PTkUmJnI8MzIpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHR3by1ieXRlIGVuY29kaW5nIG9mIHNpbXBsZSB2YWx1ZSAke3J9YCk7Y29uc3QgZT1udWxsIT10O3I9by5kZWNvZGUocixlLGUmJnRbZF08MCl9ZWxzZSByPXMucGFyc2VDQk9SZmxvYXQocil9dGhpcy5lbWl0KFwidmFsdWVcIixyLF8sRSxiKTtsZXQgUz0hMTtmb3IoO251bGwhPXQ7KXtzd2l0Y2goITEpe2Nhc2UgciE9PWYuQlJFQUs6dFtkXT0xO2JyZWFrO2Nhc2UhQXJyYXkuaXNBcnJheSh0KTp0LnB1c2gocik7YnJlYWs7Y2FzZSEodCBpbnN0YW5jZW9mIGEpOntjb25zdCBlPXRbeV07aWYobnVsbCE9ZSYmZSE9PWcpdGhyb3cgdGhpcy5ydW5uaW5nPSExLG5ldyBFcnJvcihcIkludmFsaWQgbWFqb3IgdHlwZSBpbiBpbmRlZmluaXRlIGVuY29kaW5nXCIpO3Qud3JpdGUocil9fWlmKDAhPS0tdFtkXSl7Uz0hMDticmVha31pZigtLWUsZGVsZXRlIHRbZF0sQXJyYXkuaXNBcnJheSh0KSlzd2l0Y2godFt5XSl7Y2FzZSBsLkFSUkFZOnI9dDticmVhaztjYXNlIGwuTUFQOntsZXQgZT0hMDtpZih0Lmxlbmd0aCUyIT0wKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbWFwIGxlbmd0aDogXCIrdC5sZW5ndGgpO2ZvcihsZXQgcj0wLG49dC5sZW5ndGg7cjxuO3IrPTIpaWYoXCJzdHJpbmdcIiE9dHlwZW9mIHRbcl18fFwiX19wcm90b19fXCI9PT10W3JdKXtlPSExO2JyZWFrfWlmKGUpe3I9e307Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSs9MilyW3RbZV1dPXRbZSsxXX1lbHNle3I9bmV3IE1hcDtmb3IobGV0IGU9MCxuPXQubGVuZ3RoO2U8bjtlKz0yKXIuc2V0KHRbZV0sdFtlKzFdKX1icmVha31jYXNlIGwuVEFHOnI9bmV3IGkodFswXSx0WzFdKS5jb252ZXJ0KHRoaXMudGFncyl9ZWxzZSBpZih0IGluc3RhbmNlb2YgYSlzd2l0Y2godFt5XSl7Y2FzZSBsLkJZVEVfU1RSSU5HOnI9dC5zbGljZSgpLHRoaXMucHJlZmVyV2ViJiYocj1uZXcgVWludDhBcnJheShyLmJ1ZmZlcixyLmJ5dGVPZmZzZXQsci5sZW5ndGgpKTticmVhaztjYXNlIGwuVVRGOF9TVFJJTkc6cj10LnRvU3RyaW5nKFwidXRmLThcIil9dGhpcy5lbWl0KFwic3RvcFwiLHRbeV0pO2NvbnN0IG49dDt0PXRbZi5QQVJFTlRdLGRlbGV0ZSBuW2YuUEFSRU5UXSxkZWxldGUgblt5XX1pZighUyl7aWYodGhpcy5leHRlbmRlZFJlc3VsdHMpe2NvbnN0IHQ9dGhpcy52YWx1ZUJ5dGVzLnNsaWNlKCksZT17dmFsdWU6QS5udWxsY2hlY2sociksYnl0ZXM6dCxsZW5ndGg6dC5sZW5ndGh9O3JldHVybiB0aGlzLnZhbHVlQnl0ZXM9bmV3IGEsZX1yZXR1cm4gcn19fX1BLk5PVF9GT1VORD1iLHQuZXhwb3J0cz1BfSw2OTQ6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0IG49cig4MzApLGk9cig3NzQpLG89cig4NzMpLHM9cigyMDIpLHtNVDphLFNZTVM6dX09cig2Nik7Y2xhc3MgbCBleHRlbmRzIG4uVHJhbnNmb3Jte2NvbnN0cnVjdG9yKHQ9e30pe2NvbnN0e3NlcGFyYXRvcjplPVwiXFxuXCIsc3RyZWFtX2Vycm9yczpyPSExLHRhZ3M6bixtYXhfZGVwdGg6byxiaWdpbnQ6cyxwcmVmZXJXZWI6YSxlbmNvZGluZzp1LC4uLmx9PXQ7c3VwZXIoey4uLmwscmVhZGFibGVPYmplY3RNb2RlOiExLHdyaXRhYmxlT2JqZWN0TW9kZTohMX0pLHRoaXMuZmxvYXRfYnl0ZXM9LTEsdGhpcy5zZXBhcmF0b3I9ZSx0aGlzLnN0cmVhbV9lcnJvcnM9cix0aGlzLnBhcnNlcj1uZXcgaSh7dGFnczpuLG1heF9kZXB0aDpvLGJpZ2ludDpzLHByZWZlcldlYjphLGVuY29kaW5nOnV9KSx0aGlzLnBhcnNlci5vbihcIm1vcmUtYnl0ZXNcIix0aGlzLl9vbl9tb3JlLmJpbmQodGhpcykpLHRoaXMucGFyc2VyLm9uKFwidmFsdWVcIix0aGlzLl9vbl92YWx1ZS5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcInN0YXJ0XCIsdGhpcy5fb25fc3RhcnQuYmluZCh0aGlzKSksdGhpcy5wYXJzZXIub24oXCJzdG9wXCIsdGhpcy5fb25fc3RvcC5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcImRhdGFcIix0aGlzLl9vbl9kYXRhLmJpbmQodGhpcykpLHRoaXMucGFyc2VyLm9uKFwiZXJyb3JcIix0aGlzLl9vbl9lcnJvci5iaW5kKHRoaXMpKX1fdHJhbnNmb3JtKHQsZSxyKXtyZXR1cm4gdGhpcy5wYXJzZXIud3JpdGUodCxlLHIpfV9mbHVzaCh0KXtyZXR1cm4gdGhpcy5wYXJzZXIuX2ZsdXNoKChlPT50aGlzLnN0cmVhbV9lcnJvcnM/KGUmJnRoaXMuX29uX2Vycm9yKGUpLHQoKSk6dChlKSkpfXN0YXRpYyBkaWFnbm9zZSh0LGU9e30scj1udWxsKXtpZihudWxsPT10KXRocm93IG5ldyBFcnJvcihcImlucHV0IHJlcXVpcmVkXCIpOyh7b3B0aW9uczplLGNiOnJ9PWZ1bmN0aW9uKHQsZSl7c3dpdGNoKHR5cGVvZiB0KXtjYXNlXCJmdW5jdGlvblwiOnJldHVybntvcHRpb25zOnt9LGNiOnR9O2Nhc2VcInN0cmluZ1wiOnJldHVybntvcHRpb25zOntlbmNvZGluZzp0fSxjYjplfTtjYXNlXCJvYmplY3RcIjpyZXR1cm57b3B0aW9uczp0fHx7fSxjYjplfTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIG9wdGlvbiB0eXBlXCIpfX0oZSxyKSk7Y29uc3R7ZW5jb2Rpbmc6bj1cImhleFwiLC4uLml9PWUsYT1uZXcgcyx1PW5ldyBsKGkpO2xldCBjPW51bGw7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2Ygcj8odS5vbihcImVuZFwiLCgoKT0+cihudWxsLGEudG9TdHJpbmcoXCJ1dGY4XCIpKSkpLHUub24oXCJlcnJvclwiLHIpKTpjPW5ldyBQcm9taXNlKCgodCxlKT0+e3Uub24oXCJlbmRcIiwoKCk9PnQoYS50b1N0cmluZyhcInV0ZjhcIikpKSksdS5vbihcImVycm9yXCIsZSl9KSksdS5waXBlKGEpLG8uZ3Vlc3NFbmNvZGluZyh0LG4pLnBpcGUodSksY31fb25fZXJyb3IodCl7cmV0dXJuIHRoaXMuc3RyZWFtX2Vycm9ycz90aGlzLnB1c2godC50b1N0cmluZygpKTp0aGlzLmVtaXQoXCJlcnJvclwiLHQpfV9vbl9tb3JlKHQsZSxyLG4pe3Q9PT1hLlNJTVBMRV9GTE9BVCYmKHRoaXMuZmxvYXRfYnl0ZXM9ezI6MSw0OjIsODozfVtlXSl9X2ZvcmUodCxlKXtzd2l0Y2godCl7Y2FzZSBhLkJZVEVfU1RSSU5HOmNhc2UgYS5VVEY4X1NUUklORzpjYXNlIGEuQVJSQVk6ZT4wJiZ0aGlzLnB1c2goXCIsIFwiKTticmVhaztjYXNlIGEuTUFQOmU+MCYmKGUlMj90aGlzLnB1c2goXCI6IFwiKTp0aGlzLnB1c2goXCIsIFwiKSl9fV9vbl92YWx1ZSh0LGUscil7aWYodD09PXUuQlJFQUspcmV0dXJuO3RoaXMuX2ZvcmUoZSxyKTtjb25zdCBuPXRoaXMuZmxvYXRfYnl0ZXM7dGhpcy5mbG9hdF9ieXRlcz0tMSx0aGlzLnB1c2goby5jYm9yVmFsdWVUb1N0cmluZyh0LG4pKX1fb25fc3RhcnQodCxlLHIsbil7c3dpdGNoKHRoaXMuX2ZvcmUocixuKSx0KXtjYXNlIGEuVEFHOnRoaXMucHVzaChgJHtlfShgKTticmVhaztjYXNlIGEuQVJSQVk6dGhpcy5wdXNoKFwiW1wiKTticmVhaztjYXNlIGEuTUFQOnRoaXMucHVzaChcIntcIik7YnJlYWs7Y2FzZSBhLkJZVEVfU1RSSU5HOmNhc2UgYS5VVEY4X1NUUklORzp0aGlzLnB1c2goXCIoXCIpfWU9PT11LlNUUkVBTSYmdGhpcy5wdXNoKFwiXyBcIil9X29uX3N0b3AodCl7c3dpdGNoKHQpe2Nhc2UgYS5UQUc6dGhpcy5wdXNoKFwiKVwiKTticmVhaztjYXNlIGEuQVJSQVk6dGhpcy5wdXNoKFwiXVwiKTticmVhaztjYXNlIGEuTUFQOnRoaXMucHVzaChcIn1cIik7YnJlYWs7Y2FzZSBhLkJZVEVfU1RSSU5HOmNhc2UgYS5VVEY4X1NUUklORzp0aGlzLnB1c2goXCIpXCIpfX1fb25fZGF0YSgpe3RoaXMucHVzaCh0aGlzLnNlcGFyYXRvcil9fXQuZXhwb3J0cz1sfSw2NjY6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0IG49cig4MzApLGk9cigyMDIpLG89cig4NzMpLHM9cig2Nikse01UOmEsTlVNQllURVM6dSxTSElGVDMyOmwsU0lNUExFOmMsU1lNUzpmLFRBRzpoLEJJOnB9PXMse0J1ZmZlcjpkfT1yKDc2NCkseT1hLlNJTVBMRV9GTE9BVDw8NXx1LlRXTyxnPWEuU0lNUExFX0ZMT0FUPDw1fHUuRk9VUixiPWEuU0lNUExFX0ZMT0FUPDw1fHUuRUlHSFQsbT1hLlNJTVBMRV9GTE9BVDw8NXxjLlRSVUUsdz1hLlNJTVBMRV9GTE9BVDw8NXxjLkZBTFNFLF89YS5TSU1QTEVfRkxPQVQ8PDV8Yy5VTkRFRklORUQsRT1hLlNJTVBMRV9GTE9BVDw8NXxjLk5VTEwsdj1kLmZyb20oWzI1NV0pLFM9ZC5mcm9tKFwiZjk3ZTAwXCIsXCJoZXhcIiksQT1kLmZyb20oXCJmOWZjMDBcIixcImhleFwiKSxUPWQuZnJvbShcImY5N2MwMFwiLFwiaGV4XCIpLEk9ZC5mcm9tKFwiZjk4MDAwXCIsXCJoZXhcIik7Y2xhc3MgQiBleHRlbmRzIG4uVHJhbnNmb3Jte2NvbnN0cnVjdG9yKHQ9e30pe2NvbnN0e2Nhbm9uaWNhbDplPSExLGVuY29kZVVuZGVmaW5lZDpyLGRpc2FsbG93VW5kZWZpbmVkS2V5czpuPSExLGRhdGVUeXBlOm89XCJudW1iZXJcIixjb2xsYXBzZUJpZ0ludGVnZXJzOmE9ITEsZGV0ZWN0TG9vcHM6dT0hMSxvbWl0VW5kZWZpbmVkUHJvcGVydGllczpsPSExLGdlblR5cGVzOmM9W10sLi4uZn09dDtpZihzdXBlcih7Li4uZixyZWFkYWJsZU9iamVjdE1vZGU6ITEsd3JpdGFibGVPYmplY3RNb2RlOiEwfSksdGhpcy5jYW5vbmljYWw9ZSx0aGlzLmVuY29kZVVuZGVmaW5lZD1yLHRoaXMuZGlzYWxsb3dVbmRlZmluZWRLZXlzPW4sdGhpcy5kYXRlVHlwZT1mdW5jdGlvbih0KXtpZighdClyZXR1cm5cIm51bWJlclwiO3N3aXRjaCh0LnRvTG93ZXJDYXNlKCkpe2Nhc2VcIm51bWJlclwiOnJldHVyblwibnVtYmVyXCI7Y2FzZVwiZmxvYXRcIjpyZXR1cm5cImZsb2F0XCI7Y2FzZVwiaW50XCI6cmV0dXJuXCJpbnRcIjtjYXNlXCJzdHJpbmdcIjpyZXR1cm5cInN0cmluZ1wifXRocm93IG5ldyBUeXBlRXJyb3IoYGRhdGVUeXBlIGludmFsaWQsIGdvdCBcIiR7dH1cImApfShvKSx0aGlzLmNvbGxhcHNlQmlnSW50ZWdlcnM9ISF0aGlzLmNhbm9uaWNhbHx8YSx0aGlzLmRldGVjdExvb3BzPXUsXCJib29sZWFuXCI9PXR5cGVvZiB1KXUmJih0aGlzLmRldGVjdExvb3BzPW5ldyBXZWFrU2V0KTtlbHNlIGlmKCEodSBpbnN0YW5jZW9mIFdlYWtTZXQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJkZXRlY3RMb29wcyBtdXN0IGJlIGJvb2xlYW4gb3IgV2Vha1NldFwiKTtpZih0aGlzLm9taXRVbmRlZmluZWRQcm9wZXJ0aWVzPWwsdGhpcy5zZW1hbnRpY1R5cGVzPXtBcnJheTp0aGlzLl9wdXNoQXJyYXksRGF0ZTp0aGlzLl9wdXNoRGF0ZSxCdWZmZXI6dGhpcy5fcHVzaEJ1ZmZlcixbZC5uYW1lXTp0aGlzLl9wdXNoQnVmZmVyLE1hcDp0aGlzLl9wdXNoTWFwLE5vRmlsdGVyOnRoaXMuX3B1c2hOb0ZpbHRlcixbaS5uYW1lXTp0aGlzLl9wdXNoTm9GaWx0ZXIsUmVnRXhwOnRoaXMuX3B1c2hSZWdleHAsU2V0OnRoaXMuX3B1c2hTZXQsQXJyYXlCdWZmZXI6dGhpcy5fcHVzaEFycmF5QnVmZmVyLFVpbnQ4Q2xhbXBlZEFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LFVpbnQ4QXJyYXk6dGhpcy5fcHVzaFR5cGVkQXJyYXksVWludDE2QXJyYXk6dGhpcy5fcHVzaFR5cGVkQXJyYXksVWludDMyQXJyYXk6dGhpcy5fcHVzaFR5cGVkQXJyYXksSW50OEFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LEludDE2QXJyYXk6dGhpcy5fcHVzaFR5cGVkQXJyYXksSW50MzJBcnJheTp0aGlzLl9wdXNoVHlwZWRBcnJheSxGbG9hdDMyQXJyYXk6dGhpcy5fcHVzaFR5cGVkQXJyYXksRmxvYXQ2NEFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LFVSTDp0aGlzLl9wdXNoVVJMLEJvb2xlYW46dGhpcy5fcHVzaEJveGVkLE51bWJlcjp0aGlzLl9wdXNoQm94ZWQsU3RyaW5nOnRoaXMuX3B1c2hCb3hlZH0scy5CaWdOdW1iZXImJih0aGlzLnNlbWFudGljVHlwZXNbcy5CaWdOdW1iZXIubmFtZV09dGhpcy5fcHVzaEJpZ051bWJlciksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEJpZ1VpbnQ2NEFycmF5JiYodGhpcy5zZW1hbnRpY1R5cGVzW0JpZ1VpbnQ2NEFycmF5Lm5hbWVdPXRoaXMuX3B1c2hUeXBlZEFycmF5KSxcInVuZGVmaW5lZFwiIT10eXBlb2YgQmlnSW50NjRBcnJheSYmKHRoaXMuc2VtYW50aWNUeXBlc1tCaWdJbnQ2NEFycmF5Lm5hbWVdPXRoaXMuX3B1c2hUeXBlZEFycmF5KSxBcnJheS5pc0FycmF5KGMpKWZvcihsZXQgdD0wLGU9Yy5sZW5ndGg7dDxlO3QrPTIpdGhpcy5hZGRTZW1hbnRpY1R5cGUoY1t0XSxjW3QrMV0pO2Vsc2UgZm9yKGNvbnN0W3QsZV1vZiBPYmplY3QuZW50cmllcyhjKSl0aGlzLmFkZFNlbWFudGljVHlwZSh0LGUpfV90cmFuc2Zvcm0odCxlLHIpe3JldHVybiByKCExPT09dGhpcy5wdXNoQW55KHQpP25ldyBFcnJvcihcIlB1c2ggRXJyb3JcIik6dm9pZCAwKX1fZmx1c2godCl7cmV0dXJuIHQoKX1hZGRTZW1hbnRpY1R5cGUodCxlKXtjb25zdCByPVwic3RyaW5nXCI9PXR5cGVvZiB0P3Q6dC5uYW1lLG49dGhpcy5zZW1hbnRpY1R5cGVzW3JdO2lmKGUpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcihcImZ1biBtdXN0IGJlIG9mIHR5cGUgZnVuY3Rpb25cIik7dGhpcy5zZW1hbnRpY1R5cGVzW3JdPWV9ZWxzZSBuJiZkZWxldGUgdGhpcy5zZW1hbnRpY1R5cGVzW3JdO3JldHVybiBufV9wdXNoVUludDgodCl7Y29uc3QgZT1kLmFsbG9jVW5zYWZlKDEpO3JldHVybiBlLndyaXRlVUludDgodCwwKSx0aGlzLnB1c2goZSl9X3B1c2hVSW50MTZCRSh0KXtjb25zdCBlPWQuYWxsb2NVbnNhZmUoMik7cmV0dXJuIGUud3JpdGVVSW50MTZCRSh0LDApLHRoaXMucHVzaChlKX1fcHVzaFVJbnQzMkJFKHQpe2NvbnN0IGU9ZC5hbGxvY1Vuc2FmZSg0KTtyZXR1cm4gZS53cml0ZVVJbnQzMkJFKHQsMCksdGhpcy5wdXNoKGUpfV9wdXNoRmxvYXRCRSh0KXtjb25zdCBlPWQuYWxsb2NVbnNhZmUoNCk7cmV0dXJuIGUud3JpdGVGbG9hdEJFKHQsMCksdGhpcy5wdXNoKGUpfV9wdXNoRG91YmxlQkUodCl7Y29uc3QgZT1kLmFsbG9jVW5zYWZlKDgpO3JldHVybiBlLndyaXRlRG91YmxlQkUodCwwKSx0aGlzLnB1c2goZSl9X3B1c2hOYU4oKXtyZXR1cm4gdGhpcy5wdXNoKFMpfV9wdXNoSW5maW5pdHkodCl7Y29uc3QgZT10PDA/QTpUO3JldHVybiB0aGlzLnB1c2goZSl9X3B1c2hGbG9hdCh0KXtpZih0aGlzLmNhbm9uaWNhbCl7Y29uc3QgZT1kLmFsbG9jVW5zYWZlKDIpO2lmKG8ud3JpdGVIYWxmKGUsdCkpcmV0dXJuIHRoaXMuX3B1c2hVSW50OCh5KSYmdGhpcy5wdXNoKGUpfXJldHVybiBNYXRoLmZyb3VuZCh0KT09PXQ/dGhpcy5fcHVzaFVJbnQ4KGcpJiZ0aGlzLl9wdXNoRmxvYXRCRSh0KTp0aGlzLl9wdXNoVUludDgoYikmJnRoaXMuX3B1c2hEb3VibGVCRSh0KX1fcHVzaEludCh0LGUscil7Y29uc3Qgbj1lPDw1O3N3aXRjaCghMSl7Y2FzZSEodDwyNCk6cmV0dXJuIHRoaXMuX3B1c2hVSW50OChufHQpO2Nhc2UhKHQ8PTI1NSk6cmV0dXJuIHRoaXMuX3B1c2hVSW50OChufHUuT05FKSYmdGhpcy5fcHVzaFVJbnQ4KHQpO2Nhc2UhKHQ8PTY1NTM1KTpyZXR1cm4gdGhpcy5fcHVzaFVJbnQ4KG58dS5UV08pJiZ0aGlzLl9wdXNoVUludDE2QkUodCk7Y2FzZSEodDw9NDI5NDk2NzI5NSk6cmV0dXJuIHRoaXMuX3B1c2hVSW50OChufHUuRk9VUikmJnRoaXMuX3B1c2hVSW50MzJCRSh0KTtjYXNlISh0PD1OdW1iZXIuTUFYX1NBRkVfSU5URUdFUik6cmV0dXJuIHRoaXMuX3B1c2hVSW50OChufHUuRUlHSFQpJiZ0aGlzLl9wdXNoVUludDMyQkUoTWF0aC5mbG9vcih0L2wpKSYmdGhpcy5fcHVzaFVJbnQzMkJFKHQlbCk7ZGVmYXVsdDpyZXR1cm4gZT09PWEuTkVHX0lOVD90aGlzLl9wdXNoRmxvYXQocik6dGhpcy5fcHVzaEZsb2F0KHQpfX1fcHVzaEludE51bSh0KXtyZXR1cm4gT2JqZWN0LmlzKHQsLTApP3RoaXMucHVzaChJKTp0PDA/dGhpcy5fcHVzaEludCgtdC0xLGEuTkVHX0lOVCx0KTp0aGlzLl9wdXNoSW50KHQsYS5QT1NfSU5UKX1fcHVzaE51bWJlcih0KXtzd2l0Y2goITEpe2Nhc2UhaXNOYU4odCk6cmV0dXJuIHRoaXMuX3B1c2hOYU4oKTtjYXNlIGlzRmluaXRlKHQpOnJldHVybiB0aGlzLl9wdXNoSW5maW5pdHkodCk7Y2FzZSBNYXRoLnJvdW5kKHQpIT09dDpyZXR1cm4gdGhpcy5fcHVzaEludE51bSh0KTtkZWZhdWx0OnJldHVybiB0aGlzLl9wdXNoRmxvYXQodCl9fV9wdXNoU3RyaW5nKHQpe2NvbnN0IGU9ZC5ieXRlTGVuZ3RoKHQsXCJ1dGY4XCIpO3JldHVybiB0aGlzLl9wdXNoSW50KGUsYS5VVEY4X1NUUklORykmJnRoaXMucHVzaCh0LFwidXRmOFwiKX1fcHVzaEJvb2xlYW4odCl7cmV0dXJuIHRoaXMuX3B1c2hVSW50OCh0P206dyl9X3B1c2hVbmRlZmluZWQodCl7c3dpdGNoKHR5cGVvZiB0aGlzLmVuY29kZVVuZGVmaW5lZCl7Y2FzZVwidW5kZWZpbmVkXCI6cmV0dXJuIHRoaXMuX3B1c2hVSW50OChfKTtjYXNlXCJmdW5jdGlvblwiOnJldHVybiB0aGlzLnB1c2hBbnkodGhpcy5lbmNvZGVVbmRlZmluZWQuY2FsbCh0aGlzLHQpKTtjYXNlXCJvYmplY3RcIjp7Y29uc3QgdD1vLmJ1ZmZlcmlzaFRvQnVmZmVyKHRoaXMuZW5jb2RlVW5kZWZpbmVkKTtpZih0KXJldHVybiB0aGlzLnB1c2godCl9fXJldHVybiB0aGlzLnB1c2hBbnkodGhpcy5lbmNvZGVVbmRlZmluZWQpfV9wdXNoTnVsbCh0KXtyZXR1cm4gdGhpcy5fcHVzaFVJbnQ4KEUpfV9wdXNoQXJyYXkodCxlLHIpe3I9e2luZGVmaW5pdGU6ITEsLi4ucn07Y29uc3Qgbj1lLmxlbmd0aDtpZihyLmluZGVmaW5pdGUpe2lmKCF0Ll9wdXNoVUludDgoYS5BUlJBWTw8NXx1LklOREVGSU5JVEUpKXJldHVybiExfWVsc2UgaWYoIXQuX3B1c2hJbnQobixhLkFSUkFZKSlyZXR1cm4hMTtmb3IobGV0IHI9MDtyPG47cisrKWlmKCF0LnB1c2hBbnkoZVtyXSkpcmV0dXJuITE7cmV0dXJuIShyLmluZGVmaW5pdGUmJiF0LnB1c2godikpfV9wdXNoVGFnKHQpe3JldHVybiB0aGlzLl9wdXNoSW50KHQsYS5UQUcpfV9wdXNoRGF0ZSh0LGUpe3N3aXRjaCh0LmRhdGVUeXBlKXtjYXNlXCJzdHJpbmdcIjpyZXR1cm4gdC5fcHVzaFRhZyhoLkRBVEVfU1RSSU5HKSYmdC5fcHVzaFN0cmluZyhlLnRvSVNPU3RyaW5nKCkpO2Nhc2VcImludFwiOmNhc2VcImludGVnZXJcIjpyZXR1cm4gdC5fcHVzaFRhZyhoLkRBVEVfRVBPQ0gpJiZ0Ll9wdXNoSW50TnVtKE1hdGgucm91bmQoZS8xZTMpKTtjYXNlXCJmbG9hdFwiOnJldHVybiB0Ll9wdXNoVGFnKGguREFURV9FUE9DSCkmJnQuX3B1c2hGbG9hdChlLzFlMyk7Y2FzZVwibnVtYmVyXCI6ZGVmYXVsdDpyZXR1cm4gdC5fcHVzaFRhZyhoLkRBVEVfRVBPQ0gpJiZ0LnB1c2hBbnkoZS8xZTMpfX1fcHVzaEJ1ZmZlcih0LGUpe3JldHVybiB0Ll9wdXNoSW50KGUubGVuZ3RoLGEuQllURV9TVFJJTkcpJiZ0LnB1c2goZSl9X3B1c2hOb0ZpbHRlcih0LGUpe3JldHVybiB0Ll9wdXNoQnVmZmVyKHQsZS5zbGljZSgpKX1fcHVzaFJlZ2V4cCh0LGUpe3JldHVybiB0Ll9wdXNoVGFnKGguUkVHRVhQKSYmdC5wdXNoQW55KGUuc291cmNlKX1fcHVzaFNldCh0LGUpe2lmKCF0Ll9wdXNoVGFnKGguU0VUKSlyZXR1cm4hMTtpZighdC5fcHVzaEludChlLnNpemUsYS5BUlJBWSkpcmV0dXJuITE7Zm9yKGNvbnN0IHIgb2YgZSlpZighdC5wdXNoQW55KHIpKXJldHVybiExO3JldHVybiEwfV9wdXNoVVJMKHQsZSl7cmV0dXJuIHQuX3B1c2hUYWcoaC5VUkkpJiZ0LnB1c2hBbnkoZS50b1N0cmluZygpKX1fcHVzaEJveGVkKHQsZSl7cmV0dXJuIHQuX3B1c2hBbnkoZS52YWx1ZU9mKCkpfV9wdXNoQmlnaW50KHQpe2xldCBlPWEuUE9TX0lOVCxyPWguUE9TX0JJR0lOVDtpZih0LmlzTmVnYXRpdmUoKSYmKHQ9dC5uZWdhdGVkKCkubWludXMoMSksZT1hLk5FR19JTlQscj1oLk5FR19CSUdJTlQpLHRoaXMuY29sbGFwc2VCaWdJbnRlZ2VycyYmdC5sdGUocy5CTi5NQVhJTlQ2NCkpcmV0dXJuIHQubHRlKHMuQk4uTUFYSU5UMzIpP3RoaXMuX3B1c2hJbnQodC50b051bWJlcigpLGUpOnRoaXMuX3B1c2hVSW50OChlPDw1fHUuRUlHSFQpJiZ0aGlzLl9wdXNoVUludDMyQkUodC5kaXZpZGVkVG9JbnRlZ2VyQnkocy5CTi5TSElGVDMyKS50b051bWJlcigpKSYmdGhpcy5fcHVzaFVJbnQzMkJFKHQubW9kKHMuQk4uU0hJRlQzMikudG9OdW1iZXIoKSk7bGV0IG49dC50b1N0cmluZygxNik7bi5sZW5ndGglMiYmKG49XCIwXCIrbik7Y29uc3QgaT1kLmZyb20obixcImhleFwiKTtyZXR1cm4gdGhpcy5fcHVzaFRhZyhyKSYmdGhpcy5fcHVzaEJ1ZmZlcih0aGlzLGkpfV9wdXNoSlNCaWdpbnQodCl7bGV0IGU9YS5QT1NfSU5ULHI9aC5QT1NfQklHSU5UO2lmKHQ8MCYmKHQ9LXQrcC5NSU5VU19PTkUsZT1hLk5FR19JTlQscj1oLk5FR19CSUdJTlQpLHRoaXMuY29sbGFwc2VCaWdJbnRlZ2VycyYmdDw9cC5NQVhJTlQ2NClyZXR1cm4gdDw9NDI5NDk2NzI5NT90aGlzLl9wdXNoSW50KE51bWJlcih0KSxlKTp0aGlzLl9wdXNoVUludDgoZTw8NXx1LkVJR0hUKSYmdGhpcy5fcHVzaFVJbnQzMkJFKE51bWJlcih0L3AuU0hJRlQzMikpJiZ0aGlzLl9wdXNoVUludDMyQkUoTnVtYmVyKHQlcC5TSElGVDMyKSk7bGV0IG49dC50b1N0cmluZygxNik7bi5sZW5ndGglMiYmKG49XCIwXCIrbik7Y29uc3QgaT1kLmZyb20obixcImhleFwiKTtyZXR1cm4gdGhpcy5fcHVzaFRhZyhyKSYmdGhpcy5fcHVzaEJ1ZmZlcih0aGlzLGkpfV9wdXNoQmlnTnVtYmVyKHQsZSl7aWYoZS5pc05hTigpKXJldHVybiB0Ll9wdXNoTmFOKCk7aWYoIWUuaXNGaW5pdGUoKSlyZXR1cm4gdC5fcHVzaEluZmluaXR5KGUuaXNOZWdhdGl2ZSgpPy0xLzA6MS8wKTtpZihlLmlzSW50ZWdlcigpKXJldHVybiB0Ll9wdXNoQmlnaW50KGUpO2lmKCF0Ll9wdXNoVGFnKGguREVDSU1BTF9GUkFDKXx8IXQuX3B1c2hJbnQoMixhLkFSUkFZKSlyZXR1cm4hMTtjb25zdCByPWUuZGVjaW1hbFBsYWNlcygpLG49ZS5zaGlmdGVkQnkocik7cmV0dXJuISF0Ll9wdXNoSW50TnVtKC1yKSYmKG4uYWJzKCkuaXNMZXNzVGhhbihzLkJOLk1BWElOVCk/dC5fcHVzaEludE51bShuLnRvTnVtYmVyKCkpOnQuX3B1c2hCaWdpbnQobikpfV9wdXNoTWFwKHQsZSxyKXtyPXtpbmRlZmluaXRlOiExLC4uLnJ9O2xldCBuPVsuLi5lLmVudHJpZXMoKV07aWYodC5vbWl0VW5kZWZpbmVkUHJvcGVydGllcyYmKG49bi5maWx0ZXIoKChbdCxlXSk9PnZvaWQgMCE9PWUpKSksci5pbmRlZmluaXRlKXtpZighdC5fcHVzaFVJbnQ4KGEuTUFQPDw1fHUuSU5ERUZJTklURSkpcmV0dXJuITF9ZWxzZSBpZighdC5fcHVzaEludChuLmxlbmd0aCxhLk1BUCkpcmV0dXJuITE7aWYodC5jYW5vbmljYWwpe2NvbnN0IGU9bmV3IEIoe2dlblR5cGVzOnQuc2VtYW50aWNUeXBlcyxjYW5vbmljYWw6dC5jYW5vbmljYWwsZGV0ZWN0TG9vcHM6ISF0LmRldGVjdExvb3BzLGRhdGVUeXBlOnQuZGF0ZVR5cGUsZGlzYWxsb3dVbmRlZmluZWRLZXlzOnQuZGlzYWxsb3dVbmRlZmluZWRLZXlzLGNvbGxhcHNlQmlnSW50ZWdlcnM6dC5jb2xsYXBzZUJpZ0ludGVnZXJzfSkscj1uZXcgaSh7aGlnaFdhdGVyTWFyazp0LnJlYWRhYmxlSGlnaFdhdGVyTWFya30pO2UucGlwZShyKSxuLnNvcnQoKChbdF0sW25dKT0+e2UucHVzaEFueSh0KTtjb25zdCBpPXIucmVhZCgpO2UucHVzaEFueShuKTtjb25zdCBvPXIucmVhZCgpO3JldHVybiBpLmNvbXBhcmUobyl9KSk7Zm9yKGNvbnN0W2Uscl1vZiBuKXtpZih0LmRpc2FsbG93VW5kZWZpbmVkS2V5cyYmdm9pZCAwPT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIE1hcCBrZXk6IHVuZGVmaW5lZFwiKTtpZighdC5wdXNoQW55KGUpfHwhdC5wdXNoQW55KHIpKXJldHVybiExfX1lbHNlIGZvcihjb25zdFtlLHJdb2Ygbil7aWYodC5kaXNhbGxvd1VuZGVmaW5lZEtleXMmJnZvaWQgMD09PWUpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBNYXAga2V5OiB1bmRlZmluZWRcIik7aWYoIXQucHVzaEFueShlKXx8IXQucHVzaEFueShyKSlyZXR1cm4hMX1yZXR1cm4hKHIuaW5kZWZpbml0ZSYmIXQucHVzaCh2KSl9X3B1c2hUeXBlZEFycmF5KHQsZSl7bGV0IHI9NjQsbj1lLkJZVEVTX1BFUl9FTEVNRU5UO2NvbnN0e25hbWU6aX09ZS5jb25zdHJ1Y3RvcjtyZXR1cm4gaS5zdGFydHNXaXRoKFwiRmxvYXRcIik/KHJ8PTE2LG4vPTIpOmkuaW5jbHVkZXMoXCJVXCIpfHwocnw9OCksKGkuaW5jbHVkZXMoXCJDbGFtcGVkXCIpfHwxIT09biYmIW8uaXNCaWdFbmRpYW4oKSkmJihyfD00KSxyfD17MTowLDI6MSw0OjIsODozfVtuXSwhIXQuX3B1c2hUYWcocikmJnQuX3B1c2hCdWZmZXIodCxkLmZyb20oZS5idWZmZXIsZS5ieXRlT2Zmc2V0LGUuYnl0ZUxlbmd0aCkpfV9wdXNoQXJyYXlCdWZmZXIodCxlKXtyZXR1cm4gdC5fcHVzaEJ1ZmZlcih0LGQuZnJvbShlKSl9cmVtb3ZlTG9vcERldGVjdG9ycygpe3JldHVybiEhdGhpcy5kZXRlY3RMb29wcyYmKHRoaXMuZGV0ZWN0TG9vcHM9bmV3IFdlYWtTZXQsITApfV9wdXNoT2JqZWN0KHQsZSl7aWYoIXQpcmV0dXJuIHRoaXMuX3B1c2hOdWxsKHQpO2lmKCEoZT17aW5kZWZpbml0ZTohMSxza2lwVHlwZXM6ITEsLi4uZX0pLmluZGVmaW5pdGUmJnRoaXMuZGV0ZWN0TG9vcHMpe2lmKHRoaXMuZGV0ZWN0TG9vcHMuaGFzKHQpKXRocm93IG5ldyBFcnJvcihcIkxvb3AgZGV0ZWN0ZWQgd2hpbGUgQ0JPUiBlbmNvZGluZy5cXG5DYWxsIHJlbW92ZUxvb3BEZXRlY3RvcnMgYmVmb3JlIHJlc3VtaW5nLlwiKTt0aGlzLmRldGVjdExvb3BzLmFkZCh0KX1pZighZS5za2lwVHlwZXMpe2NvbnN0IGU9dC5lbmNvZGVDQk9SO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGUpcmV0dXJuIGUuY2FsbCh0LHRoaXMpO2NvbnN0IHI9dGhpcy5zZW1hbnRpY1R5cGVzW3QuY29uc3RydWN0b3IubmFtZV07aWYocilyZXR1cm4gci5jYWxsKHQsdGhpcyx0KX1jb25zdCByPU9iamVjdC5rZXlzKHQpLmZpbHRlcigoZT0+e2NvbnN0IHI9dHlwZW9mIHRbZV07cmV0dXJuXCJmdW5jdGlvblwiIT09ciYmKCF0aGlzLm9taXRVbmRlZmluZWRQcm9wZXJ0aWVzfHxcInVuZGVmaW5lZFwiIT09cil9KSksbj17fTtpZih0aGlzLmNhbm9uaWNhbCYmci5zb3J0KCgodCxlKT0+e2NvbnN0IHI9blt0XXx8KG5bdF09Qi5lbmNvZGUodCkpLGk9bltlXXx8KG5bZV09Qi5lbmNvZGUoZSkpO3JldHVybiByLmNvbXBhcmUoaSl9KSksZS5pbmRlZmluaXRlKXtpZighdGhpcy5fcHVzaFVJbnQ4KGEuTUFQPDw1fHUuSU5ERUZJTklURSkpcmV0dXJuITF9ZWxzZSBpZighdGhpcy5fcHVzaEludChyLmxlbmd0aCxhLk1BUCkpcmV0dXJuITE7bGV0IGk9bnVsbDtmb3IobGV0IGU9MCxvPXIubGVuZ3RoO2U8bztlKyspe2NvbnN0IG89cltlXTtpZih0aGlzLmNhbm9uaWNhbCYmKGk9bltvXSkpe2lmKCF0aGlzLnB1c2goaSkpcmV0dXJuITF9ZWxzZSBpZighdGhpcy5fcHVzaFN0cmluZyhvKSlyZXR1cm4hMTtpZighdGhpcy5wdXNoQW55KHRbb10pKXJldHVybiExfWlmKGUuaW5kZWZpbml0ZSl7aWYoIXRoaXMucHVzaCh2KSlyZXR1cm4hMX1lbHNlIHRoaXMuZGV0ZWN0TG9vcHMmJnRoaXMuZGV0ZWN0TG9vcHMuZGVsZXRlKHQpO3JldHVybiEwfXB1c2hBbnkodCl7c3dpdGNoKHR5cGVvZiB0KXtjYXNlXCJudW1iZXJcIjpyZXR1cm4gdGhpcy5fcHVzaE51bWJlcih0KTtjYXNlXCJiaWdpbnRcIjpyZXR1cm4gdGhpcy5fcHVzaEpTQmlnaW50KHQpO2Nhc2VcInN0cmluZ1wiOnJldHVybiB0aGlzLl9wdXNoU3RyaW5nKHQpO2Nhc2VcImJvb2xlYW5cIjpyZXR1cm4gdGhpcy5fcHVzaEJvb2xlYW4odCk7Y2FzZVwidW5kZWZpbmVkXCI6cmV0dXJuIHRoaXMuX3B1c2hVbmRlZmluZWQodCk7Y2FzZVwib2JqZWN0XCI6cmV0dXJuIHRoaXMuX3B1c2hPYmplY3QodCk7Y2FzZVwic3ltYm9sXCI6c3dpdGNoKHQpe2Nhc2UgZi5OVUxMOnJldHVybiB0aGlzLl9wdXNoTnVsbChudWxsKTtjYXNlIGYuVU5ERUZJTkVEOnJldHVybiB0aGlzLl9wdXNoVW5kZWZpbmVkKHZvaWQgMCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHN5bWJvbDogXCIrdC50b1N0cmluZygpKX1kZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIlVua25vd24gdHlwZTogXCIrdHlwZW9mIHQrXCIsIFwiKyh0LnRvU3RyaW5nP3QudG9TdHJpbmcoKTpcIlwiKSl9fV9wdXNoQW55KHQpe3JldHVybiB0aGlzLnB1c2hBbnkodCl9X2VuY29kZUFsbCh0KXtjb25zdCBlPW5ldyBpKHtoaWdoV2F0ZXJNYXJrOnRoaXMucmVhZGFibGVIaWdoV2F0ZXJNYXJrfSk7dGhpcy5waXBlKGUpO2Zvcihjb25zdCBlIG9mIHQpdGhpcy5wdXNoQW55KGUpO3JldHVybiB0aGlzLmVuZCgpLGUucmVhZCgpfXN0YXRpYyBlbmNvZGVJbmRlZmluaXRlKHQsZSxyPXt9KXtpZihudWxsPT1lKXtpZihudWxsPT10aGlzKXRocm93IG5ldyBFcnJvcihcIk5vIG9iamVjdCB0byBlbmNvZGVcIik7ZT10aGlzfWNvbnN0e2NodW5rU2l6ZTpuPTQwOTZ9PXI7bGV0IGk9ITA7Y29uc3Qgcz10eXBlb2YgZTtsZXQgbD1udWxsO2lmKFwic3RyaW5nXCI9PT1zKXtpPWkmJnQuX3B1c2hVSW50OChhLlVURjhfU1RSSU5HPDw1fHUuSU5ERUZJTklURSk7bGV0IHI9MDtmb3IoO3I8ZS5sZW5ndGg7KXtjb25zdCBvPXIrbjtpPWkmJnQuX3B1c2hTdHJpbmcoZS5zbGljZShyLG8pKSxyPW99aT1pJiZ0LnB1c2godil9ZWxzZSBpZihsPW8uYnVmZmVyaXNoVG9CdWZmZXIoZSkpe2k9aSYmdC5fcHVzaFVJbnQ4KGEuQllURV9TVFJJTkc8PDV8dS5JTkRFRklOSVRFKTtsZXQgZT0wO2Zvcig7ZTxsLmxlbmd0aDspe2NvbnN0IHI9ZStuO2k9aSYmdC5fcHVzaEJ1ZmZlcih0LGwuc2xpY2UoZSxyKSksZT1yfWk9aSYmdC5wdXNoKHYpfWVsc2UgaWYoQXJyYXkuaXNBcnJheShlKSlpPWkmJnQuX3B1c2hBcnJheSh0LGUse2luZGVmaW5pdGU6ITB9KTtlbHNlIGlmKGUgaW5zdGFuY2VvZiBNYXApaT1pJiZ0Ll9wdXNoTWFwKHQsZSx7aW5kZWZpbml0ZTohMH0pO2Vsc2V7aWYoXCJvYmplY3RcIiE9PXMpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbmRlZmluaXRlIGVuY29kaW5nXCIpO2k9aSYmdC5fcHVzaE9iamVjdChlLHtpbmRlZmluaXRlOiEwLHNraXBUeXBlczohMH0pfXJldHVybiBpfXN0YXRpYyBlbmNvZGUoLi4udCl7cmV0dXJuKG5ldyBCKS5fZW5jb2RlQWxsKHQpfXN0YXRpYyBlbmNvZGVDYW5vbmljYWwoLi4udCl7cmV0dXJuIG5ldyBCKHtjYW5vbmljYWw6ITB9KS5fZW5jb2RlQWxsKHQpfXN0YXRpYyBlbmNvZGVPbmUodCxlKXtyZXR1cm4gbmV3IEIoZSkuX2VuY29kZUFsbChbdF0pfXN0YXRpYyBlbmNvZGVBc3luYyh0LGUpe3JldHVybiBuZXcgUHJvbWlzZSgoKHIsbik9Pntjb25zdCBpPVtdLG89bmV3IEIoZSk7by5vbihcImRhdGFcIiwodD0+aS5wdXNoKHQpKSksby5vbihcImVycm9yXCIsbiksby5vbihcImZpbmlzaFwiLCgoKT0+cihkLmNvbmNhdChpKSkpKSxvLnB1c2hBbnkodCksby5lbmQoKX0pKX19dC5leHBvcnRzPUJ9LDcwOih0LGUscik9PntcInVzZSBzdHJpY3RcIjtjb25zdHtCdWZmZXI6bn09cig3NjQpLGk9cig2NjYpLG89cig3NzQpLHtNVDpzfT1yKDY2KTtjbGFzcyBhIGV4dGVuZHMgTWFwe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfXN0YXRpYyBfZW5jb2RlKHQpe3JldHVybiBpLmVuY29kZUNhbm9uaWNhbCh0KS50b1N0cmluZyhcImJhc2U2NFwiKX1zdGF0aWMgX2RlY29kZSh0KXtyZXR1cm4gby5kZWNvZGVGaXJzdFN5bmModCxcImJhc2U2NFwiKX1nZXQodCl7cmV0dXJuIHN1cGVyLmdldChhLl9lbmNvZGUodCkpfXNldCh0LGUpe3JldHVybiBzdXBlci5zZXQoYS5fZW5jb2RlKHQpLGUpfWRlbGV0ZSh0KXtyZXR1cm4gc3VwZXIuZGVsZXRlKGEuX2VuY29kZSh0KSl9aGFzKHQpe3JldHVybiBzdXBlci5oYXMoYS5fZW5jb2RlKHQpKX0qa2V5cygpe2Zvcihjb25zdCB0IG9mIHN1cGVyLmtleXMoKSl5aWVsZCBhLl9kZWNvZGUodCl9KmVudHJpZXMoKXtmb3IoY29uc3QgdCBvZiBzdXBlci5lbnRyaWVzKCkpeWllbGRbYS5fZGVjb2RlKHRbMF0pLHRbMV1dfVtTeW1ib2wuaXRlcmF0b3JdKCl7cmV0dXJuIHRoaXMuZW50cmllcygpfWZvckVhY2godCxlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJNdXN0IGJlIGZ1bmN0aW9uXCIpO2Zvcihjb25zdCBlIG9mIHN1cGVyLmVudHJpZXMoKSl0LmNhbGwodGhpcyxlWzFdLGEuX2RlY29kZShlWzBdKSx0aGlzKX1lbmNvZGVDQk9SKHQpe2lmKCF0Ll9wdXNoSW50KHRoaXMuc2l6ZSxzLk1BUCkpcmV0dXJuITE7aWYodC5jYW5vbmljYWwpe2NvbnN0IGU9QXJyYXkuZnJvbShzdXBlci5lbnRyaWVzKCkpLm1hcCgodD0+W24uZnJvbSh0WzBdLFwiYmFzZTY0XCIpLHRbMV1dKSk7ZS5zb3J0KCgodCxlKT0+dFswXS5jb21wYXJlKGVbMF0pKSk7Zm9yKGNvbnN0IHIgb2YgZSlpZighdC5wdXNoKHJbMF0pfHwhdC5wdXNoQW55KHJbMV0pKXJldHVybiExfWVsc2UgZm9yKGNvbnN0IGUgb2Ygc3VwZXIuZW50cmllcygpKWlmKCF0LnB1c2gobi5mcm9tKGVbMF0sXCJiYXNlNjRcIikpfHwhdC5wdXNoQW55KGVbMV0pKXJldHVybiExO3JldHVybiEwfX10LmV4cG9ydHM9YX0sMzI6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0e01UOm4sU0lNUExFOmksU1lNUzpvfT1yKDY2KTtjbGFzcyBze2NvbnN0cnVjdG9yKHQpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0KXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgU2ltcGxlIHR5cGU6IFwiK3R5cGVvZiB0KTtpZih0PDB8fHQ+MjU1fHwoMHx0KSE9PXQpdGhyb3cgbmV3IEVycm9yKFwidmFsdWUgbXVzdCBiZSBhIHNtYWxsIHBvc2l0aXZlIGludGVnZXI6IFwiK3QpO3RoaXMudmFsdWU9dH10b1N0cmluZygpe3JldHVyblwic2ltcGxlKFwiK3RoaXMudmFsdWUrXCIpXCJ9aW5zcGVjdCh0LGUpe3JldHVyblwic2ltcGxlKFwiK3RoaXMudmFsdWUrXCIpXCJ9ZW5jb2RlQ0JPUih0KXtyZXR1cm4gdC5fcHVzaEludCh0aGlzLnZhbHVlLG4uU0lNUExFX0ZMT0FUKX1zdGF0aWMgaXNTaW1wbGUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBzfXN0YXRpYyBkZWNvZGUodCxlPSEwLHI9ITEpe3N3aXRjaCh0KXtjYXNlIGkuRkFMU0U6cmV0dXJuITE7Y2FzZSBpLlRSVUU6cmV0dXJuITA7Y2FzZSBpLk5VTEw6cmV0dXJuIGU/bnVsbDpvLk5VTEw7Y2FzZSBpLlVOREVGSU5FRDppZihlKXJldHVybjtyZXR1cm4gby5VTkRFRklORUQ7Y2FzZS0xOmlmKCFlfHwhcil0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEJSRUFLXCIpO3JldHVybiBvLkJSRUFLO2RlZmF1bHQ6cmV0dXJuIG5ldyBzKHQpfX19dC5leHBvcnRzPXN9LDc4NToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7Y29uc3Qgbj1yKDY2KSxpPXIoODczKTtmdW5jdGlvbiBvKHQsZSl7aWYoaS5pc0J1ZmZlcmlzaCh0KSl0LnRvSlNPTj1lO2Vsc2UgaWYoQXJyYXkuaXNBcnJheSh0KSlmb3IoY29uc3QgciBvZiB0KW8ocixlKTtlbHNlIGlmKHQmJlwib2JqZWN0XCI9PXR5cGVvZiB0JiYoISh0IGluc3RhbmNlb2YgdSl8fHQudGFnPDIxfHx0LnRhZz4yMykpZm9yKGNvbnN0IHIgb2YgT2JqZWN0LnZhbHVlcyh0KSlvKHIsZSl9Y29uc3Qgcz17NjQ6VWludDhBcnJheSw2NTpVaW50MTZBcnJheSw2NjpVaW50MzJBcnJheSw2ODpVaW50OENsYW1wZWRBcnJheSw2OTpVaW50MTZBcnJheSw3MDpVaW50MzJBcnJheSw3MjpJbnQ4QXJyYXksNzM6SW50MTZBcnJheSw3NDpJbnQzMkFycmF5LDc3OkludDE2QXJyYXksNzg6SW50MzJBcnJheSw4MTpGbG9hdDMyQXJyYXksODI6RmxvYXQ2NEFycmF5LDg1OkZsb2F0MzJBcnJheSw4NjpGbG9hdDY0QXJyYXl9O1widW5kZWZpbmVkXCIhPXR5cGVvZiBCaWdVaW50NjRBcnJheSYmKHNbNjddPUJpZ1VpbnQ2NEFycmF5LHNbNzFdPUJpZ1VpbnQ2NEFycmF5KSxcInVuZGVmaW5lZFwiIT10eXBlb2YgQmlnSW50NjRBcnJheSYmKHNbNzVdPUJpZ0ludDY0QXJyYXksc1s3OV09QmlnSW50NjRBcnJheSk7Y29uc3QgYT1TeW1ib2woXCJJTlRFUk5BTF9KU09OXCIpO2NsYXNzIHV7Y29uc3RydWN0b3IodCxlLHIpe2lmKHRoaXMudGFnPXQsdGhpcy52YWx1ZT1lLHRoaXMuZXJyPXIsXCJudW1iZXJcIiE9dHlwZW9mIHRoaXMudGFnKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdGFnIHR5cGUgKFwiK3R5cGVvZiB0aGlzLnRhZytcIilcIik7aWYodGhpcy50YWc8MHx8KDB8dGhpcy50YWcpIT09dGhpcy50YWcpdGhyb3cgbmV3IEVycm9yKFwiVGFnIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyOiBcIit0aGlzLnRhZyl9dG9KU09OKCl7aWYodGhpc1thXSlyZXR1cm4gdGhpc1thXSgpO2NvbnN0IHQ9e3RhZzp0aGlzLnRhZyx2YWx1ZTp0aGlzLnZhbHVlfTtyZXR1cm4gdGhpcy5lcnImJih0LmVycj10aGlzLmVyciksdH10b1N0cmluZygpe3JldHVybmAke3RoaXMudGFnfSgke0pTT04uc3RyaW5naWZ5KHRoaXMudmFsdWUpfSlgfWVuY29kZUNCT1IodCl7cmV0dXJuIHQuX3B1c2hUYWcodGhpcy50YWcpLHQucHVzaEFueSh0aGlzLnZhbHVlKX1jb252ZXJ0KHQpe2xldCBlPW51bGwhPXQ/dFt0aGlzLnRhZ106dm9pZCAwO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJihlPXVbXCJfdGFnX1wiK3RoaXMudGFnXSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKSl7aWYoZT1zW3RoaXMudGFnXSxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXJldHVybiB0aGlzO2U9dGhpcy5fdG9UeXBlZEFycmF5fXRyeXtyZXR1cm4gZS5jYWxsKHRoaXMsdGhpcy52YWx1ZSl9Y2F0Y2godCl7cmV0dXJuIHQmJnQubWVzc2FnZSYmdC5tZXNzYWdlLmxlbmd0aD4wP3RoaXMuZXJyPXQubWVzc2FnZTp0aGlzLmVycj10LHRoaXN9fV90b1R5cGVkQXJyYXkodCl7Y29uc3R7dGFnOmV9PXRoaXMscj1zW2VdO2lmKCFyKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0eXBlZCBhcnJheSB0YWc6ICR7ZX1gKTtjb25zdCBuPTIqKigoKDE2JmUpPj40KSsoMyZlKSk7cmV0dXJuISg0JmUpIT09aS5pc0JpZ0VuZGlhbigpJiZuPjEmJmZ1bmN0aW9uKHQsZSxyLG4pe2NvbnN0IGk9bmV3IERhdGFWaWV3KHQpLFtvLHNdPXsyOltpLmdldFVpbnQxNixpLnNldFVpbnQxNl0sNDpbaS5nZXRVaW50MzIsaS5zZXRVaW50MzJdLDg6W2kuZ2V0QmlnVWludDY0LGkuc2V0QmlnVWludDY0XX1bZV0sYT1yK247Zm9yKGxldCB0PXI7dDxhO3QrPWUpcy5jYWxsKGksdCxvLmNhbGwoaSx0LCEwKSl9KHQuYnVmZmVyLG4sdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCksbmV3IHIodC5idWZmZXIuc2xpY2UodC5ieXRlT2Zmc2V0LHQuYnl0ZU9mZnNldCt0LmJ5dGVMZW5ndGgpKX1zdGF0aWMgX3RhZ18wKHQpe3JldHVybiBuZXcgRGF0ZSh0KX1zdGF0aWMgX3RhZ18xKHQpe3JldHVybiBuZXcgRGF0ZSgxZTMqdCl9c3RhdGljIF90YWdfMih0KXtyZXR1cm4gaS5idWZmZXJUb0JpZ251bWJlcih0KX1zdGF0aWMgX3RhZ18zKHQpe2NvbnN0IGU9aS5idWZmZXJUb0JpZ251bWJlcih0KTtyZXR1cm4gbi5CTi5NSU5VU19PTkUubWludXMoZSl9c3RhdGljIF90YWdfNCh0KXtpZighbi5CaWdOdW1iZXIpdGhyb3cgbmV3IEVycm9yKFwiTm8gYmlnbnVtYmVyLmpzXCIpO3JldHVybiBuZXcgbi5CaWdOdW1iZXIodFsxXSkuc2hpZnRlZEJ5KHRbMF0pfXN0YXRpYyBfdGFnXzUodCl7aWYoIW4uQmlnTnVtYmVyKXRocm93IG5ldyBFcnJvcihcIk5vIGJpZ251bWJlci5qc1wiKTtyZXR1cm4gbi5CTi5UV08ucG93KHRbMF0pLnRpbWVzKHRbMV0pfXN0YXRpYyBfdGFnXzIxKHQpe3JldHVybiBpLmlzQnVmZmVyaXNoKHQpP3RoaXNbYV09KCk9PmkuYmFzZTY0dXJsKHQpOm8odCwoZnVuY3Rpb24oKXtyZXR1cm4gaS5iYXNlNjR1cmwodGhpcyl9KSksdGhpc31zdGF0aWMgX3RhZ18yMih0KXtyZXR1cm4gaS5pc0J1ZmZlcmlzaCh0KT90aGlzW2FdPSgpPT5pLmJhc2U2NCh0KTpvKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIGkuYmFzZTY0KHRoaXMpfSkpLHRoaXN9c3RhdGljIF90YWdfMjModCl7cmV0dXJuIGkuaXNCdWZmZXJpc2godCk/dGhpc1thXT0oKT0+dC50b1N0cmluZyhcImhleFwiKTpvKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9TdHJpbmcoXCJoZXhcIil9KSksdGhpc31zdGF0aWMgX3RhZ18zMih0KXtyZXR1cm4gbmV3IFVSTCh0KX1zdGF0aWMgX3RhZ18zMyh0KXtpZighdC5tYXRjaCgvXlthLXpBLVowLTlfLV0rJC8pKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0dXJsIGNoYXJhY3RlcnNcIik7Y29uc3QgZT10Lmxlbmd0aCU0O2lmKDE9PT1lKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0dXJsIGxlbmd0aFwiKTtpZigyPT09ZSl7aWYoLTE9PT1cIkFRZ3dcIi5pbmRleE9mKHRbdC5sZW5ndGgtMV0pKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0IHBhZGRpbmdcIil9ZWxzZSBpZigzPT09ZSYmLTE9PT1cIkFFSU1RVVljZ2tvc3cwNDhcIi5pbmRleE9mKHRbdC5sZW5ndGgtMV0pKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0IHBhZGRpbmdcIik7cmV0dXJuIHRoaXN9c3RhdGljIF90YWdfMzQodCl7Y29uc3QgZT10Lm1hdGNoKC9eW2EtekEtWjAtOSsvXSsoPXswLDJ9KSQvKTtpZighZSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NHVybCBjaGFyYWN0ZXJzXCIpO2lmKHQubGVuZ3RoJTQhPTApdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBiYXNlNjR1cmwgbGVuZ3RoXCIpO2lmKFwiPVwiPT09ZVsxXSl7aWYoLTE9PT1cIkFRZ3dcIi5pbmRleE9mKHRbdC5sZW5ndGgtMl0pKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0IHBhZGRpbmdcIil9ZWxzZSBpZihcIj09XCI9PT1lWzFdJiYtMT09PVwiQUVJTVFVWWNna29zdzA0OFwiLmluZGV4T2YodFt0Lmxlbmd0aC0zXSkpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBiYXNlNjQgcGFkZGluZ1wiKTtyZXR1cm4gdGhpc31zdGF0aWMgX3RhZ18zNSh0KXtyZXR1cm4gbmV3IFJlZ0V4cCh0KX1zdGF0aWMgX3RhZ18yNTgodCl7cmV0dXJuIG5ldyBTZXQodCl9fXUuSU5URVJOQUxfSlNPTj1hLHQuZXhwb3J0cz11fSw4NzM6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0e0J1ZmZlcjpufT1yKDc2NCksaT1yKDIwMiksbz1yKDgzMCkscz1yKDk2MCksYT1yKDY2KSx7TlVNQllURVM6dSxTSElGVDMyOmwsQkk6YyxTWU1TOmZ9PWE7bGV0IGg9bnVsbDt0cnl7aD1yKDY2OSl9Y2F0Y2godCl7aD1yKDU5NSl9ZS5pbnNwZWN0PWguaW5zcGVjdDtjb25zdCBwPW5ldyBzKFwidXRmOFwiLHtmYXRhbDohMCxpZ25vcmVCT006ITB9KTtlLnV0Zjg9dD0+cC5kZWNvZGUodCksZS51dGY4LmNoZWNrc1VURjg9ITAsZS5pc0J1ZmZlcmlzaD1mdW5jdGlvbih0KXtyZXR1cm4gdCYmXCJvYmplY3RcIj09dHlwZW9mIHQmJihuLmlzQnVmZmVyKHQpfHx0IGluc3RhbmNlb2YgVWludDhBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHx0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fHQgaW5zdGFuY2VvZiBEYXRhVmlldyl9LGUuYnVmZmVyaXNoVG9CdWZmZXI9ZnVuY3Rpb24odCl7cmV0dXJuIG4uaXNCdWZmZXIodCk/dDpBcnJheUJ1ZmZlci5pc1ZpZXcodCk/bi5mcm9tKHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpOnQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcj9uLmZyb20odCk6bnVsbH0sZS5wYXJzZUNCT1JpbnQ9ZnVuY3Rpb24odCxlLHI9ITApe3N3aXRjaCh0KXtjYXNlIHUuT05FOnJldHVybiBlLnJlYWRVSW50OCgwKTtjYXNlIHUuVFdPOnJldHVybiBlLnJlYWRVSW50MTZCRSgwKTtjYXNlIHUuRk9VUjpyZXR1cm4gZS5yZWFkVUludDMyQkUoMCk7Y2FzZSB1LkVJR0hUOntjb25zdCB0PWUucmVhZFVJbnQzMkJFKDApLG49ZS5yZWFkVUludDMyQkUoNCk7aWYodD4yMDk3MTUxKXtpZihyKXJldHVybiBCaWdJbnQodCkqYy5TSElGVDMyK0JpZ0ludChuKTtpZighYS5CaWdOdW1iZXIpdGhyb3cgbmV3IEVycm9yKFwiTm8gYmlnaW50IGFuZCBubyBiaWdudW1iZXIuanNcIik7cmV0dXJuIG5ldyBhLkJpZ051bWJlcih0KS50aW1lcyhsKS5wbHVzKG4pfXJldHVybiB0Kmwrbn1kZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYWRkaXRpb25hbCBpbmZvIGZvciBpbnQ6IFwiK3QpfX0sZS53cml0ZUhhbGY9ZnVuY3Rpb24odCxlKXtjb25zdCByPW4uYWxsb2NVbnNhZmUoNCk7ci53cml0ZUZsb2F0QkUoZSwwKTtjb25zdCBpPXIucmVhZFVJbnQzMkJFKDApO2lmKDAhPSg4MTkxJmkpKXJldHVybiExO2xldCBvPWk+PjE2JjMyNzY4O2NvbnN0IHM9aT4+MjMmMjU1LGE9ODM4ODYwNyZpO2lmKHM+PTExMyYmczw9MTQyKW8rPShzLTExMjw8MTApKyhhPj4xMyk7ZWxzZXtpZighKHM+PTEwMyYmczwxMTMpKXJldHVybiExO2lmKGEmKDE8PDEyNi1zKS0xKXJldHVybiExO28rPWErODM4ODYwOD4+MTI2LXN9cmV0dXJuIHQud3JpdGVVSW50MTZCRShvKSwhMH0sZS5wYXJzZUhhbGY9ZnVuY3Rpb24odCl7Y29uc3QgZT0xMjgmdFswXT8tMToxLHI9KDEyNCZ0WzBdKT4+MixuPSgzJnRbMF0pPDw4fHRbMV07cmV0dXJuIHI/MzE9PT1yP2UqKG4/TmFOOkluZmluaXR5KTplKk1hdGgucG93KDIsci0yNSkqKDEwMjQrbik6NS45NjA0NjQ0Nzc1MzkwNjNlLTgqZSpufSxlLnBhcnNlQ0JPUmZsb2F0PWZ1bmN0aW9uKHQpe3N3aXRjaCh0Lmxlbmd0aCl7Y2FzZSAyOnJldHVybiBlLnBhcnNlSGFsZih0KTtjYXNlIDQ6cmV0dXJuIHQucmVhZEZsb2F0QkUoMCk7Y2FzZSA4OnJldHVybiB0LnJlYWREb3VibGVCRSgwKTtkZWZhdWx0OnRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZmxvYXQgc2l6ZTogXCIrdC5sZW5ndGgpfX0sZS5oZXg9ZnVuY3Rpb24odCl7cmV0dXJuIG4uZnJvbSh0LnJlcGxhY2UoL14weC8sXCJcIiksXCJoZXhcIil9LGUuYmluPWZ1bmN0aW9uKHQpe2xldCBlPTAscj0odD10LnJlcGxhY2UoL1xccy9nLFwiXCIpKS5sZW5ndGglOHx8ODtjb25zdCBpPVtdO2Zvcig7cjw9dC5sZW5ndGg7KWkucHVzaChwYXJzZUludCh0LnNsaWNlKGUsciksMikpLGU9cixyKz04O3JldHVybiBuLmZyb20oaSl9LGUuYXJyYXlFcXVhbD1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsPT10JiZudWxsPT1lfHxudWxsIT10JiZudWxsIT1lJiZ0Lmxlbmd0aD09PWUubGVuZ3RoJiZ0LmV2ZXJ5KCgodCxyKT0+dD09PWVbcl0pKX0sZS5idWZmZXJUb0JpZ251bWJlcj1mdW5jdGlvbih0KXtpZighYS5CaWdOdW1iZXIpdGhyb3cgbmV3IEVycm9yKFwiTm8gYmlnaW50IGFuZCBubyBiaWdudW1iZXIuanNcIik7cmV0dXJuIG5ldyBhLkJpZ051bWJlcih0LnRvU3RyaW5nKFwiaGV4XCIpLDE2KX0sZS5idWZmZXJUb0JpZ0ludD1mdW5jdGlvbih0KXtyZXR1cm4gQmlnSW50KFwiMHhcIit0LnRvU3RyaW5nKFwiaGV4XCIpKX0sZS5jYm9yVmFsdWVUb1N0cmluZz1mdW5jdGlvbih0LHI9LTEpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZVwic3ltYm9sXCI6e3N3aXRjaCh0KXtjYXNlIGYuTlVMTDpyZXR1cm5cIm51bGxcIjtjYXNlIGYuVU5ERUZJTkVEOnJldHVyblwidW5kZWZpbmVkXCI7Y2FzZSBmLkJSRUFLOnJldHVyblwiQlJFQUtcIn1pZih0LmRlc2NyaXB0aW9uKXJldHVybiB0LmRlc2NyaXB0aW9uO2NvbnN0IGU9dC50b1N0cmluZygpLm1hdGNoKC9eU3ltYm9sXFwoKC4qKVxcKS8pO3JldHVybiBlJiZlWzFdP2VbMV06XCJTeW1ib2xcIn1jYXNlXCJzdHJpbmdcIjpyZXR1cm4gSlNPTi5zdHJpbmdpZnkodCk7Y2FzZVwiYmlnaW50XCI6cmV0dXJuIHQudG9TdHJpbmcoKTtjYXNlXCJudW1iZXJcIjpyZXR1cm4gcj4wP2guaW5zcGVjdCh0KStcIl9cIityOmguaW5zcGVjdCh0KX1jb25zdCBuPWUuYnVmZmVyaXNoVG9CdWZmZXIodCk7aWYobil7Y29uc3QgdD1uLnRvU3RyaW5nKFwiaGV4XCIpO3JldHVybiByPT09LTEvMD90OmBoJyR7dH0nYH1yZXR1cm4gYS5CaWdOdW1iZXImJmEuQmlnTnVtYmVyLmlzQmlnTnVtYmVyKHQpP3QudG9TdHJpbmcoKTp0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0Lmluc3BlY3Q/dC5pbnNwZWN0KCk6aC5pbnNwZWN0KHQpfSxlLmd1ZXNzRW5jb2Rpbmc9ZnVuY3Rpb24odCxyKXtpZihcInN0cmluZ1wiPT10eXBlb2YgdClyZXR1cm4gbmV3IGkodCxudWxsIT1yP3I6XCJoZXhcIik7Y29uc3Qgbj1lLmJ1ZmZlcmlzaFRvQnVmZmVyKHQpO2lmKG4pcmV0dXJuIG5ldyBpKG4pO2lmKChzPXQpaW5zdGFuY2VvZiBvLlJlYWRhYmxlfHxbXCJyZWFkXCIsXCJvblwiLFwicGlwZVwiXS5ldmVyeSgodD0+XCJmdW5jdGlvblwiPT10eXBlb2Ygc1t0XSkpKXJldHVybiB0O3ZhciBzO3Rocm93IG5ldyBFcnJvcihcIlVua25vd24gaW5wdXQgdHlwZVwiKX07Y29uc3QgZD17XCI9XCI6XCJcIixcIitcIjpcIi1cIixcIi9cIjpcIl9cIn07ZS5iYXNlNjR1cmw9ZnVuY3Rpb24odCl7cmV0dXJuIGUuYnVmZmVyaXNoVG9CdWZmZXIodCkudG9TdHJpbmcoXCJiYXNlNjRcIikucmVwbGFjZSgvWz0rL10vZywodD0+ZFt0XSkpfSxlLmJhc2U2ND1mdW5jdGlvbih0KXtyZXR1cm4gZS5idWZmZXJpc2hUb0J1ZmZlcih0KS50b1N0cmluZyhcImJhc2U2NFwiKX0sZS5pc0JpZ0VuZGlhbj1mdW5jdGlvbigpe2NvbnN0IHQ9bmV3IFVpbnQ4QXJyYXkoNCk7cmV0dXJuISgobmV3IFVpbnQzMkFycmF5KHQuYnVmZmVyKVswXT0xKSZ0WzBdKX19LDk2MDoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7bGV0IG49bnVsbDtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBUZXh0RGVjb2RlciluPVRleHREZWNvZGVyO2Vsc2UgaWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyluPXdpbmRvdy5UZXh0RGVjb2RlcjtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmKW49c2VsZi5UZXh0RGVjb2RlcjtlbHNlIHRyeXtjb25zdCB0PXIoNjY5KTtcImZ1bmN0aW9uXCIhPXR5cGVvZiBuJiYobj10LlRleHREZWNvZGVyKX1jYXRjaCh0KXt9aWYoXCJmdW5jdGlvblwiIT10eXBlb2Ygbil7Y2xhc3MgdHtjb25zdHJ1Y3Rvcih0LGUpe3RoaXMudXRmTGFiZWw9dCx0aGlzLm9wdGlvbnM9ZX1kZWNvZGUodCl7Y29uc3QgZT10LnRvU3RyaW5nKHRoaXMudXRmTGFiZWwpO2lmKHRoaXMub3B0aW9ucy5mYXRhbClmb3IoY29uc3QgdCBvZiBlKWlmKDY1NTMzPT09dC5jb2RlUG9pbnRBdCgwKSl7Y29uc3QgdD1uZXcgVHlwZUVycm9yKFwiW0VSUl9FTkNPRElOR19JTlZBTElEX0VOQ09ERURfREFUQV06IFRoZSBlbmNvZGVkIGRhdGEgd2FzIG5vdCB2YWxpZCBmb3IgZW5jb2RpbmcgXCIrdGhpcy51dGZMYWJlbCk7dGhyb3cgdC5jb2RlPVwiRVJSX0VOQ09ESU5HX0lOVkFMSURfRU5DT0RFRF9EQVRBXCIsdC5lcnJubz0xMix0fXJldHVybiBlfX1uPXR9dC5leHBvcnRzPW59LDIwMjoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7Y29uc3Qgbj1yKDgzMCkse0J1ZmZlcjppfT1yKDc2NCksbz1yKDk2MCk7bGV0IHM9bnVsbCxhPVN5bWJvbC5mb3IoXCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbVwiKTt0cnl7cz1yKDY2OSksYT1zLmluc3BlY3QuY3VzdG9tfWNhdGNoKHQpe31jb25zdCB1PW5ldyBvKFwidXRmOFwiLHtmYXRhbDohMCxpZ25vcmVCT006ITB9KTtjbGFzcyBsIGV4dGVuZHMgbi5UcmFuc2Zvcm17Y29uc3RydWN0b3IodCxlLHIpe251bGw9PXImJihyPXt9KTtsZXQgbj1udWxsLG89bnVsbDtzd2l0Y2godHlwZW9mIHQpe2Nhc2VcIm9iamVjdFwiOmkuaXNCdWZmZXIodCk/KG49dCxudWxsIT1lJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmKHI9ZSkpOnI9dDticmVhaztjYXNlXCJzdHJpbmdcIjpuPXQsbnVsbCE9ZSYmXCJvYmplY3RcIj09dHlwZW9mIGU/cj1lOm89ZX1udWxsPT1yJiYocj17fSksbnVsbD09biYmKG49ci5pbnB1dCksbnVsbD09byYmKG89ci5pbnB1dEVuY29kaW5nKSxkZWxldGUgci5pbnB1dCxkZWxldGUgci5pbnB1dEVuY29kaW5nO2NvbnN0IHM9bnVsbD09ci53YXRjaFBpcGV8fHIud2F0Y2hQaXBlO2RlbGV0ZSByLndhdGNoUGlwZTtjb25zdCBhPSEhci5yZWFkRXJyb3I7ZGVsZXRlIHIucmVhZEVycm9yLHN1cGVyKHIpLHRoaXMucmVhZEVycm9yPWEscyYmdGhpcy5vbihcInBpcGVcIiwodD0+e2NvbnN0IGU9dC5fcmVhZGFibGVTdGF0ZS5vYmplY3RNb2RlO2lmKHRoaXMubGVuZ3RoPjAmJmUhPT10aGlzLl9yZWFkYWJsZVN0YXRlLm9iamVjdE1vZGUpdGhyb3cgbmV3IEVycm9yKFwiRG8gbm90IHN3aXRjaCBvYmplY3RNb2RlIGluIHRoZSBtaWRkbGUgb2YgdGhlIHN0cmVhbVwiKTt0aGlzLl9yZWFkYWJsZVN0YXRlLm9iamVjdE1vZGU9ZSx0aGlzLl93cml0YWJsZVN0YXRlLm9iamVjdE1vZGU9ZX0pKSxudWxsIT1uJiZ0aGlzLmVuZChuLG8pfXN0YXRpYyBpc05vRmlsdGVyKHQpe3JldHVybiB0IGluc3RhbmNlb2YgdGhpc31zdGF0aWMgY29tcGFyZSh0LGUpe2lmKCEodCBpbnN0YW5jZW9mIHRoaXMpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudHMgbXVzdCBiZSBOb0ZpbHRlcnNcIik7cmV0dXJuIHQ9PT1lPzA6dC5jb21wYXJlKGUpfXN0YXRpYyBjb25jYXQodCxlKXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwibGlzdCBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIE5vRmlsdGVyc1wiKTtpZigwPT09dC5sZW5ndGh8fDA9PT1lKXJldHVybiBpLmFsbG9jKDApO251bGw9PWUmJihlPXQucmVkdWNlKCgodCxlKT0+e2lmKCEoZSBpbnN0YW5jZW9mIGwpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJsaXN0IGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgTm9GaWx0ZXJzXCIpO3JldHVybiB0K2UubGVuZ3RofSksMCkpO2xldCByPSEwLG49ITA7Y29uc3Qgbz10Lm1hcCgodD0+e2lmKCEodCBpbnN0YW5jZW9mIGwpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJsaXN0IGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgTm9GaWx0ZXJzXCIpO2NvbnN0IGU9dC5zbGljZSgpO3JldHVybiBpLmlzQnVmZmVyKGUpP249ITE6cj0hMSxlfSkpO2lmKHIpcmV0dXJuIGkuY29uY2F0KG8sZSk7aWYobilyZXR1cm5bXS5jb25jYXQoLi4ubykuc2xpY2UoMCxlKTt0aHJvdyBuZXcgRXJyb3IoXCJDb25jYXRlbmF0aW5nIG1peGVkIG9iamVjdCBhbmQgYnl0ZSBzdHJlYW1zIG5vdCBzdXBwb3J0ZWRcIil9X3RyYW5zZm9ybSh0LGUscil7dGhpcy5fcmVhZGFibGVTdGF0ZS5vYmplY3RNb2RlfHxpLmlzQnVmZmVyKHQpfHwodD1pLmZyb20odCxlKSksdGhpcy5wdXNoKHQpLHIoKX1fYnVmQXJyYXkoKXtsZXQgdD10aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlcjtpZighQXJyYXkuaXNBcnJheSh0KSl7bGV0IGU9dC5oZWFkO2Zvcih0PVtdO251bGwhPWU7KXQucHVzaChlLmRhdGEpLGU9ZS5uZXh0fXJldHVybiB0fXJlYWQodCl7Y29uc3QgZT1zdXBlci5yZWFkKHQpO2lmKG51bGwhPWUpe2lmKHRoaXMuZW1pdChcInJlYWRcIixlKSx0aGlzLnJlYWRFcnJvciYmZS5sZW5ndGg8dCl0aHJvdyBuZXcgRXJyb3IoYFJlYWQgJHtlLmxlbmd0aH0sIHdhbnRlZCAke3R9YCl9ZWxzZSBpZih0aGlzLnJlYWRFcnJvcil0aHJvdyBuZXcgRXJyb3IoYE5vIGRhdGEgYXZhaWxhYmxlLCB3YW50ZWQgJHt0fWApO3JldHVybiBlfXByb21pc2UodCl7bGV0IGU9ITE7cmV0dXJuIG5ldyBQcm9taXNlKCgocixuKT0+e3RoaXMub24oXCJmaW5pc2hcIiwoKCk9Pntjb25zdCBuPXRoaXMucmVhZCgpO251bGw9PXR8fGV8fChlPSEwLHQobnVsbCxuKSkscihuKX0pKSx0aGlzLm9uKFwiZXJyb3JcIiwocj0+e251bGw9PXR8fGV8fChlPSEwLHQocikpLG4ocil9KSl9KSl9Y29tcGFyZSh0KXtpZighKHQgaW5zdGFuY2VvZiBsKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnRzIG11c3QgYmUgTm9GaWx0ZXJzXCIpO2lmKHRoaXM9PT10KXJldHVybiAwO2NvbnN0IGU9dGhpcy5zbGljZSgpLHI9dC5zbGljZSgpO2lmKGkuaXNCdWZmZXIoZSkmJmkuaXNCdWZmZXIocikpcmV0dXJuIGUuY29tcGFyZShyKTt0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY29tcGFyZSBzdHJlYW1zIGluIG9iamVjdCBtb2RlXCIpfWVxdWFscyh0KXtyZXR1cm4gMD09PXRoaXMuY29tcGFyZSh0KX1zbGljZSh0LGUpe2lmKHRoaXMuX3JlYWRhYmxlU3RhdGUub2JqZWN0TW9kZSlyZXR1cm4gdGhpcy5fYnVmQXJyYXkoKS5zbGljZSh0LGUpO2NvbnN0IHI9dGhpcy5fYnVmQXJyYXkoKTtzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gaS5hbGxvYygwKTtjYXNlIDE6cmV0dXJuIHJbMF0uc2xpY2UodCxlKTtkZWZhdWx0OnJldHVybiBpLmNvbmNhdChyKS5zbGljZSh0LGUpfX1nZXQodCl7cmV0dXJuIHRoaXMuc2xpY2UoKVt0XX10b0pTT04oKXtjb25zdCB0PXRoaXMuc2xpY2UoKTtyZXR1cm4gaS5pc0J1ZmZlcih0KT90LnRvSlNPTigpOnR9dG9TdHJpbmcodCxlLHIpe2NvbnN0IG49dGhpcy5zbGljZShlLHIpO3JldHVybiBpLmlzQnVmZmVyKG4pP3QmJlwidXRmOFwiIT09dD9uLnRvU3RyaW5nKHQsZSxyKTp1LmRlY29kZShuKTpKU09OLnN0cmluZ2lmeShuKX1pbnNwZWN0KHQsZSl7cmV0dXJuIHRoaXNbYV0odCxlKX1bYV0odCxlKXtjb25zdCByPXRoaXMuX2J1ZkFycmF5KCkubWFwKCh0PT5pLmlzQnVmZmVyKHQpPyhudWxsIT1lP2Uuc3R5bGl6ZTp2b2lkIDApP2Uuc3R5bGl6ZSh0LnRvU3RyaW5nKFwiaGV4XCIpLFwic3RyaW5nXCIpOnQudG9TdHJpbmcoXCJoZXhcIik6cz9zLmluc3BlY3QodCxlKTp0LnRvU3RyaW5nKCkpKS5qb2luKFwiLCBcIik7cmV0dXJuYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSBbJHtyfV1gfWdldCBsZW5ndGgoKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGh9d3JpdGVCaWdJbnQodCl7bGV0IGU9dC50b1N0cmluZygxNik7aWYodDwwKXtjb25zdCByPUJpZ0ludChNYXRoLmZsb29yKGUubGVuZ3RoLzIpKTtlPSh0PShCaWdJbnQoMSk8PHIqQmlnSW50KDgpKSt0KS50b1N0cmluZygxNil9cmV0dXJuIGUubGVuZ3RoJTImJihlPVwiMFwiK2UpLHRoaXMucHVzaChpLmZyb20oZSxcImhleFwiKSl9cmVhZFVCaWdJbnQodCl7Y29uc3QgZT10aGlzLnJlYWQodCk7cmV0dXJuIGkuaXNCdWZmZXIoZSk/QmlnSW50KFwiMHhcIitlLnRvU3RyaW5nKFwiaGV4XCIpKTpudWxsfXJlYWRCaWdJbnQodCl7Y29uc3QgZT10aGlzLnJlYWQodCk7aWYoIWkuaXNCdWZmZXIoZSkpcmV0dXJuIG51bGw7bGV0IHI9QmlnSW50KFwiMHhcIitlLnRvU3RyaW5nKFwiaGV4XCIpKTtyZXR1cm4gMTI4JmVbMF0mJihyLT1CaWdJbnQoMSk8PEJpZ0ludChlLmxlbmd0aCkqQmlnSW50KDgpKSxyfX1mdW5jdGlvbiBjKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe2NvbnN0IG49dGhpcy5yZWFkKGUpO3JldHVybiBpLmlzQnVmZmVyKG4pP25bdF0uY2FsbChuLDAsITApOm51bGx9fWZ1bmN0aW9uIGYodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7Y29uc3Qgbj1pLmFsbG9jKGUpO3JldHVybiBuW3RdLmNhbGwobixyLDAsITApLHRoaXMucHVzaChuKX19T2JqZWN0LmFzc2lnbihsLnByb3RvdHlwZSx7d3JpdGVVSW50ODpmKFwid3JpdGVVSW50OFwiLDEpLHdyaXRlVUludDE2TEU6ZihcIndyaXRlVUludDE2TEVcIiwyKSx3cml0ZVVJbnQxNkJFOmYoXCJ3cml0ZVVJbnQxNkJFXCIsMiksd3JpdGVVSW50MzJMRTpmKFwid3JpdGVVSW50MzJMRVwiLDQpLHdyaXRlVUludDMyQkU6ZihcIndyaXRlVUludDMyQkVcIiw0KSx3cml0ZUludDg6ZihcIndyaXRlSW50OFwiLDEpLHdyaXRlSW50MTZMRTpmKFwid3JpdGVJbnQxNkxFXCIsMiksd3JpdGVJbnQxNkJFOmYoXCJ3cml0ZUludDE2QkVcIiwyKSx3cml0ZUludDMyTEU6ZihcIndyaXRlSW50MzJMRVwiLDQpLHdyaXRlSW50MzJCRTpmKFwid3JpdGVJbnQzMkJFXCIsNCksd3JpdGVGbG9hdExFOmYoXCJ3cml0ZUZsb2F0TEVcIiw0KSx3cml0ZUZsb2F0QkU6ZihcIndyaXRlRmxvYXRCRVwiLDQpLHdyaXRlRG91YmxlTEU6ZihcIndyaXRlRG91YmxlTEVcIiw4KSx3cml0ZURvdWJsZUJFOmYoXCJ3cml0ZURvdWJsZUJFXCIsOCkscmVhZFVJbnQ4OmMoXCJyZWFkVUludDhcIiwxKSxyZWFkVUludDE2TEU6YyhcInJlYWRVSW50MTZMRVwiLDIpLHJlYWRVSW50MTZCRTpjKFwicmVhZFVJbnQxNkJFXCIsMikscmVhZFVJbnQzMkxFOmMoXCJyZWFkVUludDMyTEVcIiw0KSxyZWFkVUludDMyQkU6YyhcInJlYWRVSW50MzJCRVwiLDQpLHJlYWRJbnQ4OmMoXCJyZWFkSW50OFwiLDEpLHJlYWRJbnQxNkxFOmMoXCJyZWFkSW50MTZMRVwiLDIpLHJlYWRJbnQxNkJFOmMoXCJyZWFkSW50MTZCRVwiLDIpLHJlYWRJbnQzMkxFOmMoXCJyZWFkSW50MzJMRVwiLDQpLHJlYWRJbnQzMkJFOmMoXCJyZWFkSW50MzJCRVwiLDQpLHJlYWRGbG9hdExFOmMoXCJyZWFkRmxvYXRMRVwiLDQpLHJlYWRGbG9hdEJFOmMoXCJyZWFkRmxvYXRCRVwiLDQpLHJlYWREb3VibGVMRTpjKFwicmVhZERvdWJsZUxFXCIsOCkscmVhZERvdWJsZUJFOmMoXCJyZWFkRG91YmxlQkVcIiw4KX0pLHQuZXhwb3J0cz1sfSw3MToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7Y29uc3Qgbj1yKDgzMCksaT1yKDIwMiksbz1uLlRyYW5zZm9ybTt0LmV4cG9ydHM9Y2xhc3MgZXh0ZW5kcyBve2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpLHRoaXMuX3dyaXRhYmxlU3RhdGUub2JqZWN0TW9kZT0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLm9iamVjdE1vZGU9ITAsdGhpcy5icz1uZXcgaSx0aGlzLl9fcmVzdGFydCgpfV90cmFuc2Zvcm0odCxlLHIpe2Zvcih0aGlzLmJzLndyaXRlKHQpO3RoaXMuYnMubGVuZ3RoPj10aGlzLl9fbmVlZGVkOyl7bGV0IHQ9bnVsbDtjb25zdCBlPW51bGw9PT10aGlzLl9fbmVlZGVkP3ZvaWQgMDp0aGlzLmJzLnJlYWQodGhpcy5fX25lZWRlZCk7dHJ5e3Q9dGhpcy5fX3BhcnNlci5uZXh0KGUpfWNhdGNoKHQpe3JldHVybiByKHQpfXRoaXMuX19uZWVkZWQmJih0aGlzLl9fZnJlc2g9ITEpLHQuZG9uZT8odGhpcy5wdXNoKHQudmFsdWUpLHRoaXMuX19yZXN0YXJ0KCkpOnRoaXMuX19uZWVkZWQ9dC52YWx1ZXx8MS8wfXJldHVybiByKCl9Kl9wYXJzZSgpe3Rocm93IG5ldyBFcnJvcihcIk11c3QgYmUgaW1wbGVtZW50ZWQgaW4gc3ViY2xhc3NcIil9X19yZXN0YXJ0KCl7dGhpcy5fX25lZWRlZD1udWxsLHRoaXMuX19wYXJzZXI9dGhpcy5fcGFyc2UoKSx0aGlzLl9fZnJlc2g9ITB9X2ZsdXNoKHQpe3QodGhpcy5fX2ZyZXNoP251bGw6bmV3IEVycm9yKFwidW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIikpfX19LDE4Nzp0PT57XCJ1c2Ugc3RyaWN0XCI7dmFyIGUscj1cIm9iamVjdFwiPT10eXBlb2YgUmVmbGVjdD9SZWZsZWN0Om51bGwsbj1yJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiByLmFwcGx5P3IuYXBwbHk6ZnVuY3Rpb24odCxlLHIpe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbCh0LGUscil9O2U9ciYmXCJmdW5jdGlvblwiPT10eXBlb2Ygci5vd25LZXlzP3Iub3duS2V5czpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzP2Z1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KSl9OmZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KX07dmFyIGk9TnVtYmVyLmlzTmFOfHxmdW5jdGlvbih0KXtyZXR1cm4gdCE9dH07ZnVuY3Rpb24gbygpe28uaW5pdC5jYWxsKHRoaXMpfXQuZXhwb3J0cz1vLHQuZXhwb3J0cy5vbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihyLG4pe2Z1bmN0aW9uIGkocil7dC5yZW1vdmVMaXN0ZW5lcihlLG8pLG4ocil9ZnVuY3Rpb24gbygpe1wiZnVuY3Rpb25cIj09dHlwZW9mIHQucmVtb3ZlTGlzdGVuZXImJnQucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLGkpLHIoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKX15KHQsZSxvLHtvbmNlOiEwfSksXCJlcnJvclwiIT09ZSYmZnVuY3Rpb24odCxlLHIpe1wiZnVuY3Rpb25cIj09dHlwZW9mIHQub24mJnkodCxcImVycm9yXCIsZSx7b25jZTohMH0pfSh0LGkpfSkpfSxvLkV2ZW50RW1pdHRlcj1vLG8ucHJvdG90eXBlLl9ldmVudHM9dm9pZCAwLG8ucHJvdG90eXBlLl9ldmVudHNDb3VudD0wLG8ucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnM9dm9pZCAwO3ZhciBzPTEwO2Z1bmN0aW9uIGEodCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KX1mdW5jdGlvbiB1KHQpe3JldHVybiB2b2lkIDA9PT10Ll9tYXhMaXN0ZW5lcnM/by5kZWZhdWx0TWF4TGlzdGVuZXJzOnQuX21heExpc3RlbmVyc31mdW5jdGlvbiBsKHQsZSxyLG4pe3ZhciBpLG8scyxsO2lmKGEociksdm9pZCAwPT09KG89dC5fZXZlbnRzKT8obz10Ll9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0Ll9ldmVudHNDb3VudD0wKToodm9pZCAwIT09by5uZXdMaXN0ZW5lciYmKHQuZW1pdChcIm5ld0xpc3RlbmVyXCIsZSxyLmxpc3RlbmVyP3IubGlzdGVuZXI6ciksbz10Ll9ldmVudHMpLHM9b1tlXSksdm9pZCAwPT09cylzPW9bZV09ciwrK3QuX2V2ZW50c0NvdW50O2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcz9zPW9bZV09bj9bcixzXTpbcyxyXTpuP3MudW5zaGlmdChyKTpzLnB1c2gociksKGk9dSh0KSk+MCYmcy5sZW5ndGg+aSYmIXMud2FybmVkKXtzLndhcm5lZD0hMDt2YXIgYz1uZXcgRXJyb3IoXCJQb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5IGxlYWsgZGV0ZWN0ZWQuIFwiK3MubGVuZ3RoK1wiIFwiK1N0cmluZyhlKStcIiBsaXN0ZW5lcnMgYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0XCIpO2MubmFtZT1cIk1heExpc3RlbmVyc0V4Y2VlZGVkV2FybmluZ1wiLGMuZW1pdHRlcj10LGMudHlwZT1lLGMuY291bnQ9cy5sZW5ndGgsbD1jLGNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKGwpfXJldHVybiB0fWZ1bmN0aW9uIGMoKXtpZighdGhpcy5maXJlZClyZXR1cm4gdGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBlLHRoaXMud3JhcEZuKSx0aGlzLmZpcmVkPSEwLDA9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk6dGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCxhcmd1bWVudHMpfWZ1bmN0aW9uIGYodCxlLHIpe3ZhciBuPXtmaXJlZDohMSx3cmFwRm46dm9pZCAwLHRhcmdldDp0LHR5cGU6ZSxsaXN0ZW5lcjpyfSxpPWMuYmluZChuKTtyZXR1cm4gaS5saXN0ZW5lcj1yLG4ud3JhcEZuPWksaX1mdW5jdGlvbiBoKHQsZSxyKXt2YXIgbj10Ll9ldmVudHM7aWYodm9pZCAwPT09bilyZXR1cm5bXTt2YXIgaT1uW2VdO3JldHVybiB2b2lkIDA9PT1pP1tdOlwiZnVuY3Rpb25cIj09dHlwZW9mIGk/cj9baS5saXN0ZW5lcnx8aV06W2ldOnI/ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBBcnJheSh0Lmxlbmd0aCkscj0wO3I8ZS5sZW5ndGg7KytyKWVbcl09dFtyXS5saXN0ZW5lcnx8dFtyXTtyZXR1cm4gZX0oaSk6ZChpLGkubGVuZ3RoKX1mdW5jdGlvbiBwKHQpe3ZhciBlPXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT1lKXt2YXIgcj1lW3RdO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpcmV0dXJuIDE7aWYodm9pZCAwIT09cilyZXR1cm4gci5sZW5ndGh9cmV0dXJuIDB9ZnVuY3Rpb24gZCh0LGUpe2Zvcih2YXIgcj1uZXcgQXJyYXkoZSksbj0wO248ZTsrK24pcltuXT10W25dO3JldHVybiByfWZ1bmN0aW9uIHkodCxlLHIsbil7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC5vbiluLm9uY2U/dC5vbmNlKGUscik6dC5vbihlLHIpO2Vsc2V7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdC5hZGRFdmVudExpc3RlbmVyKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImVtaXR0ZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRXZlbnRFbWl0dGVyLiBSZWNlaXZlZCB0eXBlICcrdHlwZW9mIHQpO3QuYWRkRXZlbnRMaXN0ZW5lcihlLChmdW5jdGlvbiBpKG8pe24ub25jZSYmdC5yZW1vdmVFdmVudExpc3RlbmVyKGUsaSkscihvKX0pKX19T2JqZWN0LmRlZmluZVByb3BlcnR5KG8sXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHN9LHNldDpmdW5jdGlvbih0KXtpZihcIm51bWJlclwiIT10eXBlb2YgdHx8dDwwfHxpKHQpKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyt0K1wiLlwiKTtzPXR9fSksby5pbml0PWZ1bmN0aW9uKCl7dm9pZCAwIT09dGhpcy5fZXZlbnRzJiZ0aGlzLl9ldmVudHMhPT1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2V2ZW50c3x8KHRoaXMuX2V2ZW50cz1PYmplY3QuY3JlYXRlKG51bGwpLHRoaXMuX2V2ZW50c0NvdW50PTApLHRoaXMuX21heExpc3RlbmVycz10aGlzLl9tYXhMaXN0ZW5lcnN8fHZvaWQgMH0sby5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKHQpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0fHx0PDB8fGkodCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcIm5cIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnK3QrXCIuXCIpO3JldHVybiB0aGlzLl9tYXhMaXN0ZW5lcnM9dCx0aGlzfSxvLnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnM9ZnVuY3Rpb24oKXtyZXR1cm4gdSh0aGlzKX0sby5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbih0KXtmb3IodmFyIGU9W10scj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspZS5wdXNoKGFyZ3VtZW50c1tyXSk7dmFyIGk9XCJlcnJvclwiPT09dCxvPXRoaXMuX2V2ZW50cztpZih2b2lkIDAhPT1vKWk9aSYmdm9pZCAwPT09by5lcnJvcjtlbHNlIGlmKCFpKXJldHVybiExO2lmKGkpe3ZhciBzO2lmKGUubGVuZ3RoPjAmJihzPWVbMF0pLHMgaW5zdGFuY2VvZiBFcnJvcil0aHJvdyBzO3ZhciBhPW5ldyBFcnJvcihcIlVuaGFuZGxlZCBlcnJvci5cIisocz9cIiAoXCIrcy5tZXNzYWdlK1wiKVwiOlwiXCIpKTt0aHJvdyBhLmNvbnRleHQ9cyxhfXZhciB1PW9bdF07aWYodm9pZCAwPT09dSlyZXR1cm4hMTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB1KW4odSx0aGlzLGUpO2Vsc2V7dmFyIGw9dS5sZW5ndGgsYz1kKHUsbCk7Zm9yKHI9MDtyPGw7KytyKW4oY1tyXSx0aGlzLGUpfXJldHVybiEwfSxvLnByb3RvdHlwZS5hZGRMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3JldHVybiBsKHRoaXMsdCxlLCExKX0sby5wcm90b3R5cGUub249by5wcm90b3R5cGUuYWRkTGlzdGVuZXIsby5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGwodGhpcyx0LGUsITApfSxvLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEoZSksdGhpcy5vbih0LGYodGhpcyx0LGUpKSx0aGlzfSxvLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGEoZSksdGhpcy5wcmVwZW5kTGlzdGVuZXIodCxmKHRoaXMsdCxlKSksdGhpc30sby5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24odCxlKXt2YXIgcixuLGksbyxzO2lmKGEoZSksdm9pZCAwPT09KG49dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT0ocj1uW3RdKSlyZXR1cm4gdGhpcztpZihyPT09ZXx8ci5saXN0ZW5lcj09PWUpMD09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTooZGVsZXRlIG5bdF0sbi5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KFwicmVtb3ZlTGlzdGVuZXJcIix0LHIubGlzdGVuZXJ8fGUpKTtlbHNlIGlmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHIpe2ZvcihpPS0xLG89ci5sZW5ndGgtMTtvPj0wO28tLSlpZihyW29dPT09ZXx8cltvXS5saXN0ZW5lcj09PWUpe3M9cltvXS5saXN0ZW5lcixpPW87YnJlYWt9aWYoaTwwKXJldHVybiB0aGlzOzA9PT1pP3Iuc2hpZnQoKTpmdW5jdGlvbih0LGUpe2Zvcig7ZSsxPHQubGVuZ3RoO2UrKyl0W2VdPXRbZSsxXTt0LnBvcCgpfShyLGkpLDE9PT1yLmxlbmd0aCYmKG5bdF09clswXSksdm9pZCAwIT09bi5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KFwicmVtb3ZlTGlzdGVuZXJcIix0LHN8fGUpfXJldHVybiB0aGlzfSxvLnByb3RvdHlwZS5vZmY9by5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIsby5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbjtpZih2b2lkIDA9PT0ocj10aGlzLl9ldmVudHMpKXJldHVybiB0aGlzO2lmKHZvaWQgMD09PXIucmVtb3ZlTGlzdGVuZXIpcmV0dXJuIDA9PT1hcmd1bWVudHMubGVuZ3RoPyh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKTp2b2lkIDAhPT1yW3RdJiYoMD09LS10aGlzLl9ldmVudHNDb3VudD90aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKTpkZWxldGUgclt0XSksdGhpcztpZigwPT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIGksbz1PYmplY3Qua2V5cyhyKTtmb3Iobj0wO248by5sZW5ndGg7KytuKVwicmVtb3ZlTGlzdGVuZXJcIiE9PShpPW9bbl0pJiZ0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhpKTtyZXR1cm4gdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoXCJyZW1vdmVMaXN0ZW5lclwiKSx0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wLHRoaXN9aWYoXCJmdW5jdGlvblwiPT10eXBlb2YoZT1yW3RdKSl0aGlzLnJlbW92ZUxpc3RlbmVyKHQsZSk7ZWxzZSBpZih2b2lkIDAhPT1lKWZvcihuPWUubGVuZ3RoLTE7bj49MDtuLS0pdGhpcy5yZW1vdmVMaXN0ZW5lcih0LGVbbl0pO3JldHVybiB0aGlzfSxvLnByb3RvdHlwZS5saXN0ZW5lcnM9ZnVuY3Rpb24odCl7cmV0dXJuIGgodGhpcyx0LCEwKX0sby5wcm90b3R5cGUucmF3TGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3JldHVybiBoKHRoaXMsdCwhMSl9LG8ubGlzdGVuZXJDb3VudD1mdW5jdGlvbih0LGUpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQubGlzdGVuZXJDb3VudD90Lmxpc3RlbmVyQ291bnQoZSk6cC5jYWxsKHQsZSl9LG8ucHJvdG90eXBlLmxpc3RlbmVyQ291bnQ9cCxvLnByb3RvdHlwZS5ldmVudE5hbWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50PjA/ZSh0aGlzLl9ldmVudHMpOltdfX0sNjQ1Oih0LGUpPT57ZS5yZWFkPWZ1bmN0aW9uKHQsZSxyLG4saSl7dmFyIG8scyxhPTgqaS1uLTEsdT0oMTw8YSktMSxsPXU+PjEsYz0tNyxmPXI/aS0xOjAsaD1yPy0xOjEscD10W2UrZl07Zm9yKGYrPWgsbz1wJigxPDwtYyktMSxwPj49LWMsYys9YTtjPjA7bz0yNTYqbyt0W2UrZl0sZis9aCxjLT04KTtmb3Iocz1vJigxPDwtYyktMSxvPj49LWMsYys9bjtjPjA7cz0yNTYqcyt0W2UrZl0sZis9aCxjLT04KTtpZigwPT09bylvPTEtbDtlbHNle2lmKG89PT11KXJldHVybiBzP05hTjoxLzAqKHA/LTE6MSk7cys9TWF0aC5wb3coMixuKSxvLT1sfXJldHVybihwPy0xOjEpKnMqTWF0aC5wb3coMixvLW4pfSxlLndyaXRlPWZ1bmN0aW9uKHQsZSxyLG4saSxvKXt2YXIgcyxhLHUsbD04Km8taS0xLGM9KDE8PGwpLTEsZj1jPj4xLGg9MjM9PT1pP01hdGgucG93KDIsLTI0KS1NYXRoLnBvdygyLC03Nyk6MCxwPW4/MDpvLTEsZD1uPzE6LTEseT1lPDB8fDA9PT1lJiYxL2U8MD8xOjA7Zm9yKGU9TWF0aC5hYnMoZSksaXNOYU4oZSl8fGU9PT0xLzA/KGE9aXNOYU4oZSk/MTowLHM9Yyk6KHM9TWF0aC5mbG9vcihNYXRoLmxvZyhlKS9NYXRoLkxOMiksZSoodT1NYXRoLnBvdygyLC1zKSk8MSYmKHMtLSx1Kj0yKSwoZSs9cytmPj0xP2gvdTpoKk1hdGgucG93KDIsMS1mKSkqdT49MiYmKHMrKyx1Lz0yKSxzK2Y+PWM/KGE9MCxzPWMpOnMrZj49MT8oYT0oZSp1LTEpKk1hdGgucG93KDIsaSkscys9Zik6KGE9ZSpNYXRoLnBvdygyLGYtMSkqTWF0aC5wb3coMixpKSxzPTApKTtpPj04O3RbcitwXT0yNTUmYSxwKz1kLGEvPTI1NixpLT04KTtmb3Iocz1zPDxpfGEsbCs9aTtsPjA7dFtyK3BdPTI1NSZzLHArPWQscy89MjU2LGwtPTgpO3RbcitwLWRdfD0xMjgqeX19LDcxNzp0PT57XCJmdW5jdGlvblwiPT10eXBlb2YgT2JqZWN0LmNyZWF0ZT90LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtlJiYodC5zdXBlcl89ZSx0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSl9OnQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKGUpe3Quc3VwZXJfPWU7dmFyIHI9ZnVuY3Rpb24oKXt9O3IucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyByLHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPXR9fX0sNTk1OmZ1bmN0aW9uKHQpe3QuZXhwb3J0cz0oKCk9PntcInVzZSBzdHJpY3RcIjt2YXIgdD17MjU1Oih0LGUpPT57ZS5sPWNsYXNze2hleFNsaWNlKHQ9MCxlKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKHRoaXMuc2xpY2UodCxlKSwodD0+KFwiMDBcIit0LnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpKSkuam9pbihcIlwiKX19fSw0ODoodCxlLHIpPT57Y29uc3Qgbj1yKDc2NSkse2ludGVybmFsQmluZGluZzppLEFycmF5Om8sQXJyYXlJc0FycmF5OnMsQXJyYXlQcm90b3R5cGVGaWx0ZXI6YSxBcnJheVByb3RvdHlwZUZvckVhY2g6dSxBcnJheVByb3RvdHlwZVB1c2g6bCxBcnJheVByb3RvdHlwZVB1c2hBcHBseTpjLEFycmF5UHJvdG90eXBlU29ydDpmLEFycmF5UHJvdG90eXBlVW5zaGlmdDpoLEJpZ0ludFByb3RvdHlwZVZhbHVlT2Y6cCxCb29sZWFuUHJvdG90eXBlVmFsdWVPZjpkLERhdGVQcm90b3R5cGVHZXRUaW1lOnksRGF0ZVByb3RvdHlwZVRvSVNPU3RyaW5nOmcsRGF0ZVByb3RvdHlwZVRvU3RyaW5nOmIsRXJyb3JQcm90b3R5cGVUb1N0cmluZzptLEZ1bmN0aW9uUHJvdG90eXBlQ2FsbDp3LEZ1bmN0aW9uUHJvdG90eXBlVG9TdHJpbmc6XyxKU09OU3RyaW5naWZ5OkUsTWFwUHJvdG90eXBlR2V0U2l6ZTp2LE1hcFByb3RvdHlwZUVudHJpZXM6UyxNYXRoRmxvb3I6QSxNYXRoTWF4OlQsTWF0aE1pbjpJLE1hdGhSb3VuZDpCLE1hdGhTcXJ0Ok8sTnVtYmVyOngsTnVtYmVySXNOYU46UixOdW1iZXJQYXJzZUZsb2F0Ok4sTnVtYmVyUGFyc2VJbnQ6TCxOdW1iZXJQcm90b3R5cGVWYWx1ZU9mOlAsT2JqZWN0Ok0sT2JqZWN0QXNzaWduOlUsT2JqZWN0Q3JlYXRlOmosT2JqZWN0RGVmaW5lUHJvcGVydHk6ayxPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6JCxPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOkYsT2JqZWN0R2V0T3duUHJvcGVydHlTeW1ib2xzOkQsT2JqZWN0R2V0UHJvdG90eXBlT2Y6QyxPYmplY3RJczpHLE9iamVjdEtleXM6VyxPYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eTp6LE9iamVjdFByb3RvdHlwZVByb3BlcnR5SXNFbnVtZXJhYmxlOkgsT2JqZWN0U2VhbDpZLE9iamVjdFNldFByb3RvdHlwZU9mOnEsUmVmbGVjdE93bktleXM6VixSZWdFeHA6SyxSZWdFeHBQcm90b3R5cGVUZXN0OlgsUmVnRXhwUHJvdG90eXBlVG9TdHJpbmc6SixTYWZlU3RyaW5nSXRlcmF0b3I6WixTYWZlTWFwOlEsU2FmZVNldDp0dCxTZXRQcm90b3R5cGVHZXRTaXplOmV0LFNldFByb3RvdHlwZVZhbHVlczpydCxTdHJpbmc6bnQsU3RyaW5nUHJvdG90eXBlQ2hhckNvZGVBdDppdCxTdHJpbmdQcm90b3R5cGVDb2RlUG9pbnRBdDpvdCxTdHJpbmdQcm90b3R5cGVJbmNsdWRlczpzdCxTdHJpbmdQcm90b3R5cGVOb3JtYWxpemU6YXQsU3RyaW5nUHJvdG90eXBlUGFkRW5kOnV0LFN0cmluZ1Byb3RvdHlwZVBhZFN0YXJ0Omx0LFN0cmluZ1Byb3RvdHlwZVJlcGVhdDpjdCxTdHJpbmdQcm90b3R5cGVSZXBsYWNlOmZ0LFN0cmluZ1Byb3RvdHlwZVNsaWNlOmh0LFN0cmluZ1Byb3RvdHlwZVNwbGl0OnB0LFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlOmR0LFN0cmluZ1Byb3RvdHlwZVRyaW06eXQsU3RyaW5nUHJvdG90eXBlVmFsdWVPZjpndCxTeW1ib2xQcm90b3R5cGVUb1N0cmluZzpidCxTeW1ib2xQcm90b3R5cGVWYWx1ZU9mOm10LFN5bWJvbEl0ZXJhdG9yOnd0LFN5bWJvbFRvU3RyaW5nVGFnOl90LFR5cGVkQXJyYXlQcm90b3R5cGVHZXRMZW5ndGg6RXQsVHlwZWRBcnJheVByb3RvdHlwZUdldFN5bWJvbFRvU3RyaW5nVGFnOnZ0LFVpbnQ4QXJyYXk6U3QsdW5jdXJyeVRoaXM6QXR9PW4se2dldE93bk5vbkluZGV4UHJvcGVydGllczpUdCxnZXRQcm9taXNlRGV0YWlsczpJdCxnZXRQcm94eURldGFpbHM6QnQsa1BlbmRpbmc6T3Qsa1JlamVjdGVkOnh0LHByZXZpZXdFbnRyaWVzOlJ0LGdldENvbnN0cnVjdG9yTmFtZTpOdCxnZXRFeHRlcm5hbFZhbHVlOkx0LHByb3BlcnR5RmlsdGVyOntBTExfUFJPUEVSVElFUzpQdCxPTkxZX0VOVU1FUkFCTEU6TXR9LFByb3h5OlV0fT1yKDg5MSkse2N1c3RvbUluc3BlY3RTeW1ib2w6anQsaXNFcnJvcjprdCxqb2luOiR0LHJlbW92ZUNvbG9yczpGdH09cigzMzUpLHtjb2Rlczp7RVJSX0lOVkFMSURfQVJHX1RZUEU6RHR9LGlzU3RhY2tPdmVyZmxvd0Vycm9yOkN0fT1yKDEwMSkse2lzQXN5bmNGdW5jdGlvbjpHdCxpc0dlbmVyYXRvckZ1bmN0aW9uOld0LGlzQW55QXJyYXlCdWZmZXI6enQsaXNBcnJheUJ1ZmZlcjpIdCxpc0FyZ3VtZW50c09iamVjdDpZdCxpc0JveGVkUHJpbWl0aXZlOnF0LGlzRGF0YVZpZXc6VnQsaXNFeHRlcm5hbDpLdCxpc01hcDpYdCxpc01hcEl0ZXJhdG9yOkp0LGlzTW9kdWxlTmFtZXNwYWNlT2JqZWN0Olp0LGlzTmF0aXZlRXJyb3I6UXQsaXNQcm9taXNlOnRlLGlzU2V0OmVlLGlzU2V0SXRlcmF0b3I6cmUsaXNXZWFrTWFwOm5lLGlzV2Vha1NldDppZSxpc1JlZ0V4cDpvZSxpc0RhdGU6c2UsaXNUeXBlZEFycmF5OmFlLGlzU3RyaW5nT2JqZWN0OnVlLGlzTnVtYmVyT2JqZWN0OmxlLGlzQm9vbGVhbk9iamVjdDpjZSxpc0JpZ0ludE9iamVjdDpmZX09cig2MyksaGU9cigxODMpLHtOYXRpdmVNb2R1bGU6cGV9PXIoOTkyKSx7dmFsaWRhdGVPYmplY3Q6ZGV9PXIoMzU2KTtsZXQgeWU7Y29uc3QgZ2U9bmV3IHR0KGEoRihyLmcpLCh0PT5YKC9eW0EtWl1bYS16QS1aMC05XSskLyx0KSkpKSxiZT10PT52b2lkIDA9PT10JiZ2b2lkIDAhPT10LG1lPVkoe3Nob3dIaWRkZW46ITEsZGVwdGg6Mixjb2xvcnM6ITEsY3VzdG9tSW5zcGVjdDohMCxzaG93UHJveHk6ITEsbWF4QXJyYXlMZW5ndGg6MTAwLG1heFN0cmluZ0xlbmd0aDoxZTQsYnJlYWtMZW5ndGg6ODAsY29tcGFjdDozLHNvcnRlZDohMSxnZXR0ZXJzOiExfSksd2U9L1tcXHgwMC1cXHgxZlxceDI3XFx4NWNcXHg3Zi1cXHg5Zl0vLF9lPS9bXFx4MDAtXFx4MWZcXHgyN1xceDVjXFx4N2YtXFx4OWZdL2csRWU9L1tcXHgwMC1cXHgxZlxceDVjXFx4N2YtXFx4OWZdLyx2ZT0vW1xceDAwLVxceDFmXFx4NWNcXHg3Zi1cXHg5Zl0vZyxTZT0vXlthLXpBLVpfXVthLXpBLVpfMC05XSokLyxBZT0vXigwfFsxLTldWzAtOV0qKSQvLFRlPS9eICAgIGF0ICg/OlteL1xcXFwoXSsgXFwofClub2RlOiguKyk6XFxkKzpcXGQrXFwpPyQvLEllPS9eICAgIGF0ICg/OlteL1xcXFwoXSsgXFwofCkoLispXFwuanM6XFxkKzpcXGQrXFwpPyQvLEJlPS9bL1xcXFxdbm9kZV9tb2R1bGVzWy9cXFxcXSguKz8pKD89Wy9cXFxcXSkvZyxPZT0vXihcXHMrW14oXSo/KVxccyp7Lyx4ZT0vKFxcL1xcLy4qP1xcbil8KFxcL1xcKigufFxcbikqP1xcKlxcLykvZyxSZT1bXCJcXFxceDAwXCIsXCJcXFxceDAxXCIsXCJcXFxceDAyXCIsXCJcXFxceDAzXCIsXCJcXFxceDA0XCIsXCJcXFxceDA1XCIsXCJcXFxceDA2XCIsXCJcXFxceDA3XCIsXCJcXFxcYlwiLFwiXFxcXHRcIixcIlxcXFxuXCIsXCJcXFxceDBCXCIsXCJcXFxcZlwiLFwiXFxcXHJcIixcIlxcXFx4MEVcIixcIlxcXFx4MEZcIixcIlxcXFx4MTBcIixcIlxcXFx4MTFcIixcIlxcXFx4MTJcIixcIlxcXFx4MTNcIixcIlxcXFx4MTRcIixcIlxcXFx4MTVcIixcIlxcXFx4MTZcIixcIlxcXFx4MTdcIixcIlxcXFx4MThcIixcIlxcXFx4MTlcIixcIlxcXFx4MUFcIixcIlxcXFx4MUJcIixcIlxcXFx4MUNcIixcIlxcXFx4MURcIixcIlxcXFx4MUVcIixcIlxcXFx4MUZcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXFxcXCdcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXFxcXFxcXFxcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXFxcXHg3RlwiLFwiXFxcXHg4MFwiLFwiXFxcXHg4MVwiLFwiXFxcXHg4MlwiLFwiXFxcXHg4M1wiLFwiXFxcXHg4NFwiLFwiXFxcXHg4NVwiLFwiXFxcXHg4NlwiLFwiXFxcXHg4N1wiLFwiXFxcXHg4OFwiLFwiXFxcXHg4OVwiLFwiXFxcXHg4QVwiLFwiXFxcXHg4QlwiLFwiXFxcXHg4Q1wiLFwiXFxcXHg4RFwiLFwiXFxcXHg4RVwiLFwiXFxcXHg4RlwiLFwiXFxcXHg5MFwiLFwiXFxcXHg5MVwiLFwiXFxcXHg5MlwiLFwiXFxcXHg5M1wiLFwiXFxcXHg5NFwiLFwiXFxcXHg5NVwiLFwiXFxcXHg5NlwiLFwiXFxcXHg5N1wiLFwiXFxcXHg5OFwiLFwiXFxcXHg5OVwiLFwiXFxcXHg5QVwiLFwiXFxcXHg5QlwiLFwiXFxcXHg5Q1wiLFwiXFxcXHg5RFwiLFwiXFxcXHg5RVwiLFwiXFxcXHg5RlwiXSxOZT1uZXcgSyhcIltcXFxcdTAwMUJcXFxcdTAwOUJdW1tcXFxcXSgpIzs/XSooPzooPzooPzpbYS16QS1aXFxcXGRdKig/OjtbLWEtekEtWlxcXFxkXFxcXC8jJi46PT8lQH5fXSopKik/XFxcXHUwMDA3KXwoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW50cXJ5PT48fl0pKVwiLFwiZ1wiKTtsZXQgTGU7ZnVuY3Rpb24gUGUodCxlKXtjb25zdCByPXtidWRnZXQ6e30saW5kZW50YXRpb25Mdmw6MCxzZWVuOltdLGN1cnJlbnREZXB0aDowLHN0eWxpemU6Q2Usc2hvd0hpZGRlbjptZS5zaG93SGlkZGVuLGRlcHRoOm1lLmRlcHRoLGNvbG9yczptZS5jb2xvcnMsY3VzdG9tSW5zcGVjdDptZS5jdXN0b21JbnNwZWN0LHNob3dQcm94eTptZS5zaG93UHJveHksbWF4QXJyYXlMZW5ndGg6bWUubWF4QXJyYXlMZW5ndGgsbWF4U3RyaW5nTGVuZ3RoOm1lLm1heFN0cmluZ0xlbmd0aCxicmVha0xlbmd0aDptZS5icmVha0xlbmd0aCxjb21wYWN0Om1lLmNvbXBhY3Qsc29ydGVkOm1lLnNvcnRlZCxnZXR0ZXJzOm1lLmdldHRlcnN9O2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlpZihhcmd1bWVudHMubGVuZ3RoPjImJih2b2lkIDAhPT1hcmd1bWVudHNbMl0mJihyLmRlcHRoPWFyZ3VtZW50c1syXSksYXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10mJihyLmNvbG9ycz1hcmd1bWVudHNbM10pKSxcImJvb2xlYW5cIj09dHlwZW9mIGUpci5zaG93SGlkZGVuPWU7ZWxzZSBpZihlKXtjb25zdCB0PVcoZSk7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDsrK24pe2NvbnN0IGk9dFtuXTt6KG1lLGkpfHxcInN0eWxpemVcIj09PWk/cltpXT1lW2ldOnZvaWQgMD09PXIudXNlck9wdGlvbnMmJihyLnVzZXJPcHRpb25zPWUpfX1yZXR1cm4gci5jb2xvcnMmJihyLnN0eWxpemU9RGUpLG51bGw9PT1yLm1heEFycmF5TGVuZ3RoJiYoci5tYXhBcnJheUxlbmd0aD0xLzApLG51bGw9PT1yLm1heFN0cmluZ0xlbmd0aCYmKHIubWF4U3RyaW5nTGVuZ3RoPTEvMCksS2Uocix0LDApfVBlLmN1c3RvbT1qdCxrKFBlLFwiZGVmYXVsdE9wdGlvbnNcIix7Z2V0OigpPT5tZSxzZXQ6dD0+KGRlKHQsXCJvcHRpb25zXCIpLFUobWUsdCkpfSk7Y29uc3QgTWU9MzksVWU9NDk7ZnVuY3Rpb24gamUodCxlKXtrKFBlLmNvbG9ycyxlLHtnZXQoKXtyZXR1cm4gdGhpc1t0XX0sc2V0KGUpe3RoaXNbdF09ZX0sY29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITF9KX1mdW5jdGlvbiBrZSh0LGUpe3JldHVybi0xPT09ZT9gXCIke3R9XCJgOi0yPT09ZT9gXFxgJHt0fVxcYGA6YCcke3R9J2B9UGUuY29sb3JzPVUoaihudWxsKSx7cmVzZXQ6WzAsMF0sYm9sZDpbMSwyMl0sZGltOlsyLDIyXSxpdGFsaWM6WzMsMjNdLHVuZGVybGluZTpbNCwyNF0sYmxpbms6WzUsMjVdLGludmVyc2U6WzcsMjddLGhpZGRlbjpbOCwyOF0sc3RyaWtldGhyb3VnaDpbOSwyOV0sZG91YmxldW5kZXJsaW5lOlsyMSwyNF0sYmxhY2s6WzMwLE1lXSxyZWQ6WzMxLE1lXSxncmVlbjpbMzIsTWVdLHllbGxvdzpbMzMsTWVdLGJsdWU6WzM0LE1lXSxtYWdlbnRhOlszNSxNZV0sY3lhbjpbMzYsTWVdLHdoaXRlOlszNyxNZV0sYmdCbGFjazpbNDAsVWVdLGJnUmVkOls0MSxVZV0sYmdHcmVlbjpbNDIsVWVdLGJnWWVsbG93Ols0MyxVZV0sYmdCbHVlOls0NCxVZV0sYmdNYWdlbnRhOls0NSxVZV0sYmdDeWFuOls0NixVZV0sYmdXaGl0ZTpbNDcsVWVdLGZyYW1lZDpbNTEsNTRdLG92ZXJsaW5lZDpbNTMsNTVdLGdyYXk6WzkwLE1lXSxyZWRCcmlnaHQ6WzkxLE1lXSxncmVlbkJyaWdodDpbOTIsTWVdLHllbGxvd0JyaWdodDpbOTMsTWVdLGJsdWVCcmlnaHQ6Wzk0LE1lXSxtYWdlbnRhQnJpZ2h0Ols5NSxNZV0sY3lhbkJyaWdodDpbOTYsTWVdLHdoaXRlQnJpZ2h0Ols5NyxNZV0sYmdHcmF5OlsxMDAsVWVdLGJnUmVkQnJpZ2h0OlsxMDEsVWVdLGJnR3JlZW5CcmlnaHQ6WzEwMixVZV0sYmdZZWxsb3dCcmlnaHQ6WzEwMyxVZV0sYmdCbHVlQnJpZ2h0OlsxMDQsVWVdLGJnTWFnZW50YUJyaWdodDpbMTA1LFVlXSxiZ0N5YW5CcmlnaHQ6WzEwNixVZV0sYmdXaGl0ZUJyaWdodDpbMTA3LFVlXX0pLGplKFwiZ3JheVwiLFwiZ3JleVwiKSxqZShcImdyYXlcIixcImJsYWNrQnJpZ2h0XCIpLGplKFwiYmdHcmF5XCIsXCJiZ0dyZXlcIiksamUoXCJiZ0dyYXlcIixcImJnQmxhY2tCcmlnaHRcIiksamUoXCJkaW1cIixcImZhaW50XCIpLGplKFwic3RyaWtldGhyb3VnaFwiLFwiY3Jvc3NlZG91dFwiKSxqZShcInN0cmlrZXRocm91Z2hcIixcInN0cmlrZVRocm91Z2hcIiksamUoXCJzdHJpa2V0aHJvdWdoXCIsXCJjcm9zc2VkT3V0XCIpLGplKFwiaGlkZGVuXCIsXCJjb25jZWFsXCIpLGplKFwiaW52ZXJzZVwiLFwic3dhcENvbG9yc1wiKSxqZShcImludmVyc2VcIixcInN3YXBjb2xvcnNcIiksamUoXCJkb3VibGV1bmRlcmxpbmVcIixcImRvdWJsZVVuZGVybGluZVwiKSxQZS5zdHlsZXM9VShqKG51bGwpLHtzcGVjaWFsOlwiY3lhblwiLG51bWJlcjpcInllbGxvd1wiLGJpZ2ludDpcInllbGxvd1wiLGJvb2xlYW46XCJ5ZWxsb3dcIix1bmRlZmluZWQ6XCJncmV5XCIsbnVsbDpcImJvbGRcIixzdHJpbmc6XCJncmVlblwiLHN5bWJvbDpcImdyZWVuXCIsZGF0ZTpcIm1hZ2VudGFcIixyZWdleHA6XCJyZWRcIixtb2R1bGU6XCJ1bmRlcmxpbmVcIn0pO2NvbnN0ICRlPXQ9PlJlW2l0KHQpXTtmdW5jdGlvbiBGZSh0KXtsZXQgZT13ZSxyPV9lLG49Mzk7aWYoc3QodCxcIidcIikmJihzdCh0LCdcIicpP3N0KHQsXCJgXCIpfHxzdCh0LFwiJHtcIil8fChuPS0yKTpuPS0xLDM5IT09biYmKGU9RWUscj12ZSkpLHQubGVuZ3RoPDVlMyYmIVgoZSx0KSlyZXR1cm4ga2UodCxuKTtpZih0Lmxlbmd0aD4xMDApcmV0dXJuIGtlKHQ9ZnQodCxyLCRlKSxuKTtsZXQgaT1cIlwiLG89MDtjb25zdCBzPXQubGVuZ3RoO2ZvcihsZXQgZT0wO2U8cztlKyspe2NvbnN0IHI9aXQodCxlKTsocj09PW58fDkyPT09cnx8cjwzMnx8cj4xMjYmJnI8MTYwKSYmKGkrPW89PT1lP1JlW3JdOmAke2h0KHQsbyxlKX0ke1JlW3JdfWAsbz1lKzEpfXJldHVybiBvIT09cyYmKGkrPWh0KHQsbykpLGtlKGksbil9ZnVuY3Rpb24gRGUodCxlKXtjb25zdCByPVBlLnN0eWxlc1tlXTtpZih2b2lkIDAhPT1yKXtjb25zdCBlPVBlLmNvbG9yc1tyXTtpZih2b2lkIDAhPT1lKXJldHVybmBcdTAwMWJbJHtlWzBdfW0ke3R9XHUwMDFiWyR7ZVsxXX1tYH1yZXR1cm4gdH1mdW5jdGlvbiBDZSh0KXtyZXR1cm4gdH1mdW5jdGlvbiBHZSgpe3JldHVybltdfWZ1bmN0aW9uIFdlKHQsZSl7dHJ5e3JldHVybiB0IGluc3RhbmNlb2YgZX1jYXRjaHtyZXR1cm4hMX19ZnVuY3Rpb24gemUodCxlLHIsbil7bGV0IGk7Y29uc3Qgbz10O2Zvcig7dHx8YmUodCk7KXtjb25zdCBzPSQodCxcImNvbnN0cnVjdG9yXCIpO2lmKHZvaWQgMCE9PXMmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHMudmFsdWUmJlwiXCIhPT1zLnZhbHVlLm5hbWUmJldlKG8scy52YWx1ZSkpcmV0dXJuIHZvaWQgMD09PW58fGk9PT10JiZnZS5oYXMocy52YWx1ZS5uYW1lKXx8SGUoZSxvLGl8fG8scixuKSxzLnZhbHVlLm5hbWU7dD1DKHQpLHZvaWQgMD09PWkmJihpPXQpfWlmKG51bGw9PT1pKXJldHVybiBudWxsO2NvbnN0IHM9TnQobyk7aWYocj5lLmRlcHRoJiZudWxsIT09ZS5kZXB0aClyZXR1cm5gJHtzfSA8Q29tcGxleCBwcm90b3R5cGU+YDtjb25zdCBhPXplKGksZSxyKzEsbik7cmV0dXJuIG51bGw9PT1hP2Ake3N9IDwke1BlKGksey4uLmUsY3VzdG9tSW5zcGVjdDohMSxkZXB0aDotMX0pfT5gOmAke3N9IDwke2F9PmB9ZnVuY3Rpb24gSGUodCxlLHIsbixpKXtsZXQgbyxzLGE9MDtkb3tpZigwIT09YXx8ZT09PXIpe2lmKG51bGw9PT0ocj1DKHIpKSlyZXR1cm47Y29uc3QgdD0kKHIsXCJjb25zdHJ1Y3RvclwiKTtpZih2b2lkIDAhPT10JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnZhbHVlJiZnZS5oYXModC52YWx1ZS5uYW1lKSlyZXR1cm59MD09PWE/cz1uZXcgdHQ6dShvLCh0PT5zLmFkZCh0KSkpLG89VihyKTtmb3IoY29uc3QgdSBvZiBvKXtpZihcImNvbnN0cnVjdG9yXCI9PT11fHx6KGUsdSl8fDAhPT1hJiZzLmhhcyh1KSljb250aW51ZTtjb25zdCBvPSQocix1KTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBvLnZhbHVlKWNvbnRpbnVlO2NvbnN0IGM9ZHIodCxyLG4sdSwwLG8sZSk7dC5jb2xvcnM/bChpLGBcdTAwMWJbMm0ke2N9XHUwMDFiWzIybWApOmwoaSxjKX19d2hpbGUoMyE9KythKX1mdW5jdGlvbiBZZSh0LGUscixuPVwiXCIpe3JldHVybiBudWxsPT09dD9cIlwiIT09ZSYmciE9PWU/YFske3J9JHtufTogbnVsbCBwcm90b3R5cGVdIFske2V9XSBgOmBbJHtyfSR7bn06IG51bGwgcHJvdG90eXBlXSBgOlwiXCIhPT1lJiZ0IT09ZT9gJHt0fSR7bn0gWyR7ZX1dIGA6YCR7dH0ke259IGB9ZnVuY3Rpb24gcWUodCxlKXtsZXQgcjtjb25zdCBuPUQodCk7aWYoZSlyPUYodCksMCE9PW4ubGVuZ3RoJiZjKHIsbik7ZWxzZXt0cnl7cj1XKHQpfWNhdGNoKGUpe2hlKFF0KGUpJiZcIlJlZmVyZW5jZUVycm9yXCI9PT1lLm5hbWUmJlp0KHQpKSxyPUYodCl9MCE9PW4ubGVuZ3RoJiZjKHIsYShuLChlPT5IKHQsZSkpKSl9cmV0dXJuIHJ9ZnVuY3Rpb24gVmUodCxlLHIpe2xldCBuPVwiXCI7cmV0dXJuIG51bGw9PT1lJiYobj1OdCh0KSxuPT09ciYmKG49XCJPYmplY3RcIikpLFllKGUscixuKX1mdW5jdGlvbiBLZSh0LGUscixpKXtpZihcIm9iamVjdFwiIT10eXBlb2YgZSYmXCJmdW5jdGlvblwiIT10eXBlb2YgZSYmIWJlKGUpKXJldHVybiBRZSh0LnN0eWxpemUsZSx0KTtpZihudWxsPT09ZSlyZXR1cm4gdC5zdHlsaXplKFwibnVsbFwiLFwibnVsbFwiKTtjb25zdCBvPWUsYT1CdChlLCEhdC5zaG93UHJveHkpO2lmKHZvaWQgMCE9PWEpe2lmKHQuc2hvd1Byb3h5KXJldHVybiBmdW5jdGlvbih0LGUscil7aWYocj50LmRlcHRoJiZudWxsIT09dC5kZXB0aClyZXR1cm4gdC5zdHlsaXplKFwiUHJveHkgW0FycmF5XVwiLFwic3BlY2lhbFwiKTtyKz0xLHQuaW5kZW50YXRpb25MdmwrPTI7Y29uc3Qgbj1bS2UodCxlWzBdLHIpLEtlKHQsZVsxXSxyKV07cmV0dXJuIHQuaW5kZW50YXRpb25MdmwtPTIsZ3IodCxuLFwiXCIsW1wiUHJveHkgW1wiLFwiXVwiXSwyLHIpfSh0LGEscik7ZT1hfWlmKHQuY3VzdG9tSW5zcGVjdCl7Y29uc3Qgbj1lW2p0XTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBuJiZuIT09UGUmJighZS5jb25zdHJ1Y3Rvcnx8ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUhPT1lKSl7Y29uc3QgZT1udWxsPT09dC5kZXB0aD9udWxsOnQuZGVwdGgtcixpPXcobixvLGUsZnVuY3Rpb24odCxlKXtjb25zdCByPXtzdHlsaXplOnQuc3R5bGl6ZSxzaG93SGlkZGVuOnQuc2hvd0hpZGRlbixkZXB0aDp0LmRlcHRoLGNvbG9yczp0LmNvbG9ycyxjdXN0b21JbnNwZWN0OnQuY3VzdG9tSW5zcGVjdCxzaG93UHJveHk6dC5zaG93UHJveHksbWF4QXJyYXlMZW5ndGg6dC5tYXhBcnJheUxlbmd0aCxtYXhTdHJpbmdMZW5ndGg6dC5tYXhTdHJpbmdMZW5ndGgsYnJlYWtMZW5ndGg6dC5icmVha0xlbmd0aCxjb21wYWN0OnQuY29tcGFjdCxzb3J0ZWQ6dC5zb3J0ZWQsZ2V0dGVyczp0LmdldHRlcnMsLi4udC51c2VyT3B0aW9uc307aWYoZSl7cShyLG51bGwpO2Zvcihjb25zdCB0IG9mIFcocikpXCJvYmplY3RcIiE9dHlwZW9mIHJbdF0mJlwiZnVuY3Rpb25cIiE9dHlwZW9mIHJbdF18fG51bGw9PT1yW3RdfHxkZWxldGUgclt0XTtyLnN0eWxpemU9cSgoKGUscik9PntsZXQgbjt0cnl7bj1gJHt0LnN0eWxpemUoZSxyKX1gfWNhdGNoe31yZXR1cm5cInN0cmluZ1wiIT10eXBlb2Ygbj9lOm59KSxudWxsKX1yZXR1cm4gcn0odCx2b2lkIDAhPT1hfHwhKG8gaW5zdGFuY2VvZiBNKSkpO2lmKGkhPT1vKXJldHVyblwic3RyaW5nXCIhPXR5cGVvZiBpP0tlKHQsaSxyKTppLnJlcGxhY2UoL1xcbi9nLGBcXG4ke1wiIFwiLnJlcGVhdCh0LmluZGVudGF0aW9uTHZsKX1gKX19aWYodC5zZWVuLmluY2x1ZGVzKGUpKXtsZXQgcj0xO3JldHVybiB2b2lkIDA9PT10LmNpcmN1bGFyPyh0LmNpcmN1bGFyPW5ldyBRLHQuY2lyY3VsYXIuc2V0KGUscikpOihyPXQuY2lyY3VsYXIuZ2V0KGUpLHZvaWQgMD09PXImJihyPXQuY2lyY3VsYXIuc2l6ZSsxLHQuY2lyY3VsYXIuc2V0KGUscikpKSx0LnN0eWxpemUoYFtDaXJjdWxhciAqJHtyfV1gLFwic3BlY2lhbFwiKX1yZXR1cm4gZnVuY3Rpb24odCxlLHIsaSl7bGV0IG8sYTt0LnNob3dIaWRkZW4mJihyPD10LmRlcHRofHxudWxsPT09dC5kZXB0aCkmJihhPVtdKTtjb25zdCB1PXplKGUsdCxyLGEpO3ZvaWQgMCE9PWEmJjA9PT1hLmxlbmd0aCYmKGE9dm9pZCAwKTtsZXQgbD1lW190XTsoXCJzdHJpbmdcIiE9dHlwZW9mIGx8fFwiXCIhPT1sJiYodC5zaG93SGlkZGVuP3o6SCkoZSxfdCkpJiYobD1cIlwiKTtsZXQgYyxmPVwiXCIsdz1HZSxFPSEwLEE9MDtjb25zdCBUPXQuc2hvd0hpZGRlbj9QdDpNdDtsZXQgSSxCPTA7aWYoZVt3dF18fG51bGw9PT11KWlmKEU9ITEscyhlKSl7Y29uc3QgdD1cIkFycmF5XCIhPT11fHxcIlwiIT09bD9ZZSh1LGwsXCJBcnJheVwiLGAoJHtlLmxlbmd0aH0pYCk6XCJcIjtpZihvPVR0KGUsVCksYz1bYCR7dH1bYCxcIl1cIl0sMD09PWUubGVuZ3RoJiYwPT09by5sZW5ndGgmJnZvaWQgMD09PWEpcmV0dXJuYCR7Y1swXX1dYDtCPTIsdz1ucn1lbHNlIGlmKGVlKGUpKXtjb25zdCByPWV0KGUpLG49WWUodSxsLFwiU2V0XCIsYCgke3J9KWApO2lmKG89cWUoZSx0LnNob3dIaWRkZW4pLHc9bnVsbCE9PXU/b3IuYmluZChudWxsLGUpOm9yLmJpbmQobnVsbCxydChlKSksMD09PXImJjA9PT1vLmxlbmd0aCYmdm9pZCAwPT09YSlyZXR1cm5gJHtufXt9YDtjPVtgJHtufXtgLFwifVwiXX1lbHNlIGlmKFh0KGUpKXtjb25zdCByPXYoZSksbj1ZZSh1LGwsXCJNYXBcIixgKCR7cn0pYCk7aWYobz1xZShlLHQuc2hvd0hpZGRlbiksdz1udWxsIT09dT9zci5iaW5kKG51bGwsZSk6c3IuYmluZChudWxsLFMoZSkpLDA9PT1yJiYwPT09by5sZW5ndGgmJnZvaWQgMD09PWEpcmV0dXJuYCR7bn17fWA7Yz1bYCR7bn17YCxcIn1cIl19ZWxzZSBpZihhZShlKSl7bz1UdChlLFQpO2xldCByPWUsaT1cIlwiO251bGw9PT11JiYoaT12dChlKSxyPW5ldyBuW2ldKGUpKTtjb25zdCBzPUV0KGUpO2lmKGM9W2Ake1llKHUsbCxpLGAoJHtzfSlgKX1bYCxcIl1cIl0sMD09PWUubGVuZ3RoJiYwPT09by5sZW5ndGgmJiF0LnNob3dIaWRkZW4pcmV0dXJuYCR7Y1swXX1dYDt3PWlyLmJpbmQobnVsbCxyLHMpLEI9Mn1lbHNlIEp0KGUpPyhvPXFlKGUsdC5zaG93SGlkZGVuKSxjPVhlKFwiTWFwXCIsbCksdz1oci5iaW5kKG51bGwsYykpOnJlKGUpPyhvPXFlKGUsdC5zaG93SGlkZGVuKSxjPVhlKFwiU2V0XCIsbCksdz1oci5iaW5kKG51bGwsYykpOkU9ITA7aWYoRSlpZihvPXFlKGUsdC5zaG93SGlkZGVuKSxjPVtcIntcIixcIn1cIl0sXCJPYmplY3RcIj09PXUpe2lmKFl0KGUpP2NbMF09XCJbQXJndW1lbnRzXSB7XCI6XCJcIiE9PWwmJihjWzBdPWAke1llKHUsbCxcIk9iamVjdFwiKX17YCksMD09PW8ubGVuZ3RoJiZ2b2lkIDA9PT1hKXJldHVybmAke2NbMF19fWB9ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKXtpZihmPWZ1bmN0aW9uKHQsZSxyKXtjb25zdCBuPV8odCk7aWYoXCJjbGFzc1wiPT09bi5zbGljZSgwLDUpJiZuLmVuZHNXaXRoKFwifVwiKSl7Y29uc3QgaT1uLnNsaWNlKDUsLTEpLG89aS5pbmRleE9mKFwie1wiKTtpZigtMSE9PW8mJighaS5zbGljZSgwLG8pLmluY2x1ZGVzKFwiKFwiKXx8T2UudGVzdChpLnJlcGxhY2UoeGUpKSkpcmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXtsZXQgbj1gY2xhc3MgJHt6KHQsXCJuYW1lXCIpJiZ0Lm5hbWV8fFwiKGFub255bW91cylcIn1gO2lmKFwiRnVuY3Rpb25cIiE9PWUmJm51bGwhPT1lJiYobis9YCBbJHtlfV1gKSxcIlwiIT09ciYmZSE9PXImJihuKz1gIFske3J9XWApLG51bGwhPT1lKXtjb25zdCBlPUModCkubmFtZTtlJiYobis9YCBleHRlbmRzICR7ZX1gKX1lbHNlIG4rPVwiIGV4dGVuZHMgW251bGwgcHJvdG90eXBlXVwiO3JldHVybmBbJHtufV1gfSh0LGUscil9bGV0IGk9XCJGdW5jdGlvblwiO1d0KHQpJiYoaT1gR2VuZXJhdG9yJHtpfWApLEd0KHQpJiYoaT1gQXN5bmMke2l9YCk7bGV0IG89YFske2l9YDtyZXR1cm4gbnVsbD09PWUmJihvKz1cIiAobnVsbCBwcm90b3R5cGUpXCIpLFwiXCI9PT10Lm5hbWU/bys9XCIgKGFub255bW91cylcIjpvKz1gOiAke3QubmFtZX1gLG8rPVwiXVwiLGUhPT1pJiZudWxsIT09ZSYmKG8rPWAgJHtlfWApLFwiXCIhPT1yJiZlIT09ciYmKG8rPWAgWyR7cn1dYCksb30oZSx1LGwpLDA9PT1vLmxlbmd0aCYmdm9pZCAwPT09YSlyZXR1cm4gdC5zdHlsaXplKGYsXCJzcGVjaWFsXCIpfWVsc2UgaWYob2UoZSkpe2Y9SihudWxsIT09dT9lOm5ldyBLKGUpKTtjb25zdCBuPVllKHUsbCxcIlJlZ0V4cFwiKTtpZihcIlJlZ0V4cCBcIiE9PW4mJihmPWAke259JHtmfWApLDA9PT1vLmxlbmd0aCYmdm9pZCAwPT09YXx8cj50LmRlcHRoJiZudWxsIT09dC5kZXB0aClyZXR1cm4gdC5zdHlsaXplKGYsXCJyZWdleHBcIil9ZWxzZSBpZihzZShlKSl7Zj1SKHkoZSkpP2IoZSk6ZyhlKTtjb25zdCByPVllKHUsbCxcIkRhdGVcIik7aWYoXCJEYXRlIFwiIT09ciYmKGY9YCR7cn0ke2Z9YCksMD09PW8ubGVuZ3RoJiZ2b2lkIDA9PT1hKXJldHVybiB0LnN0eWxpemUoZixcImRhdGVcIil9ZWxzZSBpZihrdChlKSl7aWYoZj1mdW5jdGlvbih0LGUscixuLGkpe2NvbnN0IG89bnVsbCE9dC5uYW1lP250KHQubmFtZSk6XCJFcnJvclwiO2xldCBzPW8ubGVuZ3RoLGE9dC5zdGFjaz9udCh0LnN0YWNrKTptKHQpO2lmKCFuLnNob3dIaWRkZW4mJjAhPT1pLmxlbmd0aClmb3IoY29uc3QgZSBvZltcIm5hbWVcIixcIm1lc3NhZ2VcIixcInN0YWNrXCJdKXtjb25zdCByPWkuaW5kZXhPZihlKTstMSE9PXImJmEuaW5jbHVkZXModFtlXSkmJmkuc3BsaWNlKHIsMSl9aWYobnVsbD09PWV8fG8uZW5kc1dpdGgoXCJFcnJvclwiKSYmYS5zdGFydHNXaXRoKG8pJiYoYS5sZW5ndGg9PT1zfHxcIjpcIj09PWFbc118fFwiXFxuXCI9PT1hW3NdKSl7bGV0IHQ9XCJFcnJvclwiO2lmKG51bGw9PT1lKXtjb25zdCBlPWEubWF0Y2goL14oW0EtWl1bYS16XyBBLVowLTlbXFxdKCktXSspKD86OnxcXG4gezR9YXQpLyl8fGEubWF0Y2goL14oW2Etel9BLVowLTktXSpFcnJvcikkLyk7dD1lJiZlWzFdfHxcIlwiLHM9dC5sZW5ndGgsdD10fHxcIkVycm9yXCJ9Y29uc3Qgbj1ZZShlLHIsdCkuc2xpY2UoMCwtMSk7byE9PW4mJihhPW4uaW5jbHVkZXMobyk/MD09PXM/YCR7bn06ICR7YX1gOmAke259JHthLnNsaWNlKHMpfWA6YCR7bn0gWyR7b31dJHthLnNsaWNlKHMpfWApfWxldCB1PXQubWVzc2FnZSYmYS5pbmRleE9mKHQubWVzc2FnZSl8fC0xOy0xIT09dSYmKHUrPXQubWVzc2FnZS5sZW5ndGgpO2NvbnN0IGw9YS5pbmRleE9mKFwiXFxuICAgIGF0XCIsdSk7aWYoLTE9PT1sKWE9YFske2F9XWA7ZWxzZSBpZihuLmNvbG9ycyl7bGV0IHQ9YS5zbGljZSgwLGwpO2NvbnN0IGU9YS5zbGljZShsKzEpLnNwbGl0KFwiXFxuXCIpO2Zvcihjb25zdCByIG9mIGUpe2NvbnN0IGU9ci5tYXRjaChUZSl8fHIubWF0Y2goSWUpO2lmKG51bGwhPT1lJiZwZS5leGlzdHMoZVsxXSkpdCs9YFxcbiR7bi5zdHlsaXplKHIsXCJ1bmRlZmluZWRcIil9YDtlbHNle2xldCBlO3QrPVwiXFxuXCI7bGV0IGk9MDtmb3IoO2U9QmUuZXhlYyhyKTspdCs9ci5zbGljZShpLGUuaW5kZXgrMTQpLHQrPW4uc3R5bGl6ZShlWzFdLFwibW9kdWxlXCIpLGk9ZS5pbmRleCtlWzBdLmxlbmd0aDt0Kz0wPT09aT9yOnIuc2xpY2UoaSl9fWE9dH1pZigwIT09bi5pbmRlbnRhdGlvbkx2bCl7Y29uc3QgdD1cIiBcIi5yZXBlYXQobi5pbmRlbnRhdGlvbkx2bCk7YT1hLnJlcGxhY2UoL1xcbi9nLGBcXG4ke3R9YCl9cmV0dXJuIGF9KGUsdSxsLHQsbyksMD09PW8ubGVuZ3RoJiZ2b2lkIDA9PT1hKXJldHVybiBmfWVsc2UgaWYoenQoZSkpe2NvbnN0IHI9WWUodSxsLEh0KGUpP1wiQXJyYXlCdWZmZXJcIjpcIlNoYXJlZEFycmF5QnVmZmVyXCIpO2lmKHZvaWQgMD09PWkpdz1ycjtlbHNlIGlmKDA9PT1vLmxlbmd0aCYmdm9pZCAwPT09YSlyZXR1cm4gcitgeyBieXRlTGVuZ3RoOiAke0plKHQuc3R5bGl6ZSxlLmJ5dGVMZW5ndGgpfSB9YDtjWzBdPWAke3J9e2AsaChvLFwiYnl0ZUxlbmd0aFwiKX1lbHNlIGlmKFZ0KGUpKWNbMF09YCR7WWUodSxsLFwiRGF0YVZpZXdcIil9e2AsaChvLFwiYnl0ZUxlbmd0aFwiLFwiYnl0ZU9mZnNldFwiLFwiYnVmZmVyXCIpO2Vsc2UgaWYodGUoZSkpY1swXT1gJHtZZSh1LGwsXCJQcm9taXNlXCIpfXtgLHc9cHI7ZWxzZSBpZihpZShlKSljWzBdPWAke1llKHUsbCxcIldlYWtTZXRcIil9e2Asdz10LnNob3dIaWRkZW4/Y3I6bHI7ZWxzZSBpZihuZShlKSljWzBdPWAke1llKHUsbCxcIldlYWtNYXBcIil9e2Asdz10LnNob3dIaWRkZW4/ZnI6bHI7ZWxzZSBpZihadChlKSljWzBdPWAke1llKHUsbCxcIk1vZHVsZVwiKX17YCx3PXRyLmJpbmQobnVsbCxvKTtlbHNlIGlmKHF0KGUpKXtpZihmPWZ1bmN0aW9uKHQsZSxyLG4saSl7bGV0IG8scztsZSh0KT8obz1QLHM9XCJOdW1iZXJcIik6dWUodCk/KG89Z3Qscz1cIlN0cmluZ1wiLHIuc3BsaWNlKDAsdC5sZW5ndGgpKTpjZSh0KT8obz1kLHM9XCJCb29sZWFuXCIpOmZlKHQpPyhvPXAscz1cIkJpZ0ludFwiKToobz1tdCxzPVwiU3ltYm9sXCIpO2xldCBhPWBbJHtzfWA7cmV0dXJuIHMhPT1uJiYoYSs9bnVsbD09PW4/XCIgKG51bGwgcHJvdG90eXBlKVwiOmAgKCR7bn0pYCksYSs9YDogJHtRZShDZSxvKHQpLGUpfV1gLFwiXCIhPT1pJiZpIT09biYmKGErPWAgWyR7aX1dYCksMCE9PXIubGVuZ3RofHxlLnN0eWxpemU9PT1DZT9hOmUuc3R5bGl6ZShhLGR0KHMpKX0oZSx0LG8sdSxsKSwwPT09by5sZW5ndGgmJnZvaWQgMD09PWEpcmV0dXJuIGZ9ZWxzZXtpZigwPT09by5sZW5ndGgmJnZvaWQgMD09PWEpe2lmKEt0KGUpKXtjb25zdCByPUx0KGUpLnRvU3RyaW5nKDE2KTtyZXR1cm4gdC5zdHlsaXplKGBbRXh0ZXJuYWw6ICR7cn1dYCxcInNwZWNpYWxcIil9cmV0dXJuYCR7VmUoZSx1LGwpfXt9YH1jWzBdPWAke1ZlKGUsdSxsKX17YH1pZihyPnQuZGVwdGgmJm51bGwhPT10LmRlcHRoKXtsZXQgcj1WZShlLHUsbCkuc2xpY2UoMCwtMSk7cmV0dXJuIG51bGwhPT11JiYocj1gWyR7cn1dYCksdC5zdHlsaXplKHIsXCJzcGVjaWFsXCIpfXIrPTEsdC5zZWVuLnB1c2goZSksdC5jdXJyZW50RGVwdGg9cjtjb25zdCBPPXQuaW5kZW50YXRpb25Mdmw7dHJ5e2ZvcihJPXcodCxlLHIpLEE9MDtBPG8ubGVuZ3RoO0ErKylJLnB1c2goZHIodCxlLHIsb1tBXSxCKSk7dm9pZCAwIT09YSYmSS5wdXNoKC4uLmEpfWNhdGNoKHIpe3JldHVybiBmdW5jdGlvbih0LGUscixuKXtpZihDdChlKSlyZXR1cm4gdC5zZWVuLnBvcCgpLHQuaW5kZW50YXRpb25Mdmw9bix0LnN0eWxpemUoYFske3J9OiBJbnNwZWN0aW9uIGludGVycnVwdGVkIHByZW1hdHVyZWx5LiBNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZC5dYCxcInNwZWNpYWxcIik7aGUuZmFpbChlLnN0YWNrKX0odCxyLFZlKGUsdSxsKS5zbGljZSgwLC0xKSxPKX1pZih2b2lkIDAhPT10LmNpcmN1bGFyKXtjb25zdCByPXQuY2lyY3VsYXIuZ2V0KGUpO2lmKHZvaWQgMCE9PXIpe2NvbnN0IGU9dC5zdHlsaXplKGA8cmVmICoke3J9PmAsXCJzcGVjaWFsXCIpOyEwIT09dC5jb21wYWN0P2Y9XCJcIj09PWY/ZTpgJHtlfSAke2Z9YDpjWzBdPWAke2V9ICR7Y1swXX1gfX1pZih0LnNlZW4ucG9wKCksdC5zb3J0ZWQpe2NvbnN0IGU9ITA9PT10LnNvcnRlZD92b2lkIDA6dC5zb3J0ZWQ7aWYoMD09PUIpST1JLnNvcnQoZSk7ZWxzZSBpZihvLmxlbmd0aD4xKXtjb25zdCB0PUkuc2xpY2UoSS5sZW5ndGgtby5sZW5ndGgpLnNvcnQoZSk7SS5zcGxpY2UoSS5sZW5ndGgtby5sZW5ndGgsby5sZW5ndGgsLi4udCl9fWNvbnN0IHg9Z3IodCxJLGYsYyxCLHIsZSksTj0odC5idWRnZXRbdC5pbmRlbnRhdGlvbkx2bF18fDApK3gubGVuZ3RoO3JldHVybiB0LmJ1ZGdldFt0LmluZGVudGF0aW9uTHZsXT1OLE4+MioqMjcmJih0LmRlcHRoPS0xKSx4fSh0LGUscixpKX1mdW5jdGlvbiBYZSh0LGUpe3JldHVybiBlIT09YCR7dH0gSXRlcmF0b3JgJiYoXCJcIiE9PWUmJihlKz1cIl0gW1wiKSxlKz1gJHt0fSBJdGVyYXRvcmApLFtgWyR7ZX1dIHtgLFwifVwiXX1mdW5jdGlvbiBKZSh0LGUpe3JldHVybiB0KEcoZSwtMCk/XCItMFwiOmAke2V9YCxcIm51bWJlclwiKX1mdW5jdGlvbiBaZSh0LGUpe3JldHVybiB0KGAke2V9bmAsXCJiaWdpbnRcIil9ZnVuY3Rpb24gUWUodCxlLHIpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXtsZXQgbj1cIlwiO2lmKGUubGVuZ3RoPnIubWF4U3RyaW5nTGVuZ3RoKXtjb25zdCB0PWUubGVuZ3RoLXIubWF4U3RyaW5nTGVuZ3RoO2U9ZS5zbGljZSgwLHIubWF4U3RyaW5nTGVuZ3RoKSxuPWAuLi4gJHt0fSBtb3JlIGNoYXJhY3RlciR7dD4xP1wic1wiOlwiXCJ9YH1yZXR1cm4hMCE9PXIuY29tcGFjdCYmZS5sZW5ndGg+MTYmJmUubGVuZ3RoPnIuYnJlYWtMZW5ndGgtci5pbmRlbnRhdGlvbkx2bC00P2Uuc3BsaXQoL1xcbi8pLm1hcCgoKGUscixuKT0+dChGZShlKyhyPT09bi5sZW5ndGgtMT9cIlwiOlwiXFxuXCIpKSxcInN0cmluZ1wiKSkpLmpvaW4oYCArXFxuJHtcIiBcIi5yZXBlYXQoci5pbmRlbnRhdGlvbkx2bCsyKX1gKStuOnQoRmUoZSksXCJzdHJpbmdcIikrbn1yZXR1cm5cIm51bWJlclwiPT10eXBlb2YgZT9KZSh0LGUpOlwiYmlnaW50XCI9PXR5cGVvZiBlP1plKHQsZSk6XCJib29sZWFuXCI9PXR5cGVvZiBlP3QoYCR7ZX1gLFwiYm9vbGVhblwiKTp2b2lkIDA9PT1lP3QoXCJ1bmRlZmluZWRcIixcInVuZGVmaW5lZFwiKTp0KGJ0KGUpLFwic3ltYm9sXCIpfWZ1bmN0aW9uIHRyKHQsZSxyLG4pe2NvbnN0IGk9bmV3IG8odC5sZW5ndGgpO2ZvcihsZXQgbz0wO288dC5sZW5ndGg7bysrKXRyeXtpW29dPWRyKGUscixuLHRbb10sMCl9Y2F0Y2gocil7aWYoIVF0KHIpfHxcIlJlZmVyZW5jZUVycm9yXCIhPT1yLm5hbWUpdGhyb3cgcjtjb25zdCBzPXtbdFtvXV06XCJcIn07aVtvXT1kcihlLHMsbix0W29dLDApO2NvbnN0IGE9aVtvXS5sYXN0SW5kZXhPZihcIiBcIik7aVtvXT1pW29dLnNsaWNlKDAsYSsxKStlLnN0eWxpemUoXCI8dW5pbml0aWFsaXplZD5cIixcInNwZWNpYWxcIil9cmV0dXJuIHQubGVuZ3RoPTAsaX1mdW5jdGlvbiBlcih0LGUscixuLGksbyl7Y29uc3Qgcz1XKGUpO2xldCBhPW87Zm9yKDtvPHMubGVuZ3RoJiZpLmxlbmd0aDxuO28rKyl7Y29uc3QgdT1zW29dLGw9K3U7aWYobD4yKiozMi0yKWJyZWFrO2lmKGAke2F9YCE9PXUpe2lmKCFBZS50ZXN0KHUpKWJyZWFrO2NvbnN0IGU9bC1hLHI9YDwke2V9IGVtcHR5IGl0ZW0ke2U+MT9cInNcIjpcIlwifT5gO2lmKGkucHVzaCh0LnN0eWxpemUocixcInVuZGVmaW5lZFwiKSksYT1sLGkubGVuZ3RoPT09bilicmVha31pLnB1c2goZHIodCxlLHIsdSwxKSksYSsrfWNvbnN0IHU9ZS5sZW5ndGgtYTtpZihpLmxlbmd0aCE9PW4pe2lmKHU+MCl7Y29uc3QgZT1gPCR7dX0gZW1wdHkgaXRlbSR7dT4xP1wic1wiOlwiXCJ9PmA7aS5wdXNoKHQuc3R5bGl6ZShlLFwidW5kZWZpbmVkXCIpKX19ZWxzZSB1PjAmJmkucHVzaChgLi4uICR7dX0gbW9yZSBpdGVtJHt1PjE/XCJzXCI6XCJcIn1gKTtyZXR1cm4gaX1mdW5jdGlvbiBycih0LGUpe2xldCBuO3RyeXtuPW5ldyBTdChlKX1jYXRjaHtyZXR1cm5bdC5zdHlsaXplKFwiKGRldGFjaGVkKVwiLFwic3BlY2lhbFwiKV19dm9pZCAwPT09eWUmJih5ZT1BdChyKDI1NSkubC5wcm90b3R5cGUuaGV4U2xpY2UpKTtsZXQgaT15dChmdCh5ZShuLDAsSSh0Lm1heEFycmF5TGVuZ3RoLG4ubGVuZ3RoKSksLyguezJ9KS9nLFwiJDEgXCIpKTtjb25zdCBvPW4ubGVuZ3RoLXQubWF4QXJyYXlMZW5ndGg7cmV0dXJuIG8+MCYmKGkrPWAgLi4uICR7b30gbW9yZSBieXRlJHtvPjE/XCJzXCI6XCJcIn1gKSxbYCR7dC5zdHlsaXplKFwiW1VpbnQ4Q29udGVudHNdXCIsXCJzcGVjaWFsXCIpfTogPCR7aX0+YF19ZnVuY3Rpb24gbnIodCxlLHIpe2NvbnN0IG49ZS5sZW5ndGgsaT1JKFQoMCx0Lm1heEFycmF5TGVuZ3RoKSxuKSxvPW4taSxzPVtdO2ZvcihsZXQgbj0wO248aTtuKyspe2lmKCF6KGUsbikpcmV0dXJuIGVyKHQsZSxyLGkscyxuKTtzLnB1c2goZHIodCxlLHIsbiwxKSl9cmV0dXJuIG8+MCYmcy5wdXNoKGAuLi4gJHtvfSBtb3JlIGl0ZW0ke28+MT9cInNcIjpcIlwifWApLHN9ZnVuY3Rpb24gaXIodCxlLHIsbixpKXtjb25zdCBzPUkoVCgwLHIubWF4QXJyYXlMZW5ndGgpLGUpLGE9dC5sZW5ndGgtcyx1PW5ldyBvKHMpLGM9dC5sZW5ndGg+MCYmXCJudW1iZXJcIj09dHlwZW9mIHRbMF0/SmU6WmU7Zm9yKGxldCBlPTA7ZTxzOysrZSl1W2VdPWMoci5zdHlsaXplLHRbZV0pO2lmKGE+MCYmKHVbc109YC4uLiAke2F9IG1vcmUgaXRlbSR7YT4xP1wic1wiOlwiXCJ9YCksci5zaG93SGlkZGVuKXtyLmluZGVudGF0aW9uTHZsKz0yO2Zvcihjb25zdCBlIG9mW1wiQllURVNfUEVSX0VMRU1FTlRcIixcImxlbmd0aFwiLFwiYnl0ZUxlbmd0aFwiLFwiYnl0ZU9mZnNldFwiLFwiYnVmZmVyXCJdKXtjb25zdCBuPUtlKHIsdFtlXSxpLCEwKTtsKHUsYFske2V9XTogJHtufWApfXIuaW5kZW50YXRpb25MdmwtPTJ9cmV0dXJuIHV9ZnVuY3Rpb24gb3IodCxlLHIsbil7Y29uc3QgaT1bXTtlLmluZGVudGF0aW9uTHZsKz0yO2Zvcihjb25zdCByIG9mIHQpbChpLEtlKGUscixuKSk7cmV0dXJuIGUuaW5kZW50YXRpb25MdmwtPTIsaX1mdW5jdGlvbiBzcih0LGUscixuKXtjb25zdCBpPVtdO2UuaW5kZW50YXRpb25MdmwrPTI7Zm9yKGNvbnN0ezA6ciwxOm99b2YgdClpLnB1c2goYCR7S2UoZSxyLG4pfSA9PiBgK0tlKGUsbyxuKSk7cmV0dXJuIGUuaW5kZW50YXRpb25MdmwtPTIsaX1mdW5jdGlvbiBhcih0LGUscixuKXtjb25zdCBpPVQodC5tYXhBcnJheUxlbmd0aCwwKSxzPUkoaSxyLmxlbmd0aCksYT1uZXcgbyhzKTt0LmluZGVudGF0aW9uTHZsKz0yO2ZvcihsZXQgbj0wO248cztuKyspYVtuXT1LZSh0LHJbbl0sZSk7dC5pbmRlbnRhdGlvbkx2bC09MiwwIT09bnx8dC5zb3J0ZWR8fGYoYSk7Y29uc3QgdT1yLmxlbmd0aC1zO3JldHVybiB1PjAmJmwoYSxgLi4uICR7dX0gbW9yZSBpdGVtJHt1PjE/XCJzXCI6XCJcIn1gKSxhfWZ1bmN0aW9uIHVyKHQsZSxyLG4pe2NvbnN0IGk9VCh0Lm1heEFycmF5TGVuZ3RoLDApLHM9ci5sZW5ndGgvMixhPXMtaSx1PUkoaSxzKTtsZXQgbD1uZXcgbyh1KSxjPTA7aWYodC5pbmRlbnRhdGlvbkx2bCs9MiwwPT09bil7Zm9yKDtjPHU7YysrKXtjb25zdCBuPTIqYztsW2NdPWAke0tlKHQscltuXSxlKX0gPT4gJHtLZSh0LHJbbisxXSxlKX1gfXQuc29ydGVkfHwobD1sLnNvcnQoKSl9ZWxzZSBmb3IoO2M8dTtjKyspe2NvbnN0IG49MipjLGk9W0tlKHQscltuXSxlKSxLZSh0LHJbbisxXSxlKV07bFtjXT1ncih0LGksXCJcIixbXCJbXCIsXCJdXCJdLDIsZSl9cmV0dXJuIHQuaW5kZW50YXRpb25MdmwtPTIsYT4wJiZsLnB1c2goYC4uLiAke2F9IG1vcmUgaXRlbSR7YT4xP1wic1wiOlwiXCJ9YCksbH1mdW5jdGlvbiBscih0KXtyZXR1cm5bdC5zdHlsaXplKFwiPGl0ZW1zIHVua25vd24+XCIsXCJzcGVjaWFsXCIpXX1mdW5jdGlvbiBjcih0LGUscil7cmV0dXJuIGFyKHQscixSdChlKSwwKX1mdW5jdGlvbiBmcih0LGUscil7cmV0dXJuIHVyKHQscixSdChlKSwwKX1mdW5jdGlvbiBocih0LGUscixuKXtjb25zdHswOmksMTpvfT1SdChyLCEwKTtyZXR1cm4gbz8odFswXT10WzBdLnJlcGxhY2UoLyBJdGVyYXRvcl0geyQvLFwiIEVudHJpZXNdIHtcIiksdXIoZSxuLGksMikpOmFyKGUsbixpLDEpfWZ1bmN0aW9uIHByKHQsZSxyKXtsZXQgbjtjb25zdHswOmksMTpvfT1JdChlKTtpZihpPT09T3Qpbj1bdC5zdHlsaXplKFwiPHBlbmRpbmc+XCIsXCJzcGVjaWFsXCIpXTtlbHNle3QuaW5kZW50YXRpb25MdmwrPTI7Y29uc3QgZT1LZSh0LG8scik7dC5pbmRlbnRhdGlvbkx2bC09MixuPVtpPT09eHQ/YCR7dC5zdHlsaXplKFwiPHJlamVjdGVkPlwiLFwic3BlY2lhbFwiKX0gJHtlfWA6ZV19cmV0dXJuIG59ZnVuY3Rpb24gZHIodCxlLHIsbixpLG8scz1lKXtsZXQgYSx1LGw9XCIgXCI7aWYodm9pZCAwIT09KG89b3x8JChlLG4pfHx7dmFsdWU6ZVtuXSxlbnVtZXJhYmxlOiEwfSkudmFsdWUpe2NvbnN0IGU9ITAhPT10LmNvbXBhY3R8fDAhPT1pPzI6Mzt0LmluZGVudGF0aW9uTHZsKz1lLHU9S2UodCxvLnZhbHVlLHIpLDM9PT1lJiZ0LmJyZWFrTGVuZ3RoPExlKHUsdC5jb2xvcnMpJiYobD1gXFxuJHtcIiBcIi5yZXBlYXQodC5pbmRlbnRhdGlvbkx2bCl9YCksdC5pbmRlbnRhdGlvbkx2bC09ZX1lbHNlIGlmKHZvaWQgMCE9PW8uZ2V0KXtjb25zdCBlPXZvaWQgMCE9PW8uc2V0P1wiR2V0dGVyL1NldHRlclwiOlwiR2V0dGVyXCIsbj10LnN0eWxpemUsaT1cInNwZWNpYWxcIjtpZih0LmdldHRlcnMmJighMD09PXQuZ2V0dGVyc3x8XCJnZXRcIj09PXQuZ2V0dGVycyYmdm9pZCAwPT09by5zZXR8fFwic2V0XCI9PT10LmdldHRlcnMmJnZvaWQgMCE9PW8uc2V0KSl0cnl7Y29uc3QgYT13KG8uZ2V0LHMpO2lmKHQuaW5kZW50YXRpb25MdmwrPTIsbnVsbD09PWEpdT1gJHtuKGBbJHtlfTpgLGkpfSAke24oXCJudWxsXCIsXCJudWxsXCIpfSR7bihcIl1cIixpKX1gO2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIGEpdT1gJHtuKGBbJHtlfV1gLGkpfSAke0tlKHQsYSxyKX1gO2Vsc2V7Y29uc3Qgcj1RZShuLGEsdCk7dT1gJHtuKGBbJHtlfTpgLGkpfSAke3J9JHtuKFwiXVwiLGkpfWB9dC5pbmRlbnRhdGlvbkx2bC09Mn1jYXRjaCh0KXtjb25zdCByPWA8SW5zcGVjdGlvbiB0aHJldyAoJHt0Lm1lc3NhZ2V9KT5gO3U9YCR7bihgWyR7ZX06YCxpKX0gJHtyfSR7bihcIl1cIixpKX1gfWVsc2UgdT10LnN0eWxpemUoYFske2V9XWAsaSl9ZWxzZSB1PXZvaWQgMCE9PW8uc2V0P3Quc3R5bGl6ZShcIltTZXR0ZXJdXCIsXCJzcGVjaWFsXCIpOnQuc3R5bGl6ZShcInVuZGVmaW5lZFwiLFwidW5kZWZpbmVkXCIpO2lmKDE9PT1pKXJldHVybiB1O2lmKFwic3ltYm9sXCI9PXR5cGVvZiBuKXtjb25zdCBlPWZ0KGJ0KG4pLF9lLCRlKTthPWBbJHt0LnN0eWxpemUoZSxcInN5bWJvbFwiKX1dYH1lbHNlIGE9XCJfX3Byb3RvX19cIj09PW4/XCJbJ19fcHJvdG9fXyddXCI6ITE9PT1vLmVudW1lcmFibGU/YFske2Z0KG4sX2UsJGUpfV1gOlgoU2Usbik/dC5zdHlsaXplKG4sXCJuYW1lXCIpOnQuc3R5bGl6ZShGZShuKSxcInN0cmluZ1wiKTtyZXR1cm5gJHthfToke2x9JHt1fWB9ZnVuY3Rpb24geXIodCxlLHIsbil7bGV0IGk9ZS5sZW5ndGgrcjtpZihpK2UubGVuZ3RoPnQuYnJlYWtMZW5ndGgpcmV0dXJuITE7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspaWYodC5jb2xvcnM/aSs9RnQoZVtyXSkubGVuZ3RoOmkrPWVbcl0ubGVuZ3RoLGk+dC5icmVha0xlbmd0aClyZXR1cm4hMTtyZXR1cm5cIlwiPT09bnx8IXN0KG4sXCJcXG5cIil9ZnVuY3Rpb24gZ3IodCxlLHIsbixpLHMsYSl7aWYoITAhPT10LmNvbXBhY3Qpe2lmKFwibnVtYmVyXCI9PXR5cGVvZiB0LmNvbXBhY3QmJnQuY29tcGFjdD49MSl7Y29uc3QgdT1lLmxlbmd0aDtpZigyPT09aSYmdT42JiYoZT1mdW5jdGlvbih0LGUscil7bGV0IG49MCxpPTAscz0wLGE9ZS5sZW5ndGg7dC5tYXhBcnJheUxlbmd0aDxlLmxlbmd0aCYmYS0tO2NvbnN0IHU9bmV3IG8oYSk7Zm9yKDtzPGE7cysrKXtjb25zdCByPUxlKGVbc10sdC5jb2xvcnMpO3Vbc109cixuKz1yKzIsaTxyJiYoaT1yKX1jb25zdCBjPWkrMjtpZigzKmMrdC5pbmRlbnRhdGlvbkx2bDx0LmJyZWFrTGVuZ3RoJiYobi9jPjV8fGk8PTYpKXtjb25zdCBpPTIuNSxvPU8oYy1uL2UubGVuZ3RoKSxzPVQoYy0zLW8sMSksZj1JKEIoTyhpKnMqYSkvcyksQSgodC5icmVha0xlbmd0aC10LmluZGVudGF0aW9uTHZsKS9jKSw0KnQuY29tcGFjdCwxNSk7aWYoZjw9MSlyZXR1cm4gZTtjb25zdCBoPVtdLHA9W107Zm9yKGxldCB0PTA7dDxmO3QrKyl7bGV0IHI9MDtmb3IobGV0IG49dDtuPGUubGVuZ3RoO24rPWYpdVtuXT5yJiYocj11W25dKTtyKz0yLHBbdF09cn1sZXQgZD1sdDtpZih2b2lkIDAhPT1yKWZvcihsZXQgdD0wO3Q8ZS5sZW5ndGg7dCsrKWlmKFwibnVtYmVyXCIhPXR5cGVvZiByW3RdJiZcImJpZ2ludFwiIT10eXBlb2Ygclt0XSl7ZD11dDticmVha31mb3IobGV0IHQ9MDt0PGE7dCs9Zil7Y29uc3Qgcj1JKHQrZixhKTtsZXQgbj1cIlwiLGk9dDtmb3IoO2k8ci0xO2krKyl7Y29uc3Qgcj1wW2ktdF0rZVtpXS5sZW5ndGgtdVtpXTtuKz1kKGAke2VbaV19LCBgLHIsXCIgXCIpfWlmKGQ9PT1sdCl7Y29uc3Qgcj1wW2ktdF0rZVtpXS5sZW5ndGgtdVtpXS0yO24rPWx0KGVbaV0scixcIiBcIil9ZWxzZSBuKz1lW2ldO2woaCxuKX10Lm1heEFycmF5TGVuZ3RoPGUubGVuZ3RoJiZsKGgsZVthXSksZT1ofXJldHVybiBlfSh0LGUsYSkpLHQuY3VycmVudERlcHRoLXM8dC5jb21wYWN0JiZ1PT09ZS5sZW5ndGgmJnlyKHQsZSxlLmxlbmd0aCt0LmluZGVudGF0aW9uTHZsK25bMF0ubGVuZ3RoK3IubGVuZ3RoKzEwLHIpKXJldHVybmAke3I/YCR7cn0gYDpcIlwifSR7blswXX0gJHskdChlLFwiLCBcIil9ICR7blsxXX1gfWNvbnN0IHU9YFxcbiR7Y3QoXCIgXCIsdC5pbmRlbnRhdGlvbkx2bCl9YDtyZXR1cm5gJHtyP2Ake3J9IGA6XCJcIn0ke25bMF19JHt1fSAgJHskdChlLGAsJHt1fSAgYCl9JHt1fSR7blsxXX1gfWlmKHlyKHQsZSwwLHIpKXJldHVybmAke25bMF19JHtyP2AgJHtyfWA6XCJcIn0gJHskdChlLFwiLCBcIil9IGArblsxXTtjb25zdCB1PWN0KFwiIFwiLHQuaW5kZW50YXRpb25MdmwpLGM9XCJcIj09PXImJjE9PT1uWzBdLmxlbmd0aD9cIiBcIjpgJHtyP2AgJHtyfWA6XCJcIn1cXG4ke3V9ICBgO3JldHVybmAke25bMF19JHtjfSR7JHQoZSxgLFxcbiR7dX0gIGApfSAke25bMV19YH1mdW5jdGlvbiBicih0KXtjb25zdCBlPUJ0KHQsITEpO2lmKHZvaWQgMCE9PWUmJih0PWUpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQudG9TdHJpbmcpcmV0dXJuITA7aWYoeih0LFwidG9TdHJpbmdcIikpcmV0dXJuITE7bGV0IHI9dDtkb3tyPUMocil9d2hpbGUoIXoocixcInRvU3RyaW5nXCIpKTtjb25zdCBuPSQocixcImNvbnN0cnVjdG9yXCIpO3JldHVybiB2b2lkIDAhPT1uJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLnZhbHVlJiZnZS5oYXMobi52YWx1ZS5uYW1lKX1jb25zdCBtcj10PT5wdCh0Lm1lc3NhZ2UsXCJcXG5cIiwxKVswXTtsZXQgd3I7ZnVuY3Rpb24gX3IodCl7dHJ5e3JldHVybiBFKHQpfWNhdGNoKHQpe2lmKCF3cil0cnl7Y29uc3QgdD17fTt0LmE9dCxFKHQpfWNhdGNoKHQpe3dyPW1yKHQpfWlmKFwiVHlwZUVycm9yXCI9PT10Lm5hbWUmJm1yKHQpPT09d3IpcmV0dXJuXCJbQ2lyY3VsYXJdXCI7dGhyb3cgdH19ZnVuY3Rpb24gRXIodCxlKXtjb25zdCByPWVbMF07bGV0IG49MCxpPVwiXCIsbz1cIlwiO2lmKFwic3RyaW5nXCI9PXR5cGVvZiByKXtpZigxPT09ZS5sZW5ndGgpcmV0dXJuIHI7bGV0IHMsYT0wO2ZvcihsZXQgbz0wO288ci5sZW5ndGgtMTtvKyspaWYoMzc9PT1pdChyLG8pKXtjb25zdCB1PWl0KHIsKytvKTtpZihuKzEhPT1lLmxlbmd0aCl7c3dpdGNoKHUpe2Nhc2UgMTE1OmNvbnN0IHU9ZVsrK25dO3M9XCJudW1iZXJcIj09dHlwZW9mIHU/SmUoQ2UsdSk6XCJiaWdpbnRcIj09dHlwZW9mIHU/YCR7dX1uYDpcIm9iamVjdFwiPT10eXBlb2YgdSYmbnVsbCE9PXUmJmJyKHUpP1BlKHUsey4uLnQsY29tcGFjdDozLGNvbG9yczohMSxkZXB0aDowfSk6bnQodSk7YnJlYWs7Y2FzZSAxMDY6cz1fcihlWysrbl0pO2JyZWFrO2Nhc2UgMTAwOmNvbnN0IGw9ZVsrK25dO3M9XCJiaWdpbnRcIj09dHlwZW9mIGw/YCR7bH1uYDpcInN5bWJvbFwiPT10eXBlb2YgbD9cIk5hTlwiOkplKENlLHgobCkpO2JyZWFrO2Nhc2UgNzk6cz1QZShlWysrbl0sdCk7YnJlYWs7Y2FzZSAxMTE6cz1QZShlWysrbl0sey4uLnQsc2hvd0hpZGRlbjohMCxzaG93UHJveHk6ITAsZGVwdGg6NH0pO2JyZWFrO2Nhc2UgMTA1OmNvbnN0IGM9ZVsrK25dO3M9XCJiaWdpbnRcIj09dHlwZW9mIGM/YCR7Y31uYDpcInN5bWJvbFwiPT10eXBlb2YgYz9cIk5hTlwiOkplKENlLEwoYykpO2JyZWFrO2Nhc2UgMTAyOmNvbnN0IGY9ZVsrK25dO3M9XCJzeW1ib2xcIj09dHlwZW9mIGY/XCJOYU5cIjpKZShDZSxOKGYpKTticmVhaztjYXNlIDk5Om4rPTEscz1cIlwiO2JyZWFrO2Nhc2UgMzc6aSs9aHQocixhLG8pLGE9bysxO2NvbnRpbnVlO2RlZmF1bHQ6Y29udGludWV9YSE9PW8tMSYmKGkrPWh0KHIsYSxvLTEpKSxpKz1zLGE9bysxfWVsc2UgMzc9PT11JiYoaSs9aHQocixhLG8pLGE9bysxKX0wIT09YSYmKG4rKyxvPVwiIFwiLGE8ci5sZW5ndGgmJihpKz1odChyLGEpKSl9Zm9yKDtuPGUubGVuZ3RoOyl7Y29uc3Qgcj1lW25dO2krPW8saSs9XCJzdHJpbmdcIiE9dHlwZW9mIHI/UGUocix0KTpyLG89XCIgXCIsbisrfXJldHVybiBpfWlmKGkoXCJjb25maWdcIikuaGFzSW50bCl7Y29uc3QgdD1pKFwiaWN1XCIpO0xlPWZ1bmN0aW9uKGUscj0hMCl7bGV0IG49MDtyJiYoZT12cihlKSk7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2NvbnN0IGk9ZS5jaGFyQ29kZUF0KHIpO2lmKGk+PTEyNyl7bis9dC5nZXRTdHJpbmdXaWR0aChlLnNsaWNlKHIpLm5vcm1hbGl6ZShcIk5GQ1wiKSk7YnJlYWt9bis9aT49MzI/MTowfXJldHVybiBufX1lbHNle0xlPWZ1bmN0aW9uKHIsbj0hMCl7bGV0IGk9MDtuJiYocj12cihyKSkscj1hdChyLFwiTkZDXCIpO2Zvcihjb25zdCBuIG9mIG5ldyBaKHIpKXtjb25zdCByPW90KG4sMCk7dChyKT9pKz0yOmUocil8fGkrK31yZXR1cm4gaX07Y29uc3QgdD10PT50Pj00MzUyJiYodDw9NDQ0N3x8OTAwMT09PXR8fDkwMDI9PT10fHx0Pj0xMTkwNCYmdDw9MTI4NzEmJjEyMzUxIT09dHx8dD49MTI4ODAmJnQ8PTE5OTAzfHx0Pj0xOTk2OCYmdDw9NDIxODJ8fHQ+PTQzMzYwJiZ0PD00MzM4OHx8dD49NDQwMzImJnQ8PTU1MjAzfHx0Pj02Mzc0NCYmdDw9NjQyNTV8fHQ+PTY1MDQwJiZ0PD02NTA0OXx8dD49NjUwNzImJnQ8PTY1MTMxfHx0Pj02NTI4MSYmdDw9NjUzNzZ8fHQ+PTY1NTA0JiZ0PD02NTUxMHx8dD49MTEwNTkyJiZ0PD0xMTA1OTN8fHQ+PTEyNzQ4OCYmdDw9MTI3NTY5fHx0Pj0xMjc3NDQmJnQ8PTEyODU5MXx8dD49MTMxMDcyJiZ0PD0yNjIxNDEpLGU9dD0+dDw9MzF8fHQ+PTEyNyYmdDw9MTU5fHx0Pj03NjgmJnQ8PTg3OXx8dD49ODIwMyYmdDw9ODIwN3x8dD49ODQwMCYmdDw9ODQ0N3x8dD49NjUwMjQmJnQ8PTY1MDM5fHx0Pj02NTA1NiYmdDw9NjUwNzF8fHQ+PTkxNzc2MCYmdDw9OTE3OTk5fWZ1bmN0aW9uIHZyKHQpe3JldHVybiB0LnJlcGxhY2UoTmUsXCJcIil9dC5leHBvcnRzPXtpbnNwZWN0OlBlLGZvcm1hdDpmdW5jdGlvbiguLi50KXtyZXR1cm4gRXIodm9pZCAwLHQpfSxmb3JtYXRXaXRoT3B0aW9uczpmdW5jdGlvbih0LC4uLmUpe2lmKFwib2JqZWN0XCIhPXR5cGVvZiB0fHxudWxsPT09dCl0aHJvdyBuZXcgRHQoXCJpbnNwZWN0T3B0aW9uc1wiLFwib2JqZWN0XCIsdCk7cmV0dXJuIEVyKHQsZSl9LGdldFN0cmluZ1dpZHRoOkxlLGluc3BlY3REZWZhdWx0T3B0aW9uczptZSxzdHJpcFZUQ29udHJvbENoYXJhY3RlcnM6dnIsc3R5bGl6ZVdpdGhDb2xvcjpEZSxzdHlsaXplV2l0aEhUTUwodCxlKXtjb25zdCByPVBlLnN0eWxlc1tlXTtyZXR1cm4gdm9pZCAwIT09cj9gPHNwYW4gc3R5bGU9XCJjb2xvcjoke3J9O1wiPiR7dH08L3NwYW4+YDp0fSxQcm94eTpVdH19LDE4Mzp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKCF0KXRocm93IG5ldyBFcnJvcihcIkFzc2VydGlvbiBmYWlsZWRcIil9fSw5OTI6KHQsZSk9PntlLk5hdGl2ZU1vZHVsZT17ZXhpc3RzOnQ9PiF0LnN0YXJ0c1dpdGgoXCIvXCIpfX0sMTAxOih0LGUscik9Pntjb25zdHtBcnJheUlzQXJyYXk6bixBcnJheVByb3RvdHlwZUluY2x1ZGVzOmksQXJyYXlQcm90b3R5cGVJbmRleE9mOm8sQXJyYXlQcm90b3R5cGVKb2luOnMsQXJyYXlQcm90b3R5cGVQb3A6YSxBcnJheVByb3RvdHlwZVB1c2g6dSxBcnJheVByb3RvdHlwZVNwbGljZTpsLEVycm9yQ2FwdHVyZVN0YWNrVHJhY2U6YyxPYmplY3REZWZpbmVQcm9wZXJ0eTpmLFJlZmxlY3RBcHBseTpoLFJlZ0V4cFByb3RvdHlwZVRlc3Q6cCxTYWZlTWFwOmQsU3RyaW5nUHJvdG90eXBlRW5kc1dpdGg6eSxTdHJpbmdQcm90b3R5cGVJbmNsdWRlczpnLFN0cmluZ1Byb3RvdHlwZVNsaWNlOmIsU3RyaW5nUHJvdG90eXBlVG9Mb3dlckNhc2U6bX09cig3NjUpLHc9bmV3IGQsXz17fSxFPS9eKFtBLVpdW2EtejAtOV0qKSskLyx2PVtcInN0cmluZ1wiLFwiZnVuY3Rpb25cIixcIm51bWJlclwiLFwib2JqZWN0XCIsXCJGdW5jdGlvblwiLFwiT2JqZWN0XCIsXCJib29sZWFuXCIsXCJiaWdpbnRcIixcInN5bWJvbFwiXTtsZXQgUyxBLFQ9bnVsbDtmdW5jdGlvbiBJKCl7cmV0dXJuIFR8fChUPXIoNDgpKSxUfWNvbnN0IEI9TygoZnVuY3Rpb24odCxlLHIpeyh0PXgodCkpLm5hbWU9YCR7ZX0gWyR7cn1dYCx0LnN0YWNrLGRlbGV0ZSB0Lm5hbWV9KSk7ZnVuY3Rpb24gTyh0KXtjb25zdCBlPVwiX19ub2RlX2ludGVybmFsX1wiK3QubmFtZTtyZXR1cm4gZih0LFwibmFtZVwiLHt2YWx1ZTplfSksdH1jb25zdCB4PU8oKGZ1bmN0aW9uKHQpe3JldHVybiBTPUVycm9yLnN0YWNrVHJhY2VMaW1pdCxFcnJvci5zdGFja1RyYWNlTGltaXQ9MS8wLGModCksRXJyb3Iuc3RhY2tUcmFjZUxpbWl0PVMsdH0pKTtsZXQgUixOO3ZhciBMLFAsTSxVLGo7dC5leHBvcnRzPXtjb2RlczpfLGhpZGVTdGFja0ZyYW1lczpPLGlzU3RhY2tPdmVyZmxvd0Vycm9yOmZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PU4pdHJ5eyFmdW5jdGlvbiB0KCl7dCgpfSgpfWNhdGNoKHQpe049dC5tZXNzYWdlLFI9dC5uYW1lfXJldHVybiB0JiZ0Lm5hbWU9PT1SJiZ0Lm1lc3NhZ2U9PT1OfX0sTD1cIkVSUl9JTlZBTElEX0FSR19UWVBFXCIsUD0odCxlLHIpPT57QShcInN0cmluZ1wiPT10eXBlb2YgdCxcIiduYW1lJyBtdXN0IGJlIGEgc3RyaW5nXCIpLG4oZSl8fChlPVtlXSk7bGV0IGM9XCJUaGUgXCI7eSh0LFwiIGFyZ3VtZW50XCIpP2MrPWAke3R9IGA6Yys9YFwiJHt0fVwiICR7Zyh0LFwiLlwiKT9cInByb3BlcnR5XCI6XCJhcmd1bWVudFwifSBgLGMrPVwibXVzdCBiZSBcIjtjb25zdCBmPVtdLGg9W10sZD1bXTtmb3IoY29uc3QgdCBvZiBlKUEoXCJzdHJpbmdcIj09dHlwZW9mIHQsXCJBbGwgZXhwZWN0ZWQgZW50cmllcyBoYXZlIHRvIGJlIG9mIHR5cGUgc3RyaW5nXCIpLGkodix0KT91KGYsbSh0KSk6cChFLHQpP3UoaCx0KTooQShcIm9iamVjdFwiIT09dCwnVGhlIHZhbHVlIFwib2JqZWN0XCIgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgXCJPYmplY3RcIicpLHUoZCx0KSk7aWYoaC5sZW5ndGg+MCl7Y29uc3QgdD1vKGYsXCJvYmplY3RcIik7LTEhPT10JiYobChmLHQsMSksdShoLFwiT2JqZWN0XCIpKX1pZihmLmxlbmd0aD4wKXtpZihmLmxlbmd0aD4yKXtjb25zdCB0PWEoZik7Yys9YG9uZSBvZiB0eXBlICR7cyhmLFwiLCBcIil9LCBvciAke3R9YH1lbHNlIGMrPTI9PT1mLmxlbmd0aD9gb25lIG9mIHR5cGUgJHtmWzBdfSBvciAke2ZbMV19YDpgb2YgdHlwZSAke2ZbMF19YDsoaC5sZW5ndGg+MHx8ZC5sZW5ndGg+MCkmJihjKz1cIiBvciBcIil9aWYoaC5sZW5ndGg+MCl7aWYoaC5sZW5ndGg+Mil7Y29uc3QgdD1hKGgpO2MrPWBhbiBpbnN0YW5jZSBvZiAke3MoaCxcIiwgXCIpfSwgb3IgJHt0fWB9ZWxzZSBjKz1gYW4gaW5zdGFuY2Ugb2YgJHtoWzBdfWAsMj09PWgubGVuZ3RoJiYoYys9YCBvciAke2hbMV19YCk7ZC5sZW5ndGg+MCYmKGMrPVwiIG9yIFwiKX1pZihkLmxlbmd0aD4wKWlmKGQubGVuZ3RoPjIpe2NvbnN0IHQ9YShkKTtjKz1gb25lIG9mICR7cyhkLFwiLCBcIil9LCBvciAke3R9YH1lbHNlIDI9PT1kLmxlbmd0aD9jKz1gb25lIG9mICR7ZFswXX0gb3IgJHtkWzFdfWA6KG0oZFswXSkhPT1kWzBdJiYoYys9XCJhbiBcIiksYys9YCR7ZFswXX1gKTtpZihudWxsPT1yKWMrPWAuIFJlY2VpdmVkICR7cn1gO2Vsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgciYmci5uYW1lKWMrPWAuIFJlY2VpdmVkIGZ1bmN0aW9uICR7ci5uYW1lfWA7ZWxzZSBpZihcIm9iamVjdFwiPT10eXBlb2YgcilyLmNvbnN0cnVjdG9yJiZyLmNvbnN0cnVjdG9yLm5hbWU/Yys9YC4gUmVjZWl2ZWQgYW4gaW5zdGFuY2Ugb2YgJHtyLmNvbnN0cnVjdG9yLm5hbWV9YDpjKz1gLiBSZWNlaXZlZCAke0koKS5pbnNwZWN0KHIse2RlcHRoOi0xfSl9YDtlbHNle2xldCB0PUkoKS5pbnNwZWN0KHIse2NvbG9yczohMX0pO3QubGVuZ3RoPjI1JiYodD1gJHtiKHQsMCwyNSl9Li4uYCksYys9YC4gUmVjZWl2ZWQgdHlwZSAke3R5cGVvZiByfSAoJHt0fSlgfXJldHVybiBjfSxNPVR5cGVFcnJvcix3LnNldChMLFApLF9bTF09KFU9TSxqPUwsZnVuY3Rpb24oLi4udCl7Y29uc3QgZT1FcnJvci5zdGFja1RyYWNlTGltaXQ7RXJyb3Iuc3RhY2tUcmFjZUxpbWl0PTA7Y29uc3Qgbj1uZXcgVTtFcnJvci5zdGFja1RyYWNlTGltaXQ9ZTtjb25zdCBpPWZ1bmN0aW9uKHQsZSxuKXtjb25zdCBpPXcuZ2V0KHQpO3JldHVybiB2b2lkIDA9PT1BJiYoQT1yKDE4MykpLEEoXCJmdW5jdGlvblwiPT10eXBlb2YgaSksQShpLmxlbmd0aDw9ZS5sZW5ndGgsYENvZGU6ICR7dH07IFRoZSBwcm92aWRlZCBhcmd1bWVudHMgbGVuZ3RoICgke2UubGVuZ3RofSkgZG9lcyBub3QgbWF0Y2ggdGhlIHJlcXVpcmVkIG9uZXMgKCR7aS5sZW5ndGh9KS5gKSxoKGksbixlKX0oaix0LG4pO3JldHVybiBmKG4sXCJtZXNzYWdlXCIse3ZhbHVlOmksZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxmKG4sXCJ0b1N0cmluZ1wiLHt2YWx1ZSgpe3JldHVybmAke3RoaXMubmFtZX0gWyR7an1dOiAke3RoaXMubWVzc2FnZX1gfSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLEIobixVLm5hbWUsaiksbi5jb2RlPWosbn0pfSwzMzU6dD0+e2NvbnN0IGU9L1xcdTAwMWJcXFtcXGRcXGQ/bS9nO3QuZXhwb3J0cz17Y3VzdG9tSW5zcGVjdFN5bWJvbDpTeW1ib2wuZm9yKFwibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b21cIiksaXNFcnJvcjp0PT50IGluc3RhbmNlb2YgRXJyb3Isam9pbjpBcnJheS5wcm90b3R5cGUuam9pbi5jYWxsLmJpbmQoQXJyYXkucHJvdG90eXBlLmpvaW4pLHJlbW92ZUNvbG9yczp0PT5TdHJpbmcucHJvdG90eXBlLnJlcGxhY2UuY2FsbCh0LGUsXCJcIil9fSw2MzoodCxlLHIpPT57Y29uc3R7Z2V0Q29uc3RydWN0b3JOYW1lOm59PXIoODkxKTtmdW5jdGlvbiBpKHQsLi4uZSl7Zm9yKGNvbnN0IHIgb2YgZSl7Y29uc3QgZT1nbG9iYWxUaGlzW3JdO2lmKGUmJnQgaW5zdGFuY2VvZiBlKXJldHVybiEwfWZvcig7dDspe2lmKFwib2JqZWN0XCIhPXR5cGVvZiB0KXJldHVybiExO2lmKGUuaW5kZXhPZihuKHQpKT49MClyZXR1cm4hMDt0PU9iamVjdC5nZXRQcm90b3R5cGVPZih0KX1yZXR1cm4hMX1mdW5jdGlvbiBvKHQpe3JldHVybiBlPT57aWYoIWkoZSx0Lm5hbWUpKXJldHVybiExO3RyeXt0LnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoZSl9Y2F0Y2h7cmV0dXJuITF9cmV0dXJuITB9fVwib2JqZWN0XCIhPXR5cGVvZiBnbG9iYWxUaGlzJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsXCJfX21hZ2ljX19cIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGNvbmZpZ3VyYWJsZTohMH0pLF9fbWFnaWNfXy5nbG9iYWxUaGlzPV9fbWFnaWNfXyxkZWxldGUgT2JqZWN0LnByb3RvdHlwZS5fX21hZ2ljX18pO2NvbnN0IHM9byhTdHJpbmcpLGE9byhOdW1iZXIpLHU9byhCb29sZWFuKSxsPW8oQmlnSW50KSxjPW8oU3ltYm9sKTt0LmV4cG9ydHM9e2lzQXN5bmNGdW5jdGlvbjp0PT5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zdGFydHNXaXRoKFwiYXN5bmNcIiksaXNHZW5lcmF0b3JGdW5jdGlvbjp0PT5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5tYXRjaCgvXihhc3luY1xccyspP2Z1bmN0aW9uICpcXCovKSxpc0FueUFycmF5QnVmZmVyOnQ9PmkodCxcIkFycmF5QnVmZmVyXCIsXCJTaGFyZWRBcnJheUJ1ZmZlclwiKSxpc0FycmF5QnVmZmVyOnQ9PmkodCxcIkFycmF5QnVmZmVyXCIpLGlzQXJndW1lbnRzT2JqZWN0OnQ9PiExLGlzQm94ZWRQcmltaXRpdmU6dD0+YSh0KXx8cyh0KXx8dSh0KXx8bCh0KXx8Yyh0KSxpc0RhdGFWaWV3OnQ9PmkodCxcIkRhdGFWaWV3XCIpLGlzRXh0ZXJuYWw6dD0+XCJvYmplY3RcIj09dHlwZW9mIHQmJk9iamVjdC5pc0Zyb3plbih0KSYmbnVsbD09T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpLGlzTWFwKHQpe2lmKCFpKHQsXCJNYXBcIikpcmV0dXJuITE7dHJ5e3QuaGFzKCl9Y2F0Y2h7cmV0dXJuITF9cmV0dXJuITB9LGlzTWFwSXRlcmF0b3I6dD0+XCJbb2JqZWN0IE1hcCBJdGVyYXRvcl1cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLGlzTW9kdWxlTmFtZXNwYWNlT2JqZWN0OnQ9PnQmJlwib2JqZWN0XCI9PXR5cGVvZiB0JiZcIk1vZHVsZVwiPT09dFtTeW1ib2wudG9TdHJpbmdUYWddLGlzTmF0aXZlRXJyb3I6dD0+dCBpbnN0YW5jZW9mIEVycm9yJiZpKHQsXCJFcnJvclwiLFwiRXZhbEVycm9yXCIsXCJSYW5nZUVycm9yXCIsXCJSZWZlcmVuY2VFcnJvclwiLFwiU3ludGF4RXJyb3JcIixcIlR5cGVFcnJvclwiLFwiVVJJRXJyb3JcIixcIkFnZ3JlZ2F0ZUVycm9yXCIpLGlzUHJvbWlzZTp0PT5pKHQsXCJQcm9taXNlXCIpLGlzU2V0KHQpe2lmKCFpKHQsXCJTZXRcIikpcmV0dXJuITE7dHJ5e3QuaGFzKCl9Y2F0Y2h7cmV0dXJuITF9cmV0dXJuITB9LGlzU2V0SXRlcmF0b3I6dD0+XCJbb2JqZWN0IFNldCBJdGVyYXRvcl1cIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLGlzV2Vha01hcDp0PT5pKHQsXCJXZWFrTWFwXCIpLGlzV2Vha1NldDp0PT5pKHQsXCJXZWFrU2V0XCIpLGlzUmVnRXhwOnQ9PmkodCxcIlJlZ0V4cFwiKSxpc0RhdGUodCl7aWYoaSh0LFwiRGF0ZVwiKSl0cnl7cmV0dXJuIERhdGUucHJvdG90eXBlLmdldFRpbWUuY2FsbCh0KSwhMH1jYXRjaHt9cmV0dXJuITF9LGlzVHlwZWRBcnJheTp0PT5pKHQsXCJJbnQ4QXJyYXlcIixcIlVpbnQ4QXJyYXlcIixcIlVpbnQ4Q2xhbXBlZEFycmF5XCIsXCJJbnQxNkFycmF5XCIsXCJVaW50MTZBcnJheVwiLFwiSW50MzJBcnJheVwiLFwiVWludDMyQXJyYXlcIixcIkZsb2F0MzJBcnJheVwiLFwiRmxvYXQ2NEFycmF5XCIsXCJCaWdJbnQ2NEFycmF5XCIsXCJCaWdVaW50NjRBcnJheVwiKSxpc1N0cmluZ09iamVjdDpzLGlzTnVtYmVyT2JqZWN0OmEsaXNCb29sZWFuT2JqZWN0OnUsaXNCaWdJbnRPYmplY3Q6bCxpc1N5bWJvbE9iamVjdDpjfX0sMzU2Oih0LGUscik9Pntjb25zdHtoaWRlU3RhY2tGcmFtZXM6bixjb2Rlczp7RVJSX0lOVkFMSURfQVJHX1RZUEU6aX19PXIoMTAxKTtlLnZhbGlkYXRlT2JqZWN0PW4oKCh0LGUse251bGxhYmxlOnI9ITF9PXt9KT0+e2lmKCFyJiZudWxsPT09dHx8QXJyYXkuaXNBcnJheSh0KXx8XCJvYmplY3RcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IGkoZSxcIk9iamVjdFwiLHQpfSkpfSw3NjU6dD0+e2NvbnN0IGU9KHQsZSk9PntjbGFzcyBye2NvbnN0cnVjdG9yKGUpe3RoaXMuX2l0ZXJhdG9yPXQoZSl9bmV4dCgpe3JldHVybiBlKHRoaXMuX2l0ZXJhdG9yKX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzfX1yZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKHIucHJvdG90eXBlLG51bGwpLE9iamVjdC5mcmVlemUoci5wcm90b3R5cGUpLE9iamVjdC5mcmVlemUocikscn07ZnVuY3Rpb24gcih0LGUpe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKHQucHJvdG90eXBlLl9fbG9va3VwR2V0dGVyX18oZSkpfWZ1bmN0aW9uIG4odCl7cmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQodCl9Y29uc3QgaT0odCxlKT0+e0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoUmVmbGVjdC5vd25LZXlzKHQpLChyPT57UmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZSxyKXx8UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShlLHIsUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKSl9KSl9LG89KHQscik9PntpZihTeW1ib2wuaXRlcmF0b3IgaW4gdC5wcm90b3R5cGUpe2NvbnN0IGk9bmV3IHQ7bGV0IG87QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChSZWZsZWN0Lm93bktleXModC5wcm90b3R5cGUpLChzPT57aWYoIVJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIucHJvdG90eXBlLHMpKXtjb25zdCBhPVJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQucHJvdG90eXBlLHMpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGEudmFsdWUmJjA9PT1hLnZhbHVlLmxlbmd0aCYmU3ltYm9sLml0ZXJhdG9yIGluKEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmNhbGwoYS52YWx1ZSxpKXx8e30pKXtjb25zdCB0PW4oYS52YWx1ZSk7bnVsbD09byYmKG89bih0KGkpLm5leHQpKTtjb25zdCByPWUodCxvKTthLnZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyByKHRoaXMpfX1SZWZsZWN0LmRlZmluZVByb3BlcnR5KHIucHJvdG90eXBlLHMsYSl9fSkpfWVsc2UgaSh0LnByb3RvdHlwZSxyLnByb3RvdHlwZSk7cmV0dXJuIGkodCxyKSxPYmplY3Quc2V0UHJvdG90eXBlT2Yoci5wcm90b3R5cGUsbnVsbCksT2JqZWN0LmZyZWV6ZShyLnByb3RvdHlwZSksT2JqZWN0LmZyZWV6ZShyKSxyfSxzPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdKSxhPVJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocyhcIlwiKSk7dC5leHBvcnRzPXttYWtlU2FmZTpvLGludGVybmFsQmluZGluZyh0KXtpZihcImNvbmZpZ1wiPT09dClyZXR1cm57aGFzSW50bDohMX07dGhyb3cgbmV3IEVycm9yKGB1bmtub3duIG1vZHVsZTogXCIke3R9XCJgKX0sQXJyYXksQXJyYXlJc0FycmF5OkFycmF5LmlzQXJyYXksQXJyYXlQcm90b3R5cGVGaWx0ZXI6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUuZmlsdGVyKSxBcnJheVByb3RvdHlwZUZvckVhY2g6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUuZm9yRWFjaCksQXJyYXlQcm90b3R5cGVJbmNsdWRlczpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEFycmF5LnByb3RvdHlwZS5pbmNsdWRlcyksQXJyYXlQcm90b3R5cGVJbmRleE9mOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoQXJyYXkucHJvdG90eXBlLmluZGV4T2YpLEFycmF5UHJvdG90eXBlSm9pbjpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEFycmF5LnByb3RvdHlwZS5qb2luKSxBcnJheVByb3RvdHlwZVBvcDpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEFycmF5LnByb3RvdHlwZS5wb3ApLEFycmF5UHJvdG90eXBlUHVzaDpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEFycmF5LnByb3RvdHlwZS5wdXNoKSxBcnJheVByb3RvdHlwZVB1c2hBcHBseTpGdW5jdGlvbi5hcHBseS5iaW5kKEFycmF5LnByb3RvdHlwZS5wdXNoKSxBcnJheVByb3RvdHlwZVNvcnQ6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUuc29ydCksQXJyYXlQcm90b3R5cGVTcGxpY2U6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUuc2xpY2UpLEFycmF5UHJvdG90eXBlVW5zaGlmdDpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEFycmF5LnByb3RvdHlwZS51bnNoaWZ0KSxCaWdJbnRQcm90b3R5cGVWYWx1ZU9mOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoQmlnSW50LnByb3RvdHlwZS52YWx1ZU9mKSxCb29sZWFuUHJvdG90eXBlVmFsdWVPZjpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YpLERhdGVQcm90b3R5cGVHZXRUaW1lOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoRGF0ZS5wcm90b3R5cGUuZ2V0VGltZSksRGF0ZVByb3RvdHlwZVRvSVNPU3RyaW5nOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcpLERhdGVQcm90b3R5cGVUb1N0cmluZzpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKERhdGUucHJvdG90eXBlLnRvU3RyaW5nKSxFcnJvckNhcHR1cmVTdGFja1RyYWNlOmZ1bmN0aW9uKHQpe2NvbnN0IGU9KG5ldyBFcnJvcikuc3RhY2s7dC5zdGFjaz1lLnJlcGxhY2UoLy4qXFxuLiovLFwiJDFcIil9LEVycm9yUHJvdG90eXBlVG9TdHJpbmc6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChFcnJvci5wcm90b3R5cGUudG9TdHJpbmcpLEZ1bmN0aW9uUHJvdG90eXBlQ2FsbDpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsKSxGdW5jdGlvblByb3RvdHlwZVRvU3RyaW5nOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nKSxKU09OU3RyaW5naWZ5OkpTT04uc3RyaW5naWZ5LE1hcFByb3RvdHlwZUdldFNpemU6cihNYXAsXCJzaXplXCIpLE1hcFByb3RvdHlwZUVudHJpZXM6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChNYXAucHJvdG90eXBlLmVudHJpZXMpLE1hdGhGbG9vcjpNYXRoLmZsb29yLE1hdGhNYXg6TWF0aC5tYXgsTWF0aE1pbjpNYXRoLm1pbixNYXRoUm91bmQ6TWF0aC5yb3VuZCxNYXRoU3FydDpNYXRoLnNxcnQsTnVtYmVyLE51bWJlcklzTmFOOk51bWJlci5pc05hTixOdW1iZXJQYXJzZUZsb2F0Ok51bWJlci5wYXJzZUZsb2F0LE51bWJlclBhcnNlSW50Ok51bWJlci5wYXJzZUludCxOdW1iZXJQcm90b3R5cGVWYWx1ZU9mOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mKSxPYmplY3QsT2JqZWN0QXNzaWduOk9iamVjdC5hc3NpZ24sT2JqZWN0Q3JlYXRlOk9iamVjdC5jcmVhdGUsT2JqZWN0RGVmaW5lUHJvcGVydHk6T2JqZWN0LmRlZmluZVByb3BlcnR5LE9iamVjdEdldE93blByb3BlcnR5RGVzY3JpcHRvcjpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLE9iamVjdEdldE93blByb3BlcnR5TmFtZXM6T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMsT2JqZWN0R2V0T3duUHJvcGVydHlTeW1ib2xzOk9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsT2JqZWN0R2V0UHJvdG90eXBlT2Y6T2JqZWN0LmdldFByb3RvdHlwZU9mLE9iamVjdElzOk9iamVjdC5pcyxPYmplY3RLZXlzOk9iamVjdC5rZXlzLE9iamVjdFByb3RvdHlwZUhhc093blByb3BlcnR5OkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSksT2JqZWN0UHJvdG90eXBlUHJvcGVydHlJc0VudW1lcmFibGU6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlKSxPYmplY3RTZWFsOk9iamVjdC5zZWFsLE9iamVjdFNldFByb3RvdHlwZU9mOk9iamVjdC5zZXRQcm90b3R5cGVPZixSZWZsZWN0QXBwbHk6UmVmbGVjdC5hcHBseSxSZWZsZWN0T3duS2V5czpSZWZsZWN0Lm93bktleXMsUmVnRXhwLFJlZ0V4cFByb3RvdHlwZVRlc3Q6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChSZWdFeHAucHJvdG90eXBlLnRlc3QpLFJlZ0V4cFByb3RvdHlwZVRvU3RyaW5nOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZyksU2FmZVN0cmluZ0l0ZXJhdG9yOmUocyxGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKGEubmV4dCkpLFNhZmVNYXA6byhNYXAsY2xhc3MgZXh0ZW5kcyBNYXB7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9fSksU2FmZVNldDpvKFNldCxjbGFzcyBleHRlbmRzIFNldHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX19KSxTZXRQcm90b3R5cGVHZXRTaXplOnIoU2V0LFwic2l6ZVwiKSxTZXRQcm90b3R5cGVWYWx1ZXM6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTZXQucHJvdG90eXBlLnZhbHVlcyksU3RyaW5nLFN0cmluZ1Byb3RvdHlwZUNoYXJDb2RlQXQ6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLmNoYXJDb2RlQXQpLFN0cmluZ1Byb3RvdHlwZUNvZGVQb2ludEF0OkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdCksU3RyaW5nUHJvdG90eXBlRW5kc1dpdGg6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoKSxTdHJpbmdQcm90b3R5cGVJbmNsdWRlczpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXMpLFN0cmluZ1Byb3RvdHlwZU5vcm1hbGl6ZTpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplKSxTdHJpbmdQcm90b3R5cGVQYWRFbmQ6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnBhZEVuZCksU3RyaW5nUHJvdG90eXBlUGFkU3RhcnQ6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnBhZFN0YXJ0KSxTdHJpbmdQcm90b3R5cGVSZXBlYXQ6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnJlcGVhdCksU3RyaW5nUHJvdG90eXBlUmVwbGFjZTpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSksU3RyaW5nUHJvdG90eXBlU2xpY2U6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnNsaWNlKSxTdHJpbmdQcm90b3R5cGVTcGxpdDpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUuc3BsaXQpLFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS50b0xvd2VyQ2FzZSksU3RyaW5nUHJvdG90eXBlVHJpbTpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUudHJpbSksU3RyaW5nUHJvdG90eXBlVmFsdWVPZjpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUudmFsdWVPZiksU3ltYm9sUHJvdG90eXBlVG9TdHJpbmc6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTeW1ib2wucHJvdG90eXBlLnRvU3RyaW5nKSxTeW1ib2xQcm90b3R5cGVWYWx1ZU9mOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3ltYm9sLnByb3RvdHlwZS52YWx1ZU9mKSxTeW1ib2xJdGVyYXRvcjpTeW1ib2wuaXRlcmF0b3IsU3ltYm9sRm9yOlN5bWJvbC5mb3IsU3ltYm9sVG9TdHJpbmdUYWc6U3ltYm9sLnRvU3RyaW5nVGFnLFR5cGVkQXJyYXlQcm90b3R5cGVHZXRMZW5ndGg6dD0+dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUuX19sb29rdXBHZXR0ZXJfXyhcImxlbmd0aFwiKS5jYWxsKHQpLFVpbnQ4QXJyYXksdW5jdXJyeVRoaXM6bn19LDE2MTp0PT57Y29uc3QgZT1uZXcgV2Vha01hcDtjbGFzcyBye2NvbnN0cnVjdG9yKHQscil7Y29uc3Qgbj1uZXcgUHJveHkodCxyKTtyZXR1cm4gZS5zZXQobixbdCxyXSksbn1zdGF0aWMgZ2V0UHJveHlEZXRhaWxzKHQscj0hMCl7Y29uc3Qgbj1lLmdldCh0KTtpZihuKXJldHVybiByP246blswXX19dC5leHBvcnRzPXtnZXRQcm94eURldGFpbHM6ci5nZXRQcm94eURldGFpbHMuYmluZChyKSxQcm94eTpyfX0sODkxOih0LGUscik9Pntjb25zdCBuPXIoMTYxKSxpPVN5bWJvbChcImtQZW5kaW5nXCIpLG89U3ltYm9sKFwia1JlamVjdGVkXCIpO3QuZXhwb3J0cz17Z2V0T3duTm9uSW5kZXhQcm9wZXJ0aWVzOmZ1bmN0aW9uKHQsZT0yKXtjb25zdCByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHQpLG49W107Zm9yKGNvbnN0W3QsaV1vZiBPYmplY3QuZW50cmllcyhyKSlpZighL14oMHxbMS05XVswLTldKikkLy50ZXN0KHQpfHxwYXJzZUludCh0LDEwKT49MioqMzItMSl7aWYoMj09PWUmJiFpLmVudW1lcmFibGUpY29udGludWU7bi5wdXNoKHQpfWZvcihjb25zdCByIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCkpe2NvbnN0IGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LHIpOygyIT09ZXx8aS5lbnVtZXJhYmxlKSYmbi5wdXNoKHIpfXJldHVybiBufSxnZXRQcm9taXNlRGV0YWlsczooKT0+W2ksdm9pZCAwXSxnZXRQcm94eURldGFpbHM6bi5nZXRQcm94eURldGFpbHMsUHJveHk6bi5Qcm94eSxrUGVuZGluZzppLGtSZWplY3RlZDpvLHByZXZpZXdFbnRyaWVzOnQ9PltbXSwhMV0sZ2V0Q29uc3RydWN0b3JOYW1lKHQpe2lmKCF0fHxcIm9iamVjdFwiIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG9iamVjdFwiKTtpZih0LmNvbnN0cnVjdG9yJiZ0LmNvbnN0cnVjdG9yLm5hbWUpcmV0dXJuIHQuY29uc3RydWN0b3IubmFtZTtjb25zdCBlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5tYXRjaCgvXlxcW29iamVjdCAoW15cXF1dKylcXF0vKTtyZXR1cm4gZT9lWzFdOlwiT2JqZWN0XCJ9LGdldEV4dGVybmFsVmFsdWU6KCk9PkJpZ0ludCgwKSxwcm9wZXJ0eUZpbHRlcjp7QUxMX1BST1BFUlRJRVM6MCxPTkxZX0VOVU1FUkFCTEU6Mn19fX0sZT17fTtmdW5jdGlvbiByKG4pe3ZhciBpPWVbbl07aWYodm9pZCAwIT09aSlyZXR1cm4gaS5leHBvcnRzO3ZhciBvPWVbbl09e2V4cG9ydHM6e319O3JldHVybiB0W25dKG8sby5leHBvcnRzLHIpLG8uZXhwb3J0c31yZXR1cm4gci5nPWZ1bmN0aW9uKCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbFRoaXMpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfWNhdGNoKHQpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvd319KCkscig0OCl9KSgpfSwxNTU6dD0+e3ZhciBlLHIsbj10LmV4cG9ydHM9e307ZnVuY3Rpb24gaSgpe3Rocm93IG5ldyBFcnJvcihcInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWRcIil9ZnVuY3Rpb24gbygpe3Rocm93IG5ldyBFcnJvcihcImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZFwiKX1mdW5jdGlvbiBzKHQpe2lmKGU9PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KHQsMCk7aWYoKGU9PT1pfHwhZSkmJnNldFRpbWVvdXQpcmV0dXJuIGU9c2V0VGltZW91dCxzZXRUaW1lb3V0KHQsMCk7dHJ5e3JldHVybiBlKHQsMCl9Y2F0Y2gocil7dHJ5e3JldHVybiBlLmNhbGwobnVsbCx0LDApfWNhdGNoKHIpe3JldHVybiBlLmNhbGwodGhpcyx0LDApfX19IWZ1bmN0aW9uKCl7dHJ5e2U9XCJmdW5jdGlvblwiPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Oml9Y2F0Y2godCl7ZT1pfXRyeXtyPVwiZnVuY3Rpb25cIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6b31jYXRjaCh0KXtyPW99fSgpO3ZhciBhLHU9W10sbD0hMSxjPS0xO2Z1bmN0aW9uIGYoKXtsJiZhJiYobD0hMSxhLmxlbmd0aD91PWEuY29uY2F0KHUpOmM9LTEsdS5sZW5ndGgmJmgoKSl9ZnVuY3Rpb24gaCgpe2lmKCFsKXt2YXIgdD1zKGYpO2w9ITA7Zm9yKHZhciBlPXUubGVuZ3RoO2U7KXtmb3IoYT11LHU9W107KytjPGU7KWEmJmFbY10ucnVuKCk7Yz0tMSxlPXUubGVuZ3RofWE9bnVsbCxsPSExLGZ1bmN0aW9uKHQpe2lmKHI9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dCh0KTtpZigocj09PW98fCFyKSYmY2xlYXJUaW1lb3V0KXJldHVybiByPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQodCk7dHJ5e3IodCl9Y2F0Y2goZSl7dHJ5e3JldHVybiByLmNhbGwobnVsbCx0KX1jYXRjaChlKXtyZXR1cm4gci5jYWxsKHRoaXMsdCl9fX0odCl9fWZ1bmN0aW9uIHAodCxlKXt0aGlzLmZ1bj10LHRoaXMuYXJyYXk9ZX1mdW5jdGlvbiBkKCl7fW4ubmV4dFRpY2s9ZnVuY3Rpb24odCl7dmFyIGU9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgcj0xO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspZVtyLTFdPWFyZ3VtZW50c1tyXTt1LnB1c2gobmV3IHAodCxlKSksMSE9PXUubGVuZ3RofHxsfHxzKGgpfSxwLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxuLnRpdGxlPVwiYnJvd3NlclwiLG4uYnJvd3Nlcj0hMCxuLmVudj17fSxuLmFyZ3Y9W10sbi52ZXJzaW9uPVwiXCIsbi52ZXJzaW9ucz17fSxuLm9uPWQsbi5hZGRMaXN0ZW5lcj1kLG4ub25jZT1kLG4ub2ZmPWQsbi5yZW1vdmVMaXN0ZW5lcj1kLG4ucmVtb3ZlQWxsTGlzdGVuZXJzPWQsbi5lbWl0PWQsbi5wcmVwZW5kTGlzdGVuZXI9ZCxuLnByZXBlbmRPbmNlTGlzdGVuZXI9ZCxuLmxpc3RlbmVycz1mdW5jdGlvbih0KXtyZXR1cm5bXX0sbi5iaW5kaW5nPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcihcInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkXCIpfSxuLmN3ZD1mdW5jdGlvbigpe3JldHVyblwiL1wifSxuLmNoZGlyPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcihcInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZFwiKX0sbi51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0sMjgxOnQ9PntcInVzZSBzdHJpY3RcIjt2YXIgZT17fTtmdW5jdGlvbiByKHQscixuKXtufHwobj1FcnJvcik7dmFyIGk9ZnVuY3Rpb24odCl7dmFyIGUsbjtmdW5jdGlvbiBpKGUsbixpKXtyZXR1cm4gdC5jYWxsKHRoaXMsZnVuY3Rpb24odCxlLG4pe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiByP3I6cih0LGUsbil9KGUsbixpKSl8fHRoaXN9cmV0dXJuIG49dCwoZT1pKS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShuLnByb3RvdHlwZSksZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLl9fcHJvdG9fXz1uLGl9KG4pO2kucHJvdG90eXBlLm5hbWU9bi5uYW1lLGkucHJvdG90eXBlLmNvZGU9dCxlW3RdPWl9ZnVuY3Rpb24gbih0LGUpe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciByPXQubGVuZ3RoO3JldHVybiB0PXQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKHQpfSkpLHI+Mj9cIm9uZSBvZiBcIi5jb25jYXQoZSxcIiBcIikuY29uY2F0KHQuc2xpY2UoMCxyLTEpLmpvaW4oXCIsIFwiKSxcIiwgb3IgXCIpK3Rbci0xXToyPT09cj9cIm9uZSBvZiBcIi5jb25jYXQoZSxcIiBcIikuY29uY2F0KHRbMF0sXCIgb3IgXCIpLmNvbmNhdCh0WzFdKTpcIm9mIFwiLmNvbmNhdChlLFwiIFwiKS5jb25jYXQodFswXSl9cmV0dXJuXCJvZiBcIi5jb25jYXQoZSxcIiBcIikuY29uY2F0KFN0cmluZyh0KSl9cihcIkVSUl9JTlZBTElEX09QVF9WQUxVRVwiLChmdW5jdGlvbih0LGUpe3JldHVybidUaGUgdmFsdWUgXCInK2UrJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcIicrdCsnXCInfSksVHlwZUVycm9yKSxyKFwiRVJSX0lOVkFMSURfQVJHX1RZUEVcIiwoZnVuY3Rpb24odCxlLHIpe3ZhciBpLG8scyxhLHU7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJihvPVwibm90IFwiLGUuc3Vic3RyKDAsby5sZW5ndGgpPT09byk/KGk9XCJtdXN0IG5vdCBiZVwiLGU9ZS5yZXBsYWNlKC9ebm90IC8sXCJcIikpOmk9XCJtdXN0IGJlXCIsZnVuY3Rpb24odCxlLHIpe3JldHVybih2b2lkIDA9PT1yfHxyPnQubGVuZ3RoKSYmKHI9dC5sZW5ndGgpLHQuc3Vic3RyaW5nKHItZS5sZW5ndGgscik9PT1lfSh0LFwiIGFyZ3VtZW50XCIpKXM9XCJUaGUgXCIuY29uY2F0KHQsXCIgXCIpLmNvbmNhdChpLFwiIFwiKS5jb25jYXQobihlLFwidHlwZVwiKSk7ZWxzZXt2YXIgbD0oXCJudW1iZXJcIiE9dHlwZW9mIHUmJih1PTApLHUrXCIuXCIubGVuZ3RoPihhPXQpLmxlbmd0aHx8LTE9PT1hLmluZGV4T2YoXCIuXCIsdSk/XCJhcmd1bWVudFwiOlwicHJvcGVydHlcIik7cz0nVGhlIFwiJy5jb25jYXQodCwnXCIgJykuY29uY2F0KGwsXCIgXCIpLmNvbmNhdChpLFwiIFwiKS5jb25jYXQobihlLFwidHlwZVwiKSl9cmV0dXJuIHMrXCIuIFJlY2VpdmVkIHR5cGUgXCIuY29uY2F0KHR5cGVvZiByKX0pLFR5cGVFcnJvcikscihcIkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0ZcIixcInN0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GXCIpLHIoXCJFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRFwiLChmdW5jdGlvbih0KXtyZXR1cm5cIlRoZSBcIit0K1wiIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWRcIn0pKSxyKFwiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0VcIixcIlByZW1hdHVyZSBjbG9zZVwiKSxyKFwiRVJSX1NUUkVBTV9ERVNUUk9ZRURcIiwoZnVuY3Rpb24odCl7cmV0dXJuXCJDYW5ub3QgY2FsbCBcIit0K1wiIGFmdGVyIGEgc3RyZWFtIHdhcyBkZXN0cm95ZWRcIn0pKSxyKFwiRVJSX01VTFRJUExFX0NBTExCQUNLXCIsXCJDYWxsYmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXNcIikscihcIkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEVcIixcIkNhbm5vdCBwaXBlLCBub3QgcmVhZGFibGVcIikscihcIkVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5EXCIsXCJ3cml0ZSBhZnRlciBlbmRcIikscihcIkVSUl9TVFJFQU1fTlVMTF9WQUxVRVNcIixcIk1heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtXCIsVHlwZUVycm9yKSxyKFwiRVJSX1VOS05PV05fRU5DT0RJTkdcIiwoZnVuY3Rpb24odCl7cmV0dXJuXCJVbmtub3duIGVuY29kaW5nOiBcIit0fSksVHlwZUVycm9yKSxyKFwiRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVFwiLFwic3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnRcIiksdC5leHBvcnRzLnE9ZX0sNzUzOih0LGUscik9PntcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDE1NSksaT1PYmplY3Qua2V5c3x8ZnVuY3Rpb24odCl7dmFyIGU9W107Zm9yKHZhciByIGluIHQpZS5wdXNoKHIpO3JldHVybiBlfTt0LmV4cG9ydHM9Yzt2YXIgbz1yKDQ4MSkscz1yKDIyOSk7cig3MTcpKGMsbyk7Zm9yKHZhciBhPWkocy5wcm90b3R5cGUpLHU9MDt1PGEubGVuZ3RoO3UrKyl7dmFyIGw9YVt1XTtjLnByb3RvdHlwZVtsXXx8KGMucHJvdG90eXBlW2xdPXMucHJvdG90eXBlW2xdKX1mdW5jdGlvbiBjKHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGMpKXJldHVybiBuZXcgYyh0KTtvLmNhbGwodGhpcyx0KSxzLmNhbGwodGhpcyx0KSx0aGlzLmFsbG93SGFsZk9wZW49ITAsdCYmKCExPT09dC5yZWFkYWJsZSYmKHRoaXMucmVhZGFibGU9ITEpLCExPT09dC53cml0YWJsZSYmKHRoaXMud3JpdGFibGU9ITEpLCExPT09dC5hbGxvd0hhbGZPcGVuJiYodGhpcy5hbGxvd0hhbGZPcGVuPSExLHRoaXMub25jZShcImVuZFwiLGYpKSl9ZnVuY3Rpb24gZigpe3RoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWR8fG4ubmV4dFRpY2soaCx0aGlzKX1mdW5jdGlvbiBoKHQpe3QuZW5kKCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KGMucHJvdG90eXBlLFwid3JpdGFibGVIaWdoV2F0ZXJNYXJrXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYy5wcm90b3R5cGUsXCJ3cml0YWJsZUJ1ZmZlclwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmdldEJ1ZmZlcigpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLnByb3RvdHlwZSxcIndyaXRhYmxlTGVuZ3RoXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLnByb3RvdHlwZSxcImRlc3Ryb3llZFwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbih0KXt2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9dCx0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD10KX19KX0sNzI1Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9aTt2YXIgbj1yKDYwNSk7ZnVuY3Rpb24gaSh0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBpKSlyZXR1cm4gbmV3IGkodCk7bi5jYWxsKHRoaXMsdCl9cig3MTcpKGksbiksaS5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbih0LGUscil7cihudWxsLHQpfX0sNDgxOih0LGUscik9PntcInVzZSBzdHJpY3RcIjt2YXIgbixpPXIoMTU1KTt0LmV4cG9ydHM9VCxULlJlYWRhYmxlU3RhdGU9QSxyKDE4NykuRXZlbnRFbWl0dGVyO3ZhciBvLHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5saXN0ZW5lcnMoZSkubGVuZ3RofSxhPXIoNTAzKSx1PXIoNzY0KS5CdWZmZXIsbD1yLmcuVWludDhBcnJheXx8ZnVuY3Rpb24oKXt9LGM9cig2NjkpO289YyYmYy5kZWJ1Z2xvZz9jLmRlYnVnbG9nKFwic3RyZWFtXCIpOmZ1bmN0aW9uKCl7fTt2YXIgZixoLHAsZD1yKDMyNykseT1yKDE5NSksZz1yKDQ1NykuZ2V0SGlnaFdhdGVyTWFyayxiPXIoMjgxKS5xLG09Yi5FUlJfSU5WQUxJRF9BUkdfVFlQRSx3PWIuRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRixfPWIuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsRT1iLkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQ7cig3MTcpKFQsYSk7dmFyIHY9eS5lcnJvck9yRGVzdHJveSxTPVtcImVycm9yXCIsXCJjbG9zZVwiLFwiZGVzdHJveVwiLFwicGF1c2VcIixcInJlc3VtZVwiXTtmdW5jdGlvbiBBKHQsZSxpKXtuPW58fHIoNzUzKSx0PXR8fHt9LFwiYm9vbGVhblwiIT10eXBlb2YgaSYmKGk9ZSBpbnN0YW5jZW9mIG4pLHRoaXMub2JqZWN0TW9kZT0hIXQub2JqZWN0TW9kZSxpJiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISF0LnJlYWRhYmxlT2JqZWN0TW9kZSksdGhpcy5oaWdoV2F0ZXJNYXJrPWcodGhpcyx0LFwicmVhZGFibGVIaWdoV2F0ZXJNYXJrXCIsaSksdGhpcy5idWZmZXI9bmV3IGQsdGhpcy5sZW5ndGg9MCx0aGlzLnBpcGVzPW51bGwsdGhpcy5waXBlc0NvdW50PTAsdGhpcy5mbG93aW5nPW51bGwsdGhpcy5lbmRlZD0hMSx0aGlzLmVuZEVtaXR0ZWQ9ITEsdGhpcy5yZWFkaW5nPSExLHRoaXMuc3luYz0hMCx0aGlzLm5lZWRSZWFkYWJsZT0hMSx0aGlzLmVtaXR0ZWRSZWFkYWJsZT0hMSx0aGlzLnJlYWRhYmxlTGlzdGVuaW5nPSExLHRoaXMucmVzdW1lU2NoZWR1bGVkPSExLHRoaXMucGF1c2VkPSEwLHRoaXMuZW1pdENsb3NlPSExIT09dC5lbWl0Q2xvc2UsdGhpcy5hdXRvRGVzdHJveT0hIXQuYXV0b0Rlc3Ryb3ksdGhpcy5kZXN0cm95ZWQ9ITEsdGhpcy5kZWZhdWx0RW5jb2Rpbmc9dC5kZWZhdWx0RW5jb2Rpbmd8fFwidXRmOFwiLHRoaXMuYXdhaXREcmFpbj0wLHRoaXMucmVhZGluZ01vcmU9ITEsdGhpcy5kZWNvZGVyPW51bGwsdGhpcy5lbmNvZGluZz1udWxsLHQuZW5jb2RpbmcmJihmfHwoZj1yKDU1MykucyksdGhpcy5kZWNvZGVyPW5ldyBmKHQuZW5jb2RpbmcpLHRoaXMuZW5jb2Rpbmc9dC5lbmNvZGluZyl9ZnVuY3Rpb24gVCh0KXtpZihuPW58fHIoNzUzKSwhKHRoaXMgaW5zdGFuY2VvZiBUKSlyZXR1cm4gbmV3IFQodCk7dmFyIGU9dGhpcyBpbnN0YW5jZW9mIG47dGhpcy5fcmVhZGFibGVTdGF0ZT1uZXcgQSh0LHRoaXMsZSksdGhpcy5yZWFkYWJsZT0hMCx0JiYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC5yZWFkJiYodGhpcy5fcmVhZD10LnJlYWQpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZGVzdHJveSYmKHRoaXMuX2Rlc3Ryb3k9dC5kZXN0cm95KSksYS5jYWxsKHRoaXMpfWZ1bmN0aW9uIEkodCxlLHIsbixpKXtvKFwicmVhZGFibGVBZGRDaHVua1wiLGUpO3ZhciBzLGE9dC5fcmVhZGFibGVTdGF0ZTtpZihudWxsPT09ZSlhLnJlYWRpbmc9ITEsZnVuY3Rpb24odCxlKXtpZihvKFwib25Fb2ZDaHVua1wiKSwhZS5lbmRlZCl7aWYoZS5kZWNvZGVyKXt2YXIgcj1lLmRlY29kZXIuZW5kKCk7ciYmci5sZW5ndGgmJihlLmJ1ZmZlci5wdXNoKHIpLGUubGVuZ3RoKz1lLm9iamVjdE1vZGU/MTpyLmxlbmd0aCl9ZS5lbmRlZD0hMCxlLnN5bmM/Uih0KTooZS5uZWVkUmVhZGFibGU9ITEsZS5lbWl0dGVkUmVhZGFibGV8fChlLmVtaXR0ZWRSZWFkYWJsZT0hMCxOKHQpKSl9fSh0LGEpO2Vsc2UgaWYoaXx8KHM9ZnVuY3Rpb24odCxlKXt2YXIgcixuO3JldHVybiBuPWUsdS5pc0J1ZmZlcihuKXx8biBpbnN0YW5jZW9mIGx8fFwic3RyaW5nXCI9PXR5cGVvZiBlfHx2b2lkIDA9PT1lfHx0Lm9iamVjdE1vZGV8fChyPW5ldyBtKFwiY2h1bmtcIixbXCJzdHJpbmdcIixcIkJ1ZmZlclwiLFwiVWludDhBcnJheVwiXSxlKSkscn0oYSxlKSkscyl2KHQscyk7ZWxzZSBpZihhLm9iamVjdE1vZGV8fGUmJmUubGVuZ3RoPjApaWYoXCJzdHJpbmdcIj09dHlwZW9mIGV8fGEub2JqZWN0TW9kZXx8T2JqZWN0LmdldFByb3RvdHlwZU9mKGUpPT09dS5wcm90b3R5cGV8fChlPWZ1bmN0aW9uKHQpe3JldHVybiB1LmZyb20odCl9KGUpKSxuKWEuZW5kRW1pdHRlZD92KHQsbmV3IEUpOkIodCxhLGUsITApO2Vsc2UgaWYoYS5lbmRlZCl2KHQsbmV3IHcpO2Vsc2V7aWYoYS5kZXN0cm95ZWQpcmV0dXJuITE7YS5yZWFkaW5nPSExLGEuZGVjb2RlciYmIXI/KGU9YS5kZWNvZGVyLndyaXRlKGUpLGEub2JqZWN0TW9kZXx8MCE9PWUubGVuZ3RoP0IodCxhLGUsITEpOkwodCxhKSk6Qih0LGEsZSwhMSl9ZWxzZSBufHwoYS5yZWFkaW5nPSExLEwodCxhKSk7cmV0dXJuIWEuZW5kZWQmJihhLmxlbmd0aDxhLmhpZ2hXYXRlck1hcmt8fDA9PT1hLmxlbmd0aCl9ZnVuY3Rpb24gQih0LGUscixuKXtlLmZsb3dpbmcmJjA9PT1lLmxlbmd0aCYmIWUuc3luYz8oZS5hd2FpdERyYWluPTAsdC5lbWl0KFwiZGF0YVwiLHIpKTooZS5sZW5ndGgrPWUub2JqZWN0TW9kZT8xOnIubGVuZ3RoLG4/ZS5idWZmZXIudW5zaGlmdChyKTplLmJ1ZmZlci5wdXNoKHIpLGUubmVlZFJlYWRhYmxlJiZSKHQpKSxMKHQsZSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLFwiZGVzdHJveWVkXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPXQpfX0pLFQucHJvdG90eXBlLmRlc3Ryb3k9eS5kZXN0cm95LFQucHJvdG90eXBlLl91bmRlc3Ryb3k9eS51bmRlc3Ryb3ksVC5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24odCxlKXtlKHQpfSxULnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiBuLm9iamVjdE1vZGU/cj0hMDpcInN0cmluZ1wiPT10eXBlb2YgdCYmKChlPWV8fG4uZGVmYXVsdEVuY29kaW5nKSE9PW4uZW5jb2RpbmcmJih0PXUuZnJvbSh0LGUpLGU9XCJcIikscj0hMCksSSh0aGlzLHQsZSwhMSxyKX0sVC5wcm90b3R5cGUudW5zaGlmdD1mdW5jdGlvbih0KXtyZXR1cm4gSSh0aGlzLHQsbnVsbCwhMCwhMSl9LFQucHJvdG90eXBlLmlzUGF1c2VkPWZ1bmN0aW9uKCl7cmV0dXJuITE9PT10aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmd9LFQucHJvdG90eXBlLnNldEVuY29kaW5nPWZ1bmN0aW9uKHQpe2Z8fChmPXIoNTUzKS5zKTt2YXIgZT1uZXcgZih0KTt0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXI9ZSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nPXRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlci5lbmNvZGluZztmb3IodmFyIG49dGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIuaGVhZCxpPVwiXCI7bnVsbCE9PW47KWkrPWUud3JpdGUobi5kYXRhKSxuPW4ubmV4dDtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIuY2xlYXIoKSxcIlwiIT09aSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIucHVzaChpKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmxlbmd0aD1pLmxlbmd0aCx0aGlzfTt2YXIgTz0xMDczNzQxODI0O2Z1bmN0aW9uIHgodCxlKXtyZXR1cm4gdDw9MHx8MD09PWUubGVuZ3RoJiZlLmVuZGVkPzA6ZS5vYmplY3RNb2RlPzE6dCE9dD9lLmZsb3dpbmcmJmUubGVuZ3RoP2UuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg6ZS5sZW5ndGg6KHQ+ZS5oaWdoV2F0ZXJNYXJrJiYoZS5oaWdoV2F0ZXJNYXJrPWZ1bmN0aW9uKHQpe3JldHVybiB0Pj1PP3Q9TzoodC0tLHR8PXQ+Pj4xLHR8PXQ+Pj4yLHR8PXQ+Pj40LHR8PXQ+Pj44LHR8PXQ+Pj4xNix0KyspLHR9KHQpKSx0PD1lLmxlbmd0aD90OmUuZW5kZWQ/ZS5sZW5ndGg6KGUubmVlZFJlYWRhYmxlPSEwLDApKX1mdW5jdGlvbiBSKHQpe3ZhciBlPXQuX3JlYWRhYmxlU3RhdGU7byhcImVtaXRSZWFkYWJsZVwiLGUubmVlZFJlYWRhYmxlLGUuZW1pdHRlZFJlYWRhYmxlKSxlLm5lZWRSZWFkYWJsZT0hMSxlLmVtaXR0ZWRSZWFkYWJsZXx8KG8oXCJlbWl0UmVhZGFibGVcIixlLmZsb3dpbmcpLGUuZW1pdHRlZFJlYWRhYmxlPSEwLGkubmV4dFRpY2soTix0KSl9ZnVuY3Rpb24gTih0KXt2YXIgZT10Ll9yZWFkYWJsZVN0YXRlO28oXCJlbWl0UmVhZGFibGVfXCIsZS5kZXN0cm95ZWQsZS5sZW5ndGgsZS5lbmRlZCksZS5kZXN0cm95ZWR8fCFlLmxlbmd0aCYmIWUuZW5kZWR8fCh0LmVtaXQoXCJyZWFkYWJsZVwiKSxlLmVtaXR0ZWRSZWFkYWJsZT0hMSksZS5uZWVkUmVhZGFibGU9IWUuZmxvd2luZyYmIWUuZW5kZWQmJmUubGVuZ3RoPD1lLmhpZ2hXYXRlck1hcmssayh0KX1mdW5jdGlvbiBMKHQsZSl7ZS5yZWFkaW5nTW9yZXx8KGUucmVhZGluZ01vcmU9ITAsaS5uZXh0VGljayhQLHQsZSkpfWZ1bmN0aW9uIFAodCxlKXtmb3IoOyFlLnJlYWRpbmcmJiFlLmVuZGVkJiYoZS5sZW5ndGg8ZS5oaWdoV2F0ZXJNYXJrfHxlLmZsb3dpbmcmJjA9PT1lLmxlbmd0aCk7KXt2YXIgcj1lLmxlbmd0aDtpZihvKFwibWF5YmVSZWFkTW9yZSByZWFkIDBcIiksdC5yZWFkKDApLHI9PT1lLmxlbmd0aClicmVha31lLnJlYWRpbmdNb3JlPSExfWZ1bmN0aW9uIE0odCl7dmFyIGU9dC5fcmVhZGFibGVTdGF0ZTtlLnJlYWRhYmxlTGlzdGVuaW5nPXQubGlzdGVuZXJDb3VudChcInJlYWRhYmxlXCIpPjAsZS5yZXN1bWVTY2hlZHVsZWQmJiFlLnBhdXNlZD9lLmZsb3dpbmc9ITA6dC5saXN0ZW5lckNvdW50KFwiZGF0YVwiKT4wJiZ0LnJlc3VtZSgpfWZ1bmN0aW9uIFUodCl7byhcInJlYWRhYmxlIG5leHR0aWNrIHJlYWQgMFwiKSx0LnJlYWQoMCl9ZnVuY3Rpb24gaih0LGUpe28oXCJyZXN1bWVcIixlLnJlYWRpbmcpLGUucmVhZGluZ3x8dC5yZWFkKDApLGUucmVzdW1lU2NoZWR1bGVkPSExLHQuZW1pdChcInJlc3VtZVwiKSxrKHQpLGUuZmxvd2luZyYmIWUucmVhZGluZyYmdC5yZWFkKDApfWZ1bmN0aW9uIGsodCl7dmFyIGU9dC5fcmVhZGFibGVTdGF0ZTtmb3IobyhcImZsb3dcIixlLmZsb3dpbmcpO2UuZmxvd2luZyYmbnVsbCE9PXQucmVhZCgpOyk7fWZ1bmN0aW9uICQodCxlKXtyZXR1cm4gMD09PWUubGVuZ3RoP251bGw6KGUub2JqZWN0TW9kZT9yPWUuYnVmZmVyLnNoaWZ0KCk6IXR8fHQ+PWUubGVuZ3RoPyhyPWUuZGVjb2Rlcj9lLmJ1ZmZlci5qb2luKFwiXCIpOjE9PT1lLmJ1ZmZlci5sZW5ndGg/ZS5idWZmZXIuZmlyc3QoKTplLmJ1ZmZlci5jb25jYXQoZS5sZW5ndGgpLGUuYnVmZmVyLmNsZWFyKCkpOnI9ZS5idWZmZXIuY29uc3VtZSh0LGUuZGVjb2Rlcikscik7dmFyIHJ9ZnVuY3Rpb24gRih0KXt2YXIgZT10Ll9yZWFkYWJsZVN0YXRlO28oXCJlbmRSZWFkYWJsZVwiLGUuZW5kRW1pdHRlZCksZS5lbmRFbWl0dGVkfHwoZS5lbmRlZD0hMCxpLm5leHRUaWNrKEQsZSx0KSl9ZnVuY3Rpb24gRCh0LGUpe2lmKG8oXCJlbmRSZWFkYWJsZU5UXCIsdC5lbmRFbWl0dGVkLHQubGVuZ3RoKSwhdC5lbmRFbWl0dGVkJiYwPT09dC5sZW5ndGgmJih0LmVuZEVtaXR0ZWQ9ITAsZS5yZWFkYWJsZT0hMSxlLmVtaXQoXCJlbmRcIiksdC5hdXRvRGVzdHJveSkpe3ZhciByPWUuX3dyaXRhYmxlU3RhdGU7KCFyfHxyLmF1dG9EZXN0cm95JiZyLmZpbmlzaGVkKSYmZS5kZXN0cm95KCl9fWZ1bmN0aW9uIEModCxlKXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoO3I8bjtyKyspaWYodFtyXT09PWUpcmV0dXJuIHI7cmV0dXJuLTF9VC5wcm90b3R5cGUucmVhZD1mdW5jdGlvbih0KXtvKFwicmVhZFwiLHQpLHQ9cGFyc2VJbnQodCwxMCk7dmFyIGU9dGhpcy5fcmVhZGFibGVTdGF0ZSxyPXQ7aWYoMCE9PXQmJihlLmVtaXR0ZWRSZWFkYWJsZT0hMSksMD09PXQmJmUubmVlZFJlYWRhYmxlJiYoKDAhPT1lLmhpZ2hXYXRlck1hcms/ZS5sZW5ndGg+PWUuaGlnaFdhdGVyTWFyazplLmxlbmd0aD4wKXx8ZS5lbmRlZCkpcmV0dXJuIG8oXCJyZWFkOiBlbWl0UmVhZGFibGVcIixlLmxlbmd0aCxlLmVuZGVkKSwwPT09ZS5sZW5ndGgmJmUuZW5kZWQ/Rih0aGlzKTpSKHRoaXMpLG51bGw7aWYoMD09PSh0PXgodCxlKSkmJmUuZW5kZWQpcmV0dXJuIDA9PT1lLmxlbmd0aCYmRih0aGlzKSxudWxsO3ZhciBuLGk9ZS5uZWVkUmVhZGFibGU7cmV0dXJuIG8oXCJuZWVkIHJlYWRhYmxlXCIsaSksKDA9PT1lLmxlbmd0aHx8ZS5sZW5ndGgtdDxlLmhpZ2hXYXRlck1hcmspJiZvKFwibGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmtcIixpPSEwKSxlLmVuZGVkfHxlLnJlYWRpbmc/byhcInJlYWRpbmcgb3IgZW5kZWRcIixpPSExKTppJiYobyhcImRvIHJlYWRcIiksZS5yZWFkaW5nPSEwLGUuc3luYz0hMCwwPT09ZS5sZW5ndGgmJihlLm5lZWRSZWFkYWJsZT0hMCksdGhpcy5fcmVhZChlLmhpZ2hXYXRlck1hcmspLGUuc3luYz0hMSxlLnJlYWRpbmd8fCh0PXgocixlKSkpLG51bGw9PT0obj10PjA/JCh0LGUpOm51bGwpPyhlLm5lZWRSZWFkYWJsZT1lLmxlbmd0aDw9ZS5oaWdoV2F0ZXJNYXJrLHQ9MCk6KGUubGVuZ3RoLT10LGUuYXdhaXREcmFpbj0wKSwwPT09ZS5sZW5ndGgmJihlLmVuZGVkfHwoZS5uZWVkUmVhZGFibGU9ITApLHIhPT10JiZlLmVuZGVkJiZGKHRoaXMpKSxudWxsIT09biYmdGhpcy5lbWl0KFwiZGF0YVwiLG4pLG59LFQucHJvdG90eXBlLl9yZWFkPWZ1bmN0aW9uKHQpe3YodGhpcyxuZXcgXyhcIl9yZWFkKClcIikpfSxULnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcyxuPXRoaXMuX3JlYWRhYmxlU3RhdGU7c3dpdGNoKG4ucGlwZXNDb3VudCl7Y2FzZSAwOm4ucGlwZXM9dDticmVhaztjYXNlIDE6bi5waXBlcz1bbi5waXBlcyx0XTticmVhaztkZWZhdWx0Om4ucGlwZXMucHVzaCh0KX1uLnBpcGVzQ291bnQrPTEsbyhcInBpcGUgY291bnQ9JWQgb3B0cz0lalwiLG4ucGlwZXNDb3VudCxlKTt2YXIgYT1lJiYhMT09PWUuZW5kfHx0PT09aS5zdGRvdXR8fHQ9PT1pLnN0ZGVycj95OnU7ZnVuY3Rpb24gdSgpe28oXCJvbmVuZFwiKSx0LmVuZCgpfW4uZW5kRW1pdHRlZD9pLm5leHRUaWNrKGEpOnIub25jZShcImVuZFwiLGEpLHQub24oXCJ1bnBpcGVcIiwoZnVuY3Rpb24gZShpLHMpe28oXCJvbnVucGlwZVwiKSxpPT09ciYmcyYmITE9PT1zLmhhc1VucGlwZWQmJihzLmhhc1VucGlwZWQ9ITAsbyhcImNsZWFudXBcIiksdC5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIscCksdC5yZW1vdmVMaXN0ZW5lcihcImZpbmlzaFwiLGQpLHQucmVtb3ZlTGlzdGVuZXIoXCJkcmFpblwiLGwpLHQucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLGgpLHQucmVtb3ZlTGlzdGVuZXIoXCJ1bnBpcGVcIixlKSxyLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsdSksci5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLHkpLHIucmVtb3ZlTGlzdGVuZXIoXCJkYXRhXCIsZiksYz0hMCwhbi5hd2FpdERyYWlufHx0Ll93cml0YWJsZVN0YXRlJiYhdC5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW58fGwoKSl9KSk7dmFyIGw9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5fcmVhZGFibGVTdGF0ZTtvKFwicGlwZU9uRHJhaW5cIixlLmF3YWl0RHJhaW4pLGUuYXdhaXREcmFpbiYmZS5hd2FpdERyYWluLS0sMD09PWUuYXdhaXREcmFpbiYmcyh0LFwiZGF0YVwiKSYmKGUuZmxvd2luZz0hMCxrKHQpKX19KHIpO3Qub24oXCJkcmFpblwiLGwpO3ZhciBjPSExO2Z1bmN0aW9uIGYoZSl7byhcIm9uZGF0YVwiKTt2YXIgaT10LndyaXRlKGUpO28oXCJkZXN0LndyaXRlXCIsaSksITE9PT1pJiYoKDE9PT1uLnBpcGVzQ291bnQmJm4ucGlwZXM9PT10fHxuLnBpcGVzQ291bnQ+MSYmLTEhPT1DKG4ucGlwZXMsdCkpJiYhYyYmKG8oXCJmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2VcIixuLmF3YWl0RHJhaW4pLG4uYXdhaXREcmFpbisrKSxyLnBhdXNlKCkpfWZ1bmN0aW9uIGgoZSl7byhcIm9uZXJyb3JcIixlKSx5KCksdC5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsaCksMD09PXModCxcImVycm9yXCIpJiZ2KHQsZSl9ZnVuY3Rpb24gcCgpe3QucmVtb3ZlTGlzdGVuZXIoXCJmaW5pc2hcIixkKSx5KCl9ZnVuY3Rpb24gZCgpe28oXCJvbmZpbmlzaFwiKSx0LnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIixwKSx5KCl9ZnVuY3Rpb24geSgpe28oXCJ1bnBpcGVcIiksci51bnBpcGUodCl9cmV0dXJuIHIub24oXCJkYXRhXCIsZiksZnVuY3Rpb24odCxlLHIpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQucHJlcGVuZExpc3RlbmVyKXJldHVybiB0LnByZXBlbmRMaXN0ZW5lcihlLHIpO3QuX2V2ZW50cyYmdC5fZXZlbnRzLmVycm9yP0FycmF5LmlzQXJyYXkodC5fZXZlbnRzLmVycm9yKT90Ll9ldmVudHMuZXJyb3IudW5zaGlmdChyKTp0Ll9ldmVudHMuZXJyb3I9W3IsdC5fZXZlbnRzLmVycm9yXTp0Lm9uKGUscil9KHQsXCJlcnJvclwiLGgpLHQub25jZShcImNsb3NlXCIscCksdC5vbmNlKFwiZmluaXNoXCIsZCksdC5lbWl0KFwicGlwZVwiLHIpLG4uZmxvd2luZ3x8KG8oXCJwaXBlIHJlc3VtZVwiKSxyLnJlc3VtZSgpKSx0fSxULnByb3RvdHlwZS51bnBpcGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcmVhZGFibGVTdGF0ZSxyPXtoYXNVbnBpcGVkOiExfTtpZigwPT09ZS5waXBlc0NvdW50KXJldHVybiB0aGlzO2lmKDE9PT1lLnBpcGVzQ291bnQpcmV0dXJuIHQmJnQhPT1lLnBpcGVzfHwodHx8KHQ9ZS5waXBlcyksZS5waXBlcz1udWxsLGUucGlwZXNDb3VudD0wLGUuZmxvd2luZz0hMSx0JiZ0LmVtaXQoXCJ1bnBpcGVcIix0aGlzLHIpKSx0aGlzO2lmKCF0KXt2YXIgbj1lLnBpcGVzLGk9ZS5waXBlc0NvdW50O2UucGlwZXM9bnVsbCxlLnBpcGVzQ291bnQ9MCxlLmZsb3dpbmc9ITE7Zm9yKHZhciBvPTA7bzxpO28rKyluW29dLmVtaXQoXCJ1bnBpcGVcIix0aGlzLHtoYXNVbnBpcGVkOiExfSk7cmV0dXJuIHRoaXN9dmFyIHM9QyhlLnBpcGVzLHQpO3JldHVybi0xPT09c3x8KGUucGlwZXMuc3BsaWNlKHMsMSksZS5waXBlc0NvdW50LT0xLDE9PT1lLnBpcGVzQ291bnQmJihlLnBpcGVzPWUucGlwZXNbMF0pLHQuZW1pdChcInVucGlwZVwiLHRoaXMscikpLHRoaXN9LFQucHJvdG90eXBlLm9uPWZ1bmN0aW9uKHQsZSl7dmFyIHI9YS5wcm90b3R5cGUub24uY2FsbCh0aGlzLHQsZSksbj10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVyblwiZGF0YVwiPT09dD8obi5yZWFkYWJsZUxpc3RlbmluZz10aGlzLmxpc3RlbmVyQ291bnQoXCJyZWFkYWJsZVwiKT4wLCExIT09bi5mbG93aW5nJiZ0aGlzLnJlc3VtZSgpKTpcInJlYWRhYmxlXCI9PT10JiYobi5lbmRFbWl0dGVkfHxuLnJlYWRhYmxlTGlzdGVuaW5nfHwobi5yZWFkYWJsZUxpc3RlbmluZz1uLm5lZWRSZWFkYWJsZT0hMCxuLmZsb3dpbmc9ITEsbi5lbWl0dGVkUmVhZGFibGU9ITEsbyhcIm9uIHJlYWRhYmxlXCIsbi5sZW5ndGgsbi5yZWFkaW5nKSxuLmxlbmd0aD9SKHRoaXMpOm4ucmVhZGluZ3x8aS5uZXh0VGljayhVLHRoaXMpKSkscn0sVC5wcm90b3R5cGUuYWRkTGlzdGVuZXI9VC5wcm90b3R5cGUub24sVC5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI9ZnVuY3Rpb24odCxlKXt2YXIgcj1hLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lci5jYWxsKHRoaXMsdCxlKTtyZXR1cm5cInJlYWRhYmxlXCI9PT10JiZpLm5leHRUaWNrKE0sdGhpcykscn0sVC5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3ZhciBlPWEucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuXCJyZWFkYWJsZVwiIT09dCYmdm9pZCAwIT09dHx8aS5uZXh0VGljayhNLHRoaXMpLGV9LFQucHJvdG90eXBlLnJlc3VtZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3JlYWRhYmxlU3RhdGU7cmV0dXJuIHQuZmxvd2luZ3x8KG8oXCJyZXN1bWVcIiksdC5mbG93aW5nPSF0LnJlYWRhYmxlTGlzdGVuaW5nLGZ1bmN0aW9uKHQsZSl7ZS5yZXN1bWVTY2hlZHVsZWR8fChlLnJlc3VtZVNjaGVkdWxlZD0hMCxpLm5leHRUaWNrKGosdCxlKSl9KHRoaXMsdCkpLHQucGF1c2VkPSExLHRoaXN9LFQucHJvdG90eXBlLnBhdXNlPWZ1bmN0aW9uKCl7cmV0dXJuIG8oXCJjYWxsIHBhdXNlIGZsb3dpbmc9JWpcIix0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpLCExIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nJiYobyhcInBhdXNlXCIpLHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz0hMSx0aGlzLmVtaXQoXCJwYXVzZVwiKSksdGhpcy5fcmVhZGFibGVTdGF0ZS5wYXVzZWQ9ITAsdGhpc30sVC5wcm90b3R5cGUud3JhcD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLHI9dGhpcy5fcmVhZGFibGVTdGF0ZSxuPSExO2Zvcih2YXIgaSBpbiB0Lm9uKFwiZW5kXCIsKGZ1bmN0aW9uKCl7aWYobyhcIndyYXBwZWQgZW5kXCIpLHIuZGVjb2RlciYmIXIuZW5kZWQpe3ZhciB0PXIuZGVjb2Rlci5lbmQoKTt0JiZ0Lmxlbmd0aCYmZS5wdXNoKHQpfWUucHVzaChudWxsKX0pKSx0Lm9uKFwiZGF0YVwiLChmdW5jdGlvbihpKXtvKFwid3JhcHBlZCBkYXRhXCIpLHIuZGVjb2RlciYmKGk9ci5kZWNvZGVyLndyaXRlKGkpKSxyLm9iamVjdE1vZGUmJm51bGw9PWl8fChyLm9iamVjdE1vZGV8fGkmJmkubGVuZ3RoKSYmKGUucHVzaChpKXx8KG49ITAsdC5wYXVzZSgpKSl9KSksdCl2b2lkIDA9PT10aGlzW2ldJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0W2ldJiYodGhpc1tpXT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdFtlXS5hcHBseSh0LGFyZ3VtZW50cyl9fShpKSk7Zm9yKHZhciBzPTA7czxTLmxlbmd0aDtzKyspdC5vbihTW3NdLHRoaXMuZW1pdC5iaW5kKHRoaXMsU1tzXSkpO3JldHVybiB0aGlzLl9yZWFkPWZ1bmN0aW9uKGUpe28oXCJ3cmFwcGVkIF9yZWFkXCIsZSksbiYmKG49ITEsdC5yZXN1bWUoKSl9LHRoaXN9LFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmKFQucHJvdG90eXBlW1N5bWJvbC5hc3luY0l0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1oJiYoaD1yKDg1MCkpLGgodGhpcyl9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsXCJyZWFkYWJsZUhpZ2hXYXRlck1hcmtcIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcInJlYWRhYmxlQnVmZmVyXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUmJnRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcInJlYWRhYmxlRmxvd2luZ1wiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmd9LHNldDpmdW5jdGlvbih0KXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nPXQpfX0pLFQuX2Zyb21MaXN0PSQsT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLFwicmVhZGFibGVMZW5ndGhcIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGh9fSksXCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiYoVC5mcm9tPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PXAmJihwPXIoMTY3KSkscChULHQsZSl9KX0sNjA1Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9Yzt2YXIgbj1yKDI4MSkucSxpPW4uRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsbz1uLkVSUl9NVUxUSVBMRV9DQUxMQkFDSyxzPW4uRVJSX1RSQU5TRk9STV9BTFJFQURZX1RSQU5TRk9STUlORyxhPW4uRVJSX1RSQU5TRk9STV9XSVRIX0xFTkdUSF8wLHU9cig3NTMpO2Z1bmN0aW9uIGwodCxlKXt2YXIgcj10aGlzLl90cmFuc2Zvcm1TdGF0ZTtyLnRyYW5zZm9ybWluZz0hMTt2YXIgbj1yLndyaXRlY2I7aWYobnVsbD09PW4pcmV0dXJuIHRoaXMuZW1pdChcImVycm9yXCIsbmV3IG8pO3Iud3JpdGVjaHVuaz1udWxsLHIud3JpdGVjYj1udWxsLG51bGwhPWUmJnRoaXMucHVzaChlKSxuKHQpO3ZhciBpPXRoaXMuX3JlYWRhYmxlU3RhdGU7aS5yZWFkaW5nPSExLChpLm5lZWRSZWFkYWJsZXx8aS5sZW5ndGg8aS5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZChpLmhpZ2hXYXRlck1hcmspfWZ1bmN0aW9uIGModCl7aWYoISh0aGlzIGluc3RhbmNlb2YgYykpcmV0dXJuIG5ldyBjKHQpO3UuY2FsbCh0aGlzLHQpLHRoaXMuX3RyYW5zZm9ybVN0YXRlPXthZnRlclRyYW5zZm9ybTpsLmJpbmQodGhpcyksbmVlZFRyYW5zZm9ybTohMSx0cmFuc2Zvcm1pbmc6ITEsd3JpdGVjYjpudWxsLHdyaXRlY2h1bms6bnVsbCx3cml0ZWVuY29kaW5nOm51bGx9LHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlPSEwLHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYz0hMSx0JiYoXCJmdW5jdGlvblwiPT10eXBlb2YgdC50cmFuc2Zvcm0mJih0aGlzLl90cmFuc2Zvcm09dC50cmFuc2Zvcm0pLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZmx1c2gmJih0aGlzLl9mbHVzaD10LmZsdXNoKSksdGhpcy5vbihcInByZWZpbmlzaFwiLGYpfWZ1bmN0aW9uIGYoKXt2YXIgdD10aGlzO1wiZnVuY3Rpb25cIiE9dHlwZW9mIHRoaXMuX2ZsdXNofHx0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD9oKHRoaXMsbnVsbCxudWxsKTp0aGlzLl9mbHVzaCgoZnVuY3Rpb24oZSxyKXtoKHQsZSxyKX0pKX1mdW5jdGlvbiBoKHQsZSxyKXtpZihlKXJldHVybiB0LmVtaXQoXCJlcnJvclwiLGUpO2lmKG51bGwhPXImJnQucHVzaChyKSx0Ll93cml0YWJsZVN0YXRlLmxlbmd0aCl0aHJvdyBuZXcgYTtpZih0Ll90cmFuc2Zvcm1TdGF0ZS50cmFuc2Zvcm1pbmcpdGhyb3cgbmV3IHM7cmV0dXJuIHQucHVzaChudWxsKX1yKDcxNykoYyx1KSxjLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX3RyYW5zZm9ybVN0YXRlLm5lZWRUcmFuc2Zvcm09ITEsdS5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsdCxlKX0sYy5wcm90b3R5cGUuX3RyYW5zZm9ybT1mdW5jdGlvbih0LGUscil7cihuZXcgaShcIl90cmFuc2Zvcm0oKVwiKSl9LGMucHJvdG90eXBlLl93cml0ZT1mdW5jdGlvbih0LGUscil7dmFyIG49dGhpcy5fdHJhbnNmb3JtU3RhdGU7aWYobi53cml0ZWNiPXIsbi53cml0ZWNodW5rPXQsbi53cml0ZWVuY29kaW5nPWUsIW4udHJhbnNmb3JtaW5nKXt2YXIgaT10aGlzLl9yZWFkYWJsZVN0YXRlOyhuLm5lZWRUcmFuc2Zvcm18fGkubmVlZFJlYWRhYmxlfHxpLmxlbmd0aDxpLmhpZ2hXYXRlck1hcmspJiZ0aGlzLl9yZWFkKGkuaGlnaFdhdGVyTWFyayl9fSxjLnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl90cmFuc2Zvcm1TdGF0ZTtudWxsPT09ZS53cml0ZWNodW5rfHxlLnRyYW5zZm9ybWluZz9lLm5lZWRUcmFuc2Zvcm09ITA6KGUudHJhbnNmb3JtaW5nPSEwLHRoaXMuX3RyYW5zZm9ybShlLndyaXRlY2h1bmssZS53cml0ZWVuY29kaW5nLGUuYWZ0ZXJUcmFuc2Zvcm0pKX0sYy5wcm90b3R5cGUuX2Rlc3Ryb3k9ZnVuY3Rpb24odCxlKXt1LnByb3RvdHlwZS5fZGVzdHJveS5jYWxsKHRoaXMsdCwoZnVuY3Rpb24odCl7ZSh0KX0pKX19LDIyOToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG4saT1yKDE1NSk7ZnVuY3Rpb24gbyh0KXt2YXIgZT10aGlzO3RoaXMubmV4dD1udWxsLHRoaXMuZW50cnk9bnVsbCx0aGlzLmZpbmlzaD1mdW5jdGlvbigpeyFmdW5jdGlvbih0LGUscil7dmFyIG49dC5lbnRyeTtmb3IodC5lbnRyeT1udWxsO247KXt2YXIgaT1uLmNhbGxiYWNrO2UucGVuZGluZ2NiLS0saSh1bmRlZmluZWQpLG49bi5uZXh0fWUuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQ9dH0oZSx0KX19dC5leHBvcnRzPVQsVC5Xcml0YWJsZVN0YXRlPUE7dmFyIHMsYT17ZGVwcmVjYXRlOnIoOTI3KX0sdT1yKDUwMyksbD1yKDc2NCkuQnVmZmVyLGM9ci5nLlVpbnQ4QXJyYXl8fGZ1bmN0aW9uKCl7fSxmPXIoMTk1KSxoPXIoNDU3KS5nZXRIaWdoV2F0ZXJNYXJrLHA9cigyODEpLnEsZD1wLkVSUl9JTlZBTElEX0FSR19UWVBFLHk9cC5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxnPXAuRVJSX01VTFRJUExFX0NBTExCQUNLLGI9cC5FUlJfU1RSRUFNX0NBTk5PVF9QSVBFLG09cC5FUlJfU1RSRUFNX0RFU1RST1lFRCx3PXAuRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUyxfPXAuRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQsRT1wLkVSUl9VTktOT1dOX0VOQ09ESU5HLHY9Zi5lcnJvck9yRGVzdHJveTtmdW5jdGlvbiBTKCl7fWZ1bmN0aW9uIEEodCxlLHMpe249bnx8cig3NTMpLHQ9dHx8e30sXCJib29sZWFuXCIhPXR5cGVvZiBzJiYocz1lIGluc3RhbmNlb2YgbiksdGhpcy5vYmplY3RNb2RlPSEhdC5vYmplY3RNb2RlLHMmJih0aGlzLm9iamVjdE1vZGU9dGhpcy5vYmplY3RNb2RlfHwhIXQud3JpdGFibGVPYmplY3RNb2RlKSx0aGlzLmhpZ2hXYXRlck1hcms9aCh0aGlzLHQsXCJ3cml0YWJsZUhpZ2hXYXRlck1hcmtcIixzKSx0aGlzLmZpbmFsQ2FsbGVkPSExLHRoaXMubmVlZERyYWluPSExLHRoaXMuZW5kaW5nPSExLHRoaXMuZW5kZWQ9ITEsdGhpcy5maW5pc2hlZD0hMSx0aGlzLmRlc3Ryb3llZD0hMTt2YXIgYT0hMT09PXQuZGVjb2RlU3RyaW5nczt0aGlzLmRlY29kZVN0cmluZ3M9IWEsdGhpcy5kZWZhdWx0RW5jb2Rpbmc9dC5kZWZhdWx0RW5jb2Rpbmd8fFwidXRmOFwiLHRoaXMubGVuZ3RoPTAsdGhpcy53cml0aW5nPSExLHRoaXMuY29ya2VkPTAsdGhpcy5zeW5jPSEwLHRoaXMuYnVmZmVyUHJvY2Vzc2luZz0hMSx0aGlzLm9ud3JpdGU9ZnVuY3Rpb24odCl7IWZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5fd3JpdGFibGVTdGF0ZSxuPXIuc3luYyxvPXIud3JpdGVjYjtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBvKXRocm93IG5ldyBnO2lmKGZ1bmN0aW9uKHQpe3Qud3JpdGluZz0hMSx0LndyaXRlY2I9bnVsbCx0Lmxlbmd0aC09dC53cml0ZWxlbix0LndyaXRlbGVuPTB9KHIpLGUpIWZ1bmN0aW9uKHQsZSxyLG4sbyl7LS1lLnBlbmRpbmdjYixyPyhpLm5leHRUaWNrKG8sbiksaS5uZXh0VGljayhOLHQsZSksdC5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsdih0LG4pKToobyhuKSx0Ll93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCx2KHQsbiksTih0LGUpKX0odCxyLG4sZSxvKTtlbHNle3ZhciBzPXgocil8fHQuZGVzdHJveWVkO3N8fHIuY29ya2VkfHxyLmJ1ZmZlclByb2Nlc3Npbmd8fCFyLmJ1ZmZlcmVkUmVxdWVzdHx8Tyh0LHIpLG4/aS5uZXh0VGljayhCLHQscixzLG8pOkIodCxyLHMsbyl9fShlLHQpfSx0aGlzLndyaXRlY2I9bnVsbCx0aGlzLndyaXRlbGVuPTAsdGhpcy5idWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCx0aGlzLnBlbmRpbmdjYj0wLHRoaXMucHJlZmluaXNoZWQ9ITEsdGhpcy5lcnJvckVtaXR0ZWQ9ITEsdGhpcy5lbWl0Q2xvc2U9ITEhPT10LmVtaXRDbG9zZSx0aGlzLmF1dG9EZXN0cm95PSEhdC5hdXRvRGVzdHJveSx0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50PTAsdGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IG8odGhpcyl9ZnVuY3Rpb24gVCh0KXt2YXIgZT10aGlzIGluc3RhbmNlb2Yobj1ufHxyKDc1MykpO2lmKCFlJiYhcy5jYWxsKFQsdGhpcykpcmV0dXJuIG5ldyBUKHQpO3RoaXMuX3dyaXRhYmxlU3RhdGU9bmV3IEEodCx0aGlzLGUpLHRoaXMud3JpdGFibGU9ITAsdCYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQud3JpdGUmJih0aGlzLl93cml0ZT10LndyaXRlKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LndyaXRldiYmKHRoaXMuX3dyaXRldj10LndyaXRldiksXCJmdW5jdGlvblwiPT10eXBlb2YgdC5kZXN0cm95JiYodGhpcy5fZGVzdHJveT10LmRlc3Ryb3kpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZmluYWwmJih0aGlzLl9maW5hbD10LmZpbmFsKSksdS5jYWxsKHRoaXMpfWZ1bmN0aW9uIEkodCxlLHIsbixpLG8scyl7ZS53cml0ZWxlbj1uLGUud3JpdGVjYj1zLGUud3JpdGluZz0hMCxlLnN5bmM9ITAsZS5kZXN0cm95ZWQ/ZS5vbndyaXRlKG5ldyBtKFwid3JpdGVcIikpOnI/dC5fd3JpdGV2KGksZS5vbndyaXRlKTp0Ll93cml0ZShpLG8sZS5vbndyaXRlKSxlLnN5bmM9ITF9ZnVuY3Rpb24gQih0LGUscixuKXtyfHxmdW5jdGlvbih0LGUpezA9PT1lLmxlbmd0aCYmZS5uZWVkRHJhaW4mJihlLm5lZWREcmFpbj0hMSx0LmVtaXQoXCJkcmFpblwiKSl9KHQsZSksZS5wZW5kaW5nY2ItLSxuKCksTih0LGUpfWZ1bmN0aW9uIE8odCxlKXtlLmJ1ZmZlclByb2Nlc3Npbmc9ITA7dmFyIHI9ZS5idWZmZXJlZFJlcXVlc3Q7aWYodC5fd3JpdGV2JiZyJiZyLm5leHQpe3ZhciBuPWUuYnVmZmVyZWRSZXF1ZXN0Q291bnQsaT1uZXcgQXJyYXkobikscz1lLmNvcmtlZFJlcXVlc3RzRnJlZTtzLmVudHJ5PXI7Zm9yKHZhciBhPTAsdT0hMDtyOylpW2FdPXIsci5pc0J1Znx8KHU9ITEpLHI9ci5uZXh0LGErPTE7aS5hbGxCdWZmZXJzPXUsSSh0LGUsITAsZS5sZW5ndGgsaSxcIlwiLHMuZmluaXNoKSxlLnBlbmRpbmdjYisrLGUubGFzdEJ1ZmZlcmVkUmVxdWVzdD1udWxsLHMubmV4dD8oZS5jb3JrZWRSZXF1ZXN0c0ZyZWU9cy5uZXh0LHMubmV4dD1udWxsKTplLmNvcmtlZFJlcXVlc3RzRnJlZT1uZXcgbyhlKSxlLmJ1ZmZlcmVkUmVxdWVzdENvdW50PTB9ZWxzZXtmb3IoO3I7KXt2YXIgbD1yLmNodW5rLGM9ci5lbmNvZGluZyxmPXIuY2FsbGJhY2s7aWYoSSh0LGUsITEsZS5vYmplY3RNb2RlPzE6bC5sZW5ndGgsbCxjLGYpLHI9ci5uZXh0LGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQtLSxlLndyaXRpbmcpYnJlYWt9bnVsbD09PXImJihlLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCl9ZS5idWZmZXJlZFJlcXVlc3Q9cixlLmJ1ZmZlclByb2Nlc3Npbmc9ITF9ZnVuY3Rpb24geCh0KXtyZXR1cm4gdC5lbmRpbmcmJjA9PT10Lmxlbmd0aCYmbnVsbD09PXQuYnVmZmVyZWRSZXF1ZXN0JiYhdC5maW5pc2hlZCYmIXQud3JpdGluZ31mdW5jdGlvbiBSKHQsZSl7dC5fZmluYWwoKGZ1bmN0aW9uKHIpe2UucGVuZGluZ2NiLS0sciYmdih0LHIpLGUucHJlZmluaXNoZWQ9ITAsdC5lbWl0KFwicHJlZmluaXNoXCIpLE4odCxlKX0pKX1mdW5jdGlvbiBOKHQsZSl7dmFyIHI9eChlKTtpZihyJiYoZnVuY3Rpb24odCxlKXtlLnByZWZpbmlzaGVkfHxlLmZpbmFsQ2FsbGVkfHwoXCJmdW5jdGlvblwiIT10eXBlb2YgdC5fZmluYWx8fGUuZGVzdHJveWVkPyhlLnByZWZpbmlzaGVkPSEwLHQuZW1pdChcInByZWZpbmlzaFwiKSk6KGUucGVuZGluZ2NiKyssZS5maW5hbENhbGxlZD0hMCxpLm5leHRUaWNrKFIsdCxlKSkpfSh0LGUpLDA9PT1lLnBlbmRpbmdjYiYmKGUuZmluaXNoZWQ9ITAsdC5lbWl0KFwiZmluaXNoXCIpLGUuYXV0b0Rlc3Ryb3kpKSl7dmFyIG49dC5fcmVhZGFibGVTdGF0ZTsoIW58fG4uYXV0b0Rlc3Ryb3kmJm4uZW5kRW1pdHRlZCkmJnQuZGVzdHJveSgpfXJldHVybiByfXIoNzE3KShULHUpLEEucHJvdG90eXBlLmdldEJ1ZmZlcj1mdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLmJ1ZmZlcmVkUmVxdWVzdCxlPVtdO3Q7KWUucHVzaCh0KSx0PXQubmV4dDtyZXR1cm4gZX0sZnVuY3Rpb24oKXt0cnl7T2JqZWN0LmRlZmluZVByb3BlcnR5KEEucHJvdG90eXBlLFwiYnVmZmVyXCIse2dldDphLmRlcHJlY2F0ZSgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRCdWZmZXIoKX0pLFwiX3dyaXRhYmxlU3RhdGUuYnVmZmVyIGlzIGRlcHJlY2F0ZWQuIFVzZSBfd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIgaW5zdGVhZC5cIixcIkRFUDAwMDNcIil9KX1jYXRjaCh0KXt9fSgpLFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmhhc0luc3RhbmNlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXT8ocz1GdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVCxTeW1ib2wuaGFzSW5zdGFuY2Use3ZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiEhcy5jYWxsKHRoaXMsdCl8fHRoaXM9PT1UJiZ0JiZ0Ll93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgQX19KSk6cz1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHRoaXN9LFQucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24oKXt2KHRoaXMsbmV3IGIpfSxULnByb3RvdHlwZS53cml0ZT1mdW5jdGlvbih0LGUscil7dmFyIG4sbz10aGlzLl93cml0YWJsZVN0YXRlLHM9ITEsYT0hby5vYmplY3RNb2RlJiYobj10LGwuaXNCdWZmZXIobil8fG4gaW5zdGFuY2VvZiBjKTtyZXR1cm4gYSYmIWwuaXNCdWZmZXIodCkmJih0PWZ1bmN0aW9uKHQpe3JldHVybiBsLmZyb20odCl9KHQpKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiYocj1lLGU9bnVsbCksYT9lPVwiYnVmZmVyXCI6ZXx8KGU9by5kZWZhdWx0RW5jb2RpbmcpLFwiZnVuY3Rpb25cIiE9dHlwZW9mIHImJihyPVMpLG8uZW5kaW5nP2Z1bmN0aW9uKHQsZSl7dmFyIHI9bmV3IF87dih0LHIpLGkubmV4dFRpY2soZSxyKX0odGhpcyxyKTooYXx8ZnVuY3Rpb24odCxlLHIsbil7dmFyIG87cmV0dXJuIG51bGw9PT1yP289bmV3IHc6XCJzdHJpbmdcIj09dHlwZW9mIHJ8fGUub2JqZWN0TW9kZXx8KG89bmV3IGQoXCJjaHVua1wiLFtcInN0cmluZ1wiLFwiQnVmZmVyXCJdLHIpKSwhb3x8KHYodCxvKSxpLm5leHRUaWNrKG4sbyksITEpfSh0aGlzLG8sdCxyKSkmJihvLnBlbmRpbmdjYisrLHM9ZnVuY3Rpb24odCxlLHIsbixpLG8pe2lmKCFyKXt2YXIgcz1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQub2JqZWN0TW9kZXx8ITE9PT10LmRlY29kZVN0cmluZ3N8fFwic3RyaW5nXCIhPXR5cGVvZiBlfHwoZT1sLmZyb20oZSxyKSksZX0oZSxuLGkpO24hPT1zJiYocj0hMCxpPVwiYnVmZmVyXCIsbj1zKX12YXIgYT1lLm9iamVjdE1vZGU/MTpuLmxlbmd0aDtlLmxlbmd0aCs9YTt2YXIgdT1lLmxlbmd0aDxlLmhpZ2hXYXRlck1hcms7aWYodXx8KGUubmVlZERyYWluPSEwKSxlLndyaXRpbmd8fGUuY29ya2VkKXt2YXIgYz1lLmxhc3RCdWZmZXJlZFJlcXVlc3Q7ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PXtjaHVuazpuLGVuY29kaW5nOmksaXNCdWY6cixjYWxsYmFjazpvLG5leHQ6bnVsbH0sYz9jLm5leHQ9ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0OmUuYnVmZmVyZWRSZXF1ZXN0PWUubGFzdEJ1ZmZlcmVkUmVxdWVzdCxlLmJ1ZmZlcmVkUmVxdWVzdENvdW50Kz0xfWVsc2UgSSh0LGUsITEsYSxuLGksbyk7cmV0dXJuIHV9KHRoaXMsbyxhLHQsZSxyKSksc30sVC5wcm90b3R5cGUuY29yaz1mdW5jdGlvbigpe3RoaXMuX3dyaXRhYmxlU3RhdGUuY29ya2VkKyt9LFQucHJvdG90eXBlLnVuY29yaz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX3dyaXRhYmxlU3RhdGU7dC5jb3JrZWQmJih0LmNvcmtlZC0tLHQud3JpdGluZ3x8dC5jb3JrZWR8fHQuYnVmZmVyUHJvY2Vzc2luZ3x8IXQuYnVmZmVyZWRSZXF1ZXN0fHxPKHRoaXMsdCkpfSxULnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2Rpbmc9ZnVuY3Rpb24odCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PXQudG9Mb3dlckNhc2UoKSksIShbXCJoZXhcIixcInV0ZjhcIixcInV0Zi04XCIsXCJhc2NpaVwiLFwiYmluYXJ5XCIsXCJiYXNlNjRcIixcInVjczJcIixcInVjcy0yXCIsXCJ1dGYxNmxlXCIsXCJ1dGYtMTZsZVwiLFwicmF3XCJdLmluZGV4T2YoKHQrXCJcIikudG9Mb3dlckNhc2UoKSk+LTEpKXRocm93IG5ldyBFKHQpO3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZz10LHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcIndyaXRhYmxlQnVmZmVyXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyKCl9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLFwid3JpdGFibGVIaWdoV2F0ZXJNYXJrXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxULnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24odCxlLHIpe3IobmV3IHkoXCJfd3JpdGUoKVwiKSl9LFQucHJvdG90eXBlLl93cml0ZXY9bnVsbCxULnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMuX3dyaXRhYmxlU3RhdGU7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdD8ocj10LHQ9bnVsbCxlPW51bGwpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGUmJihyPWUsZT1udWxsKSxudWxsIT10JiZ0aGlzLndyaXRlKHQsZSksbi5jb3JrZWQmJihuLmNvcmtlZD0xLHRoaXMudW5jb3JrKCkpLG4uZW5kaW5nfHxmdW5jdGlvbih0LGUscil7ZS5lbmRpbmc9ITAsTih0LGUpLHImJihlLmZpbmlzaGVkP2kubmV4dFRpY2socik6dC5vbmNlKFwiZmluaXNoXCIscikpLGUuZW5kZWQ9ITAsdC53cml0YWJsZT0hMX0odGhpcyxuLHIpLHRoaXN9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcIndyaXRhYmxlTGVuZ3RoXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RofX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcImRlc3Ryb3llZFwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD10KX19KSxULnByb3RvdHlwZS5kZXN0cm95PWYuZGVzdHJveSxULnByb3RvdHlwZS5fdW5kZXN0cm95PWYudW5kZXN0cm95LFQucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKHQsZSl7ZSh0KX19LDg1MDoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG4saT1yKDE1NSk7ZnVuY3Rpb24gbyh0LGUscil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1yLHR9dmFyIHM9cig2MTApLGE9U3ltYm9sKFwibGFzdFJlc29sdmVcIiksdT1TeW1ib2woXCJsYXN0UmVqZWN0XCIpLGw9U3ltYm9sKFwiZXJyb3JcIiksYz1TeW1ib2woXCJlbmRlZFwiKSxmPVN5bWJvbChcImxhc3RQcm9taXNlXCIpLGg9U3ltYm9sKFwiaGFuZGxlUHJvbWlzZVwiKSxwPVN5bWJvbChcInN0cmVhbVwiKTtmdW5jdGlvbiBkKHQsZSl7cmV0dXJue3ZhbHVlOnQsZG9uZTplfX1mdW5jdGlvbiB5KHQpe3ZhciBlPXRbYV07aWYobnVsbCE9PWUpe3ZhciByPXRbcF0ucmVhZCgpO251bGwhPT1yJiYodFtmXT1udWxsLHRbYV09bnVsbCx0W3VdPW51bGwsZShkKHIsITEpKSl9fWZ1bmN0aW9uIGcodCl7aS5uZXh0VGljayh5LHQpfXZhciBiPU9iamVjdC5nZXRQcm90b3R5cGVPZigoZnVuY3Rpb24oKXt9KSksbT1PYmplY3Quc2V0UHJvdG90eXBlT2YoKG8obj17Z2V0IHN0cmVhbSgpe3JldHVybiB0aGlzW3BdfSxuZXh0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXNbbF07aWYobnVsbCE9PWUpcmV0dXJuIFByb21pc2UucmVqZWN0KGUpO2lmKHRoaXNbY10pcmV0dXJuIFByb21pc2UucmVzb2x2ZShkKHZvaWQgMCwhMCkpO2lmKHRoaXNbcF0uZGVzdHJveWVkKXJldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxyKXtpLm5leHRUaWNrKChmdW5jdGlvbigpe3RbbF0/cih0W2xdKTplKGQodm9pZCAwLCEwKSl9KSl9KSk7dmFyIHIsbj10aGlzW2ZdO2lmKG4pcj1uZXcgUHJvbWlzZShmdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbihyLG4pe3QudGhlbigoZnVuY3Rpb24oKXtlW2NdP3IoZCh2b2lkIDAsITApKTplW2hdKHIsbil9KSxuKX19KG4sdGhpcykpO2Vsc2V7dmFyIG89dGhpc1twXS5yZWFkKCk7aWYobnVsbCE9PW8pcmV0dXJuIFByb21pc2UucmVzb2x2ZShkKG8sITEpKTtyPW5ldyBQcm9taXNlKHRoaXNbaF0pfXJldHVybiB0aGlzW2ZdPXIscn19LFN5bWJvbC5hc3luY0l0ZXJhdG9yLChmdW5jdGlvbigpe3JldHVybiB0aGlzfSkpLG8obixcInJldHVyblwiLChmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIG5ldyBQcm9taXNlKChmdW5jdGlvbihlLHIpe3RbcF0uZGVzdHJveShudWxsLChmdW5jdGlvbih0KXt0P3IodCk6ZShkKHZvaWQgMCwhMCkpfSkpfSkpfSkpLG4pLGIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxyPU9iamVjdC5jcmVhdGUobSwobyhlPXt9LHAse3ZhbHVlOnQsd3JpdGFibGU6ITB9KSxvKGUsYSx7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLG8oZSx1LHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksbyhlLGwse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxvKGUsYyx7dmFsdWU6dC5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkLHdyaXRhYmxlOiEwfSksbyhlLGgse3ZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIG49cltwXS5yZWFkKCk7bj8ocltmXT1udWxsLHJbYV09bnVsbCxyW3VdPW51bGwsdChkKG4sITEpKSk6KHJbYV09dCxyW3VdPWUpfSx3cml0YWJsZTohMH0pLGUpKTtyZXR1cm4gcltmXT1udWxsLHModCwoZnVuY3Rpb24odCl7aWYodCYmXCJFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRVwiIT09dC5jb2RlKXt2YXIgZT1yW3VdO3JldHVybiBudWxsIT09ZSYmKHJbZl09bnVsbCxyW2FdPW51bGwsclt1XT1udWxsLGUodCkpLHZvaWQocltsXT10KX12YXIgbj1yW2FdO251bGwhPT1uJiYocltmXT1udWxsLHJbYV09bnVsbCxyW3VdPW51bGwsbihkKHZvaWQgMCwhMCkpKSxyW2NdPSEwfSkpLHQub24oXCJyZWFkYWJsZVwiLGcuYmluZChudWxsLHIpKSxyfX0sMzI3Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBuKHQsZSl7dmFyIHI9T2JqZWN0LmtleXModCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIG49T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0KTtlJiYobj1uLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxlKS5lbnVtZXJhYmxlfSkpKSxyLnB1c2guYXBwbHkocixuKX1yZXR1cm4gcn1mdW5jdGlvbiBpKHQsZSxyKXtyZXR1cm4gZSBpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPXIsdH1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LG4ua2V5LG4pfX12YXIgcz1yKDc2NCkuQnVmZmVyLGE9cig2NjkpLmluc3BlY3QsdT1hJiZhLmN1c3RvbXx8XCJpbnNwZWN0XCI7dC5leHBvcnRzPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyFmdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMsdCksdGhpcy5oZWFkPW51bGwsdGhpcy50YWlsPW51bGwsdGhpcy5sZW5ndGg9MH12YXIgZSxyO3JldHVybiBlPXQsKHI9W3trZXk6XCJwdXNoXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9e2RhdGE6dCxuZXh0Om51bGx9O3RoaXMubGVuZ3RoPjA/dGhpcy50YWlsLm5leHQ9ZTp0aGlzLmhlYWQ9ZSx0aGlzLnRhaWw9ZSwrK3RoaXMubGVuZ3RofX0se2tleTpcInVuc2hpZnRcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT17ZGF0YTp0LG5leHQ6dGhpcy5oZWFkfTswPT09dGhpcy5sZW5ndGgmJih0aGlzLnRhaWw9ZSksdGhpcy5oZWFkPWUsKyt0aGlzLmxlbmd0aH19LHtrZXk6XCJzaGlmdFwiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoMCE9PXRoaXMubGVuZ3RoKXt2YXIgdD10aGlzLmhlYWQuZGF0YTtyZXR1cm4gMT09PXRoaXMubGVuZ3RoP3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbDp0aGlzLmhlYWQ9dGhpcy5oZWFkLm5leHQsLS10aGlzLmxlbmd0aCx0fX19LHtrZXk6XCJjbGVhclwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5oZWFkPXRoaXMudGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9fSx7a2V5Olwiam9pblwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKDA9PT10aGlzLmxlbmd0aClyZXR1cm5cIlwiO2Zvcih2YXIgZT10aGlzLmhlYWQscj1cIlwiK2UuZGF0YTtlPWUubmV4dDspcis9dCtlLmRhdGE7cmV0dXJuIHJ9fSx7a2V5OlwiY29uY2F0XCIsdmFsdWU6ZnVuY3Rpb24odCl7aWYoMD09PXRoaXMubGVuZ3RoKXJldHVybiBzLmFsbG9jKDApO2Zvcih2YXIgZSxyLG4saT1zLmFsbG9jVW5zYWZlKHQ+Pj4wKSxvPXRoaXMuaGVhZCxhPTA7bzspZT1vLmRhdGEscj1pLG49YSxzLnByb3RvdHlwZS5jb3B5LmNhbGwoZSxyLG4pLGErPW8uZGF0YS5sZW5ndGgsbz1vLm5leHQ7cmV0dXJuIGl9fSx7a2V5OlwiY29uc3VtZVwiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIHI7cmV0dXJuIHQ8dGhpcy5oZWFkLmRhdGEubGVuZ3RoPyhyPXRoaXMuaGVhZC5kYXRhLnNsaWNlKDAsdCksdGhpcy5oZWFkLmRhdGE9dGhpcy5oZWFkLmRhdGEuc2xpY2UodCkpOnI9dD09PXRoaXMuaGVhZC5kYXRhLmxlbmd0aD90aGlzLnNoaWZ0KCk6ZT90aGlzLl9nZXRTdHJpbmcodCk6dGhpcy5fZ2V0QnVmZmVyKHQpLHJ9fSx7a2V5OlwiZmlyc3RcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlYWQuZGF0YX19LHtrZXk6XCJfZ2V0U3RyaW5nXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5oZWFkLHI9MSxuPWUuZGF0YTtmb3IodC09bi5sZW5ndGg7ZT1lLm5leHQ7KXt2YXIgaT1lLmRhdGEsbz10PmkubGVuZ3RoP2kubGVuZ3RoOnQ7aWYobz09PWkubGVuZ3RoP24rPWk6bis9aS5zbGljZSgwLHQpLDA9PSh0LT1vKSl7bz09PWkubGVuZ3RoPygrK3IsZS5uZXh0P3RoaXMuaGVhZD1lLm5leHQ6dGhpcy5oZWFkPXRoaXMudGFpbD1udWxsKToodGhpcy5oZWFkPWUsZS5kYXRhPWkuc2xpY2UobykpO2JyZWFrfSsrcn1yZXR1cm4gdGhpcy5sZW5ndGgtPXIsbn19LHtrZXk6XCJfZ2V0QnVmZmVyXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9cy5hbGxvY1Vuc2FmZSh0KSxyPXRoaXMuaGVhZCxuPTE7Zm9yKHIuZGF0YS5jb3B5KGUpLHQtPXIuZGF0YS5sZW5ndGg7cj1yLm5leHQ7KXt2YXIgaT1yLmRhdGEsbz10PmkubGVuZ3RoP2kubGVuZ3RoOnQ7aWYoaS5jb3B5KGUsZS5sZW5ndGgtdCwwLG8pLDA9PSh0LT1vKSl7bz09PWkubGVuZ3RoPygrK24sci5uZXh0P3RoaXMuaGVhZD1yLm5leHQ6dGhpcy5oZWFkPXRoaXMudGFpbD1udWxsKToodGhpcy5oZWFkPXIsci5kYXRhPWkuc2xpY2UobykpO2JyZWFrfSsrbn1yZXR1cm4gdGhpcy5sZW5ndGgtPW4sZX19LHtrZXk6dSx2YWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiBhKHRoaXMsZnVuY3Rpb24odCl7Zm9yKHZhciBlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7dmFyIHI9bnVsbCE9YXJndW1lbnRzW2VdP2FyZ3VtZW50c1tlXTp7fTtlJTI/bihPYmplY3QociksITApLmZvckVhY2goKGZ1bmN0aW9uKGUpe2kodCxlLHJbZV0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHQsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMocikpOm4oT2JqZWN0KHIpKS5mb3JFYWNoKChmdW5jdGlvbihlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixlKSl9KSl9cmV0dXJuIHR9KHt9LGUse2RlcHRoOjAsY3VzdG9tSW5zcGVjdDohMX0pKX19XSkmJm8oZS5wcm90b3R5cGUsciksdH0oKX0sMTk1Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDE1NSk7ZnVuY3Rpb24gaSh0LGUpe3ModCxlKSxvKHQpfWZ1bmN0aW9uIG8odCl7dC5fd3JpdGFibGVTdGF0ZSYmIXQuX3dyaXRhYmxlU3RhdGUuZW1pdENsb3NlfHx0Ll9yZWFkYWJsZVN0YXRlJiYhdC5fcmVhZGFibGVTdGF0ZS5lbWl0Q2xvc2V8fHQuZW1pdChcImNsb3NlXCIpfWZ1bmN0aW9uIHModCxlKXt0LmVtaXQoXCJlcnJvclwiLGUpfXQuZXhwb3J0cz17ZGVzdHJveTpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXMsYT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCx1PXRoaXMuX3dyaXRhYmxlU3RhdGUmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO3JldHVybiBhfHx1PyhlP2UodCk6dCYmKHRoaXMuX3dyaXRhYmxlU3RhdGU/dGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWR8fCh0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMCxuLm5leHRUaWNrKHMsdGhpcyx0KSk6bi5uZXh0VGljayhzLHRoaXMsdCkpLHRoaXMpOih0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITApLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMCksdGhpcy5fZGVzdHJveSh0fHxudWxsLChmdW5jdGlvbih0KXshZSYmdD9yLl93cml0YWJsZVN0YXRlP3IuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkP24ubmV4dFRpY2sobyxyKTooci5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsbi5uZXh0VGljayhpLHIsdCkpOm4ubmV4dFRpY2soaSxyLHQpOmU/KG4ubmV4dFRpY2sobyxyKSxlKHQpKTpuLm5leHRUaWNrKG8scil9KSksdGhpcyl9LHVuZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmc9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZD0hMSx0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQ9ITEpLHRoaXMuX3dyaXRhYmxlU3RhdGUmJih0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluYWxDYWxsZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5wcmVmaW5pc2hlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSExKX0sZXJyb3JPckRlc3Ryb3k6ZnVuY3Rpb24odCxlKXt2YXIgcj10Ll9yZWFkYWJsZVN0YXRlLG49dC5fd3JpdGFibGVTdGF0ZTtyJiZyLmF1dG9EZXN0cm95fHxuJiZuLmF1dG9EZXN0cm95P3QuZGVzdHJveShlKTp0LmVtaXQoXCJlcnJvclwiLGUpfX19LDYxMDoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigyODEpLnEuRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0U7ZnVuY3Rpb24gaSgpe310LmV4cG9ydHM9ZnVuY3Rpb24gdChlLHIsbyl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgcilyZXR1cm4gdChlLG51bGwscik7cnx8KHI9e30pLG89ZnVuY3Rpb24odCl7dmFyIGU9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIWUpe2U9ITA7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkociksaT0wO2k8cjtpKyspbltpXT1hcmd1bWVudHNbaV07dC5hcHBseSh0aGlzLG4pfX19KG98fGkpO3ZhciBzPXIucmVhZGFibGV8fCExIT09ci5yZWFkYWJsZSYmZS5yZWFkYWJsZSxhPXIud3JpdGFibGV8fCExIT09ci53cml0YWJsZSYmZS53cml0YWJsZSx1PWZ1bmN0aW9uKCl7ZS53cml0YWJsZXx8YygpfSxsPWUuX3dyaXRhYmxlU3RhdGUmJmUuX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQsYz1mdW5jdGlvbigpe2E9ITEsbD0hMCxzfHxvLmNhbGwoZSl9LGY9ZS5fcmVhZGFibGVTdGF0ZSYmZS5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkLGg9ZnVuY3Rpb24oKXtzPSExLGY9ITAsYXx8by5jYWxsKGUpfSxwPWZ1bmN0aW9uKHQpe28uY2FsbChlLHQpfSxkPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIHMmJiFmPyhlLl9yZWFkYWJsZVN0YXRlJiZlLl9yZWFkYWJsZVN0YXRlLmVuZGVkfHwodD1uZXcgbiksby5jYWxsKGUsdCkpOmEmJiFsPyhlLl93cml0YWJsZVN0YXRlJiZlLl93cml0YWJsZVN0YXRlLmVuZGVkfHwodD1uZXcgbiksby5jYWxsKGUsdCkpOnZvaWQgMH0seT1mdW5jdGlvbigpe2UucmVxLm9uKFwiZmluaXNoXCIsYyl9O3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdC5zZXRIZWFkZXImJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQuYWJvcnR9KGUpPyhlLm9uKFwiY29tcGxldGVcIixjKSxlLm9uKFwiYWJvcnRcIixkKSxlLnJlcT95KCk6ZS5vbihcInJlcXVlc3RcIix5KSk6YSYmIWUuX3dyaXRhYmxlU3RhdGUmJihlLm9uKFwiZW5kXCIsdSksZS5vbihcImNsb3NlXCIsdSkpLGUub24oXCJlbmRcIixoKSxlLm9uKFwiZmluaXNoXCIsYyksITEhPT1yLmVycm9yJiZlLm9uKFwiZXJyb3JcIixwKSxlLm9uKFwiY2xvc2VcIixkKSxmdW5jdGlvbigpe2UucmVtb3ZlTGlzdGVuZXIoXCJjb21wbGV0ZVwiLGMpLGUucmVtb3ZlTGlzdGVuZXIoXCJhYm9ydFwiLGQpLGUucmVtb3ZlTGlzdGVuZXIoXCJyZXF1ZXN0XCIseSksZS5yZXEmJmUucmVxLnJlbW92ZUxpc3RlbmVyKFwiZmluaXNoXCIsYyksZS5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLHUpLGUucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLHUpLGUucmVtb3ZlTGlzdGVuZXIoXCJmaW5pc2hcIixjKSxlLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsaCksZS5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIscCksZS5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsZCl9fX0sMTY3OnQ9Pnt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoXCJSZWFkYWJsZS5mcm9tIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGJyb3dzZXJcIil9fSw5NDY6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO3ZhciBuLGk9cigyODEpLnEsbz1pLkVSUl9NSVNTSU5HX0FSR1Mscz1pLkVSUl9TVFJFQU1fREVTVFJPWUVEO2Z1bmN0aW9uIGEodCl7aWYodCl0aHJvdyB0fWZ1bmN0aW9uIHUodCxlLGksbyl7bz1mdW5jdGlvbih0KXt2YXIgZT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtlfHwoZT0hMCx0LmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKX19KG8pO3ZhciBhPSExO3Qub24oXCJjbG9zZVwiLChmdW5jdGlvbigpe2E9ITB9KSksdm9pZCAwPT09biYmKG49cig2MTApKSxuKHQse3JlYWRhYmxlOmUsd3JpdGFibGU6aX0sKGZ1bmN0aW9uKHQpe2lmKHQpcmV0dXJuIG8odCk7YT0hMCxvKCl9KSk7dmFyIHU9ITE7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKCFhJiYhdSlyZXR1cm4gdT0hMCxmdW5jdGlvbih0KXtyZXR1cm4gdC5zZXRIZWFkZXImJlwiZnVuY3Rpb25cIj09dHlwZW9mIHQuYWJvcnR9KHQpP3QuYWJvcnQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmRlc3Ryb3k/dC5kZXN0cm95KCk6dm9pZCBvKGV8fG5ldyBzKFwicGlwZVwiKSl9fWZ1bmN0aW9uIGwodCl7dCgpfWZ1bmN0aW9uIGModCxlKXtyZXR1cm4gdC5waXBlKGUpfWZ1bmN0aW9uIGYodCl7cmV0dXJuIHQubGVuZ3RoP1wiZnVuY3Rpb25cIiE9dHlwZW9mIHRbdC5sZW5ndGgtMV0/YTp0LnBvcCgpOmF9dC5leHBvcnRzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsZT1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspZVtyXT1hcmd1bWVudHNbcl07dmFyIG4saT1mKGUpO2lmKEFycmF5LmlzQXJyYXkoZVswXSkmJihlPWVbMF0pLGUubGVuZ3RoPDIpdGhyb3cgbmV3IG8oXCJzdHJlYW1zXCIpO3ZhciBzPWUubWFwKChmdW5jdGlvbih0LHIpe3ZhciBvPXI8ZS5sZW5ndGgtMTtyZXR1cm4gdSh0LG8scj4wLChmdW5jdGlvbih0KXtufHwobj10KSx0JiZzLmZvckVhY2gobCksb3x8KHMuZm9yRWFjaChsKSxpKG4pKX0pKX0pKTtyZXR1cm4gZS5yZWR1Y2UoYyl9fSw0NTc6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO3ZhciBuPXIoMjgxKS5xLkVSUl9JTlZBTElEX09QVF9WQUxVRTt0LmV4cG9ydHM9e2dldEhpZ2hXYXRlck1hcms6ZnVuY3Rpb24odCxlLHIsaSl7dmFyIG89ZnVuY3Rpb24odCxlLHIpe3JldHVybiBudWxsIT10LmhpZ2hXYXRlck1hcms/dC5oaWdoV2F0ZXJNYXJrOmU/dFtyXTpudWxsfShlLGkscik7aWYobnVsbCE9byl7aWYoIWlzRmluaXRlKG8pfHxNYXRoLmZsb29yKG8pIT09b3x8bzwwKXRocm93IG5ldyBuKGk/cjpcImhpZ2hXYXRlck1hcmtcIixvKTtyZXR1cm4gTWF0aC5mbG9vcihvKX1yZXR1cm4gdC5vYmplY3RNb2RlPzE2OjE2Mzg0fX19LDUwMzoodCxlLHIpPT57dC5leHBvcnRzPXIoMTg3KS5FdmVudEVtaXR0ZXJ9LDUwOToodCxlLHIpPT57dmFyIG49cig3NjQpLGk9bi5CdWZmZXI7ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgciBpbiB0KWVbcl09dFtyXX1mdW5jdGlvbiBzKHQsZSxyKXtyZXR1cm4gaSh0LGUscil9aS5mcm9tJiZpLmFsbG9jJiZpLmFsbG9jVW5zYWZlJiZpLmFsbG9jVW5zYWZlU2xvdz90LmV4cG9ydHM9bjoobyhuLGUpLGUuQnVmZmVyPXMpLHMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLG8oaSxzKSxzLmZyb209ZnVuY3Rpb24odCxlLHIpe2lmKFwibnVtYmVyXCI9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlclwiKTtyZXR1cm4gaSh0LGUscil9LHMuYWxsb2M9ZnVuY3Rpb24odCxlLHIpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyXCIpO3ZhciBuPWkodCk7cmV0dXJuIHZvaWQgMCE9PWU/XCJzdHJpbmdcIj09dHlwZW9mIHI/bi5maWxsKGUscik6bi5maWxsKGUpOm4uZmlsbCgwKSxufSxzLmFsbG9jVW5zYWZlPWZ1bmN0aW9uKHQpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoXCJBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyXCIpO3JldHVybiBpKHQpfSxzLmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbih0KXtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwiKTtyZXR1cm4gbi5TbG93QnVmZmVyKHQpfX0sODMwOih0LGUscik9Pnt0LmV4cG9ydHM9aTt2YXIgbj1yKDE4NykuRXZlbnRFbWl0dGVyO2Z1bmN0aW9uIGkoKXtuLmNhbGwodGhpcyl9cig3MTcpKGksbiksaS5SZWFkYWJsZT1yKDQ4MSksaS5Xcml0YWJsZT1yKDIyOSksaS5EdXBsZXg9cig3NTMpLGkuVHJhbnNmb3JtPXIoNjA1KSxpLlBhc3NUaHJvdWdoPXIoNzI1KSxpLmZpbmlzaGVkPXIoNjEwKSxpLnBpcGVsaW5lPXIoOTQ2KSxpLlN0cmVhbT1pLGkucHJvdG90eXBlLnBpcGU9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzO2Z1bmN0aW9uIGkoZSl7dC53cml0YWJsZSYmITE9PT10LndyaXRlKGUpJiZyLnBhdXNlJiZyLnBhdXNlKCl9ZnVuY3Rpb24gbygpe3IucmVhZGFibGUmJnIucmVzdW1lJiZyLnJlc3VtZSgpfXIub24oXCJkYXRhXCIsaSksdC5vbihcImRyYWluXCIsbyksdC5faXNTdGRpb3x8ZSYmITE9PT1lLmVuZHx8KHIub24oXCJlbmRcIixhKSxyLm9uKFwiY2xvc2VcIix1KSk7dmFyIHM9ITE7ZnVuY3Rpb24gYSgpe3N8fChzPSEwLHQuZW5kKCkpfWZ1bmN0aW9uIHUoKXtzfHwocz0hMCxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmRlc3Ryb3kmJnQuZGVzdHJveSgpKX1mdW5jdGlvbiBsKHQpe2lmKGMoKSwwPT09bi5saXN0ZW5lckNvdW50KHRoaXMsXCJlcnJvclwiKSl0aHJvdyB0fWZ1bmN0aW9uIGMoKXtyLnJlbW92ZUxpc3RlbmVyKFwiZGF0YVwiLGkpLHQucmVtb3ZlTGlzdGVuZXIoXCJkcmFpblwiLG8pLHIucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIixhKSxyLnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIix1KSxyLnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixsKSx0LnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixsKSxyLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsYyksci5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsYyksdC5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsYyl9cmV0dXJuIHIub24oXCJlcnJvclwiLGwpLHQub24oXCJlcnJvclwiLGwpLHIub24oXCJlbmRcIixjKSxyLm9uKFwiY2xvc2VcIixjKSx0Lm9uKFwiY2xvc2VcIixjKSx0LmVtaXQoXCJwaXBlXCIsciksdH19LDU1MzoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cig1MDkpLkJ1ZmZlcixpPW4uaXNFbmNvZGluZ3x8ZnVuY3Rpb24odCl7c3dpdGNoKCh0PVwiXCIrdCkmJnQudG9Mb3dlckNhc2UoKSl7Y2FzZVwiaGV4XCI6Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6Y2FzZVwiYXNjaWlcIjpjYXNlXCJiaW5hcnlcIjpjYXNlXCJiYXNlNjRcIjpjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpjYXNlXCJyYXdcIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX07ZnVuY3Rpb24gbyh0KXt2YXIgZTtzd2l0Y2godGhpcy5lbmNvZGluZz1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0KXtpZighdClyZXR1cm5cInV0ZjhcIjtmb3IodmFyIGU7Oylzd2l0Y2godCl7Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6cmV0dXJuXCJ1dGY4XCI7Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6cmV0dXJuXCJ1dGYxNmxlXCI7Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuXCJsYXRpbjFcIjtjYXNlXCJiYXNlNjRcIjpjYXNlXCJhc2NpaVwiOmNhc2VcImhleFwiOnJldHVybiB0O2RlZmF1bHQ6aWYoZSlyZXR1cm47dD0oXCJcIit0KS50b0xvd2VyQ2FzZSgpLGU9ITB9fSh0KTtpZihcInN0cmluZ1wiIT10eXBlb2YgZSYmKG4uaXNFbmNvZGluZz09PWl8fCFpKHQpKSl0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIit0KTtyZXR1cm4gZXx8dH0odCksdGhpcy5lbmNvZGluZyl7Y2FzZVwidXRmMTZsZVwiOnRoaXMudGV4dD11LHRoaXMuZW5kPWwsZT00O2JyZWFrO2Nhc2VcInV0ZjhcIjp0aGlzLmZpbGxMYXN0PWEsZT00O2JyZWFrO2Nhc2VcImJhc2U2NFwiOnRoaXMudGV4dD1jLHRoaXMuZW5kPWYsZT0zO2JyZWFrO2RlZmF1bHQ6cmV0dXJuIHRoaXMud3JpdGU9aCx2b2lkKHRoaXMuZW5kPXApfXRoaXMubGFzdE5lZWQ9MCx0aGlzLmxhc3RUb3RhbD0wLHRoaXMubGFzdENoYXI9bi5hbGxvY1Vuc2FmZShlKX1mdW5jdGlvbiBzKHQpe3JldHVybiB0PD0xMjc/MDp0Pj41PT02PzI6dD4+ND09MTQ/Mzp0Pj4zPT0zMD80OnQ+PjY9PTI/LTE6LTJ9ZnVuY3Rpb24gYSh0KXt2YXIgZT10aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLHI9ZnVuY3Rpb24odCxlLHIpe2lmKDEyOCE9KDE5MiZlWzBdKSlyZXR1cm4gdC5sYXN0TmVlZD0wLFwi77+9XCI7aWYodC5sYXN0TmVlZD4xJiZlLmxlbmd0aD4xKXtpZigxMjghPSgxOTImZVsxXSkpcmV0dXJuIHQubGFzdE5lZWQ9MSxcIu+/vVwiO2lmKHQubGFzdE5lZWQ+MiYmZS5sZW5ndGg+MiYmMTI4IT0oMTkyJmVbMl0pKXJldHVybiB0Lmxhc3ROZWVkPTIsXCLvv71cIn19KHRoaXMsdCk7cmV0dXJuIHZvaWQgMCE9PXI/cjp0aGlzLmxhc3ROZWVkPD10Lmxlbmd0aD8odC5jb3B5KHRoaXMubGFzdENoYXIsZSwwLHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKSk6KHQuY29weSh0aGlzLmxhc3RDaGFyLGUsMCx0Lmxlbmd0aCksdm9pZCh0aGlzLmxhc3ROZWVkLT10Lmxlbmd0aCkpfWZ1bmN0aW9uIHUodCxlKXtpZigodC5sZW5ndGgtZSklMj09MCl7dmFyIHI9dC50b1N0cmluZyhcInV0ZjE2bGVcIixlKTtpZihyKXt2YXIgbj1yLmNoYXJDb2RlQXQoci5sZW5ndGgtMSk7aWYobj49NTUyOTYmJm48PTU2MzE5KXJldHVybiB0aGlzLmxhc3ROZWVkPTIsdGhpcy5sYXN0VG90YWw9NCx0aGlzLmxhc3RDaGFyWzBdPXRbdC5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT10W3QubGVuZ3RoLTFdLHIuc2xpY2UoMCwtMSl9cmV0dXJuIHJ9cmV0dXJuIHRoaXMubGFzdE5lZWQ9MSx0aGlzLmxhc3RUb3RhbD0yLHRoaXMubGFzdENoYXJbMF09dFt0Lmxlbmd0aC0xXSx0LnRvU3RyaW5nKFwidXRmMTZsZVwiLGUsdC5sZW5ndGgtMSl9ZnVuY3Rpb24gbCh0KXt2YXIgZT10JiZ0Lmxlbmd0aD90aGlzLndyaXRlKHQpOlwiXCI7aWYodGhpcy5sYXN0TmVlZCl7dmFyIHI9dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZDtyZXR1cm4gZSt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKFwidXRmMTZsZVwiLDAscil9cmV0dXJuIGV9ZnVuY3Rpb24gYyh0LGUpe3ZhciByPSh0Lmxlbmd0aC1lKSUzO3JldHVybiAwPT09cj90LnRvU3RyaW5nKFwiYmFzZTY0XCIsZSk6KHRoaXMubGFzdE5lZWQ9My1yLHRoaXMubGFzdFRvdGFsPTMsMT09PXI/dGhpcy5sYXN0Q2hhclswXT10W3QubGVuZ3RoLTFdOih0aGlzLmxhc3RDaGFyWzBdPXRbdC5sZW5ndGgtMl0sdGhpcy5sYXN0Q2hhclsxXT10W3QubGVuZ3RoLTFdKSx0LnRvU3RyaW5nKFwiYmFzZTY0XCIsZSx0Lmxlbmd0aC1yKSl9ZnVuY3Rpb24gZih0KXt2YXIgZT10JiZ0Lmxlbmd0aD90aGlzLndyaXRlKHQpOlwiXCI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/ZSt0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKFwiYmFzZTY0XCIsMCwzLXRoaXMubGFzdE5lZWQpOmV9ZnVuY3Rpb24gaCh0KXtyZXR1cm4gdC50b1N0cmluZyh0aGlzLmVuY29kaW5nKX1mdW5jdGlvbiBwKHQpe3JldHVybiB0JiZ0Lmxlbmd0aD90aGlzLndyaXRlKHQpOlwiXCJ9ZS5zPW8sby5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCl7aWYoMD09PXQubGVuZ3RoKXJldHVyblwiXCI7dmFyIGUscjtpZih0aGlzLmxhc3ROZWVkKXtpZih2b2lkIDA9PT0oZT10aGlzLmZpbGxMYXN0KHQpKSlyZXR1cm5cIlwiO3I9dGhpcy5sYXN0TmVlZCx0aGlzLmxhc3ROZWVkPTB9ZWxzZSByPTA7cmV0dXJuIHI8dC5sZW5ndGg/ZT9lK3RoaXMudGV4dCh0LHIpOnRoaXMudGV4dCh0LHIpOmV8fFwiXCJ9LG8ucHJvdG90eXBlLmVuZD1mdW5jdGlvbih0KXt2YXIgZT10JiZ0Lmxlbmd0aD90aGlzLndyaXRlKHQpOlwiXCI7cmV0dXJuIHRoaXMubGFzdE5lZWQ/ZStcIu+/vVwiOmV9LG8ucHJvdG90eXBlLnRleHQ9ZnVuY3Rpb24odCxlKXt2YXIgcj1mdW5jdGlvbih0LGUscil7dmFyIG49ZS5sZW5ndGgtMTtpZihuPHIpcmV0dXJuIDA7dmFyIGk9cyhlW25dKTtyZXR1cm4gaT49MD8oaT4wJiYodC5sYXN0TmVlZD1pLTEpLGkpOi0tbjxyfHwtMj09PWk/MDooaT1zKGVbbl0pKT49MD8oaT4wJiYodC5sYXN0TmVlZD1pLTIpLGkpOi0tbjxyfHwtMj09PWk/MDooaT1zKGVbbl0pKT49MD8oaT4wJiYoMj09PWk/aT0wOnQubGFzdE5lZWQ9aS0zKSxpKTowfSh0aGlzLHQsZSk7aWYoIXRoaXMubGFzdE5lZWQpcmV0dXJuIHQudG9TdHJpbmcoXCJ1dGY4XCIsZSk7dGhpcy5sYXN0VG90YWw9cjt2YXIgbj10Lmxlbmd0aC0oci10aGlzLmxhc3ROZWVkKTtyZXR1cm4gdC5jb3B5KHRoaXMubGFzdENoYXIsMCxuKSx0LnRvU3RyaW5nKFwidXRmOFwiLGUsbil9LG8ucHJvdG90eXBlLmZpbGxMYXN0PWZ1bmN0aW9uKHQpe2lmKHRoaXMubGFzdE5lZWQ8PXQubGVuZ3RoKXJldHVybiB0LmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAsdGhpcy5sYXN0TmVlZCksdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLDAsdGhpcy5sYXN0VG90YWwpO3QuY29weSh0aGlzLmxhc3RDaGFyLHRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQsMCx0Lmxlbmd0aCksdGhpcy5sYXN0TmVlZC09dC5sZW5ndGh9fSw5Mjc6KHQsZSxyKT0+e2Z1bmN0aW9uIG4odCl7dHJ5e2lmKCFyLmcubG9jYWxTdG9yYWdlKXJldHVybiExfWNhdGNoKHQpe3JldHVybiExfXZhciBlPXIuZy5sb2NhbFN0b3JhZ2VbdF07cmV0dXJuIG51bGwhPWUmJlwidHJ1ZVwiPT09U3RyaW5nKGUpLnRvTG93ZXJDYXNlKCl9dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7aWYobihcIm5vRGVwcmVjYXRpb25cIikpcmV0dXJuIHQ7dmFyIHI9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoIXIpe2lmKG4oXCJ0aHJvd0RlcHJlY2F0aW9uXCIpKXRocm93IG5ldyBFcnJvcihlKTtuKFwidHJhY2VEZXByZWNhdGlvblwiKT9jb25zb2xlLnRyYWNlKGUpOmNvbnNvbGUud2FybihlKSxyPSEwfXJldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSw2Njk6dD0+e1widXNlIHN0cmljdFwiO3QuZXhwb3J0cz1lfSw5Mzc6ZT0+e1widXNlIHN0cmljdFwiO2lmKHZvaWQgMD09PXQpe3ZhciByPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAndW5kZWZpbmVkJ1wiKTt0aHJvdyByLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIscn1lLmV4cG9ydHM9dH19LG49e307ZnVuY3Rpb24gaSh0KXt2YXIgZT1uW3RdO2lmKHZvaWQgMCE9PWUpcmV0dXJuIGUuZXhwb3J0czt2YXIgbz1uW3RdPXtleHBvcnRzOnt9fTtyZXR1cm4gclt0XS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxpKSxvLmV4cG9ydHN9aS5kPSh0LGUpPT57Zm9yKHZhciByIGluIGUpaS5vKGUscikmJiFpLm8odCxyKSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQscix7ZW51bWVyYWJsZTohMCxnZXQ6ZVtyXX0pfSxpLmc9ZnVuY3Rpb24oKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZ2xvYmFsVGhpcylyZXR1cm4gZ2xvYmFsVGhpczt0cnl7cmV0dXJuIHRoaXN8fG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCl9Y2F0Y2godCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93fX0oKSxpLm89KHQsZSk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpLGkucj10PT57XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLnRvU3RyaW5nVGFnJiZPYmplY3QuZGVmaW5lUHJvcGVydHkodCxTeW1ib2wudG9TdHJpbmdUYWcse3ZhbHVlOlwiTW9kdWxlXCJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KX07dmFyIG89e307cmV0dXJuKCgpPT57XCJ1c2Ugc3RyaWN0XCI7aS5yKG8pLGkuZChvLHtCaWdOdW1iZXI6KCk9PnQuQmlnTnVtYmVyLENvbW1lbnRlZDooKT0+dC5Db21tZW50ZWQsRGVjb2RlcjooKT0+dC5EZWNvZGVyLERpYWdub3NlOigpPT50LkRpYWdub3NlLEVuY29kZXI6KCk9PnQuRW5jb2RlcixNYXA6KCk9PnQuTWFwLFNpbXBsZTooKT0+dC5TaW1wbGUsVGFnZ2VkOigpPT50LlRhZ2dlZCxjb21tZW50OigpPT50LlVJLGRlY29kZTooKT0+dC5KeCxkZWNvZGVBbGw6KCk9PnQuZkksZGVjb2RlQWxsU3luYzooKT0+dC5jYyxkZWNvZGVGaXJzdDooKT0+dC5oOCxkZWNvZGVGaXJzdFN5bmM6KCk9PnQuJHUsZGlhZ25vc2U6KCk9PnQuTSxlbmNvZGU6KCk9PnQuY3YsZW5jb2RlQXN5bmM6KCk9PnQuV1IsZW5jb2RlQ2Fub25pY2FsOigpPT50Lk4yLGVuY29kZU9uZTooKT0+dC5URyxoYXNCaWdJbnQ6KCk9PnQudmMsbGV2ZWxkYjooKT0+dC53d30pO3ZhciB0PWkoMTQxKX0pKCksb30pKCl9KSk7IiwidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnc3RyZWFtJykuVHJhbnNmb3JtXG52YXIgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyJykuU3RyaW5nRGVjb2RlclxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5mdW5jdGlvbiBDaXBoZXJCYXNlIChoYXNoTW9kZSkge1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuICB0aGlzLmhhc2hNb2RlID0gdHlwZW9mIGhhc2hNb2RlID09PSAnc3RyaW5nJ1xuICBpZiAodGhpcy5oYXNoTW9kZSkge1xuICAgIHRoaXNbaGFzaE1vZGVdID0gdGhpcy5fZmluYWxPckRpZ2VzdFxuICB9IGVsc2Uge1xuICAgIHRoaXMuZmluYWwgPSB0aGlzLl9maW5hbE9yRGlnZXN0XG4gIH1cbiAgaWYgKHRoaXMuX2ZpbmFsKSB7XG4gICAgdGhpcy5fX2ZpbmFsID0gdGhpcy5fZmluYWxcbiAgICB0aGlzLl9maW5hbCA9IG51bGxcbiAgfVxuICB0aGlzLl9kZWNvZGVyID0gbnVsbFxuICB0aGlzLl9lbmNvZGluZyA9IG51bGxcbn1cbmluaGVyaXRzKENpcGhlckJhc2UsIFRyYW5zZm9ybSlcblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGlucHV0RW5jLCBvdXRwdXRFbmMpIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBpbnB1dEVuYylcbiAgfVxuXG4gIHZhciBvdXREYXRhID0gdGhpcy5fdXBkYXRlKGRhdGEpXG4gIGlmICh0aGlzLmhhc2hNb2RlKSByZXR1cm4gdGhpc1xuXG4gIGlmIChvdXRwdXRFbmMpIHtcbiAgICBvdXREYXRhID0gdGhpcy5fdG9TdHJpbmcob3V0RGF0YSwgb3V0cHV0RW5jKVxuICB9XG5cbiAgcmV0dXJuIG91dERhdGFcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoKSB7fVxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuZ2V0QXV0aFRhZyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuc2V0QXV0aFRhZyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuc2V0QUFEID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3RyeWluZyB0byBzZXQgYWFkIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChkYXRhLCBfLCBuZXh0KSB7XG4gIHZhciBlcnJcbiAgdHJ5IHtcbiAgICBpZiAodGhpcy5oYXNoTW9kZSkge1xuICAgICAgdGhpcy5fdXBkYXRlKGRhdGEpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaCh0aGlzLl91cGRhdGUoZGF0YSkpXG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyID0gZVxuICB9IGZpbmFsbHkge1xuICAgIG5leHQoZXJyKVxuICB9XG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbiAoZG9uZSkge1xuICB2YXIgZXJyXG4gIHRyeSB7XG4gICAgdGhpcy5wdXNoKHRoaXMuX19maW5hbCgpKVxuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyID0gZVxuICB9XG5cbiAgZG9uZShlcnIpXG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS5fZmluYWxPckRpZ2VzdCA9IGZ1bmN0aW9uIChvdXRwdXRFbmMpIHtcbiAgdmFyIG91dERhdGEgPSB0aGlzLl9fZmluYWwoKSB8fCBCdWZmZXIuYWxsb2MoMClcbiAgaWYgKG91dHB1dEVuYykge1xuICAgIG91dERhdGEgPSB0aGlzLl90b1N0cmluZyhvdXREYXRhLCBvdXRwdXRFbmMsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG91dERhdGFcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX3RvU3RyaW5nID0gZnVuY3Rpb24gKHZhbHVlLCBlbmMsIGZpbikge1xuICBpZiAoIXRoaXMuX2RlY29kZXIpIHtcbiAgICB0aGlzLl9kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoZW5jKVxuICAgIHRoaXMuX2VuY29kaW5nID0gZW5jXG4gIH1cblxuICBpZiAodGhpcy5fZW5jb2RpbmcgIT09IGVuYykgdGhyb3cgbmV3IEVycm9yKCdjYW5cXCd0IHN3aXRjaCBlbmNvZGluZ3MnKVxuXG4gIHZhciBvdXQgPSB0aGlzLl9kZWNvZGVyLndyaXRlKHZhbHVlKVxuICBpZiAoZmluKSB7XG4gICAgb3V0ICs9IHRoaXMuX2RlY29kZXIuZW5kKClcbiAgfVxuXG4gIHJldHVybiBvdXRcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBDaXBoZXJCYXNlXG4iLCJ2YXIgZWxsaXB0aWMgPSByZXF1aXJlKCdlbGxpcHRpYycpXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlRUNESCAoY3VydmUpIHtcbiAgcmV0dXJuIG5ldyBFQ0RIKGN1cnZlKVxufVxuXG52YXIgYWxpYXNlcyA9IHtcbiAgc2VjcDI1NmsxOiB7XG4gICAgbmFtZTogJ3NlY3AyNTZrMScsXG4gICAgYnl0ZUxlbmd0aDogMzJcbiAgfSxcbiAgc2VjcDIyNHIxOiB7XG4gICAgbmFtZTogJ3AyMjQnLFxuICAgIGJ5dGVMZW5ndGg6IDI4XG4gIH0sXG4gIHByaW1lMjU2djE6IHtcbiAgICBuYW1lOiAncDI1NicsXG4gICAgYnl0ZUxlbmd0aDogMzJcbiAgfSxcbiAgcHJpbWUxOTJ2MToge1xuICAgIG5hbWU6ICdwMTkyJyxcbiAgICBieXRlTGVuZ3RoOiAyNFxuICB9LFxuICBlZDI1NTE5OiB7XG4gICAgbmFtZTogJ2VkMjU1MTknLFxuICAgIGJ5dGVMZW5ndGg6IDMyXG4gIH0sXG4gIHNlY3AzODRyMToge1xuICAgIG5hbWU6ICdwMzg0JyxcbiAgICBieXRlTGVuZ3RoOiA0OFxuICB9LFxuICBzZWNwNTIxcjE6IHtcbiAgICBuYW1lOiAncDUyMScsXG4gICAgYnl0ZUxlbmd0aDogNjZcbiAgfVxufVxuXG5hbGlhc2VzLnAyMjQgPSBhbGlhc2VzLnNlY3AyMjRyMVxuYWxpYXNlcy5wMjU2ID0gYWxpYXNlcy5zZWNwMjU2cjEgPSBhbGlhc2VzLnByaW1lMjU2djFcbmFsaWFzZXMucDE5MiA9IGFsaWFzZXMuc2VjcDE5MnIxID0gYWxpYXNlcy5wcmltZTE5MnYxXG5hbGlhc2VzLnAzODQgPSBhbGlhc2VzLnNlY3AzODRyMVxuYWxpYXNlcy5wNTIxID0gYWxpYXNlcy5zZWNwNTIxcjFcblxuZnVuY3Rpb24gRUNESCAoY3VydmUpIHtcbiAgdGhpcy5jdXJ2ZVR5cGUgPSBhbGlhc2VzW2N1cnZlXVxuICBpZiAoIXRoaXMuY3VydmVUeXBlKSB7XG4gICAgdGhpcy5jdXJ2ZVR5cGUgPSB7XG4gICAgICBuYW1lOiBjdXJ2ZVxuICAgIH1cbiAgfVxuICB0aGlzLmN1cnZlID0gbmV3IGVsbGlwdGljLmVjKHRoaXMuY3VydmVUeXBlLm5hbWUpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbmV3LWNhcFxuICB0aGlzLmtleXMgPSB2b2lkIDBcbn1cblxuRUNESC5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzID0gZnVuY3Rpb24gKGVuYywgZm9ybWF0KSB7XG4gIHRoaXMua2V5cyA9IHRoaXMuY3VydmUuZ2VuS2V5UGFpcigpXG4gIHJldHVybiB0aGlzLmdldFB1YmxpY0tleShlbmMsIGZvcm1hdClcbn1cblxuRUNESC5wcm90b3R5cGUuY29tcHV0ZVNlY3JldCA9IGZ1bmN0aW9uIChvdGhlciwgaW5lbmMsIGVuYykge1xuICBpbmVuYyA9IGluZW5jIHx8ICd1dGY4J1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihvdGhlcikpIHtcbiAgICBvdGhlciA9IG5ldyBCdWZmZXIob3RoZXIsIGluZW5jKVxuICB9XG4gIHZhciBvdGhlclB1YiA9IHRoaXMuY3VydmUua2V5RnJvbVB1YmxpYyhvdGhlcikuZ2V0UHVibGljKClcbiAgdmFyIG91dCA9IG90aGVyUHViLm11bCh0aGlzLmtleXMuZ2V0UHJpdmF0ZSgpKS5nZXRYKClcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKG91dCwgZW5jLCB0aGlzLmN1cnZlVHlwZS5ieXRlTGVuZ3RoKVxufVxuXG5FQ0RILnByb3RvdHlwZS5nZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiAoZW5jLCBmb3JtYXQpIHtcbiAgdmFyIGtleSA9IHRoaXMua2V5cy5nZXRQdWJsaWMoZm9ybWF0ID09PSAnY29tcHJlc3NlZCcsIHRydWUpXG4gIGlmIChmb3JtYXQgPT09ICdoeWJyaWQnKSB7XG4gICAgaWYgKGtleVtrZXkubGVuZ3RoIC0gMV0gJSAyKSB7XG4gICAgICBrZXlbMF0gPSA3XG4gICAgfSBlbHNlIHtcbiAgICAgIGtleVswXSA9IDZcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKGtleSwgZW5jKVxufVxuXG5FQ0RILnByb3RvdHlwZS5nZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gKGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5rZXlzLmdldFByaXZhdGUoKSwgZW5jKVxufVxuXG5FQ0RILnByb3RvdHlwZS5zZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiAocHViLCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4J1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwdWIpKSB7XG4gICAgcHViID0gbmV3IEJ1ZmZlcihwdWIsIGVuYylcbiAgfVxuICB0aGlzLmtleXMuX2ltcG9ydFB1YmxpYyhwdWIpXG4gIHJldHVybiB0aGlzXG59XG5cbkVDREgucHJvdG90eXBlLnNldFByaXZhdGVLZXkgPSBmdW5jdGlvbiAocHJpdiwgZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAndXRmOCdcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpdikpIHtcbiAgICBwcml2ID0gbmV3IEJ1ZmZlcihwcml2LCBlbmMpXG4gIH1cblxuICB2YXIgX3ByaXYgPSBuZXcgQk4ocHJpdilcbiAgX3ByaXYgPSBfcHJpdi50b1N0cmluZygxNilcbiAgdGhpcy5rZXlzID0gdGhpcy5jdXJ2ZS5nZW5LZXlQYWlyKClcbiAgdGhpcy5rZXlzLl9pbXBvcnRQcml2YXRlKF9wcml2KVxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiBmb3JtYXRSZXR1cm5WYWx1ZSAoYm4sIGVuYywgbGVuKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShibikpIHtcbiAgICBibiA9IGJuLnRvQXJyYXkoKVxuICB9XG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKGJuKVxuICBpZiAobGVuICYmIGJ1Zi5sZW5ndGggPCBsZW4pIHtcbiAgICB2YXIgemVyb3MgPSBuZXcgQnVmZmVyKGxlbiAtIGJ1Zi5sZW5ndGgpXG4gICAgemVyb3MuZmlsbCgwKVxuICAgIGJ1ZiA9IEJ1ZmZlci5jb25jYXQoW3plcm9zLCBidWZdKVxuICB9XG4gIGlmICghZW5jKSB7XG4gICAgcmV0dXJuIGJ1ZlxuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWYudG9TdHJpbmcoZW5jKVxuICB9XG59XG4iLCIoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gVXRpbHNcbiAgZnVuY3Rpb24gYXNzZXJ0ICh2YWwsIG1zZykge1xuICAgIGlmICghdmFsKSB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG4gIH1cblxuICAvLyBDb3VsZCB1c2UgYGluaGVyaXRzYCBtb2R1bGUsIGJ1dCBkb24ndCB3YW50IHRvIG1vdmUgZnJvbSBzaW5nbGUgZmlsZVxuICAvLyBhcmNoaXRlY3R1cmUgeWV0LlxuICBmdW5jdGlvbiBpbmhlcml0cyAoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3I7XG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge307XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZTtcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpO1xuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvcjtcbiAgfVxuXG4gIC8vIEJOXG5cbiAgZnVuY3Rpb24gQk4gKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKEJOLmlzQk4obnVtYmVyKSkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB0aGlzLndvcmRzID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICAvLyBSZWR1Y3Rpb24gY29udGV4dFxuICAgIHRoaXMucmVkID0gbnVsbDtcblxuICAgIGlmIChudW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGlmIChiYXNlID09PSAnbGUnIHx8IGJhc2UgPT09ICdiZScpIHtcbiAgICAgICAgZW5kaWFuID0gYmFzZTtcbiAgICAgICAgYmFzZSA9IDEwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbml0KG51bWJlciB8fCAwLCBiYXNlIHx8IDEwLCBlbmRpYW4gfHwgJ2JlJyk7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gQk47XG4gIH0gZWxzZSB7XG4gICAgZXhwb3J0cy5CTiA9IEJOO1xuICB9XG5cbiAgQk4uQk4gPSBCTjtcbiAgQk4ud29yZFNpemUgPSAyNjtcblxuICB2YXIgQnVmZmVyO1xuICB0cnkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIEJ1ZmZlciA9IHdpbmRvdy5CdWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPCBudW1iZXIubGVuZ3RoKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gMTYpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VIZXgobnVtYmVyLCBzdGFydCwgZW5kaWFuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3BhcnNlQmFzZShudW1iZXIsIGJhc2UsIHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXROdW1iZXIgPSBmdW5jdGlvbiBfaW5pdE51bWJlciAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICBudW1iZXIgPSAtbnVtYmVyO1xuICAgIH1cbiAgICBpZiAobnVtYmVyIDwgMHg0MDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyBudW1iZXIgJiAweDNmZmZmZmYgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKG51bWJlciA8IDB4MTAwMDAwMDAwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmZcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChudW1iZXIgPCAweDIwMDAwMDAwMDAwMDAwKTsgLy8gMiBeIDUzICh1bnNhZmUpXG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmLFxuICAgICAgICAxXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAzO1xuICAgIH1cblxuICAgIGlmIChlbmRpYW4gIT09ICdsZScpIHJldHVybjtcblxuICAgIC8vIFJldmVyc2UgdGhlIGJ5dGVzXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdEFycmF5ID0gZnVuY3Rpb24gX2luaXRBcnJheSAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICAvLyBQZXJoYXBzIGEgVWludDhBcnJheVxuICAgIGFzc2VydCh0eXBlb2YgbnVtYmVyLmxlbmd0aCA9PT0gJ251bWJlcicpO1xuICAgIGlmIChudW1iZXIubGVuZ3RoIDw9IDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKG51bWJlci5sZW5ndGggLyAzKTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIHZhciBqLCB3O1xuICAgIHZhciBvZmYgPSAwO1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxLCBqID0gMDsgaSA+PSAwOyBpIC09IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSAtIDFdIDw8IDgpIHwgKG51bWJlcltpIC0gMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgKyAxXSA8PCA4KSB8IChudW1iZXJbaSArIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4NEJpdHMgKHN0cmluZywgaW5kZXgpIHtcbiAgICB2YXIgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAvLyAnQScgLSAnRidcbiAgICBpZiAoYyA+PSA2NSAmJiBjIDw9IDcwKSB7XG4gICAgICByZXR1cm4gYyAtIDU1O1xuICAgIC8vICdhJyAtICdmJ1xuICAgIH0gZWxzZSBpZiAoYyA+PSA5NyAmJiBjIDw9IDEwMikge1xuICAgICAgcmV0dXJuIGMgLSA4NztcbiAgICAvLyAnMCcgLSAnOSdcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChjIC0gNDgpICYgMHhmO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4Qnl0ZSAoc3RyaW5nLCBsb3dlckJvdW5kLCBpbmRleCkge1xuICAgIHZhciByID0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4KTtcbiAgICBpZiAoaW5kZXggLSAxID49IGxvd2VyQm91bmQpIHtcbiAgICAgIHIgfD0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4IC0gMSkgPDwgNDtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlSGV4ID0gZnVuY3Rpb24gX3BhcnNlSGV4IChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICAvLyAyNC1iaXRzIGNodW5rc1xuICAgIHZhciBvZmYgPSAwO1xuICAgIHZhciBqID0gMDtcblxuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyBpIC09IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFyc2VMZW5ndGggPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgICBmb3IgKGkgPSBwYXJzZUxlbmd0aCAlIDIgPT09IDAgPyBzdGFydCArIDEgOiBzdGFydDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlQmFzZSAoc3RyLCBzdGFydCwgZW5kLCBtdWwpIHtcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKHN0ci5sZW5ndGgsIGVuZCk7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBjID0gc3RyLmNoYXJDb2RlQXQoaSkgLSA0ODtcblxuICAgICAgciAqPSBtdWw7XG5cbiAgICAgIC8vICdhJ1xuICAgICAgaWYgKGMgPj0gNDkpIHtcbiAgICAgICAgciArPSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3KSB7XG4gICAgICAgIHIgKz0gYyAtIDE3ICsgMHhhO1xuXG4gICAgICAvLyAnMCcgLSAnOSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIgKz0gYztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlQmFzZSA9IGZ1bmN0aW9uIF9wYXJzZUJhc2UgKG51bWJlciwgYmFzZSwgc3RhcnQpIHtcbiAgICAvLyBJbml0aWFsaXplIGFzIHplcm9cbiAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuXG4gICAgLy8gRmluZCBsZW5ndGggb2YgbGltYiBpbiBiYXNlXG4gICAgZm9yICh2YXIgbGltYkxlbiA9IDAsIGxpbWJQb3cgPSAxOyBsaW1iUG93IDw9IDB4M2ZmZmZmZjsgbGltYlBvdyAqPSBiYXNlKSB7XG4gICAgICBsaW1iTGVuKys7XG4gICAgfVxuICAgIGxpbWJMZW4tLTtcbiAgICBsaW1iUG93ID0gKGxpbWJQb3cgLyBiYXNlKSB8IDA7XG5cbiAgICB2YXIgdG90YWwgPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgdmFyIG1vZCA9IHRvdGFsICUgbGltYkxlbjtcbiAgICB2YXIgZW5kID0gTWF0aC5taW4odG90YWwsIHRvdGFsIC0gbW9kKSArIHN0YXJ0O1xuXG4gICAgdmFyIHdvcmQgPSAwO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSBsaW1iTGVuKSB7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgaSArIGxpbWJMZW4sIGJhc2UpO1xuXG4gICAgICB0aGlzLmltdWxuKGxpbWJQb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2QgIT09IDApIHtcbiAgICAgIHZhciBwb3cgPSAxO1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIG51bWJlci5sZW5ndGgsIGJhc2UpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbW9kOyBpKyspIHtcbiAgICAgICAgcG93ICo9IGJhc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW11bG4ocG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5IChkZXN0KSB7XG4gICAgZGVzdC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXN0LndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICB9XG4gICAgZGVzdC5sZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICBkZXN0Lm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICBkZXN0LnJlZCA9IHRoaXMucmVkO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICB2YXIgciA9IG5ldyBCTihudWxsKTtcbiAgICB0aGlzLmNvcHkocik7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9leHBhbmQgPSBmdW5jdGlvbiBfZXhwYW5kIChzaXplKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgc2l6ZSkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFJlbW92ZSBsZWFkaW5nIGAwYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3RyaXAgPSBmdW5jdGlvbiBzdHJpcCAoKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoID4gMSAmJiB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fbm9ybVNpZ24gPSBmdW5jdGlvbiBfbm9ybVNpZ24gKCkge1xuICAgIC8vIC0wID0gMFxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICByZXR1cm4gKHRoaXMucmVkID8gJzxCTi1SOiAnIDogJzxCTjogJykgKyB0aGlzLnRvU3RyaW5nKDE2KSArICc+JztcbiAgfTtcblxuICAvKlxuXG4gIHZhciB6ZXJvcyA9IFtdO1xuICB2YXIgZ3JvdXBTaXplcyA9IFtdO1xuICB2YXIgZ3JvdXBCYXNlcyA9IFtdO1xuXG4gIHZhciBzID0gJyc7XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBCTi53b3JkU2l6ZSkge1xuICAgIHplcm9zW2ldID0gcztcbiAgICBzICs9ICcwJztcbiAgfVxuICBncm91cFNpemVzWzBdID0gMDtcbiAgZ3JvdXBTaXplc1sxXSA9IDA7XG4gIGdyb3VwQmFzZXNbMF0gPSAwO1xuICBncm91cEJhc2VzWzFdID0gMDtcbiAgdmFyIGJhc2UgPSAyIC0gMTtcbiAgd2hpbGUgKCsrYmFzZSA8IDM2ICsgMSkge1xuICAgIHZhciBncm91cFNpemUgPSAwO1xuICAgIHZhciBncm91cEJhc2UgPSAxO1xuICAgIHdoaWxlIChncm91cEJhc2UgPCAoMSA8PCBCTi53b3JkU2l6ZSkgLyBiYXNlKSB7XG4gICAgICBncm91cEJhc2UgKj0gYmFzZTtcbiAgICAgIGdyb3VwU2l6ZSArPSAxO1xuICAgIH1cbiAgICBncm91cFNpemVzW2Jhc2VdID0gZ3JvdXBTaXplO1xuICAgIGdyb3VwQmFzZXNbYmFzZV0gPSBncm91cEJhc2U7XG4gIH1cblxuICAqL1xuXG4gIHZhciB6ZXJvcyA9IFtcbiAgICAnJyxcbiAgICAnMCcsXG4gICAgJzAwJyxcbiAgICAnMDAwJyxcbiAgICAnMDAwMCcsXG4gICAgJzAwMDAwJyxcbiAgICAnMDAwMDAwJyxcbiAgICAnMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCdcbiAgXTtcblxuICB2YXIgZ3JvdXBTaXplcyA9IFtcbiAgICAwLCAwLFxuICAgIDI1LCAxNiwgMTIsIDExLCAxMCwgOSwgOCxcbiAgICA4LCA3LCA3LCA3LCA3LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1XG4gIF07XG5cbiAgdmFyIGdyb3VwQmFzZXMgPSBbXG4gICAgMCwgMCxcbiAgICAzMzU1NDQzMiwgNDMwNDY3MjEsIDE2Nzc3MjE2LCA0ODgyODEyNSwgNjA0NjYxNzYsIDQwMzUzNjA3LCAxNjc3NzIxNixcbiAgICA0MzA0NjcyMSwgMTAwMDAwMDAsIDE5NDg3MTcxLCAzNTgzMTgwOCwgNjI3NDg1MTcsIDc1Mjk1MzYsIDExMzkwNjI1LFxuICAgIDE2Nzc3MjE2LCAyNDEzNzU2OSwgMzQwMTIyMjQsIDQ3MDQ1ODgxLCA2NDAwMDAwMCwgNDA4NDEwMSwgNTE1MzYzMixcbiAgICA2NDM2MzQzLCA3OTYyNjI0LCA5NzY1NjI1LCAxMTg4MTM3NiwgMTQzNDg5MDcsIDE3MjEwMzY4LCAyMDUxMTE0OSxcbiAgICAyNDMwMDAwMCwgMjg2MjkxNTEsIDMzNTU0NDMyLCAzOTEzNTM5MywgNDU0MzU0MjQsIDUyNTIxODc1LCA2MDQ2NjE3NlxuICBdO1xuXG4gIEJOLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nIChiYXNlLCBwYWRkaW5nKSB7XG4gICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgcGFkZGluZyA9IHBhZGRpbmcgfCAwIHx8IDE7XG5cbiAgICB2YXIgb3V0O1xuICAgIGlmIChiYXNlID09PSAxNiB8fCBiYXNlID09PSAnaGV4Jykge1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgb2ZmID0gMDtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldO1xuICAgICAgICB2YXIgd29yZCA9ICgoKHcgPDwgb2ZmKSB8IGNhcnJ5KSAmIDB4ZmZmZmZmKS50b1N0cmluZygxNik7XG4gICAgICAgIGNhcnJ5ID0gKHcgPj4+ICgyNCAtIG9mZikpICYgMHhmZmZmZmY7XG4gICAgICAgIGlmIChjYXJyeSAhPT0gMCB8fCBpICE9PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1s2IC0gd29yZC5sZW5ndGhdICsgd29yZCArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSB3b3JkICsgb3V0O1xuICAgICAgICB9XG4gICAgICAgIG9mZiArPSAyO1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICAgIG91dCA9IGNhcnJ5LnRvU3RyaW5nKDE2KSArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KSB7XG4gICAgICAvLyB2YXIgZ3JvdXBTaXplID0gTWF0aC5mbG9vcihCTi53b3JkU2l6ZSAqIE1hdGguTE4yIC8gTWF0aC5sb2coYmFzZSkpO1xuICAgICAgdmFyIGdyb3VwU2l6ZSA9IGdyb3VwU2l6ZXNbYmFzZV07XG4gICAgICAvLyB2YXIgZ3JvdXBCYXNlID0gTWF0aC5wb3coYmFzZSwgZ3JvdXBTaXplKTtcbiAgICAgIHZhciBncm91cEJhc2UgPSBncm91cEJhc2VzW2Jhc2VdO1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgYyA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGMubmVnYXRpdmUgPSAwO1xuICAgICAgd2hpbGUgKCFjLmlzWmVybygpKSB7XG4gICAgICAgIHZhciByID0gYy5tb2RuKGdyb3VwQmFzZSkudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIGMgPSBjLmlkaXZuKGdyb3VwQmFzZSk7XG5cbiAgICAgICAgaWYgKCFjLmlzWmVybygpKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbZ3JvdXBTaXplIC0gci5sZW5ndGhdICsgciArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSByICsgb3V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBhc3NlcnQoZmFsc2UsICdCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Jyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvTnVtYmVyID0gZnVuY3Rpb24gdG9OdW1iZXIgKCkge1xuICAgIHZhciByZXQgPSB0aGlzLndvcmRzWzBdO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0ICs9IHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA9PT0gMyAmJiB0aGlzLndvcmRzWzJdID09PSAweDAxKSB7XG4gICAgICAvLyBOT1RFOiBhdCB0aGlzIHN0YWdlIGl0IGlzIGtub3duIHRoYXQgdGhlIHRvcCBiaXQgaXMgc2V0XG4gICAgICByZXQgKz0gMHgxMDAwMDAwMDAwMDAwMCArICh0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gMikge1xuICAgICAgYXNzZXJ0KGZhbHNlLCAnTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzJyk7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgPyAtcmV0IDogcmV0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKDE2KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9CdWZmZXIgPSBmdW5jdGlvbiB0b0J1ZmZlciAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpO1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEJ1ZmZlciwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gdG9BcnJheSAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5TGlrZSA9IGZ1bmN0aW9uIHRvQXJyYXlMaWtlIChBcnJheVR5cGUsIGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgdmFyIGJ5dGVMZW5ndGggPSB0aGlzLmJ5dGVMZW5ndGgoKTtcbiAgICB2YXIgcmVxTGVuZ3RoID0gbGVuZ3RoIHx8IE1hdGgubWF4KDEsIGJ5dGVMZW5ndGgpO1xuICAgIGFzc2VydChieXRlTGVuZ3RoIDw9IHJlcUxlbmd0aCwgJ2J5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgnKTtcbiAgICBhc3NlcnQocmVxTGVuZ3RoID4gMCwgJ1JlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCcpO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuICAgIHZhciBsaXR0bGVFbmRpYW4gPSBlbmRpYW4gPT09ICdsZSc7XG4gICAgdmFyIHJlcyA9IG5ldyBBcnJheVR5cGUocmVxTGVuZ3RoKTtcblxuICAgIHZhciBiLCBpO1xuICAgIHZhciBxID0gdGhpcy5jbG9uZSgpO1xuICAgIGlmICghbGl0dGxlRW5kaWFuKSB7XG4gICAgICAvLyBBc3N1bWUgYmlnLWVuZGlhblxuICAgICAgZm9yIChpID0gMDsgaSA8IHJlcUxlbmd0aCAtIGJ5dGVMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbcmVxTGVuZ3RoIC0gaSAtIDFdID0gYjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW2ldID0gYjtcbiAgICAgIH1cblxuICAgICAgZm9yICg7IGkgPCByZXFMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgaWYgKE1hdGguY2x6MzIpIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHJldHVybiAzMiAtIE1hdGguY2x6MzIodyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHZhciB0ID0gdztcbiAgICAgIHZhciByID0gMDtcbiAgICAgIGlmICh0ID49IDB4MTAwMCkge1xuICAgICAgICByICs9IDEzO1xuICAgICAgICB0ID4+Pj0gMTM7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDQwKSB7XG4gICAgICAgIHIgKz0gNztcbiAgICAgICAgdCA+Pj49IDc7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDgpIHtcbiAgICAgICAgciArPSA0O1xuICAgICAgICB0ID4+Pj0gNDtcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4MDIpIHtcbiAgICAgICAgciArPSAyO1xuICAgICAgICB0ID4+Pj0gMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByICsgdDtcbiAgICB9O1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl96ZXJvQml0cyA9IGZ1bmN0aW9uIF96ZXJvQml0cyAodykge1xuICAgIC8vIFNob3J0LWN1dFxuICAgIGlmICh3ID09PSAwKSByZXR1cm4gMjY7XG5cbiAgICB2YXIgdCA9IHc7XG4gICAgdmFyIHIgPSAwO1xuICAgIGlmICgodCAmIDB4MWZmZikgPT09IDApIHtcbiAgICAgIHIgKz0gMTM7XG4gICAgICB0ID4+Pj0gMTM7XG4gICAgfVxuICAgIGlmICgodCAmIDB4N2YpID09PSAwKSB7XG4gICAgICByICs9IDc7XG4gICAgICB0ID4+Pj0gNztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHhmKSA9PT0gMCkge1xuICAgICAgciArPSA0O1xuICAgICAgdCA+Pj49IDQ7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MykgPT09IDApIHtcbiAgICAgIHIgKz0gMjtcbiAgICAgIHQgPj4+PSAyO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDEpID09PSAwKSB7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIC8vIFJldHVybiBudW1iZXIgb2YgdXNlZCBiaXRzIGluIGEgQk5cbiAgQk4ucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uIGJpdExlbmd0aCAoKSB7XG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV07XG4gICAgdmFyIGhpID0gdGhpcy5fY291bnRCaXRzKHcpO1xuICAgIHJldHVybiAodGhpcy5sZW5ndGggLSAxKSAqIDI2ICsgaGk7XG4gIH07XG5cbiAgZnVuY3Rpb24gdG9CaXRBcnJheSAobnVtKSB7XG4gICAgdmFyIHcgPSBuZXcgQXJyYXkobnVtLmJpdExlbmd0aCgpKTtcblxuICAgIGZvciAodmFyIGJpdCA9IDA7IGJpdCA8IHcubGVuZ3RoOyBiaXQrKykge1xuICAgICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgICAgd1tiaXRdID0gKG51bS53b3Jkc1tvZmZdICYgKDEgPDwgd2JpdCkpID4+PiB3Yml0O1xuICAgIH1cblxuICAgIHJldHVybiB3O1xuICB9XG5cbiAgLy8gTnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0c1xuICBCTi5wcm90b3R5cGUuemVyb0JpdHMgPSBmdW5jdGlvbiB6ZXJvQml0cyAoKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiAwO1xuXG4gICAgdmFyIHIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGIgPSB0aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2ldKTtcbiAgICAgIHIgKz0gYjtcbiAgICAgIGlmIChiICE9PSAyNikgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ieXRlTGVuZ3RoID0gZnVuY3Rpb24gYnl0ZUxlbmd0aCAoKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpIC8gOCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvVHdvcyA9IGZ1bmN0aW9uIHRvVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWJzKCkuaW5vdG4od2lkdGgpLmlhZGRuKDEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tVHdvcyA9IGZ1bmN0aW9uIGZyb21Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLnRlc3RuKHdpZHRoIC0gMSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdG4od2lkdGgpLmlhZGRuKDEpLmluZWcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiBpc05lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmUgIT09IDA7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5lZyA9IGZ1bmN0aW9uIGluZWcgKCkge1xuICAgIGlmICghdGhpcy5pc1plcm8oKSkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdW9yID0gZnVuY3Rpb24gaXVvciAobnVtKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldIHwgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlvciA9IGZ1bmN0aW9uIGlvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVvcihudW0pO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pb3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVvciA9IGZ1bmN0aW9uIHVvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdWFuZCA9IGZ1bmN0aW9uIGl1YW5kIChudW0pIHtcbiAgICAvLyBiID0gbWluLWxlbmd0aChudW0sIHRoaXMpXG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSAmIG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGIubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFuZCA9IGZ1bmN0aW9uIGlhbmQgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1YW5kKG51bSk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiBhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYW5kKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51YW5kID0gZnVuY3Rpb24gdWFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdWFuZCh0aGlzKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1eG9yID0gZnVuY3Rpb24gaXV4b3IgKG51bSkge1xuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYTtcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldIF4gYi53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcyAhPT0gYSkge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5peG9yID0gZnVuY3Rpb24gaXhvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXV4b3IobnVtKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIHhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5peG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml4b3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnV4b3IgPSBmdW5jdGlvbiB1eG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1eG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1eG9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIE5vdCBgYHRoaXNgYCB3aXRoIGBgd2lkdGhgYCBiaXR3aWR0aFxuICBCTi5wcm90b3R5cGUuaW5vdG4gPSBmdW5jdGlvbiBpbm90biAod2lkdGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyAmJiB3aWR0aCA+PSAwKTtcblxuICAgIHZhciBieXRlc05lZWRlZCA9IE1hdGguY2VpbCh3aWR0aCAvIDI2KSB8IDA7XG4gICAgdmFyIGJpdHNMZWZ0ID0gd2lkdGggJSAyNjtcblxuICAgIC8vIEV4dGVuZCB0aGUgYnVmZmVyIHdpdGggbGVhZGluZyB6ZXJvZXNcbiAgICB0aGlzLl9leHBhbmQoYnl0ZXNOZWVkZWQpO1xuXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgYnl0ZXNOZWVkZWQtLTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgY29tcGxldGUgd29yZHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzTmVlZGVkOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIHJlc2lkdWVcbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAoMHgzZmZmZmZmID4+ICgyNiAtIGJpdHNMZWZ0KSk7XG4gICAgfVxuXG4gICAgLy8gQW5kIHJlbW92ZSBsZWFkaW5nIHplcm9lc1xuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm5vdG4gPSBmdW5jdGlvbiBub3RuICh3aWR0aCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5vdG4od2lkdGgpO1xuICB9O1xuXG4gIC8vIFNldCBgYml0YCBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNldG4gPSBmdW5jdGlvbiBzZXRuIChiaXQsIHZhbCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG5cbiAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgIHRoaXMuX2V4cGFuZChvZmYgKyAxKTtcblxuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSB8ICgxIDw8IHdiaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gJiB+KDEgPDwgd2JpdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAobnVtKSB7XG4gICAgdmFyIHI7XG5cbiAgICAvLyBuZWdhdGl2ZSArIHBvc2l0aXZlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gcG9zaXRpdmUgKyBuZWdhdGl2ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhLCBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAvLyBDb3B5IHRoZSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIH0gZWxzZSBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAobnVtKSB7XG4gICAgdmFyIHJlcztcbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwICYmIHRoaXMubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSB0aGlzLnN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSBpZiAobnVtLm5lZ2F0aXZlID09PSAwICYmIHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gbnVtLnN1Yih0aGlzKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGQobnVtKTtcblxuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYWRkKHRoaXMpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAobnVtKSB7XG4gICAgLy8gdGhpcyAtICgtbnVtKSA9IHRoaXMgKyBudW1cbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgdmFyIHIgPSB0aGlzLmlhZGQobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcblxuICAgIC8vIC10aGlzIC0gbnVtID0gLSh0aGlzICsgbnVtKVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGQobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlXG4gICAgdmFyIGNtcCA9IHRoaXMuY21wKG51bSk7XG5cbiAgICAvLyBPcHRpbWl6YXRpb24gLSB6ZXJvaWZ5XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIGEgPiBiXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGNtcCA+IDApIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSAtIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBDb3B5IHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgaWYgKGNhcnJ5ID09PSAwICYmIGkgPCBhLmxlbmd0aCAmJiBhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSk7XG5cbiAgICBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBzbWFsbE11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgdmFyIGxlbiA9IChzZWxmLmxlbmd0aCArIG51bS5sZW5ndGgpIHwgMDtcbiAgICBvdXQubGVuZ3RoID0gbGVuO1xuICAgIGxlbiA9IChsZW4gLSAxKSB8IDA7XG5cbiAgICAvLyBQZWVsIG9uZSBpdGVyYXRpb24gKGNvbXBpbGVyIGNhbid0IGRvIGl0LCBiZWNhdXNlIG9mIGNvZGUgY29tcGxleGl0eSlcbiAgICB2YXIgYSA9IHNlbGYud29yZHNbMF0gfCAwO1xuICAgIHZhciBiID0gbnVtLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICB2YXIgY2FycnkgPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgIG91dC53b3Jkc1swXSA9IGxvO1xuXG4gICAgZm9yICh2YXIgayA9IDE7IGsgPCBsZW47IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBjYXJyeSA+Pj4gMjY7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IChrIC0gaikgfCAwO1xuICAgICAgICBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICByID0gYSAqIGIgKyByd29yZDtcbiAgICAgICAgbmNhcnJ5ICs9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkIHwgMDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5IHwgMDtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeSB8IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICAvLyBUT0RPKGluZHV0bnkpOiBpdCBtYXkgYmUgcmVhc29uYWJsZSB0byBvbWl0IGl0IGZvciB1c2VycyB3aG8gZG9uJ3QgbmVlZFxuICAvLyB0byB3b3JrIHdpdGggMjU2LWJpdCBudW1iZXJzLCBvdGhlcndpc2UgaXQgZ2l2ZXMgMjAlIGltcHJvdmVtZW50IGZvciAyNTYtYml0XG4gIC8vIG11bHRpcGxpY2F0aW9uIChsaWtlIGVsbGlwdGljIHNlY3AyNTZrMSkuXG4gIHZhciBjb21iMTBNdWxUbyA9IGZ1bmN0aW9uIGNvbWIxME11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBhID0gc2VsZi53b3JkcztcbiAgICB2YXIgYiA9IG51bS53b3JkcztcbiAgICB2YXIgbyA9IG91dC53b3JkcztcbiAgICB2YXIgYyA9IDA7XG4gICAgdmFyIGxvO1xuICAgIHZhciBtaWQ7XG4gICAgdmFyIGhpO1xuICAgIHZhciBhMCA9IGFbMF0gfCAwO1xuICAgIHZhciBhbDAgPSBhMCAmIDB4MWZmZjtcbiAgICB2YXIgYWgwID0gYTAgPj4+IDEzO1xuICAgIHZhciBhMSA9IGFbMV0gfCAwO1xuICAgIHZhciBhbDEgPSBhMSAmIDB4MWZmZjtcbiAgICB2YXIgYWgxID0gYTEgPj4+IDEzO1xuICAgIHZhciBhMiA9IGFbMl0gfCAwO1xuICAgIHZhciBhbDIgPSBhMiAmIDB4MWZmZjtcbiAgICB2YXIgYWgyID0gYTIgPj4+IDEzO1xuICAgIHZhciBhMyA9IGFbM10gfCAwO1xuICAgIHZhciBhbDMgPSBhMyAmIDB4MWZmZjtcbiAgICB2YXIgYWgzID0gYTMgPj4+IDEzO1xuICAgIHZhciBhNCA9IGFbNF0gfCAwO1xuICAgIHZhciBhbDQgPSBhNCAmIDB4MWZmZjtcbiAgICB2YXIgYWg0ID0gYTQgPj4+IDEzO1xuICAgIHZhciBhNSA9IGFbNV0gfCAwO1xuICAgIHZhciBhbDUgPSBhNSAmIDB4MWZmZjtcbiAgICB2YXIgYWg1ID0gYTUgPj4+IDEzO1xuICAgIHZhciBhNiA9IGFbNl0gfCAwO1xuICAgIHZhciBhbDYgPSBhNiAmIDB4MWZmZjtcbiAgICB2YXIgYWg2ID0gYTYgPj4+IDEzO1xuICAgIHZhciBhNyA9IGFbN10gfCAwO1xuICAgIHZhciBhbDcgPSBhNyAmIDB4MWZmZjtcbiAgICB2YXIgYWg3ID0gYTcgPj4+IDEzO1xuICAgIHZhciBhOCA9IGFbOF0gfCAwO1xuICAgIHZhciBhbDggPSBhOCAmIDB4MWZmZjtcbiAgICB2YXIgYWg4ID0gYTggPj4+IDEzO1xuICAgIHZhciBhOSA9IGFbOV0gfCAwO1xuICAgIHZhciBhbDkgPSBhOSAmIDB4MWZmZjtcbiAgICB2YXIgYWg5ID0gYTkgPj4+IDEzO1xuICAgIHZhciBiMCA9IGJbMF0gfCAwO1xuICAgIHZhciBibDAgPSBiMCAmIDB4MWZmZjtcbiAgICB2YXIgYmgwID0gYjAgPj4+IDEzO1xuICAgIHZhciBiMSA9IGJbMV0gfCAwO1xuICAgIHZhciBibDEgPSBiMSAmIDB4MWZmZjtcbiAgICB2YXIgYmgxID0gYjEgPj4+IDEzO1xuICAgIHZhciBiMiA9IGJbMl0gfCAwO1xuICAgIHZhciBibDIgPSBiMiAmIDB4MWZmZjtcbiAgICB2YXIgYmgyID0gYjIgPj4+IDEzO1xuICAgIHZhciBiMyA9IGJbM10gfCAwO1xuICAgIHZhciBibDMgPSBiMyAmIDB4MWZmZjtcbiAgICB2YXIgYmgzID0gYjMgPj4+IDEzO1xuICAgIHZhciBiNCA9IGJbNF0gfCAwO1xuICAgIHZhciBibDQgPSBiNCAmIDB4MWZmZjtcbiAgICB2YXIgYmg0ID0gYjQgPj4+IDEzO1xuICAgIHZhciBiNSA9IGJbNV0gfCAwO1xuICAgIHZhciBibDUgPSBiNSAmIDB4MWZmZjtcbiAgICB2YXIgYmg1ID0gYjUgPj4+IDEzO1xuICAgIHZhciBiNiA9IGJbNl0gfCAwO1xuICAgIHZhciBibDYgPSBiNiAmIDB4MWZmZjtcbiAgICB2YXIgYmg2ID0gYjYgPj4+IDEzO1xuICAgIHZhciBiNyA9IGJbN10gfCAwO1xuICAgIHZhciBibDcgPSBiNyAmIDB4MWZmZjtcbiAgICB2YXIgYmg3ID0gYjcgPj4+IDEzO1xuICAgIHZhciBiOCA9IGJbOF0gfCAwO1xuICAgIHZhciBibDggPSBiOCAmIDB4MWZmZjtcbiAgICB2YXIgYmg4ID0gYjggPj4+IDEzO1xuICAgIHZhciBiOSA9IGJbOV0gfCAwO1xuICAgIHZhciBibDkgPSBiOSAmIDB4MWZmZjtcbiAgICB2YXIgYmg5ID0gYjkgPj4+IDEzO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0gc2VsZi5uZWdhdGl2ZSBeIG51bS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gMTk7XG4gICAgLyogayA9IDAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDAsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMCwgYmgwKTtcbiAgICB2YXIgdzAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcwID4+PiAyNikpIHwgMDtcbiAgICB3MCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDEsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDEpKSB8IDA7XG4gICAgdmFyIHcxID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MSA+Pj4gMjYpKSB8IDA7XG4gICAgdzEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwyLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDIsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDIsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMikpIHwgMDtcbiAgICB2YXIgdzIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcyID4+PiAyNikpIHwgMDtcbiAgICB3MiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDMsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMykpIHwgMDtcbiAgICB2YXIgdzMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHczID4+PiAyNikpIHwgMDtcbiAgICB3MyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDQsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDQpKSB8IDA7XG4gICAgdmFyIHc0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NCA+Pj4gMjYpKSB8IDA7XG4gICAgdzQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw1LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDUsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDUsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNSkpIHwgMDtcbiAgICB2YXIgdzUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc1ID4+PiAyNikpIHwgMDtcbiAgICB3NSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDYsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNikpIHwgMDtcbiAgICB2YXIgdzYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc2ID4+PiAyNikpIHwgMDtcbiAgICB3NiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDcsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDcpKSB8IDA7XG4gICAgdmFyIHc3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NyA+Pj4gMjYpKSB8IDA7XG4gICAgdzcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw4LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDgsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDgsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOCkpIHwgMDtcbiAgICB2YXIgdzggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc4ID4+PiAyNikpIHwgMDtcbiAgICB3OCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDkgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzkgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc5ID4+PiAyNikpIHwgMDtcbiAgICB3OSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDEpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTAgPj4+IDI2KSkgfCAwO1xuICAgIHcxMCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDExICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDIpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMSA+Pj4gMjYpKSB8IDA7XG4gICAgdzExICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgzKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwzKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgzKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTIgPj4+IDI2KSkgfCAwO1xuICAgIHcxMiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDQpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEzID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTMgPj4+IDI2KSkgfCAwO1xuICAgIHcxMyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDUpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg2KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw2KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg2KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTUgPj4+IDI2KSkgfCAwO1xuICAgIHcxNSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDcpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTYgPj4+IDI2KSkgfCAwO1xuICAgIHcxNiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDgpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNyA+Pj4gMjYpKSB8IDA7XG4gICAgdzE3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg5KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw5KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg5KTtcbiAgICB2YXIgdzE4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTggPj4+IDI2KSkgfCAwO1xuICAgIHcxOCAmPSAweDNmZmZmZmY7XG4gICAgb1swXSA9IHcwO1xuICAgIG9bMV0gPSB3MTtcbiAgICBvWzJdID0gdzI7XG4gICAgb1szXSA9IHczO1xuICAgIG9bNF0gPSB3NDtcbiAgICBvWzVdID0gdzU7XG4gICAgb1s2XSA9IHc2O1xuICAgIG9bN10gPSB3NztcbiAgICBvWzhdID0gdzg7XG4gICAgb1s5XSA9IHc5O1xuICAgIG9bMTBdID0gdzEwO1xuICAgIG9bMTFdID0gdzExO1xuICAgIG9bMTJdID0gdzEyO1xuICAgIG9bMTNdID0gdzEzO1xuICAgIG9bMTRdID0gdzE0O1xuICAgIG9bMTVdID0gdzE1O1xuICAgIG9bMTZdID0gdzE2O1xuICAgIG9bMTddID0gdzE3O1xuICAgIG9bMThdID0gdzE4O1xuICAgIGlmIChjICE9PSAwKSB7XG4gICAgICBvWzE5XSA9IGM7XG4gICAgICBvdXQubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH07XG5cbiAgLy8gUG9seWZpbGwgY29tYlxuICBpZiAoIU1hdGguaW11bCkge1xuICAgIGNvbWIxME11bFRvID0gc21hbGxNdWxUbztcbiAgfVxuXG4gIGZ1bmN0aW9uIGJpZ011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aDtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgdmFyIGhuY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb3V0Lmxlbmd0aCAtIDE7IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBobmNhcnJ5O1xuICAgICAgaG5jYXJyeSA9IDA7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IGsgLSBqO1xuICAgICAgICB2YXIgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICB2YXIgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHZhciByID0gYSAqIGI7XG5cbiAgICAgICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArICgociAvIDB4NDAwMDAwMCkgfCAwKSkgfCAwO1xuICAgICAgICBsbyA9IChsbyArIHJ3b3JkKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAobG8gPj4+IDI2KSkgfCAwO1xuXG4gICAgICAgIGhuY2FycnkgKz0gbmNhcnJ5ID4+PiAyNjtcbiAgICAgICAgbmNhcnJ5ICY9IDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkO1xuICAgICAgY2FycnkgPSBuY2Fycnk7XG4gICAgICBuY2FycnkgPSBobmNhcnJ5O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgZnVuY3Rpb24ganVtYm9NdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgZmZ0bSA9IG5ldyBGRlRNKCk7XG4gICAgcmV0dXJuIGZmdG0ubXVscChzZWxmLCBudW0sIG91dCk7XG4gIH1cblxuICBCTi5wcm90b3R5cGUubXVsVG8gPSBmdW5jdGlvbiBtdWxUbyAobnVtLCBvdXQpIHtcbiAgICB2YXIgcmVzO1xuICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCArIG51bS5sZW5ndGg7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxMCAmJiBudW0ubGVuZ3RoID09PSAxMCkge1xuICAgICAgcmVzID0gY29tYjEwTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgNjMpIHtcbiAgICAgIHJlcyA9IHNtYWxsTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgMTAyNCkge1xuICAgICAgcmVzID0gYmlnTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvb2xleS1UdWtleSBhbGdvcml0aG0gZm9yIEZGVFxuICAvLyBzbGlnaHRseSByZXZpc2l0ZWQgdG8gcmVseSBvbiBsb29waW5nIGluc3RlYWQgb2YgcmVjdXJzaW9uXG5cbiAgZnVuY3Rpb24gRkZUTSAoeCwgeSkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIEZGVE0ucHJvdG90eXBlLm1ha2VSQlQgPSBmdW5jdGlvbiBtYWtlUkJUIChOKSB7XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGwgPSBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyhOKSAtIDE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHRbaV0gPSB0aGlzLnJldkJpbihpLCBsLCBOKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGJpbmFyeS1yZXZlcnNlZCByZXByZXNlbnRhdGlvbiBvZiBgeGBcbiAgRkZUTS5wcm90b3R5cGUucmV2QmluID0gZnVuY3Rpb24gcmV2QmluICh4LCBsLCBOKSB7XG4gICAgaWYgKHggPT09IDAgfHwgeCA9PT0gTiAtIDEpIHJldHVybiB4O1xuXG4gICAgdmFyIHJiID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgcmIgfD0gKHggJiAxKSA8PCAobCAtIGkgLSAxKTtcbiAgICAgIHggPj49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJiO1xuICB9O1xuXG4gIC8vIFBlcmZvcm1zIFwidHdlZWRsaW5nXCIgcGhhc2UsIHRoZXJlZm9yZSAnZW11bGF0aW5nJ1xuICAvLyBiZWhhdmlvdXIgb2YgdGhlIHJlY3Vyc2l2ZSBhbGdvcml0aG1cbiAgRkZUTS5wcm90b3R5cGUucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUgKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcnR3c1tpXSA9IHJ3c1tyYnRbaV1dO1xuICAgICAgaXR3c1tpXSA9IGl3c1tyYnRbaV1dO1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiB0cmFuc2Zvcm0gKHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOLCByYnQpIHtcbiAgICB0aGlzLnBlcm11dGUocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTik7XG5cbiAgICBmb3IgKHZhciBzID0gMTsgcyA8IE47IHMgPDw9IDEpIHtcbiAgICAgIHZhciBsID0gcyA8PCAxO1xuXG4gICAgICB2YXIgcnR3ZGYgPSBNYXRoLmNvcygyICogTWF0aC5QSSAvIGwpO1xuICAgICAgdmFyIGl0d2RmID0gTWF0aC5zaW4oMiAqIE1hdGguUEkgLyBsKTtcblxuICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBOOyBwICs9IGwpIHtcbiAgICAgICAgdmFyIHJ0d2RmXyA9IHJ0d2RmO1xuICAgICAgICB2YXIgaXR3ZGZfID0gaXR3ZGY7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzOyBqKyspIHtcbiAgICAgICAgICB2YXIgcmUgPSBydHdzW3AgKyBqXTtcbiAgICAgICAgICB2YXIgaWUgPSBpdHdzW3AgKyBqXTtcblxuICAgICAgICAgIHZhciBybyA9IHJ0d3NbcCArIGogKyBzXTtcbiAgICAgICAgICB2YXIgaW8gPSBpdHdzW3AgKyBqICsgc107XG5cbiAgICAgICAgICB2YXIgcnggPSBydHdkZl8gKiBybyAtIGl0d2RmXyAqIGlvO1xuXG4gICAgICAgICAgaW8gPSBydHdkZl8gKiBpbyArIGl0d2RmXyAqIHJvO1xuICAgICAgICAgIHJvID0gcng7XG5cbiAgICAgICAgICBydHdzW3AgKyBqXSA9IHJlICsgcm87XG4gICAgICAgICAgaXR3c1twICsgal0gPSBpZSArIGlvO1xuXG4gICAgICAgICAgcnR3c1twICsgaiArIHNdID0gcmUgLSBybztcbiAgICAgICAgICBpdHdzW3AgKyBqICsgc10gPSBpZSAtIGlvO1xuXG4gICAgICAgICAgLyoganNoaW50IG1heGRlcHRoIDogZmFsc2UgKi9cbiAgICAgICAgICBpZiAoaiAhPT0gbCkge1xuICAgICAgICAgICAgcnggPSBydHdkZiAqIHJ0d2RmXyAtIGl0d2RmICogaXR3ZGZfO1xuXG4gICAgICAgICAgICBpdHdkZl8gPSBydHdkZiAqIGl0d2RmXyArIGl0d2RmICogcnR3ZGZfO1xuICAgICAgICAgICAgcnR3ZGZfID0gcng7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmd1ZXNzTGVuMTNiID0gZnVuY3Rpb24gZ3Vlc3NMZW4xM2IgKG4sIG0pIHtcbiAgICB2YXIgTiA9IE1hdGgubWF4KG0sIG4pIHwgMTtcbiAgICB2YXIgb2RkID0gTiAmIDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoTiA9IE4gLyAyIHwgMDsgTjsgTiA9IE4gPj4+IDEpIHtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICByZXR1cm4gMSA8PCBpICsgMSArIG9kZDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb25qdWdhdGUgPSBmdW5jdGlvbiBjb25qdWdhdGUgKHJ3cywgaXdzLCBOKSB7XG4gICAgaWYgKE4gPD0gMSkgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdCA9IHJ3c1tpXTtcblxuICAgICAgcndzW2ldID0gcndzW04gLSBpIC0gMV07XG4gICAgICByd3NbTiAtIGkgLSAxXSA9IHQ7XG5cbiAgICAgIHQgPSBpd3NbaV07XG5cbiAgICAgIGl3c1tpXSA9IC1pd3NbTiAtIGkgLSAxXTtcbiAgICAgIGl3c1tOIC0gaSAtIDFdID0gLXQ7XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm5vcm1hbGl6ZTEzYiA9IGZ1bmN0aW9uIG5vcm1hbGl6ZTEzYiAod3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHcgPSBNYXRoLnJvdW5kKHdzWzIgKiBpICsgMV0gLyBOKSAqIDB4MjAwMCArXG4gICAgICAgIE1hdGgucm91bmQod3NbMiAqIGldIC8gTikgK1xuICAgICAgICBjYXJyeTtcblxuICAgICAgd3NbaV0gPSB3ICYgMHgzZmZmZmZmO1xuXG4gICAgICBpZiAodyA8IDB4NDAwMDAwMCkge1xuICAgICAgICBjYXJyeSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJyeSA9IHcgLyAweDQwMDAwMDAgfCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB3cztcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb252ZXJ0MTNiID0gZnVuY3Rpb24gY29udmVydDEzYiAod3MsIGxlbiwgcndzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjYXJyeSA9IGNhcnJ5ICsgKHdzW2ldIHwgMCk7XG5cbiAgICAgIHJ3c1syICogaV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgICByd3NbMiAqIGkgKyAxXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICB9XG5cbiAgICAvLyBQYWQgd2l0aCB6ZXJvZXNcbiAgICBmb3IgKGkgPSAyICogbGVuOyBpIDwgTjsgKytpKSB7XG4gICAgICByd3NbaV0gPSAwO1xuICAgIH1cblxuICAgIGFzc2VydChjYXJyeSA9PT0gMCk7XG4gICAgYXNzZXJ0KChjYXJyeSAmIH4weDFmZmYpID09PSAwKTtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5zdHViID0gZnVuY3Rpb24gc3R1YiAoTikge1xuICAgIHZhciBwaCA9IG5ldyBBcnJheShOKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcGhbaV0gPSAwO1xuICAgIH1cblxuICAgIHJldHVybiBwaDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5tdWxwID0gZnVuY3Rpb24gbXVscCAoeCwgeSwgb3V0KSB7XG4gICAgdmFyIE4gPSAyICogdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCwgeS5sZW5ndGgpO1xuXG4gICAgdmFyIHJidCA9IHRoaXMubWFrZVJCVChOKTtcblxuICAgIHZhciBfID0gdGhpcy5zdHViKE4pO1xuXG4gICAgdmFyIHJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgcndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBucndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBucndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbml3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgcm13cyA9IG91dC53b3JkcztcbiAgICBybXdzLmxlbmd0aCA9IE47XG5cbiAgICB0aGlzLmNvbnZlcnQxM2IoeC53b3JkcywgeC5sZW5ndGgsIHJ3cywgTik7XG4gICAgdGhpcy5jb252ZXJ0MTNiKHkud29yZHMsIHkubGVuZ3RoLCBucndzLCBOKTtcblxuICAgIHRoaXMudHJhbnNmb3JtKHJ3cywgXywgcndzdCwgaXdzdCwgTiwgcmJ0KTtcbiAgICB0aGlzLnRyYW5zZm9ybShucndzLCBfLCBucndzdCwgbml3c3QsIE4sIHJidCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdmFyIHJ4ID0gcndzdFtpXSAqIG5yd3N0W2ldIC0gaXdzdFtpXSAqIG5pd3N0W2ldO1xuICAgICAgaXdzdFtpXSA9IHJ3c3RbaV0gKiBuaXdzdFtpXSArIGl3c3RbaV0gKiBucndzdFtpXTtcbiAgICAgIHJ3c3RbaV0gPSByeDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmp1Z2F0ZShyd3N0LCBpd3N0LCBOKTtcbiAgICB0aGlzLnRyYW5zZm9ybShyd3N0LCBpd3N0LCBybXdzLCBfLCBOLCByYnQpO1xuICAgIHRoaXMuY29uanVnYXRlKHJtd3MsIF8sIE4pO1xuICAgIHRoaXMubm9ybWFsaXplMTNiKHJtd3MsIE4pO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0geC5uZWdhdGl2ZSBeIHkubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHgubGVuZ3RoICsgeS5sZW5ndGg7XG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGB0aGlzYCBieSBgbnVtYFxuICBCTi5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiB0aGlzLm11bFRvKG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBlbXBsb3lpbmcgRkZUXG4gIEJOLnByb3RvdHlwZS5tdWxmID0gZnVuY3Rpb24gbXVsZiAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgTXVsdGlwbGljYXRpb25cbiAgQk4ucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKG51bSwgdGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmltdWxuID0gZnVuY3Rpb24gaW11bG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG5cbiAgICAvLyBDYXJyeVxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKiBudW07XG4gICAgICB2YXIgbG8gPSAodyAmIDB4M2ZmZmZmZikgKyAoY2FycnkgJiAweDNmZmZmZmYpO1xuICAgICAgY2FycnkgPj49IDI2O1xuICAgICAgY2FycnkgKz0gKHcgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgIC8vIE5PVEU6IGxvIGlzIDI3Yml0IG1heGltdW1cbiAgICAgIGNhcnJ5ICs9IGxvID4+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm11bG4gPSBmdW5jdGlvbiBtdWxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKG51bSk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLm11bCh0aGlzKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSk7XG4gIH07XG5cbiAgLy8gTWF0aC5wb3coYHRoaXNgLCBgbnVtYClcbiAgQk4ucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAobnVtKSB7XG4gICAgdmFyIHcgPSB0b0JpdEFycmF5KG51bSk7XG4gICAgaWYgKHcubGVuZ3RoID09PSAwKSByZXR1cm4gbmV3IEJOKDEpO1xuXG4gICAgLy8gU2tpcCBsZWFkaW5nIHplcm9lc1xuICAgIHZhciByZXMgPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdy5sZW5ndGg7IGkrKywgcmVzID0gcmVzLnNxcigpKSB7XG4gICAgICBpZiAod1tpXSAhPT0gMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKCsraSA8IHcubGVuZ3RoKSB7XG4gICAgICBmb3IgKHZhciBxID0gcmVzLnNxcigpOyBpIDwgdy5sZW5ndGg7IGkrKywgcSA9IHEuc3FyKCkpIHtcbiAgICAgICAgaWYgKHdbaV0gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHJlcy5tdWwocSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0IGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXNobG4gPSBmdW5jdGlvbiBpdXNobG4gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG4gICAgdmFyIGNhcnJ5TWFzayA9ICgweDNmZmZmZmYgPj4+ICgyNiAtIHIpKSA8PCAoMjYgLSByKTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbmV3Q2FycnkgPSB0aGlzLndvcmRzW2ldICYgY2FycnlNYXNrO1xuICAgICAgICB2YXIgYyA9ICgodGhpcy53b3Jkc1tpXSB8IDApIC0gbmV3Q2FycnkpIDw8IHI7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjIHwgY2Fycnk7XG4gICAgICAgIGNhcnJ5ID0gbmV3Q2FycnkgPj4+ICgyNiAtIHIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2FycnkpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzICE9PSAwKSB7XG4gICAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIHNdID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggKz0gcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hsbiA9IGZ1bmN0aW9uIGlzaGxuIChiaXRzKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodCBpbi1wbGFjZVxuICAvLyBOT1RFOiBgaGludGAgaXMgYSBsb3dlc3QgYml0IGJlZm9yZSB0cmFpbGluZyB6ZXJvZXNcbiAgLy8gTk9URTogaWYgYGV4dGVuZGVkYCBpcyBwcmVzZW50IC0gaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBkZXN0cm95ZWQgYml0c1xuICBCTi5wcm90b3R5cGUuaXVzaHJuID0gZnVuY3Rpb24gaXVzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgaDtcbiAgICBpZiAoaGludCkge1xuICAgICAgaCA9IChoaW50IC0gKGhpbnQgJSAyNikpIC8gMjY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGggPSAwO1xuICAgIH1cblxuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gTWF0aC5taW4oKGJpdHMgLSByKSAvIDI2LCB0aGlzLmxlbmd0aCk7XG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgdmFyIG1hc2tlZFdvcmRzID0gZXh0ZW5kZWQ7XG5cbiAgICBoIC09IHM7XG4gICAgaCA9IE1hdGgubWF4KDAsIGgpO1xuXG4gICAgLy8gRXh0ZW5kZWQgbW9kZSwgY29weSBtYXNrZWQgcGFydFxuICAgIGlmIChtYXNrZWRXb3Jkcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgbWFza2VkV29yZHMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuICAgICAgbWFza2VkV29yZHMubGVuZ3RoID0gcztcbiAgICB9XG5cbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgLy8gTm8tb3AsIHdlIHNob3VsZCBub3QgbW92ZSBhbnl0aGluZyBhdCBhbGxcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gcykge1xuICAgICAgdGhpcy5sZW5ndGggLT0gcztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2kgKyBzXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiAoY2FycnkgIT09IDAgfHwgaSA+PSBoKTsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IChjYXJyeSA8PCAoMjYgLSByKSkgfCAod29yZCA+Pj4gcik7XG4gICAgICBjYXJyeSA9IHdvcmQgJiBtYXNrO1xuICAgIH1cblxuICAgIC8vIFB1c2ggY2FycmllZCBiaXRzIGFzIGEgbWFza1xuICAgIGlmIChtYXNrZWRXb3JkcyAmJiBjYXJyeSAhPT0gMCkge1xuICAgICAgbWFza2VkV29yZHMud29yZHNbbWFza2VkV29yZHMubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hybiA9IGZ1bmN0aW9uIGlzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNocm4oYml0cywgaGludCwgZXh0ZW5kZWQpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnRcbiAgQk4ucHJvdG90eXBlLnNobG4gPSBmdW5jdGlvbiBzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNobG4gPSBmdW5jdGlvbiB1c2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0XG4gIEJOLnByb3RvdHlwZS5zaHJuID0gZnVuY3Rpb24gc2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaHJuID0gZnVuY3Rpb24gdXNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiaXRzKTtcbiAgfTtcblxuICAvLyBUZXN0IGlmIG4gYml0IGlzIHNldFxuICBCTi5wcm90b3R5cGUudGVzdG4gPSBmdW5jdGlvbiB0ZXN0biAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBiaXQgYW5kIHJldHVyblxuICAgIHZhciB3ID0gdGhpcy53b3Jkc1tzXTtcblxuICAgIHJldHVybiAhISh3ICYgcSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyIChpbi1wbGFjZSlcbiAgQk4ucHJvdG90eXBlLmltYXNrbiA9IGZ1bmN0aW9uIGltYXNrbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcblxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAnaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzJyk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHMrKztcbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1pbihzLCB0aGlzLmxlbmd0aCk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gJj0gbWFzaztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlclxuICBCTi5wcm90b3R5cGUubWFza24gPSBmdW5jdGlvbiBtYXNrbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGJpdHMpO1xuICB9O1xuXG4gIC8vIEFkZCBwbGFpbiBudW1iZXIgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pYWRkbiA9IGZ1bmN0aW9uIGlhZGRuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pc3VibigtbnVtKTtcblxuICAgIC8vIFBvc3NpYmxlIHNpZ24gY2hhbmdlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiAodGhpcy53b3Jkc1swXSB8IDApIDwgbnVtKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gPSBudW0gLSAodGhpcy53b3Jkc1swXSB8IDApO1xuICAgICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pc3VibihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aG91dCBjaGVja3NcbiAgICByZXR1cm4gdGhpcy5faWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lhZGRuID0gZnVuY3Rpb24gX2lhZGRuIChudW0pIHtcbiAgICB0aGlzLndvcmRzWzBdICs9IG51bTtcblxuICAgIC8vIENhcnJ5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldID49IDB4NDAwMDAwMDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldIC09IDB4NDAwMDAwMDtcbiAgICAgIGlmIChpID09PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0rKztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSArIDEpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgcGxhaW4gbnVtYmVyIGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pc3VibiA9IGZ1bmN0aW9uIGlzdWJuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pYWRkbigtbnVtKTtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZG4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy53b3Jkc1swXSAtPSBudW07XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA8IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAtdGhpcy53b3Jkc1swXTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDYXJyeVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldIDwgMDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gKz0gMHg0MDAwMDAwO1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSAtPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFkZG4gPSBmdW5jdGlvbiBhZGRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnN1Ym4gPSBmdW5jdGlvbiBzdWJuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhYnMgPSBmdW5jdGlvbiBpYWJzICgpIHtcbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiBhYnMgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFicygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faXNobG5zdWJtdWwgPSBmdW5jdGlvbiBfaXNobG5zdWJtdWwgKG51bSwgbXVsLCBzaGlmdCkge1xuICAgIHZhciBsZW4gPSBudW0ubGVuZ3RoICsgc2hpZnQ7XG4gICAgdmFyIGk7XG5cbiAgICB0aGlzLl9leHBhbmQobGVuKTtcblxuICAgIHZhciB3O1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgdmFyIHJpZ2h0ID0gKG51bS53b3Jkc1tpXSB8IDApICogbXVsO1xuICAgICAgdyAtPSByaWdodCAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gKHcgPj4gMjYpIC0gKChyaWdodCAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBpIDwgdGhpcy5sZW5ndGggLSBzaGlmdDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSA9PT0gMCkgcmV0dXJuIHRoaXMuc3RyaXAoKTtcblxuICAgIC8vIFN1YnRyYWN0aW9uIG92ZXJmbG93XG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAtMSk7XG4gICAgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gLSh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICB0aGlzLm5lZ2F0aXZlID0gMTtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl93b3JkRGl2ID0gZnVuY3Rpb24gX3dvcmREaXYgKG51bSwgbW9kZSkge1xuICAgIHZhciBzaGlmdCA9IHRoaXMubGVuZ3RoIC0gbnVtLmxlbmd0aDtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtO1xuXG4gICAgLy8gTm9ybWFsaXplXG4gICAgdmFyIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgdmFyIGJoaUJpdHMgPSB0aGlzLl9jb3VudEJpdHMoYmhpKTtcbiAgICBzaGlmdCA9IDI2IC0gYmhpQml0cztcbiAgICBpZiAoc2hpZnQgIT09IDApIHtcbiAgICAgIGIgPSBiLnVzaGxuKHNoaWZ0KTtcbiAgICAgIGEuaXVzaGxuKHNoaWZ0KTtcbiAgICAgIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBxdW90aWVudFxuICAgIHZhciBtID0gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAgICB2YXIgcTtcblxuICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgcSA9IG5ldyBCTihudWxsKTtcbiAgICAgIHEubGVuZ3RoID0gbSArIDE7XG4gICAgICBxLndvcmRzID0gbmV3IEFycmF5KHEubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcS5sZW5ndGg7IGkrKykge1xuICAgICAgICBxLndvcmRzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGlmZiA9IGEuY2xvbmUoKS5faXNobG5zdWJtdWwoYiwgMSwgbSk7XG4gICAgaWYgKGRpZmYubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIGEgPSBkaWZmO1xuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1ttXSA9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IG0gLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgdmFyIHFqID0gKGEud29yZHNbYi5sZW5ndGggKyBqXSB8IDApICogMHg0MDAwMDAwICtcbiAgICAgICAgKGEud29yZHNbYi5sZW5ndGggKyBqIC0gMV0gfCAwKTtcblxuICAgICAgLy8gTk9URTogKHFqIC8gYmhpKSBpcyAoMHgzZmZmZmZmICogMHg0MDAwMDAwICsgMHgzZmZmZmZmKSAvIDB4MjAwMDAwMCBtYXhcbiAgICAgIC8vICgweDdmZmZmZmYpXG4gICAgICBxaiA9IE1hdGgubWluKChxaiAvIGJoaSkgfCAwLCAweDNmZmZmZmYpO1xuXG4gICAgICBhLl9pc2hsbnN1Ym11bChiLCBxaiwgaik7XG4gICAgICB3aGlsZSAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBxai0tO1xuICAgICAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgYS5faXNobG5zdWJtdWwoYiwgMSwgaik7XG4gICAgICAgIGlmICghYS5pc1plcm8oKSkge1xuICAgICAgICAgIGEubmVnYXRpdmUgXj0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1tqXSA9IHFqO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocSkge1xuICAgICAgcS5zdHJpcCgpO1xuICAgIH1cbiAgICBhLnN0cmlwKCk7XG5cbiAgICAvLyBEZW5vcm1hbGl6ZVxuICAgIGlmIChtb2RlICE9PSAnZGl2JyAmJiBzaGlmdCAhPT0gMCkge1xuICAgICAgYS5pdXNocm4oc2hpZnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaXY6IHEgfHwgbnVsbCxcbiAgICAgIG1vZDogYVxuICAgIH07XG4gIH07XG5cbiAgLy8gTk9URTogMSkgYG1vZGVgIGNhbiBiZSBzZXQgdG8gYG1vZGAgdG8gcmVxdWVzdCBtb2Qgb25seSxcbiAgLy8gICAgICAgdG8gYGRpdmAgdG8gcmVxdWVzdCBkaXYgb25seSwgb3IgYmUgYWJzZW50IHRvXG4gIC8vICAgICAgIHJlcXVlc3QgYm90aCBkaXYgJiBtb2RcbiAgLy8gICAgICAgMikgYHBvc2l0aXZlYCBpcyB0cnVlIGlmIHVuc2lnbmVkIG1vZCBpcyByZXF1ZXN0ZWRcbiAgQk4ucHJvdG90eXBlLmRpdm1vZCA9IGZ1bmN0aW9uIGRpdm1vZCAobnVtLCBtb2RlLCBwb3NpdGl2ZSkge1xuICAgIGFzc2VydCghbnVtLmlzWmVybygpKTtcblxuICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiBuZXcgQk4oMClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRpdiwgbW9kLCByZXM7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0sIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaWFkZChudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiByZXMubW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICgodGhpcy5uZWdhdGl2ZSAmIG51bS5uZWdhdGl2ZSkgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlzdWIobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHJlcy5kaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmUgYXQgdGhpcyBwb2ludFxuXG4gICAgLy8gU3RyaXAgYm90aCBudW1iZXJzIHRvIGFwcHJveGltYXRlIHNoaWZ0IHZhbHVlXG4gICAgaWYgKG51bS5sZW5ndGggPiB0aGlzLmxlbmd0aCB8fCB0aGlzLmNtcChudW0pIDwgMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogdGhpc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBWZXJ5IHNob3J0IHJlZHVjdGlvblxuICAgIGlmIChudW0ubGVuZ3RoID09PSAxKSB7XG4gICAgICBpZiAobW9kZSA9PT0gJ2RpdicpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICAgIG1vZDogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSA9PT0gJ21vZCcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IG51bGwsXG4gICAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd29yZERpdihudW0sIG1vZGUpO1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgIC8gYG51bWBcbiAgQk4ucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uIGRpdiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ2RpdicsIGZhbHNlKS5kaXY7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgJSBgbnVtYFxuICBCTi5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgZmFsc2UpLm1vZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW1vZCA9IGZ1bmN0aW9uIHVtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCB0cnVlKS5tb2Q7XG4gIH07XG5cbiAgLy8gRmluZCBSb3VuZChgdGhpc2AgLyBgbnVtYClcbiAgQk4ucHJvdG90eXBlLmRpdlJvdW5kID0gZnVuY3Rpb24gZGl2Um91bmQgKG51bSkge1xuICAgIHZhciBkbSA9IHRoaXMuZGl2bW9kKG51bSk7XG5cbiAgICAvLyBGYXN0IGNhc2UgLSBleGFjdCBkaXZpc2lvblxuICAgIGlmIChkbS5tb2QuaXNaZXJvKCkpIHJldHVybiBkbS5kaXY7XG5cbiAgICB2YXIgbW9kID0gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0ubW9kLmlzdWIobnVtKSA6IGRtLm1vZDtcblxuICAgIHZhciBoYWxmID0gbnVtLnVzaHJuKDEpO1xuICAgIHZhciByMiA9IG51bS5hbmRsbigxKTtcbiAgICB2YXIgY21wID0gbW9kLmNtcChoYWxmKTtcblxuICAgIC8vIFJvdW5kIGRvd25cbiAgICBpZiAoY21wIDwgMCB8fCByMiA9PT0gMSAmJiBjbXAgPT09IDApIHJldHVybiBkbS5kaXY7XG5cbiAgICAvLyBSb3VuZCB1cFxuICAgIHJldHVybiBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5kaXYuaXN1Ym4oMSkgOiBkbS5kaXYuaWFkZG4oMSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm1vZG4gPSBmdW5jdGlvbiBtb2RuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG4gICAgdmFyIHAgPSAoMSA8PCAyNikgJSBudW07XG5cbiAgICB2YXIgYWNjID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgYWNjID0gKHAgKiBhY2MgKyAodGhpcy53b3Jkc1tpXSB8IDApKSAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIGRpdmlzaW9uIGJ5IG51bWJlclxuICBCTi5wcm90b3R5cGUuaWRpdm4gPSBmdW5jdGlvbiBpZGl2biAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICsgY2FycnkgKiAweDQwMDAwMDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKHcgLyBudW0pIHwgMDtcbiAgICAgIGNhcnJ5ID0gdyAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5kaXZuID0gZnVuY3Rpb24gZGl2biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lZ2NkID0gZnVuY3Rpb24gZWdjZCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIHggPSB0aGlzO1xuICAgIHZhciB5ID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKHgubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHggPSB4LnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHggPSB4LmNsb25lKCk7XG4gICAgfVxuXG4gICAgLy8gQSAqIHggKyBCICogeSA9IHhcbiAgICB2YXIgQSA9IG5ldyBCTigxKTtcbiAgICB2YXIgQiA9IG5ldyBCTigwKTtcblxuICAgIC8vIEMgKiB4ICsgRCAqIHkgPSB5XG4gICAgdmFyIEMgPSBuZXcgQk4oMCk7XG4gICAgdmFyIEQgPSBuZXcgQk4oMSk7XG5cbiAgICB2YXIgZyA9IDA7XG5cbiAgICB3aGlsZSAoeC5pc0V2ZW4oKSAmJiB5LmlzRXZlbigpKSB7XG4gICAgICB4Lml1c2hybigxKTtcbiAgICAgIHkuaXVzaHJuKDEpO1xuICAgICAgKytnO1xuICAgIH1cblxuICAgIHZhciB5cCA9IHkuY2xvbmUoKTtcbiAgICB2YXIgeHAgPSB4LmNsb25lKCk7XG5cbiAgICB3aGlsZSAoIXguaXNaZXJvKCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7ICh4LndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgeC5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEEuaXNPZGQoKSB8fCBCLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEEuaWFkZCh5cCk7XG4gICAgICAgICAgICBCLmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEEuaXVzaHJuKDEpO1xuICAgICAgICAgIEIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7ICh5LndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgeS5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEMuaXNPZGQoKSB8fCBELmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEMuaWFkZCh5cCk7XG4gICAgICAgICAgICBELmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEMuaXVzaHJuKDEpO1xuICAgICAgICAgIEQuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh4LmNtcCh5KSA+PSAwKSB7XG4gICAgICAgIHguaXN1Yih5KTtcbiAgICAgICAgQS5pc3ViKEMpO1xuICAgICAgICBCLmlzdWIoRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5LmlzdWIoeCk7XG4gICAgICAgIEMuaXN1YihBKTtcbiAgICAgICAgRC5pc3ViKEIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhOiBDLFxuICAgICAgYjogRCxcbiAgICAgIGdjZDogeS5pdXNobG4oZylcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRoaXMgaXMgcmVkdWNlZCBpbmNhcm5hdGlvbiBvZiB0aGUgYmluYXJ5IEVFQVxuICAvLyBhYm92ZSwgZGVzaWduYXRlZCB0byBpbnZlcnQgbWVtYmVycyBvZiB0aGVcbiAgLy8gX3ByaW1lXyBmaWVsZHMgRihwKSBhdCBhIG1heGltYWwgc3BlZWRcbiAgQk4ucHJvdG90eXBlLl9pbnZtcCA9IGZ1bmN0aW9uIF9pbnZtcCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIGEgPSB0aGlzO1xuICAgIHZhciBiID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGEgPSBhLnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICAgIHZhciB4MiA9IG5ldyBCTigwKTtcblxuICAgIHZhciBkZWx0YSA9IGIuY2xvbmUoKTtcblxuICAgIHdoaWxlIChhLmNtcG4oMSkgPiAwICYmIGIuY21wbigxKSA+IDApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7IChhLndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgYS5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgxLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgxLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgxLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoYi53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIGIuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmICh4Mi5pc09kZCgpKSB7XG4gICAgICAgICAgICB4Mi5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4Mi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGEuY21wKGIpID49IDApIHtcbiAgICAgICAgYS5pc3ViKGIpO1xuICAgICAgICB4MS5pc3ViKHgyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGIuaXN1YihhKTtcbiAgICAgICAgeDIuaXN1Yih4MSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlcztcbiAgICBpZiAoYS5jbXBuKDEpID09PSAwKSB7XG4gICAgICByZXMgPSB4MTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0geDI7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQocCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ2NkID0gZnVuY3Rpb24gZ2NkIChudW0pIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIG51bS5hYnMoKTtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gdGhpcy5hYnMoKTtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtLmNsb25lKCk7XG4gICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgYi5uZWdhdGl2ZSA9IDA7XG5cbiAgICAvLyBSZW1vdmUgY29tbW9uIGZhY3RvciBvZiB0d29cbiAgICBmb3IgKHZhciBzaGlmdCA9IDA7IGEuaXNFdmVuKCkgJiYgYi5pc0V2ZW4oKTsgc2hpZnQrKykge1xuICAgICAgYS5pdXNocm4oMSk7XG4gICAgICBiLml1c2hybigxKTtcbiAgICB9XG5cbiAgICBkbyB7XG4gICAgICB3aGlsZSAoYS5pc0V2ZW4oKSkge1xuICAgICAgICBhLml1c2hybigxKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgIGIuaXVzaHJuKDEpO1xuICAgICAgfVxuXG4gICAgICB2YXIgciA9IGEuY21wKGIpO1xuICAgICAgaWYgKHIgPCAwKSB7XG4gICAgICAgIC8vIFN3YXAgYGFgIGFuZCBgYmAgdG8gbWFrZSBgYWAgYWx3YXlzIGJpZ2dlciB0aGFuIGBiYFxuICAgICAgICB2YXIgdCA9IGE7XG4gICAgICAgIGEgPSBiO1xuICAgICAgICBiID0gdDtcbiAgICAgIH0gZWxzZSBpZiAociA9PT0gMCB8fCBiLmNtcG4oMSkgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGEuaXN1YihiKTtcbiAgICB9IHdoaWxlICh0cnVlKTtcblxuICAgIHJldHVybiBiLml1c2hsbihzaGlmdCk7XG4gIH07XG5cbiAgLy8gSW52ZXJ0IG51bWJlciBpbiB0aGUgZmllbGQgRihudW0pXG4gIEJOLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZWdjZChudW0pLmEudW1vZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiBpc0V2ZW4gKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uIGlzT2RkICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMTtcbiAgfTtcblxuICAvLyBBbmQgZmlyc3Qgd29yZCBhbmQgbnVtXG4gIEJOLnByb3RvdHlwZS5hbmRsbiA9IGZ1bmN0aW9uIGFuZGxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkc1swXSAmIG51bTtcbiAgfTtcblxuICAvLyBJbmNyZW1lbnQgYXQgdGhlIGJpdCBwb3NpdGlvbiBpbi1saW5lXG4gIEJOLnByb3RvdHlwZS5iaW5jbiA9IGZ1bmN0aW9uIGJpbmNuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicpO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHRoaXMuX2V4cGFuZChzICsgMSk7XG4gICAgICB0aGlzLndvcmRzW3NdIHw9IHE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgYml0IGFuZCBwcm9wYWdhdGUsIGlmIG5lZWRlZFxuICAgIHZhciBjYXJyeSA9IHE7XG4gICAgZm9yICh2YXIgaSA9IHM7IGNhcnJ5ICE9PSAwICYmIGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdyArPSBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+Pj4gMjY7XG4gICAgICB3ICY9IDB4M2ZmZmZmZjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiBpc1plcm8gKCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbXBuID0gZnVuY3Rpb24gY21wbiAobnVtKSB7XG4gICAgdmFyIG5lZ2F0aXZlID0gbnVtIDwgMDtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmICFuZWdhdGl2ZSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG5lZ2F0aXZlKSByZXR1cm4gMTtcblxuICAgIHRoaXMuc3RyaXAoKTtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gMSkge1xuICAgICAgcmVzID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5lZ2F0aXZlKSB7XG4gICAgICAgIG51bSA9IC1udW07XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmLCAnTnVtYmVyIGlzIHRvbyBiaWcnKTtcblxuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzWzBdIHwgMDtcbiAgICAgIHJlcyA9IHcgPT09IG51bSA/IDAgOiB3IDwgbnVtID8gLTEgOiAxO1xuICAgIH1cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29tcGFyZSB0d28gbnVtYmVycyBhbmQgcmV0dXJuOlxuICAvLyAxIC0gaWYgYHRoaXNgID4gYG51bWBcbiAgLy8gMCAtIGlmIGB0aGlzYCA9PSBgbnVtYFxuICAvLyAtMSAtIGlmIGB0aGlzYCA8IGBudW1gXG4gIEJOLnByb3RvdHlwZS5jbXAgPSBmdW5jdGlvbiBjbXAgKG51bSkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIDE7XG5cbiAgICB2YXIgcmVzID0gdGhpcy51Y21wKG51bSk7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFVuc2lnbmVkIGNvbXBhcmlzb25cbiAgQk4ucHJvdG90eXBlLnVjbXAgPSBmdW5jdGlvbiB1Y21wIChudW0pIHtcbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBoYXZlIHRoZSBzYW1lIHNpZ25cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSByZXR1cm4gLTE7XG5cbiAgICB2YXIgcmVzID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGEgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHZhciBiID0gbnVtLndvcmRzW2ldIHwgMDtcblxuICAgICAgaWYgKGEgPT09IGIpIGNvbnRpbnVlO1xuICAgICAgaWYgKGEgPCBiKSB7XG4gICAgICAgIHJlcyA9IC0xO1xuICAgICAgfSBlbHNlIGlmIChhID4gYikge1xuICAgICAgICByZXMgPSAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0biA9IGZ1bmN0aW9uIGd0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndCA9IGZ1bmN0aW9uIGd0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlbiA9IGZ1bmN0aW9uIGd0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGUgPSBmdW5jdGlvbiBndGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0biA9IGZ1bmN0aW9uIGx0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHQgPSBmdW5jdGlvbiBsdCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGVuID0gZnVuY3Rpb24gbHRlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZSA9IGZ1bmN0aW9uIGx0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXFuID0gZnVuY3Rpb24gZXFuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAwO1xuICB9O1xuXG4gIC8vXG4gIC8vIEEgcmVkdWNlIGNvbnRleHQsIGNvdWxkIGJlIHVzaW5nIG1vbnRnb21lcnkgb3Igc29tZXRoaW5nIGJldHRlciwgZGVwZW5kaW5nXG4gIC8vIG9uIHRoZSBgbWAgaXRzZWxmLlxuICAvL1xuICBCTi5yZWQgPSBmdW5jdGlvbiByZWQgKG51bSkge1xuICAgIHJldHVybiBuZXcgUmVkKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvUmVkID0gZnVuY3Rpb24gdG9SZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIHJldHVybiBjdHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tUmVkID0gZnVuY3Rpb24gZnJvbVJlZCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAnZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2ZvcmNlUmVkID0gZnVuY3Rpb24gX2ZvcmNlUmVkIChjdHgpIHtcbiAgICB0aGlzLnJlZCA9IGN0eDtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZm9yY2VSZWQgPSBmdW5jdGlvbiBmb3JjZVJlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkQWRkID0gZnVuY3Rpb24gcmVkQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJQWRkID0gZnVuY3Rpb24gcmVkSUFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaWFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTdWIgPSBmdW5jdGlvbiByZWRTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTdWIgPSBmdW5jdGlvbiByZWRJU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNobCA9IGZ1bmN0aW9uIHJlZFNobCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zaGwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkTXVsID0gZnVuY3Rpb24gcmVkTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElNdWwgPSBmdW5jdGlvbiByZWRJTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTcXIgPSBmdW5jdGlvbiByZWRTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FyKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3FyID0gZnVuY3Rpb24gcmVkSVNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXNxcih0aGlzKTtcbiAgfTtcblxuICAvLyBTcXVhcmUgcm9vdCBvdmVyIHBcbiAgQk4ucHJvdG90eXBlLnJlZFNxcnQgPSBmdW5jdGlvbiByZWRTcXJ0ICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXJ0KHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJbnZtID0gZnVuY3Rpb24gcmVkSW52bSAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW52bSh0aGlzKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgICUgYHJlZCBtb2R1bG9gXG4gIEJOLnByb3RvdHlwZS5yZWROZWcgPSBmdW5jdGlvbiByZWROZWcgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubmVnKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRQb3cgPSBmdW5jdGlvbiByZWRQb3cgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCAmJiAhbnVtLnJlZCwgJ3JlZFBvdyhub3JtYWxOdW0pJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnBvdyh0aGlzLCBudW0pO1xuICB9O1xuXG4gIC8vIFByaW1lIG51bWJlcnMgd2l0aCBlZmZpY2llbnQgcmVkdWN0aW9uXG4gIHZhciBwcmltZXMgPSB7XG4gICAgazI1NjogbnVsbCxcbiAgICBwMjI0OiBudWxsLFxuICAgIHAxOTI6IG51bGwsXG4gICAgcDI1NTE5OiBudWxsXG4gIH07XG5cbiAgLy8gUHNldWRvLU1lcnNlbm5lIHByaW1lXG4gIGZ1bmN0aW9uIE1QcmltZSAobmFtZSwgcCkge1xuICAgIC8vIFAgPSAyIF4gTiAtIEtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMucCA9IG5ldyBCTihwLCAxNik7XG4gICAgdGhpcy5uID0gdGhpcy5wLmJpdExlbmd0aCgpO1xuICAgIHRoaXMuayA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCk7XG5cbiAgICB0aGlzLnRtcCA9IHRoaXMuX3RtcCgpO1xuICB9XG5cbiAgTVByaW1lLnByb3RvdHlwZS5fdG1wID0gZnVuY3Rpb24gX3RtcCAoKSB7XG4gICAgdmFyIHRtcCA9IG5ldyBCTihudWxsKTtcbiAgICB0bXAud29yZHMgPSBuZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubiAvIDEzKSk7XG4gICAgcmV0dXJuIHRtcDtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmlyZWR1Y2UgPSBmdW5jdGlvbiBpcmVkdWNlIChudW0pIHtcbiAgICAvLyBBc3N1bWVzIHRoYXQgYG51bWAgaXMgbGVzcyB0aGFuIGBQXjJgXG4gICAgLy8gbnVtID0gSEkgKiAoMiBeIE4gLSBLKSArIEhJICogSyArIExPID0gSEkgKiBLICsgTE8gKG1vZCBQKVxuICAgIHZhciByID0gbnVtO1xuICAgIHZhciBybGVuO1xuXG4gICAgZG8ge1xuICAgICAgdGhpcy5zcGxpdChyLCB0aGlzLnRtcCk7XG4gICAgICByID0gdGhpcy5pbXVsSyhyKTtcbiAgICAgIHIgPSByLmlhZGQodGhpcy50bXApO1xuICAgICAgcmxlbiA9IHIuYml0TGVuZ3RoKCk7XG4gICAgfSB3aGlsZSAocmxlbiA+IHRoaXMubik7XG5cbiAgICB2YXIgY21wID0gcmxlbiA8IHRoaXMubiA/IC0xIDogci51Y21wKHRoaXMucCk7XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgci53b3Jkc1swXSA9IDA7XG4gICAgICByLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgICByLmlzdWIodGhpcy5wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHIuc3RyaXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyByIGlzIEJOIHY0IGluc3RhbmNlXG4gICAgICAgIHIuc3RyaXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHIgaXMgQk4gdjUgaW5zdGFuY2VcbiAgICAgICAgci5fc3RyaXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwiJ3VzZSBzdHJpY3QnXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgTUQ1ID0gcmVxdWlyZSgnbWQ1LmpzJylcbnZhciBSSVBFTUQxNjAgPSByZXF1aXJlKCdyaXBlbWQxNjAnKVxudmFyIHNoYSA9IHJlcXVpcmUoJ3NoYS5qcycpXG52YXIgQmFzZSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcblxuZnVuY3Rpb24gSGFzaCAoaGFzaCkge1xuICBCYXNlLmNhbGwodGhpcywgJ2RpZ2VzdCcpXG5cbiAgdGhpcy5faGFzaCA9IGhhc2hcbn1cblxuaW5oZXJpdHMoSGFzaCwgQmFzZSlcblxuSGFzaC5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG59XG5cbkhhc2gucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX2hhc2guZGlnZXN0KClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVIYXNoIChhbGcpIHtcbiAgYWxnID0gYWxnLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFsZyA9PT0gJ21kNScpIHJldHVybiBuZXcgTUQ1KClcbiAgaWYgKGFsZyA9PT0gJ3JtZDE2MCcgfHwgYWxnID09PSAncmlwZW1kMTYwJykgcmV0dXJuIG5ldyBSSVBFTUQxNjAoKVxuXG4gIHJldHVybiBuZXcgSGFzaChzaGEoYWxnKSlcbn1cbiIsInZhciBNRDUgPSByZXF1aXJlKCdtZDUuanMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChidWZmZXIpIHtcbiAgcmV0dXJuIG5ldyBNRDUoKS51cGRhdGUoYnVmZmVyKS5kaWdlc3QoKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgTGVnYWN5ID0gcmVxdWlyZSgnLi9sZWdhY3knKVxudmFyIEJhc2UgPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBtZDUgPSByZXF1aXJlKCdjcmVhdGUtaGFzaC9tZDUnKVxudmFyIFJJUEVNRDE2MCA9IHJlcXVpcmUoJ3JpcGVtZDE2MCcpXG5cbnZhciBzaGEgPSByZXF1aXJlKCdzaGEuanMnKVxuXG52YXIgWkVST1MgPSBCdWZmZXIuYWxsb2MoMTI4KVxuXG5mdW5jdGlvbiBIbWFjIChhbGcsIGtleSkge1xuICBCYXNlLmNhbGwodGhpcywgJ2RpZ2VzdCcpXG4gIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykge1xuICAgIGtleSA9IEJ1ZmZlci5mcm9tKGtleSlcbiAgfVxuXG4gIHZhciBibG9ja3NpemUgPSAoYWxnID09PSAnc2hhNTEyJyB8fCBhbGcgPT09ICdzaGEzODQnKSA/IDEyOCA6IDY0XG5cbiAgdGhpcy5fYWxnID0gYWxnXG4gIHRoaXMuX2tleSA9IGtleVxuICBpZiAoa2V5Lmxlbmd0aCA+IGJsb2Nrc2l6ZSkge1xuICAgIHZhciBoYXNoID0gYWxnID09PSAncm1kMTYwJyA/IG5ldyBSSVBFTUQxNjAoKSA6IHNoYShhbGcpXG4gICAga2V5ID0gaGFzaC51cGRhdGUoa2V5KS5kaWdlc3QoKVxuICB9IGVsc2UgaWYgKGtleS5sZW5ndGggPCBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBCdWZmZXIuY29uY2F0KFtrZXksIFpFUk9TXSwgYmxvY2tzaXplKVxuICB9XG5cbiAgdmFyIGlwYWQgPSB0aGlzLl9pcGFkID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2Nrc2l6ZSlcbiAgdmFyIG9wYWQgPSB0aGlzLl9vcGFkID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2Nrc2l6ZSlcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGJsb2Nrc2l6ZTsgaSsrKSB7XG4gICAgaXBhZFtpXSA9IGtleVtpXSBeIDB4MzZcbiAgICBvcGFkW2ldID0ga2V5W2ldIF4gMHg1Q1xuICB9XG4gIHRoaXMuX2hhc2ggPSBhbGcgPT09ICdybWQxNjAnID8gbmV3IFJJUEVNRDE2MCgpIDogc2hhKGFsZylcbiAgdGhpcy5faGFzaC51cGRhdGUoaXBhZClcbn1cblxuaW5oZXJpdHMoSG1hYywgQmFzZSlcblxuSG1hYy5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG59XG5cbkhtYWMucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGggPSB0aGlzLl9oYXNoLmRpZ2VzdCgpXG4gIHZhciBoYXNoID0gdGhpcy5fYWxnID09PSAncm1kMTYwJyA/IG5ldyBSSVBFTUQxNjAoKSA6IHNoYSh0aGlzLl9hbGcpXG4gIHJldHVybiBoYXNoLnVwZGF0ZSh0aGlzLl9vcGFkKS51cGRhdGUoaCkuZGlnZXN0KClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVIbWFjIChhbGcsIGtleSkge1xuICBhbGcgPSBhbGcudG9Mb3dlckNhc2UoKVxuICBpZiAoYWxnID09PSAncm1kMTYwJyB8fCBhbGcgPT09ICdyaXBlbWQxNjAnKSB7XG4gICAgcmV0dXJuIG5ldyBIbWFjKCdybWQxNjAnLCBrZXkpXG4gIH1cbiAgaWYgKGFsZyA9PT0gJ21kNScpIHtcbiAgICByZXR1cm4gbmV3IExlZ2FjeShtZDUsIGtleSlcbiAgfVxuICByZXR1cm4gbmV3IEhtYWMoYWxnLCBrZXkpXG59XG4iLCIndXNlIHN0cmljdCdcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgQmFzZSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcblxudmFyIFpFUk9TID0gQnVmZmVyLmFsbG9jKDEyOClcbnZhciBibG9ja3NpemUgPSA2NFxuXG5mdW5jdGlvbiBIbWFjIChhbGcsIGtleSkge1xuICBCYXNlLmNhbGwodGhpcywgJ2RpZ2VzdCcpXG4gIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykge1xuICAgIGtleSA9IEJ1ZmZlci5mcm9tKGtleSlcbiAgfVxuXG4gIHRoaXMuX2FsZyA9IGFsZ1xuICB0aGlzLl9rZXkgPSBrZXlcblxuICBpZiAoa2V5Lmxlbmd0aCA+IGJsb2Nrc2l6ZSkge1xuICAgIGtleSA9IGFsZyhrZXkpXG4gIH0gZWxzZSBpZiAoa2V5Lmxlbmd0aCA8IGJsb2Nrc2l6ZSkge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwgWkVST1NdLCBibG9ja3NpemUpXG4gIH1cblxuICB2YXIgaXBhZCA9IHRoaXMuX2lwYWQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYmxvY2tzaXplKVxuICB2YXIgb3BhZCA9IHRoaXMuX29wYWQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYmxvY2tzaXplKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tzaXplOyBpKyspIHtcbiAgICBpcGFkW2ldID0ga2V5W2ldIF4gMHgzNlxuICAgIG9wYWRbaV0gPSBrZXlbaV0gXiAweDVDXG4gIH1cblxuICB0aGlzLl9oYXNoID0gW2lwYWRdXG59XG5cbmluaGVyaXRzKEhtYWMsIEJhc2UpXG5cbkhtYWMucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9oYXNoLnB1c2goZGF0YSlcbn1cblxuSG1hYy5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaCA9IHRoaXMuX2FsZyhCdWZmZXIuY29uY2F0KHRoaXMuX2hhc2gpKVxuICByZXR1cm4gdGhpcy5fYWxnKEJ1ZmZlci5jb25jYXQoW3RoaXMuX29wYWQsIGhdKSlcbn1cbm1vZHVsZS5leHBvcnRzID0gSG1hY1xuIiwiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydHMucmFuZG9tQnl0ZXMgPSBleHBvcnRzLnJuZyA9IGV4cG9ydHMucHNldWRvUmFuZG9tQnl0ZXMgPSBleHBvcnRzLnBybmcgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpXG5leHBvcnRzLmNyZWF0ZUhhc2ggPSBleHBvcnRzLkhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpXG5leHBvcnRzLmNyZWF0ZUhtYWMgPSBleHBvcnRzLkhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG5cbnZhciBhbGdvcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktc2lnbi9hbGdvcycpXG52YXIgYWxnb0tleXMgPSBPYmplY3Qua2V5cyhhbGdvcylcbnZhciBoYXNoZXMgPSBbJ3NoYTEnLCAnc2hhMjI0JywgJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJywgJ21kNScsICdybWQxNjAnXS5jb25jYXQoYWxnb0tleXMpXG5leHBvcnRzLmdldEhhc2hlcyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGhhc2hlc1xufVxuXG52YXIgcCA9IHJlcXVpcmUoJ3Bia2RmMicpXG5leHBvcnRzLnBia2RmMiA9IHAucGJrZGYyXG5leHBvcnRzLnBia2RmMlN5bmMgPSBwLnBia2RmMlN5bmNcblxudmFyIGFlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktY2lwaGVyJylcblxuZXhwb3J0cy5DaXBoZXIgPSBhZXMuQ2lwaGVyXG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGFlcy5jcmVhdGVDaXBoZXJcbmV4cG9ydHMuQ2lwaGVyaXYgPSBhZXMuQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyaXYgPSBhZXMuY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuRGVjaXBoZXIgPSBhZXMuRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBhZXMuY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuRGVjaXBoZXJpdiA9IGFlcy5EZWNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyaXYgPSBhZXMuY3JlYXRlRGVjaXBoZXJpdlxuZXhwb3J0cy5nZXRDaXBoZXJzID0gYWVzLmdldENpcGhlcnNcbmV4cG9ydHMubGlzdENpcGhlcnMgPSBhZXMubGlzdENpcGhlcnNcblxudmFyIGRoID0gcmVxdWlyZSgnZGlmZmllLWhlbGxtYW4nKVxuXG5leHBvcnRzLkRpZmZpZUhlbGxtYW5Hcm91cCA9IGRoLkRpZmZpZUhlbGxtYW5Hcm91cFxuZXhwb3J0cy5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXAgPSBkaC5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXBcbmV4cG9ydHMuZ2V0RGlmZmllSGVsbG1hbiA9IGRoLmdldERpZmZpZUhlbGxtYW5cbmV4cG9ydHMuY3JlYXRlRGlmZmllSGVsbG1hbiA9IGRoLmNyZWF0ZURpZmZpZUhlbGxtYW5cbmV4cG9ydHMuRGlmZmllSGVsbG1hbiA9IGRoLkRpZmZpZUhlbGxtYW5cblxudmFyIHNpZ24gPSByZXF1aXJlKCdicm93c2VyaWZ5LXNpZ24nKVxuXG5leHBvcnRzLmNyZWF0ZVNpZ24gPSBzaWduLmNyZWF0ZVNpZ25cbmV4cG9ydHMuU2lnbiA9IHNpZ24uU2lnblxuZXhwb3J0cy5jcmVhdGVWZXJpZnkgPSBzaWduLmNyZWF0ZVZlcmlmeVxuZXhwb3J0cy5WZXJpZnkgPSBzaWduLlZlcmlmeVxuXG5leHBvcnRzLmNyZWF0ZUVDREggPSByZXF1aXJlKCdjcmVhdGUtZWNkaCcpXG5cbnZhciBwdWJsaWNFbmNyeXB0ID0gcmVxdWlyZSgncHVibGljLWVuY3J5cHQnKVxuXG5leHBvcnRzLnB1YmxpY0VuY3J5cHQgPSBwdWJsaWNFbmNyeXB0LnB1YmxpY0VuY3J5cHRcbmV4cG9ydHMucHJpdmF0ZUVuY3J5cHQgPSBwdWJsaWNFbmNyeXB0LnByaXZhdGVFbmNyeXB0XG5leHBvcnRzLnB1YmxpY0RlY3J5cHQgPSBwdWJsaWNFbmNyeXB0LnB1YmxpY0RlY3J5cHRcbmV4cG9ydHMucHJpdmF0ZURlY3J5cHQgPSBwdWJsaWNFbmNyeXB0LnByaXZhdGVEZWNyeXB0XG5cbi8vIHRoZSBsZWFzdCBJIGNhbiBkbyBpcyBtYWtlIGVycm9yIG1lc3NhZ2VzIGZvciB0aGUgcmVzdCBvZiB0aGUgbm9kZS5qcy9jcnlwdG8gYXBpLlxuLy8gO1tcbi8vICAgJ2NyZWF0ZUNyZWRlbnRpYWxzJ1xuLy8gXS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4vLyAgIGV4cG9ydHNbbmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4vLyAgICAgdGhyb3cgbmV3IEVycm9yKFtcbi8vICAgICAgICdzb3JyeSwgJyArIG5hbWUgKyAnIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQnLFxuLy8gICAgICAgJ3dlIGFjY2VwdCBwdWxsIHJlcXVlc3RzJyxcbi8vICAgICAgICdodHRwczovL2dpdGh1Yi5jb20vY3J5cHRvLWJyb3dzZXJpZnkvY3J5cHRvLWJyb3dzZXJpZnknXG4vLyAgICAgXS5qb2luKCdcXG4nKSlcbi8vICAgfVxuLy8gfSlcblxudmFyIHJmID0gcmVxdWlyZSgncmFuZG9tZmlsbCcpXG5cbmV4cG9ydHMucmFuZG9tRmlsbCA9IHJmLnJhbmRvbUZpbGxcbmV4cG9ydHMucmFuZG9tRmlsbFN5bmMgPSByZi5yYW5kb21GaWxsU3luY1xuXG5leHBvcnRzLmNyZWF0ZUNyZWRlbnRpYWxzID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoW1xuICAgICdzb3JyeSwgY3JlYXRlQ3JlZGVudGlhbHMgaXMgbm90IGltcGxlbWVudGVkIHlldCcsXG4gICAgJ3dlIGFjY2VwdCBwdWxsIHJlcXVlc3RzJyxcbiAgICAnaHR0cHM6Ly9naXRodWIuY29tL2NyeXB0by1icm93c2VyaWZ5L2NyeXB0by1icm93c2VyaWZ5J1xuICBdLmpvaW4oJ1xcbicpKVxufVxuXG5leHBvcnRzLmNvbnN0YW50cyA9IHtcbiAgJ0RIX0NIRUNLX1BfTk9UX1NBRkVfUFJJTUUnOiAyLFxuICAnREhfQ0hFQ0tfUF9OT1RfUFJJTUUnOiAxLFxuICAnREhfVU5BQkxFX1RPX0NIRUNLX0dFTkVSQVRPUic6IDQsXG4gICdESF9OT1RfU1VJVEFCTEVfR0VORVJBVE9SJzogOCxcbiAgJ05QTl9FTkFCTEVEJzogMSxcbiAgJ0FMUE5fRU5BQkxFRCc6IDEsXG4gICdSU0FfUEtDUzFfUEFERElORyc6IDEsXG4gICdSU0FfU1NMVjIzX1BBRERJTkcnOiAyLFxuICAnUlNBX05PX1BBRERJTkcnOiAzLFxuICAnUlNBX1BLQ1MxX09BRVBfUEFERElORyc6IDQsXG4gICdSU0FfWDkzMV9QQURESU5HJzogNSxcbiAgJ1JTQV9QS0NTMV9QU1NfUEFERElORyc6IDYsXG4gICdQT0lOVF9DT05WRVJTSU9OX0NPTVBSRVNTRUQnOiAyLFxuICAnUE9JTlRfQ09OVkVSU0lPTl9VTkNPTVBSRVNTRUQnOiA0LFxuICAnUE9JTlRfQ09OVkVSU0lPTl9IWUJSSUQnOiA2XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBrZXlzID0gcmVxdWlyZSgnb2JqZWN0LWtleXMnKTtcbnZhciBoYXNTeW1ib2xzID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgU3ltYm9sKCdmb28nKSA9PT0gJ3N5bWJvbCc7XG5cbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgY29uY2F0ID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdDtcbnZhciBvcmlnRGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbnZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gKGZuKSB7XG5cdHJldHVybiB0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicgJiYgdG9TdHIuY2FsbChmbikgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG59O1xuXG52YXIgYXJlUHJvcGVydHlEZXNjcmlwdG9yc1N1cHBvcnRlZCA9IGZ1bmN0aW9uICgpIHtcblx0dmFyIG9iaiA9IHt9O1xuXHR0cnkge1xuXHRcdG9yaWdEZWZpbmVQcm9wZXJ0eShvYmosICd4JywgeyBlbnVtZXJhYmxlOiBmYWxzZSwgdmFsdWU6IG9iaiB9KTtcblx0XHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnMsIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG5cdFx0Zm9yICh2YXIgXyBpbiBvYmopIHsgLy8ganNjczppZ25vcmUgZGlzYWxsb3dVbnVzZWRWYXJpYWJsZXNcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIG9iai54ID09PSBvYmo7XG5cdH0gY2F0Y2ggKGUpIHsgLyogdGhpcyBpcyBJRSA4LiAqL1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufTtcbnZhciBzdXBwb3J0c0Rlc2NyaXB0b3JzID0gb3JpZ0RlZmluZVByb3BlcnR5ICYmIGFyZVByb3BlcnR5RGVzY3JpcHRvcnNTdXBwb3J0ZWQoKTtcblxudmFyIGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZSwgdmFsdWUsIHByZWRpY2F0ZSkge1xuXHRpZiAobmFtZSBpbiBvYmplY3QgJiYgKCFpc0Z1bmN0aW9uKHByZWRpY2F0ZSkgfHwgIXByZWRpY2F0ZSgpKSkge1xuXHRcdHJldHVybjtcblx0fVxuXHRpZiAoc3VwcG9ydHNEZXNjcmlwdG9ycykge1xuXHRcdG9yaWdEZWZpbmVQcm9wZXJ0eShvYmplY3QsIG5hbWUsIHtcblx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdGVudW1lcmFibGU6IGZhbHNlLFxuXHRcdFx0dmFsdWU6IHZhbHVlLFxuXHRcdFx0d3JpdGFibGU6IHRydWVcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRvYmplY3RbbmFtZV0gPSB2YWx1ZTtcblx0fVxufTtcblxudmFyIGRlZmluZVByb3BlcnRpZXMgPSBmdW5jdGlvbiAob2JqZWN0LCBtYXApIHtcblx0dmFyIHByZWRpY2F0ZXMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHt9O1xuXHR2YXIgcHJvcHMgPSBrZXlzKG1hcCk7XG5cdGlmIChoYXNTeW1ib2xzKSB7XG5cdFx0cHJvcHMgPSBjb25jYXQuY2FsbChwcm9wcywgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhtYXApKTtcblx0fVxuXHRmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSArPSAxKSB7XG5cdFx0ZGVmaW5lUHJvcGVydHkob2JqZWN0LCBwcm9wc1tpXSwgbWFwW3Byb3BzW2ldXSwgcHJlZGljYXRlc1twcm9wc1tpXV0pO1xuXHR9XG59O1xuXG5kZWZpbmVQcm9wZXJ0aWVzLnN1cHBvcnRzRGVzY3JpcHRvcnMgPSAhIXN1cHBvcnRzRGVzY3JpcHRvcnM7XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmaW5lUHJvcGVydGllcztcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy51dGlscyA9IHJlcXVpcmUoJy4vZGVzL3V0aWxzJyk7XG5leHBvcnRzLkNpcGhlciA9IHJlcXVpcmUoJy4vZGVzL2NpcGhlcicpO1xuZXhwb3J0cy5ERVMgPSByZXF1aXJlKCcuL2Rlcy9kZXMnKTtcbmV4cG9ydHMuQ0JDID0gcmVxdWlyZSgnLi9kZXMvY2JjJyk7XG5leHBvcnRzLkVERSA9IHJlcXVpcmUoJy4vZGVzL2VkZScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIHByb3RvID0ge307XG5cbmZ1bmN0aW9uIENCQ1N0YXRlKGl2KSB7XG4gIGFzc2VydC5lcXVhbChpdi5sZW5ndGgsIDgsICdJbnZhbGlkIElWIGxlbmd0aCcpO1xuXG4gIHRoaXMuaXYgPSBuZXcgQXJyYXkoOCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5pdi5sZW5ndGg7IGkrKylcbiAgICB0aGlzLml2W2ldID0gaXZbaV07XG59XG5cbmZ1bmN0aW9uIGluc3RhbnRpYXRlKEJhc2UpIHtcbiAgZnVuY3Rpb24gQ0JDKG9wdGlvbnMpIHtcbiAgICBCYXNlLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gICAgdGhpcy5fY2JjSW5pdCgpO1xuICB9XG4gIGluaGVyaXRzKENCQywgQmFzZSk7XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhwcm90byk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgIENCQy5wcm90b3R5cGVba2V5XSA9IHByb3RvW2tleV07XG4gIH1cblxuICBDQkMuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IENCQyhvcHRpb25zKTtcbiAgfTtcblxuICByZXR1cm4gQ0JDO1xufVxuXG5leHBvcnRzLmluc3RhbnRpYXRlID0gaW5zdGFudGlhdGU7XG5cbnByb3RvLl9jYmNJbml0ID0gZnVuY3Rpb24gX2NiY0luaXQoKSB7XG4gIHZhciBzdGF0ZSA9IG5ldyBDQkNTdGF0ZSh0aGlzLm9wdGlvbnMuaXYpO1xuICB0aGlzLl9jYmNTdGF0ZSA9IHN0YXRlO1xufTtcblxucHJvdG8uX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUoaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fY2JjU3RhdGU7XG4gIHZhciBzdXBlclByb3RvID0gdGhpcy5jb25zdHJ1Y3Rvci5zdXBlcl8ucHJvdG90eXBlO1xuXG4gIHZhciBpdiA9IHN0YXRlLml2O1xuICBpZiAodGhpcy50eXBlID09PSAnZW5jcnlwdCcpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBpdltpXSBePSBpbnBbaW5PZmYgKyBpXTtcblxuICAgIHN1cGVyUHJvdG8uX3VwZGF0ZS5jYWxsKHRoaXMsIGl2LCAwLCBvdXQsIG91dE9mZik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBpdltpXSA9IG91dFtvdXRPZmYgKyBpXTtcbiAgfSBlbHNlIHtcbiAgICBzdXBlclByb3RvLl91cGRhdGUuY2FsbCh0aGlzLCBpbnAsIGluT2ZmLCBvdXQsIG91dE9mZik7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBvdXRbb3V0T2ZmICsgaV0gXj0gaXZbaV07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAgICBpdltpXSA9IGlucFtpbk9mZiArIGldO1xuICB9XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG5mdW5jdGlvbiBDaXBoZXIob3B0aW9ucykge1xuICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gIHRoaXMudHlwZSA9IHRoaXMub3B0aW9ucy50eXBlO1xuICB0aGlzLmJsb2NrU2l6ZSA9IDg7XG4gIHRoaXMuX2luaXQoKTtcblxuICB0aGlzLmJ1ZmZlciA9IG5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7XG4gIHRoaXMuYnVmZmVyT2ZmID0gMDtcbn1cbm1vZHVsZS5leHBvcnRzID0gQ2lwaGVyO1xuXG5DaXBoZXIucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gX2luaXQoKSB7XG4gIC8vIE1pZ2h0IGJlIG92ZXJyaWRlZFxufTtcblxuQ2lwaGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUoZGF0YSkge1xuICBpZiAoZGF0YS5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIFtdO1xuXG4gIGlmICh0aGlzLnR5cGUgPT09ICdkZWNyeXB0JylcbiAgICByZXR1cm4gdGhpcy5fdXBkYXRlRGVjcnlwdChkYXRhKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl91cGRhdGVFbmNyeXB0KGRhdGEpO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fYnVmZmVyID0gZnVuY3Rpb24gX2J1ZmZlcihkYXRhLCBvZmYpIHtcbiAgLy8gQXBwZW5kIGRhdGEgdG8gYnVmZmVyXG4gIHZhciBtaW4gPSBNYXRoLm1pbih0aGlzLmJ1ZmZlci5sZW5ndGggLSB0aGlzLmJ1ZmZlck9mZiwgZGF0YS5sZW5ndGggLSBvZmYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1pbjsgaSsrKVxuICAgIHRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmICsgaV0gPSBkYXRhW29mZiArIGldO1xuICB0aGlzLmJ1ZmZlck9mZiArPSBtaW47XG5cbiAgLy8gU2hpZnQgbmV4dFxuICByZXR1cm4gbWluO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fZmx1c2hCdWZmZXIgPSBmdW5jdGlvbiBfZmx1c2hCdWZmZXIob3V0LCBvZmYpIHtcbiAgdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLCAwLCBvdXQsIG9mZik7XG4gIHRoaXMuYnVmZmVyT2ZmID0gMDtcbiAgcmV0dXJuIHRoaXMuYmxvY2tTaXplO1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlRW5jcnlwdCA9IGZ1bmN0aW9uIF91cGRhdGVFbmNyeXB0KGRhdGEpIHtcbiAgdmFyIGlucHV0T2ZmID0gMDtcbiAgdmFyIG91dHB1dE9mZiA9IDA7XG5cbiAgdmFyIGNvdW50ID0gKCh0aGlzLmJ1ZmZlck9mZiArIGRhdGEubGVuZ3RoKSAvIHRoaXMuYmxvY2tTaXplKSB8IDA7XG4gIHZhciBvdXQgPSBuZXcgQXJyYXkoY291bnQgKiB0aGlzLmJsb2NrU2l6ZSk7XG5cbiAgaWYgKHRoaXMuYnVmZmVyT2ZmICE9PSAwKSB7XG4gICAgaW5wdXRPZmYgKz0gdGhpcy5fYnVmZmVyKGRhdGEsIGlucHV0T2ZmKTtcblxuICAgIGlmICh0aGlzLmJ1ZmZlck9mZiA9PT0gdGhpcy5idWZmZXIubGVuZ3RoKVxuICAgICAgb3V0cHV0T2ZmICs9IHRoaXMuX2ZsdXNoQnVmZmVyKG91dCwgb3V0cHV0T2ZmKTtcbiAgfVxuXG4gIC8vIFdyaXRlIGJsb2Nrc1xuICB2YXIgbWF4ID0gZGF0YS5sZW5ndGggLSAoKGRhdGEubGVuZ3RoIC0gaW5wdXRPZmYpICUgdGhpcy5ibG9ja1NpemUpO1xuICBmb3IgKDsgaW5wdXRPZmYgPCBtYXg7IGlucHV0T2ZmICs9IHRoaXMuYmxvY2tTaXplKSB7XG4gICAgdGhpcy5fdXBkYXRlKGRhdGEsIGlucHV0T2ZmLCBvdXQsIG91dHB1dE9mZik7XG4gICAgb3V0cHV0T2ZmICs9IHRoaXMuYmxvY2tTaXplO1xuICB9XG5cbiAgLy8gUXVldWUgcmVzdFxuICBmb3IgKDsgaW5wdXRPZmYgPCBkYXRhLmxlbmd0aDsgaW5wdXRPZmYrKywgdGhpcy5idWZmZXJPZmYrKylcbiAgICB0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZl0gPSBkYXRhW2lucHV0T2ZmXTtcblxuICByZXR1cm4gb3V0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlRGVjcnlwdCA9IGZ1bmN0aW9uIF91cGRhdGVEZWNyeXB0KGRhdGEpIHtcbiAgdmFyIGlucHV0T2ZmID0gMDtcbiAgdmFyIG91dHB1dE9mZiA9IDA7XG5cbiAgdmFyIGNvdW50ID0gTWF0aC5jZWlsKCh0aGlzLmJ1ZmZlck9mZiArIGRhdGEubGVuZ3RoKSAvIHRoaXMuYmxvY2tTaXplKSAtIDE7XG4gIHZhciBvdXQgPSBuZXcgQXJyYXkoY291bnQgKiB0aGlzLmJsb2NrU2l6ZSk7XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogb3B0aW1pemUgaXQsIHRoaXMgaXMgZmFyIGZyb20gb3B0aW1hbFxuICBmb3IgKDsgY291bnQgPiAwOyBjb3VudC0tKSB7XG4gICAgaW5wdXRPZmYgKz0gdGhpcy5fYnVmZmVyKGRhdGEsIGlucHV0T2ZmKTtcbiAgICBvdXRwdXRPZmYgKz0gdGhpcy5fZmx1c2hCdWZmZXIob3V0LCBvdXRwdXRPZmYpO1xuICB9XG5cbiAgLy8gQnVmZmVyIHJlc3Qgb2YgdGhlIGlucHV0XG4gIGlucHV0T2ZmICs9IHRoaXMuX2J1ZmZlcihkYXRhLCBpbnB1dE9mZik7XG5cbiAgcmV0dXJuIG91dDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuZmluYWwgPSBmdW5jdGlvbiBmaW5hbChidWZmZXIpIHtcbiAgdmFyIGZpcnN0O1xuICBpZiAoYnVmZmVyKVxuICAgIGZpcnN0ID0gdGhpcy51cGRhdGUoYnVmZmVyKTtcblxuICB2YXIgbGFzdDtcbiAgaWYgKHRoaXMudHlwZSA9PT0gJ2VuY3J5cHQnKVxuICAgIGxhc3QgPSB0aGlzLl9maW5hbEVuY3J5cHQoKTtcbiAgZWxzZVxuICAgIGxhc3QgPSB0aGlzLl9maW5hbERlY3J5cHQoKTtcblxuICBpZiAoZmlyc3QpXG4gICAgcmV0dXJuIGZpcnN0LmNvbmNhdChsYXN0KTtcbiAgZWxzZVxuICAgIHJldHVybiBsYXN0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fcGFkID0gZnVuY3Rpb24gX3BhZChidWZmZXIsIG9mZikge1xuICBpZiAob2ZmID09PSAwKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB3aGlsZSAob2ZmIDwgYnVmZmVyLmxlbmd0aClcbiAgICBidWZmZXJbb2ZmKytdID0gMDtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsRW5jcnlwdCA9IGZ1bmN0aW9uIF9maW5hbEVuY3J5cHQoKSB7XG4gIGlmICghdGhpcy5fcGFkKHRoaXMuYnVmZmVyLCB0aGlzLmJ1ZmZlck9mZikpXG4gICAgcmV0dXJuIFtdO1xuXG4gIHZhciBvdXQgPSBuZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO1xuICB0aGlzLl91cGRhdGUodGhpcy5idWZmZXIsIDAsIG91dCwgMCk7XG4gIHJldHVybiBvdXQ7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl91bnBhZCA9IGZ1bmN0aW9uIF91bnBhZChidWZmZXIpIHtcbiAgcmV0dXJuIGJ1ZmZlcjtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsRGVjcnlwdCA9IGZ1bmN0aW9uIF9maW5hbERlY3J5cHQoKSB7XG4gIGFzc2VydC5lcXVhbCh0aGlzLmJ1ZmZlck9mZiwgdGhpcy5ibG9ja1NpemUsICdOb3QgZW5vdWdoIGRhdGEgdG8gZGVjcnlwdCcpO1xuICB2YXIgb3V0ID0gbmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtcbiAgdGhpcy5fZmx1c2hCdWZmZXIob3V0LCAwKTtcblxuICByZXR1cm4gdGhpcy5fdW5wYWQob3V0KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgQ2lwaGVyID0gcmVxdWlyZSgnLi9jaXBoZXInKTtcblxuZnVuY3Rpb24gREVTU3RhdGUoKSB7XG4gIHRoaXMudG1wID0gbmV3IEFycmF5KDIpO1xuICB0aGlzLmtleXMgPSBudWxsO1xufVxuXG5mdW5jdGlvbiBERVMob3B0aW9ucykge1xuICBDaXBoZXIuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICB2YXIgc3RhdGUgPSBuZXcgREVTU3RhdGUoKTtcbiAgdGhpcy5fZGVzU3RhdGUgPSBzdGF0ZTtcblxuICB0aGlzLmRlcml2ZUtleXMoc3RhdGUsIG9wdGlvbnMua2V5KTtcbn1cbmluaGVyaXRzKERFUywgQ2lwaGVyKTtcbm1vZHVsZS5leHBvcnRzID0gREVTO1xuXG5ERVMuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBERVMob3B0aW9ucyk7XG59O1xuXG52YXIgc2hpZnRUYWJsZSA9IFtcbiAgMSwgMSwgMiwgMiwgMiwgMiwgMiwgMixcbiAgMSwgMiwgMiwgMiwgMiwgMiwgMiwgMVxuXTtcblxuREVTLnByb3RvdHlwZS5kZXJpdmVLZXlzID0gZnVuY3Rpb24gZGVyaXZlS2V5cyhzdGF0ZSwga2V5KSB7XG4gIHN0YXRlLmtleXMgPSBuZXcgQXJyYXkoMTYgKiAyKTtcblxuICBhc3NlcnQuZXF1YWwoa2V5Lmxlbmd0aCwgdGhpcy5ibG9ja1NpemUsICdJbnZhbGlkIGtleSBsZW5ndGgnKTtcblxuICB2YXIga0wgPSB1dGlscy5yZWFkVUludDMyQkUoa2V5LCAwKTtcbiAgdmFyIGtSID0gdXRpbHMucmVhZFVJbnQzMkJFKGtleSwgNCk7XG5cbiAgdXRpbHMucGMxKGtMLCBrUiwgc3RhdGUudG1wLCAwKTtcbiAga0wgPSBzdGF0ZS50bXBbMF07XG4gIGtSID0gc3RhdGUudG1wWzFdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLmtleXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIgc2hpZnQgPSBzaGlmdFRhYmxlW2kgPj4+IDFdO1xuICAgIGtMID0gdXRpbHMucjI4c2hsKGtMLCBzaGlmdCk7XG4gICAga1IgPSB1dGlscy5yMjhzaGwoa1IsIHNoaWZ0KTtcbiAgICB1dGlscy5wYzIoa0wsIGtSLCBzdGF0ZS5rZXlzLCBpKTtcbiAgfVxufTtcblxuREVTLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9kZXNTdGF0ZTtcblxuICB2YXIgbCA9IHV0aWxzLnJlYWRVSW50MzJCRShpbnAsIGluT2ZmKTtcbiAgdmFyIHIgPSB1dGlscy5yZWFkVUludDMyQkUoaW5wLCBpbk9mZiArIDQpO1xuXG4gIC8vIEluaXRpYWwgUGVybXV0YXRpb25cbiAgdXRpbHMuaXAobCwgciwgc3RhdGUudG1wLCAwKTtcbiAgbCA9IHN0YXRlLnRtcFswXTtcbiAgciA9IHN0YXRlLnRtcFsxXTtcblxuICBpZiAodGhpcy50eXBlID09PSAnZW5jcnlwdCcpXG4gICAgdGhpcy5fZW5jcnlwdChzdGF0ZSwgbCwgciwgc3RhdGUudG1wLCAwKTtcbiAgZWxzZVxuICAgIHRoaXMuX2RlY3J5cHQoc3RhdGUsIGwsIHIsIHN0YXRlLnRtcCwgMCk7XG5cbiAgbCA9IHN0YXRlLnRtcFswXTtcbiAgciA9IHN0YXRlLnRtcFsxXTtcblxuICB1dGlscy53cml0ZVVJbnQzMkJFKG91dCwgbCwgb3V0T2ZmKTtcbiAgdXRpbHMud3JpdGVVSW50MzJCRShvdXQsIHIsIG91dE9mZiArIDQpO1xufTtcblxuREVTLnByb3RvdHlwZS5fcGFkID0gZnVuY3Rpb24gX3BhZChidWZmZXIsIG9mZikge1xuICB2YXIgdmFsdWUgPSBidWZmZXIubGVuZ3RoIC0gb2ZmO1xuICBmb3IgKHZhciBpID0gb2ZmOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSsrKVxuICAgIGJ1ZmZlcltpXSA9IHZhbHVlO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuREVTLnByb3RvdHlwZS5fdW5wYWQgPSBmdW5jdGlvbiBfdW5wYWQoYnVmZmVyKSB7XG4gIHZhciBwYWQgPSBidWZmZXJbYnVmZmVyLmxlbmd0aCAtIDFdO1xuICBmb3IgKHZhciBpID0gYnVmZmVyLmxlbmd0aCAtIHBhZDsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkrKylcbiAgICBhc3NlcnQuZXF1YWwoYnVmZmVyW2ldLCBwYWQpO1xuXG4gIHJldHVybiBidWZmZXIuc2xpY2UoMCwgYnVmZmVyLmxlbmd0aCAtIHBhZCk7XG59O1xuXG5ERVMucHJvdG90eXBlLl9lbmNyeXB0ID0gZnVuY3Rpb24gX2VuY3J5cHQoc3RhdGUsIGxTdGFydCwgclN0YXJ0LCBvdXQsIG9mZikge1xuICB2YXIgbCA9IGxTdGFydDtcbiAgdmFyIHIgPSByU3RhcnQ7XG5cbiAgLy8gQXBwbHkgZigpIHgxNiB0aW1lc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlLmtleXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIga2V5TCA9IHN0YXRlLmtleXNbaV07XG4gICAgdmFyIGtleVIgPSBzdGF0ZS5rZXlzW2kgKyAxXTtcblxuICAgIC8vIGYociwgaylcbiAgICB1dGlscy5leHBhbmQociwgc3RhdGUudG1wLCAwKTtcblxuICAgIGtleUwgXj0gc3RhdGUudG1wWzBdO1xuICAgIGtleVIgXj0gc3RhdGUudG1wWzFdO1xuICAgIHZhciBzID0gdXRpbHMuc3Vic3RpdHV0ZShrZXlMLCBrZXlSKTtcbiAgICB2YXIgZiA9IHV0aWxzLnBlcm11dGUocyk7XG5cbiAgICB2YXIgdCA9IHI7XG4gICAgciA9IChsIF4gZikgPj4+IDA7XG4gICAgbCA9IHQ7XG4gIH1cblxuICAvLyBSZXZlcnNlIEluaXRpYWwgUGVybXV0YXRpb25cbiAgdXRpbHMucmlwKHIsIGwsIG91dCwgb2ZmKTtcbn07XG5cbkRFUy5wcm90b3R5cGUuX2RlY3J5cHQgPSBmdW5jdGlvbiBfZGVjcnlwdChzdGF0ZSwgbFN0YXJ0LCByU3RhcnQsIG91dCwgb2ZmKSB7XG4gIHZhciBsID0gclN0YXJ0O1xuICB2YXIgciA9IGxTdGFydDtcblxuICAvLyBBcHBseSBmKCkgeDE2IHRpbWVzXG4gIGZvciAodmFyIGkgPSBzdGF0ZS5rZXlzLmxlbmd0aCAtIDI7IGkgPj0gMDsgaSAtPSAyKSB7XG4gICAgdmFyIGtleUwgPSBzdGF0ZS5rZXlzW2ldO1xuICAgIHZhciBrZXlSID0gc3RhdGUua2V5c1tpICsgMV07XG5cbiAgICAvLyBmKHIsIGspXG4gICAgdXRpbHMuZXhwYW5kKGwsIHN0YXRlLnRtcCwgMCk7XG5cbiAgICBrZXlMIF49IHN0YXRlLnRtcFswXTtcbiAgICBrZXlSIF49IHN0YXRlLnRtcFsxXTtcbiAgICB2YXIgcyA9IHV0aWxzLnN1YnN0aXR1dGUoa2V5TCwga2V5Uik7XG4gICAgdmFyIGYgPSB1dGlscy5wZXJtdXRlKHMpO1xuXG4gICAgdmFyIHQgPSBsO1xuICAgIGwgPSAociBeIGYpID4+PiAwO1xuICAgIHIgPSB0O1xuICB9XG5cbiAgLy8gUmV2ZXJzZSBJbml0aWFsIFBlcm11dGF0aW9uXG4gIHV0aWxzLnJpcChsLCByLCBvdXQsIG9mZik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIENpcGhlciA9IHJlcXVpcmUoJy4vY2lwaGVyJyk7XG52YXIgREVTID0gcmVxdWlyZSgnLi9kZXMnKTtcblxuZnVuY3Rpb24gRURFU3RhdGUodHlwZSwga2V5KSB7XG4gIGFzc2VydC5lcXVhbChrZXkubGVuZ3RoLCAyNCwgJ0ludmFsaWQga2V5IGxlbmd0aCcpO1xuXG4gIHZhciBrMSA9IGtleS5zbGljZSgwLCA4KTtcbiAgdmFyIGsyID0ga2V5LnNsaWNlKDgsIDE2KTtcbiAgdmFyIGszID0ga2V5LnNsaWNlKDE2LCAyNCk7XG5cbiAgaWYgKHR5cGUgPT09ICdlbmNyeXB0Jykge1xuICAgIHRoaXMuY2lwaGVycyA9IFtcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZW5jcnlwdCcsIGtleTogazEgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2RlY3J5cHQnLCBrZXk6IGsyIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdlbmNyeXB0Jywga2V5OiBrMyB9KVxuICAgIF07XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5jaXBoZXJzID0gW1xuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdkZWNyeXB0Jywga2V5OiBrMyB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZW5jcnlwdCcsIGtleTogazIgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2RlY3J5cHQnLCBrZXk6IGsxIH0pXG4gICAgXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBFREUob3B0aW9ucykge1xuICBDaXBoZXIuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICB2YXIgc3RhdGUgPSBuZXcgRURFU3RhdGUodGhpcy50eXBlLCB0aGlzLm9wdGlvbnMua2V5KTtcbiAgdGhpcy5fZWRlU3RhdGUgPSBzdGF0ZTtcbn1cbmluaGVyaXRzKEVERSwgQ2lwaGVyKTtcblxubW9kdWxlLmV4cG9ydHMgPSBFREU7XG5cbkVERS5jcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUob3B0aW9ucykge1xuICByZXR1cm4gbmV3IEVERShvcHRpb25zKTtcbn07XG5cbkVERS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUoaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fZWRlU3RhdGU7XG5cbiAgc3RhdGUuY2lwaGVyc1swXS5fdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKTtcbiAgc3RhdGUuY2lwaGVyc1sxXS5fdXBkYXRlKG91dCwgb3V0T2ZmLCBvdXQsIG91dE9mZik7XG4gIHN0YXRlLmNpcGhlcnNbMl0uX3VwZGF0ZShvdXQsIG91dE9mZiwgb3V0LCBvdXRPZmYpO1xufTtcblxuRURFLnByb3RvdHlwZS5fcGFkID0gREVTLnByb3RvdHlwZS5fcGFkO1xuRURFLnByb3RvdHlwZS5fdW5wYWQgPSBERVMucHJvdG90eXBlLl91bnBhZDtcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5yZWFkVUludDMyQkUgPSBmdW5jdGlvbiByZWFkVUludDMyQkUoYnl0ZXMsIG9mZikge1xuICB2YXIgcmVzID0gIChieXRlc1swICsgb2ZmXSA8PCAyNCkgfFxuICAgICAgICAgICAgIChieXRlc1sxICsgb2ZmXSA8PCAxNikgfFxuICAgICAgICAgICAgIChieXRlc1syICsgb2ZmXSA8PCA4KSB8XG4gICAgICAgICAgICAgYnl0ZXNbMyArIG9mZl07XG4gIHJldHVybiByZXMgPj4+IDA7XG59O1xuXG5leHBvcnRzLndyaXRlVUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkJFKGJ5dGVzLCB2YWx1ZSwgb2ZmKSB7XG4gIGJ5dGVzWzAgKyBvZmZdID0gdmFsdWUgPj4+IDI0O1xuICBieXRlc1sxICsgb2ZmXSA9ICh2YWx1ZSA+Pj4gMTYpICYgMHhmZjtcbiAgYnl0ZXNbMiArIG9mZl0gPSAodmFsdWUgPj4+IDgpICYgMHhmZjtcbiAgYnl0ZXNbMyArIG9mZl0gPSB2YWx1ZSAmIDB4ZmY7XG59O1xuXG5leHBvcnRzLmlwID0gZnVuY3Rpb24gaXAoaW5MLCBpblIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIGZvciAodmFyIGkgPSA2OyBpID49IDA7IGkgLT0gMikge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluTCA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuXG4gIGZvciAodmFyIGkgPSA2OyBpID49IDA7IGkgLT0gMikge1xuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IDI1OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gMjU7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluTCA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLnJpcCA9IGZ1bmN0aW9uIHJpcChpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMjQ7IGogPj0gMDsgaiAtPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5SID4+PiAoaiArIGkpKSAmIDE7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5MID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG4gIGZvciAodmFyIGkgPSA0OyBpIDwgODsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDI0OyBqID49IDA7IGogLT0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluTCA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLnBjMSA9IGZ1bmN0aW9uIHBjMShpbkwsIGluUiwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgLy8gNywgMTUsIDIzLCAzMSwgMzksIDQ3LCA1NSwgNjNcbiAgLy8gNiwgMTQsIDIyLCAzMCwgMzksIDQ3LCA1NSwgNjNcbiAgLy8gNSwgMTMsIDIxLCAyOSwgMzksIDQ3LCA1NSwgNjNcbiAgLy8gNCwgMTIsIDIwLCAyOFxuICBmb3IgKHZhciBpID0gNzsgaSA+PSA1OyBpLS0pIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5SID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluTCA+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG4gIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICBvdXRMIDw8PSAxO1xuICAgIG91dEwgfD0gKGluUiA+PiAoaiArIGkpKSAmIDE7XG4gIH1cblxuICAvLyAxLCA5LCAxNywgMjUsIDMzLCA0MSwgNDksIDU3XG4gIC8vIDIsIDEwLCAxOCwgMjYsIDM0LCA0MiwgNTAsIDU4XG4gIC8vIDMsIDExLCAxOSwgMjcsIDM1LCA0MywgNTEsIDU5XG4gIC8vIDM2LCA0NCwgNTIsIDYwXG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IDM7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpblIgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5MID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cbiAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgIG91dFIgPDw9IDE7XG4gICAgb3V0UiB8PSAoaW5MID4+IChqICsgaSkpICYgMTtcbiAgfVxuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG5leHBvcnRzLnIyOHNobCA9IGZ1bmN0aW9uIHIyOHNobChudW0sIHNoaWZ0KSB7XG4gIHJldHVybiAoKG51bSA8PCBzaGlmdCkgJiAweGZmZmZmZmYpIHwgKG51bSA+Pj4gKDI4IC0gc2hpZnQpKTtcbn07XG5cbnZhciBwYzJ0YWJsZSA9IFtcbiAgLy8gaW5MID0+IG91dExcbiAgMTQsIDExLCAxNywgNCwgMjcsIDIzLCAyNSwgMCxcbiAgMTMsIDIyLCA3LCAxOCwgNSwgOSwgMTYsIDI0LFxuICAyLCAyMCwgMTIsIDIxLCAxLCA4LCAxNSwgMjYsXG5cbiAgLy8gaW5SID0+IG91dFJcbiAgMTUsIDQsIDI1LCAxOSwgOSwgMSwgMjYsIDE2LFxuICA1LCAxMSwgMjMsIDgsIDEyLCA3LCAxNywgMCxcbiAgMjIsIDMsIDEwLCAxNCwgNiwgMjAsIDI3LCAyNFxuXTtcblxuZXhwb3J0cy5wYzIgPSBmdW5jdGlvbiBwYzIoaW5MLCBpblIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIHZhciBsZW4gPSBwYzJ0YWJsZS5sZW5ndGggPj4+IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBvdXRMIDw8PSAxO1xuICAgIG91dEwgfD0gKGluTCA+Pj4gcGMydGFibGVbaV0pICYgMHgxO1xuICB9XG4gIGZvciAodmFyIGkgPSBsZW47IGkgPCBwYzJ0YWJsZS5sZW5ndGg7IGkrKykge1xuICAgIG91dFIgPDw9IDE7XG4gICAgb3V0UiB8PSAoaW5SID4+PiBwYzJ0YWJsZVtpXSkgJiAweDE7XG4gIH1cblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxuZXhwb3J0cy5leHBhbmQgPSBmdW5jdGlvbiBleHBhbmQociwgb3V0LCBvZmYpIHtcbiAgdmFyIG91dEwgPSAwO1xuICB2YXIgb3V0UiA9IDA7XG5cbiAgb3V0TCA9ICgociAmIDEpIDw8IDUpIHwgKHIgPj4+IDI3KTtcbiAgZm9yICh2YXIgaSA9IDIzOyBpID49IDE1OyBpIC09IDQpIHtcbiAgICBvdXRMIDw8PSA2O1xuICAgIG91dEwgfD0gKHIgPj4+IGkpICYgMHgzZjtcbiAgfVxuICBmb3IgKHZhciBpID0gMTE7IGkgPj0gMzsgaSAtPSA0KSB7XG4gICAgb3V0UiB8PSAociA+Pj4gaSkgJiAweDNmO1xuICAgIG91dFIgPDw9IDY7XG4gIH1cbiAgb3V0UiB8PSAoKHIgJiAweDFmKSA8PCAxKSB8IChyID4+PiAzMSk7XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbnZhciBzVGFibGUgPSBbXG4gIDE0LCAwLCA0LCAxNSwgMTMsIDcsIDEsIDQsIDIsIDE0LCAxNSwgMiwgMTEsIDEzLCA4LCAxLFxuICAzLCAxMCwgMTAsIDYsIDYsIDEyLCAxMiwgMTEsIDUsIDksIDksIDUsIDAsIDMsIDcsIDgsXG4gIDQsIDE1LCAxLCAxMiwgMTQsIDgsIDgsIDIsIDEzLCA0LCA2LCA5LCAyLCAxLCAxMSwgNyxcbiAgMTUsIDUsIDEyLCAxMSwgOSwgMywgNywgMTQsIDMsIDEwLCAxMCwgMCwgNSwgNiwgMCwgMTMsXG5cbiAgMTUsIDMsIDEsIDEzLCA4LCA0LCAxNCwgNywgNiwgMTUsIDExLCAyLCAzLCA4LCA0LCAxNCxcbiAgOSwgMTIsIDcsIDAsIDIsIDEsIDEzLCAxMCwgMTIsIDYsIDAsIDksIDUsIDExLCAxMCwgNSxcbiAgMCwgMTMsIDE0LCA4LCA3LCAxMCwgMTEsIDEsIDEwLCAzLCA0LCAxNSwgMTMsIDQsIDEsIDIsXG4gIDUsIDExLCA4LCA2LCAxMiwgNywgNiwgMTIsIDksIDAsIDMsIDUsIDIsIDE0LCAxNSwgOSxcblxuICAxMCwgMTMsIDAsIDcsIDksIDAsIDE0LCA5LCA2LCAzLCAzLCA0LCAxNSwgNiwgNSwgMTAsXG4gIDEsIDIsIDEzLCA4LCAxMiwgNSwgNywgMTQsIDExLCAxMiwgNCwgMTEsIDIsIDE1LCA4LCAxLFxuICAxMywgMSwgNiwgMTAsIDQsIDEzLCA5LCAwLCA4LCA2LCAxNSwgOSwgMywgOCwgMCwgNyxcbiAgMTEsIDQsIDEsIDE1LCAyLCAxNCwgMTIsIDMsIDUsIDExLCAxMCwgNSwgMTQsIDIsIDcsIDEyLFxuXG4gIDcsIDEzLCAxMywgOCwgMTQsIDExLCAzLCA1LCAwLCA2LCA2LCAxNSwgOSwgMCwgMTAsIDMsXG4gIDEsIDQsIDIsIDcsIDgsIDIsIDUsIDEyLCAxMSwgMSwgMTIsIDEwLCA0LCAxNCwgMTUsIDksXG4gIDEwLCAzLCA2LCAxNSwgOSwgMCwgMCwgNiwgMTIsIDEwLCAxMSwgMSwgNywgMTMsIDEzLCA4LFxuICAxNSwgOSwgMSwgNCwgMywgNSwgMTQsIDExLCA1LCAxMiwgMiwgNywgOCwgMiwgNCwgMTQsXG5cbiAgMiwgMTQsIDEyLCAxMSwgNCwgMiwgMSwgMTIsIDcsIDQsIDEwLCA3LCAxMSwgMTMsIDYsIDEsXG4gIDgsIDUsIDUsIDAsIDMsIDE1LCAxNSwgMTAsIDEzLCAzLCAwLCA5LCAxNCwgOCwgOSwgNixcbiAgNCwgMTEsIDIsIDgsIDEsIDEyLCAxMSwgNywgMTAsIDEsIDEzLCAxNCwgNywgMiwgOCwgMTMsXG4gIDE1LCA2LCA5LCAxNSwgMTIsIDAsIDUsIDksIDYsIDEwLCAzLCA0LCAwLCA1LCAxNCwgMyxcblxuICAxMiwgMTAsIDEsIDE1LCAxMCwgNCwgMTUsIDIsIDksIDcsIDIsIDEyLCA2LCA5LCA4LCA1LFxuICAwLCA2LCAxMywgMSwgMywgMTMsIDQsIDE0LCAxNCwgMCwgNywgMTEsIDUsIDMsIDExLCA4LFxuICA5LCA0LCAxNCwgMywgMTUsIDIsIDUsIDEyLCAyLCA5LCA4LCA1LCAxMiwgMTUsIDMsIDEwLFxuICA3LCAxMSwgMCwgMTQsIDQsIDEsIDEwLCA3LCAxLCA2LCAxMywgMCwgMTEsIDgsIDYsIDEzLFxuXG4gIDQsIDEzLCAxMSwgMCwgMiwgMTEsIDE0LCA3LCAxNSwgNCwgMCwgOSwgOCwgMSwgMTMsIDEwLFxuICAzLCAxNCwgMTIsIDMsIDksIDUsIDcsIDEyLCA1LCAyLCAxMCwgMTUsIDYsIDgsIDEsIDYsXG4gIDEsIDYsIDQsIDExLCAxMSwgMTMsIDEzLCA4LCAxMiwgMSwgMywgNCwgNywgMTAsIDE0LCA3LFxuICAxMCwgOSwgMTUsIDUsIDYsIDAsIDgsIDE1LCAwLCAxNCwgNSwgMiwgOSwgMywgMiwgMTIsXG5cbiAgMTMsIDEsIDIsIDE1LCA4LCAxMywgNCwgOCwgNiwgMTAsIDE1LCAzLCAxMSwgNywgMSwgNCxcbiAgMTAsIDEyLCA5LCA1LCAzLCA2LCAxNCwgMTEsIDUsIDAsIDAsIDE0LCAxMiwgOSwgNywgMixcbiAgNywgMiwgMTEsIDEsIDQsIDE0LCAxLCA3LCA5LCA0LCAxMiwgMTAsIDE0LCA4LCAyLCAxMyxcbiAgMCwgMTUsIDYsIDEyLCAxMCwgOSwgMTMsIDAsIDE1LCAzLCAzLCA1LCA1LCA2LCA4LCAxMVxuXTtcblxuZXhwb3J0cy5zdWJzdGl0dXRlID0gZnVuY3Rpb24gc3Vic3RpdHV0ZShpbkwsIGluUikge1xuICB2YXIgb3V0ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgYiA9IChpbkwgPj4+ICgxOCAtIGkgKiA2KSkgJiAweDNmO1xuICAgIHZhciBzYiA9IHNUYWJsZVtpICogMHg0MCArIGJdO1xuXG4gICAgb3V0IDw8PSA0O1xuICAgIG91dCB8PSBzYjtcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgIHZhciBiID0gKGluUiA+Pj4gKDE4IC0gaSAqIDYpKSAmIDB4M2Y7XG4gICAgdmFyIHNiID0gc1RhYmxlWzQgKiAweDQwICsgaSAqIDB4NDAgKyBiXTtcblxuICAgIG91dCA8PD0gNDtcbiAgICBvdXQgfD0gc2I7XG4gIH1cbiAgcmV0dXJuIG91dCA+Pj4gMDtcbn07XG5cbnZhciBwZXJtdXRlVGFibGUgPSBbXG4gIDE2LCAyNSwgMTIsIDExLCAzLCAyMCwgNCwgMTUsIDMxLCAxNywgOSwgNiwgMjcsIDE0LCAxLCAyMixcbiAgMzAsIDI0LCA4LCAxOCwgMCwgNSwgMjksIDIzLCAxMywgMTksIDIsIDI2LCAxMCwgMjEsIDI4LCA3XG5dO1xuXG5leHBvcnRzLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlKG51bSkge1xuICB2YXIgb3V0ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwZXJtdXRlVGFibGUubGVuZ3RoOyBpKyspIHtcbiAgICBvdXQgPDw9IDE7XG4gICAgb3V0IHw9IChudW0gPj4+IHBlcm11dGVUYWJsZVtpXSkgJiAweDE7XG4gIH1cbiAgcmV0dXJuIG91dCA+Pj4gMDtcbn07XG5cbmV4cG9ydHMucGFkU3BsaXQgPSBmdW5jdGlvbiBwYWRTcGxpdChudW0sIHNpemUsIGdyb3VwKSB7XG4gIHZhciBzdHIgPSBudW0udG9TdHJpbmcoMik7XG4gIHdoaWxlIChzdHIubGVuZ3RoIDwgc2l6ZSlcbiAgICBzdHIgPSAnMCcgKyBzdHI7XG5cbiAgdmFyIG91dCA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemU7IGkgKz0gZ3JvdXApXG4gICAgb3V0LnB1c2goc3RyLnNsaWNlKGksIGkgKyBncm91cCkpO1xuICByZXR1cm4gb3V0LmpvaW4oJyAnKTtcbn07XG4iLCJ2YXIgZ2VuZXJhdGVQcmltZSA9IHJlcXVpcmUoJy4vbGliL2dlbmVyYXRlUHJpbWUnKVxudmFyIHByaW1lcyA9IHJlcXVpcmUoJy4vbGliL3ByaW1lcy5qc29uJylcblxudmFyIERIID0gcmVxdWlyZSgnLi9saWIvZGgnKVxuXG5mdW5jdGlvbiBnZXREaWZmaWVIZWxsbWFuIChtb2QpIHtcbiAgdmFyIHByaW1lID0gbmV3IEJ1ZmZlcihwcmltZXNbbW9kXS5wcmltZSwgJ2hleCcpXG4gIHZhciBnZW4gPSBuZXcgQnVmZmVyKHByaW1lc1ttb2RdLmdlbiwgJ2hleCcpXG5cbiAgcmV0dXJuIG5ldyBESChwcmltZSwgZ2VuKVxufVxuXG52YXIgRU5DT0RJTkdTID0ge1xuICAnYmluYXJ5JzogdHJ1ZSwgJ2hleCc6IHRydWUsICdiYXNlNjQnOiB0cnVlXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURpZmZpZUhlbGxtYW4gKHByaW1lLCBlbmMsIGdlbmVyYXRvciwgZ2VuYykge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGVuYykgfHwgRU5DT0RJTkdTW2VuY10gPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBjcmVhdGVEaWZmaWVIZWxsbWFuKHByaW1lLCAnYmluYXJ5JywgZW5jLCBnZW5lcmF0b3IpXG4gIH1cblxuICBlbmMgPSBlbmMgfHwgJ2JpbmFyeSdcbiAgZ2VuYyA9IGdlbmMgfHwgJ2JpbmFyeSdcbiAgZ2VuZXJhdG9yID0gZ2VuZXJhdG9yIHx8IG5ldyBCdWZmZXIoWzJdKVxuXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGdlbmVyYXRvcikpIHtcbiAgICBnZW5lcmF0b3IgPSBuZXcgQnVmZmVyKGdlbmVyYXRvciwgZ2VuYylcbiAgfVxuXG4gIGlmICh0eXBlb2YgcHJpbWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIG5ldyBESChnZW5lcmF0ZVByaW1lKHByaW1lLCBnZW5lcmF0b3IpLCBnZW5lcmF0b3IsIHRydWUpXG4gIH1cblxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwcmltZSkpIHtcbiAgICBwcmltZSA9IG5ldyBCdWZmZXIocHJpbWUsIGVuYylcbiAgfVxuXG4gIHJldHVybiBuZXcgREgocHJpbWUsIGdlbmVyYXRvciwgdHJ1ZSlcbn1cblxuZXhwb3J0cy5EaWZmaWVIZWxsbWFuR3JvdXAgPSBleHBvcnRzLmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cCA9IGV4cG9ydHMuZ2V0RGlmZmllSGVsbG1hbiA9IGdldERpZmZpZUhlbGxtYW5cbmV4cG9ydHMuY3JlYXRlRGlmZmllSGVsbG1hbiA9IGV4cG9ydHMuRGlmZmllSGVsbG1hbiA9IGNyZWF0ZURpZmZpZUhlbGxtYW5cbiIsInZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgTWlsbGVyUmFiaW4gPSByZXF1aXJlKCdtaWxsZXItcmFiaW4nKTtcbnZhciBtaWxsZXJSYWJpbiA9IG5ldyBNaWxsZXJSYWJpbigpO1xudmFyIFRXRU5UWUZPVVIgPSBuZXcgQk4oMjQpO1xudmFyIEVMRVZFTiA9IG5ldyBCTigxMSk7XG52YXIgVEVOID0gbmV3IEJOKDEwKTtcbnZhciBUSFJFRSA9IG5ldyBCTigzKTtcbnZhciBTRVZFTiA9IG5ldyBCTig3KTtcbnZhciBwcmltZXMgPSByZXF1aXJlKCcuL2dlbmVyYXRlUHJpbWUnKTtcbnZhciByYW5kb21CeXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IERIO1xuXG5mdW5jdGlvbiBzZXRQdWJsaWNLZXkocHViLCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4JztcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHViKSkge1xuICAgIHB1YiA9IG5ldyBCdWZmZXIocHViLCBlbmMpO1xuICB9XG4gIHRoaXMuX3B1YiA9IG5ldyBCTihwdWIpO1xuICByZXR1cm4gdGhpcztcbn1cblxuZnVuY3Rpb24gc2V0UHJpdmF0ZUtleShwcml2LCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4JztcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpdikpIHtcbiAgICBwcml2ID0gbmV3IEJ1ZmZlcihwcml2LCBlbmMpO1xuICB9XG4gIHRoaXMuX3ByaXYgPSBuZXcgQk4ocHJpdik7XG4gIHJldHVybiB0aGlzO1xufVxuXG52YXIgcHJpbWVDYWNoZSA9IHt9O1xuZnVuY3Rpb24gY2hlY2tQcmltZShwcmltZSwgZ2VuZXJhdG9yKSB7XG4gIHZhciBnZW4gPSBnZW5lcmF0b3IudG9TdHJpbmcoJ2hleCcpO1xuICB2YXIgaGV4ID0gW2dlbiwgcHJpbWUudG9TdHJpbmcoMTYpXS5qb2luKCdfJyk7XG4gIGlmIChoZXggaW4gcHJpbWVDYWNoZSkge1xuICAgIHJldHVybiBwcmltZUNhY2hlW2hleF07XG4gIH1cbiAgdmFyIGVycm9yID0gMDtcblxuICBpZiAocHJpbWUuaXNFdmVuKCkgfHxcbiAgICAhcHJpbWVzLnNpbXBsZVNpZXZlIHx8XG4gICAgIXByaW1lcy5mZXJtYXRUZXN0KHByaW1lKSB8fFxuICAgICFtaWxsZXJSYWJpbi50ZXN0KHByaW1lKSkge1xuICAgIC8vbm90IGEgcHJpbWUgc28gKzFcbiAgICBlcnJvciArPSAxO1xuXG4gICAgaWYgKGdlbiA9PT0gJzAyJyB8fCBnZW4gPT09ICcwNScpIHtcbiAgICAgIC8vIHdlJ2QgYmUgYWJsZSB0byBjaGVjayB0aGUgZ2VuZXJhdG9yXG4gICAgICAvLyBpdCB3b3VsZCBmYWlsIHNvICs4XG4gICAgICBlcnJvciArPSA4O1xuICAgIH0gZWxzZSB7XG4gICAgICAvL3dlIHdvdWxkbid0IGJlIGFibGUgdG8gdGVzdCB0aGUgZ2VuZXJhdG9yXG4gICAgICAvLyBzbyArNFxuICAgICAgZXJyb3IgKz0gNDtcbiAgICB9XG4gICAgcHJpbWVDYWNoZVtoZXhdID0gZXJyb3I7XG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG4gIGlmICghbWlsbGVyUmFiaW4udGVzdChwcmltZS5zaHJuKDEpKSkge1xuICAgIC8vbm90IGEgc2FmZSBwcmltZVxuICAgIGVycm9yICs9IDI7XG4gIH1cbiAgdmFyIHJlbTtcbiAgc3dpdGNoIChnZW4pIHtcbiAgICBjYXNlICcwMic6XG4gICAgICBpZiAocHJpbWUubW9kKFRXRU5UWUZPVVIpLmNtcChFTEVWRU4pKSB7XG4gICAgICAgIC8vIHVuc3VpZGFibGUgZ2VuZXJhdG9yXG4gICAgICAgIGVycm9yICs9IDg7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlICcwNSc6XG4gICAgICByZW0gPSBwcmltZS5tb2QoVEVOKTtcbiAgICAgIGlmIChyZW0uY21wKFRIUkVFKSAmJiByZW0uY21wKFNFVkVOKSkge1xuICAgICAgICAvLyBwcmltZSBtb2QgMTAgbmVlZHMgdG8gZXF1YWwgMyBvciA3XG4gICAgICAgIGVycm9yICs9IDg7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgZXJyb3IgKz0gNDtcbiAgfVxuICBwcmltZUNhY2hlW2hleF0gPSBlcnJvcjtcbiAgcmV0dXJuIGVycm9yO1xufVxuXG5mdW5jdGlvbiBESChwcmltZSwgZ2VuZXJhdG9yLCBtYWxsZWFibGUpIHtcbiAgdGhpcy5zZXRHZW5lcmF0b3IoZ2VuZXJhdG9yKTtcbiAgdGhpcy5fX3ByaW1lID0gbmV3IEJOKHByaW1lKTtcbiAgdGhpcy5fcHJpbWUgPSBCTi5tb250KHRoaXMuX19wcmltZSk7XG4gIHRoaXMuX3ByaW1lTGVuID0gcHJpbWUubGVuZ3RoO1xuICB0aGlzLl9wdWIgPSB1bmRlZmluZWQ7XG4gIHRoaXMuX3ByaXYgPSB1bmRlZmluZWQ7XG4gIHRoaXMuX3ByaW1lQ29kZSA9IHVuZGVmaW5lZDtcbiAgaWYgKG1hbGxlYWJsZSkge1xuICAgIHRoaXMuc2V0UHVibGljS2V5ID0gc2V0UHVibGljS2V5O1xuICAgIHRoaXMuc2V0UHJpdmF0ZUtleSA9IHNldFByaXZhdGVLZXk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fcHJpbWVDb2RlID0gODtcbiAgfVxufVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KERILnByb3RvdHlwZSwgJ3ZlcmlmeUVycm9yJywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuX3ByaW1lQ29kZSAhPT0gJ251bWJlcicpIHtcbiAgICAgIHRoaXMuX3ByaW1lQ29kZSA9IGNoZWNrUHJpbWUodGhpcy5fX3ByaW1lLCB0aGlzLl9fZ2VuKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3ByaW1lQ29kZTtcbiAgfVxufSk7XG5ESC5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXRoaXMuX3ByaXYpIHtcbiAgICB0aGlzLl9wcml2ID0gbmV3IEJOKHJhbmRvbUJ5dGVzKHRoaXMuX3ByaW1lTGVuKSk7XG4gIH1cbiAgdGhpcy5fcHViID0gdGhpcy5fZ2VuLnRvUmVkKHRoaXMuX3ByaW1lKS5yZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpO1xuICByZXR1cm4gdGhpcy5nZXRQdWJsaWNLZXkoKTtcbn07XG5cbkRILnByb3RvdHlwZS5jb21wdXRlU2VjcmV0ID0gZnVuY3Rpb24gKG90aGVyKSB7XG4gIG90aGVyID0gbmV3IEJOKG90aGVyKTtcbiAgb3RoZXIgPSBvdGhlci50b1JlZCh0aGlzLl9wcmltZSk7XG4gIHZhciBzZWNyZXQgPSBvdGhlci5yZWRQb3codGhpcy5fcHJpdikuZnJvbVJlZCgpO1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihzZWNyZXQudG9BcnJheSgpKTtcbiAgdmFyIHByaW1lID0gdGhpcy5nZXRQcmltZSgpO1xuICBpZiAob3V0Lmxlbmd0aCA8IHByaW1lLmxlbmd0aCkge1xuICAgIHZhciBmcm9udCA9IG5ldyBCdWZmZXIocHJpbWUubGVuZ3RoIC0gb3V0Lmxlbmd0aCk7XG4gICAgZnJvbnQuZmlsbCgwKTtcbiAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFtmcm9udCwgb3V0XSk7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn07XG5cbkRILnByb3RvdHlwZS5nZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiBnZXRQdWJsaWNLZXkoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9wdWIsIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleSA9IGZ1bmN0aW9uIGdldFByaXZhdGVLZXkoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9wcml2LCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLmdldFByaW1lID0gZnVuY3Rpb24gKGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fX3ByaW1lLCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLmdldEdlbmVyYXRvciA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX2dlbiwgZW5jKTtcbn07XG5cbkRILnByb3RvdHlwZS5zZXRHZW5lcmF0b3IgPSBmdW5jdGlvbiAoZ2VuLCBlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICd1dGY4JztcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoZ2VuKSkge1xuICAgIGdlbiA9IG5ldyBCdWZmZXIoZ2VuLCBlbmMpO1xuICB9XG4gIHRoaXMuX19nZW4gPSBnZW47XG4gIHRoaXMuX2dlbiA9IG5ldyBCTihnZW4pO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIGZvcm1hdFJldHVyblZhbHVlKGJuLCBlbmMpIHtcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoYm4udG9BcnJheSgpKTtcbiAgaWYgKCFlbmMpIHtcbiAgICByZXR1cm4gYnVmO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWYudG9TdHJpbmcoZW5jKTtcbiAgfVxufVxuIiwidmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gZmluZFByaW1lO1xuZmluZFByaW1lLnNpbXBsZVNpZXZlID0gc2ltcGxlU2lldmU7XG5maW5kUHJpbWUuZmVybWF0VGVzdCA9IGZlcm1hdFRlc3Q7XG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIFRXRU5UWUZPVVIgPSBuZXcgQk4oMjQpO1xudmFyIE1pbGxlclJhYmluID0gcmVxdWlyZSgnbWlsbGVyLXJhYmluJyk7XG52YXIgbWlsbGVyUmFiaW4gPSBuZXcgTWlsbGVyUmFiaW4oKTtcbnZhciBPTkUgPSBuZXcgQk4oMSk7XG52YXIgVFdPID0gbmV3IEJOKDIpO1xudmFyIEZJVkUgPSBuZXcgQk4oNSk7XG52YXIgU0lYVEVFTiA9IG5ldyBCTigxNik7XG52YXIgRUlHSFQgPSBuZXcgQk4oOCk7XG52YXIgVEVOID0gbmV3IEJOKDEwKTtcbnZhciBUSFJFRSA9IG5ldyBCTigzKTtcbnZhciBTRVZFTiA9IG5ldyBCTig3KTtcbnZhciBFTEVWRU4gPSBuZXcgQk4oMTEpO1xudmFyIEZPVVIgPSBuZXcgQk4oNCk7XG52YXIgVFdFTFZFID0gbmV3IEJOKDEyKTtcbnZhciBwcmltZXMgPSBudWxsO1xuXG5mdW5jdGlvbiBfZ2V0UHJpbWVzKCkge1xuICBpZiAocHJpbWVzICE9PSBudWxsKVxuICAgIHJldHVybiBwcmltZXM7XG5cbiAgdmFyIGxpbWl0ID0gMHgxMDAwMDA7XG4gIHZhciByZXMgPSBbXTtcbiAgcmVzWzBdID0gMjtcbiAgZm9yICh2YXIgaSA9IDEsIGsgPSAzOyBrIDwgbGltaXQ7IGsgKz0gMikge1xuICAgIHZhciBzcXJ0ID0gTWF0aC5jZWlsKE1hdGguc3FydChrKSk7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBpICYmIHJlc1tqXSA8PSBzcXJ0OyBqKyspXG4gICAgICBpZiAoayAlIHJlc1tqXSA9PT0gMClcbiAgICAgICAgYnJlYWs7XG5cbiAgICBpZiAoaSAhPT0gaiAmJiByZXNbal0gPD0gc3FydClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgcmVzW2krK10gPSBrO1xuICB9XG4gIHByaW1lcyA9IHJlcztcbiAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gc2ltcGxlU2lldmUocCkge1xuICB2YXIgcHJpbWVzID0gX2dldFByaW1lcygpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJpbWVzLmxlbmd0aDsgaSsrKVxuICAgIGlmIChwLm1vZG4ocHJpbWVzW2ldKSA9PT0gMCkge1xuICAgICAgaWYgKHAuY21wbihwcmltZXNbaV0pID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZmVybWF0VGVzdChwKSB7XG4gIHZhciByZWQgPSBCTi5tb250KHApO1xuICByZXR1cm4gVFdPLnRvUmVkKHJlZCkucmVkUG93KHAuc3VibigxKSkuZnJvbVJlZCgpLmNtcG4oMSkgPT09IDA7XG59XG5cbmZ1bmN0aW9uIGZpbmRQcmltZShiaXRzLCBnZW4pIHtcbiAgaWYgKGJpdHMgPCAxNikge1xuICAgIC8vIHRoaXMgaXMgd2hhdCBvcGVuc3NsIGRvZXNcbiAgICBpZiAoZ2VuID09PSAyIHx8IGdlbiA9PT0gNSkge1xuICAgICAgcmV0dXJuIG5ldyBCTihbMHg4YywgMHg3Yl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IEJOKFsweDhjLCAweDI3XSk7XG4gICAgfVxuICB9XG4gIGdlbiA9IG5ldyBCTihnZW4pO1xuXG4gIHZhciBudW0sIG4yO1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgbnVtID0gbmV3IEJOKHJhbmRvbUJ5dGVzKE1hdGguY2VpbChiaXRzIC8gOCkpKTtcbiAgICB3aGlsZSAobnVtLmJpdExlbmd0aCgpID4gYml0cykge1xuICAgICAgbnVtLmlzaHJuKDEpO1xuICAgIH1cbiAgICBpZiAobnVtLmlzRXZlbigpKSB7XG4gICAgICBudW0uaWFkZChPTkUpO1xuICAgIH1cbiAgICBpZiAoIW51bS50ZXN0bigxKSkge1xuICAgICAgbnVtLmlhZGQoVFdPKTtcbiAgICB9XG4gICAgaWYgKCFnZW4uY21wKFRXTykpIHtcbiAgICAgIHdoaWxlIChudW0ubW9kKFRXRU5UWUZPVVIpLmNtcChFTEVWRU4pKSB7XG4gICAgICAgIG51bS5pYWRkKEZPVVIpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWdlbi5jbXAoRklWRSkpIHtcbiAgICAgIHdoaWxlIChudW0ubW9kKFRFTikuY21wKFRIUkVFKSkge1xuICAgICAgICBudW0uaWFkZChGT1VSKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbjIgPSBudW0uc2hybigxKTtcbiAgICBpZiAoc2ltcGxlU2lldmUobjIpICYmIHNpbXBsZVNpZXZlKG51bSkgJiZcbiAgICAgIGZlcm1hdFRlc3QobjIpICYmIGZlcm1hdFRlc3QobnVtKSAmJlxuICAgICAgbWlsbGVyUmFiaW4udGVzdChuMikgJiYgbWlsbGVyUmFiaW4udGVzdChudW0pKSB7XG4gICAgICByZXR1cm4gbnVtO1xuICAgIH1cbiAgfVxuXG59XG4iLCIoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gVXRpbHNcbiAgZnVuY3Rpb24gYXNzZXJ0ICh2YWwsIG1zZykge1xuICAgIGlmICghdmFsKSB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG4gIH1cblxuICAvLyBDb3VsZCB1c2UgYGluaGVyaXRzYCBtb2R1bGUsIGJ1dCBkb24ndCB3YW50IHRvIG1vdmUgZnJvbSBzaW5nbGUgZmlsZVxuICAvLyBhcmNoaXRlY3R1cmUgeWV0LlxuICBmdW5jdGlvbiBpbmhlcml0cyAoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3I7XG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge307XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZTtcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpO1xuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvcjtcbiAgfVxuXG4gIC8vIEJOXG5cbiAgZnVuY3Rpb24gQk4gKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKEJOLmlzQk4obnVtYmVyKSkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB0aGlzLndvcmRzID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICAvLyBSZWR1Y3Rpb24gY29udGV4dFxuICAgIHRoaXMucmVkID0gbnVsbDtcblxuICAgIGlmIChudW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGlmIChiYXNlID09PSAnbGUnIHx8IGJhc2UgPT09ICdiZScpIHtcbiAgICAgICAgZW5kaWFuID0gYmFzZTtcbiAgICAgICAgYmFzZSA9IDEwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbml0KG51bWJlciB8fCAwLCBiYXNlIHx8IDEwLCBlbmRpYW4gfHwgJ2JlJyk7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gQk47XG4gIH0gZWxzZSB7XG4gICAgZXhwb3J0cy5CTiA9IEJOO1xuICB9XG5cbiAgQk4uQk4gPSBCTjtcbiAgQk4ud29yZFNpemUgPSAyNjtcblxuICB2YXIgQnVmZmVyO1xuICB0cnkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIEJ1ZmZlciA9IHdpbmRvdy5CdWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPCBudW1iZXIubGVuZ3RoKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gMTYpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VIZXgobnVtYmVyLCBzdGFydCwgZW5kaWFuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3BhcnNlQmFzZShudW1iZXIsIGJhc2UsIHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXROdW1iZXIgPSBmdW5jdGlvbiBfaW5pdE51bWJlciAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICBudW1iZXIgPSAtbnVtYmVyO1xuICAgIH1cbiAgICBpZiAobnVtYmVyIDwgMHg0MDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyBudW1iZXIgJiAweDNmZmZmZmYgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKG51bWJlciA8IDB4MTAwMDAwMDAwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmZcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChudW1iZXIgPCAweDIwMDAwMDAwMDAwMDAwKTsgLy8gMiBeIDUzICh1bnNhZmUpXG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmLFxuICAgICAgICAxXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAzO1xuICAgIH1cblxuICAgIGlmIChlbmRpYW4gIT09ICdsZScpIHJldHVybjtcblxuICAgIC8vIFJldmVyc2UgdGhlIGJ5dGVzXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdEFycmF5ID0gZnVuY3Rpb24gX2luaXRBcnJheSAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICAvLyBQZXJoYXBzIGEgVWludDhBcnJheVxuICAgIGFzc2VydCh0eXBlb2YgbnVtYmVyLmxlbmd0aCA9PT0gJ251bWJlcicpO1xuICAgIGlmIChudW1iZXIubGVuZ3RoIDw9IDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKG51bWJlci5sZW5ndGggLyAzKTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIHZhciBqLCB3O1xuICAgIHZhciBvZmYgPSAwO1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxLCBqID0gMDsgaSA+PSAwOyBpIC09IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSAtIDFdIDw8IDgpIHwgKG51bWJlcltpIC0gMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgKyAxXSA8PCA4KSB8IChudW1iZXJbaSArIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4NEJpdHMgKHN0cmluZywgaW5kZXgpIHtcbiAgICB2YXIgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAvLyAnQScgLSAnRidcbiAgICBpZiAoYyA+PSA2NSAmJiBjIDw9IDcwKSB7XG4gICAgICByZXR1cm4gYyAtIDU1O1xuICAgIC8vICdhJyAtICdmJ1xuICAgIH0gZWxzZSBpZiAoYyA+PSA5NyAmJiBjIDw9IDEwMikge1xuICAgICAgcmV0dXJuIGMgLSA4NztcbiAgICAvLyAnMCcgLSAnOSdcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChjIC0gNDgpICYgMHhmO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4Qnl0ZSAoc3RyaW5nLCBsb3dlckJvdW5kLCBpbmRleCkge1xuICAgIHZhciByID0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4KTtcbiAgICBpZiAoaW5kZXggLSAxID49IGxvd2VyQm91bmQpIHtcbiAgICAgIHIgfD0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4IC0gMSkgPDwgNDtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlSGV4ID0gZnVuY3Rpb24gX3BhcnNlSGV4IChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICAvLyAyNC1iaXRzIGNodW5rc1xuICAgIHZhciBvZmYgPSAwO1xuICAgIHZhciBqID0gMDtcblxuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyBpIC09IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFyc2VMZW5ndGggPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgICBmb3IgKGkgPSBwYXJzZUxlbmd0aCAlIDIgPT09IDAgPyBzdGFydCArIDEgOiBzdGFydDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlQmFzZSAoc3RyLCBzdGFydCwgZW5kLCBtdWwpIHtcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKHN0ci5sZW5ndGgsIGVuZCk7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBjID0gc3RyLmNoYXJDb2RlQXQoaSkgLSA0ODtcblxuICAgICAgciAqPSBtdWw7XG5cbiAgICAgIC8vICdhJ1xuICAgICAgaWYgKGMgPj0gNDkpIHtcbiAgICAgICAgciArPSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3KSB7XG4gICAgICAgIHIgKz0gYyAtIDE3ICsgMHhhO1xuXG4gICAgICAvLyAnMCcgLSAnOSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIgKz0gYztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlQmFzZSA9IGZ1bmN0aW9uIF9wYXJzZUJhc2UgKG51bWJlciwgYmFzZSwgc3RhcnQpIHtcbiAgICAvLyBJbml0aWFsaXplIGFzIHplcm9cbiAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuXG4gICAgLy8gRmluZCBsZW5ndGggb2YgbGltYiBpbiBiYXNlXG4gICAgZm9yICh2YXIgbGltYkxlbiA9IDAsIGxpbWJQb3cgPSAxOyBsaW1iUG93IDw9IDB4M2ZmZmZmZjsgbGltYlBvdyAqPSBiYXNlKSB7XG4gICAgICBsaW1iTGVuKys7XG4gICAgfVxuICAgIGxpbWJMZW4tLTtcbiAgICBsaW1iUG93ID0gKGxpbWJQb3cgLyBiYXNlKSB8IDA7XG5cbiAgICB2YXIgdG90YWwgPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgdmFyIG1vZCA9IHRvdGFsICUgbGltYkxlbjtcbiAgICB2YXIgZW5kID0gTWF0aC5taW4odG90YWwsIHRvdGFsIC0gbW9kKSArIHN0YXJ0O1xuXG4gICAgdmFyIHdvcmQgPSAwO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSBsaW1iTGVuKSB7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgaSArIGxpbWJMZW4sIGJhc2UpO1xuXG4gICAgICB0aGlzLmltdWxuKGxpbWJQb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2QgIT09IDApIHtcbiAgICAgIHZhciBwb3cgPSAxO1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIG51bWJlci5sZW5ndGgsIGJhc2UpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbW9kOyBpKyspIHtcbiAgICAgICAgcG93ICo9IGJhc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW11bG4ocG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5IChkZXN0KSB7XG4gICAgZGVzdC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXN0LndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICB9XG4gICAgZGVzdC5sZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICBkZXN0Lm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICBkZXN0LnJlZCA9IHRoaXMucmVkO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICB2YXIgciA9IG5ldyBCTihudWxsKTtcbiAgICB0aGlzLmNvcHkocik7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9leHBhbmQgPSBmdW5jdGlvbiBfZXhwYW5kIChzaXplKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgc2l6ZSkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFJlbW92ZSBsZWFkaW5nIGAwYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3RyaXAgPSBmdW5jdGlvbiBzdHJpcCAoKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoID4gMSAmJiB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fbm9ybVNpZ24gPSBmdW5jdGlvbiBfbm9ybVNpZ24gKCkge1xuICAgIC8vIC0wID0gMFxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICByZXR1cm4gKHRoaXMucmVkID8gJzxCTi1SOiAnIDogJzxCTjogJykgKyB0aGlzLnRvU3RyaW5nKDE2KSArICc+JztcbiAgfTtcblxuICAvKlxuXG4gIHZhciB6ZXJvcyA9IFtdO1xuICB2YXIgZ3JvdXBTaXplcyA9IFtdO1xuICB2YXIgZ3JvdXBCYXNlcyA9IFtdO1xuXG4gIHZhciBzID0gJyc7XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBCTi53b3JkU2l6ZSkge1xuICAgIHplcm9zW2ldID0gcztcbiAgICBzICs9ICcwJztcbiAgfVxuICBncm91cFNpemVzWzBdID0gMDtcbiAgZ3JvdXBTaXplc1sxXSA9IDA7XG4gIGdyb3VwQmFzZXNbMF0gPSAwO1xuICBncm91cEJhc2VzWzFdID0gMDtcbiAgdmFyIGJhc2UgPSAyIC0gMTtcbiAgd2hpbGUgKCsrYmFzZSA8IDM2ICsgMSkge1xuICAgIHZhciBncm91cFNpemUgPSAwO1xuICAgIHZhciBncm91cEJhc2UgPSAxO1xuICAgIHdoaWxlIChncm91cEJhc2UgPCAoMSA8PCBCTi53b3JkU2l6ZSkgLyBiYXNlKSB7XG4gICAgICBncm91cEJhc2UgKj0gYmFzZTtcbiAgICAgIGdyb3VwU2l6ZSArPSAxO1xuICAgIH1cbiAgICBncm91cFNpemVzW2Jhc2VdID0gZ3JvdXBTaXplO1xuICAgIGdyb3VwQmFzZXNbYmFzZV0gPSBncm91cEJhc2U7XG4gIH1cblxuICAqL1xuXG4gIHZhciB6ZXJvcyA9IFtcbiAgICAnJyxcbiAgICAnMCcsXG4gICAgJzAwJyxcbiAgICAnMDAwJyxcbiAgICAnMDAwMCcsXG4gICAgJzAwMDAwJyxcbiAgICAnMDAwMDAwJyxcbiAgICAnMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCdcbiAgXTtcblxuICB2YXIgZ3JvdXBTaXplcyA9IFtcbiAgICAwLCAwLFxuICAgIDI1LCAxNiwgMTIsIDExLCAxMCwgOSwgOCxcbiAgICA4LCA3LCA3LCA3LCA3LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1XG4gIF07XG5cbiAgdmFyIGdyb3VwQmFzZXMgPSBbXG4gICAgMCwgMCxcbiAgICAzMzU1NDQzMiwgNDMwNDY3MjEsIDE2Nzc3MjE2LCA0ODgyODEyNSwgNjA0NjYxNzYsIDQwMzUzNjA3LCAxNjc3NzIxNixcbiAgICA0MzA0NjcyMSwgMTAwMDAwMDAsIDE5NDg3MTcxLCAzNTgzMTgwOCwgNjI3NDg1MTcsIDc1Mjk1MzYsIDExMzkwNjI1LFxuICAgIDE2Nzc3MjE2LCAyNDEzNzU2OSwgMzQwMTIyMjQsIDQ3MDQ1ODgxLCA2NDAwMDAwMCwgNDA4NDEwMSwgNTE1MzYzMixcbiAgICA2NDM2MzQzLCA3OTYyNjI0LCA5NzY1NjI1LCAxMTg4MTM3NiwgMTQzNDg5MDcsIDE3MjEwMzY4LCAyMDUxMTE0OSxcbiAgICAyNDMwMDAwMCwgMjg2MjkxNTEsIDMzNTU0NDMyLCAzOTEzNTM5MywgNDU0MzU0MjQsIDUyNTIxODc1LCA2MDQ2NjE3NlxuICBdO1xuXG4gIEJOLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nIChiYXNlLCBwYWRkaW5nKSB7XG4gICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgcGFkZGluZyA9IHBhZGRpbmcgfCAwIHx8IDE7XG5cbiAgICB2YXIgb3V0O1xuICAgIGlmIChiYXNlID09PSAxNiB8fCBiYXNlID09PSAnaGV4Jykge1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgb2ZmID0gMDtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldO1xuICAgICAgICB2YXIgd29yZCA9ICgoKHcgPDwgb2ZmKSB8IGNhcnJ5KSAmIDB4ZmZmZmZmKS50b1N0cmluZygxNik7XG4gICAgICAgIGNhcnJ5ID0gKHcgPj4+ICgyNCAtIG9mZikpICYgMHhmZmZmZmY7XG4gICAgICAgIGlmIChjYXJyeSAhPT0gMCB8fCBpICE9PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1s2IC0gd29yZC5sZW5ndGhdICsgd29yZCArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSB3b3JkICsgb3V0O1xuICAgICAgICB9XG4gICAgICAgIG9mZiArPSAyO1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICAgIG91dCA9IGNhcnJ5LnRvU3RyaW5nKDE2KSArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KSB7XG4gICAgICAvLyB2YXIgZ3JvdXBTaXplID0gTWF0aC5mbG9vcihCTi53b3JkU2l6ZSAqIE1hdGguTE4yIC8gTWF0aC5sb2coYmFzZSkpO1xuICAgICAgdmFyIGdyb3VwU2l6ZSA9IGdyb3VwU2l6ZXNbYmFzZV07XG4gICAgICAvLyB2YXIgZ3JvdXBCYXNlID0gTWF0aC5wb3coYmFzZSwgZ3JvdXBTaXplKTtcbiAgICAgIHZhciBncm91cEJhc2UgPSBncm91cEJhc2VzW2Jhc2VdO1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgYyA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGMubmVnYXRpdmUgPSAwO1xuICAgICAgd2hpbGUgKCFjLmlzWmVybygpKSB7XG4gICAgICAgIHZhciByID0gYy5tb2RuKGdyb3VwQmFzZSkudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIGMgPSBjLmlkaXZuKGdyb3VwQmFzZSk7XG5cbiAgICAgICAgaWYgKCFjLmlzWmVybygpKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbZ3JvdXBTaXplIC0gci5sZW5ndGhdICsgciArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSByICsgb3V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBhc3NlcnQoZmFsc2UsICdCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Jyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvTnVtYmVyID0gZnVuY3Rpb24gdG9OdW1iZXIgKCkge1xuICAgIHZhciByZXQgPSB0aGlzLndvcmRzWzBdO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0ICs9IHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA9PT0gMyAmJiB0aGlzLndvcmRzWzJdID09PSAweDAxKSB7XG4gICAgICAvLyBOT1RFOiBhdCB0aGlzIHN0YWdlIGl0IGlzIGtub3duIHRoYXQgdGhlIHRvcCBiaXQgaXMgc2V0XG4gICAgICByZXQgKz0gMHgxMDAwMDAwMDAwMDAwMCArICh0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gMikge1xuICAgICAgYXNzZXJ0KGZhbHNlLCAnTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzJyk7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgPyAtcmV0IDogcmV0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKDE2KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9CdWZmZXIgPSBmdW5jdGlvbiB0b0J1ZmZlciAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpO1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEJ1ZmZlciwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gdG9BcnJheSAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5TGlrZSA9IGZ1bmN0aW9uIHRvQXJyYXlMaWtlIChBcnJheVR5cGUsIGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgdmFyIGJ5dGVMZW5ndGggPSB0aGlzLmJ5dGVMZW5ndGgoKTtcbiAgICB2YXIgcmVxTGVuZ3RoID0gbGVuZ3RoIHx8IE1hdGgubWF4KDEsIGJ5dGVMZW5ndGgpO1xuICAgIGFzc2VydChieXRlTGVuZ3RoIDw9IHJlcUxlbmd0aCwgJ2J5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgnKTtcbiAgICBhc3NlcnQocmVxTGVuZ3RoID4gMCwgJ1JlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCcpO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuICAgIHZhciBsaXR0bGVFbmRpYW4gPSBlbmRpYW4gPT09ICdsZSc7XG4gICAgdmFyIHJlcyA9IG5ldyBBcnJheVR5cGUocmVxTGVuZ3RoKTtcblxuICAgIHZhciBiLCBpO1xuICAgIHZhciBxID0gdGhpcy5jbG9uZSgpO1xuICAgIGlmICghbGl0dGxlRW5kaWFuKSB7XG4gICAgICAvLyBBc3N1bWUgYmlnLWVuZGlhblxuICAgICAgZm9yIChpID0gMDsgaSA8IHJlcUxlbmd0aCAtIGJ5dGVMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbcmVxTGVuZ3RoIC0gaSAtIDFdID0gYjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW2ldID0gYjtcbiAgICAgIH1cblxuICAgICAgZm9yICg7IGkgPCByZXFMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgaWYgKE1hdGguY2x6MzIpIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHJldHVybiAzMiAtIE1hdGguY2x6MzIodyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHZhciB0ID0gdztcbiAgICAgIHZhciByID0gMDtcbiAgICAgIGlmICh0ID49IDB4MTAwMCkge1xuICAgICAgICByICs9IDEzO1xuICAgICAgICB0ID4+Pj0gMTM7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDQwKSB7XG4gICAgICAgIHIgKz0gNztcbiAgICAgICAgdCA+Pj49IDc7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDgpIHtcbiAgICAgICAgciArPSA0O1xuICAgICAgICB0ID4+Pj0gNDtcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4MDIpIHtcbiAgICAgICAgciArPSAyO1xuICAgICAgICB0ID4+Pj0gMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByICsgdDtcbiAgICB9O1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl96ZXJvQml0cyA9IGZ1bmN0aW9uIF96ZXJvQml0cyAodykge1xuICAgIC8vIFNob3J0LWN1dFxuICAgIGlmICh3ID09PSAwKSByZXR1cm4gMjY7XG5cbiAgICB2YXIgdCA9IHc7XG4gICAgdmFyIHIgPSAwO1xuICAgIGlmICgodCAmIDB4MWZmZikgPT09IDApIHtcbiAgICAgIHIgKz0gMTM7XG4gICAgICB0ID4+Pj0gMTM7XG4gICAgfVxuICAgIGlmICgodCAmIDB4N2YpID09PSAwKSB7XG4gICAgICByICs9IDc7XG4gICAgICB0ID4+Pj0gNztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHhmKSA9PT0gMCkge1xuICAgICAgciArPSA0O1xuICAgICAgdCA+Pj49IDQ7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MykgPT09IDApIHtcbiAgICAgIHIgKz0gMjtcbiAgICAgIHQgPj4+PSAyO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDEpID09PSAwKSB7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIC8vIFJldHVybiBudW1iZXIgb2YgdXNlZCBiaXRzIGluIGEgQk5cbiAgQk4ucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uIGJpdExlbmd0aCAoKSB7XG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV07XG4gICAgdmFyIGhpID0gdGhpcy5fY291bnRCaXRzKHcpO1xuICAgIHJldHVybiAodGhpcy5sZW5ndGggLSAxKSAqIDI2ICsgaGk7XG4gIH07XG5cbiAgZnVuY3Rpb24gdG9CaXRBcnJheSAobnVtKSB7XG4gICAgdmFyIHcgPSBuZXcgQXJyYXkobnVtLmJpdExlbmd0aCgpKTtcblxuICAgIGZvciAodmFyIGJpdCA9IDA7IGJpdCA8IHcubGVuZ3RoOyBiaXQrKykge1xuICAgICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgICAgd1tiaXRdID0gKG51bS53b3Jkc1tvZmZdICYgKDEgPDwgd2JpdCkpID4+PiB3Yml0O1xuICAgIH1cblxuICAgIHJldHVybiB3O1xuICB9XG5cbiAgLy8gTnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0c1xuICBCTi5wcm90b3R5cGUuemVyb0JpdHMgPSBmdW5jdGlvbiB6ZXJvQml0cyAoKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiAwO1xuXG4gICAgdmFyIHIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGIgPSB0aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2ldKTtcbiAgICAgIHIgKz0gYjtcbiAgICAgIGlmIChiICE9PSAyNikgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ieXRlTGVuZ3RoID0gZnVuY3Rpb24gYnl0ZUxlbmd0aCAoKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpIC8gOCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvVHdvcyA9IGZ1bmN0aW9uIHRvVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWJzKCkuaW5vdG4od2lkdGgpLmlhZGRuKDEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tVHdvcyA9IGZ1bmN0aW9uIGZyb21Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLnRlc3RuKHdpZHRoIC0gMSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdG4od2lkdGgpLmlhZGRuKDEpLmluZWcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiBpc05lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmUgIT09IDA7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5lZyA9IGZ1bmN0aW9uIGluZWcgKCkge1xuICAgIGlmICghdGhpcy5pc1plcm8oKSkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdW9yID0gZnVuY3Rpb24gaXVvciAobnVtKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldIHwgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlvciA9IGZ1bmN0aW9uIGlvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVvcihudW0pO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pb3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVvciA9IGZ1bmN0aW9uIHVvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdWFuZCA9IGZ1bmN0aW9uIGl1YW5kIChudW0pIHtcbiAgICAvLyBiID0gbWluLWxlbmd0aChudW0sIHRoaXMpXG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSAmIG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGIubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFuZCA9IGZ1bmN0aW9uIGlhbmQgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1YW5kKG51bSk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiBhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYW5kKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51YW5kID0gZnVuY3Rpb24gdWFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdWFuZCh0aGlzKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1eG9yID0gZnVuY3Rpb24gaXV4b3IgKG51bSkge1xuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYTtcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldIF4gYi53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcyAhPT0gYSkge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5peG9yID0gZnVuY3Rpb24gaXhvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXV4b3IobnVtKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIHhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5peG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml4b3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnV4b3IgPSBmdW5jdGlvbiB1eG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1eG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1eG9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIE5vdCBgYHRoaXNgYCB3aXRoIGBgd2lkdGhgYCBiaXR3aWR0aFxuICBCTi5wcm90b3R5cGUuaW5vdG4gPSBmdW5jdGlvbiBpbm90biAod2lkdGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyAmJiB3aWR0aCA+PSAwKTtcblxuICAgIHZhciBieXRlc05lZWRlZCA9IE1hdGguY2VpbCh3aWR0aCAvIDI2KSB8IDA7XG4gICAgdmFyIGJpdHNMZWZ0ID0gd2lkdGggJSAyNjtcblxuICAgIC8vIEV4dGVuZCB0aGUgYnVmZmVyIHdpdGggbGVhZGluZyB6ZXJvZXNcbiAgICB0aGlzLl9leHBhbmQoYnl0ZXNOZWVkZWQpO1xuXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgYnl0ZXNOZWVkZWQtLTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgY29tcGxldGUgd29yZHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzTmVlZGVkOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIHJlc2lkdWVcbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAoMHgzZmZmZmZmID4+ICgyNiAtIGJpdHNMZWZ0KSk7XG4gICAgfVxuXG4gICAgLy8gQW5kIHJlbW92ZSBsZWFkaW5nIHplcm9lc1xuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm5vdG4gPSBmdW5jdGlvbiBub3RuICh3aWR0aCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5vdG4od2lkdGgpO1xuICB9O1xuXG4gIC8vIFNldCBgYml0YCBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNldG4gPSBmdW5jdGlvbiBzZXRuIChiaXQsIHZhbCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG5cbiAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgIHRoaXMuX2V4cGFuZChvZmYgKyAxKTtcblxuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSB8ICgxIDw8IHdiaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gJiB+KDEgPDwgd2JpdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAobnVtKSB7XG4gICAgdmFyIHI7XG5cbiAgICAvLyBuZWdhdGl2ZSArIHBvc2l0aXZlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gcG9zaXRpdmUgKyBuZWdhdGl2ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhLCBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAvLyBDb3B5IHRoZSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIH0gZWxzZSBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAobnVtKSB7XG4gICAgdmFyIHJlcztcbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwICYmIHRoaXMubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSB0aGlzLnN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSBpZiAobnVtLm5lZ2F0aXZlID09PSAwICYmIHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gbnVtLnN1Yih0aGlzKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGQobnVtKTtcblxuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYWRkKHRoaXMpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAobnVtKSB7XG4gICAgLy8gdGhpcyAtICgtbnVtKSA9IHRoaXMgKyBudW1cbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgdmFyIHIgPSB0aGlzLmlhZGQobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcblxuICAgIC8vIC10aGlzIC0gbnVtID0gLSh0aGlzICsgbnVtKVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGQobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlXG4gICAgdmFyIGNtcCA9IHRoaXMuY21wKG51bSk7XG5cbiAgICAvLyBPcHRpbWl6YXRpb24gLSB6ZXJvaWZ5XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIGEgPiBiXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGNtcCA+IDApIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSAtIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBDb3B5IHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgaWYgKGNhcnJ5ID09PSAwICYmIGkgPCBhLmxlbmd0aCAmJiBhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSk7XG5cbiAgICBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBzbWFsbE11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgdmFyIGxlbiA9IChzZWxmLmxlbmd0aCArIG51bS5sZW5ndGgpIHwgMDtcbiAgICBvdXQubGVuZ3RoID0gbGVuO1xuICAgIGxlbiA9IChsZW4gLSAxKSB8IDA7XG5cbiAgICAvLyBQZWVsIG9uZSBpdGVyYXRpb24gKGNvbXBpbGVyIGNhbid0IGRvIGl0LCBiZWNhdXNlIG9mIGNvZGUgY29tcGxleGl0eSlcbiAgICB2YXIgYSA9IHNlbGYud29yZHNbMF0gfCAwO1xuICAgIHZhciBiID0gbnVtLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICB2YXIgY2FycnkgPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgIG91dC53b3Jkc1swXSA9IGxvO1xuXG4gICAgZm9yICh2YXIgayA9IDE7IGsgPCBsZW47IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBjYXJyeSA+Pj4gMjY7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IChrIC0gaikgfCAwO1xuICAgICAgICBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICByID0gYSAqIGIgKyByd29yZDtcbiAgICAgICAgbmNhcnJ5ICs9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkIHwgMDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5IHwgMDtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeSB8IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICAvLyBUT0RPKGluZHV0bnkpOiBpdCBtYXkgYmUgcmVhc29uYWJsZSB0byBvbWl0IGl0IGZvciB1c2VycyB3aG8gZG9uJ3QgbmVlZFxuICAvLyB0byB3b3JrIHdpdGggMjU2LWJpdCBudW1iZXJzLCBvdGhlcndpc2UgaXQgZ2l2ZXMgMjAlIGltcHJvdmVtZW50IGZvciAyNTYtYml0XG4gIC8vIG11bHRpcGxpY2F0aW9uIChsaWtlIGVsbGlwdGljIHNlY3AyNTZrMSkuXG4gIHZhciBjb21iMTBNdWxUbyA9IGZ1bmN0aW9uIGNvbWIxME11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBhID0gc2VsZi53b3JkcztcbiAgICB2YXIgYiA9IG51bS53b3JkcztcbiAgICB2YXIgbyA9IG91dC53b3JkcztcbiAgICB2YXIgYyA9IDA7XG4gICAgdmFyIGxvO1xuICAgIHZhciBtaWQ7XG4gICAgdmFyIGhpO1xuICAgIHZhciBhMCA9IGFbMF0gfCAwO1xuICAgIHZhciBhbDAgPSBhMCAmIDB4MWZmZjtcbiAgICB2YXIgYWgwID0gYTAgPj4+IDEzO1xuICAgIHZhciBhMSA9IGFbMV0gfCAwO1xuICAgIHZhciBhbDEgPSBhMSAmIDB4MWZmZjtcbiAgICB2YXIgYWgxID0gYTEgPj4+IDEzO1xuICAgIHZhciBhMiA9IGFbMl0gfCAwO1xuICAgIHZhciBhbDIgPSBhMiAmIDB4MWZmZjtcbiAgICB2YXIgYWgyID0gYTIgPj4+IDEzO1xuICAgIHZhciBhMyA9IGFbM10gfCAwO1xuICAgIHZhciBhbDMgPSBhMyAmIDB4MWZmZjtcbiAgICB2YXIgYWgzID0gYTMgPj4+IDEzO1xuICAgIHZhciBhNCA9IGFbNF0gfCAwO1xuICAgIHZhciBhbDQgPSBhNCAmIDB4MWZmZjtcbiAgICB2YXIgYWg0ID0gYTQgPj4+IDEzO1xuICAgIHZhciBhNSA9IGFbNV0gfCAwO1xuICAgIHZhciBhbDUgPSBhNSAmIDB4MWZmZjtcbiAgICB2YXIgYWg1ID0gYTUgPj4+IDEzO1xuICAgIHZhciBhNiA9IGFbNl0gfCAwO1xuICAgIHZhciBhbDYgPSBhNiAmIDB4MWZmZjtcbiAgICB2YXIgYWg2ID0gYTYgPj4+IDEzO1xuICAgIHZhciBhNyA9IGFbN10gfCAwO1xuICAgIHZhciBhbDcgPSBhNyAmIDB4MWZmZjtcbiAgICB2YXIgYWg3ID0gYTcgPj4+IDEzO1xuICAgIHZhciBhOCA9IGFbOF0gfCAwO1xuICAgIHZhciBhbDggPSBhOCAmIDB4MWZmZjtcbiAgICB2YXIgYWg4ID0gYTggPj4+IDEzO1xuICAgIHZhciBhOSA9IGFbOV0gfCAwO1xuICAgIHZhciBhbDkgPSBhOSAmIDB4MWZmZjtcbiAgICB2YXIgYWg5ID0gYTkgPj4+IDEzO1xuICAgIHZhciBiMCA9IGJbMF0gfCAwO1xuICAgIHZhciBibDAgPSBiMCAmIDB4MWZmZjtcbiAgICB2YXIgYmgwID0gYjAgPj4+IDEzO1xuICAgIHZhciBiMSA9IGJbMV0gfCAwO1xuICAgIHZhciBibDEgPSBiMSAmIDB4MWZmZjtcbiAgICB2YXIgYmgxID0gYjEgPj4+IDEzO1xuICAgIHZhciBiMiA9IGJbMl0gfCAwO1xuICAgIHZhciBibDIgPSBiMiAmIDB4MWZmZjtcbiAgICB2YXIgYmgyID0gYjIgPj4+IDEzO1xuICAgIHZhciBiMyA9IGJbM10gfCAwO1xuICAgIHZhciBibDMgPSBiMyAmIDB4MWZmZjtcbiAgICB2YXIgYmgzID0gYjMgPj4+IDEzO1xuICAgIHZhciBiNCA9IGJbNF0gfCAwO1xuICAgIHZhciBibDQgPSBiNCAmIDB4MWZmZjtcbiAgICB2YXIgYmg0ID0gYjQgPj4+IDEzO1xuICAgIHZhciBiNSA9IGJbNV0gfCAwO1xuICAgIHZhciBibDUgPSBiNSAmIDB4MWZmZjtcbiAgICB2YXIgYmg1ID0gYjUgPj4+IDEzO1xuICAgIHZhciBiNiA9IGJbNl0gfCAwO1xuICAgIHZhciBibDYgPSBiNiAmIDB4MWZmZjtcbiAgICB2YXIgYmg2ID0gYjYgPj4+IDEzO1xuICAgIHZhciBiNyA9IGJbN10gfCAwO1xuICAgIHZhciBibDcgPSBiNyAmIDB4MWZmZjtcbiAgICB2YXIgYmg3ID0gYjcgPj4+IDEzO1xuICAgIHZhciBiOCA9IGJbOF0gfCAwO1xuICAgIHZhciBibDggPSBiOCAmIDB4MWZmZjtcbiAgICB2YXIgYmg4ID0gYjggPj4+IDEzO1xuICAgIHZhciBiOSA9IGJbOV0gfCAwO1xuICAgIHZhciBibDkgPSBiOSAmIDB4MWZmZjtcbiAgICB2YXIgYmg5ID0gYjkgPj4+IDEzO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0gc2VsZi5uZWdhdGl2ZSBeIG51bS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gMTk7XG4gICAgLyogayA9IDAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDAsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMCwgYmgwKTtcbiAgICB2YXIgdzAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcwID4+PiAyNikpIHwgMDtcbiAgICB3MCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDEsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDEpKSB8IDA7XG4gICAgdmFyIHcxID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MSA+Pj4gMjYpKSB8IDA7XG4gICAgdzEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwyLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDIsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDIsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMikpIHwgMDtcbiAgICB2YXIgdzIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcyID4+PiAyNikpIHwgMDtcbiAgICB3MiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDMsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMykpIHwgMDtcbiAgICB2YXIgdzMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHczID4+PiAyNikpIHwgMDtcbiAgICB3MyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDQsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDQpKSB8IDA7XG4gICAgdmFyIHc0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NCA+Pj4gMjYpKSB8IDA7XG4gICAgdzQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw1LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDUsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDUsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNSkpIHwgMDtcbiAgICB2YXIgdzUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc1ID4+PiAyNikpIHwgMDtcbiAgICB3NSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDYsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNikpIHwgMDtcbiAgICB2YXIgdzYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc2ID4+PiAyNikpIHwgMDtcbiAgICB3NiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDcsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDcpKSB8IDA7XG4gICAgdmFyIHc3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NyA+Pj4gMjYpKSB8IDA7XG4gICAgdzcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw4LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDgsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDgsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOCkpIHwgMDtcbiAgICB2YXIgdzggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc4ID4+PiAyNikpIHwgMDtcbiAgICB3OCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDkgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzkgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc5ID4+PiAyNikpIHwgMDtcbiAgICB3OSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDEpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTAgPj4+IDI2KSkgfCAwO1xuICAgIHcxMCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDExICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDIpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMSA+Pj4gMjYpKSB8IDA7XG4gICAgdzExICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgzKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwzKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgzKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTIgPj4+IDI2KSkgfCAwO1xuICAgIHcxMiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDQpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEzID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTMgPj4+IDI2KSkgfCAwO1xuICAgIHcxMyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDUpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg2KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw2KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg2KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTUgPj4+IDI2KSkgfCAwO1xuICAgIHcxNSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDcpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTYgPj4+IDI2KSkgfCAwO1xuICAgIHcxNiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDgpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNyA+Pj4gMjYpKSB8IDA7XG4gICAgdzE3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg5KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw5KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg5KTtcbiAgICB2YXIgdzE4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTggPj4+IDI2KSkgfCAwO1xuICAgIHcxOCAmPSAweDNmZmZmZmY7XG4gICAgb1swXSA9IHcwO1xuICAgIG9bMV0gPSB3MTtcbiAgICBvWzJdID0gdzI7XG4gICAgb1szXSA9IHczO1xuICAgIG9bNF0gPSB3NDtcbiAgICBvWzVdID0gdzU7XG4gICAgb1s2XSA9IHc2O1xuICAgIG9bN10gPSB3NztcbiAgICBvWzhdID0gdzg7XG4gICAgb1s5XSA9IHc5O1xuICAgIG9bMTBdID0gdzEwO1xuICAgIG9bMTFdID0gdzExO1xuICAgIG9bMTJdID0gdzEyO1xuICAgIG9bMTNdID0gdzEzO1xuICAgIG9bMTRdID0gdzE0O1xuICAgIG9bMTVdID0gdzE1O1xuICAgIG9bMTZdID0gdzE2O1xuICAgIG9bMTddID0gdzE3O1xuICAgIG9bMThdID0gdzE4O1xuICAgIGlmIChjICE9PSAwKSB7XG4gICAgICBvWzE5XSA9IGM7XG4gICAgICBvdXQubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH07XG5cbiAgLy8gUG9seWZpbGwgY29tYlxuICBpZiAoIU1hdGguaW11bCkge1xuICAgIGNvbWIxME11bFRvID0gc21hbGxNdWxUbztcbiAgfVxuXG4gIGZ1bmN0aW9uIGJpZ011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aDtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgdmFyIGhuY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb3V0Lmxlbmd0aCAtIDE7IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBobmNhcnJ5O1xuICAgICAgaG5jYXJyeSA9IDA7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IGsgLSBqO1xuICAgICAgICB2YXIgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICB2YXIgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHZhciByID0gYSAqIGI7XG5cbiAgICAgICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArICgociAvIDB4NDAwMDAwMCkgfCAwKSkgfCAwO1xuICAgICAgICBsbyA9IChsbyArIHJ3b3JkKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAobG8gPj4+IDI2KSkgfCAwO1xuXG4gICAgICAgIGhuY2FycnkgKz0gbmNhcnJ5ID4+PiAyNjtcbiAgICAgICAgbmNhcnJ5ICY9IDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkO1xuICAgICAgY2FycnkgPSBuY2Fycnk7XG4gICAgICBuY2FycnkgPSBobmNhcnJ5O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgZnVuY3Rpb24ganVtYm9NdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgZmZ0bSA9IG5ldyBGRlRNKCk7XG4gICAgcmV0dXJuIGZmdG0ubXVscChzZWxmLCBudW0sIG91dCk7XG4gIH1cblxuICBCTi5wcm90b3R5cGUubXVsVG8gPSBmdW5jdGlvbiBtdWxUbyAobnVtLCBvdXQpIHtcbiAgICB2YXIgcmVzO1xuICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCArIG51bS5sZW5ndGg7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxMCAmJiBudW0ubGVuZ3RoID09PSAxMCkge1xuICAgICAgcmVzID0gY29tYjEwTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgNjMpIHtcbiAgICAgIHJlcyA9IHNtYWxsTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgMTAyNCkge1xuICAgICAgcmVzID0gYmlnTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvb2xleS1UdWtleSBhbGdvcml0aG0gZm9yIEZGVFxuICAvLyBzbGlnaHRseSByZXZpc2l0ZWQgdG8gcmVseSBvbiBsb29waW5nIGluc3RlYWQgb2YgcmVjdXJzaW9uXG5cbiAgZnVuY3Rpb24gRkZUTSAoeCwgeSkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIEZGVE0ucHJvdG90eXBlLm1ha2VSQlQgPSBmdW5jdGlvbiBtYWtlUkJUIChOKSB7XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGwgPSBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyhOKSAtIDE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHRbaV0gPSB0aGlzLnJldkJpbihpLCBsLCBOKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGJpbmFyeS1yZXZlcnNlZCByZXByZXNlbnRhdGlvbiBvZiBgeGBcbiAgRkZUTS5wcm90b3R5cGUucmV2QmluID0gZnVuY3Rpb24gcmV2QmluICh4LCBsLCBOKSB7XG4gICAgaWYgKHggPT09IDAgfHwgeCA9PT0gTiAtIDEpIHJldHVybiB4O1xuXG4gICAgdmFyIHJiID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgcmIgfD0gKHggJiAxKSA8PCAobCAtIGkgLSAxKTtcbiAgICAgIHggPj49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJiO1xuICB9O1xuXG4gIC8vIFBlcmZvcm1zIFwidHdlZWRsaW5nXCIgcGhhc2UsIHRoZXJlZm9yZSAnZW11bGF0aW5nJ1xuICAvLyBiZWhhdmlvdXIgb2YgdGhlIHJlY3Vyc2l2ZSBhbGdvcml0aG1cbiAgRkZUTS5wcm90b3R5cGUucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUgKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcnR3c1tpXSA9IHJ3c1tyYnRbaV1dO1xuICAgICAgaXR3c1tpXSA9IGl3c1tyYnRbaV1dO1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiB0cmFuc2Zvcm0gKHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOLCByYnQpIHtcbiAgICB0aGlzLnBlcm11dGUocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTik7XG5cbiAgICBmb3IgKHZhciBzID0gMTsgcyA8IE47IHMgPDw9IDEpIHtcbiAgICAgIHZhciBsID0gcyA8PCAxO1xuXG4gICAgICB2YXIgcnR3ZGYgPSBNYXRoLmNvcygyICogTWF0aC5QSSAvIGwpO1xuICAgICAgdmFyIGl0d2RmID0gTWF0aC5zaW4oMiAqIE1hdGguUEkgLyBsKTtcblxuICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBOOyBwICs9IGwpIHtcbiAgICAgICAgdmFyIHJ0d2RmXyA9IHJ0d2RmO1xuICAgICAgICB2YXIgaXR3ZGZfID0gaXR3ZGY7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzOyBqKyspIHtcbiAgICAgICAgICB2YXIgcmUgPSBydHdzW3AgKyBqXTtcbiAgICAgICAgICB2YXIgaWUgPSBpdHdzW3AgKyBqXTtcblxuICAgICAgICAgIHZhciBybyA9IHJ0d3NbcCArIGogKyBzXTtcbiAgICAgICAgICB2YXIgaW8gPSBpdHdzW3AgKyBqICsgc107XG5cbiAgICAgICAgICB2YXIgcnggPSBydHdkZl8gKiBybyAtIGl0d2RmXyAqIGlvO1xuXG4gICAgICAgICAgaW8gPSBydHdkZl8gKiBpbyArIGl0d2RmXyAqIHJvO1xuICAgICAgICAgIHJvID0gcng7XG5cbiAgICAgICAgICBydHdzW3AgKyBqXSA9IHJlICsgcm87XG4gICAgICAgICAgaXR3c1twICsgal0gPSBpZSArIGlvO1xuXG4gICAgICAgICAgcnR3c1twICsgaiArIHNdID0gcmUgLSBybztcbiAgICAgICAgICBpdHdzW3AgKyBqICsgc10gPSBpZSAtIGlvO1xuXG4gICAgICAgICAgLyoganNoaW50IG1heGRlcHRoIDogZmFsc2UgKi9cbiAgICAgICAgICBpZiAoaiAhPT0gbCkge1xuICAgICAgICAgICAgcnggPSBydHdkZiAqIHJ0d2RmXyAtIGl0d2RmICogaXR3ZGZfO1xuXG4gICAgICAgICAgICBpdHdkZl8gPSBydHdkZiAqIGl0d2RmXyArIGl0d2RmICogcnR3ZGZfO1xuICAgICAgICAgICAgcnR3ZGZfID0gcng7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmd1ZXNzTGVuMTNiID0gZnVuY3Rpb24gZ3Vlc3NMZW4xM2IgKG4sIG0pIHtcbiAgICB2YXIgTiA9IE1hdGgubWF4KG0sIG4pIHwgMTtcbiAgICB2YXIgb2RkID0gTiAmIDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoTiA9IE4gLyAyIHwgMDsgTjsgTiA9IE4gPj4+IDEpIHtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICByZXR1cm4gMSA8PCBpICsgMSArIG9kZDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb25qdWdhdGUgPSBmdW5jdGlvbiBjb25qdWdhdGUgKHJ3cywgaXdzLCBOKSB7XG4gICAgaWYgKE4gPD0gMSkgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdCA9IHJ3c1tpXTtcblxuICAgICAgcndzW2ldID0gcndzW04gLSBpIC0gMV07XG4gICAgICByd3NbTiAtIGkgLSAxXSA9IHQ7XG5cbiAgICAgIHQgPSBpd3NbaV07XG5cbiAgICAgIGl3c1tpXSA9IC1pd3NbTiAtIGkgLSAxXTtcbiAgICAgIGl3c1tOIC0gaSAtIDFdID0gLXQ7XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm5vcm1hbGl6ZTEzYiA9IGZ1bmN0aW9uIG5vcm1hbGl6ZTEzYiAod3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHcgPSBNYXRoLnJvdW5kKHdzWzIgKiBpICsgMV0gLyBOKSAqIDB4MjAwMCArXG4gICAgICAgIE1hdGgucm91bmQod3NbMiAqIGldIC8gTikgK1xuICAgICAgICBjYXJyeTtcblxuICAgICAgd3NbaV0gPSB3ICYgMHgzZmZmZmZmO1xuXG4gICAgICBpZiAodyA8IDB4NDAwMDAwMCkge1xuICAgICAgICBjYXJyeSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJyeSA9IHcgLyAweDQwMDAwMDAgfCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB3cztcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb252ZXJ0MTNiID0gZnVuY3Rpb24gY29udmVydDEzYiAod3MsIGxlbiwgcndzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjYXJyeSA9IGNhcnJ5ICsgKHdzW2ldIHwgMCk7XG5cbiAgICAgIHJ3c1syICogaV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgICByd3NbMiAqIGkgKyAxXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICB9XG5cbiAgICAvLyBQYWQgd2l0aCB6ZXJvZXNcbiAgICBmb3IgKGkgPSAyICogbGVuOyBpIDwgTjsgKytpKSB7XG4gICAgICByd3NbaV0gPSAwO1xuICAgIH1cblxuICAgIGFzc2VydChjYXJyeSA9PT0gMCk7XG4gICAgYXNzZXJ0KChjYXJyeSAmIH4weDFmZmYpID09PSAwKTtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5zdHViID0gZnVuY3Rpb24gc3R1YiAoTikge1xuICAgIHZhciBwaCA9IG5ldyBBcnJheShOKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcGhbaV0gPSAwO1xuICAgIH1cblxuICAgIHJldHVybiBwaDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5tdWxwID0gZnVuY3Rpb24gbXVscCAoeCwgeSwgb3V0KSB7XG4gICAgdmFyIE4gPSAyICogdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCwgeS5sZW5ndGgpO1xuXG4gICAgdmFyIHJidCA9IHRoaXMubWFrZVJCVChOKTtcblxuICAgIHZhciBfID0gdGhpcy5zdHViKE4pO1xuXG4gICAgdmFyIHJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgcndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBucndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBucndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbml3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgcm13cyA9IG91dC53b3JkcztcbiAgICBybXdzLmxlbmd0aCA9IE47XG5cbiAgICB0aGlzLmNvbnZlcnQxM2IoeC53b3JkcywgeC5sZW5ndGgsIHJ3cywgTik7XG4gICAgdGhpcy5jb252ZXJ0MTNiKHkud29yZHMsIHkubGVuZ3RoLCBucndzLCBOKTtcblxuICAgIHRoaXMudHJhbnNmb3JtKHJ3cywgXywgcndzdCwgaXdzdCwgTiwgcmJ0KTtcbiAgICB0aGlzLnRyYW5zZm9ybShucndzLCBfLCBucndzdCwgbml3c3QsIE4sIHJidCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdmFyIHJ4ID0gcndzdFtpXSAqIG5yd3N0W2ldIC0gaXdzdFtpXSAqIG5pd3N0W2ldO1xuICAgICAgaXdzdFtpXSA9IHJ3c3RbaV0gKiBuaXdzdFtpXSArIGl3c3RbaV0gKiBucndzdFtpXTtcbiAgICAgIHJ3c3RbaV0gPSByeDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmp1Z2F0ZShyd3N0LCBpd3N0LCBOKTtcbiAgICB0aGlzLnRyYW5zZm9ybShyd3N0LCBpd3N0LCBybXdzLCBfLCBOLCByYnQpO1xuICAgIHRoaXMuY29uanVnYXRlKHJtd3MsIF8sIE4pO1xuICAgIHRoaXMubm9ybWFsaXplMTNiKHJtd3MsIE4pO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0geC5uZWdhdGl2ZSBeIHkubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHgubGVuZ3RoICsgeS5sZW5ndGg7XG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGB0aGlzYCBieSBgbnVtYFxuICBCTi5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiB0aGlzLm11bFRvKG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBlbXBsb3lpbmcgRkZUXG4gIEJOLnByb3RvdHlwZS5tdWxmID0gZnVuY3Rpb24gbXVsZiAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgTXVsdGlwbGljYXRpb25cbiAgQk4ucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKG51bSwgdGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmltdWxuID0gZnVuY3Rpb24gaW11bG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG5cbiAgICAvLyBDYXJyeVxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKiBudW07XG4gICAgICB2YXIgbG8gPSAodyAmIDB4M2ZmZmZmZikgKyAoY2FycnkgJiAweDNmZmZmZmYpO1xuICAgICAgY2FycnkgPj49IDI2O1xuICAgICAgY2FycnkgKz0gKHcgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgIC8vIE5PVEU6IGxvIGlzIDI3Yml0IG1heGltdW1cbiAgICAgIGNhcnJ5ICs9IGxvID4+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm11bG4gPSBmdW5jdGlvbiBtdWxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKG51bSk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLm11bCh0aGlzKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSk7XG4gIH07XG5cbiAgLy8gTWF0aC5wb3coYHRoaXNgLCBgbnVtYClcbiAgQk4ucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAobnVtKSB7XG4gICAgdmFyIHcgPSB0b0JpdEFycmF5KG51bSk7XG4gICAgaWYgKHcubGVuZ3RoID09PSAwKSByZXR1cm4gbmV3IEJOKDEpO1xuXG4gICAgLy8gU2tpcCBsZWFkaW5nIHplcm9lc1xuICAgIHZhciByZXMgPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdy5sZW5ndGg7IGkrKywgcmVzID0gcmVzLnNxcigpKSB7XG4gICAgICBpZiAod1tpXSAhPT0gMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKCsraSA8IHcubGVuZ3RoKSB7XG4gICAgICBmb3IgKHZhciBxID0gcmVzLnNxcigpOyBpIDwgdy5sZW5ndGg7IGkrKywgcSA9IHEuc3FyKCkpIHtcbiAgICAgICAgaWYgKHdbaV0gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHJlcy5tdWwocSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0IGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXNobG4gPSBmdW5jdGlvbiBpdXNobG4gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG4gICAgdmFyIGNhcnJ5TWFzayA9ICgweDNmZmZmZmYgPj4+ICgyNiAtIHIpKSA8PCAoMjYgLSByKTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbmV3Q2FycnkgPSB0aGlzLndvcmRzW2ldICYgY2FycnlNYXNrO1xuICAgICAgICB2YXIgYyA9ICgodGhpcy53b3Jkc1tpXSB8IDApIC0gbmV3Q2FycnkpIDw8IHI7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjIHwgY2Fycnk7XG4gICAgICAgIGNhcnJ5ID0gbmV3Q2FycnkgPj4+ICgyNiAtIHIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2FycnkpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzICE9PSAwKSB7XG4gICAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIHNdID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggKz0gcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hsbiA9IGZ1bmN0aW9uIGlzaGxuIChiaXRzKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodCBpbi1wbGFjZVxuICAvLyBOT1RFOiBgaGludGAgaXMgYSBsb3dlc3QgYml0IGJlZm9yZSB0cmFpbGluZyB6ZXJvZXNcbiAgLy8gTk9URTogaWYgYGV4dGVuZGVkYCBpcyBwcmVzZW50IC0gaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBkZXN0cm95ZWQgYml0c1xuICBCTi5wcm90b3R5cGUuaXVzaHJuID0gZnVuY3Rpb24gaXVzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgaDtcbiAgICBpZiAoaGludCkge1xuICAgICAgaCA9IChoaW50IC0gKGhpbnQgJSAyNikpIC8gMjY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGggPSAwO1xuICAgIH1cblxuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gTWF0aC5taW4oKGJpdHMgLSByKSAvIDI2LCB0aGlzLmxlbmd0aCk7XG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgdmFyIG1hc2tlZFdvcmRzID0gZXh0ZW5kZWQ7XG5cbiAgICBoIC09IHM7XG4gICAgaCA9IE1hdGgubWF4KDAsIGgpO1xuXG4gICAgLy8gRXh0ZW5kZWQgbW9kZSwgY29weSBtYXNrZWQgcGFydFxuICAgIGlmIChtYXNrZWRXb3Jkcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgbWFza2VkV29yZHMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuICAgICAgbWFza2VkV29yZHMubGVuZ3RoID0gcztcbiAgICB9XG5cbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgLy8gTm8tb3AsIHdlIHNob3VsZCBub3QgbW92ZSBhbnl0aGluZyBhdCBhbGxcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gcykge1xuICAgICAgdGhpcy5sZW5ndGggLT0gcztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2kgKyBzXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiAoY2FycnkgIT09IDAgfHwgaSA+PSBoKTsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IChjYXJyeSA8PCAoMjYgLSByKSkgfCAod29yZCA+Pj4gcik7XG4gICAgICBjYXJyeSA9IHdvcmQgJiBtYXNrO1xuICAgIH1cblxuICAgIC8vIFB1c2ggY2FycmllZCBiaXRzIGFzIGEgbWFza1xuICAgIGlmIChtYXNrZWRXb3JkcyAmJiBjYXJyeSAhPT0gMCkge1xuICAgICAgbWFza2VkV29yZHMud29yZHNbbWFza2VkV29yZHMubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hybiA9IGZ1bmN0aW9uIGlzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNocm4oYml0cywgaGludCwgZXh0ZW5kZWQpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnRcbiAgQk4ucHJvdG90eXBlLnNobG4gPSBmdW5jdGlvbiBzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNobG4gPSBmdW5jdGlvbiB1c2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0XG4gIEJOLnByb3RvdHlwZS5zaHJuID0gZnVuY3Rpb24gc2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaHJuID0gZnVuY3Rpb24gdXNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiaXRzKTtcbiAgfTtcblxuICAvLyBUZXN0IGlmIG4gYml0IGlzIHNldFxuICBCTi5wcm90b3R5cGUudGVzdG4gPSBmdW5jdGlvbiB0ZXN0biAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBiaXQgYW5kIHJldHVyblxuICAgIHZhciB3ID0gdGhpcy53b3Jkc1tzXTtcblxuICAgIHJldHVybiAhISh3ICYgcSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyIChpbi1wbGFjZSlcbiAgQk4ucHJvdG90eXBlLmltYXNrbiA9IGZ1bmN0aW9uIGltYXNrbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcblxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAnaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzJyk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHMrKztcbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1pbihzLCB0aGlzLmxlbmd0aCk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gJj0gbWFzaztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlclxuICBCTi5wcm90b3R5cGUubWFza24gPSBmdW5jdGlvbiBtYXNrbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGJpdHMpO1xuICB9O1xuXG4gIC8vIEFkZCBwbGFpbiBudW1iZXIgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pYWRkbiA9IGZ1bmN0aW9uIGlhZGRuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pc3VibigtbnVtKTtcblxuICAgIC8vIFBvc3NpYmxlIHNpZ24gY2hhbmdlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiAodGhpcy53b3Jkc1swXSB8IDApIDwgbnVtKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gPSBudW0gLSAodGhpcy53b3Jkc1swXSB8IDApO1xuICAgICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pc3VibihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aG91dCBjaGVja3NcbiAgICByZXR1cm4gdGhpcy5faWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lhZGRuID0gZnVuY3Rpb24gX2lhZGRuIChudW0pIHtcbiAgICB0aGlzLndvcmRzWzBdICs9IG51bTtcblxuICAgIC8vIENhcnJ5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldID49IDB4NDAwMDAwMDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldIC09IDB4NDAwMDAwMDtcbiAgICAgIGlmIChpID09PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0rKztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSArIDEpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgcGxhaW4gbnVtYmVyIGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pc3VibiA9IGZ1bmN0aW9uIGlzdWJuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pYWRkbigtbnVtKTtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZG4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy53b3Jkc1swXSAtPSBudW07XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA8IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAtdGhpcy53b3Jkc1swXTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDYXJyeVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldIDwgMDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gKz0gMHg0MDAwMDAwO1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSAtPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFkZG4gPSBmdW5jdGlvbiBhZGRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnN1Ym4gPSBmdW5jdGlvbiBzdWJuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhYnMgPSBmdW5jdGlvbiBpYWJzICgpIHtcbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiBhYnMgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFicygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faXNobG5zdWJtdWwgPSBmdW5jdGlvbiBfaXNobG5zdWJtdWwgKG51bSwgbXVsLCBzaGlmdCkge1xuICAgIHZhciBsZW4gPSBudW0ubGVuZ3RoICsgc2hpZnQ7XG4gICAgdmFyIGk7XG5cbiAgICB0aGlzLl9leHBhbmQobGVuKTtcblxuICAgIHZhciB3O1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgdmFyIHJpZ2h0ID0gKG51bS53b3Jkc1tpXSB8IDApICogbXVsO1xuICAgICAgdyAtPSByaWdodCAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gKHcgPj4gMjYpIC0gKChyaWdodCAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBpIDwgdGhpcy5sZW5ndGggLSBzaGlmdDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSA9PT0gMCkgcmV0dXJuIHRoaXMuc3RyaXAoKTtcblxuICAgIC8vIFN1YnRyYWN0aW9uIG92ZXJmbG93XG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAtMSk7XG4gICAgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gLSh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICB0aGlzLm5lZ2F0aXZlID0gMTtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl93b3JkRGl2ID0gZnVuY3Rpb24gX3dvcmREaXYgKG51bSwgbW9kZSkge1xuICAgIHZhciBzaGlmdCA9IHRoaXMubGVuZ3RoIC0gbnVtLmxlbmd0aDtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtO1xuXG4gICAgLy8gTm9ybWFsaXplXG4gICAgdmFyIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgdmFyIGJoaUJpdHMgPSB0aGlzLl9jb3VudEJpdHMoYmhpKTtcbiAgICBzaGlmdCA9IDI2IC0gYmhpQml0cztcbiAgICBpZiAoc2hpZnQgIT09IDApIHtcbiAgICAgIGIgPSBiLnVzaGxuKHNoaWZ0KTtcbiAgICAgIGEuaXVzaGxuKHNoaWZ0KTtcbiAgICAgIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBxdW90aWVudFxuICAgIHZhciBtID0gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAgICB2YXIgcTtcblxuICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgcSA9IG5ldyBCTihudWxsKTtcbiAgICAgIHEubGVuZ3RoID0gbSArIDE7XG4gICAgICBxLndvcmRzID0gbmV3IEFycmF5KHEubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcS5sZW5ndGg7IGkrKykge1xuICAgICAgICBxLndvcmRzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGlmZiA9IGEuY2xvbmUoKS5faXNobG5zdWJtdWwoYiwgMSwgbSk7XG4gICAgaWYgKGRpZmYubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIGEgPSBkaWZmO1xuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1ttXSA9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IG0gLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgdmFyIHFqID0gKGEud29yZHNbYi5sZW5ndGggKyBqXSB8IDApICogMHg0MDAwMDAwICtcbiAgICAgICAgKGEud29yZHNbYi5sZW5ndGggKyBqIC0gMV0gfCAwKTtcblxuICAgICAgLy8gTk9URTogKHFqIC8gYmhpKSBpcyAoMHgzZmZmZmZmICogMHg0MDAwMDAwICsgMHgzZmZmZmZmKSAvIDB4MjAwMDAwMCBtYXhcbiAgICAgIC8vICgweDdmZmZmZmYpXG4gICAgICBxaiA9IE1hdGgubWluKChxaiAvIGJoaSkgfCAwLCAweDNmZmZmZmYpO1xuXG4gICAgICBhLl9pc2hsbnN1Ym11bChiLCBxaiwgaik7XG4gICAgICB3aGlsZSAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBxai0tO1xuICAgICAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgYS5faXNobG5zdWJtdWwoYiwgMSwgaik7XG4gICAgICAgIGlmICghYS5pc1plcm8oKSkge1xuICAgICAgICAgIGEubmVnYXRpdmUgXj0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1tqXSA9IHFqO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocSkge1xuICAgICAgcS5zdHJpcCgpO1xuICAgIH1cbiAgICBhLnN0cmlwKCk7XG5cbiAgICAvLyBEZW5vcm1hbGl6ZVxuICAgIGlmIChtb2RlICE9PSAnZGl2JyAmJiBzaGlmdCAhPT0gMCkge1xuICAgICAgYS5pdXNocm4oc2hpZnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaXY6IHEgfHwgbnVsbCxcbiAgICAgIG1vZDogYVxuICAgIH07XG4gIH07XG5cbiAgLy8gTk9URTogMSkgYG1vZGVgIGNhbiBiZSBzZXQgdG8gYG1vZGAgdG8gcmVxdWVzdCBtb2Qgb25seSxcbiAgLy8gICAgICAgdG8gYGRpdmAgdG8gcmVxdWVzdCBkaXYgb25seSwgb3IgYmUgYWJzZW50IHRvXG4gIC8vICAgICAgIHJlcXVlc3QgYm90aCBkaXYgJiBtb2RcbiAgLy8gICAgICAgMikgYHBvc2l0aXZlYCBpcyB0cnVlIGlmIHVuc2lnbmVkIG1vZCBpcyByZXF1ZXN0ZWRcbiAgQk4ucHJvdG90eXBlLmRpdm1vZCA9IGZ1bmN0aW9uIGRpdm1vZCAobnVtLCBtb2RlLCBwb3NpdGl2ZSkge1xuICAgIGFzc2VydCghbnVtLmlzWmVybygpKTtcblxuICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiBuZXcgQk4oMClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRpdiwgbW9kLCByZXM7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0sIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaWFkZChudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiByZXMubW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICgodGhpcy5uZWdhdGl2ZSAmIG51bS5uZWdhdGl2ZSkgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlzdWIobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHJlcy5kaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmUgYXQgdGhpcyBwb2ludFxuXG4gICAgLy8gU3RyaXAgYm90aCBudW1iZXJzIHRvIGFwcHJveGltYXRlIHNoaWZ0IHZhbHVlXG4gICAgaWYgKG51bS5sZW5ndGggPiB0aGlzLmxlbmd0aCB8fCB0aGlzLmNtcChudW0pIDwgMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogdGhpc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBWZXJ5IHNob3J0IHJlZHVjdGlvblxuICAgIGlmIChudW0ubGVuZ3RoID09PSAxKSB7XG4gICAgICBpZiAobW9kZSA9PT0gJ2RpdicpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICAgIG1vZDogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSA9PT0gJ21vZCcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IG51bGwsXG4gICAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd29yZERpdihudW0sIG1vZGUpO1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgIC8gYG51bWBcbiAgQk4ucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uIGRpdiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ2RpdicsIGZhbHNlKS5kaXY7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgJSBgbnVtYFxuICBCTi5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgZmFsc2UpLm1vZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW1vZCA9IGZ1bmN0aW9uIHVtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCB0cnVlKS5tb2Q7XG4gIH07XG5cbiAgLy8gRmluZCBSb3VuZChgdGhpc2AgLyBgbnVtYClcbiAgQk4ucHJvdG90eXBlLmRpdlJvdW5kID0gZnVuY3Rpb24gZGl2Um91bmQgKG51bSkge1xuICAgIHZhciBkbSA9IHRoaXMuZGl2bW9kKG51bSk7XG5cbiAgICAvLyBGYXN0IGNhc2UgLSBleGFjdCBkaXZpc2lvblxuICAgIGlmIChkbS5tb2QuaXNaZXJvKCkpIHJldHVybiBkbS5kaXY7XG5cbiAgICB2YXIgbW9kID0gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0ubW9kLmlzdWIobnVtKSA6IGRtLm1vZDtcblxuICAgIHZhciBoYWxmID0gbnVtLnVzaHJuKDEpO1xuICAgIHZhciByMiA9IG51bS5hbmRsbigxKTtcbiAgICB2YXIgY21wID0gbW9kLmNtcChoYWxmKTtcblxuICAgIC8vIFJvdW5kIGRvd25cbiAgICBpZiAoY21wIDwgMCB8fCByMiA9PT0gMSAmJiBjbXAgPT09IDApIHJldHVybiBkbS5kaXY7XG5cbiAgICAvLyBSb3VuZCB1cFxuICAgIHJldHVybiBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5kaXYuaXN1Ym4oMSkgOiBkbS5kaXYuaWFkZG4oMSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm1vZG4gPSBmdW5jdGlvbiBtb2RuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG4gICAgdmFyIHAgPSAoMSA8PCAyNikgJSBudW07XG5cbiAgICB2YXIgYWNjID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgYWNjID0gKHAgKiBhY2MgKyAodGhpcy53b3Jkc1tpXSB8IDApKSAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIGRpdmlzaW9uIGJ5IG51bWJlclxuICBCTi5wcm90b3R5cGUuaWRpdm4gPSBmdW5jdGlvbiBpZGl2biAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICsgY2FycnkgKiAweDQwMDAwMDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKHcgLyBudW0pIHwgMDtcbiAgICAgIGNhcnJ5ID0gdyAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5kaXZuID0gZnVuY3Rpb24gZGl2biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lZ2NkID0gZnVuY3Rpb24gZWdjZCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIHggPSB0aGlzO1xuICAgIHZhciB5ID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKHgubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHggPSB4LnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHggPSB4LmNsb25lKCk7XG4gICAgfVxuXG4gICAgLy8gQSAqIHggKyBCICogeSA9IHhcbiAgICB2YXIgQSA9IG5ldyBCTigxKTtcbiAgICB2YXIgQiA9IG5ldyBCTigwKTtcblxuICAgIC8vIEMgKiB4ICsgRCAqIHkgPSB5XG4gICAgdmFyIEMgPSBuZXcgQk4oMCk7XG4gICAgdmFyIEQgPSBuZXcgQk4oMSk7XG5cbiAgICB2YXIgZyA9IDA7XG5cbiAgICB3aGlsZSAoeC5pc0V2ZW4oKSAmJiB5LmlzRXZlbigpKSB7XG4gICAgICB4Lml1c2hybigxKTtcbiAgICAgIHkuaXVzaHJuKDEpO1xuICAgICAgKytnO1xuICAgIH1cblxuICAgIHZhciB5cCA9IHkuY2xvbmUoKTtcbiAgICB2YXIgeHAgPSB4LmNsb25lKCk7XG5cbiAgICB3aGlsZSAoIXguaXNaZXJvKCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7ICh4LndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgeC5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEEuaXNPZGQoKSB8fCBCLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEEuaWFkZCh5cCk7XG4gICAgICAgICAgICBCLmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEEuaXVzaHJuKDEpO1xuICAgICAgICAgIEIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7ICh5LndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgeS5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEMuaXNPZGQoKSB8fCBELmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEMuaWFkZCh5cCk7XG4gICAgICAgICAgICBELmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEMuaXVzaHJuKDEpO1xuICAgICAgICAgIEQuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh4LmNtcCh5KSA+PSAwKSB7XG4gICAgICAgIHguaXN1Yih5KTtcbiAgICAgICAgQS5pc3ViKEMpO1xuICAgICAgICBCLmlzdWIoRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5LmlzdWIoeCk7XG4gICAgICAgIEMuaXN1YihBKTtcbiAgICAgICAgRC5pc3ViKEIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhOiBDLFxuICAgICAgYjogRCxcbiAgICAgIGdjZDogeS5pdXNobG4oZylcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRoaXMgaXMgcmVkdWNlZCBpbmNhcm5hdGlvbiBvZiB0aGUgYmluYXJ5IEVFQVxuICAvLyBhYm92ZSwgZGVzaWduYXRlZCB0byBpbnZlcnQgbWVtYmVycyBvZiB0aGVcbiAgLy8gX3ByaW1lXyBmaWVsZHMgRihwKSBhdCBhIG1heGltYWwgc3BlZWRcbiAgQk4ucHJvdG90eXBlLl9pbnZtcCA9IGZ1bmN0aW9uIF9pbnZtcCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIGEgPSB0aGlzO1xuICAgIHZhciBiID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGEgPSBhLnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICAgIHZhciB4MiA9IG5ldyBCTigwKTtcblxuICAgIHZhciBkZWx0YSA9IGIuY2xvbmUoKTtcblxuICAgIHdoaWxlIChhLmNtcG4oMSkgPiAwICYmIGIuY21wbigxKSA+IDApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7IChhLndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgYS5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgxLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgxLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgxLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoYi53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIGIuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmICh4Mi5pc09kZCgpKSB7XG4gICAgICAgICAgICB4Mi5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4Mi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGEuY21wKGIpID49IDApIHtcbiAgICAgICAgYS5pc3ViKGIpO1xuICAgICAgICB4MS5pc3ViKHgyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGIuaXN1YihhKTtcbiAgICAgICAgeDIuaXN1Yih4MSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlcztcbiAgICBpZiAoYS5jbXBuKDEpID09PSAwKSB7XG4gICAgICByZXMgPSB4MTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0geDI7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQocCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ2NkID0gZnVuY3Rpb24gZ2NkIChudW0pIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIG51bS5hYnMoKTtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gdGhpcy5hYnMoKTtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtLmNsb25lKCk7XG4gICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgYi5uZWdhdGl2ZSA9IDA7XG5cbiAgICAvLyBSZW1vdmUgY29tbW9uIGZhY3RvciBvZiB0d29cbiAgICBmb3IgKHZhciBzaGlmdCA9IDA7IGEuaXNFdmVuKCkgJiYgYi5pc0V2ZW4oKTsgc2hpZnQrKykge1xuICAgICAgYS5pdXNocm4oMSk7XG4gICAgICBiLml1c2hybigxKTtcbiAgICB9XG5cbiAgICBkbyB7XG4gICAgICB3aGlsZSAoYS5pc0V2ZW4oKSkge1xuICAgICAgICBhLml1c2hybigxKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgIGIuaXVzaHJuKDEpO1xuICAgICAgfVxuXG4gICAgICB2YXIgciA9IGEuY21wKGIpO1xuICAgICAgaWYgKHIgPCAwKSB7XG4gICAgICAgIC8vIFN3YXAgYGFgIGFuZCBgYmAgdG8gbWFrZSBgYWAgYWx3YXlzIGJpZ2dlciB0aGFuIGBiYFxuICAgICAgICB2YXIgdCA9IGE7XG4gICAgICAgIGEgPSBiO1xuICAgICAgICBiID0gdDtcbiAgICAgIH0gZWxzZSBpZiAociA9PT0gMCB8fCBiLmNtcG4oMSkgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGEuaXN1YihiKTtcbiAgICB9IHdoaWxlICh0cnVlKTtcblxuICAgIHJldHVybiBiLml1c2hsbihzaGlmdCk7XG4gIH07XG5cbiAgLy8gSW52ZXJ0IG51bWJlciBpbiB0aGUgZmllbGQgRihudW0pXG4gIEJOLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZWdjZChudW0pLmEudW1vZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiBpc0V2ZW4gKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uIGlzT2RkICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMTtcbiAgfTtcblxuICAvLyBBbmQgZmlyc3Qgd29yZCBhbmQgbnVtXG4gIEJOLnByb3RvdHlwZS5hbmRsbiA9IGZ1bmN0aW9uIGFuZGxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkc1swXSAmIG51bTtcbiAgfTtcblxuICAvLyBJbmNyZW1lbnQgYXQgdGhlIGJpdCBwb3NpdGlvbiBpbi1saW5lXG4gIEJOLnByb3RvdHlwZS5iaW5jbiA9IGZ1bmN0aW9uIGJpbmNuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicpO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHRoaXMuX2V4cGFuZChzICsgMSk7XG4gICAgICB0aGlzLndvcmRzW3NdIHw9IHE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgYml0IGFuZCBwcm9wYWdhdGUsIGlmIG5lZWRlZFxuICAgIHZhciBjYXJyeSA9IHE7XG4gICAgZm9yICh2YXIgaSA9IHM7IGNhcnJ5ICE9PSAwICYmIGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdyArPSBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+Pj4gMjY7XG4gICAgICB3ICY9IDB4M2ZmZmZmZjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiBpc1plcm8gKCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbXBuID0gZnVuY3Rpb24gY21wbiAobnVtKSB7XG4gICAgdmFyIG5lZ2F0aXZlID0gbnVtIDwgMDtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmICFuZWdhdGl2ZSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG5lZ2F0aXZlKSByZXR1cm4gMTtcblxuICAgIHRoaXMuc3RyaXAoKTtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gMSkge1xuICAgICAgcmVzID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5lZ2F0aXZlKSB7XG4gICAgICAgIG51bSA9IC1udW07XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmLCAnTnVtYmVyIGlzIHRvbyBiaWcnKTtcblxuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzWzBdIHwgMDtcbiAgICAgIHJlcyA9IHcgPT09IG51bSA/IDAgOiB3IDwgbnVtID8gLTEgOiAxO1xuICAgIH1cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29tcGFyZSB0d28gbnVtYmVycyBhbmQgcmV0dXJuOlxuICAvLyAxIC0gaWYgYHRoaXNgID4gYG51bWBcbiAgLy8gMCAtIGlmIGB0aGlzYCA9PSBgbnVtYFxuICAvLyAtMSAtIGlmIGB0aGlzYCA8IGBudW1gXG4gIEJOLnByb3RvdHlwZS5jbXAgPSBmdW5jdGlvbiBjbXAgKG51bSkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIDE7XG5cbiAgICB2YXIgcmVzID0gdGhpcy51Y21wKG51bSk7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFVuc2lnbmVkIGNvbXBhcmlzb25cbiAgQk4ucHJvdG90eXBlLnVjbXAgPSBmdW5jdGlvbiB1Y21wIChudW0pIHtcbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBoYXZlIHRoZSBzYW1lIHNpZ25cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSByZXR1cm4gLTE7XG5cbiAgICB2YXIgcmVzID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGEgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHZhciBiID0gbnVtLndvcmRzW2ldIHwgMDtcblxuICAgICAgaWYgKGEgPT09IGIpIGNvbnRpbnVlO1xuICAgICAgaWYgKGEgPCBiKSB7XG4gICAgICAgIHJlcyA9IC0xO1xuICAgICAgfSBlbHNlIGlmIChhID4gYikge1xuICAgICAgICByZXMgPSAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0biA9IGZ1bmN0aW9uIGd0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndCA9IGZ1bmN0aW9uIGd0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlbiA9IGZ1bmN0aW9uIGd0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGUgPSBmdW5jdGlvbiBndGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0biA9IGZ1bmN0aW9uIGx0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHQgPSBmdW5jdGlvbiBsdCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGVuID0gZnVuY3Rpb24gbHRlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZSA9IGZ1bmN0aW9uIGx0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXFuID0gZnVuY3Rpb24gZXFuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAwO1xuICB9O1xuXG4gIC8vXG4gIC8vIEEgcmVkdWNlIGNvbnRleHQsIGNvdWxkIGJlIHVzaW5nIG1vbnRnb21lcnkgb3Igc29tZXRoaW5nIGJldHRlciwgZGVwZW5kaW5nXG4gIC8vIG9uIHRoZSBgbWAgaXRzZWxmLlxuICAvL1xuICBCTi5yZWQgPSBmdW5jdGlvbiByZWQgKG51bSkge1xuICAgIHJldHVybiBuZXcgUmVkKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvUmVkID0gZnVuY3Rpb24gdG9SZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIHJldHVybiBjdHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tUmVkID0gZnVuY3Rpb24gZnJvbVJlZCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAnZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2ZvcmNlUmVkID0gZnVuY3Rpb24gX2ZvcmNlUmVkIChjdHgpIHtcbiAgICB0aGlzLnJlZCA9IGN0eDtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZm9yY2VSZWQgPSBmdW5jdGlvbiBmb3JjZVJlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkQWRkID0gZnVuY3Rpb24gcmVkQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJQWRkID0gZnVuY3Rpb24gcmVkSUFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaWFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTdWIgPSBmdW5jdGlvbiByZWRTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTdWIgPSBmdW5jdGlvbiByZWRJU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNobCA9IGZ1bmN0aW9uIHJlZFNobCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zaGwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkTXVsID0gZnVuY3Rpb24gcmVkTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElNdWwgPSBmdW5jdGlvbiByZWRJTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTcXIgPSBmdW5jdGlvbiByZWRTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FyKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3FyID0gZnVuY3Rpb24gcmVkSVNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXNxcih0aGlzKTtcbiAgfTtcblxuICAvLyBTcXVhcmUgcm9vdCBvdmVyIHBcbiAgQk4ucHJvdG90eXBlLnJlZFNxcnQgPSBmdW5jdGlvbiByZWRTcXJ0ICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXJ0KHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJbnZtID0gZnVuY3Rpb24gcmVkSW52bSAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW52bSh0aGlzKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgICUgYHJlZCBtb2R1bG9gXG4gIEJOLnByb3RvdHlwZS5yZWROZWcgPSBmdW5jdGlvbiByZWROZWcgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubmVnKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRQb3cgPSBmdW5jdGlvbiByZWRQb3cgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCAmJiAhbnVtLnJlZCwgJ3JlZFBvdyhub3JtYWxOdW0pJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnBvdyh0aGlzLCBudW0pO1xuICB9O1xuXG4gIC8vIFByaW1lIG51bWJlcnMgd2l0aCBlZmZpY2llbnQgcmVkdWN0aW9uXG4gIHZhciBwcmltZXMgPSB7XG4gICAgazI1NjogbnVsbCxcbiAgICBwMjI0OiBudWxsLFxuICAgIHAxOTI6IG51bGwsXG4gICAgcDI1NTE5OiBudWxsXG4gIH07XG5cbiAgLy8gUHNldWRvLU1lcnNlbm5lIHByaW1lXG4gIGZ1bmN0aW9uIE1QcmltZSAobmFtZSwgcCkge1xuICAgIC8vIFAgPSAyIF4gTiAtIEtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMucCA9IG5ldyBCTihwLCAxNik7XG4gICAgdGhpcy5uID0gdGhpcy5wLmJpdExlbmd0aCgpO1xuICAgIHRoaXMuayA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCk7XG5cbiAgICB0aGlzLnRtcCA9IHRoaXMuX3RtcCgpO1xuICB9XG5cbiAgTVByaW1lLnByb3RvdHlwZS5fdG1wID0gZnVuY3Rpb24gX3RtcCAoKSB7XG4gICAgdmFyIHRtcCA9IG5ldyBCTihudWxsKTtcbiAgICB0bXAud29yZHMgPSBuZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubiAvIDEzKSk7XG4gICAgcmV0dXJuIHRtcDtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmlyZWR1Y2UgPSBmdW5jdGlvbiBpcmVkdWNlIChudW0pIHtcbiAgICAvLyBBc3N1bWVzIHRoYXQgYG51bWAgaXMgbGVzcyB0aGFuIGBQXjJgXG4gICAgLy8gbnVtID0gSEkgKiAoMiBeIE4gLSBLKSArIEhJICogSyArIExPID0gSEkgKiBLICsgTE8gKG1vZCBQKVxuICAgIHZhciByID0gbnVtO1xuICAgIHZhciBybGVuO1xuXG4gICAgZG8ge1xuICAgICAgdGhpcy5zcGxpdChyLCB0aGlzLnRtcCk7XG4gICAgICByID0gdGhpcy5pbXVsSyhyKTtcbiAgICAgIHIgPSByLmlhZGQodGhpcy50bXApO1xuICAgICAgcmxlbiA9IHIuYml0TGVuZ3RoKCk7XG4gICAgfSB3aGlsZSAocmxlbiA+IHRoaXMubik7XG5cbiAgICB2YXIgY21wID0gcmxlbiA8IHRoaXMubiA/IC0xIDogci51Y21wKHRoaXMucCk7XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgci53b3Jkc1swXSA9IDA7XG4gICAgICByLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgICByLmlzdWIodGhpcy5wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHIuc3RyaXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyByIGlzIEJOIHY0IGluc3RhbmNlXG4gICAgICAgIHIuc3RyaXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHIgaXMgQk4gdjUgaW5zdGFuY2VcbiAgICAgICAgci5fc3RyaXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZWxsaXB0aWMgPSBleHBvcnRzO1xuXG5lbGxpcHRpYy52ZXJzaW9uID0gcmVxdWlyZSgnLi4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcbmVsbGlwdGljLnV0aWxzID0gcmVxdWlyZSgnLi9lbGxpcHRpYy91dGlscycpO1xuZWxsaXB0aWMucmFuZCA9IHJlcXVpcmUoJ2Jyb3JhbmQnKTtcbmVsbGlwdGljLmN1cnZlID0gcmVxdWlyZSgnLi9lbGxpcHRpYy9jdXJ2ZScpO1xuZWxsaXB0aWMuY3VydmVzID0gcmVxdWlyZSgnLi9lbGxpcHRpYy9jdXJ2ZXMnKTtcblxuLy8gUHJvdG9jb2xzXG5lbGxpcHRpYy5lYyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvZWMnKTtcbmVsbGlwdGljLmVkZHNhID0gcmVxdWlyZSgnLi9lbGxpcHRpYy9lZGRzYScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBnZXROQUYgPSB1dGlscy5nZXROQUY7XG52YXIgZ2V0SlNGID0gdXRpbHMuZ2V0SlNGO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gQmFzZUN1cnZlKHR5cGUsIGNvbmYpIHtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5wID0gbmV3IEJOKGNvbmYucCwgMTYpO1xuXG4gIC8vIFVzZSBNb250Z29tZXJ5LCB3aGVuIHRoZXJlIGlzIG5vIGZhc3QgcmVkdWN0aW9uIGZvciB0aGUgcHJpbWVcbiAgdGhpcy5yZWQgPSBjb25mLnByaW1lID8gQk4ucmVkKGNvbmYucHJpbWUpIDogQk4ubW9udCh0aGlzLnApO1xuXG4gIC8vIFVzZWZ1bCBmb3IgbWFueSBjdXJ2ZXNcbiAgdGhpcy56ZXJvID0gbmV3IEJOKDApLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5vbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLnR3byA9IG5ldyBCTigyKS50b1JlZCh0aGlzLnJlZCk7XG5cbiAgLy8gQ3VydmUgY29uZmlndXJhdGlvbiwgb3B0aW9uYWxcbiAgdGhpcy5uID0gY29uZi5uICYmIG5ldyBCTihjb25mLm4sIDE2KTtcbiAgdGhpcy5nID0gY29uZi5nICYmIHRoaXMucG9pbnRGcm9tSlNPTihjb25mLmcsIGNvbmYuZ1JlZCk7XG5cbiAgLy8gVGVtcG9yYXJ5IGFycmF5c1xuICB0aGlzLl93bmFmVDEgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX3duYWZUMiA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fd25hZlQzID0gbmV3IEFycmF5KDQpO1xuICB0aGlzLl93bmFmVDQgPSBuZXcgQXJyYXkoNCk7XG5cbiAgdGhpcy5fYml0TGVuZ3RoID0gdGhpcy5uID8gdGhpcy5uLmJpdExlbmd0aCgpIDogMDtcblxuICAvLyBHZW5lcmFsaXplZCBHcmVnIE1heHdlbGwncyB0cmlja1xuICB2YXIgYWRqdXN0Q291bnQgPSB0aGlzLm4gJiYgdGhpcy5wLmRpdih0aGlzLm4pO1xuICBpZiAoIWFkanVzdENvdW50IHx8IGFkanVzdENvdW50LmNtcG4oMTAwKSA+IDApIHtcbiAgICB0aGlzLnJlZE4gPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX21heHdlbGxUcmljayA9IHRydWU7XG4gICAgdGhpcy5yZWROID0gdGhpcy5uLnRvUmVkKHRoaXMucmVkKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBCYXNlQ3VydmU7XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUucG9pbnQgPSBmdW5jdGlvbiBwb2ludCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUuX2ZpeGVkTmFmTXVsID0gZnVuY3Rpb24gX2ZpeGVkTmFmTXVsKHAsIGspIHtcbiAgYXNzZXJ0KHAucHJlY29tcHV0ZWQpO1xuICB2YXIgZG91YmxlcyA9IHAuX2dldERvdWJsZXMoKTtcblxuICB2YXIgbmFmID0gZ2V0TkFGKGssIDEsIHRoaXMuX2JpdExlbmd0aCk7XG4gIHZhciBJID0gKDEgPDwgKGRvdWJsZXMuc3RlcCArIDEpKSAtIChkb3VibGVzLnN0ZXAgJSAyID09PSAwID8gMiA6IDEpO1xuICBJIC89IDM7XG5cbiAgLy8gVHJhbnNsYXRlIGludG8gbW9yZSB3aW5kb3dlZCBmb3JtXG4gIHZhciByZXByID0gW107XG4gIHZhciBqO1xuICB2YXIgbmFmVztcbiAgZm9yIChqID0gMDsgaiA8IG5hZi5sZW5ndGg7IGogKz0gZG91Ymxlcy5zdGVwKSB7XG4gICAgbmFmVyA9IDA7XG4gICAgZm9yICh2YXIgbCA9IGogKyBkb3VibGVzLnN0ZXAgLSAxOyBsID49IGo7IGwtLSlcbiAgICAgIG5hZlcgPSAobmFmVyA8PCAxKSArIG5hZltsXTtcbiAgICByZXByLnB1c2gobmFmVyk7XG4gIH1cblxuICB2YXIgYSA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICB2YXIgYiA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICBmb3IgKHZhciBpID0gSTsgaSA+IDA7IGktLSkge1xuICAgIGZvciAoaiA9IDA7IGogPCByZXByLmxlbmd0aDsgaisrKSB7XG4gICAgICBuYWZXID0gcmVwcltqXTtcbiAgICAgIGlmIChuYWZXID09PSBpKVxuICAgICAgICBiID0gYi5taXhlZEFkZChkb3VibGVzLnBvaW50c1tqXSk7XG4gICAgICBlbHNlIGlmIChuYWZXID09PSAtaSlcbiAgICAgICAgYiA9IGIubWl4ZWRBZGQoZG91Ymxlcy5wb2ludHNbal0ubmVnKCkpO1xuICAgIH1cbiAgICBhID0gYS5hZGQoYik7XG4gIH1cbiAgcmV0dXJuIGEudG9QKCk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLl93bmFmTXVsID0gZnVuY3Rpb24gX3duYWZNdWwocCwgaykge1xuICB2YXIgdyA9IDQ7XG5cbiAgLy8gUHJlY29tcHV0ZSB3aW5kb3dcbiAgdmFyIG5hZlBvaW50cyA9IHAuX2dldE5BRlBvaW50cyh3KTtcbiAgdyA9IG5hZlBvaW50cy53bmQ7XG4gIHZhciB3bmQgPSBuYWZQb2ludHMucG9pbnRzO1xuXG4gIC8vIEdldCBOQUYgZm9ybVxuICB2YXIgbmFmID0gZ2V0TkFGKGssIHcsIHRoaXMuX2JpdExlbmd0aCk7XG5cbiAgLy8gQWRkIGB0aGlzYCooTisxKSBmb3IgZXZlcnkgdy1OQUYgaW5kZXhcbiAgdmFyIGFjYyA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICBmb3IgKHZhciBpID0gbmFmLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgLy8gQ291bnQgemVyb2VzXG4gICAgZm9yICh2YXIgbCA9IDA7IGkgPj0gMCAmJiBuYWZbaV0gPT09IDA7IGktLSlcbiAgICAgIGwrKztcbiAgICBpZiAoaSA+PSAwKVxuICAgICAgbCsrO1xuICAgIGFjYyA9IGFjYy5kYmxwKGwpO1xuXG4gICAgaWYgKGkgPCAwKVxuICAgICAgYnJlYWs7XG4gICAgdmFyIHogPSBuYWZbaV07XG4gICAgYXNzZXJ0KHogIT09IDApO1xuICAgIGlmIChwLnR5cGUgPT09ICdhZmZpbmUnKSB7XG4gICAgICAvLyBKICstIFBcbiAgICAgIGlmICh6ID4gMClcbiAgICAgICAgYWNjID0gYWNjLm1peGVkQWRkKHduZFsoeiAtIDEpID4+IDFdKTtcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjID0gYWNjLm1peGVkQWRkKHduZFsoLXogLSAxKSA+PiAxXS5uZWcoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEogKy0gSlxuICAgICAgaWYgKHogPiAwKVxuICAgICAgICBhY2MgPSBhY2MuYWRkKHduZFsoeiAtIDEpID4+IDFdKTtcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjID0gYWNjLmFkZCh3bmRbKC16IC0gMSkgPj4gMV0ubmVnKCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcC50eXBlID09PSAnYWZmaW5lJyA/IGFjYy50b1AoKSA6IGFjYztcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUuX3duYWZNdWxBZGQgPSBmdW5jdGlvbiBfd25hZk11bEFkZChkZWZXLFxuICBwb2ludHMsXG4gIGNvZWZmcyxcbiAgbGVuLFxuICBqYWNvYmlhblJlc3VsdCkge1xuICB2YXIgd25kV2lkdGggPSB0aGlzLl93bmFmVDE7XG4gIHZhciB3bmQgPSB0aGlzLl93bmFmVDI7XG4gIHZhciBuYWYgPSB0aGlzLl93bmFmVDM7XG5cbiAgLy8gRmlsbCBhbGwgYXJyYXlzXG4gIHZhciBtYXggPSAwO1xuICB2YXIgaTtcbiAgdmFyIGo7XG4gIHZhciBwO1xuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBwID0gcG9pbnRzW2ldO1xuICAgIHZhciBuYWZQb2ludHMgPSBwLl9nZXROQUZQb2ludHMoZGVmVyk7XG4gICAgd25kV2lkdGhbaV0gPSBuYWZQb2ludHMud25kO1xuICAgIHduZFtpXSA9IG5hZlBvaW50cy5wb2ludHM7XG4gIH1cblxuICAvLyBDb21iIHNtYWxsIHdpbmRvdyBOQUZzXG4gIGZvciAoaSA9IGxlbiAtIDE7IGkgPj0gMTsgaSAtPSAyKSB7XG4gICAgdmFyIGEgPSBpIC0gMTtcbiAgICB2YXIgYiA9IGk7XG4gICAgaWYgKHduZFdpZHRoW2FdICE9PSAxIHx8IHduZFdpZHRoW2JdICE9PSAxKSB7XG4gICAgICBuYWZbYV0gPSBnZXROQUYoY29lZmZzW2FdLCB3bmRXaWR0aFthXSwgdGhpcy5fYml0TGVuZ3RoKTtcbiAgICAgIG5hZltiXSA9IGdldE5BRihjb2VmZnNbYl0sIHduZFdpZHRoW2JdLCB0aGlzLl9iaXRMZW5ndGgpO1xuICAgICAgbWF4ID0gTWF0aC5tYXgobmFmW2FdLmxlbmd0aCwgbWF4KTtcbiAgICAgIG1heCA9IE1hdGgubWF4KG5hZltiXS5sZW5ndGgsIG1heCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIgY29tYiA9IFtcbiAgICAgIHBvaW50c1thXSwgLyogMSAqL1xuICAgICAgbnVsbCwgLyogMyAqL1xuICAgICAgbnVsbCwgLyogNSAqL1xuICAgICAgcG9pbnRzW2JdLCAvKiA3ICovXG4gICAgXTtcblxuICAgIC8vIFRyeSB0byBhdm9pZCBQcm9qZWN0aXZlIHBvaW50cywgaWYgcG9zc2libGVcbiAgICBpZiAocG9pbnRzW2FdLnkuY21wKHBvaW50c1tiXS55KSA9PT0gMCkge1xuICAgICAgY29tYlsxXSA9IHBvaW50c1thXS5hZGQocG9pbnRzW2JdKTtcbiAgICAgIGNvbWJbMl0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdLm5lZygpKTtcbiAgICB9IGVsc2UgaWYgKHBvaW50c1thXS55LmNtcChwb2ludHNbYl0ueS5yZWROZWcoKSkgPT09IDApIHtcbiAgICAgIGNvbWJbMV0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdKTtcbiAgICAgIGNvbWJbMl0gPSBwb2ludHNbYV0uYWRkKHBvaW50c1tiXS5uZWcoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbWJbMV0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdKTtcbiAgICAgIGNvbWJbMl0gPSBwb2ludHNbYV0udG9KKCkubWl4ZWRBZGQocG9pbnRzW2JdLm5lZygpKTtcbiAgICB9XG5cbiAgICB2YXIgaW5kZXggPSBbXG4gICAgICAtMywgLyogLTEgLTEgKi9cbiAgICAgIC0xLCAvKiAtMSAwICovXG4gICAgICAtNSwgLyogLTEgMSAqL1xuICAgICAgLTcsIC8qIDAgLTEgKi9cbiAgICAgIDAsIC8qIDAgMCAqL1xuICAgICAgNywgLyogMCAxICovXG4gICAgICA1LCAvKiAxIC0xICovXG4gICAgICAxLCAvKiAxIDAgKi9cbiAgICAgIDMsICAvKiAxIDEgKi9cbiAgICBdO1xuXG4gICAgdmFyIGpzZiA9IGdldEpTRihjb2VmZnNbYV0sIGNvZWZmc1tiXSk7XG4gICAgbWF4ID0gTWF0aC5tYXgoanNmWzBdLmxlbmd0aCwgbWF4KTtcbiAgICBuYWZbYV0gPSBuZXcgQXJyYXkobWF4KTtcbiAgICBuYWZbYl0gPSBuZXcgQXJyYXkobWF4KTtcbiAgICBmb3IgKGogPSAwOyBqIDwgbWF4OyBqKyspIHtcbiAgICAgIHZhciBqYSA9IGpzZlswXVtqXSB8IDA7XG4gICAgICB2YXIgamIgPSBqc2ZbMV1bal0gfCAwO1xuXG4gICAgICBuYWZbYV1bal0gPSBpbmRleFsoamEgKyAxKSAqIDMgKyAoamIgKyAxKV07XG4gICAgICBuYWZbYl1bal0gPSAwO1xuICAgICAgd25kW2FdID0gY29tYjtcbiAgICB9XG4gIH1cblxuICB2YXIgYWNjID0gdGhpcy5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG4gIHZhciB0bXAgPSB0aGlzLl93bmFmVDQ7XG4gIGZvciAoaSA9IG1heDsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgayA9IDA7XG5cbiAgICB3aGlsZSAoaSA+PSAwKSB7XG4gICAgICB2YXIgemVybyA9IHRydWU7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgICAgdG1wW2pdID0gbmFmW2pdW2ldIHwgMDtcbiAgICAgICAgaWYgKHRtcFtqXSAhPT0gMClcbiAgICAgICAgICB6ZXJvID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIXplcm8pXG4gICAgICAgIGJyZWFrO1xuICAgICAgaysrO1xuICAgICAgaS0tO1xuICAgIH1cbiAgICBpZiAoaSA+PSAwKVxuICAgICAgaysrO1xuICAgIGFjYyA9IGFjYy5kYmxwKGspO1xuICAgIGlmIChpIDwgMClcbiAgICAgIGJyZWFrO1xuXG4gICAgZm9yIChqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICB2YXIgeiA9IHRtcFtqXTtcbiAgICAgIHA7XG4gICAgICBpZiAoeiA9PT0gMClcbiAgICAgICAgY29udGludWU7XG4gICAgICBlbHNlIGlmICh6ID4gMClcbiAgICAgICAgcCA9IHduZFtqXVsoeiAtIDEpID4+IDFdO1xuICAgICAgZWxzZSBpZiAoeiA8IDApXG4gICAgICAgIHAgPSB3bmRbal1bKC16IC0gMSkgPj4gMV0ubmVnKCk7XG5cbiAgICAgIGlmIChwLnR5cGUgPT09ICdhZmZpbmUnKVxuICAgICAgICBhY2MgPSBhY2MubWl4ZWRBZGQocCk7XG4gICAgICBlbHNlXG4gICAgICAgIGFjYyA9IGFjYy5hZGQocCk7XG4gICAgfVxuICB9XG4gIC8vIFplcm9pZnkgcmVmZXJlbmNlc1xuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgd25kW2ldID0gbnVsbDtcblxuICBpZiAoamFjb2JpYW5SZXN1bHQpXG4gICAgcmV0dXJuIGFjYztcbiAgZWxzZVxuICAgIHJldHVybiBhY2MudG9QKCk7XG59O1xuXG5mdW5jdGlvbiBCYXNlUG9pbnQoY3VydmUsIHR5cGUpIHtcbiAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICB0aGlzLnR5cGUgPSB0eXBlO1xuICB0aGlzLnByZWNvbXB1dGVkID0gbnVsbDtcbn1cbkJhc2VDdXJ2ZS5CYXNlUG9pbnQgPSBCYXNlUG9pbnQ7XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcSgvKm90aGVyKi8pIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUudmFsaWRhdGUodGhpcyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLmRlY29kZVBvaW50ID0gZnVuY3Rpb24gZGVjb2RlUG9pbnQoYnl0ZXMsIGVuYykge1xuICBieXRlcyA9IHV0aWxzLnRvQXJyYXkoYnl0ZXMsIGVuYyk7XG5cbiAgdmFyIGxlbiA9IHRoaXMucC5ieXRlTGVuZ3RoKCk7XG5cbiAgLy8gdW5jb21wcmVzc2VkLCBoeWJyaWQtb2RkLCBoeWJyaWQtZXZlblxuICBpZiAoKGJ5dGVzWzBdID09PSAweDA0IHx8IGJ5dGVzWzBdID09PSAweDA2IHx8IGJ5dGVzWzBdID09PSAweDA3KSAmJlxuICAgICAgYnl0ZXMubGVuZ3RoIC0gMSA9PT0gMiAqIGxlbikge1xuICAgIGlmIChieXRlc1swXSA9PT0gMHgwNilcbiAgICAgIGFzc2VydChieXRlc1tieXRlcy5sZW5ndGggLSAxXSAlIDIgPT09IDApO1xuICAgIGVsc2UgaWYgKGJ5dGVzWzBdID09PSAweDA3KVxuICAgICAgYXNzZXJ0KGJ5dGVzW2J5dGVzLmxlbmd0aCAtIDFdICUgMiA9PT0gMSk7XG5cbiAgICB2YXIgcmVzID0gIHRoaXMucG9pbnQoYnl0ZXMuc2xpY2UoMSwgMSArIGxlbiksXG4gICAgICBieXRlcy5zbGljZSgxICsgbGVuLCAxICsgMiAqIGxlbikpO1xuXG4gICAgcmV0dXJuIHJlcztcbiAgfSBlbHNlIGlmICgoYnl0ZXNbMF0gPT09IDB4MDIgfHwgYnl0ZXNbMF0gPT09IDB4MDMpICYmXG4gICAgICAgICAgICAgIGJ5dGVzLmxlbmd0aCAtIDEgPT09IGxlbikge1xuICAgIHJldHVybiB0aGlzLnBvaW50RnJvbVgoYnl0ZXMuc2xpY2UoMSwgMSArIGxlbiksIGJ5dGVzWzBdID09PSAweDAzKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcG9pbnQgZm9ybWF0Jyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVuY29kZUNvbXByZXNzZWQgPSBmdW5jdGlvbiBlbmNvZGVDb21wcmVzc2VkKGVuYykge1xuICByZXR1cm4gdGhpcy5lbmNvZGUoZW5jLCB0cnVlKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2VuY29kZSA9IGZ1bmN0aW9uIF9lbmNvZGUoY29tcGFjdCkge1xuICB2YXIgbGVuID0gdGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIHggPSB0aGlzLmdldFgoKS50b0FycmF5KCdiZScsIGxlbik7XG5cbiAgaWYgKGNvbXBhY3QpXG4gICAgcmV0dXJuIFsgdGhpcy5nZXRZKCkuaXNFdmVuKCkgPyAweDAyIDogMHgwMyBdLmNvbmNhdCh4KTtcblxuICByZXR1cm4gWyAweDA0IF0uY29uY2F0KHgsIHRoaXMuZ2V0WSgpLnRvQXJyYXkoJ2JlJywgbGVuKSk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShlbmMsIGNvbXBhY3QpIHtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLl9lbmNvZGUoY29tcGFjdCksIGVuYyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLnByZWNvbXB1dGUgPSBmdW5jdGlvbiBwcmVjb21wdXRlKHBvd2VyKSB7XG4gIGlmICh0aGlzLnByZWNvbXB1dGVkKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIHZhciBwcmVjb21wdXRlZCA9IHtcbiAgICBkb3VibGVzOiBudWxsLFxuICAgIG5hZjogbnVsbCxcbiAgICBiZXRhOiBudWxsLFxuICB9O1xuICBwcmVjb21wdXRlZC5uYWYgPSB0aGlzLl9nZXROQUZQb2ludHMoOCk7XG4gIHByZWNvbXB1dGVkLmRvdWJsZXMgPSB0aGlzLl9nZXREb3VibGVzKDQsIHBvd2VyKTtcbiAgcHJlY29tcHV0ZWQuYmV0YSA9IHRoaXMuX2dldEJldGEoKTtcbiAgdGhpcy5wcmVjb21wdXRlZCA9IHByZWNvbXB1dGVkO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5faGFzRG91YmxlcyA9IGZ1bmN0aW9uIF9oYXNEb3VibGVzKGspIHtcbiAgaWYgKCF0aGlzLnByZWNvbXB1dGVkKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgZG91YmxlcyA9IHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztcbiAgaWYgKCFkb3VibGVzKVxuICAgIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gZG91Ymxlcy5wb2ludHMubGVuZ3RoID49IE1hdGguY2VpbCgoay5iaXRMZW5ndGgoKSArIDEpIC8gZG91Ymxlcy5zdGVwKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2dldERvdWJsZXMgPSBmdW5jdGlvbiBfZ2V0RG91YmxlcyhzdGVwLCBwb3dlcikge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZCAmJiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMpXG4gICAgcmV0dXJuIHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcztcblxuICB2YXIgZG91YmxlcyA9IFsgdGhpcyBdO1xuICB2YXIgYWNjID0gdGhpcztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3dlcjsgaSArPSBzdGVwKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBzdGVwOyBqKyspXG4gICAgICBhY2MgPSBhY2MuZGJsKCk7XG4gICAgZG91Ymxlcy5wdXNoKGFjYyk7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzdGVwOiBzdGVwLFxuICAgIHBvaW50czogZG91YmxlcyxcbiAgfTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2dldE5BRlBvaW50cyA9IGZ1bmN0aW9uIF9nZXROQUZQb2ludHMod25kKSB7XG4gIGlmICh0aGlzLnByZWNvbXB1dGVkICYmIHRoaXMucHJlY29tcHV0ZWQubmFmKVxuICAgIHJldHVybiB0aGlzLnByZWNvbXB1dGVkLm5hZjtcblxuICB2YXIgcmVzID0gWyB0aGlzIF07XG4gIHZhciBtYXggPSAoMSA8PCB3bmQpIC0gMTtcbiAgdmFyIGRibCA9IG1heCA9PT0gMSA/IG51bGwgOiB0aGlzLmRibCgpO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IG1heDsgaSsrKVxuICAgIHJlc1tpXSA9IHJlc1tpIC0gMV0uYWRkKGRibCk7XG4gIHJldHVybiB7XG4gICAgd25kOiB3bmQsXG4gICAgcG9pbnRzOiByZXMsXG4gIH07XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9nZXRCZXRhID0gZnVuY3Rpb24gX2dldEJldGEoKSB7XG4gIHJldHVybiBudWxsO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5kYmxwID0gZnVuY3Rpb24gZGJscChrKSB7XG4gIHZhciByID0gdGhpcztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrOyBpKyspXG4gICAgciA9IHIuZGJsKCk7XG4gIHJldHVybiByO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcblxudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gRWR3YXJkc0N1cnZlKGNvbmYpIHtcbiAgLy8gTk9URTogSW1wb3J0YW50IGFzIHdlIGFyZSBjcmVhdGluZyBwb2ludCBpbiBCYXNlLmNhbGwoKVxuICB0aGlzLnR3aXN0ZWQgPSAoY29uZi5hIHwgMCkgIT09IDE7XG4gIHRoaXMubU9uZUEgPSB0aGlzLnR3aXN0ZWQgJiYgKGNvbmYuYSB8IDApID09PSAtMTtcbiAgdGhpcy5leHRlbmRlZCA9IHRoaXMubU9uZUE7XG5cbiAgQmFzZS5jYWxsKHRoaXMsICdlZHdhcmRzJywgY29uZik7XG5cbiAgdGhpcy5hID0gbmV3IEJOKGNvbmYuYSwgMTYpLnVtb2QodGhpcy5yZWQubSk7XG4gIHRoaXMuYSA9IHRoaXMuYS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYyA9IG5ldyBCTihjb25mLmMsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYzIgPSB0aGlzLmMucmVkU3FyKCk7XG4gIHRoaXMuZCA9IG5ldyBCTihjb25mLmQsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuZGQgPSB0aGlzLmQucmVkQWRkKHRoaXMuZCk7XG5cbiAgYXNzZXJ0KCF0aGlzLnR3aXN0ZWQgfHwgdGhpcy5jLmZyb21SZWQoKS5jbXBuKDEpID09PSAwKTtcbiAgdGhpcy5vbmVDID0gKGNvbmYuYyB8IDApID09PSAxO1xufVxuaW5oZXJpdHMoRWR3YXJkc0N1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gRWR3YXJkc0N1cnZlO1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLl9tdWxBID0gZnVuY3Rpb24gX211bEEobnVtKSB7XG4gIGlmICh0aGlzLm1PbmVBKVxuICAgIHJldHVybiBudW0ucmVkTmVnKCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5hLnJlZE11bChudW0pO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5fbXVsQyA9IGZ1bmN0aW9uIF9tdWxDKG51bSkge1xuICBpZiAodGhpcy5vbmVDKVxuICAgIHJldHVybiBudW07XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jLnJlZE11bChudW0pO1xufTtcblxuLy8gSnVzdCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNob3J0IGN1cnZlXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLmpwb2ludCA9IGZ1bmN0aW9uIGpwb2ludCh4LCB5LCB6LCB0KSB7XG4gIHJldHVybiB0aGlzLnBvaW50KHgsIHksIHosIHQpO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludEZyb21YID0gZnVuY3Rpb24gcG9pbnRGcm9tWCh4LCBvZGQpIHtcbiAgeCA9IG5ldyBCTih4LCAxNik7XG4gIGlmICgheC5yZWQpXG4gICAgeCA9IHgudG9SZWQodGhpcy5yZWQpO1xuXG4gIHZhciB4MiA9IHgucmVkU3FyKCk7XG4gIHZhciByaHMgPSB0aGlzLmMyLnJlZFN1Yih0aGlzLmEucmVkTXVsKHgyKSk7XG4gIHZhciBsaHMgPSB0aGlzLm9uZS5yZWRTdWIodGhpcy5jMi5yZWRNdWwodGhpcy5kKS5yZWRNdWwoeDIpKTtcblxuICB2YXIgeTIgPSByaHMucmVkTXVsKGxocy5yZWRJbnZtKCkpO1xuICB2YXIgeSA9IHkyLnJlZFNxcnQoKTtcbiAgaWYgKHkucmVkU3FyKCkucmVkU3ViKHkyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICB2YXIgaXNPZGQgPSB5LmZyb21SZWQoKS5pc09kZCgpO1xuICBpZiAob2RkICYmICFpc09kZCB8fCAhb2RkICYmIGlzT2RkKVxuICAgIHkgPSB5LnJlZE5lZygpO1xuXG4gIHJldHVybiB0aGlzLnBvaW50KHgsIHkpO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludEZyb21ZID0gZnVuY3Rpb24gcG9pbnRGcm9tWSh5LCBvZGQpIHtcbiAgeSA9IG5ldyBCTih5LCAxNik7XG4gIGlmICgheS5yZWQpXG4gICAgeSA9IHkudG9SZWQodGhpcy5yZWQpO1xuXG4gIC8vIHheMiA9ICh5XjIgLSBjXjIpIC8gKGNeMiBkIHleMiAtIGEpXG4gIHZhciB5MiA9IHkucmVkU3FyKCk7XG4gIHZhciBsaHMgPSB5Mi5yZWRTdWIodGhpcy5jMik7XG4gIHZhciByaHMgPSB5Mi5yZWRNdWwodGhpcy5kKS5yZWRNdWwodGhpcy5jMikucmVkU3ViKHRoaXMuYSk7XG4gIHZhciB4MiA9IGxocy5yZWRNdWwocmhzLnJlZEludm0oKSk7XG5cbiAgaWYgKHgyLmNtcCh0aGlzLnplcm8pID09PSAwKSB7XG4gICAgaWYgKG9kZClcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLnBvaW50KHRoaXMuemVybywgeSk7XG4gIH1cblxuICB2YXIgeCA9IHgyLnJlZFNxcnQoKTtcbiAgaWYgKHgucmVkU3FyKCkucmVkU3ViKHgyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICBpZiAoeC5mcm9tUmVkKCkuaXNPZGQoKSAhPT0gb2RkKVxuICAgIHggPSB4LnJlZE5lZygpO1xuXG4gIHJldHVybiB0aGlzLnBvaW50KHgsIHkpO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKHBvaW50KSB7XG4gIGlmIChwb2ludC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgLy8gQ3VydmU6IEEgKiBYXjIgKyBZXjIgPSBDXjIgKiAoMSArIEQgKiBYXjIgKiBZXjIpXG4gIHBvaW50Lm5vcm1hbGl6ZSgpO1xuXG4gIHZhciB4MiA9IHBvaW50LngucmVkU3FyKCk7XG4gIHZhciB5MiA9IHBvaW50LnkucmVkU3FyKCk7XG4gIHZhciBsaHMgPSB4Mi5yZWRNdWwodGhpcy5hKS5yZWRBZGQoeTIpO1xuICB2YXIgcmhzID0gdGhpcy5jMi5yZWRNdWwodGhpcy5vbmUucmVkQWRkKHRoaXMuZC5yZWRNdWwoeDIpLnJlZE11bCh5MikpKTtcblxuICByZXR1cm4gbGhzLmNtcChyaHMpID09PSAwO1xufTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHksIHosIHQpIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ3Byb2plY3RpdmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICAgIHRoaXMueSA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMudCA9IHRoaXMuY3VydmUuemVybztcbiAgICB0aGlzLnpPbmUgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy55ID0gbmV3IEJOKHksIDE2KTtcbiAgICB0aGlzLnogPSB6ID8gbmV3IEJOKHosIDE2KSA6IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMudCA9IHQgJiYgbmV3IEJOKHQsIDE2KTtcbiAgICBpZiAoIXRoaXMueC5yZWQpXG4gICAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy55LnJlZClcbiAgICAgIHRoaXMueSA9IHRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnoucmVkKVxuICAgICAgdGhpcy56ID0gdGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAodGhpcy50ICYmICF0aGlzLnQucmVkKVxuICAgICAgdGhpcy50ID0gdGhpcy50LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB0aGlzLnpPbmUgPSB0aGlzLnogPT09IHRoaXMuY3VydmUub25lO1xuXG4gICAgLy8gVXNlIGV4dGVuZGVkIGNvb3JkaW5hdGVzXG4gICAgaWYgKHRoaXMuY3VydmUuZXh0ZW5kZWQgJiYgIXRoaXMudCkge1xuICAgICAgdGhpcy50ID0gdGhpcy54LnJlZE11bCh0aGlzLnkpO1xuICAgICAgaWYgKCF0aGlzLnpPbmUpXG4gICAgICAgIHRoaXMudCA9IHRoaXMudC5yZWRNdWwodGhpcy56LnJlZEludm0oKSk7XG4gICAgfVxuICB9XG59XG5pbmhlcml0cyhQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnBvaW50RnJvbUpTT04gPSBmdW5jdGlvbiBwb2ludEZyb21KU09OKG9iaikge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqKTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnQgPSBmdW5jdGlvbiBwb2ludCh4LCB5LCB6LCB0KSB7XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcywgeCwgeSwgeiwgdCk7XG59O1xuXG5Qb2ludC5mcm9tSlNPTiA9IGZ1bmN0aW9uIGZyb21KU09OKGN1cnZlLCBvYmopIHtcbiAgcmV0dXJuIG5ldyBQb2ludChjdXJ2ZSwgb2JqWzBdLCBvYmpbMV0sIG9ialsyXSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gJzxFQyBQb2ludCBJbmZpbml0eT4nO1xuICByZXR1cm4gJzxFQyBQb2ludCB4OiAnICsgdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB5OiAnICsgdGhpcy55LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB6OiAnICsgdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgKyAnPic7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuaXNJbmZpbml0eSA9IGZ1bmN0aW9uIGlzSW5maW5pdHkoKSB7XG4gIC8vIFhYWCBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IHplcm8gaXMgYWx3YXlzIHplcm8gaW4gcmVkXG4gIHJldHVybiB0aGlzLnguY21wbigwKSA9PT0gMCAmJlxuICAgICh0aGlzLnkuY21wKHRoaXMueikgPT09IDAgfHxcbiAgICAodGhpcy56T25lICYmIHRoaXMueS5jbXAodGhpcy5jdXJ2ZS5jKSA9PT0gMCkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9leHREYmwgPSBmdW5jdGlvbiBfZXh0RGJsKCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1leHRlbmRlZC0xLmh0bWxcbiAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOC1od2NkXG4gIC8vIDRNICsgNFNcblxuICAvLyBBID0gWDFeMlxuICB2YXIgYSA9IHRoaXMueC5yZWRTcXIoKTtcbiAgLy8gQiA9IFkxXjJcbiAgdmFyIGIgPSB0aGlzLnkucmVkU3FyKCk7XG4gIC8vIEMgPSAyICogWjFeMlxuICB2YXIgYyA9IHRoaXMuei5yZWRTcXIoKTtcbiAgYyA9IGMucmVkSUFkZChjKTtcbiAgLy8gRCA9IGEgKiBBXG4gIHZhciBkID0gdGhpcy5jdXJ2ZS5fbXVsQShhKTtcbiAgLy8gRSA9IChYMSArIFkxKV4yIC0gQSAtIEJcbiAgdmFyIGUgPSB0aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCkucmVkSVN1YihhKS5yZWRJU3ViKGIpO1xuICAvLyBHID0gRCArIEJcbiAgdmFyIGcgPSBkLnJlZEFkZChiKTtcbiAgLy8gRiA9IEcgLSBDXG4gIHZhciBmID0gZy5yZWRTdWIoYyk7XG4gIC8vIEggPSBEIC0gQlxuICB2YXIgaCA9IGQucmVkU3ViKGIpO1xuICAvLyBYMyA9IEUgKiBGXG4gIHZhciBueCA9IGUucmVkTXVsKGYpO1xuICAvLyBZMyA9IEcgKiBIXG4gIHZhciBueSA9IGcucmVkTXVsKGgpO1xuICAvLyBUMyA9IEUgKiBIXG4gIHZhciBudCA9IGUucmVkTXVsKGgpO1xuICAvLyBaMyA9IEYgKiBHXG4gIHZhciBueiA9IGYucmVkTXVsKGcpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56LCBudCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX3Byb2pEYmwgPSBmdW5jdGlvbiBfcHJvakRibCgpIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtcHJvamVjdGl2ZS5odG1sXG4gIC8vICAgICAjZG91YmxpbmctZGJsLTIwMDgtYmJqbHBcbiAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwNy1ibFxuICAvLyBhbmQgb3RoZXJzXG4gIC8vIEdlbmVyYWxseSAzTSArIDRTIG9yIDJNICsgNFNcblxuICAvLyBCID0gKFgxICsgWTEpXjJcbiAgdmFyIGIgPSB0aGlzLngucmVkQWRkKHRoaXMueSkucmVkU3FyKCk7XG4gIC8vIEMgPSBYMV4yXG4gIHZhciBjID0gdGhpcy54LnJlZFNxcigpO1xuICAvLyBEID0gWTFeMlxuICB2YXIgZCA9IHRoaXMueS5yZWRTcXIoKTtcblxuICB2YXIgbng7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICB2YXIgZTtcbiAgdmFyIGg7XG4gIHZhciBqO1xuICBpZiAodGhpcy5jdXJ2ZS50d2lzdGVkKSB7XG4gICAgLy8gRSA9IGEgKiBDXG4gICAgZSA9IHRoaXMuY3VydmUuX211bEEoYyk7XG4gICAgLy8gRiA9IEUgKyBEXG4gICAgdmFyIGYgPSBlLnJlZEFkZChkKTtcbiAgICBpZiAodGhpcy56T25lKSB7XG4gICAgICAvLyBYMyA9IChCIC0gQyAtIEQpICogKEYgLSAyKVxuICAgICAgbnggPSBiLnJlZFN1YihjKS5yZWRTdWIoZCkucmVkTXVsKGYucmVkU3ViKHRoaXMuY3VydmUudHdvKSk7XG4gICAgICAvLyBZMyA9IEYgKiAoRSAtIEQpXG4gICAgICBueSA9IGYucmVkTXVsKGUucmVkU3ViKGQpKTtcbiAgICAgIC8vIFozID0gRl4yIC0gMiAqIEZcbiAgICAgIG56ID0gZi5yZWRTcXIoKS5yZWRTdWIoZikucmVkU3ViKGYpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIID0gWjFeMlxuICAgICAgaCA9IHRoaXMuei5yZWRTcXIoKTtcbiAgICAgIC8vIEogPSBGIC0gMiAqIEhcbiAgICAgIGogPSBmLnJlZFN1YihoKS5yZWRJU3ViKGgpO1xuICAgICAgLy8gWDMgPSAoQi1DLUQpKkpcbiAgICAgIG54ID0gYi5yZWRTdWIoYykucmVkSVN1YihkKS5yZWRNdWwoaik7XG4gICAgICAvLyBZMyA9IEYgKiAoRSAtIEQpXG4gICAgICBueSA9IGYucmVkTXVsKGUucmVkU3ViKGQpKTtcbiAgICAgIC8vIFozID0gRiAqIEpcbiAgICAgIG56ID0gZi5yZWRNdWwoaik7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIEUgPSBDICsgRFxuICAgIGUgPSBjLnJlZEFkZChkKTtcbiAgICAvLyBIID0gKGMgKiBaMSleMlxuICAgIGggPSB0aGlzLmN1cnZlLl9tdWxDKHRoaXMueikucmVkU3FyKCk7XG4gICAgLy8gSiA9IEUgLSAyICogSFxuICAgIGogPSBlLnJlZFN1YihoKS5yZWRTdWIoaCk7XG4gICAgLy8gWDMgPSBjICogKEIgLSBFKSAqIEpcbiAgICBueCA9IHRoaXMuY3VydmUuX211bEMoYi5yZWRJU3ViKGUpKS5yZWRNdWwoaik7XG4gICAgLy8gWTMgPSBjICogRSAqIChDIC0gRClcbiAgICBueSA9IHRoaXMuY3VydmUuX211bEMoZSkucmVkTXVsKGMucmVkSVN1YihkKSk7XG4gICAgLy8gWjMgPSBFICogSlxuICAgIG56ID0gZS5yZWRNdWwoaik7XG4gIH1cbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gRG91YmxlIGluIGV4dGVuZGVkIGNvb3JkaW5hdGVzXG4gIGlmICh0aGlzLmN1cnZlLmV4dGVuZGVkKVxuICAgIHJldHVybiB0aGlzLl9leHREYmwoKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLl9wcm9qRGJsKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX2V4dEFkZCA9IGZ1bmN0aW9uIF9leHRBZGQocCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1leHRlbmRlZC0xLmh0bWxcbiAgLy8gICAgICNhZGRpdGlvbi1hZGQtMjAwOC1od2NkLTNcbiAgLy8gOE1cblxuICAvLyBBID0gKFkxIC0gWDEpICogKFkyIC0gWDIpXG4gIHZhciBhID0gdGhpcy55LnJlZFN1Yih0aGlzLngpLnJlZE11bChwLnkucmVkU3ViKHAueCkpO1xuICAvLyBCID0gKFkxICsgWDEpICogKFkyICsgWDIpXG4gIHZhciBiID0gdGhpcy55LnJlZEFkZCh0aGlzLngpLnJlZE11bChwLnkucmVkQWRkKHAueCkpO1xuICAvLyBDID0gVDEgKiBrICogVDJcbiAgdmFyIGMgPSB0aGlzLnQucmVkTXVsKHRoaXMuY3VydmUuZGQpLnJlZE11bChwLnQpO1xuICAvLyBEID0gWjEgKiAyICogWjJcbiAgdmFyIGQgPSB0aGlzLnoucmVkTXVsKHAuei5yZWRBZGQocC56KSk7XG4gIC8vIEUgPSBCIC0gQVxuICB2YXIgZSA9IGIucmVkU3ViKGEpO1xuICAvLyBGID0gRCAtIENcbiAgdmFyIGYgPSBkLnJlZFN1YihjKTtcbiAgLy8gRyA9IEQgKyBDXG4gIHZhciBnID0gZC5yZWRBZGQoYyk7XG4gIC8vIEggPSBCICsgQVxuICB2YXIgaCA9IGIucmVkQWRkKGEpO1xuICAvLyBYMyA9IEUgKiBGXG4gIHZhciBueCA9IGUucmVkTXVsKGYpO1xuICAvLyBZMyA9IEcgKiBIXG4gIHZhciBueSA9IGcucmVkTXVsKGgpO1xuICAvLyBUMyA9IEUgKiBIXG4gIHZhciBudCA9IGUucmVkTXVsKGgpO1xuICAvLyBaMyA9IEYgKiBHXG4gIHZhciBueiA9IGYucmVkTXVsKGcpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56LCBudCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX3Byb2pBZGQgPSBmdW5jdGlvbiBfcHJvakFkZChwKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLXByb2plY3RpdmUuaHRtbFxuICAvLyAgICAgI2FkZGl0aW9uLWFkZC0yMDA4LWJiamxwXG4gIC8vICAgICAjYWRkaXRpb24tYWRkLTIwMDctYmxcbiAgLy8gMTBNICsgMVNcblxuICAvLyBBID0gWjEgKiBaMlxuICB2YXIgYSA9IHRoaXMuei5yZWRNdWwocC56KTtcbiAgLy8gQiA9IEFeMlxuICB2YXIgYiA9IGEucmVkU3FyKCk7XG4gIC8vIEMgPSBYMSAqIFgyXG4gIHZhciBjID0gdGhpcy54LnJlZE11bChwLngpO1xuICAvLyBEID0gWTEgKiBZMlxuICB2YXIgZCA9IHRoaXMueS5yZWRNdWwocC55KTtcbiAgLy8gRSA9IGQgKiBDICogRFxuICB2YXIgZSA9IHRoaXMuY3VydmUuZC5yZWRNdWwoYykucmVkTXVsKGQpO1xuICAvLyBGID0gQiAtIEVcbiAgdmFyIGYgPSBiLnJlZFN1YihlKTtcbiAgLy8gRyA9IEIgKyBFXG4gIHZhciBnID0gYi5yZWRBZGQoZSk7XG4gIC8vIFgzID0gQSAqIEYgKiAoKFgxICsgWTEpICogKFgyICsgWTIpIC0gQyAtIEQpXG4gIHZhciB0bXAgPSB0aGlzLngucmVkQWRkKHRoaXMueSkucmVkTXVsKHAueC5yZWRBZGQocC55KSkucmVkSVN1YihjKS5yZWRJU3ViKGQpO1xuICB2YXIgbnggPSBhLnJlZE11bChmKS5yZWRNdWwodG1wKTtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIGlmICh0aGlzLmN1cnZlLnR3aXN0ZWQpIHtcbiAgICAvLyBZMyA9IEEgKiBHICogKEQgLSBhICogQylcbiAgICBueSA9IGEucmVkTXVsKGcpLnJlZE11bChkLnJlZFN1Yih0aGlzLmN1cnZlLl9tdWxBKGMpKSk7XG4gICAgLy8gWjMgPSBGICogR1xuICAgIG56ID0gZi5yZWRNdWwoZyk7XG4gIH0gZWxzZSB7XG4gICAgLy8gWTMgPSBBICogRyAqIChEIC0gQylcbiAgICBueSA9IGEucmVkTXVsKGcpLnJlZE11bChkLnJlZFN1YihjKSk7XG4gICAgLy8gWjMgPSBjICogRiAqIEdcbiAgICBueiA9IHRoaXMuY3VydmUuX211bEMoZikucmVkTXVsKGcpO1xuICB9XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChwKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gcDtcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIGlmICh0aGlzLmN1cnZlLmV4dGVuZGVkKVxuICAgIHJldHVybiB0aGlzLl9leHRBZGQocCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fcHJvakFkZChwKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwoaykge1xuICBpZiAodGhpcy5faGFzRG91YmxlcyhrKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcywgayk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLCBrKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWxBZGQgPSBmdW5jdGlvbiBtdWxBZGQoazEsIHAsIGsyKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIFsgdGhpcywgcCBdLCBbIGsxLCBrMiBdLCAyLCBmYWxzZSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuam11bEFkZCA9IGZ1bmN0aW9uIGptdWxBZGQoazEsIHAsIGsyKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIFsgdGhpcywgcCBdLCBbIGsxLCBrMiBdLCAyLCB0cnVlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gIGlmICh0aGlzLnpPbmUpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gTm9ybWFsaXplIGNvb3JkaW5hdGVzXG4gIHZhciB6aSA9IHRoaXMuei5yZWRJbnZtKCk7XG4gIHRoaXMueCA9IHRoaXMueC5yZWRNdWwoemkpO1xuICB0aGlzLnkgPSB0aGlzLnkucmVkTXVsKHppKTtcbiAgaWYgKHRoaXMudClcbiAgICB0aGlzLnQgPSB0aGlzLnQucmVkTXVsKHppKTtcbiAgdGhpcy56ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gIHRoaXMuek9uZSA9IHRydWU7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZygpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE5lZygpLFxuICAgIHRoaXMueSxcbiAgICB0aGlzLnosXG4gICAgdGhpcy50ICYmIHRoaXMudC5yZWROZWcoKSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uIGdldFgoKSB7XG4gIHRoaXMubm9ybWFsaXplKCk7XG4gIHJldHVybiB0aGlzLnguZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFkgPSBmdW5jdGlvbiBnZXRZKCkge1xuICB0aGlzLm5vcm1hbGl6ZSgpO1xuICByZXR1cm4gdGhpcy55LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKG90aGVyKSB7XG4gIHJldHVybiB0aGlzID09PSBvdGhlciB8fFxuICAgICAgICAgdGhpcy5nZXRYKCkuY21wKG90aGVyLmdldFgoKSkgPT09IDAgJiZcbiAgICAgICAgIHRoaXMuZ2V0WSgpLmNtcChvdGhlci5nZXRZKCkpID09PSAwO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmVxWFRvUCA9IGZ1bmN0aW9uIGVxWFRvUCh4KSB7XG4gIHZhciByeCA9IHgudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh0aGlzLnopO1xuICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgdmFyIHhjID0geC5jbG9uZSgpO1xuICB2YXIgdCA9IHRoaXMuY3VydmUucmVkTi5yZWRNdWwodGhpcy56KTtcbiAgZm9yICg7Oykge1xuICAgIHhjLmlhZGQodGhpcy5jdXJ2ZS5uKTtcbiAgICBpZiAoeGMuY21wKHRoaXMuY3VydmUucCkgPj0gMClcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJ4LnJlZElBZGQodCk7XG4gICAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG5cbi8vIENvbXBhdGliaWxpdHkgd2l0aCBCYXNlQ3VydmVcblBvaW50LnByb3RvdHlwZS50b1AgPSBQb2ludC5wcm90b3R5cGUubm9ybWFsaXplO1xuUG9pbnQucHJvdG90eXBlLm1peGVkQWRkID0gUG9pbnQucHJvdG90eXBlLmFkZDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlID0gZXhwb3J0cztcblxuY3VydmUuYmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpO1xuY3VydmUuc2hvcnQgPSByZXF1aXJlKCcuL3Nob3J0Jyk7XG5jdXJ2ZS5tb250ID0gcmVxdWlyZSgnLi9tb250Jyk7XG5jdXJ2ZS5lZHdhcmRzID0gcmVxdWlyZSgnLi9lZHdhcmRzJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxuZnVuY3Rpb24gTW9udEN1cnZlKGNvbmYpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdtb250JywgY29uZik7XG5cbiAgdGhpcy5hID0gbmV3IEJOKGNvbmYuYSwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5iID0gbmV3IEJOKGNvbmYuYiwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5pNCA9IG5ldyBCTig0KS50b1JlZCh0aGlzLnJlZCkucmVkSW52bSgpO1xuICB0aGlzLnR3byA9IG5ldyBCTigyKS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYTI0ID0gdGhpcy5pNC5yZWRNdWwodGhpcy5hLnJlZEFkZCh0aGlzLnR3bykpO1xufVxuaW5oZXJpdHMoTW9udEN1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gTW9udEN1cnZlO1xuXG5Nb250Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgdmFyIHggPSBwb2ludC5ub3JtYWxpemUoKS54O1xuICB2YXIgeDIgPSB4LnJlZFNxcigpO1xuICB2YXIgcmhzID0geDIucmVkTXVsKHgpLnJlZEFkZCh4Mi5yZWRNdWwodGhpcy5hKSkucmVkQWRkKHgpO1xuICB2YXIgeSA9IHJocy5yZWRTcXJ0KCk7XG5cbiAgcmV0dXJuIHkucmVkU3FyKCkuY21wKHJocykgPT09IDA7XG59O1xuXG5mdW5jdGlvbiBQb2ludChjdXJ2ZSwgeCwgeikge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAncHJvamVjdGl2ZScpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gdGhpcy5jdXJ2ZS56ZXJvO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy56ID0gbmV3IEJOKHosIDE2KTtcbiAgICBpZiAoIXRoaXMueC5yZWQpXG4gICAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy56LnJlZClcbiAgICAgIHRoaXMueiA9IHRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUuZGVjb2RlUG9pbnQgPSBmdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcywgZW5jKSB7XG4gIHJldHVybiB0aGlzLnBvaW50KHV0aWxzLnRvQXJyYXkoYnl0ZXMsIGVuYyksIDEpO1xufTtcblxuTW9udEN1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHopIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB6KTtcbn07XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqKSB7XG4gIHJldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLCBvYmopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLnByZWNvbXB1dGUgPSBmdW5jdGlvbiBwcmVjb21wdXRlKCkge1xuICAvLyBOby1vcFxufTtcblxuUG9pbnQucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBfZW5jb2RlKCkge1xuICByZXR1cm4gdGhpcy5nZXRYKCkudG9BcnJheSgnYmUnLCB0aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpKTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaikge1xuICByZXR1cm4gbmV3IFBvaW50KGN1cnZlLCBvYmpbMF0sIG9ialsxXSB8fCBjdXJ2ZS5vbmUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy56LmNtcG4oMCkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICAvLyBodHRwOi8vaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLW1vbnRnb20teHouaHRtbCNkb3VibGluZy1kYmwtMTk4Ny1tLTNcbiAgLy8gMk0gKyAyUyArIDRBXG5cbiAgLy8gQSA9IFgxICsgWjFcbiAgdmFyIGEgPSB0aGlzLngucmVkQWRkKHRoaXMueik7XG4gIC8vIEFBID0gQV4yXG4gIHZhciBhYSA9IGEucmVkU3FyKCk7XG4gIC8vIEIgPSBYMSAtIFoxXG4gIHZhciBiID0gdGhpcy54LnJlZFN1Yih0aGlzLnopO1xuICAvLyBCQiA9IEJeMlxuICB2YXIgYmIgPSBiLnJlZFNxcigpO1xuICAvLyBDID0gQUEgLSBCQlxuICB2YXIgYyA9IGFhLnJlZFN1YihiYik7XG4gIC8vIFgzID0gQUEgKiBCQlxuICB2YXIgbnggPSBhYS5yZWRNdWwoYmIpO1xuICAvLyBaMyA9IEMgKiAoQkIgKyBBMjQgKiBDKVxuICB2YXIgbnogPSBjLnJlZE11bChiYi5yZWRBZGQodGhpcy5jdXJ2ZS5hMjQucmVkTXVsKGMpKSk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZScpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRpZmZBZGQgPSBmdW5jdGlvbiBkaWZmQWRkKHAsIGRpZmYpIHtcbiAgLy8gaHR0cDovL2h5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1tb250Z29tLXh6Lmh0bWwjZGlmZmFkZC1kYWRkLTE5ODctbS0zXG4gIC8vIDRNICsgMlMgKyA2QVxuXG4gIC8vIEEgPSBYMiArIFoyXG4gIHZhciBhID0gdGhpcy54LnJlZEFkZCh0aGlzLnopO1xuICAvLyBCID0gWDIgLSBaMlxuICB2YXIgYiA9IHRoaXMueC5yZWRTdWIodGhpcy56KTtcbiAgLy8gQyA9IFgzICsgWjNcbiAgdmFyIGMgPSBwLngucmVkQWRkKHAueik7XG4gIC8vIEQgPSBYMyAtIFozXG4gIHZhciBkID0gcC54LnJlZFN1YihwLnopO1xuICAvLyBEQSA9IEQgKiBBXG4gIHZhciBkYSA9IGQucmVkTXVsKGEpO1xuICAvLyBDQiA9IEMgKiBCXG4gIHZhciBjYiA9IGMucmVkTXVsKGIpO1xuICAvLyBYNSA9IFoxICogKERBICsgQ0IpXjJcbiAgdmFyIG54ID0gZGlmZi56LnJlZE11bChkYS5yZWRBZGQoY2IpLnJlZFNxcigpKTtcbiAgLy8gWjUgPSBYMSAqIChEQSAtIENCKV4yXG4gIHZhciBueiA9IGRpZmYueC5yZWRNdWwoZGEucmVkSVN1YihjYikucmVkU3FyKCkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIHZhciB0ID0gay5jbG9uZSgpO1xuICB2YXIgYSA9IHRoaXM7IC8vIChOIC8gMikgKiBRICsgUVxuICB2YXIgYiA9IHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7IC8vIChOIC8gMikgKiBRXG4gIHZhciBjID0gdGhpczsgLy8gUVxuXG4gIGZvciAodmFyIGJpdHMgPSBbXTsgdC5jbXBuKDApICE9PSAwOyB0Lml1c2hybigxKSlcbiAgICBiaXRzLnB1c2godC5hbmRsbigxKSk7XG5cbiAgZm9yICh2YXIgaSA9IGJpdHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBpZiAoYml0c1tpXSA9PT0gMCkge1xuICAgICAgLy8gTiAqIFEgKyBRID0gKChOIC8gMikgKiBRICsgUSkpICsgKE4gLyAyKSAqIFFcbiAgICAgIGEgPSBhLmRpZmZBZGQoYiwgYyk7XG4gICAgICAvLyBOICogUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKSlcbiAgICAgIGIgPSBiLmRibCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBOICogUSA9ICgoTiAvIDIpICogUSArIFEpICsgKChOIC8gMikgKiBRKVxuICAgICAgYiA9IGEuZGlmZkFkZChiLCBjKTtcbiAgICAgIC8vIE4gKiBRICsgUSA9IDIgKiAoKE4gLyAyKSAqIFEgKyBRKVxuICAgICAgYSA9IGEuZGJsKCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBiO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5qdW1sQWRkID0gZnVuY3Rpb24ganVtbEFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKG90aGVyKSB7XG4gIHJldHVybiB0aGlzLmdldFgoKS5jbXAob3RoZXIuZ2V0WCgpKSA9PT0gMDtcbn07XG5cblBvaW50LnByb3RvdHlwZS5ub3JtYWxpemUgPSBmdW5jdGlvbiBub3JtYWxpemUoKSB7XG4gIHRoaXMueCA9IHRoaXMueC5yZWRNdWwodGhpcy56LnJlZEludm0oKSk7XG4gIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICByZXR1cm4gdGhpcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgLy8gTm9ybWFsaXplIGNvb3JkaW5hdGVzXG4gIHRoaXMubm9ybWFsaXplKCk7XG5cbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpO1xuXG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBTaG9ydEN1cnZlKGNvbmYpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdzaG9ydCcsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYiA9IG5ldyBCTihjb25mLmIsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMudGludiA9IHRoaXMudHdvLnJlZEludm0oKTtcblxuICB0aGlzLnplcm9BID0gdGhpcy5hLmZyb21SZWQoKS5jbXBuKDApID09PSAwO1xuICB0aGlzLnRocmVlQSA9IHRoaXMuYS5mcm9tUmVkKCkuc3ViKHRoaXMucCkuY21wbigtMykgPT09IDA7XG5cbiAgLy8gSWYgdGhlIGN1cnZlIGlzIGVuZG9tb3JwaGljLCBwcmVjYWxjdWxhdGUgYmV0YSBhbmQgbGFtYmRhXG4gIHRoaXMuZW5kbyA9IHRoaXMuX2dldEVuZG9tb3JwaGlzbShjb25mKTtcbiAgdGhpcy5fZW5kb1duYWZUMSA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fZW5kb1duYWZUMiA9IG5ldyBBcnJheSg0KTtcbn1cbmluaGVyaXRzKFNob3J0Q3VydmUsIEJhc2UpO1xubW9kdWxlLmV4cG9ydHMgPSBTaG9ydEN1cnZlO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZ2V0RW5kb21vcnBoaXNtID0gZnVuY3Rpb24gX2dldEVuZG9tb3JwaGlzbShjb25mKSB7XG4gIC8vIE5vIGVmZmljaWVudCBlbmRvbW9ycGhpc21cbiAgaWYgKCF0aGlzLnplcm9BIHx8ICF0aGlzLmcgfHwgIXRoaXMubiB8fCB0aGlzLnAubW9kbigzKSAhPT0gMSlcbiAgICByZXR1cm47XG5cbiAgLy8gQ29tcHV0ZSBiZXRhIGFuZCBsYW1iZGEsIHRoYXQgbGFtYmRhICogUCA9IChiZXRhICogUHg7IFB5KVxuICB2YXIgYmV0YTtcbiAgdmFyIGxhbWJkYTtcbiAgaWYgKGNvbmYuYmV0YSkge1xuICAgIGJldGEgPSBuZXcgQk4oY29uZi5iZXRhLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB9IGVsc2Uge1xuICAgIHZhciBiZXRhcyA9IHRoaXMuX2dldEVuZG9Sb290cyh0aGlzLnApO1xuICAgIC8vIENob29zZSB0aGUgc21hbGxlc3QgYmV0YVxuICAgIGJldGEgPSBiZXRhc1swXS5jbXAoYmV0YXNbMV0pIDwgMCA/IGJldGFzWzBdIDogYmV0YXNbMV07XG4gICAgYmV0YSA9IGJldGEudG9SZWQodGhpcy5yZWQpO1xuICB9XG4gIGlmIChjb25mLmxhbWJkYSkge1xuICAgIGxhbWJkYSA9IG5ldyBCTihjb25mLmxhbWJkYSwgMTYpO1xuICB9IGVsc2Uge1xuICAgIC8vIENob29zZSB0aGUgbGFtYmRhIHRoYXQgaXMgbWF0Y2hpbmcgc2VsZWN0ZWQgYmV0YVxuICAgIHZhciBsYW1iZGFzID0gdGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMubik7XG4gICAgaWYgKHRoaXMuZy5tdWwobGFtYmRhc1swXSkueC5jbXAodGhpcy5nLngucmVkTXVsKGJldGEpKSA9PT0gMCkge1xuICAgICAgbGFtYmRhID0gbGFtYmRhc1swXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFtYmRhID0gbGFtYmRhc1sxXTtcbiAgICAgIGFzc2VydCh0aGlzLmcubXVsKGxhbWJkYSkueC5jbXAodGhpcy5nLngucmVkTXVsKGJldGEpKSA9PT0gMCk7XG4gICAgfVxuICB9XG5cbiAgLy8gR2V0IGJhc2lzIHZlY3RvcnMsIHVzZWQgZm9yIGJhbGFuY2VkIGxlbmd0aC10d28gcmVwcmVzZW50YXRpb25cbiAgdmFyIGJhc2lzO1xuICBpZiAoY29uZi5iYXNpcykge1xuICAgIGJhc2lzID0gY29uZi5iYXNpcy5tYXAoZnVuY3Rpb24odmVjKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhOiBuZXcgQk4odmVjLmEsIDE2KSxcbiAgICAgICAgYjogbmV3IEJOKHZlYy5iLCAxNiksXG4gICAgICB9O1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGJhc2lzID0gdGhpcy5fZ2V0RW5kb0Jhc2lzKGxhbWJkYSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGJldGE6IGJldGEsXG4gICAgbGFtYmRhOiBsYW1iZGEsXG4gICAgYmFzaXM6IGJhc2lzLFxuICB9O1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9Sb290cyA9IGZ1bmN0aW9uIF9nZXRFbmRvUm9vdHMobnVtKSB7XG4gIC8vIEZpbmQgcm9vdHMgb2YgZm9yIHheMiArIHggKyAxIGluIEZcbiAgLy8gUm9vdCA9ICgtMSArLSBTcXJ0KC0zKSkgLyAyXG4gIC8vXG4gIHZhciByZWQgPSBudW0gPT09IHRoaXMucCA/IHRoaXMucmVkIDogQk4ubW9udChudW0pO1xuICB2YXIgdGludiA9IG5ldyBCTigyKS50b1JlZChyZWQpLnJlZEludm0oKTtcbiAgdmFyIG50aW52ID0gdGludi5yZWROZWcoKTtcblxuICB2YXIgcyA9IG5ldyBCTigzKS50b1JlZChyZWQpLnJlZE5lZygpLnJlZFNxcnQoKS5yZWRNdWwodGludik7XG5cbiAgdmFyIGwxID0gbnRpbnYucmVkQWRkKHMpLmZyb21SZWQoKTtcbiAgdmFyIGwyID0gbnRpbnYucmVkU3ViKHMpLmZyb21SZWQoKTtcbiAgcmV0dXJuIFsgbDEsIGwyIF07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZ2V0RW5kb0Jhc2lzID0gZnVuY3Rpb24gX2dldEVuZG9CYXNpcyhsYW1iZGEpIHtcbiAgLy8gYXByeFNxcnQgPj0gc3FydCh0aGlzLm4pXG4gIHZhciBhcHJ4U3FydCA9IHRoaXMubi51c2hybihNYXRoLmZsb29yKHRoaXMubi5iaXRMZW5ndGgoKSAvIDIpKTtcblxuICAvLyAzLjc0XG4gIC8vIFJ1biBFR0NELCB1bnRpbCByKEwgKyAxKSA8IGFwcnhTcXJ0XG4gIHZhciB1ID0gbGFtYmRhO1xuICB2YXIgdiA9IHRoaXMubi5jbG9uZSgpO1xuICB2YXIgeDEgPSBuZXcgQk4oMSk7XG4gIHZhciB5MSA9IG5ldyBCTigwKTtcbiAgdmFyIHgyID0gbmV3IEJOKDApO1xuICB2YXIgeTIgPSBuZXcgQk4oMSk7XG5cbiAgLy8gTk9URTogYWxsIHZlY3RvcnMgYXJlIHJvb3RzIG9mOiBhICsgYiAqIGxhbWJkYSA9IDAgKG1vZCBuKVxuICB2YXIgYTA7XG4gIHZhciBiMDtcbiAgLy8gRmlyc3QgdmVjdG9yXG4gIHZhciBhMTtcbiAgdmFyIGIxO1xuICAvLyBTZWNvbmQgdmVjdG9yXG4gIHZhciBhMjtcbiAgdmFyIGIyO1xuXG4gIHZhciBwcmV2UjtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcjtcbiAgdmFyIHg7XG4gIHdoaWxlICh1LmNtcG4oMCkgIT09IDApIHtcbiAgICB2YXIgcSA9IHYuZGl2KHUpO1xuICAgIHIgPSB2LnN1YihxLm11bCh1KSk7XG4gICAgeCA9IHgyLnN1YihxLm11bCh4MSkpO1xuICAgIHZhciB5ID0geTIuc3ViKHEubXVsKHkxKSk7XG5cbiAgICBpZiAoIWExICYmIHIuY21wKGFwcnhTcXJ0KSA8IDApIHtcbiAgICAgIGEwID0gcHJldlIubmVnKCk7XG4gICAgICBiMCA9IHgxO1xuICAgICAgYTEgPSByLm5lZygpO1xuICAgICAgYjEgPSB4O1xuICAgIH0gZWxzZSBpZiAoYTEgJiYgKytpID09PSAyKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcHJldlIgPSByO1xuXG4gICAgdiA9IHU7XG4gICAgdSA9IHI7XG4gICAgeDIgPSB4MTtcbiAgICB4MSA9IHg7XG4gICAgeTIgPSB5MTtcbiAgICB5MSA9IHk7XG4gIH1cbiAgYTIgPSByLm5lZygpO1xuICBiMiA9IHg7XG5cbiAgdmFyIGxlbjEgPSBhMS5zcXIoKS5hZGQoYjEuc3FyKCkpO1xuICB2YXIgbGVuMiA9IGEyLnNxcigpLmFkZChiMi5zcXIoKSk7XG4gIGlmIChsZW4yLmNtcChsZW4xKSA+PSAwKSB7XG4gICAgYTIgPSBhMDtcbiAgICBiMiA9IGIwO1xuICB9XG5cbiAgLy8gTm9ybWFsaXplIHNpZ25zXG4gIGlmIChhMS5uZWdhdGl2ZSkge1xuICAgIGExID0gYTEubmVnKCk7XG4gICAgYjEgPSBiMS5uZWcoKTtcbiAgfVxuICBpZiAoYTIubmVnYXRpdmUpIHtcbiAgICBhMiA9IGEyLm5lZygpO1xuICAgIGIyID0gYjIubmVnKCk7XG4gIH1cblxuICByZXR1cm4gW1xuICAgIHsgYTogYTEsIGI6IGIxIH0sXG4gICAgeyBhOiBhMiwgYjogYjIgfSxcbiAgXTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvU3BsaXQgPSBmdW5jdGlvbiBfZW5kb1NwbGl0KGspIHtcbiAgdmFyIGJhc2lzID0gdGhpcy5lbmRvLmJhc2lzO1xuICB2YXIgdjEgPSBiYXNpc1swXTtcbiAgdmFyIHYyID0gYmFzaXNbMV07XG5cbiAgdmFyIGMxID0gdjIuYi5tdWwoaykuZGl2Um91bmQodGhpcy5uKTtcbiAgdmFyIGMyID0gdjEuYi5uZWcoKS5tdWwoaykuZGl2Um91bmQodGhpcy5uKTtcblxuICB2YXIgcDEgPSBjMS5tdWwodjEuYSk7XG4gIHZhciBwMiA9IGMyLm11bCh2Mi5hKTtcbiAgdmFyIHExID0gYzEubXVsKHYxLmIpO1xuICB2YXIgcTIgPSBjMi5tdWwodjIuYik7XG5cbiAgLy8gQ2FsY3VsYXRlIGFuc3dlclxuICB2YXIgazEgPSBrLnN1YihwMSkuc3ViKHAyKTtcbiAgdmFyIGsyID0gcTEuYWRkKHEyKS5uZWcoKTtcbiAgcmV0dXJuIHsgazE6IGsxLCBrMjogazIgfTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnBvaW50RnJvbVggPSBmdW5jdGlvbiBwb2ludEZyb21YKHgsIG9kZCkge1xuICB4ID0gbmV3IEJOKHgsIDE2KTtcbiAgaWYgKCF4LnJlZClcbiAgICB4ID0geC50b1JlZCh0aGlzLnJlZCk7XG5cbiAgdmFyIHkyID0geC5yZWRTcXIoKS5yZWRNdWwoeCkucmVkSUFkZCh4LnJlZE11bCh0aGlzLmEpKS5yZWRJQWRkKHRoaXMuYik7XG4gIHZhciB5ID0geTIucmVkU3FydCgpO1xuICBpZiAoeS5yZWRTcXIoKS5yZWRTdWIoeTIpLmNtcCh0aGlzLnplcm8pICE9PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuXG4gIC8vIFhYWCBJcyB0aGVyZSBhbnkgd2F5IHRvIHRlbGwgaWYgdGhlIG51bWJlciBpcyBvZGQgd2l0aG91dCBjb252ZXJ0aW5nIGl0XG4gIC8vIHRvIG5vbi1yZWQgZm9ybT9cbiAgdmFyIGlzT2RkID0geS5mcm9tUmVkKCkuaXNPZGQoKTtcbiAgaWYgKG9kZCAmJiAhaXNPZGQgfHwgIW9kZCAmJiBpc09kZClcbiAgICB5ID0geS5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUocG9pbnQpIHtcbiAgaWYgKHBvaW50LmluZilcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeCA9IHBvaW50Lng7XG4gIHZhciB5ID0gcG9pbnQueTtcblxuICB2YXIgYXggPSB0aGlzLmEucmVkTXVsKHgpO1xuICB2YXIgcmhzID0geC5yZWRTcXIoKS5yZWRNdWwoeCkucmVkSUFkZChheCkucmVkSUFkZCh0aGlzLmIpO1xuICByZXR1cm4geS5yZWRTcXIoKS5yZWRJU3ViKHJocykuY21wbigwKSA9PT0gMDtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9lbmRvV25hZk11bEFkZCA9XG4gICAgZnVuY3Rpb24gX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzLCBqYWNvYmlhblJlc3VsdCkge1xuICAgICAgdmFyIG5wb2ludHMgPSB0aGlzLl9lbmRvV25hZlQxO1xuICAgICAgdmFyIG5jb2VmZnMgPSB0aGlzLl9lbmRvV25hZlQyO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gdGhpcy5fZW5kb1NwbGl0KGNvZWZmc1tpXSk7XG4gICAgICAgIHZhciBwID0gcG9pbnRzW2ldO1xuICAgICAgICB2YXIgYmV0YSA9IHAuX2dldEJldGEoKTtcblxuICAgICAgICBpZiAoc3BsaXQuazEubmVnYXRpdmUpIHtcbiAgICAgICAgICBzcGxpdC5rMS5pbmVnKCk7XG4gICAgICAgICAgcCA9IHAubmVnKHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzcGxpdC5rMi5uZWdhdGl2ZSkge1xuICAgICAgICAgIHNwbGl0LmsyLmluZWcoKTtcbiAgICAgICAgICBiZXRhID0gYmV0YS5uZWcodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBucG9pbnRzW2kgKiAyXSA9IHA7XG4gICAgICAgIG5wb2ludHNbaSAqIDIgKyAxXSA9IGJldGE7XG4gICAgICAgIG5jb2VmZnNbaSAqIDJdID0gc3BsaXQuazE7XG4gICAgICAgIG5jb2VmZnNbaSAqIDIgKyAxXSA9IHNwbGl0LmsyO1xuICAgICAgfVxuICAgICAgdmFyIHJlcyA9IHRoaXMuX3duYWZNdWxBZGQoMSwgbnBvaW50cywgbmNvZWZmcywgaSAqIDIsIGphY29iaWFuUmVzdWx0KTtcblxuICAgICAgLy8gQ2xlYW4tdXAgcmVmZXJlbmNlcyB0byBwb2ludHMgYW5kIGNvZWZmaWNpZW50c1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpICogMjsgaisrKSB7XG4gICAgICAgIG5wb2ludHNbal0gPSBudWxsO1xuICAgICAgICBuY29lZmZzW2pdID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHksIGlzUmVkKSB7XG4gIEJhc2UuQmFzZVBvaW50LmNhbGwodGhpcywgY3VydmUsICdhZmZpbmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IG51bGw7XG4gICAgdGhpcy55ID0gbnVsbDtcbiAgICB0aGlzLmluZiA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnkgPSBuZXcgQk4oeSwgMTYpO1xuICAgIC8vIEZvcmNlIHJlZGdvbWVyeSByZXByZXNlbnRhdGlvbiB3aGVuIGxvYWRpbmcgZnJvbSBKU09OXG4gICAgaWYgKGlzUmVkKSB7XG4gICAgICB0aGlzLnguZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgICAgdGhpcy55LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLngucmVkKVxuICAgICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMueS5yZWQpXG4gICAgICB0aGlzLnkgPSB0aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIHRoaXMuaW5mID0gZmFsc2U7XG4gIH1cbn1cbmluaGVyaXRzKFBvaW50LCBCYXNlLkJhc2VQb2ludCk7XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoeCwgeSwgaXNSZWQpIHtcbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLCB4LCB5LCBpc1JlZCk7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludEZyb21KU09OID0gZnVuY3Rpb24gcG9pbnRGcm9tSlNPTihvYmosIHJlZCkge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqLCByZWQpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9nZXRCZXRhID0gZnVuY3Rpb24gX2dldEJldGEoKSB7XG4gIGlmICghdGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybjtcblxuICB2YXIgcHJlID0gdGhpcy5wcmVjb21wdXRlZDtcbiAgaWYgKHByZSAmJiBwcmUuYmV0YSlcbiAgICByZXR1cm4gcHJlLmJldGE7XG5cbiAgdmFyIGJldGEgPSB0aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWRNdWwodGhpcy5jdXJ2ZS5lbmRvLmJldGEpLCB0aGlzLnkpO1xuICBpZiAocHJlKSB7XG4gICAgdmFyIGN1cnZlID0gdGhpcy5jdXJ2ZTtcbiAgICB2YXIgZW5kb011bCA9IGZ1bmN0aW9uKHApIHtcbiAgICAgIHJldHVybiBjdXJ2ZS5wb2ludChwLngucmVkTXVsKGN1cnZlLmVuZG8uYmV0YSksIHAueSk7XG4gICAgfTtcbiAgICBwcmUuYmV0YSA9IGJldGE7XG4gICAgYmV0YS5wcmVjb21wdXRlZCA9IHtcbiAgICAgIGJldGE6IG51bGwsXG4gICAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgICBwb2ludHM6IHByZS5uYWYucG9pbnRzLm1hcChlbmRvTXVsKSxcbiAgICAgIH0sXG4gICAgICBkb3VibGVzOiBwcmUuZG91YmxlcyAmJiB7XG4gICAgICAgIHN0ZXA6IHByZS5kb3VibGVzLnN0ZXAsXG4gICAgICAgIHBvaW50czogcHJlLmRvdWJsZXMucG9pbnRzLm1hcChlbmRvTXVsKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICByZXR1cm4gYmV0YTtcbn07XG5cblBvaW50LnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04oKSB7XG4gIGlmICghdGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gWyB0aGlzLngsIHRoaXMueSBdO1xuXG4gIHJldHVybiBbIHRoaXMueCwgdGhpcy55LCB0aGlzLnByZWNvbXB1dGVkICYmIHtcbiAgICBkb3VibGVzOiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMgJiYge1xuICAgICAgc3RlcDogdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnN0ZXAsXG4gICAgICBwb2ludHM6IHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5wb2ludHMuc2xpY2UoMSksXG4gICAgfSxcbiAgICBuYWY6IHRoaXMucHJlY29tcHV0ZWQubmFmICYmIHtcbiAgICAgIHduZDogdGhpcy5wcmVjb21wdXRlZC5uYWYud25kLFxuICAgICAgcG9pbnRzOiB0aGlzLnByZWNvbXB1dGVkLm5hZi5wb2ludHMuc2xpY2UoMSksXG4gICAgfSxcbiAgfSBdO1xufTtcblxuUG9pbnQuZnJvbUpTT04gPSBmdW5jdGlvbiBmcm9tSlNPTihjdXJ2ZSwgb2JqLCByZWQpIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKVxuICAgIG9iaiA9IEpTT04ucGFyc2Uob2JqKTtcbiAgdmFyIHJlcyA9IGN1cnZlLnBvaW50KG9ialswXSwgb2JqWzFdLCByZWQpO1xuICBpZiAoIW9ialsyXSlcbiAgICByZXR1cm4gcmVzO1xuXG4gIGZ1bmN0aW9uIG9iajJwb2ludChvYmopIHtcbiAgICByZXR1cm4gY3VydmUucG9pbnQob2JqWzBdLCBvYmpbMV0sIHJlZCk7XG4gIH1cblxuICB2YXIgcHJlID0gb2JqWzJdO1xuICByZXMucHJlY29tcHV0ZWQgPSB7XG4gICAgYmV0YTogbnVsbCxcbiAgICBkb3VibGVzOiBwcmUuZG91YmxlcyAmJiB7XG4gICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgcG9pbnRzOiBbIHJlcyBdLmNvbmNhdChwcmUuZG91Ymxlcy5wb2ludHMubWFwKG9iajJwb2ludCkpLFxuICAgIH0sXG4gICAgbmFmOiBwcmUubmFmICYmIHtcbiAgICAgIHduZDogcHJlLm5hZi53bmQsXG4gICAgICBwb2ludHM6IFsgcmVzIF0uY29uY2F0KHByZS5uYWYucG9pbnRzLm1hcChvYmoycG9pbnQpKSxcbiAgICB9LFxuICB9O1xuICByZXR1cm4gcmVzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgeTogJyArIHRoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICByZXR1cm4gdGhpcy5pbmY7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gcDtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIFAgKyBQID0gMlBcbiAgaWYgKHRoaXMuZXEocCkpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCk7XG5cbiAgLy8gUCArICgtUCkgPSBPXG4gIGlmICh0aGlzLm5lZygpLmVxKHApKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIC8vIFAgKyBRID0gT1xuICBpZiAodGhpcy54LmNtcChwLngpID09PSAwKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciBjID0gdGhpcy55LnJlZFN1YihwLnkpO1xuICBpZiAoYy5jbXBuKDApICE9PSAwKVxuICAgIGMgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKHAueCkucmVkSW52bSgpKTtcbiAgdmFyIG54ID0gYy5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueCkucmVkSVN1YihwLngpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKG54KSkucmVkSVN1Yih0aGlzLnkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDJQID0gT1xuICB2YXIgeXMxID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICBpZiAoeXMxLmNtcG4oMCkgPT09IDApXG4gICAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7XG5cbiAgdmFyIGEgPSB0aGlzLmN1cnZlLmE7XG5cbiAgdmFyIHgyID0gdGhpcy54LnJlZFNxcigpO1xuICB2YXIgZHlpbnYgPSB5czEucmVkSW52bSgpO1xuICB2YXIgYyA9IHgyLnJlZEFkZCh4MikucmVkSUFkZCh4MikucmVkSUFkZChhKS5yZWRNdWwoZHlpbnYpO1xuXG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0aGlzLngucmVkQWRkKHRoaXMueCkpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0aGlzLngucmVkU3ViKG54KSkucmVkSVN1Yih0aGlzLnkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFggPSBmdW5jdGlvbiBnZXRYKCkge1xuICByZXR1cm4gdGhpcy54LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gZ2V0WSgpIHtcbiAgcmV0dXJuIHRoaXMueS5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGspIHtcbiAgayA9IG5ldyBCTihrLCAxNik7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcbiAgZWxzZSBpZiAodGhpcy5faGFzRG91YmxlcyhrKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcywgayk7XG4gIGVsc2UgaWYgKHRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQoWyB0aGlzIF0sIFsgayBdKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsIGspO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZChrMSwgcDIsIGsyKSB7XG4gIHZhciBwb2ludHMgPSBbIHRoaXMsIHAyIF07XG4gIHZhciBjb2VmZnMgPSBbIGsxLCBrMiBdO1xuICBpZiAodGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChwb2ludHMsIGNvZWZmcyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLCBwb2ludHMsIGNvZWZmcywgMik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuam11bEFkZCA9IGZ1bmN0aW9uIGptdWxBZGQoazEsIHAyLCBrMikge1xuICB2YXIgcG9pbnRzID0gWyB0aGlzLCBwMiBdO1xuICB2YXIgY29lZmZzID0gWyBrMSwgazIgXTtcbiAgaWYgKHRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQocG9pbnRzLCBjb2VmZnMsIHRydWUpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgcG9pbnRzLCBjb2VmZnMsIDIsIHRydWUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEocCkge1xuICByZXR1cm4gdGhpcyA9PT0gcCB8fFxuICAgICAgICAgdGhpcy5pbmYgPT09IHAuaW5mICYmXG4gICAgICAgICAgICAgKHRoaXMuaW5mIHx8IHRoaXMueC5jbXAocC54KSA9PT0gMCAmJiB0aGlzLnkuY21wKHAueSkgPT09IDApO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyhfcHJlY29tcHV0ZSkge1xuICBpZiAodGhpcy5pbmYpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgdmFyIHJlcyA9IHRoaXMuY3VydmUucG9pbnQodGhpcy54LCB0aGlzLnkucmVkTmVnKCkpO1xuICBpZiAoX3ByZWNvbXB1dGUgJiYgdGhpcy5wcmVjb21wdXRlZCkge1xuICAgIHZhciBwcmUgPSB0aGlzLnByZWNvbXB1dGVkO1xuICAgIHZhciBuZWdhdGUgPSBmdW5jdGlvbihwKSB7XG4gICAgICByZXR1cm4gcC5uZWcoKTtcbiAgICB9O1xuICAgIHJlcy5wcmVjb21wdXRlZCA9IHtcbiAgICAgIG5hZjogcHJlLm5hZiAmJiB7XG4gICAgICAgIHduZDogcHJlLm5hZi53bmQsXG4gICAgICAgIHBvaW50czogcHJlLm5hZi5wb2ludHMubWFwKG5lZ2F0ZSksXG4gICAgICB9LFxuICAgICAgZG91YmxlczogcHJlLmRvdWJsZXMgJiYge1xuICAgICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgICBwb2ludHM6IHByZS5kb3VibGVzLnBvaW50cy5tYXAobmVnYXRlKSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLnRvSiA9IGZ1bmN0aW9uIHRvSigpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcblxuICB2YXIgcmVzID0gdGhpcy5jdXJ2ZS5qcG9pbnQodGhpcy54LCB0aGlzLnksIHRoaXMuY3VydmUub25lKTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbmZ1bmN0aW9uIEpQb2ludChjdXJ2ZSwgeCwgeSwgeikge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAnamFjb2JpYW4nKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy55ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gbmV3IEJOKDApO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy55ID0gbmV3IEJOKHksIDE2KTtcbiAgICB0aGlzLnogPSBuZXcgQk4oeiwgMTYpO1xuICB9XG4gIGlmICghdGhpcy54LnJlZClcbiAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICBpZiAoIXRoaXMueS5yZWQpXG4gICAgdGhpcy55ID0gdGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgaWYgKCF0aGlzLnoucmVkKVxuICAgIHRoaXMueiA9IHRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG5cbiAgdGhpcy56T25lID0gdGhpcy56ID09PSB0aGlzLmN1cnZlLm9uZTtcbn1cbmluaGVyaXRzKEpQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5qcG9pbnQgPSBmdW5jdGlvbiBqcG9pbnQoeCwgeSwgeikge1xuICByZXR1cm4gbmV3IEpQb2ludCh0aGlzLCB4LCB5LCB6KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUudG9QID0gZnVuY3Rpb24gdG9QKCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7XG5cbiAgdmFyIHppbnYgPSB0aGlzLnoucmVkSW52bSgpO1xuICB2YXIgemludjIgPSB6aW52LnJlZFNxcigpO1xuICB2YXIgYXggPSB0aGlzLngucmVkTXVsKHppbnYyKTtcbiAgdmFyIGF5ID0gdGhpcy55LnJlZE11bCh6aW52MikucmVkTXVsKHppbnYpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KGF4LCBheSk7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZygpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KHRoaXMueCwgdGhpcy55LnJlZE5lZygpLCB0aGlzLnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQocCkge1xuICAvLyBPICsgUCA9IFBcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiBwO1xuXG4gIC8vIFAgKyBPID0gUFxuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gMTJNICsgNFMgKyA3QVxuICB2YXIgcHoyID0gcC56LnJlZFNxcigpO1xuICB2YXIgejIgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciB1MSA9IHRoaXMueC5yZWRNdWwocHoyKTtcbiAgdmFyIHUyID0gcC54LnJlZE11bCh6Mik7XG4gIHZhciBzMSA9IHRoaXMueS5yZWRNdWwocHoyLnJlZE11bChwLnopKTtcbiAgdmFyIHMyID0gcC55LnJlZE11bCh6Mi5yZWRNdWwodGhpcy56KSk7XG5cbiAgdmFyIGggPSB1MS5yZWRTdWIodTIpO1xuICB2YXIgciA9IHMxLnJlZFN1YihzMik7XG4gIGlmIChoLmNtcG4oMCkgPT09IDApIHtcbiAgICBpZiAoci5jbXBuKDApICE9PSAwKVxuICAgICAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLmRibCgpO1xuICB9XG5cbiAgdmFyIGgyID0gaC5yZWRTcXIoKTtcbiAgdmFyIGgzID0gaDIucmVkTXVsKGgpO1xuICB2YXIgdiA9IHUxLnJlZE11bChoMik7XG5cbiAgdmFyIG54ID0gci5yZWRTcXIoKS5yZWRJQWRkKGgzKS5yZWRJU3ViKHYpLnJlZElTdWIodik7XG4gIHZhciBueSA9IHIucmVkTXVsKHYucmVkSVN1YihueCkpLnJlZElTdWIoczEucmVkTXVsKGgzKSk7XG4gIHZhciBueiA9IHRoaXMuei5yZWRNdWwocC56KS5yZWRNdWwoaCk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5taXhlZEFkZCA9IGZ1bmN0aW9uIG1peGVkQWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gcC50b0ooKTtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDhNICsgM1MgKyA3QVxuICB2YXIgejIgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciB1MSA9IHRoaXMueDtcbiAgdmFyIHUyID0gcC54LnJlZE11bCh6Mik7XG4gIHZhciBzMSA9IHRoaXMueTtcbiAgdmFyIHMyID0gcC55LnJlZE11bCh6MikucmVkTXVsKHRoaXMueik7XG5cbiAgdmFyIGggPSB1MS5yZWRTdWIodTIpO1xuICB2YXIgciA9IHMxLnJlZFN1YihzMik7XG4gIGlmIChoLmNtcG4oMCkgPT09IDApIHtcbiAgICBpZiAoci5jbXBuKDApICE9PSAwKVxuICAgICAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLmRibCgpO1xuICB9XG5cbiAgdmFyIGgyID0gaC5yZWRTcXIoKTtcbiAgdmFyIGgzID0gaDIucmVkTXVsKGgpO1xuICB2YXIgdiA9IHUxLnJlZE11bChoMik7XG5cbiAgdmFyIG54ID0gci5yZWRTcXIoKS5yZWRJQWRkKGgzKS5yZWRJU3ViKHYpLnJlZElTdWIodik7XG4gIHZhciBueSA9IHIucmVkTXVsKHYucmVkSVN1YihueCkpLnJlZElTdWIoczEucmVkTXVsKGgzKSk7XG4gIHZhciBueiA9IHRoaXMuei5yZWRNdWwoaCk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5kYmxwID0gZnVuY3Rpb24gZGJscChwb3cpIHtcbiAgaWYgKHBvdyA9PT0gMClcbiAgICByZXR1cm4gdGhpcztcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuICBpZiAoIXBvdylcbiAgICByZXR1cm4gdGhpcy5kYmwoKTtcblxuICB2YXIgaTtcbiAgaWYgKHRoaXMuY3VydmUuemVyb0EgfHwgdGhpcy5jdXJ2ZS50aHJlZUEpIHtcbiAgICB2YXIgciA9IHRoaXM7XG4gICAgZm9yIChpID0gMDsgaSA8IHBvdzsgaSsrKVxuICAgICAgciA9IHIuZGJsKCk7XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICAvLyAxTSArIDJTICsgMUEgKyBOICogKDRTICsgNU0gKyA4QSlcbiAgLy8gTiA9IDEgPT4gNk0gKyA2UyArIDlBXG4gIHZhciBhID0gdGhpcy5jdXJ2ZS5hO1xuICB2YXIgdGludiA9IHRoaXMuY3VydmUudGludjtcblxuICB2YXIganggPSB0aGlzLng7XG4gIHZhciBqeSA9IHRoaXMueTtcbiAgdmFyIGp6ID0gdGhpcy56O1xuICB2YXIgano0ID0ganoucmVkU3FyKCkucmVkU3FyKCk7XG5cbiAgLy8gUmV1c2UgcmVzdWx0c1xuICB2YXIganlkID0gankucmVkQWRkKGp5KTtcbiAgZm9yIChpID0gMDsgaSA8IHBvdzsgaSsrKSB7XG4gICAgdmFyIGp4MiA9IGp4LnJlZFNxcigpO1xuICAgIHZhciBqeWQyID0ganlkLnJlZFNxcigpO1xuICAgIHZhciBqeWQ0ID0ganlkMi5yZWRTcXIoKTtcbiAgICB2YXIgYyA9IGp4Mi5yZWRBZGQoangyKS5yZWRJQWRkKGp4MikucmVkSUFkZChhLnJlZE11bChqejQpKTtcblxuICAgIHZhciB0MSA9IGp4LnJlZE11bChqeWQyKTtcbiAgICB2YXIgbnggPSBjLnJlZFNxcigpLnJlZElTdWIodDEucmVkQWRkKHQxKSk7XG4gICAgdmFyIHQyID0gdDEucmVkSVN1YihueCk7XG4gICAgdmFyIGRueSA9IGMucmVkTXVsKHQyKTtcbiAgICBkbnkgPSBkbnkucmVkSUFkZChkbnkpLnJlZElTdWIoanlkNCk7XG4gICAgdmFyIG56ID0ganlkLnJlZE11bChqeik7XG4gICAgaWYgKGkgKyAxIDwgcG93KVxuICAgICAgano0ID0gano0LnJlZE11bChqeWQ0KTtcblxuICAgIGp4ID0gbng7XG4gICAganogPSBuejtcbiAgICBqeWQgPSBkbnk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQoangsIGp5ZC5yZWRNdWwodGludiksIGp6KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgaWYgKHRoaXMuY3VydmUuemVyb0EpXG4gICAgcmV0dXJuIHRoaXMuX3plcm9EYmwoKTtcbiAgZWxzZSBpZiAodGhpcy5jdXJ2ZS50aHJlZUEpXG4gICAgcmV0dXJuIHRoaXMuX3RocmVlRGJsKCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fZGJsKCk7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLl96ZXJvRGJsID0gZnVuY3Rpb24gX3plcm9EYmwoKSB7XG4gIHZhciBueDtcbiAgdmFyIG55O1xuICB2YXIgbno7XG4gIC8vIFogPSAxXG4gIGlmICh0aGlzLnpPbmUpIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTAuaHRtbFxuICAgIC8vICAgICAjZG91YmxpbmctbWRibC0yMDA3LWJsXG4gICAgLy8gMU0gKyA1UyArIDE0QVxuXG4gICAgLy8gWFggPSBYMV4yXG4gICAgdmFyIHh4ID0gdGhpcy54LnJlZFNxcigpO1xuICAgIC8vIFlZID0gWTFeMlxuICAgIHZhciB5eSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBZWVlZID0gWVleMlxuICAgIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gICAgLy8gUyA9IDIgKiAoKFgxICsgWVkpXjIgLSBYWCAtIFlZWVkpXG4gICAgdmFyIHMgPSB0aGlzLngucmVkQWRkKHl5KS5yZWRTcXIoKS5yZWRJU3ViKHh4KS5yZWRJU3ViKHl5eXkpO1xuICAgIHMgPSBzLnJlZElBZGQocyk7XG4gICAgLy8gTSA9IDMgKiBYWCArIGE7IGEgPSAwXG4gICAgdmFyIG0gPSB4eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpO1xuICAgIC8vIFQgPSBNIF4gMiAtIDIqU1xuICAgIHZhciB0ID0gbS5yZWRTcXIoKS5yZWRJU3ViKHMpLnJlZElTdWIocyk7XG5cbiAgICAvLyA4ICogWVlZWVxuICAgIHZhciB5eXl5OCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG5cbiAgICAvLyBYMyA9IFRcbiAgICBueCA9IHQ7XG4gICAgLy8gWTMgPSBNICogKFMgLSBUKSAtIDggKiBZWVlZXG4gICAgbnkgPSBtLnJlZE11bChzLnJlZElTdWIodCkpLnJlZElTdWIoeXl5eTgpO1xuICAgIC8vIFozID0gMipZMVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICB9IGVsc2Uge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMC5odG1sXG4gICAgLy8gICAgICNkb3VibGluZy1kYmwtMjAwOS1sXG4gICAgLy8gMk0gKyA1UyArIDEzQVxuXG4gICAgLy8gQSA9IFgxXjJcbiAgICB2YXIgYSA9IHRoaXMueC5yZWRTcXIoKTtcbiAgICAvLyBCID0gWTFeMlxuICAgIHZhciBiID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIEMgPSBCXjJcbiAgICB2YXIgYyA9IGIucmVkU3FyKCk7XG4gICAgLy8gRCA9IDIgKiAoKFgxICsgQileMiAtIEEgLSBDKVxuICAgIHZhciBkID0gdGhpcy54LnJlZEFkZChiKS5yZWRTcXIoKS5yZWRJU3ViKGEpLnJlZElTdWIoYyk7XG4gICAgZCA9IGQucmVkSUFkZChkKTtcbiAgICAvLyBFID0gMyAqIEFcbiAgICB2YXIgZSA9IGEucmVkQWRkKGEpLnJlZElBZGQoYSk7XG4gICAgLy8gRiA9IEVeMlxuICAgIHZhciBmID0gZS5yZWRTcXIoKTtcblxuICAgIC8vIDggKiBDXG4gICAgdmFyIGM4ID0gYy5yZWRJQWRkKGMpO1xuICAgIGM4ID0gYzgucmVkSUFkZChjOCk7XG4gICAgYzggPSBjOC5yZWRJQWRkKGM4KTtcblxuICAgIC8vIFgzID0gRiAtIDIgKiBEXG4gICAgbnggPSBmLnJlZElTdWIoZCkucmVkSVN1YihkKTtcbiAgICAvLyBZMyA9IEUgKiAoRCAtIFgzKSAtIDggKiBDXG4gICAgbnkgPSBlLnJlZE11bChkLnJlZElTdWIobngpKS5yZWRJU3ViKGM4KTtcbiAgICAvLyBaMyA9IDIgKiBZMSAqIFoxXG4gICAgbnogPSB0aGlzLnkucmVkTXVsKHRoaXMueik7XG4gICAgbnogPSBuei5yZWRJQWRkKG56KTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuX3RocmVlRGJsID0gZnVuY3Rpb24gX3RocmVlRGJsKCkge1xuICB2YXIgbng7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICAvLyBaID0gMVxuICBpZiAodGhpcy56T25lKSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0zLmh0bWxcbiAgICAvLyAgICAgI2RvdWJsaW5nLW1kYmwtMjAwNy1ibFxuICAgIC8vIDFNICsgNVMgKyAxNUFcblxuICAgIC8vIFhYID0gWDFeMlxuICAgIHZhciB4eCA9IHRoaXMueC5yZWRTcXIoKTtcbiAgICAvLyBZWSA9IFkxXjJcbiAgICB2YXIgeXkgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gWVlZWSA9IFlZXjJcbiAgICB2YXIgeXl5eSA9IHl5LnJlZFNxcigpO1xuICAgIC8vIFMgPSAyICogKChYMSArIFlZKV4yIC0gWFggLSBZWVlZKVxuICAgIHZhciBzID0gdGhpcy54LnJlZEFkZCh5eSkucmVkU3FyKCkucmVkSVN1Yih4eCkucmVkSVN1Yih5eXl5KTtcbiAgICBzID0gcy5yZWRJQWRkKHMpO1xuICAgIC8vIE0gPSAzICogWFggKyBhXG4gICAgdmFyIG0gPSB4eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpLnJlZElBZGQodGhpcy5jdXJ2ZS5hKTtcbiAgICAvLyBUID0gTV4yIC0gMiAqIFNcbiAgICB2YXIgdCA9IG0ucmVkU3FyKCkucmVkSVN1YihzKS5yZWRJU3ViKHMpO1xuICAgIC8vIFgzID0gVFxuICAgIG54ID0gdDtcbiAgICAvLyBZMyA9IE0gKiAoUyAtIFQpIC0gOCAqIFlZWVlcbiAgICB2YXIgeXl5eTggPSB5eXl5LnJlZElBZGQoeXl5eSk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuICAgIG55ID0gbS5yZWRNdWwocy5yZWRJU3ViKHQpKS5yZWRJU3ViKHl5eXk4KTtcbiAgICAvLyBaMyA9IDIgKiBZMVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnkpO1xuICB9IGVsc2Uge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMy5odG1sI2RvdWJsaW5nLWRibC0yMDAxLWJcbiAgICAvLyAzTSArIDVTXG5cbiAgICAvLyBkZWx0YSA9IFoxXjJcbiAgICB2YXIgZGVsdGEgPSB0aGlzLnoucmVkU3FyKCk7XG4gICAgLy8gZ2FtbWEgPSBZMV4yXG4gICAgdmFyIGdhbW1hID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIGJldGEgPSBYMSAqIGdhbW1hXG4gICAgdmFyIGJldGEgPSB0aGlzLngucmVkTXVsKGdhbW1hKTtcbiAgICAvLyBhbHBoYSA9IDMgKiAoWDEgLSBkZWx0YSkgKiAoWDEgKyBkZWx0YSlcbiAgICB2YXIgYWxwaGEgPSB0aGlzLngucmVkU3ViKGRlbHRhKS5yZWRNdWwodGhpcy54LnJlZEFkZChkZWx0YSkpO1xuICAgIGFscGhhID0gYWxwaGEucmVkQWRkKGFscGhhKS5yZWRJQWRkKGFscGhhKTtcbiAgICAvLyBYMyA9IGFscGhhXjIgLSA4ICogYmV0YVxuICAgIHZhciBiZXRhNCA9IGJldGEucmVkSUFkZChiZXRhKTtcbiAgICBiZXRhNCA9IGJldGE0LnJlZElBZGQoYmV0YTQpO1xuICAgIHZhciBiZXRhOCA9IGJldGE0LnJlZEFkZChiZXRhNCk7XG4gICAgbnggPSBhbHBoYS5yZWRTcXIoKS5yZWRJU3ViKGJldGE4KTtcbiAgICAvLyBaMyA9IChZMSArIFoxKV4yIC0gZ2FtbWEgLSBkZWx0YVxuICAgIG56ID0gdGhpcy55LnJlZEFkZCh0aGlzLnopLnJlZFNxcigpLnJlZElTdWIoZ2FtbWEpLnJlZElTdWIoZGVsdGEpO1xuICAgIC8vIFkzID0gYWxwaGEgKiAoNCAqIGJldGEgLSBYMykgLSA4ICogZ2FtbWFeMlxuICAgIHZhciBnZ2FtbWE4ID0gZ2FtbWEucmVkU3FyKCk7XG4gICAgZ2dhbW1hOCA9IGdnYW1tYTgucmVkSUFkZChnZ2FtbWE4KTtcbiAgICBnZ2FtbWE4ID0gZ2dhbW1hOC5yZWRJQWRkKGdnYW1tYTgpO1xuICAgIGdnYW1tYTggPSBnZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7XG4gICAgbnkgPSBhbHBoYS5yZWRNdWwoYmV0YTQucmVkSVN1YihueCkpLnJlZElTdWIoZ2dhbW1hOCk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLl9kYmwgPSBmdW5jdGlvbiBfZGJsKCkge1xuICB2YXIgYSA9IHRoaXMuY3VydmUuYTtcblxuICAvLyA0TSArIDZTICsgMTBBXG4gIHZhciBqeCA9IHRoaXMueDtcbiAgdmFyIGp5ID0gdGhpcy55O1xuICB2YXIganogPSB0aGlzLno7XG4gIHZhciBqejQgPSBqei5yZWRTcXIoKS5yZWRTcXIoKTtcblxuICB2YXIgangyID0gangucmVkU3FyKCk7XG4gIHZhciBqeTIgPSBqeS5yZWRTcXIoKTtcblxuICB2YXIgYyA9IGp4Mi5yZWRBZGQoangyKS5yZWRJQWRkKGp4MikucmVkSUFkZChhLnJlZE11bChqejQpKTtcblxuICB2YXIganhkNCA9IGp4LnJlZEFkZChqeCk7XG4gIGp4ZDQgPSBqeGQ0LnJlZElBZGQoanhkNCk7XG4gIHZhciB0MSA9IGp4ZDQucmVkTXVsKGp5Mik7XG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0MS5yZWRBZGQodDEpKTtcbiAgdmFyIHQyID0gdDEucmVkSVN1YihueCk7XG5cbiAgdmFyIGp5ZDggPSBqeTIucmVkU3FyKCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIGp5ZDggPSBqeWQ4LnJlZElBZGQoanlkOCk7XG4gIHZhciBueSA9IGMucmVkTXVsKHQyKS5yZWRJU3ViKGp5ZDgpO1xuICB2YXIgbnogPSBqeS5yZWRBZGQoankpLnJlZE11bChqeik7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS50cnBsID0gZnVuY3Rpb24gdHJwbCgpIHtcbiAgaWYgKCF0aGlzLmN1cnZlLnplcm9BKVxuICAgIHJldHVybiB0aGlzLmRibCgpLmFkZCh0aGlzKTtcblxuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTAuaHRtbCN0cmlwbGluZy10cGwtMjAwNy1ibFxuICAvLyA1TSArIDEwUyArIC4uLlxuXG4gIC8vIFhYID0gWDFeMlxuICB2YXIgeHggPSB0aGlzLngucmVkU3FyKCk7XG4gIC8vIFlZID0gWTFeMlxuICB2YXIgeXkgPSB0aGlzLnkucmVkU3FyKCk7XG4gIC8vIFpaID0gWjFeMlxuICB2YXIgenogPSB0aGlzLnoucmVkU3FyKCk7XG4gIC8vIFlZWVkgPSBZWV4yXG4gIHZhciB5eXl5ID0geXkucmVkU3FyKCk7XG4gIC8vIE0gPSAzICogWFggKyBhICogWloyOyBhID0gMFxuICB2YXIgbSA9IHh4LnJlZEFkZCh4eCkucmVkSUFkZCh4eCk7XG4gIC8vIE1NID0gTV4yXG4gIHZhciBtbSA9IG0ucmVkU3FyKCk7XG4gIC8vIEUgPSA2ICogKChYMSArIFlZKV4yIC0gWFggLSBZWVlZKSAtIE1NXG4gIHZhciBlID0gdGhpcy54LnJlZEFkZCh5eSkucmVkU3FyKCkucmVkSVN1Yih4eCkucmVkSVN1Yih5eXl5KTtcbiAgZSA9IGUucmVkSUFkZChlKTtcbiAgZSA9IGUucmVkQWRkKGUpLnJlZElBZGQoZSk7XG4gIGUgPSBlLnJlZElTdWIobW0pO1xuICAvLyBFRSA9IEVeMlxuICB2YXIgZWUgPSBlLnJlZFNxcigpO1xuICAvLyBUID0gMTYqWVlZWVxuICB2YXIgdCA9IHl5eXkucmVkSUFkZCh5eXl5KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgdCA9IHQucmVkSUFkZCh0KTtcbiAgLy8gVSA9IChNICsgRSleMiAtIE1NIC0gRUUgLSBUXG4gIHZhciB1ID0gbS5yZWRJQWRkKGUpLnJlZFNxcigpLnJlZElTdWIobW0pLnJlZElTdWIoZWUpLnJlZElTdWIodCk7XG4gIC8vIFgzID0gNCAqIChYMSAqIEVFIC0gNCAqIFlZICogVSlcbiAgdmFyIHl5dTQgPSB5eS5yZWRNdWwodSk7XG4gIHl5dTQgPSB5eXU0LnJlZElBZGQoeXl1NCk7XG4gIHl5dTQgPSB5eXU0LnJlZElBZGQoeXl1NCk7XG4gIHZhciBueCA9IHRoaXMueC5yZWRNdWwoZWUpLnJlZElTdWIoeXl1NCk7XG4gIG54ID0gbngucmVkSUFkZChueCk7XG4gIG54ID0gbngucmVkSUFkZChueCk7XG4gIC8vIFkzID0gOCAqIFkxICogKFUgKiAoVCAtIFUpIC0gRSAqIEVFKVxuICB2YXIgbnkgPSB0aGlzLnkucmVkTXVsKHUucmVkTXVsKHQucmVkSVN1Yih1KSkucmVkSVN1YihlLnJlZE11bChlZSkpKTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgbnkgPSBueS5yZWRJQWRkKG55KTtcbiAgLy8gWjMgPSAoWjEgKyBFKV4yIC0gWlogLSBFRVxuICB2YXIgbnogPSB0aGlzLnoucmVkQWRkKGUpLnJlZFNxcigpLnJlZElTdWIoenopLnJlZElTdWIoZWUpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGssIGtiYXNlKSB7XG4gIGsgPSBuZXcgQk4oaywga2Jhc2UpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsIGspO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKHApIHtcbiAgaWYgKHAudHlwZSA9PT0gJ2FmZmluZScpXG4gICAgcmV0dXJuIHRoaXMuZXEocC50b0ooKSk7XG5cbiAgaWYgKHRoaXMgPT09IHApXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgLy8geDEgKiB6Ml4yID09IHgyICogejFeMlxuICB2YXIgejIgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciBwejIgPSBwLnoucmVkU3FyKCk7XG4gIGlmICh0aGlzLngucmVkTXVsKHB6MikucmVkSVN1YihwLngucmVkTXVsKHoyKSkuY21wbigwKSAhPT0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8geTEgKiB6Ml4zID09IHkyICogejFeM1xuICB2YXIgejMgPSB6Mi5yZWRNdWwodGhpcy56KTtcbiAgdmFyIHB6MyA9IHB6Mi5yZWRNdWwocC56KTtcbiAgcmV0dXJuIHRoaXMueS5yZWRNdWwocHozKS5yZWRJU3ViKHAueS5yZWRNdWwoejMpKS5jbXBuKDApID09PSAwO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5lcVhUb1AgPSBmdW5jdGlvbiBlcVhUb1AoeCkge1xuICB2YXIgenMgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciByeCA9IHgudG9SZWQodGhpcy5jdXJ2ZS5yZWQpLnJlZE11bCh6cyk7XG4gIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICByZXR1cm4gdHJ1ZTtcblxuICB2YXIgeGMgPSB4LmNsb25lKCk7XG4gIHZhciB0ID0gdGhpcy5jdXJ2ZS5yZWROLnJlZE11bCh6cyk7XG4gIGZvciAoOzspIHtcbiAgICB4Yy5pYWRkKHRoaXMuY3VydmUubik7XG4gICAgaWYgKHhjLmNtcCh0aGlzLmN1cnZlLnApID49IDApXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICByeC5yZWRJQWRkKHQpO1xuICAgIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgSlBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIEpQb2ludCB4OiAnICsgdGhpcy54LnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHk6ICcgKyB0aGlzLnkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei50b1N0cmluZygxNiwgMikgKyAnPic7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy56LmNtcG4oMCkgPT09IDA7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmVzID0gZXhwb3J0cztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgY3VydmUgPSByZXF1aXJlKCcuL2N1cnZlJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG5cbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIFByZXNldEN1cnZlKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ3Nob3J0JylcbiAgICB0aGlzLmN1cnZlID0gbmV3IGN1cnZlLnNob3J0KG9wdGlvbnMpO1xuICBlbHNlIGlmIChvcHRpb25zLnR5cGUgPT09ICdlZHdhcmRzJylcbiAgICB0aGlzLmN1cnZlID0gbmV3IGN1cnZlLmVkd2FyZHMob3B0aW9ucyk7XG4gIGVsc2VcbiAgICB0aGlzLmN1cnZlID0gbmV3IGN1cnZlLm1vbnQob3B0aW9ucyk7XG4gIHRoaXMuZyA9IHRoaXMuY3VydmUuZztcbiAgdGhpcy5uID0gdGhpcy5jdXJ2ZS5uO1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2g7XG5cbiAgYXNzZXJ0KHRoaXMuZy52YWxpZGF0ZSgpLCAnSW52YWxpZCBjdXJ2ZScpO1xuICBhc3NlcnQodGhpcy5nLm11bCh0aGlzLm4pLmlzSW5maW5pdHkoKSwgJ0ludmFsaWQgY3VydmUsIEcqTiAhPSBPJyk7XG59XG5jdXJ2ZXMuUHJlc2V0Q3VydmUgPSBQcmVzZXRDdXJ2ZTtcblxuZnVuY3Rpb24gZGVmaW5lQ3VydmUobmFtZSwgb3B0aW9ucykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3VydmVzLCBuYW1lLCB7XG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBjdXJ2ZSA9IG5ldyBQcmVzZXRDdXJ2ZShvcHRpb25zKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdXJ2ZXMsIG5hbWUsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB2YWx1ZTogY3VydmUsXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjdXJ2ZTtcbiAgICB9LFxuICB9KTtcbn1cblxuZGVmaW5lQ3VydmUoJ3AxOTInLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAncDE5MicsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicsXG4gIGE6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICc2NDIxMDUxOSBlNTljODBlNyAwZmE3ZTlhYiA3MjI0MzA0OSBmZWI4ZGVlYyBjMTQ2YjliMScsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiA5OWRlZjgzNiAxNDZiYzliMSBiNGQyMjgzMScsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcxODhkYTgwZSBiMDMwOTBmNiA3Y2JmMjBlYiA0M2ExODgwMCBmNGZmMGFmZCA4MmZmMTAxMicsXG4gICAgJzA3MTkyYjk1IGZmYzhkYTc4IDYzMTAxMWVkIDZiMjRjZGQ1IDczZjk3N2ExIDFlNzk0ODExJyxcbiAgXSxcbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDIyNCcsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6ICdwMjI0JyxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyxcbiAgYTogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlJyxcbiAgYjogJ2I0MDUwYTg1IDBjMDRiM2FiIGY1NDEzMjU2IDUwNDRiMGI3IGQ3YmZkOGJhIDI3MGIzOTQzIDIzNTVmZmI0JyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmYxNmEyIGUwYjhmMDNlIDEzZGQyOTQ1IDVjNWMyYTNkJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJ2I3MGUwY2JkIDZiYjRiZjdmIDMyMTM5MGI5IDRhMDNjMWQzIDU2YzIxMTIyIDM0MzI4MGQ2IDExNWMxZDIxJyxcbiAgICAnYmQzNzYzODggYjVmNzIzZmIgNGMyMmRmZTYgY2Q0Mzc1YTAgNWEwNzQ3NjQgNDRkNTgxOTkgODUwMDdlMzQnLFxuICBdLFxufSk7XG5cbmRlZmluZUN1cnZlKCdwMjU2Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJ2ZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmJyxcbiAgYTogJ2ZmZmZmZmZmIDAwMDAwMDAxIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjJyxcbiAgYjogJzVhYzYzNWQ4IGFhM2E5M2U3IGIzZWJiZDU1IDc2OTg4NmJjIDY1MWQwNmIwIGNjNTNiMGY2IDNiY2UzYzNlIDI3ZDI2MDRiJyxcbiAgbjogJ2ZmZmZmZmZmIDAwMDAwMDAwIGZmZmZmZmZmIGZmZmZmZmZmIGJjZTZmYWFkIGE3MTc5ZTg0IGYzYjljYWMyIGZjNjMyNTUxJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzZiMTdkMWYyIGUxMmM0MjQ3IGY4YmNlNmU1IDYzYTQ0MGYyIDc3MDM3ZDgxIDJkZWIzM2EwIGY0YTEzOTQ1IGQ4OThjMjk2JyxcbiAgICAnNGZlMzQyZTIgZmUxYTdmOWIgOGVlN2ViNGEgN2MwZjllMTYgMmJjZTMzNTcgNmIzMTVlY2UgY2JiNjQwNjggMzdiZjUxZjUnLFxuICBdLFxufSk7XG5cbmRlZmluZUN1cnZlKCdwMzg0Jywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogbnVsbCxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmYycsXG4gIGI6ICdiMzMxMmZhNyBlMjNlZTdlNCA5ODhlMDU2YiBlM2Y4MmQxOSAxODFkOWM2ZSBmZTgxNDExMiAwMzE0MDg4ZiAnICtcbiAgICAgJzUwMTM4NzVhIGM2NTYzOThkIDhhMmVkMTlkIDJhODVjOGVkIGQzZWMyYWVmJyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGM3NjM0ZDgxICcgK1xuICAgICAnZjQzNzJkZGYgNTgxYTBkYjIgNDhiMGE3N2EgZWNlYzE5NmEgY2NjNTI5NzMnLFxuICBoYXNoOiBoYXNoLnNoYTM4NCxcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnYWE4N2NhMjIgYmU4YjA1MzcgOGViMWM3MWUgZjMyMGFkNzQgNmUxZDNiNjIgOGJhNzliOTggNTlmNzQxZTAgODI1NDJhMzggJyArXG4gICAgJzU1MDJmMjVkIGJmNTUyOTZjIDNhNTQ1ZTM4IDcyNzYwYWI3JyxcbiAgICAnMzYxN2RlNGEgOTYyNjJjNmYgNWQ5ZTk4YmYgOTI5MmRjMjkgZjhmNDFkYmQgMjg5YTE0N2MgZTlkYTMxMTMgYjVmMGI4YzAgJyArXG4gICAgJzBhNjBiMWNlIDFkN2U4MTlkIDdhNDMxZDdjIDkwZWEwZTVmJyxcbiAgXSxcbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDUyMScsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6IG51bGwsXG4gIHA6ICcwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYnLFxuICBhOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjJyxcbiAgYjogJzAwMDAwMDUxIDk1M2ViOTYxIDhlMWM5YTFmIDkyOWEyMWEwIGI2ODU0MGVlIGEyZGE3MjViICcgK1xuICAgICAnOTliMzE1ZjMgYjhiNDg5OTEgOGVmMTA5ZTEgNTYxOTM5NTEgZWM3ZTkzN2IgMTY1MmMwYmQgJyArXG4gICAgICczYmIxYmYwNyAzNTczZGY4OCAzZDJjMzRmMSBlZjQ1MWZkNCA2YjUwM2YwMCcsXG4gIG46ICcwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZhIDUxODY4NzgzIGJmMmY5NjZiIDdmY2MwMTQ4ICcgK1xuICAgICAnZjcwOWE1ZDAgM2JiNWM5YjggODk5YzQ3YWUgYmI2ZmI3MWUgOTEzODY0MDknLFxuICBoYXNoOiBoYXNoLnNoYTUxMixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnMDAwMDAwYzYgODU4ZTA2YjcgMDQwNGU5Y2QgOWUzZWNiNjYgMjM5NWI0NDIgOWM2NDgxMzkgJyArXG4gICAgJzA1M2ZiNTIxIGY4MjhhZjYwIDZiNGQzZGJhIGExNGI1ZTc3IGVmZTc1OTI4IGZlMWRjMTI3ICcgK1xuICAgICdhMmZmYThkZSAzMzQ4YjNjMSA4NTZhNDI5YiBmOTdlN2UzMSBjMmU1YmQ2NicsXG4gICAgJzAwMDAwMTE4IDM5Mjk2YTc4IDlhM2JjMDA0IDVjOGE1ZmI0IDJjN2QxYmQ5IDk4ZjU0NDQ5ICcgK1xuICAgICc1NzliNDQ2OCAxN2FmYmQxNyAyNzNlNjYyYyA5N2VlNzI5OSA1ZWY0MjY0MCBjNTUwYjkwMSAnICtcbiAgICAnM2ZhZDA3NjEgMzUzYzcwODYgYTI3MmMyNDAgODhiZTk0NzYgOWZkMTY2NTAnLFxuICBdLFxufSk7XG5cbmRlZmluZUN1cnZlKCdjdXJ2ZTI1NTE5Jywge1xuICB0eXBlOiAnbW9udCcsXG4gIHByaW1lOiAncDI1NTE5JyxcbiAgcDogJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnLFxuICBhOiAnNzZkMDYnLFxuICBiOiAnMScsXG4gIG46ICcxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3OWNkNiA1ODEyNjMxYTVjZjVkM2VkJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzknLFxuICBdLFxufSk7XG5cbmRlZmluZUN1cnZlKCdlZDI1NTE5Jywge1xuICB0eXBlOiAnZWR3YXJkcycsXG4gIHByaW1lOiAncDI1NTE5JyxcbiAgcDogJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnLFxuICBhOiAnLTEnLFxuICBjOiAnMScsXG4gIC8vIC0xMjE2NjUgKiAoMTIxNjY2XigtMSkpIChtb2QgUClcbiAgZDogJzUyMDM2Y2VlMmI2ZmZlNzMgOGNjNzQwNzk3Nzc5ZTg5OCAwMDcwMGE0ZDQxNDFkOGFiIDc1ZWI0ZGNhMTM1OTc4YTMnLFxuICBuOiAnMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICcyMTY5MzZkM2NkNmU1M2ZlYzBhNGUyMzFmZGQ2ZGM1YzY5MmNjNzYwOTUyNWE3YjJjOTU2MmQ2MDhmMjVkNTFhJyxcblxuICAgIC8vIDQvNVxuICAgICc2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjU4JyxcbiAgXSxcbn0pO1xuXG52YXIgcHJlO1xudHJ5IHtcbiAgcHJlID0gcmVxdWlyZSgnLi9wcmVjb21wdXRlZC9zZWNwMjU2azEnKTtcbn0gY2F0Y2ggKGUpIHtcbiAgcHJlID0gdW5kZWZpbmVkO1xufVxuXG5kZWZpbmVDdXJ2ZSgnc2VjcDI1NmsxJywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogJ2syNTYnLFxuICBwOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYnLFxuICBhOiAnMCcsXG4gIGI6ICc3JyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGJhYWVkY2U2IGFmNDhhMDNiIGJmZDI1ZThjIGQwMzY0MTQxJyxcbiAgaDogJzEnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcblxuICAvLyBQcmVjb21wdXRlZCBlbmRvbW9ycGhpc21cbiAgYmV0YTogJzdhZTk2YTJiNjU3YzA3MTA2ZTY0NDc5ZWFjMzQzNGU5OWNmMDQ5NzUxMmY1ODk5NWMxMzk2YzI4NzE5NTAxZWUnLFxuICBsYW1iZGE6ICc1MzYzYWQ0Y2MwNWMzMGUwYTUyNjFjMDI4ODEyNjQ1YTEyMmUyMmVhMjA4MTY2NzhkZjAyOTY3YzFiMjNiZDcyJyxcbiAgYmFzaXM6IFtcbiAgICB7XG4gICAgICBhOiAnMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUnLFxuICAgICAgYjogJy1lNDQzN2VkNjAxMGU4ODI4NmY1NDdmYTkwYWJmZTRjMycsXG4gICAgfSxcbiAgICB7XG4gICAgICBhOiAnMTE0Y2E1MGY3YThlMmYzZjY1N2MxMTA4ZDlkNDRjZmQ4JyxcbiAgICAgIGI6ICczMDg2ZDIyMWE3ZDQ2YmNkZTg2YzkwZTQ5Mjg0ZWIxNScsXG4gICAgfSxcbiAgXSxcblxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICc3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4JyxcbiAgICAnNDgzYWRhNzcyNmEzYzQ2NTVkYTRmYmZjMGUxMTA4YThmZDE3YjQ0OGE2ODU1NDE5OWM0N2QwOGZmYjEwZDRiOCcsXG4gICAgcHJlLFxuICBdLFxufSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgSG1hY0RSQkcgPSByZXF1aXJlKCdobWFjLWRyYmcnKTtcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi4vY3VydmVzJyk7XG52YXIgcmFuZCA9IHJlcXVpcmUoJ2Jyb3JhbmQnKTtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbnZhciBLZXlQYWlyID0gcmVxdWlyZSgnLi9rZXknKTtcbnZhciBTaWduYXR1cmUgPSByZXF1aXJlKCcuL3NpZ25hdHVyZScpO1xuXG5mdW5jdGlvbiBFQyhvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBFQykpXG4gICAgcmV0dXJuIG5ldyBFQyhvcHRpb25zKTtcblxuICAvLyBTaG9ydGN1dCBgZWxsaXB0aWMuZWMoY3VydmUtbmFtZSlgXG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycpIHtcbiAgICBhc3NlcnQoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGN1cnZlcywgb3B0aW9ucyksXG4gICAgICAnVW5rbm93biBjdXJ2ZSAnICsgb3B0aW9ucyk7XG5cbiAgICBvcHRpb25zID0gY3VydmVzW29wdGlvbnNdO1xuICB9XG5cbiAgLy8gU2hvcnRjdXQgZm9yIGBlbGxpcHRpYy5lYyhlbGxpcHRpYy5jdXJ2ZXMuY3VydmVOYW1lKWBcbiAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBjdXJ2ZXMuUHJlc2V0Q3VydmUpXG4gICAgb3B0aW9ucyA9IHsgY3VydmU6IG9wdGlvbnMgfTtcblxuICB0aGlzLmN1cnZlID0gb3B0aW9ucy5jdXJ2ZS5jdXJ2ZTtcbiAgdGhpcy5uID0gdGhpcy5jdXJ2ZS5uO1xuICB0aGlzLm5oID0gdGhpcy5uLnVzaHJuKDEpO1xuICB0aGlzLmcgPSB0aGlzLmN1cnZlLmc7XG5cbiAgLy8gUG9pbnQgb24gY3VydmVcbiAgdGhpcy5nID0gb3B0aW9ucy5jdXJ2ZS5nO1xuICB0aGlzLmcucHJlY29tcHV0ZShvcHRpb25zLmN1cnZlLm4uYml0TGVuZ3RoKCkgKyAxKTtcblxuICAvLyBIYXNoIGZvciBmdW5jdGlvbiBmb3IgRFJCR1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2ggfHwgb3B0aW9ucy5jdXJ2ZS5oYXNoO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFQztcblxuRUMucHJvdG90eXBlLmtleVBhaXIgPSBmdW5jdGlvbiBrZXlQYWlyKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKHRoaXMsIG9wdGlvbnMpO1xufTtcblxuRUMucHJvdG90eXBlLmtleUZyb21Qcml2YXRlID0gZnVuY3Rpb24ga2V5RnJvbVByaXZhdGUocHJpdiwgZW5jKSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21Qcml2YXRlKHRoaXMsIHByaXYsIGVuYyk7XG59O1xuXG5FQy5wcm90b3R5cGUua2V5RnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGtleUZyb21QdWJsaWMocHViLCBlbmMpIHtcbiAgcmV0dXJuIEtleVBhaXIuZnJvbVB1YmxpYyh0aGlzLCBwdWIsIGVuYyk7XG59O1xuXG5FQy5wcm90b3R5cGUuZ2VuS2V5UGFpciA9IGZ1bmN0aW9uIGdlbktleVBhaXIob3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMpXG4gICAgb3B0aW9ucyA9IHt9O1xuXG4gIC8vIEluc3RhbnRpYXRlIEhtYWNfRFJCR1xuICB2YXIgZHJiZyA9IG5ldyBIbWFjRFJCRyh7XG4gICAgaGFzaDogdGhpcy5oYXNoLFxuICAgIHBlcnM6IG9wdGlvbnMucGVycyxcbiAgICBwZXJzRW5jOiBvcHRpb25zLnBlcnNFbmMgfHwgJ3V0ZjgnLFxuICAgIGVudHJvcHk6IG9wdGlvbnMuZW50cm9weSB8fCByYW5kKHRoaXMuaGFzaC5obWFjU3RyZW5ndGgpLFxuICAgIGVudHJvcHlFbmM6IG9wdGlvbnMuZW50cm9weSAmJiBvcHRpb25zLmVudHJvcHlFbmMgfHwgJ3V0ZjgnLFxuICAgIG5vbmNlOiB0aGlzLm4udG9BcnJheSgpLFxuICB9KTtcblxuICB2YXIgYnl0ZXMgPSB0aGlzLm4uYnl0ZUxlbmd0aCgpO1xuICB2YXIgbnMyID0gdGhpcy5uLnN1YihuZXcgQk4oMikpO1xuICBmb3IgKDs7KSB7XG4gICAgdmFyIHByaXYgPSBuZXcgQk4oZHJiZy5nZW5lcmF0ZShieXRlcykpO1xuICAgIGlmIChwcml2LmNtcChuczIpID4gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgcHJpdi5pYWRkbigxKTtcbiAgICByZXR1cm4gdGhpcy5rZXlGcm9tUHJpdmF0ZShwcml2KTtcbiAgfVxufTtcblxuRUMucHJvdG90eXBlLl90cnVuY2F0ZVRvTiA9IGZ1bmN0aW9uIF90cnVuY2F0ZVRvTihtc2csIHRydW5jT25seSkge1xuICB2YXIgZGVsdGEgPSBtc2cuYnl0ZUxlbmd0aCgpICogOCAtIHRoaXMubi5iaXRMZW5ndGgoKTtcbiAgaWYgKGRlbHRhID4gMClcbiAgICBtc2cgPSBtc2cudXNocm4oZGVsdGEpO1xuICBpZiAoIXRydW5jT25seSAmJiBtc2cuY21wKHRoaXMubikgPj0gMClcbiAgICByZXR1cm4gbXNnLnN1Yih0aGlzLm4pO1xuICBlbHNlXG4gICAgcmV0dXJuIG1zZztcbn07XG5cbkVDLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbihtc2csIGtleSwgZW5jLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgZW5jID09PSAnb2JqZWN0Jykge1xuICAgIG9wdGlvbnMgPSBlbmM7XG4gICAgZW5jID0gbnVsbDtcbiAgfVxuICBpZiAoIW9wdGlvbnMpXG4gICAgb3B0aW9ucyA9IHt9O1xuXG4gIGtleSA9IHRoaXMua2V5RnJvbVByaXZhdGUoa2V5LCBlbmMpO1xuICBtc2cgPSB0aGlzLl90cnVuY2F0ZVRvTihuZXcgQk4obXNnLCAxNikpO1xuXG4gIC8vIFplcm8tZXh0ZW5kIGtleSB0byBwcm92aWRlIGVub3VnaCBlbnRyb3B5XG4gIHZhciBieXRlcyA9IHRoaXMubi5ieXRlTGVuZ3RoKCk7XG4gIHZhciBia2V5ID0ga2V5LmdldFByaXZhdGUoKS50b0FycmF5KCdiZScsIGJ5dGVzKTtcblxuICAvLyBaZXJvLWV4dGVuZCBub25jZSB0byBoYXZlIHRoZSBzYW1lIGJ5dGUgc2l6ZSBhcyBOXG4gIHZhciBub25jZSA9IG1zZy50b0FycmF5KCdiZScsIGJ5dGVzKTtcblxuICAvLyBJbnN0YW50aWF0ZSBIbWFjX0RSQkdcbiAgdmFyIGRyYmcgPSBuZXcgSG1hY0RSQkcoe1xuICAgIGhhc2g6IHRoaXMuaGFzaCxcbiAgICBlbnRyb3B5OiBia2V5LFxuICAgIG5vbmNlOiBub25jZSxcbiAgICBwZXJzOiBvcHRpb25zLnBlcnMsXG4gICAgcGVyc0VuYzogb3B0aW9ucy5wZXJzRW5jIHx8ICd1dGY4JyxcbiAgfSk7XG5cbiAgLy8gTnVtYmVyIG9mIGJ5dGVzIHRvIGdlbmVyYXRlXG4gIHZhciBuczEgPSB0aGlzLm4uc3ViKG5ldyBCTigxKSk7XG5cbiAgZm9yICh2YXIgaXRlciA9IDA7IDsgaXRlcisrKSB7XG4gICAgdmFyIGsgPSBvcHRpb25zLmsgP1xuICAgICAgb3B0aW9ucy5rKGl0ZXIpIDpcbiAgICAgIG5ldyBCTihkcmJnLmdlbmVyYXRlKHRoaXMubi5ieXRlTGVuZ3RoKCkpKTtcbiAgICBrID0gdGhpcy5fdHJ1bmNhdGVUb04oaywgdHJ1ZSk7XG4gICAgaWYgKGsuY21wbigxKSA8PSAwIHx8IGsuY21wKG5zMSkgPj0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIGtwID0gdGhpcy5nLm11bChrKTtcbiAgICBpZiAoa3AuaXNJbmZpbml0eSgpKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIga3BYID0ga3AuZ2V0WCgpO1xuICAgIHZhciByID0ga3BYLnVtb2QodGhpcy5uKTtcbiAgICBpZiAoci5jbXBuKDApID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIgcyA9IGsuaW52bSh0aGlzLm4pLm11bChyLm11bChrZXkuZ2V0UHJpdmF0ZSgpKS5pYWRkKG1zZykpO1xuICAgIHMgPSBzLnVtb2QodGhpcy5uKTtcbiAgICBpZiAocy5jbXBuKDApID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIgcmVjb3ZlcnlQYXJhbSA9IChrcC5nZXRZKCkuaXNPZGQoKSA/IDEgOiAwKSB8XG4gICAgICAgICAgICAgICAgICAgICAgICAoa3BYLmNtcChyKSAhPT0gMCA/IDIgOiAwKTtcblxuICAgIC8vIFVzZSBjb21wbGVtZW50IG9mIGBzYCwgaWYgaXQgaXMgPiBgbiAvIDJgXG4gICAgaWYgKG9wdGlvbnMuY2Fub25pY2FsICYmIHMuY21wKHRoaXMubmgpID4gMCkge1xuICAgICAgcyA9IHRoaXMubi5zdWIocyk7XG4gICAgICByZWNvdmVyeVBhcmFtIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTaWduYXR1cmUoeyByOiByLCBzOiBzLCByZWNvdmVyeVBhcmFtOiByZWNvdmVyeVBhcmFtIH0pO1xuICB9XG59O1xuXG5FQy5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1zZywgc2lnbmF0dXJlLCBrZXksIGVuYykge1xuICBtc2cgPSB0aGlzLl90cnVuY2F0ZVRvTihuZXcgQk4obXNnLCAxNikpO1xuICBrZXkgPSB0aGlzLmtleUZyb21QdWJsaWMoa2V5LCBlbmMpO1xuICBzaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlKHNpZ25hdHVyZSwgJ2hleCcpO1xuXG4gIC8vIFBlcmZvcm0gcHJpbWl0aXZlIHZhbHVlcyB2YWxpZGF0aW9uXG4gIHZhciByID0gc2lnbmF0dXJlLnI7XG4gIHZhciBzID0gc2lnbmF0dXJlLnM7XG4gIGlmIChyLmNtcG4oMSkgPCAwIHx8IHIuY21wKHRoaXMubikgPj0gMClcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmIChzLmNtcG4oMSkgPCAwIHx8IHMuY21wKHRoaXMubikgPj0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gVmFsaWRhdGUgc2lnbmF0dXJlXG4gIHZhciBzaW52ID0gcy5pbnZtKHRoaXMubik7XG4gIHZhciB1MSA9IHNpbnYubXVsKG1zZykudW1vZCh0aGlzLm4pO1xuICB2YXIgdTIgPSBzaW52Lm11bChyKS51bW9kKHRoaXMubik7XG4gIHZhciBwO1xuXG4gIGlmICghdGhpcy5jdXJ2ZS5fbWF4d2VsbFRyaWNrKSB7XG4gICAgcCA9IHRoaXMuZy5tdWxBZGQodTEsIGtleS5nZXRQdWJsaWMoKSwgdTIpO1xuICAgIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiBwLmdldFgoKS51bW9kKHRoaXMubikuY21wKHIpID09PSAwO1xuICB9XG5cbiAgLy8gTk9URTogR3JlZyBNYXh3ZWxsJ3MgdHJpY2ssIGluc3BpcmVkIGJ5OlxuICAvLyBodHRwczovL2dpdC5pby92YWQzS1xuXG4gIHAgPSB0aGlzLmcuam11bEFkZCh1MSwga2V5LmdldFB1YmxpYygpLCB1Mik7XG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gQ29tcGFyZSBgcC54YCBvZiBKYWNvYmlhbiBwb2ludCB3aXRoIGByYCxcbiAgLy8gdGhpcyB3aWxsIGRvIGBwLnggPT0gciAqIHAuel4yYCBpbnN0ZWFkIG9mIG11bHRpcGx5aW5nIGBwLnhgIGJ5IHRoZVxuICAvLyBpbnZlcnNlIG9mIGBwLnpeMmBcbiAgcmV0dXJuIHAuZXFYVG9QKHIpO1xufTtcblxuRUMucHJvdG90eXBlLnJlY292ZXJQdWJLZXkgPSBmdW5jdGlvbihtc2csIHNpZ25hdHVyZSwgaiwgZW5jKSB7XG4gIGFzc2VydCgoMyAmIGopID09PSBqLCAnVGhlIHJlY292ZXJ5IHBhcmFtIGlzIG1vcmUgdGhhbiB0d28gYml0cycpO1xuICBzaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlKHNpZ25hdHVyZSwgZW5jKTtcblxuICB2YXIgbiA9IHRoaXMubjtcbiAgdmFyIGUgPSBuZXcgQk4obXNnKTtcbiAgdmFyIHIgPSBzaWduYXR1cmUucjtcbiAgdmFyIHMgPSBzaWduYXR1cmUucztcblxuICAvLyBBIHNldCBMU0Igc2lnbmlmaWVzIHRoYXQgdGhlIHktY29vcmRpbmF0ZSBpcyBvZGRcbiAgdmFyIGlzWU9kZCA9IGogJiAxO1xuICB2YXIgaXNTZWNvbmRLZXkgPSBqID4+IDE7XG4gIGlmIChyLmNtcCh0aGlzLmN1cnZlLnAudW1vZCh0aGlzLmN1cnZlLm4pKSA+PSAwICYmIGlzU2Vjb25kS2V5KVxuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgc2VuY29uZCBrZXkgY2FuZGluYXRlJyk7XG5cbiAgLy8gMS4xLiBMZXQgeCA9IHIgKyBqbi5cbiAgaWYgKGlzU2Vjb25kS2V5KVxuICAgIHIgPSB0aGlzLmN1cnZlLnBvaW50RnJvbVgoci5hZGQodGhpcy5jdXJ2ZS5uKSwgaXNZT2RkKTtcbiAgZWxzZVxuICAgIHIgPSB0aGlzLmN1cnZlLnBvaW50RnJvbVgociwgaXNZT2RkKTtcblxuICB2YXIgckludiA9IHNpZ25hdHVyZS5yLmludm0obik7XG4gIHZhciBzMSA9IG4uc3ViKGUpLm11bChySW52KS51bW9kKG4pO1xuICB2YXIgczIgPSBzLm11bChySW52KS51bW9kKG4pO1xuXG4gIC8vIDEuNi4xIENvbXB1dGUgUSA9IHJeLTEgKHNSIC0gIGVHKVxuICAvLyAgICAgICAgICAgICAgIFEgPSByXi0xIChzUiArIC1lRylcbiAgcmV0dXJuIHRoaXMuZy5tdWxBZGQoczEsIHIsIHMyKTtcbn07XG5cbkVDLnByb3RvdHlwZS5nZXRLZXlSZWNvdmVyeVBhcmFtID0gZnVuY3Rpb24oZSwgc2lnbmF0dXJlLCBRLCBlbmMpIHtcbiAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShzaWduYXR1cmUsIGVuYyk7XG4gIGlmIChzaWduYXR1cmUucmVjb3ZlcnlQYXJhbSAhPT0gbnVsbClcbiAgICByZXR1cm4gc2lnbmF0dXJlLnJlY292ZXJ5UGFyYW07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgUXByaW1lO1xuICAgIHRyeSB7XG4gICAgICBRcHJpbWUgPSB0aGlzLnJlY292ZXJQdWJLZXkoZSwgc2lnbmF0dXJlLCBpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoUXByaW1lLmVxKFEpKVxuICAgICAgcmV0dXJuIGk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCB2YWxpZCByZWNvdmVyeSBmYWN0b3InKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gS2V5UGFpcihlYywgb3B0aW9ucykge1xuICB0aGlzLmVjID0gZWM7XG4gIHRoaXMucHJpdiA9IG51bGw7XG4gIHRoaXMucHViID0gbnVsbDtcblxuICAvLyBLZXlQYWlyKGVjLCB7IHByaXY6IC4uLiwgcHViOiAuLi4gfSlcbiAgaWYgKG9wdGlvbnMucHJpdilcbiAgICB0aGlzLl9pbXBvcnRQcml2YXRlKG9wdGlvbnMucHJpdiwgb3B0aW9ucy5wcml2RW5jKTtcbiAgaWYgKG9wdGlvbnMucHViKVxuICAgIHRoaXMuX2ltcG9ydFB1YmxpYyhvcHRpb25zLnB1Yiwgb3B0aW9ucy5wdWJFbmMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBLZXlQYWlyO1xuXG5LZXlQYWlyLmZyb21QdWJsaWMgPSBmdW5jdGlvbiBmcm9tUHVibGljKGVjLCBwdWIsIGVuYykge1xuICBpZiAocHViIGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHViO1xuXG4gIHJldHVybiBuZXcgS2V5UGFpcihlYywge1xuICAgIHB1YjogcHViLFxuICAgIHB1YkVuYzogZW5jLFxuICB9KTtcbn07XG5cbktleVBhaXIuZnJvbVByaXZhdGUgPSBmdW5jdGlvbiBmcm9tUHJpdmF0ZShlYywgcHJpdiwgZW5jKSB7XG4gIGlmIChwcml2IGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHJpdjtcblxuICByZXR1cm4gbmV3IEtleVBhaXIoZWMsIHtcbiAgICBwcml2OiBwcml2LFxuICAgIHByaXZFbmM6IGVuYyxcbiAgfSk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xuICB2YXIgcHViID0gdGhpcy5nZXRQdWJsaWMoKTtcblxuICBpZiAocHViLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4geyByZXN1bHQ6IGZhbHNlLCByZWFzb246ICdJbnZhbGlkIHB1YmxpYyBrZXknIH07XG4gIGlmICghcHViLnZhbGlkYXRlKCkpXG4gICAgcmV0dXJuIHsgcmVzdWx0OiBmYWxzZSwgcmVhc29uOiAnUHVibGljIGtleSBpcyBub3QgYSBwb2ludCcgfTtcbiAgaWYgKCFwdWIubXVsKHRoaXMuZWMuY3VydmUubikuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB7IHJlc3VsdDogZmFsc2UsIHJlYXNvbjogJ1B1YmxpYyBrZXkgKiBOICE9IE8nIH07XG5cbiAgcmV0dXJuIHsgcmVzdWx0OiB0cnVlLCByZWFzb246IG51bGwgfTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFB1YmxpYyA9IGZ1bmN0aW9uIGdldFB1YmxpYyhjb21wYWN0LCBlbmMpIHtcbiAgLy8gY29tcGFjdCBpcyBvcHRpb25hbCBhcmd1bWVudFxuICBpZiAodHlwZW9mIGNvbXBhY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jID0gY29tcGFjdDtcbiAgICBjb21wYWN0ID0gbnVsbDtcbiAgfVxuXG4gIGlmICghdGhpcy5wdWIpXG4gICAgdGhpcy5wdWIgPSB0aGlzLmVjLmcubXVsKHRoaXMucHJpdik7XG5cbiAgaWYgKCFlbmMpXG4gICAgcmV0dXJuIHRoaXMucHViO1xuXG4gIHJldHVybiB0aGlzLnB1Yi5lbmNvZGUoZW5jLCBjb21wYWN0KTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFByaXZhdGUgPSBmdW5jdGlvbiBnZXRQcml2YXRlKGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdGhpcy5wcml2LnRvU3RyaW5nKDE2LCAyKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLnByaXY7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5faW1wb3J0UHJpdmF0ZSA9IGZ1bmN0aW9uIF9pbXBvcnRQcml2YXRlKGtleSwgZW5jKSB7XG4gIHRoaXMucHJpdiA9IG5ldyBCTihrZXksIGVuYyB8fCAxNik7XG5cbiAgLy8gRW5zdXJlIHRoYXQgdGhlIHByaXYgd29uJ3QgYmUgYmlnZ2VyIHRoYW4gbiwgb3RoZXJ3aXNlIHdlIG1heSBmYWlsXG4gIC8vIGluIGZpeGVkIG11bHRpcGxpY2F0aW9uIG1ldGhvZFxuICB0aGlzLnByaXYgPSB0aGlzLnByaXYudW1vZCh0aGlzLmVjLmN1cnZlLm4pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuX2ltcG9ydFB1YmxpYyA9IGZ1bmN0aW9uIF9pbXBvcnRQdWJsaWMoa2V5LCBlbmMpIHtcbiAgaWYgKGtleS54IHx8IGtleS55KSB7XG4gICAgLy8gTW9udGdvbWVyeSBwb2ludHMgb25seSBoYXZlIGFuIGB4YCBjb29yZGluYXRlLlxuICAgIC8vIFdlaWVyc3RyYXNzL0Vkd2FyZHMgcG9pbnRzIG9uIHRoZSBvdGhlciBoYW5kIGhhdmUgYm90aCBgeGAgYW5kXG4gICAgLy8gYHlgIGNvb3JkaW5hdGVzLlxuICAgIGlmICh0aGlzLmVjLmN1cnZlLnR5cGUgPT09ICdtb250Jykge1xuICAgICAgYXNzZXJ0KGtleS54LCAnTmVlZCB4IGNvb3JkaW5hdGUnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZWMuY3VydmUudHlwZSA9PT0gJ3Nob3J0JyB8fFxuICAgICAgICAgICAgICAgdGhpcy5lYy5jdXJ2ZS50eXBlID09PSAnZWR3YXJkcycpIHtcbiAgICAgIGFzc2VydChrZXkueCAmJiBrZXkueSwgJ05lZWQgYm90aCB4IGFuZCB5IGNvb3JkaW5hdGUnKTtcbiAgICB9XG4gICAgdGhpcy5wdWIgPSB0aGlzLmVjLmN1cnZlLnBvaW50KGtleS54LCBrZXkueSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRoaXMucHViID0gdGhpcy5lYy5jdXJ2ZS5kZWNvZGVQb2ludChrZXksIGVuYyk7XG59O1xuXG4vLyBFQ0RIXG5LZXlQYWlyLnByb3RvdHlwZS5kZXJpdmUgPSBmdW5jdGlvbiBkZXJpdmUocHViKSB7XG4gIGlmKCFwdWIudmFsaWRhdGUoKSkge1xuICAgIGFzc2VydChwdWIudmFsaWRhdGUoKSwgJ3B1YmxpYyBwb2ludCBub3QgdmFsaWRhdGVkJyk7XG4gIH1cbiAgcmV0dXJuIHB1Yi5tdWwodGhpcy5wcml2KS5nZXRYKCk7XG59O1xuXG4vLyBFQ0RTQVxuS2V5UGFpci5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obXNnLCBlbmMsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHRoaXMuZWMuc2lnbihtc2csIHRoaXMsIGVuYywgb3B0aW9ucyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobXNnLCBzaWduYXR1cmUpIHtcbiAgcmV0dXJuIHRoaXMuZWMudmVyaWZ5KG1zZywgc2lnbmF0dXJlLCB0aGlzKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICByZXR1cm4gJzxLZXkgcHJpdjogJyArICh0aGlzLnByaXYgJiYgdGhpcy5wcml2LnRvU3RyaW5nKDE2LCAyKSkgK1xuICAgICAgICAgJyBwdWI6ICcgKyAodGhpcy5wdWIgJiYgdGhpcy5wdWIuaW5zcGVjdCgpKSArICcgPic7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gU2lnbmF0dXJlKG9wdGlvbnMsIGVuYykge1xuICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIFNpZ25hdHVyZSlcbiAgICByZXR1cm4gb3B0aW9ucztcblxuICBpZiAodGhpcy5faW1wb3J0REVSKG9wdGlvbnMsIGVuYykpXG4gICAgcmV0dXJuO1xuXG4gIGFzc2VydChvcHRpb25zLnIgJiYgb3B0aW9ucy5zLCAnU2lnbmF0dXJlIHdpdGhvdXQgciBvciBzJyk7XG4gIHRoaXMuciA9IG5ldyBCTihvcHRpb25zLnIsIDE2KTtcbiAgdGhpcy5zID0gbmV3IEJOKG9wdGlvbnMucywgMTYpO1xuICBpZiAob3B0aW9ucy5yZWNvdmVyeVBhcmFtID09PSB1bmRlZmluZWQpXG4gICAgdGhpcy5yZWNvdmVyeVBhcmFtID0gbnVsbDtcbiAgZWxzZVxuICAgIHRoaXMucmVjb3ZlcnlQYXJhbSA9IG9wdGlvbnMucmVjb3ZlcnlQYXJhbTtcbn1cbm1vZHVsZS5leHBvcnRzID0gU2lnbmF0dXJlO1xuXG5mdW5jdGlvbiBQb3NpdGlvbigpIHtcbiAgdGhpcy5wbGFjZSA9IDA7XG59XG5cbmZ1bmN0aW9uIGdldExlbmd0aChidWYsIHApIHtcbiAgdmFyIGluaXRpYWwgPSBidWZbcC5wbGFjZSsrXTtcbiAgaWYgKCEoaW5pdGlhbCAmIDB4ODApKSB7XG4gICAgcmV0dXJuIGluaXRpYWw7XG4gIH1cbiAgdmFyIG9jdGV0TGVuID0gaW5pdGlhbCAmIDB4ZjtcblxuICAvLyBJbmRlZmluaXRlIGxlbmd0aCBvciBvdmVyZmxvd1xuICBpZiAob2N0ZXRMZW4gPT09IDAgfHwgb2N0ZXRMZW4gPiA0KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIHZhbCA9IDA7XG4gIGZvciAodmFyIGkgPSAwLCBvZmYgPSBwLnBsYWNlOyBpIDwgb2N0ZXRMZW47IGkrKywgb2ZmKyspIHtcbiAgICB2YWwgPDw9IDg7XG4gICAgdmFsIHw9IGJ1ZltvZmZdO1xuICAgIHZhbCA+Pj49IDA7XG4gIH1cblxuICAvLyBMZWFkaW5nIHplcm9lc1xuICBpZiAodmFsIDw9IDB4N2YpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwLnBsYWNlID0gb2ZmO1xuICByZXR1cm4gdmFsO1xufVxuXG5mdW5jdGlvbiBybVBhZGRpbmcoYnVmKSB7XG4gIHZhciBpID0gMDtcbiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGggLSAxO1xuICB3aGlsZSAoIWJ1ZltpXSAmJiAhKGJ1ZltpICsgMV0gJiAweDgwKSAmJiBpIDwgbGVuKSB7XG4gICAgaSsrO1xuICB9XG4gIGlmIChpID09PSAwKSB7XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuICByZXR1cm4gYnVmLnNsaWNlKGkpO1xufVxuXG5TaWduYXR1cmUucHJvdG90eXBlLl9pbXBvcnRERVIgPSBmdW5jdGlvbiBfaW1wb3J0REVSKGRhdGEsIGVuYykge1xuICBkYXRhID0gdXRpbHMudG9BcnJheShkYXRhLCBlbmMpO1xuICB2YXIgcCA9IG5ldyBQb3NpdGlvbigpO1xuICBpZiAoZGF0YVtwLnBsYWNlKytdICE9PSAweDMwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIGlmIChsZW4gPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICgobGVuICsgcC5wbGFjZSkgIT09IGRhdGEubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChkYXRhW3AucGxhY2UrK10gIT09IDB4MDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHJsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIGlmIChybGVuID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgciA9IGRhdGEuc2xpY2UocC5wbGFjZSwgcmxlbiArIHAucGxhY2UpO1xuICBwLnBsYWNlICs9IHJsZW47XG4gIGlmIChkYXRhW3AucGxhY2UrK10gIT09IDB4MDIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHNsZW4gPSBnZXRMZW5ndGgoZGF0YSwgcCk7XG4gIGlmIChzbGVuID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoZGF0YS5sZW5ndGggIT09IHNsZW4gKyBwLnBsYWNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBzID0gZGF0YS5zbGljZShwLnBsYWNlLCBzbGVuICsgcC5wbGFjZSk7XG4gIGlmIChyWzBdID09PSAwKSB7XG4gICAgaWYgKHJbMV0gJiAweDgwKSB7XG4gICAgICByID0gci5zbGljZSgxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGVhZGluZyB6ZXJvZXNcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKHNbMF0gPT09IDApIHtcbiAgICBpZiAoc1sxXSAmIDB4ODApIHtcbiAgICAgIHMgPSBzLnNsaWNlKDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBMZWFkaW5nIHplcm9lc1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHRoaXMuciA9IG5ldyBCTihyKTtcbiAgdGhpcy5zID0gbmV3IEJOKHMpO1xuICB0aGlzLnJlY292ZXJ5UGFyYW0gPSBudWxsO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZnVuY3Rpb24gY29uc3RydWN0TGVuZ3RoKGFyciwgbGVuKSB7XG4gIGlmIChsZW4gPCAweDgwKSB7XG4gICAgYXJyLnB1c2gobGVuKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG9jdGV0cyA9IDEgKyAoTWF0aC5sb2cobGVuKSAvIE1hdGguTE4yID4+PiAzKTtcbiAgYXJyLnB1c2gob2N0ZXRzIHwgMHg4MCk7XG4gIHdoaWxlICgtLW9jdGV0cykge1xuICAgIGFyci5wdXNoKChsZW4gPj4+IChvY3RldHMgPDwgMykpICYgMHhmZik7XG4gIH1cbiAgYXJyLnB1c2gobGVuKTtcbn1cblxuU2lnbmF0dXJlLnByb3RvdHlwZS50b0RFUiA9IGZ1bmN0aW9uIHRvREVSKGVuYykge1xuICB2YXIgciA9IHRoaXMuci50b0FycmF5KCk7XG4gIHZhciBzID0gdGhpcy5zLnRvQXJyYXkoKTtcblxuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChyWzBdICYgMHg4MClcbiAgICByID0gWyAwIF0uY29uY2F0KHIpO1xuICAvLyBQYWQgdmFsdWVzXG4gIGlmIChzWzBdICYgMHg4MClcbiAgICBzID0gWyAwIF0uY29uY2F0KHMpO1xuXG4gIHIgPSBybVBhZGRpbmcocik7XG4gIHMgPSBybVBhZGRpbmcocyk7XG5cbiAgd2hpbGUgKCFzWzBdICYmICEoc1sxXSAmIDB4ODApKSB7XG4gICAgcyA9IHMuc2xpY2UoMSk7XG4gIH1cbiAgdmFyIGFyciA9IFsgMHgwMiBdO1xuICBjb25zdHJ1Y3RMZW5ndGgoYXJyLCByLmxlbmd0aCk7XG4gIGFyciA9IGFyci5jb25jYXQocik7XG4gIGFyci5wdXNoKDB4MDIpO1xuICBjb25zdHJ1Y3RMZW5ndGgoYXJyLCBzLmxlbmd0aCk7XG4gIHZhciBiYWNrSGFsZiA9IGFyci5jb25jYXQocyk7XG4gIHZhciByZXMgPSBbIDB4MzAgXTtcbiAgY29uc3RydWN0TGVuZ3RoKHJlcywgYmFja0hhbGYubGVuZ3RoKTtcbiAgcmVzID0gcmVzLmNvbmNhdChiYWNrSGFsZik7XG4gIHJldHVybiB1dGlscy5lbmNvZGUocmVzLCBlbmMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi4vY3VydmVzJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcbnZhciBwYXJzZUJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcztcbnZhciBLZXlQYWlyID0gcmVxdWlyZSgnLi9rZXknKTtcbnZhciBTaWduYXR1cmUgPSByZXF1aXJlKCcuL3NpZ25hdHVyZScpO1xuXG5mdW5jdGlvbiBFRERTQShjdXJ2ZSkge1xuICBhc3NlcnQoY3VydmUgPT09ICdlZDI1NTE5JywgJ29ubHkgdGVzdGVkIHdpdGggZWQyNTUxOSBzbyBmYXInKTtcblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRUREU0EpKVxuICAgIHJldHVybiBuZXcgRUREU0EoY3VydmUpO1xuXG4gIGN1cnZlID0gY3VydmVzW2N1cnZlXS5jdXJ2ZTtcbiAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICB0aGlzLmcgPSBjdXJ2ZS5nO1xuICB0aGlzLmcucHJlY29tcHV0ZShjdXJ2ZS5uLmJpdExlbmd0aCgpICsgMSk7XG5cbiAgdGhpcy5wb2ludENsYXNzID0gY3VydmUucG9pbnQoKS5jb25zdHJ1Y3RvcjtcbiAgdGhpcy5lbmNvZGluZ0xlbmd0aCA9IE1hdGguY2VpbChjdXJ2ZS5uLmJpdExlbmd0aCgpIC8gOCk7XG4gIHRoaXMuaGFzaCA9IGhhc2guc2hhNTEyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVERFNBO1xuXG4vKipcbiogQHBhcmFtIHtBcnJheXxTdHJpbmd9IG1lc3NhZ2UgLSBtZXNzYWdlIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfEtleVBhaXJ9IHNlY3JldCAtIHNlY3JldCBieXRlcyBvciBhIGtleXBhaXJcbiogQHJldHVybnMge1NpZ25hdHVyZX0gLSBzaWduYXR1cmVcbiovXG5FRERTQS5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obWVzc2FnZSwgc2VjcmV0KSB7XG4gIG1lc3NhZ2UgPSBwYXJzZUJ5dGVzKG1lc3NhZ2UpO1xuICB2YXIga2V5ID0gdGhpcy5rZXlGcm9tU2VjcmV0KHNlY3JldCk7XG4gIHZhciByID0gdGhpcy5oYXNoSW50KGtleS5tZXNzYWdlUHJlZml4KCksIG1lc3NhZ2UpO1xuICB2YXIgUiA9IHRoaXMuZy5tdWwocik7XG4gIHZhciBSZW5jb2RlZCA9IHRoaXMuZW5jb2RlUG9pbnQoUik7XG4gIHZhciBzXyA9IHRoaXMuaGFzaEludChSZW5jb2RlZCwga2V5LnB1YkJ5dGVzKCksIG1lc3NhZ2UpXG4gICAgLm11bChrZXkucHJpdigpKTtcbiAgdmFyIFMgPSByLmFkZChzXykudW1vZCh0aGlzLmN1cnZlLm4pO1xuICByZXR1cm4gdGhpcy5tYWtlU2lnbmF0dXJlKHsgUjogUiwgUzogUywgUmVuY29kZWQ6IFJlbmNvZGVkIH0pO1xufTtcblxuLyoqXG4qIEBwYXJhbSB7QXJyYXl9IG1lc3NhZ2UgLSBtZXNzYWdlIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfFNpZ25hdHVyZX0gc2lnIC0gc2lnIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfFBvaW50fEtleVBhaXJ9IHB1YiAtIHB1YmxpYyBrZXlcbiogQHJldHVybnMge0Jvb2xlYW59IC0gdHJ1ZSBpZiBwdWJsaWMga2V5IG1hdGNoZXMgc2lnIG9mIG1lc3NhZ2VcbiovXG5FRERTQS5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1lc3NhZ2UsIHNpZywgcHViKSB7XG4gIG1lc3NhZ2UgPSBwYXJzZUJ5dGVzKG1lc3NhZ2UpO1xuICBzaWcgPSB0aGlzLm1ha2VTaWduYXR1cmUoc2lnKTtcbiAgdmFyIGtleSA9IHRoaXMua2V5RnJvbVB1YmxpYyhwdWIpO1xuICB2YXIgaCA9IHRoaXMuaGFzaEludChzaWcuUmVuY29kZWQoKSwga2V5LnB1YkJ5dGVzKCksIG1lc3NhZ2UpO1xuICB2YXIgU0cgPSB0aGlzLmcubXVsKHNpZy5TKCkpO1xuICB2YXIgUnBsdXNBaCA9IHNpZy5SKCkuYWRkKGtleS5wdWIoKS5tdWwoaCkpO1xuICByZXR1cm4gUnBsdXNBaC5lcShTRyk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuaGFzaEludCA9IGZ1bmN0aW9uIGhhc2hJbnQoKSB7XG4gIHZhciBoYXNoID0gdGhpcy5oYXNoKCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxuICAgIGhhc2gudXBkYXRlKGFyZ3VtZW50c1tpXSk7XG4gIHJldHVybiB1dGlscy5pbnRGcm9tTEUoaGFzaC5kaWdlc3QoKSkudW1vZCh0aGlzLmN1cnZlLm4pO1xufTtcblxuRUREU0EucHJvdG90eXBlLmtleUZyb21QdWJsaWMgPSBmdW5jdGlvbiBrZXlGcm9tUHVibGljKHB1Yikge1xuICByZXR1cm4gS2V5UGFpci5mcm9tUHVibGljKHRoaXMsIHB1Yik7XG59O1xuXG5FRERTQS5wcm90b3R5cGUua2V5RnJvbVNlY3JldCA9IGZ1bmN0aW9uIGtleUZyb21TZWNyZXQoc2VjcmV0KSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21TZWNyZXQodGhpcywgc2VjcmV0KTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5tYWtlU2lnbmF0dXJlID0gZnVuY3Rpb24gbWFrZVNpZ25hdHVyZShzaWcpIHtcbiAgaWYgKHNpZyBpbnN0YW5jZW9mIFNpZ25hdHVyZSlcbiAgICByZXR1cm4gc2lnO1xuICByZXR1cm4gbmV3IFNpZ25hdHVyZSh0aGlzLCBzaWcpO1xufTtcblxuLyoqXG4qICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWpvc2Vmc3Nvbi1lZGRzYS1lZDI1NTE5LTAzI3NlY3Rpb24tNS4yXG4qXG4qIEVERFNBIGRlZmluZXMgbWV0aG9kcyBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHBvaW50cyBhbmQgaW50ZWdlcnMuIFRoZXNlIGFyZVxuKiBoZWxwZXIgY29udmVuaWVuY2UgbWV0aG9kcywgdGhhdCBwYXNzIGFsb25nIHRvIHV0aWxpdHkgZnVuY3Rpb25zIGltcGxpZWRcbiogcGFyYW1ldGVycy5cbipcbiovXG5FRERTQS5wcm90b3R5cGUuZW5jb2RlUG9pbnQgPSBmdW5jdGlvbiBlbmNvZGVQb2ludChwb2ludCkge1xuICB2YXIgZW5jID0gcG9pbnQuZ2V0WSgpLnRvQXJyYXkoJ2xlJywgdGhpcy5lbmNvZGluZ0xlbmd0aCk7XG4gIGVuY1t0aGlzLmVuY29kaW5nTGVuZ3RoIC0gMV0gfD0gcG9pbnQuZ2V0WCgpLmlzT2RkKCkgPyAweDgwIDogMDtcbiAgcmV0dXJuIGVuYztcbn07XG5cbkVERFNBLnByb3RvdHlwZS5kZWNvZGVQb2ludCA9IGZ1bmN0aW9uIGRlY29kZVBvaW50KGJ5dGVzKSB7XG4gIGJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcyhieXRlcyk7XG5cbiAgdmFyIGxhc3RJeCA9IGJ5dGVzLmxlbmd0aCAtIDE7XG4gIHZhciBub3JtZWQgPSBieXRlcy5zbGljZSgwLCBsYXN0SXgpLmNvbmNhdChieXRlc1tsYXN0SXhdICYgfjB4ODApO1xuICB2YXIgeElzT2RkID0gKGJ5dGVzW2xhc3RJeF0gJiAweDgwKSAhPT0gMDtcblxuICB2YXIgeSA9IHV0aWxzLmludEZyb21MRShub3JtZWQpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludEZyb21ZKHksIHhJc09kZCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZW5jb2RlSW50ID0gZnVuY3Rpb24gZW5jb2RlSW50KG51bSkge1xuICByZXR1cm4gbnVtLnRvQXJyYXkoJ2xlJywgdGhpcy5lbmNvZGluZ0xlbmd0aCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZGVjb2RlSW50ID0gZnVuY3Rpb24gZGVjb2RlSW50KGJ5dGVzKSB7XG4gIHJldHVybiB1dGlscy5pbnRGcm9tTEUoYnl0ZXMpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmlzUG9pbnQgPSBmdW5jdGlvbiBpc1BvaW50KHZhbCkge1xuICByZXR1cm4gdmFsIGluc3RhbmNlb2YgdGhpcy5wb2ludENsYXNzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG52YXIgY2FjaGVkUHJvcGVydHkgPSB1dGlscy5jYWNoZWRQcm9wZXJ0eTtcblxuLyoqXG4qIEBwYXJhbSB7RUREU0F9IGVkZHNhIC0gaW5zdGFuY2VcbiogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyAtIHB1YmxpYy9wcml2YXRlIGtleSBwYXJhbWV0ZXJzXG4qXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZT59IFtwYXJhbXMuc2VjcmV0XSAtIHNlY3JldCBzZWVkIGJ5dGVzXG4qIEBwYXJhbSB7UG9pbnR9IFtwYXJhbXMucHViXSAtIHB1YmxpYyBrZXkgcG9pbnQgKGFrYSBgQWAgaW4gZWRkc2EgdGVybXMpXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZT59IFtwYXJhbXMucHViXSAtIHB1YmxpYyBrZXkgcG9pbnQgZW5jb2RlZCBhcyBieXRlc1xuKlxuKi9cbmZ1bmN0aW9uIEtleVBhaXIoZWRkc2EsIHBhcmFtcykge1xuICB0aGlzLmVkZHNhID0gZWRkc2E7XG4gIHRoaXMuX3NlY3JldCA9IHBhcnNlQnl0ZXMocGFyYW1zLnNlY3JldCk7XG4gIGlmIChlZGRzYS5pc1BvaW50KHBhcmFtcy5wdWIpKVxuICAgIHRoaXMuX3B1YiA9IHBhcmFtcy5wdWI7XG4gIGVsc2VcbiAgICB0aGlzLl9wdWJCeXRlcyA9IHBhcnNlQnl0ZXMocGFyYW1zLnB1Yik7XG59XG5cbktleVBhaXIuZnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGZyb21QdWJsaWMoZWRkc2EsIHB1Yikge1xuICBpZiAocHViIGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gcHViO1xuICByZXR1cm4gbmV3IEtleVBhaXIoZWRkc2EsIHsgcHViOiBwdWIgfSk7XG59O1xuXG5LZXlQYWlyLmZyb21TZWNyZXQgPSBmdW5jdGlvbiBmcm9tU2VjcmV0KGVkZHNhLCBzZWNyZXQpIHtcbiAgaWYgKHNlY3JldCBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHNlY3JldDtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVkZHNhLCB7IHNlY3JldDogc2VjcmV0IH0pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuc2VjcmV0ID0gZnVuY3Rpb24gc2VjcmV0KCkge1xuICByZXR1cm4gdGhpcy5fc2VjcmV0O1xufTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3B1YkJ5dGVzJywgZnVuY3Rpb24gcHViQnl0ZXMoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMucHViKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwdWInLCBmdW5jdGlvbiBwdWIoKSB7XG4gIGlmICh0aGlzLl9wdWJCeXRlcylcbiAgICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLl9wdWJCeXRlcyk7XG4gIHJldHVybiB0aGlzLmVkZHNhLmcubXVsKHRoaXMucHJpdigpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHJpdkJ5dGVzJywgZnVuY3Rpb24gcHJpdkJ5dGVzKCkge1xuICB2YXIgZWRkc2EgPSB0aGlzLmVkZHNhO1xuICB2YXIgaGFzaCA9IHRoaXMuaGFzaCgpO1xuICB2YXIgbGFzdEl4ID0gZWRkc2EuZW5jb2RpbmdMZW5ndGggLSAxO1xuXG4gIHZhciBhID0gaGFzaC5zbGljZSgwLCBlZGRzYS5lbmNvZGluZ0xlbmd0aCk7XG4gIGFbMF0gJj0gMjQ4O1xuICBhW2xhc3RJeF0gJj0gMTI3O1xuICBhW2xhc3RJeF0gfD0gNjQ7XG5cbiAgcmV0dXJuIGE7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3ByaXYnLCBmdW5jdGlvbiBwcml2KCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVJbnQodGhpcy5wcml2Qnl0ZXMoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ2hhc2gnLCBmdW5jdGlvbiBoYXNoKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5oYXNoKCkudXBkYXRlKHRoaXMuc2VjcmV0KCkpLmRpZ2VzdCgpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdtZXNzYWdlUHJlZml4JywgZnVuY3Rpb24gbWVzc2FnZVByZWZpeCgpIHtcbiAgcmV0dXJuIHRoaXMuaGFzaCgpLnNsaWNlKHRoaXMuZWRkc2EuZW5jb2RpbmdMZW5ndGgpO1xufSk7XG5cbktleVBhaXIucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1lc3NhZ2UpIHtcbiAgYXNzZXJ0KHRoaXMuX3NlY3JldCwgJ0tleVBhaXIgY2FuIG9ubHkgdmVyaWZ5Jyk7XG4gIHJldHVybiB0aGlzLmVkZHNhLnNpZ24obWVzc2FnZSwgdGhpcyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobWVzc2FnZSwgc2lnKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLnZlcmlmeShtZXNzYWdlLCBzaWcsIHRoaXMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuZ2V0U2VjcmV0ID0gZnVuY3Rpb24gZ2V0U2VjcmV0KGVuYykge1xuICBhc3NlcnQodGhpcy5fc2VjcmV0LCAnS2V5UGFpciBpcyBwdWJsaWMgb25seScpO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHRoaXMuc2VjcmV0KCksIGVuYyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRQdWJsaWMgPSBmdW5jdGlvbiBnZXRQdWJsaWMoZW5jKSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy5wdWJCeXRlcygpLCBlbmMpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBLZXlQYWlyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG52YXIgY2FjaGVkUHJvcGVydHkgPSB1dGlscy5jYWNoZWRQcm9wZXJ0eTtcbnZhciBwYXJzZUJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcztcblxuLyoqXG4qIEBwYXJhbSB7RUREU0F9IGVkZHNhIC0gZWRkc2EgaW5zdGFuY2VcbiogQHBhcmFtIHtBcnJheTxCeXRlcz58T2JqZWN0fSBzaWcgLVxuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPnxQb2ludH0gW3NpZy5SXSAtIFIgcG9pbnQgYXMgUG9pbnQgb3IgYnl0ZXNcbiogQHBhcmFtIHtBcnJheTxCeXRlcz58Ym59IFtzaWcuU10gLSBTIHNjYWxhciBhcyBibiBvciBieXRlc1xuKiBAcGFyYW0ge0FycmF5PEJ5dGVzPn0gW3NpZy5SZW5jb2RlZF0gLSBSIHBvaW50IGVuY29kZWRcbiogQHBhcmFtIHtBcnJheTxCeXRlcz59IFtzaWcuU2VuY29kZWRdIC0gUyBzY2FsYXIgZW5jb2RlZFxuKi9cbmZ1bmN0aW9uIFNpZ25hdHVyZShlZGRzYSwgc2lnKSB7XG4gIHRoaXMuZWRkc2EgPSBlZGRzYTtcblxuICBpZiAodHlwZW9mIHNpZyAhPT0gJ29iamVjdCcpXG4gICAgc2lnID0gcGFyc2VCeXRlcyhzaWcpO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHNpZykpIHtcbiAgICBzaWcgPSB7XG4gICAgICBSOiBzaWcuc2xpY2UoMCwgZWRkc2EuZW5jb2RpbmdMZW5ndGgpLFxuICAgICAgUzogc2lnLnNsaWNlKGVkZHNhLmVuY29kaW5nTGVuZ3RoKSxcbiAgICB9O1xuICB9XG5cbiAgYXNzZXJ0KHNpZy5SICYmIHNpZy5TLCAnU2lnbmF0dXJlIHdpdGhvdXQgUiBvciBTJyk7XG5cbiAgaWYgKGVkZHNhLmlzUG9pbnQoc2lnLlIpKVxuICAgIHRoaXMuX1IgPSBzaWcuUjtcbiAgaWYgKHNpZy5TIGluc3RhbmNlb2YgQk4pXG4gICAgdGhpcy5fUyA9IHNpZy5TO1xuXG4gIHRoaXMuX1JlbmNvZGVkID0gQXJyYXkuaXNBcnJheShzaWcuUikgPyBzaWcuUiA6IHNpZy5SZW5jb2RlZDtcbiAgdGhpcy5fU2VuY29kZWQgPSBBcnJheS5pc0FycmF5KHNpZy5TKSA/IHNpZy5TIDogc2lnLlNlbmNvZGVkO1xufVxuXG5jYWNoZWRQcm9wZXJ0eShTaWduYXR1cmUsICdTJywgZnVuY3Rpb24gUygpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMuU2VuY29kZWQoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUicsIGZ1bmN0aW9uIFIoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuUmVuY29kZWQoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUmVuY29kZWQnLCBmdW5jdGlvbiBSZW5jb2RlZCgpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5SKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1NlbmNvZGVkJywgZnVuY3Rpb24gU2VuY29kZWQoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZUludCh0aGlzLlMoKSk7XG59KTtcblxuU2lnbmF0dXJlLnByb3RvdHlwZS50b0J5dGVzID0gZnVuY3Rpb24gdG9CeXRlcygpIHtcbiAgcmV0dXJuIHRoaXMuUmVuY29kZWQoKS5jb25jYXQodGhpcy5TZW5jb2RlZCgpKTtcbn07XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9IZXggPSBmdW5jdGlvbiB0b0hleCgpIHtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLnRvQnl0ZXMoKSwgJ2hleCcpLnRvVXBwZXJDYXNlKCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNpZ25hdHVyZTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBkb3VibGVzOiB7XG4gICAgc3RlcDogNCxcbiAgICBwb2ludHM6IFtcbiAgICAgIFtcbiAgICAgICAgJ2U2MGZjZTkzYjU5ZTllYzUzMDExYWFiYzIxYzIzZTk3YjJhMzEzNjliODdhNWFlOWM0NGVlODllMmE2ZGVjMGEnLFxuICAgICAgICAnZjdlMzUwNzM5OWU1OTU5MjlkYjk5ZjM0ZjU3OTM3MTAxMjk2ODkxZTQ0ZDIzZjBiZTFmMzJjY2U2OTYxNjgyMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODI4MjI2MzIxMmM2MDlkOWVhMmE2ZTNlMTcyZGUyMzhkOGMzOWNhYmQ1YWMxY2ExMDY0NmUyM2ZkNWY1MTUwOCcsXG4gICAgICAgICcxMWY4YTgwOTg1NTdkZmU0NWU4MjU2ZTgzMGI2MGFjZTYyZDYxM2FjMmY3YjE3YmVkMzFiNmVhZmY2ZTI2Y2FmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzVlMTU5ZjcyOGI4NjVhNzJmOTljYzZjNmZjODQ2ZGUwYjkzODMzZmQyMjIyZWQ3M2ZjZTViNTUxZTViNzM5JyxcbiAgICAgICAgJ2QzNTA2ZTBkOWUzYzc5ZWJhNGVmOTdhNTFmZjcxZjVlYWNiNTk1NWFkZDI0MzQ1YzZlZmE2ZmZlZTlmZWQ2OTUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM2M2Q5MGQ0NDdiMDBjOWM5OWNlYWMwNWI2MjYyZWUwNTM0NDFjN2U1NTU1MmZmZTUyNmJhZDhmODNmZjQ2NDAnLFxuICAgICAgICAnNGUyNzNhZGZjNzMyMjIxOTUzYjQ0NTM5N2YzMzYzMTQ1YjlhODkwMDgxOTllY2I2MjAwM2M3ZjNiZWU5ZGU5JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4YjRiNWYxNjVkZjNjMmJlOGM2MjQ0YjViNzQ1NjM4ODQzZTRhNzgxYTE1YmNkMWI2OWY3OWE1NWRmZmRmODBjJyxcbiAgICAgICAgJzRhYWQwYTZmNjhkMzA4YjRiM2ZiZDc4MTNhYjBkYTA0ZjllMzM2NTQ2MTYyZWU1NmIzZWZmMGM2NWZkNGZkMzYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzcyM2NiYWE2ZTVkYjk5NmQ2YmY3NzFjMDBiZDU0OGM3YjcwMGRiZmZhNmMwZTc3YmNiNjExNTkyNTIzMmZjZGEnLFxuICAgICAgICAnOTZlODY3YjU1OTVjYzQ5OGE5MjExMzc0ODg4MjRkNmUyNjYwYTA2NTM3Nzk0OTQ4MDFkYzA2OWQ5ZWIzOWY1ZicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWViZmE0ZDQ5M2JlYmY5OGJhNWZlZWM4MTJjMmQzYjUwOTQ3OTYxMjM3YTkxOTgzOWE1MzNlY2EwZTdkZDdmYScsXG4gICAgICAgICc1ZDlhOGNhMzk3MGVmMGYyNjllZTdlZGFmMTc4MDg5ZDlhZTRjZGMzYTcxMWY3MTJkZGZkNGZkYWUxZGU4OTk5JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxMDBmNDRkYTY5NmU3MTY3Mjc5MWQwYTA5YjdiZGU0NTlmMTIxNWEyOWIzYzAzYmZlZmQ3ODM1YjM5YTQ4ZGIwJyxcbiAgICAgICAgJ2NkZDllMTMxOTJhMDBiNzcyZWM4ZjMzMDBjMDkwNjY2YjdmZjRhMThmZjUxOTVhYzBmYmQ1Y2Q2MmJjNjVhMDknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UxMDMxYmUyNjJjN2VkMWIxZGM5MjI3YTRhMDRjMDE3YTc3ZjhkNDQ2NGYzYjM4NTJjOGFjZGU2ZTUzNGZkMmQnLFxuICAgICAgICAnOWQ3MDYxOTI4OTQwNDA1ZTZiYjZhNDE3NjU5NzUzNWFmMjkyZGQ0MTllMWNlZDc5YTQ0ZjE4ZjI5NDU2YTAwZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmVlYTZjYWU0NmQ1NWI1MzBhYzI4MzlmMTQzYmQ3ZWM1Y2Y4YjI2NmE0MWQ2YWY1MmQ1ZTY4OGQ5MDk0Njk2ZCcsXG4gICAgICAgICdlNTdjNmI2Yzk3ZGNlMWJhYjA2ZTRlMTJiZjNlY2Q1Yzk4MWM4OTU3Y2M0MTQ0MmQzMTU1ZGViZjE4MDkwMDg4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkYTY3YTkxZDkxMDQ5Y2RjYjM2N2JlNGJlNmZmY2EzY2ZlZWQ2NTdkODA4NTgzZGUzM2ZhOTc4YmMxZWM2Y2IxJyxcbiAgICAgICAgJzliYWNhYTM1NDgxNjQyYmM0MWY0NjNmN2VjOTc4MGU1ZGVjN2FkYzUwOGY3NDBhMTdlOWVhOGUyN2E2OGJlMWQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUzOTA0ZmFhMGIzMzRjZGRhNmUwMDA5MzVlZjIyMTUxZWMwOGQwZjdiYjExMDY5ZjU3NTQ1Y2NjMWEzN2I3YzAnLFxuICAgICAgICAnNWJjMDg3ZDBiYzgwMTA2ZDg4YzllY2NhYzIwZDNjMWMxMzk5OTk4MWUxNDQzNDY5OWRjYjA5NmIwMjI3NzFjOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGU3YmNkMGJkMzU5ODNhNzcxOWNjYTc3NjRjYTkwNjc3OWI1M2EwNDNhOWI4YmNhZWZmOTU5ZjQzYWQ4NjA0NycsXG4gICAgICAgICcxMGI3NzcwYjJhM2RhNGIzOTQwMzEwNDIwY2E5NTE0NTc5ZTg4ZTJlNDdmZDY4YjNlYTEwMDQ3ZTg0NjAzNzJhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczODVlZWQzNGMxY2RmZjIxZTZkMDgxODY4OWI4MWJkZTcxYTdmNGYxODM5N2U2NjkwYTg0MWUxNTk5YzQzODYyJyxcbiAgICAgICAgJzI4M2JlYmMzZThlYTIzZjU2NzAxZGUxOWU5ZWJmNDU3NmIzMDRlZWMyMDg2ZGM4Y2MwNDU4ZmU1NTQyZTU0NTMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzZmOWQ5YjgwM2VjZjE5MTYzN2M3M2E0NDEzZGZhMTgwZmRkZjg0YTU5NDdmYmM5YzYwNmVkODZjM2ZhYzNhNycsXG4gICAgICAgICc3YzgwYzY4ZTYwMzA1OWJhNjliOGUyYTMwZTQ1YzRkNDdlYTRkZDJmNWMyODEwMDJkODY4OTA2MDNhODQyMTYwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMzIyZDQwMTI0M2M0ZTI1ODJhMjE0N2MxMDRkNmVjYmY3NzRkMTYzZGIwZjVlNTMxM2I3ZTBlNzQyZDBlNmJkJyxcbiAgICAgICAgJzU2ZTcwNzk3ZTk2NjRlZjViZmIwMTliYzRkZGFmOWI3MjgwNWY2M2VhMjg3M2FmNjI0ZjNhMmU5NmMyOGIyYTAnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg1NjcyYzdkMmRlMGI3ZGEyYmQxNzcwZDg5NjY1ODY4NzQxYjNmOWFmNzY0MzM5NzcyMWQ3NGQyODEzNGFiODMnLFxuICAgICAgICAnN2M0ODFiOWI1YjQzYjJlYjYzNzQwNDliZmE2MmMyZTVlNzdmMTdmY2M1Mjk4ZjQ0YzhlMzA5NGY3OTAzMTNhNicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTQ4YmY4MDliMTk4OGE0NmIwNmM5ZjE5MTk0MTNiMTBmOTIyNmM2MGY2Njg4MzJmZmQ5NTlhZjYwYzgyYTBhJyxcbiAgICAgICAgJzUzYTU2Mjg1NmRjYjY2NDZkYzZiNzRjNWQxYzM0MThjNmQ0ZGZmMDhjOTdjZDJiZWQ0Y2I3Zjg4ZDhjOGU1ODknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYyNjBjZTdmNDYxODAxYzM0ZjA2N2NlMGYwMjg3M2E4ZjFiMGU0NGRmYzY5NzUyYWNjZWNkODE5ZjM4ZmQ4ZTgnLFxuICAgICAgICAnYmMyZGE4MmI2ZmE1YjU3MWE3ZjA5MDQ5Nzc2YTFlZjdlY2QyOTIyMzgwNTFjMTk4YzFhODRlOTViMmI0YWUxNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTUwMzdkZTBhZmMxZDhkNDNkODM0ODQxNGJiZjQxMDMwNDNlYzhmNTc1YmZkYzQzMjk1M2NjOGQyMDM3ZmEyZCcsXG4gICAgICAgICc0NTcxNTM0YmFhOTRkM2I1ZjlmOThkMDlmYjk5MGJkZGJkNWY1YjAzZWM0ODFmMTBlMGU1ZGM4NDFkNzU1YmRhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMDYzNzJiMGY0YTIwN2FkZjVlYTkwNWU4ZjE3NzFiNGU3ZThkYmQxYzZhNmM1YjcyNTg2NmEwYWU0ZmNlNzI1JyxcbiAgICAgICAgJzdhOTA4OTc0YmNlMThjZmUxMmEyN2JiMmFkNWE0ODhjZDc0ODRhNzc4NzEwNDg3MGIyNzAzNGY5NGVlZTMxZGQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzIxM2M3YTcxNWNkNWQ0NTM1OGQwYmJmOWRjMGNlMDIyMDRiMTBiZGRlMmEzZjU4NTQwYWQ2OTA4ZDA1NTk3NTQnLFxuICAgICAgICAnNGI2ZGFkMGI1YWU0NjI1MDcwMTNhZDA2MjQ1YmExOTBiYjQ4NTBmNWYzNmE3ZWVkZGZmMmMyNzUzNGI0NThmMicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGU3YzI3MmE3YWY0YjM0ZThkYmI5MzUyYTU0MTlhODdlMjgzOGM3MGFkYzYyY2RkZjBjYzNhM2IwOGZiZDUzYycsXG4gICAgICAgICcxNzc0OWM3NjZjOWQwYjE4ZTE2ZmQwOWY2ZGVmNjgxYjUzMGI5NjE0YmZmN2RkMzNlMGIzOTQxODE3ZGNhYWU2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmZWE3NGUzZGJlNzc4YjFiMTBmMjM4YWQ2MTY4NmFhNWM3NmUzZGIyYmU0MzA1NzYzMjQyN2UyODQwZmIyN2I2JyxcbiAgICAgICAgJzZlMDU2OGRiOWIwYjEzMjk3Y2Y2NzRkZWNjYjZhZjkzMTI2YjU5NmI5NzNmN2I3NzcwMWQzZGI3ZjIzY2I5NmYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2ZTY0MTEzZjY3N2NmMGUxMGEyNTcwZDU5OTk2OGQzMTU0NGUxNzliNzYwNDMyOTUyYzAyYTQ0MTdiZGRlMzknLFxuICAgICAgICAnYzkwZGRmOGRlZTRlOTVjZjU3NzA2NmQ3MDY4MWYwZDM1ZTJhMzNkMmI1NmQyMDMyYjRiMTc1MmQxOTAxYWMwMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzczOGM1NmIwM2IyYWJlMWU4MjgxYmFhNzQzZjhmOWE4ZjdjYzY0M2RmMjZjYmVlM2FiMTUwMjQyYmNiYjg5MScsXG4gICAgICAgICc4OTNmYjU3ODk1MWFkMjUzN2Y3MThmMmVhY2JmYmJiYjgyMzE0ZWVmNzg4MGNmZTkxN2U3MzVkOTY5OWE4NGMzJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkODk1NjI2NTQ4YjY1YjgxZTI2NGM3NjM3Yzk3Mjg3N2QxZDcyZTVmM2E5MjUwMTQzNzJlOWY2NTg4ZjZjMTRiJyxcbiAgICAgICAgJ2ZlYmZhYTM4ZjJiYzdlYWU3MjhlYzYwODE4YzM0MGViMDM0MjhkNjMyYmIwNjdlMTc5MzYzZWQ3NWQ3ZDk5MWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2I4ZGE5NDAzMmE5NTc1MThlYjBmNjQzMzU3MWU4NzYxY2VmZmM3MzY5M2U4NGVkZDQ5MTUwYTU2NGY2NzZlMDMnLFxuICAgICAgICAnMjgwNGRmYTQ0ODA1YTFlNGQ3Yzk5Y2M5NzYyODA4YjA5MmNjNTg0ZDk1ZmYzYjUxMTQ4OGU0ZTc0ZWZkZjZlNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTgwZmVhMTQ0NDFmYjMzYTdkOGFkYWI5NDc1ZDdmYWIyMDE5ZWZmYjUxNTZhNzkyZjFhMTE3NzhlM2MwZGY1ZCcsXG4gICAgICAgICdlZWQxZGU3ZjYzOGUwMDc3MWU4OTc2OGNhM2NhOTQ0NzJkMTU1ZTgwYWYzMjJlYTlmY2I0MjkxYjZhYzllYzc4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhMzAxNjk3YmRmY2Q3MDQzMTNiYTQ4ZTUxZDU2NzU0M2YyYTE4MjAzMWVmZDY5MTVkZGMwN2JiY2M0ZTE2MDcwJyxcbiAgICAgICAgJzczNzBmOTFjZmI2N2U0ZjUwODE4MDlmYTI1ZDQwZjliMTczNWRiZjdjMGExMWExMzBjMGQxYTA0MWUxNzdlYTEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzkwYWQ4NWIzODlkNmI5MzY0NjNmOWQwNTEyNjc4ZGUyMDhjYzMzMGIxMTMwN2ZmZmFiN2FjNjNlM2ZiMDRlZDQnLFxuICAgICAgICAnZTUwN2EzNjIwYTM4MjYxYWZmZGNiZDk0MjcyMjJiODM5YWVmYWJlMTU4Mjg5NGQ5OTFkNGQ0OGNiNmVmMTUwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZjY4YjlkMmY2M2I1ZjMzOTIzOWMxYWQ5ODFmMTYyZWU4OGM1Njc4NzIzZWEzMzUxYjdiNDQ0YzllYzRjMGRhJyxcbiAgICAgICAgJzY2MmE5ZjJkYmEwNjM5ODZkZTFkOTBjMmI2YmUyMTVkYmJlYTJjZmU5NTUxMGJmZGYyM2NiZjc5NTAxZmZmODInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U0ZjNmYjAxNzZhZjg1ZDY1ZmY5OWZmOTE5OGMzNjA5MWY0OGU4NjUwMzY4MWUzZTY2ODZmZDUwNTMyMzFlMTEnLFxuICAgICAgICAnMWU2MzYzM2FkMGVmNGYxYzE2NjFhNmQwZWEwMmI3Mjg2Y2M3ZTc0ZWM5NTFkMWM5ODIyYzM4NTc2ZmViNzNiYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGMwMGZhOWIxOGViZjMzMWViOTYxNTM3YTQ1YTQyNjZjNzAzNGYyZjBkNGUxZDA3MTZmYjZlYWUyMGVhZTI5ZScsXG4gICAgICAgICdlZmE0NzI2N2ZlYTUyMWExYTlkYzM0M2EzNzM2Yzk3NGMyZmFkYWZhODFlMzZjNTRlN2QyYTRjNjY3MDI0MTRiJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlN2EyNmNlNjlkZDQ4MjlmM2UxMGNlYzBhOWU5OGVkMzE0M2QwODRmMzA4YjkyYzA5OTdmZGRmYzYwY2IzZTQxJyxcbiAgICAgICAgJzJhNzU4ZTMwMGZhNzk4NGI0NzFiMDA2YTFhYWZiYjE4ZDBhNmIyYzA0MjBlODNlMjBlOGE5NDIxY2YyY2ZkNTEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2I2NDU5ZTBlZTM2NjJlYzhkMjM1NDBjMjIzYmNiZGM1NzFjYmNiOTY3ZDc5NDI0ZjNjZjI5ZWIzZGU2YjgwZWYnLFxuICAgICAgICAnNjdjODc2ZDA2ZjNlMDZkZTFkYWRmMTZlNTY2MWRiM2M0YjNhZTZkNDhlMzViMmZmMzBiZjBiNjFhNzFiYTQ1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNjhhODBjODI4MGJiODQwNzkzMjM0YWExMThmMDYyMzFkNmYxZmM2N2U3M2M1YTVkZWRhMGY1YjQ5Njk0M2U4JyxcbiAgICAgICAgJ2RiOGJhOWZmZjRiNTg2ZDAwYzRiMWY5MTc3YjBlMjhiNWIwZTdiOGY3ODQ1Mjk1YTI5NGM4NDI2NmIxMzMxMjAnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyNGFlZDdkZjY1YzgwNDI1MmRjMDI3MDkwN2EzMGIwOTYxMmFlYjk3MzQ0OWNlYTQwOTU5ODBmYzI4ZDNkNWQnLFxuICAgICAgICAnNjQ4YTM2NTc3NGI2MWYyZmYxMzBjMGMzNWFlYzFmNGYxOTIxM2IwYzdlMzMyODQzOTY3MjI0YWY5NmFiN2M4NCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGRmOWMxNDkxOWNkZTYxZjZkNTFkZmRiZTVmZWU1ZGNlZWM0MTQzYmE4ZDFjYTg4OGU4YmQzNzNmZDA1NGM5NicsXG4gICAgICAgICczNWVjNTEwOTJkODcyODA1MDk3NGMyM2ExZDg1ZDRiNWQ1MDZjZGMyODg0OTAxOTJlYmFjMDZjYWQxMGQ1ZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOWMzOTE5YTg0YTQ3NDg3MGZhZWQ4YTljMWNjNjYwMjE1MjM0ODkwNTRkN2YwMzA4Y2JmYzk5YzhhYzFmOThjZCcsXG4gICAgICAgICdkZGI4NGYwZjRhNGRkZDU3NTg0ZjA0NGJmMjYwZTY0MTkwNTMyNmY3NmM2NGM4ZTZiZTdlNWUwM2Q0ZmM1OTlkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MDU3MTcwYjFkZDEyZmRmOGRlMDVmMjgxZDhlMDZiYjkxZTE0OTNhOGI5MWQ0Y2M1YTIxMzgyMTIwYTk1OWU1JyxcbiAgICAgICAgJzlhMWFmMGIyNmE2YTQ4MDdhZGQ5YTJkYWY3MWRmMjYyNDY1MTUyYmMzZWUyNGM2NWU4OTliZTkzMjM4NWEyYTgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E1NzZkZjhlMjNhMDg0MTE0MjE0MzlhNDUxOGRhMzE4ODBjZWYwZmJhN2Q0ZGYxMmIxYTY5NzNlZWNiOTQyNjYnLFxuICAgICAgICAnNDBhNmJmMjBlNzY2NDBiMmM5MmI5N2FmZTU4Y2Q4MmM0MzJlMTBhN2Y1MTRkOWYzZWU4YmUxMWFlMWIyOGVjOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzc3OGE3OGMyOGRlYzNlMzBhMDVmZTk2MjlkZThjMzhiYjMwZDFmNWNmOWEzYTIwOGY3NjM4ODliZTU4YWQ3MScsXG4gICAgICAgICczNDYyNmQ5YWI1YTViMjJmZjcwOThlMTJmMmZmNTgwMDg3YjM4NDExZmYyNGFjNTYzYjUxM2ZjMWZkOWY0M2FjJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5Mjg5NTVlZTYzN2E4NDQ2MzcyOWZkMzBlN2FmZDJlZDVmOTYyNzRlNWFkN2U1Y2IwOWVkYTljMDZkOTAzYWMnLFxuICAgICAgICAnYzI1NjIxMDAzZDNmNDJhODI3Yjc4YTEzMDkzYTk1ZWVhYzNkMjZlZmE4YThkODNmYzUxODBlOTM1YmNkMDkxZicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODVkMGZlZjNlYzZkYjEwOTM5OTA2NGYzYTBlM2IyODU1NjQ1YjRhOTA3YWQzNTQ1MjdhYWU3NTE2M2Q4Mjc1MScsXG4gICAgICAgICcxZjAzNjQ4NDEzYTM4YzBiZTI5ZDQ5NmU1ODJjZjU2NjNlODc1MWU5Njg3NzMzMTU4MmMyMzdhMjRlYjFmOTYyJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmZjJiMGRjZTk3ZWVjZTk3YzFjOWI2MDQxNzk4Yjg1ZGZkZmI2ZDg4ODJkYTIwMzA4ZjU0MDQ4MjQ1MjYwODdlJyxcbiAgICAgICAgJzQ5M2QxM2ZlZjUyNGJhMTg4YWY0YzRkYzU0ZDA3OTM2YzdiN2VkNmZiOTBlMmNlYjJjOTUxZTAxZjBjMjk5MDcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgyN2ZiYmU0YjFlODgwZWE5ZWQyYjJlNjMwMWIyMTJiNTdmMWVlMTQ4Y2Q2ZGQyODc4MGU1ZTJjZjg1NmUyNDEnLFxuICAgICAgICAnYzYwZjljOTIzYzcyN2IwYjcxYmVmMmM2N2QxZDEyNjg3ZmY3YTYzMTg2OTAzMTY2ZDYwNWI2OGJhZWMyOTNlYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWFhNjQ5ZjIxZjUxYmRiYWU3YmU0YWUzNGNlNmU1MjE3YTU4ZmRjZTdmNDdmOWFhN2YzYjU4ZmEyMTIwZTJiMycsXG4gICAgICAgICdiZTMyNzllZDViYmJiMDNhYzY5YTgwZjg5ODc5YWE1YTAxYTZiOTY1ZjEzZjdlNTlkNDdhNTMwNWJhNWFkOTNkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNGE0MmQ0M2M1Y2YxNjlkOTM5MWRmNmRlY2Y0MmVlNTQxYjZkOGYwYzlhMTM3NDAxZTIzNjMyZGRhMzRkMjRmJyxcbiAgICAgICAgJzRkOWY5MmU3MTZkMWM3MzUyNmZjOTljY2ZiOGFkMzRjZTg4NmVlZGZhOGQ4ZTRmMTNhN2Y3MTMxZGViYTk0MTQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzFlYzgwZmVmMzYwY2JkZDk1NDE2MGZhZGFiMzUyYjZiOTJiNTM1NzZhODhmZWE0OTQ3MTczYjlkNDMwMGJmMTknLFxuICAgICAgICAnYWVlZmU5Mzc1NmI1MzQwZDJmM2E0OTU4YTdhYmJmNWUwMTQ2ZTc3ZjYyOTVhMDdiNjcxY2RjMWNjMTA3Y2VmZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTQ2YTc3OGMwNDY3MGMyZjkxYjAwYWY0NjgwZGZhOGJjZTM0OTA3MTdkNThiYTg4OWRkYjU5MjgzNjY2NDJiZScsXG4gICAgICAgICdiMzE4ZTBlYzMzNTQwMjhhZGQ2Njk4MjdmOWQ0YjI4NzBhYWE5NzFkMmY3ZTVlZDFkMGIyOTc0ODNkODNlZmQwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmYTUwYzBmNjFkMjJlNWYwN2UzYWNlYmIxYWEwN2IxMjhkMDAxMjIwOWEyOGI5Nzc2ZDc2YTg3OTMxODBlZWY5JyxcbiAgICAgICAgJzZiODRjNjkyMjM5N2ViYTliNzJjZDI4NzIyODFhNjhhNWU2ODMyOTNhNTdhMjEzYjM4Y2Q4ZDdkM2Y0ZjI4MTEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhMWQ2MWQwY2E3MjFhMTFiMWE1YmY2YjdkODhlODQyMWEyODhhYjVkNWJiYTUyMjBlNTNkMzJiNWYwNjdlYzInLFxuICAgICAgICAnODE1N2Y1NWE3Yzk5MzA2Yzc5YzA3NjYxNjFjOTFlMjk2NmE3Mzg5OWQyNzliNDhhNjU1ZmJhMGYxYWQ4MzZmMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYThlMjgyZmYwYzk3MDY5MDcyMTVmZjk4ZThmZDQxNjYxNTMxMWRlMDQ0NmYxZTA2MmE3M2IwNjEwZDA2NGUxMycsXG4gICAgICAgICc3Zjk3MzU1YjhkYjgxYzA5YWJmYjdmM2M1YjI1MTU4ODhiNjc5YTNlNTBkZDZiZDZjZWY3YzczMTExZjRjYzBjJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzRhNTNiOWM5YTI4NTg3MmQzOWU1NmU2OTEzY2FiMTVkNTliMWZhNTEyNTA4YzAyMmYzODJkZTgzMTk0OTdjJyxcbiAgICAgICAgJ2NjYzlkYzM3YWJmYzljMTY1N2I0MTU1ZjJjNDdmOWU2NjQ2YjNhMWQ4Y2I5ODU0MzgzZGExM2FjMDc5YWZhNzMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzk1OTM5Njk4MTk0Mzc4NWMzZDNlNTdlZGY1MDE4Y2RiZTAzOWU3MzBlNDkxOGIzZDg4NGZkZmYwOTQ3NWI3YmEnLFxuICAgICAgICAnMmU3ZTU1Mjg4OGMzMzFkZDhiYTAzODZhNGI5Y2Q2ODQ5YzY1M2Y2NGM4NzA5Mzg1ZTliOGFiZjg3NTI0ZjJmZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDJhNjNhNTBhZTQwMWU1NmQ2NDVhMTE1M2IxMDlhOGZjY2EwYTQzZDU2MWZiYTJkYmI1MTM0MGM5ZDgyYjE1MScsXG4gICAgICAgICdlODJkODZmYjY0NDNmY2I3NTY1YWVlNThiMjk0ODIyMGE3MGY3NTBhZjQ4NGNhNTJkNDE0MjE3NGRjZjg5NDA1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2NDU4N2UyMzM1NDcxZWI4OTBlZTc4OTZkN2NmZGM4NjZiYWNiZGJkMzgzOTMxN2IzNDM2ZjliNDU2MTdlMDczJyxcbiAgICAgICAgJ2Q5OWZjZGQ1YmY2OTAyZTJhZTk2ZGQ2NDQ3YzI5OWExODViOTBhMzkxMzNhZWFiMzU4Mjk5ZTVlOWZhZjY1ODknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg0ODFiZGUwZTRlNGQ4ODViM2E1NDZkM2U1NDlkZTA0MmYwYWE2Y2VhMjUwZTdmZDM1OGQ2Yzg2ZGQ0NWU0NTgnLFxuICAgICAgICAnMzhlZTdiOGNiYTU0MDRkZDg0YTI1YmYzOWNlY2IyY2E5MDBhNzljNDJiMjYyZTU1NmQ2NGIxYjU5Nzc5MDU3ZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTM0NjRhNTdhNzgxMDJhYTYyYjY5NzlhZTgxN2Y0NjM3ZmZjZmVkM2M0YjFjZTMwYmNkNjMwM2Y2Y2FmNjY2YicsXG4gICAgICAgICc2OWJlMTU5MDA0NjE0NTgwZWY3ZTQzMzQ1M2NjYjBjYTQ4ZjMwMGE4MWQwOTQyZTEzZjQ5NWE5MDdmNmVjYzI3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiYzRhOWRmNWI3MTNmZTJlOWFlZjQzMGJjYzFkYzk3YTBjZDljY2VkZTJmMjg1ODhjYWRhM2EwZDJkODNmMzY2JyxcbiAgICAgICAgJ2QzYTgxY2E2ZTc4NWMwNjM4MzkzN2FkZjRiNzk4Y2FhNmU4YTlmYmZhNTQ3YjE2ZDc1OGQ2NjY1ODFmMzNjMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGMyOGE5N2JmODI5OGJjMGQyM2Q4Yzc0OTQ1MmEzMmU2OTRiNjVlMzBhOTQ3MmEzOTU0YWIzMGZlNTMyNGNhYScsXG4gICAgICAgICc0MGEzMDQ2M2EzMzA1MTkzMzc4ZmVkZjMxZjdjYzBlYjdhZTc4NGYwNDUxY2I5NDU5ZTcxZGM3M2NiZWY5NDgyJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZWE5NjY2MTM5NTI3YThjMWRkOTRjZTRmMDcxZmQyM2M4YjM1MGM1YTRiYjMzNzQ4YzRiYTExMWZhY2NhZTAnLFxuICAgICAgICAnNjIwZWZhYmJjOGVlMjc4MmUyNGU3YzBjZmI5NWM1ZDczNWI3ODNiZTljZjBmOGU5NTVhZjM0YTMwZTYyYjk0NScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGQzNjI1ZmFlZjViYTA2MDc0NjY5NzE2YmJkMzc4OGQ4OWJkZGU4MTU5NTk5NjgwOTJmNzZjYzRlYjlhOTc4NycsXG4gICAgICAgICc3YTE4OGZhMzUyMGUzMGQ0NjFkYTI1MDEwNDU3MzFjYTk0MTQ2MTk4Mjg4MzM5NTkzN2Y2OGQwMGM2NDRhNTczJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmNzEwZDc5ZDllYjk2MjI5N2U0ZjYyMzJiNDBlOGY3ZmViMmJjNjM4MTQ2MTRkNjkyYzEyZGU3NTI0MDgyMjFlJyxcbiAgICAgICAgJ2VhOThlNjcyMzJkM2IzMjk1ZDNiNTM1NTMyMTE1Y2NhYzg2MTJjNzIxODUxNjE3NTI2YWU0N2E5Yzc3YmZjODInLFxuICAgICAgXSxcbiAgICBdLFxuICB9LFxuICBuYWY6IHtcbiAgICB3bmQ6IDcsXG4gICAgcG9pbnRzOiBbXG4gICAgICBbXG4gICAgICAgICdmOTMwOGEwMTkyNThjMzEwNDkzNDRmODVmODlkNTIyOWI1MzFjODQ1ODM2Zjk5YjA4NjAxZjExM2JjZTAzNmY5JyxcbiAgICAgICAgJzM4OGY3YjBmNjMyZGU4MTQwZmUzMzdlNjJhMzdmMzU2NjUwMGE5OTkzNGMyMjMxYjZjYjlmZDc1ODRiOGU2NzInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzJmOGJkZTRkMWEwNzIwOTM1NWI0YTcyNTBhNWM1MTI4ZTg4Yjg0YmRkYzYxOWFiN2NiYThkNTY5YjI0MGVmZTQnLFxuICAgICAgICAnZDhhYzIyMjYzNmU1ZTNkNmQ0ZGJhOWRkYTZjOWM0MjZmNzg4MjcxYmFiMGQ2ODQwZGNhODdkM2FhNmFjNjJkNicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNWNiZGYwNjQ2ZTVkYjRlYWEzOThmMzY1ZjJlYTdhMGUzZDQxOWI3ZTAzMzBlMzljZTkyYmRkZWRjYWM0ZjliYycsXG4gICAgICAgICc2YWViY2E0MGJhMjU1OTYwYTMxNzhkNmQ4NjFhNTRkYmE4MTNkMGI4MTNmZGU3YjVhNTA4MjYyODA4NzI2NGRhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhY2Q0ODRlMmYwYzdmNjUzMDlhZDE3OGE5ZjU1OWFiZGUwOTc5Njk3NGM1N2U3MTRjMzVmMTEwZGZjMjdjY2JlJyxcbiAgICAgICAgJ2NjMzM4OTIxYjBhN2Q5ZmQ2NDM4MDk3MTc2M2I2MWU5YWRkODg4YTQzNzVmOGUwZjA1Y2MyNjJhYzY0ZjljMzcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NGFlN2Y4NThhOTQxMWU1ZWY0MjQ2YjcwYzY1YWFjNTY0OTk4MGJlNWMxNzg5MWJiZWMxNzg5NWRhMDA4Y2InLFxuICAgICAgICAnZDk4NGEwMzJlYjZiNWUxOTAyNDNkZDU2ZDdiN2IzNjUzNzJkYjFlMmRmZjlkNmE4MzAxZDc0YzljOTUzYzYxYicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjI4NzczYzJkOTc1Mjg4YmM3ZDFkMjA1YzM3NDg2NTFiMDc1ZmJjNjYxMGU1OGNkZGVlZGRmOGYxOTQwNWFhOCcsXG4gICAgICAgICdhYjA5MDJlOGQ4ODBhODk3NTgyMTJlYjY1Y2RhZjQ3M2ExYTA2ZGE1MjFmYTkxZjI5YjVjYjUyZGIwM2VkODEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q3OTI0ZDRmN2Q0M2VhOTY1YTQ2NWFlMzA5NWZmNDExMzFlNTk0NmYzYzg1Zjc5ZTQ0YWRiY2Y4ZTI3ZTA4MGUnLFxuICAgICAgICAnNTgxZTI4NzJhODZjNzJhNjgzODQyZWMyMjhjYzZkZWZlYTQwYWYyYmQ4OTZkM2E1YzUwNGRjOWZmNmEyNmI1OCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGVmZGVhNGNkYjY3Nzc1MGE0MjBmZWU4MDdlYWNmMjFlYjk4OThhZTc5Yjk3Njg3NjZlNGZhYTA0YTJkNGEzNCcsXG4gICAgICAgICc0MjExYWIwNjk0NjM1MTY4ZTk5N2IwZWFkMmE5M2RhZWNlZDFmNGEwNGE5NWMwZjZjZmIxOTlmNjllNTZlYjc3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyYjRlYTBhNzk3YTQ0M2QyOTNlZjVjZmY0NDRmNDk3OWYwNmFjZmViZDdlODZkMjc3NDc1NjU2MTM4Mzg1YjZjJyxcbiAgICAgICAgJzg1ZTg5YmMwMzc5NDVkOTNiMzQzMDgzYjVhMWM4NjEzMWEwMWY2MGM1MDI2OTc2M2I1NzBjODU0ZTVjMDliN2EnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MmJiZjRhNGNkZDEyNTY0ZjkzZmEzMzJjZTMzMzMwMWQ5YWQ0MDI3MWY4MTA3MTgxMzQwYWVmMjViZTU5ZDUnLFxuICAgICAgICAnMzIxZWI0MDc1MzQ4ZjUzNGQ1OWMxODI1OWRkYTNlMWY0YTFiM2IyZTcxYjEwMzljNjdiZDNkOGJjZjgxOTk4YycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmZhMjEwNGQ2YjM4ZDExYjAyMzAwMTA1NTk4NzkxMjRlNDJhYjhkZmVmZjVmZjI5ZGM5Y2RhZGQ0ZWNhY2MzZicsXG4gICAgICAgICcyZGUxMDY4Mjk1ZGQ4NjViNjQ1NjkzMzViZDVkZDgwMTgxZDcwZWNmYzg4MjY0ODQyM2JhNzZiNTMyYjdkNjcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzkyNDgyNzliMDliNGQ2OGRhYjIxYTliMDY2ZWRkYTgzMjYzYzNkODRlMDk1NzJlMjY5Y2EwY2Q3ZjU0NTM3MTQnLFxuICAgICAgICAnNzMwMTZmN2JmMjM0YWFkZTVkMWFhNzFiZGVhMmIxZmYzZmMwZGUyYTg4NzkxMmZmZTU0YTMyY2U5N2NiMzQwMicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGFlZDRmMmJlM2E4YmYyNzhlNzAxMzJmYjBiZWI3NTIyZjU3MGUxNDRiZjYxNWMwN2U5OTZkNDQzZGVlODcyOScsXG4gICAgICAgICdhNjlkY2U0YTdkNmM5OGU4ZDRhMWFjYTg3ZWY4ZDcwMDNmODNjMjMwZjNhZmE3MjZhYjQwZTUyMjkwYmUxYzU1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNDRkMTJjNzA2NWQ4MTJlOGFjZjI4ZDdjYmIxOWY5MDExZWNkOWU5ZmRmMjgxYjBlNmEzYjVlODdkMjJlN2RiJyxcbiAgICAgICAgJzIxMTlhNDYwY2UzMjZjZGM3NmM0NTkyNmM5ODJmZGFjMGUxMDZlODYxZWRmNjFjNWEwMzkwNjNmMGUwZTY0ODInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzZhMjQ1YmY2ZGM2OTg1MDRjODlhMjBjZmRlZDYwODUzMTUyYjY5NTMzNmMyODA2M2I2MWM2NWNiZDI2OWU2YjQnLFxuICAgICAgICAnZTAyMmNmNDJjMmJkNGE3MDhiM2Y1MTI2ZjE2YTI0YWQ4YjMzYmE0OGQwNDIzYjZlZmQ1ZTYzNDgxMDBkOGE4MicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTY5N2ZmYTZmZDlkZTYyN2MwNzdlM2QyZmU1NDEwODRjZTEzMzAwYjBiZWMxMTQ2Zjk1YWU1N2YwZDBiZDZhNScsXG4gICAgICAgICdiOWMzOThmMTg2ODA2ZjVkMjc1NjE1MDZlNDU1NzQzM2EyY2YxNTAwOWU0OThhZTdhZGVlOWQ2M2QwMWIyMzk2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MDViZGIwMTk5ODE3MThiOTg2ZDBmMDdlODM0Y2IwZDlkZWI4MzYwZmZiN2Y2MWRmOTgyMzQ1ZWYyN2E3NDc5JyxcbiAgICAgICAgJzI5NzJkMmRlNGY4ZDIwNjgxYTc4ZDkzZWM5NmZlMjNjMjZiZmFlODRmYjE0ZGI0M2IwMWUxZTkwNTZiOGM0OScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjJkMTRkYWI0MTUwYmY0OTc0MDJmZGM0NWEyMTVlMTBkY2IwMWMzNTQ5NTliMTBjZmUzMWM3ZTlkODdmZjMzZCcsXG4gICAgICAgICc4MGZjMDZiZDhjYzViMDEwOTgwODhhMTk1MGVlZDBkYjAxYWExMzI5NjdhYjQ3MjIzNWY1NjQyNDgzYjI1ZWFmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4MGM2MGFkMDA0MGYyN2RhZGU1YjRiMDZjNDA4ZTU2YjJjNTBlOWY1NmI5YjhiNDI1ZTU1NWMyZjg2MzA4YjZmJyxcbiAgICAgICAgJzFjMzgzMDNmMWNjNWMzMGYyNmU2NmJhZDdmZTcyZjcwYTY1ZWVkNGNiZTcwMjRlYjFhYTAxZjU2NDMwYmQ1N2EnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzdhOTM3NWFkNjE2N2FkNTRhYTc0YzYzNDhjYzU0ZDM0NGNjNWRjOTQ4N2Q4NDcwNDlkNWVhYmIwZmEwM2M4ZmInLFxuICAgICAgICAnZDBlM2ZhOWVjYTg3MjY5MDk1NTllMGQ3OTI2OTA0NmJkYzU5ZWExMGM3MGNlMmIwMmQ0OTllYzIyNGRjN2Y3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNTI4ZWNkOWI2OTZiNTRjOTA3YTllZDA0NTQ0N2E3OWJiNDA4ZWMzOWI2OGRmNTA0YmI1MWY0NTliYzNmZmM5JyxcbiAgICAgICAgJ2VlY2Y0MTI1MzEzNmU1Zjk5OTY2ZjIxODgxZmQ2NTZlYmM0MzQ1NDA1YzUyMGRiYzA2MzQ2NWI1MjE0MDk5MzMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ5MzcwYTRiNWY0MzQxMmVhMjVmNTE0ZThlY2RhZDA1MjY2MTE1ZTRhN2VjYjEzODcyMzE4MDhmOGI0NTk2MycsXG4gICAgICAgICc3NThmM2Y0MWFmZDZlZDQyOGIzMDgxYjA1MTJmZDYyYTU0YzNmM2FmYmI1YjY3NjRiNjUzMDUyYTEyOTQ5YzlhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3N2YyMzA5MzZlZTg4Y2JiZDczZGY5MzBkNjQ3MDJlZjg4MWQ4MTFlMGUxNDk4ZTJmMWMxM2ViMWZjMzQ1ZDc0JyxcbiAgICAgICAgJzk1OGVmNDJhNzg4NmI2NDAwYTA4MjY2ZTliYTFiMzc4OTZjOTUzMzBkOTcwNzdjYmJlOGViM2M3NjcxYzYwZDYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YyZGFjOTkxY2M0Y2U0YjllYTQ0ODg3ZTVjN2MwYmNlNThjODAwNzRhYjlkNGRiYWViMjg1MzFiNzczOWY1MzAnLFxuICAgICAgICAnZTBkZWRjOWIzYjJmOGRhZDRkYTFmMzJkZWMyNTMxZGY5ZWI1ZmJlYjA1OThlNGZkMWExMTdkYmE3MDNhM2MzNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDYzYjNkOWY2NjI2MjFmYjFiNGJlOGZiYmUyNTIwMTI1YTIxNmNkZmM5ZGFlM2RlYmNiYTQ4NTBjNjkwZDQ1YicsXG4gICAgICAgICc1ZWQ0MzBkNzhjMjk2YzM1NDMxMTQzMDZkZDg2MjJkN2M2MjJlMjdjOTcwYTFkZTMxY2IzNzdiMDFhZjczMDdlJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMTZmODA0MjQ0ZTQ2ZTJhMDkyMzJkNGFmZjNiNTk5NzZiOThmYWMxNDMyOGEyZDFhMzI0OTZiNDk5OThmMjQ3JyxcbiAgICAgICAgJ2NlZGFiZDliODIyMDNmN2UxM2QyMDZmY2RmNGUzM2Q5MmE2YzUzYzI2ZTVjY2UyNmQ2NTc5OTYyYzRlMzFkZjYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2NhZjc1NDI3MmRjODQ1NjNiMDM1MmI3YTE0MzExYWY1NWQyNDUzMTVhY2UyN2M2NTM2OWUxNWY3MTUxZDQxZDEnLFxuICAgICAgICAnY2I0NzQ2NjBlZjM1ZjVmMmE0MWI2NDNmYTVlNDYwNTc1ZjRmYTliNzk2MjIzMmE1YzMyZjkwODMxOGEwNDQ3NicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjYwMGNhNGIyODJjYjk4NmY4NWQwZjE3MDk5NzlkOGI0NGEwOWMwN2NiODZkN2MxMjQ0OTdiYzg2ZjA4MjEyMCcsXG4gICAgICAgICc0MTE5Yjg4NzUzYzE1YmQ2YTY5M2IwM2ZjZGRiYjQ1ZDVhYzZiZTc0YWI1ZjBlZjQ0YjBiZTk0NzVhN2U0YjQwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NjM1Y2E3MmQ3ZTg0MzJjMzM4ZWM1M2NkMTIyMjBiYzAxYzQ4Njg1ZTI0ZjdkYzhjNjAyYTc3NDY5OThlNDM1JyxcbiAgICAgICAgJzkxYjY0OTYwOTQ4OWQ2MTNkMWQ1ZTU5MGY3OGU2ZDc0ZWNmYzA2MWQ1NzA0OGJhZDllNzZmMzAyYzViOWM2MScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzU0ZTMyMzlmMzI1NTcwY2RiYmY0YTg3ZGVlZThhNjZiN2YyYjMzNDc5ZDQ2OGZiYzFhNTA3NDNiZjU2Y2MxOCcsXG4gICAgICAgICc2NzNmYjg2ZTViZGEzMGZiM2NkMGVkMzA0ZWE0OWEwMjNlZTMzZDAxOTdhNjk1ZDBjNWQ5ODA5M2M1MzY2ODMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzZTZiZDEwNzFhMWU5NmFmZjU3ODU5YzgyZDU3MGYwMzMwODAwNjYxZDFjOTUyZjlmZTI2OTQ2OTFkOWI5ZTgnLFxuICAgICAgICAnNTljOWUwYmJhMzk0ZTc2ZjQwYzBhYTU4Mzc5YTNjYjZhNWEyMjgzOTkzZTkwYzQxNjcwMDJhZjQ5MjBlMzdmNScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTg2YjQ4M2QwNTZhMDMzODI2YWU3M2Q4OGY3MzI5ODVjNGNjYjFmMzJiYTM1ZjRiNGNjNDdmZGNmMDRhYTZlYicsXG4gICAgICAgICczYjk1MmQzMmM2N2NmNzdlMmUxNzQ0NmUyMDQxODBhYjIxZmI4MDkwODk1MTM4YjRhNGE3OTdmODZlODA4ODhiJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZjlkNzBhNmI5ODc2Y2U1NDRjOTg1NjFmNGJlNGY3MjU0NDJlNmQyYjczN2Q5YzkxYTgzMjE3MjRjZTA5NjNmJyxcbiAgICAgICAgJzU1ZWIyZGFmZDg0ZDZjY2Q1Zjg2MmI3ODVkYzM5ZDRhYjE1NzIyMjcyMGVmOWRhMjE3YjhjNDVjZjJiYTI0MTcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVlZGQ1Y2MyM2M1MWU4N2E0OTdjYTgxNWQ1ZGNlMGY4YWI1MjU1NGY4NDllZDg5OTVkZTY0YzVmMzRjZTcxNDMnLFxuICAgICAgICAnZWZhZTljOGRiYzE0MTMwNjYxZThjZWMwMzBjODlhZDBjMTNjNjZjMGQxN2EyOTA1Y2RjNzA2YWI3Mzk5YTg2OCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjkwNzk4YzJiNjQ3NjgzMGRhMTJmZTAyMjg3ZTllNzc3YWEzZmJhMWMzNTViMTdhNzIyZDM2MmY4NDYxNGZiYScsXG4gICAgICAgICdlMzhkYTc2ZGNkNDQwNjIxOTg4ZDAwYmNmNzlhZjI1ZDViMjljMDk0ZGIyYTIzMTQ2ZDAwM2FmZDQxOTQzZTdhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhZjNjNDIzYTk1ZDlmNWIzMDU0NzU0ZWZhMTUwYWMzOWNkMjk1NTJmZTM2MDI1NzM2MmRmZGVjZWY0MDUzYjQ1JyxcbiAgICAgICAgJ2Y5OGEzZmQ4MzFlYjJiNzQ5YTkzYjBlNmYzNWNmYjQwYzhjZDVhYTY2N2ExNTU4MWJjMmZlZGVkNDk4ZmQ5YzYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2NmRiYjI0ZDEzNGU3NDVjY2NhYTI4Yzk5YmYyNzQ5MDZiYjY2YjI2ZGNmOThkZjhkMmZlZDUwZDg4NDI0OWEnLFxuICAgICAgICAnNzQ0YjExNTJlYWNiZTVlMzhkY2M4ODc5ODBkYTM4Yjg5NzU4NGE2NWZhMDZjZWRkMmM5MjRmOTdjYmFjNTk5NicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTlkYmY0NmY4Yzk0NzU5YmEyMTI3N2MzMzc4NGY0MTY0NWY3YjQ0ZjZjNTk2YTU4Y2U5MmU2NjYxOTFhYmUzZScsXG4gICAgICAgICdjNTM0YWQ0NDE3NWZiYzMwMGY0ZWE2Y2U2NDgzMDlhMDQyY2U3MzlhNzkxOTc5OGNkODVlMjE2YzRhMzA3ZjZlJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMTNhZGE5NTEwM2M0NTM3MzA1ZTY5MWU3NGU5YTRhOGRkNjQ3ZTcxMWE5NWU3M2NiNjJkYzYwMThjZmQ4N2I4JyxcbiAgICAgICAgJ2UxMzgxN2I0NGVlMTRkZTY2M2JmNGJjODA4MzQxZjMyNjk0OWUyMWE2YTc1YzI1NzA3Nzg0MTliZGFmNTczM2QnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NTRiNGZhMGU4YWNlZDA2ZDQxNjdhMmM1OWNjYTRjZGExODY5YzA2ZWJhZGZiNjQ4ODU1MDAxNWE4ODUyMmMnLFxuICAgICAgICAnMzBlOTNlODY0ZTY2OWQ4MjIyNGI5NjdjMzAyMGI4ZmE4ZDFlNGUzNTBiNmNiY2M1MzdhNDhiNTc4NDExNjNhMicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTQ4ZGNhZGY1OTkwZTA0OGFhMzg3NGQ0NmFiZWY5ZDcwMTg1OGY5NWRlODA0MWQyYTY4MjhjOTllMjI2MjUxOScsXG4gICAgICAgICdlNDkxYTQyNTM3ZjZlNTk3ZDVkMjhhMzIyNGIxYmMyNWRmOTE1NGVmYmQyZWYxZDJjYmJhMmNhZTUzNDdkNTdlJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3OTYyNDE0NDUwYzc2YzE2ODljN2I0OGY4MjAyZWMzN2ZiMjI0Y2Y1YWMwYmZhMTU3MDMyOGE4YTNkN2M3N2FiJyxcbiAgICAgICAgJzEwMGI2MTBlYzRmZmI0NzYwZDVjMWZjMTMzZWY2ZjZiMTI1MDdhMDUxZjA0YWM1NzYwYWZhNWIyOWRiODM0MzcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM1MTQwODc4MzQ5NjRiNTRiMTViMTYwNjQ0ZDkxNTQ4NWExNjk3NzIyNWI4ODQ3YmIwZGQwODUxMzdlYzQ3Y2EnLFxuICAgICAgICAnZWYwYWZiYjIwNTYyMDU0NDhlMTY1MmM0OGU4MTI3ZmM2MDM5ZTc3YzE1YzIzNzhiN2U3ZDE1YTBkZTI5MzMxMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDNjYzMwYWQ2YjQ4M2U0YmM3OWNlMmM5ZGQ4YmM1NDk5M2U5NDdlYjhkZjc4N2I0NDI5NDNkM2Y3YjUyN2VhZicsXG4gICAgICAgICc4YjM3OGEyMmQ4MjcyNzhkODljNWU5YmU4Zjk1MDhhZTNjMmFkNDYyOTAzNTg2MzBhZmIzNGRiMDRlZWRlMGE0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNjI0ZDg0NzgwNzMyODYwY2UxYzc4ZmNiZmVmZTA4YjJiMjk4MjNkYjkxM2Y2NDkzOTc1YmEwZmY0ODQ3NjEwJyxcbiAgICAgICAgJzY4NjUxY2Y5YjZkYTkwM2UwOTE0NDQ4YzZjZDlkNGNhODk2ODc4ZjUyODJiZTRjOGNjMDZlMmE0MDQwNzg1NzUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzczM2NlODBkYTk1NWE4YTI2OTAyYzk1NjMzZTYyYTk4NTE5MjQ3NGI1YWYyMDdkYTZkZjdiNGZkNWZjNjFjZDQnLFxuICAgICAgICAnZjU0MzVhMmJkMmJhZGY3ZDQ4NWE0ZDhiOGRiOWZjY2UzZTFlZjhlMDIwMWU0NTc4YzU0NjczYmMxZGM1ZWExZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTVkOTQ0MTI1NDk0NTA2NGNmMWExYzMzYmJkM2I0OWY4OTY2YzUwOTIxNzFlNjk5ZWYyNThkZmFiODFjMDQ1YycsXG4gICAgICAgICdkNTZlYjMwYjY5NDYzZTcyMzRmNTEzN2I3M2I4NDE3NzQzNDgwMGJhY2ViZmM2ODVmYzM3YmJlOWVmZTQwNzBkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhMWQwZmNmMmVjOWRlNjc1YjYxMjEzNmU1Y2U3MGQyNzFjMjE0MTdjOWQyYjhhYWFhYzEzODU5OWQwNzE3OTQwJyxcbiAgICAgICAgJ2VkZDc3ZjUwYmNiNWEzY2FiMmU5MDczNzMwOTY2N2YyNjQxNDYyYTU0MDcwZjNkNTE5MjEyZDM5YzE5N2E2MjknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UyMmZiZTE1YzBhZjhjY2M1NzgwYzA3MzVmODRkYmU5YTc5MGJhZGVlODI0NWMwNmM3Y2EzNzMzMWNiMzY5ODAnLFxuICAgICAgICAnYTg1NWJhYmFkNWNkNjBjODhiNDMwYTY5ZjUzYTFhN2EzODI4OTE1NDk2NDc5OWJlNDNkMDZkNzdkMzFkYTA2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMTEwOTFkZDk4NjBlOGUyMGVlMTM0NzNjMTE1NWY1ZjY5NjM1ZTM5NDcwNGVhYTc0MDA5NDUyMjQ2Y2ZhOWIzJyxcbiAgICAgICAgJzY2ZGI2NTZmODdkMWYwNGZmZmQxZjA0Nzg4YzA2ODMwODcxZWM1YTY0ZmVlZTY4NWJkODBmMGIxMjg2ZDgzNzQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM0YzFmZDA0ZDMwMWJlODliMzFjMDQ0MmQzZTZhYzI0ODgzOTI4YjQ1YTkzNDA3ODE4NjdkNDIzMmVjMmRiZGYnLFxuICAgICAgICAnOTQxNDY4NWU5N2IxYjU5NTRiZDQ2ZjczMDE3NDEzNmQ1N2YxY2VlYjQ4NzQ0M2RjNTMyMTg1N2JhNzNhYmVlJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMjE5ZWE1ZDZiNTQ3MDFjMWMxNGRlNWI1NTdlYjQyYThkMTNmM2FiYmNkMDhhZmZjYzJhNWU2YjA0OWI4ZDYzJyxcbiAgICAgICAgJzRjYjk1OTU3ZTgzZDQwYjBmNzNhZjQ1NDRjY2NmNmIxZjRiMDhkM2MwN2IyN2ZiOGQ4YzI5NjJhNDAwNzY2ZDEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q3Yjg3NDBmNzRhOGZiYWFiMWY2ODNkYjhmNDVkZTI2NTQzYTU0OTBiY2E2MjcwODcyMzY5MTI0NjlhMGI0NDgnLFxuICAgICAgICAnZmE3Nzk2ODEyOGQ5YzkyZWUxMDEwZjMzN2FkNDcxN2VmZjE1ZGI1ZWQzYzA0OWIzNDExZTAzMTVlYWE0NTkzYicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzJkMzFjMjIyZjhmNmYwZWY4NmY3Yzk4ZDNhMzMzNWVhZDViY2QzMmFiZGQ5NDI4OWZlNGQzMDkxYWE4MjRiZicsXG4gICAgICAgICc1ZjMwMzJmNTg5MjE1NmUzOWNjZDNkNzkxNWI5ZTFkYTJlNmRhYzllNmYyNmU5NjExMThkMTRiODQ2MmUxNjYxJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NDYxZjM3MTkxNGFiMzI2NzEwNDVhMTU1ZDk4MzFlYTg3OTNkNzdjZDU5NTkyYzQzNDBmODZjYmMxODM0N2I1JyxcbiAgICAgICAgJzhlYzBiYTIzOGI5NmJlYzBjYmRkZGNhZTBhYTQ0MjU0MmVlZTFmZjUwYzk4NmVhNmIzOTg0N2IzY2MwOTJmZjYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlMDc5YWRiMWRmMTg2MDA3NDM1NmEyNWFhMzgyMDZhNmQ3MTZiMmMzZTY3NDUzZDI4NzY5OGJhZDdiMmIyZDYnLFxuICAgICAgICAnOGRjMjQxMmFhZmUzYmU1YzRjNWYzN2UwZWNjNWY5ZjZhNDQ2OTg5YWYwNGM0ZTI1ZWJhYWM0NzllYzFjOGMxZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTZlYzkzZTQ0N2VjODNmMDQ2N2IxODMwMmVlNjIwZjdlNjVkZTMzMTg3NGM5ZGM3MmJmZDg2MTZiYTlkYTZiNScsXG4gICAgICAgICc1ZTQ2MzExNTBlNjJmYjQwZDBlOGMyYTdjYTU4MDRhMzlkNTgxODZhNTBlNDk3MTM5NjI2Nzc4ZTI1YjA2NzRkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYWE1Zjk4MGMyNDVmNmYwMzg5NzgyOTBhZmE3MGI2YmQ4ODU1ODk3Zjk4YjZhYTQ4NWI5NjA2NWQ1MzdiZDk5JyxcbiAgICAgICAgJ2Y2NWY1ZDNlMjkyYzJlMDgxOWE1MjgzOTFjOTk0NjI0ZDc4NDg2OWQ3ZTZlYTY3ZmIxODA0MTAyNGVkYzA3ZGMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc4Yzk0MDc1NDRhYzEzMjY5MmVlMTkxMGEwMjQzOTk1OGFlMDQ4NzcxNTEzNDJlYTk2YzRiNmIzNWE0OWY1MScsXG4gICAgICAgICdmM2UwMzE5MTY5ZWI5Yjg1ZDU0MDQ3OTU1MzlhNWU2OGZhMWZiZDU4M2MwNjRkMjQ2MmI2NzVmMTk0YTNkZGI0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0OTRmNGJlMjE5YTFhNzcwMTZkY2Q4Mzg0MzFhZWEwMDAxY2RjOGFlN2E2ZmM2ODg3MjY1NzhkOTcwMjg1N2E1JyxcbiAgICAgICAgJzQyMjQyYTk2OTI4M2E1ZjMzOWJhN2YwNzVlMzZiYTJhZjkyNWNlMzBkNzY3ZWQ2ZTU1ZjRiMDMxODgwZDU2MmMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E1OThhODAzMGRhNmQ4NmM2YmM3ZjJmNTE0NGVhNTQ5ZDI4MjExZWE1OGZhYTcwZWJmNGMxZTY2NWMxZmU5YjUnLFxuICAgICAgICAnMjA0YjVkNmY4NDgyMmMzMDdlNGI0YTcxNDA3MzdhZWMyM2ZjNjNiNjViMzVmODZhMTAwMjZkYmQyZDg2NGU2YicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzQxOTE2MzY1YWJiMmI1ZDA5MTkyZjVmMmRiZWFmZWMyMDhmMDIwZjEyNTcwYTE4NGRiYWRjM2U1ODU5NTk5NycsXG4gICAgICAgICc0ZjE0MzUxZDAwODdlZmE0OWQyNDViMzI4OTg0OTg5ZDVjYWY5NDUwZjM0YmZjMGVkMTZlOTZiNThmYTk5MTMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg0MWQ2MDYzYTU4NmZhNDc1YTcyNDYwNGRhMDNiYzViOTJhMmUwZDJlMGEzNmFjZmU0YzczYTU1MTQ3NDI4ODEnLFxuICAgICAgICAnNzM4NjdmNTljMDY1OWU4MTkwNGY5YTFjNzU0MzY5OGU2MjU2MmQ2NzQ0YzE2OWNlN2EzNmRlMDFhOGQ2MTU0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1ZTk1YmIzOTlhNjk3MWQzNzYwMjY5NDdmODliZGUyZjI4MmIzMzgxMDkyOGJlNGRlZDExMmFjNGQ3MGUyMGQ1JyxcbiAgICAgICAgJzM5ZjIzZjM2NjgwOTA4NWJlZWJmYzcxMTgxMzEzNzc1YTk5YzlhZWQ3ZDhiYTM4YjE2MTM4NGM3NDYwMTI4NjUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM2ZTQ2NDFhNTM5NDhmZDQ3NmMzOWY4YTk5ZmQ5NzRlNWVjMDc1NjRiNTMxNWQ4YmY5OTQ3MWJjYTBlZjJmNjYnLFxuICAgICAgICAnZDI0MjRiMWIxYWJlNGViODE2NDIyN2IwODVjOWFhOTQ1NmVhMTM0OTNmZDU2M2UwNmZkNTFjZjU2OTRjNzhmYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzM2NTgxZWE3YmZiYmIyOTBjMTkxYTJmNTA3YTQxY2Y1NjQzODQyMTcwZTkxNGZhZWFiMjdjMmM1NzlmNzI2JyxcbiAgICAgICAgJ2VhZDEyMTY4NTk1ZmUxYmU5OTI1MjEyOWI2ZTU2YjMzOTFmN2FiMTQxMGNkMWUwZWYzZGNkY2FiZDJmZGEyMjQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhhYjg5ODE2ZGFkZmQ2YjZhMWYyNjM0ZmNmMDBlYzg0MDM3ODEwMjVlZDY4OTBjNDg0OTc0MjcwNmJkNDNlZGUnLFxuICAgICAgICAnNmZkY2VmMDlmMmY2ZDBhMDQ0ZTY1NGFlZjYyNDEzNmY1MDNkNDU5YzNlODk4NDU4NThhNDdhOTEyOWNkZDI0ZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMWUzM2YxYTc0NmM5YzU3NzgxMzMzNDRkOTI5OWZjYWEyMGIwOTM4ZThhY2ZmMjU0NGJiNDAyODRiOGM1ZmI5NCcsXG4gICAgICAgICc2MDY2MDI1N2RkMTFiM2FhOWM4ZWQ2MThkMjRlZGZmMjMwNmQzMjBmMWQwMzAxMGUzM2E3ZDIwNTdmM2IzYjYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg1YjdjMWRjYjNjZWMxYjdlZTdmMzBkZWQ3OWRkMjBhMGVkMWY0Y2MxOGNiY2ZjZmE0MTAzNjFmZDhmMDhmMzEnLFxuICAgICAgICAnM2Q5OGE5Y2RkMDI2ZGQ0M2YzOTA0OGYyNWE4ODQ3ZjRmY2FmYWQxODk1ZDdhNjMzYzZmZWQzYzM1ZTk5OTUxMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMjlkZjlmYmQ4ZDllNDY1MDkyNzVmNGIxMjVkNmQ0NWQ3ZmJlOWEzYjg3OGE3YWY4NzJhMjgwMDY2MWFjNWY1MScsXG4gICAgICAgICdiNGM0ZmU5OWM3NzVhNjA2ZTJkODg2MjE3OTEzOWZmZGE2MWRjODYxYzAxOWU1NWNkMjg3NmViMmEyN2Q4NGInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2EwYjFjYWUwNmIwYTg0N2EzZmVhNmU2NzFhYWY4YWRmZGZlNThjYTJmNzY4MTA1YzgwODJiMmU0NDlmY2UyNTInLFxuICAgICAgICAnYWU0MzQxMDJlZGRlMDk1OGVjNGIxOWQ5MTdhNmEyOGU2YjcyZGExODM0YWZmMGU2NTBmMDQ5NTAzYTI5NmNmMicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGU4Y2VhZmI5YjNlOWExMzZkYzdmZjY3ZTg0MDI5NWI0OTlkZmIzYjIxMzNlNGJhMTEzZjJlNGMwZTEyMWU1JyxcbiAgICAgICAgJ2NmMjE3NDExOGM4YjZkN2E0YjQ4ZjZkNTM0Y2U1Yzc5NDIyYzA4NmE2MzQ2MDUwMmI4MjdjZTYyYTMyNjY4M2MnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QyNGE0NGUwNDdlMTliNmY1YWZiODFjN2NhMmY2OTA4MGE1MDc2Njg5YTAxMDkxOWY0MjcyNWMyYjc4OWEzM2InLFxuICAgICAgICAnNmZiOGQ1NTkxYjQ2NmY4ZmM2M2RiNTBmMWMwZjFjNjkwMTNmOTk2ODg3YjgyNDRkMmNkZWM0MTdhZmVhOGZhMycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWEwMTYwNmE3YTZjOWNkZDI0OWZkZmNmYWNiOTk1ODQwMDFlZGQyOGFiYmFiNzdiNTEwNGU5OGU4ZTNiMzVkNCcsXG4gICAgICAgICczMjJhZjQ5MDhjNzMxMmIwY2ZiZmUzNjlmN2E3YjNjZGI3ZDQ0OTRiYzI4MjM3MDBjZmQ2NTIxODhhM2VhOThkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhZjhhZGRiZjJiNjYxYzhhNmM2MzI4NjU1ZWI5NjY1MTI1MjAwN2Q4YzVlYTMxYmU0YWQxOTZkZThjZTIxMzFmJyxcbiAgICAgICAgJzY3NDllNjdjMDI5Yjg1ZjUyYTAzNGVhZmQwOTY4MzZiMjUyMDgxODY4MGUyNmFjOGYzZGZiY2RiNzE3NDk3MDAnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UzYWUxOTc0NTY2Y2EwNmNjNTE2ZDQ3ZTBmYjE2NWE2NzRhM2RhYmNmY2ExNWU3MjJmMGUzNDUwZjQ1ODg5JyxcbiAgICAgICAgJzJhZWFiZTdlNDUzMTUxMDExNjIxN2YwN2JmNGQwNzMwMGRlOTdlNDg3NGY4MWY1MzM0MjBhNzJlZWIwYmQ2YTQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzU5MWVlMzU1MzEzZDk5NzIxY2Y2OTkzZmZlZDFlM2UzMDE5OTNmZjNlZDI1ODgwMjA3NWVhOGNlZDM5N2UyNDYnLFxuICAgICAgICAnYjBlYTU1OGExMTNjMzBiZWE2MGZjNDc3NTQ2MGM3OTAxZmYwYjA1M2QyNWNhMmJkZWVlOThmMWE0YmU1ZDE5NicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTEzOTZkNTVmZGE1NGM0OWYxOWFhOTczMThkOGRhNjFmYTg1ODRlNDdiMDg0OTQ1MDc3Y2YwMzI1NWI1Mjk4NCcsXG4gICAgICAgICc5OThjNzRhOGNkNDVhYzAxMjg5ZDU4MzNhN2JlYjQ3NDRmZjUzNmIwMWIyNTdiZTRjNTc2N2JlYTkzZWE1N2E0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczYzVkMmExYmEzOWM1YTE3OTAwMDA3MzhjOWUwYzQwYjhkY2RmZDU0Njg3NTRiNjQwNTU0MDE1N2UwMTdhYTdhJyxcbiAgICAgICAgJ2IyMjg0Mjc5OTk1YTM0ZTJmOWQ0ZGU3Mzk2ZmMxOGI4MGY5YjhiOWZkZDI3MGY2NjYxZjc5Y2E0YzgxYmQyNTcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2NjODcwNGI4YTYwYTBkZWZhM2E5OWE3Mjk5ZjJlOWMzZmJjMzk1YWZiMDRhYzA3ODQyNWVmOGExNzkzY2MwMzAnLFxuICAgICAgICAnYmRkNDYwMzlmZWVkMTc4ODFkMWUwODYyZGIzNDdmOGNmMzk1Yjc0ZmM0YmNkYzRlOTQwYjc0ZTNhYzFmMWIxMycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzUzM2U0ZjdlYTg1NTVhYWNkOTc3N2FjNWNhZDI5Yjk3ZGQ0ZGVmY2NjNTNlZTdlYTIwNDExOWIyODg5YjE5NycsXG4gICAgICAgICc2ZjBhMjU2YmM1ZWZkZjQyOWEyZmI2MjQyZjFhNDNhMmQ5YjkyNWJiNGE0YjNhMjZiYjhlMGY0NWViNTk2MDk2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjMTRmOGYyY2NiMjdkNmYxMDlmNmQwOGQwM2NjOTZhNjliYThjMzRlZWMwN2JiY2Y1NjZkNDhlMzNkYTY1OTMnLFxuICAgICAgICAnYzM1OWQ2OTIzYmIzOThmN2ZkNDQ3M2UxNmZlMWMyODQ3NWI3NDBkZDA5ODA3NWU2YzBlODY0OTExM2RjM2EzOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTZjYmMzMDQ2YmM2YTQ1MGJhYzI0Nzg5ZmExNzExNWE0Yzk3MzllZDc1ZjhmMjFjZTQ0MWY3MmUwYjkwZTZlZicsXG4gICAgICAgICcyMWFlN2Y0NjgwZTg4OWJiMTMwNjE5ZTJjMGY5NWEzNjBjZWI1NzNjNzA2MDMxMzk4NjJhZmQ2MTdmYTliOWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM0N2Q2ZDlhMDJjNDg5MjdlYmZiODZjMTM1OWIxY2FmMTMwYTNjMDI2N2QxMWNlNjM0NGIzOWY5OWQ0M2NjMzgnLFxuICAgICAgICAnNjBlYTdmNjFhMzUzNTI0ZDFjOTg3ZjZlY2VjOTJmMDg2ZDU2NWFiNjg3ODcwY2IxMjY4OWZmMWUzMWM3NDQ0OCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGE2NTQ1ZDIxODFkYjhkOTgzZjdkY2IzNzVlZjU4NjZkNDdjNjdiMWJmMzFjOGNmODU1ZWY3NDM3YjcyNjU2YScsXG4gICAgICAgICc0OWI5NjcxNWFiNjg3OGE3OWU3OGYwN2NlNTY4MGM1ZDY2NzMwNTFiNDkzNWJkODk3ZmVhODI0Yjc3ZGMyMDhhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNDA3NDdjYzlkMDEyY2IxYTEzYjgxNDgzMDljNmRlN2VjMjVkNjk0NWQ2NTcxNDZiOWQ1OTk0YjhmZWIxMTExJyxcbiAgICAgICAgJzVjYTU2MDc1M2JlMmExMmZjNmRlNmNhZjJjYjQ4OTU2NWRiOTM2MTU2Yjk1MTRlMWJiNWU4MzAzN2UwZmEyZDQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRlNDJjOGVjODJjOTk3OThjY2YzYTYxMGJlODcwZTc4MzM4YzdmNzEzMzQ4YmQzNGM4MjAzZWY0MDM3ZjM1MDInLFxuICAgICAgICAnNzU3MWQ3NGVlNWUwZmI5MmE3YThiMzNhMDc3ODMzNDFhNTQ5MjE0NGNjNTRiY2M0MGE5NDQ3MzY5MzYwNjQzNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzc3NWFiNzA4OWJjNmFmODIzYWJhMmUxYWY3MGIyMzZkMjUxY2FkYjBjODY3NDMyODc1MjJhMWIzYjBkZWRlYScsXG4gICAgICAgICdiZTUyZDEwN2JjZmEwOWQ4YmNiOTczNmE4MjhjZmE3ZmFjOGRiMTdiZjdhNzZhMmM0MmFkOTYxNDA5MDE4Y2Y3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjZWUzMWNiZjdlMzRlYzM3OWQ5NGZiODE0ZDNkNzc1YWQ5NTQ1OTVkMTMxNGJhODg0Njk1OWUzZTgyZjc0ZTI2JyxcbiAgICAgICAgJzhmZDY0YTE0YzA2YjU4OWMyNmI5NDdhZTJiY2Y2YmZhMDE0OWVmMGJlMTRlZDRkODBmNDQ4YTAxYzQzYjFjNmQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2I0ZjllYWVhMDliNjkxNzYxOWY2ZWE2YTRlYjU0NjRlZmRkYjU4ZmQ0NWIxZWJlZmNkYzFhMDFkMDhiNDc5ODYnLFxuICAgICAgICAnMzllNWM5OTI1YjVhNTRiMDc0MzNhNGYxOGM2MTcyNmY4YmIxMzFjMDEyY2E1NDJlYjI0YThhYzA3MjAwNjgyYScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDQyNjNkZmMzZDJkZjkyM2EwMTc5YTQ4OTY2ZDMwY2U4NGUyNTE1YWZjM2RjY2MxYjc3OTA3NzkyZWJjYzYwZScsXG4gICAgICAgICc2MmRmYWYwN2EwZjc4ZmViMzBlMzBkNjI5NTg1M2NlMTg5ZTEyNzc2MGFkNmNmN2ZhZTE2NGUxMjJhMjA4ZDU0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ODQ1NzUyNDgyMGZhNjVhNGY4ZDM1ZWI2OTMwODU3YzAwMzJhY2MwYTRhMmRlNDIyMjMzZWVkYTg5NzYxMmM0JyxcbiAgICAgICAgJzI1YTc0OGFiMzY3OTc5ZDk4NzMzYzM4YTFmYTFjMmU3ZGM2Y2MwN2RiMmQ2MGE5YWU3YTc2YWFhNDliZDBmNzcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RmZWVlZjE4ODExMDFmMmNiMTE2NDRmM2EyYWZkZmMyMDQ1ZTE5OTE5MTUyOTIzZjM2N2ExNzY3YzExY2NlZGEnLFxuICAgICAgICAnZWNmYjcwNTZjZjFkZTA0MmY5NDIwYmFiMzk2NzkzYzBjMzkwYmRlNzRiNGJiZGZmMTZhODNhZTA5YTlhNzUxNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNmQ3ZWY2YjE3NTQzZjgzNzNjNTczZjQ0ZTFmMzg5ODM1ZDg5YmNiYzYwNjJjZWQzNmM4MmRmODNiOGZhZTg1OScsXG4gICAgICAgICdjZDQ1MGVjMzM1NDM4OTg2ZGZlZmExMGM1N2ZlYTliY2M1MjFhMDk1OWIyZDgwYmJmNzRiMTkwZGNhNzEyZDEwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNzU2MDVkNTkxMDJhNWEyNjg0NTAwZDNiOTkxZjJlM2YzYzg4YjkzMjI1NTQ3MDM1YWYyNWFmNjZlMDQ1NDFmJyxcbiAgICAgICAgJ2Y1YzU0NzU0YThmNzFlZTU0MGI5YjQ4NzI4NDczZTMxNGY3MjlhYzUzMDhiMDY5MzgzNjA5OTBlMmJmYWQxMjUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ViOTg2NjBmNGM0ZGZhYTA2YTJiZTQ1M2Q1MDIwYmM5OWEwYzJlNjBhYmUzODg0NTdkZDQzZmVmYjFlZDYyMGMnLFxuICAgICAgICAnNmNiOWE4ODc2ZDljYjg1MjA2MDlhZjNhZGQyNmNkMjBhMGE3Y2Q4YTk0MTExMzFjZTg1ZjQ0MTAwMDk5MjIzZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTNlODdiMDI3ZDg1MTRkMzU5MzlmMmU2ODkyYjE5OTIyMTU0NTk2OTQxODg4MzM2ZGMzNTYzZTNiOGRiYTk0MicsXG4gICAgICAgICdmZWY1YTNjNjgwNTlhNmRlYzVkNjI0MTE0YmYxZTkxYWFjMmI5ZGE1NjhkNmFiZWIyNTcwZDU1NjQ2YjhhZGYxJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlZTE2MzAyNmU5ZmQ2ZmUwMTdjMzhmMDZhNWJlNmZjMTI1NDI0YjM3MWNlMjcwOGU3YmY0NDkxNjkxZTU3NjRhJyxcbiAgICAgICAgJzFhY2IyNTBmMjU1ZGQ2MWM0M2Q5NGNjYzY3MGQwZjU4ZjQ5YWUzZmExNWI5NjYyM2U1NDMwZGEwYWQ2YzYyYjInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2IyNjhmNWVmOWFkNTFlNGQ3OGRlM2E3NTBjMmRjODliMWU2MjZkNDM1MDU4Njc5OTk5MzJlNWRiMzNhZjNkODAnLFxuICAgICAgICAnNWYzMTBkNGIzYzk5YjllYmIxOWY3N2Q0MWMxZGVlMDE4Y2YwZDM0ZmQ0MTkxNjE0MDAzZTk0NWExMjE2ZTQyMycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmYwN2YzMTE4YTlkZjAzNWU5ZmFkODVlYjZjN2JmZTQyYjAyZjAxY2E5OWNlZWEzYmY3ZmZkYmE5M2M0NzUwZCcsXG4gICAgICAgICc0MzgxMzZkNjAzZTg1OGEzYTVjNDQwYzM4ZWNjYmFkZGMxZDI5NDIxMTRlMmVkZGQ0NzQwZDA5OGNlZDFmMGQ4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4ZDhiOTg1NWM3YzA1MmEzNDE0NmZkMjBmZmI2NThiZWE0YjlmNjllMGQ4MjVlYmVjMTZlOGMzY2UyYjUyNmExJyxcbiAgICAgICAgJ2NkYjU1OWVlZGMyZDc5ZjkyNmJhZjQ0ZmI4NGVhNGQ0NGJjZjUwZmVlNTFkN2NlYjMwZTJlN2Y0NjMwMzY3NTgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUyZGIwYjUzODRkZmJmMDViZmE5ZDQ3MmQ3YWUyNmRmZTRiODUxY2VjYTkxYjFlYmE1NDI2MzE4MGRhMzJiNjMnLFxuICAgICAgICAnYzNiOTk3ZDA1MGVlNWQ0MjNlYmFmNjZhNmRiOWY1N2IzMTgwYzkwMjg3NTY3OWRlOTI0YjY5ZDg0YTdiMzc1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNjJmOTQ5MGQzZDUxZGE2Mzk1ZWZkMjRlODA5MTljYzdkMGYyOWMzZjNmYTQ4YzZmZmY1NDNiZWNiZDQzMzUyJyxcbiAgICAgICAgJzZkODlhZDdiYTQ4NzZiMGIyMmMyY2EyODBjNjgyODYyZjM0MmM4NTkxZjFkYWY1MTcwZTA3YmZkOWNjYWZhN2QnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzdmMzBlYTI0NzZiMzk5YjQ5NTc1MDljODhmNzdkMDE5MWFmYTJmZjVjYjdiMTRmZDZkOGU3ZDY1YWFhYjExOTMnLFxuICAgICAgICAnY2E1ZWY3ZDRiMjMxYzk0YzNiMTUzODlhNWY2MzExZTlkYWZmN2JiNjdiMTAzZTk4ODBlZjRiZmY2MzdhY2FlYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTA5OGZmMWUxZDlmMTRmYjQ2YTIxMGZhZGE2YzkwM2ZlZjBmYjdiNGExZGQxZDlhYzYwYTAzNjE4MDBiN2EwMCcsXG4gICAgICAgICc5NzMxMTQxZDgxZmM4ZjgwODRkMzdjNmU3NTQyMDA2YjNlZTFiNDBkNjBkZmU1MzYyYTViMTMyZmQxN2RkYzAnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyYjc4YzdkZTllZTUxMmE3Mjg5NWJlNmI5Y2JlZmE2ZTJmM2M0Y2NjZTQ0NWM5NmI5ZjJjODFlMjc3OGFkNTgnLFxuICAgICAgICAnZWUxODQ5ZjUxM2RmNzFlMzJlZmMzODk2ZWUyODI2MGM3M2JiODA1NDdhZTIyNzViYTQ5NzIzNzc5NGM4NzUzYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTJjYjc0ZmRkYzhlOWZiY2QwNzZlZWYyYTdjNzJiMGNlMzdkNTBmMDgyNjlkZmMwNzRiNTgxNTUwNTQ3YTRmNycsXG4gICAgICAgICdkM2FhMmVkNzFjOWRkMjI0N2E2MmRmMDYyNzM2ZWIwYmFkZGVhOWUzNjEyMmQyYmU4NjQxYWJjYjAwNWNjNGE0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NDM4NDQ3NTY2ZDRkN2JlZGFkYzI5OTQ5NmFiMzU3NDI2MDA5YTM1ZjIzNWNiMTQxYmUwZDk5Y2QxMGFlM2E4JyxcbiAgICAgICAgJ2M0ZTEwMjA5MTY5ODBhNGRhNWQwMWFjNWU2YWQzMzA3MzRlZjBkNzkwNjYzMWM0ZjIzOTA0MjZiMmVkZDc5MWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQxNjJkNDg4Yjg5NDAyMDM5YjU4NGM2ZmM2YzMwODg3MDU4N2Q5YzQ2ZjY2MGI4NzhhYjY1YzgyYzcxMWQ2N2UnLFxuICAgICAgICAnNjcxNjNlOTAzMjM2Mjg5Zjc3NmYyMmMyNWZiOGEzYWZjMTczMmYyYjg0YjRlOTVkYmRhNDdhZTVhMDg1MjY0OScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnM2ZhZDNmYTg0Y2FmMGYzNGYwZjg5YmZkMmRjZjU0ZmMxNzVkNzY3YWVjM2U1MDY4NGYzYmE0YTRiZjVmNjgzZCcsXG4gICAgICAgICdjZDFiYzdjYjZjYzQwN2JiMmYwY2E2NDdjNzE4YTczMGNmNzE4NzJlN2QwZDJhNTNmYTIwZWZjZGZlNjE4MjYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzY3NGYyNjAwYTMwMDdhMDA1NjhjMWE3Y2UwNWQwODE2YzFmYjg0YmYxMzcwNzk4ZjFjNjk1MzJmYWViMWE4NmInLFxuICAgICAgICAnMjk5ZDIxZjk0MTNmMzNiM2VkZjQzYjI1NzAwNDU4MGI3MGRiNTdkYTBiMTgyMjU5ZTA5ZWVjYzY5ZTBkMzhhNScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDMyZjRkYTU0YWRlNzRhYmI4MWI4MTVhZDFmYjNiMjYzZDgyZDZjNjkyNzE0YmNmZjg3ZDI5YmQ1ZWU5ZjA4ZicsXG4gICAgICAgICdmOTQyOWU3MzhiOGU1M2I5NjhlOTkwMTZjMDU5NzA3NzgyZTE0ZjQ1MzUzNTlkNTgyZmM0MTY5MTBiM2VlYTg3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMGU0ZTY3MDQzNTM4NTU1NmU1OTM2NTcxMzU4NDVkMzZmYmI2OTMxZjcyYjA4Y2IxZWQ5NTRmMWUzY2UzZmY2JyxcbiAgICAgICAgJzQ2MmY5YmNlNjE5ODk4NjM4NDk5MzUwMTEzYmJjOWIxMGE4NzhkMzVkYTcwNzQwZGM2OTVhNTU5ZWI4OGRiN2InLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2JlMjA2MjAwM2M1MWNjMzAwNDY4MjkwNDMzMGU0ZGVlN2YzZGNkMTBiMDFlNTgwYmYxOTcxYjA0ZDRjYWQyOTcnLFxuICAgICAgICAnNjIxODhiYzQ5ZDYxZTU0Mjg1NzNkNDhhNzRlMWM2NTViMWM2MTA5MDkwNTY4MmEwZDU1NThlZDcyZGNjYjliYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTMxNDQ0MjNhY2UzNDUxZWQyOWUwZmI5YWMyYWYyMTFjYjZlODRhNjAxZGY1OTkzYzQxOTg1OWZmZjVkZjA0YScsXG4gICAgICAgICc3YzEwZGZiMTY0YzM0MjVmNWM3MWEzZjlkNzk5MjAzOGYxMDY1MjI0ZjcyYmI5ZDFkOTAyYTZkMTMwMzdiNDdjJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiMDE1ZjgwNDRmNWZjYmRjZjIxY2EyNmQ2YzM0ZmI4MTk3ODI5MjA1YzdiN2QyYTdjYjY2NDE4YzE1N2IxMTJjJyxcbiAgICAgICAgJ2FiOGMxZTA4NmQwNGU4MTM3NDRhNjU1YjJkZjhkNWY4M2IzY2RjNmZhYTMwODhjMWQzYWVhMTQ1NGUzYTFkNWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q1ZTllMWRhNjQ5ZDk3ZDg5ZTQ4NjgxMTdhNDY1YTNhNGY4YTE4ZGU1N2ExNDBkMzZiM2YyYWYzNDFhMjFiNTInLFxuICAgICAgICAnNGNiMDQ0MzdmMzkxZWQ3MzExMWExM2NjMWQ0ZGQwZGIxNjkzNDY1YzIyNDA0ODBkODk1NWU4NTkyZjI3NDQ3YScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDNhZTQxMDQ3ZGQ3Y2EwNjVkYmY4ZWQ3N2I5OTI0Mzk5ODMwMDVjZDcyZTE2ZDZmOTk2YTUzMTZkMzY5NjZiYicsXG4gICAgICAgICdiZDFhZWIyMWFkMjJlYmIyMmExMGYwMzAzNDE3YzZkOTY0ZjhjZGQ3ZGYwYWNhNjE0YjEwZGMxNGQxMjVhYzQ2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0NjNlMjc2M2Q4ODVmOTU4ZmM2NmNkZDIyODAwZjBhNDg3MTk3ZDBhODJlMzc3YjQ5ZjgwYWY4N2M4OTdiMDY1JyxcbiAgICAgICAgJ2JmZWZhY2RiMGU1ZDBmZDdkZjNhMzExYTk0ZGUwNjJiMjZiODBjNjFmYmM5NzUwOGI3OTk5MjY3MWVmN2NhN2YnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc5ODVmZGZkMTI3YzA1NjdjNmY1M2VjMWJiNjNlYzMxNThlNTk3YzQwYmZlNzQ3YzgzY2RkZmM5MTA2NDE5MTcnLFxuICAgICAgICAnNjAzYzEyZGFmM2Q5ODYyZWYyYjI1ZmUxZGUyODlhZWQyNGVkMjkxZTBlYzY3MDg3MDNhNWJkNTY3ZjMyZWQwMycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzRhMWFkNmI1Zjc2ZTM5ZGIyZGQyNDk0MTBlYWM3Zjk5ZTc0YzU5Y2I4M2QyZDBlZDVmZjE1NDNkYTc3MDNlOScsXG4gICAgICAgICdjYzYxNTdlZjE4YzljNjNjZDYxOTNkODM2MzFiYmVhMDA5M2UwOTY4OTQyZThjMzNkNTczN2ZkNzkwZTBkYjA4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMDY4MmE1MDcwMzM3NWY2MDJkNDE2NjY0YmExOWI3ZmM5YmFiNDJjNzI3NDc0NjNhNzFkMDg5NmIyMmY2ZGEzJyxcbiAgICAgICAgJzU1M2UwNGY2YjAxOGI0ZmE2YzhmMzllN2YzMTFkMzE3NjI5MGQwZTBmMTljYTczZjE3NzE0ZDk5NzdhMjJmZjgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzllMjE1OGYwZDdjMGQ1ZjI2YzM3OTFlZmVmYTc5NTk3NjU0ZTdhMmIyNDY0ZjUyYjFlZTZjMTM0Nzc2OWVmNTcnLFxuICAgICAgICAnNzEyZmNkZDFiOTA1M2YwOTAwM2EzNDgxZmE3NzYyZTlmZmQ3YzhlZjM1YTM4NTA5ZTJmYmYyNjI5MDA4MzczJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzZlMjY5ODlhNDNjOWNmZWJhNDAyOWMyMDI1MzhjMjgxNzJlNTY2ZTNjNGZjZTczMjI4NTdmM2JlMzI3ZDY2JyxcbiAgICAgICAgJ2VkOGNjOWQwNGIyOWViODc3ZDI3MGI0ODc4ZGM0M2MxOWFlZmQzMWY0ZWVlMDllZTdiNDc4MzRjMWZhNGIxYzMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc1ZDQ2ZWZlYTM3NzFlNmU2OGFiYjg5YTEzYWQ3NDdlY2YxODkyMzkzZGZjNGYxYjcwMDQ3ODhjNTAzNzRkYTgnLFxuICAgICAgICAnOTg1MjM5MGE5OTUwNzY3OWZkMGI4NmZkMmIzOWE4NjhkN2VmYzIyMTUxMzQ2ZTFhM2NhNDcyNjU4NmE2YmVkOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODA5YTIwYzY3ZDY0OTAwZmZiNjk4YzRjODI1ZjZkNWYyMzEwZmIwNDUxYzg2OTM0NWI3MzE5ZjY0NTYwNTcyMScsXG4gICAgICAgICc5ZTk5NDk4MGQ5OTE3ZTIyYjc2YjA2MTkyN2ZhMDQxNDNkMDk2Y2NjNTQ5NjNlNmE1ZWJmYTVmM2Y4ZTI4NmMxJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxYjM4OTAzYTQzZjdmMTE0ZWQ0NTAwYjRlYWM3MDgzZmRlZmVjZTFjZjI5YzYzNTI4ZDU2MzQ0NmY5NzJjMTgwJyxcbiAgICAgICAgJzQwMzZlZGM5MzFhNjBhZTg4OTM1M2Y3N2ZkNTNkZTRhMjcwOGIyNmI2ZjVkYTcyYWQzMzk0MTE5ZGFmNDA4ZjknLFxuICAgICAgXSxcbiAgICBdLFxuICB9LFxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gZXhwb3J0cztcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgbWluQXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIG1pblV0aWxzID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWNyeXB0by11dGlscycpO1xuXG51dGlscy5hc3NlcnQgPSBtaW5Bc3NlcnQ7XG51dGlscy50b0FycmF5ID0gbWluVXRpbHMudG9BcnJheTtcbnV0aWxzLnplcm8yID0gbWluVXRpbHMuemVybzI7XG51dGlscy50b0hleCA9IG1pblV0aWxzLnRvSGV4O1xudXRpbHMuZW5jb2RlID0gbWluVXRpbHMuZW5jb2RlO1xuXG4vLyBSZXByZXNlbnQgbnVtIGluIGEgdy1OQUYgZm9ybVxuZnVuY3Rpb24gZ2V0TkFGKG51bSwgdywgYml0cykge1xuICB2YXIgbmFmID0gbmV3IEFycmF5KE1hdGgubWF4KG51bS5iaXRMZW5ndGgoKSwgYml0cykgKyAxKTtcbiAgbmFmLmZpbGwoMCk7XG5cbiAgdmFyIHdzID0gMSA8PCAodyArIDEpO1xuICB2YXIgayA9IG51bS5jbG9uZSgpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbmFmLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHo7XG4gICAgdmFyIG1vZCA9IGsuYW5kbG4od3MgLSAxKTtcbiAgICBpZiAoay5pc09kZCgpKSB7XG4gICAgICBpZiAobW9kID4gKHdzID4+IDEpIC0gMSlcbiAgICAgICAgeiA9ICh3cyA+PiAxKSAtIG1vZDtcbiAgICAgIGVsc2VcbiAgICAgICAgeiA9IG1vZDtcbiAgICAgIGsuaXN1Ym4oeik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHogPSAwO1xuICAgIH1cblxuICAgIG5hZltpXSA9IHo7XG4gICAgay5pdXNocm4oMSk7XG4gIH1cblxuICByZXR1cm4gbmFmO1xufVxudXRpbHMuZ2V0TkFGID0gZ2V0TkFGO1xuXG4vLyBSZXByZXNlbnQgazEsIGsyIGluIGEgSm9pbnQgU3BhcnNlIEZvcm1cbmZ1bmN0aW9uIGdldEpTRihrMSwgazIpIHtcbiAgdmFyIGpzZiA9IFtcbiAgICBbXSxcbiAgICBbXSxcbiAgXTtcblxuICBrMSA9IGsxLmNsb25lKCk7XG4gIGsyID0gazIuY2xvbmUoKTtcbiAgdmFyIGQxID0gMDtcbiAgdmFyIGQyID0gMDtcbiAgdmFyIG04O1xuICB3aGlsZSAoazEuY21wbigtZDEpID4gMCB8fCBrMi5jbXBuKC1kMikgPiAwKSB7XG4gICAgLy8gRmlyc3QgcGhhc2VcbiAgICB2YXIgbTE0ID0gKGsxLmFuZGxuKDMpICsgZDEpICYgMztcbiAgICB2YXIgbTI0ID0gKGsyLmFuZGxuKDMpICsgZDIpICYgMztcbiAgICBpZiAobTE0ID09PSAzKVxuICAgICAgbTE0ID0gLTE7XG4gICAgaWYgKG0yNCA9PT0gMylcbiAgICAgIG0yNCA9IC0xO1xuICAgIHZhciB1MTtcbiAgICBpZiAoKG0xNCAmIDEpID09PSAwKSB7XG4gICAgICB1MSA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG04ID0gKGsxLmFuZGxuKDcpICsgZDEpICYgNztcbiAgICAgIGlmICgobTggPT09IDMgfHwgbTggPT09IDUpICYmIG0yNCA9PT0gMilcbiAgICAgICAgdTEgPSAtbTE0O1xuICAgICAgZWxzZVxuICAgICAgICB1MSA9IG0xNDtcbiAgICB9XG4gICAganNmWzBdLnB1c2godTEpO1xuXG4gICAgdmFyIHUyO1xuICAgIGlmICgobTI0ICYgMSkgPT09IDApIHtcbiAgICAgIHUyID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgbTggPSAoazIuYW5kbG4oNykgKyBkMikgJiA3O1xuICAgICAgaWYgKChtOCA9PT0gMyB8fCBtOCA9PT0gNSkgJiYgbTE0ID09PSAyKVxuICAgICAgICB1MiA9IC1tMjQ7XG4gICAgICBlbHNlXG4gICAgICAgIHUyID0gbTI0O1xuICAgIH1cbiAgICBqc2ZbMV0ucHVzaCh1Mik7XG5cbiAgICAvLyBTZWNvbmQgcGhhc2VcbiAgICBpZiAoMiAqIGQxID09PSB1MSArIDEpXG4gICAgICBkMSA9IDEgLSBkMTtcbiAgICBpZiAoMiAqIGQyID09PSB1MiArIDEpXG4gICAgICBkMiA9IDEgLSBkMjtcbiAgICBrMS5pdXNocm4oMSk7XG4gICAgazIuaXVzaHJuKDEpO1xuICB9XG5cbiAgcmV0dXJuIGpzZjtcbn1cbnV0aWxzLmdldEpTRiA9IGdldEpTRjtcblxuZnVuY3Rpb24gY2FjaGVkUHJvcGVydHkob2JqLCBuYW1lLCBjb21wdXRlcikge1xuICB2YXIga2V5ID0gJ18nICsgbmFtZTtcbiAgb2JqLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uIGNhY2hlZFByb3BlcnR5KCkge1xuICAgIHJldHVybiB0aGlzW2tleV0gIT09IHVuZGVmaW5lZCA/IHRoaXNba2V5XSA6XG4gICAgICB0aGlzW2tleV0gPSBjb21wdXRlci5jYWxsKHRoaXMpO1xuICB9O1xufVxudXRpbHMuY2FjaGVkUHJvcGVydHkgPSBjYWNoZWRQcm9wZXJ0eTtcblxuZnVuY3Rpb24gcGFyc2VCeXRlcyhieXRlcykge1xuICByZXR1cm4gdHlwZW9mIGJ5dGVzID09PSAnc3RyaW5nJyA/IHV0aWxzLnRvQXJyYXkoYnl0ZXMsICdoZXgnKSA6XG4gICAgYnl0ZXM7XG59XG51dGlscy5wYXJzZUJ5dGVzID0gcGFyc2VCeXRlcztcblxuZnVuY3Rpb24gaW50RnJvbUxFKGJ5dGVzKSB7XG4gIHJldHVybiBuZXcgQk4oYnl0ZXMsICdoZXgnLCAnbGUnKTtcbn1cbnV0aWxzLmludEZyb21MRSA9IGludEZyb21MRTtcblxuIiwiKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFV0aWxzXG4gIGZ1bmN0aW9uIGFzc2VydCAodmFsLCBtc2cpIHtcbiAgICBpZiAoIXZhbCkgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xuICB9XG5cbiAgLy8gQ291bGQgdXNlIGBpbmhlcml0c2AgbW9kdWxlLCBidXQgZG9uJ3Qgd2FudCB0byBtb3ZlIGZyb20gc2luZ2xlIGZpbGVcbiAgLy8gYXJjaGl0ZWN0dXJlIHlldC5cbiAgZnVuY3Rpb24gaW5oZXJpdHMgKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGU7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKTtcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gIH1cblxuICAvLyBCTlxuXG4gIGZ1bmN0aW9uIEJOIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChCTi5pc0JOKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgdGhpcy53b3JkcyA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgLy8gUmVkdWN0aW9uIGNvbnRleHRcbiAgICB0aGlzLnJlZCA9IG51bGw7XG5cbiAgICBpZiAobnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gJ2xlJyB8fCBiYXNlID09PSAnYmUnKSB7XG4gICAgICAgIGVuZGlhbiA9IGJhc2U7XG4gICAgICAgIGJhc2UgPSAxMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdChudW1iZXIgfHwgMCwgYmFzZSB8fCAxMCwgZW5kaWFuIHx8ICdiZScpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJOO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQk4gPSBCTjtcbiAgfVxuXG4gIEJOLkJOID0gQk47XG4gIEJOLndvcmRTaXplID0gMjY7XG5cbiAgdmFyIEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5CdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBCdWZmZXIgPSB3aW5kb3cuQnVmZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gIH1cblxuICBCTi5pc0JOID0gZnVuY3Rpb24gaXNCTiAobnVtKSB7XG4gICAgaWYgKG51bSBpbnN0YW5jZW9mIEJOKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVtICE9PSBudWxsICYmIHR5cGVvZiBudW0gPT09ICdvYmplY3QnICYmXG4gICAgICBudW0uY29uc3RydWN0b3Iud29yZFNpemUgPT09IEJOLndvcmRTaXplICYmIEFycmF5LmlzQXJyYXkobnVtLndvcmRzKTtcbiAgfTtcblxuICBCTi5tYXggPSBmdW5jdGlvbiBtYXggKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA+IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5taW4gPSBmdW5jdGlvbiBtaW4gKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA8IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXROdW1iZXIobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXRBcnJheShudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBiYXNlID0gMTY7XG4gICAgfVxuICAgIGFzc2VydChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KTtcblxuICAgIG51bWJlciA9IG51bWJlci50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICBzdGFydCsrO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0IDwgbnVtYmVyLmxlbmd0aCkge1xuICAgICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICAgIHRoaXMuX3BhcnNlSGV4KG51bWJlciwgc3RhcnQsIGVuZGlhbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wYXJzZUJhc2UobnVtYmVyLCBiYXNlLCBzdGFydCk7XG4gICAgICAgIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgICAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0TnVtYmVyID0gZnVuY3Rpb24gX2luaXROdW1iZXIgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDB4NDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgbnVtYmVyICYgMHgzZmZmZmZmIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPCAweDEwMDAwMDAwMDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobnVtYmVyIDwgMHgyMDAwMDAwMDAwMDAwMCk7IC8vIDIgXiA1MyAodW5zYWZlKVxuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZixcbiAgICAgICAgMVxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICAvLyBSZXZlcnNlIHRoZSBieXRlc1xuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXRBcnJheSA9IGZ1bmN0aW9uIF9pbml0QXJyYXkgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgLy8gUGVyaGFwcyBhIFVpbnQ4QXJyYXlcbiAgICBhc3NlcnQodHlwZW9mIG51bWJlci5sZW5ndGggPT09ICdudW1iZXInKTtcbiAgICBpZiAobnVtYmVyLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbChudW1iZXIubGVuZ3RoIC8gMyk7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMSwgaiA9IDA7IGkgPj0gMDsgaSAtPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgLSAxXSA8PCA4KSB8IChudW1iZXJbaSAtIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpICsgMV0gPDwgOCkgfCAobnVtYmVyW2kgKyAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUhleDRCaXRzIChzdHJpbmcsIGluZGV4KSB7XG4gICAgdmFyIGMgPSBzdHJpbmcuY2hhckNvZGVBdChpbmRleCk7XG4gICAgLy8gJ0EnIC0gJ0YnXG4gICAgaWYgKGMgPj0gNjUgJiYgYyA8PSA3MCkge1xuICAgICAgcmV0dXJuIGMgLSA1NTtcbiAgICAvLyAnYScgLSAnZidcbiAgICB9IGVsc2UgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMDIpIHtcbiAgICAgIHJldHVybiBjIC0gODc7XG4gICAgLy8gJzAnIC0gJzknXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoYyAtIDQ4KSAmIDB4ZjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUhleEJ5dGUgKHN0cmluZywgbG93ZXJCb3VuZCwgaW5kZXgpIHtcbiAgICB2YXIgciA9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCk7XG4gICAgaWYgKGluZGV4IC0gMSA+PSBsb3dlckJvdW5kKSB7XG4gICAgICByIHw9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCAtIDEpIDw8IDQ7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUhleCA9IGZ1bmN0aW9uIF9wYXJzZUhleCAobnVtYmVyLCBzdGFydCwgZW5kaWFuKSB7XG4gICAgLy8gQ3JlYXRlIHBvc3NpYmx5IGJpZ2dlciBhcnJheSB0byBlbnN1cmUgdGhhdCBpdCBmaXRzIHRoZSBudW1iZXJcbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbCgobnVtYmVyLmxlbmd0aCAtIHN0YXJ0KSAvIDYpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgLy8gMjQtYml0cyBjaHVua3NcbiAgICB2YXIgb2ZmID0gMDtcbiAgICB2YXIgaiA9IDA7XG5cbiAgICB2YXIgdztcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMTsgaSA+PSBzdGFydDsgaSAtPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhcnNlTGVuZ3RoID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgICAgZm9yIChpID0gcGFyc2VMZW5ndGggJSAyID09PSAwID8gc3RhcnQgKyAxIDogc3RhcnQ7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIHIgKz0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICByICs9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUJhc2UgPSBmdW5jdGlvbiBfcGFyc2VCYXNlIChudW1iZXIsIGJhc2UsIHN0YXJ0KSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBhcyB6ZXJvXG4gICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA+IDEgJiYgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX25vcm1TaWduID0gZnVuY3Rpb24gX25vcm1TaWduICgpIHtcbiAgICAvLyAtMCA9IDBcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH07XG5cbiAgLypcblxuICB2YXIgemVyb3MgPSBbXTtcbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXTtcbiAgdmFyIGdyb3VwQmFzZXMgPSBbXTtcblxuICB2YXIgcyA9ICcnO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgQk4ud29yZFNpemUpIHtcbiAgICB6ZXJvc1tpXSA9IHM7XG4gICAgcyArPSAnMCc7XG4gIH1cbiAgZ3JvdXBTaXplc1swXSA9IDA7XG4gIGdyb3VwU2l6ZXNbMV0gPSAwO1xuICBncm91cEJhc2VzWzBdID0gMDtcbiAgZ3JvdXBCYXNlc1sxXSA9IDA7XG4gIHZhciBiYXNlID0gMiAtIDE7XG4gIHdoaWxlICgrK2Jhc2UgPCAzNiArIDEpIHtcbiAgICB2YXIgZ3JvdXBTaXplID0gMDtcbiAgICB2YXIgZ3JvdXBCYXNlID0gMTtcbiAgICB3aGlsZSAoZ3JvdXBCYXNlIDwgKDEgPDwgQk4ud29yZFNpemUpIC8gYmFzZSkge1xuICAgICAgZ3JvdXBCYXNlICo9IGJhc2U7XG4gICAgICBncm91cFNpemUgKz0gMTtcbiAgICB9XG4gICAgZ3JvdXBTaXplc1tiYXNlXSA9IGdyb3VwU2l6ZTtcbiAgICBncm91cEJhc2VzW2Jhc2VdID0gZ3JvdXBCYXNlO1xuICB9XG5cbiAgKi9cblxuICB2YXIgemVyb3MgPSBbXG4gICAgJycsXG4gICAgJzAnLFxuICAgICcwMCcsXG4gICAgJzAwMCcsXG4gICAgJzAwMDAnLFxuICAgICcwMDAwMCcsXG4gICAgJzAwMDAwMCcsXG4gICAgJzAwMDAwMDAnLFxuICAgICcwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gIF07XG5cbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXG4gICAgMCwgMCxcbiAgICAyNSwgMTYsIDEyLCAxMSwgMTAsIDksIDgsXG4gICAgOCwgNywgNywgNywgNywgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNVxuICBdO1xuXG4gIHZhciBncm91cEJhc2VzID0gW1xuICAgIDAsIDAsXG4gICAgMzM1NTQ0MzIsIDQzMDQ2NzIxLCAxNjc3NzIxNiwgNDg4MjgxMjUsIDYwNDY2MTc2LCA0MDM1MzYwNywgMTY3NzcyMTYsXG4gICAgNDMwNDY3MjEsIDEwMDAwMDAwLCAxOTQ4NzE3MSwgMzU4MzE4MDgsIDYyNzQ4NTE3LCA3NTI5NTM2LCAxMTM5MDYyNSxcbiAgICAxNjc3NzIxNiwgMjQxMzc1NjksIDM0MDEyMjI0LCA0NzA0NTg4MSwgNjQwMDAwMDAsIDQwODQxMDEsIDUxNTM2MzIsXG4gICAgNjQzNjM0MywgNzk2MjYyNCwgOTc2NTYyNSwgMTE4ODEzNzYsIDE0MzQ4OTA3LCAxNzIxMDM2OCwgMjA1MTExNDksXG4gICAgMjQzMDAwMDAsIDI4NjI5MTUxLCAzMzU1NDQzMiwgMzkxMzUzOTMsIDQ1NDM1NDI0LCA1MjUyMTg3NSwgNjA0NjYxNzZcbiAgXTtcblxuICBCTi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYmFzZSwgcGFkZGluZykge1xuICAgIGJhc2UgPSBiYXNlIHx8IDEwO1xuICAgIHBhZGRpbmcgPSBwYWRkaW5nIHwgMCB8fCAxO1xuXG4gICAgdmFyIG91dDtcbiAgICBpZiAoYmFzZSA9PT0gMTYgfHwgYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIG9mZiA9IDA7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgICAgdmFyIHdvcmQgPSAoKCh3IDw8IG9mZikgfCBjYXJyeSkgJiAweGZmZmZmZikudG9TdHJpbmcoMTYpO1xuICAgICAgICBjYXJyeSA9ICh3ID4+PiAoMjQgLSBvZmYpKSAmIDB4ZmZmZmZmO1xuICAgICAgICBpZiAoY2FycnkgIT09IDAgfHwgaSAhPT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbNiAtIHdvcmQubGVuZ3RoXSArIHdvcmQgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gd29yZCArIG91dDtcbiAgICAgICAgfVxuICAgICAgICBvZmYgKz0gMjtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgICBvdXQgPSBjYXJyeS50b1N0cmluZygxNikgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNikge1xuICAgICAgLy8gdmFyIGdyb3VwU2l6ZSA9IE1hdGguZmxvb3IoQk4ud29yZFNpemUgKiBNYXRoLkxOMiAvIE1hdGgubG9nKGJhc2UpKTtcbiAgICAgIHZhciBncm91cFNpemUgPSBncm91cFNpemVzW2Jhc2VdO1xuICAgICAgLy8gdmFyIGdyb3VwQmFzZSA9IE1hdGgucG93KGJhc2UsIGdyb3VwU2l6ZSk7XG4gICAgICB2YXIgZ3JvdXBCYXNlID0gZ3JvdXBCYXNlc1tiYXNlXTtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIGMgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjLm5lZ2F0aXZlID0gMDtcbiAgICAgIHdoaWxlICghYy5pc1plcm8oKSkge1xuICAgICAgICB2YXIgciA9IGMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgICB2YXIgbGl0dGxlRW5kaWFuID0gZW5kaWFuID09PSAnbGUnO1xuICAgIHZhciByZXMgPSBuZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7XG5cbiAgICB2YXIgYiwgaTtcbiAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKTtcbiAgICBpZiAoIWxpdHRsZUVuZGlhbikge1xuICAgICAgLy8gQXNzdW1lIGJpZy1lbmRpYW5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXFMZW5ndGggLSBieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW3JlcUxlbmd0aCAtIGkgLSAxXSA9IGI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tpXSA9IGI7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBpIDwgcmVxTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSAmICgxIDw8IHdiaXQpKSA+Pj4gd2JpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdztcbiAgfVxuXG4gIC8vIE51bWJlciBvZiB0cmFpbGluZyB6ZXJvIGJpdHNcbiAgQk4ucHJvdG90eXBlLnplcm9CaXRzID0gZnVuY3Rpb24gemVyb0JpdHMgKCkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gMDtcblxuICAgIHZhciByID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBiID0gdGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7XG4gICAgICByICs9IGI7XG4gICAgICBpZiAoYiAhPT0gMjYpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIGJ5dGVMZW5ndGggKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKSAvIDgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1R3b3MgPSBmdW5jdGlvbiB0b1R3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVR3b3MgPSBmdW5jdGlvbiBmcm9tVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy50ZXN0bih3aWR0aCAtIDEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RuKHdpZHRoKS5pYWRkbigxKS5pbmVnKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gaXNOZWcgKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlICE9PSAwO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluZWcgPSBmdW5jdGlvbiBpbmVnICgpIHtcbiAgICBpZiAoIXRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVvciA9IGZ1bmN0aW9uIGl1b3IgKG51bSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSB8IG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXhvciA9IGZ1bmN0aW9uIGl4b3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1eG9yKG51bSk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5peG9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51eG9yID0gZnVuY3Rpb24gdXhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKTtcbiAgfTtcblxuICAvLyBOb3QgYGB0aGlzYGAgd2l0aCBgYHdpZHRoYGAgYml0d2lkdGhcbiAgQk4ucHJvdG90eXBlLmlub3RuID0gZnVuY3Rpb24gaW5vdG4gKHdpZHRoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgJiYgd2lkdGggPj0gMCk7XG5cbiAgICB2YXIgYnl0ZXNOZWVkZWQgPSBNYXRoLmNlaWwod2lkdGggLyAyNikgfCAwO1xuICAgIHZhciBiaXRzTGVmdCA9IHdpZHRoICUgMjY7XG5cbiAgICAvLyBFeHRlbmQgdGhlIGJ1ZmZlciB3aXRoIGxlYWRpbmcgemVyb2VzXG4gICAgdGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtcblxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIGJ5dGVzTmVlZGVkLS07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRlIHdvcmRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlc05lZWRlZDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRoZSByZXNpZHVlXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgKDB4M2ZmZmZmZiA+PiAoMjYgLSBiaXRzTGVmdCkpO1xuICAgIH1cblxuICAgIC8vIEFuZCByZW1vdmUgbGVhZGluZyB6ZXJvZXNcbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gc21hbGxNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIHZhciBsZW4gPSAoc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoKSB8IDA7XG4gICAgb3V0Lmxlbmd0aCA9IGxlbjtcbiAgICBsZW4gPSAobGVuIC0gMSkgfCAwO1xuXG4gICAgLy8gUGVlbCBvbmUgaXRlcmF0aW9uIChjb21waWxlciBjYW4ndCBkbyBpdCwgYmVjYXVzZSBvZiBjb2RlIGNvbXBsZXhpdHkpXG4gICAgdmFyIGEgPSBzZWxmLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgYiA9IG51bS53b3Jkc1swXSB8IDA7XG4gICAgdmFyIHIgPSBhICogYjtcblxuICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgdmFyIGNhcnJ5ID0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICBvdXQud29yZHNbMF0gPSBsbztcblxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gY2FycnkgPj4+IDI2O1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSAoayAtIGopIHwgMDtcbiAgICAgICAgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgciA9IGEgKiBiICsgcndvcmQ7XG4gICAgICAgIG5jYXJyeSArPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgICByd29yZCA9IHIgJiAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZCB8IDA7XG4gICAgICBjYXJyeSA9IG5jYXJyeSB8IDA7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2FycnkgfCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNobG4gPSBmdW5jdGlvbiBpc2hsbiAoYml0cykge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHQgaW4tcGxhY2VcbiAgLy8gTk9URTogYGhpbnRgIGlzIGEgbG93ZXN0IGJpdCBiZWZvcmUgdHJhaWxpbmcgemVyb2VzXG4gIC8vIE5PVEU6IGlmIGBleHRlbmRlZGAgaXMgcHJlc2VudCAtIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggZGVzdHJveWVkIGJpdHNcbiAgQk4ucHJvdG90eXBlLml1c2hybiA9IGZ1bmN0aW9uIGl1c2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIGg7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIGggPSAoaGludCAtIChoaW50ICUgMjYpKSAvIDI2O1xuICAgIH0gZWxzZSB7XG4gICAgICBoID0gMDtcbiAgICB9XG5cbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IE1hdGgubWluKChiaXRzIC0gcikgLyAyNiwgdGhpcy5sZW5ndGgpO1xuICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgIHZhciBtYXNrZWRXb3JkcyA9IGV4dGVuZGVkO1xuXG4gICAgaCAtPSBzO1xuICAgIGggPSBNYXRoLm1heCgwLCBoKTtcblxuICAgIC8vIEV4dGVuZGVkIG1vZGUsIGNvcHkgbWFza2VkIHBhcnRcbiAgICBpZiAobWFza2VkV29yZHMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIG1hc2tlZFdvcmRzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICAgIG1hc2tlZFdvcmRzLmxlbmd0aCA9IHM7XG4gICAgfVxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIC8vIE5vLW9wLCB3ZSBzaG91bGQgbm90IG1vdmUgYW55dGhpbmcgYXQgYWxsXG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IHMpIHtcbiAgICAgIHRoaXMubGVuZ3RoIC09IHM7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpICsgc107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDAgJiYgKGNhcnJ5ICE9PSAwIHx8IGkgPj0gaCk7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAoY2FycnkgPDwgKDI2IC0gcikpIHwgKHdvcmQgPj4+IHIpO1xuICAgICAgY2FycnkgPSB3b3JkICYgbWFzaztcbiAgICB9XG5cbiAgICAvLyBQdXNoIGNhcnJpZWQgYml0cyBhcyBhIG1hc2tcbiAgICBpZiAobWFza2VkV29yZHMgJiYgY2FycnkgIT09IDApIHtcbiAgICAgIG1hc2tlZFdvcmRzLndvcmRzW21hc2tlZFdvcmRzLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyLnN0cmlwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NCBpbnN0YW5jZVxuICAgICAgICByLnN0cmlwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByIGlzIEJOIHY1IGluc3RhbmNlXG4gICAgICAgIHIuX3N0cmlwKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0KSB7XG4gICAgaW5wdXQuaXVzaHJuKHRoaXMubiwgMCwgb3V0KTtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIHJldHVybiBudW0uaW11bCh0aGlzLmspO1xuICB9O1xuXG4gIGZ1bmN0aW9uIEsyNTYgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdrMjU2JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZicpO1xuICB9XG4gIGluaGVyaXRzKEsyNTYsIE1QcmltZSk7XG5cbiAgSzI1Ni5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dHB1dCkge1xuICAgIC8vIDI1NiA9IDkgKiAyNiArIDIyXG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZjtcblxuICAgIHZhciBvdXRMZW4gPSBNYXRoLm1pbihpbnB1dC5sZW5ndGgsIDkpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0TGVuOyBpKyspIHtcbiAgICAgIG91dHB1dC53b3Jkc1tpXSA9IGlucHV0LndvcmRzW2ldO1xuICAgIH1cbiAgICBvdXRwdXQubGVuZ3RoID0gb3V0TGVuO1xuXG4gICAgaWYgKGlucHV0Lmxlbmd0aCA8PSA5KSB7XG4gICAgICBpbnB1dC53b3Jkc1swXSA9IDA7XG4gICAgICBpbnB1dC5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNoaWZ0IGJ5IDkgbGltYnNcbiAgICB2YXIgcHJldiA9IGlucHV0LndvcmRzWzldO1xuICAgIG91dHB1dC53b3Jkc1tvdXRwdXQubGVuZ3RoKytdID0gcHJldiAmIG1hc2s7XG5cbiAgICBmb3IgKGkgPSAxMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmV4dCA9IGlucHV0LndvcmRzW2ldIHwgMDtcbiAgICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSAoKG5leHQgJiBtYXNrKSA8PCA0KSB8IChwcmV2ID4+PiAyMik7XG4gICAgICBwcmV2ID0gbmV4dDtcbiAgICB9XG4gICAgcHJldiA+Pj49IDIyO1xuICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSBwcmV2O1xuICAgIGlmIChwcmV2ID09PSAwICYmIGlucHV0Lmxlbmd0aCA+IDEwKSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gMTA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSA5O1xuICAgIH1cbiAgfTtcblxuICBLMjU2LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxMDAwMDAzZDEgPSBbIDB4NDAsIDB4M2QxIF1cbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aF0gPSAwO1xuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoICsgMV0gPSAwO1xuICAgIG51bS5sZW5ndGggKz0gMjtcblxuICAgIC8vIGJvdW5kZWQgYXQ6IDB4NDAgKiAweDNmZmZmZmYgKyAweDNkMCA9IDB4MTAwMDAwMzkwXG4gICAgdmFyIGxvID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSBudW0ud29yZHNbaV0gfCAwO1xuICAgICAgbG8gKz0gdyAqIDB4M2QxO1xuICAgICAgbnVtLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICBsbyA9IHcgKiAweDQwICsgKChsbyAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICB9XG5cbiAgICAvLyBGYXN0IGxlbmd0aCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIGZ1bmN0aW9uIFAyMjQgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMjI0JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScpO1xuICB9XG4gIGluaGVyaXRzKFAyMjQsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDE5MiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AxOTInLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDE5MiwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMjU1MTkgKCkge1xuICAgIC8vIDIgXiAyNTUgLSAxOVxuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICcyNTUxOScsXG4gICAgICAnN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCcpO1xuICB9XG4gIGluaGVyaXRzKFAyNTUxOSwgTVByaW1lKTtcblxuICBQMjU1MTkucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEzXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGhpID0gKG51bS53b3Jkc1tpXSB8IDApICogMHgxMyArIGNhcnJ5O1xuICAgICAgdmFyIGxvID0gaGkgJiAweDNmZmZmZmY7XG4gICAgICBoaSA+Pj49IDI2O1xuXG4gICAgICBudW0ud29yZHNbaV0gPSBsbztcbiAgICAgIGNhcnJ5ID0gaGk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgbnVtLndvcmRzW251bS5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICAvLyBFeHBvcnRlZCBtb3N0bHkgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHVzZSBwbGFpbiBuYW1lIGluc3RlYWRcbiAgQk4uX3ByaW1lID0gZnVuY3Rpb24gcHJpbWUgKG5hbWUpIHtcbiAgICAvLyBDYWNoZWQgdmVyc2lvbiBvZiBwcmltZVxuICAgIGlmIChwcmltZXNbbmFtZV0pIHJldHVybiBwcmltZXNbbmFtZV07XG5cbiAgICB2YXIgcHJpbWU7XG4gICAgaWYgKG5hbWUgPT09ICdrMjU2Jykge1xuICAgICAgcHJpbWUgPSBuZXcgSzI1NigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyMjQnKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjI0KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDE5MicpIHtcbiAgICAgIHByaW1lID0gbmV3IFAxOTIoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjU1MTknKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjU1MTkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByaW1lICcgKyBuYW1lKTtcbiAgICB9XG4gICAgcHJpbWVzW25hbWVdID0gcHJpbWU7XG5cbiAgICByZXR1cm4gcHJpbWU7XG4gIH07XG5cbiAgLy9cbiAgLy8gQmFzZSByZWR1Y3Rpb24gZW5naW5lXG4gIC8vXG4gIGZ1bmN0aW9uIFJlZCAobSkge1xuICAgIGlmICh0eXBlb2YgbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBwcmltZSA9IEJOLl9wcmltZShtKTtcbiAgICAgIHRoaXMubSA9IHByaW1lLnA7XG4gICAgICB0aGlzLnByaW1lID0gcHJpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChtLmd0bigxKSwgJ21vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMScpO1xuICAgICAgdGhpcy5tID0gbTtcbiAgICAgIHRoaXMucHJpbWUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTEgPSBmdW5jdGlvbiBfdmVyaWZ5MSAoYSkge1xuICAgIGFzc2VydChhLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQsICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MiA9IGZ1bmN0aW9uIF92ZXJpZnkyIChhLCBiKSB7XG4gICAgYXNzZXJ0KChhLm5lZ2F0aXZlIHwgYi5uZWdhdGl2ZSkgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCAmJiBhLnJlZCA9PT0gYi5yZWQsXG4gICAgICAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW1vZCA9IGZ1bmN0aW9uIGltb2QgKGEpIHtcbiAgICBpZiAodGhpcy5wcmltZSkgcmV0dXJuIHRoaXMucHJpbWUuaXJlZHVjZShhKS5fZm9yY2VSZWQodGhpcyk7XG4gICAgcmV0dXJuIGEudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm0uc3ViKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5hZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlhZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLnN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlzdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNobCA9IGZ1bmN0aW9uIHNobCAoYSwgbnVtKSB7XG4gICAgdGhpcy5fdmVyaWZ5MShhKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEudXNobG4obnVtKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLmltdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEubXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bChhLCBhLmNsb25lKCkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKGEsIGEpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FydCA9IGZ1bmN0aW9uIHNxcnQgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciBtb2QzID0gdGhpcy5tLmFuZGxuKDMpO1xuICAgIGFzc2VydChtb2QzICUgMiA9PT0gMSk7XG5cbiAgICAvLyBGYXN0IGNhc2VcbiAgICBpZiAobW9kMyA9PT0gMykge1xuICAgICAgdmFyIHBvdyA9IHRoaXMubS5hZGQobmV3IEJOKDEpKS5pdXNocm4oMik7XG4gICAgICByZXR1cm4gdGhpcy5wb3coYSwgcG93KTtcbiAgICB9XG5cbiAgICAvLyBUb25lbGxpLVNoYW5rcyBhbGdvcml0aG0gKFRvdGFsbHkgdW5vcHRpbWl6ZWQgYW5kIHNsb3cpXG4gICAgLy9cbiAgICAvLyBGaW5kIFEgYW5kIFMsIHRoYXQgUSAqIDIgXiBTID0gKFAgLSAxKVxuICAgIHZhciBxID0gdGhpcy5tLnN1Ym4oMSk7XG4gICAgdmFyIHMgPSAwO1xuICAgIHdoaWxlICghcS5pc1plcm8oKSAmJiBxLmFuZGxuKDEpID09PSAwKSB7XG4gICAgICBzKys7XG4gICAgICBxLml1c2hybigxKTtcbiAgICB9XG4gICAgYXNzZXJ0KCFxLmlzWmVybygpKTtcblxuICAgIHZhciBvbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgdmFyIG5PbmUgPSBvbmUucmVkTmVnKCk7XG5cbiAgICAvLyBGaW5kIHF1YWRyYXRpYyBub24tcmVzaWR1ZVxuICAgIC8vIE5PVEU6IE1heCBpcyBzdWNoIGJlY2F1c2Ugb2YgZ2VuZXJhbGl6ZWQgUmllbWFubiBoeXBvdGhlc2lzLlxuICAgIHZhciBscG93ID0gdGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpO1xuICAgIHZhciB6ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIHogPSBuZXcgQk4oMiAqIHogKiB6KS50b1JlZCh0aGlzKTtcblxuICAgIHdoaWxlICh0aGlzLnBvdyh6LCBscG93KS5jbXAobk9uZSkgIT09IDApIHtcbiAgICAgIHoucmVkSUFkZChuT25lKTtcbiAgICB9XG5cbiAgICB2YXIgYyA9IHRoaXMucG93KHosIHEpO1xuICAgIHZhciByID0gdGhpcy5wb3coYSwgcS5hZGRuKDEpLml1c2hybigxKSk7XG4gICAgdmFyIHQgPSB0aGlzLnBvdyhhLCBxKTtcbiAgICB2YXIgbSA9IHM7XG4gICAgd2hpbGUgKHQuY21wKG9uZSkgIT09IDApIHtcbiAgICAgIHZhciB0bXAgPSB0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IHRtcC5jbXAob25lKSAhPT0gMDsgaSsrKSB7XG4gICAgICAgIHRtcCA9IHRtcC5yZWRTcXIoKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydChpIDwgbSk7XG4gICAgICB2YXIgYiA9IHRoaXMucG93KGMsIG5ldyBCTigxKS5pdXNobG4obSAtIGkgLSAxKSk7XG5cbiAgICAgIHIgPSByLnJlZE11bChiKTtcbiAgICAgIGMgPSBiLnJlZFNxcigpO1xuICAgICAgdCA9IHQucmVkTXVsKGMpO1xuICAgICAgbSA9IGk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIHZhciBpbnYgPSBhLl9pbnZtcCh0aGlzLm0pO1xuICAgIGlmIChpbnYubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGludi5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludikucmVkTmVnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KTtcbiAgICB9XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKGEsIG51bSkge1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgaWYgKG51bS5jbXBuKDEpID09PSAwKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIHdpbmRvd1NpemUgPSA0O1xuICAgIHZhciB3bmQgPSBuZXcgQXJyYXkoMSA8PCB3aW5kb3dTaXplKTtcbiAgICB3bmRbMF0gPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgd25kWzFdID0gYTtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IHduZC5sZW5ndGg7IGkrKykge1xuICAgICAgd25kW2ldID0gdGhpcy5tdWwod25kW2kgLSAxXSwgYSk7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IHduZFswXTtcbiAgICB2YXIgY3VycmVudCA9IDA7XG4gICAgdmFyIGN1cnJlbnRMZW4gPSAwO1xuICAgIHZhciBzdGFydCA9IG51bS5iaXRMZW5ndGgoKSAlIDI2O1xuICAgIGlmIChzdGFydCA9PT0gMCkge1xuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSBudW0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gbnVtLndvcmRzW2ldO1xuICAgICAgZm9yICh2YXIgaiA9IHN0YXJ0IC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgdmFyIGJpdCA9ICh3b3JkID4+IGopICYgMTtcbiAgICAgICAgaWYgKHJlcyAhPT0gd25kWzBdKSB7XG4gICAgICAgICAgcmVzID0gdGhpcy5zcXIocmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXQgPT09IDAgJiYgY3VycmVudCA9PT0gMCkge1xuICAgICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudCA8PD0gMTtcbiAgICAgICAgY3VycmVudCB8PSBiaXQ7XG4gICAgICAgIGN1cnJlbnRMZW4rKztcbiAgICAgICAgaWYgKGN1cnJlbnRMZW4gIT09IHdpbmRvd1NpemUgJiYgKGkgIT09IDAgfHwgaiAhPT0gMCkpIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHRoaXMubXVsKHJlcywgd25kW2N1cnJlbnRdKTtcbiAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgIGN1cnJlbnQgPSAwO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICB2YXIgciA9IG51bS51bW9kKHRoaXMubSk7XG5cbiAgICByZXR1cm4gciA9PT0gbnVtID8gci5jbG9uZSgpIDogcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByZXMgPSBudW0uY2xvbmUoKTtcbiAgICByZXMucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vXG4gIC8vIE1vbnRnb21lcnkgbWV0aG9kIGVuZ2luZVxuICAvL1xuXG4gIEJOLm1vbnQgPSBmdW5jdGlvbiBtb250IChudW0pIHtcbiAgICByZXR1cm4gbmV3IE1vbnQobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBNb250IChtKSB7XG4gICAgUmVkLmNhbGwodGhpcywgbSk7XG5cbiAgICB0aGlzLnNoaWZ0ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIGlmICh0aGlzLnNoaWZ0ICUgMjYgIT09IDApIHtcbiAgICAgIHRoaXMuc2hpZnQgKz0gMjYgLSAodGhpcy5zaGlmdCAlIDI2KTtcbiAgICB9XG5cbiAgICB0aGlzLnIgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpO1xuICAgIHRoaXMucjIgPSB0aGlzLmltb2QodGhpcy5yLnNxcigpKTtcbiAgICB0aGlzLnJpbnYgPSB0aGlzLnIuX2ludm1wKHRoaXMubSk7XG5cbiAgICB0aGlzLm1pbnYgPSB0aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSk7XG4gICAgdGhpcy5taW52ID0gdGhpcy5taW52LnVtb2QodGhpcy5yKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLnIuc3ViKHRoaXMubWludik7XG4gIH1cbiAgaW5oZXJpdHMoTW9udCwgUmVkKTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmltb2QobnVtLnVzaGxuKHRoaXMuc2hpZnQpKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgciA9IHRoaXMuaW1vZChudW0ubXVsKHRoaXMucmludikpO1xuICAgIHIucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHtcbiAgICAgIGEud29yZHNbMF0gPSAwO1xuICAgICAgYS5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgdmFyIHQgPSBhLmltdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG5cbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMCkuX2ZvcmNlUmVkKHRoaXMpO1xuXG4gICAgdmFyIHQgPSBhLm11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgLy8gKEFSKV4tMSAqIFJeMiA9IChBXi0xICogUl4tMSkgKiBSXjIgPSBBXi0xICogUlxuICAgIHZhciByZXMgPSB0aGlzLmltb2QoYS5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpO1xuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xufSkodHlwZW9mIG1vZHVsZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbW9kdWxlLCB0aGlzKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEdldEludHJpbnNpYyA9IHJlcXVpcmUoJ2dldC1pbnRyaW5zaWMnKTtcblxudmFyICRnT1BEID0gR2V0SW50cmluc2ljKCclT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciUnKTtcbmlmICgkZ09QRCkge1xuXHR0cnkge1xuXHRcdCRnT1BEKFtdLCAnbGVuZ3RoJyk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHQvLyBJRSA4IGhhcyBhIGJyb2tlbiBnT1BEXG5cdFx0JGdPUEQgPSBudWxsO1xuXHR9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gJGdPUEQ7XG4iLCIvKipcbiAqIENvZGUgcmVmYWN0b3JlZCBmcm9tIE1vemlsbGEgRGV2ZWxvcGVyIE5ldHdvcms6XG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvYXNzaWduXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBmaXJzdFNvdXJjZSkge1xuICBpZiAodGFyZ2V0ID09PSB1bmRlZmluZWQgfHwgdGFyZ2V0ID09PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgZmlyc3QgYXJndW1lbnQgdG8gb2JqZWN0Jyk7XG4gIH1cblxuICB2YXIgdG8gPSBPYmplY3QodGFyZ2V0KTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgbmV4dFNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcbiAgICBpZiAobmV4dFNvdXJjZSA9PT0gdW5kZWZpbmVkIHx8IG5leHRTb3VyY2UgPT09IG51bGwpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBrZXlzQXJyYXkgPSBPYmplY3Qua2V5cyhPYmplY3QobmV4dFNvdXJjZSkpO1xuICAgIGZvciAodmFyIG5leHRJbmRleCA9IDAsIGxlbiA9IGtleXNBcnJheS5sZW5ndGg7IG5leHRJbmRleCA8IGxlbjsgbmV4dEluZGV4KyspIHtcbiAgICAgIHZhciBuZXh0S2V5ID0ga2V5c0FycmF5W25leHRJbmRleF07XG4gICAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobmV4dFNvdXJjZSwgbmV4dEtleSk7XG4gICAgICBpZiAoZGVzYyAhPT0gdW5kZWZpbmVkICYmIGRlc2MuZW51bWVyYWJsZSkge1xuICAgICAgICB0b1tuZXh0S2V5XSA9IG5leHRTb3VyY2VbbmV4dEtleV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0bztcbn1cblxuZnVuY3Rpb24gcG9seWZpbGwoKSB7XG4gIGlmICghT2JqZWN0LmFzc2lnbikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QsICdhc3NpZ24nLCB7XG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgdmFsdWU6IGFzc2lnblxuICAgIH0pO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBhc3NpZ246IGFzc2lnbixcbiAgcG9seWZpbGw6IHBvbHlmaWxsXG59O1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFIgPSB0eXBlb2YgUmVmbGVjdCA9PT0gJ29iamVjdCcgPyBSZWZsZWN0IDogbnVsbFxudmFyIFJlZmxlY3RBcHBseSA9IFIgJiYgdHlwZW9mIFIuYXBwbHkgPT09ICdmdW5jdGlvbidcbiAgPyBSLmFwcGx5XG4gIDogZnVuY3Rpb24gUmVmbGVjdEFwcGx5KHRhcmdldCwgcmVjZWl2ZXIsIGFyZ3MpIHtcbiAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwodGFyZ2V0LCByZWNlaXZlciwgYXJncyk7XG4gIH1cblxudmFyIFJlZmxlY3RPd25LZXlzXG5pZiAoUiAmJiB0eXBlb2YgUi5vd25LZXlzID09PSAnZnVuY3Rpb24nKSB7XG4gIFJlZmxlY3RPd25LZXlzID0gUi5vd25LZXlzXG59IGVsc2UgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgUmVmbGVjdE93bktleXMgPSBmdW5jdGlvbiBSZWZsZWN0T3duS2V5cyh0YXJnZXQpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KVxuICAgICAgLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHRhcmdldCkpO1xuICB9O1xufSBlbHNlIHtcbiAgUmVmbGVjdE93bktleXMgPSBmdW5jdGlvbiBSZWZsZWN0T3duS2V5cyh0YXJnZXQpIHtcbiAgICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0KTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gUHJvY2Vzc0VtaXRXYXJuaW5nKHdhcm5pbmcpIHtcbiAgaWYgKGNvbnNvbGUgJiYgY29uc29sZS53YXJuKSBjb25zb2xlLndhcm4od2FybmluZyk7XG59XG5cbnZhciBOdW1iZXJJc05hTiA9IE51bWJlci5pc05hTiB8fCBmdW5jdGlvbiBOdW1iZXJJc05hTih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBFdmVudEVtaXR0ZXIoKSB7XG4gIEV2ZW50RW1pdHRlci5pbml0LmNhbGwodGhpcyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50RW1pdHRlcjtcbm1vZHVsZS5leHBvcnRzLm9uY2UgPSBvbmNlO1xuXG4vLyBCYWNrd2FyZHMtY29tcGF0IHdpdGggbm9kZSAwLjEwLnhcbkV2ZW50RW1pdHRlci5FdmVudEVtaXR0ZXIgPSBFdmVudEVtaXR0ZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50cyA9IHVuZGVmaW5lZDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX2V2ZW50c0NvdW50ID0gMDtcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX21heExpc3RlbmVycyA9IHVuZGVmaW5lZDtcblxuLy8gQnkgZGVmYXVsdCBFdmVudEVtaXR0ZXJzIHdpbGwgcHJpbnQgYSB3YXJuaW5nIGlmIG1vcmUgdGhhbiAxMCBsaXN0ZW5lcnMgYXJlXG4vLyBhZGRlZCB0byBpdC4gVGhpcyBpcyBhIHVzZWZ1bCBkZWZhdWx0IHdoaWNoIGhlbHBzIGZpbmRpbmcgbWVtb3J5IGxlYWtzLlxudmFyIGRlZmF1bHRNYXhMaXN0ZW5lcnMgPSAxMDtcblxuZnVuY3Rpb24gY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcikge1xuICBpZiAodHlwZW9mIGxpc3RlbmVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwibGlzdGVuZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBsaXN0ZW5lcik7XG4gIH1cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEV2ZW50RW1pdHRlciwgJ2RlZmF1bHRNYXhMaXN0ZW5lcnMnLCB7XG4gIGVudW1lcmFibGU6IHRydWUsXG4gIGdldDogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24oYXJnKSB7XG4gICAgaWYgKHR5cGVvZiBhcmcgIT09ICdudW1iZXInIHx8IGFyZyA8IDAgfHwgTnVtYmVySXNOYU4oYXJnKSkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcImRlZmF1bHRNYXhMaXN0ZW5lcnNcIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnICsgYXJnICsgJy4nKTtcbiAgICB9XG4gICAgZGVmYXVsdE1heExpc3RlbmVycyA9IGFyZztcbiAgfVxufSk7XG5cbkV2ZW50RW1pdHRlci5pbml0ID0gZnVuY3Rpb24oKSB7XG5cbiAgaWYgKHRoaXMuX2V2ZW50cyA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICB0aGlzLl9ldmVudHMgPT09IE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5fZXZlbnRzKSB7XG4gICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gIH1cblxuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSB0aGlzLl9tYXhMaXN0ZW5lcnMgfHwgdW5kZWZpbmVkO1xufTtcblxuLy8gT2J2aW91c2x5IG5vdCBhbGwgRW1pdHRlcnMgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gMTAuIFRoaXMgZnVuY3Rpb24gYWxsb3dzXG4vLyB0aGF0IHRvIGJlIGluY3JlYXNlZC4gU2V0IHRvIHplcm8gZm9yIHVubGltaXRlZC5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24gc2V0TWF4TGlzdGVuZXJzKG4pIHtcbiAgaWYgKHR5cGVvZiBuICE9PSAnbnVtYmVyJyB8fCBuIDwgMCB8fCBOdW1iZXJJc05hTihuKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJuXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyArIG4gKyAnLicpO1xuICB9XG4gIHRoaXMuX21heExpc3RlbmVycyA9IG47XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gX2dldE1heExpc3RlbmVycyh0aGF0KSB7XG4gIGlmICh0aGF0Ll9tYXhMaXN0ZW5lcnMgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gIHJldHVybiB0aGF0Ll9tYXhMaXN0ZW5lcnM7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZ2V0TWF4TGlzdGVuZXJzID0gZnVuY3Rpb24gZ2V0TWF4TGlzdGVuZXJzKCkge1xuICByZXR1cm4gX2dldE1heExpc3RlbmVycyh0aGlzKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZW1pdCA9IGZ1bmN0aW9uIGVtaXQodHlwZSkge1xuICB2YXIgYXJncyA9IFtdO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgYXJncy5wdXNoKGFyZ3VtZW50c1tpXSk7XG4gIHZhciBkb0Vycm9yID0gKHR5cGUgPT09ICdlcnJvcicpO1xuXG4gIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gIGlmIChldmVudHMgIT09IHVuZGVmaW5lZClcbiAgICBkb0Vycm9yID0gKGRvRXJyb3IgJiYgZXZlbnRzLmVycm9yID09PSB1bmRlZmluZWQpO1xuICBlbHNlIGlmICghZG9FcnJvcilcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gSWYgdGhlcmUgaXMgbm8gJ2Vycm9yJyBldmVudCBsaXN0ZW5lciB0aGVuIHRocm93LlxuICBpZiAoZG9FcnJvcikge1xuICAgIHZhciBlcjtcbiAgICBpZiAoYXJncy5sZW5ndGggPiAwKVxuICAgICAgZXIgPSBhcmdzWzBdO1xuICAgIGlmIChlciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAvLyBOb3RlOiBUaGUgY29tbWVudHMgb24gdGhlIGB0aHJvd2AgbGluZXMgYXJlIGludGVudGlvbmFsLCB0aGV5IHNob3dcbiAgICAgIC8vIHVwIGluIE5vZGUncyBvdXRwdXQgaWYgdGhpcyByZXN1bHRzIGluIGFuIHVuaGFuZGxlZCBleGNlcHRpb24uXG4gICAgICB0aHJvdyBlcjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgICB9XG4gICAgLy8gQXQgbGVhc3QgZ2l2ZSBzb21lIGtpbmQgb2YgY29udGV4dCB0byB0aGUgdXNlclxuICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1VuaGFuZGxlZCBlcnJvci4nICsgKGVyID8gJyAoJyArIGVyLm1lc3NhZ2UgKyAnKScgOiAnJykpO1xuICAgIGVyci5jb250ZXh0ID0gZXI7XG4gICAgdGhyb3cgZXJyOyAvLyBVbmhhbmRsZWQgJ2Vycm9yJyBldmVudFxuICB9XG5cbiAgdmFyIGhhbmRsZXIgPSBldmVudHNbdHlwZV07XG5cbiAgaWYgKGhhbmRsZXIgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKHR5cGVvZiBoYW5kbGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgUmVmbGVjdEFwcGx5KGhhbmRsZXIsIHRoaXMsIGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIHZhciBsZW4gPSBoYW5kbGVyLmxlbmd0aDtcbiAgICB2YXIgbGlzdGVuZXJzID0gYXJyYXlDbG9uZShoYW5kbGVyLCBsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpXG4gICAgICBSZWZsZWN0QXBwbHkobGlzdGVuZXJzW2ldLCB0aGlzLCBhcmdzKTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZnVuY3Rpb24gX2FkZExpc3RlbmVyKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIsIHByZXBlbmQpIHtcbiAgdmFyIG07XG4gIHZhciBldmVudHM7XG4gIHZhciBleGlzdGluZztcblxuICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcblxuICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcbiAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRhcmdldC5fZXZlbnRzQ291bnQgPSAwO1xuICB9IGVsc2Uge1xuICAgIC8vIFRvIGF2b2lkIHJlY3Vyc2lvbiBpbiB0aGUgY2FzZSB0aGF0IHR5cGUgPT09IFwibmV3TGlzdGVuZXJcIiEgQmVmb3JlXG4gICAgLy8gYWRkaW5nIGl0IHRvIHRoZSBsaXN0ZW5lcnMsIGZpcnN0IGVtaXQgXCJuZXdMaXN0ZW5lclwiLlxuICAgIGlmIChldmVudHMubmV3TGlzdGVuZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGFyZ2V0LmVtaXQoJ25ld0xpc3RlbmVyJywgdHlwZSxcbiAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbmVyID8gbGlzdGVuZXIubGlzdGVuZXIgOiBsaXN0ZW5lcik7XG5cbiAgICAgIC8vIFJlLWFzc2lnbiBgZXZlbnRzYCBiZWNhdXNlIGEgbmV3TGlzdGVuZXIgaGFuZGxlciBjb3VsZCBoYXZlIGNhdXNlZCB0aGVcbiAgICAgIC8vIHRoaXMuX2V2ZW50cyB0byBiZSBhc3NpZ25lZCB0byBhIG5ldyBvYmplY3RcbiAgICAgIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuICAgIH1cbiAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXTtcbiAgfVxuXG4gIGlmIChleGlzdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT3B0aW1pemUgdGhlIGNhc2Ugb2Ygb25lIGxpc3RlbmVyLiBEb24ndCBuZWVkIHRoZSBleHRyYSBhcnJheSBvYmplY3QuXG4gICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV0gPSBsaXN0ZW5lcjtcbiAgICArK3RhcmdldC5fZXZlbnRzQ291bnQ7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiBleGlzdGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gQWRkaW5nIHRoZSBzZWNvbmQgZWxlbWVudCwgbmVlZCB0byBjaGFuZ2UgdG8gYXJyYXkuXG4gICAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXSA9XG4gICAgICAgIHByZXBlbmQgPyBbbGlzdGVuZXIsIGV4aXN0aW5nXSA6IFtleGlzdGluZywgbGlzdGVuZXJdO1xuICAgICAgLy8gSWYgd2UndmUgYWxyZWFkeSBnb3QgYW4gYXJyYXksIGp1c3QgYXBwZW5kLlxuICAgIH0gZWxzZSBpZiAocHJlcGVuZCkge1xuICAgICAgZXhpc3RpbmcudW5zaGlmdChsaXN0ZW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4aXN0aW5nLnB1c2gobGlzdGVuZXIpO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGZvciBsaXN0ZW5lciBsZWFrXG4gICAgbSA9IF9nZXRNYXhMaXN0ZW5lcnModGFyZ2V0KTtcbiAgICBpZiAobSA+IDAgJiYgZXhpc3RpbmcubGVuZ3RoID4gbSAmJiAhZXhpc3Rpbmcud2FybmVkKSB7XG4gICAgICBleGlzdGluZy53YXJuZWQgPSB0cnVlO1xuICAgICAgLy8gTm8gZXJyb3IgY29kZSBmb3IgdGhpcyBzaW5jZSBpdCBpcyBhIFdhcm5pbmdcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheFxuICAgICAgdmFyIHcgPSBuZXcgRXJyb3IoJ1Bvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgbGVhayBkZXRlY3RlZC4gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nLmxlbmd0aCArICcgJyArIFN0cmluZyh0eXBlKSArICcgbGlzdGVuZXJzICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnYWRkZWQuIFVzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5jcmVhc2UgbGltaXQnKTtcbiAgICAgIHcubmFtZSA9ICdNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmcnO1xuICAgICAgdy5lbWl0dGVyID0gdGFyZ2V0O1xuICAgICAgdy50eXBlID0gdHlwZTtcbiAgICAgIHcuY291bnQgPSBleGlzdGluZy5sZW5ndGg7XG4gICAgICBQcm9jZXNzRW1pdFdhcm5pbmcodyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uIGFkZExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gIHJldHVybiBfYWRkTGlzdGVuZXIodGhpcywgdHlwZSwgbGlzdGVuZXIsIGZhbHNlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICByZXR1cm4gX2FkZExpc3RlbmVyKHRoaXMsIHR5cGUsIGxpc3RlbmVyLCB0cnVlKTtcbiAgICB9O1xuXG5mdW5jdGlvbiBvbmNlV3JhcHBlcigpIHtcbiAgaWYgKCF0aGlzLmZpcmVkKSB7XG4gICAgdGhpcy50YXJnZXQucmVtb3ZlTGlzdGVuZXIodGhpcy50eXBlLCB0aGlzLndyYXBGbik7XG4gICAgdGhpcy5maXJlZCA9IHRydWU7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApXG4gICAgICByZXR1cm4gdGhpcy5saXN0ZW5lci5jYWxsKHRoaXMudGFyZ2V0KTtcbiAgICByZXR1cm4gdGhpcy5saXN0ZW5lci5hcHBseSh0aGlzLnRhcmdldCwgYXJndW1lbnRzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBfb25jZVdyYXAodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgc3RhdGUgPSB7IGZpcmVkOiBmYWxzZSwgd3JhcEZuOiB1bmRlZmluZWQsIHRhcmdldDogdGFyZ2V0LCB0eXBlOiB0eXBlLCBsaXN0ZW5lcjogbGlzdGVuZXIgfTtcbiAgdmFyIHdyYXBwZWQgPSBvbmNlV3JhcHBlci5iaW5kKHN0YXRlKTtcbiAgd3JhcHBlZC5saXN0ZW5lciA9IGxpc3RlbmVyO1xuICBzdGF0ZS53cmFwRm4gPSB3cmFwcGVkO1xuICByZXR1cm4gd3JhcHBlZDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24gb25jZSh0eXBlLCBsaXN0ZW5lcikge1xuICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcbiAgdGhpcy5vbih0eXBlLCBfb25jZVdyYXAodGhpcywgdHlwZSwgbGlzdGVuZXIpKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnByZXBlbmRPbmNlTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHByZXBlbmRPbmNlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuICAgICAgdGhpcy5wcmVwZW5kTGlzdGVuZXIodHlwZSwgX29uY2VXcmFwKHRoaXMsIHR5cGUsIGxpc3RlbmVyKSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG4vLyBFbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWYgYW5kIG9ubHkgaWYgdGhlIGxpc3RlbmVyIHdhcyByZW1vdmVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIHZhciBsaXN0LCBldmVudHMsIHBvc2l0aW9uLCBpLCBvcmlnaW5hbExpc3RlbmVyO1xuXG4gICAgICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcblxuICAgICAgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICAgICAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgbGlzdCA9IGV2ZW50c1t0eXBlXTtcbiAgICAgIGlmIChsaXN0ID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICBpZiAobGlzdCA9PT0gbGlzdGVuZXIgfHwgbGlzdC5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgaWYgKC0tdGhpcy5fZXZlbnRzQ291bnQgPT09IDApXG4gICAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgZGVsZXRlIGV2ZW50c1t0eXBlXTtcbiAgICAgICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3QubGlzdGVuZXIgfHwgbGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBsaXN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHBvc2l0aW9uID0gLTE7XG5cbiAgICAgICAgZm9yIChpID0gbGlzdC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIGlmIChsaXN0W2ldID09PSBsaXN0ZW5lciB8fCBsaXN0W2ldLmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICAgICAgb3JpZ2luYWxMaXN0ZW5lciA9IGxpc3RbaV0ubGlzdGVuZXI7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IGk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zaXRpb24gPCAwKVxuICAgICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICAgIGlmIChwb3NpdGlvbiA9PT0gMClcbiAgICAgICAgICBsaXN0LnNoaWZ0KCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHNwbGljZU9uZShsaXN0LCBwb3NpdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobGlzdC5sZW5ndGggPT09IDEpXG4gICAgICAgICAgZXZlbnRzW3R5cGVdID0gbGlzdFswXTtcblxuICAgICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIG9yaWdpbmFsTGlzdGVuZXIgfHwgbGlzdGVuZXIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9mZiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzID1cbiAgICBmdW5jdGlvbiByZW1vdmVBbGxMaXN0ZW5lcnModHlwZSkge1xuICAgICAgdmFyIGxpc3RlbmVycywgZXZlbnRzLCBpO1xuXG4gICAgICBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gICAgICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICAvLyBub3QgbGlzdGVuaW5nIGZvciByZW1vdmVMaXN0ZW5lciwgbm8gbmVlZCB0byBlbWl0XG4gICAgICBpZiAoZXZlbnRzLnJlbW92ZUxpc3RlbmVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudHNbdHlwZV0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlmICgtLXRoaXMuX2V2ZW50c0NvdW50ID09PSAwKVxuICAgICAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBkZWxldGUgZXZlbnRzW3R5cGVdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICAvLyBlbWl0IHJlbW92ZUxpc3RlbmVyIGZvciBhbGwgbGlzdGVuZXJzIG9uIGFsbCBldmVudHNcbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZXZlbnRzKTtcbiAgICAgICAgdmFyIGtleTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgICAgIGlmIChrZXkgPT09ICdyZW1vdmVMaXN0ZW5lcicpIGNvbnRpbnVlO1xuICAgICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ3JlbW92ZUxpc3RlbmVyJyk7XG4gICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIGxpc3RlbmVycyA9IGV2ZW50c1t0eXBlXTtcblxuICAgICAgaWYgKHR5cGVvZiBsaXN0ZW5lcnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnMpO1xuICAgICAgfSBlbHNlIGlmIChsaXN0ZW5lcnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyBMSUZPIG9yZGVyXG4gICAgICAgIGZvciAoaSA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuXG5mdW5jdGlvbiBfbGlzdGVuZXJzKHRhcmdldCwgdHlwZSwgdW53cmFwKSB7XG4gIHZhciBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcblxuICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIFtdO1xuXG4gIHZhciBldmxpc3RlbmVyID0gZXZlbnRzW3R5cGVdO1xuICBpZiAoZXZsaXN0ZW5lciA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBbXTtcblxuICBpZiAodHlwZW9mIGV2bGlzdGVuZXIgPT09ICdmdW5jdGlvbicpXG4gICAgcmV0dXJuIHVud3JhcCA/IFtldmxpc3RlbmVyLmxpc3RlbmVyIHx8IGV2bGlzdGVuZXJdIDogW2V2bGlzdGVuZXJdO1xuXG4gIHJldHVybiB1bndyYXAgP1xuICAgIHVud3JhcExpc3RlbmVycyhldmxpc3RlbmVyKSA6IGFycmF5Q2xvbmUoZXZsaXN0ZW5lciwgZXZsaXN0ZW5lci5sZW5ndGgpO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uIGxpc3RlbmVycyh0eXBlKSB7XG4gIHJldHVybiBfbGlzdGVuZXJzKHRoaXMsIHR5cGUsIHRydWUpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yYXdMaXN0ZW5lcnMgPSBmdW5jdGlvbiByYXdMaXN0ZW5lcnModHlwZSkge1xuICByZXR1cm4gX2xpc3RlbmVycyh0aGlzLCB0eXBlLCBmYWxzZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIubGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uKGVtaXR0ZXIsIHR5cGUpIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLmxpc3RlbmVyQ291bnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZW1pdHRlci5saXN0ZW5lckNvdW50KHR5cGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsaXN0ZW5lckNvdW50LmNhbGwoZW1pdHRlciwgdHlwZSk7XG4gIH1cbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJDb3VudCA9IGxpc3RlbmVyQ291bnQ7XG5mdW5jdGlvbiBsaXN0ZW5lckNvdW50KHR5cGUpIHtcbiAgdmFyIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcblxuICBpZiAoZXZlbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICB2YXIgZXZsaXN0ZW5lciA9IGV2ZW50c1t0eXBlXTtcblxuICAgIGlmICh0eXBlb2YgZXZsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSBlbHNlIGlmIChldmxpc3RlbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBldmxpc3RlbmVyLmxlbmd0aDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5ldmVudE5hbWVzID0gZnVuY3Rpb24gZXZlbnROYW1lcygpIHtcbiAgcmV0dXJuIHRoaXMuX2V2ZW50c0NvdW50ID4gMCA/IFJlZmxlY3RPd25LZXlzKHRoaXMuX2V2ZW50cykgOiBbXTtcbn07XG5cbmZ1bmN0aW9uIGFycmF5Q2xvbmUoYXJyLCBuKSB7XG4gIHZhciBjb3B5ID0gbmV3IEFycmF5KG4pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsraSlcbiAgICBjb3B5W2ldID0gYXJyW2ldO1xuICByZXR1cm4gY29weTtcbn1cblxuZnVuY3Rpb24gc3BsaWNlT25lKGxpc3QsIGluZGV4KSB7XG4gIGZvciAoOyBpbmRleCArIDEgPCBsaXN0Lmxlbmd0aDsgaW5kZXgrKylcbiAgICBsaXN0W2luZGV4XSA9IGxpc3RbaW5kZXggKyAxXTtcbiAgbGlzdC5wb3AoKTtcbn1cblxuZnVuY3Rpb24gdW53cmFwTGlzdGVuZXJzKGFycikge1xuICB2YXIgcmV0ID0gbmV3IEFycmF5KGFyci5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHJldC5sZW5ndGg7ICsraSkge1xuICAgIHJldFtpXSA9IGFycltpXS5saXN0ZW5lciB8fCBhcnJbaV07XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gb25jZShlbWl0dGVyLCBuYW1lKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgZnVuY3Rpb24gZXJyb3JMaXN0ZW5lcihlcnIpIHtcbiAgICAgIGVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIobmFtZSwgcmVzb2x2ZXIpO1xuICAgICAgcmVqZWN0KGVycik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVzb2x2ZXIoKSB7XG4gICAgICBpZiAodHlwZW9mIGVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgZW1pdHRlci5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBlcnJvckxpc3RlbmVyKTtcbiAgICAgIH1cbiAgICAgIHJlc29sdmUoW10uc2xpY2UuY2FsbChhcmd1bWVudHMpKTtcbiAgICB9O1xuXG4gICAgZXZlbnRUYXJnZXRBZ25vc3RpY0FkZExpc3RlbmVyKGVtaXR0ZXIsIG5hbWUsIHJlc29sdmVyLCB7IG9uY2U6IHRydWUgfSk7XG4gICAgaWYgKG5hbWUgIT09ICdlcnJvcicpIHtcbiAgICAgIGFkZEVycm9ySGFuZGxlcklmRXZlbnRFbWl0dGVyKGVtaXR0ZXIsIGVycm9yTGlzdGVuZXIsIHsgb25jZTogdHJ1ZSB9KTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGRFcnJvckhhbmRsZXJJZkV2ZW50RW1pdHRlcihlbWl0dGVyLCBoYW5kbGVyLCBmbGFncykge1xuICBpZiAodHlwZW9mIGVtaXR0ZXIub24gPT09ICdmdW5jdGlvbicpIHtcbiAgICBldmVudFRhcmdldEFnbm9zdGljQWRkTGlzdGVuZXIoZW1pdHRlciwgJ2Vycm9yJywgaGFuZGxlciwgZmxhZ3MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGV2ZW50VGFyZ2V0QWdub3N0aWNBZGRMaXN0ZW5lcihlbWl0dGVyLCBuYW1lLCBsaXN0ZW5lciwgZmxhZ3MpIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLm9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKGZsYWdzLm9uY2UpIHtcbiAgICAgIGVtaXR0ZXIub25jZShuYW1lLCBsaXN0ZW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVtaXR0ZXIub24obmFtZSwgbGlzdGVuZXIpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgZW1pdHRlci5hZGRFdmVudExpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gRXZlbnRUYXJnZXQgZG9lcyBub3QgaGF2ZSBgZXJyb3JgIGV2ZW50IHNlbWFudGljcyBsaWtlIE5vZGVcbiAgICAvLyBFdmVudEVtaXR0ZXJzLCB3ZSBkbyBub3QgbGlzdGVuIGZvciBgZXJyb3JgIGV2ZW50cyBoZXJlLlxuICAgIGVtaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBmdW5jdGlvbiB3cmFwTGlzdGVuZXIoYXJnKSB7XG4gICAgICAvLyBJRSBkb2VzIG5vdCBoYXZlIGJ1aWx0aW4gYHsgb25jZTogdHJ1ZSB9YCBzdXBwb3J0IHNvIHdlXG4gICAgICAvLyBoYXZlIHRvIGRvIGl0IG1hbnVhbGx5LlxuICAgICAgaWYgKGZsYWdzLm9uY2UpIHtcbiAgICAgICAgZW1pdHRlci5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIHdyYXBMaXN0ZW5lcik7XG4gICAgICB9XG4gICAgICBsaXN0ZW5lcihhcmcpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImVtaXR0ZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRXZlbnRFbWl0dGVyLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgZW1pdHRlcik7XG4gIH1cbn1cbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIE1ENSA9IHJlcXVpcmUoJ21kNS5qcycpXG5cbi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuZnVuY3Rpb24gRVZQX0J5dGVzVG9LZXkgKHBhc3N3b3JkLCBzYWx0LCBrZXlCaXRzLCBpdkxlbikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihwYXNzd29yZCkpIHBhc3N3b3JkID0gQnVmZmVyLmZyb20ocGFzc3dvcmQsICdiaW5hcnknKVxuICBpZiAoc2FsdCkge1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKHNhbHQpKSBzYWx0ID0gQnVmZmVyLmZyb20oc2FsdCwgJ2JpbmFyeScpXG4gICAgaWYgKHNhbHQubGVuZ3RoICE9PSA4KSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc2FsdCBzaG91bGQgYmUgQnVmZmVyIHdpdGggOCBieXRlIGxlbmd0aCcpXG4gIH1cblxuICB2YXIga2V5TGVuID0ga2V5Qml0cyAvIDhcbiAgdmFyIGtleSA9IEJ1ZmZlci5hbGxvYyhrZXlMZW4pXG4gIHZhciBpdiA9IEJ1ZmZlci5hbGxvYyhpdkxlbiB8fCAwKVxuICB2YXIgdG1wID0gQnVmZmVyLmFsbG9jKDApXG5cbiAgd2hpbGUgKGtleUxlbiA+IDAgfHwgaXZMZW4gPiAwKSB7XG4gICAgdmFyIGhhc2ggPSBuZXcgTUQ1KClcbiAgICBoYXNoLnVwZGF0ZSh0bXApXG4gICAgaGFzaC51cGRhdGUocGFzc3dvcmQpXG4gICAgaWYgKHNhbHQpIGhhc2gudXBkYXRlKHNhbHQpXG4gICAgdG1wID0gaGFzaC5kaWdlc3QoKVxuXG4gICAgdmFyIHVzZWQgPSAwXG5cbiAgICBpZiAoa2V5TGVuID4gMCkge1xuICAgICAgdmFyIGtleVN0YXJ0ID0ga2V5Lmxlbmd0aCAtIGtleUxlblxuICAgICAgdXNlZCA9IE1hdGgubWluKGtleUxlbiwgdG1wLmxlbmd0aClcbiAgICAgIHRtcC5jb3B5KGtleSwga2V5U3RhcnQsIDAsIHVzZWQpXG4gICAgICBrZXlMZW4gLT0gdXNlZFxuICAgIH1cblxuICAgIGlmICh1c2VkIDwgdG1wLmxlbmd0aCAmJiBpdkxlbiA+IDApIHtcbiAgICAgIHZhciBpdlN0YXJ0ID0gaXYubGVuZ3RoIC0gaXZMZW5cbiAgICAgIHZhciBsZW5ndGggPSBNYXRoLm1pbihpdkxlbiwgdG1wLmxlbmd0aCAtIHVzZWQpXG4gICAgICB0bXAuY29weShpdiwgaXZTdGFydCwgdXNlZCwgdXNlZCArIGxlbmd0aClcbiAgICAgIGl2TGVuIC09IGxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIHRtcC5maWxsKDApXG4gIHJldHVybiB7IGtleToga2V5LCBpdjogaXYgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVWUF9CeXRlc1RvS2V5XG4iLCJcbnZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmb3JFYWNoIChvYmosIGZuLCBjdHgpIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChmbikgIT09ICdbb2JqZWN0IEZ1bmN0aW9uXScpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaXRlcmF0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuICAgIHZhciBsID0gb2JqLmxlbmd0aDtcbiAgICBpZiAobCA9PT0gK2wpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIGZuLmNhbGwoY3R4LCBvYmpbaV0sIGksIG9iaik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKHZhciBrIGluIG9iaikge1xuICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKG9iaiwgaykpIHtcbiAgICAgICAgICAgICAgICBmbi5jYWxsKGN0eCwgb2JqW2tdLCBrLCBvYmopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBlc2xpbnQgbm8taW52YWxpZC10aGlzOiAxICovXG5cbnZhciBFUlJPUl9NRVNTQUdFID0gJ0Z1bmN0aW9uLnByb3RvdHlwZS5iaW5kIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgJztcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgZnVuY1R5cGUgPSAnW29iamVjdCBGdW5jdGlvbl0nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGJpbmQodGhhdCkge1xuICAgIHZhciB0YXJnZXQgPSB0aGlzO1xuICAgIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAnZnVuY3Rpb24nIHx8IHRvU3RyLmNhbGwodGFyZ2V0KSAhPT0gZnVuY1R5cGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihFUlJPUl9NRVNTQUdFICsgdGFyZ2V0KTtcbiAgICB9XG4gICAgdmFyIGFyZ3MgPSBzbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG5cbiAgICB2YXIgYm91bmQ7XG4gICAgdmFyIGJpbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBib3VuZCkge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHRhcmdldC5hcHBseShcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIGFyZ3MuY29uY2F0KHNsaWNlLmNhbGwoYXJndW1lbnRzKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoT2JqZWN0KHJlc3VsdCkgPT09IHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0YXJnZXQuYXBwbHkoXG4gICAgICAgICAgICAgICAgdGhhdCxcbiAgICAgICAgICAgICAgICBhcmdzLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cykpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHZhciBib3VuZExlbmd0aCA9IE1hdGgubWF4KDAsIHRhcmdldC5sZW5ndGggLSBhcmdzLmxlbmd0aCk7XG4gICAgdmFyIGJvdW5kQXJncyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYm91bmRMZW5ndGg7IGkrKykge1xuICAgICAgICBib3VuZEFyZ3MucHVzaCgnJCcgKyBpKTtcbiAgICB9XG5cbiAgICBib3VuZCA9IEZ1bmN0aW9uKCdiaW5kZXInLCAncmV0dXJuIGZ1bmN0aW9uICgnICsgYm91bmRBcmdzLmpvaW4oJywnKSArICcpeyByZXR1cm4gYmluZGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsgfScpKGJpbmRlcik7XG5cbiAgICBpZiAodGFyZ2V0LnByb3RvdHlwZSkge1xuICAgICAgICB2YXIgRW1wdHkgPSBmdW5jdGlvbiBFbXB0eSgpIHt9O1xuICAgICAgICBFbXB0eS5wcm90b3R5cGUgPSB0YXJnZXQucHJvdG90eXBlO1xuICAgICAgICBib3VuZC5wcm90b3R5cGUgPSBuZXcgRW1wdHkoKTtcbiAgICAgICAgRW1wdHkucHJvdG90eXBlID0gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gYm91bmQ7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgfHwgaW1wbGVtZW50YXRpb247XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1bmRlZmluZWQ7XG5cbnZhciAkU3ludGF4RXJyb3IgPSBTeW50YXhFcnJvcjtcbnZhciAkRnVuY3Rpb24gPSBGdW5jdGlvbjtcbnZhciAkVHlwZUVycm9yID0gVHlwZUVycm9yO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbnZhciBnZXRFdmFsbGVkQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoZXhwcmVzc2lvblN5bnRheCkge1xuXHR0cnkge1xuXHRcdHJldHVybiAkRnVuY3Rpb24oJ1widXNlIHN0cmljdFwiOyByZXR1cm4gKCcgKyBleHByZXNzaW9uU3ludGF4ICsgJykuY29uc3RydWN0b3I7JykoKTtcblx0fSBjYXRjaCAoZSkge31cbn07XG5cbnZhciAkZ09QRCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5pZiAoJGdPUEQpIHtcblx0dHJ5IHtcblx0XHQkZ09QRCh7fSwgJycpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0JGdPUEQgPSBudWxsOyAvLyB0aGlzIGlzIElFIDgsIHdoaWNoIGhhcyBhIGJyb2tlbiBnT1BEXG5cdH1cbn1cblxudmFyIHRocm93VHlwZUVycm9yID0gZnVuY3Rpb24gKCkge1xuXHR0aHJvdyBuZXcgJFR5cGVFcnJvcigpO1xufTtcbnZhciBUaHJvd1R5cGVFcnJvciA9ICRnT1BEXG5cdD8gKGZ1bmN0aW9uICgpIHtcblx0XHR0cnkge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC1leHByZXNzaW9ucywgbm8tY2FsbGVyLCBuby1yZXN0cmljdGVkLXByb3BlcnRpZXNcblx0XHRcdGFyZ3VtZW50cy5jYWxsZWU7IC8vIElFIDggZG9lcyBub3QgdGhyb3cgaGVyZVxuXHRcdFx0cmV0dXJuIHRocm93VHlwZUVycm9yO1xuXHRcdH0gY2F0Y2ggKGNhbGxlZVRocm93cykge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Ly8gSUUgOCB0aHJvd3Mgb24gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcmd1bWVudHMsICcnKVxuXHRcdFx0XHRyZXR1cm4gJGdPUEQoYXJndW1lbnRzLCAnY2FsbGVlJykuZ2V0O1xuXHRcdFx0fSBjYXRjaCAoZ09QRHRocm93cykge1xuXHRcdFx0XHRyZXR1cm4gdGhyb3dUeXBlRXJyb3I7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KCkpXG5cdDogdGhyb3dUeXBlRXJyb3I7XG5cbnZhciBoYXNTeW1ib2xzID0gcmVxdWlyZSgnaGFzLXN5bWJvbHMnKSgpO1xuXG52YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHguX19wcm90b19fOyB9OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXByb3RvXG5cbnZhciBuZWVkc0V2YWwgPSB7fTtcblxudmFyIFR5cGVkQXJyYXkgPSB0eXBlb2YgVWludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBnZXRQcm90byhVaW50OEFycmF5KTtcblxudmFyIElOVFJJTlNJQ1MgPSB7XG5cdCclQWdncmVnYXRlRXJyb3IlJzogdHlwZW9mIEFnZ3JlZ2F0ZUVycm9yID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEFnZ3JlZ2F0ZUVycm9yLFxuXHQnJUFycmF5JSc6IEFycmF5LFxuXHQnJUFycmF5QnVmZmVyJSc6IHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBBcnJheUJ1ZmZlcixcblx0JyVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJSc6IGhhc1N5bWJvbHMgPyBnZXRQcm90byhbXVtTeW1ib2wuaXRlcmF0b3JdKCkpIDogdW5kZWZpbmVkLFxuXHQnJUFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSUnOiB1bmRlZmluZWQsXG5cdCclQXN5bmNGdW5jdGlvbiUnOiBuZWVkc0V2YWwsXG5cdCclQXN5bmNHZW5lcmF0b3IlJzogbmVlZHNFdmFsLFxuXHQnJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lJzogbmVlZHNFdmFsLFxuXHQnJUFzeW5jSXRlcmF0b3JQcm90b3R5cGUlJzogbmVlZHNFdmFsLFxuXHQnJUF0b21pY3MlJzogdHlwZW9mIEF0b21pY3MgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogQXRvbWljcyxcblx0JyVCaWdJbnQlJzogdHlwZW9mIEJpZ0ludCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBCaWdJbnQsXG5cdCclQm9vbGVhbiUnOiBCb29sZWFuLFxuXHQnJURhdGFWaWV3JSc6IHR5cGVvZiBEYXRhVmlldyA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBEYXRhVmlldyxcblx0JyVEYXRlJSc6IERhdGUsXG5cdCclZGVjb2RlVVJJJSc6IGRlY29kZVVSSSxcblx0JyVkZWNvZGVVUklDb21wb25lbnQlJzogZGVjb2RlVVJJQ29tcG9uZW50LFxuXHQnJWVuY29kZVVSSSUnOiBlbmNvZGVVUkksXG5cdCclZW5jb2RlVVJJQ29tcG9uZW50JSc6IGVuY29kZVVSSUNvbXBvbmVudCxcblx0JyVFcnJvciUnOiBFcnJvcixcblx0JyVldmFsJSc6IGV2YWwsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXZhbFxuXHQnJUV2YWxFcnJvciUnOiBFdmFsRXJyb3IsXG5cdCclRmxvYXQzMkFycmF5JSc6IHR5cGVvZiBGbG9hdDMyQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRmxvYXQzMkFycmF5LFxuXHQnJUZsb2F0NjRBcnJheSUnOiB0eXBlb2YgRmxvYXQ2NEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZsb2F0NjRBcnJheSxcblx0JyVGaW5hbGl6YXRpb25SZWdpc3RyeSUnOiB0eXBlb2YgRmluYWxpemF0aW9uUmVnaXN0cnkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRmluYWxpemF0aW9uUmVnaXN0cnksXG5cdCclRnVuY3Rpb24lJzogJEZ1bmN0aW9uLFxuXHQnJUdlbmVyYXRvckZ1bmN0aW9uJSc6IG5lZWRzRXZhbCxcblx0JyVJbnQ4QXJyYXklJzogdHlwZW9mIEludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBJbnQ4QXJyYXksXG5cdCclSW50MTZBcnJheSUnOiB0eXBlb2YgSW50MTZBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBJbnQxNkFycmF5LFxuXHQnJUludDMyQXJyYXklJzogdHlwZW9mIEludDMyQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogSW50MzJBcnJheSxcblx0JyVpc0Zpbml0ZSUnOiBpc0Zpbml0ZSxcblx0JyVpc05hTiUnOiBpc05hTixcblx0JyVJdGVyYXRvclByb3RvdHlwZSUnOiBoYXNTeW1ib2xzID8gZ2V0UHJvdG8oZ2V0UHJvdG8oW11bU3ltYm9sLml0ZXJhdG9yXSgpKSkgOiB1bmRlZmluZWQsXG5cdCclSlNPTiUnOiB0eXBlb2YgSlNPTiA9PT0gJ29iamVjdCcgPyBKU09OIDogdW5kZWZpbmVkLFxuXHQnJU1hcCUnOiB0eXBlb2YgTWFwID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IE1hcCxcblx0JyVNYXBJdGVyYXRvclByb3RvdHlwZSUnOiB0eXBlb2YgTWFwID09PSAndW5kZWZpbmVkJyB8fCAhaGFzU3ltYm9scyA/IHVuZGVmaW5lZCA6IGdldFByb3RvKG5ldyBNYXAoKVtTeW1ib2wuaXRlcmF0b3JdKCkpLFxuXHQnJU1hdGglJzogTWF0aCxcblx0JyVOdW1iZXIlJzogTnVtYmVyLFxuXHQnJU9iamVjdCUnOiBPYmplY3QsXG5cdCclcGFyc2VGbG9hdCUnOiBwYXJzZUZsb2F0LFxuXHQnJXBhcnNlSW50JSc6IHBhcnNlSW50LFxuXHQnJVByb21pc2UlJzogdHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogUHJvbWlzZSxcblx0JyVQcm94eSUnOiB0eXBlb2YgUHJveHkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogUHJveHksXG5cdCclUmFuZ2VFcnJvciUnOiBSYW5nZUVycm9yLFxuXHQnJVJlZmVyZW5jZUVycm9yJSc6IFJlZmVyZW5jZUVycm9yLFxuXHQnJVJlZmxlY3QlJzogdHlwZW9mIFJlZmxlY3QgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogUmVmbGVjdCxcblx0JyVSZWdFeHAlJzogUmVnRXhwLFxuXHQnJVNldCUnOiB0eXBlb2YgU2V0ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFNldCxcblx0JyVTZXRJdGVyYXRvclByb3RvdHlwZSUnOiB0eXBlb2YgU2V0ID09PSAndW5kZWZpbmVkJyB8fCAhaGFzU3ltYm9scyA/IHVuZGVmaW5lZCA6IGdldFByb3RvKG5ldyBTZXQoKVtTeW1ib2wuaXRlcmF0b3JdKCkpLFxuXHQnJVNoYXJlZEFycmF5QnVmZmVyJSc6IHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBTaGFyZWRBcnJheUJ1ZmZlcixcblx0JyVTdHJpbmclJzogU3RyaW5nLFxuXHQnJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJSc6IGhhc1N5bWJvbHMgPyBnZXRQcm90bygnJ1tTeW1ib2wuaXRlcmF0b3JdKCkpIDogdW5kZWZpbmVkLFxuXHQnJVN5bWJvbCUnOiBoYXNTeW1ib2xzID8gU3ltYm9sIDogdW5kZWZpbmVkLFxuXHQnJVN5bnRheEVycm9yJSc6ICRTeW50YXhFcnJvcixcblx0JyVUaHJvd1R5cGVFcnJvciUnOiBUaHJvd1R5cGVFcnJvcixcblx0JyVUeXBlZEFycmF5JSc6IFR5cGVkQXJyYXksXG5cdCclVHlwZUVycm9yJSc6ICRUeXBlRXJyb3IsXG5cdCclVWludDhBcnJheSUnOiB0eXBlb2YgVWludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50OEFycmF5LFxuXHQnJVVpbnQ4Q2xhbXBlZEFycmF5JSc6IHR5cGVvZiBVaW50OENsYW1wZWRBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50OENsYW1wZWRBcnJheSxcblx0JyVVaW50MTZBcnJheSUnOiB0eXBlb2YgVWludDE2QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDE2QXJyYXksXG5cdCclVWludDMyQXJyYXklJzogdHlwZW9mIFVpbnQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFVpbnQzMkFycmF5LFxuXHQnJVVSSUVycm9yJSc6IFVSSUVycm9yLFxuXHQnJVdlYWtNYXAlJzogdHlwZW9mIFdlYWtNYXAgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogV2Vha01hcCxcblx0JyVXZWFrUmVmJSc6IHR5cGVvZiBXZWFrUmVmID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFdlYWtSZWYsXG5cdCclV2Vha1NldCUnOiB0eXBlb2YgV2Vha1NldCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBXZWFrU2V0XG59O1xuXG52YXIgZG9FdmFsID0gZnVuY3Rpb24gZG9FdmFsKG5hbWUpIHtcblx0dmFyIHZhbHVlO1xuXHRpZiAobmFtZSA9PT0gJyVBc3luY0Z1bmN0aW9uJScpIHtcblx0XHR2YWx1ZSA9IGdldEV2YWxsZWRDb25zdHJ1Y3RvcignYXN5bmMgZnVuY3Rpb24gKCkge30nKTtcblx0fSBlbHNlIGlmIChuYW1lID09PSAnJUdlbmVyYXRvckZ1bmN0aW9uJScpIHtcblx0XHR2YWx1ZSA9IGdldEV2YWxsZWRDb25zdHJ1Y3RvcignZnVuY3Rpb24qICgpIHt9Jyk7XG5cdH0gZWxzZSBpZiAobmFtZSA9PT0gJyVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJScpIHtcblx0XHR2YWx1ZSA9IGdldEV2YWxsZWRDb25zdHJ1Y3RvcignYXN5bmMgZnVuY3Rpb24qICgpIHt9Jyk7XG5cdH0gZWxzZSBpZiAobmFtZSA9PT0gJyVBc3luY0dlbmVyYXRvciUnKSB7XG5cdFx0dmFyIGZuID0gZG9FdmFsKCclQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiUnKTtcblx0XHRpZiAoZm4pIHtcblx0XHRcdHZhbHVlID0gZm4ucHJvdG90eXBlO1xuXHRcdH1cblx0fSBlbHNlIGlmIChuYW1lID09PSAnJUFzeW5jSXRlcmF0b3JQcm90b3R5cGUlJykge1xuXHRcdHZhciBnZW4gPSBkb0V2YWwoJyVBc3luY0dlbmVyYXRvciUnKTtcblx0XHRpZiAoZ2VuKSB7XG5cdFx0XHR2YWx1ZSA9IGdldFByb3RvKGdlbi5wcm90b3R5cGUpO1xuXHRcdH1cblx0fVxuXG5cdElOVFJJTlNJQ1NbbmFtZV0gPSB2YWx1ZTtcblxuXHRyZXR1cm4gdmFsdWU7XG59O1xuXG52YXIgTEVHQUNZX0FMSUFTRVMgPSB7XG5cdCclQXJyYXlCdWZmZXJQcm90b3R5cGUlJzogWydBcnJheUJ1ZmZlcicsICdwcm90b3R5cGUnXSxcblx0JyVBcnJheVByb3RvdHlwZSUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUFycmF5UHJvdG9fZW50cmllcyUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZScsICdlbnRyaWVzJ10sXG5cdCclQXJyYXlQcm90b19mb3JFYWNoJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJywgJ2ZvckVhY2gnXSxcblx0JyVBcnJheVByb3RvX2tleXMlJzogWydBcnJheScsICdwcm90b3R5cGUnLCAna2V5cyddLFxuXHQnJUFycmF5UHJvdG9fdmFsdWVzJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJywgJ3ZhbHVlcyddLFxuXHQnJUFzeW5jRnVuY3Rpb25Qcm90b3R5cGUlJzogWydBc3luY0Z1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUFzeW5jR2VuZXJhdG9yJSc6IFsnQXN5bmNHZW5lcmF0b3JGdW5jdGlvbicsICdwcm90b3R5cGUnXSxcblx0JyVBc3luY0dlbmVyYXRvclByb3RvdHlwZSUnOiBbJ0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24nLCAncHJvdG90eXBlJywgJ3Byb3RvdHlwZSddLFxuXHQnJUJvb2xlYW5Qcm90b3R5cGUlJzogWydCb29sZWFuJywgJ3Byb3RvdHlwZSddLFxuXHQnJURhdGFWaWV3UHJvdG90eXBlJSc6IFsnRGF0YVZpZXcnLCAncHJvdG90eXBlJ10sXG5cdCclRGF0ZVByb3RvdHlwZSUnOiBbJ0RhdGUnLCAncHJvdG90eXBlJ10sXG5cdCclRXJyb3JQcm90b3R5cGUlJzogWydFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVFdmFsRXJyb3JQcm90b3R5cGUlJzogWydFdmFsRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclRmxvYXQzMkFycmF5UHJvdG90eXBlJSc6IFsnRmxvYXQzMkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUZsb2F0NjRBcnJheVByb3RvdHlwZSUnOiBbJ0Zsb2F0NjRBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVGdW5jdGlvblByb3RvdHlwZSUnOiBbJ0Z1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUdlbmVyYXRvciUnOiBbJ0dlbmVyYXRvckZ1bmN0aW9uJywgJ3Byb3RvdHlwZSddLFxuXHQnJUdlbmVyYXRvclByb3RvdHlwZSUnOiBbJ0dlbmVyYXRvckZ1bmN0aW9uJywgJ3Byb3RvdHlwZScsICdwcm90b3R5cGUnXSxcblx0JyVJbnQ4QXJyYXlQcm90b3R5cGUlJzogWydJbnQ4QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclSW50MTZBcnJheVByb3RvdHlwZSUnOiBbJ0ludDE2QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclSW50MzJBcnJheVByb3RvdHlwZSUnOiBbJ0ludDMyQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclSlNPTlBhcnNlJSc6IFsnSlNPTicsICdwYXJzZSddLFxuXHQnJUpTT05TdHJpbmdpZnklJzogWydKU09OJywgJ3N0cmluZ2lmeSddLFxuXHQnJU1hcFByb3RvdHlwZSUnOiBbJ01hcCcsICdwcm90b3R5cGUnXSxcblx0JyVOdW1iZXJQcm90b3R5cGUlJzogWydOdW1iZXInLCAncHJvdG90eXBlJ10sXG5cdCclT2JqZWN0UHJvdG90eXBlJSc6IFsnT2JqZWN0JywgJ3Byb3RvdHlwZSddLFxuXHQnJU9ialByb3RvX3RvU3RyaW5nJSc6IFsnT2JqZWN0JywgJ3Byb3RvdHlwZScsICd0b1N0cmluZyddLFxuXHQnJU9ialByb3RvX3ZhbHVlT2YlJzogWydPYmplY3QnLCAncHJvdG90eXBlJywgJ3ZhbHVlT2YnXSxcblx0JyVQcm9taXNlUHJvdG90eXBlJSc6IFsnUHJvbWlzZScsICdwcm90b3R5cGUnXSxcblx0JyVQcm9taXNlUHJvdG9fdGhlbiUnOiBbJ1Byb21pc2UnLCAncHJvdG90eXBlJywgJ3RoZW4nXSxcblx0JyVQcm9taXNlX2FsbCUnOiBbJ1Byb21pc2UnLCAnYWxsJ10sXG5cdCclUHJvbWlzZV9yZWplY3QlJzogWydQcm9taXNlJywgJ3JlamVjdCddLFxuXHQnJVByb21pc2VfcmVzb2x2ZSUnOiBbJ1Byb21pc2UnLCAncmVzb2x2ZSddLFxuXHQnJVJhbmdlRXJyb3JQcm90b3R5cGUlJzogWydSYW5nZUVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJVJlZmVyZW5jZUVycm9yUHJvdG90eXBlJSc6IFsnUmVmZXJlbmNlRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclUmVnRXhwUHJvdG90eXBlJSc6IFsnUmVnRXhwJywgJ3Byb3RvdHlwZSddLFxuXHQnJVNldFByb3RvdHlwZSUnOiBbJ1NldCcsICdwcm90b3R5cGUnXSxcblx0JyVTaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZSUnOiBbJ1NoYXJlZEFycmF5QnVmZmVyJywgJ3Byb3RvdHlwZSddLFxuXHQnJVN0cmluZ1Byb3RvdHlwZSUnOiBbJ1N0cmluZycsICdwcm90b3R5cGUnXSxcblx0JyVTeW1ib2xQcm90b3R5cGUlJzogWydTeW1ib2wnLCAncHJvdG90eXBlJ10sXG5cdCclU3ludGF4RXJyb3JQcm90b3R5cGUlJzogWydTeW50YXhFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVUeXBlZEFycmF5UHJvdG90eXBlJSc6IFsnVHlwZWRBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVUeXBlRXJyb3JQcm90b3R5cGUlJzogWydUeXBlRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclVWludDhBcnJheVByb3RvdHlwZSUnOiBbJ1VpbnQ4QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVWludDhDbGFtcGVkQXJyYXlQcm90b3R5cGUlJzogWydVaW50OENsYW1wZWRBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVVaW50MTZBcnJheVByb3RvdHlwZSUnOiBbJ1VpbnQxNkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJVVpbnQzMkFycmF5UHJvdG90eXBlJSc6IFsnVWludDMyQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVVJJRXJyb3JQcm90b3R5cGUlJzogWydVUklFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVXZWFrTWFwUHJvdG90eXBlJSc6IFsnV2Vha01hcCcsICdwcm90b3R5cGUnXSxcblx0JyVXZWFrU2V0UHJvdG90eXBlJSc6IFsnV2Vha1NldCcsICdwcm90b3R5cGUnXVxufTtcblxudmFyIGJpbmQgPSByZXF1aXJlKCdmdW5jdGlvbi1iaW5kJyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnaGFzJyk7XG52YXIgJGNvbmNhdCA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCBBcnJheS5wcm90b3R5cGUuY29uY2F0KTtcbnZhciAkc3BsaWNlQXBwbHkgPSBiaW5kLmNhbGwoRnVuY3Rpb24uYXBwbHksIEFycmF5LnByb3RvdHlwZS5zcGxpY2UpO1xudmFyICRyZXBsYWNlID0gYmluZC5jYWxsKEZ1bmN0aW9uLmNhbGwsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSk7XG52YXIgJHN0clNsaWNlID0gYmluZC5jYWxsKEZ1bmN0aW9uLmNhbGwsIFN0cmluZy5wcm90b3R5cGUuc2xpY2UpO1xuXG4vKiBhZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvYmxvYi80LjE3LjE1L2Rpc3QvbG9kYXNoLmpzI0w2NzM1LUw2NzQ0ICovXG52YXIgcmVQcm9wTmFtZSA9IC9bXiUuW1xcXV0rfFxcWyg/OigtP1xcZCsoPzpcXC5cXGQrKT8pfChbXCInXSkoKD86KD8hXFwyKVteXFxcXF18XFxcXC4pKj8pXFwyKVxcXXwoPz0oPzpcXC58XFxbXFxdKSg/OlxcLnxcXFtcXF18JSQpKS9nO1xudmFyIHJlRXNjYXBlQ2hhciA9IC9cXFxcKFxcXFwpPy9nOyAvKiogVXNlZCB0byBtYXRjaCBiYWNrc2xhc2hlcyBpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciBzdHJpbmdUb1BhdGggPSBmdW5jdGlvbiBzdHJpbmdUb1BhdGgoc3RyaW5nKSB7XG5cdHZhciBmaXJzdCA9ICRzdHJTbGljZShzdHJpbmcsIDAsIDEpO1xuXHR2YXIgbGFzdCA9ICRzdHJTbGljZShzdHJpbmcsIC0xKTtcblx0aWYgKGZpcnN0ID09PSAnJScgJiYgbGFzdCAhPT0gJyUnKSB7XG5cdFx0dGhyb3cgbmV3ICRTeW50YXhFcnJvcignaW52YWxpZCBpbnRyaW5zaWMgc3ludGF4LCBleHBlY3RlZCBjbG9zaW5nIGAlYCcpO1xuXHR9IGVsc2UgaWYgKGxhc3QgPT09ICclJyAmJiBmaXJzdCAhPT0gJyUnKSB7XG5cdFx0dGhyb3cgbmV3ICRTeW50YXhFcnJvcignaW52YWxpZCBpbnRyaW5zaWMgc3ludGF4LCBleHBlY3RlZCBvcGVuaW5nIGAlYCcpO1xuXHR9XG5cdHZhciByZXN1bHQgPSBbXTtcblx0JHJlcGxhY2Uoc3RyaW5nLCByZVByb3BOYW1lLCBmdW5jdGlvbiAobWF0Y2gsIG51bWJlciwgcXVvdGUsIHN1YlN0cmluZykge1xuXHRcdHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHF1b3RlID8gJHJlcGxhY2Uoc3ViU3RyaW5nLCByZUVzY2FwZUNoYXIsICckMScpIDogbnVtYmVyIHx8IG1hdGNoO1xuXHR9KTtcblx0cmV0dXJuIHJlc3VsdDtcbn07XG4vKiBlbmQgYWRhcHRhdGlvbiAqL1xuXG52YXIgZ2V0QmFzZUludHJpbnNpYyA9IGZ1bmN0aW9uIGdldEJhc2VJbnRyaW5zaWMobmFtZSwgYWxsb3dNaXNzaW5nKSB7XG5cdHZhciBpbnRyaW5zaWNOYW1lID0gbmFtZTtcblx0dmFyIGFsaWFzO1xuXHRpZiAoaGFzT3duKExFR0FDWV9BTElBU0VTLCBpbnRyaW5zaWNOYW1lKSkge1xuXHRcdGFsaWFzID0gTEVHQUNZX0FMSUFTRVNbaW50cmluc2ljTmFtZV07XG5cdFx0aW50cmluc2ljTmFtZSA9ICclJyArIGFsaWFzWzBdICsgJyUnO1xuXHR9XG5cblx0aWYgKGhhc093bihJTlRSSU5TSUNTLCBpbnRyaW5zaWNOYW1lKSkge1xuXHRcdHZhciB2YWx1ZSA9IElOVFJJTlNJQ1NbaW50cmluc2ljTmFtZV07XG5cdFx0aWYgKHZhbHVlID09PSBuZWVkc0V2YWwpIHtcblx0XHRcdHZhbHVlID0gZG9FdmFsKGludHJpbnNpY05hbWUpO1xuXHRcdH1cblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJyAmJiAhYWxsb3dNaXNzaW5nKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignaW50cmluc2ljICcgKyBuYW1lICsgJyBleGlzdHMsIGJ1dCBpcyBub3QgYXZhaWxhYmxlLiBQbGVhc2UgZmlsZSBhbiBpc3N1ZSEnKTtcblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0YWxpYXM6IGFsaWFzLFxuXHRcdFx0bmFtZTogaW50cmluc2ljTmFtZSxcblx0XHRcdHZhbHVlOiB2YWx1ZVxuXHRcdH07XG5cdH1cblxuXHR0aHJvdyBuZXcgJFN5bnRheEVycm9yKCdpbnRyaW5zaWMgJyArIG5hbWUgKyAnIGRvZXMgbm90IGV4aXN0IScpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBHZXRJbnRyaW5zaWMobmFtZSwgYWxsb3dNaXNzaW5nKSB7XG5cdGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycgfHwgbmFtZS5sZW5ndGggPT09IDApIHtcblx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignaW50cmluc2ljIG5hbWUgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnKTtcblx0fVxuXHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlwZW9mIGFsbG93TWlzc2luZyAhPT0gJ2Jvb2xlYW4nKSB7XG5cdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ1wiYWxsb3dNaXNzaW5nXCIgYXJndW1lbnQgbXVzdCBiZSBhIGJvb2xlYW4nKTtcblx0fVxuXG5cdHZhciBwYXJ0cyA9IHN0cmluZ1RvUGF0aChuYW1lKTtcblx0dmFyIGludHJpbnNpY0Jhc2VOYW1lID0gcGFydHMubGVuZ3RoID4gMCA/IHBhcnRzWzBdIDogJyc7XG5cblx0dmFyIGludHJpbnNpYyA9IGdldEJhc2VJbnRyaW5zaWMoJyUnICsgaW50cmluc2ljQmFzZU5hbWUgKyAnJScsIGFsbG93TWlzc2luZyk7XG5cdHZhciBpbnRyaW5zaWNSZWFsTmFtZSA9IGludHJpbnNpYy5uYW1lO1xuXHR2YXIgdmFsdWUgPSBpbnRyaW5zaWMudmFsdWU7XG5cdHZhciBza2lwRnVydGhlckNhY2hpbmcgPSBmYWxzZTtcblxuXHR2YXIgYWxpYXMgPSBpbnRyaW5zaWMuYWxpYXM7XG5cdGlmIChhbGlhcykge1xuXHRcdGludHJpbnNpY0Jhc2VOYW1lID0gYWxpYXNbMF07XG5cdFx0JHNwbGljZUFwcGx5KHBhcnRzLCAkY29uY2F0KFswLCAxXSwgYWxpYXMpKTtcblx0fVxuXG5cdGZvciAodmFyIGkgPSAxLCBpc093biA9IHRydWU7IGkgPCBwYXJ0cy5sZW5ndGg7IGkgKz0gMSkge1xuXHRcdHZhciBwYXJ0ID0gcGFydHNbaV07XG5cdFx0dmFyIGZpcnN0ID0gJHN0clNsaWNlKHBhcnQsIDAsIDEpO1xuXHRcdHZhciBsYXN0ID0gJHN0clNsaWNlKHBhcnQsIC0xKTtcblx0XHRpZiAoXG5cdFx0XHQoXG5cdFx0XHRcdChmaXJzdCA9PT0gJ1wiJyB8fCBmaXJzdCA9PT0gXCInXCIgfHwgZmlyc3QgPT09ICdgJylcblx0XHRcdFx0fHwgKGxhc3QgPT09ICdcIicgfHwgbGFzdCA9PT0gXCInXCIgfHwgbGFzdCA9PT0gJ2AnKVxuXHRcdFx0KVxuXHRcdFx0JiYgZmlyc3QgIT09IGxhc3Rcblx0XHQpIHtcblx0XHRcdHRocm93IG5ldyAkU3ludGF4RXJyb3IoJ3Byb3BlcnR5IG5hbWVzIHdpdGggcXVvdGVzIG11c3QgaGF2ZSBtYXRjaGluZyBxdW90ZXMnKTtcblx0XHR9XG5cdFx0aWYgKHBhcnQgPT09ICdjb25zdHJ1Y3RvcicgfHwgIWlzT3duKSB7XG5cdFx0XHRza2lwRnVydGhlckNhY2hpbmcgPSB0cnVlO1xuXHRcdH1cblxuXHRcdGludHJpbnNpY0Jhc2VOYW1lICs9ICcuJyArIHBhcnQ7XG5cdFx0aW50cmluc2ljUmVhbE5hbWUgPSAnJScgKyBpbnRyaW5zaWNCYXNlTmFtZSArICclJztcblxuXHRcdGlmIChoYXNPd24oSU5UUklOU0lDUywgaW50cmluc2ljUmVhbE5hbWUpKSB7XG5cdFx0XHR2YWx1ZSA9IElOVFJJTlNJQ1NbaW50cmluc2ljUmVhbE5hbWVdO1xuXHRcdH0gZWxzZSBpZiAodmFsdWUgIT0gbnVsbCkge1xuXHRcdFx0aWYgKCEocGFydCBpbiB2YWx1ZSkpIHtcblx0XHRcdFx0aWYgKCFhbGxvd01pc3NpbmcpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignYmFzZSBpbnRyaW5zaWMgZm9yICcgKyBuYW1lICsgJyBleGlzdHMsIGJ1dCB0aGUgcHJvcGVydHkgaXMgbm90IGF2YWlsYWJsZS4nKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gdm9pZCB1bmRlZmluZWQ7XG5cdFx0XHR9XG5cdFx0XHRpZiAoJGdPUEQgJiYgKGkgKyAxKSA+PSBwYXJ0cy5sZW5ndGgpIHtcblx0XHRcdFx0dmFyIGRlc2MgPSAkZ09QRCh2YWx1ZSwgcGFydCk7XG5cdFx0XHRcdGlzT3duID0gISFkZXNjO1xuXG5cdFx0XHRcdC8vIEJ5IGNvbnZlbnRpb24sIHdoZW4gYSBkYXRhIHByb3BlcnR5IGlzIGNvbnZlcnRlZCB0byBhbiBhY2Nlc3NvclxuXHRcdFx0XHQvLyBwcm9wZXJ0eSB0byBlbXVsYXRlIGEgZGF0YSBwcm9wZXJ0eSB0aGF0IGRvZXMgbm90IHN1ZmZlciBmcm9tXG5cdFx0XHRcdC8vIHRoZSBvdmVycmlkZSBtaXN0YWtlLCB0aGF0IGFjY2Vzc29yJ3MgZ2V0dGVyIGlzIG1hcmtlZCB3aXRoXG5cdFx0XHRcdC8vIGFuIGBvcmlnaW5hbFZhbHVlYCBwcm9wZXJ0eS4gSGVyZSwgd2hlbiB3ZSBkZXRlY3QgdGhpcywgd2Vcblx0XHRcdFx0Ly8gdXBob2xkIHRoZSBpbGx1c2lvbiBieSBwcmV0ZW5kaW5nIHRvIHNlZSB0aGF0IG9yaWdpbmFsIGRhdGFcblx0XHRcdFx0Ly8gcHJvcGVydHksIGkuZS4sIHJldHVybmluZyB0aGUgdmFsdWUgcmF0aGVyIHRoYW4gdGhlIGdldHRlclxuXHRcdFx0XHQvLyBpdHNlbGYuXG5cdFx0XHRcdGlmIChpc093biAmJiAnZ2V0JyBpbiBkZXNjICYmICEoJ29yaWdpbmFsVmFsdWUnIGluIGRlc2MuZ2V0KSkge1xuXHRcdFx0XHRcdHZhbHVlID0gZGVzYy5nZXQ7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dmFsdWUgPSB2YWx1ZVtwYXJ0XTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aXNPd24gPSBoYXNPd24odmFsdWUsIHBhcnQpO1xuXHRcdFx0XHR2YWx1ZSA9IHZhbHVlW3BhcnRdO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaXNPd24gJiYgIXNraXBGdXJ0aGVyQ2FjaGluZykge1xuXHRcdFx0XHRJTlRSSU5TSUNTW2ludHJpbnNpY1JlYWxOYW1lXSA9IHZhbHVlO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gdmFsdWU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgb3JpZ1N5bWJvbCA9IHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbDtcbnZhciBoYXNTeW1ib2xTaGFtID0gcmVxdWlyZSgnLi9zaGFtcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGhhc05hdGl2ZVN5bWJvbHMoKSB7XG5cdGlmICh0eXBlb2Ygb3JpZ1N5bWJvbCAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm4gZmFsc2U7IH1cblx0aWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICh0eXBlb2Ygb3JpZ1N5bWJvbCgnZm9vJykgIT09ICdzeW1ib2wnKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAodHlwZW9mIFN5bWJvbCgnYmFyJykgIT09ICdzeW1ib2wnKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdHJldHVybiBoYXNTeW1ib2xTaGFtKCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBlc2xpbnQgY29tcGxleGl0eTogWzIsIDE4XSwgbWF4LXN0YXRlbWVudHM6IFsyLCAzM10gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaGFzU3ltYm9scygpIHtcblx0aWYgKHR5cGVvZiBTeW1ib2wgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICh0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSAnc3ltYm9sJykgeyByZXR1cm4gdHJ1ZTsgfVxuXG5cdHZhciBvYmogPSB7fTtcblx0dmFyIHN5bSA9IFN5bWJvbCgndGVzdCcpO1xuXHR2YXIgc3ltT2JqID0gT2JqZWN0KHN5bSk7XG5cdGlmICh0eXBlb2Ygc3ltID09PSAnc3RyaW5nJykgeyByZXR1cm4gZmFsc2U7IH1cblxuXHRpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHN5bSkgIT09ICdbb2JqZWN0IFN5bWJvbF0nKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHN5bU9iaikgIT09ICdbb2JqZWN0IFN5bWJvbF0nKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdC8vIHRlbXAgZGlzYWJsZWQgcGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9samhhcmIvb2JqZWN0LmFzc2lnbi9pc3N1ZXMvMTdcblx0Ly8gaWYgKHN5bSBpbnN0YW5jZW9mIFN5bWJvbCkgeyByZXR1cm4gZmFsc2U7IH1cblx0Ly8gdGVtcCBkaXNhYmxlZCBwZXIgaHR0cHM6Ly9naXRodWIuY29tL1dlYlJlZmxlY3Rpb24vZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzL2lzc3Vlcy80XG5cdC8vIGlmICghKHN5bU9iaiBpbnN0YW5jZW9mIFN5bWJvbCkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0Ly8gaWYgKHR5cGVvZiBTeW1ib2wucHJvdG90eXBlLnRvU3RyaW5nICE9PSAnZnVuY3Rpb24nKSB7IHJldHVybiBmYWxzZTsgfVxuXHQvLyBpZiAoU3RyaW5nKHN5bSkgIT09IFN5bWJvbC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzeW0pKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdHZhciBzeW1WYWwgPSA0Mjtcblx0b2JqW3N5bV0gPSBzeW1WYWw7XG5cdGZvciAoc3ltIGluIG9iaikgeyByZXR1cm4gZmFsc2U7IH0gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1yZXN0cmljdGVkLXN5bnRheCwgbm8tdW5yZWFjaGFibGUtbG9vcFxuXHRpZiAodHlwZW9mIE9iamVjdC5rZXlzID09PSAnZnVuY3Rpb24nICYmIE9iamVjdC5rZXlzKG9iaikubGVuZ3RoICE9PSAwKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdGlmICh0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgPT09ICdmdW5jdGlvbicgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqKS5sZW5ndGggIT09IDApIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0dmFyIHN5bXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKG9iaik7XG5cdGlmIChzeW1zLmxlbmd0aCAhPT0gMSB8fCBzeW1zWzBdICE9PSBzeW0pIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0aWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwob2JqLCBzeW0pKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdGlmICh0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdHZhciBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIHN5bSk7XG5cdFx0aWYgKGRlc2NyaXB0b3IudmFsdWUgIT09IHN5bVZhbCB8fCBkZXNjcmlwdG9yLmVudW1lcmFibGUgIT09IHRydWUpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdH1cblxuXHRyZXR1cm4gdHJ1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnZnVuY3Rpb24tYmluZCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcbiIsIid1c2Ugc3RyaWN0J1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtJykuVHJhbnNmb3JtXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbmZ1bmN0aW9uIHRocm93SWZOb3RTdHJpbmdPckJ1ZmZlciAodmFsLCBwcmVmaXgpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodmFsKSAmJiB0eXBlb2YgdmFsICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocHJlZml4ICsgJyBtdXN0IGJlIGEgc3RyaW5nIG9yIGEgYnVmZmVyJylcbiAgfVxufVxuXG5mdW5jdGlvbiBIYXNoQmFzZSAoYmxvY2tTaXplKSB7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG5cbiAgdGhpcy5fYmxvY2sgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYmxvY2tTaXplKVxuICB0aGlzLl9ibG9ja1NpemUgPSBibG9ja1NpemVcbiAgdGhpcy5fYmxvY2tPZmZzZXQgPSAwXG4gIHRoaXMuX2xlbmd0aCA9IFswLCAwLCAwLCAwXVxuXG4gIHRoaXMuX2ZpbmFsaXplZCA9IGZhbHNlXG59XG5cbmluaGVyaXRzKEhhc2hCYXNlLCBUcmFuc2Zvcm0pXG5cbkhhc2hCYXNlLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2FsbGJhY2spIHtcbiAgdmFyIGVycm9yID0gbnVsbFxuICB0cnkge1xuICAgIHRoaXMudXBkYXRlKGNodW5rLCBlbmNvZGluZylcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZXJyb3IgPSBlcnJcbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9yKVxufVxuXG5IYXNoQmFzZS5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHZhciBlcnJvciA9IG51bGxcbiAgdHJ5IHtcbiAgICB0aGlzLnB1c2godGhpcy5kaWdlc3QoKSlcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZXJyb3IgPSBlcnJcbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9yKVxufVxuXG5IYXNoQmFzZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuY29kaW5nKSB7XG4gIHRocm93SWZOb3RTdHJpbmdPckJ1ZmZlcihkYXRhLCAnRGF0YScpXG4gIGlmICh0aGlzLl9maW5hbGl6ZWQpIHRocm93IG5ldyBFcnJvcignRGlnZXN0IGFscmVhZHkgY2FsbGVkJylcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoZGF0YSkpIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBlbmNvZGluZylcblxuICAvLyBjb25zdW1lIGRhdGFcbiAgdmFyIGJsb2NrID0gdGhpcy5fYmxvY2tcbiAgdmFyIG9mZnNldCA9IDBcbiAgd2hpbGUgKHRoaXMuX2Jsb2NrT2Zmc2V0ICsgZGF0YS5sZW5ndGggLSBvZmZzZXQgPj0gdGhpcy5fYmxvY2tTaXplKSB7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMuX2Jsb2NrT2Zmc2V0OyBpIDwgdGhpcy5fYmxvY2tTaXplOykgYmxvY2tbaSsrXSA9IGRhdGFbb2Zmc2V0KytdXG4gICAgdGhpcy5fdXBkYXRlKClcbiAgICB0aGlzLl9ibG9ja09mZnNldCA9IDBcbiAgfVxuICB3aGlsZSAob2Zmc2V0IDwgZGF0YS5sZW5ndGgpIGJsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdID0gZGF0YVtvZmZzZXQrK11cblxuICAvLyB1cGRhdGUgbGVuZ3RoXG4gIGZvciAodmFyIGogPSAwLCBjYXJyeSA9IGRhdGEubGVuZ3RoICogODsgY2FycnkgPiAwOyArK2opIHtcbiAgICB0aGlzLl9sZW5ndGhbal0gKz0gY2FycnlcbiAgICBjYXJyeSA9ICh0aGlzLl9sZW5ndGhbal0gLyAweDAxMDAwMDAwMDApIHwgMFxuICAgIGlmIChjYXJyeSA+IDApIHRoaXMuX2xlbmd0aFtqXSAtPSAweDAxMDAwMDAwMDAgKiBjYXJyeVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuSGFzaEJhc2UucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignX3VwZGF0ZSBpcyBub3QgaW1wbGVtZW50ZWQnKVxufVxuXG5IYXNoQmFzZS5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gKGVuY29kaW5nKSB7XG4gIGlmICh0aGlzLl9maW5hbGl6ZWQpIHRocm93IG5ldyBFcnJvcignRGlnZXN0IGFscmVhZHkgY2FsbGVkJylcbiAgdGhpcy5fZmluYWxpemVkID0gdHJ1ZVxuXG4gIHZhciBkaWdlc3QgPSB0aGlzLl9kaWdlc3QoKVxuICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCkgZGlnZXN0ID0gZGlnZXN0LnRvU3RyaW5nKGVuY29kaW5nKVxuXG4gIC8vIHJlc2V0IHN0YXRlXG4gIHRoaXMuX2Jsb2NrLmZpbGwoMClcbiAgdGhpcy5fYmxvY2tPZmZzZXQgPSAwXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgKytpKSB0aGlzLl9sZW5ndGhbaV0gPSAwXG5cbiAgcmV0dXJuIGRpZ2VzdFxufVxuXG5IYXNoQmFzZS5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdfZGlnZXN0IGlzIG5vdCBpbXBsZW1lbnRlZCcpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaEJhc2VcbiIsInZhciBoYXNoID0gZXhwb3J0cztcblxuaGFzaC51dGlscyA9IHJlcXVpcmUoJy4vaGFzaC91dGlscycpO1xuaGFzaC5jb21tb24gPSByZXF1aXJlKCcuL2hhc2gvY29tbW9uJyk7XG5oYXNoLnNoYSA9IHJlcXVpcmUoJy4vaGFzaC9zaGEnKTtcbmhhc2gucmlwZW1kID0gcmVxdWlyZSgnLi9oYXNoL3JpcGVtZCcpO1xuaGFzaC5obWFjID0gcmVxdWlyZSgnLi9oYXNoL2htYWMnKTtcblxuLy8gUHJveHkgaGFzaCBmdW5jdGlvbnMgdG8gdGhlIG1haW4gb2JqZWN0XG5oYXNoLnNoYTEgPSBoYXNoLnNoYS5zaGExO1xuaGFzaC5zaGEyNTYgPSBoYXNoLnNoYS5zaGEyNTY7XG5oYXNoLnNoYTIyNCA9IGhhc2guc2hhLnNoYTIyNDtcbmhhc2guc2hhMzg0ID0gaGFzaC5zaGEuc2hhMzg0O1xuaGFzaC5zaGE1MTIgPSBoYXNoLnNoYS5zaGE1MTI7XG5oYXNoLnJpcGVtZDE2MCA9IGhhc2gucmlwZW1kLnJpcGVtZDE2MDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxuZnVuY3Rpb24gQmxvY2tIYXNoKCkge1xuICB0aGlzLnBlbmRpbmcgPSBudWxsO1xuICB0aGlzLnBlbmRpbmdUb3RhbCA9IDA7XG4gIHRoaXMuYmxvY2tTaXplID0gdGhpcy5jb25zdHJ1Y3Rvci5ibG9ja1NpemU7XG4gIHRoaXMub3V0U2l6ZSA9IHRoaXMuY29uc3RydWN0b3Iub3V0U2l6ZTtcbiAgdGhpcy5obWFjU3RyZW5ndGggPSB0aGlzLmNvbnN0cnVjdG9yLmhtYWNTdHJlbmd0aDtcbiAgdGhpcy5wYWRMZW5ndGggPSB0aGlzLmNvbnN0cnVjdG9yLnBhZExlbmd0aCAvIDg7XG4gIHRoaXMuZW5kaWFuID0gJ2JpZyc7XG5cbiAgdGhpcy5fZGVsdGE4ID0gdGhpcy5ibG9ja1NpemUgLyA4O1xuICB0aGlzLl9kZWx0YTMyID0gdGhpcy5ibG9ja1NpemUgLyAzMjtcbn1cbmV4cG9ydHMuQmxvY2tIYXNoID0gQmxvY2tIYXNoO1xuXG5CbG9ja0hhc2gucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShtc2csIGVuYykge1xuICAvLyBDb252ZXJ0IG1lc3NhZ2UgdG8gYXJyYXksIHBhZCBpdCwgYW5kIGpvaW4gaW50byAzMmJpdCBibG9ja3NcbiAgbXNnID0gdXRpbHMudG9BcnJheShtc2csIGVuYyk7XG4gIGlmICghdGhpcy5wZW5kaW5nKVxuICAgIHRoaXMucGVuZGluZyA9IG1zZztcbiAgZWxzZVxuICAgIHRoaXMucGVuZGluZyA9IHRoaXMucGVuZGluZy5jb25jYXQobXNnKTtcbiAgdGhpcy5wZW5kaW5nVG90YWwgKz0gbXNnLmxlbmd0aDtcblxuICAvLyBFbm91Z2ggZGF0YSwgdHJ5IHVwZGF0aW5nXG4gIGlmICh0aGlzLnBlbmRpbmcubGVuZ3RoID49IHRoaXMuX2RlbHRhOCkge1xuICAgIG1zZyA9IHRoaXMucGVuZGluZztcblxuICAgIC8vIFByb2Nlc3MgcGVuZGluZyBkYXRhIGluIGJsb2Nrc1xuICAgIHZhciByID0gbXNnLmxlbmd0aCAlIHRoaXMuX2RlbHRhODtcbiAgICB0aGlzLnBlbmRpbmcgPSBtc2cuc2xpY2UobXNnLmxlbmd0aCAtIHIsIG1zZy5sZW5ndGgpO1xuICAgIGlmICh0aGlzLnBlbmRpbmcubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5wZW5kaW5nID0gbnVsbDtcblxuICAgIG1zZyA9IHV0aWxzLmpvaW4zMihtc2csIDAsIG1zZy5sZW5ndGggLSByLCB0aGlzLmVuZGlhbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpICs9IHRoaXMuX2RlbHRhMzIpXG4gICAgICB0aGlzLl91cGRhdGUobXNnLCBpLCBpICsgdGhpcy5fZGVsdGEzMik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkJsb2NrSGFzaC5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICB0aGlzLnVwZGF0ZSh0aGlzLl9wYWQoKSk7XG4gIGFzc2VydCh0aGlzLnBlbmRpbmcgPT09IG51bGwpO1xuXG4gIHJldHVybiB0aGlzLl9kaWdlc3QoZW5jKTtcbn07XG5cbkJsb2NrSGFzaC5wcm90b3R5cGUuX3BhZCA9IGZ1bmN0aW9uIHBhZCgpIHtcbiAgdmFyIGxlbiA9IHRoaXMucGVuZGluZ1RvdGFsO1xuICB2YXIgYnl0ZXMgPSB0aGlzLl9kZWx0YTg7XG4gIHZhciBrID0gYnl0ZXMgLSAoKGxlbiArIHRoaXMucGFkTGVuZ3RoKSAlIGJ5dGVzKTtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShrICsgdGhpcy5wYWRMZW5ndGgpO1xuICByZXNbMF0gPSAweDgwO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGs7IGkrKylcbiAgICByZXNbaV0gPSAwO1xuXG4gIC8vIEFwcGVuZCBsZW5ndGhcbiAgbGVuIDw8PSAzO1xuICBpZiAodGhpcy5lbmRpYW4gPT09ICdiaWcnKSB7XG4gICAgZm9yICh2YXIgdCA9IDg7IHQgPCB0aGlzLnBhZExlbmd0aDsgdCsrKVxuICAgICAgcmVzW2krK10gPSAwO1xuXG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMjQpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDE2KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiA4KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSBsZW4gJiAweGZmO1xuICB9IGVsc2Uge1xuICAgIHJlc1tpKytdID0gbGVuICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDgpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDE2KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAyNCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcblxuICAgIGZvciAodCA9IDg7IHQgPCB0aGlzLnBhZExlbmd0aDsgdCsrKVxuICAgICAgcmVzW2krK10gPSAwO1xuICB9XG5cbiAgcmV0dXJuIHJlcztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbmZ1bmN0aW9uIEhtYWMoaGFzaCwga2V5LCBlbmMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEhtYWMpKVxuICAgIHJldHVybiBuZXcgSG1hYyhoYXNoLCBrZXksIGVuYyk7XG4gIHRoaXMuSGFzaCA9IGhhc2g7XG4gIHRoaXMuYmxvY2tTaXplID0gaGFzaC5ibG9ja1NpemUgLyA4O1xuICB0aGlzLm91dFNpemUgPSBoYXNoLm91dFNpemUgLyA4O1xuICB0aGlzLmlubmVyID0gbnVsbDtcbiAgdGhpcy5vdXRlciA9IG51bGw7XG5cbiAgdGhpcy5faW5pdCh1dGlscy50b0FycmF5KGtleSwgZW5jKSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEhtYWM7XG5cbkhtYWMucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdChrZXkpIHtcbiAgLy8gU2hvcnRlbiBrZXksIGlmIG5lZWRlZFxuICBpZiAoa2V5Lmxlbmd0aCA+IHRoaXMuYmxvY2tTaXplKVxuICAgIGtleSA9IG5ldyB0aGlzLkhhc2goKS51cGRhdGUoa2V5KS5kaWdlc3QoKTtcbiAgYXNzZXJ0KGtleS5sZW5ndGggPD0gdGhpcy5ibG9ja1NpemUpO1xuXG4gIC8vIEFkZCBwYWRkaW5nIHRvIGtleVxuICBmb3IgKHZhciBpID0ga2V5Lmxlbmd0aDsgaSA8IHRoaXMuYmxvY2tTaXplOyBpKyspXG4gICAga2V5LnB1c2goMCk7XG5cbiAgZm9yIChpID0gMDsgaSA8IGtleS5sZW5ndGg7IGkrKylcbiAgICBrZXlbaV0gXj0gMHgzNjtcbiAgdGhpcy5pbm5lciA9IG5ldyB0aGlzLkhhc2goKS51cGRhdGUoa2V5KTtcblxuICAvLyAweDM2IF4gMHg1YyA9IDB4NmFcbiAgZm9yIChpID0gMDsgaSA8IGtleS5sZW5ndGg7IGkrKylcbiAgICBrZXlbaV0gXj0gMHg2YTtcbiAgdGhpcy5vdXRlciA9IG5ldyB0aGlzLkhhc2goKS51cGRhdGUoa2V5KTtcbn07XG5cbkhtYWMucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShtc2csIGVuYykge1xuICB0aGlzLmlubmVyLnVwZGF0ZShtc2csIGVuYyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuSG1hYy5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICB0aGlzLm91dGVyLnVwZGF0ZSh0aGlzLmlubmVyLmRpZ2VzdCgpKTtcbiAgcmV0dXJuIHRoaXMub3V0ZXIuZGlnZXN0KGVuYyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi9jb21tb24nKTtcblxudmFyIHJvdGwzMiA9IHV0aWxzLnJvdGwzMjtcbnZhciBzdW0zMiA9IHV0aWxzLnN1bTMyO1xudmFyIHN1bTMyXzMgPSB1dGlscy5zdW0zMl8zO1xudmFyIHN1bTMyXzQgPSB1dGlscy5zdW0zMl80O1xudmFyIEJsb2NrSGFzaCA9IGNvbW1vbi5CbG9ja0hhc2g7XG5cbmZ1bmN0aW9uIFJJUEVNRDE2MCgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJJUEVNRDE2MCkpXG4gICAgcmV0dXJuIG5ldyBSSVBFTUQxNjAoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcblxuICB0aGlzLmggPSBbIDB4Njc0NTIzMDEsIDB4ZWZjZGFiODksIDB4OThiYWRjZmUsIDB4MTAzMjU0NzYsIDB4YzNkMmUxZjAgXTtcbiAgdGhpcy5lbmRpYW4gPSAnbGl0dGxlJztcbn1cbnV0aWxzLmluaGVyaXRzKFJJUEVNRDE2MCwgQmxvY2tIYXNoKTtcbmV4cG9ydHMucmlwZW1kMTYwID0gUklQRU1EMTYwO1xuXG5SSVBFTUQxNjAuYmxvY2tTaXplID0gNTEyO1xuUklQRU1EMTYwLm91dFNpemUgPSAxNjA7XG5SSVBFTUQxNjAuaG1hY1N0cmVuZ3RoID0gMTkyO1xuUklQRU1EMTYwLnBhZExlbmd0aCA9IDY0O1xuXG5SSVBFTUQxNjAucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgQSA9IHRoaXMuaFswXTtcbiAgdmFyIEIgPSB0aGlzLmhbMV07XG4gIHZhciBDID0gdGhpcy5oWzJdO1xuICB2YXIgRCA9IHRoaXMuaFszXTtcbiAgdmFyIEUgPSB0aGlzLmhbNF07XG4gIHZhciBBaCA9IEE7XG4gIHZhciBCaCA9IEI7XG4gIHZhciBDaCA9IEM7XG4gIHZhciBEaCA9IEQ7XG4gIHZhciBFaCA9IEU7XG4gIGZvciAodmFyIGogPSAwOyBqIDwgODA7IGorKykge1xuICAgIHZhciBUID0gc3VtMzIoXG4gICAgICByb3RsMzIoXG4gICAgICAgIHN1bTMyXzQoQSwgZihqLCBCLCBDLCBEKSwgbXNnW3Jbal0gKyBzdGFydF0sIEsoaikpLFxuICAgICAgICBzW2pdKSxcbiAgICAgIEUpO1xuICAgIEEgPSBFO1xuICAgIEUgPSBEO1xuICAgIEQgPSByb3RsMzIoQywgMTApO1xuICAgIEMgPSBCO1xuICAgIEIgPSBUO1xuICAgIFQgPSBzdW0zMihcbiAgICAgIHJvdGwzMihcbiAgICAgICAgc3VtMzJfNChBaCwgZig3OSAtIGosIEJoLCBDaCwgRGgpLCBtc2dbcmhbal0gKyBzdGFydF0sIEtoKGopKSxcbiAgICAgICAgc2hbal0pLFxuICAgICAgRWgpO1xuICAgIEFoID0gRWg7XG4gICAgRWggPSBEaDtcbiAgICBEaCA9IHJvdGwzMihDaCwgMTApO1xuICAgIENoID0gQmg7XG4gICAgQmggPSBUO1xuICB9XG4gIFQgPSBzdW0zMl8zKHRoaXMuaFsxXSwgQywgRGgpO1xuICB0aGlzLmhbMV0gPSBzdW0zMl8zKHRoaXMuaFsyXSwgRCwgRWgpO1xuICB0aGlzLmhbMl0gPSBzdW0zMl8zKHRoaXMuaFszXSwgRSwgQWgpO1xuICB0aGlzLmhbM10gPSBzdW0zMl8zKHRoaXMuaFs0XSwgQSwgQmgpO1xuICB0aGlzLmhbNF0gPSBzdW0zMl8zKHRoaXMuaFswXSwgQiwgQ2gpO1xuICB0aGlzLmhbMF0gPSBUO1xufTtcblxuUklQRU1EMTYwLnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdsaXR0bGUnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2xpdHRsZScpO1xufTtcblxuZnVuY3Rpb24gZihqLCB4LCB5LCB6KSB7XG4gIGlmIChqIDw9IDE1KVxuICAgIHJldHVybiB4IF4geSBeIHo7XG4gIGVsc2UgaWYgKGogPD0gMzEpXG4gICAgcmV0dXJuICh4ICYgeSkgfCAoKH54KSAmIHopO1xuICBlbHNlIGlmIChqIDw9IDQ3KVxuICAgIHJldHVybiAoeCB8ICh+eSkpIF4gejtcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gKHggJiB6KSB8ICh5ICYgKH56KSk7XG4gIGVsc2VcbiAgICByZXR1cm4geCBeICh5IHwgKH56KSk7XG59XG5cbmZ1bmN0aW9uIEsoaikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4gMHgwMDAwMDAwMDtcbiAgZWxzZSBpZiAoaiA8PSAzMSlcbiAgICByZXR1cm4gMHg1YTgyNzk5OTtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gMHg2ZWQ5ZWJhMTtcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gMHg4ZjFiYmNkYztcbiAgZWxzZVxuICAgIHJldHVybiAweGE5NTNmZDRlO1xufVxuXG5mdW5jdGlvbiBLaChqKSB7XG4gIGlmIChqIDw9IDE1KVxuICAgIHJldHVybiAweDUwYTI4YmU2O1xuICBlbHNlIGlmIChqIDw9IDMxKVxuICAgIHJldHVybiAweDVjNGRkMTI0O1xuICBlbHNlIGlmIChqIDw9IDQ3KVxuICAgIHJldHVybiAweDZkNzAzZWYzO1xuICBlbHNlIGlmIChqIDw9IDYzKVxuICAgIHJldHVybiAweDdhNmQ3NmU5O1xuICBlbHNlXG4gICAgcmV0dXJuIDB4MDAwMDAwMDA7XG59XG5cbnZhciByID0gW1xuICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LFxuICA3LCA0LCAxMywgMSwgMTAsIDYsIDE1LCAzLCAxMiwgMCwgOSwgNSwgMiwgMTQsIDExLCA4LFxuICAzLCAxMCwgMTQsIDQsIDksIDE1LCA4LCAxLCAyLCA3LCAwLCA2LCAxMywgMTEsIDUsIDEyLFxuICAxLCA5LCAxMSwgMTAsIDAsIDgsIDEyLCA0LCAxMywgMywgNywgMTUsIDE0LCA1LCA2LCAyLFxuICA0LCAwLCA1LCA5LCA3LCAxMiwgMiwgMTAsIDE0LCAxLCAzLCA4LCAxMSwgNiwgMTUsIDEzXG5dO1xuXG52YXIgcmggPSBbXG4gIDUsIDE0LCA3LCAwLCA5LCAyLCAxMSwgNCwgMTMsIDYsIDE1LCA4LCAxLCAxMCwgMywgMTIsXG4gIDYsIDExLCAzLCA3LCAwLCAxMywgNSwgMTAsIDE0LCAxNSwgOCwgMTIsIDQsIDksIDEsIDIsXG4gIDE1LCA1LCAxLCAzLCA3LCAxNCwgNiwgOSwgMTEsIDgsIDEyLCAyLCAxMCwgMCwgNCwgMTMsXG4gIDgsIDYsIDQsIDEsIDMsIDExLCAxNSwgMCwgNSwgMTIsIDIsIDEzLCA5LCA3LCAxMCwgMTQsXG4gIDEyLCAxNSwgMTAsIDQsIDEsIDUsIDgsIDcsIDYsIDIsIDEzLCAxNCwgMCwgMywgOSwgMTFcbl07XG5cbnZhciBzID0gW1xuICAxMSwgMTQsIDE1LCAxMiwgNSwgOCwgNywgOSwgMTEsIDEzLCAxNCwgMTUsIDYsIDcsIDksIDgsXG4gIDcsIDYsIDgsIDEzLCAxMSwgOSwgNywgMTUsIDcsIDEyLCAxNSwgOSwgMTEsIDcsIDEzLCAxMixcbiAgMTEsIDEzLCA2LCA3LCAxNCwgOSwgMTMsIDE1LCAxNCwgOCwgMTMsIDYsIDUsIDEyLCA3LCA1LFxuICAxMSwgMTIsIDE0LCAxNSwgMTQsIDE1LCA5LCA4LCA5LCAxNCwgNSwgNiwgOCwgNiwgNSwgMTIsXG4gIDksIDE1LCA1LCAxMSwgNiwgOCwgMTMsIDEyLCA1LCAxMiwgMTMsIDE0LCAxMSwgOCwgNSwgNlxuXTtcblxudmFyIHNoID0gW1xuICA4LCA5LCA5LCAxMSwgMTMsIDE1LCAxNSwgNSwgNywgNywgOCwgMTEsIDE0LCAxNCwgMTIsIDYsXG4gIDksIDEzLCAxNSwgNywgMTIsIDgsIDksIDExLCA3LCA3LCAxMiwgNywgNiwgMTUsIDEzLCAxMSxcbiAgOSwgNywgMTUsIDExLCA4LCA2LCA2LCAxNCwgMTIsIDEzLCA1LCAxNCwgMTMsIDEzLCA3LCA1LFxuICAxNSwgNSwgOCwgMTEsIDE0LCAxNCwgNiwgMTQsIDYsIDksIDEyLCA5LCAxMiwgNSwgMTUsIDgsXG4gIDgsIDUsIDEyLCA5LCAxMiwgNSwgMTQsIDYsIDgsIDEzLCA2LCA1LCAxNSwgMTMsIDExLCAxMVxuXTtcbiIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5zaGExID0gcmVxdWlyZSgnLi9zaGEvMScpO1xuZXhwb3J0cy5zaGEyMjQgPSByZXF1aXJlKCcuL3NoYS8yMjQnKTtcbmV4cG9ydHMuc2hhMjU2ID0gcmVxdWlyZSgnLi9zaGEvMjU2Jyk7XG5leHBvcnRzLnNoYTM4NCA9IHJlcXVpcmUoJy4vc2hhLzM4NCcpO1xuZXhwb3J0cy5zaGE1MTIgPSByZXF1aXJlKCcuL3NoYS81MTInKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBjb21tb24gPSByZXF1aXJlKCcuLi9jb21tb24nKTtcbnZhciBzaGFDb21tb24gPSByZXF1aXJlKCcuL2NvbW1vbicpO1xuXG52YXIgcm90bDMyID0gdXRpbHMucm90bDMyO1xudmFyIHN1bTMyID0gdXRpbHMuc3VtMzI7XG52YXIgc3VtMzJfNSA9IHV0aWxzLnN1bTMyXzU7XG52YXIgZnRfMSA9IHNoYUNvbW1vbi5mdF8xO1xudmFyIEJsb2NrSGFzaCA9IGNvbW1vbi5CbG9ja0hhc2g7XG5cbnZhciBzaGExX0sgPSBbXG4gIDB4NUE4Mjc5OTksIDB4NkVEOUVCQTEsXG4gIDB4OEYxQkJDREMsIDB4Q0E2MkMxRDZcbl07XG5cbmZ1bmN0aW9uIFNIQTEoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEExKSlcbiAgICByZXR1cm4gbmV3IFNIQTEoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gW1xuICAgIDB4Njc0NTIzMDEsIDB4ZWZjZGFiODksIDB4OThiYWRjZmUsXG4gICAgMHgxMDMyNTQ3NiwgMHhjM2QyZTFmMCBdO1xuICB0aGlzLlcgPSBuZXcgQXJyYXkoODApO1xufVxuXG51dGlscy5pbmhlcml0cyhTSEExLCBCbG9ja0hhc2gpO1xubW9kdWxlLmV4cG9ydHMgPSBTSEExO1xuXG5TSEExLmJsb2NrU2l6ZSA9IDUxMjtcblNIQTEub3V0U2l6ZSA9IDE2MDtcblNIQTEuaG1hY1N0cmVuZ3RoID0gODA7XG5TSEExLnBhZExlbmd0aCA9IDY0O1xuXG5TSEExLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7IGkrKylcbiAgICBXW2ldID0gbXNnW3N0YXJ0ICsgaV07XG5cbiAgZm9yKDsgaSA8IFcubGVuZ3RoOyBpKyspXG4gICAgV1tpXSA9IHJvdGwzMihXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdLCAxKTtcblxuICB2YXIgYSA9IHRoaXMuaFswXTtcbiAgdmFyIGIgPSB0aGlzLmhbMV07XG4gIHZhciBjID0gdGhpcy5oWzJdO1xuICB2YXIgZCA9IHRoaXMuaFszXTtcbiAgdmFyIGUgPSB0aGlzLmhbNF07XG5cbiAgZm9yIChpID0gMDsgaSA8IFcubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcyA9IH5+KGkgLyAyMCk7XG4gICAgdmFyIHQgPSBzdW0zMl81KHJvdGwzMihhLCA1KSwgZnRfMShzLCBiLCBjLCBkKSwgZSwgV1tpXSwgc2hhMV9LW3NdKTtcbiAgICBlID0gZDtcbiAgICBkID0gYztcbiAgICBjID0gcm90bDMyKGIsIDMwKTtcbiAgICBiID0gYTtcbiAgICBhID0gdDtcbiAgfVxuXG4gIHRoaXMuaFswXSA9IHN1bTMyKHRoaXMuaFswXSwgYSk7XG4gIHRoaXMuaFsxXSA9IHN1bTMyKHRoaXMuaFsxXSwgYik7XG4gIHRoaXMuaFsyXSA9IHN1bTMyKHRoaXMuaFsyXSwgYyk7XG4gIHRoaXMuaFszXSA9IHN1bTMyKHRoaXMuaFszXSwgZCk7XG4gIHRoaXMuaFs0XSA9IHN1bTMyKHRoaXMuaFs0XSwgZSk7XG59O1xuXG5TSEExLnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2JpZycpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBTSEEyNTYgPSByZXF1aXJlKCcuLzI1NicpO1xuXG5mdW5jdGlvbiBTSEEyMjQoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEEyMjQpKVxuICAgIHJldHVybiBuZXcgU0hBMjI0KCk7XG5cbiAgU0hBMjU2LmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFtcbiAgICAweGMxMDU5ZWQ4LCAweDM2N2NkNTA3LCAweDMwNzBkZDE3LCAweGY3MGU1OTM5LFxuICAgIDB4ZmZjMDBiMzEsIDB4Njg1ODE1MTEsIDB4NjRmOThmYTcsIDB4YmVmYTRmYTQgXTtcbn1cbnV0aWxzLmluaGVyaXRzKFNIQTIyNCwgU0hBMjU2KTtcbm1vZHVsZS5leHBvcnRzID0gU0hBMjI0O1xuXG5TSEEyMjQuYmxvY2tTaXplID0gNTEyO1xuU0hBMjI0Lm91dFNpemUgPSAyMjQ7XG5TSEEyMjQuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBMjI0LnBhZExlbmd0aCA9IDY0O1xuXG5TSEEyMjQucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIC8vIEp1c3QgdHJ1bmNhdGUgb3V0cHV0XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaC5zbGljZSgwLCA3KSwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsIDcpLCAnYmlnJyk7XG59O1xuXG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi4vY29tbW9uJyk7XG52YXIgc2hhQ29tbW9uID0gcmVxdWlyZSgnLi9jb21tb24nKTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbnZhciBzdW0zMiA9IHV0aWxzLnN1bTMyO1xudmFyIHN1bTMyXzQgPSB1dGlscy5zdW0zMl80O1xudmFyIHN1bTMyXzUgPSB1dGlscy5zdW0zMl81O1xudmFyIGNoMzIgPSBzaGFDb21tb24uY2gzMjtcbnZhciBtYWozMiA9IHNoYUNvbW1vbi5tYWozMjtcbnZhciBzMF8yNTYgPSBzaGFDb21tb24uczBfMjU2O1xudmFyIHMxXzI1NiA9IHNoYUNvbW1vbi5zMV8yNTY7XG52YXIgZzBfMjU2ID0gc2hhQ29tbW9uLmcwXzI1NjtcbnZhciBnMV8yNTYgPSBzaGFDb21tb24uZzFfMjU2O1xuXG52YXIgQmxvY2tIYXNoID0gY29tbW9uLkJsb2NrSGFzaDtcblxudmFyIHNoYTI1Nl9LID0gW1xuICAweDQyOGEyZjk4LCAweDcxMzc0NDkxLCAweGI1YzBmYmNmLCAweGU5YjVkYmE1LFxuICAweDM5NTZjMjViLCAweDU5ZjExMWYxLCAweDkyM2Y4MmE0LCAweGFiMWM1ZWQ1LFxuICAweGQ4MDdhYTk4LCAweDEyODM1YjAxLCAweDI0MzE4NWJlLCAweDU1MGM3ZGMzLFxuICAweDcyYmU1ZDc0LCAweDgwZGViMWZlLCAweDliZGMwNmE3LCAweGMxOWJmMTc0LFxuICAweGU0OWI2OWMxLCAweGVmYmU0Nzg2LCAweDBmYzE5ZGM2LCAweDI0MGNhMWNjLFxuICAweDJkZTkyYzZmLCAweDRhNzQ4NGFhLCAweDVjYjBhOWRjLCAweDc2Zjk4OGRhLFxuICAweDk4M2U1MTUyLCAweGE4MzFjNjZkLCAweGIwMDMyN2M4LCAweGJmNTk3ZmM3LFxuICAweGM2ZTAwYmYzLCAweGQ1YTc5MTQ3LCAweDA2Y2E2MzUxLCAweDE0MjkyOTY3LFxuICAweDI3YjcwYTg1LCAweDJlMWIyMTM4LCAweDRkMmM2ZGZjLCAweDUzMzgwZDEzLFxuICAweDY1MGE3MzU0LCAweDc2NmEwYWJiLCAweDgxYzJjOTJlLCAweDkyNzIyYzg1LFxuICAweGEyYmZlOGExLCAweGE4MWE2NjRiLCAweGMyNGI4YjcwLCAweGM3NmM1MWEzLFxuICAweGQxOTJlODE5LCAweGQ2OTkwNjI0LCAweGY0MGUzNTg1LCAweDEwNmFhMDcwLFxuICAweDE5YTRjMTE2LCAweDFlMzc2YzA4LCAweDI3NDg3NzRjLCAweDM0YjBiY2I1LFxuICAweDM5MWMwY2IzLCAweDRlZDhhYTRhLCAweDViOWNjYTRmLCAweDY4MmU2ZmYzLFxuICAweDc0OGY4MmVlLCAweDc4YTU2MzZmLCAweDg0Yzg3ODE0LCAweDhjYzcwMjA4LFxuICAweDkwYmVmZmZhLCAweGE0NTA2Y2ViLCAweGJlZjlhM2Y3LCAweGM2NzE3OGYyXG5dO1xuXG5mdW5jdGlvbiBTSEEyNTYoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEEyNTYpKVxuICAgIHJldHVybiBuZXcgU0hBMjU2KCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFtcbiAgICAweDZhMDllNjY3LCAweGJiNjdhZTg1LCAweDNjNmVmMzcyLCAweGE1NGZmNTNhLFxuICAgIDB4NTEwZTUyN2YsIDB4OWIwNTY4OGMsIDB4MWY4M2Q5YWIsIDB4NWJlMGNkMTlcbiAgXTtcbiAgdGhpcy5rID0gc2hhMjU2X0s7XG4gIHRoaXMuVyA9IG5ldyBBcnJheSg2NCk7XG59XG51dGlscy5pbmhlcml0cyhTSEEyNTYsIEJsb2NrSGFzaCk7XG5tb2R1bGUuZXhwb3J0cyA9IFNIQTI1NjtcblxuU0hBMjU2LmJsb2NrU2l6ZSA9IDUxMjtcblNIQTI1Ni5vdXRTaXplID0gMjU2O1xuU0hBMjU2LmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTI1Ni5wYWRMZW5ndGggPSA2NDtcblxuU0hBMjU2LnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gX3VwZGF0ZShtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7IGkrKylcbiAgICBXW2ldID0gbXNnW3N0YXJ0ICsgaV07XG4gIGZvciAoOyBpIDwgVy5sZW5ndGg7IGkrKylcbiAgICBXW2ldID0gc3VtMzJfNChnMV8yNTYoV1tpIC0gMl0pLCBXW2kgLSA3XSwgZzBfMjU2KFdbaSAtIDE1XSksIFdbaSAtIDE2XSk7XG5cbiAgdmFyIGEgPSB0aGlzLmhbMF07XG4gIHZhciBiID0gdGhpcy5oWzFdO1xuICB2YXIgYyA9IHRoaXMuaFsyXTtcbiAgdmFyIGQgPSB0aGlzLmhbM107XG4gIHZhciBlID0gdGhpcy5oWzRdO1xuICB2YXIgZiA9IHRoaXMuaFs1XTtcbiAgdmFyIGcgPSB0aGlzLmhbNl07XG4gIHZhciBoID0gdGhpcy5oWzddO1xuXG4gIGFzc2VydCh0aGlzLmsubGVuZ3RoID09PSBXLmxlbmd0aCk7XG4gIGZvciAoaSA9IDA7IGkgPCBXLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIFQxID0gc3VtMzJfNShoLCBzMV8yNTYoZSksIGNoMzIoZSwgZiwgZyksIHRoaXMua1tpXSwgV1tpXSk7XG4gICAgdmFyIFQyID0gc3VtMzIoczBfMjU2KGEpLCBtYWozMihhLCBiLCBjKSk7XG4gICAgaCA9IGc7XG4gICAgZyA9IGY7XG4gICAgZiA9IGU7XG4gICAgZSA9IHN1bTMyKGQsIFQxKTtcbiAgICBkID0gYztcbiAgICBjID0gYjtcbiAgICBiID0gYTtcbiAgICBhID0gc3VtMzIoVDEsIFQyKTtcbiAgfVxuXG4gIHRoaXMuaFswXSA9IHN1bTMyKHRoaXMuaFswXSwgYSk7XG4gIHRoaXMuaFsxXSA9IHN1bTMyKHRoaXMuaFsxXSwgYik7XG4gIHRoaXMuaFsyXSA9IHN1bTMyKHRoaXMuaFsyXSwgYyk7XG4gIHRoaXMuaFszXSA9IHN1bTMyKHRoaXMuaFszXSwgZCk7XG4gIHRoaXMuaFs0XSA9IHN1bTMyKHRoaXMuaFs0XSwgZSk7XG4gIHRoaXMuaFs1XSA9IHN1bTMyKHRoaXMuaFs1XSwgZik7XG4gIHRoaXMuaFs2XSA9IHN1bTMyKHRoaXMuaFs2XSwgZyk7XG4gIHRoaXMuaFs3XSA9IHN1bTMyKHRoaXMuaFs3XSwgaCk7XG59O1xuXG5TSEEyNTYucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCAnYmlnJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xuXG52YXIgU0hBNTEyID0gcmVxdWlyZSgnLi81MTInKTtcblxuZnVuY3Rpb24gU0hBMzg0KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMzg0KSlcbiAgICByZXR1cm4gbmV3IFNIQTM4NCgpO1xuXG4gIFNIQTUxMi5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbXG4gICAgMHhjYmJiOWQ1ZCwgMHhjMTA1OWVkOCxcbiAgICAweDYyOWEyOTJhLCAweDM2N2NkNTA3LFxuICAgIDB4OTE1OTAxNWEsIDB4MzA3MGRkMTcsXG4gICAgMHgxNTJmZWNkOCwgMHhmNzBlNTkzOSxcbiAgICAweDY3MzMyNjY3LCAweGZmYzAwYjMxLFxuICAgIDB4OGViNDRhODcsIDB4Njg1ODE1MTEsXG4gICAgMHhkYjBjMmUwZCwgMHg2NGY5OGZhNyxcbiAgICAweDQ3YjU0ODFkLCAweGJlZmE0ZmE0IF07XG59XG51dGlscy5pbmhlcml0cyhTSEEzODQsIFNIQTUxMik7XG5tb2R1bGUuZXhwb3J0cyA9IFNIQTM4NDtcblxuU0hBMzg0LmJsb2NrU2l6ZSA9IDEwMjQ7XG5TSEEzODQub3V0U2l6ZSA9IDM4NDtcblNIQTM4NC5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEEzODQucGFkTGVuZ3RoID0gMTI4O1xuXG5TSEEzODQucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaC5zbGljZSgwLCAxMiksICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaC5zbGljZSgwLCAxMiksICdiaWcnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi4vY29tbW9uJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG52YXIgcm90cjY0X2hpID0gdXRpbHMucm90cjY0X2hpO1xudmFyIHJvdHI2NF9sbyA9IHV0aWxzLnJvdHI2NF9sbztcbnZhciBzaHI2NF9oaSA9IHV0aWxzLnNocjY0X2hpO1xudmFyIHNocjY0X2xvID0gdXRpbHMuc2hyNjRfbG87XG52YXIgc3VtNjQgPSB1dGlscy5zdW02NDtcbnZhciBzdW02NF9oaSA9IHV0aWxzLnN1bTY0X2hpO1xudmFyIHN1bTY0X2xvID0gdXRpbHMuc3VtNjRfbG87XG52YXIgc3VtNjRfNF9oaSA9IHV0aWxzLnN1bTY0XzRfaGk7XG52YXIgc3VtNjRfNF9sbyA9IHV0aWxzLnN1bTY0XzRfbG87XG52YXIgc3VtNjRfNV9oaSA9IHV0aWxzLnN1bTY0XzVfaGk7XG52YXIgc3VtNjRfNV9sbyA9IHV0aWxzLnN1bTY0XzVfbG87XG5cbnZhciBCbG9ja0hhc2ggPSBjb21tb24uQmxvY2tIYXNoO1xuXG52YXIgc2hhNTEyX0sgPSBbXG4gIDB4NDI4YTJmOTgsIDB4ZDcyOGFlMjIsIDB4NzEzNzQ0OTEsIDB4MjNlZjY1Y2QsXG4gIDB4YjVjMGZiY2YsIDB4ZWM0ZDNiMmYsIDB4ZTliNWRiYTUsIDB4ODE4OWRiYmMsXG4gIDB4Mzk1NmMyNWIsIDB4ZjM0OGI1MzgsIDB4NTlmMTExZjEsIDB4YjYwNWQwMTksXG4gIDB4OTIzZjgyYTQsIDB4YWYxOTRmOWIsIDB4YWIxYzVlZDUsIDB4ZGE2ZDgxMTgsXG4gIDB4ZDgwN2FhOTgsIDB4YTMwMzAyNDIsIDB4MTI4MzViMDEsIDB4NDU3MDZmYmUsXG4gIDB4MjQzMTg1YmUsIDB4NGVlNGIyOGMsIDB4NTUwYzdkYzMsIDB4ZDVmZmI0ZTIsXG4gIDB4NzJiZTVkNzQsIDB4ZjI3Yjg5NmYsIDB4ODBkZWIxZmUsIDB4M2IxNjk2YjEsXG4gIDB4OWJkYzA2YTcsIDB4MjVjNzEyMzUsIDB4YzE5YmYxNzQsIDB4Y2Y2OTI2OTQsXG4gIDB4ZTQ5YjY5YzEsIDB4OWVmMTRhZDIsIDB4ZWZiZTQ3ODYsIDB4Mzg0ZjI1ZTMsXG4gIDB4MGZjMTlkYzYsIDB4OGI4Y2Q1YjUsIDB4MjQwY2ExY2MsIDB4NzdhYzljNjUsXG4gIDB4MmRlOTJjNmYsIDB4NTkyYjAyNzUsIDB4NGE3NDg0YWEsIDB4NmVhNmU0ODMsXG4gIDB4NWNiMGE5ZGMsIDB4YmQ0MWZiZDQsIDB4NzZmOTg4ZGEsIDB4ODMxMTUzYjUsXG4gIDB4OTgzZTUxNTIsIDB4ZWU2NmRmYWIsIDB4YTgzMWM2NmQsIDB4MmRiNDMyMTAsXG4gIDB4YjAwMzI3YzgsIDB4OThmYjIxM2YsIDB4YmY1OTdmYzcsIDB4YmVlZjBlZTQsXG4gIDB4YzZlMDBiZjMsIDB4M2RhODhmYzIsIDB4ZDVhNzkxNDcsIDB4OTMwYWE3MjUsXG4gIDB4MDZjYTYzNTEsIDB4ZTAwMzgyNmYsIDB4MTQyOTI5NjcsIDB4MGEwZTZlNzAsXG4gIDB4MjdiNzBhODUsIDB4NDZkMjJmZmMsIDB4MmUxYjIxMzgsIDB4NWMyNmM5MjYsXG4gIDB4NGQyYzZkZmMsIDB4NWFjNDJhZWQsIDB4NTMzODBkMTMsIDB4OWQ5NWIzZGYsXG4gIDB4NjUwYTczNTQsIDB4OGJhZjYzZGUsIDB4NzY2YTBhYmIsIDB4M2M3N2IyYTgsXG4gIDB4ODFjMmM5MmUsIDB4NDdlZGFlZTYsIDB4OTI3MjJjODUsIDB4MTQ4MjM1M2IsXG4gIDB4YTJiZmU4YTEsIDB4NGNmMTAzNjQsIDB4YTgxYTY2NGIsIDB4YmM0MjMwMDEsXG4gIDB4YzI0YjhiNzAsIDB4ZDBmODk3OTEsIDB4Yzc2YzUxYTMsIDB4MDY1NGJlMzAsXG4gIDB4ZDE5MmU4MTksIDB4ZDZlZjUyMTgsIDB4ZDY5OTA2MjQsIDB4NTU2NWE5MTAsXG4gIDB4ZjQwZTM1ODUsIDB4NTc3MTIwMmEsIDB4MTA2YWEwNzAsIDB4MzJiYmQxYjgsXG4gIDB4MTlhNGMxMTYsIDB4YjhkMmQwYzgsIDB4MWUzNzZjMDgsIDB4NTE0MWFiNTMsXG4gIDB4Mjc0ODc3NGMsIDB4ZGY4ZWViOTksIDB4MzRiMGJjYjUsIDB4ZTE5YjQ4YTgsXG4gIDB4MzkxYzBjYjMsIDB4YzVjOTVhNjMsIDB4NGVkOGFhNGEsIDB4ZTM0MThhY2IsXG4gIDB4NWI5Y2NhNGYsIDB4Nzc2M2UzNzMsIDB4NjgyZTZmZjMsIDB4ZDZiMmI4YTMsXG4gIDB4NzQ4ZjgyZWUsIDB4NWRlZmIyZmMsIDB4NzhhNTYzNmYsIDB4NDMxNzJmNjAsXG4gIDB4ODRjODc4MTQsIDB4YTFmMGFiNzIsIDB4OGNjNzAyMDgsIDB4MWE2NDM5ZWMsXG4gIDB4OTBiZWZmZmEsIDB4MjM2MzFlMjgsIDB4YTQ1MDZjZWIsIDB4ZGU4MmJkZTksXG4gIDB4YmVmOWEzZjcsIDB4YjJjNjc5MTUsIDB4YzY3MTc4ZjIsIDB4ZTM3MjUzMmIsXG4gIDB4Y2EyNzNlY2UsIDB4ZWEyNjYxOWMsIDB4ZDE4NmI4YzcsIDB4MjFjMGMyMDcsXG4gIDB4ZWFkYTdkZDYsIDB4Y2RlMGViMWUsIDB4ZjU3ZDRmN2YsIDB4ZWU2ZWQxNzgsXG4gIDB4MDZmMDY3YWEsIDB4NzIxNzZmYmEsIDB4MGE2MzdkYzUsIDB4YTJjODk4YTYsXG4gIDB4MTEzZjk4MDQsIDB4YmVmOTBkYWUsIDB4MWI3MTBiMzUsIDB4MTMxYzQ3MWIsXG4gIDB4MjhkYjc3ZjUsIDB4MjMwNDdkODQsIDB4MzJjYWFiN2IsIDB4NDBjNzI0OTMsXG4gIDB4M2M5ZWJlMGEsIDB4MTVjOWJlYmMsIDB4NDMxZDY3YzQsIDB4OWMxMDBkNGMsXG4gIDB4NGNjNWQ0YmUsIDB4Y2IzZTQyYjYsIDB4NTk3ZjI5OWMsIDB4ZmM2NTdlMmEsXG4gIDB4NWZjYjZmYWIsIDB4M2FkNmZhZWMsIDB4NmM0NDE5OGMsIDB4NGE0NzU4MTdcbl07XG5cbmZ1bmN0aW9uIFNIQTUxMigpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTUxMikpXG4gICAgcmV0dXJuIG5ldyBTSEE1MTIoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gW1xuICAgIDB4NmEwOWU2NjcsIDB4ZjNiY2M5MDgsXG4gICAgMHhiYjY3YWU4NSwgMHg4NGNhYTczYixcbiAgICAweDNjNmVmMzcyLCAweGZlOTRmODJiLFxuICAgIDB4YTU0ZmY1M2EsIDB4NWYxZDM2ZjEsXG4gICAgMHg1MTBlNTI3ZiwgMHhhZGU2ODJkMSxcbiAgICAweDliMDU2ODhjLCAweDJiM2U2YzFmLFxuICAgIDB4MWY4M2Q5YWIsIDB4ZmI0MWJkNmIsXG4gICAgMHg1YmUwY2QxOSwgMHgxMzdlMjE3OSBdO1xuICB0aGlzLmsgPSBzaGE1MTJfSztcbiAgdGhpcy5XID0gbmV3IEFycmF5KDE2MCk7XG59XG51dGlscy5pbmhlcml0cyhTSEE1MTIsIEJsb2NrSGFzaCk7XG5tb2R1bGUuZXhwb3J0cyA9IFNIQTUxMjtcblxuU0hBNTEyLmJsb2NrU2l6ZSA9IDEwMjQ7XG5TSEE1MTIub3V0U2l6ZSA9IDUxMjtcblNIQTUxMi5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEE1MTIucGFkTGVuZ3RoID0gMTI4O1xuXG5TSEE1MTIucHJvdG90eXBlLl9wcmVwYXJlQmxvY2sgPSBmdW5jdGlvbiBfcHJlcGFyZUJsb2NrKG1zZywgc3RhcnQpIHtcbiAgdmFyIFcgPSB0aGlzLlc7XG5cbiAgLy8gMzIgeCAzMmJpdCB3b3Jkc1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDMyOyBpKyspXG4gICAgV1tpXSA9IG1zZ1tzdGFydCArIGldO1xuICBmb3IgKDsgaSA8IFcubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIgYzBfaGkgPSBnMV81MTJfaGkoV1tpIC0gNF0sIFdbaSAtIDNdKTsgIC8vIGkgLSAyXG4gICAgdmFyIGMwX2xvID0gZzFfNTEyX2xvKFdbaSAtIDRdLCBXW2kgLSAzXSk7XG4gICAgdmFyIGMxX2hpID0gV1tpIC0gMTRdOyAgLy8gaSAtIDdcbiAgICB2YXIgYzFfbG8gPSBXW2kgLSAxM107XG4gICAgdmFyIGMyX2hpID0gZzBfNTEyX2hpKFdbaSAtIDMwXSwgV1tpIC0gMjldKTsgIC8vIGkgLSAxNVxuICAgIHZhciBjMl9sbyA9IGcwXzUxMl9sbyhXW2kgLSAzMF0sIFdbaSAtIDI5XSk7XG4gICAgdmFyIGMzX2hpID0gV1tpIC0gMzJdOyAgLy8gaSAtIDE2XG4gICAgdmFyIGMzX2xvID0gV1tpIC0gMzFdO1xuXG4gICAgV1tpXSA9IHN1bTY0XzRfaGkoXG4gICAgICBjMF9oaSwgYzBfbG8sXG4gICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICBjM19oaSwgYzNfbG8pO1xuICAgIFdbaSArIDFdID0gc3VtNjRfNF9sbyhcbiAgICAgIGMwX2hpLCBjMF9sbyxcbiAgICAgIGMxX2hpLCBjMV9sbyxcbiAgICAgIGMyX2hpLCBjMl9sbyxcbiAgICAgIGMzX2hpLCBjM19sbyk7XG4gIH1cbn07XG5cblNIQTUxMi5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB0aGlzLl9wcmVwYXJlQmxvY2sobXNnLCBzdGFydCk7XG5cbiAgdmFyIFcgPSB0aGlzLlc7XG5cbiAgdmFyIGFoID0gdGhpcy5oWzBdO1xuICB2YXIgYWwgPSB0aGlzLmhbMV07XG4gIHZhciBiaCA9IHRoaXMuaFsyXTtcbiAgdmFyIGJsID0gdGhpcy5oWzNdO1xuICB2YXIgY2ggPSB0aGlzLmhbNF07XG4gIHZhciBjbCA9IHRoaXMuaFs1XTtcbiAgdmFyIGRoID0gdGhpcy5oWzZdO1xuICB2YXIgZGwgPSB0aGlzLmhbN107XG4gIHZhciBlaCA9IHRoaXMuaFs4XTtcbiAgdmFyIGVsID0gdGhpcy5oWzldO1xuICB2YXIgZmggPSB0aGlzLmhbMTBdO1xuICB2YXIgZmwgPSB0aGlzLmhbMTFdO1xuICB2YXIgZ2ggPSB0aGlzLmhbMTJdO1xuICB2YXIgZ2wgPSB0aGlzLmhbMTNdO1xuICB2YXIgaGggPSB0aGlzLmhbMTRdO1xuICB2YXIgaGwgPSB0aGlzLmhbMTVdO1xuXG4gIGFzc2VydCh0aGlzLmsubGVuZ3RoID09PSBXLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBjMF9oaSA9IGhoO1xuICAgIHZhciBjMF9sbyA9IGhsO1xuICAgIHZhciBjMV9oaSA9IHMxXzUxMl9oaShlaCwgZWwpO1xuICAgIHZhciBjMV9sbyA9IHMxXzUxMl9sbyhlaCwgZWwpO1xuICAgIHZhciBjMl9oaSA9IGNoNjRfaGkoZWgsIGVsLCBmaCwgZmwsIGdoLCBnbCk7XG4gICAgdmFyIGMyX2xvID0gY2g2NF9sbyhlaCwgZWwsIGZoLCBmbCwgZ2gsIGdsKTtcbiAgICB2YXIgYzNfaGkgPSB0aGlzLmtbaV07XG4gICAgdmFyIGMzX2xvID0gdGhpcy5rW2kgKyAxXTtcbiAgICB2YXIgYzRfaGkgPSBXW2ldO1xuICAgIHZhciBjNF9sbyA9IFdbaSArIDFdO1xuXG4gICAgdmFyIFQxX2hpID0gc3VtNjRfNV9oaShcbiAgICAgIGMwX2hpLCBjMF9sbyxcbiAgICAgIGMxX2hpLCBjMV9sbyxcbiAgICAgIGMyX2hpLCBjMl9sbyxcbiAgICAgIGMzX2hpLCBjM19sbyxcbiAgICAgIGM0X2hpLCBjNF9sbyk7XG4gICAgdmFyIFQxX2xvID0gc3VtNjRfNV9sbyhcbiAgICAgIGMwX2hpLCBjMF9sbyxcbiAgICAgIGMxX2hpLCBjMV9sbyxcbiAgICAgIGMyX2hpLCBjMl9sbyxcbiAgICAgIGMzX2hpLCBjM19sbyxcbiAgICAgIGM0X2hpLCBjNF9sbyk7XG5cbiAgICBjMF9oaSA9IHMwXzUxMl9oaShhaCwgYWwpO1xuICAgIGMwX2xvID0gczBfNTEyX2xvKGFoLCBhbCk7XG4gICAgYzFfaGkgPSBtYWo2NF9oaShhaCwgYWwsIGJoLCBibCwgY2gsIGNsKTtcbiAgICBjMV9sbyA9IG1hajY0X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wpO1xuXG4gICAgdmFyIFQyX2hpID0gc3VtNjRfaGkoYzBfaGksIGMwX2xvLCBjMV9oaSwgYzFfbG8pO1xuICAgIHZhciBUMl9sbyA9IHN1bTY0X2xvKGMwX2hpLCBjMF9sbywgYzFfaGksIGMxX2xvKTtcblxuICAgIGhoID0gZ2g7XG4gICAgaGwgPSBnbDtcblxuICAgIGdoID0gZmg7XG4gICAgZ2wgPSBmbDtcblxuICAgIGZoID0gZWg7XG4gICAgZmwgPSBlbDtcblxuICAgIGVoID0gc3VtNjRfaGkoZGgsIGRsLCBUMV9oaSwgVDFfbG8pO1xuICAgIGVsID0gc3VtNjRfbG8oZGwsIGRsLCBUMV9oaSwgVDFfbG8pO1xuXG4gICAgZGggPSBjaDtcbiAgICBkbCA9IGNsO1xuXG4gICAgY2ggPSBiaDtcbiAgICBjbCA9IGJsO1xuXG4gICAgYmggPSBhaDtcbiAgICBibCA9IGFsO1xuXG4gICAgYWggPSBzdW02NF9oaShUMV9oaSwgVDFfbG8sIFQyX2hpLCBUMl9sbyk7XG4gICAgYWwgPSBzdW02NF9sbyhUMV9oaSwgVDFfbG8sIFQyX2hpLCBUMl9sbyk7XG4gIH1cblxuICBzdW02NCh0aGlzLmgsIDAsIGFoLCBhbCk7XG4gIHN1bTY0KHRoaXMuaCwgMiwgYmgsIGJsKTtcbiAgc3VtNjQodGhpcy5oLCA0LCBjaCwgY2wpO1xuICBzdW02NCh0aGlzLmgsIDYsIGRoLCBkbCk7XG4gIHN1bTY0KHRoaXMuaCwgOCwgZWgsIGVsKTtcbiAgc3VtNjQodGhpcy5oLCAxMCwgZmgsIGZsKTtcbiAgc3VtNjQodGhpcy5oLCAxMiwgZ2gsIGdsKTtcbiAgc3VtNjQodGhpcy5oLCAxNCwgaGgsIGhsKTtcbn07XG5cblNIQTUxMi5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdiaWcnKTtcbn07XG5cbmZ1bmN0aW9uIGNoNjRfaGkoeGgsIHhsLCB5aCwgeWwsIHpoKSB7XG4gIHZhciByID0gKHhoICYgeWgpIF4gKCh+eGgpICYgemgpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGNoNjRfbG8oeGgsIHhsLCB5aCwgeWwsIHpoLCB6bCkge1xuICB2YXIgciA9ICh4bCAmIHlsKSBeICgofnhsKSAmIHpsKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBtYWo2NF9oaSh4aCwgeGwsIHloLCB5bCwgemgpIHtcbiAgdmFyIHIgPSAoeGggJiB5aCkgXiAoeGggJiB6aCkgXiAoeWggJiB6aCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gbWFqNjRfbG8oeGgsIHhsLCB5aCwgeWwsIHpoLCB6bCkge1xuICB2YXIgciA9ICh4bCAmIHlsKSBeICh4bCAmIHpsKSBeICh5bCAmIHpsKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMF81MTJfaGkoeGgsIHhsKSB7XG4gIHZhciBjMF9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDI4KTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhsLCB4aCwgMik7ICAvLyAzNFxuICB2YXIgYzJfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCA3KTsgIC8vIDM5XG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczBfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAyOCk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDIpOyAgLy8gMzRcbiAgdmFyIGMyX2xvID0gcm90cjY0X2xvKHhsLCB4aCwgNyk7ICAvLyAzOVxuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIHMxXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTQpO1xuICB2YXIgYzFfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAxOCk7XG4gIHZhciBjMl9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDkpOyAgLy8gNDFcblxuICB2YXIgciA9IGMwX2hpIF4gYzFfaGkgXiBjMl9oaTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMV81MTJfbG8oeGgsIHhsKSB7XG4gIHZhciBjMF9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDE0KTtcbiAgdmFyIGMxX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMTgpO1xuICB2YXIgYzJfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCA5KTsgIC8vIDQxXG5cbiAgdmFyIHIgPSBjMF9sbyBeIGMxX2xvIF4gYzJfbG87XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzBfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAxKTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgOCk7XG4gIHZhciBjMl9oaSA9IHNocjY0X2hpKHhoLCB4bCwgNyk7XG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzBfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxKTtcbiAgdmFyIGMxX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgOCk7XG4gIHZhciBjMl9sbyA9IHNocjY0X2xvKHhoLCB4bCwgNyk7XG5cbiAgdmFyIHIgPSBjMF9sbyBeIGMxX2xvIF4gYzJfbG87XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzFfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAxOSk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDI5KTsgIC8vIDYxXG4gIHZhciBjMl9oaSA9IHNocjY0X2hpKHhoLCB4bCwgNik7XG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gZzFfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxOSk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDI5KTsgIC8vIDYxXG4gIHZhciBjMl9sbyA9IHNocjY0X2xvKHhoLCB4bCwgNik7XG5cbiAgdmFyIHIgPSBjMF9sbyBeIGMxX2xvIF4gYzJfbG87XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciByb3RyMzIgPSB1dGlscy5yb3RyMzI7XG5cbmZ1bmN0aW9uIGZ0XzEocywgeCwgeSwgeikge1xuICBpZiAocyA9PT0gMClcbiAgICByZXR1cm4gY2gzMih4LCB5LCB6KTtcbiAgaWYgKHMgPT09IDEgfHwgcyA9PT0gMylcbiAgICByZXR1cm4gcDMyKHgsIHksIHopO1xuICBpZiAocyA9PT0gMilcbiAgICByZXR1cm4gbWFqMzIoeCwgeSwgeik7XG59XG5leHBvcnRzLmZ0XzEgPSBmdF8xO1xuXG5mdW5jdGlvbiBjaDMyKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgXiAoKH54KSAmIHopO1xufVxuZXhwb3J0cy5jaDMyID0gY2gzMjtcblxuZnVuY3Rpb24gbWFqMzIoeCwgeSwgeikge1xuICByZXR1cm4gKHggJiB5KSBeICh4ICYgeikgXiAoeSAmIHopO1xufVxuZXhwb3J0cy5tYWozMiA9IG1hajMyO1xuXG5mdW5jdGlvbiBwMzIoeCwgeSwgeikge1xuICByZXR1cm4geCBeIHkgXiB6O1xufVxuZXhwb3J0cy5wMzIgPSBwMzI7XG5cbmZ1bmN0aW9uIHMwXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgMikgXiByb3RyMzIoeCwgMTMpIF4gcm90cjMyKHgsIDIyKTtcbn1cbmV4cG9ydHMuczBfMjU2ID0gczBfMjU2O1xuXG5mdW5jdGlvbiBzMV8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDYpIF4gcm90cjMyKHgsIDExKSBeIHJvdHIzMih4LCAyNSk7XG59XG5leHBvcnRzLnMxXzI1NiA9IHMxXzI1NjtcblxuZnVuY3Rpb24gZzBfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCA3KSBeIHJvdHIzMih4LCAxOCkgXiAoeCA+Pj4gMyk7XG59XG5leHBvcnRzLmcwXzI1NiA9IGcwXzI1NjtcblxuZnVuY3Rpb24gZzFfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCAxNykgXiByb3RyMzIoeCwgMTkpIF4gKHggPj4+IDEwKTtcbn1cbmV4cG9ydHMuZzFfMjU2ID0gZzFfMjU2O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZXhwb3J0cy5pbmhlcml0cyA9IGluaGVyaXRzO1xuXG5mdW5jdGlvbiBpc1N1cnJvZ2F0ZVBhaXIobXNnLCBpKSB7XG4gIGlmICgobXNnLmNoYXJDb2RlQXQoaSkgJiAweEZDMDApICE9PSAweEQ4MDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGkgPCAwIHx8IGkgKyAxID49IG1zZy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChtc2cuY2hhckNvZGVBdChpICsgMSkgJiAweEZDMDApID09PSAweERDMDA7XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkobXNnLCBlbmMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobXNnKSlcbiAgICByZXR1cm4gbXNnLnNsaWNlKCk7XG4gIGlmICghbXNnKVxuICAgIHJldHVybiBbXTtcbiAgdmFyIHJlcyA9IFtdO1xuICBpZiAodHlwZW9mIG1zZyA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIWVuYykge1xuICAgICAgLy8gSW5zcGlyZWQgYnkgc3RyaW5nVG9VdGY4Qnl0ZUFycmF5KCkgaW4gY2xvc3VyZS1saWJyYXJ5IGJ5IEdvb2dsZVxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvYmxvYi84NTk4ZDg3MjQyYWY1OWFhYzIzMzI3MDc0MmM4OTg0ZTJiMmJkYmUwL2Nsb3N1cmUvZ29vZy9jcnlwdC9jcnlwdC5qcyNMMTE3LUwxNDNcbiAgICAgIC8vIEFwYWNoZSBMaWNlbnNlIDIuMFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWxpYnJhcnkvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICAgICAgdmFyIHAgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGMgPSBtc2cuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGMgPCAxMjgpIHtcbiAgICAgICAgICByZXNbcCsrXSA9IGM7XG4gICAgICAgIH0gZWxzZSBpZiAoYyA8IDIwNDgpIHtcbiAgICAgICAgICByZXNbcCsrXSA9IChjID4+IDYpIHwgMTkyO1xuICAgICAgICAgIHJlc1twKytdID0gKGMgJiA2MykgfCAxMjg7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNTdXJyb2dhdGVQYWlyKG1zZywgaSkpIHtcbiAgICAgICAgICBjID0gMHgxMDAwMCArICgoYyAmIDB4MDNGRikgPDwgMTApICsgKG1zZy5jaGFyQ29kZUF0KCsraSkgJiAweDAzRkYpO1xuICAgICAgICAgIHJlc1twKytdID0gKGMgPj4gMTgpIHwgMjQwO1xuICAgICAgICAgIHJlc1twKytdID0gKChjID4+IDEyKSAmIDYzKSB8IDEyODtcbiAgICAgICAgICByZXNbcCsrXSA9ICgoYyA+PiA2KSAmIDYzKSB8IDEyODtcbiAgICAgICAgICByZXNbcCsrXSA9IChjICYgNjMpIHwgMTI4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc1twKytdID0gKGMgPj4gMTIpIHwgMjI0O1xuICAgICAgICAgIHJlc1twKytdID0gKChjID4+IDYpICYgNjMpIHwgMTI4O1xuICAgICAgICAgIHJlc1twKytdID0gKGMgJiA2MykgfCAxMjg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuYyA9PT0gJ2hleCcpIHtcbiAgICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgICBpZiAobXNnLmxlbmd0aCAlIDIgIT09IDApXG4gICAgICAgIG1zZyA9ICcwJyArIG1zZztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpICs9IDIpXG4gICAgICAgIHJlcy5wdXNoKHBhcnNlSW50KG1zZ1tpXSArIG1zZ1tpICsgMV0sIDE2KSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAoaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspXG4gICAgICByZXNbaV0gPSBtc2dbaV0gfCAwO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5leHBvcnRzLnRvQXJyYXkgPSB0b0FycmF5O1xuXG5mdW5jdGlvbiB0b0hleChtc2cpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICByZXMgKz0gemVybzIobXNnW2ldLnRvU3RyaW5nKDE2KSk7XG4gIHJldHVybiByZXM7XG59XG5leHBvcnRzLnRvSGV4ID0gdG9IZXg7XG5cbmZ1bmN0aW9uIGh0b25sKHcpIHtcbiAgdmFyIHJlcyA9ICh3ID4+PiAyNCkgfFxuICAgICAgICAgICAgKCh3ID4+PiA4KSAmIDB4ZmYwMCkgfFxuICAgICAgICAgICAgKCh3IDw8IDgpICYgMHhmZjAwMDApIHxcbiAgICAgICAgICAgICgodyAmIDB4ZmYpIDw8IDI0KTtcbiAgcmV0dXJuIHJlcyA+Pj4gMDtcbn1cbmV4cG9ydHMuaHRvbmwgPSBodG9ubDtcblxuZnVuY3Rpb24gdG9IZXgzMihtc2csIGVuZGlhbikge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHcgPSBtc2dbaV07XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2xpdHRsZScpXG4gICAgICB3ID0gaHRvbmwodyk7XG4gICAgcmVzICs9IHplcm84KHcudG9TdHJpbmcoMTYpKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuZXhwb3J0cy50b0hleDMyID0gdG9IZXgzMjtcblxuZnVuY3Rpb24gemVybzIod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbmV4cG9ydHMuemVybzIgPSB6ZXJvMjtcblxuZnVuY3Rpb24gemVybzgod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDcpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA2KVxuICAgIHJldHVybiAnMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDUpXG4gICAgcmV0dXJuICcwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDQpXG4gICAgcmV0dXJuICcwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAzKVxuICAgIHJldHVybiAnMDAwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDIpXG4gICAgcmV0dXJuICcwMDAwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwMDAwMDAwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbmV4cG9ydHMuemVybzggPSB6ZXJvODtcblxuZnVuY3Rpb24gam9pbjMyKG1zZywgc3RhcnQsIGVuZCwgZW5kaWFuKSB7XG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydDtcbiAgYXNzZXJ0KGxlbiAlIDQgPT09IDApO1xuICB2YXIgcmVzID0gbmV3IEFycmF5KGxlbiAvIDQpO1xuICBmb3IgKHZhciBpID0gMCwgayA9IHN0YXJ0OyBpIDwgcmVzLmxlbmd0aDsgaSsrLCBrICs9IDQpIHtcbiAgICB2YXIgdztcbiAgICBpZiAoZW5kaWFuID09PSAnYmlnJylcbiAgICAgIHcgPSAobXNnW2tdIDw8IDI0KSB8IChtc2dbayArIDFdIDw8IDE2KSB8IChtc2dbayArIDJdIDw8IDgpIHwgbXNnW2sgKyAzXTtcbiAgICBlbHNlXG4gICAgICB3ID0gKG1zZ1trICsgM10gPDwgMjQpIHwgKG1zZ1trICsgMl0gPDwgMTYpIHwgKG1zZ1trICsgMV0gPDwgOCkgfCBtc2dba107XG4gICAgcmVzW2ldID0gdyA+Pj4gMDtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuZXhwb3J0cy5qb2luMzIgPSBqb2luMzI7XG5cbmZ1bmN0aW9uIHNwbGl0MzIobXNnLCBlbmRpYW4pIHtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShtc2cubGVuZ3RoICogNCk7XG4gIGZvciAodmFyIGkgPSAwLCBrID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKywgayArPSA0KSB7XG4gICAgdmFyIG0gPSBtc2dbaV07XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JpZycpIHtcbiAgICAgIHJlc1trXSA9IG0gPj4+IDI0O1xuICAgICAgcmVzW2sgKyAxXSA9IChtID4+PiAxNikgJiAweGZmO1xuICAgICAgcmVzW2sgKyAyXSA9IChtID4+PiA4KSAmIDB4ZmY7XG4gICAgICByZXNbayArIDNdID0gbSAmIDB4ZmY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1trICsgM10gPSBtID4+PiAyNDtcbiAgICAgIHJlc1trICsgMl0gPSAobSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgIHJlc1trICsgMV0gPSAobSA+Pj4gOCkgJiAweGZmO1xuICAgICAgcmVzW2tdID0gbSAmIDB4ZmY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG5leHBvcnRzLnNwbGl0MzIgPSBzcGxpdDMyO1xuXG5mdW5jdGlvbiByb3RyMzIodywgYikge1xuICByZXR1cm4gKHcgPj4+IGIpIHwgKHcgPDwgKDMyIC0gYikpO1xufVxuZXhwb3J0cy5yb3RyMzIgPSByb3RyMzI7XG5cbmZ1bmN0aW9uIHJvdGwzMih3LCBiKSB7XG4gIHJldHVybiAodyA8PCBiKSB8ICh3ID4+PiAoMzIgLSBiKSk7XG59XG5leHBvcnRzLnJvdGwzMiA9IHJvdGwzMjtcblxuZnVuY3Rpb24gc3VtMzIoYSwgYikge1xuICByZXR1cm4gKGEgKyBiKSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtMzIgPSBzdW0zMjtcblxuZnVuY3Rpb24gc3VtMzJfMyhhLCBiLCBjKSB7XG4gIHJldHVybiAoYSArIGIgKyBjKSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtMzJfMyA9IHN1bTMyXzM7XG5cbmZ1bmN0aW9uIHN1bTMyXzQoYSwgYiwgYywgZCkge1xuICByZXR1cm4gKGEgKyBiICsgYyArIGQpID4+PiAwO1xufVxuZXhwb3J0cy5zdW0zMl80ID0gc3VtMzJfNDtcblxuZnVuY3Rpb24gc3VtMzJfNShhLCBiLCBjLCBkLCBlKSB7XG4gIHJldHVybiAoYSArIGIgKyBjICsgZCArIGUpID4+PiAwO1xufVxuZXhwb3J0cy5zdW0zMl81ID0gc3VtMzJfNTtcblxuZnVuY3Rpb24gc3VtNjQoYnVmLCBwb3MsIGFoLCBhbCkge1xuICB2YXIgYmggPSBidWZbcG9zXTtcbiAgdmFyIGJsID0gYnVmW3BvcyArIDFdO1xuXG4gIHZhciBsbyA9IChhbCArIGJsKSA+Pj4gMDtcbiAgdmFyIGhpID0gKGxvIDwgYWwgPyAxIDogMCkgKyBhaCArIGJoO1xuICBidWZbcG9zXSA9IGhpID4+PiAwO1xuICBidWZbcG9zICsgMV0gPSBsbztcbn1cbmV4cG9ydHMuc3VtNjQgPSBzdW02NDtcblxuZnVuY3Rpb24gc3VtNjRfaGkoYWgsIGFsLCBiaCwgYmwpIHtcbiAgdmFyIGxvID0gKGFsICsgYmwpID4+PiAwO1xuICB2YXIgaGkgPSAobG8gPCBhbCA/IDEgOiAwKSArIGFoICsgYmg7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtNjRfaGkgPSBzdW02NF9oaTtcblxuZnVuY3Rpb24gc3VtNjRfbG8oYWgsIGFsLCBiaCwgYmwpIHtcbiAgdmFyIGxvID0gYWwgKyBibDtcbiAgcmV0dXJuIGxvID4+PiAwO1xufVxuZXhwb3J0cy5zdW02NF9sbyA9IHN1bTY0X2xvO1xuXG5mdW5jdGlvbiBzdW02NF80X2hpKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCkge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgbG8gPSBhbDtcbiAgbG8gPSAobG8gKyBibCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgYWwgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBjbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgY2wgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBkbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgZGwgPyAxIDogMDtcblxuICB2YXIgaGkgPSBhaCArIGJoICsgY2ggKyBkaCArIGNhcnJ5O1xuICByZXR1cm4gaGkgPj4+IDA7XG59XG5leHBvcnRzLnN1bTY0XzRfaGkgPSBzdW02NF80X2hpO1xuXG5mdW5jdGlvbiBzdW02NF80X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCkge1xuICB2YXIgbG8gPSBhbCArIGJsICsgY2wgKyBkbDtcbiAgcmV0dXJuIGxvID4+PiAwO1xufVxuZXhwb3J0cy5zdW02NF80X2xvID0gc3VtNjRfNF9sbztcblxuZnVuY3Rpb24gc3VtNjRfNV9oaShhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwsIGVoLCBlbCkge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgbG8gPSBhbDtcbiAgbG8gPSAobG8gKyBibCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgYWwgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBjbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgY2wgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBkbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgZGwgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBlbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgZWwgPyAxIDogMDtcblxuICB2YXIgaGkgPSBhaCArIGJoICsgY2ggKyBkaCArIGVoICsgY2Fycnk7XG4gIHJldHVybiBoaSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtNjRfNV9oaSA9IHN1bTY0XzVfaGk7XG5cbmZ1bmN0aW9uIHN1bTY0XzVfbG8oYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsLCBlaCwgZWwpIHtcbiAgdmFyIGxvID0gYWwgKyBibCArIGNsICsgZGwgKyBlbDtcblxuICByZXR1cm4gbG8gPj4+IDA7XG59XG5leHBvcnRzLnN1bTY0XzVfbG8gPSBzdW02NF81X2xvO1xuXG5mdW5jdGlvbiByb3RyNjRfaGkoYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWwgPDwgKDMyIC0gbnVtKSkgfCAoYWggPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufVxuZXhwb3J0cy5yb3RyNjRfaGkgPSByb3RyNjRfaGk7XG5cbmZ1bmN0aW9uIHJvdHI2NF9sbyhhaCwgYWwsIG51bSkge1xuICB2YXIgciA9IChhaCA8PCAoMzIgLSBudW0pKSB8IChhbCA+Pj4gbnVtKTtcbiAgcmV0dXJuIHIgPj4+IDA7XG59XG5leHBvcnRzLnJvdHI2NF9sbyA9IHJvdHI2NF9sbztcblxuZnVuY3Rpb24gc2hyNjRfaGkoYWgsIGFsLCBudW0pIHtcbiAgcmV0dXJuIGFoID4+PiBudW07XG59XG5leHBvcnRzLnNocjY0X2hpID0gc2hyNjRfaGk7XG5cbmZ1bmN0aW9uIHNocjY0X2xvKGFoLCBhbCwgbnVtKSB7XG4gIHZhciByID0gKGFoIDw8ICgzMiAtIG51bSkpIHwgKGFsID4+PiBudW0pO1xuICByZXR1cm4gciA+Pj4gMDtcbn1cbmV4cG9ydHMuc2hyNjRfbG8gPSBzaHI2NF9sbztcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtY3J5cHRvLXV0aWxzJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG5mdW5jdGlvbiBIbWFjRFJCRyhvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBIbWFjRFJCRykpXG4gICAgcmV0dXJuIG5ldyBIbWFjRFJCRyhvcHRpb25zKTtcbiAgdGhpcy5oYXNoID0gb3B0aW9ucy5oYXNoO1xuICB0aGlzLnByZWRSZXNpc3QgPSAhIW9wdGlvbnMucHJlZFJlc2lzdDtcblxuICB0aGlzLm91dExlbiA9IHRoaXMuaGFzaC5vdXRTaXplO1xuICB0aGlzLm1pbkVudHJvcHkgPSBvcHRpb25zLm1pbkVudHJvcHkgfHwgdGhpcy5oYXNoLmhtYWNTdHJlbmd0aDtcblxuICB0aGlzLl9yZXNlZWQgPSBudWxsO1xuICB0aGlzLnJlc2VlZEludGVydmFsID0gbnVsbDtcbiAgdGhpcy5LID0gbnVsbDtcbiAgdGhpcy5WID0gbnVsbDtcblxuICB2YXIgZW50cm9weSA9IHV0aWxzLnRvQXJyYXkob3B0aW9ucy5lbnRyb3B5LCBvcHRpb25zLmVudHJvcHlFbmMgfHwgJ2hleCcpO1xuICB2YXIgbm9uY2UgPSB1dGlscy50b0FycmF5KG9wdGlvbnMubm9uY2UsIG9wdGlvbnMubm9uY2VFbmMgfHwgJ2hleCcpO1xuICB2YXIgcGVycyA9IHV0aWxzLnRvQXJyYXkob3B0aW9ucy5wZXJzLCBvcHRpb25zLnBlcnNFbmMgfHwgJ2hleCcpO1xuICBhc3NlcnQoZW50cm9weS5sZW5ndGggPj0gKHRoaXMubWluRW50cm9weSAvIDgpLFxuICAgICAgICAgJ05vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogJyArIHRoaXMubWluRW50cm9weSArICcgYml0cycpO1xuICB0aGlzLl9pbml0KGVudHJvcHksIG5vbmNlLCBwZXJzKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gSG1hY0RSQkc7XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQoZW50cm9weSwgbm9uY2UsIHBlcnMpIHtcbiAgdmFyIHNlZWQgPSBlbnRyb3B5LmNvbmNhdChub25jZSkuY29uY2F0KHBlcnMpO1xuXG4gIHRoaXMuSyA9IG5ldyBBcnJheSh0aGlzLm91dExlbiAvIDgpO1xuICB0aGlzLlYgPSBuZXcgQXJyYXkodGhpcy5vdXRMZW4gLyA4KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLlYubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLktbaV0gPSAweDAwO1xuICAgIHRoaXMuVltpXSA9IDB4MDE7XG4gIH1cblxuICB0aGlzLl91cGRhdGUoc2VlZCk7XG4gIHRoaXMuX3Jlc2VlZCA9IDE7XG4gIHRoaXMucmVzZWVkSW50ZXJ2YWwgPSAweDEwMDAwMDAwMDAwMDA7ICAvLyAyXjQ4XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuX2htYWMgPSBmdW5jdGlvbiBobWFjKCkge1xuICByZXR1cm4gbmV3IGhhc2guaG1hYyh0aGlzLmhhc2gsIHRoaXMuSyk7XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShzZWVkKSB7XG4gIHZhciBrbWFjID0gdGhpcy5faG1hYygpXG4gICAgICAgICAgICAgICAgIC51cGRhdGUodGhpcy5WKVxuICAgICAgICAgICAgICAgICAudXBkYXRlKFsgMHgwMCBdKTtcbiAgaWYgKHNlZWQpXG4gICAga21hYyA9IGttYWMudXBkYXRlKHNlZWQpO1xuICB0aGlzLksgPSBrbWFjLmRpZ2VzdCgpO1xuICB0aGlzLlYgPSB0aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7XG4gIGlmICghc2VlZClcbiAgICByZXR1cm47XG5cbiAgdGhpcy5LID0gdGhpcy5faG1hYygpXG4gICAgICAgICAgICAgICAudXBkYXRlKHRoaXMuVilcbiAgICAgICAgICAgICAgIC51cGRhdGUoWyAweDAxIF0pXG4gICAgICAgICAgICAgICAudXBkYXRlKHNlZWQpXG4gICAgICAgICAgICAgICAuZGlnZXN0KCk7XG4gIHRoaXMuViA9IHRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKTtcbn07XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5yZXNlZWQgPSBmdW5jdGlvbiByZXNlZWQoZW50cm9weSwgZW50cm9weUVuYywgYWRkLCBhZGRFbmMpIHtcbiAgLy8gT3B0aW9uYWwgZW50cm9weSBlbmNcbiAgaWYgKHR5cGVvZiBlbnRyb3B5RW5jICE9PSAnc3RyaW5nJykge1xuICAgIGFkZEVuYyA9IGFkZDtcbiAgICBhZGQgPSBlbnRyb3B5RW5jO1xuICAgIGVudHJvcHlFbmMgPSBudWxsO1xuICB9XG5cbiAgZW50cm9weSA9IHV0aWxzLnRvQXJyYXkoZW50cm9weSwgZW50cm9weUVuYyk7XG4gIGFkZCA9IHV0aWxzLnRvQXJyYXkoYWRkLCBhZGRFbmMpO1xuXG4gIGFzc2VydChlbnRyb3B5Lmxlbmd0aCA+PSAodGhpcy5taW5FbnRyb3B5IC8gOCksXG4gICAgICAgICAnTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAnICsgdGhpcy5taW5FbnRyb3B5ICsgJyBiaXRzJyk7XG5cbiAgdGhpcy5fdXBkYXRlKGVudHJvcHkuY29uY2F0KGFkZCB8fCBbXSkpO1xuICB0aGlzLl9yZXNlZWQgPSAxO1xufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLmdlbmVyYXRlID0gZnVuY3Rpb24gZ2VuZXJhdGUobGVuLCBlbmMsIGFkZCwgYWRkRW5jKSB7XG4gIGlmICh0aGlzLl9yZXNlZWQgPiB0aGlzLnJlc2VlZEludGVydmFsKVxuICAgIHRocm93IG5ldyBFcnJvcignUmVzZWVkIGlzIHJlcXVpcmVkJyk7XG5cbiAgLy8gT3B0aW9uYWwgZW5jb2RpbmdcbiAgaWYgKHR5cGVvZiBlbmMgIT09ICdzdHJpbmcnKSB7XG4gICAgYWRkRW5jID0gYWRkO1xuICAgIGFkZCA9IGVuYztcbiAgICBlbmMgPSBudWxsO1xuICB9XG5cbiAgLy8gT3B0aW9uYWwgYWRkaXRpb25hbCBkYXRhXG4gIGlmIChhZGQpIHtcbiAgICBhZGQgPSB1dGlscy50b0FycmF5KGFkZCwgYWRkRW5jIHx8ICdoZXgnKTtcbiAgICB0aGlzLl91cGRhdGUoYWRkKTtcbiAgfVxuXG4gIHZhciB0ZW1wID0gW107XG4gIHdoaWxlICh0ZW1wLmxlbmd0aCA8IGxlbikge1xuICAgIHRoaXMuViA9IHRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKTtcbiAgICB0ZW1wID0gdGVtcC5jb25jYXQodGhpcy5WKTtcbiAgfVxuXG4gIHZhciByZXMgPSB0ZW1wLnNsaWNlKDAsIGxlbik7XG4gIHRoaXMuX3VwZGF0ZShhZGQpO1xuICB0aGlzLl9yZXNlZWQrKztcbiAgcmV0dXJuIHV0aWxzLmVuY29kZShyZXMsIGVuYyk7XG59O1xuIiwiLyohIGllZWU3NTQuIEJTRC0zLUNsYXVzZSBMaWNlbnNlLiBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmcvb3BlbnNvdXJjZT4gKi9cbmV4cG9ydHMucmVhZCA9IGZ1bmN0aW9uIChidWZmZXIsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7XG4gIHZhciBlLCBtXG4gIHZhciBlTGVuID0gKG5CeXRlcyAqIDgpIC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBuQml0cyA9IC03XG4gIHZhciBpID0gaXNMRSA/IChuQnl0ZXMgLSAxKSA6IDBcbiAgdmFyIGQgPSBpc0xFID8gLTEgOiAxXG4gIHZhciBzID0gYnVmZmVyW29mZnNldCArIGldXG5cbiAgaSArPSBkXG5cbiAgZSA9IHMgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgcyA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gZUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBlID0gKGUgKiAyNTYpICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgbSA9IGUgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgZSA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gbUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBtID0gKG0gKiAyNTYpICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgaWYgKGUgPT09IDApIHtcbiAgICBlID0gMSAtIGVCaWFzXG4gIH0gZWxzZSBpZiAoZSA9PT0gZU1heCkge1xuICAgIHJldHVybiBtID8gTmFOIDogKChzID8gLTEgOiAxKSAqIEluZmluaXR5KVxuICB9IGVsc2Uge1xuICAgIG0gPSBtICsgTWF0aC5wb3coMiwgbUxlbilcbiAgICBlID0gZSAtIGVCaWFzXG4gIH1cbiAgcmV0dXJuIChzID8gLTEgOiAxKSAqIG0gKiBNYXRoLnBvdygyLCBlIC0gbUxlbilcbn1cblxuZXhwb3J0cy53cml0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIHZhbHVlLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbSwgY1xuICB2YXIgZUxlbiA9IChuQnl0ZXMgKiA4KSAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgcnQgPSAobUxlbiA9PT0gMjMgPyBNYXRoLnBvdygyLCAtMjQpIC0gTWF0aC5wb3coMiwgLTc3KSA6IDApXG4gIHZhciBpID0gaXNMRSA/IDAgOiAobkJ5dGVzIC0gMSlcbiAgdmFyIGQgPSBpc0xFID8gMSA6IC0xXG4gIHZhciBzID0gdmFsdWUgPCAwIHx8ICh2YWx1ZSA9PT0gMCAmJiAxIC8gdmFsdWUgPCAwKSA/IDEgOiAwXG5cbiAgdmFsdWUgPSBNYXRoLmFicyh2YWx1ZSlcblxuICBpZiAoaXNOYU4odmFsdWUpIHx8IHZhbHVlID09PSBJbmZpbml0eSkge1xuICAgIG0gPSBpc05hTih2YWx1ZSkgPyAxIDogMFxuICAgIGUgPSBlTWF4XG4gIH0gZWxzZSB7XG4gICAgZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsdWUpIC8gTWF0aC5MTjIpXG4gICAgaWYgKHZhbHVlICogKGMgPSBNYXRoLnBvdygyLCAtZSkpIDwgMSkge1xuICAgICAgZS0tXG4gICAgICBjICo9IDJcbiAgICB9XG4gICAgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICB2YWx1ZSArPSBydCAvIGNcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgKz0gcnQgKiBNYXRoLnBvdygyLCAxIC0gZUJpYXMpXG4gICAgfVxuICAgIGlmICh2YWx1ZSAqIGMgPj0gMikge1xuICAgICAgZSsrXG4gICAgICBjIC89IDJcbiAgICB9XG5cbiAgICBpZiAoZSArIGVCaWFzID49IGVNYXgpIHtcbiAgICAgIG0gPSAwXG4gICAgICBlID0gZU1heFxuICAgIH0gZWxzZSBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIG0gPSAoKHZhbHVlICogYykgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gZSArIGVCaWFzXG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSB2YWx1ZSAqIE1hdGgucG93KDIsIGVCaWFzIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IDBcbiAgICB9XG4gIH1cblxuICBmb3IgKDsgbUxlbiA+PSA4OyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBtICYgMHhmZiwgaSArPSBkLCBtIC89IDI1NiwgbUxlbiAtPSA4KSB7fVxuXG4gIGUgPSAoZSA8PCBtTGVuKSB8IG1cbiAgZUxlbiArPSBtTGVuXG4gIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW29mZnNldCArIGldID0gZSAmIDB4ZmYsIGkgKz0gZCwgZSAvPSAyNTYsIGVMZW4gLT0gOCkge31cblxuICBidWZmZXJbb2Zmc2V0ICsgaSAtIGRdIHw9IHMgKiAxMjhcbn1cbiIsImlmICh0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAvLyBpbXBsZW1lbnRhdGlvbiBmcm9tIHN0YW5kYXJkIG5vZGUuanMgJ3V0aWwnIG1vZHVsZVxuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGlmIChzdXBlckN0b3IpIHtcbiAgICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgICBjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDdG9yLnByb3RvdHlwZSwge1xuICAgICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICAgIHZhbHVlOiBjdG9yLFxuICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfTtcbn0gZWxzZSB7XG4gIC8vIG9sZCBzY2hvb2wgc2hpbSBmb3Igb2xkIGJyb3dzZXJzXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgaWYgKHN1cGVyQ3Rvcikge1xuICAgICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9XG4gICAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlXG4gICAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpXG4gICAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3JcbiAgICB9XG4gIH1cbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhc1RvU3RyaW5nVGFnID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgU3ltYm9sLnRvU3RyaW5nVGFnID09PSAnc3ltYm9sJztcbnZhciBjYWxsQm91bmQgPSByZXF1aXJlKCdjYWxsLWJpbmQvY2FsbEJvdW5kJyk7XG5cbnZhciAkdG9TdHJpbmcgPSBjYWxsQm91bmQoJ09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcnKTtcblxudmFyIGlzU3RhbmRhcmRBcmd1bWVudHMgPSBmdW5jdGlvbiBpc0FyZ3VtZW50cyh2YWx1ZSkge1xuXHRpZiAoaGFzVG9TdHJpbmdUYWcgJiYgdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiBTeW1ib2wudG9TdHJpbmdUYWcgaW4gdmFsdWUpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuICR0b1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xufTtcblxudmFyIGlzTGVnYWN5QXJndW1lbnRzID0gZnVuY3Rpb24gaXNBcmd1bWVudHModmFsdWUpIHtcblx0aWYgKGlzU3RhbmRhcmRBcmd1bWVudHModmFsdWUpKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0cmV0dXJuIHZhbHVlICE9PSBudWxsICYmXG5cdFx0dHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuXHRcdHR5cGVvZiB2YWx1ZS5sZW5ndGggPT09ICdudW1iZXInICYmXG5cdFx0dmFsdWUubGVuZ3RoID49IDAgJiZcblx0XHQkdG9TdHJpbmcodmFsdWUpICE9PSAnW29iamVjdCBBcnJheV0nICYmXG5cdFx0JHRvU3RyaW5nKHZhbHVlLmNhbGxlZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG59O1xuXG52YXIgc3VwcG9ydHNTdGFuZGFyZEFyZ3VtZW50cyA9IChmdW5jdGlvbiAoKSB7XG5cdHJldHVybiBpc1N0YW5kYXJkQXJndW1lbnRzKGFyZ3VtZW50cyk7XG59KCkpO1xuXG5pc1N0YW5kYXJkQXJndW1lbnRzLmlzTGVnYWN5QXJndW1lbnRzID0gaXNMZWdhY3lBcmd1bWVudHM7IC8vIGZvciB0ZXN0c1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN1cHBvcnRzU3RhbmRhcmRBcmd1bWVudHMgPyBpc1N0YW5kYXJkQXJndW1lbnRzIDogaXNMZWdhY3lBcmd1bWVudHM7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgZm5Ub1N0ciA9IEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZztcbnZhciBpc0ZuUmVnZXggPSAvXlxccyooPzpmdW5jdGlvbik/XFwqLztcbnZhciBoYXNUb1N0cmluZ1RhZyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIFN5bWJvbC50b1N0cmluZ1RhZyA9PT0gJ3N5bWJvbCc7XG52YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG52YXIgZ2V0R2VuZXJhdG9yRnVuYyA9IGZ1bmN0aW9uICgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjb25zaXN0ZW50LXJldHVyblxuXHRpZiAoIWhhc1RvU3RyaW5nVGFnKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdHRyeSB7XG5cdFx0cmV0dXJuIEZ1bmN0aW9uKCdyZXR1cm4gZnVuY3Rpb24qKCkge30nKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdH1cbn07XG52YXIgR2VuZXJhdG9yRnVuY3Rpb247XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNHZW5lcmF0b3JGdW5jdGlvbihmbikge1xuXHRpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGlmIChpc0ZuUmVnZXgudGVzdChmblRvU3RyLmNhbGwoZm4pKSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdGlmICghaGFzVG9TdHJpbmdUYWcpIHtcblx0XHR2YXIgc3RyID0gdG9TdHIuY2FsbChmbik7XG5cdFx0cmV0dXJuIHN0ciA9PT0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJztcblx0fVxuXHRpZiAoIWdldFByb3RvKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGlmICh0eXBlb2YgR2VuZXJhdG9yRnVuY3Rpb24gPT09ICd1bmRlZmluZWQnKSB7XG5cdFx0dmFyIGdlbmVyYXRvckZ1bmMgPSBnZXRHZW5lcmF0b3JGdW5jKCk7XG5cdFx0R2VuZXJhdG9yRnVuY3Rpb24gPSBnZW5lcmF0b3JGdW5jID8gZ2V0UHJvdG8oZ2VuZXJhdG9yRnVuYykgOiBmYWxzZTtcblx0fVxuXHRyZXR1cm4gZ2V0UHJvdG8oZm4pID09PSBHZW5lcmF0b3JGdW5jdGlvbjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1udW1iZXIuaXNuYW4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc05hTih2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGNhbGxCaW5kID0gcmVxdWlyZSgnY2FsbC1iaW5kJyk7XG52YXIgZGVmaW5lID0gcmVxdWlyZSgnZGVmaW5lLXByb3BlcnRpZXMnKTtcblxudmFyIGltcGxlbWVudGF0aW9uID0gcmVxdWlyZSgnLi9pbXBsZW1lbnRhdGlvbicpO1xudmFyIGdldFBvbHlmaWxsID0gcmVxdWlyZSgnLi9wb2x5ZmlsbCcpO1xudmFyIHNoaW0gPSByZXF1aXJlKCcuL3NoaW0nKTtcblxudmFyIHBvbHlmaWxsID0gY2FsbEJpbmQoZ2V0UG9seWZpbGwoKSwgTnVtYmVyKTtcblxuLyogaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW51bWJlci5pc25hbiAqL1xuXG5kZWZpbmUocG9seWZpbGwsIHtcblx0Z2V0UG9seWZpbGw6IGdldFBvbHlmaWxsLFxuXHRpbXBsZW1lbnRhdGlvbjogaW1wbGVtZW50YXRpb24sXG5cdHNoaW06IHNoaW1cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBvbHlmaWxsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2V0UG9seWZpbGwoKSB7XG5cdGlmIChOdW1iZXIuaXNOYU4gJiYgTnVtYmVyLmlzTmFOKE5hTikgJiYgIU51bWJlci5pc05hTignYScpKSB7XG5cdFx0cmV0dXJuIE51bWJlci5pc05hTjtcblx0fVxuXHRyZXR1cm4gaW1wbGVtZW50YXRpb247XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZGVmaW5lID0gcmVxdWlyZSgnZGVmaW5lLXByb3BlcnRpZXMnKTtcbnZhciBnZXRQb2x5ZmlsbCA9IHJlcXVpcmUoJy4vcG9seWZpbGwnKTtcblxuLyogaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW51bWJlci5pc25hbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNoaW1OdW1iZXJJc05hTigpIHtcblx0dmFyIHBvbHlmaWxsID0gZ2V0UG9seWZpbGwoKTtcblx0ZGVmaW5lKE51bWJlciwgeyBpc05hTjogcG9seWZpbGwgfSwge1xuXHRcdGlzTmFOOiBmdW5jdGlvbiB0ZXN0SXNOYU4oKSB7XG5cdFx0XHRyZXR1cm4gTnVtYmVyLmlzTmFOICE9PSBwb2x5ZmlsbDtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gcG9seWZpbGw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZm9yRWFjaCA9IHJlcXVpcmUoJ2ZvcmVhY2gnKTtcbnZhciBhdmFpbGFibGVUeXBlZEFycmF5cyA9IHJlcXVpcmUoJ2F2YWlsYWJsZS10eXBlZC1hcnJheXMnKTtcbnZhciBjYWxsQm91bmQgPSByZXF1aXJlKCdjYWxsLWJpbmQvY2FsbEJvdW5kJyk7XG5cbnZhciAkdG9TdHJpbmcgPSBjYWxsQm91bmQoJ09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcnKTtcbnZhciBoYXNTeW1ib2xzID0gcmVxdWlyZSgnaGFzLXN5bWJvbHMnKSgpO1xudmFyIGhhc1RvU3RyaW5nVGFnID0gaGFzU3ltYm9scyAmJiB0eXBlb2YgU3ltYm9sLnRvU3RyaW5nVGFnID09PSAnc3ltYm9sJztcblxudmFyIHR5cGVkQXJyYXlzID0gYXZhaWxhYmxlVHlwZWRBcnJheXMoKTtcblxudmFyICRpbmRleE9mID0gY2FsbEJvdW5kKCdBcnJheS5wcm90b3R5cGUuaW5kZXhPZicsIHRydWUpIHx8IGZ1bmN0aW9uIGluZGV4T2YoYXJyYXksIHZhbHVlKSB7XG5cdGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpICs9IDEpIHtcblx0XHRpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG5cdFx0XHRyZXR1cm4gaTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIC0xO1xufTtcbnZhciAkc2xpY2UgPSBjYWxsQm91bmQoJ1N0cmluZy5wcm90b3R5cGUuc2xpY2UnKTtcbnZhciB0b1N0clRhZ3MgPSB7fTtcbnZhciBnT1BEID0gcmVxdWlyZSgnZXMtYWJzdHJhY3QvaGVscGVycy9nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjsgLy8gcmVxdWlyZSgnZ2V0cHJvdG90eXBlb2YnKTtcbmlmIChoYXNUb1N0cmluZ1RhZyAmJiBnT1BEICYmIGdldFByb3RvdHlwZU9mKSB7XG5cdGZvckVhY2godHlwZWRBcnJheXMsIGZ1bmN0aW9uICh0eXBlZEFycmF5KSB7XG5cdFx0dmFyIGFyciA9IG5ldyBnbG9iYWxbdHlwZWRBcnJheV0oKTtcblx0XHRpZiAoIShTeW1ib2wudG9TdHJpbmdUYWcgaW4gYXJyKSkge1xuXHRcdFx0dGhyb3cgbmV3IEV2YWxFcnJvcigndGhpcyBlbmdpbmUgaGFzIHN1cHBvcnQgZm9yIFN5bWJvbC50b1N0cmluZ1RhZywgYnV0ICcgKyB0eXBlZEFycmF5ICsgJyBkb2VzIG5vdCBoYXZlIHRoZSBwcm9wZXJ0eSEgUGxlYXNlIHJlcG9ydCB0aGlzLicpO1xuXHRcdH1cblx0XHR2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGVPZihhcnIpO1xuXHRcdHZhciBkZXNjcmlwdG9yID0gZ09QRChwcm90bywgU3ltYm9sLnRvU3RyaW5nVGFnKTtcblx0XHRpZiAoIWRlc2NyaXB0b3IpIHtcblx0XHRcdHZhciBzdXBlclByb3RvID0gZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xuXHRcdFx0ZGVzY3JpcHRvciA9IGdPUEQoc3VwZXJQcm90bywgU3ltYm9sLnRvU3RyaW5nVGFnKTtcblx0XHR9XG5cdFx0dG9TdHJUYWdzW3R5cGVkQXJyYXldID0gZGVzY3JpcHRvci5nZXQ7XG5cdH0pO1xufVxuXG52YXIgdHJ5VHlwZWRBcnJheXMgPSBmdW5jdGlvbiB0cnlBbGxUeXBlZEFycmF5cyh2YWx1ZSkge1xuXHR2YXIgYW55VHJ1ZSA9IGZhbHNlO1xuXHRmb3JFYWNoKHRvU3RyVGFncywgZnVuY3Rpb24gKGdldHRlciwgdHlwZWRBcnJheSkge1xuXHRcdGlmICghYW55VHJ1ZSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0YW55VHJ1ZSA9IGdldHRlci5jYWxsKHZhbHVlKSA9PT0gdHlwZWRBcnJheTtcblx0XHRcdH0gY2F0Y2ggKGUpIHsgLyoqLyB9XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGFueVRydWU7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzVHlwZWRBcnJheSh2YWx1ZSkge1xuXHRpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICghaGFzVG9TdHJpbmdUYWcpIHtcblx0XHR2YXIgdGFnID0gJHNsaWNlKCR0b1N0cmluZyh2YWx1ZSksIDgsIC0xKTtcblx0XHRyZXR1cm4gJGluZGV4T2YodHlwZWRBcnJheXMsIHRhZykgPiAtMTtcblx0fVxuXHRpZiAoIWdPUEQpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdHJldHVybiB0cnlUeXBlZEFycmF5cyh2YWx1ZSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaEJhc2UgPSByZXF1aXJlKCdoYXNoLWJhc2UnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBBUlJBWTE2ID0gbmV3IEFycmF5KDE2KVxuXG5mdW5jdGlvbiBNRDUgKCkge1xuICBIYXNoQmFzZS5jYWxsKHRoaXMsIDY0KVxuXG4gIC8vIHN0YXRlXG4gIHRoaXMuX2EgPSAweDY3NDUyMzAxXG4gIHRoaXMuX2IgPSAweGVmY2RhYjg5XG4gIHRoaXMuX2MgPSAweDk4YmFkY2ZlXG4gIHRoaXMuX2QgPSAweDEwMzI1NDc2XG59XG5cbmluaGVyaXRzKE1ENSwgSGFzaEJhc2UpXG5cbk1ENS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIE0gPSBBUlJBWTE2XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgTVtpXSA9IHRoaXMuX2Jsb2NrLnJlYWRJbnQzMkxFKGkgKiA0KVxuXG4gIHZhciBhID0gdGhpcy5fYVxuICB2YXIgYiA9IHRoaXMuX2JcbiAgdmFyIGMgPSB0aGlzLl9jXG4gIHZhciBkID0gdGhpcy5fZFxuXG4gIGEgPSBmbkYoYSwgYiwgYywgZCwgTVswXSwgMHhkNzZhYTQ3OCwgNylcbiAgZCA9IGZuRihkLCBhLCBiLCBjLCBNWzFdLCAweGU4YzdiNzU2LCAxMilcbiAgYyA9IGZuRihjLCBkLCBhLCBiLCBNWzJdLCAweDI0MjA3MGRiLCAxNylcbiAgYiA9IGZuRihiLCBjLCBkLCBhLCBNWzNdLCAweGMxYmRjZWVlLCAyMilcbiAgYSA9IGZuRihhLCBiLCBjLCBkLCBNWzRdLCAweGY1N2MwZmFmLCA3KVxuICBkID0gZm5GKGQsIGEsIGIsIGMsIE1bNV0sIDB4NDc4N2M2MmEsIDEyKVxuICBjID0gZm5GKGMsIGQsIGEsIGIsIE1bNl0sIDB4YTgzMDQ2MTMsIDE3KVxuICBiID0gZm5GKGIsIGMsIGQsIGEsIE1bN10sIDB4ZmQ0Njk1MDEsIDIyKVxuICBhID0gZm5GKGEsIGIsIGMsIGQsIE1bOF0sIDB4Njk4MDk4ZDgsIDcpXG4gIGQgPSBmbkYoZCwgYSwgYiwgYywgTVs5XSwgMHg4YjQ0ZjdhZiwgMTIpXG4gIGMgPSBmbkYoYywgZCwgYSwgYiwgTVsxMF0sIDB4ZmZmZjViYjEsIDE3KVxuICBiID0gZm5GKGIsIGMsIGQsIGEsIE1bMTFdLCAweDg5NWNkN2JlLCAyMilcbiAgYSA9IGZuRihhLCBiLCBjLCBkLCBNWzEyXSwgMHg2YjkwMTEyMiwgNylcbiAgZCA9IGZuRihkLCBhLCBiLCBjLCBNWzEzXSwgMHhmZDk4NzE5MywgMTIpXG4gIGMgPSBmbkYoYywgZCwgYSwgYiwgTVsxNF0sIDB4YTY3OTQzOGUsIDE3KVxuICBiID0gZm5GKGIsIGMsIGQsIGEsIE1bMTVdLCAweDQ5YjQwODIxLCAyMilcblxuICBhID0gZm5HKGEsIGIsIGMsIGQsIE1bMV0sIDB4ZjYxZTI1NjIsIDUpXG4gIGQgPSBmbkcoZCwgYSwgYiwgYywgTVs2XSwgMHhjMDQwYjM0MCwgOSlcbiAgYyA9IGZuRyhjLCBkLCBhLCBiLCBNWzExXSwgMHgyNjVlNWE1MSwgMTQpXG4gIGIgPSBmbkcoYiwgYywgZCwgYSwgTVswXSwgMHhlOWI2YzdhYSwgMjApXG4gIGEgPSBmbkcoYSwgYiwgYywgZCwgTVs1XSwgMHhkNjJmMTA1ZCwgNSlcbiAgZCA9IGZuRyhkLCBhLCBiLCBjLCBNWzEwXSwgMHgwMjQ0MTQ1MywgOSlcbiAgYyA9IGZuRyhjLCBkLCBhLCBiLCBNWzE1XSwgMHhkOGExZTY4MSwgMTQpXG4gIGIgPSBmbkcoYiwgYywgZCwgYSwgTVs0XSwgMHhlN2QzZmJjOCwgMjApXG4gIGEgPSBmbkcoYSwgYiwgYywgZCwgTVs5XSwgMHgyMWUxY2RlNiwgNSlcbiAgZCA9IGZuRyhkLCBhLCBiLCBjLCBNWzE0XSwgMHhjMzM3MDdkNiwgOSlcbiAgYyA9IGZuRyhjLCBkLCBhLCBiLCBNWzNdLCAweGY0ZDUwZDg3LCAxNClcbiAgYiA9IGZuRyhiLCBjLCBkLCBhLCBNWzhdLCAweDQ1NWExNGVkLCAyMClcbiAgYSA9IGZuRyhhLCBiLCBjLCBkLCBNWzEzXSwgMHhhOWUzZTkwNSwgNSlcbiAgZCA9IGZuRyhkLCBhLCBiLCBjLCBNWzJdLCAweGZjZWZhM2Y4LCA5KVxuICBjID0gZm5HKGMsIGQsIGEsIGIsIE1bN10sIDB4Njc2ZjAyZDksIDE0KVxuICBiID0gZm5HKGIsIGMsIGQsIGEsIE1bMTJdLCAweDhkMmE0YzhhLCAyMClcblxuICBhID0gZm5IKGEsIGIsIGMsIGQsIE1bNV0sIDB4ZmZmYTM5NDIsIDQpXG4gIGQgPSBmbkgoZCwgYSwgYiwgYywgTVs4XSwgMHg4NzcxZjY4MSwgMTEpXG4gIGMgPSBmbkgoYywgZCwgYSwgYiwgTVsxMV0sIDB4NmQ5ZDYxMjIsIDE2KVxuICBiID0gZm5IKGIsIGMsIGQsIGEsIE1bMTRdLCAweGZkZTUzODBjLCAyMylcbiAgYSA9IGZuSChhLCBiLCBjLCBkLCBNWzFdLCAweGE0YmVlYTQ0LCA0KVxuICBkID0gZm5IKGQsIGEsIGIsIGMsIE1bNF0sIDB4NGJkZWNmYTksIDExKVxuICBjID0gZm5IKGMsIGQsIGEsIGIsIE1bN10sIDB4ZjZiYjRiNjAsIDE2KVxuICBiID0gZm5IKGIsIGMsIGQsIGEsIE1bMTBdLCAweGJlYmZiYzcwLCAyMylcbiAgYSA9IGZuSChhLCBiLCBjLCBkLCBNWzEzXSwgMHgyODliN2VjNiwgNClcbiAgZCA9IGZuSChkLCBhLCBiLCBjLCBNWzBdLCAweGVhYTEyN2ZhLCAxMSlcbiAgYyA9IGZuSChjLCBkLCBhLCBiLCBNWzNdLCAweGQ0ZWYzMDg1LCAxNilcbiAgYiA9IGZuSChiLCBjLCBkLCBhLCBNWzZdLCAweDA0ODgxZDA1LCAyMylcbiAgYSA9IGZuSChhLCBiLCBjLCBkLCBNWzldLCAweGQ5ZDRkMDM5LCA0KVxuICBkID0gZm5IKGQsIGEsIGIsIGMsIE1bMTJdLCAweGU2ZGI5OWU1LCAxMSlcbiAgYyA9IGZuSChjLCBkLCBhLCBiLCBNWzE1XSwgMHgxZmEyN2NmOCwgMTYpXG4gIGIgPSBmbkgoYiwgYywgZCwgYSwgTVsyXSwgMHhjNGFjNTY2NSwgMjMpXG5cbiAgYSA9IGZuSShhLCBiLCBjLCBkLCBNWzBdLCAweGY0MjkyMjQ0LCA2KVxuICBkID0gZm5JKGQsIGEsIGIsIGMsIE1bN10sIDB4NDMyYWZmOTcsIDEwKVxuICBjID0gZm5JKGMsIGQsIGEsIGIsIE1bMTRdLCAweGFiOTQyM2E3LCAxNSlcbiAgYiA9IGZuSShiLCBjLCBkLCBhLCBNWzVdLCAweGZjOTNhMDM5LCAyMSlcbiAgYSA9IGZuSShhLCBiLCBjLCBkLCBNWzEyXSwgMHg2NTViNTljMywgNilcbiAgZCA9IGZuSShkLCBhLCBiLCBjLCBNWzNdLCAweDhmMGNjYzkyLCAxMClcbiAgYyA9IGZuSShjLCBkLCBhLCBiLCBNWzEwXSwgMHhmZmVmZjQ3ZCwgMTUpXG4gIGIgPSBmbkkoYiwgYywgZCwgYSwgTVsxXSwgMHg4NTg0NWRkMSwgMjEpXG4gIGEgPSBmbkkoYSwgYiwgYywgZCwgTVs4XSwgMHg2ZmE4N2U0ZiwgNilcbiAgZCA9IGZuSShkLCBhLCBiLCBjLCBNWzE1XSwgMHhmZTJjZTZlMCwgMTApXG4gIGMgPSBmbkkoYywgZCwgYSwgYiwgTVs2XSwgMHhhMzAxNDMxNCwgMTUpXG4gIGIgPSBmbkkoYiwgYywgZCwgYSwgTVsxM10sIDB4NGUwODExYTEsIDIxKVxuICBhID0gZm5JKGEsIGIsIGMsIGQsIE1bNF0sIDB4Zjc1MzdlODIsIDYpXG4gIGQgPSBmbkkoZCwgYSwgYiwgYywgTVsxMV0sIDB4YmQzYWYyMzUsIDEwKVxuICBjID0gZm5JKGMsIGQsIGEsIGIsIE1bMl0sIDB4MmFkN2QyYmIsIDE1KVxuICBiID0gZm5JKGIsIGMsIGQsIGEsIE1bOV0sIDB4ZWI4NmQzOTEsIDIxKVxuXG4gIHRoaXMuX2EgPSAodGhpcy5fYSArIGEpIHwgMFxuICB0aGlzLl9iID0gKHRoaXMuX2IgKyBiKSB8IDBcbiAgdGhpcy5fYyA9ICh0aGlzLl9jICsgYykgfCAwXG4gIHRoaXMuX2QgPSAodGhpcy5fZCArIGQpIHwgMFxufVxuXG5NRDUucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIGNyZWF0ZSBwYWRkaW5nIGFuZCBoYW5kbGUgYmxvY2tzXG4gIHRoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdID0gMHg4MFxuICBpZiAodGhpcy5fYmxvY2tPZmZzZXQgPiA1Nikge1xuICAgIHRoaXMuX2Jsb2NrLmZpbGwoMCwgdGhpcy5fYmxvY2tPZmZzZXQsIDY0KVxuICAgIHRoaXMuX3VwZGF0ZSgpXG4gICAgdGhpcy5fYmxvY2tPZmZzZXQgPSAwXG4gIH1cblxuICB0aGlzLl9ibG9jay5maWxsKDAsIHRoaXMuX2Jsb2NrT2Zmc2V0LCA1NilcbiAgdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMF0sIDU2KVxuICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFsxXSwgNjApXG4gIHRoaXMuX3VwZGF0ZSgpXG5cbiAgLy8gcHJvZHVjZSByZXN1bHRcbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgxNilcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9hLCAwKVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2IsIDQpXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fYywgOClcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9kLCAxMilcbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiByb3RsICh4LCBuKSB7XG4gIHJldHVybiAoeCA8PCBuKSB8ICh4ID4+PiAoMzIgLSBuKSlcbn1cblxuZnVuY3Rpb24gZm5GIChhLCBiLCBjLCBkLCBtLCBrLCBzKSB7XG4gIHJldHVybiAocm90bCgoYSArICgoYiAmIGMpIHwgKCh+YikgJiBkKSkgKyBtICsgaykgfCAwLCBzKSArIGIpIHwgMFxufVxuXG5mdW5jdGlvbiBmbkcgKGEsIGIsIGMsIGQsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKChiICYgZCkgfCAoYyAmICh+ZCkpKSArIG0gKyBrKSB8IDAsIHMpICsgYikgfCAwXG59XG5cbmZ1bmN0aW9uIGZuSCAoYSwgYiwgYywgZCwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoYiBeIGMgXiBkKSArIG0gKyBrKSB8IDAsIHMpICsgYikgfCAwXG59XG5cbmZ1bmN0aW9uIGZuSSAoYSwgYiwgYywgZCwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoKGMgXiAoYiB8ICh+ZCkpKSkgKyBtICsgaykgfCAwLCBzKSArIGIpIHwgMFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1ENVxuIiwidmFyIGJuID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBicm9yYW5kID0gcmVxdWlyZSgnYnJvcmFuZCcpO1xuXG5mdW5jdGlvbiBNaWxsZXJSYWJpbihyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQgfHwgbmV3IGJyb3JhbmQuUmFuZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBNaWxsZXJSYWJpbjtcblxuTWlsbGVyUmFiaW4uY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKHJhbmQpIHtcbiAgcmV0dXJuIG5ldyBNaWxsZXJSYWJpbihyYW5kKTtcbn07XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS5fcmFuZGJlbG93ID0gZnVuY3Rpb24gX3JhbmRiZWxvdyhuKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgbWluX2J5dGVzID0gTWF0aC5jZWlsKGxlbiAvIDgpO1xuXG4gIC8vIEdlbmVyYWdlIHJhbmRvbSBieXRlcyB1bnRpbCBhIG51bWJlciBsZXNzIHRoYW4gbiBpcyBmb3VuZC5cbiAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgMC4ubi0xIGhhdmUgYW4gZXF1YWwgcHJvYmFiaWxpdHkgb2YgYmVpbmcgc2VsZWN0ZWQuXG4gIGRvXG4gICAgdmFyIGEgPSBuZXcgYm4odGhpcy5yYW5kLmdlbmVyYXRlKG1pbl9ieXRlcykpO1xuICB3aGlsZSAoYS5jbXAobikgPj0gMCk7XG5cbiAgcmV0dXJuIGE7XG59O1xuXG5NaWxsZXJSYWJpbi5wcm90b3R5cGUuX3JhbmRyYW5nZSA9IGZ1bmN0aW9uIF9yYW5kcmFuZ2Uoc3RhcnQsIHN0b3ApIHtcbiAgLy8gR2VuZXJhdGUgYSByYW5kb20gbnVtYmVyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBzdGFydCBhbmQgbGVzcyB0aGFuIHN0b3AuXG4gIHZhciBzaXplID0gc3RvcC5zdWIoc3RhcnQpO1xuICByZXR1cm4gc3RhcnQuYWRkKHRoaXMuX3JhbmRiZWxvdyhzaXplKSk7XG59O1xuXG5NaWxsZXJSYWJpbi5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uIHRlc3QobiwgaywgY2IpIHtcbiAgdmFyIGxlbiA9IG4uYml0TGVuZ3RoKCk7XG4gIHZhciByZWQgPSBibi5tb250KG4pO1xuICB2YXIgcm9uZSA9IG5ldyBibigxKS50b1JlZChyZWQpO1xuXG4gIGlmICghaylcbiAgICBrID0gTWF0aC5tYXgoMSwgKGxlbiAvIDQ4KSB8IDApO1xuXG4gIC8vIEZpbmQgZCBhbmQgcywgKG4gLSAxKSA9ICgyIF4gcykgKiBkO1xuICB2YXIgbjEgPSBuLnN1Ym4oMSk7XG4gIGZvciAodmFyIHMgPSAwOyAhbjEudGVzdG4ocyk7IHMrKykge31cbiAgdmFyIGQgPSBuLnNocm4ocyk7XG5cbiAgdmFyIHJuMSA9IG4xLnRvUmVkKHJlZCk7XG5cbiAgdmFyIHByaW1lID0gdHJ1ZTtcbiAgZm9yICg7IGsgPiAwOyBrLS0pIHtcbiAgICB2YXIgYSA9IHRoaXMuX3JhbmRyYW5nZShuZXcgYm4oMiksIG4xKTtcbiAgICBpZiAoY2IpXG4gICAgICBjYihhKTtcblxuICAgIHZhciB4ID0gYS50b1JlZChyZWQpLnJlZFBvdyhkKTtcbiAgICBpZiAoeC5jbXAocm9uZSkgPT09IDAgfHwgeC5jbXAocm4xKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzOyBpKyspIHtcbiAgICAgIHggPSB4LnJlZFNxcigpO1xuXG4gICAgICBpZiAoeC5jbXAocm9uZSkgPT09IDApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICh4LmNtcChybjEpID09PSAwKVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gcylcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBwcmltZTtcbn07XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS5nZXREaXZpc29yID0gZnVuY3Rpb24gZ2V0RGl2aXNvcihuLCBrKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgcmVkID0gYm4ubW9udChuKTtcbiAgdmFyIHJvbmUgPSBuZXcgYm4oMSkudG9SZWQocmVkKTtcblxuICBpZiAoIWspXG4gICAgayA9IE1hdGgubWF4KDEsIChsZW4gLyA0OCkgfCAwKTtcblxuICAvLyBGaW5kIGQgYW5kIHMsIChuIC0gMSkgPSAoMiBeIHMpICogZDtcbiAgdmFyIG4xID0gbi5zdWJuKDEpO1xuICBmb3IgKHZhciBzID0gMDsgIW4xLnRlc3RuKHMpOyBzKyspIHt9XG4gIHZhciBkID0gbi5zaHJuKHMpO1xuXG4gIHZhciBybjEgPSBuMS50b1JlZChyZWQpO1xuXG4gIGZvciAoOyBrID4gMDsgay0tKSB7XG4gICAgdmFyIGEgPSB0aGlzLl9yYW5kcmFuZ2UobmV3IGJuKDIpLCBuMSk7XG5cbiAgICB2YXIgZyA9IG4uZ2NkKGEpO1xuICAgIGlmIChnLmNtcG4oMSkgIT09IDApXG4gICAgICByZXR1cm4gZztcblxuICAgIHZhciB4ID0gYS50b1JlZChyZWQpLnJlZFBvdyhkKTtcbiAgICBpZiAoeC5jbXAocm9uZSkgPT09IDAgfHwgeC5jbXAocm4xKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzOyBpKyspIHtcbiAgICAgIHggPSB4LnJlZFNxcigpO1xuXG4gICAgICBpZiAoeC5jbXAocm9uZSkgPT09IDApXG4gICAgICAgIHJldHVybiB4LmZyb21SZWQoKS5zdWJuKDEpLmdjZChuKTtcbiAgICAgIGlmICh4LmNtcChybjEpID09PSAwKVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gcykge1xuICAgICAgeCA9IHgucmVkU3FyKCk7XG4gICAgICByZXR1cm4geC5mcm9tUmVkKCkuc3VibigxKS5nY2Qobik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcbiIsIihmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBVdGlsc1xuICBmdW5jdGlvbiBhc3NlcnQgKHZhbCwgbXNnKSB7XG4gICAgaWYgKCF2YWwpIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbiAgfVxuXG4gIC8vIENvdWxkIHVzZSBgaW5oZXJpdHNgIG1vZHVsZSwgYnV0IGRvbid0IHdhbnQgdG8gbW92ZSBmcm9tIHNpbmdsZSBmaWxlXG4gIC8vIGFyY2hpdGVjdHVyZSB5ZXQuXG4gIGZ1bmN0aW9uIGluaGVyaXRzIChjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvcjtcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlO1xuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKCk7XG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yO1xuICB9XG5cbiAgLy8gQk5cblxuICBmdW5jdGlvbiBCTiAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAoQk4uaXNCTihudW1iZXIpKSB7XG4gICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cblxuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIHRoaXMud29yZHMgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcblxuICAgIC8vIFJlZHVjdGlvbiBjb250ZXh0XG4gICAgdGhpcy5yZWQgPSBudWxsO1xuXG4gICAgaWYgKG51bWJlciAhPT0gbnVsbCkge1xuICAgICAgaWYgKGJhc2UgPT09ICdsZScgfHwgYmFzZSA9PT0gJ2JlJykge1xuICAgICAgICBlbmRpYW4gPSBiYXNlO1xuICAgICAgICBiYXNlID0gMTA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2luaXQobnVtYmVyIHx8IDAsIGJhc2UgfHwgMTAsIGVuZGlhbiB8fCAnYmUnKTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBCTjtcbiAgfSBlbHNlIHtcbiAgICBleHBvcnRzLkJOID0gQk47XG4gIH1cblxuICBCTi5CTiA9IEJOO1xuICBCTi53b3JkU2l6ZSA9IDI2O1xuXG4gIHZhciBCdWZmZXI7XG4gIHRyeSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuQnVmZmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgQnVmZmVyID0gd2luZG93LkJ1ZmZlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICB9XG5cbiAgQk4uaXNCTiA9IGZ1bmN0aW9uIGlzQk4gKG51bSkge1xuICAgIGlmIChudW0gaW5zdGFuY2VvZiBCTikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bSAhPT0gbnVsbCAmJiB0eXBlb2YgbnVtID09PSAnb2JqZWN0JyAmJlxuICAgICAgbnVtLmNvbnN0cnVjdG9yLndvcmRTaXplID09PSBCTi53b3JkU2l6ZSAmJiBBcnJheS5pc0FycmF5KG51bS53b3Jkcyk7XG4gIH07XG5cbiAgQk4ubWF4ID0gZnVuY3Rpb24gbWF4IChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPiAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ubWluID0gZnVuY3Rpb24gbWluIChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPCAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdCAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0TnVtYmVyKG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0QXJyYXkobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAnaGV4Jykge1xuICAgICAgYmFzZSA9IDE2O1xuICAgIH1cbiAgICBhc3NlcnQoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNik7XG5cbiAgICBudW1iZXIgPSBudW1iZXIudG9TdHJpbmcoKS5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGlmIChudW1iZXJbMF0gPT09ICctJykge1xuICAgICAgc3RhcnQrKztcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA8IG51bWJlci5sZW5ndGgpIHtcbiAgICAgIGlmIChiYXNlID09PSAxNikge1xuICAgICAgICB0aGlzLl9wYXJzZUhleChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcGFyc2VCYXNlKG51bWJlciwgYmFzZSwgc3RhcnQpO1xuICAgICAgICBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICAgICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdE51bWJlciA9IGZ1bmN0aW9uIF9pbml0TnVtYmVyIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIG51bWJlciA9IC1udW1iZXI7XG4gICAgfVxuICAgIGlmIChudW1iZXIgPCAweDQwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIG51bWJlciAmIDB4M2ZmZmZmZiBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMHgxMDAwMDAwMDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZlxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG51bWJlciA8IDB4MjAwMDAwMDAwMDAwMDApOyAvLyAyIF4gNTMgKHVuc2FmZSlcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmYsXG4gICAgICAgIDFcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDM7XG4gICAgfVxuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgLy8gUmV2ZXJzZSB0aGUgYnl0ZXNcbiAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0QXJyYXkgPSBmdW5jdGlvbiBfaW5pdEFycmF5IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIC8vIFBlcmhhcHMgYSBVaW50OEFycmF5XG4gICAgYXNzZXJ0KHR5cGVvZiBudW1iZXIubGVuZ3RoID09PSAnbnVtYmVyJyk7XG4gICAgaWYgKG51bWJlci5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwobnVtYmVyLmxlbmd0aCAvIDMpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGosIHc7XG4gICAgdmFyIG9mZiA9IDA7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDEsIGogPSAwOyBpID49IDA7IGkgLT0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpIC0gMV0gPDwgOCkgfCAobnVtYmVyW2kgLSAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSArIDFdIDw8IDgpIHwgKG51bWJlcltpICsgMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXg0Qml0cyAoc3RyaW5nLCBpbmRleCkge1xuICAgIHZhciBjID0gc3RyaW5nLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgIC8vICdBJyAtICdGJ1xuICAgIGlmIChjID49IDY1ICYmIGMgPD0gNzApIHtcbiAgICAgIHJldHVybiBjIC0gNTU7XG4gICAgLy8gJ2EnIC0gJ2YnXG4gICAgfSBlbHNlIGlmIChjID49IDk3ICYmIGMgPD0gMTAyKSB7XG4gICAgICByZXR1cm4gYyAtIDg3O1xuICAgIC8vICcwJyAtICc5J1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKGMgLSA0OCkgJiAweGY7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXhCeXRlIChzdHJpbmcsIGxvd2VyQm91bmQsIGluZGV4KSB7XG4gICAgdmFyIHIgPSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXgpO1xuICAgIGlmIChpbmRleCAtIDEgPj0gbG93ZXJCb3VuZCkge1xuICAgICAgciB8PSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXggLSAxKSA8PCA0O1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VIZXggPSBmdW5jdGlvbiBfcGFyc2VIZXggKG51bWJlciwgc3RhcnQsIGVuZGlhbikge1xuICAgIC8vIENyZWF0ZSBwb3NzaWJseSBiaWdnZXIgYXJyYXkgdG8gZW5zdXJlIHRoYXQgaXQgZml0cyB0aGUgbnVtYmVyXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwoKG51bWJlci5sZW5ndGggLSBzdGFydCkgLyA2KTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIC8vIDI0LWJpdHMgY2h1bmtzXG4gICAgdmFyIG9mZiA9IDA7XG4gICAgdmFyIGogPSAwO1xuXG4gICAgdmFyIHc7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IGkgLT0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYXJzZUxlbmd0aCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICAgIGZvciAoaSA9IHBhcnNlTGVuZ3RoICUgMiA9PT0gMCA/IHN0YXJ0ICsgMSA6IHN0YXJ0OyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VCYXNlIChzdHIsIHN0YXJ0LCBlbmQsIG11bCkge1xuICAgIHZhciByID0gMDtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oc3RyLmxlbmd0aCwgZW5kKTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKSAtIDQ4O1xuXG4gICAgICByICo9IG11bDtcblxuICAgICAgLy8gJ2EnXG4gICAgICBpZiAoYyA+PSA0OSkge1xuICAgICAgICByICs9IGMgLSA0OSArIDB4YTtcblxuICAgICAgLy8gJ0EnXG4gICAgICB9IGVsc2UgaWYgKGMgPj0gMTcpIHtcbiAgICAgICAgciArPSBjIC0gMTcgKyAweGE7XG5cbiAgICAgIC8vICcwJyAtICc5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgciArPSBjO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VCYXNlID0gZnVuY3Rpb24gX3BhcnNlQmFzZSAobnVtYmVyLCBiYXNlLCBzdGFydCkge1xuICAgIC8vIEluaXRpYWxpemUgYXMgemVyb1xuICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICB0aGlzLmxlbmd0aCA9IDE7XG5cbiAgICAvLyBGaW5kIGxlbmd0aCBvZiBsaW1iIGluIGJhc2VcbiAgICBmb3IgKHZhciBsaW1iTGVuID0gMCwgbGltYlBvdyA9IDE7IGxpbWJQb3cgPD0gMHgzZmZmZmZmOyBsaW1iUG93ICo9IGJhc2UpIHtcbiAgICAgIGxpbWJMZW4rKztcbiAgICB9XG4gICAgbGltYkxlbi0tO1xuICAgIGxpbWJQb3cgPSAobGltYlBvdyAvIGJhc2UpIHwgMDtcblxuICAgIHZhciB0b3RhbCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICB2YXIgbW9kID0gdG90YWwgJSBsaW1iTGVuO1xuICAgIHZhciBlbmQgPSBNYXRoLm1pbih0b3RhbCwgdG90YWwgLSBtb2QpICsgc3RhcnQ7XG5cbiAgICB2YXIgd29yZCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpICs9IGxpbWJMZW4pIHtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBpICsgbGltYkxlbiwgYmFzZSk7XG5cbiAgICAgIHRoaXMuaW11bG4obGltYlBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZCAhPT0gMCkge1xuICAgICAgdmFyIHBvdyA9IDE7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgbnVtYmVyLmxlbmd0aCwgYmFzZSk7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBtb2Q7IGkrKykge1xuICAgICAgICBwb3cgKj0gYmFzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pbXVsbihwb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKGRlc3QpIHtcbiAgICBkZXN0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlc3Qud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgIH1cbiAgICBkZXN0Lmxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIGRlc3QubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIGRlc3QucmVkID0gdGhpcy5yZWQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUgKCkge1xuICAgIHZhciByID0gbmV3IEJOKG51bGwpO1xuICAgIHRoaXMuY29weShyKTtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2V4cGFuZCA9IGZ1bmN0aW9uIF9leHBhbmQgKHNpemUpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBzaXplKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gUmVtb3ZlIGxlYWRpbmcgYDBgIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdHJpcCA9IGZ1bmN0aW9uIHN0cmlwICgpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPiAxICYmIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9ub3JtU2lnbiA9IGZ1bmN0aW9uIF9ub3JtU2lnbiAoKSB7XG4gICAgLy8gLTAgPSAwXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICAgIHJldHVybiAodGhpcy5yZWQgPyAnPEJOLVI6ICcgOiAnPEJOOiAnKSArIHRoaXMudG9TdHJpbmcoMTYpICsgJz4nO1xuICB9O1xuXG4gIC8qXG5cbiAgdmFyIHplcm9zID0gW107XG4gIHZhciBncm91cFNpemVzID0gW107XG4gIHZhciBncm91cEJhc2VzID0gW107XG5cbiAgdmFyIHMgPSAnJztcbiAgdmFyIGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IEJOLndvcmRTaXplKSB7XG4gICAgemVyb3NbaV0gPSBzO1xuICAgIHMgKz0gJzAnO1xuICB9XG4gIGdyb3VwU2l6ZXNbMF0gPSAwO1xuICBncm91cFNpemVzWzFdID0gMDtcbiAgZ3JvdXBCYXNlc1swXSA9IDA7XG4gIGdyb3VwQmFzZXNbMV0gPSAwO1xuICB2YXIgYmFzZSA9IDIgLSAxO1xuICB3aGlsZSAoKytiYXNlIDwgMzYgKyAxKSB7XG4gICAgdmFyIGdyb3VwU2l6ZSA9IDA7XG4gICAgdmFyIGdyb3VwQmFzZSA9IDE7XG4gICAgd2hpbGUgKGdyb3VwQmFzZSA8ICgxIDw8IEJOLndvcmRTaXplKSAvIGJhc2UpIHtcbiAgICAgIGdyb3VwQmFzZSAqPSBiYXNlO1xuICAgICAgZ3JvdXBTaXplICs9IDE7XG4gICAgfVxuICAgIGdyb3VwU2l6ZXNbYmFzZV0gPSBncm91cFNpemU7XG4gICAgZ3JvdXBCYXNlc1tiYXNlXSA9IGdyb3VwQmFzZTtcbiAgfVxuXG4gICovXG5cbiAgdmFyIHplcm9zID0gW1xuICAgICcnLFxuICAgICcwJyxcbiAgICAnMDAnLFxuICAgICcwMDAnLFxuICAgICcwMDAwJyxcbiAgICAnMDAwMDAnLFxuICAgICcwMDAwMDAnLFxuICAgICcwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJ1xuICBdO1xuXG4gIHZhciBncm91cFNpemVzID0gW1xuICAgIDAsIDAsXG4gICAgMjUsIDE2LCAxMiwgMTEsIDEwLCA5LCA4LFxuICAgIDgsIDcsIDcsIDcsIDcsIDYsIDYsXG4gICAgNiwgNiwgNiwgNiwgNiwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDVcbiAgXTtcblxuICB2YXIgZ3JvdXBCYXNlcyA9IFtcbiAgICAwLCAwLFxuICAgIDMzNTU0NDMyLCA0MzA0NjcyMSwgMTY3NzcyMTYsIDQ4ODI4MTI1LCA2MDQ2NjE3NiwgNDAzNTM2MDcsIDE2Nzc3MjE2LFxuICAgIDQzMDQ2NzIxLCAxMDAwMDAwMCwgMTk0ODcxNzEsIDM1ODMxODA4LCA2Mjc0ODUxNywgNzUyOTUzNiwgMTEzOTA2MjUsXG4gICAgMTY3NzcyMTYsIDI0MTM3NTY5LCAzNDAxMjIyNCwgNDcwNDU4ODEsIDY0MDAwMDAwLCA0MDg0MTAxLCA1MTUzNjMyLFxuICAgIDY0MzYzNDMsIDc5NjI2MjQsIDk3NjU2MjUsIDExODgxMzc2LCAxNDM0ODkwNywgMTcyMTAzNjgsIDIwNTExMTQ5LFxuICAgIDI0MzAwMDAwLCAyODYyOTE1MSwgMzM1NTQ0MzIsIDM5MTM1MzkzLCA0NTQzNTQyNCwgNTI1MjE4NzUsIDYwNDY2MTc2XG4gIF07XG5cbiAgQk4ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKGJhc2UsIHBhZGRpbmcpIHtcbiAgICBiYXNlID0gYmFzZSB8fCAxMDtcbiAgICBwYWRkaW5nID0gcGFkZGluZyB8IDAgfHwgMTtcblxuICAgIHZhciBvdXQ7XG4gICAgaWYgKGJhc2UgPT09IDE2IHx8IGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBvZmYgPSAwO1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV07XG4gICAgICAgIHZhciB3b3JkID0gKCgodyA8PCBvZmYpIHwgY2FycnkpICYgMHhmZmZmZmYpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgY2FycnkgPSAodyA+Pj4gKDI0IC0gb2ZmKSkgJiAweGZmZmZmZjtcbiAgICAgICAgaWYgKGNhcnJ5ICE9PSAwIHx8IGkgIT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIG91dCA9IHplcm9zWzYgLSB3b3JkLmxlbmd0aF0gKyB3b3JkICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHdvcmQgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgb2ZmICs9IDI7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgICAgb3V0ID0gY2FycnkudG9TdHJpbmcoMTYpICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpIHtcbiAgICAgIC8vIHZhciBncm91cFNpemUgPSBNYXRoLmZsb29yKEJOLndvcmRTaXplICogTWF0aC5MTjIgLyBNYXRoLmxvZyhiYXNlKSk7XG4gICAgICB2YXIgZ3JvdXBTaXplID0gZ3JvdXBTaXplc1tiYXNlXTtcbiAgICAgIC8vIHZhciBncm91cEJhc2UgPSBNYXRoLnBvdyhiYXNlLCBncm91cFNpemUpO1xuICAgICAgdmFyIGdyb3VwQmFzZSA9IGdyb3VwQmFzZXNbYmFzZV07XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBjID0gdGhpcy5jbG9uZSgpO1xuICAgICAgYy5uZWdhdGl2ZSA9IDA7XG4gICAgICB3aGlsZSAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgdmFyIHIgPSBjLm1vZG4oZ3JvdXBCYXNlKS50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgYyA9IGMuaWRpdm4oZ3JvdXBCYXNlKTtcblxuICAgICAgICBpZiAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1tncm91cFNpemUgLSByLmxlbmd0aF0gKyByICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHIgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGFzc2VydChmYWxzZSwgJ0Jhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYnKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9OdW1iZXIgPSBmdW5jdGlvbiB0b051bWJlciAoKSB7XG4gICAgdmFyIHJldCA9IHRoaXMud29yZHNbMF07XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAyKSB7XG4gICAgICByZXQgKz0gdGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMDtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID09PSAzICYmIHRoaXMud29yZHNbMl0gPT09IDB4MDEpIHtcbiAgICAgIC8vIE5PVEU6IGF0IHRoaXMgc3RhZ2UgaXQgaXMga25vd24gdGhhdCB0aGUgdG9wIGJpdCBpcyBzZXRcbiAgICAgIHJldCArPSAweDEwMDAwMDAwMDAwMDAwICsgKHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiAyKSB7XG4gICAgICBhc3NlcnQoZmFsc2UsICdOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMnKTtcbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLm5lZ2F0aXZlICE9PSAwKSA/IC1yZXQgOiByZXQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0J1ZmZlciA9IGZ1bmN0aW9uIHRvQnVmZmVyIChlbmRpYW4sIGxlbmd0aCkge1xuICAgIGFzc2VydCh0eXBlb2YgQnVmZmVyICE9PSAndW5kZWZpbmVkJyk7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQnVmZmVyLCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiB0b0FycmF5IChlbmRpYW4sIGxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXlMaWtlID0gZnVuY3Rpb24gdG9BcnJheUxpa2UgKEFycmF5VHlwZSwgZW5kaWFuLCBsZW5ndGgpIHtcbiAgICB2YXIgYnl0ZUxlbmd0aCA9IHRoaXMuYnl0ZUxlbmd0aCgpO1xuICAgIHZhciByZXFMZW5ndGggPSBsZW5ndGggfHwgTWF0aC5tYXgoMSwgYnl0ZUxlbmd0aCk7XG4gICAgYXNzZXJ0KGJ5dGVMZW5ndGggPD0gcmVxTGVuZ3RoLCAnYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCcpO1xuICAgIGFzc2VydChyZXFMZW5ndGggPiAwLCAnUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwJyk7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gICAgdmFyIGxpdHRsZUVuZGlhbiA9IGVuZGlhbiA9PT0gJ2xlJztcbiAgICB2YXIgcmVzID0gbmV3IEFycmF5VHlwZShyZXFMZW5ndGgpO1xuXG4gICAgdmFyIGIsIGk7XG4gICAgdmFyIHEgPSB0aGlzLmNsb25lKCk7XG4gICAgaWYgKCFsaXR0bGVFbmRpYW4pIHtcbiAgICAgIC8vIEFzc3VtZSBiaWctZW5kaWFuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgcmVxTGVuZ3RoIC0gYnl0ZUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tyZXFMZW5ndGggLSBpIC0gMV0gPSBiO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbaV0gPSBiO1xuICAgICAgfVxuXG4gICAgICBmb3IgKDsgaSA8IHJlcUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBpZiAoTWF0aC5jbHozMikge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgcmV0dXJuIDMyIC0gTWF0aC5jbHozMih3KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgdmFyIHQgPSB3O1xuICAgICAgdmFyIHIgPSAwO1xuICAgICAgaWYgKHQgPj0gMHgxMDAwKSB7XG4gICAgICAgIHIgKz0gMTM7XG4gICAgICAgIHQgPj4+PSAxMztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4NDApIHtcbiAgICAgICAgciArPSA3O1xuICAgICAgICB0ID4+Pj0gNztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4OCkge1xuICAgICAgICByICs9IDQ7XG4gICAgICAgIHQgPj4+PSA0O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHgwMikge1xuICAgICAgICByICs9IDI7XG4gICAgICAgIHQgPj4+PSAyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHIgKyB0O1xuICAgIH07XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3plcm9CaXRzID0gZnVuY3Rpb24gX3plcm9CaXRzICh3KSB7XG4gICAgLy8gU2hvcnQtY3V0XG4gICAgaWYgKHcgPT09IDApIHJldHVybiAyNjtcblxuICAgIHZhciB0ID0gdztcbiAgICB2YXIgciA9IDA7XG4gICAgaWYgKCh0ICYgMHgxZmZmKSA9PT0gMCkge1xuICAgICAgciArPSAxMztcbiAgICAgIHQgPj4+PSAxMztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHg3ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNztcbiAgICAgIHQgPj4+PSA3O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweGYpID09PSAwKSB7XG4gICAgICByICs9IDQ7XG4gICAgICB0ID4+Pj0gNDtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgzKSA9PT0gMCkge1xuICAgICAgciArPSAyO1xuICAgICAgdCA+Pj49IDI7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MSkgPT09IDApIHtcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG51bWJlciBvZiB1c2VkIGJpdHMgaW4gYSBCTlxuICBCTi5wcm90b3R5cGUuYml0TGVuZ3RoID0gZnVuY3Rpb24gYml0TGVuZ3RoICgpIHtcbiAgICB2YXIgdyA9IHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXTtcbiAgICB2YXIgaGkgPSB0aGlzLl9jb3VudEJpdHModyk7XG4gICAgcmV0dXJuICh0aGlzLmxlbmd0aCAtIDEpICogMjYgKyBoaTtcbiAgfTtcblxuICBmdW5jdGlvbiB0b0JpdEFycmF5IChudW0pIHtcbiAgICB2YXIgdyA9IG5ldyBBcnJheShudW0uYml0TGVuZ3RoKCkpO1xuXG4gICAgZm9yICh2YXIgYml0ID0gMDsgYml0IDwgdy5sZW5ndGg7IGJpdCsrKSB7XG4gICAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgICB3W2JpdF0gPSAobnVtLndvcmRzW29mZl0gJiAoMSA8PCB3Yml0KSkgPj4+IHdiaXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHc7XG4gIH1cblxuICAvLyBOdW1iZXIgb2YgdHJhaWxpbmcgemVybyBiaXRzXG4gIEJOLnByb3RvdHlwZS56ZXJvQml0cyA9IGZ1bmN0aW9uIHplcm9CaXRzICgpIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIDA7XG5cbiAgICB2YXIgciA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYiA9IHRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbaV0pO1xuICAgICAgciArPSBiO1xuICAgICAgaWYgKGIgIT09IDI2KSBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmJ5dGVMZW5ndGggPSBmdW5jdGlvbiBieXRlTGVuZ3RoICgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkgLyA4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9Ud29zID0gZnVuY3Rpb24gdG9Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5hYnMoKS5pbm90bih3aWR0aCkuaWFkZG4oMSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21Ud29zID0gZnVuY3Rpb24gZnJvbVR3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMudGVzdG4od2lkdGggLSAxKSkge1xuICAgICAgcmV0dXJuIHRoaXMubm90bih3aWR0aCkuaWFkZG4oMSkuaW5lZygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uIGlzTmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZSAhPT0gMDtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5lZygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbmVnID0gZnVuY3Rpb24gaW5lZyAoKSB7XG4gICAgaWYgKCF0aGlzLmlzWmVybygpKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1b3IgPSBmdW5jdGlvbiBpdW9yIChudW0pIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gfCBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW9yID0gZnVuY3Rpb24gaW9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdW9yKG51bSk7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gb3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW9yID0gZnVuY3Rpb24gdW9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVvcih0aGlzKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1YW5kID0gZnVuY3Rpb24gaXVhbmQgKG51bSkge1xuICAgIC8vIGIgPSBtaW4tbGVuZ3RoKG51bSwgdGhpcylcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldICYgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYi5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYW5kID0gZnVuY3Rpb24gaWFuZCAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVhbmQobnVtKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIGFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhbmQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVhbmQgPSBmdW5jdGlvbiB1YW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1YW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1YW5kKHRoaXMpO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXV4b3IgPSBmdW5jdGlvbiBpdXhvciAobnVtKSB7XG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhO1xuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV0gXiBiLndvcmRzW2ldO1xuICAgIH1cblxuICAgIGlmICh0aGlzICE9PSBhKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLml4b3IgPSBmdW5jdGlvbiBpeG9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXhvcihudW0pO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24geG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXhvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXhvciA9IGZ1bmN0aW9uIHV4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXV4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXV4b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gTm90IGBgdGhpc2BgIHdpdGggYGB3aWR0aGBgIGJpdHdpZHRoXG4gIEJOLnByb3RvdHlwZS5pbm90biA9IGZ1bmN0aW9uIGlub3RuICh3aWR0aCkge1xuICAgIGFzc2VydCh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInICYmIHdpZHRoID49IDApO1xuXG4gICAgdmFyIGJ5dGVzTmVlZGVkID0gTWF0aC5jZWlsKHdpZHRoIC8gMjYpIHwgMDtcbiAgICB2YXIgYml0c0xlZnQgPSB3aWR0aCAlIDI2O1xuXG4gICAgLy8gRXh0ZW5kIHRoZSBidWZmZXIgd2l0aCBsZWFkaW5nIHplcm9lc1xuICAgIHRoaXMuX2V4cGFuZChieXRlc05lZWRlZCk7XG5cbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICBieXRlc05lZWRlZC0tO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBjb21wbGV0ZSB3b3Jkc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXNOZWVkZWQ7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgcmVzaWR1ZVxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmICgweDNmZmZmZmYgPj4gKDI2IC0gYml0c0xlZnQpKTtcbiAgICB9XG5cbiAgICAvLyBBbmQgcmVtb3ZlIGxlYWRpbmcgemVyb2VzXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubm90biA9IGZ1bmN0aW9uIG5vdG4gKHdpZHRoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bih3aWR0aCk7XG4gIH07XG5cbiAgLy8gU2V0IGBiaXRgIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc2V0biA9IGZ1bmN0aW9uIHNldG4gKGJpdCwgdmFsKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcblxuICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgdGhpcy5fZXhwYW5kKG9mZiArIDEpO1xuXG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdIHwgKDEgPDwgd2JpdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSAmIH4oMSA8PCB3Yml0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChudW0pIHtcbiAgICB2YXIgcjtcblxuICAgIC8vIG5lZ2F0aXZlICsgcG9zaXRpdmVcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG5cbiAgICAvLyBwb3NpdGl2ZSArIG5lZ2F0aXZlXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGhdID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIC8vIENvcHkgdGhlIHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgfSBlbHNlIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChudW0pIHtcbiAgICB2YXIgcmVzO1xuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDAgJiYgdGhpcy5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IHRoaXMuc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIGlmIChudW0ubmVnYXRpdmUgPT09IDAgJiYgdGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSBudW0uc3ViKHRoaXMpO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZChudW0pO1xuXG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhZGQodGhpcyk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChudW0pIHtcbiAgICAvLyB0aGlzIC0gKC1udW0pID0gdGhpcyArIG51bVxuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICB2YXIgciA9IHRoaXMuaWFkZChudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gLXRoaXMgLSBudW0gPSAtKHRoaXMgKyBudW0pXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZChudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmVcbiAgICB2YXIgY21wID0gdGhpcy5jbXAobnVtKTtcblxuICAgIC8vIE9wdGltaXphdGlvbiAtIHplcm9pZnlcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gYSA+IGJcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoY21wID4gMCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApIC0gKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIENvcHkgcmVzdCBvZiB0aGUgd29yZHNcbiAgICBpZiAoY2FycnkgPT09IDAgJiYgaSA8IGEubGVuZ3RoICYmIGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpKTtcblxuICAgIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1YihudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHNtYWxsTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICB2YXIgbGVuID0gKHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aCkgfCAwO1xuICAgIG91dC5sZW5ndGggPSBsZW47XG4gICAgbGVuID0gKGxlbiAtIDEpIHwgMDtcblxuICAgIC8vIFBlZWwgb25lIGl0ZXJhdGlvbiAoY29tcGlsZXIgY2FuJ3QgZG8gaXQsIGJlY2F1c2Ugb2YgY29kZSBjb21wbGV4aXR5KVxuICAgIHZhciBhID0gc2VsZi53b3Jkc1swXSB8IDA7XG4gICAgdmFyIGIgPSBudW0ud29yZHNbMF0gfCAwO1xuICAgIHZhciByID0gYSAqIGI7XG5cbiAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgIHZhciBjYXJyeSA9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgb3V0LndvcmRzWzBdID0gbG87XG5cbiAgICBmb3IgKHZhciBrID0gMTsgayA8IGxlbjsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGNhcnJ5ID4+PiAyNjtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gKGsgLSBqKSB8IDA7XG4gICAgICAgIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHIgPSBhICogYiArIHJ3b3JkO1xuICAgICAgICBuY2FycnkgKz0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgICAgcndvcmQgPSByICYgMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQgfCAwO1xuICAgICAgY2FycnkgPSBuY2FycnkgfCAwO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5IHwgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIC8vIFRPRE8oaW5kdXRueSk6IGl0IG1heSBiZSByZWFzb25hYmxlIHRvIG9taXQgaXQgZm9yIHVzZXJzIHdobyBkb24ndCBuZWVkXG4gIC8vIHRvIHdvcmsgd2l0aCAyNTYtYml0IG51bWJlcnMsIG90aGVyd2lzZSBpdCBnaXZlcyAyMCUgaW1wcm92ZW1lbnQgZm9yIDI1Ni1iaXRcbiAgLy8gbXVsdGlwbGljYXRpb24gKGxpa2UgZWxsaXB0aWMgc2VjcDI1NmsxKS5cbiAgdmFyIGNvbWIxME11bFRvID0gZnVuY3Rpb24gY29tYjEwTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGEgPSBzZWxmLndvcmRzO1xuICAgIHZhciBiID0gbnVtLndvcmRzO1xuICAgIHZhciBvID0gb3V0LndvcmRzO1xuICAgIHZhciBjID0gMDtcbiAgICB2YXIgbG87XG4gICAgdmFyIG1pZDtcbiAgICB2YXIgaGk7XG4gICAgdmFyIGEwID0gYVswXSB8IDA7XG4gICAgdmFyIGFsMCA9IGEwICYgMHgxZmZmO1xuICAgIHZhciBhaDAgPSBhMCA+Pj4gMTM7XG4gICAgdmFyIGExID0gYVsxXSB8IDA7XG4gICAgdmFyIGFsMSA9IGExICYgMHgxZmZmO1xuICAgIHZhciBhaDEgPSBhMSA+Pj4gMTM7XG4gICAgdmFyIGEyID0gYVsyXSB8IDA7XG4gICAgdmFyIGFsMiA9IGEyICYgMHgxZmZmO1xuICAgIHZhciBhaDIgPSBhMiA+Pj4gMTM7XG4gICAgdmFyIGEzID0gYVszXSB8IDA7XG4gICAgdmFyIGFsMyA9IGEzICYgMHgxZmZmO1xuICAgIHZhciBhaDMgPSBhMyA+Pj4gMTM7XG4gICAgdmFyIGE0ID0gYVs0XSB8IDA7XG4gICAgdmFyIGFsNCA9IGE0ICYgMHgxZmZmO1xuICAgIHZhciBhaDQgPSBhNCA+Pj4gMTM7XG4gICAgdmFyIGE1ID0gYVs1XSB8IDA7XG4gICAgdmFyIGFsNSA9IGE1ICYgMHgxZmZmO1xuICAgIHZhciBhaDUgPSBhNSA+Pj4gMTM7XG4gICAgdmFyIGE2ID0gYVs2XSB8IDA7XG4gICAgdmFyIGFsNiA9IGE2ICYgMHgxZmZmO1xuICAgIHZhciBhaDYgPSBhNiA+Pj4gMTM7XG4gICAgdmFyIGE3ID0gYVs3XSB8IDA7XG4gICAgdmFyIGFsNyA9IGE3ICYgMHgxZmZmO1xuICAgIHZhciBhaDcgPSBhNyA+Pj4gMTM7XG4gICAgdmFyIGE4ID0gYVs4XSB8IDA7XG4gICAgdmFyIGFsOCA9IGE4ICYgMHgxZmZmO1xuICAgIHZhciBhaDggPSBhOCA+Pj4gMTM7XG4gICAgdmFyIGE5ID0gYVs5XSB8IDA7XG4gICAgdmFyIGFsOSA9IGE5ICYgMHgxZmZmO1xuICAgIHZhciBhaDkgPSBhOSA+Pj4gMTM7XG4gICAgdmFyIGIwID0gYlswXSB8IDA7XG4gICAgdmFyIGJsMCA9IGIwICYgMHgxZmZmO1xuICAgIHZhciBiaDAgPSBiMCA+Pj4gMTM7XG4gICAgdmFyIGIxID0gYlsxXSB8IDA7XG4gICAgdmFyIGJsMSA9IGIxICYgMHgxZmZmO1xuICAgIHZhciBiaDEgPSBiMSA+Pj4gMTM7XG4gICAgdmFyIGIyID0gYlsyXSB8IDA7XG4gICAgdmFyIGJsMiA9IGIyICYgMHgxZmZmO1xuICAgIHZhciBiaDIgPSBiMiA+Pj4gMTM7XG4gICAgdmFyIGIzID0gYlszXSB8IDA7XG4gICAgdmFyIGJsMyA9IGIzICYgMHgxZmZmO1xuICAgIHZhciBiaDMgPSBiMyA+Pj4gMTM7XG4gICAgdmFyIGI0ID0gYls0XSB8IDA7XG4gICAgdmFyIGJsNCA9IGI0ICYgMHgxZmZmO1xuICAgIHZhciBiaDQgPSBiNCA+Pj4gMTM7XG4gICAgdmFyIGI1ID0gYls1XSB8IDA7XG4gICAgdmFyIGJsNSA9IGI1ICYgMHgxZmZmO1xuICAgIHZhciBiaDUgPSBiNSA+Pj4gMTM7XG4gICAgdmFyIGI2ID0gYls2XSB8IDA7XG4gICAgdmFyIGJsNiA9IGI2ICYgMHgxZmZmO1xuICAgIHZhciBiaDYgPSBiNiA+Pj4gMTM7XG4gICAgdmFyIGI3ID0gYls3XSB8IDA7XG4gICAgdmFyIGJsNyA9IGI3ICYgMHgxZmZmO1xuICAgIHZhciBiaDcgPSBiNyA+Pj4gMTM7XG4gICAgdmFyIGI4ID0gYls4XSB8IDA7XG4gICAgdmFyIGJsOCA9IGI4ICYgMHgxZmZmO1xuICAgIHZhciBiaDggPSBiOCA+Pj4gMTM7XG4gICAgdmFyIGI5ID0gYls5XSB8IDA7XG4gICAgdmFyIGJsOSA9IGI5ICYgMHgxZmZmO1xuICAgIHZhciBiaDkgPSBiOSA+Pj4gMTM7XG5cbiAgICBvdXQubmVnYXRpdmUgPSBzZWxmLm5lZ2F0aXZlIF4gbnVtLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSAxOTtcbiAgICAvKiBrID0gMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwwLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgwLCBiaDApO1xuICAgIHZhciB3MCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzAgPj4+IDI2KSkgfCAwO1xuICAgIHcwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwxLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgxLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMSkpIHwgMDtcbiAgICB2YXIgdzEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxID4+PiAyNikpIHwgMDtcbiAgICB3MSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDIsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgyKSkgfCAwO1xuICAgIHZhciB3MiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzIgPj4+IDI2KSkgfCAwO1xuICAgIHcyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwzLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgzLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgzKSkgfCAwO1xuICAgIHZhciB3MyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzMgPj4+IDI2KSkgfCAwO1xuICAgIHczICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw0LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg0LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNCkpIHwgMDtcbiAgICB2YXIgdzQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc0ID4+PiAyNikpIHwgMDtcbiAgICB3NCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDUsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg1KSkgfCAwO1xuICAgIHZhciB3NSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzUgPj4+IDI2KSkgfCAwO1xuICAgIHc1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw2LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg2LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg2KSkgfCAwO1xuICAgIHZhciB3NiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzYgPj4+IDI2KSkgfCAwO1xuICAgIHc2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw3LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg3LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNykpIHwgMDtcbiAgICB2YXIgdzcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc3ID4+PiAyNikpIHwgMDtcbiAgICB3NyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDgsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg4KSkgfCAwO1xuICAgIHZhciB3OCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzggPj4+IDI2KSkgfCAwO1xuICAgIHc4ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg5KSkgfCAwO1xuICAgIHZhciB3OSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzkgPj4+IDI2KSkgfCAwO1xuICAgIHc5ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgxKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwxKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgxKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMCA+Pj4gMjYpKSB8IDA7XG4gICAgdzEwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgyKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwyKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgyKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzExID4+PiAyNikpIHwgMDtcbiAgICB3MTEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwzKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDMpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDMpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDMpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMiA+Pj4gMjYpKSB8IDA7XG4gICAgdzEyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg0KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw0KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg0KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMyA+Pj4gMjYpKSB8IDA7XG4gICAgdzEzICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg1KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw1KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg1KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE0ID4+PiAyNikpIHwgMDtcbiAgICB3MTQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw2KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDYpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDYpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDYpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNSA+Pj4gMjYpKSB8IDA7XG4gICAgdzE1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg3KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw3KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg3KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNiA+Pj4gMjYpKSB8IDA7XG4gICAgdzE2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg4KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw4KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg4KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE3ID4+PiAyNikpIHwgMDtcbiAgICB3MTcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw5KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDkpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDkpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDkpO1xuICAgIHZhciB3MTggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxOCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE4ICY9IDB4M2ZmZmZmZjtcbiAgICBvWzBdID0gdzA7XG4gICAgb1sxXSA9IHcxO1xuICAgIG9bMl0gPSB3MjtcbiAgICBvWzNdID0gdzM7XG4gICAgb1s0XSA9IHc0O1xuICAgIG9bNV0gPSB3NTtcbiAgICBvWzZdID0gdzY7XG4gICAgb1s3XSA9IHc3O1xuICAgIG9bOF0gPSB3ODtcbiAgICBvWzldID0gdzk7XG4gICAgb1sxMF0gPSB3MTA7XG4gICAgb1sxMV0gPSB3MTE7XG4gICAgb1sxMl0gPSB3MTI7XG4gICAgb1sxM10gPSB3MTM7XG4gICAgb1sxNF0gPSB3MTQ7XG4gICAgb1sxNV0gPSB3MTU7XG4gICAgb1sxNl0gPSB3MTY7XG4gICAgb1sxN10gPSB3MTc7XG4gICAgb1sxOF0gPSB3MTg7XG4gICAgaWYgKGMgIT09IDApIHtcbiAgICAgIG9bMTldID0gYztcbiAgICAgIG91dC5sZW5ndGgrKztcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfTtcblxuICAvLyBQb2x5ZmlsbCBjb21iXG4gIGlmICghTWF0aC5pbXVsKSB7XG4gICAgY29tYjEwTXVsVG8gPSBzbWFsbE11bFRvO1xuICB9XG5cbiAgZnVuY3Rpb24gYmlnTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICB2YXIgaG5jYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBvdXQubGVuZ3RoIC0gMTsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgICBobmNhcnJ5ID0gMDtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gayAtIGo7XG4gICAgICAgIHZhciBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIHZhciBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgdmFyIHIgPSBhICogYjtcblxuICAgICAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKChyIC8gMHg0MDAwMDAwKSB8IDApKSB8IDA7XG4gICAgICAgIGxvID0gKGxvICsgcndvcmQpIHwgMDtcbiAgICAgICAgcndvcmQgPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArIChsbyA+Pj4gMjYpKSB8IDA7XG5cbiAgICAgICAgaG5jYXJyeSArPSBuY2FycnkgPj4+IDI2O1xuICAgICAgICBuY2FycnkgJj0gMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQ7XG4gICAgICBjYXJyeSA9IG5jYXJyeTtcbiAgICAgIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2Fycnk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICBmdW5jdGlvbiBqdW1ib011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBmZnRtID0gbmV3IEZGVE0oKTtcbiAgICByZXR1cm4gZmZ0bS5tdWxwKHNlbGYsIG51bSwgb3V0KTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5tdWxUbyA9IGZ1bmN0aW9uIG11bFRvIChudW0sIG91dCkge1xuICAgIHZhciByZXM7XG4gICAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aDtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEwICYmIG51bS5sZW5ndGggPT09IDEwKSB7XG4gICAgICByZXMgPSBjb21iMTBNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCA2Mykge1xuICAgICAgcmVzID0gc21hbGxNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCAxMDI0KSB7XG4gICAgICByZXMgPSBiaWdNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29vbGV5LVR1a2V5IGFsZ29yaXRobSBmb3IgRkZUXG4gIC8vIHNsaWdodGx5IHJldmlzaXRlZCB0byByZWx5IG9uIGxvb3BpbmcgaW5zdGVhZCBvZiByZWN1cnNpb25cblxuICBmdW5jdGlvbiBGRlRNICh4LCB5KSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICB9XG5cbiAgRkZUTS5wcm90b3R5cGUubWFrZVJCVCA9IGZ1bmN0aW9uIG1ha2VSQlQgKE4pIHtcbiAgICB2YXIgdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbCA9IEJOLnByb3RvdHlwZS5fY291bnRCaXRzKE4pIC0gMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdFtpXSA9IHRoaXMucmV2QmluKGksIGwsIE4pO1xuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYmluYXJ5LXJldmVyc2VkIHJlcHJlc2VudGF0aW9uIG9mIGB4YFxuICBGRlRNLnByb3RvdHlwZS5yZXZCaW4gPSBmdW5jdGlvbiByZXZCaW4gKHgsIGwsIE4pIHtcbiAgICBpZiAoeCA9PT0gMCB8fCB4ID09PSBOIC0gMSkgcmV0dXJuIHg7XG5cbiAgICB2YXIgcmIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICByYiB8PSAoeCAmIDEpIDw8IChsIC0gaSAtIDEpO1xuICAgICAgeCA+Pj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmI7XG4gIH07XG5cbiAgLy8gUGVyZm9ybXMgXCJ0d2VlZGxpbmdcIiBwaGFzZSwgdGhlcmVmb3JlICdlbXVsYXRpbmcnXG4gIC8vIGJlaGF2aW91ciBvZiB0aGUgcmVjdXJzaXZlIGFsZ29yaXRobVxuICBGRlRNLnByb3RvdHlwZS5wZXJtdXRlID0gZnVuY3Rpb24gcGVybXV0ZSAocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBydHdzW2ldID0gcndzW3JidFtpXV07XG4gICAgICBpdHdzW2ldID0gaXdzW3JidFtpXV07XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uIHRyYW5zZm9ybSAocndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4sIHJidCkge1xuICAgIHRoaXMucGVybXV0ZShyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKTtcblxuICAgIGZvciAodmFyIHMgPSAxOyBzIDwgTjsgcyA8PD0gMSkge1xuICAgICAgdmFyIGwgPSBzIDw8IDE7XG5cbiAgICAgIHZhciBydHdkZiA9IE1hdGguY29zKDIgKiBNYXRoLlBJIC8gbCk7XG4gICAgICB2YXIgaXR3ZGYgPSBNYXRoLnNpbigyICogTWF0aC5QSSAvIGwpO1xuXG4gICAgICBmb3IgKHZhciBwID0gMDsgcCA8IE47IHAgKz0gbCkge1xuICAgICAgICB2YXIgcnR3ZGZfID0gcnR3ZGY7XG4gICAgICAgIHZhciBpdHdkZl8gPSBpdHdkZjtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHM7IGorKykge1xuICAgICAgICAgIHZhciByZSA9IHJ0d3NbcCArIGpdO1xuICAgICAgICAgIHZhciBpZSA9IGl0d3NbcCArIGpdO1xuXG4gICAgICAgICAgdmFyIHJvID0gcnR3c1twICsgaiArIHNdO1xuICAgICAgICAgIHZhciBpbyA9IGl0d3NbcCArIGogKyBzXTtcblxuICAgICAgICAgIHZhciByeCA9IHJ0d2RmXyAqIHJvIC0gaXR3ZGZfICogaW87XG5cbiAgICAgICAgICBpbyA9IHJ0d2RmXyAqIGlvICsgaXR3ZGZfICogcm87XG4gICAgICAgICAgcm8gPSByeDtcblxuICAgICAgICAgIHJ0d3NbcCArIGpdID0gcmUgKyBybztcbiAgICAgICAgICBpdHdzW3AgKyBqXSA9IGllICsgaW87XG5cbiAgICAgICAgICBydHdzW3AgKyBqICsgc10gPSByZSAtIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGogKyBzXSA9IGllIC0gaW87XG5cbiAgICAgICAgICAvKiBqc2hpbnQgbWF4ZGVwdGggOiBmYWxzZSAqL1xuICAgICAgICAgIGlmIChqICE9PSBsKSB7XG4gICAgICAgICAgICByeCA9IHJ0d2RmICogcnR3ZGZfIC0gaXR3ZGYgKiBpdHdkZl87XG5cbiAgICAgICAgICAgIGl0d2RmXyA9IHJ0d2RmICogaXR3ZGZfICsgaXR3ZGYgKiBydHdkZl87XG4gICAgICAgICAgICBydHdkZl8gPSByeDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2IgPSBmdW5jdGlvbiBndWVzc0xlbjEzYiAobiwgbSkge1xuICAgIHZhciBOID0gTWF0aC5tYXgobSwgbikgfCAxO1xuICAgIHZhciBvZGQgPSBOICYgMTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yIChOID0gTiAvIDIgfCAwOyBOOyBOID0gTiA+Pj4gMSkge1xuICAgICAgaSsrO1xuICAgIH1cblxuICAgIHJldHVybiAxIDw8IGkgKyAxICsgb2RkO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbmp1Z2F0ZSA9IGZ1bmN0aW9uIGNvbmp1Z2F0ZSAocndzLCBpd3MsIE4pIHtcbiAgICBpZiAoTiA8PSAxKSByZXR1cm47XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB0ID0gcndzW2ldO1xuXG4gICAgICByd3NbaV0gPSByd3NbTiAtIGkgLSAxXTtcbiAgICAgIHJ3c1tOIC0gaSAtIDFdID0gdDtcblxuICAgICAgdCA9IGl3c1tpXTtcblxuICAgICAgaXdzW2ldID0gLWl3c1tOIC0gaSAtIDFdO1xuICAgICAgaXdzW04gLSBpIC0gMV0gPSAtdDtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubm9ybWFsaXplMTNiID0gZnVuY3Rpb24gbm9ybWFsaXplMTNiICh3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdyA9IE1hdGgucm91bmQod3NbMiAqIGkgKyAxXSAvIE4pICogMHgyMDAwICtcbiAgICAgICAgTWF0aC5yb3VuZCh3c1syICogaV0gLyBOKSArXG4gICAgICAgIGNhcnJ5O1xuXG4gICAgICB3c1tpXSA9IHcgJiAweDNmZmZmZmY7XG5cbiAgICAgIGlmICh3IDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhcnJ5ID0gdyAvIDB4NDAwMDAwMCB8IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHdzO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbnZlcnQxM2IgPSBmdW5jdGlvbiBjb252ZXJ0MTNiICh3cywgbGVuLCByd3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNhcnJ5ID0gY2FycnkgKyAod3NbaV0gfCAwKTtcblxuICAgICAgcndzWzIgKiBpXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICAgIHJ3c1syICogaSArIDFdID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgIH1cblxuICAgIC8vIFBhZCB3aXRoIHplcm9lc1xuICAgIGZvciAoaSA9IDIgKiBsZW47IGkgPCBOOyArK2kpIHtcbiAgICAgIHJ3c1tpXSA9IDA7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAwKTtcbiAgICBhc3NlcnQoKGNhcnJ5ICYgfjB4MWZmZikgPT09IDApO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnN0dWIgPSBmdW5jdGlvbiBzdHViIChOKSB7XG4gICAgdmFyIHBoID0gbmV3IEFycmF5KE4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBwaFtpXSA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBoO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm11bHAgPSBmdW5jdGlvbiBtdWxwICh4LCB5LCBvdXQpIHtcbiAgICB2YXIgTiA9IDIgKiB0aGlzLmd1ZXNzTGVuMTNiKHgubGVuZ3RoLCB5Lmxlbmd0aCk7XG5cbiAgICB2YXIgcmJ0ID0gdGhpcy5tYWtlUkJUKE4pO1xuXG4gICAgdmFyIF8gPSB0aGlzLnN0dWIoTik7XG5cbiAgICB2YXIgcndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciByd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBpd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIG5yd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5yd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBuaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBybXdzID0gb3V0LndvcmRzO1xuICAgIHJtd3MubGVuZ3RoID0gTjtcblxuICAgIHRoaXMuY29udmVydDEzYih4LndvcmRzLCB4Lmxlbmd0aCwgcndzLCBOKTtcbiAgICB0aGlzLmNvbnZlcnQxM2IoeS53b3JkcywgeS5sZW5ndGgsIG5yd3MsIE4pO1xuXG4gICAgdGhpcy50cmFuc2Zvcm0ocndzLCBfLCByd3N0LCBpd3N0LCBOLCByYnQpO1xuICAgIHRoaXMudHJhbnNmb3JtKG5yd3MsIF8sIG5yd3N0LCBuaXdzdCwgTiwgcmJ0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB2YXIgcnggPSByd3N0W2ldICogbnJ3c3RbaV0gLSBpd3N0W2ldICogbml3c3RbaV07XG4gICAgICBpd3N0W2ldID0gcndzdFtpXSAqIG5pd3N0W2ldICsgaXdzdFtpXSAqIG5yd3N0W2ldO1xuICAgICAgcndzdFtpXSA9IHJ4O1xuICAgIH1cblxuICAgIHRoaXMuY29uanVnYXRlKHJ3c3QsIGl3c3QsIE4pO1xuICAgIHRoaXMudHJhbnNmb3JtKHJ3c3QsIGl3c3QsIHJtd3MsIF8sIE4sIHJidCk7XG4gICAgdGhpcy5jb25qdWdhdGUocm13cywgXywgTik7XG4gICAgdGhpcy5ub3JtYWxpemUxM2Iocm13cywgTik7XG5cbiAgICBvdXQubmVnYXRpdmUgPSB4Lm5lZ2F0aXZlIF4geS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0geC5sZW5ndGggKyB5Lmxlbmd0aDtcbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgYHRoaXNgIGJ5IGBudW1gXG4gIEJOLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRoaXMubXVsVG8obnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGVtcGxveWluZyBGRlRcbiAgQk4ucHJvdG90eXBlLm11bGYgPSBmdW5jdGlvbiBtdWxmIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBNdWx0aXBsaWNhdGlvblxuICBCTi5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkubXVsVG8obnVtLCB0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW11bG4gPSBmdW5jdGlvbiBpbXVsbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcblxuICAgIC8vIENhcnJ5XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSAqIG51bTtcbiAgICAgIHZhciBsbyA9ICh3ICYgMHgzZmZmZmZmKSArIChjYXJyeSAmIDB4M2ZmZmZmZik7XG4gICAgICBjYXJyeSA+Pj0gMjY7XG4gICAgICBjYXJyeSArPSAodyAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgLy8gTk9URTogbG8gaXMgMjdiaXQgbWF4aW11bVxuICAgICAgY2FycnkgKz0gbG8gPj4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubXVsbiA9IGZ1bmN0aW9uIG11bG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW11bG4obnVtKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKHRoaXMpO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKTtcbiAgfTtcblxuICAvLyBNYXRoLnBvdyhgdGhpc2AsIGBudW1gKVxuICBCTi5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChudW0pIHtcbiAgICB2YXIgdyA9IHRvQml0QXJyYXkobnVtKTtcbiAgICBpZiAody5sZW5ndGggPT09IDApIHJldHVybiBuZXcgQk4oMSk7XG5cbiAgICAvLyBTa2lwIGxlYWRpbmcgemVyb2VzXG4gICAgdmFyIHJlcyA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3Lmxlbmd0aDsgaSsrLCByZXMgPSByZXMuc3FyKCkpIHtcbiAgICAgIGlmICh3W2ldICE9PSAwKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoKytpIDwgdy5sZW5ndGgpIHtcbiAgICAgIGZvciAodmFyIHEgPSByZXMuc3FyKCk7IGkgPCB3Lmxlbmd0aDsgaSsrLCBxID0gcS5zcXIoKSkge1xuICAgICAgICBpZiAod1tpXSA9PT0gMCkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gcmVzLm11bChxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnQgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1c2hsbiA9IGZ1bmN0aW9uIGl1c2hsbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcbiAgICB2YXIgY2FycnlNYXNrID0gKDB4M2ZmZmZmZiA+Pj4gKDI2IC0gcikpIDw8ICgyNiAtIHIpO1xuICAgIHZhciBpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBuZXdDYXJyeSA9IHRoaXMud29yZHNbaV0gJiBjYXJyeU1hc2s7XG4gICAgICAgIHZhciBjID0gKCh0aGlzLndvcmRzW2ldIHwgMCkgLSBuZXdDYXJyeSkgPDwgcjtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGMgfCBjYXJyeTtcbiAgICAgICAgY2FycnkgPSBuZXdDYXJyeSA+Pj4gKDI2IC0gcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYXJyeSkge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHMgIT09IDApIHtcbiAgICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgc10gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCArPSBzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaGxuID0gZnVuY3Rpb24gaXNobG4gKGJpdHMpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0IGluLXBsYWNlXG4gIC8vIE5PVEU6IGBoaW50YCBpcyBhIGxvd2VzdCBiaXQgYmVmb3JlIHRyYWlsaW5nIHplcm9lc1xuICAvLyBOT1RFOiBpZiBgZXh0ZW5kZWRgIGlzIHByZXNlbnQgLSBpdCB3aWxsIGJlIGZpbGxlZCB3aXRoIGRlc3Ryb3llZCBiaXRzXG4gIEJOLnByb3RvdHlwZS5pdXNocm4gPSBmdW5jdGlvbiBpdXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciBoO1xuICAgIGlmIChoaW50KSB7XG4gICAgICBoID0gKGhpbnQgLSAoaGludCAlIDI2KSkgLyAyNjtcbiAgICB9IGVsc2Uge1xuICAgICAgaCA9IDA7XG4gICAgfVxuXG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSBNYXRoLm1pbigoYml0cyAtIHIpIC8gMjYsIHRoaXMubGVuZ3RoKTtcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICB2YXIgbWFza2VkV29yZHMgPSBleHRlbmRlZDtcblxuICAgIGggLT0gcztcbiAgICBoID0gTWF0aC5tYXgoMCwgaCk7XG5cbiAgICAvLyBFeHRlbmRlZCBtb2RlLCBjb3B5IG1hc2tlZCBwYXJ0XG4gICAgaWYgKG1hc2tlZFdvcmRzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICBtYXNrZWRXb3Jkcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG4gICAgICBtYXNrZWRXb3Jkcy5sZW5ndGggPSBzO1xuICAgIH1cblxuICAgIGlmIChzID09PSAwKSB7XG4gICAgICAvLyBOby1vcCwgd2Ugc2hvdWxkIG5vdCBtb3ZlIGFueXRoaW5nIGF0IGFsbFxuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiBzKSB7XG4gICAgICB0aGlzLmxlbmd0aCAtPSBzO1xuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaSArIHNdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwICYmIChjYXJyeSAhPT0gMCB8fCBpID49IGgpOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKGNhcnJ5IDw8ICgyNiAtIHIpKSB8ICh3b3JkID4+PiByKTtcbiAgICAgIGNhcnJ5ID0gd29yZCAmIG1hc2s7XG4gICAgfVxuXG4gICAgLy8gUHVzaCBjYXJyaWVkIGJpdHMgYXMgYSBtYXNrXG4gICAgaWYgKG1hc2tlZFdvcmRzICYmIGNhcnJ5ICE9PSAwKSB7XG4gICAgICBtYXNrZWRXb3Jkcy53b3Jkc1ttYXNrZWRXb3Jkcy5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaHJuID0gZnVuY3Rpb24gaXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hybihiaXRzLCBoaW50LCBleHRlbmRlZCk7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdFxuICBCTi5wcm90b3R5cGUuc2hsbiA9IGZ1bmN0aW9uIHNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hsbiA9IGZ1bmN0aW9uIHVzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHRcbiAgQk4ucHJvdG90eXBlLnNocm4gPSBmdW5jdGlvbiBzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNocm4gPSBmdW5jdGlvbiB1c2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFRlc3QgaWYgbiBiaXQgaXMgc2V0XG4gIEJOLnByb3RvdHlwZS50ZXN0biA9IGZ1bmN0aW9uIHRlc3RuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGJpdCBhbmQgcmV0dXJuXG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3NdO1xuXG4gICAgcmV0dXJuICEhKHcgJiBxKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXIgKGluLXBsYWNlKVxuICBCTi5wcm90b3R5cGUuaW1hc2tuID0gZnVuY3Rpb24gaW1hc2tuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMnKTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgcysrO1xuICAgIH1cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWluKHMsIHRoaXMubGVuZ3RoKTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSAmPSBtYXNrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyXG4gIEJOLnByb3RvdHlwZS5tYXNrbiA9IGZ1bmN0aW9uIG1hc2tuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oYml0cyk7XG4gIH07XG5cbiAgLy8gQWRkIHBsYWluIG51bWJlciBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlhZGRuID0gZnVuY3Rpb24gaWFkZG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlzdWJuKC1udW0pO1xuXG4gICAgLy8gUG9zc2libGUgc2lnbiBjaGFuZ2VcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmICh0aGlzLndvcmRzWzBdIHwgMCkgPCBudW0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSA9IG51bSAtICh0aGlzLndvcmRzWzBdIHwgMCk7XG4gICAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlzdWJuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCB3aXRob3V0IGNoZWNrc1xuICAgIHJldHVybiB0aGlzLl9pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faWFkZG4gPSBmdW5jdGlvbiBfaWFkZG4gKG51bSkge1xuICAgIHRoaXMud29yZHNbMF0gKz0gbnVtO1xuXG4gICAgLy8gQ2FycnlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPj0gMHg0MDAwMDAwOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gLT0gMHg0MDAwMDAwO1xuICAgICAgaWYgKGkgPT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSsrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpICsgMSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBwbGFpbiBudW1iZXIgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlzdWJuID0gZnVuY3Rpb24gaXN1Ym4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlhZGRuKC1udW0pO1xuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkbihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLndvcmRzWzBdIC09IG51bTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdIDwgMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IC10aGlzLndvcmRzWzBdO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENhcnJ5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPCAwOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSArPSAweDQwMDAwMDA7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdIC09IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWRkbiA9IGZ1bmN0aW9uIGFkZG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuc3VibiA9IGZ1bmN0aW9uIHN1Ym4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFicyA9IGZ1bmN0aW9uIGlhYnMgKCkge1xuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uIGFicyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pc2hsbnN1Ym11bCA9IGZ1bmN0aW9uIF9pc2hsbnN1Ym11bCAobnVtLCBtdWwsIHNoaWZ0KSB7XG4gICAgdmFyIGxlbiA9IG51bS5sZW5ndGggKyBzaGlmdDtcbiAgICB2YXIgaTtcblxuICAgIHRoaXMuX2V4cGFuZChsZW4pO1xuXG4gICAgdmFyIHc7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICB2YXIgcmlnaHQgPSAobnVtLndvcmRzW2ldIHwgMCkgKiBtdWw7XG4gICAgICB3IC09IHJpZ2h0ICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSAodyA+PiAyNikgLSAoKHJpZ2h0IC8gMHg0MDAwMDAwKSB8IDApO1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGkgPCB0aGlzLmxlbmd0aCAtIHNoaWZ0OyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ID09PSAwKSByZXR1cm4gdGhpcy5zdHJpcCgpO1xuXG4gICAgLy8gU3VidHJhY3Rpb24gb3ZlcmZsb3dcbiAgICBhc3NlcnQoY2FycnkgPT09IC0xKTtcbiAgICBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAtKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX3dvcmREaXYgPSBmdW5jdGlvbiBfd29yZERpdiAobnVtLCBtb2RlKSB7XG4gICAgdmFyIHNoaWZ0ID0gdGhpcy5sZW5ndGggLSBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGEgPSB0aGlzLmNsb25lKCk7XG4gICAgdmFyIGIgPSBudW07XG5cbiAgICAvLyBOb3JtYWxpemVcbiAgICB2YXIgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB2YXIgYmhpQml0cyA9IHRoaXMuX2NvdW50Qml0cyhiaGkpO1xuICAgIHNoaWZ0ID0gMjYgLSBiaGlCaXRzO1xuICAgIGlmIChzaGlmdCAhPT0gMCkge1xuICAgICAgYiA9IGIudXNobG4oc2hpZnQpO1xuICAgICAgYS5pdXNobG4oc2hpZnQpO1xuICAgICAgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIHF1b3RpZW50XG4gICAgdmFyIG0gPSBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuICAgIHZhciBxO1xuXG4gICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICBxID0gbmV3IEJOKG51bGwpO1xuICAgICAgcS5sZW5ndGggPSBtICsgMTtcbiAgICAgIHEud29yZHMgPSBuZXcgQXJyYXkocS5sZW5ndGgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHEud29yZHNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkaWZmID0gYS5jbG9uZSgpLl9pc2hsbnN1Ym11bChiLCAxLCBtKTtcbiAgICBpZiAoZGlmZi5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgYSA9IGRpZmY7XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW21dID0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gbSAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICB2YXIgcWogPSAoYS53b3Jkc1tiLmxlbmd0aCArIGpdIHwgMCkgKiAweDQwMDAwMDAgK1xuICAgICAgICAoYS53b3Jkc1tiLmxlbmd0aCArIGogLSAxXSB8IDApO1xuXG4gICAgICAvLyBOT1RFOiAocWogLyBiaGkpIGlzICgweDNmZmZmZmYgKiAweDQwMDAwMDAgKyAweDNmZmZmZmYpIC8gMHgyMDAwMDAwIG1heFxuICAgICAgLy8gKDB4N2ZmZmZmZilcbiAgICAgIHFqID0gTWF0aC5taW4oKHFqIC8gYmhpKSB8IDAsIDB4M2ZmZmZmZik7XG5cbiAgICAgIGEuX2lzaGxuc3VibXVsKGIsIHFqLCBqKTtcbiAgICAgIHdoaWxlIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIHFqLS07XG4gICAgICAgIGEubmVnYXRpdmUgPSAwO1xuICAgICAgICBhLl9pc2hsbnN1Ym11bChiLCAxLCBqKTtcbiAgICAgICAgaWYgKCFhLmlzWmVybygpKSB7XG4gICAgICAgICAgYS5uZWdhdGl2ZSBePSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW2pdID0gcWo7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxKSB7XG4gICAgICBxLnN0cmlwKCk7XG4gICAgfVxuICAgIGEuc3RyaXAoKTtcblxuICAgIC8vIERlbm9ybWFsaXplXG4gICAgaWYgKG1vZGUgIT09ICdkaXYnICYmIHNoaWZ0ICE9PSAwKSB7XG4gICAgICBhLml1c2hybihzaGlmdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpdjogcSB8fCBudWxsLFxuICAgICAgbW9kOiBhXG4gICAgfTtcbiAgfTtcblxuICAvLyBOT1RFOiAxKSBgbW9kZWAgY2FuIGJlIHNldCB0byBgbW9kYCB0byByZXF1ZXN0IG1vZCBvbmx5LFxuICAvLyAgICAgICB0byBgZGl2YCB0byByZXF1ZXN0IGRpdiBvbmx5LCBvciBiZSBhYnNlbnQgdG9cbiAgLy8gICAgICAgcmVxdWVzdCBib3RoIGRpdiAmIG1vZFxuICAvLyAgICAgICAyKSBgcG9zaXRpdmVgIGlzIHRydWUgaWYgdW5zaWduZWQgbW9kIGlzIHJlcXVlc3RlZFxuICBCTi5wcm90b3R5cGUuZGl2bW9kID0gZnVuY3Rpb24gZGl2bW9kIChudW0sIG1vZGUsIHBvc2l0aXZlKSB7XG4gICAgYXNzZXJ0KCFudW0uaXNaZXJvKCkpO1xuXG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IG5ldyBCTigwKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZGl2LCBtb2QsIHJlcztcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pYWRkKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IHJlcy5tb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCh0aGlzLm5lZ2F0aXZlICYgbnVtLm5lZ2F0aXZlKSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaXN1YihudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogcmVzLmRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZSBhdCB0aGlzIHBvaW50XG5cbiAgICAvLyBTdHJpcCBib3RoIG51bWJlcnMgdG8gYXBwcm94aW1hdGUgc2hpZnQgdmFsdWVcbiAgICBpZiAobnVtLmxlbmd0aCA+IHRoaXMubGVuZ3RoIHx8IHRoaXMuY21wKG51bSkgPCAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiB0aGlzXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFZlcnkgc2hvcnQgcmVkdWN0aW9uXG4gICAgaWYgKG51bS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGlmIChtb2RlID09PSAnZGl2Jykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgICAgbW9kOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlID09PSAnbW9kJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogbnVsbCxcbiAgICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl93b3JkRGl2KG51bSwgbW9kZSk7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgLyBgbnVtYFxuICBCTi5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gZGl2IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnZGl2JywgZmFsc2UpLmRpdjtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAlIGBudW1gXG4gIEJOLnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiBtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCBmYWxzZSkubW9kO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51bW9kID0gZnVuY3Rpb24gdW1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIHRydWUpLm1vZDtcbiAgfTtcblxuICAvLyBGaW5kIFJvdW5kKGB0aGlzYCAvIGBudW1gKVxuICBCTi5wcm90b3R5cGUuZGl2Um91bmQgPSBmdW5jdGlvbiBkaXZSb3VuZCAobnVtKSB7XG4gICAgdmFyIGRtID0gdGhpcy5kaXZtb2QobnVtKTtcblxuICAgIC8vIEZhc3QgY2FzZSAtIGV4YWN0IGRpdmlzaW9uXG4gICAgaWYgKGRtLm1vZC5pc1plcm8oKSkgcmV0dXJuIGRtLmRpdjtcblxuICAgIHZhciBtb2QgPSBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5tb2QuaXN1YihudW0pIDogZG0ubW9kO1xuXG4gICAgdmFyIGhhbGYgPSBudW0udXNocm4oMSk7XG4gICAgdmFyIHIyID0gbnVtLmFuZGxuKDEpO1xuICAgIHZhciBjbXAgPSBtb2QuY21wKGhhbGYpO1xuXG4gICAgLy8gUm91bmQgZG93blxuICAgIGlmIChjbXAgPCAwIHx8IHIyID09PSAxICYmIGNtcCA9PT0gMCkgcmV0dXJuIGRtLmRpdjtcblxuICAgIC8vIFJvdW5kIHVwXG4gICAgcmV0dXJuIGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLmRpdi5pc3VibigxKSA6IGRtLmRpdi5pYWRkbigxKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubW9kbiA9IGZ1bmN0aW9uIG1vZG4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcbiAgICB2YXIgcCA9ICgxIDw8IDI2KSAlIG51bTtcblxuICAgIHZhciBhY2MgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBhY2MgPSAocCAqIGFjYyArICh0aGlzLndvcmRzW2ldIHwgMCkpICUgbnVtO1xuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgZGl2aXNpb24gYnkgbnVtYmVyXG4gIEJOLnByb3RvdHlwZS5pZGl2biA9IGZ1bmN0aW9uIGlkaXZuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeSAqIDB4NDAwMDAwMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAodyAvIG51bSkgfCAwO1xuICAgICAgY2FycnkgPSB3ICUgbnVtO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmRpdm4gPSBmdW5jdGlvbiBkaXZuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVnY2QgPSBmdW5jdGlvbiBlZ2NkIChwKSB7XG4gICAgYXNzZXJ0KHAubmVnYXRpdmUgPT09IDApO1xuICAgIGFzc2VydCghcC5pc1plcm8oKSk7XG5cbiAgICB2YXIgeCA9IHRoaXM7XG4gICAgdmFyIHkgPSBwLmNsb25lKCk7XG5cbiAgICBpZiAoeC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgeCA9IHgudW1vZChwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHguY2xvbmUoKTtcbiAgICB9XG5cbiAgICAvLyBBICogeCArIEIgKiB5ID0geFxuICAgIHZhciBBID0gbmV3IEJOKDEpO1xuICAgIHZhciBCID0gbmV3IEJOKDApO1xuXG4gICAgLy8gQyAqIHggKyBEICogeSA9IHlcbiAgICB2YXIgQyA9IG5ldyBCTigwKTtcbiAgICB2YXIgRCA9IG5ldyBCTigxKTtcblxuICAgIHZhciBnID0gMDtcblxuICAgIHdoaWxlICh4LmlzRXZlbigpICYmIHkuaXNFdmVuKCkpIHtcbiAgICAgIHguaXVzaHJuKDEpO1xuICAgICAgeS5pdXNocm4oMSk7XG4gICAgICArK2c7XG4gICAgfVxuXG4gICAgdmFyIHlwID0geS5jbG9uZSgpO1xuICAgIHZhciB4cCA9IHguY2xvbmUoKTtcblxuICAgIHdoaWxlICgheC5pc1plcm8oKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGltID0gMTsgKHgud29yZHNbMF0gJiBpbSkgPT09IDAgJiYgaSA8IDI2OyArK2ksIGltIDw8PSAxKTtcbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICB4Lml1c2hybihpKTtcbiAgICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgICBpZiAoQS5pc09kZCgpIHx8IEIuaXNPZGQoKSkge1xuICAgICAgICAgICAgQS5pYWRkKHlwKTtcbiAgICAgICAgICAgIEIuaXN1Yih4cCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQS5pdXNocm4oMSk7XG4gICAgICAgICAgQi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKHkud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICB5Lml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoQy5pc09kZCgpIHx8IEQuaXNPZGQoKSkge1xuICAgICAgICAgICAgQy5pYWRkKHlwKTtcbiAgICAgICAgICAgIEQuaXN1Yih4cCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQy5pdXNocm4oMSk7XG4gICAgICAgICAgRC5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHguY21wKHkpID49IDApIHtcbiAgICAgICAgeC5pc3ViKHkpO1xuICAgICAgICBBLmlzdWIoQyk7XG4gICAgICAgIEIuaXN1YihEKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHkuaXN1Yih4KTtcbiAgICAgICAgQy5pc3ViKEEpO1xuICAgICAgICBELmlzdWIoQik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGE6IEMsXG4gICAgICBiOiBELFxuICAgICAgZ2NkOiB5Lml1c2hsbihnKVxuICAgIH07XG4gIH07XG5cbiAgLy8gVGhpcyBpcyByZWR1Y2VkIGluY2FybmF0aW9uIG9mIHRoZSBiaW5hcnkgRUVBXG4gIC8vIGFib3ZlLCBkZXNpZ25hdGVkIHRvIGludmVydCBtZW1iZXJzIG9mIHRoZVxuICAvLyBfcHJpbWVfIGZpZWxkcyBGKHApIGF0IGEgbWF4aW1hbCBzcGVlZFxuICBCTi5wcm90b3R5cGUuX2ludm1wID0gZnVuY3Rpb24gX2ludm1wIChwKSB7XG4gICAgYXNzZXJ0KHAubmVnYXRpdmUgPT09IDApO1xuICAgIGFzc2VydCghcC5pc1plcm8oKSk7XG5cbiAgICB2YXIgYSA9IHRoaXM7XG4gICAgdmFyIGIgPSBwLmNsb25lKCk7XG5cbiAgICBpZiAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgYSA9IGEudW1vZChwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IGEuY2xvbmUoKTtcbiAgICB9XG5cbiAgICB2YXIgeDEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIHgyID0gbmV3IEJOKDApO1xuXG4gICAgdmFyIGRlbHRhID0gYi5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKGEuY21wbigxKSA+IDAgJiYgYi5jbXBuKDEpID4gMCkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGltID0gMTsgKGEud29yZHNbMF0gJiBpbSkgPT09IDAgJiYgaSA8IDI2OyArK2ksIGltIDw8PSAxKTtcbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICBhLml1c2hybihpKTtcbiAgICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDEuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDEuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDEuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7IChiLndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgYi5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgyLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgyLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgyLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYS5jbXAoYikgPj0gMCkge1xuICAgICAgICBhLmlzdWIoYik7XG4gICAgICAgIHgxLmlzdWIoeDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYi5pc3ViKGEpO1xuICAgICAgICB4Mi5pc3ViKHgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmIChhLmNtcG4oMSkgPT09IDApIHtcbiAgICAgIHJlcyA9IHgxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSB4MjtcbiAgICB9XG5cbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZChwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5nY2QgPSBmdW5jdGlvbiBnY2QgKG51bSkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gbnVtLmFicygpO1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiB0aGlzLmFicygpO1xuXG4gICAgdmFyIGEgPSB0aGlzLmNsb25lKCk7XG4gICAgdmFyIGIgPSBudW0uY2xvbmUoKTtcbiAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICBiLm5lZ2F0aXZlID0gMDtcblxuICAgIC8vIFJlbW92ZSBjb21tb24gZmFjdG9yIG9mIHR3b1xuICAgIGZvciAodmFyIHNoaWZ0ID0gMDsgYS5pc0V2ZW4oKSAmJiBiLmlzRXZlbigpOyBzaGlmdCsrKSB7XG4gICAgICBhLml1c2hybigxKTtcbiAgICAgIGIuaXVzaHJuKDEpO1xuICAgIH1cblxuICAgIGRvIHtcbiAgICAgIHdoaWxlIChhLmlzRXZlbigpKSB7XG4gICAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKGIuaXNFdmVuKCkpIHtcbiAgICAgICAgYi5pdXNocm4oMSk7XG4gICAgICB9XG5cbiAgICAgIHZhciByID0gYS5jbXAoYik7XG4gICAgICBpZiAociA8IDApIHtcbiAgICAgICAgLy8gU3dhcCBgYWAgYW5kIGBiYCB0byBtYWtlIGBhYCBhbHdheXMgYmlnZ2VyIHRoYW4gYGJgXG4gICAgICAgIHZhciB0ID0gYTtcbiAgICAgICAgYSA9IGI7XG4gICAgICAgIGIgPSB0O1xuICAgICAgfSBlbHNlIGlmIChyID09PSAwIHx8IGIuY21wbigxKSA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgYS5pc3ViKGIpO1xuICAgIH0gd2hpbGUgKHRydWUpO1xuXG4gICAgcmV0dXJuIGIuaXVzaGxuKHNoaWZ0KTtcbiAgfTtcblxuICAvLyBJbnZlcnQgbnVtYmVyIGluIHRoZSBmaWVsZCBGKG51bSlcbiAgQk4ucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5lZ2NkKG51bSkuYS51bW9kKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzRXZlbiA9IGZ1bmN0aW9uIGlzRXZlbiAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gaXNPZGQgKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAxO1xuICB9O1xuXG4gIC8vIEFuZCBmaXJzdCB3b3JkIGFuZCBudW1cbiAgQk4ucHJvdG90eXBlLmFuZGxuID0gZnVuY3Rpb24gYW5kbG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLndvcmRzWzBdICYgbnVtO1xuICB9O1xuXG4gIC8vIEluY3JlbWVudCBhdCB0aGUgYml0IHBvc2l0aW9uIGluLWxpbmVcbiAgQk4ucHJvdG90eXBlLmJpbmNuID0gZnVuY3Rpb24gYmluY24gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgdGhpcy5fZXhwYW5kKHMgKyAxKTtcbiAgICAgIHRoaXMud29yZHNbc10gfD0gcTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBiaXQgYW5kIHByb3BhZ2F0ZSwgaWYgbmVlZGVkXG4gICAgdmFyIGNhcnJ5ID0gcTtcbiAgICBmb3IgKHZhciBpID0gczsgY2FycnkgIT09IDAgJiYgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB3ICs9IGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+PiAyNjtcbiAgICAgIHcgJj0gMHgzZmZmZmZmO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHc7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uIGlzWmVybyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNtcG4gPSBmdW5jdGlvbiBjbXBuIChudW0pIHtcbiAgICB2YXIgbmVnYXRpdmUgPSBudW0gPCAwO1xuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgIW5lZ2F0aXZlKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbmVnYXRpdmUpIHJldHVybiAxO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuXG4gICAgdmFyIHJlcztcbiAgICBpZiAodGhpcy5sZW5ndGggPiAxKSB7XG4gICAgICByZXMgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobmVnYXRpdmUpIHtcbiAgICAgICAgbnVtID0gLW51bTtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYsICdOdW1iZXIgaXMgdG9vIGJpZycpO1xuXG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbMF0gfCAwO1xuICAgICAgcmVzID0gdyA9PT0gbnVtID8gMCA6IHcgPCBudW0gPyAtMSA6IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb21wYXJlIHR3byBudW1iZXJzIGFuZCByZXR1cm46XG4gIC8vIDEgLSBpZiBgdGhpc2AgPiBgbnVtYFxuICAvLyAwIC0gaWYgYHRoaXNgID09IGBudW1gXG4gIC8vIC0xIC0gaWYgYHRoaXNgIDwgYG51bWBcbiAgQk4ucHJvdG90eXBlLmNtcCA9IGZ1bmN0aW9uIGNtcCAobnVtKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gMTtcblxuICAgIHZhciByZXMgPSB0aGlzLnVjbXAobnVtKTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gVW5zaWduZWQgY29tcGFyaXNvblxuICBCTi5wcm90b3R5cGUudWNtcCA9IGZ1bmN0aW9uIHVjbXAgKG51bSkge1xuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGhhdmUgdGhlIHNhbWUgc2lnblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiAxO1xuICAgIGlmICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHJldHVybiAtMTtcblxuICAgIHZhciByZXMgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgYSA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdmFyIGIgPSBudW0ud29yZHNbaV0gfCAwO1xuXG4gICAgICBpZiAoYSA9PT0gYikgY29udGludWU7XG4gICAgICBpZiAoYSA8IGIpIHtcbiAgICAgICAgcmVzID0gLTE7XG4gICAgICB9IGVsc2UgaWYgKGEgPiBiKSB7XG4gICAgICAgIHJlcyA9IDE7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RuID0gZnVuY3Rpb24gZ3RuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ID0gZnVuY3Rpb24gZ3QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGVuID0gZnVuY3Rpb24gZ3RlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZSA9IGZ1bmN0aW9uIGd0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRuID0gZnVuY3Rpb24gbHRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdCA9IGZ1bmN0aW9uIGx0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZW4gPSBmdW5jdGlvbiBsdGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlID0gZnVuY3Rpb24gbHRlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcW4gPSBmdW5jdGlvbiBlcW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDA7XG4gIH07XG5cbiAgLy9cbiAgLy8gQSByZWR1Y2UgY29udGV4dCwgY291bGQgYmUgdXNpbmcgbW9udGdvbWVyeSBvciBzb21ldGhpbmcgYmV0dGVyLCBkZXBlbmRpbmdcbiAgLy8gb24gdGhlIGBtYCBpdHNlbGYuXG4gIC8vXG4gIEJOLnJlZCA9IGZ1bmN0aW9uIHJlZCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBSZWQobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9SZWQgPSBmdW5jdGlvbiB0b1JlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgcmV0dXJuIGN0eC5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21SZWQgPSBmdW5jdGlvbiBmcm9tUmVkICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZm9yY2VSZWQgPSBmdW5jdGlvbiBfZm9yY2VSZWQgKGN0eCkge1xuICAgIHRoaXMucmVkID0gY3R4O1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mb3JjZVJlZCA9IGZ1bmN0aW9uIGZvcmNlUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRBZGQgPSBmdW5jdGlvbiByZWRBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElBZGQgPSBmdW5jdGlvbiByZWRJQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFN1YiA9IGZ1bmN0aW9uIHJlZFN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVN1YiA9IGZ1bmN0aW9uIHJlZElTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU2hsID0gZnVuY3Rpb24gcmVkU2hsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNobCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRNdWwgPSBmdW5jdGlvbiByZWRNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5tdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSU11bCA9IGZ1bmN0aW9uIHJlZElNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNxciA9IGZ1bmN0aW9uIHJlZFNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXIodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTcXIgPSBmdW5jdGlvbiByZWRJU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3FyKHRoaXMpO1xuICB9O1xuXG4gIC8vIFNxdWFyZSByb290IG92ZXIgcFxuICBCTi5wcm90b3R5cGUucmVkU3FydCA9IGZ1bmN0aW9uIHJlZFNxcnQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcnQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEludm0gPSBmdW5jdGlvbiByZWRJbnZtICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbnZtKHRoaXMpO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2AgJSBgcmVkIG1vZHVsb2BcbiAgQk4ucHJvdG90eXBlLnJlZE5lZyA9IGZ1bmN0aW9uIHJlZE5lZyAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5uZWcodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFBvdyA9IGZ1bmN0aW9uIHJlZFBvdyAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkICYmICFudW0ucmVkLCAncmVkUG93KG5vcm1hbE51bSknKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQucG93KHRoaXMsIG51bSk7XG4gIH07XG5cbiAgLy8gUHJpbWUgbnVtYmVycyB3aXRoIGVmZmljaWVudCByZWR1Y3Rpb25cbiAgdmFyIHByaW1lcyA9IHtcbiAgICBrMjU2OiBudWxsLFxuICAgIHAyMjQ6IG51bGwsXG4gICAgcDE5MjogbnVsbCxcbiAgICBwMjU1MTk6IG51bGxcbiAgfTtcblxuICAvLyBQc2V1ZG8tTWVyc2VubmUgcHJpbWVcbiAgZnVuY3Rpb24gTVByaW1lIChuYW1lLCBwKSB7XG4gICAgLy8gUCA9IDIgXiBOIC0gS1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wID0gbmV3IEJOKHAsIDE2KTtcbiAgICB0aGlzLm4gPSB0aGlzLnAuYml0TGVuZ3RoKCk7XG4gICAgdGhpcy5rID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKTtcblxuICAgIHRoaXMudG1wID0gdGhpcy5fdG1wKCk7XG4gIH1cblxuICBNUHJpbWUucHJvdG90eXBlLl90bXAgPSBmdW5jdGlvbiBfdG1wICgpIHtcbiAgICB2YXIgdG1wID0gbmV3IEJOKG51bGwpO1xuICAgIHRtcC53b3JkcyA9IG5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uIC8gMTMpKTtcbiAgICByZXR1cm4gdG1wO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaXJlZHVjZSA9IGZ1bmN0aW9uIGlyZWR1Y2UgKG51bSkge1xuICAgIC8vIEFzc3VtZXMgdGhhdCBgbnVtYCBpcyBsZXNzIHRoYW4gYFBeMmBcbiAgICAvLyBudW0gPSBISSAqICgyIF4gTiAtIEspICsgSEkgKiBLICsgTE8gPSBISSAqIEsgKyBMTyAobW9kIFApXG4gICAgdmFyIHIgPSBudW07XG4gICAgdmFyIHJsZW47XG5cbiAgICBkbyB7XG4gICAgICB0aGlzLnNwbGl0KHIsIHRoaXMudG1wKTtcbiAgICAgIHIgPSB0aGlzLmltdWxLKHIpO1xuICAgICAgciA9IHIuaWFkZCh0aGlzLnRtcCk7XG4gICAgICBybGVuID0gci5iaXRMZW5ndGgoKTtcbiAgICB9IHdoaWxlIChybGVuID4gdGhpcy5uKTtcblxuICAgIHZhciBjbXAgPSBybGVuIDwgdGhpcy5uID8gLTEgOiByLnVjbXAodGhpcy5wKTtcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICByLndvcmRzWzBdID0gMDtcbiAgICAgIHIubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKGNtcCA+IDApIHtcbiAgICAgIHIuaXN1Yih0aGlzLnApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoci5zdHJpcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIHIgaXMgQk4gdjQgaW5zdGFuY2VcbiAgICAgICAgci5zdHJpcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NSBpbnN0YW5jZVxuICAgICAgICByLl9zdHJpcCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dCkge1xuICAgIGlucHV0Lml1c2hybih0aGlzLm4sIDAsIG91dCk7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICByZXR1cm4gbnVtLmltdWwodGhpcy5rKTtcbiAgfTtcblxuICBmdW5jdGlvbiBLMjU2ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnazI1NicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYnKTtcbiAgfVxuICBpbmhlcml0cyhLMjU2LCBNUHJpbWUpO1xuXG4gIEsyNTYucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXRwdXQpIHtcbiAgICAvLyAyNTYgPSA5ICogMjYgKyAyMlxuICAgIHZhciBtYXNrID0gMHgzZmZmZmY7XG5cbiAgICB2YXIgb3V0TGVuID0gTWF0aC5taW4oaW5wdXQubGVuZ3RoLCA5KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG91dExlbjsgaSsrKSB7XG4gICAgICBvdXRwdXQud29yZHNbaV0gPSBpbnB1dC53b3Jkc1tpXTtcbiAgICB9XG4gICAgb3V0cHV0Lmxlbmd0aCA9IG91dExlbjtcblxuICAgIGlmIChpbnB1dC5sZW5ndGggPD0gOSkge1xuICAgICAgaW5wdXQud29yZHNbMF0gPSAwO1xuICAgICAgaW5wdXQubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTaGlmdCBieSA5IGxpbWJzXG4gICAgdmFyIHByZXYgPSBpbnB1dC53b3Jkc1s5XTtcbiAgICBvdXRwdXQud29yZHNbb3V0cHV0Lmxlbmd0aCsrXSA9IHByZXYgJiBtYXNrO1xuXG4gICAgZm9yIChpID0gMTA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5leHQgPSBpbnB1dC53b3Jkc1tpXSB8IDA7XG4gICAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gKChuZXh0ICYgbWFzaykgPDwgNCkgfCAocHJldiA+Pj4gMjIpO1xuICAgICAgcHJldiA9IG5leHQ7XG4gICAgfVxuICAgIHByZXYgPj4+PSAyMjtcbiAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gcHJldjtcbiAgICBpZiAocHJldiA9PT0gMCAmJiBpbnB1dC5sZW5ndGggPiAxMCkge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDEwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gOTtcbiAgICB9XG4gIH07XG5cbiAgSzI1Ni5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTAwMDAwM2QxID0gWyAweDQwLCAweDNkMSBdXG4gICAgbnVtLndvcmRzW251bS5sZW5ndGhdID0gMDtcbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aCArIDFdID0gMDtcbiAgICBudW0ubGVuZ3RoICs9IDI7XG5cbiAgICAvLyBib3VuZGVkIGF0OiAweDQwICogMHgzZmZmZmZmICsgMHgzZDAgPSAweDEwMDAwMDM5MFxuICAgIHZhciBsbyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gbnVtLndvcmRzW2ldIHwgMDtcbiAgICAgIGxvICs9IHcgKiAweDNkMTtcbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgbG8gPSB3ICogMHg0MCArICgobG8gLyAweDQwMDAwMDApIHwgMCk7XG4gICAgfVxuXG4gICAgLy8gRmFzdCBsZW5ndGggcmVkdWN0aW9uXG4gICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICBmdW5jdGlvbiBQMjI0ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDIyNCcsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEnKTtcbiAgfVxuICBpbmhlcml0cyhQMjI0LCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAxOTIgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMTkyJyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicpO1xuICB9XG4gIGluaGVyaXRzKFAxOTIsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDI1NTE5ICgpIHtcbiAgICAvLyAyIF4gMjU1IC0gMTlcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnMjU1MTknLFxuICAgICAgJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnKTtcbiAgfVxuICBpbmhlcml0cyhQMjU1MTksIE1QcmltZSk7XG5cbiAgUDI1NTE5LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxM1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoaSA9IChudW0ud29yZHNbaV0gfCAwKSAqIDB4MTMgKyBjYXJyeTtcbiAgICAgIHZhciBsbyA9IGhpICYgMHgzZmZmZmZmO1xuICAgICAgaGkgPj4+PSAyNjtcblxuICAgICAgbnVtLndvcmRzW2ldID0gbG87XG4gICAgICBjYXJyeSA9IGhpO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgLy8gRXhwb3J0ZWQgbW9zdGx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB1c2UgcGxhaW4gbmFtZSBpbnN0ZWFkXG4gIEJOLl9wcmltZSA9IGZ1bmN0aW9uIHByaW1lIChuYW1lKSB7XG4gICAgLy8gQ2FjaGVkIHZlcnNpb24gb2YgcHJpbWVcbiAgICBpZiAocHJpbWVzW25hbWVdKSByZXR1cm4gcHJpbWVzW25hbWVdO1xuXG4gICAgdmFyIHByaW1lO1xuICAgIGlmIChuYW1lID09PSAnazI1NicpIHtcbiAgICAgIHByaW1lID0gbmV3IEsyNTYoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjI0Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDIyNCgpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AxOTInKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMTkyKCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDI1NTE5Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDI1NTE5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBwcmltZSAnICsgbmFtZSk7XG4gICAgfVxuICAgIHByaW1lc1tuYW1lXSA9IHByaW1lO1xuXG4gICAgcmV0dXJuIHByaW1lO1xuICB9O1xuXG4gIC8vXG4gIC8vIEJhc2UgcmVkdWN0aW9uIGVuZ2luZVxuICAvL1xuICBmdW5jdGlvbiBSZWQgKG0pIHtcbiAgICBpZiAodHlwZW9mIG0gPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgcHJpbWUgPSBCTi5fcHJpbWUobSk7XG4gICAgICB0aGlzLm0gPSBwcmltZS5wO1xuICAgICAgdGhpcy5wcmltZSA9IHByaW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobS5ndG4oMSksICdtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEnKTtcbiAgICAgIHRoaXMubSA9IG07XG4gICAgICB0aGlzLnByaW1lID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkxID0gZnVuY3Rpb24gX3ZlcmlmeTEgKGEpIHtcbiAgICBhc3NlcnQoYS5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkLCAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTIgPSBmdW5jdGlvbiBfdmVyaWZ5MiAoYSwgYikge1xuICAgIGFzc2VydCgoYS5uZWdhdGl2ZSB8IGIubmVnYXRpdmUpID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQgJiYgYS5yZWQgPT09IGIucmVkLFxuICAgICAgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltb2QgPSBmdW5jdGlvbiBpbW9kIChhKSB7XG4gICAgaWYgKHRoaXMucHJpbWUpIHJldHVybiB0aGlzLnByaW1lLmlyZWR1Y2UoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICAgIHJldHVybiBhLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIGEuY2xvbmUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tLnN1YihhKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5zdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zaGwgPSBmdW5jdGlvbiBzaGwgKGEsIG51bSkge1xuICAgIHRoaXMuX3ZlcmlmeTEoYSk7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLnVzaGxuKG51bSkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5pbXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLm11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLmltdWwoYSwgYS5jbG9uZSgpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLm11bChhLCBhKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxcnQgPSBmdW5jdGlvbiBzcXJ0IChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgbW9kMyA9IHRoaXMubS5hbmRsbigzKTtcbiAgICBhc3NlcnQobW9kMyAlIDIgPT09IDEpO1xuXG4gICAgLy8gRmFzdCBjYXNlXG4gICAgaWYgKG1vZDMgPT09IDMpIHtcbiAgICAgIHZhciBwb3cgPSB0aGlzLm0uYWRkKG5ldyBCTigxKSkuaXVzaHJuKDIpO1xuICAgICAgcmV0dXJuIHRoaXMucG93KGEsIHBvdyk7XG4gICAgfVxuXG4gICAgLy8gVG9uZWxsaS1TaGFua3MgYWxnb3JpdGhtIChUb3RhbGx5IHVub3B0aW1pemVkIGFuZCBzbG93KVxuICAgIC8vXG4gICAgLy8gRmluZCBRIGFuZCBTLCB0aGF0IFEgKiAyIF4gUyA9IChQIC0gMSlcbiAgICB2YXIgcSA9IHRoaXMubS5zdWJuKDEpO1xuICAgIHZhciBzID0gMDtcbiAgICB3aGlsZSAoIXEuaXNaZXJvKCkgJiYgcS5hbmRsbigxKSA9PT0gMCkge1xuICAgICAgcysrO1xuICAgICAgcS5pdXNocm4oMSk7XG4gICAgfVxuICAgIGFzc2VydCghcS5pc1plcm8oKSk7XG5cbiAgICB2YXIgb25lID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHZhciBuT25lID0gb25lLnJlZE5lZygpO1xuXG4gICAgLy8gRmluZCBxdWFkcmF0aWMgbm9uLXJlc2lkdWVcbiAgICAvLyBOT1RFOiBNYXggaXMgc3VjaCBiZWNhdXNlIG9mIGdlbmVyYWxpemVkIFJpZW1hbm4gaHlwb3RoZXNpcy5cbiAgICB2YXIgbHBvdyA9IHRoaXMubS5zdWJuKDEpLml1c2hybigxKTtcbiAgICB2YXIgeiA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICB6ID0gbmV3IEJOKDIgKiB6ICogeikudG9SZWQodGhpcyk7XG5cbiAgICB3aGlsZSAodGhpcy5wb3coeiwgbHBvdykuY21wKG5PbmUpICE9PSAwKSB7XG4gICAgICB6LnJlZElBZGQobk9uZSk7XG4gICAgfVxuXG4gICAgdmFyIGMgPSB0aGlzLnBvdyh6LCBxKTtcbiAgICB2YXIgciA9IHRoaXMucG93KGEsIHEuYWRkbigxKS5pdXNocm4oMSkpO1xuICAgIHZhciB0ID0gdGhpcy5wb3coYSwgcSk7XG4gICAgdmFyIG0gPSBzO1xuICAgIHdoaWxlICh0LmNtcChvbmUpICE9PSAwKSB7XG4gICAgICB2YXIgdG1wID0gdDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyB0bXAuY21wKG9uZSkgIT09IDA7IGkrKykge1xuICAgICAgICB0bXAgPSB0bXAucmVkU3FyKCk7XG4gICAgICB9XG4gICAgICBhc3NlcnQoaSA8IG0pO1xuICAgICAgdmFyIGIgPSB0aGlzLnBvdyhjLCBuZXcgQk4oMSkuaXVzaGxuKG0gLSBpIC0gMSkpO1xuXG4gICAgICByID0gci5yZWRNdWwoYik7XG4gICAgICBjID0gYi5yZWRTcXIoKTtcbiAgICAgIHQgPSB0LnJlZE11bChjKTtcbiAgICAgIG0gPSBpO1xuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICB2YXIgaW52ID0gYS5faW52bXAodGhpcy5tKTtcbiAgICBpZiAoaW52Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpbnYubmVnYXRpdmUgPSAwO1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpLnJlZE5lZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludik7XG4gICAgfVxuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChhLCBudW0pIHtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIGlmIChudW0uY21wbigxKSA9PT0gMCkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciB3aW5kb3dTaXplID0gNDtcbiAgICB2YXIgd25kID0gbmV3IEFycmF5KDEgPDwgd2luZG93U2l6ZSk7XG4gICAgd25kWzBdID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHduZFsxXSA9IGE7XG4gICAgZm9yICh2YXIgaSA9IDI7IGkgPCB3bmQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHduZFtpXSA9IHRoaXMubXVsKHduZFtpIC0gMV0sIGEpO1xuICAgIH1cblxuICAgIHZhciByZXMgPSB3bmRbMF07XG4gICAgdmFyIGN1cnJlbnQgPSAwO1xuICAgIHZhciBjdXJyZW50TGVuID0gMDtcbiAgICB2YXIgc3RhcnQgPSBudW0uYml0TGVuZ3RoKCkgJSAyNjtcbiAgICBpZiAoc3RhcnQgPT09IDApIHtcbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgZm9yIChpID0gbnVtLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IG51bS53b3Jkc1tpXTtcbiAgICAgIGZvciAodmFyIGogPSBzdGFydCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgIHZhciBiaXQgPSAod29yZCA+PiBqKSAmIDE7XG4gICAgICAgIGlmIChyZXMgIT09IHduZFswXSkge1xuICAgICAgICAgIHJlcyA9IHRoaXMuc3FyKHJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYml0ID09PSAwICYmIGN1cnJlbnQgPT09IDApIHtcbiAgICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnQgPDw9IDE7XG4gICAgICAgIGN1cnJlbnQgfD0gYml0O1xuICAgICAgICBjdXJyZW50TGVuKys7XG4gICAgICAgIGlmIChjdXJyZW50TGVuICE9PSB3aW5kb3dTaXplICYmIChpICE9PSAwIHx8IGogIT09IDApKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSB0aGlzLm11bChyZXMsIHduZFtjdXJyZW50XSk7XG4gICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICBjdXJyZW50ID0gMDtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgdmFyIHIgPSBudW0udW1vZCh0aGlzLm0pO1xuXG4gICAgcmV0dXJuIHIgPT09IG51bSA/IHIuY2xvbmUoKSA6IHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgcmVzID0gbnVtLmNsb25lKCk7XG4gICAgcmVzLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvL1xuICAvLyBNb250Z29tZXJ5IG1ldGhvZCBlbmdpbmVcbiAgLy9cblxuICBCTi5tb250ID0gZnVuY3Rpb24gbW9udCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBNb250KG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gTW9udCAobSkge1xuICAgIFJlZC5jYWxsKHRoaXMsIG0pO1xuXG4gICAgdGhpcy5zaGlmdCA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICBpZiAodGhpcy5zaGlmdCAlIDI2ICE9PSAwKSB7XG4gICAgICB0aGlzLnNoaWZ0ICs9IDI2IC0gKHRoaXMuc2hpZnQgJSAyNik7XG4gICAgfVxuXG4gICAgdGhpcy5yID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLnNoaWZ0KTtcbiAgICB0aGlzLnIyID0gdGhpcy5pbW9kKHRoaXMuci5zcXIoKSk7XG4gICAgdGhpcy5yaW52ID0gdGhpcy5yLl9pbnZtcCh0aGlzLm0pO1xuXG4gICAgdGhpcy5taW52ID0gdGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pO1xuICAgIHRoaXMubWludiA9IHRoaXMubWludi51bW9kKHRoaXMucik7XG4gICAgdGhpcy5taW52ID0gdGhpcy5yLnN1Yih0aGlzLm1pbnYpO1xuICB9XG4gIGluaGVyaXRzKE1vbnQsIFJlZCk7XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5pbW9kKG51bS51c2hsbih0aGlzLnNoaWZ0KSk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHIgPSB0aGlzLmltb2QobnVtLm11bCh0aGlzLnJpbnYpKTtcbiAgICByLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSB7XG4gICAgICBhLndvcmRzWzBdID0gMDtcbiAgICAgIGEubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiBhO1xuICAgIH1cblxuICAgIHZhciB0ID0gYS5pbXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuXG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDApLl9mb3JjZVJlZCh0aGlzKTtcblxuICAgIHZhciB0ID0gYS5tdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIC8vIChBUileLTEgKiBSXjIgPSAoQV4tMSAqIFJeLTEpICogUl4yID0gQV4tMSAqIFJcbiAgICB2YXIgcmVzID0gdGhpcy5pbW9kKGEuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKTtcbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcbn0pKHR5cGVvZiBtb2R1bGUgPT09ICd1bmRlZmluZWQnIHx8IG1vZHVsZSwgdGhpcyk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGFzc2VydDtcblxuZnVuY3Rpb24gYXNzZXJ0KHZhbCwgbXNnKSB7XG4gIGlmICghdmFsKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbn1cblxuYXNzZXJ0LmVxdWFsID0gZnVuY3Rpb24gYXNzZXJ0RXF1YWwobCwgciwgbXNnKSB7XG4gIGlmIChsICE9IHIpXG4gICAgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAoJ0Fzc2VydGlvbiBmYWlsZWQ6ICcgKyBsICsgJyAhPSAnICsgcikpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gZXhwb3J0cztcblxuZnVuY3Rpb24gdG9BcnJheShtc2csIGVuYykge1xuICBpZiAoQXJyYXkuaXNBcnJheShtc2cpKVxuICAgIHJldHVybiBtc2cuc2xpY2UoKTtcbiAgaWYgKCFtc2cpXG4gICAgcmV0dXJuIFtdO1xuICB2YXIgcmVzID0gW107XG4gIGlmICh0eXBlb2YgbXNnICE9PSAnc3RyaW5nJykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgICAgcmVzW2ldID0gbXNnW2ldIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIGlmIChlbmMgPT09ICdoZXgnKSB7XG4gICAgbXNnID0gbXNnLnJlcGxhY2UoL1teYS16MC05XSsvaWcsICcnKTtcbiAgICBpZiAobXNnLmxlbmd0aCAlIDIgIT09IDApXG4gICAgICBtc2cgPSAnMCcgKyBtc2c7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpICs9IDIpXG4gICAgICByZXMucHVzaChwYXJzZUludChtc2dbaV0gKyBtc2dbaSArIDFdLCAxNikpO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYyA9IG1zZy5jaGFyQ29kZUF0KGkpO1xuICAgICAgdmFyIGhpID0gYyA+PiA4O1xuICAgICAgdmFyIGxvID0gYyAmIDB4ZmY7XG4gICAgICBpZiAoaGkpXG4gICAgICAgIHJlcy5wdXNoKGhpLCBsbyk7XG4gICAgICBlbHNlXG4gICAgICAgIHJlcy5wdXNoKGxvKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvQXJyYXkgPSB0b0FycmF5O1xuXG5mdW5jdGlvbiB6ZXJvMih3b3JkKSB7XG4gIGlmICh3b3JkLmxlbmd0aCA9PT0gMSlcbiAgICByZXR1cm4gJzAnICsgd29yZDtcbiAgZWxzZVxuICAgIHJldHVybiB3b3JkO1xufVxudXRpbHMuemVybzIgPSB6ZXJvMjtcblxuZnVuY3Rpb24gdG9IZXgobXNnKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspXG4gICAgcmVzICs9IHplcm8yKG1zZ1tpXS50b1N0cmluZygxNikpO1xuICByZXR1cm4gcmVzO1xufVxudXRpbHMudG9IZXggPSB0b0hleDtcblxudXRpbHMuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGFyciwgZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB0b0hleChhcnIpO1xuICBlbHNlXG4gICAgcmV0dXJuIGFycjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBudW1iZXJJc05hTiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpcyhhLCBiKSB7XG5cdGlmIChhID09PSAwICYmIGIgPT09IDApIHtcblx0XHRyZXR1cm4gMSAvIGEgPT09IDEgLyBiO1xuXHR9XG5cdGlmIChhID09PSBiKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0aWYgKG51bWJlcklzTmFOKGEpICYmIG51bWJlcklzTmFOKGIpKSB7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZGVmaW5lID0gcmVxdWlyZSgnZGVmaW5lLXByb3BlcnRpZXMnKTtcbnZhciBjYWxsQmluZCA9IHJlcXVpcmUoJ2NhbGwtYmluZCcpO1xuXG52YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG52YXIgZ2V0UG9seWZpbGwgPSByZXF1aXJlKCcuL3BvbHlmaWxsJyk7XG52YXIgc2hpbSA9IHJlcXVpcmUoJy4vc2hpbScpO1xuXG52YXIgcG9seWZpbGwgPSBjYWxsQmluZChnZXRQb2x5ZmlsbCgpLCBPYmplY3QpO1xuXG5kZWZpbmUocG9seWZpbGwsIHtcblx0Z2V0UG9seWZpbGw6IGdldFBvbHlmaWxsLFxuXHRpbXBsZW1lbnRhdGlvbjogaW1wbGVtZW50YXRpb24sXG5cdHNoaW06IHNoaW1cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBvbHlmaWxsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZ2V0UG9seWZpbGwoKSB7XG5cdHJldHVybiB0eXBlb2YgT2JqZWN0LmlzID09PSAnZnVuY3Rpb24nID8gT2JqZWN0LmlzIDogaW1wbGVtZW50YXRpb247XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZ2V0UG9seWZpbGwgPSByZXF1aXJlKCcuL3BvbHlmaWxsJyk7XG52YXIgZGVmaW5lID0gcmVxdWlyZSgnZGVmaW5lLXByb3BlcnRpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzaGltT2JqZWN0SXMoKSB7XG5cdHZhciBwb2x5ZmlsbCA9IGdldFBvbHlmaWxsKCk7XG5cdGRlZmluZShPYmplY3QsIHsgaXM6IHBvbHlmaWxsIH0sIHtcblx0XHRpczogZnVuY3Rpb24gdGVzdE9iamVjdElzKCkge1xuXHRcdFx0cmV0dXJuIE9iamVjdC5pcyAhPT0gcG9seWZpbGw7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIHBvbHlmaWxsO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGtleXNTaGltO1xuaWYgKCFPYmplY3Qua2V5cykge1xuXHQvLyBtb2RpZmllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9lcy1zaGltcy9lczUtc2hpbVxuXHR2YXIgaGFzID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0dmFyIHRvU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblx0dmFyIGlzQXJncyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBnbG9iYWwtcmVxdWlyZVxuXHR2YXIgaXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblx0dmFyIGhhc0RvbnRFbnVtQnVnID0gIWlzRW51bWVyYWJsZS5jYWxsKHsgdG9TdHJpbmc6IG51bGwgfSwgJ3RvU3RyaW5nJyk7XG5cdHZhciBoYXNQcm90b0VudW1CdWcgPSBpc0VudW1lcmFibGUuY2FsbChmdW5jdGlvbiAoKSB7fSwgJ3Byb3RvdHlwZScpO1xuXHR2YXIgZG9udEVudW1zID0gW1xuXHRcdCd0b1N0cmluZycsXG5cdFx0J3RvTG9jYWxlU3RyaW5nJyxcblx0XHQndmFsdWVPZicsXG5cdFx0J2hhc093blByb3BlcnR5Jyxcblx0XHQnaXNQcm90b3R5cGVPZicsXG5cdFx0J3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcblx0XHQnY29uc3RydWN0b3InXG5cdF07XG5cdHZhciBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZSA9IGZ1bmN0aW9uIChvKSB7XG5cdFx0dmFyIGN0b3IgPSBvLmNvbnN0cnVjdG9yO1xuXHRcdHJldHVybiBjdG9yICYmIGN0b3IucHJvdG90eXBlID09PSBvO1xuXHR9O1xuXHR2YXIgZXhjbHVkZWRLZXlzID0ge1xuXHRcdCRhcHBsaWNhdGlvbkNhY2hlOiB0cnVlLFxuXHRcdCRjb25zb2xlOiB0cnVlLFxuXHRcdCRleHRlcm5hbDogdHJ1ZSxcblx0XHQkZnJhbWU6IHRydWUsXG5cdFx0JGZyYW1lRWxlbWVudDogdHJ1ZSxcblx0XHQkZnJhbWVzOiB0cnVlLFxuXHRcdCRpbm5lckhlaWdodDogdHJ1ZSxcblx0XHQkaW5uZXJXaWR0aDogdHJ1ZSxcblx0XHQkb25tb3pmdWxsc2NyZWVuY2hhbmdlOiB0cnVlLFxuXHRcdCRvbm1vemZ1bGxzY3JlZW5lcnJvcjogdHJ1ZSxcblx0XHQkb3V0ZXJIZWlnaHQ6IHRydWUsXG5cdFx0JG91dGVyV2lkdGg6IHRydWUsXG5cdFx0JHBhZ2VYT2Zmc2V0OiB0cnVlLFxuXHRcdCRwYWdlWU9mZnNldDogdHJ1ZSxcblx0XHQkcGFyZW50OiB0cnVlLFxuXHRcdCRzY3JvbGxMZWZ0OiB0cnVlLFxuXHRcdCRzY3JvbGxUb3A6IHRydWUsXG5cdFx0JHNjcm9sbFg6IHRydWUsXG5cdFx0JHNjcm9sbFk6IHRydWUsXG5cdFx0JHNlbGY6IHRydWUsXG5cdFx0JHdlYmtpdEluZGV4ZWREQjogdHJ1ZSxcblx0XHQkd2Via2l0U3RvcmFnZUluZm86IHRydWUsXG5cdFx0JHdpbmRvdzogdHJ1ZVxuXHR9O1xuXHR2YXIgaGFzQXV0b21hdGlvbkVxdWFsaXR5QnVnID0gKGZ1bmN0aW9uICgpIHtcblx0XHQvKiBnbG9iYWwgd2luZG93ICovXG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7IHJldHVybiBmYWxzZTsgfVxuXHRcdGZvciAodmFyIGsgaW4gd2luZG93KSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpZiAoIWV4Y2x1ZGVkS2V5c1snJCcgKyBrXSAmJiBoYXMuY2FsbCh3aW5kb3csIGspICYmIHdpbmRvd1trXSAhPT0gbnVsbCAmJiB0eXBlb2Ygd2luZG93W2tdID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZSh3aW5kb3dba10pO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9KCkpO1xuXHR2YXIgZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGVJZk5vdEJ1Z2d5ID0gZnVuY3Rpb24gKG8pIHtcblx0XHQvKiBnbG9iYWwgd2luZG93ICovXG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnIHx8ICFoYXNBdXRvbWF0aW9uRXF1YWxpdHlCdWcpIHtcblx0XHRcdHJldHVybiBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZShvKTtcblx0XHR9XG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZShvKTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9O1xuXG5cdGtleXNTaGltID0gZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcblx0XHR2YXIgaXNPYmplY3QgPSBvYmplY3QgIT09IG51bGwgJiYgdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCc7XG5cdFx0dmFyIGlzRnVuY3Rpb24gPSB0b1N0ci5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG5cdFx0dmFyIGlzQXJndW1lbnRzID0gaXNBcmdzKG9iamVjdCk7XG5cdFx0dmFyIGlzU3RyaW5nID0gaXNPYmplY3QgJiYgdG9TdHIuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBTdHJpbmddJztcblx0XHR2YXIgdGhlS2V5cyA9IFtdO1xuXG5cdFx0aWYgKCFpc09iamVjdCAmJiAhaXNGdW5jdGlvbiAmJiAhaXNBcmd1bWVudHMpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5rZXlzIGNhbGxlZCBvbiBhIG5vbi1vYmplY3QnKTtcblx0XHR9XG5cblx0XHR2YXIgc2tpcFByb3RvID0gaGFzUHJvdG9FbnVtQnVnICYmIGlzRnVuY3Rpb247XG5cdFx0aWYgKGlzU3RyaW5nICYmIG9iamVjdC5sZW5ndGggPiAwICYmICFoYXMuY2FsbChvYmplY3QsIDApKSB7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IG9iamVjdC5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHR0aGVLZXlzLnB1c2goU3RyaW5nKGkpKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoaXNBcmd1bWVudHMgJiYgb2JqZWN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgb2JqZWN0Lmxlbmd0aDsgKytqKSB7XG5cdFx0XHRcdHRoZUtleXMucHVzaChTdHJpbmcoaikpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRmb3IgKHZhciBuYW1lIGluIG9iamVjdCkge1xuXHRcdFx0XHRpZiAoIShza2lwUHJvdG8gJiYgbmFtZSA9PT0gJ3Byb3RvdHlwZScpICYmIGhhcy5jYWxsKG9iamVjdCwgbmFtZSkpIHtcblx0XHRcdFx0XHR0aGVLZXlzLnB1c2goU3RyaW5nKG5hbWUpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChoYXNEb250RW51bUJ1Zykge1xuXHRcdFx0dmFyIHNraXBDb25zdHJ1Y3RvciA9IGVxdWFsc0NvbnN0cnVjdG9yUHJvdG90eXBlSWZOb3RCdWdneShvYmplY3QpO1xuXG5cdFx0XHRmb3IgKHZhciBrID0gMDsgayA8IGRvbnRFbnVtcy5sZW5ndGg7ICsraykge1xuXHRcdFx0XHRpZiAoIShza2lwQ29uc3RydWN0b3IgJiYgZG9udEVudW1zW2tdID09PSAnY29uc3RydWN0b3InKSAmJiBoYXMuY2FsbChvYmplY3QsIGRvbnRFbnVtc1trXSkpIHtcblx0XHRcdFx0XHR0aGVLZXlzLnB1c2goZG9udEVudW1zW2tdKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdGhlS2V5cztcblx0fTtcbn1cbm1vZHVsZS5leHBvcnRzID0ga2V5c1NoaW07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbnZhciBpc0FyZ3MgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyk7XG5cbnZhciBvcmlnS2V5cyA9IE9iamVjdC5rZXlzO1xudmFyIGtleXNTaGltID0gb3JpZ0tleXMgPyBmdW5jdGlvbiBrZXlzKG8pIHsgcmV0dXJuIG9yaWdLZXlzKG8pOyB9IDogcmVxdWlyZSgnLi9pbXBsZW1lbnRhdGlvbicpO1xuXG52YXIgb3JpZ2luYWxLZXlzID0gT2JqZWN0LmtleXM7XG5cbmtleXNTaGltLnNoaW0gPSBmdW5jdGlvbiBzaGltT2JqZWN0S2V5cygpIHtcblx0aWYgKE9iamVjdC5rZXlzKSB7XG5cdFx0dmFyIGtleXNXb3Jrc1dpdGhBcmd1bWVudHMgPSAoZnVuY3Rpb24gKCkge1xuXHRcdFx0Ly8gU2FmYXJpIDUuMCBidWdcblx0XHRcdHZhciBhcmdzID0gT2JqZWN0LmtleXMoYXJndW1lbnRzKTtcblx0XHRcdHJldHVybiBhcmdzICYmIGFyZ3MubGVuZ3RoID09PSBhcmd1bWVudHMubGVuZ3RoO1xuXHRcdH0oMSwgMikpO1xuXHRcdGlmICgha2V5c1dvcmtzV2l0aEFyZ3VtZW50cykge1xuXHRcdFx0T2JqZWN0LmtleXMgPSBmdW5jdGlvbiBrZXlzKG9iamVjdCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGZ1bmMtbmFtZS1tYXRjaGluZ1xuXHRcdFx0XHRpZiAoaXNBcmdzKG9iamVjdCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gb3JpZ2luYWxLZXlzKHNsaWNlLmNhbGwob2JqZWN0KSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG9yaWdpbmFsS2V5cyhvYmplY3QpO1xuXHRcdFx0fTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0T2JqZWN0LmtleXMgPSBrZXlzU2hpbTtcblx0fVxuXHRyZXR1cm4gT2JqZWN0LmtleXMgfHwga2V5c1NoaW07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXNTaGltO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdG9TdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQXJndW1lbnRzKHZhbHVlKSB7XG5cdHZhciBzdHIgPSB0b1N0ci5jYWxsKHZhbHVlKTtcblx0dmFyIGlzQXJncyA9IHN0ciA9PT0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cdGlmICghaXNBcmdzKSB7XG5cdFx0aXNBcmdzID0gc3RyICE9PSAnW29iamVjdCBBcnJheV0nICYmXG5cdFx0XHR2YWx1ZSAhPT0gbnVsbCAmJlxuXHRcdFx0dHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuXHRcdFx0dHlwZW9mIHZhbHVlLmxlbmd0aCA9PT0gJ251bWJlcicgJiZcblx0XHRcdHZhbHVlLmxlbmd0aCA+PSAwICYmXG5cdFx0XHR0b1N0ci5jYWxsKHZhbHVlLmNhbGxlZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG5cdH1cblx0cmV0dXJuIGlzQXJncztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cblxudmFyIFRZUEVEX09LID0gICh0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcpICYmXG4gICAgICAgICAgICAgICAgKHR5cGVvZiBVaW50MTZBcnJheSAhPT0gJ3VuZGVmaW5lZCcpICYmXG4gICAgICAgICAgICAgICAgKHR5cGVvZiBJbnQzMkFycmF5ICE9PSAndW5kZWZpbmVkJyk7XG5cbmZ1bmN0aW9uIF9oYXMob2JqLCBrZXkpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSk7XG59XG5cbmV4cG9ydHMuYXNzaWduID0gZnVuY3Rpb24gKG9iaiAvKmZyb20xLCBmcm9tMiwgZnJvbTMsIC4uLiovKSB7XG4gIHZhciBzb3VyY2VzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgd2hpbGUgKHNvdXJjZXMubGVuZ3RoKSB7XG4gICAgdmFyIHNvdXJjZSA9IHNvdXJjZXMuc2hpZnQoKTtcbiAgICBpZiAoIXNvdXJjZSkgeyBjb250aW51ZTsgfVxuXG4gICAgaWYgKHR5cGVvZiBzb3VyY2UgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHNvdXJjZSArICdtdXN0IGJlIG5vbi1vYmplY3QnKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBwIGluIHNvdXJjZSkge1xuICAgICAgaWYgKF9oYXMoc291cmNlLCBwKSkge1xuICAgICAgICBvYmpbcF0gPSBzb3VyY2VbcF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iajtcbn07XG5cblxuLy8gcmVkdWNlIGJ1ZmZlciBzaXplLCBhdm9pZGluZyBtZW0gY29weVxuZXhwb3J0cy5zaHJpbmtCdWYgPSBmdW5jdGlvbiAoYnVmLCBzaXplKSB7XG4gIGlmIChidWYubGVuZ3RoID09PSBzaXplKSB7IHJldHVybiBidWY7IH1cbiAgaWYgKGJ1Zi5zdWJhcnJheSkgeyByZXR1cm4gYnVmLnN1YmFycmF5KDAsIHNpemUpOyB9XG4gIGJ1Zi5sZW5ndGggPSBzaXplO1xuICByZXR1cm4gYnVmO1xufTtcblxuXG52YXIgZm5UeXBlZCA9IHtcbiAgYXJyYXlTZXQ6IGZ1bmN0aW9uIChkZXN0LCBzcmMsIHNyY19vZmZzLCBsZW4sIGRlc3Rfb2Zmcykge1xuICAgIGlmIChzcmMuc3ViYXJyYXkgJiYgZGVzdC5zdWJhcnJheSkge1xuICAgICAgZGVzdC5zZXQoc3JjLnN1YmFycmF5KHNyY19vZmZzLCBzcmNfb2ZmcyArIGxlbiksIGRlc3Rfb2Zmcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIEZhbGxiYWNrIHRvIG9yZGluYXJ5IGFycmF5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgZGVzdFtkZXN0X29mZnMgKyBpXSA9IHNyY1tzcmNfb2ZmcyArIGldO1xuICAgIH1cbiAgfSxcbiAgLy8gSm9pbiBhcnJheSBvZiBjaHVua3MgdG8gc2luZ2xlIGFycmF5LlxuICBmbGF0dGVuQ2h1bmtzOiBmdW5jdGlvbiAoY2h1bmtzKSB7XG4gICAgdmFyIGksIGwsIGxlbiwgcG9zLCBjaHVuaywgcmVzdWx0O1xuXG4gICAgLy8gY2FsY3VsYXRlIGRhdGEgbGVuZ3RoXG4gICAgbGVuID0gMDtcbiAgICBmb3IgKGkgPSAwLCBsID0gY2h1bmtzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgbGVuICs9IGNodW5rc1tpXS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLy8gam9pbiBjaHVua3NcbiAgICByZXN1bHQgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIHBvcyA9IDA7XG4gICAgZm9yIChpID0gMCwgbCA9IGNodW5rcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNodW5rID0gY2h1bmtzW2ldO1xuICAgICAgcmVzdWx0LnNldChjaHVuaywgcG9zKTtcbiAgICAgIHBvcyArPSBjaHVuay5sZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcblxudmFyIGZuVW50eXBlZCA9IHtcbiAgYXJyYXlTZXQ6IGZ1bmN0aW9uIChkZXN0LCBzcmMsIHNyY19vZmZzLCBsZW4sIGRlc3Rfb2Zmcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGRlc3RbZGVzdF9vZmZzICsgaV0gPSBzcmNbc3JjX29mZnMgKyBpXTtcbiAgICB9XG4gIH0sXG4gIC8vIEpvaW4gYXJyYXkgb2YgY2h1bmtzIHRvIHNpbmdsZSBhcnJheS5cbiAgZmxhdHRlbkNodW5rczogZnVuY3Rpb24gKGNodW5rcykge1xuICAgIHJldHVybiBbXS5jb25jYXQuYXBwbHkoW10sIGNodW5rcyk7XG4gIH1cbn07XG5cblxuLy8gRW5hYmxlL0Rpc2FibGUgdHlwZWQgYXJyYXlzIHVzZSwgZm9yIHRlc3Rpbmdcbi8vXG5leHBvcnRzLnNldFR5cGVkID0gZnVuY3Rpb24gKG9uKSB7XG4gIGlmIChvbikge1xuICAgIGV4cG9ydHMuQnVmOCAgPSBVaW50OEFycmF5O1xuICAgIGV4cG9ydHMuQnVmMTYgPSBVaW50MTZBcnJheTtcbiAgICBleHBvcnRzLkJ1ZjMyID0gSW50MzJBcnJheTtcbiAgICBleHBvcnRzLmFzc2lnbihleHBvcnRzLCBmblR5cGVkKTtcbiAgfSBlbHNlIHtcbiAgICBleHBvcnRzLkJ1ZjggID0gQXJyYXk7XG4gICAgZXhwb3J0cy5CdWYxNiA9IEFycmF5O1xuICAgIGV4cG9ydHMuQnVmMzIgPSBBcnJheTtcbiAgICBleHBvcnRzLmFzc2lnbihleHBvcnRzLCBmblVudHlwZWQpO1xuICB9XG59O1xuXG5leHBvcnRzLnNldFR5cGVkKFRZUEVEX09LKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gTm90ZTogYWRsZXIzMiB0YWtlcyAxMiUgZm9yIGxldmVsIDAgYW5kIDIlIGZvciBsZXZlbCA2LlxuLy8gSXQgaXNuJ3Qgd29ydGggaXQgdG8gbWFrZSBhZGRpdGlvbmFsIG9wdGltaXphdGlvbnMgYXMgaW4gb3JpZ2luYWwuXG4vLyBTbWFsbCBzaXplIGlzIHByZWZlcmFibGUuXG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxuZnVuY3Rpb24gYWRsZXIzMihhZGxlciwgYnVmLCBsZW4sIHBvcykge1xuICB2YXIgczEgPSAoYWRsZXIgJiAweGZmZmYpIHwwLFxuICAgICAgczIgPSAoKGFkbGVyID4+PiAxNikgJiAweGZmZmYpIHwwLFxuICAgICAgbiA9IDA7XG5cbiAgd2hpbGUgKGxlbiAhPT0gMCkge1xuICAgIC8vIFNldCBsaW1pdCB+IHR3aWNlIGxlc3MgdGhhbiA1NTUyLCB0byBrZWVwXG4gICAgLy8gczIgaW4gMzEtYml0cywgYmVjYXVzZSB3ZSBmb3JjZSBzaWduZWQgaW50cy5cbiAgICAvLyBpbiBvdGhlciBjYXNlICU9IHdpbGwgZmFpbC5cbiAgICBuID0gbGVuID4gMjAwMCA/IDIwMDAgOiBsZW47XG4gICAgbGVuIC09IG47XG5cbiAgICBkbyB7XG4gICAgICBzMSA9IChzMSArIGJ1Zltwb3MrK10pIHwwO1xuICAgICAgczIgPSAoczIgKyBzMSkgfDA7XG4gICAgfSB3aGlsZSAoLS1uKTtcblxuICAgIHMxICU9IDY1NTIxO1xuICAgIHMyICU9IDY1NTIxO1xuICB9XG5cbiAgcmV0dXJuIChzMSB8IChzMiA8PCAxNikpIHwwO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gYWRsZXIzMjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcblxuICAvKiBBbGxvd2VkIGZsdXNoIHZhbHVlczsgc2VlIGRlZmxhdGUoKSBhbmQgaW5mbGF0ZSgpIGJlbG93IGZvciBkZXRhaWxzICovXG4gIFpfTk9fRkxVU0g6ICAgICAgICAgMCxcbiAgWl9QQVJUSUFMX0ZMVVNIOiAgICAxLFxuICBaX1NZTkNfRkxVU0g6ICAgICAgIDIsXG4gIFpfRlVMTF9GTFVTSDogICAgICAgMyxcbiAgWl9GSU5JU0g6ICAgICAgICAgICA0LFxuICBaX0JMT0NLOiAgICAgICAgICAgIDUsXG4gIFpfVFJFRVM6ICAgICAgICAgICAgNixcblxuICAvKiBSZXR1cm4gY29kZXMgZm9yIHRoZSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGZ1bmN0aW9ucy4gTmVnYXRpdmUgdmFsdWVzXG4gICogYXJlIGVycm9ycywgcG9zaXRpdmUgdmFsdWVzIGFyZSB1c2VkIGZvciBzcGVjaWFsIGJ1dCBub3JtYWwgZXZlbnRzLlxuICAqL1xuICBaX09LOiAgICAgICAgICAgICAgIDAsXG4gIFpfU1RSRUFNX0VORDogICAgICAgMSxcbiAgWl9ORUVEX0RJQ1Q6ICAgICAgICAyLFxuICBaX0VSUk5POiAgICAgICAgICAgLTEsXG4gIFpfU1RSRUFNX0VSUk9SOiAgICAtMixcbiAgWl9EQVRBX0VSUk9SOiAgICAgIC0zLFxuICAvL1pfTUVNX0VSUk9SOiAgICAgLTQsXG4gIFpfQlVGX0VSUk9SOiAgICAgICAtNSxcbiAgLy9aX1ZFUlNJT05fRVJST1I6IC02LFxuXG4gIC8qIGNvbXByZXNzaW9uIGxldmVscyAqL1xuICBaX05PX0NPTVBSRVNTSU9OOiAgICAgICAgIDAsXG4gIFpfQkVTVF9TUEVFRDogICAgICAgICAgICAgMSxcbiAgWl9CRVNUX0NPTVBSRVNTSU9OOiAgICAgICA5LFxuICBaX0RFRkFVTFRfQ09NUFJFU1NJT046ICAgLTEsXG5cblxuICBaX0ZJTFRFUkVEOiAgICAgICAgICAgICAgIDEsXG4gIFpfSFVGRk1BTl9PTkxZOiAgICAgICAgICAgMixcbiAgWl9STEU6ICAgICAgICAgICAgICAgICAgICAzLFxuICBaX0ZJWEVEOiAgICAgICAgICAgICAgICAgIDQsXG4gIFpfREVGQVVMVF9TVFJBVEVHWTogICAgICAgMCxcblxuICAvKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovXG4gIFpfQklOQVJZOiAgICAgICAgICAgICAgICAgMCxcbiAgWl9URVhUOiAgICAgICAgICAgICAgICAgICAxLFxuICAvL1pfQVNDSUk6ICAgICAgICAgICAgICAgIDEsIC8vID0gWl9URVhUIChkZXByZWNhdGVkKVxuICBaX1VOS05PV046ICAgICAgICAgICAgICAgIDIsXG5cbiAgLyogVGhlIGRlZmxhdGUgY29tcHJlc3Npb24gbWV0aG9kICovXG4gIFpfREVGTEFURUQ6ICAgICAgICAgICAgICAgOFxuICAvL1pfTlVMTDogICAgICAgICAgICAgICAgIG51bGwgLy8gVXNlIC0xIG9yIG51bGwgaW5saW5lLCBkZXBlbmRpbmcgb24gdmFyIHR5cGVcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIE5vdGU6IHdlIGNhbid0IGdldCBzaWduaWZpY2FudCBzcGVlZCBib29zdCBoZXJlLlxuLy8gU28gd3JpdGUgY29kZSB0byBtaW5pbWl6ZSBzaXplIC0gbm8gcHJlZ2VuZXJhdGVkIHRhYmxlc1xuLy8gYW5kIGFycmF5IHRvb2xzIGRlcGVuZGVuY2llcy5cblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG4vLyBVc2Ugb3JkaW5hcnkgYXJyYXksIHNpbmNlIHVudHlwZWQgbWFrZXMgbm8gYm9vc3QgaGVyZVxuZnVuY3Rpb24gbWFrZVRhYmxlKCkge1xuICB2YXIgYywgdGFibGUgPSBbXTtcblxuICBmb3IgKHZhciBuID0gMDsgbiA8IDI1NjsgbisrKSB7XG4gICAgYyA9IG47XG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCA4OyBrKyspIHtcbiAgICAgIGMgPSAoKGMgJiAxKSA/ICgweEVEQjg4MzIwIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG4gICAgfVxuICAgIHRhYmxlW25dID0gYztcbiAgfVxuXG4gIHJldHVybiB0YWJsZTtcbn1cblxuLy8gQ3JlYXRlIHRhYmxlIG9uIGxvYWQuIEp1c3QgMjU1IHNpZ25lZCBsb25ncy4gTm90IGEgcHJvYmxlbS5cbnZhciBjcmNUYWJsZSA9IG1ha2VUYWJsZSgpO1xuXG5cbmZ1bmN0aW9uIGNyYzMyKGNyYywgYnVmLCBsZW4sIHBvcykge1xuICB2YXIgdCA9IGNyY1RhYmxlLFxuICAgICAgZW5kID0gcG9zICsgbGVuO1xuXG4gIGNyYyBePSAtMTtcblxuICBmb3IgKHZhciBpID0gcG9zOyBpIDwgZW5kOyBpKyspIHtcbiAgICBjcmMgPSAoY3JjID4+PiA4KSBeIHRbKGNyYyBeIGJ1ZltpXSkgJiAweEZGXTtcbiAgfVxuXG4gIHJldHVybiAoY3JjIF4gKC0xKSk7IC8vID4+PiAwO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gY3JjMzI7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxudmFyIHV0aWxzICAgPSByZXF1aXJlKCcuLi91dGlscy9jb21tb24nKTtcbnZhciB0cmVlcyAgID0gcmVxdWlyZSgnLi90cmVlcycpO1xudmFyIGFkbGVyMzIgPSByZXF1aXJlKCcuL2FkbGVyMzInKTtcbnZhciBjcmMzMiAgID0gcmVxdWlyZSgnLi9jcmMzMicpO1xudmFyIG1zZyAgICAgPSByZXF1aXJlKCcuL21lc3NhZ2VzJyk7XG5cbi8qIFB1YmxpYyBjb25zdGFudHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cbi8qIEFsbG93ZWQgZmx1c2ggdmFsdWVzOyBzZWUgZGVmbGF0ZSgpIGFuZCBpbmZsYXRlKCkgYmVsb3cgZm9yIGRldGFpbHMgKi9cbnZhciBaX05PX0ZMVVNIICAgICAgPSAwO1xudmFyIFpfUEFSVElBTF9GTFVTSCA9IDE7XG4vL3ZhciBaX1NZTkNfRkxVU0ggICAgPSAyO1xudmFyIFpfRlVMTF9GTFVTSCAgICA9IDM7XG52YXIgWl9GSU5JU0ggICAgICAgID0gNDtcbnZhciBaX0JMT0NLICAgICAgICAgPSA1O1xuLy92YXIgWl9UUkVFUyAgICAgICAgID0gNjtcblxuXG4vKiBSZXR1cm4gY29kZXMgZm9yIHRoZSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGZ1bmN0aW9ucy4gTmVnYXRpdmUgdmFsdWVzXG4gKiBhcmUgZXJyb3JzLCBwb3NpdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgZm9yIHNwZWNpYWwgYnV0IG5vcm1hbCBldmVudHMuXG4gKi9cbnZhciBaX09LICAgICAgICAgICAgPSAwO1xudmFyIFpfU1RSRUFNX0VORCAgICA9IDE7XG4vL3ZhciBaX05FRURfRElDVCAgICAgPSAyO1xuLy92YXIgWl9FUlJOTyAgICAgICAgID0gLTE7XG52YXIgWl9TVFJFQU1fRVJST1IgID0gLTI7XG52YXIgWl9EQVRBX0VSUk9SICAgID0gLTM7XG4vL3ZhciBaX01FTV9FUlJPUiAgICAgPSAtNDtcbnZhciBaX0JVRl9FUlJPUiAgICAgPSAtNTtcbi8vdmFyIFpfVkVSU0lPTl9FUlJPUiA9IC02O1xuXG5cbi8qIGNvbXByZXNzaW9uIGxldmVscyAqL1xuLy92YXIgWl9OT19DT01QUkVTU0lPTiAgICAgID0gMDtcbi8vdmFyIFpfQkVTVF9TUEVFRCAgICAgICAgICA9IDE7XG4vL3ZhciBaX0JFU1RfQ09NUFJFU1NJT04gICAgPSA5O1xudmFyIFpfREVGQVVMVF9DT01QUkVTU0lPTiA9IC0xO1xuXG5cbnZhciBaX0ZJTFRFUkVEICAgICAgICAgICAgPSAxO1xudmFyIFpfSFVGRk1BTl9PTkxZICAgICAgICA9IDI7XG52YXIgWl9STEUgICAgICAgICAgICAgICAgID0gMztcbnZhciBaX0ZJWEVEICAgICAgICAgICAgICAgPSA0O1xudmFyIFpfREVGQVVMVF9TVFJBVEVHWSAgICA9IDA7XG5cbi8qIFBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgZGF0YV90eXBlIGZpZWxkICh0aG91Z2ggc2VlIGluZmxhdGUoKSkgKi9cbi8vdmFyIFpfQklOQVJZICAgICAgICAgICAgICA9IDA7XG4vL3ZhciBaX1RFWFQgICAgICAgICAgICAgICAgPSAxO1xuLy92YXIgWl9BU0NJSSAgICAgICAgICAgICAgID0gMTsgLy8gPSBaX1RFWFRcbnZhciBaX1VOS05PV04gICAgICAgICAgICAgPSAyO1xuXG5cbi8qIFRoZSBkZWZsYXRlIGNvbXByZXNzaW9uIG1ldGhvZCAqL1xudmFyIFpfREVGTEFURUQgID0gODtcblxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG52YXIgTUFYX01FTV9MRVZFTCA9IDk7XG4vKiBNYXhpbXVtIHZhbHVlIGZvciBtZW1MZXZlbCBpbiBkZWZsYXRlSW5pdDIgKi9cbnZhciBNQVhfV0JJVFMgPSAxNTtcbi8qIDMySyBMWjc3IHdpbmRvdyAqL1xudmFyIERFRl9NRU1fTEVWRUwgPSA4O1xuXG5cbnZhciBMRU5HVEhfQ09ERVMgID0gMjk7XG4vKiBudW1iZXIgb2YgbGVuZ3RoIGNvZGVzLCBub3QgY291bnRpbmcgdGhlIHNwZWNpYWwgRU5EX0JMT0NLIGNvZGUgKi9cbnZhciBMSVRFUkFMUyAgICAgID0gMjU2O1xuLyogbnVtYmVyIG9mIGxpdGVyYWwgYnl0ZXMgMC4uMjU1ICovXG52YXIgTF9DT0RFUyAgICAgICA9IExJVEVSQUxTICsgMSArIExFTkdUSF9DT0RFUztcbi8qIG51bWJlciBvZiBMaXRlcmFsIG9yIExlbmd0aCBjb2RlcywgaW5jbHVkaW5nIHRoZSBFTkRfQkxPQ0sgY29kZSAqL1xudmFyIERfQ09ERVMgICAgICAgPSAzMDtcbi8qIG51bWJlciBvZiBkaXN0YW5jZSBjb2RlcyAqL1xudmFyIEJMX0NPREVTICAgICAgPSAxOTtcbi8qIG51bWJlciBvZiBjb2RlcyB1c2VkIHRvIHRyYW5zZmVyIHRoZSBiaXQgbGVuZ3RocyAqL1xudmFyIEhFQVBfU0laRSAgICAgPSAyICogTF9DT0RFUyArIDE7XG4vKiBtYXhpbXVtIGhlYXAgc2l6ZSAqL1xudmFyIE1BWF9CSVRTICA9IDE1O1xuLyogQWxsIGNvZGVzIG11c3Qgbm90IGV4Y2VlZCBNQVhfQklUUyBiaXRzICovXG5cbnZhciBNSU5fTUFUQ0ggPSAzO1xudmFyIE1BWF9NQVRDSCA9IDI1ODtcbnZhciBNSU5fTE9PS0FIRUFEID0gKE1BWF9NQVRDSCArIE1JTl9NQVRDSCArIDEpO1xuXG52YXIgUFJFU0VUX0RJQ1QgPSAweDIwO1xuXG52YXIgSU5JVF9TVEFURSA9IDQyO1xudmFyIEVYVFJBX1NUQVRFID0gNjk7XG52YXIgTkFNRV9TVEFURSA9IDczO1xudmFyIENPTU1FTlRfU1RBVEUgPSA5MTtcbnZhciBIQ1JDX1NUQVRFID0gMTAzO1xudmFyIEJVU1lfU1RBVEUgPSAxMTM7XG52YXIgRklOSVNIX1NUQVRFID0gNjY2O1xuXG52YXIgQlNfTkVFRF9NT1JFICAgICAgPSAxOyAvKiBibG9jayBub3QgY29tcGxldGVkLCBuZWVkIG1vcmUgaW5wdXQgb3IgbW9yZSBvdXRwdXQgKi9cbnZhciBCU19CTE9DS19ET05FICAgICA9IDI7IC8qIGJsb2NrIGZsdXNoIHBlcmZvcm1lZCAqL1xudmFyIEJTX0ZJTklTSF9TVEFSVEVEID0gMzsgLyogZmluaXNoIHN0YXJ0ZWQsIG5lZWQgb25seSBtb3JlIG91dHB1dCBhdCBuZXh0IGRlZmxhdGUgKi9cbnZhciBCU19GSU5JU0hfRE9ORSAgICA9IDQ7IC8qIGZpbmlzaCBkb25lLCBhY2NlcHQgbm8gbW9yZSBpbnB1dCBvciBvdXRwdXQgKi9cblxudmFyIE9TX0NPREUgPSAweDAzOyAvLyBVbml4IDopIC4gRG9uJ3QgZGV0ZWN0LCB1c2UgdGhpcyBkZWZhdWx0LlxuXG5mdW5jdGlvbiBlcnIoc3RybSwgZXJyb3JDb2RlKSB7XG4gIHN0cm0ubXNnID0gbXNnW2Vycm9yQ29kZV07XG4gIHJldHVybiBlcnJvckNvZGU7XG59XG5cbmZ1bmN0aW9uIHJhbmsoZikge1xuICByZXR1cm4gKChmKSA8PCAxKSAtICgoZikgPiA0ID8gOSA6IDApO1xufVxuXG5mdW5jdGlvbiB6ZXJvKGJ1ZikgeyB2YXIgbGVuID0gYnVmLmxlbmd0aDsgd2hpbGUgKC0tbGVuID49IDApIHsgYnVmW2xlbl0gPSAwOyB9IH1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBGbHVzaCBhcyBtdWNoIHBlbmRpbmcgb3V0cHV0IGFzIHBvc3NpYmxlLiBBbGwgZGVmbGF0ZSgpIG91dHB1dCBnb2VzXG4gKiB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gc28gc29tZSBhcHBsaWNhdGlvbnMgbWF5IHdpc2ggdG8gbW9kaWZ5IGl0XG4gKiB0byBhdm9pZCBhbGxvY2F0aW5nIGEgbGFyZ2Ugc3RybS0+b3V0cHV0IGJ1ZmZlciBhbmQgY29weWluZyBpbnRvIGl0LlxuICogKFNlZSBhbHNvIHJlYWRfYnVmKCkpLlxuICovXG5mdW5jdGlvbiBmbHVzaF9wZW5kaW5nKHN0cm0pIHtcbiAgdmFyIHMgPSBzdHJtLnN0YXRlO1xuXG4gIC8vX3RyX2ZsdXNoX2JpdHMocyk7XG4gIHZhciBsZW4gPSBzLnBlbmRpbmc7XG4gIGlmIChsZW4gPiBzdHJtLmF2YWlsX291dCkge1xuICAgIGxlbiA9IHN0cm0uYXZhaWxfb3V0O1xuICB9XG4gIGlmIChsZW4gPT09IDApIHsgcmV0dXJuOyB9XG5cbiAgdXRpbHMuYXJyYXlTZXQoc3RybS5vdXRwdXQsIHMucGVuZGluZ19idWYsIHMucGVuZGluZ19vdXQsIGxlbiwgc3RybS5uZXh0X291dCk7XG4gIHN0cm0ubmV4dF9vdXQgKz0gbGVuO1xuICBzLnBlbmRpbmdfb3V0ICs9IGxlbjtcbiAgc3RybS50b3RhbF9vdXQgKz0gbGVuO1xuICBzdHJtLmF2YWlsX291dCAtPSBsZW47XG4gIHMucGVuZGluZyAtPSBsZW47XG4gIGlmIChzLnBlbmRpbmcgPT09IDApIHtcbiAgICBzLnBlbmRpbmdfb3V0ID0gMDtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGZsdXNoX2Jsb2NrX29ubHkocywgbGFzdCkge1xuICB0cmVlcy5fdHJfZmx1c2hfYmxvY2socywgKHMuYmxvY2tfc3RhcnQgPj0gMCA/IHMuYmxvY2tfc3RhcnQgOiAtMSksIHMuc3Ryc3RhcnQgLSBzLmJsb2NrX3N0YXJ0LCBsYXN0KTtcbiAgcy5ibG9ja19zdGFydCA9IHMuc3Ryc3RhcnQ7XG4gIGZsdXNoX3BlbmRpbmcocy5zdHJtKTtcbn1cblxuXG5mdW5jdGlvbiBwdXRfYnl0ZShzLCBiKSB7XG4gIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gYjtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBQdXQgYSBzaG9ydCBpbiB0aGUgcGVuZGluZyBidWZmZXIuIFRoZSAxNi1iaXQgdmFsdWUgaXMgcHV0IGluIE1TQiBvcmRlci5cbiAqIElOIGFzc2VydGlvbjogdGhlIHN0cmVhbSBzdGF0ZSBpcyBjb3JyZWN0IGFuZCB0aGVyZSBpcyBlbm91Z2ggcm9vbSBpblxuICogcGVuZGluZ19idWYuXG4gKi9cbmZ1bmN0aW9uIHB1dFNob3J0TVNCKHMsIGIpIHtcbi8vICBwdXRfYnl0ZShzLCAoQnl0ZSkoYiA+PiA4KSk7XG4vLyAgcHV0X2J5dGUocywgKEJ5dGUpKGIgJiAweGZmKSk7XG4gIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gKGIgPj4+IDgpICYgMHhmZjtcbiAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSBiICYgMHhmZjtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFJlYWQgYSBuZXcgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnQgaW5wdXQgc3RyZWFtLCB1cGRhdGUgdGhlIGFkbGVyMzJcbiAqIGFuZCB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gIEFsbCBkZWZsYXRlKCkgaW5wdXQgZ29lcyB0aHJvdWdoXG4gKiB0aGlzIGZ1bmN0aW9uIHNvIHNvbWUgYXBwbGljYXRpb25zIG1heSB3aXNoIHRvIG1vZGlmeSBpdCB0byBhdm9pZFxuICogYWxsb2NhdGluZyBhIGxhcmdlIHN0cm0tPmlucHV0IGJ1ZmZlciBhbmQgY29weWluZyBmcm9tIGl0LlxuICogKFNlZSBhbHNvIGZsdXNoX3BlbmRpbmcoKSkuXG4gKi9cbmZ1bmN0aW9uIHJlYWRfYnVmKHN0cm0sIGJ1Ziwgc3RhcnQsIHNpemUpIHtcbiAgdmFyIGxlbiA9IHN0cm0uYXZhaWxfaW47XG5cbiAgaWYgKGxlbiA+IHNpemUpIHsgbGVuID0gc2l6ZTsgfVxuICBpZiAobGVuID09PSAwKSB7IHJldHVybiAwOyB9XG5cbiAgc3RybS5hdmFpbF9pbiAtPSBsZW47XG5cbiAgLy8gem1lbWNweShidWYsIHN0cm0tPm5leHRfaW4sIGxlbik7XG4gIHV0aWxzLmFycmF5U2V0KGJ1Ziwgc3RybS5pbnB1dCwgc3RybS5uZXh0X2luLCBsZW4sIHN0YXJ0KTtcbiAgaWYgKHN0cm0uc3RhdGUud3JhcCA9PT0gMSkge1xuICAgIHN0cm0uYWRsZXIgPSBhZGxlcjMyKHN0cm0uYWRsZXIsIGJ1ZiwgbGVuLCBzdGFydCk7XG4gIH1cblxuICBlbHNlIGlmIChzdHJtLnN0YXRlLndyYXAgPT09IDIpIHtcbiAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgYnVmLCBsZW4sIHN0YXJ0KTtcbiAgfVxuXG4gIHN0cm0ubmV4dF9pbiArPSBsZW47XG4gIHN0cm0udG90YWxfaW4gKz0gbGVuO1xuXG4gIHJldHVybiBsZW47XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZXQgbWF0Y2hfc3RhcnQgdG8gdGhlIGxvbmdlc3QgbWF0Y2ggc3RhcnRpbmcgYXQgdGhlIGdpdmVuIHN0cmluZyBhbmRcbiAqIHJldHVybiBpdHMgbGVuZ3RoLiBNYXRjaGVzIHNob3J0ZXIgb3IgZXF1YWwgdG8gcHJldl9sZW5ndGggYXJlIGRpc2NhcmRlZCxcbiAqIGluIHdoaWNoIGNhc2UgdGhlIHJlc3VsdCBpcyBlcXVhbCB0byBwcmV2X2xlbmd0aCBhbmQgbWF0Y2hfc3RhcnQgaXNcbiAqIGdhcmJhZ2UuXG4gKiBJTiBhc3NlcnRpb25zOiBjdXJfbWF0Y2ggaXMgdGhlIGhlYWQgb2YgdGhlIGhhc2ggY2hhaW4gZm9yIHRoZSBjdXJyZW50XG4gKiAgIHN0cmluZyAoc3Ryc3RhcnQpIGFuZCBpdHMgZGlzdGFuY2UgaXMgPD0gTUFYX0RJU1QsIGFuZCBwcmV2X2xlbmd0aCA+PSAxXG4gKiBPVVQgYXNzZXJ0aW9uOiB0aGUgbWF0Y2ggbGVuZ3RoIGlzIG5vdCBncmVhdGVyIHRoYW4gcy0+bG9va2FoZWFkLlxuICovXG5mdW5jdGlvbiBsb25nZXN0X21hdGNoKHMsIGN1cl9tYXRjaCkge1xuICB2YXIgY2hhaW5fbGVuZ3RoID0gcy5tYXhfY2hhaW5fbGVuZ3RoOyAgICAgIC8qIG1heCBoYXNoIGNoYWluIGxlbmd0aCAqL1xuICB2YXIgc2NhbiA9IHMuc3Ryc3RhcnQ7IC8qIGN1cnJlbnQgc3RyaW5nICovXG4gIHZhciBtYXRjaDsgICAgICAgICAgICAgICAgICAgICAgIC8qIG1hdGNoZWQgc3RyaW5nICovXG4gIHZhciBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgbWF0Y2ggKi9cbiAgdmFyIGJlc3RfbGVuID0gcy5wcmV2X2xlbmd0aDsgICAgICAgICAgICAgIC8qIGJlc3QgbWF0Y2ggbGVuZ3RoIHNvIGZhciAqL1xuICB2YXIgbmljZV9tYXRjaCA9IHMubmljZV9tYXRjaDsgICAgICAgICAgICAgLyogc3RvcCBpZiBtYXRjaCBsb25nIGVub3VnaCAqL1xuICB2YXIgbGltaXQgPSAocy5zdHJzdGFydCA+IChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpKSA/XG4gICAgICBzLnN0cnN0YXJ0IC0gKHMud19zaXplIC0gTUlOX0xPT0tBSEVBRCkgOiAwLypOSUwqLztcblxuICB2YXIgX3dpbiA9IHMud2luZG93OyAvLyBzaG9ydGN1dFxuXG4gIHZhciB3bWFzayA9IHMud19tYXNrO1xuICB2YXIgcHJldiAgPSBzLnByZXY7XG5cbiAgLyogU3RvcCB3aGVuIGN1cl9tYXRjaCBiZWNvbWVzIDw9IGxpbWl0LiBUbyBzaW1wbGlmeSB0aGUgY29kZSxcbiAgICogd2UgcHJldmVudCBtYXRjaGVzIHdpdGggdGhlIHN0cmluZyBvZiB3aW5kb3cgaW5kZXggMC5cbiAgICovXG5cbiAgdmFyIHN0cmVuZCA9IHMuc3Ryc3RhcnQgKyBNQVhfTUFUQ0g7XG4gIHZhciBzY2FuX2VuZDEgID0gX3dpbltzY2FuICsgYmVzdF9sZW4gLSAxXTtcbiAgdmFyIHNjYW5fZW5kICAgPSBfd2luW3NjYW4gKyBiZXN0X2xlbl07XG5cbiAgLyogVGhlIGNvZGUgaXMgb3B0aW1pemVkIGZvciBIQVNIX0JJVFMgPj0gOCBhbmQgTUFYX01BVENILTIgbXVsdGlwbGUgb2YgMTYuXG4gICAqIEl0IGlzIGVhc3kgdG8gZ2V0IHJpZCBvZiB0aGlzIG9wdGltaXphdGlvbiBpZiBuZWNlc3NhcnkuXG4gICAqL1xuICAvLyBBc3NlcnQocy0+aGFzaF9iaXRzID49IDggJiYgTUFYX01BVENIID09IDI1OCwgXCJDb2RlIHRvbyBjbGV2ZXJcIik7XG5cbiAgLyogRG8gbm90IHdhc3RlIHRvbyBtdWNoIHRpbWUgaWYgd2UgYWxyZWFkeSBoYXZlIGEgZ29vZCBtYXRjaDogKi9cbiAgaWYgKHMucHJldl9sZW5ndGggPj0gcy5nb29kX21hdGNoKSB7XG4gICAgY2hhaW5fbGVuZ3RoID4+PSAyO1xuICB9XG4gIC8qIERvIG5vdCBsb29rIGZvciBtYXRjaGVzIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBpbnB1dC4gVGhpcyBpcyBuZWNlc3NhcnlcbiAgICogdG8gbWFrZSBkZWZsYXRlIGRldGVybWluaXN0aWMuXG4gICAqL1xuICBpZiAobmljZV9tYXRjaCA+IHMubG9va2FoZWFkKSB7IG5pY2VfbWF0Y2ggPSBzLmxvb2thaGVhZDsgfVxuXG4gIC8vIEFzc2VydCgodWxnKXMtPnN0cnN0YXJ0IDw9IHMtPndpbmRvd19zaXplLU1JTl9MT09LQUhFQUQsIFwibmVlZCBsb29rYWhlYWRcIik7XG5cbiAgZG8ge1xuICAgIC8vIEFzc2VydChjdXJfbWF0Y2ggPCBzLT5zdHJzdGFydCwgXCJubyBmdXR1cmVcIik7XG4gICAgbWF0Y2ggPSBjdXJfbWF0Y2g7XG5cbiAgICAvKiBTa2lwIHRvIG5leHQgbWF0Y2ggaWYgdGhlIG1hdGNoIGxlbmd0aCBjYW5ub3QgaW5jcmVhc2VcbiAgICAgKiBvciBpZiB0aGUgbWF0Y2ggbGVuZ3RoIGlzIGxlc3MgdGhhbiAyLiAgTm90ZSB0aGF0IHRoZSBjaGVja3MgYmVsb3dcbiAgICAgKiBmb3IgaW5zdWZmaWNpZW50IGxvb2thaGVhZCBvbmx5IG9jY3VyIG9jY2FzaW9uYWxseSBmb3IgcGVyZm9ybWFuY2VcbiAgICAgKiByZWFzb25zLiAgVGhlcmVmb3JlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHdpbGwgYmUgYWNjZXNzZWQsIGFuZFxuICAgICAqIGNvbmRpdGlvbmFsIGp1bXBzIHdpbGwgYmUgbWFkZSB0aGF0IGRlcGVuZCBvbiB0aG9zZSB2YWx1ZXMuXG4gICAgICogSG93ZXZlciB0aGUgbGVuZ3RoIG9mIHRoZSBtYXRjaCBpcyBsaW1pdGVkIHRvIHRoZSBsb29rYWhlYWQsIHNvXG4gICAgICogdGhlIG91dHB1dCBvZiBkZWZsYXRlIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgdW5pbml0aWFsaXplZCB2YWx1ZXMuXG4gICAgICovXG5cbiAgICBpZiAoX3dpblttYXRjaCArIGJlc3RfbGVuXSAgICAgIT09IHNjYW5fZW5kICB8fFxuICAgICAgICBfd2luW21hdGNoICsgYmVzdF9sZW4gLSAxXSAhPT0gc2Nhbl9lbmQxIHx8XG4gICAgICAgIF93aW5bbWF0Y2hdICAgICAgICAgICAgICAgICE9PSBfd2luW3NjYW5dIHx8XG4gICAgICAgIF93aW5bKyttYXRjaF0gICAgICAgICAgICAgICE9PSBfd2luW3NjYW4gKyAxXSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyogVGhlIGNoZWNrIGF0IGJlc3RfbGVuLTEgY2FuIGJlIHJlbW92ZWQgYmVjYXVzZSBpdCB3aWxsIGJlIG1hZGVcbiAgICAgKiBhZ2FpbiBsYXRlci4gKFRoaXMgaGV1cmlzdGljIGlzIG5vdCBhbHdheXMgYSB3aW4uKVxuICAgICAqIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY29tcGFyZSBzY2FuWzJdIGFuZCBtYXRjaFsyXSBzaW5jZSB0aGV5XG4gICAgICogYXJlIGFsd2F5cyBlcXVhbCB3aGVuIHRoZSBvdGhlciBieXRlcyBtYXRjaCwgZ2l2ZW4gdGhhdFxuICAgICAqIHRoZSBoYXNoIGtleXMgYXJlIGVxdWFsIGFuZCB0aGF0IEhBU0hfQklUUyA+PSA4LlxuICAgICAqL1xuICAgIHNjYW4gKz0gMjtcbiAgICBtYXRjaCsrO1xuICAgIC8vIEFzc2VydCgqc2NhbiA9PSAqbWF0Y2gsIFwibWF0Y2hbMl0/XCIpO1xuXG4gICAgLyogV2UgY2hlY2sgZm9yIGluc3VmZmljaWVudCBsb29rYWhlYWQgb25seSBldmVyeSA4dGggY29tcGFyaXNvbjtcbiAgICAgKiB0aGUgMjU2dGggY2hlY2sgd2lsbCBiZSBtYWRlIGF0IHN0cnN0YXJ0KzI1OC5cbiAgICAgKi9cbiAgICBkbyB7XG4gICAgICAvKmpzaGludCBub2VtcHR5OmZhbHNlKi9cbiAgICB9IHdoaWxlIChfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmXG4gICAgICAgICAgICAgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmIF93aW5bKytzY2FuXSA9PT0gX3dpblsrK21hdGNoXSAmJlxuICAgICAgICAgICAgIF93aW5bKytzY2FuXSA9PT0gX3dpblsrK21hdGNoXSAmJiBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiZcbiAgICAgICAgICAgICBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmXG4gICAgICAgICAgICAgc2NhbiA8IHN0cmVuZCk7XG5cbiAgICAvLyBBc3NlcnQoc2NhbiA8PSBzLT53aW5kb3crKHVuc2lnbmVkKShzLT53aW5kb3dfc2l6ZS0xKSwgXCJ3aWxkIHNjYW5cIik7XG5cbiAgICBsZW4gPSBNQVhfTUFUQ0ggLSAoc3RyZW5kIC0gc2Nhbik7XG4gICAgc2NhbiA9IHN0cmVuZCAtIE1BWF9NQVRDSDtcblxuICAgIGlmIChsZW4gPiBiZXN0X2xlbikge1xuICAgICAgcy5tYXRjaF9zdGFydCA9IGN1cl9tYXRjaDtcbiAgICAgIGJlc3RfbGVuID0gbGVuO1xuICAgICAgaWYgKGxlbiA+PSBuaWNlX21hdGNoKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgc2Nhbl9lbmQxICA9IF93aW5bc2NhbiArIGJlc3RfbGVuIC0gMV07XG4gICAgICBzY2FuX2VuZCAgID0gX3dpbltzY2FuICsgYmVzdF9sZW5dO1xuICAgIH1cbiAgfSB3aGlsZSAoKGN1cl9tYXRjaCA9IHByZXZbY3VyX21hdGNoICYgd21hc2tdKSA+IGxpbWl0ICYmIC0tY2hhaW5fbGVuZ3RoICE9PSAwKTtcblxuICBpZiAoYmVzdF9sZW4gPD0gcy5sb29rYWhlYWQpIHtcbiAgICByZXR1cm4gYmVzdF9sZW47XG4gIH1cbiAgcmV0dXJuIHMubG9va2FoZWFkO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogRmlsbCB0aGUgd2luZG93IHdoZW4gdGhlIGxvb2thaGVhZCBiZWNvbWVzIGluc3VmZmljaWVudC5cbiAqIFVwZGF0ZXMgc3Ryc3RhcnQgYW5kIGxvb2thaGVhZC5cbiAqXG4gKiBJTiBhc3NlcnRpb246IGxvb2thaGVhZCA8IE1JTl9MT09LQUhFQURcbiAqIE9VVCBhc3NlcnRpb25zOiBzdHJzdGFydCA8PSB3aW5kb3dfc2l6ZS1NSU5fTE9PS0FIRUFEXG4gKiAgICBBdCBsZWFzdCBvbmUgYnl0ZSBoYXMgYmVlbiByZWFkLCBvciBhdmFpbF9pbiA9PSAwOyByZWFkcyBhcmVcbiAqICAgIHBlcmZvcm1lZCBmb3IgYXQgbGVhc3QgdHdvIGJ5dGVzIChyZXF1aXJlZCBmb3IgdGhlIHppcCB0cmFuc2xhdGVfZW9sXG4gKiAgICBvcHRpb24gLS0gbm90IHN1cHBvcnRlZCBoZXJlKS5cbiAqL1xuZnVuY3Rpb24gZmlsbF93aW5kb3cocykge1xuICB2YXIgX3dfc2l6ZSA9IHMud19zaXplO1xuICB2YXIgcCwgbiwgbSwgbW9yZSwgc3RyO1xuXG4gIC8vQXNzZXJ0KHMtPmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQsIFwiYWxyZWFkeSBlbm91Z2ggbG9va2FoZWFkXCIpO1xuXG4gIGRvIHtcbiAgICBtb3JlID0gcy53aW5kb3dfc2l6ZSAtIHMubG9va2FoZWFkIC0gcy5zdHJzdGFydDtcblxuICAgIC8vIEpTIGludHMgaGF2ZSAzMiBiaXQsIGJsb2NrIGJlbG93IG5vdCBuZWVkZWRcbiAgICAvKiBEZWFsIHdpdGggIUAjJCUgNjRLIGxpbWl0OiAqL1xuICAgIC8vaWYgKHNpemVvZihpbnQpIDw9IDIpIHtcbiAgICAvLyAgICBpZiAobW9yZSA9PSAwICYmIHMtPnN0cnN0YXJ0ID09IDAgJiYgcy0+bG9va2FoZWFkID09IDApIHtcbiAgICAvLyAgICAgICAgbW9yZSA9IHdzaXplO1xuICAgIC8vXG4gICAgLy8gIH0gZWxzZSBpZiAobW9yZSA9PSAodW5zaWduZWQpKC0xKSkge1xuICAgIC8vICAgICAgICAvKiBWZXJ5IHVubGlrZWx5LCBidXQgcG9zc2libGUgb24gMTYgYml0IG1hY2hpbmUgaWZcbiAgICAvLyAgICAgICAgICogc3Ryc3RhcnQgPT0gMCAmJiBsb29rYWhlYWQgPT0gMSAoaW5wdXQgZG9uZSBhIGJ5dGUgYXQgdGltZSlcbiAgICAvLyAgICAgICAgICovXG4gICAgLy8gICAgICAgIG1vcmUtLTtcbiAgICAvLyAgICB9XG4gICAgLy99XG5cblxuICAgIC8qIElmIHRoZSB3aW5kb3cgaXMgYWxtb3N0IGZ1bGwgYW5kIHRoZXJlIGlzIGluc3VmZmljaWVudCBsb29rYWhlYWQsXG4gICAgICogbW92ZSB0aGUgdXBwZXIgaGFsZiB0byB0aGUgbG93ZXIgb25lIHRvIG1ha2Ugcm9vbSBpbiB0aGUgdXBwZXIgaGFsZi5cbiAgICAgKi9cbiAgICBpZiAocy5zdHJzdGFydCA+PSBfd19zaXplICsgKF93X3NpemUgLSBNSU5fTE9PS0FIRUFEKSkge1xuXG4gICAgICB1dGlscy5hcnJheVNldChzLndpbmRvdywgcy53aW5kb3csIF93X3NpemUsIF93X3NpemUsIDApO1xuICAgICAgcy5tYXRjaF9zdGFydCAtPSBfd19zaXplO1xuICAgICAgcy5zdHJzdGFydCAtPSBfd19zaXplO1xuICAgICAgLyogd2Ugbm93IGhhdmUgc3Ryc3RhcnQgPj0gTUFYX0RJU1QgKi9cbiAgICAgIHMuYmxvY2tfc3RhcnQgLT0gX3dfc2l6ZTtcblxuICAgICAgLyogU2xpZGUgdGhlIGhhc2ggdGFibGUgKGNvdWxkIGJlIGF2b2lkZWQgd2l0aCAzMiBiaXQgdmFsdWVzXG4gICAgICAgYXQgdGhlIGV4cGVuc2Ugb2YgbWVtb3J5IHVzYWdlKS4gV2Ugc2xpZGUgZXZlbiB3aGVuIGxldmVsID09IDBcbiAgICAgICB0byBrZWVwIHRoZSBoYXNoIHRhYmxlIGNvbnNpc3RlbnQgaWYgd2Ugc3dpdGNoIGJhY2sgdG8gbGV2ZWwgPiAwXG4gICAgICAgbGF0ZXIuIChVc2luZyBsZXZlbCAwIHBlcm1hbmVudGx5IGlzIG5vdCBhbiBvcHRpbWFsIHVzYWdlIG9mXG4gICAgICAgemxpYiwgc28gd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGlzIHBhdGhvbG9naWNhbCBjYXNlLilcbiAgICAgICAqL1xuXG4gICAgICBuID0gcy5oYXNoX3NpemU7XG4gICAgICBwID0gbjtcbiAgICAgIGRvIHtcbiAgICAgICAgbSA9IHMuaGVhZFstLXBdO1xuICAgICAgICBzLmhlYWRbcF0gPSAobSA+PSBfd19zaXplID8gbSAtIF93X3NpemUgOiAwKTtcbiAgICAgIH0gd2hpbGUgKC0tbik7XG5cbiAgICAgIG4gPSBfd19zaXplO1xuICAgICAgcCA9IG47XG4gICAgICBkbyB7XG4gICAgICAgIG0gPSBzLnByZXZbLS1wXTtcbiAgICAgICAgcy5wcmV2W3BdID0gKG0gPj0gX3dfc2l6ZSA/IG0gLSBfd19zaXplIDogMCk7XG4gICAgICAgIC8qIElmIG4gaXMgbm90IG9uIGFueSBoYXNoIGNoYWluLCBwcmV2W25dIGlzIGdhcmJhZ2UgYnV0XG4gICAgICAgICAqIGl0cyB2YWx1ZSB3aWxsIG5ldmVyIGJlIHVzZWQuXG4gICAgICAgICAqL1xuICAgICAgfSB3aGlsZSAoLS1uKTtcblxuICAgICAgbW9yZSArPSBfd19zaXplO1xuICAgIH1cbiAgICBpZiAocy5zdHJtLmF2YWlsX2luID09PSAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvKiBJZiB0aGVyZSB3YXMgbm8gc2xpZGluZzpcbiAgICAgKiAgICBzdHJzdGFydCA8PSBXU0laRStNQVhfRElTVC0xICYmIGxvb2thaGVhZCA8PSBNSU5fTE9PS0FIRUFEIC0gMSAmJlxuICAgICAqICAgIG1vcmUgPT0gd2luZG93X3NpemUgLSBsb29rYWhlYWQgLSBzdHJzdGFydFxuICAgICAqID0+IG1vcmUgPj0gd2luZG93X3NpemUgLSAoTUlOX0xPT0tBSEVBRC0xICsgV1NJWkUgKyBNQVhfRElTVC0xKVxuICAgICAqID0+IG1vcmUgPj0gd2luZG93X3NpemUgLSAyKldTSVpFICsgMlxuICAgICAqIEluIHRoZSBCSUdfTUVNIG9yIE1NQVAgY2FzZSAobm90IHlldCBzdXBwb3J0ZWQpLFxuICAgICAqICAgd2luZG93X3NpemUgPT0gaW5wdXRfc2l6ZSArIE1JTl9MT09LQUhFQUQgICYmXG4gICAgICogICBzdHJzdGFydCArIHMtPmxvb2thaGVhZCA8PSBpbnB1dF9zaXplID0+IG1vcmUgPj0gTUlOX0xPT0tBSEVBRC5cbiAgICAgKiBPdGhlcndpc2UsIHdpbmRvd19zaXplID09IDIqV1NJWkUgc28gbW9yZSA+PSAyLlxuICAgICAqIElmIHRoZXJlIHdhcyBzbGlkaW5nLCBtb3JlID49IFdTSVpFLiBTbyBpbiBhbGwgY2FzZXMsIG1vcmUgPj0gMi5cbiAgICAgKi9cbiAgICAvL0Fzc2VydChtb3JlID49IDIsIFwibW9yZSA8IDJcIik7XG4gICAgbiA9IHJlYWRfYnVmKHMuc3RybSwgcy53aW5kb3csIHMuc3Ryc3RhcnQgKyBzLmxvb2thaGVhZCwgbW9yZSk7XG4gICAgcy5sb29rYWhlYWQgKz0gbjtcblxuICAgIC8qIEluaXRpYWxpemUgdGhlIGhhc2ggdmFsdWUgbm93IHRoYXQgd2UgaGF2ZSBzb21lIGlucHV0OiAqL1xuICAgIGlmIChzLmxvb2thaGVhZCArIHMuaW5zZXJ0ID49IE1JTl9NQVRDSCkge1xuICAgICAgc3RyID0gcy5zdHJzdGFydCAtIHMuaW5zZXJ0O1xuICAgICAgcy5pbnNfaCA9IHMud2luZG93W3N0cl07XG5cbiAgICAgIC8qIFVQREFURV9IQVNIKHMsIHMtPmluc19oLCBzLT53aW5kb3dbc3RyICsgMV0pOyAqL1xuICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbc3RyICsgMV0pICYgcy5oYXNoX21hc2s7XG4vLyNpZiBNSU5fTUFUQ0ggIT0gM1xuLy8gICAgICAgIENhbGwgdXBkYXRlX2hhc2goKSBNSU5fTUFUQ0gtMyBtb3JlIHRpbWVzXG4vLyNlbmRpZlxuICAgICAgd2hpbGUgKHMuaW5zZXJ0KSB7XG4gICAgICAgIC8qIFVQREFURV9IQVNIKHMsIHMtPmluc19oLCBzLT53aW5kb3dbc3RyICsgTUlOX01BVENILTFdKTsgKi9cbiAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbc3RyICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG5cbiAgICAgICAgcy5wcmV2W3N0ciAmIHMud19tYXNrXSA9IHMuaGVhZFtzLmluc19oXTtcbiAgICAgICAgcy5oZWFkW3MuaW5zX2hdID0gc3RyO1xuICAgICAgICBzdHIrKztcbiAgICAgICAgcy5pbnNlcnQtLTtcbiAgICAgICAgaWYgKHMubG9va2FoZWFkICsgcy5pbnNlcnQgPCBNSU5fTUFUQ0gpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvKiBJZiB0aGUgd2hvbGUgaW5wdXQgaGFzIGxlc3MgdGhhbiBNSU5fTUFUQ0ggYnl0ZXMsIGluc19oIGlzIGdhcmJhZ2UsXG4gICAgICogYnV0IHRoaXMgaXMgbm90IGltcG9ydGFudCBzaW5jZSBvbmx5IGxpdGVyYWwgYnl0ZXMgd2lsbCBiZSBlbWl0dGVkLlxuICAgICAqL1xuXG4gIH0gd2hpbGUgKHMubG9va2FoZWFkIDwgTUlOX0xPT0tBSEVBRCAmJiBzLnN0cm0uYXZhaWxfaW4gIT09IDApO1xuXG4gIC8qIElmIHRoZSBXSU5fSU5JVCBieXRlcyBhZnRlciB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGRhdGEgaGF2ZSBuZXZlciBiZWVuXG4gICAqIHdyaXR0ZW4sIHRoZW4gemVybyB0aG9zZSBieXRlcyBpbiBvcmRlciB0byBhdm9pZCBtZW1vcnkgY2hlY2sgcmVwb3J0cyBvZlxuICAgKiB0aGUgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgKG9yIHVuaW5pdGlhbGlzZWQgYXMgSnVsaWFuIHdyaXRlcykgYnl0ZXMgYnlcbiAgICogdGhlIGxvbmdlc3QgbWF0Y2ggcm91dGluZXMuICBVcGRhdGUgdGhlIGhpZ2ggd2F0ZXIgbWFyayBmb3IgdGhlIG5leHRcbiAgICogdGltZSB0aHJvdWdoIGhlcmUuICBXSU5fSU5JVCBpcyBzZXQgdG8gTUFYX01BVENIIHNpbmNlIHRoZSBsb25nZXN0IG1hdGNoXG4gICAqIHJvdXRpbmVzIGFsbG93IHNjYW5uaW5nIHRvIHN0cnN0YXJ0ICsgTUFYX01BVENILCBpZ25vcmluZyBsb29rYWhlYWQuXG4gICAqL1xuLy8gIGlmIChzLmhpZ2hfd2F0ZXIgPCBzLndpbmRvd19zaXplKSB7XG4vLyAgICB2YXIgY3VyciA9IHMuc3Ryc3RhcnQgKyBzLmxvb2thaGVhZDtcbi8vICAgIHZhciBpbml0ID0gMDtcbi8vXG4vLyAgICBpZiAocy5oaWdoX3dhdGVyIDwgY3Vycikge1xuLy8gICAgICAvKiBQcmV2aW91cyBoaWdoIHdhdGVyIG1hcmsgYmVsb3cgY3VycmVudCBkYXRhIC0tIHplcm8gV0lOX0lOSVRcbi8vICAgICAgICogYnl0ZXMgb3IgdXAgdG8gZW5kIG9mIHdpbmRvdywgd2hpY2hldmVyIGlzIGxlc3MuXG4vLyAgICAgICAqL1xuLy8gICAgICBpbml0ID0gcy53aW5kb3dfc2l6ZSAtIGN1cnI7XG4vLyAgICAgIGlmIChpbml0ID4gV0lOX0lOSVQpXG4vLyAgICAgICAgaW5pdCA9IFdJTl9JTklUO1xuLy8gICAgICB6bWVtemVybyhzLT53aW5kb3cgKyBjdXJyLCAodW5zaWduZWQpaW5pdCk7XG4vLyAgICAgIHMtPmhpZ2hfd2F0ZXIgPSBjdXJyICsgaW5pdDtcbi8vICAgIH1cbi8vICAgIGVsc2UgaWYgKHMtPmhpZ2hfd2F0ZXIgPCAodWxnKWN1cnIgKyBXSU5fSU5JVCkge1xuLy8gICAgICAvKiBIaWdoIHdhdGVyIG1hcmsgYXQgb3IgYWJvdmUgY3VycmVudCBkYXRhLCBidXQgYmVsb3cgY3VycmVudCBkYXRhXG4vLyAgICAgICAqIHBsdXMgV0lOX0lOSVQgLS0gemVybyBvdXQgdG8gY3VycmVudCBkYXRhIHBsdXMgV0lOX0lOSVQsIG9yIHVwXG4vLyAgICAgICAqIHRvIGVuZCBvZiB3aW5kb3csIHdoaWNoZXZlciBpcyBsZXNzLlxuLy8gICAgICAgKi9cbi8vICAgICAgaW5pdCA9ICh1bGcpY3VyciArIFdJTl9JTklUIC0gcy0+aGlnaF93YXRlcjtcbi8vICAgICAgaWYgKGluaXQgPiBzLT53aW5kb3dfc2l6ZSAtIHMtPmhpZ2hfd2F0ZXIpXG4vLyAgICAgICAgaW5pdCA9IHMtPndpbmRvd19zaXplIC0gcy0+aGlnaF93YXRlcjtcbi8vICAgICAgem1lbXplcm8ocy0+d2luZG93ICsgcy0+aGlnaF93YXRlciwgKHVuc2lnbmVkKWluaXQpO1xuLy8gICAgICBzLT5oaWdoX3dhdGVyICs9IGluaXQ7XG4vLyAgICB9XG4vLyAgfVxuLy9cbi8vICBBc3NlcnQoKHVsZylzLT5zdHJzdGFydCA8PSBzLT53aW5kb3dfc2l6ZSAtIE1JTl9MT09LQUhFQUQsXG4vLyAgICBcIm5vdCBlbm91Z2ggcm9vbSBmb3Igc2VhcmNoXCIpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvcHkgd2l0aG91dCBjb21wcmVzc2lvbiBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gdGhlIGlucHV0IHN0cmVhbSwgcmV0dXJuXG4gKiB0aGUgY3VycmVudCBibG9jayBzdGF0ZS5cbiAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgaW5zZXJ0IG5ldyBzdHJpbmdzIGluIHRoZSBkaWN0aW9uYXJ5IHNpbmNlXG4gKiB1bmNvbXByZXNzaWJsZSBkYXRhIGlzIHByb2JhYmx5IG5vdCB1c2VmdWwuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZFxuICogb25seSBmb3IgdGhlIGxldmVsPTAgY29tcHJlc3Npb24gb3B0aW9uLlxuICogTk9URTogdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgb3B0aW1pemVkIHRvIGF2b2lkIGV4dHJhIGNvcHlpbmcgZnJvbVxuICogd2luZG93IHRvIHBlbmRpbmdfYnVmLlxuICovXG5mdW5jdGlvbiBkZWZsYXRlX3N0b3JlZChzLCBmbHVzaCkge1xuICAvKiBTdG9yZWQgYmxvY2tzIGFyZSBsaW1pdGVkIHRvIDB4ZmZmZiBieXRlcywgcGVuZGluZ19idWYgaXMgbGltaXRlZFxuICAgKiB0byBwZW5kaW5nX2J1Zl9zaXplLCBhbmQgZWFjaCBzdG9yZWQgYmxvY2sgaGFzIGEgNSBieXRlIGhlYWRlcjpcbiAgICovXG4gIHZhciBtYXhfYmxvY2tfc2l6ZSA9IDB4ZmZmZjtcblxuICBpZiAobWF4X2Jsb2NrX3NpemUgPiBzLnBlbmRpbmdfYnVmX3NpemUgLSA1KSB7XG4gICAgbWF4X2Jsb2NrX3NpemUgPSBzLnBlbmRpbmdfYnVmX3NpemUgLSA1O1xuICB9XG5cbiAgLyogQ29weSBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gaW5wdXQgdG8gb3V0cHV0OiAqL1xuICBmb3IgKDs7KSB7XG4gICAgLyogRmlsbCB0aGUgd2luZG93IGFzIG11Y2ggYXMgcG9zc2libGU6ICovXG4gICAgaWYgKHMubG9va2FoZWFkIDw9IDEpIHtcblxuICAgICAgLy9Bc3NlcnQocy0+c3Ryc3RhcnQgPCBzLT53X3NpemUrTUFYX0RJU1QocykgfHxcbiAgICAgIC8vICBzLT5ibG9ja19zdGFydCA+PSAobG9uZylzLT53X3NpemUsIFwic2xpZGUgdG9vIGxhdGVcIik7XG4vLyAgICAgIGlmICghKHMuc3Ryc3RhcnQgPCBzLndfc2l6ZSArIChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpIHx8XG4vLyAgICAgICAgcy5ibG9ja19zdGFydCA+PSBzLndfc2l6ZSkpIHtcbi8vICAgICAgICB0aHJvdyAgbmV3IEVycm9yKFwic2xpZGUgdG9vIGxhdGVcIik7XG4vLyAgICAgIH1cblxuICAgICAgZmlsbF93aW5kb3cocyk7XG4gICAgICBpZiAocy5sb29rYWhlYWQgPT09IDAgJiYgZmx1c2ggPT09IFpfTk9fRkxVU0gpIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cblxuICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLyogZmx1c2ggdGhlIGN1cnJlbnQgYmxvY2sgKi9cbiAgICB9XG4gICAgLy9Bc3NlcnQocy0+YmxvY2tfc3RhcnQgPj0gMEwsIFwiYmxvY2sgZ29uZVwiKTtcbi8vICAgIGlmIChzLmJsb2NrX3N0YXJ0IDwgMCkgdGhyb3cgbmV3IEVycm9yKFwiYmxvY2sgZ29uZVwiKTtcblxuICAgIHMuc3Ryc3RhcnQgKz0gcy5sb29rYWhlYWQ7XG4gICAgcy5sb29rYWhlYWQgPSAwO1xuXG4gICAgLyogRW1pdCBhIHN0b3JlZCBibG9jayBpZiBwZW5kaW5nX2J1ZiB3aWxsIGJlIGZ1bGw6ICovXG4gICAgdmFyIG1heF9zdGFydCA9IHMuYmxvY2tfc3RhcnQgKyBtYXhfYmxvY2tfc2l6ZTtcblxuICAgIGlmIChzLnN0cnN0YXJ0ID09PSAwIHx8IHMuc3Ryc3RhcnQgPj0gbWF4X3N0YXJ0KSB7XG4gICAgICAvKiBzdHJzdGFydCA9PSAwIGlzIHBvc3NpYmxlIHdoZW4gd3JhcGFyb3VuZCBvbiAxNi1iaXQgbWFjaGluZSAqL1xuICAgICAgcy5sb29rYWhlYWQgPSBzLnN0cnN0YXJ0IC0gbWF4X3N0YXJ0O1xuICAgICAgcy5zdHJzdGFydCA9IG1heF9zdGFydDtcbiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIC8qKiovXG5cblxuICAgIH1cbiAgICAvKiBGbHVzaCBpZiB3ZSBtYXkgaGF2ZSB0byBzbGlkZSwgb3RoZXJ3aXNlIGJsb2NrX3N0YXJ0IG1heSBiZWNvbWVcbiAgICAgKiBuZWdhdGl2ZSBhbmQgdGhlIGRhdGEgd2lsbCBiZSBnb25lOlxuICAgICAqL1xuICAgIGlmIChzLnN0cnN0YXJ0IC0gcy5ibG9ja19zdGFydCA+PSAocy53X3NpemUgLSBNSU5fTE9PS0FIRUFEKSkge1xuICAgICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7XG4gICAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgICAgfVxuICAgICAgLyoqKi9cbiAgICB9XG4gIH1cblxuICBzLmluc2VydCA9IDA7XG5cbiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMSk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7XG4gICAgfVxuICAgIC8qKiovXG4gICAgcmV0dXJuIEJTX0ZJTklTSF9ET05FO1xuICB9XG5cbiAgaWYgKHMuc3Ryc3RhcnQgPiBzLmJsb2NrX3N0YXJ0KSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgIH1cbiAgICAvKioqL1xuICB9XG5cbiAgcmV0dXJuIEJTX05FRURfTU9SRTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb21wcmVzcyBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gdGhlIGlucHV0IHN0cmVhbSwgcmV0dXJuIHRoZSBjdXJyZW50XG4gKiBibG9jayBzdGF0ZS5cbiAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcGVyZm9ybSBsYXp5IGV2YWx1YXRpb24gb2YgbWF0Y2hlcyBhbmQgaW5zZXJ0c1xuICogbmV3IHN0cmluZ3MgaW4gdGhlIGRpY3Rpb25hcnkgb25seSBmb3IgdW5tYXRjaGVkIHN0cmluZ3Mgb3IgZm9yIHNob3J0XG4gKiBtYXRjaGVzLiBJdCBpcyB1c2VkIG9ubHkgZm9yIHRoZSBmYXN0IGNvbXByZXNzaW9uIG9wdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIGRlZmxhdGVfZmFzdChzLCBmbHVzaCkge1xuICB2YXIgaGFzaF9oZWFkOyAgICAgICAgLyogaGVhZCBvZiB0aGUgaGFzaCBjaGFpbiAqL1xuICB2YXIgYmZsdXNoOyAgICAgICAgICAgLyogc2V0IGlmIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkICovXG5cbiAgZm9yICg7Oykge1xuICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGVub3VnaCBsb29rYWhlYWQsIGV4Y2VwdFxuICAgICAqIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0IGZpbGUuIFdlIG5lZWQgTUFYX01BVENIIGJ5dGVzXG4gICAgICogZm9yIHRoZSBuZXh0IG1hdGNoLCBwbHVzIE1JTl9NQVRDSCBieXRlcyB0byBpbnNlcnQgdGhlXG4gICAgICogc3RyaW5nIGZvbGxvd2luZyB0aGUgbmV4dCBtYXRjaC5cbiAgICAgKi9cbiAgICBpZiAocy5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEKSB7XG4gICAgICBmaWxsX3dpbmRvdyhzKTtcbiAgICAgIGlmIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQgJiYgZmx1c2ggPT09IFpfTk9fRkxVU0gpIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkge1xuICAgICAgICBicmVhazsgLyogZmx1c2ggdGhlIGN1cnJlbnQgYmxvY2sgKi9cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBJbnNlcnQgdGhlIHN0cmluZyB3aW5kb3dbc3Ryc3RhcnQgLi4gc3Ryc3RhcnQrMl0gaW4gdGhlXG4gICAgICogZGljdGlvbmFyeSwgYW5kIHNldCBoYXNoX2hlYWQgdG8gdGhlIGhlYWQgb2YgdGhlIGhhc2ggY2hhaW46XG4gICAgICovXG4gICAgaGFzaF9oZWFkID0gMC8qTklMKi87XG4gICAgaWYgKHMubG9va2FoZWFkID49IE1JTl9NQVRDSCkge1xuICAgICAgLyoqKiBJTlNFUlRfU1RSSU5HKHMsIHMuc3Ryc3RhcnQsIGhhc2hfaGVhZCk7ICoqKi9cbiAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3Muc3Ryc3RhcnQgKyBNSU5fTUFUQ0ggLSAxXSkgJiBzLmhhc2hfbWFzaztcbiAgICAgIGhhc2hfaGVhZCA9IHMucHJldltzLnN0cnN0YXJ0ICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdO1xuICAgICAgcy5oZWFkW3MuaW5zX2hdID0gcy5zdHJzdGFydDtcbiAgICAgIC8qKiovXG4gICAgfVxuXG4gICAgLyogRmluZCB0aGUgbG9uZ2VzdCBtYXRjaCwgZGlzY2FyZGluZyB0aG9zZSA8PSBwcmV2X2xlbmd0aC5cbiAgICAgKiBBdCB0aGlzIHBvaW50IHdlIGhhdmUgYWx3YXlzIG1hdGNoX2xlbmd0aCA8IE1JTl9NQVRDSFxuICAgICAqL1xuICAgIGlmIChoYXNoX2hlYWQgIT09IDAvKk5JTCovICYmICgocy5zdHJzdGFydCAtIGhhc2hfaGVhZCkgPD0gKHMud19zaXplIC0gTUlOX0xPT0tBSEVBRCkpKSB7XG4gICAgICAvKiBUbyBzaW1wbGlmeSB0aGUgY29kZSwgd2UgcHJldmVudCBtYXRjaGVzIHdpdGggdGhlIHN0cmluZ1xuICAgICAgICogb2Ygd2luZG93IGluZGV4IDAgKGluIHBhcnRpY3VsYXIgd2UgaGF2ZSB0byBhdm9pZCBhIG1hdGNoXG4gICAgICAgKiBvZiB0aGUgc3RyaW5nIHdpdGggaXRzZWxmIGF0IHRoZSBzdGFydCBvZiB0aGUgaW5wdXQgZmlsZSkuXG4gICAgICAgKi9cbiAgICAgIHMubWF0Y2hfbGVuZ3RoID0gbG9uZ2VzdF9tYXRjaChzLCBoYXNoX2hlYWQpO1xuICAgICAgLyogbG9uZ2VzdF9tYXRjaCgpIHNldHMgbWF0Y2hfc3RhcnQgKi9cbiAgICB9XG4gICAgaWYgKHMubWF0Y2hfbGVuZ3RoID49IE1JTl9NQVRDSCkge1xuICAgICAgLy8gY2hlY2tfbWF0Y2gocywgcy5zdHJzdGFydCwgcy5tYXRjaF9zdGFydCwgcy5tYXRjaF9sZW5ndGgpOyAvLyBmb3IgZGVidWcgb25seVxuXG4gICAgICAvKioqIF90cl90YWxseV9kaXN0KHMsIHMuc3Ryc3RhcnQgLSBzLm1hdGNoX3N0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gsIGJmbHVzaCk7ICoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCBzLnN0cnN0YXJ0IC0gcy5tYXRjaF9zdGFydCwgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gpO1xuXG4gICAgICBzLmxvb2thaGVhZCAtPSBzLm1hdGNoX2xlbmd0aDtcblxuICAgICAgLyogSW5zZXJ0IG5ldyBzdHJpbmdzIGluIHRoZSBoYXNoIHRhYmxlIG9ubHkgaWYgdGhlIG1hdGNoIGxlbmd0aFxuICAgICAgICogaXMgbm90IHRvbyBsYXJnZS4gVGhpcyBzYXZlcyB0aW1lIGJ1dCBkZWdyYWRlcyBjb21wcmVzc2lvbi5cbiAgICAgICAqL1xuICAgICAgaWYgKHMubWF0Y2hfbGVuZ3RoIDw9IHMubWF4X2xhenlfbWF0Y2gvKm1heF9pbnNlcnRfbGVuZ3RoKi8gJiYgcy5sb29rYWhlYWQgPj0gTUlOX01BVENIKSB7XG4gICAgICAgIHMubWF0Y2hfbGVuZ3RoLS07IC8qIHN0cmluZyBhdCBzdHJzdGFydCBhbHJlYWR5IGluIHRhYmxlICovXG4gICAgICAgIGRvIHtcbiAgICAgICAgICBzLnN0cnN0YXJ0Kys7XG4gICAgICAgICAgLyoqKiBJTlNFUlRfU1RSSU5HKHMsIHMuc3Ryc3RhcnQsIGhhc2hfaGVhZCk7ICoqKi9cbiAgICAgICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG4gICAgICAgICAgaGFzaF9oZWFkID0gcy5wcmV2W3Muc3Ryc3RhcnQgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07XG4gICAgICAgICAgcy5oZWFkW3MuaW5zX2hdID0gcy5zdHJzdGFydDtcbiAgICAgICAgICAvKioqL1xuICAgICAgICAgIC8qIHN0cnN0YXJ0IG5ldmVyIGV4Y2VlZHMgV1NJWkUtTUFYX01BVENILCBzbyB0aGVyZSBhcmVcbiAgICAgICAgICAgKiBhbHdheXMgTUlOX01BVENIIGJ5dGVzIGFoZWFkLlxuICAgICAgICAgICAqL1xuICAgICAgICB9IHdoaWxlICgtLXMubWF0Y2hfbGVuZ3RoICE9PSAwKTtcbiAgICAgICAgcy5zdHJzdGFydCsrO1xuICAgICAgfSBlbHNlXG4gICAgICB7XG4gICAgICAgIHMuc3Ryc3RhcnQgKz0gcy5tYXRjaF9sZW5ndGg7XG4gICAgICAgIHMubWF0Y2hfbGVuZ3RoID0gMDtcbiAgICAgICAgcy5pbnNfaCA9IHMud2luZG93W3Muc3Ryc3RhcnRdO1xuICAgICAgICAvKiBVUERBVEVfSEFTSChzLCBzLmluc19oLCBzLndpbmRvd1tzLnN0cnN0YXJ0KzFdKTsgKi9cbiAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIDFdKSAmIHMuaGFzaF9tYXNrO1xuXG4vLyNpZiBNSU5fTUFUQ0ggIT0gM1xuLy8gICAgICAgICAgICAgICAgQ2FsbCBVUERBVEVfSEFTSCgpIE1JTl9NQVRDSC0zIG1vcmUgdGltZXNcbi8vI2VuZGlmXG4gICAgICAgIC8qIElmIGxvb2thaGVhZCA8IE1JTl9NQVRDSCwgaW5zX2ggaXMgZ2FyYmFnZSwgYnV0IGl0IGRvZXMgbm90XG4gICAgICAgICAqIG1hdHRlciBzaW5jZSBpdCB3aWxsIGJlIHJlY29tcHV0ZWQgYXQgbmV4dCBkZWZsYXRlIGNhbGwuXG4gICAgICAgICAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvKiBObyBtYXRjaCwgb3V0cHV0IGEgbGl0ZXJhbCBieXRlICovXG4gICAgICAvL1RyYWNldnYoKHN0ZGVycixcIiVjXCIsIHMud2luZG93W3Muc3Ryc3RhcnRdKSk7XG4gICAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydF0sIGJmbHVzaCk7ICoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSk7XG5cbiAgICAgIHMubG9va2FoZWFkLS07XG4gICAgICBzLnN0cnN0YXJ0Kys7XG4gICAgfVxuICAgIGlmIChiZmx1c2gpIHtcbiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIC8qKiovXG4gICAgfVxuICB9XG4gIHMuaW5zZXJ0ID0gKChzLnN0cnN0YXJ0IDwgKE1JTl9NQVRDSCAtIDEpKSA/IHMuc3Ryc3RhcnQgOiBNSU5fTUFUQ0ggLSAxKTtcbiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMSk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7XG4gICAgfVxuICAgIC8qKiovXG4gICAgcmV0dXJuIEJTX0ZJTklTSF9ET05FO1xuICB9XG4gIGlmIChzLmxhc3RfbGl0KSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgIH1cbiAgICAvKioqL1xuICB9XG4gIHJldHVybiBCU19CTE9DS19ET05FO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNhbWUgYXMgYWJvdmUsIGJ1dCBhY2hpZXZlcyBiZXR0ZXIgY29tcHJlc3Npb24uIFdlIHVzZSBhIGxhenlcbiAqIGV2YWx1YXRpb24gZm9yIG1hdGNoZXM6IGEgbWF0Y2ggaXMgZmluYWxseSBhZG9wdGVkIG9ubHkgaWYgdGhlcmUgaXNcbiAqIG5vIGJldHRlciBtYXRjaCBhdCB0aGUgbmV4dCB3aW5kb3cgcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGRlZmxhdGVfc2xvdyhzLCBmbHVzaCkge1xuICB2YXIgaGFzaF9oZWFkOyAgICAgICAgICAvKiBoZWFkIG9mIGhhc2ggY2hhaW4gKi9cbiAgdmFyIGJmbHVzaDsgICAgICAgICAgICAgIC8qIHNldCBpZiBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZCAqL1xuXG4gIHZhciBtYXhfaW5zZXJ0O1xuXG4gIC8qIFByb2Nlc3MgdGhlIGlucHV0IGJsb2NrLiAqL1xuICBmb3IgKDs7KSB7XG4gICAgLyogTWFrZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGhhdmUgZW5vdWdoIGxvb2thaGVhZCwgZXhjZXB0XG4gICAgICogYXQgdGhlIGVuZCBvZiB0aGUgaW5wdXQgZmlsZS4gV2UgbmVlZCBNQVhfTUFUQ0ggYnl0ZXNcbiAgICAgKiBmb3IgdGhlIG5leHQgbWF0Y2gsIHBsdXMgTUlOX01BVENIIGJ5dGVzIHRvIGluc2VydCB0aGVcbiAgICAgKiBzdHJpbmcgZm9sbG93aW5nIHRoZSBuZXh0IG1hdGNoLlxuICAgICAqL1xuICAgIGlmIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQpIHtcbiAgICAgIGZpbGxfd2luZG93KHMpO1xuICAgICAgaWYgKHMubG9va2FoZWFkIDwgTUlOX0xPT0tBSEVBRCAmJiBmbHVzaCA9PT0gWl9OT19GTFVTSCkge1xuICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgICAgfVxuICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7IGJyZWFrOyB9IC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovXG4gICAgfVxuXG4gICAgLyogSW5zZXJ0IHRoZSBzdHJpbmcgd2luZG93W3N0cnN0YXJ0IC4uIHN0cnN0YXJ0KzJdIGluIHRoZVxuICAgICAqIGRpY3Rpb25hcnksIGFuZCBzZXQgaGFzaF9oZWFkIHRvIHRoZSBoZWFkIG9mIHRoZSBoYXNoIGNoYWluOlxuICAgICAqL1xuICAgIGhhc2hfaGVhZCA9IDAvKk5JTCovO1xuICAgIGlmIChzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0gpIHtcbiAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovXG4gICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG4gICAgICBoYXNoX2hlYWQgPSBzLnByZXZbcy5zdHJzdGFydCAmIHMud19tYXNrXSA9IHMuaGVhZFtzLmluc19oXTtcbiAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7XG4gICAgICAvKioqL1xuICAgIH1cblxuICAgIC8qIEZpbmQgdGhlIGxvbmdlc3QgbWF0Y2gsIGRpc2NhcmRpbmcgdGhvc2UgPD0gcHJldl9sZW5ndGguXG4gICAgICovXG4gICAgcy5wcmV2X2xlbmd0aCA9IHMubWF0Y2hfbGVuZ3RoO1xuICAgIHMucHJldl9tYXRjaCA9IHMubWF0Y2hfc3RhcnQ7XG4gICAgcy5tYXRjaF9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxO1xuXG4gICAgaWYgKGhhc2hfaGVhZCAhPT0gMC8qTklMKi8gJiYgcy5wcmV2X2xlbmd0aCA8IHMubWF4X2xhenlfbWF0Y2ggJiZcbiAgICAgICAgcy5zdHJzdGFydCAtIGhhc2hfaGVhZCA8PSAocy53X3NpemUgLSBNSU5fTE9PS0FIRUFEKS8qTUFYX0RJU1QocykqLykge1xuICAgICAgLyogVG8gc2ltcGxpZnkgdGhlIGNvZGUsIHdlIHByZXZlbnQgbWF0Y2hlcyB3aXRoIHRoZSBzdHJpbmdcbiAgICAgICAqIG9mIHdpbmRvdyBpbmRleCAwIChpbiBwYXJ0aWN1bGFyIHdlIGhhdmUgdG8gYXZvaWQgYSBtYXRjaFxuICAgICAgICogb2YgdGhlIHN0cmluZyB3aXRoIGl0c2VsZiBhdCB0aGUgc3RhcnQgb2YgdGhlIGlucHV0IGZpbGUpLlxuICAgICAgICovXG4gICAgICBzLm1hdGNoX2xlbmd0aCA9IGxvbmdlc3RfbWF0Y2gocywgaGFzaF9oZWFkKTtcbiAgICAgIC8qIGxvbmdlc3RfbWF0Y2goKSBzZXRzIG1hdGNoX3N0YXJ0ICovXG5cbiAgICAgIGlmIChzLm1hdGNoX2xlbmd0aCA8PSA1ICYmXG4gICAgICAgICAocy5zdHJhdGVneSA9PT0gWl9GSUxURVJFRCB8fCAocy5tYXRjaF9sZW5ndGggPT09IE1JTl9NQVRDSCAmJiBzLnN0cnN0YXJ0IC0gcy5tYXRjaF9zdGFydCA+IDQwOTYvKlRPT19GQVIqLykpKSB7XG5cbiAgICAgICAgLyogSWYgcHJldl9tYXRjaCBpcyBhbHNvIE1JTl9NQVRDSCwgbWF0Y2hfc3RhcnQgaXMgZ2FyYmFnZVxuICAgICAgICAgKiBidXQgd2Ugd2lsbCBpZ25vcmUgdGhlIGN1cnJlbnQgbWF0Y2ggYW55d2F5LlxuICAgICAgICAgKi9cbiAgICAgICAgcy5tYXRjaF9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxO1xuICAgICAgfVxuICAgIH1cbiAgICAvKiBJZiB0aGVyZSB3YXMgYSBtYXRjaCBhdCB0aGUgcHJldmlvdXMgc3RlcCBhbmQgdGhlIGN1cnJlbnRcbiAgICAgKiBtYXRjaCBpcyBub3QgYmV0dGVyLCBvdXRwdXQgdGhlIHByZXZpb3VzIG1hdGNoOlxuICAgICAqL1xuICAgIGlmIChzLnByZXZfbGVuZ3RoID49IE1JTl9NQVRDSCAmJiBzLm1hdGNoX2xlbmd0aCA8PSBzLnByZXZfbGVuZ3RoKSB7XG4gICAgICBtYXhfaW5zZXJ0ID0gcy5zdHJzdGFydCArIHMubG9va2FoZWFkIC0gTUlOX01BVENIO1xuICAgICAgLyogRG8gbm90IGluc2VydCBzdHJpbmdzIGluIGhhc2ggdGFibGUgYmV5b25kIHRoaXMuICovXG5cbiAgICAgIC8vY2hlY2tfbWF0Y2gocywgcy5zdHJzdGFydC0xLCBzLnByZXZfbWF0Y2gsIHMucHJldl9sZW5ndGgpO1xuXG4gICAgICAvKioqX3RyX3RhbGx5X2Rpc3Qocywgcy5zdHJzdGFydCAtIDEgLSBzLnByZXZfbWF0Y2gsXG4gICAgICAgICAgICAgICAgICAgICBzLnByZXZfbGVuZ3RoIC0gTUlOX01BVENILCBiZmx1c2gpOyoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCBzLnN0cnN0YXJ0IC0gMSAtIHMucHJldl9tYXRjaCwgcy5wcmV2X2xlbmd0aCAtIE1JTl9NQVRDSCk7XG4gICAgICAvKiBJbnNlcnQgaW4gaGFzaCB0YWJsZSBhbGwgc3RyaW5ncyB1cCB0byB0aGUgZW5kIG9mIHRoZSBtYXRjaC5cbiAgICAgICAqIHN0cnN0YXJ0LTEgYW5kIHN0cnN0YXJ0IGFyZSBhbHJlYWR5IGluc2VydGVkLiBJZiB0aGVyZSBpcyBub3RcbiAgICAgICAqIGVub3VnaCBsb29rYWhlYWQsIHRoZSBsYXN0IHR3byBzdHJpbmdzIGFyZSBub3QgaW5zZXJ0ZWQgaW5cbiAgICAgICAqIHRoZSBoYXNoIHRhYmxlLlxuICAgICAgICovXG4gICAgICBzLmxvb2thaGVhZCAtPSBzLnByZXZfbGVuZ3RoIC0gMTtcbiAgICAgIHMucHJldl9sZW5ndGggLT0gMjtcbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKCsrcy5zdHJzdGFydCA8PSBtYXhfaW5zZXJ0KSB7XG4gICAgICAgICAgLyoqKiBJTlNFUlRfU1RSSU5HKHMsIHMuc3Ryc3RhcnQsIGhhc2hfaGVhZCk7ICoqKi9cbiAgICAgICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG4gICAgICAgICAgaGFzaF9oZWFkID0gcy5wcmV2W3Muc3Ryc3RhcnQgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07XG4gICAgICAgICAgcy5oZWFkW3MuaW5zX2hdID0gcy5zdHJzdGFydDtcbiAgICAgICAgICAvKioqL1xuICAgICAgICB9XG4gICAgICB9IHdoaWxlICgtLXMucHJldl9sZW5ndGggIT09IDApO1xuICAgICAgcy5tYXRjaF9hdmFpbGFibGUgPSAwO1xuICAgICAgcy5tYXRjaF9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxO1xuICAgICAgcy5zdHJzdGFydCsrO1xuXG4gICAgICBpZiAoYmZsdXNoKSB7XG4gICAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7XG4gICAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgICAgfVxuICAgICAgICAvKioqL1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmIChzLm1hdGNoX2F2YWlsYWJsZSkge1xuICAgICAgLyogSWYgdGhlcmUgd2FzIG5vIG1hdGNoIGF0IHRoZSBwcmV2aW91cyBwb3NpdGlvbiwgb3V0cHV0IGFcbiAgICAgICAqIHNpbmdsZSBsaXRlcmFsLiBJZiB0aGVyZSB3YXMgYSBtYXRjaCBidXQgdGhlIGN1cnJlbnQgbWF0Y2hcbiAgICAgICAqIGlzIGxvbmdlciwgdHJ1bmNhdGUgdGhlIHByZXZpb3VzIG1hdGNoIHRvIGEgc2luZ2xlIGxpdGVyYWwuXG4gICAgICAgKi9cbiAgICAgIC8vVHJhY2V2digoc3RkZXJyLFwiJWNcIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0LTFdKSk7XG4gICAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydC0xXSwgYmZsdXNoKTsgKioqL1xuICAgICAgYmZsdXNoID0gdHJlZXMuX3RyX3RhbGx5KHMsIDAsIHMud2luZG93W3Muc3Ryc3RhcnQgLSAxXSk7XG5cbiAgICAgIGlmIChiZmx1c2gpIHtcbiAgICAgICAgLyoqKiBGTFVTSF9CTE9DS19PTkxZKHMsIDApICoqKi9cbiAgICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7XG4gICAgICAgIC8qKiovXG4gICAgICB9XG4gICAgICBzLnN0cnN0YXJ0Kys7XG4gICAgICBzLmxvb2thaGVhZC0tO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLyogVGhlcmUgaXMgbm8gcHJldmlvdXMgbWF0Y2ggdG8gY29tcGFyZSB3aXRoLCB3YWl0IGZvclxuICAgICAgICogdGhlIG5leHQgc3RlcCB0byBkZWNpZGUuXG4gICAgICAgKi9cbiAgICAgIHMubWF0Y2hfYXZhaWxhYmxlID0gMTtcbiAgICAgIHMuc3Ryc3RhcnQrKztcbiAgICAgIHMubG9va2FoZWFkLS07XG4gICAgfVxuICB9XG4gIC8vQXNzZXJ0IChmbHVzaCAhPSBaX05PX0ZMVVNILCBcIm5vIGZsdXNoP1wiKTtcbiAgaWYgKHMubWF0Y2hfYXZhaWxhYmxlKSB7XG4gICAgLy9UcmFjZXZ2KChzdGRlcnIsXCIlY1wiLCBzLT53aW5kb3dbcy0+c3Ryc3RhcnQtMV0pKTtcbiAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydC0xXSwgYmZsdXNoKTsgKioqL1xuICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0IC0gMV0pO1xuXG4gICAgcy5tYXRjaF9hdmFpbGFibGUgPSAwO1xuICB9XG4gIHMuaW5zZXJ0ID0gcy5zdHJzdGFydCA8IE1JTl9NQVRDSCAtIDEgPyBzLnN0cnN0YXJ0IDogTUlOX01BVENIIC0gMTtcbiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMSk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7XG4gICAgfVxuICAgIC8qKiovXG4gICAgcmV0dXJuIEJTX0ZJTklTSF9ET05FO1xuICB9XG4gIGlmIChzLmxhc3RfbGl0KSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgIH1cbiAgICAvKioqL1xuICB9XG5cbiAgcmV0dXJuIEJTX0JMT0NLX0RPTkU7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBGb3IgWl9STEUsIHNpbXBseSBsb29rIGZvciBydW5zIG9mIGJ5dGVzLCBnZW5lcmF0ZSBtYXRjaGVzIG9ubHkgb2YgZGlzdGFuY2VcbiAqIG9uZS4gIERvIG5vdCBtYWludGFpbiBhIGhhc2ggdGFibGUuICAoSXQgd2lsbCBiZSByZWdlbmVyYXRlZCBpZiB0aGlzIHJ1biBvZlxuICogZGVmbGF0ZSBzd2l0Y2hlcyBhd2F5IGZyb20gWl9STEUuKVxuICovXG5mdW5jdGlvbiBkZWZsYXRlX3JsZShzLCBmbHVzaCkge1xuICB2YXIgYmZsdXNoOyAgICAgICAgICAgIC8qIHNldCBpZiBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZCAqL1xuICB2YXIgcHJldjsgICAgICAgICAgICAgIC8qIGJ5dGUgYXQgZGlzdGFuY2Ugb25lIHRvIG1hdGNoICovXG4gIHZhciBzY2FuLCBzdHJlbmQ7ICAgICAgLyogc2NhbiBnb2VzIHVwIHRvIHN0cmVuZCBmb3IgbGVuZ3RoIG9mIHJ1biAqL1xuXG4gIHZhciBfd2luID0gcy53aW5kb3c7XG5cbiAgZm9yICg7Oykge1xuICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGVub3VnaCBsb29rYWhlYWQsIGV4Y2VwdFxuICAgICAqIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0IGZpbGUuIFdlIG5lZWQgTUFYX01BVENIIGJ5dGVzXG4gICAgICogZm9yIHRoZSBsb25nZXN0IHJ1biwgcGx1cyBvbmUgZm9yIHRoZSB1bnJvbGxlZCBsb29wLlxuICAgICAqL1xuICAgIGlmIChzLmxvb2thaGVhZCA8PSBNQVhfTUFUQ0gpIHtcbiAgICAgIGZpbGxfd2luZG93KHMpO1xuICAgICAgaWYgKHMubG9va2FoZWFkIDw9IE1BWF9NQVRDSCAmJiBmbHVzaCA9PT0gWl9OT19GTFVTSCkge1xuICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgICAgfVxuICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7IGJyZWFrOyB9IC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovXG4gICAgfVxuXG4gICAgLyogU2VlIGhvdyBtYW55IHRpbWVzIHRoZSBwcmV2aW91cyBieXRlIHJlcGVhdHMgKi9cbiAgICBzLm1hdGNoX2xlbmd0aCA9IDA7XG4gICAgaWYgKHMubG9va2FoZWFkID49IE1JTl9NQVRDSCAmJiBzLnN0cnN0YXJ0ID4gMCkge1xuICAgICAgc2NhbiA9IHMuc3Ryc3RhcnQgLSAxO1xuICAgICAgcHJldiA9IF93aW5bc2Nhbl07XG4gICAgICBpZiAocHJldiA9PT0gX3dpblsrK3NjYW5dICYmIHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0pIHtcbiAgICAgICAgc3RyZW5kID0gcy5zdHJzdGFydCArIE1BWF9NQVRDSDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIC8qanNoaW50IG5vZW1wdHk6ZmFsc2UqL1xuICAgICAgICB9IHdoaWxlIChwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmXG4gICAgICAgICAgICAgICAgIHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiZcbiAgICAgICAgICAgICAgICAgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmIHByZXYgPT09IF93aW5bKytzY2FuXSAmJlxuICAgICAgICAgICAgICAgICBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmXG4gICAgICAgICAgICAgICAgIHNjYW4gPCBzdHJlbmQpO1xuICAgICAgICBzLm1hdGNoX2xlbmd0aCA9IE1BWF9NQVRDSCAtIChzdHJlbmQgLSBzY2FuKTtcbiAgICAgICAgaWYgKHMubWF0Y2hfbGVuZ3RoID4gcy5sb29rYWhlYWQpIHtcbiAgICAgICAgICBzLm1hdGNoX2xlbmd0aCA9IHMubG9va2FoZWFkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvL0Fzc2VydChzY2FuIDw9IHMtPndpbmRvdysodUludCkocy0+d2luZG93X3NpemUtMSksIFwid2lsZCBzY2FuXCIpO1xuICAgIH1cblxuICAgIC8qIEVtaXQgbWF0Y2ggaWYgaGF2ZSBydW4gb2YgTUlOX01BVENIIG9yIGxvbmdlciwgZWxzZSBlbWl0IGxpdGVyYWwgKi9cbiAgICBpZiAocy5tYXRjaF9sZW5ndGggPj0gTUlOX01BVENIKSB7XG4gICAgICAvL2NoZWNrX21hdGNoKHMsIHMuc3Ryc3RhcnQsIHMuc3Ryc3RhcnQgLSAxLCBzLm1hdGNoX2xlbmd0aCk7XG5cbiAgICAgIC8qKiogX3RyX3RhbGx5X2Rpc3QocywgMSwgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gsIGJmbHVzaCk7ICoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAxLCBzLm1hdGNoX2xlbmd0aCAtIE1JTl9NQVRDSCk7XG5cbiAgICAgIHMubG9va2FoZWFkIC09IHMubWF0Y2hfbGVuZ3RoO1xuICAgICAgcy5zdHJzdGFydCArPSBzLm1hdGNoX2xlbmd0aDtcbiAgICAgIHMubWF0Y2hfbGVuZ3RoID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogTm8gbWF0Y2gsIG91dHB1dCBhIGxpdGVyYWwgYnl0ZSAqL1xuICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsXCIlY1wiLCBzLT53aW5kb3dbcy0+c3Ryc3RhcnRdKSk7XG4gICAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydF0sIGJmbHVzaCk7ICoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSk7XG5cbiAgICAgIHMubG9va2FoZWFkLS07XG4gICAgICBzLnN0cnN0YXJ0Kys7XG4gICAgfVxuICAgIGlmIChiZmx1c2gpIHtcbiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIC8qKiovXG4gICAgfVxuICB9XG4gIHMuaW5zZXJ0ID0gMDtcbiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMSk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7XG4gICAgfVxuICAgIC8qKiovXG4gICAgcmV0dXJuIEJTX0ZJTklTSF9ET05FO1xuICB9XG4gIGlmIChzLmxhc3RfbGl0KSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgIH1cbiAgICAvKioqL1xuICB9XG4gIHJldHVybiBCU19CTE9DS19ET05FO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEZvciBaX0hVRkZNQU5fT05MWSwgZG8gbm90IGxvb2sgZm9yIG1hdGNoZXMuICBEbyBub3QgbWFpbnRhaW4gYSBoYXNoIHRhYmxlLlxuICogKEl0IHdpbGwgYmUgcmVnZW5lcmF0ZWQgaWYgdGhpcyBydW4gb2YgZGVmbGF0ZSBzd2l0Y2hlcyBhd2F5IGZyb20gSHVmZm1hbi4pXG4gKi9cbmZ1bmN0aW9uIGRlZmxhdGVfaHVmZihzLCBmbHVzaCkge1xuICB2YXIgYmZsdXNoOyAgICAgICAgICAgICAvKiBzZXQgaWYgY3VycmVudCBibG9jayBtdXN0IGJlIGZsdXNoZWQgKi9cblxuICBmb3IgKDs7KSB7XG4gICAgLyogTWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSBhIGxpdGVyYWwgdG8gd3JpdGUuICovXG4gICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7XG4gICAgICBmaWxsX3dpbmRvdyhzKTtcbiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkge1xuICAgICAgICBpZiAoZmx1c2ggPT09IFpfTk9fRkxVU0gpIHtcbiAgICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrOyAgICAgIC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovXG4gICAgICB9XG4gICAgfVxuXG4gICAgLyogT3V0cHV0IGEgbGl0ZXJhbCBieXRlICovXG4gICAgcy5tYXRjaF9sZW5ndGggPSAwO1xuICAgIC8vVHJhY2V2digoc3RkZXJyLFwiJWNcIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0XSkpO1xuICAgIC8qKiogX3RyX3RhbGx5X2xpdChzLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSwgYmZsdXNoKTsgKioqL1xuICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSk7XG4gICAgcy5sb29rYWhlYWQtLTtcbiAgICBzLnN0cnN0YXJ0Kys7XG4gICAgaWYgKGJmbHVzaCkge1xuICAgICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7XG4gICAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgICAgfVxuICAgICAgLyoqKi9cbiAgICB9XG4gIH1cbiAgcy5pbnNlcnQgPSAwO1xuICBpZiAoZmx1c2ggPT09IFpfRklOSVNIKSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAxKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgdHJ1ZSk7XG4gICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgIHJldHVybiBCU19GSU5JU0hfU1RBUlRFRDtcbiAgICB9XG4gICAgLyoqKi9cbiAgICByZXR1cm4gQlNfRklOSVNIX0RPTkU7XG4gIH1cbiAgaWYgKHMubGFzdF9saXQpIHtcbiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovXG4gICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7XG4gICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgfVxuICAgIC8qKiovXG4gIH1cbiAgcmV0dXJuIEJTX0JMT0NLX0RPTkU7XG59XG5cbi8qIFZhbHVlcyBmb3IgbWF4X2xhenlfbWF0Y2gsIGdvb2RfbWF0Y2ggYW5kIG1heF9jaGFpbl9sZW5ndGgsIGRlcGVuZGluZyBvblxuICogdGhlIGRlc2lyZWQgcGFjayBsZXZlbCAoMC4uOSkuIFRoZSB2YWx1ZXMgZ2l2ZW4gYmVsb3cgaGF2ZSBiZWVuIHR1bmVkIHRvXG4gKiBleGNsdWRlIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2UgZm9yIHBhdGhvbG9naWNhbCBmaWxlcy4gQmV0dGVyIHZhbHVlcyBtYXkgYmVcbiAqIGZvdW5kIGZvciBzcGVjaWZpYyBmaWxlcy5cbiAqL1xuZnVuY3Rpb24gQ29uZmlnKGdvb2RfbGVuZ3RoLCBtYXhfbGF6eSwgbmljZV9sZW5ndGgsIG1heF9jaGFpbiwgZnVuYykge1xuICB0aGlzLmdvb2RfbGVuZ3RoID0gZ29vZF9sZW5ndGg7XG4gIHRoaXMubWF4X2xhenkgPSBtYXhfbGF6eTtcbiAgdGhpcy5uaWNlX2xlbmd0aCA9IG5pY2VfbGVuZ3RoO1xuICB0aGlzLm1heF9jaGFpbiA9IG1heF9jaGFpbjtcbiAgdGhpcy5mdW5jID0gZnVuYztcbn1cblxudmFyIGNvbmZpZ3VyYXRpb25fdGFibGU7XG5cbmNvbmZpZ3VyYXRpb25fdGFibGUgPSBbXG4gIC8qICAgICAgZ29vZCBsYXp5IG5pY2UgY2hhaW4gKi9cbiAgbmV3IENvbmZpZygwLCAwLCAwLCAwLCBkZWZsYXRlX3N0b3JlZCksICAgICAgICAgIC8qIDAgc3RvcmUgb25seSAqL1xuICBuZXcgQ29uZmlnKDQsIDQsIDgsIDQsIGRlZmxhdGVfZmFzdCksICAgICAgICAgICAgLyogMSBtYXggc3BlZWQsIG5vIGxhenkgbWF0Y2hlcyAqL1xuICBuZXcgQ29uZmlnKDQsIDUsIDE2LCA4LCBkZWZsYXRlX2Zhc3QpLCAgICAgICAgICAgLyogMiAqL1xuICBuZXcgQ29uZmlnKDQsIDYsIDMyLCAzMiwgZGVmbGF0ZV9mYXN0KSwgICAgICAgICAgLyogMyAqL1xuXG4gIG5ldyBDb25maWcoNCwgNCwgMTYsIDE2LCBkZWZsYXRlX3Nsb3cpLCAgICAgICAgICAvKiA0IGxhenkgbWF0Y2hlcyAqL1xuICBuZXcgQ29uZmlnKDgsIDE2LCAzMiwgMzIsIGRlZmxhdGVfc2xvdyksICAgICAgICAgLyogNSAqL1xuICBuZXcgQ29uZmlnKDgsIDE2LCAxMjgsIDEyOCwgZGVmbGF0ZV9zbG93KSwgICAgICAgLyogNiAqL1xuICBuZXcgQ29uZmlnKDgsIDMyLCAxMjgsIDI1NiwgZGVmbGF0ZV9zbG93KSwgICAgICAgLyogNyAqL1xuICBuZXcgQ29uZmlnKDMyLCAxMjgsIDI1OCwgMTAyNCwgZGVmbGF0ZV9zbG93KSwgICAgLyogOCAqL1xuICBuZXcgQ29uZmlnKDMyLCAyNTgsIDI1OCwgNDA5NiwgZGVmbGF0ZV9zbG93KSAgICAgLyogOSBtYXggY29tcHJlc3Npb24gKi9cbl07XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBJbml0aWFsaXplIHRoZSBcImxvbmdlc3QgbWF0Y2hcIiByb3V0aW5lcyBmb3IgYSBuZXcgemxpYiBzdHJlYW1cbiAqL1xuZnVuY3Rpb24gbG1faW5pdChzKSB7XG4gIHMud2luZG93X3NpemUgPSAyICogcy53X3NpemU7XG5cbiAgLyoqKiBDTEVBUl9IQVNIKHMpOyAqKiovXG4gIHplcm8ocy5oZWFkKTsgLy8gRmlsbCB3aXRoIE5JTCAoPSAwKTtcblxuICAvKiBTZXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzOlxuICAgKi9cbiAgcy5tYXhfbGF6eV9tYXRjaCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0ubWF4X2xhenk7XG4gIHMuZ29vZF9tYXRjaCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0uZ29vZF9sZW5ndGg7XG4gIHMubmljZV9tYXRjaCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0ubmljZV9sZW5ndGg7XG4gIHMubWF4X2NoYWluX2xlbmd0aCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0ubWF4X2NoYWluO1xuXG4gIHMuc3Ryc3RhcnQgPSAwO1xuICBzLmJsb2NrX3N0YXJ0ID0gMDtcbiAgcy5sb29rYWhlYWQgPSAwO1xuICBzLmluc2VydCA9IDA7XG4gIHMubWF0Y2hfbGVuZ3RoID0gcy5wcmV2X2xlbmd0aCA9IE1JTl9NQVRDSCAtIDE7XG4gIHMubWF0Y2hfYXZhaWxhYmxlID0gMDtcbiAgcy5pbnNfaCA9IDA7XG59XG5cblxuZnVuY3Rpb24gRGVmbGF0ZVN0YXRlKCkge1xuICB0aGlzLnN0cm0gPSBudWxsOyAgICAgICAgICAgIC8qIHBvaW50ZXIgYmFjayB0byB0aGlzIHpsaWIgc3RyZWFtICovXG4gIHRoaXMuc3RhdHVzID0gMDsgICAgICAgICAgICAvKiBhcyB0aGUgbmFtZSBpbXBsaWVzICovXG4gIHRoaXMucGVuZGluZ19idWYgPSBudWxsOyAgICAgIC8qIG91dHB1dCBzdGlsbCBwZW5kaW5nICovXG4gIHRoaXMucGVuZGluZ19idWZfc2l6ZSA9IDA7ICAvKiBzaXplIG9mIHBlbmRpbmdfYnVmICovXG4gIHRoaXMucGVuZGluZ19vdXQgPSAwOyAgICAgICAvKiBuZXh0IHBlbmRpbmcgYnl0ZSB0byBvdXRwdXQgdG8gdGhlIHN0cmVhbSAqL1xuICB0aGlzLnBlbmRpbmcgPSAwOyAgICAgICAgICAgLyogbmIgb2YgYnl0ZXMgaW4gdGhlIHBlbmRpbmcgYnVmZmVyICovXG4gIHRoaXMud3JhcCA9IDA7ICAgICAgICAgICAgICAvKiBiaXQgMCB0cnVlIGZvciB6bGliLCBiaXQgMSB0cnVlIGZvciBnemlwICovXG4gIHRoaXMuZ3poZWFkID0gbnVsbDsgICAgICAgICAvKiBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiB0byB3cml0ZSAqL1xuICB0aGlzLmd6aW5kZXggPSAwOyAgICAgICAgICAgLyogd2hlcmUgaW4gZXh0cmEsIG5hbWUsIG9yIGNvbW1lbnQgKi9cbiAgdGhpcy5tZXRob2QgPSBaX0RFRkxBVEVEOyAvKiBjYW4gb25seSBiZSBERUZMQVRFRCAqL1xuICB0aGlzLmxhc3RfZmx1c2ggPSAtMTsgICAvKiB2YWx1ZSBvZiBmbHVzaCBwYXJhbSBmb3IgcHJldmlvdXMgZGVmbGF0ZSBjYWxsICovXG5cbiAgdGhpcy53X3NpemUgPSAwOyAgLyogTFo3NyB3aW5kb3cgc2l6ZSAoMzJLIGJ5IGRlZmF1bHQpICovXG4gIHRoaXMud19iaXRzID0gMDsgIC8qIGxvZzIod19zaXplKSAgKDguLjE2KSAqL1xuICB0aGlzLndfbWFzayA9IDA7ICAvKiB3X3NpemUgLSAxICovXG5cbiAgdGhpcy53aW5kb3cgPSBudWxsO1xuICAvKiBTbGlkaW5nIHdpbmRvdy4gSW5wdXQgYnl0ZXMgYXJlIHJlYWQgaW50byB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIHdpbmRvdyxcbiAgICogYW5kIG1vdmUgdG8gdGhlIGZpcnN0IGhhbGYgbGF0ZXIgdG8ga2VlcCBhIGRpY3Rpb25hcnkgb2YgYXQgbGVhc3Qgd1NpemVcbiAgICogYnl0ZXMuIFdpdGggdGhpcyBvcmdhbml6YXRpb24sIG1hdGNoZXMgYXJlIGxpbWl0ZWQgdG8gYSBkaXN0YW5jZSBvZlxuICAgKiB3U2l6ZS1NQVhfTUFUQ0ggYnl0ZXMsIGJ1dCB0aGlzIGVuc3VyZXMgdGhhdCBJTyBpcyBhbHdheXNcbiAgICogcGVyZm9ybWVkIHdpdGggYSBsZW5ndGggbXVsdGlwbGUgb2YgdGhlIGJsb2NrIHNpemUuXG4gICAqL1xuXG4gIHRoaXMud2luZG93X3NpemUgPSAwO1xuICAvKiBBY3R1YWwgc2l6ZSBvZiB3aW5kb3c6IDIqd1NpemUsIGV4Y2VwdCB3aGVuIHRoZSB1c2VyIGlucHV0IGJ1ZmZlclxuICAgKiBpcyBkaXJlY3RseSB1c2VkIGFzIHNsaWRpbmcgd2luZG93LlxuICAgKi9cblxuICB0aGlzLnByZXYgPSBudWxsO1xuICAvKiBMaW5rIHRvIG9sZGVyIHN0cmluZyB3aXRoIHNhbWUgaGFzaCBpbmRleC4gVG8gbGltaXQgdGhlIHNpemUgb2YgdGhpc1xuICAgKiBhcnJheSB0byA2NEssIHRoaXMgbGluayBpcyBtYWludGFpbmVkIG9ubHkgZm9yIHRoZSBsYXN0IDMySyBzdHJpbmdzLlxuICAgKiBBbiBpbmRleCBpbiB0aGlzIGFycmF5IGlzIHRodXMgYSB3aW5kb3cgaW5kZXggbW9kdWxvIDMySy5cbiAgICovXG5cbiAgdGhpcy5oZWFkID0gbnVsbDsgICAvKiBIZWFkcyBvZiB0aGUgaGFzaCBjaGFpbnMgb3IgTklMLiAqL1xuXG4gIHRoaXMuaW5zX2ggPSAwOyAgICAgICAvKiBoYXNoIGluZGV4IG9mIHN0cmluZyB0byBiZSBpbnNlcnRlZCAqL1xuICB0aGlzLmhhc2hfc2l6ZSA9IDA7ICAgLyogbnVtYmVyIG9mIGVsZW1lbnRzIGluIGhhc2ggdGFibGUgKi9cbiAgdGhpcy5oYXNoX2JpdHMgPSAwOyAgIC8qIGxvZzIoaGFzaF9zaXplKSAqL1xuICB0aGlzLmhhc2hfbWFzayA9IDA7ICAgLyogaGFzaF9zaXplLTEgKi9cblxuICB0aGlzLmhhc2hfc2hpZnQgPSAwO1xuICAvKiBOdW1iZXIgb2YgYml0cyBieSB3aGljaCBpbnNfaCBtdXN0IGJlIHNoaWZ0ZWQgYXQgZWFjaCBpbnB1dFxuICAgKiBzdGVwLiBJdCBtdXN0IGJlIHN1Y2ggdGhhdCBhZnRlciBNSU5fTUFUQ0ggc3RlcHMsIHRoZSBvbGRlc3RcbiAgICogYnl0ZSBubyBsb25nZXIgdGFrZXMgcGFydCBpbiB0aGUgaGFzaCBrZXksIHRoYXQgaXM6XG4gICAqICAgaGFzaF9zaGlmdCAqIE1JTl9NQVRDSCA+PSBoYXNoX2JpdHNcbiAgICovXG5cbiAgdGhpcy5ibG9ja19zdGFydCA9IDA7XG4gIC8qIFdpbmRvdyBwb3NpdGlvbiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IG91dHB1dCBibG9jay4gR2V0c1xuICAgKiBuZWdhdGl2ZSB3aGVuIHRoZSB3aW5kb3cgaXMgbW92ZWQgYmFja3dhcmRzLlxuICAgKi9cblxuICB0aGlzLm1hdGNoX2xlbmd0aCA9IDA7ICAgICAgLyogbGVuZ3RoIG9mIGJlc3QgbWF0Y2ggKi9cbiAgdGhpcy5wcmV2X21hdGNoID0gMDsgICAgICAgIC8qIHByZXZpb3VzIG1hdGNoICovXG4gIHRoaXMubWF0Y2hfYXZhaWxhYmxlID0gMDsgICAvKiBzZXQgaWYgcHJldmlvdXMgbWF0Y2ggZXhpc3RzICovXG4gIHRoaXMuc3Ryc3RhcnQgPSAwOyAgICAgICAgICAvKiBzdGFydCBvZiBzdHJpbmcgdG8gaW5zZXJ0ICovXG4gIHRoaXMubWF0Y2hfc3RhcnQgPSAwOyAgICAgICAvKiBzdGFydCBvZiBtYXRjaGluZyBzdHJpbmcgKi9cbiAgdGhpcy5sb29rYWhlYWQgPSAwOyAgICAgICAgIC8qIG51bWJlciBvZiB2YWxpZCBieXRlcyBhaGVhZCBpbiB3aW5kb3cgKi9cblxuICB0aGlzLnByZXZfbGVuZ3RoID0gMDtcbiAgLyogTGVuZ3RoIG9mIHRoZSBiZXN0IG1hdGNoIGF0IHByZXZpb3VzIHN0ZXAuIE1hdGNoZXMgbm90IGdyZWF0ZXIgdGhhbiB0aGlzXG4gICAqIGFyZSBkaXNjYXJkZWQuIFRoaXMgaXMgdXNlZCBpbiB0aGUgbGF6eSBtYXRjaCBldmFsdWF0aW9uLlxuICAgKi9cblxuICB0aGlzLm1heF9jaGFpbl9sZW5ndGggPSAwO1xuICAvKiBUbyBzcGVlZCB1cCBkZWZsYXRpb24sIGhhc2ggY2hhaW5zIGFyZSBuZXZlciBzZWFyY2hlZCBiZXlvbmQgdGhpc1xuICAgKiBsZW5ndGguICBBIGhpZ2hlciBsaW1pdCBpbXByb3ZlcyBjb21wcmVzc2lvbiByYXRpbyBidXQgZGVncmFkZXMgdGhlXG4gICAqIHNwZWVkLlxuICAgKi9cblxuICB0aGlzLm1heF9sYXp5X21hdGNoID0gMDtcbiAgLyogQXR0ZW1wdCB0byBmaW5kIGEgYmV0dGVyIG1hdGNoIG9ubHkgd2hlbiB0aGUgY3VycmVudCBtYXRjaCBpcyBzdHJpY3RseVxuICAgKiBzbWFsbGVyIHRoYW4gdGhpcyB2YWx1ZS4gVGhpcyBtZWNoYW5pc20gaXMgdXNlZCBvbmx5IGZvciBjb21wcmVzc2lvblxuICAgKiBsZXZlbHMgPj0gNC5cbiAgICovXG4gIC8vIFRoYXQncyBhbGlhcyB0byBtYXhfbGF6eV9tYXRjaCwgZG9uJ3QgdXNlIGRpcmVjdGx5XG4gIC8vdGhpcy5tYXhfaW5zZXJ0X2xlbmd0aCA9IDA7XG4gIC8qIEluc2VydCBuZXcgc3RyaW5ncyBpbiB0aGUgaGFzaCB0YWJsZSBvbmx5IGlmIHRoZSBtYXRjaCBsZW5ndGggaXMgbm90XG4gICAqIGdyZWF0ZXIgdGhhbiB0aGlzIGxlbmd0aC4gVGhpcyBzYXZlcyB0aW1lIGJ1dCBkZWdyYWRlcyBjb21wcmVzc2lvbi5cbiAgICogbWF4X2luc2VydF9sZW5ndGggaXMgdXNlZCBvbmx5IGZvciBjb21wcmVzc2lvbiBsZXZlbHMgPD0gMy5cbiAgICovXG5cbiAgdGhpcy5sZXZlbCA9IDA7ICAgICAvKiBjb21wcmVzc2lvbiBsZXZlbCAoMS4uOSkgKi9cbiAgdGhpcy5zdHJhdGVneSA9IDA7ICAvKiBmYXZvciBvciBmb3JjZSBIdWZmbWFuIGNvZGluZyovXG5cbiAgdGhpcy5nb29kX21hdGNoID0gMDtcbiAgLyogVXNlIGEgZmFzdGVyIHNlYXJjaCB3aGVuIHRoZSBwcmV2aW91cyBtYXRjaCBpcyBsb25nZXIgdGhhbiB0aGlzICovXG5cbiAgdGhpcy5uaWNlX21hdGNoID0gMDsgLyogU3RvcCBzZWFyY2hpbmcgd2hlbiBjdXJyZW50IG1hdGNoIGV4Y2VlZHMgdGhpcyAqL1xuXG4gICAgICAgICAgICAgIC8qIHVzZWQgYnkgdHJlZXMuYzogKi9cblxuICAvKiBEaWRuJ3QgdXNlIGN0X2RhdGEgdHlwZWRlZiBiZWxvdyB0byBzdXBwcmVzcyBjb21waWxlciB3YXJuaW5nICovXG5cbiAgLy8gc3RydWN0IGN0X2RhdGFfcyBkeW5fbHRyZWVbSEVBUF9TSVpFXTsgICAvKiBsaXRlcmFsIGFuZCBsZW5ndGggdHJlZSAqL1xuICAvLyBzdHJ1Y3QgY3RfZGF0YV9zIGR5bl9kdHJlZVsyKkRfQ09ERVMrMV07IC8qIGRpc3RhbmNlIHRyZWUgKi9cbiAgLy8gc3RydWN0IGN0X2RhdGFfcyBibF90cmVlWzIqQkxfQ09ERVMrMV07ICAvKiBIdWZmbWFuIHRyZWUgZm9yIGJpdCBsZW5ndGhzICovXG5cbiAgLy8gVXNlIGZsYXQgYXJyYXkgb2YgRE9VQkxFIHNpemUsIHdpdGggaW50ZXJsZWF2ZWQgZmF0YSxcbiAgLy8gYmVjYXVzZSBKUyBkb2VzIG5vdCBzdXBwb3J0IGVmZmVjdGl2ZVxuICB0aGlzLmR5bl9sdHJlZSAgPSBuZXcgdXRpbHMuQnVmMTYoSEVBUF9TSVpFICogMik7XG4gIHRoaXMuZHluX2R0cmVlICA9IG5ldyB1dGlscy5CdWYxNigoMiAqIERfQ09ERVMgKyAxKSAqIDIpO1xuICB0aGlzLmJsX3RyZWUgICAgPSBuZXcgdXRpbHMuQnVmMTYoKDIgKiBCTF9DT0RFUyArIDEpICogMik7XG4gIHplcm8odGhpcy5keW5fbHRyZWUpO1xuICB6ZXJvKHRoaXMuZHluX2R0cmVlKTtcbiAgemVybyh0aGlzLmJsX3RyZWUpO1xuXG4gIHRoaXMubF9kZXNjICAgPSBudWxsOyAgICAgICAgIC8qIGRlc2MuIGZvciBsaXRlcmFsIHRyZWUgKi9cbiAgdGhpcy5kX2Rlc2MgICA9IG51bGw7ICAgICAgICAgLyogZGVzYy4gZm9yIGRpc3RhbmNlIHRyZWUgKi9cbiAgdGhpcy5ibF9kZXNjICA9IG51bGw7ICAgICAgICAgLyogZGVzYy4gZm9yIGJpdCBsZW5ndGggdHJlZSAqL1xuXG4gIC8vdXNoIGJsX2NvdW50W01BWF9CSVRTKzFdO1xuICB0aGlzLmJsX2NvdW50ID0gbmV3IHV0aWxzLkJ1ZjE2KE1BWF9CSVRTICsgMSk7XG4gIC8qIG51bWJlciBvZiBjb2RlcyBhdCBlYWNoIGJpdCBsZW5ndGggZm9yIGFuIG9wdGltYWwgdHJlZSAqL1xuXG4gIC8vaW50IGhlYXBbMipMX0NPREVTKzFdOyAgICAgIC8qIGhlYXAgdXNlZCB0byBidWlsZCB0aGUgSHVmZm1hbiB0cmVlcyAqL1xuICB0aGlzLmhlYXAgPSBuZXcgdXRpbHMuQnVmMTYoMiAqIExfQ09ERVMgKyAxKTsgIC8qIGhlYXAgdXNlZCB0byBidWlsZCB0aGUgSHVmZm1hbiB0cmVlcyAqL1xuICB6ZXJvKHRoaXMuaGVhcCk7XG5cbiAgdGhpcy5oZWFwX2xlbiA9IDA7ICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBoZWFwICovXG4gIHRoaXMuaGVhcF9tYXggPSAwOyAgICAgICAgICAgICAgIC8qIGVsZW1lbnQgb2YgbGFyZ2VzdCBmcmVxdWVuY3kgKi9cbiAgLyogVGhlIHNvbnMgb2YgaGVhcFtuXSBhcmUgaGVhcFsyKm5dIGFuZCBoZWFwWzIqbisxXS4gaGVhcFswXSBpcyBub3QgdXNlZC5cbiAgICogVGhlIHNhbWUgaGVhcCBhcnJheSBpcyB1c2VkIHRvIGJ1aWxkIGFsbCB0cmVlcy5cbiAgICovXG5cbiAgdGhpcy5kZXB0aCA9IG5ldyB1dGlscy5CdWYxNigyICogTF9DT0RFUyArIDEpOyAvL3VjaCBkZXB0aFsyKkxfQ09ERVMrMV07XG4gIHplcm8odGhpcy5kZXB0aCk7XG4gIC8qIERlcHRoIG9mIGVhY2ggc3VidHJlZSB1c2VkIGFzIHRpZSBicmVha2VyIGZvciB0cmVlcyBvZiBlcXVhbCBmcmVxdWVuY3lcbiAgICovXG5cbiAgdGhpcy5sX2J1ZiA9IDA7ICAgICAgICAgIC8qIGJ1ZmZlciBpbmRleCBmb3IgbGl0ZXJhbHMgb3IgbGVuZ3RocyAqL1xuXG4gIHRoaXMubGl0X2J1ZnNpemUgPSAwO1xuICAvKiBTaXplIG9mIG1hdGNoIGJ1ZmZlciBmb3IgbGl0ZXJhbHMvbGVuZ3Rocy4gIFRoZXJlIGFyZSA0IHJlYXNvbnMgZm9yXG4gICAqIGxpbWl0aW5nIGxpdF9idWZzaXplIHRvIDY0SzpcbiAgICogICAtIGZyZXF1ZW5jaWVzIGNhbiBiZSBrZXB0IGluIDE2IGJpdCBjb3VudGVyc1xuICAgKiAgIC0gaWYgY29tcHJlc3Npb24gaXMgbm90IHN1Y2Nlc3NmdWwgZm9yIHRoZSBmaXJzdCBibG9jaywgYWxsIGlucHV0XG4gICAqICAgICBkYXRhIGlzIHN0aWxsIGluIHRoZSB3aW5kb3cgc28gd2UgY2FuIHN0aWxsIGVtaXQgYSBzdG9yZWQgYmxvY2sgZXZlblxuICAgKiAgICAgd2hlbiBpbnB1dCBjb21lcyBmcm9tIHN0YW5kYXJkIGlucHV0LiAgKFRoaXMgY2FuIGFsc28gYmUgZG9uZSBmb3JcbiAgICogICAgIGFsbCBibG9ja3MgaWYgbGl0X2J1ZnNpemUgaXMgbm90IGdyZWF0ZXIgdGhhbiAzMksuKVxuICAgKiAgIC0gaWYgY29tcHJlc3Npb24gaXMgbm90IHN1Y2Nlc3NmdWwgZm9yIGEgZmlsZSBzbWFsbGVyIHRoYW4gNjRLLCB3ZSBjYW5cbiAgICogICAgIGV2ZW4gZW1pdCBhIHN0b3JlZCBmaWxlIGluc3RlYWQgb2YgYSBzdG9yZWQgYmxvY2sgKHNhdmluZyA1IGJ5dGVzKS5cbiAgICogICAgIFRoaXMgaXMgYXBwbGljYWJsZSBvbmx5IGZvciB6aXAgKG5vdCBnemlwIG9yIHpsaWIpLlxuICAgKiAgIC0gY3JlYXRpbmcgbmV3IEh1ZmZtYW4gdHJlZXMgbGVzcyBmcmVxdWVudGx5IG1heSBub3QgcHJvdmlkZSBmYXN0XG4gICAqICAgICBhZGFwdGF0aW9uIHRvIGNoYW5nZXMgaW4gdGhlIGlucHV0IGRhdGEgc3RhdGlzdGljcy4gKFRha2UgZm9yXG4gICAqICAgICBleGFtcGxlIGEgYmluYXJ5IGZpbGUgd2l0aCBwb29ybHkgY29tcHJlc3NpYmxlIGNvZGUgZm9sbG93ZWQgYnlcbiAgICogICAgIGEgaGlnaGx5IGNvbXByZXNzaWJsZSBzdHJpbmcgdGFibGUuKSBTbWFsbGVyIGJ1ZmZlciBzaXplcyBnaXZlXG4gICAqICAgICBmYXN0IGFkYXB0YXRpb24gYnV0IGhhdmUgb2YgY291cnNlIHRoZSBvdmVyaGVhZCBvZiB0cmFuc21pdHRpbmdcbiAgICogICAgIHRyZWVzIG1vcmUgZnJlcXVlbnRseS5cbiAgICogICAtIEkgY2FuJ3QgY291bnQgYWJvdmUgNFxuICAgKi9cblxuICB0aGlzLmxhc3RfbGl0ID0gMDsgICAgICAvKiBydW5uaW5nIGluZGV4IGluIGxfYnVmICovXG5cbiAgdGhpcy5kX2J1ZiA9IDA7XG4gIC8qIEJ1ZmZlciBpbmRleCBmb3IgZGlzdGFuY2VzLiBUbyBzaW1wbGlmeSB0aGUgY29kZSwgZF9idWYgYW5kIGxfYnVmIGhhdmVcbiAgICogdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1lbnRzLiBUbyB1c2UgZGlmZmVyZW50IGxlbmd0aHMsIGFuIGV4dHJhIGZsYWdcbiAgICogYXJyYXkgd291bGQgYmUgbmVjZXNzYXJ5LlxuICAgKi9cblxuICB0aGlzLm9wdF9sZW4gPSAwOyAgICAgICAvKiBiaXQgbGVuZ3RoIG9mIGN1cnJlbnQgYmxvY2sgd2l0aCBvcHRpbWFsIHRyZWVzICovXG4gIHRoaXMuc3RhdGljX2xlbiA9IDA7ICAgIC8qIGJpdCBsZW5ndGggb2YgY3VycmVudCBibG9jayB3aXRoIHN0YXRpYyB0cmVlcyAqL1xuICB0aGlzLm1hdGNoZXMgPSAwOyAgICAgICAvKiBudW1iZXIgb2Ygc3RyaW5nIG1hdGNoZXMgaW4gY3VycmVudCBibG9jayAqL1xuICB0aGlzLmluc2VydCA9IDA7ICAgICAgICAvKiBieXRlcyBhdCBlbmQgb2Ygd2luZG93IGxlZnQgdG8gaW5zZXJ0ICovXG5cblxuICB0aGlzLmJpX2J1ZiA9IDA7XG4gIC8qIE91dHB1dCBidWZmZXIuIGJpdHMgYXJlIGluc2VydGVkIHN0YXJ0aW5nIGF0IHRoZSBib3R0b20gKGxlYXN0XG4gICAqIHNpZ25pZmljYW50IGJpdHMpLlxuICAgKi9cbiAgdGhpcy5iaV92YWxpZCA9IDA7XG4gIC8qIE51bWJlciBvZiB2YWxpZCBiaXRzIGluIGJpX2J1Zi4gIEFsbCBiaXRzIGFib3ZlIHRoZSBsYXN0IHZhbGlkIGJpdFxuICAgKiBhcmUgYWx3YXlzIHplcm8uXG4gICAqL1xuXG4gIC8vIFVzZWQgZm9yIHdpbmRvdyBtZW1vcnkgaW5pdC4gV2Ugc2FmZWx5IGlnbm9yZSBpdCBmb3IgSlMuIFRoYXQgbWFrZXNcbiAgLy8gc2Vuc2Ugb25seSBmb3IgcG9pbnRlcnMgYW5kIG1lbW9yeSBjaGVjayB0b29scy5cbiAgLy90aGlzLmhpZ2hfd2F0ZXIgPSAwO1xuICAvKiBIaWdoIHdhdGVyIG1hcmsgb2Zmc2V0IGluIHdpbmRvdyBmb3IgaW5pdGlhbGl6ZWQgYnl0ZXMgLS0gYnl0ZXMgYWJvdmVcbiAgICogdGhpcyBhcmUgc2V0IHRvIHplcm8gaW4gb3JkZXIgdG8gYXZvaWQgbWVtb3J5IGNoZWNrIHdhcm5pbmdzIHdoZW5cbiAgICogbG9uZ2VzdCBtYXRjaCByb3V0aW5lcyBhY2Nlc3MgYnl0ZXMgcGFzdCB0aGUgaW5wdXQuICBUaGlzIGlzIHRoZW5cbiAgICogdXBkYXRlZCB0byB0aGUgbmV3IGhpZ2ggd2F0ZXIgbWFyay5cbiAgICovXG59XG5cblxuZnVuY3Rpb24gZGVmbGF0ZVJlc2V0S2VlcChzdHJtKSB7XG4gIHZhciBzO1xuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkge1xuICAgIHJldHVybiBlcnIoc3RybSwgWl9TVFJFQU1fRVJST1IpO1xuICB9XG5cbiAgc3RybS50b3RhbF9pbiA9IHN0cm0udG90YWxfb3V0ID0gMDtcbiAgc3RybS5kYXRhX3R5cGUgPSBaX1VOS05PV047XG5cbiAgcyA9IHN0cm0uc3RhdGU7XG4gIHMucGVuZGluZyA9IDA7XG4gIHMucGVuZGluZ19vdXQgPSAwO1xuXG4gIGlmIChzLndyYXAgPCAwKSB7XG4gICAgcy53cmFwID0gLXMud3JhcDtcbiAgICAvKiB3YXMgbWFkZSBuZWdhdGl2ZSBieSBkZWZsYXRlKC4uLiwgWl9GSU5JU0gpOyAqL1xuICB9XG4gIHMuc3RhdHVzID0gKHMud3JhcCA/IElOSVRfU1RBVEUgOiBCVVNZX1NUQVRFKTtcbiAgc3RybS5hZGxlciA9IChzLndyYXAgPT09IDIpID9cbiAgICAwICAvLyBjcmMzMigwLCBaX05VTEwsIDApXG4gIDpcbiAgICAxOyAvLyBhZGxlcjMyKDAsIFpfTlVMTCwgMClcbiAgcy5sYXN0X2ZsdXNoID0gWl9OT19GTFVTSDtcbiAgdHJlZXMuX3RyX2luaXQocyk7XG4gIHJldHVybiBaX09LO1xufVxuXG5cbmZ1bmN0aW9uIGRlZmxhdGVSZXNldChzdHJtKSB7XG4gIHZhciByZXQgPSBkZWZsYXRlUmVzZXRLZWVwKHN0cm0pO1xuICBpZiAocmV0ID09PSBaX09LKSB7XG4gICAgbG1faW5pdChzdHJtLnN0YXRlKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5cbmZ1bmN0aW9uIGRlZmxhdGVTZXRIZWFkZXIoc3RybSwgaGVhZCkge1xuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUpIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIGlmIChzdHJtLnN0YXRlLndyYXAgIT09IDIpIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIHN0cm0uc3RhdGUuZ3poZWFkID0gaGVhZDtcbiAgcmV0dXJuIFpfT0s7XG59XG5cblxuZnVuY3Rpb24gZGVmbGF0ZUluaXQyKHN0cm0sIGxldmVsLCBtZXRob2QsIHdpbmRvd0JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSkge1xuICBpZiAoIXN0cm0pIHsgLy8gPT09IFpfTlVMTFxuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuICB2YXIgd3JhcCA9IDE7XG5cbiAgaWYgKGxldmVsID09PSBaX0RFRkFVTFRfQ09NUFJFU1NJT04pIHtcbiAgICBsZXZlbCA9IDY7XG4gIH1cblxuICBpZiAod2luZG93Qml0cyA8IDApIHsgLyogc3VwcHJlc3MgemxpYiB3cmFwcGVyICovXG4gICAgd3JhcCA9IDA7XG4gICAgd2luZG93Qml0cyA9IC13aW5kb3dCaXRzO1xuICB9XG5cbiAgZWxzZSBpZiAod2luZG93Qml0cyA+IDE1KSB7XG4gICAgd3JhcCA9IDI7ICAgICAgICAgICAvKiB3cml0ZSBnemlwIHdyYXBwZXIgaW5zdGVhZCAqL1xuICAgIHdpbmRvd0JpdHMgLT0gMTY7XG4gIH1cblxuXG4gIGlmIChtZW1MZXZlbCA8IDEgfHwgbWVtTGV2ZWwgPiBNQVhfTUVNX0xFVkVMIHx8IG1ldGhvZCAhPT0gWl9ERUZMQVRFRCB8fFxuICAgIHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSB8fCBsZXZlbCA8IDAgfHwgbGV2ZWwgPiA5IHx8XG4gICAgc3RyYXRlZ3kgPCAwIHx8IHN0cmF0ZWd5ID4gWl9GSVhFRCkge1xuICAgIHJldHVybiBlcnIoc3RybSwgWl9TVFJFQU1fRVJST1IpO1xuICB9XG5cblxuICBpZiAod2luZG93Qml0cyA9PT0gOCkge1xuICAgIHdpbmRvd0JpdHMgPSA5O1xuICB9XG4gIC8qIHVudGlsIDI1Ni1ieXRlIHdpbmRvdyBidWcgZml4ZWQgKi9cblxuICB2YXIgcyA9IG5ldyBEZWZsYXRlU3RhdGUoKTtcblxuICBzdHJtLnN0YXRlID0gcztcbiAgcy5zdHJtID0gc3RybTtcblxuICBzLndyYXAgPSB3cmFwO1xuICBzLmd6aGVhZCA9IG51bGw7XG4gIHMud19iaXRzID0gd2luZG93Qml0cztcbiAgcy53X3NpemUgPSAxIDw8IHMud19iaXRzO1xuICBzLndfbWFzayA9IHMud19zaXplIC0gMTtcblxuICBzLmhhc2hfYml0cyA9IG1lbUxldmVsICsgNztcbiAgcy5oYXNoX3NpemUgPSAxIDw8IHMuaGFzaF9iaXRzO1xuICBzLmhhc2hfbWFzayA9IHMuaGFzaF9zaXplIC0gMTtcbiAgcy5oYXNoX3NoaWZ0ID0gfn4oKHMuaGFzaF9iaXRzICsgTUlOX01BVENIIC0gMSkgLyBNSU5fTUFUQ0gpO1xuXG4gIHMud2luZG93ID0gbmV3IHV0aWxzLkJ1Zjgocy53X3NpemUgKiAyKTtcbiAgcy5oZWFkID0gbmV3IHV0aWxzLkJ1ZjE2KHMuaGFzaF9zaXplKTtcbiAgcy5wcmV2ID0gbmV3IHV0aWxzLkJ1ZjE2KHMud19zaXplKTtcblxuICAvLyBEb24ndCBuZWVkIG1lbSBpbml0IG1hZ2ljIGZvciBKUy5cbiAgLy9zLmhpZ2hfd2F0ZXIgPSAwOyAgLyogbm90aGluZyB3cml0dGVuIHRvIHMtPndpbmRvdyB5ZXQgKi9cblxuICBzLmxpdF9idWZzaXplID0gMSA8PCAobWVtTGV2ZWwgKyA2KTsgLyogMTZLIGVsZW1lbnRzIGJ5IGRlZmF1bHQgKi9cblxuICBzLnBlbmRpbmdfYnVmX3NpemUgPSBzLmxpdF9idWZzaXplICogNDtcblxuICAvL292ZXJsYXkgPSAodXNoZiAqKSBaQUxMT0Moc3RybSwgcy0+bGl0X2J1ZnNpemUsIHNpemVvZih1c2gpKzIpO1xuICAvL3MtPnBlbmRpbmdfYnVmID0gKHVjaGYgKikgb3ZlcmxheTtcbiAgcy5wZW5kaW5nX2J1ZiA9IG5ldyB1dGlscy5CdWY4KHMucGVuZGluZ19idWZfc2l6ZSk7XG5cbiAgLy8gSXQgaXMgb2Zmc2V0IGZyb20gYHMucGVuZGluZ19idWZgIChzaXplIGlzIGBzLmxpdF9idWZzaXplICogMmApXG4gIC8vcy0+ZF9idWYgPSBvdmVybGF5ICsgcy0+bGl0X2J1ZnNpemUvc2l6ZW9mKHVzaCk7XG4gIHMuZF9idWYgPSAxICogcy5saXRfYnVmc2l6ZTtcblxuICAvL3MtPmxfYnVmID0gcy0+cGVuZGluZ19idWYgKyAoMStzaXplb2YodXNoKSkqcy0+bGl0X2J1ZnNpemU7XG4gIHMubF9idWYgPSAoMSArIDIpICogcy5saXRfYnVmc2l6ZTtcblxuICBzLmxldmVsID0gbGV2ZWw7XG4gIHMuc3RyYXRlZ3kgPSBzdHJhdGVneTtcbiAgcy5tZXRob2QgPSBtZXRob2Q7XG5cbiAgcmV0dXJuIGRlZmxhdGVSZXNldChzdHJtKTtcbn1cblxuZnVuY3Rpb24gZGVmbGF0ZUluaXQoc3RybSwgbGV2ZWwpIHtcbiAgcmV0dXJuIGRlZmxhdGVJbml0MihzdHJtLCBsZXZlbCwgWl9ERUZMQVRFRCwgTUFYX1dCSVRTLCBERUZfTUVNX0xFVkVMLCBaX0RFRkFVTFRfU1RSQVRFR1kpO1xufVxuXG5cbmZ1bmN0aW9uIGRlZmxhdGUoc3RybSwgZmx1c2gpIHtcbiAgdmFyIG9sZF9mbHVzaCwgcztcbiAgdmFyIGJlZywgdmFsOyAvLyBmb3IgZ3ppcCBoZWFkZXIgd3JpdGUgb25seVxuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSB8fFxuICAgIGZsdXNoID4gWl9CTE9DSyB8fCBmbHVzaCA8IDApIHtcbiAgICByZXR1cm4gc3RybSA/IGVycihzdHJtLCBaX1NUUkVBTV9FUlJPUikgOiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuXG4gIHMgPSBzdHJtLnN0YXRlO1xuXG4gIGlmICghc3RybS5vdXRwdXQgfHxcbiAgICAgICghc3RybS5pbnB1dCAmJiBzdHJtLmF2YWlsX2luICE9PSAwKSB8fFxuICAgICAgKHMuc3RhdHVzID09PSBGSU5JU0hfU1RBVEUgJiYgZmx1c2ggIT09IFpfRklOSVNIKSkge1xuICAgIHJldHVybiBlcnIoc3RybSwgKHN0cm0uYXZhaWxfb3V0ID09PSAwKSA/IFpfQlVGX0VSUk9SIDogWl9TVFJFQU1fRVJST1IpO1xuICB9XG5cbiAgcy5zdHJtID0gc3RybTsgLyoganVzdCBpbiBjYXNlICovXG4gIG9sZF9mbHVzaCA9IHMubGFzdF9mbHVzaDtcbiAgcy5sYXN0X2ZsdXNoID0gZmx1c2g7XG5cbiAgLyogV3JpdGUgdGhlIGhlYWRlciAqL1xuICBpZiAocy5zdGF0dXMgPT09IElOSVRfU1RBVEUpIHtcblxuICAgIGlmIChzLndyYXAgPT09IDIpIHsgLy8gR1pJUCBoZWFkZXJcbiAgICAgIHN0cm0uYWRsZXIgPSAwOyAgLy9jcmMzMigwTCwgWl9OVUxMLCAwKTtcbiAgICAgIHB1dF9ieXRlKHMsIDMxKTtcbiAgICAgIHB1dF9ieXRlKHMsIDEzOSk7XG4gICAgICBwdXRfYnl0ZShzLCA4KTtcbiAgICAgIGlmICghcy5nemhlYWQpIHsgLy8gcy0+Z3poZWFkID09IFpfTlVMTFxuICAgICAgICBwdXRfYnl0ZShzLCAwKTtcbiAgICAgICAgcHV0X2J5dGUocywgMCk7XG4gICAgICAgIHB1dF9ieXRlKHMsIDApO1xuICAgICAgICBwdXRfYnl0ZShzLCAwKTtcbiAgICAgICAgcHV0X2J5dGUocywgMCk7XG4gICAgICAgIHB1dF9ieXRlKHMsIHMubGV2ZWwgPT09IDkgPyAyIDpcbiAgICAgICAgICAgICAgICAgICAgKHMuc3RyYXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy5sZXZlbCA8IDIgP1xuICAgICAgICAgICAgICAgICAgICAgNCA6IDApKTtcbiAgICAgICAgcHV0X2J5dGUocywgT1NfQ09ERSk7XG4gICAgICAgIHMuc3RhdHVzID0gQlVTWV9TVEFURTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGV4dCA/IDEgOiAwKSArXG4gICAgICAgICAgICAgICAgICAgIChzLmd6aGVhZC5oY3JjID8gMiA6IDApICtcbiAgICAgICAgICAgICAgICAgICAgKCFzLmd6aGVhZC5leHRyYSA/IDAgOiA0KSArXG4gICAgICAgICAgICAgICAgICAgICghcy5nemhlYWQubmFtZSA/IDAgOiA4KSArXG4gICAgICAgICAgICAgICAgICAgICghcy5nemhlYWQuY29tbWVudCA/IDAgOiAxNilcbiAgICAgICAgKTtcbiAgICAgICAgcHV0X2J5dGUocywgcy5nemhlYWQudGltZSAmIDB4ZmYpO1xuICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGltZSA+PiA4KSAmIDB4ZmYpO1xuICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGltZSA+PiAxNikgJiAweGZmKTtcbiAgICAgICAgcHV0X2J5dGUocywgKHMuZ3poZWFkLnRpbWUgPj4gMjQpICYgMHhmZik7XG4gICAgICAgIHB1dF9ieXRlKHMsIHMubGV2ZWwgPT09IDkgPyAyIDpcbiAgICAgICAgICAgICAgICAgICAgKHMuc3RyYXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy5sZXZlbCA8IDIgP1xuICAgICAgICAgICAgICAgICAgICAgNCA6IDApKTtcbiAgICAgICAgcHV0X2J5dGUocywgcy5nemhlYWQub3MgJiAweGZmKTtcbiAgICAgICAgaWYgKHMuZ3poZWFkLmV4dHJhICYmIHMuZ3poZWFkLmV4dHJhLmxlbmd0aCkge1xuICAgICAgICAgIHB1dF9ieXRlKHMsIHMuZ3poZWFkLmV4dHJhLmxlbmd0aCAmIDB4ZmYpO1xuICAgICAgICAgIHB1dF9ieXRlKHMsIChzLmd6aGVhZC5leHRyYS5sZW5ndGggPj4gOCkgJiAweGZmKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocy5nemhlYWQuaGNyYykge1xuICAgICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcsIDApO1xuICAgICAgICB9XG4gICAgICAgIHMuZ3ppbmRleCA9IDA7XG4gICAgICAgIHMuc3RhdHVzID0gRVhUUkFfU1RBVEU7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgLy8gREVGTEFURSBoZWFkZXJcbiAgICB7XG4gICAgICB2YXIgaGVhZGVyID0gKFpfREVGTEFURUQgKyAoKHMud19iaXRzIC0gOCkgPDwgNCkpIDw8IDg7XG4gICAgICB2YXIgbGV2ZWxfZmxhZ3MgPSAtMTtcblxuICAgICAgaWYgKHMuc3RyYXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy5sZXZlbCA8IDIpIHtcbiAgICAgICAgbGV2ZWxfZmxhZ3MgPSAwO1xuICAgICAgfSBlbHNlIGlmIChzLmxldmVsIDwgNikge1xuICAgICAgICBsZXZlbF9mbGFncyA9IDE7XG4gICAgICB9IGVsc2UgaWYgKHMubGV2ZWwgPT09IDYpIHtcbiAgICAgICAgbGV2ZWxfZmxhZ3MgPSAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV2ZWxfZmxhZ3MgPSAzO1xuICAgICAgfVxuICAgICAgaGVhZGVyIHw9IChsZXZlbF9mbGFncyA8PCA2KTtcbiAgICAgIGlmIChzLnN0cnN0YXJ0ICE9PSAwKSB7IGhlYWRlciB8PSBQUkVTRVRfRElDVDsgfVxuICAgICAgaGVhZGVyICs9IDMxIC0gKGhlYWRlciAlIDMxKTtcblxuICAgICAgcy5zdGF0dXMgPSBCVVNZX1NUQVRFO1xuICAgICAgcHV0U2hvcnRNU0IocywgaGVhZGVyKTtcblxuICAgICAgLyogU2F2ZSB0aGUgYWRsZXIzMiBvZiB0aGUgcHJlc2V0IGRpY3Rpb25hcnk6ICovXG4gICAgICBpZiAocy5zdHJzdGFydCAhPT0gMCkge1xuICAgICAgICBwdXRTaG9ydE1TQihzLCBzdHJtLmFkbGVyID4+PiAxNik7XG4gICAgICAgIHB1dFNob3J0TVNCKHMsIHN0cm0uYWRsZXIgJiAweGZmZmYpO1xuICAgICAgfVxuICAgICAgc3RybS5hZGxlciA9IDE7IC8vIGFkbGVyMzIoMEwsIFpfTlVMTCwgMCk7XG4gICAgfVxuICB9XG5cbi8vI2lmZGVmIEdaSVBcbiAgaWYgKHMuc3RhdHVzID09PSBFWFRSQV9TVEFURSkge1xuICAgIGlmIChzLmd6aGVhZC5leHRyYS8qICE9IFpfTlVMTCovKSB7XG4gICAgICBiZWcgPSBzLnBlbmRpbmc7ICAvKiBzdGFydCBvZiBieXRlcyB0byB1cGRhdGUgY3JjICovXG5cbiAgICAgIHdoaWxlIChzLmd6aW5kZXggPCAocy5nemhlYWQuZXh0cmEubGVuZ3RoICYgMHhmZmZmKSkge1xuICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHtcbiAgICAgICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gICAgICAgICAgYmVnID0gcy5wZW5kaW5nO1xuICAgICAgICAgIGlmIChzLnBlbmRpbmcgPT09IHMucGVuZGluZ19idWZfc2l6ZSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHB1dF9ieXRlKHMsIHMuZ3poZWFkLmV4dHJhW3MuZ3ppbmRleF0gJiAweGZmKTtcbiAgICAgICAgcy5nemluZGV4Kys7XG4gICAgICB9XG4gICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHtcbiAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTtcbiAgICAgIH1cbiAgICAgIGlmIChzLmd6aW5kZXggPT09IHMuZ3poZWFkLmV4dHJhLmxlbmd0aCkge1xuICAgICAgICBzLmd6aW5kZXggPSAwO1xuICAgICAgICBzLnN0YXR1cyA9IE5BTUVfU1RBVEU7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcy5zdGF0dXMgPSBOQU1FX1NUQVRFO1xuICAgIH1cbiAgfVxuICBpZiAocy5zdGF0dXMgPT09IE5BTUVfU1RBVEUpIHtcbiAgICBpZiAocy5nemhlYWQubmFtZS8qICE9IFpfTlVMTCovKSB7XG4gICAgICBiZWcgPSBzLnBlbmRpbmc7ICAvKiBzdGFydCBvZiBieXRlcyB0byB1cGRhdGUgY3JjICovXG4gICAgICAvL2ludCB2YWw7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgICAgaWYgKHMuZ3poZWFkLmhjcmMgJiYgcy5wZW5kaW5nID4gYmVnKSB7XG4gICAgICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nIC0gYmVnLCBiZWcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pO1xuICAgICAgICAgIGJlZyA9IHMucGVuZGluZztcbiAgICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgICAgIHZhbCA9IDE7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gSlMgc3BlY2lmaWM6IGxpdHRsZSBtYWdpYyB0byBhZGQgemVybyB0ZXJtaW5hdG9yIHRvIGVuZCBvZiBzdHJpbmdcbiAgICAgICAgaWYgKHMuZ3ppbmRleCA8IHMuZ3poZWFkLm5hbWUubGVuZ3RoKSB7XG4gICAgICAgICAgdmFsID0gcy5nemhlYWQubmFtZS5jaGFyQ29kZUF0KHMuZ3ppbmRleCsrKSAmIDB4ZmY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICBwdXRfYnl0ZShzLCB2YWwpO1xuICAgICAgfSB3aGlsZSAodmFsICE9PSAwKTtcblxuICAgICAgaWYgKHMuZ3poZWFkLmhjcmMgJiYgcy5wZW5kaW5nID4gYmVnKSB7XG4gICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7XG4gICAgICB9XG4gICAgICBpZiAodmFsID09PSAwKSB7XG4gICAgICAgIHMuZ3ppbmRleCA9IDA7XG4gICAgICAgIHMuc3RhdHVzID0gQ09NTUVOVF9TVEFURTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBzLnN0YXR1cyA9IENPTU1FTlRfU1RBVEU7XG4gICAgfVxuICB9XG4gIGlmIChzLnN0YXR1cyA9PT0gQ09NTUVOVF9TVEFURSkge1xuICAgIGlmIChzLmd6aGVhZC5jb21tZW50LyogIT0gWl9OVUxMKi8pIHtcbiAgICAgIGJlZyA9IHMucGVuZGluZzsgIC8qIHN0YXJ0IG9mIGJ5dGVzIHRvIHVwZGF0ZSBjcmMgKi9cbiAgICAgIC8vaW50IHZhbDtcblxuICAgICAgZG8ge1xuICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHtcbiAgICAgICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gICAgICAgICAgYmVnID0gcy5wZW5kaW5nO1xuICAgICAgICAgIGlmIChzLnBlbmRpbmcgPT09IHMucGVuZGluZ19idWZfc2l6ZSkge1xuICAgICAgICAgICAgdmFsID0gMTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBKUyBzcGVjaWZpYzogbGl0dGxlIG1hZ2ljIHRvIGFkZCB6ZXJvIHRlcm1pbmF0b3IgdG8gZW5kIG9mIHN0cmluZ1xuICAgICAgICBpZiAocy5nemluZGV4IDwgcy5nemhlYWQuY29tbWVudC5sZW5ndGgpIHtcbiAgICAgICAgICB2YWwgPSBzLmd6aGVhZC5jb21tZW50LmNoYXJDb2RlQXQocy5nemluZGV4KyspICYgMHhmZjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWwgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHB1dF9ieXRlKHMsIHZhbCk7XG4gICAgICB9IHdoaWxlICh2YWwgIT09IDApO1xuXG4gICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHtcbiAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWwgPT09IDApIHtcbiAgICAgICAgcy5zdGF0dXMgPSBIQ1JDX1NUQVRFO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHMuc3RhdHVzID0gSENSQ19TVEFURTtcbiAgICB9XG4gIH1cbiAgaWYgKHMuc3RhdHVzID09PSBIQ1JDX1NUQVRFKSB7XG4gICAgaWYgKHMuZ3poZWFkLmhjcmMpIHtcbiAgICAgIGlmIChzLnBlbmRpbmcgKyAyID4gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gICAgICB9XG4gICAgICBpZiAocy5wZW5kaW5nICsgMiA8PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgcHV0X2J5dGUocywgc3RybS5hZGxlciAmIDB4ZmYpO1xuICAgICAgICBwdXRfYnl0ZShzLCAoc3RybS5hZGxlciA+PiA4KSAmIDB4ZmYpO1xuICAgICAgICBzdHJtLmFkbGVyID0gMDsgLy9jcmMzMigwTCwgWl9OVUxMLCAwKTtcbiAgICAgICAgcy5zdGF0dXMgPSBCVVNZX1NUQVRFO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHMuc3RhdHVzID0gQlVTWV9TVEFURTtcbiAgICB9XG4gIH1cbi8vI2VuZGlmXG5cbiAgLyogRmx1c2ggYXMgbXVjaCBwZW5kaW5nIG91dHB1dCBhcyBwb3NzaWJsZSAqL1xuICBpZiAocy5wZW5kaW5nICE9PSAwKSB7XG4gICAgZmx1c2hfcGVuZGluZyhzdHJtKTtcbiAgICBpZiAoc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgIC8qIFNpbmNlIGF2YWlsX291dCBpcyAwLCBkZWZsYXRlIHdpbGwgYmUgY2FsbGVkIGFnYWluIHdpdGhcbiAgICAgICAqIG1vcmUgb3V0cHV0IHNwYWNlLCBidXQgcG9zc2libHkgd2l0aCBib3RoIHBlbmRpbmcgYW5kXG4gICAgICAgKiBhdmFpbF9pbiBlcXVhbCB0byB6ZXJvLiBUaGVyZSB3b24ndCBiZSBhbnl0aGluZyB0byBkbyxcbiAgICAgICAqIGJ1dCB0aGlzIGlzIG5vdCBhbiBlcnJvciBzaXR1YXRpb24gc28gbWFrZSBzdXJlIHdlXG4gICAgICAgKiByZXR1cm4gT0sgaW5zdGVhZCBvZiBCVUZfRVJST1IgYXQgbmV4dCBjYWxsIG9mIGRlZmxhdGU6XG4gICAgICAgKi9cbiAgICAgIHMubGFzdF9mbHVzaCA9IC0xO1xuICAgICAgcmV0dXJuIFpfT0s7XG4gICAgfVxuXG4gICAgLyogTWFrZSBzdXJlIHRoZXJlIGlzIHNvbWV0aGluZyB0byBkbyBhbmQgYXZvaWQgZHVwbGljYXRlIGNvbnNlY3V0aXZlXG4gICAgICogZmx1c2hlcy4gRm9yIHJlcGVhdGVkIGFuZCB1c2VsZXNzIGNhbGxzIHdpdGggWl9GSU5JU0gsIHdlIGtlZXBcbiAgICAgKiByZXR1cm5pbmcgWl9TVFJFQU1fRU5EIGluc3RlYWQgb2YgWl9CVUZfRVJST1IuXG4gICAgICovXG4gIH0gZWxzZSBpZiAoc3RybS5hdmFpbF9pbiA9PT0gMCAmJiByYW5rKGZsdXNoKSA8PSByYW5rKG9sZF9mbHVzaCkgJiZcbiAgICBmbHVzaCAhPT0gWl9GSU5JU0gpIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIFpfQlVGX0VSUk9SKTtcbiAgfVxuXG4gIC8qIFVzZXIgbXVzdCBub3QgcHJvdmlkZSBtb3JlIGlucHV0IGFmdGVyIHRoZSBmaXJzdCBGSU5JU0g6ICovXG4gIGlmIChzLnN0YXR1cyA9PT0gRklOSVNIX1NUQVRFICYmIHN0cm0uYXZhaWxfaW4gIT09IDApIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIFpfQlVGX0VSUk9SKTtcbiAgfVxuXG4gIC8qIFN0YXJ0IGEgbmV3IGJsb2NrIG9yIGNvbnRpbnVlIHRoZSBjdXJyZW50IG9uZS5cbiAgICovXG4gIGlmIChzdHJtLmF2YWlsX2luICE9PSAwIHx8IHMubG9va2FoZWFkICE9PSAwIHx8XG4gICAgKGZsdXNoICE9PSBaX05PX0ZMVVNIICYmIHMuc3RhdHVzICE9PSBGSU5JU0hfU1RBVEUpKSB7XG4gICAgdmFyIGJzdGF0ZSA9IChzLnN0cmF0ZWd5ID09PSBaX0hVRkZNQU5fT05MWSkgPyBkZWZsYXRlX2h1ZmYocywgZmx1c2gpIDpcbiAgICAgIChzLnN0cmF0ZWd5ID09PSBaX1JMRSA/IGRlZmxhdGVfcmxlKHMsIGZsdXNoKSA6XG4gICAgICAgIGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0uZnVuYyhzLCBmbHVzaCkpO1xuXG4gICAgaWYgKGJzdGF0ZSA9PT0gQlNfRklOSVNIX1NUQVJURUQgfHwgYnN0YXRlID09PSBCU19GSU5JU0hfRE9ORSkge1xuICAgICAgcy5zdGF0dXMgPSBGSU5JU0hfU1RBVEU7XG4gICAgfVxuICAgIGlmIChic3RhdGUgPT09IEJTX05FRURfTU9SRSB8fCBic3RhdGUgPT09IEJTX0ZJTklTSF9TVEFSVEVEKSB7XG4gICAgICBpZiAoc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcy5sYXN0X2ZsdXNoID0gLTE7XG4gICAgICAgIC8qIGF2b2lkIEJVRl9FUlJPUiBuZXh0IGNhbGwsIHNlZSBhYm92ZSAqL1xuICAgICAgfVxuICAgICAgcmV0dXJuIFpfT0s7XG4gICAgICAvKiBJZiBmbHVzaCAhPSBaX05PX0ZMVVNIICYmIGF2YWlsX291dCA9PSAwLCB0aGUgbmV4dCBjYWxsXG4gICAgICAgKiBvZiBkZWZsYXRlIHNob3VsZCB1c2UgdGhlIHNhbWUgZmx1c2ggcGFyYW1ldGVyIHRvIG1ha2Ugc3VyZVxuICAgICAgICogdGhhdCB0aGUgZmx1c2ggaXMgY29tcGxldGUuIFNvIHdlIGRvbid0IGhhdmUgdG8gb3V0cHV0IGFuXG4gICAgICAgKiBlbXB0eSBibG9jayBoZXJlLCB0aGlzIHdpbGwgYmUgZG9uZSBhdCBuZXh0IGNhbGwuIFRoaXMgYWxzb1xuICAgICAgICogZW5zdXJlcyB0aGF0IGZvciBhIHZlcnkgc21hbGwgb3V0cHV0IGJ1ZmZlciwgd2UgZW1pdCBhdCBtb3N0XG4gICAgICAgKiBvbmUgZW1wdHkgYmxvY2suXG4gICAgICAgKi9cbiAgICB9XG4gICAgaWYgKGJzdGF0ZSA9PT0gQlNfQkxPQ0tfRE9ORSkge1xuICAgICAgaWYgKGZsdXNoID09PSBaX1BBUlRJQUxfRkxVU0gpIHtcbiAgICAgICAgdHJlZXMuX3RyX2FsaWduKHMpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoZmx1c2ggIT09IFpfQkxPQ0spIHsgLyogRlVMTF9GTFVTSCBvciBTWU5DX0ZMVVNIICovXG5cbiAgICAgICAgdHJlZXMuX3RyX3N0b3JlZF9ibG9jayhzLCAwLCAwLCBmYWxzZSk7XG4gICAgICAgIC8qIEZvciBhIGZ1bGwgZmx1c2gsIHRoaXMgZW1wdHkgYmxvY2sgd2lsbCBiZSByZWNvZ25pemVkXG4gICAgICAgICAqIGFzIGEgc3BlY2lhbCBtYXJrZXIgYnkgaW5mbGF0ZV9zeW5jKCkuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoZmx1c2ggPT09IFpfRlVMTF9GTFVTSCkge1xuICAgICAgICAgIC8qKiogQ0xFQVJfSEFTSChzKTsgKioqLyAgICAgICAgICAgICAvKiBmb3JnZXQgaGlzdG9yeSAqL1xuICAgICAgICAgIHplcm8ocy5oZWFkKTsgLy8gRmlsbCB3aXRoIE5JTCAoPSAwKTtcblxuICAgICAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkge1xuICAgICAgICAgICAgcy5zdHJzdGFydCA9IDA7XG4gICAgICAgICAgICBzLmJsb2NrX3N0YXJ0ID0gMDtcbiAgICAgICAgICAgIHMuaW5zZXJ0ID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gICAgICBpZiAoc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcy5sYXN0X2ZsdXNoID0gLTE7IC8qIGF2b2lkIEJVRl9FUlJPUiBhdCBuZXh0IGNhbGwsIHNlZSBhYm92ZSAqL1xuICAgICAgICByZXR1cm4gWl9PSztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy9Bc3NlcnQoc3RybS0+YXZhaWxfb3V0ID4gMCwgXCJidWcyXCIpO1xuICAvL2lmIChzdHJtLmF2YWlsX291dCA8PSAwKSB7IHRocm93IG5ldyBFcnJvcihcImJ1ZzJcIik7fVxuXG4gIGlmIChmbHVzaCAhPT0gWl9GSU5JU0gpIHsgcmV0dXJuIFpfT0s7IH1cbiAgaWYgKHMud3JhcCA8PSAwKSB7IHJldHVybiBaX1NUUkVBTV9FTkQ7IH1cblxuICAvKiBXcml0ZSB0aGUgdHJhaWxlciAqL1xuICBpZiAocy53cmFwID09PSAyKSB7XG4gICAgcHV0X2J5dGUocywgc3RybS5hZGxlciAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIChzdHJtLmFkbGVyID4+IDgpICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgKHN0cm0uYWRsZXIgPj4gMTYpICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgKHN0cm0uYWRsZXIgPj4gMjQpICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgc3RybS50b3RhbF9pbiAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIChzdHJtLnRvdGFsX2luID4+IDgpICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgKHN0cm0udG90YWxfaW4gPj4gMTYpICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgKHN0cm0udG90YWxfaW4gPj4gMjQpICYgMHhmZik7XG4gIH1cbiAgZWxzZVxuICB7XG4gICAgcHV0U2hvcnRNU0Iocywgc3RybS5hZGxlciA+Pj4gMTYpO1xuICAgIHB1dFNob3J0TVNCKHMsIHN0cm0uYWRsZXIgJiAweGZmZmYpO1xuICB9XG5cbiAgZmx1c2hfcGVuZGluZyhzdHJtKTtcbiAgLyogSWYgYXZhaWxfb3V0IGlzIHplcm8sIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGNhbGwgZGVmbGF0ZSBhZ2FpblxuICAgKiB0byBmbHVzaCB0aGUgcmVzdC5cbiAgICovXG4gIGlmIChzLndyYXAgPiAwKSB7IHMud3JhcCA9IC1zLndyYXA7IH1cbiAgLyogd3JpdGUgdGhlIHRyYWlsZXIgb25seSBvbmNlISAqL1xuICByZXR1cm4gcy5wZW5kaW5nICE9PSAwID8gWl9PSyA6IFpfU1RSRUFNX0VORDtcbn1cblxuZnVuY3Rpb24gZGVmbGF0ZUVuZChzdHJtKSB7XG4gIHZhciBzdGF0dXM7XG5cbiAgaWYgKCFzdHJtLyo9PSBaX05VTEwqLyB8fCAhc3RybS5zdGF0ZS8qPT0gWl9OVUxMKi8pIHtcbiAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gIH1cblxuICBzdGF0dXMgPSBzdHJtLnN0YXRlLnN0YXR1cztcbiAgaWYgKHN0YXR1cyAhPT0gSU5JVF9TVEFURSAmJlxuICAgIHN0YXR1cyAhPT0gRVhUUkFfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IE5BTUVfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IENPTU1FTlRfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IEhDUkNfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IEJVU1lfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IEZJTklTSF9TVEFURVxuICApIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIFpfU1RSRUFNX0VSUk9SKTtcbiAgfVxuXG4gIHN0cm0uc3RhdGUgPSBudWxsO1xuXG4gIHJldHVybiBzdGF0dXMgPT09IEJVU1lfU1RBVEUgPyBlcnIoc3RybSwgWl9EQVRBX0VSUk9SKSA6IFpfT0s7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW5pdGlhbGl6ZXMgdGhlIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkgZnJvbSB0aGUgZ2l2ZW4gYnl0ZVxuICogc2VxdWVuY2Ugd2l0aG91dCBwcm9kdWNpbmcgYW55IGNvbXByZXNzZWQgb3V0cHV0LlxuICovXG5mdW5jdGlvbiBkZWZsYXRlU2V0RGljdGlvbmFyeShzdHJtLCBkaWN0aW9uYXJ5KSB7XG4gIHZhciBkaWN0TGVuZ3RoID0gZGljdGlvbmFyeS5sZW5ndGg7XG5cbiAgdmFyIHM7XG4gIHZhciBzdHIsIG47XG4gIHZhciB3cmFwO1xuICB2YXIgYXZhaWw7XG4gIHZhciBuZXh0O1xuICB2YXIgaW5wdXQ7XG4gIHZhciB0bXBEaWN0O1xuXG4gIGlmICghc3RybS8qPT0gWl9OVUxMKi8gfHwgIXN0cm0uc3RhdGUvKj09IFpfTlVMTCovKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgcyA9IHN0cm0uc3RhdGU7XG4gIHdyYXAgPSBzLndyYXA7XG5cbiAgaWYgKHdyYXAgPT09IDIgfHwgKHdyYXAgPT09IDEgJiYgcy5zdGF0dXMgIT09IElOSVRfU1RBVEUpIHx8IHMubG9va2FoZWFkKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgLyogd2hlbiB1c2luZyB6bGliIHdyYXBwZXJzLCBjb21wdXRlIEFkbGVyLTMyIGZvciBwcm92aWRlZCBkaWN0aW9uYXJ5ICovXG4gIGlmICh3cmFwID09PSAxKSB7XG4gICAgLyogYWRsZXIzMihzdHJtLT5hZGxlciwgZGljdGlvbmFyeSwgZGljdExlbmd0aCk7ICovXG4gICAgc3RybS5hZGxlciA9IGFkbGVyMzIoc3RybS5hZGxlciwgZGljdGlvbmFyeSwgZGljdExlbmd0aCwgMCk7XG4gIH1cblxuICBzLndyYXAgPSAwOyAgIC8qIGF2b2lkIGNvbXB1dGluZyBBZGxlci0zMiBpbiByZWFkX2J1ZiAqL1xuXG4gIC8qIGlmIGRpY3Rpb25hcnkgd291bGQgZmlsbCB3aW5kb3csIGp1c3QgcmVwbGFjZSB0aGUgaGlzdG9yeSAqL1xuICBpZiAoZGljdExlbmd0aCA+PSBzLndfc2l6ZSkge1xuICAgIGlmICh3cmFwID09PSAwKSB7ICAgICAgICAgICAgLyogYWxyZWFkeSBlbXB0eSBvdGhlcndpc2UgKi9cbiAgICAgIC8qKiogQ0xFQVJfSEFTSChzKTsgKioqL1xuICAgICAgemVybyhzLmhlYWQpOyAvLyBGaWxsIHdpdGggTklMICg9IDApO1xuICAgICAgcy5zdHJzdGFydCA9IDA7XG4gICAgICBzLmJsb2NrX3N0YXJ0ID0gMDtcbiAgICAgIHMuaW5zZXJ0ID0gMDtcbiAgICB9XG4gICAgLyogdXNlIHRoZSB0YWlsICovXG4gICAgLy8gZGljdGlvbmFyeSA9IGRpY3Rpb25hcnkuc2xpY2UoZGljdExlbmd0aCAtIHMud19zaXplKTtcbiAgICB0bXBEaWN0ID0gbmV3IHV0aWxzLkJ1Zjgocy53X3NpemUpO1xuICAgIHV0aWxzLmFycmF5U2V0KHRtcERpY3QsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGggLSBzLndfc2l6ZSwgcy53X3NpemUsIDApO1xuICAgIGRpY3Rpb25hcnkgPSB0bXBEaWN0O1xuICAgIGRpY3RMZW5ndGggPSBzLndfc2l6ZTtcbiAgfVxuICAvKiBpbnNlcnQgZGljdGlvbmFyeSBpbnRvIHdpbmRvdyBhbmQgaGFzaCAqL1xuICBhdmFpbCA9IHN0cm0uYXZhaWxfaW47XG4gIG5leHQgPSBzdHJtLm5leHRfaW47XG4gIGlucHV0ID0gc3RybS5pbnB1dDtcbiAgc3RybS5hdmFpbF9pbiA9IGRpY3RMZW5ndGg7XG4gIHN0cm0ubmV4dF9pbiA9IDA7XG4gIHN0cm0uaW5wdXQgPSBkaWN0aW9uYXJ5O1xuICBmaWxsX3dpbmRvdyhzKTtcbiAgd2hpbGUgKHMubG9va2FoZWFkID49IE1JTl9NQVRDSCkge1xuICAgIHN0ciA9IHMuc3Ryc3RhcnQ7XG4gICAgbiA9IHMubG9va2FoZWFkIC0gKE1JTl9NQVRDSCAtIDEpO1xuICAgIGRvIHtcbiAgICAgIC8qIFVQREFURV9IQVNIKHMsIHMtPmluc19oLCBzLT53aW5kb3dbc3RyICsgTUlOX01BVENILTFdKTsgKi9cbiAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3N0ciArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrO1xuXG4gICAgICBzLnByZXZbc3RyICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdO1xuXG4gICAgICBzLmhlYWRbcy5pbnNfaF0gPSBzdHI7XG4gICAgICBzdHIrKztcbiAgICB9IHdoaWxlICgtLW4pO1xuICAgIHMuc3Ryc3RhcnQgPSBzdHI7XG4gICAgcy5sb29rYWhlYWQgPSBNSU5fTUFUQ0ggLSAxO1xuICAgIGZpbGxfd2luZG93KHMpO1xuICB9XG4gIHMuc3Ryc3RhcnQgKz0gcy5sb29rYWhlYWQ7XG4gIHMuYmxvY2tfc3RhcnQgPSBzLnN0cnN0YXJ0O1xuICBzLmluc2VydCA9IHMubG9va2FoZWFkO1xuICBzLmxvb2thaGVhZCA9IDA7XG4gIHMubWF0Y2hfbGVuZ3RoID0gcy5wcmV2X2xlbmd0aCA9IE1JTl9NQVRDSCAtIDE7XG4gIHMubWF0Y2hfYXZhaWxhYmxlID0gMDtcbiAgc3RybS5uZXh0X2luID0gbmV4dDtcbiAgc3RybS5pbnB1dCA9IGlucHV0O1xuICBzdHJtLmF2YWlsX2luID0gYXZhaWw7XG4gIHMud3JhcCA9IHdyYXA7XG4gIHJldHVybiBaX09LO1xufVxuXG5cbmV4cG9ydHMuZGVmbGF0ZUluaXQgPSBkZWZsYXRlSW5pdDtcbmV4cG9ydHMuZGVmbGF0ZUluaXQyID0gZGVmbGF0ZUluaXQyO1xuZXhwb3J0cy5kZWZsYXRlUmVzZXQgPSBkZWZsYXRlUmVzZXQ7XG5leHBvcnRzLmRlZmxhdGVSZXNldEtlZXAgPSBkZWZsYXRlUmVzZXRLZWVwO1xuZXhwb3J0cy5kZWZsYXRlU2V0SGVhZGVyID0gZGVmbGF0ZVNldEhlYWRlcjtcbmV4cG9ydHMuZGVmbGF0ZSA9IGRlZmxhdGU7XG5leHBvcnRzLmRlZmxhdGVFbmQgPSBkZWZsYXRlRW5kO1xuZXhwb3J0cy5kZWZsYXRlU2V0RGljdGlvbmFyeSA9IGRlZmxhdGVTZXREaWN0aW9uYXJ5O1xuZXhwb3J0cy5kZWZsYXRlSW5mbyA9ICdwYWtvIGRlZmxhdGUgKGZyb20gTm9kZWNhIHByb2plY3QpJztcblxuLyogTm90IGltcGxlbWVudGVkXG5leHBvcnRzLmRlZmxhdGVCb3VuZCA9IGRlZmxhdGVCb3VuZDtcbmV4cG9ydHMuZGVmbGF0ZUNvcHkgPSBkZWZsYXRlQ29weTtcbmV4cG9ydHMuZGVmbGF0ZVBhcmFtcyA9IGRlZmxhdGVQYXJhbXM7XG5leHBvcnRzLmRlZmxhdGVQZW5kaW5nID0gZGVmbGF0ZVBlbmRpbmc7XG5leHBvcnRzLmRlZmxhdGVQcmltZSA9IGRlZmxhdGVQcmltZTtcbmV4cG9ydHMuZGVmbGF0ZVR1bmUgPSBkZWZsYXRlVHVuZTtcbiovXG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxuLy8gU2VlIHN0YXRlIGRlZnMgZnJvbSBpbmZsYXRlLmpzXG52YXIgQkFEID0gMzA7ICAgICAgIC8qIGdvdCBhIGRhdGEgZXJyb3IgLS0gcmVtYWluIGhlcmUgdW50aWwgcmVzZXQgKi9cbnZhciBUWVBFID0gMTI7ICAgICAgLyogaTogd2FpdGluZyBmb3IgdHlwZSBiaXRzLCBpbmNsdWRpbmcgbGFzdC1mbGFnIGJpdCAqL1xuXG4vKlxuICAgRGVjb2RlIGxpdGVyYWwsIGxlbmd0aCwgYW5kIGRpc3RhbmNlIGNvZGVzIGFuZCB3cml0ZSBvdXQgdGhlIHJlc3VsdGluZ1xuICAgbGl0ZXJhbCBhbmQgbWF0Y2ggYnl0ZXMgdW50aWwgZWl0aGVyIG5vdCBlbm91Z2ggaW5wdXQgb3Igb3V0cHV0IGlzXG4gICBhdmFpbGFibGUsIGFuIGVuZC1vZi1ibG9jayBpcyBlbmNvdW50ZXJlZCwgb3IgYSBkYXRhIGVycm9yIGlzIGVuY291bnRlcmVkLlxuICAgV2hlbiBsYXJnZSBlbm91Z2ggaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzIGFyZSBzdXBwbGllZCB0byBpbmZsYXRlKCksIGZvclxuICAgZXhhbXBsZSwgYSAxNksgaW5wdXQgYnVmZmVyIGFuZCBhIDY0SyBvdXRwdXQgYnVmZmVyLCBtb3JlIHRoYW4gOTUlIG9mIHRoZVxuICAgaW5mbGF0ZSBleGVjdXRpb24gdGltZSBpcyBzcGVudCBpbiB0aGlzIHJvdXRpbmUuXG5cbiAgIEVudHJ5IGFzc3VtcHRpb25zOlxuXG4gICAgICAgIHN0YXRlLm1vZGUgPT09IExFTlxuICAgICAgICBzdHJtLmF2YWlsX2luID49IDZcbiAgICAgICAgc3RybS5hdmFpbF9vdXQgPj0gMjU4XG4gICAgICAgIHN0YXJ0ID49IHN0cm0uYXZhaWxfb3V0XG4gICAgICAgIHN0YXRlLmJpdHMgPCA4XG5cbiAgIE9uIHJldHVybiwgc3RhdGUubW9kZSBpcyBvbmUgb2Y6XG5cbiAgICAgICAgTEVOIC0tIHJhbiBvdXQgb2YgZW5vdWdoIG91dHB1dCBzcGFjZSBvciBlbm91Z2ggYXZhaWxhYmxlIGlucHV0XG4gICAgICAgIFRZUEUgLS0gcmVhY2hlZCBlbmQgb2YgYmxvY2sgY29kZSwgaW5mbGF0ZSgpIHRvIGludGVycHJldCBuZXh0IGJsb2NrXG4gICAgICAgIEJBRCAtLSBlcnJvciBpbiBibG9jayBkYXRhXG5cbiAgIE5vdGVzOlxuXG4gICAgLSBUaGUgbWF4aW11bSBpbnB1dCBiaXRzIHVzZWQgYnkgYSBsZW5ndGgvZGlzdGFuY2UgcGFpciBpcyAxNSBiaXRzIGZvciB0aGVcbiAgICAgIGxlbmd0aCBjb2RlLCA1IGJpdHMgZm9yIHRoZSBsZW5ndGggZXh0cmEsIDE1IGJpdHMgZm9yIHRoZSBkaXN0YW5jZSBjb2RlLFxuICAgICAgYW5kIDEzIGJpdHMgZm9yIHRoZSBkaXN0YW5jZSBleHRyYS4gIFRoaXMgdG90YWxzIDQ4IGJpdHMsIG9yIHNpeCBieXRlcy5cbiAgICAgIFRoZXJlZm9yZSBpZiBzdHJtLmF2YWlsX2luID49IDYsIHRoZW4gdGhlcmUgaXMgZW5vdWdoIGlucHV0IHRvIGF2b2lkXG4gICAgICBjaGVja2luZyBmb3IgYXZhaWxhYmxlIGlucHV0IHdoaWxlIGRlY29kaW5nLlxuXG4gICAgLSBUaGUgbWF4aW11bSBieXRlcyB0aGF0IGEgc2luZ2xlIGxlbmd0aC9kaXN0YW5jZSBwYWlyIGNhbiBvdXRwdXQgaXMgMjU4XG4gICAgICBieXRlcywgd2hpY2ggaXMgdGhlIG1heGltdW0gbGVuZ3RoIHRoYXQgY2FuIGJlIGNvZGVkLiAgaW5mbGF0ZV9mYXN0KClcbiAgICAgIHJlcXVpcmVzIHN0cm0uYXZhaWxfb3V0ID49IDI1OCBmb3IgZWFjaCBsb29wIHRvIGF2b2lkIGNoZWNraW5nIGZvclxuICAgICAgb3V0cHV0IHNwYWNlLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluZmxhdGVfZmFzdChzdHJtLCBzdGFydCkge1xuICB2YXIgc3RhdGU7XG4gIHZhciBfaW47ICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLmlucHV0ICovXG4gIHZhciBsYXN0OyAgICAgICAgICAgICAgICAgICAvKiBoYXZlIGVub3VnaCBpbnB1dCB3aGlsZSBpbiA8IGxhc3QgKi9cbiAgdmFyIF9vdXQ7ICAgICAgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0ub3V0cHV0ICovXG4gIHZhciBiZWc7ICAgICAgICAgICAgICAgICAgICAvKiBpbmZsYXRlKCkncyBpbml0aWFsIHN0cm0ub3V0cHV0ICovXG4gIHZhciBlbmQ7ICAgICAgICAgICAgICAgICAgICAvKiB3aGlsZSBvdXQgPCBlbmQsIGVub3VnaCBzcGFjZSBhdmFpbGFibGUgKi9cbi8vI2lmZGVmIElORkxBVEVfU1RSSUNUXG4gIHZhciBkbWF4OyAgICAgICAgICAgICAgICAgICAvKiBtYXhpbXVtIGRpc3RhbmNlIGZyb20gemxpYiBoZWFkZXIgKi9cbi8vI2VuZGlmXG4gIHZhciB3c2l6ZTsgICAgICAgICAgICAgICAgICAvKiB3aW5kb3cgc2l6ZSBvciB6ZXJvIGlmIG5vdCB1c2luZyB3aW5kb3cgKi9cbiAgdmFyIHdoYXZlOyAgICAgICAgICAgICAgICAgIC8qIHZhbGlkIGJ5dGVzIGluIHRoZSB3aW5kb3cgKi9cbiAgdmFyIHduZXh0OyAgICAgICAgICAgICAgICAgIC8qIHdpbmRvdyB3cml0ZSBpbmRleCAqL1xuICAvLyBVc2UgYHNfd2luZG93YCBpbnN0ZWFkIGB3aW5kb3dgLCBhdm9pZCBjb25mbGljdCB3aXRoIGluc3RydW1lbnRhdGlvbiB0b29sc1xuICB2YXIgc193aW5kb3c7ICAgICAgICAgICAgICAgLyogYWxsb2NhdGVkIHNsaWRpbmcgd2luZG93LCBpZiB3c2l6ZSAhPSAwICovXG4gIHZhciBob2xkOyAgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLmhvbGQgKi9cbiAgdmFyIGJpdHM7ICAgICAgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0uYml0cyAqL1xuICB2YXIgbGNvZGU7ICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5sZW5jb2RlICovXG4gIHZhciBkY29kZTsgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLmRpc3Rjb2RlICovXG4gIHZhciBsbWFzazsgICAgICAgICAgICAgICAgICAvKiBtYXNrIGZvciBmaXJzdCBsZXZlbCBvZiBsZW5ndGggY29kZXMgKi9cbiAgdmFyIGRtYXNrOyAgICAgICAgICAgICAgICAgIC8qIG1hc2sgZm9yIGZpcnN0IGxldmVsIG9mIGRpc3RhbmNlIGNvZGVzICovXG4gIHZhciBoZXJlOyAgICAgICAgICAgICAgICAgICAvKiByZXRyaWV2ZWQgdGFibGUgZW50cnkgKi9cbiAgdmFyIG9wOyAgICAgICAgICAgICAgICAgICAgIC8qIGNvZGUgYml0cywgb3BlcmF0aW9uLCBleHRyYSBiaXRzLCBvciAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIHdpbmRvdyBwb3NpdGlvbiwgd2luZG93IGJ5dGVzIHRvIGNvcHkgKi9cbiAgdmFyIGxlbjsgICAgICAgICAgICAgICAgICAgIC8qIG1hdGNoIGxlbmd0aCwgdW51c2VkIGJ5dGVzICovXG4gIHZhciBkaXN0OyAgICAgICAgICAgICAgICAgICAvKiBtYXRjaCBkaXN0YW5jZSAqL1xuICB2YXIgZnJvbTsgICAgICAgICAgICAgICAgICAgLyogd2hlcmUgdG8gY29weSBtYXRjaCBmcm9tICovXG4gIHZhciBmcm9tX3NvdXJjZTtcblxuXG4gIHZhciBpbnB1dCwgb3V0cHV0OyAvLyBKUyBzcGVjaWZpYywgYmVjYXVzZSB3ZSBoYXZlIG5vIHBvaW50ZXJzXG5cbiAgLyogY29weSBzdGF0ZSB0byBsb2NhbCB2YXJpYWJsZXMgKi9cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuICAvL2hlcmUgPSBzdGF0ZS5oZXJlO1xuICBfaW4gPSBzdHJtLm5leHRfaW47XG4gIGlucHV0ID0gc3RybS5pbnB1dDtcbiAgbGFzdCA9IF9pbiArIChzdHJtLmF2YWlsX2luIC0gNSk7XG4gIF9vdXQgPSBzdHJtLm5leHRfb3V0O1xuICBvdXRwdXQgPSBzdHJtLm91dHB1dDtcbiAgYmVnID0gX291dCAtIChzdGFydCAtIHN0cm0uYXZhaWxfb3V0KTtcbiAgZW5kID0gX291dCArIChzdHJtLmF2YWlsX291dCAtIDI1Nyk7XG4vLyNpZmRlZiBJTkZMQVRFX1NUUklDVFxuICBkbWF4ID0gc3RhdGUuZG1heDtcbi8vI2VuZGlmXG4gIHdzaXplID0gc3RhdGUud3NpemU7XG4gIHdoYXZlID0gc3RhdGUud2hhdmU7XG4gIHduZXh0ID0gc3RhdGUud25leHQ7XG4gIHNfd2luZG93ID0gc3RhdGUud2luZG93O1xuICBob2xkID0gc3RhdGUuaG9sZDtcbiAgYml0cyA9IHN0YXRlLmJpdHM7XG4gIGxjb2RlID0gc3RhdGUubGVuY29kZTtcbiAgZGNvZGUgPSBzdGF0ZS5kaXN0Y29kZTtcbiAgbG1hc2sgPSAoMSA8PCBzdGF0ZS5sZW5iaXRzKSAtIDE7XG4gIGRtYXNrID0gKDEgPDwgc3RhdGUuZGlzdGJpdHMpIC0gMTtcblxuXG4gIC8qIGRlY29kZSBsaXRlcmFscyBhbmQgbGVuZ3RoL2Rpc3RhbmNlcyB1bnRpbCBlbmQtb2YtYmxvY2sgb3Igbm90IGVub3VnaFxuICAgICBpbnB1dCBkYXRhIG9yIG91dHB1dCBzcGFjZSAqL1xuXG4gIHRvcDpcbiAgZG8ge1xuICAgIGlmIChiaXRzIDwgMTUpIHtcbiAgICAgIGhvbGQgKz0gaW5wdXRbX2luKytdIDw8IGJpdHM7XG4gICAgICBiaXRzICs9IDg7XG4gICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgYml0cyArPSA4O1xuICAgIH1cblxuICAgIGhlcmUgPSBsY29kZVtob2xkICYgbG1hc2tdO1xuXG4gICAgZG9sZW46XG4gICAgZm9yICg7OykgeyAvLyBHb3RvIGVtdWxhdGlvblxuICAgICAgb3AgPSBoZXJlID4+PiAyNC8qaGVyZS5iaXRzKi87XG4gICAgICBob2xkID4+Pj0gb3A7XG4gICAgICBiaXRzIC09IG9wO1xuICAgICAgb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZi8qaGVyZS5vcCovO1xuICAgICAgaWYgKG9wID09PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsaXRlcmFsICovXG4gICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCBoZXJlLnZhbCA+PSAweDIwICYmIGhlcmUudmFsIDwgMHg3ZiA/XG4gICAgICAgIC8vICAgICAgICBcImluZmxhdGU6ICAgICAgICAgbGl0ZXJhbCAnJWMnXFxuXCIgOlxuICAgICAgICAvLyAgICAgICAgXCJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgMHglMDJ4XFxuXCIsIGhlcmUudmFsKSk7XG4gICAgICAgIG91dHB1dFtfb3V0KytdID0gaGVyZSAmIDB4ZmZmZi8qaGVyZS52YWwqLztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKG9wICYgMTYpIHsgICAgICAgICAgICAgICAgICAgICAvKiBsZW5ndGggYmFzZSAqL1xuICAgICAgICBsZW4gPSBoZXJlICYgMHhmZmZmLypoZXJlLnZhbCovO1xuICAgICAgICBvcCAmPSAxNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZXh0cmEgYml0cyAqL1xuICAgICAgICBpZiAob3ApIHtcbiAgICAgICAgICBpZiAoYml0cyA8IG9wKSB7XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZW4gKz0gaG9sZCAmICgoMSA8PCBvcCkgLSAxKTtcbiAgICAgICAgICBob2xkID4+Pj0gb3A7XG4gICAgICAgICAgYml0cyAtPSBvcDtcbiAgICAgICAgfVxuICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICAgIGxlbmd0aCAldVxcblwiLCBsZW4pKTtcbiAgICAgICAgaWYgKGJpdHMgPCAxNSkge1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbX2luKytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbX2luKytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICB9XG4gICAgICAgIGhlcmUgPSBkY29kZVtob2xkICYgZG1hc2tdO1xuXG4gICAgICAgIGRvZGlzdDpcbiAgICAgICAgZm9yICg7OykgeyAvLyBnb3RvIGVtdWxhdGlvblxuICAgICAgICAgIG9wID0gaGVyZSA+Pj4gMjQvKmhlcmUuYml0cyovO1xuICAgICAgICAgIGhvbGQgPj4+PSBvcDtcbiAgICAgICAgICBiaXRzIC09IG9wO1xuICAgICAgICAgIG9wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmYvKmhlcmUub3AqLztcblxuICAgICAgICAgIGlmIChvcCAmIDE2KSB7ICAgICAgICAgICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhc2UgKi9cbiAgICAgICAgICAgIGRpc3QgPSBoZXJlICYgMHhmZmZmLypoZXJlLnZhbCovO1xuICAgICAgICAgICAgb3AgJj0gMTU7ICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZXh0cmEgYml0cyAqL1xuICAgICAgICAgICAgaWYgKGJpdHMgPCBvcCkge1xuICAgICAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgICAgIGlmIChiaXRzIDwgb3ApIHtcbiAgICAgICAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlzdCArPSBob2xkICYgKCgxIDw8IG9wKSAtIDEpO1xuLy8jaWZkZWYgSU5GTEFURV9TVFJJQ1RcbiAgICAgICAgICAgIGlmIChkaXN0ID4gZG1heCkge1xuICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayc7XG4gICAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICAgIGJyZWFrIHRvcDtcbiAgICAgICAgICAgIH1cbi8vI2VuZGlmXG4gICAgICAgICAgICBob2xkID4+Pj0gb3A7XG4gICAgICAgICAgICBiaXRzIC09IG9wO1xuICAgICAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBkaXN0YW5jZSAldVxcblwiLCBkaXN0KSk7XG4gICAgICAgICAgICBvcCA9IF9vdXQgLSBiZWc7ICAgICAgICAgICAgICAgIC8qIG1heCBkaXN0YW5jZSBpbiBvdXRwdXQgKi9cbiAgICAgICAgICAgIGlmIChkaXN0ID4gb3ApIHsgICAgICAgICAgICAgICAgLyogc2VlIGlmIGNvcHkgZnJvbSB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgb3AgPSBkaXN0IC0gb3A7ICAgICAgICAgICAgICAgLyogZGlzdGFuY2UgYmFjayBpbiB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgaWYgKG9wID4gd2hhdmUpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUuc2FuZSkge1xuICAgICAgICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2snO1xuICAgICAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrIHRvcDtcbiAgICAgICAgICAgICAgICB9XG5cbi8vICghKSBUaGlzIGJsb2NrIGlzIGRpc2FibGVkIGluIHpsaWIgZGVmYXVsdHMsXG4vLyBkb24ndCBlbmFibGUgaXQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5XG4vLyNpZmRlZiBJTkZMQVRFX0FMTE9XX0lOVkFMSURfRElTVEFOQ0VfVE9PRkFSX0FSUlJcbi8vICAgICAgICAgICAgICAgIGlmIChsZW4gPD0gb3AgLSB3aGF2ZSkge1xuLy8gICAgICAgICAgICAgICAgICBkbyB7XG4vLyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSAwO1xuLy8gICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLWxlbik7XG4vLyAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHRvcDtcbi8vICAgICAgICAgICAgICAgIH1cbi8vICAgICAgICAgICAgICAgIGxlbiAtPSBvcCAtIHdoYXZlO1xuLy8gICAgICAgICAgICAgICAgZG8ge1xuLy8gICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IDA7XG4vLyAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wID4gd2hhdmUpO1xuLy8gICAgICAgICAgICAgICAgaWYgKG9wID09PSAwKSB7XG4vLyAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDtcbi8vICAgICAgICAgICAgICAgICAgZG8ge1xuLy8gICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107XG4vLyAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tbGVuKTtcbi8vICAgICAgICAgICAgICAgICAgY29udGludWUgdG9wO1xuLy8gICAgICAgICAgICAgICAgfVxuLy8jZW5kaWZcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBmcm9tID0gMDsgLy8gd2luZG93IGluZGV4XG4gICAgICAgICAgICAgIGZyb21fc291cmNlID0gc193aW5kb3c7XG4gICAgICAgICAgICAgIGlmICh3bmV4dCA9PT0gMCkgeyAgICAgICAgICAgLyogdmVyeSBjb21tb24gY2FzZSAqL1xuICAgICAgICAgICAgICAgIGZyb20gKz0gd3NpemUgLSBvcDtcbiAgICAgICAgICAgICAgICBpZiAob3AgPCBsZW4pIHsgICAgICAgICAvKiBzb21lIGZyb20gd2luZG93ICovXG4gICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7XG4gICAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gc193aW5kb3dbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3ApO1xuICAgICAgICAgICAgICAgICAgZnJvbSA9IF9vdXQgLSBkaXN0OyAgLyogcmVzdCBmcm9tIG91dHB1dCAqL1xuICAgICAgICAgICAgICAgICAgZnJvbV9zb3VyY2UgPSBvdXRwdXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGVsc2UgaWYgKHduZXh0IDwgb3ApIHsgICAgICAvKiB3cmFwIGFyb3VuZCB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgICBmcm9tICs9IHdzaXplICsgd25leHQgLSBvcDtcbiAgICAgICAgICAgICAgICBvcCAtPSB3bmV4dDtcbiAgICAgICAgICAgICAgICBpZiAob3AgPCBsZW4pIHsgICAgICAgICAvKiBzb21lIGZyb20gZW5kIG9mIHdpbmRvdyAqL1xuICAgICAgICAgICAgICAgICAgbGVuIC09IG9wO1xuICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IHNfd2luZG93W2Zyb20rK107XG4gICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wKTtcbiAgICAgICAgICAgICAgICAgIGZyb20gPSAwO1xuICAgICAgICAgICAgICAgICAgaWYgKHduZXh0IDwgbGVuKSB7ICAvKiBzb21lIGZyb20gc3RhcnQgb2Ygd2luZG93ICovXG4gICAgICAgICAgICAgICAgICAgIG9wID0gd25leHQ7XG4gICAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDtcbiAgICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gc193aW5kb3dbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7XG4gICAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsgICAgICAvKiByZXN0IGZyb20gb3V0cHV0ICovXG4gICAgICAgICAgICAgICAgICAgIGZyb21fc291cmNlID0gb3V0cHV0O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgLyogY29udGlndW91cyBpbiB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgICBmcm9tICs9IHduZXh0IC0gb3A7XG4gICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAgLyogc29tZSBmcm9tIHdpbmRvdyAqL1xuICAgICAgICAgICAgICAgICAgbGVuIC09IG9wO1xuICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IHNfd2luZG93W2Zyb20rK107XG4gICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wKTtcbiAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsgIC8qIHJlc3QgZnJvbSBvdXRwdXQgKi9cbiAgICAgICAgICAgICAgICAgIGZyb21fc291cmNlID0gb3V0cHV0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB3aGlsZSAobGVuID4gMikge1xuICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gZnJvbV9zb3VyY2VbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107XG4gICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBmcm9tX3NvdXJjZVtmcm9tKytdO1xuICAgICAgICAgICAgICAgIGxlbiAtPSAzO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107XG4gICAgICAgICAgICAgICAgaWYgKGxlbiA+IDEpIHtcbiAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gZnJvbV9zb3VyY2VbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICBmcm9tID0gX291dCAtIGRpc3Q7ICAgICAgICAgIC8qIGNvcHkgZGlyZWN0IGZyb20gb3V0cHV0ICovXG4gICAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAvKiBtaW5pbXVtIGxlbmd0aCBpcyB0aHJlZSAqL1xuICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107XG4gICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBvdXRwdXRbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdO1xuICAgICAgICAgICAgICAgIGxlbiAtPSAzO1xuICAgICAgICAgICAgICB9IHdoaWxlIChsZW4gPiAyKTtcbiAgICAgICAgICAgICAgaWYgKGxlbikge1xuICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107XG4gICAgICAgICAgICAgICAgaWYgKGxlbiA+IDEpIHtcbiAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKChvcCAmIDY0KSA9PT0gMCkgeyAgICAgICAgICAvKiAybmQgbGV2ZWwgZGlzdGFuY2UgY29kZSAqL1xuICAgICAgICAgICAgaGVyZSA9IGRjb2RlWyhoZXJlICYgMHhmZmZmKS8qaGVyZS52YWwqLyArIChob2xkICYgKCgxIDw8IG9wKSAtIDEpKV07XG4gICAgICAgICAgICBjb250aW51ZSBkb2Rpc3Q7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBkaXN0YW5jZSBjb2RlJztcbiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICBicmVhayB0b3A7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7IC8vIG5lZWQgdG8gZW11bGF0ZSBnb3RvIHZpYSBcImNvbnRpbnVlXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoKG9wICYgNjQpID09PSAwKSB7ICAgICAgICAgICAgICAvKiAybmQgbGV2ZWwgbGVuZ3RoIGNvZGUgKi9cbiAgICAgICAgaGVyZSA9IGxjb2RlWyhoZXJlICYgMHhmZmZmKS8qaGVyZS52YWwqLyArIChob2xkICYgKCgxIDw8IG9wKSAtIDEpKV07XG4gICAgICAgIGNvbnRpbnVlIGRvbGVuO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAob3AgJiAzMikgeyAgICAgICAgICAgICAgICAgICAgIC8qIGVuZC1vZi1ibG9jayAqL1xuICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICAgIGVuZCBvZiBibG9ja1xcblwiKSk7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFO1xuICAgICAgICBicmVhayB0b3A7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlJztcbiAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgYnJlYWsgdG9wO1xuICAgICAgfVxuXG4gICAgICBicmVhazsgLy8gbmVlZCB0byBlbXVsYXRlIGdvdG8gdmlhIFwiY29udGludWVcIlxuICAgIH1cbiAgfSB3aGlsZSAoX2luIDwgbGFzdCAmJiBfb3V0IDwgZW5kKTtcblxuICAvKiByZXR1cm4gdW51c2VkIGJ5dGVzIChvbiBlbnRyeSwgYml0cyA8IDgsIHNvIGluIHdvbid0IGdvIHRvbyBmYXIgYmFjaykgKi9cbiAgbGVuID0gYml0cyA+PiAzO1xuICBfaW4gLT0gbGVuO1xuICBiaXRzIC09IGxlbiA8PCAzO1xuICBob2xkICY9ICgxIDw8IGJpdHMpIC0gMTtcblxuICAvKiB1cGRhdGUgc3RhdGUgYW5kIHJldHVybiAqL1xuICBzdHJtLm5leHRfaW4gPSBfaW47XG4gIHN0cm0ubmV4dF9vdXQgPSBfb3V0O1xuICBzdHJtLmF2YWlsX2luID0gKF9pbiA8IGxhc3QgPyA1ICsgKGxhc3QgLSBfaW4pIDogNSAtIChfaW4gLSBsYXN0KSk7XG4gIHN0cm0uYXZhaWxfb3V0ID0gKF9vdXQgPCBlbmQgPyAyNTcgKyAoZW5kIC0gX291dCkgOiAyNTcgLSAoX291dCAtIGVuZCkpO1xuICBzdGF0ZS5ob2xkID0gaG9sZDtcbiAgc3RhdGUuYml0cyA9IGJpdHM7XG4gIHJldHVybjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxudmFyIHV0aWxzICAgICAgICAgPSByZXF1aXJlKCcuLi91dGlscy9jb21tb24nKTtcbnZhciBhZGxlcjMyICAgICAgID0gcmVxdWlyZSgnLi9hZGxlcjMyJyk7XG52YXIgY3JjMzIgICAgICAgICA9IHJlcXVpcmUoJy4vY3JjMzInKTtcbnZhciBpbmZsYXRlX2Zhc3QgID0gcmVxdWlyZSgnLi9pbmZmYXN0Jyk7XG52YXIgaW5mbGF0ZV90YWJsZSA9IHJlcXVpcmUoJy4vaW5mdHJlZXMnKTtcblxudmFyIENPREVTID0gMDtcbnZhciBMRU5TID0gMTtcbnZhciBESVNUUyA9IDI7XG5cbi8qIFB1YmxpYyBjb25zdGFudHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cbi8qIEFsbG93ZWQgZmx1c2ggdmFsdWVzOyBzZWUgZGVmbGF0ZSgpIGFuZCBpbmZsYXRlKCkgYmVsb3cgZm9yIGRldGFpbHMgKi9cbi8vdmFyIFpfTk9fRkxVU0ggICAgICA9IDA7XG4vL3ZhciBaX1BBUlRJQUxfRkxVU0ggPSAxO1xuLy92YXIgWl9TWU5DX0ZMVVNIICAgID0gMjtcbi8vdmFyIFpfRlVMTF9GTFVTSCAgICA9IDM7XG52YXIgWl9GSU5JU0ggICAgICAgID0gNDtcbnZhciBaX0JMT0NLICAgICAgICAgPSA1O1xudmFyIFpfVFJFRVMgICAgICAgICA9IDY7XG5cblxuLyogUmV0dXJuIGNvZGVzIGZvciB0aGUgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBmdW5jdGlvbnMuIE5lZ2F0aXZlIHZhbHVlc1xuICogYXJlIGVycm9ycywgcG9zaXRpdmUgdmFsdWVzIGFyZSB1c2VkIGZvciBzcGVjaWFsIGJ1dCBub3JtYWwgZXZlbnRzLlxuICovXG52YXIgWl9PSyAgICAgICAgICAgID0gMDtcbnZhciBaX1NUUkVBTV9FTkQgICAgPSAxO1xudmFyIFpfTkVFRF9ESUNUICAgICA9IDI7XG4vL3ZhciBaX0VSUk5PICAgICAgICAgPSAtMTtcbnZhciBaX1NUUkVBTV9FUlJPUiAgPSAtMjtcbnZhciBaX0RBVEFfRVJST1IgICAgPSAtMztcbnZhciBaX01FTV9FUlJPUiAgICAgPSAtNDtcbnZhciBaX0JVRl9FUlJPUiAgICAgPSAtNTtcbi8vdmFyIFpfVkVSU0lPTl9FUlJPUiA9IC02O1xuXG4vKiBUaGUgZGVmbGF0ZSBjb21wcmVzc2lvbiBtZXRob2QgKi9cbnZhciBaX0RFRkxBVEVEICA9IDg7XG5cblxuLyogU1RBVEVTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblxudmFyICAgIEhFQUQgPSAxOyAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBtYWdpYyBoZWFkZXIgKi9cbnZhciAgICBGTEFHUyA9IDI7ICAgICAgLyogaTogd2FpdGluZyBmb3IgbWV0aG9kIGFuZCBmbGFncyAoZ3ppcCkgKi9cbnZhciAgICBUSU1FID0gMzsgICAgICAgLyogaTogd2FpdGluZyBmb3IgbW9kaWZpY2F0aW9uIHRpbWUgKGd6aXApICovXG52YXIgICAgT1MgPSA0OyAgICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGV4dHJhIGZsYWdzIGFuZCBvcGVyYXRpbmcgc3lzdGVtIChnemlwKSAqL1xudmFyICAgIEVYTEVOID0gNTsgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBsZW5ndGggKGd6aXApICovXG52YXIgICAgRVhUUkEgPSA2OyAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGV4dHJhIGJ5dGVzIChnemlwKSAqL1xudmFyICAgIE5BTUUgPSA3OyAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBlbmQgb2YgZmlsZSBuYW1lIChnemlwKSAqL1xudmFyICAgIENPTU1FTlQgPSA4OyAgICAvKiBpOiB3YWl0aW5nIGZvciBlbmQgb2YgY29tbWVudCAoZ3ppcCkgKi9cbnZhciAgICBIQ1JDID0gOTsgICAgICAgLyogaTogd2FpdGluZyBmb3IgaGVhZGVyIGNyYyAoZ3ppcCkgKi9cbnZhciAgICBESUNUSUQgPSAxMDsgICAgLyogaTogd2FpdGluZyBmb3IgZGljdGlvbmFyeSBjaGVjayB2YWx1ZSAqL1xudmFyICAgIERJQ1QgPSAxMTsgICAgICAvKiB3YWl0aW5nIGZvciBpbmZsYXRlU2V0RGljdGlvbmFyeSgpIGNhbGwgKi9cbnZhciAgICAgICAgVFlQRSA9IDEyOyAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIHR5cGUgYml0cywgaW5jbHVkaW5nIGxhc3QtZmxhZyBiaXQgKi9cbnZhciAgICAgICAgVFlQRURPID0gMTM7ICAgIC8qIGk6IHNhbWUsIGJ1dCBza2lwIGNoZWNrIHRvIGV4aXQgaW5mbGF0ZSBvbiBuZXcgYmxvY2sgKi9cbnZhciAgICAgICAgU1RPUkVEID0gMTQ7ICAgIC8qIGk6IHdhaXRpbmcgZm9yIHN0b3JlZCBzaXplIChsZW5ndGggYW5kIGNvbXBsZW1lbnQpICovXG52YXIgICAgICAgIENPUFlfID0gMTU7ICAgICAvKiBpL286IHNhbWUgYXMgQ09QWSBiZWxvdywgYnV0IG9ubHkgZmlyc3QgdGltZSBpbiAqL1xudmFyICAgICAgICBDT1BZID0gMTY7ICAgICAgLyogaS9vOiB3YWl0aW5nIGZvciBpbnB1dCBvciBvdXRwdXQgdG8gY29weSBzdG9yZWQgYmxvY2sgKi9cbnZhciAgICAgICAgVEFCTEUgPSAxNzsgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGR5bmFtaWMgYmxvY2sgdGFibGUgbGVuZ3RocyAqL1xudmFyICAgICAgICBMRU5MRU5TID0gMTg7ICAgLyogaTogd2FpdGluZyBmb3IgY29kZSBsZW5ndGggY29kZSBsZW5ndGhzICovXG52YXIgICAgICAgIENPREVMRU5TID0gMTk7ICAvKiBpOiB3YWl0aW5nIGZvciBsZW5ndGgvbGl0IGFuZCBkaXN0YW5jZSBjb2RlIGxlbmd0aHMgKi9cbnZhciAgICAgICAgICAgIExFTl8gPSAyMDsgICAgICAvKiBpOiBzYW1lIGFzIExFTiBiZWxvdywgYnV0IG9ubHkgZmlyc3QgdGltZSBpbiAqL1xudmFyICAgICAgICAgICAgTEVOID0gMjE7ICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGxlbmd0aC9saXQvZW9iIGNvZGUgKi9cbnZhciAgICAgICAgICAgIExFTkVYVCA9IDIyOyAgICAvKiBpOiB3YWl0aW5nIGZvciBsZW5ndGggZXh0cmEgYml0cyAqL1xudmFyICAgICAgICAgICAgRElTVCA9IDIzOyAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGRpc3RhbmNlIGNvZGUgKi9cbnZhciAgICAgICAgICAgIERJU1RFWFQgPSAyNDsgICAvKiBpOiB3YWl0aW5nIGZvciBkaXN0YW5jZSBleHRyYSBiaXRzICovXG52YXIgICAgICAgICAgICBNQVRDSCA9IDI1OyAgICAgLyogbzogd2FpdGluZyBmb3Igb3V0cHV0IHNwYWNlIHRvIGNvcHkgc3RyaW5nICovXG52YXIgICAgICAgICAgICBMSVQgPSAyNjsgICAgICAgLyogbzogd2FpdGluZyBmb3Igb3V0cHV0IHNwYWNlIHRvIHdyaXRlIGxpdGVyYWwgKi9cbnZhciAgICBDSEVDSyA9IDI3OyAgICAgLyogaTogd2FpdGluZyBmb3IgMzItYml0IGNoZWNrIHZhbHVlICovXG52YXIgICAgTEVOR1RIID0gMjg7ICAgIC8qIGk6IHdhaXRpbmcgZm9yIDMyLWJpdCBsZW5ndGggKGd6aXApICovXG52YXIgICAgRE9ORSA9IDI5OyAgICAgIC8qIGZpbmlzaGVkIGNoZWNrLCBkb25lIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovXG52YXIgICAgQkFEID0gMzA7ICAgICAgIC8qIGdvdCBhIGRhdGEgZXJyb3IgLS0gcmVtYWluIGhlcmUgdW50aWwgcmVzZXQgKi9cbnZhciAgICBNRU0gPSAzMTsgICAgICAgLyogZ290IGFuIGluZmxhdGUoKSBtZW1vcnkgZXJyb3IgLS0gcmVtYWluIGhlcmUgdW50aWwgcmVzZXQgKi9cbnZhciAgICBTWU5DID0gMzI7ICAgICAgLyogbG9va2luZyBmb3Igc3luY2hyb25pemF0aW9uIGJ5dGVzIHRvIHJlc3RhcnQgaW5mbGF0ZSgpICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblxuXG52YXIgRU5PVUdIX0xFTlMgPSA4NTI7XG52YXIgRU5PVUdIX0RJU1RTID0gNTkyO1xuLy92YXIgRU5PVUdIID0gIChFTk9VR0hfTEVOUytFTk9VR0hfRElTVFMpO1xuXG52YXIgTUFYX1dCSVRTID0gMTU7XG4vKiAzMksgTFo3NyB3aW5kb3cgKi9cbnZhciBERUZfV0JJVFMgPSBNQVhfV0JJVFM7XG5cblxuZnVuY3Rpb24genN3YXAzMihxKSB7XG4gIHJldHVybiAgKCgocSA+Pj4gMjQpICYgMHhmZikgK1xuICAgICAgICAgICgocSA+Pj4gOCkgJiAweGZmMDApICtcbiAgICAgICAgICAoKHEgJiAweGZmMDApIDw8IDgpICtcbiAgICAgICAgICAoKHEgJiAweGZmKSA8PCAyNCkpO1xufVxuXG5cbmZ1bmN0aW9uIEluZmxhdGVTdGF0ZSgpIHtcbiAgdGhpcy5tb2RlID0gMDsgICAgICAgICAgICAgLyogY3VycmVudCBpbmZsYXRlIG1vZGUgKi9cbiAgdGhpcy5sYXN0ID0gZmFsc2U7ICAgICAgICAgIC8qIHRydWUgaWYgcHJvY2Vzc2luZyBsYXN0IGJsb2NrICovXG4gIHRoaXMud3JhcCA9IDA7ICAgICAgICAgICAgICAvKiBiaXQgMCB0cnVlIGZvciB6bGliLCBiaXQgMSB0cnVlIGZvciBnemlwICovXG4gIHRoaXMuaGF2ZWRpY3QgPSBmYWxzZTsgICAgICAvKiB0cnVlIGlmIGRpY3Rpb25hcnkgcHJvdmlkZWQgKi9cbiAgdGhpcy5mbGFncyA9IDA7ICAgICAgICAgICAgIC8qIGd6aXAgaGVhZGVyIG1ldGhvZCBhbmQgZmxhZ3MgKDAgaWYgemxpYikgKi9cbiAgdGhpcy5kbWF4ID0gMDsgICAgICAgICAgICAgIC8qIHpsaWIgaGVhZGVyIG1heCBkaXN0YW5jZSAoSU5GTEFURV9TVFJJQ1QpICovXG4gIHRoaXMuY2hlY2sgPSAwOyAgICAgICAgICAgICAvKiBwcm90ZWN0ZWQgY29weSBvZiBjaGVjayB2YWx1ZSAqL1xuICB0aGlzLnRvdGFsID0gMDsgICAgICAgICAgICAgLyogcHJvdGVjdGVkIGNvcHkgb2Ygb3V0cHV0IGNvdW50ICovXG4gIC8vIFRPRE86IG1heSBiZSB7fVxuICB0aGlzLmhlYWQgPSBudWxsOyAgICAgICAgICAgLyogd2hlcmUgdG8gc2F2ZSBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiAqL1xuXG4gIC8qIHNsaWRpbmcgd2luZG93ICovXG4gIHRoaXMud2JpdHMgPSAwOyAgICAgICAgICAgICAvKiBsb2cgYmFzZSAyIG9mIHJlcXVlc3RlZCB3aW5kb3cgc2l6ZSAqL1xuICB0aGlzLndzaXplID0gMDsgICAgICAgICAgICAgLyogd2luZG93IHNpemUgb3IgemVybyBpZiBub3QgdXNpbmcgd2luZG93ICovXG4gIHRoaXMud2hhdmUgPSAwOyAgICAgICAgICAgICAvKiB2YWxpZCBieXRlcyBpbiB0aGUgd2luZG93ICovXG4gIHRoaXMud25leHQgPSAwOyAgICAgICAgICAgICAvKiB3aW5kb3cgd3JpdGUgaW5kZXggKi9cbiAgdGhpcy53aW5kb3cgPSBudWxsOyAgICAgICAgIC8qIGFsbG9jYXRlZCBzbGlkaW5nIHdpbmRvdywgaWYgbmVlZGVkICovXG5cbiAgLyogYml0IGFjY3VtdWxhdG9yICovXG4gIHRoaXMuaG9sZCA9IDA7ICAgICAgICAgICAgICAvKiBpbnB1dCBiaXQgYWNjdW11bGF0b3IgKi9cbiAgdGhpcy5iaXRzID0gMDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBiaXRzIGluIFwiaW5cIiAqL1xuXG4gIC8qIGZvciBzdHJpbmcgYW5kIHN0b3JlZCBibG9jayBjb3B5aW5nICovXG4gIHRoaXMubGVuZ3RoID0gMDsgICAgICAgICAgICAvKiBsaXRlcmFsIG9yIGxlbmd0aCBvZiBkYXRhIHRvIGNvcHkgKi9cbiAgdGhpcy5vZmZzZXQgPSAwOyAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhY2sgdG8gY29weSBzdHJpbmcgZnJvbSAqL1xuXG4gIC8qIGZvciB0YWJsZSBhbmQgY29kZSBkZWNvZGluZyAqL1xuICB0aGlzLmV4dHJhID0gMDsgICAgICAgICAgICAgLyogZXh0cmEgYml0cyBuZWVkZWQgKi9cblxuICAvKiBmaXhlZCBhbmQgZHluYW1pYyBjb2RlIHRhYmxlcyAqL1xuICB0aGlzLmxlbmNvZGUgPSBudWxsOyAgICAgICAgICAvKiBzdGFydGluZyB0YWJsZSBmb3IgbGVuZ3RoL2xpdGVyYWwgY29kZXMgKi9cbiAgdGhpcy5kaXN0Y29kZSA9IG51bGw7ICAgICAgICAgLyogc3RhcnRpbmcgdGFibGUgZm9yIGRpc3RhbmNlIGNvZGVzICovXG4gIHRoaXMubGVuYml0cyA9IDA7ICAgICAgICAgICAvKiBpbmRleCBiaXRzIGZvciBsZW5jb2RlICovXG4gIHRoaXMuZGlzdGJpdHMgPSAwOyAgICAgICAgICAvKiBpbmRleCBiaXRzIGZvciBkaXN0Y29kZSAqL1xuXG4gIC8qIGR5bmFtaWMgdGFibGUgYnVpbGRpbmcgKi9cbiAgdGhpcy5uY29kZSA9IDA7ICAgICAgICAgICAgIC8qIG51bWJlciBvZiBjb2RlIGxlbmd0aCBjb2RlIGxlbmd0aHMgKi9cbiAgdGhpcy5ubGVuID0gMDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBsZW5ndGggY29kZSBsZW5ndGhzICovXG4gIHRoaXMubmRpc3QgPSAwOyAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZGlzdGFuY2UgY29kZSBsZW5ndGhzICovXG4gIHRoaXMuaGF2ZSA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZSBsZW5ndGhzIGluIGxlbnNbXSAqL1xuICB0aGlzLm5leHQgPSBudWxsOyAgICAgICAgICAgICAgLyogbmV4dCBhdmFpbGFibGUgc3BhY2UgaW4gY29kZXNbXSAqL1xuXG4gIHRoaXMubGVucyA9IG5ldyB1dGlscy5CdWYxNigzMjApOyAvKiB0ZW1wb3Jhcnkgc3RvcmFnZSBmb3IgY29kZSBsZW5ndGhzICovXG4gIHRoaXMud29yayA9IG5ldyB1dGlscy5CdWYxNigyODgpOyAvKiB3b3JrIGFyZWEgZm9yIGNvZGUgdGFibGUgYnVpbGRpbmcgKi9cblxuICAvKlxuICAgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIHBvaW50ZXJzIGluIGpzLCB3ZSB1c2UgbGVuY29kZSBhbmQgZGlzdGNvZGUgZGlyZWN0bHlcbiAgIGFzIGJ1ZmZlcnMgc28gd2UgZG9uJ3QgbmVlZCBjb2Rlc1xuICAqL1xuICAvL3RoaXMuY29kZXMgPSBuZXcgdXRpbHMuQnVmMzIoRU5PVUdIKTsgICAgICAgLyogc3BhY2UgZm9yIGNvZGUgdGFibGVzICovXG4gIHRoaXMubGVuZHluID0gbnVsbDsgICAgICAgICAgICAgIC8qIGR5bmFtaWMgdGFibGUgZm9yIGxlbmd0aC9saXRlcmFsIGNvZGVzIChKUyBzcGVjaWZpYykgKi9cbiAgdGhpcy5kaXN0ZHluID0gbnVsbDsgICAgICAgICAgICAgLyogZHluYW1pYyB0YWJsZSBmb3IgZGlzdGFuY2UgY29kZXMgKEpTIHNwZWNpZmljKSAqL1xuICB0aGlzLnNhbmUgPSAwOyAgICAgICAgICAgICAgICAgICAvKiBpZiBmYWxzZSwgYWxsb3cgaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyICovXG4gIHRoaXMuYmFjayA9IDA7ICAgICAgICAgICAgICAgICAgIC8qIGJpdHMgYmFjayBvZiBsYXN0IHVucHJvY2Vzc2VkIGxlbmd0aC9saXQgKi9cbiAgdGhpcy53YXMgPSAwOyAgICAgICAgICAgICAgICAgICAgLyogaW5pdGlhbCBsZW5ndGggb2YgbWF0Y2ggKi9cbn1cblxuZnVuY3Rpb24gaW5mbGF0ZVJlc2V0S2VlcChzdHJtKSB7XG4gIHZhciBzdGF0ZTtcblxuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUpIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIHN0YXRlID0gc3RybS5zdGF0ZTtcbiAgc3RybS50b3RhbF9pbiA9IHN0cm0udG90YWxfb3V0ID0gc3RhdGUudG90YWwgPSAwO1xuICBzdHJtLm1zZyA9ICcnOyAvKlpfTlVMTCovXG4gIGlmIChzdGF0ZS53cmFwKSB7ICAgICAgIC8qIHRvIHN1cHBvcnQgaWxsLWNvbmNlaXZlZCBKYXZhIHRlc3Qgc3VpdGUgKi9cbiAgICBzdHJtLmFkbGVyID0gc3RhdGUud3JhcCAmIDE7XG4gIH1cbiAgc3RhdGUubW9kZSA9IEhFQUQ7XG4gIHN0YXRlLmxhc3QgPSAwO1xuICBzdGF0ZS5oYXZlZGljdCA9IDA7XG4gIHN0YXRlLmRtYXggPSAzMjc2ODtcbiAgc3RhdGUuaGVhZCA9IG51bGwvKlpfTlVMTCovO1xuICBzdGF0ZS5ob2xkID0gMDtcbiAgc3RhdGUuYml0cyA9IDA7XG4gIC8vc3RhdGUubGVuY29kZSA9IHN0YXRlLmRpc3Rjb2RlID0gc3RhdGUubmV4dCA9IHN0YXRlLmNvZGVzO1xuICBzdGF0ZS5sZW5jb2RlID0gc3RhdGUubGVuZHluID0gbmV3IHV0aWxzLkJ1ZjMyKEVOT1VHSF9MRU5TKTtcbiAgc3RhdGUuZGlzdGNvZGUgPSBzdGF0ZS5kaXN0ZHluID0gbmV3IHV0aWxzLkJ1ZjMyKEVOT1VHSF9ESVNUUyk7XG5cbiAgc3RhdGUuc2FuZSA9IDE7XG4gIHN0YXRlLmJhY2sgPSAtMTtcbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiByZXNldFxcblwiKSk7XG4gIHJldHVybiBaX09LO1xufVxuXG5mdW5jdGlvbiBpbmZsYXRlUmVzZXQoc3RybSkge1xuICB2YXIgc3RhdGU7XG5cbiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfVxuICBzdGF0ZSA9IHN0cm0uc3RhdGU7XG4gIHN0YXRlLndzaXplID0gMDtcbiAgc3RhdGUud2hhdmUgPSAwO1xuICBzdGF0ZS53bmV4dCA9IDA7XG4gIHJldHVybiBpbmZsYXRlUmVzZXRLZWVwKHN0cm0pO1xuXG59XG5cbmZ1bmN0aW9uIGluZmxhdGVSZXNldDIoc3RybSwgd2luZG93Qml0cykge1xuICB2YXIgd3JhcDtcbiAgdmFyIHN0YXRlO1xuXG4gIC8qIGdldCB0aGUgc3RhdGUgKi9cbiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfVxuICBzdGF0ZSA9IHN0cm0uc3RhdGU7XG5cbiAgLyogZXh0cmFjdCB3cmFwIHJlcXVlc3QgZnJvbSB3aW5kb3dCaXRzIHBhcmFtZXRlciAqL1xuICBpZiAod2luZG93Qml0cyA8IDApIHtcbiAgICB3cmFwID0gMDtcbiAgICB3aW5kb3dCaXRzID0gLXdpbmRvd0JpdHM7XG4gIH1cbiAgZWxzZSB7XG4gICAgd3JhcCA9ICh3aW5kb3dCaXRzID4+IDQpICsgMTtcbiAgICBpZiAod2luZG93Qml0cyA8IDQ4KSB7XG4gICAgICB3aW5kb3dCaXRzICY9IDE1O1xuICAgIH1cbiAgfVxuXG4gIC8qIHNldCBudW1iZXIgb2Ygd2luZG93IGJpdHMsIGZyZWUgd2luZG93IGlmIGRpZmZlcmVudCAqL1xuICBpZiAod2luZG93Qml0cyAmJiAod2luZG93Qml0cyA8IDggfHwgd2luZG93Qml0cyA+IDE1KSkge1xuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuICBpZiAoc3RhdGUud2luZG93ICE9PSBudWxsICYmIHN0YXRlLndiaXRzICE9PSB3aW5kb3dCaXRzKSB7XG4gICAgc3RhdGUud2luZG93ID0gbnVsbDtcbiAgfVxuXG4gIC8qIHVwZGF0ZSBzdGF0ZSBhbmQgcmVzZXQgdGhlIHJlc3Qgb2YgaXQgKi9cbiAgc3RhdGUud3JhcCA9IHdyYXA7XG4gIHN0YXRlLndiaXRzID0gd2luZG93Qml0cztcbiAgcmV0dXJuIGluZmxhdGVSZXNldChzdHJtKTtcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZUluaXQyKHN0cm0sIHdpbmRvd0JpdHMpIHtcbiAgdmFyIHJldDtcbiAgdmFyIHN0YXRlO1xuXG4gIGlmICghc3RybSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgLy9zdHJtLm1zZyA9IFpfTlVMTDsgICAgICAgICAgICAgICAgIC8qIGluIGNhc2Ugd2UgcmV0dXJuIGFuIGVycm9yICovXG5cbiAgc3RhdGUgPSBuZXcgSW5mbGF0ZVN0YXRlKCk7XG5cbiAgLy9pZiAoc3RhdGUgPT09IFpfTlVMTCkgcmV0dXJuIFpfTUVNX0VSUk9SO1xuICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6IGFsbG9jYXRlZFxcblwiKSk7XG4gIHN0cm0uc3RhdGUgPSBzdGF0ZTtcbiAgc3RhdGUud2luZG93ID0gbnVsbC8qWl9OVUxMKi87XG4gIHJldCA9IGluZmxhdGVSZXNldDIoc3RybSwgd2luZG93Qml0cyk7XG4gIGlmIChyZXQgIT09IFpfT0spIHtcbiAgICBzdHJtLnN0YXRlID0gbnVsbC8qWl9OVUxMKi87XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZUluaXQoc3RybSkge1xuICByZXR1cm4gaW5mbGF0ZUluaXQyKHN0cm0sIERFRl9XQklUUyk7XG59XG5cblxuLypcbiBSZXR1cm4gc3RhdGUgd2l0aCBsZW5ndGggYW5kIGRpc3RhbmNlIGRlY29kaW5nIHRhYmxlcyBhbmQgaW5kZXggc2l6ZXMgc2V0IHRvXG4gZml4ZWQgY29kZSBkZWNvZGluZy4gIE5vcm1hbGx5IHRoaXMgcmV0dXJucyBmaXhlZCB0YWJsZXMgZnJvbSBpbmZmaXhlZC5oLlxuIElmIEJVSUxERklYRUQgaXMgZGVmaW5lZCwgdGhlbiBpbnN0ZWFkIHRoaXMgcm91dGluZSBidWlsZHMgdGhlIHRhYmxlcyB0aGVcbiBmaXJzdCB0aW1lIGl0J3MgY2FsbGVkLCBhbmQgcmV0dXJucyB0aG9zZSB0YWJsZXMgdGhlIGZpcnN0IHRpbWUgYW5kXG4gdGhlcmVhZnRlci4gIFRoaXMgcmVkdWNlcyB0aGUgc2l6ZSBvZiB0aGUgY29kZSBieSBhYm91dCAySyBieXRlcywgaW5cbiBleGNoYW5nZSBmb3IgYSBsaXR0bGUgZXhlY3V0aW9uIHRpbWUuICBIb3dldmVyLCBCVUlMREZJWEVEIHNob3VsZCBub3QgYmVcbiB1c2VkIGZvciB0aHJlYWRlZCBhcHBsaWNhdGlvbnMsIHNpbmNlIHRoZSByZXdyaXRpbmcgb2YgdGhlIHRhYmxlcyBhbmQgdmlyZ2luXG4gbWF5IG5vdCBiZSB0aHJlYWQtc2FmZS5cbiAqL1xudmFyIHZpcmdpbiA9IHRydWU7XG5cbnZhciBsZW5maXgsIGRpc3RmaXg7IC8vIFdlIGhhdmUgbm8gcG9pbnRlcnMgaW4gSlMsIHNvIGtlZXAgdGFibGVzIHNlcGFyYXRlXG5cbmZ1bmN0aW9uIGZpeGVkdGFibGVzKHN0YXRlKSB7XG4gIC8qIGJ1aWxkIGZpeGVkIGh1ZmZtYW4gdGFibGVzIGlmIGZpcnN0IGNhbGwgKG1heSBub3QgYmUgdGhyZWFkIHNhZmUpICovXG4gIGlmICh2aXJnaW4pIHtcbiAgICB2YXIgc3ltO1xuXG4gICAgbGVuZml4ID0gbmV3IHV0aWxzLkJ1ZjMyKDUxMik7XG4gICAgZGlzdGZpeCA9IG5ldyB1dGlscy5CdWYzMigzMik7XG5cbiAgICAvKiBsaXRlcmFsL2xlbmd0aCB0YWJsZSAqL1xuICAgIHN5bSA9IDA7XG4gICAgd2hpbGUgKHN5bSA8IDE0NCkgeyBzdGF0ZS5sZW5zW3N5bSsrXSA9IDg7IH1cbiAgICB3aGlsZSAoc3ltIDwgMjU2KSB7IHN0YXRlLmxlbnNbc3ltKytdID0gOTsgfVxuICAgIHdoaWxlIChzeW0gPCAyODApIHsgc3RhdGUubGVuc1tzeW0rK10gPSA3OyB9XG4gICAgd2hpbGUgKHN5bSA8IDI4OCkgeyBzdGF0ZS5sZW5zW3N5bSsrXSA9IDg7IH1cblxuICAgIGluZmxhdGVfdGFibGUoTEVOUywgIHN0YXRlLmxlbnMsIDAsIDI4OCwgbGVuZml4LCAgIDAsIHN0YXRlLndvcmssIHsgYml0czogOSB9KTtcblxuICAgIC8qIGRpc3RhbmNlIHRhYmxlICovXG4gICAgc3ltID0gMDtcbiAgICB3aGlsZSAoc3ltIDwgMzIpIHsgc3RhdGUubGVuc1tzeW0rK10gPSA1OyB9XG5cbiAgICBpbmZsYXRlX3RhYmxlKERJU1RTLCBzdGF0ZS5sZW5zLCAwLCAzMiwgICBkaXN0Zml4LCAwLCBzdGF0ZS53b3JrLCB7IGJpdHM6IDUgfSk7XG5cbiAgICAvKiBkbyB0aGlzIGp1c3Qgb25jZSAqL1xuICAgIHZpcmdpbiA9IGZhbHNlO1xuICB9XG5cbiAgc3RhdGUubGVuY29kZSA9IGxlbmZpeDtcbiAgc3RhdGUubGVuYml0cyA9IDk7XG4gIHN0YXRlLmRpc3Rjb2RlID0gZGlzdGZpeDtcbiAgc3RhdGUuZGlzdGJpdHMgPSA1O1xufVxuXG5cbi8qXG4gVXBkYXRlIHRoZSB3aW5kb3cgd2l0aCB0aGUgbGFzdCB3c2l6ZSAobm9ybWFsbHkgMzJLKSBieXRlcyB3cml0dGVuIGJlZm9yZVxuIHJldHVybmluZy4gIElmIHdpbmRvdyBkb2VzIG5vdCBleGlzdCB5ZXQsIGNyZWF0ZSBpdC4gIFRoaXMgaXMgb25seSBjYWxsZWRcbiB3aGVuIGEgd2luZG93IGlzIGFscmVhZHkgaW4gdXNlLCBvciB3aGVuIG91dHB1dCBoYXMgYmVlbiB3cml0dGVuIGR1cmluZyB0aGlzXG4gaW5mbGF0ZSBjYWxsLCBidXQgdGhlIGVuZCBvZiB0aGUgZGVmbGF0ZSBzdHJlYW0gaGFzIG5vdCBiZWVuIHJlYWNoZWQgeWV0LlxuIEl0IGlzIGFsc28gY2FsbGVkIHRvIGNyZWF0ZSBhIHdpbmRvdyBmb3IgZGljdGlvbmFyeSBkYXRhIHdoZW4gYSBkaWN0aW9uYXJ5XG4gaXMgbG9hZGVkLlxuXG4gUHJvdmlkaW5nIG91dHB1dCBidWZmZXJzIGxhcmdlciB0aGFuIDMySyB0byBpbmZsYXRlKCkgc2hvdWxkIHByb3ZpZGUgYSBzcGVlZFxuIGFkdmFudGFnZSwgc2luY2Ugb25seSB0aGUgbGFzdCAzMksgb2Ygb3V0cHV0IGlzIGNvcGllZCB0byB0aGUgc2xpZGluZyB3aW5kb3dcbiB1cG9uIHJldHVybiBmcm9tIGluZmxhdGUoKSwgYW5kIHNpbmNlIGFsbCBkaXN0YW5jZXMgYWZ0ZXIgdGhlIGZpcnN0IDMySyBvZlxuIG91dHB1dCB3aWxsIGZhbGwgaW4gdGhlIG91dHB1dCBkYXRhLCBtYWtpbmcgbWF0Y2ggY29waWVzIHNpbXBsZXIgYW5kIGZhc3Rlci5cbiBUaGUgYWR2YW50YWdlIG1heSBiZSBkZXBlbmRlbnQgb24gdGhlIHNpemUgb2YgdGhlIHByb2Nlc3NvcidzIGRhdGEgY2FjaGVzLlxuICovXG5mdW5jdGlvbiB1cGRhdGV3aW5kb3coc3RybSwgc3JjLCBlbmQsIGNvcHkpIHtcbiAgdmFyIGRpc3Q7XG4gIHZhciBzdGF0ZSA9IHN0cm0uc3RhdGU7XG5cbiAgLyogaWYgaXQgaGFzbid0IGJlZW4gZG9uZSBhbHJlYWR5LCBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIHdpbmRvdyAqL1xuICBpZiAoc3RhdGUud2luZG93ID09PSBudWxsKSB7XG4gICAgc3RhdGUud3NpemUgPSAxIDw8IHN0YXRlLndiaXRzO1xuICAgIHN0YXRlLnduZXh0ID0gMDtcbiAgICBzdGF0ZS53aGF2ZSA9IDA7XG5cbiAgICBzdGF0ZS53aW5kb3cgPSBuZXcgdXRpbHMuQnVmOChzdGF0ZS53c2l6ZSk7XG4gIH1cblxuICAvKiBjb3B5IHN0YXRlLT53c2l6ZSBvciBsZXNzIG91dHB1dCBieXRlcyBpbnRvIHRoZSBjaXJjdWxhciB3aW5kb3cgKi9cbiAgaWYgKGNvcHkgPj0gc3RhdGUud3NpemUpIHtcbiAgICB1dGlscy5hcnJheVNldChzdGF0ZS53aW5kb3csIHNyYywgZW5kIC0gc3RhdGUud3NpemUsIHN0YXRlLndzaXplLCAwKTtcbiAgICBzdGF0ZS53bmV4dCA9IDA7XG4gICAgc3RhdGUud2hhdmUgPSBzdGF0ZS53c2l6ZTtcbiAgfVxuICBlbHNlIHtcbiAgICBkaXN0ID0gc3RhdGUud3NpemUgLSBzdGF0ZS53bmV4dDtcbiAgICBpZiAoZGlzdCA+IGNvcHkpIHtcbiAgICAgIGRpc3QgPSBjb3B5O1xuICAgIH1cbiAgICAvL3ptZW1jcHkoc3RhdGUtPndpbmRvdyArIHN0YXRlLT53bmV4dCwgZW5kIC0gY29weSwgZGlzdCk7XG4gICAgdXRpbHMuYXJyYXlTZXQoc3RhdGUud2luZG93LCBzcmMsIGVuZCAtIGNvcHksIGRpc3QsIHN0YXRlLnduZXh0KTtcbiAgICBjb3B5IC09IGRpc3Q7XG4gICAgaWYgKGNvcHkpIHtcbiAgICAgIC8vem1lbWNweShzdGF0ZS0+d2luZG93LCBlbmQgLSBjb3B5LCBjb3B5KTtcbiAgICAgIHV0aWxzLmFycmF5U2V0KHN0YXRlLndpbmRvdywgc3JjLCBlbmQgLSBjb3B5LCBjb3B5LCAwKTtcbiAgICAgIHN0YXRlLnduZXh0ID0gY29weTtcbiAgICAgIHN0YXRlLndoYXZlID0gc3RhdGUud3NpemU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgc3RhdGUud25leHQgKz0gZGlzdDtcbiAgICAgIGlmIChzdGF0ZS53bmV4dCA9PT0gc3RhdGUud3NpemUpIHsgc3RhdGUud25leHQgPSAwOyB9XG4gICAgICBpZiAoc3RhdGUud2hhdmUgPCBzdGF0ZS53c2l6ZSkgeyBzdGF0ZS53aGF2ZSArPSBkaXN0OyB9XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG5mdW5jdGlvbiBpbmZsYXRlKHN0cm0sIGZsdXNoKSB7XG4gIHZhciBzdGF0ZTtcbiAgdmFyIGlucHV0LCBvdXRwdXQ7ICAgICAgICAgIC8vIGlucHV0L291dHB1dCBidWZmZXJzXG4gIHZhciBuZXh0OyAgICAgICAgICAgICAgICAgICAvKiBuZXh0IGlucHV0IElOREVYICovXG4gIHZhciBwdXQ7ICAgICAgICAgICAgICAgICAgICAvKiBuZXh0IG91dHB1dCBJTkRFWCAqL1xuICB2YXIgaGF2ZSwgbGVmdDsgICAgICAgICAgICAgLyogYXZhaWxhYmxlIGlucHV0IGFuZCBvdXRwdXQgKi9cbiAgdmFyIGhvbGQ7ICAgICAgICAgICAgICAgICAgIC8qIGJpdCBidWZmZXIgKi9cbiAgdmFyIGJpdHM7ICAgICAgICAgICAgICAgICAgIC8qIGJpdHMgaW4gYml0IGJ1ZmZlciAqL1xuICB2YXIgX2luLCBfb3V0OyAgICAgICAgICAgICAgLyogc2F2ZSBzdGFydGluZyBhdmFpbGFibGUgaW5wdXQgYW5kIG91dHB1dCAqL1xuICB2YXIgY29weTsgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIHN0b3JlZCBvciBtYXRjaCBieXRlcyB0byBjb3B5ICovXG4gIHZhciBmcm9tOyAgICAgICAgICAgICAgICAgICAvKiB3aGVyZSB0byBjb3B5IG1hdGNoIGJ5dGVzIGZyb20gKi9cbiAgdmFyIGZyb21fc291cmNlO1xuICB2YXIgaGVyZSA9IDA7ICAgICAgICAgICAgICAgLyogY3VycmVudCBkZWNvZGluZyB0YWJsZSBlbnRyeSAqL1xuICB2YXIgaGVyZV9iaXRzLCBoZXJlX29wLCBoZXJlX3ZhbDsgLy8gcGFrZWQgXCJoZXJlXCIgZGVub3JtYWxpemVkIChKUyBzcGVjaWZpYylcbiAgLy92YXIgbGFzdDsgICAgICAgICAgICAgICAgICAgLyogcGFyZW50IHRhYmxlIGVudHJ5ICovXG4gIHZhciBsYXN0X2JpdHMsIGxhc3Rfb3AsIGxhc3RfdmFsOyAvLyBwYWtlZCBcImxhc3RcIiBkZW5vcm1hbGl6ZWQgKEpTIHNwZWNpZmljKVxuICB2YXIgbGVuOyAgICAgICAgICAgICAgICAgICAgLyogbGVuZ3RoIHRvIGNvcHkgZm9yIHJlcGVhdHMsIGJpdHMgdG8gZHJvcCAqL1xuICB2YXIgcmV0OyAgICAgICAgICAgICAgICAgICAgLyogcmV0dXJuIGNvZGUgKi9cbiAgdmFyIGhidWYgPSBuZXcgdXRpbHMuQnVmOCg0KTsgICAgLyogYnVmZmVyIGZvciBnemlwIGhlYWRlciBjcmMgY2FsY3VsYXRpb24gKi9cbiAgdmFyIG9wdHM7XG5cbiAgdmFyIG47IC8vIHRlbXBvcmFyeSB2YXIgZm9yIE5FRURfQklUU1xuXG4gIHZhciBvcmRlciA9IC8qIHBlcm11dGF0aW9uIG9mIGNvZGUgbGVuZ3RocyAqL1xuICAgIFsgMTYsIDE3LCAxOCwgMCwgOCwgNywgOSwgNiwgMTAsIDUsIDExLCA0LCAxMiwgMywgMTMsIDIsIDE0LCAxLCAxNSBdO1xuXG5cbiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlIHx8ICFzdHJtLm91dHB1dCB8fFxuICAgICAgKCFzdHJtLmlucHV0ICYmIHN0cm0uYXZhaWxfaW4gIT09IDApKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuICBpZiAoc3RhdGUubW9kZSA9PT0gVFlQRSkgeyBzdGF0ZS5tb2RlID0gVFlQRURPOyB9ICAgIC8qIHNraXAgY2hlY2sgKi9cblxuXG4gIC8vLS0tIExPQUQoKSAtLS1cbiAgcHV0ID0gc3RybS5uZXh0X291dDtcbiAgb3V0cHV0ID0gc3RybS5vdXRwdXQ7XG4gIGxlZnQgPSBzdHJtLmF2YWlsX291dDtcbiAgbmV4dCA9IHN0cm0ubmV4dF9pbjtcbiAgaW5wdXQgPSBzdHJtLmlucHV0O1xuICBoYXZlID0gc3RybS5hdmFpbF9pbjtcbiAgaG9sZCA9IHN0YXRlLmhvbGQ7XG4gIGJpdHMgPSBzdGF0ZS5iaXRzO1xuICAvLy0tLVxuXG4gIF9pbiA9IGhhdmU7XG4gIF9vdXQgPSBsZWZ0O1xuICByZXQgPSBaX09LO1xuXG4gIGluZl9sZWF2ZTogLy8gZ290byBlbXVsYXRpb25cbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoc3RhdGUubW9kZSkge1xuICAgICAgY2FzZSBIRUFEOlxuICAgICAgICBpZiAoc3RhdGUud3JhcCA9PT0gMCkge1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFRE87XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0gTkVFREJJVFMoMTYpO1xuICAgICAgICB3aGlsZSAoYml0cyA8IDE2KSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIGlmICgoc3RhdGUud3JhcCAmIDIpICYmIGhvbGQgPT09IDB4OGIxZikgeyAgLyogZ3ppcCBoZWFkZXIgKi9cbiAgICAgICAgICBzdGF0ZS5jaGVjayA9IDAvKmNyYzMyKDBMLCBaX05VTEwsIDApKi87XG4gICAgICAgICAgLy89PT0gQ1JDMihzdGF0ZS5jaGVjaywgaG9sZCk7XG4gICAgICAgICAgaGJ1ZlswXSA9IGhvbGQgJiAweGZmO1xuICAgICAgICAgIGhidWZbMV0gPSAoaG9sZCA+Pj4gOCkgJiAweGZmO1xuICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDIsIDApO1xuICAgICAgICAgIC8vPT09Ly9cblxuICAgICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgICAgYml0cyA9IDA7XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBGTEFHUztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5mbGFncyA9IDA7ICAgICAgICAgICAvKiBleHBlY3QgemxpYiBoZWFkZXIgKi9cbiAgICAgICAgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgICBzdGF0ZS5oZWFkLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIShzdGF0ZS53cmFwICYgMSkgfHwgICAvKiBjaGVjayBpZiB6bGliIGhlYWRlciBhbGxvd2VkICovXG4gICAgICAgICAgKCgoaG9sZCAmIDB4ZmYpLypCSVRTKDgpKi8gPDwgOCkgKyAoaG9sZCA+PiA4KSkgJSAzMSkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2luY29ycmVjdCBoZWFkZXIgY2hlY2snO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChob2xkICYgMHgwZikvKkJJVFMoNCkqLyAhPT0gWl9ERUZMQVRFRCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ3Vua25vd24gY29tcHJlc3Npb24gbWV0aG9kJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vLS0tIERST1BCSVRTKDQpIC0tLS8vXG4gICAgICAgIGhvbGQgPj4+PSA0O1xuICAgICAgICBiaXRzIC09IDQ7XG4gICAgICAgIC8vLS0tLy9cbiAgICAgICAgbGVuID0gKGhvbGQgJiAweDBmKS8qQklUUyg0KSovICsgODtcbiAgICAgICAgaWYgKHN0YXRlLndiaXRzID09PSAwKSB7XG4gICAgICAgICAgc3RhdGUud2JpdHMgPSBsZW47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobGVuID4gc3RhdGUud2JpdHMpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIHdpbmRvdyBzaXplJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLmRtYXggPSAxIDw8IGxlbjtcbiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgIHpsaWIgaGVhZGVyIG9rXFxuXCIpKTtcbiAgICAgICAgc3RybS5hZGxlciA9IHN0YXRlLmNoZWNrID0gMS8qYWRsZXIzMigwTCwgWl9OVUxMLCAwKSovO1xuICAgICAgICBzdGF0ZS5tb2RlID0gaG9sZCAmIDB4MjAwID8gRElDVElEIDogVFlQRTtcbiAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAvLz09PS8vXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBGTEFHUzpcbiAgICAgICAgLy89PT0gTkVFREJJVFMoMTYpOyAqL1xuICAgICAgICB3aGlsZSAoYml0cyA8IDE2KSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLmZsYWdzID0gaG9sZDtcbiAgICAgICAgaWYgKChzdGF0ZS5mbGFncyAmIDB4ZmYpICE9PSBaX0RFRkxBVEVEKSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAndW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QnO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHhlMDAwKSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAndW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0JztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgc3RhdGUuaGVhZC50ZXh0ID0gKChob2xkID4+IDgpICYgMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgLy89PT0gQ1JDMihzdGF0ZS5jaGVjaywgaG9sZCk7XG4gICAgICAgICAgaGJ1ZlswXSA9IGhvbGQgJiAweGZmO1xuICAgICAgICAgIGhidWZbMV0gPSAoaG9sZCA+Pj4gOCkgJiAweGZmO1xuICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDIsIDApO1xuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgfVxuICAgICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgICBob2xkID0gMDtcbiAgICAgICAgYml0cyA9IDA7XG4gICAgICAgIC8vPT09Ly9cbiAgICAgICAgc3RhdGUubW9kZSA9IFRJTUU7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgVElNRTpcbiAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpOyAqL1xuICAgICAgICB3aGlsZSAoYml0cyA8IDMyKSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgc3RhdGUuaGVhZC50aW1lID0gaG9sZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgICAvLz09PSBDUkM0KHN0YXRlLmNoZWNrLCBob2xkKVxuICAgICAgICAgIGhidWZbMF0gPSBob2xkICYgMHhmZjtcbiAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjtcbiAgICAgICAgICBoYnVmWzJdID0gKGhvbGQgPj4+IDE2KSAmIDB4ZmY7XG4gICAgICAgICAgaGJ1ZlszXSA9IChob2xkID4+PiAyNCkgJiAweGZmO1xuICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDQsIDApO1xuICAgICAgICAgIC8vPT09XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLm1vZGUgPSBPUztcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBPUzpcbiAgICAgICAgLy89PT0gTkVFREJJVFMoMTYpOyAqL1xuICAgICAgICB3aGlsZSAoYml0cyA8IDE2KSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgc3RhdGUuaGVhZC54ZmxhZ3MgPSAoaG9sZCAmIDB4ZmYpO1xuICAgICAgICAgIHN0YXRlLmhlYWQub3MgPSAoaG9sZCA+PiA4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgICAvLz09PSBDUkMyKHN0YXRlLmNoZWNrLCBob2xkKTtcbiAgICAgICAgICBoYnVmWzBdID0gaG9sZCAmIDB4ZmY7XG4gICAgICAgICAgaGJ1ZlsxXSA9IChob2xkID4+PiA4KSAmIDB4ZmY7XG4gICAgICAgICAgc3RhdGUuY2hlY2sgPSBjcmMzMihzdGF0ZS5jaGVjaywgaGJ1ZiwgMiwgMCk7XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICB9XG4gICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgIGhvbGQgPSAwO1xuICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5tb2RlID0gRVhMRU47XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgRVhMRU46XG4gICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDQwMCkge1xuICAgICAgICAgIC8vPT09IE5FRURCSVRTKDE2KTsgKi9cbiAgICAgICAgICB3aGlsZSAoYml0cyA8IDE2KSB7XG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgc3RhdGUubGVuZ3RoID0gaG9sZDtcbiAgICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgICAgc3RhdGUuaGVhZC5leHRyYV9sZW4gPSBob2xkO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgICAgIC8vPT09IENSQzIoc3RhdGUuY2hlY2ssIGhvbGQpO1xuICAgICAgICAgICAgaGJ1ZlswXSA9IGhvbGQgJiAweGZmO1xuICAgICAgICAgICAgaGJ1ZlsxXSA9IChob2xkID4+PiA4KSAmIDB4ZmY7XG4gICAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBoYnVmLCAyLCAwKTtcbiAgICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgICBob2xkID0gMDtcbiAgICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQuZXh0cmEgPSBudWxsLypaX05VTEwqLztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5tb2RlID0gRVhUUkE7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgRVhUUkE6XG4gICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDQwMCkge1xuICAgICAgICAgIGNvcHkgPSBzdGF0ZS5sZW5ndGg7XG4gICAgICAgICAgaWYgKGNvcHkgPiBoYXZlKSB7IGNvcHkgPSBoYXZlOyB9XG4gICAgICAgICAgaWYgKGNvcHkpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgICAgIGxlbiA9IHN0YXRlLmhlYWQuZXh0cmFfbGVuIC0gc3RhdGUubGVuZ3RoO1xuICAgICAgICAgICAgICBpZiAoIXN0YXRlLmhlYWQuZXh0cmEpIHtcbiAgICAgICAgICAgICAgICAvLyBVc2UgdW50eXBlZCBhcnJheSBmb3IgbW9yZSBjb252ZW5pZW50IHByb2Nlc3NpbmcgbGF0ZXJcbiAgICAgICAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhID0gbmV3IEFycmF5KHN0YXRlLmhlYWQuZXh0cmFfbGVuKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB1dGlscy5hcnJheVNldChcbiAgICAgICAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhLFxuICAgICAgICAgICAgICAgIGlucHV0LFxuICAgICAgICAgICAgICAgIG5leHQsXG4gICAgICAgICAgICAgICAgLy8gZXh0cmEgZmllbGQgaXMgbGltaXRlZCB0byA2NTUzNiBieXRlc1xuICAgICAgICAgICAgICAgIC8vIC0gbm8gbmVlZCBmb3IgYWRkaXRpb25hbCBzaXplIGNoZWNrXG4gICAgICAgICAgICAgICAgY29weSxcbiAgICAgICAgICAgICAgICAvKmxlbiArIGNvcHkgPiBzdGF0ZS5oZWFkLmV4dHJhX21heCAtIGxlbiA/IHN0YXRlLmhlYWQuZXh0cmFfbWF4IDogY29weSwqL1xuICAgICAgICAgICAgICAgIGxlblxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAvL3ptZW1jcHkoc3RhdGUuaGVhZC5leHRyYSArIGxlbiwgbmV4dCxcbiAgICAgICAgICAgICAgLy8gICAgICAgIGxlbiArIGNvcHkgPiBzdGF0ZS5oZWFkLmV4dHJhX21heCA/XG4gICAgICAgICAgICAgIC8vICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhX21heCAtIGxlbiA6IGNvcHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGlucHV0LCBjb3B5LCBuZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGhhdmUgLT0gY29weTtcbiAgICAgICAgICAgIG5leHQgKz0gY29weTtcbiAgICAgICAgICAgIHN0YXRlLmxlbmd0aCAtPSBjb3B5O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc3RhdGUubGVuZ3RoKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICB9XG4gICAgICAgIHN0YXRlLmxlbmd0aCA9IDA7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBOQU1FO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIE5BTUU6XG4gICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDgwMCkge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGNvcHkgPSAwO1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIC8vIFRPRE86IDIgb3IgMSBieXRlcz9cbiAgICAgICAgICAgIGxlbiA9IGlucHV0W25leHQgKyBjb3B5KytdO1xuICAgICAgICAgICAgLyogdXNlIGNvbnN0YW50IGxpbWl0IGJlY2F1c2UgaW4ganMgd2Ugc2hvdWxkIG5vdCBwcmVhbGxvY2F0ZSBtZW1vcnkgKi9cbiAgICAgICAgICAgIGlmIChzdGF0ZS5oZWFkICYmIGxlbiAmJlxuICAgICAgICAgICAgICAgIChzdGF0ZS5sZW5ndGggPCA2NTUzNiAvKnN0YXRlLmhlYWQubmFtZV9tYXgqLykpIHtcbiAgICAgICAgICAgICAgc3RhdGUuaGVhZC5uYW1lICs9IFN0cmluZy5mcm9tQ2hhckNvZGUobGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IHdoaWxlIChsZW4gJiYgY29weSA8IGhhdmUpO1xuXG4gICAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBpbnB1dCwgY29weSwgbmV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGhhdmUgLT0gY29weTtcbiAgICAgICAgICBuZXh0ICs9IGNvcHk7XG4gICAgICAgICAgaWYgKGxlbikgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgc3RhdGUuaGVhZC5uYW1lID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5sZW5ndGggPSAwO1xuICAgICAgICBzdGF0ZS5tb2RlID0gQ09NTUVOVDtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBDT01NRU5UOlxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDEwMDApIHtcbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBjb3B5ID0gMDtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBsZW4gPSBpbnB1dFtuZXh0ICsgY29weSsrXTtcbiAgICAgICAgICAgIC8qIHVzZSBjb25zdGFudCBsaW1pdCBiZWNhdXNlIGluIGpzIHdlIHNob3VsZCBub3QgcHJlYWxsb2NhdGUgbWVtb3J5ICovXG4gICAgICAgICAgICBpZiAoc3RhdGUuaGVhZCAmJiBsZW4gJiZcbiAgICAgICAgICAgICAgICAoc3RhdGUubGVuZ3RoIDwgNjU1MzYgLypzdGF0ZS5oZWFkLmNvbW1fbWF4Ki8pKSB7XG4gICAgICAgICAgICAgIHN0YXRlLmhlYWQuY29tbWVudCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGxlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSB3aGlsZSAobGVuICYmIGNvcHkgPCBoYXZlKTtcbiAgICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGlucHV0LCBjb3B5LCBuZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaGF2ZSAtPSBjb3B5O1xuICAgICAgICAgIG5leHQgKz0gY29weTtcbiAgICAgICAgICBpZiAobGVuKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgICBzdGF0ZS5oZWFkLmNvbW1lbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLm1vZGUgPSBIQ1JDO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIEhDUkM6XG4gICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkge1xuICAgICAgICAgIC8vPT09IE5FRURCSVRTKDE2KTsgKi9cbiAgICAgICAgICB3aGlsZSAoYml0cyA8IDE2KSB7XG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgaWYgKGhvbGQgIT09IChzdGF0ZS5jaGVjayAmIDB4ZmZmZikpIHtcbiAgICAgICAgICAgIHN0cm0ubXNnID0gJ2hlYWRlciBjcmMgbWlzbWF0Y2gnO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgICAgIGhvbGQgPSAwO1xuICAgICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQuaGNyYyA9ICgoc3RhdGUuZmxhZ3MgPj4gOSkgJiAxKTtcbiAgICAgICAgICBzdGF0ZS5oZWFkLmRvbmUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9IDA7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRElDVElEOlxuICAgICAgICAvLz09PSBORUVEQklUUygzMik7ICovXG4gICAgICAgIHdoaWxlIChiaXRzIDwgMzIpIHtcbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICB9XG4gICAgICAgIC8vPT09Ly9cbiAgICAgICAgc3RybS5hZGxlciA9IHN0YXRlLmNoZWNrID0genN3YXAzMihob2xkKTtcbiAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLm1vZGUgPSBESUNUO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIERJQ1Q6XG4gICAgICAgIGlmIChzdGF0ZS5oYXZlZGljdCA9PT0gMCkge1xuICAgICAgICAgIC8vLS0tIFJFU1RPUkUoKSAtLS1cbiAgICAgICAgICBzdHJtLm5leHRfb3V0ID0gcHV0O1xuICAgICAgICAgIHN0cm0uYXZhaWxfb3V0ID0gbGVmdDtcbiAgICAgICAgICBzdHJtLm5leHRfaW4gPSBuZXh0O1xuICAgICAgICAgIHN0cm0uYXZhaWxfaW4gPSBoYXZlO1xuICAgICAgICAgIHN0YXRlLmhvbGQgPSBob2xkO1xuICAgICAgICAgIHN0YXRlLmJpdHMgPSBiaXRzO1xuICAgICAgICAgIC8vLS0tXG4gICAgICAgICAgcmV0dXJuIFpfTkVFRF9ESUNUO1xuICAgICAgICB9XG4gICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9IDEvKmFkbGVyMzIoMEwsIFpfTlVMTCwgMCkqLztcbiAgICAgICAgc3RhdGUubW9kZSA9IFRZUEU7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgVFlQRTpcbiAgICAgICAgaWYgKGZsdXNoID09PSBaX0JMT0NLIHx8IGZsdXNoID09PSBaX1RSRUVTKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIFRZUEVETzpcbiAgICAgICAgaWYgKHN0YXRlLmxhc3QpIHtcbiAgICAgICAgICAvLy0tLSBCWVRFQklUUygpIC0tLS8vXG4gICAgICAgICAgaG9sZCA+Pj49IGJpdHMgJiA3O1xuICAgICAgICAgIGJpdHMgLT0gYml0cyAmIDc7XG4gICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBDSEVDSztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLz09PSBORUVEQklUUygzKTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAzKSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLmxhc3QgPSAoaG9sZCAmIDB4MDEpLypCSVRTKDEpKi87XG4gICAgICAgIC8vLS0tIERST1BCSVRTKDEpIC0tLS8vXG4gICAgICAgIGhvbGQgPj4+PSAxO1xuICAgICAgICBiaXRzIC09IDE7XG4gICAgICAgIC8vLS0tLy9cblxuICAgICAgICBzd2l0Y2ggKChob2xkICYgMHgwMykvKkJJVFMoMikqLykge1xuICAgICAgICAgIGNhc2UgMDogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0b3JlZCBibG9jayAqL1xuICAgICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgc3RvcmVkIGJsb2NrJXNcXG5cIixcbiAgICAgICAgICAgIC8vICAgICAgICBzdGF0ZS5sYXN0ID8gXCIgKGxhc3QpXCIgOiBcIlwiKSk7XG4gICAgICAgICAgICBzdGF0ZS5tb2RlID0gU1RPUkVEO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZml4ZWQgYmxvY2sgKi9cbiAgICAgICAgICAgIGZpeGVkdGFibGVzKHN0YXRlKTtcbiAgICAgICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgIGZpeGVkIGNvZGVzIGJsb2NrJXNcXG5cIixcbiAgICAgICAgICAgIC8vICAgICAgICBzdGF0ZS5sYXN0ID8gXCIgKGxhc3QpXCIgOiBcIlwiKSk7XG4gICAgICAgICAgICBzdGF0ZS5tb2RlID0gTEVOXzsgICAgICAgICAgICAgLyogZGVjb2RlIGNvZGVzICovXG4gICAgICAgICAgICBpZiAoZmx1c2ggPT09IFpfVFJFRVMpIHtcbiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMikgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IDI7XG4gICAgICAgICAgICAgIGJpdHMgLT0gMjtcbiAgICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgICBicmVhayBpbmZfbGVhdmU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkeW5hbWljIGJsb2NrICovXG4gICAgICAgICAgICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgICBkeW5hbWljIGNvZGVzIGJsb2NrJXNcXG5cIixcbiAgICAgICAgICAgIC8vICAgICAgICBzdGF0ZS5sYXN0ID8gXCIgKGxhc3QpXCIgOiBcIlwiKSk7XG4gICAgICAgICAgICBzdGF0ZS5tb2RlID0gVEFCTEU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGJsb2NrIHR5cGUnO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgfVxuICAgICAgICAvLy0tLSBEUk9QQklUUygyKSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gMjtcbiAgICAgICAgYml0cyAtPSAyO1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTVE9SRUQ6XG4gICAgICAgIC8vLS0tIEJZVEVCSVRTKCkgLS0tLy8gLyogZ28gdG8gYnl0ZSBib3VuZGFyeSAqL1xuICAgICAgICBob2xkID4+Pj0gYml0cyAmIDc7XG4gICAgICAgIGJpdHMgLT0gYml0cyAmIDc7XG4gICAgICAgIC8vLS0tLy9cbiAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpOyAqL1xuICAgICAgICB3aGlsZSAoYml0cyA8IDMyKSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIGlmICgoaG9sZCAmIDB4ZmZmZikgIT09ICgoaG9sZCA+Pj4gMTYpIF4gMHhmZmZmKSkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMnO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUubGVuZ3RoID0gaG9sZCAmIDB4ZmZmZjtcbiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICBzdG9yZWQgbGVuZ3RoICV1XFxuXCIsXG4gICAgICAgIC8vICAgICAgICBzdGF0ZS5sZW5ndGgpKTtcbiAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLm1vZGUgPSBDT1BZXztcbiAgICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIENPUFlfOlxuICAgICAgICBzdGF0ZS5tb2RlID0gQ09QWTtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBDT1BZOlxuICAgICAgICBjb3B5ID0gc3RhdGUubGVuZ3RoO1xuICAgICAgICBpZiAoY29weSkge1xuICAgICAgICAgIGlmIChjb3B5ID4gaGF2ZSkgeyBjb3B5ID0gaGF2ZTsgfVxuICAgICAgICAgIGlmIChjb3B5ID4gbGVmdCkgeyBjb3B5ID0gbGVmdDsgfVxuICAgICAgICAgIGlmIChjb3B5ID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIC8vLS0tIHptZW1jcHkocHV0LCBuZXh0LCBjb3B5KTsgLS0tXG4gICAgICAgICAgdXRpbHMuYXJyYXlTZXQob3V0cHV0LCBpbnB1dCwgbmV4dCwgY29weSwgcHV0KTtcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgaGF2ZSAtPSBjb3B5O1xuICAgICAgICAgIG5leHQgKz0gY29weTtcbiAgICAgICAgICBsZWZ0IC09IGNvcHk7XG4gICAgICAgICAgcHV0ICs9IGNvcHk7XG4gICAgICAgICAgc3RhdGUubGVuZ3RoIC09IGNvcHk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICBzdG9yZWQgZW5kXFxuXCIpKTtcbiAgICAgICAgc3RhdGUubW9kZSA9IFRZUEU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBUQUJMRTpcbiAgICAgICAgLy89PT0gTkVFREJJVFMoMTQpOyAqL1xuICAgICAgICB3aGlsZSAoYml0cyA8IDE0KSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLm5sZW4gPSAoaG9sZCAmIDB4MWYpLypCSVRTKDUpKi8gKyAyNTc7XG4gICAgICAgIC8vLS0tIERST1BCSVRTKDUpIC0tLS8vXG4gICAgICAgIGhvbGQgPj4+PSA1O1xuICAgICAgICBiaXRzIC09IDU7XG4gICAgICAgIC8vLS0tLy9cbiAgICAgICAgc3RhdGUubmRpc3QgPSAoaG9sZCAmIDB4MWYpLypCSVRTKDUpKi8gKyAxO1xuICAgICAgICAvLy0tLSBEUk9QQklUUyg1KSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gNTtcbiAgICAgICAgYml0cyAtPSA1O1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIHN0YXRlLm5jb2RlID0gKGhvbGQgJiAweDBmKS8qQklUUyg0KSovICsgNDtcbiAgICAgICAgLy8tLS0gRFJPUEJJVFMoNCkgLS0tLy9cbiAgICAgICAgaG9sZCA+Pj49IDQ7XG4gICAgICAgIGJpdHMgLT0gNDtcbiAgICAgICAgLy8tLS0vL1xuLy8jaWZuZGVmIFBLWklQX0JVR19XT1JLQVJPVU5EXG4gICAgICAgIGlmIChzdGF0ZS5ubGVuID4gMjg2IHx8IHN0YXRlLm5kaXN0ID4gMzApIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICd0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scyc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuLy8jZW5kaWZcbiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICB0YWJsZSBzaXplcyBva1xcblwiKSk7XG4gICAgICAgIHN0YXRlLmhhdmUgPSAwO1xuICAgICAgICBzdGF0ZS5tb2RlID0gTEVOTEVOUztcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBMRU5MRU5TOlxuICAgICAgICB3aGlsZSAoc3RhdGUuaGF2ZSA8IHN0YXRlLm5jb2RlKSB7XG4gICAgICAgICAgLy89PT0gTkVFREJJVFMoMyk7XG4gICAgICAgICAgd2hpbGUgKGJpdHMgPCAzKSB7XG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgc3RhdGUubGVuc1tvcmRlcltzdGF0ZS5oYXZlKytdXSA9IChob2xkICYgMHgwNyk7Ly9CSVRTKDMpO1xuICAgICAgICAgIC8vLS0tIERST1BCSVRTKDMpIC0tLS8vXG4gICAgICAgICAgaG9sZCA+Pj49IDM7XG4gICAgICAgICAgYml0cyAtPSAzO1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAoc3RhdGUuaGF2ZSA8IDE5KSB7XG4gICAgICAgICAgc3RhdGUubGVuc1tvcmRlcltzdGF0ZS5oYXZlKytdXSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgLy8gV2UgaGF2ZSBzZXBhcmF0ZSB0YWJsZXMgJiBubyBwb2ludGVycy4gMiBjb21tZW50ZWQgbGluZXMgYmVsb3cgbm90IG5lZWRlZC5cbiAgICAgICAgLy9zdGF0ZS5uZXh0ID0gc3RhdGUuY29kZXM7XG4gICAgICAgIC8vc3RhdGUubGVuY29kZSA9IHN0YXRlLm5leHQ7XG4gICAgICAgIC8vIFN3aXRjaCB0byB1c2UgZHluYW1pYyB0YWJsZVxuICAgICAgICBzdGF0ZS5sZW5jb2RlID0gc3RhdGUubGVuZHluO1xuICAgICAgICBzdGF0ZS5sZW5iaXRzID0gNztcblxuICAgICAgICBvcHRzID0geyBiaXRzOiBzdGF0ZS5sZW5iaXRzIH07XG4gICAgICAgIHJldCA9IGluZmxhdGVfdGFibGUoQ09ERVMsIHN0YXRlLmxlbnMsIDAsIDE5LCBzdGF0ZS5sZW5jb2RlLCAwLCBzdGF0ZS53b3JrLCBvcHRzKTtcbiAgICAgICAgc3RhdGUubGVuYml0cyA9IG9wdHMuYml0cztcblxuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0JztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgY29kZSBsZW5ndGhzIG9rXFxuXCIpKTtcbiAgICAgICAgc3RhdGUuaGF2ZSA9IDA7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBDT0RFTEVOUztcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBDT0RFTEVOUzpcbiAgICAgICAgd2hpbGUgKHN0YXRlLmhhdmUgPCBzdGF0ZS5ubGVuICsgc3RhdGUubmRpc3QpIHtcbiAgICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBoZXJlID0gc3RhdGUubGVuY29kZVtob2xkICYgKCgxIDw8IHN0YXRlLmxlbmJpdHMpIC0gMSldOy8qQklUUyhzdGF0ZS5sZW5iaXRzKSovXG4gICAgICAgICAgICBoZXJlX2JpdHMgPSBoZXJlID4+PiAyNDtcbiAgICAgICAgICAgIGhlcmVfb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgICAgICAgIGhlcmVfdmFsID0gaGVyZSAmIDB4ZmZmZjtcblxuICAgICAgICAgICAgaWYgKChoZXJlX2JpdHMpIDw9IGJpdHMpIHsgYnJlYWs7IH1cbiAgICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy9cbiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChoZXJlX3ZhbCA8IDE2KSB7XG4gICAgICAgICAgICAvLy0tLSBEUk9QQklUUyhoZXJlLmJpdHMpIC0tLS8vXG4gICAgICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzO1xuICAgICAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7XG4gICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgICBzdGF0ZS5sZW5zW3N0YXRlLmhhdmUrK10gPSBoZXJlX3ZhbDtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoaGVyZV92YWwgPT09IDE2KSB7XG4gICAgICAgICAgICAgIC8vPT09IE5FRURCSVRTKGhlcmUuYml0cyArIDIpO1xuICAgICAgICAgICAgICBuID0gaGVyZV9iaXRzICsgMjtcbiAgICAgICAgICAgICAgd2hpbGUgKGJpdHMgPCBuKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7XG4gICAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICAgICAgaWYgKHN0YXRlLmhhdmUgPT09IDApIHtcbiAgICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0JztcbiAgICAgICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxlbiA9IHN0YXRlLmxlbnNbc3RhdGUuaGF2ZSAtIDFdO1xuICAgICAgICAgICAgICBjb3B5ID0gMyArIChob2xkICYgMHgwMyk7Ly9CSVRTKDIpO1xuICAgICAgICAgICAgICAvLy0tLSBEUk9QQklUUygyKSAtLS0vL1xuICAgICAgICAgICAgICBob2xkID4+Pj0gMjtcbiAgICAgICAgICAgICAgYml0cyAtPSAyO1xuICAgICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChoZXJlX3ZhbCA9PT0gMTcpIHtcbiAgICAgICAgICAgICAgLy89PT0gTkVFREJJVFMoaGVyZS5iaXRzICsgMyk7XG4gICAgICAgICAgICAgIG4gPSBoZXJlX2JpdHMgKyAzO1xuICAgICAgICAgICAgICB3aGlsZSAoYml0cyA8IG4pIHtcbiAgICAgICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoaGVyZS5iaXRzKSAtLS0vL1xuICAgICAgICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzO1xuICAgICAgICAgICAgICBiaXRzIC09IGhlcmVfYml0cztcbiAgICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgICBsZW4gPSAwO1xuICAgICAgICAgICAgICBjb3B5ID0gMyArIChob2xkICYgMHgwNyk7Ly9CSVRTKDMpO1xuICAgICAgICAgICAgICAvLy0tLSBEUk9QQklUUygzKSAtLS0vL1xuICAgICAgICAgICAgICBob2xkID4+Pj0gMztcbiAgICAgICAgICAgICAgYml0cyAtPSAzO1xuICAgICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgLy89PT0gTkVFREJJVFMoaGVyZS5iaXRzICsgNyk7XG4gICAgICAgICAgICAgIG4gPSBoZXJlX2JpdHMgKyA3O1xuICAgICAgICAgICAgICB3aGlsZSAoYml0cyA8IG4pIHtcbiAgICAgICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoaGVyZS5iaXRzKSAtLS0vL1xuICAgICAgICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzO1xuICAgICAgICAgICAgICBiaXRzIC09IGhlcmVfYml0cztcbiAgICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgICBsZW4gPSAwO1xuICAgICAgICAgICAgICBjb3B5ID0gMTEgKyAoaG9sZCAmIDB4N2YpOy8vQklUUyg3KTtcbiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoNykgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IDc7XG4gICAgICAgICAgICAgIGJpdHMgLT0gNztcbiAgICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHN0YXRlLmhhdmUgKyBjb3B5ID4gc3RhdGUubmxlbiArIHN0YXRlLm5kaXN0KSB7XG4gICAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgYml0IGxlbmd0aCByZXBlYXQnO1xuICAgICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChjb3B5LS0pIHtcbiAgICAgICAgICAgICAgc3RhdGUubGVuc1tzdGF0ZS5oYXZlKytdID0gbGVuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGhhbmRsZSBlcnJvciBicmVha3MgaW4gd2hpbGUgKi9cbiAgICAgICAgaWYgKHN0YXRlLm1vZGUgPT09IEJBRCkgeyBicmVhazsgfVxuXG4gICAgICAgIC8qIGNoZWNrIGZvciBlbmQtb2YtYmxvY2sgY29kZSAoYmV0dGVyIGhhdmUgb25lKSAqL1xuICAgICAgICBpZiAoc3RhdGUubGVuc1syNTZdID09PSAwKSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgLyogYnVpbGQgY29kZSB0YWJsZXMgLS0gbm90ZTogZG8gbm90IGNoYW5nZSB0aGUgbGVuYml0cyBvciBkaXN0Yml0c1xuICAgICAgICAgICB2YWx1ZXMgaGVyZSAoOSBhbmQgNikgd2l0aG91dCByZWFkaW5nIHRoZSBjb21tZW50cyBpbiBpbmZ0cmVlcy5oXG4gICAgICAgICAgIGNvbmNlcm5pbmcgdGhlIEVOT1VHSCBjb25zdGFudHMsIHdoaWNoIGRlcGVuZCBvbiB0aG9zZSB2YWx1ZXMgKi9cbiAgICAgICAgc3RhdGUubGVuYml0cyA9IDk7XG5cbiAgICAgICAgb3B0cyA9IHsgYml0czogc3RhdGUubGVuYml0cyB9O1xuICAgICAgICByZXQgPSBpbmZsYXRlX3RhYmxlKExFTlMsIHN0YXRlLmxlbnMsIDAsIHN0YXRlLm5sZW4sIHN0YXRlLmxlbmNvZGUsIDAsIHN0YXRlLndvcmssIG9wdHMpO1xuICAgICAgICAvLyBXZSBoYXZlIHNlcGFyYXRlIHRhYmxlcyAmIG5vIHBvaW50ZXJzLiAyIGNvbW1lbnRlZCBsaW5lcyBiZWxvdyBub3QgbmVlZGVkLlxuICAgICAgICAvLyBzdGF0ZS5uZXh0X2luZGV4ID0gb3B0cy50YWJsZV9pbmRleDtcbiAgICAgICAgc3RhdGUubGVuYml0cyA9IG9wdHMuYml0cztcbiAgICAgICAgLy8gc3RhdGUubGVuY29kZSA9IHN0YXRlLm5leHQ7XG5cbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldCc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIHN0YXRlLmRpc3RiaXRzID0gNjtcbiAgICAgICAgLy9zdGF0ZS5kaXN0Y29kZS5jb3B5KHN0YXRlLmNvZGVzKTtcbiAgICAgICAgLy8gU3dpdGNoIHRvIHVzZSBkeW5hbWljIHRhYmxlXG4gICAgICAgIHN0YXRlLmRpc3Rjb2RlID0gc3RhdGUuZGlzdGR5bjtcbiAgICAgICAgb3B0cyA9IHsgYml0czogc3RhdGUuZGlzdGJpdHMgfTtcbiAgICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShESVNUUywgc3RhdGUubGVucywgc3RhdGUubmxlbiwgc3RhdGUubmRpc3QsIHN0YXRlLmRpc3Rjb2RlLCAwLCBzdGF0ZS53b3JrLCBvcHRzKTtcbiAgICAgICAgLy8gV2UgaGF2ZSBzZXBhcmF0ZSB0YWJsZXMgJiBubyBwb2ludGVycy4gMiBjb21tZW50ZWQgbGluZXMgYmVsb3cgbm90IG5lZWRlZC5cbiAgICAgICAgLy8gc3RhdGUubmV4dF9pbmRleCA9IG9wdHMudGFibGVfaW5kZXg7XG4gICAgICAgIHN0YXRlLmRpc3RiaXRzID0gb3B0cy5iaXRzO1xuICAgICAgICAvLyBzdGF0ZS5kaXN0Y29kZSA9IHN0YXRlLm5leHQ7XG5cbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2VzIHNldCc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvL1RyYWNldigoc3RkZXJyLCAnaW5mbGF0ZTogICAgICAgY29kZXMgb2tcXG4nKSk7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBMRU5fO1xuICAgICAgICBpZiAoZmx1c2ggPT09IFpfVFJFRVMpIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgTEVOXzpcbiAgICAgICAgc3RhdGUubW9kZSA9IExFTjtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBMRU46XG4gICAgICAgIGlmIChoYXZlID49IDYgJiYgbGVmdCA+PSAyNTgpIHtcbiAgICAgICAgICAvLy0tLSBSRVNUT1JFKCkgLS0tXG4gICAgICAgICAgc3RybS5uZXh0X291dCA9IHB1dDtcbiAgICAgICAgICBzdHJtLmF2YWlsX291dCA9IGxlZnQ7XG4gICAgICAgICAgc3RybS5uZXh0X2luID0gbmV4dDtcbiAgICAgICAgICBzdHJtLmF2YWlsX2luID0gaGF2ZTtcbiAgICAgICAgICBzdGF0ZS5ob2xkID0gaG9sZDtcbiAgICAgICAgICBzdGF0ZS5iaXRzID0gYml0cztcbiAgICAgICAgICAvLy0tLVxuICAgICAgICAgIGluZmxhdGVfZmFzdChzdHJtLCBfb3V0KTtcbiAgICAgICAgICAvLy0tLSBMT0FEKCkgLS0tXG4gICAgICAgICAgcHV0ID0gc3RybS5uZXh0X291dDtcbiAgICAgICAgICBvdXRwdXQgPSBzdHJtLm91dHB1dDtcbiAgICAgICAgICBsZWZ0ID0gc3RybS5hdmFpbF9vdXQ7XG4gICAgICAgICAgbmV4dCA9IHN0cm0ubmV4dF9pbjtcbiAgICAgICAgICBpbnB1dCA9IHN0cm0uaW5wdXQ7XG4gICAgICAgICAgaGF2ZSA9IHN0cm0uYXZhaWxfaW47XG4gICAgICAgICAgaG9sZCA9IHN0YXRlLmhvbGQ7XG4gICAgICAgICAgYml0cyA9IHN0YXRlLmJpdHM7XG4gICAgICAgICAgLy8tLS1cblxuICAgICAgICAgIGlmIChzdGF0ZS5tb2RlID09PSBUWVBFKSB7XG4gICAgICAgICAgICBzdGF0ZS5iYWNrID0gLTE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLmJhY2sgPSAwO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgaGVyZSA9IHN0YXRlLmxlbmNvZGVbaG9sZCAmICgoMSA8PCBzdGF0ZS5sZW5iaXRzKSAtIDEpXTsgIC8qQklUUyhzdGF0ZS5sZW5iaXRzKSovXG4gICAgICAgICAgaGVyZV9iaXRzID0gaGVyZSA+Pj4gMjQ7XG4gICAgICAgICAgaGVyZV9vcCA9IChoZXJlID4+PiAxNikgJiAweGZmO1xuICAgICAgICAgIGhlcmVfdmFsID0gaGVyZSAmIDB4ZmZmZjtcblxuICAgICAgICAgIGlmIChoZXJlX2JpdHMgPD0gYml0cykgeyBicmVhazsgfVxuICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy9cbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgfVxuICAgICAgICBpZiAoaGVyZV9vcCAmJiAoaGVyZV9vcCAmIDB4ZjApID09PSAwKSB7XG4gICAgICAgICAgbGFzdF9iaXRzID0gaGVyZV9iaXRzO1xuICAgICAgICAgIGxhc3Rfb3AgPSBoZXJlX29wO1xuICAgICAgICAgIGxhc3RfdmFsID0gaGVyZV92YWw7XG4gICAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgaGVyZSA9IHN0YXRlLmxlbmNvZGVbbGFzdF92YWwgK1xuICAgICAgICAgICAgICAgICAgICAoKGhvbGQgJiAoKDEgPDwgKGxhc3RfYml0cyArIGxhc3Rfb3ApKSAtIDEpKS8qQklUUyhsYXN0LmJpdHMgKyBsYXN0Lm9wKSovID4+IGxhc3RfYml0cyldO1xuICAgICAgICAgICAgaGVyZV9iaXRzID0gaGVyZSA+Pj4gMjQ7XG4gICAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7XG4gICAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgICAgIGlmICgobGFzdF9iaXRzICsgaGVyZV9iaXRzKSA8PSBiaXRzKSB7IGJyZWFrOyB9XG4gICAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vXG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLy0tLSBEUk9QQklUUyhsYXN0LmJpdHMpIC0tLS8vXG4gICAgICAgICAgaG9sZCA+Pj49IGxhc3RfYml0cztcbiAgICAgICAgICBiaXRzIC09IGxhc3RfYml0cztcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgc3RhdGUuYmFjayArPSBsYXN0X2JpdHM7XG4gICAgICAgIH1cbiAgICAgICAgLy8tLS0gRFJPUEJJVFMoaGVyZS5iaXRzKSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzO1xuICAgICAgICBiaXRzIC09IGhlcmVfYml0cztcbiAgICAgICAgLy8tLS0vL1xuICAgICAgICBzdGF0ZS5iYWNrICs9IGhlcmVfYml0cztcbiAgICAgICAgc3RhdGUubGVuZ3RoID0gaGVyZV92YWw7XG4gICAgICAgIGlmIChoZXJlX29wID09PSAwKSB7XG4gICAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIGhlcmUudmFsID49IDB4MjAgJiYgaGVyZS52YWwgPCAweDdmID9cbiAgICAgICAgICAvLyAgICAgICAgXCJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgJyVjJ1xcblwiIDpcbiAgICAgICAgICAvLyAgICAgICAgXCJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgMHglMDJ4XFxuXCIsIGhlcmUudmFsKSk7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IExJVDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGVyZV9vcCAmIDMyKSB7XG4gICAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBlbmQgb2YgYmxvY2tcXG5cIikpO1xuICAgICAgICAgIHN0YXRlLmJhY2sgPSAtMTtcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGVyZV9vcCAmIDY0KSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLmV4dHJhID0gaGVyZV9vcCAmIDE1O1xuICAgICAgICBzdGF0ZS5tb2RlID0gTEVORVhUO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIExFTkVYVDpcbiAgICAgICAgaWYgKHN0YXRlLmV4dHJhKSB7XG4gICAgICAgICAgLy89PT0gTkVFREJJVFMoc3RhdGUuZXh0cmEpO1xuICAgICAgICAgIG4gPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgICB3aGlsZSAoYml0cyA8IG4pIHtcbiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICBzdGF0ZS5sZW5ndGggKz0gaG9sZCAmICgoMSA8PCBzdGF0ZS5leHRyYSkgLSAxKS8qQklUUyhzdGF0ZS5leHRyYSkqLztcbiAgICAgICAgICAvLy0tLSBEUk9QQklUUyhzdGF0ZS5leHRyYSkgLS0tLy9cbiAgICAgICAgICBob2xkID4+Pj0gc3RhdGUuZXh0cmE7XG4gICAgICAgICAgYml0cyAtPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgc3RhdGUuYmFjayArPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgfVxuICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICAgIGxlbmd0aCAldVxcblwiLCBzdGF0ZS5sZW5ndGgpKTtcbiAgICAgICAgc3RhdGUud2FzID0gc3RhdGUubGVuZ3RoO1xuICAgICAgICBzdGF0ZS5tb2RlID0gRElTVDtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBESVNUOlxuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgaGVyZSA9IHN0YXRlLmRpc3Rjb2RlW2hvbGQgJiAoKDEgPDwgc3RhdGUuZGlzdGJpdHMpIC0gMSldOy8qQklUUyhzdGF0ZS5kaXN0Yml0cykqL1xuICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0O1xuICAgICAgICAgIGhlcmVfb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgICBpZiAoKGhlcmVfYml0cykgPD0gYml0cykgeyBicmVhazsgfVxuICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy9cbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgfVxuICAgICAgICBpZiAoKGhlcmVfb3AgJiAweGYwKSA9PT0gMCkge1xuICAgICAgICAgIGxhc3RfYml0cyA9IGhlcmVfYml0cztcbiAgICAgICAgICBsYXN0X29wID0gaGVyZV9vcDtcbiAgICAgICAgICBsYXN0X3ZhbCA9IGhlcmVfdmFsO1xuICAgICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGhlcmUgPSBzdGF0ZS5kaXN0Y29kZVtsYXN0X3ZhbCArXG4gICAgICAgICAgICAgICAgICAgICgoaG9sZCAmICgoMSA8PCAobGFzdF9iaXRzICsgbGFzdF9vcCkpIC0gMSkpLypCSVRTKGxhc3QuYml0cyArIGxhc3Qub3ApKi8gPj4gbGFzdF9iaXRzKV07XG4gICAgICAgICAgICBoZXJlX2JpdHMgPSBoZXJlID4+PiAyNDtcbiAgICAgICAgICAgIGhlcmVfb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgICAgICAgIGhlcmVfdmFsID0gaGVyZSAmIDB4ZmZmZjtcblxuICAgICAgICAgICAgaWYgKChsYXN0X2JpdHMgKyBoZXJlX2JpdHMpIDw9IGJpdHMpIHsgYnJlYWs7IH1cbiAgICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy9cbiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vLS0tIERST1BCSVRTKGxhc3QuYml0cykgLS0tLy9cbiAgICAgICAgICBob2xkID4+Pj0gbGFzdF9iaXRzO1xuICAgICAgICAgIGJpdHMgLT0gbGFzdF9iaXRzO1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICBzdGF0ZS5iYWNrICs9IGxhc3RfYml0cztcbiAgICAgICAgfVxuICAgICAgICAvLy0tLSBEUk9QQklUUyhoZXJlLmJpdHMpIC0tLS8vXG4gICAgICAgIGhvbGQgPj4+PSBoZXJlX2JpdHM7XG4gICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzO1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIHN0YXRlLmJhY2sgKz0gaGVyZV9iaXRzO1xuICAgICAgICBpZiAoaGVyZV9vcCAmIDY0KSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBkaXN0YW5jZSBjb2RlJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLm9mZnNldCA9IGhlcmVfdmFsO1xuICAgICAgICBzdGF0ZS5leHRyYSA9IChoZXJlX29wKSAmIDE1O1xuICAgICAgICBzdGF0ZS5tb2RlID0gRElTVEVYVDtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBESVNURVhUOlxuICAgICAgICBpZiAoc3RhdGUuZXh0cmEpIHtcbiAgICAgICAgICAvLz09PSBORUVEQklUUyhzdGF0ZS5leHRyYSk7XG4gICAgICAgICAgbiA9IHN0YXRlLmV4dHJhO1xuICAgICAgICAgIHdoaWxlIChiaXRzIDwgbikge1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIHN0YXRlLm9mZnNldCArPSBob2xkICYgKCgxIDw8IHN0YXRlLmV4dHJhKSAtIDEpLypCSVRTKHN0YXRlLmV4dHJhKSovO1xuICAgICAgICAgIC8vLS0tIERST1BCSVRTKHN0YXRlLmV4dHJhKSAtLS0vL1xuICAgICAgICAgIGhvbGQgPj4+PSBzdGF0ZS5leHRyYTtcbiAgICAgICAgICBiaXRzIC09IHN0YXRlLmV4dHJhO1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICBzdGF0ZS5iYWNrICs9IHN0YXRlLmV4dHJhO1xuICAgICAgICB9XG4vLyNpZmRlZiBJTkZMQVRFX1NUUklDVFxuICAgICAgICBpZiAoc3RhdGUub2Zmc2V0ID4gc3RhdGUuZG1heCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4vLyNlbmRpZlxuICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICAgIGRpc3RhbmNlICV1XFxuXCIsIHN0YXRlLm9mZnNldCkpO1xuICAgICAgICBzdGF0ZS5tb2RlID0gTUFUQ0g7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgTUFUQ0g6XG4gICAgICAgIGlmIChsZWZ0ID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICBjb3B5ID0gX291dCAtIGxlZnQ7XG4gICAgICAgIGlmIChzdGF0ZS5vZmZzZXQgPiBjb3B5KSB7ICAgICAgICAgLyogY29weSBmcm9tIHdpbmRvdyAqL1xuICAgICAgICAgIGNvcHkgPSBzdGF0ZS5vZmZzZXQgLSBjb3B5O1xuICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUud2hhdmUpIHtcbiAgICAgICAgICAgIGlmIChzdGF0ZS5zYW5lKSB7XG4gICAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrJztcbiAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4vLyAoISkgVGhpcyBibG9jayBpcyBkaXNhYmxlZCBpbiB6bGliIGRlZmF1bHRzLFxuLy8gZG9uJ3QgZW5hYmxlIGl0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eVxuLy8jaWZkZWYgSU5GTEFURV9BTExPV19JTlZBTElEX0RJU1RBTkNFX1RPT0ZBUl9BUlJSXG4vLyAgICAgICAgICBUcmFjZSgoc3RkZXJyLCBcImluZmxhdGUuYyB0b28gZmFyXFxuXCIpKTtcbi8vICAgICAgICAgIGNvcHkgLT0gc3RhdGUud2hhdmU7XG4vLyAgICAgICAgICBpZiAoY29weSA+IHN0YXRlLmxlbmd0aCkgeyBjb3B5ID0gc3RhdGUubGVuZ3RoOyB9XG4vLyAgICAgICAgICBpZiAoY29weSA+IGxlZnQpIHsgY29weSA9IGxlZnQ7IH1cbi8vICAgICAgICAgIGxlZnQgLT0gY29weTtcbi8vICAgICAgICAgIHN0YXRlLmxlbmd0aCAtPSBjb3B5O1xuLy8gICAgICAgICAgZG8ge1xuLy8gICAgICAgICAgICBvdXRwdXRbcHV0KytdID0gMDtcbi8vICAgICAgICAgIH0gd2hpbGUgKC0tY29weSk7XG4vLyAgICAgICAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSB7IHN0YXRlLm1vZGUgPSBMRU47IH1cbi8vICAgICAgICAgIGJyZWFrO1xuLy8jZW5kaWZcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNvcHkgPiBzdGF0ZS53bmV4dCkge1xuICAgICAgICAgICAgY29weSAtPSBzdGF0ZS53bmV4dDtcbiAgICAgICAgICAgIGZyb20gPSBzdGF0ZS53c2l6ZSAtIGNvcHk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZnJvbSA9IHN0YXRlLnduZXh0IC0gY29weTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNvcHkgPiBzdGF0ZS5sZW5ndGgpIHsgY29weSA9IHN0YXRlLmxlbmd0aDsgfVxuICAgICAgICAgIGZyb21fc291cmNlID0gc3RhdGUud2luZG93O1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvcHkgZnJvbSBvdXRwdXQgKi9cbiAgICAgICAgICBmcm9tX3NvdXJjZSA9IG91dHB1dDtcbiAgICAgICAgICBmcm9tID0gcHV0IC0gc3RhdGUub2Zmc2V0O1xuICAgICAgICAgIGNvcHkgPSBzdGF0ZS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvcHkgPiBsZWZ0KSB7IGNvcHkgPSBsZWZ0OyB9XG4gICAgICAgIGxlZnQgLT0gY29weTtcbiAgICAgICAgc3RhdGUubGVuZ3RoIC09IGNvcHk7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICBvdXRwdXRbcHV0KytdID0gZnJvbV9zb3VyY2VbZnJvbSsrXTtcbiAgICAgICAgfSB3aGlsZSAoLS1jb3B5KTtcbiAgICAgICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgeyBzdGF0ZS5tb2RlID0gTEVOOyB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBMSVQ6XG4gICAgICAgIGlmIChsZWZ0ID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICBvdXRwdXRbcHV0KytdID0gc3RhdGUubGVuZ3RoO1xuICAgICAgICBsZWZ0LS07XG4gICAgICAgIHN0YXRlLm1vZGUgPSBMRU47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDSEVDSzpcbiAgICAgICAgaWYgKHN0YXRlLndyYXApIHtcbiAgICAgICAgICAvLz09PSBORUVEQklUUygzMik7XG4gICAgICAgICAgd2hpbGUgKGJpdHMgPCAzMikge1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICAvLyBVc2UgJ3wnIGluc3RlYWQgb2YgJysnIHRvIG1ha2Ugc3VyZSB0aGF0IHJlc3VsdCBpcyBzaWduZWRcbiAgICAgICAgICAgIGhvbGQgfD0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgX291dCAtPSBsZWZ0O1xuICAgICAgICAgIHN0cm0udG90YWxfb3V0ICs9IF9vdXQ7XG4gICAgICAgICAgc3RhdGUudG90YWwgKz0gX291dDtcbiAgICAgICAgICBpZiAoX291dCkge1xuICAgICAgICAgICAgc3RybS5hZGxlciA9IHN0YXRlLmNoZWNrID1cbiAgICAgICAgICAgICAgICAvKlVQREFURShzdGF0ZS5jaGVjaywgcHV0IC0gX291dCwgX291dCk7Ki9cbiAgICAgICAgICAgICAgICAoc3RhdGUuZmxhZ3MgPyBjcmMzMihzdGF0ZS5jaGVjaywgb3V0cHV0LCBfb3V0LCBwdXQgLSBfb3V0KSA6IGFkbGVyMzIoc3RhdGUuY2hlY2ssIG91dHB1dCwgX291dCwgcHV0IC0gX291dCkpO1xuXG4gICAgICAgICAgfVxuICAgICAgICAgIF9vdXQgPSBsZWZ0O1xuICAgICAgICAgIC8vIE5COiBjcmMzMiBzdG9yZWQgYXMgc2lnbmVkIDMyLWJpdCBpbnQsIHpzd2FwMzIgcmV0dXJucyBzaWduZWQgdG9vXG4gICAgICAgICAgaWYgKChzdGF0ZS5mbGFncyA/IGhvbGQgOiB6c3dhcDMyKGhvbGQpKSAhPT0gc3RhdGUuY2hlY2spIHtcbiAgICAgICAgICAgIHN0cm0ubXNnID0gJ2luY29ycmVjdCBkYXRhIGNoZWNrJztcbiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgICBob2xkID0gMDtcbiAgICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgIGNoZWNrIG1hdGNoZXMgdHJhaWxlclxcblwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUubW9kZSA9IExFTkdUSDtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBMRU5HVEg6XG4gICAgICAgIGlmIChzdGF0ZS53cmFwICYmIHN0YXRlLmZsYWdzKSB7XG4gICAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpO1xuICAgICAgICAgIHdoaWxlIChiaXRzIDwgMzIpIHtcbiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICBpZiAoaG9sZCAhPT0gKHN0YXRlLnRvdGFsICYgMHhmZmZmZmZmZikpIHtcbiAgICAgICAgICAgIHN0cm0ubXNnID0gJ2luY29ycmVjdCBsZW5ndGggY2hlY2snO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgICAgIGhvbGQgPSAwO1xuICAgICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgbGVuZ3RoIG1hdGNoZXMgdHJhaWxlclxcblwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUubW9kZSA9IERPTkU7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgRE9ORTpcbiAgICAgICAgcmV0ID0gWl9TVFJFQU1fRU5EO1xuICAgICAgICBicmVhayBpbmZfbGVhdmU7XG4gICAgICBjYXNlIEJBRDpcbiAgICAgICAgcmV0ID0gWl9EQVRBX0VSUk9SO1xuICAgICAgICBicmVhayBpbmZfbGVhdmU7XG4gICAgICBjYXNlIE1FTTpcbiAgICAgICAgcmV0dXJuIFpfTUVNX0VSUk9SO1xuICAgICAgY2FzZSBTWU5DOlxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gICAgfVxuICB9XG5cbiAgLy8gaW5mX2xlYXZlIDwtIGhlcmUgaXMgcmVhbCBwbGFjZSBmb3IgXCJnb3RvIGluZl9sZWF2ZVwiLCBlbXVsYXRlZCB2aWEgXCJicmVhayBpbmZfbGVhdmVcIlxuXG4gIC8qXG4gICAgIFJldHVybiBmcm9tIGluZmxhdGUoKSwgdXBkYXRpbmcgdGhlIHRvdGFsIGNvdW50cyBhbmQgdGhlIGNoZWNrIHZhbHVlLlxuICAgICBJZiB0aGVyZSB3YXMgbm8gcHJvZ3Jlc3MgZHVyaW5nIHRoZSBpbmZsYXRlKCkgY2FsbCwgcmV0dXJuIGEgYnVmZmVyXG4gICAgIGVycm9yLiAgQ2FsbCB1cGRhdGV3aW5kb3coKSB0byBjcmVhdGUgYW5kL29yIHVwZGF0ZSB0aGUgd2luZG93IHN0YXRlLlxuICAgICBOb3RlOiBhIG1lbW9yeSBlcnJvciBmcm9tIGluZmxhdGUoKSBpcyBub24tcmVjb3ZlcmFibGUuXG4gICAqL1xuXG4gIC8vLS0tIFJFU1RPUkUoKSAtLS1cbiAgc3RybS5uZXh0X291dCA9IHB1dDtcbiAgc3RybS5hdmFpbF9vdXQgPSBsZWZ0O1xuICBzdHJtLm5leHRfaW4gPSBuZXh0O1xuICBzdHJtLmF2YWlsX2luID0gaGF2ZTtcbiAgc3RhdGUuaG9sZCA9IGhvbGQ7XG4gIHN0YXRlLmJpdHMgPSBiaXRzO1xuICAvLy0tLVxuXG4gIGlmIChzdGF0ZS53c2l6ZSB8fCAoX291dCAhPT0gc3RybS5hdmFpbF9vdXQgJiYgc3RhdGUubW9kZSA8IEJBRCAmJlxuICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZS5tb2RlIDwgQ0hFQ0sgfHwgZmx1c2ggIT09IFpfRklOSVNIKSkpIHtcbiAgICBpZiAodXBkYXRld2luZG93KHN0cm0sIHN0cm0ub3V0cHV0LCBzdHJtLm5leHRfb3V0LCBfb3V0IC0gc3RybS5hdmFpbF9vdXQpKSB7XG4gICAgICBzdGF0ZS5tb2RlID0gTUVNO1xuICAgICAgcmV0dXJuIFpfTUVNX0VSUk9SO1xuICAgIH1cbiAgfVxuICBfaW4gLT0gc3RybS5hdmFpbF9pbjtcbiAgX291dCAtPSBzdHJtLmF2YWlsX291dDtcbiAgc3RybS50b3RhbF9pbiArPSBfaW47XG4gIHN0cm0udG90YWxfb3V0ICs9IF9vdXQ7XG4gIHN0YXRlLnRvdGFsICs9IF9vdXQ7XG4gIGlmIChzdGF0ZS53cmFwICYmIF9vdXQpIHtcbiAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSAvKlVQREFURShzdGF0ZS5jaGVjaywgc3RybS5uZXh0X291dCAtIF9vdXQsIF9vdXQpOyovXG4gICAgICAoc3RhdGUuZmxhZ3MgPyBjcmMzMihzdGF0ZS5jaGVjaywgb3V0cHV0LCBfb3V0LCBzdHJtLm5leHRfb3V0IC0gX291dCkgOiBhZGxlcjMyKHN0YXRlLmNoZWNrLCBvdXRwdXQsIF9vdXQsIHN0cm0ubmV4dF9vdXQgLSBfb3V0KSk7XG4gIH1cbiAgc3RybS5kYXRhX3R5cGUgPSBzdGF0ZS5iaXRzICsgKHN0YXRlLmxhc3QgPyA2NCA6IDApICtcbiAgICAgICAgICAgICAgICAgICAgKHN0YXRlLm1vZGUgPT09IFRZUEUgPyAxMjggOiAwKSArXG4gICAgICAgICAgICAgICAgICAgIChzdGF0ZS5tb2RlID09PSBMRU5fIHx8IHN0YXRlLm1vZGUgPT09IENPUFlfID8gMjU2IDogMCk7XG4gIGlmICgoKF9pbiA9PT0gMCAmJiBfb3V0ID09PSAwKSB8fCBmbHVzaCA9PT0gWl9GSU5JU0gpICYmIHJldCA9PT0gWl9PSykge1xuICAgIHJldCA9IFpfQlVGX0VSUk9SO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGluZmxhdGVFbmQoc3RybSkge1xuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSAvKnx8IHN0cm0tPnpmcmVlID09IChmcmVlX2Z1bmMpMCovKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgdmFyIHN0YXRlID0gc3RybS5zdGF0ZTtcbiAgaWYgKHN0YXRlLndpbmRvdykge1xuICAgIHN0YXRlLndpbmRvdyA9IG51bGw7XG4gIH1cbiAgc3RybS5zdGF0ZSA9IG51bGw7XG4gIHJldHVybiBaX09LO1xufVxuXG5mdW5jdGlvbiBpbmZsYXRlR2V0SGVhZGVyKHN0cm0sIGhlYWQpIHtcbiAgdmFyIHN0YXRlO1xuXG4gIC8qIGNoZWNrIHN0YXRlICovXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuICBpZiAoKHN0YXRlLndyYXAgJiAyKSA9PT0gMCkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cblxuICAvKiBzYXZlIGhlYWRlciBzdHJ1Y3R1cmUgKi9cbiAgc3RhdGUuaGVhZCA9IGhlYWQ7XG4gIGhlYWQuZG9uZSA9IGZhbHNlO1xuICByZXR1cm4gWl9PSztcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZVNldERpY3Rpb25hcnkoc3RybSwgZGljdGlvbmFyeSkge1xuICB2YXIgZGljdExlbmd0aCA9IGRpY3Rpb25hcnkubGVuZ3RoO1xuXG4gIHZhciBzdGF0ZTtcbiAgdmFyIGRpY3RpZDtcbiAgdmFyIHJldDtcblxuICAvKiBjaGVjayBzdGF0ZSAqL1xuICBpZiAoIXN0cm0gLyogPT0gWl9OVUxMICovIHx8ICFzdHJtLnN0YXRlIC8qID09IFpfTlVMTCAqLykgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuXG4gIGlmIChzdGF0ZS53cmFwICE9PSAwICYmIHN0YXRlLm1vZGUgIT09IERJQ1QpIHtcbiAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gIH1cblxuICAvKiBjaGVjayBmb3IgY29ycmVjdCBkaWN0aW9uYXJ5IGlkZW50aWZpZXIgKi9cbiAgaWYgKHN0YXRlLm1vZGUgPT09IERJQ1QpIHtcbiAgICBkaWN0aWQgPSAxOyAvKiBhZGxlcjMyKDAsIG51bGwsIDApKi9cbiAgICAvKiBkaWN0aWQgPSBhZGxlcjMyKGRpY3RpZCwgZGljdGlvbmFyeSwgZGljdExlbmd0aCk7ICovXG4gICAgZGljdGlkID0gYWRsZXIzMihkaWN0aWQsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgsIDApO1xuICAgIGlmIChkaWN0aWQgIT09IHN0YXRlLmNoZWNrKSB7XG4gICAgICByZXR1cm4gWl9EQVRBX0VSUk9SO1xuICAgIH1cbiAgfVxuICAvKiBjb3B5IGRpY3Rpb25hcnkgdG8gd2luZG93IHVzaW5nIHVwZGF0ZXdpbmRvdygpLCB3aGljaCB3aWxsIGFtZW5kIHRoZVxuICAgZXhpc3RpbmcgZGljdGlvbmFyeSBpZiBhcHByb3ByaWF0ZSAqL1xuICByZXQgPSB1cGRhdGV3aW5kb3coc3RybSwgZGljdGlvbmFyeSwgZGljdExlbmd0aCwgZGljdExlbmd0aCk7XG4gIGlmIChyZXQpIHtcbiAgICBzdGF0ZS5tb2RlID0gTUVNO1xuICAgIHJldHVybiBaX01FTV9FUlJPUjtcbiAgfVxuICBzdGF0ZS5oYXZlZGljdCA9IDE7XG4gIC8vIFRyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgZGljdGlvbmFyeSBzZXRcXG5cIikpO1xuICByZXR1cm4gWl9PSztcbn1cblxuZXhwb3J0cy5pbmZsYXRlUmVzZXQgPSBpbmZsYXRlUmVzZXQ7XG5leHBvcnRzLmluZmxhdGVSZXNldDIgPSBpbmZsYXRlUmVzZXQyO1xuZXhwb3J0cy5pbmZsYXRlUmVzZXRLZWVwID0gaW5mbGF0ZVJlc2V0S2VlcDtcbmV4cG9ydHMuaW5mbGF0ZUluaXQgPSBpbmZsYXRlSW5pdDtcbmV4cG9ydHMuaW5mbGF0ZUluaXQyID0gaW5mbGF0ZUluaXQyO1xuZXhwb3J0cy5pbmZsYXRlID0gaW5mbGF0ZTtcbmV4cG9ydHMuaW5mbGF0ZUVuZCA9IGluZmxhdGVFbmQ7XG5leHBvcnRzLmluZmxhdGVHZXRIZWFkZXIgPSBpbmZsYXRlR2V0SGVhZGVyO1xuZXhwb3J0cy5pbmZsYXRlU2V0RGljdGlvbmFyeSA9IGluZmxhdGVTZXREaWN0aW9uYXJ5O1xuZXhwb3J0cy5pbmZsYXRlSW5mbyA9ICdwYWtvIGluZmxhdGUgKGZyb20gTm9kZWNhIHByb2plY3QpJztcblxuLyogTm90IGltcGxlbWVudGVkXG5leHBvcnRzLmluZmxhdGVDb3B5ID0gaW5mbGF0ZUNvcHk7XG5leHBvcnRzLmluZmxhdGVHZXREaWN0aW9uYXJ5ID0gaW5mbGF0ZUdldERpY3Rpb25hcnk7XG5leHBvcnRzLmluZmxhdGVNYXJrID0gaW5mbGF0ZU1hcms7XG5leHBvcnRzLmluZmxhdGVQcmltZSA9IGluZmxhdGVQcmltZTtcbmV4cG9ydHMuaW5mbGF0ZVN5bmMgPSBpbmZsYXRlU3luYztcbmV4cG9ydHMuaW5mbGF0ZVN5bmNQb2ludCA9IGluZmxhdGVTeW5jUG9pbnQ7XG5leHBvcnRzLmluZmxhdGVVbmRlcm1pbmUgPSBpbmZsYXRlVW5kZXJtaW5lO1xuKi9cbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy9jb21tb24nKTtcblxudmFyIE1BWEJJVFMgPSAxNTtcbnZhciBFTk9VR0hfTEVOUyA9IDg1MjtcbnZhciBFTk9VR0hfRElTVFMgPSA1OTI7XG4vL3ZhciBFTk9VR0ggPSAoRU5PVUdIX0xFTlMrRU5PVUdIX0RJU1RTKTtcblxudmFyIENPREVTID0gMDtcbnZhciBMRU5TID0gMTtcbnZhciBESVNUUyA9IDI7XG5cbnZhciBsYmFzZSA9IFsgLyogTGVuZ3RoIGNvZGVzIDI1Ny4uMjg1IGJhc2UgKi9cbiAgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMywgMTUsIDE3LCAxOSwgMjMsIDI3LCAzMSxcbiAgMzUsIDQzLCA1MSwgNTksIDY3LCA4MywgOTksIDExNSwgMTMxLCAxNjMsIDE5NSwgMjI3LCAyNTgsIDAsIDBcbl07XG5cbnZhciBsZXh0ID0gWyAvKiBMZW5ndGggY29kZXMgMjU3Li4yODUgZXh0cmEgKi9cbiAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNywgMTcsIDE3LCAxNywgMTgsIDE4LCAxOCwgMTgsXG4gIDE5LCAxOSwgMTksIDE5LCAyMCwgMjAsIDIwLCAyMCwgMjEsIDIxLCAyMSwgMjEsIDE2LCA3MiwgNzhcbl07XG5cbnZhciBkYmFzZSA9IFsgLyogRGlzdGFuY2UgY29kZXMgMC4uMjkgYmFzZSAqL1xuICAxLCAyLCAzLCA0LCA1LCA3LCA5LCAxMywgMTcsIDI1LCAzMywgNDksIDY1LCA5NywgMTI5LCAxOTMsXG4gIDI1NywgMzg1LCA1MTMsIDc2OSwgMTAyNSwgMTUzNywgMjA0OSwgMzA3MywgNDA5NywgNjE0NSxcbiAgODE5MywgMTIyODksIDE2Mzg1LCAyNDU3NywgMCwgMFxuXTtcblxudmFyIGRleHQgPSBbIC8qIERpc3RhbmNlIGNvZGVzIDAuLjI5IGV4dHJhICovXG4gIDE2LCAxNiwgMTYsIDE2LCAxNywgMTcsIDE4LCAxOCwgMTksIDE5LCAyMCwgMjAsIDIxLCAyMSwgMjIsIDIyLFxuICAyMywgMjMsIDI0LCAyNCwgMjUsIDI1LCAyNiwgMjYsIDI3LCAyNyxcbiAgMjgsIDI4LCAyOSwgMjksIDY0LCA2NFxuXTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmZsYXRlX3RhYmxlKHR5cGUsIGxlbnMsIGxlbnNfaW5kZXgsIGNvZGVzLCB0YWJsZSwgdGFibGVfaW5kZXgsIHdvcmssIG9wdHMpXG57XG4gIHZhciBiaXRzID0gb3B0cy5iaXRzO1xuICAgICAgLy9oZXJlID0gb3B0cy5oZXJlOyAvKiB0YWJsZSBlbnRyeSBmb3IgZHVwbGljYXRpb24gKi9cblxuICB2YXIgbGVuID0gMDsgICAgICAgICAgICAgICAvKiBhIGNvZGUncyBsZW5ndGggaW4gYml0cyAqL1xuICB2YXIgc3ltID0gMDsgICAgICAgICAgICAgICAvKiBpbmRleCBvZiBjb2RlIHN5bWJvbHMgKi9cbiAgdmFyIG1pbiA9IDAsIG1heCA9IDA7ICAgICAgICAgIC8qIG1pbmltdW0gYW5kIG1heGltdW0gY29kZSBsZW5ndGhzICovXG4gIHZhciByb290ID0gMDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBpbmRleCBiaXRzIGZvciByb290IHRhYmxlICovXG4gIHZhciBjdXJyID0gMDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBpbmRleCBiaXRzIGZvciBjdXJyZW50IHRhYmxlICovXG4gIHZhciBkcm9wID0gMDsgICAgICAgICAgICAgIC8qIGNvZGUgYml0cyB0byBkcm9wIGZvciBzdWItdGFibGUgKi9cbiAgdmFyIGxlZnQgPSAwOyAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgcHJlZml4IGNvZGVzIGF2YWlsYWJsZSAqL1xuICB2YXIgdXNlZCA9IDA7ICAgICAgICAgICAgICAvKiBjb2RlIGVudHJpZXMgaW4gdGFibGUgdXNlZCAqL1xuICB2YXIgaHVmZiA9IDA7ICAgICAgICAgICAgICAvKiBIdWZmbWFuIGNvZGUgKi9cbiAgdmFyIGluY3I7ICAgICAgICAgICAgICAvKiBmb3IgaW5jcmVtZW50aW5nIGNvZGUsIGluZGV4ICovXG4gIHZhciBmaWxsOyAgICAgICAgICAgICAgLyogaW5kZXggZm9yIHJlcGxpY2F0aW5nIGVudHJpZXMgKi9cbiAgdmFyIGxvdzsgICAgICAgICAgICAgICAvKiBsb3cgYml0cyBmb3IgY3VycmVudCByb290IGVudHJ5ICovXG4gIHZhciBtYXNrOyAgICAgICAgICAgICAgLyogbWFzayBmb3IgbG93IHJvb3QgYml0cyAqL1xuICB2YXIgbmV4dDsgICAgICAgICAgICAgLyogbmV4dCBhdmFpbGFibGUgc3BhY2UgaW4gdGFibGUgKi9cbiAgdmFyIGJhc2UgPSBudWxsOyAgICAgLyogYmFzZSB2YWx1ZSB0YWJsZSB0byB1c2UgKi9cbiAgdmFyIGJhc2VfaW5kZXggPSAwO1xuLy8gIHZhciBzaG9leHRyYTsgICAgLyogZXh0cmEgYml0cyB0YWJsZSB0byB1c2UgKi9cbiAgdmFyIGVuZDsgICAgICAgICAgICAgICAgICAgIC8qIHVzZSBiYXNlIGFuZCBleHRyYSBmb3Igc3ltYm9sID4gZW5kICovXG4gIHZhciBjb3VudCA9IG5ldyB1dGlscy5CdWYxNihNQVhCSVRTICsgMSk7IC8vW01BWEJJVFMrMV07ICAgIC8qIG51bWJlciBvZiBjb2RlcyBvZiBlYWNoIGxlbmd0aCAqL1xuICB2YXIgb2ZmcyA9IG5ldyB1dGlscy5CdWYxNihNQVhCSVRTICsgMSk7IC8vW01BWEJJVFMrMV07ICAgICAvKiBvZmZzZXRzIGluIHRhYmxlIGZvciBlYWNoIGxlbmd0aCAqL1xuICB2YXIgZXh0cmEgPSBudWxsO1xuICB2YXIgZXh0cmFfaW5kZXggPSAwO1xuXG4gIHZhciBoZXJlX2JpdHMsIGhlcmVfb3AsIGhlcmVfdmFsO1xuXG4gIC8qXG4gICBQcm9jZXNzIGEgc2V0IG9mIGNvZGUgbGVuZ3RocyB0byBjcmVhdGUgYSBjYW5vbmljYWwgSHVmZm1hbiBjb2RlLiAgVGhlXG4gICBjb2RlIGxlbmd0aHMgYXJlIGxlbnNbMC4uY29kZXMtMV0uICBFYWNoIGxlbmd0aCBjb3JyZXNwb25kcyB0byB0aGVcbiAgIHN5bWJvbHMgMC4uY29kZXMtMS4gIFRoZSBIdWZmbWFuIGNvZGUgaXMgZ2VuZXJhdGVkIGJ5IGZpcnN0IHNvcnRpbmcgdGhlXG4gICBzeW1ib2xzIGJ5IGxlbmd0aCBmcm9tIHNob3J0IHRvIGxvbmcsIGFuZCByZXRhaW5pbmcgdGhlIHN5bWJvbCBvcmRlclxuICAgZm9yIGNvZGVzIHdpdGggZXF1YWwgbGVuZ3Rocy4gIFRoZW4gdGhlIGNvZGUgc3RhcnRzIHdpdGggYWxsIHplcm8gYml0c1xuICAgZm9yIHRoZSBmaXJzdCBjb2RlIG9mIHRoZSBzaG9ydGVzdCBsZW5ndGgsIGFuZCB0aGUgY29kZXMgYXJlIGludGVnZXJcbiAgIGluY3JlbWVudHMgZm9yIHRoZSBzYW1lIGxlbmd0aCwgYW5kIHplcm9zIGFyZSBhcHBlbmRlZCBhcyB0aGUgbGVuZ3RoXG4gICBpbmNyZWFzZXMuICBGb3IgdGhlIGRlZmxhdGUgZm9ybWF0LCB0aGVzZSBiaXRzIGFyZSBzdG9yZWQgYmFja3dhcmRzXG4gICBmcm9tIHRoZWlyIG1vcmUgbmF0dXJhbCBpbnRlZ2VyIGluY3JlbWVudCBvcmRlcmluZywgYW5kIHNvIHdoZW4gdGhlXG4gICBkZWNvZGluZyB0YWJsZXMgYXJlIGJ1aWx0IGluIHRoZSBsYXJnZSBsb29wIGJlbG93LCB0aGUgaW50ZWdlciBjb2Rlc1xuICAgYXJlIGluY3JlbWVudGVkIGJhY2t3YXJkcy5cblxuICAgVGhpcyByb3V0aW5lIGFzc3VtZXMsIGJ1dCBkb2VzIG5vdCBjaGVjaywgdGhhdCBhbGwgb2YgdGhlIGVudHJpZXMgaW5cbiAgIGxlbnNbXSBhcmUgaW4gdGhlIHJhbmdlIDAuLk1BWEJJVFMuICBUaGUgY2FsbGVyIG11c3QgYXNzdXJlIHRoaXMuXG4gICAxLi5NQVhCSVRTIGlzIGludGVycHJldGVkIGFzIHRoYXQgY29kZSBsZW5ndGguICB6ZXJvIG1lYW5zIHRoYXQgdGhhdFxuICAgc3ltYm9sIGRvZXMgbm90IG9jY3VyIGluIHRoaXMgY29kZS5cblxuICAgVGhlIGNvZGVzIGFyZSBzb3J0ZWQgYnkgY29tcHV0aW5nIGEgY291bnQgb2YgY29kZXMgZm9yIGVhY2ggbGVuZ3RoLFxuICAgY3JlYXRpbmcgZnJvbSB0aGF0IGEgdGFibGUgb2Ygc3RhcnRpbmcgaW5kaWNlcyBmb3IgZWFjaCBsZW5ndGggaW4gdGhlXG4gICBzb3J0ZWQgdGFibGUsIGFuZCB0aGVuIGVudGVyaW5nIHRoZSBzeW1ib2xzIGluIG9yZGVyIGluIHRoZSBzb3J0ZWRcbiAgIHRhYmxlLiAgVGhlIHNvcnRlZCB0YWJsZSBpcyB3b3JrW10sIHdpdGggdGhhdCBzcGFjZSBiZWluZyBwcm92aWRlZCBieVxuICAgdGhlIGNhbGxlci5cblxuICAgVGhlIGxlbmd0aCBjb3VudHMgYXJlIHVzZWQgZm9yIG90aGVyIHB1cnBvc2VzIGFzIHdlbGwsIGkuZS4gZmluZGluZ1xuICAgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gbGVuZ3RoIGNvZGVzLCBkZXRlcm1pbmluZyBpZiB0aGVyZSBhcmUgYW55XG4gICBjb2RlcyBhdCBhbGwsIGNoZWNraW5nIGZvciBhIHZhbGlkIHNldCBvZiBsZW5ndGhzLCBhbmQgbG9va2luZyBhaGVhZFxuICAgYXQgbGVuZ3RoIGNvdW50cyB0byBkZXRlcm1pbmUgc3ViLXRhYmxlIHNpemVzIHdoZW4gYnVpbGRpbmcgdGhlXG4gICBkZWNvZGluZyB0YWJsZXMuXG4gICAqL1xuXG4gIC8qIGFjY3VtdWxhdGUgbGVuZ3RocyBmb3IgY29kZXMgKGFzc3VtZXMgbGVuc1tdIGFsbCBpbiAwLi5NQVhCSVRTKSAqL1xuICBmb3IgKGxlbiA9IDA7IGxlbiA8PSBNQVhCSVRTOyBsZW4rKykge1xuICAgIGNvdW50W2xlbl0gPSAwO1xuICB9XG4gIGZvciAoc3ltID0gMDsgc3ltIDwgY29kZXM7IHN5bSsrKSB7XG4gICAgY291bnRbbGVuc1tsZW5zX2luZGV4ICsgc3ltXV0rKztcbiAgfVxuXG4gIC8qIGJvdW5kIGNvZGUgbGVuZ3RocywgZm9yY2Ugcm9vdCB0byBiZSB3aXRoaW4gY29kZSBsZW5ndGhzICovXG4gIHJvb3QgPSBiaXRzO1xuICBmb3IgKG1heCA9IE1BWEJJVFM7IG1heCA+PSAxOyBtYXgtLSkge1xuICAgIGlmIChjb3VudFttYXhdICE9PSAwKSB7IGJyZWFrOyB9XG4gIH1cbiAgaWYgKHJvb3QgPiBtYXgpIHtcbiAgICByb290ID0gbWF4O1xuICB9XG4gIGlmIChtYXggPT09IDApIHsgICAgICAgICAgICAgICAgICAgICAvKiBubyBzeW1ib2xzIHRvIGNvZGUgYXQgYWxsICovXG4gICAgLy90YWJsZS5vcFtvcHRzLnRhYmxlX2luZGV4XSA9IDY0OyAgLy9oZXJlLm9wID0gKHZhciBjaGFyKTY0OyAgICAvKiBpbnZhbGlkIGNvZGUgbWFya2VyICovXG4gICAgLy90YWJsZS5iaXRzW29wdHMudGFibGVfaW5kZXhdID0gMTsgICAvL2hlcmUuYml0cyA9ICh2YXIgY2hhcikxO1xuICAgIC8vdGFibGUudmFsW29wdHMudGFibGVfaW5kZXgrK10gPSAwOyAgIC8vaGVyZS52YWwgPSAodmFyIHNob3J0KTA7XG4gICAgdGFibGVbdGFibGVfaW5kZXgrK10gPSAoMSA8PCAyNCkgfCAoNjQgPDwgMTYpIHwgMDtcblxuXG4gICAgLy90YWJsZS5vcFtvcHRzLnRhYmxlX2luZGV4XSA9IDY0O1xuICAgIC8vdGFibGUuYml0c1tvcHRzLnRhYmxlX2luZGV4XSA9IDE7XG4gICAgLy90YWJsZS52YWxbb3B0cy50YWJsZV9pbmRleCsrXSA9IDA7XG4gICAgdGFibGVbdGFibGVfaW5kZXgrK10gPSAoMSA8PCAyNCkgfCAoNjQgPDwgMTYpIHwgMDtcblxuICAgIG9wdHMuYml0cyA9IDE7XG4gICAgcmV0dXJuIDA7ICAgICAvKiBubyBzeW1ib2xzLCBidXQgd2FpdCBmb3IgZGVjb2RpbmcgdG8gcmVwb3J0IGVycm9yICovXG4gIH1cbiAgZm9yIChtaW4gPSAxOyBtaW4gPCBtYXg7IG1pbisrKSB7XG4gICAgaWYgKGNvdW50W21pbl0gIT09IDApIHsgYnJlYWs7IH1cbiAgfVxuICBpZiAocm9vdCA8IG1pbikge1xuICAgIHJvb3QgPSBtaW47XG4gIH1cblxuICAvKiBjaGVjayBmb3IgYW4gb3Zlci1zdWJzY3JpYmVkIG9yIGluY29tcGxldGUgc2V0IG9mIGxlbmd0aHMgKi9cbiAgbGVmdCA9IDE7XG4gIGZvciAobGVuID0gMTsgbGVuIDw9IE1BWEJJVFM7IGxlbisrKSB7XG4gICAgbGVmdCA8PD0gMTtcbiAgICBsZWZ0IC09IGNvdW50W2xlbl07XG4gICAgaWYgKGxlZnQgPCAwKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfSAgICAgICAgLyogb3Zlci1zdWJzY3JpYmVkICovXG4gIH1cbiAgaWYgKGxlZnQgPiAwICYmICh0eXBlID09PSBDT0RFUyB8fCBtYXggIT09IDEpKSB7XG4gICAgcmV0dXJuIC0xOyAgICAgICAgICAgICAgICAgICAgICAvKiBpbmNvbXBsZXRlIHNldCAqL1xuICB9XG5cbiAgLyogZ2VuZXJhdGUgb2Zmc2V0cyBpbnRvIHN5bWJvbCB0YWJsZSBmb3IgZWFjaCBsZW5ndGggZm9yIHNvcnRpbmcgKi9cbiAgb2Zmc1sxXSA9IDA7XG4gIGZvciAobGVuID0gMTsgbGVuIDwgTUFYQklUUzsgbGVuKyspIHtcbiAgICBvZmZzW2xlbiArIDFdID0gb2Zmc1tsZW5dICsgY291bnRbbGVuXTtcbiAgfVxuXG4gIC8qIHNvcnQgc3ltYm9scyBieSBsZW5ndGgsIGJ5IHN5bWJvbCBvcmRlciB3aXRoaW4gZWFjaCBsZW5ndGggKi9cbiAgZm9yIChzeW0gPSAwOyBzeW0gPCBjb2Rlczsgc3ltKyspIHtcbiAgICBpZiAobGVuc1tsZW5zX2luZGV4ICsgc3ltXSAhPT0gMCkge1xuICAgICAgd29ya1tvZmZzW2xlbnNbbGVuc19pbmRleCArIHN5bV1dKytdID0gc3ltO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gICBDcmVhdGUgYW5kIGZpbGwgaW4gZGVjb2RpbmcgdGFibGVzLiAgSW4gdGhpcyBsb29wLCB0aGUgdGFibGUgYmVpbmdcbiAgIGZpbGxlZCBpcyBhdCBuZXh0IGFuZCBoYXMgY3VyciBpbmRleCBiaXRzLiAgVGhlIGNvZGUgYmVpbmcgdXNlZCBpcyBodWZmXG4gICB3aXRoIGxlbmd0aCBsZW4uICBUaGF0IGNvZGUgaXMgY29udmVydGVkIHRvIGFuIGluZGV4IGJ5IGRyb3BwaW5nIGRyb3BcbiAgIGJpdHMgb2ZmIG9mIHRoZSBib3R0b20uICBGb3IgY29kZXMgd2hlcmUgbGVuIGlzIGxlc3MgdGhhbiBkcm9wICsgY3VycixcbiAgIHRob3NlIHRvcCBkcm9wICsgY3VyciAtIGxlbiBiaXRzIGFyZSBpbmNyZW1lbnRlZCB0aHJvdWdoIGFsbCB2YWx1ZXMgdG9cbiAgIGZpbGwgdGhlIHRhYmxlIHdpdGggcmVwbGljYXRlZCBlbnRyaWVzLlxuXG4gICByb290IGlzIHRoZSBudW1iZXIgb2YgaW5kZXggYml0cyBmb3IgdGhlIHJvb3QgdGFibGUuICBXaGVuIGxlbiBleGNlZWRzXG4gICByb290LCBzdWItdGFibGVzIGFyZSBjcmVhdGVkIHBvaW50ZWQgdG8gYnkgdGhlIHJvb3QgZW50cnkgd2l0aCBhbiBpbmRleFxuICAgb2YgdGhlIGxvdyByb290IGJpdHMgb2YgaHVmZi4gIFRoaXMgaXMgc2F2ZWQgaW4gbG93IHRvIGNoZWNrIGZvciB3aGVuIGFcbiAgIG5ldyBzdWItdGFibGUgc2hvdWxkIGJlIHN0YXJ0ZWQuICBkcm9wIGlzIHplcm8gd2hlbiB0aGUgcm9vdCB0YWJsZSBpc1xuICAgYmVpbmcgZmlsbGVkLCBhbmQgZHJvcCBpcyByb290IHdoZW4gc3ViLXRhYmxlcyBhcmUgYmVpbmcgZmlsbGVkLlxuXG4gICBXaGVuIGEgbmV3IHN1Yi10YWJsZSBpcyBuZWVkZWQsIGl0IGlzIG5lY2Vzc2FyeSB0byBsb29rIGFoZWFkIGluIHRoZVxuICAgY29kZSBsZW5ndGhzIHRvIGRldGVybWluZSB3aGF0IHNpemUgc3ViLXRhYmxlIGlzIG5lZWRlZC4gIFRoZSBsZW5ndGhcbiAgIGNvdW50cyBhcmUgdXNlZCBmb3IgdGhpcywgYW5kIHNvIGNvdW50W10gaXMgZGVjcmVtZW50ZWQgYXMgY29kZXMgYXJlXG4gICBlbnRlcmVkIGluIHRoZSB0YWJsZXMuXG5cbiAgIHVzZWQga2VlcHMgdHJhY2sgb2YgaG93IG1hbnkgdGFibGUgZW50cmllcyBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gdGhlXG4gICBwcm92aWRlZCAqdGFibGUgc3BhY2UuICBJdCBpcyBjaGVja2VkIGZvciBMRU5TIGFuZCBESVNUIHRhYmxlcyBhZ2FpbnN0XG4gICB0aGUgY29uc3RhbnRzIEVOT1VHSF9MRU5TIGFuZCBFTk9VR0hfRElTVFMgdG8gZ3VhcmQgYWdhaW5zdCBjaGFuZ2VzIGluXG4gICB0aGUgaW5pdGlhbCByb290IHRhYmxlIHNpemUgY29uc3RhbnRzLiAgU2VlIHRoZSBjb21tZW50cyBpbiBpbmZ0cmVlcy5oXG4gICBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxuICAgc3ltIGluY3JlbWVudHMgdGhyb3VnaCBhbGwgc3ltYm9scywgYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMgd2hlblxuICAgYWxsIGNvZGVzIG9mIGxlbmd0aCBtYXgsIGkuZS4gYWxsIGNvZGVzLCBoYXZlIGJlZW4gcHJvY2Vzc2VkLiAgVGhpc1xuICAgcm91dGluZSBwZXJtaXRzIGluY29tcGxldGUgY29kZXMsIHNvIGFub3RoZXIgbG9vcCBhZnRlciB0aGlzIG9uZSBmaWxsc1xuICAgaW4gdGhlIHJlc3Qgb2YgdGhlIGRlY29kaW5nIHRhYmxlcyB3aXRoIGludmFsaWQgY29kZSBtYXJrZXJzLlxuICAgKi9cblxuICAvKiBzZXQgdXAgZm9yIGNvZGUgdHlwZSAqL1xuICAvLyBwb29yIG1hbiBvcHRpbWl6YXRpb24gLSB1c2UgaWYtZWxzZSBpbnN0ZWFkIG9mIHN3aXRjaCxcbiAgLy8gdG8gYXZvaWQgZGVvcHRzIGluIG9sZCB2OFxuICBpZiAodHlwZSA9PT0gQ09ERVMpIHtcbiAgICBiYXNlID0gZXh0cmEgPSB3b3JrOyAgICAvKiBkdW1teSB2YWx1ZS0tbm90IHVzZWQgKi9cbiAgICBlbmQgPSAxOTtcblxuICB9IGVsc2UgaWYgKHR5cGUgPT09IExFTlMpIHtcbiAgICBiYXNlID0gbGJhc2U7XG4gICAgYmFzZV9pbmRleCAtPSAyNTc7XG4gICAgZXh0cmEgPSBsZXh0O1xuICAgIGV4dHJhX2luZGV4IC09IDI1NztcbiAgICBlbmQgPSAyNTY7XG5cbiAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgIC8qIERJU1RTICovXG4gICAgYmFzZSA9IGRiYXNlO1xuICAgIGV4dHJhID0gZGV4dDtcbiAgICBlbmQgPSAtMTtcbiAgfVxuXG4gIC8qIGluaXRpYWxpemUgb3B0cyBmb3IgbG9vcCAqL1xuICBodWZmID0gMDsgICAgICAgICAgICAgICAgICAgLyogc3RhcnRpbmcgY29kZSAqL1xuICBzeW0gPSAwOyAgICAgICAgICAgICAgICAgICAgLyogc3RhcnRpbmcgY29kZSBzeW1ib2wgKi9cbiAgbGVuID0gbWluOyAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0aW5nIGNvZGUgbGVuZ3RoICovXG4gIG5leHQgPSB0YWJsZV9pbmRleDsgICAgICAgICAgICAgIC8qIGN1cnJlbnQgdGFibGUgdG8gZmlsbCBpbiAqL1xuICBjdXJyID0gcm9vdDsgICAgICAgICAgICAgICAgLyogY3VycmVudCB0YWJsZSBpbmRleCBiaXRzICovXG4gIGRyb3AgPSAwOyAgICAgICAgICAgICAgICAgICAvKiBjdXJyZW50IGJpdHMgdG8gZHJvcCBmcm9tIGNvZGUgZm9yIGluZGV4ICovXG4gIGxvdyA9IC0xOyAgICAgICAgICAgICAgICAgICAvKiB0cmlnZ2VyIG5ldyBzdWItdGFibGUgd2hlbiBsZW4gPiByb290ICovXG4gIHVzZWQgPSAxIDw8IHJvb3Q7ICAgICAgICAgIC8qIHVzZSByb290IHRhYmxlIGVudHJpZXMgKi9cbiAgbWFzayA9IHVzZWQgLSAxOyAgICAgICAgICAgIC8qIG1hc2sgZm9yIGNvbXBhcmluZyBsb3cgKi9cblxuICAvKiBjaGVjayBhdmFpbGFibGUgdGFibGUgc3BhY2UgKi9cbiAgaWYgKCh0eXBlID09PSBMRU5TICYmIHVzZWQgPiBFTk9VR0hfTEVOUykgfHxcbiAgICAodHlwZSA9PT0gRElTVFMgJiYgdXNlZCA+IEVOT1VHSF9ESVNUUykpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8qIHByb2Nlc3MgYWxsIGNvZGVzIGFuZCBtYWtlIHRhYmxlIGVudHJpZXMgKi9cbiAgZm9yICg7Oykge1xuICAgIC8qIGNyZWF0ZSB0YWJsZSBlbnRyeSAqL1xuICAgIGhlcmVfYml0cyA9IGxlbiAtIGRyb3A7XG4gICAgaWYgKHdvcmtbc3ltXSA8IGVuZCkge1xuICAgICAgaGVyZV9vcCA9IDA7XG4gICAgICBoZXJlX3ZhbCA9IHdvcmtbc3ltXTtcbiAgICB9XG4gICAgZWxzZSBpZiAod29ya1tzeW1dID4gZW5kKSB7XG4gICAgICBoZXJlX29wID0gZXh0cmFbZXh0cmFfaW5kZXggKyB3b3JrW3N5bV1dO1xuICAgICAgaGVyZV92YWwgPSBiYXNlW2Jhc2VfaW5kZXggKyB3b3JrW3N5bV1dO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGhlcmVfb3AgPSAzMiArIDY0OyAgICAgICAgIC8qIGVuZCBvZiBibG9jayAqL1xuICAgICAgaGVyZV92YWwgPSAwO1xuICAgIH1cblxuICAgIC8qIHJlcGxpY2F0ZSBmb3IgdGhvc2UgaW5kaWNlcyB3aXRoIGxvdyBsZW4gYml0cyBlcXVhbCB0byBodWZmICovXG4gICAgaW5jciA9IDEgPDwgKGxlbiAtIGRyb3ApO1xuICAgIGZpbGwgPSAxIDw8IGN1cnI7XG4gICAgbWluID0gZmlsbDsgICAgICAgICAgICAgICAgIC8qIHNhdmUgb2Zmc2V0IHRvIG5leHQgdGFibGUgKi9cbiAgICBkbyB7XG4gICAgICBmaWxsIC09IGluY3I7XG4gICAgICB0YWJsZVtuZXh0ICsgKGh1ZmYgPj4gZHJvcCkgKyBmaWxsXSA9IChoZXJlX2JpdHMgPDwgMjQpIHwgKGhlcmVfb3AgPDwgMTYpIHwgaGVyZV92YWwgfDA7XG4gICAgfSB3aGlsZSAoZmlsbCAhPT0gMCk7XG5cbiAgICAvKiBiYWNrd2FyZHMgaW5jcmVtZW50IHRoZSBsZW4tYml0IGNvZGUgaHVmZiAqL1xuICAgIGluY3IgPSAxIDw8IChsZW4gLSAxKTtcbiAgICB3aGlsZSAoaHVmZiAmIGluY3IpIHtcbiAgICAgIGluY3IgPj49IDE7XG4gICAgfVxuICAgIGlmIChpbmNyICE9PSAwKSB7XG4gICAgICBodWZmICY9IGluY3IgLSAxO1xuICAgICAgaHVmZiArPSBpbmNyO1xuICAgIH0gZWxzZSB7XG4gICAgICBodWZmID0gMDtcbiAgICB9XG5cbiAgICAvKiBnbyB0byBuZXh0IHN5bWJvbCwgdXBkYXRlIGNvdW50LCBsZW4gKi9cbiAgICBzeW0rKztcbiAgICBpZiAoLS1jb3VudFtsZW5dID09PSAwKSB7XG4gICAgICBpZiAobGVuID09PSBtYXgpIHsgYnJlYWs7IH1cbiAgICAgIGxlbiA9IGxlbnNbbGVuc19pbmRleCArIHdvcmtbc3ltXV07XG4gICAgfVxuXG4gICAgLyogY3JlYXRlIG5ldyBzdWItdGFibGUgaWYgbmVlZGVkICovXG4gICAgaWYgKGxlbiA+IHJvb3QgJiYgKGh1ZmYgJiBtYXNrKSAhPT0gbG93KSB7XG4gICAgICAvKiBpZiBmaXJzdCB0aW1lLCB0cmFuc2l0aW9uIHRvIHN1Yi10YWJsZXMgKi9cbiAgICAgIGlmIChkcm9wID09PSAwKSB7XG4gICAgICAgIGRyb3AgPSByb290O1xuICAgICAgfVxuXG4gICAgICAvKiBpbmNyZW1lbnQgcGFzdCBsYXN0IHRhYmxlICovXG4gICAgICBuZXh0ICs9IG1pbjsgICAgICAgICAgICAvKiBoZXJlIG1pbiBpcyAxIDw8IGN1cnIgKi9cblxuICAgICAgLyogZGV0ZXJtaW5lIGxlbmd0aCBvZiBuZXh0IHRhYmxlICovXG4gICAgICBjdXJyID0gbGVuIC0gZHJvcDtcbiAgICAgIGxlZnQgPSAxIDw8IGN1cnI7XG4gICAgICB3aGlsZSAoY3VyciArIGRyb3AgPCBtYXgpIHtcbiAgICAgICAgbGVmdCAtPSBjb3VudFtjdXJyICsgZHJvcF07XG4gICAgICAgIGlmIChsZWZ0IDw9IDApIHsgYnJlYWs7IH1cbiAgICAgICAgY3VycisrO1xuICAgICAgICBsZWZ0IDw8PSAxO1xuICAgICAgfVxuXG4gICAgICAvKiBjaGVjayBmb3IgZW5vdWdoIHNwYWNlICovXG4gICAgICB1c2VkICs9IDEgPDwgY3VycjtcbiAgICAgIGlmICgodHlwZSA9PT0gTEVOUyAmJiB1c2VkID4gRU5PVUdIX0xFTlMpIHx8XG4gICAgICAgICh0eXBlID09PSBESVNUUyAmJiB1c2VkID4gRU5PVUdIX0RJU1RTKSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cblxuICAgICAgLyogcG9pbnQgZW50cnkgaW4gcm9vdCB0YWJsZSB0byBzdWItdGFibGUgKi9cbiAgICAgIGxvdyA9IGh1ZmYgJiBtYXNrO1xuICAgICAgLyp0YWJsZS5vcFtsb3ddID0gY3VycjtcbiAgICAgIHRhYmxlLmJpdHNbbG93XSA9IHJvb3Q7XG4gICAgICB0YWJsZS52YWxbbG93XSA9IG5leHQgLSBvcHRzLnRhYmxlX2luZGV4OyovXG4gICAgICB0YWJsZVtsb3ddID0gKHJvb3QgPDwgMjQpIHwgKGN1cnIgPDwgMTYpIHwgKG5leHQgLSB0YWJsZV9pbmRleCkgfDA7XG4gICAgfVxuICB9XG5cbiAgLyogZmlsbCBpbiByZW1haW5pbmcgdGFibGUgZW50cnkgaWYgY29kZSBpcyBpbmNvbXBsZXRlIChndWFyYW50ZWVkIHRvIGhhdmVcbiAgIGF0IG1vc3Qgb25lIHJlbWFpbmluZyBlbnRyeSwgc2luY2UgaWYgdGhlIGNvZGUgaXMgaW5jb21wbGV0ZSwgdGhlXG4gICBtYXhpbXVtIGNvZGUgbGVuZ3RoIHRoYXQgd2FzIGFsbG93ZWQgdG8gZ2V0IHRoaXMgZmFyIGlzIG9uZSBiaXQpICovXG4gIGlmIChodWZmICE9PSAwKSB7XG4gICAgLy90YWJsZS5vcFtuZXh0ICsgaHVmZl0gPSA2NDsgICAgICAgICAgICAvKiBpbnZhbGlkIGNvZGUgbWFya2VyICovXG4gICAgLy90YWJsZS5iaXRzW25leHQgKyBodWZmXSA9IGxlbiAtIGRyb3A7XG4gICAgLy90YWJsZS52YWxbbmV4dCArIGh1ZmZdID0gMDtcbiAgICB0YWJsZVtuZXh0ICsgaHVmZl0gPSAoKGxlbiAtIGRyb3ApIDw8IDI0KSB8ICg2NCA8PCAxNikgfDA7XG4gIH1cblxuICAvKiBzZXQgcmV0dXJuIHBhcmFtZXRlcnMgKi9cbiAgLy9vcHRzLnRhYmxlX2luZGV4ICs9IHVzZWQ7XG4gIG9wdHMuYml0cyA9IHJvb3Q7XG4gIHJldHVybiAwO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgMjogICAgICAnbmVlZCBkaWN0aW9uYXJ5JywgICAgIC8qIFpfTkVFRF9ESUNUICAgICAgIDIgICovXG4gIDE6ICAgICAgJ3N0cmVhbSBlbmQnLCAgICAgICAgICAvKiBaX1NUUkVBTV9FTkQgICAgICAxICAqL1xuICAwOiAgICAgICcnLCAgICAgICAgICAgICAgICAgICAgLyogWl9PSyAgICAgICAgICAgICAgMCAgKi9cbiAgJy0xJzogICAnZmlsZSBlcnJvcicsICAgICAgICAgIC8qIFpfRVJSTk8gICAgICAgICAoLTEpICovXG4gICctMic6ICAgJ3N0cmVhbSBlcnJvcicsICAgICAgICAvKiBaX1NUUkVBTV9FUlJPUiAgKC0yKSAqL1xuICAnLTMnOiAgICdkYXRhIGVycm9yJywgICAgICAgICAgLyogWl9EQVRBX0VSUk9SICAgICgtMykgKi9cbiAgJy00JzogICAnaW5zdWZmaWNpZW50IG1lbW9yeScsIC8qIFpfTUVNX0VSUk9SICAgICAoLTQpICovXG4gICctNSc6ICAgJ2J1ZmZlciBlcnJvcicsICAgICAgICAvKiBaX0JVRl9FUlJPUiAgICAgKC01KSAqL1xuICAnLTYnOiAgICdpbmNvbXBhdGlibGUgdmVyc2lvbicgLyogWl9WRVJTSU9OX0VSUk9SICgtNikgKi9cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxuLyogZXNsaW50LWRpc2FibGUgc3BhY2UtdW5hcnktb3BzICovXG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzL2NvbW1vbicpO1xuXG4vKiBQdWJsaWMgY29uc3RhbnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG4vL3ZhciBaX0ZJTFRFUkVEICAgICAgICAgID0gMTtcbi8vdmFyIFpfSFVGRk1BTl9PTkxZICAgICAgPSAyO1xuLy92YXIgWl9STEUgICAgICAgICAgICAgICA9IDM7XG52YXIgWl9GSVhFRCAgICAgICAgICAgICAgID0gNDtcbi8vdmFyIFpfREVGQVVMVF9TVFJBVEVHWSAgPSAwO1xuXG4vKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovXG52YXIgWl9CSU5BUlkgICAgICAgICAgICAgID0gMDtcbnZhciBaX1RFWFQgICAgICAgICAgICAgICAgPSAxO1xuLy92YXIgWl9BU0NJSSAgICAgICAgICAgICA9IDE7IC8vID0gWl9URVhUXG52YXIgWl9VTktOT1dOICAgICAgICAgICAgID0gMjtcblxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG5mdW5jdGlvbiB6ZXJvKGJ1ZikgeyB2YXIgbGVuID0gYnVmLmxlbmd0aDsgd2hpbGUgKC0tbGVuID49IDApIHsgYnVmW2xlbl0gPSAwOyB9IH1cblxuLy8gRnJvbSB6dXRpbC5oXG5cbnZhciBTVE9SRURfQkxPQ0sgPSAwO1xudmFyIFNUQVRJQ19UUkVFUyA9IDE7XG52YXIgRFlOX1RSRUVTICAgID0gMjtcbi8qIFRoZSB0aHJlZSBraW5kcyBvZiBibG9jayB0eXBlICovXG5cbnZhciBNSU5fTUFUQ0ggICAgPSAzO1xudmFyIE1BWF9NQVRDSCAgICA9IDI1ODtcbi8qIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIG1hdGNoIGxlbmd0aHMgKi9cblxuLy8gRnJvbSBkZWZsYXRlLmhcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW50ZXJuYWwgY29tcHJlc3Npb24gc3RhdGUuXG4gKi9cblxudmFyIExFTkdUSF9DT0RFUyAgPSAyOTtcbi8qIG51bWJlciBvZiBsZW5ndGggY29kZXMsIG5vdCBjb3VudGluZyB0aGUgc3BlY2lhbCBFTkRfQkxPQ0sgY29kZSAqL1xuXG52YXIgTElURVJBTFMgICAgICA9IDI1Njtcbi8qIG51bWJlciBvZiBsaXRlcmFsIGJ5dGVzIDAuLjI1NSAqL1xuXG52YXIgTF9DT0RFUyAgICAgICA9IExJVEVSQUxTICsgMSArIExFTkdUSF9DT0RFUztcbi8qIG51bWJlciBvZiBMaXRlcmFsIG9yIExlbmd0aCBjb2RlcywgaW5jbHVkaW5nIHRoZSBFTkRfQkxPQ0sgY29kZSAqL1xuXG52YXIgRF9DT0RFUyAgICAgICA9IDMwO1xuLyogbnVtYmVyIG9mIGRpc3RhbmNlIGNvZGVzICovXG5cbnZhciBCTF9DT0RFUyAgICAgID0gMTk7XG4vKiBudW1iZXIgb2YgY29kZXMgdXNlZCB0byB0cmFuc2ZlciB0aGUgYml0IGxlbmd0aHMgKi9cblxudmFyIEhFQVBfU0laRSAgICAgPSAyICogTF9DT0RFUyArIDE7XG4vKiBtYXhpbXVtIGhlYXAgc2l6ZSAqL1xuXG52YXIgTUFYX0JJVFMgICAgICA9IDE1O1xuLyogQWxsIGNvZGVzIG11c3Qgbm90IGV4Y2VlZCBNQVhfQklUUyBiaXRzICovXG5cbnZhciBCdWZfc2l6ZSAgICAgID0gMTY7XG4vKiBzaXplIG9mIGJpdCBidWZmZXIgaW4gYmlfYnVmICovXG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb25zdGFudHNcbiAqL1xuXG52YXIgTUFYX0JMX0JJVFMgPSA3O1xuLyogQml0IGxlbmd0aCBjb2RlcyBtdXN0IG5vdCBleGNlZWQgTUFYX0JMX0JJVFMgYml0cyAqL1xuXG52YXIgRU5EX0JMT0NLICAgPSAyNTY7XG4vKiBlbmQgb2YgYmxvY2sgbGl0ZXJhbCBjb2RlICovXG5cbnZhciBSRVBfM182ICAgICA9IDE2O1xuLyogcmVwZWF0IHByZXZpb3VzIGJpdCBsZW5ndGggMy02IHRpbWVzICgyIGJpdHMgb2YgcmVwZWF0IGNvdW50KSAqL1xuXG52YXIgUkVQWl8zXzEwICAgPSAxNztcbi8qIHJlcGVhdCBhIHplcm8gbGVuZ3RoIDMtMTAgdGltZXMgICgzIGJpdHMgb2YgcmVwZWF0IGNvdW50KSAqL1xuXG52YXIgUkVQWl8xMV8xMzggPSAxODtcbi8qIHJlcGVhdCBhIHplcm8gbGVuZ3RoIDExLTEzOCB0aW1lcyAgKDcgYml0cyBvZiByZXBlYXQgY291bnQpICovXG5cbi8qIGVzbGludC1kaXNhYmxlIGNvbW1hLXNwYWNpbmcsYXJyYXktYnJhY2tldC1zcGFjaW5nICovXG52YXIgZXh0cmFfbGJpdHMgPSAgIC8qIGV4dHJhIGJpdHMgZm9yIGVhY2ggbGVuZ3RoIGNvZGUgKi9cbiAgWzAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDIsMiwyLDIsMywzLDMsMyw0LDQsNCw0LDUsNSw1LDUsMF07XG5cbnZhciBleHRyYV9kYml0cyA9ICAgLyogZXh0cmEgYml0cyBmb3IgZWFjaCBkaXN0YW5jZSBjb2RlICovXG4gIFswLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw2LDcsNyw4LDgsOSw5LDEwLDEwLDExLDExLDEyLDEyLDEzLDEzXTtcblxudmFyIGV4dHJhX2JsYml0cyA9ICAvKiBleHRyYSBiaXRzIGZvciBlYWNoIGJpdCBsZW5ndGggY29kZSAqL1xuICBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDMsN107XG5cbnZhciBibF9vcmRlciA9XG4gIFsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XTtcbi8qIGVzbGludC1lbmFibGUgY29tbWEtc3BhY2luZyxhcnJheS1icmFja2V0LXNwYWNpbmcgKi9cblxuLyogVGhlIGxlbmd0aHMgb2YgdGhlIGJpdCBsZW5ndGggY29kZXMgYXJlIHNlbnQgaW4gb3JkZXIgb2YgZGVjcmVhc2luZ1xuICogcHJvYmFiaWxpdHksIHRvIGF2b2lkIHRyYW5zbWl0dGluZyB0aGUgbGVuZ3RocyBmb3IgdW51c2VkIGJpdCBsZW5ndGggY29kZXMuXG4gKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBMb2NhbCBkYXRhLiBUaGVzZSBhcmUgaW5pdGlhbGl6ZWQgb25seSBvbmNlLlxuICovXG5cbi8vIFdlIHByZS1maWxsIGFycmF5cyB3aXRoIDAgdG8gYXZvaWQgdW5pbml0aWFsaXplZCBnYXBzXG5cbnZhciBESVNUX0NPREVfTEVOID0gNTEyOyAvKiBzZWUgZGVmaW5pdGlvbiBvZiBhcnJheSBkaXN0X2NvZGUgYmVsb3cgKi9cblxuLy8gISEhISBVc2UgZmxhdCBhcnJheSBpbnN0ZWFkIG9mIHN0cnVjdHVyZSwgRnJlcSA9IGkqMiwgTGVuID0gaSoyKzFcbnZhciBzdGF0aWNfbHRyZWUgID0gbmV3IEFycmF5KChMX0NPREVTICsgMikgKiAyKTtcbnplcm8oc3RhdGljX2x0cmVlKTtcbi8qIFRoZSBzdGF0aWMgbGl0ZXJhbCB0cmVlLiBTaW5jZSB0aGUgYml0IGxlbmd0aHMgYXJlIGltcG9zZWQsIHRoZXJlIGlzIG5vXG4gKiBuZWVkIGZvciB0aGUgTF9DT0RFUyBleHRyYSBjb2RlcyB1c2VkIGR1cmluZyBoZWFwIGNvbnN0cnVjdGlvbi4gSG93ZXZlclxuICogVGhlIGNvZGVzIDI4NiBhbmQgMjg3IGFyZSBuZWVkZWQgdG8gYnVpbGQgYSBjYW5vbmljYWwgdHJlZSAoc2VlIF90cl9pbml0XG4gKiBiZWxvdykuXG4gKi9cblxudmFyIHN0YXRpY19kdHJlZSAgPSBuZXcgQXJyYXkoRF9DT0RFUyAqIDIpO1xuemVybyhzdGF0aWNfZHRyZWUpO1xuLyogVGhlIHN0YXRpYyBkaXN0YW5jZSB0cmVlLiAoQWN0dWFsbHkgYSB0cml2aWFsIHRyZWUgc2luY2UgYWxsIGNvZGVzIHVzZVxuICogNSBiaXRzLilcbiAqL1xuXG52YXIgX2Rpc3RfY29kZSAgICA9IG5ldyBBcnJheShESVNUX0NPREVfTEVOKTtcbnplcm8oX2Rpc3RfY29kZSk7XG4vKiBEaXN0YW5jZSBjb2Rlcy4gVGhlIGZpcnN0IDI1NiB2YWx1ZXMgY29ycmVzcG9uZCB0byB0aGUgZGlzdGFuY2VzXG4gKiAzIC4uIDI1OCwgdGhlIGxhc3QgMjU2IHZhbHVlcyBjb3JyZXNwb25kIHRvIHRoZSB0b3AgOCBiaXRzIG9mXG4gKiB0aGUgMTUgYml0IGRpc3RhbmNlcy5cbiAqL1xuXG52YXIgX2xlbmd0aF9jb2RlICA9IG5ldyBBcnJheShNQVhfTUFUQ0ggLSBNSU5fTUFUQ0ggKyAxKTtcbnplcm8oX2xlbmd0aF9jb2RlKTtcbi8qIGxlbmd0aCBjb2RlIGZvciBlYWNoIG5vcm1hbGl6ZWQgbWF0Y2ggbGVuZ3RoICgwID09IE1JTl9NQVRDSCkgKi9cblxudmFyIGJhc2VfbGVuZ3RoICAgPSBuZXcgQXJyYXkoTEVOR1RIX0NPREVTKTtcbnplcm8oYmFzZV9sZW5ndGgpO1xuLyogRmlyc3Qgbm9ybWFsaXplZCBsZW5ndGggZm9yIGVhY2ggY29kZSAoMCA9IE1JTl9NQVRDSCkgKi9cblxudmFyIGJhc2VfZGlzdCAgICAgPSBuZXcgQXJyYXkoRF9DT0RFUyk7XG56ZXJvKGJhc2VfZGlzdCk7XG4vKiBGaXJzdCBub3JtYWxpemVkIGRpc3RhbmNlIGZvciBlYWNoIGNvZGUgKDAgPSBkaXN0YW5jZSBvZiAxKSAqL1xuXG5cbmZ1bmN0aW9uIFN0YXRpY1RyZWVEZXNjKHN0YXRpY190cmVlLCBleHRyYV9iaXRzLCBleHRyYV9iYXNlLCBlbGVtcywgbWF4X2xlbmd0aCkge1xuXG4gIHRoaXMuc3RhdGljX3RyZWUgID0gc3RhdGljX3RyZWU7ICAvKiBzdGF0aWMgdHJlZSBvciBOVUxMICovXG4gIHRoaXMuZXh0cmFfYml0cyAgID0gZXh0cmFfYml0czsgICAvKiBleHRyYSBiaXRzIGZvciBlYWNoIGNvZGUgb3IgTlVMTCAqL1xuICB0aGlzLmV4dHJhX2Jhc2UgICA9IGV4dHJhX2Jhc2U7ICAgLyogYmFzZSBpbmRleCBmb3IgZXh0cmFfYml0cyAqL1xuICB0aGlzLmVsZW1zICAgICAgICA9IGVsZW1zOyAgICAgICAgLyogbWF4IG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdHJlZSAqL1xuICB0aGlzLm1heF9sZW5ndGggICA9IG1heF9sZW5ndGg7ICAgLyogbWF4IGJpdCBsZW5ndGggZm9yIHRoZSBjb2RlcyAqL1xuXG4gIC8vIHNob3cgaWYgYHN0YXRpY190cmVlYCBoYXMgZGF0YSBvciBkdW1teSAtIG5lZWRlZCBmb3IgbW9ub21vcnBoaWMgb2JqZWN0c1xuICB0aGlzLmhhc19zdHJlZSAgICA9IHN0YXRpY190cmVlICYmIHN0YXRpY190cmVlLmxlbmd0aDtcbn1cblxuXG52YXIgc3RhdGljX2xfZGVzYztcbnZhciBzdGF0aWNfZF9kZXNjO1xudmFyIHN0YXRpY19ibF9kZXNjO1xuXG5cbmZ1bmN0aW9uIFRyZWVEZXNjKGR5bl90cmVlLCBzdGF0X2Rlc2MpIHtcbiAgdGhpcy5keW5fdHJlZSA9IGR5bl90cmVlOyAgICAgLyogdGhlIGR5bmFtaWMgdHJlZSAqL1xuICB0aGlzLm1heF9jb2RlID0gMDsgICAgICAgICAgICAvKiBsYXJnZXN0IGNvZGUgd2l0aCBub24gemVybyBmcmVxdWVuY3kgKi9cbiAgdGhpcy5zdGF0X2Rlc2MgPSBzdGF0X2Rlc2M7ICAgLyogdGhlIGNvcnJlc3BvbmRpbmcgc3RhdGljIHRyZWUgKi9cbn1cblxuXG5cbmZ1bmN0aW9uIGRfY29kZShkaXN0KSB7XG4gIHJldHVybiBkaXN0IDwgMjU2ID8gX2Rpc3RfY29kZVtkaXN0XSA6IF9kaXN0X2NvZGVbMjU2ICsgKGRpc3QgPj4+IDcpXTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIE91dHB1dCBhIHNob3J0IExTQiBmaXJzdCBvbiB0aGUgc3RyZWFtLlxuICogSU4gYXNzZXJ0aW9uOiB0aGVyZSBpcyBlbm91Z2ggcm9vbSBpbiBwZW5kaW5nQnVmLlxuICovXG5mdW5jdGlvbiBwdXRfc2hvcnQocywgdykge1xuLy8gICAgcHV0X2J5dGUocywgKHVjaCkoKHcpICYgMHhmZikpO1xuLy8gICAgcHV0X2J5dGUocywgKHVjaCkoKHVzaCkodykgPj4gOCkpO1xuICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9ICh3KSAmIDB4ZmY7XG4gIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gKHcgPj4+IDgpICYgMHhmZjtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNlbmQgYSB2YWx1ZSBvbiBhIGdpdmVuIG51bWJlciBvZiBiaXRzLlxuICogSU4gYXNzZXJ0aW9uOiBsZW5ndGggPD0gMTYgYW5kIHZhbHVlIGZpdHMgaW4gbGVuZ3RoIGJpdHMuXG4gKi9cbmZ1bmN0aW9uIHNlbmRfYml0cyhzLCB2YWx1ZSwgbGVuZ3RoKSB7XG4gIGlmIChzLmJpX3ZhbGlkID4gKEJ1Zl9zaXplIC0gbGVuZ3RoKSkge1xuICAgIHMuYmlfYnVmIHw9ICh2YWx1ZSA8PCBzLmJpX3ZhbGlkKSAmIDB4ZmZmZjtcbiAgICBwdXRfc2hvcnQocywgcy5iaV9idWYpO1xuICAgIHMuYmlfYnVmID0gdmFsdWUgPj4gKEJ1Zl9zaXplIC0gcy5iaV92YWxpZCk7XG4gICAgcy5iaV92YWxpZCArPSBsZW5ndGggLSBCdWZfc2l6ZTtcbiAgfSBlbHNlIHtcbiAgICBzLmJpX2J1ZiB8PSAodmFsdWUgPDwgcy5iaV92YWxpZCkgJiAweGZmZmY7XG4gICAgcy5iaV92YWxpZCArPSBsZW5ndGg7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBzZW5kX2NvZGUocywgYywgdHJlZSkge1xuICBzZW5kX2JpdHMocywgdHJlZVtjICogMl0vKi5Db2RlKi8sIHRyZWVbYyAqIDIgKyAxXS8qLkxlbiovKTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFJldmVyc2UgdGhlIGZpcnN0IGxlbiBiaXRzIG9mIGEgY29kZSwgdXNpbmcgc3RyYWlnaHRmb3J3YXJkIGNvZGUgKGEgZmFzdGVyXG4gKiBtZXRob2Qgd291bGQgdXNlIGEgdGFibGUpXG4gKiBJTiBhc3NlcnRpb246IDEgPD0gbGVuIDw9IDE1XG4gKi9cbmZ1bmN0aW9uIGJpX3JldmVyc2UoY29kZSwgbGVuKSB7XG4gIHZhciByZXMgPSAwO1xuICBkbyB7XG4gICAgcmVzIHw9IGNvZGUgJiAxO1xuICAgIGNvZGUgPj4+PSAxO1xuICAgIHJlcyA8PD0gMTtcbiAgfSB3aGlsZSAoLS1sZW4gPiAwKTtcbiAgcmV0dXJuIHJlcyA+Pj4gMTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEZsdXNoIHRoZSBiaXQgYnVmZmVyLCBrZWVwaW5nIGF0IG1vc3QgNyBiaXRzIGluIGl0LlxuICovXG5mdW5jdGlvbiBiaV9mbHVzaChzKSB7XG4gIGlmIChzLmJpX3ZhbGlkID09PSAxNikge1xuICAgIHB1dF9zaG9ydChzLCBzLmJpX2J1Zik7XG4gICAgcy5iaV9idWYgPSAwO1xuICAgIHMuYmlfdmFsaWQgPSAwO1xuXG4gIH0gZWxzZSBpZiAocy5iaV92YWxpZCA+PSA4KSB7XG4gICAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSBzLmJpX2J1ZiAmIDB4ZmY7XG4gICAgcy5iaV9idWYgPj49IDg7XG4gICAgcy5iaV92YWxpZCAtPSA4O1xuICB9XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb21wdXRlIHRoZSBvcHRpbWFsIGJpdCBsZW5ndGhzIGZvciBhIHRyZWUgYW5kIHVwZGF0ZSB0aGUgdG90YWwgYml0IGxlbmd0aFxuICogZm9yIHRoZSBjdXJyZW50IGJsb2NrLlxuICogSU4gYXNzZXJ0aW9uOiB0aGUgZmllbGRzIGZyZXEgYW5kIGRhZCBhcmUgc2V0LCBoZWFwW2hlYXBfbWF4XSBhbmRcbiAqICAgIGFib3ZlIGFyZSB0aGUgdHJlZSBub2RlcyBzb3J0ZWQgYnkgaW5jcmVhc2luZyBmcmVxdWVuY3kuXG4gKiBPVVQgYXNzZXJ0aW9uczogdGhlIGZpZWxkIGxlbiBpcyBzZXQgdG8gdGhlIG9wdGltYWwgYml0IGxlbmd0aCwgdGhlXG4gKiAgICAgYXJyYXkgYmxfY291bnQgY29udGFpbnMgdGhlIGZyZXF1ZW5jaWVzIGZvciBlYWNoIGJpdCBsZW5ndGguXG4gKiAgICAgVGhlIGxlbmd0aCBvcHRfbGVuIGlzIHVwZGF0ZWQ7IHN0YXRpY19sZW4gaXMgYWxzbyB1cGRhdGVkIGlmIHN0cmVlIGlzXG4gKiAgICAgbm90IG51bGwuXG4gKi9cbmZ1bmN0aW9uIGdlbl9iaXRsZW4ocywgZGVzYylcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICB0cmVlX2Rlc2MgKmRlc2M7ICAgIC8qIHRoZSB0cmVlIGRlc2NyaXB0b3IgKi9cbntcbiAgdmFyIHRyZWUgICAgICAgICAgICA9IGRlc2MuZHluX3RyZWU7XG4gIHZhciBtYXhfY29kZSAgICAgICAgPSBkZXNjLm1heF9jb2RlO1xuICB2YXIgc3RyZWUgICAgICAgICAgID0gZGVzYy5zdGF0X2Rlc2Muc3RhdGljX3RyZWU7XG4gIHZhciBoYXNfc3RyZWUgICAgICAgPSBkZXNjLnN0YXRfZGVzYy5oYXNfc3RyZWU7XG4gIHZhciBleHRyYSAgICAgICAgICAgPSBkZXNjLnN0YXRfZGVzYy5leHRyYV9iaXRzO1xuICB2YXIgYmFzZSAgICAgICAgICAgID0gZGVzYy5zdGF0X2Rlc2MuZXh0cmFfYmFzZTtcbiAgdmFyIG1heF9sZW5ndGggICAgICA9IGRlc2Muc3RhdF9kZXNjLm1heF9sZW5ndGg7XG4gIHZhciBoOyAgICAgICAgICAgICAgLyogaGVhcCBpbmRleCAqL1xuICB2YXIgbiwgbTsgICAgICAgICAgIC8qIGl0ZXJhdGUgb3ZlciB0aGUgdHJlZSBlbGVtZW50cyAqL1xuICB2YXIgYml0czsgICAgICAgICAgIC8qIGJpdCBsZW5ndGggKi9cbiAgdmFyIHhiaXRzOyAgICAgICAgICAvKiBleHRyYSBiaXRzICovXG4gIHZhciBmOyAgICAgICAgICAgICAgLyogZnJlcXVlbmN5ICovXG4gIHZhciBvdmVyZmxvdyA9IDA7ICAgLyogbnVtYmVyIG9mIGVsZW1lbnRzIHdpdGggYml0IGxlbmd0aCB0b28gbGFyZ2UgKi9cblxuICBmb3IgKGJpdHMgPSAwOyBiaXRzIDw9IE1BWF9CSVRTOyBiaXRzKyspIHtcbiAgICBzLmJsX2NvdW50W2JpdHNdID0gMDtcbiAgfVxuXG4gIC8qIEluIGEgZmlyc3QgcGFzcywgY29tcHV0ZSB0aGUgb3B0aW1hbCBiaXQgbGVuZ3RocyAod2hpY2ggbWF5XG4gICAqIG92ZXJmbG93IGluIHRoZSBjYXNlIG9mIHRoZSBiaXQgbGVuZ3RoIHRyZWUpLlxuICAgKi9cbiAgdHJlZVtzLmhlYXBbcy5oZWFwX21heF0gKiAyICsgMV0vKi5MZW4qLyA9IDA7IC8qIHJvb3Qgb2YgdGhlIGhlYXAgKi9cblxuICBmb3IgKGggPSBzLmhlYXBfbWF4ICsgMTsgaCA8IEhFQVBfU0laRTsgaCsrKSB7XG4gICAgbiA9IHMuaGVhcFtoXTtcbiAgICBiaXRzID0gdHJlZVt0cmVlW24gKiAyICsgMV0vKi5EYWQqLyAqIDIgKyAxXS8qLkxlbiovICsgMTtcbiAgICBpZiAoYml0cyA+IG1heF9sZW5ndGgpIHtcbiAgICAgIGJpdHMgPSBtYXhfbGVuZ3RoO1xuICAgICAgb3ZlcmZsb3crKztcbiAgICB9XG4gICAgdHJlZVtuICogMiArIDFdLyouTGVuKi8gPSBiaXRzO1xuICAgIC8qIFdlIG92ZXJ3cml0ZSB0cmVlW25dLkRhZCB3aGljaCBpcyBubyBsb25nZXIgbmVlZGVkICovXG5cbiAgICBpZiAobiA+IG1heF9jb2RlKSB7IGNvbnRpbnVlOyB9IC8qIG5vdCBhIGxlYWYgbm9kZSAqL1xuXG4gICAgcy5ibF9jb3VudFtiaXRzXSsrO1xuICAgIHhiaXRzID0gMDtcbiAgICBpZiAobiA+PSBiYXNlKSB7XG4gICAgICB4Yml0cyA9IGV4dHJhW24gLSBiYXNlXTtcbiAgICB9XG4gICAgZiA9IHRyZWVbbiAqIDJdLyouRnJlcSovO1xuICAgIHMub3B0X2xlbiArPSBmICogKGJpdHMgKyB4Yml0cyk7XG4gICAgaWYgKGhhc19zdHJlZSkge1xuICAgICAgcy5zdGF0aWNfbGVuICs9IGYgKiAoc3RyZWVbbiAqIDIgKyAxXS8qLkxlbiovICsgeGJpdHMpO1xuICAgIH1cbiAgfVxuICBpZiAob3ZlcmZsb3cgPT09IDApIHsgcmV0dXJuOyB9XG5cbiAgLy8gVHJhY2UoKHN0ZGVycixcIlxcbmJpdCBsZW5ndGggb3ZlcmZsb3dcXG5cIikpO1xuICAvKiBUaGlzIGhhcHBlbnMgZm9yIGV4YW1wbGUgb24gb2JqMiBhbmQgcGljIG9mIHRoZSBDYWxnYXJ5IGNvcnB1cyAqL1xuXG4gIC8qIEZpbmQgdGhlIGZpcnN0IGJpdCBsZW5ndGggd2hpY2ggY291bGQgaW5jcmVhc2U6ICovXG4gIGRvIHtcbiAgICBiaXRzID0gbWF4X2xlbmd0aCAtIDE7XG4gICAgd2hpbGUgKHMuYmxfY291bnRbYml0c10gPT09IDApIHsgYml0cy0tOyB9XG4gICAgcy5ibF9jb3VudFtiaXRzXS0tOyAgICAgIC8qIG1vdmUgb25lIGxlYWYgZG93biB0aGUgdHJlZSAqL1xuICAgIHMuYmxfY291bnRbYml0cyArIDFdICs9IDI7IC8qIG1vdmUgb25lIG92ZXJmbG93IGl0ZW0gYXMgaXRzIGJyb3RoZXIgKi9cbiAgICBzLmJsX2NvdW50W21heF9sZW5ndGhdLS07XG4gICAgLyogVGhlIGJyb3RoZXIgb2YgdGhlIG92ZXJmbG93IGl0ZW0gYWxzbyBtb3ZlcyBvbmUgc3RlcCB1cCxcbiAgICAgKiBidXQgdGhpcyBkb2VzIG5vdCBhZmZlY3QgYmxfY291bnRbbWF4X2xlbmd0aF1cbiAgICAgKi9cbiAgICBvdmVyZmxvdyAtPSAyO1xuICB9IHdoaWxlIChvdmVyZmxvdyA+IDApO1xuXG4gIC8qIE5vdyByZWNvbXB1dGUgYWxsIGJpdCBsZW5ndGhzLCBzY2FubmluZyBpbiBpbmNyZWFzaW5nIGZyZXF1ZW5jeS5cbiAgICogaCBpcyBzdGlsbCBlcXVhbCB0byBIRUFQX1NJWkUuIChJdCBpcyBzaW1wbGVyIHRvIHJlY29uc3RydWN0IGFsbFxuICAgKiBsZW5ndGhzIGluc3RlYWQgb2YgZml4aW5nIG9ubHkgdGhlIHdyb25nIG9uZXMuIFRoaXMgaWRlYSBpcyB0YWtlblxuICAgKiBmcm9tICdhcicgd3JpdHRlbiBieSBIYXJ1aGlrbyBPa3VtdXJhLilcbiAgICovXG4gIGZvciAoYml0cyA9IG1heF9sZW5ndGg7IGJpdHMgIT09IDA7IGJpdHMtLSkge1xuICAgIG4gPSBzLmJsX2NvdW50W2JpdHNdO1xuICAgIHdoaWxlIChuICE9PSAwKSB7XG4gICAgICBtID0gcy5oZWFwWy0taF07XG4gICAgICBpZiAobSA+IG1heF9jb2RlKSB7IGNvbnRpbnVlOyB9XG4gICAgICBpZiAodHJlZVttICogMiArIDFdLyouTGVuKi8gIT09IGJpdHMpIHtcbiAgICAgICAgLy8gVHJhY2UoKHN0ZGVycixcImNvZGUgJWQgYml0cyAlZC0+JWRcXG5cIiwgbSwgdHJlZVttXS5MZW4sIGJpdHMpKTtcbiAgICAgICAgcy5vcHRfbGVuICs9IChiaXRzIC0gdHJlZVttICogMiArIDFdLyouTGVuKi8pICogdHJlZVttICogMl0vKi5GcmVxKi87XG4gICAgICAgIHRyZWVbbSAqIDIgKyAxXS8qLkxlbiovID0gYml0cztcbiAgICAgIH1cbiAgICAgIG4tLTtcbiAgICB9XG4gIH1cbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEdlbmVyYXRlIHRoZSBjb2RlcyBmb3IgYSBnaXZlbiB0cmVlIGFuZCBiaXQgY291bnRzICh3aGljaCBuZWVkIG5vdCBiZVxuICogb3B0aW1hbCkuXG4gKiBJTiBhc3NlcnRpb246IHRoZSBhcnJheSBibF9jb3VudCBjb250YWlucyB0aGUgYml0IGxlbmd0aCBzdGF0aXN0aWNzIGZvclxuICogdGhlIGdpdmVuIHRyZWUgYW5kIHRoZSBmaWVsZCBsZW4gaXMgc2V0IGZvciBhbGwgdHJlZSBlbGVtZW50cy5cbiAqIE9VVCBhc3NlcnRpb246IHRoZSBmaWVsZCBjb2RlIGlzIHNldCBmb3IgYWxsIHRyZWUgZWxlbWVudHMgb2Ygbm9uXG4gKiAgICAgemVybyBjb2RlIGxlbmd0aC5cbiAqL1xuZnVuY3Rpb24gZ2VuX2NvZGVzKHRyZWUsIG1heF9jb2RlLCBibF9jb3VudClcbi8vICAgIGN0X2RhdGEgKnRyZWU7ICAgICAgICAgICAgIC8qIHRoZSB0cmVlIHRvIGRlY29yYXRlICovXG4vLyAgICBpbnQgbWF4X2NvZGU7ICAgICAgICAgICAgICAvKiBsYXJnZXN0IGNvZGUgd2l0aCBub24gemVybyBmcmVxdWVuY3kgKi9cbi8vICAgIHVzaGYgKmJsX2NvdW50OyAgICAgICAgICAgIC8qIG51bWJlciBvZiBjb2RlcyBhdCBlYWNoIGJpdCBsZW5ndGggKi9cbntcbiAgdmFyIG5leHRfY29kZSA9IG5ldyBBcnJheShNQVhfQklUUyArIDEpOyAvKiBuZXh0IGNvZGUgdmFsdWUgZm9yIGVhY2ggYml0IGxlbmd0aCAqL1xuICB2YXIgY29kZSA9IDA7ICAgICAgICAgICAgICAvKiBydW5uaW5nIGNvZGUgdmFsdWUgKi9cbiAgdmFyIGJpdHM7ICAgICAgICAgICAgICAgICAgLyogYml0IGluZGV4ICovXG4gIHZhciBuOyAgICAgICAgICAgICAgICAgICAgIC8qIGNvZGUgaW5kZXggKi9cblxuICAvKiBUaGUgZGlzdHJpYnV0aW9uIGNvdW50cyBhcmUgZmlyc3QgdXNlZCB0byBnZW5lcmF0ZSB0aGUgY29kZSB2YWx1ZXNcbiAgICogd2l0aG91dCBiaXQgcmV2ZXJzYWwuXG4gICAqL1xuICBmb3IgKGJpdHMgPSAxOyBiaXRzIDw9IE1BWF9CSVRTOyBiaXRzKyspIHtcbiAgICBuZXh0X2NvZGVbYml0c10gPSBjb2RlID0gKGNvZGUgKyBibF9jb3VudFtiaXRzIC0gMV0pIDw8IDE7XG4gIH1cbiAgLyogQ2hlY2sgdGhhdCB0aGUgYml0IGNvdW50cyBpbiBibF9jb3VudCBhcmUgY29uc2lzdGVudC4gVGhlIGxhc3QgY29kZVxuICAgKiBtdXN0IGJlIGFsbCBvbmVzLlxuICAgKi9cbiAgLy9Bc3NlcnQgKGNvZGUgKyBibF9jb3VudFtNQVhfQklUU10tMSA9PSAoMTw8TUFYX0JJVFMpLTEsXG4gIC8vICAgICAgICBcImluY29uc2lzdGVudCBiaXQgY291bnRzXCIpO1xuICAvL1RyYWNldigoc3RkZXJyLFwiXFxuZ2VuX2NvZGVzOiBtYXhfY29kZSAlZCBcIiwgbWF4X2NvZGUpKTtcblxuICBmb3IgKG4gPSAwOyAgbiA8PSBtYXhfY29kZTsgbisrKSB7XG4gICAgdmFyIGxlbiA9IHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovO1xuICAgIGlmIChsZW4gPT09IDApIHsgY29udGludWU7IH1cbiAgICAvKiBOb3cgcmV2ZXJzZSB0aGUgYml0cyAqL1xuICAgIHRyZWVbbiAqIDJdLyouQ29kZSovID0gYmlfcmV2ZXJzZShuZXh0X2NvZGVbbGVuXSsrLCBsZW4pO1xuXG4gICAgLy9UcmFjZWN2KHRyZWUgIT0gc3RhdGljX2x0cmVlLCAoc3RkZXJyLFwiXFxubiAlM2QgJWMgbCAlMmQgYyAlNHggKCV4KSBcIixcbiAgICAvLyAgICAgbiwgKGlzZ3JhcGgobikgPyBuIDogJyAnKSwgbGVuLCB0cmVlW25dLkNvZGUsIG5leHRfY29kZVtsZW5dLTEpKTtcbiAgfVxufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW5pdGlhbGl6ZSB0aGUgdmFyaW91cyAnY29uc3RhbnQnIHRhYmxlcy5cbiAqL1xuZnVuY3Rpb24gdHJfc3RhdGljX2luaXQoKSB7XG4gIHZhciBuOyAgICAgICAgLyogaXRlcmF0ZXMgb3ZlciB0cmVlIGVsZW1lbnRzICovXG4gIHZhciBiaXRzOyAgICAgLyogYml0IGNvdW50ZXIgKi9cbiAgdmFyIGxlbmd0aDsgICAvKiBsZW5ndGggdmFsdWUgKi9cbiAgdmFyIGNvZGU7ICAgICAvKiBjb2RlIHZhbHVlICovXG4gIHZhciBkaXN0OyAgICAgLyogZGlzdGFuY2UgaW5kZXggKi9cbiAgdmFyIGJsX2NvdW50ID0gbmV3IEFycmF5KE1BWF9CSVRTICsgMSk7XG4gIC8qIG51bWJlciBvZiBjb2RlcyBhdCBlYWNoIGJpdCBsZW5ndGggZm9yIGFuIG9wdGltYWwgdHJlZSAqL1xuXG4gIC8vIGRvIGNoZWNrIGluIF90cl9pbml0KClcbiAgLy9pZiAoc3RhdGljX2luaXRfZG9uZSkgcmV0dXJuO1xuXG4gIC8qIEZvciBzb21lIGVtYmVkZGVkIHRhcmdldHMsIGdsb2JhbCB2YXJpYWJsZXMgYXJlIG5vdCBpbml0aWFsaXplZDogKi9cbi8qI2lmZGVmIE5PX0lOSVRfR0xPQkFMX1BPSU5URVJTXG4gIHN0YXRpY19sX2Rlc2Muc3RhdGljX3RyZWUgPSBzdGF0aWNfbHRyZWU7XG4gIHN0YXRpY19sX2Rlc2MuZXh0cmFfYml0cyA9IGV4dHJhX2xiaXRzO1xuICBzdGF0aWNfZF9kZXNjLnN0YXRpY190cmVlID0gc3RhdGljX2R0cmVlO1xuICBzdGF0aWNfZF9kZXNjLmV4dHJhX2JpdHMgPSBleHRyYV9kYml0cztcbiAgc3RhdGljX2JsX2Rlc2MuZXh0cmFfYml0cyA9IGV4dHJhX2JsYml0cztcbiNlbmRpZiovXG5cbiAgLyogSW5pdGlhbGl6ZSB0aGUgbWFwcGluZyBsZW5ndGggKDAuLjI1NSkgLT4gbGVuZ3RoIGNvZGUgKDAuLjI4KSAqL1xuICBsZW5ndGggPSAwO1xuICBmb3IgKGNvZGUgPSAwOyBjb2RlIDwgTEVOR1RIX0NPREVTIC0gMTsgY29kZSsrKSB7XG4gICAgYmFzZV9sZW5ndGhbY29kZV0gPSBsZW5ndGg7XG4gICAgZm9yIChuID0gMDsgbiA8ICgxIDw8IGV4dHJhX2xiaXRzW2NvZGVdKTsgbisrKSB7XG4gICAgICBfbGVuZ3RoX2NvZGVbbGVuZ3RoKytdID0gY29kZTtcbiAgICB9XG4gIH1cbiAgLy9Bc3NlcnQgKGxlbmd0aCA9PSAyNTYsIFwidHJfc3RhdGljX2luaXQ6IGxlbmd0aCAhPSAyNTZcIik7XG4gIC8qIE5vdGUgdGhhdCB0aGUgbGVuZ3RoIDI1NSAobWF0Y2ggbGVuZ3RoIDI1OCkgY2FuIGJlIHJlcHJlc2VudGVkXG4gICAqIGluIHR3byBkaWZmZXJlbnQgd2F5czogY29kZSAyODQgKyA1IGJpdHMgb3IgY29kZSAyODUsIHNvIHdlXG4gICAqIG92ZXJ3cml0ZSBsZW5ndGhfY29kZVsyNTVdIHRvIHVzZSB0aGUgYmVzdCBlbmNvZGluZzpcbiAgICovXG4gIF9sZW5ndGhfY29kZVtsZW5ndGggLSAxXSA9IGNvZGU7XG5cbiAgLyogSW5pdGlhbGl6ZSB0aGUgbWFwcGluZyBkaXN0ICgwLi4zMkspIC0+IGRpc3QgY29kZSAoMC4uMjkpICovXG4gIGRpc3QgPSAwO1xuICBmb3IgKGNvZGUgPSAwOyBjb2RlIDwgMTY7IGNvZGUrKykge1xuICAgIGJhc2VfZGlzdFtjb2RlXSA9IGRpc3Q7XG4gICAgZm9yIChuID0gMDsgbiA8ICgxIDw8IGV4dHJhX2RiaXRzW2NvZGVdKTsgbisrKSB7XG4gICAgICBfZGlzdF9jb2RlW2Rpc3QrK10gPSBjb2RlO1xuICAgIH1cbiAgfVxuICAvL0Fzc2VydCAoZGlzdCA9PSAyNTYsIFwidHJfc3RhdGljX2luaXQ6IGRpc3QgIT0gMjU2XCIpO1xuICBkaXN0ID4+PSA3OyAvKiBmcm9tIG5vdyBvbiwgYWxsIGRpc3RhbmNlcyBhcmUgZGl2aWRlZCBieSAxMjggKi9cbiAgZm9yICg7IGNvZGUgPCBEX0NPREVTOyBjb2RlKyspIHtcbiAgICBiYXNlX2Rpc3RbY29kZV0gPSBkaXN0IDw8IDc7XG4gICAgZm9yIChuID0gMDsgbiA8ICgxIDw8IChleHRyYV9kYml0c1tjb2RlXSAtIDcpKTsgbisrKSB7XG4gICAgICBfZGlzdF9jb2RlWzI1NiArIGRpc3QrK10gPSBjb2RlO1xuICAgIH1cbiAgfVxuICAvL0Fzc2VydCAoZGlzdCA9PSAyNTYsIFwidHJfc3RhdGljX2luaXQ6IDI1NitkaXN0ICE9IDUxMlwiKTtcblxuICAvKiBDb25zdHJ1Y3QgdGhlIGNvZGVzIG9mIHRoZSBzdGF0aWMgbGl0ZXJhbCB0cmVlICovXG4gIGZvciAoYml0cyA9IDA7IGJpdHMgPD0gTUFYX0JJVFM7IGJpdHMrKykge1xuICAgIGJsX2NvdW50W2JpdHNdID0gMDtcbiAgfVxuXG4gIG4gPSAwO1xuICB3aGlsZSAobiA8PSAxNDMpIHtcbiAgICBzdGF0aWNfbHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gODtcbiAgICBuKys7XG4gICAgYmxfY291bnRbOF0rKztcbiAgfVxuICB3aGlsZSAobiA8PSAyNTUpIHtcbiAgICBzdGF0aWNfbHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gOTtcbiAgICBuKys7XG4gICAgYmxfY291bnRbOV0rKztcbiAgfVxuICB3aGlsZSAobiA8PSAyNzkpIHtcbiAgICBzdGF0aWNfbHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gNztcbiAgICBuKys7XG4gICAgYmxfY291bnRbN10rKztcbiAgfVxuICB3aGlsZSAobiA8PSAyODcpIHtcbiAgICBzdGF0aWNfbHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gODtcbiAgICBuKys7XG4gICAgYmxfY291bnRbOF0rKztcbiAgfVxuICAvKiBDb2RlcyAyODYgYW5kIDI4NyBkbyBub3QgZXhpc3QsIGJ1dCB3ZSBtdXN0IGluY2x1ZGUgdGhlbSBpbiB0aGVcbiAgICogdHJlZSBjb25zdHJ1Y3Rpb24gdG8gZ2V0IGEgY2Fub25pY2FsIEh1ZmZtYW4gdHJlZSAobG9uZ2VzdCBjb2RlXG4gICAqIGFsbCBvbmVzKVxuICAgKi9cbiAgZ2VuX2NvZGVzKHN0YXRpY19sdHJlZSwgTF9DT0RFUyArIDEsIGJsX2NvdW50KTtcblxuICAvKiBUaGUgc3RhdGljIGRpc3RhbmNlIHRyZWUgaXMgdHJpdmlhbDogKi9cbiAgZm9yIChuID0gMDsgbiA8IERfQ09ERVM7IG4rKykge1xuICAgIHN0YXRpY19kdHJlZVtuICogMiArIDFdLyouTGVuKi8gPSA1O1xuICAgIHN0YXRpY19kdHJlZVtuICogMl0vKi5Db2RlKi8gPSBiaV9yZXZlcnNlKG4sIDUpO1xuICB9XG5cbiAgLy8gTm93IGRhdGEgcmVhZHkgYW5kIHdlIGNhbiBpbml0IHN0YXRpYyB0cmVlc1xuICBzdGF0aWNfbF9kZXNjID0gbmV3IFN0YXRpY1RyZWVEZXNjKHN0YXRpY19sdHJlZSwgZXh0cmFfbGJpdHMsIExJVEVSQUxTICsgMSwgTF9DT0RFUywgTUFYX0JJVFMpO1xuICBzdGF0aWNfZF9kZXNjID0gbmV3IFN0YXRpY1RyZWVEZXNjKHN0YXRpY19kdHJlZSwgZXh0cmFfZGJpdHMsIDAsICAgICAgICAgIERfQ09ERVMsIE1BWF9CSVRTKTtcbiAgc3RhdGljX2JsX2Rlc2MgPSBuZXcgU3RhdGljVHJlZURlc2MobmV3IEFycmF5KDApLCBleHRyYV9ibGJpdHMsIDAsICAgICAgICAgQkxfQ09ERVMsIE1BWF9CTF9CSVRTKTtcblxuICAvL3N0YXRpY19pbml0X2RvbmUgPSB0cnVlO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW5pdGlhbGl6ZSBhIG5ldyBibG9jay5cbiAqL1xuZnVuY3Rpb24gaW5pdF9ibG9jayhzKSB7XG4gIHZhciBuOyAvKiBpdGVyYXRlcyBvdmVyIHRyZWUgZWxlbWVudHMgKi9cblxuICAvKiBJbml0aWFsaXplIHRoZSB0cmVlcy4gKi9cbiAgZm9yIChuID0gMDsgbiA8IExfQ09ERVM7ICBuKyspIHsgcy5keW5fbHRyZWVbbiAqIDJdLyouRnJlcSovID0gMDsgfVxuICBmb3IgKG4gPSAwOyBuIDwgRF9DT0RFUzsgIG4rKykgeyBzLmR5bl9kdHJlZVtuICogMl0vKi5GcmVxKi8gPSAwOyB9XG4gIGZvciAobiA9IDA7IG4gPCBCTF9DT0RFUzsgbisrKSB7IHMuYmxfdHJlZVtuICogMl0vKi5GcmVxKi8gPSAwOyB9XG5cbiAgcy5keW5fbHRyZWVbRU5EX0JMT0NLICogMl0vKi5GcmVxKi8gPSAxO1xuICBzLm9wdF9sZW4gPSBzLnN0YXRpY19sZW4gPSAwO1xuICBzLmxhc3RfbGl0ID0gcy5tYXRjaGVzID0gMDtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEZsdXNoIHRoZSBiaXQgYnVmZmVyIGFuZCBhbGlnbiB0aGUgb3V0cHV0IG9uIGEgYnl0ZSBib3VuZGFyeVxuICovXG5mdW5jdGlvbiBiaV93aW5kdXAocylcbntcbiAgaWYgKHMuYmlfdmFsaWQgPiA4KSB7XG4gICAgcHV0X3Nob3J0KHMsIHMuYmlfYnVmKTtcbiAgfSBlbHNlIGlmIChzLmJpX3ZhbGlkID4gMCkge1xuICAgIC8vcHV0X2J5dGUocywgKEJ5dGUpcy0+YmlfYnVmKTtcbiAgICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9IHMuYmlfYnVmO1xuICB9XG4gIHMuYmlfYnVmID0gMDtcbiAgcy5iaV92YWxpZCA9IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29weSBhIHN0b3JlZCBibG9jaywgc3RvcmluZyBmaXJzdCB0aGUgbGVuZ3RoIGFuZCBpdHNcbiAqIG9uZSdzIGNvbXBsZW1lbnQgaWYgcmVxdWVzdGVkLlxuICovXG5mdW5jdGlvbiBjb3B5X2Jsb2NrKHMsIGJ1ZiwgbGVuLCBoZWFkZXIpXG4vL0RlZmxhdGVTdGF0ZSAqcztcbi8vY2hhcmYgICAgKmJ1ZjsgICAgLyogdGhlIGlucHV0IGRhdGEgKi9cbi8vdW5zaWduZWQgbGVuOyAgICAgLyogaXRzIGxlbmd0aCAqL1xuLy9pbnQgICAgICBoZWFkZXI7ICAvKiB0cnVlIGlmIGJsb2NrIGhlYWRlciBtdXN0IGJlIHdyaXR0ZW4gKi9cbntcbiAgYmlfd2luZHVwKHMpOyAgICAgICAgLyogYWxpZ24gb24gYnl0ZSBib3VuZGFyeSAqL1xuXG4gIGlmIChoZWFkZXIpIHtcbiAgICBwdXRfc2hvcnQocywgbGVuKTtcbiAgICBwdXRfc2hvcnQocywgfmxlbik7XG4gIH1cbi8vICB3aGlsZSAobGVuLS0pIHtcbi8vICAgIHB1dF9ieXRlKHMsICpidWYrKyk7XG4vLyAgfVxuICB1dGlscy5hcnJheVNldChzLnBlbmRpbmdfYnVmLCBzLndpbmRvdywgYnVmLCBsZW4sIHMucGVuZGluZyk7XG4gIHMucGVuZGluZyArPSBsZW47XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29tcGFyZXMgdG8gc3VidHJlZXMsIHVzaW5nIHRoZSB0cmVlIGRlcHRoIGFzIHRpZSBicmVha2VyIHdoZW5cbiAqIHRoZSBzdWJ0cmVlcyBoYXZlIGVxdWFsIGZyZXF1ZW5jeS4gVGhpcyBtaW5pbWl6ZXMgdGhlIHdvcnN0IGNhc2UgbGVuZ3RoLlxuICovXG5mdW5jdGlvbiBzbWFsbGVyKHRyZWUsIG4sIG0sIGRlcHRoKSB7XG4gIHZhciBfbjIgPSBuICogMjtcbiAgdmFyIF9tMiA9IG0gKiAyO1xuICByZXR1cm4gKHRyZWVbX24yXS8qLkZyZXEqLyA8IHRyZWVbX20yXS8qLkZyZXEqLyB8fFxuICAgICAgICAgKHRyZWVbX24yXS8qLkZyZXEqLyA9PT0gdHJlZVtfbTJdLyouRnJlcSovICYmIGRlcHRoW25dIDw9IGRlcHRoW21dKSk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogUmVzdG9yZSB0aGUgaGVhcCBwcm9wZXJ0eSBieSBtb3ZpbmcgZG93biB0aGUgdHJlZSBzdGFydGluZyBhdCBub2RlIGssXG4gKiBleGNoYW5naW5nIGEgbm9kZSB3aXRoIHRoZSBzbWFsbGVzdCBvZiBpdHMgdHdvIHNvbnMgaWYgbmVjZXNzYXJ5LCBzdG9wcGluZ1xuICogd2hlbiB0aGUgaGVhcCBwcm9wZXJ0eSBpcyByZS1lc3RhYmxpc2hlZCAoZWFjaCBmYXRoZXIgc21hbGxlciB0aGFuIGl0c1xuICogdHdvIHNvbnMpLlxuICovXG5mdW5jdGlvbiBwcWRvd25oZWFwKHMsIHRyZWUsIGspXG4vLyAgICBkZWZsYXRlX3N0YXRlICpzO1xuLy8gICAgY3RfZGF0YSAqdHJlZTsgIC8qIHRoZSB0cmVlIHRvIHJlc3RvcmUgKi9cbi8vICAgIGludCBrOyAgICAgICAgICAgICAgIC8qIG5vZGUgdG8gbW92ZSBkb3duICovXG57XG4gIHZhciB2ID0gcy5oZWFwW2tdO1xuICB2YXIgaiA9IGsgPDwgMTsgIC8qIGxlZnQgc29uIG9mIGsgKi9cbiAgd2hpbGUgKGogPD0gcy5oZWFwX2xlbikge1xuICAgIC8qIFNldCBqIHRvIHRoZSBzbWFsbGVzdCBvZiB0aGUgdHdvIHNvbnM6ICovXG4gICAgaWYgKGogPCBzLmhlYXBfbGVuICYmXG4gICAgICBzbWFsbGVyKHRyZWUsIHMuaGVhcFtqICsgMV0sIHMuaGVhcFtqXSwgcy5kZXB0aCkpIHtcbiAgICAgIGorKztcbiAgICB9XG4gICAgLyogRXhpdCBpZiB2IGlzIHNtYWxsZXIgdGhhbiBib3RoIHNvbnMgKi9cbiAgICBpZiAoc21hbGxlcih0cmVlLCB2LCBzLmhlYXBbal0sIHMuZGVwdGgpKSB7IGJyZWFrOyB9XG5cbiAgICAvKiBFeGNoYW5nZSB2IHdpdGggdGhlIHNtYWxsZXN0IHNvbiAqL1xuICAgIHMuaGVhcFtrXSA9IHMuaGVhcFtqXTtcbiAgICBrID0gajtcblxuICAgIC8qIEFuZCBjb250aW51ZSBkb3duIHRoZSB0cmVlLCBzZXR0aW5nIGogdG8gdGhlIGxlZnQgc29uIG9mIGsgKi9cbiAgICBqIDw8PSAxO1xuICB9XG4gIHMuaGVhcFtrXSA9IHY7XG59XG5cblxuLy8gaW5saW5lZCBtYW51YWxseVxuLy8gdmFyIFNNQUxMRVNUID0gMTtcblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZW5kIHRoZSBibG9jayBkYXRhIGNvbXByZXNzZWQgdXNpbmcgdGhlIGdpdmVuIEh1ZmZtYW4gdHJlZXNcbiAqL1xuZnVuY3Rpb24gY29tcHJlc3NfYmxvY2socywgbHRyZWUsIGR0cmVlKVxuLy8gICAgZGVmbGF0ZV9zdGF0ZSAqcztcbi8vICAgIGNvbnN0IGN0X2RhdGEgKmx0cmVlOyAvKiBsaXRlcmFsIHRyZWUgKi9cbi8vICAgIGNvbnN0IGN0X2RhdGEgKmR0cmVlOyAvKiBkaXN0YW5jZSB0cmVlICovXG57XG4gIHZhciBkaXN0OyAgICAgICAgICAgLyogZGlzdGFuY2Ugb2YgbWF0Y2hlZCBzdHJpbmcgKi9cbiAgdmFyIGxjOyAgICAgICAgICAgICAvKiBtYXRjaCBsZW5ndGggb3IgdW5tYXRjaGVkIGNoYXIgKGlmIGRpc3QgPT0gMCkgKi9cbiAgdmFyIGx4ID0gMDsgICAgICAgICAvKiBydW5uaW5nIGluZGV4IGluIGxfYnVmICovXG4gIHZhciBjb2RlOyAgICAgICAgICAgLyogdGhlIGNvZGUgdG8gc2VuZCAqL1xuICB2YXIgZXh0cmE7ICAgICAgICAgIC8qIG51bWJlciBvZiBleHRyYSBiaXRzIHRvIHNlbmQgKi9cblxuICBpZiAocy5sYXN0X2xpdCAhPT0gMCkge1xuICAgIGRvIHtcbiAgICAgIGRpc3QgPSAocy5wZW5kaW5nX2J1ZltzLmRfYnVmICsgbHggKiAyXSA8PCA4KSB8IChzLnBlbmRpbmdfYnVmW3MuZF9idWYgKyBseCAqIDIgKyAxXSk7XG4gICAgICBsYyA9IHMucGVuZGluZ19idWZbcy5sX2J1ZiArIGx4XTtcbiAgICAgIGx4Kys7XG5cbiAgICAgIGlmIChkaXN0ID09PSAwKSB7XG4gICAgICAgIHNlbmRfY29kZShzLCBsYywgbHRyZWUpOyAvKiBzZW5kIGEgbGl0ZXJhbCBieXRlICovXG4gICAgICAgIC8vVHJhY2Vjdihpc2dyYXBoKGxjKSwgKHN0ZGVycixcIiAnJWMnIFwiLCBsYykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogSGVyZSwgbGMgaXMgdGhlIG1hdGNoIGxlbmd0aCAtIE1JTl9NQVRDSCAqL1xuICAgICAgICBjb2RlID0gX2xlbmd0aF9jb2RlW2xjXTtcbiAgICAgICAgc2VuZF9jb2RlKHMsIGNvZGUgKyBMSVRFUkFMUyArIDEsIGx0cmVlKTsgLyogc2VuZCB0aGUgbGVuZ3RoIGNvZGUgKi9cbiAgICAgICAgZXh0cmEgPSBleHRyYV9sYml0c1tjb2RlXTtcbiAgICAgICAgaWYgKGV4dHJhICE9PSAwKSB7XG4gICAgICAgICAgbGMgLT0gYmFzZV9sZW5ndGhbY29kZV07XG4gICAgICAgICAgc2VuZF9iaXRzKHMsIGxjLCBleHRyYSk7ICAgICAgIC8qIHNlbmQgdGhlIGV4dHJhIGxlbmd0aCBiaXRzICovXG4gICAgICAgIH1cbiAgICAgICAgZGlzdC0tOyAvKiBkaXN0IGlzIG5vdyB0aGUgbWF0Y2ggZGlzdGFuY2UgLSAxICovXG4gICAgICAgIGNvZGUgPSBkX2NvZGUoZGlzdCk7XG4gICAgICAgIC8vQXNzZXJ0IChjb2RlIDwgRF9DT0RFUywgXCJiYWQgZF9jb2RlXCIpO1xuXG4gICAgICAgIHNlbmRfY29kZShzLCBjb2RlLCBkdHJlZSk7ICAgICAgIC8qIHNlbmQgdGhlIGRpc3RhbmNlIGNvZGUgKi9cbiAgICAgICAgZXh0cmEgPSBleHRyYV9kYml0c1tjb2RlXTtcbiAgICAgICAgaWYgKGV4dHJhICE9PSAwKSB7XG4gICAgICAgICAgZGlzdCAtPSBiYXNlX2Rpc3RbY29kZV07XG4gICAgICAgICAgc2VuZF9iaXRzKHMsIGRpc3QsIGV4dHJhKTsgICAvKiBzZW5kIHRoZSBleHRyYSBkaXN0YW5jZSBiaXRzICovXG4gICAgICAgIH1cbiAgICAgIH0gLyogbGl0ZXJhbCBvciBtYXRjaCBwYWlyID8gKi9cblxuICAgICAgLyogQ2hlY2sgdGhhdCB0aGUgb3ZlcmxheSBiZXR3ZWVuIHBlbmRpbmdfYnVmIGFuZCBkX2J1ZitsX2J1ZiBpcyBvazogKi9cbiAgICAgIC8vQXNzZXJ0KCh1SW50KShzLT5wZW5kaW5nKSA8IHMtPmxpdF9idWZzaXplICsgMipseCxcbiAgICAgIC8vICAgICAgIFwicGVuZGluZ0J1ZiBvdmVyZmxvd1wiKTtcblxuICAgIH0gd2hpbGUgKGx4IDwgcy5sYXN0X2xpdCk7XG4gIH1cblxuICBzZW5kX2NvZGUocywgRU5EX0JMT0NLLCBsdHJlZSk7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb25zdHJ1Y3Qgb25lIEh1ZmZtYW4gdHJlZSBhbmQgYXNzaWducyB0aGUgY29kZSBiaXQgc3RyaW5ncyBhbmQgbGVuZ3Rocy5cbiAqIFVwZGF0ZSB0aGUgdG90YWwgYml0IGxlbmd0aCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suXG4gKiBJTiBhc3NlcnRpb246IHRoZSBmaWVsZCBmcmVxIGlzIHNldCBmb3IgYWxsIHRyZWUgZWxlbWVudHMuXG4gKiBPVVQgYXNzZXJ0aW9uczogdGhlIGZpZWxkcyBsZW4gYW5kIGNvZGUgYXJlIHNldCB0byB0aGUgb3B0aW1hbCBiaXQgbGVuZ3RoXG4gKiAgICAgYW5kIGNvcnJlc3BvbmRpbmcgY29kZS4gVGhlIGxlbmd0aCBvcHRfbGVuIGlzIHVwZGF0ZWQ7IHN0YXRpY19sZW4gaXNcbiAqICAgICBhbHNvIHVwZGF0ZWQgaWYgc3RyZWUgaXMgbm90IG51bGwuIFRoZSBmaWVsZCBtYXhfY29kZSBpcyBzZXQuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkX3RyZWUocywgZGVzYylcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICB0cmVlX2Rlc2MgKmRlc2M7IC8qIHRoZSB0cmVlIGRlc2NyaXB0b3IgKi9cbntcbiAgdmFyIHRyZWUgICAgID0gZGVzYy5keW5fdHJlZTtcbiAgdmFyIHN0cmVlICAgID0gZGVzYy5zdGF0X2Rlc2Muc3RhdGljX3RyZWU7XG4gIHZhciBoYXNfc3RyZWUgPSBkZXNjLnN0YXRfZGVzYy5oYXNfc3RyZWU7XG4gIHZhciBlbGVtcyAgICA9IGRlc2Muc3RhdF9kZXNjLmVsZW1zO1xuICB2YXIgbiwgbTsgICAgICAgICAgLyogaXRlcmF0ZSBvdmVyIGhlYXAgZWxlbWVudHMgKi9cbiAgdmFyIG1heF9jb2RlID0gLTE7IC8qIGxhcmdlc3QgY29kZSB3aXRoIG5vbiB6ZXJvIGZyZXF1ZW5jeSAqL1xuICB2YXIgbm9kZTsgICAgICAgICAgLyogbmV3IG5vZGUgYmVpbmcgY3JlYXRlZCAqL1xuXG4gIC8qIENvbnN0cnVjdCB0aGUgaW5pdGlhbCBoZWFwLCB3aXRoIGxlYXN0IGZyZXF1ZW50IGVsZW1lbnQgaW5cbiAgICogaGVhcFtTTUFMTEVTVF0uIFRoZSBzb25zIG9mIGhlYXBbbl0gYXJlIGhlYXBbMipuXSBhbmQgaGVhcFsyKm4rMV0uXG4gICAqIGhlYXBbMF0gaXMgbm90IHVzZWQuXG4gICAqL1xuICBzLmhlYXBfbGVuID0gMDtcbiAgcy5oZWFwX21heCA9IEhFQVBfU0laRTtcblxuICBmb3IgKG4gPSAwOyBuIDwgZWxlbXM7IG4rKykge1xuICAgIGlmICh0cmVlW24gKiAyXS8qLkZyZXEqLyAhPT0gMCkge1xuICAgICAgcy5oZWFwWysrcy5oZWFwX2xlbl0gPSBtYXhfY29kZSA9IG47XG4gICAgICBzLmRlcHRoW25dID0gMDtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDA7XG4gICAgfVxuICB9XG5cbiAgLyogVGhlIHBremlwIGZvcm1hdCByZXF1aXJlcyB0aGF0IGF0IGxlYXN0IG9uZSBkaXN0YW5jZSBjb2RlIGV4aXN0cyxcbiAgICogYW5kIHRoYXQgYXQgbGVhc3Qgb25lIGJpdCBzaG91bGQgYmUgc2VudCBldmVuIGlmIHRoZXJlIGlzIG9ubHkgb25lXG4gICAqIHBvc3NpYmxlIGNvZGUuIFNvIHRvIGF2b2lkIHNwZWNpYWwgY2hlY2tzIGxhdGVyIG9uIHdlIGZvcmNlIGF0IGxlYXN0XG4gICAqIHR3byBjb2RlcyBvZiBub24gemVybyBmcmVxdWVuY3kuXG4gICAqL1xuICB3aGlsZSAocy5oZWFwX2xlbiA8IDIpIHtcbiAgICBub2RlID0gcy5oZWFwWysrcy5oZWFwX2xlbl0gPSAobWF4X2NvZGUgPCAyID8gKyttYXhfY29kZSA6IDApO1xuICAgIHRyZWVbbm9kZSAqIDJdLyouRnJlcSovID0gMTtcbiAgICBzLmRlcHRoW25vZGVdID0gMDtcbiAgICBzLm9wdF9sZW4tLTtcblxuICAgIGlmIChoYXNfc3RyZWUpIHtcbiAgICAgIHMuc3RhdGljX2xlbiAtPSBzdHJlZVtub2RlICogMiArIDFdLyouTGVuKi87XG4gICAgfVxuICAgIC8qIG5vZGUgaXMgMCBvciAxIHNvIGl0IGRvZXMgbm90IGhhdmUgZXh0cmEgYml0cyAqL1xuICB9XG4gIGRlc2MubWF4X2NvZGUgPSBtYXhfY29kZTtcblxuICAvKiBUaGUgZWxlbWVudHMgaGVhcFtoZWFwX2xlbi8yKzEgLi4gaGVhcF9sZW5dIGFyZSBsZWF2ZXMgb2YgdGhlIHRyZWUsXG4gICAqIGVzdGFibGlzaCBzdWItaGVhcHMgb2YgaW5jcmVhc2luZyBsZW5ndGhzOlxuICAgKi9cbiAgZm9yIChuID0gKHMuaGVhcF9sZW4gPj4gMS8qaW50IC8yKi8pOyBuID49IDE7IG4tLSkgeyBwcWRvd25oZWFwKHMsIHRyZWUsIG4pOyB9XG5cbiAgLyogQ29uc3RydWN0IHRoZSBIdWZmbWFuIHRyZWUgYnkgcmVwZWF0ZWRseSBjb21iaW5pbmcgdGhlIGxlYXN0IHR3b1xuICAgKiBmcmVxdWVudCBub2Rlcy5cbiAgICovXG4gIG5vZGUgPSBlbGVtczsgICAgICAgICAgICAgIC8qIG5leHQgaW50ZXJuYWwgbm9kZSBvZiB0aGUgdHJlZSAqL1xuICBkbyB7XG4gICAgLy9wcXJlbW92ZShzLCB0cmVlLCBuKTsgIC8qIG4gPSBub2RlIG9mIGxlYXN0IGZyZXF1ZW5jeSAqL1xuICAgIC8qKiogcHFyZW1vdmUgKioqL1xuICAgIG4gPSBzLmhlYXBbMS8qU01BTExFU1QqL107XG4gICAgcy5oZWFwWzEvKlNNQUxMRVNUKi9dID0gcy5oZWFwW3MuaGVhcF9sZW4tLV07XG4gICAgcHFkb3duaGVhcChzLCB0cmVlLCAxLypTTUFMTEVTVCovKTtcbiAgICAvKioqL1xuXG4gICAgbSA9IHMuaGVhcFsxLypTTUFMTEVTVCovXTsgLyogbSA9IG5vZGUgb2YgbmV4dCBsZWFzdCBmcmVxdWVuY3kgKi9cblxuICAgIHMuaGVhcFstLXMuaGVhcF9tYXhdID0gbjsgLyoga2VlcCB0aGUgbm9kZXMgc29ydGVkIGJ5IGZyZXF1ZW5jeSAqL1xuICAgIHMuaGVhcFstLXMuaGVhcF9tYXhdID0gbTtcblxuICAgIC8qIENyZWF0ZSBhIG5ldyBub2RlIGZhdGhlciBvZiBuIGFuZCBtICovXG4gICAgdHJlZVtub2RlICogMl0vKi5GcmVxKi8gPSB0cmVlW24gKiAyXS8qLkZyZXEqLyArIHRyZWVbbSAqIDJdLyouRnJlcSovO1xuICAgIHMuZGVwdGhbbm9kZV0gPSAocy5kZXB0aFtuXSA+PSBzLmRlcHRoW21dID8gcy5kZXB0aFtuXSA6IHMuZGVwdGhbbV0pICsgMTtcbiAgICB0cmVlW24gKiAyICsgMV0vKi5EYWQqLyA9IHRyZWVbbSAqIDIgKyAxXS8qLkRhZCovID0gbm9kZTtcblxuICAgIC8qIGFuZCBpbnNlcnQgdGhlIG5ldyBub2RlIGluIHRoZSBoZWFwICovXG4gICAgcy5oZWFwWzEvKlNNQUxMRVNUKi9dID0gbm9kZSsrO1xuICAgIHBxZG93bmhlYXAocywgdHJlZSwgMS8qU01BTExFU1QqLyk7XG5cbiAgfSB3aGlsZSAocy5oZWFwX2xlbiA+PSAyKTtcblxuICBzLmhlYXBbLS1zLmhlYXBfbWF4XSA9IHMuaGVhcFsxLypTTUFMTEVTVCovXTtcblxuICAvKiBBdCB0aGlzIHBvaW50LCB0aGUgZmllbGRzIGZyZXEgYW5kIGRhZCBhcmUgc2V0LiBXZSBjYW4gbm93XG4gICAqIGdlbmVyYXRlIHRoZSBiaXQgbGVuZ3Rocy5cbiAgICovXG4gIGdlbl9iaXRsZW4ocywgZGVzYyk7XG5cbiAgLyogVGhlIGZpZWxkIGxlbiBpcyBub3cgc2V0LCB3ZSBjYW4gZ2VuZXJhdGUgdGhlIGJpdCBjb2RlcyAqL1xuICBnZW5fY29kZXModHJlZSwgbWF4X2NvZGUsIHMuYmxfY291bnQpO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2NhbiBhIGxpdGVyYWwgb3IgZGlzdGFuY2UgdHJlZSB0byBkZXRlcm1pbmUgdGhlIGZyZXF1ZW5jaWVzIG9mIHRoZSBjb2Rlc1xuICogaW4gdGhlIGJpdCBsZW5ndGggdHJlZS5cbiAqL1xuZnVuY3Rpb24gc2Nhbl90cmVlKHMsIHRyZWUsIG1heF9jb2RlKVxuLy8gICAgZGVmbGF0ZV9zdGF0ZSAqcztcbi8vICAgIGN0X2RhdGEgKnRyZWU7ICAgLyogdGhlIHRyZWUgdG8gYmUgc2Nhbm5lZCAqL1xuLy8gICAgaW50IG1heF9jb2RlOyAgICAvKiBhbmQgaXRzIGxhcmdlc3QgY29kZSBvZiBub24gemVybyBmcmVxdWVuY3kgKi9cbntcbiAgdmFyIG47ICAgICAgICAgICAgICAgICAgICAgLyogaXRlcmF0ZXMgb3ZlciBhbGwgdHJlZSBlbGVtZW50cyAqL1xuICB2YXIgcHJldmxlbiA9IC0xOyAgICAgICAgICAvKiBsYXN0IGVtaXR0ZWQgbGVuZ3RoICovXG4gIHZhciBjdXJsZW47ICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBvZiBjdXJyZW50IGNvZGUgKi9cblxuICB2YXIgbmV4dGxlbiA9IHRyZWVbMCAqIDIgKyAxXS8qLkxlbiovOyAvKiBsZW5ndGggb2YgbmV4dCBjb2RlICovXG5cbiAgdmFyIGNvdW50ID0gMDsgICAgICAgICAgICAgLyogcmVwZWF0IGNvdW50IG9mIHRoZSBjdXJyZW50IGNvZGUgKi9cbiAgdmFyIG1heF9jb3VudCA9IDc7ICAgICAgICAgLyogbWF4IHJlcGVhdCBjb3VudCAqL1xuICB2YXIgbWluX2NvdW50ID0gNDsgICAgICAgICAvKiBtaW4gcmVwZWF0IGNvdW50ICovXG5cbiAgaWYgKG5leHRsZW4gPT09IDApIHtcbiAgICBtYXhfY291bnQgPSAxMzg7XG4gICAgbWluX2NvdW50ID0gMztcbiAgfVxuICB0cmVlWyhtYXhfY29kZSArIDEpICogMiArIDFdLyouTGVuKi8gPSAweGZmZmY7IC8qIGd1YXJkICovXG5cbiAgZm9yIChuID0gMDsgbiA8PSBtYXhfY29kZTsgbisrKSB7XG4gICAgY3VybGVuID0gbmV4dGxlbjtcbiAgICBuZXh0bGVuID0gdHJlZVsobiArIDEpICogMiArIDFdLyouTGVuKi87XG5cbiAgICBpZiAoKytjb3VudCA8IG1heF9jb3VudCAmJiBjdXJsZW4gPT09IG5leHRsZW4pIHtcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgfSBlbHNlIGlmIChjb3VudCA8IG1pbl9jb3VudCkge1xuICAgICAgcy5ibF90cmVlW2N1cmxlbiAqIDJdLyouRnJlcSovICs9IGNvdW50O1xuXG4gICAgfSBlbHNlIGlmIChjdXJsZW4gIT09IDApIHtcblxuICAgICAgaWYgKGN1cmxlbiAhPT0gcHJldmxlbikgeyBzLmJsX3RyZWVbY3VybGVuICogMl0vKi5GcmVxKi8rKzsgfVxuICAgICAgcy5ibF90cmVlW1JFUF8zXzYgKiAyXS8qLkZyZXEqLysrO1xuXG4gICAgfSBlbHNlIGlmIChjb3VudCA8PSAxMCkge1xuICAgICAgcy5ibF90cmVlW1JFUFpfM18xMCAqIDJdLyouRnJlcSovKys7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgcy5ibF90cmVlW1JFUFpfMTFfMTM4ICogMl0vKi5GcmVxKi8rKztcbiAgICB9XG5cbiAgICBjb3VudCA9IDA7XG4gICAgcHJldmxlbiA9IGN1cmxlbjtcblxuICAgIGlmIChuZXh0bGVuID09PSAwKSB7XG4gICAgICBtYXhfY291bnQgPSAxMzg7XG4gICAgICBtaW5fY291bnQgPSAzO1xuXG4gICAgfSBlbHNlIGlmIChjdXJsZW4gPT09IG5leHRsZW4pIHtcbiAgICAgIG1heF9jb3VudCA9IDY7XG4gICAgICBtaW5fY291bnQgPSAzO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIG1heF9jb3VudCA9IDc7XG4gICAgICBtaW5fY291bnQgPSA0O1xuICAgIH1cbiAgfVxufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2VuZCBhIGxpdGVyYWwgb3IgZGlzdGFuY2UgdHJlZSBpbiBjb21wcmVzc2VkIGZvcm0sIHVzaW5nIHRoZSBjb2RlcyBpblxuICogYmxfdHJlZS5cbiAqL1xuZnVuY3Rpb24gc2VuZF90cmVlKHMsIHRyZWUsIG1heF9jb2RlKVxuLy8gICAgZGVmbGF0ZV9zdGF0ZSAqcztcbi8vICAgIGN0X2RhdGEgKnRyZWU7IC8qIHRoZSB0cmVlIHRvIGJlIHNjYW5uZWQgKi9cbi8vICAgIGludCBtYXhfY29kZTsgICAgICAgLyogYW5kIGl0cyBsYXJnZXN0IGNvZGUgb2Ygbm9uIHplcm8gZnJlcXVlbmN5ICovXG57XG4gIHZhciBuOyAgICAgICAgICAgICAgICAgICAgIC8qIGl0ZXJhdGVzIG92ZXIgYWxsIHRyZWUgZWxlbWVudHMgKi9cbiAgdmFyIHByZXZsZW4gPSAtMTsgICAgICAgICAgLyogbGFzdCBlbWl0dGVkIGxlbmd0aCAqL1xuICB2YXIgY3VybGVuOyAgICAgICAgICAgICAgICAvKiBsZW5ndGggb2YgY3VycmVudCBjb2RlICovXG5cbiAgdmFyIG5leHRsZW4gPSB0cmVlWzAgKiAyICsgMV0vKi5MZW4qLzsgLyogbGVuZ3RoIG9mIG5leHQgY29kZSAqL1xuXG4gIHZhciBjb3VudCA9IDA7ICAgICAgICAgICAgIC8qIHJlcGVhdCBjb3VudCBvZiB0aGUgY3VycmVudCBjb2RlICovXG4gIHZhciBtYXhfY291bnQgPSA3OyAgICAgICAgIC8qIG1heCByZXBlYXQgY291bnQgKi9cbiAgdmFyIG1pbl9jb3VudCA9IDQ7ICAgICAgICAgLyogbWluIHJlcGVhdCBjb3VudCAqL1xuXG4gIC8qIHRyZWVbbWF4X2NvZGUrMV0uTGVuID0gLTE7ICovICAvKiBndWFyZCBhbHJlYWR5IHNldCAqL1xuICBpZiAobmV4dGxlbiA9PT0gMCkge1xuICAgIG1heF9jb3VudCA9IDEzODtcbiAgICBtaW5fY291bnQgPSAzO1xuICB9XG5cbiAgZm9yIChuID0gMDsgbiA8PSBtYXhfY29kZTsgbisrKSB7XG4gICAgY3VybGVuID0gbmV4dGxlbjtcbiAgICBuZXh0bGVuID0gdHJlZVsobiArIDEpICogMiArIDFdLyouTGVuKi87XG5cbiAgICBpZiAoKytjb3VudCA8IG1heF9jb3VudCAmJiBjdXJsZW4gPT09IG5leHRsZW4pIHtcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgfSBlbHNlIGlmIChjb3VudCA8IG1pbl9jb3VudCkge1xuICAgICAgZG8geyBzZW5kX2NvZGUocywgY3VybGVuLCBzLmJsX3RyZWUpOyB9IHdoaWxlICgtLWNvdW50ICE9PSAwKTtcblxuICAgIH0gZWxzZSBpZiAoY3VybGVuICE9PSAwKSB7XG4gICAgICBpZiAoY3VybGVuICE9PSBwcmV2bGVuKSB7XG4gICAgICAgIHNlbmRfY29kZShzLCBjdXJsZW4sIHMuYmxfdHJlZSk7XG4gICAgICAgIGNvdW50LS07XG4gICAgICB9XG4gICAgICAvL0Fzc2VydChjb3VudCA+PSAzICYmIGNvdW50IDw9IDYsIFwiIDNfNj9cIik7XG4gICAgICBzZW5kX2NvZGUocywgUkVQXzNfNiwgcy5ibF90cmVlKTtcbiAgICAgIHNlbmRfYml0cyhzLCBjb3VudCAtIDMsIDIpO1xuXG4gICAgfSBlbHNlIGlmIChjb3VudCA8PSAxMCkge1xuICAgICAgc2VuZF9jb2RlKHMsIFJFUFpfM18xMCwgcy5ibF90cmVlKTtcbiAgICAgIHNlbmRfYml0cyhzLCBjb3VudCAtIDMsIDMpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbmRfY29kZShzLCBSRVBaXzExXzEzOCwgcy5ibF90cmVlKTtcbiAgICAgIHNlbmRfYml0cyhzLCBjb3VudCAtIDExLCA3KTtcbiAgICB9XG5cbiAgICBjb3VudCA9IDA7XG4gICAgcHJldmxlbiA9IGN1cmxlbjtcbiAgICBpZiAobmV4dGxlbiA9PT0gMCkge1xuICAgICAgbWF4X2NvdW50ID0gMTM4O1xuICAgICAgbWluX2NvdW50ID0gMztcblxuICAgIH0gZWxzZSBpZiAoY3VybGVuID09PSBuZXh0bGVuKSB7XG4gICAgICBtYXhfY291bnQgPSA2O1xuICAgICAgbWluX2NvdW50ID0gMztcblxuICAgIH0gZWxzZSB7XG4gICAgICBtYXhfY291bnQgPSA3O1xuICAgICAgbWluX2NvdW50ID0gNDtcbiAgICB9XG4gIH1cbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvbnN0cnVjdCB0aGUgSHVmZm1hbiB0cmVlIGZvciB0aGUgYml0IGxlbmd0aHMgYW5kIHJldHVybiB0aGUgaW5kZXggaW5cbiAqIGJsX29yZGVyIG9mIHRoZSBsYXN0IGJpdCBsZW5ndGggY29kZSB0byBzZW5kLlxuICovXG5mdW5jdGlvbiBidWlsZF9ibF90cmVlKHMpIHtcbiAgdmFyIG1heF9ibGluZGV4OyAgLyogaW5kZXggb2YgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgb2Ygbm9uIHplcm8gZnJlcSAqL1xuXG4gIC8qIERldGVybWluZSB0aGUgYml0IGxlbmd0aCBmcmVxdWVuY2llcyBmb3IgbGl0ZXJhbCBhbmQgZGlzdGFuY2UgdHJlZXMgKi9cbiAgc2Nhbl90cmVlKHMsIHMuZHluX2x0cmVlLCBzLmxfZGVzYy5tYXhfY29kZSk7XG4gIHNjYW5fdHJlZShzLCBzLmR5bl9kdHJlZSwgcy5kX2Rlc2MubWF4X2NvZGUpO1xuXG4gIC8qIEJ1aWxkIHRoZSBiaXQgbGVuZ3RoIHRyZWU6ICovXG4gIGJ1aWxkX3RyZWUocywgcy5ibF9kZXNjKTtcbiAgLyogb3B0X2xlbiBub3cgaW5jbHVkZXMgdGhlIGxlbmd0aCBvZiB0aGUgdHJlZSByZXByZXNlbnRhdGlvbnMsIGV4Y2VwdFxuICAgKiB0aGUgbGVuZ3RocyBvZiB0aGUgYml0IGxlbmd0aHMgY29kZXMgYW5kIHRoZSA1KzUrNCBiaXRzIGZvciB0aGUgY291bnRzLlxuICAgKi9cblxuICAvKiBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBiaXQgbGVuZ3RoIGNvZGVzIHRvIHNlbmQuIFRoZSBwa3ppcCBmb3JtYXRcbiAgICogcmVxdWlyZXMgdGhhdCBhdCBsZWFzdCA0IGJpdCBsZW5ndGggY29kZXMgYmUgc2VudC4gKGFwcG5vdGUudHh0IHNheXNcbiAgICogMyBidXQgdGhlIGFjdHVhbCB2YWx1ZSB1c2VkIGlzIDQuKVxuICAgKi9cbiAgZm9yIChtYXhfYmxpbmRleCA9IEJMX0NPREVTIC0gMTsgbWF4X2JsaW5kZXggPj0gMzsgbWF4X2JsaW5kZXgtLSkge1xuICAgIGlmIChzLmJsX3RyZWVbYmxfb3JkZXJbbWF4X2JsaW5kZXhdICogMiArIDFdLyouTGVuKi8gIT09IDApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICAvKiBVcGRhdGUgb3B0X2xlbiB0byBpbmNsdWRlIHRoZSBiaXQgbGVuZ3RoIHRyZWUgYW5kIGNvdW50cyAqL1xuICBzLm9wdF9sZW4gKz0gMyAqIChtYXhfYmxpbmRleCArIDEpICsgNSArIDUgKyA0O1xuICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmR5biB0cmVlczogZHluICVsZCwgc3RhdCAlbGRcIixcbiAgLy8gICAgICAgIHMtPm9wdF9sZW4sIHMtPnN0YXRpY19sZW4pKTtcblxuICByZXR1cm4gbWF4X2JsaW5kZXg7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZW5kIHRoZSBoZWFkZXIgZm9yIGEgYmxvY2sgdXNpbmcgZHluYW1pYyBIdWZmbWFuIHRyZWVzOiB0aGUgY291bnRzLCB0aGVcbiAqIGxlbmd0aHMgb2YgdGhlIGJpdCBsZW5ndGggY29kZXMsIHRoZSBsaXRlcmFsIHRyZWUgYW5kIHRoZSBkaXN0YW5jZSB0cmVlLlxuICogSU4gYXNzZXJ0aW9uOiBsY29kZXMgPj0gMjU3LCBkY29kZXMgPj0gMSwgYmxjb2RlcyA+PSA0LlxuICovXG5mdW5jdGlvbiBzZW5kX2FsbF90cmVlcyhzLCBsY29kZXMsIGRjb2RlcywgYmxjb2Rlcylcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICBpbnQgbGNvZGVzLCBkY29kZXMsIGJsY29kZXM7IC8qIG51bWJlciBvZiBjb2RlcyBmb3IgZWFjaCB0cmVlICovXG57XG4gIHZhciByYW5rOyAgICAgICAgICAgICAgICAgICAgLyogaW5kZXggaW4gYmxfb3JkZXIgKi9cblxuICAvL0Fzc2VydCAobGNvZGVzID49IDI1NyAmJiBkY29kZXMgPj0gMSAmJiBibGNvZGVzID49IDQsIFwibm90IGVub3VnaCBjb2Rlc1wiKTtcbiAgLy9Bc3NlcnQgKGxjb2RlcyA8PSBMX0NPREVTICYmIGRjb2RlcyA8PSBEX0NPREVTICYmIGJsY29kZXMgPD0gQkxfQ09ERVMsXG4gIC8vICAgICAgICBcInRvbyBtYW55IGNvZGVzXCIpO1xuICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmJsIGNvdW50czogXCIpKTtcbiAgc2VuZF9iaXRzKHMsIGxjb2RlcyAtIDI1NywgNSk7IC8qIG5vdCArMjU1IGFzIHN0YXRlZCBpbiBhcHBub3RlLnR4dCAqL1xuICBzZW5kX2JpdHMocywgZGNvZGVzIC0gMSwgICA1KTtcbiAgc2VuZF9iaXRzKHMsIGJsY29kZXMgLSA0LCAgNCk7IC8qIG5vdCAtMyBhcyBzdGF0ZWQgaW4gYXBwbm90ZS50eHQgKi9cbiAgZm9yIChyYW5rID0gMDsgcmFuayA8IGJsY29kZXM7IHJhbmsrKykge1xuICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiXFxuYmwgY29kZSAlMmQgXCIsIGJsX29yZGVyW3JhbmtdKSk7XG4gICAgc2VuZF9iaXRzKHMsIHMuYmxfdHJlZVtibF9vcmRlcltyYW5rXSAqIDIgKyAxXS8qLkxlbiovLCAzKTtcbiAgfVxuICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmJsIHRyZWU6IHNlbnQgJWxkXCIsIHMtPmJpdHNfc2VudCkpO1xuXG4gIHNlbmRfdHJlZShzLCBzLmR5bl9sdHJlZSwgbGNvZGVzIC0gMSk7IC8qIGxpdGVyYWwgdHJlZSAqL1xuICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmxpdCB0cmVlOiBzZW50ICVsZFwiLCBzLT5iaXRzX3NlbnQpKTtcblxuICBzZW5kX3RyZWUocywgcy5keW5fZHRyZWUsIGRjb2RlcyAtIDEpOyAvKiBkaXN0YW5jZSB0cmVlICovXG4gIC8vVHJhY2V2KChzdGRlcnIsIFwiXFxuZGlzdCB0cmVlOiBzZW50ICVsZFwiLCBzLT5iaXRzX3NlbnQpKTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENoZWNrIGlmIHRoZSBkYXRhIHR5cGUgaXMgVEVYVCBvciBCSU5BUlksIHVzaW5nIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOlxuICogLSBURVhUIGlmIHRoZSB0d28gY29uZGl0aW9ucyBiZWxvdyBhcmUgc2F0aXNmaWVkOlxuICogICAgYSkgVGhlcmUgYXJlIG5vIG5vbi1wb3J0YWJsZSBjb250cm9sIGNoYXJhY3RlcnMgYmVsb25naW5nIHRvIHRoZVxuICogICAgICAgXCJibGFjayBsaXN0XCIgKDAuLjYsIDE0Li4yNSwgMjguLjMxKS5cbiAqICAgIGIpIFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwcmludGFibGUgY2hhcmFjdGVyIGJlbG9uZ2luZyB0byB0aGVcbiAqICAgICAgIFwid2hpdGUgbGlzdFwiICg5IHtUQUJ9LCAxMCB7TEZ9LCAxMyB7Q1J9LCAzMi4uMjU1KS5cbiAqIC0gQklOQVJZIG90aGVyd2lzZS5cbiAqIC0gVGhlIGZvbGxvd2luZyBwYXJ0aWFsbHktcG9ydGFibGUgY29udHJvbCBjaGFyYWN0ZXJzIGZvcm0gYVxuICogICBcImdyYXkgbGlzdFwiIHRoYXQgaXMgaWdub3JlZCBpbiB0aGlzIGRldGVjdGlvbiBhbGdvcml0aG06XG4gKiAgICg3IHtCRUx9LCA4IHtCU30sIDExIHtWVH0sIDEyIHtGRn0sIDI2IHtTVUJ9LCAyNyB7RVNDfSkuXG4gKiBJTiBhc3NlcnRpb246IHRoZSBmaWVsZHMgRnJlcSBvZiBkeW5fbHRyZWUgYXJlIHNldC5cbiAqL1xuZnVuY3Rpb24gZGV0ZWN0X2RhdGFfdHlwZShzKSB7XG4gIC8qIGJsYWNrX21hc2sgaXMgdGhlIGJpdCBtYXNrIG9mIGJsYWNrLWxpc3RlZCBieXRlc1xuICAgKiBzZXQgYml0cyAwLi42LCAxNC4uMjUsIGFuZCAyOC4uMzFcbiAgICogMHhmM2ZmYzA3ZiA9IGJpbmFyeSAxMTExMDAxMTExMTExMTExMTEwMDAwMDAwMTExMTExMVxuICAgKi9cbiAgdmFyIGJsYWNrX21hc2sgPSAweGYzZmZjMDdmO1xuICB2YXIgbjtcblxuICAvKiBDaGVjayBmb3Igbm9uLXRleHR1YWwgKFwiYmxhY2stbGlzdGVkXCIpIGJ5dGVzLiAqL1xuICBmb3IgKG4gPSAwOyBuIDw9IDMxOyBuKyssIGJsYWNrX21hc2sgPj4+PSAxKSB7XG4gICAgaWYgKChibGFja19tYXNrICYgMSkgJiYgKHMuZHluX2x0cmVlW24gKiAyXS8qLkZyZXEqLyAhPT0gMCkpIHtcbiAgICAgIHJldHVybiBaX0JJTkFSWTtcbiAgICB9XG4gIH1cblxuICAvKiBDaGVjayBmb3IgdGV4dHVhbCAoXCJ3aGl0ZS1saXN0ZWRcIikgYnl0ZXMuICovXG4gIGlmIChzLmR5bl9sdHJlZVs5ICogMl0vKi5GcmVxKi8gIT09IDAgfHwgcy5keW5fbHRyZWVbMTAgKiAyXS8qLkZyZXEqLyAhPT0gMCB8fFxuICAgICAgcy5keW5fbHRyZWVbMTMgKiAyXS8qLkZyZXEqLyAhPT0gMCkge1xuICAgIHJldHVybiBaX1RFWFQ7XG4gIH1cbiAgZm9yIChuID0gMzI7IG4gPCBMSVRFUkFMUzsgbisrKSB7XG4gICAgaWYgKHMuZHluX2x0cmVlW24gKiAyXS8qLkZyZXEqLyAhPT0gMCkge1xuICAgICAgcmV0dXJuIFpfVEVYVDtcbiAgICB9XG4gIH1cblxuICAvKiBUaGVyZSBhcmUgbm8gXCJibGFjay1saXN0ZWRcIiBvciBcIndoaXRlLWxpc3RlZFwiIGJ5dGVzOlxuICAgKiB0aGlzIHN0cmVhbSBlaXRoZXIgaXMgZW1wdHkgb3IgaGFzIHRvbGVyYXRlZCAoXCJncmF5LWxpc3RlZFwiKSBieXRlcyBvbmx5LlxuICAgKi9cbiAgcmV0dXJuIFpfQklOQVJZO1xufVxuXG5cbnZhciBzdGF0aWNfaW5pdF9kb25lID0gZmFsc2U7XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW5pdGlhbGl6ZSB0aGUgdHJlZSBkYXRhIHN0cnVjdHVyZXMgZm9yIGEgbmV3IHpsaWIgc3RyZWFtLlxuICovXG5mdW5jdGlvbiBfdHJfaW5pdChzKVxue1xuXG4gIGlmICghc3RhdGljX2luaXRfZG9uZSkge1xuICAgIHRyX3N0YXRpY19pbml0KCk7XG4gICAgc3RhdGljX2luaXRfZG9uZSA9IHRydWU7XG4gIH1cblxuICBzLmxfZGVzYyAgPSBuZXcgVHJlZURlc2Mocy5keW5fbHRyZWUsIHN0YXRpY19sX2Rlc2MpO1xuICBzLmRfZGVzYyAgPSBuZXcgVHJlZURlc2Mocy5keW5fZHRyZWUsIHN0YXRpY19kX2Rlc2MpO1xuICBzLmJsX2Rlc2MgPSBuZXcgVHJlZURlc2Mocy5ibF90cmVlLCBzdGF0aWNfYmxfZGVzYyk7XG5cbiAgcy5iaV9idWYgPSAwO1xuICBzLmJpX3ZhbGlkID0gMDtcblxuICAvKiBJbml0aWFsaXplIHRoZSBmaXJzdCBibG9jayBvZiB0aGUgZmlyc3QgZmlsZTogKi9cbiAgaW5pdF9ibG9jayhzKTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNlbmQgYSBzdG9yZWQgYmxvY2tcbiAqL1xuZnVuY3Rpb24gX3RyX3N0b3JlZF9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIGxhc3QpXG4vL0RlZmxhdGVTdGF0ZSAqcztcbi8vY2hhcmYgKmJ1ZjsgICAgICAgLyogaW5wdXQgYmxvY2sgKi9cbi8vdWxnIHN0b3JlZF9sZW47ICAgLyogbGVuZ3RoIG9mIGlucHV0IGJsb2NrICovXG4vL2ludCBsYXN0OyAgICAgICAgIC8qIG9uZSBpZiB0aGlzIGlzIHRoZSBsYXN0IGJsb2NrIGZvciBhIGZpbGUgKi9cbntcbiAgc2VuZF9iaXRzKHMsIChTVE9SRURfQkxPQ0sgPDwgMSkgKyAobGFzdCA/IDEgOiAwKSwgMyk7ICAgIC8qIHNlbmQgYmxvY2sgdHlwZSAqL1xuICBjb3B5X2Jsb2NrKHMsIGJ1Ziwgc3RvcmVkX2xlbiwgdHJ1ZSk7IC8qIHdpdGggaGVhZGVyICovXG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZW5kIG9uZSBlbXB0eSBzdGF0aWMgYmxvY2sgdG8gZ2l2ZSBlbm91Z2ggbG9va2FoZWFkIGZvciBpbmZsYXRlLlxuICogVGhpcyB0YWtlcyAxMCBiaXRzLCBvZiB3aGljaCA3IG1heSByZW1haW4gaW4gdGhlIGJpdCBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIF90cl9hbGlnbihzKSB7XG4gIHNlbmRfYml0cyhzLCBTVEFUSUNfVFJFRVMgPDwgMSwgMyk7XG4gIHNlbmRfY29kZShzLCBFTkRfQkxPQ0ssIHN0YXRpY19sdHJlZSk7XG4gIGJpX2ZsdXNoKHMpO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogRGV0ZXJtaW5lIHRoZSBiZXN0IGVuY29kaW5nIGZvciB0aGUgY3VycmVudCBibG9jazogZHluYW1pYyB0cmVlcywgc3RhdGljXG4gKiB0cmVlcyBvciBzdG9yZSwgYW5kIG91dHB1dCB0aGUgZW5jb2RlZCBibG9jayB0byB0aGUgemlwIGZpbGUuXG4gKi9cbmZ1bmN0aW9uIF90cl9mbHVzaF9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIGxhc3QpXG4vL0RlZmxhdGVTdGF0ZSAqcztcbi8vY2hhcmYgKmJ1ZjsgICAgICAgLyogaW5wdXQgYmxvY2ssIG9yIE5VTEwgaWYgdG9vIG9sZCAqL1xuLy91bGcgc3RvcmVkX2xlbjsgICAvKiBsZW5ndGggb2YgaW5wdXQgYmxvY2sgKi9cbi8vaW50IGxhc3Q7ICAgICAgICAgLyogb25lIGlmIHRoaXMgaXMgdGhlIGxhc3QgYmxvY2sgZm9yIGEgZmlsZSAqL1xue1xuICB2YXIgb3B0X2xlbmIsIHN0YXRpY19sZW5iOyAgLyogb3B0X2xlbiBhbmQgc3RhdGljX2xlbiBpbiBieXRlcyAqL1xuICB2YXIgbWF4X2JsaW5kZXggPSAwOyAgICAgICAgLyogaW5kZXggb2YgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgb2Ygbm9uIHplcm8gZnJlcSAqL1xuXG4gIC8qIEJ1aWxkIHRoZSBIdWZmbWFuIHRyZWVzIHVubGVzcyBhIHN0b3JlZCBibG9jayBpcyBmb3JjZWQgKi9cbiAgaWYgKHMubGV2ZWwgPiAwKSB7XG5cbiAgICAvKiBDaGVjayBpZiB0aGUgZmlsZSBpcyBiaW5hcnkgb3IgdGV4dCAqL1xuICAgIGlmIChzLnN0cm0uZGF0YV90eXBlID09PSBaX1VOS05PV04pIHtcbiAgICAgIHMuc3RybS5kYXRhX3R5cGUgPSBkZXRlY3RfZGF0YV90eXBlKHMpO1xuICAgIH1cblxuICAgIC8qIENvbnN0cnVjdCB0aGUgbGl0ZXJhbCBhbmQgZGlzdGFuY2UgdHJlZXMgKi9cbiAgICBidWlsZF90cmVlKHMsIHMubF9kZXNjKTtcbiAgICAvLyBUcmFjZXYoKHN0ZGVyciwgXCJcXG5saXQgZGF0YTogZHluICVsZCwgc3RhdCAlbGRcIiwgcy0+b3B0X2xlbixcbiAgICAvLyAgICAgICAgcy0+c3RhdGljX2xlbikpO1xuXG4gICAgYnVpbGRfdHJlZShzLCBzLmRfZGVzYyk7XG4gICAgLy8gVHJhY2V2KChzdGRlcnIsIFwiXFxuZGlzdCBkYXRhOiBkeW4gJWxkLCBzdGF0ICVsZFwiLCBzLT5vcHRfbGVuLFxuICAgIC8vICAgICAgICBzLT5zdGF0aWNfbGVuKSk7XG4gICAgLyogQXQgdGhpcyBwb2ludCwgb3B0X2xlbiBhbmQgc3RhdGljX2xlbiBhcmUgdGhlIHRvdGFsIGJpdCBsZW5ndGhzIG9mXG4gICAgICogdGhlIGNvbXByZXNzZWQgYmxvY2sgZGF0YSwgZXhjbHVkaW5nIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9ucy5cbiAgICAgKi9cblxuICAgIC8qIEJ1aWxkIHRoZSBiaXQgbGVuZ3RoIHRyZWUgZm9yIHRoZSBhYm92ZSB0d28gdHJlZXMsIGFuZCBnZXQgdGhlIGluZGV4XG4gICAgICogaW4gYmxfb3JkZXIgb2YgdGhlIGxhc3QgYml0IGxlbmd0aCBjb2RlIHRvIHNlbmQuXG4gICAgICovXG4gICAgbWF4X2JsaW5kZXggPSBidWlsZF9ibF90cmVlKHMpO1xuXG4gICAgLyogRGV0ZXJtaW5lIHRoZSBiZXN0IGVuY29kaW5nLiBDb21wdXRlIHRoZSBibG9jayBsZW5ndGhzIGluIGJ5dGVzLiAqL1xuICAgIG9wdF9sZW5iID0gKHMub3B0X2xlbiArIDMgKyA3KSA+Pj4gMztcbiAgICBzdGF0aWNfbGVuYiA9IChzLnN0YXRpY19sZW4gKyAzICsgNykgPj4+IDM7XG5cbiAgICAvLyBUcmFjZXYoKHN0ZGVyciwgXCJcXG5vcHQgJWx1KCVsdSkgc3RhdCAlbHUoJWx1KSBzdG9yZWQgJWx1IGxpdCAldSBcIixcbiAgICAvLyAgICAgICAgb3B0X2xlbmIsIHMtPm9wdF9sZW4sIHN0YXRpY19sZW5iLCBzLT5zdGF0aWNfbGVuLCBzdG9yZWRfbGVuLFxuICAgIC8vICAgICAgICBzLT5sYXN0X2xpdCkpO1xuXG4gICAgaWYgKHN0YXRpY19sZW5iIDw9IG9wdF9sZW5iKSB7IG9wdF9sZW5iID0gc3RhdGljX2xlbmI7IH1cblxuICB9IGVsc2Uge1xuICAgIC8vIEFzc2VydChidWYgIT0gKGNoYXIqKTAsIFwibG9zdCBidWZcIik7XG4gICAgb3B0X2xlbmIgPSBzdGF0aWNfbGVuYiA9IHN0b3JlZF9sZW4gKyA1OyAvKiBmb3JjZSBhIHN0b3JlZCBibG9jayAqL1xuICB9XG5cbiAgaWYgKChzdG9yZWRfbGVuICsgNCA8PSBvcHRfbGVuYikgJiYgKGJ1ZiAhPT0gLTEpKSB7XG4gICAgLyogNDogdHdvIHdvcmRzIGZvciB0aGUgbGVuZ3RocyAqL1xuXG4gICAgLyogVGhlIHRlc3QgYnVmICE9IE5VTEwgaXMgb25seSBuZWNlc3NhcnkgaWYgTElUX0JVRlNJWkUgPiBXU0laRS5cbiAgICAgKiBPdGhlcndpc2Ugd2UgY2FuJ3QgaGF2ZSBwcm9jZXNzZWQgbW9yZSB0aGFuIFdTSVpFIGlucHV0IGJ5dGVzIHNpbmNlXG4gICAgICogdGhlIGxhc3QgYmxvY2sgZmx1c2gsIGJlY2F1c2UgY29tcHJlc3Npb24gd291bGQgaGF2ZSBiZWVuXG4gICAgICogc3VjY2Vzc2Z1bC4gSWYgTElUX0JVRlNJWkUgPD0gV1NJWkUsIGl0IGlzIG5ldmVyIHRvbyBsYXRlIHRvXG4gICAgICogdHJhbnNmb3JtIGEgYmxvY2sgaW50byBhIHN0b3JlZCBibG9jay5cbiAgICAgKi9cbiAgICBfdHJfc3RvcmVkX2Jsb2NrKHMsIGJ1Ziwgc3RvcmVkX2xlbiwgbGFzdCk7XG5cbiAgfSBlbHNlIGlmIChzLnN0cmF0ZWd5ID09PSBaX0ZJWEVEIHx8IHN0YXRpY19sZW5iID09PSBvcHRfbGVuYikge1xuXG4gICAgc2VuZF9iaXRzKHMsIChTVEFUSUNfVFJFRVMgPDwgMSkgKyAobGFzdCA/IDEgOiAwKSwgMyk7XG4gICAgY29tcHJlc3NfYmxvY2socywgc3RhdGljX2x0cmVlLCBzdGF0aWNfZHRyZWUpO1xuXG4gIH0gZWxzZSB7XG4gICAgc2VuZF9iaXRzKHMsIChEWU5fVFJFRVMgPDwgMSkgKyAobGFzdCA/IDEgOiAwKSwgMyk7XG4gICAgc2VuZF9hbGxfdHJlZXMocywgcy5sX2Rlc2MubWF4X2NvZGUgKyAxLCBzLmRfZGVzYy5tYXhfY29kZSArIDEsIG1heF9ibGluZGV4ICsgMSk7XG4gICAgY29tcHJlc3NfYmxvY2socywgcy5keW5fbHRyZWUsIHMuZHluX2R0cmVlKTtcbiAgfVxuICAvLyBBc3NlcnQgKHMtPmNvbXByZXNzZWRfbGVuID09IHMtPmJpdHNfc2VudCwgXCJiYWQgY29tcHJlc3NlZCBzaXplXCIpO1xuICAvKiBUaGUgYWJvdmUgY2hlY2sgaXMgbWFkZSBtb2QgMl4zMiwgZm9yIGZpbGVzIGxhcmdlciB0aGFuIDUxMiBNQlxuICAgKiBhbmQgdUxvbmcgaW1wbGVtZW50ZWQgb24gMzIgYml0cy5cbiAgICovXG4gIGluaXRfYmxvY2socyk7XG5cbiAgaWYgKGxhc3QpIHtcbiAgICBiaV93aW5kdXAocyk7XG4gIH1cbiAgLy8gVHJhY2V2KChzdGRlcnIsXCJcXG5jb21wcmxlbiAlbHUoJWx1KSBcIiwgcy0+Y29tcHJlc3NlZF9sZW4+PjMsXG4gIC8vICAgICAgIHMtPmNvbXByZXNzZWRfbGVuLTcqbGFzdCkpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNhdmUgdGhlIG1hdGNoIGluZm8gYW5kIHRhbGx5IHRoZSBmcmVxdWVuY3kgY291bnRzLiBSZXR1cm4gdHJ1ZSBpZlxuICogdGhlIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkLlxuICovXG5mdW5jdGlvbiBfdHJfdGFsbHkocywgZGlzdCwgbGMpXG4vLyAgICBkZWZsYXRlX3N0YXRlICpzO1xuLy8gICAgdW5zaWduZWQgZGlzdDsgIC8qIGRpc3RhbmNlIG9mIG1hdGNoZWQgc3RyaW5nICovXG4vLyAgICB1bnNpZ25lZCBsYzsgICAgLyogbWF0Y2ggbGVuZ3RoLU1JTl9NQVRDSCBvciB1bm1hdGNoZWQgY2hhciAoaWYgZGlzdD09MCkgKi9cbntcbiAgLy92YXIgb3V0X2xlbmd0aCwgaW5fbGVuZ3RoLCBkY29kZTtcblxuICBzLnBlbmRpbmdfYnVmW3MuZF9idWYgKyBzLmxhc3RfbGl0ICogMl0gICAgID0gKGRpc3QgPj4+IDgpICYgMHhmZjtcbiAgcy5wZW5kaW5nX2J1ZltzLmRfYnVmICsgcy5sYXN0X2xpdCAqIDIgKyAxXSA9IGRpc3QgJiAweGZmO1xuXG4gIHMucGVuZGluZ19idWZbcy5sX2J1ZiArIHMubGFzdF9saXRdID0gbGMgJiAweGZmO1xuICBzLmxhc3RfbGl0Kys7XG5cbiAgaWYgKGRpc3QgPT09IDApIHtcbiAgICAvKiBsYyBpcyB0aGUgdW5tYXRjaGVkIGNoYXIgKi9cbiAgICBzLmR5bl9sdHJlZVtsYyAqIDJdLyouRnJlcSovKys7XG4gIH0gZWxzZSB7XG4gICAgcy5tYXRjaGVzKys7XG4gICAgLyogSGVyZSwgbGMgaXMgdGhlIG1hdGNoIGxlbmd0aCAtIE1JTl9NQVRDSCAqL1xuICAgIGRpc3QtLTsgICAgICAgICAgICAgLyogZGlzdCA9IG1hdGNoIGRpc3RhbmNlIC0gMSAqL1xuICAgIC8vQXNzZXJ0KCh1c2gpZGlzdCA8ICh1c2gpTUFYX0RJU1QocykgJiZcbiAgICAvLyAgICAgICAodXNoKWxjIDw9ICh1c2gpKE1BWF9NQVRDSC1NSU5fTUFUQ0gpICYmXG4gICAgLy8gICAgICAgKHVzaClkX2NvZGUoZGlzdCkgPCAodXNoKURfQ09ERVMsICBcIl90cl90YWxseTogYmFkIG1hdGNoXCIpO1xuXG4gICAgcy5keW5fbHRyZWVbKF9sZW5ndGhfY29kZVtsY10gKyBMSVRFUkFMUyArIDEpICogMl0vKi5GcmVxKi8rKztcbiAgICBzLmR5bl9kdHJlZVtkX2NvZGUoZGlzdCkgKiAyXS8qLkZyZXEqLysrO1xuICB9XG5cbi8vICghKSBUaGlzIGJsb2NrIGlzIGRpc2FibGVkIGluIHpsaWIgZGVmYXVsdHMsXG4vLyBkb24ndCBlbmFibGUgaXQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5XG5cbi8vI2lmZGVmIFRSVU5DQVRFX0JMT0NLXG4vLyAgLyogVHJ5IHRvIGd1ZXNzIGlmIGl0IGlzIHByb2ZpdGFibGUgdG8gc3RvcCB0aGUgY3VycmVudCBibG9jayBoZXJlICovXG4vLyAgaWYgKChzLmxhc3RfbGl0ICYgMHgxZmZmKSA9PT0gMCAmJiBzLmxldmVsID4gMikge1xuLy8gICAgLyogQ29tcHV0ZSBhbiB1cHBlciBib3VuZCBmb3IgdGhlIGNvbXByZXNzZWQgbGVuZ3RoICovXG4vLyAgICBvdXRfbGVuZ3RoID0gcy5sYXN0X2xpdCo4O1xuLy8gICAgaW5fbGVuZ3RoID0gcy5zdHJzdGFydCAtIHMuYmxvY2tfc3RhcnQ7XG4vL1xuLy8gICAgZm9yIChkY29kZSA9IDA7IGRjb2RlIDwgRF9DT0RFUzsgZGNvZGUrKykge1xuLy8gICAgICBvdXRfbGVuZ3RoICs9IHMuZHluX2R0cmVlW2Rjb2RlKjJdLyouRnJlcSovICogKDUgKyBleHRyYV9kYml0c1tkY29kZV0pO1xuLy8gICAgfVxuLy8gICAgb3V0X2xlbmd0aCA+Pj49IDM7XG4vLyAgICAvL1RyYWNldigoc3RkZXJyLFwiXFxubGFzdF9saXQgJXUsIGluICVsZCwgb3V0IH4lbGQoJWxkJSUpIFwiLFxuLy8gICAgLy8gICAgICAgcy0+bGFzdF9saXQsIGluX2xlbmd0aCwgb3V0X2xlbmd0aCxcbi8vICAgIC8vICAgICAgIDEwMEwgLSBvdXRfbGVuZ3RoKjEwMEwvaW5fbGVuZ3RoKSk7XG4vLyAgICBpZiAocy5tYXRjaGVzIDwgKHMubGFzdF9saXQ+PjEpLyppbnQgLzIqLyAmJiBvdXRfbGVuZ3RoIDwgKGluX2xlbmd0aD4+MSkvKmludCAvMiovKSB7XG4vLyAgICAgIHJldHVybiB0cnVlO1xuLy8gICAgfVxuLy8gIH1cbi8vI2VuZGlmXG5cbiAgcmV0dXJuIChzLmxhc3RfbGl0ID09PSBzLmxpdF9idWZzaXplIC0gMSk7XG4gIC8qIFdlIGF2b2lkIGVxdWFsaXR5IHdpdGggbGl0X2J1ZnNpemUgYmVjYXVzZSBvZiB3cmFwYXJvdW5kIGF0IDY0S1xuICAgKiBvbiAxNiBiaXQgbWFjaGluZXMgYW5kIGJlY2F1c2Ugc3RvcmVkIGJsb2NrcyBhcmUgcmVzdHJpY3RlZCB0b1xuICAgKiA2NEstMSBieXRlcy5cbiAgICovXG59XG5cbmV4cG9ydHMuX3RyX2luaXQgID0gX3RyX2luaXQ7XG5leHBvcnRzLl90cl9zdG9yZWRfYmxvY2sgPSBfdHJfc3RvcmVkX2Jsb2NrO1xuZXhwb3J0cy5fdHJfZmx1c2hfYmxvY2sgID0gX3RyX2ZsdXNoX2Jsb2NrO1xuZXhwb3J0cy5fdHJfdGFsbHkgPSBfdHJfdGFsbHk7XG5leHBvcnRzLl90cl9hbGlnbiA9IF90cl9hbGlnbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG5mdW5jdGlvbiBaU3RyZWFtKCkge1xuICAvKiBuZXh0IGlucHV0IGJ5dGUgKi9cbiAgdGhpcy5pbnB1dCA9IG51bGw7IC8vIEpTIHNwZWNpZmljLCBiZWNhdXNlIHdlIGhhdmUgbm8gcG9pbnRlcnNcbiAgdGhpcy5uZXh0X2luID0gMDtcbiAgLyogbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBhdCBpbnB1dCAqL1xuICB0aGlzLmF2YWlsX2luID0gMDtcbiAgLyogdG90YWwgbnVtYmVyIG9mIGlucHV0IGJ5dGVzIHJlYWQgc28gZmFyICovXG4gIHRoaXMudG90YWxfaW4gPSAwO1xuICAvKiBuZXh0IG91dHB1dCBieXRlIHNob3VsZCBiZSBwdXQgdGhlcmUgKi9cbiAgdGhpcy5vdXRwdXQgPSBudWxsOyAvLyBKUyBzcGVjaWZpYywgYmVjYXVzZSB3ZSBoYXZlIG5vIHBvaW50ZXJzXG4gIHRoaXMubmV4dF9vdXQgPSAwO1xuICAvKiByZW1haW5pbmcgZnJlZSBzcGFjZSBhdCBvdXRwdXQgKi9cbiAgdGhpcy5hdmFpbF9vdXQgPSAwO1xuICAvKiB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgb3V0cHV0IHNvIGZhciAqL1xuICB0aGlzLnRvdGFsX291dCA9IDA7XG4gIC8qIGxhc3QgZXJyb3IgbWVzc2FnZSwgTlVMTCBpZiBubyBlcnJvciAqL1xuICB0aGlzLm1zZyA9ICcnLypaX05VTEwqLztcbiAgLyogbm90IHZpc2libGUgYnkgYXBwbGljYXRpb25zICovXG4gIHRoaXMuc3RhdGUgPSBudWxsO1xuICAvKiBiZXN0IGd1ZXNzIGFib3V0IHRoZSBkYXRhIHR5cGU6IGJpbmFyeSBvciB0ZXh0ICovXG4gIHRoaXMuZGF0YV90eXBlID0gMi8qWl9VTktOT1dOKi87XG4gIC8qIGFkbGVyMzIgdmFsdWUgb2YgdGhlIHVuY29tcHJlc3NlZCBkYXRhICovXG4gIHRoaXMuYWRsZXIgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFpTdHJlYW07XG4iLCIvLyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L3NlbGYtc2lnbmVkL2Jsb2IvZ2gtcGFnZXMvbGliL2FzbjEuanNcbi8vIEZlZG9yLCB5b3UgYXJlIGFtYXppbmcuXG4ndXNlIHN0cmljdCdcblxudmFyIGFzbjEgPSByZXF1aXJlKCdhc24xLmpzJylcblxuZXhwb3J0cy5jZXJ0aWZpY2F0ZSA9IHJlcXVpcmUoJy4vY2VydGlmaWNhdGUnKVxuXG52YXIgUlNBUHJpdmF0ZUtleSA9IGFzbjEuZGVmaW5lKCdSU0FQcml2YXRlS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdtb2R1bHVzJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3B1YmxpY0V4cG9uZW50JykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaXZhdGVFeHBvbmVudCcpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcmltZTEnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpbWUyJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2V4cG9uZW50MScpLmludCgpLFxuICAgIHRoaXMua2V5KCdleHBvbmVudDInKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnY29lZmZpY2llbnQnKS5pbnQoKVxuICApXG59KVxuZXhwb3J0cy5SU0FQcml2YXRlS2V5ID0gUlNBUHJpdmF0ZUtleVxuXG52YXIgUlNBUHVibGljS2V5ID0gYXNuMS5kZWZpbmUoJ1JTQVB1YmxpY0tleScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ21vZHVsdXMnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHVibGljRXhwb25lbnQnKS5pbnQoKVxuICApXG59KVxuZXhwb3J0cy5SU0FQdWJsaWNLZXkgPSBSU0FQdWJsaWNLZXlcblxudmFyIFB1YmxpY0tleSA9IGFzbjEuZGVmaW5lKCdTdWJqZWN0UHVibGljS2V5SW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFB1YmxpY0tleScpLmJpdHN0cigpXG4gIClcbn0pXG5leHBvcnRzLlB1YmxpY0tleSA9IFB1YmxpY0tleVxuXG52YXIgQWxnb3JpdGhtSWRlbnRpZmllciA9IGFzbjEuZGVmaW5lKCdBbGdvcml0aG1JZGVudGlmaWVyJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnYWxnb3JpdGhtJykub2JqaWQoKSxcbiAgICB0aGlzLmtleSgnbm9uZScpLm51bGxfKCkub3B0aW9uYWwoKSxcbiAgICB0aGlzLmtleSgnY3VydmUnKS5vYmppZCgpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ3BhcmFtcycpLnNlcSgpLm9iaihcbiAgICAgIHRoaXMua2V5KCdwJykuaW50KCksXG4gICAgICB0aGlzLmtleSgncScpLmludCgpLFxuICAgICAgdGhpcy5rZXkoJ2cnKS5pbnQoKVxuICAgICkub3B0aW9uYWwoKVxuICApXG59KVxuXG52YXIgUHJpdmF0ZUtleUluZm8gPSBhc24xLmRlZmluZSgnUHJpdmF0ZUtleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFByaXZhdGVLZXknKS5vY3RzdHIoKVxuICApXG59KVxuZXhwb3J0cy5Qcml2YXRlS2V5ID0gUHJpdmF0ZUtleUluZm9cbnZhciBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyA9IGFzbjEuZGVmaW5lKCdFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnNlcSgpLm9iaihcbiAgICAgIHRoaXMua2V5KCdpZCcpLm9iamlkKCksXG4gICAgICB0aGlzLmtleSgnZGVjcnlwdCcpLnNlcSgpLm9iaihcbiAgICAgICAgdGhpcy5rZXkoJ2tkZScpLnNlcSgpLm9iaihcbiAgICAgICAgICB0aGlzLmtleSgnaWQnKS5vYmppZCgpLFxuICAgICAgICAgIHRoaXMua2V5KCdrZGVwYXJhbXMnKS5zZXEoKS5vYmooXG4gICAgICAgICAgICB0aGlzLmtleSgnc2FsdCcpLm9jdHN0cigpLFxuICAgICAgICAgICAgdGhpcy5rZXkoJ2l0ZXJzJykuaW50KClcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRoaXMua2V5KCdjaXBoZXInKS5zZXEoKS5vYmooXG4gICAgICAgICAgdGhpcy5rZXkoJ2FsZ28nKS5vYmppZCgpLFxuICAgICAgICAgIHRoaXMua2V5KCdpdicpLm9jdHN0cigpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIHRoaXMua2V5KCdzdWJqZWN0UHJpdmF0ZUtleScpLm9jdHN0cigpXG4gIClcbn0pXG5cbmV4cG9ydHMuRW5jcnlwdGVkUHJpdmF0ZUtleSA9IEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvXG5cbnZhciBEU0FQcml2YXRlS2V5ID0gYXNuMS5kZWZpbmUoJ0RTQVByaXZhdGVLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3AnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncScpLmludCgpLFxuICAgIHRoaXMua2V5KCdnJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3B1Yl9rZXknKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpdl9rZXknKS5pbnQoKVxuICApXG59KVxuZXhwb3J0cy5EU0FQcml2YXRlS2V5ID0gRFNBUHJpdmF0ZUtleVxuXG5leHBvcnRzLkRTQXBhcmFtID0gYXNuMS5kZWZpbmUoJ0RTQXBhcmFtJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLmludCgpXG59KVxuXG52YXIgRUNQcml2YXRlS2V5ID0gYXNuMS5kZWZpbmUoJ0VDUHJpdmF0ZUtleScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3ZlcnNpb24nKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpdmF0ZUtleScpLm9jdHN0cigpLFxuICAgIHRoaXMua2V5KCdwYXJhbWV0ZXJzJykub3B0aW9uYWwoKS5leHBsaWNpdCgwKS51c2UoRUNQYXJhbWV0ZXJzKSxcbiAgICB0aGlzLmtleSgncHVibGljS2V5Jykub3B0aW9uYWwoKS5leHBsaWNpdCgxKS5iaXRzdHIoKVxuICApXG59KVxuZXhwb3J0cy5FQ1ByaXZhdGVLZXkgPSBFQ1ByaXZhdGVLZXlcblxudmFyIEVDUGFyYW1ldGVycyA9IGFzbjEuZGVmaW5lKCdFQ1BhcmFtZXRlcnMnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2hvaWNlKHtcbiAgICBuYW1lZEN1cnZlOiB0aGlzLm9iamlkKClcbiAgfSlcbn0pXG5cbmV4cG9ydHMuc2lnbmF0dXJlID0gYXNuMS5kZWZpbmUoJ3NpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3InKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncycpLmludCgpXG4gIClcbn0pXG4iLCIvLyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9SYW50YW5lbi9ub2RlLWR0bHMvYmxvYi8yNWE3ZGM4NjFiZGEzOGNmZWFjOTNhNzIzNTAwZWVhNGYwYWMyZTg2L0NlcnRpZmljYXRlLmpzXG4vLyB0aGFua3MgdG8gQFJhbnRhbmVuXG5cbid1c2Ugc3RyaWN0J1xuXG52YXIgYXNuID0gcmVxdWlyZSgnYXNuMS5qcycpXG5cbnZhciBUaW1lID0gYXNuLmRlZmluZSgnVGltZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jaG9pY2Uoe1xuICAgIHV0Y1RpbWU6IHRoaXMudXRjdGltZSgpLFxuICAgIGdlbmVyYWxUaW1lOiB0aGlzLmdlbnRpbWUoKVxuICB9KVxufSlcblxudmFyIEF0dHJpYnV0ZVR5cGVWYWx1ZSA9IGFzbi5kZWZpbmUoJ0F0dHJpYnV0ZVR5cGVWYWx1ZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3R5cGUnKS5vYmppZCgpLFxuICAgIHRoaXMua2V5KCd2YWx1ZScpLmFueSgpXG4gIClcbn0pXG5cbnZhciBBbGdvcml0aG1JZGVudGlmaWVyID0gYXNuLmRlZmluZSgnQWxnb3JpdGhtSWRlbnRpZmllcicsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLm9iamlkKCksXG4gICAgdGhpcy5rZXkoJ3BhcmFtZXRlcnMnKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdjdXJ2ZScpLm9iamlkKCkub3B0aW9uYWwoKVxuICApXG59KVxuXG52YXIgU3ViamVjdFB1YmxpY0tleUluZm8gPSBhc24uZGVmaW5lKCdTdWJqZWN0UHVibGljS2V5SW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFB1YmxpY0tleScpLmJpdHN0cigpXG4gIClcbn0pXG5cbnZhciBSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lID0gYXNuLmRlZmluZSgnUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXRvZihBdHRyaWJ1dGVUeXBlVmFsdWUpXG59KVxuXG52YXIgUkROU2VxdWVuY2UgPSBhc24uZGVmaW5lKCdSRE5TZXF1ZW5jZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXFvZihSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lKVxufSlcblxudmFyIE5hbWUgPSBhc24uZGVmaW5lKCdOYW1lJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLmNob2ljZSh7XG4gICAgcmRuU2VxdWVuY2U6IHRoaXMudXNlKFJETlNlcXVlbmNlKVxuICB9KVxufSlcblxudmFyIFZhbGlkaXR5ID0gYXNuLmRlZmluZSgnVmFsaWRpdHknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdub3RCZWZvcmUnKS51c2UoVGltZSksXG4gICAgdGhpcy5rZXkoJ25vdEFmdGVyJykudXNlKFRpbWUpXG4gIClcbn0pXG5cbnZhciBFeHRlbnNpb24gPSBhc24uZGVmaW5lKCdFeHRlbnNpb24nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdleHRuSUQnKS5vYmppZCgpLFxuICAgIHRoaXMua2V5KCdjcml0aWNhbCcpLmJvb2woKS5kZWYoZmFsc2UpLFxuICAgIHRoaXMua2V5KCdleHRuVmFsdWUnKS5vY3RzdHIoKVxuICApXG59KVxuXG52YXIgVEJTQ2VydGlmaWNhdGUgPSBhc24uZGVmaW5lKCdUQlNDZXJ0aWZpY2F0ZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3ZlcnNpb24nKS5leHBsaWNpdCgwKS5pbnQoKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdzZXJpYWxOdW1iZXInKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnc2lnbmF0dXJlJykudXNlKEFsZ29yaXRobUlkZW50aWZpZXIpLFxuICAgIHRoaXMua2V5KCdpc3N1ZXInKS51c2UoTmFtZSksXG4gICAgdGhpcy5rZXkoJ3ZhbGlkaXR5JykudXNlKFZhbGlkaXR5KSxcbiAgICB0aGlzLmtleSgnc3ViamVjdCcpLnVzZShOYW1lKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFB1YmxpY0tleUluZm8nKS51c2UoU3ViamVjdFB1YmxpY0tleUluZm8pLFxuICAgIHRoaXMua2V5KCdpc3N1ZXJVbmlxdWVJRCcpLmltcGxpY2l0KDEpLmJpdHN0cigpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RVbmlxdWVJRCcpLmltcGxpY2l0KDIpLmJpdHN0cigpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ2V4dGVuc2lvbnMnKS5leHBsaWNpdCgzKS5zZXFvZihFeHRlbnNpb24pLm9wdGlvbmFsKClcbiAgKVxufSlcblxudmFyIFg1MDlDZXJ0aWZpY2F0ZSA9IGFzbi5kZWZpbmUoJ1g1MDlDZXJ0aWZpY2F0ZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3Ric0NlcnRpZmljYXRlJykudXNlKFRCU0NlcnRpZmljYXRlKSxcbiAgICB0aGlzLmtleSgnc2lnbmF0dXJlQWxnb3JpdGhtJykudXNlKEFsZ29yaXRobUlkZW50aWZpZXIpLFxuICAgIHRoaXMua2V5KCdzaWduYXR1cmVWYWx1ZScpLmJpdHN0cigpXG4gIClcbn0pXG5cbm1vZHVsZS5leHBvcnRzID0gWDUwOUNlcnRpZmljYXRlXG4iLCIvLyBhZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FwYXRpbC9wZW1zdHJpcFxudmFyIGZpbmRQcm9jID0gL1Byb2MtVHlwZTogNCxFTkNSWVBURURbXFxuXFxyXStERUstSW5mbzogQUVTLSgoPzoxMjgpfCg/OjE5Mil8KD86MjU2KSktQ0JDLChbMC05QS1IXSspW1xcblxccl0rKFswLTlBLXpcXG5cXHIrLz1dKylbXFxuXFxyXSsvbVxudmFyIHN0YXJ0UmVnZXggPSAvXi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tL21cbnZhciBmdWxsUmVnZXggPSAvXi0tLS0tQkVHSU4gKCg/Oi4qPyBLRVkpfENFUlRJRklDQVRFKS0tLS0tKFswLTlBLXpcXG5cXHIrLz1dKyktLS0tLUVORCBcXDEtLS0tLSQvbVxudmFyIGV2cCA9IHJlcXVpcmUoJ2V2cF9ieXRlc3Rva2V5JylcbnZhciBjaXBoZXJzID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1hZXMnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChva2V5LCBwYXNzd29yZCkge1xuICB2YXIga2V5ID0gb2tleS50b1N0cmluZygpXG4gIHZhciBtYXRjaCA9IGtleS5tYXRjaChmaW5kUHJvYylcbiAgdmFyIGRlY3J5cHRlZFxuICBpZiAoIW1hdGNoKSB7XG4gICAgdmFyIG1hdGNoMiA9IGtleS5tYXRjaChmdWxsUmVnZXgpXG4gICAgZGVjcnlwdGVkID0gQnVmZmVyLmZyb20obWF0Y2gyWzJdLnJlcGxhY2UoL1tcXHJcXG5dL2csICcnKSwgJ2Jhc2U2NCcpXG4gIH0gZWxzZSB7XG4gICAgdmFyIHN1aXRlID0gJ2FlcycgKyBtYXRjaFsxXVxuICAgIHZhciBpdiA9IEJ1ZmZlci5mcm9tKG1hdGNoWzJdLCAnaGV4JylcbiAgICB2YXIgY2lwaGVyVGV4dCA9IEJ1ZmZlci5mcm9tKG1hdGNoWzNdLnJlcGxhY2UoL1tcXHJcXG5dL2csICcnKSwgJ2Jhc2U2NCcpXG4gICAgdmFyIGNpcGhlcktleSA9IGV2cChwYXNzd29yZCwgaXYuc2xpY2UoMCwgOCksIHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpLmtleVxuICAgIHZhciBvdXQgPSBbXVxuICAgIHZhciBjaXBoZXIgPSBjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGNpcGhlcktleSwgaXYpXG4gICAgb3V0LnB1c2goY2lwaGVyLnVwZGF0ZShjaXBoZXJUZXh0KSlcbiAgICBvdXQucHVzaChjaXBoZXIuZmluYWwoKSlcbiAgICBkZWNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KG91dClcbiAgfVxuICB2YXIgdGFnID0ga2V5Lm1hdGNoKHN0YXJ0UmVnZXgpWzFdXG4gIHJldHVybiB7XG4gICAgdGFnOiB0YWcsXG4gICAgZGF0YTogZGVjcnlwdGVkXG4gIH1cbn1cbiIsInZhciBhc24xID0gcmVxdWlyZSgnLi9hc24xJylcbnZhciBhZXNpZCA9IHJlcXVpcmUoJy4vYWVzaWQuanNvbicpXG52YXIgZml4UHJvYyA9IHJlcXVpcmUoJy4vZml4UHJvYycpXG52YXIgY2lwaGVycyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzJylcbnZhciBjb21wYXQgPSByZXF1aXJlKCdwYmtkZjInKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5tb2R1bGUuZXhwb3J0cyA9IHBhcnNlS2V5c1xuXG5mdW5jdGlvbiBwYXJzZUtleXMgKGJ1ZmZlcikge1xuICB2YXIgcGFzc3dvcmRcbiAgaWYgKHR5cGVvZiBidWZmZXIgPT09ICdvYmplY3QnICYmICFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSkge1xuICAgIHBhc3N3b3JkID0gYnVmZmVyLnBhc3NwaHJhc2VcbiAgICBidWZmZXIgPSBidWZmZXIua2V5XG4gIH1cbiAgaWYgKHR5cGVvZiBidWZmZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgYnVmZmVyID0gQnVmZmVyLmZyb20oYnVmZmVyKVxuICB9XG5cbiAgdmFyIHN0cmlwcGVkID0gZml4UHJvYyhidWZmZXIsIHBhc3N3b3JkKVxuXG4gIHZhciB0eXBlID0gc3RyaXBwZWQudGFnXG4gIHZhciBkYXRhID0gc3RyaXBwZWQuZGF0YVxuICB2YXIgc3VidHlwZSwgbmRhdGFcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnQ0VSVElGSUNBVEUnOlxuICAgICAgbmRhdGEgPSBhc24xLmNlcnRpZmljYXRlLmRlY29kZShkYXRhLCAnZGVyJykudGJzQ2VydGlmaWNhdGUuc3ViamVjdFB1YmxpY0tleUluZm9cbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICBjYXNlICdQVUJMSUMgS0VZJzpcbiAgICAgIGlmICghbmRhdGEpIHtcbiAgICAgICAgbmRhdGEgPSBhc24xLlB1YmxpY0tleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICB9XG4gICAgICBzdWJ0eXBlID0gbmRhdGEuYWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKCcuJylcbiAgICAgIHN3aXRjaCAoc3VidHlwZSkge1xuICAgICAgICBjYXNlICcxLjIuODQwLjExMzU0OS4xLjEuMSc6XG4gICAgICAgICAgcmV0dXJuIGFzbjEuUlNBUHVibGljS2V5LmRlY29kZShuZGF0YS5zdWJqZWN0UHVibGljS2V5LmRhdGEsICdkZXInKVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQ1LjIuMSc6XG4gICAgICAgICAgbmRhdGEuc3ViamVjdFByaXZhdGVLZXkgPSBuZGF0YS5zdWJqZWN0UHVibGljS2V5XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdlYycsXG4gICAgICAgICAgICBkYXRhOiBuZGF0YVxuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0MC40LjEnOlxuICAgICAgICAgIG5kYXRhLmFsZ29yaXRobS5wYXJhbXMucHViX2tleSA9IGFzbjEuRFNBcGFyYW0uZGVjb2RlKG5kYXRhLnN1YmplY3RQdWJsaWNLZXkuZGF0YSwgJ2RlcicpXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdkc2EnLFxuICAgICAgICAgICAgZGF0YTogbmRhdGEuYWxnb3JpdGhtLnBhcmFtc1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSBpZCAnICsgc3VidHlwZSlcbiAgICAgIH1cbiAgICAgIC8vIHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgdHlwZSAnICsgdHlwZSlcbiAgICBjYXNlICdFTkNSWVBURUQgUFJJVkFURSBLRVknOlxuICAgICAgZGF0YSA9IGFzbjEuRW5jcnlwdGVkUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICBkYXRhID0gZGVjcnlwdChkYXRhLCBwYXNzd29yZClcbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICBjYXNlICdQUklWQVRFIEtFWSc6XG4gICAgICBuZGF0YSA9IGFzbjEuUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICBzdWJ0eXBlID0gbmRhdGEuYWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKCcuJylcbiAgICAgIHN3aXRjaCAoc3VidHlwZSkge1xuICAgICAgICBjYXNlICcxLjIuODQwLjExMzU0OS4xLjEuMSc6XG4gICAgICAgICAgcmV0dXJuIGFzbjEuUlNBUHJpdmF0ZUtleS5kZWNvZGUobmRhdGEuc3ViamVjdFByaXZhdGVLZXksICdkZXInKVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQ1LjIuMSc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGN1cnZlOiBuZGF0YS5hbGdvcml0aG0uY3VydmUsXG4gICAgICAgICAgICBwcml2YXRlS2V5OiBhc24xLkVDUHJpdmF0ZUtleS5kZWNvZGUobmRhdGEuc3ViamVjdFByaXZhdGVLZXksICdkZXInKS5wcml2YXRlS2V5XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQwLjQuMSc6XG4gICAgICAgICAgbmRhdGEuYWxnb3JpdGhtLnBhcmFtcy5wcml2X2tleSA9IGFzbjEuRFNBcGFyYW0uZGVjb2RlKG5kYXRhLnN1YmplY3RQcml2YXRlS2V5LCAnZGVyJylcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2RzYScsXG4gICAgICAgICAgICBwYXJhbXM6IG5kYXRhLmFsZ29yaXRobS5wYXJhbXNcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgaWQgJyArIHN1YnR5cGUpXG4gICAgICB9XG4gICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IHR5cGUgJyArIHR5cGUpXG4gICAgY2FzZSAnUlNBIFBVQkxJQyBLRVknOlxuICAgICAgcmV0dXJuIGFzbjEuUlNBUHVibGljS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICBjYXNlICdSU0EgUFJJVkFURSBLRVknOlxuICAgICAgcmV0dXJuIGFzbjEuUlNBUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgY2FzZSAnRFNBIFBSSVZBVEUgS0VZJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdkc2EnLFxuICAgICAgICBwYXJhbXM6IGFzbjEuRFNBUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICB9XG4gICAgY2FzZSAnRUMgUFJJVkFURSBLRVknOlxuICAgICAgZGF0YSA9IGFzbjEuRUNQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGN1cnZlOiBkYXRhLnBhcmFtZXRlcnMudmFsdWUsXG4gICAgICAgIHByaXZhdGVLZXk6IGRhdGEucHJpdmF0ZUtleVxuICAgICAgfVxuICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgdHlwZSAnICsgdHlwZSlcbiAgfVxufVxucGFyc2VLZXlzLnNpZ25hdHVyZSA9IGFzbjEuc2lnbmF0dXJlXG5mdW5jdGlvbiBkZWNyeXB0IChkYXRhLCBwYXNzd29yZCkge1xuICB2YXIgc2FsdCA9IGRhdGEuYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5zYWx0XG4gIHZhciBpdGVycyA9IHBhcnNlSW50KGRhdGEuYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5pdGVycy50b1N0cmluZygpLCAxMClcbiAgdmFyIGFsZ28gPSBhZXNpZFtkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5hbGdvLmpvaW4oJy4nKV1cbiAgdmFyIGl2ID0gZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuaXZcbiAgdmFyIGNpcGhlclRleHQgPSBkYXRhLnN1YmplY3RQcml2YXRlS2V5XG4gIHZhciBrZXlsZW4gPSBwYXJzZUludChhbGdvLnNwbGl0KCctJylbMV0sIDEwKSAvIDhcbiAgdmFyIGtleSA9IGNvbXBhdC5wYmtkZjJTeW5jKHBhc3N3b3JkLCBzYWx0LCBpdGVycywga2V5bGVuLCAnc2hhMScpXG4gIHZhciBjaXBoZXIgPSBjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXYoYWxnbywga2V5LCBpdilcbiAgdmFyIG91dCA9IFtdXG4gIG91dC5wdXNoKGNpcGhlci51cGRhdGUoY2lwaGVyVGV4dCkpXG4gIG91dC5wdXNoKGNpcGhlci5maW5hbCgpKVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG4iLCJleHBvcnRzLnBia2RmMiA9IHJlcXVpcmUoJy4vbGliL2FzeW5jJylcbmV4cG9ydHMucGJrZGYyU3luYyA9IHJlcXVpcmUoJy4vbGliL3N5bmMnKVxuIiwidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBjaGVja1BhcmFtZXRlcnMgPSByZXF1aXJlKCcuL3ByZWNvbmRpdGlvbicpXG52YXIgZGVmYXVsdEVuY29kaW5nID0gcmVxdWlyZSgnLi9kZWZhdWx0LWVuY29kaW5nJylcbnZhciBzeW5jID0gcmVxdWlyZSgnLi9zeW5jJylcbnZhciB0b0J1ZmZlciA9IHJlcXVpcmUoJy4vdG8tYnVmZmVyJylcblxudmFyIFpFUk9fQlVGXG52YXIgc3VidGxlID0gZ2xvYmFsLmNyeXB0byAmJiBnbG9iYWwuY3J5cHRvLnN1YnRsZVxudmFyIHRvQnJvd3NlciA9IHtcbiAgc2hhOiAnU0hBLTEnLFxuICAnc2hhLTEnOiAnU0hBLTEnLFxuICBzaGExOiAnU0hBLTEnLFxuICBzaGEyNTY6ICdTSEEtMjU2JyxcbiAgJ3NoYS0yNTYnOiAnU0hBLTI1NicsXG4gIHNoYTM4NDogJ1NIQS0zODQnLFxuICAnc2hhLTM4NCc6ICdTSEEtMzg0JyxcbiAgJ3NoYS01MTInOiAnU0hBLTUxMicsXG4gIHNoYTUxMjogJ1NIQS01MTInXG59XG52YXIgY2hlY2tzID0gW11cbmZ1bmN0aW9uIGNoZWNrTmF0aXZlIChhbGdvKSB7XG4gIGlmIChnbG9iYWwucHJvY2VzcyAmJiAhZ2xvYmFsLnByb2Nlc3MuYnJvd3Nlcikge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpXG4gIH1cbiAgaWYgKCFzdWJ0bGUgfHwgIXN1YnRsZS5pbXBvcnRLZXkgfHwgIXN1YnRsZS5kZXJpdmVCaXRzKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShmYWxzZSlcbiAgfVxuICBpZiAoY2hlY2tzW2FsZ29dICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gY2hlY2tzW2FsZ29dXG4gIH1cbiAgWkVST19CVUYgPSBaRVJPX0JVRiB8fCBCdWZmZXIuYWxsb2MoOClcbiAgdmFyIHByb20gPSBicm93c2VyUGJrZGYyKFpFUk9fQlVGLCBaRVJPX0JVRiwgMTAsIDEyOCwgYWxnbylcbiAgICAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gIGNoZWNrc1thbGdvXSA9IHByb21cbiAgcmV0dXJuIHByb21cbn1cbnZhciBuZXh0VGlja1xuZnVuY3Rpb24gZ2V0TmV4dFRpY2sgKCkge1xuICBpZiAobmV4dFRpY2spIHtcbiAgICByZXR1cm4gbmV4dFRpY2tcbiAgfVxuICBpZiAoZ2xvYmFsLnByb2Nlc3MgJiYgZ2xvYmFsLnByb2Nlc3MubmV4dFRpY2spIHtcbiAgICBuZXh0VGljayA9IGdsb2JhbC5wcm9jZXNzLm5leHRUaWNrXG4gIH0gZWxzZSBpZiAoZ2xvYmFsLnF1ZXVlTWljcm90YXNrKSB7XG4gICAgbmV4dFRpY2sgPSBnbG9iYWwucXVldWVNaWNyb3Rhc2tcbiAgfSBlbHNlIGlmIChnbG9iYWwuc2V0SW1tZWRpYXRlKSB7XG4gICAgbmV4dFRpY2sgPSBnbG9iYWwuc2V0SW1tZWRpYXRlXG4gIH0gZWxzZSB7XG4gICAgbmV4dFRpY2sgPSBnbG9iYWwuc2V0VGltZW91dFxuICB9XG4gIHJldHVybiBuZXh0VGlja1xufVxuZnVuY3Rpb24gYnJvd3NlclBia2RmMiAocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGxlbmd0aCwgYWxnbykge1xuICByZXR1cm4gc3VidGxlLmltcG9ydEtleShcbiAgICAncmF3JywgcGFzc3dvcmQsIHsgbmFtZTogJ1BCS0RGMicgfSwgZmFsc2UsIFsnZGVyaXZlQml0cyddXG4gICkudGhlbihmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHN1YnRsZS5kZXJpdmVCaXRzKHtcbiAgICAgIG5hbWU6ICdQQktERjInLFxuICAgICAgc2FsdDogc2FsdCxcbiAgICAgIGl0ZXJhdGlvbnM6IGl0ZXJhdGlvbnMsXG4gICAgICBoYXNoOiB7XG4gICAgICAgIG5hbWU6IGFsZ29cbiAgICAgIH1cbiAgICB9LCBrZXksIGxlbmd0aCA8PCAzKVxuICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20ocmVzKVxuICB9KVxufVxuXG5mdW5jdGlvbiByZXNvbHZlUHJvbWlzZSAocHJvbWlzZSwgY2FsbGJhY2spIHtcbiAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChvdXQpIHtcbiAgICBnZXROZXh0VGljaygpKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxiYWNrKG51bGwsIG91dClcbiAgICB9KVxuICB9LCBmdW5jdGlvbiAoZSkge1xuICAgIGdldE5leHRUaWNrKCkoZnVuY3Rpb24gKCkge1xuICAgICAgY2FsbGJhY2soZSlcbiAgICB9KVxuICB9KVxufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0LCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIGRpZ2VzdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gZGlnZXN0XG4gICAgZGlnZXN0ID0gdW5kZWZpbmVkXG4gIH1cblxuICBkaWdlc3QgPSBkaWdlc3QgfHwgJ3NoYTEnXG4gIHZhciBhbGdvID0gdG9Ccm93c2VyW2RpZ2VzdC50b0xvd2VyQ2FzZSgpXVxuXG4gIGlmICghYWxnbyB8fCB0eXBlb2YgZ2xvYmFsLlByb21pc2UgIT09ICdmdW5jdGlvbicpIHtcbiAgICBnZXROZXh0VGljaygpKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBvdXRcbiAgICAgIHRyeSB7XG4gICAgICAgIG91dCA9IHN5bmMocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0KVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2soZSlcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrKG51bGwsIG91dClcbiAgICB9KVxuICAgIHJldHVyblxuICB9XG5cbiAgY2hlY2tQYXJhbWV0ZXJzKGl0ZXJhdGlvbnMsIGtleWxlbilcbiAgcGFzc3dvcmQgPSB0b0J1ZmZlcihwYXNzd29yZCwgZGVmYXVsdEVuY29kaW5nLCAnUGFzc3dvcmQnKVxuICBzYWx0ID0gdG9CdWZmZXIoc2FsdCwgZGVmYXVsdEVuY29kaW5nLCAnU2FsdCcpXG4gIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBFcnJvcignTm8gY2FsbGJhY2sgcHJvdmlkZWQgdG8gcGJrZGYyJylcblxuICByZXNvbHZlUHJvbWlzZShjaGVja05hdGl2ZShhbGdvKS50aGVuKGZ1bmN0aW9uIChyZXNwKSB7XG4gICAgaWYgKHJlc3ApIHJldHVybiBicm93c2VyUGJrZGYyKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGFsZ28pXG5cbiAgICByZXR1cm4gc3luYyhwYXNzd29yZCwgc2FsdCwgaXRlcmF0aW9ucywga2V5bGVuLCBkaWdlc3QpXG4gIH0pLCBjYWxsYmFjaylcbn1cbiIsInZhciBkZWZhdWx0RW5jb2Rpbmdcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5pZiAoZ2xvYmFsLnByb2Nlc3MgJiYgZ2xvYmFsLnByb2Nlc3MuYnJvd3Nlcikge1xuICBkZWZhdWx0RW5jb2RpbmcgPSAndXRmLTgnXG59IGVsc2UgaWYgKGdsb2JhbC5wcm9jZXNzICYmIGdsb2JhbC5wcm9jZXNzLnZlcnNpb24pIHtcbiAgdmFyIHBWZXJzaW9uTWFqb3IgPSBwYXJzZUludChwcm9jZXNzLnZlcnNpb24uc3BsaXQoJy4nKVswXS5zbGljZSgxKSwgMTApXG5cbiAgZGVmYXVsdEVuY29kaW5nID0gcFZlcnNpb25NYWpvciA+PSA2ID8gJ3V0Zi04JyA6ICdiaW5hcnknXG59IGVsc2Uge1xuICBkZWZhdWx0RW5jb2RpbmcgPSAndXRmLTgnXG59XG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRFbmNvZGluZ1xuIiwidmFyIE1BWF9BTExPQyA9IE1hdGgucG93KDIsIDMwKSAtIDEgLy8gZGVmYXVsdCBpbiBpb2pzXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhdGlvbnMsIGtleWxlbikge1xuICBpZiAodHlwZW9mIGl0ZXJhdGlvbnMgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSXRlcmF0aW9ucyBub3QgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKGl0ZXJhdGlvbnMgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQmFkIGl0ZXJhdGlvbnMnKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBrZXlsZW4gIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignS2V5IGxlbmd0aCBub3QgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKGtleWxlbiA8IDAgfHwga2V5bGVuID4gTUFYX0FMTE9DIHx8IGtleWxlbiAhPT0ga2V5bGVuKSB7IC8qIGVzbGludCBuby1zZWxmLWNvbXBhcmU6IDAgKi9cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCYWQga2V5IGxlbmd0aCcpXG4gIH1cbn1cbiIsInZhciBtZDUgPSByZXF1aXJlKCdjcmVhdGUtaGFzaC9tZDUnKVxudmFyIFJJUEVNRDE2MCA9IHJlcXVpcmUoJ3JpcGVtZDE2MCcpXG52YXIgc2hhID0gcmVxdWlyZSgnc2hhLmpzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgY2hlY2tQYXJhbWV0ZXJzID0gcmVxdWlyZSgnLi9wcmVjb25kaXRpb24nKVxudmFyIGRlZmF1bHRFbmNvZGluZyA9IHJlcXVpcmUoJy4vZGVmYXVsdC1lbmNvZGluZycpXG52YXIgdG9CdWZmZXIgPSByZXF1aXJlKCcuL3RvLWJ1ZmZlcicpXG5cbnZhciBaRVJPUyA9IEJ1ZmZlci5hbGxvYygxMjgpXG52YXIgc2l6ZXMgPSB7XG4gIG1kNTogMTYsXG4gIHNoYTE6IDIwLFxuICBzaGEyMjQ6IDI4LFxuICBzaGEyNTY6IDMyLFxuICBzaGEzODQ6IDQ4LFxuICBzaGE1MTI6IDY0LFxuICBybWQxNjA6IDIwLFxuICByaXBlbWQxNjA6IDIwXG59XG5cbmZ1bmN0aW9uIEhtYWMgKGFsZywga2V5LCBzYWx0TGVuKSB7XG4gIHZhciBoYXNoID0gZ2V0RGlnZXN0KGFsZylcbiAgdmFyIGJsb2Nrc2l6ZSA9IChhbGcgPT09ICdzaGE1MTInIHx8IGFsZyA9PT0gJ3NoYTM4NCcpID8gMTI4IDogNjRcblxuICBpZiAoa2V5Lmxlbmd0aCA+IGJsb2Nrc2l6ZSkge1xuICAgIGtleSA9IGhhc2goa2V5KVxuICB9IGVsc2UgaWYgKGtleS5sZW5ndGggPCBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBCdWZmZXIuY29uY2F0KFtrZXksIFpFUk9TXSwgYmxvY2tzaXplKVxuICB9XG5cbiAgdmFyIGlwYWQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYmxvY2tzaXplICsgc2l6ZXNbYWxnXSlcbiAgdmFyIG9wYWQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYmxvY2tzaXplICsgc2l6ZXNbYWxnXSlcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja3NpemU7IGkrKykge1xuICAgIGlwYWRbaV0gPSBrZXlbaV0gXiAweDM2XG4gICAgb3BhZFtpXSA9IGtleVtpXSBeIDB4NUNcbiAgfVxuXG4gIHZhciBpcGFkMSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja3NpemUgKyBzYWx0TGVuICsgNClcbiAgaXBhZC5jb3B5KGlwYWQxLCAwLCAwLCBibG9ja3NpemUpXG4gIHRoaXMuaXBhZDEgPSBpcGFkMVxuICB0aGlzLmlwYWQyID0gaXBhZFxuICB0aGlzLm9wYWQgPSBvcGFkXG4gIHRoaXMuYWxnID0gYWxnXG4gIHRoaXMuYmxvY2tzaXplID0gYmxvY2tzaXplXG4gIHRoaXMuaGFzaCA9IGhhc2hcbiAgdGhpcy5zaXplID0gc2l6ZXNbYWxnXVxufVxuXG5IbWFjLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoZGF0YSwgaXBhZCkge1xuICBkYXRhLmNvcHkoaXBhZCwgdGhpcy5ibG9ja3NpemUpXG4gIHZhciBoID0gdGhpcy5oYXNoKGlwYWQpXG4gIGguY29weSh0aGlzLm9wYWQsIHRoaXMuYmxvY2tzaXplKVxuICByZXR1cm4gdGhpcy5oYXNoKHRoaXMub3BhZClcbn1cblxuZnVuY3Rpb24gZ2V0RGlnZXN0IChhbGcpIHtcbiAgZnVuY3Rpb24gc2hhRnVuYyAoZGF0YSkge1xuICAgIHJldHVybiBzaGEoYWxnKS51cGRhdGUoZGF0YSkuZGlnZXN0KClcbiAgfVxuICBmdW5jdGlvbiBybWQxNjBGdW5jIChkYXRhKSB7XG4gICAgcmV0dXJuIG5ldyBSSVBFTUQxNjAoKS51cGRhdGUoZGF0YSkuZGlnZXN0KClcbiAgfVxuXG4gIGlmIChhbGcgPT09ICdybWQxNjAnIHx8IGFsZyA9PT0gJ3JpcGVtZDE2MCcpIHJldHVybiBybWQxNjBGdW5jXG4gIGlmIChhbGcgPT09ICdtZDUnKSByZXR1cm4gbWQ1XG4gIHJldHVybiBzaGFGdW5jXG59XG5cbmZ1bmN0aW9uIHBia2RmMiAocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0KSB7XG4gIGNoZWNrUGFyYW1ldGVycyhpdGVyYXRpb25zLCBrZXlsZW4pXG4gIHBhc3N3b3JkID0gdG9CdWZmZXIocGFzc3dvcmQsIGRlZmF1bHRFbmNvZGluZywgJ1Bhc3N3b3JkJylcbiAgc2FsdCA9IHRvQnVmZmVyKHNhbHQsIGRlZmF1bHRFbmNvZGluZywgJ1NhbHQnKVxuXG4gIGRpZ2VzdCA9IGRpZ2VzdCB8fCAnc2hhMSdcblxuICB2YXIgaG1hYyA9IG5ldyBIbWFjKGRpZ2VzdCwgcGFzc3dvcmQsIHNhbHQubGVuZ3RoKVxuXG4gIHZhciBESyA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShrZXlsZW4pXG4gIHZhciBibG9jazEgPSBCdWZmZXIuYWxsb2NVbnNhZmUoc2FsdC5sZW5ndGggKyA0KVxuICBzYWx0LmNvcHkoYmxvY2sxLCAwLCAwLCBzYWx0Lmxlbmd0aClcblxuICB2YXIgZGVzdFBvcyA9IDBcbiAgdmFyIGhMZW4gPSBzaXplc1tkaWdlc3RdXG4gIHZhciBsID0gTWF0aC5jZWlsKGtleWxlbiAvIGhMZW4pXG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gbDsgaSsrKSB7XG4gICAgYmxvY2sxLndyaXRlVUludDMyQkUoaSwgc2FsdC5sZW5ndGgpXG5cbiAgICB2YXIgVCA9IGhtYWMucnVuKGJsb2NrMSwgaG1hYy5pcGFkMSlcbiAgICB2YXIgVSA9IFRcblxuICAgIGZvciAodmFyIGogPSAxOyBqIDwgaXRlcmF0aW9uczsgaisrKSB7XG4gICAgICBVID0gaG1hYy5ydW4oVSwgaG1hYy5pcGFkMilcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaExlbjsgaysrKSBUW2tdIF49IFVba11cbiAgICB9XG5cbiAgICBULmNvcHkoREssIGRlc3RQb3MpXG4gICAgZGVzdFBvcyArPSBoTGVuXG4gIH1cblxuICByZXR1cm4gREtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwYmtkZjJcbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0aGluZywgZW5jb2RpbmcsIG5hbWUpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih0aGluZykpIHtcbiAgICByZXR1cm4gdGhpbmdcbiAgfSBlbHNlIGlmICh0eXBlb2YgdGhpbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcodGhpbmcpKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHRoaW5nLmJ1ZmZlcilcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKG5hbWUgKyAnIG11c3QgYmUgYSBzdHJpbmcsIGEgQnVmZmVyLCBhIHR5cGVkIGFycmF5IG9yIGEgRGF0YVZpZXcnKVxuICB9XG59XG4iLCIvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcbnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLy8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHViIGl0XG4vLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXNcbi8vIHdyYXBwZWQgaW4gc3RyaWN0IG1vZGUgY29kZSB3aGljaCBkb2Vzbid0IGRlZmluZSBhbnkgZ2xvYmFscy4gIEl0J3MgaW5zaWRlIGFcbi8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXG5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dDtcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xlYXJUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgIH1cbn0gKCkpXG5mdW5jdGlvbiBydW5UaW1lb3V0KGZ1bikge1xuICAgIGlmIChjYWNoZWRTZXRUaW1lb3V0ID09PSBzZXRUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2FjaGVkU2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGRlZmF1bHRDbGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yLlxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG59XG52YXIgcXVldWUgPSBbXTtcbnZhciBkcmFpbmluZyA9IGZhbHNlO1xudmFyIGN1cnJlbnRRdWV1ZTtcbnZhciBxdWV1ZUluZGV4ID0gLTE7XG5cbmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHtcbiAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50UXVldWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIGRyYWluUXVldWUoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuXG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAgICAgIHF1ZXVlID0gW107XG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7XG59XG5cbnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuICAgIH1cbn07XG5cbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRPbmNlTGlzdGVuZXIgPSBub29wO1xuXG5wcm9jZXNzLmxpc3RlbmVycyA9IGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBbXSB9XG5cbnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcblxucHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuIiwiZXhwb3J0cy5wdWJsaWNFbmNyeXB0ID0gcmVxdWlyZSgnLi9wdWJsaWNFbmNyeXB0JylcbmV4cG9ydHMucHJpdmF0ZURlY3J5cHQgPSByZXF1aXJlKCcuL3ByaXZhdGVEZWNyeXB0JylcblxuZXhwb3J0cy5wcml2YXRlRW5jcnlwdCA9IGZ1bmN0aW9uIHByaXZhdGVFbmNyeXB0IChrZXksIGJ1Zikge1xuICByZXR1cm4gZXhwb3J0cy5wdWJsaWNFbmNyeXB0KGtleSwgYnVmLCB0cnVlKVxufVxuXG5leHBvcnRzLnB1YmxpY0RlY3J5cHQgPSBmdW5jdGlvbiBwdWJsaWNEZWNyeXB0IChrZXksIGJ1Zikge1xuICByZXR1cm4gZXhwb3J0cy5wcml2YXRlRGVjcnlwdChrZXksIGJ1ZiwgdHJ1ZSlcbn1cbiIsInZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHNlZWQsIGxlbikge1xuICB2YXIgdCA9IEJ1ZmZlci5hbGxvYygwKVxuICB2YXIgaSA9IDBcbiAgdmFyIGNcbiAgd2hpbGUgKHQubGVuZ3RoIDwgbGVuKSB7XG4gICAgYyA9IGkyb3BzKGkrKylcbiAgICB0ID0gQnVmZmVyLmNvbmNhdChbdCwgY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShzZWVkKS51cGRhdGUoYykuZGlnZXN0KCldKVxuICB9XG4gIHJldHVybiB0LnNsaWNlKDAsIGxlbilcbn1cblxuZnVuY3Rpb24gaTJvcHMgKGMpIHtcbiAgdmFyIG91dCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSg0KVxuICBvdXQud3JpdGVVSW50MzJCRShjLCAwKVxuICByZXR1cm4gb3V0XG59XG4iLCIoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gVXRpbHNcbiAgZnVuY3Rpb24gYXNzZXJ0ICh2YWwsIG1zZykge1xuICAgIGlmICghdmFsKSB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG4gIH1cblxuICAvLyBDb3VsZCB1c2UgYGluaGVyaXRzYCBtb2R1bGUsIGJ1dCBkb24ndCB3YW50IHRvIG1vdmUgZnJvbSBzaW5nbGUgZmlsZVxuICAvLyBhcmNoaXRlY3R1cmUgeWV0LlxuICBmdW5jdGlvbiBpbmhlcml0cyAoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3I7XG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge307XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZTtcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpO1xuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvcjtcbiAgfVxuXG4gIC8vIEJOXG5cbiAgZnVuY3Rpb24gQk4gKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKEJOLmlzQk4obnVtYmVyKSkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB0aGlzLndvcmRzID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICAvLyBSZWR1Y3Rpb24gY29udGV4dFxuICAgIHRoaXMucmVkID0gbnVsbDtcblxuICAgIGlmIChudW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGlmIChiYXNlID09PSAnbGUnIHx8IGJhc2UgPT09ICdiZScpIHtcbiAgICAgICAgZW5kaWFuID0gYmFzZTtcbiAgICAgICAgYmFzZSA9IDEwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbml0KG51bWJlciB8fCAwLCBiYXNlIHx8IDEwLCBlbmRpYW4gfHwgJ2JlJyk7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gQk47XG4gIH0gZWxzZSB7XG4gICAgZXhwb3J0cy5CTiA9IEJOO1xuICB9XG5cbiAgQk4uQk4gPSBCTjtcbiAgQk4ud29yZFNpemUgPSAyNjtcblxuICB2YXIgQnVmZmVyO1xuICB0cnkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIEJ1ZmZlciA9IHdpbmRvdy5CdWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPCBudW1iZXIubGVuZ3RoKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gMTYpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VIZXgobnVtYmVyLCBzdGFydCwgZW5kaWFuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3BhcnNlQmFzZShudW1iZXIsIGJhc2UsIHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXROdW1iZXIgPSBmdW5jdGlvbiBfaW5pdE51bWJlciAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICBudW1iZXIgPSAtbnVtYmVyO1xuICAgIH1cbiAgICBpZiAobnVtYmVyIDwgMHg0MDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyBudW1iZXIgJiAweDNmZmZmZmYgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKG51bWJlciA8IDB4MTAwMDAwMDAwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmZcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChudW1iZXIgPCAweDIwMDAwMDAwMDAwMDAwKTsgLy8gMiBeIDUzICh1bnNhZmUpXG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmLFxuICAgICAgICAxXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAzO1xuICAgIH1cblxuICAgIGlmIChlbmRpYW4gIT09ICdsZScpIHJldHVybjtcblxuICAgIC8vIFJldmVyc2UgdGhlIGJ5dGVzXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdEFycmF5ID0gZnVuY3Rpb24gX2luaXRBcnJheSAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICAvLyBQZXJoYXBzIGEgVWludDhBcnJheVxuICAgIGFzc2VydCh0eXBlb2YgbnVtYmVyLmxlbmd0aCA9PT0gJ251bWJlcicpO1xuICAgIGlmIChudW1iZXIubGVuZ3RoIDw9IDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKG51bWJlci5sZW5ndGggLyAzKTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIHZhciBqLCB3O1xuICAgIHZhciBvZmYgPSAwO1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxLCBqID0gMDsgaSA+PSAwOyBpIC09IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSAtIDFdIDw8IDgpIHwgKG51bWJlcltpIC0gMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgKyAxXSA8PCA4KSB8IChudW1iZXJbaSArIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4NEJpdHMgKHN0cmluZywgaW5kZXgpIHtcbiAgICB2YXIgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAvLyAnQScgLSAnRidcbiAgICBpZiAoYyA+PSA2NSAmJiBjIDw9IDcwKSB7XG4gICAgICByZXR1cm4gYyAtIDU1O1xuICAgIC8vICdhJyAtICdmJ1xuICAgIH0gZWxzZSBpZiAoYyA+PSA5NyAmJiBjIDw9IDEwMikge1xuICAgICAgcmV0dXJuIGMgLSA4NztcbiAgICAvLyAnMCcgLSAnOSdcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChjIC0gNDgpICYgMHhmO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4Qnl0ZSAoc3RyaW5nLCBsb3dlckJvdW5kLCBpbmRleCkge1xuICAgIHZhciByID0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4KTtcbiAgICBpZiAoaW5kZXggLSAxID49IGxvd2VyQm91bmQpIHtcbiAgICAgIHIgfD0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4IC0gMSkgPDwgNDtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlSGV4ID0gZnVuY3Rpb24gX3BhcnNlSGV4IChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICAvLyAyNC1iaXRzIGNodW5rc1xuICAgIHZhciBvZmYgPSAwO1xuICAgIHZhciBqID0gMDtcblxuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyBpIC09IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFyc2VMZW5ndGggPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgICBmb3IgKGkgPSBwYXJzZUxlbmd0aCAlIDIgPT09IDAgPyBzdGFydCArIDEgOiBzdGFydDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlQmFzZSAoc3RyLCBzdGFydCwgZW5kLCBtdWwpIHtcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKHN0ci5sZW5ndGgsIGVuZCk7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBjID0gc3RyLmNoYXJDb2RlQXQoaSkgLSA0ODtcblxuICAgICAgciAqPSBtdWw7XG5cbiAgICAgIC8vICdhJ1xuICAgICAgaWYgKGMgPj0gNDkpIHtcbiAgICAgICAgciArPSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3KSB7XG4gICAgICAgIHIgKz0gYyAtIDE3ICsgMHhhO1xuXG4gICAgICAvLyAnMCcgLSAnOSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIgKz0gYztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlQmFzZSA9IGZ1bmN0aW9uIF9wYXJzZUJhc2UgKG51bWJlciwgYmFzZSwgc3RhcnQpIHtcbiAgICAvLyBJbml0aWFsaXplIGFzIHplcm9cbiAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuXG4gICAgLy8gRmluZCBsZW5ndGggb2YgbGltYiBpbiBiYXNlXG4gICAgZm9yICh2YXIgbGltYkxlbiA9IDAsIGxpbWJQb3cgPSAxOyBsaW1iUG93IDw9IDB4M2ZmZmZmZjsgbGltYlBvdyAqPSBiYXNlKSB7XG4gICAgICBsaW1iTGVuKys7XG4gICAgfVxuICAgIGxpbWJMZW4tLTtcbiAgICBsaW1iUG93ID0gKGxpbWJQb3cgLyBiYXNlKSB8IDA7XG5cbiAgICB2YXIgdG90YWwgPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgdmFyIG1vZCA9IHRvdGFsICUgbGltYkxlbjtcbiAgICB2YXIgZW5kID0gTWF0aC5taW4odG90YWwsIHRvdGFsIC0gbW9kKSArIHN0YXJ0O1xuXG4gICAgdmFyIHdvcmQgPSAwO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSBsaW1iTGVuKSB7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgaSArIGxpbWJMZW4sIGJhc2UpO1xuXG4gICAgICB0aGlzLmltdWxuKGxpbWJQb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2QgIT09IDApIHtcbiAgICAgIHZhciBwb3cgPSAxO1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIG51bWJlci5sZW5ndGgsIGJhc2UpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbW9kOyBpKyspIHtcbiAgICAgICAgcG93ICo9IGJhc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW11bG4ocG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5IChkZXN0KSB7XG4gICAgZGVzdC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXN0LndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICB9XG4gICAgZGVzdC5sZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICBkZXN0Lm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICBkZXN0LnJlZCA9IHRoaXMucmVkO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICB2YXIgciA9IG5ldyBCTihudWxsKTtcbiAgICB0aGlzLmNvcHkocik7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9leHBhbmQgPSBmdW5jdGlvbiBfZXhwYW5kIChzaXplKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgc2l6ZSkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFJlbW92ZSBsZWFkaW5nIGAwYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3RyaXAgPSBmdW5jdGlvbiBzdHJpcCAoKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoID4gMSAmJiB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fbm9ybVNpZ24gPSBmdW5jdGlvbiBfbm9ybVNpZ24gKCkge1xuICAgIC8vIC0wID0gMFxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICByZXR1cm4gKHRoaXMucmVkID8gJzxCTi1SOiAnIDogJzxCTjogJykgKyB0aGlzLnRvU3RyaW5nKDE2KSArICc+JztcbiAgfTtcblxuICAvKlxuXG4gIHZhciB6ZXJvcyA9IFtdO1xuICB2YXIgZ3JvdXBTaXplcyA9IFtdO1xuICB2YXIgZ3JvdXBCYXNlcyA9IFtdO1xuXG4gIHZhciBzID0gJyc7XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBCTi53b3JkU2l6ZSkge1xuICAgIHplcm9zW2ldID0gcztcbiAgICBzICs9ICcwJztcbiAgfVxuICBncm91cFNpemVzWzBdID0gMDtcbiAgZ3JvdXBTaXplc1sxXSA9IDA7XG4gIGdyb3VwQmFzZXNbMF0gPSAwO1xuICBncm91cEJhc2VzWzFdID0gMDtcbiAgdmFyIGJhc2UgPSAyIC0gMTtcbiAgd2hpbGUgKCsrYmFzZSA8IDM2ICsgMSkge1xuICAgIHZhciBncm91cFNpemUgPSAwO1xuICAgIHZhciBncm91cEJhc2UgPSAxO1xuICAgIHdoaWxlIChncm91cEJhc2UgPCAoMSA8PCBCTi53b3JkU2l6ZSkgLyBiYXNlKSB7XG4gICAgICBncm91cEJhc2UgKj0gYmFzZTtcbiAgICAgIGdyb3VwU2l6ZSArPSAxO1xuICAgIH1cbiAgICBncm91cFNpemVzW2Jhc2VdID0gZ3JvdXBTaXplO1xuICAgIGdyb3VwQmFzZXNbYmFzZV0gPSBncm91cEJhc2U7XG4gIH1cblxuICAqL1xuXG4gIHZhciB6ZXJvcyA9IFtcbiAgICAnJyxcbiAgICAnMCcsXG4gICAgJzAwJyxcbiAgICAnMDAwJyxcbiAgICAnMDAwMCcsXG4gICAgJzAwMDAwJyxcbiAgICAnMDAwMDAwJyxcbiAgICAnMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCdcbiAgXTtcblxuICB2YXIgZ3JvdXBTaXplcyA9IFtcbiAgICAwLCAwLFxuICAgIDI1LCAxNiwgMTIsIDExLCAxMCwgOSwgOCxcbiAgICA4LCA3LCA3LCA3LCA3LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1XG4gIF07XG5cbiAgdmFyIGdyb3VwQmFzZXMgPSBbXG4gICAgMCwgMCxcbiAgICAzMzU1NDQzMiwgNDMwNDY3MjEsIDE2Nzc3MjE2LCA0ODgyODEyNSwgNjA0NjYxNzYsIDQwMzUzNjA3LCAxNjc3NzIxNixcbiAgICA0MzA0NjcyMSwgMTAwMDAwMDAsIDE5NDg3MTcxLCAzNTgzMTgwOCwgNjI3NDg1MTcsIDc1Mjk1MzYsIDExMzkwNjI1LFxuICAgIDE2Nzc3MjE2LCAyNDEzNzU2OSwgMzQwMTIyMjQsIDQ3MDQ1ODgxLCA2NDAwMDAwMCwgNDA4NDEwMSwgNTE1MzYzMixcbiAgICA2NDM2MzQzLCA3OTYyNjI0LCA5NzY1NjI1LCAxMTg4MTM3NiwgMTQzNDg5MDcsIDE3MjEwMzY4LCAyMDUxMTE0OSxcbiAgICAyNDMwMDAwMCwgMjg2MjkxNTEsIDMzNTU0NDMyLCAzOTEzNTM5MywgNDU0MzU0MjQsIDUyNTIxODc1LCA2MDQ2NjE3NlxuICBdO1xuXG4gIEJOLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nIChiYXNlLCBwYWRkaW5nKSB7XG4gICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgcGFkZGluZyA9IHBhZGRpbmcgfCAwIHx8IDE7XG5cbiAgICB2YXIgb3V0O1xuICAgIGlmIChiYXNlID09PSAxNiB8fCBiYXNlID09PSAnaGV4Jykge1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgb2ZmID0gMDtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldO1xuICAgICAgICB2YXIgd29yZCA9ICgoKHcgPDwgb2ZmKSB8IGNhcnJ5KSAmIDB4ZmZmZmZmKS50b1N0cmluZygxNik7XG4gICAgICAgIGNhcnJ5ID0gKHcgPj4+ICgyNCAtIG9mZikpICYgMHhmZmZmZmY7XG4gICAgICAgIGlmIChjYXJyeSAhPT0gMCB8fCBpICE9PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1s2IC0gd29yZC5sZW5ndGhdICsgd29yZCArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSB3b3JkICsgb3V0O1xuICAgICAgICB9XG4gICAgICAgIG9mZiArPSAyO1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICAgIG91dCA9IGNhcnJ5LnRvU3RyaW5nKDE2KSArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KSB7XG4gICAgICAvLyB2YXIgZ3JvdXBTaXplID0gTWF0aC5mbG9vcihCTi53b3JkU2l6ZSAqIE1hdGguTE4yIC8gTWF0aC5sb2coYmFzZSkpO1xuICAgICAgdmFyIGdyb3VwU2l6ZSA9IGdyb3VwU2l6ZXNbYmFzZV07XG4gICAgICAvLyB2YXIgZ3JvdXBCYXNlID0gTWF0aC5wb3coYmFzZSwgZ3JvdXBTaXplKTtcbiAgICAgIHZhciBncm91cEJhc2UgPSBncm91cEJhc2VzW2Jhc2VdO1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgYyA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGMubmVnYXRpdmUgPSAwO1xuICAgICAgd2hpbGUgKCFjLmlzWmVybygpKSB7XG4gICAgICAgIHZhciByID0gYy5tb2RuKGdyb3VwQmFzZSkudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIGMgPSBjLmlkaXZuKGdyb3VwQmFzZSk7XG5cbiAgICAgICAgaWYgKCFjLmlzWmVybygpKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbZ3JvdXBTaXplIC0gci5sZW5ndGhdICsgciArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSByICsgb3V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBhc3NlcnQoZmFsc2UsICdCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Jyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvTnVtYmVyID0gZnVuY3Rpb24gdG9OdW1iZXIgKCkge1xuICAgIHZhciByZXQgPSB0aGlzLndvcmRzWzBdO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0ICs9IHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA9PT0gMyAmJiB0aGlzLndvcmRzWzJdID09PSAweDAxKSB7XG4gICAgICAvLyBOT1RFOiBhdCB0aGlzIHN0YWdlIGl0IGlzIGtub3duIHRoYXQgdGhlIHRvcCBiaXQgaXMgc2V0XG4gICAgICByZXQgKz0gMHgxMDAwMDAwMDAwMDAwMCArICh0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gMikge1xuICAgICAgYXNzZXJ0KGZhbHNlLCAnTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzJyk7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgPyAtcmV0IDogcmV0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKDE2KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9CdWZmZXIgPSBmdW5jdGlvbiB0b0J1ZmZlciAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpO1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEJ1ZmZlciwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gdG9BcnJheSAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5TGlrZSA9IGZ1bmN0aW9uIHRvQXJyYXlMaWtlIChBcnJheVR5cGUsIGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgdmFyIGJ5dGVMZW5ndGggPSB0aGlzLmJ5dGVMZW5ndGgoKTtcbiAgICB2YXIgcmVxTGVuZ3RoID0gbGVuZ3RoIHx8IE1hdGgubWF4KDEsIGJ5dGVMZW5ndGgpO1xuICAgIGFzc2VydChieXRlTGVuZ3RoIDw9IHJlcUxlbmd0aCwgJ2J5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgnKTtcbiAgICBhc3NlcnQocmVxTGVuZ3RoID4gMCwgJ1JlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCcpO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuICAgIHZhciBsaXR0bGVFbmRpYW4gPSBlbmRpYW4gPT09ICdsZSc7XG4gICAgdmFyIHJlcyA9IG5ldyBBcnJheVR5cGUocmVxTGVuZ3RoKTtcblxuICAgIHZhciBiLCBpO1xuICAgIHZhciBxID0gdGhpcy5jbG9uZSgpO1xuICAgIGlmICghbGl0dGxlRW5kaWFuKSB7XG4gICAgICAvLyBBc3N1bWUgYmlnLWVuZGlhblxuICAgICAgZm9yIChpID0gMDsgaSA8IHJlcUxlbmd0aCAtIGJ5dGVMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbcmVxTGVuZ3RoIC0gaSAtIDFdID0gYjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW2ldID0gYjtcbiAgICAgIH1cblxuICAgICAgZm9yICg7IGkgPCByZXFMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgaWYgKE1hdGguY2x6MzIpIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHJldHVybiAzMiAtIE1hdGguY2x6MzIodyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHZhciB0ID0gdztcbiAgICAgIHZhciByID0gMDtcbiAgICAgIGlmICh0ID49IDB4MTAwMCkge1xuICAgICAgICByICs9IDEzO1xuICAgICAgICB0ID4+Pj0gMTM7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDQwKSB7XG4gICAgICAgIHIgKz0gNztcbiAgICAgICAgdCA+Pj49IDc7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDgpIHtcbiAgICAgICAgciArPSA0O1xuICAgICAgICB0ID4+Pj0gNDtcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4MDIpIHtcbiAgICAgICAgciArPSAyO1xuICAgICAgICB0ID4+Pj0gMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByICsgdDtcbiAgICB9O1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl96ZXJvQml0cyA9IGZ1bmN0aW9uIF96ZXJvQml0cyAodykge1xuICAgIC8vIFNob3J0LWN1dFxuICAgIGlmICh3ID09PSAwKSByZXR1cm4gMjY7XG5cbiAgICB2YXIgdCA9IHc7XG4gICAgdmFyIHIgPSAwO1xuICAgIGlmICgodCAmIDB4MWZmZikgPT09IDApIHtcbiAgICAgIHIgKz0gMTM7XG4gICAgICB0ID4+Pj0gMTM7XG4gICAgfVxuICAgIGlmICgodCAmIDB4N2YpID09PSAwKSB7XG4gICAgICByICs9IDc7XG4gICAgICB0ID4+Pj0gNztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHhmKSA9PT0gMCkge1xuICAgICAgciArPSA0O1xuICAgICAgdCA+Pj49IDQ7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MykgPT09IDApIHtcbiAgICAgIHIgKz0gMjtcbiAgICAgIHQgPj4+PSAyO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDEpID09PSAwKSB7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIC8vIFJldHVybiBudW1iZXIgb2YgdXNlZCBiaXRzIGluIGEgQk5cbiAgQk4ucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uIGJpdExlbmd0aCAoKSB7XG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV07XG4gICAgdmFyIGhpID0gdGhpcy5fY291bnRCaXRzKHcpO1xuICAgIHJldHVybiAodGhpcy5sZW5ndGggLSAxKSAqIDI2ICsgaGk7XG4gIH07XG5cbiAgZnVuY3Rpb24gdG9CaXRBcnJheSAobnVtKSB7XG4gICAgdmFyIHcgPSBuZXcgQXJyYXkobnVtLmJpdExlbmd0aCgpKTtcblxuICAgIGZvciAodmFyIGJpdCA9IDA7IGJpdCA8IHcubGVuZ3RoOyBiaXQrKykge1xuICAgICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgICAgd1tiaXRdID0gKG51bS53b3Jkc1tvZmZdICYgKDEgPDwgd2JpdCkpID4+PiB3Yml0O1xuICAgIH1cblxuICAgIHJldHVybiB3O1xuICB9XG5cbiAgLy8gTnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0c1xuICBCTi5wcm90b3R5cGUuemVyb0JpdHMgPSBmdW5jdGlvbiB6ZXJvQml0cyAoKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiAwO1xuXG4gICAgdmFyIHIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGIgPSB0aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2ldKTtcbiAgICAgIHIgKz0gYjtcbiAgICAgIGlmIChiICE9PSAyNikgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ieXRlTGVuZ3RoID0gZnVuY3Rpb24gYnl0ZUxlbmd0aCAoKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpIC8gOCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvVHdvcyA9IGZ1bmN0aW9uIHRvVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWJzKCkuaW5vdG4od2lkdGgpLmlhZGRuKDEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tVHdvcyA9IGZ1bmN0aW9uIGZyb21Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLnRlc3RuKHdpZHRoIC0gMSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdG4od2lkdGgpLmlhZGRuKDEpLmluZWcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiBpc05lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmUgIT09IDA7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5lZyA9IGZ1bmN0aW9uIGluZWcgKCkge1xuICAgIGlmICghdGhpcy5pc1plcm8oKSkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdW9yID0gZnVuY3Rpb24gaXVvciAobnVtKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldIHwgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlvciA9IGZ1bmN0aW9uIGlvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVvcihudW0pO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pb3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVvciA9IGZ1bmN0aW9uIHVvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdWFuZCA9IGZ1bmN0aW9uIGl1YW5kIChudW0pIHtcbiAgICAvLyBiID0gbWluLWxlbmd0aChudW0sIHRoaXMpXG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSAmIG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGIubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFuZCA9IGZ1bmN0aW9uIGlhbmQgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1YW5kKG51bSk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiBhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYW5kKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51YW5kID0gZnVuY3Rpb24gdWFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdWFuZCh0aGlzKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1eG9yID0gZnVuY3Rpb24gaXV4b3IgKG51bSkge1xuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYTtcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldIF4gYi53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcyAhPT0gYSkge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5peG9yID0gZnVuY3Rpb24gaXhvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXV4b3IobnVtKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIHhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5peG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml4b3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnV4b3IgPSBmdW5jdGlvbiB1eG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1eG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1eG9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIE5vdCBgYHRoaXNgYCB3aXRoIGBgd2lkdGhgYCBiaXR3aWR0aFxuICBCTi5wcm90b3R5cGUuaW5vdG4gPSBmdW5jdGlvbiBpbm90biAod2lkdGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyAmJiB3aWR0aCA+PSAwKTtcblxuICAgIHZhciBieXRlc05lZWRlZCA9IE1hdGguY2VpbCh3aWR0aCAvIDI2KSB8IDA7XG4gICAgdmFyIGJpdHNMZWZ0ID0gd2lkdGggJSAyNjtcblxuICAgIC8vIEV4dGVuZCB0aGUgYnVmZmVyIHdpdGggbGVhZGluZyB6ZXJvZXNcbiAgICB0aGlzLl9leHBhbmQoYnl0ZXNOZWVkZWQpO1xuXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgYnl0ZXNOZWVkZWQtLTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgY29tcGxldGUgd29yZHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzTmVlZGVkOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIHJlc2lkdWVcbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAoMHgzZmZmZmZmID4+ICgyNiAtIGJpdHNMZWZ0KSk7XG4gICAgfVxuXG4gICAgLy8gQW5kIHJlbW92ZSBsZWFkaW5nIHplcm9lc1xuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm5vdG4gPSBmdW5jdGlvbiBub3RuICh3aWR0aCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5vdG4od2lkdGgpO1xuICB9O1xuXG4gIC8vIFNldCBgYml0YCBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNldG4gPSBmdW5jdGlvbiBzZXRuIChiaXQsIHZhbCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG5cbiAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgIHRoaXMuX2V4cGFuZChvZmYgKyAxKTtcblxuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSB8ICgxIDw8IHdiaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gJiB+KDEgPDwgd2JpdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAobnVtKSB7XG4gICAgdmFyIHI7XG5cbiAgICAvLyBuZWdhdGl2ZSArIHBvc2l0aXZlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gcG9zaXRpdmUgKyBuZWdhdGl2ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhLCBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAvLyBDb3B5IHRoZSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIH0gZWxzZSBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAobnVtKSB7XG4gICAgdmFyIHJlcztcbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwICYmIHRoaXMubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSB0aGlzLnN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSBpZiAobnVtLm5lZ2F0aXZlID09PSAwICYmIHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gbnVtLnN1Yih0aGlzKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGQobnVtKTtcblxuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYWRkKHRoaXMpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAobnVtKSB7XG4gICAgLy8gdGhpcyAtICgtbnVtKSA9IHRoaXMgKyBudW1cbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgdmFyIHIgPSB0aGlzLmlhZGQobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcblxuICAgIC8vIC10aGlzIC0gbnVtID0gLSh0aGlzICsgbnVtKVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGQobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlXG4gICAgdmFyIGNtcCA9IHRoaXMuY21wKG51bSk7XG5cbiAgICAvLyBPcHRpbWl6YXRpb24gLSB6ZXJvaWZ5XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIGEgPiBiXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGNtcCA+IDApIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSAtIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBDb3B5IHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgaWYgKGNhcnJ5ID09PSAwICYmIGkgPCBhLmxlbmd0aCAmJiBhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSk7XG5cbiAgICBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBzbWFsbE11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgdmFyIGxlbiA9IChzZWxmLmxlbmd0aCArIG51bS5sZW5ndGgpIHwgMDtcbiAgICBvdXQubGVuZ3RoID0gbGVuO1xuICAgIGxlbiA9IChsZW4gLSAxKSB8IDA7XG5cbiAgICAvLyBQZWVsIG9uZSBpdGVyYXRpb24gKGNvbXBpbGVyIGNhbid0IGRvIGl0LCBiZWNhdXNlIG9mIGNvZGUgY29tcGxleGl0eSlcbiAgICB2YXIgYSA9IHNlbGYud29yZHNbMF0gfCAwO1xuICAgIHZhciBiID0gbnVtLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICB2YXIgY2FycnkgPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgIG91dC53b3Jkc1swXSA9IGxvO1xuXG4gICAgZm9yICh2YXIgayA9IDE7IGsgPCBsZW47IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBjYXJyeSA+Pj4gMjY7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IChrIC0gaikgfCAwO1xuICAgICAgICBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICByID0gYSAqIGIgKyByd29yZDtcbiAgICAgICAgbmNhcnJ5ICs9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkIHwgMDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5IHwgMDtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeSB8IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICAvLyBUT0RPKGluZHV0bnkpOiBpdCBtYXkgYmUgcmVhc29uYWJsZSB0byBvbWl0IGl0IGZvciB1c2VycyB3aG8gZG9uJ3QgbmVlZFxuICAvLyB0byB3b3JrIHdpdGggMjU2LWJpdCBudW1iZXJzLCBvdGhlcndpc2UgaXQgZ2l2ZXMgMjAlIGltcHJvdmVtZW50IGZvciAyNTYtYml0XG4gIC8vIG11bHRpcGxpY2F0aW9uIChsaWtlIGVsbGlwdGljIHNlY3AyNTZrMSkuXG4gIHZhciBjb21iMTBNdWxUbyA9IGZ1bmN0aW9uIGNvbWIxME11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBhID0gc2VsZi53b3JkcztcbiAgICB2YXIgYiA9IG51bS53b3JkcztcbiAgICB2YXIgbyA9IG91dC53b3JkcztcbiAgICB2YXIgYyA9IDA7XG4gICAgdmFyIGxvO1xuICAgIHZhciBtaWQ7XG4gICAgdmFyIGhpO1xuICAgIHZhciBhMCA9IGFbMF0gfCAwO1xuICAgIHZhciBhbDAgPSBhMCAmIDB4MWZmZjtcbiAgICB2YXIgYWgwID0gYTAgPj4+IDEzO1xuICAgIHZhciBhMSA9IGFbMV0gfCAwO1xuICAgIHZhciBhbDEgPSBhMSAmIDB4MWZmZjtcbiAgICB2YXIgYWgxID0gYTEgPj4+IDEzO1xuICAgIHZhciBhMiA9IGFbMl0gfCAwO1xuICAgIHZhciBhbDIgPSBhMiAmIDB4MWZmZjtcbiAgICB2YXIgYWgyID0gYTIgPj4+IDEzO1xuICAgIHZhciBhMyA9IGFbM10gfCAwO1xuICAgIHZhciBhbDMgPSBhMyAmIDB4MWZmZjtcbiAgICB2YXIgYWgzID0gYTMgPj4+IDEzO1xuICAgIHZhciBhNCA9IGFbNF0gfCAwO1xuICAgIHZhciBhbDQgPSBhNCAmIDB4MWZmZjtcbiAgICB2YXIgYWg0ID0gYTQgPj4+IDEzO1xuICAgIHZhciBhNSA9IGFbNV0gfCAwO1xuICAgIHZhciBhbDUgPSBhNSAmIDB4MWZmZjtcbiAgICB2YXIgYWg1ID0gYTUgPj4+IDEzO1xuICAgIHZhciBhNiA9IGFbNl0gfCAwO1xuICAgIHZhciBhbDYgPSBhNiAmIDB4MWZmZjtcbiAgICB2YXIgYWg2ID0gYTYgPj4+IDEzO1xuICAgIHZhciBhNyA9IGFbN10gfCAwO1xuICAgIHZhciBhbDcgPSBhNyAmIDB4MWZmZjtcbiAgICB2YXIgYWg3ID0gYTcgPj4+IDEzO1xuICAgIHZhciBhOCA9IGFbOF0gfCAwO1xuICAgIHZhciBhbDggPSBhOCAmIDB4MWZmZjtcbiAgICB2YXIgYWg4ID0gYTggPj4+IDEzO1xuICAgIHZhciBhOSA9IGFbOV0gfCAwO1xuICAgIHZhciBhbDkgPSBhOSAmIDB4MWZmZjtcbiAgICB2YXIgYWg5ID0gYTkgPj4+IDEzO1xuICAgIHZhciBiMCA9IGJbMF0gfCAwO1xuICAgIHZhciBibDAgPSBiMCAmIDB4MWZmZjtcbiAgICB2YXIgYmgwID0gYjAgPj4+IDEzO1xuICAgIHZhciBiMSA9IGJbMV0gfCAwO1xuICAgIHZhciBibDEgPSBiMSAmIDB4MWZmZjtcbiAgICB2YXIgYmgxID0gYjEgPj4+IDEzO1xuICAgIHZhciBiMiA9IGJbMl0gfCAwO1xuICAgIHZhciBibDIgPSBiMiAmIDB4MWZmZjtcbiAgICB2YXIgYmgyID0gYjIgPj4+IDEzO1xuICAgIHZhciBiMyA9IGJbM10gfCAwO1xuICAgIHZhciBibDMgPSBiMyAmIDB4MWZmZjtcbiAgICB2YXIgYmgzID0gYjMgPj4+IDEzO1xuICAgIHZhciBiNCA9IGJbNF0gfCAwO1xuICAgIHZhciBibDQgPSBiNCAmIDB4MWZmZjtcbiAgICB2YXIgYmg0ID0gYjQgPj4+IDEzO1xuICAgIHZhciBiNSA9IGJbNV0gfCAwO1xuICAgIHZhciBibDUgPSBiNSAmIDB4MWZmZjtcbiAgICB2YXIgYmg1ID0gYjUgPj4+IDEzO1xuICAgIHZhciBiNiA9IGJbNl0gfCAwO1xuICAgIHZhciBibDYgPSBiNiAmIDB4MWZmZjtcbiAgICB2YXIgYmg2ID0gYjYgPj4+IDEzO1xuICAgIHZhciBiNyA9IGJbN10gfCAwO1xuICAgIHZhciBibDcgPSBiNyAmIDB4MWZmZjtcbiAgICB2YXIgYmg3ID0gYjcgPj4+IDEzO1xuICAgIHZhciBiOCA9IGJbOF0gfCAwO1xuICAgIHZhciBibDggPSBiOCAmIDB4MWZmZjtcbiAgICB2YXIgYmg4ID0gYjggPj4+IDEzO1xuICAgIHZhciBiOSA9IGJbOV0gfCAwO1xuICAgIHZhciBibDkgPSBiOSAmIDB4MWZmZjtcbiAgICB2YXIgYmg5ID0gYjkgPj4+IDEzO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0gc2VsZi5uZWdhdGl2ZSBeIG51bS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gMTk7XG4gICAgLyogayA9IDAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDAsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMCwgYmgwKTtcbiAgICB2YXIgdzAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcwID4+PiAyNikpIHwgMDtcbiAgICB3MCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDEsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDEpKSB8IDA7XG4gICAgdmFyIHcxID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MSA+Pj4gMjYpKSB8IDA7XG4gICAgdzEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwyLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDIsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDIsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMikpIHwgMDtcbiAgICB2YXIgdzIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcyID4+PiAyNikpIHwgMDtcbiAgICB3MiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDMsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMykpIHwgMDtcbiAgICB2YXIgdzMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHczID4+PiAyNikpIHwgMDtcbiAgICB3MyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDQsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDQpKSB8IDA7XG4gICAgdmFyIHc0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NCA+Pj4gMjYpKSB8IDA7XG4gICAgdzQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw1LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDUsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDUsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNSkpIHwgMDtcbiAgICB2YXIgdzUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc1ID4+PiAyNikpIHwgMDtcbiAgICB3NSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDYsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNikpIHwgMDtcbiAgICB2YXIgdzYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc2ID4+PiAyNikpIHwgMDtcbiAgICB3NiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDcsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDcpKSB8IDA7XG4gICAgdmFyIHc3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NyA+Pj4gMjYpKSB8IDA7XG4gICAgdzcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw4LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDgsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDgsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOCkpIHwgMDtcbiAgICB2YXIgdzggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc4ID4+PiAyNikpIHwgMDtcbiAgICB3OCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDkgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzkgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc5ID4+PiAyNikpIHwgMDtcbiAgICB3OSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDEpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTAgPj4+IDI2KSkgfCAwO1xuICAgIHcxMCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDExICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDIpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMSA+Pj4gMjYpKSB8IDA7XG4gICAgdzExICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgzKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwzKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgzKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTIgPj4+IDI2KSkgfCAwO1xuICAgIHcxMiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDQpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEzID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTMgPj4+IDI2KSkgfCAwO1xuICAgIHcxMyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDUpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg2KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw2KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg2KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTUgPj4+IDI2KSkgfCAwO1xuICAgIHcxNSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDcpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTYgPj4+IDI2KSkgfCAwO1xuICAgIHcxNiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDgpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNyA+Pj4gMjYpKSB8IDA7XG4gICAgdzE3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg5KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw5KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg5KTtcbiAgICB2YXIgdzE4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTggPj4+IDI2KSkgfCAwO1xuICAgIHcxOCAmPSAweDNmZmZmZmY7XG4gICAgb1swXSA9IHcwO1xuICAgIG9bMV0gPSB3MTtcbiAgICBvWzJdID0gdzI7XG4gICAgb1szXSA9IHczO1xuICAgIG9bNF0gPSB3NDtcbiAgICBvWzVdID0gdzU7XG4gICAgb1s2XSA9IHc2O1xuICAgIG9bN10gPSB3NztcbiAgICBvWzhdID0gdzg7XG4gICAgb1s5XSA9IHc5O1xuICAgIG9bMTBdID0gdzEwO1xuICAgIG9bMTFdID0gdzExO1xuICAgIG9bMTJdID0gdzEyO1xuICAgIG9bMTNdID0gdzEzO1xuICAgIG9bMTRdID0gdzE0O1xuICAgIG9bMTVdID0gdzE1O1xuICAgIG9bMTZdID0gdzE2O1xuICAgIG9bMTddID0gdzE3O1xuICAgIG9bMThdID0gdzE4O1xuICAgIGlmIChjICE9PSAwKSB7XG4gICAgICBvWzE5XSA9IGM7XG4gICAgICBvdXQubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH07XG5cbiAgLy8gUG9seWZpbGwgY29tYlxuICBpZiAoIU1hdGguaW11bCkge1xuICAgIGNvbWIxME11bFRvID0gc21hbGxNdWxUbztcbiAgfVxuXG4gIGZ1bmN0aW9uIGJpZ011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aDtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgdmFyIGhuY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb3V0Lmxlbmd0aCAtIDE7IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBobmNhcnJ5O1xuICAgICAgaG5jYXJyeSA9IDA7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IGsgLSBqO1xuICAgICAgICB2YXIgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICB2YXIgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHZhciByID0gYSAqIGI7XG5cbiAgICAgICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArICgociAvIDB4NDAwMDAwMCkgfCAwKSkgfCAwO1xuICAgICAgICBsbyA9IChsbyArIHJ3b3JkKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAobG8gPj4+IDI2KSkgfCAwO1xuXG4gICAgICAgIGhuY2FycnkgKz0gbmNhcnJ5ID4+PiAyNjtcbiAgICAgICAgbmNhcnJ5ICY9IDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkO1xuICAgICAgY2FycnkgPSBuY2Fycnk7XG4gICAgICBuY2FycnkgPSBobmNhcnJ5O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgZnVuY3Rpb24ganVtYm9NdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgZmZ0bSA9IG5ldyBGRlRNKCk7XG4gICAgcmV0dXJuIGZmdG0ubXVscChzZWxmLCBudW0sIG91dCk7XG4gIH1cblxuICBCTi5wcm90b3R5cGUubXVsVG8gPSBmdW5jdGlvbiBtdWxUbyAobnVtLCBvdXQpIHtcbiAgICB2YXIgcmVzO1xuICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCArIG51bS5sZW5ndGg7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxMCAmJiBudW0ubGVuZ3RoID09PSAxMCkge1xuICAgICAgcmVzID0gY29tYjEwTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgNjMpIHtcbiAgICAgIHJlcyA9IHNtYWxsTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgMTAyNCkge1xuICAgICAgcmVzID0gYmlnTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvb2xleS1UdWtleSBhbGdvcml0aG0gZm9yIEZGVFxuICAvLyBzbGlnaHRseSByZXZpc2l0ZWQgdG8gcmVseSBvbiBsb29waW5nIGluc3RlYWQgb2YgcmVjdXJzaW9uXG5cbiAgZnVuY3Rpb24gRkZUTSAoeCwgeSkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIEZGVE0ucHJvdG90eXBlLm1ha2VSQlQgPSBmdW5jdGlvbiBtYWtlUkJUIChOKSB7XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGwgPSBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyhOKSAtIDE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHRbaV0gPSB0aGlzLnJldkJpbihpLCBsLCBOKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGJpbmFyeS1yZXZlcnNlZCByZXByZXNlbnRhdGlvbiBvZiBgeGBcbiAgRkZUTS5wcm90b3R5cGUucmV2QmluID0gZnVuY3Rpb24gcmV2QmluICh4LCBsLCBOKSB7XG4gICAgaWYgKHggPT09IDAgfHwgeCA9PT0gTiAtIDEpIHJldHVybiB4O1xuXG4gICAgdmFyIHJiID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgcmIgfD0gKHggJiAxKSA8PCAobCAtIGkgLSAxKTtcbiAgICAgIHggPj49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJiO1xuICB9O1xuXG4gIC8vIFBlcmZvcm1zIFwidHdlZWRsaW5nXCIgcGhhc2UsIHRoZXJlZm9yZSAnZW11bGF0aW5nJ1xuICAvLyBiZWhhdmlvdXIgb2YgdGhlIHJlY3Vyc2l2ZSBhbGdvcml0aG1cbiAgRkZUTS5wcm90b3R5cGUucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUgKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcnR3c1tpXSA9IHJ3c1tyYnRbaV1dO1xuICAgICAgaXR3c1tpXSA9IGl3c1tyYnRbaV1dO1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiB0cmFuc2Zvcm0gKHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOLCByYnQpIHtcbiAgICB0aGlzLnBlcm11dGUocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTik7XG5cbiAgICBmb3IgKHZhciBzID0gMTsgcyA8IE47IHMgPDw9IDEpIHtcbiAgICAgIHZhciBsID0gcyA8PCAxO1xuXG4gICAgICB2YXIgcnR3ZGYgPSBNYXRoLmNvcygyICogTWF0aC5QSSAvIGwpO1xuICAgICAgdmFyIGl0d2RmID0gTWF0aC5zaW4oMiAqIE1hdGguUEkgLyBsKTtcblxuICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBOOyBwICs9IGwpIHtcbiAgICAgICAgdmFyIHJ0d2RmXyA9IHJ0d2RmO1xuICAgICAgICB2YXIgaXR3ZGZfID0gaXR3ZGY7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzOyBqKyspIHtcbiAgICAgICAgICB2YXIgcmUgPSBydHdzW3AgKyBqXTtcbiAgICAgICAgICB2YXIgaWUgPSBpdHdzW3AgKyBqXTtcblxuICAgICAgICAgIHZhciBybyA9IHJ0d3NbcCArIGogKyBzXTtcbiAgICAgICAgICB2YXIgaW8gPSBpdHdzW3AgKyBqICsgc107XG5cbiAgICAgICAgICB2YXIgcnggPSBydHdkZl8gKiBybyAtIGl0d2RmXyAqIGlvO1xuXG4gICAgICAgICAgaW8gPSBydHdkZl8gKiBpbyArIGl0d2RmXyAqIHJvO1xuICAgICAgICAgIHJvID0gcng7XG5cbiAgICAgICAgICBydHdzW3AgKyBqXSA9IHJlICsgcm87XG4gICAgICAgICAgaXR3c1twICsgal0gPSBpZSArIGlvO1xuXG4gICAgICAgICAgcnR3c1twICsgaiArIHNdID0gcmUgLSBybztcbiAgICAgICAgICBpdHdzW3AgKyBqICsgc10gPSBpZSAtIGlvO1xuXG4gICAgICAgICAgLyoganNoaW50IG1heGRlcHRoIDogZmFsc2UgKi9cbiAgICAgICAgICBpZiAoaiAhPT0gbCkge1xuICAgICAgICAgICAgcnggPSBydHdkZiAqIHJ0d2RmXyAtIGl0d2RmICogaXR3ZGZfO1xuXG4gICAgICAgICAgICBpdHdkZl8gPSBydHdkZiAqIGl0d2RmXyArIGl0d2RmICogcnR3ZGZfO1xuICAgICAgICAgICAgcnR3ZGZfID0gcng7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmd1ZXNzTGVuMTNiID0gZnVuY3Rpb24gZ3Vlc3NMZW4xM2IgKG4sIG0pIHtcbiAgICB2YXIgTiA9IE1hdGgubWF4KG0sIG4pIHwgMTtcbiAgICB2YXIgb2RkID0gTiAmIDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoTiA9IE4gLyAyIHwgMDsgTjsgTiA9IE4gPj4+IDEpIHtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICByZXR1cm4gMSA8PCBpICsgMSArIG9kZDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb25qdWdhdGUgPSBmdW5jdGlvbiBjb25qdWdhdGUgKHJ3cywgaXdzLCBOKSB7XG4gICAgaWYgKE4gPD0gMSkgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdCA9IHJ3c1tpXTtcblxuICAgICAgcndzW2ldID0gcndzW04gLSBpIC0gMV07XG4gICAgICByd3NbTiAtIGkgLSAxXSA9IHQ7XG5cbiAgICAgIHQgPSBpd3NbaV07XG5cbiAgICAgIGl3c1tpXSA9IC1pd3NbTiAtIGkgLSAxXTtcbiAgICAgIGl3c1tOIC0gaSAtIDFdID0gLXQ7XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm5vcm1hbGl6ZTEzYiA9IGZ1bmN0aW9uIG5vcm1hbGl6ZTEzYiAod3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHcgPSBNYXRoLnJvdW5kKHdzWzIgKiBpICsgMV0gLyBOKSAqIDB4MjAwMCArXG4gICAgICAgIE1hdGgucm91bmQod3NbMiAqIGldIC8gTikgK1xuICAgICAgICBjYXJyeTtcblxuICAgICAgd3NbaV0gPSB3ICYgMHgzZmZmZmZmO1xuXG4gICAgICBpZiAodyA8IDB4NDAwMDAwMCkge1xuICAgICAgICBjYXJyeSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJyeSA9IHcgLyAweDQwMDAwMDAgfCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB3cztcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb252ZXJ0MTNiID0gZnVuY3Rpb24gY29udmVydDEzYiAod3MsIGxlbiwgcndzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjYXJyeSA9IGNhcnJ5ICsgKHdzW2ldIHwgMCk7XG5cbiAgICAgIHJ3c1syICogaV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgICByd3NbMiAqIGkgKyAxXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICB9XG5cbiAgICAvLyBQYWQgd2l0aCB6ZXJvZXNcbiAgICBmb3IgKGkgPSAyICogbGVuOyBpIDwgTjsgKytpKSB7XG4gICAgICByd3NbaV0gPSAwO1xuICAgIH1cblxuICAgIGFzc2VydChjYXJyeSA9PT0gMCk7XG4gICAgYXNzZXJ0KChjYXJyeSAmIH4weDFmZmYpID09PSAwKTtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5zdHViID0gZnVuY3Rpb24gc3R1YiAoTikge1xuICAgIHZhciBwaCA9IG5ldyBBcnJheShOKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcGhbaV0gPSAwO1xuICAgIH1cblxuICAgIHJldHVybiBwaDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5tdWxwID0gZnVuY3Rpb24gbXVscCAoeCwgeSwgb3V0KSB7XG4gICAgdmFyIE4gPSAyICogdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCwgeS5sZW5ndGgpO1xuXG4gICAgdmFyIHJidCA9IHRoaXMubWFrZVJCVChOKTtcblxuICAgIHZhciBfID0gdGhpcy5zdHViKE4pO1xuXG4gICAgdmFyIHJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgcndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBucndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBucndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbml3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgcm13cyA9IG91dC53b3JkcztcbiAgICBybXdzLmxlbmd0aCA9IE47XG5cbiAgICB0aGlzLmNvbnZlcnQxM2IoeC53b3JkcywgeC5sZW5ndGgsIHJ3cywgTik7XG4gICAgdGhpcy5jb252ZXJ0MTNiKHkud29yZHMsIHkubGVuZ3RoLCBucndzLCBOKTtcblxuICAgIHRoaXMudHJhbnNmb3JtKHJ3cywgXywgcndzdCwgaXdzdCwgTiwgcmJ0KTtcbiAgICB0aGlzLnRyYW5zZm9ybShucndzLCBfLCBucndzdCwgbml3c3QsIE4sIHJidCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdmFyIHJ4ID0gcndzdFtpXSAqIG5yd3N0W2ldIC0gaXdzdFtpXSAqIG5pd3N0W2ldO1xuICAgICAgaXdzdFtpXSA9IHJ3c3RbaV0gKiBuaXdzdFtpXSArIGl3c3RbaV0gKiBucndzdFtpXTtcbiAgICAgIHJ3c3RbaV0gPSByeDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmp1Z2F0ZShyd3N0LCBpd3N0LCBOKTtcbiAgICB0aGlzLnRyYW5zZm9ybShyd3N0LCBpd3N0LCBybXdzLCBfLCBOLCByYnQpO1xuICAgIHRoaXMuY29uanVnYXRlKHJtd3MsIF8sIE4pO1xuICAgIHRoaXMubm9ybWFsaXplMTNiKHJtd3MsIE4pO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0geC5uZWdhdGl2ZSBeIHkubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHgubGVuZ3RoICsgeS5sZW5ndGg7XG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGB0aGlzYCBieSBgbnVtYFxuICBCTi5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiB0aGlzLm11bFRvKG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBlbXBsb3lpbmcgRkZUXG4gIEJOLnByb3RvdHlwZS5tdWxmID0gZnVuY3Rpb24gbXVsZiAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgTXVsdGlwbGljYXRpb25cbiAgQk4ucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKG51bSwgdGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmltdWxuID0gZnVuY3Rpb24gaW11bG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG5cbiAgICAvLyBDYXJyeVxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKiBudW07XG4gICAgICB2YXIgbG8gPSAodyAmIDB4M2ZmZmZmZikgKyAoY2FycnkgJiAweDNmZmZmZmYpO1xuICAgICAgY2FycnkgPj49IDI2O1xuICAgICAgY2FycnkgKz0gKHcgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgIC8vIE5PVEU6IGxvIGlzIDI3Yml0IG1heGltdW1cbiAgICAgIGNhcnJ5ICs9IGxvID4+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm11bG4gPSBmdW5jdGlvbiBtdWxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKG51bSk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLm11bCh0aGlzKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSk7XG4gIH07XG5cbiAgLy8gTWF0aC5wb3coYHRoaXNgLCBgbnVtYClcbiAgQk4ucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAobnVtKSB7XG4gICAgdmFyIHcgPSB0b0JpdEFycmF5KG51bSk7XG4gICAgaWYgKHcubGVuZ3RoID09PSAwKSByZXR1cm4gbmV3IEJOKDEpO1xuXG4gICAgLy8gU2tpcCBsZWFkaW5nIHplcm9lc1xuICAgIHZhciByZXMgPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdy5sZW5ndGg7IGkrKywgcmVzID0gcmVzLnNxcigpKSB7XG4gICAgICBpZiAod1tpXSAhPT0gMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKCsraSA8IHcubGVuZ3RoKSB7XG4gICAgICBmb3IgKHZhciBxID0gcmVzLnNxcigpOyBpIDwgdy5sZW5ndGg7IGkrKywgcSA9IHEuc3FyKCkpIHtcbiAgICAgICAgaWYgKHdbaV0gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHJlcy5tdWwocSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0IGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXNobG4gPSBmdW5jdGlvbiBpdXNobG4gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG4gICAgdmFyIGNhcnJ5TWFzayA9ICgweDNmZmZmZmYgPj4+ICgyNiAtIHIpKSA8PCAoMjYgLSByKTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbmV3Q2FycnkgPSB0aGlzLndvcmRzW2ldICYgY2FycnlNYXNrO1xuICAgICAgICB2YXIgYyA9ICgodGhpcy53b3Jkc1tpXSB8IDApIC0gbmV3Q2FycnkpIDw8IHI7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjIHwgY2Fycnk7XG4gICAgICAgIGNhcnJ5ID0gbmV3Q2FycnkgPj4+ICgyNiAtIHIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2FycnkpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzICE9PSAwKSB7XG4gICAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIHNdID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggKz0gcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hsbiA9IGZ1bmN0aW9uIGlzaGxuIChiaXRzKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodCBpbi1wbGFjZVxuICAvLyBOT1RFOiBgaGludGAgaXMgYSBsb3dlc3QgYml0IGJlZm9yZSB0cmFpbGluZyB6ZXJvZXNcbiAgLy8gTk9URTogaWYgYGV4dGVuZGVkYCBpcyBwcmVzZW50IC0gaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBkZXN0cm95ZWQgYml0c1xuICBCTi5wcm90b3R5cGUuaXVzaHJuID0gZnVuY3Rpb24gaXVzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgaDtcbiAgICBpZiAoaGludCkge1xuICAgICAgaCA9IChoaW50IC0gKGhpbnQgJSAyNikpIC8gMjY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGggPSAwO1xuICAgIH1cblxuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gTWF0aC5taW4oKGJpdHMgLSByKSAvIDI2LCB0aGlzLmxlbmd0aCk7XG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgdmFyIG1hc2tlZFdvcmRzID0gZXh0ZW5kZWQ7XG5cbiAgICBoIC09IHM7XG4gICAgaCA9IE1hdGgubWF4KDAsIGgpO1xuXG4gICAgLy8gRXh0ZW5kZWQgbW9kZSwgY29weSBtYXNrZWQgcGFydFxuICAgIGlmIChtYXNrZWRXb3Jkcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgbWFza2VkV29yZHMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuICAgICAgbWFza2VkV29yZHMubGVuZ3RoID0gcztcbiAgICB9XG5cbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgLy8gTm8tb3AsIHdlIHNob3VsZCBub3QgbW92ZSBhbnl0aGluZyBhdCBhbGxcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gcykge1xuICAgICAgdGhpcy5sZW5ndGggLT0gcztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2kgKyBzXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiAoY2FycnkgIT09IDAgfHwgaSA+PSBoKTsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IChjYXJyeSA8PCAoMjYgLSByKSkgfCAod29yZCA+Pj4gcik7XG4gICAgICBjYXJyeSA9IHdvcmQgJiBtYXNrO1xuICAgIH1cblxuICAgIC8vIFB1c2ggY2FycmllZCBiaXRzIGFzIGEgbWFza1xuICAgIGlmIChtYXNrZWRXb3JkcyAmJiBjYXJyeSAhPT0gMCkge1xuICAgICAgbWFza2VkV29yZHMud29yZHNbbWFza2VkV29yZHMubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hybiA9IGZ1bmN0aW9uIGlzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNocm4oYml0cywgaGludCwgZXh0ZW5kZWQpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnRcbiAgQk4ucHJvdG90eXBlLnNobG4gPSBmdW5jdGlvbiBzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNobG4gPSBmdW5jdGlvbiB1c2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0XG4gIEJOLnByb3RvdHlwZS5zaHJuID0gZnVuY3Rpb24gc2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaHJuID0gZnVuY3Rpb24gdXNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiaXRzKTtcbiAgfTtcblxuICAvLyBUZXN0IGlmIG4gYml0IGlzIHNldFxuICBCTi5wcm90b3R5cGUudGVzdG4gPSBmdW5jdGlvbiB0ZXN0biAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBiaXQgYW5kIHJldHVyblxuICAgIHZhciB3ID0gdGhpcy53b3Jkc1tzXTtcblxuICAgIHJldHVybiAhISh3ICYgcSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyIChpbi1wbGFjZSlcbiAgQk4ucHJvdG90eXBlLmltYXNrbiA9IGZ1bmN0aW9uIGltYXNrbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcblxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAnaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzJyk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHMrKztcbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1pbihzLCB0aGlzLmxlbmd0aCk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gJj0gbWFzaztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlclxuICBCTi5wcm90b3R5cGUubWFza24gPSBmdW5jdGlvbiBtYXNrbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGJpdHMpO1xuICB9O1xuXG4gIC8vIEFkZCBwbGFpbiBudW1iZXIgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pYWRkbiA9IGZ1bmN0aW9uIGlhZGRuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pc3VibigtbnVtKTtcblxuICAgIC8vIFBvc3NpYmxlIHNpZ24gY2hhbmdlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiAodGhpcy53b3Jkc1swXSB8IDApIDwgbnVtKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gPSBudW0gLSAodGhpcy53b3Jkc1swXSB8IDApO1xuICAgICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pc3VibihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aG91dCBjaGVja3NcbiAgICByZXR1cm4gdGhpcy5faWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lhZGRuID0gZnVuY3Rpb24gX2lhZGRuIChudW0pIHtcbiAgICB0aGlzLndvcmRzWzBdICs9IG51bTtcblxuICAgIC8vIENhcnJ5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldID49IDB4NDAwMDAwMDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldIC09IDB4NDAwMDAwMDtcbiAgICAgIGlmIChpID09PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0rKztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSArIDEpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgcGxhaW4gbnVtYmVyIGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pc3VibiA9IGZ1bmN0aW9uIGlzdWJuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pYWRkbigtbnVtKTtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZG4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy53b3Jkc1swXSAtPSBudW07XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA8IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAtdGhpcy53b3Jkc1swXTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDYXJyeVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldIDwgMDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gKz0gMHg0MDAwMDAwO1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSAtPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFkZG4gPSBmdW5jdGlvbiBhZGRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnN1Ym4gPSBmdW5jdGlvbiBzdWJuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhYnMgPSBmdW5jdGlvbiBpYWJzICgpIHtcbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiBhYnMgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFicygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faXNobG5zdWJtdWwgPSBmdW5jdGlvbiBfaXNobG5zdWJtdWwgKG51bSwgbXVsLCBzaGlmdCkge1xuICAgIHZhciBsZW4gPSBudW0ubGVuZ3RoICsgc2hpZnQ7XG4gICAgdmFyIGk7XG5cbiAgICB0aGlzLl9leHBhbmQobGVuKTtcblxuICAgIHZhciB3O1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgdmFyIHJpZ2h0ID0gKG51bS53b3Jkc1tpXSB8IDApICogbXVsO1xuICAgICAgdyAtPSByaWdodCAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gKHcgPj4gMjYpIC0gKChyaWdodCAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBpIDwgdGhpcy5sZW5ndGggLSBzaGlmdDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSA9PT0gMCkgcmV0dXJuIHRoaXMuc3RyaXAoKTtcblxuICAgIC8vIFN1YnRyYWN0aW9uIG92ZXJmbG93XG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAtMSk7XG4gICAgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gLSh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICB0aGlzLm5lZ2F0aXZlID0gMTtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl93b3JkRGl2ID0gZnVuY3Rpb24gX3dvcmREaXYgKG51bSwgbW9kZSkge1xuICAgIHZhciBzaGlmdCA9IHRoaXMubGVuZ3RoIC0gbnVtLmxlbmd0aDtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtO1xuXG4gICAgLy8gTm9ybWFsaXplXG4gICAgdmFyIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgdmFyIGJoaUJpdHMgPSB0aGlzLl9jb3VudEJpdHMoYmhpKTtcbiAgICBzaGlmdCA9IDI2IC0gYmhpQml0cztcbiAgICBpZiAoc2hpZnQgIT09IDApIHtcbiAgICAgIGIgPSBiLnVzaGxuKHNoaWZ0KTtcbiAgICAgIGEuaXVzaGxuKHNoaWZ0KTtcbiAgICAgIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBxdW90aWVudFxuICAgIHZhciBtID0gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAgICB2YXIgcTtcblxuICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgcSA9IG5ldyBCTihudWxsKTtcbiAgICAgIHEubGVuZ3RoID0gbSArIDE7XG4gICAgICBxLndvcmRzID0gbmV3IEFycmF5KHEubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcS5sZW5ndGg7IGkrKykge1xuICAgICAgICBxLndvcmRzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGlmZiA9IGEuY2xvbmUoKS5faXNobG5zdWJtdWwoYiwgMSwgbSk7XG4gICAgaWYgKGRpZmYubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIGEgPSBkaWZmO1xuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1ttXSA9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IG0gLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgdmFyIHFqID0gKGEud29yZHNbYi5sZW5ndGggKyBqXSB8IDApICogMHg0MDAwMDAwICtcbiAgICAgICAgKGEud29yZHNbYi5sZW5ndGggKyBqIC0gMV0gfCAwKTtcblxuICAgICAgLy8gTk9URTogKHFqIC8gYmhpKSBpcyAoMHgzZmZmZmZmICogMHg0MDAwMDAwICsgMHgzZmZmZmZmKSAvIDB4MjAwMDAwMCBtYXhcbiAgICAgIC8vICgweDdmZmZmZmYpXG4gICAgICBxaiA9IE1hdGgubWluKChxaiAvIGJoaSkgfCAwLCAweDNmZmZmZmYpO1xuXG4gICAgICBhLl9pc2hsbnN1Ym11bChiLCBxaiwgaik7XG4gICAgICB3aGlsZSAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBxai0tO1xuICAgICAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgYS5faXNobG5zdWJtdWwoYiwgMSwgaik7XG4gICAgICAgIGlmICghYS5pc1plcm8oKSkge1xuICAgICAgICAgIGEubmVnYXRpdmUgXj0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1tqXSA9IHFqO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocSkge1xuICAgICAgcS5zdHJpcCgpO1xuICAgIH1cbiAgICBhLnN0cmlwKCk7XG5cbiAgICAvLyBEZW5vcm1hbGl6ZVxuICAgIGlmIChtb2RlICE9PSAnZGl2JyAmJiBzaGlmdCAhPT0gMCkge1xuICAgICAgYS5pdXNocm4oc2hpZnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaXY6IHEgfHwgbnVsbCxcbiAgICAgIG1vZDogYVxuICAgIH07XG4gIH07XG5cbiAgLy8gTk9URTogMSkgYG1vZGVgIGNhbiBiZSBzZXQgdG8gYG1vZGAgdG8gcmVxdWVzdCBtb2Qgb25seSxcbiAgLy8gICAgICAgdG8gYGRpdmAgdG8gcmVxdWVzdCBkaXYgb25seSwgb3IgYmUgYWJzZW50IHRvXG4gIC8vICAgICAgIHJlcXVlc3QgYm90aCBkaXYgJiBtb2RcbiAgLy8gICAgICAgMikgYHBvc2l0aXZlYCBpcyB0cnVlIGlmIHVuc2lnbmVkIG1vZCBpcyByZXF1ZXN0ZWRcbiAgQk4ucHJvdG90eXBlLmRpdm1vZCA9IGZ1bmN0aW9uIGRpdm1vZCAobnVtLCBtb2RlLCBwb3NpdGl2ZSkge1xuICAgIGFzc2VydCghbnVtLmlzWmVybygpKTtcblxuICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiBuZXcgQk4oMClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRpdiwgbW9kLCByZXM7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0sIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaWFkZChudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiByZXMubW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICgodGhpcy5uZWdhdGl2ZSAmIG51bS5uZWdhdGl2ZSkgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlzdWIobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHJlcy5kaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmUgYXQgdGhpcyBwb2ludFxuXG4gICAgLy8gU3RyaXAgYm90aCBudW1iZXJzIHRvIGFwcHJveGltYXRlIHNoaWZ0IHZhbHVlXG4gICAgaWYgKG51bS5sZW5ndGggPiB0aGlzLmxlbmd0aCB8fCB0aGlzLmNtcChudW0pIDwgMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogdGhpc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBWZXJ5IHNob3J0IHJlZHVjdGlvblxuICAgIGlmIChudW0ubGVuZ3RoID09PSAxKSB7XG4gICAgICBpZiAobW9kZSA9PT0gJ2RpdicpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICAgIG1vZDogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSA9PT0gJ21vZCcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IG51bGwsXG4gICAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd29yZERpdihudW0sIG1vZGUpO1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgIC8gYG51bWBcbiAgQk4ucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uIGRpdiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ2RpdicsIGZhbHNlKS5kaXY7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgJSBgbnVtYFxuICBCTi5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgZmFsc2UpLm1vZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW1vZCA9IGZ1bmN0aW9uIHVtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCB0cnVlKS5tb2Q7XG4gIH07XG5cbiAgLy8gRmluZCBSb3VuZChgdGhpc2AgLyBgbnVtYClcbiAgQk4ucHJvdG90eXBlLmRpdlJvdW5kID0gZnVuY3Rpb24gZGl2Um91bmQgKG51bSkge1xuICAgIHZhciBkbSA9IHRoaXMuZGl2bW9kKG51bSk7XG5cbiAgICAvLyBGYXN0IGNhc2UgLSBleGFjdCBkaXZpc2lvblxuICAgIGlmIChkbS5tb2QuaXNaZXJvKCkpIHJldHVybiBkbS5kaXY7XG5cbiAgICB2YXIgbW9kID0gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0ubW9kLmlzdWIobnVtKSA6IGRtLm1vZDtcblxuICAgIHZhciBoYWxmID0gbnVtLnVzaHJuKDEpO1xuICAgIHZhciByMiA9IG51bS5hbmRsbigxKTtcbiAgICB2YXIgY21wID0gbW9kLmNtcChoYWxmKTtcblxuICAgIC8vIFJvdW5kIGRvd25cbiAgICBpZiAoY21wIDwgMCB8fCByMiA9PT0gMSAmJiBjbXAgPT09IDApIHJldHVybiBkbS5kaXY7XG5cbiAgICAvLyBSb3VuZCB1cFxuICAgIHJldHVybiBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5kaXYuaXN1Ym4oMSkgOiBkbS5kaXYuaWFkZG4oMSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm1vZG4gPSBmdW5jdGlvbiBtb2RuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG4gICAgdmFyIHAgPSAoMSA8PCAyNikgJSBudW07XG5cbiAgICB2YXIgYWNjID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgYWNjID0gKHAgKiBhY2MgKyAodGhpcy53b3Jkc1tpXSB8IDApKSAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIGRpdmlzaW9uIGJ5IG51bWJlclxuICBCTi5wcm90b3R5cGUuaWRpdm4gPSBmdW5jdGlvbiBpZGl2biAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICsgY2FycnkgKiAweDQwMDAwMDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKHcgLyBudW0pIHwgMDtcbiAgICAgIGNhcnJ5ID0gdyAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5kaXZuID0gZnVuY3Rpb24gZGl2biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lZ2NkID0gZnVuY3Rpb24gZWdjZCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIHggPSB0aGlzO1xuICAgIHZhciB5ID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKHgubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHggPSB4LnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHggPSB4LmNsb25lKCk7XG4gICAgfVxuXG4gICAgLy8gQSAqIHggKyBCICogeSA9IHhcbiAgICB2YXIgQSA9IG5ldyBCTigxKTtcbiAgICB2YXIgQiA9IG5ldyBCTigwKTtcblxuICAgIC8vIEMgKiB4ICsgRCAqIHkgPSB5XG4gICAgdmFyIEMgPSBuZXcgQk4oMCk7XG4gICAgdmFyIEQgPSBuZXcgQk4oMSk7XG5cbiAgICB2YXIgZyA9IDA7XG5cbiAgICB3aGlsZSAoeC5pc0V2ZW4oKSAmJiB5LmlzRXZlbigpKSB7XG4gICAgICB4Lml1c2hybigxKTtcbiAgICAgIHkuaXVzaHJuKDEpO1xuICAgICAgKytnO1xuICAgIH1cblxuICAgIHZhciB5cCA9IHkuY2xvbmUoKTtcbiAgICB2YXIgeHAgPSB4LmNsb25lKCk7XG5cbiAgICB3aGlsZSAoIXguaXNaZXJvKCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7ICh4LndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgeC5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEEuaXNPZGQoKSB8fCBCLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEEuaWFkZCh5cCk7XG4gICAgICAgICAgICBCLmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEEuaXVzaHJuKDEpO1xuICAgICAgICAgIEIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7ICh5LndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgeS5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEMuaXNPZGQoKSB8fCBELmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEMuaWFkZCh5cCk7XG4gICAgICAgICAgICBELmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEMuaXVzaHJuKDEpO1xuICAgICAgICAgIEQuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh4LmNtcCh5KSA+PSAwKSB7XG4gICAgICAgIHguaXN1Yih5KTtcbiAgICAgICAgQS5pc3ViKEMpO1xuICAgICAgICBCLmlzdWIoRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5LmlzdWIoeCk7XG4gICAgICAgIEMuaXN1YihBKTtcbiAgICAgICAgRC5pc3ViKEIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhOiBDLFxuICAgICAgYjogRCxcbiAgICAgIGdjZDogeS5pdXNobG4oZylcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRoaXMgaXMgcmVkdWNlZCBpbmNhcm5hdGlvbiBvZiB0aGUgYmluYXJ5IEVFQVxuICAvLyBhYm92ZSwgZGVzaWduYXRlZCB0byBpbnZlcnQgbWVtYmVycyBvZiB0aGVcbiAgLy8gX3ByaW1lXyBmaWVsZHMgRihwKSBhdCBhIG1heGltYWwgc3BlZWRcbiAgQk4ucHJvdG90eXBlLl9pbnZtcCA9IGZ1bmN0aW9uIF9pbnZtcCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIGEgPSB0aGlzO1xuICAgIHZhciBiID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGEgPSBhLnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICAgIHZhciB4MiA9IG5ldyBCTigwKTtcblxuICAgIHZhciBkZWx0YSA9IGIuY2xvbmUoKTtcblxuICAgIHdoaWxlIChhLmNtcG4oMSkgPiAwICYmIGIuY21wbigxKSA+IDApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7IChhLndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgYS5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgxLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgxLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgxLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoYi53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIGIuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmICh4Mi5pc09kZCgpKSB7XG4gICAgICAgICAgICB4Mi5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4Mi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGEuY21wKGIpID49IDApIHtcbiAgICAgICAgYS5pc3ViKGIpO1xuICAgICAgICB4MS5pc3ViKHgyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGIuaXN1YihhKTtcbiAgICAgICAgeDIuaXN1Yih4MSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlcztcbiAgICBpZiAoYS5jbXBuKDEpID09PSAwKSB7XG4gICAgICByZXMgPSB4MTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0geDI7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQocCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ2NkID0gZnVuY3Rpb24gZ2NkIChudW0pIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIG51bS5hYnMoKTtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gdGhpcy5hYnMoKTtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtLmNsb25lKCk7XG4gICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgYi5uZWdhdGl2ZSA9IDA7XG5cbiAgICAvLyBSZW1vdmUgY29tbW9uIGZhY3RvciBvZiB0d29cbiAgICBmb3IgKHZhciBzaGlmdCA9IDA7IGEuaXNFdmVuKCkgJiYgYi5pc0V2ZW4oKTsgc2hpZnQrKykge1xuICAgICAgYS5pdXNocm4oMSk7XG4gICAgICBiLml1c2hybigxKTtcbiAgICB9XG5cbiAgICBkbyB7XG4gICAgICB3aGlsZSAoYS5pc0V2ZW4oKSkge1xuICAgICAgICBhLml1c2hybigxKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgIGIuaXVzaHJuKDEpO1xuICAgICAgfVxuXG4gICAgICB2YXIgciA9IGEuY21wKGIpO1xuICAgICAgaWYgKHIgPCAwKSB7XG4gICAgICAgIC8vIFN3YXAgYGFgIGFuZCBgYmAgdG8gbWFrZSBgYWAgYWx3YXlzIGJpZ2dlciB0aGFuIGBiYFxuICAgICAgICB2YXIgdCA9IGE7XG4gICAgICAgIGEgPSBiO1xuICAgICAgICBiID0gdDtcbiAgICAgIH0gZWxzZSBpZiAociA9PT0gMCB8fCBiLmNtcG4oMSkgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGEuaXN1YihiKTtcbiAgICB9IHdoaWxlICh0cnVlKTtcblxuICAgIHJldHVybiBiLml1c2hsbihzaGlmdCk7XG4gIH07XG5cbiAgLy8gSW52ZXJ0IG51bWJlciBpbiB0aGUgZmllbGQgRihudW0pXG4gIEJOLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZWdjZChudW0pLmEudW1vZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiBpc0V2ZW4gKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uIGlzT2RkICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMTtcbiAgfTtcblxuICAvLyBBbmQgZmlyc3Qgd29yZCBhbmQgbnVtXG4gIEJOLnByb3RvdHlwZS5hbmRsbiA9IGZ1bmN0aW9uIGFuZGxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkc1swXSAmIG51bTtcbiAgfTtcblxuICAvLyBJbmNyZW1lbnQgYXQgdGhlIGJpdCBwb3NpdGlvbiBpbi1saW5lXG4gIEJOLnByb3RvdHlwZS5iaW5jbiA9IGZ1bmN0aW9uIGJpbmNuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicpO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHRoaXMuX2V4cGFuZChzICsgMSk7XG4gICAgICB0aGlzLndvcmRzW3NdIHw9IHE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgYml0IGFuZCBwcm9wYWdhdGUsIGlmIG5lZWRlZFxuICAgIHZhciBjYXJyeSA9IHE7XG4gICAgZm9yICh2YXIgaSA9IHM7IGNhcnJ5ICE9PSAwICYmIGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdyArPSBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+Pj4gMjY7XG4gICAgICB3ICY9IDB4M2ZmZmZmZjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiBpc1plcm8gKCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbXBuID0gZnVuY3Rpb24gY21wbiAobnVtKSB7XG4gICAgdmFyIG5lZ2F0aXZlID0gbnVtIDwgMDtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmICFuZWdhdGl2ZSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG5lZ2F0aXZlKSByZXR1cm4gMTtcblxuICAgIHRoaXMuc3RyaXAoKTtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gMSkge1xuICAgICAgcmVzID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5lZ2F0aXZlKSB7XG4gICAgICAgIG51bSA9IC1udW07XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmLCAnTnVtYmVyIGlzIHRvbyBiaWcnKTtcblxuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzWzBdIHwgMDtcbiAgICAgIHJlcyA9IHcgPT09IG51bSA/IDAgOiB3IDwgbnVtID8gLTEgOiAxO1xuICAgIH1cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29tcGFyZSB0d28gbnVtYmVycyBhbmQgcmV0dXJuOlxuICAvLyAxIC0gaWYgYHRoaXNgID4gYG51bWBcbiAgLy8gMCAtIGlmIGB0aGlzYCA9PSBgbnVtYFxuICAvLyAtMSAtIGlmIGB0aGlzYCA8IGBudW1gXG4gIEJOLnByb3RvdHlwZS5jbXAgPSBmdW5jdGlvbiBjbXAgKG51bSkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIDE7XG5cbiAgICB2YXIgcmVzID0gdGhpcy51Y21wKG51bSk7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFVuc2lnbmVkIGNvbXBhcmlzb25cbiAgQk4ucHJvdG90eXBlLnVjbXAgPSBmdW5jdGlvbiB1Y21wIChudW0pIHtcbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBoYXZlIHRoZSBzYW1lIHNpZ25cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSByZXR1cm4gLTE7XG5cbiAgICB2YXIgcmVzID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGEgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHZhciBiID0gbnVtLndvcmRzW2ldIHwgMDtcblxuICAgICAgaWYgKGEgPT09IGIpIGNvbnRpbnVlO1xuICAgICAgaWYgKGEgPCBiKSB7XG4gICAgICAgIHJlcyA9IC0xO1xuICAgICAgfSBlbHNlIGlmIChhID4gYikge1xuICAgICAgICByZXMgPSAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0biA9IGZ1bmN0aW9uIGd0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndCA9IGZ1bmN0aW9uIGd0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlbiA9IGZ1bmN0aW9uIGd0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGUgPSBmdW5jdGlvbiBndGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0biA9IGZ1bmN0aW9uIGx0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHQgPSBmdW5jdGlvbiBsdCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGVuID0gZnVuY3Rpb24gbHRlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZSA9IGZ1bmN0aW9uIGx0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXFuID0gZnVuY3Rpb24gZXFuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAwO1xuICB9O1xuXG4gIC8vXG4gIC8vIEEgcmVkdWNlIGNvbnRleHQsIGNvdWxkIGJlIHVzaW5nIG1vbnRnb21lcnkgb3Igc29tZXRoaW5nIGJldHRlciwgZGVwZW5kaW5nXG4gIC8vIG9uIHRoZSBgbWAgaXRzZWxmLlxuICAvL1xuICBCTi5yZWQgPSBmdW5jdGlvbiByZWQgKG51bSkge1xuICAgIHJldHVybiBuZXcgUmVkKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvUmVkID0gZnVuY3Rpb24gdG9SZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIHJldHVybiBjdHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tUmVkID0gZnVuY3Rpb24gZnJvbVJlZCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAnZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2ZvcmNlUmVkID0gZnVuY3Rpb24gX2ZvcmNlUmVkIChjdHgpIHtcbiAgICB0aGlzLnJlZCA9IGN0eDtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZm9yY2VSZWQgPSBmdW5jdGlvbiBmb3JjZVJlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkQWRkID0gZnVuY3Rpb24gcmVkQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJQWRkID0gZnVuY3Rpb24gcmVkSUFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaWFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTdWIgPSBmdW5jdGlvbiByZWRTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTdWIgPSBmdW5jdGlvbiByZWRJU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNobCA9IGZ1bmN0aW9uIHJlZFNobCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zaGwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkTXVsID0gZnVuY3Rpb24gcmVkTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElNdWwgPSBmdW5jdGlvbiByZWRJTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTcXIgPSBmdW5jdGlvbiByZWRTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FyKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3FyID0gZnVuY3Rpb24gcmVkSVNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXNxcih0aGlzKTtcbiAgfTtcblxuICAvLyBTcXVhcmUgcm9vdCBvdmVyIHBcbiAgQk4ucHJvdG90eXBlLnJlZFNxcnQgPSBmdW5jdGlvbiByZWRTcXJ0ICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXJ0KHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJbnZtID0gZnVuY3Rpb24gcmVkSW52bSAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW52bSh0aGlzKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgICUgYHJlZCBtb2R1bG9gXG4gIEJOLnByb3RvdHlwZS5yZWROZWcgPSBmdW5jdGlvbiByZWROZWcgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubmVnKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRQb3cgPSBmdW5jdGlvbiByZWRQb3cgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCAmJiAhbnVtLnJlZCwgJ3JlZFBvdyhub3JtYWxOdW0pJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnBvdyh0aGlzLCBudW0pO1xuICB9O1xuXG4gIC8vIFByaW1lIG51bWJlcnMgd2l0aCBlZmZpY2llbnQgcmVkdWN0aW9uXG4gIHZhciBwcmltZXMgPSB7XG4gICAgazI1NjogbnVsbCxcbiAgICBwMjI0OiBudWxsLFxuICAgIHAxOTI6IG51bGwsXG4gICAgcDI1NTE5OiBudWxsXG4gIH07XG5cbiAgLy8gUHNldWRvLU1lcnNlbm5lIHByaW1lXG4gIGZ1bmN0aW9uIE1QcmltZSAobmFtZSwgcCkge1xuICAgIC8vIFAgPSAyIF4gTiAtIEtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMucCA9IG5ldyBCTihwLCAxNik7XG4gICAgdGhpcy5uID0gdGhpcy5wLmJpdExlbmd0aCgpO1xuICAgIHRoaXMuayA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCk7XG5cbiAgICB0aGlzLnRtcCA9IHRoaXMuX3RtcCgpO1xuICB9XG5cbiAgTVByaW1lLnByb3RvdHlwZS5fdG1wID0gZnVuY3Rpb24gX3RtcCAoKSB7XG4gICAgdmFyIHRtcCA9IG5ldyBCTihudWxsKTtcbiAgICB0bXAud29yZHMgPSBuZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubiAvIDEzKSk7XG4gICAgcmV0dXJuIHRtcDtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmlyZWR1Y2UgPSBmdW5jdGlvbiBpcmVkdWNlIChudW0pIHtcbiAgICAvLyBBc3N1bWVzIHRoYXQgYG51bWAgaXMgbGVzcyB0aGFuIGBQXjJgXG4gICAgLy8gbnVtID0gSEkgKiAoMiBeIE4gLSBLKSArIEhJICogSyArIExPID0gSEkgKiBLICsgTE8gKG1vZCBQKVxuICAgIHZhciByID0gbnVtO1xuICAgIHZhciBybGVuO1xuXG4gICAgZG8ge1xuICAgICAgdGhpcy5zcGxpdChyLCB0aGlzLnRtcCk7XG4gICAgICByID0gdGhpcy5pbXVsSyhyKTtcbiAgICAgIHIgPSByLmlhZGQodGhpcy50bXApO1xuICAgICAgcmxlbiA9IHIuYml0TGVuZ3RoKCk7XG4gICAgfSB3aGlsZSAocmxlbiA+IHRoaXMubik7XG5cbiAgICB2YXIgY21wID0gcmxlbiA8IHRoaXMubiA/IC0xIDogci51Y21wKHRoaXMucCk7XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgci53b3Jkc1swXSA9IDA7XG4gICAgICByLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgICByLmlzdWIodGhpcy5wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHIuc3RyaXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyByIGlzIEJOIHY0IGluc3RhbmNlXG4gICAgICAgIHIuc3RyaXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHIgaXMgQk4gdjUgaW5zdGFuY2VcbiAgICAgICAgci5fc3RyaXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwidmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKVxudmFyIG1nZiA9IHJlcXVpcmUoJy4vbWdmJylcbnZhciB4b3IgPSByZXF1aXJlKCcuL3hvcicpXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKVxudmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpXG52YXIgd2l0aFB1YmxpYyA9IHJlcXVpcmUoJy4vd2l0aFB1YmxpYycpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwcml2YXRlRGVjcnlwdCAocHJpdmF0ZUtleSwgZW5jLCByZXZlcnNlKSB7XG4gIHZhciBwYWRkaW5nXG4gIGlmIChwcml2YXRlS2V5LnBhZGRpbmcpIHtcbiAgICBwYWRkaW5nID0gcHJpdmF0ZUtleS5wYWRkaW5nXG4gIH0gZWxzZSBpZiAocmV2ZXJzZSkge1xuICAgIHBhZGRpbmcgPSAxXG4gIH0gZWxzZSB7XG4gICAgcGFkZGluZyA9IDRcbiAgfVxuXG4gIHZhciBrZXkgPSBwYXJzZUtleXMocHJpdmF0ZUtleSlcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgaWYgKGVuYy5sZW5ndGggPiBrIHx8IG5ldyBCTihlbmMpLmNtcChrZXkubW9kdWx1cykgPj0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpXG4gIH1cbiAgdmFyIG1zZ1xuICBpZiAocmV2ZXJzZSkge1xuICAgIG1zZyA9IHdpdGhQdWJsaWMobmV3IEJOKGVuYyksIGtleSlcbiAgfSBlbHNlIHtcbiAgICBtc2cgPSBjcnQoZW5jLCBrZXkpXG4gIH1cbiAgdmFyIHpCdWZmZXIgPSBCdWZmZXIuYWxsb2MoayAtIG1zZy5sZW5ndGgpXG4gIG1zZyA9IEJ1ZmZlci5jb25jYXQoW3pCdWZmZXIsIG1zZ10sIGspXG4gIGlmIChwYWRkaW5nID09PSA0KSB7XG4gICAgcmV0dXJuIG9hZXAoa2V5LCBtc2cpXG4gIH0gZWxzZSBpZiAocGFkZGluZyA9PT0gMSkge1xuICAgIHJldHVybiBwa2NzMShrZXksIG1zZywgcmV2ZXJzZSlcbiAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAzKSB7XG4gICAgcmV0dXJuIG1zZ1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBwYWRkaW5nJylcbiAgfVxufVxuXG5mdW5jdGlvbiBvYWVwIChrZXksIG1zZykge1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKVxuICB2YXIgaUhhc2ggPSBjcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKEJ1ZmZlci5hbGxvYygwKSkuZGlnZXN0KClcbiAgdmFyIGhMZW4gPSBpSGFzaC5sZW5ndGhcbiAgaWYgKG1zZ1swXSAhPT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpXG4gIH1cbiAgdmFyIG1hc2tlZFNlZWQgPSBtc2cuc2xpY2UoMSwgaExlbiArIDEpXG4gIHZhciBtYXNrZWREYiA9IG1zZy5zbGljZShoTGVuICsgMSlcbiAgdmFyIHNlZWQgPSB4b3IobWFza2VkU2VlZCwgbWdmKG1hc2tlZERiLCBoTGVuKSlcbiAgdmFyIGRiID0geG9yKG1hc2tlZERiLCBtZ2Yoc2VlZCwgayAtIGhMZW4gLSAxKSlcbiAgaWYgKGNvbXBhcmUoaUhhc2gsIGRiLnNsaWNlKDAsIGhMZW4pKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpXG4gIH1cbiAgdmFyIGkgPSBoTGVuXG4gIHdoaWxlIChkYltpXSA9PT0gMCkge1xuICAgIGkrK1xuICB9XG4gIGlmIChkYltpKytdICE9PSAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJylcbiAgfVxuICByZXR1cm4gZGIuc2xpY2UoaSlcbn1cblxuZnVuY3Rpb24gcGtjczEgKGtleSwgbXNnLCByZXZlcnNlKSB7XG4gIHZhciBwMSA9IG1zZy5zbGljZSgwLCAyKVxuICB2YXIgaSA9IDJcbiAgdmFyIHN0YXR1cyA9IDBcbiAgd2hpbGUgKG1zZ1tpKytdICE9PSAwKSB7XG4gICAgaWYgKGkgPj0gbXNnLmxlbmd0aCkge1xuICAgICAgc3RhdHVzKytcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG4gIHZhciBwcyA9IG1zZy5zbGljZSgyLCBpIC0gMSlcblxuICBpZiAoKHAxLnRvU3RyaW5nKCdoZXgnKSAhPT0gJzAwMDInICYmICFyZXZlcnNlKSB8fCAocDEudG9TdHJpbmcoJ2hleCcpICE9PSAnMDAwMScgJiYgcmV2ZXJzZSkpIHtcbiAgICBzdGF0dXMrK1xuICB9XG4gIGlmIChwcy5sZW5ndGggPCA4KSB7XG4gICAgc3RhdHVzKytcbiAgfVxuICBpZiAoc3RhdHVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJylcbiAgfVxuICByZXR1cm4gbXNnLnNsaWNlKGkpXG59XG5mdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGEgPSBCdWZmZXIuZnJvbShhKVxuICBiID0gQnVmZmVyLmZyb20oYilcbiAgdmFyIGRpZiA9IDBcbiAgdmFyIGxlbiA9IGEubGVuZ3RoXG4gIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICBkaWYrK1xuICAgIGxlbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aClcbiAgfVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBkaWYgKz0gKGFbaV0gXiBiW2ldKVxuICB9XG4gIHJldHVybiBkaWZcbn1cbiIsInZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJylcbnZhciByYW5kb21CeXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJylcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxudmFyIG1nZiA9IHJlcXVpcmUoJy4vbWdmJylcbnZhciB4b3IgPSByZXF1aXJlKCcuL3hvcicpXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgd2l0aFB1YmxpYyA9IHJlcXVpcmUoJy4vd2l0aFB1YmxpYycpXG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcHVibGljRW5jcnlwdCAocHVibGljS2V5LCBtc2csIHJldmVyc2UpIHtcbiAgdmFyIHBhZGRpbmdcbiAgaWYgKHB1YmxpY0tleS5wYWRkaW5nKSB7XG4gICAgcGFkZGluZyA9IHB1YmxpY0tleS5wYWRkaW5nXG4gIH0gZWxzZSBpZiAocmV2ZXJzZSkge1xuICAgIHBhZGRpbmcgPSAxXG4gIH0gZWxzZSB7XG4gICAgcGFkZGluZyA9IDRcbiAgfVxuICB2YXIga2V5ID0gcGFyc2VLZXlzKHB1YmxpY0tleSlcbiAgdmFyIHBhZGRlZE1zZ1xuICBpZiAocGFkZGluZyA9PT0gNCkge1xuICAgIHBhZGRlZE1zZyA9IG9hZXAoa2V5LCBtc2cpXG4gIH0gZWxzZSBpZiAocGFkZGluZyA9PT0gMSkge1xuICAgIHBhZGRlZE1zZyA9IHBrY3MxKGtleSwgbXNnLCByZXZlcnNlKVxuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDMpIHtcbiAgICBwYWRkZWRNc2cgPSBuZXcgQk4obXNnKVxuICAgIGlmIChwYWRkZWRNc2cuY21wKGtleS5tb2R1bHVzKSA+PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgdG9vIGxvbmcgZm9yIG1vZHVsdXMnKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gcGFkZGluZycpXG4gIH1cbiAgaWYgKHJldmVyc2UpIHtcbiAgICByZXR1cm4gY3J0KHBhZGRlZE1zZywga2V5KVxuICB9IGVsc2Uge1xuICAgIHJldHVybiB3aXRoUHVibGljKHBhZGRlZE1zZywga2V5KVxuICB9XG59XG5cbmZ1bmN0aW9uIG9hZXAgKGtleSwgbXNnKSB7XG4gIHZhciBrID0ga2V5Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBtTGVuID0gbXNnLmxlbmd0aFxuICB2YXIgaUhhc2ggPSBjcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKEJ1ZmZlci5hbGxvYygwKSkuZGlnZXN0KClcbiAgdmFyIGhMZW4gPSBpSGFzaC5sZW5ndGhcbiAgdmFyIGhMZW4yID0gMiAqIGhMZW5cbiAgaWYgKG1MZW4gPiBrIC0gaExlbjIgLSAyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXNzYWdlIHRvbyBsb25nJylcbiAgfVxuICB2YXIgcHMgPSBCdWZmZXIuYWxsb2MoayAtIG1MZW4gLSBoTGVuMiAtIDIpXG4gIHZhciBkYmxlbiA9IGsgLSBoTGVuIC0gMVxuICB2YXIgc2VlZCA9IHJhbmRvbUJ5dGVzKGhMZW4pXG4gIHZhciBtYXNrZWREYiA9IHhvcihCdWZmZXIuY29uY2F0KFtpSGFzaCwgcHMsIEJ1ZmZlci5hbGxvYygxLCAxKSwgbXNnXSwgZGJsZW4pLCBtZ2Yoc2VlZCwgZGJsZW4pKVxuICB2YXIgbWFza2VkU2VlZCA9IHhvcihzZWVkLCBtZ2YobWFza2VkRGIsIGhMZW4pKVxuICByZXR1cm4gbmV3IEJOKEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5hbGxvYygxKSwgbWFza2VkU2VlZCwgbWFza2VkRGJdLCBrKSlcbn1cbmZ1bmN0aW9uIHBrY3MxIChrZXksIG1zZywgcmV2ZXJzZSkge1xuICB2YXIgbUxlbiA9IG1zZy5sZW5ndGhcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgaWYgKG1MZW4gPiBrIC0gMTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UgdG9vIGxvbmcnKVxuICB9XG4gIHZhciBwc1xuICBpZiAocmV2ZXJzZSkge1xuICAgIHBzID0gQnVmZmVyLmFsbG9jKGsgLSBtTGVuIC0gMywgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBwcyA9IG5vblplcm8oayAtIG1MZW4gLSAzKVxuICB9XG4gIHJldHVybiBuZXcgQk4oQnVmZmVyLmNvbmNhdChbQnVmZmVyLmZyb20oWzAsIHJldmVyc2UgPyAxIDogMl0pLCBwcywgQnVmZmVyLmFsbG9jKDEpLCBtc2ddLCBrKSlcbn1cbmZ1bmN0aW9uIG5vblplcm8gKGxlbikge1xuICB2YXIgb3V0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKGxlbilcbiAgdmFyIGkgPSAwXG4gIHZhciBjYWNoZSA9IHJhbmRvbUJ5dGVzKGxlbiAqIDIpXG4gIHZhciBjdXIgPSAwXG4gIHZhciBudW1cbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICBpZiAoY3VyID09PSBjYWNoZS5sZW5ndGgpIHtcbiAgICAgIGNhY2hlID0gcmFuZG9tQnl0ZXMobGVuICogMilcbiAgICAgIGN1ciA9IDBcbiAgICB9XG4gICAgbnVtID0gY2FjaGVbY3VyKytdXG4gICAgaWYgKG51bSkge1xuICAgICAgb3V0W2krK10gPSBudW1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dFxufVxuIiwidmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbmZ1bmN0aW9uIHdpdGhQdWJsaWMgKHBhZGRlZE1zZywga2V5KSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShwYWRkZWRNc2dcbiAgICAudG9SZWQoQk4ubW9udChrZXkubW9kdWx1cykpXG4gICAgLnJlZFBvdyhuZXcgQk4oa2V5LnB1YmxpY0V4cG9uZW50KSlcbiAgICAuZnJvbVJlZCgpXG4gICAgLnRvQXJyYXkoKSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3aXRoUHVibGljXG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHhvciAoYSwgYikge1xuICB2YXIgbGVuID0gYS5sZW5ndGhcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgYVtpXSBePSBiW2ldXG4gIH1cbiAgcmV0dXJuIGFcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG4vLyBsaW1pdCBvZiBDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKClcbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9DcnlwdG8vZ2V0UmFuZG9tVmFsdWVzXG52YXIgTUFYX0JZVEVTID0gNjU1MzZcblxuLy8gTm9kZSBzdXBwb3J0cyByZXF1ZXN0aW5nIHVwIHRvIHRoaXMgbnVtYmVyIG9mIGJ5dGVzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvYmxvYi9tYXN0ZXIvbGliL2ludGVybmFsL2NyeXB0by9yYW5kb20uanMjTDQ4XG52YXIgTUFYX1VJTlQzMiA9IDQyOTQ5NjcyOTVcblxuZnVuY3Rpb24gb2xkQnJvd3NlciAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignU2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlci5cXG5Vc2UgQ2hyb21lLCBGaXJlZm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExJylcbn1cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgY3J5cHRvID0gZ2xvYmFsLmNyeXB0byB8fCBnbG9iYWwubXNDcnlwdG9cblxuaWYgKGNyeXB0byAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmFuZG9tQnl0ZXNcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gb2xkQnJvd3NlclxufVxuXG5mdW5jdGlvbiByYW5kb21CeXRlcyAoc2l6ZSwgY2IpIHtcbiAgLy8gcGhhbnRvbWpzIG5lZWRzIHRvIHRocm93XG4gIGlmIChzaXplID4gTUFYX1VJTlQzMikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3JlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMnKVxuXG4gIHZhciBieXRlcyA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShzaXplKVxuXG4gIGlmIChzaXplID4gMCkgeyAgLy8gZ2V0UmFuZG9tVmFsdWVzIGZhaWxzIG9uIElFIGlmIHNpemUgPT0gMFxuICAgIGlmIChzaXplID4gTUFYX0JZVEVTKSB7IC8vIHRoaXMgaXMgdGhlIG1heCBieXRlcyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzXG4gICAgICAvLyBjYW4gZG8gYXQgb25jZSBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL3dpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzXG4gICAgICBmb3IgKHZhciBnZW5lcmF0ZWQgPSAwOyBnZW5lcmF0ZWQgPCBzaXplOyBnZW5lcmF0ZWQgKz0gTUFYX0JZVEVTKSB7XG4gICAgICAgIC8vIGJ1ZmZlci5zbGljZSBhdXRvbWF0aWNhbGx5IGNoZWNrcyBpZiB0aGUgZW5kIGlzIHBhc3QgdGhlIGVuZCBvZlxuICAgICAgICAvLyB0aGUgYnVmZmVyIHNvIHdlIGRvbid0IGhhdmUgdG8gaGVyZVxuICAgICAgICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGJ5dGVzLnNsaWNlKGdlbmVyYXRlZCwgZ2VuZXJhdGVkICsgTUFYX0JZVEVTKSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhieXRlcylcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgY2IobnVsbCwgYnl0ZXMpXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmZ1bmN0aW9uIG9sZEJyb3dzZXIgKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3NlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXJcXG51c2UgY2hyb21lLCBGaXJlRm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExJylcbn1cbnZhciBzYWZlQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKVxudmFyIHJhbmRvbWJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKVxudmFyIEJ1ZmZlciA9IHNhZmVCdWZmZXIuQnVmZmVyXG52YXIga0J1ZmZlck1heExlbmd0aCA9IHNhZmVCdWZmZXIua01heExlbmd0aFxudmFyIGNyeXB0byA9IGdsb2JhbC5jcnlwdG8gfHwgZ2xvYmFsLm1zQ3J5cHRvXG52YXIga01heFVpbnQzMiA9IE1hdGgucG93KDIsIDMyKSAtIDFcbmZ1bmN0aW9uIGFzc2VydE9mZnNldCAob2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAhPT0gb2Zmc2V0KSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb2Zmc2V0IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKG9mZnNldCA+IGtNYXhVaW50MzIgfHwgb2Zmc2V0IDwgMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29mZnNldCBtdXN0IGJlIGEgdWludDMyJylcbiAgfVxuXG4gIGlmIChvZmZzZXQgPiBrQnVmZmVyTWF4TGVuZ3RoIHx8IG9mZnNldCA+IGxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdvZmZzZXQgb3V0IG9mIHJhbmdlJylcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplLCBvZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInIHx8IHNpemUgIT09IHNpemUpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplIG11c3QgYmUgYSBudW1iZXInKVxuICB9XG5cbiAgaWYgKHNpemUgPiBrTWF4VWludDMyIHx8IHNpemUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2l6ZSBtdXN0IGJlIGEgdWludDMyJylcbiAgfVxuXG4gIGlmIChzaXplICsgb2Zmc2V0ID4gbGVuZ3RoIHx8IHNpemUgPiBrQnVmZmVyTWF4TGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2J1ZmZlciB0b28gc21hbGwnKVxuICB9XG59XG5pZiAoKGNyeXB0byAmJiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB8fCAhcHJvY2Vzcy5icm93c2VyKSB7XG4gIGV4cG9ydHMucmFuZG9tRmlsbCA9IHJhbmRvbUZpbGxcbiAgZXhwb3J0cy5yYW5kb21GaWxsU3luYyA9IHJhbmRvbUZpbGxTeW5jXG59IGVsc2Uge1xuICBleHBvcnRzLnJhbmRvbUZpbGwgPSBvbGRCcm93c2VyXG4gIGV4cG9ydHMucmFuZG9tRmlsbFN5bmMgPSBvbGRCcm93c2VyXG59XG5mdW5jdGlvbiByYW5kb21GaWxsIChidWYsIG9mZnNldCwgc2l6ZSwgY2IpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSAmJiAhKGJ1ZiBpbnN0YW5jZW9mIGdsb2JhbC5VaW50OEFycmF5KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBvciBVaW50OEFycmF5JylcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBvZmZzZXRcbiAgICBvZmZzZXQgPSAwXG4gICAgc2l6ZSA9IGJ1Zi5sZW5ndGhcbiAgfSBlbHNlIGlmICh0eXBlb2Ygc2l6ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gc2l6ZVxuICAgIHNpemUgPSBidWYubGVuZ3RoIC0gb2Zmc2V0XG4gIH0gZWxzZSBpZiAodHlwZW9mIGNiICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJjYlwiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpXG4gIH1cbiAgYXNzZXJ0T2Zmc2V0KG9mZnNldCwgYnVmLmxlbmd0aClcbiAgYXNzZXJ0U2l6ZShzaXplLCBvZmZzZXQsIGJ1Zi5sZW5ndGgpXG4gIHJldHVybiBhY3R1YWxGaWxsKGJ1Ziwgb2Zmc2V0LCBzaXplLCBjYilcbn1cblxuZnVuY3Rpb24gYWN0dWFsRmlsbCAoYnVmLCBvZmZzZXQsIHNpemUsIGNiKSB7XG4gIGlmIChwcm9jZXNzLmJyb3dzZXIpIHtcbiAgICB2YXIgb3VyQnVmID0gYnVmLmJ1ZmZlclxuICAgIHZhciB1aW50ID0gbmV3IFVpbnQ4QXJyYXkob3VyQnVmLCBvZmZzZXQsIHNpemUpXG4gICAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh1aW50KVxuICAgIGlmIChjYikge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNiKG51bGwsIGJ1ZilcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgcmV0dXJuIGJ1ZlxuICB9XG4gIGlmIChjYikge1xuICAgIHJhbmRvbWJ5dGVzKHNpemUsIGZ1bmN0aW9uIChlcnIsIGJ5dGVzKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBjYihlcnIpXG4gICAgICB9XG4gICAgICBieXRlcy5jb3B5KGJ1Ziwgb2Zmc2V0KVxuICAgICAgY2IobnVsbCwgYnVmKVxuICAgIH0pXG4gICAgcmV0dXJuXG4gIH1cbiAgdmFyIGJ5dGVzID0gcmFuZG9tYnl0ZXMoc2l6ZSlcbiAgYnl0ZXMuY29weShidWYsIG9mZnNldClcbiAgcmV0dXJuIGJ1ZlxufVxuZnVuY3Rpb24gcmFuZG9tRmlsbFN5bmMgKGJ1Ziwgb2Zmc2V0LCBzaXplKSB7XG4gIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAndW5kZWZpbmVkJykge1xuICAgIG9mZnNldCA9IDBcbiAgfVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpICYmICEoYnVmIGluc3RhbmNlb2YgZ2xvYmFsLlVpbnQ4QXJyYXkpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJidWZcIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKVxuICB9XG5cbiAgYXNzZXJ0T2Zmc2V0KG9mZnNldCwgYnVmLmxlbmd0aClcblxuICBpZiAoc2l6ZSA9PT0gdW5kZWZpbmVkKSBzaXplID0gYnVmLmxlbmd0aCAtIG9mZnNldFxuXG4gIGFzc2VydFNpemUoc2l6ZSwgb2Zmc2V0LCBidWYubGVuZ3RoKVxuXG4gIHJldHVybiBhY3R1YWxGaWxsKGJ1Ziwgb2Zmc2V0LCBzaXplKVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBfaW5oZXJpdHNMb29zZShzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MucHJvdG90eXBlKTsgc3ViQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gc3ViQ2xhc3M7IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIGNvZGVzID0ge307XG5cbmZ1bmN0aW9uIGNyZWF0ZUVycm9yVHlwZShjb2RlLCBtZXNzYWdlLCBCYXNlKSB7XG4gIGlmICghQmFzZSkge1xuICAgIEJhc2UgPSBFcnJvcjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldE1lc3NhZ2UoYXJnMSwgYXJnMiwgYXJnMykge1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbWVzc2FnZShhcmcxLCBhcmcyLCBhcmczKTtcbiAgICB9XG4gIH1cblxuICB2YXIgTm9kZUVycm9yID1cbiAgLyojX19QVVJFX18qL1xuICBmdW5jdGlvbiAoX0Jhc2UpIHtcbiAgICBfaW5oZXJpdHNMb29zZShOb2RlRXJyb3IsIF9CYXNlKTtcblxuICAgIGZ1bmN0aW9uIE5vZGVFcnJvcihhcmcxLCBhcmcyLCBhcmczKSB7XG4gICAgICByZXR1cm4gX0Jhc2UuY2FsbCh0aGlzLCBnZXRNZXNzYWdlKGFyZzEsIGFyZzIsIGFyZzMpKSB8fCB0aGlzO1xuICAgIH1cblxuICAgIHJldHVybiBOb2RlRXJyb3I7XG4gIH0oQmFzZSk7XG5cbiAgTm9kZUVycm9yLnByb3RvdHlwZS5uYW1lID0gQmFzZS5uYW1lO1xuICBOb2RlRXJyb3IucHJvdG90eXBlLmNvZGUgPSBjb2RlO1xuICBjb2Rlc1tjb2RlXSA9IE5vZGVFcnJvcjtcbn0gLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvdjEwLjguMC9saWIvaW50ZXJuYWwvZXJyb3JzLmpzXG5cblxuZnVuY3Rpb24gb25lT2YoZXhwZWN0ZWQsIHRoaW5nKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGV4cGVjdGVkKSkge1xuICAgIHZhciBsZW4gPSBleHBlY3RlZC5sZW5ndGg7XG4gICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5tYXAoZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBTdHJpbmcoaSk7XG4gICAgfSk7XG5cbiAgICBpZiAobGVuID4gMikge1xuICAgICAgcmV0dXJuIFwib25lIG9mIFwiLmNvbmNhdCh0aGluZywgXCIgXCIpLmNvbmNhdChleHBlY3RlZC5zbGljZSgwLCBsZW4gLSAxKS5qb2luKCcsICcpLCBcIiwgb3IgXCIpICsgZXhwZWN0ZWRbbGVuIC0gMV07XG4gICAgfSBlbHNlIGlmIChsZW4gPT09IDIpIHtcbiAgICAgIHJldHVybiBcIm9uZSBvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWRbMF0sIFwiIG9yIFwiKS5jb25jYXQoZXhwZWN0ZWRbMV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWRbMF0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXCJvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoU3RyaW5nKGV4cGVjdGVkKSk7XG4gIH1cbn0gLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nL3N0YXJ0c1dpdGhcblxuXG5mdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgc2VhcmNoLCBwb3MpIHtcbiAgcmV0dXJuIHN0ci5zdWJzdHIoIXBvcyB8fCBwb3MgPCAwID8gMCA6ICtwb3MsIHNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7XG59IC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9lbmRzV2l0aFxuXG5cbmZ1bmN0aW9uIGVuZHNXaXRoKHN0ciwgc2VhcmNoLCB0aGlzX2xlbikge1xuICBpZiAodGhpc19sZW4gPT09IHVuZGVmaW5lZCB8fCB0aGlzX2xlbiA+IHN0ci5sZW5ndGgpIHtcbiAgICB0aGlzX2xlbiA9IHN0ci5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gc3RyLnN1YnN0cmluZyh0aGlzX2xlbiAtIHNlYXJjaC5sZW5ndGgsIHRoaXNfbGVuKSA9PT0gc2VhcmNoO1xufSAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvaW5jbHVkZXNcblxuXG5mdW5jdGlvbiBpbmNsdWRlcyhzdHIsIHNlYXJjaCwgc3RhcnQpIHtcbiAgaWYgKHR5cGVvZiBzdGFydCAhPT0gJ251bWJlcicpIHtcbiAgICBzdGFydCA9IDA7XG4gIH1cblxuICBpZiAoc3RhcnQgKyBzZWFyY2gubGVuZ3RoID4gc3RyLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RyLmluZGV4T2Yoc2VhcmNoLCBzdGFydCkgIT09IC0xO1xuICB9XG59XG5cbmNyZWF0ZUVycm9yVHlwZSgnRVJSX0lOVkFMSURfT1BUX1ZBTFVFJywgZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG4gIHJldHVybiAnVGhlIHZhbHVlIFwiJyArIHZhbHVlICsgJ1wiIGlzIGludmFsaWQgZm9yIG9wdGlvbiBcIicgKyBuYW1lICsgJ1wiJztcbn0sIFR5cGVFcnJvcik7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9JTlZBTElEX0FSR19UWVBFJywgZnVuY3Rpb24gKG5hbWUsIGV4cGVjdGVkLCBhY3R1YWwpIHtcbiAgLy8gZGV0ZXJtaW5lcjogJ211c3QgYmUnIG9yICdtdXN0IG5vdCBiZSdcbiAgdmFyIGRldGVybWluZXI7XG5cbiAgaWYgKHR5cGVvZiBleHBlY3RlZCA9PT0gJ3N0cmluZycgJiYgc3RhcnRzV2l0aChleHBlY3RlZCwgJ25vdCAnKSkge1xuICAgIGRldGVybWluZXIgPSAnbXVzdCBub3QgYmUnO1xuICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQucmVwbGFjZSgvXm5vdCAvLCAnJyk7XG4gIH0gZWxzZSB7XG4gICAgZGV0ZXJtaW5lciA9ICdtdXN0IGJlJztcbiAgfVxuXG4gIHZhciBtc2c7XG5cbiAgaWYgKGVuZHNXaXRoKG5hbWUsICcgYXJndW1lbnQnKSkge1xuICAgIC8vIEZvciBjYXNlcyBsaWtlICdmaXJzdCBhcmd1bWVudCdcbiAgICBtc2cgPSBcIlRoZSBcIi5jb25jYXQobmFtZSwgXCIgXCIpLmNvbmNhdChkZXRlcm1pbmVyLCBcIiBcIikuY29uY2F0KG9uZU9mKGV4cGVjdGVkLCAndHlwZScpKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdHlwZSA9IGluY2x1ZGVzKG5hbWUsICcuJykgPyAncHJvcGVydHknIDogJ2FyZ3VtZW50JztcbiAgICBtc2cgPSBcIlRoZSBcXFwiXCIuY29uY2F0KG5hbWUsIFwiXFxcIiBcIikuY29uY2F0KHR5cGUsIFwiIFwiKS5jb25jYXQoZGV0ZXJtaW5lciwgXCIgXCIpLmNvbmNhdChvbmVPZihleHBlY3RlZCwgJ3R5cGUnKSk7XG4gIH1cblxuICBtc2cgKz0gXCIuIFJlY2VpdmVkIHR5cGUgXCIuY29uY2F0KHR5cGVvZiBhY3R1YWwpO1xuICByZXR1cm4gbXNnO1xufSwgVHlwZUVycm9yKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRicsICdzdHJlYW0ucHVzaCgpIGFmdGVyIEVPRicpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCcsIGZ1bmN0aW9uIChuYW1lKSB7XG4gIHJldHVybiAnVGhlICcgKyBuYW1lICsgJyBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkJztcbn0pO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRScsICdQcmVtYXR1cmUgY2xvc2UnKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX1NUUkVBTV9ERVNUUk9ZRUQnLCBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gJ0Nhbm5vdCBjYWxsICcgKyBuYW1lICsgJyBhZnRlciBhIHN0cmVhbSB3YXMgZGVzdHJveWVkJztcbn0pO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfTVVMVElQTEVfQ0FMTEJBQ0snLCAnQ2FsbGJhY2sgY2FsbGVkIG11bHRpcGxlIHRpbWVzJyk7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9TVFJFQU1fQ0FOTk9UX1BJUEUnLCAnQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZScpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCcsICd3cml0ZSBhZnRlciBlbmQnKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUycsICdNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbScsIFR5cGVFcnJvcik7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9VTktOT1dOX0VOQ09ESU5HJywgZnVuY3Rpb24gKGFyZykge1xuICByZXR1cm4gJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBhcmc7XG59LCBUeXBlRXJyb3IpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UJywgJ3N0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50Jyk7XG5tb2R1bGUuZXhwb3J0cy5jb2RlcyA9IGNvZGVzO1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4vLyBhIGR1cGxleCBzdHJlYW0gaXMganVzdCBhIHN0cmVhbSB0aGF0IGlzIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLlxuLy8gU2luY2UgSlMgZG9lc24ndCBoYXZlIG11bHRpcGxlIHByb3RvdHlwYWwgaW5oZXJpdGFuY2UsIHRoaXMgY2xhc3Ncbi8vIHByb3RvdHlwYWxseSBpbmhlcml0cyBmcm9tIFJlYWRhYmxlLCBhbmQgdGhlbiBwYXJhc2l0aWNhbGx5IGZyb21cbi8vIFdyaXRhYmxlLlxuJ3VzZSBzdHJpY3QnO1xuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciBrZXlzID0gW107XG5cbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGtleXMucHVzaChrZXkpO1xuICB9XG5cbiAgcmV0dXJuIGtleXM7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cblxubW9kdWxlLmV4cG9ydHMgPSBEdXBsZXg7XG5cbnZhciBSZWFkYWJsZSA9IHJlcXVpcmUoJy4vX3N0cmVhbV9yZWFkYWJsZScpO1xuXG52YXIgV3JpdGFibGUgPSByZXF1aXJlKCcuL19zdHJlYW1fd3JpdGFibGUnKTtcblxucmVxdWlyZSgnaW5oZXJpdHMnKShEdXBsZXgsIFJlYWRhYmxlKTtcblxue1xuICAvLyBBbGxvdyB0aGUga2V5cyBhcnJheSB0byBiZSBHQydlZC5cbiAgdmFyIGtleXMgPSBvYmplY3RLZXlzKFdyaXRhYmxlLnByb3RvdHlwZSk7XG5cbiAgZm9yICh2YXIgdiA9IDA7IHYgPCBrZXlzLmxlbmd0aDsgdisrKSB7XG4gICAgdmFyIG1ldGhvZCA9IGtleXNbdl07XG4gICAgaWYgKCFEdXBsZXgucHJvdG90eXBlW21ldGhvZF0pIER1cGxleC5wcm90b3R5cGVbbWV0aG9kXSA9IFdyaXRhYmxlLnByb3RvdHlwZVttZXRob2RdO1xuICB9XG59XG5cbmZ1bmN0aW9uIER1cGxleChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKSByZXR1cm4gbmV3IER1cGxleChvcHRpb25zKTtcbiAgUmVhZGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgV3JpdGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgdGhpcy5hbGxvd0hhbGZPcGVuID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLnJlYWRhYmxlID09PSBmYWxzZSkgdGhpcy5yZWFkYWJsZSA9IGZhbHNlO1xuICAgIGlmIChvcHRpb25zLndyaXRhYmxlID09PSBmYWxzZSkgdGhpcy53cml0YWJsZSA9IGZhbHNlO1xuXG4gICAgaWYgKG9wdGlvbnMuYWxsb3dIYWxmT3BlbiA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuYWxsb3dIYWxmT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5vbmNlKCdlbmQnLCBvbmVuZCk7XG4gICAgfVxuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLCAnd3JpdGFibGVIaWdoV2F0ZXJNYXJrJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLCAnd3JpdGFibGVCdWZmZXInLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlICYmIHRoaXMuX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyKCk7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICd3cml0YWJsZUxlbmd0aCcsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RoO1xuICB9XG59KTsgLy8gdGhlIG5vLWhhbGYtb3BlbiBlbmZvcmNlclxuXG5mdW5jdGlvbiBvbmVuZCgpIHtcbiAgLy8gSWYgdGhlIHdyaXRhYmxlIHNpZGUgZW5kZWQsIHRoZW4gd2UncmUgb2suXG4gIGlmICh0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkKSByZXR1cm47IC8vIG5vIG1vcmUgZGF0YSBjYW4gYmUgd3JpdHRlbi5cbiAgLy8gQnV0IGFsbG93IG1vcmUgd3JpdGVzIHRvIGhhcHBlbiBpbiB0aGlzIHRpY2suXG5cbiAgcHJvY2Vzcy5uZXh0VGljayhvbkVuZE5ULCB0aGlzKTtcbn1cblxuZnVuY3Rpb24gb25FbmROVChzZWxmKSB7XG4gIHNlbGYuZW5kKCk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLCAnZGVzdHJveWVkJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCAmJiB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAvLyB3ZSBpZ25vcmUgdGhlIHZhbHVlIGlmIHRoZSBzdHJlYW1cbiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRoZSB1c2VyIGlzIGV4cGxpY2l0bHlcbiAgICAvLyBtYW5hZ2luZyBkZXN0cm95ZWRcblxuXG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTsiLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbi8vIGEgcGFzc3Rocm91Z2ggc3RyZWFtLlxuLy8gYmFzaWNhbGx5IGp1c3QgdGhlIG1vc3QgbWluaW1hbCBzb3J0IG9mIFRyYW5zZm9ybSBzdHJlYW0uXG4vLyBFdmVyeSB3cml0dGVuIGNodW5rIGdldHMgb3V0cHV0IGFzLWlzLlxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhc3NUaHJvdWdoO1xuXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9fc3RyZWFtX3RyYW5zZm9ybScpO1xuXG5yZXF1aXJlKCdpbmhlcml0cycpKFBhc3NUaHJvdWdoLCBUcmFuc2Zvcm0pO1xuXG5mdW5jdGlvbiBQYXNzVGhyb3VnaChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQYXNzVGhyb3VnaCkpIHJldHVybiBuZXcgUGFzc1Rocm91Z2gob3B0aW9ucyk7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xufVxuXG5QYXNzVGhyb3VnaC5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIGNiKG51bGwsIGNodW5rKTtcbn07IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhZGFibGU7XG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgRHVwbGV4O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cblJlYWRhYmxlLlJlYWRhYmxlU3RhdGUgPSBSZWFkYWJsZVN0YXRlO1xuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEVFID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xuXG52YXIgRUVsaXN0ZW5lckNvdW50ID0gZnVuY3Rpb24gRUVsaXN0ZW5lckNvdW50KGVtaXR0ZXIsIHR5cGUpIHtcbiAgcmV0dXJuIGVtaXR0ZXIubGlzdGVuZXJzKHR5cGUpLmxlbmd0aDtcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxuXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcblxudmFyIE91clVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheSB8fCBmdW5jdGlvbiAoKSB7fTtcblxuZnVuY3Rpb24gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuaykge1xuICByZXR1cm4gQnVmZmVyLmZyb20oY2h1bmspO1xufVxuXG5mdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikge1xuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKG9iaikgfHwgb2JqIGluc3RhbmNlb2YgT3VyVWludDhBcnJheTtcbn1cbi8qPHJlcGxhY2VtZW50PiovXG5cblxudmFyIGRlYnVnVXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxudmFyIGRlYnVnO1xuXG5pZiAoZGVidWdVdGlsICYmIGRlYnVnVXRpbC5kZWJ1Z2xvZykge1xuICBkZWJ1ZyA9IGRlYnVnVXRpbC5kZWJ1Z2xvZygnc3RyZWFtJyk7XG59IGVsc2Uge1xuICBkZWJ1ZyA9IGZ1bmN0aW9uIGRlYnVnKCkge307XG59XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuXG52YXIgQnVmZmVyTGlzdCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9idWZmZXJfbGlzdCcpO1xuXG52YXIgZGVzdHJveUltcGwgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveScpO1xuXG52YXIgX3JlcXVpcmUgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvc3RhdGUnKSxcbiAgICBnZXRIaWdoV2F0ZXJNYXJrID0gX3JlcXVpcmUuZ2V0SGlnaFdhdGVyTWFyaztcblxudmFyIF9yZXF1aXJlJGNvZGVzID0gcmVxdWlyZSgnLi4vZXJyb3JzJykuY29kZXMsXG4gICAgRVJSX0lOVkFMSURfQVJHX1RZUEUgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfSU5WQUxJRF9BUkdfVFlQRSxcbiAgICBFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GID0gX3JlcXVpcmUkY29kZXMuRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRixcbiAgICBFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCA9IF9yZXF1aXJlJGNvZGVzLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELFxuICAgIEVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UOyAvLyBMYXp5IGxvYWRlZCB0byBpbXByb3ZlIHRoZSBzdGFydHVwIHBlcmZvcm1hbmNlLlxuXG5cbnZhciBTdHJpbmdEZWNvZGVyO1xudmFyIGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvcjtcbnZhciBmcm9tO1xuXG5yZXF1aXJlKCdpbmhlcml0cycpKFJlYWRhYmxlLCBTdHJlYW0pO1xuXG52YXIgZXJyb3JPckRlc3Ryb3kgPSBkZXN0cm95SW1wbC5lcnJvck9yRGVzdHJveTtcbnZhciBrUHJveHlFdmVudHMgPSBbJ2Vycm9yJywgJ2Nsb3NlJywgJ2Rlc3Ryb3knLCAncGF1c2UnLCAncmVzdW1lJ107XG5cbmZ1bmN0aW9uIHByZXBlbmRMaXN0ZW5lcihlbWl0dGVyLCBldmVudCwgZm4pIHtcbiAgLy8gU2FkbHkgdGhpcyBpcyBub3QgY2FjaGVhYmxlIGFzIHNvbWUgbGlicmFyaWVzIGJ1bmRsZSB0aGVpciBvd25cbiAgLy8gZXZlbnQgZW1pdHRlciBpbXBsZW1lbnRhdGlvbiB3aXRoIHRoZW0uXG4gIGlmICh0eXBlb2YgZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHJldHVybiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lcihldmVudCwgZm4pOyAvLyBUaGlzIGlzIGEgaGFjayB0byBtYWtlIHN1cmUgdGhhdCBvdXIgZXJyb3IgaGFuZGxlciBpcyBhdHRhY2hlZCBiZWZvcmUgYW55XG4gIC8vIHVzZXJsYW5kIG9uZXMuICBORVZFUiBETyBUSElTLiBUaGlzIGlzIGhlcmUgb25seSBiZWNhdXNlIHRoaXMgY29kZSBuZWVkc1xuICAvLyB0byBjb250aW51ZSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgTm9kZS5qcyB0aGF0IGRvIG5vdCBpbmNsdWRlXG4gIC8vIHRoZSBwcmVwZW5kTGlzdGVuZXIoKSBtZXRob2QuIFRoZSBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgcmVtb3ZlIHRoaXMgaGFjay5cblxuICBpZiAoIWVtaXR0ZXIuX2V2ZW50cyB8fCAhZW1pdHRlci5fZXZlbnRzW2V2ZW50XSkgZW1pdHRlci5vbihldmVudCwgZm4pO2Vsc2UgaWYgKEFycmF5LmlzQXJyYXkoZW1pdHRlci5fZXZlbnRzW2V2ZW50XSkpIGVtaXR0ZXIuX2V2ZW50c1tldmVudF0udW5zaGlmdChmbik7ZWxzZSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdID0gW2ZuLCBlbWl0dGVyLl9ldmVudHNbZXZlbnRdXTtcbn1cblxuZnVuY3Rpb24gUmVhZGFibGVTdGF0ZShvcHRpb25zLCBzdHJlYW0sIGlzRHVwbGV4KSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OyAvLyBEdXBsZXggc3RyZWFtcyBhcmUgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUsIGJ1dCBzaGFyZVxuICAvLyB0aGUgc2FtZSBvcHRpb25zIG9iamVjdC5cbiAgLy8gSG93ZXZlciwgc29tZSBjYXNlcyByZXF1aXJlIHNldHRpbmcgb3B0aW9ucyB0byBkaWZmZXJlbnRcbiAgLy8gdmFsdWVzIGZvciB0aGUgcmVhZGFibGUgYW5kIHRoZSB3cml0YWJsZSBzaWRlcyBvZiB0aGUgZHVwbGV4IHN0cmVhbS5cbiAgLy8gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgcHJvdmlkZWQgc2VwYXJhdGVseSBhcyByZWFkYWJsZVhYWCBhbmQgd3JpdGFibGVYWFguXG5cbiAgaWYgKHR5cGVvZiBpc0R1cGxleCAhPT0gJ2Jvb2xlYW4nKSBpc0R1cGxleCA9IHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleDsgLy8gb2JqZWN0IHN0cmVhbSBmbGFnLiBVc2VkIHRvIG1ha2UgcmVhZChuKSBpZ25vcmUgbiBhbmQgdG9cbiAgLy8gbWFrZSBhbGwgdGhlIGJ1ZmZlciBtZXJnaW5nIGFuZCBsZW5ndGggY2hlY2tzIGdvIGF3YXlcblxuICB0aGlzLm9iamVjdE1vZGUgPSAhIW9wdGlvbnMub2JqZWN0TW9kZTtcbiAgaWYgKGlzRHVwbGV4KSB0aGlzLm9iamVjdE1vZGUgPSB0aGlzLm9iamVjdE1vZGUgfHwgISFvcHRpb25zLnJlYWRhYmxlT2JqZWN0TW9kZTsgLy8gdGhlIHBvaW50IGF0IHdoaWNoIGl0IHN0b3BzIGNhbGxpbmcgX3JlYWQoKSB0byBmaWxsIHRoZSBidWZmZXJcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyBcImRvbid0IGNhbGwgX3JlYWQgcHJlZW1wdGl2ZWx5IGV2ZXJcIlxuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IGdldEhpZ2hXYXRlck1hcmsodGhpcywgb3B0aW9ucywgJ3JlYWRhYmxlSGlnaFdhdGVyTWFyaycsIGlzRHVwbGV4KTsgLy8gQSBsaW5rZWQgbGlzdCBpcyB1c2VkIHRvIHN0b3JlIGRhdGEgY2h1bmtzIGluc3RlYWQgb2YgYW4gYXJyYXkgYmVjYXVzZSB0aGVcbiAgLy8gbGlua2VkIGxpc3QgY2FuIHJlbW92ZSBlbGVtZW50cyBmcm9tIHRoZSBiZWdpbm5pbmcgZmFzdGVyIHRoYW5cbiAgLy8gYXJyYXkuc2hpZnQoKVxuXG4gIHRoaXMuYnVmZmVyID0gbmV3IEJ1ZmZlckxpc3QoKTtcbiAgdGhpcy5sZW5ndGggPSAwO1xuICB0aGlzLnBpcGVzID0gbnVsbDtcbiAgdGhpcy5waXBlc0NvdW50ID0gMDtcbiAgdGhpcy5mbG93aW5nID0gbnVsbDtcbiAgdGhpcy5lbmRlZCA9IGZhbHNlO1xuICB0aGlzLmVuZEVtaXR0ZWQgPSBmYWxzZTtcbiAgdGhpcy5yZWFkaW5nID0gZmFsc2U7IC8vIGEgZmxhZyB0byBiZSBhYmxlIHRvIHRlbGwgaWYgdGhlIGV2ZW50ICdyZWFkYWJsZScvJ2RhdGEnIGlzIGVtaXR0ZWRcbiAgLy8gaW1tZWRpYXRlbHksIG9yIG9uIGEgbGF0ZXIgdGljay4gIFdlIHNldCB0aGlzIHRvIHRydWUgYXQgZmlyc3QsIGJlY2F1c2VcbiAgLy8gYW55IGFjdGlvbnMgdGhhdCBzaG91bGRuJ3QgaGFwcGVuIHVudGlsIFwibGF0ZXJcIiBzaG91bGQgZ2VuZXJhbGx5IGFsc29cbiAgLy8gbm90IGhhcHBlbiBiZWZvcmUgdGhlIGZpcnN0IHJlYWQgY2FsbC5cblxuICB0aGlzLnN5bmMgPSB0cnVlOyAvLyB3aGVuZXZlciB3ZSByZXR1cm4gbnVsbCwgdGhlbiB3ZSBzZXQgYSBmbGFnIHRvIHNheVxuICAvLyB0aGF0IHdlJ3JlIGF3YWl0aW5nIGEgJ3JlYWRhYmxlJyBldmVudCBlbWlzc2lvbi5cblxuICB0aGlzLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICB0aGlzLnJlYWRhYmxlTGlzdGVuaW5nID0gZmFsc2U7XG4gIHRoaXMucmVzdW1lU2NoZWR1bGVkID0gZmFsc2U7XG4gIHRoaXMucGF1c2VkID0gdHJ1ZTsgLy8gU2hvdWxkIGNsb3NlIGJlIGVtaXR0ZWQgb24gZGVzdHJveS4gRGVmYXVsdHMgdG8gdHJ1ZS5cblxuICB0aGlzLmVtaXRDbG9zZSA9IG9wdGlvbnMuZW1pdENsb3NlICE9PSBmYWxzZTsgLy8gU2hvdWxkIC5kZXN0cm95KCkgYmUgY2FsbGVkIGFmdGVyICdlbmQnIChhbmQgcG90ZW50aWFsbHkgJ2ZpbmlzaCcpXG5cbiAgdGhpcy5hdXRvRGVzdHJveSA9ICEhb3B0aW9ucy5hdXRvRGVzdHJveTsgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkXG5cbiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTsgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cblxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JzsgLy8gdGhlIG51bWJlciBvZiB3cml0ZXJzIHRoYXQgYXJlIGF3YWl0aW5nIGEgZHJhaW4gZXZlbnQgaW4gLnBpcGUoKXNcblxuICB0aGlzLmF3YWl0RHJhaW4gPSAwOyAvLyBpZiB0cnVlLCBhIG1heWJlUmVhZE1vcmUgaGFzIGJlZW4gc2NoZWR1bGVkXG5cbiAgdGhpcy5yZWFkaW5nTW9yZSA9IGZhbHNlO1xuICB0aGlzLmRlY29kZXIgPSBudWxsO1xuICB0aGlzLmVuY29kaW5nID0gbnVsbDtcblxuICBpZiAob3B0aW9ucy5lbmNvZGluZykge1xuICAgIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gICAgdGhpcy5kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIob3B0aW9ucy5lbmNvZGluZyk7XG4gICAgdGhpcy5lbmNvZGluZyA9IG9wdGlvbnMuZW5jb2Rpbmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gUmVhZGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVhZGFibGUpKSByZXR1cm4gbmV3IFJlYWRhYmxlKG9wdGlvbnMpOyAvLyBDaGVja2luZyBmb3IgYSBTdHJlYW0uRHVwbGV4IGluc3RhbmNlIGlzIGZhc3RlciBoZXJlIGluc3RlYWQgb2YgaW5zaWRlXG4gIC8vIHRoZSBSZWFkYWJsZVN0YXRlIGNvbnN0cnVjdG9yLCBhdCBsZWFzdCB3aXRoIFY4IDYuNVxuXG4gIHZhciBpc0R1cGxleCA9IHRoaXMgaW5zdGFuY2VvZiBEdXBsZXg7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUgPSBuZXcgUmVhZGFibGVTdGF0ZShvcHRpb25zLCB0aGlzLCBpc0R1cGxleCk7IC8vIGxlZ2FjeVxuXG4gIHRoaXMucmVhZGFibGUgPSB0cnVlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnJlYWQgPT09ICdmdW5jdGlvbicpIHRoaXMuX3JlYWQgPSBvcHRpb25zLnJlYWQ7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHRoaXMuX2Rlc3Ryb3kgPSBvcHRpb25zLmRlc3Ryb3k7XG4gIH1cblxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ2Rlc3Ryb3llZCcsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAvLyB3ZSBpZ25vcmUgdGhlIHZhbHVlIGlmIHRoZSBzdHJlYW1cbiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG4gICAgaWYgKCF0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG5cblxuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7XG4gIH1cbn0pO1xuUmVhZGFibGUucHJvdG90eXBlLmRlc3Ryb3kgPSBkZXN0cm95SW1wbC5kZXN0cm95O1xuUmVhZGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3kgPSBkZXN0cm95SW1wbC51bmRlc3Ryb3k7XG5cblJlYWRhYmxlLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIGNiKGVycik7XG59OyAvLyBNYW51YWxseSBzaG92ZSBzb21ldGhpbmcgaW50byB0aGUgcmVhZCgpIGJ1ZmZlci5cbi8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIHRoZSBoaWdoV2F0ZXJNYXJrIGhhcyBub3QgYmVlbiBoaXQgeWV0LFxuLy8gc2ltaWxhciB0byBob3cgV3JpdGFibGUud3JpdGUoKSByZXR1cm5zIHRydWUgaWYgeW91IHNob3VsZFxuLy8gd3JpdGUoKSBzb21lIG1vcmUuXG5cblxuUmVhZGFibGUucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBza2lwQ2h1bmtDaGVjaztcblxuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBpZiAodHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmNvZGluZyB8fCBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG5cbiAgICAgIGlmIChlbmNvZGluZyAhPT0gc3RhdGUuZW5jb2RpbmcpIHtcbiAgICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpO1xuICAgICAgICBlbmNvZGluZyA9ICcnO1xuICAgICAgfVxuXG4gICAgICBza2lwQ2h1bmtDaGVjayA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHNraXBDaHVua0NoZWNrID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBlbmNvZGluZywgZmFsc2UsIHNraXBDaHVua0NoZWNrKTtcbn07IC8vIFVuc2hpZnQgc2hvdWxkICphbHdheXMqIGJlIHNvbWV0aGluZyBkaXJlY3RseSBvdXQgb2YgcmVhZCgpXG5cblxuUmVhZGFibGUucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgcmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcywgY2h1bmssIG51bGwsIHRydWUsIGZhbHNlKTtcbn07XG5cbmZ1bmN0aW9uIHJlYWRhYmxlQWRkQ2h1bmsoc3RyZWFtLCBjaHVuaywgZW5jb2RpbmcsIGFkZFRvRnJvbnQsIHNraXBDaHVua0NoZWNrKSB7XG4gIGRlYnVnKCdyZWFkYWJsZUFkZENodW5rJywgY2h1bmspO1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG5cbiAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGVyO1xuICAgIGlmICghc2tpcENodW5rQ2hlY2spIGVyID0gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuayk7XG5cbiAgICBpZiAoZXIpIHtcbiAgICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXIpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUub2JqZWN0TW9kZSB8fCBjaHVuayAmJiBjaHVuay5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAodHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiAhc3RhdGUub2JqZWN0TW9kZSAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoY2h1bmspICE9PSBCdWZmZXIucHJvdG90eXBlKSB7XG4gICAgICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhZGRUb0Zyb250KSB7XG4gICAgICAgIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBlcnJvck9yRGVzdHJveShzdHJlYW0sIG5ldyBFUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UKCkpO2Vsc2UgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIHRydWUpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5lbmRlZCkge1xuICAgICAgICBlcnJvck9yRGVzdHJveShzdHJlYW0sIG5ldyBFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GKCkpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5kZXN0cm95ZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChzdGF0ZS5kZWNvZGVyICYmICFlbmNvZGluZykge1xuICAgICAgICAgIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG4gICAgICAgICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgfHwgY2h1bmsubGVuZ3RoICE9PSAwKSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpO2Vsc2UgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghYWRkVG9Gcm9udCkge1xuICAgICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgICAgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKTtcbiAgICB9XG4gIH0gLy8gV2UgY2FuIHB1c2ggbW9yZSBkYXRhIGlmIHdlIGFyZSBiZWxvdyB0aGUgaGlnaFdhdGVyTWFyay5cbiAgLy8gQWxzbywgaWYgd2UgaGF2ZSBubyBkYXRhIHlldCwgd2UgY2FuIHN0YW5kIHNvbWUgbW9yZSBieXRlcy5cbiAgLy8gVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBjYXNlcyB3aGVyZSBod209MCwgc3VjaCBhcyB0aGUgcmVwbC5cblxuXG4gIHJldHVybiAhc3RhdGUuZW5kZWQgJiYgKHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUubGVuZ3RoID09PSAwKTtcbn1cblxuZnVuY3Rpb24gYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGFkZFRvRnJvbnQpIHtcbiAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmICFzdGF0ZS5zeW5jKSB7XG4gICAgc3RhdGUuYXdhaXREcmFpbiA9IDA7XG4gICAgc3RyZWFtLmVtaXQoJ2RhdGEnLCBjaHVuayk7XG4gIH0gZWxzZSB7XG4gICAgLy8gdXBkYXRlIHRoZSBidWZmZXIgaW5mby5cbiAgICBzdGF0ZS5sZW5ndGggKz0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG4gICAgaWYgKGFkZFRvRnJvbnQpIHN0YXRlLmJ1ZmZlci51bnNoaWZ0KGNodW5rKTtlbHNlIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKTtcbiAgICBpZiAoc3RhdGUubmVlZFJlYWRhYmxlKSBlbWl0UmVhZGFibGUoc3RyZWFtKTtcbiAgfVxuXG4gIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspIHtcbiAgdmFyIGVyO1xuXG4gIGlmICghX2lzVWludDhBcnJheShjaHVuaykgJiYgdHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiBjaHVuayAhPT0gdW5kZWZpbmVkICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgZXIgPSBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ2NodW5rJywgWydzdHJpbmcnLCAnQnVmZmVyJywgJ1VpbnQ4QXJyYXknXSwgY2h1bmspO1xuICB9XG5cbiAgcmV0dXJuIGVyO1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUuaXNQYXVzZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPT09IGZhbHNlO1xufTsgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5cblxuUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nID0gZnVuY3Rpb24gKGVuYykge1xuICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICB2YXIgZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKGVuYyk7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2RlciA9IGRlY29kZXI7IC8vIElmIHNldEVuY29kaW5nKG51bGwpLCBkZWNvZGVyLmVuY29kaW5nIGVxdWFscyB1dGY4XG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZyA9IHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2Rlci5lbmNvZGluZzsgLy8gSXRlcmF0ZSBvdmVyIGN1cnJlbnQgYnVmZmVyIHRvIGNvbnZlcnQgYWxyZWFkeSBzdG9yZWQgQnVmZmVyczpcblxuICB2YXIgcCA9IHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmhlYWQ7XG4gIHZhciBjb250ZW50ID0gJyc7XG5cbiAgd2hpbGUgKHAgIT09IG51bGwpIHtcbiAgICBjb250ZW50ICs9IGRlY29kZXIud3JpdGUocC5kYXRhKTtcbiAgICBwID0gcC5uZXh0O1xuICB9XG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXIuY2xlYXIoKTtcblxuICBpZiAoY29udGVudCAhPT0gJycpIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLnB1c2goY29udGVudCk7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RoID0gY29udGVudC5sZW5ndGg7XG4gIHJldHVybiB0aGlzO1xufTsgLy8gRG9uJ3QgcmFpc2UgdGhlIGh3bSA+IDFHQlxuXG5cbnZhciBNQVhfSFdNID0gMHg0MDAwMDAwMDtcblxuZnVuY3Rpb24gY29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsobikge1xuICBpZiAobiA+PSBNQVhfSFdNKSB7XG4gICAgLy8gVE9ETyhyb25hZyk6IFRocm93IEVSUl9WQUxVRV9PVVRfT0ZfUkFOR0UuXG4gICAgbiA9IE1BWF9IV007XG4gIH0gZWxzZSB7XG4gICAgLy8gR2V0IHRoZSBuZXh0IGhpZ2hlc3QgcG93ZXIgb2YgMiB0byBwcmV2ZW50IGluY3JlYXNpbmcgaHdtIGV4Y2Vzc2l2ZWx5IGluXG4gICAgLy8gdGlueSBhbW91bnRzXG4gICAgbi0tO1xuICAgIG4gfD0gbiA+Pj4gMTtcbiAgICBuIHw9IG4gPj4+IDI7XG4gICAgbiB8PSBuID4+PiA0O1xuICAgIG4gfD0gbiA+Pj4gODtcbiAgICBuIHw9IG4gPj4+IDE2O1xuICAgIG4rKztcbiAgfVxuXG4gIHJldHVybiBuO1xufSAvLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cblxuXG5mdW5jdGlvbiBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKSB7XG4gIGlmIChuIDw9IDAgfHwgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSByZXR1cm4gMDtcbiAgaWYgKHN0YXRlLm9iamVjdE1vZGUpIHJldHVybiAxO1xuXG4gIGlmIChuICE9PSBuKSB7XG4gICAgLy8gT25seSBmbG93IG9uZSBidWZmZXIgYXQgYSB0aW1lXG4gICAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoKSByZXR1cm4gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg7ZWxzZSByZXR1cm4gc3RhdGUubGVuZ3RoO1xuICB9IC8vIElmIHdlJ3JlIGFza2luZyBmb3IgbW9yZSB0aGFuIHRoZSBjdXJyZW50IGh3bSwgdGhlbiByYWlzZSB0aGUgaHdtLlxuXG5cbiAgaWYgKG4gPiBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSBzdGF0ZS5oaWdoV2F0ZXJNYXJrID0gY29tcHV0ZU5ld0hpZ2hXYXRlck1hcmsobik7XG4gIGlmIChuIDw9IHN0YXRlLmxlbmd0aCkgcmV0dXJuIG47IC8vIERvbid0IGhhdmUgZW5vdWdoXG5cbiAgaWYgKCFzdGF0ZS5lbmRlZCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gc3RhdGUubGVuZ3RoO1xufSAvLyB5b3UgY2FuIG92ZXJyaWRlIGVpdGhlciB0aGlzIG1ldGhvZCwgb3IgdGhlIGFzeW5jIF9yZWFkKG4pIGJlbG93LlxuXG5cblJlYWRhYmxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgZGVidWcoJ3JlYWQnLCBuKTtcbiAgbiA9IHBhcnNlSW50KG4sIDEwKTtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIG5PcmlnID0gbjtcbiAgaWYgKG4gIT09IDApIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlOyAvLyBpZiB3ZSdyZSBkb2luZyByZWFkKDApIHRvIHRyaWdnZXIgYSByZWFkYWJsZSBldmVudCwgYnV0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhIGJ1bmNoIG9mIGRhdGEgaW4gdGhlIGJ1ZmZlciwgdGhlbiBqdXN0IHRyaWdnZXJcbiAgLy8gdGhlICdyZWFkYWJsZScgZXZlbnQgYW5kIG1vdmUgb24uXG5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUubmVlZFJlYWRhYmxlICYmICgoc3RhdGUuaGlnaFdhdGVyTWFyayAhPT0gMCA/IHN0YXRlLmxlbmd0aCA+PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrIDogc3RhdGUubGVuZ3RoID4gMCkgfHwgc3RhdGUuZW5kZWQpKSB7XG4gICAgZGVidWcoJ3JlYWQ6IGVtaXRSZWFkYWJsZScsIHN0YXRlLmxlbmd0aCwgc3RhdGUuZW5kZWQpO1xuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpO2Vsc2UgZW1pdFJlYWRhYmxlKHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbiA9IGhvd011Y2hUb1JlYWQobiwgc3RhdGUpOyAvLyBpZiB3ZSd2ZSBlbmRlZCwgYW5kIHdlJ3JlIG5vdyBjbGVhciwgdGhlbiBmaW5pc2ggaXQgdXAuXG5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUuZW5kZWQpIHtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBlbmRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSAvLyBBbGwgdGhlIGFjdHVhbCBjaHVuayBnZW5lcmF0aW9uIGxvZ2ljIG5lZWRzIHRvIGJlXG4gIC8vICpiZWxvdyogdGhlIGNhbGwgdG8gX3JlYWQuICBUaGUgcmVhc29uIGlzIHRoYXQgaW4gY2VydGFpblxuICAvLyBzeW50aGV0aWMgc3RyZWFtIGNhc2VzLCBzdWNoIGFzIHBhc3N0aHJvdWdoIHN0cmVhbXMsIF9yZWFkXG4gIC8vIG1heSBiZSBhIGNvbXBsZXRlbHkgc3luY2hyb25vdXMgb3BlcmF0aW9uIHdoaWNoIG1heSBjaGFuZ2VcbiAgLy8gdGhlIHN0YXRlIG9mIHRoZSByZWFkIGJ1ZmZlciwgcHJvdmlkaW5nIGVub3VnaCBkYXRhIHdoZW5cbiAgLy8gYmVmb3JlIHRoZXJlIHdhcyAqbm90KiBlbm91Z2guXG4gIC8vXG4gIC8vIFNvLCB0aGUgc3RlcHMgYXJlOlxuICAvLyAxLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHN0YXRlIG9mIHRoaW5ncyB3aWxsIGJlIGFmdGVyIHdlIGRvXG4gIC8vIGEgcmVhZCBmcm9tIHRoZSBidWZmZXIuXG4gIC8vXG4gIC8vIDIuIElmIHRoYXQgcmVzdWx0aW5nIHN0YXRlIHdpbGwgdHJpZ2dlciBhIF9yZWFkLCB0aGVuIGNhbGwgX3JlYWQuXG4gIC8vIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBhc3luY2hyb25vdXMsIG9yIHN5bmNocm9ub3VzLiAgWWVzLCBpdCBpc1xuICAvLyBkZWVwbHkgdWdseSB0byB3cml0ZSBBUElzIHRoaXMgd2F5LCBidXQgdGhhdCBzdGlsbCBkb2Vzbid0IG1lYW5cbiAgLy8gdGhhdCB0aGUgUmVhZGFibGUgY2xhc3Mgc2hvdWxkIGJlaGF2ZSBpbXByb3Blcmx5LCBhcyBzdHJlYW1zIGFyZVxuICAvLyBkZXNpZ25lZCB0byBiZSBzeW5jL2FzeW5jIGFnbm9zdGljLlxuICAvLyBUYWtlIG5vdGUgaWYgdGhlIF9yZWFkIGNhbGwgaXMgc3luYyBvciBhc3luYyAoaWUsIGlmIHRoZSByZWFkIGNhbGxcbiAgLy8gaGFzIHJldHVybmVkIHlldCksIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyIG9yIG5vdCBpdCdzIHNhZmUgdG8gZW1pdFxuICAvLyAncmVhZGFibGUnIGV0Yy5cbiAgLy9cbiAgLy8gMy4gQWN0dWFsbHkgcHVsbCB0aGUgcmVxdWVzdGVkIGNodW5rcyBvdXQgb2YgdGhlIGJ1ZmZlciBhbmQgcmV0dXJuLlxuICAvLyBpZiB3ZSBuZWVkIGEgcmVhZGFibGUgZXZlbnQsIHRoZW4gd2UgbmVlZCB0byBkbyBzb21lIHJlYWRpbmcuXG5cblxuICB2YXIgZG9SZWFkID0gc3RhdGUubmVlZFJlYWRhYmxlO1xuICBkZWJ1ZygnbmVlZCByZWFkYWJsZScsIGRvUmVhZCk7IC8vIGlmIHdlIGN1cnJlbnRseSBoYXZlIGxlc3MgdGhhbiB0aGUgaGlnaFdhdGVyTWFyaywgdGhlbiBhbHNvIHJlYWQgc29tZVxuXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgfHwgc3RhdGUubGVuZ3RoIC0gbiA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHtcbiAgICBkb1JlYWQgPSB0cnVlO1xuICAgIGRlYnVnKCdsZW5ndGggbGVzcyB0aGFuIHdhdGVybWFyaycsIGRvUmVhZCk7XG4gIH0gLy8gaG93ZXZlciwgaWYgd2UndmUgZW5kZWQsIHRoZW4gdGhlcmUncyBubyBwb2ludCwgYW5kIGlmIHdlJ3JlIGFscmVhZHlcbiAgLy8gcmVhZGluZywgdGhlbiBpdCdzIHVubmVjZXNzYXJ5LlxuXG5cbiAgaWYgKHN0YXRlLmVuZGVkIHx8IHN0YXRlLnJlYWRpbmcpIHtcbiAgICBkb1JlYWQgPSBmYWxzZTtcbiAgICBkZWJ1ZygncmVhZGluZyBvciBlbmRlZCcsIGRvUmVhZCk7XG4gIH0gZWxzZSBpZiAoZG9SZWFkKSB7XG4gICAgZGVidWcoJ2RvIHJlYWQnKTtcbiAgICBzdGF0ZS5yZWFkaW5nID0gdHJ1ZTtcbiAgICBzdGF0ZS5zeW5jID0gdHJ1ZTsgLy8gaWYgdGhlIGxlbmd0aCBpcyBjdXJyZW50bHkgemVybywgdGhlbiB3ZSAqbmVlZCogYSByZWFkYWJsZSBldmVudC5cblxuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7IC8vIGNhbGwgaW50ZXJuYWwgcmVhZCBtZXRob2RcblxuICAgIHRoaXMuX3JlYWQoc3RhdGUuaGlnaFdhdGVyTWFyayk7XG5cbiAgICBzdGF0ZS5zeW5jID0gZmFsc2U7IC8vIElmIF9yZWFkIHB1c2hlZCBkYXRhIHN5bmNocm9ub3VzbHksIHRoZW4gYHJlYWRpbmdgIHdpbGwgYmUgZmFsc2UsXG4gICAgLy8gYW5kIHdlIG5lZWQgdG8gcmUtZXZhbHVhdGUgaG93IG11Y2ggZGF0YSB3ZSBjYW4gcmV0dXJuIHRvIHRoZSB1c2VyLlxuXG4gICAgaWYgKCFzdGF0ZS5yZWFkaW5nKSBuID0gaG93TXVjaFRvUmVhZChuT3JpZywgc3RhdGUpO1xuICB9XG5cbiAgdmFyIHJldDtcbiAgaWYgKG4gPiAwKSByZXQgPSBmcm9tTGlzdChuLCBzdGF0ZSk7ZWxzZSByZXQgPSBudWxsO1xuXG4gIGlmIChyZXQgPT09IG51bGwpIHtcbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSBzdGF0ZS5sZW5ndGggPD0gc3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgICBuID0gMDtcbiAgfSBlbHNlIHtcbiAgICBzdGF0ZS5sZW5ndGggLT0gbjtcbiAgICBzdGF0ZS5hd2FpdERyYWluID0gMDtcbiAgfVxuXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICAvLyBJZiB3ZSBoYXZlIG5vdGhpbmcgaW4gdGhlIGJ1ZmZlciwgdGhlbiB3ZSB3YW50IHRvIGtub3dcbiAgICAvLyBhcyBzb29uIGFzIHdlICpkbyogZ2V0IHNvbWV0aGluZyBpbnRvIHRoZSBidWZmZXIuXG4gICAgaWYgKCFzdGF0ZS5lbmRlZCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTsgLy8gSWYgd2UgdHJpZWQgdG8gcmVhZCgpIHBhc3QgdGhlIEVPRiwgdGhlbiBlbWl0IGVuZCBvbiB0aGUgbmV4dCB0aWNrLlxuXG4gICAgaWYgKG5PcmlnICE9PSBuICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtcbiAgfVxuXG4gIGlmIChyZXQgIT09IG51bGwpIHRoaXMuZW1pdCgnZGF0YScsIHJldCk7XG4gIHJldHVybiByZXQ7XG59O1xuXG5mdW5jdGlvbiBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpIHtcbiAgZGVidWcoJ29uRW9mQ2h1bmsnKTtcbiAgaWYgKHN0YXRlLmVuZGVkKSByZXR1cm47XG5cbiAgaWYgKHN0YXRlLmRlY29kZXIpIHtcbiAgICB2YXIgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLmVuZCgpO1xuXG4gICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkge1xuICAgICAgc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLmVuZGVkID0gdHJ1ZTtcblxuICBpZiAoc3RhdGUuc3luYykge1xuICAgIC8vIGlmIHdlIGFyZSBzeW5jLCB3YWl0IHVudGlsIG5leHQgdGljayB0byBlbWl0IHRoZSBkYXRhLlxuICAgIC8vIE90aGVyd2lzZSB3ZSByaXNrIGVtaXR0aW5nIGRhdGEgaW4gdGhlIGZsb3coKVxuICAgIC8vIHRoZSByZWFkYWJsZSBjb2RlIHRyaWdnZXJzIGR1cmluZyBhIHJlYWQoKSBjYWxsXG4gICAgZW1pdFJlYWRhYmxlKHN0cmVhbSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gZW1pdCAncmVhZGFibGUnIG5vdyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBwaWNrZWQgdXAuXG4gICAgc3RhdGUubmVlZFJlYWRhYmxlID0gZmFsc2U7XG5cbiAgICBpZiAoIXN0YXRlLmVtaXR0ZWRSZWFkYWJsZSkge1xuICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAgIGVtaXRSZWFkYWJsZV8oc3RyZWFtKTtcbiAgICB9XG4gIH1cbn0gLy8gRG9uJ3QgZW1pdCByZWFkYWJsZSByaWdodCBhd2F5IGluIHN5bmMgbW9kZSwgYmVjYXVzZSB0aGlzIGNhbiB0cmlnZ2VyXG4vLyBhbm90aGVyIHJlYWQoKSBjYWxsID0+IHN0YWNrIG92ZXJmbG93LiAgVGhpcyB3YXksIGl0IG1pZ2h0IHRyaWdnZXJcbi8vIGEgbmV4dFRpY2sgcmVjdXJzaW9uIHdhcm5pbmcsIGJ1dCB0aGF0J3Mgbm90IHNvIGJhZC5cblxuXG5mdW5jdGlvbiBlbWl0UmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgZGVidWcoJ2VtaXRSZWFkYWJsZScsIHN0YXRlLm5lZWRSZWFkYWJsZSwgc3RhdGUuZW1pdHRlZFJlYWRhYmxlKTtcbiAgc3RhdGUubmVlZFJlYWRhYmxlID0gZmFsc2U7XG5cbiAgaWYgKCFzdGF0ZS5lbWl0dGVkUmVhZGFibGUpIHtcbiAgICBkZWJ1ZygnZW1pdFJlYWRhYmxlJywgc3RhdGUuZmxvd2luZyk7XG4gICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGVtaXRSZWFkYWJsZV8sIHN0cmVhbSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlXyhzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBkZWJ1ZygnZW1pdFJlYWRhYmxlXycsIHN0YXRlLmRlc3Ryb3llZCwgc3RhdGUubGVuZ3RoLCBzdGF0ZS5lbmRlZCk7XG5cbiAgaWYgKCFzdGF0ZS5kZXN0cm95ZWQgJiYgKHN0YXRlLmxlbmd0aCB8fCBzdGF0ZS5lbmRlZCkpIHtcbiAgICBzdHJlYW0uZW1pdCgncmVhZGFibGUnKTtcbiAgICBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcbiAgfSAvLyBUaGUgc3RyZWFtIG5lZWRzIGFub3RoZXIgcmVhZGFibGUgZXZlbnQgaWZcbiAgLy8gMS4gSXQgaXMgbm90IGZsb3dpbmcsIGFzIHRoZSBmbG93IG1lY2hhbmlzbSB3aWxsIHRha2VcbiAgLy8gICAgY2FyZSBvZiBpdC5cbiAgLy8gMi4gSXQgaXMgbm90IGVuZGVkLlxuICAvLyAzLiBJdCBpcyBiZWxvdyB0aGUgaGlnaFdhdGVyTWFyaywgc28gd2UgY2FuIHNjaGVkdWxlXG4gIC8vICAgIGFub3RoZXIgcmVhZGFibGUgbGF0ZXIuXG5cblxuICBzdGF0ZS5uZWVkUmVhZGFibGUgPSAhc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUuZW5kZWQgJiYgc3RhdGUubGVuZ3RoIDw9IHN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIGZsb3coc3RyZWFtKTtcbn0gLy8gYXQgdGhpcyBwb2ludCwgdGhlIHVzZXIgaGFzIHByZXN1bWFibHkgc2VlbiB0aGUgJ3JlYWRhYmxlJyBldmVudCxcbi8vIGFuZCBjYWxsZWQgcmVhZCgpIHRvIGNvbnN1bWUgc29tZSBkYXRhLiAgdGhhdCBtYXkgaGF2ZSB0cmlnZ2VyZWRcbi8vIGluIHR1cm4gYW5vdGhlciBfcmVhZChuKSBjYWxsLCBpbiB3aGljaCBjYXNlIHJlYWRpbmcgPSB0cnVlIGlmXG4vLyBpdCdzIGluIHByb2dyZXNzLlxuLy8gSG93ZXZlciwgaWYgd2UncmUgbm90IGVuZGVkLCBvciByZWFkaW5nLCBhbmQgdGhlIGxlbmd0aCA8IGh3bSxcbi8vIHRoZW4gZ28gYWhlYWQgYW5kIHRyeSB0byByZWFkIHNvbWUgbW9yZSBwcmVlbXB0aXZlbHkuXG5cblxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVhZGluZ01vcmUpIHtcbiAgICBzdGF0ZS5yZWFkaW5nTW9yZSA9IHRydWU7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhtYXliZVJlYWRNb3JlXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZV8oc3RyZWFtLCBzdGF0ZSkge1xuICAvLyBBdHRlbXB0IHRvIHJlYWQgbW9yZSBkYXRhIGlmIHdlIHNob3VsZC5cbiAgLy9cbiAgLy8gVGhlIGNvbmRpdGlvbnMgZm9yIHJlYWRpbmcgbW9yZSBkYXRhIGFyZSAob25lIG9mKTpcbiAgLy8gLSBOb3QgZW5vdWdoIGRhdGEgYnVmZmVyZWQgKHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmspLiBUaGUgbG9vcFxuICAvLyAgIGlzIHJlc3BvbnNpYmxlIGZvciBmaWxsaW5nIHRoZSBidWZmZXIgd2l0aCBlbm91Z2ggZGF0YSBpZiBzdWNoIGRhdGFcbiAgLy8gICBpcyBhdmFpbGFibGUuIElmIGhpZ2hXYXRlck1hcmsgaXMgMCBhbmQgd2UgYXJlIG5vdCBpbiB0aGUgZmxvd2luZyBtb2RlXG4gIC8vICAgd2Ugc2hvdWxkIF9ub3RfIGF0dGVtcHQgdG8gYnVmZmVyIGFueSBleHRyYSBkYXRhLiBXZSdsbCBnZXQgbW9yZSBkYXRhXG4gIC8vICAgd2hlbiB0aGUgc3RyZWFtIGNvbnN1bWVyIGNhbGxzIHJlYWQoKSBpbnN0ZWFkLlxuICAvLyAtIE5vIGRhdGEgaW4gdGhlIGJ1ZmZlciwgYW5kIHRoZSBzdHJlYW0gaXMgaW4gZmxvd2luZyBtb2RlLiBJbiB0aGlzIG1vZGVcbiAgLy8gICB0aGUgbG9vcCBiZWxvdyBpcyByZXNwb25zaWJsZSBmb3IgZW5zdXJpbmcgcmVhZCgpIGlzIGNhbGxlZC4gRmFpbGluZyB0b1xuICAvLyAgIGNhbGwgcmVhZCBoZXJlIHdvdWxkIGFib3J0IHRoZSBmbG93IGFuZCB0aGVyZSdzIG5vIG90aGVyIG1lY2hhbmlzbSBmb3JcbiAgLy8gICBjb250aW51aW5nIHRoZSBmbG93IGlmIHRoZSBzdHJlYW0gY29uc3VtZXIgaGFzIGp1c3Qgc3Vic2NyaWJlZCB0byB0aGVcbiAgLy8gICAnZGF0YScgZXZlbnQuXG4gIC8vXG4gIC8vIEluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBjb25kaXRpb25zIHRvIGtlZXAgcmVhZGluZyBkYXRhLCB0aGUgZm9sbG93aW5nXG4gIC8vIGNvbmRpdGlvbnMgcHJldmVudCB0aGUgZGF0YSBmcm9tIGJlaW5nIHJlYWQ6XG4gIC8vIC0gVGhlIHN0cmVhbSBoYXMgZW5kZWQgKHN0YXRlLmVuZGVkKS5cbiAgLy8gLSBUaGVyZSBpcyBhbHJlYWR5IGEgcGVuZGluZyAncmVhZCcgb3BlcmF0aW9uIChzdGF0ZS5yZWFkaW5nKS4gVGhpcyBpcyBhXG4gIC8vICAgY2FzZSB3aGVyZSB0aGUgdGhlIHN0cmVhbSBoYXMgY2FsbGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIF9yZWFkKClcbiAgLy8gICBtZXRob2QsIGJ1dCB0aGV5IGFyZSBwcm9jZXNzaW5nIHRoZSBjYWxsIGFzeW5jaHJvbm91c2x5IGFuZCBoYXZlIF9ub3RfXG4gIC8vICAgY2FsbGVkIHB1c2goKSB3aXRoIG5ldyBkYXRhLiBJbiB0aGlzIGNhc2Ugd2Ugc2tpcCBwZXJmb3JtaW5nIG1vcmVcbiAgLy8gICByZWFkKClzLiBUaGUgZXhlY3V0aW9uIGVuZHMgaW4gdGhpcyBtZXRob2QgYWdhaW4gYWZ0ZXIgdGhlIF9yZWFkKCkgZW5kc1xuICAvLyAgIHVwIGNhbGxpbmcgcHVzaCgpIHdpdGggbW9yZSBkYXRhLlxuICB3aGlsZSAoIXN0YXRlLnJlYWRpbmcgJiYgIXN0YXRlLmVuZGVkICYmIChzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwKSkge1xuICAgIHZhciBsZW4gPSBzdGF0ZS5sZW5ndGg7XG4gICAgZGVidWcoJ21heWJlUmVhZE1vcmUgcmVhZCAwJyk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gICAgaWYgKGxlbiA9PT0gc3RhdGUubGVuZ3RoKSAvLyBkaWRuJ3QgZ2V0IGFueSBkYXRhLCBzdG9wIHNwaW5uaW5nLlxuICAgICAgYnJlYWs7XG4gIH1cblxuICBzdGF0ZS5yZWFkaW5nTW9yZSA9IGZhbHNlO1xufSAvLyBhYnN0cmFjdCBtZXRob2QuICB0byBiZSBvdmVycmlkZGVuIGluIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyBjYWxsIGNiKGVyLCBkYXRhKSB3aGVyZSBkYXRhIGlzIDw9IG4gaW4gbGVuZ3RoLlxuLy8gZm9yIHZpcnR1YWwgKG5vbi1zdHJpbmcsIG5vbi1idWZmZXIpIHN0cmVhbXMsIFwibGVuZ3RoXCIgaXMgc29tZXdoYXRcbi8vIGFyYml0cmFyeSwgYW5kIHBlcmhhcHMgbm90IHZlcnkgbWVhbmluZ2Z1bC5cblxuXG5SZWFkYWJsZS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICBlcnJvck9yRGVzdHJveSh0aGlzLCBuZXcgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQoJ19yZWFkKCknKSk7XG59O1xuXG5SZWFkYWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uIChkZXN0LCBwaXBlT3B0cykge1xuICB2YXIgc3JjID0gdGhpcztcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICBzd2l0Y2ggKHN0YXRlLnBpcGVzQ291bnQpIHtcbiAgICBjYXNlIDA6XG4gICAgICBzdGF0ZS5waXBlcyA9IGRlc3Q7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgMTpcbiAgICAgIHN0YXRlLnBpcGVzID0gW3N0YXRlLnBpcGVzLCBkZXN0XTtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHN0YXRlLnBpcGVzLnB1c2goZGVzdCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHN0YXRlLnBpcGVzQ291bnQgKz0gMTtcbiAgZGVidWcoJ3BpcGUgY291bnQ9JWQgb3B0cz0laicsIHN0YXRlLnBpcGVzQ291bnQsIHBpcGVPcHRzKTtcbiAgdmFyIGRvRW5kID0gKCFwaXBlT3B0cyB8fCBwaXBlT3B0cy5lbmQgIT09IGZhbHNlKSAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZG91dCAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZGVycjtcbiAgdmFyIGVuZEZuID0gZG9FbmQgPyBvbmVuZCA6IHVucGlwZTtcbiAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHByb2Nlc3MubmV4dFRpY2soZW5kRm4pO2Vsc2Ugc3JjLm9uY2UoJ2VuZCcsIGVuZEZuKTtcbiAgZGVzdC5vbigndW5waXBlJywgb251bnBpcGUpO1xuXG4gIGZ1bmN0aW9uIG9udW5waXBlKHJlYWRhYmxlLCB1bnBpcGVJbmZvKSB7XG4gICAgZGVidWcoJ29udW5waXBlJyk7XG5cbiAgICBpZiAocmVhZGFibGUgPT09IHNyYykge1xuICAgICAgaWYgKHVucGlwZUluZm8gJiYgdW5waXBlSW5mby5oYXNVbnBpcGVkID09PSBmYWxzZSkge1xuICAgICAgICB1bnBpcGVJbmZvLmhhc1VucGlwZWQgPSB0cnVlO1xuICAgICAgICBjbGVhbnVwKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgZGVidWcoJ29uZW5kJyk7XG4gICAgZGVzdC5lbmQoKTtcbiAgfSAvLyB3aGVuIHRoZSBkZXN0IGRyYWlucywgaXQgcmVkdWNlcyB0aGUgYXdhaXREcmFpbiBjb3VudGVyXG4gIC8vIG9uIHRoZSBzb3VyY2UuICBUaGlzIHdvdWxkIGJlIG1vcmUgZWxlZ2FudCB3aXRoIGEgLm9uY2UoKVxuICAvLyBoYW5kbGVyIGluIGZsb3coKSwgYnV0IGFkZGluZyBhbmQgcmVtb3ZpbmcgcmVwZWF0ZWRseSBpc1xuICAvLyB0b28gc2xvdy5cblxuXG4gIHZhciBvbmRyYWluID0gcGlwZU9uRHJhaW4oc3JjKTtcbiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKTtcbiAgdmFyIGNsZWFuZWRVcCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgZGVidWcoJ2NsZWFudXAnKTsgLy8gY2xlYW51cCBldmVudCBoYW5kbGVycyBvbmNlIHRoZSBwaXBlIGlzIGJyb2tlblxuXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZHJhaW4nLCBvbmRyYWluKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ3VucGlwZScsIG9udW5waXBlKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIHVucGlwZSk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKTtcbiAgICBjbGVhbmVkVXAgPSB0cnVlOyAvLyBpZiB0aGUgcmVhZGVyIGlzIHdhaXRpbmcgZm9yIGEgZHJhaW4gZXZlbnQgZnJvbSB0aGlzXG4gICAgLy8gc3BlY2lmaWMgd3JpdGVyLCB0aGVuIGl0IHdvdWxkIGNhdXNlIGl0IHRvIG5ldmVyIHN0YXJ0XG4gICAgLy8gZmxvd2luZyBhZ2Fpbi5cbiAgICAvLyBTbywgaWYgdGhpcyBpcyBhd2FpdGluZyBhIGRyYWluLCB0aGVuIHdlIGp1c3QgY2FsbCBpdCBub3cuXG4gICAgLy8gSWYgd2UgZG9uJ3Qga25vdywgdGhlbiBhc3N1bWUgdGhhdCB3ZSBhcmUgd2FpdGluZyBmb3Igb25lLlxuXG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gJiYgKCFkZXN0Ll93cml0YWJsZVN0YXRlIHx8IGRlc3QuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluKSkgb25kcmFpbigpO1xuICB9XG5cbiAgc3JjLm9uKCdkYXRhJywgb25kYXRhKTtcblxuICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHtcbiAgICBkZWJ1Zygnb25kYXRhJyk7XG4gICAgdmFyIHJldCA9IGRlc3Qud3JpdGUoY2h1bmspO1xuICAgIGRlYnVnKCdkZXN0LndyaXRlJywgcmV0KTtcblxuICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICAvLyBJZiB0aGUgdXNlciB1bnBpcGVkIGR1cmluZyBgZGVzdC53cml0ZSgpYCwgaXQgaXMgcG9zc2libGVcbiAgICAgIC8vIHRvIGdldCBzdHVjayBpbiBhIHBlcm1hbmVudGx5IHBhdXNlZCBzdGF0ZSBpZiB0aGF0IHdyaXRlXG4gICAgICAvLyBhbHNvIHJldHVybmVkIGZhbHNlLlxuICAgICAgLy8gPT4gQ2hlY2sgd2hldGhlciBgZGVzdGAgaXMgc3RpbGwgYSBwaXBpbmcgZGVzdGluYXRpb24uXG4gICAgICBpZiAoKHN0YXRlLnBpcGVzQ291bnQgPT09IDEgJiYgc3RhdGUucGlwZXMgPT09IGRlc3QgfHwgc3RhdGUucGlwZXNDb3VudCA+IDEgJiYgaW5kZXhPZihzdGF0ZS5waXBlcywgZGVzdCkgIT09IC0xKSAmJiAhY2xlYW5lZFVwKSB7XG4gICAgICAgIGRlYnVnKCdmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UnLCBzdGF0ZS5hd2FpdERyYWluKTtcbiAgICAgICAgc3RhdGUuYXdhaXREcmFpbisrO1xuICAgICAgfVxuXG4gICAgICBzcmMucGF1c2UoKTtcbiAgICB9XG4gIH0gLy8gaWYgdGhlIGRlc3QgaGFzIGFuIGVycm9yLCB0aGVuIHN0b3AgcGlwaW5nIGludG8gaXQuXG4gIC8vIGhvd2V2ZXIsIGRvbid0IHN1cHByZXNzIHRoZSB0aHJvd2luZyBiZWhhdmlvciBmb3IgdGhpcy5cblxuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBkZWJ1Zygnb25lcnJvcicsIGVyKTtcbiAgICB1bnBpcGUoKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGlmIChFRWxpc3RlbmVyQ291bnQoZGVzdCwgJ2Vycm9yJykgPT09IDApIGVycm9yT3JEZXN0cm95KGRlc3QsIGVyKTtcbiAgfSAvLyBNYWtlIHN1cmUgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIHVzZXJsYW5kIG9uZXMuXG5cblxuICBwcmVwZW5kTGlzdGVuZXIoZGVzdCwgJ2Vycm9yJywgb25lcnJvcik7IC8vIEJvdGggY2xvc2UgYW5kIGZpbmlzaCBzaG91bGQgdHJpZ2dlciB1bnBpcGUsIGJ1dCBvbmx5IG9uY2UuXG5cbiAgZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgdW5waXBlKCk7XG4gIH1cblxuICBkZXN0Lm9uY2UoJ2Nsb3NlJywgb25jbG9zZSk7XG5cbiAgZnVuY3Rpb24gb25maW5pc2goKSB7XG4gICAgZGVidWcoJ29uZmluaXNoJyk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICB1bnBpcGUoKTtcbiAgfVxuXG4gIGRlc3Qub25jZSgnZmluaXNoJywgb25maW5pc2gpO1xuXG4gIGZ1bmN0aW9uIHVucGlwZSgpIHtcbiAgICBkZWJ1ZygndW5waXBlJyk7XG4gICAgc3JjLnVucGlwZShkZXN0KTtcbiAgfSAvLyB0ZWxsIHRoZSBkZXN0IHRoYXQgaXQncyBiZWluZyBwaXBlZCB0b1xuXG5cbiAgZGVzdC5lbWl0KCdwaXBlJywgc3JjKTsgLy8gc3RhcnQgdGhlIGZsb3cgaWYgaXQgaGFzbid0IGJlZW4gc3RhcnRlZCBhbHJlYWR5LlxuXG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdwaXBlIHJlc3VtZScpO1xuICAgIHNyYy5yZXN1bWUoKTtcbiAgfVxuXG4gIHJldHVybiBkZXN0O1xufTtcblxuZnVuY3Rpb24gcGlwZU9uRHJhaW4oc3JjKSB7XG4gIHJldHVybiBmdW5jdGlvbiBwaXBlT25EcmFpbkZ1bmN0aW9uUmVzdWx0KCkge1xuICAgIHZhciBzdGF0ZSA9IHNyYy5fcmVhZGFibGVTdGF0ZTtcbiAgICBkZWJ1ZygncGlwZU9uRHJhaW4nLCBzdGF0ZS5hd2FpdERyYWluKTtcbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbikgc3RhdGUuYXdhaXREcmFpbi0tO1xuXG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gPT09IDAgJiYgRUVsaXN0ZW5lckNvdW50KHNyYywgJ2RhdGEnKSkge1xuICAgICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgICBmbG93KHNyYyk7XG4gICAgfVxuICB9O1xufVxuXG5SZWFkYWJsZS5wcm90b3R5cGUudW5waXBlID0gZnVuY3Rpb24gKGRlc3QpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIHVucGlwZUluZm8gPSB7XG4gICAgaGFzVW5waXBlZDogZmFsc2VcbiAgfTsgLy8gaWYgd2UncmUgbm90IHBpcGluZyBhbnl3aGVyZSwgdGhlbiBkbyBub3RoaW5nLlxuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAwKSByZXR1cm4gdGhpczsgLy8ganVzdCBvbmUgZGVzdGluYXRpb24uICBtb3N0IGNvbW1vbiBjYXNlLlxuXG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSB7XG4gICAgLy8gcGFzc2VkIGluIG9uZSwgYnV0IGl0J3Mgbm90IHRoZSByaWdodCBvbmUuXG4gICAgaWYgKGRlc3QgJiYgZGVzdCAhPT0gc3RhdGUucGlwZXMpIHJldHVybiB0aGlzO1xuICAgIGlmICghZGVzdCkgZGVzdCA9IHN0YXRlLnBpcGVzOyAvLyBnb3QgYSBtYXRjaC5cblxuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgaWYgKGRlc3QpIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gLy8gc2xvdyBjYXNlLiBtdWx0aXBsZSBwaXBlIGRlc3RpbmF0aW9ucy5cblxuXG4gIGlmICghZGVzdCkge1xuICAgIC8vIHJlbW92ZSBhbGwuXG4gICAgdmFyIGRlc3RzID0gc3RhdGUucGlwZXM7XG4gICAgdmFyIGxlbiA9IHN0YXRlLnBpcGVzQ291bnQ7XG4gICAgc3RhdGUucGlwZXMgPSBudWxsO1xuICAgIHN0YXRlLnBpcGVzQ291bnQgPSAwO1xuICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGRlc3RzW2ldLmVtaXQoJ3VucGlwZScsIHRoaXMsIHtcbiAgICAgICAgaGFzVW5waXBlZDogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9IC8vIHRyeSB0byBmaW5kIHRoZSByaWdodCBvbmUuXG5cblxuICB2YXIgaW5kZXggPSBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KTtcbiAgaWYgKGluZGV4ID09PSAtMSkgcmV0dXJuIHRoaXM7XG4gIHN0YXRlLnBpcGVzLnNwbGljZShpbmRleCwgMSk7XG4gIHN0YXRlLnBpcGVzQ291bnQgLT0gMTtcbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDEpIHN0YXRlLnBpcGVzID0gc3RhdGUucGlwZXNbMF07XG4gIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7XG4gIHJldHVybiB0aGlzO1xufTsgLy8gc2V0IHVwIGRhdGEgZXZlbnRzIGlmIHRoZXkgYXJlIGFza2VkIGZvclxuLy8gRW5zdXJlIHJlYWRhYmxlIGxpc3RlbmVycyBldmVudHVhbGx5IGdldCBzb21ldGhpbmdcblxuXG5SZWFkYWJsZS5wcm90b3R5cGUub24gPSBmdW5jdGlvbiAoZXYsIGZuKSB7XG4gIHZhciByZXMgPSBTdHJlYW0ucHJvdG90eXBlLm9uLmNhbGwodGhpcywgZXYsIGZuKTtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICBpZiAoZXYgPT09ICdkYXRhJykge1xuICAgIC8vIHVwZGF0ZSByZWFkYWJsZUxpc3RlbmluZyBzbyB0aGF0IHJlc3VtZSgpIG1heSBiZSBhIG5vLW9wXG4gICAgLy8gYSBmZXcgbGluZXMgZG93bi4gVGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCBvbmNlKCdyZWFkYWJsZScpLlxuICAgIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gdGhpcy5saXN0ZW5lckNvdW50KCdyZWFkYWJsZScpID4gMDsgLy8gVHJ5IHN0YXJ0IGZsb3dpbmcgb24gbmV4dCB0aWNrIGlmIHN0cmVhbSBpc24ndCBleHBsaWNpdGx5IHBhdXNlZFxuXG4gICAgaWYgKHN0YXRlLmZsb3dpbmcgIT09IGZhbHNlKSB0aGlzLnJlc3VtZSgpO1xuICB9IGVsc2UgaWYgKGV2ID09PSAncmVhZGFibGUnKSB7XG4gICAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmICFzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZykge1xuICAgICAgc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcgPSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gICAgICBkZWJ1Zygnb24gcmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLnJlYWRpbmcpO1xuXG4gICAgICBpZiAoc3RhdGUubGVuZ3RoKSB7XG4gICAgICAgIGVtaXRSZWFkYWJsZSh0aGlzKTtcbiAgICAgIH0gZWxzZSBpZiAoIXN0YXRlLnJlYWRpbmcpIHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhuUmVhZGluZ05leHRUaWNrLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblxuUmVhZGFibGUucHJvdG90eXBlLmFkZExpc3RlbmVyID0gUmVhZGFibGUucHJvdG90eXBlLm9uO1xuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPSBmdW5jdGlvbiAoZXYsIGZuKSB7XG4gIHZhciByZXMgPSBTdHJlYW0ucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLmNhbGwodGhpcywgZXYsIGZuKTtcblxuICBpZiAoZXYgPT09ICdyZWFkYWJsZScpIHtcbiAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIHNvbWVvbmUgc3RpbGwgbGlzdGVuaW5nIHRvXG4gICAgLy8gcmVhZGFibGUgYW5kIHJlc2V0IHRoZSBzdGF0ZS4gSG93ZXZlciB0aGlzIG5lZWRzIHRvIGhhcHBlblxuICAgIC8vIGFmdGVyIHJlYWRhYmxlIGhhcyBiZWVuIGVtaXR0ZWQgYnV0IGJlZm9yZSBJL08gKG5leHRUaWNrKSB0b1xuICAgIC8vIHN1cHBvcnQgb25jZSgncmVhZGFibGUnLCBmbikgY3ljbGVzLiBUaGlzIG1lYW5zIHRoYXQgY2FsbGluZ1xuICAgIC8vIHJlc3VtZSB3aXRoaW4gdGhlIHNhbWUgdGljayB3aWxsIGhhdmUgbm9cbiAgICAvLyBlZmZlY3QuXG4gICAgcHJvY2Vzcy5uZXh0VGljayh1cGRhdGVSZWFkYWJsZUxpc3RlbmluZywgdGhpcyk7XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblxuUmVhZGFibGUucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0aW9uIChldikge1xuICB2YXIgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICBpZiAoZXYgPT09ICdyZWFkYWJsZScgfHwgZXYgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgaXMgc29tZW9uZSBzdGlsbCBsaXN0ZW5pbmcgdG9cbiAgICAvLyByZWFkYWJsZSBhbmQgcmVzZXQgdGhlIHN0YXRlLiBIb3dldmVyIHRoaXMgbmVlZHMgdG8gaGFwcGVuXG4gICAgLy8gYWZ0ZXIgcmVhZGFibGUgaGFzIGJlZW4gZW1pdHRlZCBidXQgYmVmb3JlIEkvTyAobmV4dFRpY2spIHRvXG4gICAgLy8gc3VwcG9ydCBvbmNlKCdyZWFkYWJsZScsIGZuKSBjeWNsZXMuIFRoaXMgbWVhbnMgdGhhdCBjYWxsaW5nXG4gICAgLy8gcmVzdW1lIHdpdGhpbiB0aGUgc2FtZSB0aWNrIHdpbGwgaGF2ZSBub1xuICAgIC8vIGVmZmVjdC5cbiAgICBwcm9jZXNzLm5leHRUaWNrKHVwZGF0ZVJlYWRhYmxlTGlzdGVuaW5nLCB0aGlzKTtcbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuXG5mdW5jdGlvbiB1cGRhdGVSZWFkYWJsZUxpc3RlbmluZyhzZWxmKSB7XG4gIHZhciBzdGF0ZSA9IHNlbGYuX3JlYWRhYmxlU3RhdGU7XG4gIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gc2VsZi5saXN0ZW5lckNvdW50KCdyZWFkYWJsZScpID4gMDtcblxuICBpZiAoc3RhdGUucmVzdW1lU2NoZWR1bGVkICYmICFzdGF0ZS5wYXVzZWQpIHtcbiAgICAvLyBmbG93aW5nIG5lZWRzIHRvIGJlIHNldCB0byB0cnVlIG5vdywgb3RoZXJ3aXNlXG4gICAgLy8gdGhlIHVwY29taW5nIHJlc3VtZSB3aWxsIG5vdCBmbG93LlxuICAgIHN0YXRlLmZsb3dpbmcgPSB0cnVlOyAvLyBjcnVkZSB3YXkgdG8gY2hlY2sgaWYgd2Ugc2hvdWxkIHJlc3VtZVxuICB9IGVsc2UgaWYgKHNlbGYubGlzdGVuZXJDb3VudCgnZGF0YScpID4gMCkge1xuICAgIHNlbGYucmVzdW1lKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gblJlYWRpbmdOZXh0VGljayhzZWxmKSB7XG4gIGRlYnVnKCdyZWFkYWJsZSBuZXh0dGljayByZWFkIDAnKTtcbiAgc2VsZi5yZWFkKDApO1xufSAvLyBwYXVzZSgpIGFuZCByZXN1bWUoKSBhcmUgcmVtbmFudHMgb2YgdGhlIGxlZ2FjeSByZWFkYWJsZSBzdHJlYW0gQVBJXG4vLyBJZiB0aGUgdXNlciB1c2VzIHRoZW0sIHRoZW4gc3dpdGNoIGludG8gb2xkIG1vZGUuXG5cblxuUmVhZGFibGUucHJvdG90eXBlLnJlc3VtZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICBpZiAoIXN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncmVzdW1lJyk7IC8vIHdlIGZsb3cgb25seSBpZiB0aGVyZSBpcyBubyBvbmUgbGlzdGVuaW5nXG4gICAgLy8gZm9yIHJlYWRhYmxlLCBidXQgd2Ugc3RpbGwgaGF2ZSB0byBjYWxsXG4gICAgLy8gcmVzdW1lKClcblxuICAgIHN0YXRlLmZsb3dpbmcgPSAhc3RhdGUucmVhZGFibGVMaXN0ZW5pbmc7XG4gICAgcmVzdW1lKHRoaXMsIHN0YXRlKTtcbiAgfVxuXG4gIHN0YXRlLnBhdXNlZCA9IGZhbHNlO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIHJlc3VtZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVzdW1lU2NoZWR1bGVkKSB7XG4gICAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBwcm9jZXNzLm5leHRUaWNrKHJlc3VtZV8sIHN0cmVhbSwgc3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc3VtZV8oc3RyZWFtLCBzdGF0ZSkge1xuICBkZWJ1ZygncmVzdW1lJywgc3RhdGUucmVhZGluZyk7XG5cbiAgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gIH1cblxuICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTtcbiAgc3RyZWFtLmVtaXQoJ3Jlc3VtZScpO1xuICBmbG93KHN0cmVhbSk7XG4gIGlmIChzdGF0ZS5mbG93aW5nICYmICFzdGF0ZS5yZWFkaW5nKSBzdHJlYW0ucmVhZCgwKTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICBkZWJ1ZygnY2FsbCBwYXVzZSBmbG93aW5nPSVqJywgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKTtcblxuICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nICE9PSBmYWxzZSkge1xuICAgIGRlYnVnKCdwYXVzZScpO1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgIHRoaXMuZW1pdCgncGF1c2UnKTtcbiAgfVxuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUucGF1c2VkID0gdHJ1ZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBmbG93KHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGRlYnVnKCdmbG93Jywgc3RhdGUuZmxvd2luZyk7XG5cbiAgd2hpbGUgKHN0YXRlLmZsb3dpbmcgJiYgc3RyZWFtLnJlYWQoKSAhPT0gbnVsbCkge1xuICAgIDtcbiAgfVxufSAvLyB3cmFwIGFuIG9sZC1zdHlsZSBzdHJlYW0gYXMgdGhlIGFzeW5jIGRhdGEgc291cmNlLlxuLy8gVGhpcyBpcyAqbm90KiBwYXJ0IG9mIHRoZSByZWFkYWJsZSBzdHJlYW0gaW50ZXJmYWNlLlxuLy8gSXQgaXMgYW4gdWdseSB1bmZvcnR1bmF0ZSBtZXNzIG9mIGhpc3RvcnkuXG5cblxuUmVhZGFibGUucHJvdG90eXBlLndyYXAgPSBmdW5jdGlvbiAoc3RyZWFtKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIHBhdXNlZCA9IGZhbHNlO1xuICBzdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBlbmQnKTtcblxuICAgIGlmIChzdGF0ZS5kZWNvZGVyICYmICFzdGF0ZS5lbmRlZCkge1xuICAgICAgdmFyIGNodW5rID0gc3RhdGUuZGVjb2Rlci5lbmQoKTtcbiAgICAgIGlmIChjaHVuayAmJiBjaHVuay5sZW5ndGgpIF90aGlzLnB1c2goY2h1bmspO1xuICAgIH1cblxuICAgIF90aGlzLnB1c2gobnVsbCk7XG4gIH0pO1xuICBzdHJlYW0ub24oJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBkYXRhJyk7XG4gICAgaWYgKHN0YXRlLmRlY29kZXIpIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7IC8vIGRvbid0IHNraXAgb3ZlciBmYWxzeSB2YWx1ZXMgaW4gb2JqZWN0TW9kZVxuXG4gICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgJiYgKGNodW5rID09PSBudWxsIHx8IGNodW5rID09PSB1bmRlZmluZWQpKSByZXR1cm47ZWxzZSBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgKCFjaHVuayB8fCAhY2h1bmsubGVuZ3RoKSkgcmV0dXJuO1xuXG4gICAgdmFyIHJldCA9IF90aGlzLnB1c2goY2h1bmspO1xuXG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIHBhdXNlZCA9IHRydWU7XG4gICAgICBzdHJlYW0ucGF1c2UoKTtcbiAgICB9XG4gIH0pOyAvLyBwcm94eSBhbGwgdGhlIG90aGVyIG1ldGhvZHMuXG4gIC8vIGltcG9ydGFudCB3aGVuIHdyYXBwaW5nIGZpbHRlcnMgYW5kIGR1cGxleGVzLlxuXG4gIGZvciAodmFyIGkgaW4gc3RyZWFtKSB7XG4gICAgaWYgKHRoaXNbaV0gPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygc3RyZWFtW2ldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2ldID0gZnVuY3Rpb24gbWV0aG9kV3JhcChtZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIG1ldGhvZFdyYXBSZXR1cm5GdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gc3RyZWFtW21ldGhvZF0uYXBwbHkoc3RyZWFtLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgfShpKTtcbiAgICB9XG4gIH0gLy8gcHJveHkgY2VydGFpbiBpbXBvcnRhbnQgZXZlbnRzLlxuXG5cbiAgZm9yICh2YXIgbiA9IDA7IG4gPCBrUHJveHlFdmVudHMubGVuZ3RoOyBuKyspIHtcbiAgICBzdHJlYW0ub24oa1Byb3h5RXZlbnRzW25dLCB0aGlzLmVtaXQuYmluZCh0aGlzLCBrUHJveHlFdmVudHNbbl0pKTtcbiAgfSAvLyB3aGVuIHdlIHRyeSB0byBjb25zdW1lIHNvbWUgbW9yZSBieXRlcywgc2ltcGx5IHVucGF1c2UgdGhlXG4gIC8vIHVuZGVybHlpbmcgc3RyZWFtLlxuXG5cbiAgdGhpcy5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgX3JlYWQnLCBuKTtcblxuICAgIGlmIChwYXVzZWQpIHtcbiAgICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgICAgc3RyZWFtLnJlc3VtZSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbmlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nKSB7XG4gIFJlYWRhYmxlLnByb3RvdHlwZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3IgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvYXN5bmNfaXRlcmF0b3InKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3JlYXRlUmVhZGFibGVTdHJlYW1Bc3luY0l0ZXJhdG9yKHRoaXMpO1xuICB9O1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhZGFibGUucHJvdG90eXBlLCAncmVhZGFibGVIaWdoV2F0ZXJNYXJrJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdyZWFkYWJsZUJ1ZmZlcicsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUgJiYgdGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXI7XG4gIH1cbn0pO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ3JlYWRhYmxlRmxvd2luZycsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZztcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiBzZXQoc3RhdGUpIHtcbiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID0gc3RhdGU7XG4gICAgfVxuICB9XG59KTsgLy8gZXhwb3NlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5LlxuXG5SZWFkYWJsZS5fZnJvbUxpc3QgPSBmcm9tTGlzdDtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdyZWFkYWJsZUxlbmd0aCcsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RoO1xuICB9XG59KTsgLy8gUGx1Y2sgb2ZmIG4gYnl0ZXMgZnJvbSBhbiBhcnJheSBvZiBidWZmZXJzLlxuLy8gTGVuZ3RoIGlzIHRoZSBjb21iaW5lZCBsZW5ndGhzIG9mIGFsbCB0aGUgYnVmZmVycyBpbiB0aGUgbGlzdC5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuXG5mdW5jdGlvbiBmcm9tTGlzdChuLCBzdGF0ZSkge1xuICAvLyBub3RoaW5nIGJ1ZmZlcmVkXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuICB2YXIgcmV0O1xuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0ID0gc3RhdGUuYnVmZmVyLnNoaWZ0KCk7ZWxzZSBpZiAoIW4gfHwgbiA+PSBzdGF0ZS5sZW5ndGgpIHtcbiAgICAvLyByZWFkIGl0IGFsbCwgdHJ1bmNhdGUgdGhlIGxpc3RcbiAgICBpZiAoc3RhdGUuZGVjb2RlcikgcmV0ID0gc3RhdGUuYnVmZmVyLmpvaW4oJycpO2Vsc2UgaWYgKHN0YXRlLmJ1ZmZlci5sZW5ndGggPT09IDEpIHJldCA9IHN0YXRlLmJ1ZmZlci5maXJzdCgpO2Vsc2UgcmV0ID0gc3RhdGUuYnVmZmVyLmNvbmNhdChzdGF0ZS5sZW5ndGgpO1xuICAgIHN0YXRlLmJ1ZmZlci5jbGVhcigpO1xuICB9IGVsc2Uge1xuICAgIC8vIHJlYWQgcGFydCBvZiBsaXN0XG4gICAgcmV0ID0gc3RhdGUuYnVmZmVyLmNvbnN1bWUobiwgc3RhdGUuZGVjb2Rlcik7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgZGVidWcoJ2VuZFJlYWRhYmxlJywgc3RhdGUuZW5kRW1pdHRlZCk7XG5cbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkKSB7XG4gICAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICAgIHByb2Nlc3MubmV4dFRpY2soZW5kUmVhZGFibGVOVCwgc3RhdGUsIHN0cmVhbSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGVOVChzdGF0ZSwgc3RyZWFtKSB7XG4gIGRlYnVnKCdlbmRSZWFkYWJsZU5UJywgc3RhdGUuZW5kRW1pdHRlZCwgc3RhdGUubGVuZ3RoKTsgLy8gQ2hlY2sgdGhhdCB3ZSBkaWRuJ3QgZ2V0IG9uZSBsYXN0IHVuc2hpZnQuXG5cbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmIHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIHN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5yZWFkYWJsZSA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdlbmQnKTtcblxuICAgIGlmIChzdGF0ZS5hdXRvRGVzdHJveSkge1xuICAgICAgLy8gSW4gY2FzZSBvZiBkdXBsZXggc3RyZWFtcyB3ZSBuZWVkIGEgd2F5IHRvIGRldGVjdFxuICAgICAgLy8gaWYgdGhlIHdyaXRhYmxlIHNpZGUgaXMgcmVhZHkgZm9yIGF1dG9EZXN0cm95IGFzIHdlbGxcbiAgICAgIHZhciB3U3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGU7XG5cbiAgICAgIGlmICghd1N0YXRlIHx8IHdTdGF0ZS5hdXRvRGVzdHJveSAmJiB3U3RhdGUuZmluaXNoZWQpIHtcbiAgICAgICAgc3RyZWFtLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicpIHtcbiAgUmVhZGFibGUuZnJvbSA9IGZ1bmN0aW9uIChpdGVyYWJsZSwgb3B0cykge1xuICAgIGlmIChmcm9tID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGZyb20gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvZnJvbScpO1xuICAgIH1cblxuICAgIHJldHVybiBmcm9tKFJlYWRhYmxlLCBpdGVyYWJsZSwgb3B0cyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGluZGV4T2YoeHMsIHgpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSB4cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoeHNbaV0gPT09IHgpIHJldHVybiBpO1xuICB9XG5cbiAgcmV0dXJuIC0xO1xufSIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuLy8gYSB0cmFuc2Zvcm0gc3RyZWFtIGlzIGEgcmVhZGFibGUvd3JpdGFibGUgc3RyZWFtIHdoZXJlIHlvdSBkb1xuLy8gc29tZXRoaW5nIHdpdGggdGhlIGRhdGEuICBTb21ldGltZXMgaXQncyBjYWxsZWQgYSBcImZpbHRlclwiLFxuLy8gYnV0IHRoYXQncyBub3QgYSBncmVhdCBuYW1lIGZvciBpdCwgc2luY2UgdGhhdCBpbXBsaWVzIGEgdGhpbmcgd2hlcmVcbi8vIHNvbWUgYml0cyBwYXNzIHRocm91Z2gsIGFuZCBvdGhlcnMgYXJlIHNpbXBseSBpZ25vcmVkLiAgKFRoYXQgd291bGRcbi8vIGJlIGEgdmFsaWQgZXhhbXBsZSBvZiBhIHRyYW5zZm9ybSwgb2YgY291cnNlLilcbi8vXG4vLyBXaGlsZSB0aGUgb3V0cHV0IGlzIGNhdXNhbGx5IHJlbGF0ZWQgdG8gdGhlIGlucHV0LCBpdCdzIG5vdCBhXG4vLyBuZWNlc3NhcmlseSBzeW1tZXRyaWMgb3Igc3luY2hyb25vdXMgdHJhbnNmb3JtYXRpb24uICBGb3IgZXhhbXBsZSxcbi8vIGEgemxpYiBzdHJlYW0gbWlnaHQgdGFrZSBtdWx0aXBsZSBwbGFpbi10ZXh0IHdyaXRlcygpLCBhbmQgdGhlblxuLy8gZW1pdCBhIHNpbmdsZSBjb21wcmVzc2VkIGNodW5rIHNvbWUgdGltZSBpbiB0aGUgZnV0dXJlLlxuLy9cbi8vIEhlcmUncyBob3cgdGhpcyB3b3Jrczpcbi8vXG4vLyBUaGUgVHJhbnNmb3JtIHN0cmVhbSBoYXMgYWxsIHRoZSBhc3BlY3RzIG9mIHRoZSByZWFkYWJsZSBhbmQgd3JpdGFibGVcbi8vIHN0cmVhbSBjbGFzc2VzLiAgV2hlbiB5b3Ugd3JpdGUoY2h1bmspLCB0aGF0IGNhbGxzIF93cml0ZShjaHVuayxjYilcbi8vIGludGVybmFsbHksIGFuZCByZXR1cm5zIGZhbHNlIGlmIHRoZXJlJ3MgYSBsb3Qgb2YgcGVuZGluZyB3cml0ZXNcbi8vIGJ1ZmZlcmVkIHVwLiAgV2hlbiB5b3UgY2FsbCByZWFkKCksIHRoYXQgY2FsbHMgX3JlYWQobikgdW50aWxcbi8vIHRoZXJlJ3MgZW5vdWdoIHBlbmRpbmcgcmVhZGFibGUgZGF0YSBidWZmZXJlZCB1cC5cbi8vXG4vLyBJbiBhIHRyYW5zZm9ybSBzdHJlYW0sIHRoZSB3cml0dGVuIGRhdGEgaXMgcGxhY2VkIGluIGEgYnVmZmVyLiAgV2hlblxuLy8gX3JlYWQobikgaXMgY2FsbGVkLCBpdCB0cmFuc2Zvcm1zIHRoZSBxdWV1ZWQgdXAgZGF0YSwgY2FsbGluZyB0aGVcbi8vIGJ1ZmZlcmVkIF93cml0ZSBjYidzIGFzIGl0IGNvbnN1bWVzIGNodW5rcy4gIElmIGNvbnN1bWluZyBhIHNpbmdsZVxuLy8gd3JpdHRlbiBjaHVuayB3b3VsZCByZXN1bHQgaW4gbXVsdGlwbGUgb3V0cHV0IGNodW5rcywgdGhlbiB0aGUgZmlyc3Rcbi8vIG91dHB1dHRlZCBiaXQgY2FsbHMgdGhlIHJlYWRjYiwgYW5kIHN1YnNlcXVlbnQgY2h1bmtzIGp1c3QgZ28gaW50b1xuLy8gdGhlIHJlYWQgYnVmZmVyLCBhbmQgd2lsbCBjYXVzZSBpdCB0byBlbWl0ICdyZWFkYWJsZScgaWYgbmVjZXNzYXJ5LlxuLy9cbi8vIFRoaXMgd2F5LCBiYWNrLXByZXNzdXJlIGlzIGFjdHVhbGx5IGRldGVybWluZWQgYnkgdGhlIHJlYWRpbmcgc2lkZSxcbi8vIHNpbmNlIF9yZWFkIGhhcyB0byBiZSBjYWxsZWQgdG8gc3RhcnQgcHJvY2Vzc2luZyBhIG5ldyBjaHVuay4gIEhvd2V2ZXIsXG4vLyBhIHBhdGhvbG9naWNhbCBpbmZsYXRlIHR5cGUgb2YgdHJhbnNmb3JtIGNhbiBjYXVzZSBleGNlc3NpdmUgYnVmZmVyaW5nXG4vLyBoZXJlLiAgRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBzdHJlYW0gd2hlcmUgZXZlcnkgYnl0ZSBvZiBpbnB1dCBpc1xuLy8gaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlciBmcm9tIDAtMjU1LCBhbmQgdGhlbiByZXN1bHRzIGluIHRoYXQgbWFueVxuLy8gYnl0ZXMgb2Ygb3V0cHV0LiAgV3JpdGluZyB0aGUgNCBieXRlcyB7ZmYsZmYsZmYsZmZ9IHdvdWxkIHJlc3VsdCBpblxuLy8gMWtiIG9mIGRhdGEgYmVpbmcgb3V0cHV0LiAgSW4gdGhpcyBjYXNlLCB5b3UgY291bGQgd3JpdGUgYSB2ZXJ5IHNtYWxsXG4vLyBhbW91bnQgb2YgaW5wdXQsIGFuZCBlbmQgdXAgd2l0aCBhIHZlcnkgbGFyZ2UgYW1vdW50IG9mIG91dHB1dC4gIEluXG4vLyBzdWNoIGEgcGF0aG9sb2dpY2FsIGluZmxhdGluZyBtZWNoYW5pc20sIHRoZXJlJ2QgYmUgbm8gd2F5IHRvIHRlbGxcbi8vIHRoZSBzeXN0ZW0gdG8gc3RvcCBkb2luZyB0aGUgdHJhbnNmb3JtLiAgQSBzaW5nbGUgNE1CIHdyaXRlIGNvdWxkXG4vLyBjYXVzZSB0aGUgc3lzdGVtIHRvIHJ1biBvdXQgb2YgbWVtb3J5LlxuLy9cbi8vIEhvd2V2ZXIsIGV2ZW4gaW4gc3VjaCBhIHBhdGhvbG9naWNhbCBjYXNlLCBvbmx5IGEgc2luZ2xlIHdyaXR0ZW4gY2h1bmtcbi8vIHdvdWxkIGJlIGNvbnN1bWVkLCBhbmQgdGhlbiB0aGUgcmVzdCB3b3VsZCB3YWl0ICh1bi10cmFuc2Zvcm1lZCkgdW50aWxcbi8vIHRoZSByZXN1bHRzIG9mIHRoZSBwcmV2aW91cyB0cmFuc2Zvcm1lZCBjaHVuayB3ZXJlIGNvbnN1bWVkLlxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zZm9ybTtcblxudmFyIF9yZXF1aXJlJGNvZGVzID0gcmVxdWlyZSgnLi4vZXJyb3JzJykuY29kZXMsXG4gICAgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxcbiAgICBFUlJfTVVMVElQTEVfQ0FMTEJBQ0sgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssXG4gICAgRVJSX1RSQU5TRk9STV9BTFJFQURZX1RSQU5TRk9STUlORyA9IF9yZXF1aXJlJGNvZGVzLkVSUl9UUkFOU0ZPUk1fQUxSRUFEWV9UUkFOU0ZPUk1JTkcsXG4gICAgRVJSX1RSQU5TRk9STV9XSVRIX0xFTkdUSF8wID0gX3JlcXVpcmUkY29kZXMuRVJSX1RSQU5TRk9STV9XSVRIX0xFTkdUSF8wO1xuXG52YXIgRHVwbGV4ID0gcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG5yZXF1aXJlKCdpbmhlcml0cycpKFRyYW5zZm9ybSwgRHVwbGV4KTtcblxuZnVuY3Rpb24gYWZ0ZXJUcmFuc2Zvcm0oZXIsIGRhdGEpIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG4gIHRzLnRyYW5zZm9ybWluZyA9IGZhbHNlO1xuICB2YXIgY2IgPSB0cy53cml0ZWNiO1xuXG4gIGlmIChjYiA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVSUl9NVUxUSVBMRV9DQUxMQkFDSygpKTtcbiAgfVxuXG4gIHRzLndyaXRlY2h1bmsgPSBudWxsO1xuICB0cy53cml0ZWNiID0gbnVsbDtcbiAgaWYgKGRhdGEgIT0gbnVsbCkgLy8gc2luZ2xlIGVxdWFscyBjaGVjayBmb3IgYm90aCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgXG4gICAgdGhpcy5wdXNoKGRhdGEpO1xuICBjYihlcik7XG4gIHZhciBycyA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHJzLnJlYWRpbmcgPSBmYWxzZTtcblxuICBpZiAocnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHtcbiAgICB0aGlzLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59XG5cbmZ1bmN0aW9uIFRyYW5zZm9ybShvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBUcmFuc2Zvcm0pKSByZXR1cm4gbmV3IFRyYW5zZm9ybShvcHRpb25zKTtcbiAgRHVwbGV4LmNhbGwodGhpcywgb3B0aW9ucyk7XG4gIHRoaXMuX3RyYW5zZm9ybVN0YXRlID0ge1xuICAgIGFmdGVyVHJhbnNmb3JtOiBhZnRlclRyYW5zZm9ybS5iaW5kKHRoaXMpLFxuICAgIG5lZWRUcmFuc2Zvcm06IGZhbHNlLFxuICAgIHRyYW5zZm9ybWluZzogZmFsc2UsXG4gICAgd3JpdGVjYjogbnVsbCxcbiAgICB3cml0ZWNodW5rOiBudWxsLFxuICAgIHdyaXRlZW5jb2Rpbmc6IG51bGxcbiAgfTsgLy8gc3RhcnQgb3V0IGFza2luZyBmb3IgYSByZWFkYWJsZSBldmVudCBvbmNlIGRhdGEgaXMgdHJhbnNmb3JtZWQuXG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlOyAvLyB3ZSBoYXZlIGltcGxlbWVudGVkIHRoZSBfcmVhZCBtZXRob2QsIGFuZCBkb25lIHRoZSBvdGhlciB0aGluZ3NcbiAgLy8gdGhhdCBSZWFkYWJsZSB3YW50cyBiZWZvcmUgdGhlIGZpcnN0IF9yZWFkIGNhbGwsIHNvIHVuc2V0IHRoZVxuICAvLyBzeW5jIGd1YXJkIGZsYWcuXG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMudHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB0aGlzLl90cmFuc2Zvcm0gPSBvcHRpb25zLnRyYW5zZm9ybTtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmx1c2ggPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZsdXNoID0gb3B0aW9ucy5mbHVzaDtcbiAgfSAvLyBXaGVuIHRoZSB3cml0YWJsZSBzaWRlIGZpbmlzaGVzLCB0aGVuIGZsdXNoIG91dCBhbnl0aGluZyByZW1haW5pbmcuXG5cblxuICB0aGlzLm9uKCdwcmVmaW5pc2gnLCBwcmVmaW5pc2gpO1xufVxuXG5mdW5jdGlvbiBwcmVmaW5pc2goKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgaWYgKHR5cGVvZiB0aGlzLl9mbHVzaCA9PT0gJ2Z1bmN0aW9uJyAmJiAhdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQpIHtcbiAgICB0aGlzLl9mbHVzaChmdW5jdGlvbiAoZXIsIGRhdGEpIHtcbiAgICAgIGRvbmUoX3RoaXMsIGVyLCBkYXRhKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBkb25lKHRoaXMsIG51bGwsIG51bGwpO1xuICB9XG59XG5cblRyYW5zZm9ybS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdGhpcy5fdHJhbnNmb3JtU3RhdGUubmVlZFRyYW5zZm9ybSA9IGZhbHNlO1xuICByZXR1cm4gRHVwbGV4LnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcywgY2h1bmssIGVuY29kaW5nKTtcbn07IC8vIFRoaXMgaXMgdGhlIHBhcnQgd2hlcmUgeW91IGRvIHN0dWZmIVxuLy8gb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiBpbiBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gJ2NodW5rJyBpcyBhbiBpbnB1dCBjaHVuay5cbi8vXG4vLyBDYWxsIGBwdXNoKG5ld0NodW5rKWAgdG8gcGFzcyBhbG9uZyB0cmFuc2Zvcm1lZCBvdXRwdXRcbi8vIHRvIHRoZSByZWFkYWJsZSBzaWRlLiAgWW91IG1heSBjYWxsICdwdXNoJyB6ZXJvIG9yIG1vcmUgdGltZXMuXG4vL1xuLy8gQ2FsbCBgY2IoZXJyKWAgd2hlbiB5b3UgYXJlIGRvbmUgd2l0aCB0aGlzIGNodW5rLiAgSWYgeW91IHBhc3Ncbi8vIGFuIGVycm9yLCB0aGVuIHRoYXQnbGwgcHV0IHRoZSBodXJ0IG9uIHRoZSB3aG9sZSBvcGVyYXRpb24uICBJZiB5b3Vcbi8vIG5ldmVyIGNhbGwgY2IoKSwgdGhlbiB5b3UnbGwgbmV2ZXIgZ2V0IGFub3RoZXIgY2h1bmsuXG5cblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobmV3IEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEKCdfdHJhbnNmb3JtKCknKSk7XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciB0cyA9IHRoaXMuX3RyYW5zZm9ybVN0YXRlO1xuICB0cy53cml0ZWNiID0gY2I7XG4gIHRzLndyaXRlY2h1bmsgPSBjaHVuaztcbiAgdHMud3JpdGVlbmNvZGluZyA9IGVuY29kaW5nO1xuXG4gIGlmICghdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdmFyIHJzID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgICBpZiAodHMubmVlZFRyYW5zZm9ybSB8fCBycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykgdGhpcy5fcmVhZChycy5oaWdoV2F0ZXJNYXJrKTtcbiAgfVxufTsgLy8gRG9lc24ndCBtYXR0ZXIgd2hhdCB0aGUgYXJncyBhcmUgaGVyZS5cbi8vIF90cmFuc2Zvcm0gZG9lcyBhbGwgdGhlIHdvcmsuXG4vLyBUaGF0IHdlIGdvdCBoZXJlIG1lYW5zIHRoYXQgdGhlIHJlYWRhYmxlIHNpZGUgd2FudHMgbW9yZSBkYXRhLlxuXG5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcblxuICBpZiAodHMud3JpdGVjaHVuayAhPT0gbnVsbCAmJiAhdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdHMudHJhbnNmb3JtaW5nID0gdHJ1ZTtcblxuICAgIHRoaXMuX3RyYW5zZm9ybSh0cy53cml0ZWNodW5rLCB0cy53cml0ZWVuY29kaW5nLCB0cy5hZnRlclRyYW5zZm9ybSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gbWFyayB0aGF0IHdlIG5lZWQgYSB0cmFuc2Zvcm0sIHNvIHRoYXQgYW55IGRhdGEgdGhhdCBjb21lcyBpblxuICAgIC8vIHdpbGwgZ2V0IHByb2Nlc3NlZCwgbm93IHRoYXQgd2UndmUgYXNrZWQgZm9yIGl0LlxuICAgIHRzLm5lZWRUcmFuc2Zvcm0gPSB0cnVlO1xuICB9XG59O1xuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgRHVwbGV4LnByb3RvdHlwZS5fZGVzdHJveS5jYWxsKHRoaXMsIGVyciwgZnVuY3Rpb24gKGVycjIpIHtcbiAgICBjYihlcnIyKTtcbiAgfSk7XG59O1xuXG5mdW5jdGlvbiBkb25lKHN0cmVhbSwgZXIsIGRhdGEpIHtcbiAgaWYgKGVyKSByZXR1cm4gc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICBpZiAoZGF0YSAhPSBudWxsKSAvLyBzaW5nbGUgZXF1YWxzIGNoZWNrIGZvciBib3RoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGBcbiAgICBzdHJlYW0ucHVzaChkYXRhKTsgLy8gVE9ETyhCcmlkZ2VBUik6IFdyaXRlIGEgdGVzdCBmb3IgdGhlc2UgdHdvIGVycm9yIGNhc2VzXG4gIC8vIGlmIHRoZXJlJ3Mgbm90aGluZyBpbiB0aGUgd3JpdGUgYnVmZmVyLCB0aGVuIHRoYXQgbWVhbnNcbiAgLy8gdGhhdCBub3RoaW5nIG1vcmUgd2lsbCBldmVyIGJlIHByb3ZpZGVkXG5cbiAgaWYgKHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5sZW5ndGgpIHRocm93IG5ldyBFUlJfVFJBTlNGT1JNX1dJVEhfTEVOR1RIXzAoKTtcbiAgaWYgKHN0cmVhbS5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKSB0aHJvdyBuZXcgRVJSX1RSQU5TRk9STV9BTFJFQURZX1RSQU5TRk9STUlORygpO1xuICByZXR1cm4gc3RyZWFtLnB1c2gobnVsbCk7XG59IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4vLyBBIGJpdCBzaW1wbGVyIHRoYW4gcmVhZGFibGUgc3RyZWFtcy5cbi8vIEltcGxlbWVudCBhbiBhc3luYyAuX3dyaXRlKGNodW5rLCBlbmNvZGluZywgY2IpLCBhbmQgaXQnbGwgaGFuZGxlIGFsbFxuLy8gdGhlIGRyYWluIGV2ZW50IGVtaXNzaW9uIGFuZCBidWZmZXJpbmcuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gV3JpdGFibGU7XG4vKiA8cmVwbGFjZW1lbnQ+ICovXG5cbmZ1bmN0aW9uIFdyaXRlUmVxKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdGhpcy5jaHVuayA9IGNodW5rO1xuICB0aGlzLmVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHRoaXMuY2FsbGJhY2sgPSBjYjtcbiAgdGhpcy5uZXh0ID0gbnVsbDtcbn0gLy8gSXQgc2VlbXMgYSBsaW5rZWQgbGlzdCBidXQgaXQgaXMgbm90XG4vLyB0aGVyZSB3aWxsIGJlIG9ubHkgMiBvZiB0aGVzZSBmb3IgZWFjaCBzdHJlYW1cblxuXG5mdW5jdGlvbiBDb3JrZWRSZXF1ZXN0KHN0YXRlKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgdGhpcy5lbnRyeSA9IG51bGw7XG5cbiAgdGhpcy5maW5pc2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgb25Db3JrZWRGaW5pc2goX3RoaXMsIHN0YXRlKTtcbiAgfTtcbn1cbi8qIDwvcmVwbGFjZW1lbnQ+ICovXG5cbi8qPHJlcGxhY2VtZW50PiovXG5cblxudmFyIER1cGxleDtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5Xcml0YWJsZS5Xcml0YWJsZVN0YXRlID0gV3JpdGFibGVTdGF0ZTtcbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBpbnRlcm5hbFV0aWwgPSB7XG4gIGRlcHJlY2F0ZTogcmVxdWlyZSgndXRpbC1kZXByZWNhdGUnKVxufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcblxudmFyIE91clVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheSB8fCBmdW5jdGlvbiAoKSB7fTtcblxuZnVuY3Rpb24gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuaykge1xuICByZXR1cm4gQnVmZmVyLmZyb20oY2h1bmspO1xufVxuXG5mdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikge1xuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKG9iaikgfHwgb2JqIGluc3RhbmNlb2YgT3VyVWludDhBcnJheTtcbn1cblxudmFyIGRlc3Ryb3lJbXBsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3knKTtcblxudmFyIF9yZXF1aXJlID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0YXRlJyksXG4gICAgZ2V0SGlnaFdhdGVyTWFyayA9IF9yZXF1aXJlLmdldEhpZ2hXYXRlck1hcms7XG5cbnZhciBfcmVxdWlyZSRjb2RlcyA9IHJlcXVpcmUoJy4uL2Vycm9ycycpLmNvZGVzLFxuICAgIEVSUl9JTlZBTElEX0FSR19UWVBFID0gX3JlcXVpcmUkY29kZXMuRVJSX0lOVkFMSURfQVJHX1RZUEUsXG4gICAgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxcbiAgICBFUlJfTVVMVElQTEVfQ0FMTEJBQ0sgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfTVVMVElQTEVfQ0FMTEJBQ0ssXG4gICAgRVJSX1NUUkVBTV9DQU5OT1RfUElQRSA9IF9yZXF1aXJlJGNvZGVzLkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUsXG4gICAgRVJSX1NUUkVBTV9ERVNUUk9ZRUQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfU1RSRUFNX0RFU1RST1lFRCxcbiAgICBFUlJfU1RSRUFNX05VTExfVkFMVUVTID0gX3JlcXVpcmUkY29kZXMuRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUyxcbiAgICBFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCA9IF9yZXF1aXJlJGNvZGVzLkVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5ELFxuICAgIEVSUl9VTktOT1dOX0VOQ09ESU5HID0gX3JlcXVpcmUkY29kZXMuRVJSX1VOS05PV05fRU5DT0RJTkc7XG5cbnZhciBlcnJvck9yRGVzdHJveSA9IGRlc3Ryb3lJbXBsLmVycm9yT3JEZXN0cm95O1xuXG5yZXF1aXJlKCdpbmhlcml0cycpKFdyaXRhYmxlLCBTdHJlYW0pO1xuXG5mdW5jdGlvbiBub3AoKSB7fVxuXG5mdW5jdGlvbiBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSwgaXNEdXBsZXgpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307IC8vIER1cGxleCBzdHJlYW1zIGFyZSBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZSwgYnV0IHNoYXJlXG4gIC8vIHRoZSBzYW1lIG9wdGlvbnMgb2JqZWN0LlxuICAvLyBIb3dldmVyLCBzb21lIGNhc2VzIHJlcXVpcmUgc2V0dGluZyBvcHRpb25zIHRvIGRpZmZlcmVudFxuICAvLyB2YWx1ZXMgZm9yIHRoZSByZWFkYWJsZSBhbmQgdGhlIHdyaXRhYmxlIHNpZGVzIG9mIHRoZSBkdXBsZXggc3RyZWFtLFxuICAvLyBlLmcuIG9wdGlvbnMucmVhZGFibGVPYmplY3RNb2RlIHZzLiBvcHRpb25zLndyaXRhYmxlT2JqZWN0TW9kZSwgZXRjLlxuXG4gIGlmICh0eXBlb2YgaXNEdXBsZXggIT09ICdib29sZWFuJykgaXNEdXBsZXggPSBzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXg7IC8vIG9iamVjdCBzdHJlYW0gZmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGlzIHN0cmVhbVxuICAvLyBjb250YWlucyBidWZmZXJzIG9yIG9iamVjdHMuXG5cbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG4gIGlmIChpc0R1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy53cml0YWJsZU9iamVjdE1vZGU7IC8vIHRoZSBwb2ludCBhdCB3aGljaCB3cml0ZSgpIHN0YXJ0cyByZXR1cm5pbmcgZmFsc2VcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyB0aGF0IHdlIGFsd2F5cyByZXR1cm4gZmFsc2UgaWZcbiAgLy8gdGhlIGVudGlyZSBidWZmZXIgaXMgbm90IGZsdXNoZWQgaW1tZWRpYXRlbHkgb24gd3JpdGUoKVxuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IGdldEhpZ2hXYXRlck1hcmsodGhpcywgb3B0aW9ucywgJ3dyaXRhYmxlSGlnaFdhdGVyTWFyaycsIGlzRHVwbGV4KTsgLy8gaWYgX2ZpbmFsIGhhcyBiZWVuIGNhbGxlZFxuXG4gIHRoaXMuZmluYWxDYWxsZWQgPSBmYWxzZTsgLy8gZHJhaW4gZXZlbnQgZmxhZy5cblxuICB0aGlzLm5lZWREcmFpbiA9IGZhbHNlOyAvLyBhdCB0aGUgc3RhcnQgb2YgY2FsbGluZyBlbmQoKVxuXG4gIHRoaXMuZW5kaW5nID0gZmFsc2U7IC8vIHdoZW4gZW5kKCkgaGFzIGJlZW4gY2FsbGVkLCBhbmQgcmV0dXJuZWRcblxuICB0aGlzLmVuZGVkID0gZmFsc2U7IC8vIHdoZW4gJ2ZpbmlzaCcgaXMgZW1pdHRlZFxuXG4gIHRoaXMuZmluaXNoZWQgPSBmYWxzZTsgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkXG5cbiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTsgLy8gc2hvdWxkIHdlIGRlY29kZSBzdHJpbmdzIGludG8gYnVmZmVycyBiZWZvcmUgcGFzc2luZyB0byBfd3JpdGU/XG4gIC8vIHRoaXMgaXMgaGVyZSBzbyB0aGF0IHNvbWUgbm9kZS1jb3JlIHN0cmVhbXMgY2FuIG9wdGltaXplIHN0cmluZ1xuICAvLyBoYW5kbGluZyBhdCBhIGxvd2VyIGxldmVsLlxuXG4gIHZhciBub0RlY29kZSA9IG9wdGlvbnMuZGVjb2RlU3RyaW5ncyA9PT0gZmFsc2U7XG4gIHRoaXMuZGVjb2RlU3RyaW5ncyA9ICFub0RlY29kZTsgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cblxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JzsgLy8gbm90IGFuIGFjdHVhbCBidWZmZXIgd2Uga2VlcCB0cmFjayBvZiwgYnV0IGEgbWVhc3VyZW1lbnRcbiAgLy8gb2YgaG93IG11Y2ggd2UncmUgd2FpdGluZyB0byBnZXQgcHVzaGVkIHRvIHNvbWUgdW5kZXJseWluZ1xuICAvLyBzb2NrZXQgb3IgZmlsZS5cblxuICB0aGlzLmxlbmd0aCA9IDA7IC8vIGEgZmxhZyB0byBzZWUgd2hlbiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGEgd3JpdGUuXG5cbiAgdGhpcy53cml0aW5nID0gZmFsc2U7IC8vIHdoZW4gdHJ1ZSBhbGwgd3JpdGVzIHdpbGwgYmUgYnVmZmVyZWQgdW50aWwgLnVuY29yaygpIGNhbGxcblxuICB0aGlzLmNvcmtlZCA9IDA7IC8vIGEgZmxhZyB0byBiZSBhYmxlIHRvIHRlbGwgaWYgdGhlIG9ud3JpdGUgY2IgaXMgY2FsbGVkIGltbWVkaWF0ZWx5LFxuICAvLyBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlIGFueVxuICAvLyBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCB3cml0ZSBjYWxsLlxuXG4gIHRoaXMuc3luYyA9IHRydWU7IC8vIGEgZmxhZyB0byBrbm93IGlmIHdlJ3JlIHByb2Nlc3NpbmcgcHJldmlvdXNseSBidWZmZXJlZCBpdGVtcywgd2hpY2hcbiAgLy8gbWF5IGNhbGwgdGhlIF93cml0ZSgpIGNhbGxiYWNrIGluIHRoZSBzYW1lIHRpY2ssIHNvIHRoYXQgd2UgZG9uJ3RcbiAgLy8gZW5kIHVwIGluIGFuIG92ZXJsYXBwZWQgb253cml0ZSBzaXR1YXRpb24uXG5cbiAgdGhpcy5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7IC8vIHRoZSBjYWxsYmFjayB0aGF0J3MgcGFzc2VkIHRvIF93cml0ZShjaHVuayxjYilcblxuICB0aGlzLm9ud3JpdGUgPSBmdW5jdGlvbiAoZXIpIHtcbiAgICBvbndyaXRlKHN0cmVhbSwgZXIpO1xuICB9OyAvLyB0aGUgY2FsbGJhY2sgdGhhdCB0aGUgdXNlciBzdXBwbGllcyB0byB3cml0ZShjaHVuayxlbmNvZGluZyxjYilcblxuXG4gIHRoaXMud3JpdGVjYiA9IG51bGw7IC8vIHRoZSBhbW91bnQgdGhhdCBpcyBiZWluZyB3cml0dGVuIHdoZW4gX3dyaXRlIGlzIGNhbGxlZC5cblxuICB0aGlzLndyaXRlbGVuID0gMDtcbiAgdGhpcy5idWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsOyAvLyBudW1iZXIgb2YgcGVuZGluZyB1c2VyLXN1cHBsaWVkIHdyaXRlIGNhbGxiYWNrc1xuICAvLyB0aGlzIG11c3QgYmUgMCBiZWZvcmUgJ2ZpbmlzaCcgY2FuIGJlIGVtaXR0ZWRcblxuICB0aGlzLnBlbmRpbmdjYiA9IDA7IC8vIGVtaXQgcHJlZmluaXNoIGlmIHRoZSBvbmx5IHRoaW5nIHdlJ3JlIHdhaXRpbmcgZm9yIGlzIF93cml0ZSBjYnNcbiAgLy8gVGhpcyBpcyByZWxldmFudCBmb3Igc3luY2hyb25vdXMgVHJhbnNmb3JtIHN0cmVhbXNcblxuICB0aGlzLnByZWZpbmlzaGVkID0gZmFsc2U7IC8vIFRydWUgaWYgdGhlIGVycm9yIHdhcyBhbHJlYWR5IGVtaXR0ZWQgYW5kIHNob3VsZCBub3QgYmUgdGhyb3duIGFnYWluXG5cbiAgdGhpcy5lcnJvckVtaXR0ZWQgPSBmYWxzZTsgLy8gU2hvdWxkIGNsb3NlIGJlIGVtaXR0ZWQgb24gZGVzdHJveS4gRGVmYXVsdHMgdG8gdHJ1ZS5cblxuICB0aGlzLmVtaXRDbG9zZSA9IG9wdGlvbnMuZW1pdENsb3NlICE9PSBmYWxzZTsgLy8gU2hvdWxkIC5kZXN0cm95KCkgYmUgY2FsbGVkIGFmdGVyICdmaW5pc2gnIChhbmQgcG90ZW50aWFsbHkgJ2VuZCcpXG5cbiAgdGhpcy5hdXRvRGVzdHJveSA9ICEhb3B0aW9ucy5hdXRvRGVzdHJveTsgLy8gY291bnQgYnVmZmVyZWQgcmVxdWVzdHNcblxuICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDsgLy8gYWxsb2NhdGUgdGhlIGZpcnN0IENvcmtlZFJlcXVlc3QsIHRoZXJlIGlzIGFsd2F5c1xuICAvLyBvbmUgYWxsb2NhdGVkIGFuZCBmcmVlIHRvIHVzZSwgYW5kIHdlIG1haW50YWluIGF0IG1vc3QgdHdvXG5cbiAgdGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBuZXcgQ29ya2VkUmVxdWVzdCh0aGlzKTtcbn1cblxuV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUuZ2V0QnVmZmVyID0gZnVuY3Rpb24gZ2V0QnVmZmVyKCkge1xuICB2YXIgY3VycmVudCA9IHRoaXMuYnVmZmVyZWRSZXF1ZXN0O1xuICB2YXIgb3V0ID0gW107XG5cbiAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICBvdXQucHVzaChjdXJyZW50KTtcbiAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICB9XG5cbiAgcmV0dXJuIG91dDtcbn07XG5cbihmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlU3RhdGUucHJvdG90eXBlLCAnYnVmZmVyJywge1xuICAgICAgZ2V0OiBpbnRlcm5hbFV0aWwuZGVwcmVjYXRlKGZ1bmN0aW9uIHdyaXRhYmxlU3RhdGVCdWZmZXJHZXR0ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ1ZmZlcigpO1xuICAgICAgfSwgJ193cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyICcgKyAnaW5zdGVhZC4nLCAnREVQMDAwMycpXG4gICAgfSk7XG4gIH0gY2F0Y2ggKF8pIHt9XG59KSgpOyAvLyBUZXN0IF93cml0YWJsZVN0YXRlIGZvciBpbmhlcml0YW5jZSB0byBhY2NvdW50IGZvciBEdXBsZXggc3RyZWFtcyxcbi8vIHdob3NlIHByb3RvdHlwZSBjaGFpbiBvbmx5IHBvaW50cyB0byBSZWFkYWJsZS5cblxuXG52YXIgcmVhbEhhc0luc3RhbmNlO1xuXG5pZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaGFzSW5zdGFuY2UgJiYgdHlwZW9mIEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdID09PSAnZnVuY3Rpb24nKSB7XG4gIHJlYWxIYXNJbnN0YW5jZSA9IEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUsIFN5bWJvbC5oYXNJbnN0YW5jZSwge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShvYmplY3QpIHtcbiAgICAgIGlmIChyZWFsSGFzSW5zdGFuY2UuY2FsbCh0aGlzLCBvYmplY3QpKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmICh0aGlzICE9PSBXcml0YWJsZSkgcmV0dXJuIGZhbHNlO1xuICAgICAgcmV0dXJuIG9iamVjdCAmJiBvYmplY3QuX3dyaXRhYmxlU3RhdGUgaW5zdGFuY2VvZiBXcml0YWJsZVN0YXRlO1xuICAgIH1cbiAgfSk7XG59IGVsc2Uge1xuICByZWFsSGFzSW5zdGFuY2UgPSBmdW5jdGlvbiByZWFsSGFzSW5zdGFuY2Uob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCBpbnN0YW5jZW9mIHRoaXM7XG4gIH07XG59XG5cbmZ1bmN0aW9uIFdyaXRhYmxlKG9wdGlvbnMpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTsgLy8gV3JpdGFibGUgY3RvciBpcyBhcHBsaWVkIHRvIER1cGxleGVzLCB0b28uXG4gIC8vIGByZWFsSGFzSW5zdGFuY2VgIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHVzaW5nIHBsYWluIGBpbnN0YW5jZW9mYFxuICAvLyB3b3VsZCByZXR1cm4gZmFsc2UsIGFzIG5vIGBfd3JpdGFibGVTdGF0ZWAgcHJvcGVydHkgaXMgYXR0YWNoZWQuXG4gIC8vIFRyeWluZyB0byB1c2UgdGhlIGN1c3RvbSBgaW5zdGFuY2VvZmAgZm9yIFdyaXRhYmxlIGhlcmUgd2lsbCBhbHNvIGJyZWFrIHRoZVxuICAvLyBOb2RlLmpzIExhenlUcmFuc2Zvcm0gaW1wbGVtZW50YXRpb24sIHdoaWNoIGhhcyBhIG5vbi10cml2aWFsIGdldHRlciBmb3JcbiAgLy8gYF93cml0YWJsZVN0YXRlYCB0aGF0IHdvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uLlxuICAvLyBDaGVja2luZyBmb3IgYSBTdHJlYW0uRHVwbGV4IGluc3RhbmNlIGlzIGZhc3RlciBoZXJlIGluc3RlYWQgb2YgaW5zaWRlXG4gIC8vIHRoZSBXcml0YWJsZVN0YXRlIGNvbnN0cnVjdG9yLCBhdCBsZWFzdCB3aXRoIFY4IDYuNVxuXG4gIHZhciBpc0R1cGxleCA9IHRoaXMgaW5zdGFuY2VvZiBEdXBsZXg7XG4gIGlmICghaXNEdXBsZXggJiYgIXJlYWxIYXNJbnN0YW5jZS5jYWxsKFdyaXRhYmxlLCB0aGlzKSkgcmV0dXJuIG5ldyBXcml0YWJsZShvcHRpb25zKTtcbiAgdGhpcy5fd3JpdGFibGVTdGF0ZSA9IG5ldyBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMsIGlzRHVwbGV4KTsgLy8gbGVnYWN5LlxuXG4gIHRoaXMud3JpdGFibGUgPSB0cnVlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRlID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZSA9IG9wdGlvbnMud3JpdGU7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRldiA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fd3JpdGV2ID0gb3B0aW9ucy53cml0ZXY7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHRoaXMuX2Rlc3Ryb3kgPSBvcHRpb25zLmRlc3Ryb3k7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZpbmFsID09PSAnZnVuY3Rpb24nKSB0aGlzLl9maW5hbCA9IG9wdGlvbnMuZmluYWw7XG4gIH1cblxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn0gLy8gT3RoZXJ3aXNlIHBlb3BsZSBjYW4gcGlwZSBXcml0YWJsZSBzdHJlYW1zLCB3aGljaCBpcyBqdXN0IHdyb25nLlxuXG5cbldyaXRhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKCkge1xuICBlcnJvck9yRGVzdHJveSh0aGlzLCBuZXcgRVJSX1NUUkVBTV9DQU5OT1RfUElQRSgpKTtcbn07XG5cbmZ1bmN0aW9uIHdyaXRlQWZ0ZXJFbmQoc3RyZWFtLCBjYikge1xuICB2YXIgZXIgPSBuZXcgRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQoKTsgLy8gVE9ETzogZGVmZXIgZXJyb3IgZXZlbnRzIGNvbnNpc3RlbnRseSBldmVyeXdoZXJlLCBub3QganVzdCB0aGUgY2JcblxuICBlcnJvck9yRGVzdHJveShzdHJlYW0sIGVyKTtcbiAgcHJvY2Vzcy5uZXh0VGljayhjYiwgZXIpO1xufSAvLyBDaGVja3MgdGhhdCBhIHVzZXItc3VwcGxpZWQgY2h1bmsgaXMgdmFsaWQsIGVzcGVjaWFsbHkgZm9yIHRoZSBwYXJ0aWN1bGFyXG4vLyBtb2RlIHRoZSBzdHJlYW0gaXMgaW4uIEN1cnJlbnRseSB0aGlzIG1lYW5zIHRoYXQgYG51bGxgIGlzIG5ldmVyIGFjY2VwdGVkXG4vLyBhbmQgdW5kZWZpbmVkL25vbi1zdHJpbmcgdmFsdWVzIGFyZSBvbmx5IGFsbG93ZWQgaW4gb2JqZWN0IG1vZGUuXG5cblxuZnVuY3Rpb24gdmFsaWRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgY2IpIHtcbiAgdmFyIGVyO1xuXG4gIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIGVyID0gbmV3IEVSUl9TVFJFQU1fTlVMTF9WQUxVRVMoKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgZXIgPSBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ2NodW5rJywgWydzdHJpbmcnLCAnQnVmZmVyJ10sIGNodW5rKTtcbiAgfVxuXG4gIGlmIChlcikge1xuICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXIpO1xuICAgIHByb2Nlc3MubmV4dFRpY2soY2IsIGVyKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuV3JpdGFibGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHJldCA9IGZhbHNlO1xuXG4gIHZhciBpc0J1ZiA9ICFzdGF0ZS5vYmplY3RNb2RlICYmIF9pc1VpbnQ4QXJyYXkoY2h1bmspO1xuXG4gIGlmIChpc0J1ZiAmJiAhQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkge1xuICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7XG4gIH1cblxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBlbmNvZGluZztcbiAgICBlbmNvZGluZyA9IG51bGw7XG4gIH1cblxuICBpZiAoaXNCdWYpIGVuY29kaW5nID0gJ2J1ZmZlcic7ZWxzZSBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9IHN0YXRlLmRlZmF1bHRFbmNvZGluZztcbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgY2IgPSBub3A7XG4gIGlmIChzdGF0ZS5lbmRpbmcpIHdyaXRlQWZ0ZXJFbmQodGhpcywgY2IpO2Vsc2UgaWYgKGlzQnVmIHx8IHZhbGlkQ2h1bmsodGhpcywgc3RhdGUsIGNodW5rLCBjYikpIHtcbiAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICByZXQgPSB3cml0ZU9yQnVmZmVyKHRoaXMsIHN0YXRlLCBpc0J1ZiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl93cml0YWJsZVN0YXRlLmNvcmtlZCsrO1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLnVuY29yayA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkLS07XG4gICAgaWYgKCFzdGF0ZS53cml0aW5nICYmICFzdGF0ZS5jb3JrZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSBjbGVhckJ1ZmZlcih0aGlzLCBzdGF0ZSk7XG4gIH1cbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2RpbmcgPSBmdW5jdGlvbiBzZXREZWZhdWx0RW5jb2RpbmcoZW5jb2RpbmcpIHtcbiAgLy8gbm9kZTo6UGFyc2VFbmNvZGluZygpIHJlcXVpcmVzIGxvd2VyIGNhc2UuXG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnKSBlbmNvZGluZyA9IGVuY29kaW5nLnRvTG93ZXJDYXNlKCk7XG4gIGlmICghKFsnaGV4JywgJ3V0ZjgnLCAndXRmLTgnLCAnYXNjaWknLCAnYmluYXJ5JywgJ2Jhc2U2NCcsICd1Y3MyJywgJ3Vjcy0yJywgJ3V0ZjE2bGUnLCAndXRmLTE2bGUnLCAncmF3J10uaW5kZXhPZigoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHRocm93IG5ldyBFUlJfVU5LTk9XTl9FTkNPRElORyhlbmNvZGluZyk7XG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHJldHVybiB0aGlzO1xufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLnByb3RvdHlwZSwgJ3dyaXRhYmxlQnVmZmVyJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSAmJiB0aGlzLl93cml0YWJsZVN0YXRlLmdldEJ1ZmZlcigpO1xuICB9XG59KTtcblxuZnVuY3Rpb24gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZykge1xuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgc3RhdGUuZGVjb2RlU3RyaW5ncyAhPT0gZmFsc2UgJiYgdHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgfVxuXG4gIHJldHVybiBjaHVuaztcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLnByb3RvdHlwZSwgJ3dyaXRhYmxlSGlnaFdhdGVyTWFyaycsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgfVxufSk7IC8vIGlmIHdlJ3JlIGFscmVhZHkgd3JpdGluZyBzb21ldGhpbmcsIHRoZW4ganVzdCBwdXQgdGhpc1xuLy8gaW4gdGhlIHF1ZXVlLCBhbmQgd2FpdCBvdXIgdHVybi4gIE90aGVyd2lzZSwgY2FsbCBfd3JpdGVcbi8vIElmIHdlIHJldHVybiBmYWxzZSwgdGhlbiB3ZSBuZWVkIGEgZHJhaW4gZXZlbnQsIHNvIHNldCB0aGF0IGZsYWcuXG5cbmZ1bmN0aW9uIHdyaXRlT3JCdWZmZXIoc3RyZWFtLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgaWYgKCFpc0J1Zikge1xuICAgIHZhciBuZXdDaHVuayA9IGRlY29kZUNodW5rKHN0YXRlLCBjaHVuaywgZW5jb2RpbmcpO1xuXG4gICAgaWYgKGNodW5rICE9PSBuZXdDaHVuaykge1xuICAgICAgaXNCdWYgPSB0cnVlO1xuICAgICAgZW5jb2RpbmcgPSAnYnVmZmVyJztcbiAgICAgIGNodW5rID0gbmV3Q2h1bms7XG4gICAgfVxuICB9XG5cbiAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICBzdGF0ZS5sZW5ndGggKz0gbGVuO1xuICB2YXIgcmV0ID0gc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyazsgLy8gd2UgbXVzdCBlbnN1cmUgdGhhdCBwcmV2aW91cyBuZWVkRHJhaW4gd2lsbCBub3QgYmUgcmVzZXQgdG8gZmFsc2UuXG5cbiAgaWYgKCFyZXQpIHN0YXRlLm5lZWREcmFpbiA9IHRydWU7XG5cbiAgaWYgKHN0YXRlLndyaXRpbmcgfHwgc3RhdGUuY29ya2VkKSB7XG4gICAgdmFyIGxhc3QgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSB7XG4gICAgICBjaHVuazogY2h1bmssXG4gICAgICBlbmNvZGluZzogZW5jb2RpbmcsXG4gICAgICBpc0J1ZjogaXNCdWYsXG4gICAgICBjYWxsYmFjazogY2IsXG4gICAgICBuZXh0OiBudWxsXG4gICAgfTtcblxuICAgIGlmIChsYXN0KSB7XG4gICAgICBsYXN0Lm5leHQgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIH1cblxuICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ICs9IDE7XG4gIH0gZWxzZSB7XG4gICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgd3JpdGV2LCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgc3RhdGUud3JpdGVsZW4gPSBsZW47XG4gIHN0YXRlLndyaXRlY2IgPSBjYjtcbiAgc3RhdGUud3JpdGluZyA9IHRydWU7XG4gIHN0YXRlLnN5bmMgPSB0cnVlO1xuICBpZiAoc3RhdGUuZGVzdHJveWVkKSBzdGF0ZS5vbndyaXRlKG5ldyBFUlJfU1RSRUFNX0RFU1RST1lFRCgnd3JpdGUnKSk7ZWxzZSBpZiAod3JpdGV2KSBzdHJlYW0uX3dyaXRldihjaHVuaywgc3RhdGUub253cml0ZSk7ZWxzZSBzdHJlYW0uX3dyaXRlKGNodW5rLCBlbmNvZGluZywgc3RhdGUub253cml0ZSk7XG4gIHN0YXRlLnN5bmMgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYikge1xuICAtLXN0YXRlLnBlbmRpbmdjYjtcblxuICBpZiAoc3luYykge1xuICAgIC8vIGRlZmVyIHRoZSBjYWxsYmFjayBpZiB3ZSBhcmUgYmVpbmcgY2FsbGVkIHN5bmNocm9ub3VzbHlcbiAgICAvLyB0byBhdm9pZCBwaWxpbmcgdXAgdGhpbmdzIG9uIHRoZSBzdGFja1xuICAgIHByb2Nlc3MubmV4dFRpY2soY2IsIGVyKTsgLy8gdGhpcyBjYW4gZW1pdCBmaW5pc2gsIGFuZCBpdCB3aWxsIGFsd2F5cyBoYXBwZW5cbiAgICAvLyBhZnRlciBlcnJvclxuXG4gICAgcHJvY2Vzcy5uZXh0VGljayhmaW5pc2hNYXliZSwgc3RyZWFtLCBzdGF0ZSk7XG4gICAgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBlcik7XG4gIH0gZWxzZSB7XG4gICAgLy8gdGhlIGNhbGxlciBleHBlY3QgdGhpcyB0byBoYXBwZW4gYmVmb3JlIGlmXG4gICAgLy8gaXQgaXMgYXN5bmNcbiAgICBjYihlcik7XG4gICAgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBlcik7IC8vIHRoaXMgY2FuIGVtaXQgZmluaXNoLCBidXQgZmluaXNoIG11c3RcbiAgICAvLyBhbHdheXMgZm9sbG93IGVycm9yXG5cbiAgICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpIHtcbiAgc3RhdGUud3JpdGluZyA9IGZhbHNlO1xuICBzdGF0ZS53cml0ZWNiID0gbnVsbDtcbiAgc3RhdGUubGVuZ3RoIC09IHN0YXRlLndyaXRlbGVuO1xuICBzdGF0ZS53cml0ZWxlbiA9IDA7XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGUoc3RyZWFtLCBlcikge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGU7XG4gIHZhciBzeW5jID0gc3RhdGUuc3luYztcbiAgdmFyIGNiID0gc3RhdGUud3JpdGVjYjtcbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgdGhyb3cgbmV3IEVSUl9NVUxUSVBMRV9DQUxMQkFDSygpO1xuICBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpO1xuICBpZiAoZXIpIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpO2Vsc2Uge1xuICAgIC8vIENoZWNrIGlmIHdlJ3JlIGFjdHVhbGx5IHJlYWR5IHRvIGZpbmlzaCwgYnV0IGRvbid0IGVtaXQgeWV0XG4gICAgdmFyIGZpbmlzaGVkID0gbmVlZEZpbmlzaChzdGF0ZSkgfHwgc3RyZWFtLmRlc3Ryb3llZDtcblxuICAgIGlmICghZmluaXNoZWQgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QpIHtcbiAgICAgIGNsZWFyQnVmZmVyKHN0cmVhbSwgc3RhdGUpO1xuICAgIH1cblxuICAgIGlmIChzeW5jKSB7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGFmdGVyV3JpdGUsIHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWZ0ZXJXcml0ZShzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpIHtcbiAgaWYgKCFmaW5pc2hlZCkgb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpO1xuICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgY2IoKTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG59IC8vIE11c3QgZm9yY2UgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIG9uIG5leHRUaWNrLCBzbyB0aGF0IHdlIGRvbid0XG4vLyBlbWl0ICdkcmFpbicgYmVmb3JlIHRoZSB3cml0ZSgpIGNvbnN1bWVyIGdldHMgdGhlICdmYWxzZScgcmV0dXJuXG4vLyB2YWx1ZSwgYW5kIGhhcyBhIGNoYW5jZSB0byBhdHRhY2ggYSAnZHJhaW4nIGxpc3RlbmVyLlxuXG5cbmZ1bmN0aW9uIG9ud3JpdGVEcmFpbihzdHJlYW0sIHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUubmVlZERyYWluKSB7XG4gICAgc3RhdGUubmVlZERyYWluID0gZmFsc2U7XG4gICAgc3RyZWFtLmVtaXQoJ2RyYWluJyk7XG4gIH1cbn0gLy8gaWYgdGhlcmUncyBzb21ldGhpbmcgaW4gdGhlIGJ1ZmZlciB3YWl0aW5nLCB0aGVuIHByb2Nlc3MgaXRcblxuXG5mdW5jdGlvbiBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKSB7XG4gIHN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgPSB0cnVlO1xuICB2YXIgZW50cnkgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3Q7XG5cbiAgaWYgKHN0cmVhbS5fd3JpdGV2ICYmIGVudHJ5ICYmIGVudHJ5Lm5leHQpIHtcbiAgICAvLyBGYXN0IGNhc2UsIHdyaXRlIGV2ZXJ5dGhpbmcgdXNpbmcgX3dyaXRldigpXG4gICAgdmFyIGwgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudDtcbiAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5KGwpO1xuICAgIHZhciBob2xkZXIgPSBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU7XG4gICAgaG9sZGVyLmVudHJ5ID0gZW50cnk7XG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICB2YXIgYWxsQnVmZmVycyA9IHRydWU7XG5cbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIGJ1ZmZlcltjb3VudF0gPSBlbnRyeTtcbiAgICAgIGlmICghZW50cnkuaXNCdWYpIGFsbEJ1ZmZlcnMgPSBmYWxzZTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuXG4gICAgYnVmZmVyLmFsbEJ1ZmZlcnMgPSBhbGxCdWZmZXJzO1xuICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgdHJ1ZSwgc3RhdGUubGVuZ3RoLCBidWZmZXIsICcnLCBob2xkZXIuZmluaXNoKTsgLy8gZG9Xcml0ZSBpcyBhbG1vc3QgYWx3YXlzIGFzeW5jLCBkZWZlciB0aGVzZSB0byBzYXZlIGEgYml0IG9mIHRpbWVcbiAgICAvLyBhcyB0aGUgaG90IHBhdGggZW5kcyB3aXRoIGRvV3JpdGVcblxuICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuXG4gICAgaWYgKGhvbGRlci5uZXh0KSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBob2xkZXIubmV4dDtcbiAgICAgIGhvbGRlci5uZXh0ID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gbmV3IENvcmtlZFJlcXVlc3Qoc3RhdGUpO1xuICAgIH1cblxuICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDtcbiAgfSBlbHNlIHtcbiAgICAvLyBTbG93IGNhc2UsIHdyaXRlIGNodW5rcyBvbmUtYnktb25lXG4gICAgd2hpbGUgKGVudHJ5KSB7XG4gICAgICB2YXIgY2h1bmsgPSBlbnRyeS5jaHVuaztcbiAgICAgIHZhciBlbmNvZGluZyA9IGVudHJ5LmVuY29kaW5nO1xuICAgICAgdmFyIGNiID0gZW50cnkuY2FsbGJhY2s7XG4gICAgICB2YXIgbGVuID0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG4gICAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQtLTsgLy8gaWYgd2UgZGlkbid0IGNhbGwgdGhlIG9ud3JpdGUgaW1tZWRpYXRlbHksIHRoZW5cbiAgICAgIC8vIGl0IG1lYW5zIHRoYXQgd2UgbmVlZCB0byB3YWl0IHVudGlsIGl0IGRvZXMuXG4gICAgICAvLyBhbHNvLCB0aGF0IG1lYW5zIHRoYXQgdGhlIGNodW5rIGFuZCBjYiBhcmUgY3VycmVudGx5XG4gICAgICAvLyBiZWluZyBwcm9jZXNzZWQsIHNvIG1vdmUgdGhlIGJ1ZmZlciBjb3VudGVyIHBhc3QgdGhlbS5cblxuICAgICAgaWYgKHN0YXRlLndyaXRpbmcpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVudHJ5ID09PSBudWxsKSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IGVudHJ5O1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG59XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihuZXcgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQoJ193cml0ZSgpJykpO1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLl93cml0ZXYgPSBudWxsO1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAodHlwZW9mIGNodW5rID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBjaHVuaztcbiAgICBjaHVuayA9IG51bGw7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gZW5jb2Rpbmc7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9XG5cbiAgaWYgKGNodW5rICE9PSBudWxsICYmIGNodW5rICE9PSB1bmRlZmluZWQpIHRoaXMud3JpdGUoY2h1bmssIGVuY29kaW5nKTsgLy8gLmVuZCgpIGZ1bGx5IHVuY29ya3NcblxuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkID0gMTtcbiAgICB0aGlzLnVuY29yaygpO1xuICB9IC8vIGlnbm9yZSB1bm5lY2Vzc2FyeSBlbmQoKSBjYWxscy5cblxuXG4gIGlmICghc3RhdGUuZW5kaW5nKSBlbmRXcml0YWJsZSh0aGlzLCBzdGF0ZSwgY2IpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICd3cml0YWJsZUxlbmd0aCcsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUubGVuZ3RoO1xuICB9XG59KTtcblxuZnVuY3Rpb24gbmVlZEZpbmlzaChzdGF0ZSkge1xuICByZXR1cm4gc3RhdGUuZW5kaW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPT09IG51bGwgJiYgIXN0YXRlLmZpbmlzaGVkICYmICFzdGF0ZS53cml0aW5nO1xufVxuXG5mdW5jdGlvbiBjYWxsRmluYWwoc3RyZWFtLCBzdGF0ZSkge1xuICBzdHJlYW0uX2ZpbmFsKGZ1bmN0aW9uIChlcnIpIHtcbiAgICBzdGF0ZS5wZW5kaW5nY2ItLTtcblxuICAgIGlmIChlcnIpIHtcbiAgICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXJyKTtcbiAgICB9XG5cbiAgICBzdGF0ZS5wcmVmaW5pc2hlZCA9IHRydWU7XG4gICAgc3RyZWFtLmVtaXQoJ3ByZWZpbmlzaCcpO1xuICAgIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5wcmVmaW5pc2hlZCAmJiAhc3RhdGUuZmluYWxDYWxsZWQpIHtcbiAgICBpZiAodHlwZW9mIHN0cmVhbS5fZmluYWwgPT09ICdmdW5jdGlvbicgJiYgIXN0YXRlLmRlc3Ryb3llZCkge1xuICAgICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgICBzdGF0ZS5maW5hbENhbGxlZCA9IHRydWU7XG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxGaW5hbCwgc3RyZWFtLCBzdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLnByZWZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5lbWl0KCdwcmVmaW5pc2gnKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSkge1xuICB2YXIgbmVlZCA9IG5lZWRGaW5pc2goc3RhdGUpO1xuXG4gIGlmIChuZWVkKSB7XG4gICAgcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpO1xuXG4gICAgaWYgKHN0YXRlLnBlbmRpbmdjYiA9PT0gMCkge1xuICAgICAgc3RhdGUuZmluaXNoZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLmVtaXQoJ2ZpbmlzaCcpO1xuXG4gICAgICBpZiAoc3RhdGUuYXV0b0Rlc3Ryb3kpIHtcbiAgICAgICAgLy8gSW4gY2FzZSBvZiBkdXBsZXggc3RyZWFtcyB3ZSBuZWVkIGEgd2F5IHRvIGRldGVjdFxuICAgICAgICAvLyBpZiB0aGUgcmVhZGFibGUgc2lkZSBpcyByZWFkeSBmb3IgYXV0b0Rlc3Ryb3kgYXMgd2VsbFxuICAgICAgICB2YXIgclN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuXG4gICAgICAgIGlmICghclN0YXRlIHx8IHJTdGF0ZS5hdXRvRGVzdHJveSAmJiByU3RhdGUuZW5kRW1pdHRlZCkge1xuICAgICAgICAgIHN0cmVhbS5kZXN0cm95KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmVlZDtcbn1cblxuZnVuY3Rpb24gZW5kV3JpdGFibGUoc3RyZWFtLCBzdGF0ZSwgY2IpIHtcbiAgc3RhdGUuZW5kaW5nID0gdHJ1ZTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG5cbiAgaWYgKGNiKSB7XG4gICAgaWYgKHN0YXRlLmZpbmlzaGVkKSBwcm9jZXNzLm5leHRUaWNrKGNiKTtlbHNlIHN0cmVhbS5vbmNlKCdmaW5pc2gnLCBjYik7XG4gIH1cblxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gIHN0cmVhbS53cml0YWJsZSA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBvbkNvcmtlZEZpbmlzaChjb3JrUmVxLCBzdGF0ZSwgZXJyKSB7XG4gIHZhciBlbnRyeSA9IGNvcmtSZXEuZW50cnk7XG4gIGNvcmtSZXEuZW50cnkgPSBudWxsO1xuXG4gIHdoaWxlIChlbnRyeSkge1xuICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgIHN0YXRlLnBlbmRpbmdjYi0tO1xuICAgIGNiKGVycik7XG4gICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICB9IC8vIHJldXNlIHRoZSBmcmVlIGNvcmtSZXEuXG5cblxuICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dCA9IGNvcmtSZXE7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIGlmICh0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtXG4gICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgIGlmICghdGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseVxuICAgIC8vIG1hbmFnaW5nIGRlc3Ryb3llZFxuXG5cbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTtcbldyaXRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTtcbldyaXRhYmxlLnByb3RvdHlwZS5fdW5kZXN0cm95ID0gZGVzdHJveUltcGwudW5kZXN0cm95O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICBjYihlcnIpO1xufTsiLCIndXNlIHN0cmljdCc7XG5cbnZhciBfT2JqZWN0JHNldFByb3RvdHlwZU87XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbnZhciBmaW5pc2hlZCA9IHJlcXVpcmUoJy4vZW5kLW9mLXN0cmVhbScpO1xuXG52YXIga0xhc3RSZXNvbHZlID0gU3ltYm9sKCdsYXN0UmVzb2x2ZScpO1xudmFyIGtMYXN0UmVqZWN0ID0gU3ltYm9sKCdsYXN0UmVqZWN0Jyk7XG52YXIga0Vycm9yID0gU3ltYm9sKCdlcnJvcicpO1xudmFyIGtFbmRlZCA9IFN5bWJvbCgnZW5kZWQnKTtcbnZhciBrTGFzdFByb21pc2UgPSBTeW1ib2woJ2xhc3RQcm9taXNlJyk7XG52YXIga0hhbmRsZVByb21pc2UgPSBTeW1ib2woJ2hhbmRsZVByb21pc2UnKTtcbnZhciBrU3RyZWFtID0gU3ltYm9sKCdzdHJlYW0nKTtcblxuZnVuY3Rpb24gY3JlYXRlSXRlclJlc3VsdCh2YWx1ZSwgZG9uZSkge1xuICByZXR1cm4ge1xuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBkb25lOiBkb25lXG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlYWRBbmRSZXNvbHZlKGl0ZXIpIHtcbiAgdmFyIHJlc29sdmUgPSBpdGVyW2tMYXN0UmVzb2x2ZV07XG5cbiAgaWYgKHJlc29sdmUgIT09IG51bGwpIHtcbiAgICB2YXIgZGF0YSA9IGl0ZXJba1N0cmVhbV0ucmVhZCgpOyAvLyB3ZSBkZWZlciBpZiBkYXRhIGlzIG51bGxcbiAgICAvLyB3ZSBjYW4gYmUgZXhwZWN0aW5nIGVpdGhlciAnZW5kJyBvclxuICAgIC8vICdlcnJvcidcblxuICAgIGlmIChkYXRhICE9PSBudWxsKSB7XG4gICAgICBpdGVyW2tMYXN0UHJvbWlzZV0gPSBudWxsO1xuICAgICAgaXRlcltrTGFzdFJlc29sdmVdID0gbnVsbDtcbiAgICAgIGl0ZXJba0xhc3RSZWplY3RdID0gbnVsbDtcbiAgICAgIHJlc29sdmUoY3JlYXRlSXRlclJlc3VsdChkYXRhLCBmYWxzZSkpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBvblJlYWRhYmxlKGl0ZXIpIHtcbiAgLy8gd2Ugd2FpdCBmb3IgdGhlIG5leHQgdGljaywgYmVjYXVzZSBpdCBtaWdodFxuICAvLyBlbWl0IGFuIGVycm9yIHdpdGggcHJvY2Vzcy5uZXh0VGlja1xuICBwcm9jZXNzLm5leHRUaWNrKHJlYWRBbmRSZXNvbHZlLCBpdGVyKTtcbn1cblxuZnVuY3Rpb24gd3JhcEZvck5leHQobGFzdFByb21pc2UsIGl0ZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBsYXN0UHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChpdGVyW2tFbmRlZF0pIHtcbiAgICAgICAgcmVzb2x2ZShjcmVhdGVJdGVyUmVzdWx0KHVuZGVmaW5lZCwgdHJ1ZSkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGl0ZXJba0hhbmRsZVByb21pc2VdKHJlc29sdmUsIHJlamVjdCk7XG4gICAgfSwgcmVqZWN0KTtcbiAgfTtcbn1cblxudmFyIEFzeW5jSXRlcmF0b3JQcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZnVuY3Rpb24gKCkge30pO1xudmFyIFJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvclByb3RvdHlwZSA9IE9iamVjdC5zZXRQcm90b3R5cGVPZigoX09iamVjdCRzZXRQcm90b3R5cGVPID0ge1xuICBnZXQgc3RyZWFtKCkge1xuICAgIHJldHVybiB0aGlzW2tTdHJlYW1dO1xuICB9LFxuXG4gIG5leHQ6IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIC8vIGlmIHdlIGhhdmUgZGV0ZWN0ZWQgYW4gZXJyb3IgaW4gdGhlIG1lYW53aGlsZVxuICAgIC8vIHJlamVjdCBzdHJhaWdodCBhd2F5XG4gICAgdmFyIGVycm9yID0gdGhpc1trRXJyb3JdO1xuXG4gICAgaWYgKGVycm9yICE9PSBudWxsKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgIH1cblxuICAgIGlmICh0aGlzW2tFbmRlZF0pIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY3JlYXRlSXRlclJlc3VsdCh1bmRlZmluZWQsIHRydWUpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpc1trU3RyZWFtXS5kZXN0cm95ZWQpIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gZGVmZXIgdmlhIG5leHRUaWNrIGJlY2F1c2UgaWYgLmRlc3Ryb3koZXJyKSBpc1xuICAgICAgLy8gY2FsbGVkLCB0aGUgZXJyb3Igd2lsbCBiZSBlbWl0dGVkIHZpYSBuZXh0VGljaywgYW5kXG4gICAgICAvLyB3ZSBjYW5ub3QgZ3VhcmFudGVlIHRoYXQgdGhlcmUgaXMgbm8gZXJyb3IgbGluZ2VyaW5nIGFyb3VuZFxuICAgICAgLy8gd2FpdGluZyB0byBiZSBlbWl0dGVkLlxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaWYgKF90aGlzW2tFcnJvcl0pIHtcbiAgICAgICAgICAgIHJlamVjdChfdGhpc1trRXJyb3JdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzb2x2ZShjcmVhdGVJdGVyUmVzdWx0KHVuZGVmaW5lZCwgdHJ1ZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9IC8vIGlmIHdlIGhhdmUgbXVsdGlwbGUgbmV4dCgpIGNhbGxzXG4gICAgLy8gd2Ugd2lsbCB3YWl0IGZvciB0aGUgcHJldmlvdXMgUHJvbWlzZSB0byBmaW5pc2hcbiAgICAvLyB0aGlzIGxvZ2ljIGlzIG9wdGltaXplZCB0byBzdXBwb3J0IGZvciBhd2FpdCBsb29wcyxcbiAgICAvLyB3aGVyZSBuZXh0KCkgaXMgb25seSBjYWxsZWQgb25jZSBhdCBhIHRpbWVcblxuXG4gICAgdmFyIGxhc3RQcm9taXNlID0gdGhpc1trTGFzdFByb21pc2VdO1xuICAgIHZhciBwcm9taXNlO1xuXG4gICAgaWYgKGxhc3RQcm9taXNlKSB7XG4gICAgICBwcm9taXNlID0gbmV3IFByb21pc2Uod3JhcEZvck5leHQobGFzdFByb21pc2UsIHRoaXMpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZmFzdCBwYXRoIG5lZWRlZCB0byBzdXBwb3J0IG11bHRpcGxlIHRoaXMucHVzaCgpXG4gICAgICAvLyB3aXRob3V0IHRyaWdnZXJpbmcgdGhlIG5leHQoKSBxdWV1ZVxuICAgICAgdmFyIGRhdGEgPSB0aGlzW2tTdHJlYW1dLnJlYWQoKTtcblxuICAgICAgaWYgKGRhdGEgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjcmVhdGVJdGVyUmVzdWx0KGRhdGEsIGZhbHNlKSk7XG4gICAgICB9XG5cbiAgICAgIHByb21pc2UgPSBuZXcgUHJvbWlzZSh0aGlzW2tIYW5kbGVQcm9taXNlXSk7XG4gICAgfVxuXG4gICAgdGhpc1trTGFzdFByb21pc2VdID0gcHJvbWlzZTtcbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxufSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3Qkc2V0UHJvdG90eXBlTywgU3ltYm9sLmFzeW5jSXRlcmF0b3IsIGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXM7XG59KSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3Qkc2V0UHJvdG90eXBlTywgXCJyZXR1cm5cIiwgZnVuY3Rpb24gX3JldHVybigpIHtcbiAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgLy8gZGVzdHJveShlcnIsIGNiKSBpcyBhIHByaXZhdGUgQVBJXG4gIC8vIHdlIGNhbiBndWFyYW50ZWUgd2UgaGF2ZSB0aGF0IGhlcmUsIGJlY2F1c2Ugd2UgY29udHJvbCB0aGVcbiAgLy8gUmVhZGFibGUgY2xhc3MgdGhpcyBpcyBhdHRhY2hlZCB0b1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIF90aGlzMltrU3RyZWFtXS5kZXN0cm95KG51bGwsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVzb2x2ZShjcmVhdGVJdGVyUmVzdWx0KHVuZGVmaW5lZCwgdHJ1ZSkpO1xuICAgIH0pO1xuICB9KTtcbn0pLCBfT2JqZWN0JHNldFByb3RvdHlwZU8pLCBBc3luY0l0ZXJhdG9yUHJvdG90eXBlKTtcblxudmFyIGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvciA9IGZ1bmN0aW9uIGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvcihzdHJlYW0pIHtcbiAgdmFyIF9PYmplY3QkY3JlYXRlO1xuXG4gIHZhciBpdGVyYXRvciA9IE9iamVjdC5jcmVhdGUoUmVhZGFibGVTdHJlYW1Bc3luY0l0ZXJhdG9yUHJvdG90eXBlLCAoX09iamVjdCRjcmVhdGUgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3QkY3JlYXRlLCBrU3RyZWFtLCB7XG4gICAgdmFsdWU6IHN0cmVhbSxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3QkY3JlYXRlLCBrTGFzdFJlc29sdmUsIHtcbiAgICB2YWx1ZTogbnVsbCxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3QkY3JlYXRlLCBrTGFzdFJlamVjdCwge1xuICAgIHZhbHVlOiBudWxsLFxuICAgIHdyaXRhYmxlOiB0cnVlXG4gIH0pLCBfZGVmaW5lUHJvcGVydHkoX09iamVjdCRjcmVhdGUsIGtFcnJvciwge1xuICAgIHZhbHVlOiBudWxsLFxuICAgIHdyaXRhYmxlOiB0cnVlXG4gIH0pLCBfZGVmaW5lUHJvcGVydHkoX09iamVjdCRjcmVhdGUsIGtFbmRlZCwge1xuICAgIHZhbHVlOiBzdHJlYW0uX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3QkY3JlYXRlLCBrSGFuZGxlUHJvbWlzZSwge1xuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBkYXRhID0gaXRlcmF0b3Jba1N0cmVhbV0ucmVhZCgpO1xuXG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICBpdGVyYXRvcltrTGFzdFByb21pc2VdID0gbnVsbDtcbiAgICAgICAgaXRlcmF0b3Jba0xhc3RSZXNvbHZlXSA9IG51bGw7XG4gICAgICAgIGl0ZXJhdG9yW2tMYXN0UmVqZWN0XSA9IG51bGw7XG4gICAgICAgIHJlc29sdmUoY3JlYXRlSXRlclJlc3VsdChkYXRhLCBmYWxzZSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlcmF0b3Jba0xhc3RSZXNvbHZlXSA9IHJlc29sdmU7XG4gICAgICAgIGl0ZXJhdG9yW2tMYXN0UmVqZWN0XSA9IHJlamVjdDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHdyaXRhYmxlOiB0cnVlXG4gIH0pLCBfT2JqZWN0JGNyZWF0ZSkpO1xuICBpdGVyYXRvcltrTGFzdFByb21pc2VdID0gbnVsbDtcbiAgZmluaXNoZWQoc3RyZWFtLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKGVyciAmJiBlcnIuY29kZSAhPT0gJ0VSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFJykge1xuICAgICAgdmFyIHJlamVjdCA9IGl0ZXJhdG9yW2tMYXN0UmVqZWN0XTsgLy8gcmVqZWN0IGlmIHdlIGFyZSB3YWl0aW5nIGZvciBkYXRhIGluIHRoZSBQcm9taXNlXG4gICAgICAvLyByZXR1cm5lZCBieSBuZXh0KCkgYW5kIHN0b3JlIHRoZSBlcnJvclxuXG4gICAgICBpZiAocmVqZWN0ICE9PSBudWxsKSB7XG4gICAgICAgIGl0ZXJhdG9yW2tMYXN0UHJvbWlzZV0gPSBudWxsO1xuICAgICAgICBpdGVyYXRvcltrTGFzdFJlc29sdmVdID0gbnVsbDtcbiAgICAgICAgaXRlcmF0b3Jba0xhc3RSZWplY3RdID0gbnVsbDtcbiAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICB9XG5cbiAgICAgIGl0ZXJhdG9yW2tFcnJvcl0gPSBlcnI7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHJlc29sdmUgPSBpdGVyYXRvcltrTGFzdFJlc29sdmVdO1xuXG4gICAgaWYgKHJlc29sdmUgIT09IG51bGwpIHtcbiAgICAgIGl0ZXJhdG9yW2tMYXN0UHJvbWlzZV0gPSBudWxsO1xuICAgICAgaXRlcmF0b3Jba0xhc3RSZXNvbHZlXSA9IG51bGw7XG4gICAgICBpdGVyYXRvcltrTGFzdFJlamVjdF0gPSBudWxsO1xuICAgICAgcmVzb2x2ZShjcmVhdGVJdGVyUmVzdWx0KHVuZGVmaW5lZCwgdHJ1ZSkpO1xuICAgIH1cblxuICAgIGl0ZXJhdG9yW2tFbmRlZF0gPSB0cnVlO1xuICB9KTtcbiAgc3RyZWFtLm9uKCdyZWFkYWJsZScsIG9uUmVhZGFibGUuYmluZChudWxsLCBpdGVyYXRvcikpO1xuICByZXR1cm4gaXRlcmF0b3I7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvcjsiLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkgeyB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7IGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7IHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmplY3QpOyBpZiAoZW51bWVyYWJsZU9ubHkpIHN5bWJvbHMgPSBzeW1ib2xzLmZpbHRlcihmdW5jdGlvbiAoc3ltKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCwgc3ltKS5lbnVtZXJhYmxlOyB9KTsga2V5cy5wdXNoLmFwcGx5KGtleXMsIHN5bWJvbHMpOyB9IHJldHVybiBrZXlzOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RTcHJlYWQodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV0gIT0gbnVsbCA/IGFyZ3VtZW50c1tpXSA6IHt9OyBpZiAoaSAlIDIpIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSwgdHJ1ZSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycykgeyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHNvdXJjZSkpOyB9IGVsc2UgeyBvd25LZXlzKE9iamVjdChzb3VyY2UpKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7IH0pOyB9IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbnZhciBfcmVxdWlyZSA9IHJlcXVpcmUoJ2J1ZmZlcicpLFxuICAgIEJ1ZmZlciA9IF9yZXF1aXJlLkJ1ZmZlcjtcblxudmFyIF9yZXF1aXJlMiA9IHJlcXVpcmUoJ3V0aWwnKSxcbiAgICBpbnNwZWN0ID0gX3JlcXVpcmUyLmluc3BlY3Q7XG5cbnZhciBjdXN0b20gPSBpbnNwZWN0ICYmIGluc3BlY3QuY3VzdG9tIHx8ICdpbnNwZWN0JztcblxuZnVuY3Rpb24gY29weUJ1ZmZlcihzcmMsIHRhcmdldCwgb2Zmc2V0KSB7XG4gIEJ1ZmZlci5wcm90b3R5cGUuY29weS5jYWxsKHNyYywgdGFyZ2V0LCBvZmZzZXQpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEJ1ZmZlckxpc3QoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJ1ZmZlckxpc3QpO1xuXG4gICAgdGhpcy5oZWFkID0gbnVsbDtcbiAgICB0aGlzLnRhaWwgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhCdWZmZXJMaXN0LCBbe1xuICAgIGtleTogXCJwdXNoXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHB1c2godikge1xuICAgICAgdmFyIGVudHJ5ID0ge1xuICAgICAgICBkYXRhOiB2LFxuICAgICAgICBuZXh0OiBudWxsXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID4gMCkgdGhpcy50YWlsLm5leHQgPSBlbnRyeTtlbHNlIHRoaXMuaGVhZCA9IGVudHJ5O1xuICAgICAgdGhpcy50YWlsID0gZW50cnk7XG4gICAgICArK3RoaXMubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ1bnNoaWZ0XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHVuc2hpZnQodikge1xuICAgICAgdmFyIGVudHJ5ID0ge1xuICAgICAgICBkYXRhOiB2LFxuICAgICAgICBuZXh0OiB0aGlzLmhlYWRcbiAgICAgIH07XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHRoaXMudGFpbCA9IGVudHJ5O1xuICAgICAgdGhpcy5oZWFkID0gZW50cnk7XG4gICAgICArK3RoaXMubGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJzaGlmdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzaGlmdCgpIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgICAgdmFyIHJldCA9IHRoaXMuaGVhZC5kYXRhO1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO2Vsc2UgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7XG4gICAgICAtLXRoaXMubGVuZ3RoO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiY2xlYXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgICB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO1xuICAgICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJqb2luXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGpvaW4ocykge1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gICAgICB2YXIgcCA9IHRoaXMuaGVhZDtcbiAgICAgIHZhciByZXQgPSAnJyArIHAuZGF0YTtcblxuICAgICAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICAgICAgcmV0ICs9IHMgKyBwLmRhdGE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNvbmNhdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBjb25jYXQobikge1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gQnVmZmVyLmFsbG9jKDApO1xuICAgICAgdmFyIHJldCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuID4+PiAwKTtcbiAgICAgIHZhciBwID0gdGhpcy5oZWFkO1xuICAgICAgdmFyIGkgPSAwO1xuXG4gICAgICB3aGlsZSAocCkge1xuICAgICAgICBjb3B5QnVmZmVyKHAuZGF0YSwgcmV0LCBpKTtcbiAgICAgICAgaSArPSBwLmRhdGEubGVuZ3RoO1xuICAgICAgICBwID0gcC5uZXh0O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gLy8gQ29uc3VtZXMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIGJ5dGVzIG9yIGNoYXJhY3RlcnMgZnJvbSB0aGUgYnVmZmVyZWQgZGF0YS5cblxuICB9LCB7XG4gICAga2V5OiBcImNvbnN1bWVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29uc3VtZShuLCBoYXNTdHJpbmdzKSB7XG4gICAgICB2YXIgcmV0O1xuXG4gICAgICBpZiAobiA8IHRoaXMuaGVhZC5kYXRhLmxlbmd0aCkge1xuICAgICAgICAvLyBgc2xpY2VgIGlzIHRoZSBzYW1lIGZvciBidWZmZXJzIGFuZCBzdHJpbmdzLlxuICAgICAgICByZXQgPSB0aGlzLmhlYWQuZGF0YS5zbGljZSgwLCBuKTtcbiAgICAgICAgdGhpcy5oZWFkLmRhdGEgPSB0aGlzLmhlYWQuZGF0YS5zbGljZShuKTtcbiAgICAgIH0gZWxzZSBpZiAobiA9PT0gdGhpcy5oZWFkLmRhdGEubGVuZ3RoKSB7XG4gICAgICAgIC8vIEZpcnN0IGNodW5rIGlzIGEgcGVyZmVjdCBtYXRjaC5cbiAgICAgICAgcmV0ID0gdGhpcy5zaGlmdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUmVzdWx0IHNwYW5zIG1vcmUgdGhhbiBvbmUgYnVmZmVyLlxuICAgICAgICByZXQgPSBoYXNTdHJpbmdzID8gdGhpcy5fZ2V0U3RyaW5nKG4pIDogdGhpcy5fZ2V0QnVmZmVyKG4pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJmaXJzdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBmaXJzdCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmhlYWQuZGF0YTtcbiAgICB9IC8vIENvbnN1bWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBjaGFyYWN0ZXJzIGZyb20gdGhlIGJ1ZmZlcmVkIGRhdGEuXG5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0U3RyaW5nXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRTdHJpbmcobikge1xuICAgICAgdmFyIHAgPSB0aGlzLmhlYWQ7XG4gICAgICB2YXIgYyA9IDE7XG4gICAgICB2YXIgcmV0ID0gcC5kYXRhO1xuICAgICAgbiAtPSByZXQubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgICAgICB2YXIgc3RyID0gcC5kYXRhO1xuICAgICAgICB2YXIgbmIgPSBuID4gc3RyLmxlbmd0aCA/IHN0ci5sZW5ndGggOiBuO1xuICAgICAgICBpZiAobmIgPT09IHN0ci5sZW5ndGgpIHJldCArPSBzdHI7ZWxzZSByZXQgKz0gc3RyLnNsaWNlKDAsIG4pO1xuICAgICAgICBuIC09IG5iO1xuXG4gICAgICAgIGlmIChuID09PSAwKSB7XG4gICAgICAgICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSB7XG4gICAgICAgICAgICArK2M7XG4gICAgICAgICAgICBpZiAocC5uZXh0KSB0aGlzLmhlYWQgPSBwLm5leHQ7ZWxzZSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhlYWQgPSBwO1xuICAgICAgICAgICAgcC5kYXRhID0gc3RyLnNsaWNlKG5iKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgICsrYztcbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggLT0gYztcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSAvLyBDb25zdW1lcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgYnVmZmVyZWQgZGF0YS5cblxuICB9LCB7XG4gICAga2V5OiBcIl9nZXRCdWZmZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2dldEJ1ZmZlcihuKSB7XG4gICAgICB2YXIgcmV0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKG4pO1xuICAgICAgdmFyIHAgPSB0aGlzLmhlYWQ7XG4gICAgICB2YXIgYyA9IDE7XG4gICAgICBwLmRhdGEuY29weShyZXQpO1xuICAgICAgbiAtPSBwLmRhdGEubGVuZ3RoO1xuXG4gICAgICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgICAgICB2YXIgYnVmID0gcC5kYXRhO1xuICAgICAgICB2YXIgbmIgPSBuID4gYnVmLmxlbmd0aCA/IGJ1Zi5sZW5ndGggOiBuO1xuICAgICAgICBidWYuY29weShyZXQsIHJldC5sZW5ndGggLSBuLCAwLCBuYik7XG4gICAgICAgIG4gLT0gbmI7XG5cbiAgICAgICAgaWYgKG4gPT09IDApIHtcbiAgICAgICAgICBpZiAobmIgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgICAgICsrYztcbiAgICAgICAgICAgIGlmIChwLm5leHQpIHRoaXMuaGVhZCA9IHAubmV4dDtlbHNlIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaGVhZCA9IHA7XG4gICAgICAgICAgICBwLmRhdGEgPSBidWYuc2xpY2UobmIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgKytjO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCAtPSBjO1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IC8vIE1ha2Ugc3VyZSB0aGUgbGlua2VkIGxpc3Qgb25seSBzaG93cyB0aGUgbWluaW1hbCBuZWNlc3NhcnkgaW5mb3JtYXRpb24uXG5cbiAgfSwge1xuICAgIGtleTogY3VzdG9tLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZShfLCBvcHRpb25zKSB7XG4gICAgICByZXR1cm4gaW5zcGVjdCh0aGlzLCBfb2JqZWN0U3ByZWFkKHt9LCBvcHRpb25zLCB7XG4gICAgICAgIC8vIE9ubHkgaW5zcGVjdCBvbmUgbGV2ZWwuXG4gICAgICAgIGRlcHRoOiAwLFxuICAgICAgICAvLyBJdCBzaG91bGQgbm90IHJlY3Vyc2UuXG4gICAgICAgIGN1c3RvbUluc3BlY3Q6IGZhbHNlXG4gICAgICB9KSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEJ1ZmZlckxpc3Q7XG59KCk7IiwiJ3VzZSBzdHJpY3QnOyAvLyB1bmRvY3VtZW50ZWQgY2IoKSBBUEksIG5lZWRlZCBmb3IgY29yZSwgbm90IGZvciBwdWJsaWMgQVBJXG5cbmZ1bmN0aW9uIGRlc3Ryb3koZXJyLCBjYikge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHZhciByZWFkYWJsZURlc3Ryb3llZCA9IHRoaXMuX3JlYWRhYmxlU3RhdGUgJiYgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIHZhciB3cml0YWJsZURlc3Ryb3llZCA9IHRoaXMuX3dyaXRhYmxlU3RhdGUgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG5cbiAgaWYgKHJlYWRhYmxlRGVzdHJveWVkIHx8IHdyaXRhYmxlRGVzdHJveWVkKSB7XG4gICAgaWYgKGNiKSB7XG4gICAgICBjYihlcnIpO1xuICAgIH0gZWxzZSBpZiAoZXJyKSB7XG4gICAgICBpZiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0RXJyb3JOVCwgdGhpcywgZXJyKTtcbiAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkKSB7XG4gICAgICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gdHJ1ZTtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0RXJyb3JOVCwgdGhpcywgZXJyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSAvLyB3ZSBzZXQgZGVzdHJveWVkIHRvIHRydWUgYmVmb3JlIGZpcmluZyBlcnJvciBjYWxsYmFja3MgaW4gb3JkZXJcbiAgLy8gdG8gbWFrZSBpdCByZS1lbnRyYW5jZSBzYWZlIGluIGNhc2UgZGVzdHJveSgpIGlzIGNhbGxlZCB3aXRoaW4gY2FsbGJhY2tzXG5cblxuICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfSAvLyBpZiB0aGlzIGlzIGEgZHVwbGV4IHN0cmVhbSBtYXJrIHRoZSB3cml0YWJsZSBwYXJ0IGFzIGRlc3Ryb3llZCBhcyB3ZWxsXG5cblxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHRoaXMuX2Rlc3Ryb3koZXJyIHx8IG51bGwsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICBpZiAoIWNiICYmIGVycikge1xuICAgICAgaWYgKCFfdGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGVtaXRFcnJvckFuZENsb3NlTlQsIF90aGlzLCBlcnIpO1xuICAgICAgfSBlbHNlIGlmICghX3RoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkKSB7XG4gICAgICAgIF90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yQW5kQ2xvc2VOVCwgX3RoaXMsIGVycik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGVtaXRDbG9zZU5ULCBfdGhpcyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYikge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0Q2xvc2VOVCwgX3RoaXMpO1xuICAgICAgY2IoZXJyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0Q2xvc2VOVCwgX3RoaXMpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIGVtaXRFcnJvckFuZENsb3NlTlQoc2VsZiwgZXJyKSB7XG4gIGVtaXRFcnJvck5UKHNlbGYsIGVycik7XG4gIGVtaXRDbG9zZU5UKHNlbGYpO1xufVxuXG5mdW5jdGlvbiBlbWl0Q2xvc2VOVChzZWxmKSB7XG4gIGlmIChzZWxmLl93cml0YWJsZVN0YXRlICYmICFzZWxmLl93cml0YWJsZVN0YXRlLmVtaXRDbG9zZSkgcmV0dXJuO1xuICBpZiAoc2VsZi5fcmVhZGFibGVTdGF0ZSAmJiAhc2VsZi5fcmVhZGFibGVTdGF0ZS5lbWl0Q2xvc2UpIHJldHVybjtcbiAgc2VsZi5lbWl0KCdjbG9zZScpO1xufVxuXG5mdW5jdGlvbiB1bmRlc3Ryb3koKSB7XG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5hbENhbGxlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUucHJlZmluaXNoZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWl0RXJyb3JOVChzZWxmLCBlcnIpIHtcbiAgc2VsZi5lbWl0KCdlcnJvcicsIGVycik7XG59XG5cbmZ1bmN0aW9uIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXJyKSB7XG4gIC8vIFdlIGhhdmUgdGVzdHMgdGhhdCByZWx5IG9uIGVycm9ycyBiZWluZyBlbWl0dGVkXG4gIC8vIGluIHRoZSBzYW1lIHRpY2ssIHNvIGNoYW5naW5nIHRoaXMgaXMgc2VtdmVyIG1ham9yLlxuICAvLyBGb3Igbm93IHdoZW4geW91IG9wdC1pbiB0byBhdXRvRGVzdHJveSB3ZSBhbGxvd1xuICAvLyB0aGUgZXJyb3IgdG8gYmUgZW1pdHRlZCBuZXh0VGljay4gSW4gYSBmdXR1cmVcbiAgLy8gc2VtdmVyIG1ham9yIHVwZGF0ZSB3ZSBzaG91bGQgY2hhbmdlIHRoZSBkZWZhdWx0IHRvIHRoaXMuXG4gIHZhciByU3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIHZhciB3U3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGU7XG4gIGlmIChyU3RhdGUgJiYgclN0YXRlLmF1dG9EZXN0cm95IHx8IHdTdGF0ZSAmJiB3U3RhdGUuYXV0b0Rlc3Ryb3kpIHN0cmVhbS5kZXN0cm95KGVycik7ZWxzZSBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZGVzdHJveTogZGVzdHJveSxcbiAgdW5kZXN0cm95OiB1bmRlc3Ryb3ksXG4gIGVycm9yT3JEZXN0cm95OiBlcnJvck9yRGVzdHJveVxufTsiLCIvLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL2VuZC1vZi1zdHJlYW0gd2l0aFxuLy8gcGVybWlzc2lvbiBmcm9tIHRoZSBhdXRob3IsIE1hdGhpYXMgQnV1cyAoQG1hZmludG9zaCkuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRSA9IHJlcXVpcmUoJy4uLy4uLy4uL2Vycm9ycycpLmNvZGVzLkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFO1xuXG5mdW5jdGlvbiBvbmNlKGNhbGxiYWNrKSB7XG4gIHZhciBjYWxsZWQgPSBmYWxzZTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoY2FsbGVkKSByZXR1cm47XG4gICAgY2FsbGVkID0gdHJ1ZTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBjYWxsYmFjay5hcHBseSh0aGlzLCBhcmdzKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbmZ1bmN0aW9uIGlzUmVxdWVzdChzdHJlYW0pIHtcbiAgcmV0dXJuIHN0cmVhbS5zZXRIZWFkZXIgJiYgdHlwZW9mIHN0cmVhbS5hYm9ydCA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gZW9zKHN0cmVhbSwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSByZXR1cm4gZW9zKHN0cmVhbSwgbnVsbCwgb3B0cyk7XG4gIGlmICghb3B0cykgb3B0cyA9IHt9O1xuICBjYWxsYmFjayA9IG9uY2UoY2FsbGJhY2sgfHwgbm9vcCk7XG4gIHZhciByZWFkYWJsZSA9IG9wdHMucmVhZGFibGUgfHwgb3B0cy5yZWFkYWJsZSAhPT0gZmFsc2UgJiYgc3RyZWFtLnJlYWRhYmxlO1xuICB2YXIgd3JpdGFibGUgPSBvcHRzLndyaXRhYmxlIHx8IG9wdHMud3JpdGFibGUgIT09IGZhbHNlICYmIHN0cmVhbS53cml0YWJsZTtcblxuICB2YXIgb25sZWdhY3lmaW5pc2ggPSBmdW5jdGlvbiBvbmxlZ2FjeWZpbmlzaCgpIHtcbiAgICBpZiAoIXN0cmVhbS53cml0YWJsZSkgb25maW5pc2goKTtcbiAgfTtcblxuICB2YXIgd3JpdGFibGVFbmRlZCA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZSAmJiBzdHJlYW0uX3dyaXRhYmxlU3RhdGUuZmluaXNoZWQ7XG5cbiAgdmFyIG9uZmluaXNoID0gZnVuY3Rpb24gb25maW5pc2goKSB7XG4gICAgd3JpdGFibGUgPSBmYWxzZTtcbiAgICB3cml0YWJsZUVuZGVkID0gdHJ1ZTtcbiAgICBpZiAoIXJlYWRhYmxlKSBjYWxsYmFjay5jYWxsKHN0cmVhbSk7XG4gIH07XG5cbiAgdmFyIHJlYWRhYmxlRW5kZWQgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGUgJiYgc3RyZWFtLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQ7XG5cbiAgdmFyIG9uZW5kID0gZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgcmVhZGFibGUgPSBmYWxzZTtcbiAgICByZWFkYWJsZUVuZGVkID0gdHJ1ZTtcbiAgICBpZiAoIXdyaXRhYmxlKSBjYWxsYmFjay5jYWxsKHN0cmVhbSk7XG4gIH07XG5cbiAgdmFyIG9uZXJyb3IgPSBmdW5jdGlvbiBvbmVycm9yKGVycikge1xuICAgIGNhbGxiYWNrLmNhbGwoc3RyZWFtLCBlcnIpO1xuICB9O1xuXG4gIHZhciBvbmNsb3NlID0gZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICB2YXIgZXJyO1xuXG4gICAgaWYgKHJlYWRhYmxlICYmICFyZWFkYWJsZUVuZGVkKSB7XG4gICAgICBpZiAoIXN0cmVhbS5fcmVhZGFibGVTdGF0ZSB8fCAhc3RyZWFtLl9yZWFkYWJsZVN0YXRlLmVuZGVkKSBlcnIgPSBuZXcgRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UoKTtcbiAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKHN0cmVhbSwgZXJyKTtcbiAgICB9XG5cbiAgICBpZiAod3JpdGFibGUgJiYgIXdyaXRhYmxlRW5kZWQpIHtcbiAgICAgIGlmICghc3RyZWFtLl93cml0YWJsZVN0YXRlIHx8ICFzdHJlYW0uX3dyaXRhYmxlU3RhdGUuZW5kZWQpIGVyciA9IG5ldyBFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRSgpO1xuICAgICAgcmV0dXJuIGNhbGxiYWNrLmNhbGwoc3RyZWFtLCBlcnIpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgb25yZXF1ZXN0ID0gZnVuY3Rpb24gb25yZXF1ZXN0KCkge1xuICAgIHN0cmVhbS5yZXEub24oJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgfTtcblxuICBpZiAoaXNSZXF1ZXN0KHN0cmVhbSkpIHtcbiAgICBzdHJlYW0ub24oJ2NvbXBsZXRlJywgb25maW5pc2gpO1xuICAgIHN0cmVhbS5vbignYWJvcnQnLCBvbmNsb3NlKTtcbiAgICBpZiAoc3RyZWFtLnJlcSkgb25yZXF1ZXN0KCk7ZWxzZSBzdHJlYW0ub24oJ3JlcXVlc3QnLCBvbnJlcXVlc3QpO1xuICB9IGVsc2UgaWYgKHdyaXRhYmxlICYmICFzdHJlYW0uX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAvLyBsZWdhY3kgc3RyZWFtc1xuICAgIHN0cmVhbS5vbignZW5kJywgb25sZWdhY3lmaW5pc2gpO1xuICAgIHN0cmVhbS5vbignY2xvc2UnLCBvbmxlZ2FjeWZpbmlzaCk7XG4gIH1cblxuICBzdHJlYW0ub24oJ2VuZCcsIG9uZW5kKTtcbiAgc3RyZWFtLm9uKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gIGlmIChvcHRzLmVycm9yICE9PSBmYWxzZSkgc3RyZWFtLm9uKCdlcnJvcicsIG9uZXJyb3IpO1xuICBzdHJlYW0ub24oJ2Nsb3NlJywgb25jbG9zZSk7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdjb21wbGV0ZScsIG9uZmluaXNoKTtcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Fib3J0Jywgb25jbG9zZSk7XG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdyZXF1ZXN0Jywgb25yZXF1ZXN0KTtcbiAgICBpZiAoc3RyZWFtLnJlcSkgc3RyZWFtLnJlcS5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25sZWdhY3lmaW5pc2gpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmxlZ2FjeWZpbmlzaCk7XG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBlb3M7IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignUmVhZGFibGUuZnJvbSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyJylcbn07XG4iLCIvLyBQb3J0ZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbWFmaW50b3NoL3B1bXAgd2l0aFxuLy8gcGVybWlzc2lvbiBmcm9tIHRoZSBhdXRob3IsIE1hdGhpYXMgQnV1cyAoQG1hZmludG9zaCkuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlb3M7XG5cbmZ1bmN0aW9uIG9uY2UoY2FsbGJhY2spIHtcbiAgdmFyIGNhbGxlZCA9IGZhbHNlO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmIChjYWxsZWQpIHJldHVybjtcbiAgICBjYWxsZWQgPSB0cnVlO1xuICAgIGNhbGxiYWNrLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgfTtcbn1cblxudmFyIF9yZXF1aXJlJGNvZGVzID0gcmVxdWlyZSgnLi4vLi4vLi4vZXJyb3JzJykuY29kZXMsXG4gICAgRVJSX01JU1NJTkdfQVJHUyA9IF9yZXF1aXJlJGNvZGVzLkVSUl9NSVNTSU5HX0FSR1MsXG4gICAgRVJSX1NUUkVBTV9ERVNUUk9ZRUQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfU1RSRUFNX0RFU1RST1lFRDtcblxuZnVuY3Rpb24gbm9vcChlcnIpIHtcbiAgLy8gUmV0aHJvdyB0aGUgZXJyb3IgaWYgaXQgZXhpc3RzIHRvIGF2b2lkIHN3YWxsb3dpbmcgaXRcbiAgaWYgKGVycikgdGhyb3cgZXJyO1xufVxuXG5mdW5jdGlvbiBpc1JlcXVlc3Qoc3RyZWFtKSB7XG4gIHJldHVybiBzdHJlYW0uc2V0SGVhZGVyICYmIHR5cGVvZiBzdHJlYW0uYWJvcnQgPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGRlc3Ryb3llcihzdHJlYW0sIHJlYWRpbmcsIHdyaXRpbmcsIGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrID0gb25jZShjYWxsYmFjayk7XG4gIHZhciBjbG9zZWQgPSBmYWxzZTtcbiAgc3RyZWFtLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICBjbG9zZWQgPSB0cnVlO1xuICB9KTtcbiAgaWYgKGVvcyA9PT0gdW5kZWZpbmVkKSBlb3MgPSByZXF1aXJlKCcuL2VuZC1vZi1zdHJlYW0nKTtcbiAgZW9zKHN0cmVhbSwge1xuICAgIHJlYWRhYmxlOiByZWFkaW5nLFxuICAgIHdyaXRhYmxlOiB3cml0aW5nXG4gIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICBjbG9zZWQgPSB0cnVlO1xuICAgIGNhbGxiYWNrKCk7XG4gIH0pO1xuICB2YXIgZGVzdHJveWVkID0gZmFsc2U7XG4gIHJldHVybiBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKGNsb3NlZCkgcmV0dXJuO1xuICAgIGlmIChkZXN0cm95ZWQpIHJldHVybjtcbiAgICBkZXN0cm95ZWQgPSB0cnVlOyAvLyByZXF1ZXN0LmRlc3Ryb3kganVzdCBkbyAuZW5kIC0gLmFib3J0IGlzIHdoYXQgd2Ugd2FudFxuXG4gICAgaWYgKGlzUmVxdWVzdChzdHJlYW0pKSByZXR1cm4gc3RyZWFtLmFib3J0KCk7XG4gICAgaWYgKHR5cGVvZiBzdHJlYW0uZGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIHN0cmVhbS5kZXN0cm95KCk7XG4gICAgY2FsbGJhY2soZXJyIHx8IG5ldyBFUlJfU1RSRUFNX0RFU1RST1lFRCgncGlwZScpKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2FsbChmbikge1xuICBmbigpO1xufVxuXG5mdW5jdGlvbiBwaXBlKGZyb20sIHRvKSB7XG4gIHJldHVybiBmcm9tLnBpcGUodG8pO1xufVxuXG5mdW5jdGlvbiBwb3BDYWxsYmFjayhzdHJlYW1zKSB7XG4gIGlmICghc3RyZWFtcy5sZW5ndGgpIHJldHVybiBub29wO1xuICBpZiAodHlwZW9mIHN0cmVhbXNbc3RyZWFtcy5sZW5ndGggLSAxXSAhPT0gJ2Z1bmN0aW9uJykgcmV0dXJuIG5vb3A7XG4gIHJldHVybiBzdHJlYW1zLnBvcCgpO1xufVxuXG5mdW5jdGlvbiBwaXBlbGluZSgpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHN0cmVhbXMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgc3RyZWFtc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHZhciBjYWxsYmFjayA9IHBvcENhbGxiYWNrKHN0cmVhbXMpO1xuICBpZiAoQXJyYXkuaXNBcnJheShzdHJlYW1zWzBdKSkgc3RyZWFtcyA9IHN0cmVhbXNbMF07XG5cbiAgaWYgKHN0cmVhbXMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFUlJfTUlTU0lOR19BUkdTKCdzdHJlYW1zJyk7XG4gIH1cblxuICB2YXIgZXJyb3I7XG4gIHZhciBkZXN0cm95cyA9IHN0cmVhbXMubWFwKGZ1bmN0aW9uIChzdHJlYW0sIGkpIHtcbiAgICB2YXIgcmVhZGluZyA9IGkgPCBzdHJlYW1zLmxlbmd0aCAtIDE7XG4gICAgdmFyIHdyaXRpbmcgPSBpID4gMDtcbiAgICByZXR1cm4gZGVzdHJveWVyKHN0cmVhbSwgcmVhZGluZywgd3JpdGluZywgZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKCFlcnJvcikgZXJyb3IgPSBlcnI7XG4gICAgICBpZiAoZXJyKSBkZXN0cm95cy5mb3JFYWNoKGNhbGwpO1xuICAgICAgaWYgKHJlYWRpbmcpIHJldHVybjtcbiAgICAgIGRlc3Ryb3lzLmZvckVhY2goY2FsbCk7XG4gICAgICBjYWxsYmFjayhlcnJvcik7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gc3RyZWFtcy5yZWR1Y2UocGlwZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGlwZWxpbmU7IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgRVJSX0lOVkFMSURfT1BUX1ZBTFVFID0gcmVxdWlyZSgnLi4vLi4vLi4vZXJyb3JzJykuY29kZXMuRVJSX0lOVkFMSURfT1BUX1ZBTFVFO1xuXG5mdW5jdGlvbiBoaWdoV2F0ZXJNYXJrRnJvbShvcHRpb25zLCBpc0R1cGxleCwgZHVwbGV4S2V5KSB7XG4gIHJldHVybiBvcHRpb25zLmhpZ2hXYXRlck1hcmsgIT0gbnVsbCA/IG9wdGlvbnMuaGlnaFdhdGVyTWFyayA6IGlzRHVwbGV4ID8gb3B0aW9uc1tkdXBsZXhLZXldIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0SGlnaFdhdGVyTWFyayhzdGF0ZSwgb3B0aW9ucywgZHVwbGV4S2V5LCBpc0R1cGxleCkge1xuICB2YXIgaHdtID0gaGlnaFdhdGVyTWFya0Zyb20ob3B0aW9ucywgaXNEdXBsZXgsIGR1cGxleEtleSk7XG5cbiAgaWYgKGh3bSAhPSBudWxsKSB7XG4gICAgaWYgKCEoaXNGaW5pdGUoaHdtKSAmJiBNYXRoLmZsb29yKGh3bSkgPT09IGh3bSkgfHwgaHdtIDwgMCkge1xuICAgICAgdmFyIG5hbWUgPSBpc0R1cGxleCA/IGR1cGxleEtleSA6ICdoaWdoV2F0ZXJNYXJrJztcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9PUFRfVkFMVUUobmFtZSwgaHdtKTtcbiAgICB9XG5cbiAgICByZXR1cm4gTWF0aC5mbG9vcihod20pO1xuICB9IC8vIERlZmF1bHQgdmFsdWVcblxuXG4gIHJldHVybiBzdGF0ZS5vYmplY3RNb2RlID8gMTYgOiAxNiAqIDEwMjQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBnZXRIaWdoV2F0ZXJNYXJrOiBnZXRIaWdoV2F0ZXJNYXJrXG59OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xuIiwiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcycpO1xuZXhwb3J0cy5TdHJlYW0gPSBleHBvcnRzO1xuZXhwb3J0cy5SZWFkYWJsZSA9IGV4cG9ydHM7XG5leHBvcnRzLldyaXRhYmxlID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcycpO1xuZXhwb3J0cy5EdXBsZXggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX2R1cGxleC5qcycpO1xuZXhwb3J0cy5UcmFuc2Zvcm0gPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcycpO1xuZXhwb3J0cy5QYXNzVGhyb3VnaCA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMnKTtcbmV4cG9ydHMuZmluaXNoZWQgPSByZXF1aXJlKCcuL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2VuZC1vZi1zdHJlYW0uanMnKTtcbmV4cG9ydHMucGlwZWxpbmUgPSByZXF1aXJlKCcuL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3BpcGVsaW5lLmpzJyk7XG4iLCIndXNlIHN0cmljdCdcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXJcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoQmFzZSA9IHJlcXVpcmUoJ2hhc2gtYmFzZScpXG5cbnZhciBBUlJBWTE2ID0gbmV3IEFycmF5KDE2KVxuXG52YXIgemwgPSBbXG4gIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsXG4gIDcsIDQsIDEzLCAxLCAxMCwgNiwgMTUsIDMsIDEyLCAwLCA5LCA1LCAyLCAxNCwgMTEsIDgsXG4gIDMsIDEwLCAxNCwgNCwgOSwgMTUsIDgsIDEsIDIsIDcsIDAsIDYsIDEzLCAxMSwgNSwgMTIsXG4gIDEsIDksIDExLCAxMCwgMCwgOCwgMTIsIDQsIDEzLCAzLCA3LCAxNSwgMTQsIDUsIDYsIDIsXG4gIDQsIDAsIDUsIDksIDcsIDEyLCAyLCAxMCwgMTQsIDEsIDMsIDgsIDExLCA2LCAxNSwgMTNcbl1cblxudmFyIHpyID0gW1xuICA1LCAxNCwgNywgMCwgOSwgMiwgMTEsIDQsIDEzLCA2LCAxNSwgOCwgMSwgMTAsIDMsIDEyLFxuICA2LCAxMSwgMywgNywgMCwgMTMsIDUsIDEwLCAxNCwgMTUsIDgsIDEyLCA0LCA5LCAxLCAyLFxuICAxNSwgNSwgMSwgMywgNywgMTQsIDYsIDksIDExLCA4LCAxMiwgMiwgMTAsIDAsIDQsIDEzLFxuICA4LCA2LCA0LCAxLCAzLCAxMSwgMTUsIDAsIDUsIDEyLCAyLCAxMywgOSwgNywgMTAsIDE0LFxuICAxMiwgMTUsIDEwLCA0LCAxLCA1LCA4LCA3LCA2LCAyLCAxMywgMTQsIDAsIDMsIDksIDExXG5dXG5cbnZhciBzbCA9IFtcbiAgMTEsIDE0LCAxNSwgMTIsIDUsIDgsIDcsIDksIDExLCAxMywgMTQsIDE1LCA2LCA3LCA5LCA4LFxuICA3LCA2LCA4LCAxMywgMTEsIDksIDcsIDE1LCA3LCAxMiwgMTUsIDksIDExLCA3LCAxMywgMTIsXG4gIDExLCAxMywgNiwgNywgMTQsIDksIDEzLCAxNSwgMTQsIDgsIDEzLCA2LCA1LCAxMiwgNywgNSxcbiAgMTEsIDEyLCAxNCwgMTUsIDE0LCAxNSwgOSwgOCwgOSwgMTQsIDUsIDYsIDgsIDYsIDUsIDEyLFxuICA5LCAxNSwgNSwgMTEsIDYsIDgsIDEzLCAxMiwgNSwgMTIsIDEzLCAxNCwgMTEsIDgsIDUsIDZcbl1cblxudmFyIHNyID0gW1xuICA4LCA5LCA5LCAxMSwgMTMsIDE1LCAxNSwgNSwgNywgNywgOCwgMTEsIDE0LCAxNCwgMTIsIDYsXG4gIDksIDEzLCAxNSwgNywgMTIsIDgsIDksIDExLCA3LCA3LCAxMiwgNywgNiwgMTUsIDEzLCAxMSxcbiAgOSwgNywgMTUsIDExLCA4LCA2LCA2LCAxNCwgMTIsIDEzLCA1LCAxNCwgMTMsIDEzLCA3LCA1LFxuICAxNSwgNSwgOCwgMTEsIDE0LCAxNCwgNiwgMTQsIDYsIDksIDEyLCA5LCAxMiwgNSwgMTUsIDgsXG4gIDgsIDUsIDEyLCA5LCAxMiwgNSwgMTQsIDYsIDgsIDEzLCA2LCA1LCAxNSwgMTMsIDExLCAxMVxuXVxuXG52YXIgaGwgPSBbMHgwMDAwMDAwMCwgMHg1YTgyNzk5OSwgMHg2ZWQ5ZWJhMSwgMHg4ZjFiYmNkYywgMHhhOTUzZmQ0ZV1cbnZhciBociA9IFsweDUwYTI4YmU2LCAweDVjNGRkMTI0LCAweDZkNzAzZWYzLCAweDdhNmQ3NmU5LCAweDAwMDAwMDAwXVxuXG5mdW5jdGlvbiBSSVBFTUQxNjAgKCkge1xuICBIYXNoQmFzZS5jYWxsKHRoaXMsIDY0KVxuXG4gIC8vIHN0YXRlXG4gIHRoaXMuX2EgPSAweDY3NDUyMzAxXG4gIHRoaXMuX2IgPSAweGVmY2RhYjg5XG4gIHRoaXMuX2MgPSAweDk4YmFkY2ZlXG4gIHRoaXMuX2QgPSAweDEwMzI1NDc2XG4gIHRoaXMuX2UgPSAweGMzZDJlMWYwXG59XG5cbmluaGVyaXRzKFJJUEVNRDE2MCwgSGFzaEJhc2UpXG5cblJJUEVNRDE2MC5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHdvcmRzID0gQVJSQVkxNlxuICBmb3IgKHZhciBqID0gMDsgaiA8IDE2OyArK2opIHdvcmRzW2pdID0gdGhpcy5fYmxvY2sucmVhZEludDMyTEUoaiAqIDQpXG5cbiAgdmFyIGFsID0gdGhpcy5fYSB8IDBcbiAgdmFyIGJsID0gdGhpcy5fYiB8IDBcbiAgdmFyIGNsID0gdGhpcy5fYyB8IDBcbiAgdmFyIGRsID0gdGhpcy5fZCB8IDBcbiAgdmFyIGVsID0gdGhpcy5fZSB8IDBcblxuICB2YXIgYXIgPSB0aGlzLl9hIHwgMFxuICB2YXIgYnIgPSB0aGlzLl9iIHwgMFxuICB2YXIgY3IgPSB0aGlzLl9jIHwgMFxuICB2YXIgZHIgPSB0aGlzLl9kIHwgMFxuICB2YXIgZXIgPSB0aGlzLl9lIHwgMFxuXG4gIC8vIGNvbXB1dGF0aW9uXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgODA7IGkgKz0gMSkge1xuICAgIHZhciB0bFxuICAgIHZhciB0clxuICAgIGlmIChpIDwgMTYpIHtcbiAgICAgIHRsID0gZm4xKGFsLCBibCwgY2wsIGRsLCBlbCwgd29yZHNbemxbaV1dLCBobFswXSwgc2xbaV0pXG4gICAgICB0ciA9IGZuNShhciwgYnIsIGNyLCBkciwgZXIsIHdvcmRzW3pyW2ldXSwgaHJbMF0sIHNyW2ldKVxuICAgIH0gZWxzZSBpZiAoaSA8IDMyKSB7XG4gICAgICB0bCA9IGZuMihhbCwgYmwsIGNsLCBkbCwgZWwsIHdvcmRzW3psW2ldXSwgaGxbMV0sIHNsW2ldKVxuICAgICAgdHIgPSBmbjQoYXIsIGJyLCBjciwgZHIsIGVyLCB3b3Jkc1t6cltpXV0sIGhyWzFdLCBzcltpXSlcbiAgICB9IGVsc2UgaWYgKGkgPCA0OCkge1xuICAgICAgdGwgPSBmbjMoYWwsIGJsLCBjbCwgZGwsIGVsLCB3b3Jkc1t6bFtpXV0sIGhsWzJdLCBzbFtpXSlcbiAgICAgIHRyID0gZm4zKGFyLCBiciwgY3IsIGRyLCBlciwgd29yZHNbenJbaV1dLCBoclsyXSwgc3JbaV0pXG4gICAgfSBlbHNlIGlmIChpIDwgNjQpIHtcbiAgICAgIHRsID0gZm40KGFsLCBibCwgY2wsIGRsLCBlbCwgd29yZHNbemxbaV1dLCBobFszXSwgc2xbaV0pXG4gICAgICB0ciA9IGZuMihhciwgYnIsIGNyLCBkciwgZXIsIHdvcmRzW3pyW2ldXSwgaHJbM10sIHNyW2ldKVxuICAgIH0gZWxzZSB7IC8vIGlmIChpPDgwKSB7XG4gICAgICB0bCA9IGZuNShhbCwgYmwsIGNsLCBkbCwgZWwsIHdvcmRzW3psW2ldXSwgaGxbNF0sIHNsW2ldKVxuICAgICAgdHIgPSBmbjEoYXIsIGJyLCBjciwgZHIsIGVyLCB3b3Jkc1t6cltpXV0sIGhyWzRdLCBzcltpXSlcbiAgICB9XG5cbiAgICBhbCA9IGVsXG4gICAgZWwgPSBkbFxuICAgIGRsID0gcm90bChjbCwgMTApXG4gICAgY2wgPSBibFxuICAgIGJsID0gdGxcblxuICAgIGFyID0gZXJcbiAgICBlciA9IGRyXG4gICAgZHIgPSByb3RsKGNyLCAxMClcbiAgICBjciA9IGJyXG4gICAgYnIgPSB0clxuICB9XG5cbiAgLy8gdXBkYXRlIHN0YXRlXG4gIHZhciB0ID0gKHRoaXMuX2IgKyBjbCArIGRyKSB8IDBcbiAgdGhpcy5fYiA9ICh0aGlzLl9jICsgZGwgKyBlcikgfCAwXG4gIHRoaXMuX2MgPSAodGhpcy5fZCArIGVsICsgYXIpIHwgMFxuICB0aGlzLl9kID0gKHRoaXMuX2UgKyBhbCArIGJyKSB8IDBcbiAgdGhpcy5fZSA9ICh0aGlzLl9hICsgYmwgKyBjcikgfCAwXG4gIHRoaXMuX2EgPSB0XG59XG5cblJJUEVNRDE2MC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gY3JlYXRlIHBhZGRpbmcgYW5kIGhhbmRsZSBibG9ja3NcbiAgdGhpcy5fYmxvY2tbdGhpcy5fYmxvY2tPZmZzZXQrK10gPSAweDgwXG4gIGlmICh0aGlzLl9ibG9ja09mZnNldCA+IDU2KSB7XG4gICAgdGhpcy5fYmxvY2suZmlsbCgwLCB0aGlzLl9ibG9ja09mZnNldCwgNjQpXG4gICAgdGhpcy5fdXBkYXRlKClcbiAgICB0aGlzLl9ibG9ja09mZnNldCA9IDBcbiAgfVxuXG4gIHRoaXMuX2Jsb2NrLmZpbGwoMCwgdGhpcy5fYmxvY2tPZmZzZXQsIDU2KVxuICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFswXSwgNTYpXG4gIHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzFdLCA2MClcbiAgdGhpcy5fdXBkYXRlKClcblxuICAvLyBwcm9kdWNlIHJlc3VsdFxuICB2YXIgYnVmZmVyID0gQnVmZmVyLmFsbG9jID8gQnVmZmVyLmFsbG9jKDIwKSA6IG5ldyBCdWZmZXIoMjApXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fYSwgMClcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9iLCA0KVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2MsIDgpXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fZCwgMTIpXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fZSwgMTYpXG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gcm90bCAoeCwgbikge1xuICByZXR1cm4gKHggPDwgbikgfCAoeCA+Pj4gKDMyIC0gbikpXG59XG5cbmZ1bmN0aW9uIGZuMSAoYSwgYiwgYywgZCwgZSwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoYiBeIGMgXiBkKSArIG0gKyBrKSB8IDAsIHMpICsgZSkgfCAwXG59XG5cbmZ1bmN0aW9uIGZuMiAoYSwgYiwgYywgZCwgZSwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoKGIgJiBjKSB8ICgofmIpICYgZCkpICsgbSArIGspIHwgMCwgcykgKyBlKSB8IDBcbn1cblxuZnVuY3Rpb24gZm4zIChhLCBiLCBjLCBkLCBlLCBtLCBrLCBzKSB7XG4gIHJldHVybiAocm90bCgoYSArICgoYiB8ICh+YykpIF4gZCkgKyBtICsgaykgfCAwLCBzKSArIGUpIHwgMFxufVxuXG5mdW5jdGlvbiBmbjQgKGEsIGIsIGMsIGQsIGUsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKChiICYgZCkgfCAoYyAmICh+ZCkpKSArIG0gKyBrKSB8IDAsIHMpICsgZSkgfCAwXG59XG5cbmZ1bmN0aW9uIGZuNSAoYSwgYiwgYywgZCwgZSwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoYiBeIChjIHwgKH5kKSkpICsgbSArIGspIHwgMCwgcykgKyBlKSB8IDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSSVBFTUQxNjBcbiIsIi8qISBzYWZlLWJ1ZmZlci4gTUlUIExpY2Vuc2UuIEZlcm9zcyBBYm91a2hhZGlqZWggPGh0dHBzOi8vZmVyb3NzLm9yZy9vcGVuc291cmNlPiAqL1xuLyogZXNsaW50LWRpc2FibGUgbm9kZS9uby1kZXByZWNhdGVkLWFwaSAqL1xudmFyIGJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpXG52YXIgQnVmZmVyID0gYnVmZmVyLkJ1ZmZlclxuXG4vLyBhbHRlcm5hdGl2ZSB0byB1c2luZyBPYmplY3Qua2V5cyBmb3Igb2xkIGJyb3dzZXJzXG5mdW5jdGlvbiBjb3B5UHJvcHMgKHNyYywgZHN0KSB7XG4gIGZvciAodmFyIGtleSBpbiBzcmMpIHtcbiAgICBkc3Rba2V5XSA9IHNyY1trZXldXG4gIH1cbn1cbmlmIChCdWZmZXIuZnJvbSAmJiBCdWZmZXIuYWxsb2MgJiYgQnVmZmVyLmFsbG9jVW5zYWZlICYmIEJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBidWZmZXJcbn0gZWxzZSB7XG4gIC8vIENvcHkgcHJvcGVydGllcyBmcm9tIHJlcXVpcmUoJ2J1ZmZlcicpXG4gIGNvcHlQcm9wcyhidWZmZXIsIGV4cG9ydHMpXG4gIGV4cG9ydHMuQnVmZmVyID0gU2FmZUJ1ZmZlclxufVxuXG5mdW5jdGlvbiBTYWZlQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5TYWZlQnVmZmVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoQnVmZmVyLnByb3RvdHlwZSlcblxuLy8gQ29weSBzdGF0aWMgbWV0aG9kcyBmcm9tIEJ1ZmZlclxuY29weVByb3BzKEJ1ZmZlciwgU2FmZUJ1ZmZlcilcblxuU2FmZUJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5TYWZlQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICB2YXIgYnVmID0gQnVmZmVyKHNpemUpXG4gIGlmIChmaWxsICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykge1xuICAgICAgYnVmLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGJ1Zi5maWxsKDApXG4gIH1cbiAgcmV0dXJuIGJ1ZlxufVxuXG5TYWZlQnVmZmVyLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBCdWZmZXIoc2l6ZSlcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlci5TbG93QnVmZmVyKHNpemUpXG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBub2RlL25vLWRlcHJlY2F0ZWQtYXBpICovXG5cbid1c2Ugc3RyaWN0J1xuXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJylcbnZhciBCdWZmZXIgPSBidWZmZXIuQnVmZmVyXG5cbnZhciBzYWZlciA9IHt9XG5cbnZhciBrZXlcblxuZm9yIChrZXkgaW4gYnVmZmVyKSB7XG4gIGlmICghYnVmZmVyLmhhc093blByb3BlcnR5KGtleSkpIGNvbnRpbnVlXG4gIGlmIChrZXkgPT09ICdTbG93QnVmZmVyJyB8fCBrZXkgPT09ICdCdWZmZXInKSBjb250aW51ZVxuICBzYWZlcltrZXldID0gYnVmZmVyW2tleV1cbn1cblxudmFyIFNhZmVyID0gc2FmZXIuQnVmZmVyID0ge31cbmZvciAoa2V5IGluIEJ1ZmZlcikge1xuICBpZiAoIUJ1ZmZlci5oYXNPd25Qcm9wZXJ0eShrZXkpKSBjb250aW51ZVxuICBpZiAoa2V5ID09PSAnYWxsb2NVbnNhZmUnIHx8IGtleSA9PT0gJ2FsbG9jVW5zYWZlU2xvdycpIGNvbnRpbnVlXG4gIFNhZmVyW2tleV0gPSBCdWZmZXJba2V5XVxufVxuXG5zYWZlci5CdWZmZXIucHJvdG90eXBlID0gQnVmZmVyLnByb3RvdHlwZVxuXG5pZiAoIVNhZmVyLmZyb20gfHwgU2FmZXIuZnJvbSA9PT0gVWludDhBcnJheS5mcm9tKSB7XG4gIFNhZmVyLmZyb20gPSBmdW5jdGlvbiAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJ2YWx1ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgdmFsdWUpXG4gICAgfVxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUubGVuZ3RoID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiB2YWx1ZSlcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlcih2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG59XG5cbmlmICghU2FmZXIuYWxsb2MpIHtcbiAgU2FmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJzaXplXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIHNpemUpXG4gICAgfVxuICAgIGlmIChzaXplIDwgMCB8fCBzaXplID49IDIgKiAoMSA8PCAzMCkpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInICsgc2l6ZSArICdcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKVxuICAgIH1cbiAgICB2YXIgYnVmID0gQnVmZmVyKHNpemUpXG4gICAgaWYgKCFmaWxsIHx8IGZpbGwubGVuZ3RoID09PSAwKSB7XG4gICAgICBidWYuZmlsbCgwKVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykge1xuICAgICAgYnVmLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwpXG4gICAgfVxuICAgIHJldHVybiBidWZcbiAgfVxufVxuXG5pZiAoIXNhZmVyLmtTdHJpbmdNYXhMZW5ndGgpIHtcbiAgdHJ5IHtcbiAgICBzYWZlci5rU3RyaW5nTWF4TGVuZ3RoID0gcHJvY2Vzcy5iaW5kaW5nKCdidWZmZXInKS5rU3RyaW5nTWF4TGVuZ3RoXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyB3ZSBjYW4ndCBkZXRlcm1pbmUga1N0cmluZ01heExlbmd0aCBpbiBlbnZpcm9ubWVudHMgd2hlcmUgcHJvY2Vzcy5iaW5kaW5nXG4gICAgLy8gaXMgdW5zdXBwb3J0ZWQsIHNvIGxldCdzIG5vdCBzZXQgaXRcbiAgfVxufVxuXG5pZiAoIXNhZmVyLmNvbnN0YW50cykge1xuICBzYWZlci5jb25zdGFudHMgPSB7XG4gICAgTUFYX0xFTkdUSDogc2FmZXIua01heExlbmd0aFxuICB9XG4gIGlmIChzYWZlci5rU3RyaW5nTWF4TGVuZ3RoKSB7XG4gICAgc2FmZXIuY29uc3RhbnRzLk1BWF9TVFJJTkdfTEVOR1RIID0gc2FmZXIua1N0cmluZ01heExlbmd0aFxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2FmZXJcbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG4vLyBwcm90b3R5cGUgY2xhc3MgZm9yIGhhc2ggZnVuY3Rpb25zXG5mdW5jdGlvbiBIYXNoIChibG9ja1NpemUsIGZpbmFsU2l6ZSkge1xuICB0aGlzLl9ibG9jayA9IEJ1ZmZlci5hbGxvYyhibG9ja1NpemUpXG4gIHRoaXMuX2ZpbmFsU2l6ZSA9IGZpbmFsU2l6ZVxuICB0aGlzLl9ibG9ja1NpemUgPSBibG9ja1NpemVcbiAgdGhpcy5fbGVuID0gMFxufVxuXG5IYXNoLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSwgZW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmMgPSBlbmMgfHwgJ3V0ZjgnXG4gICAgZGF0YSA9IEJ1ZmZlci5mcm9tKGRhdGEsIGVuYylcbiAgfVxuXG4gIHZhciBibG9jayA9IHRoaXMuX2Jsb2NrXG4gIHZhciBibG9ja1NpemUgPSB0aGlzLl9ibG9ja1NpemVcbiAgdmFyIGxlbmd0aCA9IGRhdGEubGVuZ3RoXG4gIHZhciBhY2N1bSA9IHRoaXMuX2xlblxuXG4gIGZvciAodmFyIG9mZnNldCA9IDA7IG9mZnNldCA8IGxlbmd0aDspIHtcbiAgICB2YXIgYXNzaWduZWQgPSBhY2N1bSAlIGJsb2NrU2l6ZVxuICAgIHZhciByZW1haW5kZXIgPSBNYXRoLm1pbihsZW5ndGggLSBvZmZzZXQsIGJsb2NrU2l6ZSAtIGFzc2lnbmVkKVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZW1haW5kZXI7IGkrKykge1xuICAgICAgYmxvY2tbYXNzaWduZWQgKyBpXSA9IGRhdGFbb2Zmc2V0ICsgaV1cbiAgICB9XG5cbiAgICBhY2N1bSArPSByZW1haW5kZXJcbiAgICBvZmZzZXQgKz0gcmVtYWluZGVyXG5cbiAgICBpZiAoKGFjY3VtICUgYmxvY2tTaXplKSA9PT0gMCkge1xuICAgICAgdGhpcy5fdXBkYXRlKGJsb2NrKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuX2xlbiArPSBsZW5ndGhcbiAgcmV0dXJuIHRoaXNcbn1cblxuSGFzaC5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gKGVuYykge1xuICB2YXIgcmVtID0gdGhpcy5fbGVuICUgdGhpcy5fYmxvY2tTaXplXG5cbiAgdGhpcy5fYmxvY2tbcmVtXSA9IDB4ODBcblxuICAvLyB6ZXJvIChyZW0gKyAxKSB0cmFpbGluZyBiaXRzLCB3aGVyZSAocmVtICsgMSkgaXMgdGhlIHNtYWxsZXN0XG4gIC8vIG5vbi1uZWdhdGl2ZSBzb2x1dGlvbiB0byB0aGUgZXF1YXRpb24gKGxlbmd0aCArIDEgKyAocmVtICsgMSkpID09PSBmaW5hbFNpemUgbW9kIGJsb2NrU2l6ZVxuICB0aGlzLl9ibG9jay5maWxsKDAsIHJlbSArIDEpXG5cbiAgaWYgKHJlbSA+PSB0aGlzLl9maW5hbFNpemUpIHtcbiAgICB0aGlzLl91cGRhdGUodGhpcy5fYmxvY2spXG4gICAgdGhpcy5fYmxvY2suZmlsbCgwKVxuICB9XG5cbiAgdmFyIGJpdHMgPSB0aGlzLl9sZW4gKiA4XG5cbiAgLy8gdWludDMyXG4gIGlmIChiaXRzIDw9IDB4ZmZmZmZmZmYpIHtcbiAgICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKGJpdHMsIHRoaXMuX2Jsb2NrU2l6ZSAtIDQpXG5cbiAgLy8gdWludDY0XG4gIH0gZWxzZSB7XG4gICAgdmFyIGxvd0JpdHMgPSAoYml0cyAmIDB4ZmZmZmZmZmYpID4+PiAwXG4gICAgdmFyIGhpZ2hCaXRzID0gKGJpdHMgLSBsb3dCaXRzKSAvIDB4MTAwMDAwMDAwXG5cbiAgICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKGhpZ2hCaXRzLCB0aGlzLl9ibG9ja1NpemUgLSA4KVxuICAgIHRoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUobG93Qml0cywgdGhpcy5fYmxvY2tTaXplIC0gNClcbiAgfVxuXG4gIHRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jaylcbiAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoKClcblxuICByZXR1cm4gZW5jID8gaGFzaC50b1N0cmluZyhlbmMpIDogaGFzaFxufVxuXG5IYXNoLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ191cGRhdGUgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzcycpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaFxuIiwidmFyIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIFNIQSAoYWxnb3JpdGhtKSB7XG4gIGFsZ29yaXRobSA9IGFsZ29yaXRobS50b0xvd2VyQ2FzZSgpXG5cbiAgdmFyIEFsZ29yaXRobSA9IGV4cG9ydHNbYWxnb3JpdGhtXVxuICBpZiAoIUFsZ29yaXRobSkgdGhyb3cgbmV3IEVycm9yKGFsZ29yaXRobSArICcgaXMgbm90IHN1cHBvcnRlZCAod2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMpJylcblxuICByZXR1cm4gbmV3IEFsZ29yaXRobSgpXG59XG5cbmV4cG9ydHMuc2hhID0gcmVxdWlyZSgnLi9zaGEnKVxuZXhwb3J0cy5zaGExID0gcmVxdWlyZSgnLi9zaGExJylcbmV4cG9ydHMuc2hhMjI0ID0gcmVxdWlyZSgnLi9zaGEyMjQnKVxuZXhwb3J0cy5zaGEyNTYgPSByZXF1aXJlKCcuL3NoYTI1NicpXG5leHBvcnRzLnNoYTM4NCA9IHJlcXVpcmUoJy4vc2hhMzg0JylcbmV4cG9ydHMuc2hhNTEyID0gcmVxdWlyZSgnLi9zaGE1MTInKVxuIiwiLypcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMCwgYXMgZGVmaW5lZFxuICogaW4gRklQUyBQVUIgMTgwLTFcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgZGVyaXZlZCBmcm9tIHNoYTEuanMgb2YgdGhlIHNhbWUgcmVwb3NpdG9yeS5cbiAqIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gU0hBLTAgYW5kIFNIQS0xIGlzIGp1c3QgYSBiaXR3aXNlIHJvdGF0ZSBsZWZ0XG4gKiBvcGVyYXRpb24gd2FzIGFkZGVkLlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgSyA9IFtcbiAgMHg1YTgyNzk5OSwgMHg2ZWQ5ZWJhMSwgMHg4ZjFiYmNkYyB8IDAsIDB4Y2E2MmMxZDYgfCAwXG5dXG5cbnZhciBXID0gbmV3IEFycmF5KDgwKVxuXG5mdW5jdGlvbiBTaGEgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYSwgSGFzaClcblxuU2hhLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2NzQ1MjMwMVxuICB0aGlzLl9iID0gMHhlZmNkYWI4OVxuICB0aGlzLl9jID0gMHg5OGJhZGNmZVxuICB0aGlzLl9kID0gMHgxMDMyNTQ3NlxuICB0aGlzLl9lID0gMHhjM2QyZTFmMFxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIHJvdGw1IChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgNSkgfCAobnVtID4+PiAyNylcbn1cblxuZnVuY3Rpb24gcm90bDMwIChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgMzApIHwgKG51bSA+Pj4gMilcbn1cblxuZnVuY3Rpb24gZnQgKHMsIGIsIGMsIGQpIHtcbiAgaWYgKHMgPT09IDApIHJldHVybiAoYiAmIGMpIHwgKCh+YikgJiBkKVxuICBpZiAocyA9PT0gMikgcmV0dXJuIChiICYgYykgfCAoYiAmIGQpIHwgKGMgJiBkKVxuICByZXR1cm4gYiBeIGMgXiBkXG59XG5cblNoYS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBXID0gdGhpcy5fd1xuXG4gIHZhciBhID0gdGhpcy5fYSB8IDBcbiAgdmFyIGIgPSB0aGlzLl9iIHwgMFxuICB2YXIgYyA9IHRoaXMuX2MgfCAwXG4gIHZhciBkID0gdGhpcy5fZCB8IDBcbiAgdmFyIGUgPSB0aGlzLl9lIHwgMFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgV1tpXSA9IE0ucmVhZEludDMyQkUoaSAqIDQpXG4gIGZvciAoOyBpIDwgODA7ICsraSkgV1tpXSA9IFdbaSAtIDNdIF4gV1tpIC0gOF0gXiBXW2kgLSAxNF0gXiBXW2kgLSAxNl1cblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyArK2opIHtcbiAgICB2YXIgcyA9IH5+KGogLyAyMClcbiAgICB2YXIgdCA9IChyb3RsNShhKSArIGZ0KHMsIGIsIGMsIGQpICsgZSArIFdbal0gKyBLW3NdKSB8IDBcblxuICAgIGUgPSBkXG4gICAgZCA9IGNcbiAgICBjID0gcm90bDMwKGIpXG4gICAgYiA9IGFcbiAgICBhID0gdFxuICB9XG5cbiAgdGhpcy5fYSA9IChhICsgdGhpcy5fYSkgfCAwXG4gIHRoaXMuX2IgPSAoYiArIHRoaXMuX2IpIHwgMFxuICB0aGlzLl9jID0gKGMgKyB0aGlzLl9jKSB8IDBcbiAgdGhpcy5fZCA9IChkICsgdGhpcy5fZCkgfCAwXG4gIHRoaXMuX2UgPSAoZSArIHRoaXMuX2UpIHwgMFxufVxuXG5TaGEucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgyMClcblxuICBILndyaXRlSW50MzJCRSh0aGlzLl9hIHwgMCwgMClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYiB8IDAsIDQpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2MgfCAwLCA4KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9kIHwgMCwgMTIpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2UgfCAwLCAxNilcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYVxuIiwiLypcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMSwgYXMgZGVmaW5lZFxuICogaW4gRklQUyBQVUIgMTgwLTFcbiAqIFZlcnNpb24gMi4xYSBDb3B5cmlnaHQgUGF1bCBKb2huc3RvbiAyMDAwIC0gMjAwMi5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCU0QgTGljZW5zZVxuICogU2VlIGh0dHA6Ly9wYWpob21lLm9yZy51ay9jcnlwdC9tZDUgZm9yIGRldGFpbHMuXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBLID0gW1xuICAweDVhODI3OTk5LCAweDZlZDllYmExLCAweDhmMWJiY2RjIHwgMCwgMHhjYTYyYzFkNiB8IDBcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoODApXG5cbmZ1bmN0aW9uIFNoYTEgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTEsIEhhc2gpXG5cblNoYTEucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweDY3NDUyMzAxXG4gIHRoaXMuX2IgPSAweGVmY2RhYjg5XG4gIHRoaXMuX2MgPSAweDk4YmFkY2ZlXG4gIHRoaXMuX2QgPSAweDEwMzI1NDc2XG4gIHRoaXMuX2UgPSAweGMzZDJlMWYwXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gcm90bDEgKG51bSkge1xuICByZXR1cm4gKG51bSA8PCAxKSB8IChudW0gPj4+IDMxKVxufVxuXG5mdW5jdGlvbiByb3RsNSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDUpIHwgKG51bSA+Pj4gMjcpXG59XG5cbmZ1bmN0aW9uIHJvdGwzMCAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDMwKSB8IChudW0gPj4+IDIpXG59XG5cbmZ1bmN0aW9uIGZ0IChzLCBiLCBjLCBkKSB7XG4gIGlmIChzID09PSAwKSByZXR1cm4gKGIgJiBjKSB8ICgofmIpICYgZClcbiAgaWYgKHMgPT09IDIpIHJldHVybiAoYiAmIGMpIHwgKGIgJiBkKSB8IChjICYgZClcbiAgcmV0dXJuIGIgXiBjIF4gZFxufVxuXG5TaGExLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA4MDsgKytpKSBXW2ldID0gcm90bDEoV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XSlcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyArK2opIHtcbiAgICB2YXIgcyA9IH5+KGogLyAyMClcbiAgICB2YXIgdCA9IChyb3RsNShhKSArIGZ0KHMsIGIsIGMsIGQpICsgZSArIFdbal0gKyBLW3NdKSB8IDBcblxuICAgIGUgPSBkXG4gICAgZCA9IGNcbiAgICBjID0gcm90bDMwKGIpXG4gICAgYiA9IGFcbiAgICBhID0gdFxuICB9XG5cbiAgdGhpcy5fYSA9IChhICsgdGhpcy5fYSkgfCAwXG4gIHRoaXMuX2IgPSAoYiArIHRoaXMuX2IpIHwgMFxuICB0aGlzLl9jID0gKGMgKyB0aGlzLl9jKSB8IDBcbiAgdGhpcy5fZCA9IChkICsgdGhpcy5fZCkgfCAwXG4gIHRoaXMuX2UgPSAoZSArIHRoaXMuX2UpIHwgMFxufVxuXG5TaGExLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBCdWZmZXIuYWxsb2NVbnNhZmUoMjApXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSB8IDAsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IgfCAwLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jIHwgMCwgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCB8IDAsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lIHwgMCwgMTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGExXG4iLCIvKipcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMjU2LCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIDE4MC0yXG4gKiBWZXJzaW9uIDIuMi1iZXRhIENvcHlyaWdodCBBbmdlbCBNYXJpbiwgUGF1bCBKb2huc3RvbiAyMDAwIC0gMjAwOS5cbiAqIE90aGVyIGNvbnRyaWJ1dG9yczogR3JlZyBIb2x0LCBBbmRyZXcgS2VwZXJ0LCBZZG5hciwgTG9zdGluZXRcbiAqXG4gKi9cblxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIFNoYTI1NiA9IHJlcXVpcmUoJy4vc2hhMjU2JylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgVyA9IG5ldyBBcnJheSg2NClcblxuZnVuY3Rpb24gU2hhMjI0ICgpIHtcbiAgdGhpcy5pbml0KClcblxuICB0aGlzLl93ID0gVyAvLyBuZXcgQXJyYXkoNjQpXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDY0LCA1Nilcbn1cblxuaW5oZXJpdHMoU2hhMjI0LCBTaGEyNTYpXG5cblNoYTIyNC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYSA9IDB4YzEwNTllZDhcbiAgdGhpcy5fYiA9IDB4MzY3Y2Q1MDdcbiAgdGhpcy5fYyA9IDB4MzA3MGRkMTdcbiAgdGhpcy5fZCA9IDB4ZjcwZTU5MzlcbiAgdGhpcy5fZSA9IDB4ZmZjMDBiMzFcbiAgdGhpcy5fZiA9IDB4Njg1ODE1MTFcbiAgdGhpcy5fZyA9IDB4NjRmOThmYTdcbiAgdGhpcy5faCA9IDB4YmVmYTRmYTRcblxuICByZXR1cm4gdGhpc1xufVxuXG5TaGEyMjQucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgyOClcblxuICBILndyaXRlSW50MzJCRSh0aGlzLl9hLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jLCA4KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9kLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSwgMTYpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2YsIDIwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9nLCAyNClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTIyNFxuIiwiLyoqXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTI1NiwgYXMgZGVmaW5lZFxuICogaW4gRklQUyAxODAtMlxuICogVmVyc2lvbiAyLjItYmV0YSBDb3B5cmlnaHQgQW5nZWwgTWFyaW4sIFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDkuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgSyA9IFtcbiAgMHg0MjhBMkY5OCwgMHg3MTM3NDQ5MSwgMHhCNUMwRkJDRiwgMHhFOUI1REJBNSxcbiAgMHgzOTU2QzI1QiwgMHg1OUYxMTFGMSwgMHg5MjNGODJBNCwgMHhBQjFDNUVENSxcbiAgMHhEODA3QUE5OCwgMHgxMjgzNUIwMSwgMHgyNDMxODVCRSwgMHg1NTBDN0RDMyxcbiAgMHg3MkJFNUQ3NCwgMHg4MERFQjFGRSwgMHg5QkRDMDZBNywgMHhDMTlCRjE3NCxcbiAgMHhFNDlCNjlDMSwgMHhFRkJFNDc4NiwgMHgwRkMxOURDNiwgMHgyNDBDQTFDQyxcbiAgMHgyREU5MkM2RiwgMHg0QTc0ODRBQSwgMHg1Q0IwQTlEQywgMHg3NkY5ODhEQSxcbiAgMHg5ODNFNTE1MiwgMHhBODMxQzY2RCwgMHhCMDAzMjdDOCwgMHhCRjU5N0ZDNyxcbiAgMHhDNkUwMEJGMywgMHhENUE3OTE0NywgMHgwNkNBNjM1MSwgMHgxNDI5Mjk2NyxcbiAgMHgyN0I3MEE4NSwgMHgyRTFCMjEzOCwgMHg0RDJDNkRGQywgMHg1MzM4MEQxMyxcbiAgMHg2NTBBNzM1NCwgMHg3NjZBMEFCQiwgMHg4MUMyQzkyRSwgMHg5MjcyMkM4NSxcbiAgMHhBMkJGRThBMSwgMHhBODFBNjY0QiwgMHhDMjRCOEI3MCwgMHhDNzZDNTFBMyxcbiAgMHhEMTkyRTgxOSwgMHhENjk5MDYyNCwgMHhGNDBFMzU4NSwgMHgxMDZBQTA3MCxcbiAgMHgxOUE0QzExNiwgMHgxRTM3NkMwOCwgMHgyNzQ4Nzc0QywgMHgzNEIwQkNCNSxcbiAgMHgzOTFDMENCMywgMHg0RUQ4QUE0QSwgMHg1QjlDQ0E0RiwgMHg2ODJFNkZGMyxcbiAgMHg3NDhGODJFRSwgMHg3OEE1NjM2RiwgMHg4NEM4NzgxNCwgMHg4Q0M3MDIwOCxcbiAgMHg5MEJFRkZGQSwgMHhBNDUwNkNFQiwgMHhCRUY5QTNGNywgMHhDNjcxNzhGMlxuXVxuXG52YXIgVyA9IG5ldyBBcnJheSg2NClcblxuZnVuY3Rpb24gU2hhMjU2ICgpIHtcbiAgdGhpcy5pbml0KClcblxuICB0aGlzLl93ID0gVyAvLyBuZXcgQXJyYXkoNjQpXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDY0LCA1Nilcbn1cblxuaW5oZXJpdHMoU2hhMjU2LCBIYXNoKVxuXG5TaGEyNTYucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweDZhMDllNjY3XG4gIHRoaXMuX2IgPSAweGJiNjdhZTg1XG4gIHRoaXMuX2MgPSAweDNjNmVmMzcyXG4gIHRoaXMuX2QgPSAweGE1NGZmNTNhXG4gIHRoaXMuX2UgPSAweDUxMGU1MjdmXG4gIHRoaXMuX2YgPSAweDliMDU2ODhjXG4gIHRoaXMuX2cgPSAweDFmODNkOWFiXG4gIHRoaXMuX2ggPSAweDViZTBjZDE5XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gY2ggKHgsIHksIHopIHtcbiAgcmV0dXJuIHogXiAoeCAmICh5IF4geikpXG59XG5cbmZ1bmN0aW9uIG1haiAoeCwgeSwgeikge1xuICByZXR1cm4gKHggJiB5KSB8ICh6ICYgKHggfCB5KSlcbn1cblxuZnVuY3Rpb24gc2lnbWEwICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gMiB8IHggPDwgMzApIF4gKHggPj4+IDEzIHwgeCA8PCAxOSkgXiAoeCA+Pj4gMjIgfCB4IDw8IDEwKVxufVxuXG5mdW5jdGlvbiBzaWdtYTEgKHgpIHtcbiAgcmV0dXJuICh4ID4+PiA2IHwgeCA8PCAyNikgXiAoeCA+Pj4gMTEgfCB4IDw8IDIxKSBeICh4ID4+PiAyNSB8IHggPDwgNylcbn1cblxuZnVuY3Rpb24gZ2FtbWEwICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gNyB8IHggPDwgMjUpIF4gKHggPj4+IDE4IHwgeCA8PCAxNCkgXiAoeCA+Pj4gMylcbn1cblxuZnVuY3Rpb24gZ2FtbWExICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gMTcgfCB4IDw8IDE1KSBeICh4ID4+PiAxOSB8IHggPDwgMTMpIF4gKHggPj4+IDEwKVxufVxuXG5TaGEyNTYucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYSA9IHRoaXMuX2EgfCAwXG4gIHZhciBiID0gdGhpcy5fYiB8IDBcbiAgdmFyIGMgPSB0aGlzLl9jIHwgMFxuICB2YXIgZCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlID0gdGhpcy5fZSB8IDBcbiAgdmFyIGYgPSB0aGlzLl9mIHwgMFxuICB2YXIgZyA9IHRoaXMuX2cgfCAwXG4gIHZhciBoID0gdGhpcy5faCB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICBmb3IgKDsgaSA8IDY0OyArK2kpIFdbaV0gPSAoZ2FtbWExKFdbaSAtIDJdKSArIFdbaSAtIDddICsgZ2FtbWEwKFdbaSAtIDE1XSkgKyBXW2kgLSAxNl0pIHwgMFxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgNjQ7ICsraikge1xuICAgIHZhciBUMSA9IChoICsgc2lnbWExKGUpICsgY2goZSwgZiwgZykgKyBLW2pdICsgV1tqXSkgfCAwXG4gICAgdmFyIFQyID0gKHNpZ21hMChhKSArIG1haihhLCBiLCBjKSkgfCAwXG5cbiAgICBoID0gZ1xuICAgIGcgPSBmXG4gICAgZiA9IGVcbiAgICBlID0gKGQgKyBUMSkgfCAwXG4gICAgZCA9IGNcbiAgICBjID0gYlxuICAgIGIgPSBhXG4gICAgYSA9IChUMSArIFQyKSB8IDBcbiAgfVxuXG4gIHRoaXMuX2EgPSAoYSArIHRoaXMuX2EpIHwgMFxuICB0aGlzLl9iID0gKGIgKyB0aGlzLl9iKSB8IDBcbiAgdGhpcy5fYyA9IChjICsgdGhpcy5fYykgfCAwXG4gIHRoaXMuX2QgPSAoZCArIHRoaXMuX2QpIHwgMFxuICB0aGlzLl9lID0gKGUgKyB0aGlzLl9lKSB8IDBcbiAgdGhpcy5fZiA9IChmICsgdGhpcy5fZikgfCAwXG4gIHRoaXMuX2cgPSAoZyArIHRoaXMuX2cpIHwgMFxuICB0aGlzLl9oID0gKGggKyB0aGlzLl9oKSB8IDBcbn1cblxuU2hhMjU2LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBCdWZmZXIuYWxsb2NVbnNhZmUoMzIpXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSwgMClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYiwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYywgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCwgMTIpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2UsIDE2KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9mLCAyMClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZywgMjQpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2gsIDI4KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMjU2XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgU0hBNTEyID0gcmVxdWlyZSgnLi9zaGE1MTInKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBXID0gbmV3IEFycmF5KDE2MClcblxuZnVuY3Rpb24gU2hhMzg0ICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgMTI4LCAxMTIpXG59XG5cbmluaGVyaXRzKFNoYTM4NCwgU0hBNTEyKVxuXG5TaGEzODQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2FoID0gMHhjYmJiOWQ1ZFxuICB0aGlzLl9iaCA9IDB4NjI5YTI5MmFcbiAgdGhpcy5fY2ggPSAweDkxNTkwMTVhXG4gIHRoaXMuX2RoID0gMHgxNTJmZWNkOFxuICB0aGlzLl9laCA9IDB4NjczMzI2NjdcbiAgdGhpcy5fZmggPSAweDhlYjQ0YTg3XG4gIHRoaXMuX2doID0gMHhkYjBjMmUwZFxuICB0aGlzLl9oaCA9IDB4NDdiNTQ4MWRcblxuICB0aGlzLl9hbCA9IDB4YzEwNTllZDhcbiAgdGhpcy5fYmwgPSAweDM2N2NkNTA3XG4gIHRoaXMuX2NsID0gMHgzMDcwZGQxN1xuICB0aGlzLl9kbCA9IDB4ZjcwZTU5MzlcbiAgdGhpcy5fZWwgPSAweGZmYzAwYjMxXG4gIHRoaXMuX2ZsID0gMHg2ODU4MTUxMVxuICB0aGlzLl9nbCA9IDB4NjRmOThmYTdcbiAgdGhpcy5faGwgPSAweGJlZmE0ZmE0XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuU2hhMzg0LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBCdWZmZXIuYWxsb2NVbnNhZmUoNDgpXG5cbiAgZnVuY3Rpb24gd3JpdGVJbnQ2NEJFIChoLCBsLCBvZmZzZXQpIHtcbiAgICBILndyaXRlSW50MzJCRShoLCBvZmZzZXQpXG4gICAgSC53cml0ZUludDMyQkUobCwgb2Zmc2V0ICsgNClcbiAgfVxuXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9haCwgdGhpcy5fYWwsIDApXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9iaCwgdGhpcy5fYmwsIDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9jaCwgdGhpcy5fY2wsIDE2KVxuICB3cml0ZUludDY0QkUodGhpcy5fZGgsIHRoaXMuX2RsLCAyNClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2VoLCB0aGlzLl9lbCwgMzIpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9maCwgdGhpcy5fZmwsIDQwKVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMzg0XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIEsgPSBbXG4gIDB4NDI4YTJmOTgsIDB4ZDcyOGFlMjIsIDB4NzEzNzQ0OTEsIDB4MjNlZjY1Y2QsXG4gIDB4YjVjMGZiY2YsIDB4ZWM0ZDNiMmYsIDB4ZTliNWRiYTUsIDB4ODE4OWRiYmMsXG4gIDB4Mzk1NmMyNWIsIDB4ZjM0OGI1MzgsIDB4NTlmMTExZjEsIDB4YjYwNWQwMTksXG4gIDB4OTIzZjgyYTQsIDB4YWYxOTRmOWIsIDB4YWIxYzVlZDUsIDB4ZGE2ZDgxMTgsXG4gIDB4ZDgwN2FhOTgsIDB4YTMwMzAyNDIsIDB4MTI4MzViMDEsIDB4NDU3MDZmYmUsXG4gIDB4MjQzMTg1YmUsIDB4NGVlNGIyOGMsIDB4NTUwYzdkYzMsIDB4ZDVmZmI0ZTIsXG4gIDB4NzJiZTVkNzQsIDB4ZjI3Yjg5NmYsIDB4ODBkZWIxZmUsIDB4M2IxNjk2YjEsXG4gIDB4OWJkYzA2YTcsIDB4MjVjNzEyMzUsIDB4YzE5YmYxNzQsIDB4Y2Y2OTI2OTQsXG4gIDB4ZTQ5YjY5YzEsIDB4OWVmMTRhZDIsIDB4ZWZiZTQ3ODYsIDB4Mzg0ZjI1ZTMsXG4gIDB4MGZjMTlkYzYsIDB4OGI4Y2Q1YjUsIDB4MjQwY2ExY2MsIDB4NzdhYzljNjUsXG4gIDB4MmRlOTJjNmYsIDB4NTkyYjAyNzUsIDB4NGE3NDg0YWEsIDB4NmVhNmU0ODMsXG4gIDB4NWNiMGE5ZGMsIDB4YmQ0MWZiZDQsIDB4NzZmOTg4ZGEsIDB4ODMxMTUzYjUsXG4gIDB4OTgzZTUxNTIsIDB4ZWU2NmRmYWIsIDB4YTgzMWM2NmQsIDB4MmRiNDMyMTAsXG4gIDB4YjAwMzI3YzgsIDB4OThmYjIxM2YsIDB4YmY1OTdmYzcsIDB4YmVlZjBlZTQsXG4gIDB4YzZlMDBiZjMsIDB4M2RhODhmYzIsIDB4ZDVhNzkxNDcsIDB4OTMwYWE3MjUsXG4gIDB4MDZjYTYzNTEsIDB4ZTAwMzgyNmYsIDB4MTQyOTI5NjcsIDB4MGEwZTZlNzAsXG4gIDB4MjdiNzBhODUsIDB4NDZkMjJmZmMsIDB4MmUxYjIxMzgsIDB4NWMyNmM5MjYsXG4gIDB4NGQyYzZkZmMsIDB4NWFjNDJhZWQsIDB4NTMzODBkMTMsIDB4OWQ5NWIzZGYsXG4gIDB4NjUwYTczNTQsIDB4OGJhZjYzZGUsIDB4NzY2YTBhYmIsIDB4M2M3N2IyYTgsXG4gIDB4ODFjMmM5MmUsIDB4NDdlZGFlZTYsIDB4OTI3MjJjODUsIDB4MTQ4MjM1M2IsXG4gIDB4YTJiZmU4YTEsIDB4NGNmMTAzNjQsIDB4YTgxYTY2NGIsIDB4YmM0MjMwMDEsXG4gIDB4YzI0YjhiNzAsIDB4ZDBmODk3OTEsIDB4Yzc2YzUxYTMsIDB4MDY1NGJlMzAsXG4gIDB4ZDE5MmU4MTksIDB4ZDZlZjUyMTgsIDB4ZDY5OTA2MjQsIDB4NTU2NWE5MTAsXG4gIDB4ZjQwZTM1ODUsIDB4NTc3MTIwMmEsIDB4MTA2YWEwNzAsIDB4MzJiYmQxYjgsXG4gIDB4MTlhNGMxMTYsIDB4YjhkMmQwYzgsIDB4MWUzNzZjMDgsIDB4NTE0MWFiNTMsXG4gIDB4Mjc0ODc3NGMsIDB4ZGY4ZWViOTksIDB4MzRiMGJjYjUsIDB4ZTE5YjQ4YTgsXG4gIDB4MzkxYzBjYjMsIDB4YzVjOTVhNjMsIDB4NGVkOGFhNGEsIDB4ZTM0MThhY2IsXG4gIDB4NWI5Y2NhNGYsIDB4Nzc2M2UzNzMsIDB4NjgyZTZmZjMsIDB4ZDZiMmI4YTMsXG4gIDB4NzQ4ZjgyZWUsIDB4NWRlZmIyZmMsIDB4NzhhNTYzNmYsIDB4NDMxNzJmNjAsXG4gIDB4ODRjODc4MTQsIDB4YTFmMGFiNzIsIDB4OGNjNzAyMDgsIDB4MWE2NDM5ZWMsXG4gIDB4OTBiZWZmZmEsIDB4MjM2MzFlMjgsIDB4YTQ1MDZjZWIsIDB4ZGU4MmJkZTksXG4gIDB4YmVmOWEzZjcsIDB4YjJjNjc5MTUsIDB4YzY3MTc4ZjIsIDB4ZTM3MjUzMmIsXG4gIDB4Y2EyNzNlY2UsIDB4ZWEyNjYxOWMsIDB4ZDE4NmI4YzcsIDB4MjFjMGMyMDcsXG4gIDB4ZWFkYTdkZDYsIDB4Y2RlMGViMWUsIDB4ZjU3ZDRmN2YsIDB4ZWU2ZWQxNzgsXG4gIDB4MDZmMDY3YWEsIDB4NzIxNzZmYmEsIDB4MGE2MzdkYzUsIDB4YTJjODk4YTYsXG4gIDB4MTEzZjk4MDQsIDB4YmVmOTBkYWUsIDB4MWI3MTBiMzUsIDB4MTMxYzQ3MWIsXG4gIDB4MjhkYjc3ZjUsIDB4MjMwNDdkODQsIDB4MzJjYWFiN2IsIDB4NDBjNzI0OTMsXG4gIDB4M2M5ZWJlMGEsIDB4MTVjOWJlYmMsIDB4NDMxZDY3YzQsIDB4OWMxMDBkNGMsXG4gIDB4NGNjNWQ0YmUsIDB4Y2IzZTQyYjYsIDB4NTk3ZjI5OWMsIDB4ZmM2NTdlMmEsXG4gIDB4NWZjYjZmYWIsIDB4M2FkNmZhZWMsIDB4NmM0NDE5OGMsIDB4NGE0NzU4MTdcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoMTYwKVxuXG5mdW5jdGlvbiBTaGE1MTIgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCAxMjgsIDExMilcbn1cblxuaW5oZXJpdHMoU2hhNTEyLCBIYXNoKVxuXG5TaGE1MTIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2FoID0gMHg2YTA5ZTY2N1xuICB0aGlzLl9iaCA9IDB4YmI2N2FlODVcbiAgdGhpcy5fY2ggPSAweDNjNmVmMzcyXG4gIHRoaXMuX2RoID0gMHhhNTRmZjUzYVxuICB0aGlzLl9laCA9IDB4NTEwZTUyN2ZcbiAgdGhpcy5fZmggPSAweDliMDU2ODhjXG4gIHRoaXMuX2doID0gMHgxZjgzZDlhYlxuICB0aGlzLl9oaCA9IDB4NWJlMGNkMTlcblxuICB0aGlzLl9hbCA9IDB4ZjNiY2M5MDhcbiAgdGhpcy5fYmwgPSAweDg0Y2FhNzNiXG4gIHRoaXMuX2NsID0gMHhmZTk0ZjgyYlxuICB0aGlzLl9kbCA9IDB4NWYxZDM2ZjFcbiAgdGhpcy5fZWwgPSAweGFkZTY4MmQxXG4gIHRoaXMuX2ZsID0gMHgyYjNlNmMxZlxuICB0aGlzLl9nbCA9IDB4ZmI0MWJkNmJcbiAgdGhpcy5faGwgPSAweDEzN2UyMTc5XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gQ2ggKHgsIHksIHopIHtcbiAgcmV0dXJuIHogXiAoeCAmICh5IF4geikpXG59XG5cbmZ1bmN0aW9uIG1haiAoeCwgeSwgeikge1xuICByZXR1cm4gKHggJiB5KSB8ICh6ICYgKHggfCB5KSlcbn1cblxuZnVuY3Rpb24gc2lnbWEwICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDI4IHwgeGwgPDwgNCkgXiAoeGwgPj4+IDIgfCB4IDw8IDMwKSBeICh4bCA+Pj4gNyB8IHggPDwgMjUpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMSAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxNCB8IHhsIDw8IDE4KSBeICh4ID4+PiAxOCB8IHhsIDw8IDE0KSBeICh4bCA+Pj4gOSB8IHggPDwgMjMpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxIHwgeGwgPDwgMzEpIF4gKHggPj4+IDggfCB4bCA8PCAyNCkgXiAoeCA+Pj4gNylcbn1cblxuZnVuY3Rpb24gR2FtbWEwbCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxIHwgeGwgPDwgMzEpIF4gKHggPj4+IDggfCB4bCA8PCAyNCkgXiAoeCA+Pj4gNyB8IHhsIDw8IDI1KVxufVxuXG5mdW5jdGlvbiBHYW1tYTEgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMTkgfCB4bCA8PCAxMykgXiAoeGwgPj4+IDI5IHwgeCA8PCAzKSBeICh4ID4+PiA2KVxufVxuXG5mdW5jdGlvbiBHYW1tYTFsICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDE5IHwgeGwgPDwgMTMpIF4gKHhsID4+PiAyOSB8IHggPDwgMykgXiAoeCA+Pj4gNiB8IHhsIDw8IDI2KVxufVxuXG5mdW5jdGlvbiBnZXRDYXJyeSAoYSwgYikge1xuICByZXR1cm4gKGEgPj4+IDApIDwgKGIgPj4+IDApID8gMSA6IDBcbn1cblxuU2hhNTEyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGFoID0gdGhpcy5fYWggfCAwXG4gIHZhciBiaCA9IHRoaXMuX2JoIHwgMFxuICB2YXIgY2ggPSB0aGlzLl9jaCB8IDBcbiAgdmFyIGRoID0gdGhpcy5fZGggfCAwXG4gIHZhciBlaCA9IHRoaXMuX2VoIHwgMFxuICB2YXIgZmggPSB0aGlzLl9maCB8IDBcbiAgdmFyIGdoID0gdGhpcy5fZ2ggfCAwXG4gIHZhciBoaCA9IHRoaXMuX2hoIHwgMFxuXG4gIHZhciBhbCA9IHRoaXMuX2FsIHwgMFxuICB2YXIgYmwgPSB0aGlzLl9ibCB8IDBcbiAgdmFyIGNsID0gdGhpcy5fY2wgfCAwXG4gIHZhciBkbCA9IHRoaXMuX2RsIHwgMFxuICB2YXIgZWwgPSB0aGlzLl9lbCB8IDBcbiAgdmFyIGZsID0gdGhpcy5fZmwgfCAwXG4gIHZhciBnbCA9IHRoaXMuX2dsIHwgMFxuICB2YXIgaGwgPSB0aGlzLl9obCB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDMyOyBpICs9IDIpIHtcbiAgICBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgICBXW2kgKyAxXSA9IE0ucmVhZEludDMyQkUoaSAqIDQgKyA0KVxuICB9XG4gIGZvciAoOyBpIDwgMTYwOyBpICs9IDIpIHtcbiAgICB2YXIgeGggPSBXW2kgLSAxNSAqIDJdXG4gICAgdmFyIHhsID0gV1tpIC0gMTUgKiAyICsgMV1cbiAgICB2YXIgZ2FtbWEwID0gR2FtbWEwKHhoLCB4bClcbiAgICB2YXIgZ2FtbWEwbCA9IEdhbW1hMGwoeGwsIHhoKVxuXG4gICAgeGggPSBXW2kgLSAyICogMl1cbiAgICB4bCA9IFdbaSAtIDIgKiAyICsgMV1cbiAgICB2YXIgZ2FtbWExID0gR2FtbWExKHhoLCB4bClcbiAgICB2YXIgZ2FtbWExbCA9IEdhbW1hMWwoeGwsIHhoKVxuXG4gICAgLy8gV1tpXSA9IGdhbW1hMCArIFdbaSAtIDddICsgZ2FtbWExICsgV1tpIC0gMTZdXG4gICAgdmFyIFdpN2ggPSBXW2kgLSA3ICogMl1cbiAgICB2YXIgV2k3bCA9IFdbaSAtIDcgKiAyICsgMV1cblxuICAgIHZhciBXaTE2aCA9IFdbaSAtIDE2ICogMl1cbiAgICB2YXIgV2kxNmwgPSBXW2kgLSAxNiAqIDIgKyAxXVxuXG4gICAgdmFyIFdpbCA9IChnYW1tYTBsICsgV2k3bCkgfCAwXG4gICAgdmFyIFdpaCA9IChnYW1tYTAgKyBXaTdoICsgZ2V0Q2FycnkoV2lsLCBnYW1tYTBsKSkgfCAwXG4gICAgV2lsID0gKFdpbCArIGdhbW1hMWwpIHwgMFxuICAgIFdpaCA9IChXaWggKyBnYW1tYTEgKyBnZXRDYXJyeShXaWwsIGdhbW1hMWwpKSB8IDBcbiAgICBXaWwgPSAoV2lsICsgV2kxNmwpIHwgMFxuICAgIFdpaCA9IChXaWggKyBXaTE2aCArIGdldENhcnJ5KFdpbCwgV2kxNmwpKSB8IDBcblxuICAgIFdbaV0gPSBXaWhcbiAgICBXW2kgKyAxXSA9IFdpbFxuICB9XG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCAxNjA7IGogKz0gMikge1xuICAgIFdpaCA9IFdbal1cbiAgICBXaWwgPSBXW2ogKyAxXVxuXG4gICAgdmFyIG1hamggPSBtYWooYWgsIGJoLCBjaClcbiAgICB2YXIgbWFqbCA9IG1haihhbCwgYmwsIGNsKVxuXG4gICAgdmFyIHNpZ21hMGggPSBzaWdtYTAoYWgsIGFsKVxuICAgIHZhciBzaWdtYTBsID0gc2lnbWEwKGFsLCBhaClcbiAgICB2YXIgc2lnbWExaCA9IHNpZ21hMShlaCwgZWwpXG4gICAgdmFyIHNpZ21hMWwgPSBzaWdtYTEoZWwsIGVoKVxuXG4gICAgLy8gdDEgPSBoICsgc2lnbWExICsgY2ggKyBLW2pdICsgV1tqXVxuICAgIHZhciBLaWggPSBLW2pdXG4gICAgdmFyIEtpbCA9IEtbaiArIDFdXG5cbiAgICB2YXIgY2hoID0gQ2goZWgsIGZoLCBnaClcbiAgICB2YXIgY2hsID0gQ2goZWwsIGZsLCBnbClcblxuICAgIHZhciB0MWwgPSAoaGwgKyBzaWdtYTFsKSB8IDBcbiAgICB2YXIgdDFoID0gKGhoICsgc2lnbWExaCArIGdldENhcnJ5KHQxbCwgaGwpKSB8IDBcbiAgICB0MWwgPSAodDFsICsgY2hsKSB8IDBcbiAgICB0MWggPSAodDFoICsgY2hoICsgZ2V0Q2FycnkodDFsLCBjaGwpKSB8IDBcbiAgICB0MWwgPSAodDFsICsgS2lsKSB8IDBcbiAgICB0MWggPSAodDFoICsgS2loICsgZ2V0Q2FycnkodDFsLCBLaWwpKSB8IDBcbiAgICB0MWwgPSAodDFsICsgV2lsKSB8IDBcbiAgICB0MWggPSAodDFoICsgV2loICsgZ2V0Q2FycnkodDFsLCBXaWwpKSB8IDBcblxuICAgIC8vIHQyID0gc2lnbWEwICsgbWFqXG4gICAgdmFyIHQybCA9IChzaWdtYTBsICsgbWFqbCkgfCAwXG4gICAgdmFyIHQyaCA9IChzaWdtYTBoICsgbWFqaCArIGdldENhcnJ5KHQybCwgc2lnbWEwbCkpIHwgMFxuXG4gICAgaGggPSBnaFxuICAgIGhsID0gZ2xcbiAgICBnaCA9IGZoXG4gICAgZ2wgPSBmbFxuICAgIGZoID0gZWhcbiAgICBmbCA9IGVsXG4gICAgZWwgPSAoZGwgKyB0MWwpIHwgMFxuICAgIGVoID0gKGRoICsgdDFoICsgZ2V0Q2FycnkoZWwsIGRsKSkgfCAwXG4gICAgZGggPSBjaFxuICAgIGRsID0gY2xcbiAgICBjaCA9IGJoXG4gICAgY2wgPSBibFxuICAgIGJoID0gYWhcbiAgICBibCA9IGFsXG4gICAgYWwgPSAodDFsICsgdDJsKSB8IDBcbiAgICBhaCA9ICh0MWggKyB0MmggKyBnZXRDYXJyeShhbCwgdDFsKSkgfCAwXG4gIH1cblxuICB0aGlzLl9hbCA9ICh0aGlzLl9hbCArIGFsKSB8IDBcbiAgdGhpcy5fYmwgPSAodGhpcy5fYmwgKyBibCkgfCAwXG4gIHRoaXMuX2NsID0gKHRoaXMuX2NsICsgY2wpIHwgMFxuICB0aGlzLl9kbCA9ICh0aGlzLl9kbCArIGRsKSB8IDBcbiAgdGhpcy5fZWwgPSAodGhpcy5fZWwgKyBlbCkgfCAwXG4gIHRoaXMuX2ZsID0gKHRoaXMuX2ZsICsgZmwpIHwgMFxuICB0aGlzLl9nbCA9ICh0aGlzLl9nbCArIGdsKSB8IDBcbiAgdGhpcy5faGwgPSAodGhpcy5faGwgKyBobCkgfCAwXG5cbiAgdGhpcy5fYWggPSAodGhpcy5fYWggKyBhaCArIGdldENhcnJ5KHRoaXMuX2FsLCBhbCkpIHwgMFxuICB0aGlzLl9iaCA9ICh0aGlzLl9iaCArIGJoICsgZ2V0Q2FycnkodGhpcy5fYmwsIGJsKSkgfCAwXG4gIHRoaXMuX2NoID0gKHRoaXMuX2NoICsgY2ggKyBnZXRDYXJyeSh0aGlzLl9jbCwgY2wpKSB8IDBcbiAgdGhpcy5fZGggPSAodGhpcy5fZGggKyBkaCArIGdldENhcnJ5KHRoaXMuX2RsLCBkbCkpIHwgMFxuICB0aGlzLl9laCA9ICh0aGlzLl9laCArIGVoICsgZ2V0Q2FycnkodGhpcy5fZWwsIGVsKSkgfCAwXG4gIHRoaXMuX2ZoID0gKHRoaXMuX2ZoICsgZmggKyBnZXRDYXJyeSh0aGlzLl9mbCwgZmwpKSB8IDBcbiAgdGhpcy5fZ2ggPSAodGhpcy5fZ2ggKyBnaCArIGdldENhcnJ5KHRoaXMuX2dsLCBnbCkpIHwgMFxuICB0aGlzLl9oaCA9ICh0aGlzLl9oaCArIGhoICsgZ2V0Q2FycnkodGhpcy5faGwsIGhsKSkgfCAwXG59XG5cblNoYTUxMi5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gQnVmZmVyLmFsbG9jVW5zYWZlKDY0KVxuXG4gIGZ1bmN0aW9uIHdyaXRlSW50NjRCRSAoaCwgbCwgb2Zmc2V0KSB7XG4gICAgSC53cml0ZUludDMyQkUoaCwgb2Zmc2V0KVxuICAgIEgud3JpdGVJbnQzMkJFKGwsIG9mZnNldCArIDQpXG4gIH1cblxuICB3cml0ZUludDY0QkUodGhpcy5fYWgsIHRoaXMuX2FsLCAwKVxuICB3cml0ZUludDY0QkUodGhpcy5fYmgsIHRoaXMuX2JsLCA4KVxuICB3cml0ZUludDY0QkUodGhpcy5fY2gsIHRoaXMuX2NsLCAxNilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2RoLCB0aGlzLl9kbCwgMjQpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9laCwgdGhpcy5fZWwsIDMyKVxuICB3cml0ZUludDY0QkUodGhpcy5fZmgsIHRoaXMuX2ZsLCA0MClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2doLCB0aGlzLl9nbCwgNDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9oaCwgdGhpcy5faGwsIDU2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhNTEyXG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxubW9kdWxlLmV4cG9ydHMgPSBTdHJlYW07XG5cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmluaGVyaXRzKFN0cmVhbSwgRUUpO1xuU3RyZWFtLlJlYWRhYmxlID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3JlYWRhYmxlLmpzJyk7XG5TdHJlYW0uV3JpdGFibGUgPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fd3JpdGFibGUuanMnKTtcblN0cmVhbS5EdXBsZXggPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fZHVwbGV4LmpzJyk7XG5TdHJlYW0uVHJhbnNmb3JtID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcycpO1xuU3RyZWFtLlBhc3NUaHJvdWdoID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzJyk7XG5TdHJlYW0uZmluaXNoZWQgPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvZW5kLW9mLXN0cmVhbS5qcycpXG5TdHJlYW0ucGlwZWxpbmUgPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvcGlwZWxpbmUuanMnKVxuXG4vLyBCYWNrd2FyZHMtY29tcGF0IHdpdGggbm9kZSAwLjQueFxuU3RyZWFtLlN0cmVhbSA9IFN0cmVhbTtcblxuXG5cbi8vIG9sZC1zdHlsZSBzdHJlYW1zLiAgTm90ZSB0aGF0IHRoZSBwaXBlIG1ldGhvZCAodGhlIG9ubHkgcmVsZXZhbnRcbi8vIHBhcnQgb2YgdGhpcyBjbGFzcykgaXMgb3ZlcnJpZGRlbiBpbiB0aGUgUmVhZGFibGUgY2xhc3MuXG5cbmZ1bmN0aW9uIFN0cmVhbSgpIHtcbiAgRUUuY2FsbCh0aGlzKTtcbn1cblxuU3RyZWFtLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24oZGVzdCwgb3B0aW9ucykge1xuICB2YXIgc291cmNlID0gdGhpcztcblxuICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHtcbiAgICBpZiAoZGVzdC53cml0YWJsZSkge1xuICAgICAgaWYgKGZhbHNlID09PSBkZXN0LndyaXRlKGNodW5rKSAmJiBzb3VyY2UucGF1c2UpIHtcbiAgICAgICAgc291cmNlLnBhdXNlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc291cmNlLm9uKCdkYXRhJywgb25kYXRhKTtcblxuICBmdW5jdGlvbiBvbmRyYWluKCkge1xuICAgIGlmIChzb3VyY2UucmVhZGFibGUgJiYgc291cmNlLnJlc3VtZSkge1xuICAgICAgc291cmNlLnJlc3VtZSgpO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbik7XG5cbiAgLy8gSWYgdGhlICdlbmQnIG9wdGlvbiBpcyBub3Qgc3VwcGxpZWQsIGRlc3QuZW5kKCkgd2lsbCBiZSBjYWxsZWQgd2hlblxuICAvLyBzb3VyY2UgZ2V0cyB0aGUgJ2VuZCcgb3IgJ2Nsb3NlJyBldmVudHMuICBPbmx5IGRlc3QuZW5kKCkgb25jZS5cbiAgaWYgKCFkZXN0Ll9pc1N0ZGlvICYmICghb3B0aW9ucyB8fCBvcHRpb25zLmVuZCAhPT0gZmFsc2UpKSB7XG4gICAgc291cmNlLm9uKCdlbmQnLCBvbmVuZCk7XG4gICAgc291cmNlLm9uKCdjbG9zZScsIG9uY2xvc2UpO1xuICB9XG5cbiAgdmFyIGRpZE9uRW5kID0gZmFsc2U7XG4gIGZ1bmN0aW9uIG9uZW5kKCkge1xuICAgIGlmIChkaWRPbkVuZCkgcmV0dXJuO1xuICAgIGRpZE9uRW5kID0gdHJ1ZTtcblxuICAgIGRlc3QuZW5kKCk7XG4gIH1cblxuXG4gIGZ1bmN0aW9uIG9uY2xvc2UoKSB7XG4gICAgaWYgKGRpZE9uRW5kKSByZXR1cm47XG4gICAgZGlkT25FbmQgPSB0cnVlO1xuXG4gICAgaWYgKHR5cGVvZiBkZXN0LmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIGRlc3QuZGVzdHJveSgpO1xuICB9XG5cbiAgLy8gZG9uJ3QgbGVhdmUgZGFuZ2xpbmcgcGlwZXMgd2hlbiB0aGVyZSBhcmUgZXJyb3JzLlxuICBmdW5jdGlvbiBvbmVycm9yKGVyKSB7XG4gICAgY2xlYW51cCgpO1xuICAgIGlmIChFRS5saXN0ZW5lckNvdW50KHRoaXMsICdlcnJvcicpID09PSAwKSB7XG4gICAgICB0aHJvdyBlcjsgLy8gVW5oYW5kbGVkIHN0cmVhbSBlcnJvciBpbiBwaXBlLlxuICAgIH1cbiAgfVxuXG4gIHNvdXJjZS5vbignZXJyb3InLCBvbmVycm9yKTtcbiAgZGVzdC5vbignZXJyb3InLCBvbmVycm9yKTtcblxuICAvLyByZW1vdmUgYWxsIHRoZSBldmVudCBsaXN0ZW5lcnMgdGhhdCB3ZXJlIGFkZGVkLlxuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZGF0YScsIG9uZGF0YSk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZHJhaW4nLCBvbmRyYWluKTtcblxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpO1xuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcblxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBjbGVhbnVwKTtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgY2xlYW51cCk7XG5cbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIGNsZWFudXApO1xuICB9XG5cbiAgc291cmNlLm9uKCdlbmQnLCBjbGVhbnVwKTtcbiAgc291cmNlLm9uKCdjbG9zZScsIGNsZWFudXApO1xuXG4gIGRlc3Qub24oJ2Nsb3NlJywgY2xlYW51cCk7XG5cbiAgZGVzdC5lbWl0KCdwaXBlJywgc291cmNlKTtcblxuICAvLyBBbGxvdyBmb3IgdW5peC1saWtlIHVzYWdlOiBBLnBpcGUoQikucGlwZShDKVxuICByZXR1cm4gZGVzdDtcbn07XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXI7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIGlzRW5jb2RpbmcgPSBCdWZmZXIuaXNFbmNvZGluZyB8fCBmdW5jdGlvbiAoZW5jb2RpbmcpIHtcbiAgZW5jb2RpbmcgPSAnJyArIGVuY29kaW5nO1xuICBzd2l0Y2ggKGVuY29kaW5nICYmIGVuY29kaW5nLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOmNhc2UgJ3V0ZjgnOmNhc2UgJ3V0Zi04JzpjYXNlICdhc2NpaSc6Y2FzZSAnYmluYXJ5JzpjYXNlICdiYXNlNjQnOmNhc2UgJ3VjczInOmNhc2UgJ3Vjcy0yJzpjYXNlICd1dGYxNmxlJzpjYXNlICd1dGYtMTZsZSc6Y2FzZSAncmF3JzpcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9ub3JtYWxpemVFbmNvZGluZyhlbmMpIHtcbiAgaWYgKCFlbmMpIHJldHVybiAndXRmOCc7XG4gIHZhciByZXRyaWVkO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jKSB7XG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuICd1dGY4JztcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiAndXRmMTZsZSc7XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuICdsYXRpbjEnO1xuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBlbmM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAocmV0cmllZCkgcmV0dXJuOyAvLyB1bmRlZmluZWRcbiAgICAgICAgZW5jID0gKCcnICsgZW5jKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXRyaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIERvIG5vdCBjYWNoZSBgQnVmZmVyLmlzRW5jb2RpbmdgIHdoZW4gY2hlY2tpbmcgZW5jb2RpbmcgbmFtZXMgYXMgc29tZVxuLy8gbW9kdWxlcyBtb25rZXktcGF0Y2ggaXQgdG8gc3VwcG9ydCBhZGRpdGlvbmFsIGVuY29kaW5nc1xuZnVuY3Rpb24gbm9ybWFsaXplRW5jb2RpbmcoZW5jKSB7XG4gIHZhciBuZW5jID0gX25vcm1hbGl6ZUVuY29kaW5nKGVuYyk7XG4gIGlmICh0eXBlb2YgbmVuYyAhPT0gJ3N0cmluZycgJiYgKEJ1ZmZlci5pc0VuY29kaW5nID09PSBpc0VuY29kaW5nIHx8ICFpc0VuY29kaW5nKGVuYykpKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmMpO1xuICByZXR1cm4gbmVuYyB8fCBlbmM7XG59XG5cbi8vIFN0cmluZ0RlY29kZXIgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciBlZmZpY2llbnRseSBzcGxpdHRpbmcgYSBzZXJpZXMgb2Zcbi8vIGJ1ZmZlcnMgaW50byBhIHNlcmllcyBvZiBKUyBzdHJpbmdzIHdpdGhvdXQgYnJlYWtpbmcgYXBhcnQgbXVsdGktYnl0ZVxuLy8gY2hhcmFjdGVycy5cbmV4cG9ydHMuU3RyaW5nRGVjb2RlciA9IFN0cmluZ0RlY29kZXI7XG5mdW5jdGlvbiBTdHJpbmdEZWNvZGVyKGVuY29kaW5nKSB7XG4gIHRoaXMuZW5jb2RpbmcgPSBub3JtYWxpemVFbmNvZGluZyhlbmNvZGluZyk7XG4gIHZhciBuYjtcbiAgc3dpdGNoICh0aGlzLmVuY29kaW5nKSB7XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICB0aGlzLnRleHQgPSB1dGYxNlRleHQ7XG4gICAgICB0aGlzLmVuZCA9IHV0ZjE2RW5kO1xuICAgICAgbmIgPSA0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndXRmOCc6XG4gICAgICB0aGlzLmZpbGxMYXN0ID0gdXRmOEZpbGxMYXN0O1xuICAgICAgbmIgPSA0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIHRoaXMudGV4dCA9IGJhc2U2NFRleHQ7XG4gICAgICB0aGlzLmVuZCA9IGJhc2U2NEVuZDtcbiAgICAgIG5iID0gMztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aGlzLndyaXRlID0gc2ltcGxlV3JpdGU7XG4gICAgICB0aGlzLmVuZCA9IHNpbXBsZUVuZDtcbiAgICAgIHJldHVybjtcbiAgfVxuICB0aGlzLmxhc3ROZWVkID0gMDtcbiAgdGhpcy5sYXN0VG90YWwgPSAwO1xuICB0aGlzLmxhc3RDaGFyID0gQnVmZmVyLmFsbG9jVW5zYWZlKG5iKTtcbn1cblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIGlmIChidWYubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIHZhciByO1xuICB2YXIgaTtcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHtcbiAgICByID0gdGhpcy5maWxsTGFzdChidWYpO1xuICAgIGlmIChyID09PSB1bmRlZmluZWQpIHJldHVybiAnJztcbiAgICBpID0gdGhpcy5sYXN0TmVlZDtcbiAgICB0aGlzLmxhc3ROZWVkID0gMDtcbiAgfSBlbHNlIHtcbiAgICBpID0gMDtcbiAgfVxuICBpZiAoaSA8IGJ1Zi5sZW5ndGgpIHJldHVybiByID8gciArIHRoaXMudGV4dChidWYsIGkpIDogdGhpcy50ZXh0KGJ1ZiwgaSk7XG4gIHJldHVybiByIHx8ICcnO1xufTtcblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gdXRmOEVuZDtcblxuLy8gUmV0dXJucyBvbmx5IGNvbXBsZXRlIGNoYXJhY3RlcnMgaW4gYSBCdWZmZXJcblN0cmluZ0RlY29kZXIucHJvdG90eXBlLnRleHQgPSB1dGY4VGV4dDtcblxuLy8gQXR0ZW1wdHMgdG8gY29tcGxldGUgYSBwYXJ0aWFsIG5vbi1VVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlclxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZmlsbExhc3QgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIGlmICh0aGlzLmxhc3ROZWVkIDw9IGJ1Zi5sZW5ndGgpIHtcbiAgICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIHRoaXMubGFzdE5lZWQpO1xuICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTtcbiAgfVxuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIGJ1Zi5sZW5ndGgpO1xuICB0aGlzLmxhc3ROZWVkIC09IGJ1Zi5sZW5ndGg7XG59O1xuXG4vLyBDaGVja3MgdGhlIHR5cGUgb2YgYSBVVEYtOCBieXRlLCB3aGV0aGVyIGl0J3MgQVNDSUksIGEgbGVhZGluZyBieXRlLCBvciBhXG4vLyBjb250aW51YXRpb24gYnl0ZS4gSWYgYW4gaW52YWxpZCBieXRlIGlzIGRldGVjdGVkLCAtMiBpcyByZXR1cm5lZC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0J5dGUoYnl0ZSkge1xuICBpZiAoYnl0ZSA8PSAweDdGKSByZXR1cm4gMDtlbHNlIGlmIChieXRlID4+IDUgPT09IDB4MDYpIHJldHVybiAyO2Vsc2UgaWYgKGJ5dGUgPj4gNCA9PT0gMHgwRSkgcmV0dXJuIDM7ZWxzZSBpZiAoYnl0ZSA+PiAzID09PSAweDFFKSByZXR1cm4gNDtcbiAgcmV0dXJuIGJ5dGUgPj4gNiA9PT0gMHgwMiA/IC0xIDogLTI7XG59XG5cbi8vIENoZWNrcyBhdCBtb3N0IDMgYnl0ZXMgYXQgdGhlIGVuZCBvZiBhIEJ1ZmZlciBpbiBvcmRlciB0byBkZXRlY3QgYW5cbi8vIGluY29tcGxldGUgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIuIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgKDIsIDMsIG9yIDQpXG4vLyBuZWVkZWQgdG8gY29tcGxldGUgdGhlIFVURi04IGNoYXJhY3RlciAoaWYgYXBwbGljYWJsZSkgYXJlIHJldHVybmVkLlxuZnVuY3Rpb24gdXRmOENoZWNrSW5jb21wbGV0ZShzZWxmLCBidWYsIGkpIHtcbiAgdmFyIGogPSBidWYubGVuZ3RoIC0gMTtcbiAgaWYgKGogPCBpKSByZXR1cm4gMDtcbiAgdmFyIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHNlbGYubGFzdE5lZWQgPSBuYiAtIDE7XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIGlmICgtLWogPCBpIHx8IG5iID09PSAtMikgcmV0dXJuIDA7XG4gIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHNlbGYubGFzdE5lZWQgPSBuYiAtIDI7XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIGlmICgtLWogPCBpIHx8IG5iID09PSAtMikgcmV0dXJuIDA7XG4gIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHtcbiAgICAgIGlmIChuYiA9PT0gMikgbmIgPSAwO2Vsc2Ugc2VsZi5sYXN0TmVlZCA9IG5iIC0gMztcbiAgICB9XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vLyBWYWxpZGF0ZXMgYXMgbWFueSBjb250aW51YXRpb24gYnl0ZXMgZm9yIGEgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIgYXNcbi8vIG5lZWRlZCBvciBhcmUgYXZhaWxhYmxlLiBJZiB3ZSBzZWUgYSBub24tY29udGludWF0aW9uIGJ5dGUgd2hlcmUgd2UgZXhwZWN0XG4vLyBvbmUsIHdlIFwicmVwbGFjZVwiIHRoZSB2YWxpZGF0ZWQgY29udGludWF0aW9uIGJ5dGVzIHdlJ3ZlIHNlZW4gc28gZmFyIHdpdGhcbi8vIGEgc2luZ2xlIFVURi04IHJlcGxhY2VtZW50IGNoYXJhY3RlciAoJ1xcdWZmZmQnKSwgdG8gbWF0Y2ggdjgncyBVVEYtOCBkZWNvZGluZ1xuLy8gYmVoYXZpb3IuIFRoZSBjb250aW51YXRpb24gYnl0ZSBjaGVjayBpcyBpbmNsdWRlZCB0aHJlZSB0aW1lcyBpbiB0aGUgY2FzZVxuLy8gd2hlcmUgYWxsIG9mIHRoZSBjb250aW51YXRpb24gYnl0ZXMgZm9yIGEgY2hhcmFjdGVyIGV4aXN0IGluIHRoZSBzYW1lIGJ1ZmZlci5cbi8vIEl0IGlzIGFsc28gZG9uZSB0aGlzIHdheSBhcyBhIHNsaWdodCBwZXJmb3JtYW5jZSBpbmNyZWFzZSBpbnN0ZWFkIG9mIHVzaW5nIGFcbi8vIGxvb3AuXG5mdW5jdGlvbiB1dGY4Q2hlY2tFeHRyYUJ5dGVzKHNlbGYsIGJ1ZiwgcCkge1xuICBpZiAoKGJ1ZlswXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgc2VsZi5sYXN0TmVlZCA9IDA7XG4gICAgcmV0dXJuICdcXHVmZmZkJztcbiAgfVxuICBpZiAoc2VsZi5sYXN0TmVlZCA+IDEgJiYgYnVmLmxlbmd0aCA+IDEpIHtcbiAgICBpZiAoKGJ1ZlsxXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgICBzZWxmLmxhc3ROZWVkID0gMTtcbiAgICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gICAgfVxuICAgIGlmIChzZWxmLmxhc3ROZWVkID4gMiAmJiBidWYubGVuZ3RoID4gMikge1xuICAgICAgaWYgKChidWZbMl0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgICAgICBzZWxmLmxhc3ROZWVkID0gMjtcbiAgICAgICAgcmV0dXJuICdcXHVmZmZkJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gQXR0ZW1wdHMgdG8gY29tcGxldGUgYSBtdWx0aS1ieXRlIFVURi04IGNoYXJhY3RlciB1c2luZyBieXRlcyBmcm9tIGEgQnVmZmVyLlxuZnVuY3Rpb24gdXRmOEZpbGxMYXN0KGJ1Zikge1xuICB2YXIgcCA9IHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZDtcbiAgdmFyIHIgPSB1dGY4Q2hlY2tFeHRyYUJ5dGVzKHRoaXMsIGJ1ZiwgcCk7XG4gIGlmIChyICE9PSB1bmRlZmluZWQpIHJldHVybiByO1xuICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7XG4gICAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgcCwgMCwgdGhpcy5sYXN0TmVlZCk7XG4gICAgcmV0dXJuIHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywgMCwgdGhpcy5sYXN0VG90YWwpO1xuICB9XG4gIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHAsIDAsIGJ1Zi5sZW5ndGgpO1xuICB0aGlzLmxhc3ROZWVkIC09IGJ1Zi5sZW5ndGg7XG59XG5cbi8vIFJldHVybnMgYWxsIGNvbXBsZXRlIFVURi04IGNoYXJhY3RlcnMgaW4gYSBCdWZmZXIuIElmIHRoZSBCdWZmZXIgZW5kZWQgb24gYVxuLy8gcGFydGlhbCBjaGFyYWN0ZXIsIHRoZSBjaGFyYWN0ZXIncyBieXRlcyBhcmUgYnVmZmVyZWQgdW50aWwgdGhlIHJlcXVpcmVkXG4vLyBudW1iZXIgb2YgYnl0ZXMgYXJlIGF2YWlsYWJsZS5cbmZ1bmN0aW9uIHV0ZjhUZXh0KGJ1ZiwgaSkge1xuICB2YXIgdG90YWwgPSB1dGY4Q2hlY2tJbmNvbXBsZXRlKHRoaXMsIGJ1ZiwgaSk7XG4gIGlmICghdGhpcy5sYXN0TmVlZCkgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmOCcsIGkpO1xuICB0aGlzLmxhc3RUb3RhbCA9IHRvdGFsO1xuICB2YXIgZW5kID0gYnVmLmxlbmd0aCAtICh0b3RhbCAtIHRoaXMubGFzdE5lZWQpO1xuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCAwLCBlbmQpO1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGY4JywgaSwgZW5kKTtcbn1cblxuLy8gRm9yIFVURi04LCBhIHJlcGxhY2VtZW50IGNoYXJhY3RlciBpcyBhZGRlZCB3aGVuIGVuZGluZyBvbiBhIHBhcnRpYWxcbi8vIGNoYXJhY3Rlci5cbmZ1bmN0aW9uIHV0ZjhFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHJldHVybiByICsgJ1xcdWZmZmQnO1xuICByZXR1cm4gcjtcbn1cblxuLy8gVVRGLTE2TEUgdHlwaWNhbGx5IG5lZWRzIHR3byBieXRlcyBwZXIgY2hhcmFjdGVyLCBidXQgZXZlbiBpZiB3ZSBoYXZlIGFuIGV2ZW5cbi8vIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUsIHdlIG5lZWQgdG8gY2hlY2sgaWYgd2UgZW5kIG9uIGEgbGVhZGluZy9oaWdoXG4vLyBzdXJyb2dhdGUuIEluIHRoYXQgY2FzZSwgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgbmV4dCB0d28gYnl0ZXMgaW4gb3JkZXIgdG9cbi8vIGRlY29kZSB0aGUgbGFzdCBjaGFyYWN0ZXIgcHJvcGVybHkuXG5mdW5jdGlvbiB1dGYxNlRleHQoYnVmLCBpKSB7XG4gIGlmICgoYnVmLmxlbmd0aCAtIGkpICUgMiA9PT0gMCkge1xuICAgIHZhciByID0gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJywgaSk7XG4gICAgaWYgKHIpIHtcbiAgICAgIHZhciBjID0gci5jaGFyQ29kZUF0KHIubGVuZ3RoIC0gMSk7XG4gICAgICBpZiAoYyA+PSAweEQ4MDAgJiYgYyA8PSAweERCRkYpIHtcbiAgICAgICAgdGhpcy5sYXN0TmVlZCA9IDI7XG4gICAgICAgIHRoaXMubGFzdFRvdGFsID0gNDtcbiAgICAgICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMl07XG4gICAgICAgIHRoaXMubGFzdENoYXJbMV0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICAgICAgICByZXR1cm4gci5zbGljZSgwLCAtMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG4gIHRoaXMubGFzdE5lZWQgPSAxO1xuICB0aGlzLmxhc3RUb3RhbCA9IDI7XG4gIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJywgaSwgYnVmLmxlbmd0aCAtIDEpO1xufVxuXG4vLyBGb3IgVVRGLTE2TEUgd2UgZG8gbm90IGV4cGxpY2l0bHkgYXBwZW5kIHNwZWNpYWwgcmVwbGFjZW1lbnQgY2hhcmFjdGVycyBpZiB3ZVxuLy8gZW5kIG9uIGEgcGFydGlhbCBjaGFyYWN0ZXIsIHdlIHNpbXBseSBsZXQgdjggaGFuZGxlIHRoYXQuXG5mdW5jdGlvbiB1dGYxNkVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkge1xuICAgIHZhciBlbmQgPSB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQ7XG4gICAgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCd1dGYxNmxlJywgMCwgZW5kKTtcbiAgfVxuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gYmFzZTY0VGV4dChidWYsIGkpIHtcbiAgdmFyIG4gPSAoYnVmLmxlbmd0aCAtIGkpICUgMztcbiAgaWYgKG4gPT09IDApIHJldHVybiBidWYudG9TdHJpbmcoJ2Jhc2U2NCcsIGkpO1xuICB0aGlzLmxhc3ROZWVkID0gMyAtIG47XG4gIHRoaXMubGFzdFRvdGFsID0gMztcbiAgaWYgKG4gPT09IDEpIHtcbiAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAyXTtcbiAgICB0aGlzLmxhc3RDaGFyWzFdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgfVxuICByZXR1cm4gYnVmLnRvU3RyaW5nKCdiYXNlNjQnLCBpLCBidWYubGVuZ3RoIC0gbik7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NEVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCdiYXNlNjQnLCAwLCAzIC0gdGhpcy5sYXN0TmVlZCk7XG4gIHJldHVybiByO1xufVxuXG4vLyBQYXNzIGJ5dGVzIG9uIHRocm91Z2ggZm9yIHNpbmdsZS1ieXRlIGVuY29kaW5ncyAoZS5nLiBhc2NpaSwgbGF0aW4xLCBoZXgpXG5mdW5jdGlvbiBzaW1wbGVXcml0ZShidWYpIHtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZyh0aGlzLmVuY29kaW5nKTtcbn1cblxuZnVuY3Rpb24gc2ltcGxlRW5kKGJ1Zikge1xuICByZXR1cm4gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbn0iLCIvKlxuICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlIGNvbnRyaWJ1dG9yXG4gKiBsaWNlbnNlIGFncmVlbWVudHM7IGFuZCB0byBZb3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gXCJcbiAqL1xuLyogV3JpdHRlbiBieSBTY29wZXZpc2lvIEFHIDIwMjEgKi9cblxuLyogVGhlIGxpc3Qgb2YgY2VydGljYXRlcyB0aGF0IGFyZSB0cnVzdHdvcnRoeSBmb3IgdmFsaWRhdGlvbi5cbiAqIFxuICogVGhlIGxpc3QgaXMgYWNjZXNzZWQgdmlhIHRoaXMgc2luZ2xldG9uIGNsYXNzIGFuZCBvcmlnaW5hdGVzXG4gKiBmcm9tIFxuICogIGh0dHBzOi8vZGUuZHNjZy51YmlyY2guY29tL3RydXN0TGlzdC9EU0MvXG4gKi9cblxuaW1wb3J0IGRhdGEgZnJvbSAnLi9jZXJ0cy5qc29uJ1xuXG5cbi8qIENlcnRpZmljYXRlIGluZm9ybWF0aW9uLiBUaGlzIGluZm9ybWF0aW5vIGlkZW50aWZpZXMgdGhlIGNlcnRpZmljYXRlXG4gKiB0aGF0IGhhcyB2YWxpZGF0ZWQgdGhlIGdpdmVuIFFSLUNvZGUuIFRoZSBjZXJ0aWZpY2F0ZSBpcyBhIFg1MDkgXG4gKiBzdGFuZGFyZCBjZXJ0aWZpY2F0ZSwgaG93ZXZlciB0aGlzIGRhdGFzdHJ1Y3R1cmUgcHJvdmlkZXMgY29udmVuaWVudCBmaWVsZHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2VydEluZm8ge1xuICAgIHN1YmplY3Q6IHN0cmluZzsgICAgICAgLy8gc3ViamVjdCBvZiB0aGUgY2VydGlmaWNhdGVcbiAgICBpc3N1ZXI6IHN0cmluZzsgICAgICAgIC8vIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB0aGUgaXNzdWVyIG9mIHRoZSBjZXJ0aWZpY3RlXG4gICAgbm90YmVmb3JlOiBudW1iZXI7ICAgICAvLyBkYXRlIGJlZm9yZSB3aGljaCB0aGUgY2VydGlmaWNhdGUgc2hvdWxkIGJlIGNvbnNpZGVyZWQgaW52YWxpZFxuICAgIG5vdGFmdGVyOiBudW1iZXI7ICAgICAgLy8gZGF0ZSBhZnRlciB3aGljaCB0aGUgY2VydGlmaWNhdGUgc2hvdWxkIGJlIGNvbnNpZGVyZWQgaW52YWxpZFxuICAgIHB1YmtleTogc3RyaW5nOyAgICAgICAgLy8gdGhlIHB1YmxpY2tleSBvZiB0aGUgY2VydGlmaWNhdGUgaW4gYSB3YXkgdGhhdCB0aGUgYnJvd3Nlci1jcnlwdG8gYXBpIGNhbiBwcm9jZXNzIGl0XG4gICAgcmF3WDUwOWRhdGE6IHN0cmluZzsgICAvLyB0aGUgWDUwOSBjZXJ0aWZpY2F0ZSBpbiBiaW5hcnkgREVSIGZvcm1hdCwgZW5jb2RlZCBhcyBiYXNlNjRcbiAgICAvLyB0aGUgcmF3WDUwOSBzdHJpbmcgY29udGFpbnMgYWxsIHRoZSBvdGhlciBmaWVsZHMsIGJ1dCBuZWVkcyB0byBiZSBkZWNvZGVkIHRvIGFjY2VzcyB0aGF0IGluZm9ybWF0aW9uXG4gICAgLy8gb25lIHdheSB0byBkbyB0aGF0IGlzIHVzaW5nICBvcGVuc3NsIC1pbmZvcm0gREVSIC10ZXh0IFxufVxuXG5cblxuZXhwb3J0IGNsYXNzIFRydXN0bGlzdCB7XG4gICAgc3RhdGljIGluc3RhbmNlID0gbmV3IFRydXN0bGlzdCgpXG5cbiAgICBwcml2YXRlIGluaXRpYWxpemVkID0gZmFsc2VcbiAgICBwcml2YXRlIGNlcnRJbmZvczogQ2VydEluZm9bXSA9IFtdXG5cbiAgICBhc3luYyBnZXRDZXJ0SW5mb3MoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWVcbiAgICAgICAgICAgIGNvbnN0IGNlcnRzID0gZGF0YS5jZXJ0cyBhcyBDZXJ0SW5mb1tdXG4gICAgICAgICAgICB0aGlzLmNlcnRJbmZvcy5wdXNoKC4uLmNlcnRzKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNlcnRJbmZvc1xuICAgIH1cblxuXG59XG5cbiIsIi8qXG4gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUgY29udHJpYnV0b3JcbiAqIGxpY2Vuc2UgYWdyZWVtZW50czsgYW5kIHRvIFlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBcIlxuICovXG4vKiBXcml0dGVuIGJ5IFNjb3BldmlzaW8gQUcgMjAyMSAqL1xuXG4vKiBwYXJzZSB0aGUgY29udGVudHMgb2YgYSBjYm9yL2N3dC96bGliL2Jhc2U0NSBkZ2MgXG4gKiB0aGlzIGZpbGUgY29udGFpbnMgZXZlcnl0aGluZyBuZWVkZWQgaW50ZXJuYWxseSBmb3IgdmFsaWRhdGlvblxuICovXG5cbmltcG9ydCAqIGFzIGNib3IgZnJvbSAnY2Jvci13ZWInXG5pbXBvcnQgYmFzZTQ1IGZyb20gJ2Jhc2U0NSdcbmltcG9ydCB6bGliIGZyb20gJ3psaWInXG5pbXBvcnQgeyBCdWZmZXJ9IGZyb20gJ2J1ZmZlcidcblxuXG5cbmV4cG9ydCBjbGFzcyBDb3NlMSB7XG5cbiAgICBwcm90ZWN0ZWRfOiBCdWZmZXJcbiAgICB1bnByb3RlY3RlZDogTWFwPGFueSwgYW55PlxuICAgIHBheWxvYWQ6IEJ1ZmZlclxuICAgIHNpZ25hdHVyZXM6IEJ1ZmZlclxuXG4gICAgc3RhdGljIGFzeW5jIGRlY29kZUNib3JBc3luYyhkYXRhOiBCdWZmZXIpOiBQcm9taXNlPG51bGx8YW55PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBjYm9yLmRlY29kZUZpcnN0KGRhdGEsIGZ1bmN0aW9uIChlcnJvcjogYW55LCBvYmo6IGFueSkge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoXCJmYWlsZWQgY2JvcjogXCIgKyBlcnJvcilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvYmopXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyB2YWx1ZU9mKGVuY29kZWREYXRhOiBzdHJpbmcpOiBQcm9taXNlPENvc2UxIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgaWYgKGVuY29kZWREYXRhLmluZGV4T2YoXCJIQzE6XCIpID09IDApIHtcbiAgICAgICAgICAgICAgICBlbmNvZGVkRGF0YSA9IGVuY29kZWREYXRhLnN1YnN0cmluZyg0KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkRGF0YSA9IGJhc2U0NS5kZWNvZGUoZW5jb2RlZERhdGEpXG4gICAgICAgICAgICB6bGliLmluZmxhdGUoZGVjb2RlZERhdGEsIGZ1bmN0aW9uIChlcnJvcjogYW55LCBidWY6IGFueSkge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoXCJmYWlsZWQgY29zZTE6IFwiICsgZXJyb3IpXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYm9yLmRlY29kZUZpcnN0KGJ1ZiwgZnVuY3Rpb24gKGVycm9yOiBhbnksIG9iajogYW55KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KFwiZmFpbGVkIGNvc2UxOiBcIiArIGVycm9yKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdCA9IG9ialxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm90ZWN0ZWRfID0gdC52YWx1ZVswXVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnByb3RlY3RlZCA9IHQudmFsdWVbMV1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IHQudmFsdWVbMl1cbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlcyA9IHQudmFsdWVbM11cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29zZTEgPSBuZXcgQ29zZTEocHJvdGVjdGVkXywgdW5wcm90ZWN0ZWQsIHBheWxvYWQsIHNpZ25hdHVyZXMpXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoY29zZTEpXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkXzogQnVmZmVyLCB1bnByb3RlY3RlZDogTWFwPGFueSwgYW55PiwgcGF5bG9hZDogQnVmZmVyLCBzaWduYXR1cmVzOiBCdWZmZXIpIHtcbiAgICAgICAgdGhpcy5wcm90ZWN0ZWRfID0gcHJvdGVjdGVkX1xuICAgICAgICB0aGlzLnVucHJvdGVjdGVkID0gdW5wcm90ZWN0ZWRcbiAgICAgICAgdGhpcy5wYXlsb2FkID0gcGF5bG9hZFxuICAgICAgICB0aGlzLnNpZ25hdHVyZXMgPSBzaWduYXR1cmVzXG4gICAgfVxuXG5cbiAgICBtYWtlRGF0YUZvclZlcmlmaWNhdGlvbigpIHtcbiAgICAgICAgLy8gdGhpcyBhcHByb2FjaCBzaG91bGQgd29yayBidXQgZG9lc24ndFxuICAgICAgICAvKlxuICAgICAgICBjb25zdCByYXcgPSBjYm9yLmVuY29kZShcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBcIlNpZ25hdHVyZTFcIiwgXG4gICAgICAgICAgICAgICAgY29zZTEucHJvdGVjdGVkXywgXG4gICAgICAgICAgICAgICAgLy9VaW50OEFycmF5LmZyb20oW10pLCBcbiAgICAgICAgICAgICAgICA2NCxcbiAgICAgICAgICAgICAgICA2NCxcbiAgICAgICAgICAgICAgICBjb3NlMS5wYXlsb2FkLFxuICAgICAgICAgICAgXVxuICAgICAgICApIGFzIFVpbnQ4QXJyYXlcbiAgICAgICAgKi9cblxuICAgICAgICAvLyBzaW5jZSB0aGUgYWJvdmUgZG9lc24ndCB3b3JrLCB3ZSBkbyB0aGUgY2JvciBzZW1pLW1hbnVhbGx5XG4gICAgICAgIC8vIHdlIG1ha2UgMiBjaHVua3MsIGluc2VydCBhIDY0IChlbXB0eSB0YWcpIGFuZCB0aGVuIGFzc2lnbiAweDg0XG4gICAgICAgIC8vIHRvIG1hcmsgdGhlIHN0cnVjdHVyZSBhcyBhIDQgZW50cnkgY2JvclxuICAgICAgICBjb25zdCByYXcxID0gY2Jvci5lbmNvZGUoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgXCJTaWduYXR1cmUxXCIsIFxuICAgICAgICAgICAgICAgIHRoaXMucHJvdGVjdGVkXywgXG4gICAgICAgICAgICBdXG4gICAgICAgICkgYXMgVWludDhBcnJheVxuICAgICAgICBjb25zdCByYXcyID0gY2Jvci5lbmNvZGUoXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgdGhpcy5wYXlsb2FkLFxuICAgICAgICAgICAgXVxuICAgICAgICApIGFzIFVpbnQ4QXJyYXlcbiAgICAgICAgY29uc3QgcmF3ID0gbmV3IFVpbnQ4QXJyYXkocmF3MS5sZW5ndGggKyByYXcyLmxlbmd0aClcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSByYXcxLmxlbmd0aDsgaSA8IG47IGkrKykgcmF3W2ldID0gcmF3MVtpXVxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbiA9IHJhdzIubGVuZ3RoOyBpIDwgbjsgaSsrKSByYXdbcmF3MS5sZW5ndGggKyBpXSA9IHJhdzJbaV1cbiAgICAgICAgcmF3W3JhdzEubGVuZ3RoXSA9IDY0IC8vIGVtcHR5IHNsb3RcbiAgICAgICAgcmF3WzBdID0gMHg4NCAvLyBhcnJheSBvZiBsZW5ndGggNFxuICAgICAgICByZXR1cm4gcmF3XG4gICAgfVxuXG4gICAgLy8gc21hbGwgYXNuMSB1dGlsaXR5XG4gICAgZW5jb2RlZFVuc2lnbmVkSW50ZWdlcihpOiBVaW50OEFycmF5KSAge1xuICAgICAgICBsZXQgcGFkID0gMFxuICAgICAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICAgICAgd2hpbGUgKG9mZnNldCA8IGkubGVuZ3RoICYmIGlbb2Zmc2V0XSA9PSAwKSB7XG4gICAgICAgICAgICBvZmZzZXQrK1xuICAgICAgICB9XG4gICAgICAgIGlmIChvZmZzZXQgPT0gaS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShbIDB4MDIsIDB4MDEsIDB4MDAgXSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGlbb2Zmc2V0XSAmIDB4ODApICE9IDApIHtcbiAgICAgICAgICAgIHBhZCsrXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVuZ3RoID0gaS5sZW5ndGggLSBvZmZzZXRcbiAgICAgICAgY29uc3QgZGVyID0gbmV3IFVpbnQ4QXJyYXkoMiArIGxlbmd0aCArIHBhZClcbiAgICAgICAgZGVyWzBdID0gMHgwMlxuICAgICAgICBkZXJbMV0gPSBsZW5ndGggKyBwYWRcbiAgICAgICAgZm9yIChsZXQgcHRyID0gMDsgcHRyIDwgbGVuZ3RoOyArK3B0cikge1xuICAgICAgICAgICAgZGVyWzIgKyBwYWQgKyBwdHJdID0gaVtvZmZzZXQgKyBwdHJdXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlclxuICAgIH1cblxuICAgIC8vIHNtYWxsIGFzbjEgdXRpbGl0eSAoQWdhaW4pXG4gICAgY29tcHV0ZUxlbmd0aCh4OiBudW1iZXIpICB7XG4gICAgICAgIGlmICh4IDw9IDEyNykge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KFsgeCBdKVxuICAgICAgICB9IGVsc2UgaWYgKHggPCAyNTYpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShbMHg4MSwgeF0pXG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgXCJ0b28gbG9uZ1wiXG4gICAgfVxuXG4gICAgLy8gYXJyYXljb3B5XG4gICAgc3RhdGljIHNldChzcmM6IFVpbnQ4QXJyYXksIHNyY3BvczogbnVtYmVyLCBkZXN0OiBVaW50OEFycmF5LCBkZXN0cG9zOiBudW1iZXIsIG46IG51bWJlcikge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgZGVzdFtkZXN0cG9zICsgaV0gPSBzcmNbc3JjcG9zICsgaV1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIGVuY29kZSB0aGUgY29zZTEgc2lnbmF0dXJlIGludG8gYXNuMSByL3MgdHlwZSBvZiBmb3JtYXQgKGluIGFzbjEpXG4gICAgZW5jb2RlU2lnbmF0dXJlKHJhdzogVWludDhBcnJheSkge1xuICAgICAgICBjb25zdCByID0gbmV3IFVpbnQ4QXJyYXkocmF3Lmxlbmd0aCAvIDIpXG4gICAgICAgIGNvbnN0IHMgPSBuZXcgVWludDhBcnJheShyYXcubGVuZ3RoIC8gMilcbiAgICAgICAgQ29zZTEuc2V0KHJhdywgMCwgciwgMCwgci5sZW5ndGgpXG4gICAgICAgIENvc2UxLnNldChyYXcsIHMubGVuZ3RoLCBzLCAwLCBzLmxlbmd0aClcbiAgICAgICAgY29uc3QgcmUgPSB0aGlzLmVuY29kZWRVbnNpZ25lZEludGVnZXIocilcbiAgICAgICAgY29uc3Qgc2UgPSB0aGlzLmVuY29kZWRVbnNpZ25lZEludGVnZXIocylcbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5jb21wdXRlTGVuZ3RoKHJlLmxlbmd0aCArIHNlLmxlbmd0aClcbiAgICAgICAgY29uc3Qgc2lnID0gbmV3IFVpbnQ4QXJyYXkoMSArIGxlbi5sZW5ndGggKyByZS5sZW5ndGggKyBzZS5sZW5ndGgpXG4gICAgICAgIHNpZ1swXSA9IDB4MzBcbiAgICAgICAgQ29zZTEuc2V0KGxlbiwgMCwgc2lnLCAxLCBsZW4ubGVuZ3RoKVxuICAgICAgICBDb3NlMS5zZXQocmUsIDAsIHNpZywgMSArIGxlbi5sZW5ndGgsIHJlLmxlbmd0aClcbiAgICAgICAgQ29zZTEuc2V0KHNlLCAwLCBzaWcsIDEgKyBsZW4ubGVuZ3RoICsgcmUubGVuZ3RoLCBzZS5sZW5ndGgpXG4gICAgICAgIHJldHVybiBzaWdcbiAgICB9XG4gICAgXG4gICAgXG5cbn1cblxuY29uc29sZS5sb2coXCJjb3NlMS50c1wiKVxuIiwiLypcbiAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZSBjb250cmlidXRvclxuICogbGljZW5zZSBhZ3JlZW1lbnRzOyBhbmQgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFwiXG4gKi9cbi8qIFdyaXR0ZW4gYnkgU2NvcGV2aXNpbyBBRyAyMDIxICovXG5cbi8qIFxuICogcGFyc2UgdGhlIGNvbnRlbnRzIG9mIGEgY2Jvci9jd3QvemxpYi9iYXNlNDUgZGdjXG4gKlxuICogU3BlY3MgY2FuIGJlIGZvdW5kIGF0OlxuICogaHR0cHM6Ly9naXRodWIuY29tL2Vobi1kY2MtZGV2ZWxvcG1lbnQvaGNlcnQtc3BlYy9ibG9iL21haW4vaGNlcnRfc3BlYy5tZFxuICovXG5cbmltcG9ydCAqIGFzIGNib3IgZnJvbSAnY2Jvci13ZWInXG5pbXBvcnQgYmFzZTQ1IGZyb20gJ2Jhc2U0NSdcbmltcG9ydCB6bGliIGZyb20gJ3psaWInXG5pbXBvcnQgeyBDZXJ0SW5mbywgVHJ1c3RsaXN0IH0gZnJvbSAnLi90cnVzdGxpc3QnXG5pbXBvcnQgeyBDb3NlMSB9IGZyb20gJy4vY29zZTEnXG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInXG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0by1icm93c2VyaWZ5J1xuXG5cbmNvbnN0IENsYWltS2V5SGNlcnQgPSAtMjYwXG5jb25zdCBDbGFpbUtleUV1RGdjVjEgPSAxXG5cbi8qXG4gKiBldWRnYyByZWNvcmRcbiAqXG4gKiBjb250YWlucyBhbiBhcnJheSBvZiB2YWNjaW5hdGlvbnNcbiAqIGFuZCB1c2VyIGluZm9ybWF0aW9uXG4gKiBcbiAqIGhvd2V2ZXIgaWYgdGhpcyBpcyB0byBiZSB0cmFuc3BvcnRlZCBpbnNpZGUgYSBxcmNvZGUsIG1vc3RcbiAqIGxpa2VseSB0aGVyZSB3aWxsIGJlIG9ubHkgb25lIHZhY2NpbmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXVEZ2NDZXJ0IHtcbiAgICBcInZcIjogRXVEZ2NWYWNjaW5jYXRpb25bXTsgICAgLy8gYW4gYXJyYXkgb2YgdmFjY2luYXRpb25zLCBwcm9iYWJseSBqdXN0IDEgcmlnaHQgbm93XG4gICAgXCJkb2JcIjogc3RyaW5nOyAgICAgICAgICAgICAgIC8vIGRhdGUgb2YgYmlydGggXCIxOTcwLTAxLTMxXCIsXG4gICAgXCJuYW1cIjoge1xuICAgICAgICBcImZuXCI6IHN0cmluZzsgICAgICAgICAgICAvLyBmYW1pbGl5IG5hbWVcbiAgICAgICAgXCJnblwiOiBzdHJpbmc7ICAgICAgICAgICAgLy8gZmlyc3RuYW1lXG4gICAgICAgIFwiZm50XCI6IHN0cmluZzsgICAgICAgICAgIC8vIGZuIGluIGNhcHMgYW5kIHdpdGhvdXQgVW1sYXV0cyBcbiAgICAgICAgXCJnbnRcIjogc3RyaW5nOyAgICAgICAgICAgLy8gZ24gaW4gY2FwcyBhbmQgd2l0aG91dCBVbWxhdXRzXG4gICAgfTtcbiAgICBcInZlclwiOiBzdHJpbmc7ICAvLyBcIjEuMC4wXCIgP1xufVxuXG4vKlxuICogZXVkZ2MgdmFjY2luYXRpb24gcmVjb3JkXG4gKlxuICogZnVsbCBpbW11bml6YXRpb24gaXMgZ2l2ZW4gd2hlbiB7IGRuID09IHNkIH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdURnY1ZhY2NpbmNhdGlvbiB7XG4gICAgXCJjaVwiOiBzdHJpbmc7ICAvLyBcIlVSTjpVVkNJOjAxREUvLi4uLi5cIiAgVW5pcXVlIENlcnRpZmljYXRlIElkZW50aWZpZXI6IFVWQ0lcbiAgICBcImNvXCI6IHN0cmluZzsgIC8vIFwiREVcIiwgdmFjY2luYXRpb24gbnVtYmVyXG4gICAgXCJkblwiOiBudW1iZXI7ICAvLyAxLCAyIC4uLiBudW1iZXIgb2YgZG9zZVxuICAgIFwiZHRcIjogc3RyaW5nOyAgLy8gXCIyMDIxLTAyLTI4XCIsIGRhdGUgb2YgdmFjY2luYXRpb25cbiAgICBcImlzXCI6IHN0cmluZzsgIC8vIGVnIFwiUm9iZXJ0IEtvY2gtSW5zdGl0dXRcIiwgaXNzdWVyXG4gICAgXCJtYVwiOiBzdHJpbmc7ICAvLyBNYXJrZXRpbmcgQXV0aG9yaXphdGlvbiBIb2xkZXIgLSBpZiBubyBNQUggcHJlc2VudCwgdGhlbiBtYW51ZmFjdHVyZXJcbiAgICBcIm1wXCI6IHN0cmluZzsgIC8vIFZhY2NpbmUgbWVkaWNpbmFsIHByb2R1Y3RcbiAgICBcInNkXCI6IG51bWJlcjsgIC8vIFRvdGFsIFNlcmllcyBvZiBEb3Nlc1xuICAgIFwidGdcIjogc3RyaW5nOyAgLy8gRGlzZWFzZSBvciBhZ2VudCB0YXJnZXRlZFxuICAgIFwidnBcIjogc3RyaW5nOyAgLy8gVmFjY2luZSBvciBwcm9waHlsYXhpc1xufVxuXG5cbi8qXG4gKiBPYmplY3QgdGhhdCBjb250YWlucyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgdG8gdGhlIHZhbGlkYXRlIG1ldGhvZC5cbiAqXG4gKiBZb3UgY2FuIHBhc3MgaW4gYSBmaWx0ZXIgb24gd2hhdCBjZXJ0aWZpY2F0ZXMgdG8gdXNlXG4gKiBvciBhbiBleHBsaWNpdCBsaXN0IG9mIGNlcnRpZmljYXRlcy4gU2VlIGJlbG93IGZvciBhdmFpbGFibGUgb3B0aW9ucy5cbiAqXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbk9wdGlvbnMge1xuXG4gICAgLyogY2VydEZpbHRlcjogaXMgYW4gb3B0aW9uYWwgZmlsdGVyIHByZWRpY2F0ZSBmdW5jdGlvbi4gSXQgaXMgcGFzc2VkIGVhY2ggXG4gICAgICogY2VydEluZm8gYW5kIHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIGNlcnRpZmljYXRlcyB0aGF0IHNob3VsZCBiZSBza2lwcGVkXG4gICAgICogZHVyaW5nIHZhbGlkYXRpb24uIElmIHRoZSBjZXJ0RmlsdGVyIGlzIHVuZGVmaW5lZCBvciBudWxsLCB0aGVuIGFsbCBcbiAgICAgKiBjZXJ0cyB3aWxsIGJlIHVzZWQgZm9yIHZhbGlkYXRpb24uXG4gICAgICovXG4gICAgY2VydEZpbHRlcj86IChjZXJ0SW5mbzogQ2VydEluZm8pID0+IGJvb2xlYW47XG5cbiAgICAvKiBleHBsaWNpdENlcnRzOiBhbiBvcHRpb25hbCBhcnJheSBvZiBjZXJ0aWZpY2F0ZXMgdG8gdXNlIGZvciBcbiAgICAgKiB2YWxpZGF0aW9uLiB0aGlzIGFsbG93cyB0byBwYXNzIGluIG1vcmUgcmVjZW50IGNlcnRpZmljYXRlcyBvciBvdGhlclxuICAgICAqIGNlcnRpZmljYXRlcy4gXG4gICAgICogXG4gICAgICogUGxlYXNlIG5vdGUgdGhhdCBvbmUgY2FuIG9idGFpbiB3cm9uZyBhbmQgaW52YWxpZCghKVxuICAgICAqIHJlc3VsdHMgYnkgZG9pbmcgc28uIFRoZSByZXNwb25zaWJpbGl0eSB0byBvbmx5IGluZGljYXRlIHJlYWxseVxuICAgICAqIHZhbGlkIGNlcnRpZmljYXRlcyBhcyB2YWxpZCBpbiB5b3VyIHByb2R1Y3QgaXMgdXAgdG8geW91LiBcbiAgICAgKiBUaGlzIGlzIGFsc28gcG90ZW50aWFsbHkgdXNlZnVsbCBmb3IgZGVidWdnaW5nLlxuICAgICAqL1xuICAgIGV4cGxpY2l0Q2VydHM/OiBDZXJ0SW5mb1tdO1xufVxuXG5cbmV4cG9ydCBjbGFzcyBFdURnYyB7XG4gICAgICAgXG4gICAgLyoqXG4gICAgICogUGFyc2VzIHRoZSBkYXRhIG9mIGEgZGlnaXRhbCB2YWNjaW5hdGlvbiBxcmNvZGUgYW5kIHJldHVybnMgYSBwcm9taXNlIFxuICAgICAqIFxuICAgICAqIEBwYXJhbSBlbmNvZGVkRGF0YSB0aGUgZGF0YSBpbnNpZGUgdGhlIHFyLWNvZGUuXG4gICAgICogQHJldHVybnMgYSBqYXZhc2NyaXAgc3RydWN0dXJlIHdpdGggdGhlIGNvbnRlbnRzIFxuICAgICAqL1xuICAgIHN0YXRpYyBhc3luYyBwYXJzZShlbmNvZGVkRGF0YTogc3RyaW5nKTogUHJvbWlzZTxFdURnY0NlcnQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIGlmIChlbmNvZGVkRGF0YS5pbmRleE9mKFwiSEMxOlwiKSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgZW5jb2RlZERhdGEgPSBlbmNvZGVkRGF0YS5zdWJzdHJpbmcoNCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBkZWNvZGVkRGF0YSA9IGJhc2U0NS5kZWNvZGUoZW5jb2RlZERhdGEpO1xuICAgICAgICAgICAgemxpYi5pbmZsYXRlKGRlY29kZWREYXRhLCBmdW5jdGlvbiAoZXJyb3I6IGFueSwgYnVmOiBhbnkpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKGJ1Zi50b1N0cmluZyhcImhleFwiKSk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2JvcldlYiA9IGNib3JcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjYm9yV2ViLmRlY29kZUZpcnN0KGJ1ZiwgZnVuY3Rpb24gKGVycm9yOiBhbnksIG9iajogYW55KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gb2JqXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjd3QgPSB0LnRvSlNPTigpLnZhbHVlWzJdXG4gICAgICAgICAgICAgICAgICAgICAgICBjYm9yLmRlY29kZUZpcnN0KGN3dCwgZnVuY3Rpb24gKGVycm9yOiBhbnksIG9iajogYW55KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHQyID0gb2JqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaGNlcnRSYXcgPSB0Mi5nZXQoQ2xhaW1LZXlIY2VydClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBldWRnYyA9IGhjZXJ0UmF3LmdldChDbGFpbUtleUV1RGdjVjEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZXVkZ2MsIG51bGwsIDQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoZXVkZ2MpXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pOyAgXG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgLypcbiAgICAgKiAuLi4gcGVyZm9ybSB0aGUgdmFsaWRhdGlvblxuICAgICAqXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgdGhlIGNlcnQgaXMgaW52YWxpZC5cbiAgICAgKiB0aGlzIGNhbiBiZSB0aGUgY2FzZSBpZiBcbiAgICAgKiBcbiAgICAgKiAxLiB0aGUgY2VydCBmYWxzZWx5IGNsYWltcyB0byBiZSBzaWduZWQgYnkgb25lIG9mIHRoZSBzaWduYXR1cmVzIGluIHRoZSBcbiAgICAgKiAgICB0cnVzdGxpc3QgXG4gICAgICogMi4gb3IgaWYgdGhlIGNlcnQgaXMgbm90IHNpZ25lZCBjb3JyZWN0bHkgYXQgYWxsXG4gICAgICogMy4gb3IgaWYgdGhlIGNlcnQgaXMgc2lnbmVkIGNvcnJlY3RseSBieSBzb21lIHVua25vd24gc2lnbmF0dXJlIFxuICAgICAqIFxuICAgICAqIGFsbCB0aHJlZSBjYXNlcyByZXN1bHQgaW4gYW4gaW52YWxpZCBjZXJ0aWZpY2F0ZVxuICAgICAqIFxuICAgICAqIHRoZSBzZWNvbmQgb3B0aW9uYWwgYXJndW1lbnQgY29udHJvbGxzIHNldmVyYWwgYXNwZWN0cyBvZiBob3cgdGhlIFxuICAgICAqIHZhbGlkYXRpb24gbWV0aG9kIHNob3VsZCB3b3JrLlxuICAgICAqICBcbiAgICAgKiBDZXJ0aWZpY2F0ZXMgdGhhdCBjYW5ub3QgYmUgaGFuZGxlZCBieSB0aGUgY2xpZW50LXNpZGUgYnJvd3NlciBjcnlwdG8gYXJlIGFsc28gc2tpcHBlZFxuICAgICAqIGFuZCBhIHdhcm5pbmcgbWVzc2FnZSBpcyBwcmludGVkIG9uIHRoZSBjb25zb2xlLiBcbiAgICAgKiBcbiAgICAgKi9cbiAgICBzdGF0aWMgYXN5bmMgdmFsaWRhdGUoZW5jb2RlZERhdGE6IHN0cmluZywgb3B0aW9ucz86IFZhbGlkYXRpb25PcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGNvc2UxID0gYXdhaXQgQ29zZTEudmFsdWVPZihlbmNvZGVkRGF0YSlcbiAgICAgICAgaWYgKCFjb3NlMSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByYXcgPSBjb3NlMS5tYWtlRGF0YUZvclZlcmlmaWNhdGlvbigpXG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IEJ1ZmZlci5mcm9tKGNvc2UxLmVuY29kZVNpZ25hdHVyZShjb3NlMS5zaWduYXR1cmVzKSkudG9TdHJpbmcoXCJoZXhcIilcbiAgICAgICAgdmFyIGNlcnRJbmZvcyA9IGF3YWl0IFRydXN0bGlzdC5pbnN0YW5jZS5nZXRDZXJ0SW5mb3MoKVxuICAgICAgICBpZiAob3B0aW9ucz8uZXhwbGljaXRDZXJ0cykge1xuICAgICAgICAgICAgY2VydEluZm9zID0gWy4uLm9wdGlvbnM/LmV4cGxpY2l0Q2VydHNdXG4gICAgICAgIH1cbiAgICAgICAgLy8gZmlsdGVyIGNlcnRzXG4gICAgICAgIGlmIChvcHRpb25zPy5jZXJ0RmlsdGVyKSB7XG4gICAgICAgICAgICBjb25zdCBvbGRDb3VudCA9IGNlcnRJbmZvcy5sZW5ndGhcbiAgICAgICAgICAgIGNlcnRJbmZvcyA9IGNlcnRJbmZvcy5maWx0ZXIob3B0aW9ucz8uY2VydEZpbHRlcilcbiAgICAgICAgICAgIGlmIChjZXJ0SW5mb3MubGVuZ3RoICE9IG9sZENvdW50KSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKFwiI1wiICsgKG9sZENvdW50IC0gY2VydEluZm9zLmxlbmd0aCkgKyBcIiBvZiBcIiArIG9sZENvdW50ICsgXCIgY2VydGlmY2F0ZXMgcmVtb3ZlZCBieSBmaWx0ZXJcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbiA9IGNlcnRJbmZvcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNlcnRJbmZvID0gY2VydEluZm9zW2ldXG4gICAgICAgICAgICAvLyBpZiB3ZSBydW4gaW50byBhbiBleGNlcHRpb24gb24gb25lIGNlcnRpbmZvLCBjb250aW51ZSB3aXRoIHRoZSBvdGhlcnNcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmVyaWZ5ID0gY3J5cHRvLmNyZWF0ZVZlcmlmeShcInNoYTI1NlwiKVxuICAgICAgICAgICAgICAgIHZlcmlmeS51cGRhdGUocmF3KVxuICAgICAgICAgICAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHZlcmlmeS52ZXJpZnkoY2VydEluZm8ucHVia2V5LCBzaWduYXR1cmUsIFwiaGV4XCIpXG4gICAgICAgICAgICAgICAgaWYgKHZlcmlmaWNhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBmb3IgZGF0ZSAodmFsaWRpdHkgZGF0ZXMgb2YgeDUwOSBjZXJ0aWZpY2F0ZSlcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZVZhbGlkID0gbm93ID49IGNlcnRJbmZvLm5vdGJlZm9yZSAmJiBub3cgPD0gY2VydEluZm8ubm90YWZ0ZXJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWVWYWxpZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNlcnRJbmZvXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwidW5hYmxlIHRvIGhhbmRsZSBjZXJ0IFwiICsgKGkgKyAxKSArIFwiIG9mIFwiICsgbiArIFwiOiBcIiArIGNlcnRJbmZvLnN1YmplY3QgKyBcIjogXCIgKyBlKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IFwiTm90IG1hdGNoaW5nIGNlcnRpZmljYXRlIGZvdW5kXCJcbiAgICB9XG59XG5cblxuZXhwb3J0IGNvbnN0IEV1RGdjX3BhcnNlID0gRXVEZ2MucGFyc2U7XG5leHBvcnQgY29uc3QgRXVEZ2NfdmFsaWRhdGUgPSBFdURnYy52YWxpZGF0ZTtcblxuLy8gZGVmaW5lIGEgXCJnbG9iYWxcIiBtZXRob2QgaW4gdGhlIGJyb3dzZXJzIHdpbmRvdyBvYmplY3QgaWZmIHJ1bm5pbmdcbi8vIGluIGEgYnJvd3NlciBlbnZpcm9ubWVudFxuaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAod2luZG93IGFzIGFueSkuRXVEZ2NfcGFyc2UgPSBFdURnYy5wYXJzZTtcbiAgICAod2luZG93IGFzIGFueSkuRXVEZ2NfdmFsaWRhdGUgPSBFdURnYy52YWxpZGF0ZTtcbn1cblxuY29uc29sZS5sb2coXCJldWRnYy50c1wiKVxuIiwiLypcbiAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZSBjb250cmlidXRvclxuICogbGljZW5zZSBhZ3JlZW1lbnRzOyBhbmQgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFwiXG4gKi9cbi8qXG4gKiBXcml0dGVuIGJ5IFNjb3BldmlzaW8gQUcgMjAyMVxuICovXG5pbXBvcnQgXCIuL2V1ZGdjXCJcbmltcG9ydCBcIi4vY29zZTFcIlxuXG5jb25zb2xlLmxvZyhcIkVVREdDIGJ5IFNjb3BldmlzaW8gQUdcIikiLCJcbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBkZXByZWNhdGU7XG5cbi8qKlxuICogTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbiAqIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS5ub0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50aHJvd0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIHRocm93IGFuIEVycm9yIHdoZW4gaW52b2tlZC5cbiAqXG4gKiBJZiBgbG9jYWxTdG9yYWdlLnRyYWNlRGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gZGVwcmVjYXRlZCBmdW5jdGlvbnNcbiAqIHdpbGwgaW52b2tlIGBjb25zb2xlLnRyYWNlKClgIGluc3RlYWQgb2YgYGNvbnNvbGUuZXJyb3IoKWAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSB0aGUgZnVuY3Rpb24gdG8gZGVwcmVjYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gbXNnIC0gdGhlIHN0cmluZyB0byBwcmludCB0byB0aGUgY29uc29sZSB3aGVuIGBmbmAgaXMgaW52b2tlZFxuICogQHJldHVybnMge0Z1bmN0aW9ufSBhIG5ldyBcImRlcHJlY2F0ZWRcIiB2ZXJzaW9uIG9mIGBmbmBcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVwcmVjYXRlIChmbiwgbXNnKSB7XG4gIGlmIChjb25maWcoJ25vRGVwcmVjYXRpb24nKSkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgaWYgKGNvbmZpZygndGhyb3dEZXByZWNhdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChjb25maWcoJ3RyYWNlRGVwcmVjYXRpb24nKSkge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgIH1cbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGBsb2NhbFN0b3JhZ2VgIGZvciBib29sZWFuIHZhbHVlcyBmb3IgdGhlIGdpdmVuIGBuYW1lYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb25maWcgKG5hbWUpIHtcbiAgLy8gYWNjZXNzaW5nIGdsb2JhbC5sb2NhbFN0b3JhZ2UgY2FuIHRyaWdnZXIgYSBET01FeGNlcHRpb24gaW4gc2FuZGJveGVkIGlmcmFtZXNcbiAgdHJ5IHtcbiAgICBpZiAoIWdsb2JhbC5sb2NhbFN0b3JhZ2UpIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdmFsID0gZ2xvYmFsLmxvY2FsU3RvcmFnZVtuYW1lXTtcbiAgaWYgKG51bGwgPT0gdmFsKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBTdHJpbmcodmFsKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQnVmZmVyKGFyZykge1xuICByZXR1cm4gYXJnICYmIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnXG4gICAgJiYgdHlwZW9mIGFyZy5jb3B5ID09PSAnZnVuY3Rpb24nXG4gICAgJiYgdHlwZW9mIGFyZy5maWxsID09PSAnZnVuY3Rpb24nXG4gICAgJiYgdHlwZW9mIGFyZy5yZWFkVUludDggPT09ICdmdW5jdGlvbic7XG59IiwiLy8gQ3VycmVudGx5IGluIHN5bmMgd2l0aCBOb2RlLmpzIGxpYi9pbnRlcm5hbC91dGlsL3R5cGVzLmpzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvY29tbWl0LzExMmNjN2MyNzU1MTI1NGFhMmIxNzA5OGZiNzc0ODY3ZjA1ZWQwZDlcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBcmd1bWVudHNPYmplY3QgPSByZXF1aXJlKCdpcy1hcmd1bWVudHMnKTtcbnZhciBpc0dlbmVyYXRvckZ1bmN0aW9uID0gcmVxdWlyZSgnaXMtZ2VuZXJhdG9yLWZ1bmN0aW9uJyk7XG52YXIgd2hpY2hUeXBlZEFycmF5ID0gcmVxdWlyZSgnd2hpY2gtdHlwZWQtYXJyYXknKTtcbnZhciBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCdpcy10eXBlZC1hcnJheScpO1xuXG5mdW5jdGlvbiB1bmN1cnJ5VGhpcyhmKSB7XG4gIHJldHVybiBmLmNhbGwuYmluZChmKTtcbn1cblxudmFyIEJpZ0ludFN1cHBvcnRlZCA9IHR5cGVvZiBCaWdJbnQgIT09ICd1bmRlZmluZWQnO1xudmFyIFN5bWJvbFN1cHBvcnRlZCA9IHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnO1xuXG52YXIgT2JqZWN0VG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyhPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKTtcblxudmFyIG51bWJlclZhbHVlID0gdW5jdXJyeVRoaXMoTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mKTtcbnZhciBzdHJpbmdWYWx1ZSA9IHVuY3VycnlUaGlzKFN0cmluZy5wcm90b3R5cGUudmFsdWVPZik7XG52YXIgYm9vbGVhblZhbHVlID0gdW5jdXJyeVRoaXMoQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZik7XG5cbmlmIChCaWdJbnRTdXBwb3J0ZWQpIHtcbiAgdmFyIGJpZ0ludFZhbHVlID0gdW5jdXJyeVRoaXMoQmlnSW50LnByb3RvdHlwZS52YWx1ZU9mKTtcbn1cblxuaWYgKFN5bWJvbFN1cHBvcnRlZCkge1xuICB2YXIgc3ltYm9sVmFsdWUgPSB1bmN1cnJ5VGhpcyhTeW1ib2wucHJvdG90eXBlLnZhbHVlT2YpO1xufVxuXG5mdW5jdGlvbiBjaGVja0JveGVkUHJpbWl0aXZlKHZhbHVlLCBwcm90b3R5cGVWYWx1ZU9mKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgcHJvdG90eXBlVmFsdWVPZih2YWx1ZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2goZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnRzLmlzQXJndW1lbnRzT2JqZWN0ID0gaXNBcmd1bWVudHNPYmplY3Q7XG5leHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBpc0dlbmVyYXRvckZ1bmN0aW9uO1xuZXhwb3J0cy5pc1R5cGVkQXJyYXkgPSBpc1R5cGVkQXJyYXk7XG5cbi8vIFRha2VuIGZyb20gaGVyZSBhbmQgbW9kaWZpZWQgZm9yIGJldHRlciBicm93c2VyIHN1cHBvcnRcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvcC1pcy1wcm9taXNlL2Jsb2IvY2RhMzVhNTEzYmRhMDNmOTc3YWQ1Y2RlM2EwNzlkMjM3ZTgyZDdlZi9pbmRleC5qc1xuZnVuY3Rpb24gaXNQcm9taXNlKGlucHV0KSB7XG5cdHJldHVybiAoXG5cdFx0KFxuXHRcdFx0dHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnICYmXG5cdFx0XHRpbnB1dCBpbnN0YW5jZW9mIFByb21pc2Vcblx0XHQpIHx8XG5cdFx0KFxuXHRcdFx0aW5wdXQgIT09IG51bGwgJiZcblx0XHRcdHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcgJiZcblx0XHRcdHR5cGVvZiBpbnB1dC50aGVuID09PSAnZnVuY3Rpb24nICYmXG5cdFx0XHR0eXBlb2YgaW5wdXQuY2F0Y2ggPT09ICdmdW5jdGlvbidcblx0XHQpXG5cdCk7XG59XG5leHBvcnRzLmlzUHJvbWlzZSA9IGlzUHJvbWlzZTtcblxuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlclZpZXcodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgQXJyYXlCdWZmZXIuaXNWaWV3KSB7XG4gICAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIGlzVHlwZWRBcnJheSh2YWx1ZSkgfHxcbiAgICBpc0RhdGFWaWV3KHZhbHVlKVxuICApO1xufVxuZXhwb3J0cy5pc0FycmF5QnVmZmVyVmlldyA9IGlzQXJyYXlCdWZmZXJWaWV3O1xuXG5cbmZ1bmN0aW9uIGlzVWludDhBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ1VpbnQ4QXJyYXknO1xufVxuZXhwb3J0cy5pc1VpbnQ4QXJyYXkgPSBpc1VpbnQ4QXJyYXk7XG5cbmZ1bmN0aW9uIGlzVWludDhDbGFtcGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkgPT09ICdVaW50OENsYW1wZWRBcnJheSc7XG59XG5leHBvcnRzLmlzVWludDhDbGFtcGVkQXJyYXkgPSBpc1VpbnQ4Q2xhbXBlZEFycmF5O1xuXG5mdW5jdGlvbiBpc1VpbnQxNkFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnVWludDE2QXJyYXknO1xufVxuZXhwb3J0cy5pc1VpbnQxNkFycmF5ID0gaXNVaW50MTZBcnJheTtcblxuZnVuY3Rpb24gaXNVaW50MzJBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ1VpbnQzMkFycmF5Jztcbn1cbmV4cG9ydHMuaXNVaW50MzJBcnJheSA9IGlzVWludDMyQXJyYXk7XG5cbmZ1bmN0aW9uIGlzSW50OEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnSW50OEFycmF5Jztcbn1cbmV4cG9ydHMuaXNJbnQ4QXJyYXkgPSBpc0ludDhBcnJheTtcblxuZnVuY3Rpb24gaXNJbnQxNkFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnSW50MTZBcnJheSc7XG59XG5leHBvcnRzLmlzSW50MTZBcnJheSA9IGlzSW50MTZBcnJheTtcblxuZnVuY3Rpb24gaXNJbnQzMkFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnSW50MzJBcnJheSc7XG59XG5leHBvcnRzLmlzSW50MzJBcnJheSA9IGlzSW50MzJBcnJheTtcblxuZnVuY3Rpb24gaXNGbG9hdDMyQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkgPT09ICdGbG9hdDMyQXJyYXknO1xufVxuZXhwb3J0cy5pc0Zsb2F0MzJBcnJheSA9IGlzRmxvYXQzMkFycmF5O1xuXG5mdW5jdGlvbiBpc0Zsb2F0NjRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ0Zsb2F0NjRBcnJheSc7XG59XG5leHBvcnRzLmlzRmxvYXQ2NEFycmF5ID0gaXNGbG9hdDY0QXJyYXk7XG5cbmZ1bmN0aW9uIGlzQmlnSW50NjRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ0JpZ0ludDY0QXJyYXknO1xufVxuZXhwb3J0cy5pc0JpZ0ludDY0QXJyYXkgPSBpc0JpZ0ludDY0QXJyYXk7XG5cbmZ1bmN0aW9uIGlzQmlnVWludDY0QXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkgPT09ICdCaWdVaW50NjRBcnJheSc7XG59XG5leHBvcnRzLmlzQmlnVWludDY0QXJyYXkgPSBpc0JpZ1VpbnQ2NEFycmF5O1xuXG5mdW5jdGlvbiBpc01hcFRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IE1hcF0nO1xufVxuaXNNYXBUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgTWFwICE9PSAndW5kZWZpbmVkJyAmJlxuICBpc01hcFRvU3RyaW5nKG5ldyBNYXAoKSlcbik7XG5cbmZ1bmN0aW9uIGlzTWFwKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgTWFwID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBpc01hcFRvU3RyaW5nLndvcmtpbmdcbiAgICA/IGlzTWFwVG9TdHJpbmcodmFsdWUpXG4gICAgOiB2YWx1ZSBpbnN0YW5jZW9mIE1hcDtcbn1cbmV4cG9ydHMuaXNNYXAgPSBpc01hcDtcblxuZnVuY3Rpb24gaXNTZXRUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBTZXRdJztcbn1cbmlzU2V0VG9TdHJpbmcud29ya2luZyA9IChcbiAgdHlwZW9mIFNldCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgaXNTZXRUb1N0cmluZyhuZXcgU2V0KCkpXG4pO1xuZnVuY3Rpb24gaXNTZXQodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBTZXQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzU2V0VG9TdHJpbmcud29ya2luZ1xuICAgID8gaXNTZXRUb1N0cmluZyh2YWx1ZSlcbiAgICA6IHZhbHVlIGluc3RhbmNlb2YgU2V0O1xufVxuZXhwb3J0cy5pc1NldCA9IGlzU2V0O1xuXG5mdW5jdGlvbiBpc1dlYWtNYXBUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBXZWFrTWFwXSc7XG59XG5pc1dlYWtNYXBUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgV2Vha01hcCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgaXNXZWFrTWFwVG9TdHJpbmcobmV3IFdlYWtNYXAoKSlcbik7XG5mdW5jdGlvbiBpc1dlYWtNYXAodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBXZWFrTWFwID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBpc1dlYWtNYXBUb1N0cmluZy53b3JraW5nXG4gICAgPyBpc1dlYWtNYXBUb1N0cmluZyh2YWx1ZSlcbiAgICA6IHZhbHVlIGluc3RhbmNlb2YgV2Vha01hcDtcbn1cbmV4cG9ydHMuaXNXZWFrTWFwID0gaXNXZWFrTWFwO1xuXG5mdW5jdGlvbiBpc1dlYWtTZXRUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBXZWFrU2V0XSc7XG59XG5pc1dlYWtTZXRUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgV2Vha1NldCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgaXNXZWFrU2V0VG9TdHJpbmcobmV3IFdlYWtTZXQoKSlcbik7XG5mdW5jdGlvbiBpc1dlYWtTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzV2Vha1NldFRvU3RyaW5nKHZhbHVlKTtcbn1cbmV4cG9ydHMuaXNXZWFrU2V0ID0gaXNXZWFrU2V0O1xuXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyVG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdFRvU3RyaW5nKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcbn1cbmlzQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmXG4gIGlzQXJyYXlCdWZmZXJUb1N0cmluZyhuZXcgQXJyYXlCdWZmZXIoKSlcbik7XG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nXG4gICAgPyBpc0FycmF5QnVmZmVyVG9TdHJpbmcodmFsdWUpXG4gICAgOiB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyO1xufVxuZXhwb3J0cy5pc0FycmF5QnVmZmVyID0gaXNBcnJheUJ1ZmZlcjtcblxuZnVuY3Rpb24gaXNEYXRhVmlld1RvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IERhdGFWaWV3XSc7XG59XG5pc0RhdGFWaWV3VG9TdHJpbmcud29ya2luZyA9IChcbiAgdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJlxuICB0eXBlb2YgRGF0YVZpZXcgIT09ICd1bmRlZmluZWQnICYmXG4gIGlzRGF0YVZpZXdUb1N0cmluZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpLCAwLCAxKSlcbik7XG5mdW5jdGlvbiBpc0RhdGFWaWV3KHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgRGF0YVZpZXcgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzRGF0YVZpZXdUb1N0cmluZy53b3JraW5nXG4gICAgPyBpc0RhdGFWaWV3VG9TdHJpbmcodmFsdWUpXG4gICAgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGFWaWV3O1xufVxuZXhwb3J0cy5pc0RhdGFWaWV3ID0gaXNEYXRhVmlldztcblxuLy8gU3RvcmUgYSBjb3B5IG9mIFNoYXJlZEFycmF5QnVmZmVyIGluIGNhc2UgaXQncyBkZWxldGVkIGVsc2V3aGVyZVxudmFyIFNoYXJlZEFycmF5QnVmZmVyQ29weSA9IHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgPyBTaGFyZWRBcnJheUJ1ZmZlciA6IHVuZGVmaW5lZDtcbmZ1bmN0aW9uIGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBTaGFyZWRBcnJheUJ1ZmZlcl0nO1xufVxuZnVuY3Rpb24gaXNTaGFyZWRBcnJheUJ1ZmZlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyQ29weSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nID09PSAndW5kZWZpbmVkJykge1xuICAgIGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nID0gaXNTaGFyZWRBcnJheUJ1ZmZlclRvU3RyaW5nKG5ldyBTaGFyZWRBcnJheUJ1ZmZlckNvcHkoKSk7XG4gIH1cblxuICByZXR1cm4gaXNTaGFyZWRBcnJheUJ1ZmZlclRvU3RyaW5nLndvcmtpbmdcbiAgICA/IGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZyh2YWx1ZSlcbiAgICA6IHZhbHVlIGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXJDb3B5O1xufVxuZXhwb3J0cy5pc1NoYXJlZEFycmF5QnVmZmVyID0gaXNTaGFyZWRBcnJheUJ1ZmZlcjtcblxuZnVuY3Rpb24gaXNBc3luY0Z1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJztcbn1cbmV4cG9ydHMuaXNBc3luY0Z1bmN0aW9uID0gaXNBc3luY0Z1bmN0aW9uO1xuXG5mdW5jdGlvbiBpc01hcEl0ZXJhdG9yKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IE1hcCBJdGVyYXRvcl0nO1xufVxuZXhwb3J0cy5pc01hcEl0ZXJhdG9yID0gaXNNYXBJdGVyYXRvcjtcblxuZnVuY3Rpb24gaXNTZXRJdGVyYXRvcih2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBTZXQgSXRlcmF0b3JdJztcbn1cbmV4cG9ydHMuaXNTZXRJdGVyYXRvciA9IGlzU2V0SXRlcmF0b3I7XG5cbmZ1bmN0aW9uIGlzR2VuZXJhdG9yT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IEdlbmVyYXRvcl0nO1xufVxuZXhwb3J0cy5pc0dlbmVyYXRvck9iamVjdCA9IGlzR2VuZXJhdG9yT2JqZWN0O1xuXG5mdW5jdGlvbiBpc1dlYkFzc2VtYmx5Q29tcGlsZWRNb2R1bGUodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdFRvU3RyaW5nKHZhbHVlKSA9PT0gJ1tvYmplY3QgV2ViQXNzZW1ibHkuTW9kdWxlXSc7XG59XG5leHBvcnRzLmlzV2ViQXNzZW1ibHlDb21waWxlZE1vZHVsZSA9IGlzV2ViQXNzZW1ibHlDb21waWxlZE1vZHVsZTtcblxuZnVuY3Rpb24gaXNOdW1iZXJPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGNoZWNrQm94ZWRQcmltaXRpdmUodmFsdWUsIG51bWJlclZhbHVlKTtcbn1cbmV4cG9ydHMuaXNOdW1iZXJPYmplY3QgPSBpc051bWJlck9iamVjdDtcblxuZnVuY3Rpb24gaXNTdHJpbmdPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGNoZWNrQm94ZWRQcmltaXRpdmUodmFsdWUsIHN0cmluZ1ZhbHVlKTtcbn1cbmV4cG9ydHMuaXNTdHJpbmdPYmplY3QgPSBpc1N0cmluZ09iamVjdDtcblxuZnVuY3Rpb24gaXNCb29sZWFuT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBjaGVja0JveGVkUHJpbWl0aXZlKHZhbHVlLCBib29sZWFuVmFsdWUpO1xufVxuZXhwb3J0cy5pc0Jvb2xlYW5PYmplY3QgPSBpc0Jvb2xlYW5PYmplY3Q7XG5cbmZ1bmN0aW9uIGlzQmlnSW50T2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBCaWdJbnRTdXBwb3J0ZWQgJiYgY2hlY2tCb3hlZFByaW1pdGl2ZSh2YWx1ZSwgYmlnSW50VmFsdWUpO1xufVxuZXhwb3J0cy5pc0JpZ0ludE9iamVjdCA9IGlzQmlnSW50T2JqZWN0O1xuXG5mdW5jdGlvbiBpc1N5bWJvbE9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gU3ltYm9sU3VwcG9ydGVkICYmIGNoZWNrQm94ZWRQcmltaXRpdmUodmFsdWUsIHN5bWJvbFZhbHVlKTtcbn1cbmV4cG9ydHMuaXNTeW1ib2xPYmplY3QgPSBpc1N5bWJvbE9iamVjdDtcblxuZnVuY3Rpb24gaXNCb3hlZFByaW1pdGl2ZSh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIGlzTnVtYmVyT2JqZWN0KHZhbHVlKSB8fFxuICAgIGlzU3RyaW5nT2JqZWN0KHZhbHVlKSB8fFxuICAgIGlzQm9vbGVhbk9iamVjdCh2YWx1ZSkgfHxcbiAgICBpc0JpZ0ludE9iamVjdCh2YWx1ZSkgfHxcbiAgICBpc1N5bWJvbE9iamVjdCh2YWx1ZSlcbiAgKTtcbn1cbmV4cG9ydHMuaXNCb3hlZFByaW1pdGl2ZSA9IGlzQm94ZWRQcmltaXRpdmU7XG5cbmZ1bmN0aW9uIGlzQW55QXJyYXlCdWZmZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyAmJiAoXG4gICAgaXNBcnJheUJ1ZmZlcih2YWx1ZSkgfHxcbiAgICBpc1NoYXJlZEFycmF5QnVmZmVyKHZhbHVlKVxuICApO1xufVxuZXhwb3J0cy5pc0FueUFycmF5QnVmZmVyID0gaXNBbnlBcnJheUJ1ZmZlcjtcblxuWydpc1Byb3h5JywgJ2lzRXh0ZXJuYWwnLCAnaXNNb2R1bGVOYW1lc3BhY2VPYmplY3QnXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbWV0aG9kLCB7XG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgdmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1ldGhvZCArICcgaXMgbm90IHN1cHBvcnRlZCBpbiB1c2VybGFuZCcpO1xuICAgIH1cbiAgfSk7XG59KTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIHx8XG4gIGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKSB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgIHZhciBkZXNjcmlwdG9ycyA9IHt9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzY3JpcHRvcnNba2V5c1tpXV0gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5c1tpXSk7XG4gICAgfVxuICAgIHJldHVybiBkZXNjcmlwdG9ycztcbiAgfTtcblxudmFyIGZvcm1hdFJlZ0V4cCA9IC8lW3NkaiVdL2c7XG5leHBvcnRzLmZvcm1hdCA9IGZ1bmN0aW9uKGYpIHtcbiAgaWYgKCFpc1N0cmluZyhmKSkge1xuICAgIHZhciBvYmplY3RzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIG9iamVjdHMucHVzaChpbnNwZWN0KGFyZ3VtZW50c1tpXSkpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0cy5qb2luKCcgJyk7XG4gIH1cblxuICB2YXIgaSA9IDE7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBzdHIgPSBTdHJpbmcoZikucmVwbGFjZShmb3JtYXRSZWdFeHAsIGZ1bmN0aW9uKHgpIHtcbiAgICBpZiAoeCA9PT0gJyUlJykgcmV0dXJuICclJztcbiAgICBpZiAoaSA+PSBsZW4pIHJldHVybiB4O1xuICAgIHN3aXRjaCAoeCkge1xuICAgICAgY2FzZSAnJXMnOiByZXR1cm4gU3RyaW5nKGFyZ3NbaSsrXSk7XG4gICAgICBjYXNlICclZCc6IHJldHVybiBOdW1iZXIoYXJnc1tpKytdKTtcbiAgICAgIGNhc2UgJyVqJzpcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJnc1tpKytdKTtcbiAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgfSk7XG4gIGZvciAodmFyIHggPSBhcmdzW2ldOyBpIDwgbGVuOyB4ID0gYXJnc1srK2ldKSB7XG4gICAgaWYgKGlzTnVsbCh4KSB8fCAhaXNPYmplY3QoeCkpIHtcbiAgICAgIHN0ciArPSAnICcgKyB4O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgKz0gJyAnICsgaW5zcGVjdCh4KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn07XG5cblxuLy8gTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbi8vIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4vLyBJZiAtLW5vLWRlcHJlY2F0aW9uIGlzIHNldCwgdGhlbiBpdCBpcyBhIG5vLW9wLlxuZXhwb3J0cy5kZXByZWNhdGUgPSBmdW5jdGlvbihmbiwgbXNnKSB7XG4gIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5ub0RlcHJlY2F0aW9uID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgLy8gQWxsb3cgZm9yIGRlcHJlY2F0aW5nIHRoaW5ncyBpbiB0aGUgcHJvY2VzcyBvZiBzdGFydGluZyB1cC5cbiAgaWYgKHR5cGVvZiBwcm9jZXNzID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBleHBvcnRzLmRlcHJlY2F0ZShmbiwgbXNnKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cblxuICB2YXIgd2FybmVkID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGRlcHJlY2F0ZWQoKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIGlmIChwcm9jZXNzLnRocm93RGVwcmVjYXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICB9IGVsc2UgaWYgKHByb2Nlc3MudHJhY2VEZXByZWNhdGlvbikge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7XG4gICAgICB9XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIHJldHVybiBkZXByZWNhdGVkO1xufTtcblxuXG52YXIgZGVidWdzID0ge307XG52YXIgZGVidWdFbnZSZWdleCA9IC9eJC87XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0RFQlVHKSB7XG4gIHZhciBkZWJ1Z0VudiA9IHByb2Nlc3MuZW52Lk5PREVfREVCVUc7XG4gIGRlYnVnRW52ID0gZGVidWdFbnYucmVwbGFjZSgvW3xcXFxce30oKVtcXF1eJCs/Ll0vZywgJ1xcXFwkJicpXG4gICAgLnJlcGxhY2UoL1xcKi9nLCAnLionKVxuICAgIC5yZXBsYWNlKC8sL2csICckfF4nKVxuICAgIC50b1VwcGVyQ2FzZSgpO1xuICBkZWJ1Z0VudlJlZ2V4ID0gbmV3IFJlZ0V4cCgnXicgKyBkZWJ1Z0VudiArICckJywgJ2knKTtcbn1cbmV4cG9ydHMuZGVidWdsb2cgPSBmdW5jdGlvbihzZXQpIHtcbiAgc2V0ID0gc2V0LnRvVXBwZXJDYXNlKCk7XG4gIGlmICghZGVidWdzW3NldF0pIHtcbiAgICBpZiAoZGVidWdFbnZSZWdleC50ZXN0KHNldCkpIHtcbiAgICAgIHZhciBwaWQgPSBwcm9jZXNzLnBpZDtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBtc2cgPSBleHBvcnRzLmZvcm1hdC5hcHBseShleHBvcnRzLCBhcmd1bWVudHMpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCclcyAlZDogJXMnLCBzZXQsIHBpZCwgbXNnKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlYnVnc1tzZXRdO1xufTtcblxuXG4vKipcbiAqIEVjaG9zIHRoZSB2YWx1ZSBvZiBhIHZhbHVlLiBUcnlzIHRvIHByaW50IHRoZSB2YWx1ZSBvdXRcbiAqIGluIHRoZSBiZXN0IHdheSBwb3NzaWJsZSBnaXZlbiB0aGUgZGlmZmVyZW50IHR5cGVzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBwcmludCBvdXQuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25hbCBvcHRpb25zIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgb3V0cHV0LlxuICovXG4vKiBsZWdhY3k6IG9iaiwgc2hvd0hpZGRlbiwgZGVwdGgsIGNvbG9ycyovXG5mdW5jdGlvbiBpbnNwZWN0KG9iaiwgb3B0cykge1xuICAvLyBkZWZhdWx0IG9wdGlvbnNcbiAgdmFyIGN0eCA9IHtcbiAgICBzZWVuOiBbXSxcbiAgICBzdHlsaXplOiBzdHlsaXplTm9Db2xvclxuICB9O1xuICAvLyBsZWdhY3kuLi5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gMykgY3R4LmRlcHRoID0gYXJndW1lbnRzWzJdO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+PSA0KSBjdHguY29sb3JzID0gYXJndW1lbnRzWzNdO1xuICBpZiAoaXNCb29sZWFuKG9wdHMpKSB7XG4gICAgLy8gbGVnYWN5Li4uXG4gICAgY3R4LnNob3dIaWRkZW4gPSBvcHRzO1xuICB9IGVsc2UgaWYgKG9wdHMpIHtcbiAgICAvLyBnb3QgYW4gXCJvcHRpb25zXCIgb2JqZWN0XG4gICAgZXhwb3J0cy5fZXh0ZW5kKGN0eCwgb3B0cyk7XG4gIH1cbiAgLy8gc2V0IGRlZmF1bHQgb3B0aW9uc1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LnNob3dIaWRkZW4pKSBjdHguc2hvd0hpZGRlbiA9IGZhbHNlO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmRlcHRoKSkgY3R4LmRlcHRoID0gMjtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jb2xvcnMpKSBjdHguY29sb3JzID0gZmFsc2U7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguY3VzdG9tSW5zcGVjdCkpIGN0eC5jdXN0b21JbnNwZWN0ID0gdHJ1ZTtcbiAgaWYgKGN0eC5jb2xvcnMpIGN0eC5zdHlsaXplID0gc3R5bGl6ZVdpdGhDb2xvcjtcbiAgcmV0dXJuIGZvcm1hdFZhbHVlKGN0eCwgb2JqLCBjdHguZGVwdGgpO1xufVxuZXhwb3J0cy5pbnNwZWN0ID0gaW5zcGVjdDtcblxuXG4vLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FOU0lfZXNjYXBlX2NvZGUjZ3JhcGhpY3Ncbmluc3BlY3QuY29sb3JzID0ge1xuICAnYm9sZCcgOiBbMSwgMjJdLFxuICAnaXRhbGljJyA6IFszLCAyM10sXG4gICd1bmRlcmxpbmUnIDogWzQsIDI0XSxcbiAgJ2ludmVyc2UnIDogWzcsIDI3XSxcbiAgJ3doaXRlJyA6IFszNywgMzldLFxuICAnZ3JleScgOiBbOTAsIDM5XSxcbiAgJ2JsYWNrJyA6IFszMCwgMzldLFxuICAnYmx1ZScgOiBbMzQsIDM5XSxcbiAgJ2N5YW4nIDogWzM2LCAzOV0sXG4gICdncmVlbicgOiBbMzIsIDM5XSxcbiAgJ21hZ2VudGEnIDogWzM1LCAzOV0sXG4gICdyZWQnIDogWzMxLCAzOV0sXG4gICd5ZWxsb3cnIDogWzMzLCAzOV1cbn07XG5cbi8vIERvbid0IHVzZSAnYmx1ZScgbm90IHZpc2libGUgb24gY21kLmV4ZVxuaW5zcGVjdC5zdHlsZXMgPSB7XG4gICdzcGVjaWFsJzogJ2N5YW4nLFxuICAnbnVtYmVyJzogJ3llbGxvdycsXG4gICdib29sZWFuJzogJ3llbGxvdycsXG4gICd1bmRlZmluZWQnOiAnZ3JleScsXG4gICdudWxsJzogJ2JvbGQnLFxuICAnc3RyaW5nJzogJ2dyZWVuJyxcbiAgJ2RhdGUnOiAnbWFnZW50YScsXG4gIC8vIFwibmFtZVwiOiBpbnRlbnRpb25hbGx5IG5vdCBzdHlsaW5nXG4gICdyZWdleHAnOiAncmVkJ1xufTtcblxuXG5mdW5jdGlvbiBzdHlsaXplV2l0aENvbG9yKHN0ciwgc3R5bGVUeXBlKSB7XG4gIHZhciBzdHlsZSA9IGluc3BlY3Quc3R5bGVzW3N0eWxlVHlwZV07XG5cbiAgaWYgKHN0eWxlKSB7XG4gICAgcmV0dXJuICdcXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMF0gKyAnbScgKyBzdHIgK1xuICAgICAgICAgICAnXFx1MDAxYlsnICsgaW5zcGVjdC5jb2xvcnNbc3R5bGVdWzFdICsgJ20nO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdHI7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBzdHlsaXplTm9Db2xvcihzdHIsIHN0eWxlVHlwZSkge1xuICByZXR1cm4gc3RyO1xufVxuXG5cbmZ1bmN0aW9uIGFycmF5VG9IYXNoKGFycmF5KSB7XG4gIHZhciBoYXNoID0ge307XG5cbiAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbih2YWwsIGlkeCkge1xuICAgIGhhc2hbdmFsXSA9IHRydWU7XG4gIH0pO1xuXG4gIHJldHVybiBoYXNoO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdFZhbHVlKGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcykge1xuICAvLyBQcm92aWRlIGEgaG9vayBmb3IgdXNlci1zcGVjaWZpZWQgaW5zcGVjdCBmdW5jdGlvbnMuXG4gIC8vIENoZWNrIHRoYXQgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYW4gaW5zcGVjdCBmdW5jdGlvbiBvbiBpdFxuICBpZiAoY3R4LmN1c3RvbUluc3BlY3QgJiZcbiAgICAgIHZhbHVlICYmXG4gICAgICBpc0Z1bmN0aW9uKHZhbHVlLmluc3BlY3QpICYmXG4gICAgICAvLyBGaWx0ZXIgb3V0IHRoZSB1dGlsIG1vZHVsZSwgaXQncyBpbnNwZWN0IGZ1bmN0aW9uIGlzIHNwZWNpYWxcbiAgICAgIHZhbHVlLmluc3BlY3QgIT09IGV4cG9ydHMuaW5zcGVjdCAmJlxuICAgICAgLy8gQWxzbyBmaWx0ZXIgb3V0IGFueSBwcm90b3R5cGUgb2JqZWN0cyB1c2luZyB0aGUgY2lyY3VsYXIgY2hlY2suXG4gICAgICAhKHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gdmFsdWUpKSB7XG4gICAgdmFyIHJldCA9IHZhbHVlLmluc3BlY3QocmVjdXJzZVRpbWVzLCBjdHgpO1xuICAgIGlmICghaXNTdHJpbmcocmV0KSkge1xuICAgICAgcmV0ID0gZm9ybWF0VmFsdWUoY3R4LCByZXQsIHJlY3Vyc2VUaW1lcyk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvLyBQcmltaXRpdmUgdHlwZXMgY2Fubm90IGhhdmUgcHJvcGVydGllc1xuICB2YXIgcHJpbWl0aXZlID0gZm9ybWF0UHJpbWl0aXZlKGN0eCwgdmFsdWUpO1xuICBpZiAocHJpbWl0aXZlKSB7XG4gICAgcmV0dXJuIHByaW1pdGl2ZTtcbiAgfVxuXG4gIC8vIExvb2sgdXAgdGhlIGtleXMgb2YgdGhlIG9iamVjdC5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gIHZhciB2aXNpYmxlS2V5cyA9IGFycmF5VG9IYXNoKGtleXMpO1xuXG4gIGlmIChjdHguc2hvd0hpZGRlbikge1xuICAgIGtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh2YWx1ZSk7XG4gIH1cblxuICAvLyBJRSBkb2Vzbid0IG1ha2UgZXJyb3IgZmllbGRzIG5vbi1lbnVtZXJhYmxlXG4gIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9kd3c1MnNidCh2PXZzLjk0KS5hc3B4XG4gIGlmIChpc0Vycm9yKHZhbHVlKVxuICAgICAgJiYgKGtleXMuaW5kZXhPZignbWVzc2FnZScpID49IDAgfHwga2V5cy5pbmRleE9mKCdkZXNjcmlwdGlvbicpID49IDApKSB7XG4gICAgcmV0dXJuIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgfVxuXG4gIC8vIFNvbWUgdHlwZSBvZiBvYmplY3Qgd2l0aG91dCBwcm9wZXJ0aWVzIGNhbiBiZSBzaG9ydGN1dHRlZC5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICB2YXIgbmFtZSA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKCdbRnVuY3Rpb24nICsgbmFtZSArICddJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTtcbiAgICB9XG4gICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ2RhdGUnKTtcbiAgICB9XG4gICAgaWYgKGlzRXJyb3IodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNlID0gJycsIGFycmF5ID0gZmFsc2UsIGJyYWNlcyA9IFsneycsICd9J107XG5cbiAgLy8gTWFrZSBBcnJheSBzYXkgdGhhdCB0aGV5IGFyZSBBcnJheVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBhcnJheSA9IHRydWU7XG4gICAgYnJhY2VzID0gWydbJywgJ10nXTtcbiAgfVxuXG4gIC8vIE1ha2UgZnVuY3Rpb25zIHNheSB0aGF0IHRoZXkgYXJlIGZ1bmN0aW9uc1xuICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICB2YXIgbiA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgIGJhc2UgPSAnIFtGdW5jdGlvbicgKyBuICsgJ10nO1xuICB9XG5cbiAgLy8gTWFrZSBSZWdFeHBzIHNheSB0aGF0IHRoZXkgYXJlIFJlZ0V4cHNcbiAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBkYXRlcyB3aXRoIHByb3BlcnRpZXMgZmlyc3Qgc2F5IHRoZSBkYXRlXG4gIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIERhdGUucHJvdG90eXBlLnRvVVRDU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBlcnJvciB3aXRoIG1lc3NhZ2UgZmlyc3Qgc2F5IHRoZSBlcnJvclxuICBpZiAoaXNFcnJvcih2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgZm9ybWF0RXJyb3IodmFsdWUpO1xuICB9XG5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwICYmICghYXJyYXkgfHwgdmFsdWUubGVuZ3RoID09IDApKSB7XG4gICAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyBicmFjZXNbMV07XG4gIH1cblxuICBpZiAocmVjdXJzZVRpbWVzIDwgMCkge1xuICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAncmVnZXhwJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW09iamVjdF0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuXG4gIGN0eC5zZWVuLnB1c2godmFsdWUpO1xuXG4gIHZhciBvdXRwdXQ7XG4gIGlmIChhcnJheSkge1xuICAgIG91dHB1dCA9IGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpO1xuICB9IGVsc2Uge1xuICAgIG91dHB1dCA9IGtleXMubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpO1xuICAgIH0pO1xuICB9XG5cbiAgY3R4LnNlZW4ucG9wKCk7XG5cbiAgcmV0dXJuIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSkge1xuICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgndW5kZWZpbmVkJywgJ3VuZGVmaW5lZCcpO1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgdmFyIHNpbXBsZSA9ICdcXCcnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpLnJlcGxhY2UoL15cInxcIiQvZywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFwiL2csICdcIicpICsgJ1xcJyc7XG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKHNpbXBsZSwgJ3N0cmluZycpO1xuICB9XG4gIGlmIChpc051bWJlcih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdudW1iZXInKTtcbiAgaWYgKGlzQm9vbGVhbih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdib29sZWFuJyk7XG4gIC8vIEZvciBzb21lIHJlYXNvbiB0eXBlb2YgbnVsbCBpcyBcIm9iamVjdFwiLCBzbyBzcGVjaWFsIGNhc2UgaGVyZS5cbiAgaWYgKGlzTnVsbCh2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCdudWxsJywgJ251bGwnKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRFcnJvcih2YWx1ZSkge1xuICByZXR1cm4gJ1snICsgRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpICsgJ10nO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eSh2YWx1ZSwgU3RyaW5nKGkpKSkge1xuICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cyxcbiAgICAgICAgICBTdHJpbmcoaSksIHRydWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goJycpO1xuICAgIH1cbiAgfVxuICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKCFrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLFxuICAgICAgICAgIGtleSwgdHJ1ZSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvdXRwdXQ7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5LCBhcnJheSkge1xuICB2YXIgbmFtZSwgc3RyLCBkZXNjO1xuICBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih2YWx1ZSwga2V5KSB8fCB7IHZhbHVlOiB2YWx1ZVtrZXldIH07XG4gIGlmIChkZXNjLmdldCkge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tHZXR0ZXIvU2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tTZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFoYXNPd25Qcm9wZXJ0eSh2aXNpYmxlS2V5cywga2V5KSkge1xuICAgIG5hbWUgPSAnWycgKyBrZXkgKyAnXSc7XG4gIH1cbiAgaWYgKCFzdHIpIHtcbiAgICBpZiAoY3R4LnNlZW4uaW5kZXhPZihkZXNjLnZhbHVlKSA8IDApIHtcbiAgICAgIGlmIChpc051bGwocmVjdXJzZVRpbWVzKSkge1xuICAgICAgICBzdHIgPSBmb3JtYXRWYWx1ZShjdHgsIGRlc2MudmFsdWUsIG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBkZXNjLnZhbHVlLCByZWN1cnNlVGltZXMgLSAxKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdHIuaW5kZXhPZignXFxuJykgPiAtMSkge1xuICAgICAgICBpZiAoYXJyYXkpIHtcbiAgICAgICAgICBzdHIgPSBzdHIuc3BsaXQoJ1xcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gJyAgJyArIGxpbmU7XG4gICAgICAgICAgfSkuam9pbignXFxuJykuc3Vic3RyKDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0ciA9ICdcXG4nICsgc3RyLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuICcgICAnICsgbGluZTtcbiAgICAgICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0NpcmN1bGFyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG4gIGlmIChpc1VuZGVmaW5lZChuYW1lKSkge1xuICAgIGlmIChhcnJheSAmJiBrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBuYW1lID0gSlNPTi5zdHJpbmdpZnkoJycgKyBrZXkpO1xuICAgIGlmIChuYW1lLm1hdGNoKC9eXCIoW2EtekEtWl9dW2EtekEtWl8wLTldKilcIiQvKSkge1xuICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyKDEsIG5hbWUubGVuZ3RoIC0gMik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ25hbWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJylcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyheXCJ8XCIkKS9nLCBcIidcIik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ3N0cmluZycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYW1lICsgJzogJyArIHN0cjtcbn1cblxuXG5mdW5jdGlvbiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQsIGJhc2UsIGJyYWNlcykge1xuICB2YXIgbnVtTGluZXNFc3QgPSAwO1xuICB2YXIgbGVuZ3RoID0gb3V0cHV0LnJlZHVjZShmdW5jdGlvbihwcmV2LCBjdXIpIHtcbiAgICBudW1MaW5lc0VzdCsrO1xuICAgIGlmIChjdXIuaW5kZXhPZignXFxuJykgPj0gMCkgbnVtTGluZXNFc3QrKztcbiAgICByZXR1cm4gcHJldiArIGN1ci5yZXBsYWNlKC9cXHUwMDFiXFxbXFxkXFxkP20vZywgJycpLmxlbmd0aCArIDE7XG4gIH0sIDApO1xuXG4gIGlmIChsZW5ndGggPiA2MCkge1xuICAgIHJldHVybiBicmFjZXNbMF0gK1xuICAgICAgICAgICAoYmFzZSA9PT0gJycgPyAnJyA6IGJhc2UgKyAnXFxuICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgb3V0cHV0LmpvaW4oJyxcXG4gICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgYnJhY2VzWzFdO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyAnICcgKyBvdXRwdXQuam9pbignLCAnKSArICcgJyArIGJyYWNlc1sxXTtcbn1cblxuXG4vLyBOT1RFOiBUaGVzZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBgaW5zdGFuY2VvZmBcbi8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3aXRoIGBPYmplY3QuY3JlYXRlKClgLlxuZXhwb3J0cy50eXBlcyA9IHJlcXVpcmUoJy4vc3VwcG9ydC90eXBlcycpO1xuXG5mdW5jdGlvbiBpc0FycmF5KGFyKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGFyKTtcbn1cbmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJztcbn1cbmV4cG9ydHMuaXNCb29sZWFuID0gaXNCb29sZWFuO1xuXG5mdW5jdGlvbiBpc051bGwoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbCA9IGlzTnVsbDtcblxuZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydHMuaXNOdW1iZXIgPSBpc051bWJlcjtcblxuZnVuY3Rpb24gaXNTdHJpbmcoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3RyaW5nJztcbn1cbmV4cG9ydHMuaXNTdHJpbmcgPSBpc1N0cmluZztcblxuZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cbmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDtcblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbmV4cG9ydHMuaXNVbmRlZmluZWQgPSBpc1VuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNSZWdFeHAocmUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHJlKSAmJiBvYmplY3RUb1N0cmluZyhyZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuZXhwb3J0cy5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuZXhwb3J0cy50eXBlcy5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuXG5mdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNPYmplY3QgPSBpc09iamVjdDtcblxuZnVuY3Rpb24gaXNEYXRlKGQpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGQpICYmIG9iamVjdFRvU3RyaW5nKGQpID09PSAnW29iamVjdCBEYXRlXSc7XG59XG5leHBvcnRzLmlzRGF0ZSA9IGlzRGF0ZTtcbmV4cG9ydHMudHlwZXMuaXNEYXRlID0gaXNEYXRlO1xuXG5mdW5jdGlvbiBpc0Vycm9yKGUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGUpICYmXG4gICAgICAob2JqZWN0VG9TdHJpbmcoZSkgPT09ICdbb2JqZWN0IEVycm9yXScgfHwgZSBpbnN0YW5jZW9mIEVycm9yKTtcbn1cbmV4cG9ydHMuaXNFcnJvciA9IGlzRXJyb3I7XG5leHBvcnRzLnR5cGVzLmlzTmF0aXZlRXJyb3IgPSBpc0Vycm9yO1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuZXhwb3J0cy5pc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlO1xuXG5leHBvcnRzLmlzQnVmZmVyID0gcmVxdWlyZSgnLi9zdXBwb3J0L2lzQnVmZmVyJyk7XG5cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTtcbn1cblxuXG5mdW5jdGlvbiBwYWQobikge1xuICByZXR1cm4gbiA8IDEwID8gJzAnICsgbi50b1N0cmluZygxMCkgOiBuLnRvU3RyaW5nKDEwKTtcbn1cblxuXG52YXIgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsXG4gICAgICAgICAgICAgICdPY3QnLCAnTm92JywgJ0RlYyddO1xuXG4vLyAyNiBGZWIgMTY6MTk6MzRcbmZ1bmN0aW9uIHRpbWVzdGFtcCgpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSgpO1xuICB2YXIgdGltZSA9IFtwYWQoZC5nZXRIb3VycygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0TWludXRlcygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0U2Vjb25kcygpKV0uam9pbignOicpO1xuICByZXR1cm4gW2QuZ2V0RGF0ZSgpLCBtb250aHNbZC5nZXRNb250aCgpXSwgdGltZV0uam9pbignICcpO1xufVxuXG5cbi8vIGxvZyBpcyBqdXN0IGEgdGhpbiB3cmFwcGVyIHRvIGNvbnNvbGUubG9nIHRoYXQgcHJlcGVuZHMgYSB0aW1lc3RhbXBcbmV4cG9ydHMubG9nID0gZnVuY3Rpb24oKSB7XG4gIGNvbnNvbGUubG9nKCclcyAtICVzJywgdGltZXN0YW1wKCksIGV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsIGFyZ3VtZW50cykpO1xufTtcblxuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlci5cbiAqXG4gKiBUaGUgRnVuY3Rpb24ucHJvdG90eXBlLmluaGVyaXRzIGZyb20gbGFuZy5qcyByZXdyaXR0ZW4gYXMgYSBzdGFuZGFsb25lXG4gKiBmdW5jdGlvbiAobm90IG9uIEZ1bmN0aW9uLnByb3RvdHlwZSkuIE5PVEU6IElmIHRoaXMgZmlsZSBpcyB0byBiZSBsb2FkZWRcbiAqIGR1cmluZyBib290c3RyYXBwaW5nIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcmV3cml0dGVuIHVzaW5nIHNvbWUgbmF0aXZlXG4gKiBmdW5jdGlvbnMgYXMgcHJvdG90eXBlIHNldHVwIHVzaW5nIG5vcm1hbCBKYXZhU2NyaXB0IGRvZXMgbm90IHdvcmsgYXNcbiAqIGV4cGVjdGVkIGR1cmluZyBib290c3RyYXBwaW5nIChzZWUgbWlycm9yLmpzIGluIHIxMTQ5MDMpLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gd2hpY2ggbmVlZHMgdG8gaW5oZXJpdCB0aGVcbiAqICAgICBwcm90b3R5cGUuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gdG8gaW5oZXJpdCBwcm90b3R5cGUgZnJvbS5cbiAqL1xuZXhwb3J0cy5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmV4cG9ydHMuX2V4dGVuZCA9IGZ1bmN0aW9uKG9yaWdpbiwgYWRkKSB7XG4gIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIGFkZCBpc24ndCBhbiBvYmplY3RcbiAgaWYgKCFhZGQgfHwgIWlzT2JqZWN0KGFkZCkpIHJldHVybiBvcmlnaW47XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhZGQpO1xuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgb3JpZ2luW2tleXNbaV1dID0gYWRkW2tleXNbaV1dO1xuICB9XG4gIHJldHVybiBvcmlnaW47XG59O1xuXG5mdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxuXG52YXIga0N1c3RvbVByb21pc2lmaWVkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgPyBTeW1ib2woJ3V0aWwucHJvbWlzaWZ5LmN1c3RvbScpIDogdW5kZWZpbmVkO1xuXG5leHBvcnRzLnByb21pc2lmeSA9IGZ1bmN0aW9uIHByb21pc2lmeShvcmlnaW5hbCkge1xuICBpZiAodHlwZW9mIG9yaWdpbmFsICE9PSAnZnVuY3Rpb24nKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcIm9yaWdpbmFsXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uJyk7XG5cbiAgaWYgKGtDdXN0b21Qcm9taXNpZmllZFN5bWJvbCAmJiBvcmlnaW5hbFtrQ3VzdG9tUHJvbWlzaWZpZWRTeW1ib2xdKSB7XG4gICAgdmFyIGZuID0gb3JpZ2luYWxba0N1c3RvbVByb21pc2lmaWVkU3ltYm9sXTtcbiAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJ1dGlsLnByb21pc2lmeS5jdXN0b21cIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCBrQ3VzdG9tUHJvbWlzaWZpZWRTeW1ib2wsIHtcbiAgICAgIHZhbHVlOiBmbiwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgZnVuY3Rpb24gZm4oKSB7XG4gICAgdmFyIHByb21pc2VSZXNvbHZlLCBwcm9taXNlUmVqZWN0O1xuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgcHJvbWlzZVJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgcHJvbWlzZVJlamVjdCA9IHJlamVjdDtcbiAgICB9KTtcblxuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cbiAgICBhcmdzLnB1c2goZnVuY3Rpb24gKGVyciwgdmFsdWUpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcHJvbWlzZVJlamVjdChlcnIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvbWlzZVJlc29sdmUodmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcHJvbWlzZVJlamVjdChlcnIpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGZuLCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob3JpZ2luYWwpKTtcblxuICBpZiAoa0N1c3RvbVByb21pc2lmaWVkU3ltYm9sKSBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sIGtDdXN0b21Qcm9taXNpZmllZFN5bWJvbCwge1xuICAgIHZhbHVlOiBmbiwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoXG4gICAgZm4sXG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvcmlnaW5hbClcbiAgKTtcbn1cblxuZXhwb3J0cy5wcm9taXNpZnkuY3VzdG9tID0ga0N1c3RvbVByb21pc2lmaWVkU3ltYm9sXG5cbmZ1bmN0aW9uIGNhbGxiYWNraWZ5T25SZWplY3RlZChyZWFzb24sIGNiKSB7XG4gIC8vIGAhcmVhc29uYCBndWFyZCBpbnNwaXJlZCBieSBibHVlYmlyZCAoUmVmOiBodHRwczovL2dvby5nbC90NUlTNk0pLlxuICAvLyBCZWNhdXNlIGBudWxsYCBpcyBhIHNwZWNpYWwgZXJyb3IgdmFsdWUgaW4gY2FsbGJhY2tzIHdoaWNoIG1lYW5zIFwibm8gZXJyb3JcbiAgLy8gb2NjdXJyZWRcIiwgd2UgZXJyb3Itd3JhcCBzbyB0aGUgY2FsbGJhY2sgY29uc3VtZXIgY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW5cbiAgLy8gXCJ0aGUgcHJvbWlzZSByZWplY3RlZCB3aXRoIG51bGxcIiBvciBcInRoZSBwcm9taXNlIGZ1bGZpbGxlZCB3aXRoIHVuZGVmaW5lZFwiLlxuICBpZiAoIXJlYXNvbikge1xuICAgIHZhciBuZXdSZWFzb24gPSBuZXcgRXJyb3IoJ1Byb21pc2Ugd2FzIHJlamVjdGVkIHdpdGggYSBmYWxzeSB2YWx1ZScpO1xuICAgIG5ld1JlYXNvbi5yZWFzb24gPSByZWFzb247XG4gICAgcmVhc29uID0gbmV3UmVhc29uO1xuICB9XG4gIHJldHVybiBjYihyZWFzb24pO1xufVxuXG5mdW5jdGlvbiBjYWxsYmFja2lmeShvcmlnaW5hbCkge1xuICBpZiAodHlwZW9mIG9yaWdpbmFsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3JpZ2luYWxcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtcbiAgfVxuXG4gIC8vIFdlIERPIE5PVCByZXR1cm4gdGhlIHByb21pc2UgYXMgaXQgZ2l2ZXMgdGhlIHVzZXIgYSBmYWxzZSBzZW5zZSB0aGF0XG4gIC8vIHRoZSBwcm9taXNlIGlzIGFjdHVhbGx5IHNvbWVob3cgcmVsYXRlZCB0byB0aGUgY2FsbGJhY2sncyBleGVjdXRpb25cbiAgLy8gYW5kIHRoYXQgdGhlIGNhbGxiYWNrIHRocm93aW5nIHdpbGwgcmVqZWN0IHRoZSBwcm9taXNlLlxuICBmdW5jdGlvbiBjYWxsYmFja2lmaWVkKCkge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cblxuICAgIHZhciBtYXliZUNiID0gYXJncy5wb3AoKTtcbiAgICBpZiAodHlwZW9mIG1heWJlQ2IgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBsYXN0IGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbicpO1xuICAgIH1cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNiID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gbWF5YmVDYi5hcHBseShzZWxmLCBhcmd1bWVudHMpO1xuICAgIH07XG4gICAgLy8gSW4gdHJ1ZSBub2RlIHN0eWxlIHdlIHByb2Nlc3MgdGhlIGNhbGxiYWNrIG9uIGBuZXh0VGlja2Agd2l0aCBhbGwgdGhlXG4gICAgLy8gaW1wbGljYXRpb25zIChzdGFjaywgYHVuY2F1Z2h0RXhjZXB0aW9uYCwgYGFzeW5jX2hvb2tzYClcbiAgICBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKVxuICAgICAgLnRoZW4oZnVuY3Rpb24ocmV0KSB7IHByb2Nlc3MubmV4dFRpY2soY2IuYmluZChudWxsLCBudWxsLCByZXQpKSB9LFxuICAgICAgICAgICAgZnVuY3Rpb24ocmVqKSB7IHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2tpZnlPblJlamVjdGVkLmJpbmQobnVsbCwgcmVqLCBjYikpIH0pO1xuICB9XG5cbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGNhbGxiYWNraWZpZWQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihvcmlnaW5hbCkpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjYWxsYmFja2lmaWVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9yaWdpbmFsKSk7XG4gIHJldHVybiBjYWxsYmFja2lmaWVkO1xufVxuZXhwb3J0cy5jYWxsYmFja2lmeSA9IGNhbGxiYWNraWZ5O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZm9yRWFjaCA9IHJlcXVpcmUoJ2ZvcmVhY2gnKTtcbnZhciBhdmFpbGFibGVUeXBlZEFycmF5cyA9IHJlcXVpcmUoJ2F2YWlsYWJsZS10eXBlZC1hcnJheXMnKTtcbnZhciBjYWxsQm91bmQgPSByZXF1aXJlKCdjYWxsLWJpbmQvY2FsbEJvdW5kJyk7XG5cbnZhciAkdG9TdHJpbmcgPSBjYWxsQm91bmQoJ09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcnKTtcbnZhciBoYXNTeW1ib2xzID0gcmVxdWlyZSgnaGFzLXN5bWJvbHMnKSgpO1xudmFyIGhhc1RvU3RyaW5nVGFnID0gaGFzU3ltYm9scyAmJiB0eXBlb2YgU3ltYm9sLnRvU3RyaW5nVGFnID09PSAnc3ltYm9sJztcblxudmFyIHR5cGVkQXJyYXlzID0gYXZhaWxhYmxlVHlwZWRBcnJheXMoKTtcblxudmFyICRzbGljZSA9IGNhbGxCb3VuZCgnU3RyaW5nLnByb3RvdHlwZS5zbGljZScpO1xudmFyIHRvU3RyVGFncyA9IHt9O1xudmFyIGdPUEQgPSByZXF1aXJlKCdlcy1hYnN0cmFjdC9oZWxwZXJzL2dldE93blByb3BlcnR5RGVzY3JpcHRvcicpO1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mOyAvLyByZXF1aXJlKCdnZXRwcm90b3R5cGVvZicpO1xuaWYgKGhhc1RvU3RyaW5nVGFnICYmIGdPUEQgJiYgZ2V0UHJvdG90eXBlT2YpIHtcblx0Zm9yRWFjaCh0eXBlZEFycmF5cywgZnVuY3Rpb24gKHR5cGVkQXJyYXkpIHtcblx0XHRpZiAodHlwZW9mIGdsb2JhbFt0eXBlZEFycmF5XSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dmFyIGFyciA9IG5ldyBnbG9iYWxbdHlwZWRBcnJheV0oKTtcblx0XHRcdGlmICghKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBhcnIpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFdmFsRXJyb3IoJ3RoaXMgZW5naW5lIGhhcyBzdXBwb3J0IGZvciBTeW1ib2wudG9TdHJpbmdUYWcsIGJ1dCAnICsgdHlwZWRBcnJheSArICcgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVydHkhIFBsZWFzZSByZXBvcnQgdGhpcy4nKTtcblx0XHRcdH1cblx0XHRcdHZhciBwcm90byA9IGdldFByb3RvdHlwZU9mKGFycik7XG5cdFx0XHR2YXIgZGVzY3JpcHRvciA9IGdPUEQocHJvdG8sIFN5bWJvbC50b1N0cmluZ1RhZyk7XG5cdFx0XHRpZiAoIWRlc2NyaXB0b3IpIHtcblx0XHRcdFx0dmFyIHN1cGVyUHJvdG8gPSBnZXRQcm90b3R5cGVPZihwcm90byk7XG5cdFx0XHRcdGRlc2NyaXB0b3IgPSBnT1BEKHN1cGVyUHJvdG8sIFN5bWJvbC50b1N0cmluZ1RhZyk7XG5cdFx0XHR9XG5cdFx0XHR0b1N0clRhZ3NbdHlwZWRBcnJheV0gPSBkZXNjcmlwdG9yLmdldDtcblx0XHR9XG5cdH0pO1xufVxuXG52YXIgdHJ5VHlwZWRBcnJheXMgPSBmdW5jdGlvbiB0cnlBbGxUeXBlZEFycmF5cyh2YWx1ZSkge1xuXHR2YXIgZm91bmROYW1lID0gZmFsc2U7XG5cdGZvckVhY2godG9TdHJUYWdzLCBmdW5jdGlvbiAoZ2V0dGVyLCB0eXBlZEFycmF5KSB7XG5cdFx0aWYgKCFmb3VuZE5hbWUpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHZhciBuYW1lID0gZ2V0dGVyLmNhbGwodmFsdWUpO1xuXHRcdFx0XHRpZiAobmFtZSA9PT0gdHlwZWRBcnJheSkge1xuXHRcdFx0XHRcdGZvdW5kTmFtZSA9IG5hbWU7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGUpIHt9XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGZvdW5kTmFtZTtcbn07XG5cbnZhciBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCdpcy10eXBlZC1hcnJheScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkge1xuXHRpZiAoIWlzVHlwZWRBcnJheSh2YWx1ZSkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICghaGFzVG9TdHJpbmdUYWcpIHsgcmV0dXJuICRzbGljZSgkdG9TdHJpbmcodmFsdWUpLCA4LCAtMSk7IH1cblx0cmV0dXJuIHRyeVR5cGVkQXJyYXlzKHZhbHVlKTtcbn07XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIl9fd2VicGFja19yZXF1aXJlX18ubm1kID0gKG1vZHVsZSkgPT4ge1xuXHRtb2R1bGUucGF0aHMgPSBbXTtcblx0aWYgKCFtb2R1bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xuXHRyZXR1cm4gbW9kdWxlO1xufTsiLCIvLyBzdGFydHVwXG4vLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8vIFRoaXMgZW50cnkgbW9kdWxlIGRvZXNuJ3QgdGVsbCBhYm91dCBpdCdzIHRvcC1sZXZlbCBkZWNsYXJhdGlvbnMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg2NzcpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +(()=>{var t={9809:(t,e,r)=>{"use strict";const i=e;i.bignum=r(4590),i.define=r(2500).define,i.base=r(1979),i.constants=r(6826),i.decoders=r(8307),i.encoders=r(6579)},2500:(t,e,r)=>{"use strict";const i=r(6579),n=r(8307),o=r(5717);function s(t,e){this.name=t,this.body=e,this.decoders={},this.encoders={}}e.define=function(t,e){return new s(t,e)},s.prototype._createNamed=function(t){const e=this.name;function r(t){this._initNamed(t,e)}return o(r,t),r.prototype._initNamed=function(e,r){t.call(this,e,r)},new r(this)},s.prototype._getDecoder=function(t){return t=t||"der",this.decoders.hasOwnProperty(t)||(this.decoders[t]=this._createNamed(n[t])),this.decoders[t]},s.prototype.decode=function(t,e,r){return this._getDecoder(e).decode(t,r)},s.prototype._getEncoder=function(t){return t=t||"der",this.encoders.hasOwnProperty(t)||(this.encoders[t]=this._createNamed(i[t])),this.encoders[t]},s.prototype.encode=function(t,e,r){return this._getEncoder(e).encode(t,r)}},6625:(t,e,r)=>{"use strict";const i=r(5717),n=r(8465).b,o=r(2399).Buffer;function s(t,e){n.call(this,e),o.isBuffer(t)?(this.base=t,this.offset=0,this.length=t.length):this.error("Input not Buffer")}function a(t,e){if(Array.isArray(t))this.length=0,this.value=t.map((function(t){return a.isEncoderBuffer(t)||(t=new a(t,e)),this.length+=t.length,t}),this);else if("number"==typeof t){if(!(0<=t&&t<=255))return e.error("non-byte EncoderBuffer value");this.value=t,this.length=1}else if("string"==typeof t)this.value=t,this.length=o.byteLength(t);else{if(!o.isBuffer(t))return e.error("Unsupported type: "+typeof t);this.value=t,this.length=t.length}}i(s,n),e.C=s,s.isDecoderBuffer=function(t){return t instanceof s||"object"==typeof t&&o.isBuffer(t.base)&&"DecoderBuffer"===t.constructor.name&&"number"==typeof t.offset&&"number"==typeof t.length&&"function"==typeof t.save&&"function"==typeof t.restore&&"function"==typeof t.isEmpty&&"function"==typeof t.readUInt8&&"function"==typeof t.skip&&"function"==typeof t.raw},s.prototype.save=function(){return{offset:this.offset,reporter:n.prototype.save.call(this)}},s.prototype.restore=function(t){const e=new s(this.base);return e.offset=t.offset,e.length=this.offset,this.offset=t.offset,n.prototype.restore.call(this,t.reporter),e},s.prototype.isEmpty=function(){return this.offset===this.length},s.prototype.readUInt8=function(t){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(t||"DecoderBuffer overrun")},s.prototype.skip=function(t,e){if(!(this.offset+t<=this.length))return this.error(e||"DecoderBuffer overrun");const r=new s(this.base);return r._reporterState=this._reporterState,r.offset=this.offset,r.length=this.offset+t,this.offset+=t,r},s.prototype.raw=function(t){return this.base.slice(t?t.offset:this.offset,this.length)},e.R=a,a.isEncoderBuffer=function(t){return t instanceof a||"object"==typeof t&&"EncoderBuffer"===t.constructor.name&&"number"==typeof t.length&&"function"==typeof t.join},a.prototype.join=function(t,e){return t||(t=o.alloc(this.length)),e||(e=0),0===this.length||(Array.isArray(this.value)?this.value.forEach((function(r){r.join(t,e),e+=r.length})):("number"==typeof this.value?t[e]=this.value:"string"==typeof this.value?t.write(this.value,e):o.isBuffer(this.value)&&this.value.copy(t,e),e+=this.length)),t}},1979:(t,e,r)=>{"use strict";const i=e;i.Reporter=r(8465).b,i.DecoderBuffer=r(6625).C,i.EncoderBuffer=r(6625).R,i.Node=r(1949)},1949:(t,e,r)=>{"use strict";const i=r(8465).b,n=r(6625).R,o=r(6625).C,s=r(9746),a=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],h=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(a);function u(t,e,r){const i={};this._baseState=i,i.name=r,i.enc=t,i.parent=e||null,i.children=null,i.tag=null,i.args=null,i.reverseArgs=null,i.choice=null,i.optional=!1,i.any=!1,i.obj=!1,i.use=null,i.useDecoder=null,i.key=null,i.default=null,i.explicit=null,i.implicit=null,i.contains=null,i.parent||(i.children=[],this._wrap())}t.exports=u;const c=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];u.prototype.clone=function(){const t=this._baseState,e={};c.forEach((function(r){e[r]=t[r]}));const r=new this.constructor(e.parent);return r._baseState=e,r},u.prototype._wrap=function(){const t=this._baseState;h.forEach((function(e){this[e]=function(){const r=new this.constructor(this);return t.children.push(r),r[e].apply(r,arguments)}}),this)},u.prototype._init=function(t){const e=this._baseState;s(null===e.parent),t.call(this),e.children=e.children.filter((function(t){return t._baseState.parent===this}),this),s.equal(e.children.length,1,"Root node can have only one child")},u.prototype._useArgs=function(t){const e=this._baseState,r=t.filter((function(t){return t instanceof this.constructor}),this);t=t.filter((function(t){return!(t instanceof this.constructor)}),this),0!==r.length&&(s(null===e.children),e.children=r,r.forEach((function(t){t._baseState.parent=this}),this)),0!==t.length&&(s(null===e.args),e.args=t,e.reverseArgs=t.map((function(t){if("object"!=typeof t||t.constructor!==Object)return t;const e={};return Object.keys(t).forEach((function(r){r==(0|r)&&(r|=0);const i=t[r];e[i]=r})),e})))},["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"].forEach((function(t){u.prototype[t]=function(){const e=this._baseState;throw new Error(t+" not implemented for encoding: "+e.enc)}})),a.forEach((function(t){u.prototype[t]=function(){const e=this._baseState,r=Array.prototype.slice.call(arguments);return s(null===e.tag),e.tag=t,this._useArgs(r),this}})),u.prototype.use=function(t){s(t);const e=this._baseState;return s(null===e.use),e.use=t,this},u.prototype.optional=function(){return this._baseState.optional=!0,this},u.prototype.def=function(t){const e=this._baseState;return s(null===e.default),e.default=t,e.optional=!0,this},u.prototype.explicit=function(t){const e=this._baseState;return s(null===e.explicit&&null===e.implicit),e.explicit=t,this},u.prototype.implicit=function(t){const e=this._baseState;return s(null===e.explicit&&null===e.implicit),e.implicit=t,this},u.prototype.obj=function(){const t=this._baseState,e=Array.prototype.slice.call(arguments);return t.obj=!0,0!==e.length&&this._useArgs(e),this},u.prototype.key=function(t){const e=this._baseState;return s(null===e.key),e.key=t,this},u.prototype.any=function(){return this._baseState.any=!0,this},u.prototype.choice=function(t){const e=this._baseState;return s(null===e.choice),e.choice=t,this._useArgs(Object.keys(t).map((function(e){return t[e]}))),this},u.prototype.contains=function(t){const e=this._baseState;return s(null===e.use),e.contains=t,this},u.prototype._decode=function(t,e){const r=this._baseState;if(null===r.parent)return t.wrapResult(r.children[0]._decode(t,e));let i,n=r.default,s=!0,a=null;if(null!==r.key&&(a=t.enterKey(r.key)),r.optional){let i=null;if(null!==r.explicit?i=r.explicit:null!==r.implicit?i=r.implicit:null!==r.tag&&(i=r.tag),null!==i||r.any){if(s=this._peekTag(t,i,r.any),t.isError(s))return s}else{const i=t.save();try{null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e),s=!0}catch(t){s=!1}t.restore(i)}}if(r.obj&&s&&(i=t.enterObject()),s){if(null!==r.explicit){const e=this._decodeTag(t,r.explicit);if(t.isError(e))return e;t=e}const i=t.offset;if(null===r.use&&null===r.choice){let e;r.any&&(e=t.save());const i=this._decodeTag(t,null!==r.implicit?r.implicit:r.tag,r.any);if(t.isError(i))return i;r.any?n=t.raw(e):t=i}if(e&&e.track&&null!==r.tag&&e.track(t.path(),i,t.length,"tagged"),e&&e.track&&null!==r.tag&&e.track(t.path(),t.offset,t.length,"content"),r.any||(n=null===r.choice?this._decodeGeneric(r.tag,t,e):this._decodeChoice(t,e)),t.isError(n))return n;if(r.any||null!==r.choice||null===r.children||r.children.forEach((function(r){r._decode(t,e)})),r.contains&&("octstr"===r.tag||"bitstr"===r.tag)){const i=new o(n);n=this._getUse(r.contains,t._reporterState.obj)._decode(i,e)}}return r.obj&&s&&(n=t.leaveObject(i)),null===r.key||null===n&&!0!==s?null!==a&&t.exitKey(a):t.leaveKey(a,r.key,n),n},u.prototype._decodeGeneric=function(t,e,r){const i=this._baseState;return"seq"===t||"set"===t?null:"seqof"===t||"setof"===t?this._decodeList(e,t,i.args[0],r):/str$/.test(t)?this._decodeStr(e,t,r):"objid"===t&&i.args?this._decodeObjid(e,i.args[0],i.args[1],r):"objid"===t?this._decodeObjid(e,null,null,r):"gentime"===t||"utctime"===t?this._decodeTime(e,t,r):"null_"===t?this._decodeNull(e,r):"bool"===t?this._decodeBool(e,r):"objDesc"===t?this._decodeStr(e,t,r):"int"===t||"enum"===t?this._decodeInt(e,i.args&&i.args[0],r):null!==i.use?this._getUse(i.use,e._reporterState.obj)._decode(e,r):e.error("unknown tag: "+t)},u.prototype._getUse=function(t,e){const r=this._baseState;return r.useDecoder=this._use(t,e),s(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},u.prototype._decodeChoice=function(t,e){const r=this._baseState;let i=null,n=!1;return Object.keys(r.choice).some((function(o){const s=t.save(),a=r.choice[o];try{const r=a._decode(t,e);if(t.isError(r))return!1;i={type:o,value:r},n=!0}catch(e){return t.restore(s),!1}return!0}),this),n?i:t.error("Choice not matched")},u.prototype._createEncoderBuffer=function(t){return new n(t,this.reporter)},u.prototype._encode=function(t,e,r){const i=this._baseState;if(null!==i.default&&i.default===t)return;const n=this._encodeValue(t,e,r);return void 0===n||this._skipDefault(n,e,r)?void 0:n},u.prototype._encodeValue=function(t,e,r){const n=this._baseState;if(null===n.parent)return n.children[0]._encode(t,e||new i);let o=null;if(this.reporter=e,n.optional&&void 0===t){if(null===n.default)return;t=n.default}let s=null,a=!1;if(n.any)o=this._createEncoderBuffer(t);else if(n.choice)o=this._encodeChoice(t,e);else if(n.contains)s=this._getUse(n.contains,r)._encode(t,e),a=!0;else if(n.children)s=n.children.map((function(r){if("null_"===r._baseState.tag)return r._encode(null,e,t);if(null===r._baseState.key)return e.error("Child should have a key");const i=e.enterKey(r._baseState.key);if("object"!=typeof t)return e.error("Child expected, but input is not object");const n=r._encode(t[r._baseState.key],e,t);return e.leaveKey(i),n}),this).filter((function(t){return t})),s=this._createEncoderBuffer(s);else if("seqof"===n.tag||"setof"===n.tag){if(!n.args||1!==n.args.length)return e.error("Too many args for : "+n.tag);if(!Array.isArray(t))return e.error("seqof/setof, but data is not Array");const r=this.clone();r._baseState.implicit=null,s=this._createEncoderBuffer(t.map((function(r){const i=this._baseState;return this._getUse(i.args[0],t)._encode(r,e)}),r))}else null!==n.use?o=this._getUse(n.use,r)._encode(t,e):(s=this._encodePrimitive(n.tag,t),a=!0);if(!n.any&&null===n.choice){const t=null!==n.implicit?n.implicit:n.tag,r=null===n.implicit?"universal":"context";null===t?null===n.use&&e.error("Tag could be omitted only for .use()"):null===n.use&&(o=this._encodeComposite(t,a,r,s))}return null!==n.explicit&&(o=this._encodeComposite(n.explicit,!1,"context",o)),o},u.prototype._encodeChoice=function(t,e){const r=this._baseState,i=r.choice[t.type];return i||s(!1,t.type+" not found in "+JSON.stringify(Object.keys(r.choice))),i._encode(t.value,e)},u.prototype._encodePrimitive=function(t,e){const r=this._baseState;if(/str$/.test(t))return this._encodeStr(e,t);if("objid"===t&&r.args)return this._encodeObjid(e,r.reverseArgs[0],r.args[1]);if("objid"===t)return this._encodeObjid(e,null,null);if("gentime"===t||"utctime"===t)return this._encodeTime(e,t);if("null_"===t)return this._encodeNull();if("int"===t||"enum"===t)return this._encodeInt(e,r.args&&r.reverseArgs[0]);if("bool"===t)return this._encodeBool(e);if("objDesc"===t)return this._encodeStr(e,t);throw new Error("Unsupported tag: "+t)},u.prototype._isNumstr=function(t){return/^[0-9 ]*$/.test(t)},u.prototype._isPrintstr=function(t){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(t)}},8465:(t,e,r)=>{"use strict";const i=r(5717);function n(t){this._reporterState={obj:null,path:[],options:t||{},errors:[]}}function o(t,e){this.path=t,this.rethrow(e)}e.b=n,n.prototype.isError=function(t){return t instanceof o},n.prototype.save=function(){const t=this._reporterState;return{obj:t.obj,pathLen:t.path.length}},n.prototype.restore=function(t){const e=this._reporterState;e.obj=t.obj,e.path=e.path.slice(0,t.pathLen)},n.prototype.enterKey=function(t){return this._reporterState.path.push(t)},n.prototype.exitKey=function(t){const e=this._reporterState;e.path=e.path.slice(0,t-1)},n.prototype.leaveKey=function(t,e,r){const i=this._reporterState;this.exitKey(t),null!==i.obj&&(i.obj[e]=r)},n.prototype.path=function(){return this._reporterState.path.join("/")},n.prototype.enterObject=function(){const t=this._reporterState,e=t.obj;return t.obj={},e},n.prototype.leaveObject=function(t){const e=this._reporterState,r=e.obj;return e.obj=t,r},n.prototype.error=function(t){let e;const r=this._reporterState,i=t instanceof o;if(e=i?t:new o(r.path.map((function(t){return"["+JSON.stringify(t)+"]"})).join(""),t.message||t,t.stack),!r.options.partial)throw e;return i||r.errors.push(e),e},n.prototype.wrapResult=function(t){const e=this._reporterState;return e.options.partial?{result:this.isError(t)?null:t,errors:e.errors}:t},i(o,Error),o.prototype.rethrow=function(t){if(this.message=t+" at: "+(this.path||"(shallow)"),Error.captureStackTrace&&Error.captureStackTrace(this,o),!this.stack)try{throw new Error(this.message)}catch(t){this.stack=t.stack}return this}},160:(t,e)=>{"use strict";function r(t){const e={};return Object.keys(t).forEach((function(r){(0|r)==r&&(r|=0);const i=t[r];e[i]=r})),e}e.tagClass={0:"universal",1:"application",2:"context",3:"private"},e.tagClassByName=r(e.tagClass),e.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"},e.tagByName=r(e.tag)},6826:(t,e,r)=>{"use strict";const i=e;i._reverse=function(t){const e={};return Object.keys(t).forEach((function(r){(0|r)==r&&(r|=0);const i=t[r];e[i]=r})),e},i.der=r(160)},1671:(t,e,r)=>{"use strict";const i=r(5717),n=r(4590),o=r(6625).C,s=r(1949),a=r(160);function h(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new u,this.tree._init(t.body)}function u(t){s.call(this,"der",t)}function c(t,e){let r=t.readUInt8(e);if(t.isError(r))return r;const i=a.tagClass[r>>6],n=0==(32&r);if(31==(31&r)){let i=r;for(r=0;128==(128&i);){if(i=t.readUInt8(e),t.isError(i))return i;r<<=7,r|=127&i}}else r&=31;return{cls:i,primitive:n,tag:r,tagStr:a.tag[r]}}function l(t,e,r){let i=t.readUInt8(r);if(t.isError(i))return i;if(!e&&128===i)return null;if(0==(128&i))return i;const n=127&i;if(n>4)return t.error("length octect is too long");i=0;for(let e=0;e{"use strict";const i=e;i.der=r(1671),i.pem=r(9631)},9631:(t,e,r)=>{"use strict";const i=r(5717),n=r(2399).Buffer,o=r(1671);function s(t){o.call(this,t),this.enc="pem"}i(s,o),t.exports=s,s.prototype.decode=function(t,e){const r=t.toString().split(/[\r\n]+/g),i=e.label.toUpperCase(),s=/^-----(BEGIN|END) ([^-]+)-----$/;let a=-1,h=-1;for(let t=0;t{"use strict";const i=r(5717),n=r(2399).Buffer,o=r(1949),s=r(160);function a(t){this.enc="der",this.name=t.name,this.entity=t,this.tree=new h,this.tree._init(t.body)}function h(t){o.call(this,"der",t)}function u(t){return t<10?"0"+t:t}t.exports=a,a.prototype.encode=function(t,e){return this.tree._encode(t,e).join()},i(h,o),h.prototype._encodeComposite=function(t,e,r,i){const o=function(t,e,r,i){let n;if("seqof"===t?t="seq":"setof"===t&&(t="set"),s.tagByName.hasOwnProperty(t))n=s.tagByName[t];else{if("number"!=typeof t||(0|t)!==t)return i.error("Unknown tag: "+t);n=t}return n>=31?i.error("Multi-octet tag encoding unsupported"):(e||(n|=32),n|=s.tagClassByName[r||"universal"]<<6,n)}(t,e,r,this.reporter);if(i.length<128){const t=n.alloc(2);return t[0]=o,t[1]=i.length,this._createEncoderBuffer([t,i])}let a=1;for(let t=i.length;t>=256;t>>=8)a++;const h=n.alloc(2+a);h[0]=o,h[1]=128|a;for(let t=1+a,e=i.length;e>0;t--,e>>=8)h[t]=255&e;return this._createEncoderBuffer([h,i])},h.prototype._encodeStr=function(t,e){if("bitstr"===e)return this._createEncoderBuffer([0|t.unused,t.data]);if("bmpstr"===e){const e=n.alloc(2*t.length);for(let r=0;r=40)return this.reporter.error("Second objid identifier OOB");t.splice(0,2,40*t[0]+t[1])}let i=0;for(let e=0;e=128;r>>=7)i++}const o=n.alloc(i);let s=o.length-1;for(let e=t.length-1;e>=0;e--){let r=t[e];for(o[s--]=127&r;(r>>=7)>0;)o[s--]=128|127&r}return this._createEncoderBuffer(o)},h.prototype._encodeTime=function(t,e){let r;const i=new Date(t);return"gentime"===e?r=[u(i.getUTCFullYear()),u(i.getUTCMonth()+1),u(i.getUTCDate()),u(i.getUTCHours()),u(i.getUTCMinutes()),u(i.getUTCSeconds()),"Z"].join(""):"utctime"===e?r=[u(i.getUTCFullYear()%100),u(i.getUTCMonth()+1),u(i.getUTCDate()),u(i.getUTCHours()),u(i.getUTCMinutes()),u(i.getUTCSeconds()),"Z"].join(""):this.reporter.error("Encoding "+e+" time is not supported yet"),this._encodeStr(r,"octstr")},h.prototype._encodeNull=function(){return this._createEncoderBuffer("")},h.prototype._encodeInt=function(t,e){if("string"==typeof t){if(!e)return this.reporter.error("String int or enum given, but no values map");if(!e.hasOwnProperty(t))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(t));t=e[t]}if("number"!=typeof t&&!n.isBuffer(t)){const e=t.toArray();!t.sign&&128&e[0]&&e.unshift(0),t=n.from(e)}if(n.isBuffer(t)){let e=t.length;0===t.length&&e++;const r=n.alloc(e);return t.copy(r),0===t.length&&(r[0]=0),this._createEncoderBuffer(r)}if(t<128)return this._createEncoderBuffer(t);if(t<256)return this._createEncoderBuffer([0,t]);let r=1;for(let e=t;e>=256;e>>=8)r++;const i=new Array(r);for(let e=i.length-1;e>=0;e--)i[e]=255&t,t>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(n.from(i))},h.prototype._encodeBool=function(t){return this._createEncoderBuffer(t?255:0)},h.prototype._use=function(t,e){return"function"==typeof t&&(t=t(e)),t._getEncoder("der").tree},h.prototype._skipDefault=function(t,e,r){const i=this._baseState;let n;if(null===i.default)return!1;const o=t.join();if(void 0===i.defaultBuffer&&(i.defaultBuffer=this._encodeValue(i.default,e,r).join()),o.length!==i.defaultBuffer.length)return!1;for(n=0;n{"use strict";const i=e;i.der=r(6984),i.pem=r(2883)},2883:(t,e,r)=>{"use strict";const i=r(5717),n=r(6984);function o(t){n.call(this,t),this.enc="pem"}i(o,n),t.exports=o,o.prototype.encode=function(t,e){const r=n.prototype.encode.call(this,t).toString("base64"),i=["-----BEGIN "+e.label+"-----"];for(let t=0;t=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,c=r;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,d=Math.min(u,e.length-1),f=Math.max(0,u-t.length+1);f<=d;f++){var A=u-f|0;c+=(s=(n=0|t.words[A])*(o=0|e.words[f])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|c}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?c[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=l[t],f=d[t];r="";var A=this.clone();for(A.negative=0;!A.isZero();){var g=A.modn(f).toString(t);r=(A=A.idivn(f)).isZero()?g+r:c[u-g.length]+g+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),c=this.clone();if(h){for(a=0;!c.isZero();a++)s=c.andln(255),c.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],A=8191&f,g=f>>>13,M=0|s[2],B=8191&M,w=M>>>13,E=0|s[3],p=8191&E,m=E>>>13,y=0|s[4],b=8191&y,Q=y>>>13,I=0|s[5],C=8191&I,D=I>>>13,N=0|s[6],v=8191&N,G=N>>>13,R=0|s[7],Y=8191&R,U=R>>>13,V=0|s[8],T=8191&V,S=V>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,H=j>>>13,z=0|a[1],x=8191&z,O=z>>>13,W=0|a[2],J=8191&W,X=W>>>13,K=0|a[3],P=8191&K,_=K>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ct=0|a[8],lt=8191&ct,dt=ct>>>13,ft=0|a[9],At=8191&ft,gt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(l,Z))|0)+((8191&(n=(n=Math.imul(l,H))+Math.imul(d,Z)|0))<<13)|0;u=((o=Math.imul(d,H))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(A,Z),n=(n=Math.imul(A,H))+Math.imul(g,Z)|0,o=Math.imul(g,H);var Bt=(u+(i=i+Math.imul(l,x)|0)|0)+((8191&(n=(n=n+Math.imul(l,O)|0)+Math.imul(d,x)|0))<<13)|0;u=((o=o+Math.imul(d,O)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(B,Z),n=(n=Math.imul(B,H))+Math.imul(w,Z)|0,o=Math.imul(w,H),i=i+Math.imul(A,x)|0,n=(n=n+Math.imul(A,O)|0)+Math.imul(g,x)|0,o=o+Math.imul(g,O)|0;var wt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(d,J)|0))<<13)|0;u=((o=o+Math.imul(d,X)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,H))+Math.imul(m,Z)|0,o=Math.imul(m,H),i=i+Math.imul(B,x)|0,n=(n=n+Math.imul(B,O)|0)+Math.imul(w,x)|0,o=o+Math.imul(w,O)|0,i=i+Math.imul(A,J)|0,n=(n=n+Math.imul(A,X)|0)+Math.imul(g,J)|0,o=o+Math.imul(g,X)|0;var Et=(u+(i=i+Math.imul(l,P)|0)|0)+((8191&(n=(n=n+Math.imul(l,_)|0)+Math.imul(d,P)|0))<<13)|0;u=((o=o+Math.imul(d,_)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,H))+Math.imul(Q,Z)|0,o=Math.imul(Q,H),i=i+Math.imul(p,x)|0,n=(n=n+Math.imul(p,O)|0)+Math.imul(m,x)|0,o=o+Math.imul(m,O)|0,i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,X)|0)+Math.imul(w,J)|0,o=o+Math.imul(w,X)|0,i=i+Math.imul(A,P)|0,n=(n=n+Math.imul(A,_)|0)+Math.imul(g,P)|0,o=o+Math.imul(g,_)|0;var pt=(u+(i=i+Math.imul(l,$)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(d,$)|0))<<13)|0;u=((o=o+Math.imul(d,tt)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,H))+Math.imul(D,Z)|0,o=Math.imul(D,H),i=i+Math.imul(b,x)|0,n=(n=n+Math.imul(b,O)|0)+Math.imul(Q,x)|0,o=o+Math.imul(Q,O)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0,i=i+Math.imul(B,P)|0,n=(n=n+Math.imul(B,_)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,_)|0,i=i+Math.imul(A,$)|0,n=(n=n+Math.imul(A,tt)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,tt)|0;var mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(d,rt)|0))<<13)|0;u=((o=o+Math.imul(d,it)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(v,Z),n=(n=Math.imul(v,H))+Math.imul(G,Z)|0,o=Math.imul(G,H),i=i+Math.imul(C,x)|0,n=(n=n+Math.imul(C,O)|0)+Math.imul(D,x)|0,o=o+Math.imul(D,O)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(Q,J)|0,o=o+Math.imul(Q,X)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,_)|0)+Math.imul(m,P)|0,o=o+Math.imul(m,_)|0,i=i+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(A,rt)|0,n=(n=n+Math.imul(A,it)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0;var yt=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(d,ot)|0))<<13)|0;u=((o=o+Math.imul(d,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Y,Z),n=(n=Math.imul(Y,H))+Math.imul(U,Z)|0,o=Math.imul(U,H),i=i+Math.imul(v,x)|0,n=(n=n+Math.imul(v,O)|0)+Math.imul(G,x)|0,o=o+Math.imul(G,O)|0,i=i+Math.imul(C,J)|0,n=(n=n+Math.imul(C,X)|0)+Math.imul(D,J)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,_)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,_)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0,i=i+Math.imul(B,rt)|0,n=(n=n+Math.imul(B,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(A,ot)|0,n=(n=n+Math.imul(A,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var bt=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(d,ht)|0))<<13)|0;u=((o=o+Math.imul(d,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,H))+Math.imul(S,Z)|0,o=Math.imul(S,H),i=i+Math.imul(Y,x)|0,n=(n=n+Math.imul(Y,O)|0)+Math.imul(U,x)|0,o=o+Math.imul(U,O)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(G,J)|0,o=o+Math.imul(G,X)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,_)|0)+Math.imul(D,P)|0,o=o+Math.imul(D,_)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0,i=i+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(A,ht)|0,n=(n=n+Math.imul(A,ut)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,ut)|0;var Qt=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,dt)|0)+Math.imul(d,lt)|0))<<13)|0;u=((o=o+Math.imul(d,dt)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,H))+Math.imul(L,Z)|0,o=Math.imul(L,H),i=i+Math.imul(T,x)|0,n=(n=n+Math.imul(T,O)|0)+Math.imul(S,x)|0,o=o+Math.imul(S,O)|0,i=i+Math.imul(Y,J)|0,n=(n=n+Math.imul(Y,X)|0)+Math.imul(U,J)|0,o=o+Math.imul(U,X)|0,i=i+Math.imul(v,P)|0,n=(n=n+Math.imul(v,_)|0)+Math.imul(G,P)|0,o=o+Math.imul(G,_)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0,i=i+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(A,lt)|0,n=(n=n+Math.imul(A,dt)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,dt)|0;var It=(u+(i=i+Math.imul(l,At)|0)|0)+((8191&(n=(n=n+Math.imul(l,gt)|0)+Math.imul(d,At)|0))<<13)|0;u=((o=o+Math.imul(d,gt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,x),n=(n=Math.imul(F,O))+Math.imul(L,x)|0,o=Math.imul(L,O),i=i+Math.imul(T,J)|0,n=(n=n+Math.imul(T,X)|0)+Math.imul(S,J)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(Y,P)|0,n=(n=n+Math.imul(Y,_)|0)+Math.imul(U,P)|0,o=o+Math.imul(U,_)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(G,$)|0,o=o+Math.imul(G,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(D,rt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0,i=i+Math.imul(B,lt)|0,n=(n=n+Math.imul(B,dt)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,dt)|0;var Ct=(u+(i=i+Math.imul(A,At)|0)|0)+((8191&(n=(n=n+Math.imul(A,gt)|0)+Math.imul(g,At)|0))<<13)|0;u=((o=o+Math.imul(g,gt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,X))+Math.imul(L,J)|0,o=Math.imul(L,X),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,_)|0)+Math.imul(S,P)|0,o=o+Math.imul(S,_)|0,i=i+Math.imul(Y,$)|0,n=(n=n+Math.imul(Y,tt)|0)+Math.imul(U,$)|0,o=o+Math.imul(U,tt)|0,i=i+Math.imul(v,rt)|0,n=(n=n+Math.imul(v,it)|0)+Math.imul(G,rt)|0,o=o+Math.imul(G,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,dt)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,dt)|0;var Dt=(u+(i=i+Math.imul(B,At)|0)|0)+((8191&(n=(n=n+Math.imul(B,gt)|0)+Math.imul(w,At)|0))<<13)|0;u=((o=o+Math.imul(w,gt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,_))+Math.imul(L,P)|0,o=Math.imul(L,_),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(S,$)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(Y,rt)|0,n=(n=n+Math.imul(Y,it)|0)+Math.imul(U,rt)|0,o=o+Math.imul(U,it)|0,i=i+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,st)|0)+Math.imul(G,ot)|0,o=o+Math.imul(G,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,dt)|0)+Math.imul(Q,lt)|0,o=o+Math.imul(Q,dt)|0;var Nt=(u+(i=i+Math.imul(p,At)|0)|0)+((8191&(n=(n=n+Math.imul(p,gt)|0)+Math.imul(m,At)|0))<<13)|0;u=((o=o+Math.imul(m,gt)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(Y,ot)|0,n=(n=n+Math.imul(Y,st)|0)+Math.imul(U,ot)|0,o=o+Math.imul(U,st)|0,i=i+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(G,ht)|0,o=o+Math.imul(G,ut)|0,i=i+Math.imul(C,lt)|0,n=(n=n+Math.imul(C,dt)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,dt)|0;var vt=(u+(i=i+Math.imul(b,At)|0)|0)+((8191&(n=(n=n+Math.imul(b,gt)|0)+Math.imul(Q,At)|0))<<13)|0;u=((o=o+Math.imul(Q,gt)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(Y,ht)|0,n=(n=n+Math.imul(Y,ut)|0)+Math.imul(U,ht)|0,o=o+Math.imul(U,ut)|0,i=i+Math.imul(v,lt)|0,n=(n=n+Math.imul(v,dt)|0)+Math.imul(G,lt)|0,o=o+Math.imul(G,dt)|0;var Gt=(u+(i=i+Math.imul(C,At)|0)|0)+((8191&(n=(n=n+Math.imul(C,gt)|0)+Math.imul(D,At)|0))<<13)|0;u=((o=o+Math.imul(D,gt)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,ut)|0,i=i+Math.imul(Y,lt)|0,n=(n=n+Math.imul(Y,dt)|0)+Math.imul(U,lt)|0,o=o+Math.imul(U,dt)|0;var Rt=(u+(i=i+Math.imul(v,At)|0)|0)+((8191&(n=(n=n+Math.imul(v,gt)|0)+Math.imul(G,At)|0))<<13)|0;u=((o=o+Math.imul(G,gt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,lt)|0,n=(n=n+Math.imul(T,dt)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,dt)|0;var Yt=(u+(i=i+Math.imul(Y,At)|0)|0)+((8191&(n=(n=n+Math.imul(Y,gt)|0)+Math.imul(U,At)|0))<<13)|0;u=((o=o+Math.imul(U,gt)|0)+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(F,lt),n=(n=Math.imul(F,dt))+Math.imul(L,lt)|0,o=Math.imul(L,dt);var Ut=(u+(i=i+Math.imul(T,At)|0)|0)+((8191&(n=(n=n+Math.imul(T,gt)|0)+Math.imul(S,At)|0))<<13)|0;u=((o=o+Math.imul(S,gt)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863;var Vt=(u+(i=Math.imul(F,At))|0)+((8191&(n=(n=Math.imul(F,gt))+Math.imul(L,At)|0))<<13)|0;return u=((o=Math.imul(L,gt))+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,h[0]=Mt,h[1]=Bt,h[2]=wt,h[3]=Et,h[4]=pt,h[5]=mt,h[6]=yt,h[7]=bt,h[8]=Qt,h[9]=It,h[10]=Ct,h[11]=Dt,h[12]=Nt,h[13]=vt,h[14]=Gt,h[15]=Rt,h[16]=Yt,h[17]=Ut,h[18]=Vt,0!==u&&(h[19]=u,r.length++),r};function g(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(A=f),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?A(this,t,e):r<63?f(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):g(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==c||u>=n);u--){var l=0|this.words[u];this.words[u]=c<<26-o|l>>>o,c=l&a}return h&&0!==c&&(h.words[h.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var d=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(n,d,l);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=d)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var c=r.clone(),l=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(c),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var A=0,g=1;0==(r.words[0]&g)&&A<26;++A,g<<=1);if(A>0)for(r.iushrn(A);A-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(c),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,c=1;0==(e.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,d=1;0==(r.words[0]&d)&&l<26;++l,d<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var B={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function E(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function p(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function m(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function Q(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(E,w),E.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},E.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(B[t])return B[t];var e;if("k256"===t)e=new E;else if("p224"===t)e=new p;else if("p192"===t)e=new m;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return B[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);0!==this.pow(c,u).cmp(h);)c.redIAdd(h);for(var l=this.pow(c,n),d=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),A=s;0!==f.cmp(a);){for(var g=f,M=0;0!==g.cmp(a);M++)g=g.redSqr();i(M=0;i--){for(var u=e.words[i],c=h-1;c>=0;c--){var l=u>>c&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4==++a||0===i&&0===c)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new Q(t)},n(Q,b),Q.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},Q.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},Q.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},Q.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},Q.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},9282:(t,e,r)=>{"use strict";var i=r(4155);function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var o,s,a=r(2136).codes,h=a.ERR_AMBIGUOUS_ARGUMENT,u=a.ERR_INVALID_ARG_TYPE,c=a.ERR_INVALID_ARG_VALUE,l=a.ERR_INVALID_RETURN_VALUE,d=a.ERR_MISSING_ARGS,f=r(5961),A=r(9539).inspect,g=r(9539).types,M=g.isPromise,B=g.isRegExp,w=Object.assign?Object.assign:r(8091).assign,E=Object.is?Object.is:r(609);function p(){var t=r(9158);o=t.isDeepEqual,s=t.isDeepStrictEqual}new Map;var m=!1,y=t.exports=C,b={};function Q(t){if(t.message instanceof Error)throw t.message;throw new f(t)}function I(t,e,r,i){if(!r){var n=!1;if(0===e)n=!0,i="No value argument passed to `assert.ok()`";else if(i instanceof Error)throw i;var o=new f({actual:r,expected:!0,message:i,operator:"==",stackStartFn:t});throw o.generatedMessage=n,o}}function C(){for(var t=arguments.length,e=new Array(t),r=0;r1?r-1:0),n=1;n1?r-1:0),n=1;n1?r-1:0),n=1;n1?r-1:0),n=1;n{"use strict";var i=r(4155);function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){for(var r=0;rt.length)&&(r=t.length),t.substring(r-e.length,r)===e}var B="",w="",E="",p="",m={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"};function y(t){var e=Object.keys(t),r=Object.create(Object.getPrototypeOf(t));return e.forEach((function(e){r[e]=t[e]})),Object.defineProperty(r,"message",{value:t.message}),r}function b(t){return A(t,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}var Q=function(t){function e(t){var r;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),"object"!==f(t)||null===t)throw new g("options","Object",t);var n=t.message,o=t.operator,h=t.stackStartFn,u=t.actual,c=t.expected,l=Error.stackTraceLimit;if(Error.stackTraceLimit=0,null!=n)r=s(this,d(e).call(this,String(n)));else if(i.stderr&&i.stderr.isTTY&&(i.stderr&&i.stderr.getColorDepth&&1!==i.stderr.getColorDepth()?(B="",w="",p="",E=""):(B="",w="",p="",E="")),"object"===f(u)&&null!==u&&"object"===f(c)&&null!==c&&"stack"in u&&u instanceof Error&&"stack"in c&&c instanceof Error&&(u=y(u),c=y(c)),"deepStrictEqual"===o||"strictEqual"===o)r=s(this,d(e).call(this,function(t,e,r){var n="",o="",s=0,a="",h=!1,u=b(t),c=u.split("\n"),l=b(e).split("\n"),d=0,A="";if("strictEqual"===r&&"object"===f(t)&&"object"===f(e)&&null!==t&&null!==e&&(r="strictEqualObject"),1===c.length&&1===l.length&&c[0]!==l[0]){var g=c[0].length+l[0].length;if(g<=10){if(!("object"===f(t)&&null!==t||"object"===f(e)&&null!==e||0===t&&0===e))return"".concat(m[r],"\n\n")+"".concat(c[0]," !== ").concat(l[0],"\n")}else if("strictEqualObject"!==r&&g<(i.stderr&&i.stderr.isTTY?i.stderr.columns:80)){for(;c[0][d]===l[0][d];)d++;d>2&&(A="\n ".concat(function(t,e){if(e=Math.floor(e),0==t.length||0==e)return"";var r=t.length*e;for(e=Math.floor(Math.log(e)/Math.log(2));e;)t+=t,e--;return t+t.substring(0,r-t.length)}(" ",d),"^"),d=0)}}for(var y=c[c.length-1],Q=l[l.length-1];y===Q&&(d++<2?a="\n ".concat(y).concat(a):n=y,c.pop(),l.pop(),0!==c.length&&0!==l.length);)y=c[c.length-1],Q=l[l.length-1];var I=Math.max(c.length,l.length);if(0===I){var C=u.split("\n");if(C.length>30)for(C[26]="".concat(B,"...").concat(p);C.length>27;)C.pop();return"".concat(m.notIdentical,"\n\n").concat(C.join("\n"),"\n")}d>3&&(a="\n".concat(B,"...").concat(p).concat(a),h=!0),""!==n&&(a="\n ".concat(n).concat(a),n="");var D=0,N=m[r]+"\n".concat(w,"+ actual").concat(p," ").concat(E,"- expected").concat(p),v=" ".concat(B,"...").concat(p," Lines skipped");for(d=0;d1&&d>2&&(G>4?(o+="\n".concat(B,"...").concat(p),h=!0):G>3&&(o+="\n ".concat(l[d-2]),D++),o+="\n ".concat(l[d-1]),D++),s=d,n+="\n".concat(E,"-").concat(p," ").concat(l[d]),D++;else if(l.length1&&d>2&&(G>4?(o+="\n".concat(B,"...").concat(p),h=!0):G>3&&(o+="\n ".concat(c[d-2]),D++),o+="\n ".concat(c[d-1]),D++),s=d,o+="\n".concat(w,"+").concat(p," ").concat(c[d]),D++;else{var R=l[d],Y=c[d],U=Y!==R&&(!M(Y,",")||Y.slice(0,-1)!==R);U&&M(R,",")&&R.slice(0,-1)===Y&&(U=!1,Y+=","),U?(G>1&&d>2&&(G>4?(o+="\n".concat(B,"...").concat(p),h=!0):G>3&&(o+="\n ".concat(c[d-2]),D++),o+="\n ".concat(c[d-1]),D++),s=d,o+="\n".concat(w,"+").concat(p," ").concat(Y),n+="\n".concat(E,"-").concat(p," ").concat(R),D+=2):(o+=n,n="",1!==G&&0!==d||(o+="\n ".concat(Y),D++))}if(D>20&&d30)for(Q[26]="".concat(B,"...").concat(p);Q.length>27;)Q.pop();r=1===Q.length?s(this,d(e).call(this,"".concat(A," ").concat(Q[0]))):s(this,d(e).call(this,"".concat(A,"\n\n").concat(Q.join("\n"),"\n")))}else{var I=b(u),C="",D=m[o];"notDeepEqual"===o||"notEqual"===o?(I="".concat(m[o],"\n\n").concat(I)).length>1024&&(I="".concat(I.slice(0,1021),"...")):(C="".concat(b(c)),I.length>512&&(I="".concat(I.slice(0,509),"...")),C.length>512&&(C="".concat(C.slice(0,509),"...")),"deepEqual"===o||"equal"===o?I="".concat(D,"\n\n").concat(I,"\n\nshould equal\n\n"):C=" ".concat(o," ").concat(C)),r=s(this,d(e).call(this,"".concat(I).concat(C)))}return Error.stackTraceLimit=l,r.generatedMessage=!n,Object.defineProperty(a(r),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),r.code="ERR_ASSERTION",r.actual=u,r.expected=c,r.operator=o,Error.captureStackTrace&&Error.captureStackTrace(a(r),h),r.stack,r.name="AssertionError",s(r)}var r,h;return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&l(t,e)}(e,t),r=e,(h=[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:A.custom,value:function(t,e){return A(this,function(t){for(var e=1;e{"use strict";function i(t){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function n(t){return(n=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function o(t,e){return(o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var s,a,h={};function u(t,e,r){r||(r=Error);var s=function(r){function s(r,o,a){var h;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,s),(h=function(t,e){return!e||"object"!==i(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}(this,n(s).call(this,function(t,r,i){return"string"==typeof e?e:e(t,r,i)}(r,o,a)))).code=t,h}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(s,r),s}(r);h[t]=s}function c(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map((function(t){return String(t)})),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}u("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError),u("ERR_INVALID_ARG_TYPE",(function(t,e,n){var o,a,h,u,l;if(void 0===s&&(s=r(9282)),s("string"==typeof t,"'name' must be a string"),"string"==typeof e&&(a="not ",e.substr(0,a.length)===a)?(o="must not be",e=e.replace(/^not /,"")):o="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t," argument"))h="The ".concat(t," ").concat(o," ").concat(c(e,"type"));else{var d=("number"!=typeof l&&(l=0),l+".".length>(u=t).length||-1===u.indexOf(".",l)?"argument":"property");h='The "'.concat(t,'" ').concat(d," ").concat(o," ").concat(c(e,"type"))}return h+". Received type ".concat(i(n))}),TypeError),u("ERR_INVALID_ARG_VALUE",(function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"is invalid";void 0===a&&(a=r(9539));var n=a.inspect(e);return n.length>128&&(n="".concat(n.slice(0,128),"...")),"The argument '".concat(t,"' ").concat(i,". Received ").concat(n)}),TypeError,RangeError),u("ERR_INVALID_RETURN_VALUE",(function(t,e,r){var n;return n=r&&r.constructor&&r.constructor.name?"instance of ".concat(r.constructor.name):"type ".concat(i(r)),"Expected ".concat(t,' to be returned from the "').concat(e,'"')+" function but got ".concat(n,".")}),TypeError),u("ERR_MISSING_ARGS",(function(){for(var t=arguments.length,e=new Array(t),i=0;i0,"At least one arg needs to be specified");var n="The ",o=e.length;switch(e=e.map((function(t){return'"'.concat(t,'"')})),o){case 1:n+="".concat(e[0]," argument");break;case 2:n+="".concat(e[0]," and ").concat(e[1]," arguments");break;default:n+=e.slice(0,o-1).join(", "),n+=", and ".concat(e[o-1]," arguments")}return"".concat(n," must be specified")}),TypeError),t.exports.codes=h},9158:(t,e,r)=>{"use strict";function i(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=[],i=!0,n=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(r.push(s.value),!e||r.length!==e);i=!0);}catch(t){n=!0,o=t}finally{try{i||null==a.return||a.return()}finally{if(n)throw o}}return r}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function n(t){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var o=void 0!==/a/g.flags,s=function(t){var e=[];return t.forEach((function(t){return e.push(t)})),e},a=function(t){var e=[];return t.forEach((function(t,r){return e.push([r,t])})),e},h=Object.is?Object.is:r(609),u=Object.getOwnPropertySymbols?Object.getOwnPropertySymbols:function(){return[]},c=Number.isNaN?Number.isNaN:r(360);function l(t){return t.call.bind(t)}var d=l(Object.prototype.hasOwnProperty),f=l(Object.prototype.propertyIsEnumerable),A=l(Object.prototype.toString),g=r(9539).types,M=g.isAnyArrayBuffer,B=g.isArrayBufferView,w=g.isDate,E=g.isMap,p=g.isRegExp,m=g.isSet,y=g.isNativeError,b=g.isBoxedPrimitive,Q=g.isNumberObject,I=g.isStringObject,C=g.isBooleanObject,D=g.isBigIntObject,N=g.isSymbolObject,v=g.isFloat32Array,G=g.isFloat64Array;function R(t){if(0===t.length||t.length>10)return!0;for(var e=0;e57)return!0}return 10===t.length&&t>=Math.pow(2,32)}function Y(t){return Object.keys(t).filter(R).concat(u(t).filter(Object.prototype.propertyIsEnumerable.bind(t)))}function U(t,e){if(t===e)return 0;for(var r=t.length,i=e.length,n=0,o=Math.min(r,i);n{"use strict";var i=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"];t.exports=function(){for(var t=[],e=0;e{t.exports=r(5267)},5267:(t,e,r)=>{var i=r(8764).Buffer;const n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",o=(t,e)=>[Math.floor(t/e),t%e];t.exports={encode:t=>{"string"==typeof t&&(t=i.from(t));let e="";for(let r=0;r1){const i=(t[r]<<8)+t[r+1],[s,a]=o(i,2025),[h,u]=o(a,45);e+=n[u]+n[h]+n[s]}else{const[i,s]=o(t[r],45);e+=n[s]+n[i]}return e},decode:t=>{const e=Array.from(t).map((t=>n.indexOf(t))),r=[];for(let t=0;t=3){const i=e[t]+45*e[t+1]+45*e[t+2]*45;if(i>65535)throw new Error("Invalid base45 string");r.push(...o(i,256))}else{const i=e[t]+45*e[t+1];if(i>255)throw new Error("Invalid base45 string");r.push(i)}return i.from(r)}}},9742:(t,e)=>{"use strict";e.byteLength=function(t){var e=h(t),r=e[0],i=e[1];return 3*(r+i)/4-i},e.toByteArray=function(t){var e,r,o=h(t),s=o[0],a=o[1],u=new n(function(t,e,r){return 3*(e+r)/4-r}(0,s,a)),c=0,l=a>0?s-4:s;for(r=0;r>16&255,u[c++]=e>>8&255,u[c++]=255&e;return 2===a&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,u[c++]=255&e),1===a&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,u[c++]=e>>8&255,u[c++]=255&e),u},e.fromByteArray=function(t){for(var e,i=t.length,n=i%3,o=[],s=16383,a=0,h=i-n;ah?h:a+s));return 1===n?(e=t[i-1],o.push(r[e>>2]+r[e<<4&63]+"==")):2===n&&(e=(t[i-2]<<8)+t[i-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),o.join("")};for(var r=[],i=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,a=o.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,i){for(var n,o,s=[],a=e;a>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},4431:function(t,e,r){var i;!function(n){"use strict";var o,s=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,a=Math.ceil,h=Math.floor,u="[BigNumber Error] ",c=u+"Number primitive has more than 15 significant digits: ",l=1e14,d=14,f=9007199254740991,A=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],g=1e7,M=1e9;function B(t){var e=0|t;return t>0||t===e?e:e-1}function w(t){for(var e,r,i=1,n=t.length,o=t[0]+"";iu^r?1:-1;for(a=(h=n.length)<(u=o.length)?h:u,s=0;so[s]^r?1:-1;return h==u?0:h>u^r?1:-1}function p(t,e,r,i){if(tr||t!==h(t))throw Error(u+(i||"Argument")+("number"==typeof t?tr?" out of range: ":" not an integer: ":" not a primitive number: ")+String(t))}function m(t){var e=t.c.length-1;return B(t.e/d)==e&&t.c[e]%2!=0}function y(t,e){return(t.length>1?t.charAt(0)+"."+t.slice(1):t)+(e<0?"e":"e+")+e}function b(t,e,r){var i,n;if(e<0){for(n=r+".";++e;n+=r);t=n+t}else if(++e>(i=t.length)){for(n=r,e-=i;--e;n+=r);t+=n}else ek?B.c=B.e=null:t.e=10;l/=10,u++);return void(u>k?B.c=B.e=null:(B.e=u,B.c=[t]))}M=String(t)}else{if(!s.test(M=String(t)))return n(B,M,A);B.s=45==M.charCodeAt(0)?(M=M.slice(1),-1):1}(u=M.indexOf("."))>-1&&(M=M.replace(".","")),(l=M.search(/e/i))>0?(u<0&&(u=l),u+=+M.slice(l+1),M=M.substring(0,l)):u<0&&(u=M.length)}else{if(p(e,2,H.length,"Base"),10==e)return J(B=new z(t),Y+B.e+1,U);if(M=String(t),A="number"==typeof t){if(0*t!=0)return n(B,M,A,e);if(B.s=1/t<0?(M=M.slice(1),-1):1,z.DEBUG&&M.replace(/^0\.0*|\./,"").length>15)throw Error(c+t)}else B.s=45===M.charCodeAt(0)?(M=M.slice(1),-1):1;for(r=H.slice(0,e),u=l=0,g=M.length;lu){u=g;continue}}else if(!a&&(M==M.toUpperCase()&&(M=M.toLowerCase())||M==M.toLowerCase()&&(M=M.toUpperCase()))){a=!0,l=-1,u=0;continue}return n(B,String(t),A,e)}A=!1,(u=(M=i(M,e,10,B.s)).indexOf("."))>-1?M=M.replace(".",""):u=M.length}for(l=0;48===M.charCodeAt(l);l++);for(g=M.length;48===M.charCodeAt(--g););if(M=M.slice(l,++g)){if(g-=l,A&&z.DEBUG&&g>15&&(t>f||t!==h(t)))throw Error(c+B.s*t);if((u=u-l-1)>k)B.c=B.e=null;else if(u=T)?y(h,s):b(h,s,"0");else if(o=(t=J(new z(t),e,r)).e,a=(h=w(t.c)).length,1==i||2==i&&(e<=o||o<=V)){for(;aa){if(--e>0)for(h+=".";e--;h+="0");}else if((e+=o-a)>0)for(o+1==a&&(h+=".");e--;h+="0");return t.s<0&&n?"-"+h:h}function O(t,e){for(var r,i=1,n=new z(t[0]);i=10;n/=10,i++);return(r=i+r*d-1)>k?t.c=t.e=null:r=10;u/=10,n++);if((o=e-n)<0)o+=d,s=e,g=(c=M[f=0])/B[n-s-1]%10|0;else if((f=a((o+1)/d))>=M.length){if(!i)break t;for(;M.length<=f;M.push(0));c=g=0,n=1,s=(o%=d)-d+1}else{for(c=u=M[f],n=1;u>=10;u/=10,n++);g=(s=(o%=d)-d+n)<0?0:c/B[n-s-1]%10|0}if(i=i||e<0||null!=M[f+1]||(s<0?c:c%B[n-s-1]),i=r<4?(g||i)&&(0==r||r==(t.s<0?3:2)):g>5||5==g&&(4==r||i||6==r&&(o>0?s>0?c/B[n-s]:0:M[f-1])%10&1||r==(t.s<0?8:7)),e<1||!M[0])return M.length=0,i?(e-=t.e+1,M[0]=B[(d-e%d)%d],t.e=-e||0):M[0]=t.e=0,t;if(0==o?(M.length=f,u=1,f--):(M.length=f+1,u=B[d-o],M[f]=s>0?h(c/B[n-s]%B[s])*u:0),i)for(;;){if(0==f){for(o=1,s=M[0];s>=10;s/=10,o++);for(s=M[0]+=u,u=1;s>=10;s/=10,u++);o!=u&&(t.e++,M[0]==l&&(M[0]=1));break}if(M[f]+=u,M[f]!=l)break;M[f--]=0,u=1}for(o=M.length;0===M[--o];M.pop());}t.e>k?t.c=t.e=null:t.e=T?y(e,r):b(e,r,"0"),t.s<0?"-"+e:e)}return z.clone=t,z.ROUND_UP=0,z.ROUND_DOWN=1,z.ROUND_CEIL=2,z.ROUND_FLOOR=3,z.ROUND_HALF_UP=4,z.ROUND_HALF_DOWN=5,z.ROUND_HALF_EVEN=6,z.ROUND_HALF_CEIL=7,z.ROUND_HALF_FLOOR=8,z.EUCLID=9,z.config=z.set=function(t){var e,r;if(null!=t){if("object"!=typeof t)throw Error(u+"Object expected: "+t);if(t.hasOwnProperty(e="DECIMAL_PLACES")&&(p(r=t[e],0,M,e),Y=r),t.hasOwnProperty(e="ROUNDING_MODE")&&(p(r=t[e],0,8,e),U=r),t.hasOwnProperty(e="EXPONENTIAL_AT")&&((r=t[e])&&r.pop?(p(r[0],-M,0,e),p(r[1],0,M,e),V=r[0],T=r[1]):(p(r,-M,M,e),V=-(T=r<0?-r:r))),t.hasOwnProperty(e="RANGE"))if((r=t[e])&&r.pop)p(r[0],-M,-1,e),p(r[1],1,M,e),S=r[0],k=r[1];else{if(p(r,-M,M,e),!r)throw Error(u+e+" cannot be zero: "+r);S=-(k=r<0?-r:r)}if(t.hasOwnProperty(e="CRYPTO")){if((r=t[e])!==!!r)throw Error(u+e+" not true or false: "+r);if(r){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw F=!r,Error(u+"crypto unavailable");F=r}else F=r}if(t.hasOwnProperty(e="MODULO_MODE")&&(p(r=t[e],0,9,e),L=r),t.hasOwnProperty(e="POW_PRECISION")&&(p(r=t[e],0,M,e),j=r),t.hasOwnProperty(e="FORMAT")){if("object"!=typeof(r=t[e]))throw Error(u+e+" not an object: "+r);Z=r}if(t.hasOwnProperty(e="ALPHABET")){if("string"!=typeof(r=t[e])||/^.?$|[+\-.\s]|(.).*\1/.test(r))throw Error(u+e+" invalid: "+r);H=r}}return{DECIMAL_PLACES:Y,ROUNDING_MODE:U,EXPONENTIAL_AT:[V,T],RANGE:[S,k],CRYPTO:F,MODULO_MODE:L,POW_PRECISION:j,FORMAT:Z,ALPHABET:H}},z.isBigNumber=function(t){if(!t||!0!==t._isBigNumber)return!1;if(!z.DEBUG)return!0;var e,r,i=t.c,n=t.e,o=t.s;t:if("[object Array]"=={}.toString.call(i)){if((1===o||-1===o)&&n>=-M&&n<=M&&n===h(n)){if(0===i[0]){if(0===n&&1===i.length)return!0;break t}if((e=(n+1)%d)<1&&(e+=d),String(i[0]).length==e){for(e=0;e=l||r!==h(r))break t;if(0!==r)return!0}}}else if(null===i&&null===n&&(null===o||1===o||-1===o))return!0;throw Error(u+"Invalid BigNumber: "+t)},z.maximum=z.max=function(){return O(arguments,G.lt)},z.minimum=z.min=function(){return O(arguments,G.gt)},z.random=(o=9007199254740992,Q=Math.random()*o&2097151?function(){return h(Math.random()*o)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(t){var e,r,i,n,o,s=0,c=[],l=new z(R);if(null==t?t=Y:p(t,0,M),n=a(t/d),F)if(crypto.getRandomValues){for(e=crypto.getRandomValues(new Uint32Array(n*=2));s>>11))>=9e15?(r=crypto.getRandomValues(new Uint32Array(2)),e[s]=r[0],e[s+1]=r[1]):(c.push(o%1e14),s+=2);s=n/2}else{if(!crypto.randomBytes)throw F=!1,Error(u+"crypto unavailable");for(e=crypto.randomBytes(n*=7);s=9e15?crypto.randomBytes(7).copy(e,s):(c.push(o%1e14),s+=7);s=n/7}if(!F)for(;s=10;o/=10,s++);sr-1&&(null==s[n+1]&&(s[n+1]=0),s[n+1]+=s[n]/r|0,s[n]%=r)}return s.reverse()}return function(i,n,o,s,a){var h,u,c,l,d,f,A,g,M=i.indexOf("."),B=Y,E=U;for(M>=0&&(l=j,j=0,i=i.replace(".",""),f=(g=new z(n)).pow(i.length-M),j=l,g.c=e(b(w(f.c),f.e,"0"),10,o,t),g.e=g.c.length),c=l=(A=e(i,n,o,a?(h=H,t):(h=t,H))).length;0==A[--l];A.pop());if(!A[0])return h.charAt(0);if(M<0?--c:(f.c=A,f.e=c,f.s=s,A=(f=r(f,g,B,E,o)).c,d=f.r,c=f.e),M=A[u=c+B+1],l=o/2,d=d||u<0||null!=A[u+1],d=E<4?(null!=M||d)&&(0==E||E==(f.s<0?3:2)):M>l||M==l&&(4==E||d||6==E&&1&A[u-1]||E==(f.s<0?8:7)),u<1||!A[0])i=d?b(h.charAt(1),-B,h.charAt(0)):h.charAt(0);else{if(A.length=u,d)for(--o;++A[--u]>o;)A[u]=0,u||(++c,A=[1].concat(A));for(l=A.length;!A[--l];);for(M=0,i="";M<=l;i+=h.charAt(A[M++]));i=b(i,c,h.charAt(0))}return i}}(),r=function(){function t(t,e,r){var i,n,o,s,a=0,h=t.length,u=e%g,c=e/g|0;for(t=t.slice();h--;)a=((n=u*(o=t[h]%g)+(i=c*o+(s=t[h]/g|0)*u)%g*g+a)/r|0)+(i/g|0)+c*s,t[h]=n%r;return a&&(t=[a].concat(t)),t}function e(t,e,r,i){var n,o;if(r!=i)o=r>i?1:-1;else for(n=o=0;ne[n]?1:-1;break}return o}function r(t,e,r,i){for(var n=0;r--;)t[r]-=n,n=t[r]1;t.splice(0,1));}return function(i,n,o,s,a){var u,c,f,A,g,M,w,E,p,m,y,b,Q,I,C,D,N,v=i.s==n.s?1:-1,G=i.c,R=n.c;if(!(G&&G[0]&&R&&R[0]))return new z(i.s&&n.s&&(G?!R||G[0]!=R[0]:R)?G&&0==G[0]||!R?0*v:v/0:NaN);for(p=(E=new z(v)).c=[],v=o+(c=i.e-n.e)+1,a||(a=l,c=B(i.e/d)-B(n.e/d),v=v/d|0),f=0;R[f]==(G[f]||0);f++);if(R[f]>(G[f]||0)&&c--,v<0)p.push(1),A=!0;else{for(I=G.length,D=R.length,f=0,v+=2,(g=h(a/(R[0]+1)))>1&&(R=t(R,g,a),G=t(G,g,a),D=R.length,I=G.length),Q=D,y=(m=G.slice(0,D)).length;y=a/2&&C++;do{if(g=0,(u=e(R,m,D,y))<0){if(b=m[0],D!=y&&(b=b*a+(m[1]||0)),(g=h(b/C))>1)for(g>=a&&(g=a-1),w=(M=t(R,g,a)).length,y=m.length;1==e(M,m,w,y);)g--,r(M,D=10;v/=10,f++);J(E,o+(E.e=f+c*d-1)+1,s,A)}else E.e=c,E.r=+A;return E}}(),I=/^(-?)0([xbo])(?=\w[\w.]*$)/i,C=/^([^.]+)\.$/,D=/^\.([^.]+)$/,N=/^-?(Infinity|NaN)$/,v=/^\s*\+(?=[\w.])|^\s+|\s+$/g,n=function(t,e,r,i){var n,o=r?e:e.replace(v,"");if(N.test(o))t.s=isNaN(o)?null:o<0?-1:1;else{if(!r&&(o=o.replace(I,(function(t,e,r){return n="x"==(r=r.toLowerCase())?16:"b"==r?2:8,i&&i!=n?t:e})),i&&(n=i,o=o.replace(C,"$1").replace(D,"0.$1")),e!=o))return new z(o,n);if(z.DEBUG)throw Error(u+"Not a"+(i?" base "+i:"")+" number: "+e);t.s=null}t.c=t.e=null},G.absoluteValue=G.abs=function(){var t=new z(this);return t.s<0&&(t.s=1),t},G.comparedTo=function(t,e){return E(this,new z(t,e))},G.decimalPlaces=G.dp=function(t,e){var r,i,n,o=this;if(null!=t)return p(t,0,M),null==e?e=U:p(e,0,8),J(new z(o),t+o.e+1,e);if(!(r=o.c))return null;if(i=((n=r.length-1)-B(this.e/d))*d,n=r[n])for(;n%10==0;n/=10,i--);return i<0&&(i=0),i},G.dividedBy=G.div=function(t,e){return r(this,new z(t,e),Y,U)},G.dividedToIntegerBy=G.idiv=function(t,e){return r(this,new z(t,e),0,1)},G.exponentiatedBy=G.pow=function(t,e){var r,i,n,o,s,c,l,f,A=this;if((t=new z(t)).c&&!t.isInteger())throw Error(u+"Exponent not an integer: "+X(t));if(null!=e&&(e=new z(e)),s=t.e>14,!A.c||!A.c[0]||1==A.c[0]&&!A.e&&1==A.c.length||!t.c||!t.c[0])return f=new z(Math.pow(+X(A),s?2-m(t):+X(t))),e?f.mod(e):f;if(c=t.s<0,e){if(e.c?!e.c[0]:!e.s)return new z(NaN);(i=!c&&A.isInteger()&&e.isInteger())&&(A=A.mod(e))}else{if(t.e>9&&(A.e>0||A.e<-1||(0==A.e?A.c[0]>1||s&&A.c[1]>=24e7:A.c[0]<8e13||s&&A.c[0]<=9999975e7)))return o=A.s<0&&m(t)?-0:0,A.e>-1&&(o=1/o),new z(c?1/o:o);j&&(o=a(j/d+2))}for(s?(r=new z(.5),c&&(t.s=1),l=m(t)):l=(n=Math.abs(+X(t)))%2,f=new z(R);;){if(l){if(!(f=f.times(A)).c)break;o?f.c.length>o&&(f.c.length=o):i&&(f=f.mod(e))}if(n){if(0===(n=h(n/2)))break;l=n%2}else if(J(t=t.times(r),t.e+1,1),t.e>14)l=m(t);else{if(0==(n=+X(t)))break;l=n%2}A=A.times(A),o?A.c&&A.c.length>o&&(A.c.length=o):i&&(A=A.mod(e))}return i?f:(c&&(f=R.div(f)),e?f.mod(e):o?J(f,j,U,void 0):f)},G.integerValue=function(t){var e=new z(this);return null==t?t=U:p(t,0,8),J(e,e.e+1,t)},G.isEqualTo=G.eq=function(t,e){return 0===E(this,new z(t,e))},G.isFinite=function(){return!!this.c},G.isGreaterThan=G.gt=function(t,e){return E(this,new z(t,e))>0},G.isGreaterThanOrEqualTo=G.gte=function(t,e){return 1===(e=E(this,new z(t,e)))||0===e},G.isInteger=function(){return!!this.c&&B(this.e/d)>this.c.length-2},G.isLessThan=G.lt=function(t,e){return E(this,new z(t,e))<0},G.isLessThanOrEqualTo=G.lte=function(t,e){return-1===(e=E(this,new z(t,e)))||0===e},G.isNaN=function(){return!this.s},G.isNegative=function(){return this.s<0},G.isPositive=function(){return this.s>0},G.isZero=function(){return!!this.c&&0==this.c[0]},G.minus=function(t,e){var r,i,n,o,s=this,a=s.s;if(e=(t=new z(t,e)).s,!a||!e)return new z(NaN);if(a!=e)return t.s=-e,s.plus(t);var h=s.e/d,u=t.e/d,c=s.c,f=t.c;if(!h||!u){if(!c||!f)return c?(t.s=-e,t):new z(f?s:NaN);if(!c[0]||!f[0])return f[0]?(t.s=-e,t):new z(c[0]?s:3==U?-0:0)}if(h=B(h),u=B(u),c=c.slice(),a=h-u){for((o=a<0)?(a=-a,n=c):(u=h,n=f),n.reverse(),e=a;e--;n.push(0));n.reverse()}else for(i=(o=(a=c.length)<(e=f.length))?a:e,a=e=0;e0)for(;e--;c[r++]=0);for(e=l-1;i>a;){if(c[--i]=0;){for(r=0,A=b[n]%p,M=b[n]/p|0,o=n+(s=h);o>n;)r=((u=A*(u=y[--s]%p)+(a=M*u+(c=y[s]/p|0)*A)%p*p+w[o]+r)/E|0)+(a/p|0)+M*c,w[o--]=u%E;w[o]=r}return r?++i:w.splice(0,1),W(t,w,i)},G.negated=function(){var t=new z(this);return t.s=-t.s||null,t},G.plus=function(t,e){var r,i=this,n=i.s;if(e=(t=new z(t,e)).s,!n||!e)return new z(NaN);if(n!=e)return t.s=-e,i.minus(t);var o=i.e/d,s=t.e/d,a=i.c,h=t.c;if(!o||!s){if(!a||!h)return new z(n/0);if(!a[0]||!h[0])return h[0]?t:new z(a[0]?i:0*n)}if(o=B(o),s=B(s),a=a.slice(),n=o-s){for(n>0?(s=o,r=h):(n=-n,r=a),r.reverse();n--;r.push(0));r.reverse()}for((n=a.length)-(e=h.length)<0&&(r=h,h=a,a=r,e=n),n=0;e;)n=(a[--e]=a[e]+h[e]+n)/l|0,a[e]=l===a[e]?0:a[e]%l;return n&&(a=[n].concat(a),++s),W(t,a,s)},G.precision=G.sd=function(t,e){var r,i,n,o=this;if(null!=t&&t!==!!t)return p(t,1,M),null==e?e=U:p(e,0,8),J(new z(o),t,e);if(!(r=o.c))return null;if(i=(n=r.length-1)*d+1,n=r[n]){for(;n%10==0;n/=10,i--);for(n=r[0];n>=10;n/=10,i++);}return t&&o.e+1>i&&(i=o.e+1),i},G.shiftedBy=function(t){return p(t,-9007199254740991,f),this.times("1e"+t)},G.squareRoot=G.sqrt=function(){var t,e,i,n,o,s=this,a=s.c,h=s.s,u=s.e,c=Y+4,l=new z("0.5");if(1!==h||!a||!a[0])return new z(!h||h<0&&(!a||a[0])?NaN:a?s:1/0);if(0==(h=Math.sqrt(+X(s)))||h==1/0?(((e=w(a)).length+u)%2==0&&(e+="0"),h=Math.sqrt(+e),u=B((u+1)/2)-(u<0||u%2),i=new z(e=h==1/0?"5e"+u:(e=h.toExponential()).slice(0,e.indexOf("e")+1)+u)):i=new z(h+""),i.c[0])for((h=(u=i.e)+c)<3&&(h=0);;)if(o=i,i=l.times(o.plus(r(s,o,c,1))),w(o.c).slice(0,h)===(e=w(i.c)).slice(0,h)){if(i.e0&&g>0){for(o=g%a||a,l=A.substr(0,o);o0&&(l+=c+A.slice(o)),f&&(l="-"+l)}i=d?l+(r.decimalSeparator||"")+((h=+r.fractionGroupSize)?d.replace(new RegExp("\\d{"+h+"}\\B","g"),"$&"+(r.fractionGroupSeparator||"")):d):l}return(r.prefix||"")+i+(r.suffix||"")},G.toFraction=function(t){var e,i,n,o,s,a,h,c,l,f,g,M,B=this,E=B.c;if(null!=t&&(!(h=new z(t)).isInteger()&&(h.c||1!==h.s)||h.lt(R)))throw Error(u+"Argument "+(h.isInteger()?"out of range: ":"not an integer: ")+X(h));if(!E)return new z(B);for(e=new z(R),l=i=new z(R),n=c=new z(R),M=w(E),s=e.e=M.length-B.e-1,e.c[0]=A[(a=s%d)<0?d+a:a],t=!t||h.comparedTo(e)>0?s>0?e:l:h,a=k,k=1/0,h=new z(M),c.c[0]=0;f=r(h,e,0,1),1!=(o=i.plus(f.times(n))).comparedTo(t);)i=n,n=o,l=c.plus(f.times(o=l)),c=o,e=h.minus(f.times(o=e)),h=o;return o=r(t.minus(i),n,0,1),c=c.plus(o.times(l)),i=i.plus(o.times(n)),c.s=l.s=B.s,g=r(l,n,s*=2,U).minus(B).abs().comparedTo(r(c,i,s,U).minus(B).abs())<1?[l,n]:[c,i],k=a,g},G.toNumber=function(){return+X(this)},G.toPrecision=function(t,e){return null!=t&&p(t,1,M),x(this,t,e,2)},G.toString=function(t){var e,r=this,n=r.s,o=r.e;return null===o?n?(e="Infinity",n<0&&(e="-"+e)):e="NaN":(null==t?e=o<=V||o>=T?y(w(r.c),o):b(w(r.c),o,"0"):10===t?e=b(w((r=J(new z(r),Y+o+1,U)).c),r.e,"0"):(p(t,2,H.length,"Base"),e=i(b(w(r.c),o,"0"),10,t,n,!0)),n<0&&r.c[0]&&(e="-"+e)),e},G.valueOf=G.toJSON=function(){return X(this)},G._isBigNumber=!0,null!=e&&z.set(e),z}()).default=o.BigNumber=o,void 0===(i=function(){return o}.call(e,r,e,t))||(t.exports=i)}()},3550:function(t,e,r){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(6601).Buffer}catch(t){}function a(t,e){var r=t.charCodeAt(e);return r>=48&&r<=57?r-48:r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:void i(!1,"Invalid character in "+t)}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,n){for(var o=0,s=0,a=Math.min(t.length,r),h=e;h=49?u-49+10:u>=17?u-17+10:u,i(u>=0&&s0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this._strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this._strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,c=r;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=l}catch(t){o.prototype.inspect=l}else o.prototype.inspect=l;function l(){return(this.red?""}var d=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],A=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function g(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,d=Math.min(u,e.length-1),f=Math.max(0,u-t.length+1);f<=d;f++){var A=u-f|0;c+=(s=(n=0|t.words[A])*(o=0|e.words[f])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|c}return 0!==h?r.words[u]=0|h:r.length--,r._strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?d[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=f[t],c=A[t];r="";var l=this.clone();for(l.negative=0;!l.isZero();){var g=l.modrn(c).toString(t);r=(l=l.idivn(c)).isZero()?g+r:d[u-g.length]+g+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16,2)},s&&(o.prototype.toBuffer=function(t,e){return this.toArrayLike(s,t,e)}),o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){this._strip();var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0");var s=function(t,e){return t.allocUnsafe?t.allocUnsafe(e):new t(e)}(t,o);return this["_toArrayLike"+("le"===e?"LE":"BE")](s,n),s},o.prototype._toArrayLikeLE=function(t,e){for(var r=0,i=0,n=0,o=0;n>8&255),r>16&255),6===o?(r>24&255),i=0,o=0):(i=s>>>24,o+=2)}if(r=0&&(t[r--]=s>>8&255),r>=0&&(t[r--]=s>>16&255),6===o?(r>=0&&(t[r--]=s>>24&255),i=0,o=0):(i=s>>>24,o+=2)}if(r>=0)for(t[r--]=i;r>=0;)t[r--]=0},Math.clz32?o.prototype._countBits=function(t){return 32-Math.clz32(t)}:o.prototype._countBits=function(t){var e=t,r=0;return e>=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this._strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],A=8191&f,g=f>>>13,M=0|s[2],B=8191&M,w=M>>>13,E=0|s[3],p=8191&E,m=E>>>13,y=0|s[4],b=8191&y,Q=y>>>13,I=0|s[5],C=8191&I,D=I>>>13,N=0|s[6],v=8191&N,G=N>>>13,R=0|s[7],Y=8191&R,U=R>>>13,V=0|s[8],T=8191&V,S=V>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,H=j>>>13,z=0|a[1],x=8191&z,O=z>>>13,W=0|a[2],J=8191&W,X=W>>>13,K=0|a[3],P=8191&K,_=K>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ct=0|a[8],lt=8191&ct,dt=ct>>>13,ft=0|a[9],At=8191&ft,gt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(l,Z))|0)+((8191&(n=(n=Math.imul(l,H))+Math.imul(d,Z)|0))<<13)|0;u=((o=Math.imul(d,H))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(A,Z),n=(n=Math.imul(A,H))+Math.imul(g,Z)|0,o=Math.imul(g,H);var Bt=(u+(i=i+Math.imul(l,x)|0)|0)+((8191&(n=(n=n+Math.imul(l,O)|0)+Math.imul(d,x)|0))<<13)|0;u=((o=o+Math.imul(d,O)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(B,Z),n=(n=Math.imul(B,H))+Math.imul(w,Z)|0,o=Math.imul(w,H),i=i+Math.imul(A,x)|0,n=(n=n+Math.imul(A,O)|0)+Math.imul(g,x)|0,o=o+Math.imul(g,O)|0;var wt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(d,J)|0))<<13)|0;u=((o=o+Math.imul(d,X)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,H))+Math.imul(m,Z)|0,o=Math.imul(m,H),i=i+Math.imul(B,x)|0,n=(n=n+Math.imul(B,O)|0)+Math.imul(w,x)|0,o=o+Math.imul(w,O)|0,i=i+Math.imul(A,J)|0,n=(n=n+Math.imul(A,X)|0)+Math.imul(g,J)|0,o=o+Math.imul(g,X)|0;var Et=(u+(i=i+Math.imul(l,P)|0)|0)+((8191&(n=(n=n+Math.imul(l,_)|0)+Math.imul(d,P)|0))<<13)|0;u=((o=o+Math.imul(d,_)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,H))+Math.imul(Q,Z)|0,o=Math.imul(Q,H),i=i+Math.imul(p,x)|0,n=(n=n+Math.imul(p,O)|0)+Math.imul(m,x)|0,o=o+Math.imul(m,O)|0,i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,X)|0)+Math.imul(w,J)|0,o=o+Math.imul(w,X)|0,i=i+Math.imul(A,P)|0,n=(n=n+Math.imul(A,_)|0)+Math.imul(g,P)|0,o=o+Math.imul(g,_)|0;var pt=(u+(i=i+Math.imul(l,$)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(d,$)|0))<<13)|0;u=((o=o+Math.imul(d,tt)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,H))+Math.imul(D,Z)|0,o=Math.imul(D,H),i=i+Math.imul(b,x)|0,n=(n=n+Math.imul(b,O)|0)+Math.imul(Q,x)|0,o=o+Math.imul(Q,O)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0,i=i+Math.imul(B,P)|0,n=(n=n+Math.imul(B,_)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,_)|0,i=i+Math.imul(A,$)|0,n=(n=n+Math.imul(A,tt)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,tt)|0;var mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(d,rt)|0))<<13)|0;u=((o=o+Math.imul(d,it)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(v,Z),n=(n=Math.imul(v,H))+Math.imul(G,Z)|0,o=Math.imul(G,H),i=i+Math.imul(C,x)|0,n=(n=n+Math.imul(C,O)|0)+Math.imul(D,x)|0,o=o+Math.imul(D,O)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(Q,J)|0,o=o+Math.imul(Q,X)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,_)|0)+Math.imul(m,P)|0,o=o+Math.imul(m,_)|0,i=i+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(A,rt)|0,n=(n=n+Math.imul(A,it)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0;var yt=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(d,ot)|0))<<13)|0;u=((o=o+Math.imul(d,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Y,Z),n=(n=Math.imul(Y,H))+Math.imul(U,Z)|0,o=Math.imul(U,H),i=i+Math.imul(v,x)|0,n=(n=n+Math.imul(v,O)|0)+Math.imul(G,x)|0,o=o+Math.imul(G,O)|0,i=i+Math.imul(C,J)|0,n=(n=n+Math.imul(C,X)|0)+Math.imul(D,J)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,_)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,_)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0,i=i+Math.imul(B,rt)|0,n=(n=n+Math.imul(B,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(A,ot)|0,n=(n=n+Math.imul(A,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var bt=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(d,ht)|0))<<13)|0;u=((o=o+Math.imul(d,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,H))+Math.imul(S,Z)|0,o=Math.imul(S,H),i=i+Math.imul(Y,x)|0,n=(n=n+Math.imul(Y,O)|0)+Math.imul(U,x)|0,o=o+Math.imul(U,O)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(G,J)|0,o=o+Math.imul(G,X)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,_)|0)+Math.imul(D,P)|0,o=o+Math.imul(D,_)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0,i=i+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(A,ht)|0,n=(n=n+Math.imul(A,ut)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,ut)|0;var Qt=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,dt)|0)+Math.imul(d,lt)|0))<<13)|0;u=((o=o+Math.imul(d,dt)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,H))+Math.imul(L,Z)|0,o=Math.imul(L,H),i=i+Math.imul(T,x)|0,n=(n=n+Math.imul(T,O)|0)+Math.imul(S,x)|0,o=o+Math.imul(S,O)|0,i=i+Math.imul(Y,J)|0,n=(n=n+Math.imul(Y,X)|0)+Math.imul(U,J)|0,o=o+Math.imul(U,X)|0,i=i+Math.imul(v,P)|0,n=(n=n+Math.imul(v,_)|0)+Math.imul(G,P)|0,o=o+Math.imul(G,_)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0,i=i+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(A,lt)|0,n=(n=n+Math.imul(A,dt)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,dt)|0;var It=(u+(i=i+Math.imul(l,At)|0)|0)+((8191&(n=(n=n+Math.imul(l,gt)|0)+Math.imul(d,At)|0))<<13)|0;u=((o=o+Math.imul(d,gt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,x),n=(n=Math.imul(F,O))+Math.imul(L,x)|0,o=Math.imul(L,O),i=i+Math.imul(T,J)|0,n=(n=n+Math.imul(T,X)|0)+Math.imul(S,J)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(Y,P)|0,n=(n=n+Math.imul(Y,_)|0)+Math.imul(U,P)|0,o=o+Math.imul(U,_)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(G,$)|0,o=o+Math.imul(G,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(D,rt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0,i=i+Math.imul(B,lt)|0,n=(n=n+Math.imul(B,dt)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,dt)|0;var Ct=(u+(i=i+Math.imul(A,At)|0)|0)+((8191&(n=(n=n+Math.imul(A,gt)|0)+Math.imul(g,At)|0))<<13)|0;u=((o=o+Math.imul(g,gt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,X))+Math.imul(L,J)|0,o=Math.imul(L,X),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,_)|0)+Math.imul(S,P)|0,o=o+Math.imul(S,_)|0,i=i+Math.imul(Y,$)|0,n=(n=n+Math.imul(Y,tt)|0)+Math.imul(U,$)|0,o=o+Math.imul(U,tt)|0,i=i+Math.imul(v,rt)|0,n=(n=n+Math.imul(v,it)|0)+Math.imul(G,rt)|0,o=o+Math.imul(G,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,dt)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,dt)|0;var Dt=(u+(i=i+Math.imul(B,At)|0)|0)+((8191&(n=(n=n+Math.imul(B,gt)|0)+Math.imul(w,At)|0))<<13)|0;u=((o=o+Math.imul(w,gt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,_))+Math.imul(L,P)|0,o=Math.imul(L,_),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(S,$)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(Y,rt)|0,n=(n=n+Math.imul(Y,it)|0)+Math.imul(U,rt)|0,o=o+Math.imul(U,it)|0,i=i+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,st)|0)+Math.imul(G,ot)|0,o=o+Math.imul(G,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,dt)|0)+Math.imul(Q,lt)|0,o=o+Math.imul(Q,dt)|0;var Nt=(u+(i=i+Math.imul(p,At)|0)|0)+((8191&(n=(n=n+Math.imul(p,gt)|0)+Math.imul(m,At)|0))<<13)|0;u=((o=o+Math.imul(m,gt)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(Y,ot)|0,n=(n=n+Math.imul(Y,st)|0)+Math.imul(U,ot)|0,o=o+Math.imul(U,st)|0,i=i+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(G,ht)|0,o=o+Math.imul(G,ut)|0,i=i+Math.imul(C,lt)|0,n=(n=n+Math.imul(C,dt)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,dt)|0;var vt=(u+(i=i+Math.imul(b,At)|0)|0)+((8191&(n=(n=n+Math.imul(b,gt)|0)+Math.imul(Q,At)|0))<<13)|0;u=((o=o+Math.imul(Q,gt)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(Y,ht)|0,n=(n=n+Math.imul(Y,ut)|0)+Math.imul(U,ht)|0,o=o+Math.imul(U,ut)|0,i=i+Math.imul(v,lt)|0,n=(n=n+Math.imul(v,dt)|0)+Math.imul(G,lt)|0,o=o+Math.imul(G,dt)|0;var Gt=(u+(i=i+Math.imul(C,At)|0)|0)+((8191&(n=(n=n+Math.imul(C,gt)|0)+Math.imul(D,At)|0))<<13)|0;u=((o=o+Math.imul(D,gt)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,ut)|0,i=i+Math.imul(Y,lt)|0,n=(n=n+Math.imul(Y,dt)|0)+Math.imul(U,lt)|0,o=o+Math.imul(U,dt)|0;var Rt=(u+(i=i+Math.imul(v,At)|0)|0)+((8191&(n=(n=n+Math.imul(v,gt)|0)+Math.imul(G,At)|0))<<13)|0;u=((o=o+Math.imul(G,gt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,lt)|0,n=(n=n+Math.imul(T,dt)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,dt)|0;var Yt=(u+(i=i+Math.imul(Y,At)|0)|0)+((8191&(n=(n=n+Math.imul(Y,gt)|0)+Math.imul(U,At)|0))<<13)|0;u=((o=o+Math.imul(U,gt)|0)+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(F,lt),n=(n=Math.imul(F,dt))+Math.imul(L,lt)|0,o=Math.imul(L,dt);var Ut=(u+(i=i+Math.imul(T,At)|0)|0)+((8191&(n=(n=n+Math.imul(T,gt)|0)+Math.imul(S,At)|0))<<13)|0;u=((o=o+Math.imul(S,gt)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863;var Vt=(u+(i=Math.imul(F,At))|0)+((8191&(n=(n=Math.imul(F,gt))+Math.imul(L,At)|0))<<13)|0;return u=((o=Math.imul(L,gt))+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,h[0]=Mt,h[1]=Bt,h[2]=wt,h[3]=Et,h[4]=pt,h[5]=mt,h[6]=yt,h[7]=bt,h[8]=Qt,h[9]=It,h[10]=Ct,h[11]=Dt,h[12]=Nt,h[13]=vt,h[14]=Gt,h[15]=Rt,h[16]=Yt,h[17]=Ut,h[18]=Vt,0!==u&&(h[19]=u,r.length++),r};function B(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r._strip()}function w(t,e,r){return B(t,e,r)}function E(t,e){this.x=t,this.y=e}Math.imul||(M=g),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?M(this,t,e):r<63?g(this,t,e):r<1024?B(this,t,e):w(this,t,e)},E.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},E.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,r+=o/67108864|0,r+=s>>>26,this.words[n]=67108863&s}return 0!==r&&(this.words[n]=r,this.length++),e?this.ineg():this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n&1}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==c||u>=n);u--){var l=0|this.words[u];this.words[u]=c<<26-o|l>>>o,c=l&a}return h&&0!==c&&(h.words[h.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this._strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this._strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var d=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(n,d,l);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=d)}return a&&a._strip(),i._strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modrn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modrn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modrn=function(t){var e=t<0;e&&(t=-t),i(t<=67108863);for(var r=(1<<26)%t,n=0,o=this.length-1;o>=0;o--)n=(r*n+(0|this.words[o]))%t;return e?-n:n},o.prototype.modn=function(t){return this.modrn(t)},o.prototype.idivn=function(t){var e=t<0;e&&(t=-t),i(t<=67108863);for(var r=0,n=this.length-1;n>=0;n--){var o=(0|this.words[n])+67108864*r;this.words[n]=o/t|0,r=o%t}return this._strip(),e?this.ineg():this},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var c=r.clone(),l=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(c),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var A=0,g=1;0==(r.words[0]&g)&&A<26;++A,g<<=1);if(A>0)for(r.iushrn(A);A-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(c),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,c=1;0==(e.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,d=1;0==(r.words[0]&d)&&l<26;++l,d<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this._strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new C(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var p={k256:null,p224:null,p192:null,p25519:null};function m(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function y(){m.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function b(){m.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function Q(){m.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function I(){m.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function C(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function D(t){C.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}m.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},m.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},m.prototype.split=function(t,e){t.iushrn(this.n,0,e)},m.prototype.imulK=function(t){return t.imul(this.k)},n(y,m),y.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},y.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(p[t])return p[t];var e;if("k256"===t)e=new y;else if("p224"===t)e=new b;else if("p192"===t)e=new Q;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new I}return p[t]=e,e},C.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},C.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},C.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):(c(t,t.umod(this.m)._forceRed(this)),t)},C.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},C.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},C.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},C.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},C.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},C.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},C.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},C.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},C.prototype.isqr=function(t){return this.imul(t,t.clone())},C.prototype.sqr=function(t){return this.mul(t,t)},C.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);0!==this.pow(c,u).cmp(h);)c.redIAdd(h);for(var l=this.pow(c,n),d=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),A=s;0!==f.cmp(a);){for(var g=f,M=0;0!==g.cmp(a);M++)g=g.redSqr();i(M=0;i--){for(var u=e.words[i],c=h-1;c>=0;c--){var l=u>>c&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4==++a||0===i&&0===c)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},C.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},C.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new D(t)},n(D,C),D.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},D.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},D.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},D.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},D.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},9931:(t,e,r)=>{var i;function n(t){this.rand=t}if(t.exports=function(t){return i||(i=new n(null)),i.generate(t)},t.exports.Rand=n,n.prototype.generate=function(t){return this._rand(t)},n.prototype._rand=function(t){if(this.rand.getBytes)return this.rand.getBytes(t);for(var e=new Uint8Array(t),r=0;r{var i=r(9509).Buffer;function n(t){i.isBuffer(t)||(t=i.from(t));for(var e=t.length/4|0,r=new Array(e),n=0;n>>24]^c[A>>>16&255]^l[g>>>8&255]^d[255&M]^e[B++],s=u[A>>>24]^c[g>>>16&255]^l[M>>>8&255]^d[255&f]^e[B++],a=u[g>>>24]^c[M>>>16&255]^l[f>>>8&255]^d[255&A]^e[B++],h=u[M>>>24]^c[f>>>16&255]^l[A>>>8&255]^d[255&g]^e[B++],f=o,A=s,g=a,M=h;return o=(i[f>>>24]<<24|i[A>>>16&255]<<16|i[g>>>8&255]<<8|i[255&M])^e[B++],s=(i[A>>>24]<<24|i[g>>>16&255]<<16|i[M>>>8&255]<<8|i[255&f])^e[B++],a=(i[g>>>24]<<24|i[M>>>16&255]<<16|i[f>>>8&255]<<8|i[255&A])^e[B++],h=(i[M>>>24]<<24|i[f>>>16&255]<<16|i[A>>>8&255]<<8|i[255&g])^e[B++],[o>>>=0,s>>>=0,a>>>=0,h>>>=0]}var a=[0,1,2,4,8,16,32,64,128,27,54],h=function(){for(var t=new Array(256),e=0;e<256;e++)t[e]=e<128?e<<1:e<<1^283;for(var r=[],i=[],n=[[],[],[],[]],o=[[],[],[],[]],s=0,a=0,h=0;h<256;++h){var u=a^a<<1^a<<2^a<<3^a<<4;u=u>>>8^255&u^99,r[s]=u,i[u]=s;var c=t[s],l=t[c],d=t[l],f=257*t[u]^16843008*u;n[0][s]=f<<24|f>>>8,n[1][s]=f<<16|f>>>16,n[2][s]=f<<8|f>>>24,n[3][s]=f,f=16843009*d^65537*l^257*c^16843008*s,o[0][u]=f<<24|f>>>8,o[1][u]=f<<16|f>>>16,o[2][u]=f<<8|f>>>24,o[3][u]=f,0===s?s=a=1:(s=c^t[t[t[d^c]]],a^=t[t[a]])}return{SBOX:r,INV_SBOX:i,SUB_MIX:n,INV_SUB_MIX:o}}();function u(t){this._key=n(t),this._reset()}u.blockSize=16,u.keySize=32,u.prototype.blockSize=u.blockSize,u.prototype.keySize=u.keySize,u.prototype._reset=function(){for(var t=this._key,e=t.length,r=e+6,i=4*(r+1),n=[],o=0;o>>24,s=h.SBOX[s>>>24]<<24|h.SBOX[s>>>16&255]<<16|h.SBOX[s>>>8&255]<<8|h.SBOX[255&s],s^=a[o/e|0]<<24):e>6&&o%e==4&&(s=h.SBOX[s>>>24]<<24|h.SBOX[s>>>16&255]<<16|h.SBOX[s>>>8&255]<<8|h.SBOX[255&s]),n[o]=n[o-e]^s}for(var u=[],c=0;c>>24]]^h.INV_SUB_MIX[1][h.SBOX[d>>>16&255]]^h.INV_SUB_MIX[2][h.SBOX[d>>>8&255]]^h.INV_SUB_MIX[3][h.SBOX[255&d]]}this._nRounds=r,this._keySchedule=n,this._invKeySchedule=u},u.prototype.encryptBlockRaw=function(t){return s(t=n(t),this._keySchedule,h.SUB_MIX,h.SBOX,this._nRounds)},u.prototype.encryptBlock=function(t){var e=this.encryptBlockRaw(t),r=i.allocUnsafe(16);return r.writeUInt32BE(e[0],0),r.writeUInt32BE(e[1],4),r.writeUInt32BE(e[2],8),r.writeUInt32BE(e[3],12),r},u.prototype.decryptBlock=function(t){var e=(t=n(t))[1];t[1]=t[3],t[3]=e;var r=s(t,this._invKeySchedule,h.INV_SUB_MIX,h.INV_SBOX,this._nRounds),o=i.allocUnsafe(16);return o.writeUInt32BE(r[0],0),o.writeUInt32BE(r[3],4),o.writeUInt32BE(r[2],8),o.writeUInt32BE(r[1],12),o},u.prototype.scrub=function(){o(this._keySchedule),o(this._invKeySchedule),o(this._key)},t.exports.AES=u},2422:(t,e,r)=>{var i=r(4497),n=r(9509).Buffer,o=r(1027),s=r(5717),a=r(3288),h=r(7295),u=r(685);function c(t,e,r,s){o.call(this);var h=n.alloc(4,0);this._cipher=new i.AES(e);var c=this._cipher.encryptBlock(h);this._ghash=new a(c),r=function(t,e,r){if(12===e.length)return t._finID=n.concat([e,n.from([0,0,0,1])]),n.concat([e,n.from([0,0,0,2])]);var i=new a(r),o=e.length,s=o%16;i.update(e),s&&(s=16-s,i.update(n.alloc(s,0))),i.update(n.alloc(8,0));var h=8*o,c=n.alloc(8);c.writeUIntBE(h,0,8),i.update(c),t._finID=i.state;var l=n.from(t._finID);return u(l),l}(this,r,c),this._prev=n.from(r),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=s,this._alen=0,this._len=0,this._mode=t,this._authTag=null,this._called=!1}s(c,o),c.prototype._update=function(t){if(!this._called&&this._alen){var e=16-this._alen%16;e<16&&(e=n.alloc(e,0),this._ghash.update(e))}this._called=!0;var r=this._mode.encrypt(this,t);return this._decrypt?this._ghash.update(t):this._ghash.update(r),this._len+=t.length,r},c.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error("Unsupported state or unable to authenticate data");var t=h(this._ghash.final(8*this._alen,8*this._len),this._cipher.encryptBlock(this._finID));if(this._decrypt&&function(t,e){var r=0;t.length!==e.length&&r++;for(var i=Math.min(t.length,e.length),n=0;n{var i=r(1494),n=r(6193),o=r(5415);e.createCipher=e.Cipher=i.createCipher,e.createCipheriv=e.Cipheriv=i.createCipheriv,e.createDecipher=e.Decipher=n.createDecipher,e.createDecipheriv=e.Decipheriv=n.createDecipheriv,e.listCiphers=e.getCiphers=function(){return Object.keys(o)}},6193:(t,e,r)=>{var i=r(2422),n=r(9509).Buffer,o=r(45),s=r(5969),a=r(1027),h=r(4497),u=r(3048);function c(t,e,r){a.call(this),this._cache=new l,this._last=void 0,this._cipher=new h.AES(e),this._prev=n.from(r),this._mode=t,this._autopadding=!0}function l(){this.cache=n.allocUnsafe(0)}function d(t,e,r){var a=o[t.toLowerCase()];if(!a)throw new TypeError("invalid suite type");if("string"==typeof r&&(r=n.from(r)),"GCM"!==a.mode&&r.length!==a.iv)throw new TypeError("invalid iv length "+r.length);if("string"==typeof e&&(e=n.from(e)),e.length!==a.key/8)throw new TypeError("invalid key length "+e.length);return"stream"===a.type?new s(a.module,e,r,!0):"auth"===a.type?new i(a.module,e,r,!0):new c(a.module,e,r)}r(5717)(c,a),c.prototype._update=function(t){var e,r;this._cache.add(t);for(var i=[];e=this._cache.get(this._autopadding);)r=this._mode.decrypt(this,e),i.push(r);return n.concat(i)},c.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return function(t){var e=t[15];if(e<1||e>16)throw new Error("unable to decrypt data");for(var r=-1;++r16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e}else if(this.cache.length>=16)return e=this.cache.slice(0,16),this.cache=this.cache.slice(16),e;return null},l.prototype.flush=function(){if(this.cache.length)return this.cache},e.createDecipher=function(t,e){var r=o[t.toLowerCase()];if(!r)throw new TypeError("invalid suite type");var i=u(e,!1,r.key,r.iv);return d(t,i.key,i.iv)},e.createDecipheriv=d},1494:(t,e,r)=>{var i=r(45),n=r(2422),o=r(9509).Buffer,s=r(5969),a=r(1027),h=r(4497),u=r(3048);function c(t,e,r){a.call(this),this._cache=new d,this._cipher=new h.AES(e),this._prev=o.from(r),this._mode=t,this._autopadding=!0}r(5717)(c,a),c.prototype._update=function(t){var e,r;this._cache.add(t);for(var i=[];e=this._cache.get();)r=this._mode.encrypt(this,e),i.push(r);return o.concat(i)};var l=o.alloc(16,16);function d(){this.cache=o.allocUnsafe(0)}function f(t,e,r){var a=i[t.toLowerCase()];if(!a)throw new TypeError("invalid suite type");if("string"==typeof e&&(e=o.from(e)),e.length!==a.key/8)throw new TypeError("invalid key length "+e.length);if("string"==typeof r&&(r=o.from(r)),"GCM"!==a.mode&&r.length!==a.iv)throw new TypeError("invalid iv length "+r.length);return"stream"===a.type?new s(a.module,e,r):"auth"===a.type?new n(a.module,e,r):new c(a.module,e,r)}c.prototype._final=function(){var t=this._cache.flush();if(this._autopadding)return t=this._mode.encrypt(this,t),this._cipher.scrub(),t;if(!t.equals(l))throw this._cipher.scrub(),new Error("data not multiple of block length")},c.prototype.setAutoPadding=function(t){return this._autopadding=!!t,this},d.prototype.add=function(t){this.cache=o.concat([this.cache,t])},d.prototype.get=function(){if(this.cache.length>15){var t=this.cache.slice(0,16);return this.cache=this.cache.slice(16),t}return null},d.prototype.flush=function(){for(var t=16-this.cache.length,e=o.allocUnsafe(t),r=-1;++r{var i=r(9509).Buffer,n=i.alloc(16,0);function o(t){var e=i.allocUnsafe(16);return e.writeUInt32BE(t[0]>>>0,0),e.writeUInt32BE(t[1]>>>0,4),e.writeUInt32BE(t[2]>>>0,8),e.writeUInt32BE(t[3]>>>0,12),e}function s(t){this.h=t,this.state=i.alloc(16,0),this.cache=i.allocUnsafe(0)}s.prototype.ghash=function(t){for(var e=-1;++e0;e--)i[e]=i[e]>>>1|(1&i[e-1])<<31;i[0]=i[0]>>>1,r&&(i[0]=i[0]^225<<24)}this.state=o(n)},s.prototype.update=function(t){var e;for(this.cache=i.concat([this.cache,t]);this.cache.length>=16;)e=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(e)},s.prototype.final=function(t,e){return this.cache.length&&this.ghash(i.concat([this.cache,n],16)),this.ghash(o([0,t,0,e])),this.state},t.exports=s},685:t=>{t.exports=function(t){for(var e,r=t.length;r--;){if(255!==(e=t.readUInt8(r))){e++,t.writeUInt8(e,r);break}t.writeUInt8(0,r)}}},5292:(t,e,r)=>{var i=r(7295);e.encrypt=function(t,e){var r=i(e,t._prev);return t._prev=t._cipher.encryptBlock(r),t._prev},e.decrypt=function(t,e){var r=t._prev;t._prev=e;var n=t._cipher.decryptBlock(e);return i(n,r)}},6311:(t,e,r)=>{var i=r(9509).Buffer,n=r(7295);function o(t,e,r){var o=e.length,s=n(e,t._cache);return t._cache=t._cache.slice(o),t._prev=i.concat([t._prev,r?e:s]),s}e.encrypt=function(t,e,r){for(var n,s=i.allocUnsafe(0);e.length;){if(0===t._cache.length&&(t._cache=t._cipher.encryptBlock(t._prev),t._prev=i.allocUnsafe(0)),!(t._cache.length<=e.length)){s=i.concat([s,o(t,e,r)]);break}n=t._cache.length,s=i.concat([s,o(t,e.slice(0,n),r)]),e=e.slice(n)}return s}},1510:(t,e,r)=>{var i=r(9509).Buffer;function n(t,e,r){for(var i,n,s=-1,a=0;++s<8;)i=e&1<<7-s?128:0,a+=(128&(n=t._cipher.encryptBlock(t._prev)[0]^i))>>s%8,t._prev=o(t._prev,r?i:n);return a}function o(t,e){var r=t.length,n=-1,o=i.allocUnsafe(t.length);for(t=i.concat([t,i.from([e])]);++n>7;return o}e.encrypt=function(t,e,r){for(var o=e.length,s=i.allocUnsafe(o),a=-1;++a{var i=r(9509).Buffer;function n(t,e,r){var n=t._cipher.encryptBlock(t._prev)[0]^e;return t._prev=i.concat([t._prev.slice(1),i.from([r?e:n])]),n}e.encrypt=function(t,e,r){for(var o=e.length,s=i.allocUnsafe(o),a=-1;++a{var i=r(7295),n=r(9509).Buffer,o=r(685);function s(t){var e=t._cipher.encryptBlockRaw(t._prev);return o(t._prev),e}e.encrypt=function(t,e){var r=Math.ceil(e.length/16),o=t._cache.length;t._cache=n.concat([t._cache,n.allocUnsafe(16*r)]);for(var a=0;a{e.encrypt=function(t,e){return t._cipher.encryptBlock(e)},e.decrypt=function(t,e){return t._cipher.decryptBlock(e)}},45:(t,e,r)=>{var i={ECB:r(1084),CBC:r(5292),CFB:r(6311),CFB8:r(1964),CFB1:r(1510),OFB:r(8861),CTR:r(6009),GCM:r(6009)},n=r(5415);for(var o in n)n[o].module=i[n[o].mode];t.exports=n},5415:t=>{"use strict";t.exports=JSON.parse('{"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}}')},8861:(t,e,r)=>{var i=r(8764).Buffer,n=r(7295);function o(t){return t._prev=t._cipher.encryptBlock(t._prev),t._prev}e.encrypt=function(t,e){for(;t._cache.length{var i=r(4497),n=r(9509).Buffer,o=r(1027);function s(t,e,r,s){o.call(this),this._cipher=new i.AES(e),this._prev=n.from(r),this._cache=n.allocUnsafe(0),this._secCache=n.allocUnsafe(0),this._decrypt=s,this._mode=t}r(5717)(s,o),s.prototype._update=function(t){return this._mode.encrypt(this,t,this._decrypt)},s.prototype._final=function(){this._cipher.scrub()},t.exports=s},3614:(t,e,r)=>{var i=r(7667),n=r(4696),o=r(45),s=r(9715),a=r(3048);function h(t,e,r){if(t=t.toLowerCase(),o[t])return n.createCipheriv(t,e,r);if(s[t])return new i({key:e,iv:r,mode:t});throw new TypeError("invalid suite type")}function u(t,e,r){if(t=t.toLowerCase(),o[t])return n.createDecipheriv(t,e,r);if(s[t])return new i({key:e,iv:r,mode:t,decrypt:!0});throw new TypeError("invalid suite type")}e.createCipher=e.Cipher=function(t,e){var r,i;if(t=t.toLowerCase(),o[t])r=o[t].key,i=o[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");r=8*s[t].key,i=s[t].iv}var n=a(e,!1,r,i);return h(t,n.key,n.iv)},e.createCipheriv=e.Cipheriv=h,e.createDecipher=e.Decipher=function(t,e){var r,i;if(t=t.toLowerCase(),o[t])r=o[t].key,i=o[t].iv;else{if(!s[t])throw new TypeError("invalid suite type");r=8*s[t].key,i=s[t].iv}var n=a(e,!1,r,i);return u(t,n.key,n.iv)},e.createDecipheriv=e.Decipheriv=u,e.listCiphers=e.getCiphers=function(){return Object.keys(s).concat(n.getCiphers())}},7667:(t,e,r)=>{var i=r(1027),n=r(5251),o=r(5717),s=r(9509).Buffer,a={"des-ede3-cbc":n.CBC.instantiate(n.EDE),"des-ede3":n.EDE,"des-ede-cbc":n.CBC.instantiate(n.EDE),"des-ede":n.EDE,"des-cbc":n.CBC.instantiate(n.DES),"des-ecb":n.DES};function h(t){i.call(this);var e,r=t.mode.toLowerCase(),n=a[r];e=t.decrypt?"decrypt":"encrypt";var o=t.key;s.isBuffer(o)||(o=s.from(o)),"des-ede"!==r&&"des-ede-cbc"!==r||(o=s.concat([o,o.slice(0,8)]));var h=t.iv;s.isBuffer(h)||(h=s.from(h)),this._des=n.create({key:o,iv:h,type:e})}a.des=a["des-cbc"],a.des3=a["des-ede3-cbc"],t.exports=h,o(h,i),h.prototype._update=function(t){return s.from(this._des.update(t))},h.prototype._final=function(){return s.from(this._des.final())}},9715:(t,e)=>{e["des-ecb"]={key:8,iv:0},e["des-cbc"]=e.des={key:8,iv:8},e["des-ede3-cbc"]=e.des3={key:24,iv:8},e["des-ede3"]={key:24,iv:0},e["des-ede-cbc"]={key:16,iv:8},e["des-ede"]={key:16,iv:0}},3663:(t,e,r)=>{var i=r(8764).Buffer,n=r(3550),o=r(1798);function s(t){var e,r=t.modulus.byteLength();do{e=new n(o(r))}while(e.cmp(t.modulus)>=0||!e.umod(t.prime1)||!e.umod(t.prime2));return e}function a(t,e){var r=function(t){var e=s(t);return{blinder:e.toRed(n.mont(t.modulus)).redPow(new n(t.publicExponent)).fromRed(),unblinder:e.invm(t.modulus)}}(e),o=e.modulus.byteLength(),a=new n(t).mul(r.blinder).umod(e.modulus),h=a.toRed(n.mont(e.prime1)),u=a.toRed(n.mont(e.prime2)),c=e.coefficient,l=e.prime1,d=e.prime2,f=h.redPow(e.exponent1).fromRed(),A=u.redPow(e.exponent2).fromRed(),g=f.isub(A).imul(c).umod(l).imul(d);return A.iadd(g).imul(r.unblinder).umod(e.modulus).toArrayLike(i,"be",o)}a.getr=s,t.exports=a},6042:(t,e,r)=>{t.exports=r(2063)},2063:t=>{"use strict";t.exports=JSON.parse('{"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}}')},2236:t=>{"use strict";t.exports=JSON.parse('{"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"}')},4743:(t,e,r)=>{var i=r(9509).Buffer,n=r(3482),o=r(8473),s=r(5717),a=r(2957),h=r(7753),u=r(2063);function c(t){o.Writable.call(this);var e=u[t];if(!e)throw new Error("Unknown message digest");this._hashType=e.hash,this._hash=n(e.hash),this._tag=e.id,this._signType=e.sign}function l(t){o.Writable.call(this);var e=u[t];if(!e)throw new Error("Unknown message digest");this._hash=n(e.hash),this._tag=e.id,this._signType=e.sign}function d(t){return new c(t)}function f(t){return new l(t)}Object.keys(u).forEach((function(t){u[t].id=i.from(u[t].id,"hex"),u[t.toLowerCase()]=u[t]})),s(c,o.Writable),c.prototype._write=function(t,e,r){this._hash.update(t),r()},c.prototype.update=function(t,e){return"string"==typeof t&&(t=i.from(t,e)),this._hash.update(t),this},c.prototype.sign=function(t,e){this.end();var r=this._hash.digest(),i=a(r,t,this._hashType,this._signType,this._tag);return e?i.toString(e):i},s(l,o.Writable),l.prototype._write=function(t,e,r){this._hash.update(t),r()},l.prototype.update=function(t,e){return"string"==typeof t&&(t=i.from(t,e)),this._hash.update(t),this},l.prototype.verify=function(t,e,r){"string"==typeof e&&(e=i.from(e,r)),this.end();var n=this._hash.digest();return h(e,n,t,this._signType,this._tag)},t.exports={Sign:d,Verify:f,createSign:d,createVerify:f}},2957:(t,e,r)=>{var i=r(9509).Buffer,n=r(8355),o=r(3663),s=r(6266).ec,a=r(3550),h=r(980),u=r(2236);function c(t,e,r,o){if((t=i.from(t.toArray())).length0&&r.ishrn(i),r}function d(t,e,r){var o,s;do{for(o=i.alloc(0);8*o.length{var i=r(9509).Buffer,n=r(3550),o=r(6266).ec,s=r(980),a=r(2236);function h(t,e){if(t.cmpn(0)<=0)throw new Error("invalid sig");if(t.cmp(e)>=e)throw new Error("invalid sig")}t.exports=function(t,e,r,u,c){var l=s(r);if("ec"===l.type){if("ecdsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");return function(t,e,r){var i=a[r.data.algorithm.curve.join(".")];if(!i)throw new Error("unknown curve "+r.data.algorithm.curve.join("."));var n=new o(i),s=r.data.subjectPrivateKey.data;return n.verify(e,t,s)}(t,e,l)}if("dsa"===l.type){if("dsa"!==u)throw new Error("wrong public key type");return function(t,e,r){var i=r.data.p,o=r.data.q,a=r.data.g,u=r.data.pub_key,c=s.signature.decode(t,"der"),l=c.s,d=c.r;h(l,o),h(d,o);var f=n.mont(i),A=l.invm(o);return 0===a.toRed(f).redPow(new n(e).mul(A).mod(o)).fromRed().mul(u.toRed(f).redPow(d.mul(A).mod(o)).fromRed()).mod(i).mod(o).cmp(d)}(t,e,l)}if("rsa"!==u&&"ecdsa/rsa"!==u)throw new Error("wrong public key type");e=i.concat([c,e]);for(var d=l.modulus.byteLength(),f=[1],A=0;e.length+f.length+2{"use strict";var i=r(8764).Buffer,n=r(4155),o=r(9282),s=r(4860),a=r(2233),h=r(3001),u=r(7162);for(var c in u)e[c]=u[c];function l(t){if("number"!=typeof t||te.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=t,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}e.NONE=0,e.DEFLATE=1,e.INFLATE=2,e.GZIP=3,e.GUNZIP=4,e.DEFLATERAW=5,e.INFLATERAW=6,e.UNZIP=7,l.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,o(this.init_done,"close before init"),o(this.mode<=e.UNZIP),this.mode===e.DEFLATE||this.mode===e.GZIP||this.mode===e.DEFLATERAW?a.deflateEnd(this.strm):this.mode!==e.INFLATE&&this.mode!==e.GUNZIP&&this.mode!==e.INFLATERAW&&this.mode!==e.UNZIP||h.inflateEnd(this.strm),this.mode=e.NONE,this.dictionary=null)},l.prototype.write=function(t,e,r,i,n,o,s){return this._write(!0,t,e,r,i,n,o,s)},l.prototype.writeSync=function(t,e,r,i,n,o,s){return this._write(!1,t,e,r,i,n,o,s)},l.prototype._write=function(t,r,s,a,h,u,c,l){if(o.equal(arguments.length,8),o(this.init_done,"write before init"),o(this.mode!==e.NONE,"already finalized"),o.equal(!1,this.write_in_progress,"write already in progress"),o.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,o.equal(!1,void 0===r,"must provide flush value"),this.write_in_progress=!0,r!==e.Z_NO_FLUSH&&r!==e.Z_PARTIAL_FLUSH&&r!==e.Z_SYNC_FLUSH&&r!==e.Z_FULL_FLUSH&&r!==e.Z_FINISH&&r!==e.Z_BLOCK)throw new Error("Invalid flush value");if(null==s&&(s=i.alloc(0),h=0,a=0),this.strm.avail_in=h,this.strm.input=s,this.strm.next_in=a,this.strm.avail_out=l,this.strm.output=u,this.strm.next_out=c,this.flush=r,!t)return this._process(),this._checkError()?this._afterSync():void 0;var d=this;return n.nextTick((function(){d._process(),d._after()})),this},l.prototype._afterSync=function(){var t=this.strm.avail_out,e=this.strm.avail_in;return this.write_in_progress=!1,[e,t]},l.prototype._process=function(){var t=null;switch(this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:this.err=a.deflate(this.strm,this.flush);break;case e.UNZIP:switch(this.strm.avail_in>0&&(t=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===t)break;if(31!==this.strm.input[t]){this.mode=e.INFLATE;break}if(this.gzip_id_bytes_read=1,t++,1===this.strm.avail_in)break;case 1:if(null===t)break;139===this.strm.input[t]?(this.gzip_id_bytes_read=2,this.mode=e.GUNZIP):this.mode=e.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:for(this.err=h.inflate(this.strm,this.flush),this.err===e.Z_NEED_DICT&&this.dictionary&&(this.err=h.inflateSetDictionary(this.strm,this.dictionary),this.err===e.Z_OK?this.err=h.inflate(this.strm,this.flush):this.err===e.Z_DATA_ERROR&&(this.err=e.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===e.GUNZIP&&this.err===e.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=h.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},l.prototype._checkError=function(){switch(this.err){case e.Z_OK:case e.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===e.Z_FINISH)return this._error("unexpected end of file"),!1;break;case e.Z_STREAM_END:break;case e.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},l.prototype._after=function(){if(this._checkError()){var t=this.strm.avail_out,e=this.strm.avail_in;this.write_in_progress=!1,this.callback(e,t),this.pending_close&&this.close()}},l.prototype._error=function(t){this.strm.msg&&(t=this.strm.msg),this.onerror(t,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},l.prototype.init=function(t,r,i,n,s){o(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),o(t>=8&&t<=15,"invalid windowBits"),o(r>=-1&&r<=9,"invalid compression level"),o(i>=1&&i<=9,"invalid memlevel"),o(n===e.Z_FILTERED||n===e.Z_HUFFMAN_ONLY||n===e.Z_RLE||n===e.Z_FIXED||n===e.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(r,t,i,n,s),this._setDictionary()},l.prototype.params=function(){throw new Error("deflateParams Not supported")},l.prototype.reset=function(){this._reset(),this._setDictionary()},l.prototype._init=function(t,r,i,n,o){switch(this.level=t,this.windowBits=r,this.memLevel=i,this.strategy=n,this.flush=e.Z_NO_FLUSH,this.err=e.Z_OK,this.mode!==e.GZIP&&this.mode!==e.GUNZIP||(this.windowBits+=16),this.mode===e.UNZIP&&(this.windowBits+=32),this.mode!==e.DEFLATERAW&&this.mode!==e.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new s,this.mode){case e.DEFLATE:case e.GZIP:case e.DEFLATERAW:this.err=a.deflateInit2(this.strm,this.level,e.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case e.INFLATE:case e.GUNZIP:case e.INFLATERAW:case e.UNZIP:this.err=h.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==e.Z_OK&&this._error("Init error"),this.dictionary=o,this.write_in_progress=!1,this.init_done=!0},l.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=e.Z_OK,this.mode){case e.DEFLATE:case e.DEFLATERAW:this.err=a.deflateSetDictionary(this.strm,this.dictionary)}this.err!==e.Z_OK&&this._error("Failed to set dictionary")}},l.prototype._reset=function(){switch(this.err=e.Z_OK,this.mode){case e.DEFLATE:case e.DEFLATERAW:case e.GZIP:this.err=a.deflateReset(this.strm);break;case e.INFLATE:case e.INFLATERAW:case e.GUNZIP:this.err=h.inflateReset(this.strm)}this.err!==e.Z_OK&&this._error("Failed to reset stream")},e.Zlib=l},2635:(t,e,r)=>{"use strict";var i=r(4155),n=r(8764).Buffer,o=r(2830).Transform,s=r(4505),a=r(9539),h=r(9282).ok,u=r(8764).kMaxLength,c="Cannot create final Buffer. It would be larger than 0x"+u.toString(16)+" bytes";s.Z_MIN_WINDOWBITS=8,s.Z_MAX_WINDOWBITS=15,s.Z_DEFAULT_WINDOWBITS=15,s.Z_MIN_CHUNK=64,s.Z_MAX_CHUNK=1/0,s.Z_DEFAULT_CHUNK=16384,s.Z_MIN_MEMLEVEL=1,s.Z_MAX_MEMLEVEL=9,s.Z_DEFAULT_MEMLEVEL=8,s.Z_MIN_LEVEL=-1,s.Z_MAX_LEVEL=9,s.Z_DEFAULT_LEVEL=s.Z_DEFAULT_COMPRESSION;for(var l=Object.keys(s),d=0;d=u?s=new RangeError(c):e=n.concat(i,o),i=[],t.close(),r(s,e)}t.on("error",(function(e){t.removeListener("end",a),t.removeListener("readable",s),r(e)})),t.on("end",a),t.end(e),s()}function E(t,e){if("string"==typeof e&&(e=n.from(e)),!n.isBuffer(e))throw new TypeError("Not a string or buffer");var r=t._finishFlushFlag;return t._processChunk(e,r)}function p(t){if(!(this instanceof p))return new p(t);N.call(this,t,s.DEFLATE)}function m(t){if(!(this instanceof m))return new m(t);N.call(this,t,s.INFLATE)}function y(t){if(!(this instanceof y))return new y(t);N.call(this,t,s.GZIP)}function b(t){if(!(this instanceof b))return new b(t);N.call(this,t,s.GUNZIP)}function Q(t){if(!(this instanceof Q))return new Q(t);N.call(this,t,s.DEFLATERAW)}function I(t){if(!(this instanceof I))return new I(t);N.call(this,t,s.INFLATERAW)}function C(t){if(!(this instanceof C))return new C(t);N.call(this,t,s.UNZIP)}function D(t){return t===s.Z_NO_FLUSH||t===s.Z_PARTIAL_FLUSH||t===s.Z_SYNC_FLUSH||t===s.Z_FULL_FLUSH||t===s.Z_FINISH||t===s.Z_BLOCK}function N(t,r){var i=this;if(this._opts=t=t||{},this._chunkSize=t.chunkSize||e.Z_DEFAULT_CHUNK,o.call(this,t),t.flush&&!D(t.flush))throw new Error("Invalid flush flag: "+t.flush);if(t.finishFlush&&!D(t.finishFlush))throw new Error("Invalid flush flag: "+t.finishFlush);if(this._flushFlag=t.flush||s.Z_NO_FLUSH,this._finishFlushFlag=void 0!==t.finishFlush?t.finishFlush:s.Z_FINISH,t.chunkSize&&(t.chunkSizee.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+t.chunkSize);if(t.windowBits&&(t.windowBitse.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+t.windowBits);if(t.level&&(t.levele.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+t.level);if(t.memLevel&&(t.memLevele.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+t.memLevel);if(t.strategy&&t.strategy!=e.Z_FILTERED&&t.strategy!=e.Z_HUFFMAN_ONLY&&t.strategy!=e.Z_RLE&&t.strategy!=e.Z_FIXED&&t.strategy!=e.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+t.strategy);if(t.dictionary&&!n.isBuffer(t.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new s.Zlib(r);var a=this;this._hadError=!1,this._handle.onerror=function(t,r){v(a),a._hadError=!0;var i=new Error(t);i.errno=r,i.code=e.codes[r],a.emit("error",i)};var h=e.Z_DEFAULT_COMPRESSION;"number"==typeof t.level&&(h=t.level);var u=e.Z_DEFAULT_STRATEGY;"number"==typeof t.strategy&&(u=t.strategy),this._handle.init(t.windowBits||e.Z_DEFAULT_WINDOWBITS,h,t.memLevel||e.Z_DEFAULT_MEMLEVEL,u,t.dictionary),this._buffer=n.allocUnsafe(this._chunkSize),this._offset=0,this._level=h,this._strategy=u,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!i._handle},configurable:!0,enumerable:!0})}function v(t,e){e&&i.nextTick(e),t._handle&&(t._handle.close(),t._handle=null)}function G(t){t.emit("close")}Object.defineProperty(e,"codes",{enumerable:!0,value:Object.freeze(A),writable:!1}),e.Deflate=p,e.Inflate=m,e.Gzip=y,e.Gunzip=b,e.DeflateRaw=Q,e.InflateRaw=I,e.Unzip=C,e.createDeflate=function(t){return new p(t)},e.createInflate=function(t){return new m(t)},e.createDeflateRaw=function(t){return new Q(t)},e.createInflateRaw=function(t){return new I(t)},e.createGzip=function(t){return new y(t)},e.createGunzip=function(t){return new b(t)},e.createUnzip=function(t){return new C(t)},e.deflate=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new p(e),t,r)},e.deflateSync=function(t,e){return E(new p(e),t)},e.gzip=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new y(e),t,r)},e.gzipSync=function(t,e){return E(new y(e),t)},e.deflateRaw=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new Q(e),t,r)},e.deflateRawSync=function(t,e){return E(new Q(e),t)},e.unzip=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new C(e),t,r)},e.unzipSync=function(t,e){return E(new C(e),t)},e.inflate=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new m(e),t,r)},e.inflateSync=function(t,e){return E(new m(e),t)},e.gunzip=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new b(e),t,r)},e.gunzipSync=function(t,e){return E(new b(e),t)},e.inflateRaw=function(t,e,r){return"function"==typeof e&&(r=e,e={}),w(new I(e),t,r)},e.inflateRawSync=function(t,e){return E(new I(e),t)},a.inherits(N,o),N.prototype.params=function(t,r,n){if(te.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+t);if(r!=e.Z_FILTERED&&r!=e.Z_HUFFMAN_ONLY&&r!=e.Z_RLE&&r!=e.Z_FIXED&&r!=e.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+r);if(this._level!==t||this._strategy!==r){var o=this;this.flush(s.Z_SYNC_FLUSH,(function(){h(o._handle,"zlib binding closed"),o._handle.params(t,r),o._hadError||(o._level=t,o._strategy=r,n&&n())}))}else i.nextTick(n)},N.prototype.reset=function(){return h(this._handle,"zlib binding closed"),this._handle.reset()},N.prototype._flush=function(t){this._transform(n.alloc(0),"",t)},N.prototype.flush=function(t,e){var r=this,o=this._writableState;("function"==typeof t||void 0===t&&!e)&&(e=t,t=s.Z_FULL_FLUSH),o.ended?e&&i.nextTick(e):o.ending?e&&this.once("end",e):o.needDrain?e&&this.once("drain",(function(){return r.flush(t,e)})):(this._flushFlag=t,this.write(n.alloc(0),"",e))},N.prototype.close=function(t){v(this,t),i.nextTick(G,this)},N.prototype._transform=function(t,e,r){var i,o=this._writableState,a=(o.ending||o.ended)&&(!t||o.length===t.length);return null===t||n.isBuffer(t)?this._handle?(a?i=this._finishFlushFlag:(i=this._flushFlag,t.length>=o.length&&(this._flushFlag=this._opts.flush||s.Z_NO_FLUSH)),void this._processChunk(t,i,r)):r(new Error("zlib binding closed")):r(new Error("invalid input"))},N.prototype._processChunk=function(t,e,r){var i=t&&t.length,o=this._chunkSize-this._offset,s=0,a=this,l="function"==typeof r;if(!l){var d,f=[],A=0;this.on("error",(function(t){d=t})),h(this._handle,"zlib binding closed");do{var g=this._handle.writeSync(e,t,s,i,this._buffer,this._offset,o)}while(!this._hadError&&w(g[0],g[1]));if(this._hadError)throw d;if(A>=u)throw v(this),new RangeError(c);var M=n.concat(f,A);return v(this),M}h(this._handle,"zlib binding closed");var B=this._handle.write(e,t,s,i,this._buffer,this._offset,o);function w(u,c){if(this&&(this.buffer=null,this.callback=null),!a._hadError){var d=o-c;if(h(d>=0,"have should not go down"),d>0){var g=a._buffer.slice(a._offset,a._offset+d);a._offset+=d,l?a.push(g):(f.push(g),A+=g.length)}if((0===c||a._offset>=a._chunkSize)&&(o=a._chunkSize,a._offset=0,a._buffer=n.allocUnsafe(a._chunkSize)),0===c){if(s+=i-u,i=u,!l)return!0;var M=a._handle.write(e,t,s,i,a._buffer,a._offset,a._chunkSize);return M.callback=w,void(M.buffer=t)}if(!l)return!1;r()}}B.buffer=t,B.callback=w},a.inherits(p,N),a.inherits(m,N),a.inherits(y,N),a.inherits(b,N),a.inherits(Q,N),a.inherits(I,N),a.inherits(C,N)},6907:(t,e)=>{"use strict";var r="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function i(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var r=e.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var n in r)i(r,n)&&(t[n]=r[n])}}return t},e.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var n={arraySet:function(t,e,r,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(r,r+i),n);else for(var o=0;o{"use strict";t.exports=function(t,e,r,i){for(var n=65535&t|0,o=t>>>16&65535|0,s=0;0!==r;){r-=s=r>2e3?2e3:r;do{o=o+(n=n+e[i++]|0)|0}while(--s);n%=65521,o%=65521}return n|o<<16|0}},7162:t=>{"use strict";t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},3415:t=>{"use strict";var e=function(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e}();t.exports=function(t,r,i,n){var o=e,s=n+i;t^=-1;for(var a=n;a>>8^o[255&(t^r[a])];return-1^t}},2233:(t,e,r)=>{"use strict";var i,n=r(6907),o=r(1339),s=r(7575),a=r(3415),h=r(9364),u=-2,c=258,l=262,d=103,f=113,A=666;function g(t,e){return t.msg=h[e],e}function M(t){return(t<<1)-(t>4?9:0)}function B(t){for(var e=t.length;--e>=0;)t[e]=0}function w(t){var e=t.state,r=e.pending;r>t.avail_out&&(r=t.avail_out),0!==r&&(n.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))}function E(t,e){o._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,w(t.strm)}function p(t,e){t.pending_buf[t.pending++]=e}function m(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function y(t,e){var r,i,n=t.max_chain_length,o=t.strstart,s=t.prev_length,a=t.nice_match,h=t.strstart>t.w_size-l?t.strstart-(t.w_size-l):0,u=t.window,d=t.w_mask,f=t.prev,A=t.strstart+c,g=u[o+s-1],M=u[o+s];t.prev_length>=t.good_match&&(n>>=2),a>t.lookahead&&(a=t.lookahead);do{if(u[(r=e)+s]===M&&u[r+s-1]===g&&u[r]===u[o]&&u[++r]===u[o+1]){o+=2,r++;do{}while(u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&os){if(t.match_start=e,s=i,i>=a)break;g=u[o+s-1],M=u[o+s]}}}while((e=f[e&d])>h&&0!=--n);return s<=t.lookahead?s:t.lookahead}function b(t){var e,r,i,o,h,u,c,d,f,A,g=t.w_size;do{if(o=t.window_size-t.lookahead-t.strstart,t.strstart>=g+(g-l)){n.arraySet(t.window,t.window,g,g,0),t.match_start-=g,t.strstart-=g,t.block_start-=g,e=r=t.hash_size;do{i=t.head[--e],t.head[e]=i>=g?i-g:0}while(--r);e=r=g;do{i=t.prev[--e],t.prev[e]=i>=g?i-g:0}while(--r);o+=g}if(0===t.strm.avail_in)break;if(u=t.strm,c=t.window,d=t.strstart+t.lookahead,f=o,A=void 0,(A=u.avail_in)>f&&(A=f),r=0===A?0:(u.avail_in-=A,n.arraySet(c,u.input,u.next_in,A,d),1===u.state.wrap?u.adler=s(u.adler,c,A,d):2===u.state.wrap&&(u.adler=a(u.adler,c,A,d)),u.next_in+=A,u.total_in+=A,A),t.lookahead+=r,t.lookahead+t.insert>=3)for(h=t.strstart-t.insert,t.ins_h=t.window[h],t.ins_h=(t.ins_h<=3&&(t.ins_h=(t.ins_h<=3)if(i=o._tr_tally(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=(t.ins_h<=3&&(t.ins_h=(t.ins_h<4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=o._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=(t.ins_h<15&&(a=2,i-=16),o<1||o>9||8!==r||i<8||i>15||e<0||e>9||s<0||s>4)return g(t,u);8===i&&(i=9);var h=new D;return t.state=h,h.strm=t,h.wrap=a,h.gzhead=null,h.w_bits=i,h.w_size=1<t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(b(t),0===t.lookahead&&0===e)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+r;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,E(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-l&&(E(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(E(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(E(t,!1),t.strm.avail_out),1)})),new C(4,4,8,4,Q),new C(4,5,16,8,Q),new C(4,6,32,32,Q),new C(4,4,16,16,I),new C(8,16,32,32,I),new C(8,16,128,128,I),new C(8,32,128,256,I),new C(32,128,258,1024,I),new C(32,258,258,4096,I)],e.deflateInit=function(t,e){return G(t,e,8,15,8,0)},e.deflateInit2=G,e.deflateReset=v,e.deflateResetKeep=N,e.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?u:(t.state.gzhead=e,0):u},e.deflate=function(t,e){var r,n,s,h;if(!t||!t.state||e>5||e<0)return t?g(t,u):u;if(n=t.state,!t.output||!t.input&&0!==t.avail_in||n.status===A&&4!==e)return g(t,0===t.avail_out?-5:u);if(n.strm=t,r=n.last_flush,n.last_flush=e,42===n.status)if(2===n.wrap)t.adler=0,p(n,31),p(n,139),p(n,8),n.gzhead?(p(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),p(n,255&n.gzhead.time),p(n,n.gzhead.time>>8&255),p(n,n.gzhead.time>>16&255),p(n,n.gzhead.time>>24&255),p(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),p(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(p(n,255&n.gzhead.extra.length),p(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=a(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(p(n,0),p(n,0),p(n,0),p(n,0),p(n,0),p(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),p(n,3),n.status=f);else{var l=8+(n.w_bits-8<<4)<<8;l|=(n.strategy>=2||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(l|=32),l+=31-l%31,n.status=f,m(n,l),0!==n.strstart&&(m(n,t.adler>>>16),m(n,65535&t.adler)),t.adler=1}if(69===n.status)if(n.gzhead.extra){for(s=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),w(t),s=n.pending,n.pending!==n.pending_buf_size));)p(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){s=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),w(t),s=n.pending,n.pending===n.pending_buf_size)){h=1;break}h=n.gzindexs&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),0===h&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){s=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>s&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),w(t),s=n.pending,n.pending===n.pending_buf_size)){h=1;break}h=n.gzindexs&&(t.adler=a(t.adler,n.pending_buf,n.pending-s,s)),0===h&&(n.status=d)}else n.status=d;if(n.status===d&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&w(t),n.pending+2<=n.pending_buf_size&&(p(n,255&t.adler),p(n,t.adler>>8&255),t.adler=0,n.status=f)):n.status=f),0!==n.pending){if(w(t),0===t.avail_out)return n.last_flush=-1,0}else if(0===t.avail_in&&M(e)<=M(r)&&4!==e)return g(t,-5);if(n.status===A&&0!==t.avail_in)return g(t,-5);if(0!==t.avail_in||0!==n.lookahead||0!==e&&n.status!==A){var y=2===n.strategy?function(t,e){for(var r;;){if(0===t.lookahead&&(b(t),0===t.lookahead)){if(0===e)return 1;break}if(t.match_length=0,r=o._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(E(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(E(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(E(t,!1),0===t.strm.avail_out)?1:2}(n,e):3===n.strategy?function(t,e){for(var r,i,n,s,a=t.window;;){if(t.lookahead<=c){if(b(t),t.lookahead<=c&&0===e)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(i=a[n=t.strstart-1])===a[++n]&&i===a[++n]&&i===a[++n]){s=t.strstart+c;do{}while(i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(r=o._tr_tally(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=o._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(E(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,4===e?(E(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(E(t,!1),0===t.strm.avail_out)?1:2}(n,e):i[n.level].func(n,e);if(3!==y&&4!==y||(n.status=A),1===y||3===y)return 0===t.avail_out&&(n.last_flush=-1),0;if(2===y&&(1===e?o._tr_align(n):5!==e&&(o._tr_stored_block(n,0,0,!1),3===e&&(B(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),w(t),0===t.avail_out))return n.last_flush=-1,0}return 4!==e?0:n.wrap<=0?1:(2===n.wrap?(p(n,255&t.adler),p(n,t.adler>>8&255),p(n,t.adler>>16&255),p(n,t.adler>>24&255),p(n,255&t.total_in),p(n,t.total_in>>8&255),p(n,t.total_in>>16&255),p(n,t.total_in>>24&255)):(m(n,t.adler>>>16),m(n,65535&t.adler)),w(t),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?0:1)},e.deflateEnd=function(t){var e;return t&&t.state?42!==(e=t.state.status)&&69!==e&&73!==e&&91!==e&&e!==d&&e!==f&&e!==A?g(t,u):(t.state=null,e===f?g(t,-3):0):u},e.deflateSetDictionary=function(t,e){var r,i,o,a,h,c,l,d,f=e.length;if(!t||!t.state)return u;if(2===(a=(r=t.state).wrap)||1===a&&42!==r.status||r.lookahead)return u;for(1===a&&(t.adler=s(t.adler,e,f,0)),r.wrap=0,f>=r.w_size&&(0===a&&(B(r.head),r.strstart=0,r.block_start=0,r.insert=0),d=new n.Buf8(r.w_size),n.arraySet(d,e,f-r.w_size,r.w_size,0),e=d,f=r.w_size),h=t.avail_in,c=t.next_in,l=t.input,t.avail_in=f,t.next_in=0,t.input=e,b(r);r.lookahead>=3;){i=r.strstart,o=r.lookahead-2;do{r.ins_h=(r.ins_h<{"use strict";t.exports=function(t,e){var r,i,n,o,s,a,h,u,c,l,d,f,A,g,M,B,w,E,p,m,y,b,Q,I,C;r=t.state,i=t.next_in,I=t.input,n=i+(t.avail_in-5),o=t.next_out,C=t.output,s=o-(e-t.avail_out),a=o+(t.avail_out-257),h=r.dmax,u=r.wsize,c=r.whave,l=r.wnext,d=r.window,f=r.hold,A=r.bits,g=r.lencode,M=r.distcode,B=(1<>>=p=E>>>24,A-=p,0==(p=E>>>16&255))C[o++]=65535&E;else{if(!(16&p)){if(0==(64&p)){E=g[(65535&E)+(f&(1<>>=p,A-=p),A<15&&(f+=I[i++]<>>=p=E>>>24,A-=p,!(16&(p=E>>>16&255))){if(0==(64&p)){E=M[(65535&E)+(f&(1<h){t.msg="invalid distance too far back",r.mode=30;break t}if(f>>>=p,A-=p,y>(p=o-s)){if((p=y-p)>c&&r.sane){t.msg="invalid distance too far back",r.mode=30;break t}if(b=0,Q=d,0===l){if(b+=u-p,p2;)C[o++]=Q[b++],C[o++]=Q[b++],C[o++]=Q[b++],m-=3;m&&(C[o++]=Q[b++],m>1&&(C[o++]=Q[b++]))}else{b=o-y;do{C[o++]=C[b++],C[o++]=C[b++],C[o++]=C[b++],m-=3}while(m>2);m&&(C[o++]=C[b++],m>1&&(C[o++]=C[b++]))}break}}break}}while(i>3,f&=(1<<(A-=m<<3))-1,t.next_in=i,t.next_out=o,t.avail_in=i{"use strict";var i=r(6907),n=r(7575),o=r(3415),s=r(6438),a=r(1375),h=-2,u=12,c=30;function l(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function d(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new i.Buf16(320),this.work=new i.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new i.Buf32(852),e.distcode=e.distdyn=new i.Buf32(592),e.sane=1,e.back=-1,0):h}function A(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,f(t)):h}function g(t,e){var r,i;return t&&t.state?(i=t.state,e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?h:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=r,i.wbits=e,A(t))):h}function M(t,e){var r,i;return t?(i=new d,t.state=i,i.window=null,0!==(r=g(t,e))&&(t.state=null),r):h}var B,w,E=!0;function p(t){if(E){var e;for(B=new i.Buf32(512),w=new i.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(a(1,t.lens,0,288,B,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;a(2,t.lens,0,32,w,0,t.work,{bits:5}),E=!1}t.lencode=B,t.lenbits=9,t.distcode=w,t.distbits=5}function m(t,e,r,n){var o,s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(i.arraySet(s.window,e,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):((o=s.wsize-s.wnext)>n&&(o=n),i.arraySet(s.window,e,r-n,o,s.wnext),(n-=o)?(i.arraySet(s.window,e,r-n,n,0),s.wnext=n,s.whave=s.wsize):(s.wnext+=o,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=o(r.check,F,2,0),w=0,E=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&w)<<8)+(w>>8))%31){t.msg="incorrect header check",r.mode=c;break}if(8!=(15&w)){t.msg="unknown compression method",r.mode=c;break}if(E-=4,U=8+(15&(w>>>=4)),0===r.wbits)r.wbits=U;else if(U>r.wbits){t.msg="invalid window size",r.mode=c;break}r.dmax=1<>8&1),512&r.flags&&(F[0]=255&w,F[1]=w>>>8&255,r.check=o(r.check,F,2,0)),w=0,E=0,r.mode=3;case 3:for(;E<32;){if(0===M)break t;M--,w+=d[A++]<>>8&255,F[2]=w>>>16&255,F[3]=w>>>24&255,r.check=o(r.check,F,4,0)),w=0,E=0,r.mode=4;case 4:for(;E<16;){if(0===M)break t;M--,w+=d[A++]<>8),512&r.flags&&(F[0]=255&w,F[1]=w>>>8&255,r.check=o(r.check,F,2,0)),w=0,E=0,r.mode=5;case 5:if(1024&r.flags){for(;E<16;){if(0===M)break t;M--,w+=d[A++]<>>8&255,r.check=o(r.check,F,2,0)),w=0,E=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((Q=r.length)>M&&(Q=M),Q&&(r.head&&(U=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),i.arraySet(r.head.extra,d,A,Q,U)),512&r.flags&&(r.check=o(r.check,d,Q,A)),M-=Q,A+=Q,r.length-=Q),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===M)break t;Q=0;do{U=d[A+Q++],r.head&&U&&r.length<65536&&(r.head.name+=String.fromCharCode(U))}while(U&&Q>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=u;break;case 10:for(;E<32;){if(0===M)break t;M--,w+=d[A++]<>>=7&E,E-=7&E,r.mode=27;break}for(;E<3;){if(0===M)break t;M--,w+=d[A++]<>>=1)){case 0:r.mode=14;break;case 1:if(p(r),r.mode=20,6===e){w>>>=2,E-=2;break t}break;case 2:r.mode=17;break;case 3:t.msg="invalid block type",r.mode=c}w>>>=2,E-=2;break;case 14:for(w>>>=7&E,E-=7&E;E<32;){if(0===M)break t;M--,w+=d[A++]<>>16^65535)){t.msg="invalid stored block lengths",r.mode=c;break}if(r.length=65535&w,w=0,E=0,r.mode=15,6===e)break t;case 15:r.mode=16;case 16:if(Q=r.length){if(Q>M&&(Q=M),Q>B&&(Q=B),0===Q)break t;i.arraySet(f,d,A,Q,g),M-=Q,A+=Q,B-=Q,g+=Q,r.length-=Q;break}r.mode=u;break;case 17:for(;E<14;){if(0===M)break t;M--,w+=d[A++]<>>=5,E-=5,r.ndist=1+(31&w),w>>>=5,E-=5,r.ncode=4+(15&w),w>>>=4,E-=4,r.nlen>286||r.ndist>30){t.msg="too many length or distance symbols",r.mode=c;break}r.have=0,r.mode=18;case 18:for(;r.have>>=3,E-=3}for(;r.have<19;)r.lens[L[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,T={bits:r.lenbits},V=a(0,r.lens,0,19,r.lencode,0,r.work,T),r.lenbits=T.bits,V){t.msg="invalid code lengths set",r.mode=c;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,v=65535&k,!((D=k>>>24)<=E);){if(0===M)break t;M--,w+=d[A++]<>>=D,E-=D,r.lens[r.have++]=v;else{if(16===v){for(S=D+2;E>>=D,E-=D,0===r.have){t.msg="invalid bit length repeat",r.mode=c;break}U=r.lens[r.have-1],Q=3+(3&w),w>>>=2,E-=2}else if(17===v){for(S=D+3;E>>=D)),w>>>=3,E-=3}else{for(S=D+7;E>>=D)),w>>>=7,E-=7}if(r.have+Q>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=c;break}for(;Q--;)r.lens[r.have++]=U}}if(r.mode===c)break;if(0===r.lens[256]){t.msg="invalid code -- missing end-of-block",r.mode=c;break}if(r.lenbits=9,T={bits:r.lenbits},V=a(1,r.lens,0,r.nlen,r.lencode,0,r.work,T),r.lenbits=T.bits,V){t.msg="invalid literal/lengths set",r.mode=c;break}if(r.distbits=6,r.distcode=r.distdyn,T={bits:r.distbits},V=a(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,T),r.distbits=T.bits,V){t.msg="invalid distances set",r.mode=c;break}if(r.mode=20,6===e)break t;case 20:r.mode=21;case 21:if(M>=6&&B>=258){t.next_out=g,t.avail_out=B,t.next_in=A,t.avail_in=M,r.hold=w,r.bits=E,s(t,b),g=t.next_out,f=t.output,B=t.avail_out,A=t.next_in,d=t.input,M=t.avail_in,w=r.hold,E=r.bits,r.mode===u&&(r.back=-1);break}for(r.back=0;N=(k=r.lencode[w&(1<>>16&255,v=65535&k,!((D=k>>>24)<=E);){if(0===M)break t;M--,w+=d[A++]<>G)])>>>16&255,v=65535&k,!(G+(D=k>>>24)<=E);){if(0===M)break t;M--,w+=d[A++]<>>=G,E-=G,r.back+=G}if(w>>>=D,E-=D,r.back+=D,r.length=v,0===N){r.mode=26;break}if(32&N){r.back=-1,r.mode=u;break}if(64&N){t.msg="invalid literal/length code",r.mode=c;break}r.extra=15&N,r.mode=22;case 22:if(r.extra){for(S=r.extra;E>>=r.extra,E-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;N=(k=r.distcode[w&(1<>>16&255,v=65535&k,!((D=k>>>24)<=E);){if(0===M)break t;M--,w+=d[A++]<>G)])>>>16&255,v=65535&k,!(G+(D=k>>>24)<=E);){if(0===M)break t;M--,w+=d[A++]<>>=G,E-=G,r.back+=G}if(w>>>=D,E-=D,r.back+=D,64&N){t.msg="invalid distance code",r.mode=c;break}r.offset=v,r.extra=15&N,r.mode=24;case 24:if(r.extra){for(S=r.extra;E>>=r.extra,E-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=c;break}r.mode=25;case 25:if(0===B)break t;if(Q=b-B,r.offset>Q){if((Q=r.offset-Q)>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=c;break}Q>r.wnext?(Q-=r.wnext,I=r.wsize-Q):I=r.wnext-Q,Q>r.length&&(Q=r.length),C=r.window}else C=f,I=g-r.offset,Q=r.length;Q>B&&(Q=B),B-=Q,r.length-=Q;do{f[g++]=C[I++]}while(--Q);0===r.length&&(r.mode=21);break;case 26:if(0===B)break t;f[g++]=r.length,B--,r.mode=21;break;case 27:if(r.wrap){for(;E<32;){if(0===M)break t;M--,w|=d[A++]<{"use strict";var i=r(6907),n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],o=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],s=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],a=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];t.exports=function(t,e,r,h,u,c,l,d){var f,A,g,M,B,w,E,p,m,y=d.bits,b=0,Q=0,I=0,C=0,D=0,N=0,v=0,G=0,R=0,Y=0,U=null,V=0,T=new i.Buf16(16),S=new i.Buf16(16),k=null,F=0;for(b=0;b<=15;b++)T[b]=0;for(Q=0;Q=1&&0===T[C];C--);if(D>C&&(D=C),0===C)return u[c++]=20971520,u[c++]=20971520,d.bits=1,0;for(I=1;I0&&(0===t||1!==C))return-1;for(S[1]=0,b=1;b<15;b++)S[b+1]=S[b]+T[b];for(Q=0;Q852||2===t&&R>592)return 1;for(;;){E=b-v,l[Q]w?(p=k[F+l[Q]],m=U[V+l[Q]]):(p=96,m=0),f=1<>v)+(A-=f)]=E<<24|p<<16|m|0}while(0!==A);for(f=1<>=1;if(0!==f?(Y&=f-1,Y+=f):Y=0,Q++,0==--T[b]){if(b===C)break;b=e[r+l[Q]]}if(b>D&&(Y&M)!==g){for(0===v&&(v=D),B+=I,G=1<<(N=b-v);N+v852||2===t&&R>592)return 1;u[g=Y&M]=D<<24|N<<16|B-c|0}}return 0!==Y&&(u[B+Y]=b-v<<24|64<<16|0),d.bits=D,0}},9364:t=>{"use strict";t.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},1339:(t,e,r)=>{"use strict";var i=r(6907);function n(t){for(var e=t.length;--e>=0;)t[e]=0}var o=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],s=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],h=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],u=new Array(576);n(u);var c=new Array(60);n(c);var l=new Array(512);n(l);var d=new Array(256);n(d);var f=new Array(29);n(f);var A,g,M,B=new Array(30);function w(t,e,r,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function E(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function p(t){return t<256?l[t]:l[256+(t>>>7)]}function m(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function y(t,e,r){t.bi_valid>16-r?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=r-16):(t.bi_buf|=e<>>=1,r<<=1}while(--e>0);return r>>>1}function I(t,e,r){var i,n,o=new Array(16),s=0;for(i=1;i<=15;i++)o[i]=s=s+r[i-1]<<1;for(n=0;n<=e;n++){var a=t[2*n+1];0!==a&&(t[2*n]=Q(o[a]++,a))}}function C(t){var e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function D(t){t.bi_valid>8?m(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function N(t,e,r,i){var n=2*e,o=2*r;return t[n]>1;r>=1;r--)v(t,o,r);n=h;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],v(t,o,1),i=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=i,o[2*n]=o[2*r]+o[2*i],t.depth[n]=(t.depth[r]>=t.depth[i]?t.depth[r]:t.depth[i])+1,o[2*r+1]=o[2*i+1]=n,t.heap[1]=n++,v(t,o,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],function(t,e){var r,i,n,o,s,a,h=e.dyn_tree,u=e.max_code,c=e.stat_desc.static_tree,l=e.stat_desc.has_stree,d=e.stat_desc.extra_bits,f=e.stat_desc.extra_base,A=e.stat_desc.max_length,g=0;for(o=0;o<=15;o++)t.bl_count[o]=0;for(h[2*t.heap[t.heap_max]+1]=0,r=t.heap_max+1;r<573;r++)(o=h[2*h[2*(i=t.heap[r])+1]+1]+1)>A&&(o=A,g++),h[2*i+1]=o,i>u||(t.bl_count[o]++,s=0,i>=f&&(s=d[i-f]),a=h[2*i],t.opt_len+=a*(o+s),l&&(t.static_len+=a*(c[2*i+1]+s)));if(0!==g){do{for(o=A-1;0===t.bl_count[o];)o--;t.bl_count[o]--,t.bl_count[o+1]+=2,t.bl_count[A]--,g-=2}while(g>0);for(o=A;0!==o;o--)for(i=t.bl_count[o];0!==i;)(n=t.heap[--r])>u||(h[2*n+1]!==o&&(t.opt_len+=(o-h[2*n+1])*h[2*n],h[2*n+1]=o),i--)}}(t,e),I(o,u,t.bl_count)}function Y(t,e,r){var i,n,o=-1,s=e[1],a=0,h=7,u=4;for(0===s&&(h=138,u=3),e[2*(r+1)+1]=65535,i=0;i<=r;i++)n=s,s=e[2*(i+1)+1],++a>=7;i<30;i++)for(B[i]=n<<7,t=0;t<1<0?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,r=4093624447;for(e=0;e<=31;e++,r>>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0}(t)),R(t,t.l_desc),R(t,t.d_desc),s=function(t){var e;for(Y(t,t.dyn_ltree,t.l_desc.max_code),Y(t,t.dyn_dtree,t.d_desc.max_code),R(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),n=t.opt_len+3+7>>>3,(o=t.static_len+3+7>>>3)<=n&&(n=o)):n=o=r+5,r+4<=n&&-1!==e?T(t,e,r,i):4===t.strategy||o===n?(y(t,2+(i?1:0),3),G(t,u,c)):(y(t,4+(i?1:0),3),function(t,e,r,i){var n;for(y(t,e-257,5),y(t,r-1,5),y(t,i-4,4),n=0;n>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(d[r]+256+1)]++,t.dyn_dtree[2*p(e)]++),t.last_lit===t.lit_bufsize-1},e._tr_align=function(t){y(t,2,3),b(t,256,u),function(t){16===t.bi_valid?(m(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},4860:t=>{"use strict";t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},7295:(t,e,r)=>{var i=r(8764).Buffer;t.exports=function(t,e){for(var r=Math.min(t.length,e.length),n=new i(r),o=0;o{"use strict";const i=r(9742),n=r(645),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=h,e.SlowBuffer=function(t){return+t!=t&&(t=0),h.alloc(+t)},e.INSPECT_MAX_BYTES=50;const s=2147483647;function a(t){if(t>s)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,h.prototype),e}function h(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return l(t)}return u(t,e,r)}function u(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!h.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|g(t,e);let i=a(r);const n=i.write(t,e);return n!==r&&(i=i.slice(0,n)),i}(t,e);if(ArrayBuffer.isView(t))return function(t){if(K(t,Uint8Array)){const e=new Uint8Array(t);return f(e.buffer,e.byteOffset,e.byteLength)}return d(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(K(t,ArrayBuffer)||t&&K(t.buffer,ArrayBuffer))return f(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(K(t,SharedArrayBuffer)||t&&K(t.buffer,SharedArrayBuffer)))return f(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const i=t.valueOf&&t.valueOf();if(null!=i&&i!==t)return h.from(i,e,r);const n=function(t){if(h.isBuffer(t)){const e=0|A(t.length),r=a(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||P(t.length)?a(0):d(t):"Buffer"===t.type&&Array.isArray(t.data)?d(t.data):void 0}(t);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return h.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function c(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function l(t){return c(t),a(t<0?0:0|A(t))}function d(t){const e=t.length<0?0:0|A(t.length),r=a(e);for(let i=0;i=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|t}function g(t,e){if(h.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||K(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;let n=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return W(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return J(t).length;default:if(n)return i?-1:W(t).length;e=(""+e).toLowerCase(),n=!0}}function M(t,e,r){let i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return G(this,e,r);case"utf8":case"utf-8":return C(this,e,r);case"ascii":return N(this,e,r);case"latin1":case"binary":return v(this,e,r);case"base64":return I(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function B(t,e,r){const i=t[e];t[e]=t[r],t[r]=i}function w(t,e,r,i,n){if(0===t.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),P(r=+r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof e&&(e=h.from(e,i)),h.isBuffer(e))return 0===e.length?-1:E(t,e,r,i,n);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):E(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function E(t,e,r,i,n){let o,s=1,a=t.length,h=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;s=2,a/=2,h/=2,r/=2}function u(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(n){let i=-1;for(o=r;oa&&(r=a-h),o=r;o>=0;o--){let r=!0;for(let i=0;in&&(i=n):i=n;const o=e.length;let s;for(i>o/2&&(i=o/2),s=0;s>8,n=r%256,o.push(n),o.push(i);return o}(e,t.length-r),t,r,i)}function I(t,e,r){return 0===e&&r===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,r))}function C(t,e,r){r=Math.min(t.length,r);const i=[];let n=e;for(;n239?4:e>223?3:e>191?2:1;if(n+s<=r){let r,i,a,h;switch(s){case 1:e<128&&(o=e);break;case 2:r=t[n+1],128==(192&r)&&(h=(31&e)<<6|63&r,h>127&&(o=h));break;case 3:r=t[n+1],i=t[n+2],128==(192&r)&&128==(192&i)&&(h=(15&e)<<12|(63&r)<<6|63&i,h>2047&&(h<55296||h>57343)&&(o=h));break;case 4:r=t[n+1],i=t[n+2],a=t[n+3],128==(192&r)&&128==(192&i)&&128==(192&a)&&(h=(15&e)<<18|(63&r)<<12|(63&i)<<6|63&a,h>65535&&h<1114112&&(o=h))}}null===o?(o=65533,s=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|1023&o),i.push(o),n+=s}return function(t){const e=t.length;if(e<=D)return String.fromCharCode.apply(String,t);let r="",i=0;for(;ii.length?(h.isBuffer(e)||(e=h.from(e)),e.copy(i,n)):Uint8Array.prototype.set.call(i,e,n);else{if(!h.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(i,n)}n+=e.length}return i},h.byteLength=g,h.prototype._isBuffer=!0,h.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},o&&(h.prototype[o]=h.prototype.inspect),h.prototype.compare=function(t,e,r,i,n){if(K(t,Uint8Array)&&(t=h.from(t,t.offset,t.byteLength)),!h.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),e<0||r>t.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&e>=r)return 0;if(i>=n)return-1;if(e>=r)return 1;if(this===t)return 0;let o=(n>>>=0)-(i>>>=0),s=(r>>>=0)-(e>>>=0);const a=Math.min(o,s),u=this.slice(i,n),c=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i="utf8")):(i=r,r=void 0)}const n=this.length-e;if((void 0===r||r>n)&&(r=n),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return p(this,t,e,r);case"utf8":case"utf-8":return m(this,t,e,r);case"ascii":case"latin1":case"binary":return y(this,t,e,r);case"base64":return b(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Q(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const D=4096;function N(t,e,r){let i="";r=Math.min(t.length,r);for(let n=e;ni)&&(r=i);let n="";for(let i=e;ir)throw new RangeError("Trying to access beyond buffer length")}function U(t,e,r,i,n,o){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}function V(t,e,r,i,n){H(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,r}function T(t,e,r,i,n){H(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=s,s>>=8,t[r+2]=s,s>>=8,t[r+1]=s,s>>=8,t[r]=s,r+8}function S(t,e,r,i,n,o){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(t,e,r,i,o){return e=+e,r>>>=0,o||S(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function F(t,e,r,i,o){return e=+e,r>>>=0,o||S(t,0,r,8),n.write(t,e,r,i,52,8),r+8}h.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||Y(t,e,this.length);let i=this[t],n=1,o=0;for(;++o>>=0,e>>>=0,r||Y(t,e,this.length);let i=this[t+--e],n=1;for(;e>0&&(n*=256);)i+=this[t+--e]*n;return i},h.prototype.readUint8=h.prototype.readUInt8=function(t,e){return t>>>=0,e||Y(t,1,this.length),this[t]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(t,e){return t>>>=0,e||Y(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(t,e){return t>>>=0,e||Y(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(t,e){return t>>>=0,e||Y(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(t,e){return t>>>=0,e||Y(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readBigUInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,n=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(i)+(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=e*2**24+65536*this[++t]+256*this[++t]+this[++t],n=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(i)<>>=0,e>>>=0,r||Y(t,e,this.length);let i=this[t],n=1,o=0;for(;++o=n&&(i-=Math.pow(2,8*e)),i},h.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||Y(t,e,this.length);let i=e,n=1,o=this[t+--i];for(;i>0&&(n*=256);)o+=this[t+--i]*n;return n*=128,o>=n&&(o-=Math.pow(2,8*e)),o},h.prototype.readInt8=function(t,e){return t>>>=0,e||Y(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){t>>>=0,e||Y(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt16BE=function(t,e){t>>>=0,e||Y(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt32LE=function(t,e){return t>>>=0,e||Y(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return t>>>=0,e||Y(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readBigInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(i)<>>=0,e||Y(t,4,this.length),n.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return t>>>=0,e||Y(t,4,this.length),n.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return t>>>=0,e||Y(t,8,this.length),n.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return t>>>=0,e||Y(t,8,this.length),n.read(this,t,!1,52,8)},h.prototype.writeUintLE=h.prototype.writeUIntLE=function(t,e,r,i){t=+t,e>>>=0,r>>>=0,i||U(this,t,e,r,Math.pow(2,8*r)-1,0);let n=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,i||U(this,t,e,r,Math.pow(2,8*r)-1,0);let n=r-1,o=1;for(this[e+n]=255&t;--n>=0&&(o*=256);)this[e+n]=t/o&255;return e+r},h.prototype.writeUint8=h.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,1,255,0),this[e]=255&t,e+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigUInt64LE=q((function(t,e=0){return V(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeBigUInt64BE=q((function(t,e=0){return T(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeIntLE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);U(this,t,e,r,i-1,-i)}let n=0,o=1,s=0;for(this[e]=255&t;++n>0)-s&255;return e+r},h.prototype.writeIntBE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);U(this,t,e,r,i-1,-i)}let n=r-1,o=1,s=0;for(this[e+n]=255&t;--n>=0&&(o*=256);)t<0&&0===s&&0!==this[e+n+1]&&(s=1),this[e+n]=(t/o>>0)-s&255;return e+r},h.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},h.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigInt64LE=q((function(t,e=0){return V(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeBigInt64BE=q((function(t,e=0){return T(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeFloatLE=function(t,e,r){return k(this,t,e,!0,r)},h.prototype.writeFloatBE=function(t,e,r){return k(this,t,e,!1,r)},h.prototype.writeDoubleLE=function(t,e,r){return F(this,t,e,!0,r)},h.prototype.writeDoubleBE=function(t,e,r){return F(this,t,e,!1,r)},h.prototype.copy=function(t,e,r,i){if(!h.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(n=e;n=i+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function H(t,e,r,i,n,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${i} and < 2${i} ** ${8*(o+1)}${i}`:`>= -(2${i} ** ${8*(o+1)-1}${i}) and < 2 ** ${8*(o+1)-1}${i}`:`>= ${e}${i} and <= ${r}${i}`,new L.ERR_OUT_OF_RANGE("value",n,t)}!function(t,e,r){z(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||x(e,t.length-(r+1))}(i,n,o)}function z(t,e){if("number"!=typeof t)throw new L.ERR_INVALID_ARG_TYPE(e,"number",t)}function x(t,e,r){if(Math.floor(t)!==t)throw z(t,r),new L.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new L.ERR_BUFFER_OUT_OF_BOUNDS;throw new L.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}j("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),j("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),j("ERR_OUT_OF_RANGE",(function(t,e,r){let i=`The value of "${t}" is out of range.`,n=r;return Number.isInteger(r)&&Math.abs(r)>2**32?n=Z(String(r)):"bigint"==typeof r&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=Z(n)),n+="n"),i+=` It must be ${e}. Received ${n}`,i}),RangeError);const O=/[^+/0-9A-Za-z-_]/g;function W(t,e){let r;e=e||1/0;const i=t.length;let n=null;const o=[];for(let s=0;s55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===i){(e-=3)>-1&&o.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(e-=3)>-1&&o.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function J(t){return i.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(O,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function X(t,e,r,i){let n;for(n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}function K(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function P(t){return t!=t}const _=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const i=16*r;for(let n=0;n<16;++n)e[i+n]=t[r]+t[n]}return e}();function q(t){return"undefined"==typeof BigInt?$:t}function $(){throw new Error("BigInt not supported")}},1924:(t,e,r)=>{"use strict";var i=r(210),n=r(5559),o=n(i("String.prototype.indexOf"));t.exports=function(t,e){var r=i(t,!!e);return"function"==typeof r&&o(t,".prototype.")>-1?n(r):r}},5559:(t,e,r)=>{"use strict";var i=r(8612),n=r(210),o=n("%Function.prototype.apply%"),s=n("%Function.prototype.call%"),a=n("%Reflect.apply%",!0)||i.call(s,o),h=n("%Object.getOwnPropertyDescriptor%",!0),u=n("%Object.defineProperty%",!0),c=n("%Math.max%");if(u)try{u({},"a",{value:1})}catch(t){u=null}t.exports=function(t){var e=a(i,s,arguments);if(h&&u){var r=h(e,"length");r.configurable&&u(e,"length",{value:1+c(0,t.length-(arguments.length-1))})}return e};var l=function(){return a(i,o,arguments)};u?u(t.exports,"apply",{value:l}):t.exports.apply=l},5581:function(t,e,r){var i,n;t.exports=(i=function(){try{return r(4431)}catch(t){}}(),n=r(9539),(()=>{var t={742:(t,e)=>{"use strict";e.byteLength=function(t){var e=h(t),r=e[0],i=e[1];return 3*(r+i)/4-i},e.toByteArray=function(t){var e,r,o=h(t),s=o[0],a=o[1],u=new n(function(t,e,r){return 3*(e+r)/4-r}(0,s,a)),c=0,l=a>0?s-4:s;for(r=0;r>16&255,u[c++]=e>>8&255,u[c++]=255&e;return 2===a&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,u[c++]=255&e),1===a&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,u[c++]=e>>8&255,u[c++]=255&e),u},e.fromByteArray=function(t){for(var e,i=t.length,n=i%3,o=[],s=16383,a=0,h=i-n;ah?h:a+s));return 1===n?(e=t[i-1],o.push(r[e>>2]+r[e<<4&63]+"==")):2===n&&(e=(t[i-2]<<8)+t[i-1],o.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),o.join("")};for(var r=[],i=[],n="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,a=o.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function u(t,e,i){for(var n,o,s=[],a=e;a>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},764:(t,e,r)=>{"use strict";const i=r(742),n=r(645),o="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=h,e.SlowBuffer=function(t){return+t!=t&&(t=0),h.alloc(+t)},e.INSPECT_MAX_BYTES=50;const s=2147483647;function a(t){if(t>s)throw new RangeError('The value "'+t+'" is invalid for option "size"');const e=new Uint8Array(t);return Object.setPrototypeOf(e,h.prototype),e}function h(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return l(t)}return u(t,e,r)}function u(t,e,r){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!h.isEncoding(e))throw new TypeError("Unknown encoding: "+e);const r=0|g(t,e);let i=a(r);const n=i.write(t,e);return n!==r&&(i=i.slice(0,n)),i}(t,e);if(ArrayBuffer.isView(t))return function(t){if(K(t,Uint8Array)){const e=new Uint8Array(t);return f(e.buffer,e.byteOffset,e.byteLength)}return d(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(K(t,ArrayBuffer)||t&&K(t.buffer,ArrayBuffer))return f(t,e,r);if("undefined"!=typeof SharedArrayBuffer&&(K(t,SharedArrayBuffer)||t&&K(t.buffer,SharedArrayBuffer)))return f(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');const i=t.valueOf&&t.valueOf();if(null!=i&&i!==t)return h.from(i,e,r);const n=function(t){if(h.isBuffer(t)){const e=0|A(t.length),r=a(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||P(t.length)?a(0):d(t):"Buffer"===t.type&&Array.isArray(t.data)?d(t.data):void 0}(t);if(n)return n;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return h.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function c(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function l(t){return c(t),a(t<0?0:0|A(t))}function d(t){const e=t.length<0?0:0|A(t.length),r=a(e);for(let i=0;i=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|t}function g(t,e){if(h.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||K(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);const r=t.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===r)return 0;let n=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return W(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return J(t).length;default:if(n)return i?-1:W(t).length;e=(""+e).toLowerCase(),n=!0}}function M(t,e,r){let i=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return G(this,e,r);case"utf8":case"utf-8":return C(this,e,r);case"ascii":return N(this,e,r);case"latin1":case"binary":return v(this,e,r);case"base64":return I(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}function B(t,e,r){const i=t[e];t[e]=t[r],t[r]=i}function w(t,e,r,i,n){if(0===t.length)return-1;if("string"==typeof r?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),P(r=+r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0){if(!n)return-1;r=0}if("string"==typeof e&&(e=h.from(e,i)),h.isBuffer(e))return 0===e.length?-1:E(t,e,r,i,n);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):E(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function E(t,e,r,i,n){let o,s=1,a=t.length,h=e.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(t.length<2||e.length<2)return-1;s=2,a/=2,h/=2,r/=2}function u(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(n){let i=-1;for(o=r;oa&&(r=a-h),o=r;o>=0;o--){let r=!0;for(let i=0;in&&(i=n):i=n;const o=e.length;let s;for(i>o/2&&(i=o/2),s=0;s>8,n=r%256,o.push(n),o.push(i);return o}(e,t.length-r),t,r,i)}function I(t,e,r){return 0===e&&r===t.length?i.fromByteArray(t):i.fromByteArray(t.slice(e,r))}function C(t,e,r){r=Math.min(t.length,r);const i=[];let n=e;for(;n239?4:e>223?3:e>191?2:1;if(n+s<=r){let r,i,a,h;switch(s){case 1:e<128&&(o=e);break;case 2:r=t[n+1],128==(192&r)&&(h=(31&e)<<6|63&r,h>127&&(o=h));break;case 3:r=t[n+1],i=t[n+2],128==(192&r)&&128==(192&i)&&(h=(15&e)<<12|(63&r)<<6|63&i,h>2047&&(h<55296||h>57343)&&(o=h));break;case 4:r=t[n+1],i=t[n+2],a=t[n+3],128==(192&r)&&128==(192&i)&&128==(192&a)&&(h=(15&e)<<18|(63&r)<<12|(63&i)<<6|63&a,h>65535&&h<1114112&&(o=h))}}null===o?(o=65533,s=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|1023&o),i.push(o),n+=s}return function(t){const e=t.length;if(e<=D)return String.fromCharCode.apply(String,t);let r="",i=0;for(;ii.length?(h.isBuffer(e)||(e=h.from(e)),e.copy(i,n)):Uint8Array.prototype.set.call(i,e,n);else{if(!h.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(i,n)}n+=e.length}return i},h.byteLength=g,h.prototype._isBuffer=!0,h.prototype.swap16=function(){const t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(t+=" ... "),""},o&&(h.prototype[o]=h.prototype.inspect),h.prototype.compare=function(t,e,r,i,n){if(K(t,Uint8Array)&&(t=h.from(t,t.offset,t.byteLength)),!h.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===i&&(i=0),void 0===n&&(n=this.length),e<0||r>t.length||i<0||n>this.length)throw new RangeError("out of range index");if(i>=n&&e>=r)return 0;if(i>=n)return-1;if(e>=r)return 1;if(this===t)return 0;let o=(n>>>=0)-(i>>>=0),s=(r>>>=0)-(e>>>=0);const a=Math.min(o,s),u=this.slice(i,n),c=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===i&&(i="utf8")):(i=r,r=void 0)}const n=this.length-e;if((void 0===r||r>n)&&(r=n),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return p(this,t,e,r);case"utf8":case"utf-8":return m(this,t,e,r);case"ascii":case"latin1":case"binary":return y(this,t,e,r);case"base64":return b(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Q(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const D=4096;function N(t,e,r){let i="";r=Math.min(t.length,r);for(let n=e;ni)&&(r=i);let n="";for(let i=e;ir)throw new RangeError("Trying to access beyond buffer length")}function U(t,e,r,i,n,o){if(!h.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||et.length)throw new RangeError("Index out of range")}function V(t,e,r,i,n){H(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,s>>=8,t[r++]=s,r}function T(t,e,r,i,n){H(e,i,n,t,r,7);let o=Number(e&BigInt(4294967295));t[r+7]=o,o>>=8,t[r+6]=o,o>>=8,t[r+5]=o,o>>=8,t[r+4]=o;let s=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=s,s>>=8,t[r+2]=s,s>>=8,t[r+1]=s,s>>=8,t[r]=s,r+8}function S(t,e,r,i,n,o){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function k(t,e,r,i,o){return e=+e,r>>>=0,o||S(t,0,r,4),n.write(t,e,r,i,23,4),r+4}function F(t,e,r,i,o){return e=+e,r>>>=0,o||S(t,0,r,8),n.write(t,e,r,i,52,8),r+8}h.prototype.slice=function(t,e){const r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||Y(t,e,this.length);let i=this[t],n=1,o=0;for(;++o>>=0,e>>>=0,r||Y(t,e,this.length);let i=this[t+--e],n=1;for(;e>0&&(n*=256);)i+=this[t+--e]*n;return i},h.prototype.readUint8=h.prototype.readUInt8=function(t,e){return t>>>=0,e||Y(t,1,this.length),this[t]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(t,e){return t>>>=0,e||Y(t,2,this.length),this[t]|this[t+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(t,e){return t>>>=0,e||Y(t,2,this.length),this[t]<<8|this[t+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(t,e){return t>>>=0,e||Y(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(t,e){return t>>>=0,e||Y(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},h.prototype.readBigUInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,n=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(i)+(BigInt(n)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=e*2**24+65536*this[++t]+256*this[++t]+this[++t],n=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(i)<>>=0,e>>>=0,r||Y(t,e,this.length);let i=this[t],n=1,o=0;for(;++o=n&&(i-=Math.pow(2,8*e)),i},h.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||Y(t,e,this.length);let i=e,n=1,o=this[t+--i];for(;i>0&&(n*=256);)o+=this[t+--i]*n;return n*=128,o>=n&&(o-=Math.pow(2,8*e)),o},h.prototype.readInt8=function(t,e){return t>>>=0,e||Y(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},h.prototype.readInt16LE=function(t,e){t>>>=0,e||Y(t,2,this.length);const r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt16BE=function(t,e){t>>>=0,e||Y(t,2,this.length);const r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},h.prototype.readInt32LE=function(t,e){return t>>>=0,e||Y(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},h.prototype.readInt32BE=function(t,e){return t>>>=0,e||Y(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},h.prototype.readBigInt64LE=q((function(t){z(t>>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(i)<>>=0,"offset");const e=this[t],r=this[t+7];void 0!==e&&void 0!==r||x(t,this.length-8);const i=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(i)<>>=0,e||Y(t,4,this.length),n.read(this,t,!0,23,4)},h.prototype.readFloatBE=function(t,e){return t>>>=0,e||Y(t,4,this.length),n.read(this,t,!1,23,4)},h.prototype.readDoubleLE=function(t,e){return t>>>=0,e||Y(t,8,this.length),n.read(this,t,!0,52,8)},h.prototype.readDoubleBE=function(t,e){return t>>>=0,e||Y(t,8,this.length),n.read(this,t,!1,52,8)},h.prototype.writeUintLE=h.prototype.writeUIntLE=function(t,e,r,i){t=+t,e>>>=0,r>>>=0,i||U(this,t,e,r,Math.pow(2,8*r)-1,0);let n=1,o=0;for(this[e]=255&t;++o>>=0,r>>>=0,i||U(this,t,e,r,Math.pow(2,8*r)-1,0);let n=r-1,o=1;for(this[e+n]=255&t;--n>=0&&(o*=256);)this[e+n]=t/o&255;return e+r},h.prototype.writeUint8=h.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,1,255,0),this[e]=255&t,e+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigUInt64LE=q((function(t,e=0){return V(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeBigUInt64BE=q((function(t,e=0){return T(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeIntLE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);U(this,t,e,r,i-1,-i)}let n=0,o=1,s=0;for(this[e]=255&t;++n>0)-s&255;return e+r},h.prototype.writeIntBE=function(t,e,r,i){if(t=+t,e>>>=0,!i){const i=Math.pow(2,8*r-1);U(this,t,e,r,i-1,-i)}let n=r-1,o=1,s=0;for(this[e+n]=255&t;--n>=0&&(o*=256);)t<0&&0===s&&0!==this[e+n+1]&&(s=1),this[e+n]=(t/o>>0)-s&255;return e+r},h.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},h.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},h.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},h.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},h.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||U(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},h.prototype.writeBigInt64LE=q((function(t,e=0){return V(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeBigInt64BE=q((function(t,e=0){return T(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeFloatLE=function(t,e,r){return k(this,t,e,!0,r)},h.prototype.writeFloatBE=function(t,e,r){return k(this,t,e,!1,r)},h.prototype.writeDoubleLE=function(t,e,r){return F(this,t,e,!0,r)},h.prototype.writeDoubleBE=function(t,e,r){return F(this,t,e,!1,r)},h.prototype.copy=function(t,e,r,i){if(!h.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),i||0===i||(i=this.length),e>=t.length&&(e=t.length),e||(e=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(n=e;n=i+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function H(t,e,r,i,n,o){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${i} and < 2${i} ** ${8*(o+1)}${i}`:`>= -(2${i} ** ${8*(o+1)-1}${i}) and < 2 ** ${8*(o+1)-1}${i}`:`>= ${e}${i} and <= ${r}${i}`,new L.ERR_OUT_OF_RANGE("value",n,t)}!function(t,e,r){z(e,"offset"),void 0!==t[e]&&void 0!==t[e+r]||x(e,t.length-(r+1))}(i,n,o)}function z(t,e){if("number"!=typeof t)throw new L.ERR_INVALID_ARG_TYPE(e,"number",t)}function x(t,e,r){if(Math.floor(t)!==t)throw z(t,r),new L.ERR_OUT_OF_RANGE(r||"offset","an integer",t);if(e<0)throw new L.ERR_BUFFER_OUT_OF_BOUNDS;throw new L.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}j("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),j("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),j("ERR_OUT_OF_RANGE",(function(t,e,r){let i=`The value of "${t}" is out of range.`,n=r;return Number.isInteger(r)&&Math.abs(r)>2**32?n=Z(String(r)):"bigint"==typeof r&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=Z(n)),n+="n"),i+=` It must be ${e}. Received ${n}`,i}),RangeError);const O=/[^+/0-9A-Za-z-_]/g;function W(t,e){let r;e=e||1/0;const i=t.length;let n=null;const o=[];for(let s=0;s55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===i){(e-=3)>-1&&o.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),n=r;continue}r=65536+(n-55296<<10|r-56320)}else n&&(e-=3)>-1&&o.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function J(t){return i.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(O,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function X(t,e,r,i){let n;for(n=0;n=e.length||n>=t.length);++n)e[n+r]=t[n];return n}function K(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function P(t){return t!=t}const _=function(){const t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){const i=16*r;for(let n=0;n<16;++n)e[i+n]=t[r]+t[n]}return e}();function q(t){return"undefined"==typeof BigInt?$:t}function $(){throw new Error("BigInt not supported")}},141:(t,e,r)=>{"use strict";e.BigNumber=r(66).BigNumber,e.Commented=r(20),e.Diagnose=r(694),e.Decoder=r(774),e.Encoder=r(666),e.Simple=r(32),e.Tagged=r(785),e.Map=r(70),e.UI=e.Commented.comment,e.fI=e.Decoder.decodeAll,e.h8=e.Decoder.decodeFirst,e.cc=e.Decoder.decodeAllSync,e.$u=e.Decoder.decodeFirstSync,e.M=e.Diagnose.diagnose,e.cv=e.Encoder.encode,e.N2=e.Encoder.encodeCanonical,e.TG=e.Encoder.encodeOne,e.WR=e.Encoder.encodeAsync,e.Jx=e.Decoder.decodeFirstSync,e.ww={decode:e.Decoder.decodeFirstSync,encode:e.Encoder.encode,buffer:!0,name:"cbor"},e.vc=!0},20:(t,e,r)=>{"use strict";const i=r(830),n=r(873),o=r(774),s=r(202),{MT:a,NUMBYTES:h,SYMS:u}=r(66),{Buffer:c}=r(764);function l(t){return t>1?"s":""}class d extends i.Transform{constructor(t={}){const{depth:e=1,max_depth:r=10,no_summary:i=!1,tags:n={},bigint:a,preferWeb:h,encoding:u,...c}=t;super({...c,readableObjectMode:!1,writableObjectMode:!1}),this.depth=e,this.max_depth=r,this.all=new s,n[24]||(n[24]=this._tag_24.bind(this)),this.parser=new o({tags:n,max_depth:r,bigint:a,preferWeb:h,encoding:u}),this.parser.on("value",this._on_value.bind(this)),this.parser.on("start",this._on_start.bind(this)),this.parser.on("start-string",this._on_start_string.bind(this)),this.parser.on("stop",this._on_stop.bind(this)),this.parser.on("more-bytes",this._on_more.bind(this)),this.parser.on("error",this._on_error.bind(this)),i||this.parser.on("data",this._on_data.bind(this)),this.parser.bs.on("read",this._on_read.bind(this))}_tag_24(t){const e=new d({depth:this.depth+1,no_summary:!0});e.on("data",(t=>this.push(t))),e.on("error",(t=>this.emit("error",t))),e.end(t)}_transform(t,e,r){this.parser.write(t,e,r)}_flush(t){return this.parser._flush(t)}static comment(t,e={},r=null){if(null==t)throw new Error("input required");({options:e,cb:r}=function(t,e){switch(typeof t){case"function":return{options:{},cb:t};case"string":return{options:{encoding:t},cb:e};case"number":return{options:{max_depth:t},cb:e};case"object":return{options:t||{},cb:e};default:throw new TypeError("Unknown option type")}}(e,r));const i=new s,{encoding:o="hex",...a}=e,h=new d(a);let u=null;return"function"==typeof r?(h.on("end",(()=>{r(null,i.toString("utf8"))})),h.on("error",r)):u=new Promise(((t,e)=>{h.on("end",(()=>{t(i.toString("utf8"))})),h.on("error",e)})),h.pipe(i),n.guessEncoding(t,o).pipe(h),u}_on_error(t){this.push("ERROR: "),this.push(t.toString()),this.push("\n")}_on_read(t){this.all.write(t);const e=t.toString("hex");this.push(new Array(this.depth+1).join(" ")),this.push(e);let r=2*(this.max_depth-this.depth)-e.length;return r<1&&(r=1),this.push(new Array(r+1).join(" ")),this.push("-- ")}_on_more(t,e,r,i){let n="";switch(this.depth++,t){case a.POS_INT:n="Positive number,";break;case a.NEG_INT:n="Negative number,";break;case a.ARRAY:n="Array, length";break;case a.MAP:n="Map, count";break;case a.BYTE_STRING:n="Bytes, length";break;case a.UTF8_STRING:n="String, length";break;case a.SIMPLE_FLOAT:n=1===e?"Simple value,":"Float,"}return this.push(n+" next "+e+" byte"+l(e)+"\n")}_on_start_string(t,e,r,i){let n="";switch(this.depth++,t){case a.BYTE_STRING:n="Bytes, length: "+e;break;case a.UTF8_STRING:n="String, length: "+e.toString()}return this.push(n+"\n")}_on_start(t,e,r,i){switch(this.depth++,r){case a.ARRAY:this.push(`[${i}], `);break;case a.MAP:i%2?this.push(`{Val:${Math.floor(i/2)}}, `):this.push(`{Key:${Math.floor(i/2)}}, `)}switch(t){case a.TAG:this.push(`Tag #${e}`),24===e&&this.push(" Encoded CBOR data item");break;case a.ARRAY:e===u.STREAM?this.push("Array (streaming)"):this.push(`Array, ${e} item${l(e)}`);break;case a.MAP:e===u.STREAM?this.push("Map (streaming)"):this.push(`Map, ${e} pair${l(e)}`);break;case a.BYTE_STRING:this.push("Bytes (streaming)");break;case a.UTF8_STRING:this.push("String (streaming)")}return this.push("\n")}_on_stop(t){return this.depth--}_on_value(t,e,r,i){if(t!==u.BREAK)switch(e){case a.ARRAY:this.push(`[${r}], `);break;case a.MAP:r%2?this.push(`{Val:${Math.floor(r/2)}}, `):this.push(`{Key:${Math.floor(r/2)}}, `)}const o=n.cborValueToString(t,-1/0);switch("string"==typeof t||c.isBuffer(t)?(t.length>0&&(this.push(o),this.push("\n")),this.depth--):(this.push(o),this.push("\n")),i){case h.ONE:case h.TWO:case h.FOUR:case h.EIGHT:this.depth--}}_on_data(){return this.push("0x"),this.push(this.all.read().toString("hex")),this.push("\n")}}t.exports=d},66:(t,e,r)=>{"use strict";let i=null;try{i=r(937).BigNumber}catch(t){}if(e.BigNumber=i,e.MT={POS_INT:0,NEG_INT:1,BYTE_STRING:2,UTF8_STRING:3,ARRAY:4,MAP:5,TAG:6,SIMPLE_FLOAT:7},e.TAG={DATE_STRING:0,DATE_EPOCH:1,POS_BIGINT:2,NEG_BIGINT:3,DECIMAL_FRAC:4,BIGFLOAT:5,BASE64URL_EXPECTED:21,BASE64_EXPECTED:22,BASE16_EXPECTED:23,CBOR:24,URI:32,BASE64URL:33,BASE64:34,REGEXP:35,MIME:36,SET:258},e.NUMBYTES={ZERO:0,ONE:24,TWO:25,FOUR:26,EIGHT:27,INDEFINITE:31},e.SIMPLE={FALSE:20,TRUE:21,NULL:22,UNDEFINED:23},e.SYMS={NULL:Symbol.for("github.com/hildjj/node-cbor/null"),UNDEFINED:Symbol.for("github.com/hildjj/node-cbor/undef"),PARENT:Symbol.for("github.com/hildjj/node-cbor/parent"),BREAK:Symbol.for("github.com/hildjj/node-cbor/break"),STREAM:Symbol.for("github.com/hildjj/node-cbor/stream")},e.SHIFT32=4294967296,e.BI={MINUS_ONE:BigInt(-1),NEG_MAX:BigInt(-1)-BigInt(Number.MAX_SAFE_INTEGER),MAXINT32:BigInt("0xffffffff"),MAXINT64:BigInt("0xffffffffffffffff"),SHIFT32:BigInt(e.SHIFT32)},e.BigNumber){const t=new e.BigNumber(-1);e.BN={MINUS_ONE:t,NEG_MAX:t.minus(new e.BigNumber(Number.MAX_SAFE_INTEGER.toString(16),16)),TWO:new e.BigNumber(2),MAXINT:new e.BigNumber("0x20000000000000"),MAXINT32:new e.BigNumber(4294967295),MAXINT64:new e.BigNumber("0xffffffffffffffff"),SHIFT32:new e.BigNumber(e.SHIFT32)}}},774:(t,e,r)=>{"use strict";const i=r(71),n=r(785),o=r(32),s=r(873),a=r(202),h=r(66),{MT:u,NUMBYTES:c,SYMS:l,BI:d}=h,{Buffer:f}=r(764),A=Symbol("count"),g=Symbol("major type"),M=Symbol("error"),B=Symbol("not found");function w(t,e,r){const i=[];return i[A]=r,i[l.PARENT]=t,i[g]=e,i}function E(t,e){const r=new a;return r[A]=-1,r[l.PARENT]=t,r[g]=e,r}function p(t){return s.bufferToBigInt(t)}function m(t){return d.MINUS_ONE-s.bufferToBigInt(t)}class y extends Error{constructor(t,e){super(`Unexpected data: 0x${t.toString(16)}`),this.name="UnexpectedDataError",this.byte=t,this.value=e}}function b(t,e){switch(typeof t){case"function":return{options:{},cb:t};case"string":return{options:{encoding:t},cb:e};case"object":return{options:t||{},cb:e};default:throw new TypeError("Unknown option type")}}class Q extends i{constructor(t={}){const{tags:e={},max_depth:r=-1,bigint:i=!0,preferWeb:n=!1,required:o=!1,encoding:s="hex",extendedResults:h=!1,...u}=t;super({defaultEncoding:s,...u}),this.running=!0,this.max_depth=r,this.tags=e,this.preferWeb=n,this.extendedResults=h,this.bigint=i,this.required=o,h&&(this.bs.on("read",this._onRead.bind(this)),this.valueBytes=new a),i&&(null==this.tags[2]&&(this.tags[2]=p),null==this.tags[3]&&(this.tags[3]=m))}static nullcheck(t){switch(t){case l.NULL:return null;case l.UNDEFINED:return;case B:throw new Error("Value not found");default:return t}}static decodeFirstSync(t,e={}){if(null==t)throw new TypeError("input required");({options:e}=b(e));const{encoding:r="hex",...i}=e,n=new Q(i),o=s.guessEncoding(t,r),a=n._parse();let h=a.next();for(;!h.done;){const t=o.read(h.value);if(null==t||t.length!==h.value)throw new Error("Insufficient data");n.extendedResults&&n.valueBytes.write(t),h=a.next(t)}let u=null;if(n.extendedResults)u=h.value,u.unused=o.read();else if(u=Q.nullcheck(h.value),o.length>0){const t=o.read(1);throw o.unshift(t),new y(t[0],u)}return u}static decodeAllSync(t,e={}){if(null==t)throw new TypeError("input required");({options:e}=b(e));const{encoding:r="hex",...i}=e,n=new Q(i),o=s.guessEncoding(t,r),a=[];for(;o.length>0;){const t=n._parse();let e=t.next();for(;!e.done;){const r=o.read(e.value);if(null==r||r.length!==e.value)throw new Error("Insufficient data");n.extendedResults&&n.valueBytes.write(r),e=t.next(r)}a.push(Q.nullcheck(e.value))}return a}static decodeFirst(t,e={},r=null){if(null==t)throw new TypeError("input required");({options:e,cb:r}=b(e,r));const{encoding:i="hex",required:n=!1,...o}=e,a=new Q(o);let h=B;const u=s.guessEncoding(t,i),c=new Promise(((t,e)=>{a.on("data",(t=>{h=Q.nullcheck(t),a.close()})),a.once("error",(r=>a.extendedResults&&r instanceof y?(h.unused=a.bs.slice(),t(h)):(h!==B&&(r.value=h),h=M,a.close(),e(r)))),a.once("end",(()=>{switch(h){case B:return n?e(new Error("No CBOR found")):t(h);case M:return;default:return t(h)}}))}));return"function"==typeof r&&c.then((t=>r(null,t)),r),u.pipe(a),c}static decodeAll(t,e={},r=null){if(null==t)throw new TypeError("input required");({options:e,cb:r}=b(e,r));const{encoding:i="hex",...n}=e,o=new Q(n),a=[];o.on("data",(t=>a.push(Q.nullcheck(t))));const h=new Promise(((t,e)=>{o.on("error",e),o.on("end",(()=>t(a)))}));return"function"==typeof r&&h.then((t=>r(void 0,t)),(t=>r(t,void 0))),s.guessEncoding(t,i).pipe(o),h}close(){this.running=!1,this.__fresh=!0}_onRead(t){this.valueBytes.write(t)}*_parse(){let t=null,e=0,r=null;for(;;){if(this.max_depth>=0&&e>this.max_depth)throw new Error("Maximum depth "+this.max_depth+" exceeded");const[i]=yield 1;if(!this.running)throw this.bs.unshift(f.from([i])),new y(i);const M=i>>5,B=31&i,p=null!=t?t[g]:void 0,m=null!=t?t.length:void 0;switch(B){case c.ONE:this.emit("more-bytes",M,1,p,m),[r]=yield 1;break;case c.TWO:case c.FOUR:case c.EIGHT:{const t=1<{"use strict";const i=r(830),n=r(774),o=r(873),s=r(202),{MT:a,SYMS:h}=r(66);class u extends i.Transform{constructor(t={}){const{separator:e="\n",stream_errors:r=!1,tags:i,max_depth:o,bigint:s,preferWeb:a,encoding:h,...u}=t;super({...u,readableObjectMode:!1,writableObjectMode:!1}),this.float_bytes=-1,this.separator=e,this.stream_errors=r,this.parser=new n({tags:i,max_depth:o,bigint:s,preferWeb:a,encoding:h}),this.parser.on("more-bytes",this._on_more.bind(this)),this.parser.on("value",this._on_value.bind(this)),this.parser.on("start",this._on_start.bind(this)),this.parser.on("stop",this._on_stop.bind(this)),this.parser.on("data",this._on_data.bind(this)),this.parser.on("error",this._on_error.bind(this))}_transform(t,e,r){return this.parser.write(t,e,r)}_flush(t){return this.parser._flush((e=>this.stream_errors?(e&&this._on_error(e),t()):t(e)))}static diagnose(t,e={},r=null){if(null==t)throw new Error("input required");({options:e,cb:r}=function(t,e){switch(typeof t){case"function":return{options:{},cb:t};case"string":return{options:{encoding:t},cb:e};case"object":return{options:t||{},cb:e};default:throw new TypeError("Unknown option type")}}(e,r));const{encoding:i="hex",...n}=e,a=new s,h=new u(n);let c=null;return"function"==typeof r?(h.on("end",(()=>r(null,a.toString("utf8")))),h.on("error",r)):c=new Promise(((t,e)=>{h.on("end",(()=>t(a.toString("utf8")))),h.on("error",e)})),h.pipe(a),o.guessEncoding(t,i).pipe(h),c}_on_error(t){return this.stream_errors?this.push(t.toString()):this.emit("error",t)}_on_more(t,e,r,i){t===a.SIMPLE_FLOAT&&(this.float_bytes={2:1,4:2,8:3}[e])}_fore(t,e){switch(t){case a.BYTE_STRING:case a.UTF8_STRING:case a.ARRAY:e>0&&this.push(", ");break;case a.MAP:e>0&&(e%2?this.push(": "):this.push(", "))}}_on_value(t,e,r){if(t===h.BREAK)return;this._fore(e,r);const i=this.float_bytes;this.float_bytes=-1,this.push(o.cborValueToString(t,i))}_on_start(t,e,r,i){switch(this._fore(r,i),t){case a.TAG:this.push(`${e}(`);break;case a.ARRAY:this.push("[");break;case a.MAP:this.push("{");break;case a.BYTE_STRING:case a.UTF8_STRING:this.push("(")}e===h.STREAM&&this.push("_ ")}_on_stop(t){switch(t){case a.TAG:this.push(")");break;case a.ARRAY:this.push("]");break;case a.MAP:this.push("}");break;case a.BYTE_STRING:case a.UTF8_STRING:this.push(")")}}_on_data(){this.push(this.separator)}}t.exports=u},666:(t,e,r)=>{"use strict";const i=r(830),n=r(202),o=r(873),s=r(66),{MT:a,NUMBYTES:h,SHIFT32:u,SIMPLE:c,SYMS:l,TAG:d,BI:f}=s,{Buffer:A}=r(764),g=a.SIMPLE_FLOAT<<5|h.TWO,M=a.SIMPLE_FLOAT<<5|h.FOUR,B=a.SIMPLE_FLOAT<<5|h.EIGHT,w=a.SIMPLE_FLOAT<<5|c.TRUE,E=a.SIMPLE_FLOAT<<5|c.FALSE,p=a.SIMPLE_FLOAT<<5|c.UNDEFINED,m=a.SIMPLE_FLOAT<<5|c.NULL,y=A.from([255]),b=A.from("f97e00","hex"),Q=A.from("f9fc00","hex"),I=A.from("f97c00","hex"),C=A.from("f98000","hex");class D extends i.Transform{constructor(t={}){const{canonical:e=!1,encodeUndefined:r,disallowUndefinedKeys:i=!1,dateType:o="number",collapseBigIntegers:a=!1,detectLoops:h=!1,omitUndefinedProperties:u=!1,genTypes:c=[],...l}=t;if(super({...l,readableObjectMode:!1,writableObjectMode:!0}),this.canonical=e,this.encodeUndefined=r,this.disallowUndefinedKeys=i,this.dateType=function(t){if(!t)return"number";switch(t.toLowerCase()){case"number":return"number";case"float":return"float";case"int":return"int";case"string":return"string"}throw new TypeError(`dateType invalid, got "${t}"`)}(o),this.collapseBigIntegers=!!this.canonical||a,this.detectLoops=h,"boolean"==typeof h)h&&(this.detectLoops=new WeakSet);else if(!(h instanceof WeakSet))throw new TypeError("detectLoops must be boolean or WeakSet");if(this.omitUndefinedProperties=u,this.semanticTypes={Array:this._pushArray,Date:this._pushDate,Buffer:this._pushBuffer,[A.name]:this._pushBuffer,Map:this._pushMap,NoFilter:this._pushNoFilter,[n.name]:this._pushNoFilter,RegExp:this._pushRegexp,Set:this._pushSet,ArrayBuffer:this._pushArrayBuffer,Uint8ClampedArray:this._pushTypedArray,Uint8Array:this._pushTypedArray,Uint16Array:this._pushTypedArray,Uint32Array:this._pushTypedArray,Int8Array:this._pushTypedArray,Int16Array:this._pushTypedArray,Int32Array:this._pushTypedArray,Float32Array:this._pushTypedArray,Float64Array:this._pushTypedArray,URL:this._pushURL,Boolean:this._pushBoxed,Number:this._pushBoxed,String:this._pushBoxed},s.BigNumber&&(this.semanticTypes[s.BigNumber.name]=this._pushBigNumber),"undefined"!=typeof BigUint64Array&&(this.semanticTypes[BigUint64Array.name]=this._pushTypedArray),"undefined"!=typeof BigInt64Array&&(this.semanticTypes[BigInt64Array.name]=this._pushTypedArray),Array.isArray(c))for(let t=0,e=c.length;tvoid 0!==e))),r.indefinite){if(!t._pushUInt8(a.MAP<<5|h.INDEFINITE))return!1}else if(!t._pushInt(i.length,a.MAP))return!1;if(t.canonical){const e=new D({genTypes:t.semanticTypes,canonical:t.canonical,detectLoops:!!t.detectLoops,dateType:t.dateType,disallowUndefinedKeys:t.disallowUndefinedKeys,collapseBigIntegers:t.collapseBigIntegers}),r=new n({highWaterMark:t.readableHighWaterMark});e.pipe(r),i.sort((([t],[i])=>{e.pushAny(t);const n=r.read();e.pushAny(i);const o=r.read();return n.compare(o)}));for(const[e,r]of i){if(t.disallowUndefinedKeys&&void 0===e)throw new Error("Invalid Map key: undefined");if(!t.pushAny(e)||!t.pushAny(r))return!1}}else for(const[e,r]of i){if(t.disallowUndefinedKeys&&void 0===e)throw new Error("Invalid Map key: undefined");if(!t.pushAny(e)||!t.pushAny(r))return!1}return!(r.indefinite&&!t.push(y))}_pushTypedArray(t,e){let r=64,i=e.BYTES_PER_ELEMENT;const{name:n}=e.constructor;return n.startsWith("Float")?(r|=16,i/=2):n.includes("U")||(r|=8),(n.includes("Clamped")||1!==i&&!o.isBigEndian())&&(r|=4),r|={1:0,2:1,4:2,8:3}[i],!!t._pushTag(r)&&t._pushBuffer(t,A.from(e.buffer,e.byteOffset,e.byteLength))}_pushArrayBuffer(t,e){return t._pushBuffer(t,A.from(e))}removeLoopDetectors(){return!!this.detectLoops&&(this.detectLoops=new WeakSet,!0)}_pushObject(t,e){if(!t)return this._pushNull(t);if(!(e={indefinite:!1,skipTypes:!1,...e}).indefinite&&this.detectLoops){if(this.detectLoops.has(t))throw new Error("Loop detected while CBOR encoding.\nCall removeLoopDetectors before resuming.");this.detectLoops.add(t)}if(!e.skipTypes){const e=t.encodeCBOR;if("function"==typeof e)return e.call(t,this);const r=this.semanticTypes[t.constructor.name];if(r)return r.call(t,this,t)}const r=Object.keys(t).filter((e=>{const r=typeof t[e];return"function"!==r&&(!this.omitUndefinedProperties||"undefined"!==r)})),i={};if(this.canonical&&r.sort(((t,e)=>{const r=i[t]||(i[t]=D.encode(t)),n=i[e]||(i[e]=D.encode(e));return r.compare(n)})),e.indefinite){if(!this._pushUInt8(a.MAP<<5|h.INDEFINITE))return!1}else if(!this._pushInt(r.length,a.MAP))return!1;let n=null;for(let e=0,o=r.length;e{const n=[],o=new D(e);o.on("data",(t=>n.push(t))),o.on("error",i),o.on("finish",(()=>r(A.concat(n)))),o.pushAny(t),o.end()}))}}t.exports=D},70:(t,e,r)=>{"use strict";const{Buffer:i}=r(764),n=r(666),o=r(774),{MT:s}=r(66);class a extends Map{constructor(t){super(t)}static _encode(t){return n.encodeCanonical(t).toString("base64")}static _decode(t){return o.decodeFirstSync(t,"base64")}get(t){return super.get(a._encode(t))}set(t,e){return super.set(a._encode(t),e)}delete(t){return super.delete(a._encode(t))}has(t){return super.has(a._encode(t))}*keys(){for(const t of super.keys())yield a._decode(t)}*entries(){for(const t of super.entries())yield[a._decode(t[0]),t[1]]}[Symbol.iterator](){return this.entries()}forEach(t,e){if("function"!=typeof t)throw new TypeError("Must be function");for(const e of super.entries())t.call(this,e[1],a._decode(e[0]),this)}encodeCBOR(t){if(!t._pushInt(this.size,s.MAP))return!1;if(t.canonical){const e=Array.from(super.entries()).map((t=>[i.from(t[0],"base64"),t[1]]));e.sort(((t,e)=>t[0].compare(e[0])));for(const r of e)if(!t.push(r[0])||!t.pushAny(r[1]))return!1}else for(const e of super.entries())if(!t.push(i.from(e[0],"base64"))||!t.pushAny(e[1]))return!1;return!0}}t.exports=a},32:(t,e,r)=>{"use strict";const{MT:i,SIMPLE:n,SYMS:o}=r(66);class s{constructor(t){if("number"!=typeof t)throw new Error("Invalid Simple type: "+typeof t);if(t<0||t>255||(0|t)!==t)throw new Error("value must be a small positive integer: "+t);this.value=t}toString(){return"simple("+this.value+")"}inspect(t,e){return"simple("+this.value+")"}encodeCBOR(t){return t._pushInt(this.value,i.SIMPLE_FLOAT)}static isSimple(t){return t instanceof s}static decode(t,e=!0,r=!1){switch(t){case n.FALSE:return!1;case n.TRUE:return!0;case n.NULL:return e?null:o.NULL;case n.UNDEFINED:if(e)return;return o.UNDEFINED;case-1:if(!e||!r)throw new Error("Invalid BREAK");return o.BREAK;default:return new s(t)}}}t.exports=s},785:(t,e,r)=>{"use strict";const i=r(66),n=r(873);function o(t,e){if(n.isBufferish(t))t.toJSON=e;else if(Array.isArray(t))for(const r of t)o(r,e);else if(t&&"object"==typeof t&&(!(t instanceof h)||t.tag<21||t.tag>23))for(const r of Object.values(t))o(r,e)}const s={64:Uint8Array,65:Uint16Array,66:Uint32Array,68:Uint8ClampedArray,69:Uint16Array,70:Uint32Array,72:Int8Array,73:Int16Array,74:Int32Array,77:Int16Array,78:Int32Array,81:Float32Array,82:Float64Array,85:Float32Array,86:Float64Array};"undefined"!=typeof BigUint64Array&&(s[67]=BigUint64Array,s[71]=BigUint64Array),"undefined"!=typeof BigInt64Array&&(s[75]=BigInt64Array,s[79]=BigInt64Array);const a=Symbol("INTERNAL_JSON");class h{constructor(t,e,r){if(this.tag=t,this.value=e,this.err=r,"number"!=typeof this.tag)throw new Error("Invalid tag type ("+typeof this.tag+")");if(this.tag<0||(0|this.tag)!==this.tag)throw new Error("Tag must be a positive integer: "+this.tag)}toJSON(){if(this[a])return this[a]();const t={tag:this.tag,value:this.value};return this.err&&(t.err=this.err),t}toString(){return`${this.tag}(${JSON.stringify(this.value)})`}encodeCBOR(t){return t._pushTag(this.tag),t.pushAny(this.value)}convert(t){let e=null!=t?t[this.tag]:void 0;if("function"!=typeof e&&(e=h["_tag_"+this.tag],"function"!=typeof e)){if(e=s[this.tag],"function"!=typeof e)return this;e=this._toTypedArray}try{return e.call(this,this.value)}catch(t){return t&&t.message&&t.message.length>0?this.err=t.message:this.err=t,this}}_toTypedArray(t){const{tag:e}=this,r=s[e];if(!r)throw new Error(`Invalid typed array tag: ${e}`);const i=2**(((16&e)>>4)+(3&e));return!(4&e)!==n.isBigEndian()&&i>1&&function(t,e,r,i){const n=new DataView(t),[o,s]={2:[n.getUint16,n.setUint16],4:[n.getUint32,n.setUint32],8:[n.getBigUint64,n.setBigUint64]}[e],a=r+i;for(let t=r;tn.base64url(t):o(t,(function(){return n.base64url(this)})),this}static _tag_22(t){return n.isBufferish(t)?this[a]=()=>n.base64(t):o(t,(function(){return n.base64(this)})),this}static _tag_23(t){return n.isBufferish(t)?this[a]=()=>t.toString("hex"):o(t,(function(){return this.toString("hex")})),this}static _tag_32(t){return new URL(t)}static _tag_33(t){if(!t.match(/^[a-zA-Z0-9_-]+$/))throw new Error("Invalid base64url characters");const e=t.length%4;if(1===e)throw new Error("Invalid base64url length");if(2===e){if(-1==="AQgw".indexOf(t[t.length-1]))throw new Error("Invalid base64 padding")}else if(3===e&&-1==="AEIMQUYcgkosw048".indexOf(t[t.length-1]))throw new Error("Invalid base64 padding");return this}static _tag_34(t){const e=t.match(/^[a-zA-Z0-9+/]+(={0,2})$/);if(!e)throw new Error("Invalid base64url characters");if(t.length%4!=0)throw new Error("Invalid base64url length");if("="===e[1]){if(-1==="AQgw".indexOf(t[t.length-2]))throw new Error("Invalid base64 padding")}else if("=="===e[1]&&-1==="AEIMQUYcgkosw048".indexOf(t[t.length-3]))throw new Error("Invalid base64 padding");return this}static _tag_35(t){return new RegExp(t)}static _tag_258(t){return new Set(t)}}h.INTERNAL_JSON=a,t.exports=h},873:(t,e,r)=>{"use strict";const{Buffer:i}=r(764),n=r(202),o=r(830),s=r(960),a=r(66),{NUMBYTES:h,SHIFT32:u,BI:c,SYMS:l}=a;let d=null;try{d=r(669)}catch(t){d=r(595)}e.inspect=d.inspect;const f=new s("utf8",{fatal:!0,ignoreBOM:!0});e.utf8=t=>f.decode(t),e.utf8.checksUTF8=!0,e.isBufferish=function(t){return t&&"object"==typeof t&&(i.isBuffer(t)||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof ArrayBuffer||t instanceof DataView)},e.bufferishToBuffer=function(t){return i.isBuffer(t)?t:ArrayBuffer.isView(t)?i.from(t.buffer,t.byteOffset,t.byteLength):t instanceof ArrayBuffer?i.from(t):null},e.parseCBORint=function(t,e,r=!0){switch(t){case h.ONE:return e.readUInt8(0);case h.TWO:return e.readUInt16BE(0);case h.FOUR:return e.readUInt32BE(0);case h.EIGHT:{const t=e.readUInt32BE(0),i=e.readUInt32BE(4);if(t>2097151){if(r)return BigInt(t)*c.SHIFT32+BigInt(i);if(!a.BigNumber)throw new Error("No bigint and no bignumber.js");return new a.BigNumber(t).times(u).plus(i)}return t*u+i}default:throw new Error("Invalid additional info for int: "+t)}},e.writeHalf=function(t,e){const r=i.allocUnsafe(4);r.writeFloatBE(e,0);const n=r.readUInt32BE(0);if(0!=(8191&n))return!1;let o=n>>16&32768;const s=n>>23&255,a=8388607&n;if(s>=113&&s<=142)o+=(s-112<<10)+(a>>13);else{if(!(s>=103&&s<113))return!1;if(a&(1<<126-s)-1)return!1;o+=a+8388608>>126-s}return t.writeUInt16BE(o),!0},e.parseHalf=function(t){const e=128&t[0]?-1:1,r=(124&t[0])>>2,i=(3&t[0])<<8|t[1];return r?31===r?e*(i?NaN:1/0):e*Math.pow(2,r-25)*(1024+i):5.960464477539063e-8*e*i},e.parseCBORfloat=function(t){switch(t.length){case 2:return e.parseHalf(t);case 4:return t.readFloatBE(0);case 8:return t.readDoubleBE(0);default:throw new Error("Invalid float size: "+t.length)}},e.hex=function(t){return i.from(t.replace(/^0x/,""),"hex")},e.bin=function(t){let e=0,r=(t=t.replace(/\s/g,"")).length%8||8;const n=[];for(;r<=t.length;)n.push(parseInt(t.slice(e,r),2)),e=r,r+=8;return i.from(n)},e.arrayEqual=function(t,e){return null==t&&null==e||null!=t&&null!=e&&t.length===e.length&&t.every(((t,r)=>t===e[r]))},e.bufferToBignumber=function(t){if(!a.BigNumber)throw new Error("No bigint and no bignumber.js");return new a.BigNumber(t.toString("hex"),16)},e.bufferToBigInt=function(t){return BigInt("0x"+t.toString("hex"))},e.cborValueToString=function(t,r=-1){switch(typeof t){case"symbol":{switch(t){case l.NULL:return"null";case l.UNDEFINED:return"undefined";case l.BREAK:return"BREAK"}if(t.description)return t.description;const e=t.toString().match(/^Symbol\((.*)\)/);return e&&e[1]?e[1]:"Symbol"}case"string":return JSON.stringify(t);case"bigint":return t.toString();case"number":return r>0?d.inspect(t)+"_"+r:d.inspect(t)}const i=e.bufferishToBuffer(t);if(i){const t=i.toString("hex");return r===-1/0?t:`h'${t}'`}return a.BigNumber&&a.BigNumber.isBigNumber(t)?t.toString():t&&"function"==typeof t.inspect?t.inspect():d.inspect(t)},e.guessEncoding=function(t,r){if("string"==typeof t)return new n(t,null!=r?r:"hex");const i=e.bufferishToBuffer(t);if(i)return new n(i);if((s=t)instanceof o.Readable||["read","on","pipe"].every((t=>"function"==typeof s[t])))return t;var s;throw new Error("Unknown input type")};const A={"=":"","+":"-","/":"_"};e.base64url=function(t){return e.bufferishToBuffer(t).toString("base64").replace(/[=+/]/g,(t=>A[t]))},e.base64=function(t){return e.bufferishToBuffer(t).toString("base64")},e.isBigEndian=function(){const t=new Uint8Array(4);return!((new Uint32Array(t.buffer)[0]=1)&t[0])}},960:(t,e,r)=>{"use strict";let i=null;if("function"==typeof TextDecoder)i=TextDecoder;else if("undefined"!=typeof window)i=window.TextDecoder;else if("undefined"!=typeof self)i=self.TextDecoder;else try{const t=r(669);"function"!=typeof i&&(i=t.TextDecoder)}catch(t){}if("function"!=typeof i){class t{constructor(t,e){this.utfLabel=t,this.options=e}decode(t){const e=t.toString(this.utfLabel);if(this.options.fatal)for(const t of e)if(65533===t.codePointAt(0)){const t=new TypeError("[ERR_ENCODING_INVALID_ENCODED_DATA]: The encoded data was not valid for encoding "+this.utfLabel);throw t.code="ERR_ENCODING_INVALID_ENCODED_DATA",t.errno=12,t}return e}}i=t}t.exports=i},202:(t,e,r)=>{"use strict";const i=r(830),{Buffer:n}=r(764),o=r(960);let s=null,a=Symbol.for("nodejs.util.inspect.custom");try{s=r(669),a=s.inspect.custom}catch(t){}const h=new o("utf8",{fatal:!0,ignoreBOM:!0});class u extends i.Transform{constructor(t,e,r){null==r&&(r={});let i=null,o=null;switch(typeof t){case"object":n.isBuffer(t)?(i=t,null!=e&&"object"==typeof e&&(r=e)):r=t;break;case"string":i=t,null!=e&&"object"==typeof e?r=e:o=e}null==r&&(r={}),null==i&&(i=r.input),null==o&&(o=r.inputEncoding),delete r.input,delete r.inputEncoding;const s=null==r.watchPipe||r.watchPipe;delete r.watchPipe;const a=!!r.readError;delete r.readError,super(r),this.readError=a,s&&this.on("pipe",(t=>{const e=t._readableState.objectMode;if(this.length>0&&e!==this._readableState.objectMode)throw new Error("Do not switch objectMode in the middle of the stream");this._readableState.objectMode=e,this._writableState.objectMode=e})),null!=i&&this.end(i,o)}static isNoFilter(t){return t instanceof this}static compare(t,e){if(!(t instanceof this))throw new TypeError("Arguments must be NoFilters");return t===e?0:t.compare(e)}static concat(t,e){if(!Array.isArray(t))throw new TypeError("list argument must be an Array of NoFilters");if(0===t.length||0===e)return n.alloc(0);null==e&&(e=t.reduce(((t,e)=>{if(!(e instanceof u))throw new TypeError("list argument must be an Array of NoFilters");return t+e.length}),0));let r=!0,i=!0;const o=t.map((t=>{if(!(t instanceof u))throw new TypeError("list argument must be an Array of NoFilters");const e=t.slice();return n.isBuffer(e)?i=!1:r=!1,e}));if(r)return n.concat(o,e);if(i)return[].concat(...o).slice(0,e);throw new Error("Concatenating mixed object and byte streams not supported")}_transform(t,e,r){this._readableState.objectMode||n.isBuffer(t)||(t=n.from(t,e)),this.push(t),r()}_bufArray(){let t=this._readableState.buffer;if(!Array.isArray(t)){let e=t.head;for(t=[];null!=e;)t.push(e.data),e=e.next}return t}read(t){const e=super.read(t);if(null!=e){if(this.emit("read",e),this.readError&&e.length{this.on("finish",(()=>{const i=this.read();null==t||e||(e=!0,t(null,i)),r(i)})),this.on("error",(r=>{null==t||e||(e=!0,t(r)),i(r)}))}))}compare(t){if(!(t instanceof u))throw new TypeError("Arguments must be NoFilters");if(this===t)return 0;const e=this.slice(),r=t.slice();if(n.isBuffer(e)&&n.isBuffer(r))return e.compare(r);throw new Error("Cannot compare streams in object mode")}equals(t){return 0===this.compare(t)}slice(t,e){if(this._readableState.objectMode)return this._bufArray().slice(t,e);const r=this._bufArray();switch(r.length){case 0:return n.alloc(0);case 1:return r[0].slice(t,e);default:return n.concat(r).slice(t,e)}}get(t){return this.slice()[t]}toJSON(){const t=this.slice();return n.isBuffer(t)?t.toJSON():t}toString(t,e,r){const i=this.slice(e,r);return n.isBuffer(i)?t&&"utf8"!==t?i.toString(t,e,r):h.decode(i):JSON.stringify(i)}inspect(t,e){return this[a](t,e)}[a](t,e){const r=this._bufArray().map((t=>n.isBuffer(t)?(null!=e?e.stylize:void 0)?e.stylize(t.toString("hex"),"string"):t.toString("hex"):s?s.inspect(t,e):t.toString())).join(", ");return`${this.constructor.name} [${r}]`}get length(){return this._readableState.length}writeBigInt(t){let e=t.toString(16);if(t<0){const r=BigInt(Math.floor(e.length/2));e=(t=(BigInt(1)<{"use strict";const i=r(830),n=r(202),o=i.Transform;t.exports=class extends o{constructor(t){super(t),this._writableState.objectMode=!1,this._readableState.objectMode=!0,this.bs=new n,this.__restart()}_transform(t,e,r){for(this.bs.write(t);this.bs.length>=this.__needed;){let e=null;const i=null===this.__needed?void 0:this.bs.read(this.__needed);try{e=this.__parser.next(i)}catch(t){return r(t)}this.__needed&&(this.__fresh=!1),e.done?(this.push(e.value),this.__restart()):this.__needed=e.value||1/0}return r()}*_parse(){throw new Error("Must be implemented in subclass")}__restart(){this.__needed=null,this.__parser=this._parse(),this.__fresh=!0}_flush(t){t(this.__fresh?null:new Error("unexpected end of input"))}}},187:t=>{"use strict";var e,r="object"==typeof Reflect?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};e=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var n=Number.isNaN||function(t){return t!=t};function o(){o.init.call(this)}t.exports=o,t.exports.once=function(t,e){return new Promise((function(r,i){function n(r){t.removeListener(e,o),i(r)}function o(){"function"==typeof t.removeListener&&t.removeListener("error",n),r([].slice.call(arguments))}g(t,e,o,{once:!0}),"error"!==e&&function(t,e,r){"function"==typeof t.on&&g(t,"error",e,{once:!0})}(t,n)}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function a(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function h(t){return void 0===t._maxListeners?o.defaultMaxListeners:t._maxListeners}function u(t,e,r,i){var n,o,s,u;if(a(r),void 0===(o=t._events)?(o=t._events=Object.create(null),t._eventsCount=0):(void 0!==o.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),o=t._events),s=o[e]),void 0===s)s=o[e]=r,++t._eventsCount;else if("function"==typeof s?s=o[e]=i?[r,s]:[s,r]:i?s.unshift(r):s.push(r),(n=h(t))>0&&s.length>n&&!s.warned){s.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=s.length,u=c,console&&console.warn&&console.warn(u)}return t}function c(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function l(t,e,r){var i={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},n=c.bind(i);return n.listener=r,i.wrapFn=n,n}function d(t,e,r){var i=t._events;if(void 0===i)return[];var n=i[e];return void 0===n?[]:"function"==typeof n?r?[n.listener||n]:[n]:r?function(t){for(var e=new Array(t.length),r=0;r0&&(s=e[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var h=o[t];if(void 0===h)return!1;if("function"==typeof h)i(h,this,e);else{var u=h.length,c=A(h,u);for(r=0;r=0;o--)if(r[o]===e||r[o].listener===e){s=r[o].listener,n=o;break}if(n<0)return this;0===n?r.shift():function(t,e){for(;e+1=0;i--)this.removeListener(t,e[i]);return this},o.prototype.listeners=function(t){return d(this,t,!0)},o.prototype.rawListeners=function(t){return d(this,t,!1)},o.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):f.call(t,e)},o.prototype.listenerCount=f,o.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}},645:(t,e)=>{e.read=function(t,e,r,i,n){var o,s,a=8*n-i-1,h=(1<>1,c=-7,l=r?n-1:0,d=r?-1:1,f=t[e+l];for(l+=d,o=f&(1<<-c)-1,f>>=-c,c+=a;c>0;o=256*o+t[e+l],l+=d,c-=8);for(s=o&(1<<-c)-1,o>>=-c,c+=i;c>0;s=256*s+t[e+l],l+=d,c-=8);if(0===o)o=1-u;else{if(o===h)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,i),o-=u}return(f?-1:1)*s*Math.pow(2,o-i)},e.write=function(t,e,r,i,n,o){var s,a,h,u=8*o-n-1,c=(1<>1,d=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,f=i?0:o-1,A=i?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=c):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),(e+=s+l>=1?d/h:d*Math.pow(2,1-l))*h>=2&&(s++,h/=2),s+l>=c?(a=0,s=c):s+l>=1?(a=(e*h-1)*Math.pow(2,n),s+=l):(a=e*Math.pow(2,l-1)*Math.pow(2,n),s=0));n>=8;t[r+f]=255&a,f+=A,a/=256,n-=8);for(s=s<0;t[r+f]=255&s,f+=A,s/=256,u-=8);t[r+f-A]|=128*g}},717:t=>{"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},595:function(t){t.exports=(()=>{"use strict";var t={255:(t,e)=>{e.l=class{hexSlice(t=0,e){return Array.prototype.map.call(this.slice(t,e),(t=>("00"+t.toString(16)).slice(-2))).join("")}}},48:(t,e,r)=>{const i=r(765),{internalBinding:n,Array:o,ArrayIsArray:s,ArrayPrototypeFilter:a,ArrayPrototypeForEach:h,ArrayPrototypePush:u,ArrayPrototypePushApply:c,ArrayPrototypeSort:l,ArrayPrototypeUnshift:d,BigIntPrototypeValueOf:f,BooleanPrototypeValueOf:A,DatePrototypeGetTime:g,DatePrototypeToISOString:M,DatePrototypeToString:B,ErrorPrototypeToString:w,FunctionPrototypeCall:E,FunctionPrototypeToString:p,JSONStringify:m,MapPrototypeGetSize:y,MapPrototypeEntries:b,MathFloor:Q,MathMax:I,MathMin:C,MathRound:D,MathSqrt:N,Number:v,NumberIsNaN:G,NumberParseFloat:R,NumberParseInt:Y,NumberPrototypeValueOf:U,Object:V,ObjectAssign:T,ObjectCreate:S,ObjectDefineProperty:k,ObjectGetOwnPropertyDescriptor:F,ObjectGetOwnPropertyNames:L,ObjectGetOwnPropertySymbols:j,ObjectGetPrototypeOf:Z,ObjectIs:H,ObjectKeys:z,ObjectPrototypeHasOwnProperty:x,ObjectPrototypePropertyIsEnumerable:O,ObjectSeal:W,ObjectSetPrototypeOf:J,ReflectOwnKeys:X,RegExp:K,RegExpPrototypeTest:P,RegExpPrototypeToString:_,SafeStringIterator:q,SafeMap:$,SafeSet:tt,SetPrototypeGetSize:et,SetPrototypeValues:rt,String:it,StringPrototypeCharCodeAt:nt,StringPrototypeCodePointAt:ot,StringPrototypeIncludes:st,StringPrototypeNormalize:at,StringPrototypePadEnd:ht,StringPrototypePadStart:ut,StringPrototypeRepeat:ct,StringPrototypeReplace:lt,StringPrototypeSlice:dt,StringPrototypeSplit:ft,StringPrototypeToLowerCase:At,StringPrototypeTrim:gt,StringPrototypeValueOf:Mt,SymbolPrototypeToString:Bt,SymbolPrototypeValueOf:wt,SymbolIterator:Et,SymbolToStringTag:pt,TypedArrayPrototypeGetLength:mt,TypedArrayPrototypeGetSymbolToStringTag:yt,Uint8Array:bt,uncurryThis:Qt}=i,{getOwnNonIndexProperties:It,getPromiseDetails:Ct,getProxyDetails:Dt,kPending:Nt,kRejected:vt,previewEntries:Gt,getConstructorName:Rt,getExternalValue:Yt,propertyFilter:{ALL_PROPERTIES:Ut,ONLY_ENUMERABLE:Vt},Proxy:Tt}=r(891),{customInspectSymbol:St,isError:kt,join:Ft,removeColors:Lt}=r(335),{codes:{ERR_INVALID_ARG_TYPE:jt},isStackOverflowError:Zt}=r(101),{isAsyncFunction:Ht,isGeneratorFunction:zt,isAnyArrayBuffer:xt,isArrayBuffer:Ot,isArgumentsObject:Wt,isBoxedPrimitive:Jt,isDataView:Xt,isExternal:Kt,isMap:Pt,isMapIterator:_t,isModuleNamespaceObject:qt,isNativeError:$t,isPromise:te,isSet:ee,isSetIterator:re,isWeakMap:ie,isWeakSet:ne,isRegExp:oe,isDate:se,isTypedArray:ae,isStringObject:he,isNumberObject:ue,isBooleanObject:ce,isBigIntObject:le}=r(63),de=r(183),{NativeModule:fe}=r(992),{validateObject:Ae}=r(356);let ge;const Me=new tt(a(L(r.g),(t=>P(/^[A-Z][a-zA-Z0-9]+$/,t)))),Be=t=>void 0===t&&void 0!==t,we=W({showHidden:!1,depth:2,colors:!1,customInspect:!0,showProxy:!1,maxArrayLength:100,maxStringLength:1e4,breakLength:80,compact:3,sorted:!1,getters:!1}),Ee=/[\x00-\x1f\x27\x5c\x7f-\x9f]/,pe=/[\x00-\x1f\x27\x5c\x7f-\x9f]/g,me=/[\x00-\x1f\x5c\x7f-\x9f]/,ye=/[\x00-\x1f\x5c\x7f-\x9f]/g,be=/^[a-zA-Z_][a-zA-Z_0-9]*$/,Qe=/^(0|[1-9][0-9]*)$/,Ie=/^ at (?:[^/\\(]+ \(|)node:(.+):\d+:\d+\)?$/,Ce=/^ at (?:[^/\\(]+ \(|)(.+)\.js:\d+:\d+\)?$/,De=/[/\\]node_modules[/\\](.+?)(?=[/\\])/g,Ne=/^(\s+[^(]*?)\s*{/,ve=/(\/\/.*?\n)|(\/\*(.|\n)*?\*\/)/g,Ge=["\\x00","\\x01","\\x02","\\x03","\\x04","\\x05","\\x06","\\x07","\\b","\\t","\\n","\\x0B","\\f","\\r","\\x0E","\\x0F","\\x10","\\x11","\\x12","\\x13","\\x14","\\x15","\\x16","\\x17","\\x18","\\x19","\\x1A","\\x1B","\\x1C","\\x1D","\\x1E","\\x1F","","","","","","","","\\'","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\\\","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\x7F","\\x80","\\x81","\\x82","\\x83","\\x84","\\x85","\\x86","\\x87","\\x88","\\x89","\\x8A","\\x8B","\\x8C","\\x8D","\\x8E","\\x8F","\\x90","\\x91","\\x92","\\x93","\\x94","\\x95","\\x96","\\x97","\\x98","\\x99","\\x9A","\\x9B","\\x9C","\\x9D","\\x9E","\\x9F"],Re=new K("[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)|(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))","g");let Ye;function Ue(t,e){const r={budget:{},indentationLvl:0,seen:[],currentDepth:0,stylize:Ze,showHidden:we.showHidden,depth:we.depth,colors:we.colors,customInspect:we.customInspect,showProxy:we.showProxy,maxArrayLength:we.maxArrayLength,maxStringLength:we.maxStringLength,breakLength:we.breakLength,compact:we.compact,sorted:we.sorted,getters:we.getters};if(arguments.length>1)if(arguments.length>2&&(void 0!==arguments[2]&&(r.depth=arguments[2]),arguments.length>3&&void 0!==arguments[3]&&(r.colors=arguments[3])),"boolean"==typeof e)r.showHidden=e;else if(e){const t=z(e);for(let i=0;iwe,set:t=>(Ae(t,"options"),T(we,t))});const Ve=39,Te=49;function Se(t,e){k(Ue.colors,e,{get(){return this[t]},set(e){this[t]=e},configurable:!0,enumerable:!1})}function ke(t,e){return-1===e?`"${t}"`:-2===e?`\`${t}\``:`'${t}'`}Ue.colors=T(S(null),{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],blink:[5,25],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],doubleunderline:[21,24],black:[30,Ve],red:[31,Ve],green:[32,Ve],yellow:[33,Ve],blue:[34,Ve],magenta:[35,Ve],cyan:[36,Ve],white:[37,Ve],bgBlack:[40,Te],bgRed:[41,Te],bgGreen:[42,Te],bgYellow:[43,Te],bgBlue:[44,Te],bgMagenta:[45,Te],bgCyan:[46,Te],bgWhite:[47,Te],framed:[51,54],overlined:[53,55],gray:[90,Ve],redBright:[91,Ve],greenBright:[92,Ve],yellowBright:[93,Ve],blueBright:[94,Ve],magentaBright:[95,Ve],cyanBright:[96,Ve],whiteBright:[97,Ve],bgGray:[100,Te],bgRedBright:[101,Te],bgGreenBright:[102,Te],bgYellowBright:[103,Te],bgBlueBright:[104,Te],bgMagentaBright:[105,Te],bgCyanBright:[106,Te],bgWhiteBright:[107,Te]}),Se("gray","grey"),Se("gray","blackBright"),Se("bgGray","bgGrey"),Se("bgGray","bgBlackBright"),Se("dim","faint"),Se("strikethrough","crossedout"),Se("strikethrough","strikeThrough"),Se("strikethrough","crossedOut"),Se("hidden","conceal"),Se("inverse","swapColors"),Se("inverse","swapcolors"),Se("doubleunderline","doubleUnderline"),Ue.styles=T(S(null),{special:"cyan",number:"yellow",bigint:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",symbol:"green",date:"magenta",regexp:"red",module:"underline"});const Fe=t=>Ge[nt(t)];function Le(t){let e=Ee,r=pe,i=39;if(st(t,"'")&&(st(t,'"')?st(t,"`")||st(t,"${")||(i=-2):i=-1,39!==i&&(e=me,r=ye)),t.length<5e3&&!P(e,t))return ke(t,i);if(t.length>100)return ke(t=lt(t,r,Fe),i);let n="",o=0;const s=t.length;for(let e=0;e126&&r<160)&&(n+=o===e?Ge[r]:`${dt(t,o,e)}${Ge[r]}`,o=e+1)}return o!==s&&(n+=dt(t,o)),ke(n,i)}function je(t,e){const r=Ue.styles[e];if(void 0!==r){const e=Ue.colors[r];if(void 0!==e)return`[${e[0]}m${t}[${e[1]}m`}return t}function Ze(t){return t}function He(){return[]}function ze(t,e){try{return t instanceof e}catch{return!1}}function xe(t,e,r,i){let n;const o=t;for(;t||Be(t);){const s=F(t,"constructor");if(void 0!==s&&"function"==typeof s.value&&""!==s.value.name&&ze(o,s.value))return void 0===i||n===t&&Me.has(s.value.name)||Oe(e,o,n||o,r,i),s.value.name;t=Z(t),void 0===n&&(n=t)}if(null===n)return null;const s=Rt(o);if(r>e.depth&&null!==e.depth)return`${s} `;const a=xe(n,e,r+1,i);return null===a?`${s} <${Ue(n,{...e,customInspect:!1,depth:-1})}>`:`${s} <${a}>`}function Oe(t,e,r,i,n){let o,s,a=0;do{if(0!==a||e===r){if(null===(r=Z(r)))return;const t=F(r,"constructor");if(void 0!==t&&"function"==typeof t.value&&Me.has(t.value.name))return}0===a?s=new tt:h(o,(t=>s.add(t))),o=X(r);for(const h of o){if("constructor"===h||x(e,h)||0!==a&&s.has(h))continue;const o=F(r,h);if("function"==typeof o.value)continue;const c=Ar(t,r,i,h,0,o,e);t.colors?u(n,`${c}`):u(n,c)}}while(3!=++a)}function We(t,e,r,i=""){return null===t?""!==e&&r!==e?`[${r}${i}: null prototype] [${e}] `:`[${r}${i}: null prototype] `:""!==e&&t!==e?`${t}${i} [${e}] `:`${t}${i} `}function Je(t,e){let r;const i=j(t);if(e)r=L(t),0!==i.length&&c(r,i);else{try{r=z(t)}catch(e){de($t(e)&&"ReferenceError"===e.name&&qt(t)),r=L(t)}0!==i.length&&c(r,a(i,(e=>O(t,e))))}return r}function Xe(t,e,r){let i="";return null===e&&(i=Rt(t),i===r&&(i="Object")),We(e,r,i)}function Ke(t,e,r,n){if("object"!=typeof e&&"function"!=typeof e&&!Be(e))return $e(t.stylize,e,t);if(null===e)return t.stylize("null","null");const o=e,a=Dt(e,!!t.showProxy);if(void 0!==a){if(t.showProxy)return function(t,e,r){if(r>t.depth&&null!==t.depth)return t.stylize("Proxy [Array]","special");r+=1,t.indentationLvl+=2;const i=[Ke(t,e[0],r),Ke(t,e[1],r)];return t.indentationLvl-=2,Mr(t,i,"",["Proxy [","]"],2,r)}(t,a,r);e=a}if(t.customInspect){const i=e[St];if("function"==typeof i&&i!==Ue&&(!e.constructor||e.constructor.prototype!==e)){const e=null===t.depth?null:t.depth-r,n=E(i,o,e,function(t,e){const r={stylize:t.stylize,showHidden:t.showHidden,depth:t.depth,colors:t.colors,customInspect:t.customInspect,showProxy:t.showProxy,maxArrayLength:t.maxArrayLength,maxStringLength:t.maxStringLength,breakLength:t.breakLength,compact:t.compact,sorted:t.sorted,getters:t.getters,...t.userOptions};if(e){J(r,null);for(const t of z(r))"object"!=typeof r[t]&&"function"!=typeof r[t]||null===r[t]||delete r[t];r.stylize=J(((e,r)=>{let i;try{i=`${t.stylize(e,r)}`}catch{}return"string"!=typeof i?e:i}),null)}return r}(t,void 0!==a||!(o instanceof V)));if(n!==o)return"string"!=typeof n?Ke(t,n,r):n.replace(/\n/g,`\n${" ".repeat(t.indentationLvl)}`)}}if(t.seen.includes(e)){let r=1;return void 0===t.circular?(t.circular=new $,t.circular.set(e,r)):(r=t.circular.get(e),void 0===r&&(r=t.circular.size+1,t.circular.set(e,r))),t.stylize(`[Circular *${r}]`,"special")}return function(t,e,r,n){let o,a;t.showHidden&&(r<=t.depth||null===t.depth)&&(a=[]);const h=xe(e,t,r,a);void 0!==a&&0===a.length&&(a=void 0);let u=e[pt];("string"!=typeof u||""!==u&&(t.showHidden?x:O)(e,pt))&&(u="");let c,l="",E=He,m=!0,Q=0;const I=t.showHidden?Ut:Vt;let C,D=0;if(e[Et]||null===h)if(m=!1,s(e)){const t="Array"!==h||""!==u?We(h,u,"Array",`(${e.length})`):"";if(o=It(e,I),c=[`${t}[`,"]"],0===e.length&&0===o.length&&void 0===a)return`${c[0]}]`;D=2,E=ir}else if(ee(e)){const r=et(e),i=We(h,u,"Set",`(${r})`);if(o=Je(e,t.showHidden),E=null!==h?or.bind(null,e):or.bind(null,rt(e)),0===r&&0===o.length&&void 0===a)return`${i}{}`;c=[`${i}{`,"}"]}else if(Pt(e)){const r=y(e),i=We(h,u,"Map",`(${r})`);if(o=Je(e,t.showHidden),E=null!==h?sr.bind(null,e):sr.bind(null,b(e)),0===r&&0===o.length&&void 0===a)return`${i}{}`;c=[`${i}{`,"}"]}else if(ae(e)){o=It(e,I);let r=e,n="";null===h&&(n=yt(e),r=new i[n](e));const s=mt(e);if(c=[`${We(h,u,n,`(${s})`)}[`,"]"],0===e.length&&0===o.length&&!t.showHidden)return`${c[0]}]`;E=nr.bind(null,r,s),D=2}else _t(e)?(o=Je(e,t.showHidden),c=Pe("Map",u),E=dr.bind(null,c)):re(e)?(o=Je(e,t.showHidden),c=Pe("Set",u),E=dr.bind(null,c)):m=!0;if(m)if(o=Je(e,t.showHidden),c=["{","}"],"Object"===h){if(Wt(e)?c[0]="[Arguments] {":""!==u&&(c[0]=`${We(h,u,"Object")}{`),0===o.length&&void 0===a)return`${c[0]}}`}else if("function"==typeof e){if(l=function(t,e,r){const i=p(t);if("class"===i.slice(0,5)&&i.endsWith("}")){const n=i.slice(5,-1),o=n.indexOf("{");if(-1!==o&&(!n.slice(0,o).includes("(")||Ne.test(n.replace(ve))))return function(t,e,r){let i=`class ${x(t,"name")&&t.name||"(anonymous)"}`;if("Function"!==e&&null!==e&&(i+=` [${e}]`),""!==r&&e!==r&&(i+=` [${r}]`),null!==e){const e=Z(t).name;e&&(i+=` extends ${e}`)}else i+=" extends [null prototype]";return`[${i}]`}(t,e,r)}let n="Function";zt(t)&&(n=`Generator${n}`),Ht(t)&&(n=`Async${n}`);let o=`[${n}`;return null===e&&(o+=" (null prototype)"),""===t.name?o+=" (anonymous)":o+=`: ${t.name}`,o+="]",e!==n&&null!==e&&(o+=` ${e}`),""!==r&&e!==r&&(o+=` [${r}]`),o}(e,h,u),0===o.length&&void 0===a)return t.stylize(l,"special")}else if(oe(e)){l=_(null!==h?e:new K(e));const i=We(h,u,"RegExp");if("RegExp "!==i&&(l=`${i}${l}`),0===o.length&&void 0===a||r>t.depth&&null!==t.depth)return t.stylize(l,"regexp")}else if(se(e)){l=G(g(e))?B(e):M(e);const r=We(h,u,"Date");if("Date "!==r&&(l=`${r}${l}`),0===o.length&&void 0===a)return t.stylize(l,"date")}else if(kt(e)){if(l=function(t,e,r,i,n){const o=null!=t.name?it(t.name):"Error";let s=o.length,a=t.stack?it(t.stack):w(t);if(!i.showHidden&&0!==n.length)for(const e of["name","message","stack"]){const r=n.indexOf(e);-1!==r&&a.includes(t[e])&&n.splice(r,1)}if(null===e||o.endsWith("Error")&&a.startsWith(o)&&(a.length===s||":"===a[s]||"\n"===a[s])){let t="Error";if(null===e){const e=a.match(/^([A-Z][a-z_ A-Z0-9[\]()-]+)(?::|\n {4}at)/)||a.match(/^([a-z_A-Z0-9-]*Error)$/);t=e&&e[1]||"",s=t.length,t=t||"Error"}const i=We(e,r,t).slice(0,-1);o!==i&&(a=i.includes(o)?0===s?`${i}: ${a}`:`${i}${a.slice(s)}`:`${i} [${o}]${a.slice(s)}`)}let h=t.message&&a.indexOf(t.message)||-1;-1!==h&&(h+=t.message.length);const u=a.indexOf("\n at",h);if(-1===u)a=`[${a}]`;else if(i.colors){let t=a.slice(0,u);const e=a.slice(u+1).split("\n");for(const r of e){const e=r.match(Ie)||r.match(Ce);if(null!==e&&fe.exists(e[1]))t+=`\n${i.stylize(r,"undefined")}`;else{let e;t+="\n";let n=0;for(;e=De.exec(r);)t+=r.slice(n,e.index+14),t+=i.stylize(e[1],"module"),n=e.index+e[0].length;t+=0===n?r:r.slice(n)}}a=t}if(0!==i.indentationLvl){const t=" ".repeat(i.indentationLvl);a=a.replace(/\n/g,`\n${t}`)}return a}(e,h,u,t,o),0===o.length&&void 0===a)return l}else if(xt(e)){const r=We(h,u,Ot(e)?"ArrayBuffer":"SharedArrayBuffer");if(void 0===n)E=rr;else if(0===o.length&&void 0===a)return r+`{ byteLength: ${_e(t.stylize,e.byteLength)} }`;c[0]=`${r}{`,d(o,"byteLength")}else if(Xt(e))c[0]=`${We(h,u,"DataView")}{`,d(o,"byteLength","byteOffset","buffer");else if(te(e))c[0]=`${We(h,u,"Promise")}{`,E=fr;else if(ne(e))c[0]=`${We(h,u,"WeakSet")}{`,E=t.showHidden?cr:ur;else if(ie(e))c[0]=`${We(h,u,"WeakMap")}{`,E=t.showHidden?lr:ur;else if(qt(e))c[0]=`${We(h,u,"Module")}{`,E=tr.bind(null,o);else if(Jt(e)){if(l=function(t,e,r,i,n){let o,s;ue(t)?(o=U,s="Number"):he(t)?(o=Mt,s="String",r.splice(0,t.length)):ce(t)?(o=A,s="Boolean"):le(t)?(o=f,s="BigInt"):(o=wt,s="Symbol");let a=`[${s}`;return s!==i&&(a+=null===i?" (null prototype)":` (${i})`),a+=`: ${$e(Ze,o(t),e)}]`,""!==n&&n!==i&&(a+=` [${n}]`),0!==r.length||e.stylize===Ze?a:e.stylize(a,At(s))}(e,t,o,h,u),0===o.length&&void 0===a)return l}else{if(0===o.length&&void 0===a){if(Kt(e)){const r=Yt(e).toString(16);return t.stylize(`[External: ${r}]`,"special")}return`${Xe(e,h,u)}{}`}c[0]=`${Xe(e,h,u)}{`}if(r>t.depth&&null!==t.depth){let r=Xe(e,h,u).slice(0,-1);return null!==h&&(r=`[${r}]`),t.stylize(r,"special")}r+=1,t.seen.push(e),t.currentDepth=r;const N=t.indentationLvl;try{for(C=E(t,e,r),Q=0;Q`,"special");!0!==t.compact?l=""===l?e:`${e} ${l}`:c[0]=`${e} ${c[0]}`}}if(t.seen.pop(),t.sorted){const e=!0===t.sorted?void 0:t.sorted;if(0===D)C=C.sort(e);else if(o.length>1){const t=C.slice(C.length-o.length).sort(e);C.splice(C.length-o.length,o.length,...t)}}const v=Mr(t,C,l,c,D,r,e),R=(t.budget[t.indentationLvl]||0)+v.length;return t.budget[t.indentationLvl]=R,R>2**27&&(t.depth=-1),v}(t,e,r,n)}function Pe(t,e){return e!==`${t} Iterator`&&(""!==e&&(e+="] ["),e+=`${t} Iterator`),[`[${e}] {`,"}"]}function _e(t,e){return t(H(e,-0)?"-0":`${e}`,"number")}function qe(t,e){return t(`${e}n`,"bigint")}function $e(t,e,r){if("string"==typeof e){let i="";if(e.length>r.maxStringLength){const t=e.length-r.maxStringLength;e=e.slice(0,r.maxStringLength),i=`... ${t} more character${t>1?"s":""}`}return!0!==r.compact&&e.length>16&&e.length>r.breakLength-r.indentationLvl-4?e.split(/\n/).map(((e,r,i)=>t(Le(e+(r===i.length-1?"":"\n")),"string"))).join(` +\n${" ".repeat(r.indentationLvl+2)}`)+i:t(Le(e),"string")+i}return"number"==typeof e?_e(t,e):"bigint"==typeof e?qe(t,e):"boolean"==typeof e?t(`${e}`,"boolean"):void 0===e?t("undefined","undefined"):t(Bt(e),"symbol")}function tr(t,e,r,i){const n=new o(t.length);for(let o=0;o","special")}return t.length=0,n}function er(t,e,r,i,n,o){const s=z(e);let a=o;for(;o2**32-2)break;if(`${a}`!==h){if(!Qe.test(h))break;const e=u-a,r=`<${e} empty item${e>1?"s":""}>`;if(n.push(t.stylize(r,"undefined")),a=u,n.length===i)break}n.push(Ar(t,e,r,h,1)),a++}const h=e.length-a;if(n.length!==i){if(h>0){const e=`<${h} empty item${h>1?"s":""}>`;n.push(t.stylize(e,"undefined"))}}else h>0&&n.push(`... ${h} more item${h>1?"s":""}`);return n}function rr(t,e){let i;try{i=new bt(e)}catch{return[t.stylize("(detached)","special")]}void 0===ge&&(ge=Qt(r(255).l.prototype.hexSlice));let n=gt(lt(ge(i,0,C(t.maxArrayLength,i.length)),/(.{2})/g,"$1 "));const o=i.length-t.maxArrayLength;return o>0&&(n+=` ... ${o} more byte${o>1?"s":""}`),[`${t.stylize("[Uint8Contents]","special")}: <${n}>`]}function ir(t,e,r){const i=e.length,n=C(I(0,t.maxArrayLength),i),o=i-n,s=[];for(let i=0;i0&&s.push(`... ${o} more item${o>1?"s":""}`),s}function nr(t,e,r,i,n){const s=C(I(0,r.maxArrayLength),e),a=t.length-s,h=new o(s),c=t.length>0&&"number"==typeof t[0]?_e:qe;for(let e=0;e0&&(h[s]=`... ${a} more item${a>1?"s":""}`),r.showHidden){r.indentationLvl+=2;for(const e of["BYTES_PER_ELEMENT","length","byteLength","byteOffset","buffer"]){const i=Ke(r,t[e],n,!0);u(h,`[${e}]: ${i}`)}r.indentationLvl-=2}return h}function or(t,e,r,i){const n=[];e.indentationLvl+=2;for(const r of t)u(n,Ke(e,r,i));return e.indentationLvl-=2,n}function sr(t,e,r,i){const n=[];e.indentationLvl+=2;for(const{0:r,1:o}of t)n.push(`${Ke(e,r,i)} => `+Ke(e,o,i));return e.indentationLvl-=2,n}function ar(t,e,r,i){const n=I(t.maxArrayLength,0),s=C(n,r.length),a=new o(s);t.indentationLvl+=2;for(let i=0;i0&&u(a,`... ${h} more item${h>1?"s":""}`),a}function hr(t,e,r,i){const n=I(t.maxArrayLength,0),s=r.length/2,a=s-n,h=C(n,s);let u=new o(h),c=0;if(t.indentationLvl+=2,0===i){for(;c ${Ke(t,r[i+1],e)}`}t.sorted||(u=u.sort())}else for(;c0&&u.push(`... ${a} more item${a>1?"s":""}`),u}function ur(t){return[t.stylize("","special")]}function cr(t,e,r){return ar(t,r,Gt(e),0)}function lr(t,e,r){return hr(t,r,Gt(e),0)}function dr(t,e,r,i){const{0:n,1:o}=Gt(r,!0);return o?(t[0]=t[0].replace(/ Iterator] {$/," Entries] {"),hr(e,i,n,2)):ar(e,i,n,1)}function fr(t,e,r){let i;const{0:n,1:o}=Ct(e);if(n===Nt)i=[t.stylize("","special")];else{t.indentationLvl+=2;const e=Ke(t,o,r);t.indentationLvl-=2,i=[n===vt?`${t.stylize("","special")} ${e}`:e]}return i}function Ar(t,e,r,i,n,o,s=e){let a,h,u=" ";if(void 0!==(o=o||F(e,i)||{value:e[i],enumerable:!0}).value){const e=!0!==t.compact||0!==n?2:3;t.indentationLvl+=e,h=Ke(t,o.value,r),3===e&&t.breakLength`;h=`${i(`[${e}:`,n)} ${r}${i("]",n)}`}else h=t.stylize(`[${e}]`,n)}else h=void 0!==o.set?t.stylize("[Setter]","special"):t.stylize("undefined","undefined");if(1===n)return h;if("symbol"==typeof i){const e=lt(Bt(i),pe,Fe);a=`[${t.stylize(e,"symbol")}]`}else a="__proto__"===i?"['__proto__']":!1===o.enumerable?`[${lt(i,pe,Fe)}]`:P(be,i)?t.stylize(i,"name"):t.stylize(Le(i),"string");return`${a}:${u}${h}`}function gr(t,e,r,i){let n=e.length+r;if(n+e.length>t.breakLength)return!1;for(let r=0;rt.breakLength)return!1;return""===i||!st(i,"\n")}function Mr(t,e,r,i,n,s,a){if(!0!==t.compact){if("number"==typeof t.compact&&t.compact>=1){const h=e.length;if(2===n&&h>6&&(e=function(t,e,r){let i=0,n=0,s=0,a=e.length;t.maxArrayLength5||n<=6)){const n=2.5,o=N(c-i/e.length),s=I(c-3-o,1),l=C(D(N(n*s*a)/s),Q((t.breakLength-t.indentationLvl)/c),4*t.compact,15);if(l<=1)return e;const d=[],f=[];for(let t=0;tr&&(r=h[i]);r+=2,f[t]=r}let A=ut;if(void 0!==r)for(let t=0;tft(t.message,"\n",1)[0];let Er;function pr(t){try{return m(t)}catch(t){if(!Er)try{const t={};t.a=t,m(t)}catch(t){Er=wr(t)}if("TypeError"===t.name&&wr(t)===Er)return"[Circular]";throw t}}function mr(t,e){const r=e[0];let i=0,n="",o="";if("string"==typeof r){if(1===e.length)return r;let s,a=0;for(let o=0;o=127){i+=t.getStringWidth(e.slice(r).normalize("NFC"));break}i+=n>=32?1:0}return i}}else{Ye=function(r,i=!0){let n=0;i&&(r=yr(r)),r=at(r,"NFC");for(const i of new q(r)){const r=ot(i,0);t(r)?n+=2:e(r)||n++}return n};const t=t=>t>=4352&&(t<=4447||9001===t||9002===t||t>=11904&&t<=12871&&12351!==t||t>=12880&&t<=19903||t>=19968&&t<=42182||t>=43360&&t<=43388||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65131||t>=65281&&t<=65376||t>=65504&&t<=65510||t>=110592&&t<=110593||t>=127488&&t<=127569||t>=127744&&t<=128591||t>=131072&&t<=262141),e=t=>t<=31||t>=127&&t<=159||t>=768&&t<=879||t>=8203&&t<=8207||t>=8400&&t<=8447||t>=65024&&t<=65039||t>=65056&&t<=65071||t>=917760&&t<=917999}function yr(t){return t.replace(Re,"")}t.exports={inspect:Ue,format:function(...t){return mr(void 0,t)},formatWithOptions:function(t,...e){if("object"!=typeof t||null===t)throw new jt("inspectOptions","object",t);return mr(t,e)},getStringWidth:Ye,inspectDefaultOptions:we,stripVTControlCharacters:yr,stylizeWithColor:je,stylizeWithHTML(t,e){const r=Ue.styles[e];return void 0!==r?`${t}`:t},Proxy:Tt}},183:t=>{t.exports=function(t){if(!t)throw new Error("Assertion failed")}},992:(t,e)=>{e.NativeModule={exists:t=>!t.startsWith("/")}},101:(t,e,r)=>{const{ArrayIsArray:i,ArrayPrototypeIncludes:n,ArrayPrototypeIndexOf:o,ArrayPrototypeJoin:s,ArrayPrototypePop:a,ArrayPrototypePush:h,ArrayPrototypeSplice:u,ErrorCaptureStackTrace:c,ObjectDefineProperty:l,ReflectApply:d,RegExpPrototypeTest:f,SafeMap:A,StringPrototypeEndsWith:g,StringPrototypeIncludes:M,StringPrototypeSlice:B,StringPrototypeToLowerCase:w}=r(765),E=new A,p={},m=/^([A-Z][a-z0-9]*)+$/,y=["string","function","number","object","Function","Object","boolean","bigint","symbol"];let b,Q,I=null;function C(){return I||(I=r(48)),I}const D=N((function(t,e,r){(t=v(t)).name=`${e} [${r}]`,t.stack,delete t.name}));function N(t){const e="__node_internal_"+t.name;return l(t,"name",{value:e}),t}const v=N((function(t){return b=Error.stackTraceLimit,Error.stackTraceLimit=1/0,c(t),Error.stackTraceLimit=b,t}));let G,R;var Y,U,V,T,S;t.exports={codes:p,hideStackFrames:N,isStackOverflowError:function(t){if(void 0===R)try{!function t(){t()}()}catch(t){R=t.message,G=t.name}return t&&t.name===G&&t.message===R}},Y="ERR_INVALID_ARG_TYPE",U=(t,e,r)=>{Q("string"==typeof t,"'name' must be a string"),i(e)||(e=[e]);let c="The ";g(t," argument")?c+=`${t} `:c+=`"${t}" ${M(t,".")?"property":"argument"} `,c+="must be ";const l=[],d=[],A=[];for(const t of e)Q("string"==typeof t,"All expected entries have to be of type string"),n(y,t)?h(l,w(t)):f(m,t)?h(d,t):(Q("object"!==t,'The value "object" should be written as "Object"'),h(A,t));if(d.length>0){const t=o(l,"object");-1!==t&&(u(l,t,1),h(d,"Object"))}if(l.length>0){if(l.length>2){const t=a(l);c+=`one of type ${s(l,", ")}, or ${t}`}else c+=2===l.length?`one of type ${l[0]} or ${l[1]}`:`of type ${l[0]}`;(d.length>0||A.length>0)&&(c+=" or ")}if(d.length>0){if(d.length>2){const t=a(d);c+=`an instance of ${s(d,", ")}, or ${t}`}else c+=`an instance of ${d[0]}`,2===d.length&&(c+=` or ${d[1]}`);A.length>0&&(c+=" or ")}if(A.length>0)if(A.length>2){const t=a(A);c+=`one of ${s(A,", ")}, or ${t}`}else 2===A.length?c+=`one of ${A[0]} or ${A[1]}`:(w(A[0])!==A[0]&&(c+="an "),c+=`${A[0]}`);if(null==r)c+=`. Received ${r}`;else if("function"==typeof r&&r.name)c+=`. Received function ${r.name}`;else if("object"==typeof r)r.constructor&&r.constructor.name?c+=`. Received an instance of ${r.constructor.name}`:c+=`. Received ${C().inspect(r,{depth:-1})}`;else{let t=C().inspect(r,{colors:!1});t.length>25&&(t=`${B(t,0,25)}...`),c+=`. Received type ${typeof r} (${t})`}return c},V=TypeError,E.set(Y,U),p[Y]=(T=V,S=Y,function(...t){const e=Error.stackTraceLimit;Error.stackTraceLimit=0;const i=new T;Error.stackTraceLimit=e;const n=function(t,e,i){const n=E.get(t);return void 0===Q&&(Q=r(183)),Q("function"==typeof n),Q(n.length<=e.length,`Code: ${t}; The provided arguments length (${e.length}) does not match the required ones (${n.length}).`),d(n,i,e)}(S,t,i);return l(i,"message",{value:n,enumerable:!1,writable:!0,configurable:!0}),l(i,"toString",{value(){return`${this.name} [${S}]: ${this.message}`},enumerable:!1,writable:!0,configurable:!0}),D(i,T.name,S),i.code=S,i})},335:t=>{const e=/\u001b\[\d\d?m/g;t.exports={customInspectSymbol:Symbol.for("nodejs.util.inspect.custom"),isError:t=>t instanceof Error,join:Array.prototype.join.call.bind(Array.prototype.join),removeColors:t=>String.prototype.replace.call(t,e,"")}},63:(t,e,r)=>{const{getConstructorName:i}=r(891);function n(t,...e){for(const r of e){const e=globalThis[r];if(e&&t instanceof e)return!0}for(;t;){if("object"!=typeof t)return!1;if(e.indexOf(i(t))>=0)return!0;t=Object.getPrototypeOf(t)}return!1}function o(t){return e=>{if(!n(e,t.name))return!1;try{t.prototype.valueOf.call(e)}catch{return!1}return!0}}"object"!=typeof globalThis&&(Object.defineProperty(Object.prototype,"__magic__",{get:function(){return this},configurable:!0}),__magic__.globalThis=__magic__,delete Object.prototype.__magic__);const s=o(String),a=o(Number),h=o(Boolean),u=o(BigInt),c=o(Symbol);t.exports={isAsyncFunction:t=>"function"==typeof t&&Function.prototype.toString.call(t).startsWith("async"),isGeneratorFunction:t=>"function"==typeof t&&Function.prototype.toString.call(t).match(/^(async\s+)?function *\*/),isAnyArrayBuffer:t=>n(t,"ArrayBuffer","SharedArrayBuffer"),isArrayBuffer:t=>n(t,"ArrayBuffer"),isArgumentsObject:t=>!1,isBoxedPrimitive:t=>a(t)||s(t)||h(t)||u(t)||c(t),isDataView:t=>n(t,"DataView"),isExternal:t=>"object"==typeof t&&Object.isFrozen(t)&&null==Object.getPrototypeOf(t),isMap(t){if(!n(t,"Map"))return!1;try{t.has()}catch{return!1}return!0},isMapIterator:t=>"[object Map Iterator]"===Object.prototype.toString.call(Object.getPrototypeOf(t)),isModuleNamespaceObject:t=>t&&"object"==typeof t&&"Module"===t[Symbol.toStringTag],isNativeError:t=>t instanceof Error&&n(t,"Error","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","AggregateError"),isPromise:t=>n(t,"Promise"),isSet(t){if(!n(t,"Set"))return!1;try{t.has()}catch{return!1}return!0},isSetIterator:t=>"[object Set Iterator]"===Object.prototype.toString.call(Object.getPrototypeOf(t)),isWeakMap:t=>n(t,"WeakMap"),isWeakSet:t=>n(t,"WeakSet"),isRegExp:t=>n(t,"RegExp"),isDate(t){if(n(t,"Date"))try{return Date.prototype.getTime.call(t),!0}catch{}return!1},isTypedArray:t=>n(t,"Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","BigInt64Array","BigUint64Array"),isStringObject:s,isNumberObject:a,isBooleanObject:h,isBigIntObject:u,isSymbolObject:c}},356:(t,e,r)=>{const{hideStackFrames:i,codes:{ERR_INVALID_ARG_TYPE:n}}=r(101);e.validateObject=i(((t,e,{nullable:r=!1}={})=>{if(!r&&null===t||Array.isArray(t)||"object"!=typeof t)throw new n(e,"Object",t)}))},765:t=>{const e=(t,e)=>{class r{constructor(e){this._iterator=t(e)}next(){return e(this._iterator)}[Symbol.iterator](){return this}}return Object.setPrototypeOf(r.prototype,null),Object.freeze(r.prototype),Object.freeze(r),r};function r(t,e){return Function.prototype.call.bind(t.prototype.__lookupGetter__(e))}function i(t){return Function.prototype.call.bind(t)}const n=(t,e)=>{Array.prototype.forEach.call(Reflect.ownKeys(t),(r=>{Reflect.getOwnPropertyDescriptor(e,r)||Reflect.defineProperty(e,r,Reflect.getOwnPropertyDescriptor(t,r))}))},o=(t,r)=>{if(Symbol.iterator in t.prototype){const n=new t;let o;Array.prototype.forEach.call(Reflect.ownKeys(t.prototype),(s=>{if(!Reflect.getOwnPropertyDescriptor(r.prototype,s)){const a=Reflect.getOwnPropertyDescriptor(t.prototype,s);if("function"==typeof a.value&&0===a.value.length&&Symbol.iterator in(Function.prototype.call.call(a.value,n)||{})){const t=i(a.value);null==o&&(o=i(t(n).next));const r=e(t,o);a.value=function(){return new r(this)}}Reflect.defineProperty(r.prototype,s,a)}}))}else n(t.prototype,r.prototype);return n(t,r),Object.setPrototypeOf(r.prototype,null),Object.freeze(r.prototype),Object.freeze(r),r},s=Function.prototype.call.bind(String.prototype[Symbol.iterator]),a=Reflect.getPrototypeOf(s(""));t.exports={makeSafe:o,internalBinding(t){if("config"===t)return{hasIntl:!1};throw new Error(`unknown module: "${t}"`)},Array,ArrayIsArray:Array.isArray,ArrayPrototypeFilter:Function.prototype.call.bind(Array.prototype.filter),ArrayPrototypeForEach:Function.prototype.call.bind(Array.prototype.forEach),ArrayPrototypeIncludes:Function.prototype.call.bind(Array.prototype.includes),ArrayPrototypeIndexOf:Function.prototype.call.bind(Array.prototype.indexOf),ArrayPrototypeJoin:Function.prototype.call.bind(Array.prototype.join),ArrayPrototypePop:Function.prototype.call.bind(Array.prototype.pop),ArrayPrototypePush:Function.prototype.call.bind(Array.prototype.push),ArrayPrototypePushApply:Function.apply.bind(Array.prototype.push),ArrayPrototypeSort:Function.prototype.call.bind(Array.prototype.sort),ArrayPrototypeSplice:Function.prototype.call.bind(Array.prototype.slice),ArrayPrototypeUnshift:Function.prototype.call.bind(Array.prototype.unshift),BigIntPrototypeValueOf:Function.prototype.call.bind(BigInt.prototype.valueOf),BooleanPrototypeValueOf:Function.prototype.call.bind(Boolean.prototype.valueOf),DatePrototypeGetTime:Function.prototype.call.bind(Date.prototype.getTime),DatePrototypeToISOString:Function.prototype.call.bind(Date.prototype.toISOString),DatePrototypeToString:Function.prototype.call.bind(Date.prototype.toString),ErrorCaptureStackTrace:function(t){const e=(new Error).stack;t.stack=e.replace(/.*\n.*/,"$1")},ErrorPrototypeToString:Function.prototype.call.bind(Error.prototype.toString),FunctionPrototypeCall:Function.prototype.call.bind(Function.prototype.call),FunctionPrototypeToString:Function.prototype.call.bind(Function.prototype.toString),JSONStringify:JSON.stringify,MapPrototypeGetSize:r(Map,"size"),MapPrototypeEntries:Function.prototype.call.bind(Map.prototype.entries),MathFloor:Math.floor,MathMax:Math.max,MathMin:Math.min,MathRound:Math.round,MathSqrt:Math.sqrt,Number,NumberIsNaN:Number.isNaN,NumberParseFloat:Number.parseFloat,NumberParseInt:Number.parseInt,NumberPrototypeValueOf:Function.prototype.call.bind(Number.prototype.valueOf),Object,ObjectAssign:Object.assign,ObjectCreate:Object.create,ObjectDefineProperty:Object.defineProperty,ObjectGetOwnPropertyDescriptor:Object.getOwnPropertyDescriptor,ObjectGetOwnPropertyNames:Object.getOwnPropertyNames,ObjectGetOwnPropertySymbols:Object.getOwnPropertySymbols,ObjectGetPrototypeOf:Object.getPrototypeOf,ObjectIs:Object.is,ObjectKeys:Object.keys,ObjectPrototypeHasOwnProperty:Function.prototype.call.bind(Object.prototype.hasOwnProperty),ObjectPrototypePropertyIsEnumerable:Function.prototype.call.bind(Object.prototype.propertyIsEnumerable),ObjectSeal:Object.seal,ObjectSetPrototypeOf:Object.setPrototypeOf,ReflectApply:Reflect.apply,ReflectOwnKeys:Reflect.ownKeys,RegExp,RegExpPrototypeTest:Function.prototype.call.bind(RegExp.prototype.test),RegExpPrototypeToString:Function.prototype.call.bind(RegExp.prototype.toString),SafeStringIterator:e(s,Function.prototype.call.bind(a.next)),SafeMap:o(Map,class extends Map{constructor(t){super(t)}}),SafeSet:o(Set,class extends Set{constructor(t){super(t)}}),SetPrototypeGetSize:r(Set,"size"),SetPrototypeValues:Function.prototype.call.bind(Set.prototype.values),String,StringPrototypeCharCodeAt:Function.prototype.call.bind(String.prototype.charCodeAt),StringPrototypeCodePointAt:Function.prototype.call.bind(String.prototype.codePointAt),StringPrototypeEndsWith:Function.prototype.call.bind(String.prototype.endsWith),StringPrototypeIncludes:Function.prototype.call.bind(String.prototype.includes),StringPrototypeNormalize:Function.prototype.call.bind(String.prototype.normalize),StringPrototypePadEnd:Function.prototype.call.bind(String.prototype.padEnd),StringPrototypePadStart:Function.prototype.call.bind(String.prototype.padStart),StringPrototypeRepeat:Function.prototype.call.bind(String.prototype.repeat),StringPrototypeReplace:Function.prototype.call.bind(String.prototype.replace),StringPrototypeSlice:Function.prototype.call.bind(String.prototype.slice),StringPrototypeSplit:Function.prototype.call.bind(String.prototype.split),StringPrototypeToLowerCase:Function.prototype.call.bind(String.prototype.toLowerCase),StringPrototypeTrim:Function.prototype.call.bind(String.prototype.trim),StringPrototypeValueOf:Function.prototype.call.bind(String.prototype.valueOf),SymbolPrototypeToString:Function.prototype.call.bind(Symbol.prototype.toString),SymbolPrototypeValueOf:Function.prototype.call.bind(Symbol.prototype.valueOf),SymbolIterator:Symbol.iterator,SymbolFor:Symbol.for,SymbolToStringTag:Symbol.toStringTag,TypedArrayPrototypeGetLength:t=>t.constructor.prototype.__lookupGetter__("length").call(t),Uint8Array,uncurryThis:i}},161:t=>{const e=new WeakMap;class r{constructor(t,r){const i=new Proxy(t,r);return e.set(i,[t,r]),i}static getProxyDetails(t,r=!0){const i=e.get(t);if(i)return r?i:i[0]}}t.exports={getProxyDetails:r.getProxyDetails.bind(r),Proxy:r}},891:(t,e,r)=>{const i=r(161),n=Symbol("kPending"),o=Symbol("kRejected");t.exports={getOwnNonIndexProperties:function(t,e=2){const r=Object.getOwnPropertyDescriptors(t),i=[];for(const[t,n]of Object.entries(r))if(!/^(0|[1-9][0-9]*)$/.test(t)||parseInt(t,10)>=2**32-1){if(2===e&&!n.enumerable)continue;i.push(t)}for(const r of Object.getOwnPropertySymbols(t)){const n=Object.getOwnPropertyDescriptor(t,r);(2!==e||n.enumerable)&&i.push(r)}return i},getPromiseDetails:()=>[n,void 0],getProxyDetails:i.getProxyDetails,Proxy:i.Proxy,kPending:n,kRejected:o,previewEntries:t=>[[],!1],getConstructorName(t){if(!t||"object"!=typeof t)throw new Error("Invalid object");if(t.constructor&&t.constructor.name)return t.constructor.name;const e=Object.prototype.toString.call(t).match(/^\[object ([^\]]+)\]/);return e?e[1]:"Object"},getExternalValue:()=>BigInt(0),propertyFilter:{ALL_PROPERTIES:0,ONLY_ENUMERABLE:2}}}},e={};function r(i){var n=e[i];if(void 0!==n)return n.exports;var o=e[i]={exports:{}};return t[i](o,o.exports,r),o.exports}return r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r(48)})()},155:t=>{var e,r,i=t.exports={};function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(e===setTimeout)return setTimeout(t,0);if((e===n||!e)&&setTimeout)return e=setTimeout,setTimeout(t,0);try{return e(t,0)}catch(r){try{return e.call(null,t,0)}catch(r){return e.call(this,t,0)}}}!function(){try{e="function"==typeof setTimeout?setTimeout:n}catch(t){e=n}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var a,h=[],u=!1,c=-1;function l(){u&&a&&(u=!1,a.length?h=a.concat(h):c=-1,h.length&&d())}function d(){if(!u){var t=s(l);u=!0;for(var e=h.length;e;){for(a=h,h=[];++c1)for(var r=1;r{"use strict";var e={};function r(t,r,i){i||(i=Error);var n=function(t){var e,i;function n(e,i,n){return t.call(this,function(t,e,i){return"string"==typeof r?r:r(t,e,i)}(e,i,n))||this}return i=t,(e=n).prototype=Object.create(i.prototype),e.prototype.constructor=e,e.__proto__=i,n}(i);n.prototype.name=i.name,n.prototype.code=t,e[t]=n}function i(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map((function(t){return String(t)})),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",(function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'}),TypeError),r("ERR_INVALID_ARG_TYPE",(function(t,e,r){var n,o,s,a,h;if("string"==typeof e&&(o="not ",e.substr(0,o.length)===o)?(n="must not be",e=e.replace(/^not /,"")):n="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t," argument"))s="The ".concat(t," ").concat(n," ").concat(i(e,"type"));else{var u=("number"!=typeof h&&(h=0),h+".".length>(a=t).length||-1===a.indexOf(".",h)?"argument":"property");s='The "'.concat(t,'" ').concat(u," ").concat(n," ").concat(i(e,"type"))}return s+". Received type ".concat(typeof r)}),TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",(function(t){return"The "+t+" method is not implemented"})),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",(function(t){return"Cannot call "+t+" after a stream was destroyed"})),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",(function(t){return"Unknown encoding: "+t}),TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.q=e},753:(t,e,r)=>{"use strict";var i=r(155),n=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=c;var o=r(481),s=r(229);r(717)(c,o);for(var a=n(s.prototype),h=0;h{"use strict";t.exports=n;var i=r(605);function n(t){if(!(this instanceof n))return new n(t);i.call(this,t)}r(717)(n,i),n.prototype._transform=function(t,e,r){r(null,t)}},481:(t,e,r)=>{"use strict";var i,n=r(155);t.exports=I,I.ReadableState=Q,r(187).EventEmitter;var o,s=function(t,e){return t.listeners(e).length},a=r(503),h=r(764).Buffer,u=r.g.Uint8Array||function(){},c=r(669);o=c&&c.debuglog?c.debuglog("stream"):function(){};var l,d,f,A=r(327),g=r(195),M=r(457).getHighWaterMark,B=r(281).q,w=B.ERR_INVALID_ARG_TYPE,E=B.ERR_STREAM_PUSH_AFTER_EOF,p=B.ERR_METHOD_NOT_IMPLEMENTED,m=B.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r(717)(I,a);var y=g.errorOrDestroy,b=["error","close","destroy","pause","resume"];function Q(t,e,n){i=i||r(753),t=t||{},"boolean"!=typeof n&&(n=e instanceof i),this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=M(this,t,"readableHighWaterMark",n),this.buffer=new A,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(l||(l=r(553).s),this.decoder=new l(t.encoding),this.encoding=t.encoding)}function I(t){if(i=i||r(753),!(this instanceof I))return new I(t);var e=this instanceof i;this._readableState=new Q(t,this,e),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),a.call(this)}function C(t,e,r,i,n){o("readableAddChunk",e);var s,a=t._readableState;if(null===e)a.reading=!1,function(t,e){if(o("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?G(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,R(t)))}}(t,a);else if(n||(s=function(t,e){var r,i;return i=e,h.isBuffer(i)||i instanceof u||"string"==typeof e||void 0===e||t.objectMode||(r=new w("chunk",["string","Buffer","Uint8Array"],e)),r}(a,e)),s)y(t,s);else if(a.objectMode||e&&e.length>0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===h.prototype||(e=function(t){return h.from(t)}(e)),i)a.endEmitted?y(t,new m):D(t,a,e,!0);else if(a.ended)y(t,new E);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?D(t,a,e,!1):Y(t,a)):D(t,a,e,!1)}else i||(a.reading=!1,Y(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=N?t=N:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function G(t){var e=t._readableState;o("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(o("emitReadable",e.flowing),e.emittedReadable=!0,n.nextTick(R,t))}function R(t){var e=t._readableState;o("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,k(t)}function Y(t,e){e.readingMore||(e.readingMore=!0,n.nextTick(U,t,e))}function U(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function T(t){o("readable nexttick read 0"),t.read(0)}function S(t,e){o("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),k(t),e.flowing&&!e.reading&&t.read(0)}function k(t){var e=t._readableState;for(o("flow",e.flowing);e.flowing&&null!==t.read(););}function F(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function L(t){var e=t._readableState;o("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,n.nextTick(j,e,t))}function j(t,e){if(o("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function Z(t,e){for(var r=0,i=t.length;r=e.highWaterMark:e.length>0)||e.ended))return o("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?L(this):G(this),null;if(0===(t=v(t,e))&&e.ended)return 0===e.length&&L(this),null;var i,n=e.needReadable;return o("need readable",n),(0===e.length||e.length-t0?F(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&L(this)),null!==i&&this.emit("data",i),i},I.prototype._read=function(t){y(this,new p("_read()"))},I.prototype.pipe=function(t,e){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=t;break;case 1:i.pipes=[i.pipes,t];break;default:i.pipes.push(t)}i.pipesCount+=1,o("pipe count=%d opts=%j",i.pipesCount,e);var a=e&&!1===e.end||t===n.stdout||t===n.stderr?g:h;function h(){o("onend"),t.end()}i.endEmitted?n.nextTick(a):r.once("end",a),t.on("unpipe",(function e(n,s){o("onunpipe"),n===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,o("cleanup"),t.removeListener("close",f),t.removeListener("finish",A),t.removeListener("drain",u),t.removeListener("error",d),t.removeListener("unpipe",e),r.removeListener("end",h),r.removeListener("end",g),r.removeListener("data",l),c=!0,!i.awaitDrain||t._writableState&&!t._writableState.needDrain||u())}));var u=function(t){return function(){var e=t._readableState;o("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,k(t))}}(r);t.on("drain",u);var c=!1;function l(e){o("ondata");var n=t.write(e);o("dest.write",n),!1===n&&((1===i.pipesCount&&i.pipes===t||i.pipesCount>1&&-1!==Z(i.pipes,t))&&!c&&(o("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function d(e){o("onerror",e),g(),t.removeListener("error",d),0===s(t,"error")&&y(t,e)}function f(){t.removeListener("finish",A),g()}function A(){o("onfinish"),t.removeListener("close",f),g()}function g(){o("unpipe"),r.unpipe(t)}return r.on("data",l),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events.error?Array.isArray(t._events.error)?t._events.error.unshift(r):t._events.error=[r,t._events.error]:t.on(e,r)}(t,"error",d),t.once("close",f),t.once("finish",A),t.emit("pipe",r),i.flowing||(o("pipe resume"),r.resume()),t},I.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o0,!1!==i.flowing&&this.resume()):"readable"===t&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,o("on readable",i.length,i.reading),i.length?G(this):i.reading||n.nextTick(T,this))),r},I.prototype.addListener=I.prototype.on,I.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&n.nextTick(V,this),r},I.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||n.nextTick(V,this),e},I.prototype.resume=function(){var t=this._readableState;return t.flowing||(o("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,n.nextTick(S,t,e))}(this,t)),t.paused=!1,this},I.prototype.pause=function(){return o("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(o("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},I.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;for(var n in t.on("end",(function(){if(o("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on("data",(function(n){o("wrapped data"),r.decoder&&(n=r.decoder.write(n)),r.objectMode&&null==n||(r.objectMode||n&&n.length)&&(e.push(n)||(i=!0,t.pause()))})),t)void 0===this[n]&&"function"==typeof t[n]&&(this[n]=function(e){return function(){return t[e].apply(t,arguments)}}(n));for(var s=0;s{"use strict";t.exports=c;var i=r(281).q,n=i.ERR_METHOD_NOT_IMPLEMENTED,o=i.ERR_MULTIPLE_CALLBACK,s=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=i.ERR_TRANSFORM_WITH_LENGTH_0,h=r(753);function u(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(null===i)return this.emit("error",new o);r.writechunk=null,r.writecb=null,null!=e&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";var i,n=r(155);function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var i=t.entry;for(t.entry=null;i;){var n=i.callback;e.pendingcb--,n(void 0),i=i.next}e.corkedRequestsFree.next=t}(e,t)}}t.exports=I,I.WritableState=Q;var s,a={deprecate:r(927)},h=r(503),u=r(764).Buffer,c=r.g.Uint8Array||function(){},l=r(195),d=r(457).getHighWaterMark,f=r(281).q,A=f.ERR_INVALID_ARG_TYPE,g=f.ERR_METHOD_NOT_IMPLEMENTED,M=f.ERR_MULTIPLE_CALLBACK,B=f.ERR_STREAM_CANNOT_PIPE,w=f.ERR_STREAM_DESTROYED,E=f.ERR_STREAM_NULL_VALUES,p=f.ERR_STREAM_WRITE_AFTER_END,m=f.ERR_UNKNOWN_ENCODING,y=l.errorOrDestroy;function b(){}function Q(t,e,s){i=i||r(753),t=t||{},"boolean"!=typeof s&&(s=e instanceof i),this.objectMode=!!t.objectMode,s&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=d(this,t,"writableHighWaterMark",s),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===t.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,i=r.sync,o=r.writecb;if("function"!=typeof o)throw new M;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,i,o){--e.pendingcb,r?(n.nextTick(o,i),n.nextTick(R,t,e),t._writableState.errorEmitted=!0,y(t,i)):(o(i),t._writableState.errorEmitted=!0,y(t,i),R(t,e))}(t,r,i,e,o);else{var s=v(r)||t.destroyed;s||r.corked||r.bufferProcessing||!r.bufferedRequest||N(t,r),i?n.nextTick(D,t,r,s,o):D(t,r,s,o)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function I(t){var e=this instanceof(i=i||r(753));if(!e&&!s.call(I,this))return new I(t);this._writableState=new Q(t,this,e),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),h.call(this)}function C(t,e,r,i,n,o,s){e.writelen=i,e.writecb=s,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new w("write")):r?t._writev(n,e.onwrite):t._write(n,o,e.onwrite),e.sync=!1}function D(t,e,r,i){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,i(),R(t,e)}function N(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var i=e.bufferedRequestCount,n=new Array(i),s=e.corkedRequestsFree;s.entry=r;for(var a=0,h=!0;r;)n[a]=r,r.isBuf||(h=!1),r=r.next,a+=1;n.allBuffers=h,C(t,e,!0,e.length,n,"",s.finish),e.pendingcb++,e.lastBufferedRequest=null,s.next?(e.corkedRequestsFree=s.next,s.next=null):e.corkedRequestsFree=new o(e),e.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,c=r.encoding,l=r.callback;if(C(t,e,!1,e.objectMode?1:u.length,u,c,l),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function v(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function G(t,e){t._final((function(r){e.pendingcb--,r&&y(t,r),e.prefinished=!0,t.emit("prefinish"),R(t,e)}))}function R(t,e){var r=v(e);if(r&&(function(t,e){e.prefinished||e.finalCalled||("function"!=typeof t._final||e.destroyed?(e.prefinished=!0,t.emit("prefinish")):(e.pendingcb++,e.finalCalled=!0,n.nextTick(G,t,e)))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"),e.autoDestroy))){var i=t._readableState;(!i||i.autoDestroy&&i.endEmitted)&&t.destroy()}return r}r(717)(I,h),Q.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(Q.prototype,"buffer",{get:a.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(s=Function.prototype[Symbol.hasInstance],Object.defineProperty(I,Symbol.hasInstance,{value:function(t){return!!s.call(this,t)||this===I&&t&&t._writableState instanceof Q}})):s=function(t){return t instanceof this},I.prototype.pipe=function(){y(this,new B)},I.prototype.write=function(t,e,r){var i,o=this._writableState,s=!1,a=!o.objectMode&&(i=t,u.isBuffer(i)||i instanceof c);return a&&!u.isBuffer(t)&&(t=function(t){return u.from(t)}(t)),"function"==typeof e&&(r=e,e=null),a?e="buffer":e||(e=o.defaultEncoding),"function"!=typeof r&&(r=b),o.ending?function(t,e){var r=new p;y(t,r),n.nextTick(e,r)}(this,r):(a||function(t,e,r,i){var o;return null===r?o=new E:"string"==typeof r||e.objectMode||(o=new A("chunk",["string","Buffer"],r)),!o||(y(t,o),n.nextTick(i,o),!1)}(this,o,t,r))&&(o.pendingcb++,s=function(t,e,r,i,n,o){if(!r){var s=function(t,e,r){return t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=u.from(e,r)),e}(e,i,n);i!==s&&(r=!0,n="buffer",i=s)}var a=e.objectMode?1:i.length;e.length+=a;var h=e.length-1))throw new m(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(I.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(I.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),I.prototype._write=function(t,e,r){r(new g("_write()"))},I.prototype._writev=null,I.prototype.end=function(t,e,r){var i=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||function(t,e,r){e.ending=!0,R(t,e),r&&(e.finished?n.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,i,r),this},Object.defineProperty(I.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(I.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),I.prototype.destroy=l.destroy,I.prototype._undestroy=l.undestroy,I.prototype._destroy=function(t,e){e(t)}},850:(t,e,r)=>{"use strict";var i,n=r(155);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(610),a=Symbol("lastResolve"),h=Symbol("lastReject"),u=Symbol("error"),c=Symbol("ended"),l=Symbol("lastPromise"),d=Symbol("handlePromise"),f=Symbol("stream");function A(t,e){return{value:t,done:e}}function g(t){var e=t[a];if(null!==e){var r=t[f].read();null!==r&&(t[l]=null,t[a]=null,t[h]=null,e(A(r,!1)))}}function M(t){n.nextTick(g,t)}var B=Object.getPrototypeOf((function(){})),w=Object.setPrototypeOf((o(i={get stream(){return this[f]},next:function(){var t=this,e=this[u];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(A(void 0,!0));if(this[f].destroyed)return new Promise((function(e,r){n.nextTick((function(){t[u]?r(t[u]):e(A(void 0,!0))}))}));var r,i=this[l];if(i)r=new Promise(function(t,e){return function(r,i){t.then((function(){e[c]?r(A(void 0,!0)):e[d](r,i)}),i)}}(i,this));else{var o=this[f].read();if(null!==o)return Promise.resolve(A(o,!1));r=new Promise(this[d])}return this[l]=r,r}},Symbol.asyncIterator,(function(){return this})),o(i,"return",(function(){var t=this;return new Promise((function(e,r){t[f].destroy(null,(function(t){t?r(t):e(A(void 0,!0))}))}))})),i),B);t.exports=function(t){var e,r=Object.create(w,(o(e={},f,{value:t,writable:!0}),o(e,a,{value:null,writable:!0}),o(e,h,{value:null,writable:!0}),o(e,u,{value:null,writable:!0}),o(e,c,{value:t._readableState.endEmitted,writable:!0}),o(e,d,{value:function(t,e){var i=r[f].read();i?(r[l]=null,r[a]=null,r[h]=null,t(A(i,!1))):(r[a]=t,r[h]=e)},writable:!0}),e));return r[l]=null,s(t,(function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[h];return null!==e&&(r[l]=null,r[a]=null,r[h]=null,e(t)),void(r[u]=t)}var i=r[a];null!==i&&(r[l]=null,r[a]=null,r[h]=null,i(A(void 0,!0))),r[c]=!0})),t.on("readable",M.bind(null,r)),r}},327:(t,e,r)=>{"use strict";function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var o=r(764).Buffer,s=r(669).inspect,a=s&&s.custom||"inspect";t.exports=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.head=null,this.tail=null,this.length=0}var e;return(e=[{key:"push",value:function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return o.alloc(0);for(var e,r,i,n=o.allocUnsafe(t>>>0),s=this.head,a=0;s;)e=s.data,r=n,i=a,o.prototype.copy.call(e,r,i),a+=s.data.length,s=s.next;return n}},{key:"consume",value:function(t,e){var r;return tn.length?n.length:t;if(o===n.length?i+=n:i+=n.slice(0,t),0==(t-=o)){o===n.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(o));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(t){var e=o.allocUnsafe(t),r=this.head,i=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var n=r.data,s=t>n.length?n.length:t;if(n.copy(e,e.length-t,0,s),0==(t-=s)){s===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(s));break}++i}return this.length-=i,e}},{key:a,value:function(t,e){return s(this,function(t){for(var e=1;e{"use strict";var i=r(155);function n(t,e){s(t,e),o(t)}function o(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,h=this._writableState&&this._writableState.destroyed;return a||h?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,i.nextTick(s,this,t)):i.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!e&&t?r._writableState?r._writableState.errorEmitted?i.nextTick(o,r):(r._writableState.errorEmitted=!0,i.nextTick(n,r,t)):i.nextTick(n,r,t):e?(i.nextTick(o,r),e(t)):i.nextTick(o,r)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}}},610:(t,e,r)=>{"use strict";var i=r(281).q.ERR_STREAM_PREMATURE_CLOSE;function n(){}t.exports=function t(e,r,o){if("function"==typeof r)return t(e,null,r);r||(r={}),o=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{t.exports=function(){throw new Error("Readable.from is not available in the browser")}},946:(t,e,r)=>{"use strict";var i,n=r(281).q,o=n.ERR_MISSING_ARGS,s=n.ERR_STREAM_DESTROYED;function a(t){if(t)throw t}function h(t,e,n,o){o=function(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}(o);var a=!1;t.on("close",(function(){a=!0})),void 0===i&&(i=r(610)),i(t,{readable:e,writable:n},(function(t){if(t)return o(t);a=!0,o()}));var h=!1;return function(e){if(!a&&!h)return h=!0,function(t){return t.setHeader&&"function"==typeof t.abort}(t)?t.abort():"function"==typeof t.destroy?t.destroy():void o(e||new s("pipe"))}}function u(t){t()}function c(t,e){return t.pipe(e)}function l(t){return t.length?"function"!=typeof t[t.length-1]?a:t.pop():a}t.exports=function(){for(var t=arguments.length,e=new Array(t),r=0;r0,(function(t){i||(i=t),t&&s.forEach(u),o||(s.forEach(u),n(i))}))}));return e.reduce(c)}},457:(t,e,r)=>{"use strict";var i=r(281).q.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,n){var o=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,n,r);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new i(n?r:"highWaterMark",o);return Math.floor(o)}return t.objectMode?16:16384}}},503:(t,e,r)=>{t.exports=r(187).EventEmitter},509:(t,e,r)=>{var i=r(764),n=i.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function s(t,e,r){return n(t,e,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=i:(o(i,e),e.Buffer=s),s.prototype=Object.create(n.prototype),o(n,s),s.from=function(t,e,r){if("number"==typeof t)throw new TypeError("Argument must not be a number");return n(t,e,r)},s.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=n(t);return void 0!==e?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i},s.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n(t)},s.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},830:(t,e,r)=>{t.exports=n;var i=r(187).EventEmitter;function n(){i.call(this)}r(717)(n,i),n.Readable=r(481),n.Writable=r(229),n.Duplex=r(753),n.Transform=r(605),n.PassThrough=r(725),n.finished=r(610),n.pipeline=r(946),n.Stream=n,n.prototype.pipe=function(t,e){var r=this;function n(e){t.writable&&!1===t.write(e)&&r.pause&&r.pause()}function o(){r.readable&&r.resume&&r.resume()}r.on("data",n),t.on("drain",o),t._isStdio||e&&!1===e.end||(r.on("end",a),r.on("close",h));var s=!1;function a(){s||(s=!0,t.end())}function h(){s||(s=!0,"function"==typeof t.destroy&&t.destroy())}function u(t){if(c(),0===i.listenerCount(this,"error"))throw t}function c(){r.removeListener("data",n),t.removeListener("drain",o),r.removeListener("end",a),r.removeListener("close",h),r.removeListener("error",u),t.removeListener("error",u),r.removeListener("end",c),r.removeListener("close",c),t.removeListener("close",c)}return r.on("error",u),t.on("error",u),r.on("end",c),r.on("close",c),t.on("close",c),t.emit("pipe",r),t}},553:(t,e,r)=>{"use strict";var i=r(509).Buffer,n=i.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(i.isEncoding===n||!n(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=h,this.end=u,e=4;break;case"utf8":this.fillLast=a,e=4;break;case"base64":this.text=c,this.end=l,e=3;break;default:return this.write=d,void(this.end=f)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(e)}function s(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function h(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function u(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function c(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function l(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function d(t){return t.toString(this.encoding)}function f(t){return t&&t.length?this.write(t):""}e.s=o,o.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(2===n?n=0:t.lastNeed=n-3),n):0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},927:(t,e,r)=>{function i(t){try{if(!r.g.localStorage)return!1}catch(t){return!1}var e=r.g.localStorage[t];return null!=e&&"true"===String(e).toLowerCase()}t.exports=function(t,e){if(i("noDeprecation"))return t;var r=!1;return function(){if(!r){if(i("throwDeprecation"))throw new Error(e);i("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}}},669:t=>{"use strict";t.exports=n},937:t=>{"use strict";if(void 0===i){var e=new Error("Cannot find module 'undefined'");throw e.code="MODULE_NOT_FOUND",e}t.exports=i}},e={};function r(i){var n=e[i];if(void 0!==n)return n.exports;var o=e[i]={exports:{}};return t[i].call(o.exports,o,o.exports,r),o.exports}r.d=(t,e)=>{for(var i in e)r.o(e,i)&&!r.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var o={};return(()=>{"use strict";r.r(o),r.d(o,{BigNumber:()=>t.BigNumber,Commented:()=>t.Commented,Decoder:()=>t.Decoder,Diagnose:()=>t.Diagnose,Encoder:()=>t.Encoder,Map:()=>t.Map,Simple:()=>t.Simple,Tagged:()=>t.Tagged,comment:()=>t.UI,decode:()=>t.Jx,decodeAll:()=>t.fI,decodeAllSync:()=>t.cc,decodeFirst:()=>t.h8,decodeFirstSync:()=>t.$u,diagnose:()=>t.M,encode:()=>t.cv,encodeAsync:()=>t.WR,encodeCanonical:()=>t.N2,encodeOne:()=>t.TG,hasBigInt:()=>t.vc,leveldb:()=>t.ww});var t=r(141)})(),o})())},1027:(t,e,r)=>{var i=r(9509).Buffer,n=r(2830).Transform,o=r(2553).s;function s(t){n.call(this),this.hashMode="string"==typeof t,this.hashMode?this[t]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}r(5717)(s,n),s.prototype.update=function(t,e,r){"string"==typeof t&&(t=i.from(t,e));var n=this._update(t);return this.hashMode?this:(r&&(n=this._toString(n,r)),n)},s.prototype.setAutoPadding=function(){},s.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},s.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},s.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},s.prototype._transform=function(t,e,r){var i;try{this.hashMode?this._update(t):this.push(this._update(t))}catch(t){i=t}finally{r(i)}},s.prototype._flush=function(t){var e;try{this.push(this.__final())}catch(t){e=t}t(e)},s.prototype._finalOrDigest=function(t){var e=this.__final()||i.alloc(0);return t&&(e=this._toString(e,t,!0)),e},s.prototype._toString=function(t,e,r){if(this._decoder||(this._decoder=new o(e),this._encoding=e),this._encoding!==e)throw new Error("can't switch encodings");var i=this._decoder.write(t);return r&&(i+=this._decoder.end()),i},t.exports=s},6393:(t,e,r)=>{var i=r(8764).Buffer,n=r(6266),o=r(6426);t.exports=function(t){return new a(t)};var s={secp256k1:{name:"secp256k1",byteLength:32},secp224r1:{name:"p224",byteLength:28},prime256v1:{name:"p256",byteLength:32},prime192v1:{name:"p192",byteLength:24},ed25519:{name:"ed25519",byteLength:32},secp384r1:{name:"p384",byteLength:48},secp521r1:{name:"p521",byteLength:66}};function a(t){this.curveType=s[t],this.curveType||(this.curveType={name:t}),this.curve=new n.ec(this.curveType.name),this.keys=void 0}function h(t,e,r){Array.isArray(t)||(t=t.toArray());var n=new i(t);if(r&&n.length=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,c=r;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,d=Math.min(u,e.length-1),f=Math.max(0,u-t.length+1);f<=d;f++){var A=u-f|0;c+=(s=(n=0|t.words[A])*(o=0|e.words[f])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|c}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?c[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=l[t],f=d[t];r="";var A=this.clone();for(A.negative=0;!A.isZero();){var g=A.modn(f).toString(t);r=(A=A.idivn(f)).isZero()?g+r:c[u-g.length]+g+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),c=this.clone();if(h){for(a=0;!c.isZero();a++)s=c.andln(255),c.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],A=8191&f,g=f>>>13,M=0|s[2],B=8191&M,w=M>>>13,E=0|s[3],p=8191&E,m=E>>>13,y=0|s[4],b=8191&y,Q=y>>>13,I=0|s[5],C=8191&I,D=I>>>13,N=0|s[6],v=8191&N,G=N>>>13,R=0|s[7],Y=8191&R,U=R>>>13,V=0|s[8],T=8191&V,S=V>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,H=j>>>13,z=0|a[1],x=8191&z,O=z>>>13,W=0|a[2],J=8191&W,X=W>>>13,K=0|a[3],P=8191&K,_=K>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ct=0|a[8],lt=8191&ct,dt=ct>>>13,ft=0|a[9],At=8191&ft,gt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(l,Z))|0)+((8191&(n=(n=Math.imul(l,H))+Math.imul(d,Z)|0))<<13)|0;u=((o=Math.imul(d,H))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(A,Z),n=(n=Math.imul(A,H))+Math.imul(g,Z)|0,o=Math.imul(g,H);var Bt=(u+(i=i+Math.imul(l,x)|0)|0)+((8191&(n=(n=n+Math.imul(l,O)|0)+Math.imul(d,x)|0))<<13)|0;u=((o=o+Math.imul(d,O)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(B,Z),n=(n=Math.imul(B,H))+Math.imul(w,Z)|0,o=Math.imul(w,H),i=i+Math.imul(A,x)|0,n=(n=n+Math.imul(A,O)|0)+Math.imul(g,x)|0,o=o+Math.imul(g,O)|0;var wt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(d,J)|0))<<13)|0;u=((o=o+Math.imul(d,X)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,H))+Math.imul(m,Z)|0,o=Math.imul(m,H),i=i+Math.imul(B,x)|0,n=(n=n+Math.imul(B,O)|0)+Math.imul(w,x)|0,o=o+Math.imul(w,O)|0,i=i+Math.imul(A,J)|0,n=(n=n+Math.imul(A,X)|0)+Math.imul(g,J)|0,o=o+Math.imul(g,X)|0;var Et=(u+(i=i+Math.imul(l,P)|0)|0)+((8191&(n=(n=n+Math.imul(l,_)|0)+Math.imul(d,P)|0))<<13)|0;u=((o=o+Math.imul(d,_)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,H))+Math.imul(Q,Z)|0,o=Math.imul(Q,H),i=i+Math.imul(p,x)|0,n=(n=n+Math.imul(p,O)|0)+Math.imul(m,x)|0,o=o+Math.imul(m,O)|0,i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,X)|0)+Math.imul(w,J)|0,o=o+Math.imul(w,X)|0,i=i+Math.imul(A,P)|0,n=(n=n+Math.imul(A,_)|0)+Math.imul(g,P)|0,o=o+Math.imul(g,_)|0;var pt=(u+(i=i+Math.imul(l,$)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(d,$)|0))<<13)|0;u=((o=o+Math.imul(d,tt)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,H))+Math.imul(D,Z)|0,o=Math.imul(D,H),i=i+Math.imul(b,x)|0,n=(n=n+Math.imul(b,O)|0)+Math.imul(Q,x)|0,o=o+Math.imul(Q,O)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0,i=i+Math.imul(B,P)|0,n=(n=n+Math.imul(B,_)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,_)|0,i=i+Math.imul(A,$)|0,n=(n=n+Math.imul(A,tt)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,tt)|0;var mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(d,rt)|0))<<13)|0;u=((o=o+Math.imul(d,it)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(v,Z),n=(n=Math.imul(v,H))+Math.imul(G,Z)|0,o=Math.imul(G,H),i=i+Math.imul(C,x)|0,n=(n=n+Math.imul(C,O)|0)+Math.imul(D,x)|0,o=o+Math.imul(D,O)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(Q,J)|0,o=o+Math.imul(Q,X)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,_)|0)+Math.imul(m,P)|0,o=o+Math.imul(m,_)|0,i=i+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(A,rt)|0,n=(n=n+Math.imul(A,it)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0;var yt=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(d,ot)|0))<<13)|0;u=((o=o+Math.imul(d,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Y,Z),n=(n=Math.imul(Y,H))+Math.imul(U,Z)|0,o=Math.imul(U,H),i=i+Math.imul(v,x)|0,n=(n=n+Math.imul(v,O)|0)+Math.imul(G,x)|0,o=o+Math.imul(G,O)|0,i=i+Math.imul(C,J)|0,n=(n=n+Math.imul(C,X)|0)+Math.imul(D,J)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,_)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,_)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0,i=i+Math.imul(B,rt)|0,n=(n=n+Math.imul(B,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(A,ot)|0,n=(n=n+Math.imul(A,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var bt=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(d,ht)|0))<<13)|0;u=((o=o+Math.imul(d,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,H))+Math.imul(S,Z)|0,o=Math.imul(S,H),i=i+Math.imul(Y,x)|0,n=(n=n+Math.imul(Y,O)|0)+Math.imul(U,x)|0,o=o+Math.imul(U,O)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(G,J)|0,o=o+Math.imul(G,X)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,_)|0)+Math.imul(D,P)|0,o=o+Math.imul(D,_)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0,i=i+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(A,ht)|0,n=(n=n+Math.imul(A,ut)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,ut)|0;var Qt=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,dt)|0)+Math.imul(d,lt)|0))<<13)|0;u=((o=o+Math.imul(d,dt)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,H))+Math.imul(L,Z)|0,o=Math.imul(L,H),i=i+Math.imul(T,x)|0,n=(n=n+Math.imul(T,O)|0)+Math.imul(S,x)|0,o=o+Math.imul(S,O)|0,i=i+Math.imul(Y,J)|0,n=(n=n+Math.imul(Y,X)|0)+Math.imul(U,J)|0,o=o+Math.imul(U,X)|0,i=i+Math.imul(v,P)|0,n=(n=n+Math.imul(v,_)|0)+Math.imul(G,P)|0,o=o+Math.imul(G,_)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0,i=i+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(A,lt)|0,n=(n=n+Math.imul(A,dt)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,dt)|0;var It=(u+(i=i+Math.imul(l,At)|0)|0)+((8191&(n=(n=n+Math.imul(l,gt)|0)+Math.imul(d,At)|0))<<13)|0;u=((o=o+Math.imul(d,gt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,x),n=(n=Math.imul(F,O))+Math.imul(L,x)|0,o=Math.imul(L,O),i=i+Math.imul(T,J)|0,n=(n=n+Math.imul(T,X)|0)+Math.imul(S,J)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(Y,P)|0,n=(n=n+Math.imul(Y,_)|0)+Math.imul(U,P)|0,o=o+Math.imul(U,_)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(G,$)|0,o=o+Math.imul(G,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(D,rt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0,i=i+Math.imul(B,lt)|0,n=(n=n+Math.imul(B,dt)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,dt)|0;var Ct=(u+(i=i+Math.imul(A,At)|0)|0)+((8191&(n=(n=n+Math.imul(A,gt)|0)+Math.imul(g,At)|0))<<13)|0;u=((o=o+Math.imul(g,gt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,X))+Math.imul(L,J)|0,o=Math.imul(L,X),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,_)|0)+Math.imul(S,P)|0,o=o+Math.imul(S,_)|0,i=i+Math.imul(Y,$)|0,n=(n=n+Math.imul(Y,tt)|0)+Math.imul(U,$)|0,o=o+Math.imul(U,tt)|0,i=i+Math.imul(v,rt)|0,n=(n=n+Math.imul(v,it)|0)+Math.imul(G,rt)|0,o=o+Math.imul(G,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,dt)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,dt)|0;var Dt=(u+(i=i+Math.imul(B,At)|0)|0)+((8191&(n=(n=n+Math.imul(B,gt)|0)+Math.imul(w,At)|0))<<13)|0;u=((o=o+Math.imul(w,gt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,_))+Math.imul(L,P)|0,o=Math.imul(L,_),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(S,$)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(Y,rt)|0,n=(n=n+Math.imul(Y,it)|0)+Math.imul(U,rt)|0,o=o+Math.imul(U,it)|0,i=i+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,st)|0)+Math.imul(G,ot)|0,o=o+Math.imul(G,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,dt)|0)+Math.imul(Q,lt)|0,o=o+Math.imul(Q,dt)|0;var Nt=(u+(i=i+Math.imul(p,At)|0)|0)+((8191&(n=(n=n+Math.imul(p,gt)|0)+Math.imul(m,At)|0))<<13)|0;u=((o=o+Math.imul(m,gt)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(Y,ot)|0,n=(n=n+Math.imul(Y,st)|0)+Math.imul(U,ot)|0,o=o+Math.imul(U,st)|0,i=i+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(G,ht)|0,o=o+Math.imul(G,ut)|0,i=i+Math.imul(C,lt)|0,n=(n=n+Math.imul(C,dt)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,dt)|0;var vt=(u+(i=i+Math.imul(b,At)|0)|0)+((8191&(n=(n=n+Math.imul(b,gt)|0)+Math.imul(Q,At)|0))<<13)|0;u=((o=o+Math.imul(Q,gt)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(Y,ht)|0,n=(n=n+Math.imul(Y,ut)|0)+Math.imul(U,ht)|0,o=o+Math.imul(U,ut)|0,i=i+Math.imul(v,lt)|0,n=(n=n+Math.imul(v,dt)|0)+Math.imul(G,lt)|0,o=o+Math.imul(G,dt)|0;var Gt=(u+(i=i+Math.imul(C,At)|0)|0)+((8191&(n=(n=n+Math.imul(C,gt)|0)+Math.imul(D,At)|0))<<13)|0;u=((o=o+Math.imul(D,gt)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,ut)|0,i=i+Math.imul(Y,lt)|0,n=(n=n+Math.imul(Y,dt)|0)+Math.imul(U,lt)|0,o=o+Math.imul(U,dt)|0;var Rt=(u+(i=i+Math.imul(v,At)|0)|0)+((8191&(n=(n=n+Math.imul(v,gt)|0)+Math.imul(G,At)|0))<<13)|0;u=((o=o+Math.imul(G,gt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,lt)|0,n=(n=n+Math.imul(T,dt)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,dt)|0;var Yt=(u+(i=i+Math.imul(Y,At)|0)|0)+((8191&(n=(n=n+Math.imul(Y,gt)|0)+Math.imul(U,At)|0))<<13)|0;u=((o=o+Math.imul(U,gt)|0)+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(F,lt),n=(n=Math.imul(F,dt))+Math.imul(L,lt)|0,o=Math.imul(L,dt);var Ut=(u+(i=i+Math.imul(T,At)|0)|0)+((8191&(n=(n=n+Math.imul(T,gt)|0)+Math.imul(S,At)|0))<<13)|0;u=((o=o+Math.imul(S,gt)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863;var Vt=(u+(i=Math.imul(F,At))|0)+((8191&(n=(n=Math.imul(F,gt))+Math.imul(L,At)|0))<<13)|0;return u=((o=Math.imul(L,gt))+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,h[0]=Mt,h[1]=Bt,h[2]=wt,h[3]=Et,h[4]=pt,h[5]=mt,h[6]=yt,h[7]=bt,h[8]=Qt,h[9]=It,h[10]=Ct,h[11]=Dt,h[12]=Nt,h[13]=vt,h[14]=Gt,h[15]=Rt,h[16]=Yt,h[17]=Ut,h[18]=Vt,0!==u&&(h[19]=u,r.length++),r};function g(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(A=f),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?A(this,t,e):r<63?f(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):g(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==c||u>=n);u--){var l=0|this.words[u];this.words[u]=c<<26-o|l>>>o,c=l&a}return h&&0!==c&&(h.words[h.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var d=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(n,d,l);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=d)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var c=r.clone(),l=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(c),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var A=0,g=1;0==(r.words[0]&g)&&A<26;++A,g<<=1);if(A>0)for(r.iushrn(A);A-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(c),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,c=1;0==(e.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,d=1;0==(r.words[0]&d)&&l<26;++l,d<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var B={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function E(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function p(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function m(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function Q(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(E,w),E.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},E.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(B[t])return B[t];var e;if("k256"===t)e=new E;else if("p224"===t)e=new p;else if("p192"===t)e=new m;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return B[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);0!==this.pow(c,u).cmp(h);)c.redIAdd(h);for(var l=this.pow(c,n),d=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),A=s;0!==f.cmp(a);){for(var g=f,M=0;0!==g.cmp(a);M++)g=g.redSqr();i(M=0;i--){for(var u=e.words[i],c=h-1;c>=0;c--){var l=u>>c&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4==++a||0===i&&0===c)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new Q(t)},n(Q,b),Q.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},Q.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},Q.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},Q.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},Q.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},3482:(t,e,r)=>{"use strict";var i=r(5717),n=r(2318),o=r(9785),s=r(9072),a=r(1027);function h(t){a.call(this,"digest"),this._hash=t}i(h,a),h.prototype._update=function(t){this._hash.update(t)},h.prototype._final=function(){return this._hash.digest()},t.exports=function(t){return"md5"===(t=t.toLowerCase())?new n:"rmd160"===t||"ripemd160"===t?new o:new h(s(t))}},8028:(t,e,r)=>{var i=r(2318);t.exports=function(t){return(new i).update(t).digest()}},8355:(t,e,r)=>{"use strict";var i=r(5717),n=r(1031),o=r(1027),s=r(9509).Buffer,a=r(8028),h=r(9785),u=r(9072),c=s.alloc(128);function l(t,e){o.call(this,"digest"),"string"==typeof e&&(e=s.from(e));var r="sha512"===t||"sha384"===t?128:64;this._alg=t,this._key=e,e.length>r?e=("rmd160"===t?new h:u(t)).update(e).digest():e.length{"use strict";var i=r(5717),n=r(9509).Buffer,o=r(1027),s=n.alloc(128),a=64;function h(t,e){o.call(this,"digest"),"string"==typeof e&&(e=n.from(e)),this._alg=t,this._key=e,e.length>a?e=t(e):e.length{"use strict";e.randomBytes=e.rng=e.pseudoRandomBytes=e.prng=r(1798),e.createHash=e.Hash=r(3482),e.createHmac=e.Hmac=r(8355);var i=r(6042),n=Object.keys(i),o=["sha1","sha224","sha256","sha384","sha512","md5","rmd160"].concat(n);e.getHashes=function(){return o};var s=r(5632);e.pbkdf2=s.pbkdf2,e.pbkdf2Sync=s.pbkdf2Sync;var a=r(3614);e.Cipher=a.Cipher,e.createCipher=a.createCipher,e.Cipheriv=a.Cipheriv,e.createCipheriv=a.createCipheriv,e.Decipher=a.Decipher,e.createDecipher=a.createDecipher,e.Decipheriv=a.Decipheriv,e.createDecipheriv=a.createDecipheriv,e.getCiphers=a.getCiphers,e.listCiphers=a.listCiphers;var h=r(2607);e.DiffieHellmanGroup=h.DiffieHellmanGroup,e.createDiffieHellmanGroup=h.createDiffieHellmanGroup,e.getDiffieHellman=h.getDiffieHellman,e.createDiffieHellman=h.createDiffieHellman,e.DiffieHellman=h.DiffieHellman;var u=r(4743);e.createSign=u.createSign,e.Sign=u.Sign,e.createVerify=u.createVerify,e.Verify=u.Verify,e.createECDH=r(6393);var c=r(7900);e.publicEncrypt=c.publicEncrypt,e.privateEncrypt=c.privateEncrypt,e.publicDecrypt=c.publicDecrypt,e.privateDecrypt=c.privateDecrypt;var l=r(7963);e.randomFill=l.randomFill,e.randomFillSync=l.randomFillSync,e.createCredentials=function(){throw new Error(["sorry, createCredentials is not implemented yet","we accept pull requests","https://github.com/crypto-browserify/crypto-browserify"].join("\n"))},e.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},4289:(t,e,r)=>{"use strict";var i=r(2215),n="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),o=Object.prototype.toString,s=Array.prototype.concat,a=Object.defineProperty,h=a&&function(){var t={};try{for(var e in a(t,"x",{enumerable:!1,value:t}),t)return!1;return t.x===t}catch(t){return!1}}(),u=function(t,e,r,i){var n;(!(e in t)||"function"==typeof(n=i)&&"[object Function]"===o.call(n)&&i())&&(h?a(t,e,{configurable:!0,enumerable:!1,value:r,writable:!0}):t[e]=r)},c=function(t,e){var r=arguments.length>2?arguments[2]:{},o=i(e);n&&(o=s.call(o,Object.getOwnPropertySymbols(e)));for(var a=0;a{"use strict";e.utils=r(1278),e.Cipher=r(5756),e.DES=r(778),e.CBC=r(9051),e.EDE=r(651)},9051:(t,e,r)=>{"use strict";var i=r(9746),n=r(5717),o={};function s(t){i.equal(t.length,8,"Invalid IV length"),this.iv=new Array(8);for(var e=0;e{"use strict";var i=r(9746);function n(t){this.options=t,this.type=this.options.type,this.blockSize=8,this._init(),this.buffer=new Array(this.blockSize),this.bufferOff=0}t.exports=n,n.prototype._init=function(){},n.prototype.update=function(t){return 0===t.length?[]:"decrypt"===this.type?this._updateDecrypt(t):this._updateEncrypt(t)},n.prototype._buffer=function(t,e){for(var r=Math.min(this.buffer.length-this.bufferOff,t.length-e),i=0;i0;i--)e+=this._buffer(t,e),r+=this._flushBuffer(n,r);return e+=this._buffer(t,e),n},n.prototype.final=function(t){var e,r;return t&&(e=this.update(t)),r="encrypt"===this.type?this._finalEncrypt():this._finalDecrypt(),e?e.concat(r):r},n.prototype._pad=function(t,e){if(0===e)return!1;for(;e{"use strict";var i=r(9746),n=r(5717),o=r(1278),s=r(5756);function a(){this.tmp=new Array(2),this.keys=null}function h(t){s.call(this,t);var e=new a;this._desState=e,this.deriveKeys(e,t.key)}n(h,s),t.exports=h,h.create=function(t){return new h(t)};var u=[1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1];h.prototype.deriveKeys=function(t,e){t.keys=new Array(32),i.equal(e.length,this.blockSize,"Invalid key length");var r=o.readUInt32BE(e,0),n=o.readUInt32BE(e,4);o.pc1(r,n,t.tmp,0),r=t.tmp[0],n=t.tmp[1];for(var s=0;s>>1];r=o.r28shl(r,a),n=o.r28shl(n,a),o.pc2(r,n,t.keys,s)}},h.prototype._update=function(t,e,r,i){var n=this._desState,s=o.readUInt32BE(t,e),a=o.readUInt32BE(t,e+4);o.ip(s,a,n.tmp,0),s=n.tmp[0],a=n.tmp[1],"encrypt"===this.type?this._encrypt(n,s,a,n.tmp,0):this._decrypt(n,s,a,n.tmp,0),s=n.tmp[0],a=n.tmp[1],o.writeUInt32BE(r,s,i),o.writeUInt32BE(r,a,i+4)},h.prototype._pad=function(t,e){for(var r=t.length-e,i=e;i>>0,s=d}o.rip(a,s,i,n)},h.prototype._decrypt=function(t,e,r,i,n){for(var s=r,a=e,h=t.keys.length-2;h>=0;h-=2){var u=t.keys[h],c=t.keys[h+1];o.expand(s,t.tmp,0),u^=t.tmp[0],c^=t.tmp[1];var l=o.substitute(u,c),d=s;s=(a^o.permute(l))>>>0,a=d}o.rip(s,a,i,n)}},651:(t,e,r)=>{"use strict";var i=r(9746),n=r(5717),o=r(5756),s=r(778);function a(t,e){i.equal(e.length,24,"Invalid key length");var r=e.slice(0,8),n=e.slice(8,16),o=e.slice(16,24);this.ciphers="encrypt"===t?[s.create({type:"encrypt",key:r}),s.create({type:"decrypt",key:n}),s.create({type:"encrypt",key:o})]:[s.create({type:"decrypt",key:o}),s.create({type:"encrypt",key:n}),s.create({type:"decrypt",key:r})]}function h(t){o.call(this,t);var e=new a(this.type,this.options.key);this._edeState=e}n(h,o),t.exports=h,h.create=function(t){return new h(t)},h.prototype._update=function(t,e,r,i){var n=this._edeState;n.ciphers[0]._update(t,e,r,i),n.ciphers[1]._update(r,i,r,i),n.ciphers[2]._update(r,i,r,i)},h.prototype._pad=s.prototype._pad,h.prototype._unpad=s.prototype._unpad},1278:(t,e)=>{"use strict";e.readUInt32BE=function(t,e){return(t[0+e]<<24|t[1+e]<<16|t[2+e]<<8|t[3+e])>>>0},e.writeUInt32BE=function(t,e,r){t[0+r]=e>>>24,t[1+r]=e>>>16&255,t[2+r]=e>>>8&255,t[3+r]=255&e},e.ip=function(t,e,r,i){for(var n=0,o=0,s=6;s>=0;s-=2){for(var a=0;a<=24;a+=8)n<<=1,n|=e>>>a+s&1;for(a=0;a<=24;a+=8)n<<=1,n|=t>>>a+s&1}for(s=6;s>=0;s-=2){for(a=1;a<=25;a+=8)o<<=1,o|=e>>>a+s&1;for(a=1;a<=25;a+=8)o<<=1,o|=t>>>a+s&1}r[i+0]=n>>>0,r[i+1]=o>>>0},e.rip=function(t,e,r,i){for(var n=0,o=0,s=0;s<4;s++)for(var a=24;a>=0;a-=8)n<<=1,n|=e>>>a+s&1,n<<=1,n|=t>>>a+s&1;for(s=4;s<8;s++)for(a=24;a>=0;a-=8)o<<=1,o|=e>>>a+s&1,o<<=1,o|=t>>>a+s&1;r[i+0]=n>>>0,r[i+1]=o>>>0},e.pc1=function(t,e,r,i){for(var n=0,o=0,s=7;s>=5;s--){for(var a=0;a<=24;a+=8)n<<=1,n|=e>>a+s&1;for(a=0;a<=24;a+=8)n<<=1,n|=t>>a+s&1}for(a=0;a<=24;a+=8)n<<=1,n|=e>>a+s&1;for(s=1;s<=3;s++){for(a=0;a<=24;a+=8)o<<=1,o|=e>>a+s&1;for(a=0;a<=24;a+=8)o<<=1,o|=t>>a+s&1}for(a=0;a<=24;a+=8)o<<=1,o|=t>>a+s&1;r[i+0]=n>>>0,r[i+1]=o>>>0},e.r28shl=function(t,e){return t<>>28-e};var r=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];e.pc2=function(t,e,i,n){for(var o=0,s=0,a=r.length>>>1,h=0;h>>r[h]&1;for(h=a;h>>r[h]&1;i[n+0]=o>>>0,i[n+1]=s>>>0},e.expand=function(t,e,r){var i=0,n=0;i=(1&t)<<5|t>>>27;for(var o=23;o>=15;o-=4)i<<=6,i|=t>>>o&63;for(o=11;o>=3;o-=4)n|=t>>>o&63,n<<=6;n|=(31&t)<<1|t>>>31,e[r+0]=i>>>0,e[r+1]=n>>>0};var i=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];e.substitute=function(t,e){for(var r=0,n=0;n<4;n++)r<<=4,r|=i[64*n+(t>>>18-6*n&63)];for(n=0;n<4;n++)r<<=4,r|=i[256+64*n+(e>>>18-6*n&63)];return r>>>0};var n=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];e.permute=function(t){for(var e=0,r=0;r>>n[r]&1;return e>>>0},e.padSplit=function(t,e,r){for(var i=t.toString(2);i.length{var i=r(8764).Buffer,n=r(3590),o=r(1930),s=r(7426),a={binary:!0,hex:!0,base64:!0};e.DiffieHellmanGroup=e.createDiffieHellmanGroup=e.getDiffieHellman=function(t){var e=new i(o[t].prime,"hex"),r=new i(o[t].gen,"hex");return new s(e,r)},e.createDiffieHellman=e.DiffieHellman=function t(e,r,o,h){return i.isBuffer(r)||void 0===a[r]?t(e,"binary",r,o):(r=r||"binary",h=h||"binary",o=o||new i([2]),i.isBuffer(o)||(o=new i(o,h)),"number"==typeof e?new s(n(e,o),o,!0):(i.isBuffer(e)||(e=new i(e,r)),new s(e,o,!0)))}},7426:(t,e,r)=>{var i=r(8764).Buffer,n=r(3620),o=new(r(3047)),s=new n(24),a=new n(11),h=new n(10),u=new n(3),c=new n(7),l=r(3590),d=r(1798);function f(t,e){return e=e||"utf8",i.isBuffer(t)||(t=new i(t,e)),this._pub=new n(t),this}function A(t,e){return e=e||"utf8",i.isBuffer(t)||(t=new i(t,e)),this._priv=new n(t),this}t.exports=M;var g={};function M(t,e,r){this.setGenerator(e),this.__prime=new n(t),this._prime=n.mont(this.__prime),this._primeLen=t.length,this._pub=void 0,this._priv=void 0,this._primeCode=void 0,r?(this.setPublicKey=f,this.setPrivateKey=A):this._primeCode=8}function B(t,e){var r=new i(t.toArray());return e?r.toString(e):r}Object.defineProperty(M.prototype,"verifyError",{enumerable:!0,get:function(){return"number"!=typeof this._primeCode&&(this._primeCode=function(t,e){var r=e.toString("hex"),i=[r,t.toString(16)].join("_");if(i in g)return g[i];var n,d=0;if(t.isEven()||!l.simpleSieve||!l.fermatTest(t)||!o.test(t))return d+=1,d+="02"===r||"05"===r?8:4,g[i]=d,d;switch(o.test(t.shrn(1))||(d+=2),r){case"02":t.mod(s).cmp(a)&&(d+=8);break;case"05":(n=t.mod(h)).cmp(u)&&n.cmp(c)&&(d+=8);break;default:d+=4}return g[i]=d,d}(this.__prime,this.__gen)),this._primeCode}}),M.prototype.generateKeys=function(){return this._priv||(this._priv=new n(d(this._primeLen))),this._pub=this._gen.toRed(this._prime).redPow(this._priv).fromRed(),this.getPublicKey()},M.prototype.computeSecret=function(t){var e=(t=(t=new n(t)).toRed(this._prime)).redPow(this._priv).fromRed(),r=new i(e.toArray()),o=this.getPrime();if(r.length{var i=r(1798);t.exports=w,w.simpleSieve=M,w.fermatTest=B;var n=r(3620),o=new n(24),s=new(r(3047)),a=new n(1),h=new n(2),u=new n(5),c=(new n(16),new n(8),new n(10)),l=new n(3),d=(new n(7),new n(11)),f=new n(4),A=(new n(12),null);function g(){if(null!==A)return A;var t=[];t[0]=2;for(var e=1,r=3;r<1048576;r+=2){for(var i=Math.ceil(Math.sqrt(r)),n=0;nt;)r.ishrn(1);if(r.isEven()&&r.iadd(a),r.testn(1)||r.iadd(h),e.cmp(h)){if(!e.cmp(u))for(;r.mod(c).cmp(l);)r.iadd(f)}else for(;r.mod(o).cmp(d);)r.iadd(f);if(M(A=r.shrn(1))&&M(r)&&B(A)&&B(r)&&s.test(A)&&s.test(r))return r}}},1930:t=>{"use strict";t.exports=JSON.parse('{"modp1":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff"},"modp2":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff"},"modp5":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff"},"modp14":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff"},"modp15":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff"},"modp16":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff"},"modp17":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff"},"modp18":{"gen":"02","prime":"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff"}}')},3620:function(t,e,r){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(7748).Buffer}catch(t){}function a(t,e){var r=t.charCodeAt(e);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,c=r;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,d=Math.min(u,e.length-1),f=Math.max(0,u-t.length+1);f<=d;f++){var A=u-f|0;c+=(s=(n=0|t.words[A])*(o=0|e.words[f])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|c}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?c[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=l[t],f=d[t];r="";var A=this.clone();for(A.negative=0;!A.isZero();){var g=A.modn(f).toString(t);r=(A=A.idivn(f)).isZero()?g+r:c[u-g.length]+g+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),c=this.clone();if(h){for(a=0;!c.isZero();a++)s=c.andln(255),c.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],A=8191&f,g=f>>>13,M=0|s[2],B=8191&M,w=M>>>13,E=0|s[3],p=8191&E,m=E>>>13,y=0|s[4],b=8191&y,Q=y>>>13,I=0|s[5],C=8191&I,D=I>>>13,N=0|s[6],v=8191&N,G=N>>>13,R=0|s[7],Y=8191&R,U=R>>>13,V=0|s[8],T=8191&V,S=V>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,H=j>>>13,z=0|a[1],x=8191&z,O=z>>>13,W=0|a[2],J=8191&W,X=W>>>13,K=0|a[3],P=8191&K,_=K>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ct=0|a[8],lt=8191&ct,dt=ct>>>13,ft=0|a[9],At=8191&ft,gt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(l,Z))|0)+((8191&(n=(n=Math.imul(l,H))+Math.imul(d,Z)|0))<<13)|0;u=((o=Math.imul(d,H))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(A,Z),n=(n=Math.imul(A,H))+Math.imul(g,Z)|0,o=Math.imul(g,H);var Bt=(u+(i=i+Math.imul(l,x)|0)|0)+((8191&(n=(n=n+Math.imul(l,O)|0)+Math.imul(d,x)|0))<<13)|0;u=((o=o+Math.imul(d,O)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(B,Z),n=(n=Math.imul(B,H))+Math.imul(w,Z)|0,o=Math.imul(w,H),i=i+Math.imul(A,x)|0,n=(n=n+Math.imul(A,O)|0)+Math.imul(g,x)|0,o=o+Math.imul(g,O)|0;var wt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(d,J)|0))<<13)|0;u=((o=o+Math.imul(d,X)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,H))+Math.imul(m,Z)|0,o=Math.imul(m,H),i=i+Math.imul(B,x)|0,n=(n=n+Math.imul(B,O)|0)+Math.imul(w,x)|0,o=o+Math.imul(w,O)|0,i=i+Math.imul(A,J)|0,n=(n=n+Math.imul(A,X)|0)+Math.imul(g,J)|0,o=o+Math.imul(g,X)|0;var Et=(u+(i=i+Math.imul(l,P)|0)|0)+((8191&(n=(n=n+Math.imul(l,_)|0)+Math.imul(d,P)|0))<<13)|0;u=((o=o+Math.imul(d,_)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,H))+Math.imul(Q,Z)|0,o=Math.imul(Q,H),i=i+Math.imul(p,x)|0,n=(n=n+Math.imul(p,O)|0)+Math.imul(m,x)|0,o=o+Math.imul(m,O)|0,i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,X)|0)+Math.imul(w,J)|0,o=o+Math.imul(w,X)|0,i=i+Math.imul(A,P)|0,n=(n=n+Math.imul(A,_)|0)+Math.imul(g,P)|0,o=o+Math.imul(g,_)|0;var pt=(u+(i=i+Math.imul(l,$)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(d,$)|0))<<13)|0;u=((o=o+Math.imul(d,tt)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,H))+Math.imul(D,Z)|0,o=Math.imul(D,H),i=i+Math.imul(b,x)|0,n=(n=n+Math.imul(b,O)|0)+Math.imul(Q,x)|0,o=o+Math.imul(Q,O)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0,i=i+Math.imul(B,P)|0,n=(n=n+Math.imul(B,_)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,_)|0,i=i+Math.imul(A,$)|0,n=(n=n+Math.imul(A,tt)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,tt)|0;var mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(d,rt)|0))<<13)|0;u=((o=o+Math.imul(d,it)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(v,Z),n=(n=Math.imul(v,H))+Math.imul(G,Z)|0,o=Math.imul(G,H),i=i+Math.imul(C,x)|0,n=(n=n+Math.imul(C,O)|0)+Math.imul(D,x)|0,o=o+Math.imul(D,O)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(Q,J)|0,o=o+Math.imul(Q,X)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,_)|0)+Math.imul(m,P)|0,o=o+Math.imul(m,_)|0,i=i+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(A,rt)|0,n=(n=n+Math.imul(A,it)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0;var yt=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(d,ot)|0))<<13)|0;u=((o=o+Math.imul(d,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Y,Z),n=(n=Math.imul(Y,H))+Math.imul(U,Z)|0,o=Math.imul(U,H),i=i+Math.imul(v,x)|0,n=(n=n+Math.imul(v,O)|0)+Math.imul(G,x)|0,o=o+Math.imul(G,O)|0,i=i+Math.imul(C,J)|0,n=(n=n+Math.imul(C,X)|0)+Math.imul(D,J)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,_)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,_)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0,i=i+Math.imul(B,rt)|0,n=(n=n+Math.imul(B,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(A,ot)|0,n=(n=n+Math.imul(A,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var bt=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(d,ht)|0))<<13)|0;u=((o=o+Math.imul(d,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,H))+Math.imul(S,Z)|0,o=Math.imul(S,H),i=i+Math.imul(Y,x)|0,n=(n=n+Math.imul(Y,O)|0)+Math.imul(U,x)|0,o=o+Math.imul(U,O)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(G,J)|0,o=o+Math.imul(G,X)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,_)|0)+Math.imul(D,P)|0,o=o+Math.imul(D,_)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0,i=i+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(A,ht)|0,n=(n=n+Math.imul(A,ut)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,ut)|0;var Qt=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,dt)|0)+Math.imul(d,lt)|0))<<13)|0;u=((o=o+Math.imul(d,dt)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,H))+Math.imul(L,Z)|0,o=Math.imul(L,H),i=i+Math.imul(T,x)|0,n=(n=n+Math.imul(T,O)|0)+Math.imul(S,x)|0,o=o+Math.imul(S,O)|0,i=i+Math.imul(Y,J)|0,n=(n=n+Math.imul(Y,X)|0)+Math.imul(U,J)|0,o=o+Math.imul(U,X)|0,i=i+Math.imul(v,P)|0,n=(n=n+Math.imul(v,_)|0)+Math.imul(G,P)|0,o=o+Math.imul(G,_)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0,i=i+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(A,lt)|0,n=(n=n+Math.imul(A,dt)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,dt)|0;var It=(u+(i=i+Math.imul(l,At)|0)|0)+((8191&(n=(n=n+Math.imul(l,gt)|0)+Math.imul(d,At)|0))<<13)|0;u=((o=o+Math.imul(d,gt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,x),n=(n=Math.imul(F,O))+Math.imul(L,x)|0,o=Math.imul(L,O),i=i+Math.imul(T,J)|0,n=(n=n+Math.imul(T,X)|0)+Math.imul(S,J)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(Y,P)|0,n=(n=n+Math.imul(Y,_)|0)+Math.imul(U,P)|0,o=o+Math.imul(U,_)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(G,$)|0,o=o+Math.imul(G,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(D,rt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0,i=i+Math.imul(B,lt)|0,n=(n=n+Math.imul(B,dt)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,dt)|0;var Ct=(u+(i=i+Math.imul(A,At)|0)|0)+((8191&(n=(n=n+Math.imul(A,gt)|0)+Math.imul(g,At)|0))<<13)|0;u=((o=o+Math.imul(g,gt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,X))+Math.imul(L,J)|0,o=Math.imul(L,X),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,_)|0)+Math.imul(S,P)|0,o=o+Math.imul(S,_)|0,i=i+Math.imul(Y,$)|0,n=(n=n+Math.imul(Y,tt)|0)+Math.imul(U,$)|0,o=o+Math.imul(U,tt)|0,i=i+Math.imul(v,rt)|0,n=(n=n+Math.imul(v,it)|0)+Math.imul(G,rt)|0,o=o+Math.imul(G,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,dt)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,dt)|0;var Dt=(u+(i=i+Math.imul(B,At)|0)|0)+((8191&(n=(n=n+Math.imul(B,gt)|0)+Math.imul(w,At)|0))<<13)|0;u=((o=o+Math.imul(w,gt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,_))+Math.imul(L,P)|0,o=Math.imul(L,_),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(S,$)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(Y,rt)|0,n=(n=n+Math.imul(Y,it)|0)+Math.imul(U,rt)|0,o=o+Math.imul(U,it)|0,i=i+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,st)|0)+Math.imul(G,ot)|0,o=o+Math.imul(G,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,dt)|0)+Math.imul(Q,lt)|0,o=o+Math.imul(Q,dt)|0;var Nt=(u+(i=i+Math.imul(p,At)|0)|0)+((8191&(n=(n=n+Math.imul(p,gt)|0)+Math.imul(m,At)|0))<<13)|0;u=((o=o+Math.imul(m,gt)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(Y,ot)|0,n=(n=n+Math.imul(Y,st)|0)+Math.imul(U,ot)|0,o=o+Math.imul(U,st)|0,i=i+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(G,ht)|0,o=o+Math.imul(G,ut)|0,i=i+Math.imul(C,lt)|0,n=(n=n+Math.imul(C,dt)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,dt)|0;var vt=(u+(i=i+Math.imul(b,At)|0)|0)+((8191&(n=(n=n+Math.imul(b,gt)|0)+Math.imul(Q,At)|0))<<13)|0;u=((o=o+Math.imul(Q,gt)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(Y,ht)|0,n=(n=n+Math.imul(Y,ut)|0)+Math.imul(U,ht)|0,o=o+Math.imul(U,ut)|0,i=i+Math.imul(v,lt)|0,n=(n=n+Math.imul(v,dt)|0)+Math.imul(G,lt)|0,o=o+Math.imul(G,dt)|0;var Gt=(u+(i=i+Math.imul(C,At)|0)|0)+((8191&(n=(n=n+Math.imul(C,gt)|0)+Math.imul(D,At)|0))<<13)|0;u=((o=o+Math.imul(D,gt)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,ut)|0,i=i+Math.imul(Y,lt)|0,n=(n=n+Math.imul(Y,dt)|0)+Math.imul(U,lt)|0,o=o+Math.imul(U,dt)|0;var Rt=(u+(i=i+Math.imul(v,At)|0)|0)+((8191&(n=(n=n+Math.imul(v,gt)|0)+Math.imul(G,At)|0))<<13)|0;u=((o=o+Math.imul(G,gt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,lt)|0,n=(n=n+Math.imul(T,dt)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,dt)|0;var Yt=(u+(i=i+Math.imul(Y,At)|0)|0)+((8191&(n=(n=n+Math.imul(Y,gt)|0)+Math.imul(U,At)|0))<<13)|0;u=((o=o+Math.imul(U,gt)|0)+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(F,lt),n=(n=Math.imul(F,dt))+Math.imul(L,lt)|0,o=Math.imul(L,dt);var Ut=(u+(i=i+Math.imul(T,At)|0)|0)+((8191&(n=(n=n+Math.imul(T,gt)|0)+Math.imul(S,At)|0))<<13)|0;u=((o=o+Math.imul(S,gt)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863;var Vt=(u+(i=Math.imul(F,At))|0)+((8191&(n=(n=Math.imul(F,gt))+Math.imul(L,At)|0))<<13)|0;return u=((o=Math.imul(L,gt))+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,h[0]=Mt,h[1]=Bt,h[2]=wt,h[3]=Et,h[4]=pt,h[5]=mt,h[6]=yt,h[7]=bt,h[8]=Qt,h[9]=It,h[10]=Ct,h[11]=Dt,h[12]=Nt,h[13]=vt,h[14]=Gt,h[15]=Rt,h[16]=Yt,h[17]=Ut,h[18]=Vt,0!==u&&(h[19]=u,r.length++),r};function g(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(A=f),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?A(this,t,e):r<63?f(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):g(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==c||u>=n);u--){var l=0|this.words[u];this.words[u]=c<<26-o|l>>>o,c=l&a}return h&&0!==c&&(h.words[h.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var d=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(n,d,l);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=d)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var c=r.clone(),l=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(c),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var A=0,g=1;0==(r.words[0]&g)&&A<26;++A,g<<=1);if(A>0)for(r.iushrn(A);A-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(c),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,c=1;0==(e.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,d=1;0==(r.words[0]&d)&&l<26;++l,d<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var B={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function E(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function p(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function m(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function Q(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(E,w),E.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},E.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(B[t])return B[t];var e;if("k256"===t)e=new E;else if("p224"===t)e=new p;else if("p192"===t)e=new m;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return B[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);0!==this.pow(c,u).cmp(h);)c.redIAdd(h);for(var l=this.pow(c,n),d=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),A=s;0!==f.cmp(a);){for(var g=f,M=0;0!==g.cmp(a);M++)g=g.redSqr();i(M=0;i--){for(var u=e.words[i],c=h-1;c>=0;c--){var l=u>>c&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4==++a||0===i&&0===c)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new Q(t)},n(Q,b),Q.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},Q.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},Q.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},Q.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},Q.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},6266:(t,e,r)=>{"use strict";var i=e;i.version=r(7519).i8,i.utils=r(953),i.rand=r(9931),i.curve=r(8254),i.curves=r(5427),i.ec=r(7954),i.eddsa=r(5980)},4918:(t,e,r)=>{"use strict";var i=r(3785),n=r(953),o=n.getNAF,s=n.getJSF,a=n.assert;function h(t,e){this.type=t,this.p=new i(e.p,16),this.red=e.prime?i.red(e.prime):i.mont(this.p),this.zero=new i(0).toRed(this.red),this.one=new i(1).toRed(this.red),this.two=new i(2).toRed(this.red),this.n=e.n&&new i(e.n,16),this.g=e.g&&this.pointFromJSON(e.g,e.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4),this._bitLength=this.n?this.n.bitLength():0;var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function u(t,e){this.curve=t,this.type=e,this.precomputed=null}t.exports=h,h.prototype.point=function(){throw new Error("Not implemented")},h.prototype.validate=function(){throw new Error("Not implemented")},h.prototype._fixedNafMul=function(t,e){a(t.precomputed);var r=t._getDoubles(),i=o(e,1,this._bitLength),n=(1<=s;c--)h=(h<<1)+i[c];u.push(h)}for(var l=this.jpoint(null,null,null),d=this.jpoint(null,null,null),f=n;f>0;f--){for(s=0;s=0;u--){for(var c=0;u>=0&&0===s[u];u--)c++;if(u>=0&&c++,h=h.dblp(c),u<0)break;var l=s[u];a(0!==l),h="affine"===t.type?l>0?h.mixedAdd(n[l-1>>1]):h.mixedAdd(n[-l-1>>1].neg()):l>0?h.add(n[l-1>>1]):h.add(n[-l-1>>1].neg())}return"affine"===t.type?h.toP():h},h.prototype._wnafMulAdd=function(t,e,r,i,n){var a,h,u,c=this._wnafT1,l=this._wnafT2,d=this._wnafT3,f=0;for(a=0;a=1;a-=2){var g=a-1,M=a;if(1===c[g]&&1===c[M]){var B=[e[g],null,null,e[M]];0===e[g].y.cmp(e[M].y)?(B[1]=e[g].add(e[M]),B[2]=e[g].toJ().mixedAdd(e[M].neg())):0===e[g].y.cmp(e[M].y.redNeg())?(B[1]=e[g].toJ().mixedAdd(e[M]),B[2]=e[g].add(e[M].neg())):(B[1]=e[g].toJ().mixedAdd(e[M]),B[2]=e[g].toJ().mixedAdd(e[M].neg()));var w=[-3,-1,-5,-7,0,7,5,1,3],E=s(r[g],r[M]);for(f=Math.max(E[0].length,f),d[g]=new Array(f),d[M]=new Array(f),h=0;h=0;a--){for(var Q=0;a>=0;){var I=!0;for(h=0;h=0&&Q++,y=y.dblp(Q),a<0)break;for(h=0;h0?u=l[h][C-1>>1]:C<0&&(u=l[h][-C-1>>1].neg()),y="affine"===u.type?y.mixedAdd(u):y.add(u))}}for(a=0;a=Math.ceil((t.bitLength()+1)/e.step)},u.prototype._getDoubles=function(t,e){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],i=this,n=0;n{"use strict";var i=r(953),n=r(3785),o=r(5717),s=r(4918),a=i.assert;function h(t){this.twisted=1!=(0|t.a),this.mOneA=this.twisted&&-1==(0|t.a),this.extended=this.mOneA,s.call(this,"edwards",t),this.a=new n(t.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new n(t.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new n(t.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),a(!this.twisted||0===this.c.fromRed().cmpn(1)),this.oneC=1==(0|t.c)}function u(t,e,r,i,o){s.BasePoint.call(this,t,"projective"),null===e&&null===r&&null===i?(this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0):(this.x=new n(e,16),this.y=new n(r,16),this.z=i?new n(i,16):this.curve.one,this.t=o&&new n(o,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.t&&!this.t.red&&(this.t=this.t.toRed(this.curve.red)),this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t&&(this.t=this.x.redMul(this.y),this.zOne||(this.t=this.t.redMul(this.z.redInvm()))))}o(h,s),t.exports=h,h.prototype._mulA=function(t){return this.mOneA?t.redNeg():this.a.redMul(t)},h.prototype._mulC=function(t){return this.oneC?t:this.c.redMul(t)},h.prototype.jpoint=function(t,e,r,i){return this.point(t,e,r,i)},h.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr(),i=this.c2.redSub(this.a.redMul(r)),o=this.one.redSub(this.c2.redMul(this.d).redMul(r)),s=i.redMul(o.redInvm()),a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");var h=a.fromRed().isOdd();return(e&&!h||!e&&h)&&(a=a.redNeg()),this.point(t,a)},h.prototype.pointFromY=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr(),i=r.redSub(this.c2),o=r.redMul(this.d).redMul(this.c2).redSub(this.a),s=i.redMul(o.redInvm());if(0===s.cmp(this.zero)){if(e)throw new Error("invalid point");return this.point(this.zero,t)}var a=s.redSqrt();if(0!==a.redSqr().redSub(s).cmp(this.zero))throw new Error("invalid point");return a.fromRed().isOdd()!==e&&(a=a.redNeg()),this.point(a,t)},h.prototype.validate=function(t){if(t.isInfinity())return!0;t.normalize();var e=t.x.redSqr(),r=t.y.redSqr(),i=e.redMul(this.a).redAdd(r),n=this.c2.redMul(this.one.redAdd(this.d.redMul(e).redMul(r)));return 0===i.cmp(n)},o(u,s.BasePoint),h.prototype.pointFromJSON=function(t){return u.fromJSON(this,t)},h.prototype.point=function(t,e,r,i){return new u(this,t,e,r,i)},u.fromJSON=function(t,e){return new u(t,e[0],e[1],e[2])},u.prototype.inspect=function(){return this.isInfinity()?"":""},u.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},u.prototype._extDbl=function(){var t=this.x.redSqr(),e=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var i=this.curve._mulA(t),n=this.x.redAdd(this.y).redSqr().redISub(t).redISub(e),o=i.redAdd(e),s=o.redSub(r),a=i.redSub(e),h=n.redMul(s),u=o.redMul(a),c=n.redMul(a),l=s.redMul(o);return this.curve.point(h,u,l,c)},u.prototype._projDbl=function(){var t,e,r,i,n,o,s=this.x.redAdd(this.y).redSqr(),a=this.x.redSqr(),h=this.y.redSqr();if(this.curve.twisted){var u=(i=this.curve._mulA(a)).redAdd(h);this.zOne?(t=s.redSub(a).redSub(h).redMul(u.redSub(this.curve.two)),e=u.redMul(i.redSub(h)),r=u.redSqr().redSub(u).redSub(u)):(n=this.z.redSqr(),o=u.redSub(n).redISub(n),t=s.redSub(a).redISub(h).redMul(o),e=u.redMul(i.redSub(h)),r=u.redMul(o))}else i=a.redAdd(h),n=this.curve._mulC(this.z).redSqr(),o=i.redSub(n).redSub(n),t=this.curve._mulC(s.redISub(i)).redMul(o),e=this.curve._mulC(i).redMul(a.redISub(h)),r=i.redMul(o);return this.curve.point(t,e,r)},u.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},u.prototype._extAdd=function(t){var e=this.y.redSub(this.x).redMul(t.y.redSub(t.x)),r=this.y.redAdd(this.x).redMul(t.y.redAdd(t.x)),i=this.t.redMul(this.curve.dd).redMul(t.t),n=this.z.redMul(t.z.redAdd(t.z)),o=r.redSub(e),s=n.redSub(i),a=n.redAdd(i),h=r.redAdd(e),u=o.redMul(s),c=a.redMul(h),l=o.redMul(h),d=s.redMul(a);return this.curve.point(u,c,d,l)},u.prototype._projAdd=function(t){var e,r,i=this.z.redMul(t.z),n=i.redSqr(),o=this.x.redMul(t.x),s=this.y.redMul(t.y),a=this.curve.d.redMul(o).redMul(s),h=n.redSub(a),u=n.redAdd(a),c=this.x.redAdd(this.y).redMul(t.x.redAdd(t.y)).redISub(o).redISub(s),l=i.redMul(h).redMul(c);return this.curve.twisted?(e=i.redMul(u).redMul(s.redSub(this.curve._mulA(o))),r=h.redMul(u)):(e=i.redMul(u).redMul(s.redSub(o)),r=this.curve._mulC(h).redMul(u)),this.curve.point(l,e,r)},u.prototype.add=function(t){return this.isInfinity()?t:t.isInfinity()?this:this.curve.extended?this._extAdd(t):this._projAdd(t)},u.prototype.mul=function(t){return this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!1)},u.prototype.jmulAdd=function(t,e,r){return this.curve._wnafMulAdd(1,[this,e],[t,r],2,!0)},u.prototype.normalize=function(){if(this.zOne)return this;var t=this.z.redInvm();return this.x=this.x.redMul(t),this.y=this.y.redMul(t),this.t&&(this.t=this.t.redMul(t)),this.z=this.curve.one,this.zOne=!0,this},u.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()},u.prototype.getY=function(){return this.normalize(),this.y.fromRed()},u.prototype.eq=function(t){return this===t||0===this.getX().cmp(t.getX())&&0===this.getY().cmp(t.getY())},u.prototype.eqXToP=function(t){var e=t.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(e))return!0;for(var r=t.clone(),i=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(e.redIAdd(i),0===this.x.cmp(e))return!0}},u.prototype.toP=u.prototype.normalize,u.prototype.mixedAdd=u.prototype.add},8254:(t,e,r)=>{"use strict";var i=e;i.base=r(4918),i.short=r(6673),i.mont=r(2881),i.edwards=r(1138)},2881:(t,e,r)=>{"use strict";var i=r(3785),n=r(5717),o=r(4918),s=r(953);function a(t){o.call(this,"mont",t),this.a=new i(t.a,16).toRed(this.red),this.b=new i(t.b,16).toRed(this.red),this.i4=new i(4).toRed(this.red).redInvm(),this.two=new i(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function h(t,e,r){o.BasePoint.call(this,t,"projective"),null===e&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new i(e,16),this.z=new i(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}n(a,o),t.exports=a,a.prototype.validate=function(t){var e=t.normalize().x,r=e.redSqr(),i=r.redMul(e).redAdd(r.redMul(this.a)).redAdd(e);return 0===i.redSqrt().redSqr().cmp(i)},n(h,o.BasePoint),a.prototype.decodePoint=function(t,e){return this.point(s.toArray(t,e),1)},a.prototype.point=function(t,e){return new h(this,t,e)},a.prototype.pointFromJSON=function(t){return h.fromJSON(this,t)},h.prototype.precompute=function(){},h.prototype._encode=function(){return this.getX().toArray("be",this.curve.p.byteLength())},h.fromJSON=function(t,e){return new h(t,e[0],e[1]||t.one)},h.prototype.inspect=function(){return this.isInfinity()?"":""},h.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},h.prototype.dbl=function(){var t=this.x.redAdd(this.z).redSqr(),e=this.x.redSub(this.z).redSqr(),r=t.redSub(e),i=t.redMul(e),n=r.redMul(e.redAdd(this.curve.a24.redMul(r)));return this.curve.point(i,n)},h.prototype.add=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.diffAdd=function(t,e){var r=this.x.redAdd(this.z),i=this.x.redSub(this.z),n=t.x.redAdd(t.z),o=t.x.redSub(t.z).redMul(r),s=n.redMul(i),a=e.z.redMul(o.redAdd(s).redSqr()),h=e.x.redMul(o.redISub(s).redSqr());return this.curve.point(a,h)},h.prototype.mul=function(t){for(var e=t.clone(),r=this,i=this.curve.point(null,null),n=[];0!==e.cmpn(0);e.iushrn(1))n.push(e.andln(1));for(var o=n.length-1;o>=0;o--)0===n[o]?(r=r.diffAdd(i,this),i=i.dbl()):(i=r.diffAdd(i,this),r=r.dbl());return i},h.prototype.mulAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.jumlAdd=function(){throw new Error("Not supported on Montgomery curve")},h.prototype.eq=function(t){return 0===this.getX().cmp(t.getX())},h.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},h.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},6673:(t,e,r)=>{"use strict";var i=r(953),n=r(3785),o=r(5717),s=r(4918),a=i.assert;function h(t){s.call(this,"short",t),this.a=new n(t.a,16).toRed(this.red),this.b=new n(t.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(t),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function u(t,e,r,i){s.BasePoint.call(this,t,"affine"),null===e&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new n(e,16),this.y=new n(r,16),i&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function c(t,e,r,i){s.BasePoint.call(this,t,"jacobian"),null===e&&null===r&&null===i?(this.x=this.curve.one,this.y=this.curve.one,this.z=new n(0)):(this.x=new n(e,16),this.y=new n(r,16),this.z=new n(i,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}o(h,s),t.exports=h,h.prototype._getEndomorphism=function(t){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var e,r;if(t.beta)e=new n(t.beta,16).toRed(this.red);else{var i=this._getEndoRoots(this.p);e=(e=i[0].cmp(i[1])<0?i[0]:i[1]).toRed(this.red)}if(t.lambda)r=new n(t.lambda,16);else{var o=this._getEndoRoots(this.n);0===this.g.mul(o[0]).x.cmp(this.g.x.redMul(e))?r=o[0]:(r=o[1],a(0===this.g.mul(r).x.cmp(this.g.x.redMul(e))))}return{beta:e,lambda:r,basis:t.basis?t.basis.map((function(t){return{a:new n(t.a,16),b:new n(t.b,16)}})):this._getEndoBasis(r)}}},h.prototype._getEndoRoots=function(t){var e=t===this.p?this.red:n.mont(t),r=new n(2).toRed(e).redInvm(),i=r.redNeg(),o=new n(3).toRed(e).redNeg().redSqrt().redMul(r);return[i.redAdd(o).fromRed(),i.redSub(o).fromRed()]},h.prototype._getEndoBasis=function(t){for(var e,r,i,o,s,a,h,u,c,l=this.n.ushrn(Math.floor(this.n.bitLength()/2)),d=t,f=this.n.clone(),A=new n(1),g=new n(0),M=new n(0),B=new n(1),w=0;0!==d.cmpn(0);){var E=f.div(d);u=f.sub(E.mul(d)),c=M.sub(E.mul(A));var p=B.sub(E.mul(g));if(!i&&u.cmp(l)<0)e=h.neg(),r=A,i=u.neg(),o=c;else if(i&&2==++w)break;h=u,f=d,d=u,M=A,A=c,B=g,g=p}s=u.neg(),a=c;var m=i.sqr().add(o.sqr());return s.sqr().add(a.sqr()).cmp(m)>=0&&(s=e,a=r),i.negative&&(i=i.neg(),o=o.neg()),s.negative&&(s=s.neg(),a=a.neg()),[{a:i,b:o},{a:s,b:a}]},h.prototype._endoSplit=function(t){var e=this.endo.basis,r=e[0],i=e[1],n=i.b.mul(t).divRound(this.n),o=r.b.neg().mul(t).divRound(this.n),s=n.mul(r.a),a=o.mul(i.a),h=n.mul(r.b),u=o.mul(i.b);return{k1:t.sub(s).sub(a),k2:h.add(u).neg()}},h.prototype.pointFromX=function(t,e){(t=new n(t,16)).red||(t=t.toRed(this.red));var r=t.redSqr().redMul(t).redIAdd(t.redMul(this.a)).redIAdd(this.b),i=r.redSqrt();if(0!==i.redSqr().redSub(r).cmp(this.zero))throw new Error("invalid point");var o=i.fromRed().isOdd();return(e&&!o||!e&&o)&&(i=i.redNeg()),this.point(t,i)},h.prototype.validate=function(t){if(t.inf)return!0;var e=t.x,r=t.y,i=this.a.redMul(e),n=e.redSqr().redMul(e).redIAdd(i).redIAdd(this.b);return 0===r.redSqr().redISub(n).cmpn(0)},h.prototype._endoWnafMulAdd=function(t,e,r){for(var i=this._endoWnafT1,n=this._endoWnafT2,o=0;o":""},u.prototype.isInfinity=function(){return this.inf},u.prototype.add=function(t){if(this.inf)return t;if(t.inf)return this;if(this.eq(t))return this.dbl();if(this.neg().eq(t))return this.curve.point(null,null);if(0===this.x.cmp(t.x))return this.curve.point(null,null);var e=this.y.redSub(t.y);0!==e.cmpn(0)&&(e=e.redMul(this.x.redSub(t.x).redInvm()));var r=e.redSqr().redISub(this.x).redISub(t.x),i=e.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,i)},u.prototype.dbl=function(){if(this.inf)return this;var t=this.y.redAdd(this.y);if(0===t.cmpn(0))return this.curve.point(null,null);var e=this.curve.a,r=this.x.redSqr(),i=t.redInvm(),n=r.redAdd(r).redIAdd(r).redIAdd(e).redMul(i),o=n.redSqr().redISub(this.x.redAdd(this.x)),s=n.redMul(this.x.redSub(o)).redISub(this.y);return this.curve.point(o,s)},u.prototype.getX=function(){return this.x.fromRed()},u.prototype.getY=function(){return this.y.fromRed()},u.prototype.mul=function(t){return t=new n(t,16),this.isInfinity()?this:this._hasDoubles(t)?this.curve._fixedNafMul(this,t):this.curve.endo?this.curve._endoWnafMulAdd([this],[t]):this.curve._wnafMul(this,t)},u.prototype.mulAdd=function(t,e,r){var i=[this,e],n=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n):this.curve._wnafMulAdd(1,i,n,2)},u.prototype.jmulAdd=function(t,e,r){var i=[this,e],n=[t,r];return this.curve.endo?this.curve._endoWnafMulAdd(i,n,!0):this.curve._wnafMulAdd(1,i,n,2,!0)},u.prototype.eq=function(t){return this===t||this.inf===t.inf&&(this.inf||0===this.x.cmp(t.x)&&0===this.y.cmp(t.y))},u.prototype.neg=function(t){if(this.inf)return this;var e=this.curve.point(this.x,this.y.redNeg());if(t&&this.precomputed){var r=this.precomputed,i=function(t){return t.neg()};e.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(i)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(i)}}}return e},u.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},o(c,s.BasePoint),h.prototype.jpoint=function(t,e,r){return new c(this,t,e,r)},c.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var t=this.z.redInvm(),e=t.redSqr(),r=this.x.redMul(e),i=this.y.redMul(e).redMul(t);return this.curve.point(r,i)},c.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},c.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.z.redSqr(),r=this.z.redSqr(),i=this.x.redMul(e),n=t.x.redMul(r),o=this.y.redMul(e.redMul(t.z)),s=t.y.redMul(r.redMul(this.z)),a=i.redSub(n),h=o.redSub(s);if(0===a.cmpn(0))return 0!==h.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=a.redSqr(),c=u.redMul(a),l=i.redMul(u),d=h.redSqr().redIAdd(c).redISub(l).redISub(l),f=h.redMul(l.redISub(d)).redISub(o.redMul(c)),A=this.z.redMul(t.z).redMul(a);return this.curve.jpoint(d,f,A)},c.prototype.mixedAdd=function(t){if(this.isInfinity())return t.toJ();if(t.isInfinity())return this;var e=this.z.redSqr(),r=this.x,i=t.x.redMul(e),n=this.y,o=t.y.redMul(e).redMul(this.z),s=r.redSub(i),a=n.redSub(o);if(0===s.cmpn(0))return 0!==a.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var h=s.redSqr(),u=h.redMul(s),c=r.redMul(h),l=a.redSqr().redIAdd(u).redISub(c).redISub(c),d=a.redMul(c.redISub(l)).redISub(n.redMul(u)),f=this.z.redMul(s);return this.curve.jpoint(l,d,f)},c.prototype.dblp=function(t){if(0===t)return this;if(this.isInfinity())return this;if(!t)return this.dbl();var e;if(this.curve.zeroA||this.curve.threeA){var r=this;for(e=0;e=0)return!1;if(r.redIAdd(n),0===this.x.cmp(r))return!0}},c.prototype.inspect=function(){return this.isInfinity()?"":""},c.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},5427:(t,e,r)=>{"use strict";var i,n=e,o=r(3715),s=r(8254),a=r(953).assert;function h(t){"short"===t.type?this.curve=new s.short(t):"edwards"===t.type?this.curve=new s.edwards(t):this.curve=new s.mont(t),this.g=this.curve.g,this.n=this.curve.n,this.hash=t.hash,a(this.g.validate(),"Invalid curve"),a(this.g.mul(this.n).isInfinity(),"Invalid curve, G*N != O")}function u(t,e){Object.defineProperty(n,t,{configurable:!0,enumerable:!0,get:function(){var r=new h(e);return Object.defineProperty(n,t,{configurable:!0,enumerable:!0,value:r}),r}})}n.PresetCurve=h,u("p192",{type:"short",prime:"p192",p:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff",a:"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc",b:"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1",n:"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831",hash:o.sha256,gRed:!1,g:["188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012","07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811"]}),u("p224",{type:"short",prime:"p224",p:"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001",a:"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe",b:"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4",n:"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d",hash:o.sha256,gRed:!1,g:["b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21","bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34"]}),u("p256",{type:"short",prime:null,p:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff",a:"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc",b:"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b",n:"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551",hash:o.sha256,gRed:!1,g:["6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296","4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5"]}),u("p384",{type:"short",prime:null,p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff",a:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc",b:"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef",n:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973",hash:o.sha384,gRed:!1,g:["aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7","3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f"]}),u("p521",{type:"short",prime:null,p:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff",a:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc",b:"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00",n:"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409",hash:o.sha512,gRed:!1,g:["000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66","00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650"]}),u("curve25519",{type:"mont",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"76d06",b:"1",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["9"]}),u("ed25519",{type:"edwards",prime:"p25519",p:"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed",a:"-1",c:"1",d:"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3",n:"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed",hash:o.sha256,gRed:!1,g:["216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a","6666666666666666666666666666666666666666666666666666666666666658"]});try{i=r(1037)}catch(t){i=void 0}u("secp256k1",{type:"short",prime:"k256",p:"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f",a:"0",b:"7",n:"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141",h:"1",hash:o.sha256,beta:"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee",lambda:"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72",basis:[{a:"3086d221a7d46bcde86c90e49284eb15",b:"-e4437ed6010e88286f547fa90abfe4c3"},{a:"114ca50f7a8e2f3f657c1108d9d44cfd8",b:"3086d221a7d46bcde86c90e49284eb15"}],gRed:!1,g:["79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798","483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8",i]})},7954:(t,e,r)=>{"use strict";var i=r(3785),n=r(2156),o=r(953),s=r(5427),a=r(9931),h=o.assert,u=r(1251),c=r(611);function l(t){if(!(this instanceof l))return new l(t);"string"==typeof t&&(h(Object.prototype.hasOwnProperty.call(s,t),"Unknown curve "+t),t=s[t]),t instanceof s.PresetCurve&&(t={curve:t}),this.curve=t.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=t.curve.g,this.g.precompute(t.curve.n.bitLength()+1),this.hash=t.hash||t.curve.hash}t.exports=l,l.prototype.keyPair=function(t){return new u(this,t)},l.prototype.keyFromPrivate=function(t,e){return u.fromPrivate(this,t,e)},l.prototype.keyFromPublic=function(t,e){return u.fromPublic(this,t,e)},l.prototype.genKeyPair=function(t){t||(t={});for(var e=new n({hash:this.hash,pers:t.pers,persEnc:t.persEnc||"utf8",entropy:t.entropy||a(this.hash.hmacStrength),entropyEnc:t.entropy&&t.entropyEnc||"utf8",nonce:this.n.toArray()}),r=this.n.byteLength(),o=this.n.sub(new i(2));;){var s=new i(e.generate(r));if(!(s.cmp(o)>0))return s.iaddn(1),this.keyFromPrivate(s)}},l.prototype._truncateToN=function(t,e){var r=8*t.byteLength()-this.n.bitLength();return r>0&&(t=t.ushrn(r)),!e&&t.cmp(this.n)>=0?t.sub(this.n):t},l.prototype.sign=function(t,e,r,o){"object"==typeof r&&(o=r,r=null),o||(o={}),e=this.keyFromPrivate(e,r),t=this._truncateToN(new i(t,16));for(var s=this.n.byteLength(),a=e.getPrivate().toArray("be",s),h=t.toArray("be",s),u=new n({hash:this.hash,entropy:a,nonce:h,pers:o.pers,persEnc:o.persEnc||"utf8"}),l=this.n.sub(new i(1)),d=0;;d++){var f=o.k?o.k(d):new i(u.generate(this.n.byteLength()));if(!((f=this._truncateToN(f,!0)).cmpn(1)<=0||f.cmp(l)>=0)){var A=this.g.mul(f);if(!A.isInfinity()){var g=A.getX(),M=g.umod(this.n);if(0!==M.cmpn(0)){var B=f.invm(this.n).mul(M.mul(e.getPrivate()).iadd(t));if(0!==(B=B.umod(this.n)).cmpn(0)){var w=(A.getY().isOdd()?1:0)|(0!==g.cmp(M)?2:0);return o.canonical&&B.cmp(this.nh)>0&&(B=this.n.sub(B),w^=1),new c({r:M,s:B,recoveryParam:w})}}}}}},l.prototype.verify=function(t,e,r,n){t=this._truncateToN(new i(t,16)),r=this.keyFromPublic(r,n);var o=(e=new c(e,"hex")).r,s=e.s;if(o.cmpn(1)<0||o.cmp(this.n)>=0)return!1;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;var a,h=s.invm(this.n),u=h.mul(t).umod(this.n),l=h.mul(o).umod(this.n);return this.curve._maxwellTrick?!(a=this.g.jmulAdd(u,r.getPublic(),l)).isInfinity()&&a.eqXToP(o):!(a=this.g.mulAdd(u,r.getPublic(),l)).isInfinity()&&0===a.getX().umod(this.n).cmp(o)},l.prototype.recoverPubKey=function(t,e,r,n){h((3&r)===r,"The recovery param is more than two bits"),e=new c(e,n);var o=this.n,s=new i(t),a=e.r,u=e.s,l=1&r,d=r>>1;if(a.cmp(this.curve.p.umod(this.curve.n))>=0&&d)throw new Error("Unable to find sencond key candinate");a=d?this.curve.pointFromX(a.add(this.curve.n),l):this.curve.pointFromX(a,l);var f=e.r.invm(o),A=o.sub(s).mul(f).umod(o),g=u.mul(f).umod(o);return this.g.mulAdd(A,a,g)},l.prototype.getKeyRecoveryParam=function(t,e,r,i){if(null!==(e=new c(e,i)).recoveryParam)return e.recoveryParam;for(var n=0;n<4;n++){var o;try{o=this.recoverPubKey(t,e,n)}catch(t){continue}if(o.eq(r))return n}throw new Error("Unable to find valid recovery factor")}},1251:(t,e,r)=>{"use strict";var i=r(3785),n=r(953).assert;function o(t,e){this.ec=t,this.priv=null,this.pub=null,e.priv&&this._importPrivate(e.priv,e.privEnc),e.pub&&this._importPublic(e.pub,e.pubEnc)}t.exports=o,o.fromPublic=function(t,e,r){return e instanceof o?e:new o(t,{pub:e,pubEnc:r})},o.fromPrivate=function(t,e,r){return e instanceof o?e:new o(t,{priv:e,privEnc:r})},o.prototype.validate=function(){var t=this.getPublic();return t.isInfinity()?{result:!1,reason:"Invalid public key"}:t.validate()?t.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:"Public key * N != O"}:{result:!1,reason:"Public key is not a point"}},o.prototype.getPublic=function(t,e){return"string"==typeof t&&(e=t,t=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),e?this.pub.encode(e,t):this.pub},o.prototype.getPrivate=function(t){return"hex"===t?this.priv.toString(16,2):this.priv},o.prototype._importPrivate=function(t,e){this.priv=new i(t,e||16),this.priv=this.priv.umod(this.ec.curve.n)},o.prototype._importPublic=function(t,e){if(t.x||t.y)return"mont"===this.ec.curve.type?n(t.x,"Need x coordinate"):"short"!==this.ec.curve.type&&"edwards"!==this.ec.curve.type||n(t.x&&t.y,"Need both x and y coordinate"),void(this.pub=this.ec.curve.point(t.x,t.y));this.pub=this.ec.curve.decodePoint(t,e)},o.prototype.derive=function(t){return t.validate()||n(t.validate(),"public point not validated"),t.mul(this.priv).getX()},o.prototype.sign=function(t,e,r){return this.ec.sign(t,this,e,r)},o.prototype.verify=function(t,e){return this.ec.verify(t,e,this)},o.prototype.inspect=function(){return""}},611:(t,e,r)=>{"use strict";var i=r(3785),n=r(953),o=n.assert;function s(t,e){if(t instanceof s)return t;this._importDER(t,e)||(o(t.r&&t.s,"Signature without r or s"),this.r=new i(t.r,16),this.s=new i(t.s,16),void 0===t.recoveryParam?this.recoveryParam=null:this.recoveryParam=t.recoveryParam)}function a(){this.place=0}function h(t,e){var r=t[e.place++];if(!(128&r))return r;var i=15&r;if(0===i||i>4)return!1;for(var n=0,o=0,s=e.place;o>>=0;return!(n<=127)&&(e.place=s,n)}function u(t){for(var e=0,r=t.length-1;!t[e]&&!(128&t[e+1])&&e>>3);for(t.push(128|r);--r;)t.push(e>>>(r<<3)&255);t.push(e)}}t.exports=s,s.prototype._importDER=function(t,e){t=n.toArray(t,e);var r=new a;if(48!==t[r.place++])return!1;var o=h(t,r);if(!1===o)return!1;if(o+r.place!==t.length)return!1;if(2!==t[r.place++])return!1;var s=h(t,r);if(!1===s)return!1;var u=t.slice(r.place,s+r.place);if(r.place+=s,2!==t[r.place++])return!1;var c=h(t,r);if(!1===c)return!1;if(t.length!==c+r.place)return!1;var l=t.slice(r.place,c+r.place);if(0===u[0]){if(!(128&u[1]))return!1;u=u.slice(1)}if(0===l[0]){if(!(128&l[1]))return!1;l=l.slice(1)}return this.r=new i(u),this.s=new i(l),this.recoveryParam=null,!0},s.prototype.toDER=function(t){var e=this.r.toArray(),r=this.s.toArray();for(128&e[0]&&(e=[0].concat(e)),128&r[0]&&(r=[0].concat(r)),e=u(e),r=u(r);!(r[0]||128&r[1]);)r=r.slice(1);var i=[2];c(i,e.length),(i=i.concat(e)).push(2),c(i,r.length);var o=i.concat(r),s=[48];return c(s,o.length),s=s.concat(o),n.encode(s,t)}},5980:(t,e,r)=>{"use strict";var i=r(3715),n=r(5427),o=r(953),s=o.assert,a=o.parseBytes,h=r(9087),u=r(3622);function c(t){if(s("ed25519"===t,"only tested with ed25519 so far"),!(this instanceof c))return new c(t);t=n[t].curve,this.curve=t,this.g=t.g,this.g.precompute(t.n.bitLength()+1),this.pointClass=t.point().constructor,this.encodingLength=Math.ceil(t.n.bitLength()/8),this.hash=i.sha512}t.exports=c,c.prototype.sign=function(t,e){t=a(t);var r=this.keyFromSecret(e),i=this.hashInt(r.messagePrefix(),t),n=this.g.mul(i),o=this.encodePoint(n),s=this.hashInt(o,r.pubBytes(),t).mul(r.priv()),h=i.add(s).umod(this.curve.n);return this.makeSignature({R:n,S:h,Rencoded:o})},c.prototype.verify=function(t,e,r){t=a(t),e=this.makeSignature(e);var i=this.keyFromPublic(r),n=this.hashInt(e.Rencoded(),i.pubBytes(),t),o=this.g.mul(e.S());return e.R().add(i.pub().mul(n)).eq(o)},c.prototype.hashInt=function(){for(var t=this.hash(),e=0;e{"use strict";var i=r(953),n=i.assert,o=i.parseBytes,s=i.cachedProperty;function a(t,e){this.eddsa=t,this._secret=o(e.secret),t.isPoint(e.pub)?this._pub=e.pub:this._pubBytes=o(e.pub)}a.fromPublic=function(t,e){return e instanceof a?e:new a(t,{pub:e})},a.fromSecret=function(t,e){return e instanceof a?e:new a(t,{secret:e})},a.prototype.secret=function(){return this._secret},s(a,"pubBytes",(function(){return this.eddsa.encodePoint(this.pub())})),s(a,"pub",(function(){return this._pubBytes?this.eddsa.decodePoint(this._pubBytes):this.eddsa.g.mul(this.priv())})),s(a,"privBytes",(function(){var t=this.eddsa,e=this.hash(),r=t.encodingLength-1,i=e.slice(0,t.encodingLength);return i[0]&=248,i[r]&=127,i[r]|=64,i})),s(a,"priv",(function(){return this.eddsa.decodeInt(this.privBytes())})),s(a,"hash",(function(){return this.eddsa.hash().update(this.secret()).digest()})),s(a,"messagePrefix",(function(){return this.hash().slice(this.eddsa.encodingLength)})),a.prototype.sign=function(t){return n(this._secret,"KeyPair can only verify"),this.eddsa.sign(t,this)},a.prototype.verify=function(t,e){return this.eddsa.verify(t,e,this)},a.prototype.getSecret=function(t){return n(this._secret,"KeyPair is public only"),i.encode(this.secret(),t)},a.prototype.getPublic=function(t){return i.encode(this.pubBytes(),t)},t.exports=a},3622:(t,e,r)=>{"use strict";var i=r(3785),n=r(953),o=n.assert,s=n.cachedProperty,a=n.parseBytes;function h(t,e){this.eddsa=t,"object"!=typeof e&&(e=a(e)),Array.isArray(e)&&(e={R:e.slice(0,t.encodingLength),S:e.slice(t.encodingLength)}),o(e.R&&e.S,"Signature without R or S"),t.isPoint(e.R)&&(this._R=e.R),e.S instanceof i&&(this._S=e.S),this._Rencoded=Array.isArray(e.R)?e.R:e.Rencoded,this._Sencoded=Array.isArray(e.S)?e.S:e.Sencoded}s(h,"S",(function(){return this.eddsa.decodeInt(this.Sencoded())})),s(h,"R",(function(){return this.eddsa.decodePoint(this.Rencoded())})),s(h,"Rencoded",(function(){return this.eddsa.encodePoint(this.R())})),s(h,"Sencoded",(function(){return this.eddsa.encodeInt(this.S())})),h.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())},h.prototype.toHex=function(){return n.encode(this.toBytes(),"hex").toUpperCase()},t.exports=h},1037:t=>{t.exports={doubles:{step:4,points:[["e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a","f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821"],["8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508","11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf"],["175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739","d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695"],["363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640","4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9"],["8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c","4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36"],["723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda","96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f"],["eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa","5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999"],["100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0","cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09"],["e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d","9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d"],["feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d","e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088"],["da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1","9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d"],["53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0","5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8"],["8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047","10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a"],["385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862","283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453"],["6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7","7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160"],["3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd","56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0"],["85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83","7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6"],["948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a","53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589"],["6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8","bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17"],["e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d","4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda"],["e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725","7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd"],["213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754","4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2"],["4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c","17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6"],["fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6","6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f"],["76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39","c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01"],["c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891","893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3"],["d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b","febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f"],["b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03","2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7"],["e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d","eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78"],["a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070","7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1"],["90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4","e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150"],["8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da","662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82"],["e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11","1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc"],["8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e","efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b"],["e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41","2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51"],["b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef","67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45"],["d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8","db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120"],["324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d","648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84"],["4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96","35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d"],["9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd","ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d"],["6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5","9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8"],["a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266","40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8"],["7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71","34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac"],["928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac","c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f"],["85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751","1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962"],["ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e","493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907"],["827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241","c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec"],["eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3","be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d"],["e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f","4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414"],["1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19","aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd"],["146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be","b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0"],["fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9","6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811"],["da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2","8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1"],["a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13","7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c"],["174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c","ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73"],["959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba","2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd"],["d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151","e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405"],["64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073","d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589"],["8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458","38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e"],["13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b","69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27"],["bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366","d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1"],["8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa","40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482"],["8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0","620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945"],["dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787","7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573"],["f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e","ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82"]]},naf:{wnd:7,points:[["f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9","388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672"],["2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4","d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6"],["5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc","6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da"],["acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe","cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37"],["774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb","d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b"],["f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8","ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81"],["d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e","581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58"],["defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34","4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77"],["2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c","85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a"],["352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5","321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c"],["2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f","2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67"],["9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714","73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402"],["daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729","a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55"],["c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db","2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482"],["6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4","e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82"],["1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5","b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396"],["605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479","2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49"],["62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d","80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf"],["80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f","1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a"],["7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb","d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7"],["d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9","eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933"],["49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963","758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a"],["77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74","958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6"],["f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530","e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37"],["463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b","5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e"],["f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247","cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6"],["caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1","cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476"],["2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120","4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40"],["7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435","91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61"],["754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18","673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683"],["e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8","59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5"],["186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb","3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b"],["df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f","55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417"],["5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143","efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868"],["290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba","e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a"],["af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45","f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6"],["766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a","744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996"],["59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e","c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e"],["f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8","e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d"],["7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c","30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2"],["948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519","e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e"],["7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab","100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437"],["3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca","ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311"],["d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf","8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4"],["1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610","68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575"],["733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4","f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d"],["15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c","d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d"],["a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940","edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629"],["e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980","a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06"],["311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3","66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374"],["34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf","9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee"],["f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63","4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1"],["d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448","fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b"],["32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf","5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661"],["7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5","8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6"],["ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6","8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e"],["16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5","5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d"],["eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99","f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc"],["78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51","f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4"],["494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5","42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c"],["a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5","204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b"],["c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997","4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913"],["841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881","73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154"],["5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5","39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865"],["36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66","d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc"],["336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726","ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224"],["8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede","6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e"],["1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94","60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6"],["85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31","3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511"],["29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51","b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b"],["a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252","ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2"],["4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5","cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c"],["d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b","6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3"],["ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4","322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d"],["af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f","6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700"],["e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889","2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4"],["591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246","b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196"],["11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984","998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4"],["3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a","b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257"],["cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030","bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13"],["c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197","6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096"],["c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593","c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38"],["a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef","21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f"],["347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38","60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448"],["da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a","49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a"],["c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111","5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4"],["4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502","7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437"],["3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea","be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7"],["cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26","8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d"],["b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986","39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a"],["d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e","62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54"],["48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4","25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77"],["dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda","ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517"],["6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859","cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10"],["e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f","f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125"],["eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c","6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e"],["13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942","fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1"],["ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a","1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2"],["b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80","5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423"],["ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d","438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8"],["8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1","cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758"],["52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63","c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375"],["e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352","6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d"],["7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193","ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec"],["5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00","9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0"],["32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58","ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c"],["e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7","d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4"],["8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8","c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f"],["4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e","67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649"],["3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d","cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826"],["674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b","299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5"],["d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f","f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87"],["30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6","462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b"],["be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297","62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc"],["93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a","7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c"],["b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c","ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f"],["d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52","4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a"],["d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb","bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46"],["463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065","bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f"],["7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917","603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03"],["74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9","cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08"],["30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3","553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8"],["9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57","712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373"],["176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66","ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3"],["75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8","9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8"],["809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721","9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1"],["1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180","4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9"]]}}},953:(t,e,r)=>{"use strict";var i=e,n=r(3785),o=r(9746),s=r(4504);i.assert=o,i.toArray=s.toArray,i.zero2=s.zero2,i.toHex=s.toHex,i.encode=s.encode,i.getNAF=function(t,e,r){var i=new Array(Math.max(t.bitLength(),r)+1);i.fill(0);for(var n=1<(n>>1)-1?(n>>1)-h:h,o.isubn(a)):a=0,i[s]=a,o.iushrn(1)}return i},i.getJSF=function(t,e){var r=[[],[]];t=t.clone(),e=e.clone();for(var i,n=0,o=0;t.cmpn(-n)>0||e.cmpn(-o)>0;){var s,a,h=t.andln(3)+n&3,u=e.andln(3)+o&3;3===h&&(h=-1),3===u&&(u=-1),s=0==(1&h)?0:3!=(i=t.andln(7)+n&7)&&5!==i||2!==u?h:-h,r[0].push(s),a=0==(1&u)?0:3!=(i=e.andln(7)+o&7)&&5!==i||2!==h?u:-u,r[1].push(a),2*n===s+1&&(n=1-n),2*o===a+1&&(o=1-o),t.iushrn(1),e.iushrn(1)}return r},i.cachedProperty=function(t,e,r){var i="_"+e;t.prototype[e]=function(){return void 0!==this[i]?this[i]:this[i]=r.call(this)}},i.parseBytes=function(t){return"string"==typeof t?i.toArray(t,"hex"):t},i.intFromLE=function(t){return new n(t,"hex","le")}},3785:function(t,e,r){!function(t,e){"use strict";function i(t,e){if(!t)throw new Error(e||"Assertion failed")}function n(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function o(t,e,r){if(o.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&("le"!==e&&"be"!==e||(r=e,e=10),this._init(t||0,e||10,r||"be"))}var s;"object"==typeof t?t.exports=o:e.BN=o,o.BN=o,o.wordSize=26;try{s="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:r(5568).Buffer}catch(t){}function a(t,e){var r=t.charCodeAt(e);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,c=r;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,d=Math.min(u,e.length-1),f=Math.max(0,u-t.length+1);f<=d;f++){var A=u-f|0;c+=(s=(n=0|t.words[A])*(o=0|e.words[f])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|c}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?c[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=l[t],f=d[t];r="";var A=this.clone();for(A.negative=0;!A.isZero();){var g=A.modn(f).toString(t);r=(A=A.idivn(f)).isZero()?g+r:c[u-g.length]+g+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),c=this.clone();if(h){for(a=0;!c.isZero();a++)s=c.andln(255),c.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],A=8191&f,g=f>>>13,M=0|s[2],B=8191&M,w=M>>>13,E=0|s[3],p=8191&E,m=E>>>13,y=0|s[4],b=8191&y,Q=y>>>13,I=0|s[5],C=8191&I,D=I>>>13,N=0|s[6],v=8191&N,G=N>>>13,R=0|s[7],Y=8191&R,U=R>>>13,V=0|s[8],T=8191&V,S=V>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,H=j>>>13,z=0|a[1],x=8191&z,O=z>>>13,W=0|a[2],J=8191&W,X=W>>>13,K=0|a[3],P=8191&K,_=K>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ct=0|a[8],lt=8191&ct,dt=ct>>>13,ft=0|a[9],At=8191&ft,gt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(l,Z))|0)+((8191&(n=(n=Math.imul(l,H))+Math.imul(d,Z)|0))<<13)|0;u=((o=Math.imul(d,H))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(A,Z),n=(n=Math.imul(A,H))+Math.imul(g,Z)|0,o=Math.imul(g,H);var Bt=(u+(i=i+Math.imul(l,x)|0)|0)+((8191&(n=(n=n+Math.imul(l,O)|0)+Math.imul(d,x)|0))<<13)|0;u=((o=o+Math.imul(d,O)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(B,Z),n=(n=Math.imul(B,H))+Math.imul(w,Z)|0,o=Math.imul(w,H),i=i+Math.imul(A,x)|0,n=(n=n+Math.imul(A,O)|0)+Math.imul(g,x)|0,o=o+Math.imul(g,O)|0;var wt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(d,J)|0))<<13)|0;u=((o=o+Math.imul(d,X)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,H))+Math.imul(m,Z)|0,o=Math.imul(m,H),i=i+Math.imul(B,x)|0,n=(n=n+Math.imul(B,O)|0)+Math.imul(w,x)|0,o=o+Math.imul(w,O)|0,i=i+Math.imul(A,J)|0,n=(n=n+Math.imul(A,X)|0)+Math.imul(g,J)|0,o=o+Math.imul(g,X)|0;var Et=(u+(i=i+Math.imul(l,P)|0)|0)+((8191&(n=(n=n+Math.imul(l,_)|0)+Math.imul(d,P)|0))<<13)|0;u=((o=o+Math.imul(d,_)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,H))+Math.imul(Q,Z)|0,o=Math.imul(Q,H),i=i+Math.imul(p,x)|0,n=(n=n+Math.imul(p,O)|0)+Math.imul(m,x)|0,o=o+Math.imul(m,O)|0,i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,X)|0)+Math.imul(w,J)|0,o=o+Math.imul(w,X)|0,i=i+Math.imul(A,P)|0,n=(n=n+Math.imul(A,_)|0)+Math.imul(g,P)|0,o=o+Math.imul(g,_)|0;var pt=(u+(i=i+Math.imul(l,$)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(d,$)|0))<<13)|0;u=((o=o+Math.imul(d,tt)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,H))+Math.imul(D,Z)|0,o=Math.imul(D,H),i=i+Math.imul(b,x)|0,n=(n=n+Math.imul(b,O)|0)+Math.imul(Q,x)|0,o=o+Math.imul(Q,O)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0,i=i+Math.imul(B,P)|0,n=(n=n+Math.imul(B,_)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,_)|0,i=i+Math.imul(A,$)|0,n=(n=n+Math.imul(A,tt)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,tt)|0;var mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(d,rt)|0))<<13)|0;u=((o=o+Math.imul(d,it)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(v,Z),n=(n=Math.imul(v,H))+Math.imul(G,Z)|0,o=Math.imul(G,H),i=i+Math.imul(C,x)|0,n=(n=n+Math.imul(C,O)|0)+Math.imul(D,x)|0,o=o+Math.imul(D,O)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(Q,J)|0,o=o+Math.imul(Q,X)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,_)|0)+Math.imul(m,P)|0,o=o+Math.imul(m,_)|0,i=i+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(A,rt)|0,n=(n=n+Math.imul(A,it)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0;var yt=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(d,ot)|0))<<13)|0;u=((o=o+Math.imul(d,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Y,Z),n=(n=Math.imul(Y,H))+Math.imul(U,Z)|0,o=Math.imul(U,H),i=i+Math.imul(v,x)|0,n=(n=n+Math.imul(v,O)|0)+Math.imul(G,x)|0,o=o+Math.imul(G,O)|0,i=i+Math.imul(C,J)|0,n=(n=n+Math.imul(C,X)|0)+Math.imul(D,J)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,_)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,_)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0,i=i+Math.imul(B,rt)|0,n=(n=n+Math.imul(B,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(A,ot)|0,n=(n=n+Math.imul(A,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var bt=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(d,ht)|0))<<13)|0;u=((o=o+Math.imul(d,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,H))+Math.imul(S,Z)|0,o=Math.imul(S,H),i=i+Math.imul(Y,x)|0,n=(n=n+Math.imul(Y,O)|0)+Math.imul(U,x)|0,o=o+Math.imul(U,O)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(G,J)|0,o=o+Math.imul(G,X)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,_)|0)+Math.imul(D,P)|0,o=o+Math.imul(D,_)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0,i=i+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(A,ht)|0,n=(n=n+Math.imul(A,ut)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,ut)|0;var Qt=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,dt)|0)+Math.imul(d,lt)|0))<<13)|0;u=((o=o+Math.imul(d,dt)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,H))+Math.imul(L,Z)|0,o=Math.imul(L,H),i=i+Math.imul(T,x)|0,n=(n=n+Math.imul(T,O)|0)+Math.imul(S,x)|0,o=o+Math.imul(S,O)|0,i=i+Math.imul(Y,J)|0,n=(n=n+Math.imul(Y,X)|0)+Math.imul(U,J)|0,o=o+Math.imul(U,X)|0,i=i+Math.imul(v,P)|0,n=(n=n+Math.imul(v,_)|0)+Math.imul(G,P)|0,o=o+Math.imul(G,_)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0,i=i+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(A,lt)|0,n=(n=n+Math.imul(A,dt)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,dt)|0;var It=(u+(i=i+Math.imul(l,At)|0)|0)+((8191&(n=(n=n+Math.imul(l,gt)|0)+Math.imul(d,At)|0))<<13)|0;u=((o=o+Math.imul(d,gt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,x),n=(n=Math.imul(F,O))+Math.imul(L,x)|0,o=Math.imul(L,O),i=i+Math.imul(T,J)|0,n=(n=n+Math.imul(T,X)|0)+Math.imul(S,J)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(Y,P)|0,n=(n=n+Math.imul(Y,_)|0)+Math.imul(U,P)|0,o=o+Math.imul(U,_)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(G,$)|0,o=o+Math.imul(G,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(D,rt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0,i=i+Math.imul(B,lt)|0,n=(n=n+Math.imul(B,dt)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,dt)|0;var Ct=(u+(i=i+Math.imul(A,At)|0)|0)+((8191&(n=(n=n+Math.imul(A,gt)|0)+Math.imul(g,At)|0))<<13)|0;u=((o=o+Math.imul(g,gt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,X))+Math.imul(L,J)|0,o=Math.imul(L,X),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,_)|0)+Math.imul(S,P)|0,o=o+Math.imul(S,_)|0,i=i+Math.imul(Y,$)|0,n=(n=n+Math.imul(Y,tt)|0)+Math.imul(U,$)|0,o=o+Math.imul(U,tt)|0,i=i+Math.imul(v,rt)|0,n=(n=n+Math.imul(v,it)|0)+Math.imul(G,rt)|0,o=o+Math.imul(G,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,dt)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,dt)|0;var Dt=(u+(i=i+Math.imul(B,At)|0)|0)+((8191&(n=(n=n+Math.imul(B,gt)|0)+Math.imul(w,At)|0))<<13)|0;u=((o=o+Math.imul(w,gt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,_))+Math.imul(L,P)|0,o=Math.imul(L,_),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(S,$)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(Y,rt)|0,n=(n=n+Math.imul(Y,it)|0)+Math.imul(U,rt)|0,o=o+Math.imul(U,it)|0,i=i+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,st)|0)+Math.imul(G,ot)|0,o=o+Math.imul(G,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,dt)|0)+Math.imul(Q,lt)|0,o=o+Math.imul(Q,dt)|0;var Nt=(u+(i=i+Math.imul(p,At)|0)|0)+((8191&(n=(n=n+Math.imul(p,gt)|0)+Math.imul(m,At)|0))<<13)|0;u=((o=o+Math.imul(m,gt)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(Y,ot)|0,n=(n=n+Math.imul(Y,st)|0)+Math.imul(U,ot)|0,o=o+Math.imul(U,st)|0,i=i+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(G,ht)|0,o=o+Math.imul(G,ut)|0,i=i+Math.imul(C,lt)|0,n=(n=n+Math.imul(C,dt)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,dt)|0;var vt=(u+(i=i+Math.imul(b,At)|0)|0)+((8191&(n=(n=n+Math.imul(b,gt)|0)+Math.imul(Q,At)|0))<<13)|0;u=((o=o+Math.imul(Q,gt)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(Y,ht)|0,n=(n=n+Math.imul(Y,ut)|0)+Math.imul(U,ht)|0,o=o+Math.imul(U,ut)|0,i=i+Math.imul(v,lt)|0,n=(n=n+Math.imul(v,dt)|0)+Math.imul(G,lt)|0,o=o+Math.imul(G,dt)|0;var Gt=(u+(i=i+Math.imul(C,At)|0)|0)+((8191&(n=(n=n+Math.imul(C,gt)|0)+Math.imul(D,At)|0))<<13)|0;u=((o=o+Math.imul(D,gt)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,ut)|0,i=i+Math.imul(Y,lt)|0,n=(n=n+Math.imul(Y,dt)|0)+Math.imul(U,lt)|0,o=o+Math.imul(U,dt)|0;var Rt=(u+(i=i+Math.imul(v,At)|0)|0)+((8191&(n=(n=n+Math.imul(v,gt)|0)+Math.imul(G,At)|0))<<13)|0;u=((o=o+Math.imul(G,gt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,lt)|0,n=(n=n+Math.imul(T,dt)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,dt)|0;var Yt=(u+(i=i+Math.imul(Y,At)|0)|0)+((8191&(n=(n=n+Math.imul(Y,gt)|0)+Math.imul(U,At)|0))<<13)|0;u=((o=o+Math.imul(U,gt)|0)+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(F,lt),n=(n=Math.imul(F,dt))+Math.imul(L,lt)|0,o=Math.imul(L,dt);var Ut=(u+(i=i+Math.imul(T,At)|0)|0)+((8191&(n=(n=n+Math.imul(T,gt)|0)+Math.imul(S,At)|0))<<13)|0;u=((o=o+Math.imul(S,gt)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863;var Vt=(u+(i=Math.imul(F,At))|0)+((8191&(n=(n=Math.imul(F,gt))+Math.imul(L,At)|0))<<13)|0;return u=((o=Math.imul(L,gt))+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,h[0]=Mt,h[1]=Bt,h[2]=wt,h[3]=Et,h[4]=pt,h[5]=mt,h[6]=yt,h[7]=bt,h[8]=Qt,h[9]=It,h[10]=Ct,h[11]=Dt,h[12]=Nt,h[13]=vt,h[14]=Gt,h[15]=Rt,h[16]=Yt,h[17]=Ut,h[18]=Vt,0!==u&&(h[19]=u,r.length++),r};function g(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(A=f),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?A(this,t,e):r<63?f(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):g(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==c||u>=n);u--){var l=0|this.words[u];this.words[u]=c<<26-o|l>>>o,c=l&a}return h&&0!==c&&(h.words[h.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var d=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(n,d,l);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=d)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var c=r.clone(),l=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(c),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var A=0,g=1;0==(r.words[0]&g)&&A<26;++A,g<<=1);if(A>0)for(r.iushrn(A);A-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(c),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,c=1;0==(e.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,d=1;0==(r.words[0]&d)&&l<26;++l,d<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var B={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function E(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function p(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function m(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function Q(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(E,w),E.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},E.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(B[t])return B[t];var e;if("k256"===t)e=new E;else if("p224"===t)e=new p;else if("p192"===t)e=new m;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return B[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);0!==this.pow(c,u).cmp(h);)c.redIAdd(h);for(var l=this.pow(c,n),d=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),A=s;0!==f.cmp(a);){for(var g=f,M=0;0!==g.cmp(a);M++)g=g.redSqr();i(M=0;i--){for(var u=e.words[i],c=h-1;c>=0;c--){var l=u>>c&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4==++a||0===i&&0===c)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new Q(t)},n(Q,b),Q.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},Q.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},Q.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},Q.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},Q.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},7519:t=>{"use strict";t.exports={i8:"6.5.4"}},4079:(t,e,r)=>{"use strict";var i=r(210)("%Object.getOwnPropertyDescriptor%");if(i)try{i([],"length")}catch(t){i=null}t.exports=i},8091:t=>{"use strict";function e(t,e){if(null==t)throw new TypeError("Cannot convert first argument to object");for(var r=Object(t),i=1;i{"use strict";var e,r="object"==typeof Reflect?Reflect:null,i=r&&"function"==typeof r.apply?r.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};e=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var n=Number.isNaN||function(t){return t!=t};function o(){o.init.call(this)}t.exports=o,t.exports.once=function(t,e){return new Promise((function(r,i){function n(r){t.removeListener(e,o),i(r)}function o(){"function"==typeof t.removeListener&&t.removeListener("error",n),r([].slice.call(arguments))}g(t,e,o,{once:!0}),"error"!==e&&function(t,e,r){"function"==typeof t.on&&g(t,"error",e,{once:!0})}(t,n)}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function a(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function h(t){return void 0===t._maxListeners?o.defaultMaxListeners:t._maxListeners}function u(t,e,r,i){var n,o,s,u;if(a(r),void 0===(o=t._events)?(o=t._events=Object.create(null),t._eventsCount=0):(void 0!==o.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),o=t._events),s=o[e]),void 0===s)s=o[e]=r,++t._eventsCount;else if("function"==typeof s?s=o[e]=i?[r,s]:[s,r]:i?s.unshift(r):s.push(r),(n=h(t))>0&&s.length>n&&!s.warned){s.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=s.length,u=c,console&&console.warn&&console.warn(u)}return t}function c(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function l(t,e,r){var i={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},n=c.bind(i);return n.listener=r,i.wrapFn=n,n}function d(t,e,r){var i=t._events;if(void 0===i)return[];var n=i[e];return void 0===n?[]:"function"==typeof n?r?[n.listener||n]:[n]:r?function(t){for(var e=new Array(t.length),r=0;r0&&(s=e[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var h=o[t];if(void 0===h)return!1;if("function"==typeof h)i(h,this,e);else{var u=h.length,c=A(h,u);for(r=0;r=0;o--)if(r[o]===e||r[o].listener===e){s=r[o].listener,n=o;break}if(n<0)return this;0===n?r.shift():function(t,e){for(;e+1=0;i--)this.removeListener(t,e[i]);return this},o.prototype.listeners=function(t){return d(this,t,!0)},o.prototype.rawListeners=function(t){return d(this,t,!1)},o.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):f.call(t,e)},o.prototype.listenerCount=f,o.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}},3048:(t,e,r)=>{var i=r(9509).Buffer,n=r(2318);t.exports=function(t,e,r,o){if(i.isBuffer(t)||(t=i.from(t,"binary")),e&&(i.isBuffer(e)||(e=i.from(e,"binary")),8!==e.length))throw new RangeError("salt should be Buffer with 8 byte length");for(var s=r/8,a=i.alloc(s),h=i.alloc(o||0),u=i.alloc(0);s>0||o>0;){var c=new n;c.update(u),c.update(t),e&&c.update(e),u=c.digest();var l=0;if(s>0){var d=a.length-s;l=Math.min(s,u.length),u.copy(a,d,0,l),s-=l}if(l0){var f=h.length-o,A=Math.min(o,u.length-l);u.copy(h,f,l,l+A),o-=A}}return u.fill(0),{key:a,iv:h}}},9804:t=>{var e=Object.prototype.hasOwnProperty,r=Object.prototype.toString;t.exports=function(t,i,n){if("[object Function]"!==r.call(i))throw new TypeError("iterator must be a function");var o=t.length;if(o===+o)for(var s=0;s{"use strict";var e="Function.prototype.bind called on incompatible ",r=Array.prototype.slice,i=Object.prototype.toString,n="[object Function]";t.exports=function(t){var o=this;if("function"!=typeof o||i.call(o)!==n)throw new TypeError(e+o);for(var s,a=r.call(arguments,1),h=function(){if(this instanceof s){var e=o.apply(this,a.concat(r.call(arguments)));return Object(e)===e?e:this}return o.apply(t,a.concat(r.call(arguments)))},u=Math.max(0,o.length-a.length),c=[],l=0;l{"use strict";var i=r(7648);t.exports=Function.prototype.bind||i},210:(t,e,r)=>{"use strict";var i,n=SyntaxError,o=Function,s=TypeError,a=function(t){try{return o('"use strict"; return ('+t+").constructor;")()}catch(t){}},h=Object.getOwnPropertyDescriptor;if(h)try{h({},"")}catch(t){h=null}var u=function(){throw new s},c=h?function(){try{return u}catch(t){try{return h(arguments,"callee").get}catch(t){return u}}}():u,l=r(1405)(),d=Object.getPrototypeOf||function(t){return t.__proto__},f={},A="undefined"==typeof Uint8Array?i:d(Uint8Array),g={"%AggregateError%":"undefined"==typeof AggregateError?i:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?i:ArrayBuffer,"%ArrayIteratorPrototype%":l?d([][Symbol.iterator]()):i,"%AsyncFromSyncIteratorPrototype%":i,"%AsyncFunction%":f,"%AsyncGenerator%":f,"%AsyncGeneratorFunction%":f,"%AsyncIteratorPrototype%":f,"%Atomics%":"undefined"==typeof Atomics?i:Atomics,"%BigInt%":"undefined"==typeof BigInt?i:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?i:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?i:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?i:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?i:FinalizationRegistry,"%Function%":o,"%GeneratorFunction%":f,"%Int8Array%":"undefined"==typeof Int8Array?i:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?i:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?i:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":l?d(d([][Symbol.iterator]())):i,"%JSON%":"object"==typeof JSON?JSON:i,"%Map%":"undefined"==typeof Map?i:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&l?d((new Map)[Symbol.iterator]()):i,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?i:Promise,"%Proxy%":"undefined"==typeof Proxy?i:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?i:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?i:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&l?d((new Set)[Symbol.iterator]()):i,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?i:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":l?d(""[Symbol.iterator]()):i,"%Symbol%":l?Symbol:i,"%SyntaxError%":n,"%ThrowTypeError%":c,"%TypedArray%":A,"%TypeError%":s,"%Uint8Array%":"undefined"==typeof Uint8Array?i:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?i:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?i:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?i:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?i:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?i:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?i:WeakSet},M=function t(e){var r;if("%AsyncFunction%"===e)r=a("async function () {}");else if("%GeneratorFunction%"===e)r=a("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=a("async function* () {}");else if("%AsyncGenerator%"===e){var i=t("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===e){var n=t("%AsyncGenerator%");n&&(r=d(n.prototype))}return g[e]=r,r},B={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},w=r(8612),E=r(7642),p=w.call(Function.call,Array.prototype.concat),m=w.call(Function.apply,Array.prototype.splice),y=w.call(Function.call,String.prototype.replace),b=w.call(Function.call,String.prototype.slice),Q=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,I=/\\(\\)?/g,C=function(t){var e=b(t,0,1),r=b(t,-1);if("%"===e&&"%"!==r)throw new n("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new n("invalid intrinsic syntax, expected opening `%`");var i=[];return y(t,Q,(function(t,e,r,n){i[i.length]=r?y(n,I,"$1"):e||t})),i},D=function(t,e){var r,i=t;if(E(B,i)&&(i="%"+(r=B[i])[0]+"%"),E(g,i)){var o=g[i];if(o===f&&(o=M(i)),void 0===o&&!e)throw new s("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:o}}throw new n("intrinsic "+t+" does not exist!")};t.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new s("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new s('"allowMissing" argument must be a boolean');var r=C(t),i=r.length>0?r[0]:"",o=D("%"+i+"%",e),a=o.name,u=o.value,c=!1,l=o.alias;l&&(i=l[0],m(r,p([0,1],l)));for(var d=1,f=!0;d=r.length){var w=h(u,A);u=(f=!!w)&&"get"in w&&!("originalValue"in w.get)?w.get:u[A]}else f=E(u,A),u=u[A];f&&!c&&(g[a]=u)}}return u}},1405:(t,e,r)=>{"use strict";var i="undefined"!=typeof Symbol&&Symbol,n=r(5419);t.exports=function(){return"function"==typeof i&&"function"==typeof Symbol&&"symbol"==typeof i("foo")&&"symbol"==typeof Symbol("bar")&&n()}},5419:t=>{"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(e in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var i=Object.getOwnPropertySymbols(t);if(1!==i.length||i[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var n=Object.getOwnPropertyDescriptor(t,e);if(42!==n.value||!0!==n.enumerable)return!1}return!0}},7642:(t,e,r)=>{"use strict";var i=r(8612);t.exports=i.call(Function.call,Object.prototype.hasOwnProperty)},3349:(t,e,r)=>{"use strict";var i=r(9509).Buffer,n=r(8473).Transform;function o(t){n.call(this),this._block=i.allocUnsafe(t),this._blockSize=t,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}r(5717)(o,n),o.prototype._transform=function(t,e,r){var i=null;try{this.update(t,e)}catch(t){i=t}r(i)},o.prototype._flush=function(t){var e=null;try{this.push(this.digest())}catch(t){e=t}t(e)},o.prototype.update=function(t,e){if(function(t,e){if(!i.isBuffer(t)&&"string"!=typeof t)throw new TypeError("Data must be a string or a buffer")}(t),this._finalized)throw new Error("Digest already called");i.isBuffer(t)||(t=i.from(t,e));for(var r=this._block,n=0;this._blockOffset+t.length-n>=this._blockSize;){for(var o=this._blockOffset;o0;++s)this._length[s]+=a,(a=this._length[s]/4294967296|0)>0&&(this._length[s]-=4294967296*a);return this},o.prototype._update=function(){throw new Error("_update is not implemented")},o.prototype.digest=function(t){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var e=this._digest();void 0!==t&&(e=e.toString(t)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return e},o.prototype._digest=function(){throw new Error("_digest is not implemented")},t.exports=o},3715:(t,e,r)=>{var i=e;i.utils=r(6436),i.common=r(5772),i.sha=r(9041),i.ripemd=r(2949),i.hmac=r(2344),i.sha1=i.sha.sha1,i.sha256=i.sha.sha256,i.sha224=i.sha.sha224,i.sha384=i.sha.sha384,i.sha512=i.sha.sha512,i.ripemd160=i.ripemd.ripemd160},5772:(t,e,r)=>{"use strict";var i=r(6436),n=r(9746);function o(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian="big",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}e.BlockHash=o,o.prototype.update=function(t,e){if(t=i.toArray(t,e),this.pending?this.pending=this.pending.concat(t):this.pending=t,this.pendingTotal+=t.length,this.pending.length>=this._delta8){var r=(t=this.pending).length%this._delta8;this.pending=t.slice(t.length-r,t.length),0===this.pending.length&&(this.pending=null),t=i.join32(t,0,t.length-r,this.endian);for(var n=0;n>>24&255,i[n++]=t>>>16&255,i[n++]=t>>>8&255,i[n++]=255&t}else for(i[n++]=255&t,i[n++]=t>>>8&255,i[n++]=t>>>16&255,i[n++]=t>>>24&255,i[n++]=0,i[n++]=0,i[n++]=0,i[n++]=0,o=8;o{"use strict";var i=r(6436),n=r(9746);function o(t,e,r){if(!(this instanceof o))return new o(t,e,r);this.Hash=t,this.blockSize=t.blockSize/8,this.outSize=t.outSize/8,this.inner=null,this.outer=null,this._init(i.toArray(e,r))}t.exports=o,o.prototype._init=function(t){t.length>this.blockSize&&(t=(new this.Hash).update(t).digest()),n(t.length<=this.blockSize);for(var e=t.length;e{"use strict";var i=r(6436),n=r(5772),o=i.rotl32,s=i.sum32,a=i.sum32_3,h=i.sum32_4,u=n.BlockHash;function c(){if(!(this instanceof c))return new c;u.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian="little"}function l(t,e,r,i){return t<=15?e^r^i:t<=31?e&r|~e&i:t<=47?(e|~r)^i:t<=63?e&i|r&~i:e^(r|~i)}function d(t){return t<=15?0:t<=31?1518500249:t<=47?1859775393:t<=63?2400959708:2840853838}function f(t){return t<=15?1352829926:t<=31?1548603684:t<=47?1836072691:t<=63?2053994217:0}i.inherits(c,u),e.ripemd160=c,c.blockSize=512,c.outSize=160,c.hmacStrength=192,c.padLength=64,c.prototype._update=function(t,e){for(var r=this.h[0],i=this.h[1],n=this.h[2],u=this.h[3],c=this.h[4],w=r,E=i,p=n,m=u,y=c,b=0;b<80;b++){var Q=s(o(h(r,l(b,i,n,u),t[A[b]+e],d(b)),M[b]),c);r=c,c=u,u=o(n,10),n=i,i=Q,Q=s(o(h(w,l(79-b,E,p,m),t[g[b]+e],f(b)),B[b]),y),w=y,y=m,m=o(p,10),p=E,E=Q}Q=a(this.h[1],n,m),this.h[1]=a(this.h[2],u,y),this.h[2]=a(this.h[3],c,w),this.h[3]=a(this.h[4],r,E),this.h[4]=a(this.h[0],i,p),this.h[0]=Q},c.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h,"little"):i.split32(this.h,"little")};var A=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],g=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],M=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],B=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]},9041:(t,e,r)=>{"use strict";e.sha1=r(4761),e.sha224=r(799),e.sha256=r(9344),e.sha384=r(772),e.sha512=r(5900)},4761:(t,e,r)=>{"use strict";var i=r(6436),n=r(5772),o=r(7038),s=i.rotl32,a=i.sum32,h=i.sum32_5,u=o.ft_1,c=n.BlockHash,l=[1518500249,1859775393,2400959708,3395469782];function d(){if(!(this instanceof d))return new d;c.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=new Array(80)}i.inherits(d,c),t.exports=d,d.blockSize=512,d.outSize=160,d.hmacStrength=80,d.padLength=64,d.prototype._update=function(t,e){for(var r=this.W,i=0;i<16;i++)r[i]=t[e+i];for(;i{"use strict";var i=r(6436),n=r(9344);function o(){if(!(this instanceof o))return new o;n.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}i.inherits(o,n),t.exports=o,o.blockSize=512,o.outSize=224,o.hmacStrength=192,o.padLength=64,o.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h.slice(0,7),"big"):i.split32(this.h.slice(0,7),"big")}},9344:(t,e,r)=>{"use strict";var i=r(6436),n=r(5772),o=r(7038),s=r(9746),a=i.sum32,h=i.sum32_4,u=i.sum32_5,c=o.ch32,l=o.maj32,d=o.s0_256,f=o.s1_256,A=o.g0_256,g=o.g1_256,M=n.BlockHash,B=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function w(){if(!(this instanceof w))return new w;M.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=B,this.W=new Array(64)}i.inherits(w,M),t.exports=w,w.blockSize=512,w.outSize=256,w.hmacStrength=192,w.padLength=64,w.prototype._update=function(t,e){for(var r=this.W,i=0;i<16;i++)r[i]=t[e+i];for(;i{"use strict";var i=r(6436),n=r(5900);function o(){if(!(this instanceof o))return new o;n.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}i.inherits(o,n),t.exports=o,o.blockSize=1024,o.outSize=384,o.hmacStrength=192,o.padLength=128,o.prototype._digest=function(t){return"hex"===t?i.toHex32(this.h.slice(0,12),"big"):i.split32(this.h.slice(0,12),"big")}},5900:(t,e,r)=>{"use strict";var i=r(6436),n=r(5772),o=r(9746),s=i.rotr64_hi,a=i.rotr64_lo,h=i.shr64_hi,u=i.shr64_lo,c=i.sum64,l=i.sum64_hi,d=i.sum64_lo,f=i.sum64_4_hi,A=i.sum64_4_lo,g=i.sum64_5_hi,M=i.sum64_5_lo,B=n.BlockHash,w=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function E(){if(!(this instanceof E))return new E;B.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=w,this.W=new Array(160)}function p(t,e,r,i,n){var o=t&r^~t&n;return o<0&&(o+=4294967296),o}function m(t,e,r,i,n,o){var s=e&i^~e&o;return s<0&&(s+=4294967296),s}function y(t,e,r,i,n){var o=t&r^t&n^r&n;return o<0&&(o+=4294967296),o}function b(t,e,r,i,n,o){var s=e&i^e&o^i&o;return s<0&&(s+=4294967296),s}function Q(t,e){var r=s(t,e,28)^s(e,t,2)^s(e,t,7);return r<0&&(r+=4294967296),r}function I(t,e){var r=a(t,e,28)^a(e,t,2)^a(e,t,7);return r<0&&(r+=4294967296),r}function C(t,e){var r=a(t,e,14)^a(t,e,18)^a(e,t,9);return r<0&&(r+=4294967296),r}function D(t,e){var r=s(t,e,1)^s(t,e,8)^h(t,e,7);return r<0&&(r+=4294967296),r}function N(t,e){var r=a(t,e,1)^a(t,e,8)^u(t,e,7);return r<0&&(r+=4294967296),r}function v(t,e){var r=a(t,e,19)^a(e,t,29)^u(t,e,6);return r<0&&(r+=4294967296),r}i.inherits(E,B),t.exports=E,E.blockSize=1024,E.outSize=512,E.hmacStrength=192,E.padLength=128,E.prototype._prepareBlock=function(t,e){for(var r=this.W,i=0;i<32;i++)r[i]=t[e+i];for(;i{"use strict";var i=r(6436).rotr32;function n(t,e,r){return t&e^~t&r}function o(t,e,r){return t&e^t&r^e&r}function s(t,e,r){return t^e^r}e.ft_1=function(t,e,r,i){return 0===t?n(e,r,i):1===t||3===t?s(e,r,i):2===t?o(e,r,i):void 0},e.ch32=n,e.maj32=o,e.p32=s,e.s0_256=function(t){return i(t,2)^i(t,13)^i(t,22)},e.s1_256=function(t){return i(t,6)^i(t,11)^i(t,25)},e.g0_256=function(t){return i(t,7)^i(t,18)^t>>>3},e.g1_256=function(t){return i(t,17)^i(t,19)^t>>>10}},6436:(t,e,r)=>{"use strict";var i=r(9746),n=r(5717);function o(t,e){return 55296==(64512&t.charCodeAt(e))&&!(e<0||e+1>=t.length)&&56320==(64512&t.charCodeAt(e+1))}function s(t){return(t>>>24|t>>>8&65280|t<<8&16711680|(255&t)<<24)>>>0}function a(t){return 1===t.length?"0"+t:t}function h(t){return 7===t.length?"0"+t:6===t.length?"00"+t:5===t.length?"000"+t:4===t.length?"0000"+t:3===t.length?"00000"+t:2===t.length?"000000"+t:1===t.length?"0000000"+t:t}e.inherits=n,e.toArray=function(t,e){if(Array.isArray(t))return t.slice();if(!t)return[];var r=[];if("string"==typeof t)if(e){if("hex"===e)for((t=t.replace(/[^a-z0-9]+/gi,"")).length%2!=0&&(t="0"+t),n=0;n>6|192,r[i++]=63&s|128):o(t,n)?(s=65536+((1023&s)<<10)+(1023&t.charCodeAt(++n)),r[i++]=s>>18|240,r[i++]=s>>12&63|128,r[i++]=s>>6&63|128,r[i++]=63&s|128):(r[i++]=s>>12|224,r[i++]=s>>6&63|128,r[i++]=63&s|128)}else for(n=0;n>>0}return s},e.split32=function(t,e){for(var r=new Array(4*t.length),i=0,n=0;i>>24,r[n+1]=o>>>16&255,r[n+2]=o>>>8&255,r[n+3]=255&o):(r[n+3]=o>>>24,r[n+2]=o>>>16&255,r[n+1]=o>>>8&255,r[n]=255&o)}return r},e.rotr32=function(t,e){return t>>>e|t<<32-e},e.rotl32=function(t,e){return t<>>32-e},e.sum32=function(t,e){return t+e>>>0},e.sum32_3=function(t,e,r){return t+e+r>>>0},e.sum32_4=function(t,e,r,i){return t+e+r+i>>>0},e.sum32_5=function(t,e,r,i,n){return t+e+r+i+n>>>0},e.sum64=function(t,e,r,i){var n=t[e],o=i+t[e+1]>>>0,s=(o>>0,t[e+1]=o},e.sum64_hi=function(t,e,r,i){return(e+i>>>0>>0},e.sum64_lo=function(t,e,r,i){return e+i>>>0},e.sum64_4_hi=function(t,e,r,i,n,o,s,a){var h=0,u=e;return h+=(u=u+i>>>0)>>0)>>0)>>0},e.sum64_4_lo=function(t,e,r,i,n,o,s,a){return e+i+o+a>>>0},e.sum64_5_hi=function(t,e,r,i,n,o,s,a,h,u){var c=0,l=e;return c+=(l=l+i>>>0)>>0)>>0)>>0)>>0},e.sum64_5_lo=function(t,e,r,i,n,o,s,a,h,u){return e+i+o+a+u>>>0},e.rotr64_hi=function(t,e,r){return(e<<32-r|t>>>r)>>>0},e.rotr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0},e.shr64_hi=function(t,e,r){return t>>>r},e.shr64_lo=function(t,e,r){return(t<<32-r|e>>>r)>>>0}},2156:(t,e,r)=>{"use strict";var i=r(3715),n=r(4504),o=r(9746);function s(t){if(!(this instanceof s))return new s(t);this.hash=t.hash,this.predResist=!!t.predResist,this.outLen=this.hash.outSize,this.minEntropy=t.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var e=n.toArray(t.entropy,t.entropyEnc||"hex"),r=n.toArray(t.nonce,t.nonceEnc||"hex"),i=n.toArray(t.pers,t.persEnc||"hex");o(e.length>=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._init(e,r,i)}t.exports=s,s.prototype._init=function(t,e,r){var i=t.concat(e).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var n=0;n=this.minEntropy/8,"Not enough entropy. Minimum is: "+this.minEntropy+" bits"),this._update(t.concat(r||[])),this._reseed=1},s.prototype.generate=function(t,e,r,i){if(this._reseed>this.reseedInterval)throw new Error("Reseed is required");"string"!=typeof e&&(i=r,r=e,e=null),r&&(r=n.toArray(r,i||"hex"),this._update(r));for(var o=[];o.length{e.read=function(t,e,r,i,n){var o,s,a=8*n-i-1,h=(1<>1,c=-7,l=r?n-1:0,d=r?-1:1,f=t[e+l];for(l+=d,o=f&(1<<-c)-1,f>>=-c,c+=a;c>0;o=256*o+t[e+l],l+=d,c-=8);for(s=o&(1<<-c)-1,o>>=-c,c+=i;c>0;s=256*s+t[e+l],l+=d,c-=8);if(0===o)o=1-u;else{if(o===h)return s?NaN:1/0*(f?-1:1);s+=Math.pow(2,i),o-=u}return(f?-1:1)*s*Math.pow(2,o-i)},e.write=function(t,e,r,i,n,o){var s,a,h,u=8*o-n-1,c=(1<>1,d=23===n?Math.pow(2,-24)-Math.pow(2,-77):0,f=i?0:o-1,A=i?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=c):(s=Math.floor(Math.log(e)/Math.LN2),e*(h=Math.pow(2,-s))<1&&(s--,h*=2),(e+=s+l>=1?d/h:d*Math.pow(2,1-l))*h>=2&&(s++,h/=2),s+l>=c?(a=0,s=c):s+l>=1?(a=(e*h-1)*Math.pow(2,n),s+=l):(a=e*Math.pow(2,l-1)*Math.pow(2,n),s=0));n>=8;t[r+f]=255&a,f+=A,a/=256,n-=8);for(s=s<0;t[r+f]=255&s,f+=A,s/=256,u-=8);t[r+f-A]|=128*g}},5717:t=>{"function"==typeof Object.create?t.exports=function(t,e){e&&(t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:t.exports=function(t,e){if(e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}}},2584:(t,e,r)=>{"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,n=r(1924)("Object.prototype.toString"),o=function(t){return!(i&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===n(t)},s=function(t){return!!o(t)||null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==n(t)&&"[object Function]"===n(t.callee)},a=function(){return o(arguments)}();o.isLegacyArguments=s,t.exports=a?o:s},8662:t=>{"use strict";var e,r=Object.prototype.toString,i=Function.prototype.toString,n=/^\s*(?:function)?\*/,o="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag,s=Object.getPrototypeOf;t.exports=function(t){if("function"!=typeof t)return!1;if(n.test(i.call(t)))return!0;if(!o)return"[object GeneratorFunction]"===r.call(t);if(!s)return!1;if(void 0===e){var a=function(){if(!o)return!1;try{return Function("return function*() {}")()}catch(t){}}();e=!!a&&s(a)}return s(t)===e}},8611:t=>{"use strict";t.exports=function(t){return t!=t}},360:(t,e,r)=>{"use strict";var i=r(5559),n=r(4289),o=r(8611),s=r(9415),a=r(3194),h=i(s(),Number);n(h,{getPolyfill:s,implementation:o,shim:a}),t.exports=h},9415:(t,e,r)=>{"use strict";var i=r(8611);t.exports=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:i}},3194:(t,e,r)=>{"use strict";var i=r(4289),n=r(9415);t.exports=function(){var t=n();return i(Number,{isNaN:t},{isNaN:function(){return Number.isNaN!==t}}),t}},5692:(t,e,r)=>{"use strict";var i=r(9804),n=r(6314),o=r(1924),s=o("Object.prototype.toString"),a=r(1405)()&&"symbol"==typeof Symbol.toStringTag,h=n(),u=o("Array.prototype.indexOf",!0)||function(t,e){for(var r=0;r-1}return!!d&&function(t){var e=!1;return i(l,(function(r,i){if(!e)try{e=r.call(t)===i}catch(t){}})),e}(t)}},2318:(t,e,r)=>{"use strict";var i=r(5717),n=r(3349),o=r(9509).Buffer,s=new Array(16);function a(){n.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function h(t,e){return t<>>32-e}function u(t,e,r,i,n,o,s){return h(t+(e&r|~e&i)+n+o|0,s)+e|0}function c(t,e,r,i,n,o,s){return h(t+(e&i|r&~i)+n+o|0,s)+e|0}function l(t,e,r,i,n,o,s){return h(t+(e^r^i)+n+o|0,s)+e|0}function d(t,e,r,i,n,o,s){return h(t+(r^(e|~i))+n+o|0,s)+e|0}i(a,n),a.prototype._update=function(){for(var t=s,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);var r=this._a,i=this._b,n=this._c,o=this._d;r=u(r,i,n,o,t[0],3614090360,7),o=u(o,r,i,n,t[1],3905402710,12),n=u(n,o,r,i,t[2],606105819,17),i=u(i,n,o,r,t[3],3250441966,22),r=u(r,i,n,o,t[4],4118548399,7),o=u(o,r,i,n,t[5],1200080426,12),n=u(n,o,r,i,t[6],2821735955,17),i=u(i,n,o,r,t[7],4249261313,22),r=u(r,i,n,o,t[8],1770035416,7),o=u(o,r,i,n,t[9],2336552879,12),n=u(n,o,r,i,t[10],4294925233,17),i=u(i,n,o,r,t[11],2304563134,22),r=u(r,i,n,o,t[12],1804603682,7),o=u(o,r,i,n,t[13],4254626195,12),n=u(n,o,r,i,t[14],2792965006,17),r=c(r,i=u(i,n,o,r,t[15],1236535329,22),n,o,t[1],4129170786,5),o=c(o,r,i,n,t[6],3225465664,9),n=c(n,o,r,i,t[11],643717713,14),i=c(i,n,o,r,t[0],3921069994,20),r=c(r,i,n,o,t[5],3593408605,5),o=c(o,r,i,n,t[10],38016083,9),n=c(n,o,r,i,t[15],3634488961,14),i=c(i,n,o,r,t[4],3889429448,20),r=c(r,i,n,o,t[9],568446438,5),o=c(o,r,i,n,t[14],3275163606,9),n=c(n,o,r,i,t[3],4107603335,14),i=c(i,n,o,r,t[8],1163531501,20),r=c(r,i,n,o,t[13],2850285829,5),o=c(o,r,i,n,t[2],4243563512,9),n=c(n,o,r,i,t[7],1735328473,14),r=l(r,i=c(i,n,o,r,t[12],2368359562,20),n,o,t[5],4294588738,4),o=l(o,r,i,n,t[8],2272392833,11),n=l(n,o,r,i,t[11],1839030562,16),i=l(i,n,o,r,t[14],4259657740,23),r=l(r,i,n,o,t[1],2763975236,4),o=l(o,r,i,n,t[4],1272893353,11),n=l(n,o,r,i,t[7],4139469664,16),i=l(i,n,o,r,t[10],3200236656,23),r=l(r,i,n,o,t[13],681279174,4),o=l(o,r,i,n,t[0],3936430074,11),n=l(n,o,r,i,t[3],3572445317,16),i=l(i,n,o,r,t[6],76029189,23),r=l(r,i,n,o,t[9],3654602809,4),o=l(o,r,i,n,t[12],3873151461,11),n=l(n,o,r,i,t[15],530742520,16),r=d(r,i=l(i,n,o,r,t[2],3299628645,23),n,o,t[0],4096336452,6),o=d(o,r,i,n,t[7],1126891415,10),n=d(n,o,r,i,t[14],2878612391,15),i=d(i,n,o,r,t[5],4237533241,21),r=d(r,i,n,o,t[12],1700485571,6),o=d(o,r,i,n,t[3],2399980690,10),n=d(n,o,r,i,t[10],4293915773,15),i=d(i,n,o,r,t[1],2240044497,21),r=d(r,i,n,o,t[8],1873313359,6),o=d(o,r,i,n,t[15],4264355552,10),n=d(n,o,r,i,t[6],2734768916,15),i=d(i,n,o,r,t[13],1309151649,21),r=d(r,i,n,o,t[4],4149444226,6),o=d(o,r,i,n,t[11],3174756917,10),n=d(n,o,r,i,t[2],718787259,15),i=d(i,n,o,r,t[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+i|0,this._c=this._c+n|0,this._d=this._d+o|0},a.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=o.allocUnsafe(16);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t},t.exports=a},3047:(t,e,r)=>{var i=r(6240),n=r(9931);function o(t){this.rand=t||new n.Rand}t.exports=o,o.create=function(t){return new o(t)},o.prototype._randbelow=function(t){var e=t.bitLength(),r=Math.ceil(e/8);do{var n=new i(this.rand.generate(r))}while(n.cmp(t)>=0);return n},o.prototype._randrange=function(t,e){var r=e.sub(t);return t.add(this._randbelow(r))},o.prototype.test=function(t,e,r){var n=t.bitLength(),o=i.mont(t),s=new i(1).toRed(o);e||(e=Math.max(1,n/48|0));for(var a=t.subn(1),h=0;!a.testn(h);h++);for(var u=t.shrn(h),c=a.toRed(o);e>0;e--){var l=this._randrange(new i(2),a);r&&r(l);var d=l.toRed(o).redPow(u);if(0!==d.cmp(s)&&0!==d.cmp(c)){for(var f=1;f0;e--){var c=this._randrange(new i(2),s),l=t.gcd(c);if(0!==l.cmpn(1))return l;var d=c.toRed(n).redPow(h);if(0!==d.cmp(o)&&0!==d.cmp(u)){for(var f=1;f=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,c=r;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,d=Math.min(u,e.length-1),f=Math.max(0,u-t.length+1);f<=d;f++){var A=u-f|0;c+=(s=(n=0|t.words[A])*(o=0|e.words[f])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|c}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?c[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=l[t],f=d[t];r="";var A=this.clone();for(A.negative=0;!A.isZero();){var g=A.modn(f).toString(t);r=(A=A.idivn(f)).isZero()?g+r:c[u-g.length]+g+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),c=this.clone();if(h){for(a=0;!c.isZero();a++)s=c.andln(255),c.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],A=8191&f,g=f>>>13,M=0|s[2],B=8191&M,w=M>>>13,E=0|s[3],p=8191&E,m=E>>>13,y=0|s[4],b=8191&y,Q=y>>>13,I=0|s[5],C=8191&I,D=I>>>13,N=0|s[6],v=8191&N,G=N>>>13,R=0|s[7],Y=8191&R,U=R>>>13,V=0|s[8],T=8191&V,S=V>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,H=j>>>13,z=0|a[1],x=8191&z,O=z>>>13,W=0|a[2],J=8191&W,X=W>>>13,K=0|a[3],P=8191&K,_=K>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ct=0|a[8],lt=8191&ct,dt=ct>>>13,ft=0|a[9],At=8191&ft,gt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(l,Z))|0)+((8191&(n=(n=Math.imul(l,H))+Math.imul(d,Z)|0))<<13)|0;u=((o=Math.imul(d,H))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(A,Z),n=(n=Math.imul(A,H))+Math.imul(g,Z)|0,o=Math.imul(g,H);var Bt=(u+(i=i+Math.imul(l,x)|0)|0)+((8191&(n=(n=n+Math.imul(l,O)|0)+Math.imul(d,x)|0))<<13)|0;u=((o=o+Math.imul(d,O)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(B,Z),n=(n=Math.imul(B,H))+Math.imul(w,Z)|0,o=Math.imul(w,H),i=i+Math.imul(A,x)|0,n=(n=n+Math.imul(A,O)|0)+Math.imul(g,x)|0,o=o+Math.imul(g,O)|0;var wt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(d,J)|0))<<13)|0;u=((o=o+Math.imul(d,X)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,H))+Math.imul(m,Z)|0,o=Math.imul(m,H),i=i+Math.imul(B,x)|0,n=(n=n+Math.imul(B,O)|0)+Math.imul(w,x)|0,o=o+Math.imul(w,O)|0,i=i+Math.imul(A,J)|0,n=(n=n+Math.imul(A,X)|0)+Math.imul(g,J)|0,o=o+Math.imul(g,X)|0;var Et=(u+(i=i+Math.imul(l,P)|0)|0)+((8191&(n=(n=n+Math.imul(l,_)|0)+Math.imul(d,P)|0))<<13)|0;u=((o=o+Math.imul(d,_)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,H))+Math.imul(Q,Z)|0,o=Math.imul(Q,H),i=i+Math.imul(p,x)|0,n=(n=n+Math.imul(p,O)|0)+Math.imul(m,x)|0,o=o+Math.imul(m,O)|0,i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,X)|0)+Math.imul(w,J)|0,o=o+Math.imul(w,X)|0,i=i+Math.imul(A,P)|0,n=(n=n+Math.imul(A,_)|0)+Math.imul(g,P)|0,o=o+Math.imul(g,_)|0;var pt=(u+(i=i+Math.imul(l,$)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(d,$)|0))<<13)|0;u=((o=o+Math.imul(d,tt)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,H))+Math.imul(D,Z)|0,o=Math.imul(D,H),i=i+Math.imul(b,x)|0,n=(n=n+Math.imul(b,O)|0)+Math.imul(Q,x)|0,o=o+Math.imul(Q,O)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0,i=i+Math.imul(B,P)|0,n=(n=n+Math.imul(B,_)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,_)|0,i=i+Math.imul(A,$)|0,n=(n=n+Math.imul(A,tt)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,tt)|0;var mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(d,rt)|0))<<13)|0;u=((o=o+Math.imul(d,it)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(v,Z),n=(n=Math.imul(v,H))+Math.imul(G,Z)|0,o=Math.imul(G,H),i=i+Math.imul(C,x)|0,n=(n=n+Math.imul(C,O)|0)+Math.imul(D,x)|0,o=o+Math.imul(D,O)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(Q,J)|0,o=o+Math.imul(Q,X)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,_)|0)+Math.imul(m,P)|0,o=o+Math.imul(m,_)|0,i=i+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(A,rt)|0,n=(n=n+Math.imul(A,it)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0;var yt=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(d,ot)|0))<<13)|0;u=((o=o+Math.imul(d,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Y,Z),n=(n=Math.imul(Y,H))+Math.imul(U,Z)|0,o=Math.imul(U,H),i=i+Math.imul(v,x)|0,n=(n=n+Math.imul(v,O)|0)+Math.imul(G,x)|0,o=o+Math.imul(G,O)|0,i=i+Math.imul(C,J)|0,n=(n=n+Math.imul(C,X)|0)+Math.imul(D,J)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,_)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,_)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0,i=i+Math.imul(B,rt)|0,n=(n=n+Math.imul(B,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(A,ot)|0,n=(n=n+Math.imul(A,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var bt=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(d,ht)|0))<<13)|0;u=((o=o+Math.imul(d,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,H))+Math.imul(S,Z)|0,o=Math.imul(S,H),i=i+Math.imul(Y,x)|0,n=(n=n+Math.imul(Y,O)|0)+Math.imul(U,x)|0,o=o+Math.imul(U,O)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(G,J)|0,o=o+Math.imul(G,X)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,_)|0)+Math.imul(D,P)|0,o=o+Math.imul(D,_)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0,i=i+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(A,ht)|0,n=(n=n+Math.imul(A,ut)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,ut)|0;var Qt=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,dt)|0)+Math.imul(d,lt)|0))<<13)|0;u=((o=o+Math.imul(d,dt)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,H))+Math.imul(L,Z)|0,o=Math.imul(L,H),i=i+Math.imul(T,x)|0,n=(n=n+Math.imul(T,O)|0)+Math.imul(S,x)|0,o=o+Math.imul(S,O)|0,i=i+Math.imul(Y,J)|0,n=(n=n+Math.imul(Y,X)|0)+Math.imul(U,J)|0,o=o+Math.imul(U,X)|0,i=i+Math.imul(v,P)|0,n=(n=n+Math.imul(v,_)|0)+Math.imul(G,P)|0,o=o+Math.imul(G,_)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0,i=i+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(A,lt)|0,n=(n=n+Math.imul(A,dt)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,dt)|0;var It=(u+(i=i+Math.imul(l,At)|0)|0)+((8191&(n=(n=n+Math.imul(l,gt)|0)+Math.imul(d,At)|0))<<13)|0;u=((o=o+Math.imul(d,gt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,x),n=(n=Math.imul(F,O))+Math.imul(L,x)|0,o=Math.imul(L,O),i=i+Math.imul(T,J)|0,n=(n=n+Math.imul(T,X)|0)+Math.imul(S,J)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(Y,P)|0,n=(n=n+Math.imul(Y,_)|0)+Math.imul(U,P)|0,o=o+Math.imul(U,_)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(G,$)|0,o=o+Math.imul(G,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(D,rt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0,i=i+Math.imul(B,lt)|0,n=(n=n+Math.imul(B,dt)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,dt)|0;var Ct=(u+(i=i+Math.imul(A,At)|0)|0)+((8191&(n=(n=n+Math.imul(A,gt)|0)+Math.imul(g,At)|0))<<13)|0;u=((o=o+Math.imul(g,gt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,X))+Math.imul(L,J)|0,o=Math.imul(L,X),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,_)|0)+Math.imul(S,P)|0,o=o+Math.imul(S,_)|0,i=i+Math.imul(Y,$)|0,n=(n=n+Math.imul(Y,tt)|0)+Math.imul(U,$)|0,o=o+Math.imul(U,tt)|0,i=i+Math.imul(v,rt)|0,n=(n=n+Math.imul(v,it)|0)+Math.imul(G,rt)|0,o=o+Math.imul(G,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,dt)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,dt)|0;var Dt=(u+(i=i+Math.imul(B,At)|0)|0)+((8191&(n=(n=n+Math.imul(B,gt)|0)+Math.imul(w,At)|0))<<13)|0;u=((o=o+Math.imul(w,gt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,_))+Math.imul(L,P)|0,o=Math.imul(L,_),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(S,$)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(Y,rt)|0,n=(n=n+Math.imul(Y,it)|0)+Math.imul(U,rt)|0,o=o+Math.imul(U,it)|0,i=i+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,st)|0)+Math.imul(G,ot)|0,o=o+Math.imul(G,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,dt)|0)+Math.imul(Q,lt)|0,o=o+Math.imul(Q,dt)|0;var Nt=(u+(i=i+Math.imul(p,At)|0)|0)+((8191&(n=(n=n+Math.imul(p,gt)|0)+Math.imul(m,At)|0))<<13)|0;u=((o=o+Math.imul(m,gt)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(Y,ot)|0,n=(n=n+Math.imul(Y,st)|0)+Math.imul(U,ot)|0,o=o+Math.imul(U,st)|0,i=i+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(G,ht)|0,o=o+Math.imul(G,ut)|0,i=i+Math.imul(C,lt)|0,n=(n=n+Math.imul(C,dt)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,dt)|0;var vt=(u+(i=i+Math.imul(b,At)|0)|0)+((8191&(n=(n=n+Math.imul(b,gt)|0)+Math.imul(Q,At)|0))<<13)|0;u=((o=o+Math.imul(Q,gt)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(Y,ht)|0,n=(n=n+Math.imul(Y,ut)|0)+Math.imul(U,ht)|0,o=o+Math.imul(U,ut)|0,i=i+Math.imul(v,lt)|0,n=(n=n+Math.imul(v,dt)|0)+Math.imul(G,lt)|0,o=o+Math.imul(G,dt)|0;var Gt=(u+(i=i+Math.imul(C,At)|0)|0)+((8191&(n=(n=n+Math.imul(C,gt)|0)+Math.imul(D,At)|0))<<13)|0;u=((o=o+Math.imul(D,gt)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,ut)|0,i=i+Math.imul(Y,lt)|0,n=(n=n+Math.imul(Y,dt)|0)+Math.imul(U,lt)|0,o=o+Math.imul(U,dt)|0;var Rt=(u+(i=i+Math.imul(v,At)|0)|0)+((8191&(n=(n=n+Math.imul(v,gt)|0)+Math.imul(G,At)|0))<<13)|0;u=((o=o+Math.imul(G,gt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,lt)|0,n=(n=n+Math.imul(T,dt)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,dt)|0;var Yt=(u+(i=i+Math.imul(Y,At)|0)|0)+((8191&(n=(n=n+Math.imul(Y,gt)|0)+Math.imul(U,At)|0))<<13)|0;u=((o=o+Math.imul(U,gt)|0)+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(F,lt),n=(n=Math.imul(F,dt))+Math.imul(L,lt)|0,o=Math.imul(L,dt);var Ut=(u+(i=i+Math.imul(T,At)|0)|0)+((8191&(n=(n=n+Math.imul(T,gt)|0)+Math.imul(S,At)|0))<<13)|0;u=((o=o+Math.imul(S,gt)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863;var Vt=(u+(i=Math.imul(F,At))|0)+((8191&(n=(n=Math.imul(F,gt))+Math.imul(L,At)|0))<<13)|0;return u=((o=Math.imul(L,gt))+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,h[0]=Mt,h[1]=Bt,h[2]=wt,h[3]=Et,h[4]=pt,h[5]=mt,h[6]=yt,h[7]=bt,h[8]=Qt,h[9]=It,h[10]=Ct,h[11]=Dt,h[12]=Nt,h[13]=vt,h[14]=Gt,h[15]=Rt,h[16]=Yt,h[17]=Ut,h[18]=Vt,0!==u&&(h[19]=u,r.length++),r};function g(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(A=f),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?A(this,t,e):r<63?f(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):g(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==c||u>=n);u--){var l=0|this.words[u];this.words[u]=c<<26-o|l>>>o,c=l&a}return h&&0!==c&&(h.words[h.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var d=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(n,d,l);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=d)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var c=r.clone(),l=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(c),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var A=0,g=1;0==(r.words[0]&g)&&A<26;++A,g<<=1);if(A>0)for(r.iushrn(A);A-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(c),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,c=1;0==(e.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,d=1;0==(r.words[0]&d)&&l<26;++l,d<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var B={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function E(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function p(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function m(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function Q(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(E,w),E.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},E.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(B[t])return B[t];var e;if("k256"===t)e=new E;else if("p224"===t)e=new p;else if("p192"===t)e=new m;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return B[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);0!==this.pow(c,u).cmp(h);)c.redIAdd(h);for(var l=this.pow(c,n),d=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),A=s;0!==f.cmp(a);){for(var g=f,M=0;0!==g.cmp(a);M++)g=g.redSqr();i(M=0;i--){for(var u=e.words[i],c=h-1;c>=0;c--){var l=u>>c&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4==++a||0===i&&0===c)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new Q(t)},n(Q,b),Q.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},Q.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},Q.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},Q.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},Q.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},9746:t=>{function e(t,e){if(!t)throw new Error(e||"Assertion failed")}t.exports=e,e.equal=function(t,e,r){if(t!=e)throw new Error(r||"Assertion failed: "+t+" != "+e)}},4504:(t,e)=>{"use strict";var r=e;function i(t){return 1===t.length?"0"+t:t}function n(t){for(var e="",r=0;r>8,s=255&n;o?r.push(o,s):r.push(s)}return r},r.zero2=i,r.toHex=n,r.encode=function(t,e){return"hex"===e?n(t):t}},4244:t=>{"use strict";var e=function(t){return t!=t};t.exports=function(t,r){return 0===t&&0===r?1/t==1/r:t===r||!(!e(t)||!e(r))}},609:(t,e,r)=>{"use strict";var i=r(4289),n=r(5559),o=r(4244),s=r(5624),a=r(2281),h=n(s(),Object);i(h,{getPolyfill:s,implementation:o,shim:a}),t.exports=h},5624:(t,e,r)=>{"use strict";var i=r(4244);t.exports=function(){return"function"==typeof Object.is?Object.is:i}},2281:(t,e,r)=>{"use strict";var i=r(5624),n=r(4289);t.exports=function(){var t=i();return n(Object,{is:t},{is:function(){return Object.is!==t}}),t}},8987:(t,e,r)=>{"use strict";var i;if(!Object.keys){var n=Object.prototype.hasOwnProperty,o=Object.prototype.toString,s=r(1414),a=Object.prototype.propertyIsEnumerable,h=!a.call({toString:null},"toString"),u=a.call((function(){}),"prototype"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],l=function(t){var e=t.constructor;return e&&e.prototype===t},d={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},f=function(){if("undefined"==typeof window)return!1;for(var t in window)try{if(!d["$"+t]&&n.call(window,t)&&null!==window[t]&&"object"==typeof window[t])try{l(window[t])}catch(t){return!0}}catch(t){return!0}return!1}();i=function(t){var e=null!==t&&"object"==typeof t,r="[object Function]"===o.call(t),i=s(t),a=e&&"[object String]"===o.call(t),d=[];if(!e&&!r&&!i)throw new TypeError("Object.keys called on a non-object");var A=u&&r;if(a&&t.length>0&&!n.call(t,0))for(var g=0;g0)for(var M=0;M{"use strict";var i=Array.prototype.slice,n=r(1414),o=Object.keys,s=o?function(t){return o(t)}:r(8987),a=Object.keys;s.shim=function(){return Object.keys?function(){var t=Object.keys(arguments);return t&&t.length===arguments.length}(1,2)||(Object.keys=function(t){return n(t)?a(i.call(t)):a(t)}):Object.keys=s,Object.keys||s},t.exports=s},1414:t=>{"use strict";var e=Object.prototype.toString;t.exports=function(t){var r=e.call(t),i="[object Arguments]"===r;return i||(i="[object Array]"!==r&&null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Function]"===e.call(t.callee)),i}},873:t=>{"use strict";t.exports=JSON.parse('{"2.16.840.1.101.3.4.1.1":"aes-128-ecb","2.16.840.1.101.3.4.1.2":"aes-128-cbc","2.16.840.1.101.3.4.1.3":"aes-128-ofb","2.16.840.1.101.3.4.1.4":"aes-128-cfb","2.16.840.1.101.3.4.1.21":"aes-192-ecb","2.16.840.1.101.3.4.1.22":"aes-192-cbc","2.16.840.1.101.3.4.1.23":"aes-192-ofb","2.16.840.1.101.3.4.1.24":"aes-192-cfb","2.16.840.1.101.3.4.1.41":"aes-256-ecb","2.16.840.1.101.3.4.1.42":"aes-256-cbc","2.16.840.1.101.3.4.1.43":"aes-256-ofb","2.16.840.1.101.3.4.1.44":"aes-256-cfb"}')},2818:(t,e,r)=>{"use strict";var i=r(9809);e.certificate=r(1934);var n=i.define("RSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("modulus").int(),this.key("publicExponent").int(),this.key("privateExponent").int(),this.key("prime1").int(),this.key("prime2").int(),this.key("exponent1").int(),this.key("exponent2").int(),this.key("coefficient").int())}));e.RSAPrivateKey=n;var o=i.define("RSAPublicKey",(function(){this.seq().obj(this.key("modulus").int(),this.key("publicExponent").int())}));e.RSAPublicKey=o;var s=i.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(a),this.key("subjectPublicKey").bitstr())}));e.PublicKey=s;var a=i.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("none").null_().optional(),this.key("curve").objid().optional(),this.key("params").seq().obj(this.key("p").int(),this.key("q").int(),this.key("g").int()).optional())})),h=i.define("PrivateKeyInfo",(function(){this.seq().obj(this.key("version").int(),this.key("algorithm").use(a),this.key("subjectPrivateKey").octstr())}));e.PrivateKey=h;var u=i.define("EncryptedPrivateKeyInfo",(function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("id").objid(),this.key("decrypt").seq().obj(this.key("kde").seq().obj(this.key("id").objid(),this.key("kdeparams").seq().obj(this.key("salt").octstr(),this.key("iters").int())),this.key("cipher").seq().obj(this.key("algo").objid(),this.key("iv").octstr()))),this.key("subjectPrivateKey").octstr())}));e.EncryptedPrivateKey=u;var c=i.define("DSAPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("p").int(),this.key("q").int(),this.key("g").int(),this.key("pub_key").int(),this.key("priv_key").int())}));e.DSAPrivateKey=c,e.DSAparam=i.define("DSAparam",(function(){this.int()}));var l=i.define("ECPrivateKey",(function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").optional().explicit(0).use(d),this.key("publicKey").optional().explicit(1).bitstr())}));e.ECPrivateKey=l;var d=i.define("ECParameters",(function(){this.choice({namedCurve:this.objid()})}));e.signature=i.define("signature",(function(){this.seq().obj(this.key("r").int(),this.key("s").int())}))},1934:(t,e,r)=>{"use strict";var i=r(9809),n=i.define("Time",(function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})})),o=i.define("AttributeTypeValue",(function(){this.seq().obj(this.key("type").objid(),this.key("value").any())})),s=i.define("AlgorithmIdentifier",(function(){this.seq().obj(this.key("algorithm").objid(),this.key("parameters").optional(),this.key("curve").objid().optional())})),a=i.define("SubjectPublicKeyInfo",(function(){this.seq().obj(this.key("algorithm").use(s),this.key("subjectPublicKey").bitstr())})),h=i.define("RelativeDistinguishedName",(function(){this.setof(o)})),u=i.define("RDNSequence",(function(){this.seqof(h)})),c=i.define("Name",(function(){this.choice({rdnSequence:this.use(u)})})),l=i.define("Validity",(function(){this.seq().obj(this.key("notBefore").use(n),this.key("notAfter").use(n))})),d=i.define("Extension",(function(){this.seq().obj(this.key("extnID").objid(),this.key("critical").bool().def(!1),this.key("extnValue").octstr())})),f=i.define("TBSCertificate",(function(){this.seq().obj(this.key("version").explicit(0).int().optional(),this.key("serialNumber").int(),this.key("signature").use(s),this.key("issuer").use(c),this.key("validity").use(l),this.key("subject").use(c),this.key("subjectPublicKeyInfo").use(a),this.key("issuerUniqueID").implicit(1).bitstr().optional(),this.key("subjectUniqueID").implicit(2).bitstr().optional(),this.key("extensions").explicit(3).seqof(d).optional())})),A=i.define("X509Certificate",(function(){this.seq().obj(this.key("tbsCertificate").use(f),this.key("signatureAlgorithm").use(s),this.key("signatureValue").bitstr())}));t.exports=A},7631:(t,e,r)=>{var i=/Proc-Type: 4,ENCRYPTED[\n\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\n\r]+([0-9A-z\n\r+/=]+)[\n\r]+/m,n=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,o=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\n\r+/=]+)-----END \1-----$/m,s=r(3048),a=r(4696),h=r(9509).Buffer;t.exports=function(t,e){var r,u=t.toString(),c=u.match(i);if(c){var l="aes"+c[1],d=h.from(c[2],"hex"),f=h.from(c[3].replace(/[\r\n]/g,""),"base64"),A=s(e,d.slice(0,8),parseInt(c[1],10)).key,g=[],M=a.createDecipheriv(l,A,d);g.push(M.update(f)),g.push(M.final()),r=h.concat(g)}else{var B=u.match(o);r=h.from(B[2].replace(/[\r\n]/g,""),"base64")}return{tag:u.match(n)[1],data:r}}},980:(t,e,r)=>{var i=r(2818),n=r(873),o=r(7631),s=r(4696),a=r(5632),h=r(9509).Buffer;function u(t){var e;"object"!=typeof t||h.isBuffer(t)||(e=t.passphrase,t=t.key),"string"==typeof t&&(t=h.from(t));var r,u,c=o(t,e),l=c.tag,d=c.data;switch(l){case"CERTIFICATE":u=i.certificate.decode(d,"der").tbsCertificate.subjectPublicKeyInfo;case"PUBLIC KEY":switch(u||(u=i.PublicKey.decode(d,"der")),r=u.algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return i.RSAPublicKey.decode(u.subjectPublicKey.data,"der");case"1.2.840.10045.2.1":return u.subjectPrivateKey=u.subjectPublicKey,{type:"ec",data:u};case"1.2.840.10040.4.1":return u.algorithm.params.pub_key=i.DSAparam.decode(u.subjectPublicKey.data,"der"),{type:"dsa",data:u.algorithm.params};default:throw new Error("unknown key id "+r)}case"ENCRYPTED PRIVATE KEY":d=function(t,e){var r=t.algorithm.decrypt.kde.kdeparams.salt,i=parseInt(t.algorithm.decrypt.kde.kdeparams.iters.toString(),10),o=n[t.algorithm.decrypt.cipher.algo.join(".")],u=t.algorithm.decrypt.cipher.iv,c=t.subjectPrivateKey,l=parseInt(o.split("-")[1],10)/8,d=a.pbkdf2Sync(e,r,i,l,"sha1"),f=s.createDecipheriv(o,d,u),A=[];return A.push(f.update(c)),A.push(f.final()),h.concat(A)}(d=i.EncryptedPrivateKey.decode(d,"der"),e);case"PRIVATE KEY":switch(r=(u=i.PrivateKey.decode(d,"der")).algorithm.algorithm.join(".")){case"1.2.840.113549.1.1.1":return i.RSAPrivateKey.decode(u.subjectPrivateKey,"der");case"1.2.840.10045.2.1":return{curve:u.algorithm.curve,privateKey:i.ECPrivateKey.decode(u.subjectPrivateKey,"der").privateKey};case"1.2.840.10040.4.1":return u.algorithm.params.priv_key=i.DSAparam.decode(u.subjectPrivateKey,"der"),{type:"dsa",params:u.algorithm.params};default:throw new Error("unknown key id "+r)}case"RSA PUBLIC KEY":return i.RSAPublicKey.decode(d,"der");case"RSA PRIVATE KEY":return i.RSAPrivateKey.decode(d,"der");case"DSA PRIVATE KEY":return{type:"dsa",params:i.DSAPrivateKey.decode(d,"der")};case"EC PRIVATE KEY":return{curve:(d=i.ECPrivateKey.decode(d,"der")).parameters.value,privateKey:d.privateKey};default:throw new Error("unknown key type "+l)}}t.exports=u,u.signature=i.signature},5632:(t,e,r)=>{e.pbkdf2=r(8638),e.pbkdf2Sync=r(1257)},8638:(t,e,r)=>{var i,n,o=r(9509).Buffer,s=r(7357),a=r(2368),h=r(1257),u=r(7777),c=r.g.crypto&&r.g.crypto.subtle,l={sha:"SHA-1","sha-1":"SHA-1",sha1:"SHA-1",sha256:"SHA-256","sha-256":"SHA-256",sha384:"SHA-384","sha-384":"SHA-384","sha-512":"SHA-512",sha512:"SHA-512"},d=[];function f(){return n||(n=r.g.process&&r.g.process.nextTick?r.g.process.nextTick:r.g.queueMicrotask?r.g.queueMicrotask:r.g.setImmediate?r.g.setImmediate:r.g.setTimeout)}function A(t,e,r,i,n){return c.importKey("raw",t,{name:"PBKDF2"},!1,["deriveBits"]).then((function(t){return c.deriveBits({name:"PBKDF2",salt:e,iterations:r,hash:{name:n}},t,i<<3)})).then((function(t){return o.from(t)}))}t.exports=function(t,e,n,g,M,B){"function"==typeof M&&(B=M,M=void 0);var w=l[(M=M||"sha1").toLowerCase()];if(w&&"function"==typeof r.g.Promise){if(s(n,g),t=u(t,a,"Password"),e=u(e,a,"Salt"),"function"!=typeof B)throw new Error("No callback provided to pbkdf2");!function(t,e){t.then((function(t){f()((function(){e(null,t)}))}),(function(t){f()((function(){e(t)}))}))}(function(t){if(r.g.process&&!r.g.process.browser)return Promise.resolve(!1);if(!c||!c.importKey||!c.deriveBits)return Promise.resolve(!1);if(void 0!==d[t])return d[t];var e=A(i=i||o.alloc(8),i,10,128,t).then((function(){return!0})).catch((function(){return!1}));return d[t]=e,e}(w).then((function(r){return r?A(t,e,n,g,w):h(t,e,n,g,M)})),B)}else f()((function(){var r;try{r=h(t,e,n,g,M)}catch(t){return B(t)}B(null,r)}))}},2368:(t,e,r)=>{var i,n=r(4155);i=r.g.process&&r.g.process.browser?"utf-8":r.g.process&&r.g.process.version?parseInt(n.version.split(".")[0].slice(1),10)>=6?"utf-8":"binary":"utf-8",t.exports=i},7357:t=>{var e=Math.pow(2,30)-1;t.exports=function(t,r){if("number"!=typeof t)throw new TypeError("Iterations not a number");if(t<0)throw new TypeError("Bad iterations");if("number"!=typeof r)throw new TypeError("Key length not a number");if(r<0||r>e||r!=r)throw new TypeError("Bad key length")}},1257:(t,e,r)=>{var i=r(8028),n=r(9785),o=r(9072),s=r(9509).Buffer,a=r(7357),h=r(2368),u=r(7777),c=s.alloc(128),l={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function d(t,e,r){var a=function(t){return"rmd160"===t||"ripemd160"===t?function(t){return(new n).update(t).digest()}:"md5"===t?i:function(e){return o(t).update(e).digest()}}(t),h="sha512"===t||"sha384"===t?128:64;e.length>h?e=a(e):e.length{var i=r(9509).Buffer;t.exports=function(t,e,r){if(i.isBuffer(t))return t;if("string"==typeof t)return i.from(t,e);if(ArrayBuffer.isView(t))return i.from(t.buffer);throw new TypeError(r+" must be a string, a Buffer, a typed array or a DataView")}},4155:t=>{var e,r,i=t.exports={};function n(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(t){if(e===setTimeout)return setTimeout(t,0);if((e===n||!e)&&setTimeout)return e=setTimeout,setTimeout(t,0);try{return e(t,0)}catch(r){try{return e.call(null,t,0)}catch(r){return e.call(this,t,0)}}}!function(){try{e="function"==typeof setTimeout?setTimeout:n}catch(t){e=n}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(t){r=o}}();var a,h=[],u=!1,c=-1;function l(){u&&a&&(u=!1,a.length?h=a.concat(h):c=-1,h.length&&d())}function d(){if(!u){var t=s(l);u=!0;for(var e=h.length;e;){for(a=h,h=[];++c1)for(var r=1;r{e.publicEncrypt=r(6559),e.privateDecrypt=r(6138),e.privateEncrypt=function(t,r){return e.publicEncrypt(t,r,!0)},e.publicDecrypt=function(t,r){return e.privateDecrypt(t,r,!0)}},9199:(t,e,r)=>{var i=r(3482),n=r(9509).Buffer;function o(t){var e=n.allocUnsafe(4);return e.writeUInt32BE(t,0),e}t.exports=function(t,e){for(var r,s=n.alloc(0),a=0;s.length=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function h(t,e,r){var i=a(t,r);return r-1>=e&&(i|=a(t,r-1)<<4),i}function u(t,e,r,i){for(var n=0,o=Math.min(t.length,r),s=e;s=49?a-49+10:a>=17?a-17+10:a}return n}o.isBN=function(t){return t instanceof o||null!==t&&"object"==typeof t&&t.constructor.wordSize===o.wordSize&&Array.isArray(t.words)},o.max=function(t,e){return t.cmp(e)>0?t:e},o.min=function(t,e){return t.cmp(e)<0?t:e},o.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),i(e===(0|e)&&e>=2&&e<=36);var n=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(n++,this.negative=1),n=0;n-=3)s=t[n]|t[n-1]<<8|t[n-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(n=0,o=0;n>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var i=0;i=e;i-=2)n=h(t,e,i)<=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;else for(i=(t.length-e)%2==0?e+1:e;i=18?(o-=18,s+=1,this.words[s]|=n>>>26):o+=8;this.strip()},o.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var i=0,n=1;n<=67108863;n*=e)i++;i--,n=n/e|0;for(var o=t.length-r,s=o%i,a=Math.min(o,o-s)+r,h=0,c=r;c1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],d=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(t,e,r){r.negative=e.negative^t.negative;var i=t.length+e.length|0;r.length=i,i=i-1|0;var n=0|t.words[0],o=0|e.words[0],s=n*o,a=67108863&s,h=s/67108864|0;r.words[0]=a;for(var u=1;u>>26,l=67108863&h,d=Math.min(u,e.length-1),f=Math.max(0,u-t.length+1);f<=d;f++){var A=u-f|0;c+=(s=(n=0|t.words[A])*(o=0|e.words[f])+l)/67108864|0,l=67108863&s}r.words[u]=0|l,h=0|c}return 0!==h?r.words[u]=0|h:r.length--,r.strip()}o.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var n=0,o=0,s=0;s>>24-n&16777215)||s!==this.length-1?c[6-h.length]+h+r:h+r,(n+=2)>=26&&(n-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var u=l[t],f=d[t];r="";var A=this.clone();for(A.negative=0;!A.isZero();){var g=A.modn(f).toString(t);r=(A=A.idivn(f)).isZero()?g+r:c[u-g.length]+g+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(t,e){return i(void 0!==s),this.toArrayLike(s,t,e)},o.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},o.prototype.toArrayLike=function(t,e,r){var n=this.byteLength(),o=r||Math.max(1,n);i(n<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0"),this.strip();var s,a,h="le"===e,u=new t(o),c=this.clone();if(h){for(a=0;!c.isZero();a++)s=c.andln(255),c.iushrn(8),u[a]=s;for(;a=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},o.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 0==(8191&e)&&(r+=13,e>>>=13),0==(127&e)&&(r+=7,e>>>=7),0==(15&e)&&(r+=4,e>>>=4),0==(3&e)&&(r+=2,e>>>=2),0==(1&e)&&r++,r},o.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},o.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},o.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},o.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},o.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var i=0;it.length?this.clone().ixor(t):t.clone().ixor(this)},o.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},o.prototype.inotn=function(t){i("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var n=0;n0&&(this.words[n]=~this.words[n]&67108863>>26-r),this.strip()},o.prototype.notn=function(t){return this.clone().inotn(t)},o.prototype.setn=function(t,e){i("number"==typeof t&&t>=0);var r=t/26|0,n=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,i=t):(r=t,i=this);for(var n=0,o=0;o>>26;for(;0!==n&&o>>26;if(this.length=r.length,0!==n)this.words[this.length]=n,this.length++;else if(r!==this)for(;ot.length?this.clone().iadd(t):t.clone().iadd(this)},o.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,i,n=this.cmp(t);if(0===n)return this.negative=0,this.length=1,this.words[0]=0,this;n>0?(r=this,i=t):(r=t,i=this);for(var o=0,s=0;s>26,this.words[s]=67108863&e;for(;0!==o&&s>26,this.words[s]=67108863&e;if(0===o&&s>>13,f=0|s[1],A=8191&f,g=f>>>13,M=0|s[2],B=8191&M,w=M>>>13,E=0|s[3],p=8191&E,m=E>>>13,y=0|s[4],b=8191&y,Q=y>>>13,I=0|s[5],C=8191&I,D=I>>>13,N=0|s[6],v=8191&N,G=N>>>13,R=0|s[7],Y=8191&R,U=R>>>13,V=0|s[8],T=8191&V,S=V>>>13,k=0|s[9],F=8191&k,L=k>>>13,j=0|a[0],Z=8191&j,H=j>>>13,z=0|a[1],x=8191&z,O=z>>>13,W=0|a[2],J=8191&W,X=W>>>13,K=0|a[3],P=8191&K,_=K>>>13,q=0|a[4],$=8191&q,tt=q>>>13,et=0|a[5],rt=8191&et,it=et>>>13,nt=0|a[6],ot=8191&nt,st=nt>>>13,at=0|a[7],ht=8191&at,ut=at>>>13,ct=0|a[8],lt=8191&ct,dt=ct>>>13,ft=0|a[9],At=8191&ft,gt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var Mt=(u+(i=Math.imul(l,Z))|0)+((8191&(n=(n=Math.imul(l,H))+Math.imul(d,Z)|0))<<13)|0;u=((o=Math.imul(d,H))+(n>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,i=Math.imul(A,Z),n=(n=Math.imul(A,H))+Math.imul(g,Z)|0,o=Math.imul(g,H);var Bt=(u+(i=i+Math.imul(l,x)|0)|0)+((8191&(n=(n=n+Math.imul(l,O)|0)+Math.imul(d,x)|0))<<13)|0;u=((o=o+Math.imul(d,O)|0)+(n>>>13)|0)+(Bt>>>26)|0,Bt&=67108863,i=Math.imul(B,Z),n=(n=Math.imul(B,H))+Math.imul(w,Z)|0,o=Math.imul(w,H),i=i+Math.imul(A,x)|0,n=(n=n+Math.imul(A,O)|0)+Math.imul(g,x)|0,o=o+Math.imul(g,O)|0;var wt=(u+(i=i+Math.imul(l,J)|0)|0)+((8191&(n=(n=n+Math.imul(l,X)|0)+Math.imul(d,J)|0))<<13)|0;u=((o=o+Math.imul(d,X)|0)+(n>>>13)|0)+(wt>>>26)|0,wt&=67108863,i=Math.imul(p,Z),n=(n=Math.imul(p,H))+Math.imul(m,Z)|0,o=Math.imul(m,H),i=i+Math.imul(B,x)|0,n=(n=n+Math.imul(B,O)|0)+Math.imul(w,x)|0,o=o+Math.imul(w,O)|0,i=i+Math.imul(A,J)|0,n=(n=n+Math.imul(A,X)|0)+Math.imul(g,J)|0,o=o+Math.imul(g,X)|0;var Et=(u+(i=i+Math.imul(l,P)|0)|0)+((8191&(n=(n=n+Math.imul(l,_)|0)+Math.imul(d,P)|0))<<13)|0;u=((o=o+Math.imul(d,_)|0)+(n>>>13)|0)+(Et>>>26)|0,Et&=67108863,i=Math.imul(b,Z),n=(n=Math.imul(b,H))+Math.imul(Q,Z)|0,o=Math.imul(Q,H),i=i+Math.imul(p,x)|0,n=(n=n+Math.imul(p,O)|0)+Math.imul(m,x)|0,o=o+Math.imul(m,O)|0,i=i+Math.imul(B,J)|0,n=(n=n+Math.imul(B,X)|0)+Math.imul(w,J)|0,o=o+Math.imul(w,X)|0,i=i+Math.imul(A,P)|0,n=(n=n+Math.imul(A,_)|0)+Math.imul(g,P)|0,o=o+Math.imul(g,_)|0;var pt=(u+(i=i+Math.imul(l,$)|0)|0)+((8191&(n=(n=n+Math.imul(l,tt)|0)+Math.imul(d,$)|0))<<13)|0;u=((o=o+Math.imul(d,tt)|0)+(n>>>13)|0)+(pt>>>26)|0,pt&=67108863,i=Math.imul(C,Z),n=(n=Math.imul(C,H))+Math.imul(D,Z)|0,o=Math.imul(D,H),i=i+Math.imul(b,x)|0,n=(n=n+Math.imul(b,O)|0)+Math.imul(Q,x)|0,o=o+Math.imul(Q,O)|0,i=i+Math.imul(p,J)|0,n=(n=n+Math.imul(p,X)|0)+Math.imul(m,J)|0,o=o+Math.imul(m,X)|0,i=i+Math.imul(B,P)|0,n=(n=n+Math.imul(B,_)|0)+Math.imul(w,P)|0,o=o+Math.imul(w,_)|0,i=i+Math.imul(A,$)|0,n=(n=n+Math.imul(A,tt)|0)+Math.imul(g,$)|0,o=o+Math.imul(g,tt)|0;var mt=(u+(i=i+Math.imul(l,rt)|0)|0)+((8191&(n=(n=n+Math.imul(l,it)|0)+Math.imul(d,rt)|0))<<13)|0;u=((o=o+Math.imul(d,it)|0)+(n>>>13)|0)+(mt>>>26)|0,mt&=67108863,i=Math.imul(v,Z),n=(n=Math.imul(v,H))+Math.imul(G,Z)|0,o=Math.imul(G,H),i=i+Math.imul(C,x)|0,n=(n=n+Math.imul(C,O)|0)+Math.imul(D,x)|0,o=o+Math.imul(D,O)|0,i=i+Math.imul(b,J)|0,n=(n=n+Math.imul(b,X)|0)+Math.imul(Q,J)|0,o=o+Math.imul(Q,X)|0,i=i+Math.imul(p,P)|0,n=(n=n+Math.imul(p,_)|0)+Math.imul(m,P)|0,o=o+Math.imul(m,_)|0,i=i+Math.imul(B,$)|0,n=(n=n+Math.imul(B,tt)|0)+Math.imul(w,$)|0,o=o+Math.imul(w,tt)|0,i=i+Math.imul(A,rt)|0,n=(n=n+Math.imul(A,it)|0)+Math.imul(g,rt)|0,o=o+Math.imul(g,it)|0;var yt=(u+(i=i+Math.imul(l,ot)|0)|0)+((8191&(n=(n=n+Math.imul(l,st)|0)+Math.imul(d,ot)|0))<<13)|0;u=((o=o+Math.imul(d,st)|0)+(n>>>13)|0)+(yt>>>26)|0,yt&=67108863,i=Math.imul(Y,Z),n=(n=Math.imul(Y,H))+Math.imul(U,Z)|0,o=Math.imul(U,H),i=i+Math.imul(v,x)|0,n=(n=n+Math.imul(v,O)|0)+Math.imul(G,x)|0,o=o+Math.imul(G,O)|0,i=i+Math.imul(C,J)|0,n=(n=n+Math.imul(C,X)|0)+Math.imul(D,J)|0,o=o+Math.imul(D,X)|0,i=i+Math.imul(b,P)|0,n=(n=n+Math.imul(b,_)|0)+Math.imul(Q,P)|0,o=o+Math.imul(Q,_)|0,i=i+Math.imul(p,$)|0,n=(n=n+Math.imul(p,tt)|0)+Math.imul(m,$)|0,o=o+Math.imul(m,tt)|0,i=i+Math.imul(B,rt)|0,n=(n=n+Math.imul(B,it)|0)+Math.imul(w,rt)|0,o=o+Math.imul(w,it)|0,i=i+Math.imul(A,ot)|0,n=(n=n+Math.imul(A,st)|0)+Math.imul(g,ot)|0,o=o+Math.imul(g,st)|0;var bt=(u+(i=i+Math.imul(l,ht)|0)|0)+((8191&(n=(n=n+Math.imul(l,ut)|0)+Math.imul(d,ht)|0))<<13)|0;u=((o=o+Math.imul(d,ut)|0)+(n>>>13)|0)+(bt>>>26)|0,bt&=67108863,i=Math.imul(T,Z),n=(n=Math.imul(T,H))+Math.imul(S,Z)|0,o=Math.imul(S,H),i=i+Math.imul(Y,x)|0,n=(n=n+Math.imul(Y,O)|0)+Math.imul(U,x)|0,o=o+Math.imul(U,O)|0,i=i+Math.imul(v,J)|0,n=(n=n+Math.imul(v,X)|0)+Math.imul(G,J)|0,o=o+Math.imul(G,X)|0,i=i+Math.imul(C,P)|0,n=(n=n+Math.imul(C,_)|0)+Math.imul(D,P)|0,o=o+Math.imul(D,_)|0,i=i+Math.imul(b,$)|0,n=(n=n+Math.imul(b,tt)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,tt)|0,i=i+Math.imul(p,rt)|0,n=(n=n+Math.imul(p,it)|0)+Math.imul(m,rt)|0,o=o+Math.imul(m,it)|0,i=i+Math.imul(B,ot)|0,n=(n=n+Math.imul(B,st)|0)+Math.imul(w,ot)|0,o=o+Math.imul(w,st)|0,i=i+Math.imul(A,ht)|0,n=(n=n+Math.imul(A,ut)|0)+Math.imul(g,ht)|0,o=o+Math.imul(g,ut)|0;var Qt=(u+(i=i+Math.imul(l,lt)|0)|0)+((8191&(n=(n=n+Math.imul(l,dt)|0)+Math.imul(d,lt)|0))<<13)|0;u=((o=o+Math.imul(d,dt)|0)+(n>>>13)|0)+(Qt>>>26)|0,Qt&=67108863,i=Math.imul(F,Z),n=(n=Math.imul(F,H))+Math.imul(L,Z)|0,o=Math.imul(L,H),i=i+Math.imul(T,x)|0,n=(n=n+Math.imul(T,O)|0)+Math.imul(S,x)|0,o=o+Math.imul(S,O)|0,i=i+Math.imul(Y,J)|0,n=(n=n+Math.imul(Y,X)|0)+Math.imul(U,J)|0,o=o+Math.imul(U,X)|0,i=i+Math.imul(v,P)|0,n=(n=n+Math.imul(v,_)|0)+Math.imul(G,P)|0,o=o+Math.imul(G,_)|0,i=i+Math.imul(C,$)|0,n=(n=n+Math.imul(C,tt)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,tt)|0,i=i+Math.imul(b,rt)|0,n=(n=n+Math.imul(b,it)|0)+Math.imul(Q,rt)|0,o=o+Math.imul(Q,it)|0,i=i+Math.imul(p,ot)|0,n=(n=n+Math.imul(p,st)|0)+Math.imul(m,ot)|0,o=o+Math.imul(m,st)|0,i=i+Math.imul(B,ht)|0,n=(n=n+Math.imul(B,ut)|0)+Math.imul(w,ht)|0,o=o+Math.imul(w,ut)|0,i=i+Math.imul(A,lt)|0,n=(n=n+Math.imul(A,dt)|0)+Math.imul(g,lt)|0,o=o+Math.imul(g,dt)|0;var It=(u+(i=i+Math.imul(l,At)|0)|0)+((8191&(n=(n=n+Math.imul(l,gt)|0)+Math.imul(d,At)|0))<<13)|0;u=((o=o+Math.imul(d,gt)|0)+(n>>>13)|0)+(It>>>26)|0,It&=67108863,i=Math.imul(F,x),n=(n=Math.imul(F,O))+Math.imul(L,x)|0,o=Math.imul(L,O),i=i+Math.imul(T,J)|0,n=(n=n+Math.imul(T,X)|0)+Math.imul(S,J)|0,o=o+Math.imul(S,X)|0,i=i+Math.imul(Y,P)|0,n=(n=n+Math.imul(Y,_)|0)+Math.imul(U,P)|0,o=o+Math.imul(U,_)|0,i=i+Math.imul(v,$)|0,n=(n=n+Math.imul(v,tt)|0)+Math.imul(G,$)|0,o=o+Math.imul(G,tt)|0,i=i+Math.imul(C,rt)|0,n=(n=n+Math.imul(C,it)|0)+Math.imul(D,rt)|0,o=o+Math.imul(D,it)|0,i=i+Math.imul(b,ot)|0,n=(n=n+Math.imul(b,st)|0)+Math.imul(Q,ot)|0,o=o+Math.imul(Q,st)|0,i=i+Math.imul(p,ht)|0,n=(n=n+Math.imul(p,ut)|0)+Math.imul(m,ht)|0,o=o+Math.imul(m,ut)|0,i=i+Math.imul(B,lt)|0,n=(n=n+Math.imul(B,dt)|0)+Math.imul(w,lt)|0,o=o+Math.imul(w,dt)|0;var Ct=(u+(i=i+Math.imul(A,At)|0)|0)+((8191&(n=(n=n+Math.imul(A,gt)|0)+Math.imul(g,At)|0))<<13)|0;u=((o=o+Math.imul(g,gt)|0)+(n>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,i=Math.imul(F,J),n=(n=Math.imul(F,X))+Math.imul(L,J)|0,o=Math.imul(L,X),i=i+Math.imul(T,P)|0,n=(n=n+Math.imul(T,_)|0)+Math.imul(S,P)|0,o=o+Math.imul(S,_)|0,i=i+Math.imul(Y,$)|0,n=(n=n+Math.imul(Y,tt)|0)+Math.imul(U,$)|0,o=o+Math.imul(U,tt)|0,i=i+Math.imul(v,rt)|0,n=(n=n+Math.imul(v,it)|0)+Math.imul(G,rt)|0,o=o+Math.imul(G,it)|0,i=i+Math.imul(C,ot)|0,n=(n=n+Math.imul(C,st)|0)+Math.imul(D,ot)|0,o=o+Math.imul(D,st)|0,i=i+Math.imul(b,ht)|0,n=(n=n+Math.imul(b,ut)|0)+Math.imul(Q,ht)|0,o=o+Math.imul(Q,ut)|0,i=i+Math.imul(p,lt)|0,n=(n=n+Math.imul(p,dt)|0)+Math.imul(m,lt)|0,o=o+Math.imul(m,dt)|0;var Dt=(u+(i=i+Math.imul(B,At)|0)|0)+((8191&(n=(n=n+Math.imul(B,gt)|0)+Math.imul(w,At)|0))<<13)|0;u=((o=o+Math.imul(w,gt)|0)+(n>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,i=Math.imul(F,P),n=(n=Math.imul(F,_))+Math.imul(L,P)|0,o=Math.imul(L,_),i=i+Math.imul(T,$)|0,n=(n=n+Math.imul(T,tt)|0)+Math.imul(S,$)|0,o=o+Math.imul(S,tt)|0,i=i+Math.imul(Y,rt)|0,n=(n=n+Math.imul(Y,it)|0)+Math.imul(U,rt)|0,o=o+Math.imul(U,it)|0,i=i+Math.imul(v,ot)|0,n=(n=n+Math.imul(v,st)|0)+Math.imul(G,ot)|0,o=o+Math.imul(G,st)|0,i=i+Math.imul(C,ht)|0,n=(n=n+Math.imul(C,ut)|0)+Math.imul(D,ht)|0,o=o+Math.imul(D,ut)|0,i=i+Math.imul(b,lt)|0,n=(n=n+Math.imul(b,dt)|0)+Math.imul(Q,lt)|0,o=o+Math.imul(Q,dt)|0;var Nt=(u+(i=i+Math.imul(p,At)|0)|0)+((8191&(n=(n=n+Math.imul(p,gt)|0)+Math.imul(m,At)|0))<<13)|0;u=((o=o+Math.imul(m,gt)|0)+(n>>>13)|0)+(Nt>>>26)|0,Nt&=67108863,i=Math.imul(F,$),n=(n=Math.imul(F,tt))+Math.imul(L,$)|0,o=Math.imul(L,tt),i=i+Math.imul(T,rt)|0,n=(n=n+Math.imul(T,it)|0)+Math.imul(S,rt)|0,o=o+Math.imul(S,it)|0,i=i+Math.imul(Y,ot)|0,n=(n=n+Math.imul(Y,st)|0)+Math.imul(U,ot)|0,o=o+Math.imul(U,st)|0,i=i+Math.imul(v,ht)|0,n=(n=n+Math.imul(v,ut)|0)+Math.imul(G,ht)|0,o=o+Math.imul(G,ut)|0,i=i+Math.imul(C,lt)|0,n=(n=n+Math.imul(C,dt)|0)+Math.imul(D,lt)|0,o=o+Math.imul(D,dt)|0;var vt=(u+(i=i+Math.imul(b,At)|0)|0)+((8191&(n=(n=n+Math.imul(b,gt)|0)+Math.imul(Q,At)|0))<<13)|0;u=((o=o+Math.imul(Q,gt)|0)+(n>>>13)|0)+(vt>>>26)|0,vt&=67108863,i=Math.imul(F,rt),n=(n=Math.imul(F,it))+Math.imul(L,rt)|0,o=Math.imul(L,it),i=i+Math.imul(T,ot)|0,n=(n=n+Math.imul(T,st)|0)+Math.imul(S,ot)|0,o=o+Math.imul(S,st)|0,i=i+Math.imul(Y,ht)|0,n=(n=n+Math.imul(Y,ut)|0)+Math.imul(U,ht)|0,o=o+Math.imul(U,ut)|0,i=i+Math.imul(v,lt)|0,n=(n=n+Math.imul(v,dt)|0)+Math.imul(G,lt)|0,o=o+Math.imul(G,dt)|0;var Gt=(u+(i=i+Math.imul(C,At)|0)|0)+((8191&(n=(n=n+Math.imul(C,gt)|0)+Math.imul(D,At)|0))<<13)|0;u=((o=o+Math.imul(D,gt)|0)+(n>>>13)|0)+(Gt>>>26)|0,Gt&=67108863,i=Math.imul(F,ot),n=(n=Math.imul(F,st))+Math.imul(L,ot)|0,o=Math.imul(L,st),i=i+Math.imul(T,ht)|0,n=(n=n+Math.imul(T,ut)|0)+Math.imul(S,ht)|0,o=o+Math.imul(S,ut)|0,i=i+Math.imul(Y,lt)|0,n=(n=n+Math.imul(Y,dt)|0)+Math.imul(U,lt)|0,o=o+Math.imul(U,dt)|0;var Rt=(u+(i=i+Math.imul(v,At)|0)|0)+((8191&(n=(n=n+Math.imul(v,gt)|0)+Math.imul(G,At)|0))<<13)|0;u=((o=o+Math.imul(G,gt)|0)+(n>>>13)|0)+(Rt>>>26)|0,Rt&=67108863,i=Math.imul(F,ht),n=(n=Math.imul(F,ut))+Math.imul(L,ht)|0,o=Math.imul(L,ut),i=i+Math.imul(T,lt)|0,n=(n=n+Math.imul(T,dt)|0)+Math.imul(S,lt)|0,o=o+Math.imul(S,dt)|0;var Yt=(u+(i=i+Math.imul(Y,At)|0)|0)+((8191&(n=(n=n+Math.imul(Y,gt)|0)+Math.imul(U,At)|0))<<13)|0;u=((o=o+Math.imul(U,gt)|0)+(n>>>13)|0)+(Yt>>>26)|0,Yt&=67108863,i=Math.imul(F,lt),n=(n=Math.imul(F,dt))+Math.imul(L,lt)|0,o=Math.imul(L,dt);var Ut=(u+(i=i+Math.imul(T,At)|0)|0)+((8191&(n=(n=n+Math.imul(T,gt)|0)+Math.imul(S,At)|0))<<13)|0;u=((o=o+Math.imul(S,gt)|0)+(n>>>13)|0)+(Ut>>>26)|0,Ut&=67108863;var Vt=(u+(i=Math.imul(F,At))|0)+((8191&(n=(n=Math.imul(F,gt))+Math.imul(L,At)|0))<<13)|0;return u=((o=Math.imul(L,gt))+(n>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,h[0]=Mt,h[1]=Bt,h[2]=wt,h[3]=Et,h[4]=pt,h[5]=mt,h[6]=yt,h[7]=bt,h[8]=Qt,h[9]=It,h[10]=Ct,h[11]=Dt,h[12]=Nt,h[13]=vt,h[14]=Gt,h[15]=Rt,h[16]=Yt,h[17]=Ut,h[18]=Vt,0!==u&&(h[19]=u,r.length++),r};function g(t,e,r){return(new M).mulp(t,e,r)}function M(t,e){this.x=t,this.y=e}Math.imul||(A=f),o.prototype.mulTo=function(t,e){var r=this.length+t.length;return 10===this.length&&10===t.length?A(this,t,e):r<63?f(this,t,e):r<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var i=0,n=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,i=s,s=n}return 0!==i?r.words[o]=i:r.length--,r.strip()}(this,t,e):g(this,t,e)},M.prototype.makeRBT=function(t){for(var e=new Array(t),r=o.prototype._countBits(t)-1,i=0;i>=1;return i},M.prototype.permute=function(t,e,r,i,n,o){for(var s=0;s>>=1)n++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*e;s>=26,e+=n/67108864|0,e+=o>>>26,this.words[r]=67108863&o}return 0!==e&&(this.words[r]=e,this.length++),this},o.prototype.muln=function(t){return this.clone().imuln(t)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>n}return e}(t);if(0===e.length)return new o(1);for(var r=this,i=0;i=0);var e,r=t%26,n=(t-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(e=0;e>>26-r}s&&(this.words[e]=s,this.length++)}if(0!==n){for(e=this.length-1;e>=0;e--)this.words[e+n]=this.words[e];for(e=0;e=0),n=e?(e-e%26)/26:0;var o=t%26,s=Math.min((t-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,u=0;u=0&&(0!==c||u>=n);u--){var l=0|this.words[u];this.words[u]=c<<26-o|l>>>o,c=l&a}return h&&0!==c&&(h.words[h.length++]=c),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(t,e,r){return i(0===this.negative),this.iushrn(t,e,r)},o.prototype.shln=function(t){return this.clone().ishln(t)},o.prototype.ushln=function(t){return this.clone().iushln(t)},o.prototype.shrn=function(t){return this.clone().ishrn(t)},o.prototype.ushrn=function(t){return this.clone().iushrn(t)},o.prototype.testn=function(t){i("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,n=1<=0);var e=t%26,r=(t-e)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var n=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},o.prototype.isubn=function(t){if(i("number"==typeof t),i(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(h/67108864|0),this.words[n+r]=67108863&o}for(;n>26,this.words[n+r]=67108863&o;if(0===a)return this.strip();for(i(-1===a),a=0,n=0;n>26,this.words[n]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(t,e){var r=(this.length,t.length),i=this.clone(),n=t,s=0|n.words[n.length-1];0!=(r=26-this._countBits(s))&&(n=n.ushln(r),i.iushln(r),s=0|n.words[n.length-1]);var a,h=i.length-n.length;if("mod"!==e){(a=new o(null)).length=h+1,a.words=new Array(a.length);for(var u=0;u=0;l--){var d=67108864*(0|i.words[n.length+l])+(0|i.words[n.length+l-1]);for(d=Math.min(d/s|0,67108863),i._ishlnsubmul(n,d,l);0!==i.negative;)d--,i.negative=0,i._ishlnsubmul(n,1,l),i.isZero()||(i.negative^=1);a&&(a.words[l]=d)}return a&&a.strip(),i.strip(),"div"!==e&&0!==r&&i.iushrn(r),{div:a||null,mod:i}},o.prototype.divmod=function(t,e,r){return i(!t.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===t.negative?(a=this.neg().divmod(t,e),"mod"!==e&&(n=a.div.neg()),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(t)),{div:n,mod:s}):0===this.negative&&0!==t.negative?(a=this.divmod(t.neg(),e),"mod"!==e&&(n=a.div.neg()),{div:n,mod:a.mod}):0!=(this.negative&t.negative)?(a=this.neg().divmod(t.neg(),e),"div"!==e&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(t)),{div:a.div,mod:s}):t.length>this.length||this.cmp(t)<0?{div:new o(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new o(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new o(this.modn(t.words[0]))}:this._wordDiv(t,e);var n,s,a},o.prototype.div=function(t){return this.divmod(t,"div",!1).div},o.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},o.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},o.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,i=t.ushrn(1),n=t.andln(1),o=r.cmp(i);return o<0||1===n&&0===o?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},o.prototype.modn=function(t){i(t<=67108863);for(var e=(1<<26)%t,r=0,n=this.length-1;n>=0;n--)r=(e*r+(0|this.words[n]))%t;return r},o.prototype.idivn=function(t){i(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var n=(0|this.words[r])+67108864*e;this.words[r]=n/t|0,e=n%t}return this.strip()},o.prototype.divn=function(t){return this.clone().idivn(t)},o.prototype.egcd=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n=new o(1),s=new o(0),a=new o(0),h=new o(1),u=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++u;for(var c=r.clone(),l=e.clone();!e.isZero();){for(var d=0,f=1;0==(e.words[0]&f)&&d<26;++d,f<<=1);if(d>0)for(e.iushrn(d);d-- >0;)(n.isOdd()||s.isOdd())&&(n.iadd(c),s.isub(l)),n.iushrn(1),s.iushrn(1);for(var A=0,g=1;0==(r.words[0]&g)&&A<26;++A,g<<=1);if(A>0)for(r.iushrn(A);A-- >0;)(a.isOdd()||h.isOdd())&&(a.iadd(c),h.isub(l)),a.iushrn(1),h.iushrn(1);e.cmp(r)>=0?(e.isub(r),n.isub(a),s.isub(h)):(r.isub(e),a.isub(n),h.isub(s))}return{a,b:h,gcd:r.iushln(u)}},o.prototype._invmp=function(t){i(0===t.negative),i(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var n,s=new o(1),a=new o(0),h=r.clone();e.cmpn(1)>0&&r.cmpn(1)>0;){for(var u=0,c=1;0==(e.words[0]&c)&&u<26;++u,c<<=1);if(u>0)for(e.iushrn(u);u-- >0;)s.isOdd()&&s.iadd(h),s.iushrn(1);for(var l=0,d=1;0==(r.words[0]&d)&&l<26;++l,d<<=1);if(l>0)for(r.iushrn(l);l-- >0;)a.isOdd()&&a.iadd(h),a.iushrn(1);e.cmp(r)>=0?(e.isub(r),s.isub(a)):(r.isub(e),a.isub(s))}return(n=0===e.cmpn(1)?s:a).cmpn(0)<0&&n.iadd(t),n},o.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var i=0;e.isEven()&&r.isEven();i++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var n=e.cmp(r);if(n<0){var o=e;e=r,r=o}else if(0===n||0===r.cmpn(1))break;e.isub(r)}return r.iushln(i)},o.prototype.invm=function(t){return this.egcd(t).a.umod(t)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(t){return this.words[0]&t},o.prototype.bincn=function(t){i("number"==typeof t);var e=t%26,r=(t-e)/26,n=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),i(t<=67108863,"Number is too big");var n=0|this.words[0];e=n===t?0:nt.length)return 1;if(this.length=0;r--){var i=0|this.words[r],n=0|t.words[r];if(i!==n){in&&(e=1);break}}return e},o.prototype.gtn=function(t){return 1===this.cmpn(t)},o.prototype.gt=function(t){return 1===this.cmp(t)},o.prototype.gten=function(t){return this.cmpn(t)>=0},o.prototype.gte=function(t){return this.cmp(t)>=0},o.prototype.ltn=function(t){return-1===this.cmpn(t)},o.prototype.lt=function(t){return-1===this.cmp(t)},o.prototype.lten=function(t){return this.cmpn(t)<=0},o.prototype.lte=function(t){return this.cmp(t)<=0},o.prototype.eqn=function(t){return 0===this.cmpn(t)},o.prototype.eq=function(t){return 0===this.cmp(t)},o.red=function(t){return new b(t)},o.prototype.toRed=function(t){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(t){return this.red=t,this},o.prototype.forceRed=function(t){return i(!this.red,"Already a number in reduction context"),this._forceRed(t)},o.prototype.redAdd=function(t){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},o.prototype.redIAdd=function(t){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},o.prototype.redSub=function(t){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},o.prototype.redISub=function(t){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},o.prototype.redShl=function(t){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},o.prototype.redMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},o.prototype.redIMul=function(t){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(t){return i(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var B={k256:null,p224:null,p192:null,p25519:null};function w(t,e){this.name=t,this.p=new o(e,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function E(){w.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function p(){w.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function m(){w.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function y(){w.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function b(t){if("string"==typeof t){var e=o._prime(t);this.m=e.p,this.prime=e}else i(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function Q(t){b.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}w.prototype._tmp=function(){var t=new o(null);return t.words=new Array(Math.ceil(this.n/13)),t},w.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var i=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},w.prototype.split=function(t,e){t.iushrn(this.n,0,e)},w.prototype.imulK=function(t){return t.imul(this.k)},n(E,w),E.prototype.split=function(t,e){for(var r=4194303,i=Math.min(t.length,9),n=0;n>>22,o=s}o>>>=22,t.words[n-10]=o,0===o&&t.length>10?t.length-=10:t.length-=9},E.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=n,e=i}return 0!==e&&(t.words[t.length++]=e),t},o._prime=function(t){if(B[t])return B[t];var e;if("k256"===t)e=new E;else if("p224"===t)e=new p;else if("p192"===t)e=new m;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new y}return B[t]=e,e},b.prototype._verify1=function(t){i(0===t.negative,"red works only with positives"),i(t.red,"red works only with red numbers")},b.prototype._verify2=function(t,e){i(0==(t.negative|e.negative),"red works only with positives"),i(t.red&&t.red===e.red,"red works only with red numbers")},b.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},b.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},b.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},b.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},b.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},b.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},b.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},b.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},b.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},b.prototype.isqr=function(t){return this.imul(t,t.clone())},b.prototype.sqr=function(t){return this.mul(t,t)},b.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(i(e%2==1),3===e){var r=this.m.add(new o(1)).iushrn(2);return this.pow(t,r)}for(var n=this.m.subn(1),s=0;!n.isZero()&&0===n.andln(1);)s++,n.iushrn(1);i(!n.isZero());var a=new o(1).toRed(this),h=a.redNeg(),u=this.m.subn(1).iushrn(1),c=this.m.bitLength();for(c=new o(2*c*c).toRed(this);0!==this.pow(c,u).cmp(h);)c.redIAdd(h);for(var l=this.pow(c,n),d=this.pow(t,n.addn(1).iushrn(1)),f=this.pow(t,n),A=s;0!==f.cmp(a);){for(var g=f,M=0;0!==g.cmp(a);M++)g=g.redSqr();i(M=0;i--){for(var u=e.words[i],c=h-1;c>=0;c--){var l=u>>c&1;n!==r[0]&&(n=this.sqr(n)),0!==l||0!==s?(s<<=1,s|=l,(4==++a||0===i&&0===c)&&(n=this.mul(n,r[s]),a=0,s=0)):a=0}h=26}return n},b.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},b.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},o.mont=function(t){return new Q(t)},n(Q,b),Q.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},Q.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},Q.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),o=n;return n.cmp(this.m)>=0?o=n.isub(this.m):n.cmpn(0)<0&&(o=n.iadd(this.m)),o._forceRed(this)},Q.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new o(0)._forceRed(this);var r=t.mul(e),i=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),n=r.isub(i).iushrn(this.shift),s=n;return n.cmp(this.m)>=0?s=n.isub(this.m):n.cmpn(0)<0&&(s=n.iadd(this.m)),s._forceRed(this)},Q.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},6138:(t,e,r)=>{var i=r(980),n=r(9199),o=r(7859),s=r(2144),a=r(3663),h=r(3482),u=r(4818),c=r(9509).Buffer;t.exports=function(t,e,r){var l;l=t.padding?t.padding:r?1:4;var d,f=i(t),A=f.modulus.byteLength();if(e.length>A||new s(e).cmp(f.modulus)>=0)throw new Error("decryption error");d=r?u(new s(e),f):a(e,f);var g=c.alloc(A-d.length);if(d=c.concat([g,d],A),4===l)return function(t,e){var r=t.modulus.byteLength(),i=h("sha1").update(c.alloc(0)).digest(),s=i.length;if(0!==e[0])throw new Error("decryption error");var a=e.slice(1,s+1),u=e.slice(s+1),l=o(a,n(u,s)),d=o(u,n(l,r-s-1));if(function(t,e){t=c.from(t),e=c.from(e);var r=0,i=t.length;t.length!==e.length&&(r++,i=Math.min(t.length,e.length));for(var n=-1;++n=e.length){o++;break}var s=e.slice(2,n-1);if(("0002"!==i.toString("hex")&&!r||"0001"!==i.toString("hex")&&r)&&o++,s.length<8&&o++,o)throw new Error("decryption error");return e.slice(n)}(0,d,r);if(3===l)return d;throw new Error("unknown padding")}},6559:(t,e,r)=>{var i=r(980),n=r(1798),o=r(3482),s=r(9199),a=r(7859),h=r(2144),u=r(4818),c=r(3663),l=r(9509).Buffer;t.exports=function(t,e,r){var d;d=t.padding?t.padding:r?1:4;var f,A=i(t);if(4===d)f=function(t,e){var r=t.modulus.byteLength(),i=e.length,u=o("sha1").update(l.alloc(0)).digest(),c=u.length,d=2*c;if(i>r-d-2)throw new Error("message too long");var f=l.alloc(r-i-d-2),A=r-c-1,g=n(c),M=a(l.concat([u,f,l.alloc(1,1),e],A),s(g,A)),B=a(g,s(M,c));return new h(l.concat([l.alloc(1),B,M],r))}(A,e);else if(1===d)f=function(t,e,r){var i,o=e.length,s=t.modulus.byteLength();if(o>s-11)throw new Error("message too long");return i=r?l.alloc(s-o-3,255):function(t){for(var e,r=l.allocUnsafe(t),i=0,o=n(2*t),s=0;i=0)throw new Error("data too long for modulus")}return r?c(f,A):u(f,A)}},4818:(t,e,r)=>{var i=r(2144),n=r(9509).Buffer;t.exports=function(t,e){return n.from(t.toRed(i.mont(e.modulus)).redPow(new i(e.publicExponent)).fromRed().toArray())}},7859:t=>{t.exports=function(t,e){for(var r=t.length,i=-1;++i{"use strict";var i=r(4155),n=65536,o=r(9509).Buffer,s=r.g.crypto||r.g.msCrypto;s&&s.getRandomValues?t.exports=function(t,e){if(t>4294967295)throw new RangeError("requested too many random bytes");var r=o.allocUnsafe(t);if(t>0)if(t>n)for(var a=0;a{"use strict";var i=r(4155);function n(){throw new Error("secure random number generation not supported by this browser\nuse chrome, FireFox or Internet Explorer 11")}var o=r(9509),s=r(1798),a=o.Buffer,h=o.kMaxLength,u=r.g.crypto||r.g.msCrypto,c=Math.pow(2,32)-1;function l(t,e){if("number"!=typeof t||t!=t)throw new TypeError("offset must be a number");if(t>c||t<0)throw new TypeError("offset must be a uint32");if(t>h||t>e)throw new RangeError("offset out of range")}function d(t,e,r){if("number"!=typeof t||t!=t)throw new TypeError("size must be a number");if(t>c||t<0)throw new TypeError("size must be a uint32");if(t+e>r||t>h)throw new RangeError("buffer too small")}function f(t,e,r,n){if(i.browser){var o=t.buffer,a=new Uint8Array(o,e,r);return u.getRandomValues(a),n?void i.nextTick((function(){n(null,t)})):t}if(!n)return s(r).copy(t,e),t;s(r,(function(r,i){if(r)return n(r);i.copy(t,e),n(null,t)}))}u&&u.getRandomValues||!i.browser?(e.randomFill=function(t,e,i,n){if(!(a.isBuffer(t)||t instanceof r.g.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');if("function"==typeof e)n=e,e=0,i=t.length;else if("function"==typeof i)n=i,i=t.length-e;else if("function"!=typeof n)throw new TypeError('"cb" argument must be a function');return l(e,t.length),d(i,e,t.length),f(t,e,i,n)},e.randomFillSync=function(t,e,i){if(void 0===e&&(e=0),!(a.isBuffer(t)||t instanceof r.g.Uint8Array))throw new TypeError('"buf" argument must be a Buffer or Uint8Array');return l(e,t.length),void 0===i&&(i=t.length-e),d(i,e,t.length),f(t,e,i)}):(e.randomFill=n,e.randomFillSync=n)},4281:t=>{"use strict";var e={};function r(t,r,i){i||(i=Error);var n=function(t){var e,i;function n(e,i,n){return t.call(this,function(t,e,i){return"string"==typeof r?r:r(t,e,i)}(e,i,n))||this}return i=t,(e=n).prototype=Object.create(i.prototype),e.prototype.constructor=e,e.__proto__=i,n}(i);n.prototype.name=i.name,n.prototype.code=t,e[t]=n}function i(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map((function(t){return String(t)})),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",(function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'}),TypeError),r("ERR_INVALID_ARG_TYPE",(function(t,e,r){var n,o,s,a,h;if("string"==typeof e&&(o="not ",e.substr(0,o.length)===o)?(n="must not be",e=e.replace(/^not /,"")):n="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}(t," argument"))s="The ".concat(t," ").concat(n," ").concat(i(e,"type"));else{var u=("number"!=typeof h&&(h=0),h+".".length>(a=t).length||-1===a.indexOf(".",h)?"argument":"property");s='The "'.concat(t,'" ').concat(u," ").concat(n," ").concat(i(e,"type"))}return s+". Received type ".concat(typeof r)}),TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",(function(t){return"The "+t+" method is not implemented"})),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",(function(t){return"Cannot call "+t+" after a stream was destroyed"})),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",(function(t){return"Unknown encoding: "+t}),TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.q=e},6753:(t,e,r)=>{"use strict";var i=r(4155),n=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=c;var o=r(9481),s=r(4229);r(5717)(c,o);for(var a=n(s.prototype),h=0;h{"use strict";t.exports=n;var i=r(4605);function n(t){if(!(this instanceof n))return new n(t);i.call(this,t)}r(5717)(n,i),n.prototype._transform=function(t,e,r){r(null,t)}},9481:(t,e,r)=>{"use strict";var i,n=r(4155);t.exports=I,I.ReadableState=Q,r(7187).EventEmitter;var o,s=function(t,e){return t.listeners(e).length},a=r(2503),h=r(8764).Buffer,u=r.g.Uint8Array||function(){},c=r(4616);o=c&&c.debuglog?c.debuglog("stream"):function(){};var l,d,f,A=r(7327),g=r(1195),M=r(2457).getHighWaterMark,B=r(4281).q,w=B.ERR_INVALID_ARG_TYPE,E=B.ERR_STREAM_PUSH_AFTER_EOF,p=B.ERR_METHOD_NOT_IMPLEMENTED,m=B.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;r(5717)(I,a);var y=g.errorOrDestroy,b=["error","close","destroy","pause","resume"];function Q(t,e,n){i=i||r(6753),t=t||{},"boolean"!=typeof n&&(n=e instanceof i),this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=M(this,t,"readableHighWaterMark",n),this.buffer=new A,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.destroyed=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(l||(l=r(2553).s),this.decoder=new l(t.encoding),this.encoding=t.encoding)}function I(t){if(i=i||r(6753),!(this instanceof I))return new I(t);var e=this instanceof i;this._readableState=new Q(t,this,e),this.readable=!0,t&&("function"==typeof t.read&&(this._read=t.read),"function"==typeof t.destroy&&(this._destroy=t.destroy)),a.call(this)}function C(t,e,r,i,n){o("readableAddChunk",e);var s,a=t._readableState;if(null===e)a.reading=!1,function(t,e){if(o("onEofChunk"),!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,e.sync?G(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,R(t)))}}(t,a);else if(n||(s=function(t,e){var r,i;return i=e,h.isBuffer(i)||i instanceof u||"string"==typeof e||void 0===e||t.objectMode||(r=new w("chunk",["string","Buffer","Uint8Array"],e)),r}(a,e)),s)y(t,s);else if(a.objectMode||e&&e.length>0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===h.prototype||(e=function(t){return h.from(t)}(e)),i)a.endEmitted?y(t,new m):D(t,a,e,!0);else if(a.ended)y(t,new E);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?D(t,a,e,!1):Y(t,a)):D(t,a,e,!1)}else i||(a.reading=!1,Y(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=N?t=N:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function G(t){var e=t._readableState;o("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(o("emitReadable",e.flowing),e.emittedReadable=!0,n.nextTick(R,t))}function R(t){var e=t._readableState;o("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,k(t)}function Y(t,e){e.readingMore||(e.readingMore=!0,n.nextTick(U,t,e))}function U(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function T(t){o("readable nexttick read 0"),t.read(0)}function S(t,e){o("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),k(t),e.flowing&&!e.reading&&t.read(0)}function k(t){var e=t._readableState;for(o("flow",e.flowing);e.flowing&&null!==t.read(););}function F(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function L(t){var e=t._readableState;o("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,n.nextTick(j,e,t))}function j(t,e){if(o("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function Z(t,e){for(var r=0,i=t.length;r=e.highWaterMark:e.length>0)||e.ended))return o("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?L(this):G(this),null;if(0===(t=v(t,e))&&e.ended)return 0===e.length&&L(this),null;var i,n=e.needReadable;return o("need readable",n),(0===e.length||e.length-t0?F(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&L(this)),null!==i&&this.emit("data",i),i},I.prototype._read=function(t){y(this,new p("_read()"))},I.prototype.pipe=function(t,e){var r=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=t;break;case 1:i.pipes=[i.pipes,t];break;default:i.pipes.push(t)}i.pipesCount+=1,o("pipe count=%d opts=%j",i.pipesCount,e);var a=e&&!1===e.end||t===n.stdout||t===n.stderr?g:h;function h(){o("onend"),t.end()}i.endEmitted?n.nextTick(a):r.once("end",a),t.on("unpipe",(function e(n,s){o("onunpipe"),n===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,o("cleanup"),t.removeListener("close",f),t.removeListener("finish",A),t.removeListener("drain",u),t.removeListener("error",d),t.removeListener("unpipe",e),r.removeListener("end",h),r.removeListener("end",g),r.removeListener("data",l),c=!0,!i.awaitDrain||t._writableState&&!t._writableState.needDrain||u())}));var u=function(t){return function(){var e=t._readableState;o("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,k(t))}}(r);t.on("drain",u);var c=!1;function l(e){o("ondata");var n=t.write(e);o("dest.write",n),!1===n&&((1===i.pipesCount&&i.pipes===t||i.pipesCount>1&&-1!==Z(i.pipes,t))&&!c&&(o("false write response, pause",i.awaitDrain),i.awaitDrain++),r.pause())}function d(e){o("onerror",e),g(),t.removeListener("error",d),0===s(t,"error")&&y(t,e)}function f(){t.removeListener("finish",A),g()}function A(){o("onfinish"),t.removeListener("close",f),g()}function g(){o("unpipe"),r.unpipe(t)}return r.on("data",l),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events.error?Array.isArray(t._events.error)?t._events.error.unshift(r):t._events.error=[r,t._events.error]:t.on(e,r)}(t,"error",d),t.once("close",f),t.once("finish",A),t.emit("pipe",r),i.flowing||(o("pipe resume"),r.resume()),t},I.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var i=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var o=0;o0,!1!==i.flowing&&this.resume()):"readable"===t&&(i.endEmitted||i.readableListening||(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,o("on readable",i.length,i.reading),i.length?G(this):i.reading||n.nextTick(T,this))),r},I.prototype.addListener=I.prototype.on,I.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&n.nextTick(V,this),r},I.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||n.nextTick(V,this),e},I.prototype.resume=function(){var t=this._readableState;return t.flowing||(o("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,n.nextTick(S,t,e))}(this,t)),t.paused=!1,this},I.prototype.pause=function(){return o("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(o("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},I.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;for(var n in t.on("end",(function(){if(o("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on("data",(function(n){o("wrapped data"),r.decoder&&(n=r.decoder.write(n)),r.objectMode&&null==n||(r.objectMode||n&&n.length)&&(e.push(n)||(i=!0,t.pause()))})),t)void 0===this[n]&&"function"==typeof t[n]&&(this[n]=function(e){return function(){return t[e].apply(t,arguments)}}(n));for(var s=0;s{"use strict";t.exports=c;var i=r(4281).q,n=i.ERR_METHOD_NOT_IMPLEMENTED,o=i.ERR_MULTIPLE_CALLBACK,s=i.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=i.ERR_TRANSFORM_WITH_LENGTH_0,h=r(6753);function u(t,e){var r=this._transformState;r.transforming=!1;var i=r.writecb;if(null===i)return this.emit("error",new o);r.writechunk=null,r.writecb=null,null!=e&&this.push(e),i(t);var n=this._readableState;n.reading=!1,(n.needReadable||n.length{"use strict";var i,n=r(4155);function o(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e,r){var i=t.entry;for(t.entry=null;i;){var n=i.callback;e.pendingcb--,n(undefined),i=i.next}e.corkedRequestsFree.next=t}(e,t)}}t.exports=I,I.WritableState=Q;var s,a={deprecate:r(4927)},h=r(2503),u=r(8764).Buffer,c=r.g.Uint8Array||function(){},l=r(1195),d=r(2457).getHighWaterMark,f=r(4281).q,A=f.ERR_INVALID_ARG_TYPE,g=f.ERR_METHOD_NOT_IMPLEMENTED,M=f.ERR_MULTIPLE_CALLBACK,B=f.ERR_STREAM_CANNOT_PIPE,w=f.ERR_STREAM_DESTROYED,E=f.ERR_STREAM_NULL_VALUES,p=f.ERR_STREAM_WRITE_AFTER_END,m=f.ERR_UNKNOWN_ENCODING,y=l.errorOrDestroy;function b(){}function Q(t,e,s){i=i||r(6753),t=t||{},"boolean"!=typeof s&&(s=e instanceof i),this.objectMode=!!t.objectMode,s&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=d(this,t,"writableHighWaterMark",s),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===t.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,i=r.sync,o=r.writecb;if("function"!=typeof o)throw new M;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,i,o){--e.pendingcb,r?(n.nextTick(o,i),n.nextTick(R,t,e),t._writableState.errorEmitted=!0,y(t,i)):(o(i),t._writableState.errorEmitted=!0,y(t,i),R(t,e))}(t,r,i,e,o);else{var s=v(r)||t.destroyed;s||r.corked||r.bufferProcessing||!r.bufferedRequest||N(t,r),i?n.nextTick(D,t,r,s,o):D(t,r,s,o)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new o(this)}function I(t){var e=this instanceof(i=i||r(6753));if(!e&&!s.call(I,this))return new I(t);this._writableState=new Q(t,this,e),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),h.call(this)}function C(t,e,r,i,n,o,s){e.writelen=i,e.writecb=s,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new w("write")):r?t._writev(n,e.onwrite):t._write(n,o,e.onwrite),e.sync=!1}function D(t,e,r,i){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,i(),R(t,e)}function N(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var i=e.bufferedRequestCount,n=new Array(i),s=e.corkedRequestsFree;s.entry=r;for(var a=0,h=!0;r;)n[a]=r,r.isBuf||(h=!1),r=r.next,a+=1;n.allBuffers=h,C(t,e,!0,e.length,n,"",s.finish),e.pendingcb++,e.lastBufferedRequest=null,s.next?(e.corkedRequestsFree=s.next,s.next=null):e.corkedRequestsFree=new o(e),e.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,c=r.encoding,l=r.callback;if(C(t,e,!1,e.objectMode?1:u.length,u,c,l),r=r.next,e.bufferedRequestCount--,e.writing)break}null===r&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}function v(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function G(t,e){t._final((function(r){e.pendingcb--,r&&y(t,r),e.prefinished=!0,t.emit("prefinish"),R(t,e)}))}function R(t,e){var r=v(e);if(r&&(function(t,e){e.prefinished||e.finalCalled||("function"!=typeof t._final||e.destroyed?(e.prefinished=!0,t.emit("prefinish")):(e.pendingcb++,e.finalCalled=!0,n.nextTick(G,t,e)))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"),e.autoDestroy))){var i=t._readableState;(!i||i.autoDestroy&&i.endEmitted)&&t.destroy()}return r}r(5717)(I,h),Q.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(Q.prototype,"buffer",{get:a.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(t){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(s=Function.prototype[Symbol.hasInstance],Object.defineProperty(I,Symbol.hasInstance,{value:function(t){return!!s.call(this,t)||this===I&&t&&t._writableState instanceof Q}})):s=function(t){return t instanceof this},I.prototype.pipe=function(){y(this,new B)},I.prototype.write=function(t,e,r){var i,o=this._writableState,s=!1,a=!o.objectMode&&(i=t,u.isBuffer(i)||i instanceof c);return a&&!u.isBuffer(t)&&(t=function(t){return u.from(t)}(t)),"function"==typeof e&&(r=e,e=null),a?e="buffer":e||(e=o.defaultEncoding),"function"!=typeof r&&(r=b),o.ending?function(t,e){var r=new p;y(t,r),n.nextTick(e,r)}(this,r):(a||function(t,e,r,i){var o;return null===r?o=new E:"string"==typeof r||e.objectMode||(o=new A("chunk",["string","Buffer"],r)),!o||(y(t,o),n.nextTick(i,o),!1)}(this,o,t,r))&&(o.pendingcb++,s=function(t,e,r,i,n,o){if(!r){var s=function(t,e,r){return t.objectMode||!1===t.decodeStrings||"string"!=typeof e||(e=u.from(e,r)),e}(e,i,n);i!==s&&(r=!0,n="buffer",i=s)}var a=e.objectMode?1:i.length;e.length+=a;var h=e.length-1))throw new m(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(I.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(I.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),I.prototype._write=function(t,e,r){r(new g("_write()"))},I.prototype._writev=null,I.prototype.end=function(t,e,r){var i=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),i.corked&&(i.corked=1,this.uncork()),i.ending||function(t,e,r){e.ending=!0,R(t,e),r&&(e.finished?n.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,i,r),this},Object.defineProperty(I.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(I.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),I.prototype.destroy=l.destroy,I.prototype._undestroy=l.undestroy,I.prototype._destroy=function(t,e){e(t)}},5850:(t,e,r)=>{"use strict";var i,n=r(4155);function o(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(8610),a=Symbol("lastResolve"),h=Symbol("lastReject"),u=Symbol("error"),c=Symbol("ended"),l=Symbol("lastPromise"),d=Symbol("handlePromise"),f=Symbol("stream");function A(t,e){return{value:t,done:e}}function g(t){var e=t[a];if(null!==e){var r=t[f].read();null!==r&&(t[l]=null,t[a]=null,t[h]=null,e(A(r,!1)))}}function M(t){n.nextTick(g,t)}var B=Object.getPrototypeOf((function(){})),w=Object.setPrototypeOf((o(i={get stream(){return this[f]},next:function(){var t=this,e=this[u];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(A(void 0,!0));if(this[f].destroyed)return new Promise((function(e,r){n.nextTick((function(){t[u]?r(t[u]):e(A(void 0,!0))}))}));var r,i=this[l];if(i)r=new Promise(function(t,e){return function(r,i){t.then((function(){e[c]?r(A(void 0,!0)):e[d](r,i)}),i)}}(i,this));else{var o=this[f].read();if(null!==o)return Promise.resolve(A(o,!1));r=new Promise(this[d])}return this[l]=r,r}},Symbol.asyncIterator,(function(){return this})),o(i,"return",(function(){var t=this;return new Promise((function(e,r){t[f].destroy(null,(function(t){t?r(t):e(A(void 0,!0))}))}))})),i),B);t.exports=function(t){var e,r=Object.create(w,(o(e={},f,{value:t,writable:!0}),o(e,a,{value:null,writable:!0}),o(e,h,{value:null,writable:!0}),o(e,u,{value:null,writable:!0}),o(e,c,{value:t._readableState.endEmitted,writable:!0}),o(e,d,{value:function(t,e){var i=r[f].read();i?(r[l]=null,r[a]=null,r[h]=null,t(A(i,!1))):(r[a]=t,r[h]=e)},writable:!0}),e));return r[l]=null,s(t,(function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[h];return null!==e&&(r[l]=null,r[a]=null,r[h]=null,e(t)),void(r[u]=t)}var i=r[a];null!==i&&(r[l]=null,r[a]=null,r[h]=null,i(A(void 0,!0))),r[c]=!0})),t.on("readable",M.bind(null,r)),r}},7327:(t,e,r)=>{"use strict";function i(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,i)}return r}function n(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function o(t,e){for(var r=0;r0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return s.alloc(0);for(var e,r,i,n=s.allocUnsafe(t>>>0),o=this.head,a=0;o;)e=o.data,r=n,i=a,s.prototype.copy.call(e,r,i),a+=o.data.length,o=o.next;return n}},{key:"consume",value:function(t,e){var r;return tn.length?n.length:t;if(o===n.length?i+=n:i+=n.slice(0,t),0==(t-=o)){o===n.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=n.slice(o));break}++r}return this.length-=r,i}},{key:"_getBuffer",value:function(t){var e=s.allocUnsafe(t),r=this.head,i=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var n=r.data,o=t>n.length?n.length:t;if(n.copy(e,e.length-t,0,o),0==(t-=o)){o===n.length?(++i,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=n.slice(o));break}++i}return this.length-=i,e}},{key:h,value:function(t,e){return a(this,function(t){for(var e=1;e{"use strict";var i=r(4155);function n(t,e){s(t,e),o(t)}function o(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,h=this._writableState&&this._writableState.destroyed;return a||h?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,i.nextTick(s,this,t)):i.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,(function(t){!e&&t?r._writableState?r._writableState.errorEmitted?i.nextTick(o,r):(r._writableState.errorEmitted=!0,i.nextTick(n,r,t)):i.nextTick(n,r,t):e?(i.nextTick(o,r),e(t)):i.nextTick(o,r)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(t,e){var r=t._readableState,i=t._writableState;r&&r.autoDestroy||i&&i.autoDestroy?t.destroy(e):t.emit("error",e)}}},8610:(t,e,r)=>{"use strict";var i=r(4281).q.ERR_STREAM_PREMATURE_CLOSE;function n(){}t.exports=function t(e,r,o){if("function"==typeof r)return t(e,null,r);r||(r={}),o=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,i=new Array(r),n=0;n{t.exports=function(){throw new Error("Readable.from is not available in the browser")}},9946:(t,e,r)=>{"use strict";var i,n=r(4281).q,o=n.ERR_MISSING_ARGS,s=n.ERR_STREAM_DESTROYED;function a(t){if(t)throw t}function h(t,e,n,o){o=function(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}(o);var a=!1;t.on("close",(function(){a=!0})),void 0===i&&(i=r(8610)),i(t,{readable:e,writable:n},(function(t){if(t)return o(t);a=!0,o()}));var h=!1;return function(e){if(!a&&!h)return h=!0,function(t){return t.setHeader&&"function"==typeof t.abort}(t)?t.abort():"function"==typeof t.destroy?t.destroy():void o(e||new s("pipe"))}}function u(t){t()}function c(t,e){return t.pipe(e)}function l(t){return t.length?"function"!=typeof t[t.length-1]?a:t.pop():a}t.exports=function(){for(var t=arguments.length,e=new Array(t),r=0;r0,(function(t){i||(i=t),t&&s.forEach(u),o||(s.forEach(u),n(i))}))}));return e.reduce(c)}},2457:(t,e,r)=>{"use strict";var i=r(4281).q.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,n){var o=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,n,r);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new i(n?r:"highWaterMark",o);return Math.floor(o)}return t.objectMode?16:16384}}},2503:(t,e,r)=>{t.exports=r(7187).EventEmitter},8473:(t,e,r)=>{(e=t.exports=r(9481)).Stream=e,e.Readable=e,e.Writable=r(4229),e.Duplex=r(6753),e.Transform=r(4605),e.PassThrough=r(2725),e.finished=r(8610),e.pipeline=r(9946)},9785:(t,e,r)=>{"use strict";var i=r(8764).Buffer,n=r(5717),o=r(3349),s=new Array(16),a=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],h=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],u=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],c=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],l=[0,1518500249,1859775393,2400959708,2840853838],d=[1352829926,1548603684,1836072691,2053994217,0];function f(){o.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function A(t,e){return t<>>32-e}function g(t,e,r,i,n,o,s,a){return A(t+(e^r^i)+o+s|0,a)+n|0}function M(t,e,r,i,n,o,s,a){return A(t+(e&r|~e&i)+o+s|0,a)+n|0}function B(t,e,r,i,n,o,s,a){return A(t+((e|~r)^i)+o+s|0,a)+n|0}function w(t,e,r,i,n,o,s,a){return A(t+(e&i|r&~i)+o+s|0,a)+n|0}function E(t,e,r,i,n,o,s,a){return A(t+(e^(r|~i))+o+s|0,a)+n|0}n(f,o),f.prototype._update=function(){for(var t=s,e=0;e<16;++e)t[e]=this._block.readInt32LE(4*e);for(var r=0|this._a,i=0|this._b,n=0|this._c,o=0|this._d,f=0|this._e,p=0|this._a,m=0|this._b,y=0|this._c,b=0|this._d,Q=0|this._e,I=0;I<80;I+=1){var C,D;I<16?(C=g(r,i,n,o,f,t[a[I]],l[0],u[I]),D=E(p,m,y,b,Q,t[h[I]],d[0],c[I])):I<32?(C=M(r,i,n,o,f,t[a[I]],l[1],u[I]),D=w(p,m,y,b,Q,t[h[I]],d[1],c[I])):I<48?(C=B(r,i,n,o,f,t[a[I]],l[2],u[I]),D=B(p,m,y,b,Q,t[h[I]],d[2],c[I])):I<64?(C=w(r,i,n,o,f,t[a[I]],l[3],u[I]),D=M(p,m,y,b,Q,t[h[I]],d[3],c[I])):(C=E(r,i,n,o,f,t[a[I]],l[4],u[I]),D=g(p,m,y,b,Q,t[h[I]],d[4],c[I])),r=f,f=o,o=A(n,10),n=i,i=C,p=Q,Q=b,b=A(y,10),y=m,m=D}var N=this._b+n+b|0;this._b=this._c+o+Q|0,this._c=this._d+f+p|0,this._d=this._e+r+m|0,this._e=this._a+i+y|0,this._a=N},f.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var t=i.alloc?i.alloc(20):new i(20);return t.writeInt32LE(this._a,0),t.writeInt32LE(this._b,4),t.writeInt32LE(this._c,8),t.writeInt32LE(this._d,12),t.writeInt32LE(this._e,16),t},t.exports=f},9509:(t,e,r)=>{var i=r(8764),n=i.Buffer;function o(t,e){for(var r in t)e[r]=t[r]}function s(t,e,r){return n(t,e,r)}n.from&&n.alloc&&n.allocUnsafe&&n.allocUnsafeSlow?t.exports=i:(o(i,e),e.Buffer=s),s.prototype=Object.create(n.prototype),o(n,s),s.from=function(t,e,r){if("number"==typeof t)throw new TypeError("Argument must not be a number");return n(t,e,r)},s.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError("Argument must be a number");var i=n(t);return void 0!==e?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i},s.allocUnsafe=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return n(t)},s.allocUnsafeSlow=function(t){if("number"!=typeof t)throw new TypeError("Argument must be a number");return i.SlowBuffer(t)}},2399:(t,e,r)=>{"use strict";var i,n=r(4155),o=r(8764),s=o.Buffer,a={};for(i in o)o.hasOwnProperty(i)&&"SlowBuffer"!==i&&"Buffer"!==i&&(a[i]=o[i]);var h=a.Buffer={};for(i in s)s.hasOwnProperty(i)&&"allocUnsafe"!==i&&"allocUnsafeSlow"!==i&&(h[i]=s[i]);if(a.Buffer.prototype=s.prototype,h.from&&h.from!==Uint8Array.from||(h.from=function(t,e,r){if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&void 0===t.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return s(t,e,r)}),h.alloc||(h.alloc=function(t,e,r){if("number"!=typeof t)throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var i=s(t);return e&&0!==e.length?"string"==typeof r?i.fill(e,r):i.fill(e):i.fill(0),i}),!a.kStringMaxLength)try{a.kStringMaxLength=n.binding("buffer").kStringMaxLength}catch(t){}a.constants||(a.constants={MAX_LENGTH:a.kMaxLength},a.kStringMaxLength&&(a.constants.MAX_STRING_LENGTH=a.kStringMaxLength)),t.exports=a},4189:(t,e,r)=>{var i=r(9509).Buffer;function n(t,e){this._block=i.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}n.prototype.update=function(t,e){"string"==typeof t&&(e=e||"utf8",t=i.from(t,e));for(var r=this._block,n=this._blockSize,o=t.length,s=this._len,a=0;a=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(4294967295&r)>>>0,n=(r-i)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var o=this._hash();return t?o.toString(t):o},n.prototype._update=function(){throw new Error("_update must be implemented by subclass")},t.exports=n},9072:(t,e,r)=>{var i=t.exports=function(t){t=t.toLowerCase();var e=i[t];if(!e)throw new Error(t+" is not supported (we accept pull requests)");return new e};i.sha=r(4448),i.sha1=r(8336),i.sha224=r(8432),i.sha256=r(7499),i.sha384=r(1686),i.sha512=r(7816)},4448:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t){return t<<30|t>>>2}function c(t,e,r,i){return 0===t?e&r|~e&i:2===t?e&r|e&i|r&i:e^r^i}i(h,n),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,l=0;l<16;++l)r[l]=t.readInt32BE(4*l);for(;l<80;++l)r[l]=r[l-3]^r[l-8]^r[l-14]^r[l-16];for(var d=0;d<80;++d){var f=~~(d/20),A=0|((e=i)<<5|e>>>27)+c(f,n,o,a)+h+r[d]+s[f];h=a,a=o,o=u(n),n=i,i=A}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0},h.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=h},8336:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t){return t<<5|t>>>27}function c(t){return t<<30|t>>>2}function l(t,e,r,i){return 0===t?e&r|~e&i:2===t?e&r|e&i|r&i:e^r^i}i(h,n),h.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,d=0;d<16;++d)r[d]=t.readInt32BE(4*d);for(;d<80;++d)r[d]=(e=r[d-3]^r[d-8]^r[d-14]^r[d-16])<<1|e>>>31;for(var f=0;f<80;++f){var A=~~(f/20),g=u(i)+l(A,n,o,a)+h+r[f]+s[A]|0;h=a,a=o,o=c(n),n=i,i=g}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0},h.prototype._hash=function(){var t=o.allocUnsafe(20);return t.writeInt32BE(0|this._a,0),t.writeInt32BE(0|this._b,4),t.writeInt32BE(0|this._c,8),t.writeInt32BE(0|this._d,12),t.writeInt32BE(0|this._e,16),t},t.exports=h},8432:(t,e,r)=>{var i=r(5717),n=r(7499),o=r(4189),s=r(9509).Buffer,a=new Array(64);function h(){this.init(),this._w=a,o.call(this,64,56)}i(h,n),h.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},h.prototype._hash=function(){var t=s.allocUnsafe(28);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t},t.exports=h},7499:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],a=new Array(64);function h(){this.init(),this._w=a,n.call(this,64,56)}function u(t,e,r){return r^t&(e^r)}function c(t,e,r){return t&e|r&(t|e)}function l(t){return(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10)}function d(t){return(t>>>6|t<<26)^(t>>>11|t<<21)^(t>>>25|t<<7)}function f(t){return(t>>>7|t<<25)^(t>>>18|t<<14)^t>>>3}i(h,n),h.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},h.prototype._update=function(t){for(var e,r=this._w,i=0|this._a,n=0|this._b,o=0|this._c,a=0|this._d,h=0|this._e,A=0|this._f,g=0|this._g,M=0|this._h,B=0;B<16;++B)r[B]=t.readInt32BE(4*B);for(;B<64;++B)r[B]=0|(((e=r[B-2])>>>17|e<<15)^(e>>>19|e<<13)^e>>>10)+r[B-7]+f(r[B-15])+r[B-16];for(var w=0;w<64;++w){var E=M+d(h)+u(h,A,g)+s[w]+r[w]|0,p=l(i)+c(i,n,o)|0;M=g,g=A,A=h,h=a+E|0,a=o,o=n,n=i,i=E+p|0}this._a=i+this._a|0,this._b=n+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=h+this._e|0,this._f=A+this._f|0,this._g=g+this._g|0,this._h=M+this._h|0},h.prototype._hash=function(){var t=o.allocUnsafe(32);return t.writeInt32BE(this._a,0),t.writeInt32BE(this._b,4),t.writeInt32BE(this._c,8),t.writeInt32BE(this._d,12),t.writeInt32BE(this._e,16),t.writeInt32BE(this._f,20),t.writeInt32BE(this._g,24),t.writeInt32BE(this._h,28),t},t.exports=h},1686:(t,e,r)=>{var i=r(5717),n=r(7816),o=r(4189),s=r(9509).Buffer,a=new Array(160);function h(){this.init(),this._w=a,o.call(this,128,112)}i(h,n),h.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},h.prototype._hash=function(){var t=s.allocUnsafe(48);function e(e,r,i){t.writeInt32BE(e,i),t.writeInt32BE(r,i+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),t},t.exports=h},7816:(t,e,r)=>{var i=r(5717),n=r(4189),o=r(9509).Buffer,s=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],a=new Array(160);function h(){this.init(),this._w=a,n.call(this,128,112)}function u(t,e,r){return r^t&(e^r)}function c(t,e,r){return t&e|r&(t|e)}function l(t,e){return(t>>>28|e<<4)^(e>>>2|t<<30)^(e>>>7|t<<25)}function d(t,e){return(t>>>14|e<<18)^(t>>>18|e<<14)^(e>>>9|t<<23)}function f(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^t>>>7}function A(t,e){return(t>>>1|e<<31)^(t>>>8|e<<24)^(t>>>7|e<<25)}function g(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^t>>>6}function M(t,e){return(t>>>19|e<<13)^(e>>>29|t<<3)^(t>>>6|e<<26)}function B(t,e){return t>>>0>>0?1:0}i(h,n),h.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},h.prototype._update=function(t){for(var e=this._w,r=0|this._ah,i=0|this._bh,n=0|this._ch,o=0|this._dh,a=0|this._eh,h=0|this._fh,w=0|this._gh,E=0|this._hh,p=0|this._al,m=0|this._bl,y=0|this._cl,b=0|this._dl,Q=0|this._el,I=0|this._fl,C=0|this._gl,D=0|this._hl,N=0;N<32;N+=2)e[N]=t.readInt32BE(4*N),e[N+1]=t.readInt32BE(4*N+4);for(;N<160;N+=2){var v=e[N-30],G=e[N-30+1],R=f(v,G),Y=A(G,v),U=g(v=e[N-4],G=e[N-4+1]),V=M(G,v),T=e[N-14],S=e[N-14+1],k=e[N-32],F=e[N-32+1],L=Y+S|0,j=R+T+B(L,Y)|0;j=(j=j+U+B(L=L+V|0,V)|0)+k+B(L=L+F|0,F)|0,e[N]=j,e[N+1]=L}for(var Z=0;Z<160;Z+=2){j=e[Z],L=e[Z+1];var H=c(r,i,n),z=c(p,m,y),x=l(r,p),O=l(p,r),W=d(a,Q),J=d(Q,a),X=s[Z],K=s[Z+1],P=u(a,h,w),_=u(Q,I,C),q=D+J|0,$=E+W+B(q,D)|0;$=($=($=$+P+B(q=q+_|0,_)|0)+X+B(q=q+K|0,K)|0)+j+B(q=q+L|0,L)|0;var tt=O+z|0,et=x+H+B(tt,O)|0;E=w,D=C,w=h,C=I,h=a,I=Q,a=o+$+B(Q=b+q|0,b)|0,o=n,b=y,n=i,y=m,i=r,m=p,r=$+et+B(p=q+tt|0,q)|0}this._al=this._al+p|0,this._bl=this._bl+m|0,this._cl=this._cl+y|0,this._dl=this._dl+b|0,this._el=this._el+Q|0,this._fl=this._fl+I|0,this._gl=this._gl+C|0,this._hl=this._hl+D|0,this._ah=this._ah+r+B(this._al,p)|0,this._bh=this._bh+i+B(this._bl,m)|0,this._ch=this._ch+n+B(this._cl,y)|0,this._dh=this._dh+o+B(this._dl,b)|0,this._eh=this._eh+a+B(this._el,Q)|0,this._fh=this._fh+h+B(this._fl,I)|0,this._gh=this._gh+w+B(this._gl,C)|0,this._hh=this._hh+E+B(this._hl,D)|0},h.prototype._hash=function(){var t=o.allocUnsafe(64);function e(e,r,i){t.writeInt32BE(e,i),t.writeInt32BE(r,i+4)}return e(this._ah,this._al,0),e(this._bh,this._bl,8),e(this._ch,this._cl,16),e(this._dh,this._dl,24),e(this._eh,this._el,32),e(this._fh,this._fl,40),e(this._gh,this._gl,48),e(this._hh,this._hl,56),t},t.exports=h},2830:(t,e,r)=>{t.exports=n;var i=r(7187).EventEmitter;function n(){i.call(this)}r(5717)(n,i),n.Readable=r(9481),n.Writable=r(4229),n.Duplex=r(6753),n.Transform=r(4605),n.PassThrough=r(2725),n.finished=r(8610),n.pipeline=r(9946),n.Stream=n,n.prototype.pipe=function(t,e){var r=this;function n(e){t.writable&&!1===t.write(e)&&r.pause&&r.pause()}function o(){r.readable&&r.resume&&r.resume()}r.on("data",n),t.on("drain",o),t._isStdio||e&&!1===e.end||(r.on("end",a),r.on("close",h));var s=!1;function a(){s||(s=!0,t.end())}function h(){s||(s=!0,"function"==typeof t.destroy&&t.destroy())}function u(t){if(c(),0===i.listenerCount(this,"error"))throw t}function c(){r.removeListener("data",n),t.removeListener("drain",o),r.removeListener("end",a),r.removeListener("close",h),r.removeListener("error",u),t.removeListener("error",u),r.removeListener("end",c),r.removeListener("close",c),t.removeListener("close",c)}return r.on("error",u),t.on("error",u),r.on("end",c),r.on("close",c),t.on("close",c),t.emit("pipe",r),t}},2553:(t,e,r)=>{"use strict";var i=r(9509).Buffer,n=i.isEncoding||function(t){switch((t=""+t)&&t.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(t){var e;switch(this.encoding=function(t){var e=function(t){if(!t)return"utf8";for(var e;;)switch(t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:if(e)return;t=(""+t).toLowerCase(),e=!0}}(t);if("string"!=typeof e&&(i.isEncoding===n||!n(t)))throw new Error("Unknown encoding: "+t);return e||t}(t),this.encoding){case"utf16le":this.text=h,this.end=u,e=4;break;case"utf8":this.fillLast=a,e=4;break;case"base64":this.text=c,this.end=l,e=3;break;default:return this.write=d,void(this.end=f)}this.lastNeed=0,this.lastTotal=0,this.lastChar=i.allocUnsafe(e)}function s(t){return t<=127?0:t>>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e,r){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function h(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var i=r.charCodeAt(r.length-1);if(i>=55296&&i<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function u(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function c(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function l(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function d(t){return t.toString(this.encoding)}function f(t){return t&&t.length?this.write(t):""}e.s=o,o.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(n>0&&(t.lastNeed=n-1),n):--i=0?(n>0&&(t.lastNeed=n-2),n):--i=0?(n>0&&(2===n?n=0:t.lastNeed=n-3),n):0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var i=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,i),t.toString("utf8",e,i)},o.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}},8677:(t,e,r)=>{"use strict";var i=r(5581),n=r(8469),o=r.n(n),s=r(2635),a=r.n(s);const h=JSON.parse('{"$":[{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_007","notbefore":1646866800000,"notafter":1710025200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXJGIIZHZOHRSV3CdXUpGpZ9660BB\\n+15fkJgO8Rk8H+TlqeSYvBIfeRK+hVpc9GzUcFiKiPU0jbXZ0rorqNyxfg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUetGukHDBgpqpT82eXBBZwkWqlCEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMwOTIzMDAwMFoXDTI0MDMwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXJGIIZHZOHRSV3CdXUpGpZ9660BB+15fkJgO8Rk8H+TlqeSYvBIfeRK+hVpc9GzUcFiKiPU0jbXZ0rorqNyxfqOB4DCB3TAdBgNVHQ4EFgQU9yU3/1u14+b8LpUG5bc2f7rCXJswHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQAPO0+DbQ5zIkFbECIN+SGoH7m/1j6HgDFAze4go1Idf5U3n8ua3wFwf9Tj2knGigSHSkBgFK7UKIlkFz4aotljp4/ZU4iKGuTn0oo6XT7eEi/KQlNHZHkxtSO9TQCRHw0KigXG5pA8cqSWcC9coYr57+4t82F67WNHoi2x6seN+sgIZxZiLuBNMjoibwnT5leJKLAwClYOtCpoFSzAZf7cTeZVmCymHaoeHx56ftOdXBUoMjBTMFRQEP598lauU2W1FZOwucbOSIsk3lpAhhG+akzEJJdBqo7nS7XrFRlxinvV7shia90RkGBdyNIo4zU8glgiDSIvZQQbvOuFcMZPxxANdaD5UMLEXb0cW1ypGW+r9s/bUwRghQT4vDNHoy7WqBSPgybuJT+WbbGnzeKtQeSnJU0sBCG7KT4mZbsWNGY4m02JC4MZz/DD5aRx9izz5bw1Tm1U61yE+VivWRYzacWWgTOrdUcZx7zArV7x38Biihw/dyUaps8HxvoP6MWBJOvAv5aKIbyvBOxcjh+3oZjMvKk6L+EUlSli76c0S7gCEjN3SMLgPbgR272xYoomNZYapYKwKq9fu+vL5PgoWWEhfQDO7BYGfJryV+N1I4sBoOqh1a5wsp6FEij+vi1grNiNpTKXqpaN5UKOLK3pb+LFOPETXm9kqepI+PyVdA==","kid":"+cDVEVtFWME="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_026","notbefore":1639522800000,"notafter":1702594800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuGGqMuc3NK3Y9fI82qbrWAiNKKKK\\nYm6nLpibiL+DBRILW2+5cFXZ19HLfbKwtAxyVOsv2N6x2VS8zklYStHGEg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUftzSPzs3lKyxin4HzGAPSInAlHwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLhhqjLnNzSt2PXyPNqm61gIjSiiimJupy6Ym4i/gwUSC1tvuXBV2dfRy32ysLQMclTrL9jesdlUvM5JWErRxhKjgeAwgd0wHQYDVR0OBBYEFJRMukUQrFVGUPhjzucJOPTIs0uEMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAsalnKHPbwm0FnkhrFHCfZt79nvNRML5k/gPI0Ab70inRKqqTETv/T+l0xtSBNbU5cOu2SdymWqaYZDiDdfKhmw1MBJsieP/+Q7yIAHt/RYlhOwMoPcxsTHtrSpW9kRYH77OYX6Ou9davXN7Pd4sv0Itl33FYxoXhHv1lPA2IEf19zCxgqeStforkAqm3jD6tlEc+gfCUnKsqJetIdAeKVYt5qcz/hmCFnl+GgSVswG9SqogySJD1F9Uesvi0k1laWphmU5IkxHymJqy7W57FgayiIrG1cUtuVcPaCxZ9eNWYoM03p6NdVcSr7qkGuglzkgtzxk5ncruJ2+NRUeUEBlwTtzI5QIcW1w0lnOXbLrvx40VyhJhY3ixZcd3+TiHhMxohPTA5ECg35u3q5/xBA0XF9nyiJ66Zr0WUy722QlGzOQyChGLeE/yHsBahNEq1Kc3L4IrqZu/TB54qM6xYKMllli7CCyzYH6NzMYJeHrrjNyeakX0riniPpKvuW08mwReqsuZ8uS05JoR93z5eSxJewvdUlirrBQPZEjA6f/+3fkMT21JJp4nuGDJQSwYXWTlxOI8jwzi0k887yNFIeTgu6PVRqzOGQF7JR/n0VbwKASOAvOnvG8nNWhAhdYyzDfQ71KAcDkx+rRu0mgmdtgbEUA//B++J5sZjHUlb8Ig=","kid":"0oCvyNKB210="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_027","notbefore":1642201200000,"notafter":1705273200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEF+/sS02b7zIFGgBu4UwddBeosNhu\\n+zvARa+ySKeK2Rd2AJxx1lnnUgfkD0MHlO72kUEwhYdqfRZ7gSgFEgdEkQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUeVVanArVip2h9V4zfLC4CgjqA/MwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDExNDIzMDAwMFoXDTI0MDExNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBfv7EtNm+8yBRoAbuFMHXQXqLDYbvs7wEWvskinitkXdgCccdZZ51IH5A9DB5Tu9pFBMIWHan0We4EoBRIHRJGjgeAwgd0wHQYDVR0OBBYEFPSGVTQu85GTEXtAynAWYMIEdyb0MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAFl1G9mpI4FDpwyx7oXu1bY3IXUrUslXJo0Bmv3ayqQ1jCVXOqz0ZemN5lOIVwUMDynZLngsHmKz+fTR8K3CI6PaSxeDy0Rw/CsyWQgt1CWUR6q296z1DaPMsDGfO7dKDqKTGgoge3K4IPCjtQixVYgylfo6kxBHutIWAIgFV+cXxx+fn3K828SMoS7DkvKtAkvEQAXGGk6pbP3EdAtUJbDSbOufxS0W45a34C6tKiDAOJiXlCZjhtNHyTxSXDDmiyoabxxICNLmKJ5IMEe45pOwwZC5uPr9q0Qc72+jVsF9VeutV/ybocLY8Mi9GRJFKP5HQ/yQY5aYTstbV2V9pSDP8bVgdkzYSbmEVTgJ6W6Io1B9OFrbkeeOQzwugumUDjV4aA7NM4kX1Hh0WRtGnrVqo0Lfy0Rbj10goEb6BidecOUMq9iBuD7OsGIBqCO/p77xBC4TPt2rdaO2hDddFt0KLzesFgNrHJzMRH67MUHTDUaPVq0s3vu18XurOerivE5d7EJWboGelIWLNGkhOV0rza+4slR56wqve4I/A+Qhf7FwPZofZuPk8JvE3gxXQyktH1wzWGYBUUFYIbScJbHMb0hTecaPye0gGcKtQ1Y2VR7JA5NldYZ3cRMcdH4WNqYfu7qKl0NeQ1hqp1+pL7iWsOLG24zr0Yi8/Mm/xE5k=","kid":"14QQ1b6JFLk="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_20","notbefore":1632261600000,"notafter":1695333600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmRk7MSZQCX2u4UIQgVzma1JEo3yA\\nSVafls/5nw/V9T6e5EbsK64MM0KhsPH9aK/aElRt1+Rxtd1AsHVvsQJjKw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUFpv5DkvJU5K1vn/H2/M9MQneJrYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkyMTIyMDAwMFoXDTIzMDkyMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjAwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASZGTsxJlAJfa7hQhCBXOZrUkSjfIBJVp+Wz/mfD9X1Pp7kRuwrrgwzQqGw8f1or9oSVG3X5HG13UCwdW+xAmMro4HgMIHdMB0GA1UdDgQWBBTb/Lh313Pu4DiRm9Z5SS83yZeXmDAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAAY2cWLc8Ce7zLl6vxt0kWgpTibXFhgx/Que5ExTAJOpsl6K64MpJCofzPfO7MzxYRtIL+Lj1l1avGKNr8BNpA/+A8KeJQsocJc6RfOMVPt+2Cmpr8DTDeIjNzsmZtXMaRtgDjGV1qMTtCaThdGgzC5KfgL0OylkXDnFyMDRVDCxVxJUC4aMolQmnCVyyqD2bHBm9Oj4+x1UFrx1E3q/1FbQsy/Rji14kS+84c35qAuTkp05kqzxoZZswLQY/bYXJtU6u1SDwo/Geirre9nhm8Ck4Zr+8ARIh31oVyK615s+13A6p2Iux7T00aODsfRHZKh60o7+FcjeQJ3LbNdwBEHN0qc8aPsT5h61ZuAOnpmit80wVR+btu1d8e7Hq2u8AChmIGDcxjwHs7ygfbRDEmSM56ZhQ/a9PGDvri+jnuN3GW2TUajlXogrdMmvVsQN3nssR1E3nxBltyOS6EP88uMdr/ajAOjOT02ISmkaUWfTmrwEJGHeezOPiJGVvqp2Z0UOiwCivGB/PU03cAcu/ms0EXIKZ2qFosrZeJgTfZy2LMFKgQbj5b4iLDWormO2RCGvM3QMfmYd1XwTISCvSlDyEgT2hBRgYnLJ9ipPD8ngRmQXoX+nYbIDi23R/5vlU3qNw1cFAyGamNAsUNgPeRGaqIzB8eEON03DROAKulU4","kid":"26Fcjnjuf2s="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_006","notbefore":1639090800000,"notafter":1702162800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ua6q+h0NvU1yqdisTbi7nRqu9xp\\nX4qBSU1boIc6PWIbY4EKPTSQlxT7hhJwYBR37PZZX8JdOBh1ZqUjG9j87w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUMhJIBrZi2FAUhLPwN7JzstvhMsUwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIwOTIzMDAwMFoXDTIzMTIwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ua6q+h0NvU1yqdisTbi7nRqu9xpX4qBSU1boIc6PWIbY4EKPTSQlxT7hhJwYBR37PZZX8JdOBh1ZqUjG9j876OB4DCB3TAdBgNVHQ4EFgQU+eeSlsYWARhP/uY/e3iyCsunMAcwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCac75HtV6gRBG2AQXz0YcprJTZAZW+VZOHh+JBmIXkBEUzjmRtsTe0/SqOhs7M4ln5WpqsT6ET/TZYoGTUy6oocjqy38MtZMV4W9sGSSdR/ltfVLkgyofPrdNg/XzNGEF+jZ9xWNCQqBHaxBzXaPhUa/p9B1Amof3ksyl2ChdcOu73QyOQ9qcFxBr0U1DJ2K6ZDIbiMdu/f7xWN355HJNfGFaKioe5wkrRJOxiu0sfn1yH3hCS4ge5iJtLvux4GVF5m02bRYtIe32+FrjQAg3pH2ayyDJ2V38P6cIi9lIdoGdoQuA+As8m+Nsl4pfXmeKqaSF0grlPVlhTh9BW6+N6ktybw1srgfR+TLKvTrQ5nvbEWtDmVddhNGauwSB1YHA2YK+nzlDS9o8091vKuFFSCCUeNWyZPHzw569izxAy+Pu3MrXiuiPISfneQIikl3EoVowS1vyWpnYWkFfrUpgT231Y4IIu5w7tHeD/ieEU0tq8UQUamMshiPFpXJqZMzeaxBqaAoTDRYmOGPoyGiKN99Bz83BFchpgaZgtMQFH+X0XvEsLr9KYDD+svyfuZZLqmIPCxq3ejF2O1YGoe9HfGh+LWqlw6n4usqBhix8QUznUSkkQwM4NrCDbQUOSyOtMXGwbLFiGmrlg41RMiJ+txZkCtSmsc2iHq6YHnKNU0w==","kid":"2YrkPPOntQQ="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_015","notbefore":1628805600000,"notafter":1691877600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC\\n2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwIw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUc4Z21skZZ8Xy07UbGOonQJh/3uYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxMjIyMDAwMFoXDTIzMDgxMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0xTgG+IpxKsG43aa1bGa5tRfC9WC2oCkA08Jz8vHcrYciVOqreHkycHRF0EIM9O6G9LCBypatiQ3VoKDkUVwI6OB4DCB3TAdBgNVHQ4EFgQU8CPvYMvFZX51QjwEsL6RmVrYhCgwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCfhMpfpfaBZQLkBuT1XZJWVfMy/UxqunIhPyjjJejxCnYupYB5LoyUKeuI16+StNTxGNHML7S73SWywDSgFwP0ttoLK1fiGVKtOBfxcvPP6RiuhbgkdXlUboXW3azVLUB0y4ZxnFsp3ZupaTBCpBQNAaC30tEAx0ZEZvOBl3MGRHqfR6SdUc+aMj0bibqm29J8hOZAe051JwGNF+y7O0pLdDkmAg3rdBsHaTNvA6AcyRRV9Wm8vB6bf20JXm3mvVtgdyidUgSTTMJ2BOqvGzDsJma5q7vh4nFZxPDRGp9Ny1WU8MzGUIUilv/UJKDexfqyQdzBOF8jHXCY/gHGXrOQH7MZ6ApdG07+RY8R4AxZ51OJyGQw/KPFdU6XLSaDtyTXptGxl2JPIaik1TtNNR3/pAdDVp67tik7En8QICqEdv+OqzBbxVrFRHmW7bSeiX8aSuk52ypHTAR6MkstVNxd5J0mzPxBqQVWa2LDy4vGkFn+qQ2/tsVpdJJLQwfcix4rEP1kazm6nWqTyyoDEU1MM9i5y/Dv/GkAwMeXPqf9Uy2z/QWyja+me06DI42hf8eLN36uHcMS10MT2/ei2w4i3UULge0NyN2+wmjR6xKJHEu9P+LXci1jik33FbwGZKXVb1uI7Y/iU+NIBOPgHQfEvBuKDDvHC+vh3r9sraXeCA==","kid":"2Yv0kajsIlA="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0004","notbefore":1641942000000,"notafter":1705014000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV9ZwrSsN3vr0WUaDkS4UzyPLz/2y\\n4hm7yEnCOaAidrjZlVlIjQZkhDeNLYOLKcaGnEBQxBQNpCgLTJWTRnopPw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUaGRg9ynElihMD05ckXc84WVL8f4wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDExMTIzMDAwMFoXDTI0MDExMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARX1nCtKw3e+vRZRoORLhTPI8vP/bLiGbvIScI5oCJ2uNmVWUiNBmSEN40tg4spxoacQFDEFA2kKAtMlZNGeik/o4HgMIHdMB0GA1UdDgQWBBR1DNHWK9PsTyKp+5wxalsj5t9ECzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIxN06gTwfxHWcwBQw+tPhWqNv/caBLzM8Jh+DyOQWyanukoaU+4hsQm6Ouws79tCdGVPnDUgwxG8xM3YGOh5CxbhbsSfzihNmwUBS2F7LgBrK9PXaMOh6EX5+CMeMOMWPlc9c/OiHdqqr7yWPv9NEGHIUrsoYk6+PXNmUo1Q8smzWpLzyNdtdsCVyager9w/5hA0ZMBj7idZFAqDVWBVtUCtHH6QqW+NJ3Ukp+vqo+7RupVrXda3hkT6f/icnOxygH+UXRUwzqKeni7hLDDU1xfjd8kg1sa7zVRp4j8defmvrq2sZlFA3kyLKyDS5bk/97gejBI2W9efho5pM4Ky5jDuT/zoAwbepPuvB6cMo5evTmMivQoqO9k9NAqwe0Ou7YGhojAHIbnK/SoGWlKPAAwNzD+tSIVg7EBV3HWCMWsUu0CN7yDOLjatnbupT3crwEVa9M3E6Aw3c17KK3YqLyXJWOSAiR+8ZTE290atJT/4e+njj1+foFJdiAcQ+yG8qiLjGDYXxxbTU6B8XH2KXlikmeEZW1sNsafpg67jG8QPPfauZHtcSnbIJwk3Vni41IQcoytkc+b5ixpHkmXkbFgDR2aF5GwH5uF6Q1DBJdTiT3UpDsj1ZqGRrOKdj58OALAhRi/fibUXVJkJcwTPyXF95dT3N2LxIuEsvb2ilwA","kid":"2uMhJx5tEEU="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_22","notbefore":1635894000000,"notafter":1698966000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+ws8GOmbxIZm3jIeG2vN3jsMTvjN\\nuC40InFfPoXbMRVFjhOBjro3792wiunoFYiG7TZsgCEi/+IOCUsxa5+H/g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUHZbL5MhK3RIo99XEV0xY6jiBrQkwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwMjIzMDAwMFoXDTIzMTEwMjIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT7CzwY6ZvEhmbeMh4ba83eOwxO+M24LjQicV8+hdsxFUWOE4GOujfv3bCK6egViIbtNmyAISL/4g4JSzFrn4f+o4HgMIHdMB0GA1UdDgQWBBQtDNVIN839gYsiXOJR5IAF+tqWvzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAJdRrpKYXb0KAu7BXEq/45XlLSt4+UB4MamR5d9uZuVL+KkKHy9jiDJ2ydKSoCDJnZZtKdYG8hqqCFKUj/WqkTJGysZo7rWmeHT4/AZPSHsLGtaYtqKVPJOie4nyywdmMt07fJIcqVdGtmHqM9/dhEXVWWJqtDWC1cZ3HdS4Xf8LgPORm2iusGIKO7hJuBn9Z4dtqKlY2VzHY0jlqdFdOFVychusOQyZWdliJ/FsERDj3jj4TEk30w0Pk+V1Th6MogVmiVcv0QnxKG71Nck06JcYLkes6zgmdcY0vapUfmLGHECgMkYwuAR/tB06xAZPVPU9mq653ezbElwXPXNM6qc6TaCEnkUpjrLsjy/vD2naq+PtkZRlrKH+HxV8ZAEbAsg3WDAPG/9xVrWtp8FjmXhq3F6I/LGp3TCh8/q/9UmfDDNldidA95QcsAMJZUjEJNr8JXuegt3aBWUbpz8EbfyHVVS8Bzh9H8s9z/mwXT8X63y85YUzlMGshKdqI/7lESJUunA2U3pIZHixGJMK3MelZeqEBqxd22h7/gmNI9LrK3MBEtBQtnis+YBTyaR4BbDHDOur3eQA7Fy/FoIl5LUHPmbjqD+tJUuojg9+E6jGz18BeJYLtnPHNNF02XtfASwg2WO1+eujIQiyp+6e/xLUv8qxzEUQDi885fvHv//V","kid":"3aGO1ni4qKA="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_023","notbefore":1634248800000,"notafter":1697320800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgu/WJBn1Q+RCOfQx3NLT5oIGUCHs\\nqSRXuu7EZsqfqZN5PvHk6/E++88wvj2fMrfmAptk5tVld2xBH4P4tRs8JQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUbjokPqcsK9BPa9UdWexJeyEqilowDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTAxNDIyMDAwMFoXDTIzMTAxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABILv1iQZ9UPkQjn0MdzS0+aCBlAh7KkkV7ruxGbKn6mTeT7x5OvxPvvPML49nzK35gKbZObVZXdsQR+D+LUbPCWjgeAwgd0wHQYDVR0OBBYEFFmAYyEK7sVvsDvIY+w6fmNz2BT4MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEApMhsApIqDdjtJiC6mOsvI8L9Uwf+gw/dv06vVIwTQ7y+4AgtfZ2HTWeqW7IlXvNYs0m44U4VyL43pnoV167rwBOAMGTrYqT+83Hl5adOtl5ui0RxVHzNdUPiVPL2dV/OgZQKq/TFjm8wuJOxhjGIx2CFVKX2PpcbHAZ/IawdJjhOsisBZpfYuBpKFV8hBj9/SF/EwCrbswB81IrOjNEl9MkG6JrYarO/uztKHv9OIFy5SC6BaKkO4OItM2xx4H1w2cl7Cqt32n94WLxP0HLeAKqUA8/7Ttoa98x04iLElhkg8Fd+aL6Foi1mWlWBRlgHz7iHxZ7zYDmi8NksxnKECSwBm4FpP2Guz7CWY/tsREyGvrzZ2DjYFtNtIOHW15xr7aTPRJ0yD0DYtmZ6l9aYlFVGUgNWypUuNOe3BJh25X2re7nIwSvUWZeAnUFbJ+2YYt9xQfjgSll/DByUG/SfT6EqstPWlbVFVLljs6azzxQyozRB8JYPVG1Kny8WSl3YokIDLVofulJqYpi+ac2DDFCA1L6Mtnfw/go7Rq7uiorduqZi3FL8vKwy0M6S3ckP06pWjpJdOyKaLk1cbHJR4fuzY+PrhvDkKmSSlEzsWCIKe6B//ErN64MJ5xJxc6HnP2KvXV4hf7XbFsNat5ETxb3VdQhVDyHzgbqSpVo9BIM=","kid":"53FOjX/4aJs="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_029","notbefore":1647298800000,"notafter":1710457200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvPje+J0NfHHDSd2eilS/vlPfvFyg\\n2GqaQe5uDcfbRNwXV51JZqQ9bno+FOnw+AFrLd9aOvsqWkvH6ogsKHk26g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUV/o7xkGXd5ZK2x7x5++zZSO6I/0wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMxNDIzMDAwMFoXDTI0MDMxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyOTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLz43vidDXxxw0ndnopUv75T37xcoNhqmkHubg3H20TcF1edSWakPW56PhTp8PgBay3fWjr7KlpLx+qILCh5NuqjgeAwgd0wHQYDVR0OBBYEFNNslXmB1flUg6kCQdJEDjP5T+rhMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAYRbsqQL82TwM6rQ75T0D/ZDzIHz2VP5rGoUBUGMvoqXYBFVZT5DbpjHjmb438xzeMFFUe64JRm5vkvyliwZrDK1WJD9W2A12mzIXx5DDakYh4JUkRUQSmpFynP3zrpr+P0hOZmDjC/UPUbSVRkFAwa8OieTSppv1GkNXTyDK/nZC/5+z0tzSWcg+xnR5ryKSov+oelpM4lGfSbOjJOXlEe/Vum7jt8dOkbCMyXCxKM/GGtOCVFmEUwieDe6vXmxRbkQHWyPclYB+RsNTct7vD+V04mXaO2M/EPdp7uN6r/4gI3e1UiJgQzh6Fntp9pDe9nkAQRjaotmokiakWGILMcJNMjKXTcWGtGECR2jIHCvvH7j/HSZxEQe6TXddnnMzLovH72RFnNQ2ZarK2hXcc+o+Rh8sGDlyZddTTJYzVm5lxQr1BtEMT8eNfc2Xd2VxaFaAp7abyKX0TaY8/WKkab+VgFgGoTf72LV6mUyWSSvm3U6578RCPgf21RVfIuE5J42Aq1eeYkkw0jCF9cVSq1ZQ7oLZzyk/qPI+LXcwgh02eaEwgZaimDb6GTXvNGLiG/UPVMXlVYdLTGBWr4BaIgk+pFwzx+4Zmwj85hHBSNObw6SJBETnK2K8nuD65IzfIevB1j+Mv28l5oBD714/o2ctSVcBYmxwFp0CzjG16Zg=","kid":"5IJmAxfUwrM="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_008","notbefore":1646866800000,"notafter":1710025200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFe6+khPXHMXLN/gLpWJi9cmNmalZ\\nJ/H9Ko5t6+W1F6dPaUYnTpV/RyCBxWd9vpgjSKHLD66FjsxMjp/3Q8U+kA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUGIV11m6B5igxihjlFKRkwVNsOAIwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDMwOTIzMDAwMFoXDTI0MDMwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFe6+khPXHMXLN/gLpWJi9cmNmalZJ/H9Ko5t6+W1F6dPaUYnTpV/RyCBxWd9vpgjSKHLD66FjsxMjp/3Q8U+kKOB4DCB3TAdBgNVHQ4EFgQUGwpsSQJaSChkXvDR4rLovd0XxwwwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCGunJPiKmLdtXndGJEMy7bUnhBJogJBDdY4QoYUL9cVGwBVeVzRyoKh1LHAYC1OLzPb8kyP51GVZvZtbJlMhh40x2bDoyA+pidQUQBPs9pSun8//evz2n2TWsTDZ6vSeNgdEtLZsVFSnVKTLgjpm4IJDS2T/sr3OlGZMMryqeVx8GDpxVysZY0rRZ953mLHHTh4NVi2TOr1gHogKDpLCk0yIR8ac1gtdIGSxNtJtUf6gfoly+sLtRR84cQWqZNiFrYkxrPPV7mKD5cvWcqYl7oq//5YMUHI9Roi/9L9fwUEGKh/XWe4GrZIV6CRmmjGYwN/aKoDrOviPzmcmY07yMzuk10U4j5QGHJ9B9ePgvGkRMp3mR+5h3G03zr/PuiIhmiufhdomAMmd6tl0G7oAl8a4apugBN5DluJ42EJpkK9rHIIEi+2+ZvkNIYquyoYcCam3/FgHQuuedxaZR4b36m4t7sY2zmWjjnchZHCv66FgJEVYIWJm0wz/HmWBv847ErUunoKLEopY5cHrqfuii+A4HzO0U9+vYZw6DA2RwuVq8Ya5VdDlbZRva1OqzzDB4rXWgFwPZulwfqMxclrRHej3M7m44ynNW+7fpS44ADFyvLN6k4cS4kDQzfuL9bRcSiR9+UpCQGDxtOx6RF5/kyCwBfshXpinmayXrXCH4oNA==","kid":"696cpdD4YGw="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_031","notbefore":1652565600000,"notafter":1715724000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsdkkXqwhvUOcRao3EMIcLnDwZNiB\\n87ofJwLuwqzIlQhOOZ7ndf8f/flfzxzogN7OgekiNNMpPGjOy58MZQ7Kpw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUWplIUjX5w9eTfcPRQLG1AUcIeI0wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDUxNDIyMDAwMFoXDTI0MDUxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLHZJF6sIb1DnEWqNxDCHC5w8GTYgfO6HycC7sKsyJUITjme53X/H/35X88c6IDezoHpIjTTKTxozsufDGUOyqejgeAwgd0wHQYDVR0OBBYEFJ27qMfQU5fnLnX4wi76bSxJ6QboMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAlzY0s3UVOuyqTJGhyBVb3cfkrD4Hyqy0QSrB2shuv5JjGudzjSuGqurDp09Ozyg97+PuNm9F6JqxiZbz+IhmzZX2yyYwBEOKv8KnN57DEIY65qOLn1o6yJEJpNWVhCjqW5MnhND7CGxcvTGF3FHeEB5OfxnSZaC5aDkNauMoI8pUddONpYwrtHiaIsxsYce/k7w3RctO+8ZcYJ/BE1Urc/rpmcV1FWpBC6FzFG1rbu1vXMkfPmKLXFCPZv9Pzu5u9/et2h8TFWS7DyMnWiSBcuJiF635CccYfzlQLeBBeGKFR00IqTOiSVQZPccB6PC7/g6Vlm9ZSrYQwBwraQIXIYRwMpIkOifn4bT3xNLlGp6b0k9xj12HKYR4MSg9GZHj8ctFCqHiajdjG6s5azH7wOAEyvzA047/RSjNyoX5hcLZE+6SIfDjZPDY8ZVE2IF1LBj1TW1mHWOeXnYD2ss3nC6nUXYByEekN+6pn62zlzwv+BnNPCZa+MqUJMvfRa7IC2qCF6VIB4KHhWH8Ev/3JiimdmmnqS9xgb7Go+r8h3iXbmR/wjucS5tuDJSkkEJDG+5VcEzKdxrIrmbTLIlDf84gpcaH2EYFn2a5VsYyybGndNl0Q7qICVJGax3CPZe1gQaVNqhtEDLbfh0iXttV5F+UdxrO2rQ/AH+fOrV0Q0Q=","kid":"768E5xdq4Eg="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_016","notbefore":1630620000000,"notafter":1693692000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTC\\nmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFDw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIURQaZ+EBTL+Y6w52qaQUNZ8YBNs8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkwMjIyMDAwMFoXDTIzMDkwMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE2MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf41NUAppbywsMdA5DQSf/UbbtGTCmVAv1h5lFKWpxvusDlcy9e8aidIRnhOkon6X3xJg4n5dU9Ukgu0hEPRFD6OB4DCB3TAdBgNVHQ4EFgQU7OG+JgHJZf/maDGo2iSgWdFzl7EwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCVWdsW/zEmkJ4uRQVoYTxdDHlmS+mbDvEGv3em3wtFVWX/0FZKRRxHZba4wElR7DjEv4A/d6sYPn/9Mp5PhBDS/lofFzUMNYAumH4uls+MT6a9ezZFCtcATKj9pP2hMySfSn2rfQzOR9yXS6I/GcruzehqedBmzxc5uKjbSeyLA7sgsgl/JB2DW5G4tIqjxIY8KytMTkrrlJYaG/vPokpS2ajUNZisBbLHJAGLx4XKnjlLviTBSp3iAsoCh/FFHJxtQJ2pFvmgRmVaQUKpTaAuHH5pPmw4Q8rgXq+qX0vFaPe6LaUCpJkEguY5lxGtHqZGoqoVaKG3/LX9qkuzyJ5ijI//e+Uzah/zCBmW4kK9HLHUVWNyOD9fbVhWHJfXKkNJ0dH5JV3bKD2G/MvM81R5Q41F9PUjOXYoCrDnY2tmBPuXisR4mCulrWyM6Bj0/r8CkMkwMNcr7AoTEfXpa8MxJANVWFARG76IYiQtn8M1dtBxmy+bf4/+n/k6S6Z4w31tTl0YsNWQ6TnlHS2PQ+UiV1zchJcZ5RW2YwlWjLRhJHOzrcv2m1jRIsqPASvRLJjeAs+77ZDyBmBFA3piutllZj5SBDCLzStyIplruJWHhCnhGj90b+fGQUPAhj8XxhRuCnRtXBwWED8hC6dQh8QaiKB7sTrlU9L/8wn5mCGnuQ==","kid":"AX/m4PDDCXE="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_21","notbefore":1634076000000,"notafter":1697148000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2KIu7zh4VbMsB2Y8H2VRojkDFFA8\\nhQwDsYjuAuxqIvqqx0Rjjv0+teHsdtIwdXW5f3BrIp5D5WXbPechk9nR9w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUaC1i8U4Vp9O89KqNCGnoL/BxXpUwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTAxMjIyMDAwMFoXDTIzMTAxMjIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATYoi7vOHhVsywHZjwfZVGiOQMUUDyFDAOxiO4C7Goi+qrHRGOO/T614ex20jB1dbl/cGsinkPlZds95yGT2dH3o4HgMIHdMB0GA1UdDgQWBBQbSJqpNjLhe5I8/Jl9l7JWE78a0TAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBABSg7TvfutJ43UXAOblrRH4vATAYUUHb542Pnqr87+7IVl68HtYLeBI8kuDgbo+E4D/vLiWJFq7V+9pUQnLvqbIlgESQP2saVFb1DRVzBk6UdAZ98kAfrND5Aom7VPGoZE9UpRBWYJtH+E9vXR/6zr3ikIbLSghS9S23R6PqEp+KD9bd2DUv2URn2VsAncTIwOovN3sCVfbiI7sByCyqzoCOpK+lK4GbTRUDnrnS4thexvi/T+pMmJ7jYUtz83tD+rp6PO5L6Ps8JVhYDNYRyUqrxSNcU6mfKikE6I118eeHCHwCTh4TXsE9wTwJ0oZwzo0RlZo54GuJ3XTH9zJZv4rOm8BZwVFXXKcPR/MKmRTBTK0lsvCb/yFSJjW9h7EOBZCJB6tmrsXEaZJSzSepge4hT3+qO4S2VgeruUpeoZy+X7ytWsMAWL8NMWBxVba9pkwM8zTKluw2dFIaMm3+p26rXyw0Ahg7jDFGyPyCjlORrepgMuqhG1nwg5+INYhqDNx6MOY+paAkHCjacmvDlcx780SrcztES4D5h7tMWH5rpHGQdAmr0Ga8klWp6QaJs+E+RvlfjTCx/jqYHaC1MGjxiUQikOEbcxZH6m+crrtcyMH3Jps1pqCDOYHVgsqOIyqkqdmtLxfdvGzPUn0hKIMC43gkyPX9O5CphGmwJEaR","kid":"Cj0KwOpRFvQ="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_013","notbefore":1625176800000,"notafter":1688248800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6\\n/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUdvwPgIGxxk3GeLBFSk0RuKP1NnEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcwMTIyMDAwMFoXDTIzMDcwMTIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsNCxAUi67vlLEBaGIqAk259l+dk6/Yw7hZL4JFqT6M/mBXIc7P+mZtK903KXiVZelboECOOoTG/+2nVEFhaZuKOB4DCB3TAdBgNVHQ4EFgQUK/s/lmhAfvZK1RyuXxMIhJ7oTm4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCwoySNQghvF3QSu/6RtHg1XDV/4eNFFPwl+qmZn1AfODHAfVS42hjsmMLeDOLv0JUg3Xdx8debts/8/ljys1XMy1tODB9y06ZrQ1X1GxtutC4cSacBYWsy06qyI/vn1Q6vwKkNHADNJP2GNxQUlolkXkdgS7q+2tWCxcK8lQE4t2TrrNUi5UN8tlagLkbuGYqnzHnGdZ8AN6NskBhq8j0mcDHxhZ32yBg/+ZmLGdnCqRuZ9fjrH6B3k/n7fHhDG5UPnk+m+LReCRN9Zud4lGzLn3HSS1dqB5V3k3lsszmQKEi9haFljxImcU2aJ+IRepO6T/kXh+bn5ei64sEro3fad70eAOg9C4hkD3krsHMpYdM3TBF704dahPbuusRFqDCD9XrLpYP4e6UD+EdjOg/aqG4i5DEdk9cFJtv+5gp8ExtqUXkIk56jjmShQFwfNgA5SWa6lFWniQCYPxb978BMIqOamOL/6BwnyaazQWFm2Qyl4AzlWot1CrOt3r+aK/i0m1nE028dju2xa3BTKEsxjCAXJ7eOldXkezBPFVGpfrdWssqnbzaWVXtVIfZ/CNMmEk9/cqgS+A6lrZlC5Og28ziRrkQatnL2SIbBXmcJ729H1SHRfAVKu+yXDzHV2fcwcoFBgZUf1g/IS/ImzU4A4sJImfDAvaFY3mcQslcm4Q==","kid":"CvmI4xOoMj4="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_025","notbefore":1623708000000,"notafter":1686780000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEGSSdtJPZeYWU3QrR2cR4M2Cv6sY\\nKuY870qkBKKREtlSel4Cxpfm8EnPZ+OPVVDXxArWdYR0MoLK6Ox9aEIkmw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUEE5lEugsksKBZO8ZFddktB2zEZgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBBkknbST2XmFlN0K0dnEeDNgr+rGCrmPO9KpASikRLZUnpeAsaX5vBJz2fjj1VQ18QK1nWEdDKCyujsfWhCJJujgeAwgd0wHQYDVR0OBBYEFHo8gi1E3sTHBnZB1uyUzxdv5GyzMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAM2QCIIa2/qraMLp/+N3JR3gBVI+zSFird5rWdWPWptnVq+E2MEPwJhz3a288axhZPetnm2vxRHtrzI8OS0tcl0qoDhHmMQAPzYHth6xGoGx9+jfLFMoynA1hcRmILtiitPoOT8SYe9K+ln3sia2xn52Rysy1xLTQZquBmczVAdxAS3B+h2nNw7V0b9ukamul6w9Fp7ifg25pT6mTt5sXD89hTSqTf/fhiTCjRTrBTJuVA9VgKrWUiZHI/vIwKRHoqUvMDDW3RK/QoAqfQWzztKV9yRCpBhv5focv50owbyu1VYpnT0gnl20UZsLwEXt6TusJFvGoiySFCLLanU6gyoHcXudNem8YEosOzxFSR1wvKJws8JJjuaQweQBtu/XRlwti73KZjwltHsehHC3nFsl3VwMf97A2cmre2ueEUcjRFvElh2PfpIIL17Srpu/mvu3hSVHndsUoFVZnZUWz8rVQL0M394Ik9ZBaZXVrIZud1FfuDQzbVKjRTO9mOIv9WZ784MAON+g0p0xKvJ2MZmwe+ZF4FvxRP2fCC9vlMk3As4bccS3IUKsrupIFXar1THfGPL8obpn6ktjVJ4dCT+y2w5JHGtxclhIjdqG5w/PrMPjeGrq8wlALwGjKMTF6gOZ+BtfjNCaG8h8lpt+oKeML7GP/Fe5Adjcovc0DBY8=","kid":"G3jDFQ1oK0Q="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_020","notbefore":1626300000000,"notafter":1689372000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAECmvd9b56sHucHEi7GBjqapZy6IAZ\\n4MFIFg7Acr85jXp/oBSNzFBP9CnkswLR5vwmr836uS9JL5sddzLT4K4+5A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUY7ZCHR/KM3Pu7zkxGX7a6r2xWT8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcxNDIyMDAwMFoXDTIzMDcxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABApr3fW+erB7nBxIuxgY6mqWcuiAGeDBSBYOwHK/OY16f6AUjcxQT/Qp5LMC0eb8Jq/N+rkvSS+bHXcy0+CuPuSjgeAwgd0wHQYDVR0OBBYEFGaKMaCARFztgSv4jjRlAu75x3ILMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEADKs8pzrmE48ZExyNbGa8kV7CjJjCfWGTOEfzxaA6X7gL0kaHVnvPeNq4yQh6CZl0mwrEmdxvuXKRefU+nCg/prbn6CAwC2irDHU5hS48Qvya7JwqNTMOU66phFs3FDuXOpUvm/fe+w6Vy9M0IqbKu7kEWizZ923G5YjrcUgnTuF9xZ0pOd2HjYh9efNOmbeda0JmJEQKxi5+WAGjOTqidDXfh/G+2jB/Ja67kyoZSeMHBEz7IyJ8hBrUWRWV5oEzIRQdMlZ2xPD9S9nS00T09gkl2nhx+U7nTqRPQa+qKMiejQA27+EwDgszkl5hUMTeqB5xA21l2SqBqz4W+v3WBy0ziDNS9Qa5HC1+lZp/7R+33pfGZMOC9iw2+yyC+SC8cFwUB/iuwZ+0096LV0wZshB74ZjU//sUNJIL5/ZWaNGohnIorJ8nbzMFm2rPfU66dOanfQ03IkrtIlbxH2IOAuBsC7Fk1OH6DDMoOJRia7OSAOv1UT696M7R4MtKyWhCiiNajxT2jSJbvpVj5YmS83G7cfbsYHu8x7VGxrwMXyyeyhKPh8D9xXCYdRrkAo5hhd9ETLRI4QeJHPQvw7UOL3Upog+fZmaXBeEetGl1Y8PQG2JHjY0BUGclNvvBApH6jEMWiOMUMjnR+mE8FC2LB5GJScjq1MLjaDqYpj5f2jI=","kid":"IMgNr10pfPQ="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_24","notbefore":1639522800000,"notafter":1702594800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEv9oPMoRAqA3JV2+cNikqVChE7Y8W\\nxGrVkEm5PV1bFndPkVXnRgpdgznH2H/x/3IcOdv6edXz4iorfKud7oJoYg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUcMofBDuZv7du/lkGLSBUaCPoRdQwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS/2g8yhECoDclXb5w2KSpUKETtjxbEatWQSbk9XVsWd0+RVedGCl2DOcfYf/H/chw52/p51fPiKit8q53ugmhio4HgMIHdMB0GA1UdDgQWBBRRA97mCPpiiEm0TRCs24gbDkkU3jAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIrIAYlDdyvTTVinMgb6JUX15O3zMMieoVig1T58oCLVQFAdMvJAWvi9SKVe7FdIeDLVUDuBtEc8P51rI4Da3Ln+2eNvcO3HMyq/1IFH5llBH3mNIlynTny1G02qYVGAmWvaKNIKeS50Q5c38qBQFLvabIOB2RTVJLAZ1sbRhRnossB+MEmLpn19/UFl23TQqzBgAzRILCmuuSwyoJmLq/jAMAtvOtx32awLv1tRWpdDK0hM7/Nl30ysNEgc8AXhHNpgVS5SmMC41WQWXgMB8ZiP1t6h+nKPmLHRDKnM5H+ukg1Lob5bTdMUibmC64b6yl/PISPqHCojnJRTz/kKXf+E1zn+ybkoYE+608a8RO+4EY7vEsuvGTqTBtJ4m7qDkYLMfXMTQoCg0GbAal7sa7aJVA/vdno3gDGWisu/EzCi0X6C6Gu3nxJuwEp+Il1kD2nIySSfQzBgUoZ4KUHUbvYlvRJBYQKijUItaJkThvUfFE+C+TUH0aqdWBl33zEDilXiaJEYTIyVtRRmPMF/EMK44DGc0DF4tlxeexeXrAXQcG8PmxRVfysxv9JN+53ubchR1SZ4fuPiRFtCliKz8luUmpVKBtbtvPPyxSWacRR2Anfy2KCVQ95eLFJUdMpp7qSTGvcIJKtuoNMKW1eZrvISldQDejMcoFXz+QgtCv08","kid":"LkrphwJykEw="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_25","notbefore":1630447200000,"notafter":1693519200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEB5mLr8niSSWcqZ3EbDPjFseikZTP\\n0rPRJPDW1+hvblECWjmEOsWEiXQ87RUStArNabZ9JMysQccgbb5IJ7bbOw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUPXRtjcQUp7b28v0vmppxnIFeWH4wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgzMTIyMDAwMFoXDTIzMDgzMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQHmYuvyeJJJZypncRsM+MWx6KRlM/Ss9Ek8NbX6G9uUQJaOYQ6xYSJdDztFRK0Cs1ptn0kzKxBxyBtvkgntts7o4HgMIHdMB0GA1UdDgQWBBS8BY4cl2GX44Dn1QTF8A1NVL8unjAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAE7zd0O/XHFUy06u2iTzp11wD8QZiGVEL9SPpI/fB1cdqZKL012FyiiN/wljpgo6b+p9SFvAY2nfod4Rs+by+PXgEdsVkuoU3QWCl0JKDqu/4RPLX350rufJWHSHBIocgBCUjvsgfcpJa2ureQ9iY9e0PVyRqEtTZzlcJWzZQwVYGxEcUnaC7pgmwS9awJ0r52GrnWNIpekSFvJcMsbT+gsfUeQU32lXENVdgsUxfX5VJZ2ooyw7bOzPJYInUwIMs1msLQOhl4scLKZtopaRztSNrQCkN5Y5C8OjEimkCq4ed7yznYhRBI/nN/1ORuniYS6jAilF0R8QBYdZOumjFozYWt6HIOuABikGvec4dp/5xqPhTTKrjygU+UMEl9bV9XtdPdHdbJUP9wV8gV90Fs5mUUlzbZjkfOr6wLxPMR1Acq5t3usakHLLFSSKHmoCwhCiiGGeYRPSjdcryxHW19zfSyHiKOaWlV/Ex99VjgWMZqV/JAl9fdjx4F58d03gp9iQY2+zm2WQnrVTUPrkEYdLoqcVtn4nZbJJnFlPVi2H9LcDN+LkJroXFx/eQQ4BVBQgIQ9pWjPUF6ay8TIpE1/PWhf+EBVet0FA4QqR/gypJI+cNDfgYUTA/2zJ5QpGDQSrUdH+8nBCx5RgtE4/OZBj83edTfcbC5+GPFXC88xZ","kid":"M+R7JFFk6G8="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_19","notbefore":1630447200000,"notafter":1693519200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERSQZ3mIam9saggM/z1bCW2+wGPWF\\n6yNJN7qrsTLHntxEu2JpPJRPP866gJVIsHmIMqU/Kg/BnQ1bb6icYxpcTg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUF0n80rrBMJH3PxQUQLM+vM20uCgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgzMTIyMDAwMFoXDTIzMDgzMTIyMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMTkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARFJBneYhqb2xqCAz/PVsJbb7AY9YXrI0k3uquxMsee3ES7Ymk8lE8/zrqAlUiweYgypT8qD8GdDVtvqJxjGlxOo4HgMIHdMB0GA1UdDgQWBBQZBTK8TIaJS4alif7cZXMDRas7UzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAEqB7XsEFQ1yVxI4+qUO1wYS3j5CY32bvzlbL5TfH04VsS1UJvMnzU1gR5m90bncj4z+sqe4m0cHygP5VncDt/Hjfat4FBu7EfxIlBYTF08iBVClMxbnA64ak9XXibT6QlGDNGnLPK6FaadJosV8pkVUYKhgkIaR/5bz8CzOR1pECkQnpeAjZddHM21YfbGDlawwnMbjLJx6Zi2//RLLlCwmE8lv1VfAyG5fvJOcrx/9QgrIyLO9BmPwMBgxK9BXBv7fePFpYktbmhgpf7oLbUdmREbfweVNodmB7VjN4FiidTbL+m4EFsi0Su/l0YgXdcKCRZgS0OZn3lqR+KuYAsNxw6EbGAub8FuXrw+5BQ+WJ2ECxMN8fmi1yWMj5Lr2oHV3K30m15HTcRWuWZw1gYnfNf0z1NNPUK8LeyMDqJoPG/Oc55zrd+BkCecHQEbaa6sj1cdKwYabXOjCgTLVBxXV0XwHoB2qLjyXVjGoRHO1dwAEgnozfaUWB01Sh9Fe+xuSfHAS8cNaIBCMBCKktly7Rs+8bDTf8SNSuPlWqiXi5DY8a5UEEjj/iVFxmS8jheF4EQAA9j+WEFNyEn6szw5FH0zJO/nYhBS6y24l6aGanes3KcOL53tz1H+pGw58HDiWVhUpTDLWCFk+JGbTu92nRVxA0axLsimfhPR0lVLA","kid":"MJuQDybecd4="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_032","notbefore":1639522800000,"notafter":1702594800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqqevv+I14Er0ap62pyJsNnWkipxM\\nuuogVRR94OSi2ZgIe6ejB5/8Xnw7URRJkYfEaixM6nz6Y6h9xHT4rQOXcg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUAsAQyVk0S89PuVooonmdBhY5tSMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIxNDIzMDAwMFoXDTIzMTIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKqnr7/iNeBK9GqetqcibDZ1pIqcTLrqIFUUfeDkotmYCHunowef/F58O1EUSZGHxGosTOp8+mOofcR0+K0Dl3KjgeAwgd0wHQYDVR0OBBYEFNsZf6xdKlAdeMErziNj3zg4kqzNMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAmHRGMyQKn86+JFT66yII52aBFp5199r13R+pMhCpTPdibTDItLAdehLwyZBCW88PpdCu5fUzVZOSbBQJt3ocTQY07AO4E/4bdW/A9vXYCvL2eKgRuu9pgyDeWFFDh5u9us7SMW1WSGC8TBGoQTizjeP6gQ/iznZG19TG9+G5FtoCobzGm/kMGtyX9s988LijLRAc2UBa4mk1E1MLkXGOnbzVHoIhxeFVWgXwBzCwCoO5ta2jF8e2AQggj+6uJCHnoeHwOS9JTxBanFag9LIilMZnFrZ1dyEYQtBzZUf3gfzNziNdYwv8oGbye3qFCS3YAwO/QCBGLAuzMiN6iJTL7+ivw06lpkwbCnREMRcNuBd8nSzzh/AJODVK0Zbm7elKitAfOl9xJ552kSCIpw3DRljsAvidhjP8ylgTKsfVhwb2bK9HEHSgo/MRc3ImWlYun1IipPwAfhp4uQfqcP0T8FLFfSBCK9sLN3F1jby5dcURpfYSi5BQvIgbgiiHpnxjueOStAGoof7ebmfFaehRnc7KoGlCfkAFrbBgRrLMsRbYv2xl47TOh+xPAjdbiZylD3wlzKD0ZDGpAfq6P0ovYoTZGRzzalw4Fuo5RW+S7SlDQCsdkNEKgAmFpGVnLed3YKhmLKJFmljlZXdeZVjul8KshpP6//HW3ceY5GXvXv4=","kid":"Of6ltPMXuJo="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_024","notbefore":1636930800000,"notafter":1700002800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7B4Il+aYBZk8hs1MI28H4Z4GF2HZ\\nCXgX/DSTxvUoCMVze4xp449WJLblSCKXreGdiT0Mycgevo4rWYVGbwtUxg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUQGT66i1j72Yd+CXVZxgaJFhLGKcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTExNDIzMDAwMFoXDTIzMTExNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOweCJfmmAWZPIbNTCNvB+GeBhdh2Ql4F/w0k8b1KAjFc3uMaeOPViS25Ugil63hnYk9DMnIHr6OK1mFRm8LVMajgeAwgd0wHQYDVR0OBBYEFOkihiD6srcZ+6gH9LiQNVc6QwQ8MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAg1Vrsxtjk49QaxQ/LWFLC1WmRTNO/8XeLyASVHjPZXWfvrl9ft+SlKqlhIom7sYbxiYF5+g0qRjwBWMVqfFkYPpJkeuri2awLQo9Hr8oiPNVSHpFi3zjr4gMLEv2buQ6LUbvAT2U6eOW17AiNhT/3XzND8tILs++7JKU675p46YtKNguJhJVPEO+9cMdBdeJUM8d0RRV40AlkY/ThVI6BzqxmiD6jAka4bWJFztR8xkBs3RBxcumGXPIJIpC8cJ9dqnnsBdLJfDlWLfvpn9k03QIU9/XObnw3wLGwFWnxdr6sQMNxJCMpk3U2tT6og6DGylD4OQbGQvqFzm1x+5X11DQIdhQhBbbz+ymVBhVjVTm6D5JsEHYOcXi00aIs5zuDs0AYJhWZW/eimBgkRy2WE/6eH49pBSl80OmNAcxboqZHQS1jmLqZ9yptJ3pbSOXZS1ABgsGOYXCyHTPy5OQA5zHIt+zakgyvcFJm4YcIOD9gKzrpyiB7qJLbzliTHcimuIoMfKfzMi82K2rsFZ18glgRnm0/G1I8Cgnol2qXjkJTJq3BgI46+aA2ad8sMWB+3L7J9dj/nQJrNaZcYZ5IMhyHxeZRxpo9brURgzt9J/Qj2hF5gv2ovJXo+FgjMiLusVpsi3HKcYyUS36dKj+f4ty0kPdUklcdx52ogQ7K44=","kid":"Qe8D6lfZ5/Y="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_030","notbefore":1649973600000,"notafter":1713132000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzuWkpSJGbVsp+E2UNf389FyOI+S1\\noE2U48ZdgllNRQo5KJ9TCmLL+U+eRVmId9es+oj3BS/rWfQR1fKhs6TznA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUAj1HEBf1NelaSBuczWgaH5Ch36UwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDQxNDIyMDAwMFoXDTI0MDQxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAzMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABM7lpKUiRm1bKfhNlDX9/PRcjiPktaBNlOPGXYJZTUUKOSifUwpiy/lPnkVZiHfXrPqI9wUv61n0EdXyobOk85yjgeAwgd0wHQYDVR0OBBYEFA6IIFDXpLz5r7sQnjnVOJ0MgUafMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAUeglZ3THwmpehcaD5UTX7ZRYeq7cpC0+jkir+N8Y09cA2S39ZF2DZBbE1UaVNDfLCICb4TkW9vHk+YEBjkykz4tSH0tkGUX2acNX3inHIDykff4mkRqwjYRInylc/MD9wrUwtIOslp0gW6CcJta6SMw9wcjaG4/tv5SddMvWUDs5UZyylY8Q4O0rpbxAcQ/wkF1R4S4XZ5KFD7nodJz3ig7b1dF08X47pOYjBmcNBePNq4nf3IS6x63LhWmDfpVc4+75NKwelBrLTErnVhd9EorlUWPHYvhfjalFanUxQmQdlJpcVhAh/BZEyGKb38ECMoHWzat66SDBVHGrM23uliXxDM6sC06ulab/6HWr5DjzUcgwx7UJU5lvGP1Et1b1MJNNd3D1Do7QoWwphwT81BUr5wB9CJSG+iOjRfv9pT85iYcNfpqtit//3H23Duw3K2EwSPGvxpQqSZlwxDCLhLfm49doBeVItCU1qDlncH3ky/D2XgV6ENCMZaQTcyWHeKOzbTMuwINsfc7VfgygaVySmGQjfyNukvx6ywI7Tg4H20gogMStLaj+yPPnsul4N+EOBHsSKCenfwlaTe141+nfKB9eUA1kSApybWY7E4pflmTaDmuHEBYb2sz8nq2lD3DkdiFYe60v45ZOsYwzACyM5L7j3Vu1/my6EQBb074=","kid":"UcuKeuV1sys="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0003","notbefore":1640127600000,"notafter":1703199600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkDtFRuH55y0i+agPf50duCfKbdQl\\nqeZWlNSQGiNCmHQ2uwU3uz9F1/PrzwwI9HiXQQRNiHdSDBpf/iBkFR+B1A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUQkSt3NEP7eZXRRnAVGA0zskx+JEwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIyMTIzMDAwMFoXDTIzMTIyMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASQO0VG4fnnLSL5qA9/nR24J8pt1CWp5laU1JAaI0KYdDa7BTe7P0XX8+vPDAj0eJdBBE2Id1IMGl/+IGQVH4HUo4HgMIHdMB0GA1UdDgQWBBRM5vCkGmWh+WbL/93iZ9SHcFFJ7TAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAHBYP+J01kD3SOJHli5VwmVFRYBLv73mJOlS8SdRO9IWs7KLTSiMAM/izNYp9gIFkgVsNepmJmrccKu5jJUaEZhkjXbhvhnFZQuI0cvMcstZF0iNIFN2vukr2ssIKeFlmVNXkqjTNCawvpzV1IKrwpqGMthe33N67AtkvmLT+Z8Cf2900b8Pgq4kZj1dUekMtz/RwNnf9nOu3Sr1H0pQ845YcUr01DsFsMFyDd/EEmI3OGBHzvvEAA15Kk4fwTCLY7AIy9Z/cAIzy2pvlMoJpPDQF10/JIV0IFPd/nLtNiulU3eeFrzWzXsaw7mIXLfDaattYmP9zc00YSvgcUvOJc4Y0ZF3XWIrPoMYJMNFJic+AjVf6uOHARVb5TN5GDdjtmzzL7dTRl+2mNRXpuOkgWJA4/S8DVPiGZ8N0zbXLltLAnoKW1j+3/sPxX4Zpgz+kSY7Qa2BrAwvj03jOXBGNxiMPFv5ilLCwqSQudA6STA6VlPvuKwpiUZOZ4nVSMJ8cRyKmac4KKb+vi/O3HsGGbLYA3WiqRs9oI3IO45S7S0kHdLLlXOGsQtQWxbVxRxm1WbaOrqk++xxCIKm4PziwY9BgElDi63LHbPt+zksEOCqcneD3viBlNLoYXOpvap834c3oL8pxynSxLp2UXygiz8EUjZPyVLYHNIZwKvf3yps","kid":"UnanmcgtfUA="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_005","notbefore":1639090800000,"notafter":1702162800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgA/VBlwh3BT6L02+aBkegInc4i0O\\n+dpqxTnWaR4lFtdAQZih8DMwQnHTE+FMYh+3ELno/d3jUOtr2KRfMiwcgw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUEn7EY32bIQI6cjr9LsydaBRkYLgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTIwOTIzMDAwMFoXDTIzMTIwOTIzMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA1MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgA/VBlwh3BT6L02+aBkegInc4i0O+dpqxTnWaR4lFtdAQZih8DMwQnHTE+FMYh+3ELno/d3jUOtr2KRfMiwcg6OB4DCB3TAdBgNVHQ4EFgQUmoAU9xV+MEtzaiWTfIByf3qqNNwwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQC6G6FD54QaC3FBbQog8erXva9jokzjpUynW4DPLMyWQxOS1PlgfeakHADREVs0Q2erL3P1+VRxSzk11Rzss2lztKGU6r3G0EvLWeXT8C6FjWKv+Ej7tzjsWo47JC5cqffYOcDJWx/sAaBNW/OuTiG0SVSVjI2p3VTSPmuC1oZQEKvtqOkCgD4/MClxmVijOF0p344xh/l1ggmoqFZPupyG/lR4Ixx60IVUoe7HYLJrjGX3XxWVb+3CMVqIBUmZNajvxuDigdtMq9gArwymWK6k9yqmlroQ05XWt9gI93uLNJLnZmHrMOvXLa8lp6XgxUmDOYjvFhIWCCh1PO+nxfb3TlxKb1f1E0AmylVt2s3+/7af1RAj702f5aEscUtK+3OwAc6AfUo5x1HsZR9KCm4ZVdHLwTA01UWePGMSmuUTsaJUGo1PY+soNm26XcjFvU2SMHodTPb5Mj87ghAyiMbyb3KdNneJoQ4jfXz26jeN3yo4Yw+fYd881UukDwq6sG4PoxHHWGrkLqoZoKYznegkmAyLwZE2Z4llH/JQ8WWOm6uo1AqovXzMpAYA15o6P9OWFnXv+db+L26naLjWnuOYsiTqfrc8lcdzEpKqKdTMMfPLmhHcL3DCYJi+K373AvXj55vzCkWUr6gM74xttGtsnmuIcXsfc6tLw6QWlJv6LA==","kid":"V2i/L/Yb0Mo="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_017","notbefore":1632434400000,"notafter":1695506400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/\\nMCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUGxW97yNy30SefumeNAP3zZwINLMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkyMzIyMDAwMFoXDTIzMDkyMzIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElKFq4PSBlVJuySoXP3gAMLo6v8B/MCODYRK1OFUmBk7J/kfnRmv/a6ksBIghwjDc4nZx12IKUvhpuakVkhTGxaOB4DCB3TAdBgNVHQ4EFgQU65Kf02Ri58/6NMKPr33J+Wz8lrYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCAD7IAnsIa2VrGdmp7kv5Tj49lhY4FgzphvUB8YcPGPy+EtrAGi+uU1hKT/nbGeB82f92nj12iQUF57gwRSalGAUvlkz4c22L9dt5pla7u54TI08GPOmR5wUs8zixYaZDjAdNr+WbfgbDzqifwlhrjIMbKwCfW22187hxcrQgD4gVc927EyruFmJxxSDNJ33NxFkZ0uXS5TMN9gWLuI+xhcosLeW9SlwscLI9WNqBigzln/nLAHYzBpS+lprHVOa+jJzktlJbATB40BCz9jpGcCDgkUTCNZ5z3pOHas2rVm2aBLcHVttVbps+ynYwyWtSI2jr9oN6GzdyS6JZykxvqGoZO3odhxe61ioVhjyhH+e9mQIvpM7qJ2/mxUFp3ND252wmnGW9FuzbFamH/SGD6LipPVyXK4oW2nxYcN7Fjdc1w/5rHXz3sYfIGORfrumSeRnfIdXglfsQi+T19cA/kwbuGagjGHntN2bnZP/FDvs07PgixNAi357BAAuwpHKMHiwXSjTW4smx4+agRVIlGZ4zuEQXLPpFSwW0ktPeLdr4DRtfL8cRav5Qs5TrG02c3lJP/PQAnpXpbGBImjAmBsat+0m7nuBU7Ix3F/A5HBkSlSHUgvw9Ze3PZUxw5igsMm0eEcd6h3hhxV8HZcS40I53y9l63gr9j1Mas7BfceQ==","kid":"Xo78qgBEx8k="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_014","notbefore":1626991200000,"notafter":1690063200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZ\\nmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIULSQWphYP//zk1JQmpv94dIH6cmQwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDcyMjIyMDAwMFoXDTIzMDcyMjIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbGQa07BM7QEDU6l68C2n6ZHM7ZxZmHQNdBf+6uo5tDfxe+fmwaWlpsqYpYf2ICxlvgL6Mx5GTvns1evKCQoxHqOB4DCB3TAdBgNVHQ4EFgQUZprkhn12tER7SWBEtD8mPNDNmK8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBCJgkoi4nyqPEXv8VCIXzO47sLWS4GOrT4eQ9NjEBuXqkCVWwMiQ+0PPiNi23QWx67ZK6DYUQJUOHAV8VRKZRK6G+UHRWX76hk00+hmW5qL7YT4+Z8RsXj8TA/DbUTXwEeSSinfQYefLoC8J9G7vTYmS4su0CaG0wr0qsSOMKZCM/sh0DUCNtZTpzTspDj/i2TPhTNhthyG2QWFKnTdQruEyT3XC1disruo/H0tohKOAmZhqXocdKFTl6Ycbn21A2Pm/xJRh+W/T19bFF97Z+i5T7CfS4Zrf0VQm4ZNrUv96gwye532d0QQ/6JZCTT7aL9fjEnEzkQdtdYPE0051HI9gRKmW6k++hWFiokhcarvWAsNkN4B4MIzTufRm92hCbzFh5IvsHYaaAUsfEMDsrhFSkuZ1swzimP2AQ38R1O0Brb2pls3sF7SAc3j5LA/bXZNhMJ9iBroc1SV7YC6Vv1DZOHTumSLw2fvwDt358sEicsCgdpzpm4gKTOf62rzqGiNpKWBbZW2mJvuv6WNV5C0/aW7r1nfuJ9+qSd2SUrZUFceE4vpxM2ccgsodHnspbSo7jKTeJ7l14rQn9XvoZY3E+YFcdbJQQeY0nABB83acJw1PVKfVsyt9D3DLwWXEcUcwUGioxVwiHR01VyrB2FBKurrXYEx0PglSI/NZBL/w==","kid":"YDAy+yvD5lU="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_018","notbefore":1623362400000,"notafter":1686434400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjH\\nz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINRw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUW6BjdX2GIko8Yv84sS428c3DH6swDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDE4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8SjDdFFGxTunJ0RQyxdGDbBKVUjHz9gKydhpKuTZAvYZMzGVVV7NYhJGQqOp4Ox6wU3y+zY666nfAeaAPcINR6OB4DCB3TAdBgNVHQ4EFgQU0ONM/OVD0tP9BuSIGmIZRrPdEnEwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQA7FyRe/36WDJi/2FU5cpnrV8dXpZUHEGzHRZ6vaZIP02S8EdlcDO39+amGmv7HrQbcLAh7tmPhpii7DylowyjvnjBFc8cJtn+ScbMQ34I0yokOvtFJvyfSBOlK5udIyFrDjdsfqr2BNx982X4dK0UYQfGCufppflZOfaqv4Y8A5lBTRXAlXPJBSZ/GMvFAN5mesGhnPD0nFNnpOHGfXG5DkNE3gBRYUyswIY2d7vdhCNiCH82fSW4mzPs/oMQaI3Hw8IiAgUwwpMqXBHs0Fxn8d4WxrpGj07r2WjIOVNk1JV1OHKvHfuVPS1roZ9pNNUkoKHf1h46f1nWczUM5jmVy0Xvvw+ZhvSelRwC7PQ74BUoPgbYzsNP0SvGOnhJQrhOYk3GSIf9EaQxklqVT8WREoCDNxfRmNYdCJzQXr/GZ/Eg1+6RPvYuQWgsB3SYgdVQz/pCRHCZvEjU8vUL2lwW4wgWlw+Q7OrXrpW1JOxl98zRRSpWxRrlE24crzTJ31hM7n8WFSsF1ZNnOoAhy0nRxdeOkpDcEVyoxauuPGHUCNIMmvvPG5psrO417HLJGHf3oLkKadSBK/Nn9u0YCCa9ypN6LRJ9slwxITAsKTrYttjEgNAisYVLojtHcCkAr5JfqL93rFYI9BYS2x/k2QGTlKM9LoUUpzaYDz16rddiaSQ==","kid":"YVpBYnLh1Hs="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0001","notbefore":1636498800000,"notafter":1699570800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoeh3CrNm35gaheVMze+v7L5DLRvJ\\nSyz2yimQlMPUwNJ95g/0wI7VdYnuZqALEnMFgf2MxB0y14PKwDTdmsFBzw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUJFYOxQLyE+KpwY0ONOh2K3kEyYwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwOTIzMDAwMFoXDTIzMTEwOTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASh6HcKs2bfmBqF5UzN76/svkMtG8lLLPbKKZCUw9TA0n3mD/TAjtV1ie5moAsScwWB/YzEHTLXg8rANN2awUHPo4HgMIHdMB0GA1UdDgQWBBSvVt3VTF438kOOMNhDVxezJ9kiDjAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAFtVxRCvoRCgLbiHwE/j8odxsgT3vt9isAZPtkfH0/Zd+iPdfsnPyXL2v/TKu47IBXm3kurH1UY4ovq0N2yJmOkSS5Z+zflBCOtaRY/R4q5HbK9XDe500OTARIl2w0SVQXQPaQ4sLuiW6KyZEi5rzc5L9Hylm5Gu5aYoozM/rRanoe5CgJ1gCBPkkwW9gDqKictz3g3+92gOBdMckylYV+WpUmgHyQRaBaEGJAicDsI8ZntEiBtEbckKNtz6O0ctYR+GxFj55b66n0BPXE3vqV+kT4gz6vOUFcZOdP4KVW0bdCPNAolE44yK2M0ktC9skVvBhxiZXDuZM9Zk/MAaSfq9uO5C52bhF+LYP9T2Lgp8Au65JE7if671AZ9qs17Nz9ZQg4ialE2k2L4CE4FEWkeuF1MhyGlSD8ripcluctPTB6Elvo3ffBPcgZnSwirswGlc26cFwHciUyPe1odNexgtzLFS8EGgkt8kPCXzrAtpuVD0YGg6dYMHNs1fLcDAyZNJbI/stsJ3yX2As6z+9JHzWAwiLCZtgFs6lWQ+7IyRperWftWOoT+3lwCK+ul2IMzmG7KadVFJ2Un0sAseM1LNKEzRaa4avqIZwAJkRUBN4us0l6sKzYeeZ24u4uNiYFKeWHV54McVxQBT9VNekxL5cvo7ap9p06nzfjiTYuV5","kid":"Yb1a+1WV/1Y="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0002","notbefore":1638313200000,"notafter":1701385200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuFC53glgMbuEwfdH97ghieGzGlgx\\nMInMhVzw4VX9NYrIuf/M6vnEofMFUuH6LIwSBQeT2ZpgonJ35a+vQllmrA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUBMl2JoBkz+RWi5SWbpnyalMO3VgwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEzMDIzMDAwMFoXDTIzMTEzMDIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4ULneCWAxu4TB90f3uCGJ4bMaWDEwicyFXPDhVf01isi5/8zq+cSh8wVS4fosjBIFB5PZmmCicnflr69CWWaso4HgMIHdMB0GA1UdDgQWBBSDC2InnziqUQroYRTeKdlO3DLQvzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAA/VLMVc8tiJgpKRZAJ9kZIWVgjDcCJT166RSzuSfF92dQy6Z9F4GdFoh1Je76gY2f9fkQ6sYuJDO6FTzstUbKDI1qzGrfKFeFHpZziXSz1Oa+fZUAa9GjOdsIyLDjszoRBLGB0A9p43VK2cGI3GBb3bu0WMLBcPmxm2jG8WpIK+w5+xpoDkv7jjIwFVnVvepgvleB6vmFMqR7GinJMp6pejtEYSstc/0InPor4TZsjzPftXgzlioapgPYmGVTQSVer6zGITALQCBWYnUJFd5YXPD/I6jttwzV4b+3t0OXMPOitBRpLe7Uc3VCTff4ERj3O0EkyYkUwS8+5c/Y7RrM+UN53FaAodfBRW6yT4VZ+YJ4+Lzr5CHsVz1yaeYwLKlUtqRkLBvUBwZciyKhtRuWG5hKSKSE3Nby/4OViIOpUgR0pZEUoAbGTXWEuAFGem1RGsMtsSU4lluqPUCgQ6N1aTdcb5pQZ334kEYdPrd8sYusZgxEo7FrJ0V4gEiWtQRdZDKNNB/dHOquE7zqUCnZmCIiBQuxsK/Bpux382DqaR/4YktRXpY9EAnUeqA/+33gL4C3kUUJAgSWXCuGsxCN40DZlT3pI/xSBbIEx1JsZp4LHJLSbiLa0J9kGe/+2o8NvEbjuz8NGr+fi9zoE99vaUkz5eKt06npXdi5GPjRL0","kid":"ZsDoB5l3ETw="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_001","notbefore":1623362400000,"notafter":1686434400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjR\\nkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUbNtFh5SyNNW36Tj3lSGsVZ1yzJkwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERuPqA8PXwAZlb3MnIn+3UajY2JjRkt4v3rI4nUuQjh23nZZ/3rDqaJ8Jbow+pKFgdWA51sZ6pQIyIX76wYfrCqOB4DCB3TAdBgNVHQ4EFgQUkqfVrNfmsMs1UB/NA0C3KVEx3O4wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQAhOMLYhWn1iV43jduVRRivgVT1jYwHmouj7nff+S7gVnxiIlX52jc/VmQDl6xOZjBHUBiRTRqjan1tdH1LvBfg1HoZWv3HaC5HbfkMu0nqItE5zbFwtJGsUpHRTSP/wrjqL83o5akkR8Uw/iIYhkLvuEKH3/ZqwZYRwOJ/NyXJnKgRuHvgsL0zbwf5X2EdbqaTtDDGHHCbg68o8CqkQ/guBP0jKHXBFWgboMQB2bruquGqVO2xKIZIU2E3sc3dhNbDYGD3KfgJbdFtnbISvxaIfnCn3anZtQgonSsHc0LWIpgobY+NxXSNfBKzICdI350hhmnHz2NS2VtrF0Xa59kZd/WMPcOzlfKi6aVI/Y+LcpujeO9ujlFGNU6aMxi2s9RWy31tjWxsOmr/sbEKF25YGuTWwvqe/MgXzpbTF0C1lVcARXaBVT8Q18nNbLLK/VLAtzjLYTblFM4zdXA5ZnfCqXDqZZathkyyf8aY/svDELxROVm72F9GnYC/OqnGeCOed+Iscp8ne8HUTgT0iNFiAR1pRz25v047QFE7G7jwo4YTA+ynwCxnVaoK3pkyfIiXstyPxMpu3Q7t90br/mAPDCWDHFpvxqvPcRlMpd3p5JcjiurGreGbivgPdJYGRPbWb/Kwp/99ACqZFA8FaGL7aP+ivAO6cBv6DNF2XXvoww==","kid":"e+bFdywyJQE="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_BK01","notbefore":1636498800000,"notafter":1699570800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEw85KMUnYZdEdDYh5hyBfVFCJEUz4\\nbhbItd92P5Mn3sXQMHRJ4gCSJlNHMDaehYzYHQQNun1trn9fyQ89jUVHVQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUIHkOe/e5NZZz8nE/r3Qh1delIC8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEwOTIzMDAwMFoXDTIzMTEwOTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSX0JLMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATDzkoxSdhl0R0NiHmHIF9UUIkRTPhuFsi133Y/kyfexdAwdEniAJImU0cwNp6FjNgdBA26fW2uf1/JDz2NRUdVo4HgMIHdMB0GA1UdDgQWBBSo6rsZAC0hV0TGvuC8k6tflOShaTAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAHg8WLw8DxxxXFp6XXypXncQyGA4HFmZSMLJKPU01rmjqpLeR+5/gAbRj0OVhQYo0B3kHNUNlA24I2i6Zzx7zKjODdCWaKsZYfBeOttVVETMs+s0X7a2V/9P/uCj8tkYOOxCnKyv7TiWn1rfaHZxJS5Wqooy5IyerATOhueiL9ixorMAqWC5oaqactyL2psTuQWRjYBNtiNJgyjAXxUo7jITJWE+gGJkXwzBU9x1EcFnCoR5eiHHRdjQWiATLEgqcbWrYymgyj6D8o1QHXS2cOWlXxVpb4a1ghXFKRbN8yblgHSB2UE6ipBS/xqcbtycHpwy1Vpja9VG0WR/K4U10zqq0XHXHQl+RMPeKQcYI0qtPKH3yDBGM+rXNiaTnmRHASx5p1fYS//7SK22xIBto2qOO2HoIoNHkI6iYJFPk9g6JP2FBaH0PzaWaX4Qz5Z/TOZ4hfKEOv+0+ZOcIKvguT+DownHQjr2EjsOKB0l0npRtbk9HtRwh0TV1Rv88Fe/ea6rkKobRXBT+9EHKkWYGNgaMrbzNg4JqYOHywAivq/XmvTPwkVpdpplp7/sFYs18U08qL15r9lF5ztwzGYrgEobsdmOYcunVbIBVJ9G+miTc08ezKZga7Wr67l0L2FizmdbWepidnz1E26n49l5PXmkA6hCTjWmjwGd0X1MHlid","kid":"eOvGe2r9RbA="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_002","notbefore":1623362400000,"notafter":1686434400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g14\\n4vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUQporYv8Mt3ziR1r6G4s54HzRVpcwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2sQ7slwQ+IQrSLZwgIfafTa2g144vB8OXnI5WU67BHfTazsPcfNbWUj5uq/fFB5EEblaSEpRA5YwhyfAEIt4qOB4DCB3TAdBgNVHQ4EFgQUxhlqVg/2EyJWoDdVGkyJrsY4CXkwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCbA+2eQnPJWMmh2eIH1gMJhggl5GSmOBFKeXyC4jeYQSDRY97/rsDWRXAYtE4DgZQO1cZcwsM4ybbZ+khmb0iCeO/0oiKIux8FU14B7zFksZFxZpbUSAJGD9lE1xRFnfUIyoPL3lza7lWqZ8lSfLuoqoN4mODkGpPYwWu/GC8sR3ynDt2jhrdBcLnos3k47+4ZRypwDnv9FRU4/9fEnl3Y4iK+hUtq83tI5offQETsXIq+VMmcw6zmeUTaMcHRnnMo4WknrSHbe9x1MOwQmADn7ZjYzMooI4TyM/dzo1IOH8iovgMbJP7zxWqp8zgtqZPpDtp500V9yCBjGCQWgRofrBhUojKj4BkGslCZaHHkRqp0A7WOIejCpCYwNRhom3Hu8oClJ0fGcIEIrdybYISYemClnbSlM+tXt9vATf7oMRZgXSGR/9HrY95naG5U7/+eHRgm3qHAJbbbTDHET7ba+Wiq9rnYScChSH/bMN2yLsuBcpVozokcX6k2l69KVzAsVtKCjPS/ISBWHDiEaVx++RyPB5YfbVX7ykJ4SaWX1ED6DLeszCdcLNb57i1Xu35kb1SGh+CUeALUEqBtJUcEheLixnTxJIHG2xq59a560SsZBdMf8r/qYTz9DqEgBXPSlNeHn5aIG/2u0bLrM3Q9GvBk4zBj3C4zWZJVUTZBNA==","kid":"eQOY6BDp+vM="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_022","notbefore":1631656800000,"notafter":1694728800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx2HtKUYnSxJw/bgED+2LJQMAIjyA\\n+I2plnVS50JCXaIALKstac37wB1lUvasfdvbE+nNbCvMkGPdMjLluMfT3g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUHHuaV60Jmxj0/Safb44HGezp2U8wDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxNDIyMDAwMFoXDTIzMDkxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMdh7SlGJ0sScP24BA/tiyUDACI8gPiNqZZ1UudCQl2iACyrLWnN+8AdZVL2rH3b2xPpzWwrzJBj3TIy5bjH096jgeAwgd0wHQYDVR0OBBYEFG+4PXS0sdtKNozOKQXcYVDA1Hn1MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAkjEVtzPSxFVMTUece3w7PeM4Q2fOn+MnaN60g6AusxnUUZGHErNnmjxVeU6isLYPB9gCHB3b2yZYXHh8IjMsf570yiDhsWBzwRjQc8a6uQoZSrCXFyVuvAGZ/hXWDf9AIKQrbrg/YlsN0qnhs7x3VsGZ62XHCQCBup2wMdW4VOa76YFgskKITmVB8RNE/r7sQn9tRmGW7RFC2f78v7vm8rshqB/6LFtwRe8kcBmRSw5l9pVMKHYLPW81NaEYN1BB3BNH+BH39rg89FPuuLMcO70Ow+1g7ebD+UH4VbgfhSrx9XKP5+FtQWTsatHdVg6vYYNPa9TR9/9e4Q3j3BAfnIdmhsT4DuRy9P+En9WZmg4NNFUVr8adlSKkiZOoJKSQh9TOavF4Ikvd/BD0S1UdjprApN3XauDRqvjKn4itsLc0m0ctUE5e234CLMbdNJM6ExPG+ukAdtK5V9FXwdyvl0+xVIBY9nI43z50KO5ZeyOWnqwRWCPqZ11FLuqFvoEpQPpx3d2Nc/IlQoalLWXtZYPOiEklhqAC7p1Qa+AG2RgsTxyIaMzCANjCDIFMBzcO6EbnHDPR9L5Xy4wqiLeQ06zeU0YR2WF+9DVMDR5j5lUR5QWFCDTK/B8ObjdsZl/Y9Qd7RoQT9wbtAa1+MpCXk7TnoRGG1HSdhi/yee661P0=","kid":"eUVY16rD2Kc="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_019","notbefore":1623708000000,"notafter":1686780000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEImIFaugzwB5f/VyfQ3KTfTSoukwA\\nPVSgHZWrtrc2j4FuAUpw/ObRnA9pBjN/HdUc1zcl9SO/vsCEnHkXhxjz4Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUNWO7+/2lmGQGT1cep5petfsOFocwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxNDIyMDAwMFoXDTIzMDYxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAxOTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCJiBWroM8AeX/1cn0Nyk300qLpMAD1UoB2Vq7a3No+BbgFKcPzm0ZwPaQYzfx3VHNc3JfUjv77AhJx5F4cY8+GjgeAwgd0wHQYDVR0OBBYEFF6mKwOiAheaIxTCkdVKd8zgd7urMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAu8BaLZXFj9/e2/a59mBrOhY2m5SpcAoayxF3zOkIOt7LNX0QqHuomOyGLHMnAhNALgS2vhDXD0hhs96ZcKaystlMePpYsVRyaYa53GwMrGHiLwFxH5qQNClCcktAP++wCcdQXzTyZOn9/GNdmquW1PNMLPCEfqlnzWawdpITr+CYMXa9R5BEMmdX19F41HcoPRn9/X2uHW/ONmBywTwJ3s0U8F5HF21buZtxVDvX4ey+qINBru4MiGwgRCsklS9kDbl3ODUox0lwhs2VgQzqjALF4xYgsdN2LJezrwAiL8GMRAenmX9eDdgzMGnjKFT6yW8BCrPsyUnM15RAou3BrwIp6oxXHnR8wbeKG7pzZZY1J4zk4yYyihwxguWbUZGksJsNAQoNdNHBZtc8a7Oj5onLyUIetd7ELXxdk8uy7WVFeye5V8qJRhWrFyhWWFscQeY8GktefXiGEh6fxGfRU5R5b0PznxfMiA3olad3s17dr+jzqCM/hcY2FmUTjYrSrAyrhHdmCYIJ3US71If74UeMs6NZnQRRiu3tbAX+TiDOHsEHEIOHldbyQqFfclyiC26fHTqcNfIAxXPmPDQ1jpEmhRjFDlOWHoSnzsGZi/wa1kmSb6+2uHgUP/C/O2oi+yAk8GpwpEi8Sgv+HH/p7z0ympQK8IUOG/4K3/urdto=","kid":"fGLuvg6n5wk="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0005","notbefore":1643756400000,"notafter":1706828400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuJH/fgV1ST2egWe4mJXWL6e5pu33\\nF08BzsYkDCiHKFIGtXj9LuOm+d6xiBreJ7NPzGxQP1Pt/UzRAnDsjmsAgA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUcnYrQMFgK1Fy648tt2Nq9kP7j7swDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIwMTIzMDAwMFoXDTI0MDIwMTIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4kf9+BXVJPZ6BZ7iYldYvp7mm7fcXTwHOxiQMKIcoUga1eP0u46b53rGIGt4ns0/MbFA/U+39TNECcOyOawCAo4HgMIHdMB0GA1UdDgQWBBSw76s2nUSROAzjhc98PGBEguhsMzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAIlg9HMtb7I0/zvhB/XZMHBDqRQ6cDUvT/NeVfavcNqpJ6ZAxA9iIRTObsjkryqLfCAVzclXHUydiuX9K+KhjYVIKJQqU5Bng+GJOyXUYIy1RqKGVdKxDpMFPNQwzXVAQTjDvlQAJTQLtWyJnZ2Z3TNUOJXfO+9Su2MEr1InFHSAhgh+sx+R9uFMGcyRdho6VlxbyMlNPfi+UsT1+9L00m62kKXekd5Pm6tkj1PgRDnbAfTKowJMDxGgCOTvf6+atNwdYhO1egGREWVv8jPmH+WufBLw3602wzbQN/DJ7KEphVcz9vmeVt7r9TWMTmaqObgR1DIPyQHOssWhfA9n078dRYEUtJylDk8QWBydS3VTzcLBgJA8yroEZmQ3Y9nozweLrYaq5mnmUd1ZQ8HAdQuasjYJpZJSOmBuJIVA/oyGNAjJ6JJQFLKTnkRI0w+lH2nBDx7/ldEKXfWvqUqjAH9cN8P9nphBQ8ZY3C/w4F2R2naCf/WY1xpGSky0g2XZpBBPjluGKx1D+s80onWTZnQFgYT8RIaJnxEN4hgEG+/pvPH/QUfEnc4nek1nnXK6/l5n7AUeGg920H46+MTFNax8qlxSBvbktGckpmTIPW0wmr8SyJd9pD9W5OPhupo/JPfTK/hMKN/2jlWR4qKmuxEOiZkOCnOe2OjC4pH0JZgv","kid":"j95whXY9F8Y="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_012","notbefore":1623362400000,"notafter":1686434400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQ\\nWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5lQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGjCCAgKgAwIBAgIUdhAMHzJmtfI9KC2HeZuteJ8+o3kwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDYxMDIyMDAwMFoXDTIzMDYxMDIyMDAwMFowRDELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRMwEQYDVQQDDApEU0NfRlJfMDEyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7jO1wt+KJfoKi9O5dydU++nfENeQWdVACVEwAdquyYT6CEWfo1xG1tUcMhKII77XJbGK+H2nyAuCsJ0gTfT5laOB4DCB3TAdBgNVHQ4EFgQUowemG/S5PIzFStnYia0U6RWU2Z8wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQBlqQgxVgPA/EwOPMNUY4OJm4vGvxNYc3LU6R5/5q7hRwa04yTuQOwyRzTcMgJ211G79lsFwiprgzN0kixDYRrwa1NflFQS7Ygi64qGa1KZqDziB1SqDYiHXXCkkTTe4H/vkpZkH5U/+8jVUYI73q7MYIskxgHc1OZV1oKMWilU8rSdWzDQHH6WRk2BUuTORIsGpT0U8eBQQUaNhY8V0GDkKLwrqIWEbKC6ylLa0pGNYM8QMHAvV1SurqdwohC4/6ToNzypyYNctOJUTcgCyDpKdfQ+xWRdFDqje3XUdIRByEHAb7o9/F6H9NJoN0gyVF6YyGAYLD6zBfYhpnPXNxDCa7QltXogVi1gJFglsAVrQabTMXsA4/1+IOrdqMv0Ale/jy+0gEWZOHzUquSQTpxVz+Gj2j9ZXLJPzRSHg7O+LjxNON3mz/jl7cL7wjwbKqnMpYBALvedavnDetISU46qo2QwPO3qAwWF+3/17Mcb2a7IkhlHVKxNgGOEpVAZOQE8ritoVZV+B6xbpnNY2J68vZFqYy/BnkgJ+aL/9Uq0AqA+1Ivsjd2P+Clk5qpm0ZnQ8+CzaEiNENBRNE7aDFohgkezqET1gilIkvGoqDiahw/3hbr1BF848++6+ES20vUSxK2Uga4JQ0MGaKaKJyyAwwYO1MJITQosvt1JwtgiwQ==","kid":"lrxgMs2Duac="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_021","notbefore":1628978400000,"notafter":1692050400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1PApTQ/nFA6JcYUuo7GgP+gPSKf9\\n8BQh88IKHOt/yNS8ZrjxjL+lVY6EH4yyQdbQZGqS9d2Se5dxNwx5C3jxkA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUPUAmrN9wBn+eVuHqMp8b/blfPPMwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDgxNDIyMDAwMFoXDTIzMDgxNDIyMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNTwKU0P5xQOiXGFLqOxoD/oD0in/fAUIfPCChzrf8jUvGa48Yy/pVWOhB+MskHW0GRqkvXdknuXcTcMeQt48ZCjgeAwgd0wHQYDVR0OBBYEFIRbucEIacei+qS6DFsuclGQo2o7MB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAhYhTafMjVKmyAFJhTx703KE211fPRx3YlWid6JeUNDIuYTQfIC0yPlvtaFM4Z9TVioHcTwweEfqNi10sGVNbWmWAk1RZhay01VCzzsCVscNmi2/7n+qAIHZWgLyAOjJZ2jVDidC8MWGQjb/qdpu1zh46AIiVmfUfhyvBfXP7dQKgx+nPrV+HhxwuaVGci/KccFIHoOu0rttjuUfg2HCQCr4CjLKZ+RHXny6zjfD3R9T1scndEkJot2L/f0lIIZez+oTx/Wo8ivNoy9C9T3py6as2AChlz1rXSNPsdJZ9M2pcCk8z1I8fAspOu+uEevXPig20cxBz1kJzHrAmvYPTB9JTwZHqek2wriAQ/7Oy92hWxr/6tnkdPC5aKUz0nEYBvJWWq3qO4O1GBXCBt8VdXklgPHvZCym2Yc1XKMdhtMVNpOOOZV6SoSTjoi6R3Eu2VSMQCd8RKYc7DjLss0FF6y5qYjBqmizjV5MKTxtxKFA62QUF0jI/9DypU1Pk3Vias9RpFkLiHE3UcVdGMbTvAc4hwH/bkOtg0W7lqnGsJTWdc8MbnZ3blVtrXylveHA/IXgERhyI3J0YCg3pWjJbEwnEqltUa0n93o0S6sDv78lt1uKAMre1+JUQ0lNNHldtljV6dvcQ7R+ebs3GEZUyDI20fmhIcNZCtmOehZm5fyM=","kid":"mo/w8S8rZ0Q="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = CNAM OU = 180035024 CN = DSC_FR_028","notbefore":1644879600000,"notafter":1707951600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDFL/JfC54w5DhacEkzUU1ni7QALe\\ne86PYN+pLto0V+CXCRch9j54eDQagr/xGcyP3UBThBUnpqtEG/CtBHvExg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGzCCAgOgAwIBAgIUPtrkrg2WkDHMSTavB6nBxxSKE2kwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIxNDIzMDAwMFoXDTI0MDIxNDIzMDAwMFowRTELMAkGA1UEBhMCRlIxDTALBgNVBAoMBENOQU0xEjAQBgNVBAsMCTE4MDAzNTAyNDETMBEGA1UEAwwKRFNDX0ZSXzAyODBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAxS/yXwueMOQ4WnBJM1FNZ4u0AC3nvOj2DfqS7aNFfglwkXIfY+eHg0GoK/8RnMj91AU4QVJ6arRBvwrQR7xMajgeAwgd0wHQYDVR0OBBYEFEK7//liPw35XcS3wODcluwZM1CNMB8GA1UdIwQYMBaAFL6KLtbJ+SBOOicDCJdN7P3ZfcXmMAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgeAMC0GA1UdHwQmMCQwIqAgoB6GHGh0dHA6Ly9hbnRzLmdvdXYuZnIvY3NjYV9jcmwwGAYDVR0gBBEwDzANBgsqgXoBgUgfAwkBATA0BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAKGGGh0dHBzOi8vYW50LmdvdXYuZnIvY3NjYTANBgkqhkiG9w0BAQsFAAOCAgEAdxpY/iCo8yx9FLLRjfApnDHj6yQJ9yTEtGNRCVcPoUtFQyM3fv1Ep9oRUpTcHYD2Kt857fLENbV+C8lwAYjl+QpFViyGXSDLdyLHN6ua/qQXiKG29bT9nmRZIn3QWUrpagVcPySSpztw7d0/sfAFi05VmuQZ2UUTEhsKiR/+eoM2JOPM/m27xwsKo4g4ffSDEOqb4VCGwtKTBrKg64MHcXC0zWsaouFZNeZEOUOyXCsSjDc0zvvYj4llgC5bafbivgSRLGjO1M21vhQHr2FZDh1lokIbIo/PHGDunxVe6rbnIZMMrrhLzgBwUQP1Ihco1AG6NPFwKAxDEyt/dVPxIu5xDUjDujk2L+yf7c3tcMCXjktS8QG0y46FftIKY4ZTzPE67iWYDtRszqX6eNzkUhANjDs6nQJiSKbQLgQn/kalj/qZDZC9u/Xfpv5LDlhVZraDJ6vOXFMko9PlpOHWelN/UQL0yp4XIKfZNBZPq9lzZP6beujHyz6dMdDczXy9Xo+PZ3rNtci9UYCrpdhljifQaj5Q76cPXpJUCXFsM9JyQ4uXuGA0Q+gCzED87eOjEsKd+NFQQGpMqdEUdzZnc7veoyqOwUiwSGXaWDaWISPNNnKBQ4sAUtLIlQAYiQ/hxQtZu6DBgW2c4I3ecryp/PpJB1+m1Hvzf5TNJgHEeag=","kid":"oGix7vDtlq4="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_003","notbefore":1631311200000,"notafter":1694383200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5Pw\\nahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUaaZNZoiS7up4kcKvogrzW8iwXbIwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYhbzpGUwWZsuCEA81oAyfP87n5PwahJ99Q7M7t8AyNn7QVv30mX+GUTN3aWb91903UvjfwRlCJQiC7pLchjkzKOB4DCB3TAdBgNVHQ4EFgQUPQQuG8z6nMfreGSJOz8MdoIMvFYwHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCe8I1wV8foZkHBp6MM5QbHFNut+gQ45nTjZEOVF2wzAZz4xa48Knhl9K6JdeBQhedQBzx3jKWEpl9A4ycPbwCwS7+HlpDzC23ZaesAGPhR+VAEyYMUEH8ONbsjKIA+rg/4OIJ5byPYxnZkdrSNH+NQzEn8Pb5ZAW8DQXeJgJ/x3Wg+Ogd0iM8yNd1sMMQiO20C4eBRaOtJZnr8W3xLRYaD5sxVHSWRkkCVELQXAVcugmiL6u9MR4KgxV5qWqi66GqHI4zfbe1H+EQ67bnH17YZ+ye0r+FRi7aacXy7Xtk08zQCqhDFaZDr2H7wTj5NJIuSnZc83gAyV+C4QxrkYIbVqPVJ+bea2RGvXYrcyH9LrZdPDJqylcKOoRpvSJoCoyJ40zu4B1tiludT2HdTwN5wjVLmAvJfPT+ZKnVXOgwabm/95Xs/Y8fOcfaRzH44p4j3e65uZ4U1n/gUnya9iaiNpBqYq0c8czOquRm1CJVf/shRkqmQTw7p8BaMygYs2VrS521LbiEeZALpG+sdoVUQfMRN8Ii2+RrJVu+AWUdz93+u98TRDodTRKfCIJq4/rDo9yepiKSgUjaxvvgDszQLcqHBFzHB9Y/Gv+l8YQzIKK9ZxFVEjEDX++heFPYC7C+LQToZcn9CKZAC6M3D7rRBEZ1ibMpVyEW4YXu9tu8RfA==","kid":"pe6raiG2dWE="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSC_FR_23","notbefore":1637708400000,"notafter":1700780400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2U0nHQxTR9PPb0QwY+YS7qJs9XDN\\n5a9fc+lCqTltrFE5D8kEZMRFY+qNhMbo5JY4VU473btztC0zWP52tgFH+g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGTCCAgGgAwIBAgIUKCG1aBTkAAn0E/gVD+HRZXrMgBYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMTEyMzIzMDAwMFoXDTIzMTEyMzIzMDAwMFowQzELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRIwEAYDVQQDDAlEU0NfRlJfMjMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATZTScdDFNH089vRDBj5hLuomz1cM3lr19z6UKpOW2sUTkPyQRkxEVj6o2ExujkljhVTjvdu3O0LTNY/na2AUf6o4HgMIHdMB0GA1UdDgQWBBQHXz8rvdiW65BcQaIdyRy4gzUNXzAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBAImn8pvfl1UnkNvTynXjRrI00kIdbn9RsUe8lKMyyOhhfV1Sia2on+Gd5AFk+IMyunMFLBcl18H9BHHfuPMVR2BleZ9u0kSboF6uYennSwqVcpmGwJSnzl/P8jq3gDz1iAXpIQoc+PtHyc0c0BJ0/TrfEx4bBoMXwRz3N3r+zaa67zntv144zbBTInrDQC62ZCO/QIjP3o9rtZnI60YscEWL8ul8TDHQWiMU5hZ+X5hpb+vkMSi+c7bSiIcMFSd9CNnaJIJ1AC1FCH62hT9edCY+EFwS5I3+s1uMW2N+upDCS8aegXYcpVqnLdvwDA3sgnPwn2cOsPuLltHA//OKIF3cOFnMPIKnn3/zM5LilxWZYxy7Lg0uwfoOMV3SnWvxv9aj4wQOxljwiorL/qw71uQHSaAEphKS5MZVS2v2nV4Pj2KG/eOd9axsTy8GvOx8DbNdGxYDnzu1zH8mkWnQZ1TX6gskoJc5U8NTcHseUTj2oUYzLLe3hgawK3gvmiugHCotj1xCJa2+qlBg2ubFYPAiK26FhW94i9b6vRuNbhc7OvRoQahdKoOvPSO/SuTvfSxxGI1XYw76ZZxwx7P5z4hb0StCjeCqTuAhWJMafHzc4jNHWnb11ggF9+9krByzdgNj2dWJqWjg1MSN+/9CjiB961SvvmERhAsXOduh/rDl","kid":"qrdfSzqcjRc="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = APHP OU = 26750045200011 CN = DSC_FR_004","notbefore":1631311200000,"notafter":1694383200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+\\n1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEIDCCAgigAwIBAgIUIxJMjNw3dr88EcIE+hNISSiImkwwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIxMDkxMDIyMDAwMFoXDTIzMDkxMDIyMDAwMFowSjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEFQSFAxFzAVBgNVBAsMDjI2NzUwMDQ1MjAwMDExMRMwEQYDVQQDDApEU0NfRlJfMDA0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzL6Rlb4x8PsN6Knac1E+85lkIce+1Zn53WIrFVIAAaXOd4P6Zpvd+MLOLzdJbxhMPF4851s9qxXzMBIMevSLMKOB4DCB3TAdBgNVHQ4EFgQUW8d5IrarC3lBI/Bj5O53KmwrwI0wHwYDVR0jBBgwFoAUvoou1sn5IE46JwMIl03s/dl9xeYwDAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCB4AwLQYDVR0fBCYwJDAioCCgHoYcaHR0cDovL2FudHMuZ291di5mci9jc2NhX2NybDAYBgNVHSAEETAPMA0GCyqBegGBSB8DCQEBMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAoYYaHR0cHM6Ly9hbnQuZ291di5mci9jc2NhMA0GCSqGSIb3DQEBCwUAA4ICAQCalwjJDDOjgInZboNfXmrdZjrxA7i65O84bWW1rnOSGZwBpdMcdKrNDiizyjklB6tSKuLH0fllMPUCMd2Umz9zTTKJG1usxQ5Yaf9BBW+g8Pwgn/mNRprogPK/VXFdLCOCmxr1/y1FEPgnecD3oBFhm4ojZywwWVrcUoPnRvqIfJLEvzvYais7y9PqkaFqW0TNyvaRq9tBYyFkvZUQuizKK10nmIXLzg6JYnSXR6awtRcZJs1eF53UQynv0dQmVZbMl/JM01y+sard38byiKzQc+v/ANI24zLHWw9iJm2/jlFTch8S2eazMEAe8EvpMqzzSOcIrmgrL/r9CQo00cFFkCGCIZWnHhHEKv+uuEPVilSJC7ijM8p5npt1PwqCCB4HWcdZEY1oCu3zjjOIIRIySZmKoailNEV4iZeAw0D++wkR1+OyywIebkaRVWKk/irrToYuvQYiTDlh1yIh7mmrL0/lULdONjsawOh/s0/vxKSyD+gkMVRzxBax7BhT3DLzj2L7E/Tw5DNL87k7zmlxcHGW8Oa6sIJwKRsTg/76frIf21u99FhfqeWkhfhZ5yTzGiJR6FquZ/tTrlq216MqICXO4QN8/p8OrP9foTS2+3FvWRWxk0pBEVZget0CtMP3PpZ+IC7gwp3wALhWtZwwY/64FUl9ZLZqId8RtbQBEQ==","kid":"rLMiGt6uB3U="},{"issuer":"C = FR O = Gouv CN = CSCA-FRANCE","subject":"C = FR O = DGS OU = 120036017 CN = DSCO_FR_0006","notbefore":1645570800000,"notafter":1708642800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0uciJTqR/3fxFNZ9yeUUoPYUx38Q\\n8OH1jFEsJqJvfN6jrx+s8h12VqrUGv/8oBY+dECMhySMeviq8Yg6kT4r2A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEHDCCAgSgAwIBAgIUdp9CXnOFuqVuiiT7jg9FodyeACYwDQYJKoZIhvcNAQELBQAwMjELMAkGA1UEBhMCRlIxDTALBgNVBAoMBEdvdXYxFDASBgNVBAMMC0NTQ0EtRlJBTkNFMB4XDTIyMDIyMjIzMDAwMFoXDTI0MDIyMjIzMDAwMFowRjELMAkGA1UEBhMCRlIxDDAKBgNVBAoMA0RHUzESMBAGA1UECwwJMTIwMDM2MDE3MRUwEwYDVQQDDAxEU0NPX0ZSXzAwMDYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATS5yIlOpH/d/EU1n3J5RSg9hTHfxDw4fWMUSwmom983qOvH6zyHXZWqtQa//ygFj50QIyHJIx6+KrxiDqRPivYo4HgMIHdMB0GA1UdDgQWBBToe/OectWamtD2LONpMXn0znvh7jAfBgNVHSMEGDAWgBS+ii7WyfkgTjonAwiXTez92X3F5jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAtBgNVHR8EJjAkMCKgIKAehhxodHRwOi8vYW50cy5nb3V2LmZyL2NzY2FfY3JsMBgGA1UdIAQRMA8wDQYLKoF6AYFIHwMJAQEwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzAChhhodHRwczovL2FudC5nb3V2LmZyL2NzY2EwDQYJKoZIhvcNAQELBQADggIBABcKi+7I0gwOKKEb8WCP+E7NTzP4Ts0L3F+bGNdeFASZhcQQAMFwtPoJOfSsO8I/9p2uXHMjawyVXlWEanb5oHWLfafCrQmROIQQQBHfuHlD0N+YdHFe1W1ItvzDeouUMUndfuBEd0q7KcdmNnoH9EnPdEt/vqLU8Pj1PKD4lI7TAL84jyxYUQKGzj/D6dKsawa85Xk6+jEucHVJ9lphPFyXatPRHf1bebu84ybCwOjuY9V96+ltzFQowlkaQO6sYw22btDlsjldpwgLBV6jhZVkWNz8rWR3Um+lX6idz4BjHnk8GQt0HKEwQdgJbrMiAykkemSghxB4XYPn6iN0nlgmTOGPJTODgOJxsvdLyX3+5gIX3OOp+3rFUvH/1LKlYGis7OSeMxDQerOAV+5TaYjHKeGZhLkJpgRym1pofypRa2gX1dVL2Un9cn9tOBmsuhl7MAM1gHbeBLlw5nBW5K49vfAZhMsqQ5X1PvyFzHVPmnhQlD/syAKzuSUABona+oUl0zkv3XxoxWZx4QZXiWR3gCfCio58P1DEBf0Y4lehMuNJ7b1sla6NXRSY97w1Usg/biDxJR5BbkbTU/00Q9zICVgtAYlV2CguUr16PG+o3kpxRjkjvg+Fo9WG9dtOTycZPNcWEAscdzpzLzmtU6iXQEkIEyIpvfWSwTAjC3iE","kid":"uy59WoRKBUg="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = IBSALUT-CVD-SELLO serialName = Q0719003F OU = SELLO ELECTRONICO 2.5.4.97 = VATES-Q0719003F O = SERVICIO DE SALUD DE LAS ISLAS BALEARES C = ES","notbefore":1621857600000,"notafter":1684929600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbxlQ/UTz0AxZWF+xQs+w+xveq5Ec\\nhe9zf16LnDFYY/K8pZ6l6sb2KlXw8Z/kwopzzbv5LCX1VxLsGO9Rs9OzLg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"/IcqIBnnZzc="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Servicio Extremeño de Salud serialName = Q0600413I OU = SELLO ELECTRONICO OU = SSII 2.5.4.97 = VATES-Q0600413I O = Servicio Extremeño de Salud C = ES","notbefore":1622097780000,"notafter":1685169780000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEManlPIcO9J8UBpHCAbku/KkAfiBr\\nGLIre1buTIzhhoncL0YIO+DQ9uPs6UfzPKXzQq791V5I5avhmpQ6j2zFsQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIG9DCCBpqgAwIBAgIJPc+ehmuitG50MAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI3MDY0MzAwWhcNMjMwNTI3MDY0MzAwWjCBtDElMCMGA1UEAwwcU2VydmljaW8gRXh0cmVtZcOxbyBkZSBTYWx1ZDESMBAGA1UEBRMJUTA2MDA0MTNJMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzENMAsGA1UECwwEU1NJSTEYMBYGA1UEYQwPVkFURVMtUTA2MDA0MTNJMSUwIwYDVQQKDBxTZXJ2aWNpbyBFeHRyZW1lw7FvIGRlIFNhbHVkMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDGp5TyHDvSfFAaRwgG5LvypAH4gaxiyK3tW7kyM4YaJ3C9GCDvg0Pbj7OlH8zyl80Ku/dVeSOWr4ZqUOo9sxbGjggSVMIIEkTAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgYUGA1UdEQR+MHykejB4MS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzErMCkGCWCFVAEDBQYCAgwcU2VydmljaW8gRXh0cmVtZcOxbyBkZSBTYWx1ZDEYMBYGCWCFVAEDBQYCAwwJUTA2MDA0MTNJMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQUxdPNzC/Il1XWDN20ng1o96m0VsYwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0gAMEUCIQDeGN2d+QQRwbV3pdNBce2QAkPPMWgdDhF/oQpFbrRpDQIgOPNm6ULvRz5eGpbbZmeNExBumTF/U3IAGhtq+VfCjek=","kid":"3IsdmTYkAAM="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = GERENCIA REGIONAL DE SALUD CASTILLA Y LEÓN (SACYL) serialName = Q4700608E OU = SELLO ELECTRONICO OU = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON 2.5.4.97 = VATES- Q4700608E O = GERENCIA REGIONAL DE SALUD DE CASTILLA Y LEON C = ES","notbefore":1619789400000,"notafter":1682861400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1Tqtnz\\nC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHXDCCBwKgAwIBAgIJDDdEkclPCGsoMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNDMwMTMzMDAwWhcNMjMwNDMwMTMzMDAwWjCCAQYxPDA6BgNVBAMMM0dFUkVOQ0lBIFJFR0lPTkFMIERFIFNBTFVEIENBU1RJTExBIFkgTEXDk04gKFNBQ1lMKTESMBAGA1UEBRMJUTQ3MDA2MDhFMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzE2MDQGA1UECwwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRkwFwYDVQRhDBBWQVRFUy0gUTQ3MDA2MDhFMTYwNAYDVQQKDC1HRVJFTkNJQSBSRUdJT05BTCBERSBTQUxVRCBERSBDQVNUSUxMQSBZIExFT04xCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwQNm+R4gtY5wWQTeJ9/kH1TqtnzC97I1EZQTE54p2bJhXvLz2IFkQ7CQQebSk7cwgikTDOcvQSg50JwupMNfKOCBKowggSmMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBmgYDVR0RBIGSMIGPpIGMMIGJMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE8MDoGCWCFVAEDBQYCAgwtR0VSRU5DSUEgUkVHSU9OQUwgREUgU0FMVUQgREUgQ0FTVElMTEEgWSBMRU9OMRgwFgYJYIVUAQMFBgIDDAlRNDcwMDYwOEUwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBR0F5hsHIJ6Y7MLOV4IRJYpbxoKgDAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDSAAwRQIhANiNJAq66hiD/nftp0jcuZQJtkHq0LiGFxpWmKCnCClcAiAVLvoNwAKGUOPPJ88g/UPTytviavcuFfaN9F5Iw0fVhg==","kid":"4Qmniw7B0gc="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Gobierno de La Rioja serialName = S2633001I OU = SELLO ELECTRONICO OU = DIRECCIÓN GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS 2.5.4.97 = VATES-S2633001I O = DIRECCION GENERAL DE SALUD PUBLICA, CONSUMO Y CUIDADOS C = ES","notbefore":1621587300000,"notafter":1684659300000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqF22rG5bDXpWn/tKy358h2KwYyaS\\nKzCZV0HJptUQq7sWxfeDE86HSoebBrpOvpjhZX2/ZkTF/YRlkh0ztnkclw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHVjCCBv2gAwIBAgIJSC0ZeCXmMXCnMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTIxMDg1NTAwWhcNMjMwNTIxMDg1NTAwWjCB+TEdMBsGA1UEAwwUR29iaWVybm8gZGUgTGEgUmlvamExEjAQBgNVBAUTCVMyNjMzMDAxSTEaMBgGA1UECwwRU0VMTE8gRUxFQ1RST05JQ08xQDA+BgNVBAsMN0RJUkVDQ0nDk04gR0VORVJBTCBERSBTQUxVRCBQVUJMSUNBLCBDT05TVU1PIFkgQ1VJREFET1MxGDAWBgNVBGEMD1ZBVEVTLVMyNjMzMDAxSTE/MD0GA1UECgw2RElSRUNDSU9OIEdFTkVSQUwgREUgU0FMVUQgUFVCTElDQSwgQ09OU1VNTyBZIENVSURBRE9TMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKhdtqxuWw16Vp/7Sst+fIdisGMmkiswmVdByabVEKu7FsX3gxPOh0qHmwa6Tr6Y4WV9v2ZExf2EZZIdM7Z5HJejggSzMIIErzAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgaMGA1UdEQSBmzCBmKSBlTCBkjEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xRTBDBglghVQBAwUGAgIMNkRJUkVDQ0lPTiBHRU5FUkFMIERFIFNBTFVEIFBVQkxJQ0EsIENPTlNVTU8gWSBDVUlEQURPUzEYMBYGCWCFVAEDBQYCAwwJUzI2MzMwMDFJMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQU7oukZ17hZNqgXn+9zb1nFVmNAdYwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0cAMEQCIFAVrmKucmULegrWgBKqAHeiiJ6VmRGXBVo5LrvtuXwnAiB0+buKOXmu4gpE5vu2Du0seQ5DdaCsLOS99ZTz6Ea0yw==","kid":"6ag2wJkSHtk="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Secretaría General del Servicio Canario de la Salud serialName = Q8555011I OU = SELLO ELECTRONICO OU = Secretaría General del Servicio Canario de la Salud 2.5.4.97 = VATES-Q8555011I O = Servicio Canario de la Salud C = ES","notbefore":1619788200000,"notafter":1682860200000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEblis8RR4Oc4Xqq4RZdhrJ0DnkAvK\\n4vY8AamWbFg9T7OG17La8TJYTq3FqJJd5KttTP71GojxRF0REKpF+uwAtw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"ARrNkCRtprY="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = SELLO ELECTRONICO DE LA CIUDAD AUTÓNOMA DE MELILLA serialName = S7900010E OU = SELLO ELECTRONICO OU = DIRECCIÓN GENERAL DE LA SOCIEDAD DE LA INFORMACIÓN 2.5.4.97 = VATES-S7900010E O = CIUDAD AUTÓNOMA DE MELILLA C = ES","notbefore":1622213100000,"notafter":1685285100000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEe1XUTCn6DkdbSOKlyzczFWQfDvtP\\n31uGdjzVCzAkuxorNeEX3F827gnycL/mTzRm8lfDxz64lEUcTww0I7unwA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"BEnvMVnNFK8="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = SELLO SAS PARA CERTIFICADO COVID DE LA UE serialName = Q9150013B OU = SELLO ELECTRONICO OU = SERVICIO ANDALUZ DE SALUD 2.5.4.97 = VATES-Q9150013B O = SERVICIO ANDALUZ DE SALUD C = ES","notbefore":1621599300000,"notafter":1684671300000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt3OX+XF/LZlHff6ZWiHRqQu4WBrg\\nzNZYz4wFJkwkBmk/z0ROsLJ4FlwOLPs2cUEIIV0Pu1cmnngva6+EzQpbAA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"GMFMBu1RlCg="},{"issuer":"C = ES O = IZENPE S.A. OU = Peer CN = iCA Izenpe","subject":"C = ES O = EUSKO JAURLARITZA - GOBIERNO VASCO OU = SELLO ELECTRONICO 2.5.4.97 = VATES-S4833001C CN = DIRECCIÓN DE SALUD PÚBLICA Y ADICCIONES","notbefore":1622208492000,"notafter":1716902892000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8PO\\npQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEEjCCA7mgAwIBAgIQA8IozyvkMlFgsO/sU+TnrzAKBggqhkjOPQQDAjBHMQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xDTALBgNVBAsMBFBlZXIxEzARBgNVBAMMCmlDQSBJemVucGUwHhcNMjEwNTI4MTMyODEyWhcNMjQwNTI4MTMyODEyWjCBpDELMAkGA1UEBhMCRVMxKzApBgNVBAoMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08xGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMRgwFgYDVQRhDA9WQVRFUy1TNDgzMzAwMUMxMjAwBgNVBAMMKURJUkVDQ0nDk04gREUgU0FMVUQgUMOaQkxJQ0EgWSBBRElDQ0lPTkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKMpkfLlexSZAyOl3FjSomlb4P8POpQb7PYz1bg8uca+S/l/hpPiW0U2Cx5gSVvodEJOJdcbMMCgRoGHHdwD+1aOCAicwggIjMFoGA1UdEQRTMFGkTzBNMRgwFgYJKwYBBAHzOQAGDAlTNDgzMzAwMUMxMTAvBgkrBgEEAfM5AAUMIkVVU0tPIEpBVVJMQVJJVFpBIC0gR09CSUVSTk8gVkFTQ08wDgYDVR0PAQH/BAQDAgXgMBMGA1UdJQQMMAoGCCsGAQUFBwMCMB0GA1UdDgQWBBRJ5qXgwbq6JnfYaHEo99QEkecqADAfBgNVHSMEGDAWgBRzFw8OFM+MtdUG96YEM8MZfTG+7TCCAR8GA1UdIASCARYwggESMIIBDgYKKwYBBAHzOYFIATCB/zAlBggrBgEFBQcCARYZaHR0cDovL3d3dy5pemVucGUuZXVzL2NwczCB1QYIKwYBBQUHAgIwgcgMgcVLb250c3VsdGEgd3d3Lml6ZW5wZS5ldXMtZW4gYmFsZGludHphayBldGEga29uZGl6aW9hayB6aXVydGFnaXJpYW4gZmlkYXR1IGVkbyBlcmFiaWxpIGF1cnJldGlrIC0gQ29uc3VsdGUgZW4gd3d3Lml6ZW5wZS5ldXMgbG9zIHTDqXJtaW5vcyB5IGNvbmRpY2lvbmVzIGFudGVzIGRlIHV0aWxpemFyIG8gY29uZmlhciBlbiBlbCBjZXJ0aWZpY2FkbzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsZGVzLml6ZW5wZS5jb20vY2dpLWJpbi9jcmxiY2l6ZW5wZTAKBggqhkjOPQQDAgNHADBEAiBtHbVrpnsLMptmRI5QL4JhOG86pqSBVQXiOUMsIkpcPgIgY/npsrzRMcUHAh7NwvqhnbgWvv1VwbRy3bxD6+o3RGw=","kid":"GuQPQRxbMsU="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Servicio Cántabro de Salud serialName = Q3900738J OU = SELLO ELECTRONICO 2.5.4.97 = VATES-Q3900738J O = Servicio Cántabro de Salud C = ES","notbefore":1622120280000,"notafter":1685192280000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEj/wPWM6e8JDYxW9673ivEvwlu2JA\\nZpsNBrr2sQW5ppku6rcqJUKx7Kbvf2Zx1AJeIS7+PQq2iNcugfD+RC/VfQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"IaGR283U1jA="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = SESCAM Certificado Digital COVID UE serialName = Q4500146H OU = SELLO ELECTRONICO 2.5.4.97 = VATES- Q4500146H O = Servicio de Salud de Castilla-La Mancha C = ES","notbefore":1621946400000,"notafter":1685018400000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDvCuOC6NlQCaL18+CEn4sbjC3NNn\\nN4jBAmZo6lrGXbjIfAQ3YWmXc3gqLnSFq84EEV6+2PFy9yyLgq4JmFAfDA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHBzCCBq2gAwIBAgIJUoPmtL83RMWiMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI1MTI0MDAwWhcNMjMwNTI1MTI0MDAwWjCBuDEsMCoGA1UEAwwjU0VTQ0FNIENlcnRpZmljYWRvIERpZ2l0YWwgQ09WSUQgVUUxEjAQBgNVBAUTCVE0NTAwMTQ2SDEaMBgGA1UECwwRU0VMTE8gRUxFQ1RST05JQ08xGTAXBgNVBGEMEFZBVEVTLSBRNDUwMDE0NkgxMDAuBgNVBAoMJ1NlcnZpY2lvIGRlIFNhbHVkIGRlIENhc3RpbGxhLUxhIE1hbmNoYTELMAkGA1UEBhMCRVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQO8K44Lo2VAJovXz4ISfixuMLc02c3iMECZmjqWsZduMh8BDdhaZdzeCoudIWrzgQRXr7Y8XL3LIuCrgmYUB8Mo4IEpDCCBKAwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBTTTGw6vTb+cIcjhzruPZDPy5v3ITB5BggrBgEFBQcBAQRtMGswRAYIKwYBBQUHMAKGOGh0dHA6Ly9jYS5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5lYWR0cnVzdC5ldTBjBgNVHRIEXDBagQ5jYUBlYWR0cnVzdC5ldYYWaHR0cDovL3d3dy5lYWR0cnVzdC5ldYYVaHR0cDovL2NhLmVhZHRydXN0LmV1hhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIGUBgNVHREEgYwwgYmkgYYwgYMxLzAtBglghVQBAwUGAgEMIFNFTExPIEVMRUNUUk9OSUNPIERFIE5JVkVMIE1FRElPMTYwNAYJYIVUAQMFBgICDCdTZXJ2aWNpbyBkZSBTYWx1ZCBkZSBDYXN0aWxsYS1MYSBNYW5jaGExGDAWBglghVQBAwUGAgMMCVE0NTAwMTQ2SDCCAZgGA1UdIASCAY8wggGLMAoGCGCFVAEDBQYCMG8GBwQAi+xAAQEwZDBiBggrBgEFBQcCAjBWDFRFdXJvcGVhbiBUZWxlY29tbXVuaWNhdGlvbnMgU3RhbmRhcmRzIEluc3RpdHV0ZS4gZUlEQVMgRXVyb3BlYW4gUmVndWxhdGlvbiBDb21wbGlhbnQwggEKBg4rBgEEAYN1AgEBAILCETCB9zAlBggrBgEFBQcCARYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBzQYIKwYBBQUHAgIwgcAMgb1DZXJ0aWZpY2FkbyBjdWFsaWZpY2FkbyBkZSBzZWxsbyBlbGVjdHLDs25pY28gZGUgQWRtaW5pc3RyYWNpw7NuLCDDs3JnYW5vIG8gZW50aWRhZCBkZSBkZXJlY2hvIHDDumJsaWNvLCBuaXZlbCBNZWRpby9TdXN0YW5jaWFsLiBDb25zdWx0ZSBsYXMgY29uZGljaW9uZXMgZGUgdXNvIGVuIGh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMIHBBggrBgEFBQcBAwSBtDCBsTAVBggrBgEFBQcLAjAJBgcEAIvsSQECMAgGBgQAjkYBATALBgYEAI5GAQMCAQ8wEwYGBACORgEGMAkGBwQAjkYBBgIwbAYGBACORgEFMGIwMBYqaHR0cHM6Ly9lYWR0cnVzdC5ldS9lbi9kb2N1bWVudHMtaW4tZm9yY2UvEwJlbjAuFihodHRwczovL2VhZHRydXN0LmV1L2RvY3VtZW50b3MtdmlnZW50ZXMvEwJlczBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vY3JsLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcmwwHQYDVR0OBBYEFLscJ0BjSAtnCqvC+ftrx00zOR5YMA4GA1UdDwEB/wQEAwIF4DAKBggqhkjOPQQDAgNIADBFAiEAsCVrBVVY0bS808dwSsBk+aHA+/JYgSGO4UpRBQ4SiaUCIDJBWCiAD1T2eZpbJfH+w1hE3g6Io5jg19ndNYDBZ0Y8","kid":"JHd4CkNzadI="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Inspección General de Sanidad de la Defensa serialName = S2830001J OU = SELLO ELECTRONICO OU = Inspección General de Sanidad de la Defensa 2.5.4.97 = VATES-S2830001J O = Ministerio de Defensa C = ES","notbefore":1622115540000,"notafter":1685187540000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE62orr7HL0POyQCqmgbbEqfcbcdcT\\n4vyfQZEPYfxk69ZRv9T8Iy6nWAyEjF0VxvknfCg/x9uig5HFWrpedW2Epw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"MtI93IMknMk="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Consejería de Salud del Principado de Asturias serialName = S3333001J OU = SELLO ELECTRONICO 2.5.4.97 = VATES- S3333001J O = Principado de Asturias C = ES","notbefore":1621860000000,"notafter":1684932000000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUvljql1ZGpwzC92AbO4J751kqnIE\\nXaCI8hYUIEArhReqJcx5qClAGSkDFcbrTPV9WuUtmDQ/NpoV+EejqBmlyg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"NCc6YSsVioM="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = Sello Electrónico del Servicio Navarro de Salud-Osasunbidea serialName = Q3150004D OU = SELLO ELECTRONICO OU = Servicio Navarro de Salud-Osasunbidea 2.5.4.97 = VATES-Q3150004D O = Servicio Navarro de Salud-Osasunbidea C = ES","notbefore":1620984900000,"notafter":1684056900000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4\\nB/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgHw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHTDCCBvGgAwIBAgIJfoL0UPrrsbuIMAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTE0MDkzNTAwWhcNMjMwNTE0MDkzNTAwWjCB/jFFMEMGA1UEAww8U2VsbG8gRWxlY3Ryw7NuaWNvIGRlbCBTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRIwEAYDVQQFEwlRMzE1MDAwNEQxGjAYBgNVBAsMEVNFTExPIEVMRUNUUk9OSUNPMS4wLAYDVQQLDCVTZXJ2aWNpbyBOYXZhcnJvIGRlIFNhbHVkLU9zYXN1bmJpZGVhMRgwFgYDVQRhDA9WQVRFUy1RMzE1MDAwNEQxLjAsBgNVBAoMJVNlcnZpY2lvIE5hdmFycm8gZGUgU2FsdWQtT3Nhc3VuYmlkZWExCzAJBgNVBAYTAkVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtdieg6q+5HvrfAd3ufPZthIWeQX4B/ytBp8iYAGpaJmlkImelmyPWdAAEH4JPXucXOsAcP1tN6vOkk0eHeXgH6OCBKIwggSeMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU00xsOr02/nCHI4c67j2Qz8ub9yEweQYIKwYBBQUHAQEEbTBrMEQGCCsGAQUFBzAChjhodHRwOi8vY2EuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNydDAjBggrBgEFBQcwAYYXaHR0cDovL29jc3AuZWFkdHJ1c3QuZXUwYwYDVR0SBFwwWoEOY2FAZWFkdHJ1c3QuZXWGFmh0dHA6Ly93d3cuZWFkdHJ1c3QuZXWGFWh0dHA6Ly9jYS5lYWR0cnVzdC5ldYYZaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTCBkgYDVR0RBIGKMIGHpIGEMIGBMS8wLQYJYIVUAQMFBgIBDCBTRUxMTyBFTEVDVFJPTklDTyBERSBOSVZFTCBNRURJTzE0MDIGCWCFVAEDBQYCAgwlU2VydmljaW8gTmF2YXJybyBkZSBTYWx1ZC1Pc2FzdW5iaWRlYTEYMBYGCWCFVAEDBQYCAwwJUTMxNTAwMDREMIIBmAYDVR0gBIIBjzCCAYswCgYIYIVUAQMFBgIwbwYHBACL7EABATBkMGIGCCsGAQUFBwICMFYMVEV1cm9wZWFuIFRlbGVjb21tdW5pY2F0aW9ucyBTdGFuZGFyZHMgSW5zdGl0dXRlLiBlSURBUyBFdXJvcGVhbiBSZWd1bGF0aW9uIENvbXBsaWFudDCCAQoGDisGAQQBg3UCAQEAgsIRMIH3MCUGCCsGAQUFBwIBFhlodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MIHNBggrBgEFBQcCAjCBwAyBvUNlcnRpZmljYWRvIGN1YWxpZmljYWRvIGRlIHNlbGxvIGVsZWN0csOzbmljbyBkZSBBZG1pbmlzdHJhY2nDs24sIMOzcmdhbm8gbyBlbnRpZGFkIGRlIGRlcmVjaG8gcMO6YmxpY28sIG5pdmVsIE1lZGlvL1N1c3RhbmNpYWwuIENvbnN1bHRlIGxhcyBjb25kaWNpb25lcyBkZSB1c28gZW4gaHR0cDovL3BvbGljeS5lYWR0cnVzdC5ldTAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwgcEGCCsGAQUFBwEDBIG0MIGxMBUGCCsGAQUFBwsCMAkGBwQAi+xJAQIwCAYGBACORgEBMAsGBgQAjkYBAwIBDzATBgYEAI5GAQYwCQYHBACORgEGAjBsBgYEAI5GAQUwYjAwFipodHRwczovL2VhZHRydXN0LmV1L2VuL2RvY3VtZW50cy1pbi1mb3JjZS8TAmVuMC4WKGh0dHBzOi8vZWFkdHJ1c3QuZXUvZG9jdW1lbnRvcy12aWdlbnRlcy8TAmVzMEoGA1UdHwRDMEEwP6A9oDuGOWh0dHA6Ly9jcmwuZWFkdHJ1c3QuZXUvZWFkdHJ1c3Qtc3ViY2EtZWNjMjU2ZWFkbHAyMDE5LmNybDAdBgNVHQ4EFgQUDoSdwvhJkRliLuZyPLYo9xeX1vcwDgYDVR0PAQH/BAQDAgXgMAoGCCqGSM49BAMCA0kAMEYCIQC5rwYPPmeafyGrOsjX/SeqgFtgrqURrFrnbwC7QvM6MgIhAN4Pl5n+ACj+56aPhHsHRo4xS2ZeXShYFQQpxUCM9R17","kid":"YRYidQ+wetg="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = CEUTA serialName = S6100007A OU = SELLO ELECTRONICO OU = CIUDAD AUTONOMA DE CEUTA 2.5.4.97 = VATES-S6100007A O = CIUDAD AUTONOMA DE CEUTA C = ES","notbefore":1620984600000,"notafter":1684056600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgOuoVfBtfKWYpcffhNWfiCf4g4oZ\\nBdaPcdrn0HBtkQ/9xYp6FlfFAP1Ze29LaM1emnFxjyQNWV3KeNmoc/vFYA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"YU9+X9nepqU="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = GENERALITAT VALENCIANA serialName = S4611001A OU = SELLO ELECTRONICO OU = CONSELLERIA DE SANITAT UNIVERSAL I SALUT PÚBLICA 2.5.4.97 = VATES-S4611001A O = GENERALITAT VALENCIANA C = ES","notbefore":1622199300000,"notafter":1685271300000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEV61Sl3v6NzBqyCbqSb8/fBodGle+\\nb3RJ7Utk+uExDwbOxzS//2GUTRFKW43ppskyr3G60/xeJCaeN7S9Cvssdg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"ZcfkloEvfGQ="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = CERT-GENCAT-1S-21 serialName = S0811001G OU = SELLO ELECTRONICO OU = Departament de Salut 2.5.4.97 = VATES-S0811001G O = Departament de Salut de la Generalitat de Catalunya C = ES","notbefore":1622037600000,"notafter":1685109600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZjrINN6u+ZGfRqaYqgqL+yZZCDl\\nu+PKPCkVS/ysPosrontwlhznbPsq5W+d2NyxXeaUAT+lTyRKy1NAxOFqAA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"e9SH8dtWwdY="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = DIRECCIÓN GENERAL DE SALUD PÚBLICA Y ADICCIONES serialName = S3011001l OU = SELLO ELECTRONICO OU = DIRECCION GENERAL INFORMATICA CORPORATIVA 2.5.4.97 = VATES- S3011001l O = COMUNIDAD AUTONOMA DE LA REGION DE MURCIA C = ES","notbefore":1621867800000,"notafter":1684939800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEli8eKthiom9EydKvhg7LHXj/f88/\\nZeNUpfEFm6kIAr3K1NCRSv1grJnNiBc9lvggtAjqFHQSGTovtRcGHcVuRA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHTDCCBvOgAwIBAgIJA+zla2386Iy/MAoGCCqGSM49BAMCMIGwMT8wPQYDVQQDDDZFQURUcnVzdCBFQ0MgMjU2IFN1YkNBIEZvciBRdWFsaWZpZWQgQ2VydGlmaWNhdGVzIDIwMTkxLzAtBgNVBAoMJkV1cm9wZWFuIEFnZW5jeSBvZiBEaWdpdGFsIFRydXN0LCBTLkwuMQswCQYDVQQGEwJFUzEYMBYGA1UEYQwPVkFURVMtQjg1NjI2MjQwMRUwEwYDVQQLDAxMZWdhbCBQZXJzb24wHhcNMjEwNTI0MTQ1MDAwWhcNMjMwNTI0MTQ1MDAwWjCB/DE6MDgGA1UEAwwxRElSRUNDScOTTiBHRU5FUkFMIERFIFNBTFVEIFDDmkJMSUNBIFkgQURJQ0NJT05FUzESMBAGA1UEBRMJUzMwMTEwMDFsMRowGAYDVQQLDBFTRUxMTyBFTEVDVFJPTklDTzEyMDAGA1UECwwpRElSRUNDSU9OIEdFTkVSQUwgSU5GT1JNQVRJQ0EgQ09SUE9SQVRJVkExGTAXBgNVBGEMEFZBVEVTLSBTMzAxMTAwMWwxMjAwBgNVBAoMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMQswCQYDVQQGEwJFUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJYvHirYYqJvRMnSr4YOyx14/3/PP2XjVKXxBZupCAK9ytTQkUr9YKyZzYgXPZb4ILQI6hR0Ehk6L7UXBh3FbkSjggSmMIIEojAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNNMbDq9Nv5whyOHOu49kM/Lm/chMHkGCCsGAQUFBwEBBG0wazBEBggrBgEFBQcwAoY4aHR0cDovL2NhLmVhZHRydXN0LmV1L2VhZHRydXN0LXN1YmNhLWVjYzI1NmVhZGxwMjAxOS5jcnQwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmVhZHRydXN0LmV1MGMGA1UdEgRcMFqBDmNhQGVhZHRydXN0LmV1hhZodHRwOi8vd3d3LmVhZHRydXN0LmV1hhVodHRwOi8vY2EuZWFkdHJ1c3QuZXWGGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgZYGA1UdEQSBjjCBi6SBiDCBhTEvMC0GCWCFVAEDBQYCAQwgU0VMTE8gRUxFQ1RST05JQ08gREUgTklWRUwgTUVESU8xODA2BglghVQBAwUGAgIMKUNPTVVOSURBRCBBVVRPTk9NQSBERSBMQSBSRUdJT04gREUgTVVSQ0lBMRgwFgYJYIVUAQMFBgIDDAlTMzAxMTAwMWwwggGYBgNVHSAEggGPMIIBizAKBghghVQBAwUGAjBvBgcEAIvsQAEBMGQwYgYIKwYBBQUHAgIwVgxURXVyb3BlYW4gVGVsZWNvbW11bmljYXRpb25zIFN0YW5kYXJkcyBJbnN0aXR1dGUuIGVJREFTIEV1cm9wZWFuIFJlZ3VsYXRpb24gQ29tcGxpYW50MIIBCgYOKwYBBAGDdQIBAQCCwhEwgfcwJQYIKwYBBQUHAgEWGWh0dHA6Ly9wb2xpY3kuZWFkdHJ1c3QuZXUwgc0GCCsGAQUFBwICMIHADIG9Q2VydGlmaWNhZG8gY3VhbGlmaWNhZG8gZGUgc2VsbG8gZWxlY3Ryw7NuaWNvIGRlIEFkbWluaXN0cmFjacOzbiwgw7NyZ2FubyBvIGVudGlkYWQgZGUgZGVyZWNobyBww7pibGljbywgbml2ZWwgTWVkaW8vU3VzdGFuY2lhbC4gQ29uc3VsdGUgbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyBlbiBodHRwOi8vcG9saWN5LmVhZHRydXN0LmV1MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDCBwQYIKwYBBQUHAQMEgbQwgbEwFQYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQEwCwYGBACORgEDAgEPMBMGBgQAjkYBBjAJBgcEAI5GAQYCMGwGBgQAjkYBBTBiMDAWKmh0dHBzOi8vZWFkdHJ1c3QuZXUvZW4vZG9jdW1lbnRzLWluLWZvcmNlLxMCZW4wLhYoaHR0cHM6Ly9lYWR0cnVzdC5ldS9kb2N1bWVudG9zLXZpZ2VudGVzLxMCZXMwSgYDVR0fBEMwQTA/oD2gO4Y5aHR0cDovL2NybC5lYWR0cnVzdC5ldS9lYWR0cnVzdC1zdWJjYS1lY2MyNTZlYWRscDIwMTkuY3JsMB0GA1UdDgQWBBQBzqvKX8AY+IVJiHykPj5www64JTAOBgNVHQ8BAf8EBAMCBeAwCgYIKoZIzj0EAwIDRwAwRAIgb52hsDkWShWodg6mznBV4Ut/vr0C2rgRLyV0rzHWq3ECID/elZUrZyPy0V6CdrlZxaCUIQB6jsFkAl2/wFTHC5pU","kid":"hgpHHrTb4ws="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19 serialName = S2827001E OU = SELLO ELECTRONICO OU = SELLO MINISTERIO DE SANIDAD CERTIFICACION COVID19 2.5.4.97 = VATES-S2827001E O = MINISTERIO DE SANIDAD C = ES","notbefore":1622708100000,"notafter":1685780100000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE3KVI7Sy+id+bprJ8Eh9AHtW+1qeC\\n4qoHH1oK7HN87UKH9KxQix0jq0RySb2c+5CN+kbAfsYEvULfHToz2FWzWQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"qFNF2dC+mjQ="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = DEPARTAMENTO DE SANIDAD DEL GOBIERNO DE ARAGON serialName = S5011001D OU = SELLO ELECTRONICO OU = DEPARTAMENTO DE SANIDAD 2.5.4.97 = VATES-S5011001D O = GOBIERNO DE ARAGON C = ES","notbefore":1620386100000,"notafter":1683458100000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDOg7lpxitz9+ytOAKFXxS7F4qc9I\\nfKWrj388ETiCbLEQuoYeWEp+4wXPLCF7RRpg6Zxt9iGG93ZAwxl8g05Oag==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"tCM87WnaaQE="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = FIRMA CERTIFICADO COVID DIGITAL UE 1 serialName = Q2801221I OU = SELLO ELECTRONICO OU = DG SISTEMAS DE INFORMACION Y EQUIPAMIENTOS SANITARIOS 2.5.4.97 = VATES-Q2801221I O = SERVICIO MADRILEÑO DE SALUD C = ES","notbefore":1622109600000,"notafter":1685181600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhe+kvml2tx/+/wipHR5ttSw1PdmW\\nGLpoEqzNiel2mWsZovfSBR+Jzri7NpH8s8RBSnEDc0kQTl2dSiECy9D45Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"ub6Qmv9xtAo="},{"issuer":"CN = EADTrust ECC 256 SubCA For Qualified Certificates 2019 O = European Agency of Digital Trust, S.L. C = ES 2.5.4.97 = VATES-B85626240 OU = Legal Person","subject":"CN = ConselleriadeSanidade.XuntadeGalicia serialName = S1511001H OU = SELLO ELECTRONICO 2.5.4.97 = VATES-S1511001H O = Consellería de Sanidad C = ES","notbefore":1622213100000,"notafter":1685285100000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeC6+zmnjgdAUmYG4kIPJsMwSFSJc\\nlYoKuHKcIQ5PpX4xKyM36Gp2fkKvARbyJYjduU8JzO9nrSILVxjuKRapFw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"x3ch4ml934I="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 3","notbefore":1623232264000,"notafter":1686304264000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5EtYbOu+RuUcFAu1NN1rqsuKqNzp\\nl0Y6bgg9wNKcmVLzfBO81jH2dcupHtKlp7My5KGjCyBAKvjJUSE/fnDd5g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIKbUPDyxggQcwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTEwNFoXDTIzMDYwOTA5NTEwNFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABORLWGzrvkblHBQLtTTda6rLiqjc6ZdGOm4IPcDSnJlS83wTvNYx9nXLqR7SpaezMuShowsgQCr4yVEhP35w3eajggESMIIBDjAdBgNVHQ4EFgQUQiz2ueCR4OeY2/dQbISIOzQRh20wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxMDRagQ8yMDIxMTIwNjA5NTEwNFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBADVwHF/3fcmmkQgU+HLb1LGhj4RvsR9NUkrkYHyWROt37d5D3EyqNjNIpWebfDXLnQNpEQDd/2HyaEW70citcb4ad/5RXD/hr3BjVsqnbRHOctv1+Twy9XfDM7OcDgj2tE7slsZ2dKAPEg09dq7MoClXDuTcIkBqEHuZ+dzA8PYDvITLjHtJqMKBj335tRU+Zl8WT0GGXzQw7/lRD4yE8BndK7C6MO7xC4tIUGgHP3P+kImRiPCq+pQbt78XGJBzEgCpBbe8HuXgja5yTk2AGLdCH5GxbSQMjGA4icefROoPO86uNwCekAKGFd46Li5/+JfIi9nJCd2x7PsUzAr15fzwcTks0Hk+7dZqj6gXuJpZFwoCzvY4Z0O1B99L1SCwZNXsCEevqQ5an3LUWUWE+7JhkkGtqeddockt5M8Q7omw8O4gvV9W9Y4Cbvshxy9RroTSU135NBMm3Iu0s2FdsKj3JMaE/xulRCJ4bxaEcKTdrjGaJSPT5ROgPWQj0yD7yw5j0lRGzph3Pu1o5q6J4v+w3cfWVu9Ka1H4wpQY3ip4emVaXpstg0NNPMH+JERLFy8Bg94J0uOCKAVAPMjpr9DW7/r1Ooey4a7pfdGqCb2QxUkuLr1YOQcairnvOpjjEfHbvWmKV4EGpENpI21qY54URKtoYse7tnkVtz9RrsyY","kid":"02vdAOY/+gI="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 2","notbefore":1623232205000,"notafter":1686304205000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvIs/H8NhtE23q5tR84V9WwbbdGDc\\n3hh7mjrXom4PRzjGRuSvfC9OIFLtRzOohsdnbcE62FWN+Fz09ugJcaqhtA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIX7IVIHG/M4swQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTAwNVoXDTIzMDYwOTA5NTAwNVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLyLPx/DYbRNt6ubUfOFfVsG23Rg3N4Ye5o616JuD0c4xkbkr3wvTiBS7UczqIbHZ23BOthVjfhc9PboCXGqobSjggESMIIBDjAdBgNVHQ4EFgQUvoCTP+xA0/1nmxS2GKtTaxp0TYAwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUwMDVagQ8yMDIxMTIwNjA5NTAwNVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAKT1bQpoLJpJbb3qAbYcQkZKPNQa5aisXFiLlmIBWHzPYI67BWJu/CjDOeHUPgzpcgiDe33t5ZacnccTwMGZYXnZQ8jNwOxAi//7NJkJHEtrMcYQ9pqSeKqnNwTwMetQm1u5rHjAtjMSZdyWMMjDIcX5Z2lXiPgoO548fYKrwbeCloFDk6qWrk/Jc6NKyNgVEhVvkwHLfDloS7Boln2I4eT4VfTAXt50/zEsu4KHIDpDTDMFNg5KTYugOFHOQise6z5oYmnwZB95OKfFGR0xeDR8JN+Kn2TcdiTpin87jhtyHzCScFLlWbHum9y/OKKNgK/2hWRrikyU9zo/OmHwStftOkggBSeDVtwRkCAKZpK9IXWWRNCj/gkRnVDDeg3ehQ9qRykU+BkUiMi2LhLDVUITCZhmRyS94xHP5PoCY5tUanCNxkgjYwvDHMU8hIPL8rsOdHxc7tK6jaavBP7ZbDG1W3bEcYU1oaKWvbYyPBhJPnAVDVH2SLU68gdEcdjMtiOPaH1ImERhQ2cF9KzCsU/svCoOJrEd2lQZ6xFodkicg0XN4sdXKyypdPic+Cvai/033DdiS1i7HH59hO0Z9l6I2gsJHULDMeSnJxTB9Tves79iYSRdBocm+LHfT8uvwRwn6+SmTD7/ttzHm/H/m/k1hsLPZDNMdn+kMuXCiEnn","kid":"0kAwFy+vLpg="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 7","notbefore":1630587789000,"notafter":1693659789000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7U8cYsFNOZawVgxC9FBfvNzL05Xe\\ntv6jVxj+aii7IkXcXCIiRsruAdrAHCLCtpDgIFzwLsFNwJs5ZFu+8lr6nw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIILKLkHn6rwKAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDkwMjEzMDMwOVoXDTIzMDkwMjEzMDMwOVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO1PHGLBTTmWsFYMQvRQX7zcy9OV3rb+o1cY/moouyJF3FwiIkbK7gHawBwiwraQ4CBc8C7BTcCbOWRbvvJa+p+jggESMIIBDjAdBgNVHQ4EFgQU5MUl/8big5VpHbJE35E0EJ5cuF8wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA5MDIxMzAzMDlagQ8yMDIyMDMwMTEzMDMwOVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAAQI3H/45srCJtEi5+gwT2GCEx6zV65ytEOsct9bUu41U5UDYhYp5rtaIWpguPB2DuHs1zFY7bqwiD7INyDeRIhCrBZuQkrIsBGImE+IcoXJAdri/vUOPToYxpcA3uwqH/1EOhuhSlUz8Czzb7rDY72K1fXQYCKYGNkEBEDrSC66F9bMD4ATtRb97DMZAY5QmTX8MVjSvrd9WoiroQ0YaT3Bt38SYzwY8QV10ovbo+VqkY3d4bK4zTHGFh1If2ttsPAWOLV8mc3bp6CGPm9VxfZY5tMBgVsDNcpY9LKLFGHivmsduvSFfugNsPDELnj8gBMihCtnOTzI9Qugs298tIYg8awef2GkJmdsdQX1IcQJjrw19ukgbjuGDr3EIfmDrjfRcdFdDSvE6xBIWRWa/XnrmdoKvUnuRrCFzcOSfaMBEER5qJ+dQh/08KtKPdRXvNFoyDLfS8eHRRLIkEDtd3HeuKedHclHjn/+JbazIGBYjogqXothsnSK8bDBblJnO8nAFc3AdVk6BbmjitMSQsU0oYhpSg7Ew3HxHYXGCmZ8rHLxzGOC8h/KaEcS3qP7IuyMlwnZdITbeli3qy3UVTA0jd61/HJLDqJMaYX8bvcPpcfqW5mbVV/X64il/jyNURdoKkAYFFYoMNgBz4QY9XKn1dGC1WcE7EFXAjCUMawC","kid":"Amn7EaBy1ag="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 6","notbefore":1637317418000,"notafter":1700389418000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEAM+XCsJYYmHT5wSsEfx7DF5PWT3D\\nCIbIdWjSxS2NWcbsPx7zjbWi/lMKbaSDdrYnO37o5zn0fI7LUU1LS5pKtQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIOrhc6Me7w+wwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMTExOTEwMjMzOFoXDTIzMTExOTEwMjMzOFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABADPlwrCWGJh0+cErBH8ewxeT1k9wwiGyHVo0sUtjVnG7D8e8421ov5TCm2kg3a2Jzt+6Oc59HyOy1FNS0uaSrWjggESMIIBDjAdBgNVHQ4EFgQUf89Xu5cdTN4gfMJ2P/Cv6Hx3swAwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTExMTkxMDIzMzhagQ8yMDIyMDUxODEwMjMzOFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAC1HMWC2knZxMj/RtkmRMgG+5iCve04Pv69avIHfdKLTzUDTPyEhtROjZ+IFUIK/RddtJ2KMyJbgprTZLMtOiOT18BEumkZB3L3VRyPa3PfLQ6DqoAgqvjep3tjyH9jP3Ibn2LWHKiLrAHmKl/IekWFfZcZ+gsmqRvRhUpi944X0rBD9i/Xe0T7BTS8CjCZBptIPY2/MRsvteAR/L6h/lm7S0CzofA/FnEtdD/hskVzIbgsJgSPWfUZsKLUwP7gsE71Xq89Q+BeZiUy10x1moTk/sWGnNVcGXwCobCfRnaOA6FUpBoayq3L1jvZST5l92+HhrfUOVTlbcJHOxHQe/2KIT0w1O8geLaPB8Fo8LzEX5h0PTrA/qnG7JqLE8PF/mHs1WKywDmbrx1UFwIfQknvLPdqcnHmFvvSf94BpbwN2Mk8E586krKu71rGMhZBHWmbQ+YVgA9lKt6vP+MnqSwj7RtEEfsyySGrLP9zoFa6RD7aLKBvwhnFuk3knOfdXo3h9TXJpMoLkG5BDK6mJ5zNU8+pYedDyea/QEpE4K7Ledo6RpYyTj47H46KPgyfGnb0YZT/LC3Kn99ejnf0hoHRL3zUt75BoEngLAR6g4BAyyrXoEcVpt8JtDTcAHCMMwMAD84FZBAVNcaCrPNkedX3eyBoN1bIwbGBeKhrgMrq7","kid":"SiEt1ct5otQ="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 4","notbefore":1623232314000,"notafter":1686304314000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHTBJY0Z+T5I8EmqQmrbZAr8equIc\\nKKE+YriIGw/AKJyw0ZAj1Dd2MRTM3+AEiNARxXIF08a2rhUvFCyyHCJ2DA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIbOmJZDQoP+owQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NTE1NFoXDTIzMDYwOTA5NTE1NFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB0wSWNGfk+SPBJqkJq22QK/HqriHCihPmK4iBsPwCicsNGQI9Q3djEUzN/gBIjQEcVyBdPGtq4VLxQsshwidgyjggESMIIBDjAdBgNVHQ4EFgQUhHOTxbELqlA8J5QtocLrpUvgC48wHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTUxNTRagQ8yMDIxMTIwNjA5NTE1NFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAEa+gpgHss7+IdPOrr4bzlMSavqHqybtRzSH2hVBrbZ9Ov3vVDmIksbUNM3nlVPL5gFAReHEJmXhHxwvoxyCO/NXOS+itmGkYRPHRH57xTa9XIGcwWmAnbwxVy41B/NnOMeAB2TouWWfX/ZYzKiNyFJ7JEIdaQcZ/2+55c5mlEVFMdpeDR2vmB+cgrz6j0iFxoJ1/QQeWkjfD8nr/Auy7zfm0MgQL5wZEI08A9LAKZjFbawHcJx2RWuwWFc8dLBTMxYM0ptrXYNH/dDRpuNXMuqh68Os/aei5kbolHM24bSBycvInYBYyVRTi2ABDdRpItl9BEGqPSkJoYrrB2hZ3roNNugANF1rm1Fx7hlK80QiMoELoM1RyIovlrymQb45USV2+OuEtvZ6BJ85l7q47tbwr0xxHqIL9n82t4My4M0U7cIu5SPv6qv+ubLGnbqJvgoT9Tf3QGrH5j3XDyU0V4YfvfQhcOBLNlduuA2cihdAh+M6MLRbtG9svKsrA4k0PtyB9UCtqufsfDhkjM4LRGjmylclgmDtNH6DixcFxYlK1+fikZSIPnw476WgS8/2biw2m4gAsxEZ5/vg9L/u11i853AOSsh/sFxjp62K3O5mFAvdmLAJmrofOUghoNcAzJdDbSWtHzqQYJ+BWIjoIDiJh0m8Sl5/hVv6Bh6Xtrp/","kid":"bBnmkeVMV6A="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 8","notbefore":1637317780000,"notafter":1700389780000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+vHkPlOZP+DAP5kw5j4miyzrtTc5\\nwM5vNkcNqWy4e8YHf4ZR1bEpQjRS+ksnCKfbEDf82p0RRzdtbQCdvSdsEg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIRuunuryIv2MwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMTExOTEwMjk0MFoXDTIzMTExOTEwMjk0MFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgODBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPrx5D5TmT/gwD+ZMOY+Joss67U3OcDObzZHDalsuHvGB3+GUdWxKUI0UvpLJwin2xA3/NqdEUc3bW0Anb0nbBKjggESMIIBDjAdBgNVHQ4EFgQU+Wj2rLs9D5DTRelKDWzq59tIm9YwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTExMTkxMDI5NDBagQ8yMDIyMDUxODEwMjk0MFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAE+CfZcxHrwDJmXImxn7vMOlRw/Bvy2wv+SIWHE5HOMvHa0eAbbADPz87HhyoMMnC9vDKfeEjaa8qyiVTtAcAT0yBtJJaLITEMm+uGkIHFcA3LkzLVubqFhDGUs3bqRRqvBY0+tqdLKRvWLn80XC0KpHrtppUAhwhDYZ9LKcAeDC9Hz2Zh44J8MYyYlcrGrzNvoEWE80+IHfOXkztop0P1ruwa6zpyrElbJ2AJ/Cfd39MaYxxpB2lLRXKjm1IkqjjYmolKphoF66+NLKdz6Iirtdt3i47G34ASHvu77/GHSrSsb0qsxlcQI7hjhB0jU4WIQOPKBPpdiBH5lqQ78GLe2oFsNv0FFEn3sbnmcZOLaaDzUlgcP+TqAQq0mjXZIXmTzvEc9Oc7sO7LeZWH05b3kQdywL6xa0US9Q+fpz3olPi1DAos0hC2I5Th1veQqUQ/+7EVHWaicX3W/S/+TUMHBixNr8CA3kioFGu16fDUNdyuKlrmnitpjeiELG2Dn9dkqpKDDVHPy9NLPLBY2D4m+GFxfuficry7G499rDyEkeAWjmG5xzwIgzx4zSdGVDsmBLmNNkhIoBWpnjB5+7ff+lCj93yLMfGfU3+kuWjYHd6XiymcqQSjBwzR6pzb0k2q/AsRn6ovWKf0e2ZE/yVD9LLUmUJOXoVdIRB1rizuk3","kid":"gcZRP1ogHyU="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 1","notbefore":1623232135000,"notafter":1686304135000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEExXQauou3f3g77qOsZ0rSPFjoTDi\\nKQDhG+Bpf34YyoeFkYMBML890KaqmZL4uezBc8xxg1f170qcZWHILjp4qw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIM5IkTBngr+AwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDYwOTA5NDg1NVoXDTIzMDYwOTA5NDg1NVowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBMV0GrqLt394O+6jrGdK0jxY6Ew4ikA4RvgaX9+GMqHhZGDATC/PdCmqpmS+LnswXPMcYNX9e9KnGVhyC46eKujggESMIIBDjAdBgNVHQ4EFgQUX4tTu4HFKg7kh7/7FCeP8+7D5CwwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA2MDkwOTQ4NTVagQ8yMDIxMTIwNjA5NDg1NVowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAE5HQ1OIeJz3gkH2Wrokpb2nLC/ytoe5t9zkK2LY+UmVvTP59uG1dyIWV5pv2hwYnCiSOOG82YJRfdsts3i/0NHlESPChvyoG/E97tvdjB8doTj4gCCTx1JmRpp2vOQZuQsOB5QeTY7nL3yCHZF7yniFDPQpk2WpE4tY4gxxt08hlhRs4C2iZ8jiN2DcMqJwippu0OdAca9mRFPnVs/tGjBT72QrEnPPXWu1pz1xdIW6sDbC2OhCkAMPC4qehWh00DuhxeYgkJF6cg5NOLT2iiAeEv0/DGdYsy1lM5JxE4BmWaZ9mRuvNvzf3lC6DVFHTr3R7/88RblxfWA/TH7E2TQT40JwhQ0YyhqWYC+W0T2cTW2NICedtIpAv8oECRentxzvceovuQw/BxacZUbs8WEJFW+WKGJvAeyaFrkLrze3U5UH3kurD3tG97E77wbFu31iivDmftrvWv/OSDFWpFiPkEP0pe46eY+x/KGiBZNYj6sxeC21W7CxAftQdgoOAPU91j9otI/0n/7XLV71Y1fnt02nZwDOu7ajLHebpjUtnnDsHojOAr3NQKEy836Xg2E3JtGCWWBKnkvgj1/swYBLaZxE9FEGo3nTst9TpwS8GpgXFoQEoTNSV5UBVCwT2djcZCEmhG4GPCrqeoh1c6bfTRbtORXv2HZqYgv7w6eo","kid":"ln8K+9SqfuA="},{"issuer":"C = LU O = INCERT public agency CN = Grand Duchy of Luxembourg CSCA","subject":"C = LU O = Ministry of Health CN = Grand Duchy of Luxembourg DS DCC 5","notbefore":1630587618000,"notafter":1693659618000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHcMt1ez6jhOR9UBCXlFg//cHD/Jo\\nypGzNaG4C/gYl4qQdN+Vns7/idf8DO6Fk5z+Yh+I/vQ4vUQ5bWZSwRwUJg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE3zCCApOgAwIBAgIIOZExjV2kjGAwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgMFUxCzAJBgNVBAYTAkxVMR0wGwYDVQQKDBRJTkNFUlQgcHVibGljIGFnZW5jeTEnMCUGA1UEAwweR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBDU0NBMB4XDTIxMDkwMjEzMDAxOFoXDTIzMDkwMjEzMDAxOFowVzELMAkGA1UEBhMCTFUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDErMCkGA1UEAwwiR3JhbmQgRHVjaHkgb2YgTHV4ZW1ib3VyZyBEUyBEQ0MgNTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB3DLdXs+o4TkfVAQl5RYP/3Bw/yaMqRszWhuAv4GJeKkHTflZ7O/4nX/AzuhZOc/mIfiP70OL1EOW1mUsEcFCajggESMIIBDjAdBgNVHQ4EFgQUAiIZbrncLuwgAWNZTfPNphbK5EcwHwYDVR0jBBgwFoAUGs9Hx5jlNUyPn1WrqJr548c8nXswKwYDVR0SBCQwIoEOY3NjYUBpbmNlcnQubHWkEDAOMQwwCgYDVQQHDANMVVgwKwYDVR0QBCQwIoAPMjAyMTA5MDIxMzAwMThagQ8yMDIyMDMwMTEzMDAxOFowNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3JlcG9zaXRvcnkuaW5jZXJ0Lmx1L2NzY2EuY3JsMA4GA1UdDwEB/wQEAwIHgDArBgNVHREEJDAigQ5jc2NhQGluY2VydC5sdaQQMA4xDDAKBgNVBAcMA0xVWDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAQUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUAogMCASADggIBAJrQJUzTWjcyjHZj2Na/4TuSNTolOM2bDlEBoEqUAY3rfx42rM7xJT8giWcKL75arhGgkpzEqtJeQBaq2yE/itDN9dGI35qi/MvIhkx0e94d14QwOkfMF5c9mJFMcXEbb2v5UE4cQq7Obic77cjGlSemS1ieTrjxT4yYu3LOYOcTXQqR5qNeor97zHze3esvAC7VjTFo1wcg3kK8PZV9s25q9IeiNvhzcu3IeMIEtB6sC/E3q2B1KbvkEInr7/uHMRylh4cqfyK8VCewkIDIEReudLbSjKJBAQipDnNSuTswu89vNB1nY7kdRIyISqtgoB5opoadPDEdA6DISea2dvfXs5LohgjN4zkJK8R9h7TQizFaI1PKMVADzP6e25hPA87SVVb2nDGxzlXY2tJRGstvuD6cWvtfhc9fn71VUtIsjG3iF9XJA5xYOijEM8xzqznv8GJltrmv7f/pxTOQuyb4FR5pRzVRFaft0B9igToiEDeZoq8O/jVn09fvDRa2sxeQpXvRcQvd9B1YppLdziHzVyzQ/X6iD0nuQ/8osGZyq81yMrvN1uPpROgfcleo+yatl3VavV7HRG1e1Ur0G0SZ3xmC12RRoA3m3FVSTx7WsQcy/uurcmGpAs5gf9BkcTcodGM4ktPjjpu7UvoKPysSlI0tI3TtXYY0aRICSCYa","kid":"o11W81MgYYg="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Country of Curacao OU = Ministry of Health Environment and Nature serialName = 1 CN = Health DSC for recovery","notbefore":1627981990000,"notafter":1974877990000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENlKRwpA1S14Zfx6LZuAWm9ExHy86\\no7O9ijCq4AmZ1dFu2d2wowdylJzAvbbVsR1RoxfNJPzy5dwu9Nsm0PvsEg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDOzCCAuGgAwIBAgIUExGmExTT4ef8rDmoU1gm1xnsB3swCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTEzMTBaFw0zMjA3MzEwOTEzMTBaMIGMMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEgMB4GA1UEAwwXSGVhbHRoIERTQyBmb3IgcmVjb3ZlcnkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ2UpHCkDVLXhl/Hotm4Bab0TEfLzqjs72KMKrgCZnV0W7Z3bCjB3KUnMC9ttWxHVGjF80k/PLl3C702ybQ++wSo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANDVVcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEDMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFGxsRf1q1IJFSUabsYjk8Zhu4yi4MCsGA1UdEAQkMCKADzIwMjEwODAzMDkxMzEwWoEPMjAyMjAzMDEwOTEzMTBaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiAmvnUyiPPbVM7Ds+gisStbuwGRZ/ujjlfpKU0Kxhon6AIhAM8VBy0s4syzH9gDqrayITXG1r9253IAvNyxoHFhej6P","kid":"0JzyumjttZU="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Aruba OU = Ministry of Tourism Public Health and Sports serialName = 1 CN = Health DSC for test","notbefore":1627978373000,"notafter":1974874373000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKBG1WklnURluKXTg5+tm6/S7pMFL\\nBE8cZ5xNxnCCAL5nvUi6JzSgTjAmOaUNPXVwvA2TYl/GkJNbh4TazMeF3w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDLDCCAtKgAwIBAgIUHVt+j6ML1RILakWOrokwx1vJhWQwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEyNTNaFw0zMjA3MzEwODEyNTNaMH4xCzAJBgNVBAYTAk5MMQ4wDAYDVQQKDAVBcnViYTE1MDMGA1UECwwsTWluaXN0cnkgb2YgVG91cmlzbSBQdWJsaWMgSGVhbHRoIGFuZCBTcG9ydHMxCjAIBgNVBAUTATExHDAaBgNVBAMME0hlYWx0aCBEU0MgZm9yIHRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQoEbVaSWdRGW4pdODn62br9LukwUsETxxnnE3GcIIAvme9SLonNKBOMCY5pQ09dXC8DZNiX8aQk1uHhNrMx4Xfo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANBQlcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEBMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFFtRlFbRHNsuvQN/xIEwp1U/8DPXMCsGA1UdEAQkMCKADzIwMjEwODAzMDgxMjUzWoEPMjAyMjAzMDEwODEyNTNaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBNaAhthCNLRsfnXOACy3Wc+bkJ/oGxaEnqx8S0y3EkdgIhAKlbCGuSnLbyeUSBQ00N1K+iNzc2JoaP5CNyOGDOFAqg","kid":"2Bh+2HrOg0c="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Kingdom of the Netherlands OU = Ministry of Health Welfare and Sport serialName = 1 CN = Health DSC for vaccinations","notbefore":1622471252000,"notafter":1969367252000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsO\\nNkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw89w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDQjCCAuigAwIBAgIUU0JrRUBVL8DEW1z0jx8/+KAChLIwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDI3MzJaFw0zMjA1MjgxNDI3MzJaMIGTMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEkMCIGA1UEAwwbSGVhbHRoIERTQyBmb3IgdmFjY2luYXRpb25zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/DBnhBhTf8TkfsTn4tLEb3mQLCsONkZbY4I5i0zh0WhsDupDshGnu4TE4AgH6Y/uBnsJ+D6QkVAikza/rtw896OCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBRVYJgZWfyzk3JJwB0HVdom7P7AxDArBgNVHRAEJDAigA8yMDIxMDUzMTE0MjczMlqBDzIwMjExMjI3MTQyNzMyWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAMMFkIuctSqsZbVBvE56YEZoxrF6m1n+F/IajFdNsRyeAiAC77Q6e6IOsDkPwq/ajPA5vslzeFETwcqNodsfAcJJEg==","kid":"3lTmAZX19GQ="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Sint Maarten OU = Ministry of Public Health Social Development and Labor serialName = 1 CN = Health DSC for recovery","notbefore":1627927711000,"notafter":1974823711000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQb+DcAtDpjI4ftm5ICNC5KGz10zJ\\nvY682GDCREwLupvC17QzWFvc6S0jbk2NJt2VY5V4svj2FfLGkSWbUqUFnQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDQjCCAuigAwIBAgIURZYaoJKl/Wy6+MSJA+7KBAfLQpEwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODA4MzFaFw0zMjA3MzAxODA4MzFaMIGTMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExIDAeBgNVBAMMF0hlYWx0aCBEU0MgZm9yIHJlY292ZXJ5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQb+DcAtDpjI4ftm5ICNC5KGz10zJvY682GDCREwLupvC17QzWFvc6S0jbk2NJt2VY5V4svj2FfLGkSWbUqUFnaOCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDU1hNMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAzA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBRnd3nKzgJx3I/4ejFn+5GLW5DFMzArBgNVHRAEJDAigA8yMDIxMDgwMjE4MDgzMVqBDzIwMjIwMjI4MTgwODMxWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIgaUm6pa07v+OCyyGzYK8XIuUIl1RF3Yvlzw7otvuvZVoCIQCdKQONn+bW52R3pKdoTb4ssYYYHpizX2UvWUJinjwf7g==","kid":"4Ss2raOqhTw="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Country of Curacao OU = Ministry of Health Environment and Nature serialName = 1 CN = Health DSC for vaccinations","notbefore":1627982110000,"notafter":1974878110000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEawHNq4c7wLusLEYNhn7CBSqk6bdY\\n7Phqjt1+Q+CVRHqBFfSRfWG+9dgoEMBdFHY12g4qsO3nnT2P4qhADwIvng==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDPzCCAuWgAwIBAgIUNoYe1qfQWUKjenQM2hZk75Gj67kwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTE1MTBaFw0zMjA3MzEwOTE1MTBaMIGQMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEkMCIGA1UEAwwbSGVhbHRoIERTQyBmb3IgdmFjY2luYXRpb25zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEawHNq4c7wLusLEYNhn7CBSqk6bdY7Phqjt1+Q+CVRHqBFfSRfWG+9dgoEMBdFHY12g4qsO3nnT2P4qhADwIvnqOCASMwggEfMBUGB2eBCAEBBgIECjAIAgEAMQMTAUgwHwYDVR0jBBgwFoAUIk34w40pc1ODd4aa91LBGuyhoR8wGwYDVR0SBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAbBgNVHREEFDASpBAwDjEMMAoGA1UEBwwDQ1VXMBcGA1UdJQQQMA4GDCsGAQQBAI43j2UBAjA2BgNVHR8ELzAtMCugKaAnhiVodHRwOi8vY3JsLm5wa2QubmwvQ1JMcy9OTC1IZWFsdGguY3JsMB0GA1UdDgQWBBSvCnweDV0fhXiABpn551ECcIPLeDArBgNVHRAEJDAigA8yMDIxMDgwMzA5MTUxMFqBDzIwMjIwMzAxMDkxNTEwWjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAOFtWGrE3NItKSKHvNypt0dHo8pfWcGwtWov+UinZkXUAiBYAd6OmxMik1GktF+cph96ldfimOpNnCobSLhpuhrhGQ==","kid":"H6b6bQ8qij4="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Sint Maarten OU = Ministry of Public Health Social Development and Labor serialName = 1 CN = Health DSC for vaccinations","notbefore":1627927825000,"notafter":1974823825000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERw+zOjyFNs4ntgwxcvouetTqlBIz\\ntiTtJhOi8DesKXv5uX/m1pVAbYium/fhyu0IaBeh3DVOLfLJtPaUEx8eiw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDRjCCAuygAwIBAgIUeS2exS2QVGgMamwCH1rOy8XFhEcwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODEwMjVaFw0zMjA3MzAxODEwMjVaMIGXMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExJDAiBgNVBAMMG0hlYWx0aCBEU0MgZm9yIHZhY2NpbmF0aW9uczBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEcPszo8hTbOJ7YMMXL6LnrU6pQSM7Yk7SYTovA3rCl7+bl/5taVQG2Irpv34crtCGgXodw1Ti3yybT2lBMfHoujggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA1NYTTAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQIwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUznY2NjB8NXsMUCHPOlgYek97hZYwKwYDVR0QBCQwIoAPMjAyMTA4MDIxODEwMjVagQ8yMDIyMDIyODE4MTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQDx1fY/jA5stQeKO1mdP5EgJ8iOho81Ob/B/yXfg8XKTQIgSyuSbgQQu0j1fY5gxnFhyW+1M2Si8suaq4As21gBf5o=","kid":"JsReuAsmza8="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Country of Curacao OU = Ministry of Health Environment and Nature serialName = 1 CN = Health DSC for test","notbefore":1627982059000,"notafter":1974878059000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPVZAyUlqrJ3XW8kCQu401SKWJ1Gj\\nF+LBjT16DUZO0RaRdAPsKx8FUBwqRBtn8dPzIP+EWDX7iUppuG0TNkt3Ug==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDODCCAt2gAwIBAgIUR6VYtf0ovWBCl7FHT35IVzVQ1EIwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwOTE0MTlaFw0zMjA3MzEwOTE0MTlaMIGIMQswCQYDVQQGEwJOTDEbMBkGA1UECgwSQ291bnRyeSBvZiBDdXJhY2FvMTIwMAYDVQQLDClNaW5pc3RyeSBvZiBIZWFsdGggRW52aXJvbm1lbnQgYW5kIE5hdHVyZTEKMAgGA1UEBRMBMTEcMBoGA1UEAwwTSGVhbHRoIERTQyBmb3IgdGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD1WQMlJaqyd11vJAkLuNNUilidRoxfiwY09eg1GTtEWkXQD7CsfBVAcKkQbZ/HT8yD/hFg1+4lKabhtEzZLd1KjggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA0NVVzAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUp42ATAZjIq8GuJM8TlU1qEBtzWUwKwYDVR0QBCQwIoAPMjAyMTA4MDMwOTE0MTlagQ8yMDIyMDMwMTA5MTQxOVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0kAMEYCIQD11uNYCNN/3xpgzvNI60u1gF/5aycL7HhApAh2mX8x7AIhANi3q/cTgsLOq53sX8mbZAZolL1LMGhfWHyRkwY7mIVn","kid":"T8kbYovQlYU="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Kingdom of the Netherlands OU = Ministry of Health Welfare and Sport serialName = 1 CN = Health DSC for test","notbefore":1622470783000,"notafter":1969366783000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERyOtPhis4M+vOSM+4AoqtBot3s7A\\nGrqQOSA2ZY3a25z5e4QlRpExd1S399CADvo5j0Nyqrm/azrhFIsSAc8FIg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDOTCCAuCgAwIBAgIUDWwu6rWJGF0zIQk/aKjdU0TXoQowCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE5NDNaFw0zMjA1MjgxNDE5NDNaMIGLMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEcMBoGA1UEAwwTSGVhbHRoIERTQyBmb3IgdGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEcjrT4YrODPrzkjPuAKKrQaLd7OwBq6kDkgNmWN2tuc+XuEJUaRMXdUt/fQgA76OY9Dcqq5v2s64RSLEgHPBSKjggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA05MRDAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQEwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUJ6rwxau+2kWqjA+f1f8vUJSkiDkwKwYDVR0QBCQwIoAPMjAyMTA1MzExNDE5NDNagQ8yMDIxMTIyNzE0MTk0M1owDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0cAMEQCIFuevBHjahuLYCe1bOFCmy6V5FSfyJrVo5+hd0GCSDRMAiBdRK619VMnXNGf573r/PG6nVpeJ9aP/qpkmZG3TVGQDg==","kid":"f+4yAPIGTWg="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Aruba OU = Ministry of Tourism Public Health and Sports serialName = 1 CN = Health DSC for recovery","notbefore":1627978251000,"notafter":1974874251000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEf85n2j7jSWalqCH8Dquo5E3uyYIw\\nYReoWWAiPkIvnwaaoPUt427OizGvRF35l0wPD6zSkbiQZxWI1DMaf+UeXQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDMDCCAtegAwIBAgIUf+V5qIHrABBVrichazDaEgY0x3EwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEwNTFaFw0zMjA3MzEwODEwNTFaMIGCMQswCQYDVQQGEwJOTDEOMAwGA1UECgwFQXJ1YmExNTAzBgNVBAsMLE1pbmlzdHJ5IG9mIFRvdXJpc20gUHVibGljIEhlYWx0aCBhbmQgU3BvcnRzMQowCAYDVQQFEwExMSAwHgYDVQQDDBdIZWFsdGggRFNDIGZvciByZWNvdmVyeTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH/OZ9o+40lmpagh/A6rqORN7smCMGEXqFlgIj5CL58GmqD1LeNuzosxr0Rd+ZdMDw+s0pG4kGcViNQzGn/lHl2jggEjMIIBHzAVBgdngQgBAQYCBAowCAIBADEDEwFIMB8GA1UdIwQYMBaAFCJN+MONKXNTg3eGmvdSwRrsoaEfMBsGA1UdEgQUMBKkEDAOMQwwCgYDVQQHDANOTEQwGwYDVR0RBBQwEqQQMA4xDDAKBgNVBAcMA0FCVzAXBgNVHSUEEDAOBgwrBgEEAQCON49lAQMwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5ucGtkLm5sL0NSTHMvTkwtSGVhbHRoLmNybDAdBgNVHQ4EFgQUsGbf7QCnDPzuBPOlOmArt9xBPZYwKwYDVR0QBCQwIoAPMjAyMTA4MDMwODEwNTFagQ8yMDIyMDMwMTA4MTA1MVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0cAMEQCIEg83+MS877WyCurvbC15pDKViLqWrbQvSRD2tjTT6JzAiBKlOFgjK69luoWCDFIFd/TXNVp6vIX9YOU1YZmrlFu4A==","kid":"lzGYCpOBQsU="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Kingdom of the Netherlands OU = Ministry of Health Welfare and Sport serialName = 1 CN = Health DSC for recovery","notbefore":1622470440000,"notafter":1969366440000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEiY+AGRWtd8tCUb5PQdEPaCWAZl0D\\n/SIOtcDH8R8yrp/JT8MmMxV/wM15WiZf09Eyy3iJXwFT+9YOCyrBA/Cejg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDPTCCAuSgAwIBAgIUSK4bme7ziau/JZkM80IOLM8iauswCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA1MzExNDE0MDBaFw0zMjA1MjgxNDE0MDBaMIGPMQswCQYDVQQGEwJOTDEjMCEGA1UECgwaS2luZ2RvbSBvZiB0aGUgTmV0aGVybGFuZHMxLTArBgNVBAsMJE1pbmlzdHJ5IG9mIEhlYWx0aCBXZWxmYXJlIGFuZCBTcG9ydDEKMAgGA1UEBRMBMTEgMB4GA1UEAwwXSGVhbHRoIERTQyBmb3IgcmVjb3ZlcnkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASJj4AZFa13y0JRvk9B0Q9oJYBmXQP9Ig61wMfxHzKun8lPwyYzFX/AzXlaJl/T0TLLeIlfAVP71g4LKsED8J6Oo4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANOTEQwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEDMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFO9JANKEcntn4oTJgtch48rqSZMpMCsGA1UdEAQkMCKADzIwMjEwNTMxMTQxNDAwWoEPMjAyMTEyMjcxNDE0MDBaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiA9SzdZR+dN+yQ8+lUKzFCUl7noJ6YzB49zVsdYBsXJbQIgFvifkX+12Ib3SsdCb9TGkzQtD4ZxCLrx1T0ycsNwiUU=","kid":"pSEfhlMubh4="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Aruba OU = Ministry of Tourism Public Health and Sports serialName = 1 CN = Health DSC for vaccinations","notbefore":1627978403000,"notafter":1974874403000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcI1v9r69Swup7ghwGhCA5xoG8Sop\\nLiD2DnfkhTydslZQBHc+TuieZ11aHYkD91gmngRXRsGU8Tow/LEoKPkyuQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDNTCCAtugAwIBAgIUECsnQP2ouWaoN8GWtDfzIzOjQsAwCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDMwODEzMjNaFw0zMjA3MzEwODEzMjNaMIGGMQswCQYDVQQGEwJOTDEOMAwGA1UECgwFQXJ1YmExNTAzBgNVBAsMLE1pbmlzdHJ5IG9mIFRvdXJpc20gUHVibGljIEhlYWx0aCBhbmQgU3BvcnRzMQowCAYDVQQFEwExMSQwIgYDVQQDDBtIZWFsdGggRFNDIGZvciB2YWNjaW5hdGlvbnMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARwjW/2vr1LC6nuCHAaEIDnGgbxKikuIPYOd+SFPJ2yVlAEdz5O6J5nXVodiQP3WCaeBFdGwZTxOjD8sSgo+TK5o4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANBQlcwFwYDVR0lBBAwDgYMKwYBBAEAjjePZQECMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFM3bsoRYxPuXAB71DUGiFlVsI2pOMCsGA1UdEAQkMCKADzIwMjEwODAzMDgxMzIzWoEPMjAyMjAzMDEwODEzMjNaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiA4NIHd9nrtJJutNFlPr7hMwLAG5S0Fg8/sDNGgTiO42AIhAO8+HmKyw4rg55MS25dFf5zZYvQ/Gu0ddo97T49wK3qn","kid":"ryvXsisPPeU="},{"issuer":"CN = CSCA Health NL serialName = 1 OU = Ministry of Health Welfare and Sport O = Kingdom of the Netherlands C = NL","subject":"C = NL O = Sint Maarten OU = Ministry of Public Health Social Development and Labor serialName = 1 CN = Health DSC for test","notbefore":1627927778000,"notafter":1974823778000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnRYo0qQ5BM+B3lWzaaqBhgTqQ99w\\nnzj078WYakRSXv7LyJbz21EGEQkNpe3UOlENX5Q7RdzkrrXFbs7pHfNDpw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDPzCCAuSgAwIBAgIUAc0BMCshHZKc4/+JL2MOXBv10d4wCgYIKoZIzj0EAwIwgYYxFzAVBgNVBAMMDkNTQ0EgSGVhbHRoIE5MMQowCAYDVQQFEwExMS0wKwYDVQQLDCRNaW5pc3RyeSBvZiBIZWFsdGggV2VsZmFyZSBhbmQgU3BvcnQxIzAhBgNVBAoMGktpbmdkb20gb2YgdGhlIE5ldGhlcmxhbmRzMQswCQYDVQQGEwJOTDAeFw0yMTA4MDIxODA5MzhaFw0zMjA3MzAxODA5MzhaMIGPMQswCQYDVQQGEwJOTDEVMBMGA1UECgwMU2ludCBNYWFydGVuMT8wPQYDVQQLDDZNaW5pc3RyeSBvZiBQdWJsaWMgSGVhbHRoIFNvY2lhbCBEZXZlbG9wbWVudCBhbmQgTGFib3IxCjAIBgNVBAUTATExHDAaBgNVBAMME0hlYWx0aCBEU0MgZm9yIHRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASdFijSpDkEz4HeVbNpqoGGBOpD33CfOPTvxZhqRFJe/svIlvPbUQYRCQ2l7dQ6UQ1flDtF3OSutcVuzukd80Ono4IBIzCCAR8wFQYHZ4EIAQEGAgQKMAgCAQAxAxMBSDAfBgNVHSMEGDAWgBQiTfjDjSlzU4N3hpr3UsEa7KGhHzAbBgNVHRIEFDASpBAwDjEMMAoGA1UEBwwDTkxEMBsGA1UdEQQUMBKkEDAOMQwwCgYDVQQHDANTWE0wFwYDVR0lBBAwDgYMKwYBBAEAjjePZQEBMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly9jcmwubnBrZC5ubC9DUkxzL05MLUhlYWx0aC5jcmwwHQYDVR0OBBYEFAPQ7CLWYkeVzUr1/A2Qhww+QJc0MCsGA1UdEAQkMCKADzIwMjEwODAyMTgwOTM4WoEPMjAyMjAyMjgxODA5MzhaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNJADBGAiEAnQEMyEA+/j3kz/5N2bYc456EmYIDMlPaWa/8y9CKAhQCIQCz6RYG5r3ZJ3tRmbb4n2EVBGUVjcldIZDh1f2R9veJpQ==","kid":"ypEjzbYNqEw="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571146 ST = Berlin","notbefore":1624540407000,"notafter":1687958007000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUdPPsk9xzY1vM1zdjgvHDsRCST55\\nY9SJBJUXI5uqGb6ckpT7xQFGbm+WGQuFJ9E0w3Zyyqb9P/bsMJQmJkrpkg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"0L7AaIwu+EY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413462 ST = Berlin","notbefore":1623059747000,"notafter":1686477347000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqD56CIMWer5HDRhCpUrq5lZ6F8Wr\\nFPy/IDwjgb44oE2BELk1xBbjXvz7kSPpf3jp48wPI7WWLcx/V5K1A6obNA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"1+da8dKEjlE="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382898 ST = Berlin","notbefore":1622717182000,"notafter":1686134782000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtGEETBc2arnjxxBWO3aDW+rwFgwm\\nhqPbxhaUuOEC6kkd3GPhmXPFYKtmFM4IQDj1Cfqu2bIHa6RqF9uEMbtxwQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"2BGoyFIyYPs="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460071 ST = Berlin","notbefore":1623423164000,"notafter":1686840764000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEeL12fn7+nUNW+9T9zJLaiZF18rfz\\nL1I735fT+3zuKryR3K2oMIMBDFbrrLVva3UeOEZaz+sUwUKWHMg2HgQttg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"2JelGO/ymxQ="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413213 ST = Berlin","notbefore":1623059345000,"notafter":1686476945000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtgz2ifmTj/vZbBaz6xlNCdQlw4FQ\\nU7v3dUrJYQEigk4Lz8dY1c3pGzYO33TjrgN/Qn+yHaYMHl6+06Gk7AuW6w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"3LCRmucB9kU="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382791 ST = Berlin","notbefore":1622716844000,"notafter":1686134444000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8nZrLqMlw5EvdfvJXgxb2rXj9OBT\\n2UWBqAFLeCoQXuY+YOZJpUtL4wFQHMGPbvyoWvvcfWtrz3ZXHwaaigQG/A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"3jqajzfHpKE="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414054 ST = Berlin","notbefore":1623061369000,"notafter":1686478969000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE71N2pH6YyC6gfUHwiEJDzIxwMIW/\\nHs+Cgn/gPQbZAkFcyX/LTE2j2gZD8hLs55TErTTKokvHkrEOWtHYkIDhyQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"3lrBUHc4iQE="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460099 ST = Berlin","notbefore":1623423223000,"notafter":1686840823000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5sqOpW4x66Hmcposox406LFRWyGI\\nvH2CA+Di7pgvWYIJLX7soTE36YKx53vPYRUhKtzexJ7nI90MtClg6NsTAw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"3oYtiEZ9wp4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413639 ST = Berlin","notbefore":1623060017000,"notafter":1686477617000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzma5iz5ZBIh1KDZhj9fSnqJoKK9w\\neOGB/91w6FpdAUjFEKGDphj/MdGRfVro/gSyHRhpaQghZJXRDECOuSAzqQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"5xtSr6KkAGA="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382995 ST = Berlin","notbefore":1622717670000,"notafter":1686135270000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8xghqNrE21susvTQHV9fwN3RWhBI\\ndCYBu3laCz66NasqyquT47PJXuOifSUiNY2/qOyDuu0Ae8MKIHeUmN5wdA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"6FNkACSMLEc="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571164 ST = Berlin","notbefore":1624540468000,"notafter":1687958068000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHrXK9pJSpMrEB4xUrXTTnb7RakIR\\nzDtNh6ugnjfV513NFsu5rKopJYYDOk/Bfy5MyNug6nD3kSSUUy5yePrgmA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"6VdOPLF8/Fg="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614703 ST = Berlin","notbefore":1632294727000,"notafter":1695712327000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErm7fxPeto31KuUPtQl6VxVchANLA\\n6NTLFaFJ5bupx2WsBsICmk32sqx46/ZCHCmiFqGyfYv9IxatTrP233n5zw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQUSkrdg8HjBhWr6tNMjLTsDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA5MjIwNzEyMDdaFw0yMzA5MjYwNzEyMDdaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjc2MTQ3MDMxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABK5u38T3raN9SrlD7UJelcVXIQDSwOjUyxWhSeW7qcdlrAbCAppN9rKseOv2Qhwpohahsn2L/SMWrU6z9t95+c+jggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IYyaHR0cDovL2NybC5kLXRydXN0Lm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmyGO2h0dHA6Ly9jZG4uZC10cnVzdC1jbG91ZGNybC5uZXQvY3JsL2QtdHJ1c3RfY2FfMi0yXzIwMTkuY3JshmlsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwHQYDVR0OBBYEFKMqWypaMB2Nn78KOcFSsibSU/4wMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAVUDqZuTAyc7SHOPv6GANhJZpoMFRtppfWHgjqFSVmKlbhmIO+AJm3MGgGhzVUQ7H0yAphrmSDTBB1lFZJUkfhrTjKvfRUm0m1zOdDMmYtKj8dmH8tb+x9vYK8bkeG4EAyo7/90DLiWqVd5ovjO+IHpKn62kcNjMv2wTFAbphqtqRf9vsM5c/8hBhdIxb2rsKRgf4RfXTBixBTsgcRcqLns1SK84+JgXffHwHpRiaEUr9l2X6GbgsFWmGR4gZlpy++QMgJIxkpUsElNMXHVMfOfcLmaf3MFN72wveVR9aQbLZHPCmo5mH16QoFgziDkQV9QZbOxiGrLhSRQsWf8MbJax/qDXGi3wTfG+FbLfe+CgazfIY+Dj74d+GUp4AVxgtrzxba5Y9yqaudjBeyJ/QQF4skWG/iop2fGr9ruqZUKgmNjcbif85Pp1WomkpmgJ/6dt+dlahHtOVcb+VEScPujOkZea+qwwD3YKkQFuZ7vpnEHAZmPzoUYZErISacW7QCIWyYIsiKC2bHOYCwZYXEQLP9BQGcdDCdj2r4u7U4QRgi4L5yc1lbrgXybZQ9k17jIUADVz46QtlOQ1kwk6qLzPWKGodb0ONj//E72e76ihEJxJgUDl79h2Xcs3qztZ0zrKN2Eeaph+ML3uXgcOy8cn/J9aznu642sNAR4CZuh0=","kid":"72XVTQ2A9Jw="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383046 ST = Berlin","notbefore":1622717862000,"notafter":1686135462000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkkxNdS0EZvjP8j17j2k92vHZpX3q\\nSNMDbCqBYPvmqzj1jnNEqsAZSp8uppwoShgmQPdUSmC5jvSaI0PiIRUJhg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"7XLhQx1KXdQ="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614776 ST = Berlin","notbefore":1632295062000,"notafter":1695712662000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZftKRdrOhX1qx8KzPyrbXB/V8TYi\\n2ZAsEwcr5gkoSkiPWyN+LH0BaRwG6HbqfjpqgdFztwj6PIRisTIQ6LYXKQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"7byt9scureM="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413569 ST = Berlin","notbefore":1623059919000,"notafter":1686477519000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEOl2NFM+2gkakrrAa7g+F7KOXRziS\\n4ydbxiNbm3XTu+L9LP+oSKMLOeJOBcjJA3RqrqAiWfoMriWGd0LRYM6TWQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"8AnF/hcilSo="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571377 ST = Berlin","notbefore":1624541075000,"notafter":1687958675000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE65QJlG4NQ1UKM3/5Yf6n9u430S0g\\ntEarOF4e+WrILwUamksO2zJfSgAwXJV2ZzzenNRml1iFffdf4V7yxzgLUw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"9IZVOkJRZPQ="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026523255 ST = Berlin","notbefore":1624011175000,"notafter":1687428775000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEzIzHRqk76vDGIUAj3dIo3UVev41t\\nak5P5oxO+zaOlsKnxUNbo9yqIcpOo7stI8WLrif4RRaiZoQ0tvahSHH2iw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"9v3FozjKAUo="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413994 ST = Berlin","notbefore":1623061275000,"notafter":1686478875000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEM7zYPRk1r4viA/oG6BxLec1shhb0\\nJoDGjLAUuPxmGSMw+aCQZUcY5MtUqnVD3x//kviuFZDumf65i0V1o7Gsew==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"AQCGDydsS1Q="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383019 ST = Berlin","notbefore":1622717764000,"notafter":1686135364000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuCgNX5VUmp7/lN7/UDF5kRDz7qvW\\nnpgFOKwv1AxJXbSvwJj5ADOP9wGAsocoSJtPr3LbjbmqAqndrgr3831+tg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"CvktK3hdjeY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413231 ST = Berlin","notbefore":1623059412000,"notafter":1686477012000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExfciFuh1jL3LBPzaNAVmmVTL87eJ\\n6wVctSg393nUcXxVL1v5vCgp6jWlRdJglVJj8jRG0TfF3OLjDUHAPn2rAw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"DusseXrzqO8="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614837 ST = Berlin","notbefore":1632295172000,"notafter":1695712772000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6JUSmYQDMdlfXO6t5UIh71Hhib6D\\nZ7VFVaRHqIiSem6blCKAJ9bSQoEJDjl+zrXVBbnTZYJAtFXt+VBqIzq51A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"EDSWY8Hnul4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614916 ST = Berlin","notbefore":1632295270000,"notafter":1695712870000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESb7iWoF0mDYKwlP2EkoD9oJdt0Ew\\n3tomFYMPK51gX10VgQPMGAUhwigTTGrSJsT865r6sshKSy20xzsrMZ3buQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"IKMstf8yj/4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414212 ST = Berlin","notbefore":1623061818000,"notafter":1686479418000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyxW76RQrbDUSOEHxYksWk5CaGGyg\\nxDJJ7A9jRiop+FlpwmPReFTmJNVRMCjE56zKy1oxdi4KXCHI/yJIuw4zWw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"IZftFLRmKGY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026164195 ST = Berlin","notbefore":1620396932000,"notafter":1683814532000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEorGGRfEic2GL5o9XnITdq3nd9d7p\\nWDvy6waSkDMI633+wvCluSBV3rWR/QkL3FdfpcL2FOCWaAR5/sXOihpfrw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"L7XIA2gi2ps="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460044 ST = Berlin","notbefore":1623423085000,"notafter":1686840685000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqXPIlxahww0kgegwTgRNQWpChqH2\\nPfXelyd1D77uo8dy08tlDhsE7zpyzWXfZTUAMxPtgw+JTqiaL1FQtvdkyA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQSvIGw+8qyGiuEBOSK4gz5zA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MTExNDUxMjVaFw0yMzA2MTUxNDUxMjVaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0NjAwNDQxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKlzyJcWocMNJIHoME4ETUFqQoah9j313pcndQ++7qPHctPLZQ4bBO86cs1l32U1ADMT7YMPiU6omi9RULb3ZMijggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFJDJkoDRD6VQhNTMmY50IAffJE87MA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAcqE+lyU0lkF+6xnGJyf5YJQmSXeO7YyGGs3Tj2s5H/d2mCByBk0mcnEAOd3l6Dc4GbcZ3azx4g8dl6jGS3u8IJ0ZMY7n+UK212ppRBl+EPzS3p5vGfPBAsmbbnKsl+lIiZhlMqdu/lT8wSjR7ypcyKGKMffXU6ZrWQlnpzxSrF8fktyhY6oHx3olfpF68AFWENp8TdimtNuSpAPc5BSpH7IB5E1wVPngwvPU8OCs78gmq3NK5WrWtzuM6eB5mjIlL+7z6rKWAsNJzy9Qr4fyc0AHf4rGIHMFToLGu0FmfO4TjOkjlNfajJPjqbZSR2FDJElo3IOakgSYfLuYIAacCGgC7KHhGU5WCjxTs0OLhpeo3P84cbSRGwNyxBeKL6XZugK7iCJhY1lFwum6mv90jJ216YVi/N5z5NgjTMaky3BoPJwrhSMIEQB5shDNp14I5IRX/c87P/+qplAuNSVxQMA5sX4gXme4aBGTHgE+Ciz0A08UvRHRiRcDzjdFw9XB9dAN8zmNVXRMLyqEVjJNE3bkt7lkOASL3ebB+qcxljlUXiNudiImH21BJmO5zbY9qRbWIwhYeyRSZVCUVWEdbwdcxxSTE+7vY1RyTS+vX95mGMKM3c/xTAkBCRKJ/paCebaRsUXgKM/iuxEwskc/ieezAU/y19rDxroBLWDd/0E=","kid":"M8bcnysCMj4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382913 ST = Berlin","notbefore":1622717283000,"notafter":1686134883000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKPuGAJsDLPU7vw4aDg52nFxuxz3A\\nsJtWUmtsY7tQegwCVfll+e5sQJu6y5CZnOD+gKdMKfnjuB719z/tF9qB9g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"MxhfdcoHinc="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413347 ST = Berlin","notbefore":1623059592000,"notafter":1686477192000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEszk+l0BVoDOXZg5SKeeNbLUAggqL\\nKB2a3NlMXWfxfdcdHsPqqlKWcFTZBzD3/kIyxJi5rlxk1Uk2JsFNEbjt7w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"NCdyt3s+cak="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382843 ST = Berlin","notbefore":1622717035000,"notafter":1686134635000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUCSPQOg4hIgEJzD2PHFjccnQzSQI\\nvYs+gbBuJqHxv7tCAEpyEj5XIfjjfMjNxA+so+AdZyEfwszhKr2A1/nVSQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"OKpEjMo/2MY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413541 ST = Berlin","notbefore":1623059843000,"notafter":1686477443000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/eGWuKcNV/od7Eh4EJuiqBPv+0yP\\n4q+qzhOlNFdkzuuWy6l+hhjVHxdfxp4XDVvOUV2D9wff81/tNfBuc4pCmA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"R7q7yd90ZPU="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460123 ST = Berlin","notbefore":1623423294000,"notafter":1686840894000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh4UMl8PsQUsu36Hq7xK+dyGWGrEL\\nxsfzVOny20ZnkHhyBYxBUIGoHEYl70bpzjFBJN4WLGtilZD/0aLWE/+ykw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"TGjTR+Re+yk="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413860 ST = Berlin","notbefore":1623060911000,"notafter":1686478511000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEs77Dr92zb+HOBL9gdfCWOwkna+9D\\n3Kdq0HgUqpVByi7kqykRPAFKPZBA771qyoBy0uHFhdYIzNAPzdHj7KrPsA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQdtwg/AvsQRQYNembzxdETTA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MDcxMDE1MTFaFw0yMzA2MTExMDE1MTFaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0MTM4NjAxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLO+w6/ds2/hzgS/YHXwljsJJ2vvQ9ynatB4FKqVQcou5KspETwBSj2QQO+9asqActLhxYXWCMzQD83R4+yqz7CjggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFI2kXVSw0GCts+2a6IR0lRF4sHRBMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEAQnLsCxLlLS1wifrtAP4R/4g3VFTVlnLkbgkWa6NQqZ8E9lZbZRxYNUSDHbgV0u18dWeFkeElhxZcR5M3mOFBuEmK5PJ1QkL/LTk2O8/FyV/F69AmjLPWXklkoKfK6Cr9r/ewlHocByvLD+wEB+/0zIBkQa1OvLhNY4LlwiWKqnKiF9GNCaw5bwHbJvCym3eZyyKZlY5Der2RXMSUHP2k5NNSoRyE6RJXtTxQ4iMigd3mumpCHweDtCu8wrirTMXFCfl5lBvG8V29vEI0XmMB5AXsWJbu1MR1WsGCma+xb3DHniex+art1t8l3oM96DMGhG5eQhxiSXGXhzSl57vISTUajTrCpJuEClcgG6logprZDpE5mAwrlDuVcO2ILYDzlZN2Ilq5BKYu2d2xWfrJwubx5CX5TyERIrF9z4kbOJqsbV8x34d3OBFU/yW3UUcf8F1tS40AHiUCP/mVmbelm2KoUbgHS4g9tXy6R8FpKfC1i/Jv2EkYonMsgN8Y1Ocxdh7Sm0CQC00bEFDjYlsoMSclroDaRLaSNOvRtRSAgPM6yoj9O2kxjmQCnoTZkR/jmhsUmvA3xOMtEQtxLRDt02LVfc7R4BewZB5NdIC1QYr9iu0SyzQkifyDLenkPvyCgsmvqJtprKODHSP89izJmGptcPP4Y4R8/paQKtjM/1c=","kid":"TpQIkAHAym4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413417 ST = Berlin","notbefore":1623059674000,"notafter":1686477274000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEopaKkUUE4nCgNpRBE9ugmShuJd90\\n7aOocVvFvxPLxiJ5qqQ2pq/GVsq5Vf/0V/b1V3rAoKO8bMvxP4jkTWTxqQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"Uj77p+qIQNs="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460026 ST = Berlin","notbefore":1623423021000,"notafter":1686840621000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEh934IiMCsXp977pDeG7Wi11S+uGG\\noem6nSNbtCILcST4+/FqGlLOBJvIZPSh3hTHx2V7V+3Lzqi6R2dahOno/g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIHUTCCBQmgAwIBAgIQUIKkn9dGJ+Fvw2iuEU4tejA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQDBbMQswCQYDVQQGEwJERTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMRwwGgYDVQQDExNELVRSVVNUIENBIDItMiAyMDE5MRcwFQYDVQRhEw5OVFJERS1IUkI3NDM0NjAeFw0yMTA2MTExNDUwMjFaFw0yMzA2MTUxNDUwMjFaMIHrMQswCQYDVQQGEwJERTEdMBsGA1UEChMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxJDAiBgNVBAsTG0VsZWt0cm9uaXNjaGVyIEltcGZuYWNod2VpczEdMBsGA1UEAxMUUm9iZXJ0IEtvY2gtSW5zdGl0dXQxDzANBgNVBAcTBkJlcmxpbjEOMAwGA1UEEQwFMTMzNTMxFDASBgNVBAkTC05vcmR1ZmVyIDIwMRkwFwYDVQRhExBEVDpERS0zMDIzNTMxNDQ1MRUwEwYDVQQFEwxDU00wMjY0NjAwMjYxDzANBgNVBAgTBkJlcmxpbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABIfd+CIjArF6fe+6Q3hu1otdUvrhhqHpup0jW7QiC3Ek+PvxahpSzgSbyGT0od4Ux8dle1fty86oukdnWoTp6P6jggLpMIIC5TAfBgNVHSMEGDAWgBRxEDKudHF7VI7x1qtiVK78PsC7FjAtBggrBgEFBQcBAwQhMB8wCAYGBACORgEBMBMGBgQAjkYBBjAJBgcEAI5GAQYCMIH+BggrBgEFBQcBAQSB8TCB7jA3BggrBgEFBQcwAYYraHR0cDovL2QtdHJ1c3QtY2EtMi0yLTIwMTkub2NzcC5kLXRydXN0Lm5ldDBCBggrBgEFBQcwAoY2aHR0cDovL3d3dy5kLXRydXN0Lm5ldC9jZ2ktYmluL0QtVFJVU1RfQ0FfMi0yXzIwMTkuY3J0MG8GCCsGAQUFBzAChmNsZGFwOi8vZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBDQSUyMDItMiUyMDIwMTksTz1ELVRydXN0JTIwR21iSCxDPURFP2NBQ2VydGlmaWNhdGU/YmFzZT8wcAYDVR0gBGkwZzAJBgcEAIvsQAEBMFoGCysGAQQBpTQCgRYFMEswSQYIKwYBBQUHAgEWPWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvaW50ZXJuZXQvZmlsZXMvRC1UUlVTVF9DU01fUEtJX0NQUy5wZGYwgfAGA1UdHwSB6DCB5TCB4qCB36CB3IZpbGRhcDovL2RpcmVjdG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQ0ElMjAyLTIlMjAyMDE5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0hjJodHRwOi8vY3JsLmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X2NhXzItMl8yMDE5LmNybIY7aHR0cDovL2Nkbi5kLXRydXN0LWNsb3VkY3JsLm5ldC9jcmwvZC10cnVzdF9jYV8yLTJfMjAxOS5jcmwwHQYDVR0OBBYEFPdFwMQGQturw7wXqRcebaB+nz6vMA4GA1UdDwEB/wQEAwIGwDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCA6EaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgOiAwIBQAOCAgEA0XRsfatBY5BT/HfWbUQvQXtisS0xp2qxVXZkgejDV2r90KsxGAAM9MZIw3eebywbg7ygwhdKwu4ZYGdFpr/cYH+j5pRPCjYoJOsjCEDA7GDtdWenQruM0JcKI4KGgtm01LZGT1L3rBHKh0Dg9fOrAS3L05ZR+cQ1oDKrMUuGm57CDTgcPXmxawmxadjLKOagfPpOkMmZabNMDd3+06gIQ7KfH3BWwZHYbqkg5dHHyb6cvdwQarfLjPKlcWrACWX6KyvYYv8Aj3fxu9w1RYCA1HqOGfIWl0in1LoCJhYLNb4GcS3feqhvnUAKL0BZN+5oSgMbQfi4hqGcwhBKNH4UVfnL47f7dsJxr3ob9U+VLkCUJ7yC6FPjY0pefGgsgQl+9rabBjNaSLwjxoOmEx7PbnjU5xmxipYa7LK+gLuLfZysu+VAFUXAxSFljz5cKWn80sqgSchzOlJRobCI/xTrziQc74pRGV+eWBXpybRu6bvZ8Y96EHpbdyWsG9sDPCeJgiq5XdWfR3JUprVsQzaEBDzBGq1Y0fWxOOoi+gQIQXPvx9sBjc9fdOvnFEODI1NXotab2LlKztNTQU3eEBhbsHjg30a1pIVwiL/nmxsMLxxiNJAZ/9t0D71llbrSBS665BTkmObNnr1xHoS94wg4L9UfinLFsSkHpTer+cQhrA4=","kid":"XkVWZqUeeFc="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413693 ST = Berlin","notbefore":1623060128000,"notafter":1686477728000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyV/EBSORniEE7SMMNmvSWT3dOAuD\\nuviDHFv7rvnrcZ2wyfQkIjyYPkrtVrGwiNdwOcbHKreB2eW6li/+fDQPEA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"XuCERkHu8kY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413897 ST = Berlin","notbefore":1623060976000,"notafter":1686478576000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5eOmRsTsPlyUVzKnWK3xYlY04+DO\\nffgg07nWx4FTa4mouXQ9nfCxmMHgpuZv2RxbVSzYzewjcmKaknNEYDdCdQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"Yr8a8Rd+zqI="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382773 ST = Berlin","notbefore":1622716737000,"notafter":1686134337000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEHZM5AMBImcqdKPFM6P5xx0LmZxo8\\n1NcnuydrdPUQaaa0NhsRctuX4qB8YSd2pG12ilwSSfEcgju8I7AsFJSAOQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"ZDoFfkn+yhY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414081 ST = Berlin","notbefore":1623061438000,"notafter":1686479038000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaOhuajeY34pPu/12SnuMv2qlG8Er\\nMOj7s0eAEM2679YVzsiZWLIp1S1jNWsoIJJTEiLWUtj1mqCsMOR3gA7CBA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"bKmas9wa5tc="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571270 ST = Berlin","notbefore":1624540790000,"notafter":1687958390000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUtMktlZKpvOfwhumIvsvpKMWE1Ly\\nMq32RkRCbVM5TBBxHsCUYdXSjbqPK3cZ8tYkCkcYlyluKbQO++HaSsGjSQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"c1XrnEBoj/c="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026164168 ST = Berlin","notbefore":1620396811000,"notafter":1683814411000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsLa/zRhSxxsmrPE/RwPNKXGblvI4\\nJrdqfPNYpuPn3TpkExb/vod11MuW7BismmErZcJC+oWuItW1UH+wcXHJcQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"dhSzPDr4G2M="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM027614758 ST = Berlin","notbefore":1632294922000,"notafter":1695712522000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAExfzglJTFBrKFErvCRkqtHq0U7O7S\\nmxzRntsiUENJFzkpxD0rHs+0H6Qb23WUiaDe368iOrWfNk03uOEjviJurg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"hWoyHrtJs+E="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382931 ST = Berlin","notbefore":1622717389000,"notafter":1686134989000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5D4cdY3G91kHagLyAGon0ufC2jqz\\nQ17V1wjvYHOLxZSY1evmQVhovIVUS9AU5Z73aeW++2ZyNUFg7L/9Zk1E7g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"i5SVuCsR5TA="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383125 ST = Berlin","notbefore":1622718187000,"notafter":1686135787000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpobykjScOX2uy+5C/BYBXDRcVUVO\\nBDWLUgUaIhP2q0GoF8FBBDYBjx1peWhf4Nd+rtjBivr5WDcFmjMVn+FVzg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"izUDZjGtHWY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026413286 ST = Berlin","notbefore":1623059521000,"notafter":1686477121000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgxLpjMDX1/tMRghYLQKMI0nK4UkZ\\nuK9pnAAJTC7BeQUaHYFp4pJkC8z/VHcW74CpwTeTRITzs4MZflkN/WHtqQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"juskqrNQf6k="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026383107 ST = Berlin","notbefore":1622718068000,"notafter":1686135668000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEtLZ1N2Y7UQHgRO3yKGyRTsJWdYFG\\nDld5kbglFGHrMvZQwa5XoBclH9xTrP3dXcTsgjnml7Hx5YZOnGHhJMrenw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"kjEx2H7huNE="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571313 ST = Berlin","notbefore":1624540920000,"notafter":1687958520000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEx4HHLyxeH1wp/aPCCwyRxWVEcfUA\\nLP66kgwanudG4b8upvGFMsVXpzg0ohEParVa912A9UBuCkjDM6jFAsgZIQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"nHmZ5K96UY4="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026317104 ST = Berlin","notbefore":1622032330000,"notafter":1685449930000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJmki+G1pd9DNiLX/eT709p/ZeCd/\\nmcjrmRLoTgP6nlDqJxUvZ0rQ64y/Lj2Vk5ehGHtuV/RmyuNXJYxFB58bdA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"nPKEYm3gXzU="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414115 ST = Berlin","notbefore":1623061538000,"notafter":1686479138000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd+grPnJ58prZvOeLC3vi9P2mnqlv\\nvGNfsbT0HmxAVHAoNB73PT149IhGWhNZFSMFRel7vu8vi4wPoaSuIjraPw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"nTrG8glLUls="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414160 ST = Berlin","notbefore":1623061647000,"notafter":1686479247000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPdriVdFsidKrE0nr7S+75iO7+8LO\\ntzFp99++4BLqKKMKn/mAXvgkInEN5xqsifTYFWk9KmLcUGbD9dtwQlaA+w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"npo0ZWgdQSY="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026460008 ST = Berlin","notbefore":1623422950000,"notafter":1686840550000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7f4SNNst1BMsb6Ub0yVCz01aDWB9\\nI2/ajVbLyJpTr2pKwSocQpiM0mcy9XX+dMYYlUaQVBOmtoE//fnw8w2vDA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"r9YkEJZgi9k="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571191 ST = Berlin","notbefore":1624540537000,"notafter":1687958137000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbQZPoqfjpTx8m/wAZZWk3uoDxzfp\\niISsNSuZg/+9VN/cSefrEHFRvQwM2AjN6vOjhzVMdjZ14MSRJUMJEu85Lw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"rKMDA66RiLE="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571331 ST = Berlin","notbefore":1624540997000,"notafter":1687958597000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+fBKs9tgAlGoiBIglL4JDLpguDzB\\ncXqCuIulrUkBy/wZrJtv7fsirU/YCvcn70rPzMCloqePEoDPCf1wWX8Dpw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"rXP9L7xddL8="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414197 ST = Berlin","notbefore":1623061757000,"notafter":1686479357000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE40rFr8baZEDNvONEE+Rxf5ePnZLL\\nmqR+5Uwx/S5I2ylMijZyZ4c2kD3OyTHlfTNa1mS09zXnXNJKqZyqi3GGQw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"sYXcYixrOGA="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026414133 ST = Berlin","notbefore":1623061594000,"notafter":1686479194000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE2TqSv2wB9nB0Ev3u5VmckxWzq/L0\\nfvl1HVI3ZBXCF+7k55bo0zUABUPBz6/e1PaDxDCIS8+NybrbpUT3w5D3Iw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"vjm0I2ATJ+Y="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571243 ST = Berlin","notbefore":1624540685000,"notafter":1687958285000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDRVIqu7uo4HOgXlXyxYBl2L1arxx\\nvDfwfgnYHjgVKQpFEj+hV9YEjSECJS+YrhGr5RXZU7eRzKvfKtRI1POaww==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"vq08l/LTxhk="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571119 ST = Berlin","notbefore":1624540344000,"notafter":1687957944000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElGYxcioPZFzAfJHtsB07FzUDpJlc\\n6C18W2kcnCGEE1ujahisK6ZvE+UoSGh4ABGNQOX8RypMp4t8bzj7VAqI7w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"wb/2450PPrc="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026571298 ST = Berlin","notbefore":1624540865000,"notafter":1687958465000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6/QS0f7r433yqdq7XKh3OOKhOEig\\ng+VVixYEToozbg9QgAqADIZYDe3WEQnO8u8fqdzd2ouVZo54/Gc13gszYA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"wtYpyAmNmdk="},{"issuer":"C = DE O = D-Trust GmbH CN = D-TRUST CA 2-2 2019 2.5.4.97 = NTRDE-HRB74346","subject":"C = DE O = Robert Koch-Institut OU = Elektronischer Impfnachweis CN = Robert Koch-Institut L = Berlin 2.5.4.17 = 13353 2.5.4.9 = Nordufer 20 2.5.4.97 = DT:DE-3023531445 serialName = CSM026382968 ST = Berlin","notbefore":1622717573000,"notafter":1686135173000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgMhpOktfDD7Vn7Wm+BlHabFbpOs2\\nUmCVrtIpcOFpIlr8+2wHP5/VSUZslExSo284fpwuoJ5eKcjDuvlCPjZNhQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"yWCRdph8XJs="},{"issuer":"C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA","subject":"C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020007","notbefore":1635986474000,"notafter":1961714473000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESDFA3IUS71aOIaAiVxG9QDby5hfT\\nSqPSuHAagC8/vhKbIG6quGGAQjRcxbjxB2+KCt8RhSkBzTPpzX8D6iSpBA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICmDCCAh6gAwIBAgIUN7QAlQwRtBkiAZZmQo6EuSzr2TkwCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNDExNFoXDTMyMDMwMTAwNDExM1owgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA3MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAESDFA3IUS71aOIaAiVxG9QDby5hfTSqPSuHAagC8/vhKbIG6quGGAQjRcxbjxB2+KCt8RhSkBzTPpzX8D6iSpBKN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFMkTYUd+m7dTqQrgXROc796CHD2sMCsGA1UdEAQkMCKADzIwMjExMTA0MDA0MTE0WoEPMjAyMjAzMDQwMDQxMTRaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjAhZylOip2hsx2QTptQMSKUwjmA5MSWxJi01hCB2cUQWYWBLRP+RzxcVC2tAnUpGiACMQDoNr7Vs/ID/BJMMHlkj9WAfb1vbY1ePMZGtGh4aNCi9B90uZczIQctXmP4w/o6G0c=","kid":"0NQWnxTv90c="},{"issuer":"C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA","subject":"C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020010","notbefore":1635987788000,"notafter":1961715787000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQEqBzWkYP17/i2b+EPcLpiQvTKLx\\nasVDjA3A7IvRt9RHjYFIQGpFQCR7ZJLD5XQNsjcFfHzxwVEITkb5M7fIyQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICmDCCAh6gAwIBAgIUNe+sDjaZPIfOw8OIMwqniNZ1ABEwCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAxMDMwOFoXDTMyMDMwMTAxMDMwN1owgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDEwMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQEqBzWkYP17/i2b+EPcLpiQvTKLxasVDjA3A7IvRt9RHjYFIQGpFQCR7ZJLD5XQNsjcFfHzxwVEITkb5M7fIyaN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFIrSwiSmYianLXQsxR6ZAFL5/ltIMCsGA1UdEAQkMCKADzIwMjExMTA0MDEwMzA4WoEPMjAyMjAzMDQwMTAzMDhaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjEA9UwmICswUwNiWRzvb4V+U0Z7qKebbIIldgtTp+nHmcme5HGjKc8UuT/yvuzzK4qoAjBvlH+kAQGZuXrSXduh+CtY20W+NEPrYV6bjDUdxQEzCxmOrsA1LWl2lHdIcLRSDdc=","kid":"dy8HnMQYOrE="},{"issuer":"C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA","subject":"C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020009","notbefore":1635987543000,"notafter":1961715542000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEn/wOHL0ulsMkJCwPvwhEPoPE2LiF\\nf9MEsma3tYaPfANxLqX4K5e6Lk9F3tvg8OtBnVBI1amxen9cOlmSRXHg+w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIClzCCAh6gAwIBAgIUfn/tDIC04XNn08DedD/Mgv0Y7Q8wCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNTkwM1oXDTMyMDMwMTAwNTkwMlowgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA5MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEn/wOHL0ulsMkJCwPvwhEPoPE2LiFf9MEsma3tYaPfANxLqX4K5e6Lk9F3tvg8OtBnVBI1amxen9cOlmSRXHg+6N8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFAHaV5pGrS6VpJVmDC3vnQ5FbGlYMCsGA1UdEAQkMCKADzIwMjExMTA0MDA1OTAzWoEPMjAyMjAzMDQwMDU5MDNaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNnADBkAjAdOz+yESmxwxVmK9YQjs4MPYfcoCxU19xPeB90YL5mB+uDH3/Kf77UTnZehqtX/m8CMA+YOej3Ymvg3flZJH/+lQ5owd4lvU4PJTxwQS/D+JroiKvnIeG6O3WT9LvnRSKwEA==","kid":"jIF6MH+OYkI="},{"issuer":"C = NZ O = Government of New Zealand OU = Ministry of Health CN = Vaccine CSCA","subject":"C = NZ O = Government of New Zealand OU = Ministry of Health OU = Vaccine CSCA CN = Vaccine Document Signer 202111020008","notbefore":1635987266000,"notafter":1961715265000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+axE1mKfKiVwARulc2LnH6co1SoC\\nrfqtL11PQqYh7TBRrdawgzPokpfjoFGDkMU0ZPg7cnwilW6LnYH+vkjVhA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICmDCCAh6gAwIBAgIUapkq2mxmLiK29lTfgGNiKmLH/o0wCgYIKoZIzj0EAwIwZTELMAkGA1UEBhMCTloxIjAgBgNVBAoMGUdvdmVybm1lbnQgb2YgTmV3IFplYWxhbmQxGzAZBgNVBAsMEk1pbmlzdHJ5IG9mIEhlYWx0aDEVMBMGA1UEAwwMVmFjY2luZSBDU0NBMB4XDTIxMTEwNDAwNTQyNloXDTMyMDMwMTAwNTQyNVowgZQxCzAJBgNVBAYTAk5aMSIwIAYDVQQKDBlHb3Zlcm5tZW50IG9mIE5ldyBaZWFsYW5kMRswGQYDVQQLDBJNaW5pc3RyeSBvZiBIZWFsdGgxFTATBgNVBAsMDFZhY2NpbmUgQ1NDQTEtMCsGA1UEAwwkVmFjY2luZSBEb2N1bWVudCBTaWduZXIgMjAyMTExMDIwMDA4MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE+axE1mKfKiVwARulc2LnH6co1SoCrfqtL11PQqYh7TBRrdawgzPokpfjoFGDkMU0ZPg7cnwilW6LnYH+vkjVhKN8MHowHwYDVR0jBBgwFoAUBYexBS6L22zGjlutPHLVuaircxkwHQYDVR0OBBYEFGNFtRIN7owNYF3S4WS3IkmDxnqQMCsGA1UdEAQkMCKADzIwMjExMTA0MDA1NDI2WoEPMjAyMjAzMDQwMDU0MjZaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNoADBlAjEA/2L/gI6AFNxKty+dHwt8nPypmd0pJDWe5ePduw1gKQnOxqM62i95FHFMPxU6uJBjAjAmDdxcr1IdCU4RO5f6PY9AS3pdb3VAkifbZe5cu2963QvvCoyfWWFXwj/D3xsvTGk=","kid":"oMpN3FsJYsQ="},{"issuer":"C = GB ST = NI L = Belfast O = Department of Health OU = DHCNI CN = CSCA_DGC_GB_NI_01","subject":"C = GB ST = NI L = Belfast O = Department of Health OU = DHCNI CN = DSC_DGC_GB_NI_01","notbefore":1626708138000,"notafter":1689780138000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZ+fdcTa4UWA/6PT5V4a0+0j1/s++\\n4JQEsW/HvGnxxP7mGfuQDfn/FRdUMGQtTkoCGaky1gpYVZXkkoYu9ZjlUw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICWjCCAf+gAwIBAgIURUEDe5VRVC+xFuvzbQDxI+NcG3EwCgYIKoZIzj0EAwIwdzELMAkGA1UEBhMCR0IxCzAJBgNVBAgMAk5JMRAwDgYDVQQHDAdCZWxmYXN0MR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEOMAwGA1UECwwFREhDTkkxGjAYBgNVBAMMEUNTQ0FfREdDX0dCX05JXzAxMB4XDTIxMDcxOTE1MjIxOFoXDTIzMDcxOTE1MjIxOFowdjELMAkGA1UEBhMCR0IxCzAJBgNVBAgMAk5JMRAwDgYDVQQHDAdCZWxmYXN0MR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEOMAwGA1UECwwFREhDTkkxGTAXBgNVBAMMEERTQ19ER0NfR0JfTklfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARn591xNrhRYD/o9PlXhrT7SPX+z77glASxb8e8afHE/uYZ+5AN+f8VF1QwZC1OSgIZqTLWClhVleSShi71mOVTo2owaDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFK0wrYr+jzkfX//YOKxzXH7hoBxZMB8GA1UdIwQYMBaAFM8DHzf3z6ezJWzZlg9ICbLTTRxnMBYGA1UdJQQPMA0GCysGAQQBjjePZQECMAoGCCqGSM49BAMCA0kAMEYCIQDfC7E6QPDcgPAwNkK/uRJDMnUWOfslHC6CyeCKPcm3SwIhAN4tcL2/7T6HYbfNv+hfFz2mAGWLCa8wmqJcs9YsBNG7","kid":"1J9pb87ndV0="},{"issuer":"C = GB O = NHS Digital CN = England DCC CSCA","subject":"C = GB O = NHS Digital ST = Jersey CN = DSC_DCC_GB_JE_02","notbefore":1632923452000,"notafter":1695997252000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEORjyQk/KOoCEJWGfLLyqyEcOqRRr\\neyVdSH+ELi4GqqS17W4aYeOl2cvm/5unZwgCQUzB09uxYESXGmBJ3xgsEg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC8TCCApagAwIBAgIEYVCF1jAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM1MDUyWhcNMjMwOTI5MTQyMDUyWjBPMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxDzANBgNVBAgTBkplcnNleTEZMBcGA1UEAwwQRFNDX0RDQ19HQl9KRV8wMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDkY8kJPyjqAhCVhnyy8qshHDqkUa3slXUh/hC4uBqqkte1uGmHjpdnL5v+bp2cIAkFMwdPbsWBElxpgSd8YLBKjggFvMIIBazAOBgNVHQ8BAf8EBAMCB4AweAYDVR0SBHEwb4EPcGtpQG5oc3gubmhzLnVrgkpodHRwczovL3d3dy5uaHN4Lm5ocy51ay9rZXktdG9vbHMtYW5kLWluZm8vcHVibGljLWtleS1pbmZyYXN0cnVjdHVyZXMvY3NjYaQQMA4xDDAKBgNVBAcMA0dCUjByBgNVHR8EazBpMGegZaBjhidodHRwOi8vcGtpLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmyGOGh0dHA6Ly9jb3ZpZC1zdGF0dXMuc2VydmljZS5uaHN4Lm5ocy51ay9DUkwvRU5HX0NTQ0EuY3JsMCsGA1UdEAQkMCKADzIwMjEwOTI5MTM1MDUyWoEPMjAyMjAzMzEwMjIwNTJaMB8GA1UdIwQYMBaAFNouzsP3Ovv4vhBzqMTxiL0r1PHKMB0GA1UdDgQWBBRxHKzMVi9gZ9kvS9PBsjKIxWf96DAKBggqhkjOPQQDBANJADBGAiEA842nlrMUsAYRJhQv4DeltKOnR1kyBBcIiqHBRq+EIiYCIQCeUc6GkrFiI6jhQzgD5/c/A66+AiRSZ1Z3SMNM073D0w==","kid":"1PtilTAMiyk="},{"issuer":"C = GB O = NHS Scotland ST = Scotland CN = Scotland DCC CSCA","subject":"C = GB O = NHS Scotland ST = Scotland CN = DSC_PRD_GB_NSS_01","notbefore":1632935105000,"notafter":1696008905000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEr9bj163kKNBLl5bxWhZBlyJv3pHa\\n2QMb24OAdXZwJN6xx2CR03VG4DhQmd9wzVuPmw164+T7/sDmoRNOh4QbQQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDKTCCAs6gAwIBAgIEYVGffzAKBggqhkjOPQQDBDBTMQswCQYDVQQGEwJHQjEVMBMGA1UEChMMTkhTIFNjb3RsYW5kMREwDwYDVQQIEwhTY290bGFuZDEaMBgGA1UEAxMRU2NvdGxhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTcwNTA1WhcNMjMwOTI5MTczNTA1WjBTMQswCQYDVQQGEwJHQjEVMBMGA1UEChMMTkhTIFNjb3RsYW5kMREwDwYDVQQIEwhTY290bGFuZDEaMBgGA1UEAwwRRFNDX1BSRF9HQl9OU1NfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASv1uPXreQo0EuXlvFaFkGXIm/ekdrZAxvbg4B1dnAk3rHHYJHTdUbgOFCZ33DNW4+bDXrj5Pv+wOahE06HhBtBo4IBjjCCAYowDgYDVR0PAQH/BAQDAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML1NDT19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9TQ09fQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxNzA1MDVagQ8yMDIyMDMzMTA1MzUwNVowHwYDVR0jBBgwFoAUpkyHivaTZHND98x+LTp83mX+1ecwHQYDVR0OBBYEFJdsDfNoq4LpdpKboD1l1QO6vomQMAoGCCqGSM49BAMEA0kAMEYCIQCk2A3NDa/GEeAmLk0H0ryrSXR8XE1ramqYSX9/DCJ9WwIhANDgNfuShBJxUxydkgQtQ1Z348dfpLye7Dsio45DQaT5","kid":"26YSc5g0nG8="},{"issuer":"C = GB O = NHS Digital CN = England DCC CSCA","subject":"C = GB O = NHS Digital ST = Guernsey CN = DSC_DCC_GB_GG_02","notbefore":1632923277000,"notafter":1695997077000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsrcO+nNM8OkcO7IhbRh4D4D++Tgr\\n3PyGt9q6vXkSwIY6vctXRXke4WdrRtWbYzB8xGREifNxSgd6Fdik+bg44g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC8jCCApigAwIBAgIEYVCF0zAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0NzU3WhcNMjMwOTI5MTQxNzU3WjBRMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxETAPBgNVBAgTCEd1ZXJuc2V5MRkwFwYDVQQDDBBEU0NfRENDX0dCX0dHXzAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsrcO+nNM8OkcO7IhbRh4D4D++Tgr3PyGt9q6vXkSwIY6vctXRXke4WdrRtWbYzB8xGREifNxSgd6Fdik+bg44qOCAW8wggFrMA4GA1UdDwEB/wQEAwIHgDB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxMzQ3NTdagQ8yMDIyMDMzMTAyMTc1N1owHwYDVR0jBBgwFoAU2i7Ow/c6+/i+EHOoxPGIvSvU8cowHQYDVR0OBBYEFFtQNDLuwfv9Xbg7o8AKPzQnkx4cMAoGCCqGSM49BAMEA0gAMEUCIQDfWA3YY6s4hivruPkv+ro6/0mi4Vm7gY1EED8u39k+LAIgOKfybRclbzyRnz/ucnH18B2r9ZEi6z/7LnmqNZobPPE=","kid":"I0+qkOLr2e0="},{"issuer":"C = GB O = NHS Digital CN = England DCC CSCA","subject":"C = GB O = NHS Digital ST = Isle Of Man CN = DSC_DCC_GB_IM_02","notbefore":1632923398000,"notafter":1695997198000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKrPl/bqJRA4on2AtNgXUOhCwjkr8\\nkUkeol8ZMH8d6+ILPJCgc3y4d2AnGcNMIxwk/JWVjD2V0lkxSB2Hh7shtA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC9DCCApugAwIBAgIEYVCF1TAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0OTU4WhcNMjMwOTI5MTQxOTU4WjBUMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxFDASBgNVBAgTC0lzbGUgT2YgTWFuMRkwFwYDVQQDDBBEU0NfRENDX0dCX0lNXzAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEKrPl/bqJRA4on2AtNgXUOhCwjkr8kUkeol8ZMH8d6+ILPJCgc3y4d2AnGcNMIxwk/JWVjD2V0lkxSB2Hh7shtKOCAW8wggFrMA4GA1UdDwEB/wQEAwIHgDB4BgNVHRIEcTBvgQ9wa2lAbmhzeC5uaHMudWuCSmh0dHBzOi8vd3d3Lm5oc3gubmhzLnVrL2tleS10b29scy1hbmQtaW5mby9wdWJsaWMta2V5LWluZnJhc3RydWN0dXJlcy9jc2NhpBAwDjEMMAoGA1UEBwwDR0JSMHIGA1UdHwRrMGkwZ6BloGOGJ2h0dHA6Ly9wa2kubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybIY4aHR0cDovL2NvdmlkLXN0YXR1cy5zZXJ2aWNlLm5oc3gubmhzLnVrL0NSTC9FTkdfQ1NDQS5jcmwwKwYDVR0QBCQwIoAPMjAyMTA5MjkxMzQ5NThagQ8yMDIyMDMzMTAyMTk1OFowHwYDVR0jBBgwFoAU2i7Ow/c6+/i+EHOoxPGIvSvU8cowHQYDVR0OBBYEFFyh/c31dQVmHKwncfKzVmIgj636MAoGCCqGSM49BAMEA0cAMEQCIFpZ4V77QqTvr7ExCp5Agt4ssTmrJTjStHNmIZvU40zmAiAU5Oz3FfvC+zrKARL9h4aDJ8osIvuekXfyOjP2wdxirg==","kid":"lYkujLws7SE="},{"issuer":"C = GB O = NHS Digital CN = England DCC CSCA","subject":"C = GB O = NHS Digital ST = England & Wales CN = DSC_DCC_GB_ENG_02","notbefore":1632923232000,"notafter":1695997032000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE17Mn/OPO2RQfYEZM62rPQcvhfRd6\\nZTWo1MZnPvSBMCzjuY0ZdmtsXwDHH7wDOVcTs1NSylkb+/EmC1t/7XV0Ow==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+jCCAqCgAwIBAgIEYVCF0jAKBggqhkjOPQQDBDA+MQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGTAXBgNVBAMTEEVuZ2xhbmQgRENDIENTQ0EwHhcNMjEwOTI5MTM0NzEyWhcNMjMwOTI5MTQxNzEyWjBZMQswCQYDVQQGEwJHQjEUMBIGA1UEChMLTkhTIERpZ2l0YWwxGDAWBgNVBAgMD0VuZ2xhbmQgJiBXYWxlczEaMBgGA1UEAwwRRFNDX0RDQ19HQl9FTkdfMDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATXsyf8487ZFB9gRkzras9By+F9F3plNajUxmc+9IEwLOO5jRl2a2xfAMcfvAM5VxOzU1LKWRv78SYLW3/tdXQ7o4IBbzCCAWswDgYDVR0PAQH/BAQDAgeAMHgGA1UdEgRxMG+BD3BraUBuaHN4Lm5ocy51a4JKaHR0cHM6Ly93d3cubmhzeC5uaHMudWsva2V5LXRvb2xzLWFuZC1pbmZvL3B1YmxpYy1rZXktaW5mcmFzdHJ1Y3R1cmVzL2NzY2GkEDAOMQwwCgYDVQQHDANHQlIwcgYDVR0fBGswaTBnoGWgY4YnaHR0cDovL3BraS5uaHN4Lm5ocy51ay9DUkwvRU5HX0NTQ0EuY3JshjhodHRwOi8vY292aWQtc3RhdHVzLnNlcnZpY2UubmhzeC5uaHMudWsvQ1JML0VOR19DU0NBLmNybDArBgNVHRAEJDAigA8yMDIxMDkyOTEzNDcxMlqBDzIwMjIwMzMxMDIxNzEyWjAfBgNVHSMEGDAWgBTaLs7D9zr7+L4Qc6jE8Yi9K9TxyjAdBgNVHQ4EFgQUcOpem+yb6Ti0xloFxJUhNtmBWbQwCgYIKoZIzj0EAwQDSAAwRQIhAKzGgopNYhDdfMGDBD7uzxXkwYErNfLqrMKCcv8L/JklAiBYV6GgmwXY0coHRshuWHGVEuGfQtYuFUnn3cb6snTgqg==","kid":"osFRFyFIWdU="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH01_TestedCertificate_13_10","notbefore":1634193569000,"notafter":1728887969000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwFh8HIBXfjcz7G4uPL7o\\noBpVAwoZofGJgWNr8Nstxhe4CQuGGo7Cl6QrZyQDtZovLOpcR1S5c4VIUAhegJY2\\nlBEtrIzdR/hcooabkOUyDULsPejaOcii4LtE/25rSKF/6sGyQiCLFb1u4JGlZK7C\\nGmJcXE/NYnDQDvJv6K4dhpwGIoeNFhoG2X6fDHjZemO+/BYZZjRh2BuUf/QnSpVY\\nl6bhmOuJP2EAHBiSt+2S6Xn7O+j0qF5EK5Tm6tttSOjnmz59isc35GlwloszjRn5\\nriUR2t8TYt5UEMYJY2N8iEGIpu9HiJBQyMB1kjzwc7ClwYo4/jB3zWqwZGwhjj5w\\ngwIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"1MTFjluEWHU="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201528_21_09","notbefore":1632395577000,"notafter":1727089977000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wSNYJMn6P/DgJDmQKob\\nZubHIBOAlIEG7dI+6p4uXZqyw+gXcUXaaTEEn5F9i+OMAz9GdiTlXo6dPr7LNOm0\\nyoNWNJMcmW4ePGWKpTm70Ie3YhkAzLiZ2kvTUnAKJj3q49IttvL6gj1pOOGroUyL\\nBB44JOvd21GSW2N5LCZU9JlGXmVe/xPirbMFgQx9hgcwPlmzY3OGHGwdosO6aEew\\n8fBvgHwyJfqbALRF757EpA/qNfLH+QwinigkIl613yghzslRzoejvyOz4UkKOQm1\\n8fAbBF173J/Uur4yLF7voui03QK2we21sLlW8WkS4xKDnlL/rKvnsSyTEFqsC0Jx\\njwIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"2eCjZcuOoEo="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH_1200005_0511","notbefore":1636462670000,"notafter":1731157070000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqssyXfYarvjSj+v2XSgQ\\nb6nPrpx+0p5CV98Hr4rSpcFJo8DOUf4BzWD4vpAY+kvrGrxnvBlZv+fBrnJcA46u\\nPGpE0GILlqHFxBmm8CVbAS/UFrHf9DqG0AiMD9zLBsLCW9M+6zlIQkX5CsbWbjCu\\nnJoySDBQyMmvo74EFoTpJMW05yYZA9WRSGGf6qNCPxRkXPIaO43FMLWVlTTCAnHt\\nXzHpakG5qZDULLEWZhOs78KT9oHCcTBakPb38pgUTBNwTFMPuSm57jtiqm8oPbx1\\nhxxQGb6XxMuIa/eKWIh8z1/oLORaiixxU6YNHNPFbl5oAOX6CjN6i+krI2zbpisy\\nnQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"CGFUps8kh3M="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200002_21_09","notbefore":1632395402000,"notafter":1727089802000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvJk7BZo+4PHBDZzfie8+\\nBPTzwzcBmpTFqP6dP2X6MsXmKX8a1Rww2x7/O4bBkpea+UOWGQJ+ryUDwnK0u0AJ\\nHEID7OAg/gHyK0571RIpcMsiP+rZJjg6j9s7EDIogf6cf641hjVyaWuhkvuw0Uye\\nX5SRVzFQ+eAkAHXwK50mIkIfIJ4DFDvz2Hv/JDMaeSzz9aP9XuDJYu+JX6nGJ0WF\\nmjtjQXmJ39HT4j4q4nsLZh6sHOtiqCVrOfzoOGk6HUxI7nDbqPO+4UwP2o1S82l9\\nLgQSABvFwCtox+w1AGKM/bUeyfTrEIoMAIgDiKDL7k3ks7iyiPZauvtvhSS0MeFl\\nOQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"JZhMLV9Gyck="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = COVID-certificate-CH-21-05","notbefore":1621505071000,"notafter":1716199471000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtk/51stJXU48RqD2lh4I\\ndsxFrjlJfmTCrLr3cQNEXkrEoI3OEV8NnotE1RjVmQrqLTT04oxpWlcbMolXtJBt\\nu3rOiLNwQvyVEbj/xSc6KT84Tp7GBo1P/kkunY+Vmab6HUCV/oGZYmsdiUP/OnTP\\nX6Wy6delDhnrgHIDti73/TSsG7Zl1V6km7+KIkjAkVCEDkkUD7uffd4G+GBZ0B9F\\n1KOT0IcFQNvDm0zlROVoGFlmPS8DWlrLHuIdMbB281uiDjcN+kNUt7rUyyj6TFgX\\n9WCgEB/5mQBMRaaXK1zeDTaNkmC2S7IWxhMQsMBXJyAdbD9AnQOZc6XRjBauO7gz\\n0wIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"Ll3NP03zOxY="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200001_21_09","notbefore":1632395376000,"notafter":1727089776000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvCn2NP604m2TFWnyKbIy\\nhup78wpXMM62pHod3InusDPPPFXWgVsN0NG1E65jy+W7LDY+Q719jVCC8pusghPL\\nmDze1KWwGrGdRyUGmqwFWW5sI0uxKJCsEXMRcKqKpf5NXxJlSo1FIv/ZKKFAnUt1\\nIFUzLo5HP7rqCiKlU58uk9N4puECCW3QEUIgm4mwflcR1crqY1Pdd1UxIceRTGcv\\nT0q4wN9w1fwko+grpV0N7EK2drSVVdvPYlo2fHCU+hDwTJ6AThTktzRiybznhq4F\\nqf3jEyzVFQA5W1VvAoWhMZgAxHRCZXFXex/MtGvOD4Q+ovP3m1EYX0+C/qsaSsHb\\n2QIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"TQeqi04M2ek="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201529_21_09","notbefore":1632395629000,"notafter":1727090029000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2MyDsFqh2Xhdc6PUbR+0\\nalU0hD8tT6BSJpCbigvdZAbz5slDPAIrXvyz2Aac79U6jvyyMHHDbIOL1DxU1/pc\\n7shgd/B0btHJogwQQUxyh149GnA8e1i3LLJhu8dtC4LxBPZK91nknkgrKyYU55sJ\\niQTnx2VYuF6WDBXFW4Q2EHsN+KIC68uDNousFHdw4Dk9rb4vEHLqsbY/afEZ1HmW\\nbrvN+6pPyPFh43ogvYWkVcn5JahOXQqpoePVFUAq0sdqG9DluoSXWqpyNfcTQp3W\\nCVldqsyMfAzGwceR/hKohMDXBmxAAbv5h8U05KX1xHgwAWfPPiITtqqIKt0EvFJP\\nzwIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"d+WbDD8Gr5g="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201525_21_09","notbefore":1632395556000,"notafter":1727089956000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0urbzgg7+VIvee9+u7Ti\\nW+a+xDKAhqh9CXfPS+Lydi9Y527boI6bbqZxA2qhFVWp4FFzxRYRy6pVfReokpgS\\nQvcjoR6YvRNi/HK4c44tLvz5gymhX/80oR43Gr/vOUkvne3c3SD8BN+tZlJScIt7\\nMrIm0KNWjGGBoCnswxcn2dYGNoYFvHVN/3exg+oC4oO5QU3rNyFh3PWSHIn3svZA\\nAeT3NLLdZ2inGoRyGTY3IYcPk6vj2y69wDxz/rO3kV2SpwHMCkKqcwwsdlOiqS6n\\nd6AvOpQYMRRC5mEFbB1J0g7z73YdH+WNzEsa/B25xzDrIWi/sul2INhd3q0OTw2v\\nqQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"hGUS4Zj9fLM="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_EU1201507_21_09","notbefore":1632395524000,"notafter":1727089924000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA195RM978uHXQTBanwOqW\\n5vt6WBnO8skLa7kiY4q4l8MOgSrIitQvBcnuJFiTazMTjJpdEAblB0E4mZuzvn2p\\n1I7SrFL7mwqQFrQ9GXvNp6gwBHYJrMci+J0FshxnWc9EYFFbnmixdSsyla5c4W8b\\n/pfasFYWkuCwUCGLrspMrkJ/gsWcj4h0HvlCO9hHsHlLqD/kY0y0VGUAizsah255\\nYZhTeB4ag60E93wUHt6HX0q4ngCk05S04aH9eaBF9GIuRhxrI4GEDcYIPB8GasrK\\nPIS8ufOMQsSE8uJkPhJGQblDh+fPZb2bnUPX9vUSBPTJD5XgHsPGancWrpzBGttO\\n3wIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"l+UqotarLJc="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200003_21_09","notbefore":1632395440000,"notafter":1727089840000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApU+JIe3bHtVFBRbLLcZ/\\nMHfaOB8dKwsWj7nAh8wr3Iv2+te2Kmq3MLDPZFR0q/hAAEg9gY/K1XVh74S3Zf8U\\niSm9UJgALVIsxCi96eVpa1GGUtpbQvEg7Uz43PM/vUEkAs8xA/45BtFX1WE2nQ1z\\n2PFcI3pOaJl4UHOVTA1LxEwOrAPBhlApcYwp75Gc9+KahxpJzaDR618ooV9MICYY\\ng8swv4d99u11mjgwMAZcpiNf9iIa1H4phann+5RuNLbRHebVJgBot95AJ4MrOEEq\\nIXg7LpDD9pBofVbV6IB7tuFcIjBIPJhLaUI6nLyg8oxh5NA8fKE9Nc2zbl8po84S\\nrQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"oVKwwScGxuY="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200000_21_09","notbefore":1632395333000,"notafter":1727089733000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5G85GgStNuJe4lqs7Jkb\\n7/3tBfhNTs0DDuxm0XpJIptqBLFvTLllQqMO8QI/lx1266VlfthTASK2ZpnQC6Id\\ns/NEdNrLHuGIRNktd7oaq3Priz7f96TnXiW9qX/WLL55wpXcHSmLyvEfdP7BSdyQ\\n9xrzm8bwg8cD638e69lScBeGpG04Z8hOVSQAQOBzAjSGkWPzhkah001vVev9CNcZ\\nBiL56iVox6nIJ/sgbzOlvwJDaXnKZOOXRk+xKQA+BDjjBfmvq6KvKoiRoGhvmG3g\\ntMFvXPEr+mvBkbHvzswPr6aKpbm4sFzDbbgsSb6zGJcPLhs6aMm0FaIuetyc0lxf\\nSQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIH0zCCBbugAwIBAgIQQ+x5JW4dgGnoKqONJn2FVTANBgkqhkiG9w0BAQsFADCBtzELMAkGA1UEBhMCQ0gxHjAcBgNVBGETFVZBVENILUNIRS0yMjEuMDMyLjU3MzE+MDwGA1UEChM1QnVuZGVzYW10IGZ1ZXIgSW5mb3JtYXRpayB1bmQgVGVsZWtvbW11bmlrYXRpb24gKEJJVCkxHTAbBgNVBAsTFFN3aXNzIEdvdmVybm1lbnQgUEtJMSkwJwYDVQQDEyBTd2lzcyBHb3Zlcm5tZW50IFJlZ3VsYXRlZCBDQSAwMjAeFw0yMTA5MjMxMTA4NTNaFw0yNDA5MjMxMTA4NTNaMIHnMQswCQYDVQQGEwJDSDENMAsGA1UECAwEQmVybjEPMA0GA1UEBwwGS8O2bml6MRowGAYDVQQPDBFHb3Zlcm5tZW50IEVudGl0eTEeMBwGA1UEYRMVTlRSQ0gtQ0hFLTQ2Ny4wMjMuNTY4MSgwJgYDVQQKDB9CdW5kZXNhbXQgZsO8ciBHZXN1bmRoZWl0IChCQUcpMRQwEgYDVQQLDAtHRS0wMjIwLUJBRzEfMB0GA1UECwwWVGFza2ZvcmNlIEJBRyBDb3ZpZC0xOTEbMBkGA1UEAwwSQ0NfQ0gxMjAwMDAwXzIxXzA5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5G85GgStNuJe4lqs7Jkb7/3tBfhNTs0DDuxm0XpJIptqBLFvTLllQqMO8QI/lx1266VlfthTASK2ZpnQC6Ids/NEdNrLHuGIRNktd7oaq3Priz7f96TnXiW9qX/WLL55wpXcHSmLyvEfdP7BSdyQ9xrzm8bwg8cD638e69lScBeGpG04Z8hOVSQAQOBzAjSGkWPzhkah001vVev9CNcZBiL56iVox6nIJ/sgbzOlvwJDaXnKZOOXRk+xKQA+BDjjBfmvq6KvKoiRoGhvmG3gtMFvXPEr+mvBkbHvzswPr6aKpbm4sFzDbbgsSb6zGJcPLhs6aMm0FaIuetyc0lxfSQIDAQABo4ICpzCCAqMwKAYDVR0RBCEwH4EdY292aWQtemVydGlmaWthdEBiYWcuYWRtaW4uY2gwDgYDVR0PAQH/BAQDAgeAMIHXBgNVHSAEgc8wgcwwgckGCWCFdAERAwUCDjCBuzBDBggrBgEFBQcCARY3aHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3BzL0NQU18yXzE2Xzc1Nl8xXzE3XzNfNV8wLnBkZjB0BggrBgEFBQcCAjBoDGZUaGlzIGlzIGEgcmVndWxhdGVkIGNlcnRpZmljYXRlIGZvciBsZWdhbCBwZXJzb25zIGFzIGRlZmluZWQgYnkgdGhlIFN3aXNzIGZlZGVyYWwgbGF3IFNSIDk0My4wMyBaZXJ0RVMwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3JsL1JlZ3VsYXRlZENBMDIuY3JsMHcGCCsGAQUFBwEBBGswaTA5BggrBgEFBQcwAoYtaHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvYWlhL1JlZ3VsYXRlZENBMDIuY3J0MCwGCCsGAQUFBzABhiBodHRwOi8vd3d3LnBraS5hZG1pbi5jaC9haWEvb2NzcDCBkwYIKwYBBQUHAQMEgYYwgYMwCgYIKwYBBQUHCwIwCQYHBACL7EkBAjAIBgYEAI5GAQQwSwYGBACORgEFMEEwPxY5aHR0cDovL3d3dy5wa2kuYWRtaW4uY2gvY3BzL1BEUy1TR1BLSV9SZWd1bGF0ZWRfQ0FfMDIucGRmEwJFTjATBgYEAI5GAQYwCQYHBACORgEGAjAfBgNVHSMEGDAWgBQ0C77yFT6kD1cH4kFkizIR0SkLYTAdBgNVHQ4EFgQUBKTr1YcLKJLc5jkBfPBbM+mKOS0wDQYJKoZIhvcNAQELBQADggIBAJI0MROzMyXnSBFe7M2gOYUGo9At0j8KU0O6KoysYxr0JAiFFmlnacMpMRjr+x/P6ZATf/g3vdwB+dI/ti2CKh9lUT9YH3uLS6IBv9ssVlWTaDdw7jWDsi60z1qe8feBWvgHeZn2uCVRow5rUTLJ4vaIuEmvMjGvUYac/lUfxBYxzH6Tleaws4L3ViGzpyuTDbn/UHFxYLHcNhUtS44QuNqCL51f64Sktg4uZPvnQF3n0YsLZq67USgf77LSD9rmtOC159kXr5QkkvQ9u5cVAwBLXvSQwL2OJEDbbyXXhg01FGBefZ2uB82FRGp/YjV/JpPceJ8Apk+dmx6HLobZFXugKaZoyywS9HX+rA8T4FLDKyQ04feAzaJl8y+BD5H5uBgDdfjf2E1o7T0JuyNDeZpwBCfiXhT8A4VspB1gevlnT3hD/3aLHeCb6fbZvOx59VFGm2/h69ae0eoZk8tvZGGNjBj2IcwCw5Kc6xBEjHOJPJiB9/ZOP7nx+v/TV8txhAJA6Jy+5I1NDwq2O1GLQnExrXec8G8e4NiASNng4ne5DzyQm76HPcDag4eUCS+09b7du8x0sWgK9L9wOZQndEGn+ci21YMb+iqT+6C6ArjTRcNJBS8hteEHsWvDjWIhX6mfzhmebHPsNuR60gQLDzD+G8PNNutyLRBR88KTs+W/","kid":"ohI9KlFR2P8="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH01_RecoveredCertificate_13_10","notbefore":1634193433000,"notafter":1728887833000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvG8EuhEV3qydjzXibNlK\\neBaRiswEivR7Ths756AhlCuY1xd1MC2qtTpledWZpdYaEr2QunzcE4OU7Tzj0Q4I\\ny6Ru12yenffGAZVxt31TpwjMioh/hICU9kh5KospkHf4wH6S2+JoK9P3stljHbJd\\ndJith9LzyzDQ+ezTVksE4KBD9iKLlvx6kOQE1LSW1lvnm89JqoY+Hlpdy0Gux8uj\\nQ+HsPG5CQc4B7DuoYEjmmWSxGIIR3tuym4UjqUpOYYdq2Ee3ahGt4qPV8mhERHwd\\nT0XeMgTbKaakfBjdQeH+Imd2IRmVaZUkgxTSXpXSCP/tus8k77BNknCtf54N5o2H\\nPwIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"rTEJEs6D1ik="},{"issuer":"C = CH 2.5.4.97 = VATCH-CHE-221.032.573 O = Bundesamt fuer Informatik und Telekommunikation (BIT) OU = Swiss Government PKI CN = Swiss Government Regulated CA 02","subject":"C = CH ST = Bern L = Köniz businessCategory = Government Entity 2.5.4.97 = NTRCH-CHE-467.023.568 O = Bundesamt für Gesundheit (BAG) OU = GE-0220-BAG OU = Taskforce BAG Covid-19 CN = CC_CH1200004_21_09","notbefore":1632395497000,"notafter":1727089897000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAphhhJq5dIl4yUEbliJyc\\nkuldKiylWZZfTRQNx/k0xUFU60n9tUR4Ky1AibJHIiN/nIhSZTgwSSuALWinuEri\\nI1ROb++TsQODtC3dDFFbNIwq1sVuT1TI7o6nnGTRHxwJckNP5++obdKSZtUfT6LO\\nClxFsNoYl2EAzwb8YdcOiWNEB8gj7aY+vPL9BmECb9IRxPwhOxzPYkgLUkvqzt2U\\nzV6CFKM5t4LxM4pTICy9vlIViZTcx6FDJ78AuT2C5AbW+ILYmc6/V189uga2/PTy\\nEJyABw3gRg2BItkwy1flAjQcNIhKzshorcwGPD9EtuqpWF26DyU/HIQUabptMC6P\\nCwIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"rVPuf3yKLBg="},{"issuer":"C = HR O = AKD d.o.o. CN = Croatia DGC CSCA","subject":"C = HR O = AKD d.o.o. CN = Croatia DGC DS 001","notbefore":1621516666000,"notafter":1684588665000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV\\n5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICwDCCAmagAwIBAgIIPR9jkXY7CPEwCgYIKoZIzj0EAwIwPTELMAkGA1UEBhMCSFIxEzARBgNVBAoMCkFLRCBkLm8uby4xGTAXBgNVBAMMEENyb2F0aWEgREdDIENTQ0EwHhcNMjEwNTIwMTMxNzQ2WhcNMjMwNTIwMTMxNzQ1WjA/MQswCQYDVQQGEwJIUjETMBEGA1UECgwKQUtEIGQuby5vLjEbMBkGA1UEAwwSQ3JvYXRpYSBER0MgRFMgMDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEt5hwD0cJUB5TeQIAaE7nLjeef0vV5mamR30kjErGOcReGe37dDrmFAeOqILajQTiBXzcnPaMxWUd9SK9ZRexzaOCAUwwggFIMB8GA1UdIwQYMBaAFDErHKPIgGXhH70EktAlPHyGj1LRMC8GA1UdEgQoMCaBEkNyb2F0aWEuREdDQGRnYy5ocqQQMA4xDDAKBgNVBAcMA0hSVjAvBgNVHREEKDAmgRJDcm9hdGlhLkRHQ0BkZ2MuaHKkEDAOMQwwCgYDVQQHDANIUlYwZwYDVR0fBGAwXjAtoCugKYYnaHR0cDovL2RnYzEuZGdjLmhyL2Nyb2F0aWEtZGdjLWNzY2EuY3JsMC2gK6AphidodHRwOi8vZGdjMi5kZ2MuaHIvY3JvYXRpYS1kZ2MtY3NjYS5jcmwwHQYDVR0OBBYEFB55yLnz+T3ShQFs345mxQEJZb7TMCsGA1UdEAQkMCKADzIwMjEwNTIwMTMxNzQ2WoEPMjAyMTExMTYxMzE3NDZaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiANYlqMzCo7P6/FbwxS88MCB43CIBgfpJDmQ+D120Ov0gIhALJNQbk8HdHnkd31GV88U1N4YghHSZslLY8eZX8wSYR/","kid":"25QCxBrBJvA="},{"issuer":"C = HR O = AKD d.o.o. CN = Croatia DGC CSCA","subject":"C = HR O = AKD d.o.o. CN = Croatia DGC DS 002","notbefore":1636488815000,"notafter":1699560814000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsHGctEPFotenAxVqYr/5Ztl46BU9\\nhWNYAYdGWihiGzRTOgXzONqCQJqB37pacA53L7OlXPFONvT9KWYvbsVeiw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICwDCCAmagAwIBAgIIcPs80UkeH/UwCgYIKoZIzj0EAwIwPTELMAkGA1UEBhMCSFIxEzARBgNVBAoMCkFLRCBkLm8uby4xGTAXBgNVBAMMEENyb2F0aWEgREdDIENTQ0EwHhcNMjExMTA5MjAxMzM1WhcNMjMxMTA5MjAxMzM0WjA/MQswCQYDVQQGEwJIUjETMBEGA1UECgwKQUtEIGQuby5vLjEbMBkGA1UEAwwSQ3JvYXRpYSBER0MgRFMgMDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsHGctEPFotenAxVqYr/5Ztl46BU9hWNYAYdGWihiGzRTOgXzONqCQJqB37pacA53L7OlXPFONvT9KWYvbsVei6OCAUwwggFIMB8GA1UdIwQYMBaAFDErHKPIgGXhH70EktAlPHyGj1LRMC8GA1UdEgQoMCaBEkNyb2F0aWEuREdDQGRnYy5ocqQQMA4xDDAKBgNVBAcMA0hSVjAvBgNVHREEKDAmgRJDcm9hdGlhLkRHQ0BkZ2MuaHKkEDAOMQwwCgYDVQQHDANIUlYwZwYDVR0fBGAwXjAtoCugKYYnaHR0cDovL2RnYzEuZGdjLmhyL2Nyb2F0aWEtZGdjLWNzY2EuY3JsMC2gK6AphidodHRwOi8vZGdjMi5kZ2MuaHIvY3JvYXRpYS1kZ2MtY3NjYS5jcmwwHQYDVR0OBBYEFIZqz9SFr6ueNBY4r/u1ZNovF+WlMCsGA1UdEAQkMCKADzIwMjExMTA5MjAxMzM1WoEPMjAyMjA1MDgyMDEzMzVaMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiALjpDpXS59EIpkdvCjEAdR6UPq41CbnhWAat7dGT8+zwIhAOdLwTxsmuRttRDg6ZX0CGxwjHFu7NfxCwqdrOd8n50E","kid":"IoybU6axZJE="},{"issuer":"C = HU ST = Budapest L = Budapest O = EESZT CN = DGC_CSCA_HU_PRD_20210621_01","subject":"C = HU ST = Budapest L = Budapest O = OKFO CN = DGC_DSC_HU_PRD_20210628_01","notbefore":1624889734000,"notafter":1687961734000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadM\\nS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICnDCCAkGgAwIBAgIUa/gUnrKtSo4XzXVTPkV2APtPwXEwCgYIKoZIzj0EAwIwaTELMAkGA1UEBhMCSFUxETAPBgNVBAgMCEJ1ZGFwZXN0MREwDwYDVQQHDAhCdWRhcGVzdDEOMAwGA1UECgwFRUVTWlQxJDAiBgNVBAMMG0RHQ19DU0NBX0hVX1BSRF8yMDIxMDYyMV8wMTAeFw0yMTA2MjgxNDE1MzRaFw0yMzA2MjgxNDE1MzRaMGcxCzAJBgNVBAYTAkhVMREwDwYDVQQIDAhCdWRhcGVzdDERMA8GA1UEBwwIQnVkYXBlc3QxDTALBgNVBAoMBE9LRk8xIzAhBgNVBAMMGkRHQ19EU0NfSFVfUFJEXzIwMjEwNjI4XzAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyN8tlsHEJlHHmms/54jGukHiHadMS0ckg70EQkyDuX7A003uCCiZTokKurIS19EOAlQFLTCLrVJ72CcST7+H/KOByDCBxTAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFLfwN2b/BblsB3wY92Sbxbc7QOmZMB8GA1UdIwQYMBaAFPHcUjbpr2UPGVKQEwKXLMGD4sDTMEEGA1UdHwQ6MDgwNqA0oDKGMGh0dHBzOi8vd3d3LmVlc3p0Lmdvdi5odS9jcmwvZGNjL0NTQ0FfUFJEXzAxLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCxhu4NSIKO9F8jlaxe3EqAIDoPAaF5A9+GPy03W0PpVQIhAL12JyQzJ9f7qnLapDMUSf6HD0+AMNHl9BjHZphNBUlu","kid":"4GkJs9YsYS4="},{"issuer":"C = SK ST = SK L = Bratislava O = NCZI OU = DGCOperations CN = CSCA_DGC_SK_01","subject":"C = SK L = Bratislava O = NCZI OU = DGCOperations CN = DGC_01","notbefore":1599004800000,"notafter":1725148800000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6qxT6sSK3TDheWFHTBkfveooRhtU\\nWqEqrELD9B7aAk7xjPS3MBETtmnWb4nRzBINvFwrLDxQCqTX8Jevp33c4Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICVTCCAfqgAwIBAgIUSfAlV5Ro7+hRqRa9kH4Un95XIGQwCgYIKoZIzj0EAwIwbzELMAkGA1UEBhMCU0sxCzAJBgNVBAgMAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMRcwFQYDVQQDDA5DU0NBX0RHQ19TS18wMTAeFw0yMDA5MDIwMDAwMDBaFw0yNDA5MDEwMDAwMDBaMFoxCzAJBgNVBAYTAlNLMRMwEQYDVQQHDApCcmF0aXNsYXZhMQ0wCwYDVQQKDAROQ1pJMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMQ8wDQYDVQQDDAZER0NfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATqrFPqxIrdMOF5YUdMGR+96ihGG1RaoSqsQsP0HtoCTvGM9LcwERO2adZvidHMEg28XCssPFAKpNfwl6+nfdzho4GIMIGFMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUj9izCT/z9ccQUX6CeZ0ns8Zu0SMwHwYDVR0jBBgwFoAUm9JYe8TeF7J1Gm8LZ2DfcBXXLHMwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNJADBGAiEA1jDNVMcnPoIOaGxeFRKaRZ8MrwR6xmmv0F0I0l5wKuUCIQDnaar37bg6T8i3rJp6KHQkJqJ1NSnc0Qltw1qghCJC0g==","kid":"6CDB1hL+uKU="},{"issuer":"C = TG ST = MARITIME L = LOME O = MENTD OU = DCA CN = e-certs.gouv.tg E = support_it@support.gouv.tg","subject":"C = TG ST = MARITIME L = LOME O = INH OU = INH CN = inh.tg E = wemboo.halatoko@inh.tg","notbefore":1637830480000,"notafter":1700902480000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/t+Slm3djgmEU6EDiHQ9NbBluAow\\nmiJ1WRBnCP8M+zS4nz8F8i3999918JYKA4wJni8OaHwhzb+ay8KJIxhNFA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC2zCCAoGgAwIBAgIULouI8zvjFtrALV9M/d6BMSwuJGMwCgYIKoZIzj0EAwIwgZIxCzAJBgNVBAYTAlRHMREwDwYDVQQIDAhNQVJJVElNRTENMAsGA1UEBwwETE9NRTEOMAwGA1UECgwFTUVOVEQxDDAKBgNVBAsMA0RDQTEYMBYGA1UEAwwPZS1jZXJ0cy5nb3V2LnRnMSkwJwYJKoZIhvcNAQkBFhpzdXBwb3J0X2l0QHN1cHBvcnQuZ291di50ZzAeFw0yMTExMjUwODU0NDBaFw0yMzExMjUwODU0NDBaMIGDMQswCQYDVQQGEwJURzERMA8GA1UECAwITUFSSVRJTUUxDTALBgNVBAcMBExPTUUxDDAKBgNVBAoMA0lOSDEMMAoGA1UECwwDSU5IMQ8wDQYDVQQDDAZpbmgudGcxJTAjBgkqhkiG9w0BCQEWFndlbWJvby5oYWxhdG9rb0BpbmgudGcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAT+35KWbd2OCYRToQOIdD01sGW4CjCaInVZEGcI/wz7NLifPwXyLf3333XwlgoDjAmeLw5ofCHNv5rLwokjGE0Uo4HBMIG+MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUX0ifcWO3ft5jnss/sOmn05KXgJ0wHwYDVR0jBBgwFoAUJFqHPi2oSniAyBTIA4WUfx9rajQwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cHM6Ly9lLWNlcnRzLmdvdXYudGcvY3JsL2hjZXJ0L2NvdmlkMTkwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAKBggqhkjOPQQDAgNIADBFAiEAqCcu7hOCqNW7QeuBSElenRiUCB7vD+JFbCepz9EOBKkCIEoPgp6HBsSdUbe7aa8LO4/AbCx+ByLBpLAUxWcO0wNX","kid":"6ptpKJA1J90="},{"issuer":"C = LT O = State Enterprise Centre of Registers CN = LT_DGC_CSCA_1","subject":"C = LT ST = Lithuania O = Ministry of Health of The Republic of Lithuania CN = LT_DGC_DSC_2","notbefore":1625090401000,"notafter":1688162401000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsIcppmCVhq96vMc4NtW8\\nX+yV6O1oC7hfKnewK1/pxfByqlVTPpETDLAjNq9knNQpCs7vGjadCbDAylsQRK7q\\nfU3sUUKamh6FgDhFo1dzC4mUHCy3XBL04XJie2eT/a6Wgjrn6NjEFk5M4Jl4N8u/\\nRbfaVxqaOjUM0hBfuzfZeL2LT30POqDHj1hcyod1fIbG4vv2Upqxe3OX/WLr+WzS\\nPbRkPwxcJjmYeNYODT0rEcd9VSzJpljaK+eDVwxT0wMRnCH2QLxdw8sR+oDYDTZB\\naabeHYyZ0CfYzSoBOZT3fVMAbjkVAl8GFyH8tUm4lMQbYEMbl/FkftcZQicaqvRd\\nQQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIFBDCCArigAwIBAgIGAXpe76SiMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYzMDIyMDAwMVoXDTIzMDYzMDIyMDAwMVowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALCHKaZglYaverzHODbVvF/slejtaAu4Xyp3sCtf6cXwcqpVUz6REwywIzavZJzUKQrO7xo2nQmwwMpbEESu6n1N7FFCmpoehYA4RaNXcwuJlBwst1wS9OFyYntnk/2uloI65+jYxBZOTOCZeDfLv0W32lcamjo1DNIQX7s32Xi9i099Dzqgx49YXMqHdXyGxuL79lKasXtzl/1i6/ls0j20ZD8MXCY5mHjWDg09KxHHfVUsyaZY2ivng1cMU9MDEZwh9kC8XcPLEfqA2A02QWmm3h2MmdAn2M0qATmU931TAG45FQJfBhch/LVJuJTEG2BDG5fxZH7XGUInGqr0XUECAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUPZCkpW9sE+8wWf3UeVmVyI2yuKMwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQAh3n6+6+wrWjfQc0PYua+M5sB7QMU1K0jo3Hs+lwYiMEnIZNbdQgnuNAYHm4cf3Qy1YLt9XkMQdzwRz3kbSUQ4iythOby2GBEgCZ7fr17h/2o7VL9QC+hMUqsBXWYEQ1JuYz/L64X60sbIgt2qLy+oeA4WEVc1Yuz7DQsJG0qZRovVQvRy0cL7RHc6uiraaUxsKX7WFzNf6KlT1C1GeFJzcPSTclYMtHR3UgecUEaEenPciPMmUsJY5AOmZqxvJT62Nit9iuR18SieBNK+rJTrmxF4AV5Q7PE7Dhq5HBZhy7gE0UG1XfvSVSIcJcbMiDLxa+lXCFCVOf7drq2CaaIc6UQ0UXTeVmdbkJPid1/pvGLbIyL4UmOqxpzETcIRJKtvhF3UF1cD86/V/77qtZh0UeoCMGSdarZFvWB4As4PrEuvJB6Sfo1D++dCfQkfFEhQZO7wk1zLUB3Pqip2Io3eLn1oXMPxqtoYYH1vGv3HANhd8hVuO3ujYQgb9InLCnl7qPix5f8QrnRA4q72gpofoBnfGziMAyo9EKBib72waWaIpHi8Aw1XJntpHwld0gOV/cs/BquYdtqJpdW2FpoUvP4SbbxUVyDub+Uu2+Q9LKuIFlG4fqgRCUQ5NbgB5wmTxlYEc0xTb/VNICUtDSga4Fjeznm5l0oc4NoS6G4wzw==","kid":"7AfAwcpWOv0="},{"issuer":"C = LT O = State Enterprise Centre of Registers CN = LT_DGC_CSCA_1","subject":"C = LT ST = Lithuania O = Ministry of Health of The Republic of Lithuania CN = LT_DGC_DSC_1","notbefore":1623009026000,"notafter":1686081026000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnhBpxzeGXNlQs7U+j/Av\\n1BUZ6CCgMR3bFLT4rRjO8KQ4IpAKqSCQ3j57MJqdumk3AUfHO5zhMZF4Awy0wqV3\\noFlyP49/56KKZxGARe5UkyfPjVbl8AZpLmgYoS/Ior53TLrwmT/+zvXynzFYbOi2\\nOtCtqanG+9OUhSVRrXEEB+56PpCltE31wemX1behxDuCbE4tuqyTYODFw9Le3dGC\\nbHWdjxi5W3XIUNo8j2u2PKue0KS76Xv0zAYItTgChgv7mM55/G109m4MfeU7AHah\\n43bJth8K8y+SxG3RYHskmNZ7sfn3w8w7WyW7D3/tKHcMt3hgIh9z3DuWeR1C296J\\nyQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIFBDCCArigAwIBAgIGAXni4GKHMEEGCSqGSIb3DQEBCjA0oA8wDQYJYIZIAWUDBAIBBQChHDAaBgkqhkiG9w0BAQgwDQYJYIZIAWUDBAIBBQCiAwIBIDBUMQswCQYDVQQGEwJMVDEtMCsGA1UECgwkU3RhdGUgRW50ZXJwcmlzZSBDZW50cmUgb2YgUmVnaXN0ZXJzMRYwFAYDVQQDDA1MVF9ER0NfQ1NDQV8xMB4XDTIxMDYwNjE5NTAyNloXDTIzMDYwNjE5NTAyNlowcjELMAkGA1UEBhMCTFQxEjAQBgNVBAgMCUxpdGh1YW5pYTE4MDYGA1UECgwvTWluaXN0cnkgb2YgSGVhbHRoIG9mIFRoZSBSZXB1YmxpYyBvZiBMaXRodWFuaWExFTATBgNVBAMMDExUX0RHQ19EU0NfMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ4Qacc3hlzZULO1Po/wL9QVGeggoDEd2xS0+K0YzvCkOCKQCqkgkN4+ezCanbppNwFHxzuc4TGReAMMtMKld6BZcj+Pf+eiimcRgEXuVJMnz41W5fAGaS5oGKEvyKK+d0y68Jk//s718p8xWGzotjrQrampxvvTlIUlUa1xBAfuej6QpbRN9cHpl9W3ocQ7gmxOLbqsk2DgxcPS3t3Rgmx1nY8YuVt1yFDaPI9rtjyrntCku+l79MwGCLU4AoYL+5jOefxtdPZuDH3lOwB2oeN2ybYfCvMvksRt0WB7JJjWe7H598PMO1sluw9/7Sh3DLd4YCIfc9w7lnkdQtveickCAwEAAaNWMFQwDgYDVR0PAQH/BAQDAgeAMCMGA1UdIwQcMBqAGAQWBBTtpEcrNUjfTMOSigUWilK4U570PjAdBgNVHQ4EFgQUwMNfEDstM4gYK8a8WQno8Qt1IZQwQQYJKoZIhvcNAQEKMDSgDzANBglghkgBZQMEAgEFAKEcMBoGCSqGSIb3DQEBCDANBglghkgBZQMEAgEFAKIDAgEgA4ICAQANsbkQ7P3OljNurVYmgB4g/76/tLMzbRExCuUltzxJW1zVZb4juuHNkmjIsUupaiYG8F8fQJpeRam2qgaPaPWqTYwn1lm8K+Ab4jE+9F6nyTJfvI2+BzOcGFsTUr+6If2YafJE9UMCeQWGP1kLX5srtQVTvb7fNHHnEvmijdKoqPv8Xcnkl6j53aZjeM6RrpSqrdtneHwquq9OWnjuKVDGZ1bDiIl52wjCQ+GLczPUtHai+qHNmhOibiT+JoT//fDb96vHlf40Y39zyxRFx0kx9zws8CbAPtvJOfWg6OjY50ARZRfixc6uFrCmnHtpzfcO3f+XwPBIBmvTjphZDGRqNjP46wqUv5vfpquIprhNef+jYi3k+719IBn5QuBNq4vJcMYHitK4WJ24TIxemq5YIXQYQct4t90V04Byhz7phox5P2rZJl3VBOSss7bGu64qc5Dh96joLLHFLChqqqDbhq7RI6Gl8Yn0ShUMg3WTbktTQ9dpGzYdH3wbbuMbzvGOYRTqTVGBH8eb9KJbgC0cDDhelHNXUcwn3Vvbdx3Y9KB2y50VTs9ZcawH52o4BuNwx3vO/L3Eq2EnkIZ2mobJDIGbBJUN2ttBim5muQxgEKns/QgNTpEZgBTkFjQ7mB7gIC8SHDDmU5wXe5aA3GN5/Gl5aUc3rHDmnZQKax63jw==","kid":"lshLbYfCWRg="},{"issuer":"C = CY ST = Nicosia L = Nicosia O = Ministry of Health OU = IT Department CN = CSCA_EUDCC_CY_01","subject":"C = CY ST = Nicosia L = Nicosia O = Ministry of Health OU = IT Department CN = DSC_EUDCC_CY_01","notbefore":1624533802000,"notafter":1686741802000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7S/R06707Glu721qJqvxIFzQ2LSb\\nq9P2uu6nRKCBLsH5ryP3wXpggL6hGh080F462bGLTuI/hXrxEB2kR2Vjww==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICjzCCAjWgAwIBAgIJAPS0Vbm3L3MTMAoGCCqGSM49BAMCMIGBMQswCQYDVQQGEwJDWTEQMA4GA1UECAwHTmljb3NpYTEQMA4GA1UEBwwHTmljb3NpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMRYwFAYDVQQLDA1JVCBEZXBhcnRtZW50MRkwFwYDVQQDDBBDU0NBX0VVRENDX0NZXzAxMB4XDTIxMDYyNDExMjMyMloXDTIzMDYxNDExMjMyMlowgYAxCzAJBgNVBAYTAkNZMRAwDgYDVQQIDAdOaWNvc2lhMRAwDgYDVQQHDAdOaWNvc2lhMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxFjAUBgNVBAsMDUlUIERlcGFydG1lbnQxGDAWBgNVBAMMD0RTQ19FVURDQ19DWV8wMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABO0v0dOu9Oxpbu9taiar8SBc0Ni0m6vT9rrup0SggS7B+a8j98F6YIC+oRodPNBeOtmxi07iP4V68RAdpEdlY8OjgZQwgZEwMAYDVR0fBCkwJzAloCOgIYYfaHR0cDovL2NybC5ldWRjYy5nb3YuY3kvZHNjLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMCsGA1UdEAQkMCKADzIwMjEwNjIzMDAwMDAwWoEPMjAyMzA2MjMwMDAwMDBaMAoGCCqGSM49BAMCA0gAMEUCIQCL2pPCMNugzz3sGPDO02C6oMYvlkj6lfxPbckgmegv6QIgANPWEyptdWnK8y0WpU85VROr4cjobAkRNioquyCln00=","kid":"7rZbUrXNlLk="},{"issuer":"C = NO O = Norsk helsenett SF CN = NO NHN CSCA PROD","subject":"C = NO O = Norwegian Institute of Public Health CN = DSC HN EU 2","notbefore":1623057373000,"notafter":1686129973000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAErbWQM5hj5SeR23DzCV0TVKrFhfYs\\nmNVVSbPFxwyw4ZEfersZ3bp2h+rw2BhbLbzVHZIwWfnhaKZ72+JciUksFQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICLzCCAdWgAwIBAgITWQAAAAMkF9vUXhL/vwAAAAAAAzAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYwNzA5MTYxM1oXDTIzMDYwNzA5MjYxM1owUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEhOIEVVIDIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASttZAzmGPlJ5HbcPMJXRNUqsWF9iyY1VVJs8XHDLDhkR96uxndunaH6vDYGFstvNUdkjBZ+eFopnvb4lyJSSwVo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBTjjLs+qOV9Ef2iKzss4qIJTpVymjAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIFoTcS0308Htrwu8gtsc1YX2679u/+UjB6i3iG4BvUGFAiEAirH6ggtWwXqXH94+kfwQ0A5q0pPGCdik4BIlnYmnpMk=","kid":"7z8+6oww2a8="},{"issuer":"C = NO O = Norsk helsenett SF CN = NO NHN CSCA PROD","subject":"C = NO O = Norwegian Institute of Public Health CN = DSC AN EU 5","notbefore":1623749441000,"notafter":1686822041000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfBeQBQBjyKpvjsCujqi15xnygRMy\\nhjNsEy198LzTYuB+Mje1lxIvPYkfO/PEHQFgA52gn26bHCXE75GWqq6UMw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICLzCCAdWgAwIBAgITWQAAAAY+BhnAubZsywAAAAAABjAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzA0MVoXDTIzMDYxNTA5NDA0MVowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR8F5AFAGPIqm+OwK6OqLXnGfKBEzKGM2wTLX3wvNNi4H4yN7WXEi89iR8788QdAWADnaCfbpscJcTvkZaqrpQzo4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRQ+3DSiNYiK7x+Rm48SPxVU66ILzAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0gAMEUCIQCpipDAPcRMuFYLkVIA2qxW3bikYzJzNxdvnqzDMMitFAIgFt8q+4FM53rl4bfBzwnQRpXDLaGc4bdKC0wcjBUHKyQ=","kid":"Er5OTMwLd78="},{"issuer":"C = NO O = Norsk helsenett SF CN = NO NHN CSCA PROD","subject":"C = NO O = Norwegian Institute of Public Health CN = DSC AN EU 4","notbefore":1623749426000,"notafter":1686822026000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElH46JUamhvfj2ocSTxw9Eq7nVdP9\\nOzBOxQ/zaWNXN5ucagla6nruNqfDiZXQMcz4gpZ6pcjtJl+xra2ATzZ9Pw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICMDCCAdWgAwIBAgITWQAAAAVu7yCnw/v4agAAAAAABTAKBggqhkjOPQQDAjBFMQswCQYDVQQGEwJOTzEbMBkGA1UEChMSTm9yc2sgaGVsc2VuZXR0IFNGMRkwFwYDVQQDExBOTyBOSE4gQ1NDQSBQUk9EMB4XDTIxMDYxNTA5MzAyNloXDTIzMDYxNTA5NDAyNlowUjELMAkGA1UEBhMCTk8xLTArBgNVBAoTJE5vcndlZ2lhbiBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aDEUMBIGA1UEAxMLRFNDIEFOIEVVIDQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASUfjolRqaG9+PahxJPHD0SrudV0/07ME7FD/NpY1c3m5xqCVrqeu42p8OJldAxzPiClnqlyO0mX7GtrYBPNn0/o4GWMIGTMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBSLtW/xwBSwzLlO3mNEzuueB3HOOTAfBgNVHSMEGDAWgBTXkEejKua1tCS7TE8OsmZOZtj0NzAMBgNVHRMBAf8EAjAAMAoGCCqGSM49BAMCA0kAMEYCIQDhu8xPp4rym01BCIlLAPB4UftU+yrPjxnsEPk+q4Bk4wIhAKVSgCN39hpSqqb5ErHWJdTp6+zJalGHg3Oj990zNYBY","kid":"cdm9Ymfwn2I="},{"issuer":"C = IT O = Ministero della Salute CN = Italy DGC CSCA 1","subject":"C = IT O = Ministero della Salute CN = Italy DGC DSC 3","notbefore":1636724505000,"notafter":1699796504000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwlU23NYZQba7t++TVejbvPxgS6w\\ndW8uE7UPe14VkhXoKINhhrCT0EWHP+aPim6apT46Ktd0lfoNVTsbg2QQ2A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEDzCCAfegAwIBAgIUdtfIwH49VX3gzjg7sw1okOP/KAIwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjExMTEyMTM0MTQ1WhcNMjMxMTEyMTM0MTQ0WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAzMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGwlU23NYZQba7t++TVejbvPxgS6wdW8uE7UPe14VkhXoKINhhrCT0EWHP+aPim6apT46Ktd0lfoNVTsbg2QQ2KOBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFCR9+jzaaoSYO/7wB8YLfAk4Vw1FMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAokc+BGagX9kFseWotrm4fPrXBm6JLAxn9rC/Mz1awCXehbinERs+AVl029UApYXNp3/wiA57/9z1NkmMtZspBn1b0rJ4WP5hcRDhcsXxFvkSNx03/LwTCBi9iJSFNDQSv6bq8+YVSenamvwGJ+wNpemAIthrPshIGU2+MEipWhFmERYE6JaGJVFGs6n8r4IHzOx3gKeyUoGK2p4vM0Aw4LCfaqffEQz47lVMi+dDk3/h6CWWKZ6//+/15DKsuuj+BBAt9HBaqKAgCQke8RVceGJ1dsZFUW0yuCMqCSmoc3pksjQghYki9p4gs8Ex9khXCusRnCw81sG7VGrZgiDCEGHtbny774/CLCFNDpPC/CJLSEiyDP2exV6um2NEtAqQvGPlCdKVxHiLJ1FkunuHV0zYMLQi4+5mjAWbs4DuTgsOfkuZoJ7t8lFp9rqx3maNrew8Dw/w2nTuOHfk5f4xb99nlVXqA0rUPejZ/kf4ajU2AXrszxLAGXZnopryEcCSzxUSu1vRnv9NMtneTn3l0fDQTwPFVV2zquQUwl85Rm672r12Lupisn74UgwKgElxkgHjNRry++64ULoksydKWMz78ElfLV1tws8xoEx8I744pxsq7DTK52tcFuIZjASIfley6AbGLWzu8DUVGA3o/ANbavT56O8sXlT2OGipPx0=","kid":"8hilYZIP6uI="},{"issuer":"C = IT O = Ministero della Salute CN = Italy DGC CSCA 1","subject":"C = IT O = Ministero della Salute CN = Italy DGC DSC 1","notbefore":1620807497000,"notafter":1683879119000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/\\njbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehojw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEDzCCAfegAwIBAgIURldu5rsfrDeZtDBxrJ+SujMr2IswDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjEwNTEyMDgxODE3WhcNMjMwNTEyMDgxMTU5WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnL9+WnIp9fvbcocZSGUFlSw9ffW/jbMONzcvm1X4c+pXOPEs7C4/83+PxS8Swea2hgm/tKt4PI0z8wgnIehoj6OBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFC4bAbCvpArrgZ0E+RrqS8V7TNNIMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAjxTeF7yhKz/3PKZ9+WfgZPaIzZvnO/nmuUartgVd3xuTPNtd5tuYRNS/1B78HNNk7fXiq5hH2q8xHF9yxYxExov2qFrfUMD5HOZzYKHZcjcWFNHvH6jx7qDCtb5PrOgSK5QUQzycR7MgWIFinoWwsWIrA1AJOwfUoi7v1aoWNMK1eHZmR3Y9LQ84qeE2yDk3jqEGjlJVCbgBp7O8emzy2KhWv3JyRZgTmFz7p6eRXDzUYHtJaufveIhkNM/U8p3S7egQegliIFMmufvEyZemD2BMvb97H9PQpuzeMwB8zcFbuZmNl42AFMQ2PhQe27pU0wFsDEqLe0ETb5eR3T9L6zdSrWldw6UuXoYV0/5fvjA55qCjAaLJ0qi16Ca/jt6iKuws/KKh9yr+FqZMnZUH2D2j2i8LBA67Ie0JoZPSojr8cwSTxQBdJFI722uczCj/Rt69Y4sLdV3hNQ2A9hHrXesyQslr0ez3UHHzDRFMVlOXWCayj3LIgvtfTjKrT1J+/3Vu9fvs1+CCJELuC9gtVLxMsdRc/A6/bvW4mAsyY78ROX27Bi8CxPN5IZbtiyjpmdfr2bufDcwhwzdwsdQQDoSiIF1LZqCn7sHBmUhzoPcBJdXFET58EKow0BWcerZzpvsVHcMTE2uuAUr/JUh1SBpoJCiMIRSl+XPoEA2qqYU=","kid":"NJpCsMLQco4="},{"issuer":"C = IT O = Ministero della Salute CN = Italy DGC CSCA 1","subject":"C = IT O = Ministero della Salute CN = Italy DGC DSC 2","notbefore":1636724438000,"notafter":1699796437000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhX3UYfApjRF+CwtZqZJga6pwzbvN\\nic585TOlc0qa2DbRcer1H3FYNY1HErSbo3+tOLiYkPHbrbQdLTE05rymtA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEDzCCAfegAwIBAgIUUfSAdqIwpkqwXjDhZ+0JdUPaICAwDQYJKoZIhvcNAQELBQAwSTELMAkGA1UEBhMCSVQxHzAdBgNVBAoMFk1pbmlzdGVybyBkZWxsYSBTYWx1dGUxGTAXBgNVBAMMEEl0YWx5IERHQyBDU0NBIDEwHhcNMjExMTEyMTM0MDM4WhcNMjMxMTEyMTM0MDM3WjBIMQswCQYDVQQGEwJJVDEfMB0GA1UECgwWTWluaXN0ZXJvIGRlbGxhIFNhbHV0ZTEYMBYGA1UEAwwPSXRhbHkgREdDIERTQyAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhX3UYfApjRF+CwtZqZJga6pwzbvNic585TOlc0qa2DbRcer1H3FYNY1HErSbo3+tOLiYkPHbrbQdLTE05rymtKOBujCBtzAfBgNVHSMEGDAWgBS+VOVpXmeSQImXYEEAB/pLRVCw/zBlBgNVHR8EXjBcMFqgWKBWhlRsZGFwOi8vY2Fkcy5kZ2MuZ292Lml0L0NOPUl0YWx5JTIwREdDJTIwQ1NDQSUyMHhcMSxPPU1pbmlzdGVybyUyMGRlbGxhJTIwU2FsdXRlLEM9SVQwHQYDVR0OBBYEFNyqHmbZQ9GcMJjdpjpoJXEwFn/8MA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEART1krCdKJhBVe9N4ydQ2UGQlgjEL1OgHj1s0TNCQKL3kEwYcafkKstW0vtsFi1ZGKrfgWkXCcWwkl5/NxfRNoSACApZog4cgSYDlgxa2G7KAoXa7xLuN2ADMEK02zXY5tGnd7Sv6Jl2nMfuUXMirAotr1vA6QETSDmbQNJqyKciDOQkdjxL1mGKhDzeneYRxLeKkOVox/X0uPguRYT2NS7jr2U7S3Z48667Ow46YLAI6n7IZGodn7Wktz1aqFWPGoBhJ2Y5C/QvBjzWn/0WfLBX65cchOdkZoYvfJcnbWS7Z7N/G1V2/CNYNr09EHiZnsmdcsqBX/ywyIGdybCGbx3cDqXsOBfcjH5Jy8moe7QL3oEraUDUEk5JF7un17GcdB4pjOlB8e1AWEthMpa2UMUw/vox1TCUjZ3pZa4rYn+yhcBoA6dYgu8B2HXcNFAE2S35XXDT15C0LvYh858UvtWSLoRmwyrkbNr7ImtgVrdzOKhIEetbmKLdM7fB7kcsYWZ05LTD3VsA2A8AHCOZ2noI4f50pd+VF1FtOz8ogRrCvHz7TJ4T7Kg6aIq/K1zlu06LaJQj2s8f4mJeCYZBfYmm4uywO2PHI8Hcv5MwTrbQ27CuvBkayfIToNOrNLsI8qlcE20Vfei/rLFAGWQoF0xVoJ+boNIBtwn/NBJDtIb4=","kid":"zrMytIH40Rk="},{"issuer":"C = SI O = NIJZ, National Institute of Public Health of Slovenia OU = NIJZ eHealth CN = Slovenian Digital Covid Certificate CSCA","subject":"C = SI O = NIJZ, National Institute of Public Health of Slovenia OU = NIJZ eHealth CN = Slovenian Digital Covid Certificate Signer","notbefore":1622793213000,"notafter":1685865213000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEmxEg2iFDaol9DVnrqIY5zkPXrBA\\nNQlakmUfrBhogaDC2ZZ7fkQ2IcOJgEF4rQSyb34g5jDw88g7QaIknaLKMw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC6jCCApCgAwIBAgIUJUAGAXpxHsU1S82LcnISggTrZYcwCgYIKoZIzj0EAwIwgZcxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTEwLwYDVQQDDChTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBDU0NBMB4XDTIxMDYwNDA3NTMzM1oXDTIzMDYwNDA3NTMzM1owgZkxCzAJBgNVBAYTAlNJMT4wPAYDVQQKDDVOSUpaLCBOYXRpb25hbCBJbnN0aXR1dGUgb2YgUHVibGljIEhlYWx0aCBvZiBTbG92ZW5pYTEVMBMGA1UECwwMTklKWiBlSGVhbHRoMTMwMQYDVQQDDCpTbG92ZW5pYW4gRGlnaXRhbCBDb3ZpZCBDZXJ0aWZpY2F0ZSBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQSbESDaIUNqiX0NWeuohjnOQ9esEA1CVqSZR+sGGiBoMLZlnt+RDYhw4mAQXitBLJvfiDmMPDzyDtBoiSdosozo4G1MIGyMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUhB9+YwGh9z/Z2AFAekINW9AqzMwwHwYDVR0jBBgwFoAU1u0NkxR1dJeR9jh6pZ04KsvRFV8wMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzArBgNVHRAEJDAigA8yMDIxMDUyODEwMDAwMFqBDzIwMjIwNTI4MTAwMDAwWjAKBggqhkjOPQQDAgNIADBFAiEAgD02EKWZhDUblN1geYhOR8UYvbz1kKcncPzq4Y7SgS0CIEsbjBaDw8vWDqXsbDg7gckdK6SuF16w9Uvr/peExozy","kid":"90CNG8dcdn0="},{"issuer":"CN = Poland DGC RootCSCA 1 O = Ministry of Health C = PL","subject":"CN = Poland Test DGC Service 1 OU = eHealth Centre O = Ministry of Health C = PL","notbefore":1622029825000,"notafter":1685101825000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERG4yI/SSv70zEtVjzIrn/CypR1e0\\nBZO5u8bIgltZicrg+992n2a7GucxK6zy91xq8F8XH7B0SJU75qkr8Z1d9A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIChjCCAiygAwIBAgIISPHH9eN/DsUwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTAyNVoXDTIzMDUyNjExNTAyNVowZzEiMCAGA1UEAwwZUG9sYW5kIFRlc3QgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAREbjIj9JK/vTMS1WPMiuf8LKlHV7QFk7m7xsiCW1mJyuD733afZrsa5zErrPL3XGrwXxcfsHRIlTvmqSvxnV30o4HeMIHbMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQUJtco+4DwjQXe7tYA2X0svBWc8aowKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTUwMjVagQ8yMDIyMDUyNjExNTAyNVowDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQD0aM2oui9agdjvs3W3CBnJzNj1QTn86txDT8z4f92U/QIgdfA1+c567xA4y/11vguxxe9nDHAtAAEpXe8FkupyFTk=","kid":"AN1EeLIMAmo="},{"issuer":"CN = Poland DGC RootCSCA 1 O = Ministry of Health C = PL","subject":"CN = Recovery DGC Service 1 OU = eHealth Centre O = Ministry of Health C = PL","notbefore":1622029789000,"notafter":1685101789000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdxvWMfuk6CHCbffZWPS6bRgVYglY\\ndED1NT1FCfXstUZ81AWmYOh6tbZgOF9OM1lzqdpFD1uOmEZ0A8XXYmkB1A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICgDCCAiagAwIBAgIINrcF73thXScwCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNDk0OVoXDTIzMDUyNjExNDk0OVowZDEfMB0GA1UEAwwWUmVjb3ZlcnkgREdDIFNlcnZpY2UgMTEXMBUGA1UECwwOZUhlYWx0aCBDZW50cmUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDELMAkGA1UEBhMCUEwwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3G9Yx+6ToIcJt99lY9LptGBViCVh0QPU1PUUJ9ey1RnzUBaZg6Hq1tmA4X04zWXOp2kUPW46YRnQDxddiaQHUo4HbMIHYMB8GA1UdIwQYMBaAFJF5otpogRLAo3QapLrd6w+Z7IsBMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9wMS5lemRyb3dpZS5nb3YucGwvY2NwMS9jcmwvREdDUm9vdENTQ0ExLmNybDAdBgNVHQ4EFgQU88MJtD/tgeFEqpb+Her86lI3G3UwKwYDVR0QBCQwIoAPMjAyMTA1MjYxMTQ5NDlagQ8yMDIyMDUyNjExNDk0OVowCwYDVR0PBAQDAgeAMAoGCCqGSM49BAMCA0gAMEUCIQDA6URDSMLbEYaFP1V1bfDlZDE5aANs8FcjghZGnadrHwIgbCe6gwSV5PAMwGXMgtbf9ItPzgFxV67mZzvH+avXOck=","kid":"FDNJjaSCWi0="},{"issuer":"CN = Poland DGC RootCSCA 1 O = Ministry of Health C = PL","subject":"CN = Poland Vaccination DGC Service 1 OU = eHealth Centre O = Ministry of Health C = PL","notbefore":1622029990000,"notafter":1685101990000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3N\\nVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICiTCCAjCgAwIBAgIIPrgTduwYL84wCgYIKoZIzj0EAwIwSjEeMBwGA1UEAwwVUG9sYW5kIERHQyBSb290Q1NDQSAxMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMB4XDTIxMDUyNjExNTMxMFoXDTIzMDUyNjExNTMxMFowbjEpMCcGA1UEAwwgUG9sYW5kIFZhY2NpbmF0aW9uIERHQyBTZXJ2aWNlIDExFzAVBgNVBAsMDmVIZWFsdGggQ2VudHJlMRswGQYDVQQKDBJNaW5pc3RyeSBvZiBIZWFsdGgxCzAJBgNVBAYTAlBMMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgUesihG8ECIDnqxEoU9RouOR9y3NVLBUlpZ+ri+Ur7TQLORQDE3s/M5KGEllwCbsgT6cXUAT8kun12mOcJt78qOB2zCB2DAfBgNVHSMEGDAWgBSReaLaaIESwKN0GqS63esPmeyLATAWBgNVHSUEDzANBgsrBgEEAY43j2UBAjBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vcDEuZXpkcm93aWUuZ292LnBsL2NjcDEvY3JsL0RHQ1Jvb3RDU0NBMS5jcmwwHQYDVR0OBBYEFEfkBAHCnTR6Ar66rg0lwacUkD9aMCsGA1UdEAQkMCKADzIwMjEwNTI2MTE1MzEwWoEPMjAyMjA1MjYxMTUzMTBaMAsGA1UdDwQEAwIHgDAKBggqhkjOPQQDAgNHADBEAiBrwE3IHj2Vjq71fA3jNBz/Hso3xXhVtPXa42JcfDJrvgIgLsib0ZAxm3ERXePd4Nlgvt+lISofEHlIi+CEBpJd5sE=","kid":"HhkeqvrtQ0U="},{"issuer":"CN = DGC Country Signing CA OU = Public Service Development Agency O = Ministry of Justice of Georgia C = GE","subject":"CN = DGC DS Signer 2 OU = LEPL Information Technologies Agency O = Ministry of Internally Displaced Persons From the Occupied Territories, Labour, Health and Social Affairs of Georgia C = GE","notbefore":1635527288000,"notafter":1698599287000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OUh2s00z3fKc2NTrYN+8SQERWvy\\n3gRdGsmjrGMZQ9nZPT3bYLYDuyuhpYfQ8CSOuU2bScmWN9xthX3T6V1T8g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDLTCCAtKgAwIBAgIUbq8e2Rnwzdt8bImI5KhdT7wvIZIwCgYIKoZIzj0EAwIwgYMxHzAdBgNVBAMMFkRHQyBDb3VudHJ5IFNpZ25pbmcgQ0ExKjAoBgNVBAsMIVB1YmxpYyBTZXJ2aWNlIERldmVsb3BtZW50IEFnZW5jeTEnMCUGA1UECgweTWluaXN0cnkgb2YgSnVzdGljZSBvZiBHZW9yZ2lhMQswCQYDVQQGEwJHRTAeFw0yMTEwMjkxNzA4MDhaFw0yMzEwMjkxNzA4MDdaMIHVMRgwFgYDVQQDDA9ER0MgRFMgU2lnbmVyIDIxLTArBgNVBAsMJExFUEwgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIEFnZW5jeTF9MHsGA1UECgx0TWluaXN0cnkgb2YgSW50ZXJuYWxseSBEaXNwbGFjZWQgUGVyc29ucyBGcm9tIHRoZSBPY2N1cGllZCBUZXJyaXRvcmllcywgTGFib3VyLCBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzIG9mIEdlb3JnaWExCzAJBgNVBAYTAkdFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE0OUh2s00z3fKc2NTrYN+8SQERWvy3gRdGsmjrGMZQ9nZPT3bYLYDuyuhpYfQ8CSOuU2bScmWN9xthX3T6V1T8qOBzzCBzDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGdNMng/by4nCNGrYeB79TXd3c2wMDAGA1UdJQQpMCcGCysGAQQBjjePZQEDBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5jcmEuZ2UvZGdjY291bnRyeXNpZ25pbmdjYS5jcmwwHQYDVR0OBBYEFBlRrQE2MFW1c+X7ZPuq50qEp6YDMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNJADBGAiEAiDjXwDLMCbYtUOhS3p6HIN1aZdJg2x+q7QlFldqYoBkCIQDsv+uGlrWi8ZAjn1QsyqsU6HKc3a2oD+bTsg0UA/ZboQ==","kid":"AcOmDWpm7kI="},{"issuer":"CN = DGC Country Signing CA OU = Public Service Development Agency O = Ministry of Justice of Georgia C = GE","subject":"CN = DGC DS Signer 1 OU = LEPL Information Technologies Agency O = Ministry of Internally Displaced Persons From the Occupied Territories, Labour, Health and Social Affairs of Georgia C = GE","notbefore":1635526565000,"notafter":1698598564000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEa5QqEDGwiaDJSMCLVHg6l9ScX3LI\\n/9mzuzs6e+E0YBgeKTdQ5VV0IBCSIZkgjSb/Hfzghmi9rOa9aGuww7BU9Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDLDCCAtKgAwIBAgIUVO20iQwJJtX9tVMEQrEQl/B+5XswCgYIKoZIzj0EAwIwgYMxHzAdBgNVBAMMFkRHQyBDb3VudHJ5IFNpZ25pbmcgQ0ExKjAoBgNVBAsMIVB1YmxpYyBTZXJ2aWNlIERldmVsb3BtZW50IEFnZW5jeTEnMCUGA1UECgweTWluaXN0cnkgb2YgSnVzdGljZSBvZiBHZW9yZ2lhMQswCQYDVQQGEwJHRTAeFw0yMTEwMjkxNjU2MDVaFw0yMzEwMjkxNjU2MDRaMIHVMRgwFgYDVQQDDA9ER0MgRFMgU2lnbmVyIDExLTArBgNVBAsMJExFUEwgSW5mb3JtYXRpb24gVGVjaG5vbG9naWVzIEFnZW5jeTF9MHsGA1UECgx0TWluaXN0cnkgb2YgSW50ZXJuYWxseSBEaXNwbGFjZWQgUGVyc29ucyBGcm9tIHRoZSBPY2N1cGllZCBUZXJyaXRvcmllcywgTGFib3VyLCBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzIG9mIEdlb3JnaWExCzAJBgNVBAYTAkdFMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEa5QqEDGwiaDJSMCLVHg6l9ScX3LI/9mzuzs6e+E0YBgeKTdQ5VV0IBCSIZkgjSb/Hfzghmi9rOa9aGuww7BU9aOBzzCBzDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFGdNMng/by4nCNGrYeB79TXd3c2wMDAGA1UdJQQpMCcGCysGAQQBjjePZQEDBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybC5jcmEuZ2UvZGdjY291bnRyeXNpZ25pbmdjYS5jcmwwHQYDVR0OBBYEFHtiZBY7D8iDDRpr5yECOpZ1cyfLMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBH/RuRLyOU640ZMdX0CDXC2/Hlv8tDsQN2Tjm2+fmbbAIhALY7w0RCZyu0JY1jmnBMKtzPr7mdqZGCR1oi7jC8RvXO","kid":"ZqPYe26eEEk="},{"issuer":"C = FI O = Vaestorekisterikeskus CA OU = Sosiaali- ja terveydenhuollon palveluvarmenteet CN = VRK CA for Social Welfare and Health Care Service Providers","subject":"C = FI ST = Finland L = Helsinki O = Kansanelakelaitos OU = Kanta serialName = 1.2.246.556.12.21.2 CN = Todistuspalvelu","notbefore":1624014000000,"notafter":1687121999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEepKcLfnTZIej9gSNJVmR8sRYMMgz\\ntnG9h0ZGWx7D1X1g32V/GtJc55HkoH+vqkbkhKJnvDBJ1JdsbkKKmBJb2Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"BKBFhNFXWAU="},{"issuer":"C = EE O = Estonia OU = Police and Border Guard Board serialName = 01-2020 CN = CSCA_Estonia","subject":"CN = 02-2021_DCC serialName = 02-2021 C = EE O = Estonia OU = Health and Welfare Information Systems Centre","notbefore":1623152362000,"notafter":1701776362000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNf\\nd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEtzCCAm+gAwIBAgIBFjA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIDBwMQswCQYDVQQGEwJFRTEQMA4GA1UECgwHRXN0b25pYTEmMCQGA1UECwwdUG9saWNlIGFuZCBCb3JkZXIgR3VhcmQgQm9hcmQxEDAOBgNVBAUTBzAxLTIwMjAxFTATBgNVBAMMDENTQ0FfRXN0b25pYTAeFw0yMTA2MDgxMTM5MjJaFw0yMzEyMDUxMTM5MjJaMH8xFDASBgNVBAMWCzAyLTIwMjFfRENDMRAwDgYDVQQFEwcwMi0yMDIxMQswCQYDVQQGEwJFRTEQMA4GA1UEChMHRXN0b25pYTE2MDQGA1UECxMtSGVhbHRoIGFuZCBXZWxmYXJlIEluZm9ybWF0aW9uIFN5c3RlbXMgQ2VudHJlMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvW8QeGk0YQMGQ/wG2vpPalRdoKNfd48O2qW5uP6gmgRm1OnrQr2gtH3XKxNfVDeuNuqeomsSRkDWa3DXqwLc4KOBtzCBtDAdBgNVHQ4EFgQUrz4uJgDuJ+1fAWhBPQpmWJOqvUMwKwYDVR0QBCQwIoAPMjAyMTA2MDgxMTM5MjJagQ8yMDIxMTIwNTExMzkyMlowDgYDVR0PAQH/BAQDAgeAMDUGA1UdHwQuMCwwKqAooCaGJGh0dHBzOi8vd3d3LnBraS5wb2xpdHNlaS5lZS9jc2NhLmNybDAfBgNVHSMEGDAWgBRVq9JvhX7uQOBhSt+YPiu2k2xVvDA9BgkqhkiG9w0BAQowMKANMAsGCWCGSAFlAwQCAaEaMBgGCSqGSIb3DQEBCDALBglghkgBZQMEAgGiAwIBIAOCAgEAJ/OIJaw1Hg+yD7TH3YPG7ux6I4Fpx1QC1UPdIouG0HcHm8Lde+cB1IHlHc/C03jvVWnkbeH0mlpHLcStNICIgc8wfhOLS/yDvor/sYSNNX2v9OcJuxWmL6a2b3C5vuQJNr09HrSqv+1MDM/Qj7qRSraO9JSm59StyaoEdZXgK40eNnSxfRD2HFRpqr6aY+FB7ONH53/nCi/PT+fW6LB2hS+VtBUaWt1pShs2W8cahNJ/O6oujquKDhTj8uqdbhV9lug2JJ2/eLxWawEYVGC20HMrg9qwW971mR3UeGZmbJb0KyHr4b1LupC+sN88/A0CwCybS3x2Dla/OvPff7W1BqFyhEzBgDL1jB9iVF57erYGkoPd9oHKTIQdZ84u7JKLvi13xJGAR4KAsryrfP0Wcc29+TQJPZwedaauz96OUpC92hcu21cI5drikSF/Y9U96gGay0AWHM+DafA6NEUiWRMIFC3IaMjMr6FFwz4uq6KTK08YZoN/Dn09eVgrBcXqHR69FSJ00lwduDDamN9JHmy5wuLw22rDaXiymUYAkZZCc1PS2yJG8bIOfzYEAHAbESlJQ671MmudVDRM3PuvVICRp0jXZg/sNzT053rDpk0Z2nxKLcAVzPo0wRgnpih1zVchVTakNbWxwsOPftCSVnZjEhAHvq/GZ3ysssMNRUc=","kid":"EzYR1uk/E0I="},{"issuer":"O = State enterprise \\"DIIA\\" CN = \\"DIIA\\". Green Certificate CSCA serialName = UA-43395033-2021 C = UA L = Kyiv 2.5.4.97 = NTRUA-43395033","subject":"O = State enterprise \\"DIIA\\" CN = \\"DIIA\\". Green Certificate DSC 2 serialName = 22 C = UA L = Kyiv","notbefore":1629234000000,"notafter":1692305999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd22zt56DQx1ao5dd4u6jU3KPELJd\\ncWfl0+FJ6cVhCb8s0SmQleFtS9m5RQqVzbBr/JnUfqVZjvrPFzwpbgdMeQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEuzCCBGGgAwIBAgIUeQTIILWQh4cEAAAAFgAAACEAAAAwCgYIKoZIzj0EAwIwgZsxIDAeBgNVBAoMF1N0YXRlIGVudGVycHJpc2UgIkRJSUEiMScwJQYDVQQDDB4iRElJQSIuIEdyZWVuIENlcnRpZmljYXRlIENTQ0ExGTAXBgNVBAUTEFVBLTQzMzk1MDMzLTIwMjExCzAJBgNVBAYTAlVBMQ0wCwYDVQQHDARLeWl2MRcwFQYDVQRhDA5OVFJVQS00MzM5NTAzMzAeFw0yMTA4MTcyMTAwMDBaFw0yMzA4MTcyMDU5NTlaMHUxIDAeBgNVBAoMF1N0YXRlIGVudGVycHJpc2UgIkRJSUEiMSgwJgYDVQQDDB8iRElJQSIuIEdyZWVuIENlcnRpZmljYXRlIERTQyAyMQswCQYDVQQFEwIyMjELMAkGA1UEBhMCVUExDTALBgNVBAcMBEt5aXYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3bbO3noNDHVqjl13i7qNTco8Qsl1xZ+XT4UnpxWEJvyzRKZCV4W1L2blFCpXNsGv8mdR+pVmO+s8XPCluB0x5o4ICpjCCAqIwHQYDVR0OBBYEFIjv6MDr8gqaj1GvhYENJ5FvDg+LMB8GA1UdIwQYMBaAFHkEyCC1kIeHDT09MC0K0Ko+YXcCMA4GA1UdDwEB/wQEAwIGwDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMEEGA1UdIAQ6MDgwNgYJKoYkAgEBAQICMCkwJwYIKwYBBQUHAgEWG2h0dHBzOi8vZ3JlZW5jYS5kaWlhLmdvdi51YTAJBgNVHRMEAjAAMFQGCCsGAQUFBwEDBEgwRjAIBgYEAI5GAQEwLQYGBACORgEFMCMwIRYbaHR0cHM6Ly9ncmVlbmNhLmRpaWEuZ292LnVhEwJlbjALBgkqhiQCAQEBAgEwTgYDVR0fBEcwRTBDoEGgP4Y9aHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvZG93bmxvYWQvY3Jscy9DQS03OTA0QzgyMC1GdWxsLmNybDBPBgNVHS4ESDBGMESgQqBAhj5odHRwOi8vZ3JlZW5jYS5kaWlhLmdvdi51YS9kb3dubG9hZC9jcmxzL0NBLTc5MDRDODIwLURlbHRhLmNybDCBiQYIKwYBBQUHAQEEfTB7MDUGCCsGAQUFBzABhilodHRwOi8vZ3JlZW5jYS5kaWlhLmdvdi51YS9zZXJ2aWNlcy9vY3NwLzBCBggrBgEFBQcwAoY2aHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvY2EtY2VydGlmaWNhdGVzL2dyZWVuY2EucDdiMEoGCCsGAQUFBwELBD4wPDA6BggrBgEFBQcwA4YuaHR0cDovL2dyZWVuY2EuZGlpYS5nb3YudWEvc2VydmljZXMvdHNwL2VjZHNhLzAKBggqhkjOPQQDAgNIADBFAiEAzrDXxTuym77Eo9J4GNB/GoZRm9lTVtmUpLCjhzr7t5ICIDdt0waoDoBfm201AGoLjErsage0uxBI3SkncWQaP7nZ","kid":"FhciF/j3plg="},{"issuer":"C = MC O = Principality of Monaco OU = Foreign Office of Monaco CN = CSCAPKI_MC","subject":"C = MC O = Principality of Monaco OU = Ministry of Health and Social Affairs CN = DSPKI_MC_DGC_1","notbefore":1632143989000,"notafter":1679491189000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/XCqYpwUi4RLldTOqsukogo6l4ZU\\nIXO4ZtjkUxEpDToYLFI0uApt1KXSfpsn8EfNGPaWF+YW2B1QKpbCtbtZFg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE6zCCAtOgAwIBAgITEfc5jeKc7JLK6DrtdI7KoEudnzANBgkqhkiG9w0BAQsFADBmMQswCQYDVQQGEwJNQzEfMB0GA1UECgwWUHJpbmNpcGFsaXR5IG9mIE1vbmFjbzEhMB8GA1UECwwYRm9yZWlnbiBPZmZpY2Ugb2YgTW9uYWNvMRMwEQYDVQQDDApDU0NBUEtJX01DMB4XDTIxMDkyMDEzMTk0OVoXDTIzMDMyMjEzMTk0OVowdzELMAkGA1UEBhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25hY28xLjAsBgNVBAsMJU1pbmlzdHJ5IG9mIEhlYWx0aCBhbmQgU29jaWFsIEFmZmFpcnMxFzAVBgNVBAMMDkRTUEtJX01DX0RHQ18xMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/XCqYpwUi4RLldTOqsukogo6l4ZUIXO4ZtjkUxEpDToYLFI0uApt1KXSfpsn8EfNGPaWF+YW2B1QKpbCtbtZFqOCAUowggFGMCgGA1UdEQQhMB+CC3d3dy5nb3V2Lm1jpBAwDjEMMAoGA1UEBwwDTUNPMDUGA1UdEgQuMCyGGGh0dHBzOi8vY3NjYS1tY28uZ291di5tY6QQMA4xDDAKBgNVBAcMA01DTzAOBgNVHQ8BAf8EBAMCB4AwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzArBgNVHRAEJDAigA8yMDIxMDkyMDA3NDQ0OFqBDzIwMjIwMzIwMDc0NDQ4WjAdBgNVHQ4EFgQU5DhDGjpYh+dwXciftwec8RGrW00wHwYDVR0jBBgwFoAUMDKcfP59jwLtxRJa4OtXv+iFiSkwMQYDVR0fBCowKDAmoCSgIoYgaHR0cHM6Ly9jc2NhLW1jby5nb3V2Lm1jL01DTy5jcmwwDQYJKoZIhvcNAQELBQADggIBAAnLvzFhQlE4lohlktg0QUnF6DGIA1JEC26QRnJi+1gMXNZok90Q37DPJ54uml8UnCkieGVIpQaDp5jIxMax+t6QmwkgQNoQzjiJJqeKP6xBsEUmGUKURx0g5z7ULem+TdedSIiMEqSrie3YX5Zfea3dzy3zIw2s6cCa67RHj860OqXZHrMtYc7rqoXxkWkqGaSJovxSthmiBWQisTPFMTzFZqm85ojU11A3uY8ReuUrUuvyefVAFENLuz8j2T6CGOIigNxnmyZzm+2TpH+53Dd5S8MlVwuZZ4RHv2g+p/YygOvHceGPIORSeLcqrIW4kgz6HxonBy/vjC6Pj07wFlyFafo3V5KQxPUQZtFQ8blhe7ZrRPyimObcA55Oh20V/HnVewzz3onjEQuotg1QNRJ7gzoJeBunwFXpHrG/mUg3dVeow0pOV0vsQ/QAOCM0p7GVABoHT4O4dOWLNoaWcoQBvPSGbAl5O1YhzOhXRTlyYfxNSUxKavWfpTF1mB1WXyThtatvQ2cP7qlgVYbBjvejyz+RTpK2cgyDFDlcBJaBakCBeuqEJvKvMxX50NqQAVBTfywrQyIyynttQgoxxl5KwkEPJ4BrbP/XIw8KkuGO5C9EKGjaftQNQ25GkdNDQFyMiJU7EhN6Hp/6dsgZXnfG8gacZu4vnIiXphYBigi2","kid":"FtUwA9uHJoo="},{"issuer":"C = MC O = Principality of Monaco OU = Foreign Office of Monaco CN = CSCAPKI_MC","subject":"C = MC O = Principality of Monaco OU = Ministry of Health and Social Affairs CN = DSPKI_MC_DGC_1","notbefore":1623918269000,"notafter":1671265469000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcrxlv5/uGbsaXM/QMSpvZV2iNtF0\\no4QBech6LGpy3OEefbJLf+4iqI19QNWtUXEjlMMytB4+1ESLHdXyki5X2g==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE7DCCAtSgAwIBAgIUAJdHETmGhF9czCBAxz36xGrwMPkwDQYJKoZIhvcNAQELBQAwZjELMAkGA1UEBhMCTUMxHzAdBgNVBAoMFlByaW5jaXBhbGl0eSBvZiBNb25hY28xITAfBgNVBAsMGEZvcmVpZ24gT2ZmaWNlIG9mIE1vbmFjbzETMBEGA1UEAwwKQ1NDQVBLSV9NQzAeFw0yMTA2MTcwODI0MjlaFw0yMjEyMTcwODI0MjlaMHcxCzAJBgNVBAYTAk1DMR8wHQYDVQQKDBZQcmluY2lwYWxpdHkgb2YgTW9uYWNvMS4wLAYDVQQLDCVNaW5pc3RyeSBvZiBIZWFsdGggYW5kIFNvY2lhbCBBZmZhaXJzMRcwFQYDVQQDDA5EU1BLSV9NQ19ER0NfMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHK8Zb+f7hm7GlzP0DEqb2VdojbRdKOEAXnIeixqctzhHn2yS3/uIqiNfUDVrVFxI5TDMrQePtREix3V8pIuV9qjggFKMIIBRjAoBgNVHREEITAfggt3d3cuZ291di5tY6QQMA4xDDAKBgNVBAcMA01DTzA1BgNVHRIELjAshhhodHRwczovL2NzY2EtbWNvLmdvdXYubWOkEDAOMQwwCgYDVQQHDANNQ08wDgYDVR0PAQH/BAQDAgeAMDMGA1UdJQQsMCoGDCsGAQQBAI43j2UBAQYMKwYBBAEAjjePZQECBgwrBgEEAQCON49lAQMwKwYDVR0QBCQwIoAPMjAyMTA2MTcwODE0MDBagQ8yMDIxMTIxNzA4MTQwMFowHQYDVR0OBBYEFCurTSCZX0MwxJXi6a/cJR4zZn9WMB8GA1UdIwQYMBaAFDAynHz+fY8C7cUSWuDrV7/ohYkpMDEGA1UdHwQqMCgwJqAkoCKGIGh0dHBzOi8vY3NjYS1tY28uZ291di5tYy9NQ08uY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQAEaZtWub0CVASIEHG95DCwcFIVdaVZZupOzKuIimUNRH8+9pa9IPekVPLiArnGlmpAg6o4Ac8MVHvCkEiSAA8HVDkABbssmrKm6ZZ4XRDtBokrGlYskUy2B8AQypPKjKXz/vMYnVMNl4kkcehG8+B0KyPrpYMK7VXQuRxe+QC0CaemS2NGLNvr2+vnpfXeJAfM6TpnSPaN7MjAgt/8UyGJP6HLuHbGgbALgcxwqq5CniU3f8zLjIXRKWqhDmE4M8ufu/VFVR18fWoHqeytcOpFTdmN3YLxu9jA573KHyLRLO7g20PlOJYuHtOoG2SzwEa2Ut0ooFAajLnxwVoYuCfYKWubYRRqReFI45EtNtC8Tut8J3SAIk53IH6v1mG4m2QFCGFV7ehu6A+jwsVrg8o+XesHV96EK8jJooEjp2jIIrHHU8LTozrWSECiRsnEWv7e4TP4+3dj/6Yrrzm6DlzCw/y9s6T/Iolp1SKaNsHOHJwwNTJAqzGxP8N8fdnxs1c1iLXXxHJy8AKZC8eNFj09AF8Tvi/IQTOpmMFhRGkCCkrNMf5Zf7vFLtAm+yqOsOOYNhTiyoqX96tKipsxcm+CDIAnhyUgJgxVfEUO547lg3/hdJUvI62/0gisUqXBnYDwMiWlXZHmS+K9lMar0k1NeKb2K5BSox7U3oP+d/RPpg==","kid":"Pcl7yBWEQ7c="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-RECOVERY-003 O = Government of Malta C = MT","notbefore":1625097600000,"notafter":1688255999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDON\\nYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICgTCCAiegAwIBAgIIFwgHF3EO4GkwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDMxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1kpyGGbMShwokxGdJmH/WPJDcDONYigpXr7Z8jiiX9MP1fkjvsHd4GkcfHHtrrssr2FLR/m5rgI3Ig5xDLJWdaOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBR9uzKFO2DLNzUjBFGi4relF01KBTB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNIADBFAiEA99DvYsvpGT4tqpc0BMSCZeyZ7WMbt8ZM1PpabmhX8+cCIGCtDA+B0wWuPtFcN+xk/jBG5t30dSFLWQB43XkMQLug","kid":"GvVR3e6VJIM="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-TEST-001 O = Government of Malta C = MT","notbefore":1624233600000,"notafter":1687391999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfapP8+QeyFgXVvY41YkQudlUUh7I\\nZBBpIdOJ34xYmxCEuHXbVUFqt/JSnbpVsGsd7ZBPUjL2u5Ks9moBMDEPLg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICfjCCAiOgAwIBAgIIejS7d37VXgEwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMTEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR9qk/z5B7IWBdW9jjViRC52VRSHshkEGkh04nfjFibEIS4ddtVQWq38lKdulWwax3tkE9SMva7kqz2agEwMQ8uo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFBR+KFEXuumXgCc5GWe258iqVrnfMHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNjIxMDAwMDAwWoEPMjAyMTEyMjEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDBnG+uLfchypa5wnmHMUi2aWEzWkbjoGgn5WsWmXffcAIhAKMusBaq7xzWVRMreNFvQsitrCaSaqDoQPvQuU72+SjN","kid":"QacbC7DdD4U="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-VACCINATIONS-001 O = Government of Malta C = MT","notbefore":1624233600000,"notafter":1687391999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1q1nvgXLGIbibQuYQU+f+Xs+mcbP\\nmukAc3KQAyy/5KZH+n5F4bG4V0XIjphX093YxHh1JbHWOzuhKuan9FboyA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIChTCCAiugAwIBAgIIZEwDM+Nt1KMwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDYyMTAwMDAwMFoXDTIzMDYyMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAxMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABNatZ74FyxiG4m0LmEFPn/l7PpnGz5rpAHNykAMsv+SmR/p+ReGxuFdFyI6YV9Pd2MR4dSWx1js7oSrmp/RW6MijgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUuCrjQfrYEdJhuUeDcYx4JKEFOf4weQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA2MjEwMDAwMDBagQ8yMDIxMTIyMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIgZGBb0sNv06M+s8UpL7ziN/FU4+4AGksrMB2BIIkZDBwCIQDXwcZZQKZFsV55HpRm/AxXSBLXu4vPFR2Lx3rdqy0nFg==","kid":"UZ1cSMaPcaQ="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-TEST-002 O = Government of Malta C = MT","notbefore":1625097600000,"notafter":1688255999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4DsoM1rJFjHyQPcX6WKDWZkouBeh\\nfQGxqOgwFAYyRKXbrSuL+tkz8sJfo8djfsuQRLDSuZxud0IOsMB9YsTMpg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICfjCCAiOgAwIBAgIIJTfDXWft5tcwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowRjEZMBcGA1UEAwwQTUxULURTQy1URVNULTAwMjEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTELMAkGA1UEBhMCTVQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATgOygzWskWMfJA9xfpYoNZmSi4F6F9AbGo6DAUBjJEpdutK4v62TPywl+jx2N+y5BEsNK5nG53Qg6wwH1ixMymo4H2MIHzMA4GA1UdDwEB/wQEAwIHgDAaBgNVHSUBAf8EEDAOBgwrBgEEAQCON49lAQEwHQYDVR0OBBYEFAdYsuwV3Y8H3ArMdIP4+88NQzj6MHkGA1UdIwRyMHCAFBAKrfpMM+L9q43d4ZZu/o6/HHCtoU6kTDBKMQswCQYDVQQGEwJNVDEcMBoGA1UECgwTR292ZXJubWVudCBvZiBNYWx0YTEdMBsGA1UEAwwUTWFsdGEgRENDIFNpZ25pbmcgQ0GCCBPstyedOizTMCsGA1UdEAQkMCKADzIwMjEwNzAxMDAwMDAwWoEPMjAyMjAxMDEyMzU5NTlaMAoGCCqGSM49BAMCA0kAMEYCIQDKRMYKb/xaog2wAz78sg7nxPSSGvmXDSmGm3OAvywYtwIhAL1aS9k2jC5FGCnXL146W6TNwJOLZXhG0WELPuo1eaPF","kid":"bfoj2trt6bE="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-VACCINATIONS-002 O = Government of Malta C = MT","notbefore":1625097600000,"notafter":1688255999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEXj9fU7e4KVYe1VakCDZjYquHzkox\\nSHT8D33zeMDfyLbYi/GSVpKQtPwBPZlPx65r2Kb2warIK8BgxSgsQvMIag==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIChTCCAiugAwIBAgIIWGrho8bBjMowCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowTjEhMB8GA1UEAwwYTUxULURTQy1WQUNDSU5BVElPTlMtMDAyMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMQswCQYDVQQGEwJNVDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABF4/X1O3uClWHtVWpAg2Y2Krh85KMUh0/A9983jA38i22IvxklaSkLT8AT2ZT8eua9im9sGqyCvAYMUoLELzCGqjgfYwgfMwDgYDVR0PAQH/BAQDAgeAMBoGA1UdJQEB/wQQMA4GDCsGAQQBAI43j2UBAjAdBgNVHQ4EFgQUOLKcvXnMDSbbBkkI/qyub1XWtNUweQYDVR0jBHIwcIAUEAqt+kwz4v2rjd3hlm7+jr8ccK2hTqRMMEoxCzAJBgNVBAYTAk1UMRwwGgYDVQQKDBNHb3Zlcm5tZW50IG9mIE1hbHRhMR0wGwYDVQQDDBRNYWx0YSBEQ0MgU2lnbmluZyBDQYIIE+y3J506LNMwKwYDVR0QBCQwIoAPMjAyMTA3MDEwMDAwMDBagQ8yMDIyMDEwMTIzNTk1OVowCgYIKoZIzj0EAwIDSAAwRQIhAPh/K0cwTwjugfRAGr47Ntn3O6iy5Dq6vtWdminY7WDrAiA/usc8ejitliKRcw9kWYkRTe5M8QTrGi0d8ISZfbWPzw==","kid":"ccgQ13tmkU8="},{"issuer":"C = MT O = Government of Malta CN = Malta DCC Signing CA","subject":"CN = MLT-DSC-RECOVERY-002 O = Government of Malta C = MT","notbefore":1625097600000,"notafter":1688255999000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNx\\ndEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICgjCCAiegAwIBAgIIK+HdvXWkN9YwCgYIKoZIzj0EAwIwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBMB4XDTIxMDcwMTAwMDAwMFoXDTIzMDcwMTIzNTk1OVowSjEdMBsGA1UEAwwUTUxULURTQy1SRUNPVkVSWS0wMDIxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExCzAJBgNVBAYTAk1UMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDSjY8ob2FU6g06KQpeZ2BAjhXnNxdEOMdex6l563qlPvNsY6Z2xjVoDnx9Elns6hbeRjNwD+Lfwq8Tn92Qfk4aOB9jCB8zAOBgNVHQ8BAf8EBAMCB4AwGgYDVR0lAQH/BBAwDgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBQpm2iI+XG+uIq9XM2lqhKzZ5i5MDB5BgNVHSMEcjBwgBQQCq36TDPi/auN3eGWbv6OvxxwraFOpEwwSjELMAkGA1UEBhMCTVQxHDAaBgNVBAoME0dvdmVybm1lbnQgb2YgTWFsdGExHTAbBgNVBAMMFE1hbHRhIERDQyBTaWduaW5nIENBgggT7LcnnTos0zArBgNVHRAEJDAigA8yMDIxMDcwMTAwMDAwMFqBDzIwMjIwMTAxMjM1OTU5WjAKBggqhkjOPQQDAgNJADBGAiEAvxNjK3WJhVQiCHwFKMfUClW0xa0ikhLAPaHirWYEgKMCIQDWDa7xu71vGhmTaIeKuMywD+f1yfPsaCzeEpr1yUITbA==","kid":"f6J92LRKpj0="},{"issuer":"CN = IS DGC CSCA 1 serialName = 1 OU = Directorate of Health O = Directorate of Health C = IS","subject":"CN = IS-DSC-testrec-1 serialName = 2 OU = Directorate of Health O = Directorate of Health C = IS","notbefore":1625249448000,"notafter":1688321448000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvwlwjQL5cId7nINp/A/b+XNY/Wzg\\nX9sIOde8ggZmZjXvIYhDhz7Fvs52ozmdqatDp3yIwPpr6nAMmaNTj0KdZg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIBzTCCAXQCAnBLMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA3MDIxODEwNDhaFw0yMzA3MDIxODEwNDhaMHQxGTAXBgNVBAMMEElTLURTQy10ZXN0cmVjLTExCjAIBgNVBAUTATIxHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABL8JcI0C+XCHe5yDafwP2/lzWP1s4F/bCDnXvIIGZmY17yGIQ4c+xb7OdqM5namrQ6d8iMD6a+pwDJmjU49CnWYwCgYIKoZIzj0EAwIDRwAwRAIgGuvSzxkT7wtN8UW9b8VavzmUbfC1Ojl99ZLu6iNNxbgCIHvbmygVJAEC9/GJgitb+1wQx5fHp/SEcfnkqPOqzFrn","kid":"HeWuzGwEM5c="},{"issuer":"CN = IS DGC CSCA 1 serialName = 1 OU = Directorate of Health O = Directorate of Health C = IS","subject":"CN = IS-DSC-1 serialName = 1 OU = Directorate of Health O = Directorate of Health C = IS","notbefore":1623406705000,"notafter":1686478705000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEO42X7C2X5bSDTnfSJwnk4qAjSk2m\\n11Cy/mmFqryl7J1MhrZDfy77ky4uS0o1iW181Ev51mAiW0J3i3SeKYeEOw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIBxTCCAWwCAgQRMAoGCCqGSM49BAMCMHExFjAUBgNVBAMMDUlTIERHQyBDU0NBIDExCjAIBgNVBAUTATExHjAcBgNVBAsMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDEeMBwGA1UECgwVRGlyZWN0b3JhdGUgb2YgSGVhbHRoMQswCQYDVQQGEwJJUzAeFw0yMTA2MTExMDE4MjVaFw0yMzA2MTExMDE4MjVaMGwxETAPBgNVBAMMCElTLURTQy0xMQowCAYDVQQFEwExMR4wHAYDVQQLDBVEaXJlY3RvcmF0ZSBvZiBIZWFsdGgxHjAcBgNVBAoMFURpcmVjdG9yYXRlIG9mIEhlYWx0aDELMAkGA1UEBhMCSVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ7jZfsLZfltINOd9InCeTioCNKTabXULL+aYWqvKXsnUyGtkN/LvuTLi5LSjWJbXzUS/nWYCJbQneLdJ4ph4Q7MAoGCCqGSM49BAMCA0cAMEQCIFH/Cm+epgBJoz2S3eZaSPQLb2+3seJAEe2rgvrTcA4ZAiB6kXpC2VR9kqcv+HpDrbmx4Xq3PgTsQ5HxY1B5vepJ2g==","kid":"Pbydc1LscXo="},{"issuer":"C = AT O = BMSGPK serialName = 001 CN = AT DGC CSCA 1","subject":"C = AT O = BMSGPK serialName = 001001 CN = AT DGC DSC 1","notbefore":1622641524000,"notafter":1685713524000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYE24qIKmdcfRWUh2TqklkfZ6nyNB\\npX4VHeLMxfFl8rkQ8Zku0bcnH5OZXckkSt+tKs+FGZ9tKJ1VtNDmedlL6w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIB7zCCAZagAwIBAgIKAXnM+L47fmBcezAKBggqhkjOPQQDAjBEMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQwwCgYDVQQFEwMwMDExFjAUBgNVBAMMDUFUIERHQyBDU0NBIDEwHhcNMjEwNjAyMTM0NTI0WhcNMjMwNjAyMTM0NTI0WjBGMQswCQYDVQQGEwJBVDEPMA0GA1UECgwGQk1TR1BLMQ8wDQYDVQQFEwYwMDEwMDExFTATBgNVBAMMDEFUIERHQyBEU0MgMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGBNuKiCpnXH0VlIdk6pJZH2ep8jQaV+FR3izMXxZfK5EPGZLtG3Jx+TmV3JJErfrSrPhRmfbSidVbTQ5nnZS+ujbjBsMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUNs2smrjBhuR5Bqxl6teE1x1o2ycwHwYDVR0jBBgwFoAUHyKsHGUWKbTBmLNjb7/dCZ27e3swGgYDVR0QBBMwEYEPMjAyMTEyMTYxNDQ1MjRaMAoGCCqGSM49BAMCA0cAMEQCIDjXHnyzq3sTisMX1uY8xQ2ZqCRL2xmxtYOPhSZ9ZacYAiAqHUMOC7WNgq4h28n31WLc1mMPAYauWslSEwnXC79AGw==","kid":"Is2JtrOJhik="},{"issuer":"C = LV O = VAS Latvijas Valsts radio un televīzijas centrs 2.5.4.97 = NTRLV-40003011203 CN = Digital Green Certificate CSCA","subject":"C = LV O = NTRLV-90009649337 CN = lv_dsc_003","notbefore":1636018245000,"notafter":1699090245000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6aTLMp6+apBgDNYyDeBS+BranY97\\nxhfHhRYV+/D6WsCBJ93WCnduv7YsSFj4NGf/xoJynxeckYR3+JhYBvdOyA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE0TCCArmgAwIBAgIQMgfVJ9KIWgdhg6hFmVPWzDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTExMDQwOTMwNDVaFw0yMzExMDQwOTMwNDVaMD4xCzAJBgNVBAYTAkxWMRowGAYDVQQKDBFOVFJMVi05MDAwOTY0OTMzNzETMBEGA1UEAwwKbHZfZHNjXzAwMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOmkyzKevmqQYAzWMg3gUvga2p2Pe8YXx4UWFfvw+lrAgSfd1gp3br+2LEhY+DRn/8aCcp8XnJGEd/iYWAb3TsijggFEMIIBQDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMB0GA1UdDgQWBBSNXXFCsYbyQpaR9CVhus96/tOAejAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzIuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCFbvni9IiyVakliliz/jPuPfk3N2RETFV7cEGjRABugInh43DAPZz0siRPi2dmMy5B1b2T22QxFI7Od0qBkiPcGXKqwik1GU097mNWZ+5p8PuOVMN8E7nj5kX/vBJnmLw+XT1/taPMoz3cBVQ/7NTu1ycXVmJ1lWR8nPsBbqWRgnJbXFL1Q4Io+jngV2Y20o/OC+yvc0TsdofuM6dgDBEBunAU2kmiuexEtpyPVWgBuu5nz6mXOD1U10pXnxvDM5S6w+IDY04Nt3K4ONrlG/ghWUhTjrlYjpFMofqtK6CuKpGo8HQMpgQqb/bTTaAGeE3jEdoRVQxvQcsoUKEzM6cLf/XHz/MIoxlCfX0Rs+we93g/X4vjpXaoO0Dns57hEbRz53t3sE2Fty1rjY3qjGUd269vOtDIl2DooipUAnvSevUQQ3tRu7HeFGnc2ARrb82RG9lj2xwcce+JE5owTQYI2nSdnor1C2sQYhbMKNfbeLEwmoiWLUJyuhB95CPffwUffxQfF6EBbVEK9w6Rpu2I5Mo2qM9cwfJOYc9EIN4Bw8k3h7J3bNNFueVITL4WmVSjXnOaDFtt8PPF/H37exix0akaePpB4BGc5fpJN+OfIwPqEPU0ZDR+wFzwwHZrNF/aMD+j2myGGIuKcAkdt2rqzErGRznR6QClCNpJ3JF2Ew==","kid":"J8p9pf+5/9M="},{"issuer":"C = LV O = VAS Latvijas Valsts radio un televīzijas centrs 2.5.4.97 = NTRLV-40003011203 CN = Digital Green Certificate CSCA","subject":"CN = LV DSC 002 O = Nacionālais veselības dienests C = LV","notbefore":1624985695000,"notafter":1688057695000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5/m2YdN8L81Ajoi+2brFJbul628a\\nlfXRXU26t7hRYEvvsb74tSVm2Dm9cbuhrgFJ+/wXecdxh0tTSHCkMfB0hQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE4DCCAsigAwIBAgIQIVI8+7pCJKdg21Bf1/kMnDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA2MjkxNjU0NTVaFw0yMzA2MjkxNjU0NTVaME0xEzARBgNVBAMMCkxWIERTQyAwMDIxKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABOf5tmHTfC/NQI6Ivtm6xSW7petvGpX10V1Nure4UWBL77G++LUlZtg5vXG7oa4BSfv8F3nHcYdLU0hwpDHwdIWjggFEMIIBQDAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMB0GA1UdDgQWBBRJf+oSyT8lY9W8EXkcQkkbATciFzAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQA4+nXE7XWgwDhBUeldjoFgT1kRu6D5LzgFUsrTqicHFjGWXeXQKBnM9Dfx8iZBSY64O7FS/ompqIGxMFFZcBRYUgdaC9KQorL48w4b8WFCSQe0KUhDNqdlACWceq6/0tVtfek1M85bQ+ETU6InqY5sir7cZpyXFRXXXbdHqXjioC/EwfRo1/OB3wBX3/9HWcebIEskw4or2Z5p5BERPi2EQfp5cfv6BpH7tPYt0XJ7vA9WhsLLZGWPfKIU10iBF/DTGW5c2u/3yVCEbF215khpXx187kvXchIln4ZCbIiGkJrJRmnS6XZ++1c0BQpW4tdvUvxhuhqqln7GQPrOZK6HoOwFOjOC/k0oIkgYzJ+8xv7DA2PIXlOjSmkuZIqB4fr3DVKtnAVqWKKxnBMXqgyYlJenTUvp7OpUl+iYKqvSn7WX2F0wZQlYH+Gz1pGDdeyw4+cKZtUND6rFwHC9OxzeXM00wDp+G7O7IFBtwzaVrO/hRFGTG0W6vOv0Shc0lmVj++IzItVQx/SJRl9Lkfz58sQbRE8FphiUw4Wza3ad/eFafjDH3r0gtT/WA8aKUEp5j70kmb5XXIk9UMkk/T7385FRL3Q1ciqyoOVrRhL10wkEO+DDXuaqawXXtTz+3MDWX43TcE4wtQYDfw9i3tiDKkpzyRm43VvWoIDzGPDZ8g==","kid":"MrT00mhDxLQ="},{"issuer":"C = LV O = VAS Latvijas Valsts radio un televīzijas centrs 2.5.4.97 = NTRLV-40003011203 CN = Digital Green Certificate CSCA","subject":"CN = LV DSC 001 O = Nacionālais veselības dienests C = LV","notbefore":1622220600000,"notafter":1685292600000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPUwE7htr+kD1eVnJBfRf5tx0kA17\\nqu4p1wRz3EKPxsJyyIznIqr9+HsnMd7k9ID/f0deqjP8dulzS2cFrVVnFQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIE4zCCAsugAwIBAgIQfBNf4Ug47/BgsR84n0s5NDANBgkqhkiG9w0BAQsFADCBjTELMAkGA1UEBhMCTFYxOTA3BgNVBAoMMFZBUyBMYXR2aWphcyBWYWxzdHMgcmFkaW8gdW4gdGVsZXbEq3ppamFzIGNlbnRyczEaMBgGA1UEYQwRTlRSTFYtNDAwMDMwMTEyMDMxJzAlBgNVBAMMHkRpZ2l0YWwgR3JlZW4gQ2VydGlmaWNhdGUgQ1NDQTAeFw0yMTA1MjgxNjUwMDBaFw0yMzA1MjgxNjUwMDBaME0xEzARBgNVBAMMCkxWIERTQyAwMDExKTAnBgNVBAoMIE5hY2lvbsSBbGFpcyB2ZXNlbMSrYmFzIGRpZW5lc3RzMQswCQYDVQQGEwJMVjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABD1MBO4ba/pA9XlZyQX0X+bcdJANe6ruKdcEc9xCj8bCcsiM5yKq/fh7JzHe5PSA/39HXqoz/Hbpc0tnBa1VZxWjggFHMIIBQzAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMB0GA1UdDgQWBBRivdWHr9big4cJkaojQ5INsdnuNDAfBgNVHSMEGDAWgBTkk2qAHt4j3D1C8UaCE3wjva89HDBbBggrBgEFBQcBAQRPME0wSwYIKwYBBQUHMAKGP2h0dHA6Ly93d3cuZXBhcmFrc3RzLmx2L2NlcnQvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBLmNydDBRBgNVHR8ESjBIMEagRKBChkBodHRwOi8vd3d3LmVwYXJha3N0cy5sdi9jcmwvRGlnaXRhbF9HcmVlbl9DZXJ0aWZpY2F0ZV9DU0NBXzEuY3JsMA0GCSqGSIb3DQEBCwUAA4ICAQCCMrABdfqTT+3ux1VQ5RdqsFgArimneuPxVHSSitIqZ3rPwkS0EsTl5fUm6m5ZqxZreu5ChfGMzC9+/Z4OQfafuvVp0i/T5eD+oiN46g33bdcbxhaBg0i7++xpbRGKM5Wh9LuEW4iUq/wIxJBEJdYFGyvF2eP95mFMadKxcs8+aKdHWEix9CUgJozMEKsAslG81xYlSzVtCmAT5qraC9uz/qGTj/bYfivtMCEdChp7BWp7MP4hD3UG2rW+wxHzD1gYLy7NqqRG3+qPfolNM0SqliZederytEYoszv2zLoUleVGPq33XavqLTfCgPhOqhxPsnH0NLcuJkgSeq5yxg8FWQaRdIR6+BlENzVQ6LYNamsuBRxNZPDurKXL58rt/8dZoeEIn+qO92mo8oVrD4xDOHvjJJIuOqZ2zcODbvV/wBhCXjrTDBiUSe9tpeagE5UKfLN/pyh3TGzMzVyo5Tn30ihqXEIX6IawpZfLJNslZnEbDFi1/2K8b00t78x7pNTSFKyXou8VaabQVPspvuWsoW9D0nyig1ymLcCrSFpnCpf/GEKONRYI6Zi+LYpWzjI81/DzVyC49Gh25ZX6Z0k6ThgDq1J4qmiGU3I1W+VcQ+fNtTsCz9fv2Kdi62U0oYqmt3FAc2Vnt30yoKqgnSfyD4xhZSafHxz2ml0jFS1xzg==","kid":"hFpY/ySOrwI="},{"issuer":"C = BG O = Ministry of Health OU = Health Information System CN = Bulgaria DGC CSCA 1","subject":"C = BG L = Sofia O = Ministry of Health OU = Health Information System CN = DGC DSC 1","notbefore":1622205711000,"notafter":1685277711000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmyxlsE2inBusapxY7LvRiPN0s+ds\\nHnakaaa9M/5NDZZTljSZCzeK77fWO9MFRcGCXrTQaXNE3FhkV4+a92hRaw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICpDCCAkugAwIBAgIURXVV/Gq2Irn6g/NqhBUW+K90bQowCgYIKoZIzj0EAwIwbDELMAkGA1UEBhMCQkcxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDEiMCAGA1UECwwZSGVhbHRoIEluZm9ybWF0aW9uIFN5c3RlbTEcMBoGA1UEAwwTQnVsZ2FyaWEgREdDIENTQ0EgMTAeFw0yMTA1MjgxMjQxNTFaFw0yMzA1MjgxMjQxNTFaMHIxCzAJBgNVBAYTAkJHMQ4wDAYDVQQHDAVTb2ZpYTEbMBkGA1UECgwSTWluaXN0cnkgb2YgSGVhbHRoMSIwIAYDVQQLDBlIZWFsdGggSW5mb3JtYXRpb24gU3lzdGVtMRIwEAYDVQQDDAlER0MgRFNDIDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASbLGWwTaKcG6xqnFjsu9GI83Sz52wedqRppr0z/k0NllOWNJkLN4rvt9Y70wVFwYJetNBpc0TcWGRXj5r3aFFro4HEMIHBMAwGA1UdEwEB/wQCMAAwLAYDVR0fBCUwIzAhoB+gHYYbaHR0cDovL2NybC5oaXMuYmcvY3NjYTEuY3JsMB8GA1UdIwQYMBaAFFeMHPlme+J4tvwi8r3u4ZCmP7FWMB0GA1UdDgQWBBS+Zk3uynTTHvB0Mb9eAgWF0vA6DDAOBgNVHQ8BAf8EBAMCB4AwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNHADBEAiBjSeBvjP2L5USPCkCAZggp/d4Mw/PUGt17jQdEet7f1AIgFI0GKAKWwdMW+xDfZmN4XAv27Z20ryj6kFY08jdIlo0=","kid":"Jjql9rBrjHI="},{"issuer":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-CSCA-PROD-20210608 E = webmaster@llv.li","subject":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-DSC-TEST-PROD-20210608 E = webmaster@llv.li","notbefore":1623138120000,"notafter":1686210120000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBnFUjr8FpfpVaVFtCUW7Yg6JBk/n\\n1TlJKEKpm/rZOvAEzKpwoTCpXpXPP1SPGhvQXzJ+i4dBQHgbdw2SDpcZmQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC8zCCApqgAwIBAgIIP9+ZLHC2FYQwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc0MjAwWhcNMjMwNjA4MDc0MjAwWjCBlDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEmMCQGA1UEAxMdREdDLU5CLURTQy1URVNULVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQGcVSOvwWl+lVpUW0JRbtiDokGT+fVOUkoQqmb+tk68ATMqnChMKlelc8/VI8aG9BfMn6Lh0FAeBt3DZIOlxmZo4HXMIHUMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFKdEjVLpS/bdKCMQdvpMviuko+rEMB8GA1UdIwQYMBaAFPSeeHwW3w57BFMM1pp4NCgcTd+FMA4GA1UdDwEB/wQEAwIHgDA8BgNVHR8ENTAzMDGgL6AthitodHRwOi8vY3JsLmxsdi5saS9ER0MtTkItQ1NDQS1QUk9ELTIwMjEwNjA4MB4GCWCGSAGG+EIBDQQRFg94Y2EgY2VydGlmaWNhdGUwFgYDVR0lBA8wDQYLKwYBBAGON49lAQEwCgYIKoZIzj0EAwIDRwAwRAIgTvGgYK3ij9bZvyKshoyDlYrQwXR7Btj0JIcpdq6NFqECIHd6ABGRr+NyKJjnlB7ZlYiJDfrERVPyF/q/Esmhv56P","kid":"JkFekJel6/o="},{"issuer":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-CSCA-PROD-20210608 E = webmaster@llv.li","subject":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-DSC-RECOVERY-PROD-20210608 E = webmaster@llv.li","notbefore":1623139020000,"notafter":1686211020000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9B\\nnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiAw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+TCCAp6gAwIBAgIIEVh/vC3chgUwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NzAwWhcNMjMwNjA4MDc1NzAwWjCBmDELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEqMCgGA1UEAxMhREdDLU5CLURTQy1SRUNPVkVSWS1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmCCGUDO95y6Rj40KX74cFgc99I9BnFoPBkZ3kcAyo2q/smN4gbYWkrC2WMErsN8zZ37C9RhAGlHYDN8tPJbiA6OB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBT+nyG6/wNEQ0TEblj8ow7u2bNB4DAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQDqBN9eq6TjWFWqhOkU9hvdA5hBacvUjL0Rt3i5dbV8kwIhAKhpBMwxHfoFXS7FwiuXOyj4zxZ60pPvPbxYGawo9OZI","kid":"e/YRqyv++qY="},{"issuer":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-CSCA-PROD-20210608 E = webmaster@llv.li","subject":"C = LI L = Vaduz O = Liechtensteinische Landesverwaltung CN = DGC-NB-DSC-VACCINATION-PROD-20210608 E = webmaster@llv.li","notbefore":1623138840000,"notafter":1686210840000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30f\\ntIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+jCCAqGgAwIBAgIIECN/LlZb7kkwCgYIKoZIzj0EAwIwgZAxCzAJBgNVBAYTAkxJMQ4wDAYDVQQHEwVWYWR1ejEsMCoGA1UEChMjTGllY2h0ZW5zdGVpbmlzY2hlIExhbmRlc3ZlcndhbHR1bmcxIjAgBgNVBAMTGURHQy1OQi1DU0NBLVBST0QtMjAyMTA2MDgxHzAdBgkqhkiG9w0BCQEWEHdlYm1hc3RlckBsbHYubGkwHhcNMjEwNjA4MDc1NDAwWhcNMjMwNjA4MDc1NDAwWjCBmzELMAkGA1UEBhMCTEkxDjAMBgNVBAcTBVZhZHV6MSwwKgYDVQQKEyNMaWVjaHRlbnN0ZWluaXNjaGUgTGFuZGVzdmVyd2FsdHVuZzEtMCsGA1UEAxMkREdDLU5CLURTQy1WQUNDSU5BVElPTi1QUk9ELTIwMjEwNjA4MR8wHQYJKoZIhvcNAQkBFhB3ZWJtYXN0ZXJAbGx2LmxpMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAElHOTKQPe3GZKCAIsaBbPpAfJZ30ftIUsb/r6gHu19cI21XMfiZDQuI3we82ezsmyjL/jfr1zlRYqXLmbqOrkJKOB1zCB1DAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQ3BvFcjsG6REaqwESNcZW1BjNTwDAfBgNVHSMEGDAWgBT0nnh8Ft8OewRTDNaaeDQoHE3fhTAOBgNVHQ8BAf8EBAMCB4AwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5sbHYubGkvREdDLU5CLUNTQ0EtUFJPRC0yMDIxMDYwODAeBglghkgBhvhCAQ0EERYPeGNhIGNlcnRpZmljYXRlMBYGA1UdJQQPMA0GCysGAQQBjjePZQECMAoGCCqGSM49BAMCA0cAMEQCIEEnfB5SgmatugluROBG4Q06cVdBulDo4S4vQJXO0lj2AiABMtLp5pBQA/cS9ksKlYkCuj/X2TTnM3yIPhngaEN/7A==","kid":"jYpr5GHCDiQ="},{"issuer":"C = MK ST = North Macedonia L = Skopje O = Ministry of Health CN = zdravstvo.gov.mk E = contact@zdravstvo.gov.mk","subject":"C = MK ST = North Macedonia L = Skopje O = Ministry of Health, North Macedonia OU = E-Health, North Macedonia CN = zdravstvo.gov.mk E = contact@zdravstvo.gov.mk","notbefore":1635409469000,"notafter":1666945469000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA65H+Vak/9kWmQXGYEZEu\\nA2hSykjqYu72g//uaBs/Ac0JYV9Zhqwjb6iPf1tATe87vzg7sD5gGOqtabbOYMcV\\nW50e3X5Ix4XxKMMoAvtkyDI/TbMK4HqiEY5FVf/JhPZEp4+nSVjwhozn0p7pKSk+\\nWKYEjIG/zpceLyikArxxSt5SwYdVMmau+6kdHT4Q0m3btE5ORl+B0exu+KS3xb6W\\nRsiU5E8kXyQFBS3zK6DxFqDDVyWhWVt4NfoJt76ZE3zuXPutyPs3AVscJDWB5mkn\\n/yM8Fg20WAsZ0O9p3uyyK+MSwFdRmUzK7Gr6dnQhce4oh0HTAFsodFwnDsPCfJxc\\nskoIYZW2xWX1W03jpngQWXgA1eJ44/4Ve0u09w5DpwNrgT3SoznZhZ3DPfH38NV3\\nfxhm8KuVmNtmKms2ctExY8RftHXMFAQC4jDgutnaJz1zyC95QVkp06drreGLzX4X\\nvPYZZdZhh4UYqT/IYXaX2yt09Tu+ueVm1MRlWeuEzlYYApbMceBseE7MuWdCVPwc\\nx/QMjp7b4BSnRH+w4XIqs/wS8nXkMyBEdCMbCH3PFKNQOmbmA3Lq6X2eFWhgRud3\\nFGyPacS5ADeV/s/aei+UJY/i9tY/NeXCYLtox4PXucUU4gbU9wV7rvLTNvwWIr5g\\nga/gu18hrHe6Dag7p9wsU3ECAwEAAQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"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","kid":"KBPNEuXUvrY="},{"issuer":"CN = CSCA Saude serialName = 001 O = Republica Portuguesa - Portuguese Republic C = PT","subject":"CN = DGC DS serialName = 001 O = Republica Portuguesa - Portuguese Republic C = PT","notbefore":1621613831000,"notafter":1684685830000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnjK8A8ato900a+wQ1IaxJyaeUGQ5\\nlwsYOCRlq47X4DKGe+P3L22utYcGTWtCekBqarcEzzSHH/X+s5aeEQgYYA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICKTCCAc6gAwIBAgIUb724peU13ddK2UiaXfZ8lJA3KpAwCgYIKoZIzj0EAwIwZTETMBEGA1UEAwwKQ1NDQSBTYXVkZTEMMAoGA1UEBRMDMDAxMTMwMQYDVQQKDCpSZXB1YmxpY2EgUG9ydHVndWVzYSAtIFBvcnR1Z3Vlc2UgUmVwdWJsaWMxCzAJBgNVBAYTAlBUMB4XDTIxMDUyMTE2MTcxMVoXDTIzMDUyMTE2MTcxMFowYTEPMA0GA1UEAwwGREdDIERTMQwwCgYDVQQFEwMwMDExMzAxBgNVBAoMKlJlcHVibGljYSBQb3J0dWd1ZXNhIC0gUG9ydHVndWVzZSBSZXB1YmxpYzELMAkGA1UEBhMCUFQwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASeMrwDxq2j3TRr7BDUhrEnJp5QZDmXCxg4JGWrjtfgMoZ74/cvba61hwZNa0J6QGpqtwTPNIcf9f6zlp4RCBhgo2AwXjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFH4yvG+XLvlf69AVR2efiYzKIWgOMB0GA1UdDgQWBBQlYiuUojmAFDYjAmowakBbgeqeNTAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSQAwRgIhALe/oIGICdSXhdPOH7yFiPAUR/FhjdX+dsCyvU8Am4pLAiEA2HtA78ZO3jLs7BoIgh+xZ5fqaJbCIFMdwVzdJ/hCvWY=","kid":"KG9lzdohSY0="},{"issuer":"C = DK O = The Danish Health Data Authority OU = The Danish Health Data Authority CN = PROD_CSCA_DGC_DK_01 E = kontakt@sundhedsdata.dk","subject":"C = DK O = The Danish Health Data Authority OU = The Danish Health Data Authority CN = PROD_DSC_DGC_DK_01 E = kontakt@sundhedsdata.dk","notbefore":1621417645000,"notafter":1684576045000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEBmdgY/VORsecXxY/0xNNOzoJNRaV\\nnMMmHs5jiXrGvaDOy1jzDUOyvR++Jxgf0+YuGyp5/UAY0QIh75b+JQnlHA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICyzCCAnGgAwIBAgIBATAKBggqhkjOPQQDAjCBqTELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEcMBoGA1UEAwwTUFJPRF9DU0NBX0RHQ19ES18wMTEmMCQGCSqGSIb3DQEJARYXa29udGFrdEBzdW5kaGVkc2RhdGEuZGswHhcNMjEwNTE5MDk0NzI1WhcNMjMwNTIwMDk0NzI1WjCBqDELMAkGA1UEBhMCREsxKTAnBgNVBAoMIFRoZSBEYW5pc2ggSGVhbHRoIERhdGEgQXV0aG9yaXR5MSkwJwYDVQQLDCBUaGUgRGFuaXNoIEhlYWx0aCBEYXRhIEF1dGhvcml0eTEbMBkGA1UEAwwSUFJPRF9EU0NfREdDX0RLXzAxMSYwJAYJKoZIhvcNAQkBFhdrb250YWt0QHN1bmRoZWRzZGF0YS5kazBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAZnYGP1TkbHnF8WP9MTTTs6CTUWlZzDJh7OY4l6xr2gzstY8w1Dsr0fvicYH9PmLhsqef1AGNECIe+W/iUJ5RyjgYgwgYUwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBRXm2TEfVc2DPhwR/do67XrHDz4FzAfBgNVHSMEGDAWgBSb8DXRV1S8RJEI55z8etM+2ZXtSjAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMAoGCCqGSM49BAMCA0gAMEUCIB+IJn+8uICEfEnONXufysFrmtYBcTppGomj1Pr8WZF8AiEA0c3LZ3OShcmWfin0kwWzbf39irEMvJlF1idothpb0Eg=","kid":"NAyCKly+hCg="},{"issuer":"C = BE O = eHealth - Belgium CN = Belgium Covid19 Country Signing CA 01","subject":"C = BE O = eHealth - Belgium CN = Belgium Covid19 DSC 01","notbefore":1622110367000,"notafter":1685182367000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHo\\nznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICLTCCAdOgAwIBAgIIXf7//TpWDVgwCgYIKoZIzj0EAwIwWTELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMS4wLAYDVQQDDCVCZWxnaXVtIENvdmlkMTkgQ291bnRyeSBTaWduaW5nIENBIDAxMB4XDTIxMDUyNzEwMTI0N1oXDTIzMDUyNzEwMTI0N1owSjELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMR8wHQYDVQQDDBZCZWxnaXVtIENvdmlkMTkgRFNDIDAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEU/f/KsmP3NasU/jZo7aulTrd9GHoznfnwWvX8xmHtK49EoobMAG7LhXnpLQ+aRwmmnSMcIWy8wPxM8QDMBUtyKOBkzCBkDAdBgNVHQ4EFgQUr/AjSs5HKJsXQVr617Z6OO2Z9h8wHwYDVR0jBBgwFoAUMc4oJrfby5Fk9eLZSMutpWhvX9UwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NlcnQtYXBwLmJlL3Jldm9rZWRMaXN0L2RnY19jc2NhMDEuY3JsMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiA56koPekERN3iWtlXwuD8rwBgbsTkZj2Yqe8kL2doIbwIhAKYOJyyIeR4Po523PY5rniN4jaaSkgefulusXXKiEthU","kid":"ODqaG8mnbro="},{"issuer":"C = BE O = eHealth - Belgium CN = Belgium Covid19 Country Signing CA 01","subject":"C = BE O = eHealth - Belgium CN = Belgium Covid19 DSC 02","notbefore":1637054072000,"notafter":1700126072000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEX79y3o+S4vY8UyqO1uzSAT6W7zUL\\npaFWqe6MqPue8fVNOhQ1bwN/yKHKN64HkcJ+sGIpLtgaJb4iGr06NiAWfQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICLTCCAdOgAwIBAgIIG+DS62eZmPswCgYIKoZIzj0EAwIwWTELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMS4wLAYDVQQDDCVCZWxnaXVtIENvdmlkMTkgQ291bnRyeSBTaWduaW5nIENBIDAxMB4XDTIxMTExNjA5MTQzMloXDTIzMTExNjA5MTQzMlowSjELMAkGA1UEBhMCQkUxGjAYBgNVBAoMEWVIZWFsdGggLSBCZWxnaXVtMR8wHQYDVQQDDBZCZWxnaXVtIENvdmlkMTkgRFNDIDAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEX79y3o+S4vY8UyqO1uzSAT6W7zULpaFWqe6MqPue8fVNOhQ1bwN/yKHKN64HkcJ+sGIpLtgaJb4iGr06NiAWfaOBkzCBkDAdBgNVHQ4EFgQUGQizN6eLdUb55YpiOuht4TeeiigwHwYDVR0jBBgwFoAUMc4oJrfby5Fk9eLZSMutpWhvX9UwPgYDVR0fBDcwNTAzoDGgL4YtaHR0cDovL2NlcnQtYXBwLmJlL3Jldm9rZWRMaXN0L2RnY19jc2NhMDEuY3JsMA4GA1UdDwEB/wQEAwIHgDAKBggqhkjOPQQDAgNIADBFAiBm+UkB5ZbZO7CqGiaA4J4Xj/LhFP61DZV9gY54U47S4gIhAPFP3U9ekHl9ecHOxL0oEZ0/4GdaIZ1E0wnBFvB98UPm","kid":"aCU0KJl+gMg="},{"issuer":"C = IE ST = Dublin L = Dublin O = Department of Health OU = eHealth CN = CSCA_DGC_IE_01","subject":"C = IE O = Department of Health CN = validateqr.gov.ie 2020135457912391810539600999694555","notbefore":1625650281000,"notafter":1687858281000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAETPE5ItolrGzLQLPqYxOT+orVmYJu\\nsLDsPWLwrK+bbJKBBtXBsrD2Py/osWYr9LF5ffORpzxmBUQmzp7K4uPiIw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICqjCCAlGgAwIBAgIJAIFaAnBKVQR5MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNzA3MDkzMTIxWhcNMjMwNjI3MDkzMTIxWjBrMQswCQYDVQQGEwJJRTEdMBsGA1UEChMURGVwYXJ0bWVudCBvZiBIZWFsdGgxPTA7BgNVBAMTNHZhbGlkYXRlcXIuZ292LmllIDIwMjAxMzU0NTc5MTIzOTE4MTA1Mzk2MDA5OTk2OTQ1NTUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARM8Tki2iWsbMtAs+pjE5P6itWZgm6wsOw9YvCsr5tskoEG1cGysPY/L+ixZiv0sXl985GnPGYFRCbOnsri4+Ijo4HQMIHNMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUT2vp7aj2JBxHrQ1vkpX4bZJoi10wHwYDVR0jBBgwFoAUXIe2JeQrVG0xki6dmWYLVblvTFAwSQYDVR0fBEIwQDA+oDygOoY4aHR0cHM6Ly9nZW4uZGlnaXRhbGNvdmlkY2VydGlmaWNhdGVzLmdvdi5pZS9hcGkvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCIAEEtN5Jh3HP0OTeYkyq0o4eaL0yGZnAbDhUUa0+StGTAiEA5trl/PUTtSwMNUSpc1UAA/viDLCW3FXyfx9cJaheFsQ=","kid":"PBpDVqnJ7Us="},{"issuer":"C = IE ST = Dublin L = Dublin O = Department of Health OU = eHealth CN = CSCA_DGC_IE_01","subject":"C = IE ST = Dublin L = Dublin O = Department of Health OU = eHealth CN = DGC CSR","notbefore":1625060335000,"notafter":1688132335000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZ\\nwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICmDCCAj+gAwIBAgIJAIFaAnBKVQR3MAkGByqGSM49BAEweTELMAkGA1UEBhMCSUUxDzANBgNVBAgMBkR1YmxpbjEPMA0GA1UEBwwGRHVibGluMR0wGwYDVQQKDBREZXBhcnRtZW50IG9mIEhlYWx0aDEQMA4GA1UECwwHZUhlYWx0aDEXMBUGA1UEAwwOQ1NDQV9ER0NfSUVfMDEwHhcNMjEwNjMwMTMzODU1WhcNMjMwNjMwMTMzODU1WjByMQswCQYDVQQGEwJJRTEPMA0GA1UECAwGRHVibGluMQ8wDQYDVQQHDAZEdWJsaW4xHTAbBgNVBAoMFERlcGFydG1lbnQgb2YgSGVhbHRoMRAwDgYDVQQLDAdlSGVhbHRoMRAwDgYDVQQDDAdER0MgQ1NSMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZfUiZPt+jvUVd8fpPkv2xoXxluGZwuvys0oXWRnPOBcDeGmcMszJ7gQNKS0xOZ33xtY/9rhivmjVU67IHcBM8aOBtzCBtDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFBgOd1YgJce5VyyJvYhrUDZbtTrZMB8GA1UdIwQYMBaAFFyHtiXkK1RtMZIunZlmC1W5b0xQMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9jZXJ0Lmdvdi5pZS9DUkwvQ1NDQS5jcmwwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAJBgcqhkjOPQQBA0gAMEUCICD5ra8JbGVJCDS7k9BeY1D8SlL8dv8eVH8mMXKFJek4AiEA5j7KharjyLlp7GtXvJeS+Ht+0dgaaesqpMNfuPH7TmI=","kid":"eNNsg2jd4wA="},{"issuer":"C = PA O = FIRMA ELECTRONICA CN = AUTORIDAD NACIONAL PARA LA INNOVACION GUBERNAMENTAL","subject":"C = PA ST = Panama L = Panama O = AIG OU = AIG CN = AIG","notbefore":1631790882000,"notafter":1694862882000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6B5cdgxOlktZr67WAjgdIgoJwG5Z\\nSTRBM6yEZb0y3rrlIHQi95rlKO6dFtQxo5rRPZYjvWSbaqVBgvbc0djcxw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDQDCCAiigAwIBAgIUNLMk961tL/NV8V23sWCKJoUwj4kwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UEBhMCUEExGjAYBgNVBAoMEUZJUk1BIEVMRUNUUk9OSUNBMTwwOgYDVQQDDDNBVVRPUklEQUQgTkFDSU9OQUwgUEFSQSBMQSBJTk5PVkFDSU9OIEdVQkVSTkFNRU5UQUwwHhcNMjEwOTE2MTExNDQyWhcNMjMwOTE2MTExNDQyWjBZMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMQ8wDQYDVQQHDAZQYW5hbWExDDAKBgNVBAoMA0FJRzEMMAoGA1UECwwDQUlHMQwwCgYDVQQDDANBSUcwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAToHlx2DE6WS1mvrtYCOB0iCgnAbllJNEEzrIRlvTLeuuUgdCL3muUo7p0W1DGjmtE9liO9ZJtqpUGC9tzR2NzHo4G8MIG5MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUhd6zV7FXbysIfctxWIRFj/snGO8wHwYDVR0jBBgwFoAUjQVO+fAPdNAQMNdSugA4+rjnIVQwNQYDVR0fBC4wLDAqoCigJoYkaHR0cDovL3d3dy5wa2kuZ29iLnBhL2NybHMvY2Fnb2IuY3JsMDAGA1UdJQQpMCcGCysGAQQBjjePZQEBBgsrBgEEAY43j2UBAgYLKwYBBAGON49lAQMwDQYJKoZIhvcNAQELBQADggEBAIJlTzhpBZn/hDvsviHRVpk7W+ICxubhJ7nEOjC6GLECQ22/dWmLo1U98BEv1nZKA1CF2/Uo2vdzryMILJ8tysDjs/7WOa8WH3oZ0f8FVj/vj/9H07xI2bJuQfX3O+SO5LvuMtZzyxBkIVdTn2B7PBsO9AzXPRn8m1W068VTema97toGiqqOn9Yhe6nhgjD4d+AGwmLlHSl/73n+oYzmmznf3JJTwf5Of1t2lH3P3crTyvfLZZHvf6ubQ7JzBcOgRXNgizksh6YNtyZhAjMhHgV6UfOe0ik14IE8xqWkf3k4aq8RS2oSdAeWMQ4rZbPaswKWBWRuNVywheR+xjSaO6o=","kid":"Ui7DXQikstE="},{"issuer":"C = AM L = Yerevan O = Armed OU = DGCOperations CN = CSCA_DGC_AM_01","subject":"C = AM ST = Some-State L = Yerevan O = Armed CN = DSC_DGC_AM_O1","notbefore":1633589669000,"notafter":1696661669000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGsoQ+d21h6C2haw4Ty4q/38Ux+t5\\n1x9qe6EhVH30tsO5cxpvULTb+FFQbkcHcu0V9WbqIyIMaANSYH4ntN1H4A==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICRTCCAeqgAwIBAgIUfvIoqYr4oy/CWPFHPFoVgTgAPLUwCgYIKoZIzj0EAwIwYDELMAkGA1UEBhMCQU0xEDAOBgNVBAcMB1llcmV2YW4xDjAMBgNVBAoMBUFybWVkMRYwFAYDVQQLDA1ER0NPcGVyYXRpb25zMRcwFQYDVQQDDA5DU0NBX0RHQ19BTV8wMTAeFw0yMTEwMDcwNjU0MjlaFw0yMzEwMDcwNjU0MjlaMFwxCzAJBgNVBAYTAkFNMRMwEQYDVQQIDApTb21lLVN0YXRlMRAwDgYDVQQHDAdZZXJldmFuMQ4wDAYDVQQKDAVBcm1lZDEWMBQGA1UEAwwNRFNDX0RHQ19BTV9PMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABBrKEPndtYegtoWsOE8uKv9/FMfredcfanuhIVR99LbDuXMab1C02/hRUG5HB3LtFfVm6iMiDGgDUmB+J7TdR+CjgYUwgYIwDgYDVR0PAQH/BAQDAgeAMB0GA1UdDgQWBBRqxeKvv2wDiKAhCFTKOAz+UVyatDAfBgNVHSMEGDAWgBTTJV9hj0P3rLMweZAdJnUKadCwaDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCW6k0AfZPRXJBATVg9tHajdGcerq93YUnw3BJt++DM1QIhAMhUzyF6wEDAq+wJbTeI2mTc0+qVWbNTzchg870FSU29","kid":"W0NjksmJMm0="},{"issuer":"C = RS L = Beograd 2.5.4.97 = VATRS-110177886 O = Kancelarija za informacione tehnologije i elektronsku upravu CN = RS NBCSCA","subject":"CN = RS PROD DSC2 O = Kancelarija za informacione tehnologije i elektronsku upravu C = RS","notbefore":1636986858000,"notafter":1700058858000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtc0dmUPU8wLDfYTVnSXD\\nxhCr4AHEG+GKSy13pMGI5Fj8IK1e9JVLrLoemtLnlaFV5WAPr6G8ialeG9TV9Xnw\\nfiiWzAaxLT28u8/8MG4jihRKw5cVAPC0mizABynleAzU+dOYkNFlmwEpt6M6+VXl\\n39aild/WVqMnZ0I/k/Vg0tQe5lS7aBPBtb7WJaaOYhzDx2hcv0z7IrYSBmigWgl3\\njOO0TN+/1viQPtMbtbvC6gxXGDyQ8/HCwgt69HYNDHrBglFjLIvbelLuTsgoDooz\\nIV+BUKIDal2vtAGvd1cDrN6YvqqiZRwqOn3gtv1oj/XmZUnl7aMtKisQ1MuqKVHm\\ntQIDAQAB\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIFKjCCAxKgAwIBAgIUBsFy8hwKgnDAZGz/bi/+8NsJbrswDQYJKoZIhvcNAQELBQAwgZQxCzAJBgNVBAYTAlJTMRAwDgYDVQQHEwdCZW9ncmFkMRgwFgYDVQRhEw9WQVRSUy0xMTAxNzc4ODYxRTBDBgNVBAoTPEthbmNlbGFyaWphIHphIGluZm9ybWFjaW9uZSB0ZWhub2xvZ2lqZSBpIGVsZWt0cm9uc2t1IHVwcmF2dTESMBAGA1UEAxMJUlMgTkJDU0NBMB4XDTIxMTExNTE0MzQxOFoXDTIzMTExNTE0MzQxOFowazEVMBMGA1UEAwwMUlMgUFJPRCBEU0MyMUUwQwYDVQQKDDxLYW5jZWxhcmlqYSB6YSBpbmZvcm1hY2lvbmUgdGVobm9sb2dpamUgaSBlbGVrdHJvbnNrdSB1cHJhdnUxCzAJBgNVBAYTAlJTMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtc0dmUPU8wLDfYTVnSXDxhCr4AHEG+GKSy13pMGI5Fj8IK1e9JVLrLoemtLnlaFV5WAPr6G8ialeG9TV9XnwfiiWzAaxLT28u8/8MG4jihRKw5cVAPC0mizABynleAzU+dOYkNFlmwEpt6M6+VXl39aild/WVqMnZ0I/k/Vg0tQe5lS7aBPBtb7WJaaOYhzDx2hcv0z7IrYSBmigWgl3jOO0TN+/1viQPtMbtbvC6gxXGDyQ8/HCwgt69HYNDHrBglFjLIvbelLuTsgoDoozIV+BUKIDal2vtAGvd1cDrN6YvqqiZRwqOn3gtv1oj/XmZUnl7aMtKisQ1MuqKVHmtQIDAQABo4GbMIGYMA4GA1UdDwEB/wQEAwIGwDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFPHhcSjAsmKP7ijI10VI7Lc8dDTIMDgGA1UdHwQxMC8wLaAroCmGJ2h0dHBzOi8vY2xvdWQuZWlkLmdvdi5ycy9jcmwvbmJjc2NhLmNybDAdBgNVHQ4EFgQU5/vY+2xxURwDV2bNEeYIFGMWSLgwDQYJKoZIhvcNAQELBQADggIBAHQexmp5RK8OA8j/SKhwUpiUTSvgQg/2/UgdQ2v5x4lzo8N9cQ6fS5VxY5YK3CpJBNEz8i5qRmzsD0UozOvEeLbcum3L4hCoOPXWhsPMcRkaEEwYn5kDP4Evz7iqmqviHL74BBxx3zZ9WVfoq8SCbkawywrw2Hwtoeuo3XKOWDK0jsesewcEHWv9MfEXhKjZtxlS0v1lkCF/5AvSEUPIYz4FasPeCoX31JIizErdZZLXiy5FGKxxBW6LP7GUAQkouKDeLZLsV/5247rNADICYkrOyd2jtZY37BY6UobYNH7flofqbwTbXfvfT+xD9cb5uyPTWD18lukcQirJahE64Fsa2ZE/E6+SiFDRsLTazEItW0bVAECA2gQd8Gg2FesBMMlJbQFTGxXdU4FQCP31/SlIc9DJjo8KIEfwr+khMRUaD91wq1Nwfmf3NuB4qv3nX6rQI9bAoCNs0/eU1A8LqJ4ugKf0LUHpfMTk585lhSyHKeXX823Uu5cPnk05Z1zDVJ72VrH57qETto+4gJ1DK2iLcgJHWkUQqwiWHygWzDsVvFIv26CRSItK2JpV2gZM8sTYFAoqquAlzyAkvumdvwpg4aUWMyWHZV0W9X71YGM1To8ZPU1v4dIOB7ESjGwEluD35arlYn9IjuvQBbnO++/Cr/STq2n9DS/mG2XDkVi/","kid":"YgBnrpZDGXk="},{"issuer":"C = SE O = Swedish eHealth Agency OU = Digital Covid Certificate Services 2.5.4.97 = 202100-6552 CN = Swedish Digital Covid Certificate CSCA","subject":"C = SE O = Swedish eHealth Agency 2.5.4.97 = 202100-6552 CN = DCC Signer","notbefore":1624255651000,"notafter":1687328851000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaLOo1IGTspZSdr2BqdAvKjZjHfW/\\nZq8VDrI6nEhBlXUr3VCDlzjrXo5v6ix2qF9RCySJsHgZxUrqWQpFQbrbMw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDbzCCAtGgAwIBAgIRAKzjP3XRAzwsEbbfxdhLsK0wCgYIKoZIzj0EAwIwgaIxCzAJBgNVBAYTAlNFMR8wHQYDVQQKDBZTd2VkaXNoIGVIZWFsdGggQWdlbmN5MSswKQYDVQQLDCJEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIFNlcnZpY2VzMRQwEgYDVQRhDAsyMDIxMDAtNjU1MjEvMC0GA1UEAwwmU3dlZGlzaCBEaWdpdGFsIENvdmlkIENlcnRpZmljYXRlIENTQ0EwHhcNMjEwNjIxMDYwNzMxWhcNMjMwNjIxMDYyNzMxWjBZMQswCQYDVQQGEwJTRTEfMB0GA1UECgwWU3dlZGlzaCBlSGVhbHRoIEFnZW5jeTEUMBIGA1UEYQwLMjAyMTAwLTY1NTIxEzARBgNVBAMMCkRDQyBTaWduZXIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARos6jUgZOyllJ2vYGp0C8qNmMd9b9mrxUOsjqcSEGVdSvdUIOXOOtejm/qLHaoX1ELJImweBnFSupZCkVButszo4IBLjCCASowCQYDVR0TBAIwADArBgNVHSMEJDAigCACTjrfhadUh3CvxKG9ilhNH5em/z3iqGdiDEqCy0uCujApBgNVHQ4EIgQgcumMkPVDerXtTa5yvY0Vp+vbcHWxuiqfF0N9MU0I6hEwDgYDVR0PAQH/BAQDAgOIMD8GA1UdHwQ4MDYwNKAyoDCGLmh0dHBzOi8vZGdjZy5jb3ZpZGJldmlzLnNlL2NzY2EvY3JsL2NzY2EwMS5jcmwwRwYIKwYBBQUHAQEEOzA5MDcGCCsGAQUFBzABhitodHRwczovL2RnY2cuY292aWRiZXZpcy5zZS9jc2NhL29jc3AvY3NjYTAxMCsGA1UdEQQkMCKBIHJlZ2lzdHJhdG9yQGVoYWxzb215bmRpZ2hldGVuLnNlMAoGCCqGSM49BAMCA4GLADCBhwJCAJH08xci9Y2aQQcUJTnA+WIVSblO5K/ncVsYFd+jzM/m1chhh7CD75oN5twgWMl0aPMcjqaylNH/p82zPONaERqmAkEyCrbICfyUiio20CrFRmWS8KWq4LL8dkHapxgqVrG75/3xrmhAdxlH1WoC+Af1I602E6dsaCZw6mmMY0GPOEvGhw==","kid":"Z7k1XpIWZOE="},{"issuer":"C = MA OU = Ministry of Health O = Kingdom of Morocco CN = CSCA Health MA","subject":"C = MA O = Kingdom of Morocco OU = Ministry of Health CN = DSC-MA","notbefore":1631800460000,"notafter":1694872460000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEvILEthEWN9hu06zQ9GCUCthQJ9OA\\na/0eskYOKbfQZVEf9kNzPEH9qbVrwvr8jhwKL6CKoXAefNLlrBKZ+Mtpzg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDSzCCAvCgAwIBAgITNQAAAASf3f6XNUKvGAAAAAAABDAKBggqhkjOPQQDAjBgMQswCQYDVQQGEwJNQTEbMBkGA1UECxMSTWluaXN0cnkgb2YgSGVhbHRoMRswGQYDVQQKExJLaW5nZG9tIG9mIE1vcm9jY28xFzAVBgNVBAMTDkNTQ0EgSGVhbHRoIE1BMB4XDTIxMDkxNjEzNTQyMFoXDTIzMDkxNjEzNTQyMFowWDELMAkGA1UEBhMCTUExGzAZBgNVBAoTEktpbmdkb20gb2YgTW9yb2NjbzEbMBkGA1UECxMSTWluaXN0cnkgb2YgSGVhbHRoMQ8wDQYDVQQDEwZEU0MtTUEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS8gsS2ERY32G7TrND0YJQK2FAn04Br/R6yRg4pt9BlUR/2Q3M8Qf2ptWvC+vyOHAovoIqhcB580uWsEpn4y2nOo4IBjzCCAYswPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIgvu3EoKquCSH3YEMhdOqaoTo4wQVh/uOCoXE3wgCAWQCAQwwMQYDVR0lBCowKAYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGCisGAQQBgjcKAwwwDgYDVR0PAQH/BAQDAgbAMAwGA1UdEwEB/wQCMAAwPQYJKwYBBAGCNxUKBDAwLjAOBgwrBgEEAQCON49lAQEwDgYMKwYBBAEAjjePZQECMAwGCisGAQQBgjcKAwwwHQYDVR0OBBYEFKda1UHydNCDDid5anJrgzvYRipXMB8GA1UdIwQYMBaAFMKQ1XKb4BABLnDYaZMGbye1kxhEMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9OQk1vcm9jY28ubWEvQ1JMcy9NQS1IZWFsdGguY3JsMEEGCCsGAQUFBwEBBDUwMzAxBggrBgEFBQcwAYYlaHR0cDovL05CTW9yb2Njby5tYS9BSUEvTUEtSGVhbHRoLmNydDAKBggqhkjOPQQDAgNJADBGAiEAozqhzCknO/8+LbUU7EWGoKr9Xx9gx7u/jh4BHN3mt5kCIQDit7cWPpLSCWOr25AHpmdccHK6kGk0mOlAPVIGFnssdQ==","kid":"ZpnsokK1DgM="},{"issuer":"C = IL 0.9.2342.19200300.100.1.25 = IL 0.9.2342.19200300.100.1.25 = GOV 0.9.2342.19200300.100.1.25 = HEALTH 0.9.2342.19200300.100.1.25 = MOH ST = Israel L = Jerusalem O = Ministry of Health OU = Digital Health CN = CSCA-Health-DCG-IL-01","subject":"C = IL ST = Israel L = Jerusalem O = Ministry of Health OU = Digital Health CN = IL-NB-DSC-01","notbefore":1630826160000,"notafter":1693898160000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcw+UZUnryP4rqSw+a8xQw4wLHZkc\\nu4MDjJP7QeBUEpDt8xh4i4RSIBEJrBkAukSSobRDkwMb0dSCsWwK0rfMgQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEGDCCA76gAwIBAgITHQAAAAdFhwvAgMs01AAAAAAABzAKBggqhkjOPQQDAjCB3jELMAkGA1UEBhMCSUwxEjAQBgoJkiaJk/IsZAEZFgJJTDETMBEGCgmSJomT8ixkARkWA0dPVjEWMBQGCgmSJomT8ixkARkWBkhFQUxUSDETMBEGCgmSJomT8ixkARkWA01PSDEPMA0GA1UECBMGSXNyYWVsMRIwEAYDVQQHEwlKZXJ1c2FsZW0xGzAZBgNVBAoTEk1pbmlzdHJ5IG9mIEhlYWx0aDEXMBUGA1UECxMORGlnaXRhbCBIZWFsdGgxHjAcBgNVBAMTFUNTQ0EtSGVhbHRoLURDRy1JTC0wMTAeFw0yMTA5MDUwNzE2MDBaFw0yMzA5MDUwNzE2MDBaMH8xCzAJBgNVBAYTAklMMQ8wDQYDVQQIEwZJc3JhZWwxEjAQBgNVBAcTCUplcnVzYWxlbTEbMBkGA1UEChMSTWluaXN0cnkgb2YgSGVhbHRoMRcwFQYDVQQLEw5EaWdpdGFsIEhlYWx0aDEVMBMGA1UEAxMMSUwtTkItRFNDLTAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcw+UZUnryP4rqSw+a8xQw4wLHZkcu4MDjJP7QeBUEpDt8xh4i4RSIBEJrBkAukSSobRDkwMb0dSCsWwK0rfMgaOCAbcwggGzMD4GCSsGAQQBgjcVBwQxMC8GJysGAQQBgjcVCIHfvEqGsP5shImdOoHa71aE5rZjgR6HqL9hhrfIGwIBZAIBATA6BgNVHSUEMzAxBggrBgEFBQcDAwYLKwYBBAGON49lAQMGCysGAQQBjjePZQEBBgsrBgEEAY43j2UBAjAOBgNVHQ8BAf8EBAMCB4AwSAYJKwYBBAGCNxUKBDswOTAKBggrBgEFBQcDAzANBgsrBgEEAY43j2UBAzANBgsrBgEEAY43j2UBATANBgsrBgEEAY43j2UBAjAdBgNVHQ4EFgQUwT5hHIGSYoKxJeYKXe2rSc9vQCQwHwYDVR0jBBgwFoAUBb9drdvo+jTMbWZX2BWGWxPT3uwwRwYDVR0fBEAwPjA8oDqgOIY2aHR0cDovL2NkcC5oZWFsdGguZ292LmlsL2NybC9DU0NBLUhlYWx0aC1EQ0ctSUwtMDEuY3JsMFIGCCsGAQUFBwEBBEYwRDBCBggrBgEFBQcwAoY2aHR0cDovL3BraS5oZWFsdGguZ292LmlsL3BraS9DU0NBLUhlYWx0aC1EQ0ctSUwtMDEuY3J0MAoGCCqGSM49BAMCA0gAMEUCIQCWjjvyGozH4GMhl6d81s5PolAOAXXipAvnnP6RiLGt4QIgabSTGYvdNpepTEdQ7+F8KMdiBZStUJ1utwJqVN1Ov/M=","kid":"cS/wou0g/po="},{"issuer":"C = VA O = STATO CITTA’ DEL VATICANO OU = DIREZIONE DI SANITA\' E IGIENE CN = CSCA_DGC_VA_01","subject":"C = VA O = STATO CITTA’ DEL VATICANO OU = DIREZIONE DI SANITA\' E IGIENE CN = DSC_DGC_VA_01","notbefore":1624614420000,"notafter":1687686420000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEI6Q/krjPDaHJ2WsrBzR9sGYnYjFq\\nkflAAWhJgXbXt3RuUVfJt4c53N6v9J2BE3kPqCVl9FbYrwqQ0vZ+Ps5e+Q==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICbzCCAhSgAwIBAgIIc/6LARpWk7YwCgYIKoZIzj0EAwIwdDELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFzAVBgNVBAMMDkNTQ0FfREdDX1ZBXzAxMB4XDTIxMDYyNTA5NDcwMFoXDTIzMDYyNTA5NDcwMFowczELMAkGA1UEBhMCVkExJDAiBgNVBAoMG1NUQVRPIENJVFRB4oCZIERFTCBWQVRJQ0FOTzEmMCQGA1UECxMdRElSRVpJT05FIERJIFNBTklUQScgRSBJR0lFTkUxFjAUBgNVBAMMDURTQ19ER0NfVkFfMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQjpD+SuM8NocnZaysHNH2wZidiMWqR+UABaEmBdte3dG5RV8m3hznc3q/0nYETeQ+oJWX0VtivCpDS9n4+zl75o4GQMIGNMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFHjsdxdRG2UcVpJ5tq07/6TxOa+jMB8GA1UdIwQYMBaAFL2EdVekv64Aod98sSbpzAqLftAtMAsGA1UdDwQEAwIDuDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMAoGCCqGSM49BAMCA0kAMEYCIQCedrxueUJyy8gthgOF7b2Fdv+chSkliDs1z2oOuRagWQIhAJh4vf8YxtkfC3MB+B9y1x2OwC2GRGFCtaF5WaB7K6F5","kid":"crm1HLAeaTo="},{"issuer":"C = CZ O = MZCR CN = CZ DSC CSCA 1","subject":"C = CZ O = MZCR CN = CZ DSC 1","notbefore":1620311040000,"notafter":1683383040000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3l\\nAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKUw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0AzMA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDUwNjE0MjQwMFoXDTIzMDUwNjE0MjQwMFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUIzSq5MMYg2oez/kdjVH73ZPmI3lAQZTJsLOGqhJNcahsn+m5vFLeODWFM6/hXQGSL56sIjbKMrYa17lKNAKU6NdMFswHQYDVR0OBBYEFDReRuL4VneLcO8YqdVWn2+gpPl9MB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQAZpv8/b4k+QxliHeWKAiJ34OKMEYh8xn1Dc9+55f+h0NLY4ZSelGrf2SrJIt9yhomzjOQUARqiumbuSzZMMPUNzKIRsPSa1NkfRq7y3QehG+cuhKKdLYpWErjRdp97gubCVGLXld7+iuschYCwAztKnyPof94yPgAGkdCEnTNW1z6tc33E/Fnd59nF8/JBZdSTt2uRXxFY8plasmoRzdXYASwTUyXXheZcG+KNYJ5NxYSF3LJeF81ucJ6mWkAk+MwoJXVu7VVZ6pn51JPL+YyArV2FaN8lWs9QYW2XgCuUTm4IC9T/BgVKTstr6eGQiHLOEbyE8NmLond1Bzv27ClLXEBvL9lIqJ5hJFvVWbfpNPvJAjI4z3LA7DuYgQ3ws8mf0iMW+4aOkLCd7dv0HNcUPoHUOTelgcfAzEsZuajUcH3uGwgcs2wEBdW1KfqEP8L7bgwBGC+UGe1yeGM4k7OYOnGP2SMm3Gk+MrYaqW51Fun20bcXkagDxMJh06PpDm4=","kid":"e4lH6I4iMIM="},{"issuer":"C = CZ O = MZCR CN = CZ DSC CSCA 1","subject":"C = CZ O = MZCR CN = CZ DSC 2","notbefore":1623319578000,"notafter":1686391578000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2k\\nYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIC+DCCAWCgAwIBAgIJAPCdQkQSJ0A0MA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNVBAYTAkNaMQ0wCwYDVQQKDARNWkNSMRYwFAYDVQQDDA1DWiBEU0MgQ1NDQSAxMB4XDTIxMDYxMDEwMDYxOFoXDTIzMDYxMDEwMDYxOFowLzELMAkGA1UEBhMCQ1oxDTALBgNVBAoMBE1aQ1IxETAPBgNVBAMMCENaIERTQyAyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8Dj2k2EY/UqgKsSGvIwPRhLiMa2kYm+y02Sam1DJusQJFOpbHanl9wM98U2xn9YrpPiKCXwnaSPieXyX7GskOqNdMFswHQYDVR0OBBYEFAKjMTdShDzGev/eNqlHHzJIHdXVMB8GA1UdIwQYMBaAFC/bK8h2pE3CPr4rUiBzxjSdjqnHMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBgQA3d3iNHRpsKWia1XiF5QQlKUFwcvDdtAlFhfmy99oI+ywmppys7xoeOrIKazIyAyZ3tNImPkcde0ARSvMmAzsr6T/BqxsV78htXzUoILy1z6Y8QZ8+RXcNmR79k9iqudKv5tWZ2S2ticNeo78WV6oB18oV5/hhLlkS/NQC5wZ5LJar+wEF1VaxkvG2GmooaODPgPbRutjStTamSu2Din4SRg8pIWlyCMy0qnzVDMzdYUsjvmC3myxzHevFSTs36hj1aiLxaeAmVTvCi39o6s0EBjyM8Yk2WHJS9k5EkvBcJcEx4z55RkBLKo4PJalQS1hJc62GFM3J3lyyKqecSZBn2xj5bM8UEkI+8ylHsF/D3vrjtu1MaxM9loTogvf8wu4S7DMP/yXBanmr2G4k132JbSX7goclMF2zel7kGAn2B2vUQrGM76Rqb4lkddPWCc+0dossH1zAvbOAo5+raC9xaUU00GC3wR7+30xjJtBw0JbDlSBk3l1xnGnvLehkqV8=","kid":"fNf883wPIEg="},{"issuer":"CN = Faroe Islands Health Authority CSCA v1 O = Gjaldstovan C = FO","subject":"CN = DSC_DGC_FO_345334_TEST_01 O = SJUKRAHUSVERKID C = FO","notbefore":1625755197000,"notafter":1688827197000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEyOmUr7E52s+yofKQE/TmtLQxLPEp\\nZnZMA/OL647R1ZZG+O3tA7F3CfMXmgZZV4OOjuoaAbgHh01F5MdEg1eQpg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICwTCCAmegAwIBAgIUNEcJXMYBcHdOAkMYq/Oxeh8O2hwwCgYIKoZIzj0EAwIwVDEvMC0GA1UEAwwmRmFyb2UgSXNsYW5kcyBIZWFsdGggQXV0aG9yaXR5IENTQ0EgdjExFDASBgNVBAoMC0dqYWxkc3RvdmFuMQswCQYDVQQGEwJGTzAeFw0yMTA3MDgxNDM5NTdaFw0yMzA3MDgxNDM5NTdaMEsxIjAgBgNVBAMMGURTQ19ER0NfRk9fMzQ1MzM0X1RFU1RfMDExGDAWBgNVBAoMD1NKVUtSQUhVU1ZFUktJRDELMAkGA1UEBhMCRk8wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATI6ZSvsTnaz7Kh8pAT9Oa0tDEs8SlmdkwD84vrjtHVlkb47e0DsXcJ8xeaBllXg46O6hoBuAeHTUXkx0SDV5Cmo4IBHjCCARowHwYDVR0jBBgwFoAU7jyBpuYetlF0RODQ9DAz4upqvqEwXAYDVR0gBFUwUzBRBggqgVCBPQIBATBFMEMGCCsGAQUFBwIBFjdodHRwczovL3JlcG9zaXRvcnkuc2FtbGVpa2kuZm8vbGVnYWwtcmVwb3NpdG9yeS9laGVhbHRoMBYGA1UdJQQPMA0GCysGAQQBjjePZQEBMFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwuc2FtbGVpa2kuZm8vRmFyb2UtSXNsYW5kcy1IZWFsdGgtQXV0aG9yaXR5LUNTQ0EtdjEuY3JsMB0GA1UdDgQWBBRoTJ4+NjLdr8NB6IGKfB1XhMs0kjAOBgNVHQ8BAf8EBAMCB4AwCgYIKoZIzj0EAwIDSAAwRQIhAIFSB54lOmRGpWORORdkNMCupU6c+ujY64AOdb3Sp9rNAiAXlZatIjO4ENXA4H+WJEa4ZUHRAxKFEh//IXBloU0V3w==","kid":"fNstNUxgGSI="},{"issuer":"CN = Faroe Islands Health Authority CSCA v1 O = Gjaldstovan C = FO","subject":"CN = DSC_DGC_FO_345334_VACCINATION_01 O = SJUKRAHUSVERKID C = FO","notbefore":1625755531000,"notafter":1688827531000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIp1kjKkjq85G7p7edy5EfNsWF0l4\\nXZu5Rz+nL3viEVP/qiZYWwsQ30RXMDwixcFXI2tSzfu82J31dIEGQ3Ceog==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICyTCCAm6gAwIBAgIUJUU4n5bintk3G2D7kThvmJ+NHlwwCgYIKoZIzj0EAwIwVDEvMC0GA1UEAwwmRmFyb2UgSXNsYW5kcyBIZWFsdGggQXV0aG9yaXR5IENTQ0EgdjExFDASBgNVBAoMC0dqYWxkc3RvdmFuMQswCQYDVQQGEwJGTzAeFw0yMTA3MDgxNDQ1MzFaFw0yMzA3MDgxNDQ1MzFaMFIxKTAnBgNVBAMMIERTQ19ER0NfRk9fMzQ1MzM0X1ZBQ0NJTkFUSU9OXzAxMRgwFgYDVQQKDA9TSlVLUkFIVVNWRVJLSUQxCzAJBgNVBAYTAkZPMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIp1kjKkjq85G7p7edy5EfNsWF0l4XZu5Rz+nL3viEVP/qiZYWwsQ30RXMDwixcFXI2tSzfu82J31dIEGQ3CeoqOCAR4wggEaMB8GA1UdIwQYMBaAFO48gabmHrZRdETg0PQwM+Lqar6hMFwGA1UdIARVMFMwUQYIKoFQgT0CAQEwRTBDBggrBgEFBQcCARY3aHR0cHM6Ly9yZXBvc2l0b3J5LnNhbWxlaWtpLmZvL2xlZ2FsLXJlcG9zaXRvcnkvZWhlYWx0aDAWBgNVHSUEDzANBgsrBgEEAY43j2UBAjBSBgNVHR8ESzBJMEegRaBDhkFodHRwOi8vY3JsLnNhbWxlaWtpLmZvL0Zhcm9lLUlzbGFuZHMtSGVhbHRoLUF1dGhvcml0eS1DU0NBLXYxLmNybDAdBgNVHQ4EFgQU784333ONVF7EvtIgnj6nYCOli8QwDgYDVR0PAQH/BAQDAgeAMAoGCCqGSM49BAMCA0kAMEYCIQDOLxwWGsaCNVSWy3EpEkSIqNub0Ci4kSOu/O+vvPq64gIhAK5cop6G89f+Z39b52KoyZKcFq3zLCNOdgPg1280oBnN","kid":"l8W4rhh9nTs="},{"issuer":"C = TR ST = ANKARA L = ÇANKAYA O = T.C. SAĞLIK BAKANLIĞI OU = SAĞLIK BİLGİ SİSTEMLERİ GENEL MÜDÜRLÜĞÜ CN = healthpassgwprod.saglik.gov.tr","subject":"C = TR ST = ANKARA L = ÇANKAYA O = T.C. SAĞLIK BAKANLIĞI OU = SAĞLIK BİLGİ SİSTEMLERİ GENEL MÜDÜRLÜĞÜ CN = healthpassgwuat.saglik.gov.tr","notbefore":1628103725000,"notafter":1691175725000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4gGExz9UXm77v21gaWNSjjtigr9V\\nIyGL9S92FqnF99YqS/ekrLWvW4N6fmHfUST9VJLJVaB9uP3SX1rXlfq7lg==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDZDCCAwqgAwIBAgIJAKh1+Khc/oXwMAkGByqGSM49BAEwgdIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQIDAZBTktBUkExEzARBgNVBAcMCsODwodBTktBWUExJDAiBgNVBAoMG1QuQy4gU0HDhMKeTElLIEJBS0FOTEnDhMKeSTFOMEwGA1UECwxFU0HDhMKeTElLIELDhMKwTEfDhMKwIFPDhMKwU1RFTUxFUsOEwrAgR0VORUwgTcODwpxEw4PCnFJMw4PCnMOEwp7Dg8KcMScwJQYDVQQDDB5oZWFsdGhwYXNzZ3dwcm9kLnNhZ2xpay5nb3YudHIwHhcNMjEwODA0MTkwMjA1WhcNMjMwODA0MTkwMjA1WjCB0TELMAkGA1UEBhMCVFIxDzANBgNVBAgMBkFOS0FSQTETMBEGA1UEBwwKw4PCh0FOS0FZQTEkMCIGA1UECgwbVC5DLiBTQcOEwp5MSUsgQkFLQU5MScOEwp5JMU4wTAYDVQQLDEVTQcOEwp5MSUsgQsOEwrBMR8OEwrAgU8OEwrBTVEVNTEVSw4TCsCBHRU5FTCBNw4PCnETDg8KcUkzDg8Kcw4TCnsODwpwxJjAkBgNVBAMMHWhlYWx0aHBhc3Nnd3VhdC5zYWdsaWsuZ292LnRyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4gGExz9UXm77v21gaWNSjjtigr9VIyGL9S92FqnF99YqS/ekrLWvW4N6fmHfUST9VJLJVaB9uP3SX1rXlfq7lqOByDCBxTAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFCswn+ChTJKoWppyEWvYjIGyDJybMB8GA1UdIwQYMBaAFPbenUPEZ1KYGCZLyK4/nzCJVz+bMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9jcmwuZXhhbXBsZWRvbWFpbi5leGFtcGxlL0NSTC9DU0NBLmNybDAzBgNVHSUELDAqBgwrBgEEAQCON49lAQEGDCsGAQQBAI43j2UBAgYMKwYBBAEAjjePZQEDMAkGByqGSM49BAEDSQAwRgIhAMdvZvXW4yhE0096flq4umtUExjaOSOM6bob8cMsriqbAiEAv5b1d/EFA0rM9LYK1jt49+bSOgGxcxgs0jAOYzAjMrU=","kid":"gEIK4Q/lAG0="},{"issuer":"C = RO O = Ministerul Sanatatii CN = AC Ministerul Sanatatii","subject":"C = RO O = Ministerul Sanatatii CN = BSC","notbefore":1624023359000,"notafter":1782135359000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1Di\\nHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5cw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIElDCCAnygAwIBAgIFFhg4IyAwDQYJKoZIhvcNAQELBQAwTjELMAkGA1UEBhMCUk8xHTAbBgNVBAoMFE1pbmlzdGVydWwgU2FuYXRhdGlpMSAwHgYDVQQDDBdBQyBNaW5pc3RlcnVsIFNhbmF0YXRpaTAeFw0yMTA2MTgxMzM1NTlaFw0yNjA2MjIxMzM1NTlaMDoxCzAJBgNVBAYTAlJPMR0wGwYDVQQKDBRNaW5pc3RlcnVsIFNhbmF0YXRpaTEMMAoGA1UEAwwDQlNDMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEIQ5LJGhrs3m//HC60//4N8WDL1DiHJRUTirld4U9ebBYYsTtxWknGG0Uton12x8yDHm7wm7aRoFhd5MxW4G5c6OCAVYwggFSMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUVyznYDPTSIjlI6bI6W+mgQc9JjwwHwYDVR0jBBgwFoAUMuKQDubF6PpGuKuAPWshl3a4SCEwGgYDVR0RBBMwEaQPMA0xCzAJBgNVBAcMAlJPMBoGA1UdEgQTMBGkDzANMQswCQYDVQQHDAJSTzAwBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vY2Euc3RzaXNwLnJvL2NybC9ER0MuY3JsMDMGA1UdJQQsMCoGDCsGAQQBAI43j2UBAQYMKwYBBAEAjjePZQECBgwrBgEEAQCON49lAQMwNAYIKwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vY2Euc3RzaXNwLnJvOjI1NjAwKwYDVR0QBCQwIoAPMjAyMTA0MDEwMDAwMDBagQ8yMDI2MDcwMTAwMDAwMFowDQYJKoZIhvcNAQELBQADggIBAFLRYkrv2Jp8XNhFJbMUviTLgPsDgcFDQwzdU4RH/KY3vjlIqxI/o40wct9QrN5FqRDTVIYD4Z4vLy8vhigh+DrdWfaBK+SGw11ZwigDem0Unjpqz0aFTotv8hry5n2jY/gf6YpU8pMd3t0dNF5Je5hrY1YLPJdt+BMWAizRwSAaa/OqTDP2blNqebrUTpsiXnxMXRiIHZl596RiSVsiwI/4PhU/HhfbMCg4kO8YUtgTBzWvBGohG0Znyi2bQFhwWEa1jZc2YfsIqWu4hwGz0zWOKMyx5ULZS3qkQ0EIHH2XrOx2ZxEc/5vZT27nTlKW0FCtBWeB36rLy/9dYbm+wjB86gvjYEQLAoFSY5GyCxVHaQE/HK8nFqM0oFq/4u0D7ZN9o6N6i4EfGhSRye0NCld3iaM9JdKmQNoCE9fd9OfMG9HlrQbIZvsjZ3btvtiC/R/LoyvrKz2EVbePZIVj03+GelCI0/jWq+w9YK3JIGhBfMjvCK/QnphOm0otuiuEY+0QYPKIx/c8zU5H4cEWp4NamsIRTpP13Yazh4NVjCNAU+J1rbcwGkJIRXHpL6QqL1WNt9zZSMXvw+vBoBq8yBqeLGlxPr+DFL79xhRBZnpp5mn2vUmR77k1745VwwGVMw/t9K28y5HpLcTp49f3wR0bDC+K0n/8PdcrhOXh+DTP","kid":"hA1+pwEOxCI="},{"issuer":"C = AL O = NAIS CN = NAIS Class 3 Certification Authority","subject":"C = AL O = Ministria e Shendetesise dhe Mbrojtjes Sociale OU = Production CN = Ministria e Shendetesise dhe Mbrojtjes Sociale","notbefore":1631192067000,"notafter":1662728067000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENFtonAma5ngnltfk78rprtlz8Cue\\n6/t2XzvM/OR3wOn/1nD4QDWTP0KjGsFtiJ80Aed5gQ0JbMXUL8M2mQyQPw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIETzCCAzegAwIBAgILQ/9i89Nx5cy6y84wDQYJKoZIhvcNAQELBQAwSzELMAkGA1UEBhMCQUwxDTALBgNVBAoTBE5BSVMxLTArBgNVBAMTJE5BSVMgQ2xhc3MgMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0yMTA5MDkxMjU0MjdaFw0yMjA5MDkxMjU0MjdaMIGUMQswCQYDVQQGEwJBTDE3MDUGA1UECgwuTWluaXN0cmlhIGUgU2hlbmRldGVzaXNlIGRoZSBNYnJvanRqZXMgU29jaWFsZTETMBEGA1UECwwKUHJvZHVjdGlvbjE3MDUGA1UEAwwuTWluaXN0cmlhIGUgU2hlbmRldGVzaXNlIGRoZSBNYnJvanRqZXMgU29jaWFsZTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDRbaJwJmuZ4J5bX5O/K6a7Zc/Arnuv7dl87zPzkd8Dp/9Zw+EA1kz9CoxrBbYifNAHneYENCWzF1C/DNpkMkD+jggGzMIIBrzBmBggrBgEFBQcBAQRaMFgwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmFrc2hpLmdvdi5hbDAwBggrBgEFBQcwAoYkaHR0cDovL2NlcnRzLmFrc2hpLmdvdi5hbC9jbGFzczMuY3J0MA4GA1UdDwEB/wQEAwIGwDAfBgNVHSMEGDAWgBSHJqj72ytRmznQmNb0xjNWR1zYBTAdBgNVHQ4EFgQUomIXCcGEr8gLcxPBp8qNqsAwuywwSwYDVR0gBEQwQjBABgwrBgEEAYKxbAoBAQMwMDAuBggrBgEFBQcCARYiaHR0cDovL3d3dy5ha3NoaS5nb3YuYWwvcmVwb3NpdG9yeTCBpwYDVR0fBIGfMIGcMIGZoIGWoIGThiJodHRwOi8vY3JsLmFrc2hpLmdvdi5hbC9jbGFzczMuY3Jshm1sZGFwOi8vbGRhcC5ha3NoaS5nb3YuYWwvQ049TkFJUyBDbGFzcyAzIENlcnRpZmljYXRpb24gQXV0aG9yaXR5LE89TkFJUyxDPUFMP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3Q7YmluYXJ5MA0GCSqGSIb3DQEBCwUAA4IBAQAxX1oVSlIui82fALGFk0YQK5UOFN59Bk+dNovoYLH7rewnK3Zu1C8xJivs/ncsvb08J/B14Iw2DlIORCNMmfXaCIEeRwUepPrC0T9gBMFZGf+nOH1YR19YA+24gxSxlsU6t8/lCwMY2HfCUxEKvHqr1jp3lgim8y+IiMsA9ISr7J8YDwue6Zvpr1zPQN+nd4xB1ZuxoM64dCvzaV5mA/D3P7Rqf5c1+rt5EqztjVOiNpFvH+xSEp9veAJxRDG37kHe7brgb7CGLdBQw/pib8kgfDusUMIjuXDN4MzjVUtM3G6s6DfoJ/QIf5CGq2lJ9bdxORh9PICVxVxcUqpwD+r2","kid":"hHffSLS1AIU="},{"issuer":"C = AL O = NAIS CN = NAIS Class 3 Certification Authority","subject":"C = AL O = Ministria e Shendetesise dhe Mbrojtjes Sociale OU = Production CN = Ministria e Shendetesise dhe Mbrojtjes Sociale","notbefore":1634731214000,"notafter":1666267214000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEkyi6sf8k8/kk2KjTBNiIVFpnIeZc\\nj4oUXwV8kk5D6BySdIUx9jSD5BuSiUyXKmIghKHPvpio9M7nYklZCdur0w==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIEUDCCAzigAwIBAgIMQwFSlIJziU/M83ZyMA0GCSqGSIb3DQEBCwUAMEsxCzAJBgNVBAYTAkFMMQ0wCwYDVQQKEwROQUlTMS0wKwYDVQQDEyROQUlTIENsYXNzIDMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMjExMDIwMTIwMDE0WhcNMjIxMDIwMTIwMDE0WjCBlDELMAkGA1UEBhMCQUwxNzA1BgNVBAoMLk1pbmlzdHJpYSBlIFNoZW5kZXRlc2lzZSBkaGUgTWJyb2p0amVzIFNvY2lhbGUxEzARBgNVBAsMClByb2R1Y3Rpb24xNzA1BgNVBAMMLk1pbmlzdHJpYSBlIFNoZW5kZXRlc2lzZSBkaGUgTWJyb2p0amVzIFNvY2lhbGUwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASTKLqx/yTz+STYqNME2IhUWmch5lyPihRfBXySTkPoHJJ0hTH2NIPkG5KJTJcqYiCEoc++mKj0zudiSVkJ26vTo4IBszCCAa8wZgYIKwYBBQUHAQEEWjBYMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5ha3NoaS5nb3YuYWwwMAYIKwYBBQUHMAKGJGh0dHA6Ly9jZXJ0cy5ha3NoaS5nb3YuYWwvY2xhc3MzLmNydDAOBgNVHQ8BAf8EBAMCBsAwHwYDVR0jBBgwFoAUhyao+9srUZs50JjW9MYzVkdc2AUwHQYDVR0OBBYEFGPWnU1pbP9aLGlfxoOY//lobEDxMEsGA1UdIAREMEIwQAYMKwYBBAGCsWwKAQEDMDAwLgYIKwYBBQUHAgEWImh0dHA6Ly93d3cuYWtzaGkuZ292LmFsL3JlcG9zaXRvcnkwgacGA1UdHwSBnzCBnDCBmaCBlqCBk4YiaHR0cDovL2NybC5ha3NoaS5nb3YuYWwvY2xhc3MzLmNybIZtbGRhcDovL2xkYXAuYWtzaGkuZ292LmFsL0NOPU5BSVMgQ2xhc3MgMyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSxPPU5BSVMsQz1BTD9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0O2JpbmFyeTANBgkqhkiG9w0BAQsFAAOCAQEApvfjN0ZeYCl6OH8HmJSG4UcL8KrVB1uqa/b0OPBihreOzVN0MyCRCKqUY+JJBc2S1k8OssCZuconsPLdTW2UkDxP5oFrgnzBN4Tor+3EMq2d/TTQnhp+872m2B4Gck0bRMBn0N19MbIrdii5joNir9pcHJgU5I/fTTehL9wtZGoL1o5cUUu9S+hYMIP0uNHP6NjxQhwZ+lpleNCUsYT4o4icvnbW3EaB84KBImCfezIu3Q+MdgwWmGpZOXUVoiX9UiyWrlEnzNzictXgOSud5xJ8E9ZUezO8u1UMRKY82Xi15KM6FML2qJ6teTC8iMjXaDxhVZSDAvtXclLKqIvAzg==","kid":"udrotE0n7i0="},{"issuer":"2.5.4.97 = NRTAD-U129638U O = SAAS CN = DGCG C = AD","subject":"C = AD ST = Andorra L = Escaldes-Engordany O = SAAS OU = SSII CN = dsc","notbefore":1630843042000,"notafter":1693915042000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGvHqf7SYtlvevOyA/no+i1/WcmS0\\nbOYP1bgP+pJTjTkBOpQi+f7Ie6415WFl9aoqzMmKRJmE6Ur4H+b9Vba7FA==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDNTCCAh2gAwIBAgIUPlH4JERPPj3GoUrvEpBgHChJmOcwDQYJKoZIhvcNAQELBQAwRDEXMBUGA1UEYQwOTlJUQUQtVTEyOTYzOFUxDTALBgNVBAoMBFNBQVMxDTALBgNVBAMMBERHQ0cxCzAJBgNVBAYTAkFEMB4XDTIxMDkwNTExNTcyMloXDTIzMDkwNTExNTcyMlowaDELMAkGA1UEBhMCQUQxEDAOBgNVBAgMB0FuZG9ycmExGzAZBgNVBAcMEkVzY2FsZGVzLUVuZ29yZGFueTENMAsGA1UECgwEU0FBUzENMAsGA1UECwwEU1NJSTEMMAoGA1UEAwwDZHNjMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEGvHqf7SYtlvevOyA/no+i1/WcmS0bOYP1bgP+pJTjTkBOpQi+f7Ie6415WFl9aoqzMmKRJmE6Ur4H+b9Vba7FKOBxTCBwjAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFOZE/2bkC1HwzFPPcZQJ82uVyOTTMB8GA1UdIwQYMBaAFGiVtMJNO5SQY5dOAz9JNlmRi90OMD4GA1UdHwQ3MDUwM6AxoC+GLWh0dHA6Ly9jcmwuZXhhbXBsZWRvbWFpbi5leGFtcGxlL0NSTC9DU0NBLmNybDAwBgNVHSUEKTAnBgsrBgEEAY43j2UBAQYLKwYBBAGON49lAQIGCysGAQQBjjePZQEDMA0GCSqGSIb3DQEBCwUAA4IBAQBB7UNVlexZwtC19yXkui85kfGT0RT0CqfLAvFPXy22Cy0/Al1OWItlWiN7z4RKSfhXel9jBPkowWjm4TH/Z9SS558sa/CQohYUaPlgR2UluMhbDVUsyLicQbqVx571GIA3BLoInJsFnp3Srv+XgP8ic2T72/mXwxnHCg1Jra2X8W0GGaxrUuvf+dxnPhDTeBNVqmYgk6q1vS3Nj3yugkgmg2xXNIWpcFjeC6/FVsTEORxi4SOjjn5Omhb9uZLeq11hXx04fORw9ctzppi5P5TDNDdmqa5iLRVsgS7Z7+Fp7V4QmfiRsVjyX+2QadvREEIbgcw8Y9d1j1qIXrCYwhCE","kid":"mqWkXpNR0Rk="},{"issuer":"C = MD ST = Republic of Moldova L = Chisinau O = STISC OU = CCCP CN = Republic of Moldova National CSCA 01","subject":"C = MD ST = Republic of Moldova L = Chisinau O = Ministry of Health CN = Republic of Moldova DSC 01","notbefore":1635269461000,"notafter":1698341461000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEurid6V6ennaGMYu1h8Q2PFJ7eMkj\\n7FiBzBEiQMnNb/YzAj60g6cnvX02AB+E48Hoz4amNlralKXL3CvjaxHGLw==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICljCCAjygAwIBAgIUfKVPCJ2DSOQlBmu5AcgWL+pt9wkwCgYIKoZIzj0EAwIwgYwxCzAJBgNVBAYTAk1EMRwwGgYDVQQIDBNSZXB1YmxpYyBvZiBNb2xkb3ZhMREwDwYDVQQHDAhDaGlzaW5hdTEOMAwGA1UECgwFU1RJU0MxDTALBgNVBAsMBENDQ1AxLTArBgNVBAMMJFJlcHVibGljIG9mIE1vbGRvdmEgTmF0aW9uYWwgQ1NDQSAwMTAeFw0yMTEwMjYxNzMxMDFaFw0yMzEwMjYxNzMxMDFaMIGAMQswCQYDVQQGEwJNRDEcMBoGA1UECAwTUmVwdWJsaWMgb2YgTW9sZG92YTERMA8GA1UEBwwIQ2hpc2luYXUxGzAZBgNVBAoMEk1pbmlzdHJ5IG9mIEhlYWx0aDEjMCEGA1UEAwwaUmVwdWJsaWMgb2YgTW9sZG92YSBEU0MgMDEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS6uJ3pXp6edoYxi7WHxDY8Unt4ySPsWIHMESJAyc1v9jMCPrSDpye9fTYAH4TjwejPhqY2WtqUpcvcK+NrEcYvo4GFMIGCMA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUtk8/4i4hj2sDFnz+oTBPM3gsriUwHwYDVR0jBBgwFoAU5leuhgfUUggxBYNy0n+tKWe46lIwMAYDVR0lBCkwJwYLKwYBBAGON49lAQEGCysGAQQBjjePZQECBgsrBgEEAY43j2UBAzAKBggqhkjOPQQDAgNIADBFAiA0P/CM3hswqmbtlgRCGfsMs2DCmPGQwoqVJYoDFHyx/wIhAM2PdlwhGVVyeVugqUXabGMmLNwchyNqMNdABoH3eI9q","kid":"p64sutu48UA="},{"issuer":"C = SM ST = SM L = City of San Marino O = San Marino Innovation OU = DGCOperations CN = CSCA_DGC_SM_01","subject":"C = SM ST = San Marino L = City of San Marino O = Istituto per la Sicurezza Sociale OU = DGCOperations CN = DSC_CSR_DGC_SM_01 E = smdcc@iss.sm","notbefore":1623321959000,"notafter":1686393959000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEH2+GOTdCPhSUdDZmaM7hq/hRJkZC\\nd3wPyOwB8lS30s4N81r4XFpv1Yev+1bfB4A173DByhZyIKkdnZc/FfaAXQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIIDBTCCAqugAwIBAgIUeATFyjMaoiT84DKJmiNU72+mkVgwCgYIKoZIzj0EAwIwgYgxCzAJBgNVBAYTAlNNMQswCQYDVQQIDAJTTTEbMBkGA1UEBwwSQ2l0eSBvZiBTYW4gTWFyaW5vMR4wHAYDVQQKDBVTYW4gTWFyaW5vIElubm92YXRpb24xFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxFzAVBgNVBAMMDkNTQ0FfREdDX1NNXzAxMB4XDTIxMDYxMDEwNDU1OVoXDTIzMDYxMDEwNDU1OVowgb0xCzAJBgNVBAYTAlNNMRMwEQYDVQQIDApTYW4gTWFyaW5vMRswGQYDVQQHDBJDaXR5IG9mIFNhbiBNYXJpbm8xKzApBgNVBAoMIklzdGl0dXRvIHBlciBsYSBTaWN1cmV6emEgU29jaWFsZSAxFjAUBgNVBAsMDURHQ09wZXJhdGlvbnMxGjAYBgNVBAMMEURTQ19DU1JfREdDX1NNXzAxMRswGQYJKoZIhvcNAQkBFgxzbWRjY0Bpc3Muc20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQfb4Y5N0I+FJR0NmZozuGr+FEmRkJ3fA/I7AHyVLfSzg3zWvhcWm/Vh6/7Vt8HgDXvcMHKFnIgqR2dlz8V9oBdo4G7MIG4MA4GA1UdDwEB/wQEAwIHgDAdBgNVHQ4EFgQUXBEgxHdIds6E5XLz7K3xKYM1ZYcwHwYDVR0jBBgwFoAU3R4p+KmXTKHb/B2ZD1s9d0P+tlUwMQYDVR0fBCowKDAmoCSgIoYgaHR0cDovL3d3dy5zbWRjYy5zbS9DUkwvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiAqKNSdqhkdyZaMENowSdL1xU3Cq/A/u6PaO90ApEBVfgIhAOaFehZJJsm5o3LAhZ+q3bWBZHbB7nsFbTzvowcNyc2K","kid":"r9RtWK9x7dM="},{"issuer":"C = GR CN = grnet.gr","subject":"C = GR CN = grnet.gr","notbefore":1621881325000,"notafter":1684953325000,"pubkey":"-----BEGIN PUBLIC KEY-----\\nMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFP\\nen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEQ==\\n-----END PUBLIC KEY-----\\n","rawX509data":"MIICBjCCAaygAwIBAgIUKhlB7j/znUbHbqEQfJErud8AyPMwCgYIKoZIzj0EAwIwIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMB4XDTIxMDUyNDE4MzUyNVoXDTIzMDUyNDE4MzUyNVowIDELMAkGA1UEBhMCR1IxETAPBgNVBAMMCGdybmV0LmdyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEaI7Y+lpY9cv5h5gKDrAzpkhl5bFPen/ohAMuJXU4uFfQu0UnSDCFt/bHTWcqKxYcik8YfnF+UZSWOKE3MsllEaOBwzCBwDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFKfRIrjTBVN2/tmTt8I32yrVl3DRMB8GA1UdIwQYMBaAFHAWm9K/JxbEXkf7XcqhKPGmpDK9MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHBzOi8vY3JsLmRnYy5zZXJ2aWNlcy5nb3YuZ3IvQ1NDQS5jcmwwMwYDVR0lBCwwKgYMKwYBBAEAjjePZQEBBgwrBgEEAQCON49lAQIGDCsGAQQBAI43j2UBAzAKBggqhkjOPQQDAgNIADBFAiBdWbGhPUZmHxMV9eXlVEkLRY+zGdCsKVxgAMk2JYqU8AIhANkXZhiDVPD5IDiEw3Z3r0MdBxx7jy6rQzBj/K4OSgCl","kid":"vvYa1vaWkGg="}]}');class u{static instance=new u;initialized=!1;certInfos=[];async getCertInfos(){if(!this.initialized){this.initialized=!0;const t=h.$;this.certInfos.push(...t)}return this.certInfos}}class c{protected_;unprotected;payload;signatures;static async decodeCborAsync(t){return new Promise(((e,r)=>{i.decodeFirst(t,(function(t,i){if(t)return r("failed cbor: "+t),null;e(i)}))}))}static async valueOf(t){return new Promise(((e,r)=>{0==t.indexOf("HC1:")&&(t=t.substring(4));const n=o().decode(t);a().inflate(n,(function(t,n){t?r("failed cose1: "+t):i.decodeFirst(n,(function(t,i){if(t)return void r("failed cose1: "+t);const n=i,o=n.value[0],s=n.value[1],a=n.value[2],h=n.value[3],u=new c(o,s,a,h);e(u)}))}))}))}constructor(t,e,r,i){this.protected_=t,this.unprotected=e,this.payload=r,this.signatures=i}makeDataForVerification(){const t=i.encode(["Signature1",this.protected_]),e=i.encode([this.payload]),r=new Uint8Array(t.length+e.length);for(let e=0,i=t.length;e{0==t.indexOf("HC1:")&&(t=t.substring(4));const n=o().decode(t);a().inflate(n,(function(t,n){const o=i;try{o.decodeFirst(n,(function(t,n){if(t)return void r(t);const o=n.toJSON().value[2];i.decodeFirst(o,(function(t,i){if(t)return void r(t);const n=i.get(-260).get(1);console.log(JSON.stringify(n,null,4)),e(n)}))}))}catch(t){r(t)}}))}))}static async validate(t,e){const r=await c.valueOf(t);if(!r)return null;const i=r.makeDataForVerification(),n=l.Buffer.from(r.encodeSignature(r.signatures)).toString("hex");var o=await u.instance.getCertInfos();if(e?.explicitCerts&&(o=[...e?.explicitCerts]),e?.certFilter){const t=o.length;(o=o.filter(e?.certFilter)).length!=t&&console.info("#"+(t-o.length)+" of "+t+" certifcates removed by filter")}for(let t=0,e=o.length;t=r.notbefore&&t<=r.notafter)return r}}catch(i){console.warn("unable to handle cert "+(t+1)+" of "+e+": "+r.subject+": "+i)}}throw"Not matching certificate found"}}"undefined"!=typeof window&&(window.EuDgc_parse=f.parse,window.EuDgc_validate=f.validate),console.log("eudgc.ts"),console.log("EUDGC by Scopevisio AG")},4927:(t,e,r)=>{function i(t){try{if(!r.g.localStorage)return!1}catch(t){return!1}var e=r.g.localStorage[t];return null!=e&&"true"===String(e).toLowerCase()}t.exports=function(t,e){if(i("noDeprecation"))return t;var r=!1;return function(){if(!r){if(i("throwDeprecation"))throw new Error(e);i("traceDeprecation")?console.trace(e):console.warn(e),r=!0}return t.apply(this,arguments)}}},384:t=>{t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},5955:(t,e,r)=>{"use strict";var i=r(2584),n=r(8662),o=r(6430),s=r(5692);function a(t){return t.call.bind(t)}var h="undefined"!=typeof BigInt,u="undefined"!=typeof Symbol,c=a(Object.prototype.toString),l=a(Number.prototype.valueOf),d=a(String.prototype.valueOf),f=a(Boolean.prototype.valueOf);if(h)var A=a(BigInt.prototype.valueOf);if(u)var g=a(Symbol.prototype.valueOf);function M(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function B(t){return"[object Map]"===c(t)}function w(t){return"[object Set]"===c(t)}function E(t){return"[object WeakMap]"===c(t)}function p(t){return"[object WeakSet]"===c(t)}function m(t){return"[object ArrayBuffer]"===c(t)}function y(t){return"undefined"!=typeof ArrayBuffer&&(m.working?m(t):t instanceof ArrayBuffer)}function b(t){return"[object DataView]"===c(t)}function Q(t){return"undefined"!=typeof DataView&&(b.working?b(t):t instanceof DataView)}e.isArgumentsObject=i,e.isGeneratorFunction=n,e.isTypedArray=s,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):s(t)||Q(t)},e.isUint8Array=function(t){return"Uint8Array"===o(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===o(t)},e.isUint16Array=function(t){return"Uint16Array"===o(t)},e.isUint32Array=function(t){return"Uint32Array"===o(t)},e.isInt8Array=function(t){return"Int8Array"===o(t)},e.isInt16Array=function(t){return"Int16Array"===o(t)},e.isInt32Array=function(t){return"Int32Array"===o(t)},e.isFloat32Array=function(t){return"Float32Array"===o(t)},e.isFloat64Array=function(t){return"Float64Array"===o(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===o(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===o(t)},B.working="undefined"!=typeof Map&&B(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(B.working?B(t):t instanceof Map)},w.working="undefined"!=typeof Set&&w(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(w.working?w(t):t instanceof Set)},E.working="undefined"!=typeof WeakMap&&E(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(E.working?E(t):t instanceof WeakMap)},p.working="undefined"!=typeof WeakSet&&p(new WeakSet),e.isWeakSet=function(t){return p(t)},m.working="undefined"!=typeof ArrayBuffer&&m(new ArrayBuffer),e.isArrayBuffer=y,b.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&b(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=Q;var I="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function C(t){return"[object SharedArrayBuffer]"===c(t)}function D(t){return void 0!==I&&(void 0===C.working&&(C.working=C(new I)),C.working?C(t):t instanceof I)}function N(t){return M(t,l)}function v(t){return M(t,d)}function G(t){return M(t,f)}function R(t){return h&&M(t,A)}function Y(t){return u&&M(t,g)}e.isSharedArrayBuffer=D,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===c(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===c(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===c(t)},e.isGeneratorObject=function(t){return"[object Generator]"===c(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===c(t)},e.isNumberObject=N,e.isStringObject=v,e.isBooleanObject=G,e.isBigIntObject=R,e.isSymbolObject=Y,e.isBoxedPrimitive=function(t){return N(t)||v(t)||G(t)||R(t)||Y(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(y(t)||D(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach((function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})}))},9539:(t,e,r)=>{var i=r(4155),n=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},i=0;i=n)return t;switch(t){case"%s":return String(i[r++]);case"%d":return Number(i[r++]);case"%j":try{return JSON.stringify(i[r++])}catch(t){return"[Circular]"}default:return t}})),a=i[r];r=3&&(i.depth=arguments[2]),arguments.length>=4&&(i.colors=arguments[3]),M(r)?i.showHidden=r:r&&e._extend(i,r),p(i.showHidden)&&(i.showHidden=!1),p(i.depth)&&(i.depth=2),p(i.colors)&&(i.colors=!1),p(i.customInspect)&&(i.customInspect=!0),i.colors&&(i.stylize=c),d(i,t,i.depth)}function c(t,e){var r=u.styles[e];return r?"["+u.colors[r][0]+"m"+t+"["+u.colors[r][1]+"m":t}function l(t,e){return t}function d(t,r,i){if(t.customInspect&&r&&I(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var n=r.inspect(i,t);return E(n)||(n=d(t,n,i)),n}var o=function(t,e){if(p(e))return t.stylize("undefined","undefined");if(E(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return w(e)?t.stylize(""+e,"number"):M(e)?t.stylize(""+e,"boolean"):B(e)?t.stylize("null","null"):void 0}(t,r);if(o)return o;var s=Object.keys(r),a=function(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),Q(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return f(r);if(0===s.length){if(I(r)){var h=r.name?": "+r.name:"";return t.stylize("[Function"+h+"]","special")}if(m(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(b(r))return t.stylize(Date.prototype.toString.call(r),"date");if(Q(r))return f(r)}var u,c="",l=!1,y=["{","}"];return g(r)&&(l=!0,y=["[","]"]),I(r)&&(c=" [Function"+(r.name?": "+r.name:"")+"]"),m(r)&&(c=" "+RegExp.prototype.toString.call(r)),b(r)&&(c=" "+Date.prototype.toUTCString.call(r)),Q(r)&&(c=" "+f(r)),0!==s.length||l&&0!=r.length?i<0?m(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),u=l?function(t,e,r,i,n){for(var o=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(u,c,y)):y[0]+c+y[1]}function f(t){return"["+Error.prototype.toString.call(t)+"]"}function A(t,e,r,i,n,o){var s,a,h;if((h=Object.getOwnPropertyDescriptor(e,n)||{value:e[n]}).get?a=h.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):h.set&&(a=t.stylize("[Setter]","special")),G(i,n)||(s="["+n+"]"),a||(t.seen.indexOf(h.value)<0?(a=B(r)?d(t,h.value,null):d(t,h.value,r-1)).indexOf("\n")>-1&&(a=o?a.split("\n").map((function(t){return" "+t})).join("\n").substr(2):"\n"+a.split("\n").map((function(t){return" "+t})).join("\n")):a=t.stylize("[Circular]","special")),p(s)){if(o&&n.match(/^\d+$/))return a;(s=JSON.stringify(""+n)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function g(t){return Array.isArray(t)}function M(t){return"boolean"==typeof t}function B(t){return null===t}function w(t){return"number"==typeof t}function E(t){return"string"==typeof t}function p(t){return void 0===t}function m(t){return y(t)&&"[object RegExp]"===C(t)}function y(t){return"object"==typeof t&&null!==t}function b(t){return y(t)&&"[object Date]"===C(t)}function Q(t){return y(t)&&("[object Error]"===C(t)||t instanceof Error)}function I(t){return"function"==typeof t}function C(t){return Object.prototype.toString.call(t)}function D(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r=i.pid;s[t]=function(){var i=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,i)}}else s[t]=function(){};return s[t]},e.inspect=u,u.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},u.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(5955),e.isArray=g,e.isBoolean=M,e.isNull=B,e.isNullOrUndefined=function(t){return null==t},e.isNumber=w,e.isString=E,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=p,e.isRegExp=m,e.types.isRegExp=m,e.isObject=y,e.isDate=b,e.types.isDate=b,e.isError=Q,e.types.isNativeError=Q,e.isFunction=I,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(384);var N=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function v(){var t=new Date,e=[D(t.getHours()),D(t.getMinutes()),D(t.getSeconds())].join(":");return[t.getDate(),N[t.getMonth()],e].join(" ")}function G(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){console.log("%s - %s",v(),e.format.apply(e,arguments))},e.inherits=r(5717),e._extend=function(t,e){if(!e||!y(e))return t;for(var r=Object.keys(e),i=r.length;i--;)t[r[i]]=e[r[i]];return t};var R="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function Y(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(R&&t[R]){var e;if("function"!=typeof(e=t[R]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,R,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,i=new Promise((function(t,i){e=t,r=i})),n=[],o=0;o{"use strict";var i=r(9804),n=r(6314),o=r(1924),s=o("Object.prototype.toString"),a=r(1405)()&&"symbol"==typeof Symbol.toStringTag,h=n(),u=o("String.prototype.slice"),c={},l=r(4079),d=Object.getPrototypeOf;a&&l&&d&&i(h,(function(t){if("function"==typeof r.g[t]){var e=new r.g[t];if(!(Symbol.toStringTag in e))throw new EvalError("this engine has support for Symbol.toStringTag, but "+t+" does not have the property! Please report this.");var i=d(e),n=l(i,Symbol.toStringTag);if(!n){var o=d(i);n=l(o,Symbol.toStringTag)}c[t]=n.get}}));var f=r(5692);t.exports=function(t){return!!f(t)&&(a?function(t){var e=!1;return i(c,(function(r,i){if(!e)try{var n=r.call(t);n===i&&(e=n)}catch(t){}})),e}(t):u(s(t),8,-1))}},950:()=>{},6601:()=>{},9214:()=>{},8623:()=>{},7748:()=>{},5568:()=>{},6619:()=>{},7108:()=>{},2361:()=>{},4616:()=>{}},e={};function r(i){var n=e[i];if(void 0!==n)return n.exports;var o=e[i]={id:i,loaded:!1,exports:{}};return t[i].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var i in e)r.o(e,i)&&!r.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),r(8677)})(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYXBpLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9idWZmZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9iYXNlL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9ub2RlLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9yZXBvcnRlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2NvbnN0YW50cy9kZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9jb25zdGFudHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9kZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2RlY29kZXJzL3BlbS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL2Rlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZW5jb2RlcnMvcGVtLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2FzbjEuanMvbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9hc3NlcnQvYnVpbGQvYXNzZXJ0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Fzc2VydC9idWlsZC9pbnRlcm5hbC9hc3NlcnQvYXNzZXJ0aW9uX2Vycm9yLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Fzc2VydC9idWlsZC9pbnRlcm5hbC9lcnJvcnMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXNzZXJ0L2J1aWxkL2ludGVybmFsL3V0aWwvY29tcGFyaXNvbnMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYXZhaWxhYmxlLXR5cGVkLWFycmF5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9iYXNlNDUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYmFzZTQ1L2xpYi9iYXNlNDUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYmFzZTY0LWpzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2JpZ251bWJlci5qcy9iaWdudW1iZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYm4uanMvbGliL2JuLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3JhbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYWVzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2F1dGhDaXBoZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9kZWNyeXB0ZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvZW5jcnlwdGVyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2doYXNoLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2luY3IzMi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jYmMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2ZiLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYjEuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2ZiOC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jdHIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvZWNiLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL29mYi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9zdHJlYW1DaXBoZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1jaXBoZXIvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWRlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWRlcy9tb2Rlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXJzYS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ24vYWxnb3MuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2Jyb3dzZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2Jyb3dzZXIvc2lnbi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ24vYnJvd3Nlci92ZXJpZnkuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL2xpYi9iaW5kaW5nLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktemxpYi9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi91dGlscy9jb21tb24uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2FkbGVyMzIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXpsaWIvbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvY3JjMzIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2RlZmxhdGUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2luZmZhc3QuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2luZmxhdGUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2luZnRyZWVzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktemxpYi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9tZXNzYWdlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXpsaWIvbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvdHJlZXMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS16bGliL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL3pzdHJlYW0uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvYnVmZmVyLXhvci9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9idWZmZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvY2FsbC1iaW5kL2NhbGxCb3VuZC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jYWxsLWJpbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvY2Jvci13ZWIvZGlzdC9jYm9yLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NpcGhlci1iYXNlL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1lY2RoL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvY3JlYXRlLWVjZGgvbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jcmVhdGUtaGFzaC9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1oYXNoL21kNS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jcmVhdGUtaG1hYy9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1obWFjL2xlZ2FjeS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9jcnlwdG8tYnJvd3NlcmlmeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZWZpbmUtcHJvcGVydGllcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9jYmMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvY2lwaGVyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2Rlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9lZGUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9kaWZmaWUtaGVsbG1hbi9saWIvZGguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbGliL2dlbmVyYXRlUHJpbWUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Jhc2UuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2Vkd2FyZHMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9tb250LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZS9zaG9ydC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmVzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWMva2V5LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9zaWduYXR1cmUuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lZGRzYS9rZXkuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL3NpZ25hdHVyZS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvcHJlY29tcHV0ZWQvc2VjcDI1NmsxLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy91dGlscy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9lbGxpcHRpYy9ub2RlX21vZHVsZXMvYm4uanMvbGliL2JuLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VzLWFic3RyYWN0L2hlbHBlcnMvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2VzNi1vYmplY3QtYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2V2ZW50cy9ldmVudHMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZXZwX2J5dGVzdG9rZXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZm9yZWFjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9mdW5jdGlvbi1iaW5kL2ltcGxlbWVudGF0aW9uLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2Z1bmN0aW9uLWJpbmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvZ2V0LWludHJpbnNpYy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXMtc3ltYm9scy9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXMtc3ltYm9scy9zaGFtcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXMvc3JjL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2gtYmFzZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvY29tbW9uLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvaG1hYy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3JpcGVtZC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS8xLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLzIyNC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS8yNTYuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC9zaGEvMzg0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvc2hhLzUxMi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS9jb21tb24uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaGFzaC5qcy9saWIvaGFzaC91dGlscy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9obWFjLWRyYmcvbGliL2htYWMtZHJiZy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pZWVlNzU0L2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2luaGVyaXRzL2luaGVyaXRzX2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaXMtYXJndW1lbnRzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2lzLWdlbmVyYXRvci1mdW5jdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pcy1uYW4vaW1wbGVtZW50YXRpb24uanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvaXMtbmFuL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL2lzLW5hbi9wb2x5ZmlsbC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pcy1uYW4vc2hpbS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9pcy10eXBlZC1hcnJheS9pbmRleC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9tZDUuanMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvbWlsbGVyLXJhYmluL2xpYi9tci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9taWxsZXItcmFiaW4vbm9kZV9tb2R1bGVzL2JuLmpzL2xpYi9ibi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9taW5pbWFsaXN0aWMtYXNzZXJ0L2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL21pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHMvbGliL3V0aWxzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1pcy9pbXBsZW1lbnRhdGlvbi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9vYmplY3QtaXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvb2JqZWN0LWlzL3BvbHlmaWxsLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1pcy9zaGltLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1rZXlzL2ltcGxlbWVudGF0aW9uLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1rZXlzL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL29iamVjdC1rZXlzL2lzQXJndW1lbnRzLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvYXNuMS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wYXJzZS1hc24xL2NlcnRpZmljYXRlLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvZml4UHJvYy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wYXJzZS1hc24xL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bia2RmMi9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bia2RmMi9saWIvYXN5bmMuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcGJrZGYyL2xpYi9kZWZhdWx0LWVuY29kaW5nLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bia2RmMi9saWIvcHJlY29uZGl0aW9uLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bia2RmMi9saWIvc3luYy1icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Bia2RmMi9saWIvdG8tYnVmZmVyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC9icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L21nZi5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC9ub2RlX21vZHVsZXMvYm4uanMvbGliL2JuLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3ByaXZhdGVEZWNyeXB0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3B1YmxpY0VuY3J5cHQuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQvd2l0aFB1YmxpYy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC94b3IuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmFuZG9tYnl0ZXMvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yYW5kb21maWxsL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2Vycm9ycy1icm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9kdXBsZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV93cml0YWJsZS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvYXN5bmNfaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2J1ZmZlcl9saXN0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9lbmQtb2Ytc3RyZWFtLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9mcm9tLWJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3BpcGVsaW5lLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9zdGF0ZS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtLWJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLWJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvcmlwZW1kMTYwL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NhZmUtYnVmZmVyL2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NhZmVyLWJ1ZmZlci9zYWZlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9zaGEuanMvaGFzaC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9zaGEuanMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvc2hhLmpzL3NoYS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9zaGEuanMvc2hhMS5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9zaGEuanMvc2hhMjI0LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9zaGEyNTYuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvc2hhLmpzL3NoYTM4NC5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy9zaGEuanMvc2hhNTEyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3N0cmVhbS1icm93c2VyaWZ5L2luZGV4LmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3N0cmluZ19kZWNvZGVyL2xpYi9zdHJpbmdfZGVjb2Rlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL3NyYy90cnVzdGxpc3QudHMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9zcmMvY29zZTEudHMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9zcmMvZXVkZ2MudHMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9zcmMvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvdXRpbC1kZXByZWNhdGUvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy91dGlsL3N1cHBvcnQvaXNCdWZmZXJCcm93c2VyLmpzIiwid2VicGFjazovL2V1ZGdjLy4vbm9kZV9tb2R1bGVzL3V0aWwvc3VwcG9ydC90eXBlcy5qcyIsIndlYnBhY2s6Ly9ldWRnYy8uL25vZGVfbW9kdWxlcy91dGlsL3V0aWwuanMiLCJ3ZWJwYWNrOi8vZXVkZ2MvLi9ub2RlX21vZHVsZXMvd2hpY2gtdHlwZWQtYXJyYXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZXVkZ2Mvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vZXVkZ2Mvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vZXVkZ2Mvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2V1ZGdjL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vZXVkZ2Mvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9ldWRnYy93ZWJwYWNrL3J1bnRpbWUvbm9kZSBtb2R1bGUgZGVjb3JhdG9yIiwid2VicGFjazovL2V1ZGdjL3dlYnBhY2svc3RhcnR1cCJdLCJuYW1lcyI6WyJhc24xIiwiZXhwb3J0cyIsImJpZ251bSIsImRlZmluZSIsImJhc2UiLCJjb25zdGFudHMiLCJkZWNvZGVycyIsImVuY29kZXJzIiwiaW5oZXJpdHMiLCJFbnRpdHkiLCJuYW1lIiwiYm9keSIsInRoaXMiLCJwcm90b3R5cGUiLCJfY3JlYXRlTmFtZWQiLCJCYXNlIiwiR2VuZXJhdGVkIiwiZW50aXR5IiwiX2luaXROYW1lZCIsImNhbGwiLCJfZ2V0RGVjb2RlciIsImVuYyIsImhhc093blByb3BlcnR5IiwiZGVjb2RlIiwiZGF0YSIsIm9wdGlvbnMiLCJfZ2V0RW5jb2RlciIsImVuY29kZSIsInJlcG9ydGVyIiwiUmVwb3J0ZXIiLCJCdWZmZXIiLCJEZWNvZGVyQnVmZmVyIiwiaXNCdWZmZXIiLCJvZmZzZXQiLCJsZW5ndGgiLCJlcnJvciIsIkVuY29kZXJCdWZmZXIiLCJ2YWx1ZSIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIml0ZW0iLCJpc0VuY29kZXJCdWZmZXIiLCJieXRlTGVuZ3RoIiwiaXNEZWNvZGVyQnVmZmVyIiwiY29uc3RydWN0b3IiLCJzYXZlIiwicmVzdG9yZSIsImlzRW1wdHkiLCJyZWFkVUludDgiLCJza2lwIiwicmF3IiwicmVzIiwiZmFpbCIsImJ5dGVzIiwiX3JlcG9ydGVyU3RhdGUiLCJzbGljZSIsImpvaW4iLCJvdXQiLCJhbGxvYyIsImZvckVhY2giLCJ3cml0ZSIsImNvcHkiLCJOb2RlIiwiYXNzZXJ0IiwidGFncyIsIm1ldGhvZHMiLCJjb25jYXQiLCJwYXJlbnQiLCJzdGF0ZSIsIl9iYXNlU3RhdGUiLCJjaGlsZHJlbiIsInRhZyIsImFyZ3MiLCJyZXZlcnNlQXJncyIsImNob2ljZSIsIm9wdGlvbmFsIiwiYW55Iiwib2JqIiwidXNlIiwidXNlRGVjb2RlciIsImtleSIsImV4cGxpY2l0IiwiaW1wbGljaXQiLCJjb250YWlucyIsIl93cmFwIiwibW9kdWxlIiwic3RhdGVQcm9wcyIsImNsb25lIiwiY3N0YXRlIiwicHJvcCIsIm1ldGhvZCIsInB1c2giLCJhcHBseSIsImFyZ3VtZW50cyIsIl9pbml0IiwiZmlsdGVyIiwiY2hpbGQiLCJlcXVhbCIsIl91c2VBcmdzIiwiYXJnIiwiT2JqZWN0Iiwia2V5cyIsIkVycm9yIiwiZGVmIiwidmFsIiwibnVtIiwibmV3S2V5IiwiX2RlY29kZSIsImlucHV0Iiwid3JhcFJlc3VsdCIsInByZXZPYmoiLCJyZXN1bHQiLCJwcmVzZW50IiwicHJldktleSIsImVudGVyS2V5IiwiX3BlZWtUYWciLCJpc0Vycm9yIiwiX2RlY29kZUdlbmVyaWMiLCJfZGVjb2RlQ2hvaWNlIiwiZSIsImVudGVyT2JqZWN0IiwiX2RlY29kZVRhZyIsInN0YXJ0IiwidHJhY2siLCJwYXRoIiwiX2dldFVzZSIsImxlYXZlT2JqZWN0IiwiZXhpdEtleSIsImxlYXZlS2V5IiwiX2RlY29kZUxpc3QiLCJ0ZXN0IiwiX2RlY29kZVN0ciIsIl9kZWNvZGVPYmppZCIsIl9kZWNvZGVUaW1lIiwiX2RlY29kZU51bGwiLCJfZGVjb2RlQm9vbCIsIl9kZWNvZGVJbnQiLCJfdXNlIiwibWF0Y2giLCJzb21lIiwibm9kZSIsInR5cGUiLCJfY3JlYXRlRW5jb2RlckJ1ZmZlciIsIl9lbmNvZGUiLCJfZW5jb2RlVmFsdWUiLCJ1bmRlZmluZWQiLCJfc2tpcERlZmF1bHQiLCJjb250ZW50IiwicHJpbWl0aXZlIiwiX2VuY29kZUNob2ljZSIsIl9lbmNvZGVQcmltaXRpdmUiLCJjbHMiLCJfZW5jb2RlQ29tcG9zaXRlIiwiSlNPTiIsInN0cmluZ2lmeSIsIl9lbmNvZGVTdHIiLCJfZW5jb2RlT2JqaWQiLCJfZW5jb2RlVGltZSIsIl9lbmNvZGVOdWxsIiwiX2VuY29kZUludCIsIl9lbmNvZGVCb29sIiwiX2lzTnVtc3RyIiwic3RyIiwiX2lzUHJpbnRzdHIiLCJlcnJvcnMiLCJSZXBvcnRlckVycm9yIiwibXNnIiwicmV0aHJvdyIsInBhdGhMZW4iLCJpbmRleCIsInByZXYiLCJub3ciLCJlcnIiLCJpbmhlcml0ZWQiLCJlbGVtIiwibWVzc2FnZSIsInN0YWNrIiwicGFydGlhbCIsImNhcHR1cmVTdGFja1RyYWNlIiwicmV2ZXJzZSIsInRhZ0NsYXNzIiwidGFnQ2xhc3NCeU5hbWUiLCJ0YWdCeU5hbWUiLCJfcmV2ZXJzZSIsImRlciIsIkRFUkRlY29kZXIiLCJ0cmVlIiwiREVSTm9kZSIsImRlckRlY29kZVRhZyIsImJ1ZiIsIm9jdCIsInRhZ1N0ciIsImRlckRlY29kZUxlbiIsImxlbiIsImkiLCJqIiwiYnVmZmVyIiwiZGVjb2RlZFRhZyIsIl9za2lwVW50aWxFbmQiLCJkZWNvZGVyIiwicG9zc2libGVFbmQiLCJ1bnVzZWQiLCJTdHJpbmciLCJmcm9tQ2hhckNvZGUiLCJyZWFkVUludDE2QkUiLCJudW1zdHIiLCJ0b1N0cmluZyIsInByaW50c3RyIiwidmFsdWVzIiwicmVsYXRpdmUiLCJpZGVudGlmaWVycyIsImlkZW50Iiwic3ViaWRlbnQiLCJmaXJzdCIsInNlY29uZCIsInRtcCIsInllYXIiLCJtb24iLCJkYXkiLCJob3VyIiwibWluIiwic2VjIiwiRGF0ZSIsIlVUQyIsInBlbSIsIlBFTURlY29kZXIiLCJsaW5lcyIsInNwbGl0IiwibGFiZWwiLCJ0b1VwcGVyQ2FzZSIsInJlIiwiZW5kIiwiYmFzZTY0IiwicmVwbGFjZSIsImZyb20iLCJERVJFbmNvZGVyIiwidHdvIiwiZW5jb2RlZFRhZyIsImVuY29kZVRhZyIsImhlYWRlciIsImxlbk9jdGV0cyIsIndyaXRlVUludDE2QkUiLCJjaGFyQ29kZUF0IiwiaWQiLCJzcGxpY2UiLCJzaXplIiwib2JqaWQiLCJ0aW1lIiwiZGF0ZSIsImdldFVUQ0Z1bGxZZWFyIiwiZ2V0VVRDTW9udGgiLCJnZXRVVENEYXRlIiwiZ2V0VVRDSG91cnMiLCJnZXRVVENNaW51dGVzIiwiZ2V0VVRDU2Vjb25kcyIsIm51bUFycmF5IiwidG9BcnJheSIsInNpZ24iLCJ1bnNoaWZ0IiwiZGF0YUJ1ZmZlciIsImRlZmF1bHRCdWZmZXIiLCJQRU1FbmNvZGVyIiwicCIsImN0b3IiLCJzdXBlckN0b3IiLCJzdXBlcl8iLCJUZW1wQ3RvciIsIkJOIiwibnVtYmVyIiwiZW5kaWFuIiwiaXNCTiIsIm5lZ2F0aXZlIiwid29yZHMiLCJyZWQiLCJ3b3JkU2l6ZSIsIndpbmRvdyIsInBhcnNlSGV4NEJpdHMiLCJzdHJpbmciLCJjIiwicGFyc2VIZXhCeXRlIiwibG93ZXJCb3VuZCIsInIiLCJwYXJzZUJhc2UiLCJtdWwiLCJNYXRoIiwibWF4IiwibGVmdCIsInJpZ2h0IiwiY21wIiwiX2luaXROdW1iZXIiLCJfaW5pdEFycmF5IiwiX3BhcnNlSGV4IiwiX3BhcnNlQmFzZSIsImNlaWwiLCJ3Iiwib2ZmIiwic3RyaXAiLCJsaW1iTGVuIiwibGltYlBvdyIsInRvdGFsIiwibW9kIiwid29yZCIsImltdWxuIiwiX2lhZGRuIiwicG93IiwiZGVzdCIsIl9leHBhbmQiLCJfbm9ybVNpZ24iLCJpbnNwZWN0IiwiemVyb3MiLCJncm91cFNpemVzIiwiZ3JvdXBCYXNlcyIsInNtYWxsTXVsVG8iLCJzZWxmIiwiYSIsImIiLCJsbyIsImNhcnJ5IiwiayIsIm5jYXJyeSIsInJ3b3JkIiwibWF4SiIsInBhZGRpbmciLCJncm91cFNpemUiLCJncm91cEJhc2UiLCJpc1plcm8iLCJtb2RuIiwiaWRpdm4iLCJ0b051bWJlciIsInJldCIsInRvSlNPTiIsInRvQnVmZmVyIiwidG9BcnJheUxpa2UiLCJBcnJheVR5cGUiLCJyZXFMZW5ndGgiLCJsaXR0bGVFbmRpYW4iLCJxIiwiYW5kbG4iLCJpdXNocm4iLCJjbHozMiIsIl9jb3VudEJpdHMiLCJ0IiwiX3plcm9CaXRzIiwiYml0TGVuZ3RoIiwiaGkiLCJ6ZXJvQml0cyIsInRvVHdvcyIsIndpZHRoIiwiYWJzIiwiaW5vdG4iLCJpYWRkbiIsImZyb21Ud29zIiwidGVzdG4iLCJub3RuIiwiaW5lZyIsImlzTmVnIiwibmVnIiwiaXVvciIsImlvciIsIm9yIiwidW9yIiwiaXVhbmQiLCJpYW5kIiwiYW5kIiwidWFuZCIsIml1eG9yIiwiaXhvciIsInhvciIsInV4b3IiLCJieXRlc05lZWRlZCIsImJpdHNMZWZ0Iiwic2V0biIsImJpdCIsIndiaXQiLCJpYWRkIiwiaXN1YiIsImFkZCIsInN1YiIsImNvbWIxME11bFRvIiwibWlkIiwibyIsImEwIiwiYWwwIiwiYWgwIiwiYTEiLCJhbDEiLCJhaDEiLCJhMiIsImFsMiIsImFoMiIsImEzIiwiYWwzIiwiYWgzIiwiYTQiLCJhbDQiLCJhaDQiLCJhNSIsImFsNSIsImFoNSIsImE2IiwiYWw2IiwiYWg2IiwiYTciLCJhbDciLCJhaDciLCJhOCIsImFsOCIsImFoOCIsImE5IiwiYWw5IiwiYWg5IiwiYjAiLCJibDAiLCJiaDAiLCJiMSIsImJsMSIsImJoMSIsImIyIiwiYmwyIiwiYmgyIiwiYjMiLCJibDMiLCJiaDMiLCJiNCIsImJsNCIsImJoNCIsImI1IiwiYmw1IiwiYmg1IiwiYjYiLCJibDYiLCJiaDYiLCJiNyIsImJsNyIsImJoNyIsImI4IiwiYmw4IiwiYmg4IiwiYjkiLCJibDkiLCJiaDkiLCJ3MCIsImltdWwiLCJ3MSIsIncyIiwidzMiLCJ3NCIsInc1IiwidzYiLCJ3NyIsInc4IiwidzkiLCJ3MTAiLCJ3MTEiLCJ3MTIiLCJ3MTMiLCJ3MTQiLCJ3MTUiLCJ3MTYiLCJ3MTciLCJ3MTgiLCJqdW1ib011bFRvIiwiRkZUTSIsIm11bHAiLCJ4IiwieSIsIm11bFRvIiwiaG5jYXJyeSIsImJpZ011bFRvIiwibWFrZVJCVCIsIk4iLCJsIiwicmV2QmluIiwicmIiLCJwZXJtdXRlIiwicmJ0IiwicndzIiwiaXdzIiwicnR3cyIsIml0d3MiLCJ0cmFuc2Zvcm0iLCJzIiwicnR3ZGYiLCJjb3MiLCJQSSIsIml0d2RmIiwic2luIiwicnR3ZGZfIiwiaXR3ZGZfIiwiaWUiLCJybyIsImlvIiwicngiLCJndWVzc0xlbjEzYiIsIm4iLCJtIiwib2RkIiwiY29uanVnYXRlIiwibm9ybWFsaXplMTNiIiwid3MiLCJyb3VuZCIsImNvbnZlcnQxM2IiLCJzdHViIiwicGgiLCJfIiwicndzdCIsIml3c3QiLCJucndzIiwibnJ3c3QiLCJuaXdzdCIsInJtd3MiLCJtdWxmIiwibXVsbiIsInNxciIsImlzcXIiLCJ0b0JpdEFycmF5IiwiaXVzaGxuIiwiYml0cyIsImNhcnJ5TWFzayIsIm5ld0NhcnJ5IiwiaXNobG4iLCJoaW50IiwiZXh0ZW5kZWQiLCJoIiwibWFzayIsIm1hc2tlZFdvcmRzIiwiaXNocm4iLCJzaGxuIiwidXNobG4iLCJzaHJuIiwidXNocm4iLCJpbWFza24iLCJtYXNrbiIsImlzdWJuIiwiYWRkbiIsInN1Ym4iLCJpYWJzIiwiX2lzaGxuc3VibXVsIiwic2hpZnQiLCJfd29yZERpdiIsIm1vZGUiLCJiaGkiLCJkaWZmIiwicWoiLCJkaXYiLCJkaXZtb2QiLCJwb3NpdGl2ZSIsImRpdm4iLCJ1bW9kIiwiZGl2Um91bmQiLCJkbSIsImhhbGYiLCJyMiIsImFjYyIsImVnY2QiLCJBIiwiQiIsIkMiLCJEIiwiZyIsImlzRXZlbiIsInlwIiwieHAiLCJpbSIsImlzT2RkIiwiam0iLCJnY2QiLCJfaW52bXAiLCJ4MSIsIngyIiwiZGVsdGEiLCJjbXBuIiwiaW52bSIsImJpbmNuIiwidWNtcCIsImd0biIsImd0IiwiZ3RlbiIsImd0ZSIsImx0biIsImx0IiwibHRlbiIsImx0ZSIsImVxbiIsImVxIiwiUmVkIiwidG9SZWQiLCJjdHgiLCJjb252ZXJ0VG8iLCJfZm9yY2VSZWQiLCJmcm9tUmVkIiwiY29udmVydEZyb20iLCJmb3JjZVJlZCIsInJlZEFkZCIsInJlZElBZGQiLCJyZWRTdWIiLCJyZWRJU3ViIiwicmVkU2hsIiwic2hsIiwicmVkTXVsIiwiX3ZlcmlmeTIiLCJyZWRJTXVsIiwicmVkU3FyIiwiX3ZlcmlmeTEiLCJyZWRJU3FyIiwicmVkU3FydCIsInNxcnQiLCJyZWRJbnZtIiwicmVkTmVnIiwicmVkUG93IiwicHJpbWVzIiwiazI1NiIsInAyMjQiLCJwMTkyIiwicDI1NTE5IiwiTVByaW1lIiwiX3RtcCIsIksyNTYiLCJQMjI0IiwiUDE5MiIsIlAyNTUxOSIsInByaW1lIiwiX3ByaW1lIiwiTW9udCIsImltb2QiLCJyaW52IiwibWludiIsImlyZWR1Y2UiLCJybGVuIiwiaW11bEsiLCJfc3RyaXAiLCJvdXRwdXQiLCJvdXRMZW4iLCJuZXh0IiwibW9kMyIsIm9uZSIsIm5PbmUiLCJscG93IiwieiIsImludiIsInduZCIsImN1cnJlbnQiLCJjdXJyZW50TGVuIiwibW9udCIsInUiLCJfdHlwZW9mIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJpc0RlZXBFcXVhbCIsImlzRGVlcFN0cmljdEVxdWFsIiwiX3JlcXVpcmUkY29kZXMiLCJjb2RlcyIsIkVSUl9BTUJJR1VPVVNfQVJHVU1FTlQiLCJFUlJfSU5WQUxJRF9BUkdfVFlQRSIsIkVSUl9JTlZBTElEX0FSR19WQUxVRSIsIkVSUl9JTlZBTElEX1JFVFVSTl9WQUxVRSIsIkVSUl9NSVNTSU5HX0FSR1MiLCJBc3NlcnRpb25FcnJvciIsIl9yZXF1aXJlJHR5cGVzIiwiaXNQcm9taXNlIiwiaXNSZWdFeHAiLCJvYmplY3RBc3NpZ24iLCJhc3NpZ24iLCJvYmplY3RJcyIsImlzIiwibGF6eUxvYWRDb21wYXJpc29uIiwiY29tcGFyaXNvbiIsIk1hcCIsIndhcm5lZCIsIm9rIiwiTk9fRVhDRVBUSU9OX1NFTlRJTkVMIiwiaW5uZXJGYWlsIiwiaW5uZXJPayIsImZuIiwiYXJnTGVuIiwiZ2VuZXJhdGVkTWVzc2FnZSIsImFjdHVhbCIsImV4cGVjdGVkIiwib3BlcmF0b3IiLCJzdGFja1N0YXJ0Rm4iLCJfbGVuIiwiX2tleSIsImludGVybmFsTWVzc2FnZSIsImFyZ3NMZW4iLCJ3YXJuIiwicHJvY2VzcyIsImVtaXRXYXJuaW5nIiwiY29uc29sZSIsImJpbmQiLCJlcnJBcmdzIiwibm90RXF1YWwiLCJkZWVwRXF1YWwiLCJub3REZWVwRXF1YWwiLCJkZWVwU3RyaWN0RXF1YWwiLCJub3REZWVwU3RyaWN0RXF1YWwiLCJzdHJpY3RFcXVhbCIsIm5vdFN0cmljdEVxdWFsIiwiQ29tcGFyaXNvbiIsIl90aGlzIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIlR5cGVFcnJvciIsIl9jbGFzc0NhbGxDaGVjayIsImNvbXBhcmVFeGNlcHRpb25LZXkiLCJleHBlY3RlZEV4Y2VwdGlvbiIsImlzUHJvdG90eXBlT2YiLCJnZXRBY3R1YWwiLCJjaGVja0lzUHJvbWlzZSIsInRoZW4iLCJjYXRjaCIsIndhaXRGb3JBY3R1YWwiLCJwcm9taXNlRm4iLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlc3VsdFByb21pc2UiLCJleHBlY3RzRXJyb3IiLCJkZXRhaWxzIiwiZm5UeXBlIiwiZXhwZWN0c05vRXJyb3IiLCJzdHJpY3QiLCJfbGVuNiIsIl9rZXk2IiwidGhyb3dzIiwiX2xlbjIiLCJfa2V5MiIsInJlamVjdHMiLCJfbGVuMyIsIl9rZXkzIiwiZG9lc05vdFRocm93IiwiX2xlbjQiLCJfa2V5NCIsImRvZXNOb3RSZWplY3QiLCJfbGVuNSIsIl9rZXk1IiwiaWZFcnJvciIsIm5ld0VyciIsIm9yaWdTdGFjayIsInRtcDIiLCJ0bXAxIiwicG9zIiwiaW5kZXhPZiIsIl9kZWZpbmVQcm9wZXJ0eSIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX2RlZmluZVByb3BlcnRpZXMiLCJ0YXJnZXQiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIl93cmFwTmF0aXZlU3VwZXIiLCJDbGFzcyIsIl9jYWNoZSIsIkZ1bmN0aW9uIiwiaGFzIiwiZ2V0Iiwic2V0IiwiV3JhcHBlciIsIl9jb25zdHJ1Y3QiLCJfZ2V0UHJvdG90eXBlT2YiLCJjcmVhdGUiLCJfc2V0UHJvdG90eXBlT2YiLCJpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0Iiwic2hhbSIsIlByb3h5IiwiUGFyZW50Iiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJnZXRQcm90b3R5cGVPZiIsImVuZHNXaXRoIiwic2VhcmNoIiwidGhpc19sZW4iLCJzdWJzdHJpbmciLCJibHVlIiwiZ3JlZW4iLCJ3aGl0ZSIsImtSZWFkYWJsZU9wZXJhdG9yIiwic3RyaWN0RXF1YWxPYmplY3QiLCJub3RTdHJpY3RFcXVhbE9iamVjdCIsIm5vdElkZW50aWNhbCIsImNvcHlFcnJvciIsInNvdXJjZSIsImluc3BlY3RWYWx1ZSIsImNvbXBhY3QiLCJjdXN0b21JbnNwZWN0IiwiZGVwdGgiLCJtYXhBcnJheUxlbmd0aCIsIkluZmluaXR5Iiwic2hvd0hpZGRlbiIsImJyZWFrTGVuZ3RoIiwic2hvd1Byb3h5Iiwic29ydGVkIiwiZ2V0dGVycyIsIl9FcnJvciIsImxpbWl0Iiwic3RhY2tUcmFjZUxpbWl0Iiwic3RkZXJyIiwiaXNUVFkiLCJnZXRDb2xvckRlcHRoIiwib3RoZXIiLCJsYXN0UG9zIiwic2tpcHBlZCIsImFjdHVhbEluc3BlY3RlZCIsImFjdHVhbExpbmVzIiwiZXhwZWN0ZWRMaW5lcyIsImluZGljYXRvciIsImlucHV0TGVuZ3RoIiwiY29sdW1ucyIsImNvdW50IiwiZmxvb3IiLCJtYXhDb3VudCIsImxvZyIsInJlcGVhdCIsInBvcCIsIm1heExpbmVzIiwiX2FjdHVhbExpbmVzIiwicHJpbnRlZExpbmVzIiwic2tpcHBlZE1zZyIsImN1ciIsImV4cGVjdGVkTGluZSIsImFjdHVhbExpbmUiLCJkaXZlcmdpbmdMaW5lcyIsImNyZWF0ZUVyckRpZmYiLCJfcmVzIiwia25vd25PcGVyYXRvcnMiLCJjb2RlIiwicHJvdG9Qcm9wcyIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsIl9pbmhlcml0cyIsImN1c3RvbSIsInJlY3Vyc2VUaW1lcyIsIm93bktleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW0iLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJfb2JqZWN0U3ByZWFkIiwidXRpbCIsImNyZWF0ZUVycm9yVHlwZSIsIk5vZGVFcnJvciIsIl9CYXNlIiwiYXJnMSIsImFyZzIiLCJhcmczIiwiZ2V0TWVzc2FnZSIsIm9uZU9mIiwidGhpbmciLCJkZXRlcm1pbmVyIiwic3Vic3RyIiwicmVhc29uIiwiaW5zcGVjdGVkIiwiUmFuZ2VFcnJvciIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiX2FycmF5V2l0aEhvbGVzIiwiX2FyciIsIl9uIiwiX2QiLCJfZSIsIl9zIiwiX2kiLCJkb25lIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsInJlZ2V4RmxhZ3NTdXBwb3J0ZWQiLCJmbGFncyIsImFycmF5RnJvbVNldCIsImFycmF5IiwiYXJyYXlGcm9tTWFwIiwib2JqZWN0R2V0T3duUHJvcGVydHlTeW1ib2xzIiwibnVtYmVySXNOYU4iLCJOdW1iZXIiLCJpc05hTiIsInVuY3VycnlUaGlzIiwiZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwib2JqZWN0VG9TdHJpbmciLCJpc0FueUFycmF5QnVmZmVyIiwiaXNBcnJheUJ1ZmZlclZpZXciLCJpc0RhdGUiLCJpc01hcCIsImlzU2V0IiwiaXNOYXRpdmVFcnJvciIsImlzQm94ZWRQcmltaXRpdmUiLCJpc051bWJlck9iamVjdCIsImlzU3RyaW5nT2JqZWN0IiwiaXNCb29sZWFuT2JqZWN0IiwiaXNCaWdJbnRPYmplY3QiLCJpc1N5bWJvbE9iamVjdCIsImlzRmxvYXQzMkFycmF5IiwiaXNGbG9hdDY0QXJyYXkiLCJpc05vbkluZGV4IiwiZ2V0T3duTm9uSW5kZXhQcm9wZXJ0aWVzIiwiY29tcGFyZSIsImlubmVyRGVlcEVxdWFsIiwidmFsMSIsInZhbDIiLCJtZW1vcyIsImJ1ZjEiLCJidWYyIiwidmFsMVRhZyIsImtleXMxIiwia2V5czIiLCJrZXlDaGVjayIsImdldFRpbWUiLCJSZWdFeHAiLCJVaW50OEFycmF5IiwiYnl0ZU9mZnNldCIsImFyZVNpbWlsYXJUeXBlZEFycmF5cyIsImFyZVNpbWlsYXJGbG9hdEFycmF5cyIsIl9rZXlzIiwiX2tleXMyIiwidmFsdWVPZiIsIkJvb2xlYW4iLCJCaWdJbnQiLCJpc0VxdWFsQm94ZWRQcmltaXRpdmUiLCJnZXRFbnVtZXJhYmxlcyIsIml0ZXJhdGlvblR5cGUiLCJhS2V5cyIsImJLZXlzIiwic3ltYm9sS2V5c0EiLCJzeW1ib2xLZXlzQiIsIl9zeW1ib2xLZXlzQiIsInBvc2l0aW9uIiwidmFsMk1lbW9BIiwidmFsMk1lbW9CIiwiYXJlRXEiLCJvYmpFcXVpdiIsImRlbGV0ZSIsInNldEhhc0VxdWFsRWxlbWVudCIsIm1lbW8iLCJzZXRWYWx1ZXMiLCJmaW5kTG9vc2VNYXRjaGluZ1ByaW1pdGl2ZXMiLCJwcmltIiwic2V0TWlnaHRIYXZlTG9vc2VQcmltIiwiYWx0VmFsdWUiLCJtYXBNaWdodEhhdmVMb29zZVByaW0iLCJjdXJCIiwibWFwSGFzRXF1YWxFbnRyeSIsImtleTEiLCJpdGVtMSIsImtleTIiLCJhVmFsdWVzIiwiU2V0IiwiYlZhbHVlcyIsIl92YWwiLCJzZXRFcXVpdiIsImFFbnRyaWVzIiwiX2FFbnRyaWVzJGkiLCJpdGVtMiIsImJFbnRyaWVzIiwiX2kyIiwiX2JFbnRyaWVzJF9pIiwibWFwRXF1aXYiLCJrZXlzQSIsInBvc3NpYmxlTmFtZXMiLCJjaGFyc2V0IiwicmVzdCIsImQiLCJiNjQiLCJsZW5zIiwiZ2V0TGVucyIsInZhbGlkTGVuIiwicGxhY2VIb2xkZXJzTGVuIiwidG9CeXRlQXJyYXkiLCJBcnIiLCJfYnl0ZUxlbmd0aCIsImN1ckJ5dGUiLCJyZXZMb29rdXAiLCJmcm9tQnl0ZUFycmF5IiwidWludDgiLCJleHRyYUJ5dGVzIiwicGFydHMiLCJtYXhDaHVua0xlbmd0aCIsImxlbjIiLCJlbmNvZGVDaHVuayIsImxvb2t1cCIsImdsb2JhbE9iamVjdCIsIkJpZ051bWJlciIsImlzTnVtZXJpYyIsIm1hdGhjZWlsIiwibWF0aGZsb29yIiwiYmlnbnVtYmVyRXJyb3IiLCJ0b29NYW55RGlnaXRzIiwiQkFTRSIsIkxPR19CQVNFIiwiTUFYX1NBRkVfSU5URUdFUiIsIlBPV1NfVEVOIiwiU1FSVF9CQVNFIiwiTUFYIiwiYml0Rmxvb3IiLCJjb2VmZlRvU3RyaW5nIiwieGMiLCJ5YyIsImludENoZWNrIiwidG9FeHBvbmVudGlhbCIsImNoYXJBdCIsInRvRml4ZWRQb2ludCIsInpzIiwiY29uZmlnT2JqZWN0IiwiY29udmVydEJhc2UiLCJwYXJzZU51bWVyaWMiLCJwb3cyXzUzIiwicmFuZG9tNTNiaXRJbnQiLCJiYXNlUHJlZml4IiwiZG90QWZ0ZXIiLCJkb3RCZWZvcmUiLCJpc0luZmluaXR5T3JOYU4iLCJ3aGl0ZXNwYWNlT3JQbHVzIiwiUCIsIk9ORSIsIkRFQ0lNQUxfUExBQ0VTIiwiUk9VTkRJTkdfTU9ERSIsIlRPX0VYUF9ORUciLCJUT19FWFBfUE9TIiwiTUlOX0VYUCIsIk1BWF9FWFAiLCJDUllQVE8iLCJNT0RVTE9fTU9ERSIsIlBPV19QUkVDSVNJT04iLCJGT1JNQVQiLCJwcmVmaXgiLCJzZWNvbmRhcnlHcm91cFNpemUiLCJncm91cFNlcGFyYXRvciIsImRlY2ltYWxTZXBhcmF0b3IiLCJmcmFjdGlvbkdyb3VwU2l6ZSIsImZyYWN0aW9uR3JvdXBTZXBhcmF0b3IiLCJzdWZmaXgiLCJBTFBIQUJFVCIsInYiLCJhbHBoYWJldCIsImNhc2VDaGFuZ2VkIiwiaXNOdW0iLCJfaXNCaWdOdW1iZXIiLCJERUJVRyIsInRvTG93ZXJDYXNlIiwiZm9ybWF0Iiwicm0iLCJjMCIsIm5lIiwibWF4T3JNaW4iLCJub3JtYWxpc2UiLCJzZCIsIm5pIiwicmQiLCJwb3dzMTAiLCJST1VORF9VUCIsIlJPVU5EX0RPV04iLCJST1VORF9DRUlMIiwiUk9VTkRfRkxPT1IiLCJST1VORF9IQUxGX1VQIiwiUk9VTkRfSEFMRl9ET1dOIiwiUk9VTkRfSEFMRl9FVkVOIiwiUk9VTkRfSEFMRl9DRUlMIiwiUk9VTkRfSEFMRl9GTE9PUiIsIkVVQ0xJRCIsImNvbmZpZyIsImNyeXB0byIsImdldFJhbmRvbVZhbHVlcyIsInJhbmRvbUJ5dGVzIiwiRVhQT05FTlRJQUxfQVQiLCJSQU5HRSIsImlzQmlnTnVtYmVyIiwibWF4aW11bSIsIm1pbmltdW0iLCJyYW5kb20iLCJkcCIsInJhbmQiLCJVaW50MzJBcnJheSIsInN1bSIsInBsdXMiLCJkZWNpbWFsIiwidG9CYXNlT3V0IiwiYmFzZUluIiwiYmFzZU91dCIsImFyckwiLCJjYWxsZXJJc1RvU3RyaW5nIiwibXVsdGlwbHkiLCJ0ZW1wIiwieGxvIiwieGhpIiwia2xvIiwia2hpIiwiYUwiLCJiTCIsInN1YnRyYWN0IiwibW9yZSIsInByb2QiLCJwcm9kTCIsInFjIiwicmVtIiwicmVtTCIsInJlbTAiLCJ4aSIsInhMIiwieWMwIiwieUwiLCJ5eiIsIk5hTiIsInAxIiwicDIiLCJhYnNvbHV0ZVZhbHVlIiwiY29tcGFyZWRUbyIsImRlY2ltYWxQbGFjZXMiLCJkaXZpZGVkQnkiLCJkaXZpZGVkVG9JbnRlZ2VyQnkiLCJpZGl2IiwiZXhwb25lbnRpYXRlZEJ5IiwiaXNNb2RFeHAiLCJuSXNCaWciLCJuSXNOZWciLCJuSXNPZGQiLCJpc0ludGVnZXIiLCJ0aW1lcyIsImludGVnZXJWYWx1ZSIsImlzRXF1YWxUbyIsImlzRmluaXRlIiwiaXNHcmVhdGVyVGhhbiIsImlzR3JlYXRlclRoYW5PckVxdWFsVG8iLCJpc0xlc3NUaGFuIiwiaXNMZXNzVGhhbk9yRXF1YWxUbyIsImlzTmVnYXRpdmUiLCJpc1Bvc2l0aXZlIiwibWludXMiLCJ4TFR5IiwieGUiLCJ5ZSIsIm1vZHVsbyIsIm11bHRpcGxpZWRCeSIsInhjTCIsInljTCIsInlsbyIsInloaSIsInpjIiwic3FydEJhc2UiLCJuZWdhdGVkIiwicHJlY2lzaW9uIiwic2hpZnRlZEJ5Iiwic3F1YXJlUm9vdCIsInJlcCIsInRvRml4ZWQiLCJ0b0Zvcm1hdCIsImcxIiwiZzIiLCJpbnRQYXJ0IiwiZnJhY3Rpb25QYXJ0IiwiaW50RGlnaXRzIiwidG9GcmFjdGlvbiIsIm1kIiwiZDAiLCJkMSIsImQyIiwiZXhwIiwibjAiLCJuMSIsInRvUHJlY2lzaW9uIiwibW92ZSIsInNyYyIsIl9tb3ZlIiwiZm9yIiwibW9kcm4iLCJhbGxvY1Vuc2FmZSIsImFsbG9jYXRlIiwiX3RvQXJyYXlMaWtlTEUiLCJfdG9BcnJheUxpa2VCRSIsImlzTmVnTnVtIiwiUmFuZCIsImdlbmVyYXRlIiwiX3JhbmQiLCJnZXRCeXRlcyIsImdldEJ5dGUiLCJtc0NyeXB0byIsImFzVUludDMyQXJyYXkiLCJyZWFkVUludDMyQkUiLCJzY3J1YlZlYyIsImNyeXB0QmxvY2siLCJNIiwia2V5U2NoZWR1bGUiLCJTVUJfTUlYIiwiU0JPWCIsIm5Sb3VuZHMiLCJ0MCIsInQxIiwidDIiLCJ0MyIsIlNVQl9NSVgwIiwiU1VCX01JWDEiLCJTVUJfTUlYMiIsIlNVQl9NSVgzIiwiczAiLCJzMSIsInMyIiwiczMiLCJrc1JvdyIsIlJDT04iLCJHIiwiSU5WX1NCT1giLCJJTlZfU1VCX01JWCIsInN4IiwieDQiLCJ4OCIsIkFFUyIsIl9yZXNldCIsImJsb2NrU2l6ZSIsImtleVNpemUiLCJrZXlXb3JkcyIsImtzUm93cyIsImludktleVNjaGVkdWxlIiwiaWsiLCJrc1IiLCJ0dCIsIl9uUm91bmRzIiwiX2tleVNjaGVkdWxlIiwiX2ludktleVNjaGVkdWxlIiwiZW5jcnlwdEJsb2NrUmF3IiwiZW5jcnlwdEJsb2NrIiwid3JpdGVVSW50MzJCRSIsImRlY3J5cHRCbG9jayIsIm0xIiwic2NydWIiLCJhZXMiLCJUcmFuc2Zvcm0iLCJHSEFTSCIsImluY3IzMiIsIlN0cmVhbUNpcGhlciIsIml2IiwiZGVjcnlwdCIsIl9jaXBoZXIiLCJjayIsIl9naGFzaCIsIl9maW5JRCIsImdoYXNoIiwidG9QYWQiLCJ1cGRhdGUiLCJpdkJpdHMiLCJ0YWlsIiwid3JpdGVVSW50QkUiLCJjYWxjSXYiLCJfcHJldiIsIl9zZWNDYWNoZSIsIl9kZWNyeXB0IiwiX2FsZW4iLCJfbW9kZSIsIl9hdXRoVGFnIiwiX2NhbGxlZCIsIl91cGRhdGUiLCJjaHVuayIsInJ1bXAiLCJlbmNyeXB0IiwiX2ZpbmFsIiwiZmluYWwiLCJ4b3JUZXN0IiwiZ2V0QXV0aFRhZyIsInNldEF1dGhUYWciLCJzZXRBQUQiLCJjaXBoZXJzIiwiZGVjaXBoZXJzIiwibW9kZXMiLCJjcmVhdGVDaXBoZXIiLCJDaXBoZXIiLCJjcmVhdGVDaXBoZXJpdiIsIkNpcGhlcml2IiwiY3JlYXRlRGVjaXBoZXIiLCJEZWNpcGhlciIsImNyZWF0ZURlY2lwaGVyaXYiLCJEZWNpcGhlcml2IiwibGlzdENpcGhlcnMiLCJnZXRDaXBoZXJzIiwiQXV0aENpcGhlciIsIk1PREVTIiwiZWJ0ayIsIlNwbGl0dGVyIiwiX2xhc3QiLCJfYXV0b3BhZGRpbmciLCJjYWNoZSIsInN1aXRlIiwicGFzc3dvcmQiLCJmbHVzaCIsImxhc3QiLCJwYWRkZWQiLCJ1bnBhZCIsInNldEF1dG9QYWRkaW5nIiwic2V0VG8iLCJhdXRvUGFkZGluZyIsIlBBRERJTkciLCJlcXVhbHMiLCJwYWRCdWZmIiwid3JpdGVVSW50OCIsIlpFUk9FUyIsImZyb21BcnJheSIsImJsb2NrIiwiX211bHRpcGx5IiwibHNiVmkiLCJWaSIsIlppIiwiYWJsIiwiYmwiLCJwYWQiLCJlbmNyeXB0U3RhcnQiLCJlbmNyeXB0Qnl0ZSIsImJ5dGVQYXJhbSIsInNoaWZ0SW4iLCJnZXRCbG9jayIsImNodW5rTnVtIiwibW9kZU1vZHVsZXMiLCJFQ0IiLCJDQkMiLCJDRkIiLCJDRkI4IiwiQ0ZCMSIsIk9GQiIsIkNUUiIsIkdDTSIsIkRFUyIsImFlc01vZGVzIiwiZGVzTW9kZXMiLCJrZXlMZW4iLCJpdkxlbiIsIkNpcGhlckJhc2UiLCJkZXMiLCJpbnN0YW50aWF0ZSIsIkVERSIsIm9wdHMiLCJtb2RlTmFtZSIsIl9kZXMiLCJkZXMzIiwiZ2V0ciIsInByaXYiLCJtb2R1bHVzIiwicHJpbWUxIiwicHJpbWUyIiwiY3J0IiwiYmxpbmRzIiwiYmxpbmRlciIsInB1YmxpY0V4cG9uZW50IiwidW5ibGluZGVyIiwiYmxpbmQiLCJibGluZGVkIiwiYzEiLCJjMiIsInFpbnYiLCJjb2VmZmljaWVudCIsImV4cG9uZW50MSIsIm0yIiwiZXhwb25lbnQyIiwiY3JlYXRlSGFzaCIsInN0cmVhbSIsInZlcmlmeSIsImFsZ29yaXRobXMiLCJTaWduIiwiYWxnb3JpdGhtIiwiV3JpdGFibGUiLCJfaGFzaFR5cGUiLCJoYXNoIiwiX2hhc2giLCJfdGFnIiwiX3NpZ25UeXBlIiwiVmVyaWZ5IiwiY3JlYXRlU2lnbiIsImNyZWF0ZVZlcmlmeSIsIl93cml0ZSIsImRpZ2VzdCIsInNpZyIsImNyZWF0ZUhtYWMiLCJFQyIsInBhcnNlS2V5cyIsImN1cnZlcyIsImdldEtleSIsImFsZ28iLCJobGVuIiwiaGJpdHMiLCJiaXRzMmludCIsImJpdHMyb2N0ZXRzIiwiZmlsbCIsIm9iaXRzIiwibWFrZUtleSIsImt2IiwibWFrZVIiLCJoYXNoVHlwZSIsInNpZ25UeXBlIiwiY3VydmUiLCJjdXJ2ZUlkIiwia2V5RnJvbVByaXZhdGUiLCJwcml2YXRlS2V5IiwidG9ERVIiLCJlY1NpZ24iLCJwYXJhbXMiLCJwcml2X2tleSIsIkgiLCJkc2FTaWduIiwiY2hlY2tWYWx1ZSIsInB1YiIsInB1YmtleSIsInN1YmplY3RQcml2YXRlS2V5IiwiZWNWZXJpZnkiLCJwdWJfa2V5IiwidW5wYWNrZWQiLCJzaWduYXR1cmUiLCJtb250cCIsImRzYVZlcmlmeSIsInBhZE51bSIsIlpzdHJlYW0iLCJ6bGliX2RlZmxhdGUiLCJ6bGliX2luZmxhdGUiLCJabGliIiwiREVGTEFURSIsIlVOWklQIiwiZGljdGlvbmFyeSIsImluaXRfZG9uZSIsImxldmVsIiwibWVtTGV2ZWwiLCJzdHJhdGVneSIsIndpbmRvd0JpdHMiLCJ3cml0ZV9pbl9wcm9ncmVzcyIsInBlbmRpbmdfY2xvc2UiLCJnemlwX2lkX2J5dGVzX3JlYWQiLCJOT05FIiwiSU5GTEFURSIsIkdaSVAiLCJHVU5aSVAiLCJERUZMQVRFUkFXIiwiSU5GTEFURVJBVyIsImNsb3NlIiwiZGVmbGF0ZUVuZCIsInN0cm0iLCJpbmZsYXRlRW5kIiwiaW5fb2ZmIiwiaW5fbGVuIiwib3V0X29mZiIsIm91dF9sZW4iLCJ3cml0ZVN5bmMiLCJhc3luYyIsIlpfTk9fRkxVU0giLCJaX1BBUlRJQUxfRkxVU0giLCJaX1NZTkNfRkxVU0giLCJaX0ZVTExfRkxVU0giLCJaX0ZJTklTSCIsIlpfQkxPQ0siLCJhdmFpbF9pbiIsIm5leHRfaW4iLCJhdmFpbF9vdXQiLCJuZXh0X291dCIsIl9wcm9jZXNzIiwiX2NoZWNrRXJyb3IiLCJfYWZ0ZXJTeW5jIiwibmV4dFRpY2siLCJfYWZ0ZXIiLCJuZXh0X2V4cGVjdGVkX2hlYWRlcl9ieXRlIiwiZGVmbGF0ZSIsImluZmxhdGUiLCJaX05FRURfRElDVCIsImluZmxhdGVTZXREaWN0aW9uYXJ5IiwiWl9PSyIsIlpfREFUQV9FUlJPUiIsIlpfU1RSRUFNX0VORCIsInJlc2V0IiwiWl9CVUZfRVJST1IiLCJfZXJyb3IiLCJjYWxsYmFjayIsIm9uZXJyb3IiLCJpbml0IiwiWl9GSUxURVJFRCIsIlpfSFVGRk1BTl9PTkxZIiwiWl9STEUiLCJaX0ZJWEVEIiwiWl9ERUZBVUxUX1NUUkFURUdZIiwiX3NldERpY3Rpb25hcnkiLCJkZWZsYXRlSW5pdDIiLCJaX0RFRkxBVEVEIiwiaW5mbGF0ZUluaXQyIiwiZGVmbGF0ZVNldERpY3Rpb25hcnkiLCJkZWZsYXRlUmVzZXQiLCJpbmZsYXRlUmVzZXQiLCJiaW5kaW5nIiwia01heExlbmd0aCIsImtSYW5nZUVycm9yTWVzc2FnZSIsIlpfTUlOX1dJTkRPV0JJVFMiLCJaX01BWF9XSU5ET1dCSVRTIiwiWl9ERUZBVUxUX1dJTkRPV0JJVFMiLCJaX01JTl9DSFVOSyIsIlpfTUFYX0NIVU5LIiwiWl9ERUZBVUxUX0NIVU5LIiwiWl9NSU5fTUVNTEVWRUwiLCJaX01BWF9NRU1MRVZFTCIsIlpfREVGQVVMVF9NRU1MRVZFTCIsIlpfTUlOX0xFVkVMIiwiWl9NQVhfTEVWRUwiLCJaX0RFRkFVTFRfTEVWRUwiLCJaX0RFRkFVTFRfQ09NUFJFU1NJT04iLCJia2V5cyIsImJrIiwiYmtleSIsIlpfRVJSTk8iLCJaX1NUUkVBTV9FUlJPUiIsIlpfTUVNX0VSUk9SIiwiWl9WRVJTSU9OX0VSUk9SIiwiY2tleXMiLCJja2V5IiwiemxpYkJ1ZmZlciIsImVuZ2luZSIsImJ1ZmZlcnMiLCJucmVhZCIsImZsb3ciLCJyZWFkIiwib25jZSIsIm9uRW5kIiwib24iLCJyZW1vdmVMaXN0ZW5lciIsInpsaWJCdWZmZXJTeW5jIiwiZmx1c2hGbGFnIiwiX2ZpbmlzaEZsdXNoRmxhZyIsIl9wcm9jZXNzQ2h1bmsiLCJEZWZsYXRlIiwiSW5mbGF0ZSIsIkd6aXAiLCJHdW56aXAiLCJEZWZsYXRlUmF3IiwiSW5mbGF0ZVJhdyIsIlVuemlwIiwiaXNWYWxpZEZsdXNoRmxhZyIsImZsYWciLCJfb3B0cyIsIl9jaHVua1NpemUiLCJjaHVua1NpemUiLCJmaW5pc2hGbHVzaCIsIl9mbHVzaEZsYWciLCJfaGFuZGxlIiwiX2hhZEVycm9yIiwiZXJybm8iLCJfY2xvc2UiLCJlbWl0IiwiX2J1ZmZlciIsIl9vZmZzZXQiLCJfbGV2ZWwiLCJfc3RyYXRlZ3kiLCJlbWl0Q2xvc2VOVCIsImZyZWV6ZSIsImNyZWF0ZURlZmxhdGUiLCJjcmVhdGVJbmZsYXRlIiwiY3JlYXRlRGVmbGF0ZVJhdyIsImNyZWF0ZUluZmxhdGVSYXciLCJjcmVhdGVHemlwIiwiY3JlYXRlR3VuemlwIiwiY3JlYXRlVW56aXAiLCJkZWZsYXRlU3luYyIsImd6aXAiLCJnemlwU3luYyIsImRlZmxhdGVSYXciLCJkZWZsYXRlUmF3U3luYyIsInVuemlwIiwidW56aXBTeW5jIiwiaW5mbGF0ZVN5bmMiLCJndW56aXAiLCJndW56aXBTeW5jIiwiaW5mbGF0ZVJhdyIsImluZmxhdGVSYXdTeW5jIiwiX2ZsdXNoIiwiX3RyYW5zZm9ybSIsImtpbmQiLCJfdGhpczIiLCJfd3JpdGFibGVTdGF0ZSIsImVuZGVkIiwiZW5kaW5nIiwibmVlZERyYWluIiwiZW5jb2RpbmciLCJjYiIsImF2YWlsSW5CZWZvcmUiLCJhdmFpbE91dEJlZm9yZSIsImluT2ZmIiwiZXIiLCJyZXEiLCJhdmFpbEluQWZ0ZXIiLCJhdmFpbE91dEFmdGVyIiwiaGF2ZSIsIm5ld1JlcSIsIlRZUEVEX09LIiwiVWludDE2QXJyYXkiLCJJbnQzMkFycmF5IiwiX2hhcyIsInNvdXJjZXMiLCJzaHJpbmtCdWYiLCJzdWJhcnJheSIsImZuVHlwZWQiLCJhcnJheVNldCIsInNyY19vZmZzIiwiZGVzdF9vZmZzIiwiZmxhdHRlbkNodW5rcyIsImNodW5rcyIsImZuVW50eXBlZCIsInNldFR5cGVkIiwiQnVmOCIsIkJ1ZjE2IiwiQnVmMzIiLCJhZGxlciIsIlpfVFJFRVMiLCJaX05PX0NPTVBSRVNTSU9OIiwiWl9CRVNUX1NQRUVEIiwiWl9CRVNUX0NPTVBSRVNTSU9OIiwiWl9CSU5BUlkiLCJaX1RFWFQiLCJaX1VOS05PV04iLCJjcmNUYWJsZSIsInRhYmxlIiwibWFrZVRhYmxlIiwiY3JjIiwiY29uZmlndXJhdGlvbl90YWJsZSIsInV0aWxzIiwidHJlZXMiLCJhZGxlcjMyIiwiY3JjMzIiLCJNQVhfTUFUQ0giLCJNSU5fTE9PS0FIRUFEIiwiSENSQ19TVEFURSIsIkJVU1lfU1RBVEUiLCJGSU5JU0hfU1RBVEUiLCJlcnJvckNvZGUiLCJyYW5rIiwiemVybyIsImZsdXNoX3BlbmRpbmciLCJwZW5kaW5nIiwicGVuZGluZ19idWYiLCJwZW5kaW5nX291dCIsInRvdGFsX291dCIsImZsdXNoX2Jsb2NrX29ubHkiLCJfdHJfZmx1c2hfYmxvY2siLCJibG9ja19zdGFydCIsInN0cnN0YXJ0IiwicHV0X2J5dGUiLCJwdXRTaG9ydE1TQiIsImxvbmdlc3RfbWF0Y2giLCJjdXJfbWF0Y2giLCJjaGFpbl9sZW5ndGgiLCJtYXhfY2hhaW5fbGVuZ3RoIiwic2NhbiIsImJlc3RfbGVuIiwicHJldl9sZW5ndGgiLCJuaWNlX21hdGNoIiwid19zaXplIiwiX3dpbiIsIndtYXNrIiwid19tYXNrIiwic3RyZW5kIiwic2Nhbl9lbmQxIiwic2Nhbl9lbmQiLCJnb29kX21hdGNoIiwibG9va2FoZWFkIiwibWF0Y2hfc3RhcnQiLCJmaWxsX3dpbmRvdyIsIl93X3NpemUiLCJ3aW5kb3dfc2l6ZSIsImhhc2hfc2l6ZSIsImhlYWQiLCJ3cmFwIiwidG90YWxfaW4iLCJpbnNlcnQiLCJpbnNfaCIsImhhc2hfc2hpZnQiLCJoYXNoX21hc2siLCJkZWZsYXRlX2Zhc3QiLCJoYXNoX2hlYWQiLCJiZmx1c2giLCJtYXRjaF9sZW5ndGgiLCJfdHJfdGFsbHkiLCJtYXhfbGF6eV9tYXRjaCIsIk1JTl9NQVRDSCIsImxhc3RfbGl0IiwiZGVmbGF0ZV9zbG93IiwibWF4X2luc2VydCIsInByZXZfbWF0Y2giLCJtYXRjaF9hdmFpbGFibGUiLCJDb25maWciLCJnb29kX2xlbmd0aCIsIm1heF9sYXp5IiwibmljZV9sZW5ndGgiLCJtYXhfY2hhaW4iLCJmdW5jIiwiRGVmbGF0ZVN0YXRlIiwic3RhdHVzIiwicGVuZGluZ19idWZfc2l6ZSIsImd6aGVhZCIsImd6aW5kZXgiLCJsYXN0X2ZsdXNoIiwid19iaXRzIiwiaGFzaF9iaXRzIiwiZHluX2x0cmVlIiwiSEVBUF9TSVpFIiwiZHluX2R0cmVlIiwiYmxfdHJlZSIsImxfZGVzYyIsImRfZGVzYyIsImJsX2Rlc2MiLCJibF9jb3VudCIsIk1BWF9CSVRTIiwiaGVhcCIsImhlYXBfbGVuIiwiaGVhcF9tYXgiLCJsX2J1ZiIsImxpdF9idWZzaXplIiwiZF9idWYiLCJvcHRfbGVuIiwic3RhdGljX2xlbiIsIm1hdGNoZXMiLCJiaV9idWYiLCJiaV92YWxpZCIsImRlZmxhdGVSZXNldEtlZXAiLCJkYXRhX3R5cGUiLCJfdHJfaW5pdCIsIm1heF9ibG9ja19zaXplIiwibWF4X3N0YXJ0IiwiZGVmbGF0ZUluaXQiLCJkZWZsYXRlU2V0SGVhZGVyIiwib2xkX2ZsdXNoIiwiYmVnIiwidGV4dCIsImhjcmMiLCJleHRyYSIsImNvbW1lbnQiLCJvcyIsImJzdGF0ZSIsImRlZmxhdGVfaHVmZiIsImRlZmxhdGVfcmxlIiwiX3RyX2FsaWduIiwiX3RyX3N0b3JlZF9ibG9jayIsImF2YWlsIiwidG1wRGljdCIsImRpY3RMZW5ndGgiLCJkZWZsYXRlSW5mbyIsIl9pbiIsIl9vdXQiLCJkbWF4Iiwid3NpemUiLCJ3aGF2ZSIsInduZXh0Iiwic193aW5kb3ciLCJob2xkIiwibGNvZGUiLCJkY29kZSIsImxtYXNrIiwiZG1hc2siLCJoZXJlIiwib3AiLCJkaXN0IiwiZnJvbV9zb3VyY2UiLCJsZW5jb2RlIiwiZGlzdGNvZGUiLCJsZW5iaXRzIiwiZGlzdGJpdHMiLCJ0b3AiLCJkb2xlbiIsImRvZGlzdCIsInNhbmUiLCJpbmZsYXRlX2Zhc3QiLCJpbmZsYXRlX3RhYmxlIiwiVFlQRSIsIkJBRCIsInpzd2FwMzIiLCJJbmZsYXRlU3RhdGUiLCJoYXZlZGljdCIsImNoZWNrIiwid2JpdHMiLCJuY29kZSIsIm5sZW4iLCJuZGlzdCIsIndvcmsiLCJsZW5keW4iLCJkaXN0ZHluIiwiYmFjayIsIndhcyIsImluZmxhdGVSZXNldEtlZXAiLCJpbmZsYXRlUmVzZXQyIiwibGVuZml4IiwiZGlzdGZpeCIsInZpcmdpbiIsImZpeGVkdGFibGVzIiwidXBkYXRld2luZG93IiwiaW5mbGF0ZUluaXQiLCJwdXQiLCJoZXJlX2JpdHMiLCJoZXJlX29wIiwiaGVyZV92YWwiLCJsYXN0X2JpdHMiLCJsYXN0X29wIiwibGFzdF92YWwiLCJoYnVmIiwib3JkZXIiLCJpbmZfbGVhdmUiLCJ4ZmxhZ3MiLCJleHRyYV9sZW4iLCJpbmZsYXRlR2V0SGVhZGVyIiwiaW5mbGF0ZUluZm8iLCJsYmFzZSIsImxleHQiLCJkYmFzZSIsImRleHQiLCJsZW5zX2luZGV4IiwidGFibGVfaW5kZXgiLCJpbmNyIiwibG93Iiwicm9vdCIsImN1cnIiLCJkcm9wIiwidXNlZCIsImh1ZmYiLCJiYXNlX2luZGV4IiwiTUFYQklUUyIsIm9mZnMiLCJleHRyYV9pbmRleCIsImV4dHJhX2xiaXRzIiwiZXh0cmFfZGJpdHMiLCJleHRyYV9ibGJpdHMiLCJibF9vcmRlciIsInN0YXRpY19sdHJlZSIsInN0YXRpY19kdHJlZSIsIkRfQ09ERVMiLCJfZGlzdF9jb2RlIiwiX2xlbmd0aF9jb2RlIiwiYmFzZV9sZW5ndGgiLCJzdGF0aWNfbF9kZXNjIiwic3RhdGljX2RfZGVzYyIsInN0YXRpY19ibF9kZXNjIiwiYmFzZV9kaXN0IiwiU3RhdGljVHJlZURlc2MiLCJzdGF0aWNfdHJlZSIsImV4dHJhX2JpdHMiLCJleHRyYV9iYXNlIiwiZWxlbXMiLCJtYXhfbGVuZ3RoIiwiaGFzX3N0cmVlIiwiVHJlZURlc2MiLCJkeW5fdHJlZSIsInN0YXRfZGVzYyIsIm1heF9jb2RlIiwiZF9jb2RlIiwicHV0X3Nob3J0Iiwic2VuZF9iaXRzIiwic2VuZF9jb2RlIiwiYmlfcmV2ZXJzZSIsImdlbl9jb2RlcyIsIm5leHRfY29kZSIsImluaXRfYmxvY2siLCJMSVRFUkFMUyIsIkVORF9CTE9DSyIsImJpX3dpbmR1cCIsInNtYWxsZXIiLCJfbjIiLCJfbTIiLCJwcWRvd25oZWFwIiwiY29tcHJlc3NfYmxvY2siLCJsdHJlZSIsImR0cmVlIiwibGMiLCJseCIsImJ1aWxkX3RyZWUiLCJkZXNjIiwic3RyZWUiLCJ4Yml0cyIsIm92ZXJmbG93IiwiZ2VuX2JpdGxlbiIsInNjYW5fdHJlZSIsImN1cmxlbiIsInByZXZsZW4iLCJuZXh0bGVuIiwibWF4X2NvdW50IiwibWluX2NvdW50IiwiUkVQXzNfNiIsIlJFUFpfM18xMCIsIlJFUFpfMTFfMTM4Iiwic2VuZF90cmVlIiwic3RhdGljX2luaXRfZG9uZSIsInN0b3JlZF9sZW4iLCJjb3B5X2Jsb2NrIiwiTEVOR1RIX0NPREVTIiwiTF9DT0RFUyIsInRyX3N0YXRpY19pbml0Iiwib3B0X2xlbmIiLCJzdGF0aWNfbGVuYiIsIm1heF9ibGluZGV4IiwiYmxhY2tfbWFzayIsImRldGVjdF9kYXRhX3R5cGUiLCJCTF9DT0RFUyIsImJ1aWxkX2JsX3RyZWUiLCJsY29kZXMiLCJkY29kZXMiLCJibGNvZGVzIiwic2VuZF9hbGxfdHJlZXMiLCJTVEFUSUNfVFJFRVMiLCJiaV9mbHVzaCIsImllZWU3NTQiLCJjdXN0b21JbnNwZWN0U3ltYm9sIiwiU2xvd0J1ZmZlciIsIklOU1BFQ1RfTUFYX0JZVEVTIiwiS19NQVhfTEVOR1RIIiwiY3JlYXRlQnVmZmVyIiwiZW5jb2RpbmdPck9mZnNldCIsImlzRW5jb2RpbmciLCJmcm9tU3RyaW5nIiwiQXJyYXlCdWZmZXIiLCJpc1ZpZXciLCJhcnJheVZpZXciLCJpc0luc3RhbmNlIiwiZnJvbUFycmF5QnVmZmVyIiwiZnJvbUFycmF5TGlrZSIsImZyb21BcnJheVZpZXciLCJTaGFyZWRBcnJheUJ1ZmZlciIsImNoZWNrZWQiLCJmcm9tT2JqZWN0IiwidG9QcmltaXRpdmUiLCJhc3NlcnRTaXplIiwibXVzdE1hdGNoIiwibG93ZXJlZENhc2UiLCJ1dGY4VG9CeXRlcyIsImJhc2U2NFRvQnl0ZXMiLCJzbG93VG9TdHJpbmciLCJoZXhTbGljZSIsInV0ZjhTbGljZSIsImFzY2lpU2xpY2UiLCJsYXRpbjFTbGljZSIsImJhc2U2NFNsaWNlIiwidXRmMTZsZVNsaWNlIiwic3dhcCIsImJpZGlyZWN0aW9uYWxJbmRleE9mIiwiZGlyIiwiYXJyYXlJbmRleE9mIiwibGFzdEluZGV4T2YiLCJpbmRleFNpemUiLCJhcnJMZW5ndGgiLCJ2YWxMZW5ndGgiLCJmb3VuZEluZGV4IiwiZm91bmQiLCJoZXhXcml0ZSIsInJlbWFpbmluZyIsInN0ckxlbiIsInBhcnNlZCIsInBhcnNlSW50IiwidXRmOFdyaXRlIiwiYmxpdEJ1ZmZlciIsImFzY2lpV3JpdGUiLCJieXRlQXJyYXkiLCJhc2NpaVRvQnl0ZXMiLCJiYXNlNjRXcml0ZSIsInVjczJXcml0ZSIsInVuaXRzIiwidXRmMTZsZVRvQnl0ZXMiLCJmaXJzdEJ5dGUiLCJjb2RlUG9pbnQiLCJieXRlc1BlclNlcXVlbmNlIiwic2Vjb25kQnl0ZSIsInRoaXJkQnl0ZSIsImZvdXJ0aEJ5dGUiLCJ0ZW1wQ29kZVBvaW50IiwiY29kZVBvaW50cyIsIk1BWF9BUkdVTUVOVFNfTEVOR1RIIiwiZGVjb2RlQ29kZVBvaW50c0FycmF5IiwiVFlQRURfQVJSQVlfU1VQUE9SVCIsInByb3RvIiwiZm9vIiwidHlwZWRBcnJheVN1cHBvcnQiLCJwb29sU2l6ZSIsImFsbG9jVW5zYWZlU2xvdyIsIl9pc0J1ZmZlciIsImxpc3QiLCJzd2FwMTYiLCJzd2FwMzIiLCJzd2FwNjQiLCJ0b0xvY2FsZVN0cmluZyIsInRyaW0iLCJ0aGlzU3RhcnQiLCJ0aGlzRW5kIiwidGhpc0NvcHkiLCJ0YXJnZXRDb3B5IiwiaW5jbHVkZXMiLCJoZXhTbGljZUxvb2t1cFRhYmxlIiwiY2hlY2tPZmZzZXQiLCJleHQiLCJjaGVja0ludCIsIndydEJpZ1VJbnQ2NExFIiwiY2hlY2tJbnRCSSIsIndydEJpZ1VJbnQ2NEJFIiwiY2hlY2tJRUVFNzU0Iiwid3JpdGVGbG9hdCIsIm5vQXNzZXJ0Iiwid3JpdGVEb3VibGUiLCJuZXdCdWYiLCJyZWFkVWludExFIiwicmVhZFVJbnRMRSIsInJlYWRVaW50QkUiLCJyZWFkVUludEJFIiwicmVhZFVpbnQ4IiwicmVhZFVpbnQxNkxFIiwicmVhZFVJbnQxNkxFIiwicmVhZFVpbnQxNkJFIiwicmVhZFVpbnQzMkxFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVpbnQzMkJFIiwicmVhZEJpZ1VJbnQ2NExFIiwiZGVmaW5lQmlnSW50TWV0aG9kIiwidmFsaWRhdGVOdW1iZXIiLCJib3VuZHNFcnJvciIsInJlYWRCaWdVSW50NjRCRSIsInJlYWRJbnRMRSIsInJlYWRJbnRCRSIsInJlYWRJbnQ4IiwicmVhZEludDE2TEUiLCJyZWFkSW50MTZCRSIsInJlYWRJbnQzMkxFIiwicmVhZEludDMyQkUiLCJyZWFkQmlnSW50NjRMRSIsInJlYWRCaWdJbnQ2NEJFIiwicmVhZEZsb2F0TEUiLCJyZWFkRmxvYXRCRSIsInJlYWREb3VibGVMRSIsInJlYWREb3VibGVCRSIsIndyaXRlVWludExFIiwid3JpdGVVSW50TEUiLCJ3cml0ZVVpbnRCRSIsIndyaXRlVWludDgiLCJ3cml0ZVVpbnQxNkxFIiwid3JpdGVVSW50MTZMRSIsIndyaXRlVWludDE2QkUiLCJ3cml0ZVVpbnQzMkxFIiwid3JpdGVVSW50MzJMRSIsIndyaXRlVWludDMyQkUiLCJ3cml0ZUJpZ1VJbnQ2NExFIiwid3JpdGVCaWdVSW50NjRCRSIsIndyaXRlSW50TEUiLCJ3cml0ZUludEJFIiwid3JpdGVJbnQ4Iiwid3JpdGVJbnQxNkxFIiwid3JpdGVJbnQxNkJFIiwid3JpdGVJbnQzMkxFIiwid3JpdGVJbnQzMkJFIiwid3JpdGVCaWdJbnQ2NExFIiwid3JpdGVCaWdJbnQ2NEJFIiwid3JpdGVGbG9hdExFIiwid3JpdGVGbG9hdEJFIiwid3JpdGVEb3VibGVMRSIsIndyaXRlRG91YmxlQkUiLCJ0YXJnZXRTdGFydCIsImNvcHlXaXRoaW4iLCJFIiwic3VwZXIiLCJhZGROdW1lcmljYWxTZXBhcmF0b3IiLCJyYW5nZSIsIkVSUl9PVVRfT0ZfUkFOR0UiLCJjaGVja0JvdW5kcyIsIkVSUl9CVUZGRVJfT1VUX09GX0JPVU5EUyIsInJlY2VpdmVkIiwiSU5WQUxJRF9CQVNFNjRfUkUiLCJsZWFkU3Vycm9nYXRlIiwiYmFzZTY0Y2xlYW4iLCJkc3QiLCJpMTYiLCJCdWZmZXJCaWdJbnROb3REZWZpbmVkIiwiR2V0SW50cmluc2ljIiwiY2FsbEJpbmQiLCIkaW5kZXhPZiIsImFsbG93TWlzc2luZyIsImludHJpbnNpYyIsIiRhcHBseSIsIiRjYWxsIiwiJHJlZmxlY3RBcHBseSIsIiRnT1BEIiwiJGRlZmluZVByb3BlcnR5IiwiJG1heCIsIm9yaWdpbmFsRnVuY3Rpb24iLCJhcHBseUJpbmQiLCJLIiwiWCIsIlkiLCJSIiwiSSIsIk8iLCJUIiwiViIsIlMiLCJKIiwiTCIsIlUiLCIkIiwiWiIsIlciLCJGIiwiUSIsIkNvbW1lbnRlZCIsIkRpYWdub3NlIiwiRGVjb2RlciIsIkVuY29kZXIiLCJTaW1wbGUiLCJUYWdnZWQiLCJVSSIsImZJIiwiZGVjb2RlQWxsIiwiaDgiLCJkZWNvZGVGaXJzdCIsImNjIiwiZGVjb2RlQWxsU3luYyIsIiR1IiwiZGVjb2RlRmlyc3RTeW5jIiwiZGlhZ25vc2UiLCJjdiIsIk4yIiwiZW5jb2RlQ2Fub25pY2FsIiwiVEciLCJlbmNvZGVPbmUiLCJXUiIsImVuY29kZUFzeW5jIiwiSngiLCJ3dyIsInZjIiwiTVQiLCJOVU1CWVRFUyIsIlNZTVMiLCJtYXhfZGVwdGgiLCJub19zdW1tYXJ5IiwiYmlnaW50IiwicHJlZmVyV2ViIiwicmVhZGFibGVPYmplY3RNb2RlIiwid3JpdGFibGVPYmplY3RNb2RlIiwiYWxsIiwiX3RhZ18yNCIsInBhcnNlciIsIl9vbl92YWx1ZSIsIl9vbl9zdGFydCIsIl9vbl9zdGFydF9zdHJpbmciLCJfb25fc3RvcCIsIl9vbl9tb3JlIiwiX29uX2Vycm9yIiwiX29uX2RhdGEiLCJicyIsIl9vbl9yZWFkIiwicGlwZSIsImd1ZXNzRW5jb2RpbmciLCJQT1NfSU5UIiwiTkVHX0lOVCIsIkFSUkFZIiwiTUFQIiwiQllURV9TVFJJTkciLCJVVEY4X1NUUklORyIsIlNJTVBMRV9GTE9BVCIsIlRBRyIsIlNUUkVBTSIsIkJSRUFLIiwiY2JvclZhbHVlVG9TdHJpbmciLCJUV08iLCJGT1VSIiwiRUlHSFQiLCJEQVRFX1NUUklORyIsIkRBVEVfRVBPQ0giLCJQT1NfQklHSU5UIiwiTkVHX0JJR0lOVCIsIkRFQ0lNQUxfRlJBQyIsIkJJR0ZMT0FUIiwiQkFTRTY0VVJMX0VYUEVDVEVEIiwiQkFTRTY0X0VYUEVDVEVEIiwiQkFTRTE2X0VYUEVDVEVEIiwiQ0JPUiIsIlVSSSIsIkJBU0U2NFVSTCIsIkJBU0U2NCIsIlJFR0VYUCIsIk1JTUUiLCJTRVQiLCJaRVJPIiwiSU5ERUZJTklURSIsIlNJTVBMRSIsIkZBTFNFIiwiVFJVRSIsIk5VTEwiLCJVTkRFRklORUQiLCJQQVJFTlQiLCJTSElGVDMyIiwiQkkiLCJNSU5VU19PTkUiLCJORUdfTUFYIiwiTUFYSU5UMzIiLCJNQVhJTlQ2NCIsIk1BWElOVCIsImJ1ZmZlclRvQmlnSW50IiwiYnl0ZSIsInJlcXVpcmVkIiwiZXh0ZW5kZWRSZXN1bHRzIiwiZGVmYXVsdEVuY29kaW5nIiwicnVubmluZyIsIl9vblJlYWQiLCJ2YWx1ZUJ5dGVzIiwiX3BhcnNlIiwibnVsbGNoZWNrIiwiX19mcmVzaCIsInBhcnNlQ0JPUmludCIsInV0ZjgiLCJwYXJzZUNCT1JmbG9hdCIsImNvbnZlcnQiLCJOT1RfRk9VTkQiLCJzZXBhcmF0b3IiLCJzdHJlYW1fZXJyb3JzIiwiZmxvYXRfYnl0ZXMiLCJfZm9yZSIsImNhbm9uaWNhbCIsImVuY29kZVVuZGVmaW5lZCIsImRpc2FsbG93VW5kZWZpbmVkS2V5cyIsImRhdGVUeXBlIiwiY29sbGFwc2VCaWdJbnRlZ2VycyIsImRldGVjdExvb3BzIiwib21pdFVuZGVmaW5lZFByb3BlcnRpZXMiLCJnZW5UeXBlcyIsIldlYWtTZXQiLCJzZW1hbnRpY1R5cGVzIiwiX3B1c2hBcnJheSIsIl9wdXNoRGF0ZSIsIl9wdXNoQnVmZmVyIiwiX3B1c2hNYXAiLCJOb0ZpbHRlciIsIl9wdXNoTm9GaWx0ZXIiLCJfcHVzaFJlZ2V4cCIsIl9wdXNoU2V0IiwiX3B1c2hBcnJheUJ1ZmZlciIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiX3B1c2hUeXBlZEFycmF5IiwiSW50OEFycmF5IiwiSW50MTZBcnJheSIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsIlVSTCIsIl9wdXNoVVJMIiwiX3B1c2hCb3hlZCIsIl9wdXNoQmlnTnVtYmVyIiwiQmlnVWludDY0QXJyYXkiLCJCaWdJbnQ2NEFycmF5IiwiYWRkU2VtYW50aWNUeXBlIiwiZW50cmllcyIsInB1c2hBbnkiLCJfcHVzaFVJbnQ4IiwiX3B1c2hVSW50MTZCRSIsIl9wdXNoVUludDMyQkUiLCJfcHVzaEZsb2F0QkUiLCJfcHVzaERvdWJsZUJFIiwiX3B1c2hOYU4iLCJfcHVzaEluZmluaXR5IiwiX3B1c2hGbG9hdCIsIndyaXRlSGFsZiIsImZyb3VuZCIsIl9wdXNoSW50IiwiX3B1c2hJbnROdW0iLCJfcHVzaE51bWJlciIsIl9wdXNoU3RyaW5nIiwiX3B1c2hCb29sZWFuIiwiX3B1c2hVbmRlZmluZWQiLCJidWZmZXJpc2hUb0J1ZmZlciIsIl9wdXNoTnVsbCIsImluZGVmaW5pdGUiLCJfcHVzaFRhZyIsInRvSVNPU3RyaW5nIiwiX3B1c2hBbnkiLCJfcHVzaEJpZ2ludCIsIl9wdXNoSlNCaWdpbnQiLCJoaWdoV2F0ZXJNYXJrIiwicmVhZGFibGVIaWdoV2F0ZXJNYXJrIiwic29ydCIsIkJZVEVTX1BFUl9FTEVNRU5UIiwic3RhcnRzV2l0aCIsImlzQmlnRW5kaWFuIiwicmVtb3ZlTG9vcERldGVjdG9ycyIsIl9wdXNoT2JqZWN0Iiwic2tpcFR5cGVzIiwiZW5jb2RlQ0JPUiIsIl9lbmNvZGVBbGwiLCJpc0J1ZmZlcmlzaCIsIl90b1R5cGVkQXJyYXkiLCJEYXRhVmlldyIsImdldFVpbnQxNiIsInNldFVpbnQxNiIsImdldFVpbnQzMiIsInNldFVpbnQzMiIsImdldEJpZ1VpbnQ2NCIsInNldEJpZ1VpbnQ2NCIsImJ1ZmZlclRvQmlnbnVtYmVyIiwiYmFzZTY0dXJsIiwiSU5URVJOQUxfSlNPTiIsImZhdGFsIiwiaWdub3JlQk9NIiwiY2hlY2tzVVRGOCIsInBhcnNlSGFsZiIsImhleCIsImJpbiIsImFycmF5RXF1YWwiLCJldmVyeSIsImRlc2NyaXB0aW9uIiwiUmVhZGFibGUiLCJUZXh0RGVjb2RlciIsInV0ZkxhYmVsIiwiY29kZVBvaW50QXQiLCJpbnB1dEVuY29kaW5nIiwid2F0Y2hQaXBlIiwicmVhZEVycm9yIiwiX3JlYWRhYmxlU3RhdGUiLCJvYmplY3RNb2RlIiwicmVkdWNlIiwiX2J1ZkFycmF5IiwicHJvbWlzZSIsInN0eWxpemUiLCJ3cml0ZUJpZ0ludCIsInJlYWRVQmlnSW50IiwicmVhZEJpZ0ludCIsIl9fcmVzdGFydCIsIl9fbmVlZGVkIiwiX19wYXJzZXIiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiRXZlbnRFbWl0dGVyIiwiX2V2ZW50cyIsIl9ldmVudHNDb3VudCIsIl9tYXhMaXN0ZW5lcnMiLCJkZWZhdWx0TWF4TGlzdGVuZXJzIiwibmV3TGlzdGVuZXIiLCJsaXN0ZW5lciIsImVtaXR0ZXIiLCJmaXJlZCIsIndyYXBGbiIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2V0TWF4TGlzdGVuZXJzIiwiZ2V0TWF4TGlzdGVuZXJzIiwiY29udGV4dCIsImFkZExpc3RlbmVyIiwicHJlcGVuZExpc3RlbmVyIiwicHJlcGVuZE9uY2VMaXN0ZW5lciIsInJlbW92ZUFsbExpc3RlbmVycyIsImxpc3RlbmVycyIsInJhd0xpc3RlbmVycyIsImxpc3RlbmVyQ291bnQiLCJldmVudE5hbWVzIiwiTE4yIiwiaW50ZXJuYWxCaW5kaW5nIiwiQXJyYXlJc0FycmF5IiwiQXJyYXlQcm90b3R5cGVGaWx0ZXIiLCJBcnJheVByb3RvdHlwZUZvckVhY2giLCJBcnJheVByb3RvdHlwZVB1c2giLCJBcnJheVByb3RvdHlwZVB1c2hBcHBseSIsIkFycmF5UHJvdG90eXBlU29ydCIsIkFycmF5UHJvdG90eXBlVW5zaGlmdCIsIkJpZ0ludFByb3RvdHlwZVZhbHVlT2YiLCJCb29sZWFuUHJvdG90eXBlVmFsdWVPZiIsIkRhdGVQcm90b3R5cGVHZXRUaW1lIiwiRGF0ZVByb3RvdHlwZVRvSVNPU3RyaW5nIiwiRGF0ZVByb3RvdHlwZVRvU3RyaW5nIiwiRXJyb3JQcm90b3R5cGVUb1N0cmluZyIsIkZ1bmN0aW9uUHJvdG90eXBlQ2FsbCIsIkZ1bmN0aW9uUHJvdG90eXBlVG9TdHJpbmciLCJKU09OU3RyaW5naWZ5IiwiTWFwUHJvdG90eXBlR2V0U2l6ZSIsIk1hcFByb3RvdHlwZUVudHJpZXMiLCJNYXRoRmxvb3IiLCJNYXRoTWF4IiwiTWF0aE1pbiIsIk1hdGhSb3VuZCIsIk1hdGhTcXJ0IiwiTnVtYmVySXNOYU4iLCJOdW1iZXJQYXJzZUZsb2F0IiwiTnVtYmVyUGFyc2VJbnQiLCJOdW1iZXJQcm90b3R5cGVWYWx1ZU9mIiwiT2JqZWN0QXNzaWduIiwiT2JqZWN0Q3JlYXRlIiwiT2JqZWN0RGVmaW5lUHJvcGVydHkiLCJPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzIiwiT2JqZWN0R2V0T3duUHJvcGVydHlTeW1ib2xzIiwiT2JqZWN0R2V0UHJvdG90eXBlT2YiLCJPYmplY3RJcyIsIk9iamVjdEtleXMiLCJPYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eSIsIk9iamVjdFByb3RvdHlwZVByb3BlcnR5SXNFbnVtZXJhYmxlIiwiT2JqZWN0U2VhbCIsIk9iamVjdFNldFByb3RvdHlwZU9mIiwiUmVmbGVjdE93bktleXMiLCJSZWdFeHBQcm90b3R5cGVUZXN0IiwiUmVnRXhwUHJvdG90eXBlVG9TdHJpbmciLCJTYWZlU3RyaW5nSXRlcmF0b3IiLCJTYWZlTWFwIiwiU2FmZVNldCIsIlNldFByb3RvdHlwZUdldFNpemUiLCJldCIsIlNldFByb3RvdHlwZVZhbHVlcyIsInJ0IiwibnQiLCJTdHJpbmdQcm90b3R5cGVDaGFyQ29kZUF0IiwiaXQiLCJTdHJpbmdQcm90b3R5cGVDb2RlUG9pbnRBdCIsIm90IiwiU3RyaW5nUHJvdG90eXBlSW5jbHVkZXMiLCJzdCIsIlN0cmluZ1Byb3RvdHlwZU5vcm1hbGl6ZSIsImF0IiwiU3RyaW5nUHJvdG90eXBlUGFkRW5kIiwidXQiLCJTdHJpbmdQcm90b3R5cGVQYWRTdGFydCIsIlN0cmluZ1Byb3RvdHlwZVJlcGVhdCIsImN0IiwiU3RyaW5nUHJvdG90eXBlUmVwbGFjZSIsImZ0IiwiU3RyaW5nUHJvdG90eXBlU2xpY2UiLCJodCIsIlN0cmluZ1Byb3RvdHlwZVNwbGl0IiwicHQiLCJTdHJpbmdQcm90b3R5cGVUb0xvd2VyQ2FzZSIsImR0IiwiU3RyaW5nUHJvdG90eXBlVHJpbSIsInl0IiwiU3RyaW5nUHJvdG90eXBlVmFsdWVPZiIsIlN5bWJvbFByb3RvdHlwZVRvU3RyaW5nIiwiYnQiLCJTeW1ib2xQcm90b3R5cGVWYWx1ZU9mIiwibXQiLCJTeW1ib2xJdGVyYXRvciIsInd0IiwiU3ltYm9sVG9TdHJpbmdUYWciLCJfdCIsIlR5cGVkQXJyYXlQcm90b3R5cGVHZXRMZW5ndGgiLCJFdCIsIlR5cGVkQXJyYXlQcm90b3R5cGVHZXRTeW1ib2xUb1N0cmluZ1RhZyIsInZ0IiwiU3QiLCJBdCIsIlR0IiwiZ2V0UHJvbWlzZURldGFpbHMiLCJJdCIsImdldFByb3h5RGV0YWlscyIsIkJ0Iiwia1BlbmRpbmciLCJPdCIsImtSZWplY3RlZCIsInh0IiwicHJldmlld0VudHJpZXMiLCJSdCIsImdldENvbnN0cnVjdG9yTmFtZSIsIk50IiwiZ2V0RXh0ZXJuYWxWYWx1ZSIsIkx0IiwicHJvcGVydHlGaWx0ZXIiLCJBTExfUFJPUEVSVElFUyIsIlB0IiwiT05MWV9FTlVNRVJBQkxFIiwiTXQiLCJVdCIsImp0Iiwia3QiLCIkdCIsInJlbW92ZUNvbG9ycyIsIkZ0IiwiRHQiLCJpc1N0YWNrT3ZlcmZsb3dFcnJvciIsIkN0IiwiaXNBc3luY0Z1bmN0aW9uIiwiR3QiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiV3QiLCJ6dCIsImlzQXJyYXlCdWZmZXIiLCJIdCIsImlzQXJndW1lbnRzT2JqZWN0IiwiWXQiLCJxdCIsImlzRGF0YVZpZXciLCJWdCIsImlzRXh0ZXJuYWwiLCJLdCIsIlh0IiwiaXNNYXBJdGVyYXRvciIsIkp0IiwiaXNNb2R1bGVOYW1lc3BhY2VPYmplY3QiLCJadCIsIlF0IiwidGUiLCJlZSIsImlzU2V0SXRlcmF0b3IiLCJpc1dlYWtNYXAiLCJpc1dlYWtTZXQiLCJvZSIsInNlIiwiaXNUeXBlZEFycmF5IiwiYWUiLCJ1ZSIsImxlIiwiY2UiLCJmZSIsImhlIiwiTmF0aXZlTW9kdWxlIiwicGUiLCJ2YWxpZGF0ZU9iamVjdCIsImRlIiwiZ2UiLCJiZSIsIm1lIiwiY29sb3JzIiwibWF4U3RyaW5nTGVuZ3RoIiwid2UiLCJFZSIsInZlIiwiU2UiLCJBZSIsIlRlIiwiSWUiLCJCZSIsIk9lIiwiUmUiLCJOZSIsIkxlIiwiUGUiLCJidWRnZXQiLCJpbmRlbnRhdGlvbkx2bCIsInNlZW4iLCJjdXJyZW50RGVwdGgiLCJDZSIsInVzZXJPcHRpb25zIiwiRGUiLCJLZSIsIk1lIiwiVWUiLCJqZSIsImtlIiwiYm9sZCIsImRpbSIsIml0YWxpYyIsInVuZGVybGluZSIsImJsaW5rIiwiaW52ZXJzZSIsImhpZGRlbiIsInN0cmlrZXRocm91Z2giLCJkb3VibGV1bmRlcmxpbmUiLCJibGFjayIsInllbGxvdyIsIm1hZ2VudGEiLCJjeWFuIiwiYmdCbGFjayIsImJnUmVkIiwiYmdHcmVlbiIsImJnWWVsbG93IiwiYmdCbHVlIiwiYmdNYWdlbnRhIiwiYmdDeWFuIiwiYmdXaGl0ZSIsImZyYW1lZCIsIm92ZXJsaW5lZCIsImdyYXkiLCJyZWRCcmlnaHQiLCJncmVlbkJyaWdodCIsInllbGxvd0JyaWdodCIsImJsdWVCcmlnaHQiLCJtYWdlbnRhQnJpZ2h0IiwiY3lhbkJyaWdodCIsIndoaXRlQnJpZ2h0IiwiYmdHcmF5IiwiYmdSZWRCcmlnaHQiLCJiZ0dyZWVuQnJpZ2h0IiwiYmdZZWxsb3dCcmlnaHQiLCJiZ0JsdWVCcmlnaHQiLCJiZ01hZ2VudGFCcmlnaHQiLCJiZ0N5YW5CcmlnaHQiLCJiZ1doaXRlQnJpZ2h0Iiwic3R5bGVzIiwic3BlY2lhbCIsImJvb2xlYW4iLCJudWxsIiwic3ltYm9sIiwicmVnZXhwIiwiJGUiLCJGZSIsIkdlIiwiV2UiLCJ6ZSIsIkhlIiwiZHIiLCJZZSIsInFlIiwiVmUiLCJRZSIsImdyIiwiY2lyY3VsYXIiLCJuciIsInNyIiwiaXIiLCJYZSIsImhyIiwiZXhpc3RzIiwiZXhlYyIsInJyIiwiSmUiLCJwciIsImNyIiwibHIiLCJmciIsInRyIiwiWmUiLCJhciIsInVyIiwieXIiLCJiciIsIm1yIiwid3IiLCJfciIsIkVyIiwiaGFzSW50bCIsInZyIiwiZ2V0U3RyaW5nV2lkdGgiLCJub3JtYWxpemUiLCJmb3JtYXRXaXRoT3B0aW9ucyIsImluc3BlY3REZWZhdWx0T3B0aW9ucyIsInN0cmlwVlRDb250cm9sQ2hhcmFjdGVycyIsInN0eWxpemVXaXRoQ29sb3IiLCJzdHlsaXplV2l0aEhUTUwiLCJBcnJheVByb3RvdHlwZUluY2x1ZGVzIiwiQXJyYXlQcm90b3R5cGVJbmRleE9mIiwiQXJyYXlQcm90b3R5cGVKb2luIiwiQXJyYXlQcm90b3R5cGVQb3AiLCJBcnJheVByb3RvdHlwZVNwbGljZSIsIkVycm9yQ2FwdHVyZVN0YWNrVHJhY2UiLCJSZWZsZWN0QXBwbHkiLCJTdHJpbmdQcm90b3R5cGVFbmRzV2l0aCIsImhpZGVTdGFja0ZyYW1lcyIsImdsb2JhbFRoaXMiLCJfX21hZ2ljX18iLCJpc0Zyb3plbiIsInRvU3RyaW5nVGFnIiwibnVsbGFibGUiLCJfaXRlcmF0b3IiLCJfX2xvb2t1cEdldHRlcl9fIiwibWFrZVNhZmUiLCJwYXJzZUZsb2F0Iiwic2VhbCIsInBhZEVuZCIsInBhZFN0YXJ0IiwiU3ltYm9sRm9yIiwiV2Vha01hcCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwicnVuIiwiZnVuIiwidGl0bGUiLCJicm93c2VyIiwiZW52IiwiYXJndiIsInZlcnNpb24iLCJ2ZXJzaW9ucyIsImN3ZCIsImNoZGlyIiwidW1hc2siLCJhbGxvd0hhbGZPcGVuIiwicmVhZGFibGUiLCJnZXRCdWZmZXIiLCJkZXN0cm95ZWQiLCJSZWFkYWJsZVN0YXRlIiwiZGVidWdsb2ciLCJnZXRIaWdoV2F0ZXJNYXJrIiwiRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRiIsIkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEIiwiRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVCIsImVycm9yT3JEZXN0cm95IiwicGlwZXMiLCJwaXBlc0NvdW50IiwiZmxvd2luZyIsImVuZEVtaXR0ZWQiLCJyZWFkaW5nIiwic3luYyIsIm5lZWRSZWFkYWJsZSIsImVtaXR0ZWRSZWFkYWJsZSIsInJlYWRhYmxlTGlzdGVuaW5nIiwicmVzdW1lU2NoZWR1bGVkIiwicGF1c2VkIiwiZW1pdENsb3NlIiwiYXV0b0Rlc3Ryb3kiLCJhd2FpdERyYWluIiwicmVhZGluZ01vcmUiLCJfcmVhZCIsImRlc3Ryb3kiLCJfZGVzdHJveSIsIl91bmRlc3Ryb3kiLCJ1bmRlc3Ryb3kiLCJpc1BhdXNlZCIsInNldEVuY29kaW5nIiwiY2xlYXIiLCJyZXN1bWUiLCJjb25zdW1lIiwiZmluaXNoZWQiLCJzdGRvdXQiLCJoYXNVbnBpcGVkIiwicGF1c2UiLCJ1bnBpcGUiLCJhc3luY0l0ZXJhdG9yIiwiX2Zyb21MaXN0IiwiRVJSX01VTFRJUExFX0NBTExCQUNLIiwiRVJSX1RSQU5TRk9STV9BTFJFQURZX1RSQU5TRk9STUlORyIsIkVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMCIsIl90cmFuc2Zvcm1TdGF0ZSIsInRyYW5zZm9ybWluZyIsIndyaXRlY2IiLCJ3cml0ZWNodW5rIiwiYWZ0ZXJUcmFuc2Zvcm0iLCJuZWVkVHJhbnNmb3JtIiwid3JpdGVlbmNvZGluZyIsImVudHJ5IiwiZmluaXNoIiwicGVuZGluZ2NiIiwiY29ya2VkUmVxdWVzdHNGcmVlIiwiV3JpdGFibGVTdGF0ZSIsImRlcHJlY2F0ZSIsIkVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUiLCJFUlJfU1RSRUFNX0RFU1RST1lFRCIsIkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMiLCJFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCIsIkVSUl9VTktOT1dOX0VOQ09ESU5HIiwiZmluYWxDYWxsZWQiLCJkZWNvZGVTdHJpbmdzIiwid3JpdGluZyIsImNvcmtlZCIsImJ1ZmZlclByb2Nlc3NpbmciLCJvbndyaXRlIiwid3JpdGVsZW4iLCJlcnJvckVtaXR0ZWQiLCJidWZmZXJlZFJlcXVlc3QiLCJsYXN0QnVmZmVyZWRSZXF1ZXN0IiwicHJlZmluaXNoZWQiLCJidWZmZXJlZFJlcXVlc3RDb3VudCIsIndyaXRldiIsIl93cml0ZXYiLCJpc0J1ZiIsImFsbEJ1ZmZlcnMiLCJoYXNJbnN0YW5jZSIsImNvcmsiLCJ1bmNvcmsiLCJzZXREZWZhdWx0RW5jb2RpbmciLCJyZWplY3QiLCJfZ2V0U3RyaW5nIiwiX2dldEJ1ZmZlciIsImRlZmluZVByb3BlcnRpZXMiLCJFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRSIsInNldEhlYWRlciIsImFib3J0IiwiRVJSX0lOVkFMSURfT1BUX1ZBTFVFIiwiRHVwbGV4IiwiUGFzc1Rocm91Z2giLCJwaXBlbGluZSIsIlN0cmVhbSIsIl9pc1N0ZGlvIiwiZmlsbExhc3QiLCJsYXN0TmVlZCIsImxhc3RUb3RhbCIsImxhc3RDaGFyIiwibG9jYWxTdG9yYWdlIiwidHJhY2UiLCJoYXNCaWdJbnQiLCJsZXZlbGRiIiwiU3RyaW5nRGVjb2RlciIsImhhc2hNb2RlIiwiX2ZpbmFsT3JEaWdlc3QiLCJfX2ZpbmFsIiwiX2RlY29kZXIiLCJfZW5jb2RpbmciLCJpbnB1dEVuYyIsIm91dHB1dEVuYyIsIm91dERhdGEiLCJfdG9TdHJpbmciLCJmaW4iLCJlbGxpcHRpYyIsIkVDREgiLCJhbGlhc2VzIiwic2VjcDI1NmsxIiwic2VjcDIyNHIxIiwicHJpbWUyNTZ2MSIsInByaW1lMTkydjEiLCJlZDI1NTE5Iiwic2VjcDM4NHIxIiwic2VjcDUyMXIxIiwiY3VydmVUeXBlIiwiZWMiLCJmb3JtYXRSZXR1cm5WYWx1ZSIsImJuIiwicDI1NiIsInNlY3AyNTZyMSIsInNlY3AxOTJyMSIsInAzODQiLCJwNTIxIiwiZ2VuZXJhdGVLZXlzIiwiZ2VuS2V5UGFpciIsImdldFB1YmxpY0tleSIsImNvbXB1dGVTZWNyZXQiLCJpbmVuYyIsImtleUZyb21QdWJsaWMiLCJnZXRQdWJsaWMiLCJnZXRQcml2YXRlIiwiZ2V0WCIsImdldFByaXZhdGVLZXkiLCJzZXRQdWJsaWNLZXkiLCJfaW1wb3J0UHVibGljIiwic2V0UHJpdmF0ZUtleSIsIl9wcml2IiwiX2ltcG9ydFByaXZhdGUiLCJNRDUiLCJSSVBFTUQxNjAiLCJzaGEiLCJIYXNoIiwiYWxnIiwiTGVnYWN5IiwibWQ1IiwiWkVST1MiLCJIbWFjIiwiYmxvY2tzaXplIiwiX2FsZyIsImlwYWQiLCJfaXBhZCIsIm9wYWQiLCJfb3BhZCIsInJuZyIsInBzZXVkb1JhbmRvbUJ5dGVzIiwicHJuZyIsImFsZ29zIiwiYWxnb0tleXMiLCJoYXNoZXMiLCJnZXRIYXNoZXMiLCJwYmtkZjIiLCJwYmtkZjJTeW5jIiwiZGgiLCJEaWZmaWVIZWxsbWFuR3JvdXAiLCJjcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXAiLCJnZXREaWZmaWVIZWxsbWFuIiwiY3JlYXRlRGlmZmllSGVsbG1hbiIsIkRpZmZpZUhlbGxtYW4iLCJjcmVhdGVFQ0RIIiwicHVibGljRW5jcnlwdCIsInByaXZhdGVFbmNyeXB0IiwicHVibGljRGVjcnlwdCIsInByaXZhdGVEZWNyeXB0IiwicmYiLCJyYW5kb21GaWxsIiwicmFuZG9tRmlsbFN5bmMiLCJjcmVhdGVDcmVkZW50aWFscyIsImhhc1N5bWJvbHMiLCJ0b1N0ciIsIm9yaWdEZWZpbmVQcm9wZXJ0eSIsInN1cHBvcnRzRGVzY3JpcHRvcnMiLCJhcmVQcm9wZXJ0eURlc2NyaXB0b3JzU3VwcG9ydGVkIiwib2JqZWN0IiwicHJlZGljYXRlIiwicHJlZGljYXRlcyIsIkNCQ1N0YXRlIiwiX2NiY0luaXQiLCJfY2JjU3RhdGUiLCJpbnAiLCJvdXRPZmYiLCJzdXBlclByb3RvIiwiYnVmZmVyT2ZmIiwiX3VwZGF0ZURlY3J5cHQiLCJfdXBkYXRlRW5jcnlwdCIsIl9mbHVzaEJ1ZmZlciIsImlucHV0T2ZmIiwib3V0cHV0T2ZmIiwiX2ZpbmFsRW5jcnlwdCIsIl9maW5hbERlY3J5cHQiLCJfcGFkIiwiX3VucGFkIiwiREVTU3RhdGUiLCJfZGVzU3RhdGUiLCJkZXJpdmVLZXlzIiwic2hpZnRUYWJsZSIsImtMIiwia1IiLCJwYzEiLCJyMjhzaGwiLCJwYzIiLCJpcCIsIl9lbmNyeXB0IiwibFN0YXJ0IiwiclN0YXJ0Iiwia2V5TCIsImtleVIiLCJleHBhbmQiLCJzdWJzdGl0dXRlIiwicmlwIiwiRURFU3RhdGUiLCJrMSIsImsyIiwiazMiLCJfZWRlU3RhdGUiLCJpbkwiLCJpblIiLCJvdXRMIiwib3V0UiIsInBjMnRhYmxlIiwic1RhYmxlIiwicGVybXV0ZVRhYmxlIiwicGFkU3BsaXQiLCJncm91cCIsImdlbmVyYXRlUHJpbWUiLCJESCIsIkVOQ09ESU5HUyIsImdlbiIsImdlbmVyYXRvciIsImdlbmMiLCJtaWxsZXJSYWJpbiIsIlRXRU5UWUZPVVIiLCJFTEVWRU4iLCJURU4iLCJUSFJFRSIsIlNFVkVOIiwiX3B1YiIsInByaW1lQ2FjaGUiLCJtYWxsZWFibGUiLCJzZXRHZW5lcmF0b3IiLCJfX3ByaW1lIiwiX3ByaW1lTGVuIiwiX3ByaW1lQ29kZSIsInNpbXBsZVNpZXZlIiwiZmVybWF0VGVzdCIsImNoZWNrUHJpbWUiLCJfX2dlbiIsIl9nZW4iLCJzZWNyZXQiLCJnZXRQcmltZSIsImZyb250IiwiZ2V0R2VuZXJhdG9yIiwiZmluZFByaW1lIiwiRklWRSIsIl9nZXRQcmltZXMiLCJuMiIsImVkZHNhIiwiZ2V0TkFGIiwiZ2V0SlNGIiwiQmFzZUN1cnZlIiwiY29uZiIsInBvaW50RnJvbUpTT04iLCJnUmVkIiwiX3duYWZUMSIsIl93bmFmVDIiLCJfd25hZlQzIiwiX3duYWZUNCIsIl9iaXRMZW5ndGgiLCJhZGp1c3RDb3VudCIsInJlZE4iLCJfbWF4d2VsbFRyaWNrIiwiQmFzZVBvaW50IiwicHJlY29tcHV0ZWQiLCJwb2ludCIsInZhbGlkYXRlIiwiX2ZpeGVkTmFmTXVsIiwiZG91YmxlcyIsIl9nZXREb3VibGVzIiwibmFmIiwic3RlcCIsIm5hZlciLCJyZXByIiwianBvaW50IiwibWl4ZWRBZGQiLCJwb2ludHMiLCJ0b1AiLCJfd25hZk11bCIsIm5hZlBvaW50cyIsIl9nZXROQUZQb2ludHMiLCJkYmxwIiwiX3duYWZNdWxBZGQiLCJkZWZXIiwiY29lZmZzIiwiamFjb2JpYW5SZXN1bHQiLCJ3bmRXaWR0aCIsImNvbWIiLCJ0b0oiLCJqc2YiLCJqYSIsImpiIiwiZGVjb2RlUG9pbnQiLCJwb2ludEZyb21YIiwiZW5jb2RlQ29tcHJlc3NlZCIsImdldFkiLCJwcmVjb21wdXRlIiwicG93ZXIiLCJiZXRhIiwiX2dldEJldGEiLCJfaGFzRG91YmxlcyIsImRibCIsIkVkd2FyZHNDdXJ2ZSIsInR3aXN0ZWQiLCJtT25lQSIsImRkIiwib25lQyIsIlBvaW50Iiwiek9uZSIsIl9tdWxBIiwiX211bEMiLCJyaHMiLCJsaHMiLCJ5MiIsInBvaW50RnJvbVkiLCJpc0luZmluaXR5IiwiZnJvbUpTT04iLCJfZXh0RGJsIiwibngiLCJueSIsIm56IiwiX3Byb2pEYmwiLCJfZXh0QWRkIiwiX3Byb2pBZGQiLCJtdWxBZGQiLCJqbXVsQWRkIiwiemkiLCJlcVhUb1AiLCJzaG9ydCIsImVkd2FyZHMiLCJNb250Q3VydmUiLCJpNCIsImEyNCIsImFhIiwiYmIiLCJkaWZmQWRkIiwiZGEiLCJqdW1sQWRkIiwiU2hvcnRDdXJ2ZSIsInRpbnYiLCJ6ZXJvQSIsInRocmVlQSIsImVuZG8iLCJfZ2V0RW5kb21vcnBoaXNtIiwiX2VuZG9XbmFmVDEiLCJfZW5kb1duYWZUMiIsImlzUmVkIiwiaW5mIiwiSlBvaW50IiwibGFtYmRhIiwiYmV0YXMiLCJfZ2V0RW5kb1Jvb3RzIiwibGFtYmRhcyIsImJhc2lzIiwidmVjIiwiX2dldEVuZG9CYXNpcyIsIm50aW52IiwicHJldlIiLCJhcHJ4U3FydCIsInkxIiwibGVuMSIsIl9lbmRvU3BsaXQiLCJ2MSIsInYyIiwicTEiLCJxMiIsImF4IiwiX2VuZG9XbmFmTXVsQWRkIiwibnBvaW50cyIsIm5jb2VmZnMiLCJwcmUiLCJlbmRvTXVsIiwicGFyc2UiLCJvYmoycG9pbnQiLCJ5czEiLCJkeWludiIsIl9wcmVjb21wdXRlIiwibmVnYXRlIiwiemludiIsInppbnYyIiwiYXkiLCJwejIiLCJ6MiIsInUxIiwidTIiLCJoMiIsImgzIiwiangiLCJqeSIsImp6Iiwiano0IiwianlkIiwiangyIiwianlkMiIsImp5ZDQiLCJkbnkiLCJfemVyb0RibCIsIl90aHJlZURibCIsIl9kYmwiLCJ4eCIsInl5IiwieXl5eSIsInl5eXk4IiwiYzgiLCJnYW1tYSIsImFscGhhIiwiYmV0YTQiLCJiZXRhOCIsImdnYW1tYTgiLCJqeTIiLCJqeGQ0IiwianlkOCIsInRycGwiLCJ6eiIsIm1tIiwieXl1NCIsImtiYXNlIiwiejMiLCJwejMiLCJQcmVzZXRDdXJ2ZSIsImRlZmluZUN1cnZlIiwic2hhMjU2Iiwic2hhMzg0Iiwic2hhNTEyIiwiSG1hY0RSQkciLCJLZXlQYWlyIiwiU2lnbmF0dXJlIiwibmgiLCJrZXlQYWlyIiwiZnJvbVByaXZhdGUiLCJmcm9tUHVibGljIiwiZHJiZyIsInBlcnMiLCJwZXJzRW5jIiwiZW50cm9weSIsImhtYWNTdHJlbmd0aCIsImVudHJvcHlFbmMiLCJub25jZSIsIm5zMiIsIl90cnVuY2F0ZVRvTiIsInRydW5jT25seSIsIm5zMSIsIml0ZXIiLCJrcCIsImtwWCIsInJlY292ZXJ5UGFyYW0iLCJzaW52IiwicmVjb3ZlclB1YktleSIsImlzWU9kZCIsImlzU2Vjb25kS2V5IiwickludiIsImdldEtleVJlY292ZXJ5UGFyYW0iLCJRcHJpbWUiLCJwcml2RW5jIiwicHViRW5jIiwiZGVyaXZlIiwiX2ltcG9ydERFUiIsIlBvc2l0aW9uIiwicGxhY2UiLCJnZXRMZW5ndGgiLCJpbml0aWFsIiwib2N0ZXRMZW4iLCJybVBhZGRpbmciLCJjb25zdHJ1Y3RMZW5ndGgiLCJvY3RldHMiLCJzbGVuIiwiYmFja0hhbGYiLCJwYXJzZUJ5dGVzIiwiRUREU0EiLCJwb2ludENsYXNzIiwiZW5jb2RpbmdMZW5ndGgiLCJrZXlGcm9tU2VjcmV0IiwiaGFzaEludCIsIm1lc3NhZ2VQcmVmaXgiLCJSZW5jb2RlZCIsImVuY29kZVBvaW50Iiwic18iLCJwdWJCeXRlcyIsIm1ha2VTaWduYXR1cmUiLCJTRyIsImludEZyb21MRSIsImZyb21TZWNyZXQiLCJsYXN0SXgiLCJub3JtZWQiLCJ4SXNPZGQiLCJlbmNvZGVJbnQiLCJkZWNvZGVJbnQiLCJpc1BvaW50IiwiY2FjaGVkUHJvcGVydHkiLCJfc2VjcmV0IiwiX3B1YkJ5dGVzIiwicHJpdkJ5dGVzIiwiZ2V0U2VjcmV0IiwiX1IiLCJfUyIsIl9SZW5jb2RlZCIsIl9TZW5jb2RlZCIsIlNlbmNvZGVkIiwidG9CeXRlcyIsInRvSGV4IiwibWluQXNzZXJ0IiwibWluVXRpbHMiLCJ6ZXJvMiIsIm04IiwibTE0IiwibTI0IiwiY29tcHV0ZXIiLCJmaXJzdFNvdXJjZSIsInRvIiwibmV4dFNvdXJjZSIsImtleXNBcnJheSIsIm5leHRJbmRleCIsIm5leHRLZXkiLCJwb2x5ZmlsbCIsInJlY2VpdmVyIiwiZXJyb3JMaXN0ZW5lciIsInJlc29sdmVyIiwiZXZlbnRUYXJnZXRBZ25vc3RpY0FkZExpc3RlbmVyIiwiaGFuZGxlciIsImFkZEVycm9ySGFuZGxlcklmRXZlbnRFbWl0dGVyIiwiY2hlY2tMaXN0ZW5lciIsIl9nZXRNYXhMaXN0ZW5lcnMiLCJ0aGF0IiwiX2FkZExpc3RlbmVyIiwicHJlcGVuZCIsImV2ZW50cyIsImV4aXN0aW5nIiwid2FybmluZyIsIm9uY2VXcmFwcGVyIiwiX29uY2VXcmFwIiwid3JhcHBlZCIsIl9saXN0ZW5lcnMiLCJ1bndyYXAiLCJldmxpc3RlbmVyIiwidW53cmFwTGlzdGVuZXJzIiwiYXJyYXlDbG9uZSIsIndyYXBMaXN0ZW5lciIsImRvRXJyb3IiLCJvcmlnaW5hbExpc3RlbmVyIiwic3BsaWNlT25lIiwic2FsdCIsImtleUJpdHMiLCJrZXlTdGFydCIsIml2U3RhcnQiLCJoYXNPd24iLCJFUlJPUl9NRVNTQUdFIiwiZnVuY1R5cGUiLCJib3VuZCIsImJpbmRlciIsImJvdW5kTGVuZ3RoIiwiYm91bmRBcmdzIiwiRW1wdHkiLCJpbXBsZW1lbnRhdGlvbiIsIiRTeW50YXhFcnJvciIsIlN5bnRheEVycm9yIiwiJEZ1bmN0aW9uIiwiJFR5cGVFcnJvciIsImdldEV2YWxsZWRDb25zdHJ1Y3RvciIsImV4cHJlc3Npb25TeW50YXgiLCJ0aHJvd1R5cGVFcnJvciIsIlRocm93VHlwZUVycm9yIiwiY2FsbGVlVGhyb3dzIiwiZ09QRHRocm93cyIsImdldFByb3RvIiwibmVlZHNFdmFsIiwiVHlwZWRBcnJheSIsIklOVFJJTlNJQ1MiLCJBZ2dyZWdhdGVFcnJvciIsIkF0b21pY3MiLCJkZWNvZGVVUkkiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlbmNvZGVVUkkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJldmFsIiwiRXZhbEVycm9yIiwiRmluYWxpemF0aW9uUmVnaXN0cnkiLCJVUklFcnJvciIsIldlYWtSZWYiLCJkb0V2YWwiLCJMRUdBQ1lfQUxJQVNFUyIsIiRjb25jYXQiLCIkc3BsaWNlQXBwbHkiLCIkcmVwbGFjZSIsIiRzdHJTbGljZSIsInJlUHJvcE5hbWUiLCJyZUVzY2FwZUNoYXIiLCJzdHJpbmdUb1BhdGgiLCJxdW90ZSIsInN1YlN0cmluZyIsImdldEJhc2VJbnRyaW5zaWMiLCJhbGlhcyIsImludHJpbnNpY05hbWUiLCJpbnRyaW5zaWNCYXNlTmFtZSIsImludHJpbnNpY1JlYWxOYW1lIiwic2tpcEZ1cnRoZXJDYWNoaW5nIiwiaXNPd24iLCJwYXJ0Iiwib3JpZ1N5bWJvbCIsImhhc1N5bWJvbFNoYW0iLCJzeW1PYmoiLCJzeW1zIiwiSGFzaEJhc2UiLCJfYmxvY2siLCJfYmxvY2tTaXplIiwiX2Jsb2NrT2Zmc2V0IiwiX2xlbmd0aCIsIl9maW5hbGl6ZWQiLCJ0aHJvd0lmTm90U3RyaW5nT3JCdWZmZXIiLCJfZGlnZXN0IiwiY29tbW9uIiwicmlwZW1kIiwiaG1hYyIsInNoYTEiLCJzaGEyMjQiLCJyaXBlbWQxNjAiLCJCbG9ja0hhc2giLCJwZW5kaW5nVG90YWwiLCJvdXRTaXplIiwicGFkTGVuZ3RoIiwiX2RlbHRhOCIsIl9kZWx0YTMyIiwiam9pbjMyIiwiaW5uZXIiLCJvdXRlciIsInJvdGwzMiIsInN1bTMyIiwic3VtMzJfMyIsInN1bTMyXzQiLCJLaCIsIkFoIiwiQmgiLCJDaCIsIkRoIiwiRWgiLCJyaCIsInNoIiwidG9IZXgzMiIsInNwbGl0MzIiLCJzaGFDb21tb24iLCJzdW0zMl81IiwiZnRfMSIsInNoYTFfSyIsIlNIQTEiLCJTSEEyNTYiLCJTSEEyMjQiLCJjaDMyIiwibWFqMzIiLCJzMF8yNTYiLCJzMV8yNTYiLCJnMF8yNTYiLCJnMV8yNTYiLCJzaGEyNTZfSyIsIlQxIiwiVDIiLCJTSEE1MTIiLCJTSEEzODQiLCJyb3RyNjRfaGkiLCJyb3RyNjRfbG8iLCJzaHI2NF9oaSIsInNocjY0X2xvIiwic3VtNjQiLCJzdW02NF9oaSIsInN1bTY0X2xvIiwic3VtNjRfNF9oaSIsInN1bTY0XzRfbG8iLCJzdW02NF81X2hpIiwic3VtNjRfNV9sbyIsInNoYTUxMl9LIiwiY2g2NF9oaSIsInhoIiwieGwiLCJ5aCIsInlsIiwiemgiLCJjaDY0X2xvIiwiemwiLCJtYWo2NF9oaSIsIm1hajY0X2xvIiwiczBfNTEyX2hpIiwiczBfNTEyX2xvIiwiczFfNTEyX2xvIiwiZzBfNTEyX2hpIiwiZzBfNTEyX2xvIiwiZzFfNTEyX2xvIiwiX3ByZXBhcmVCbG9jayIsImMwX2hpIiwiYzBfbG8iLCJjMV9oaSIsImMxX2xvIiwiYzJfaGkiLCJjMl9sbyIsImMzX2hpIiwiYzNfbG8iLCJhaCIsImFsIiwiYmgiLCJjaCIsImNsIiwiZGwiLCJlaCIsImVsIiwiZmgiLCJmbCIsImdoIiwiZ2wiLCJoaCIsImhsIiwiYzRfaGkiLCJjNF9sbyIsIlQxX2hpIiwiVDFfbG8iLCJUMl9oaSIsIlQyX2xvIiwicm90cjMyIiwicDMyIiwiaXNTdXJyb2dhdGVQYWlyIiwiaHRvbmwiLCJ6ZXJvOCIsInByZWRSZXNpc3QiLCJtaW5FbnRyb3B5IiwiX3Jlc2VlZCIsInJlc2VlZEludGVydmFsIiwibm9uY2VFbmMiLCJzZWVkIiwiX2htYWMiLCJrbWFjIiwicmVzZWVkIiwiYWRkRW5jIiwiaXNMRSIsIm1MZW4iLCJuQnl0ZXMiLCJlTGVuIiwiZU1heCIsImVCaWFzIiwibkJpdHMiLCJoYXNUb1N0cmluZ1RhZyIsIiR0b1N0cmluZyIsImNhbGxCb3VuZCIsImlzU3RhbmRhcmRBcmd1bWVudHMiLCJpc0xlZ2FjeUFyZ3VtZW50cyIsImNhbGxlZSIsInN1cHBvcnRzU3RhbmRhcmRBcmd1bWVudHMiLCJHZW5lcmF0b3JGdW5jdGlvbiIsImZuVG9TdHIiLCJpc0ZuUmVnZXgiLCJnZW5lcmF0b3JGdW5jIiwiZ2V0R2VuZXJhdG9yRnVuYyIsImdldFBvbHlmaWxsIiwic2hpbSIsImF2YWlsYWJsZVR5cGVkQXJyYXlzIiwidHlwZWRBcnJheXMiLCIkc2xpY2UiLCJ0b1N0clRhZ3MiLCJnT1BEIiwidHlwZWRBcnJheSIsImFueVRydWUiLCJnZXR0ZXIiLCJ0cnlUeXBlZEFycmF5cyIsIkFSUkFZMTYiLCJfYSIsIl9iIiwiX2MiLCJyb3RsIiwiZm5GIiwiZm5HIiwiZm5IIiwiZm5JIiwiYnJvcmFuZCIsIk1pbGxlclJhYmluIiwiX3JhbmRiZWxvdyIsIm1pbl9ieXRlcyIsIl9yYW5kcmFuZ2UiLCJzdG9wIiwicm9uZSIsInJuMSIsImdldERpdmlzb3IiLCJrZXlzU2hpbSIsImlzQXJncyIsImlzRW51bWVyYWJsZSIsImhhc0RvbnRFbnVtQnVnIiwiaGFzUHJvdG9FbnVtQnVnIiwiZG9udEVudW1zIiwiZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGUiLCJleGNsdWRlZEtleXMiLCIkYXBwbGljYXRpb25DYWNoZSIsIiRjb25zb2xlIiwiJGV4dGVybmFsIiwiJGZyYW1lIiwiJGZyYW1lRWxlbWVudCIsIiRmcmFtZXMiLCIkaW5uZXJIZWlnaHQiLCIkaW5uZXJXaWR0aCIsIiRvbm1vemZ1bGxzY3JlZW5jaGFuZ2UiLCIkb25tb3pmdWxsc2NyZWVuZXJyb3IiLCIkb3V0ZXJIZWlnaHQiLCIkb3V0ZXJXaWR0aCIsIiRwYWdlWE9mZnNldCIsIiRwYWdlWU9mZnNldCIsIiRwYXJlbnQiLCIkc2Nyb2xsTGVmdCIsIiRzY3JvbGxUb3AiLCIkc2Nyb2xsWCIsIiRzY3JvbGxZIiwiJHNlbGYiLCIkd2Via2l0SW5kZXhlZERCIiwiJHdlYmtpdFN0b3JhZ2VJbmZvIiwiJHdpbmRvdyIsImhhc0F1dG9tYXRpb25FcXVhbGl0eUJ1ZyIsImlzT2JqZWN0IiwiaXNGdW5jdGlvbiIsImlzQXJndW1lbnRzIiwiaXNTdHJpbmciLCJ0aGVLZXlzIiwic2tpcFByb3RvIiwic2tpcENvbnN0cnVjdG9yIiwiZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGVJZk5vdEJ1Z2d5Iiwib3JpZ0tleXMiLCJvcmlnaW5hbEtleXMiLCJjZXJ0aWZpY2F0ZSIsIlJTQVByaXZhdGVLZXkiLCJzZXEiLCJpbnQiLCJSU0FQdWJsaWNLZXkiLCJQdWJsaWNLZXkiLCJBbGdvcml0aG1JZGVudGlmaWVyIiwiYml0c3RyIiwibnVsbF8iLCJQcml2YXRlS2V5SW5mbyIsIm9jdHN0ciIsIlByaXZhdGVLZXkiLCJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyIsIkVuY3J5cHRlZFByaXZhdGVLZXkiLCJEU0FQcml2YXRlS2V5IiwiRFNBcGFyYW0iLCJFQ1ByaXZhdGVLZXkiLCJFQ1BhcmFtZXRlcnMiLCJuYW1lZEN1cnZlIiwiYXNuIiwiVGltZSIsInV0Y1RpbWUiLCJ1dGN0aW1lIiwiZ2VuZXJhbFRpbWUiLCJnZW50aW1lIiwiQXR0cmlidXRlVHlwZVZhbHVlIiwiU3ViamVjdFB1YmxpY0tleUluZm8iLCJSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lIiwic2V0b2YiLCJSRE5TZXF1ZW5jZSIsInNlcW9mIiwiTmFtZSIsInJkblNlcXVlbmNlIiwiVmFsaWRpdHkiLCJFeHRlbnNpb24iLCJib29sIiwiVEJTQ2VydGlmaWNhdGUiLCJYNTA5Q2VydGlmaWNhdGUiLCJmaW5kUHJvYyIsInN0YXJ0UmVnZXgiLCJmdWxsUmVnZXgiLCJldnAiLCJva2V5IiwiZGVjcnlwdGVkIiwiY2lwaGVyVGV4dCIsImNpcGhlcktleSIsImNpcGhlciIsIm1hdGNoMiIsImFlc2lkIiwiZml4UHJvYyIsImNvbXBhdCIsInBhc3NwaHJhc2UiLCJzdWJ0eXBlIiwibmRhdGEiLCJzdHJpcHBlZCIsInRic0NlcnRpZmljYXRlIiwic3ViamVjdFB1YmxpY0tleUluZm8iLCJzdWJqZWN0UHVibGljS2V5Iiwia2RlIiwia2RlcGFyYW1zIiwiaXRlcnMiLCJrZXlsZW4iLCJwYXJhbWV0ZXJzIiwiWkVST19CVUYiLCJjaGVja1BhcmFtZXRlcnMiLCJzdWJ0bGUiLCJ0b0Jyb3dzZXIiLCJjaGVja3MiLCJnZXROZXh0VGljayIsInF1ZXVlTWljcm90YXNrIiwic2V0SW1tZWRpYXRlIiwiYnJvd3NlclBia2RmMiIsIml0ZXJhdGlvbnMiLCJpbXBvcnRLZXkiLCJkZXJpdmVCaXRzIiwicmVzb2x2ZVByb21pc2UiLCJwcm9tIiwiY2hlY2tOYXRpdmUiLCJyZXNwIiwiTUFYX0FMTE9DIiwic2l6ZXMiLCJybWQxNjAiLCJzYWx0TGVuIiwiZ2V0RGlnZXN0IiwiaXBhZDEiLCJpcGFkMiIsIkRLIiwiYmxvY2sxIiwiZGVzdFBvcyIsImhMZW4iLCJjYWNoZWRTZXRUaW1lb3V0IiwiY2FjaGVkQ2xlYXJUaW1lb3V0IiwiZGVmYXVsdFNldFRpbW91dCIsImRlZmF1bHRDbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiY3VycmVudFF1ZXVlIiwicXVldWUiLCJkcmFpbmluZyIsInF1ZXVlSW5kZXgiLCJjbGVhblVwTmV4dFRpY2siLCJkcmFpblF1ZXVlIiwidGltZW91dCIsIm1hcmtlciIsInJ1bkNsZWFyVGltZW91dCIsIkl0ZW0iLCJub29wIiwiaTJvcHMiLCJtZ2YiLCJ3aXRoUHVibGljIiwiekJ1ZmZlciIsImlIYXNoIiwibWFza2VkU2VlZCIsIm1hc2tlZERiIiwiZGIiLCJkaWYiLCJvYWVwIiwicHMiLCJwa2NzMSIsInB1YmxpY0tleSIsInBhZGRlZE1zZyIsImhMZW4yIiwiZGJsZW4iLCJub25aZXJvIiwiTUFYX0JZVEVTIiwiZ2VuZXJhdGVkIiwib2xkQnJvd3NlciIsInNhZmVCdWZmZXIiLCJyYW5kb21ieXRlcyIsImtCdWZmZXJNYXhMZW5ndGgiLCJrTWF4VWludDMyIiwiYXNzZXJ0T2Zmc2V0IiwiYWN0dWFsRmlsbCIsIm91ckJ1ZiIsInVpbnQiLCJvYmplY3RLZXlzIiwib25lbmQiLCJvbkVuZE5UIiwiZGVidWciLCJFRWxpc3RlbmVyQ291bnQiLCJPdXJVaW50OEFycmF5IiwiZGVidWdVdGlsIiwiY3JlYXRlUmVhZGFibGVTdHJlYW1Bc3luY0l0ZXJhdG9yIiwiQnVmZmVyTGlzdCIsImRlc3Ryb3lJbXBsIiwia1Byb3h5RXZlbnRzIiwiaXNEdXBsZXgiLCJyZWFkYWJsZUFkZENodW5rIiwiYWRkVG9Gcm9udCIsInNraXBDaHVua0NoZWNrIiwiZW1pdFJlYWRhYmxlIiwiZW1pdFJlYWRhYmxlXyIsIm9uRW9mQ2h1bmsiLCJjaHVua0ludmFsaWQiLCJfdWludDhBcnJheVRvQnVmZmVyIiwiYWRkQ2h1bmsiLCJtYXliZVJlYWRNb3JlIiwiTUFYX0hXTSIsImhvd011Y2hUb1JlYWQiLCJjb21wdXRlTmV3SGlnaFdhdGVyTWFyayIsIm1heWJlUmVhZE1vcmVfIiwidXBkYXRlUmVhZGFibGVMaXN0ZW5pbmciLCJuUmVhZGluZ05leHRUaWNrIiwicmVzdW1lXyIsImZyb21MaXN0IiwiZW5kUmVhZGFibGUiLCJlbmRSZWFkYWJsZU5UIiwid1N0YXRlIiwieHMiLCJuT3JpZyIsImRvUmVhZCIsInBpcGVPcHRzIiwiZW5kRm4iLCJvbnVucGlwZSIsInVucGlwZUluZm8iLCJvbmNsb3NlIiwib25maW5pc2giLCJvbmRyYWluIiwib25kYXRhIiwiY2xlYW5lZFVwIiwicGlwZU9uRHJhaW4iLCJldmVudCIsImRlc3RzIiwiZXYiLCJpdGVyYWJsZSIsInRzIiwicnMiLCJwcmVmaW5pc2giLCJlcnIyIiwiQ29ya2VkUmVxdWVzdCIsImNvcmtSZXEiLCJvbkNvcmtlZEZpbmlzaCIsInJlYWxIYXNJbnN0YW5jZSIsImludGVybmFsVXRpbCIsIm5vcCIsIm5vRGVjb2RlIiwib253cml0ZVN0YXRlVXBkYXRlIiwiZmluaXNoTWF5YmUiLCJvbndyaXRlRXJyb3IiLCJuZWVkRmluaXNoIiwiY2xlYXJCdWZmZXIiLCJhZnRlcldyaXRlIiwiZG9Xcml0ZSIsIm9ud3JpdGVEcmFpbiIsImhvbGRlciIsImNhbGxGaW5hbCIsIm5lZWQiLCJyU3RhdGUiLCJ3cml0ZUFmdGVyRW5kIiwidmFsaWRDaHVuayIsIm5ld0NodW5rIiwiZGVjb2RlQ2h1bmsiLCJ3cml0ZU9yQnVmZmVyIiwiZW5kV3JpdGFibGUiLCJfT2JqZWN0JHNldFByb3RvdHlwZU8iLCJrTGFzdFJlc29sdmUiLCJrTGFzdFJlamVjdCIsImtFcnJvciIsImtFbmRlZCIsImtMYXN0UHJvbWlzZSIsImtIYW5kbGVQcm9taXNlIiwia1N0cmVhbSIsImNyZWF0ZUl0ZXJSZXN1bHQiLCJyZWFkQW5kUmVzb2x2ZSIsIm9uUmVhZGFibGUiLCJBc3luY0l0ZXJhdG9yUHJvdG90eXBlIiwiUmVhZGFibGVTdHJlYW1Bc3luY0l0ZXJhdG9yUHJvdG90eXBlIiwibGFzdFByb21pc2UiLCJ3cmFwRm9yTmV4dCIsIl9PYmplY3QkY3JlYXRlIiwiZW51bWVyYWJsZU9ubHkiLCJzeW1ib2xzIiwiaGFzU3RyaW5ncyIsIm5iIiwiZW1pdEVycm9yQW5kQ2xvc2VOVCIsImVtaXRFcnJvck5UIiwicmVhZGFibGVEZXN0cm95ZWQiLCJ3cml0YWJsZURlc3Ryb3llZCIsImVvcyIsImNhbGxlZCIsIm9ubGVnYWN5ZmluaXNoIiwid3JpdGFibGVFbmRlZCIsInJlYWRhYmxlRW5kZWQiLCJvbnJlcXVlc3QiLCJpc1JlcXVlc3QiLCJkZXN0cm95ZXIiLCJjbG9zZWQiLCJwb3BDYWxsYmFjayIsInN0cmVhbXMiLCJkZXN0cm95cyIsImR1cGxleEtleSIsImh3bSIsImhpZ2hXYXRlck1hcmtGcm9tIiwienIiLCJzbCIsImZuMSIsImZuMiIsImZuMyIsImZuNCIsImZuNSIsInRsIiwiY29weVByb3BzIiwiU2FmZUJ1ZmZlciIsInNhZmVyIiwiU2FmZXIiLCJrU3RyaW5nTWF4TGVuZ3RoIiwiTUFYX0xFTkdUSCIsIk1BWF9TVFJJTkdfTEVOR1RIIiwiZmluYWxTaXplIiwiX2ZpbmFsU2l6ZSIsImFjY3VtIiwiYXNzaWduZWQiLCJyZW1haW5kZXIiLCJsb3dCaXRzIiwiaGlnaEJpdHMiLCJBbGdvcml0aG0iLCJTaGEiLCJfdyIsInJvdGwzMCIsIlNoYTEiLCJyb3RsNSIsIlNoYTI1NiIsIlNoYTIyNCIsIl9mIiwiX2ciLCJfaCIsIm1haiIsInNpZ21hMCIsInNpZ21hMSIsImdhbW1hMCIsIlNoYTM4NCIsIl9haCIsIl9iaCIsIl9jaCIsIl9kaCIsIl9laCIsIl9maCIsIl9naCIsIl9oaCIsIl9hbCIsIl9ibCIsIl9jbCIsIl9kbCIsIl9lbCIsIl9mbCIsIl9nbCIsIl9obCIsIndyaXRlSW50NjRCRSIsIlNoYTUxMiIsIkdhbW1hMCIsIkdhbW1hMGwiLCJHYW1tYTEiLCJHYW1tYTFsIiwiZ2V0Q2FycnkiLCJnYW1tYTBsIiwiZ2FtbWExIiwiZ2FtbWExbCIsIldpN2giLCJXaTdsIiwiV2kxNmgiLCJXaTE2bCIsIldpbCIsIldpaCIsIm1hamgiLCJtYWpsIiwic2lnbWEwaCIsInNpZ21hMGwiLCJzaWdtYTFoIiwic2lnbWExbCIsIktpaCIsIktpbCIsImNoaCIsImNobCIsInQxbCIsInQxaCIsInQybCIsInQyaCIsIkVFIiwiZGlkT25FbmQiLCJjbGVhbnVwIiwibmVuYyIsInJldHJpZWQiLCJfbm9ybWFsaXplRW5jb2RpbmciLCJub3JtYWxpemVFbmNvZGluZyIsInV0ZjE2VGV4dCIsInV0ZjE2RW5kIiwidXRmOEZpbGxMYXN0IiwiYmFzZTY0VGV4dCIsImJhc2U2NEVuZCIsInNpbXBsZVdyaXRlIiwic2ltcGxlRW5kIiwidXRmOENoZWNrQnl0ZSIsInV0ZjhDaGVja0V4dHJhQnl0ZXMiLCJ1dGY4Q2hlY2tJbmNvbXBsZXRlIiwiVHJ1c3RsaXN0IiwiaW5pdGlhbGl6ZWQiLCJjZXJ0SW5mb3MiLCJjZXJ0cyIsIkNvc2UxIiwicHJvdGVjdGVkXyIsInVucHJvdGVjdGVkIiwicGF5bG9hZCIsInNpZ25hdHVyZXMiLCJjYm9yIiwiZW5jb2RlZERhdGEiLCJkZWNvZGVkRGF0YSIsImNvc2UxIiwibWFrZURhdGFGb3JWZXJpZmljYXRpb24iLCJyYXcxIiwicmF3MiIsImVuY29kZWRVbnNpZ25lZEludGVnZXIiLCJwdHIiLCJjb21wdXRlTGVuZ3RoIiwic3JjcG9zIiwiZGVzdHBvcyIsImVuY29kZVNpZ25hdHVyZSIsIkV1RGdjIiwiY2JvcldlYiIsImN3dCIsImV1ZGdjIiwiZ2V0Q2VydEluZm9zIiwiZXhwbGljaXRDZXJ0cyIsImNlcnRGaWx0ZXIiLCJvbGRDb3VudCIsImluZm8iLCJjZXJ0SW5mbyIsIm5vdGJlZm9yZSIsIm5vdGFmdGVyIiwic3ViamVjdCIsIkV1RGdjX3BhcnNlIiwiRXVEZ2NfdmFsaWRhdGUiLCJ3aGljaFR5cGVkQXJyYXkiLCJCaWdJbnRTdXBwb3J0ZWQiLCJTeW1ib2xTdXBwb3J0ZWQiLCJPYmplY3RUb1N0cmluZyIsIm51bWJlclZhbHVlIiwic3RyaW5nVmFsdWUiLCJib29sZWFuVmFsdWUiLCJiaWdJbnRWYWx1ZSIsInN5bWJvbFZhbHVlIiwiY2hlY2tCb3hlZFByaW1pdGl2ZSIsInByb3RvdHlwZVZhbHVlT2YiLCJpc01hcFRvU3RyaW5nIiwiaXNTZXRUb1N0cmluZyIsImlzV2Vha01hcFRvU3RyaW5nIiwiaXNXZWFrU2V0VG9TdHJpbmciLCJpc0FycmF5QnVmZmVyVG9TdHJpbmciLCJ3b3JraW5nIiwiaXNEYXRhVmlld1RvU3RyaW5nIiwiaXNVaW50OEFycmF5IiwiaXNVaW50OENsYW1wZWRBcnJheSIsImlzVWludDE2QXJyYXkiLCJpc1VpbnQzMkFycmF5IiwiaXNJbnQ4QXJyYXkiLCJpc0ludDE2QXJyYXkiLCJpc0ludDMyQXJyYXkiLCJpc0JpZ0ludDY0QXJyYXkiLCJpc0JpZ1VpbnQ2NEFycmF5IiwiU2hhcmVkQXJyYXlCdWZmZXJDb3B5IiwiaXNTaGFyZWRBcnJheUJ1ZmZlclRvU3RyaW5nIiwiaXNTaGFyZWRBcnJheUJ1ZmZlciIsImlzR2VuZXJhdG9yT2JqZWN0IiwiaXNXZWJBc3NlbWJseUNvbXBpbGVkTW9kdWxlIiwiZGVzY3JpcHRvcnMiLCJmb3JtYXRSZWdFeHAiLCJvYmplY3RzIiwiaXNOdWxsIiwibm9EZXByZWNhdGlvbiIsInRocm93RGVwcmVjYXRpb24iLCJ0cmFjZURlcHJlY2F0aW9uIiwiZGVidWdzIiwiZGVidWdFbnZSZWdleCIsIk5PREVfREVCVUciLCJkZWJ1Z0VudiIsInN0eWxpemVOb0NvbG9yIiwiaXNCb29sZWFuIiwiX2V4dGVuZCIsImlzVW5kZWZpbmVkIiwiZm9ybWF0VmFsdWUiLCJzdHlsZVR5cGUiLCJzdHlsZSIsInNpbXBsZSIsImlzTnVtYmVyIiwiZm9ybWF0UHJpbWl0aXZlIiwidmlzaWJsZUtleXMiLCJpZHgiLCJhcnJheVRvSGFzaCIsImZvcm1hdEVycm9yIiwiYnJhY2VzIiwidG9VVENTdHJpbmciLCJmb3JtYXRQcm9wZXJ0eSIsImZvcm1hdEFycmF5IiwicmVkdWNlVG9TaW5nbGVTdHJpbmciLCJsaW5lIiwicGlkIiwidHlwZXMiLCJpc051bGxPclVuZGVmaW5lZCIsImlzU3ltYm9sIiwiaXNQcmltaXRpdmUiLCJtb250aHMiLCJ0aW1lc3RhbXAiLCJnZXRIb3VycyIsImdldE1pbnV0ZXMiLCJnZXRTZWNvbmRzIiwiZ2V0RGF0ZSIsImdldE1vbnRoIiwib3JpZ2luIiwia0N1c3RvbVByb21pc2lmaWVkU3ltYm9sIiwiY2FsbGJhY2tpZnlPblJlamVjdGVkIiwibmV3UmVhc29uIiwicHJvbWlzaWZ5Iiwib3JpZ2luYWwiLCJwcm9taXNlUmVzb2x2ZSIsInByb21pc2VSZWplY3QiLCJjYWxsYmFja2lmeSIsImNhbGxiYWNraWZpZWQiLCJtYXliZUNiIiwicmVqIiwiZm91bmROYW1lIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwibG9hZGVkIiwiX193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UUFBUSxRQUFRLFFBQVEsTUFBTSxNQUFNLE1BQU0sUUFBUSxNQUFNLE1BQU0sUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLFFBQVEsUUFBUSxTQUFTQyxHQUFHLElBQUlyYixFQUFFLHVKQUF1SixLQUFLLElBQUlzYixHQUFHLFNBQVNDLEdBQUd6bkUsRUFBRTlOLEdBQUcsTUFBTWtLLEVBQUUsQ0FBQ3NyRSxPQUFPLEdBQUdDLGVBQWUsRUFBRUMsS0FBSyxHQUFHQyxhQUFh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QUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBRWxELEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQ2pELEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQ3BELEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQ2pELEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBRXBELEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQ25ELEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQ25ELEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQ3BELEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBRWpELEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQ3BELEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQ2xELEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQ25ELEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBRWxELEdBQUksR0FBSSxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQ25ELEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQ25ELEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQ2xELEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBRWxELEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQ25ELEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQ2xELEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQ3BELEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBRWpELEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEVBQ25ELEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcs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RUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxrRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0Usa0VBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esc0VBSU5OLElBQUssQ0FDSHJ3RSxJQUFLLEVBQ0wyd0UsT0FBUSxDQUNOLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0Usa0VBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxrRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG1FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLGtFQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0EsbUVBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLGtFQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsaUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0Usa0VBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxtRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYsQ0FDRSxtRUFDQSxvRUFFRixDQUNFLG1FQUNBLG9FQUVGLENBQ0UsbUVBQ0Esb0VBRUYs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LEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FDbEQsRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFDbkQsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQUksSUFHaER3OUYsRUFBSyxDQUNQLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQ2xELEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQ25ELEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQ2xELEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQ2xELEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLElBR2hEaHhGLEVBQUksQ0FDTixHQUFJLEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUNyRCxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUNwRCxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEdBQUksR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxFQUNyRCxHQUFJLEdBQUksR0FBSSxHQUFJLEdB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QUFHLEdBQ2xELEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQ25ELEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLElBR2hEMlksRUFBSyxDQUNQLEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEVBQUcsR0FBSSxFQUFHLEdBQ2xELEVBQUcsR0FBSSxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQ25ELEdBQUksRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxFQUFHLEdBQUksRUFBRyxFQUFHLEdBQ2xELEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxHQUFJLEdBQUksRUFBRyxFQUFHLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEdBQ2xELEdBQUksR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxFQUFHLElBR2hEQyxFQUFLLENBQ1AsR0FBSSxHQUFJLEdBQUksR0FBSSxFQUFHLEVBQUcsRUFBRyxFQUFHLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsRUFDckQsRUFBRyxFQUFHLEVBQUcsR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEVBQUcsR0FBSSxFQUFHLEdBQUksR0FDcEQsR0FBSSxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsR0FBSSxHQUFJLEdBQUksRUFBRyxHQUFJLEVBQUcsRUFBRyxHQUFJLEVBQUcsRUFDckQsR0FBSSxHQUFJLEdBQUksR0FBSSxHQUFJLEdBQUksRUFBRyxFQUFHLEVBQUcsR0FBSSxFQUFHLEVB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SCxHQUFVdjNILEtBQUttRSxFQUFPckYsUUFBU3FGLEVBQVFBLEVBQU9yRixRQUFTdzRILEdBRzNFbnpILEVBQU9zekgsUUFBUyxFQUdUdHpILEVBQU9yRixRQ3ZCZnc0SCxFQUFvQjE1RyxFQUFLelosSUFDeEIsSUFBSXN4RyxFQUFTdHhHLEdBQVVBLEVBQU93ekgsV0FDN0IsSUFBT3h6SCxFQUFpQixRQUN4QixJQUFNLEVBRVAsT0FEQW16SCxFQUFvQnI4RixFQUFFdzZFLEVBQVEsQ0FBRWpqRyxFQUFHaWpHLElBQzVCQSxHQ0xSNmhCLEVBQW9CcjhGLEVBQUksQ0FBQ244QixFQUFTODRILEtBQ2pDLElBQUksSUFBSTl6SCxLQUFPOHpILEVBQ1hOLEVBQW9CNWdILEVBQUVraEgsRUFBWTl6SCxLQUFTd3pILEVBQW9CNWdILEVBQUU1WCxFQUFTZ0YsSUFDNUVvQixPQUFPa29CLGVBQWV0dUIsRUFBU2dGLEVBQUssQ0FBRXVwQixZQUFZLEVBQU1lLElBQUt3cEcsRUFBVzl6SCxNQ0ozRXd6SCxFQUFvQnoxRyxFQUFJLFdBQ3ZCLEdBQTBCLGlCQUFmK2dFLFdBQXlCLE9BQU9BLFdBQzNDLElBQ0MsT0FBT25qRixNQUFRLElBQUl5dUIsU0FBUyxjQUFiLEdBQ2QsTUFBTzduQixHQUNSLEdBQXNCLGlCQUFYNEosT0FBcUIsT0FBT0EsUUFMakIsR0NBeEJxbkgsRUFBb0I1Z0gsRUFBSSxDQUFDL1MsRUFBS1ksSUFBVVcsT0FBT3hGLFVBQVVTLGVBQWVILEtBQUsyRCxFQUFLWSxHQ0FsRit5SCxFQUFvQk8sSUFBTzF6SCxJQUMxQkEsRUFBTzJ6SCxNQUFRLEdBQ1YzekgsRUFBT2YsV0FBVWUsRUFBT2YsU0FBVyxJQUNqQ2UsR0NBa0JtekgsRUFBb0IsTyIsImZpbGUiOiJldWRnYy5qcyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuY29uc3QgYXNuMSA9IGV4cG9ydHM7XG5cbmFzbjEuYmlnbnVtID0gcmVxdWlyZSgnYm4uanMnKTtcblxuYXNuMS5kZWZpbmUgPSByZXF1aXJlKCcuL2FzbjEvYXBpJykuZGVmaW5lO1xuYXNuMS5iYXNlID0gcmVxdWlyZSgnLi9hc24xL2Jhc2UnKTtcbmFzbjEuY29uc3RhbnRzID0gcmVxdWlyZSgnLi9hc24xL2NvbnN0YW50cycpO1xuYXNuMS5kZWNvZGVycyA9IHJlcXVpcmUoJy4vYXNuMS9kZWNvZGVycycpO1xuYXNuMS5lbmNvZGVycyA9IHJlcXVpcmUoJy4vYXNuMS9lbmNvZGVycycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBlbmNvZGVycyA9IHJlcXVpcmUoJy4vZW5jb2RlcnMnKTtcbmNvbnN0IGRlY29kZXJzID0gcmVxdWlyZSgnLi9kZWNvZGVycycpO1xuY29uc3QgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5jb25zdCBhcGkgPSBleHBvcnRzO1xuXG5hcGkuZGVmaW5lID0gZnVuY3Rpb24gZGVmaW5lKG5hbWUsIGJvZHkpIHtcbiAgcmV0dXJuIG5ldyBFbnRpdHkobmFtZSwgYm9keSk7XG59O1xuXG5mdW5jdGlvbiBFbnRpdHkobmFtZSwgYm9keSkge1xuICB0aGlzLm5hbWUgPSBuYW1lO1xuICB0aGlzLmJvZHkgPSBib2R5O1xuXG4gIHRoaXMuZGVjb2RlcnMgPSB7fTtcbiAgdGhpcy5lbmNvZGVycyA9IHt9O1xufVxuXG5FbnRpdHkucHJvdG90eXBlLl9jcmVhdGVOYW1lZCA9IGZ1bmN0aW9uIGNyZWF0ZU5hbWVkKEJhc2UpIHtcbiAgY29uc3QgbmFtZSA9IHRoaXMubmFtZTtcblxuICBmdW5jdGlvbiBHZW5lcmF0ZWQoZW50aXR5KSB7XG4gICAgdGhpcy5faW5pdE5hbWVkKGVudGl0eSwgbmFtZSk7XG4gIH1cbiAgaW5oZXJpdHMoR2VuZXJhdGVkLCBCYXNlKTtcbiAgR2VuZXJhdGVkLnByb3RvdHlwZS5faW5pdE5hbWVkID0gZnVuY3Rpb24gX2luaXROYW1lZChlbnRpdHksIG5hbWUpIHtcbiAgICBCYXNlLmNhbGwodGhpcywgZW50aXR5LCBuYW1lKTtcbiAgfTtcblxuICByZXR1cm4gbmV3IEdlbmVyYXRlZCh0aGlzKTtcbn07XG5cbkVudGl0eS5wcm90b3R5cGUuX2dldERlY29kZXIgPSBmdW5jdGlvbiBfZ2V0RGVjb2RlcihlbmMpIHtcbiAgZW5jID0gZW5jIHx8ICdkZXInO1xuICAvLyBMYXppbHkgY3JlYXRlIGRlY29kZXJcbiAgaWYgKCF0aGlzLmRlY29kZXJzLmhhc093blByb3BlcnR5KGVuYykpXG4gICAgdGhpcy5kZWNvZGVyc1tlbmNdID0gdGhpcy5fY3JlYXRlTmFtZWQoZGVjb2RlcnNbZW5jXSk7XG4gIHJldHVybiB0aGlzLmRlY29kZXJzW2VuY107XG59O1xuXG5FbnRpdHkucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShkYXRhLCBlbmMsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHRoaXMuX2dldERlY29kZXIoZW5jKS5kZWNvZGUoZGF0YSwgb3B0aW9ucyk7XG59O1xuXG5FbnRpdHkucHJvdG90eXBlLl9nZXRFbmNvZGVyID0gZnVuY3Rpb24gX2dldEVuY29kZXIoZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAnZGVyJztcbiAgLy8gTGF6aWx5IGNyZWF0ZSBlbmNvZGVyXG4gIGlmICghdGhpcy5lbmNvZGVycy5oYXNPd25Qcm9wZXJ0eShlbmMpKVxuICAgIHRoaXMuZW5jb2RlcnNbZW5jXSA9IHRoaXMuX2NyZWF0ZU5hbWVkKGVuY29kZXJzW2VuY10pO1xuICByZXR1cm4gdGhpcy5lbmNvZGVyc1tlbmNdO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgZW5jLCAvKiBpbnRlcm5hbCAqLyByZXBvcnRlcikge1xuICByZXR1cm4gdGhpcy5fZ2V0RW5jb2RlcihlbmMpLmVuY29kZShkYXRhLCByZXBvcnRlcik7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5jb25zdCBSZXBvcnRlciA9IHJlcXVpcmUoJy4uL2Jhc2UvcmVwb3J0ZXInKS5SZXBvcnRlcjtcbmNvbnN0IEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmVyLWJ1ZmZlcicpLkJ1ZmZlcjtcblxuZnVuY3Rpb24gRGVjb2RlckJ1ZmZlcihiYXNlLCBvcHRpb25zKSB7XG4gIFJlcG9ydGVyLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJhc2UpKSB7XG4gICAgdGhpcy5lcnJvcignSW5wdXQgbm90IEJ1ZmZlcicpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoaXMuYmFzZSA9IGJhc2U7XG4gIHRoaXMub2Zmc2V0ID0gMDtcbiAgdGhpcy5sZW5ndGggPSBiYXNlLmxlbmd0aDtcbn1cbmluaGVyaXRzKERlY29kZXJCdWZmZXIsIFJlcG9ydGVyKTtcbmV4cG9ydHMuRGVjb2RlckJ1ZmZlciA9IERlY29kZXJCdWZmZXI7XG5cbkRlY29kZXJCdWZmZXIuaXNEZWNvZGVyQnVmZmVyID0gZnVuY3Rpb24gaXNEZWNvZGVyQnVmZmVyKGRhdGEpIHtcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBEZWNvZGVyQnVmZmVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBPciBhY2NlcHQgY29tcGF0aWJsZSBBUElcbiAgY29uc3QgaXNDb21wYXRpYmxlID0gdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmXG4gICAgQnVmZmVyLmlzQnVmZmVyKGRhdGEuYmFzZSkgJiZcbiAgICBkYXRhLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdEZWNvZGVyQnVmZmVyJyAmJlxuICAgIHR5cGVvZiBkYXRhLm9mZnNldCA9PT0gJ251bWJlcicgJiZcbiAgICB0eXBlb2YgZGF0YS5sZW5ndGggPT09ICdudW1iZXInICYmXG4gICAgdHlwZW9mIGRhdGEuc2F2ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBkYXRhLnJlc3RvcmUgPT09ICdmdW5jdGlvbicgJiZcbiAgICB0eXBlb2YgZGF0YS5pc0VtcHR5ID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIGRhdGEucmVhZFVJbnQ4ID09PSAnZnVuY3Rpb24nICYmXG4gICAgdHlwZW9mIGRhdGEuc2tpcCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIHR5cGVvZiBkYXRhLnJhdyA9PT0gJ2Z1bmN0aW9uJztcblxuICByZXR1cm4gaXNDb21wYXRpYmxlO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuc2F2ZSA9IGZ1bmN0aW9uIHNhdmUoKSB7XG4gIHJldHVybiB7IG9mZnNldDogdGhpcy5vZmZzZXQsIHJlcG9ydGVyOiBSZXBvcnRlci5wcm90b3R5cGUuc2F2ZS5jYWxsKHRoaXMpIH07XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yZXN0b3JlID0gZnVuY3Rpb24gcmVzdG9yZShzYXZlKSB7XG4gIC8vIFJldHVybiBza2lwcGVkIGRhdGFcbiAgY29uc3QgcmVzID0gbmV3IERlY29kZXJCdWZmZXIodGhpcy5iYXNlKTtcbiAgcmVzLm9mZnNldCA9IHNhdmUub2Zmc2V0O1xuICByZXMubGVuZ3RoID0gdGhpcy5vZmZzZXQ7XG5cbiAgdGhpcy5vZmZzZXQgPSBzYXZlLm9mZnNldDtcbiAgUmVwb3J0ZXIucHJvdG90eXBlLnJlc3RvcmUuY2FsbCh0aGlzLCBzYXZlLnJlcG9ydGVyKTtcblxuICByZXR1cm4gcmVzO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uIGlzRW1wdHkoKSB7XG4gIHJldHVybiB0aGlzLm9mZnNldCA9PT0gdGhpcy5sZW5ndGg7XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDgoZmFpbCkge1xuICBpZiAodGhpcy5vZmZzZXQgKyAxIDw9IHRoaXMubGVuZ3RoKVxuICAgIHJldHVybiB0aGlzLmJhc2UucmVhZFVJbnQ4KHRoaXMub2Zmc2V0KyssIHRydWUpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuZXJyb3IoZmFpbCB8fCAnRGVjb2RlckJ1ZmZlciBvdmVycnVuJyk7XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5za2lwID0gZnVuY3Rpb24gc2tpcChieXRlcywgZmFpbCkge1xuICBpZiAoISh0aGlzLm9mZnNldCArIGJ5dGVzIDw9IHRoaXMubGVuZ3RoKSlcbiAgICByZXR1cm4gdGhpcy5lcnJvcihmYWlsIHx8ICdEZWNvZGVyQnVmZmVyIG92ZXJydW4nKTtcblxuICBjb25zdCByZXMgPSBuZXcgRGVjb2RlckJ1ZmZlcih0aGlzLmJhc2UpO1xuXG4gIC8vIFNoYXJlIHJlcG9ydGVyIHN0YXRlXG4gIHJlcy5fcmVwb3J0ZXJTdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgcmVzLm9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICByZXMubGVuZ3RoID0gdGhpcy5vZmZzZXQgKyBieXRlcztcbiAgdGhpcy5vZmZzZXQgKz0gYnl0ZXM7XG4gIHJldHVybiByZXM7XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yYXcgPSBmdW5jdGlvbiByYXcoc2F2ZSkge1xuICByZXR1cm4gdGhpcy5iYXNlLnNsaWNlKHNhdmUgPyBzYXZlLm9mZnNldCA6IHRoaXMub2Zmc2V0LCB0aGlzLmxlbmd0aCk7XG59O1xuXG5mdW5jdGlvbiBFbmNvZGVyQnVmZmVyKHZhbHVlLCByZXBvcnRlcikge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlLm1hcChmdW5jdGlvbihpdGVtKSB7XG4gICAgICBpZiAoIUVuY29kZXJCdWZmZXIuaXNFbmNvZGVyQnVmZmVyKGl0ZW0pKVxuICAgICAgICBpdGVtID0gbmV3IEVuY29kZXJCdWZmZXIoaXRlbSwgcmVwb3J0ZXIpO1xuICAgICAgdGhpcy5sZW5ndGggKz0gaXRlbS5sZW5ndGg7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9LCB0aGlzKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKCEoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAweGZmKSlcbiAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignbm9uLWJ5dGUgRW5jb2RlckJ1ZmZlciB2YWx1ZScpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IDE7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbHVlKTtcbiAgfSBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMubGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVW5zdXBwb3J0ZWQgdHlwZTogJyArIHR5cGVvZiB2YWx1ZSk7XG4gIH1cbn1cbmV4cG9ydHMuRW5jb2RlckJ1ZmZlciA9IEVuY29kZXJCdWZmZXI7XG5cbkVuY29kZXJCdWZmZXIuaXNFbmNvZGVyQnVmZmVyID0gZnVuY3Rpb24gaXNFbmNvZGVyQnVmZmVyKGRhdGEpIHtcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBFbmNvZGVyQnVmZmVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBPciBhY2NlcHQgY29tcGF0aWJsZSBBUElcbiAgY29uc3QgaXNDb21wYXRpYmxlID0gdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmXG4gICAgZGF0YS5jb25zdHJ1Y3Rvci5uYW1lID09PSAnRW5jb2RlckJ1ZmZlcicgJiZcbiAgICB0eXBlb2YgZGF0YS5sZW5ndGggPT09ICdudW1iZXInICYmXG4gICAgdHlwZW9mIGRhdGEuam9pbiA9PT0gJ2Z1bmN0aW9uJztcblxuICByZXR1cm4gaXNDb21wYXRpYmxlO1xufTtcblxuRW5jb2RlckJ1ZmZlci5wcm90b3R5cGUuam9pbiA9IGZ1bmN0aW9uIGpvaW4ob3V0LCBvZmZzZXQpIHtcbiAgaWYgKCFvdXQpXG4gICAgb3V0ID0gQnVmZmVyLmFsbG9jKHRoaXMubGVuZ3RoKTtcbiAgaWYgKCFvZmZzZXQpXG4gICAgb2Zmc2V0ID0gMDtcblxuICBpZiAodGhpcy5sZW5ndGggPT09IDApXG4gICAgcmV0dXJuIG91dDtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSkge1xuICAgIHRoaXMudmFsdWUuZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG4gICAgICBpdGVtLmpvaW4ob3V0LCBvZmZzZXQpO1xuICAgICAgb2Zmc2V0ICs9IGl0ZW0ubGVuZ3RoO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ251bWJlcicpXG4gICAgICBvdXRbb2Zmc2V0XSA9IHRoaXMudmFsdWU7XG4gICAgZWxzZSBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgb3V0LndyaXRlKHRoaXMudmFsdWUsIG9mZnNldCk7XG4gICAgZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHRoaXMudmFsdWUpKVxuICAgICAgdGhpcy52YWx1ZS5jb3B5KG91dCwgb2Zmc2V0KTtcbiAgICBvZmZzZXQgKz0gdGhpcy5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gb3V0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgYmFzZSA9IGV4cG9ydHM7XG5cbmJhc2UuUmVwb3J0ZXIgPSByZXF1aXJlKCcuL3JlcG9ydGVyJykuUmVwb3J0ZXI7XG5iYXNlLkRlY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuL2J1ZmZlcicpLkRlY29kZXJCdWZmZXI7XG5iYXNlLkVuY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuL2J1ZmZlcicpLkVuY29kZXJCdWZmZXI7XG5iYXNlLk5vZGUgPSByZXF1aXJlKCcuL25vZGUnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgUmVwb3J0ZXIgPSByZXF1aXJlKCcuLi9iYXNlL3JlcG9ydGVyJykuUmVwb3J0ZXI7XG5jb25zdCBFbmNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi4vYmFzZS9idWZmZXInKS5FbmNvZGVyQnVmZmVyO1xuY29uc3QgRGVjb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4uL2Jhc2UvYnVmZmVyJykuRGVjb2RlckJ1ZmZlcjtcbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxuLy8gU3VwcG9ydGVkIHRhZ3NcbmNvbnN0IHRhZ3MgPSBbXG4gICdzZXEnLCAnc2Vxb2YnLCAnc2V0JywgJ3NldG9mJywgJ29iamlkJywgJ2Jvb2wnLFxuICAnZ2VudGltZScsICd1dGN0aW1lJywgJ251bGxfJywgJ2VudW0nLCAnaW50JywgJ29iakRlc2MnLFxuICAnYml0c3RyJywgJ2JtcHN0cicsICdjaGFyc3RyJywgJ2dlbnN0cicsICdncmFwaHN0cicsICdpYTVzdHInLCAnaXNvNjQ2c3RyJyxcbiAgJ251bXN0cicsICdvY3RzdHInLCAncHJpbnRzdHInLCAndDYxc3RyJywgJ3VuaXN0cicsICd1dGY4c3RyJywgJ3ZpZGVvc3RyJ1xuXTtcblxuLy8gUHVibGljIG1ldGhvZHMgbGlzdFxuY29uc3QgbWV0aG9kcyA9IFtcbiAgJ2tleScsICdvYmonLCAndXNlJywgJ29wdGlvbmFsJywgJ2V4cGxpY2l0JywgJ2ltcGxpY2l0JywgJ2RlZicsICdjaG9pY2UnLFxuICAnYW55JywgJ2NvbnRhaW5zJ1xuXS5jb25jYXQodGFncyk7XG5cbi8vIE92ZXJyaWRlZCBtZXRob2RzIGxpc3RcbmNvbnN0IG92ZXJyaWRlZCA9IFtcbiAgJ19wZWVrVGFnJywgJ19kZWNvZGVUYWcnLCAnX3VzZScsXG4gICdfZGVjb2RlU3RyJywgJ19kZWNvZGVPYmppZCcsICdfZGVjb2RlVGltZScsXG4gICdfZGVjb2RlTnVsbCcsICdfZGVjb2RlSW50JywgJ19kZWNvZGVCb29sJywgJ19kZWNvZGVMaXN0JyxcblxuICAnX2VuY29kZUNvbXBvc2l0ZScsICdfZW5jb2RlU3RyJywgJ19lbmNvZGVPYmppZCcsICdfZW5jb2RlVGltZScsXG4gICdfZW5jb2RlTnVsbCcsICdfZW5jb2RlSW50JywgJ19lbmNvZGVCb29sJ1xuXTtcblxuZnVuY3Rpb24gTm9kZShlbmMsIHBhcmVudCwgbmFtZSkge1xuICBjb25zdCBzdGF0ZSA9IHt9O1xuICB0aGlzLl9iYXNlU3RhdGUgPSBzdGF0ZTtcblxuICBzdGF0ZS5uYW1lID0gbmFtZTtcbiAgc3RhdGUuZW5jID0gZW5jO1xuXG4gIHN0YXRlLnBhcmVudCA9IHBhcmVudCB8fCBudWxsO1xuICBzdGF0ZS5jaGlsZHJlbiA9IG51bGw7XG5cbiAgLy8gU3RhdGVcbiAgc3RhdGUudGFnID0gbnVsbDtcbiAgc3RhdGUuYXJncyA9IG51bGw7XG4gIHN0YXRlLnJldmVyc2VBcmdzID0gbnVsbDtcbiAgc3RhdGUuY2hvaWNlID0gbnVsbDtcbiAgc3RhdGUub3B0aW9uYWwgPSBmYWxzZTtcbiAgc3RhdGUuYW55ID0gZmFsc2U7XG4gIHN0YXRlLm9iaiA9IGZhbHNlO1xuICBzdGF0ZS51c2UgPSBudWxsO1xuICBzdGF0ZS51c2VEZWNvZGVyID0gbnVsbDtcbiAgc3RhdGUua2V5ID0gbnVsbDtcbiAgc3RhdGVbJ2RlZmF1bHQnXSA9IG51bGw7XG4gIHN0YXRlLmV4cGxpY2l0ID0gbnVsbDtcbiAgc3RhdGUuaW1wbGljaXQgPSBudWxsO1xuICBzdGF0ZS5jb250YWlucyA9IG51bGw7XG5cbiAgLy8gU2hvdWxkIGNyZWF0ZSBuZXcgaW5zdGFuY2Ugb24gZWFjaCBtZXRob2RcbiAgaWYgKCFzdGF0ZS5wYXJlbnQpIHtcbiAgICBzdGF0ZS5jaGlsZHJlbiA9IFtdO1xuICAgIHRoaXMuX3dyYXAoKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBOb2RlO1xuXG5jb25zdCBzdGF0ZVByb3BzID0gW1xuICAnZW5jJywgJ3BhcmVudCcsICdjaGlsZHJlbicsICd0YWcnLCAnYXJncycsICdyZXZlcnNlQXJncycsICdjaG9pY2UnLFxuICAnb3B0aW9uYWwnLCAnYW55JywgJ29iaicsICd1c2UnLCAnYWx0ZXJlZFVzZScsICdrZXknLCAnZGVmYXVsdCcsICdleHBsaWNpdCcsXG4gICdpbXBsaWNpdCcsICdjb250YWlucydcbl07XG5cbk5vZGUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUoKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICBjb25zdCBjc3RhdGUgPSB7fTtcbiAgc3RhdGVQcm9wcy5mb3JFYWNoKGZ1bmN0aW9uKHByb3ApIHtcbiAgICBjc3RhdGVbcHJvcF0gPSBzdGF0ZVtwcm9wXTtcbiAgfSk7XG4gIGNvbnN0IHJlcyA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKGNzdGF0ZS5wYXJlbnQpO1xuICByZXMuX2Jhc2VTdGF0ZSA9IGNzdGF0ZTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbk5vZGUucHJvdG90eXBlLl93cmFwID0gZnVuY3Rpb24gd3JhcCgpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIG1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICB0aGlzW21ldGhvZF0gPSBmdW5jdGlvbiBfd3JhcHBlZE1ldGhvZCgpIHtcbiAgICAgIGNvbnN0IGNsb25lID0gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcyk7XG4gICAgICBzdGF0ZS5jaGlsZHJlbi5wdXNoKGNsb25lKTtcbiAgICAgIHJldHVybiBjbG9uZVttZXRob2RdLmFwcGx5KGNsb25lLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH0sIHRoaXMpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0KGJvZHkpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnBhcmVudCA9PT0gbnVsbCk7XG4gIGJvZHkuY2FsbCh0aGlzKTtcblxuICAvLyBGaWx0ZXIgY2hpbGRyZW5cbiAgc3RhdGUuY2hpbGRyZW4gPSBzdGF0ZS5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICByZXR1cm4gY2hpbGQuX2Jhc2VTdGF0ZS5wYXJlbnQgPT09IHRoaXM7XG4gIH0sIHRoaXMpO1xuICBhc3NlcnQuZXF1YWwoc3RhdGUuY2hpbGRyZW4ubGVuZ3RoLCAxLCAnUm9vdCBub2RlIGNhbiBoYXZlIG9ubHkgb25lIGNoaWxkJyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fdXNlQXJncyA9IGZ1bmN0aW9uIHVzZUFyZ3MoYXJncykge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAvLyBGaWx0ZXIgY2hpbGRyZW4gYW5kIGFyZ3NcbiAgY29uc3QgY2hpbGRyZW4gPSBhcmdzLmZpbHRlcihmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gYXJnIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3RvcjtcbiAgfSwgdGhpcyk7XG4gIGFyZ3MgPSBhcmdzLmZpbHRlcihmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gIShhcmcgaW5zdGFuY2VvZiB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgfSwgdGhpcyk7XG5cbiAgaWYgKGNoaWxkcmVuLmxlbmd0aCAhPT0gMCkge1xuICAgIGFzc2VydChzdGF0ZS5jaGlsZHJlbiA9PT0gbnVsbCk7XG4gICAgc3RhdGUuY2hpbGRyZW4gPSBjaGlsZHJlbjtcblxuICAgIC8vIFJlcGxhY2UgcGFyZW50IHRvIG1haW50YWluIGJhY2t3YXJkIGxpbmtcbiAgICBjaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICBjaGlsZC5fYmFzZVN0YXRlLnBhcmVudCA9IHRoaXM7XG4gICAgfSwgdGhpcyk7XG4gIH1cbiAgaWYgKGFyZ3MubGVuZ3RoICE9PSAwKSB7XG4gICAgYXNzZXJ0KHN0YXRlLmFyZ3MgPT09IG51bGwpO1xuICAgIHN0YXRlLmFyZ3MgPSBhcmdzO1xuICAgIHN0YXRlLnJldmVyc2VBcmdzID0gYXJncy5tYXAoZnVuY3Rpb24oYXJnKSB7XG4gICAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ29iamVjdCcgfHwgYXJnLmNvbnN0cnVjdG9yICE9PSBPYmplY3QpXG4gICAgICAgIHJldHVybiBhcmc7XG5cbiAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgT2JqZWN0LmtleXMoYXJnKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgICAgICBpZiAoa2V5ID09IChrZXkgfCAwKSlcbiAgICAgICAgICBrZXkgfD0gMDtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBhcmdba2V5XTtcbiAgICAgICAgcmVzW3ZhbHVlXSA9IGtleTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9KTtcbiAgfVxufTtcblxuLy9cbi8vIE92ZXJyaWRlZCBtZXRob2RzXG4vL1xuXG5vdmVycmlkZWQuZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgTm9kZS5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIF9vdmVycmlkZWQoKSB7XG4gICAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gICAgdGhyb3cgbmV3IEVycm9yKG1ldGhvZCArICcgbm90IGltcGxlbWVudGVkIGZvciBlbmNvZGluZzogJyArIHN0YXRlLmVuYyk7XG4gIH07XG59KTtcblxuLy9cbi8vIFB1YmxpYyBtZXRob2RzXG4vL1xuXG50YWdzLmZvckVhY2goZnVuY3Rpb24odGFnKSB7XG4gIE5vZGUucHJvdG90eXBlW3RhZ10gPSBmdW5jdGlvbiBfdGFnTWV0aG9kKCkge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICAgIGNvbnN0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgYXNzZXJ0KHN0YXRlLnRhZyA9PT0gbnVsbCk7XG4gICAgc3RhdGUudGFnID0gdGFnO1xuXG4gICAgdGhpcy5fdXNlQXJncyhhcmdzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xufSk7XG5cbk5vZGUucHJvdG90eXBlLnVzZSA9IGZ1bmN0aW9uIHVzZShpdGVtKSB7XG4gIGFzc2VydChpdGVtKTtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnVzZSA9PT0gbnVsbCk7XG4gIHN0YXRlLnVzZSA9IGl0ZW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5vcHRpb25hbCA9IGZ1bmN0aW9uIG9wdGlvbmFsKCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBzdGF0ZS5vcHRpb25hbCA9IHRydWU7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5kZWYgPSBmdW5jdGlvbiBkZWYodmFsKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZVsnZGVmYXVsdCddID09PSBudWxsKTtcbiAgc3RhdGVbJ2RlZmF1bHQnXSA9IHZhbDtcbiAgc3RhdGUub3B0aW9uYWwgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuZXhwbGljaXQgPSBmdW5jdGlvbiBleHBsaWNpdChudW0pIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLmV4cGxpY2l0ID09PSBudWxsICYmIHN0YXRlLmltcGxpY2l0ID09PSBudWxsKTtcbiAgc3RhdGUuZXhwbGljaXQgPSBudW07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5pbXBsaWNpdCA9IGZ1bmN0aW9uIGltcGxpY2l0KG51bSkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUuZXhwbGljaXQgPT09IG51bGwgJiYgc3RhdGUuaW1wbGljaXQgPT09IG51bGwpO1xuICBzdGF0ZS5pbXBsaWNpdCA9IG51bTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLm9iaiA9IGZ1bmN0aW9uIG9iaigpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIGNvbnN0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gIHN0YXRlLm9iaiA9IHRydWU7XG5cbiAgaWYgKGFyZ3MubGVuZ3RoICE9PSAwKVxuICAgIHRoaXMuX3VzZUFyZ3MoYXJncyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5rZXkgPSBmdW5jdGlvbiBrZXkobmV3S2V5KSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5rZXkgPT09IG51bGwpO1xuICBzdGF0ZS5rZXkgPSBuZXdLZXk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5hbnkgPSBmdW5jdGlvbiBhbnkoKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHN0YXRlLmFueSA9IHRydWU7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5jaG9pY2UgPSBmdW5jdGlvbiBjaG9pY2Uob2JqKSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5jaG9pY2UgPT09IG51bGwpO1xuICBzdGF0ZS5jaG9pY2UgPSBvYmo7XG4gIHRoaXMuX3VzZUFyZ3MoT2JqZWN0LmtleXMob2JqKS5tYXAoZnVuY3Rpb24oa2V5KSB7XG4gICAgcmV0dXJuIG9ialtrZXldO1xuICB9KSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uIGNvbnRhaW5zKGl0ZW0pIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLnVzZSA9PT0gbnVsbCk7XG4gIHN0YXRlLmNvbnRhaW5zID0gaXRlbTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbi8vXG4vLyBEZWNvZGluZ1xuLy9cblxuTm9kZS5wcm90b3R5cGUuX2RlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShpbnB1dCwgb3B0aW9ucykge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAvLyBEZWNvZGUgcm9vdCBub2RlXG4gIGlmIChzdGF0ZS5wYXJlbnQgPT09IG51bGwpXG4gICAgcmV0dXJuIGlucHV0LndyYXBSZXN1bHQoc3RhdGUuY2hpbGRyZW5bMF0uX2RlY29kZShpbnB1dCwgb3B0aW9ucykpO1xuXG4gIGxldCByZXN1bHQgPSBzdGF0ZVsnZGVmYXVsdCddO1xuICBsZXQgcHJlc2VudCA9IHRydWU7XG5cbiAgbGV0IHByZXZLZXkgPSBudWxsO1xuICBpZiAoc3RhdGUua2V5ICE9PSBudWxsKVxuICAgIHByZXZLZXkgPSBpbnB1dC5lbnRlcktleShzdGF0ZS5rZXkpO1xuXG4gIC8vIENoZWNrIGlmIHRhZyBpcyB0aGVyZVxuICBpZiAoc3RhdGUub3B0aW9uYWwpIHtcbiAgICBsZXQgdGFnID0gbnVsbDtcbiAgICBpZiAoc3RhdGUuZXhwbGljaXQgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS5leHBsaWNpdDtcbiAgICBlbHNlIGlmIChzdGF0ZS5pbXBsaWNpdCAhPT0gbnVsbClcbiAgICAgIHRhZyA9IHN0YXRlLmltcGxpY2l0O1xuICAgIGVsc2UgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIHRhZyA9IHN0YXRlLnRhZztcblxuICAgIGlmICh0YWcgPT09IG51bGwgJiYgIXN0YXRlLmFueSkge1xuICAgICAgLy8gVHJpYWwgYW5kIEVycm9yXG4gICAgICBjb25zdCBzYXZlID0gaW5wdXQuc2F2ZSgpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKHN0YXRlLmNob2ljZSA9PT0gbnVsbClcbiAgICAgICAgICB0aGlzLl9kZWNvZGVHZW5lcmljKHN0YXRlLnRhZywgaW5wdXQsIG9wdGlvbnMpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgdGhpcy5fZGVjb2RlQ2hvaWNlKGlucHV0LCBvcHRpb25zKTtcbiAgICAgICAgcHJlc2VudCA9IHRydWU7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHByZXNlbnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlucHV0LnJlc3RvcmUoc2F2ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZXNlbnQgPSB0aGlzLl9wZWVrVGFnKGlucHV0LCB0YWcsIHN0YXRlLmFueSk7XG5cbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKHByZXNlbnQpKVxuICAgICAgICByZXR1cm4gcHJlc2VudDtcbiAgICB9XG4gIH1cblxuICAvLyBQdXNoIG9iamVjdCBvbiBzdGFja1xuICBsZXQgcHJldk9iajtcbiAgaWYgKHN0YXRlLm9iaiAmJiBwcmVzZW50KVxuICAgIHByZXZPYmogPSBpbnB1dC5lbnRlck9iamVjdCgpO1xuXG4gIGlmIChwcmVzZW50KSB7XG4gICAgLy8gVW53cmFwIGV4cGxpY2l0IHZhbHVlc1xuICAgIGlmIChzdGF0ZS5leHBsaWNpdCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgZXhwbGljaXQgPSB0aGlzLl9kZWNvZGVUYWcoaW5wdXQsIHN0YXRlLmV4cGxpY2l0KTtcbiAgICAgIGlmIChpbnB1dC5pc0Vycm9yKGV4cGxpY2l0KSlcbiAgICAgICAgcmV0dXJuIGV4cGxpY2l0O1xuICAgICAgaW5wdXQgPSBleHBsaWNpdDtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9IGlucHV0Lm9mZnNldDtcblxuICAgIC8vIFVud3JhcCBpbXBsaWNpdCBhbmQgbm9ybWFsIHZhbHVlc1xuICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsKSB7XG4gICAgICBsZXQgc2F2ZTtcbiAgICAgIGlmIChzdGF0ZS5hbnkpXG4gICAgICAgIHNhdmUgPSBpbnB1dC5zYXZlKCk7XG4gICAgICBjb25zdCBib2R5ID0gdGhpcy5fZGVjb2RlVGFnKFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgc3RhdGUuaW1wbGljaXQgIT09IG51bGwgPyBzdGF0ZS5pbXBsaWNpdCA6IHN0YXRlLnRhZyxcbiAgICAgICAgc3RhdGUuYW55XG4gICAgICApO1xuICAgICAgaWYgKGlucHV0LmlzRXJyb3IoYm9keSkpXG4gICAgICAgIHJldHVybiBib2R5O1xuXG4gICAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgICByZXN1bHQgPSBpbnB1dC5yYXcoc2F2ZSk7XG4gICAgICBlbHNlXG4gICAgICAgIGlucHV0ID0gYm9keTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRyYWNrICYmIHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIG9wdGlvbnMudHJhY2soaW5wdXQucGF0aCgpLCBzdGFydCwgaW5wdXQubGVuZ3RoLCAndGFnZ2VkJyk7XG5cbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRyYWNrICYmIHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIG9wdGlvbnMudHJhY2soaW5wdXQucGF0aCgpLCBpbnB1dC5vZmZzZXQsIGlucHV0Lmxlbmd0aCwgJ2NvbnRlbnQnKTtcblxuICAgIC8vIFNlbGVjdCBwcm9wZXIgbWV0aG9kIGZvciB0YWdcbiAgICBpZiAoc3RhdGUuYW55KSB7XG4gICAgICAvLyBuby1vcFxuICAgIH0gZWxzZSBpZiAoc3RhdGUuY2hvaWNlID09PSBudWxsKSB7XG4gICAgICByZXN1bHQgPSB0aGlzLl9kZWNvZGVHZW5lcmljKHN0YXRlLnRhZywgaW5wdXQsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQgPSB0aGlzLl9kZWNvZGVDaG9pY2UoaW5wdXQsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGlmIChpbnB1dC5pc0Vycm9yKHJlc3VsdCkpXG4gICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgLy8gRGVjb2RlIGNoaWxkcmVuXG4gICAgaWYgKCFzdGF0ZS5hbnkgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsICYmIHN0YXRlLmNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICBzdGF0ZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIGRlY29kZUNoaWxkcmVuKGNoaWxkKSB7XG4gICAgICAgIC8vIE5PVEU6IFdlIGFyZSBpZ25vcmluZyBlcnJvcnMgaGVyZSwgdG8gbGV0IHBhcnNlciBjb250aW51ZSB3aXRoIG90aGVyXG4gICAgICAgIC8vIHBhcnRzIG9mIGVuY29kZWQgZGF0YVxuICAgICAgICBjaGlsZC5fZGVjb2RlKGlucHV0LCBvcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIERlY29kZSBjb250YWluZWQvZW5jb2RlZCBieSBzY2hlbWEsIG9ubHkgaW4gYml0IG9yIG9jdGV0IHN0cmluZ3NcbiAgICBpZiAoc3RhdGUuY29udGFpbnMgJiYgKHN0YXRlLnRhZyA9PT0gJ29jdHN0cicgfHwgc3RhdGUudGFnID09PSAnYml0c3RyJykpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBuZXcgRGVjb2RlckJ1ZmZlcihyZXN1bHQpO1xuICAgICAgcmVzdWx0ID0gdGhpcy5fZ2V0VXNlKHN0YXRlLmNvbnRhaW5zLCBpbnB1dC5fcmVwb3J0ZXJTdGF0ZS5vYmopXG4gICAgICAgIC5fZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBvcCBvYmplY3RcbiAgaWYgKHN0YXRlLm9iaiAmJiBwcmVzZW50KVxuICAgIHJlc3VsdCA9IGlucHV0LmxlYXZlT2JqZWN0KHByZXZPYmopO1xuXG4gIC8vIFNldCBrZXlcbiAgaWYgKHN0YXRlLmtleSAhPT0gbnVsbCAmJiAocmVzdWx0ICE9PSBudWxsIHx8IHByZXNlbnQgPT09IHRydWUpKVxuICAgIGlucHV0LmxlYXZlS2V5KHByZXZLZXksIHN0YXRlLmtleSwgcmVzdWx0KTtcbiAgZWxzZSBpZiAocHJldktleSAhPT0gbnVsbClcbiAgICBpbnB1dC5leGl0S2V5KHByZXZLZXkpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZGVjb2RlR2VuZXJpYyA9IGZ1bmN0aW9uIGRlY29kZUdlbmVyaWModGFnLCBpbnB1dCwgb3B0aW9ucykge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBpZiAodGFnID09PSAnc2VxJyB8fCB0YWcgPT09ICdzZXQnKVxuICAgIHJldHVybiBudWxsO1xuICBpZiAodGFnID09PSAnc2Vxb2YnIHx8IHRhZyA9PT0gJ3NldG9mJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlTGlzdChpbnB1dCwgdGFnLCBzdGF0ZS5hcmdzWzBdLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAoL3N0ciQvLnRlc3QodGFnKSlcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlU3RyKGlucHV0LCB0YWcsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmppZCcgJiYgc3RhdGUuYXJncylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlT2JqaWQoaW5wdXQsIHN0YXRlLmFyZ3NbMF0sIHN0YXRlLmFyZ3NbMV0sIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmppZCcpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU9iamlkKGlucHV0LCBudWxsLCBudWxsLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnZ2VudGltZScgfHwgdGFnID09PSAndXRjdGltZScpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZVRpbWUoaW5wdXQsIHRhZywgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ251bGxfJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlTnVsbChpbnB1dCwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2Jvb2wnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVCb29sKGlucHV0LCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqRGVzYycpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZVN0cihpbnB1dCwgdGFnLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnaW50JyB8fCB0YWcgPT09ICdlbnVtJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlSW50KGlucHV0LCBzdGF0ZS5hcmdzICYmIHN0YXRlLmFyZ3NbMF0sIG9wdGlvbnMpO1xuXG4gIGlmIChzdGF0ZS51c2UgIT09IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0VXNlKHN0YXRlLnVzZSwgaW5wdXQuX3JlcG9ydGVyU3RhdGUub2JqKVxuICAgICAgLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpbnB1dC5lcnJvcigndW5rbm93biB0YWc6ICcgKyB0YWcpO1xuICB9XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZ2V0VXNlID0gZnVuY3Rpb24gX2dldFVzZShlbnRpdHksIG9iaikge1xuXG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICAvLyBDcmVhdGUgYWx0ZXJlZCB1c2UgZGVjb2RlciBpZiBpbXBsaWNpdCBpcyBzZXRcbiAgc3RhdGUudXNlRGVjb2RlciA9IHRoaXMuX3VzZShlbnRpdHksIG9iaik7XG4gIGFzc2VydChzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUucGFyZW50ID09PSBudWxsKTtcbiAgc3RhdGUudXNlRGVjb2RlciA9IHN0YXRlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5jaGlsZHJlblswXTtcbiAgaWYgKHN0YXRlLmltcGxpY2l0ICE9PSBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQpIHtcbiAgICBzdGF0ZS51c2VEZWNvZGVyID0gc3RhdGUudXNlRGVjb2Rlci5jbG9uZSgpO1xuICAgIHN0YXRlLnVzZURlY29kZXIuX2Jhc2VTdGF0ZS5pbXBsaWNpdCA9IHN0YXRlLmltcGxpY2l0O1xuICB9XG4gIHJldHVybiBzdGF0ZS51c2VEZWNvZGVyO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2RlY29kZUNob2ljZSA9IGZ1bmN0aW9uIGRlY29kZUNob2ljZShpbnB1dCwgb3B0aW9ucykge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgbGV0IHJlc3VsdCA9IG51bGw7XG4gIGxldCBtYXRjaCA9IGZhbHNlO1xuXG4gIE9iamVjdC5rZXlzKHN0YXRlLmNob2ljZSkuc29tZShmdW5jdGlvbihrZXkpIHtcbiAgICBjb25zdCBzYXZlID0gaW5wdXQuc2F2ZSgpO1xuICAgIGNvbnN0IG5vZGUgPSBzdGF0ZS5jaG9pY2Vba2V5XTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdmFsdWUgPSBub2RlLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpO1xuICAgICAgaWYgKGlucHV0LmlzRXJyb3IodmFsdWUpKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIHJlc3VsdCA9IHsgdHlwZToga2V5LCB2YWx1ZTogdmFsdWUgfTtcbiAgICAgIG1hdGNoID0gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpbnB1dC5yZXN0b3JlKHNhdmUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSwgdGhpcyk7XG5cbiAgaWYgKCFtYXRjaClcbiAgICByZXR1cm4gaW5wdXQuZXJyb3IoJ0Nob2ljZSBub3QgbWF0Y2hlZCcpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vL1xuLy8gRW5jb2Rpbmdcbi8vXG5cbk5vZGUucHJvdG90eXBlLl9jcmVhdGVFbmNvZGVyQnVmZmVyID0gZnVuY3Rpb24gY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhKSB7XG4gIHJldHVybiBuZXcgRW5jb2RlckJ1ZmZlcihkYXRhLCB0aGlzLnJlcG9ydGVyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgcmVwb3J0ZXIsIHBhcmVudCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgaWYgKHN0YXRlWydkZWZhdWx0J10gIT09IG51bGwgJiYgc3RhdGVbJ2RlZmF1bHQnXSA9PT0gZGF0YSlcbiAgICByZXR1cm47XG5cbiAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZW5jb2RlVmFsdWUoZGF0YSwgcmVwb3J0ZXIsIHBhcmVudCk7XG4gIGlmIChyZXN1bHQgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm47XG5cbiAgaWYgKHRoaXMuX3NraXBEZWZhdWx0KHJlc3VsdCwgcmVwb3J0ZXIsIHBhcmVudCkpXG4gICAgcmV0dXJuO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZW5jb2RlVmFsdWUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgcmVwb3J0ZXIsIHBhcmVudCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAvLyBEZWNvZGUgcm9vdCBub2RlXG4gIGlmIChzdGF0ZS5wYXJlbnQgPT09IG51bGwpXG4gICAgcmV0dXJuIHN0YXRlLmNoaWxkcmVuWzBdLl9lbmNvZGUoZGF0YSwgcmVwb3J0ZXIgfHwgbmV3IFJlcG9ydGVyKCkpO1xuXG4gIGxldCByZXN1bHQgPSBudWxsO1xuXG4gIC8vIFNldCByZXBvcnRlciB0byBzaGFyZSBpdCB3aXRoIGEgY2hpbGQgY2xhc3NcbiAgdGhpcy5yZXBvcnRlciA9IHJlcG9ydGVyO1xuXG4gIC8vIENoZWNrIGlmIGRhdGEgaXMgdGhlcmVcbiAgaWYgKHN0YXRlLm9wdGlvbmFsICYmIGRhdGEgPT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChzdGF0ZVsnZGVmYXVsdCddICE9PSBudWxsKVxuICAgICAgZGF0YSA9IHN0YXRlWydkZWZhdWx0J107XG4gICAgZWxzZVxuICAgICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRW5jb2RlIGNoaWxkcmVuIGZpcnN0XG4gIGxldCBjb250ZW50ID0gbnVsbDtcbiAgbGV0IHByaW1pdGl2ZSA9IGZhbHNlO1xuICBpZiAoc3RhdGUuYW55KSB7XG4gICAgLy8gQW55dGhpbmcgdGhhdCB3YXMgZ2l2ZW4gaXMgdHJhbnNsYXRlZCB0byBidWZmZXJcbiAgICByZXN1bHQgPSB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGRhdGEpO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNob2ljZSkge1xuICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZUNob2ljZShkYXRhLCByZXBvcnRlcik7XG4gIH0gZWxzZSBpZiAoc3RhdGUuY29udGFpbnMpIHtcbiAgICBjb250ZW50ID0gdGhpcy5fZ2V0VXNlKHN0YXRlLmNvbnRhaW5zLCBwYXJlbnQpLl9lbmNvZGUoZGF0YSwgcmVwb3J0ZXIpO1xuICAgIHByaW1pdGl2ZSA9IHRydWU7XG4gIH0gZWxzZSBpZiAoc3RhdGUuY2hpbGRyZW4pIHtcbiAgICBjb250ZW50ID0gc3RhdGUuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICBpZiAoY2hpbGQuX2Jhc2VTdGF0ZS50YWcgPT09ICdudWxsXycpXG4gICAgICAgIHJldHVybiBjaGlsZC5fZW5jb2RlKG51bGwsIHJlcG9ydGVyLCBkYXRhKTtcblxuICAgICAgaWYgKGNoaWxkLl9iYXNlU3RhdGUua2V5ID09PSBudWxsKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ0NoaWxkIHNob3VsZCBoYXZlIGEga2V5Jyk7XG4gICAgICBjb25zdCBwcmV2S2V5ID0gcmVwb3J0ZXIuZW50ZXJLZXkoY2hpbGQuX2Jhc2VTdGF0ZS5rZXkpO1xuXG4gICAgICBpZiAodHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ0NoaWxkIGV4cGVjdGVkLCBidXQgaW5wdXQgaXMgbm90IG9iamVjdCcpO1xuXG4gICAgICBjb25zdCByZXMgPSBjaGlsZC5fZW5jb2RlKGRhdGFbY2hpbGQuX2Jhc2VTdGF0ZS5rZXldLCByZXBvcnRlciwgZGF0YSk7XG4gICAgICByZXBvcnRlci5sZWF2ZUtleShwcmV2S2V5KTtcblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCB0aGlzKS5maWx0ZXIoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9KTtcbiAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihjb250ZW50KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoc3RhdGUudGFnID09PSAnc2Vxb2YnIHx8IHN0YXRlLnRhZyA9PT0gJ3NldG9mJykge1xuICAgICAgLy8gVE9ETyhpbmR1dG55KTogdGhpcyBzaG91bGQgYmUgdGhyb3duIG9uIERTTCBsZXZlbFxuICAgICAgaWYgKCEoc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzLmxlbmd0aCA9PT0gMSkpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVG9vIG1hbnkgYXJncyBmb3IgOiAnICsgc3RhdGUudGFnKTtcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ3NlcW9mL3NldG9mLCBidXQgZGF0YSBpcyBub3QgQXJyYXknKTtcblxuICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjaGlsZC5fYmFzZVN0YXRlLmltcGxpY2l0ID0gbnVsbDtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGRhdGEubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFVzZShzdGF0ZS5hcmdzWzBdLCBkYXRhKS5fZW5jb2RlKGl0ZW0sIHJlcG9ydGVyKTtcbiAgICAgIH0sIGNoaWxkKSk7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS51c2UgIT09IG51bGwpIHtcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2dldFVzZShzdGF0ZS51c2UsIHBhcmVudCkuX2VuY29kZShkYXRhLCByZXBvcnRlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLl9lbmNvZGVQcmltaXRpdmUoc3RhdGUudGFnLCBkYXRhKTtcbiAgICAgIHByaW1pdGl2ZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLy8gRW5jb2RlIGRhdGEgaXRzZWxmXG4gIGlmICghc3RhdGUuYW55ICYmIHN0YXRlLmNob2ljZSA9PT0gbnVsbCkge1xuICAgIGNvbnN0IHRhZyA9IHN0YXRlLmltcGxpY2l0ICE9PSBudWxsID8gc3RhdGUuaW1wbGljaXQgOiBzdGF0ZS50YWc7XG4gICAgY29uc3QgY2xzID0gc3RhdGUuaW1wbGljaXQgPT09IG51bGwgPyAndW5pdmVyc2FsJyA6ICdjb250ZXh0JztcblxuICAgIGlmICh0YWcgPT09IG51bGwpIHtcbiAgICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwpXG4gICAgICAgIHJlcG9ydGVyLmVycm9yKCdUYWcgY291bGQgYmUgb21pdHRlZCBvbmx5IGZvciAudXNlKCknKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHN0YXRlLnVzZSA9PT0gbnVsbClcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5fZW5jb2RlQ29tcG9zaXRlKHRhZywgcHJpbWl0aXZlLCBjbHMsIGNvbnRlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFdyYXAgaW4gZXhwbGljaXRcbiAgaWYgKHN0YXRlLmV4cGxpY2l0ICE9PSBudWxsKVxuICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZUNvbXBvc2l0ZShzdGF0ZS5leHBsaWNpdCwgZmFsc2UsICdjb250ZXh0JywgcmVzdWx0KTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZUNob2ljZSA9IGZ1bmN0aW9uIGVuY29kZUNob2ljZShkYXRhLCByZXBvcnRlcikge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBjb25zdCBub2RlID0gc3RhdGUuY2hvaWNlW2RhdGEudHlwZV07XG4gIGlmICghbm9kZSkge1xuICAgIGFzc2VydChcbiAgICAgIGZhbHNlLFxuICAgICAgZGF0YS50eXBlICsgJyBub3QgZm91bmQgaW4gJyArXG4gICAgICAgICAgICBKU09OLnN0cmluZ2lmeShPYmplY3Qua2V5cyhzdGF0ZS5jaG9pY2UpKSk7XG4gIH1cbiAgcmV0dXJuIG5vZGUuX2VuY29kZShkYXRhLnZhbHVlLCByZXBvcnRlcik7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZW5jb2RlUHJpbWl0aXZlID0gZnVuY3Rpb24gZW5jb2RlUHJpbWl0aXZlKHRhZywgZGF0YSkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBpZiAoL3N0ciQvLnRlc3QodGFnKSlcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlU3RyKGRhdGEsIHRhZyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJyAmJiBzdGF0ZS5hcmdzKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVPYmppZChkYXRhLCBzdGF0ZS5yZXZlcnNlQXJnc1swXSwgc3RhdGUuYXJnc1sxXSk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iamlkJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlT2JqaWQoZGF0YSwgbnVsbCwgbnVsbCk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnIHx8IHRhZyA9PT0gJ3V0Y3RpbWUnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVUaW1lKGRhdGEsIHRhZyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ251bGxfJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlTnVsbCgpO1xuICBlbHNlIGlmICh0YWcgPT09ICdpbnQnIHx8IHRhZyA9PT0gJ2VudW0nKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVJbnQoZGF0YSwgc3RhdGUuYXJncyAmJiBzdGF0ZS5yZXZlcnNlQXJnc1swXSk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2Jvb2wnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVCb29sKGRhdGEpO1xuICBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJylcbiAgICByZXR1cm4gdGhpcy5fZW5jb2RlU3RyKGRhdGEsIHRhZyk7XG4gIGVsc2VcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHRhZzogJyArIHRhZyk7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5faXNOdW1zdHIgPSBmdW5jdGlvbiBpc051bXN0cihzdHIpIHtcbiAgcmV0dXJuIC9eWzAtOSBdKiQvLnRlc3Qoc3RyKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9pc1ByaW50c3RyID0gZnVuY3Rpb24gaXNQcmludHN0cihzdHIpIHtcbiAgcmV0dXJuIC9eW0EtWmEtejAtOSAnKCkrLC0uLzo9P10qJC8udGVzdChzdHIpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5mdW5jdGlvbiBSZXBvcnRlcihvcHRpb25zKSB7XG4gIHRoaXMuX3JlcG9ydGVyU3RhdGUgPSB7XG4gICAgb2JqOiBudWxsLFxuICAgIHBhdGg6IFtdLFxuICAgIG9wdGlvbnM6IG9wdGlvbnMgfHwge30sXG4gICAgZXJyb3JzOiBbXVxuICB9O1xufVxuZXhwb3J0cy5SZXBvcnRlciA9IFJlcG9ydGVyO1xuXG5SZXBvcnRlci5wcm90b3R5cGUuaXNFcnJvciA9IGZ1bmN0aW9uIGlzRXJyb3Iob2JqKSB7XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBSZXBvcnRlckVycm9yO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLnNhdmUgPSBmdW5jdGlvbiBzYXZlKCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgcmV0dXJuIHsgb2JqOiBzdGF0ZS5vYmosIHBhdGhMZW46IHN0YXRlLnBhdGgubGVuZ3RoIH07XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUucmVzdG9yZSA9IGZ1bmN0aW9uIHJlc3RvcmUoZGF0YSkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgc3RhdGUub2JqID0gZGF0YS5vYmo7XG4gIHN0YXRlLnBhdGggPSBzdGF0ZS5wYXRoLnNsaWNlKDAsIGRhdGEucGF0aExlbik7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZW50ZXJLZXkgPSBmdW5jdGlvbiBlbnRlcktleShrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5wdXNoKGtleSk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZXhpdEtleSA9IGZ1bmN0aW9uIGV4aXRLZXkoaW5kZXgpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHN0YXRlLnBhdGggPSBzdGF0ZS5wYXRoLnNsaWNlKDAsIGluZGV4IC0gMSk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUubGVhdmVLZXkgPSBmdW5jdGlvbiBsZWF2ZUtleShpbmRleCwga2V5LCB2YWx1ZSkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgdGhpcy5leGl0S2V5KGluZGV4KTtcbiAgaWYgKHN0YXRlLm9iaiAhPT0gbnVsbClcbiAgICBzdGF0ZS5vYmpba2V5XSA9IHZhbHVlO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLnBhdGggPSBmdW5jdGlvbiBwYXRoKCkge1xuICByZXR1cm4gdGhpcy5fcmVwb3J0ZXJTdGF0ZS5wYXRoLmpvaW4oJy8nKTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5lbnRlck9iamVjdCA9IGZ1bmN0aW9uIGVudGVyT2JqZWN0KCkge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgY29uc3QgcHJldiA9IHN0YXRlLm9iajtcbiAgc3RhdGUub2JqID0ge307XG4gIHJldHVybiBwcmV2O1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmxlYXZlT2JqZWN0ID0gZnVuY3Rpb24gbGVhdmVPYmplY3QocHJldikge1xuICBjb25zdCBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgY29uc3Qgbm93ID0gc3RhdGUub2JqO1xuICBzdGF0ZS5vYmogPSBwcmV2O1xuICByZXR1cm4gbm93O1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmVycm9yID0gZnVuY3Rpb24gZXJyb3IobXNnKSB7XG4gIGxldCBlcnI7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICBjb25zdCBpbmhlcml0ZWQgPSBtc2cgaW5zdGFuY2VvZiBSZXBvcnRlckVycm9yO1xuICBpZiAoaW5oZXJpdGVkKSB7XG4gICAgZXJyID0gbXNnO1xuICB9IGVsc2Uge1xuICAgIGVyciA9IG5ldyBSZXBvcnRlckVycm9yKHN0YXRlLnBhdGgubWFwKGZ1bmN0aW9uKGVsZW0pIHtcbiAgICAgIHJldHVybiAnWycgKyBKU09OLnN0cmluZ2lmeShlbGVtKSArICddJztcbiAgICB9KS5qb2luKCcnKSwgbXNnLm1lc3NhZ2UgfHwgbXNnLCBtc2cuc3RhY2spO1xuICB9XG5cbiAgaWYgKCFzdGF0ZS5vcHRpb25zLnBhcnRpYWwpXG4gICAgdGhyb3cgZXJyO1xuXG4gIGlmICghaW5oZXJpdGVkKVxuICAgIHN0YXRlLmVycm9ycy5wdXNoKGVycik7XG5cbiAgcmV0dXJuIGVycjtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS53cmFwUmVzdWx0ID0gZnVuY3Rpb24gd3JhcFJlc3VsdChyZXN1bHQpIHtcbiAgY29uc3Qgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuICBpZiAoIXN0YXRlLm9wdGlvbnMucGFydGlhbClcbiAgICByZXR1cm4gcmVzdWx0O1xuXG4gIHJldHVybiB7XG4gICAgcmVzdWx0OiB0aGlzLmlzRXJyb3IocmVzdWx0KSA/IG51bGwgOiByZXN1bHQsXG4gICAgZXJyb3JzOiBzdGF0ZS5lcnJvcnNcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIFJlcG9ydGVyRXJyb3IocGF0aCwgbXNnKSB7XG4gIHRoaXMucGF0aCA9IHBhdGg7XG4gIHRoaXMucmV0aHJvdyhtc2cpO1xufVxuaW5oZXJpdHMoUmVwb3J0ZXJFcnJvciwgRXJyb3IpO1xuXG5SZXBvcnRlckVycm9yLnByb3RvdHlwZS5yZXRocm93ID0gZnVuY3Rpb24gcmV0aHJvdyhtc2cpIHtcbiAgdGhpcy5tZXNzYWdlID0gbXNnICsgJyBhdDogJyArICh0aGlzLnBhdGggfHwgJyhzaGFsbG93KScpO1xuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgUmVwb3J0ZXJFcnJvcik7XG5cbiAgaWYgKCF0aGlzLnN0YWNrKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIElFIG9ubHkgYWRkcyBzdGFjayB3aGVuIHRocm93blxuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMubWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5zdGFjayA9IGUuc3RhY2s7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gSGVscGVyXG5mdW5jdGlvbiByZXZlcnNlKG1hcCkge1xuICBjb25zdCByZXMgPSB7fTtcblxuICBPYmplY3Qua2V5cyhtYXApLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgLy8gQ29udmVydCBrZXkgdG8gaW50ZWdlciBpZiBpdCBpcyBzdHJpbmdpZmllZFxuICAgIGlmICgoa2V5IHwgMCkgPT0ga2V5KVxuICAgICAga2V5ID0ga2V5IHwgMDtcblxuICAgIGNvbnN0IHZhbHVlID0gbWFwW2tleV07XG4gICAgcmVzW3ZhbHVlXSA9IGtleTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0cy50YWdDbGFzcyA9IHtcbiAgMDogJ3VuaXZlcnNhbCcsXG4gIDE6ICdhcHBsaWNhdGlvbicsXG4gIDI6ICdjb250ZXh0JyxcbiAgMzogJ3ByaXZhdGUnXG59O1xuZXhwb3J0cy50YWdDbGFzc0J5TmFtZSA9IHJldmVyc2UoZXhwb3J0cy50YWdDbGFzcyk7XG5cbmV4cG9ydHMudGFnID0ge1xuICAweDAwOiAnZW5kJyxcbiAgMHgwMTogJ2Jvb2wnLFxuICAweDAyOiAnaW50JyxcbiAgMHgwMzogJ2JpdHN0cicsXG4gIDB4MDQ6ICdvY3RzdHInLFxuICAweDA1OiAnbnVsbF8nLFxuICAweDA2OiAnb2JqaWQnLFxuICAweDA3OiAnb2JqRGVzYycsXG4gIDB4MDg6ICdleHRlcm5hbCcsXG4gIDB4MDk6ICdyZWFsJyxcbiAgMHgwYTogJ2VudW0nLFxuICAweDBiOiAnZW1iZWQnLFxuICAweDBjOiAndXRmOHN0cicsXG4gIDB4MGQ6ICdyZWxhdGl2ZU9pZCcsXG4gIDB4MTA6ICdzZXEnLFxuICAweDExOiAnc2V0JyxcbiAgMHgxMjogJ251bXN0cicsXG4gIDB4MTM6ICdwcmludHN0cicsXG4gIDB4MTQ6ICd0NjFzdHInLFxuICAweDE1OiAndmlkZW9zdHInLFxuICAweDE2OiAnaWE1c3RyJyxcbiAgMHgxNzogJ3V0Y3RpbWUnLFxuICAweDE4OiAnZ2VudGltZScsXG4gIDB4MTk6ICdncmFwaHN0cicsXG4gIDB4MWE6ICdpc282NDZzdHInLFxuICAweDFiOiAnZ2Vuc3RyJyxcbiAgMHgxYzogJ3VuaXN0cicsXG4gIDB4MWQ6ICdjaGFyc3RyJyxcbiAgMHgxZTogJ2JtcHN0cidcbn07XG5leHBvcnRzLnRhZ0J5TmFtZSA9IHJldmVyc2UoZXhwb3J0cy50YWcpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5jb25zdCBjb25zdGFudHMgPSBleHBvcnRzO1xuXG4vLyBIZWxwZXJcbmNvbnN0YW50cy5fcmV2ZXJzZSA9IGZ1bmN0aW9uIHJldmVyc2UobWFwKSB7XG4gIGNvbnN0IHJlcyA9IHt9O1xuXG4gIE9iamVjdC5rZXlzKG1hcCkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAvLyBDb252ZXJ0IGtleSB0byBpbnRlZ2VyIGlmIGl0IGlzIHN0cmluZ2lmaWVkXG4gICAgaWYgKChrZXkgfCAwKSA9PSBrZXkpXG4gICAgICBrZXkgPSBrZXkgfCAwO1xuXG4gICAgY29uc3QgdmFsdWUgPSBtYXBba2V5XTtcbiAgICByZXNbdmFsdWVdID0ga2V5O1xuICB9KTtcblxuICByZXR1cm4gcmVzO1xufTtcblxuY29uc3RhbnRzLmRlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbmNvbnN0IGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuY29uc3QgYmlnbnVtID0gcmVxdWlyZSgnYm4uanMnKTtcbmNvbnN0IERlY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuLi9iYXNlL2J1ZmZlcicpLkRlY29kZXJCdWZmZXI7XG5jb25zdCBOb2RlID0gcmVxdWlyZSgnLi4vYmFzZS9ub2RlJyk7XG5cbi8vIEltcG9ydCBERVIgY29uc3RhbnRzXG5jb25zdCBkZXIgPSByZXF1aXJlKCcuLi9jb25zdGFudHMvZGVyJyk7XG5cbmZ1bmN0aW9uIERFUkRlY29kZXIoZW50aXR5KSB7XG4gIHRoaXMuZW5jID0gJ2Rlcic7XG4gIHRoaXMubmFtZSA9IGVudGl0eS5uYW1lO1xuICB0aGlzLmVudGl0eSA9IGVudGl0eTtcblxuICAvLyBDb25zdHJ1Y3QgYmFzZSB0cmVlXG4gIHRoaXMudHJlZSA9IG5ldyBERVJOb2RlKCk7XG4gIHRoaXMudHJlZS5faW5pdChlbnRpdHkuYm9keSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IERFUkRlY29kZXI7XG5cbkRFUkRlY29kZXIucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShkYXRhLCBvcHRpb25zKSB7XG4gIGlmICghRGVjb2RlckJ1ZmZlci5pc0RlY29kZXJCdWZmZXIoZGF0YSkpIHtcbiAgICBkYXRhID0gbmV3IERlY29kZXJCdWZmZXIoZGF0YSwgb3B0aW9ucyk7XG4gIH1cblxuICByZXR1cm4gdGhpcy50cmVlLl9kZWNvZGUoZGF0YSwgb3B0aW9ucyk7XG59O1xuXG4vLyBUcmVlIG1ldGhvZHNcblxuZnVuY3Rpb24gREVSTm9kZShwYXJlbnQpIHtcbiAgTm9kZS5jYWxsKHRoaXMsICdkZXInLCBwYXJlbnQpO1xufVxuaW5oZXJpdHMoREVSTm9kZSwgTm9kZSk7XG5cbkRFUk5vZGUucHJvdG90eXBlLl9wZWVrVGFnID0gZnVuY3Rpb24gcGVla1RhZyhidWZmZXIsIHRhZywgYW55KSB7XG4gIGlmIChidWZmZXIuaXNFbXB0eSgpKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBzdGF0ZSA9IGJ1ZmZlci5zYXZlKCk7XG4gIGNvbnN0IGRlY29kZWRUYWcgPSBkZXJEZWNvZGVUYWcoYnVmZmVyLCAnRmFpbGVkIHRvIHBlZWsgdGFnOiBcIicgKyB0YWcgKyAnXCInKTtcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKGRlY29kZWRUYWcpKVxuICAgIHJldHVybiBkZWNvZGVkVGFnO1xuXG4gIGJ1ZmZlci5yZXN0b3JlKHN0YXRlKTtcblxuICByZXR1cm4gZGVjb2RlZFRhZy50YWcgPT09IHRhZyB8fCBkZWNvZGVkVGFnLnRhZ1N0ciA9PT0gdGFnIHx8XG4gICAgKGRlY29kZWRUYWcudGFnU3RyICsgJ29mJykgPT09IHRhZyB8fCBhbnk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlVGFnID0gZnVuY3Rpb24gZGVjb2RlVGFnKGJ1ZmZlciwgdGFnLCBhbnkpIHtcbiAgY29uc3QgZGVjb2RlZFRhZyA9IGRlckRlY29kZVRhZyhidWZmZXIsXG4gICAgJ0ZhaWxlZCB0byBkZWNvZGUgdGFnIG9mIFwiJyArIHRhZyArICdcIicpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IoZGVjb2RlZFRhZykpXG4gICAgcmV0dXJuIGRlY29kZWRUYWc7XG5cbiAgbGV0IGxlbiA9IGRlckRlY29kZUxlbihidWZmZXIsXG4gICAgZGVjb2RlZFRhZy5wcmltaXRpdmUsXG4gICAgJ0ZhaWxlZCB0byBnZXQgbGVuZ3RoIG9mIFwiJyArIHRhZyArICdcIicpO1xuXG4gIC8vIEZhaWx1cmVcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKGxlbikpXG4gICAgcmV0dXJuIGxlbjtcblxuICBpZiAoIWFueSAmJlxuICAgICAgZGVjb2RlZFRhZy50YWcgIT09IHRhZyAmJlxuICAgICAgZGVjb2RlZFRhZy50YWdTdHIgIT09IHRhZyAmJlxuICAgICAgZGVjb2RlZFRhZy50YWdTdHIgKyAnb2YnICE9PSB0YWcpIHtcbiAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdGYWlsZWQgdG8gbWF0Y2ggdGFnOiBcIicgKyB0YWcgKyAnXCInKTtcbiAgfVxuXG4gIGlmIChkZWNvZGVkVGFnLnByaW1pdGl2ZSB8fCBsZW4gIT09IG51bGwpXG4gICAgcmV0dXJuIGJ1ZmZlci5za2lwKGxlbiwgJ0ZhaWxlZCB0byBtYXRjaCBib2R5IG9mOiBcIicgKyB0YWcgKyAnXCInKTtcblxuICAvLyBJbmRlZmluaXRlIGxlbmd0aC4uLiBmaW5kIEVORCB0YWdcbiAgY29uc3Qgc3RhdGUgPSBidWZmZXIuc2F2ZSgpO1xuICBjb25zdCByZXMgPSB0aGlzLl9za2lwVW50aWxFbmQoXG4gICAgYnVmZmVyLFxuICAgICdGYWlsZWQgdG8gc2tpcCBpbmRlZmluaXRlIGxlbmd0aCBib2R5OiBcIicgKyB0aGlzLnRhZyArICdcIicpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSlcbiAgICByZXR1cm4gcmVzO1xuXG4gIGxlbiA9IGJ1ZmZlci5vZmZzZXQgLSBzdGF0ZS5vZmZzZXQ7XG4gIGJ1ZmZlci5yZXN0b3JlKHN0YXRlKTtcbiAgcmV0dXJuIGJ1ZmZlci5za2lwKGxlbiwgJ0ZhaWxlZCB0byBtYXRjaCBib2R5IG9mOiBcIicgKyB0YWcgKyAnXCInKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9za2lwVW50aWxFbmQgPSBmdW5jdGlvbiBza2lwVW50aWxFbmQoYnVmZmVyLCBmYWlsKSB7XG4gIGZvciAoOzspIHtcbiAgICBjb25zdCB0YWcgPSBkZXJEZWNvZGVUYWcoYnVmZmVyLCBmYWlsKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IodGFnKSlcbiAgICAgIHJldHVybiB0YWc7XG4gICAgY29uc3QgbGVuID0gZGVyRGVjb2RlTGVuKGJ1ZmZlciwgdGFnLnByaW1pdGl2ZSwgZmFpbCk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKGxlbikpXG4gICAgICByZXR1cm4gbGVuO1xuXG4gICAgbGV0IHJlcztcbiAgICBpZiAodGFnLnByaW1pdGl2ZSB8fCBsZW4gIT09IG51bGwpXG4gICAgICByZXMgPSBidWZmZXIuc2tpcChsZW4pO1xuICAgIGVsc2VcbiAgICAgIHJlcyA9IHRoaXMuX3NraXBVbnRpbEVuZChidWZmZXIsIGZhaWwpO1xuXG4gICAgLy8gRmFpbHVyZVxuICAgIGlmIChidWZmZXIuaXNFcnJvcihyZXMpKVxuICAgICAgcmV0dXJuIHJlcztcblxuICAgIGlmICh0YWcudGFnU3RyID09PSAnZW5kJylcbiAgICAgIGJyZWFrO1xuICB9XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlTGlzdCA9IGZ1bmN0aW9uIGRlY29kZUxpc3QoYnVmZmVyLCB0YWcsIGRlY29kZXIsXG4gIG9wdGlvbnMpIHtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIHdoaWxlICghYnVmZmVyLmlzRW1wdHkoKSkge1xuICAgIGNvbnN0IHBvc3NpYmxlRW5kID0gdGhpcy5fcGVla1RhZyhidWZmZXIsICdlbmQnKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IocG9zc2libGVFbmQpKVxuICAgICAgcmV0dXJuIHBvc3NpYmxlRW5kO1xuXG4gICAgY29uc3QgcmVzID0gZGVjb2Rlci5kZWNvZGUoYnVmZmVyLCAnZGVyJywgb3B0aW9ucyk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHJlcykgJiYgcG9zc2libGVFbmQpXG4gICAgICBicmVhaztcbiAgICByZXN1bHQucHVzaChyZXMpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlU3RyID0gZnVuY3Rpb24gZGVjb2RlU3RyKGJ1ZmZlciwgdGFnKSB7XG4gIGlmICh0YWcgPT09ICdiaXRzdHInKSB7XG4gICAgY29uc3QgdW51c2VkID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcih1bnVzZWQpKVxuICAgICAgcmV0dXJuIHVudXNlZDtcbiAgICByZXR1cm4geyB1bnVzZWQ6IHVudXNlZCwgZGF0YTogYnVmZmVyLnJhdygpIH07XG4gIH0gZWxzZSBpZiAodGFnID09PSAnYm1wc3RyJykge1xuICAgIGNvbnN0IHJhdyA9IGJ1ZmZlci5yYXcoKTtcbiAgICBpZiAocmF3Lmxlbmd0aCAlIDIgPT09IDEpXG4gICAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogYm1wc3RyIGxlbmd0aCBtaXNtYXRjaCcpO1xuXG4gICAgbGV0IHN0ciA9ICcnO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmF3Lmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUocmF3LnJlYWRVSW50MTZCRShpICogMikpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ251bXN0cicpIHtcbiAgICBjb25zdCBudW1zdHIgPSBidWZmZXIucmF3KCkudG9TdHJpbmcoJ2FzY2lpJyk7XG4gICAgaWYgKCF0aGlzLl9pc051bXN0cihudW1zdHIpKSB7XG4gICAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdudW1zdHIgdW5zdXBwb3J0ZWQgY2hhcmFjdGVycycpO1xuICAgIH1cbiAgICByZXR1cm4gbnVtc3RyO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ29jdHN0cicpIHtcbiAgICByZXR1cm4gYnVmZmVyLnJhdygpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ29iakRlc2MnKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5yYXcoKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdwcmludHN0cicpIHtcbiAgICBjb25zdCBwcmludHN0ciA9IGJ1ZmZlci5yYXcoKS50b1N0cmluZygnYXNjaWknKTtcbiAgICBpZiAoIXRoaXMuX2lzUHJpbnRzdHIocHJpbnRzdHIpKSB7XG4gICAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdwcmludHN0ciB1bnN1cHBvcnRlZCBjaGFyYWN0ZXJzJyk7XG4gICAgfVxuICAgIHJldHVybiBwcmludHN0cjtcbiAgfSBlbHNlIGlmICgvc3RyJC8udGVzdCh0YWcpKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5yYXcoKS50b1N0cmluZygpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICsgdGFnICsgJyB1bnN1cHBvcnRlZCcpO1xuICB9XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlT2JqaWQgPSBmdW5jdGlvbiBkZWNvZGVPYmppZChidWZmZXIsIHZhbHVlcywgcmVsYXRpdmUpIHtcbiAgbGV0IHJlc3VsdDtcbiAgY29uc3QgaWRlbnRpZmllcnMgPSBbXTtcbiAgbGV0IGlkZW50ID0gMDtcbiAgbGV0IHN1YmlkZW50ID0gMDtcbiAgd2hpbGUgKCFidWZmZXIuaXNFbXB0eSgpKSB7XG4gICAgc3ViaWRlbnQgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gICAgaWRlbnQgPDw9IDc7XG4gICAgaWRlbnQgfD0gc3ViaWRlbnQgJiAweDdmO1xuICAgIGlmICgoc3ViaWRlbnQgJiAweDgwKSA9PT0gMCkge1xuICAgICAgaWRlbnRpZmllcnMucHVzaChpZGVudCk7XG4gICAgICBpZGVudCA9IDA7XG4gICAgfVxuICB9XG4gIGlmIChzdWJpZGVudCAmIDB4ODApXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudCk7XG5cbiAgY29uc3QgZmlyc3QgPSAoaWRlbnRpZmllcnNbMF0gLyA0MCkgfCAwO1xuICBjb25zdCBzZWNvbmQgPSBpZGVudGlmaWVyc1swXSAlIDQwO1xuXG4gIGlmIChyZWxhdGl2ZSlcbiAgICByZXN1bHQgPSBpZGVudGlmaWVycztcbiAgZWxzZVxuICAgIHJlc3VsdCA9IFtmaXJzdCwgc2Vjb25kXS5jb25jYXQoaWRlbnRpZmllcnMuc2xpY2UoMSkpO1xuXG4gIGlmICh2YWx1ZXMpIHtcbiAgICBsZXQgdG1wID0gdmFsdWVzW3Jlc3VsdC5qb2luKCcgJyldO1xuICAgIGlmICh0bXAgPT09IHVuZGVmaW5lZClcbiAgICAgIHRtcCA9IHZhbHVlc1tyZXN1bHQuam9pbignLicpXTtcbiAgICBpZiAodG1wICE9PSB1bmRlZmluZWQpXG4gICAgICByZXN1bHQgPSB0bXA7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVRpbWUgPSBmdW5jdGlvbiBkZWNvZGVUaW1lKGJ1ZmZlciwgdGFnKSB7XG4gIGNvbnN0IHN0ciA9IGJ1ZmZlci5yYXcoKS50b1N0cmluZygpO1xuXG4gIGxldCB5ZWFyO1xuICBsZXQgbW9uO1xuICBsZXQgZGF5O1xuICBsZXQgaG91cjtcbiAgbGV0IG1pbjtcbiAgbGV0IHNlYztcbiAgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnKSB7XG4gICAgeWVhciA9IHN0ci5zbGljZSgwLCA0KSB8IDA7XG4gICAgbW9uID0gc3RyLnNsaWNlKDQsIDYpIHwgMDtcbiAgICBkYXkgPSBzdHIuc2xpY2UoNiwgOCkgfCAwO1xuICAgIGhvdXIgPSBzdHIuc2xpY2UoOCwgMTApIHwgMDtcbiAgICBtaW4gPSBzdHIuc2xpY2UoMTAsIDEyKSB8IDA7XG4gICAgc2VjID0gc3RyLnNsaWNlKDEyLCAxNCkgfCAwO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3V0Y3RpbWUnKSB7XG4gICAgeWVhciA9IHN0ci5zbGljZSgwLCAyKSB8IDA7XG4gICAgbW9uID0gc3RyLnNsaWNlKDIsIDQpIHwgMDtcbiAgICBkYXkgPSBzdHIuc2xpY2UoNCwgNikgfCAwO1xuICAgIGhvdXIgPSBzdHIuc2xpY2UoNiwgOCkgfCAwO1xuICAgIG1pbiA9IHN0ci5zbGljZSg4LCAxMCkgfCAwO1xuICAgIHNlYyA9IHN0ci5zbGljZSgxMCwgMTIpIHwgMDtcbiAgICBpZiAoeWVhciA8IDcwKVxuICAgICAgeWVhciA9IDIwMDAgKyB5ZWFyO1xuICAgIGVsc2VcbiAgICAgIHllYXIgPSAxOTAwICsgeWVhcjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyAnICsgdGFnICsgJyB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Jyk7XG4gIH1cblxuICByZXR1cm4gRGF0ZS5VVEMoeWVhciwgbW9uIC0gMSwgZGF5LCBob3VyLCBtaW4sIHNlYywgMCk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlTnVsbCA9IGZ1bmN0aW9uIGRlY29kZU51bGwoKSB7XG4gIHJldHVybiBudWxsO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZUJvb2wgPSBmdW5jdGlvbiBkZWNvZGVCb29sKGJ1ZmZlcikge1xuICBjb25zdCByZXMgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gIGlmIChidWZmZXIuaXNFcnJvcihyZXMpKVxuICAgIHJldHVybiByZXM7XG4gIGVsc2VcbiAgICByZXR1cm4gcmVzICE9PSAwO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZUludCA9IGZ1bmN0aW9uIGRlY29kZUludChidWZmZXIsIHZhbHVlcykge1xuICAvLyBCaWdpbnQsIHJldHVybiBhcyBpdCBpcyAoYXNzdW1lIGJpZyBlbmRpYW4pXG4gIGNvbnN0IHJhdyA9IGJ1ZmZlci5yYXcoKTtcbiAgbGV0IHJlcyA9IG5ldyBiaWdudW0ocmF3KTtcblxuICBpZiAodmFsdWVzKVxuICAgIHJlcyA9IHZhbHVlc1tyZXMudG9TdHJpbmcoMTApXSB8fCByZXM7XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl91c2UgPSBmdW5jdGlvbiB1c2UoZW50aXR5LCBvYmopIHtcbiAgaWYgKHR5cGVvZiBlbnRpdHkgPT09ICdmdW5jdGlvbicpXG4gICAgZW50aXR5ID0gZW50aXR5KG9iaik7XG4gIHJldHVybiBlbnRpdHkuX2dldERlY29kZXIoJ2RlcicpLnRyZWU7XG59O1xuXG4vLyBVdGlsaXR5IG1ldGhvZHNcblxuZnVuY3Rpb24gZGVyRGVjb2RlVGFnKGJ1ZiwgZmFpbCkge1xuICBsZXQgdGFnID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgaWYgKGJ1Zi5pc0Vycm9yKHRhZykpXG4gICAgcmV0dXJuIHRhZztcblxuICBjb25zdCBjbHMgPSBkZXIudGFnQ2xhc3NbdGFnID4+IDZdO1xuICBjb25zdCBwcmltaXRpdmUgPSAodGFnICYgMHgyMCkgPT09IDA7XG5cbiAgLy8gTXVsdGktb2N0ZXQgdGFnIC0gbG9hZFxuICBpZiAoKHRhZyAmIDB4MWYpID09PSAweDFmKSB7XG4gICAgbGV0IG9jdCA9IHRhZztcbiAgICB0YWcgPSAwO1xuICAgIHdoaWxlICgob2N0ICYgMHg4MCkgPT09IDB4ODApIHtcbiAgICAgIG9jdCA9IGJ1Zi5yZWFkVUludDgoZmFpbCk7XG4gICAgICBpZiAoYnVmLmlzRXJyb3Iob2N0KSlcbiAgICAgICAgcmV0dXJuIG9jdDtcblxuICAgICAgdGFnIDw8PSA3O1xuICAgICAgdGFnIHw9IG9jdCAmIDB4N2Y7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRhZyAmPSAweDFmO1xuICB9XG4gIGNvbnN0IHRhZ1N0ciA9IGRlci50YWdbdGFnXTtcblxuICByZXR1cm4ge1xuICAgIGNsczogY2xzLFxuICAgIHByaW1pdGl2ZTogcHJpbWl0aXZlLFxuICAgIHRhZzogdGFnLFxuICAgIHRhZ1N0cjogdGFnU3RyXG4gIH07XG59XG5cbmZ1bmN0aW9uIGRlckRlY29kZUxlbihidWYsIHByaW1pdGl2ZSwgZmFpbCkge1xuICBsZXQgbGVuID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgaWYgKGJ1Zi5pc0Vycm9yKGxlbikpXG4gICAgcmV0dXJuIGxlbjtcblxuICAvLyBJbmRlZmluaXRlIGZvcm1cbiAgaWYgKCFwcmltaXRpdmUgJiYgbGVuID09PSAweDgwKVxuICAgIHJldHVybiBudWxsO1xuXG4gIC8vIERlZmluaXRlIGZvcm1cbiAgaWYgKChsZW4gJiAweDgwKSA9PT0gMCkge1xuICAgIC8vIFNob3J0IGZvcm1cbiAgICByZXR1cm4gbGVuO1xuICB9XG5cbiAgLy8gTG9uZyBmb3JtXG4gIGNvbnN0IG51bSA9IGxlbiAmIDB4N2Y7XG4gIGlmIChudW0gPiA0KVxuICAgIHJldHVybiBidWYuZXJyb3IoJ2xlbmd0aCBvY3RlY3QgaXMgdG9vIGxvbmcnKTtcblxuICBsZW4gPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG51bTsgaSsrKSB7XG4gICAgbGVuIDw8PSA4O1xuICAgIGNvbnN0IGogPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICAgIGlmIChidWYuaXNFcnJvcihqKSlcbiAgICAgIHJldHVybiBqO1xuICAgIGxlbiB8PSBqO1xuICB9XG5cbiAgcmV0dXJuIGxlbjtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgZGVjb2RlcnMgPSBleHBvcnRzO1xuXG5kZWNvZGVycy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuZGVjb2RlcnMucGVtID0gcmVxdWlyZSgnLi9wZW0nKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuY29uc3QgQnVmZmVyID0gcmVxdWlyZSgnc2FmZXItYnVmZmVyJykuQnVmZmVyO1xuXG5jb25zdCBERVJEZWNvZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcblxuZnVuY3Rpb24gUEVNRGVjb2RlcihlbnRpdHkpIHtcbiAgREVSRGVjb2Rlci5jYWxsKHRoaXMsIGVudGl0eSk7XG4gIHRoaXMuZW5jID0gJ3BlbSc7XG59XG5pbmhlcml0cyhQRU1EZWNvZGVyLCBERVJEZWNvZGVyKTtcbm1vZHVsZS5leHBvcnRzID0gUEVNRGVjb2RlcjtcblxuUEVNRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGRhdGEsIG9wdGlvbnMpIHtcbiAgY29uc3QgbGluZXMgPSBkYXRhLnRvU3RyaW5nKCkuc3BsaXQoL1tcXHJcXG5dKy9nKTtcblxuICBjb25zdCBsYWJlbCA9IG9wdGlvbnMubGFiZWwudG9VcHBlckNhc2UoKTtcblxuICBjb25zdCByZSA9IC9eLS0tLS0oQkVHSU58RU5EKSAoW14tXSspLS0tLS0kLztcbiAgbGV0IHN0YXJ0ID0gLTE7XG4gIGxldCBlbmQgPSAtMTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG1hdGNoID0gbGluZXNbaV0ubWF0Y2gocmUpO1xuICAgIGlmIChtYXRjaCA9PT0gbnVsbClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgaWYgKG1hdGNoWzJdICE9PSBsYWJlbClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgaWYgKHN0YXJ0ID09PSAtMSkge1xuICAgICAgaWYgKG1hdGNoWzFdICE9PSAnQkVHSU4nKVxuICAgICAgICBicmVhaztcbiAgICAgIHN0YXJ0ID0gaTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG1hdGNoWzFdICE9PSAnRU5EJylcbiAgICAgICAgYnJlYWs7XG4gICAgICBlbmQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChzdGFydCA9PT0gLTEgfHwgZW5kID09PSAtMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BFTSBzZWN0aW9uIG5vdCBmb3VuZCBmb3I6ICcgKyBsYWJlbCk7XG5cbiAgY29uc3QgYmFzZTY0ID0gbGluZXMuc2xpY2Uoc3RhcnQgKyAxLCBlbmQpLmpvaW4oJycpO1xuICAvLyBSZW1vdmUgZXhjZXNzaXZlIHN5bWJvbHNcbiAgYmFzZTY0LnJlcGxhY2UoL1teYS16MC05Ky89XSsvZ2ksICcnKTtcblxuICBjb25zdCBpbnB1dCA9IEJ1ZmZlci5mcm9tKGJhc2U2NCwgJ2Jhc2U2NCcpO1xuICByZXR1cm4gREVSRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlLmNhbGwodGhpcywgaW5wdXQsIG9wdGlvbnMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuY29uc3QgQnVmZmVyID0gcmVxdWlyZSgnc2FmZXItYnVmZmVyJykuQnVmZmVyO1xuY29uc3QgTm9kZSA9IHJlcXVpcmUoJy4uL2Jhc2Uvbm9kZScpO1xuXG4vLyBJbXBvcnQgREVSIGNvbnN0YW50c1xuY29uc3QgZGVyID0gcmVxdWlyZSgnLi4vY29uc3RhbnRzL2RlcicpO1xuXG5mdW5jdGlvbiBERVJFbmNvZGVyKGVudGl0eSkge1xuICB0aGlzLmVuYyA9ICdkZXInO1xuICB0aGlzLm5hbWUgPSBlbnRpdHkubmFtZTtcbiAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XG5cbiAgLy8gQ29uc3RydWN0IGJhc2UgdHJlZVxuICB0aGlzLnRyZWUgPSBuZXcgREVSTm9kZSgpO1xuICB0aGlzLnRyZWUuX2luaXQoZW50aXR5LmJvZHkpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBERVJFbmNvZGVyO1xuXG5ERVJFbmNvZGVyLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgcmVwb3J0ZXIpIHtcbiAgcmV0dXJuIHRoaXMudHJlZS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKS5qb2luKCk7XG59O1xuXG4vLyBUcmVlIG1ldGhvZHNcblxuZnVuY3Rpb24gREVSTm9kZShwYXJlbnQpIHtcbiAgTm9kZS5jYWxsKHRoaXMsICdkZXInLCBwYXJlbnQpO1xufVxuaW5oZXJpdHMoREVSTm9kZSwgTm9kZSk7XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVDb21wb3NpdGUgPSBmdW5jdGlvbiBlbmNvZGVDb21wb3NpdGUodGFnLFxuICBwcmltaXRpdmUsXG4gIGNscyxcbiAgY29udGVudCkge1xuICBjb25zdCBlbmNvZGVkVGFnID0gZW5jb2RlVGFnKHRhZywgcHJpbWl0aXZlLCBjbHMsIHRoaXMucmVwb3J0ZXIpO1xuXG4gIC8vIFNob3J0IGZvcm1cbiAgaWYgKGNvbnRlbnQubGVuZ3RoIDwgMHg4MCkge1xuICAgIGNvbnN0IGhlYWRlciA9IEJ1ZmZlci5hbGxvYygyKTtcbiAgICBoZWFkZXJbMF0gPSBlbmNvZGVkVGFnO1xuICAgIGhlYWRlclsxXSA9IGNvbnRlbnQubGVuZ3RoO1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgaGVhZGVyLCBjb250ZW50IF0pO1xuICB9XG5cbiAgLy8gTG9uZyBmb3JtXG4gIC8vIENvdW50IG9jdGV0cyByZXF1aXJlZCB0byBzdG9yZSBsZW5ndGhcbiAgbGV0IGxlbk9jdGV0cyA9IDE7XG4gIGZvciAobGV0IGkgPSBjb250ZW50Lmxlbmd0aDsgaSA+PSAweDEwMDsgaSA+Pj0gOClcbiAgICBsZW5PY3RldHMrKztcblxuICBjb25zdCBoZWFkZXIgPSBCdWZmZXIuYWxsb2MoMSArIDEgKyBsZW5PY3RldHMpO1xuICBoZWFkZXJbMF0gPSBlbmNvZGVkVGFnO1xuICBoZWFkZXJbMV0gPSAweDgwIHwgbGVuT2N0ZXRzO1xuXG4gIGZvciAobGV0IGkgPSAxICsgbGVuT2N0ZXRzLCBqID0gY29udGVudC5sZW5ndGg7IGogPiAwOyBpLS0sIGogPj49IDgpXG4gICAgaGVhZGVyW2ldID0gaiAmIDB4ZmY7XG5cbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWyBoZWFkZXIsIGNvbnRlbnQgXSk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlU3RyID0gZnVuY3Rpb24gZW5jb2RlU3RyKHN0ciwgdGFnKSB7XG4gIGlmICh0YWcgPT09ICdiaXRzdHInKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWyBzdHIudW51c2VkIHwgMCwgc3RyLmRhdGEgXSk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnYm1wc3RyJykge1xuICAgIGNvbnN0IGJ1ZiA9IEJ1ZmZlci5hbGxvYyhzdHIubGVuZ3RoICogMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGJ1Zi53cml0ZVVJbnQxNkJFKHN0ci5jaGFyQ29kZUF0KGkpLCBpICogMik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGJ1Zik7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnbnVtc3RyJykge1xuICAgIGlmICghdGhpcy5faXNOdW1zdHIoc3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ0VuY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIgc3VwcG9ydHMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25seSBkaWdpdHMgYW5kIHNwYWNlJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHN0cik7XG4gIH0gZWxzZSBpZiAodGFnID09PSAncHJpbnRzdHInKSB7XG4gICAgaWYgKCF0aGlzLl9pc1ByaW50c3RyKHN0cikpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgc3VwcG9ydHMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25seSBsYXRpbiB1cHBlciBhbmQgbG93ZXIgY2FzZSBsZXR0ZXJzLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaWdpdHMsIHNwYWNlLCBhcG9zdHJvcGhlLCBsZWZ0IGFuZCByaWd0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJlbnRoZXNpcywgcGx1cyBzaWduLCBjb21tYSwgaHlwaGVuLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb3QsIHNsYXNoLCBjb2xvbiwgZXF1YWwgc2lnbiwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVlc3Rpb24gbWFyaycpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ29iakRlc2MnKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgKyB0YWcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgdW5zdXBwb3J0ZWQnKTtcbiAgfVxufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZU9iamlkID0gZnVuY3Rpb24gZW5jb2RlT2JqaWQoaWQsIHZhbHVlcywgcmVsYXRpdmUpIHtcbiAgaWYgKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIXZhbHVlcylcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdzdHJpbmcgb2JqaWQgZ2l2ZW4sIGJ1dCBubyB2YWx1ZXMgbWFwIGZvdW5kJyk7XG4gICAgaWYgKCF2YWx1ZXMuaGFzT3duUHJvcGVydHkoaWQpKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ29iamlkIG5vdCBmb3VuZCBpbiB2YWx1ZXMgbWFwJyk7XG4gICAgaWQgPSB2YWx1ZXNbaWRdLnNwbGl0KC9bXFxzLl0rL2cpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspXG4gICAgICBpZFtpXSB8PSAwO1xuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaWQpKSB7XG4gICAgaWQgPSBpZC5zbGljZSgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaWQubGVuZ3RoOyBpKyspXG4gICAgICBpZFtpXSB8PSAwO1xuICB9XG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGlkKSkge1xuICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdvYmppZCgpIHNob3VsZCBiZSBlaXRoZXIgYXJyYXkgb3Igc3RyaW5nLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ290OiAnICsgSlNPTi5zdHJpbmdpZnkoaWQpKTtcbiAgfVxuXG4gIGlmICghcmVsYXRpdmUpIHtcbiAgICBpZiAoaWRbMV0gPj0gNDApXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignU2Vjb25kIG9iamlkIGlkZW50aWZpZXIgT09CJyk7XG4gICAgaWQuc3BsaWNlKDAsIDIsIGlkWzBdICogNDAgKyBpZFsxXSk7XG4gIH1cblxuICAvLyBDb3VudCBudW1iZXIgb2Ygb2N0ZXRzXG4gIGxldCBzaXplID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZC5sZW5ndGg7IGkrKykge1xuICAgIGxldCBpZGVudCA9IGlkW2ldO1xuICAgIGZvciAoc2l6ZSsrOyBpZGVudCA+PSAweDgwOyBpZGVudCA+Pj0gNylcbiAgICAgIHNpemUrKztcbiAgfVxuXG4gIGNvbnN0IG9iamlkID0gQnVmZmVyLmFsbG9jKHNpemUpO1xuICBsZXQgb2Zmc2V0ID0gb2JqaWQubGVuZ3RoIC0gMTtcbiAgZm9yIChsZXQgaSA9IGlkLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgbGV0IGlkZW50ID0gaWRbaV07XG4gICAgb2JqaWRbb2Zmc2V0LS1dID0gaWRlbnQgJiAweDdmO1xuICAgIHdoaWxlICgoaWRlbnQgPj49IDcpID4gMClcbiAgICAgIG9iamlkW29mZnNldC0tXSA9IDB4ODAgfCAoaWRlbnQgJiAweDdmKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG9iamlkKTtcbn07XG5cbmZ1bmN0aW9uIHR3byhudW0pIHtcbiAgaWYgKG51bSA8IDEwKVxuICAgIHJldHVybiAnMCcgKyBudW07XG4gIGVsc2VcbiAgICByZXR1cm4gbnVtO1xufVxuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlVGltZSA9IGZ1bmN0aW9uIGVuY29kZVRpbWUodGltZSwgdGFnKSB7XG4gIGxldCBzdHI7XG4gIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aW1lKTtcblxuICBpZiAodGFnID09PSAnZ2VudGltZScpIHtcbiAgICBzdHIgPSBbXG4gICAgICB0d28oZGF0ZS5nZXRVVENGdWxsWWVhcigpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01vbnRoKCkgKyAxKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0RhdGUoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENIb3VycygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ01pbnV0ZXMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENTZWNvbmRzKCkpLFxuICAgICAgJ1onXG4gICAgXS5qb2luKCcnKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICd1dGN0aW1lJykge1xuICAgIHN0ciA9IFtcbiAgICAgIHR3byhkYXRlLmdldFVUQ0Z1bGxZZWFyKCkgJSAxMDApLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTW9udGgoKSArIDEpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDRGF0ZSgpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0hvdXJzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTWludXRlcygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ1NlY29uZHMoKSksXG4gICAgICAnWidcbiAgICBdLmpvaW4oJycpO1xuICB9IGVsc2Uge1xuICAgIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ0VuY29kaW5nICcgKyB0YWcgKyAnIHRpbWUgaXMgbm90IHN1cHBvcnRlZCB5ZXQnKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9lbmNvZGVTdHIoc3RyLCAnb2N0c3RyJyk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZW5jb2RlTnVsbCA9IGZ1bmN0aW9uIGVuY29kZU51bGwoKSB7XG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKCcnKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVJbnQgPSBmdW5jdGlvbiBlbmNvZGVJbnQobnVtLCB2YWx1ZXMpIHtcbiAgaWYgKHR5cGVvZiBudW0gPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKCF2YWx1ZXMpXG4gICAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignU3RyaW5nIGludCBvciBlbnVtIGdpdmVuLCBidXQgbm8gdmFsdWVzIG1hcCcpO1xuICAgIGlmICghdmFsdWVzLmhhc093blByb3BlcnR5KG51bSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdWYWx1ZXMgbWFwIGRvZXNuXFwndCBjb250YWluOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG51bSkpO1xuICAgIH1cbiAgICBudW0gPSB2YWx1ZXNbbnVtXTtcbiAgfVxuXG4gIC8vIEJpZ251bSwgYXNzdW1lIGJpZyBlbmRpYW5cbiAgaWYgKHR5cGVvZiBudW0gIT09ICdudW1iZXInICYmICFCdWZmZXIuaXNCdWZmZXIobnVtKSkge1xuICAgIGNvbnN0IG51bUFycmF5ID0gbnVtLnRvQXJyYXkoKTtcbiAgICBpZiAoIW51bS5zaWduICYmIG51bUFycmF5WzBdICYgMHg4MCkge1xuICAgICAgbnVtQXJyYXkudW5zaGlmdCgwKTtcbiAgICB9XG4gICAgbnVtID0gQnVmZmVyLmZyb20obnVtQXJyYXkpO1xuICB9XG5cbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihudW0pKSB7XG4gICAgbGV0IHNpemUgPSBudW0ubGVuZ3RoO1xuICAgIGlmIChudW0ubGVuZ3RoID09PSAwKVxuICAgICAgc2l6ZSsrO1xuXG4gICAgY29uc3Qgb3V0ID0gQnVmZmVyLmFsbG9jKHNpemUpO1xuICAgIG51bS5jb3B5KG91dCk7XG4gICAgaWYgKG51bS5sZW5ndGggPT09IDApXG4gICAgICBvdXRbMF0gPSAwO1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG91dCk7XG4gIH1cblxuICBpZiAobnVtIDwgMHg4MClcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihudW0pO1xuXG4gIGlmIChudW0gPCAweDEwMClcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbMCwgbnVtXSk7XG5cbiAgbGV0IHNpemUgPSAxO1xuICBmb3IgKGxldCBpID0gbnVtOyBpID49IDB4MTAwOyBpID4+PSA4KVxuICAgIHNpemUrKztcblxuICBjb25zdCBvdXQgPSBuZXcgQXJyYXkoc2l6ZSk7XG4gIGZvciAobGV0IGkgPSBvdXQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBvdXRbaV0gPSBudW0gJiAweGZmO1xuICAgIG51bSA+Pj0gODtcbiAgfVxuICBpZihvdXRbMF0gJiAweDgwKSB7XG4gICAgb3V0LnVuc2hpZnQoMCk7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihCdWZmZXIuZnJvbShvdXQpKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVCb29sID0gZnVuY3Rpb24gZW5jb2RlQm9vbCh2YWx1ZSkge1xuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih2YWx1ZSA/IDB4ZmYgOiAwKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl91c2UgPSBmdW5jdGlvbiB1c2UoZW50aXR5LCBvYmopIHtcbiAgaWYgKHR5cGVvZiBlbnRpdHkgPT09ICdmdW5jdGlvbicpXG4gICAgZW50aXR5ID0gZW50aXR5KG9iaik7XG4gIHJldHVybiBlbnRpdHkuX2dldEVuY29kZXIoJ2RlcicpLnRyZWU7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fc2tpcERlZmF1bHQgPSBmdW5jdGlvbiBza2lwRGVmYXVsdChkYXRhQnVmZmVyLCByZXBvcnRlciwgcGFyZW50KSB7XG4gIGNvbnN0IHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICBsZXQgaTtcbiAgaWYgKHN0YXRlWydkZWZhdWx0J10gPT09IG51bGwpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGRhdGEgPSBkYXRhQnVmZmVyLmpvaW4oKTtcbiAgaWYgKHN0YXRlLmRlZmF1bHRCdWZmZXIgPT09IHVuZGVmaW5lZClcbiAgICBzdGF0ZS5kZWZhdWx0QnVmZmVyID0gdGhpcy5fZW5jb2RlVmFsdWUoc3RhdGVbJ2RlZmF1bHQnXSwgcmVwb3J0ZXIsIHBhcmVudCkuam9pbigpO1xuXG4gIGlmIChkYXRhLmxlbmd0aCAhPT0gc3RhdGUuZGVmYXVsdEJ1ZmZlci5sZW5ndGgpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIGZvciAoaT0wOyBpIDwgZGF0YS5sZW5ndGg7IGkrKylcbiAgICBpZiAoZGF0YVtpXSAhPT0gc3RhdGUuZGVmYXVsdEJ1ZmZlcltpXSlcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIFV0aWxpdHkgbWV0aG9kc1xuXG5mdW5jdGlvbiBlbmNvZGVUYWcodGFnLCBwcmltaXRpdmUsIGNscywgcmVwb3J0ZXIpIHtcbiAgbGV0IHJlcztcblxuICBpZiAodGFnID09PSAnc2Vxb2YnKVxuICAgIHRhZyA9ICdzZXEnO1xuICBlbHNlIGlmICh0YWcgPT09ICdzZXRvZicpXG4gICAgdGFnID0gJ3NldCc7XG5cbiAgaWYgKGRlci50YWdCeU5hbWUuaGFzT3duUHJvcGVydHkodGFnKSlcbiAgICByZXMgPSBkZXIudGFnQnlOYW1lW3RhZ107XG4gIGVsc2UgaWYgKHR5cGVvZiB0YWcgPT09ICdudW1iZXInICYmICh0YWcgfCAwKSA9PT0gdGFnKVxuICAgIHJlcyA9IHRhZztcbiAgZWxzZVxuICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVW5rbm93biB0YWc6ICcgKyB0YWcpO1xuXG4gIGlmIChyZXMgPj0gMHgxZilcbiAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ011bHRpLW9jdGV0IHRhZyBlbmNvZGluZyB1bnN1cHBvcnRlZCcpO1xuXG4gIGlmICghcHJpbWl0aXZlKVxuICAgIHJlcyB8PSAweDIwO1xuXG4gIHJlcyB8PSAoZGVyLnRhZ0NsYXNzQnlOYW1lW2NscyB8fCAndW5pdmVyc2FsJ10gPDwgNik7XG5cbiAgcmV0dXJuIHJlcztcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgZW5jb2RlcnMgPSBleHBvcnRzO1xuXG5lbmNvZGVycy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuZW5jb2RlcnMucGVtID0gcmVxdWlyZSgnLi9wZW0nKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuY29uc3QgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5jb25zdCBERVJFbmNvZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcblxuZnVuY3Rpb24gUEVNRW5jb2RlcihlbnRpdHkpIHtcbiAgREVSRW5jb2Rlci5jYWxsKHRoaXMsIGVudGl0eSk7XG4gIHRoaXMuZW5jID0gJ3BlbSc7XG59XG5pbmhlcml0cyhQRU1FbmNvZGVyLCBERVJFbmNvZGVyKTtcbm1vZHVsZS5leHBvcnRzID0gUEVNRW5jb2RlcjtcblxuUEVNRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIG9wdGlvbnMpIHtcbiAgY29uc3QgYnVmID0gREVSRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlLmNhbGwodGhpcywgZGF0YSk7XG5cbiAgY29uc3QgcCA9IGJ1Zi50b1N0cmluZygnYmFzZTY0Jyk7XG4gIGNvbnN0IG91dCA9IFsgJy0tLS0tQkVHSU4gJyArIG9wdGlvbnMubGFiZWwgKyAnLS0tLS0nIF07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcC5sZW5ndGg7IGkgKz0gNjQpXG4gICAgb3V0LnB1c2gocC5zbGljZShpLCBpICsgNjQpKTtcbiAgb3V0LnB1c2goJy0tLS0tRU5EICcgKyBvcHRpb25zLmxhYmVsICsgJy0tLS0tJyk7XG4gIHJldHVybiBvdXQuam9pbignXFxuJyk7XG59O1xuIiwiKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFV0aWxzXG4gIGZ1bmN0aW9uIGFzc2VydCAodmFsLCBtc2cpIHtcbiAgICBpZiAoIXZhbCkgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xuICB9XG5cbiAgLy8gQ291bGQgdXNlIGBpbmhlcml0c2AgbW9kdWxlLCBidXQgZG9uJ3Qgd2FudCB0byBtb3ZlIGZyb20gc2luZ2xlIGZpbGVcbiAgLy8gYXJjaGl0ZWN0dXJlIHlldC5cbiAgZnVuY3Rpb24gaW5oZXJpdHMgKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGU7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKTtcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gIH1cblxuICAvLyBCTlxuXG4gIGZ1bmN0aW9uIEJOIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChCTi5pc0JOKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgdGhpcy53b3JkcyA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgLy8gUmVkdWN0aW9uIGNvbnRleHRcbiAgICB0aGlzLnJlZCA9IG51bGw7XG5cbiAgICBpZiAobnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gJ2xlJyB8fCBiYXNlID09PSAnYmUnKSB7XG4gICAgICAgIGVuZGlhbiA9IGJhc2U7XG4gICAgICAgIGJhc2UgPSAxMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdChudW1iZXIgfHwgMCwgYmFzZSB8fCAxMCwgZW5kaWFuIHx8ICdiZScpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJOO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQk4gPSBCTjtcbiAgfVxuXG4gIEJOLkJOID0gQk47XG4gIEJOLndvcmRTaXplID0gMjY7XG5cbiAgdmFyIEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5CdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBCdWZmZXIgPSB3aW5kb3cuQnVmZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gIH1cblxuICBCTi5pc0JOID0gZnVuY3Rpb24gaXNCTiAobnVtKSB7XG4gICAgaWYgKG51bSBpbnN0YW5jZW9mIEJOKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVtICE9PSBudWxsICYmIHR5cGVvZiBudW0gPT09ICdvYmplY3QnICYmXG4gICAgICBudW0uY29uc3RydWN0b3Iud29yZFNpemUgPT09IEJOLndvcmRTaXplICYmIEFycmF5LmlzQXJyYXkobnVtLndvcmRzKTtcbiAgfTtcblxuICBCTi5tYXggPSBmdW5jdGlvbiBtYXggKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA+IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5taW4gPSBmdW5jdGlvbiBtaW4gKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA8IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXROdW1iZXIobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXRBcnJheShudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBiYXNlID0gMTY7XG4gICAgfVxuICAgIGFzc2VydChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KTtcblxuICAgIG51bWJlciA9IG51bWJlci50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICBzdGFydCsrO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0IDwgbnVtYmVyLmxlbmd0aCkge1xuICAgICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICAgIHRoaXMuX3BhcnNlSGV4KG51bWJlciwgc3RhcnQsIGVuZGlhbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wYXJzZUJhc2UobnVtYmVyLCBiYXNlLCBzdGFydCk7XG4gICAgICAgIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgICAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0TnVtYmVyID0gZnVuY3Rpb24gX2luaXROdW1iZXIgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDB4NDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgbnVtYmVyICYgMHgzZmZmZmZmIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPCAweDEwMDAwMDAwMDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobnVtYmVyIDwgMHgyMDAwMDAwMDAwMDAwMCk7IC8vIDIgXiA1MyAodW5zYWZlKVxuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZixcbiAgICAgICAgMVxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICAvLyBSZXZlcnNlIHRoZSBieXRlc1xuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXRBcnJheSA9IGZ1bmN0aW9uIF9pbml0QXJyYXkgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgLy8gUGVyaGFwcyBhIFVpbnQ4QXJyYXlcbiAgICBhc3NlcnQodHlwZW9mIG51bWJlci5sZW5ndGggPT09ICdudW1iZXInKTtcbiAgICBpZiAobnVtYmVyLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbChudW1iZXIubGVuZ3RoIC8gMyk7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMSwgaiA9IDA7IGkgPj0gMDsgaSAtPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgLSAxXSA8PCA4KSB8IChudW1iZXJbaSAtIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpICsgMV0gPDwgOCkgfCAobnVtYmVyW2kgKyAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUhleDRCaXRzIChzdHJpbmcsIGluZGV4KSB7XG4gICAgdmFyIGMgPSBzdHJpbmcuY2hhckNvZGVBdChpbmRleCk7XG4gICAgLy8gJ0EnIC0gJ0YnXG4gICAgaWYgKGMgPj0gNjUgJiYgYyA8PSA3MCkge1xuICAgICAgcmV0dXJuIGMgLSA1NTtcbiAgICAvLyAnYScgLSAnZidcbiAgICB9IGVsc2UgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMDIpIHtcbiAgICAgIHJldHVybiBjIC0gODc7XG4gICAgLy8gJzAnIC0gJzknXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoYyAtIDQ4KSAmIDB4ZjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUhleEJ5dGUgKHN0cmluZywgbG93ZXJCb3VuZCwgaW5kZXgpIHtcbiAgICB2YXIgciA9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCk7XG4gICAgaWYgKGluZGV4IC0gMSA+PSBsb3dlckJvdW5kKSB7XG4gICAgICByIHw9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCAtIDEpIDw8IDQ7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUhleCA9IGZ1bmN0aW9uIF9wYXJzZUhleCAobnVtYmVyLCBzdGFydCwgZW5kaWFuKSB7XG4gICAgLy8gQ3JlYXRlIHBvc3NpYmx5IGJpZ2dlciBhcnJheSB0byBlbnN1cmUgdGhhdCBpdCBmaXRzIHRoZSBudW1iZXJcbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbCgobnVtYmVyLmxlbmd0aCAtIHN0YXJ0KSAvIDYpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgLy8gMjQtYml0cyBjaHVua3NcbiAgICB2YXIgb2ZmID0gMDtcbiAgICB2YXIgaiA9IDA7XG5cbiAgICB2YXIgdztcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMTsgaSA+PSBzdGFydDsgaSAtPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhcnNlTGVuZ3RoID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgICAgZm9yIChpID0gcGFyc2VMZW5ndGggJSAyID09PSAwID8gc3RhcnQgKyAxIDogc3RhcnQ7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIHIgKz0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICByICs9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUJhc2UgPSBmdW5jdGlvbiBfcGFyc2VCYXNlIChudW1iZXIsIGJhc2UsIHN0YXJ0KSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBhcyB6ZXJvXG4gICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA+IDEgJiYgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX25vcm1TaWduID0gZnVuY3Rpb24gX25vcm1TaWduICgpIHtcbiAgICAvLyAtMCA9IDBcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH07XG5cbiAgLypcblxuICB2YXIgemVyb3MgPSBbXTtcbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXTtcbiAgdmFyIGdyb3VwQmFzZXMgPSBbXTtcblxuICB2YXIgcyA9ICcnO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgQk4ud29yZFNpemUpIHtcbiAgICB6ZXJvc1tpXSA9IHM7XG4gICAgcyArPSAnMCc7XG4gIH1cbiAgZ3JvdXBTaXplc1swXSA9IDA7XG4gIGdyb3VwU2l6ZXNbMV0gPSAwO1xuICBncm91cEJhc2VzWzBdID0gMDtcbiAgZ3JvdXBCYXNlc1sxXSA9IDA7XG4gIHZhciBiYXNlID0gMiAtIDE7XG4gIHdoaWxlICgrK2Jhc2UgPCAzNiArIDEpIHtcbiAgICB2YXIgZ3JvdXBTaXplID0gMDtcbiAgICB2YXIgZ3JvdXBCYXNlID0gMTtcbiAgICB3aGlsZSAoZ3JvdXBCYXNlIDwgKDEgPDwgQk4ud29yZFNpemUpIC8gYmFzZSkge1xuICAgICAgZ3JvdXBCYXNlICo9IGJhc2U7XG4gICAgICBncm91cFNpemUgKz0gMTtcbiAgICB9XG4gICAgZ3JvdXBTaXplc1tiYXNlXSA9IGdyb3VwU2l6ZTtcbiAgICBncm91cEJhc2VzW2Jhc2VdID0gZ3JvdXBCYXNlO1xuICB9XG5cbiAgKi9cblxuICB2YXIgemVyb3MgPSBbXG4gICAgJycsXG4gICAgJzAnLFxuICAgICcwMCcsXG4gICAgJzAwMCcsXG4gICAgJzAwMDAnLFxuICAgICcwMDAwMCcsXG4gICAgJzAwMDAwMCcsXG4gICAgJzAwMDAwMDAnLFxuICAgICcwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gIF07XG5cbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXG4gICAgMCwgMCxcbiAgICAyNSwgMTYsIDEyLCAxMSwgMTAsIDksIDgsXG4gICAgOCwgNywgNywgNywgNywgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNVxuICBdO1xuXG4gIHZhciBncm91cEJhc2VzID0gW1xuICAgIDAsIDAsXG4gICAgMzM1NTQ0MzIsIDQzMDQ2NzIxLCAxNjc3NzIxNiwgNDg4MjgxMjUsIDYwNDY2MTc2LCA0MDM1MzYwNywgMTY3NzcyMTYsXG4gICAgNDMwNDY3MjEsIDEwMDAwMDAwLCAxOTQ4NzE3MSwgMzU4MzE4MDgsIDYyNzQ4NTE3LCA3NTI5NTM2LCAxMTM5MDYyNSxcbiAgICAxNjc3NzIxNiwgMjQxMzc1NjksIDM0MDEyMjI0LCA0NzA0NTg4MSwgNjQwMDAwMDAsIDQwODQxMDEsIDUxNTM2MzIsXG4gICAgNjQzNjM0MywgNzk2MjYyNCwgOTc2NTYyNSwgMTE4ODEzNzYsIDE0MzQ4OTA3LCAxNzIxMDM2OCwgMjA1MTExNDksXG4gICAgMjQzMDAwMDAsIDI4NjI5MTUxLCAzMzU1NDQzMiwgMzkxMzUzOTMsIDQ1NDM1NDI0LCA1MjUyMTg3NSwgNjA0NjYxNzZcbiAgXTtcblxuICBCTi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYmFzZSwgcGFkZGluZykge1xuICAgIGJhc2UgPSBiYXNlIHx8IDEwO1xuICAgIHBhZGRpbmcgPSBwYWRkaW5nIHwgMCB8fCAxO1xuXG4gICAgdmFyIG91dDtcbiAgICBpZiAoYmFzZSA9PT0gMTYgfHwgYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIG9mZiA9IDA7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgICAgdmFyIHdvcmQgPSAoKCh3IDw8IG9mZikgfCBjYXJyeSkgJiAweGZmZmZmZikudG9TdHJpbmcoMTYpO1xuICAgICAgICBjYXJyeSA9ICh3ID4+PiAoMjQgLSBvZmYpKSAmIDB4ZmZmZmZmO1xuICAgICAgICBpZiAoY2FycnkgIT09IDAgfHwgaSAhPT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbNiAtIHdvcmQubGVuZ3RoXSArIHdvcmQgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gd29yZCArIG91dDtcbiAgICAgICAgfVxuICAgICAgICBvZmYgKz0gMjtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgICBvdXQgPSBjYXJyeS50b1N0cmluZygxNikgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNikge1xuICAgICAgLy8gdmFyIGdyb3VwU2l6ZSA9IE1hdGguZmxvb3IoQk4ud29yZFNpemUgKiBNYXRoLkxOMiAvIE1hdGgubG9nKGJhc2UpKTtcbiAgICAgIHZhciBncm91cFNpemUgPSBncm91cFNpemVzW2Jhc2VdO1xuICAgICAgLy8gdmFyIGdyb3VwQmFzZSA9IE1hdGgucG93KGJhc2UsIGdyb3VwU2l6ZSk7XG4gICAgICB2YXIgZ3JvdXBCYXNlID0gZ3JvdXBCYXNlc1tiYXNlXTtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIGMgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjLm5lZ2F0aXZlID0gMDtcbiAgICAgIHdoaWxlICghYy5pc1plcm8oKSkge1xuICAgICAgICB2YXIgciA9IGMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgICB2YXIgbGl0dGxlRW5kaWFuID0gZW5kaWFuID09PSAnbGUnO1xuICAgIHZhciByZXMgPSBuZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7XG5cbiAgICB2YXIgYiwgaTtcbiAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKTtcbiAgICBpZiAoIWxpdHRsZUVuZGlhbikge1xuICAgICAgLy8gQXNzdW1lIGJpZy1lbmRpYW5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXFMZW5ndGggLSBieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW3JlcUxlbmd0aCAtIGkgLSAxXSA9IGI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tpXSA9IGI7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBpIDwgcmVxTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSAmICgxIDw8IHdiaXQpKSA+Pj4gd2JpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdztcbiAgfVxuXG4gIC8vIE51bWJlciBvZiB0cmFpbGluZyB6ZXJvIGJpdHNcbiAgQk4ucHJvdG90eXBlLnplcm9CaXRzID0gZnVuY3Rpb24gemVyb0JpdHMgKCkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gMDtcblxuICAgIHZhciByID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBiID0gdGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7XG4gICAgICByICs9IGI7XG4gICAgICBpZiAoYiAhPT0gMjYpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIGJ5dGVMZW5ndGggKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKSAvIDgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1R3b3MgPSBmdW5jdGlvbiB0b1R3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVR3b3MgPSBmdW5jdGlvbiBmcm9tVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy50ZXN0bih3aWR0aCAtIDEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RuKHdpZHRoKS5pYWRkbigxKS5pbmVnKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gaXNOZWcgKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlICE9PSAwO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluZWcgPSBmdW5jdGlvbiBpbmVnICgpIHtcbiAgICBpZiAoIXRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVvciA9IGZ1bmN0aW9uIGl1b3IgKG51bSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSB8IG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXhvciA9IGZ1bmN0aW9uIGl4b3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1eG9yKG51bSk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5peG9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51eG9yID0gZnVuY3Rpb24gdXhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKTtcbiAgfTtcblxuICAvLyBOb3QgYGB0aGlzYGAgd2l0aCBgYHdpZHRoYGAgYml0d2lkdGhcbiAgQk4ucHJvdG90eXBlLmlub3RuID0gZnVuY3Rpb24gaW5vdG4gKHdpZHRoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgJiYgd2lkdGggPj0gMCk7XG5cbiAgICB2YXIgYnl0ZXNOZWVkZWQgPSBNYXRoLmNlaWwod2lkdGggLyAyNikgfCAwO1xuICAgIHZhciBiaXRzTGVmdCA9IHdpZHRoICUgMjY7XG5cbiAgICAvLyBFeHRlbmQgdGhlIGJ1ZmZlciB3aXRoIGxlYWRpbmcgemVyb2VzXG4gICAgdGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtcblxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIGJ5dGVzTmVlZGVkLS07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRlIHdvcmRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlc05lZWRlZDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRoZSByZXNpZHVlXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgKDB4M2ZmZmZmZiA+PiAoMjYgLSBiaXRzTGVmdCkpO1xuICAgIH1cblxuICAgIC8vIEFuZCByZW1vdmUgbGVhZGluZyB6ZXJvZXNcbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gc21hbGxNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIHZhciBsZW4gPSAoc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoKSB8IDA7XG4gICAgb3V0Lmxlbmd0aCA9IGxlbjtcbiAgICBsZW4gPSAobGVuIC0gMSkgfCAwO1xuXG4gICAgLy8gUGVlbCBvbmUgaXRlcmF0aW9uIChjb21waWxlciBjYW4ndCBkbyBpdCwgYmVjYXVzZSBvZiBjb2RlIGNvbXBsZXhpdHkpXG4gICAgdmFyIGEgPSBzZWxmLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgYiA9IG51bS53b3Jkc1swXSB8IDA7XG4gICAgdmFyIHIgPSBhICogYjtcblxuICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgdmFyIGNhcnJ5ID0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICBvdXQud29yZHNbMF0gPSBsbztcblxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gY2FycnkgPj4+IDI2O1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSAoayAtIGopIHwgMDtcbiAgICAgICAgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgciA9IGEgKiBiICsgcndvcmQ7XG4gICAgICAgIG5jYXJyeSArPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgICByd29yZCA9IHIgJiAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZCB8IDA7XG4gICAgICBjYXJyeSA9IG5jYXJyeSB8IDA7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2FycnkgfCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNobG4gPSBmdW5jdGlvbiBpc2hsbiAoYml0cykge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHQgaW4tcGxhY2VcbiAgLy8gTk9URTogYGhpbnRgIGlzIGEgbG93ZXN0IGJpdCBiZWZvcmUgdHJhaWxpbmcgemVyb2VzXG4gIC8vIE5PVEU6IGlmIGBleHRlbmRlZGAgaXMgcHJlc2VudCAtIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggZGVzdHJveWVkIGJpdHNcbiAgQk4ucHJvdG90eXBlLml1c2hybiA9IGZ1bmN0aW9uIGl1c2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIGg7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIGggPSAoaGludCAtIChoaW50ICUgMjYpKSAvIDI2O1xuICAgIH0gZWxzZSB7XG4gICAgICBoID0gMDtcbiAgICB9XG5cbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IE1hdGgubWluKChiaXRzIC0gcikgLyAyNiwgdGhpcy5sZW5ndGgpO1xuICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgIHZhciBtYXNrZWRXb3JkcyA9IGV4dGVuZGVkO1xuXG4gICAgaCAtPSBzO1xuICAgIGggPSBNYXRoLm1heCgwLCBoKTtcblxuICAgIC8vIEV4dGVuZGVkIG1vZGUsIGNvcHkgbWFza2VkIHBhcnRcbiAgICBpZiAobWFza2VkV29yZHMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIG1hc2tlZFdvcmRzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICAgIG1hc2tlZFdvcmRzLmxlbmd0aCA9IHM7XG4gICAgfVxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIC8vIE5vLW9wLCB3ZSBzaG91bGQgbm90IG1vdmUgYW55dGhpbmcgYXQgYWxsXG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IHMpIHtcbiAgICAgIHRoaXMubGVuZ3RoIC09IHM7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpICsgc107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDAgJiYgKGNhcnJ5ICE9PSAwIHx8IGkgPj0gaCk7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAoY2FycnkgPDwgKDI2IC0gcikpIHwgKHdvcmQgPj4+IHIpO1xuICAgICAgY2FycnkgPSB3b3JkICYgbWFzaztcbiAgICB9XG5cbiAgICAvLyBQdXNoIGNhcnJpZWQgYml0cyBhcyBhIG1hc2tcbiAgICBpZiAobWFza2VkV29yZHMgJiYgY2FycnkgIT09IDApIHtcbiAgICAgIG1hc2tlZFdvcmRzLndvcmRzW21hc2tlZFdvcmRzLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyLnN0cmlwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NCBpbnN0YW5jZVxuICAgICAgICByLnN0cmlwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByIGlzIEJOIHY1IGluc3RhbmNlXG4gICAgICAgIHIuX3N0cmlwKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0KSB7XG4gICAgaW5wdXQuaXVzaHJuKHRoaXMubiwgMCwgb3V0KTtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIHJldHVybiBudW0uaW11bCh0aGlzLmspO1xuICB9O1xuXG4gIGZ1bmN0aW9uIEsyNTYgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdrMjU2JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZicpO1xuICB9XG4gIGluaGVyaXRzKEsyNTYsIE1QcmltZSk7XG5cbiAgSzI1Ni5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dHB1dCkge1xuICAgIC8vIDI1NiA9IDkgKiAyNiArIDIyXG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZjtcblxuICAgIHZhciBvdXRMZW4gPSBNYXRoLm1pbihpbnB1dC5sZW5ndGgsIDkpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0TGVuOyBpKyspIHtcbiAgICAgIG91dHB1dC53b3Jkc1tpXSA9IGlucHV0LndvcmRzW2ldO1xuICAgIH1cbiAgICBvdXRwdXQubGVuZ3RoID0gb3V0TGVuO1xuXG4gICAgaWYgKGlucHV0Lmxlbmd0aCA8PSA5KSB7XG4gICAgICBpbnB1dC53b3Jkc1swXSA9IDA7XG4gICAgICBpbnB1dC5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNoaWZ0IGJ5IDkgbGltYnNcbiAgICB2YXIgcHJldiA9IGlucHV0LndvcmRzWzldO1xuICAgIG91dHB1dC53b3Jkc1tvdXRwdXQubGVuZ3RoKytdID0gcHJldiAmIG1hc2s7XG5cbiAgICBmb3IgKGkgPSAxMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmV4dCA9IGlucHV0LndvcmRzW2ldIHwgMDtcbiAgICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSAoKG5leHQgJiBtYXNrKSA8PCA0KSB8IChwcmV2ID4+PiAyMik7XG4gICAgICBwcmV2ID0gbmV4dDtcbiAgICB9XG4gICAgcHJldiA+Pj49IDIyO1xuICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSBwcmV2O1xuICAgIGlmIChwcmV2ID09PSAwICYmIGlucHV0Lmxlbmd0aCA+IDEwKSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gMTA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSA5O1xuICAgIH1cbiAgfTtcblxuICBLMjU2LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxMDAwMDAzZDEgPSBbIDB4NDAsIDB4M2QxIF1cbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aF0gPSAwO1xuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoICsgMV0gPSAwO1xuICAgIG51bS5sZW5ndGggKz0gMjtcblxuICAgIC8vIGJvdW5kZWQgYXQ6IDB4NDAgKiAweDNmZmZmZmYgKyAweDNkMCA9IDB4MTAwMDAwMzkwXG4gICAgdmFyIGxvID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSBudW0ud29yZHNbaV0gfCAwO1xuICAgICAgbG8gKz0gdyAqIDB4M2QxO1xuICAgICAgbnVtLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICBsbyA9IHcgKiAweDQwICsgKChsbyAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICB9XG5cbiAgICAvLyBGYXN0IGxlbmd0aCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIGZ1bmN0aW9uIFAyMjQgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMjI0JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScpO1xuICB9XG4gIGluaGVyaXRzKFAyMjQsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDE5MiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AxOTInLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDE5MiwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMjU1MTkgKCkge1xuICAgIC8vIDIgXiAyNTUgLSAxOVxuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICcyNTUxOScsXG4gICAgICAnN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCcpO1xuICB9XG4gIGluaGVyaXRzKFAyNTUxOSwgTVByaW1lKTtcblxuICBQMjU1MTkucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEzXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGhpID0gKG51bS53b3Jkc1tpXSB8IDApICogMHgxMyArIGNhcnJ5O1xuICAgICAgdmFyIGxvID0gaGkgJiAweDNmZmZmZmY7XG4gICAgICBoaSA+Pj49IDI2O1xuXG4gICAgICBudW0ud29yZHNbaV0gPSBsbztcbiAgICAgIGNhcnJ5ID0gaGk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgbnVtLndvcmRzW251bS5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICAvLyBFeHBvcnRlZCBtb3N0bHkgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHVzZSBwbGFpbiBuYW1lIGluc3RlYWRcbiAgQk4uX3ByaW1lID0gZnVuY3Rpb24gcHJpbWUgKG5hbWUpIHtcbiAgICAvLyBDYWNoZWQgdmVyc2lvbiBvZiBwcmltZVxuICAgIGlmIChwcmltZXNbbmFtZV0pIHJldHVybiBwcmltZXNbbmFtZV07XG5cbiAgICB2YXIgcHJpbWU7XG4gICAgaWYgKG5hbWUgPT09ICdrMjU2Jykge1xuICAgICAgcHJpbWUgPSBuZXcgSzI1NigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyMjQnKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjI0KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDE5MicpIHtcbiAgICAgIHByaW1lID0gbmV3IFAxOTIoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjU1MTknKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjU1MTkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByaW1lICcgKyBuYW1lKTtcbiAgICB9XG4gICAgcHJpbWVzW25hbWVdID0gcHJpbWU7XG5cbiAgICByZXR1cm4gcHJpbWU7XG4gIH07XG5cbiAgLy9cbiAgLy8gQmFzZSByZWR1Y3Rpb24gZW5naW5lXG4gIC8vXG4gIGZ1bmN0aW9uIFJlZCAobSkge1xuICAgIGlmICh0eXBlb2YgbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBwcmltZSA9IEJOLl9wcmltZShtKTtcbiAgICAgIHRoaXMubSA9IHByaW1lLnA7XG4gICAgICB0aGlzLnByaW1lID0gcHJpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChtLmd0bigxKSwgJ21vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMScpO1xuICAgICAgdGhpcy5tID0gbTtcbiAgICAgIHRoaXMucHJpbWUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTEgPSBmdW5jdGlvbiBfdmVyaWZ5MSAoYSkge1xuICAgIGFzc2VydChhLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQsICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MiA9IGZ1bmN0aW9uIF92ZXJpZnkyIChhLCBiKSB7XG4gICAgYXNzZXJ0KChhLm5lZ2F0aXZlIHwgYi5uZWdhdGl2ZSkgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCAmJiBhLnJlZCA9PT0gYi5yZWQsXG4gICAgICAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW1vZCA9IGZ1bmN0aW9uIGltb2QgKGEpIHtcbiAgICBpZiAodGhpcy5wcmltZSkgcmV0dXJuIHRoaXMucHJpbWUuaXJlZHVjZShhKS5fZm9yY2VSZWQodGhpcyk7XG4gICAgcmV0dXJuIGEudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm0uc3ViKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5hZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlhZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLnN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlzdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNobCA9IGZ1bmN0aW9uIHNobCAoYSwgbnVtKSB7XG4gICAgdGhpcy5fdmVyaWZ5MShhKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEudXNobG4obnVtKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLmltdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEubXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bChhLCBhLmNsb25lKCkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKGEsIGEpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FydCA9IGZ1bmN0aW9uIHNxcnQgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciBtb2QzID0gdGhpcy5tLmFuZGxuKDMpO1xuICAgIGFzc2VydChtb2QzICUgMiA9PT0gMSk7XG5cbiAgICAvLyBGYXN0IGNhc2VcbiAgICBpZiAobW9kMyA9PT0gMykge1xuICAgICAgdmFyIHBvdyA9IHRoaXMubS5hZGQobmV3IEJOKDEpKS5pdXNocm4oMik7XG4gICAgICByZXR1cm4gdGhpcy5wb3coYSwgcG93KTtcbiAgICB9XG5cbiAgICAvLyBUb25lbGxpLVNoYW5rcyBhbGdvcml0aG0gKFRvdGFsbHkgdW5vcHRpbWl6ZWQgYW5kIHNsb3cpXG4gICAgLy9cbiAgICAvLyBGaW5kIFEgYW5kIFMsIHRoYXQgUSAqIDIgXiBTID0gKFAgLSAxKVxuICAgIHZhciBxID0gdGhpcy5tLnN1Ym4oMSk7XG4gICAgdmFyIHMgPSAwO1xuICAgIHdoaWxlICghcS5pc1plcm8oKSAmJiBxLmFuZGxuKDEpID09PSAwKSB7XG4gICAgICBzKys7XG4gICAgICBxLml1c2hybigxKTtcbiAgICB9XG4gICAgYXNzZXJ0KCFxLmlzWmVybygpKTtcblxuICAgIHZhciBvbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgdmFyIG5PbmUgPSBvbmUucmVkTmVnKCk7XG5cbiAgICAvLyBGaW5kIHF1YWRyYXRpYyBub24tcmVzaWR1ZVxuICAgIC8vIE5PVEU6IE1heCBpcyBzdWNoIGJlY2F1c2Ugb2YgZ2VuZXJhbGl6ZWQgUmllbWFubiBoeXBvdGhlc2lzLlxuICAgIHZhciBscG93ID0gdGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpO1xuICAgIHZhciB6ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIHogPSBuZXcgQk4oMiAqIHogKiB6KS50b1JlZCh0aGlzKTtcblxuICAgIHdoaWxlICh0aGlzLnBvdyh6LCBscG93KS5jbXAobk9uZSkgIT09IDApIHtcbiAgICAgIHoucmVkSUFkZChuT25lKTtcbiAgICB9XG5cbiAgICB2YXIgYyA9IHRoaXMucG93KHosIHEpO1xuICAgIHZhciByID0gdGhpcy5wb3coYSwgcS5hZGRuKDEpLml1c2hybigxKSk7XG4gICAgdmFyIHQgPSB0aGlzLnBvdyhhLCBxKTtcbiAgICB2YXIgbSA9IHM7XG4gICAgd2hpbGUgKHQuY21wKG9uZSkgIT09IDApIHtcbiAgICAgIHZhciB0bXAgPSB0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IHRtcC5jbXAob25lKSAhPT0gMDsgaSsrKSB7XG4gICAgICAgIHRtcCA9IHRtcC5yZWRTcXIoKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydChpIDwgbSk7XG4gICAgICB2YXIgYiA9IHRoaXMucG93KGMsIG5ldyBCTigxKS5pdXNobG4obSAtIGkgLSAxKSk7XG5cbiAgICAgIHIgPSByLnJlZE11bChiKTtcbiAgICAgIGMgPSBiLnJlZFNxcigpO1xuICAgICAgdCA9IHQucmVkTXVsKGMpO1xuICAgICAgbSA9IGk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIHZhciBpbnYgPSBhLl9pbnZtcCh0aGlzLm0pO1xuICAgIGlmIChpbnYubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGludi5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludikucmVkTmVnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KTtcbiAgICB9XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKGEsIG51bSkge1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgaWYgKG51bS5jbXBuKDEpID09PSAwKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIHdpbmRvd1NpemUgPSA0O1xuICAgIHZhciB3bmQgPSBuZXcgQXJyYXkoMSA8PCB3aW5kb3dTaXplKTtcbiAgICB3bmRbMF0gPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgd25kWzFdID0gYTtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IHduZC5sZW5ndGg7IGkrKykge1xuICAgICAgd25kW2ldID0gdGhpcy5tdWwod25kW2kgLSAxXSwgYSk7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IHduZFswXTtcbiAgICB2YXIgY3VycmVudCA9IDA7XG4gICAgdmFyIGN1cnJlbnRMZW4gPSAwO1xuICAgIHZhciBzdGFydCA9IG51bS5iaXRMZW5ndGgoKSAlIDI2O1xuICAgIGlmIChzdGFydCA9PT0gMCkge1xuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSBudW0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gbnVtLndvcmRzW2ldO1xuICAgICAgZm9yICh2YXIgaiA9IHN0YXJ0IC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgdmFyIGJpdCA9ICh3b3JkID4+IGopICYgMTtcbiAgICAgICAgaWYgKHJlcyAhPT0gd25kWzBdKSB7XG4gICAgICAgICAgcmVzID0gdGhpcy5zcXIocmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXQgPT09IDAgJiYgY3VycmVudCA9PT0gMCkge1xuICAgICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudCA8PD0gMTtcbiAgICAgICAgY3VycmVudCB8PSBiaXQ7XG4gICAgICAgIGN1cnJlbnRMZW4rKztcbiAgICAgICAgaWYgKGN1cnJlbnRMZW4gIT09IHdpbmRvd1NpemUgJiYgKGkgIT09IDAgfHwgaiAhPT0gMCkpIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHRoaXMubXVsKHJlcywgd25kW2N1cnJlbnRdKTtcbiAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgIGN1cnJlbnQgPSAwO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICB2YXIgciA9IG51bS51bW9kKHRoaXMubSk7XG5cbiAgICByZXR1cm4gciA9PT0gbnVtID8gci5jbG9uZSgpIDogcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByZXMgPSBudW0uY2xvbmUoKTtcbiAgICByZXMucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vXG4gIC8vIE1vbnRnb21lcnkgbWV0aG9kIGVuZ2luZVxuICAvL1xuXG4gIEJOLm1vbnQgPSBmdW5jdGlvbiBtb250IChudW0pIHtcbiAgICByZXR1cm4gbmV3IE1vbnQobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBNb250IChtKSB7XG4gICAgUmVkLmNhbGwodGhpcywgbSk7XG5cbiAgICB0aGlzLnNoaWZ0ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIGlmICh0aGlzLnNoaWZ0ICUgMjYgIT09IDApIHtcbiAgICAgIHRoaXMuc2hpZnQgKz0gMjYgLSAodGhpcy5zaGlmdCAlIDI2KTtcbiAgICB9XG5cbiAgICB0aGlzLnIgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpO1xuICAgIHRoaXMucjIgPSB0aGlzLmltb2QodGhpcy5yLnNxcigpKTtcbiAgICB0aGlzLnJpbnYgPSB0aGlzLnIuX2ludm1wKHRoaXMubSk7XG5cbiAgICB0aGlzLm1pbnYgPSB0aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSk7XG4gICAgdGhpcy5taW52ID0gdGhpcy5taW52LnVtb2QodGhpcy5yKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLnIuc3ViKHRoaXMubWludik7XG4gIH1cbiAgaW5oZXJpdHMoTW9udCwgUmVkKTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmltb2QobnVtLnVzaGxuKHRoaXMuc2hpZnQpKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgciA9IHRoaXMuaW1vZChudW0ubXVsKHRoaXMucmludikpO1xuICAgIHIucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHtcbiAgICAgIGEud29yZHNbMF0gPSAwO1xuICAgICAgYS5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgdmFyIHQgPSBhLmltdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG5cbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMCkuX2ZvcmNlUmVkKHRoaXMpO1xuXG4gICAgdmFyIHQgPSBhLm11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgLy8gKEFSKV4tMSAqIFJeMiA9IChBXi0xICogUl4tMSkgKiBSXjIgPSBBXi0xICogUlxuICAgIHZhciByZXMgPSB0aGlzLmltb2QoYS5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpO1xuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xufSkodHlwZW9mIG1vZHVsZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbW9kdWxlLCB0aGlzKTtcbiIsIi8vIEN1cnJlbnRseSBpbiBzeW5jIHdpdGggTm9kZS5qcyBsaWIvYXNzZXJ0LmpzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvY29tbWl0LzJhNTFhZTQyNGE1MTNlYzlhNmFhMzQ2NmJhYTBjYzFkNTVkZDRmM2Jcbi8vIE9yaWdpbmFsbHkgZnJvbSBuYXJ3aGFsLmpzIChodHRwOi8vbmFyd2hhbGpzLm9yZylcbi8vIENvcHlyaWdodCAoYykgMjAwOSBUaG9tYXMgUm9iaW5zb24gPDI4MG5vcnRoLmNvbT5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAnU29mdHdhcmUnKSwgdG9cbi8vIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4vLyByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Jcbi8vIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgJ0FTIElTJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOXG4vLyBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OXG4vLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIF9yZXF1aXJlID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9lcnJvcnMnKSxcbiAgICBfcmVxdWlyZSRjb2RlcyA9IF9yZXF1aXJlLmNvZGVzLFxuICAgIEVSUl9BTUJJR1VPVVNfQVJHVU1FTlQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfQU1CSUdVT1VTX0FSR1VNRU5ULFxuICAgIEVSUl9JTlZBTElEX0FSR19UWVBFID0gX3JlcXVpcmUkY29kZXMuRVJSX0lOVkFMSURfQVJHX1RZUEUsXG4gICAgRVJSX0lOVkFMSURfQVJHX1ZBTFVFID0gX3JlcXVpcmUkY29kZXMuRVJSX0lOVkFMSURfQVJHX1ZBTFVFLFxuICAgIEVSUl9JTlZBTElEX1JFVFVSTl9WQUxVRSA9IF9yZXF1aXJlJGNvZGVzLkVSUl9JTlZBTElEX1JFVFVSTl9WQUxVRSxcbiAgICBFUlJfTUlTU0lOR19BUkdTID0gX3JlcXVpcmUkY29kZXMuRVJSX01JU1NJTkdfQVJHUztcblxudmFyIEFzc2VydGlvbkVycm9yID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9hc3NlcnQvYXNzZXJ0aW9uX2Vycm9yJyk7XG5cbnZhciBfcmVxdWlyZTIgPSByZXF1aXJlKCd1dGlsLycpLFxuICAgIGluc3BlY3QgPSBfcmVxdWlyZTIuaW5zcGVjdDtcblxudmFyIF9yZXF1aXJlJHR5cGVzID0gcmVxdWlyZSgndXRpbC8nKS50eXBlcyxcbiAgICBpc1Byb21pc2UgPSBfcmVxdWlyZSR0eXBlcy5pc1Byb21pc2UsXG4gICAgaXNSZWdFeHAgPSBfcmVxdWlyZSR0eXBlcy5pc1JlZ0V4cDtcblxudmFyIG9iamVjdEFzc2lnbiA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduIDogcmVxdWlyZSgnZXM2LW9iamVjdC1hc3NpZ24nKS5hc3NpZ247XG52YXIgb2JqZWN0SXMgPSBPYmplY3QuaXMgPyBPYmplY3QuaXMgOiByZXF1aXJlKCdvYmplY3QtaXMnKTtcbnZhciBlcnJvckNhY2hlID0gbmV3IE1hcCgpO1xudmFyIGlzRGVlcEVxdWFsO1xudmFyIGlzRGVlcFN0cmljdEVxdWFsO1xudmFyIHBhcnNlRXhwcmVzc2lvbkF0O1xudmFyIGZpbmROb2RlQXJvdW5kO1xudmFyIGRlY29kZXI7XG5cbmZ1bmN0aW9uIGxhenlMb2FkQ29tcGFyaXNvbigpIHtcbiAgdmFyIGNvbXBhcmlzb24gPSByZXF1aXJlKCcuL2ludGVybmFsL3V0aWwvY29tcGFyaXNvbnMnKTtcblxuICBpc0RlZXBFcXVhbCA9IGNvbXBhcmlzb24uaXNEZWVwRXF1YWw7XG4gIGlzRGVlcFN0cmljdEVxdWFsID0gY29tcGFyaXNvbi5pc0RlZXBTdHJpY3RFcXVhbDtcbn0gLy8gRXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVycyBidXQgbm90IFxcbiBhbmQgXFx0IHRvIGtlZXAgdGhlIGxpbmUgYnJlYWtzIGFuZFxuLy8gaW5kZW50YXRpb24gaW50YWN0LlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRyb2wtcmVnZXhcblxuXG52YXIgZXNjYXBlU2VxdWVuY2VzUmVnRXhwID0gL1tcXHgwMC1cXHgwOFxceDBiXFx4MGNcXHgwZS1cXHgxZl0vZztcbnZhciBtZXRhID0gW1wiXFxcXHUwMDAwXCIsIFwiXFxcXHUwMDAxXCIsIFwiXFxcXHUwMDAyXCIsIFwiXFxcXHUwMDAzXCIsIFwiXFxcXHUwMDA0XCIsIFwiXFxcXHUwMDA1XCIsIFwiXFxcXHUwMDA2XCIsIFwiXFxcXHUwMDA3XCIsICdcXFxcYicsICcnLCAnJywgXCJcXFxcdTAwMGJcIiwgJ1xcXFxmJywgJycsIFwiXFxcXHUwMDBlXCIsIFwiXFxcXHUwMDBmXCIsIFwiXFxcXHUwMDEwXCIsIFwiXFxcXHUwMDExXCIsIFwiXFxcXHUwMDEyXCIsIFwiXFxcXHUwMDEzXCIsIFwiXFxcXHUwMDE0XCIsIFwiXFxcXHUwMDE1XCIsIFwiXFxcXHUwMDE2XCIsIFwiXFxcXHUwMDE3XCIsIFwiXFxcXHUwMDE4XCIsIFwiXFxcXHUwMDE5XCIsIFwiXFxcXHUwMDFhXCIsIFwiXFxcXHUwMDFiXCIsIFwiXFxcXHUwMDFjXCIsIFwiXFxcXHUwMDFkXCIsIFwiXFxcXHUwMDFlXCIsIFwiXFxcXHUwMDFmXCJdO1xuXG52YXIgZXNjYXBlRm4gPSBmdW5jdGlvbiBlc2NhcGVGbihzdHIpIHtcbiAgcmV0dXJuIG1ldGFbc3RyLmNoYXJDb2RlQXQoMCldO1xufTtcblxudmFyIHdhcm5lZCA9IGZhbHNlOyAvLyBUaGUgYXNzZXJ0IG1vZHVsZSBwcm92aWRlcyBmdW5jdGlvbnMgdGhhdCB0aHJvd1xuLy8gQXNzZXJ0aW9uRXJyb3IncyB3aGVuIHBhcnRpY3VsYXIgY29uZGl0aW9ucyBhcmUgbm90IG1ldC4gVGhlXG4vLyBhc3NlcnQgbW9kdWxlIG11c3QgY29uZm9ybSB0byB0aGUgZm9sbG93aW5nIGludGVyZmFjZS5cblxudmFyIGFzc2VydCA9IG1vZHVsZS5leHBvcnRzID0gb2s7XG52YXIgTk9fRVhDRVBUSU9OX1NFTlRJTkVMID0ge307IC8vIEFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHRocm93IGFuIEFzc2VydGlvbkVycm9yXG4vLyB3aGVuIGEgY29ycmVzcG9uZGluZyBjb25kaXRpb24gaXMgbm90IG1ldCwgd2l0aCBhIG1lc3NhZ2UgdGhhdFxuLy8gbWF5IGJlIHVuZGVmaW5lZCBpZiBub3QgcHJvdmlkZWQuIEFsbCBhc3NlcnRpb24gbWV0aG9kcyBwcm92aWRlXG4vLyBib3RoIHRoZSBhY3R1YWwgYW5kIGV4cGVjdGVkIHZhbHVlcyB0byB0aGUgYXNzZXJ0aW9uIGVycm9yIGZvclxuLy8gZGlzcGxheSBwdXJwb3Nlcy5cblxuZnVuY3Rpb24gaW5uZXJGYWlsKG9iaikge1xuICBpZiAob2JqLm1lc3NhZ2UgaW5zdGFuY2VvZiBFcnJvcikgdGhyb3cgb2JqLm1lc3NhZ2U7XG4gIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihvYmopO1xufVxuXG5mdW5jdGlvbiBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsIG9wZXJhdG9yLCBzdGFja1N0YXJ0Rm4pIHtcbiAgdmFyIGFyZ3NMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW50ZXJuYWxNZXNzYWdlO1xuXG4gIGlmIChhcmdzTGVuID09PSAwKSB7XG4gICAgaW50ZXJuYWxNZXNzYWdlID0gJ0ZhaWxlZCc7XG4gIH0gZWxzZSBpZiAoYXJnc0xlbiA9PT0gMSkge1xuICAgIG1lc3NhZ2UgPSBhY3R1YWw7XG4gICAgYWN0dWFsID0gdW5kZWZpbmVkO1xuICB9IGVsc2Uge1xuICAgIGlmICh3YXJuZWQgPT09IGZhbHNlKSB7XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgICAgdmFyIHdhcm4gPSBwcm9jZXNzLmVtaXRXYXJuaW5nID8gcHJvY2Vzcy5lbWl0V2FybmluZyA6IGNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpO1xuICAgICAgd2FybignYXNzZXJ0LmZhaWwoKSB3aXRoIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQgaXMgZGVwcmVjYXRlZC4gJyArICdQbGVhc2UgdXNlIGFzc2VydC5zdHJpY3RFcXVhbCgpIGluc3RlYWQgb3Igb25seSBwYXNzIGEgbWVzc2FnZS4nLCAnRGVwcmVjYXRpb25XYXJuaW5nJywgJ0RFUDAwOTQnKTtcbiAgICB9XG5cbiAgICBpZiAoYXJnc0xlbiA9PT0gMikgb3BlcmF0b3IgPSAnIT0nO1xuICB9XG5cbiAgaWYgKG1lc3NhZ2UgaW5zdGFuY2VvZiBFcnJvcikgdGhyb3cgbWVzc2FnZTtcbiAgdmFyIGVyckFyZ3MgPSB7XG4gICAgYWN0dWFsOiBhY3R1YWwsXG4gICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLFxuICAgIG9wZXJhdG9yOiBvcGVyYXRvciA9PT0gdW5kZWZpbmVkID8gJ2ZhaWwnIDogb3BlcmF0b3IsXG4gICAgc3RhY2tTdGFydEZuOiBzdGFja1N0YXJ0Rm4gfHwgZmFpbFxuICB9O1xuXG4gIGlmIChtZXNzYWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICBlcnJBcmdzLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICB9XG5cbiAgdmFyIGVyciA9IG5ldyBBc3NlcnRpb25FcnJvcihlcnJBcmdzKTtcblxuICBpZiAoaW50ZXJuYWxNZXNzYWdlKSB7XG4gICAgZXJyLm1lc3NhZ2UgPSBpbnRlcm5hbE1lc3NhZ2U7XG4gICAgZXJyLmdlbmVyYXRlZE1lc3NhZ2UgPSB0cnVlO1xuICB9XG5cbiAgdGhyb3cgZXJyO1xufVxuXG5hc3NlcnQuZmFpbCA9IGZhaWw7IC8vIFRoZSBBc3NlcnRpb25FcnJvciBpcyBkZWZpbmVkIGluIGludGVybmFsL2Vycm9yLlxuXG5hc3NlcnQuQXNzZXJ0aW9uRXJyb3IgPSBBc3NlcnRpb25FcnJvcjtcblxuZnVuY3Rpb24gaW5uZXJPayhmbiwgYXJnTGVuLCB2YWx1ZSwgbWVzc2FnZSkge1xuICBpZiAoIXZhbHVlKSB7XG4gICAgdmFyIGdlbmVyYXRlZE1lc3NhZ2UgPSBmYWxzZTtcblxuICAgIGlmIChhcmdMZW4gPT09IDApIHtcbiAgICAgIGdlbmVyYXRlZE1lc3NhZ2UgPSB0cnVlO1xuICAgICAgbWVzc2FnZSA9ICdObyB2YWx1ZSBhcmd1bWVudCBwYXNzZWQgdG8gYGFzc2VydC5vaygpYCc7XG4gICAgfSBlbHNlIGlmIChtZXNzYWdlIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHRocm93IG1lc3NhZ2U7XG4gICAgfVxuXG4gICAgdmFyIGVyciA9IG5ldyBBc3NlcnRpb25FcnJvcih7XG4gICAgICBhY3R1YWw6IHZhbHVlLFxuICAgICAgZXhwZWN0ZWQ6IHRydWUsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgb3BlcmF0b3I6ICc9PScsXG4gICAgICBzdGFja1N0YXJ0Rm46IGZuXG4gICAgfSk7XG4gICAgZXJyLmdlbmVyYXRlZE1lc3NhZ2UgPSBnZW5lcmF0ZWRNZXNzYWdlO1xuICAgIHRocm93IGVycjtcbiAgfVxufSAvLyBQdXJlIGFzc2VydGlvbiB0ZXN0cyB3aGV0aGVyIGEgdmFsdWUgaXMgdHJ1dGh5LCBhcyBkZXRlcm1pbmVkXG4vLyBieSAhIXZhbHVlLlxuXG5cbmZ1bmN0aW9uIG9rKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgaW5uZXJPay5hcHBseSh2b2lkIDAsIFtvaywgYXJncy5sZW5ndGhdLmNvbmNhdChhcmdzKSk7XG59XG5cbmFzc2VydC5vayA9IG9rOyAvLyBUaGUgZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIHNoYWxsb3csIGNvZXJjaXZlIGVxdWFsaXR5IHdpdGggPT0uXG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtcHJvcGVydGllcyAqL1xuXG5hc3NlcnQuZXF1YWwgPSBmdW5jdGlvbiBlcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFUlJfTUlTU0lOR19BUkdTKCdhY3R1YWwnLCAnZXhwZWN0ZWQnKTtcbiAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXFlcWVxXG5cblxuICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKSB7XG4gICAgaW5uZXJGYWlsKHtcbiAgICAgIGFjdHVhbDogYWN0dWFsLFxuICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIG9wZXJhdG9yOiAnPT0nLFxuICAgICAgc3RhY2tTdGFydEZuOiBlcXVhbFxuICAgIH0pO1xuICB9XG59OyAvLyBUaGUgbm9uLWVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBmb3Igd2hldGhlciB0d28gb2JqZWN0cyBhcmUgbm90XG4vLyBlcXVhbCB3aXRoICE9LlxuXG5cbmFzc2VydC5ub3RFcXVhbCA9IGZ1bmN0aW9uIG5vdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9NSVNTSU5HX0FSR1MoJ2FjdHVhbCcsICdleHBlY3RlZCcpO1xuICB9IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcblxuXG4gIGlmIChhY3R1YWwgPT0gZXhwZWN0ZWQpIHtcbiAgICBpbm5lckZhaWwoe1xuICAgICAgYWN0dWFsOiBhY3R1YWwsXG4gICAgICBleHBlY3RlZDogZXhwZWN0ZWQsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgb3BlcmF0b3I6ICchPScsXG4gICAgICBzdGFja1N0YXJ0Rm46IG5vdEVxdWFsXG4gICAgfSk7XG4gIH1cbn07IC8vIFRoZSBlcXVpdmFsZW5jZSBhc3NlcnRpb24gdGVzdHMgYSBkZWVwIGVxdWFsaXR5IHJlbGF0aW9uLlxuXG5cbmFzc2VydC5kZWVwRXF1YWwgPSBmdW5jdGlvbiBkZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgRVJSX01JU1NJTkdfQVJHUygnYWN0dWFsJywgJ2V4cGVjdGVkJyk7XG4gIH1cblxuICBpZiAoaXNEZWVwRXF1YWwgPT09IHVuZGVmaW5lZCkgbGF6eUxvYWRDb21wYXJpc29uKCk7XG5cbiAgaWYgKCFpc0RlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkKSkge1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogJ2RlZXBFcXVhbCcsXG4gICAgICBzdGFja1N0YXJ0Rm46IGRlZXBFcXVhbFxuICAgIH0pO1xuICB9XG59OyAvLyBUaGUgbm9uLWVxdWl2YWxlbmNlIGFzc2VydGlvbiB0ZXN0cyBmb3IgYW55IGRlZXAgaW5lcXVhbGl0eS5cblxuXG5hc3NlcnQubm90RGVlcEVxdWFsID0gZnVuY3Rpb24gbm90RGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgdGhyb3cgbmV3IEVSUl9NSVNTSU5HX0FSR1MoJ2FjdHVhbCcsICdleHBlY3RlZCcpO1xuICB9XG5cbiAgaWYgKGlzRGVlcEVxdWFsID09PSB1bmRlZmluZWQpIGxhenlMb2FkQ29tcGFyaXNvbigpO1xuXG4gIGlmIChpc0RlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkKSkge1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogJ25vdERlZXBFcXVhbCcsXG4gICAgICBzdGFja1N0YXJ0Rm46IG5vdERlZXBFcXVhbFxuICAgIH0pO1xuICB9XG59O1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG5cbmFzc2VydC5kZWVwU3RyaWN0RXF1YWwgPSBmdW5jdGlvbiBkZWVwU3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgRVJSX01JU1NJTkdfQVJHUygnYWN0dWFsJywgJ2V4cGVjdGVkJyk7XG4gIH1cblxuICBpZiAoaXNEZWVwRXF1YWwgPT09IHVuZGVmaW5lZCkgbGF6eUxvYWRDb21wYXJpc29uKCk7XG5cbiAgaWYgKCFpc0RlZXBTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkKSkge1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogJ2RlZXBTdHJpY3RFcXVhbCcsXG4gICAgICBzdGFja1N0YXJ0Rm46IGRlZXBTdHJpY3RFcXVhbFxuICAgIH0pO1xuICB9XG59O1xuXG5hc3NlcnQubm90RGVlcFN0cmljdEVxdWFsID0gbm90RGVlcFN0cmljdEVxdWFsO1xuXG5mdW5jdGlvbiBub3REZWVwU3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgRVJSX01JU1NJTkdfQVJHUygnYWN0dWFsJywgJ2V4cGVjdGVkJyk7XG4gIH1cblxuICBpZiAoaXNEZWVwRXF1YWwgPT09IHVuZGVmaW5lZCkgbGF6eUxvYWRDb21wYXJpc29uKCk7XG5cbiAgaWYgKGlzRGVlcFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQpKSB7XG4gICAgaW5uZXJGYWlsKHtcbiAgICAgIGFjdHVhbDogYWN0dWFsLFxuICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIG9wZXJhdG9yOiAnbm90RGVlcFN0cmljdEVxdWFsJyxcbiAgICAgIHN0YWNrU3RhcnRGbjogbm90RGVlcFN0cmljdEVxdWFsXG4gICAgfSk7XG4gIH1cbn1cblxuYXNzZXJ0LnN0cmljdEVxdWFsID0gZnVuY3Rpb24gc3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgRVJSX01JU1NJTkdfQVJHUygnYWN0dWFsJywgJ2V4cGVjdGVkJyk7XG4gIH1cblxuICBpZiAoIW9iamVjdElzKGFjdHVhbCwgZXhwZWN0ZWQpKSB7XG4gICAgaW5uZXJGYWlsKHtcbiAgICAgIGFjdHVhbDogYWN0dWFsLFxuICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIG9wZXJhdG9yOiAnc3RyaWN0RXF1YWwnLFxuICAgICAgc3RhY2tTdGFydEZuOiBzdHJpY3RFcXVhbFxuICAgIH0pO1xuICB9XG59O1xuXG5hc3NlcnQubm90U3RyaWN0RXF1YWwgPSBmdW5jdGlvbiBub3RTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuICAgIHRocm93IG5ldyBFUlJfTUlTU0lOR19BUkdTKCdhY3R1YWwnLCAnZXhwZWN0ZWQnKTtcbiAgfVxuXG4gIGlmIChvYmplY3RJcyhhY3R1YWwsIGV4cGVjdGVkKSkge1xuICAgIGlubmVyRmFpbCh7XG4gICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBvcGVyYXRvcjogJ25vdFN0cmljdEVxdWFsJyxcbiAgICAgIHN0YWNrU3RhcnRGbjogbm90U3RyaWN0RXF1YWxcbiAgICB9KTtcbiAgfVxufTtcblxudmFyIENvbXBhcmlzb24gPSBmdW5jdGlvbiBDb21wYXJpc29uKG9iaiwga2V5cywgYWN0dWFsKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIENvbXBhcmlzb24pO1xuXG4gIGtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgaWYgKGtleSBpbiBvYmopIHtcbiAgICAgIGlmIChhY3R1YWwgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgYWN0dWFsW2tleV0gPT09ICdzdHJpbmcnICYmIGlzUmVnRXhwKG9ialtrZXldKSAmJiBvYmpba2V5XS50ZXN0KGFjdHVhbFtrZXldKSkge1xuICAgICAgICBfdGhpc1trZXldID0gYWN0dWFsW2tleV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfdGhpc1trZXldID0gb2JqW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn07XG5cbmZ1bmN0aW9uIGNvbXBhcmVFeGNlcHRpb25LZXkoYWN0dWFsLCBleHBlY3RlZCwga2V5LCBtZXNzYWdlLCBrZXlzLCBmbikge1xuICBpZiAoIShrZXkgaW4gYWN0dWFsKSB8fCAhaXNEZWVwU3RyaWN0RXF1YWwoYWN0dWFsW2tleV0sIGV4cGVjdGVkW2tleV0pKSB7XG4gICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICAvLyBDcmVhdGUgcGxhY2Vob2xkZXIgb2JqZWN0cyB0byBjcmVhdGUgYSBuaWNlIG91dHB1dC5cbiAgICAgIHZhciBhID0gbmV3IENvbXBhcmlzb24oYWN0dWFsLCBrZXlzKTtcbiAgICAgIHZhciBiID0gbmV3IENvbXBhcmlzb24oZXhwZWN0ZWQsIGtleXMsIGFjdHVhbCk7XG4gICAgICB2YXIgZXJyID0gbmV3IEFzc2VydGlvbkVycm9yKHtcbiAgICAgICAgYWN0dWFsOiBhLFxuICAgICAgICBleHBlY3RlZDogYixcbiAgICAgICAgb3BlcmF0b3I6ICdkZWVwU3RyaWN0RXF1YWwnLFxuICAgICAgICBzdGFja1N0YXJ0Rm46IGZuXG4gICAgICB9KTtcbiAgICAgIGVyci5hY3R1YWwgPSBhY3R1YWw7XG4gICAgICBlcnIuZXhwZWN0ZWQgPSBleHBlY3RlZDtcbiAgICAgIGVyci5vcGVyYXRvciA9IGZuLm5hbWU7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgaW5uZXJGYWlsKHtcbiAgICAgIGFjdHVhbDogYWN0dWFsLFxuICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIG9wZXJhdG9yOiBmbi5uYW1lLFxuICAgICAgc3RhY2tTdGFydEZuOiBmblxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGV4cGVjdGVkRXhjZXB0aW9uKGFjdHVhbCwgZXhwZWN0ZWQsIG1zZywgZm4pIHtcbiAgaWYgKHR5cGVvZiBleHBlY3RlZCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmIChpc1JlZ0V4cChleHBlY3RlZCkpIHJldHVybiBleHBlY3RlZC50ZXN0KGFjdHVhbCk7IC8vIGFzc2VydC5kb2VzTm90VGhyb3cgZG9lcyBub3QgYWNjZXB0IG9iamVjdHMuXG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdleHBlY3RlZCcsIFsnRnVuY3Rpb24nLCAnUmVnRXhwJ10sIGV4cGVjdGVkKTtcbiAgICB9IC8vIEhhbmRsZSBwcmltaXRpdmVzIHByb3Blcmx5LlxuXG5cbiAgICBpZiAoX3R5cGVvZihhY3R1YWwpICE9PSAnb2JqZWN0JyB8fCBhY3R1YWwgPT09IG51bGwpIHtcbiAgICAgIHZhciBlcnIgPSBuZXcgQXNzZXJ0aW9uRXJyb3Ioe1xuICAgICAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLFxuICAgICAgICBtZXNzYWdlOiBtc2csXG4gICAgICAgIG9wZXJhdG9yOiAnZGVlcFN0cmljdEVxdWFsJyxcbiAgICAgICAgc3RhY2tTdGFydEZuOiBmblxuICAgICAgfSk7XG4gICAgICBlcnIub3BlcmF0b3IgPSBmbi5uYW1lO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZXhwZWN0ZWQpOyAvLyBTcGVjaWFsIGhhbmRsZSBlcnJvcnMgdG8gbWFrZSBzdXJlIHRoZSBuYW1lIGFuZCB0aGUgbWVzc2FnZSBhcmUgY29tcGFyZWRcbiAgICAvLyBhcyB3ZWxsLlxuXG4gICAgaWYgKGV4cGVjdGVkIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGtleXMucHVzaCgnbmFtZScsICdtZXNzYWdlJyk7XG4gICAgfSBlbHNlIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVSUl9JTlZBTElEX0FSR19WQUxVRSgnZXJyb3InLCBleHBlY3RlZCwgJ21heSBub3QgYmUgYW4gZW1wdHkgb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgaWYgKGlzRGVlcEVxdWFsID09PSB1bmRlZmluZWQpIGxhenlMb2FkQ29tcGFyaXNvbigpO1xuICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBpZiAodHlwZW9mIGFjdHVhbFtrZXldID09PSAnc3RyaW5nJyAmJiBpc1JlZ0V4cChleHBlY3RlZFtrZXldKSAmJiBleHBlY3RlZFtrZXldLnRlc3QoYWN0dWFsW2tleV0pKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29tcGFyZUV4Y2VwdGlvbktleShhY3R1YWwsIGV4cGVjdGVkLCBrZXksIG1zZywga2V5cywgZm4pO1xuICAgIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9IC8vIEd1YXJkIGluc3RhbmNlb2YgYWdhaW5zdCBhcnJvdyBmdW5jdGlvbnMgYXMgdGhleSBkb24ndCBoYXZlIGEgcHJvdG90eXBlLlxuXG5cbiAgaWYgKGV4cGVjdGVkLnByb3RvdHlwZSAhPT0gdW5kZWZpbmVkICYmIGFjdHVhbCBpbnN0YW5jZW9mIGV4cGVjdGVkKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoRXJyb3IuaXNQcm90b3R5cGVPZihleHBlY3RlZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZXhwZWN0ZWQuY2FsbCh7fSwgYWN0dWFsKSA9PT0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gZ2V0QWN0dWFsKGZuKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ2ZuJywgJ0Z1bmN0aW9uJywgZm4pO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBmbigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGU7XG4gIH1cblxuICByZXR1cm4gTk9fRVhDRVBUSU9OX1NFTlRJTkVMO1xufVxuXG5mdW5jdGlvbiBjaGVja0lzUHJvbWlzZShvYmopIHtcbiAgLy8gQWNjZXB0IG5hdGl2ZSBFUzYgcHJvbWlzZXMgYW5kIHByb21pc2VzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIGEgc2ltaWxhclxuICAvLyB3YXkuIERvIG5vdCBhY2NlcHQgdGhlbmFibGVzIHRoYXQgdXNlIGEgZnVuY3Rpb24gYXMgYG9iamAgYW5kIHRoYXQgaGF2ZSBub1xuICAvLyBgY2F0Y2hgIGhhbmRsZXIuXG4gIC8vIFRPRE86IHRoZW5hYmxlcyBhcmUgY2hlY2tlZCB1cCB1bnRpbCB0aGV5IGhhdmUgdGhlIGNvcnJlY3QgbWV0aG9kcyxcbiAgLy8gYnV0IGFjY29yZGluZyB0byBkb2N1bWVudGF0aW9uLCB0aGUgYHRoZW5gIG1ldGhvZCBzaG91bGQgcmVjZWl2ZVxuICAvLyB0aGUgYGZ1bGZpbGxgIGFuZCBgcmVqZWN0YCBhcmd1bWVudHMgYXMgd2VsbCBvciBpdCBtYXkgYmUgbmV2ZXIgcmVzb2x2ZWQuXG4gIHJldHVybiBpc1Byb21pc2Uob2JqKSB8fCBvYmogIT09IG51bGwgJiYgX3R5cGVvZihvYmopID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqLnRoZW4gPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iai5jYXRjaCA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gd2FpdEZvckFjdHVhbChwcm9taXNlRm4pIHtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHRQcm9taXNlO1xuXG4gICAgaWYgKHR5cGVvZiBwcm9taXNlRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIFJldHVybiBhIHJlamVjdGVkIHByb21pc2UgaWYgYHByb21pc2VGbmAgdGhyb3dzIHN5bmNocm9ub3VzbHkuXG4gICAgICByZXN1bHRQcm9taXNlID0gcHJvbWlzZUZuKCk7IC8vIEZhaWwgaW4gY2FzZSBubyBwcm9taXNlIGlzIHJldHVybmVkLlxuXG4gICAgICBpZiAoIWNoZWNrSXNQcm9taXNlKHJlc3VsdFByb21pc2UpKSB7XG4gICAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9SRVRVUk5fVkFMVUUoJ2luc3RhbmNlIG9mIFByb21pc2UnLCAncHJvbWlzZUZuJywgcmVzdWx0UHJvbWlzZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjaGVja0lzUHJvbWlzZShwcm9taXNlRm4pKSB7XG4gICAgICByZXN1bHRQcm9taXNlID0gcHJvbWlzZUZuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ3Byb21pc2VGbicsIFsnRnVuY3Rpb24nLCAnUHJvbWlzZSddLCBwcm9taXNlRm4pO1xuICAgIH1cblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiByZXN1bHRQcm9taXNlO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIE5PX0VYQ0VQVElPTl9TRU5USU5FTDtcbiAgICB9KS5jYXRjaChmdW5jdGlvbiAoZSkge1xuICAgICAgcmV0dXJuIGU7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBleHBlY3RzRXJyb3Ioc3RhY2tTdGFydEZuLCBhY3R1YWwsIGVycm9yLCBtZXNzYWdlKSB7XG4gIGlmICh0eXBlb2YgZXJyb3IgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDQpIHtcbiAgICAgIHRocm93IG5ldyBFUlJfSU5WQUxJRF9BUkdfVFlQRSgnZXJyb3InLCBbJ09iamVjdCcsICdFcnJvcicsICdGdW5jdGlvbicsICdSZWdFeHAnXSwgZXJyb3IpO1xuICAgIH1cblxuICAgIGlmIChfdHlwZW9mKGFjdHVhbCkgPT09ICdvYmplY3QnICYmIGFjdHVhbCAhPT0gbnVsbCkge1xuICAgICAgaWYgKGFjdHVhbC5tZXNzYWdlID09PSBlcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRVJSX0FNQklHVU9VU19BUkdVTUVOVCgnZXJyb3IvbWVzc2FnZScsIFwiVGhlIGVycm9yIG1lc3NhZ2UgXFxcIlwiLmNvbmNhdChhY3R1YWwubWVzc2FnZSwgXCJcXFwiIGlzIGlkZW50aWNhbCB0byB0aGUgbWVzc2FnZS5cIikpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYWN0dWFsID09PSBlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVSUl9BTUJJR1VPVVNfQVJHVU1FTlQoJ2Vycm9yL21lc3NhZ2UnLCBcIlRoZSBlcnJvciBcXFwiXCIuY29uY2F0KGFjdHVhbCwgXCJcXFwiIGlzIGlkZW50aWNhbCB0byB0aGUgbWVzc2FnZS5cIikpO1xuICAgIH1cblxuICAgIG1lc3NhZ2UgPSBlcnJvcjtcbiAgICBlcnJvciA9IHVuZGVmaW5lZDtcbiAgfSBlbHNlIGlmIChlcnJvciAhPSBudWxsICYmIF90eXBlb2YoZXJyb3IpICE9PSAnb2JqZWN0JyAmJiB0eXBlb2YgZXJyb3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ2Vycm9yJywgWydPYmplY3QnLCAnRXJyb3InLCAnRnVuY3Rpb24nLCAnUmVnRXhwJ10sIGVycm9yKTtcbiAgfVxuXG4gIGlmIChhY3R1YWwgPT09IE5PX0VYQ0VQVElPTl9TRU5USU5FTCkge1xuICAgIHZhciBkZXRhaWxzID0gJyc7XG5cbiAgICBpZiAoZXJyb3IgJiYgZXJyb3IubmFtZSkge1xuICAgICAgZGV0YWlscyArPSBcIiAoXCIuY29uY2F0KGVycm9yLm5hbWUsIFwiKVwiKTtcbiAgICB9XG5cbiAgICBkZXRhaWxzICs9IG1lc3NhZ2UgPyBcIjogXCIuY29uY2F0KG1lc3NhZ2UpIDogJy4nO1xuICAgIHZhciBmblR5cGUgPSBzdGFja1N0YXJ0Rm4ubmFtZSA9PT0gJ3JlamVjdHMnID8gJ3JlamVjdGlvbicgOiAnZXhjZXB0aW9uJztcbiAgICBpbm5lckZhaWwoe1xuICAgICAgYWN0dWFsOiB1bmRlZmluZWQsXG4gICAgICBleHBlY3RlZDogZXJyb3IsXG4gICAgICBvcGVyYXRvcjogc3RhY2tTdGFydEZuLm5hbWUsXG4gICAgICBtZXNzYWdlOiBcIk1pc3NpbmcgZXhwZWN0ZWQgXCIuY29uY2F0KGZuVHlwZSkuY29uY2F0KGRldGFpbHMpLFxuICAgICAgc3RhY2tTdGFydEZuOiBzdGFja1N0YXJ0Rm5cbiAgICB9KTtcbiAgfVxuXG4gIGlmIChlcnJvciAmJiAhZXhwZWN0ZWRFeGNlcHRpb24oYWN0dWFsLCBlcnJvciwgbWVzc2FnZSwgc3RhY2tTdGFydEZuKSkge1xuICAgIHRocm93IGFjdHVhbDtcbiAgfVxufVxuXG5mdW5jdGlvbiBleHBlY3RzTm9FcnJvcihzdGFja1N0YXJ0Rm4sIGFjdHVhbCwgZXJyb3IsIG1lc3NhZ2UpIHtcbiAgaWYgKGFjdHVhbCA9PT0gTk9fRVhDRVBUSU9OX1NFTlRJTkVMKSByZXR1cm47XG5cbiAgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ3N0cmluZycpIHtcbiAgICBtZXNzYWdlID0gZXJyb3I7XG4gICAgZXJyb3IgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoIWVycm9yIHx8IGV4cGVjdGVkRXhjZXB0aW9uKGFjdHVhbCwgZXJyb3IpKSB7XG4gICAgdmFyIGRldGFpbHMgPSBtZXNzYWdlID8gXCI6IFwiLmNvbmNhdChtZXNzYWdlKSA6ICcuJztcbiAgICB2YXIgZm5UeXBlID0gc3RhY2tTdGFydEZuLm5hbWUgPT09ICdkb2VzTm90UmVqZWN0JyA/ICdyZWplY3Rpb24nIDogJ2V4Y2VwdGlvbic7XG4gICAgaW5uZXJGYWlsKHtcbiAgICAgIGFjdHVhbDogYWN0dWFsLFxuICAgICAgZXhwZWN0ZWQ6IGVycm9yLFxuICAgICAgb3BlcmF0b3I6IHN0YWNrU3RhcnRGbi5uYW1lLFxuICAgICAgbWVzc2FnZTogXCJHb3QgdW53YW50ZWQgXCIuY29uY2F0KGZuVHlwZSkuY29uY2F0KGRldGFpbHMsIFwiXFxuXCIpICsgXCJBY3R1YWwgbWVzc2FnZTogXFxcIlwiLmNvbmNhdChhY3R1YWwgJiYgYWN0dWFsLm1lc3NhZ2UsIFwiXFxcIlwiKSxcbiAgICAgIHN0YWNrU3RhcnRGbjogc3RhY2tTdGFydEZuXG4gICAgfSk7XG4gIH1cblxuICB0aHJvdyBhY3R1YWw7XG59XG5cbmFzc2VydC50aHJvd3MgPSBmdW5jdGlvbiB0aHJvd3MocHJvbWlzZUZuKSB7XG4gIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiA+IDEgPyBfbGVuMiAtIDEgOiAwKSwgX2tleTIgPSAxOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgYXJnc1tfa2V5MiAtIDFdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgfVxuXG4gIGV4cGVjdHNFcnJvci5hcHBseSh2b2lkIDAsIFt0aHJvd3MsIGdldEFjdHVhbChwcm9taXNlRm4pXS5jb25jYXQoYXJncykpO1xufTtcblxuYXNzZXJ0LnJlamVjdHMgPSBmdW5jdGlvbiByZWplY3RzKHByb21pc2VGbikge1xuICBmb3IgKHZhciBfbGVuMyA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjMgPiAxID8gX2xlbjMgLSAxIDogMCksIF9rZXkzID0gMTsgX2tleTMgPCBfbGVuMzsgX2tleTMrKykge1xuICAgIGFyZ3NbX2tleTMgLSAxXSA9IGFyZ3VtZW50c1tfa2V5M107XG4gIH1cblxuICByZXR1cm4gd2FpdEZvckFjdHVhbChwcm9taXNlRm4pLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgIHJldHVybiBleHBlY3RzRXJyb3IuYXBwbHkodm9pZCAwLCBbcmVqZWN0cywgcmVzdWx0XS5jb25jYXQoYXJncykpO1xuICB9KTtcbn07XG5cbmFzc2VydC5kb2VzTm90VGhyb3cgPSBmdW5jdGlvbiBkb2VzTm90VGhyb3coZm4pIHtcbiAgZm9yICh2YXIgX2xlbjQgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW40ID4gMSA/IF9sZW40IC0gMSA6IDApLCBfa2V5NCA9IDE7IF9rZXk0IDwgX2xlbjQ7IF9rZXk0KyspIHtcbiAgICBhcmdzW19rZXk0IC0gMV0gPSBhcmd1bWVudHNbX2tleTRdO1xuICB9XG5cbiAgZXhwZWN0c05vRXJyb3IuYXBwbHkodm9pZCAwLCBbZG9lc05vdFRocm93LCBnZXRBY3R1YWwoZm4pXS5jb25jYXQoYXJncykpO1xufTtcblxuYXNzZXJ0LmRvZXNOb3RSZWplY3QgPSBmdW5jdGlvbiBkb2VzTm90UmVqZWN0KGZuKSB7XG4gIGZvciAodmFyIF9sZW41ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuNSA+IDEgPyBfbGVuNSAtIDEgOiAwKSwgX2tleTUgPSAxOyBfa2V5NSA8IF9sZW41OyBfa2V5NSsrKSB7XG4gICAgYXJnc1tfa2V5NSAtIDFdID0gYXJndW1lbnRzW19rZXk1XTtcbiAgfVxuXG4gIHJldHVybiB3YWl0Rm9yQWN0dWFsKGZuKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICByZXR1cm4gZXhwZWN0c05vRXJyb3IuYXBwbHkodm9pZCAwLCBbZG9lc05vdFJlamVjdCwgcmVzdWx0XS5jb25jYXQoYXJncykpO1xuICB9KTtcbn07XG5cbmFzc2VydC5pZkVycm9yID0gZnVuY3Rpb24gaWZFcnJvcihlcnIpIHtcbiAgaWYgKGVyciAhPT0gbnVsbCAmJiBlcnIgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBtZXNzYWdlID0gJ2lmRXJyb3IgZ290IHVud2FudGVkIGV4Y2VwdGlvbjogJztcblxuICAgIGlmIChfdHlwZW9mKGVycikgPT09ICdvYmplY3QnICYmIHR5cGVvZiBlcnIubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGlmIChlcnIubWVzc2FnZS5sZW5ndGggPT09IDAgJiYgZXJyLmNvbnN0cnVjdG9yKSB7XG4gICAgICAgIG1lc3NhZ2UgKz0gZXJyLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlICs9IGVyci5tZXNzYWdlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBtZXNzYWdlICs9IGluc3BlY3QoZXJyKTtcbiAgICB9XG5cbiAgICB2YXIgbmV3RXJyID0gbmV3IEFzc2VydGlvbkVycm9yKHtcbiAgICAgIGFjdHVhbDogZXJyLFxuICAgICAgZXhwZWN0ZWQ6IG51bGwsXG4gICAgICBvcGVyYXRvcjogJ2lmRXJyb3InLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIHN0YWNrU3RhcnRGbjogaWZFcnJvclxuICAgIH0pOyAvLyBNYWtlIHN1cmUgd2UgYWN0dWFsbHkgaGF2ZSBhIHN0YWNrIHRyYWNlIVxuXG4gICAgdmFyIG9yaWdTdGFjayA9IGVyci5zdGFjaztcblxuICAgIGlmICh0eXBlb2Ygb3JpZ1N0YWNrID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gVGhpcyB3aWxsIHJlbW92ZSBhbnkgZHVwbGljYXRlZCBmcmFtZXMgZnJvbSB0aGUgZXJyb3IgZnJhbWVzIHRha2VuXG4gICAgICAvLyBmcm9tIHdpdGhpbiBgaWZFcnJvcmAgYW5kIGFkZCB0aGUgb3JpZ2luYWwgZXJyb3IgZnJhbWVzIHRvIHRoZSBuZXdseVxuICAgICAgLy8gY3JlYXRlZCBvbmVzLlxuICAgICAgdmFyIHRtcDIgPSBvcmlnU3RhY2suc3BsaXQoJ1xcbicpO1xuICAgICAgdG1wMi5zaGlmdCgpOyAvLyBGaWx0ZXIgYWxsIGZyYW1lcyBleGlzdGluZyBpbiBlcnIuc3RhY2suXG5cbiAgICAgIHZhciB0bXAxID0gbmV3RXJyLnN0YWNrLnNwbGl0KCdcXG4nKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0bXAyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdGhlIGZyYW1lLlxuICAgICAgICB2YXIgcG9zID0gdG1wMS5pbmRleE9mKHRtcDJbaV0pO1xuXG4gICAgICAgIGlmIChwb3MgIT09IC0xKSB7XG4gICAgICAgICAgLy8gT25seSBrZWVwIG5ldyBmcmFtZXMuXG4gICAgICAgICAgdG1wMSA9IHRtcDEuc2xpY2UoMCwgcG9zKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBuZXdFcnIuc3RhY2sgPSBcIlwiLmNvbmNhdCh0bXAxLmpvaW4oJ1xcbicpLCBcIlxcblwiKS5jb25jYXQodG1wMi5qb2luKCdcXG4nKSk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3RXJyO1xuICB9XG59OyAvLyBFeHBvc2UgYSBzdHJpY3Qgb25seSB2YXJpYW50IG9mIGFzc2VydFxuXG5cbmZ1bmN0aW9uIHN0cmljdCgpIHtcbiAgZm9yICh2YXIgX2xlbjYgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW42KSwgX2tleTYgPSAwOyBfa2V5NiA8IF9sZW42OyBfa2V5NisrKSB7XG4gICAgYXJnc1tfa2V5Nl0gPSBhcmd1bWVudHNbX2tleTZdO1xuICB9XG5cbiAgaW5uZXJPay5hcHBseSh2b2lkIDAsIFtzdHJpY3QsIGFyZ3MubGVuZ3RoXS5jb25jYXQoYXJncykpO1xufVxuXG5hc3NlcnQuc3RyaWN0ID0gb2JqZWN0QXNzaWduKHN0cmljdCwgYXNzZXJ0LCB7XG4gIGVxdWFsOiBhc3NlcnQuc3RyaWN0RXF1YWwsXG4gIGRlZXBFcXVhbDogYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCxcbiAgbm90RXF1YWw6IGFzc2VydC5ub3RTdHJpY3RFcXVhbCxcbiAgbm90RGVlcEVxdWFsOiBhc3NlcnQubm90RGVlcFN0cmljdEVxdWFsXG59KTtcbmFzc2VydC5zdHJpY3Quc3RyaWN0ID0gYXNzZXJ0LnN0cmljdDsiLCIvLyBDdXJyZW50bHkgaW4gc3luYyB3aXRoIE5vZGUuanMgbGliL2ludGVybmFsL2Fzc2VydC9hc3NlcnRpb25fZXJyb3IuanNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9jb21taXQvMDgxNzg0MGY3NzUwMzIxNjlkZGQ3MGM4NWFjMDU5ZjE4ZmZjYzgxY1xuJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgdmFyIG93bktleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyBpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09ICdmdW5jdGlvbicpIHsgb3duS2V5cyA9IG93bktleXMuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKS5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIHN5bSkuZW51bWVyYWJsZTsgfSkpOyB9IG93bktleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IF9kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgc291cmNlW2tleV0pOyB9KTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBpbiBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsgfSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoY2FsbCAmJiAoX3R5cGVvZihjYWxsKSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSkgeyByZXR1cm4gY2FsbDsgfSByZXR1cm4gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKTsgfVxuXG5mdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHsgaWYgKHNlbGYgPT09IHZvaWQgMCkgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIHNlbGY7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcihDbGFzcykgeyB2YXIgX2NhY2hlID0gdHlwZW9mIE1hcCA9PT0gXCJmdW5jdGlvblwiID8gbmV3IE1hcCgpIDogdW5kZWZpbmVkOyBfd3JhcE5hdGl2ZVN1cGVyID0gZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcihDbGFzcykgeyBpZiAoQ2xhc3MgPT09IG51bGwgfHwgIV9pc05hdGl2ZUZ1bmN0aW9uKENsYXNzKSkgcmV0dXJuIENsYXNzOyBpZiAodHlwZW9mIENsYXNzICE9PSBcImZ1bmN0aW9uXCIpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IGlmICh0eXBlb2YgX2NhY2hlICE9PSBcInVuZGVmaW5lZFwiKSB7IGlmIChfY2FjaGUuaGFzKENsYXNzKSkgcmV0dXJuIF9jYWNoZS5nZXQoQ2xhc3MpOyBfY2FjaGUuc2V0KENsYXNzLCBXcmFwcGVyKTsgfSBmdW5jdGlvbiBXcmFwcGVyKCkgeyByZXR1cm4gX2NvbnN0cnVjdChDbGFzcywgYXJndW1lbnRzLCBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3IpOyB9IFdyYXBwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IFdyYXBwZXIsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IHJldHVybiBfc2V0UHJvdG90eXBlT2YoV3JhcHBlciwgQ2xhc3MpOyB9OyByZXR1cm4gX3dyYXBOYXRpdmVTdXBlcihDbGFzcyk7IH1cblxuZnVuY3Rpb24gaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkgeyBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwidW5kZWZpbmVkXCIgfHwgIVJlZmxlY3QuY29uc3RydWN0KSByZXR1cm4gZmFsc2U7IGlmIChSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKSByZXR1cm4gZmFsc2U7IGlmICh0eXBlb2YgUHJveHkgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHRydWU7IHRyeSB7IERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoRGF0ZSwgW10sIGZ1bmN0aW9uICgpIHt9KSk7IHJldHVybiB0cnVlOyB9IGNhdGNoIChlKSB7IHJldHVybiBmYWxzZTsgfSB9XG5cbmZ1bmN0aW9uIF9jb25zdHJ1Y3QoUGFyZW50LCBhcmdzLCBDbGFzcykgeyBpZiAoaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkpIHsgX2NvbnN0cnVjdCA9IFJlZmxlY3QuY29uc3RydWN0OyB9IGVsc2UgeyBfY29uc3RydWN0ID0gZnVuY3Rpb24gX2NvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7IHZhciBhID0gW251bGxdOyBhLnB1c2guYXBwbHkoYSwgYXJncyk7IHZhciBDb25zdHJ1Y3RvciA9IEZ1bmN0aW9uLmJpbmQuYXBwbHkoUGFyZW50LCBhKTsgdmFyIGluc3RhbmNlID0gbmV3IENvbnN0cnVjdG9yKCk7IGlmIChDbGFzcykgX3NldFByb3RvdHlwZU9mKGluc3RhbmNlLCBDbGFzcy5wcm90b3R5cGUpOyByZXR1cm4gaW5zdGFuY2U7IH07IH0gcmV0dXJuIF9jb25zdHJ1Y3QuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfaXNOYXRpdmVGdW5jdGlvbihmbikgeyByZXR1cm4gRnVuY3Rpb24udG9TdHJpbmcuY2FsbChmbikuaW5kZXhPZihcIltuYXRpdmUgY29kZV1cIikgIT09IC0xOyB9XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkgeyBvLl9fcHJvdG9fXyA9IHA7IHJldHVybiBvOyB9OyByZXR1cm4gX3NldFByb3RvdHlwZU9mKG8sIHApOyB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgaWYgKHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiKSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfTsgfSBlbHNlIHsgX3R5cGVvZiA9IGZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IHJldHVybiBvYmogJiYgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG9iaiAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9OyB9IHJldHVybiBfdHlwZW9mKG9iaik7IH1cblxudmFyIF9yZXF1aXJlID0gcmVxdWlyZSgndXRpbC8nKSxcbiAgICBpbnNwZWN0ID0gX3JlcXVpcmUuaW5zcGVjdDtcblxudmFyIF9yZXF1aXJlMiA9IHJlcXVpcmUoJy4uL2Vycm9ycycpLFxuICAgIEVSUl9JTlZBTElEX0FSR19UWVBFID0gX3JlcXVpcmUyLmNvZGVzLkVSUl9JTlZBTElEX0FSR19UWVBFOyAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvZW5kc1dpdGhcblxuXG5mdW5jdGlvbiBlbmRzV2l0aChzdHIsIHNlYXJjaCwgdGhpc19sZW4pIHtcbiAgaWYgKHRoaXNfbGVuID09PSB1bmRlZmluZWQgfHwgdGhpc19sZW4gPiBzdHIubGVuZ3RoKSB7XG4gICAgdGhpc19sZW4gPSBzdHIubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIHN0ci5zdWJzdHJpbmcodGhpc19sZW4gLSBzZWFyY2gubGVuZ3RoLCB0aGlzX2xlbikgPT09IHNlYXJjaDtcbn0gLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nL3JlcGVhdFxuXG5cbmZ1bmN0aW9uIHJlcGVhdChzdHIsIGNvdW50KSB7XG4gIGNvdW50ID0gTWF0aC5mbG9vcihjb3VudCk7XG4gIGlmIChzdHIubGVuZ3RoID09IDAgfHwgY291bnQgPT0gMCkgcmV0dXJuICcnO1xuICB2YXIgbWF4Q291bnQgPSBzdHIubGVuZ3RoICogY291bnQ7XG4gIGNvdW50ID0gTWF0aC5mbG9vcihNYXRoLmxvZyhjb3VudCkgLyBNYXRoLmxvZygyKSk7XG5cbiAgd2hpbGUgKGNvdW50KSB7XG4gICAgc3RyICs9IHN0cjtcbiAgICBjb3VudC0tO1xuICB9XG5cbiAgc3RyICs9IHN0ci5zdWJzdHJpbmcoMCwgbWF4Q291bnQgLSBzdHIubGVuZ3RoKTtcbiAgcmV0dXJuIHN0cjtcbn1cblxudmFyIGJsdWUgPSAnJztcbnZhciBncmVlbiA9ICcnO1xudmFyIHJlZCA9ICcnO1xudmFyIHdoaXRlID0gJyc7XG52YXIga1JlYWRhYmxlT3BlcmF0b3IgPSB7XG4gIGRlZXBTdHJpY3RFcXVhbDogJ0V4cGVjdGVkIHZhbHVlcyB0byBiZSBzdHJpY3RseSBkZWVwLWVxdWFsOicsXG4gIHN0cmljdEVxdWFsOiAnRXhwZWN0ZWQgdmFsdWVzIHRvIGJlIHN0cmljdGx5IGVxdWFsOicsXG4gIHN0cmljdEVxdWFsT2JqZWN0OiAnRXhwZWN0ZWQgXCJhY3R1YWxcIiB0byBiZSByZWZlcmVuY2UtZXF1YWwgdG8gXCJleHBlY3RlZFwiOicsXG4gIGRlZXBFcXVhbDogJ0V4cGVjdGVkIHZhbHVlcyB0byBiZSBsb29zZWx5IGRlZXAtZXF1YWw6JyxcbiAgZXF1YWw6ICdFeHBlY3RlZCB2YWx1ZXMgdG8gYmUgbG9vc2VseSBlcXVhbDonLFxuICBub3REZWVwU3RyaWN0RXF1YWw6ICdFeHBlY3RlZCBcImFjdHVhbFwiIG5vdCB0byBiZSBzdHJpY3RseSBkZWVwLWVxdWFsIHRvOicsXG4gIG5vdFN0cmljdEVxdWFsOiAnRXhwZWN0ZWQgXCJhY3R1YWxcIiB0byBiZSBzdHJpY3RseSB1bmVxdWFsIHRvOicsXG4gIG5vdFN0cmljdEVxdWFsT2JqZWN0OiAnRXhwZWN0ZWQgXCJhY3R1YWxcIiBub3QgdG8gYmUgcmVmZXJlbmNlLWVxdWFsIHRvIFwiZXhwZWN0ZWRcIjonLFxuICBub3REZWVwRXF1YWw6ICdFeHBlY3RlZCBcImFjdHVhbFwiIG5vdCB0byBiZSBsb29zZWx5IGRlZXAtZXF1YWwgdG86JyxcbiAgbm90RXF1YWw6ICdFeHBlY3RlZCBcImFjdHVhbFwiIHRvIGJlIGxvb3NlbHkgdW5lcXVhbCB0bzonLFxuICBub3RJZGVudGljYWw6ICdWYWx1ZXMgaWRlbnRpY2FsIGJ1dCBub3QgcmVmZXJlbmNlLWVxdWFsOidcbn07IC8vIENvbXBhcmluZyBzaG9ydCBwcmltaXRpdmVzIHNob3VsZCBqdXN0IHNob3cgPT09IC8gIT09IGluc3RlYWQgb2YgdXNpbmcgdGhlXG4vLyBkaWZmLlxuXG52YXIga01heFNob3J0TGVuZ3RoID0gMTA7XG5cbmZ1bmN0aW9uIGNvcHlFcnJvcihzb3VyY2UpIHtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpO1xuICB2YXIgdGFyZ2V0ID0gT2JqZWN0LmNyZWF0ZShPYmplY3QuZ2V0UHJvdG90eXBlT2Yoc291cmNlKSk7XG4gIGtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgfSk7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsICdtZXNzYWdlJywge1xuICAgIHZhbHVlOiBzb3VyY2UubWVzc2FnZVxuICB9KTtcbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gaW5zcGVjdFZhbHVlKHZhbCkge1xuICAvLyBUaGUgdXRpbC5pbnNwZWN0IGRlZmF1bHQgdmFsdWVzIGNvdWxkIGJlIGNoYW5nZWQuIFRoaXMgbWFrZXMgc3VyZSB0aGVcbiAgLy8gZXJyb3IgbWVzc2FnZXMgY29udGFpbiB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIG5ldmVydGhlbGVzcy5cbiAgcmV0dXJuIGluc3BlY3QodmFsLCB7XG4gICAgY29tcGFjdDogZmFsc2UsXG4gICAgY3VzdG9tSW5zcGVjdDogZmFsc2UsXG4gICAgZGVwdGg6IDEwMDAsXG4gICAgbWF4QXJyYXlMZW5ndGg6IEluZmluaXR5LFxuICAgIC8vIEFzc2VydCBjb21wYXJlcyBvbmx5IGVudW1lcmFibGUgcHJvcGVydGllcyAod2l0aCBhIGZldyBleGNlcHRpb25zKS5cbiAgICBzaG93SGlkZGVuOiBmYWxzZSxcbiAgICAvLyBIYXZpbmcgYSBsb25nIGxpbmUgYXMgZXJyb3IgaXMgYmV0dGVyIHRoYW4gd3JhcHBpbmcgdGhlIGxpbmUgZm9yXG4gICAgLy8gY29tcGFyaXNvbiBmb3Igbm93LlxuICAgIC8vIFRPRE8oQnJpZGdlQVIpOiBgYnJlYWtMZW5ndGhgIHNob3VsZCBiZSBsaW1pdGVkIGFzIHNvb24gYXMgc29vbiBhcyB3ZVxuICAgIC8vIGhhdmUgbWV0YSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW5zcGVjdGVkIHByb3BlcnRpZXMgKGkuZS4sIGtub3cgd2hlcmVcbiAgICAvLyBpbiB3aGF0IGxpbmUgdGhlIHByb3BlcnR5IHN0YXJ0cyBhbmQgZW5kcykuXG4gICAgYnJlYWtMZW5ndGg6IEluZmluaXR5LFxuICAgIC8vIEFzc2VydCBkb2VzIG5vdCBkZXRlY3QgcHJveGllcyBjdXJyZW50bHkuXG4gICAgc2hvd1Byb3h5OiBmYWxzZSxcbiAgICBzb3J0ZWQ6IHRydWUsXG4gICAgLy8gSW5zcGVjdCBnZXR0ZXJzIGFzIHdlIGFsc28gY2hlY2sgdGhlbSB3aGVuIGNvbXBhcmluZyBlbnRyaWVzLlxuICAgIGdldHRlcnM6IHRydWVcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVyckRpZmYoYWN0dWFsLCBleHBlY3RlZCwgb3BlcmF0b3IpIHtcbiAgdmFyIG90aGVyID0gJyc7XG4gIHZhciByZXMgPSAnJztcbiAgdmFyIGxhc3RQb3MgPSAwO1xuICB2YXIgZW5kID0gJyc7XG4gIHZhciBza2lwcGVkID0gZmFsc2U7XG4gIHZhciBhY3R1YWxJbnNwZWN0ZWQgPSBpbnNwZWN0VmFsdWUoYWN0dWFsKTtcbiAgdmFyIGFjdHVhbExpbmVzID0gYWN0dWFsSW5zcGVjdGVkLnNwbGl0KCdcXG4nKTtcbiAgdmFyIGV4cGVjdGVkTGluZXMgPSBpbnNwZWN0VmFsdWUoZXhwZWN0ZWQpLnNwbGl0KCdcXG4nKTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgaW5kaWNhdG9yID0gJyc7IC8vIEluIGNhc2UgYm90aCB2YWx1ZXMgYXJlIG9iamVjdHMgZXhwbGljaXRseSBtYXJrIHRoZW0gYXMgbm90IHJlZmVyZW5jZSBlcXVhbFxuICAvLyBmb3IgdGhlIGBzdHJpY3RFcXVhbGAgb3BlcmF0b3IuXG5cbiAgaWYgKG9wZXJhdG9yID09PSAnc3RyaWN0RXF1YWwnICYmIF90eXBlb2YoYWN0dWFsKSA9PT0gJ29iamVjdCcgJiYgX3R5cGVvZihleHBlY3RlZCkgPT09ICdvYmplY3QnICYmIGFjdHVhbCAhPT0gbnVsbCAmJiBleHBlY3RlZCAhPT0gbnVsbCkge1xuICAgIG9wZXJhdG9yID0gJ3N0cmljdEVxdWFsT2JqZWN0JztcbiAgfSAvLyBJZiBcImFjdHVhbFwiIGFuZCBcImV4cGVjdGVkXCIgZml0IG9uIGEgc2luZ2xlIGxpbmUgYW5kIHRoZXkgYXJlIG5vdCBzdHJpY3RseVxuICAvLyBlcXVhbCwgY2hlY2sgZnVydGhlciBzcGVjaWFsIGhhbmRsaW5nLlxuXG5cbiAgaWYgKGFjdHVhbExpbmVzLmxlbmd0aCA9PT0gMSAmJiBleHBlY3RlZExpbmVzLmxlbmd0aCA9PT0gMSAmJiBhY3R1YWxMaW5lc1swXSAhPT0gZXhwZWN0ZWRMaW5lc1swXSkge1xuICAgIHZhciBpbnB1dExlbmd0aCA9IGFjdHVhbExpbmVzWzBdLmxlbmd0aCArIGV4cGVjdGVkTGluZXNbMF0ubGVuZ3RoOyAvLyBJZiB0aGUgY2hhcmFjdGVyIGxlbmd0aCBvZiBcImFjdHVhbFwiIGFuZCBcImV4cGVjdGVkXCIgdG9nZXRoZXIgaXMgbGVzcyB0aGFuXG4gICAgLy8ga01heFNob3J0TGVuZ3RoIGFuZCBpZiBuZWl0aGVyIGlzIGFuIG9iamVjdCBhbmQgYXQgbGVhc3Qgb25lIG9mIHRoZW0gaXNcbiAgICAvLyBub3QgYHplcm9gLCB1c2UgdGhlIHN0cmljdCBlcXVhbCBjb21wYXJpc29uIHRvIHZpc3VhbGl6ZSB0aGUgb3V0cHV0LlxuXG4gICAgaWYgKGlucHV0TGVuZ3RoIDw9IGtNYXhTaG9ydExlbmd0aCkge1xuICAgICAgaWYgKChfdHlwZW9mKGFjdHVhbCkgIT09ICdvYmplY3QnIHx8IGFjdHVhbCA9PT0gbnVsbCkgJiYgKF90eXBlb2YoZXhwZWN0ZWQpICE9PSAnb2JqZWN0JyB8fCBleHBlY3RlZCA9PT0gbnVsbCkgJiYgKGFjdHVhbCAhPT0gMCB8fCBleHBlY3RlZCAhPT0gMCkpIHtcbiAgICAgICAgLy8gLTAgPT09ICswXG4gICAgICAgIHJldHVybiBcIlwiLmNvbmNhdChrUmVhZGFibGVPcGVyYXRvcltvcGVyYXRvcl0sIFwiXFxuXFxuXCIpICsgXCJcIi5jb25jYXQoYWN0dWFsTGluZXNbMF0sIFwiICE9PSBcIikuY29uY2F0KGV4cGVjdGVkTGluZXNbMF0sIFwiXFxuXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAob3BlcmF0b3IgIT09ICdzdHJpY3RFcXVhbE9iamVjdCcpIHtcbiAgICAgIC8vIElmIHRoZSBzdGRlcnIgaXMgYSB0dHkgYW5kIHRoZSBpbnB1dCBsZW5ndGggaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudFxuICAgICAgLy8gY29sdW1ucyBwZXIgbGluZSwgYWRkIGEgbWlzbWF0Y2ggaW5kaWNhdG9yIGJlbG93IHRoZSBvdXRwdXQuIElmIGl0IGlzXG4gICAgICAvLyBub3QgYSB0dHksIHVzZSBhIGRlZmF1bHQgdmFsdWUgb2YgODAgY2hhcmFjdGVycy5cbiAgICAgIHZhciBtYXhMZW5ndGggPSBwcm9jZXNzLnN0ZGVyciAmJiBwcm9jZXNzLnN0ZGVyci5pc1RUWSA/IHByb2Nlc3Muc3RkZXJyLmNvbHVtbnMgOiA4MDtcblxuICAgICAgaWYgKGlucHV0TGVuZ3RoIDwgbWF4TGVuZ3RoKSB7XG4gICAgICAgIHdoaWxlIChhY3R1YWxMaW5lc1swXVtpXSA9PT0gZXhwZWN0ZWRMaW5lc1swXVtpXSkge1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfSAvLyBJZ25vcmUgdGhlIGZpcnN0IGNoYXJhY3RlcnMuXG5cblxuICAgICAgICBpZiAoaSA+IDIpIHtcbiAgICAgICAgICAvLyBBZGQgcG9zaXRpb24gaW5kaWNhdG9yIGZvciB0aGUgZmlyc3QgbWlzbWF0Y2ggaW4gY2FzZSBpdCBpcyBhXG4gICAgICAgICAgLy8gc2luZ2xlIGxpbmUgYW5kIHRoZSBpbnB1dCBsZW5ndGggaXMgbGVzcyB0aGFuIHRoZSBjb2x1bW4gbGVuZ3RoLlxuICAgICAgICAgIGluZGljYXRvciA9IFwiXFxuICBcIi5jb25jYXQocmVwZWF0KCcgJywgaSksIFwiXlwiKTtcbiAgICAgICAgICBpID0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSAvLyBSZW1vdmUgYWxsIGVuZGluZyBsaW5lcyB0aGF0IG1hdGNoICh0aGlzIG9wdGltaXplcyB0aGUgb3V0cHV0IGZvclxuICAvLyByZWFkYWJpbGl0eSBieSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIHRvdGFsIGNoYW5nZWQgbGluZXMpLlxuXG5cbiAgdmFyIGEgPSBhY3R1YWxMaW5lc1thY3R1YWxMaW5lcy5sZW5ndGggLSAxXTtcbiAgdmFyIGIgPSBleHBlY3RlZExpbmVzW2V4cGVjdGVkTGluZXMubGVuZ3RoIC0gMV07XG5cbiAgd2hpbGUgKGEgPT09IGIpIHtcbiAgICBpZiAoaSsrIDwgMikge1xuICAgICAgZW5kID0gXCJcXG4gIFwiLmNvbmNhdChhKS5jb25jYXQoZW5kKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3RoZXIgPSBhO1xuICAgIH1cblxuICAgIGFjdHVhbExpbmVzLnBvcCgpO1xuICAgIGV4cGVjdGVkTGluZXMucG9wKCk7XG4gICAgaWYgKGFjdHVhbExpbmVzLmxlbmd0aCA9PT0gMCB8fCBleHBlY3RlZExpbmVzLmxlbmd0aCA9PT0gMCkgYnJlYWs7XG4gICAgYSA9IGFjdHVhbExpbmVzW2FjdHVhbExpbmVzLmxlbmd0aCAtIDFdO1xuICAgIGIgPSBleHBlY3RlZExpbmVzW2V4cGVjdGVkTGluZXMubGVuZ3RoIC0gMV07XG4gIH1cblxuICB2YXIgbWF4TGluZXMgPSBNYXRoLm1heChhY3R1YWxMaW5lcy5sZW5ndGgsIGV4cGVjdGVkTGluZXMubGVuZ3RoKTsgLy8gU3RyaWN0IGVxdWFsIHdpdGggaWRlbnRpY2FsIG9iamVjdHMgdGhhdCBhcmUgbm90IGlkZW50aWNhbCBieSByZWZlcmVuY2UuXG4gIC8vIEUuZy4sIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwoeyBhOiBTeW1ib2woKSB9LCB7IGE6IFN5bWJvbCgpIH0pXG5cbiAgaWYgKG1heExpbmVzID09PSAwKSB7XG4gICAgLy8gV2UgaGF2ZSB0byBnZXQgdGhlIHJlc3VsdCBhZ2Fpbi4gVGhlIGxpbmVzIHdlcmUgYWxsIHJlbW92ZWQgYmVmb3JlLlxuICAgIHZhciBfYWN0dWFsTGluZXMgPSBhY3R1YWxJbnNwZWN0ZWQuc3BsaXQoJ1xcbicpOyAvLyBPbmx5IHJlbW92ZSBsaW5lcyBpbiBjYXNlIGl0IG1ha2VzIHNlbnNlIHRvIGNvbGxhcHNlIHRob3NlLlxuICAgIC8vIFRPRE86IEFjY2VwdCBlbnYgdG8gYWx3YXlzIHNob3cgdGhlIGZ1bGwgZXJyb3IuXG5cblxuICAgIGlmIChfYWN0dWFsTGluZXMubGVuZ3RoID4gMzApIHtcbiAgICAgIF9hY3R1YWxMaW5lc1syNl0gPSBcIlwiLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUpO1xuXG4gICAgICB3aGlsZSAoX2FjdHVhbExpbmVzLmxlbmd0aCA+IDI3KSB7XG4gICAgICAgIF9hY3R1YWxMaW5lcy5wb3AoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIi5jb25jYXQoa1JlYWRhYmxlT3BlcmF0b3Iubm90SWRlbnRpY2FsLCBcIlxcblxcblwiKS5jb25jYXQoX2FjdHVhbExpbmVzLmpvaW4oJ1xcbicpLCBcIlxcblwiKTtcbiAgfVxuXG4gIGlmIChpID4gMykge1xuICAgIGVuZCA9IFwiXFxuXCIuY29uY2F0KGJsdWUsIFwiLi4uXCIpLmNvbmNhdCh3aGl0ZSkuY29uY2F0KGVuZCk7XG4gICAgc2tpcHBlZCA9IHRydWU7XG4gIH1cblxuICBpZiAob3RoZXIgIT09ICcnKSB7XG4gICAgZW5kID0gXCJcXG4gIFwiLmNvbmNhdChvdGhlcikuY29uY2F0KGVuZCk7XG4gICAgb3RoZXIgPSAnJztcbiAgfVxuXG4gIHZhciBwcmludGVkTGluZXMgPSAwO1xuICB2YXIgbXNnID0ga1JlYWRhYmxlT3BlcmF0b3Jbb3BlcmF0b3JdICsgXCJcXG5cIi5jb25jYXQoZ3JlZW4sIFwiKyBhY3R1YWxcIikuY29uY2F0KHdoaXRlLCBcIiBcIikuY29uY2F0KHJlZCwgXCItIGV4cGVjdGVkXCIpLmNvbmNhdCh3aGl0ZSk7XG4gIHZhciBza2lwcGVkTXNnID0gXCIgXCIuY29uY2F0KGJsdWUsIFwiLi4uXCIpLmNvbmNhdCh3aGl0ZSwgXCIgTGluZXMgc2tpcHBlZFwiKTtcblxuICBmb3IgKGkgPSAwOyBpIDwgbWF4TGluZXM7IGkrKykge1xuICAgIC8vIE9ubHkgZXh0cmEgZXhwZWN0ZWQgbGluZXMgZXhpc3RcbiAgICB2YXIgY3VyID0gaSAtIGxhc3RQb3M7XG5cbiAgICBpZiAoYWN0dWFsTGluZXMubGVuZ3RoIDwgaSArIDEpIHtcbiAgICAgIC8vIElmIHRoZSBsYXN0IGRpdmVyZ2luZyBsaW5lIGlzIG1vcmUgdGhhbiBvbmUgbGluZSBhYm92ZSBhbmQgdGhlXG4gICAgICAvLyBjdXJyZW50IGxpbmUgaXMgYXQgbGVhc3QgbGluZSB0aHJlZSwgYWRkIHNvbWUgb2YgdGhlIGZvcm1lciBsaW5lcyBhbmRcbiAgICAgIC8vIGFsc28gYWRkIGRvdHMgdG8gaW5kaWNhdGUgc2tpcHBlZCBlbnRyaWVzLlxuICAgICAgaWYgKGN1ciA+IDEgJiYgaSA+IDIpIHtcbiAgICAgICAgaWYgKGN1ciA+IDQpIHtcbiAgICAgICAgICByZXMgKz0gXCJcXG5cIi5jb25jYXQoYmx1ZSwgXCIuLi5cIikuY29uY2F0KHdoaXRlKTtcbiAgICAgICAgICBza2lwcGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIGlmIChjdXIgPiAzKSB7XG4gICAgICAgICAgcmVzICs9IFwiXFxuICBcIi5jb25jYXQoZXhwZWN0ZWRMaW5lc1tpIC0gMl0pO1xuICAgICAgICAgIHByaW50ZWRMaW5lcysrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzICs9IFwiXFxuICBcIi5jb25jYXQoZXhwZWN0ZWRMaW5lc1tpIC0gMV0pO1xuICAgICAgICBwcmludGVkTGluZXMrKztcbiAgICAgIH0gLy8gTWFyayB0aGUgY3VycmVudCBsaW5lIGFzIHRoZSBsYXN0IGRpdmVyZ2luZyBvbmUuXG5cblxuICAgICAgbGFzdFBvcyA9IGk7IC8vIEFkZCB0aGUgZXhwZWN0ZWQgbGluZSB0byB0aGUgY2FjaGUuXG5cbiAgICAgIG90aGVyICs9IFwiXFxuXCIuY29uY2F0KHJlZCwgXCItXCIpLmNvbmNhdCh3aGl0ZSwgXCIgXCIpLmNvbmNhdChleHBlY3RlZExpbmVzW2ldKTtcbiAgICAgIHByaW50ZWRMaW5lcysrOyAvLyBPbmx5IGV4dHJhIGFjdHVhbCBsaW5lcyBleGlzdFxuICAgIH0gZWxzZSBpZiAoZXhwZWN0ZWRMaW5lcy5sZW5ndGggPCBpICsgMSkge1xuICAgICAgLy8gSWYgdGhlIGxhc3QgZGl2ZXJnaW5nIGxpbmUgaXMgbW9yZSB0aGFuIG9uZSBsaW5lIGFib3ZlIGFuZCB0aGVcbiAgICAgIC8vIGN1cnJlbnQgbGluZSBpcyBhdCBsZWFzdCBsaW5lIHRocmVlLCBhZGQgc29tZSBvZiB0aGUgZm9ybWVyIGxpbmVzIGFuZFxuICAgICAgLy8gYWxzbyBhZGQgZG90cyB0byBpbmRpY2F0ZSBza2lwcGVkIGVudHJpZXMuXG4gICAgICBpZiAoY3VyID4gMSAmJiBpID4gMikge1xuICAgICAgICBpZiAoY3VyID4gNCkge1xuICAgICAgICAgIHJlcyArPSBcIlxcblwiLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUpO1xuICAgICAgICAgIHNraXBwZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKGN1ciA+IDMpIHtcbiAgICAgICAgICByZXMgKz0gXCJcXG4gIFwiLmNvbmNhdChhY3R1YWxMaW5lc1tpIC0gMl0pO1xuICAgICAgICAgIHByaW50ZWRMaW5lcysrO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzICs9IFwiXFxuICBcIi5jb25jYXQoYWN0dWFsTGluZXNbaSAtIDFdKTtcbiAgICAgICAgcHJpbnRlZExpbmVzKys7XG4gICAgICB9IC8vIE1hcmsgdGhlIGN1cnJlbnQgbGluZSBhcyB0aGUgbGFzdCBkaXZlcmdpbmcgb25lLlxuXG5cbiAgICAgIGxhc3RQb3MgPSBpOyAvLyBBZGQgdGhlIGFjdHVhbCBsaW5lIHRvIHRoZSByZXN1bHQuXG5cbiAgICAgIHJlcyArPSBcIlxcblwiLmNvbmNhdChncmVlbiwgXCIrXCIpLmNvbmNhdCh3aGl0ZSwgXCIgXCIpLmNvbmNhdChhY3R1YWxMaW5lc1tpXSk7XG4gICAgICBwcmludGVkTGluZXMrKzsgLy8gTGluZXMgZGl2ZXJnZVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgZXhwZWN0ZWRMaW5lID0gZXhwZWN0ZWRMaW5lc1tpXTtcbiAgICAgIHZhciBhY3R1YWxMaW5lID0gYWN0dWFsTGluZXNbaV07IC8vIElmIHRoZSBsaW5lcyBkaXZlcmdlLCBzcGVjaWZpY2FsbHkgY2hlY2sgZm9yIGxpbmVzIHRoYXQgb25seSBkaXZlcmdlIGJ5XG4gICAgICAvLyBhIHRyYWlsaW5nIGNvbW1hLiBJbiB0aGF0IGNhc2UgaXQgaXMgYWN0dWFsbHkgaWRlbnRpY2FsIGFuZCB3ZSBzaG91bGRcbiAgICAgIC8vIG1hcmsgaXQgYXMgc3VjaC5cblxuICAgICAgdmFyIGRpdmVyZ2luZ0xpbmVzID0gYWN0dWFsTGluZSAhPT0gZXhwZWN0ZWRMaW5lICYmICghZW5kc1dpdGgoYWN0dWFsTGluZSwgJywnKSB8fCBhY3R1YWxMaW5lLnNsaWNlKDAsIC0xKSAhPT0gZXhwZWN0ZWRMaW5lKTsgLy8gSWYgdGhlIGV4cGVjdGVkIGxpbmUgaGFzIGEgdHJhaWxpbmcgY29tbWEgYnV0IGlzIG90aGVyd2lzZSBpZGVudGljYWwsXG4gICAgICAvLyBhZGQgYSBjb21tYSBhdCB0aGUgZW5kIG9mIHRoZSBhY3R1YWwgbGluZS4gT3RoZXJ3aXNlIHRoZSBvdXRwdXQgY291bGRcbiAgICAgIC8vIGxvb2sgd2VpcmQgYXMgaW46XG4gICAgICAvL1xuICAgICAgLy8gICBbXG4gICAgICAvLyAgICAgMSAgICAgICAgIC8vIE5vIGNvbW1hIGF0IHRoZSBlbmQhXG4gICAgICAvLyArICAgMlxuICAgICAgLy8gICBdXG4gICAgICAvL1xuXG4gICAgICBpZiAoZGl2ZXJnaW5nTGluZXMgJiYgZW5kc1dpdGgoZXhwZWN0ZWRMaW5lLCAnLCcpICYmIGV4cGVjdGVkTGluZS5zbGljZSgwLCAtMSkgPT09IGFjdHVhbExpbmUpIHtcbiAgICAgICAgZGl2ZXJnaW5nTGluZXMgPSBmYWxzZTtcbiAgICAgICAgYWN0dWFsTGluZSArPSAnLCc7XG4gICAgICB9XG5cbiAgICAgIGlmIChkaXZlcmdpbmdMaW5lcykge1xuICAgICAgICAvLyBJZiB0aGUgbGFzdCBkaXZlcmdpbmcgbGluZSBpcyBtb3JlIHRoYW4gb25lIGxpbmUgYWJvdmUgYW5kIHRoZVxuICAgICAgICAvLyBjdXJyZW50IGxpbmUgaXMgYXQgbGVhc3QgbGluZSB0aHJlZSwgYWRkIHNvbWUgb2YgdGhlIGZvcm1lciBsaW5lcyBhbmRcbiAgICAgICAgLy8gYWxzbyBhZGQgZG90cyB0byBpbmRpY2F0ZSBza2lwcGVkIGVudHJpZXMuXG4gICAgICAgIGlmIChjdXIgPiAxICYmIGkgPiAyKSB7XG4gICAgICAgICAgaWYgKGN1ciA+IDQpIHtcbiAgICAgICAgICAgIHJlcyArPSBcIlxcblwiLmNvbmNhdChibHVlLCBcIi4uLlwiKS5jb25jYXQod2hpdGUpO1xuICAgICAgICAgICAgc2tpcHBlZCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChjdXIgPiAzKSB7XG4gICAgICAgICAgICByZXMgKz0gXCJcXG4gIFwiLmNvbmNhdChhY3R1YWxMaW5lc1tpIC0gMl0pO1xuICAgICAgICAgICAgcHJpbnRlZExpbmVzKys7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzICs9IFwiXFxuICBcIi5jb25jYXQoYWN0dWFsTGluZXNbaSAtIDFdKTtcbiAgICAgICAgICBwcmludGVkTGluZXMrKztcbiAgICAgICAgfSAvLyBNYXJrIHRoZSBjdXJyZW50IGxpbmUgYXMgdGhlIGxhc3QgZGl2ZXJnaW5nIG9uZS5cblxuXG4gICAgICAgIGxhc3RQb3MgPSBpOyAvLyBBZGQgdGhlIGFjdHVhbCBsaW5lIHRvIHRoZSByZXN1bHQgYW5kIGNhY2hlIHRoZSBleHBlY3RlZCBkaXZlcmdpbmdcbiAgICAgICAgLy8gbGluZSBzbyBjb25zZWN1dGl2ZSBkaXZlcmdpbmcgbGluZXMgc2hvdyB1cCBhcyArKystLS0gYW5kIG5vdCArLSstKy0uXG5cbiAgICAgICAgcmVzICs9IFwiXFxuXCIuY29uY2F0KGdyZWVuLCBcIitcIikuY29uY2F0KHdoaXRlLCBcIiBcIikuY29uY2F0KGFjdHVhbExpbmUpO1xuICAgICAgICBvdGhlciArPSBcIlxcblwiLmNvbmNhdChyZWQsIFwiLVwiKS5jb25jYXQod2hpdGUsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWRMaW5lKTtcbiAgICAgICAgcHJpbnRlZExpbmVzICs9IDI7IC8vIExpbmVzIGFyZSBpZGVudGljYWxcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFkZCBhbGwgY2FjaGVkIGluZm9ybWF0aW9uIHRvIHRoZSByZXN1bHQgYmVmb3JlIGFkZGluZyBvdGhlciB0aGluZ3NcbiAgICAgICAgLy8gYW5kIHJlc2V0IHRoZSBjYWNoZS5cbiAgICAgICAgcmVzICs9IG90aGVyO1xuICAgICAgICBvdGhlciA9ICcnOyAvLyBJZiB0aGUgbGFzdCBkaXZlcmdpbmcgbGluZSBpcyBleGFjdGx5IG9uZSBsaW5lIGFib3ZlIG9yIGlmIGl0IGlzIHRoZVxuICAgICAgICAvLyB2ZXJ5IGZpcnN0IGxpbmUsIGFkZCB0aGUgbGluZSB0byB0aGUgcmVzdWx0LlxuXG4gICAgICAgIGlmIChjdXIgPT09IDEgfHwgaSA9PT0gMCkge1xuICAgICAgICAgIHJlcyArPSBcIlxcbiAgXCIuY29uY2F0KGFjdHVhbExpbmUpO1xuICAgICAgICAgIHByaW50ZWRMaW5lcysrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSAvLyBJbnNwZWN0ZWQgb2JqZWN0IHRvIGJpZyAoU2hvdyB+MjAgcm93cyBtYXgpXG5cblxuICAgIGlmIChwcmludGVkTGluZXMgPiAyMCAmJiBpIDwgbWF4TGluZXMgLSAyKSB7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQobXNnKS5jb25jYXQoc2tpcHBlZE1zZywgXCJcXG5cIikuY29uY2F0KHJlcywgXCJcXG5cIikuY29uY2F0KGJsdWUsIFwiLi4uXCIpLmNvbmNhdCh3aGl0ZSkuY29uY2F0KG90aGVyLCBcIlxcblwiKSArIFwiXCIuY29uY2F0KGJsdWUsIFwiLi4uXCIpLmNvbmNhdCh3aGl0ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFwiXCIuY29uY2F0KG1zZykuY29uY2F0KHNraXBwZWQgPyBza2lwcGVkTXNnIDogJycsIFwiXFxuXCIpLmNvbmNhdChyZXMpLmNvbmNhdChvdGhlcikuY29uY2F0KGVuZCkuY29uY2F0KGluZGljYXRvcik7XG59XG5cbnZhciBBc3NlcnRpb25FcnJvciA9XG4vKiNfX1BVUkVfXyovXG5mdW5jdGlvbiAoX0Vycm9yKSB7XG4gIF9pbmhlcml0cyhBc3NlcnRpb25FcnJvciwgX0Vycm9yKTtcblxuICBmdW5jdGlvbiBBc3NlcnRpb25FcnJvcihvcHRpb25zKSB7XG4gICAgdmFyIF90aGlzO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFzc2VydGlvbkVycm9yKTtcblxuICAgIGlmIChfdHlwZW9mKG9wdGlvbnMpICE9PSAnb2JqZWN0JyB8fCBvcHRpb25zID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfQVJHX1RZUEUoJ29wdGlvbnMnLCAnT2JqZWN0Jywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgdmFyIG1lc3NhZ2UgPSBvcHRpb25zLm1lc3NhZ2UsXG4gICAgICAgIG9wZXJhdG9yID0gb3B0aW9ucy5vcGVyYXRvcixcbiAgICAgICAgc3RhY2tTdGFydEZuID0gb3B0aW9ucy5zdGFja1N0YXJ0Rm47XG4gICAgdmFyIGFjdHVhbCA9IG9wdGlvbnMuYWN0dWFsLFxuICAgICAgICBleHBlY3RlZCA9IG9wdGlvbnMuZXhwZWN0ZWQ7XG4gICAgdmFyIGxpbWl0ID0gRXJyb3Iuc3RhY2tUcmFjZUxpbWl0O1xuICAgIEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IDA7XG5cbiAgICBpZiAobWVzc2FnZSAhPSBudWxsKSB7XG4gICAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihBc3NlcnRpb25FcnJvcikuY2FsbCh0aGlzLCBTdHJpbmcobWVzc2FnZSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb2Nlc3Muc3RkZXJyICYmIHByb2Nlc3Muc3RkZXJyLmlzVFRZKSB7XG4gICAgICAgIC8vIFJlc2V0IG9uIGVhY2ggY2FsbCB0byBtYWtlIHN1cmUgd2UgaGFuZGxlIGR5bmFtaWNhbGx5IHNldCBlbnZpcm9ubWVudFxuICAgICAgICAvLyB2YXJpYWJsZXMgY29ycmVjdC5cbiAgICAgICAgaWYgKHByb2Nlc3Muc3RkZXJyICYmIHByb2Nlc3Muc3RkZXJyLmdldENvbG9yRGVwdGggJiYgcHJvY2Vzcy5zdGRlcnIuZ2V0Q29sb3JEZXB0aCgpICE9PSAxKSB7XG4gICAgICAgICAgYmx1ZSA9IFwiXFx4MUJbMzRtXCI7XG4gICAgICAgICAgZ3JlZW4gPSBcIlxceDFCWzMybVwiO1xuICAgICAgICAgIHdoaXRlID0gXCJcXHgxQlszOW1cIjtcbiAgICAgICAgICByZWQgPSBcIlxceDFCWzMxbVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJsdWUgPSAnJztcbiAgICAgICAgICBncmVlbiA9ICcnO1xuICAgICAgICAgIHdoaXRlID0gJyc7XG4gICAgICAgICAgcmVkID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gUHJldmVudCB0aGUgZXJyb3Igc3RhY2sgZnJvbSBiZWluZyB2aXNpYmxlIGJ5IGR1cGxpY2F0aW5nIHRoZSBlcnJvclxuICAgICAgLy8gaW4gYSB2ZXJ5IGNsb3NlIHdheSB0byB0aGUgb3JpZ2luYWwgaW4gY2FzZSBib3RoIHNpZGVzIGFyZSBhY3R1YWxseVxuICAgICAgLy8gaW5zdGFuY2VzIG9mIEVycm9yLlxuXG5cbiAgICAgIGlmIChfdHlwZW9mKGFjdHVhbCkgPT09ICdvYmplY3QnICYmIGFjdHVhbCAhPT0gbnVsbCAmJiBfdHlwZW9mKGV4cGVjdGVkKSA9PT0gJ29iamVjdCcgJiYgZXhwZWN0ZWQgIT09IG51bGwgJiYgJ3N0YWNrJyBpbiBhY3R1YWwgJiYgYWN0dWFsIGluc3RhbmNlb2YgRXJyb3IgJiYgJ3N0YWNrJyBpbiBleHBlY3RlZCAmJiBleHBlY3RlZCBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIGFjdHVhbCA9IGNvcHlFcnJvcihhY3R1YWwpO1xuICAgICAgICBleHBlY3RlZCA9IGNvcHlFcnJvcihleHBlY3RlZCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcGVyYXRvciA9PT0gJ2RlZXBTdHJpY3RFcXVhbCcgfHwgb3BlcmF0b3IgPT09ICdzdHJpY3RFcXVhbCcpIHtcbiAgICAgICAgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoQXNzZXJ0aW9uRXJyb3IpLmNhbGwodGhpcywgY3JlYXRlRXJyRGlmZihhY3R1YWwsIGV4cGVjdGVkLCBvcGVyYXRvcikpKTtcbiAgICAgIH0gZWxzZSBpZiAob3BlcmF0b3IgPT09ICdub3REZWVwU3RyaWN0RXF1YWwnIHx8IG9wZXJhdG9yID09PSAnbm90U3RyaWN0RXF1YWwnKSB7XG4gICAgICAgIC8vIEluIGNhc2UgdGhlIG9iamVjdHMgYXJlIGVxdWFsIGJ1dCB0aGUgb3BlcmF0b3IgcmVxdWlyZXMgdW5lcXVhbCwgc2hvd1xuICAgICAgICAvLyB0aGUgZmlyc3Qgb2JqZWN0IGFuZCBzYXkgQSBlcXVhbHMgQlxuICAgICAgICB2YXIgYmFzZSA9IGtSZWFkYWJsZU9wZXJhdG9yW29wZXJhdG9yXTtcbiAgICAgICAgdmFyIHJlcyA9IGluc3BlY3RWYWx1ZShhY3R1YWwpLnNwbGl0KCdcXG4nKTsgLy8gSW4gY2FzZSBcImFjdHVhbFwiIGlzIGFuIG9iamVjdCwgaXQgc2hvdWxkIG5vdCBiZSByZWZlcmVuY2UgZXF1YWwuXG5cbiAgICAgICAgaWYgKG9wZXJhdG9yID09PSAnbm90U3RyaWN0RXF1YWwnICYmIF90eXBlb2YoYWN0dWFsKSA9PT0gJ29iamVjdCcgJiYgYWN0dWFsICE9PSBudWxsKSB7XG4gICAgICAgICAgYmFzZSA9IGtSZWFkYWJsZU9wZXJhdG9yLm5vdFN0cmljdEVxdWFsT2JqZWN0O1xuICAgICAgICB9IC8vIE9ubHkgcmVtb3ZlIGxpbmVzIGluIGNhc2UgaXQgbWFrZXMgc2Vuc2UgdG8gY29sbGFwc2UgdGhvc2UuXG4gICAgICAgIC8vIFRPRE86IEFjY2VwdCBlbnYgdG8gYWx3YXlzIHNob3cgdGhlIGZ1bGwgZXJyb3IuXG5cblxuICAgICAgICBpZiAocmVzLmxlbmd0aCA+IDMwKSB7XG4gICAgICAgICAgcmVzWzI2XSA9IFwiXCIuY29uY2F0KGJsdWUsIFwiLi4uXCIpLmNvbmNhdCh3aGl0ZSk7XG5cbiAgICAgICAgICB3aGlsZSAocmVzLmxlbmd0aCA+IDI3KSB7XG4gICAgICAgICAgICByZXMucG9wKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IC8vIE9ubHkgcHJpbnQgYSBzaW5nbGUgaW5wdXQuXG5cblxuICAgICAgICBpZiAocmVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX2dldFByb3RvdHlwZU9mKEFzc2VydGlvbkVycm9yKS5jYWxsKHRoaXMsIFwiXCIuY29uY2F0KGJhc2UsIFwiIFwiKS5jb25jYXQocmVzWzBdKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX2dldFByb3RvdHlwZU9mKEFzc2VydGlvbkVycm9yKS5jYWxsKHRoaXMsIFwiXCIuY29uY2F0KGJhc2UsIFwiXFxuXFxuXCIpLmNvbmNhdChyZXMuam9pbignXFxuJyksIFwiXFxuXCIpKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBfcmVzID0gaW5zcGVjdFZhbHVlKGFjdHVhbCk7XG5cbiAgICAgICAgdmFyIG90aGVyID0gJyc7XG4gICAgICAgIHZhciBrbm93bk9wZXJhdG9ycyA9IGtSZWFkYWJsZU9wZXJhdG9yW29wZXJhdG9yXTtcblxuICAgICAgICBpZiAob3BlcmF0b3IgPT09ICdub3REZWVwRXF1YWwnIHx8IG9wZXJhdG9yID09PSAnbm90RXF1YWwnKSB7XG4gICAgICAgICAgX3JlcyA9IFwiXCIuY29uY2F0KGtSZWFkYWJsZU9wZXJhdG9yW29wZXJhdG9yXSwgXCJcXG5cXG5cIikuY29uY2F0KF9yZXMpO1xuXG4gICAgICAgICAgaWYgKF9yZXMubGVuZ3RoID4gMTAyNCkge1xuICAgICAgICAgICAgX3JlcyA9IFwiXCIuY29uY2F0KF9yZXMuc2xpY2UoMCwgMTAyMSksIFwiLi4uXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdGhlciA9IFwiXCIuY29uY2F0KGluc3BlY3RWYWx1ZShleHBlY3RlZCkpO1xuXG4gICAgICAgICAgaWYgKF9yZXMubGVuZ3RoID4gNTEyKSB7XG4gICAgICAgICAgICBfcmVzID0gXCJcIi5jb25jYXQoX3Jlcy5zbGljZSgwLCA1MDkpLCBcIi4uLlwiKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAob3RoZXIubGVuZ3RoID4gNTEyKSB7XG4gICAgICAgICAgICBvdGhlciA9IFwiXCIuY29uY2F0KG90aGVyLnNsaWNlKDAsIDUwOSksIFwiLi4uXCIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChvcGVyYXRvciA9PT0gJ2RlZXBFcXVhbCcgfHwgb3BlcmF0b3IgPT09ICdlcXVhbCcpIHtcbiAgICAgICAgICAgIF9yZXMgPSBcIlwiLmNvbmNhdChrbm93bk9wZXJhdG9ycywgXCJcXG5cXG5cIikuY29uY2F0KF9yZXMsIFwiXFxuXFxuc2hvdWxkIGVxdWFsXFxuXFxuXCIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvdGhlciA9IFwiIFwiLmNvbmNhdChvcGVyYXRvciwgXCIgXCIpLmNvbmNhdChvdGhlcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfZ2V0UHJvdG90eXBlT2YoQXNzZXJ0aW9uRXJyb3IpLmNhbGwodGhpcywgXCJcIi5jb25jYXQoX3JlcykuY29uY2F0KG90aGVyKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IGxpbWl0O1xuICAgIF90aGlzLmdlbmVyYXRlZE1lc3NhZ2UgPSAhbWVzc2FnZTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksICduYW1lJywge1xuICAgICAgdmFsdWU6ICdBc3NlcnRpb25FcnJvciBbRVJSX0FTU0VSVElPTl0nLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIF90aGlzLmNvZGUgPSAnRVJSX0FTU0VSVElPTic7XG4gICAgX3RoaXMuYWN0dWFsID0gYWN0dWFsO1xuICAgIF90aGlzLmV4cGVjdGVkID0gZXhwZWN0ZWQ7XG4gICAgX3RoaXMub3BlcmF0b3IgPSBvcGVyYXRvcjtcblxuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgc3RhY2tTdGFydEZuKTtcbiAgICB9IC8vIENyZWF0ZSBlcnJvciBtZXNzYWdlIGluY2x1ZGluZyB0aGUgZXJyb3IgY29kZSBpbiB0aGUgbmFtZS5cblxuXG4gICAgX3RoaXMuc3RhY2s7IC8vIFJlc2V0IHRoZSBuYW1lLlxuXG4gICAgX3RoaXMubmFtZSA9ICdBc3NlcnRpb25FcnJvcic7XG4gICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKF90aGlzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhBc3NlcnRpb25FcnJvciwgW3tcbiAgICBrZXk6IFwidG9TdHJpbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gXCJcIi5jb25jYXQodGhpcy5uYW1lLCBcIiBbXCIpLmNvbmNhdCh0aGlzLmNvZGUsIFwiXTogXCIpLmNvbmNhdCh0aGlzLm1lc3NhZ2UpO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogaW5zcGVjdC5jdXN0b20sXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHZhbHVlKHJlY3Vyc2VUaW1lcywgY3R4KSB7XG4gICAgICAvLyBUaGlzIGxpbWl0cyB0aGUgYGFjdHVhbGAgYW5kIGBleHBlY3RlZGAgcHJvcGVydHkgZGVmYXVsdCBpbnNwZWN0aW9uIHRvXG4gICAgICAvLyB0aGUgbWluaW11bSBkZXB0aC4gT3RoZXJ3aXNlIHRob3NlIHZhbHVlcyB3b3VsZCBiZSB0b28gdmVyYm9zZSBjb21wYXJlZFxuICAgICAgLy8gdG8gdGhlIGFjdHVhbCBlcnJvciBtZXNzYWdlIHdoaWNoIGNvbnRhaW5zIGEgY29tYmluZWQgdmlldyBvZiB0aGVzZSB0d29cbiAgICAgIC8vIGlucHV0IHZhbHVlcy5cbiAgICAgIHJldHVybiBpbnNwZWN0KHRoaXMsIF9vYmplY3RTcHJlYWQoe30sIGN0eCwge1xuICAgICAgICBjdXN0b21JbnNwZWN0OiBmYWxzZSxcbiAgICAgICAgZGVwdGg6IDBcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQXNzZXJ0aW9uRXJyb3I7XG59KF93cmFwTmF0aXZlU3VwZXIoRXJyb3IpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBBc3NlcnRpb25FcnJvcjsiLCIvLyBDdXJyZW50bHkgaW4gc3luYyB3aXRoIE5vZGUuanMgbGliL2ludGVybmFsL2Vycm9ycy5qc1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2NvbW1pdC8zYjA0NDk2MmM0OGZlMzEzOTA1ODc3YTk2YjVkMDg5NGE1NDA0ZjZmXG5cbi8qIGVzbGludCBub2RlLWNvcmUvZG9jdW1lbnRlZC1lcnJvcnM6IFwiZXJyb3JcIiAqL1xuXG4vKiBlc2xpbnQgbm9kZS1jb3JlL2FscGhhYmV0aXplLWVycm9yczogXCJlcnJvclwiICovXG5cbi8qIGVzbGludCBub2RlLWNvcmUvcHJlZmVyLXV0aWwtZm9ybWF0LWVycm9yczogXCJlcnJvclwiICovXG4ndXNlIHN0cmljdCc7IC8vIFRoZSB3aG9sZSBwb2ludCBiZWhpbmQgdGhpcyBpbnRlcm5hbCBtb2R1bGUgaXMgdG8gYWxsb3cgTm9kZS5qcyB0byBub1xuLy8gbG9uZ2VyIGJlIGZvcmNlZCB0byB0cmVhdCBldmVyeSBlcnJvciBtZXNzYWdlIGNoYW5nZSBhcyBhIHNlbXZlci1tYWpvclxuLy8gY2hhbmdlLiBUaGUgTm9kZUVycm9yIGNsYXNzZXMgaGVyZSBhbGwgZXhwb3NlIGEgYGNvZGVgIHByb3BlcnR5IHdob3NlXG4vLyB2YWx1ZSBzdGF0aWNhbGx5IGFuZCBwZXJtYW5lbnRseSBpZGVudGlmaWVzIHRoZSBlcnJvci4gV2hpbGUgdGhlIGVycm9yXG4vLyBtZXNzYWdlIG1heSBjaGFuZ2UsIHRoZSBjb2RlIHNob3VsZCBub3QuXG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKGNhbGwgJiYgKF90eXBlb2YoY2FsbCkgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikpIHsgcmV0dXJuIGNhbGw7IH0gcmV0dXJuIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoc2VsZik7IH1cblxuZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChzZWxmKSB7IGlmIChzZWxmID09PSB2b2lkIDApIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZiA6IGZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7IHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7IH07IHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7IH1cblxuZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHsgX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7IG8uX19wcm90b19fID0gcDsgcmV0dXJuIG87IH07IHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7IH1cblxudmFyIGNvZGVzID0ge307IC8vIExhenkgbG9hZGVkXG5cbnZhciBhc3NlcnQ7XG52YXIgdXRpbDtcblxuZnVuY3Rpb24gY3JlYXRlRXJyb3JUeXBlKGNvZGUsIG1lc3NhZ2UsIEJhc2UpIHtcbiAgaWYgKCFCYXNlKSB7XG4gICAgQmFzZSA9IEVycm9yO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0TWVzc2FnZShhcmcxLCBhcmcyLCBhcmczKSB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBtZXNzYWdlKGFyZzEsIGFyZzIsIGFyZzMpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBOb2RlRXJyb3IgPVxuICAvKiNfX1BVUkVfXyovXG4gIGZ1bmN0aW9uIChfQmFzZSkge1xuICAgIF9pbmhlcml0cyhOb2RlRXJyb3IsIF9CYXNlKTtcblxuICAgIGZ1bmN0aW9uIE5vZGVFcnJvcihhcmcxLCBhcmcyLCBhcmczKSB7XG4gICAgICB2YXIgX3RoaXM7XG5cbiAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBOb2RlRXJyb3IpO1xuXG4gICAgICBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9nZXRQcm90b3R5cGVPZihOb2RlRXJyb3IpLmNhbGwodGhpcywgZ2V0TWVzc2FnZShhcmcxLCBhcmcyLCBhcmczKSkpO1xuICAgICAgX3RoaXMuY29kZSA9IGNvZGU7XG4gICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIE5vZGVFcnJvcjtcbiAgfShCYXNlKTtcblxuICBjb2Rlc1tjb2RlXSA9IE5vZGVFcnJvcjtcbn0gLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvdjEwLjguMC9saWIvaW50ZXJuYWwvZXJyb3JzLmpzXG5cblxuZnVuY3Rpb24gb25lT2YoZXhwZWN0ZWQsIHRoaW5nKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGV4cGVjdGVkKSkge1xuICAgIHZhciBsZW4gPSBleHBlY3RlZC5sZW5ndGg7XG4gICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5tYXAoZnVuY3Rpb24gKGkpIHtcbiAgICAgIHJldHVybiBTdHJpbmcoaSk7XG4gICAgfSk7XG5cbiAgICBpZiAobGVuID4gMikge1xuICAgICAgcmV0dXJuIFwib25lIG9mIFwiLmNvbmNhdCh0aGluZywgXCIgXCIpLmNvbmNhdChleHBlY3RlZC5zbGljZSgwLCBsZW4gLSAxKS5qb2luKCcsICcpLCBcIiwgb3IgXCIpICsgZXhwZWN0ZWRbbGVuIC0gMV07XG4gICAgfSBlbHNlIGlmIChsZW4gPT09IDIpIHtcbiAgICAgIHJldHVybiBcIm9uZSBvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWRbMF0sIFwiIG9yIFwiKS5jb25jYXQoZXhwZWN0ZWRbMV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gXCJvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWRbMF0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gXCJvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoU3RyaW5nKGV4cGVjdGVkKSk7XG4gIH1cbn0gLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nL3N0YXJ0c1dpdGhcblxuXG5mdW5jdGlvbiBzdGFydHNXaXRoKHN0ciwgc2VhcmNoLCBwb3MpIHtcbiAgcmV0dXJuIHN0ci5zdWJzdHIoIXBvcyB8fCBwb3MgPCAwID8gMCA6ICtwb3MsIHNlYXJjaC5sZW5ndGgpID09PSBzZWFyY2g7XG59IC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9lbmRzV2l0aFxuXG5cbmZ1bmN0aW9uIGVuZHNXaXRoKHN0ciwgc2VhcmNoLCB0aGlzX2xlbikge1xuICBpZiAodGhpc19sZW4gPT09IHVuZGVmaW5lZCB8fCB0aGlzX2xlbiA+IHN0ci5sZW5ndGgpIHtcbiAgICB0aGlzX2xlbiA9IHN0ci5sZW5ndGg7XG4gIH1cblxuICByZXR1cm4gc3RyLnN1YnN0cmluZyh0aGlzX2xlbiAtIHNlYXJjaC5sZW5ndGgsIHRoaXNfbGVuKSA9PT0gc2VhcmNoO1xufSAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvaW5jbHVkZXNcblxuXG5mdW5jdGlvbiBpbmNsdWRlcyhzdHIsIHNlYXJjaCwgc3RhcnQpIHtcbiAgaWYgKHR5cGVvZiBzdGFydCAhPT0gJ251bWJlcicpIHtcbiAgICBzdGFydCA9IDA7XG4gIH1cblxuICBpZiAoc3RhcnQgKyBzZWFyY2gubGVuZ3RoID4gc3RyLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RyLmluZGV4T2Yoc2VhcmNoLCBzdGFydCkgIT09IC0xO1xuICB9XG59XG5cbmNyZWF0ZUVycm9yVHlwZSgnRVJSX0FNQklHVU9VU19BUkdVTUVOVCcsICdUaGUgXCIlc1wiIGFyZ3VtZW50IGlzIGFtYmlndW91cy4gJXMnLCBUeXBlRXJyb3IpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfSU5WQUxJRF9BUkdfVFlQRScsIGZ1bmN0aW9uIChuYW1lLCBleHBlY3RlZCwgYWN0dWFsKSB7XG4gIGlmIChhc3NlcnQgPT09IHVuZGVmaW5lZCkgYXNzZXJ0ID0gcmVxdWlyZSgnLi4vYXNzZXJ0Jyk7XG4gIGFzc2VydCh0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycsIFwiJ25hbWUnIG11c3QgYmUgYSBzdHJpbmdcIik7IC8vIGRldGVybWluZXI6ICdtdXN0IGJlJyBvciAnbXVzdCBub3QgYmUnXG5cbiAgdmFyIGRldGVybWluZXI7XG5cbiAgaWYgKHR5cGVvZiBleHBlY3RlZCA9PT0gJ3N0cmluZycgJiYgc3RhcnRzV2l0aChleHBlY3RlZCwgJ25vdCAnKSkge1xuICAgIGRldGVybWluZXIgPSAnbXVzdCBub3QgYmUnO1xuICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQucmVwbGFjZSgvXm5vdCAvLCAnJyk7XG4gIH0gZWxzZSB7XG4gICAgZGV0ZXJtaW5lciA9ICdtdXN0IGJlJztcbiAgfVxuXG4gIHZhciBtc2c7XG5cbiAgaWYgKGVuZHNXaXRoKG5hbWUsICcgYXJndW1lbnQnKSkge1xuICAgIC8vIEZvciBjYXNlcyBsaWtlICdmaXJzdCBhcmd1bWVudCdcbiAgICBtc2cgPSBcIlRoZSBcIi5jb25jYXQobmFtZSwgXCIgXCIpLmNvbmNhdChkZXRlcm1pbmVyLCBcIiBcIikuY29uY2F0KG9uZU9mKGV4cGVjdGVkLCAndHlwZScpKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgdHlwZSA9IGluY2x1ZGVzKG5hbWUsICcuJykgPyAncHJvcGVydHknIDogJ2FyZ3VtZW50JztcbiAgICBtc2cgPSBcIlRoZSBcXFwiXCIuY29uY2F0KG5hbWUsIFwiXFxcIiBcIikuY29uY2F0KHR5cGUsIFwiIFwiKS5jb25jYXQoZGV0ZXJtaW5lciwgXCIgXCIpLmNvbmNhdChvbmVPZihleHBlY3RlZCwgJ3R5cGUnKSk7XG4gIH0gLy8gVE9ETyhCcmlkZ2VBUik6IEltcHJvdmUgdGhlIG91dHB1dCBieSBzaG93aW5nIGBudWxsYCBhbmQgc2ltaWxhci5cblxuXG4gIG1zZyArPSBcIi4gUmVjZWl2ZWQgdHlwZSBcIi5jb25jYXQoX3R5cGVvZihhY3R1YWwpKTtcbiAgcmV0dXJuIG1zZztcbn0sIFR5cGVFcnJvcik7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9JTlZBTElEX0FSR19WQUxVRScsIGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICB2YXIgcmVhc29uID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAnaXMgaW52YWxpZCc7XG4gIGlmICh1dGlsID09PSB1bmRlZmluZWQpIHV0aWwgPSByZXF1aXJlKCd1dGlsLycpO1xuICB2YXIgaW5zcGVjdGVkID0gdXRpbC5pbnNwZWN0KHZhbHVlKTtcblxuICBpZiAoaW5zcGVjdGVkLmxlbmd0aCA+IDEyOCkge1xuICAgIGluc3BlY3RlZCA9IFwiXCIuY29uY2F0KGluc3BlY3RlZC5zbGljZSgwLCAxMjgpLCBcIi4uLlwiKTtcbiAgfVxuXG4gIHJldHVybiBcIlRoZSBhcmd1bWVudCAnXCIuY29uY2F0KG5hbWUsIFwiJyBcIikuY29uY2F0KHJlYXNvbiwgXCIuIFJlY2VpdmVkIFwiKS5jb25jYXQoaW5zcGVjdGVkKTtcbn0sIFR5cGVFcnJvciwgUmFuZ2VFcnJvcik7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9JTlZBTElEX1JFVFVSTl9WQUxVRScsIGZ1bmN0aW9uIChpbnB1dCwgbmFtZSwgdmFsdWUpIHtcbiAgdmFyIHR5cGU7XG5cbiAgaWYgKHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUpIHtcbiAgICB0eXBlID0gXCJpbnN0YW5jZSBvZiBcIi5jb25jYXQodmFsdWUuY29uc3RydWN0b3IubmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgdHlwZSA9IFwidHlwZSBcIi5jb25jYXQoX3R5cGVvZih2YWx1ZSkpO1xuICB9XG5cbiAgcmV0dXJuIFwiRXhwZWN0ZWQgXCIuY29uY2F0KGlucHV0LCBcIiB0byBiZSByZXR1cm5lZCBmcm9tIHRoZSBcXFwiXCIpLmNvbmNhdChuYW1lLCBcIlxcXCJcIikgKyBcIiBmdW5jdGlvbiBidXQgZ290IFwiLmNvbmNhdCh0eXBlLCBcIi5cIik7XG59LCBUeXBlRXJyb3IpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfTUlTU0lOR19BUkdTJywgZnVuY3Rpb24gKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgaWYgKGFzc2VydCA9PT0gdW5kZWZpbmVkKSBhc3NlcnQgPSByZXF1aXJlKCcuLi9hc3NlcnQnKTtcbiAgYXNzZXJ0KGFyZ3MubGVuZ3RoID4gMCwgJ0F0IGxlYXN0IG9uZSBhcmcgbmVlZHMgdG8gYmUgc3BlY2lmaWVkJyk7XG4gIHZhciBtc2cgPSAnVGhlICc7XG4gIHZhciBsZW4gPSBhcmdzLmxlbmd0aDtcbiAgYXJncyA9IGFyZ3MubWFwKGZ1bmN0aW9uIChhKSB7XG4gICAgcmV0dXJuIFwiXFxcIlwiLmNvbmNhdChhLCBcIlxcXCJcIik7XG4gIH0pO1xuXG4gIHN3aXRjaCAobGVuKSB7XG4gICAgY2FzZSAxOlxuICAgICAgbXNnICs9IFwiXCIuY29uY2F0KGFyZ3NbMF0sIFwiIGFyZ3VtZW50XCIpO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDI6XG4gICAgICBtc2cgKz0gXCJcIi5jb25jYXQoYXJnc1swXSwgXCIgYW5kIFwiKS5jb25jYXQoYXJnc1sxXSwgXCIgYXJndW1lbnRzXCIpO1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgbXNnICs9IGFyZ3Muc2xpY2UoMCwgbGVuIC0gMSkuam9pbignLCAnKTtcbiAgICAgIG1zZyArPSBcIiwgYW5kIFwiLmNvbmNhdChhcmdzW2xlbiAtIDFdLCBcIiBhcmd1bWVudHNcIik7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBcIlwiLmNvbmNhdChtc2csIFwiIG11c3QgYmUgc3BlY2lmaWVkXCIpO1xufSwgVHlwZUVycm9yKTtcbm1vZHVsZS5leHBvcnRzLmNvZGVzID0gY29kZXM7IiwiLy8gQ3VycmVudGx5IGluIHN5bmMgd2l0aCBOb2RlLmpzIGxpYi9pbnRlcm5hbC91dGlsL2NvbXBhcmlzb25zLmpzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvY29tbWl0LzExMmNjN2MyNzU1MTI1NGFhMmIxNzA5OGZiNzc0ODY3ZjA1ZWQwZDlcbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgeyB2YXIgX2FyciA9IFtdOyB2YXIgX24gPSB0cnVlOyB2YXIgX2QgPSBmYWxzZTsgdmFyIF9lID0gdW5kZWZpbmVkOyB0cnkgeyBmb3IgKHZhciBfaSA9IGFycltTeW1ib2wuaXRlcmF0b3JdKCksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSAhPSBudWxsKSBfaVtcInJldHVyblwiXSgpOyB9IGZpbmFsbHkgeyBpZiAoX2QpIHRocm93IF9lOyB9IH0gcmV0dXJuIF9hcnI7IH1cblxuZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gYXJyOyB9XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7IGlmICh0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gXCJzeW1ib2xcIikgeyBfdHlwZW9mID0gZnVuY3Rpb24gX3R5cGVvZihvYmopIHsgcmV0dXJuIHR5cGVvZiBvYmo7IH07IH0gZWxzZSB7IF90eXBlb2YgPSBmdW5jdGlvbiBfdHlwZW9mKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCAmJiBvYmogIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTsgfSByZXR1cm4gX3R5cGVvZihvYmopOyB9XG5cbnZhciByZWdleEZsYWdzU3VwcG9ydGVkID0gL2EvZy5mbGFncyAhPT0gdW5kZWZpbmVkO1xuXG52YXIgYXJyYXlGcm9tU2V0ID0gZnVuY3Rpb24gYXJyYXlGcm9tU2V0KHNldCkge1xuICB2YXIgYXJyYXkgPSBbXTtcbiAgc2V0LmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgcmV0dXJuIGFycmF5LnB1c2godmFsdWUpO1xuICB9KTtcbiAgcmV0dXJuIGFycmF5O1xufTtcblxudmFyIGFycmF5RnJvbU1hcCA9IGZ1bmN0aW9uIGFycmF5RnJvbU1hcChtYXApIHtcbiAgdmFyIGFycmF5ID0gW107XG4gIG1hcC5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwga2V5KSB7XG4gICAgcmV0dXJuIGFycmF5LnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSk7XG4gIHJldHVybiBhcnJheTtcbn07XG5cbnZhciBvYmplY3RJcyA9IE9iamVjdC5pcyA/IE9iamVjdC5pcyA6IHJlcXVpcmUoJ29iamVjdC1pcycpO1xudmFyIG9iamVjdEdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzIDogZnVuY3Rpb24gKCkge1xuICByZXR1cm4gW107XG59O1xudmFyIG51bWJlcklzTmFOID0gTnVtYmVyLmlzTmFOID8gTnVtYmVyLmlzTmFOIDogcmVxdWlyZSgnaXMtbmFuJyk7XG5cbmZ1bmN0aW9uIHVuY3VycnlUaGlzKGYpIHtcbiAgcmV0dXJuIGYuY2FsbC5iaW5kKGYpO1xufVxuXG52YXIgaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyhPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHVuY3VycnlUaGlzKE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUpO1xudmFyIG9iamVjdFRvU3RyaW5nID0gdW5jdXJyeVRoaXMoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyk7XG5cbnZhciBfcmVxdWlyZSR0eXBlcyA9IHJlcXVpcmUoJ3V0aWwvJykudHlwZXMsXG4gICAgaXNBbnlBcnJheUJ1ZmZlciA9IF9yZXF1aXJlJHR5cGVzLmlzQW55QXJyYXlCdWZmZXIsXG4gICAgaXNBcnJheUJ1ZmZlclZpZXcgPSBfcmVxdWlyZSR0eXBlcy5pc0FycmF5QnVmZmVyVmlldyxcbiAgICBpc0RhdGUgPSBfcmVxdWlyZSR0eXBlcy5pc0RhdGUsXG4gICAgaXNNYXAgPSBfcmVxdWlyZSR0eXBlcy5pc01hcCxcbiAgICBpc1JlZ0V4cCA9IF9yZXF1aXJlJHR5cGVzLmlzUmVnRXhwLFxuICAgIGlzU2V0ID0gX3JlcXVpcmUkdHlwZXMuaXNTZXQsXG4gICAgaXNOYXRpdmVFcnJvciA9IF9yZXF1aXJlJHR5cGVzLmlzTmF0aXZlRXJyb3IsXG4gICAgaXNCb3hlZFByaW1pdGl2ZSA9IF9yZXF1aXJlJHR5cGVzLmlzQm94ZWRQcmltaXRpdmUsXG4gICAgaXNOdW1iZXJPYmplY3QgPSBfcmVxdWlyZSR0eXBlcy5pc051bWJlck9iamVjdCxcbiAgICBpc1N0cmluZ09iamVjdCA9IF9yZXF1aXJlJHR5cGVzLmlzU3RyaW5nT2JqZWN0LFxuICAgIGlzQm9vbGVhbk9iamVjdCA9IF9yZXF1aXJlJHR5cGVzLmlzQm9vbGVhbk9iamVjdCxcbiAgICBpc0JpZ0ludE9iamVjdCA9IF9yZXF1aXJlJHR5cGVzLmlzQmlnSW50T2JqZWN0LFxuICAgIGlzU3ltYm9sT2JqZWN0ID0gX3JlcXVpcmUkdHlwZXMuaXNTeW1ib2xPYmplY3QsXG4gICAgaXNGbG9hdDMyQXJyYXkgPSBfcmVxdWlyZSR0eXBlcy5pc0Zsb2F0MzJBcnJheSxcbiAgICBpc0Zsb2F0NjRBcnJheSA9IF9yZXF1aXJlJHR5cGVzLmlzRmxvYXQ2NEFycmF5O1xuXG5mdW5jdGlvbiBpc05vbkluZGV4KGtleSkge1xuICBpZiAoa2V5Lmxlbmd0aCA9PT0gMCB8fCBrZXkubGVuZ3RoID4gMTApIHJldHVybiB0cnVlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNvZGUgPSBrZXkuY2hhckNvZGVBdChpKTtcbiAgICBpZiAoY29kZSA8IDQ4IHx8IGNvZGUgPiA1NykgcmV0dXJuIHRydWU7XG4gIH0gLy8gVGhlIG1heGltdW0gc2l6ZSBmb3IgYW4gYXJyYXkgaXMgMiAqKiAzMiAtMS5cblxuXG4gIHJldHVybiBrZXkubGVuZ3RoID09PSAxMCAmJiBrZXkgPj0gTWF0aC5wb3coMiwgMzIpO1xufVxuXG5mdW5jdGlvbiBnZXRPd25Ob25JbmRleFByb3BlcnRpZXModmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHZhbHVlKS5maWx0ZXIoaXNOb25JbmRleCkuY29uY2F0KG9iamVjdEdldE93blByb3BlcnR5U3ltYm9scyh2YWx1ZSkuZmlsdGVyKE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuYmluZCh2YWx1ZSkpKTtcbn0gLy8gVGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9ibG9iLzY4MGU5ZTVlNDg4ZjIyYWFjMjc1OTlhNTdkYzg0NGE2MzE1OTI4ZGQvaW5kZXguanNcbi8vIG9yaWdpbmFsIG5vdGljZTpcblxuLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuXG5cbmZ1bmN0aW9uIGNvbXBhcmUoYSwgYikge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHggPSBhLmxlbmd0aDtcbiAgdmFyIHkgPSBiLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gTWF0aC5taW4oeCwgeSk7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICB4ID0gYVtpXTtcbiAgICAgIHkgPSBiW2ldO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG5cbiAgaWYgKHkgPCB4KSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxudmFyIE9OTFlfRU5VTUVSQUJMRSA9IHVuZGVmaW5lZDtcbnZhciBrU3RyaWN0ID0gdHJ1ZTtcbnZhciBrTG9vc2UgPSBmYWxzZTtcbnZhciBrTm9JdGVyYXRvciA9IDA7XG52YXIga0lzQXJyYXkgPSAxO1xudmFyIGtJc1NldCA9IDI7XG52YXIga0lzTWFwID0gMzsgLy8gQ2hlY2sgaWYgdGhleSBoYXZlIHRoZSBzYW1lIHNvdXJjZSBhbmQgZmxhZ3NcblxuZnVuY3Rpb24gYXJlU2ltaWxhclJlZ0V4cHMoYSwgYikge1xuICByZXR1cm4gcmVnZXhGbGFnc1N1cHBvcnRlZCA/IGEuc291cmNlID09PSBiLnNvdXJjZSAmJiBhLmZsYWdzID09PSBiLmZsYWdzIDogUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpID09PSBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYik7XG59XG5cbmZ1bmN0aW9uIGFyZVNpbWlsYXJGbG9hdEFycmF5cyhhLCBiKSB7XG4gIGlmIChhLmJ5dGVMZW5ndGggIT09IGIuYnl0ZUxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAodmFyIG9mZnNldCA9IDA7IG9mZnNldCA8IGEuYnl0ZUxlbmd0aDsgb2Zmc2V0KyspIHtcbiAgICBpZiAoYVtvZmZzZXRdICE9PSBiW29mZnNldF0pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gYXJlU2ltaWxhclR5cGVkQXJyYXlzKGEsIGIpIHtcbiAgaWYgKGEuYnl0ZUxlbmd0aCAhPT0gYi5ieXRlTGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGNvbXBhcmUobmV3IFVpbnQ4QXJyYXkoYS5idWZmZXIsIGEuYnl0ZU9mZnNldCwgYS5ieXRlTGVuZ3RoKSwgbmV3IFVpbnQ4QXJyYXkoYi5idWZmZXIsIGIuYnl0ZU9mZnNldCwgYi5ieXRlTGVuZ3RoKSkgPT09IDA7XG59XG5cbmZ1bmN0aW9uIGFyZUVxdWFsQXJyYXlCdWZmZXJzKGJ1ZjEsIGJ1ZjIpIHtcbiAgcmV0dXJuIGJ1ZjEuYnl0ZUxlbmd0aCA9PT0gYnVmMi5ieXRlTGVuZ3RoICYmIGNvbXBhcmUobmV3IFVpbnQ4QXJyYXkoYnVmMSksIG5ldyBVaW50OEFycmF5KGJ1ZjIpKSA9PT0gMDtcbn1cblxuZnVuY3Rpb24gaXNFcXVhbEJveGVkUHJpbWl0aXZlKHZhbDEsIHZhbDIpIHtcbiAgaWYgKGlzTnVtYmVyT2JqZWN0KHZhbDEpKSB7XG4gICAgcmV0dXJuIGlzTnVtYmVyT2JqZWN0KHZhbDIpICYmIG9iamVjdElzKE51bWJlci5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDEpLCBOdW1iZXIucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh2YWwyKSk7XG4gIH1cblxuICBpZiAoaXNTdHJpbmdPYmplY3QodmFsMSkpIHtcbiAgICByZXR1cm4gaXNTdHJpbmdPYmplY3QodmFsMikgJiYgU3RyaW5nLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodmFsMSkgPT09IFN0cmluZy5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDIpO1xuICB9XG5cbiAgaWYgKGlzQm9vbGVhbk9iamVjdCh2YWwxKSkge1xuICAgIHJldHVybiBpc0Jvb2xlYW5PYmplY3QodmFsMikgJiYgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDEpID09PSBCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodmFsMik7XG4gIH1cblxuICBpZiAoaXNCaWdJbnRPYmplY3QodmFsMSkpIHtcbiAgICByZXR1cm4gaXNCaWdJbnRPYmplY3QodmFsMikgJiYgQmlnSW50LnByb3RvdHlwZS52YWx1ZU9mLmNhbGwodmFsMSkgPT09IEJpZ0ludC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDIpO1xuICB9XG5cbiAgcmV0dXJuIGlzU3ltYm9sT2JqZWN0KHZhbDIpICYmIFN5bWJvbC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKHZhbDEpID09PSBTeW1ib2wucHJvdG90eXBlLnZhbHVlT2YuY2FsbCh2YWwyKTtcbn0gLy8gTm90ZXM6IFR5cGUgdGFncyBhcmUgaGlzdG9yaWNhbCBbW0NsYXNzXV0gcHJvcGVydGllcyB0aGF0IGNhbiBiZSBzZXQgYnlcbi8vIEZ1bmN0aW9uVGVtcGxhdGU6OlNldENsYXNzTmFtZSgpIGluIEMrKyBvciBTeW1ib2wudG9TdHJpbmdUYWcgaW4gSlNcbi8vIGFuZCByZXRyaWV2ZWQgdXNpbmcgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikgaW4gSlNcbi8vIFNlZSBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nXG4vLyBmb3IgYSBsaXN0IG9mIHRhZ3MgcHJlLWRlZmluZWQgaW4gdGhlIHNwZWMuXG4vLyBUaGVyZSBhcmUgc29tZSB1bnNwZWNpZmllZCB0YWdzIGluIHRoZSB3aWxkIHRvbyAoZS5nLiB0eXBlZCBhcnJheSB0YWdzKS5cbi8vIFNpbmNlIHRhZ3MgY2FuIGJlIGFsdGVyZWQsIHRoZXkgb25seSBzZXJ2ZSBmYXN0IGZhaWx1cmVzXG4vL1xuLy8gVHlwZWQgYXJyYXlzIGFuZCBidWZmZXJzIGFyZSBjaGVja2VkIGJ5IGNvbXBhcmluZyB0aGUgY29udGVudCBpbiB0aGVpclxuLy8gdW5kZXJseWluZyBBcnJheUJ1ZmZlci4gVGhpcyBvcHRpbWl6YXRpb24gcmVxdWlyZXMgdGhhdCBpdCdzXG4vLyByZWFzb25hYmxlIHRvIGludGVycHJldCB0aGVpciB1bmRlcmx5aW5nIG1lbW9yeSBpbiB0aGUgc2FtZSB3YXksXG4vLyB3aGljaCBpcyBjaGVja2VkIGJ5IGNvbXBhcmluZyB0aGVpciB0eXBlIHRhZ3MuXG4vLyAoZS5nLiBhIFVpbnQ4QXJyYXkgYW5kIGEgVWludDE2QXJyYXkgd2l0aCB0aGUgc2FtZSBtZW1vcnkgY29udGVudFxuLy8gY291bGQgc3RpbGwgYmUgZGlmZmVyZW50IGJlY2F1c2UgdGhleSB3aWxsIGJlIGludGVycHJldGVkIGRpZmZlcmVudGx5KS5cbi8vXG4vLyBGb3Igc3RyaWN0IGNvbXBhcmlzb24sIG9iamVjdHMgc2hvdWxkIGhhdmVcbi8vIGEpIFRoZSBzYW1lIGJ1aWx0LWluIHR5cGUgdGFnc1xuLy8gYikgVGhlIHNhbWUgcHJvdG90eXBlcy5cblxuXG5mdW5jdGlvbiBpbm5lckRlZXBFcXVhbCh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW9zKSB7XG4gIC8vIEFsbCBpZGVudGljYWwgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBhcyBkZXRlcm1pbmVkIGJ5ID09PS5cbiAgaWYgKHZhbDEgPT09IHZhbDIpIHtcbiAgICBpZiAodmFsMSAhPT0gMCkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIHN0cmljdCA/IG9iamVjdElzKHZhbDEsIHZhbDIpIDogdHJ1ZTtcbiAgfSAvLyBDaGVjayBtb3JlIGNsb3NlbHkgaWYgdmFsMSBhbmQgdmFsMiBhcmUgZXF1YWwuXG5cblxuICBpZiAoc3RyaWN0KSB7XG4gICAgaWYgKF90eXBlb2YodmFsMSkgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIHZhbDEgPT09ICdudW1iZXInICYmIG51bWJlcklzTmFOKHZhbDEpICYmIG51bWJlcklzTmFOKHZhbDIpO1xuICAgIH1cblxuICAgIGlmIChfdHlwZW9mKHZhbDIpICE9PSAnb2JqZWN0JyB8fCB2YWwxID09PSBudWxsIHx8IHZhbDIgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmdldFByb3RvdHlwZU9mKHZhbDEpICE9PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsMikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHZhbDEgPT09IG51bGwgfHwgX3R5cGVvZih2YWwxKSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIGlmICh2YWwyID09PSBudWxsIHx8IF90eXBlb2YodmFsMikgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgICAgICAgcmV0dXJuIHZhbDEgPT0gdmFsMjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh2YWwyID09PSBudWxsIHx8IF90eXBlb2YodmFsMikgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdmFyIHZhbDFUYWcgPSBvYmplY3RUb1N0cmluZyh2YWwxKTtcbiAgdmFyIHZhbDJUYWcgPSBvYmplY3RUb1N0cmluZyh2YWwyKTtcblxuICBpZiAodmFsMVRhZyAhPT0gdmFsMlRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbDEpKSB7XG4gICAgLy8gQ2hlY2sgZm9yIHNwYXJzZSBhcnJheXMgYW5kIGdlbmVyYWwgZmFzdCBwYXRoXG4gICAgaWYgKHZhbDEubGVuZ3RoICE9PSB2YWwyLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBrZXlzMSA9IGdldE93bk5vbkluZGV4UHJvcGVydGllcyh2YWwxLCBPTkxZX0VOVU1FUkFCTEUpO1xuICAgIHZhciBrZXlzMiA9IGdldE93bk5vbkluZGV4UHJvcGVydGllcyh2YWwyLCBPTkxZX0VOVU1FUkFCTEUpO1xuXG4gICAgaWYgKGtleXMxLmxlbmd0aCAhPT0ga2V5czIubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleUNoZWNrKHZhbDEsIHZhbDIsIHN0cmljdCwgbWVtb3MsIGtJc0FycmF5LCBrZXlzMSk7XG4gIH0gLy8gW2Jyb3dzZXJpZnldIFRoaXMgdHJpZ2dlcnMgb24gY2VydGFpbiB0eXBlcyBpbiBJRSAoTWFwL1NldCkgc28gd2UgZG9uJ3RcbiAgLy8gd2FuJ3QgdG8gZWFybHkgcmV0dXJuIG91dCBvZiB0aGUgcmVzdCBvZiB0aGUgY2hlY2tzLiBIb3dldmVyIHdlIGNhbiBjaGVja1xuICAvLyBpZiB0aGUgc2Vjb25kIHZhbHVlIGlzIG9uZSBvZiB0aGVzZSB2YWx1ZXMgYW5kIHRoZSBmaXJzdCBpc24ndC5cblxuXG4gIGlmICh2YWwxVGFnID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgIC8vIHJldHVybiBrZXlDaGVjayh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW9zLCBrTm9JdGVyYXRvcik7XG4gICAgaWYgKCFpc01hcCh2YWwxKSAmJiBpc01hcCh2YWwyKSB8fCAhaXNTZXQodmFsMSkgJiYgaXNTZXQodmFsMikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBpZiAoaXNEYXRlKHZhbDEpKSB7XG4gICAgaWYgKCFpc0RhdGUodmFsMikgfHwgRGF0ZS5wcm90b3R5cGUuZ2V0VGltZS5jYWxsKHZhbDEpICE9PSBEYXRlLnByb3RvdHlwZS5nZXRUaW1lLmNhbGwodmFsMikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNSZWdFeHAodmFsMSkpIHtcbiAgICBpZiAoIWlzUmVnRXhwKHZhbDIpIHx8ICFhcmVTaW1pbGFyUmVnRXhwcyh2YWwxLCB2YWwyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc05hdGl2ZUVycm9yKHZhbDEpIHx8IHZhbDEgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgIC8vIERvIG5vdCBjb21wYXJlIHRoZSBzdGFjayBhcyBpdCBtaWdodCBkaWZmZXIgZXZlbiB0aG91Z2ggdGhlIGVycm9yIGl0c2VsZlxuICAgIC8vIGlzIG90aGVyd2lzZSBpZGVudGljYWwuXG4gICAgaWYgKHZhbDEubWVzc2FnZSAhPT0gdmFsMi5tZXNzYWdlIHx8IHZhbDEubmFtZSAhPT0gdmFsMi5uYW1lKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KHZhbDEpKSB7XG4gICAgaWYgKCFzdHJpY3QgJiYgKGlzRmxvYXQzMkFycmF5KHZhbDEpIHx8IGlzRmxvYXQ2NEFycmF5KHZhbDEpKSkge1xuICAgICAgaWYgKCFhcmVTaW1pbGFyRmxvYXRBcnJheXModmFsMSwgdmFsMikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWFyZVNpbWlsYXJUeXBlZEFycmF5cyh2YWwxLCB2YWwyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gLy8gQnVmZmVyLmNvbXBhcmUgcmV0dXJucyB0cnVlLCBzbyB2YWwxLmxlbmd0aCA9PT0gdmFsMi5sZW5ndGguIElmIHRoZXkgYm90aFxuICAgIC8vIG9ubHkgY29udGFpbiBudW1lcmljIGtleXMsIHdlIGRvbid0IG5lZWQgdG8gZXhhbSBmdXJ0aGVyIHRoYW4gY2hlY2tpbmdcbiAgICAvLyB0aGUgc3ltYm9scy5cblxuXG4gICAgdmFyIF9rZXlzID0gZ2V0T3duTm9uSW5kZXhQcm9wZXJ0aWVzKHZhbDEsIE9OTFlfRU5VTUVSQUJMRSk7XG5cbiAgICB2YXIgX2tleXMyID0gZ2V0T3duTm9uSW5kZXhQcm9wZXJ0aWVzKHZhbDIsIE9OTFlfRU5VTUVSQUJMRSk7XG5cbiAgICBpZiAoX2tleXMubGVuZ3RoICE9PSBfa2V5czIubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleUNoZWNrKHZhbDEsIHZhbDIsIHN0cmljdCwgbWVtb3MsIGtOb0l0ZXJhdG9yLCBfa2V5cyk7XG4gIH0gZWxzZSBpZiAoaXNTZXQodmFsMSkpIHtcbiAgICBpZiAoIWlzU2V0KHZhbDIpIHx8IHZhbDEuc2l6ZSAhPT0gdmFsMi5zaXplKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleUNoZWNrKHZhbDEsIHZhbDIsIHN0cmljdCwgbWVtb3MsIGtJc1NldCk7XG4gIH0gZWxzZSBpZiAoaXNNYXAodmFsMSkpIHtcbiAgICBpZiAoIWlzTWFwKHZhbDIpIHx8IHZhbDEuc2l6ZSAhPT0gdmFsMi5zaXplKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleUNoZWNrKHZhbDEsIHZhbDIsIHN0cmljdCwgbWVtb3MsIGtJc01hcCk7XG4gIH0gZWxzZSBpZiAoaXNBbnlBcnJheUJ1ZmZlcih2YWwxKSkge1xuICAgIGlmICghYXJlRXF1YWxBcnJheUJ1ZmZlcnModmFsMSwgdmFsMikpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNCb3hlZFByaW1pdGl2ZSh2YWwxKSAmJiAhaXNFcXVhbEJveGVkUHJpbWl0aXZlKHZhbDEsIHZhbDIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGtleUNoZWNrKHZhbDEsIHZhbDIsIHN0cmljdCwgbWVtb3MsIGtOb0l0ZXJhdG9yKTtcbn1cblxuZnVuY3Rpb24gZ2V0RW51bWVyYWJsZXModmFsLCBrZXlzKSB7XG4gIHJldHVybiBrZXlzLmZpbHRlcihmdW5jdGlvbiAoaykge1xuICAgIHJldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZSh2YWwsIGspO1xuICB9KTtcbn1cblxuZnVuY3Rpb24ga2V5Q2hlY2sodmFsMSwgdmFsMiwgc3RyaWN0LCBtZW1vcywgaXRlcmF0aW9uVHlwZSwgYUtleXMpIHtcbiAgLy8gRm9yIGFsbCByZW1haW5pbmcgT2JqZWN0IHBhaXJzLCBpbmNsdWRpbmcgQXJyYXksIG9iamVjdHMgYW5kIE1hcHMsXG4gIC8vIGVxdWl2YWxlbmNlIGlzIGRldGVybWluZWQgYnkgaGF2aW5nOlxuICAvLyBhKSBUaGUgc2FtZSBudW1iZXIgb2Ygb3duZWQgZW51bWVyYWJsZSBwcm9wZXJ0aWVzXG4gIC8vIGIpIFRoZSBzYW1lIHNldCBvZiBrZXlzL2luZGV4ZXMgKGFsdGhvdWdoIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBvcmRlcilcbiAgLy8gYykgRXF1aXZhbGVudCB2YWx1ZXMgZm9yIGV2ZXJ5IGNvcnJlc3BvbmRpbmcga2V5L2luZGV4XG4gIC8vIGQpIEZvciBTZXRzIGFuZCBNYXBzLCBlcXVhbCBjb250ZW50c1xuICAvLyBOb3RlOiB0aGlzIGFjY291bnRzIGZvciBib3RoIG5hbWVkIGFuZCBpbmRleGVkIHByb3BlcnRpZXMgb24gQXJyYXlzLlxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gNSkge1xuICAgIGFLZXlzID0gT2JqZWN0LmtleXModmFsMSk7XG4gICAgdmFyIGJLZXlzID0gT2JqZWN0LmtleXModmFsMik7IC8vIFRoZSBwYWlyIG11c3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2Ygb3duZWQgcHJvcGVydGllcy5cblxuICAgIGlmIChhS2V5cy5sZW5ndGggIT09IGJLZXlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSAvLyBDaGVhcCBrZXkgdGVzdFxuXG5cbiAgdmFyIGkgPSAwO1xuXG4gIGZvciAoOyBpIDwgYUtleXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoIWhhc093blByb3BlcnR5KHZhbDIsIGFLZXlzW2ldKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChzdHJpY3QgJiYgYXJndW1lbnRzLmxlbmd0aCA9PT0gNSkge1xuICAgIHZhciBzeW1ib2xLZXlzQSA9IG9iamVjdEdldE93blByb3BlcnR5U3ltYm9scyh2YWwxKTtcblxuICAgIGlmIChzeW1ib2xLZXlzQS5sZW5ndGggIT09IDApIHtcbiAgICAgIHZhciBjb3VudCA9IDA7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzeW1ib2xLZXlzQS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIga2V5ID0gc3ltYm9sS2V5c0FbaV07XG5cbiAgICAgICAgaWYgKHByb3BlcnR5SXNFbnVtZXJhYmxlKHZhbDEsIGtleSkpIHtcbiAgICAgICAgICBpZiAoIXByb3BlcnR5SXNFbnVtZXJhYmxlKHZhbDIsIGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhS2V5cy5wdXNoKGtleSk7XG4gICAgICAgICAgY291bnQrKztcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUlzRW51bWVyYWJsZSh2YWwyLCBrZXkpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciBzeW1ib2xLZXlzQiA9IG9iamVjdEdldE93blByb3BlcnR5U3ltYm9scyh2YWwyKTtcblxuICAgICAgaWYgKHN5bWJvbEtleXNBLmxlbmd0aCAhPT0gc3ltYm9sS2V5c0IubGVuZ3RoICYmIGdldEVudW1lcmFibGVzKHZhbDIsIHN5bWJvbEtleXNCKS5sZW5ndGggIT09IGNvdW50KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIF9zeW1ib2xLZXlzQiA9IG9iamVjdEdldE93blByb3BlcnR5U3ltYm9scyh2YWwyKTtcblxuICAgICAgaWYgKF9zeW1ib2xLZXlzQi5sZW5ndGggIT09IDAgJiYgZ2V0RW51bWVyYWJsZXModmFsMiwgX3N5bWJvbEtleXNCKS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChhS2V5cy5sZW5ndGggPT09IDAgJiYgKGl0ZXJhdGlvblR5cGUgPT09IGtOb0l0ZXJhdG9yIHx8IGl0ZXJhdGlvblR5cGUgPT09IGtJc0FycmF5ICYmIHZhbDEubGVuZ3RoID09PSAwIHx8IHZhbDEuc2l6ZSA9PT0gMCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyBVc2UgbWVtb3MgdG8gaGFuZGxlIGN5Y2xlcy5cblxuXG4gIGlmIChtZW1vcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbWVtb3MgPSB7XG4gICAgICB2YWwxOiBuZXcgTWFwKCksXG4gICAgICB2YWwyOiBuZXcgTWFwKCksXG4gICAgICBwb3NpdGlvbjogMFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgLy8gV2UgcHJldmVudCB1cCB0byB0d28gbWFwLmhhcyh4KSBjYWxscyBieSBkaXJlY3RseSByZXRyaWV2aW5nIHRoZSB2YWx1ZVxuICAgIC8vIGFuZCBjaGVja2luZyBmb3IgdW5kZWZpbmVkLiBUaGUgbWFwIGNhbiBvbmx5IGNvbnRhaW4gbnVtYmVycywgc28gaXQgaXNcbiAgICAvLyBzYWZlIHRvIGNoZWNrIGZvciB1bmRlZmluZWQgb25seS5cbiAgICB2YXIgdmFsMk1lbW9BID0gbWVtb3MudmFsMS5nZXQodmFsMSk7XG5cbiAgICBpZiAodmFsMk1lbW9BICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciB2YWwyTWVtb0IgPSBtZW1vcy52YWwyLmdldCh2YWwyKTtcblxuICAgICAgaWYgKHZhbDJNZW1vQiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB2YWwyTWVtb0EgPT09IHZhbDJNZW1vQjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtZW1vcy5wb3NpdGlvbisrO1xuICB9XG5cbiAgbWVtb3MudmFsMS5zZXQodmFsMSwgbWVtb3MucG9zaXRpb24pO1xuICBtZW1vcy52YWwyLnNldCh2YWwyLCBtZW1vcy5wb3NpdGlvbik7XG4gIHZhciBhcmVFcSA9IG9iakVxdWl2KHZhbDEsIHZhbDIsIHN0cmljdCwgYUtleXMsIG1lbW9zLCBpdGVyYXRpb25UeXBlKTtcbiAgbWVtb3MudmFsMS5kZWxldGUodmFsMSk7XG4gIG1lbW9zLnZhbDIuZGVsZXRlKHZhbDIpO1xuICByZXR1cm4gYXJlRXE7XG59XG5cbmZ1bmN0aW9uIHNldEhhc0VxdWFsRWxlbWVudChzZXQsIHZhbDEsIHN0cmljdCwgbWVtbykge1xuICAvLyBHbyBsb29raW5nLlxuICB2YXIgc2V0VmFsdWVzID0gYXJyYXlGcm9tU2V0KHNldCk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXRWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdmFsMiA9IHNldFZhbHVlc1tpXTtcblxuICAgIGlmIChpbm5lckRlZXBFcXVhbCh2YWwxLCB2YWwyLCBzdHJpY3QsIG1lbW8pKSB7XG4gICAgICAvLyBSZW1vdmUgdGhlIG1hdGNoaW5nIGVsZW1lbnQgdG8gbWFrZSBzdXJlIHdlIGRvIG5vdCBjaGVjayB0aGF0IGFnYWluLlxuICAgICAgc2V0LmRlbGV0ZSh2YWwyKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn0gLy8gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvRXF1YWxpdHlfY29tcGFyaXNvbnNfYW5kX3NhbWVuZXNzI0xvb3NlX2VxdWFsaXR5X3VzaW5nXG4vLyBTYWRseSBpdCBpcyBub3QgcG9zc2libGUgdG8gZGV0ZWN0IGNvcnJlc3BvbmRpbmcgdmFsdWVzIHByb3Blcmx5IGluIGNhc2UgdGhlXG4vLyB0eXBlIGlzIGEgc3RyaW5nLCBudW1iZXIsIGJpZ2ludCBvciBib29sZWFuLiBUaGUgcmVhc29uIGlzIHRoYXQgdGhvc2UgdmFsdWVzXG4vLyBjYW4gbWF0Y2ggbG90cyBvZiBkaWZmZXJlbnQgc3RyaW5nIHZhbHVlcyAoZS5nLiwgMW4gPT0gJyswMDAwMScpLlxuXG5cbmZ1bmN0aW9uIGZpbmRMb29zZU1hdGNoaW5nUHJpbWl0aXZlcyhwcmltKSB7XG4gIHN3aXRjaCAoX3R5cGVvZihwcmltKSkge1xuICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICByZXR1cm4gbnVsbDtcblxuICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAvLyBPbmx5IHBhc3MgaW4gbnVsbCBhcyBvYmplY3QhXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuXG4gICAgY2FzZSAnc3ltYm9sJzpcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBwcmltID0gK3ByaW07XG4gICAgLy8gTG9vc2UgZXF1YWwgZW50cmllcyBleGlzdCBvbmx5IGlmIHRoZSBzdHJpbmcgaXMgcG9zc2libGUgdG8gY29udmVydCB0b1xuICAgIC8vIGEgcmVndWxhciBudW1iZXIgYW5kIG5vdCBOYU4uXG4gICAgLy8gRmFsbCB0aHJvdWdoXG5cbiAgICBjYXNlICdudW1iZXInOlxuICAgICAgaWYgKG51bWJlcklzTmFOKHByaW0pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIHNldE1pZ2h0SGF2ZUxvb3NlUHJpbShhLCBiLCBwcmltKSB7XG4gIHZhciBhbHRWYWx1ZSA9IGZpbmRMb29zZU1hdGNoaW5nUHJpbWl0aXZlcyhwcmltKTtcbiAgaWYgKGFsdFZhbHVlICE9IG51bGwpIHJldHVybiBhbHRWYWx1ZTtcbiAgcmV0dXJuIGIuaGFzKGFsdFZhbHVlKSAmJiAhYS5oYXMoYWx0VmFsdWUpO1xufVxuXG5mdW5jdGlvbiBtYXBNaWdodEhhdmVMb29zZVByaW0oYSwgYiwgcHJpbSwgaXRlbSwgbWVtbykge1xuICB2YXIgYWx0VmFsdWUgPSBmaW5kTG9vc2VNYXRjaGluZ1ByaW1pdGl2ZXMocHJpbSk7XG5cbiAgaWYgKGFsdFZhbHVlICE9IG51bGwpIHtcbiAgICByZXR1cm4gYWx0VmFsdWU7XG4gIH1cblxuICB2YXIgY3VyQiA9IGIuZ2V0KGFsdFZhbHVlKTtcblxuICBpZiAoY3VyQiA9PT0gdW5kZWZpbmVkICYmICFiLmhhcyhhbHRWYWx1ZSkgfHwgIWlubmVyRGVlcEVxdWFsKGl0ZW0sIGN1ckIsIGZhbHNlLCBtZW1vKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhYS5oYXMoYWx0VmFsdWUpICYmIGlubmVyRGVlcEVxdWFsKGl0ZW0sIGN1ckIsIGZhbHNlLCBtZW1vKTtcbn1cblxuZnVuY3Rpb24gc2V0RXF1aXYoYSwgYiwgc3RyaWN0LCBtZW1vKSB7XG4gIC8vIFRoaXMgaXMgYSBsYXppbHkgaW5pdGlhdGVkIFNldCBvZiBlbnRyaWVzIHdoaWNoIGhhdmUgdG8gYmUgY29tcGFyZWRcbiAgLy8gcGFpcndpc2UuXG4gIHZhciBzZXQgPSBudWxsO1xuICB2YXIgYVZhbHVlcyA9IGFycmF5RnJvbVNldChhKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGFWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdmFsID0gYVZhbHVlc1tpXTsgLy8gTm90ZTogQ2hlY2tpbmcgZm9yIHRoZSBvYmplY3RzIGZpcnN0IGltcHJvdmVzIHRoZSBwZXJmb3JtYW5jZSBmb3Igb2JqZWN0XG4gICAgLy8gaGVhdnkgc2V0cyBidXQgaXQgaXMgYSBtaW5vciBzbG93IGRvd24gZm9yIHByaW1pdGl2ZXMuIEFzIHRoZXkgYXJlIGZhc3RcbiAgICAvLyB0byBjaGVjayB0aGlzIGltcHJvdmVzIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIGluc3RlYWQuXG5cbiAgICBpZiAoX3R5cGVvZih2YWwpID09PSAnb2JqZWN0JyAmJiB2YWwgIT09IG51bGwpIHtcbiAgICAgIGlmIChzZXQgPT09IG51bGwpIHtcbiAgICAgICAgc2V0ID0gbmV3IFNldCgpO1xuICAgICAgfSAvLyBJZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGRvZXNuJ3QgZXhpc3QgaW4gdGhlIHNlY29uZCBzZXQgaXRzIGFuIG5vdCBudWxsXG4gICAgICAvLyBvYmplY3QgKG9yIG5vbiBzdHJpY3Qgb25seTogYSBub3QgbWF0Y2hpbmcgcHJpbWl0aXZlKSB3ZSdsbCBuZWVkIHRvIGdvXG4gICAgICAvLyBodW50aW5nIGZvciBzb21ldGhpbmcgdGhhdHMgZGVlcC0oc3RyaWN0LSllcXVhbCB0byBpdC4gVG8gbWFrZSB0aGlzXG4gICAgICAvLyBPKG4gbG9nIG4pIGNvbXBsZXhpdHkgd2UgaGF2ZSB0byBjb3B5IHRoZXNlIHZhbHVlcyBpbiBhIG5ldyBzZXQgZmlyc3QuXG5cblxuICAgICAgc2V0LmFkZCh2YWwpO1xuICAgIH0gZWxzZSBpZiAoIWIuaGFzKHZhbCkpIHtcbiAgICAgIGlmIChzdHJpY3QpIHJldHVybiBmYWxzZTsgLy8gRmFzdCBwYXRoIHRvIGRldGVjdCBtaXNzaW5nIHN0cmluZywgc3ltYm9sLCB1bmRlZmluZWQgYW5kIG51bGwgdmFsdWVzLlxuXG4gICAgICBpZiAoIXNldE1pZ2h0SGF2ZUxvb3NlUHJpbShhLCBiLCB2YWwpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNldCA9PT0gbnVsbCkge1xuICAgICAgICBzZXQgPSBuZXcgU2V0KCk7XG4gICAgICB9XG5cbiAgICAgIHNldC5hZGQodmFsKTtcbiAgICB9XG4gIH1cblxuICBpZiAoc2V0ICE9PSBudWxsKSB7XG4gICAgdmFyIGJWYWx1ZXMgPSBhcnJheUZyb21TZXQoYik7XG5cbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYlZhbHVlcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfdmFsID0gYlZhbHVlc1tfaV07IC8vIFdlIGhhdmUgdG8gY2hlY2sgaWYgYSBwcmltaXRpdmUgdmFsdWUgaXMgYWxyZWFkeVxuICAgICAgLy8gbWF0Y2hpbmcgYW5kIG9ubHkgaWYgaXQncyBub3QsIGdvIGh1bnRpbmcgZm9yIGl0LlxuXG4gICAgICBpZiAoX3R5cGVvZihfdmFsKSA9PT0gJ29iamVjdCcgJiYgX3ZhbCAhPT0gbnVsbCkge1xuICAgICAgICBpZiAoIXNldEhhc0VxdWFsRWxlbWVudChzZXQsIF92YWwsIHN0cmljdCwgbWVtbykpIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiAhYS5oYXMoX3ZhbCkgJiYgIXNldEhhc0VxdWFsRWxlbWVudChzZXQsIF92YWwsIHN0cmljdCwgbWVtbykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzZXQuc2l6ZSA9PT0gMDtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBtYXBIYXNFcXVhbEVudHJ5KHNldCwgbWFwLCBrZXkxLCBpdGVtMSwgc3RyaWN0LCBtZW1vKSB7XG4gIC8vIFRvIGJlIGFibGUgdG8gaGFuZGxlIGNhc2VzIGxpa2U6XG4gIC8vICAgTWFwKFtbe30sICdhJ10sIFt7fSwgJ2InXV0pIHZzIE1hcChbW3t9LCAnYiddLCBbe30sICdhJ11dKVxuICAvLyAuLi4gd2UgbmVlZCB0byBjb25zaWRlciAqYWxsKiBtYXRjaGluZyBrZXlzLCBub3QganVzdCB0aGUgZmlyc3Qgd2UgZmluZC5cbiAgdmFyIHNldFZhbHVlcyA9IGFycmF5RnJvbVNldChzZXQpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2V0VmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleTIgPSBzZXRWYWx1ZXNbaV07XG5cbiAgICBpZiAoaW5uZXJEZWVwRXF1YWwoa2V5MSwga2V5Miwgc3RyaWN0LCBtZW1vKSAmJiBpbm5lckRlZXBFcXVhbChpdGVtMSwgbWFwLmdldChrZXkyKSwgc3RyaWN0LCBtZW1vKSkge1xuICAgICAgc2V0LmRlbGV0ZShrZXkyKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbWFwRXF1aXYoYSwgYiwgc3RyaWN0LCBtZW1vKSB7XG4gIHZhciBzZXQgPSBudWxsO1xuICB2YXIgYUVudHJpZXMgPSBhcnJheUZyb21NYXAoYSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhRW50cmllcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBfYUVudHJpZXMkaSA9IF9zbGljZWRUb0FycmF5KGFFbnRyaWVzW2ldLCAyKSxcbiAgICAgICAga2V5ID0gX2FFbnRyaWVzJGlbMF0sXG4gICAgICAgIGl0ZW0xID0gX2FFbnRyaWVzJGlbMV07XG5cbiAgICBpZiAoX3R5cGVvZihrZXkpID09PSAnb2JqZWN0JyAmJiBrZXkgIT09IG51bGwpIHtcbiAgICAgIGlmIChzZXQgPT09IG51bGwpIHtcbiAgICAgICAgc2V0ID0gbmV3IFNldCgpO1xuICAgICAgfVxuXG4gICAgICBzZXQuYWRkKGtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJ5IGRpcmVjdGx5IHJldHJpZXZpbmcgdGhlIHZhbHVlIHdlIHByZXZlbnQgYW5vdGhlciBiLmhhcyhrZXkpIGNoZWNrIGluXG4gICAgICAvLyBhbG1vc3QgYWxsIHBvc3NpYmxlIGNhc2VzLlxuICAgICAgdmFyIGl0ZW0yID0gYi5nZXQoa2V5KTtcblxuICAgICAgaWYgKGl0ZW0yID09PSB1bmRlZmluZWQgJiYgIWIuaGFzKGtleSkgfHwgIWlubmVyRGVlcEVxdWFsKGl0ZW0xLCBpdGVtMiwgc3RyaWN0LCBtZW1vKSkge1xuICAgICAgICBpZiAoc3RyaWN0KSByZXR1cm4gZmFsc2U7IC8vIEZhc3QgcGF0aCB0byBkZXRlY3QgbWlzc2luZyBzdHJpbmcsIHN5bWJvbCwgdW5kZWZpbmVkIGFuZCBudWxsXG4gICAgICAgIC8vIGtleXMuXG5cbiAgICAgICAgaWYgKCFtYXBNaWdodEhhdmVMb29zZVByaW0oYSwgYiwga2V5LCBpdGVtMSwgbWVtbykpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBpZiAoc2V0ID09PSBudWxsKSB7XG4gICAgICAgICAgc2V0ID0gbmV3IFNldCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0LmFkZChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzZXQgIT09IG51bGwpIHtcbiAgICB2YXIgYkVudHJpZXMgPSBhcnJheUZyb21NYXAoYik7XG5cbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBiRW50cmllcy5sZW5ndGg7IF9pMisrKSB7XG4gICAgICB2YXIgX2JFbnRyaWVzJF9pID0gX3NsaWNlZFRvQXJyYXkoYkVudHJpZXNbX2kyXSwgMiksXG4gICAgICAgICAga2V5ID0gX2JFbnRyaWVzJF9pWzBdLFxuICAgICAgICAgIGl0ZW0gPSBfYkVudHJpZXMkX2lbMV07XG5cbiAgICAgIGlmIChfdHlwZW9mKGtleSkgPT09ICdvYmplY3QnICYmIGtleSAhPT0gbnVsbCkge1xuICAgICAgICBpZiAoIW1hcEhhc0VxdWFsRW50cnkoc2V0LCBhLCBrZXksIGl0ZW0sIHN0cmljdCwgbWVtbykpIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSBpZiAoIXN0cmljdCAmJiAoIWEuaGFzKGtleSkgfHwgIWlubmVyRGVlcEVxdWFsKGEuZ2V0KGtleSksIGl0ZW0sIGZhbHNlLCBtZW1vKSkgJiYgIW1hcEhhc0VxdWFsRW50cnkoc2V0LCBhLCBrZXksIGl0ZW0sIGZhbHNlLCBtZW1vKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldC5zaXplID09PSAwO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIG9iakVxdWl2KGEsIGIsIHN0cmljdCwga2V5cywgbWVtb3MsIGl0ZXJhdGlvblR5cGUpIHtcbiAgLy8gU2V0cyBhbmQgbWFwcyBkb24ndCBoYXZlIHRoZWlyIGVudHJpZXMgYWNjZXNzaWJsZSB2aWEgbm9ybWFsIG9iamVjdFxuICAvLyBwcm9wZXJ0aWVzLlxuICB2YXIgaSA9IDA7XG5cbiAgaWYgKGl0ZXJhdGlvblR5cGUgPT09IGtJc1NldCkge1xuICAgIGlmICghc2V0RXF1aXYoYSwgYiwgc3RyaWN0LCBtZW1vcykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXRlcmF0aW9uVHlwZSA9PT0ga0lzTWFwKSB7XG4gICAgaWYgKCFtYXBFcXVpdihhLCBiLCBzdHJpY3QsIG1lbW9zKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSBlbHNlIGlmIChpdGVyYXRpb25UeXBlID09PSBrSXNBcnJheSkge1xuICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5KGEsIGkpKSB7XG4gICAgICAgIGlmICghaGFzT3duUHJvcGVydHkoYiwgaSkgfHwgIWlubmVyRGVlcEVxdWFsKGFbaV0sIGJbaV0sIHN0cmljdCwgbWVtb3MpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGhhc093blByb3BlcnR5KGIsIGkpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEFycmF5IGlzIHNwYXJzZS5cbiAgICAgICAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMoYSk7XG5cbiAgICAgICAgZm9yICg7IGkgPCBrZXlzQS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBrZXkgPSBrZXlzQVtpXTtcblxuICAgICAgICAgIGlmICghaGFzT3duUHJvcGVydHkoYiwga2V5KSB8fCAhaW5uZXJEZWVwRXF1YWwoYVtrZXldLCBiW2tleV0sIHN0cmljdCwgbWVtb3MpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGtleXNBLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMoYikubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9IC8vIFRoZSBwYWlyIG11c3QgaGF2ZSBlcXVpdmFsZW50IHZhbHVlcyBmb3IgZXZlcnkgY29ycmVzcG9uZGluZyBrZXkuXG4gIC8vIFBvc3NpYmx5IGV4cGVuc2l2ZSBkZWVwIHRlc3Q6XG5cblxuICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBfa2V5ID0ga2V5c1tpXTtcblxuICAgIGlmICghaW5uZXJEZWVwRXF1YWwoYVtfa2V5XSwgYltfa2V5XSwgc3RyaWN0LCBtZW1vcykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaXNEZWVwRXF1YWwodmFsMSwgdmFsMikge1xuICByZXR1cm4gaW5uZXJEZWVwRXF1YWwodmFsMSwgdmFsMiwga0xvb3NlKTtcbn1cblxuZnVuY3Rpb24gaXNEZWVwU3RyaWN0RXF1YWwodmFsMSwgdmFsMikge1xuICByZXR1cm4gaW5uZXJEZWVwRXF1YWwodmFsMSwgdmFsMiwga1N0cmljdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc0RlZXBFcXVhbDogaXNEZWVwRXF1YWwsXG4gIGlzRGVlcFN0cmljdEVxdWFsOiBpc0RlZXBTdHJpY3RFcXVhbFxufTsiLCIndXNlIHN0cmljdCc7XG5cbnZhciBwb3NzaWJsZU5hbWVzID0gW1xuXHQnQmlnSW50NjRBcnJheScsXG5cdCdCaWdVaW50NjRBcnJheScsXG5cdCdGbG9hdDMyQXJyYXknLFxuXHQnRmxvYXQ2NEFycmF5Jyxcblx0J0ludDE2QXJyYXknLFxuXHQnSW50MzJBcnJheScsXG5cdCdJbnQ4QXJyYXknLFxuXHQnVWludDE2QXJyYXknLFxuXHQnVWludDMyQXJyYXknLFxuXHQnVWludDhBcnJheScsXG5cdCdVaW50OENsYW1wZWRBcnJheSdcbl07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gYXZhaWxhYmxlVHlwZWRBcnJheXMoKSB7XG5cdHZhciBvdXQgPSBbXTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBwb3NzaWJsZU5hbWVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0aWYgKHR5cGVvZiBnbG9iYWxbcG9zc2libGVOYW1lc1tpXV0gPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHBvc3NpYmxlTmFtZXNbaV07XG5cdFx0fVxuXHR9XG5cdHJldHVybiBvdXQ7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9iYXNlNDUnKVxuIiwiY29uc3QgY2hhcnNldCA9ICcwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVogJCUqKy0uLzonXG5jb25zdCBkaXZtb2QgPSAoeCwgeSkgPT4gW01hdGguZmxvb3IoeCAvIHkpLCB4ICUgeV1cblxuLy8gRW5jb2RlIGEgYnVmZmVyIChvciB1aW50OGFycmF5KSB0byBiYXNlNDUtZW5jb2RlZCBzdHJpbmdcbmNvbnN0IGVuY29kZSA9IChidWZmZXIpID0+IHtcbiAgaWYgKHR5cGVvZiAoYnVmZmVyKSA9PT0gJ3N0cmluZycpIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJ1ZmZlcilcbiAgbGV0IHJlcyA9ICcnXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSA9IGkgKyAyKSB7XG4gICAgaWYgKGJ1ZmZlci5sZW5ndGggLSBpID4gMSkge1xuICAgICAgY29uc3QgeCA9IChidWZmZXJbaV0gPDwgOCkgKyBidWZmZXJbaSArIDFdXG4gICAgICBjb25zdCBbZSwgcmVzdF0gPSBkaXZtb2QoeCwgNDUgKiA0NSlcbiAgICAgIGNvbnN0IFtkLCBjXSA9IGRpdm1vZChyZXN0LCA0NSlcbiAgICAgIHJlcyArPSBjaGFyc2V0W2NdICsgY2hhcnNldFtkXSArIGNoYXJzZXRbZV1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgW2QsIGNdID0gZGl2bW9kKGJ1ZmZlcltpXSwgNDUpXG4gICAgICByZXMgKz0gY2hhcnNldFtjXSArIGNoYXJzZXRbZF1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG4vLyBEZWNvZGUgYmFzZTQ1LWVuY29kZWQgaW5wdXRcbmNvbnN0IGRlY29kZSA9IChpbnB1dCkgPT4ge1xuICBjb25zdCBidWZmZXIgPSBBcnJheS5mcm9tKGlucHV0KS5tYXAoYyA9PiBjaGFyc2V0LmluZGV4T2YoYykpXG4gIGNvbnN0IHJlcyA9IFtdXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYnVmZmVyLmxlbmd0aDsgaSA9IGkgKyAzKSB7XG4gICAgaWYgKGJ1ZmZlci5sZW5ndGggLSBpID49IDMpIHtcbiAgICAgIGNvbnN0IHggPSBidWZmZXJbaV0gKyBidWZmZXJbaSArIDFdICogNDUgKyBidWZmZXJbaSArIDJdICogNDUgKiA0NVxuICAgICAgaWYgKHggPiAweEZGRkYpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBiYXNlNDUgc3RyaW5nXCIpXG4gICAgICB9XG4gICAgICByZXMucHVzaCguLi5kaXZtb2QoeCwgMjU2KSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgeCA9IGJ1ZmZlcltpXSArIGJ1ZmZlcltpICsgMV0gKiA0NVxuICAgICAgaWYgKHggPiAweEZGKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTQ1IHN0cmluZ1wiKVxuICAgICAgfVxuICAgICAgcmVzLnB1c2goeClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKHJlcylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGVuY29kZSxcbiAgZGVjb2RlXG59XG4iLCIndXNlIHN0cmljdCdcblxuZXhwb3J0cy5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuZXhwb3J0cy50b0J5dGVBcnJheSA9IHRvQnl0ZUFycmF5XG5leHBvcnRzLmZyb21CeXRlQXJyYXkgPSBmcm9tQnl0ZUFycmF5XG5cbnZhciBsb29rdXAgPSBbXVxudmFyIHJldkxvb2t1cCA9IFtdXG52YXIgQXJyID0gdHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnID8gVWludDhBcnJheSA6IEFycmF5XG5cbnZhciBjb2RlID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nXG5mb3IgKHZhciBpID0gMCwgbGVuID0gY29kZS5sZW5ndGg7IGkgPCBsZW47ICsraSkge1xuICBsb29rdXBbaV0gPSBjb2RlW2ldXG4gIHJldkxvb2t1cFtjb2RlLmNoYXJDb2RlQXQoaSldID0gaVxufVxuXG4vLyBTdXBwb3J0IGRlY29kaW5nIFVSTC1zYWZlIGJhc2U2NCBzdHJpbmdzLCBhcyBOb2RlLmpzIGRvZXMuXG4vLyBTZWU6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jhc2U2NCNVUkxfYXBwbGljYXRpb25zXG5yZXZMb29rdXBbJy0nLmNoYXJDb2RlQXQoMCldID0gNjJcbnJldkxvb2t1cFsnXycuY2hhckNvZGVBdCgwKV0gPSA2M1xuXG5mdW5jdGlvbiBnZXRMZW5zIChiNjQpIHtcbiAgdmFyIGxlbiA9IGI2NC5sZW5ndGhcblxuICBpZiAobGVuICUgNCA+IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQnKVxuICB9XG5cbiAgLy8gVHJpbSBvZmYgZXh0cmEgYnl0ZXMgYWZ0ZXIgcGxhY2Vob2xkZXIgYnl0ZXMgYXJlIGZvdW5kXG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2JlYXRnYW1taXQvYmFzZTY0LWpzL2lzc3Vlcy80MlxuICB2YXIgdmFsaWRMZW4gPSBiNjQuaW5kZXhPZignPScpXG4gIGlmICh2YWxpZExlbiA9PT0gLTEpIHZhbGlkTGVuID0gbGVuXG5cbiAgdmFyIHBsYWNlSG9sZGVyc0xlbiA9IHZhbGlkTGVuID09PSBsZW5cbiAgICA/IDBcbiAgICA6IDQgLSAodmFsaWRMZW4gJSA0KVxuXG4gIHJldHVybiBbdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbl1cbn1cblxuLy8gYmFzZTY0IGlzIDQvMyArIHVwIHRvIHR3byBjaGFyYWN0ZXJzIG9mIHRoZSBvcmlnaW5hbCBkYXRhXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChiNjQpIHtcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuICByZXR1cm4gKCh2YWxpZExlbiArIHBsYWNlSG9sZGVyc0xlbikgKiAzIC8gNCkgLSBwbGFjZUhvbGRlcnNMZW5cbn1cblxuZnVuY3Rpb24gX2J5dGVMZW5ndGggKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikge1xuICByZXR1cm4gKCh2YWxpZExlbiArIHBsYWNlSG9sZGVyc0xlbikgKiAzIC8gNCkgLSBwbGFjZUhvbGRlcnNMZW5cbn1cblxuZnVuY3Rpb24gdG9CeXRlQXJyYXkgKGI2NCkge1xuICB2YXIgdG1wXG4gIHZhciBsZW5zID0gZ2V0TGVucyhiNjQpXG4gIHZhciB2YWxpZExlbiA9IGxlbnNbMF1cbiAgdmFyIHBsYWNlSG9sZGVyc0xlbiA9IGxlbnNbMV1cblxuICB2YXIgYXJyID0gbmV3IEFycihfYnl0ZUxlbmd0aChiNjQsIHZhbGlkTGVuLCBwbGFjZUhvbGRlcnNMZW4pKVxuXG4gIHZhciBjdXJCeXRlID0gMFxuXG4gIC8vIGlmIHRoZXJlIGFyZSBwbGFjZWhvbGRlcnMsIG9ubHkgZ2V0IHVwIHRvIHRoZSBsYXN0IGNvbXBsZXRlIDQgY2hhcnNcbiAgdmFyIGxlbiA9IHBsYWNlSG9sZGVyc0xlbiA+IDBcbiAgICA/IHZhbGlkTGVuIC0gNFxuICAgIDogdmFsaWRMZW5cblxuICB2YXIgaVxuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTgpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCAxMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildIDw8IDYpIHxcbiAgICAgIHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMyldXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDE2KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gOCkgJiAweEZGXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAyKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA+PiA0KVxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgaWYgKHBsYWNlSG9sZGVyc0xlbiA9PT0gMSkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxMCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDQpIHxcbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA+PiAyKVxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gdHJpcGxldFRvQmFzZTY0IChudW0pIHtcbiAgcmV0dXJuIGxvb2t1cFtudW0gPj4gMTggJiAweDNGXSArXG4gICAgbG9va3VwW251bSA+PiAxMiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDYgJiAweDNGXSArXG4gICAgbG9va3VwW251bSAmIDB4M0ZdXG59XG5cbmZ1bmN0aW9uIGVuY29kZUNodW5rICh1aW50OCwgc3RhcnQsIGVuZCkge1xuICB2YXIgdG1wXG4gIHZhciBvdXRwdXQgPSBbXVxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykge1xuICAgIHRtcCA9XG4gICAgICAoKHVpbnQ4W2ldIDw8IDE2KSAmIDB4RkYwMDAwKSArXG4gICAgICAoKHVpbnQ4W2kgKyAxXSA8PCA4KSAmIDB4RkYwMCkgK1xuICAgICAgKHVpbnQ4W2kgKyAyXSAmIDB4RkYpXG4gICAgb3V0cHV0LnB1c2godHJpcGxldFRvQmFzZTY0KHRtcCkpXG4gIH1cbiAgcmV0dXJuIG91dHB1dC5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBmcm9tQnl0ZUFycmF5ICh1aW50OCkge1xuICB2YXIgdG1wXG4gIHZhciBsZW4gPSB1aW50OC5sZW5ndGhcbiAgdmFyIGV4dHJhQnl0ZXMgPSBsZW4gJSAzIC8vIGlmIHdlIGhhdmUgMSBieXRlIGxlZnQsIHBhZCAyIGJ5dGVzXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsodWludDgsIGksIChpICsgbWF4Q2h1bmtMZW5ndGgpID4gbGVuMiA/IGxlbjIgOiAoaSArIG1heENodW5rTGVuZ3RoKSkpXG4gIH1cblxuICAvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG4gIGlmIChleHRyYUJ5dGVzID09PSAxKSB7XG4gICAgdG1wID0gdWludDhbbGVuIC0gMV1cbiAgICBwYXJ0cy5wdXNoKFxuICAgICAgbG9va3VwW3RtcCA+PiAyXSArXG4gICAgICBsb29rdXBbKHRtcCA8PCA0KSAmIDB4M0ZdICtcbiAgICAgICc9PSdcbiAgICApXG4gIH0gZWxzZSBpZiAoZXh0cmFCeXRlcyA9PT0gMikge1xuICAgIHRtcCA9ICh1aW50OFtsZW4gLSAyXSA8PCA4KSArIHVpbnQ4W2xlbiAtIDFdXG4gICAgcGFydHMucHVzaChcbiAgICAgIGxvb2t1cFt0bXAgPj4gMTBdICtcbiAgICAgIGxvb2t1cFsodG1wID4+IDQpICYgMHgzRl0gK1xuICAgICAgbG9va3VwWyh0bXAgPDwgMikgJiAweDNGXSArXG4gICAgICAnPSdcbiAgICApXG4gIH1cblxuICByZXR1cm4gcGFydHMuam9pbignJylcbn1cbiIsIjsoZnVuY3Rpb24gKGdsb2JhbE9iamVjdCkge1xyXG4gICd1c2Ugc3RyaWN0JztcclxuXHJcbi8qXHJcbiAqICAgICAgYmlnbnVtYmVyLmpzIHY5LjAuMVxyXG4gKiAgICAgIEEgSmF2YVNjcmlwdCBsaWJyYXJ5IGZvciBhcmJpdHJhcnktcHJlY2lzaW9uIGFyaXRobWV0aWMuXHJcbiAqICAgICAgaHR0cHM6Ly9naXRodWIuY29tL01pa2VNY2wvYmlnbnVtYmVyLmpzXHJcbiAqICAgICAgQ29weXJpZ2h0IChjKSAyMDIwIE1pY2hhZWwgTWNsYXVnaGxpbiA8TThjaDg4bEBnbWFpbC5jb20+XHJcbiAqICAgICAgTUlUIExpY2Vuc2VkLlxyXG4gKlxyXG4gKiAgICAgIEJpZ051bWJlci5wcm90b3R5cGUgbWV0aG9kcyAgICAgfCAgQmlnTnVtYmVyIG1ldGhvZHNcclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBhYnNvbHV0ZVZhbHVlICAgICAgICAgICAgYWJzICAgIHwgIGNsb25lXHJcbiAqICAgICAgY29tcGFyZWRUbyAgICAgICAgICAgICAgICAgICAgICB8ICBjb25maWcgICAgICAgICAgICAgICBzZXRcclxuICogICAgICBkZWNpbWFsUGxhY2VzICAgICAgICAgICAgZHAgICAgIHwgICAgICBERUNJTUFMX1BMQUNFU1xyXG4gKiAgICAgIGRpdmlkZWRCeSAgICAgICAgICAgICAgICBkaXYgICAgfCAgICAgIFJPVU5ESU5HX01PREVcclxuICogICAgICBkaXZpZGVkVG9JbnRlZ2VyQnkgICAgICAgaWRpdiAgIHwgICAgICBFWFBPTkVOVElBTF9BVFxyXG4gKiAgICAgIGV4cG9uZW50aWF0ZWRCeSAgICAgICAgICBwb3cgICAgfCAgICAgIFJBTkdFXHJcbiAqICAgICAgaW50ZWdlclZhbHVlICAgICAgICAgICAgICAgICAgICB8ICAgICAgQ1JZUFRPXHJcbiAqICAgICAgaXNFcXVhbFRvICAgICAgICAgICAgICAgIGVxICAgICB8ICAgICAgTU9EVUxPX01PREVcclxuICogICAgICBpc0Zpbml0ZSAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICBQT1dfUFJFQ0lTSU9OXHJcbiAqICAgICAgaXNHcmVhdGVyVGhhbiAgICAgICAgICAgIGd0ICAgICB8ICAgICAgRk9STUFUXHJcbiAqICAgICAgaXNHcmVhdGVyVGhhbk9yRXF1YWxUbyAgIGd0ZSAgICB8ICAgICAgQUxQSEFCRVRcclxuICogICAgICBpc0ludGVnZXIgICAgICAgICAgICAgICAgICAgICAgIHwgIGlzQmlnTnVtYmVyXHJcbiAqICAgICAgaXNMZXNzVGhhbiAgICAgICAgICAgICAgIGx0ICAgICB8ICBtYXhpbXVtICAgICAgICAgICAgICBtYXhcclxuICogICAgICBpc0xlc3NUaGFuT3JFcXVhbFRvICAgICAgbHRlICAgIHwgIG1pbmltdW0gICAgICAgICAgICAgIG1pblxyXG4gKiAgICAgIGlzTmFOICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgcmFuZG9tXHJcbiAqICAgICAgaXNOZWdhdGl2ZSAgICAgICAgICAgICAgICAgICAgICB8ICBzdW1cclxuICogICAgICBpc1Bvc2l0aXZlICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBpc1plcm8gICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBtaW51cyAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBtb2R1bG8gICAgICAgICAgICAgICAgICAgbW9kICAgIHxcclxuICogICAgICBtdWx0aXBsaWVkQnkgICAgICAgICAgICAgdGltZXMgIHxcclxuICogICAgICBuZWdhdGVkICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBwbHVzICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBwcmVjaXNpb24gICAgICAgICAgICAgICAgc2QgICAgIHxcclxuICogICAgICBzaGlmdGVkQnkgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICBzcXVhcmVSb290ICAgICAgICAgICAgICAgc3FydCAgIHxcclxuICogICAgICB0b0V4cG9uZW50aWFsICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0ZpeGVkICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0Zvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0ZyYWN0aW9uICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b0pTT04gICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b051bWJlciAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b1ByZWNpc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB0b1N0cmluZyAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICogICAgICB2YWx1ZU9mICAgICAgICAgICAgICAgICAgICAgICAgIHxcclxuICpcclxuICovXHJcblxyXG5cclxuICB2YXIgQmlnTnVtYmVyLFxyXG4gICAgaXNOdW1lcmljID0gL14tPyg/OlxcZCsoPzpcXC5cXGQqKT98XFwuXFxkKykoPzplWystXT9cXGQrKT8kL2ksXHJcbiAgICBtYXRoY2VpbCA9IE1hdGguY2VpbCxcclxuICAgIG1hdGhmbG9vciA9IE1hdGguZmxvb3IsXHJcblxyXG4gICAgYmlnbnVtYmVyRXJyb3IgPSAnW0JpZ051bWJlciBFcnJvcl0gJyxcclxuICAgIHRvb01hbnlEaWdpdHMgPSBiaWdudW1iZXJFcnJvciArICdOdW1iZXIgcHJpbWl0aXZlIGhhcyBtb3JlIHRoYW4gMTUgc2lnbmlmaWNhbnQgZGlnaXRzOiAnLFxyXG5cclxuICAgIEJBU0UgPSAxZTE0LFxyXG4gICAgTE9HX0JBU0UgPSAxNCxcclxuICAgIE1BWF9TQUZFX0lOVEVHRVIgPSAweDFmZmZmZmZmZmZmZmZmLCAgICAgICAgIC8vIDJeNTMgLSAxXHJcbiAgICAvLyBNQVhfSU5UMzIgPSAweDdmZmZmZmZmLCAgICAgICAgICAgICAgICAgICAvLyAyXjMxIC0gMVxyXG4gICAgUE9XU19URU4gPSBbMSwgMTAsIDEwMCwgMWUzLCAxZTQsIDFlNSwgMWU2LCAxZTcsIDFlOCwgMWU5LCAxZTEwLCAxZTExLCAxZTEyLCAxZTEzXSxcclxuICAgIFNRUlRfQkFTRSA9IDFlNyxcclxuXHJcbiAgICAvLyBFRElUQUJMRVxyXG4gICAgLy8gVGhlIGxpbWl0IG9uIHRoZSB2YWx1ZSBvZiBERUNJTUFMX1BMQUNFUywgVE9fRVhQX05FRywgVE9fRVhQX1BPUywgTUlOX0VYUCwgTUFYX0VYUCwgYW5kXHJcbiAgICAvLyB0aGUgYXJndW1lbnRzIHRvIHRvRXhwb25lbnRpYWwsIHRvRml4ZWQsIHRvRm9ybWF0LCBhbmQgdG9QcmVjaXNpb24uXHJcbiAgICBNQVggPSAxRTk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIE1BWF9JTlQzMlxyXG5cclxuXHJcbiAgLypcclxuICAgKiBDcmVhdGUgYW5kIHJldHVybiBhIEJpZ051bWJlciBjb25zdHJ1Y3Rvci5cclxuICAgKi9cclxuICBmdW5jdGlvbiBjbG9uZShjb25maWdPYmplY3QpIHtcclxuICAgIHZhciBkaXYsIGNvbnZlcnRCYXNlLCBwYXJzZU51bWVyaWMsXHJcbiAgICAgIFAgPSBCaWdOdW1iZXIucHJvdG90eXBlID0geyBjb25zdHJ1Y3RvcjogQmlnTnVtYmVyLCB0b1N0cmluZzogbnVsbCwgdmFsdWVPZjogbnVsbCB9LFxyXG4gICAgICBPTkUgPSBuZXcgQmlnTnVtYmVyKDEpLFxyXG5cclxuXHJcbiAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRURJVEFCTEUgQ09ORklHIERFRkFVTFRTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcblxyXG4gICAgICAvLyBUaGUgZGVmYXVsdCB2YWx1ZXMgYmVsb3cgbXVzdCBiZSBpbnRlZ2VycyB3aXRoaW4gdGhlIGluY2x1c2l2ZSByYW5nZXMgc3RhdGVkLlxyXG4gICAgICAvLyBUaGUgdmFsdWVzIGNhbiBhbHNvIGJlIGNoYW5nZWQgYXQgcnVuLXRpbWUgdXNpbmcgQmlnTnVtYmVyLnNldC5cclxuXHJcbiAgICAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyBmb3Igb3BlcmF0aW9ucyBpbnZvbHZpbmcgZGl2aXNpb24uXHJcbiAgICAgIERFQ0lNQUxfUExBQ0VTID0gMjAsICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byBNQVhcclxuXHJcbiAgICAgIC8vIFRoZSByb3VuZGluZyBtb2RlIHVzZWQgd2hlbiByb3VuZGluZyB0byB0aGUgYWJvdmUgZGVjaW1hbCBwbGFjZXMsIGFuZCB3aGVuIHVzaW5nXHJcbiAgICAgIC8vIHRvRXhwb25lbnRpYWwsIHRvRml4ZWQsIHRvRm9ybWF0IGFuZCB0b1ByZWNpc2lvbiwgYW5kIHJvdW5kIChkZWZhdWx0IHZhbHVlKS5cclxuICAgICAgLy8gVVAgICAgICAgICAwIEF3YXkgZnJvbSB6ZXJvLlxyXG4gICAgICAvLyBET1dOICAgICAgIDEgVG93YXJkcyB6ZXJvLlxyXG4gICAgICAvLyBDRUlMICAgICAgIDIgVG93YXJkcyArSW5maW5pdHkuXHJcbiAgICAgIC8vIEZMT09SICAgICAgMyBUb3dhcmRzIC1JbmZpbml0eS5cclxuICAgICAgLy8gSEFMRl9VUCAgICA0IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCB1cC5cclxuICAgICAgLy8gSEFMRl9ET1dOICA1IFRvd2FyZHMgbmVhcmVzdCBuZWlnaGJvdXIuIElmIGVxdWlkaXN0YW50LCBkb3duLlxyXG4gICAgICAvLyBIQUxGX0VWRU4gIDYgVG93YXJkcyBuZWFyZXN0IG5laWdoYm91ci4gSWYgZXF1aWRpc3RhbnQsIHRvd2FyZHMgZXZlbiBuZWlnaGJvdXIuXHJcbiAgICAgIC8vIEhBTEZfQ0VJTCAgNyBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyArSW5maW5pdHkuXHJcbiAgICAgIC8vIEhBTEZfRkxPT1IgOCBUb3dhcmRzIG5lYXJlc3QgbmVpZ2hib3VyLiBJZiBlcXVpZGlzdGFudCwgdG93YXJkcyAtSW5maW5pdHkuXHJcbiAgICAgIFJPVU5ESU5HX01PREUgPSA0LCAgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byA4XHJcblxyXG4gICAgICAvLyBFWFBPTkVOVElBTF9BVCA6IFtUT19FWFBfTkVHICwgVE9fRVhQX1BPU11cclxuXHJcbiAgICAgIC8vIFRoZSBleHBvbmVudCB2YWx1ZSBhdCBhbmQgYmVuZWF0aCB3aGljaCB0b1N0cmluZyByZXR1cm5zIGV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICAvLyBOdW1iZXIgdHlwZTogLTdcclxuICAgICAgVE9fRVhQX05FRyA9IC03LCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAwIHRvIC1NQVhcclxuXHJcbiAgICAgIC8vIFRoZSBleHBvbmVudCB2YWx1ZSBhdCBhbmQgYWJvdmUgd2hpY2ggdG9TdHJpbmcgcmV0dXJucyBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgICAgLy8gTnVtYmVyIHR5cGU6IDIxXHJcbiAgICAgIFRPX0VYUF9QT1MgPSAyMSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byBNQVhcclxuXHJcbiAgICAgIC8vIFJBTkdFIDogW01JTl9FWFAsIE1BWF9FWFBdXHJcblxyXG4gICAgICAvLyBUaGUgbWluaW11bSBleHBvbmVudCB2YWx1ZSwgYmVuZWF0aCB3aGljaCB1bmRlcmZsb3cgdG8gemVybyBvY2N1cnMuXHJcbiAgICAgIC8vIE51bWJlciB0eXBlOiAtMzI0ICAoNWUtMzI0KVxyXG4gICAgICBNSU5fRVhQID0gLTFlNywgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0xIHRvIC1NQVhcclxuXHJcbiAgICAgIC8vIFRoZSBtYXhpbXVtIGV4cG9uZW50IHZhbHVlLCBhYm92ZSB3aGljaCBvdmVyZmxvdyB0byBJbmZpbml0eSBvY2N1cnMuXHJcbiAgICAgIC8vIE51bWJlciB0eXBlOiAgMzA4ICAoMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDgpXHJcbiAgICAgIC8vIEZvciBNQVhfRVhQID4gMWU3LCBlLmcuIG5ldyBCaWdOdW1iZXIoJzFlMTAwMDAwMDAwJykucGx1cygxKSBtYXkgYmUgc2xvdy5cclxuICAgICAgTUFYX0VYUCA9IDFlNywgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxIHRvIE1BWFxyXG5cclxuICAgICAgLy8gV2hldGhlciB0byB1c2UgY3J5cHRvZ3JhcGhpY2FsbHktc2VjdXJlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdGlvbiwgaWYgYXZhaWxhYmxlLlxyXG4gICAgICBDUllQVE8gPSBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRydWUgb3IgZmFsc2VcclxuXHJcbiAgICAgIC8vIFRoZSBtb2R1bG8gbW9kZSB1c2VkIHdoZW4gY2FsY3VsYXRpbmcgdGhlIG1vZHVsdXM6IGEgbW9kIG4uXHJcbiAgICAgIC8vIFRoZSBxdW90aWVudCAocSA9IGEgLyBuKSBpcyBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyByb3VuZGluZyBtb2RlLlxyXG4gICAgICAvLyBUaGUgcmVtYWluZGVyIChyKSBpcyBjYWxjdWxhdGVkIGFzOiByID0gYSAtIG4gKiBxLlxyXG4gICAgICAvL1xyXG4gICAgICAvLyBVUCAgICAgICAgMCBUaGUgcmVtYWluZGVyIGlzIHBvc2l0aXZlIGlmIHRoZSBkaXZpZGVuZCBpcyBuZWdhdGl2ZSwgZWxzZSBpcyBuZWdhdGl2ZS5cclxuICAgICAgLy8gRE9XTiAgICAgIDEgVGhlIHJlbWFpbmRlciBoYXMgdGhlIHNhbWUgc2lnbiBhcyB0aGUgZGl2aWRlbmQuXHJcbiAgICAgIC8vICAgICAgICAgICAgIFRoaXMgbW9kdWxvIG1vZGUgaXMgY29tbW9ubHkga25vd24gYXMgJ3RydW5jYXRlZCBkaXZpc2lvbicgYW5kIGlzXHJcbiAgICAgIC8vICAgICAgICAgICAgIGVxdWl2YWxlbnQgdG8gKGEgJSBuKSBpbiBKYXZhU2NyaXB0LlxyXG4gICAgICAvLyBGTE9PUiAgICAgMyBUaGUgcmVtYWluZGVyIGhhcyB0aGUgc2FtZSBzaWduIGFzIHRoZSBkaXZpc29yIChQeXRob24gJSkuXHJcbiAgICAgIC8vIEhBTEZfRVZFTiA2IFRoaXMgbW9kdWxvIG1vZGUgaW1wbGVtZW50cyB0aGUgSUVFRSA3NTQgcmVtYWluZGVyIGZ1bmN0aW9uLlxyXG4gICAgICAvLyBFVUNMSUQgICAgOSBFdWNsaWRpYW4gZGl2aXNpb24uIHEgPSBzaWduKG4pICogZmxvb3IoYSAvIGFicyhuKSkuXHJcbiAgICAgIC8vICAgICAgICAgICAgIFRoZSByZW1haW5kZXIgaXMgYWx3YXlzIHBvc2l0aXZlLlxyXG4gICAgICAvL1xyXG4gICAgICAvLyBUaGUgdHJ1bmNhdGVkIGRpdmlzaW9uLCBmbG9vcmVkIGRpdmlzaW9uLCBFdWNsaWRpYW4gZGl2aXNpb24gYW5kIElFRUUgNzU0IHJlbWFpbmRlclxyXG4gICAgICAvLyBtb2RlcyBhcmUgY29tbW9ubHkgdXNlZCBmb3IgdGhlIG1vZHVsdXMgb3BlcmF0aW9uLlxyXG4gICAgICAvLyBBbHRob3VnaCB0aGUgb3RoZXIgcm91bmRpbmcgbW9kZXMgY2FuIGFsc28gYmUgdXNlZCwgdGhleSBtYXkgbm90IGdpdmUgdXNlZnVsIHJlc3VsdHMuXHJcbiAgICAgIE1PRFVMT19NT0RFID0gMSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMCB0byA5XHJcblxyXG4gICAgICAvLyBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIG9mIHRoZSByZXN1bHQgb2YgdGhlIGV4cG9uZW50aWF0ZWRCeSBvcGVyYXRpb24uXHJcbiAgICAgIC8vIElmIFBPV19QUkVDSVNJT04gaXMgMCwgdGhlcmUgd2lsbCBiZSB1bmxpbWl0ZWQgc2lnbmlmaWNhbnQgZGlnaXRzLlxyXG4gICAgICBQT1dfUFJFQ0lTSU9OID0gMCwgICAgICAgICAgICAgICAgICAgIC8vIDAgdG8gTUFYXHJcblxyXG4gICAgICAvLyBUaGUgZm9ybWF0IHNwZWNpZmljYXRpb24gdXNlZCBieSB0aGUgQmlnTnVtYmVyLnByb3RvdHlwZS50b0Zvcm1hdCBtZXRob2QuXHJcbiAgICAgIEZPUk1BVCA9IHtcclxuICAgICAgICBwcmVmaXg6ICcnLFxyXG4gICAgICAgIGdyb3VwU2l6ZTogMyxcclxuICAgICAgICBzZWNvbmRhcnlHcm91cFNpemU6IDAsXHJcbiAgICAgICAgZ3JvdXBTZXBhcmF0b3I6ICcsJyxcclxuICAgICAgICBkZWNpbWFsU2VwYXJhdG9yOiAnLicsXHJcbiAgICAgICAgZnJhY3Rpb25Hcm91cFNpemU6IDAsXHJcbiAgICAgICAgZnJhY3Rpb25Hcm91cFNlcGFyYXRvcjogJ1xceEEwJywgICAgICAvLyBub24tYnJlYWtpbmcgc3BhY2VcclxuICAgICAgICBzdWZmaXg6ICcnXHJcbiAgICAgIH0sXHJcblxyXG4gICAgICAvLyBUaGUgYWxwaGFiZXQgdXNlZCBmb3IgYmFzZSBjb252ZXJzaW9uLiBJdCBtdXN0IGJlIGF0IGxlYXN0IDIgY2hhcmFjdGVycyBsb25nLCB3aXRoIG5vICcrJyxcclxuICAgICAgLy8gJy0nLCAnLicsIHdoaXRlc3BhY2UsIG9yIHJlcGVhdGVkIGNoYXJhY3Rlci5cclxuICAgICAgLy8gJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJF8nXHJcbiAgICAgIEFMUEhBQkVUID0gJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eic7XHJcblxyXG5cclxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG5cclxuICAgIC8vIENPTlNUUlVDVE9SXHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBUaGUgQmlnTnVtYmVyIGNvbnN0cnVjdG9yIGFuZCBleHBvcnRlZCBmdW5jdGlvbi5cclxuICAgICAqIENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIGEgQmlnTnVtYmVyIG9iamVjdC5cclxuICAgICAqXHJcbiAgICAgKiB2IHtudW1iZXJ8c3RyaW5nfEJpZ051bWJlcn0gQSBudW1lcmljIHZhbHVlLlxyXG4gICAgICogW2JdIHtudW1iZXJ9IFRoZSBiYXNlIG9mIHYuIEludGVnZXIsIDIgdG8gQUxQSEFCRVQubGVuZ3RoIGluY2x1c2l2ZS5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gQmlnTnVtYmVyKHYsIGIpIHtcclxuICAgICAgdmFyIGFscGhhYmV0LCBjLCBjYXNlQ2hhbmdlZCwgZSwgaSwgaXNOdW0sIGxlbiwgc3RyLFxyXG4gICAgICAgIHggPSB0aGlzO1xyXG5cclxuICAgICAgLy8gRW5hYmxlIGNvbnN0cnVjdG9yIGNhbGwgd2l0aG91dCBgbmV3YC5cclxuICAgICAgaWYgKCEoeCBpbnN0YW5jZW9mIEJpZ051bWJlcikpIHJldHVybiBuZXcgQmlnTnVtYmVyKHYsIGIpO1xyXG5cclxuICAgICAgaWYgKGIgPT0gbnVsbCkge1xyXG5cclxuICAgICAgICBpZiAodiAmJiB2Ll9pc0JpZ051bWJlciA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgeC5zID0gdi5zO1xyXG5cclxuICAgICAgICAgIGlmICghdi5jIHx8IHYuZSA+IE1BWF9FWFApIHtcclxuICAgICAgICAgICAgeC5jID0geC5lID0gbnVsbDtcclxuICAgICAgICAgIH0gZWxzZSBpZiAodi5lIDwgTUlOX0VYUCkge1xyXG4gICAgICAgICAgICB4LmMgPSBbeC5lID0gMF07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4LmUgPSB2LmU7XHJcbiAgICAgICAgICAgIHguYyA9IHYuYy5zbGljZSgpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgoaXNOdW0gPSB0eXBlb2YgdiA9PSAnbnVtYmVyJykgJiYgdiAqIDAgPT0gMCkge1xyXG5cclxuICAgICAgICAgIC8vIFVzZSBgMSAvIG5gIHRvIGhhbmRsZSBtaW51cyB6ZXJvIGFsc28uXHJcbiAgICAgICAgICB4LnMgPSAxIC8gdiA8IDAgPyAodiA9IC12LCAtMSkgOiAxO1xyXG5cclxuICAgICAgICAgIC8vIEZhc3QgcGF0aCBmb3IgaW50ZWdlcnMsIHdoZXJlIG4gPCAyMTQ3NDgzNjQ4ICgyKiozMSkuXHJcbiAgICAgICAgICBpZiAodiA9PT0gfn52KSB7XHJcbiAgICAgICAgICAgIGZvciAoZSA9IDAsIGkgPSB2OyBpID49IDEwOyBpIC89IDEwLCBlKyspO1xyXG5cclxuICAgICAgICAgICAgaWYgKGUgPiBNQVhfRVhQKSB7XHJcbiAgICAgICAgICAgICAgeC5jID0geC5lID0gbnVsbDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB4LmUgPSBlO1xyXG4gICAgICAgICAgICAgIHguYyA9IFt2XTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHN0ciA9IFN0cmluZyh2KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIGlmICghaXNOdW1lcmljLnRlc3Qoc3RyID0gU3RyaW5nKHYpKSkgcmV0dXJuIHBhcnNlTnVtZXJpYyh4LCBzdHIsIGlzTnVtKTtcclxuXHJcbiAgICAgICAgICB4LnMgPSBzdHIuY2hhckNvZGVBdCgwKSA9PSA0NSA/IChzdHIgPSBzdHIuc2xpY2UoMSksIC0xKSA6IDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBEZWNpbWFsIHBvaW50P1xyXG4gICAgICAgIGlmICgoZSA9IHN0ci5pbmRleE9mKCcuJykpID4gLTEpIHN0ciA9IHN0ci5yZXBsYWNlKCcuJywgJycpO1xyXG5cclxuICAgICAgICAvLyBFeHBvbmVudGlhbCBmb3JtP1xyXG4gICAgICAgIGlmICgoaSA9IHN0ci5zZWFyY2goL2UvaSkpID4gMCkge1xyXG5cclxuICAgICAgICAgIC8vIERldGVybWluZSBleHBvbmVudC5cclxuICAgICAgICAgIGlmIChlIDwgMCkgZSA9IGk7XHJcbiAgICAgICAgICBlICs9ICtzdHIuc2xpY2UoaSArIDEpO1xyXG4gICAgICAgICAgc3RyID0gc3RyLnN1YnN0cmluZygwLCBpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGUgPCAwKSB7XHJcblxyXG4gICAgICAgICAgLy8gSW50ZWdlci5cclxuICAgICAgICAgIGUgPSBzdHIubGVuZ3RoO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBCYXNlIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtifSdcclxuICAgICAgICBpbnRDaGVjayhiLCAyLCBBTFBIQUJFVC5sZW5ndGgsICdCYXNlJyk7XHJcblxyXG4gICAgICAgIC8vIEFsbG93IGV4cG9uZW50aWFsIG5vdGF0aW9uIHRvIGJlIHVzZWQgd2l0aCBiYXNlIDEwIGFyZ3VtZW50LCB3aGlsZVxyXG4gICAgICAgIC8vIGFsc28gcm91bmRpbmcgdG8gREVDSU1BTF9QTEFDRVMgYXMgd2l0aCBvdGhlciBiYXNlcy5cclxuICAgICAgICBpZiAoYiA9PSAxMCkge1xyXG4gICAgICAgICAgeCA9IG5ldyBCaWdOdW1iZXIodik7XHJcbiAgICAgICAgICByZXR1cm4gcm91bmQoeCwgREVDSU1BTF9QTEFDRVMgKyB4LmUgKyAxLCBST1VORElOR19NT0RFKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHN0ciA9IFN0cmluZyh2KTtcclxuXHJcbiAgICAgICAgaWYgKGlzTnVtID0gdHlwZW9mIHYgPT0gJ251bWJlcicpIHtcclxuXHJcbiAgICAgICAgICAvLyBBdm9pZCBwb3RlbnRpYWwgaW50ZXJwcmV0YXRpb24gb2YgSW5maW5pdHkgYW5kIE5hTiBhcyBiYXNlIDQ0KyB2YWx1ZXMuXHJcbiAgICAgICAgICBpZiAodiAqIDAgIT0gMCkgcmV0dXJuIHBhcnNlTnVtZXJpYyh4LCBzdHIsIGlzTnVtLCBiKTtcclxuXHJcbiAgICAgICAgICB4LnMgPSAxIC8gdiA8IDAgPyAoc3RyID0gc3RyLnNsaWNlKDEpLCAtMSkgOiAxO1xyXG5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBOdW1iZXIgcHJpbWl0aXZlIGhhcyBtb3JlIHRoYW4gMTUgc2lnbmlmaWNhbnQgZGlnaXRzOiB7bn0nXHJcbiAgICAgICAgICBpZiAoQmlnTnVtYmVyLkRFQlVHICYmIHN0ci5yZXBsYWNlKC9eMFxcLjAqfFxcLi8sICcnKS5sZW5ndGggPiAxNSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAgKHRvb01hbnlEaWdpdHMgKyB2KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgeC5zID0gc3RyLmNoYXJDb2RlQXQoMCkgPT09IDQ1ID8gKHN0ciA9IHN0ci5zbGljZSgxKSwgLTEpIDogMTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGFscGhhYmV0ID0gQUxQSEFCRVQuc2xpY2UoMCwgYik7XHJcbiAgICAgICAgZSA9IGkgPSAwO1xyXG5cclxuICAgICAgICAvLyBDaGVjayB0aGF0IHN0ciBpcyBhIHZhbGlkIGJhc2UgYiBudW1iZXIuXHJcbiAgICAgICAgLy8gRG9uJ3QgdXNlIFJlZ0V4cCwgc28gYWxwaGFiZXQgY2FuIGNvbnRhaW4gc3BlY2lhbCBjaGFyYWN0ZXJzLlxyXG4gICAgICAgIGZvciAobGVuID0gc3RyLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICBpZiAoYWxwaGFiZXQuaW5kZXhPZihjID0gc3RyLmNoYXJBdChpKSkgPCAwKSB7XHJcbiAgICAgICAgICAgIGlmIChjID09ICcuJykge1xyXG5cclxuICAgICAgICAgICAgICAvLyBJZiAnLicgaXMgbm90IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYW5kIGl0IGhhcyBub3QgYmUgZm91bmQgYmVmb3JlLlxyXG4gICAgICAgICAgICAgIGlmIChpID4gZSkge1xyXG4gICAgICAgICAgICAgICAgZSA9IGxlbjtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICghY2FzZUNoYW5nZWQpIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gQWxsb3cgZS5nLiBoZXhhZGVjaW1hbCAnRkYnIGFzIHdlbGwgYXMgJ2ZmJy5cclxuICAgICAgICAgICAgICBpZiAoc3RyID09IHN0ci50b1VwcGVyQ2FzZSgpICYmIChzdHIgPSBzdHIudG9Mb3dlckNhc2UoKSkgfHxcclxuICAgICAgICAgICAgICAgICAgc3RyID09IHN0ci50b0xvd2VyQ2FzZSgpICYmIChzdHIgPSBzdHIudG9VcHBlckNhc2UoKSkpIHtcclxuICAgICAgICAgICAgICAgIGNhc2VDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGkgPSAtMTtcclxuICAgICAgICAgICAgICAgIGUgPSAwO1xyXG4gICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljKHgsIFN0cmluZyh2KSwgaXNOdW0sIGIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUHJldmVudCBsYXRlciBjaGVjayBmb3IgbGVuZ3RoIG9uIGNvbnZlcnRlZCBudW1iZXIuXHJcbiAgICAgICAgaXNOdW0gPSBmYWxzZTtcclxuICAgICAgICBzdHIgPSBjb252ZXJ0QmFzZShzdHIsIGIsIDEwLCB4LnMpO1xyXG5cclxuICAgICAgICAvLyBEZWNpbWFsIHBvaW50P1xyXG4gICAgICAgIGlmICgoZSA9IHN0ci5pbmRleE9mKCcuJykpID4gLTEpIHN0ciA9IHN0ci5yZXBsYWNlKCcuJywgJycpO1xyXG4gICAgICAgIGVsc2UgZSA9IHN0ci5sZW5ndGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIERldGVybWluZSBsZWFkaW5nIHplcm9zLlxyXG4gICAgICBmb3IgKGkgPSAwOyBzdHIuY2hhckNvZGVBdChpKSA9PT0gNDg7IGkrKyk7XHJcblxyXG4gICAgICAvLyBEZXRlcm1pbmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgIGZvciAobGVuID0gc3RyLmxlbmd0aDsgc3RyLmNoYXJDb2RlQXQoLS1sZW4pID09PSA0ODspO1xyXG5cclxuICAgICAgaWYgKHN0ciA9IHN0ci5zbGljZShpLCArK2xlbikpIHtcclxuICAgICAgICBsZW4gLT0gaTtcclxuXHJcbiAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE51bWJlciBwcmltaXRpdmUgaGFzIG1vcmUgdGhhbiAxNSBzaWduaWZpY2FudCBkaWdpdHM6IHtufSdcclxuICAgICAgICBpZiAoaXNOdW0gJiYgQmlnTnVtYmVyLkRFQlVHICYmXHJcbiAgICAgICAgICBsZW4gPiAxNSAmJiAodiA+IE1BWF9TQUZFX0lOVEVHRVIgfHwgdiAhPT0gbWF0aGZsb29yKHYpKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAgKHRvb01hbnlEaWdpdHMgKyAoeC5zICogdikpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgIC8vIE92ZXJmbG93P1xyXG4gICAgICAgIGlmICgoZSA9IGUgLSBpIC0gMSkgPiBNQVhfRVhQKSB7XHJcblxyXG4gICAgICAgICAgLy8gSW5maW5pdHkuXHJcbiAgICAgICAgICB4LmMgPSB4LmUgPSBudWxsO1xyXG5cclxuICAgICAgICAvLyBVbmRlcmZsb3c/XHJcbiAgICAgICAgfSBlbHNlIGlmIChlIDwgTUlOX0VYUCkge1xyXG5cclxuICAgICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgICB4LmMgPSBbeC5lID0gMF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHguZSA9IGU7XHJcbiAgICAgICAgICB4LmMgPSBbXTtcclxuXHJcbiAgICAgICAgICAvLyBUcmFuc2Zvcm0gYmFzZVxyXG5cclxuICAgICAgICAgIC8vIGUgaXMgdGhlIGJhc2UgMTAgZXhwb25lbnQuXHJcbiAgICAgICAgICAvLyBpIGlzIHdoZXJlIHRvIHNsaWNlIHN0ciB0byBnZXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIGNvZWZmaWNpZW50IGFycmF5LlxyXG4gICAgICAgICAgaSA9IChlICsgMSkgJSBMT0dfQkFTRTtcclxuICAgICAgICAgIGlmIChlIDwgMCkgaSArPSBMT0dfQkFTRTsgIC8vIGkgPCAxXHJcblxyXG4gICAgICAgICAgaWYgKGkgPCBsZW4pIHtcclxuICAgICAgICAgICAgaWYgKGkpIHguYy5wdXNoKCtzdHIuc2xpY2UoMCwgaSkpO1xyXG5cclxuICAgICAgICAgICAgZm9yIChsZW4gLT0gTE9HX0JBU0U7IGkgPCBsZW47KSB7XHJcbiAgICAgICAgICAgICAgeC5jLnB1c2goK3N0ci5zbGljZShpLCBpICs9IExPR19CQVNFKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGkgPSBMT0dfQkFTRSAtIChzdHIgPSBzdHIuc2xpY2UoaSkpLmxlbmd0aDtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGkgLT0gbGVuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGZvciAoOyBpLS07IHN0ciArPSAnMCcpO1xyXG4gICAgICAgICAgeC5jLnB1c2goK3N0cik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAvLyBaZXJvLlxyXG4gICAgICAgIHguYyA9IFt4LmUgPSAwXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBDT05TVFJVQ1RPUiBQUk9QRVJUSUVTXHJcblxyXG5cclxuICAgIEJpZ051bWJlci5jbG9uZSA9IGNsb25lO1xyXG5cclxuICAgIEJpZ051bWJlci5ST1VORF9VUCA9IDA7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfRE9XTiA9IDE7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfQ0VJTCA9IDI7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfRkxPT1IgPSAzO1xyXG4gICAgQmlnTnVtYmVyLlJPVU5EX0hBTEZfVVAgPSA0O1xyXG4gICAgQmlnTnVtYmVyLlJPVU5EX0hBTEZfRE9XTiA9IDU7XHJcbiAgICBCaWdOdW1iZXIuUk9VTkRfSEFMRl9FVkVOID0gNjtcclxuICAgIEJpZ051bWJlci5ST1VORF9IQUxGX0NFSUwgPSA3O1xyXG4gICAgQmlnTnVtYmVyLlJPVU5EX0hBTEZfRkxPT1IgPSA4O1xyXG4gICAgQmlnTnVtYmVyLkVVQ0xJRCA9IDk7XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBDb25maWd1cmUgaW5mcmVxdWVudGx5LWNoYW5naW5nIGxpYnJhcnktd2lkZSBzZXR0aW5ncy5cclxuICAgICAqXHJcbiAgICAgKiBBY2NlcHQgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBvcHRpb25hbCBwcm9wZXJ0aWVzIChpZiB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eSBpc1xyXG4gICAgICogYSBudW1iZXIsIGl0IG11c3QgYmUgYW4gaW50ZWdlciB3aXRoaW4gdGhlIGluY2x1c2l2ZSByYW5nZSBzdGF0ZWQpOlxyXG4gICAgICpcclxuICAgICAqICAgREVDSU1BTF9QTEFDRVMgICB7bnVtYmVyfSAgICAgICAgICAgMCB0byBNQVhcclxuICAgICAqICAgUk9VTkRJTkdfTU9ERSAgICB7bnVtYmVyfSAgICAgICAgICAgMCB0byA4XHJcbiAgICAgKiAgIEVYUE9ORU5USUFMX0FUICAge251bWJlcnxudW1iZXJbXX0gIC1NQVggdG8gTUFYICBvciAgWy1NQVggdG8gMCwgMCB0byBNQVhdXHJcbiAgICAgKiAgIFJBTkdFICAgICAgICAgICAge251bWJlcnxudW1iZXJbXX0gIC1NQVggdG8gTUFYIChub3QgemVybykgIG9yICBbLU1BWCB0byAtMSwgMSB0byBNQVhdXHJcbiAgICAgKiAgIENSWVBUTyAgICAgICAgICAge2Jvb2xlYW59ICAgICAgICAgIHRydWUgb3IgZmFsc2VcclxuICAgICAqICAgTU9EVUxPX01PREUgICAgICB7bnVtYmVyfSAgICAgICAgICAgMCB0byA5XHJcbiAgICAgKiAgIFBPV19QUkVDSVNJT04gICAgICAge251bWJlcn0gICAgICAgICAgIDAgdG8gTUFYXHJcbiAgICAgKiAgIEFMUEhBQkVUICAgICAgICAge3N0cmluZ30gICAgICAgICAgIEEgc3RyaW5nIG9mIHR3byBvciBtb3JlIHVuaXF1ZSBjaGFyYWN0ZXJzIHdoaWNoIGRvZXNcclxuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGNvbnRhaW4gJy4nLlxyXG4gICAgICogICBGT1JNQVQgICAgICAgICAgIHtvYmplY3R9ICAgICAgICAgICBBbiBvYmplY3Qgd2l0aCBzb21lIG9mIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcclxuICAgICAqICAgICBwcmVmaXggICAgICAgICAgICAgICAgIHtzdHJpbmd9XHJcbiAgICAgKiAgICAgZ3JvdXBTaXplICAgICAgICAgICAgICB7bnVtYmVyfVxyXG4gICAgICogICAgIHNlY29uZGFyeUdyb3VwU2l6ZSAgICAge251bWJlcn1cclxuICAgICAqICAgICBncm91cFNlcGFyYXRvciAgICAgICAgIHtzdHJpbmd9XHJcbiAgICAgKiAgICAgZGVjaW1hbFNlcGFyYXRvciAgICAgICB7c3RyaW5nfVxyXG4gICAgICogICAgIGZyYWN0aW9uR3JvdXBTaXplICAgICAge251bWJlcn1cclxuICAgICAqICAgICBmcmFjdGlvbkdyb3VwU2VwYXJhdG9yIHtzdHJpbmd9XHJcbiAgICAgKiAgICAgc3VmZml4ICAgICAgICAgICAgICAgICB7c3RyaW5nfVxyXG4gICAgICpcclxuICAgICAqIChUaGUgdmFsdWVzIGFzc2lnbmVkIHRvIHRoZSBhYm92ZSBGT1JNQVQgb2JqZWN0IHByb3BlcnRpZXMgYXJlIG5vdCBjaGVja2VkIGZvciB2YWxpZGl0eS4pXHJcbiAgICAgKlxyXG4gICAgICogRS5nLlxyXG4gICAgICogQmlnTnVtYmVyLmNvbmZpZyh7IERFQ0lNQUxfUExBQ0VTIDogMjAsIFJPVU5ESU5HX01PREUgOiA0IH0pXHJcbiAgICAgKlxyXG4gICAgICogSWdub3JlIHByb3BlcnRpZXMvcGFyYW1ldGVycyBzZXQgdG8gbnVsbCBvciB1bmRlZmluZWQsIGV4Y2VwdCBmb3IgQUxQSEFCRVQuXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGFuIG9iamVjdCB3aXRoIHRoZSBwcm9wZXJ0aWVzIGN1cnJlbnQgdmFsdWVzLlxyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIuY29uZmlnID0gQmlnTnVtYmVyLnNldCA9IGZ1bmN0aW9uIChvYmopIHtcclxuICAgICAgdmFyIHAsIHY7XHJcblxyXG4gICAgICBpZiAob2JqICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogPT0gJ29iamVjdCcpIHtcclxuXHJcbiAgICAgICAgICAvLyBERUNJTUFMX1BMQUNFUyB7bnVtYmVyfSBJbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gREVDSU1BTF9QTEFDRVMge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3Z9J1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ0RFQ0lNQUxfUExBQ0VTJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaW50Q2hlY2sodiwgMCwgTUFYLCBwKTtcclxuICAgICAgICAgICAgREVDSU1BTF9QTEFDRVMgPSB2O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJPVU5ESU5HX01PREUge251bWJlcn0gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBST1VORElOR19NT0RFIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdST1VORElOR19NT0RFJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaW50Q2hlY2sodiwgMCwgOCwgcCk7XHJcbiAgICAgICAgICAgIFJPVU5ESU5HX01PREUgPSB2O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIEVYUE9ORU5USUFMX0FUIHtudW1iZXJ8bnVtYmVyW119XHJcbiAgICAgICAgICAvLyBJbnRlZ2VyLCAtTUFYIHRvIE1BWCBpbmNsdXNpdmUgb3JcclxuICAgICAgICAgIC8vIFtpbnRlZ2VyIC1NQVggdG8gMCBpbmNsdXNpdmUsIDAgdG8gTUFYIGluY2x1c2l2ZV0uXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gRVhQT05FTlRJQUxfQVQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3Z9J1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ0VYUE9ORU5USUFMX0FUJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaWYgKHYgJiYgdi5wb3ApIHtcclxuICAgICAgICAgICAgICBpbnRDaGVjayh2WzBdLCAtTUFYLCAwLCBwKTtcclxuICAgICAgICAgICAgICBpbnRDaGVjayh2WzFdLCAwLCBNQVgsIHApO1xyXG4gICAgICAgICAgICAgIFRPX0VYUF9ORUcgPSB2WzBdO1xyXG4gICAgICAgICAgICAgIFRPX0VYUF9QT1MgPSB2WzFdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHYsIC1NQVgsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgICAgVE9fRVhQX05FRyA9IC0oVE9fRVhQX1BPUyA9IHYgPCAwID8gLXYgOiB2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJBTkdFIHtudW1iZXJ8bnVtYmVyW119IE5vbi16ZXJvIGludGVnZXIsIC1NQVggdG8gTUFYIGluY2x1c2l2ZSBvclxyXG4gICAgICAgICAgLy8gW2ludGVnZXIgLU1BWCB0byAtMSBpbmNsdXNpdmUsIGludGVnZXIgMSB0byBNQVggaW5jbHVzaXZlXS5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBSQU5HRSB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V8Y2Fubm90IGJlIHplcm99OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnUkFOR0UnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG4gICAgICAgICAgICBpZiAodiAmJiB2LnBvcCkge1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHZbMF0sIC1NQVgsIC0xLCBwKTtcclxuICAgICAgICAgICAgICBpbnRDaGVjayh2WzFdLCAxLCBNQVgsIHApO1xyXG4gICAgICAgICAgICAgIE1JTl9FWFAgPSB2WzBdO1xyXG4gICAgICAgICAgICAgIE1BWF9FWFAgPSB2WzFdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGludENoZWNrKHYsIC1NQVgsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgICAgaWYgKHYpIHtcclxuICAgICAgICAgICAgICAgIE1JTl9FWFAgPSAtKE1BWF9FWFAgPSB2IDwgMCA/IC12IDogdik7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgcCArICcgY2Fubm90IGJlIHplcm86ICcgKyB2KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBDUllQVE8ge2Jvb2xlYW59IHRydWUgb3IgZmFsc2UuXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gQ1JZUFRPIG5vdCB0cnVlIG9yIGZhbHNlOiB7dn0nXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gY3J5cHRvIHVuYXZhaWxhYmxlJ1xyXG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShwID0gJ0NSWVBUTycpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcbiAgICAgICAgICAgIGlmICh2ID09PSAhIXYpIHtcclxuICAgICAgICAgICAgICBpZiAodikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjcnlwdG8gIT0gJ3VuZGVmaW5lZCcgJiYgY3J5cHRvICYmXHJcbiAgICAgICAgICAgICAgICAgKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgfHwgY3J5cHRvLnJhbmRvbUJ5dGVzKSkge1xyXG4gICAgICAgICAgICAgICAgICBDUllQVE8gPSB2O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgQ1JZUFRPID0gIXY7XHJcbiAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnY3J5cHRvIHVuYXZhaWxhYmxlJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIENSWVBUTyA9IHY7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgIChiaWdudW1iZXJFcnJvciArIHAgKyAnIG5vdCB0cnVlIG9yIGZhbHNlOiAnICsgdik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBNT0RVTE9fTU9ERSB7bnVtYmVyfSBJbnRlZ2VyLCAwIHRvIDkgaW5jbHVzaXZlLlxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIE1PRFVMT19NT0RFIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHt2fSdcclxuICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkocCA9ICdNT0RVTE9fTU9ERScpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcbiAgICAgICAgICAgIGludENoZWNrKHYsIDAsIDksIHApO1xyXG4gICAgICAgICAgICBNT0RVTE9fTU9ERSA9IHY7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gUE9XX1BSRUNJU0lPTiB7bnVtYmVyfSBJbnRlZ2VyLCAwIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgICAgICAvLyAnW0JpZ051bWJlciBFcnJvcl0gUE9XX1BSRUNJU0lPTiB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnUE9XX1BSRUNJU0lPTicpKSB7XHJcbiAgICAgICAgICAgIHYgPSBvYmpbcF07XHJcbiAgICAgICAgICAgIGludENoZWNrKHYsIDAsIE1BWCwgcCk7XHJcbiAgICAgICAgICAgIFBPV19QUkVDSVNJT04gPSB2O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIEZPUk1BVCB7b2JqZWN0fVxyXG4gICAgICAgICAgLy8gJ1tCaWdOdW1iZXIgRXJyb3JdIEZPUk1BVCBub3QgYW4gb2JqZWN0OiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnRk9STUFUJykpIHtcclxuICAgICAgICAgICAgdiA9IG9ialtwXTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2ID09ICdvYmplY3QnKSBGT1JNQVQgPSB2O1xyXG4gICAgICAgICAgICBlbHNlIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyBwICsgJyBub3QgYW4gb2JqZWN0OiAnICsgdik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gQUxQSEFCRVQge3N0cmluZ31cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBBTFBIQUJFVCBpbnZhbGlkOiB7dn0nXHJcbiAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KHAgPSAnQUxQSEFCRVQnKSkge1xyXG4gICAgICAgICAgICB2ID0gb2JqW3BdO1xyXG5cclxuICAgICAgICAgICAgLy8gRGlzYWxsb3cgaWYgbGVzcyB0aGFuIHR3byBjaGFyYWN0ZXJzLFxyXG4gICAgICAgICAgICAvLyBvciBpZiBpdCBjb250YWlucyAnKycsICctJywgJy4nLCB3aGl0ZXNwYWNlLCBvciBhIHJlcGVhdGVkIGNoYXJhY3Rlci5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2ID09ICdzdHJpbmcnICYmICEvXi4/JHxbK1xcLS5cXHNdfCguKS4qXFwxLy50ZXN0KHYpKSB7XHJcbiAgICAgICAgICAgICAgQUxQSEFCRVQgPSB2O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgICAgIChiaWdudW1iZXJFcnJvciArIHAgKyAnIGludmFsaWQ6ICcgKyB2KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBPYmplY3QgZXhwZWN0ZWQ6IHt2fSdcclxuICAgICAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ09iamVjdCBleHBlY3RlZDogJyArIG9iaik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIERFQ0lNQUxfUExBQ0VTOiBERUNJTUFMX1BMQUNFUyxcclxuICAgICAgICBST1VORElOR19NT0RFOiBST1VORElOR19NT0RFLFxyXG4gICAgICAgIEVYUE9ORU5USUFMX0FUOiBbVE9fRVhQX05FRywgVE9fRVhQX1BPU10sXHJcbiAgICAgICAgUkFOR0U6IFtNSU5fRVhQLCBNQVhfRVhQXSxcclxuICAgICAgICBDUllQVE86IENSWVBUTyxcclxuICAgICAgICBNT0RVTE9fTU9ERTogTU9EVUxPX01PREUsXHJcbiAgICAgICAgUE9XX1BSRUNJU0lPTjogUE9XX1BSRUNJU0lPTixcclxuICAgICAgICBGT1JNQVQ6IEZPUk1BVCxcclxuICAgICAgICBBTFBIQUJFVDogQUxQSEFCRVRcclxuICAgICAgfTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB2IGlzIGEgQmlnTnVtYmVyIGluc3RhbmNlLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICpcclxuICAgICAqIElmIEJpZ051bWJlci5ERUJVRyBpcyB0cnVlLCB0aHJvdyBpZiBhIEJpZ051bWJlciBpbnN0YW5jZSBpcyBub3Qgd2VsbC1mb3JtZWQuXHJcbiAgICAgKlxyXG4gICAgICogdiB7YW55fVxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBJbnZhbGlkIEJpZ051bWJlcjoge3Z9J1xyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIuaXNCaWdOdW1iZXIgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICBpZiAoIXYgfHwgdi5faXNCaWdOdW1iZXIgIT09IHRydWUpIHJldHVybiBmYWxzZTtcclxuICAgICAgaWYgKCFCaWdOdW1iZXIuREVCVUcpIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgdmFyIGksIG4sXHJcbiAgICAgICAgYyA9IHYuYyxcclxuICAgICAgICBlID0gdi5lLFxyXG4gICAgICAgIHMgPSB2LnM7XHJcblxyXG4gICAgICBvdXQ6IGlmICh7fS50b1N0cmluZy5jYWxsKGMpID09ICdbb2JqZWN0IEFycmF5XScpIHtcclxuXHJcbiAgICAgICAgaWYgKChzID09PSAxIHx8IHMgPT09IC0xKSAmJiBlID49IC1NQVggJiYgZSA8PSBNQVggJiYgZSA9PT0gbWF0aGZsb29yKGUpKSB7XHJcblxyXG4gICAgICAgICAgLy8gSWYgdGhlIGZpcnN0IGVsZW1lbnQgaXMgemVybywgdGhlIEJpZ051bWJlciB2YWx1ZSBtdXN0IGJlIHplcm8uXHJcbiAgICAgICAgICBpZiAoY1swXSA9PT0gMCkge1xyXG4gICAgICAgICAgICBpZiAoZSA9PT0gMCAmJiBjLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrIG91dDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBDYWxjdWxhdGUgbnVtYmVyIG9mIGRpZ2l0cyB0aGF0IGNbMF0gc2hvdWxkIGhhdmUsIGJhc2VkIG9uIHRoZSBleHBvbmVudC5cclxuICAgICAgICAgIGkgPSAoZSArIDEpICUgTE9HX0JBU0U7XHJcbiAgICAgICAgICBpZiAoaSA8IDEpIGkgKz0gTE9HX0JBU0U7XHJcblxyXG4gICAgICAgICAgLy8gQ2FsY3VsYXRlIG51bWJlciBvZiBkaWdpdHMgb2YgY1swXS5cclxuICAgICAgICAgIC8vaWYgKE1hdGguY2VpbChNYXRoLmxvZyhjWzBdICsgMSkgLyBNYXRoLkxOMTApID09IGkpIHtcclxuICAgICAgICAgIGlmIChTdHJpbmcoY1swXSkubGVuZ3RoID09IGkpIHtcclxuXHJcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgbiA9IGNbaV07XHJcbiAgICAgICAgICAgICAgaWYgKG4gPCAwIHx8IG4gPj0gQkFTRSB8fCBuICE9PSBtYXRoZmxvb3IobikpIGJyZWFrIG91dDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gTGFzdCBlbGVtZW50IGNhbm5vdCBiZSB6ZXJvLCB1bmxlc3MgaXQgaXMgdGhlIG9ubHkgZWxlbWVudC5cclxuICAgICAgICAgICAgaWYgKG4gIT09IDApIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIC8vIEluZmluaXR5L05hTlxyXG4gICAgICB9IGVsc2UgaWYgKGMgPT09IG51bGwgJiYgZSA9PT0gbnVsbCAmJiAocyA9PT0gbnVsbCB8fCBzID09PSAxIHx8IHMgPT09IC0xKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgIChiaWdudW1iZXJFcnJvciArICdJbnZhbGlkIEJpZ051bWJlcjogJyArIHYpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIG1heGltdW0gb2YgdGhlIGFyZ3VtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBhcmd1bWVudHMge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIubWF4aW11bSA9IEJpZ051bWJlci5tYXggPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBtYXhPck1pbihhcmd1bWVudHMsIFAubHQpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIG1pbmltdW0gb2YgdGhlIGFyZ3VtZW50cy5cclxuICAgICAqXHJcbiAgICAgKiBhcmd1bWVudHMge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfVxyXG4gICAgICovXHJcbiAgICBCaWdOdW1iZXIubWluaW11bSA9IEJpZ051bWJlci5taW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiBtYXhPck1pbihhcmd1bWVudHMsIFAuZ3QpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2l0aCBhIHJhbmRvbSB2YWx1ZSBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gMCBhbmQgbGVzcyB0aGFuIDEsXHJcbiAgICAgKiBhbmQgd2l0aCBkcCwgb3IgREVDSU1BTF9QTEFDRVMgaWYgZHAgaXMgb21pdHRlZCwgZGVjaW1hbCBwbGFjZXMgKG9yIGxlc3MgaWYgdHJhaWxpbmdcclxuICAgICAqIHplcm9zIGFyZSBwcm9kdWNlZCkuXHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB9J1xyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIGNyeXB0byB1bmF2YWlsYWJsZSdcclxuICAgICAqL1xyXG4gICAgQmlnTnVtYmVyLnJhbmRvbSA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBwb3cyXzUzID0gMHgyMDAwMDAwMDAwMDAwMDtcclxuXHJcbiAgICAgIC8vIFJldHVybiBhIDUzIGJpdCBpbnRlZ2VyIG4sIHdoZXJlIDAgPD0gbiA8IDkwMDcxOTkyNTQ3NDA5OTIuXHJcbiAgICAgIC8vIENoZWNrIGlmIE1hdGgucmFuZG9tKCkgcHJvZHVjZXMgbW9yZSB0aGFuIDMyIGJpdHMgb2YgcmFuZG9tbmVzcy5cclxuICAgICAgLy8gSWYgaXQgZG9lcywgYXNzdW1lIGF0IGxlYXN0IDUzIGJpdHMgYXJlIHByb2R1Y2VkLCBvdGhlcndpc2UgYXNzdW1lIGF0IGxlYXN0IDMwIGJpdHMuXHJcbiAgICAgIC8vIDB4NDAwMDAwMDAgaXMgMl4zMCwgMHg4MDAwMDAgaXMgMl4yMywgMHgxZmZmZmYgaXMgMl4yMSAtIDEuXHJcbiAgICAgIHZhciByYW5kb201M2JpdEludCA9IChNYXRoLnJhbmRvbSgpICogcG93Ml81MykgJiAweDFmZmZmZlxyXG4gICAgICAgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBtYXRoZmxvb3IoTWF0aC5yYW5kb20oKSAqIHBvdzJfNTMpOyB9XHJcbiAgICAgICA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuICgoTWF0aC5yYW5kb20oKSAqIDB4NDAwMDAwMDAgfCAwKSAqIDB4ODAwMDAwKSArXHJcbiAgICAgICAgIChNYXRoLnJhbmRvbSgpICogMHg4MDAwMDAgfCAwKTsgfTtcclxuXHJcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZHApIHtcclxuICAgICAgICB2YXIgYSwgYiwgZSwgaywgdixcclxuICAgICAgICAgIGkgPSAwLFxyXG4gICAgICAgICAgYyA9IFtdLFxyXG4gICAgICAgICAgcmFuZCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuXHJcbiAgICAgICAgaWYgKGRwID09IG51bGwpIGRwID0gREVDSU1BTF9QTEFDRVM7XHJcbiAgICAgICAgZWxzZSBpbnRDaGVjayhkcCwgMCwgTUFYKTtcclxuXHJcbiAgICAgICAgayA9IG1hdGhjZWlsKGRwIC8gTE9HX0JBU0UpO1xyXG5cclxuICAgICAgICBpZiAoQ1JZUFRPKSB7XHJcblxyXG4gICAgICAgICAgLy8gQnJvd3NlcnMgc3VwcG9ydGluZyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzLlxyXG4gICAgICAgICAgaWYgKGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcclxuXHJcbiAgICAgICAgICAgIGEgPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheShrICo9IDIpKTtcclxuXHJcbiAgICAgICAgICAgIGZvciAoOyBpIDwgazspIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gNTMgYml0czpcclxuICAgICAgICAgICAgICAvLyAoKE1hdGgucG93KDIsIDMyKSAtIDEpICogTWF0aC5wb3coMiwgMjEpKS50b1N0cmluZygyKVxyXG4gICAgICAgICAgICAgIC8vIDExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTAwMDAwIDAwMDAwMDAwIDAwMDAwMDAwXHJcbiAgICAgICAgICAgICAgLy8gKChNYXRoLnBvdygyLCAzMikgLSAxKSA+Pj4gMTEpLnRvU3RyaW5nKDIpXHJcbiAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTExMTEgMTExMTExMTEgMTExMTExMTFcclxuICAgICAgICAgICAgICAvLyAweDIwMDAwIGlzIDJeMjEuXHJcbiAgICAgICAgICAgICAgdiA9IGFbaV0gKiAweDIwMDAwICsgKGFbaSArIDFdID4+PiAxMSk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIFJlamVjdGlvbiBzYW1wbGluZzpcclxuICAgICAgICAgICAgICAvLyAwIDw9IHYgPCA5MDA3MTk5MjU0NzQwOTkyXHJcbiAgICAgICAgICAgICAgLy8gUHJvYmFiaWxpdHkgdGhhdCB2ID49IDllMTUsIGlzXHJcbiAgICAgICAgICAgICAgLy8gNzE5OTI1NDc0MDk5MiAvIDkwMDcxOTkyNTQ3NDA5OTIgfj0gMC4wMDA4LCBpLmUuIDEgaW4gMTI1MVxyXG4gICAgICAgICAgICAgIGlmICh2ID49IDllMTUpIHtcclxuICAgICAgICAgICAgICAgIGIgPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgyKSk7XHJcbiAgICAgICAgICAgICAgICBhW2ldID0gYlswXTtcclxuICAgICAgICAgICAgICAgIGFbaSArIDFdID0gYlsxXTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIDAgPD0gdiA8PSA4OTk5OTk5OTk5OTk5OTk5XHJcbiAgICAgICAgICAgICAgICAvLyAwIDw9ICh2ICUgMWUxNCkgPD0gOTk5OTk5OTk5OTk5OTlcclxuICAgICAgICAgICAgICAgIGMucHVzaCh2ICUgMWUxNCk7XHJcbiAgICAgICAgICAgICAgICBpICs9IDI7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGkgPSBrIC8gMjtcclxuXHJcbiAgICAgICAgICAvLyBOb2RlLmpzIHN1cHBvcnRpbmcgY3J5cHRvLnJhbmRvbUJ5dGVzLlxyXG4gICAgICAgICAgfSBlbHNlIGlmIChjcnlwdG8ucmFuZG9tQnl0ZXMpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIGJ1ZmZlclxyXG4gICAgICAgICAgICBhID0gY3J5cHRvLnJhbmRvbUJ5dGVzKGsgKj0gNyk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKDsgaSA8IGs7KSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIDB4MTAwMDAwMDAwMDAwMCBpcyAyXjQ4LCAweDEwMDAwMDAwMDAwIGlzIDJeNDBcclxuICAgICAgICAgICAgICAvLyAweDEwMDAwMDAwMCBpcyAyXjMyLCAweDEwMDAwMDAgaXMgMl4yNFxyXG4gICAgICAgICAgICAgIC8vIDExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExIDExMTExMTExXHJcbiAgICAgICAgICAgICAgLy8gMCA8PSB2IDwgOTAwNzE5OTI1NDc0MDk5MlxyXG4gICAgICAgICAgICAgIHYgPSAoKGFbaV0gJiAzMSkgKiAweDEwMDAwMDAwMDAwMDApICsgKGFbaSArIDFdICogMHgxMDAwMDAwMDAwMCkgK1xyXG4gICAgICAgICAgICAgICAgIChhW2kgKyAyXSAqIDB4MTAwMDAwMDAwKSArIChhW2kgKyAzXSAqIDB4MTAwMDAwMCkgK1xyXG4gICAgICAgICAgICAgICAgIChhW2kgKyA0XSA8PCAxNikgKyAoYVtpICsgNV0gPDwgOCkgKyBhW2kgKyA2XTtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKHYgPj0gOWUxNSkge1xyXG4gICAgICAgICAgICAgICAgY3J5cHRvLnJhbmRvbUJ5dGVzKDcpLmNvcHkoYSwgaSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyAwIDw9ICh2ICUgMWUxNCkgPD0gOTk5OTk5OTk5OTk5OTlcclxuICAgICAgICAgICAgICAgIGMucHVzaCh2ICUgMWUxNCk7XHJcbiAgICAgICAgICAgICAgICBpICs9IDc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGkgPSBrIC8gNztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIENSWVBUTyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ2NyeXB0byB1bmF2YWlsYWJsZScpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gVXNlIE1hdGgucmFuZG9tLlxyXG4gICAgICAgIGlmICghQ1JZUFRPKSB7XHJcblxyXG4gICAgICAgICAgZm9yICg7IGkgPCBrOykge1xyXG4gICAgICAgICAgICB2ID0gcmFuZG9tNTNiaXRJbnQoKTtcclxuICAgICAgICAgICAgaWYgKHYgPCA5ZTE1KSBjW2krK10gPSB2ICUgMWUxNDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGsgPSBjWy0taV07XHJcbiAgICAgICAgZHAgJT0gTE9HX0JBU0U7XHJcblxyXG4gICAgICAgIC8vIENvbnZlcnQgdHJhaWxpbmcgZGlnaXRzIHRvIHplcm9zIGFjY29yZGluZyB0byBkcC5cclxuICAgICAgICBpZiAoayAmJiBkcCkge1xyXG4gICAgICAgICAgdiA9IFBPV1NfVEVOW0xPR19CQVNFIC0gZHBdO1xyXG4gICAgICAgICAgY1tpXSA9IG1hdGhmbG9vcihrIC8gdikgKiB2O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIHRyYWlsaW5nIGVsZW1lbnRzIHdoaWNoIGFyZSB6ZXJvLlxyXG4gICAgICAgIGZvciAoOyBjW2ldID09PSAwOyBjLnBvcCgpLCBpLS0pO1xyXG5cclxuICAgICAgICAvLyBaZXJvP1xyXG4gICAgICAgIGlmIChpIDwgMCkge1xyXG4gICAgICAgICAgYyA9IFtlID0gMF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyBSZW1vdmUgbGVhZGluZyBlbGVtZW50cyB3aGljaCBhcmUgemVybyBhbmQgYWRqdXN0IGV4cG9uZW50IGFjY29yZGluZ2x5LlxyXG4gICAgICAgICAgZm9yIChlID0gLTEgOyBjWzBdID09PSAwOyBjLnNwbGljZSgwLCAxKSwgZSAtPSBMT0dfQkFTRSk7XHJcblxyXG4gICAgICAgICAgLy8gQ291bnQgdGhlIGRpZ2l0cyBvZiB0aGUgZmlyc3QgZWxlbWVudCBvZiBjIHRvIGRldGVybWluZSBsZWFkaW5nIHplcm9zLCBhbmQuLi5cclxuICAgICAgICAgIGZvciAoaSA9IDEsIHYgPSBjWzBdOyB2ID49IDEwOyB2IC89IDEwLCBpKyspO1xyXG5cclxuICAgICAgICAgIC8vIGFkanVzdCB0aGUgZXhwb25lbnQgYWNjb3JkaW5nbHkuXHJcbiAgICAgICAgICBpZiAoaSA8IExPR19CQVNFKSBlIC09IExPR19CQVNFIC0gaTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJhbmQuZSA9IGU7XHJcbiAgICAgICAgcmFuZC5jID0gYztcclxuICAgICAgICByZXR1cm4gcmFuZDtcclxuICAgICAgfTtcclxuICAgIH0pKCk7XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHN1bSBvZiB0aGUgYXJndW1lbnRzLlxyXG4gICAgICpcclxuICAgICAqIGFyZ3VtZW50cyB7bnVtYmVyfHN0cmluZ3xCaWdOdW1iZXJ9XHJcbiAgICAgKi9cclxuICAgIEJpZ051bWJlci5zdW0gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBpID0gMSxcclxuICAgICAgICBhcmdzID0gYXJndW1lbnRzLFxyXG4gICAgICAgIHN1bSA9IG5ldyBCaWdOdW1iZXIoYXJnc1swXSk7XHJcbiAgICAgIGZvciAoOyBpIDwgYXJncy5sZW5ndGg7KSBzdW0gPSBzdW0ucGx1cyhhcmdzW2krK10pO1xyXG4gICAgICByZXR1cm4gc3VtO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLy8gUFJJVkFURSBGVU5DVElPTlNcclxuXHJcblxyXG4gICAgLy8gQ2FsbGVkIGJ5IEJpZ051bWJlciBhbmQgQmlnTnVtYmVyLnByb3RvdHlwZS50b1N0cmluZy5cclxuICAgIGNvbnZlcnRCYXNlID0gKGZ1bmN0aW9uICgpIHtcclxuICAgICAgdmFyIGRlY2ltYWwgPSAnMDEyMzQ1Njc4OSc7XHJcblxyXG4gICAgICAvKlxyXG4gICAgICAgKiBDb252ZXJ0IHN0cmluZyBvZiBiYXNlSW4gdG8gYW4gYXJyYXkgb2YgbnVtYmVycyBvZiBiYXNlT3V0LlxyXG4gICAgICAgKiBFZy4gdG9CYXNlT3V0KCcyNTUnLCAxMCwgMTYpIHJldHVybnMgWzE1LCAxNV0uXHJcbiAgICAgICAqIEVnLiB0b0Jhc2VPdXQoJ2ZmJywgMTYsIDEwKSByZXR1cm5zIFsyLCA1LCA1XS5cclxuICAgICAgICovXHJcbiAgICAgIGZ1bmN0aW9uIHRvQmFzZU91dChzdHIsIGJhc2VJbiwgYmFzZU91dCwgYWxwaGFiZXQpIHtcclxuICAgICAgICB2YXIgaixcclxuICAgICAgICAgIGFyciA9IFswXSxcclxuICAgICAgICAgIGFyckwsXHJcbiAgICAgICAgICBpID0gMCxcclxuICAgICAgICAgIGxlbiA9IHN0ci5sZW5ndGg7XHJcblxyXG4gICAgICAgIGZvciAoOyBpIDwgbGVuOykge1xyXG4gICAgICAgICAgZm9yIChhcnJMID0gYXJyLmxlbmd0aDsgYXJyTC0tOyBhcnJbYXJyTF0gKj0gYmFzZUluKTtcclxuXHJcbiAgICAgICAgICBhcnJbMF0gKz0gYWxwaGFiZXQuaW5kZXhPZihzdHIuY2hhckF0KGkrKykpO1xyXG5cclxuICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBhcnIubGVuZ3RoOyBqKyspIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChhcnJbal0gPiBiYXNlT3V0IC0gMSkge1xyXG4gICAgICAgICAgICAgIGlmIChhcnJbaiArIDFdID09IG51bGwpIGFycltqICsgMV0gPSAwO1xyXG4gICAgICAgICAgICAgIGFycltqICsgMV0gKz0gYXJyW2pdIC8gYmFzZU91dCB8IDA7XHJcbiAgICAgICAgICAgICAgYXJyW2pdICU9IGJhc2VPdXQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBhcnIucmV2ZXJzZSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBDb252ZXJ0IGEgbnVtZXJpYyBzdHJpbmcgb2YgYmFzZUluIHRvIGEgbnVtZXJpYyBzdHJpbmcgb2YgYmFzZU91dC5cclxuICAgICAgLy8gSWYgdGhlIGNhbGxlciBpcyB0b1N0cmluZywgd2UgYXJlIGNvbnZlcnRpbmcgZnJvbSBiYXNlIDEwIHRvIGJhc2VPdXQuXHJcbiAgICAgIC8vIElmIHRoZSBjYWxsZXIgaXMgQmlnTnVtYmVyLCB3ZSBhcmUgY29udmVydGluZyBmcm9tIGJhc2VJbiB0byBiYXNlIDEwLlxyXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHN0ciwgYmFzZUluLCBiYXNlT3V0LCBzaWduLCBjYWxsZXJJc1RvU3RyaW5nKSB7XHJcbiAgICAgICAgdmFyIGFscGhhYmV0LCBkLCBlLCBrLCByLCB4LCB4YywgeSxcclxuICAgICAgICAgIGkgPSBzdHIuaW5kZXhPZignLicpLFxyXG4gICAgICAgICAgZHAgPSBERUNJTUFMX1BMQUNFUyxcclxuICAgICAgICAgIHJtID0gUk9VTkRJTkdfTU9ERTtcclxuXHJcbiAgICAgICAgLy8gTm9uLWludGVnZXIuXHJcbiAgICAgICAgaWYgKGkgPj0gMCkge1xyXG4gICAgICAgICAgayA9IFBPV19QUkVDSVNJT047XHJcblxyXG4gICAgICAgICAgLy8gVW5saW1pdGVkIHByZWNpc2lvbi5cclxuICAgICAgICAgIFBPV19QUkVDSVNJT04gPSAwO1xyXG4gICAgICAgICAgc3RyID0gc3RyLnJlcGxhY2UoJy4nLCAnJyk7XHJcbiAgICAgICAgICB5ID0gbmV3IEJpZ051bWJlcihiYXNlSW4pO1xyXG4gICAgICAgICAgeCA9IHkucG93KHN0ci5sZW5ndGggLSBpKTtcclxuICAgICAgICAgIFBPV19QUkVDSVNJT04gPSBrO1xyXG5cclxuICAgICAgICAgIC8vIENvbnZlcnQgc3RyIGFzIGlmIGFuIGludGVnZXIsIHRoZW4gcmVzdG9yZSB0aGUgZnJhY3Rpb24gcGFydCBieSBkaXZpZGluZyB0aGVcclxuICAgICAgICAgIC8vIHJlc3VsdCBieSBpdHMgYmFzZSByYWlzZWQgdG8gYSBwb3dlci5cclxuXHJcbiAgICAgICAgICB5LmMgPSB0b0Jhc2VPdXQodG9GaXhlZFBvaW50KGNvZWZmVG9TdHJpbmcoeC5jKSwgeC5lLCAnMCcpLFxyXG4gICAgICAgICAgIDEwLCBiYXNlT3V0LCBkZWNpbWFsKTtcclxuICAgICAgICAgIHkuZSA9IHkuYy5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDb252ZXJ0IHRoZSBudW1iZXIgYXMgaW50ZWdlci5cclxuXHJcbiAgICAgICAgeGMgPSB0b0Jhc2VPdXQoc3RyLCBiYXNlSW4sIGJhc2VPdXQsIGNhbGxlcklzVG9TdHJpbmdcclxuICAgICAgICAgPyAoYWxwaGFiZXQgPSBBTFBIQUJFVCwgZGVjaW1hbClcclxuICAgICAgICAgOiAoYWxwaGFiZXQgPSBkZWNpbWFsLCBBTFBIQUJFVCkpO1xyXG5cclxuICAgICAgICAvLyB4YyBub3cgcmVwcmVzZW50cyBzdHIgYXMgYW4gaW50ZWdlciBhbmQgY29udmVydGVkIHRvIGJhc2VPdXQuIGUgaXMgdGhlIGV4cG9uZW50LlxyXG4gICAgICAgIGUgPSBrID0geGMubGVuZ3RoO1xyXG5cclxuICAgICAgICAvLyBSZW1vdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgICAgZm9yICg7IHhjWy0ta10gPT0gMDsgeGMucG9wKCkpO1xyXG5cclxuICAgICAgICAvLyBaZXJvP1xyXG4gICAgICAgIGlmICgheGNbMF0pIHJldHVybiBhbHBoYWJldC5jaGFyQXQoMCk7XHJcblxyXG4gICAgICAgIC8vIERvZXMgc3RyIHJlcHJlc2VudCBhbiBpbnRlZ2VyPyBJZiBzbywgbm8gbmVlZCBmb3IgdGhlIGRpdmlzaW9uLlxyXG4gICAgICAgIGlmIChpIDwgMCkge1xyXG4gICAgICAgICAgLS1lO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB4LmMgPSB4YztcclxuICAgICAgICAgIHguZSA9IGU7XHJcblxyXG4gICAgICAgICAgLy8gVGhlIHNpZ24gaXMgbmVlZGVkIGZvciBjb3JyZWN0IHJvdW5kaW5nLlxyXG4gICAgICAgICAgeC5zID0gc2lnbjtcclxuICAgICAgICAgIHggPSBkaXYoeCwgeSwgZHAsIHJtLCBiYXNlT3V0KTtcclxuICAgICAgICAgIHhjID0geC5jO1xyXG4gICAgICAgICAgciA9IHgucjtcclxuICAgICAgICAgIGUgPSB4LmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB4YyBub3cgcmVwcmVzZW50cyBzdHIgY29udmVydGVkIHRvIGJhc2VPdXQuXHJcblxyXG4gICAgICAgIC8vIFRIZSBpbmRleCBvZiB0aGUgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgICAgZCA9IGUgKyBkcCArIDE7XHJcblxyXG4gICAgICAgIC8vIFRoZSByb3VuZGluZyBkaWdpdDogdGhlIGRpZ2l0IHRvIHRoZSByaWdodCBvZiB0aGUgZGlnaXQgdGhhdCBtYXkgYmUgcm91bmRlZCB1cC5cclxuICAgICAgICBpID0geGNbZF07XHJcblxyXG4gICAgICAgIC8vIExvb2sgYXQgdGhlIHJvdW5kaW5nIGRpZ2l0cyBhbmQgbW9kZSB0byBkZXRlcm1pbmUgd2hldGhlciB0byByb3VuZCB1cC5cclxuXHJcbiAgICAgICAgayA9IGJhc2VPdXQgLyAyO1xyXG4gICAgICAgIHIgPSByIHx8IGQgPCAwIHx8IHhjW2QgKyAxXSAhPSBudWxsO1xyXG5cclxuICAgICAgICByID0gcm0gPCA0ID8gKGkgIT0gbnVsbCB8fCByKSAmJiAocm0gPT0gMCB8fCBybSA9PSAoeC5zIDwgMCA/IDMgOiAyKSlcclxuICAgICAgICAgICAgICA6IGkgPiBrIHx8IGkgPT0gayAmJihybSA9PSA0IHx8IHIgfHwgcm0gPT0gNiAmJiB4Y1tkIC0gMV0gJiAxIHx8XHJcbiAgICAgICAgICAgICAgIHJtID09ICh4LnMgPCAwID8gOCA6IDcpKTtcclxuXHJcbiAgICAgICAgLy8gSWYgdGhlIGluZGV4IG9mIHRoZSByb3VuZGluZyBkaWdpdCBpcyBub3QgZ3JlYXRlciB0aGFuIHplcm8sIG9yIHhjIHJlcHJlc2VudHNcclxuICAgICAgICAvLyB6ZXJvLCB0aGVuIHRoZSByZXN1bHQgb2YgdGhlIGJhc2UgY29udmVyc2lvbiBpcyB6ZXJvIG9yLCBpZiByb3VuZGluZyB1cCwgYSB2YWx1ZVxyXG4gICAgICAgIC8vIHN1Y2ggYXMgMC4wMDAwMS5cclxuICAgICAgICBpZiAoZCA8IDEgfHwgIXhjWzBdKSB7XHJcblxyXG4gICAgICAgICAgLy8gMV4tZHAgb3IgMFxyXG4gICAgICAgICAgc3RyID0gciA/IHRvRml4ZWRQb2ludChhbHBoYWJldC5jaGFyQXQoMSksIC1kcCwgYWxwaGFiZXQuY2hhckF0KDApKSA6IGFscGhhYmV0LmNoYXJBdCgwKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIFRydW5jYXRlIHhjIHRvIHRoZSByZXF1aXJlZCBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMuXHJcbiAgICAgICAgICB4Yy5sZW5ndGggPSBkO1xyXG5cclxuICAgICAgICAgIC8vIFJvdW5kIHVwP1xyXG4gICAgICAgICAgaWYgKHIpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIFJvdW5kaW5nIHVwIG1heSBtZWFuIHRoZSBwcmV2aW91cyBkaWdpdCBoYXMgdG8gYmUgcm91bmRlZCB1cCBhbmQgc28gb24uXHJcbiAgICAgICAgICAgIGZvciAoLS1iYXNlT3V0OyArK3hjWy0tZF0gPiBiYXNlT3V0Oykge1xyXG4gICAgICAgICAgICAgIHhjW2RdID0gMDtcclxuXHJcbiAgICAgICAgICAgICAgaWYgKCFkKSB7XHJcbiAgICAgICAgICAgICAgICArK2U7XHJcbiAgICAgICAgICAgICAgICB4YyA9IFsxXS5jb25jYXQoeGMpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIERldGVybWluZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgICAgIGZvciAoayA9IHhjLmxlbmd0aDsgIXhjWy0ta107KTtcclxuXHJcbiAgICAgICAgICAvLyBFLmcuIFs0LCAxMSwgMTVdIGJlY29tZXMgNGJmLlxyXG4gICAgICAgICAgZm9yIChpID0gMCwgc3RyID0gJyc7IGkgPD0gazsgc3RyICs9IGFscGhhYmV0LmNoYXJBdCh4Y1tpKytdKSk7XHJcblxyXG4gICAgICAgICAgLy8gQWRkIGxlYWRpbmcgemVyb3MsIGRlY2ltYWwgcG9pbnQgYW5kIHRyYWlsaW5nIHplcm9zIGFzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgc3RyID0gdG9GaXhlZFBvaW50KHN0ciwgZSwgYWxwaGFiZXQuY2hhckF0KDApKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFRoZSBjYWxsZXIgd2lsbCBhZGQgdGhlIHNpZ24uXHJcbiAgICAgICAgcmV0dXJuIHN0cjtcclxuICAgICAgfTtcclxuICAgIH0pKCk7XHJcblxyXG5cclxuICAgIC8vIFBlcmZvcm0gZGl2aXNpb24gaW4gdGhlIHNwZWNpZmllZCBiYXNlLiBDYWxsZWQgYnkgZGl2IGFuZCBjb252ZXJ0QmFzZS5cclxuICAgIGRpdiA9IChmdW5jdGlvbiAoKSB7XHJcblxyXG4gICAgICAvLyBBc3N1bWUgbm9uLXplcm8geCBhbmQgay5cclxuICAgICAgZnVuY3Rpb24gbXVsdGlwbHkoeCwgaywgYmFzZSkge1xyXG4gICAgICAgIHZhciBtLCB0ZW1wLCB4bG8sIHhoaSxcclxuICAgICAgICAgIGNhcnJ5ID0gMCxcclxuICAgICAgICAgIGkgPSB4Lmxlbmd0aCxcclxuICAgICAgICAgIGtsbyA9IGsgJSBTUVJUX0JBU0UsXHJcbiAgICAgICAgICBraGkgPSBrIC8gU1FSVF9CQVNFIHwgMDtcclxuXHJcbiAgICAgICAgZm9yICh4ID0geC5zbGljZSgpOyBpLS07KSB7XHJcbiAgICAgICAgICB4bG8gPSB4W2ldICUgU1FSVF9CQVNFO1xyXG4gICAgICAgICAgeGhpID0geFtpXSAvIFNRUlRfQkFTRSB8IDA7XHJcbiAgICAgICAgICBtID0ga2hpICogeGxvICsgeGhpICoga2xvO1xyXG4gICAgICAgICAgdGVtcCA9IGtsbyAqIHhsbyArICgobSAlIFNRUlRfQkFTRSkgKiBTUVJUX0JBU0UpICsgY2Fycnk7XHJcbiAgICAgICAgICBjYXJyeSA9ICh0ZW1wIC8gYmFzZSB8IDApICsgKG0gLyBTUVJUX0JBU0UgfCAwKSArIGtoaSAqIHhoaTtcclxuICAgICAgICAgIHhbaV0gPSB0ZW1wICUgYmFzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjYXJyeSkgeCA9IFtjYXJyeV0uY29uY2F0KHgpO1xyXG5cclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfVxyXG5cclxuICAgICAgZnVuY3Rpb24gY29tcGFyZShhLCBiLCBhTCwgYkwpIHtcclxuICAgICAgICB2YXIgaSwgY21wO1xyXG5cclxuICAgICAgICBpZiAoYUwgIT0gYkwpIHtcclxuICAgICAgICAgIGNtcCA9IGFMID4gYkwgPyAxIDogLTE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICBmb3IgKGkgPSBjbXAgPSAwOyBpIDwgYUw7IGkrKykge1xyXG5cclxuICAgICAgICAgICAgaWYgKGFbaV0gIT0gYltpXSkge1xyXG4gICAgICAgICAgICAgIGNtcCA9IGFbaV0gPiBiW2ldID8gMSA6IC0xO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gY21wO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmdW5jdGlvbiBzdWJ0cmFjdChhLCBiLCBhTCwgYmFzZSkge1xyXG4gICAgICAgIHZhciBpID0gMDtcclxuXHJcbiAgICAgICAgLy8gU3VidHJhY3QgYiBmcm9tIGEuXHJcbiAgICAgICAgZm9yICg7IGFMLS07KSB7XHJcbiAgICAgICAgICBhW2FMXSAtPSBpO1xyXG4gICAgICAgICAgaSA9IGFbYUxdIDwgYlthTF0gPyAxIDogMDtcclxuICAgICAgICAgIGFbYUxdID0gaSAqIGJhc2UgKyBhW2FMXSAtIGJbYUxdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmVtb3ZlIGxlYWRpbmcgemVyb3MuXHJcbiAgICAgICAgZm9yICg7ICFhWzBdICYmIGEubGVuZ3RoID4gMTsgYS5zcGxpY2UoMCwgMSkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyB4OiBkaXZpZGVuZCwgeTogZGl2aXNvci5cclxuICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4LCB5LCBkcCwgcm0sIGJhc2UpIHtcclxuICAgICAgICB2YXIgY21wLCBlLCBpLCBtb3JlLCBuLCBwcm9kLCBwcm9kTCwgcSwgcWMsIHJlbSwgcmVtTCwgcmVtMCwgeGksIHhMLCB5YzAsXHJcbiAgICAgICAgICB5TCwgeXosXHJcbiAgICAgICAgICBzID0geC5zID09IHkucyA/IDEgOiAtMSxcclxuICAgICAgICAgIHhjID0geC5jLFxyXG4gICAgICAgICAgeWMgPSB5LmM7XHJcblxyXG4gICAgICAgIC8vIEVpdGhlciBOYU4sIEluZmluaXR5IG9yIDA/XHJcbiAgICAgICAgaWYgKCF4YyB8fCAheGNbMF0gfHwgIXljIHx8ICF5Y1swXSkge1xyXG5cclxuICAgICAgICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKFxyXG5cclxuICAgICAgICAgICAvLyBSZXR1cm4gTmFOIGlmIGVpdGhlciBOYU4sIG9yIGJvdGggSW5maW5pdHkgb3IgMC5cclxuICAgICAgICAgICAheC5zIHx8ICF5LnMgfHwgKHhjID8geWMgJiYgeGNbMF0gPT0geWNbMF0gOiAheWMpID8gTmFOIDpcclxuXHJcbiAgICAgICAgICAgIC8vIFJldHVybiDCsTAgaWYgeCBpcyDCsTAgb3IgeSBpcyDCsUluZmluaXR5LCBvciByZXR1cm4gwrFJbmZpbml0eSBhcyB5IGlzIMKxMC5cclxuICAgICAgICAgICAgeGMgJiYgeGNbMF0gPT0gMCB8fCAheWMgPyBzICogMCA6IHMgLyAwXHJcbiAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBxID0gbmV3IEJpZ051bWJlcihzKTtcclxuICAgICAgICBxYyA9IHEuYyA9IFtdO1xyXG4gICAgICAgIGUgPSB4LmUgLSB5LmU7XHJcbiAgICAgICAgcyA9IGRwICsgZSArIDE7XHJcblxyXG4gICAgICAgIGlmICghYmFzZSkge1xyXG4gICAgICAgICAgYmFzZSA9IEJBU0U7XHJcbiAgICAgICAgICBlID0gYml0Rmxvb3IoeC5lIC8gTE9HX0JBU0UpIC0gYml0Rmxvb3IoeS5lIC8gTE9HX0JBU0UpO1xyXG4gICAgICAgICAgcyA9IHMgLyBMT0dfQkFTRSB8IDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBSZXN1bHQgZXhwb25lbnQgbWF5IGJlIG9uZSBsZXNzIHRoZW4gdGhlIGN1cnJlbnQgdmFsdWUgb2YgZS5cclxuICAgICAgICAvLyBUaGUgY29lZmZpY2llbnRzIG9mIHRoZSBCaWdOdW1iZXJzIGZyb20gY29udmVydEJhc2UgbWF5IGhhdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgICAgZm9yIChpID0gMDsgeWNbaV0gPT0gKHhjW2ldIHx8IDApOyBpKyspO1xyXG5cclxuICAgICAgICBpZiAoeWNbaV0gPiAoeGNbaV0gfHwgMCkpIGUtLTtcclxuXHJcbiAgICAgICAgaWYgKHMgPCAwKSB7XHJcbiAgICAgICAgICBxYy5wdXNoKDEpO1xyXG4gICAgICAgICAgbW9yZSA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHhMID0geGMubGVuZ3RoO1xyXG4gICAgICAgICAgeUwgPSB5Yy5sZW5ndGg7XHJcbiAgICAgICAgICBpID0gMDtcclxuICAgICAgICAgIHMgKz0gMjtcclxuXHJcbiAgICAgICAgICAvLyBOb3JtYWxpc2UgeGMgYW5kIHljIHNvIGhpZ2hlc3Qgb3JkZXIgZGlnaXQgb2YgeWMgaXMgPj0gYmFzZSAvIDIuXHJcblxyXG4gICAgICAgICAgbiA9IG1hdGhmbG9vcihiYXNlIC8gKHljWzBdICsgMSkpO1xyXG5cclxuICAgICAgICAgIC8vIE5vdCBuZWNlc3NhcnksIGJ1dCB0byBoYW5kbGUgb2RkIGJhc2VzIHdoZXJlIHljWzBdID09IChiYXNlIC8gMikgLSAxLlxyXG4gICAgICAgICAgLy8gaWYgKG4gPiAxIHx8IG4rKyA9PSAxICYmIHljWzBdIDwgYmFzZSAvIDIpIHtcclxuICAgICAgICAgIGlmIChuID4gMSkge1xyXG4gICAgICAgICAgICB5YyA9IG11bHRpcGx5KHljLCBuLCBiYXNlKTtcclxuICAgICAgICAgICAgeGMgPSBtdWx0aXBseSh4YywgbiwgYmFzZSk7XHJcbiAgICAgICAgICAgIHlMID0geWMubGVuZ3RoO1xyXG4gICAgICAgICAgICB4TCA9IHhjLmxlbmd0aDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB4aSA9IHlMO1xyXG4gICAgICAgICAgcmVtID0geGMuc2xpY2UoMCwgeUwpO1xyXG4gICAgICAgICAgcmVtTCA9IHJlbS5sZW5ndGg7XHJcblxyXG4gICAgICAgICAgLy8gQWRkIHplcm9zIHRvIG1ha2UgcmVtYWluZGVyIGFzIGxvbmcgYXMgZGl2aXNvci5cclxuICAgICAgICAgIGZvciAoOyByZW1MIDwgeUw7IHJlbVtyZW1MKytdID0gMCk7XHJcbiAgICAgICAgICB5eiA9IHljLnNsaWNlKCk7XHJcbiAgICAgICAgICB5eiA9IFswXS5jb25jYXQoeXopO1xyXG4gICAgICAgICAgeWMwID0geWNbMF07XHJcbiAgICAgICAgICBpZiAoeWNbMV0gPj0gYmFzZSAvIDIpIHljMCsrO1xyXG4gICAgICAgICAgLy8gTm90IG5lY2Vzc2FyeSwgYnV0IHRvIHByZXZlbnQgdHJpYWwgZGlnaXQgbiA+IGJhc2UsIHdoZW4gdXNpbmcgYmFzZSAzLlxyXG4gICAgICAgICAgLy8gZWxzZSBpZiAoYmFzZSA9PSAzICYmIHljMCA9PSAxKSB5YzAgPSAxICsgMWUtMTU7XHJcblxyXG4gICAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICBuID0gMDtcclxuXHJcbiAgICAgICAgICAgIC8vIENvbXBhcmUgZGl2aXNvciBhbmQgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICBjbXAgPSBjb21wYXJlKHljLCByZW0sIHlMLCByZW1MKTtcclxuXHJcbiAgICAgICAgICAgIC8vIElmIGRpdmlzb3IgPCByZW1haW5kZXIuXHJcbiAgICAgICAgICAgIGlmIChjbXAgPCAwKSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0cmlhbCBkaWdpdCwgbi5cclxuXHJcbiAgICAgICAgICAgICAgcmVtMCA9IHJlbVswXTtcclxuICAgICAgICAgICAgICBpZiAoeUwgIT0gcmVtTCkgcmVtMCA9IHJlbTAgKiBiYXNlICsgKHJlbVsxXSB8fCAwKTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gbiBpcyBob3cgbWFueSB0aW1lcyB0aGUgZGl2aXNvciBnb2VzIGludG8gdGhlIGN1cnJlbnQgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIG4gPSBtYXRoZmxvb3IocmVtMCAvIHljMCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vICBBbGdvcml0aG06XHJcbiAgICAgICAgICAgICAgLy8gIHByb2R1Y3QgPSBkaXZpc29yIG11bHRpcGxpZWQgYnkgdHJpYWwgZGlnaXQgKG4pLlxyXG4gICAgICAgICAgICAgIC8vICBDb21wYXJlIHByb2R1Y3QgYW5kIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAvLyAgSWYgcHJvZHVjdCBpcyBncmVhdGVyIHRoYW4gcmVtYWluZGVyOlxyXG4gICAgICAgICAgICAgIC8vICAgIFN1YnRyYWN0IGRpdmlzb3IgZnJvbSBwcm9kdWN0LCBkZWNyZW1lbnQgdHJpYWwgZGlnaXQuXHJcbiAgICAgICAgICAgICAgLy8gIFN1YnRyYWN0IHByb2R1Y3QgZnJvbSByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgLy8gIElmIHByb2R1Y3Qgd2FzIGxlc3MgdGhhbiByZW1haW5kZXIgYXQgdGhlIGxhc3QgY29tcGFyZTpcclxuICAgICAgICAgICAgICAvLyAgICBDb21wYXJlIG5ldyByZW1haW5kZXIgYW5kIGRpdmlzb3IuXHJcbiAgICAgICAgICAgICAgLy8gICAgSWYgcmVtYWluZGVyIGlzIGdyZWF0ZXIgdGhhbiBkaXZpc29yOlxyXG4gICAgICAgICAgICAgIC8vICAgICAgU3VidHJhY3QgZGl2aXNvciBmcm9tIHJlbWFpbmRlciwgaW5jcmVtZW50IHRyaWFsIGRpZ2l0LlxyXG5cclxuICAgICAgICAgICAgICBpZiAobiA+IDEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBuIG1heSBiZSA+IGJhc2Ugb25seSB3aGVuIGJhc2UgaXMgMy5cclxuICAgICAgICAgICAgICAgIGlmIChuID49IGJhc2UpIG4gPSBiYXNlIC0gMTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBwcm9kdWN0ID0gZGl2aXNvciAqIHRyaWFsIGRpZ2l0LlxyXG4gICAgICAgICAgICAgICAgcHJvZCA9IG11bHRpcGx5KHljLCBuLCBiYXNlKTtcclxuICAgICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb21wYXJlIHByb2R1Y3QgYW5kIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIC8vIElmIHByb2R1Y3QgPiByZW1haW5kZXIgdGhlbiB0cmlhbCBkaWdpdCBuIHRvbyBoaWdoLlxyXG4gICAgICAgICAgICAgICAgLy8gbiBpcyAxIHRvbyBoaWdoIGFib3V0IDUlIG9mIHRoZSB0aW1lLCBhbmQgaXMgbm90IGtub3duIHRvIGhhdmVcclxuICAgICAgICAgICAgICAgIC8vIGV2ZXIgYmVlbiBtb3JlIHRoYW4gMSB0b28gaGlnaC5cclxuICAgICAgICAgICAgICAgIHdoaWxlIChjb21wYXJlKHByb2QsIHJlbSwgcHJvZEwsIHJlbUwpID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgbi0tO1xyXG5cclxuICAgICAgICAgICAgICAgICAgLy8gU3VidHJhY3QgZGl2aXNvciBmcm9tIHByb2R1Y3QuXHJcbiAgICAgICAgICAgICAgICAgIHN1YnRyYWN0KHByb2QsIHlMIDwgcHJvZEwgPyB5eiA6IHljLCBwcm9kTCwgYmFzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHByb2RMID0gcHJvZC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgIGNtcCA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBuIGlzIDAgb3IgMSwgY21wIGlzIC0xLlxyXG4gICAgICAgICAgICAgICAgLy8gSWYgbiBpcyAwLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNvbXBhcmUgeWMgYW5kIHJlbSBhZ2FpbiBiZWxvdyxcclxuICAgICAgICAgICAgICAgIC8vIHNvIGNoYW5nZSBjbXAgdG8gMSB0byBhdm9pZCBpdC5cclxuICAgICAgICAgICAgICAgIC8vIElmIG4gaXMgMSwgbGVhdmUgY21wIGFzIC0xLCBzbyB5YyBhbmQgcmVtIGFyZSBjb21wYXJlZCBhZ2Fpbi5cclxuICAgICAgICAgICAgICAgIGlmIChuID09IDApIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgIC8vIGRpdmlzb3IgPCByZW1haW5kZXIsIHNvIG4gbXVzdCBiZSBhdCBsZWFzdCAxLlxyXG4gICAgICAgICAgICAgICAgICBjbXAgPSBuID0gMTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBwcm9kdWN0ID0gZGl2aXNvclxyXG4gICAgICAgICAgICAgICAgcHJvZCA9IHljLnNsaWNlKCk7XHJcbiAgICAgICAgICAgICAgICBwcm9kTCA9IHByb2QubGVuZ3RoO1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgaWYgKHByb2RMIDwgcmVtTCkgcHJvZCA9IFswXS5jb25jYXQocHJvZCk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIFN1YnRyYWN0IHByb2R1Y3QgZnJvbSByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgc3VidHJhY3QocmVtLCBwcm9kLCByZW1MLCBiYXNlKTtcclxuICAgICAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuXHJcbiAgICAgICAgICAgICAgIC8vIElmIHByb2R1Y3Qgd2FzIDwgcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgIGlmIChjbXAgPT0gLTEpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBDb21wYXJlIGRpdmlzb3IgYW5kIG5ldyByZW1haW5kZXIuXHJcbiAgICAgICAgICAgICAgICAvLyBJZiBkaXZpc29yIDwgbmV3IHJlbWFpbmRlciwgc3VidHJhY3QgZGl2aXNvciBmcm9tIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgICAgIC8vIFRyaWFsIGRpZ2l0IG4gdG9vIGxvdy5cclxuICAgICAgICAgICAgICAgIC8vIG4gaXMgMSB0b28gbG93IGFib3V0IDUlIG9mIHRoZSB0aW1lLCBhbmQgdmVyeSByYXJlbHkgMiB0b28gbG93LlxyXG4gICAgICAgICAgICAgICAgd2hpbGUgKGNvbXBhcmUoeWMsIHJlbSwgeUwsIHJlbUwpIDwgMSkge1xyXG4gICAgICAgICAgICAgICAgICBuKys7XHJcblxyXG4gICAgICAgICAgICAgICAgICAvLyBTdWJ0cmFjdCBkaXZpc29yIGZyb20gcmVtYWluZGVyLlxyXG4gICAgICAgICAgICAgICAgICBzdWJ0cmFjdChyZW0sIHlMIDwgcmVtTCA/IHl6IDogeWMsIHJlbUwsIGJhc2UpO1xyXG4gICAgICAgICAgICAgICAgICByZW1MID0gcmVtLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY21wID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgbisrO1xyXG4gICAgICAgICAgICAgIHJlbSA9IFswXTtcclxuICAgICAgICAgICAgfSAvLyBlbHNlIGNtcCA9PT0gMSBhbmQgbiB3aWxsIGJlIDBcclxuXHJcbiAgICAgICAgICAgIC8vIEFkZCB0aGUgbmV4dCBkaWdpdCwgbiwgdG8gdGhlIHJlc3VsdCBhcnJheS5cclxuICAgICAgICAgICAgcWNbaSsrXSA9IG47XHJcblxyXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHJlbWFpbmRlci5cclxuICAgICAgICAgICAgaWYgKHJlbVswXSkge1xyXG4gICAgICAgICAgICAgIHJlbVtyZW1MKytdID0geGNbeGldIHx8IDA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVtID0gW3hjW3hpXV07XHJcbiAgICAgICAgICAgICAgcmVtTCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gd2hpbGUgKCh4aSsrIDwgeEwgfHwgcmVtWzBdICE9IG51bGwpICYmIHMtLSk7XHJcblxyXG4gICAgICAgICAgbW9yZSA9IHJlbVswXSAhPSBudWxsO1xyXG5cclxuICAgICAgICAgIC8vIExlYWRpbmcgemVybz9cclxuICAgICAgICAgIGlmICghcWNbMF0pIHFjLnNwbGljZSgwLCAxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChiYXNlID09IEJBU0UpIHtcclxuXHJcbiAgICAgICAgICAvLyBUbyBjYWxjdWxhdGUgcS5lLCBmaXJzdCBnZXQgdGhlIG51bWJlciBvZiBkaWdpdHMgb2YgcWNbMF0uXHJcbiAgICAgICAgICBmb3IgKGkgPSAxLCBzID0gcWNbMF07IHMgPj0gMTA7IHMgLz0gMTAsIGkrKyk7XHJcblxyXG4gICAgICAgICAgcm91bmQocSwgZHAgKyAocS5lID0gaSArIGUgKiBMT0dfQkFTRSAtIDEpICsgMSwgcm0sIG1vcmUpO1xyXG5cclxuICAgICAgICAvLyBDYWxsZXIgaXMgY29udmVydEJhc2UuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHEuZSA9IGU7XHJcbiAgICAgICAgICBxLnIgPSArbW9yZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBxO1xyXG4gICAgICB9O1xyXG4gICAgfSkoKTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIEJpZ051bWJlciBuIGluIGZpeGVkLXBvaW50IG9yIGV4cG9uZW50aWFsXHJcbiAgICAgKiBub3RhdGlvbiByb3VuZGVkIHRvIHRoZSBzcGVjaWZpZWQgZGVjaW1hbCBwbGFjZXMgb3Igc2lnbmlmaWNhbnQgZGlnaXRzLlxyXG4gICAgICpcclxuICAgICAqIG46IGEgQmlnTnVtYmVyLlxyXG4gICAgICogaTogdGhlIGluZGV4IG9mIHRoZSBsYXN0IGRpZ2l0IHJlcXVpcmVkIChpLmUuIHRoZSBkaWdpdCB0aGF0IG1heSBiZSByb3VuZGVkIHVwKS5cclxuICAgICAqIHJtOiB0aGUgcm91bmRpbmcgbW9kZS5cclxuICAgICAqIGlkOiAxICh0b0V4cG9uZW50aWFsKSBvciAyICh0b1ByZWNpc2lvbikuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIGZvcm1hdChuLCBpLCBybSwgaWQpIHtcclxuICAgICAgdmFyIGMwLCBlLCBuZSwgbGVuLCBzdHI7XHJcblxyXG4gICAgICBpZiAocm0gPT0gbnVsbCkgcm0gPSBST1VORElOR19NT0RFO1xyXG4gICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuXHJcbiAgICAgIGlmICghbi5jKSByZXR1cm4gbi50b1N0cmluZygpO1xyXG5cclxuICAgICAgYzAgPSBuLmNbMF07XHJcbiAgICAgIG5lID0gbi5lO1xyXG5cclxuICAgICAgaWYgKGkgPT0gbnVsbCkge1xyXG4gICAgICAgIHN0ciA9IGNvZWZmVG9TdHJpbmcobi5jKTtcclxuICAgICAgICBzdHIgPSBpZCA9PSAxIHx8IGlkID09IDIgJiYgKG5lIDw9IFRPX0VYUF9ORUcgfHwgbmUgPj0gVE9fRVhQX1BPUylcclxuICAgICAgICAgPyB0b0V4cG9uZW50aWFsKHN0ciwgbmUpXHJcbiAgICAgICAgIDogdG9GaXhlZFBvaW50KHN0ciwgbmUsICcwJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbiA9IHJvdW5kKG5ldyBCaWdOdW1iZXIobiksIGksIHJtKTtcclxuXHJcbiAgICAgICAgLy8gbi5lIG1heSBoYXZlIGNoYW5nZWQgaWYgdGhlIHZhbHVlIHdhcyByb3VuZGVkIHVwLlxyXG4gICAgICAgIGUgPSBuLmU7XHJcblxyXG4gICAgICAgIHN0ciA9IGNvZWZmVG9TdHJpbmcobi5jKTtcclxuICAgICAgICBsZW4gPSBzdHIubGVuZ3RoO1xyXG5cclxuICAgICAgICAvLyB0b1ByZWNpc2lvbiByZXR1cm5zIGV4cG9uZW50aWFsIG5vdGF0aW9uIGlmIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzXHJcbiAgICAgICAgLy8gc3BlY2lmaWVkIGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBuZWNlc3NhcnkgdG8gcmVwcmVzZW50IHRoZSBpbnRlZ2VyXHJcbiAgICAgICAgLy8gcGFydCBvZiB0aGUgdmFsdWUgaW4gZml4ZWQtcG9pbnQgbm90YXRpb24uXHJcblxyXG4gICAgICAgIC8vIEV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICAgIGlmIChpZCA9PSAxIHx8IGlkID09IDIgJiYgKGkgPD0gZSB8fCBlIDw9IFRPX0VYUF9ORUcpKSB7XHJcblxyXG4gICAgICAgICAgLy8gQXBwZW5kIHplcm9zP1xyXG4gICAgICAgICAgZm9yICg7IGxlbiA8IGk7IHN0ciArPSAnMCcsIGxlbisrKTtcclxuICAgICAgICAgIHN0ciA9IHRvRXhwb25lbnRpYWwoc3RyLCBlKTtcclxuXHJcbiAgICAgICAgLy8gRml4ZWQtcG9pbnQgbm90YXRpb24uXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGkgLT0gbmU7XHJcbiAgICAgICAgICBzdHIgPSB0b0ZpeGVkUG9pbnQoc3RyLCBlLCAnMCcpO1xyXG5cclxuICAgICAgICAgIC8vIEFwcGVuZCB6ZXJvcz9cclxuICAgICAgICAgIGlmIChlICsgMSA+IGxlbikge1xyXG4gICAgICAgICAgICBpZiAoLS1pID4gMCkgZm9yIChzdHIgKz0gJy4nOyBpLS07IHN0ciArPSAnMCcpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaSArPSBlIC0gbGVuO1xyXG4gICAgICAgICAgICBpZiAoaSA+IDApIHtcclxuICAgICAgICAgICAgICBpZiAoZSArIDEgPT0gbGVuKSBzdHIgKz0gJy4nO1xyXG4gICAgICAgICAgICAgIGZvciAoOyBpLS07IHN0ciArPSAnMCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbi5zIDwgMCAmJiBjMCA/ICctJyArIHN0ciA6IHN0cjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gSGFuZGxlIEJpZ051bWJlci5tYXggYW5kIEJpZ051bWJlci5taW4uXHJcbiAgICBmdW5jdGlvbiBtYXhPck1pbihhcmdzLCBtZXRob2QpIHtcclxuICAgICAgdmFyIG4sXHJcbiAgICAgICAgaSA9IDEsXHJcbiAgICAgICAgbSA9IG5ldyBCaWdOdW1iZXIoYXJnc1swXSk7XHJcblxyXG4gICAgICBmb3IgKDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBuID0gbmV3IEJpZ051bWJlcihhcmdzW2ldKTtcclxuXHJcbiAgICAgICAgLy8gSWYgYW55IG51bWJlciBpcyBOYU4sIHJldHVybiBOYU4uXHJcbiAgICAgICAgaWYgKCFuLnMpIHtcclxuICAgICAgICAgIG0gPSBuO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfSBlbHNlIGlmIChtZXRob2QuY2FsbChtLCBuKSkge1xyXG4gICAgICAgICAgbSA9IG47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFN0cmlwIHRyYWlsaW5nIHplcm9zLCBjYWxjdWxhdGUgYmFzZSAxMCBleHBvbmVudCBhbmQgY2hlY2sgYWdhaW5zdCBNSU5fRVhQIGFuZCBNQVhfRVhQLlxyXG4gICAgICogQ2FsbGVkIGJ5IG1pbnVzLCBwbHVzIGFuZCB0aW1lcy5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gbm9ybWFsaXNlKG4sIGMsIGUpIHtcclxuICAgICAgdmFyIGkgPSAxLFxyXG4gICAgICAgIGogPSBjLmxlbmd0aDtcclxuXHJcbiAgICAgICAvLyBSZW1vdmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICAgIGZvciAoOyAhY1stLWpdOyBjLnBvcCgpKTtcclxuXHJcbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYmFzZSAxMCBleHBvbmVudC4gRmlyc3QgZ2V0IHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIGNbMF0uXHJcbiAgICAgIGZvciAoaiA9IGNbMF07IGogPj0gMTA7IGogLz0gMTAsIGkrKyk7XHJcblxyXG4gICAgICAvLyBPdmVyZmxvdz9cclxuICAgICAgaWYgKChlID0gaSArIGUgKiBMT0dfQkFTRSAtIDEpID4gTUFYX0VYUCkge1xyXG5cclxuICAgICAgICAvLyBJbmZpbml0eS5cclxuICAgICAgICBuLmMgPSBuLmUgPSBudWxsO1xyXG5cclxuICAgICAgLy8gVW5kZXJmbG93P1xyXG4gICAgICB9IGVsc2UgaWYgKGUgPCBNSU5fRVhQKSB7XHJcblxyXG4gICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgbi5jID0gW24uZSA9IDBdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG4uZSA9IGU7XHJcbiAgICAgICAgbi5jID0gYztcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG47XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIEhhbmRsZSB2YWx1ZXMgdGhhdCBmYWlsIHRoZSB2YWxpZGl0eSB0ZXN0IGluIEJpZ051bWJlci5cclxuICAgIHBhcnNlTnVtZXJpYyA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBiYXNlUHJlZml4ID0gL14oLT8pMChbeGJvXSkoPz1cXHdbXFx3Ll0qJCkvaSxcclxuICAgICAgICBkb3RBZnRlciA9IC9eKFteLl0rKVxcLiQvLFxyXG4gICAgICAgIGRvdEJlZm9yZSA9IC9eXFwuKFteLl0rKSQvLFxyXG4gICAgICAgIGlzSW5maW5pdHlPck5hTiA9IC9eLT8oSW5maW5pdHl8TmFOKSQvLFxyXG4gICAgICAgIHdoaXRlc3BhY2VPclBsdXMgPSAvXlxccypcXCsoPz1bXFx3Ll0pfF5cXHMrfFxccyskL2c7XHJcblxyXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKHgsIHN0ciwgaXNOdW0sIGIpIHtcclxuICAgICAgICB2YXIgYmFzZSxcclxuICAgICAgICAgIHMgPSBpc051bSA/IHN0ciA6IHN0ci5yZXBsYWNlKHdoaXRlc3BhY2VPclBsdXMsICcnKTtcclxuXHJcbiAgICAgICAgLy8gTm8gZXhjZXB0aW9uIG9uIMKxSW5maW5pdHkgb3IgTmFOLlxyXG4gICAgICAgIGlmIChpc0luZmluaXR5T3JOYU4udGVzdChzKSkge1xyXG4gICAgICAgICAgeC5zID0gaXNOYU4ocykgPyBudWxsIDogcyA8IDAgPyAtMSA6IDE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmICghaXNOdW0pIHtcclxuXHJcbiAgICAgICAgICAgIC8vIGJhc2VQcmVmaXggPSAvXigtPykwKFt4Ym9dKSg/PVxcd1tcXHcuXSokKS9pXHJcbiAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoYmFzZVByZWZpeCwgZnVuY3Rpb24gKG0sIHAxLCBwMikge1xyXG4gICAgICAgICAgICAgIGJhc2UgPSAocDIgPSBwMi50b0xvd2VyQ2FzZSgpKSA9PSAneCcgPyAxNiA6IHAyID09ICdiJyA/IDIgOiA4O1xyXG4gICAgICAgICAgICAgIHJldHVybiAhYiB8fCBiID09IGJhc2UgPyBwMSA6IG07XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgaWYgKGIpIHtcclxuICAgICAgICAgICAgICBiYXNlID0gYjtcclxuXHJcbiAgICAgICAgICAgICAgLy8gRS5nLiAnMS4nIHRvICcxJywgJy4xJyB0byAnMC4xJ1xyXG4gICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoZG90QWZ0ZXIsICckMScpLnJlcGxhY2UoZG90QmVmb3JlLCAnMC4kMScpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoc3RyICE9IHMpIHJldHVybiBuZXcgQmlnTnVtYmVyKHMsIGJhc2UpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBOb3QgYSBudW1iZXI6IHtufSdcclxuICAgICAgICAgIC8vICdbQmlnTnVtYmVyIEVycm9yXSBOb3QgYSBiYXNlIHtifSBudW1iZXI6IHtufSdcclxuICAgICAgICAgIGlmIChCaWdOdW1iZXIuREVCVUcpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAnTm90IGEnICsgKGIgPyAnIGJhc2UgJyArIGIgOiAnJykgKyAnIG51bWJlcjogJyArIHN0cik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gTmFOXHJcbiAgICAgICAgICB4LnMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgeC5jID0geC5lID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfSkoKTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJvdW5kIHggdG8gc2Qgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0uIENoZWNrIGZvciBvdmVyL3VuZGVyLWZsb3cuXHJcbiAgICAgKiBJZiByIGlzIHRydXRoeSwgaXQgaXMga25vd24gdGhhdCB0aGVyZSBhcmUgbW9yZSBkaWdpdHMgYWZ0ZXIgdGhlIHJvdW5kaW5nIGRpZ2l0LlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiByb3VuZCh4LCBzZCwgcm0sIHIpIHtcclxuICAgICAgdmFyIGQsIGksIGosIGssIG4sIG5pLCByZCxcclxuICAgICAgICB4YyA9IHguYyxcclxuICAgICAgICBwb3dzMTAgPSBQT1dTX1RFTjtcclxuXHJcbiAgICAgIC8vIGlmIHggaXMgbm90IEluZmluaXR5IG9yIE5hTi4uLlxyXG4gICAgICBpZiAoeGMpIHtcclxuXHJcbiAgICAgICAgLy8gcmQgaXMgdGhlIHJvdW5kaW5nIGRpZ2l0LCBpLmUuIHRoZSBkaWdpdCBhZnRlciB0aGUgZGlnaXQgdGhhdCBtYXkgYmUgcm91bmRlZCB1cC5cclxuICAgICAgICAvLyBuIGlzIGEgYmFzZSAxZTE0IG51bWJlciwgdGhlIHZhbHVlIG9mIHRoZSBlbGVtZW50IG9mIGFycmF5IHguYyBjb250YWluaW5nIHJkLlxyXG4gICAgICAgIC8vIG5pIGlzIHRoZSBpbmRleCBvZiBuIHdpdGhpbiB4LmMuXHJcbiAgICAgICAgLy8gZCBpcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBuLlxyXG4gICAgICAgIC8vIGkgaXMgdGhlIGluZGV4IG9mIHJkIHdpdGhpbiBuIGluY2x1ZGluZyBsZWFkaW5nIHplcm9zLlxyXG4gICAgICAgIC8vIGogaXMgdGhlIGFjdHVhbCBpbmRleCBvZiByZCB3aXRoaW4gbiAoaWYgPCAwLCByZCBpcyBhIGxlYWRpbmcgemVybykuXHJcbiAgICAgICAgb3V0OiB7XHJcblxyXG4gICAgICAgICAgLy8gR2V0IHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIHRoZSBmaXJzdCBlbGVtZW50IG9mIHhjLlxyXG4gICAgICAgICAgZm9yIChkID0gMSwgayA9IHhjWzBdOyBrID49IDEwOyBrIC89IDEwLCBkKyspO1xyXG4gICAgICAgICAgaSA9IHNkIC0gZDtcclxuXHJcbiAgICAgICAgICAvLyBJZiB0aGUgcm91bmRpbmcgZGlnaXQgaXMgaW4gdGhlIGZpcnN0IGVsZW1lbnQgb2YgeGMuLi5cclxuICAgICAgICAgIGlmIChpIDwgMCkge1xyXG4gICAgICAgICAgICBpICs9IExPR19CQVNFO1xyXG4gICAgICAgICAgICBqID0gc2Q7XHJcbiAgICAgICAgICAgIG4gPSB4Y1tuaSA9IDBdO1xyXG5cclxuICAgICAgICAgICAgLy8gR2V0IHRoZSByb3VuZGluZyBkaWdpdCBhdCBpbmRleCBqIG9mIG4uXHJcbiAgICAgICAgICAgIHJkID0gbiAvIHBvd3MxMFtkIC0gaiAtIDFdICUgMTAgfCAwO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbmkgPSBtYXRoY2VpbCgoaSArIDEpIC8gTE9HX0JBU0UpO1xyXG5cclxuICAgICAgICAgICAgaWYgKG5pID49IHhjLmxlbmd0aCkge1xyXG5cclxuICAgICAgICAgICAgICBpZiAocikge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIE5lZWRlZCBieSBzcXJ0LlxyXG4gICAgICAgICAgICAgICAgZm9yICg7IHhjLmxlbmd0aCA8PSBuaTsgeGMucHVzaCgwKSk7XHJcbiAgICAgICAgICAgICAgICBuID0gcmQgPSAwO1xyXG4gICAgICAgICAgICAgICAgZCA9IDE7XHJcbiAgICAgICAgICAgICAgICBpICU9IExPR19CQVNFO1xyXG4gICAgICAgICAgICAgICAgaiA9IGkgLSBMT0dfQkFTRSArIDE7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGJyZWFrIG91dDtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbiA9IGsgPSB4Y1tuaV07XHJcblxyXG4gICAgICAgICAgICAgIC8vIEdldCB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBvZiBuLlxyXG4gICAgICAgICAgICAgIGZvciAoZCA9IDE7IGsgPj0gMTA7IGsgLz0gMTAsIGQrKyk7XHJcblxyXG4gICAgICAgICAgICAgIC8vIEdldCB0aGUgaW5kZXggb2YgcmQgd2l0aGluIG4uXHJcbiAgICAgICAgICAgICAgaSAlPSBMT0dfQkFTRTtcclxuXHJcbiAgICAgICAgICAgICAgLy8gR2V0IHRoZSBpbmRleCBvZiByZCB3aXRoaW4gbiwgYWRqdXN0ZWQgZm9yIGxlYWRpbmcgemVyb3MuXHJcbiAgICAgICAgICAgICAgLy8gVGhlIG51bWJlciBvZiBsZWFkaW5nIHplcm9zIG9mIG4gaXMgZ2l2ZW4gYnkgTE9HX0JBU0UgLSBkLlxyXG4gICAgICAgICAgICAgIGogPSBpIC0gTE9HX0JBU0UgKyBkO1xyXG5cclxuICAgICAgICAgICAgICAvLyBHZXQgdGhlIHJvdW5kaW5nIGRpZ2l0IGF0IGluZGV4IGogb2Ygbi5cclxuICAgICAgICAgICAgICByZCA9IGogPCAwID8gMCA6IG4gLyBwb3dzMTBbZCAtIGogLSAxXSAlIDEwIHwgMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHIgPSByIHx8IHNkIDwgMCB8fFxyXG5cclxuICAgICAgICAgIC8vIEFyZSB0aGVyZSBhbnkgbm9uLXplcm8gZGlnaXRzIGFmdGVyIHRoZSByb3VuZGluZyBkaWdpdD9cclxuICAgICAgICAgIC8vIFRoZSBleHByZXNzaW9uICBuICUgcG93czEwW2QgLSBqIC0gMV0gIHJldHVybnMgYWxsIGRpZ2l0cyBvZiBuIHRvIHRoZSByaWdodFxyXG4gICAgICAgICAgLy8gb2YgdGhlIGRpZ2l0IGF0IGosIGUuZy4gaWYgbiBpcyA5MDg3MTQgYW5kIGogaXMgMiwgdGhlIGV4cHJlc3Npb24gZ2l2ZXMgNzE0LlxyXG4gICAgICAgICAgIHhjW25pICsgMV0gIT0gbnVsbCB8fCAoaiA8IDAgPyBuIDogbiAlIHBvd3MxMFtkIC0gaiAtIDFdKTtcclxuXHJcbiAgICAgICAgICByID0gcm0gPCA0XHJcbiAgICAgICAgICAgPyAocmQgfHwgcikgJiYgKHJtID09IDAgfHwgcm0gPT0gKHgucyA8IDAgPyAzIDogMikpXHJcbiAgICAgICAgICAgOiByZCA+IDUgfHwgcmQgPT0gNSAmJiAocm0gPT0gNCB8fCByIHx8IHJtID09IDYgJiZcclxuXHJcbiAgICAgICAgICAgIC8vIENoZWNrIHdoZXRoZXIgdGhlIGRpZ2l0IHRvIHRoZSBsZWZ0IG9mIHRoZSByb3VuZGluZyBkaWdpdCBpcyBvZGQuXHJcbiAgICAgICAgICAgICgoaSA+IDAgPyBqID4gMCA/IG4gLyBwb3dzMTBbZCAtIGpdIDogMCA6IHhjW25pIC0gMV0pICUgMTApICYgMSB8fFxyXG4gICAgICAgICAgICAgcm0gPT0gKHgucyA8IDAgPyA4IDogNykpO1xyXG5cclxuICAgICAgICAgIGlmIChzZCA8IDEgfHwgIXhjWzBdKSB7XHJcbiAgICAgICAgICAgIHhjLmxlbmd0aCA9IDA7XHJcblxyXG4gICAgICAgICAgICBpZiAocikge1xyXG5cclxuICAgICAgICAgICAgICAvLyBDb252ZXJ0IHNkIHRvIGRlY2ltYWwgcGxhY2VzLlxyXG4gICAgICAgICAgICAgIHNkIC09IHguZSArIDE7XHJcblxyXG4gICAgICAgICAgICAgIC8vIDEsIDAuMSwgMC4wMSwgMC4wMDEsIDAuMDAwMSBldGMuXHJcbiAgICAgICAgICAgICAgeGNbMF0gPSBwb3dzMTBbKExPR19CQVNFIC0gc2QgJSBMT0dfQkFTRSkgJSBMT0dfQkFTRV07XHJcbiAgICAgICAgICAgICAgeC5lID0gLXNkIHx8IDA7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgIC8vIFplcm8uXHJcbiAgICAgICAgICAgICAgeGNbMF0gPSB4LmUgPSAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4geDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBSZW1vdmUgZXhjZXNzIGRpZ2l0cy5cclxuICAgICAgICAgIGlmIChpID09IDApIHtcclxuICAgICAgICAgICAgeGMubGVuZ3RoID0gbmk7XHJcbiAgICAgICAgICAgIGsgPSAxO1xyXG4gICAgICAgICAgICBuaS0tO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgeGMubGVuZ3RoID0gbmkgKyAxO1xyXG4gICAgICAgICAgICBrID0gcG93czEwW0xPR19CQVNFIC0gaV07XHJcblxyXG4gICAgICAgICAgICAvLyBFLmcuIDU2NzAwIGJlY29tZXMgNTYwMDAgaWYgNyBpcyB0aGUgcm91bmRpbmcgZGlnaXQuXHJcbiAgICAgICAgICAgIC8vIGogPiAwIG1lYW5zIGkgPiBudW1iZXIgb2YgbGVhZGluZyB6ZXJvcyBvZiBuLlxyXG4gICAgICAgICAgICB4Y1tuaV0gPSBqID4gMCA/IG1hdGhmbG9vcihuIC8gcG93czEwW2QgLSBqXSAlIHBvd3MxMFtqXSkgKiBrIDogMDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBSb3VuZCB1cD9cclxuICAgICAgICAgIGlmIChyKSB7XHJcblxyXG4gICAgICAgICAgICBmb3IgKDsgOykge1xyXG5cclxuICAgICAgICAgICAgICAvLyBJZiB0aGUgZGlnaXQgdG8gYmUgcm91bmRlZCB1cCBpcyBpbiB0aGUgZmlyc3QgZWxlbWVudCBvZiB4Yy4uLlxyXG4gICAgICAgICAgICAgIGlmIChuaSA9PSAwKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gaSB3aWxsIGJlIHRoZSBsZW5ndGggb2YgeGNbMF0gYmVmb3JlIGsgaXMgYWRkZWQuXHJcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAxLCBqID0geGNbMF07IGogPj0gMTA7IGogLz0gMTAsIGkrKyk7XHJcbiAgICAgICAgICAgICAgICBqID0geGNbMF0gKz0gaztcclxuICAgICAgICAgICAgICAgIGZvciAoayA9IDE7IGogPj0gMTA7IGogLz0gMTAsIGsrKyk7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gaWYgaSAhPSBrIHRoZSBsZW5ndGggaGFzIGluY3JlYXNlZC5cclxuICAgICAgICAgICAgICAgIGlmIChpICE9IGspIHtcclxuICAgICAgICAgICAgICAgICAgeC5lKys7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh4Y1swXSA9PSBCQVNFKSB4Y1swXSA9IDE7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHhjW25pXSArPSBrO1xyXG4gICAgICAgICAgICAgICAgaWYgKHhjW25pXSAhPSBCQVNFKSBicmVhaztcclxuICAgICAgICAgICAgICAgIHhjW25pLS1dID0gMDtcclxuICAgICAgICAgICAgICAgIGsgPSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIFJlbW92ZSB0cmFpbGluZyB6ZXJvcy5cclxuICAgICAgICAgIGZvciAoaSA9IHhjLmxlbmd0aDsgeGNbLS1pXSA9PT0gMDsgeGMucG9wKCkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gT3ZlcmZsb3c/IEluZmluaXR5LlxyXG4gICAgICAgIGlmICh4LmUgPiBNQVhfRVhQKSB7XHJcbiAgICAgICAgICB4LmMgPSB4LmUgPSBudWxsO1xyXG5cclxuICAgICAgICAvLyBVbmRlcmZsb3c/IFplcm8uXHJcbiAgICAgICAgfSBlbHNlIGlmICh4LmUgPCBNSU5fRVhQKSB7XHJcbiAgICAgICAgICB4LmMgPSBbeC5lID0gMF07XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4geDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgZnVuY3Rpb24gdmFsdWVPZihuKSB7XHJcbiAgICAgIHZhciBzdHIsXHJcbiAgICAgICAgZSA9IG4uZTtcclxuXHJcbiAgICAgIGlmIChlID09PSBudWxsKSByZXR1cm4gbi50b1N0cmluZygpO1xyXG5cclxuICAgICAgc3RyID0gY29lZmZUb1N0cmluZyhuLmMpO1xyXG5cclxuICAgICAgc3RyID0gZSA8PSBUT19FWFBfTkVHIHx8IGUgPj0gVE9fRVhQX1BPU1xyXG4gICAgICAgID8gdG9FeHBvbmVudGlhbChzdHIsIGUpXHJcbiAgICAgICAgOiB0b0ZpeGVkUG9pbnQoc3RyLCBlLCAnMCcpO1xyXG5cclxuICAgICAgcmV0dXJuIG4ucyA8IDAgPyAnLScgKyBzdHIgOiBzdHI7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIFBST1RPVFlQRS9JTlNUQU5DRSBNRVRIT0RTXHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlci5cclxuICAgICAqL1xyXG4gICAgUC5hYnNvbHV0ZVZhbHVlID0gUC5hYnMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciB4ID0gbmV3IEJpZ051bWJlcih0aGlzKTtcclxuICAgICAgaWYgKHgucyA8IDApIHgucyA9IDE7XHJcbiAgICAgIHJldHVybiB4O1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVyblxyXG4gICAgICogICAxIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBncmVhdGVyIHRoYW4gdGhlIHZhbHVlIG9mIEJpZ051bWJlcih5LCBiKSxcclxuICAgICAqICAgLTEgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyKHksIGIpLFxyXG4gICAgICogICAwIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSB2YWx1ZSxcclxuICAgICAqICAgb3IgbnVsbCBpZiB0aGUgdmFsdWUgb2YgZWl0aGVyIGlzIE5hTi5cclxuICAgICAqL1xyXG4gICAgUC5jb21wYXJlZFRvID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogSWYgZHAgaXMgdW5kZWZpbmVkIG9yIG51bGwgb3IgdHJ1ZSBvciBmYWxzZSwgcmV0dXJuIHRoZSBudW1iZXIgb2YgZGVjaW1hbCBwbGFjZXMgb2YgdGhlXHJcbiAgICAgKiB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciwgb3IgbnVsbCBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgwrFJbmZpbml0eSBvciBOYU4uXHJcbiAgICAgKlxyXG4gICAgICogT3RoZXJ3aXNlLCBpZiBkcCBpcyBhIG51bWJlciwgcmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpc1xyXG4gICAgICogQmlnTnVtYmVyIHJvdW5kZWQgdG8gYSBtYXhpbXVtIG9mIGRwIGRlY2ltYWwgcGxhY2VzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0sIG9yXHJcbiAgICAgKiBST1VORElOR19NT0RFIGlmIHJtIGlzIG9taXR0ZWQuXHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlczogaW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB8cm19J1xyXG4gICAgICovXHJcbiAgICBQLmRlY2ltYWxQbGFjZXMgPSBQLmRwID0gZnVuY3Rpb24gKGRwLCBybSkge1xyXG4gICAgICB2YXIgYywgbiwgdixcclxuICAgICAgICB4ID0gdGhpcztcclxuXHJcbiAgICAgIGlmIChkcCAhPSBudWxsKSB7XHJcbiAgICAgICAgaW50Q2hlY2soZHAsIDAsIE1BWCk7XHJcbiAgICAgICAgaWYgKHJtID09IG51bGwpIHJtID0gUk9VTkRJTkdfTU9ERTtcclxuICAgICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJvdW5kKG5ldyBCaWdOdW1iZXIoeCksIGRwICsgeC5lICsgMSwgcm0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoIShjID0geC5jKSkgcmV0dXJuIG51bGw7XHJcbiAgICAgIG4gPSAoKHYgPSBjLmxlbmd0aCAtIDEpIC0gYml0Rmxvb3IodGhpcy5lIC8gTE9HX0JBU0UpKSAqIExPR19CQVNFO1xyXG5cclxuICAgICAgLy8gU3VidHJhY3QgdGhlIG51bWJlciBvZiB0cmFpbGluZyB6ZXJvcyBvZiB0aGUgbGFzdCBudW1iZXIuXHJcbiAgICAgIGlmICh2ID0gY1t2XSkgZm9yICg7IHYgJSAxMCA9PSAwOyB2IC89IDEwLCBuLS0pO1xyXG4gICAgICBpZiAobiA8IDApIG4gPSAwO1xyXG5cclxuICAgICAgcmV0dXJuIG47XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIG4gLyAwID0gSVxyXG4gICAgICogIG4gLyBOID0gTlxyXG4gICAgICogIG4gLyBJID0gMFxyXG4gICAgICogIDAgLyBuID0gMFxyXG4gICAgICogIDAgLyAwID0gTlxyXG4gICAgICogIDAgLyBOID0gTlxyXG4gICAgICogIDAgLyBJID0gMFxyXG4gICAgICogIE4gLyBuID0gTlxyXG4gICAgICogIE4gLyAwID0gTlxyXG4gICAgICogIE4gLyBOID0gTlxyXG4gICAgICogIE4gLyBJID0gTlxyXG4gICAgICogIEkgLyBuID0gSVxyXG4gICAgICogIEkgLyAwID0gSVxyXG4gICAgICogIEkgLyBOID0gTlxyXG4gICAgICogIEkgLyBJID0gTlxyXG4gICAgICpcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGRpdmlkZWQgYnkgdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYiksIHJvdW5kZWQgYWNjb3JkaW5nIHRvIERFQ0lNQUxfUExBQ0VTIGFuZCBST1VORElOR19NT0RFLlxyXG4gICAgICovXHJcbiAgICBQLmRpdmlkZWRCeSA9IFAuZGl2ID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGRpdih0aGlzLCBuZXcgQmlnTnVtYmVyKHksIGIpLCBERUNJTUFMX1BMQUNFUywgUk9VTkRJTkdfTU9ERSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgaW50ZWdlciBwYXJ0IG9mIGRpdmlkaW5nIHRoZSB2YWx1ZSBvZiB0aGlzXHJcbiAgICAgKiBCaWdOdW1iZXIgYnkgdGhlIHZhbHVlIG9mIEJpZ051bWJlcih5LCBiKS5cclxuICAgICAqL1xyXG4gICAgUC5kaXZpZGVkVG9JbnRlZ2VyQnkgPSBQLmlkaXYgPSBmdW5jdGlvbiAoeSwgYikge1xyXG4gICAgICByZXR1cm4gZGl2KHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYiksIDAsIDEpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgZXhwb25lbnRpYXRlZCBieSBuLlxyXG4gICAgICpcclxuICAgICAqIElmIG0gaXMgcHJlc2VudCwgcmV0dXJuIHRoZSByZXN1bHQgbW9kdWxvIG0uXHJcbiAgICAgKiBJZiBuIGlzIG5lZ2F0aXZlIHJvdW5kIGFjY29yZGluZyB0byBERUNJTUFMX1BMQUNFUyBhbmQgUk9VTkRJTkdfTU9ERS5cclxuICAgICAqIElmIFBPV19QUkVDSVNJT04gaXMgbm9uLXplcm8gYW5kIG0gaXMgbm90IHByZXNlbnQsIHJvdW5kIHRvIFBPV19QUkVDSVNJT04gdXNpbmcgUk9VTkRJTkdfTU9ERS5cclxuICAgICAqXHJcbiAgICAgKiBUaGUgbW9kdWxhciBwb3dlciBvcGVyYXRpb24gd29ya3MgZWZmaWNpZW50bHkgd2hlbiB4LCBuLCBhbmQgbSBhcmUgaW50ZWdlcnMsIG90aGVyd2lzZSBpdFxyXG4gICAgICogaXMgZXF1aXZhbGVudCB0byBjYWxjdWxhdGluZyB4LmV4cG9uZW50aWF0ZWRCeShuKS5tb2R1bG8obSkgd2l0aCBhIFBPV19QUkVDSVNJT04gb2YgMC5cclxuICAgICAqXHJcbiAgICAgKiBuIHtudW1iZXJ8c3RyaW5nfEJpZ051bWJlcn0gVGhlIGV4cG9uZW50LiBBbiBpbnRlZ2VyLlxyXG4gICAgICogW21dIHtudW1iZXJ8c3RyaW5nfEJpZ051bWJlcn0gVGhlIG1vZHVsdXMuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEV4cG9uZW50IG5vdCBhbiBpbnRlZ2VyOiB7bn0nXHJcbiAgICAgKi9cclxuICAgIFAuZXhwb25lbnRpYXRlZEJ5ID0gUC5wb3cgPSBmdW5jdGlvbiAobiwgbSkge1xyXG4gICAgICB2YXIgaGFsZiwgaXNNb2RFeHAsIGksIGssIG1vcmUsIG5Jc0JpZywgbklzTmVnLCBuSXNPZGQsIHksXHJcbiAgICAgICAgeCA9IHRoaXM7XHJcblxyXG4gICAgICBuID0gbmV3IEJpZ051bWJlcihuKTtcclxuXHJcbiAgICAgIC8vIEFsbG93IE5hTiBhbmQgwrFJbmZpbml0eSwgYnV0IG5vdCBvdGhlciBub24taW50ZWdlcnMuXHJcbiAgICAgIGlmIChuLmMgJiYgIW4uaXNJbnRlZ2VyKCkpIHtcclxuICAgICAgICB0aHJvdyBFcnJvclxyXG4gICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ0V4cG9uZW50IG5vdCBhbiBpbnRlZ2VyOiAnICsgdmFsdWVPZihuKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChtICE9IG51bGwpIG0gPSBuZXcgQmlnTnVtYmVyKG0pO1xyXG5cclxuICAgICAgLy8gRXhwb25lbnQgb2YgTUFYX1NBRkVfSU5URUdFUiBpcyAxNS5cclxuICAgICAgbklzQmlnID0gbi5lID4gMTQ7XHJcblxyXG4gICAgICAvLyBJZiB4IGlzIE5hTiwgwrFJbmZpbml0eSwgwrEwIG9yIMKxMSwgb3IgbiBpcyDCsUluZmluaXR5LCBOYU4gb3IgwrEwLlxyXG4gICAgICBpZiAoIXguYyB8fCAheC5jWzBdIHx8IHguY1swXSA9PSAxICYmICF4LmUgJiYgeC5jLmxlbmd0aCA9PSAxIHx8ICFuLmMgfHwgIW4uY1swXSkge1xyXG5cclxuICAgICAgICAvLyBUaGUgc2lnbiBvZiB0aGUgcmVzdWx0IG9mIHBvdyB3aGVuIHggaXMgbmVnYXRpdmUgZGVwZW5kcyBvbiB0aGUgZXZlbm5lc3Mgb2Ygbi5cclxuICAgICAgICAvLyBJZiArbiBvdmVyZmxvd3MgdG8gwrFJbmZpbml0eSwgdGhlIGV2ZW5uZXNzIG9mIG4gd291bGQgYmUgbm90IGJlIGtub3duLlxyXG4gICAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKE1hdGgucG93KCt2YWx1ZU9mKHgpLCBuSXNCaWcgPyAyIC0gaXNPZGQobikgOiArdmFsdWVPZihuKSkpO1xyXG4gICAgICAgIHJldHVybiBtID8geS5tb2QobSkgOiB5O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBuSXNOZWcgPSBuLnMgPCAwO1xyXG5cclxuICAgICAgaWYgKG0pIHtcclxuXHJcbiAgICAgICAgLy8geCAlIG0gcmV0dXJucyBOYU4gaWYgYWJzKG0pIGlzIHplcm8sIG9yIG0gaXMgTmFOLlxyXG4gICAgICAgIGlmIChtLmMgPyAhbS5jWzBdIDogIW0ucykgcmV0dXJuIG5ldyBCaWdOdW1iZXIoTmFOKTtcclxuXHJcbiAgICAgICAgaXNNb2RFeHAgPSAhbklzTmVnICYmIHguaXNJbnRlZ2VyKCkgJiYgbS5pc0ludGVnZXIoKTtcclxuXHJcbiAgICAgICAgaWYgKGlzTW9kRXhwKSB4ID0geC5tb2QobSk7XHJcblxyXG4gICAgICAvLyBPdmVyZmxvdyB0byDCsUluZmluaXR5OiA+PTIqKjFlMTAgb3IgPj0xLjAwMDAwMjQqKjFlMTUuXHJcbiAgICAgIC8vIFVuZGVyZmxvdyB0byDCsTA6IDw9MC43OSoqMWUxMCBvciA8PTAuOTk5OTk3NSoqMWUxNS5cclxuICAgICAgfSBlbHNlIGlmIChuLmUgPiA5ICYmICh4LmUgPiAwIHx8IHguZSA8IC0xIHx8ICh4LmUgPT0gMFxyXG4gICAgICAgIC8vIFsxLCAyNDAwMDAwMDBdXHJcbiAgICAgICAgPyB4LmNbMF0gPiAxIHx8IG5Jc0JpZyAmJiB4LmNbMV0gPj0gMjRlN1xyXG4gICAgICAgIC8vIFs4MDAwMDAwMDAwMDAwMF0gIFs5OTk5OTc1MDAwMDAwMF1cclxuICAgICAgICA6IHguY1swXSA8IDhlMTMgfHwgbklzQmlnICYmIHguY1swXSA8PSA5OTk5OTc1ZTcpKSkge1xyXG5cclxuICAgICAgICAvLyBJZiB4IGlzIG5lZ2F0aXZlIGFuZCBuIGlzIG9kZCwgayA9IC0wLCBlbHNlIGsgPSAwLlxyXG4gICAgICAgIGsgPSB4LnMgPCAwICYmIGlzT2RkKG4pID8gLTAgOiAwO1xyXG5cclxuICAgICAgICAvLyBJZiB4ID49IDEsIGsgPSDCsUluZmluaXR5LlxyXG4gICAgICAgIGlmICh4LmUgPiAtMSkgayA9IDEgLyBrO1xyXG5cclxuICAgICAgICAvLyBJZiBuIGlzIG5lZ2F0aXZlIHJldHVybiDCsTAsIGVsc2UgcmV0dXJuIMKxSW5maW5pdHkuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdOdW1iZXIobklzTmVnID8gMSAvIGsgOiBrKTtcclxuXHJcbiAgICAgIH0gZWxzZSBpZiAoUE9XX1BSRUNJU0lPTikge1xyXG5cclxuICAgICAgICAvLyBUcnVuY2F0aW5nIGVhY2ggY29lZmZpY2llbnQgYXJyYXkgdG8gYSBsZW5ndGggb2YgayBhZnRlciBlYWNoIG11bHRpcGxpY2F0aW9uXHJcbiAgICAgICAgLy8gZXF1YXRlcyB0byB0cnVuY2F0aW5nIHNpZ25pZmljYW50IGRpZ2l0cyB0byBQT1dfUFJFQ0lTSU9OICsgWzI4LCA0MV0sXHJcbiAgICAgICAgLy8gaS5lLiB0aGVyZSB3aWxsIGJlIGEgbWluaW11bSBvZiAyOCBndWFyZCBkaWdpdHMgcmV0YWluZWQuXHJcbiAgICAgICAgayA9IG1hdGhjZWlsKFBPV19QUkVDSVNJT04gLyBMT0dfQkFTRSArIDIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAobklzQmlnKSB7XHJcbiAgICAgICAgaGFsZiA9IG5ldyBCaWdOdW1iZXIoMC41KTtcclxuICAgICAgICBpZiAobklzTmVnKSBuLnMgPSAxO1xyXG4gICAgICAgIG5Jc09kZCA9IGlzT2RkKG4pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGkgPSBNYXRoLmFicygrdmFsdWVPZihuKSk7XHJcbiAgICAgICAgbklzT2RkID0gaSAlIDI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKE9ORSk7XHJcblxyXG4gICAgICAvLyBQZXJmb3JtcyA1NCBsb29wIGl0ZXJhdGlvbnMgZm9yIG4gb2YgOTAwNzE5OTI1NDc0MDk5MS5cclxuICAgICAgZm9yICg7IDspIHtcclxuXHJcbiAgICAgICAgaWYgKG5Jc09kZCkge1xyXG4gICAgICAgICAgeSA9IHkudGltZXMoeCk7XHJcbiAgICAgICAgICBpZiAoIXkuYykgYnJlYWs7XHJcblxyXG4gICAgICAgICAgaWYgKGspIHtcclxuICAgICAgICAgICAgaWYgKHkuYy5sZW5ndGggPiBrKSB5LmMubGVuZ3RoID0gaztcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaXNNb2RFeHApIHtcclxuICAgICAgICAgICAgeSA9IHkubW9kKG0pOyAgICAvL3kgPSB5Lm1pbnVzKGRpdih5LCBtLCAwLCBNT0RVTE9fTU9ERSkudGltZXMobSkpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGkpIHtcclxuICAgICAgICAgIGkgPSBtYXRoZmxvb3IoaSAvIDIpO1xyXG4gICAgICAgICAgaWYgKGkgPT09IDApIGJyZWFrO1xyXG4gICAgICAgICAgbklzT2RkID0gaSAlIDI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG4gPSBuLnRpbWVzKGhhbGYpO1xyXG4gICAgICAgICAgcm91bmQobiwgbi5lICsgMSwgMSk7XHJcblxyXG4gICAgICAgICAgaWYgKG4uZSA+IDE0KSB7XHJcbiAgICAgICAgICAgIG5Jc09kZCA9IGlzT2RkKG4pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaSA9ICt2YWx1ZU9mKG4pO1xyXG4gICAgICAgICAgICBpZiAoaSA9PT0gMCkgYnJlYWs7XHJcbiAgICAgICAgICAgIG5Jc09kZCA9IGkgJSAyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgeCA9IHgudGltZXMoeCk7XHJcblxyXG4gICAgICAgIGlmIChrKSB7XHJcbiAgICAgICAgICBpZiAoeC5jICYmIHguYy5sZW5ndGggPiBrKSB4LmMubGVuZ3RoID0gaztcclxuICAgICAgICB9IGVsc2UgaWYgKGlzTW9kRXhwKSB7XHJcbiAgICAgICAgICB4ID0geC5tb2QobSk7ICAgIC8veCA9IHgubWludXMoZGl2KHgsIG0sIDAsIE1PRFVMT19NT0RFKS50aW1lcyhtKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXNNb2RFeHApIHJldHVybiB5O1xyXG4gICAgICBpZiAobklzTmVnKSB5ID0gT05FLmRpdih5KTtcclxuXHJcbiAgICAgIHJldHVybiBtID8geS5tb2QobSkgOiBrID8gcm91bmQoeSwgUE9XX1BSRUNJU0lPTiwgUk9VTkRJTkdfTU9ERSwgbW9yZSkgOiB5O1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIHJvdW5kZWQgdG8gYW4gaW50ZWdlclxyXG4gICAgICogdXNpbmcgcm91bmRpbmcgbW9kZSBybSwgb3IgUk9VTkRJTkdfTU9ERSBpZiBybSBpcyBvbWl0dGVkLlxyXG4gICAgICpcclxuICAgICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3JtfSdcclxuICAgICAqL1xyXG4gICAgUC5pbnRlZ2VyVmFsdWUgPSBmdW5jdGlvbiAocm0pIHtcclxuICAgICAgdmFyIG4gPSBuZXcgQmlnTnVtYmVyKHRoaXMpO1xyXG4gICAgICBpZiAocm0gPT0gbnVsbCkgcm0gPSBST1VORElOR19NT0RFO1xyXG4gICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuICAgICAgcmV0dXJuIHJvdW5kKG4sIG4uZSArIDEsIHJtKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIEJpZ051bWJlcih5LCBiKSxcclxuICAgICAqIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNFcXVhbFRvID0gUC5lcSA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHJldHVybiBjb21wYXJlKHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYikpID09PSAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBhIGZpbml0ZSBudW1iZXIsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNGaW5pdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiAhIXRoaXMuYztcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgZ3JlYXRlciB0aGFuIHRoZSB2YWx1ZSBvZiBCaWdOdW1iZXIoeSwgYiksXHJcbiAgICAgKiBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICovXHJcbiAgICBQLmlzR3JlYXRlclRoYW4gPSBQLmd0ID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSkgPiAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYiksIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNHcmVhdGVyVGhhbk9yRXF1YWxUbyA9IFAuZ3RlID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgcmV0dXJuIChiID0gY29tcGFyZSh0aGlzLCBuZXcgQmlnTnVtYmVyKHksIGIpKSkgPT09IDEgfHwgYiA9PT0gMDtcclxuXHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGFuIGludGVnZXIsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNJbnRlZ2VyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gISF0aGlzLmMgJiYgYml0Rmxvb3IodGhpcy5lIC8gTE9HX0JBU0UpID4gdGhpcy5jLmxlbmd0aCAtIDI7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgQmlnTnVtYmVyKHksIGIpLFxyXG4gICAgICogb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc0xlc3NUaGFuID0gUC5sdCA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHJldHVybiBjb21wYXJlKHRoaXMsIG5ldyBCaWdOdW1iZXIoeSwgYikpIDwgMDtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZlxyXG4gICAgICogQmlnTnVtYmVyKHksIGIpLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLlxyXG4gICAgICovXHJcbiAgICBQLmlzTGVzc1RoYW5PckVxdWFsVG8gPSBQLmx0ZSA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHJldHVybiAoYiA9IGNvbXBhcmUodGhpcywgbmV3IEJpZ051bWJlcih5LCBiKSkpID09PSAtMSB8fCBiID09PSAwO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBOYU4sIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNOYU4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiAhdGhpcy5zO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpcyBuZWdhdGl2ZSwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS5cclxuICAgICAqL1xyXG4gICAgUC5pc05lZ2F0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zIDwgMDtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgcG9zaXRpdmUsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNQb3NpdGl2ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucyA+IDA7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGlzIDAgb3IgLTAsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UuXHJcbiAgICAgKi9cclxuICAgIFAuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gISF0aGlzLmMgJiYgdGhpcy5jWzBdID09IDA7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIG4gLSAwID0gblxyXG4gICAgICogIG4gLSBOID0gTlxyXG4gICAgICogIG4gLSBJID0gLUlcclxuICAgICAqICAwIC0gbiA9IC1uXHJcbiAgICAgKiAgMCAtIDAgPSAwXHJcbiAgICAgKiAgMCAtIE4gPSBOXHJcbiAgICAgKiAgMCAtIEkgPSAtSVxyXG4gICAgICogIE4gLSBuID0gTlxyXG4gICAgICogIE4gLSAwID0gTlxyXG4gICAgICogIE4gLSBOID0gTlxyXG4gICAgICogIE4gLSBJID0gTlxyXG4gICAgICogIEkgLSBuID0gSVxyXG4gICAgICogIEkgLSAwID0gSVxyXG4gICAgICogIEkgLSBOID0gTlxyXG4gICAgICogIEkgLSBJID0gTlxyXG4gICAgICpcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIG1pbnVzIHRoZSB2YWx1ZSBvZlxyXG4gICAgICogQmlnTnVtYmVyKHksIGIpLlxyXG4gICAgICovXHJcbiAgICBQLm1pbnVzID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgdmFyIGksIGosIHQsIHhMVHksXHJcbiAgICAgICAgeCA9IHRoaXMsXHJcbiAgICAgICAgYSA9IHgucztcclxuXHJcbiAgICAgIHkgPSBuZXcgQmlnTnVtYmVyKHksIGIpO1xyXG4gICAgICBiID0geS5zO1xyXG5cclxuICAgICAgLy8gRWl0aGVyIE5hTj9cclxuICAgICAgaWYgKCFhIHx8ICFiKSByZXR1cm4gbmV3IEJpZ051bWJlcihOYU4pO1xyXG5cclxuICAgICAgLy8gU2lnbnMgZGlmZmVyP1xyXG4gICAgICBpZiAoYSAhPSBiKSB7XHJcbiAgICAgICAgeS5zID0gLWI7XHJcbiAgICAgICAgcmV0dXJuIHgucGx1cyh5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIHhlID0geC5lIC8gTE9HX0JBU0UsXHJcbiAgICAgICAgeWUgPSB5LmUgLyBMT0dfQkFTRSxcclxuICAgICAgICB4YyA9IHguYyxcclxuICAgICAgICB5YyA9IHkuYztcclxuXHJcbiAgICAgIGlmICgheGUgfHwgIXllKSB7XHJcblxyXG4gICAgICAgIC8vIEVpdGhlciBJbmZpbml0eT9cclxuICAgICAgICBpZiAoIXhjIHx8ICF5YykgcmV0dXJuIHhjID8gKHkucyA9IC1iLCB5KSA6IG5ldyBCaWdOdW1iZXIoeWMgPyB4IDogTmFOKTtcclxuXHJcbiAgICAgICAgLy8gRWl0aGVyIHplcm8/XHJcbiAgICAgICAgaWYgKCF4Y1swXSB8fCAheWNbMF0pIHtcclxuXHJcbiAgICAgICAgICAvLyBSZXR1cm4geSBpZiB5IGlzIG5vbi16ZXJvLCB4IGlmIHggaXMgbm9uLXplcm8sIG9yIHplcm8gaWYgYm90aCBhcmUgemVyby5cclxuICAgICAgICAgIHJldHVybiB5Y1swXSA/ICh5LnMgPSAtYiwgeSkgOiBuZXcgQmlnTnVtYmVyKHhjWzBdID8geCA6XHJcblxyXG4gICAgICAgICAgIC8vIElFRUUgNzU0ICgyMDA4KSA2LjM6IG4gLSBuID0gLTAgd2hlbiByb3VuZGluZyB0byAtSW5maW5pdHlcclxuICAgICAgICAgICBST1VORElOR19NT0RFID09IDMgPyAtMCA6IDApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgeGUgPSBiaXRGbG9vcih4ZSk7XHJcbiAgICAgIHllID0gYml0Rmxvb3IoeWUpO1xyXG4gICAgICB4YyA9IHhjLnNsaWNlKCk7XHJcblxyXG4gICAgICAvLyBEZXRlcm1pbmUgd2hpY2ggaXMgdGhlIGJpZ2dlciBudW1iZXIuXHJcbiAgICAgIGlmIChhID0geGUgLSB5ZSkge1xyXG5cclxuICAgICAgICBpZiAoeExUeSA9IGEgPCAwKSB7XHJcbiAgICAgICAgICBhID0gLWE7XHJcbiAgICAgICAgICB0ID0geGM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHllID0geGU7XHJcbiAgICAgICAgICB0ID0geWM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0LnJldmVyc2UoKTtcclxuXHJcbiAgICAgICAgLy8gUHJlcGVuZCB6ZXJvcyB0byBlcXVhbGlzZSBleHBvbmVudHMuXHJcbiAgICAgICAgZm9yIChiID0gYTsgYi0tOyB0LnB1c2goMCkpO1xyXG4gICAgICAgIHQucmV2ZXJzZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAvLyBFeHBvbmVudHMgZXF1YWwuIENoZWNrIGRpZ2l0IGJ5IGRpZ2l0LlxyXG4gICAgICAgIGogPSAoeExUeSA9IChhID0geGMubGVuZ3RoKSA8IChiID0geWMubGVuZ3RoKSkgPyBhIDogYjtcclxuXHJcbiAgICAgICAgZm9yIChhID0gYiA9IDA7IGIgPCBqOyBiKyspIHtcclxuXHJcbiAgICAgICAgICBpZiAoeGNbYl0gIT0geWNbYl0pIHtcclxuICAgICAgICAgICAgeExUeSA9IHhjW2JdIDwgeWNbYl07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8geCA8IHk/IFBvaW50IHhjIHRvIHRoZSBhcnJheSBvZiB0aGUgYmlnZ2VyIG51bWJlci5cclxuICAgICAgaWYgKHhMVHkpIHQgPSB4YywgeGMgPSB5YywgeWMgPSB0LCB5LnMgPSAteS5zO1xyXG5cclxuICAgICAgYiA9IChqID0geWMubGVuZ3RoKSAtIChpID0geGMubGVuZ3RoKTtcclxuXHJcbiAgICAgIC8vIEFwcGVuZCB6ZXJvcyB0byB4YyBpZiBzaG9ydGVyLlxyXG4gICAgICAvLyBObyBuZWVkIHRvIGFkZCB6ZXJvcyB0byB5YyBpZiBzaG9ydGVyIGFzIHN1YnRyYWN0IG9ubHkgbmVlZHMgdG8gc3RhcnQgYXQgeWMubGVuZ3RoLlxyXG4gICAgICBpZiAoYiA+IDApIGZvciAoOyBiLS07IHhjW2krK10gPSAwKTtcclxuICAgICAgYiA9IEJBU0UgLSAxO1xyXG5cclxuICAgICAgLy8gU3VidHJhY3QgeWMgZnJvbSB4Yy5cclxuICAgICAgZm9yICg7IGogPiBhOykge1xyXG5cclxuICAgICAgICBpZiAoeGNbLS1qXSA8IHljW2pdKSB7XHJcbiAgICAgICAgICBmb3IgKGkgPSBqOyBpICYmICF4Y1stLWldOyB4Y1tpXSA9IGIpO1xyXG4gICAgICAgICAgLS14Y1tpXTtcclxuICAgICAgICAgIHhjW2pdICs9IEJBU0U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB4Y1tqXSAtPSB5Y1tqXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gUmVtb3ZlIGxlYWRpbmcgemVyb3MgYW5kIGFkanVzdCBleHBvbmVudCBhY2NvcmRpbmdseS5cclxuICAgICAgZm9yICg7IHhjWzBdID09IDA7IHhjLnNwbGljZSgwLCAxKSwgLS15ZSk7XHJcblxyXG4gICAgICAvLyBaZXJvP1xyXG4gICAgICBpZiAoIXhjWzBdKSB7XHJcblxyXG4gICAgICAgIC8vIEZvbGxvd2luZyBJRUVFIDc1NCAoMjAwOCkgNi4zLFxyXG4gICAgICAgIC8vIG4gLSBuID0gKzAgIGJ1dCAgbiAtIG4gPSAtMCAgd2hlbiByb3VuZGluZyB0b3dhcmRzIC1JbmZpbml0eS5cclxuICAgICAgICB5LnMgPSBST1VORElOR19NT0RFID09IDMgPyAtMSA6IDE7XHJcbiAgICAgICAgeS5jID0gW3kuZSA9IDBdO1xyXG4gICAgICAgIHJldHVybiB5O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBObyBuZWVkIHRvIGNoZWNrIGZvciBJbmZpbml0eSBhcyAreCAtICt5ICE9IEluZmluaXR5ICYmIC14IC0gLXkgIT0gSW5maW5pdHlcclxuICAgICAgLy8gZm9yIGZpbml0ZSB4IGFuZCB5LlxyXG4gICAgICByZXR1cm4gbm9ybWFsaXNlKHksIHhjLCB5ZSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogICBuICUgMCA9ICBOXHJcbiAgICAgKiAgIG4gJSBOID0gIE5cclxuICAgICAqICAgbiAlIEkgPSAgblxyXG4gICAgICogICAwICUgbiA9ICAwXHJcbiAgICAgKiAgLTAgJSBuID0gLTBcclxuICAgICAqICAgMCAlIDAgPSAgTlxyXG4gICAgICogICAwICUgTiA9ICBOXHJcbiAgICAgKiAgIDAgJSBJID0gIDBcclxuICAgICAqICAgTiAlIG4gPSAgTlxyXG4gICAgICogICBOICUgMCA9ICBOXHJcbiAgICAgKiAgIE4gJSBOID0gIE5cclxuICAgICAqICAgTiAlIEkgPSAgTlxyXG4gICAgICogICBJICUgbiA9ICBOXHJcbiAgICAgKiAgIEkgJSAwID0gIE5cclxuICAgICAqICAgSSAlIE4gPSAgTlxyXG4gICAgICogICBJICUgSSA9ICBOXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgbW9kdWxvIHRoZSB2YWx1ZSBvZlxyXG4gICAgICogQmlnTnVtYmVyKHksIGIpLiBUaGUgcmVzdWx0IGRlcGVuZHMgb24gdGhlIHZhbHVlIG9mIE1PRFVMT19NT0RFLlxyXG4gICAgICovXHJcbiAgICBQLm1vZHVsbyA9IFAubW9kID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgdmFyIHEsIHMsXHJcbiAgICAgICAgeCA9IHRoaXM7XHJcblxyXG4gICAgICB5ID0gbmV3IEJpZ051bWJlcih5LCBiKTtcclxuXHJcbiAgICAgIC8vIFJldHVybiBOYU4gaWYgeCBpcyBJbmZpbml0eSBvciBOYU4sIG9yIHkgaXMgTmFOIG9yIHplcm8uXHJcbiAgICAgIGlmICgheC5jIHx8ICF5LnMgfHwgeS5jICYmICF5LmNbMF0pIHtcclxuICAgICAgICByZXR1cm4gbmV3IEJpZ051bWJlcihOYU4pO1xyXG5cclxuICAgICAgLy8gUmV0dXJuIHggaWYgeSBpcyBJbmZpbml0eSBvciB4IGlzIHplcm8uXHJcbiAgICAgIH0gZWxzZSBpZiAoIXkuYyB8fCB4LmMgJiYgIXguY1swXSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKHgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoTU9EVUxPX01PREUgPT0gOSkge1xyXG5cclxuICAgICAgICAvLyBFdWNsaWRpYW4gZGl2aXNpb246IHEgPSBzaWduKHkpICogZmxvb3IoeCAvIGFicyh5KSlcclxuICAgICAgICAvLyByID0geCAtIHF5ICAgIHdoZXJlICAwIDw9IHIgPCBhYnMoeSlcclxuICAgICAgICBzID0geS5zO1xyXG4gICAgICAgIHkucyA9IDE7XHJcbiAgICAgICAgcSA9IGRpdih4LCB5LCAwLCAzKTtcclxuICAgICAgICB5LnMgPSBzO1xyXG4gICAgICAgIHEucyAqPSBzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHEgPSBkaXYoeCwgeSwgMCwgTU9EVUxPX01PREUpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB5ID0geC5taW51cyhxLnRpbWVzKHkpKTtcclxuXHJcbiAgICAgIC8vIFRvIG1hdGNoIEphdmFTY3JpcHQgJSwgZW5zdXJlIHNpZ24gb2YgemVybyBpcyBzaWduIG9mIGRpdmlkZW5kLlxyXG4gICAgICBpZiAoIXkuY1swXSAmJiBNT0RVTE9fTU9ERSA9PSAxKSB5LnMgPSB4LnM7XHJcblxyXG4gICAgICByZXR1cm4geTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiAgbiAqIDAgPSAwXHJcbiAgICAgKiAgbiAqIE4gPSBOXHJcbiAgICAgKiAgbiAqIEkgPSBJXHJcbiAgICAgKiAgMCAqIG4gPSAwXHJcbiAgICAgKiAgMCAqIDAgPSAwXHJcbiAgICAgKiAgMCAqIE4gPSBOXHJcbiAgICAgKiAgMCAqIEkgPSBOXHJcbiAgICAgKiAgTiAqIG4gPSBOXHJcbiAgICAgKiAgTiAqIDAgPSBOXHJcbiAgICAgKiAgTiAqIE4gPSBOXHJcbiAgICAgKiAgTiAqIEkgPSBOXHJcbiAgICAgKiAgSSAqIG4gPSBJXHJcbiAgICAgKiAgSSAqIDAgPSBOXHJcbiAgICAgKiAgSSAqIE4gPSBOXHJcbiAgICAgKiAgSSAqIEkgPSBJXHJcbiAgICAgKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgbXVsdGlwbGllZCBieSB0aGUgdmFsdWVcclxuICAgICAqIG9mIEJpZ051bWJlcih5LCBiKS5cclxuICAgICAqL1xyXG4gICAgUC5tdWx0aXBsaWVkQnkgPSBQLnRpbWVzID0gZnVuY3Rpb24gKHksIGIpIHtcclxuICAgICAgdmFyIGMsIGUsIGksIGosIGssIG0sIHhjTCwgeGxvLCB4aGksIHljTCwgeWxvLCB5aGksIHpjLFxyXG4gICAgICAgIGJhc2UsIHNxcnRCYXNlLFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIHhjID0geC5jLFxyXG4gICAgICAgIHljID0gKHkgPSBuZXcgQmlnTnVtYmVyKHksIGIpKS5jO1xyXG5cclxuICAgICAgLy8gRWl0aGVyIE5hTiwgwrFJbmZpbml0eSBvciDCsTA/XHJcbiAgICAgIGlmICgheGMgfHwgIXljIHx8ICF4Y1swXSB8fCAheWNbMF0pIHtcclxuXHJcbiAgICAgICAgLy8gUmV0dXJuIE5hTiBpZiBlaXRoZXIgaXMgTmFOLCBvciBvbmUgaXMgMCBhbmQgdGhlIG90aGVyIGlzIEluZmluaXR5LlxyXG4gICAgICAgIGlmICgheC5zIHx8ICF5LnMgfHwgeGMgJiYgIXhjWzBdICYmICF5YyB8fCB5YyAmJiAheWNbMF0gJiYgIXhjKSB7XHJcbiAgICAgICAgICB5LmMgPSB5LmUgPSB5LnMgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB5LnMgKj0geC5zO1xyXG5cclxuICAgICAgICAgIC8vIFJldHVybiDCsUluZmluaXR5IGlmIGVpdGhlciBpcyDCsUluZmluaXR5LlxyXG4gICAgICAgICAgaWYgKCF4YyB8fCAheWMpIHtcclxuICAgICAgICAgICAgeS5jID0geS5lID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAvLyBSZXR1cm4gwrEwIGlmIGVpdGhlciBpcyDCsTAuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB5LmMgPSBbMF07XHJcbiAgICAgICAgICAgIHkuZSA9IDA7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4geTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZSA9IGJpdEZsb29yKHguZSAvIExPR19CQVNFKSArIGJpdEZsb29yKHkuZSAvIExPR19CQVNFKTtcclxuICAgICAgeS5zICo9IHgucztcclxuICAgICAgeGNMID0geGMubGVuZ3RoO1xyXG4gICAgICB5Y0wgPSB5Yy5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBFbnN1cmUgeGMgcG9pbnRzIHRvIGxvbmdlciBhcnJheSBhbmQgeGNMIHRvIGl0cyBsZW5ndGguXHJcbiAgICAgIGlmICh4Y0wgPCB5Y0wpIHpjID0geGMsIHhjID0geWMsIHljID0gemMsIGkgPSB4Y0wsIHhjTCA9IHljTCwgeWNMID0gaTtcclxuXHJcbiAgICAgIC8vIEluaXRpYWxpc2UgdGhlIHJlc3VsdCBhcnJheSB3aXRoIHplcm9zLlxyXG4gICAgICBmb3IgKGkgPSB4Y0wgKyB5Y0wsIHpjID0gW107IGktLTsgemMucHVzaCgwKSk7XHJcblxyXG4gICAgICBiYXNlID0gQkFTRTtcclxuICAgICAgc3FydEJhc2UgPSBTUVJUX0JBU0U7XHJcblxyXG4gICAgICBmb3IgKGkgPSB5Y0w7IC0taSA+PSAwOykge1xyXG4gICAgICAgIGMgPSAwO1xyXG4gICAgICAgIHlsbyA9IHljW2ldICUgc3FydEJhc2U7XHJcbiAgICAgICAgeWhpID0geWNbaV0gLyBzcXJ0QmFzZSB8IDA7XHJcblxyXG4gICAgICAgIGZvciAoayA9IHhjTCwgaiA9IGkgKyBrOyBqID4gaTspIHtcclxuICAgICAgICAgIHhsbyA9IHhjWy0ta10gJSBzcXJ0QmFzZTtcclxuICAgICAgICAgIHhoaSA9IHhjW2tdIC8gc3FydEJhc2UgfCAwO1xyXG4gICAgICAgICAgbSA9IHloaSAqIHhsbyArIHhoaSAqIHlsbztcclxuICAgICAgICAgIHhsbyA9IHlsbyAqIHhsbyArICgobSAlIHNxcnRCYXNlKSAqIHNxcnRCYXNlKSArIHpjW2pdICsgYztcclxuICAgICAgICAgIGMgPSAoeGxvIC8gYmFzZSB8IDApICsgKG0gLyBzcXJ0QmFzZSB8IDApICsgeWhpICogeGhpO1xyXG4gICAgICAgICAgemNbai0tXSA9IHhsbyAlIGJhc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB6Y1tqXSA9IGM7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjKSB7XHJcbiAgICAgICAgKytlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHpjLnNwbGljZSgwLCAxKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG5vcm1hbGlzZSh5LCB6YywgZSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgbmV3IEJpZ051bWJlciB3aG9zZSB2YWx1ZSBpcyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgbmVnYXRlZCxcclxuICAgICAqIGkuZS4gbXVsdGlwbGllZCBieSAtMS5cclxuICAgICAqL1xyXG4gICAgUC5uZWdhdGVkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgeCA9IG5ldyBCaWdOdW1iZXIodGhpcyk7XHJcbiAgICAgIHgucyA9IC14LnMgfHwgbnVsbDtcclxuICAgICAgcmV0dXJuIHg7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogIG4gKyAwID0gblxyXG4gICAgICogIG4gKyBOID0gTlxyXG4gICAgICogIG4gKyBJID0gSVxyXG4gICAgICogIDAgKyBuID0gblxyXG4gICAgICogIDAgKyAwID0gMFxyXG4gICAgICogIDAgKyBOID0gTlxyXG4gICAgICogIDAgKyBJID0gSVxyXG4gICAgICogIE4gKyBuID0gTlxyXG4gICAgICogIE4gKyAwID0gTlxyXG4gICAgICogIE4gKyBOID0gTlxyXG4gICAgICogIE4gKyBJID0gTlxyXG4gICAgICogIEkgKyBuID0gSVxyXG4gICAgICogIEkgKyAwID0gSVxyXG4gICAgICogIEkgKyBOID0gTlxyXG4gICAgICogIEkgKyBJID0gSVxyXG4gICAgICpcclxuICAgICAqIFJldHVybiBhIG5ldyBCaWdOdW1iZXIgd2hvc2UgdmFsdWUgaXMgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIHBsdXMgdGhlIHZhbHVlIG9mXHJcbiAgICAgKiBCaWdOdW1iZXIoeSwgYikuXHJcbiAgICAgKi9cclxuICAgIFAucGx1cyA9IGZ1bmN0aW9uICh5LCBiKSB7XHJcbiAgICAgIHZhciB0LFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIGEgPSB4LnM7XHJcblxyXG4gICAgICB5ID0gbmV3IEJpZ051bWJlcih5LCBiKTtcclxuICAgICAgYiA9IHkucztcclxuXHJcbiAgICAgIC8vIEVpdGhlciBOYU4/XHJcbiAgICAgIGlmICghYSB8fCAhYikgcmV0dXJuIG5ldyBCaWdOdW1iZXIoTmFOKTtcclxuXHJcbiAgICAgIC8vIFNpZ25zIGRpZmZlcj9cclxuICAgICAgIGlmIChhICE9IGIpIHtcclxuICAgICAgICB5LnMgPSAtYjtcclxuICAgICAgICByZXR1cm4geC5taW51cyh5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIHhlID0geC5lIC8gTE9HX0JBU0UsXHJcbiAgICAgICAgeWUgPSB5LmUgLyBMT0dfQkFTRSxcclxuICAgICAgICB4YyA9IHguYyxcclxuICAgICAgICB5YyA9IHkuYztcclxuXHJcbiAgICAgIGlmICgheGUgfHwgIXllKSB7XHJcblxyXG4gICAgICAgIC8vIFJldHVybiDCsUluZmluaXR5IGlmIGVpdGhlciDCsUluZmluaXR5LlxyXG4gICAgICAgIGlmICgheGMgfHwgIXljKSByZXR1cm4gbmV3IEJpZ051bWJlcihhIC8gMCk7XHJcblxyXG4gICAgICAgIC8vIEVpdGhlciB6ZXJvP1xyXG4gICAgICAgIC8vIFJldHVybiB5IGlmIHkgaXMgbm9uLXplcm8sIHggaWYgeCBpcyBub24temVybywgb3IgemVybyBpZiBib3RoIGFyZSB6ZXJvLlxyXG4gICAgICAgIGlmICgheGNbMF0gfHwgIXljWzBdKSByZXR1cm4geWNbMF0gPyB5IDogbmV3IEJpZ051bWJlcih4Y1swXSA/IHggOiBhICogMCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHhlID0gYml0Rmxvb3IoeGUpO1xyXG4gICAgICB5ZSA9IGJpdEZsb29yKHllKTtcclxuICAgICAgeGMgPSB4Yy5zbGljZSgpO1xyXG5cclxuICAgICAgLy8gUHJlcGVuZCB6ZXJvcyB0byBlcXVhbGlzZSBleHBvbmVudHMuIEZhc3RlciB0byB1c2UgcmV2ZXJzZSB0aGVuIGRvIHVuc2hpZnRzLlxyXG4gICAgICBpZiAoYSA9IHhlIC0geWUpIHtcclxuICAgICAgICBpZiAoYSA+IDApIHtcclxuICAgICAgICAgIHllID0geGU7XHJcbiAgICAgICAgICB0ID0geWM7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGEgPSAtYTtcclxuICAgICAgICAgIHQgPSB4YztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHQucmV2ZXJzZSgpO1xyXG4gICAgICAgIGZvciAoOyBhLS07IHQucHVzaCgwKSk7XHJcbiAgICAgICAgdC5yZXZlcnNlKCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGEgPSB4Yy5sZW5ndGg7XHJcbiAgICAgIGIgPSB5Yy5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBQb2ludCB4YyB0byB0aGUgbG9uZ2VyIGFycmF5LCBhbmQgYiB0byB0aGUgc2hvcnRlciBsZW5ndGguXHJcbiAgICAgIGlmIChhIC0gYiA8IDApIHQgPSB5YywgeWMgPSB4YywgeGMgPSB0LCBiID0gYTtcclxuXHJcbiAgICAgIC8vIE9ubHkgc3RhcnQgYWRkaW5nIGF0IHljLmxlbmd0aCAtIDEgYXMgdGhlIGZ1cnRoZXIgZGlnaXRzIG9mIHhjIGNhbiBiZSBpZ25vcmVkLlxyXG4gICAgICBmb3IgKGEgPSAwOyBiOykge1xyXG4gICAgICAgIGEgPSAoeGNbLS1iXSA9IHhjW2JdICsgeWNbYl0gKyBhKSAvIEJBU0UgfCAwO1xyXG4gICAgICAgIHhjW2JdID0gQkFTRSA9PT0geGNbYl0gPyAwIDogeGNbYl0gJSBCQVNFO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoYSkge1xyXG4gICAgICAgIHhjID0gW2FdLmNvbmNhdCh4Yyk7XHJcbiAgICAgICAgKyt5ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gTm8gbmVlZCB0byBjaGVjayBmb3IgemVybywgYXMgK3ggKyAreSAhPSAwICYmIC14ICsgLXkgIT0gMFxyXG4gICAgICAvLyB5ZSA9IE1BWF9FWFAgKyAxIHBvc3NpYmxlXHJcbiAgICAgIHJldHVybiBub3JtYWxpc2UoeSwgeGMsIHllKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBJZiBzZCBpcyB1bmRlZmluZWQgb3IgbnVsbCBvciB0cnVlIG9yIGZhbHNlLCByZXR1cm4gdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMgb2ZcclxuICAgICAqIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciwgb3IgbnVsbCBpZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaXMgwrFJbmZpbml0eSBvciBOYU4uXHJcbiAgICAgKiBJZiBzZCBpcyB0cnVlIGluY2x1ZGUgaW50ZWdlci1wYXJ0IHRyYWlsaW5nIHplcm9zIGluIHRoZSBjb3VudC5cclxuICAgICAqXHJcbiAgICAgKiBPdGhlcndpc2UsIGlmIHNkIGlzIGEgbnVtYmVyLCByZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzXHJcbiAgICAgKiBCaWdOdW1iZXIgcm91bmRlZCB0byBhIG1heGltdW0gb2Ygc2Qgc2lnbmlmaWNhbnQgZGlnaXRzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0sIG9yXHJcbiAgICAgKiBST1VORElOR19NT0RFIGlmIHJtIGlzIG9taXR0ZWQuXHJcbiAgICAgKlxyXG4gICAgICogc2Qge251bWJlcnxib29sZWFufSBudW1iZXI6IHNpZ25pZmljYW50IGRpZ2l0czogaW50ZWdlciwgMSB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogICAgICAgICAgICAgICAgICAgICBib29sZWFuOiB3aGV0aGVyIHRvIGNvdW50IGludGVnZXItcGFydCB0cmFpbGluZyB6ZXJvczogdHJ1ZSBvciBmYWxzZS5cclxuICAgICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge3NkfHJtfSdcclxuICAgICAqL1xyXG4gICAgUC5wcmVjaXNpb24gPSBQLnNkID0gZnVuY3Rpb24gKHNkLCBybSkge1xyXG4gICAgICB2YXIgYywgbiwgdixcclxuICAgICAgICB4ID0gdGhpcztcclxuXHJcbiAgICAgIGlmIChzZCAhPSBudWxsICYmIHNkICE9PSAhIXNkKSB7XHJcbiAgICAgICAgaW50Q2hlY2soc2QsIDEsIE1BWCk7XHJcbiAgICAgICAgaWYgKHJtID09IG51bGwpIHJtID0gUk9VTkRJTkdfTU9ERTtcclxuICAgICAgICBlbHNlIGludENoZWNrKHJtLCAwLCA4KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHJvdW5kKG5ldyBCaWdOdW1iZXIoeCksIHNkLCBybSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghKGMgPSB4LmMpKSByZXR1cm4gbnVsbDtcclxuICAgICAgdiA9IGMubGVuZ3RoIC0gMTtcclxuICAgICAgbiA9IHYgKiBMT0dfQkFTRSArIDE7XHJcblxyXG4gICAgICBpZiAodiA9IGNbdl0pIHtcclxuXHJcbiAgICAgICAgLy8gU3VidHJhY3QgdGhlIG51bWJlciBvZiB0cmFpbGluZyB6ZXJvcyBvZiB0aGUgbGFzdCBlbGVtZW50LlxyXG4gICAgICAgIGZvciAoOyB2ICUgMTAgPT0gMDsgdiAvPSAxMCwgbi0tKTtcclxuXHJcbiAgICAgICAgLy8gQWRkIHRoZSBudW1iZXIgb2YgZGlnaXRzIG9mIHRoZSBmaXJzdCBlbGVtZW50LlxyXG4gICAgICAgIGZvciAodiA9IGNbMF07IHYgPj0gMTA7IHYgLz0gMTAsIG4rKyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChzZCAmJiB4LmUgKyAxID4gbikgbiA9IHguZSArIDE7XHJcblxyXG4gICAgICByZXR1cm4gbjtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBzaGlmdGVkIGJ5IGsgcGxhY2VzXHJcbiAgICAgKiAocG93ZXJzIG9mIDEwKS4gU2hpZnQgdG8gdGhlIHJpZ2h0IGlmIG4gPiAwLCBhbmQgdG8gdGhlIGxlZnQgaWYgbiA8IDAuXHJcbiAgICAgKlxyXG4gICAgICogayB7bnVtYmVyfSBJbnRlZ2VyLCAtTUFYX1NBRkVfSU5URUdFUiB0byBNQVhfU0FGRV9JTlRFR0VSIGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2t9J1xyXG4gICAgICovXHJcbiAgICBQLnNoaWZ0ZWRCeSA9IGZ1bmN0aW9uIChrKSB7XHJcbiAgICAgIGludENoZWNrKGssIC1NQVhfU0FGRV9JTlRFR0VSLCBNQVhfU0FGRV9JTlRFR0VSKTtcclxuICAgICAgcmV0dXJuIHRoaXMudGltZXMoJzFlJyArIGspO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqICBzcXJ0KC1uKSA9ICBOXHJcbiAgICAgKiAgc3FydChOKSA9ICBOXHJcbiAgICAgKiAgc3FydCgtSSkgPSAgTlxyXG4gICAgICogIHNxcnQoSSkgPSAgSVxyXG4gICAgICogIHNxcnQoMCkgPSAgMFxyXG4gICAgICogIHNxcnQoLTApID0gLTBcclxuICAgICAqXHJcbiAgICAgKiBSZXR1cm4gYSBuZXcgQmlnTnVtYmVyIHdob3NlIHZhbHVlIGlzIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIsXHJcbiAgICAgKiByb3VuZGVkIGFjY29yZGluZyB0byBERUNJTUFMX1BMQUNFUyBhbmQgUk9VTkRJTkdfTU9ERS5cclxuICAgICAqL1xyXG4gICAgUC5zcXVhcmVSb290ID0gUC5zcXJ0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICB2YXIgbSwgbiwgciwgcmVwLCB0LFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIGMgPSB4LmMsXHJcbiAgICAgICAgcyA9IHgucyxcclxuICAgICAgICBlID0geC5lLFxyXG4gICAgICAgIGRwID0gREVDSU1BTF9QTEFDRVMgKyA0LFxyXG4gICAgICAgIGhhbGYgPSBuZXcgQmlnTnVtYmVyKCcwLjUnKTtcclxuXHJcbiAgICAgIC8vIE5lZ2F0aXZlL05hTi9JbmZpbml0eS96ZXJvP1xyXG4gICAgICBpZiAocyAhPT0gMSB8fCAhYyB8fCAhY1swXSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnTnVtYmVyKCFzIHx8IHMgPCAwICYmICghYyB8fCBjWzBdKSA/IE5hTiA6IGMgPyB4IDogMSAvIDApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBJbml0aWFsIGVzdGltYXRlLlxyXG4gICAgICBzID0gTWF0aC5zcXJ0KCt2YWx1ZU9mKHgpKTtcclxuXHJcbiAgICAgIC8vIE1hdGguc3FydCB1bmRlcmZsb3cvb3ZlcmZsb3c/XHJcbiAgICAgIC8vIFBhc3MgeCB0byBNYXRoLnNxcnQgYXMgaW50ZWdlciwgdGhlbiBhZGp1c3QgdGhlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQuXHJcbiAgICAgIGlmIChzID09IDAgfHwgcyA9PSAxIC8gMCkge1xyXG4gICAgICAgIG4gPSBjb2VmZlRvU3RyaW5nKGMpO1xyXG4gICAgICAgIGlmICgobi5sZW5ndGggKyBlKSAlIDIgPT0gMCkgbiArPSAnMCc7XHJcbiAgICAgICAgcyA9IE1hdGguc3FydCgrbik7XHJcbiAgICAgICAgZSA9IGJpdEZsb29yKChlICsgMSkgLyAyKSAtIChlIDwgMCB8fCBlICUgMik7XHJcblxyXG4gICAgICAgIGlmIChzID09IDEgLyAwKSB7XHJcbiAgICAgICAgICBuID0gJzVlJyArIGU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG4gPSBzLnRvRXhwb25lbnRpYWwoKTtcclxuICAgICAgICAgIG4gPSBuLnNsaWNlKDAsIG4uaW5kZXhPZignZScpICsgMSkgKyBlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgciA9IG5ldyBCaWdOdW1iZXIobik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgciA9IG5ldyBCaWdOdW1iZXIocyArICcnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQ2hlY2sgZm9yIHplcm8uXHJcbiAgICAgIC8vIHIgY291bGQgYmUgemVybyBpZiBNSU5fRVhQIGlzIGNoYW5nZWQgYWZ0ZXIgdGhlIHRoaXMgdmFsdWUgd2FzIGNyZWF0ZWQuXHJcbiAgICAgIC8vIFRoaXMgd291bGQgY2F1c2UgYSBkaXZpc2lvbiBieSB6ZXJvICh4L3QpIGFuZCBoZW5jZSBJbmZpbml0eSBiZWxvdywgd2hpY2ggd291bGQgY2F1c2VcclxuICAgICAgLy8gY29lZmZUb1N0cmluZyB0byB0aHJvdy5cclxuICAgICAgaWYgKHIuY1swXSkge1xyXG4gICAgICAgIGUgPSByLmU7XHJcbiAgICAgICAgcyA9IGUgKyBkcDtcclxuICAgICAgICBpZiAocyA8IDMpIHMgPSAwO1xyXG5cclxuICAgICAgICAvLyBOZXd0b24tUmFwaHNvbiBpdGVyYXRpb24uXHJcbiAgICAgICAgZm9yICg7IDspIHtcclxuICAgICAgICAgIHQgPSByO1xyXG4gICAgICAgICAgciA9IGhhbGYudGltZXModC5wbHVzKGRpdih4LCB0LCBkcCwgMSkpKTtcclxuXHJcbiAgICAgICAgICBpZiAoY29lZmZUb1N0cmluZyh0LmMpLnNsaWNlKDAsIHMpID09PSAobiA9IGNvZWZmVG9TdHJpbmcoci5jKSkuc2xpY2UoMCwgcykpIHtcclxuXHJcbiAgICAgICAgICAgIC8vIFRoZSBleHBvbmVudCBvZiByIG1heSBoZXJlIGJlIG9uZSBsZXNzIHRoYW4gdGhlIGZpbmFsIHJlc3VsdCBleHBvbmVudCxcclxuICAgICAgICAgICAgLy8gZS5nIDAuMDAwOTk5OSAoZS00KSAtLT4gMC4wMDEgKGUtMyksIHNvIGFkanVzdCBzIHNvIHRoZSByb3VuZGluZyBkaWdpdHNcclxuICAgICAgICAgICAgLy8gYXJlIGluZGV4ZWQgY29ycmVjdGx5LlxyXG4gICAgICAgICAgICBpZiAoci5lIDwgZSkgLS1zO1xyXG4gICAgICAgICAgICBuID0gbi5zbGljZShzIC0gMywgcyArIDEpO1xyXG5cclxuICAgICAgICAgICAgLy8gVGhlIDR0aCByb3VuZGluZyBkaWdpdCBtYXkgYmUgaW4gZXJyb3IgYnkgLTEgc28gaWYgdGhlIDQgcm91bmRpbmcgZGlnaXRzXHJcbiAgICAgICAgICAgIC8vIGFyZSA5OTk5IG9yIDQ5OTkgKGkuZS4gYXBwcm9hY2hpbmcgYSByb3VuZGluZyBib3VuZGFyeSkgY29udGludWUgdGhlXHJcbiAgICAgICAgICAgIC8vIGl0ZXJhdGlvbi5cclxuICAgICAgICAgICAgaWYgKG4gPT0gJzk5OTknIHx8ICFyZXAgJiYgbiA9PSAnNDk5OScpIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gT24gdGhlIGZpcnN0IGl0ZXJhdGlvbiBvbmx5LCBjaGVjayB0byBzZWUgaWYgcm91bmRpbmcgdXAgZ2l2ZXMgdGhlXHJcbiAgICAgICAgICAgICAgLy8gZXhhY3QgcmVzdWx0IGFzIHRoZSBuaW5lcyBtYXkgaW5maW5pdGVseSByZXBlYXQuXHJcbiAgICAgICAgICAgICAgaWYgKCFyZXApIHtcclxuICAgICAgICAgICAgICAgIHJvdW5kKHQsIHQuZSArIERFQ0lNQUxfUExBQ0VTICsgMiwgMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHQudGltZXModCkuZXEoeCkpIHtcclxuICAgICAgICAgICAgICAgICAgciA9IHQ7XHJcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgZHAgKz0gNDtcclxuICAgICAgICAgICAgICBzICs9IDQ7XHJcbiAgICAgICAgICAgICAgcmVwID0gMTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAgICAgLy8gSWYgcm91bmRpbmcgZGlnaXRzIGFyZSBudWxsLCAwezAsNH0gb3IgNTB7MCwzfSwgY2hlY2sgZm9yIGV4YWN0XHJcbiAgICAgICAgICAgICAgLy8gcmVzdWx0LiBJZiBub3QsIHRoZW4gdGhlcmUgYXJlIGZ1cnRoZXIgZGlnaXRzIGFuZCBtIHdpbGwgYmUgdHJ1dGh5LlxyXG4gICAgICAgICAgICAgIGlmICghK24gfHwgIStuLnNsaWNlKDEpICYmIG4uY2hhckF0KDApID09ICc1Jykge1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIFRydW5jYXRlIHRvIHRoZSBmaXJzdCByb3VuZGluZyBkaWdpdC5cclxuICAgICAgICAgICAgICAgIHJvdW5kKHIsIHIuZSArIERFQ0lNQUxfUExBQ0VTICsgMiwgMSk7XHJcbiAgICAgICAgICAgICAgICBtID0gIXIudGltZXMocikuZXEoeCk7XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHJvdW5kKHIsIHIuZSArIERFQ0lNQUxfUExBQ0VTICsgMSwgUk9VTkRJTkdfTU9ERSwgbSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaW4gZXhwb25lbnRpYWwgbm90YXRpb24gYW5kXHJcbiAgICAgKiByb3VuZGVkIHVzaW5nIFJPVU5ESU5HX01PREUgdG8gZHAgZml4ZWQgZGVjaW1hbCBwbGFjZXMuXHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCB7bm90IGEgcHJpbWl0aXZlIG51bWJlcnxub3QgYW4gaW50ZWdlcnxvdXQgb2YgcmFuZ2V9OiB7ZHB8cm19J1xyXG4gICAgICovXHJcbiAgICBQLnRvRXhwb25lbnRpYWwgPSBmdW5jdGlvbiAoZHAsIHJtKSB7XHJcbiAgICAgIGlmIChkcCAhPSBudWxsKSB7XHJcbiAgICAgICAgaW50Q2hlY2soZHAsIDAsIE1BWCk7XHJcbiAgICAgICAgZHArKztcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZm9ybWF0KHRoaXMsIGRwLCBybSwgMSk7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgaW4gZml4ZWQtcG9pbnQgbm90YXRpb24gcm91bmRpbmdcclxuICAgICAqIHRvIGRwIGZpeGVkIGRlY2ltYWwgcGxhY2VzIHVzaW5nIHJvdW5kaW5nIG1vZGUgcm0sIG9yIFJPVU5ESU5HX01PREUgaWYgcm0gaXMgb21pdHRlZC5cclxuICAgICAqXHJcbiAgICAgKiBOb3RlOiBhcyB3aXRoIEphdmFTY3JpcHQncyBudW1iZXIgdHlwZSwgKC0wKS50b0ZpeGVkKDApIGlzICcwJyxcclxuICAgICAqIGJ1dCBlLmcuICgtMC4wMDAwMSkudG9GaXhlZCgwKSBpcyAnLTAnLlxyXG4gICAgICpcclxuICAgICAqIFtkcF0ge251bWJlcn0gRGVjaW1hbCBwbGFjZXMuIEludGVnZXIsIDAgdG8gTUFYIGluY2x1c2l2ZS5cclxuICAgICAqIFtybV0ge251bWJlcn0gUm91bmRpbmcgbW9kZS4gSW50ZWdlciwgMCB0byA4IGluY2x1c2l2ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2RwfHJtfSdcclxuICAgICAqL1xyXG4gICAgUC50b0ZpeGVkID0gZnVuY3Rpb24gKGRwLCBybSkge1xyXG4gICAgICBpZiAoZHAgIT0gbnVsbCkge1xyXG4gICAgICAgIGludENoZWNrKGRwLCAwLCBNQVgpO1xyXG4gICAgICAgIGRwID0gZHAgKyB0aGlzLmUgKyAxO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmb3JtYXQodGhpcywgZHAsIHJtKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8qXHJcbiAgICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBvZiB0aGlzIEJpZ051bWJlciBpbiBmaXhlZC1wb2ludCBub3RhdGlvbiByb3VuZGVkXHJcbiAgICAgKiB1c2luZyBybSBvciBST1VORElOR19NT0RFIHRvIGRwIGRlY2ltYWwgcGxhY2VzLCBhbmQgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgcHJvcGVydGllc1xyXG4gICAgICogb2YgdGhlIGZvcm1hdCBvciBGT1JNQVQgb2JqZWN0IChzZWUgQmlnTnVtYmVyLnNldCkuXHJcbiAgICAgKlxyXG4gICAgICogVGhlIGZvcm1hdHRpbmcgb2JqZWN0IG1heSBjb250YWluIHNvbWUgb3IgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHNob3duIGJlbG93LlxyXG4gICAgICpcclxuICAgICAqIEZPUk1BVCA9IHtcclxuICAgICAqICAgcHJlZml4OiAnJyxcclxuICAgICAqICAgZ3JvdXBTaXplOiAzLFxyXG4gICAgICogICBzZWNvbmRhcnlHcm91cFNpemU6IDAsXHJcbiAgICAgKiAgIGdyb3VwU2VwYXJhdG9yOiAnLCcsXHJcbiAgICAgKiAgIGRlY2ltYWxTZXBhcmF0b3I6ICcuJyxcclxuICAgICAqICAgZnJhY3Rpb25Hcm91cFNpemU6IDAsXHJcbiAgICAgKiAgIGZyYWN0aW9uR3JvdXBTZXBhcmF0b3I6ICdcXHhBMCcsICAgICAgLy8gbm9uLWJyZWFraW5nIHNwYWNlXHJcbiAgICAgKiAgIHN1ZmZpeDogJydcclxuICAgICAqIH07XHJcbiAgICAgKlxyXG4gICAgICogW2RwXSB7bnVtYmVyfSBEZWNpbWFsIHBsYWNlcy4gSW50ZWdlciwgMCB0byBNQVggaW5jbHVzaXZlLlxyXG4gICAgICogW3JtXSB7bnVtYmVyfSBSb3VuZGluZyBtb2RlLiBJbnRlZ2VyLCAwIHRvIDggaW5jbHVzaXZlLlxyXG4gICAgICogW2Zvcm1hdF0ge29iamVjdH0gRm9ybWF0dGluZyBvcHRpb25zLiBTZWUgRk9STUFUIHBiamVjdCBhYm92ZS5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhIHByaW1pdGl2ZSBudW1iZXJ8bm90IGFuIGludGVnZXJ8b3V0IG9mIHJhbmdlfToge2RwfHJtfSdcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBBcmd1bWVudCBub3QgYW4gb2JqZWN0OiB7Zm9ybWF0fSdcclxuICAgICAqL1xyXG4gICAgUC50b0Zvcm1hdCA9IGZ1bmN0aW9uIChkcCwgcm0sIGZvcm1hdCkge1xyXG4gICAgICB2YXIgc3RyLFxyXG4gICAgICAgIHggPSB0aGlzO1xyXG5cclxuICAgICAgaWYgKGZvcm1hdCA9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGRwICE9IG51bGwgJiYgcm0gJiYgdHlwZW9mIHJtID09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBmb3JtYXQgPSBybTtcclxuICAgICAgICAgIHJtID0gbnVsbDtcclxuICAgICAgICB9IGVsc2UgaWYgKGRwICYmIHR5cGVvZiBkcCA9PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgZm9ybWF0ID0gZHA7XHJcbiAgICAgICAgICBkcCA9IHJtID0gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZm9ybWF0ID0gRk9STUFUO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZm9ybWF0ICE9ICdvYmplY3QnKSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgIChiaWdudW1iZXJFcnJvciArICdBcmd1bWVudCBub3QgYW4gb2JqZWN0OiAnICsgZm9ybWF0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgc3RyID0geC50b0ZpeGVkKGRwLCBybSk7XHJcblxyXG4gICAgICBpZiAoeC5jKSB7XHJcbiAgICAgICAgdmFyIGksXHJcbiAgICAgICAgICBhcnIgPSBzdHIuc3BsaXQoJy4nKSxcclxuICAgICAgICAgIGcxID0gK2Zvcm1hdC5ncm91cFNpemUsXHJcbiAgICAgICAgICBnMiA9ICtmb3JtYXQuc2Vjb25kYXJ5R3JvdXBTaXplLFxyXG4gICAgICAgICAgZ3JvdXBTZXBhcmF0b3IgPSBmb3JtYXQuZ3JvdXBTZXBhcmF0b3IgfHwgJycsXHJcbiAgICAgICAgICBpbnRQYXJ0ID0gYXJyWzBdLFxyXG4gICAgICAgICAgZnJhY3Rpb25QYXJ0ID0gYXJyWzFdLFxyXG4gICAgICAgICAgaXNOZWcgPSB4LnMgPCAwLFxyXG4gICAgICAgICAgaW50RGlnaXRzID0gaXNOZWcgPyBpbnRQYXJ0LnNsaWNlKDEpIDogaW50UGFydCxcclxuICAgICAgICAgIGxlbiA9IGludERpZ2l0cy5sZW5ndGg7XHJcblxyXG4gICAgICAgIGlmIChnMikgaSA9IGcxLCBnMSA9IGcyLCBnMiA9IGksIGxlbiAtPSBpO1xyXG5cclxuICAgICAgICBpZiAoZzEgPiAwICYmIGxlbiA+IDApIHtcclxuICAgICAgICAgIGkgPSBsZW4gJSBnMSB8fCBnMTtcclxuICAgICAgICAgIGludFBhcnQgPSBpbnREaWdpdHMuc3Vic3RyKDAsIGkpO1xyXG4gICAgICAgICAgZm9yICg7IGkgPCBsZW47IGkgKz0gZzEpIGludFBhcnQgKz0gZ3JvdXBTZXBhcmF0b3IgKyBpbnREaWdpdHMuc3Vic3RyKGksIGcxKTtcclxuICAgICAgICAgIGlmIChnMiA+IDApIGludFBhcnQgKz0gZ3JvdXBTZXBhcmF0b3IgKyBpbnREaWdpdHMuc2xpY2UoaSk7XHJcbiAgICAgICAgICBpZiAoaXNOZWcpIGludFBhcnQgPSAnLScgKyBpbnRQYXJ0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RyID0gZnJhY3Rpb25QYXJ0XHJcbiAgICAgICAgID8gaW50UGFydCArIChmb3JtYXQuZGVjaW1hbFNlcGFyYXRvciB8fCAnJykgKyAoKGcyID0gK2Zvcm1hdC5mcmFjdGlvbkdyb3VwU2l6ZSlcclxuICAgICAgICAgID8gZnJhY3Rpb25QYXJ0LnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxcXGR7JyArIGcyICsgJ31cXFxcQicsICdnJyksXHJcbiAgICAgICAgICAgJyQmJyArIChmb3JtYXQuZnJhY3Rpb25Hcm91cFNlcGFyYXRvciB8fCAnJykpXHJcbiAgICAgICAgICA6IGZyYWN0aW9uUGFydClcclxuICAgICAgICAgOiBpbnRQYXJ0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gKGZvcm1hdC5wcmVmaXggfHwgJycpICsgc3RyICsgKGZvcm1hdC5zdWZmaXggfHwgJycpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhbiBhcnJheSBvZiB0d28gQmlnTnVtYmVycyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGFzIGEgc2ltcGxlXHJcbiAgICAgKiBmcmFjdGlvbiB3aXRoIGFuIGludGVnZXIgbnVtZXJhdG9yIGFuZCBhbiBpbnRlZ2VyIGRlbm9taW5hdG9yLlxyXG4gICAgICogVGhlIGRlbm9taW5hdG9yIHdpbGwgYmUgYSBwb3NpdGl2ZSBub24temVybyB2YWx1ZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNwZWNpZmllZFxyXG4gICAgICogbWF4aW11bSBkZW5vbWluYXRvci4gSWYgYSBtYXhpbXVtIGRlbm9taW5hdG9yIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZW5vbWluYXRvciB3aWxsIGJlXHJcbiAgICAgKiB0aGUgbG93ZXN0IHZhbHVlIG5lY2Vzc2FyeSB0byByZXByZXNlbnQgdGhlIG51bWJlciBleGFjdGx5LlxyXG4gICAgICpcclxuICAgICAqIFttZF0ge251bWJlcnxzdHJpbmd8QmlnTnVtYmVyfSBJbnRlZ2VyID49IDEsIG9yIEluZmluaXR5LiBUaGUgbWF4aW11bSBkZW5vbWluYXRvci5cclxuICAgICAqXHJcbiAgICAgKiAnW0JpZ051bWJlciBFcnJvcl0gQXJndW1lbnQge25vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX0gOiB7bWR9J1xyXG4gICAgICovXHJcbiAgICBQLnRvRnJhY3Rpb24gPSBmdW5jdGlvbiAobWQpIHtcclxuICAgICAgdmFyIGQsIGQwLCBkMSwgZDIsIGUsIGV4cCwgbiwgbjAsIG4xLCBxLCByLCBzLFxyXG4gICAgICAgIHggPSB0aGlzLFxyXG4gICAgICAgIHhjID0geC5jO1xyXG5cclxuICAgICAgaWYgKG1kICE9IG51bGwpIHtcclxuICAgICAgICBuID0gbmV3IEJpZ051bWJlcihtZCk7XHJcblxyXG4gICAgICAgIC8vIFRocm93IGlmIG1kIGlzIGxlc3MgdGhhbiBvbmUgb3IgaXMgbm90IGFuIGludGVnZXIsIHVubGVzcyBpdCBpcyBJbmZpbml0eS5cclxuICAgICAgICBpZiAoIW4uaXNJbnRlZ2VyKCkgJiYgKG4uYyB8fCBuLnMgIT09IDEpIHx8IG4ubHQoT05FKSkge1xyXG4gICAgICAgICAgdGhyb3cgRXJyb3JcclxuICAgICAgICAgICAgKGJpZ251bWJlckVycm9yICsgJ0FyZ3VtZW50ICcgK1xyXG4gICAgICAgICAgICAgIChuLmlzSW50ZWdlcigpID8gJ291dCBvZiByYW5nZTogJyA6ICdub3QgYW4gaW50ZWdlcjogJykgKyB2YWx1ZU9mKG4pKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICgheGMpIHJldHVybiBuZXcgQmlnTnVtYmVyKHgpO1xyXG5cclxuICAgICAgZCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuICAgICAgbjEgPSBkMCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuICAgICAgZDEgPSBuMCA9IG5ldyBCaWdOdW1iZXIoT05FKTtcclxuICAgICAgcyA9IGNvZWZmVG9TdHJpbmcoeGMpO1xyXG5cclxuICAgICAgLy8gRGV0ZXJtaW5lIGluaXRpYWwgZGVub21pbmF0b3IuXHJcbiAgICAgIC8vIGQgaXMgYSBwb3dlciBvZiAxMCBhbmQgdGhlIG1pbmltdW0gbWF4IGRlbm9taW5hdG9yIHRoYXQgc3BlY2lmaWVzIHRoZSB2YWx1ZSBleGFjdGx5LlxyXG4gICAgICBlID0gZC5lID0gcy5sZW5ndGggLSB4LmUgLSAxO1xyXG4gICAgICBkLmNbMF0gPSBQT1dTX1RFTlsoZXhwID0gZSAlIExPR19CQVNFKSA8IDAgPyBMT0dfQkFTRSArIGV4cCA6IGV4cF07XHJcbiAgICAgIG1kID0gIW1kIHx8IG4uY29tcGFyZWRUbyhkKSA+IDAgPyAoZSA+IDAgPyBkIDogbjEpIDogbjtcclxuXHJcbiAgICAgIGV4cCA9IE1BWF9FWFA7XHJcbiAgICAgIE1BWF9FWFAgPSAxIC8gMDtcclxuICAgICAgbiA9IG5ldyBCaWdOdW1iZXIocyk7XHJcblxyXG4gICAgICAvLyBuMCA9IGQxID0gMFxyXG4gICAgICBuMC5jWzBdID0gMDtcclxuXHJcbiAgICAgIGZvciAoOyA7KSAge1xyXG4gICAgICAgIHEgPSBkaXYobiwgZCwgMCwgMSk7XHJcbiAgICAgICAgZDIgPSBkMC5wbHVzKHEudGltZXMoZDEpKTtcclxuICAgICAgICBpZiAoZDIuY29tcGFyZWRUbyhtZCkgPT0gMSkgYnJlYWs7XHJcbiAgICAgICAgZDAgPSBkMTtcclxuICAgICAgICBkMSA9IGQyO1xyXG4gICAgICAgIG4xID0gbjAucGx1cyhxLnRpbWVzKGQyID0gbjEpKTtcclxuICAgICAgICBuMCA9IGQyO1xyXG4gICAgICAgIGQgPSBuLm1pbnVzKHEudGltZXMoZDIgPSBkKSk7XHJcbiAgICAgICAgbiA9IGQyO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBkMiA9IGRpdihtZC5taW51cyhkMCksIGQxLCAwLCAxKTtcclxuICAgICAgbjAgPSBuMC5wbHVzKGQyLnRpbWVzKG4xKSk7XHJcbiAgICAgIGQwID0gZDAucGx1cyhkMi50aW1lcyhkMSkpO1xyXG4gICAgICBuMC5zID0gbjEucyA9IHgucztcclxuICAgICAgZSA9IGUgKiAyO1xyXG5cclxuICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGZyYWN0aW9uIGlzIGNsb3NlciB0byB4LCBuMC9kMCBvciBuMS9kMVxyXG4gICAgICByID0gZGl2KG4xLCBkMSwgZSwgUk9VTkRJTkdfTU9ERSkubWludXMoeCkuYWJzKCkuY29tcGFyZWRUbyhcclxuICAgICAgICAgIGRpdihuMCwgZDAsIGUsIFJPVU5ESU5HX01PREUpLm1pbnVzKHgpLmFicygpKSA8IDEgPyBbbjEsIGQxXSA6IFtuMCwgZDBdO1xyXG5cclxuICAgICAgTUFYX0VYUCA9IGV4cDtcclxuXHJcbiAgICAgIHJldHVybiByO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBCaWdOdW1iZXIgY29udmVydGVkIHRvIGEgbnVtYmVyIHByaW1pdGl2ZS5cclxuICAgICAqL1xyXG4gICAgUC50b051bWJlciA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgcmV0dXJuICt2YWx1ZU9mKHRoaXMpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIHJvdW5kZWQgdG8gc2Qgc2lnbmlmaWNhbnQgZGlnaXRzXHJcbiAgICAgKiB1c2luZyByb3VuZGluZyBtb2RlIHJtIG9yIFJPVU5ESU5HX01PREUuIElmIHNkIGlzIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIGRpZ2l0c1xyXG4gICAgICogbmVjZXNzYXJ5IHRvIHJlcHJlc2VudCB0aGUgaW50ZWdlciBwYXJ0IG9mIHRoZSB2YWx1ZSBpbiBmaXhlZC1wb2ludCBub3RhdGlvbiwgdGhlbiB1c2VcclxuICAgICAqIGV4cG9uZW50aWFsIG5vdGF0aW9uLlxyXG4gICAgICpcclxuICAgICAqIFtzZF0ge251bWJlcn0gU2lnbmlmaWNhbnQgZGlnaXRzLiBJbnRlZ2VyLCAxIHRvIE1BWCBpbmNsdXNpdmUuXHJcbiAgICAgKiBbcm1dIHtudW1iZXJ9IFJvdW5kaW5nIG1vZGUuIEludGVnZXIsIDAgdG8gOCBpbmNsdXNpdmUuXHJcbiAgICAgKlxyXG4gICAgICogJ1tCaWdOdW1iZXIgRXJyb3JdIEFyZ3VtZW50IHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtzZHxybX0nXHJcbiAgICAgKi9cclxuICAgIFAudG9QcmVjaXNpb24gPSBmdW5jdGlvbiAoc2QsIHJtKSB7XHJcbiAgICAgIGlmIChzZCAhPSBudWxsKSBpbnRDaGVjayhzZCwgMSwgTUFYKTtcclxuICAgICAgcmV0dXJuIGZvcm1hdCh0aGlzLCBzZCwgcm0sIDIpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLypcclxuICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHZhbHVlIG9mIHRoaXMgQmlnTnVtYmVyIGluIGJhc2UgYiwgb3IgYmFzZSAxMCBpZiBiIGlzXHJcbiAgICAgKiBvbWl0dGVkLiBJZiBhIGJhc2UgaXMgc3BlY2lmaWVkLCBpbmNsdWRpbmcgYmFzZSAxMCwgcm91bmQgYWNjb3JkaW5nIHRvIERFQ0lNQUxfUExBQ0VTIGFuZFxyXG4gICAgICogUk9VTkRJTkdfTU9ERS4gSWYgYSBiYXNlIGlzIG5vdCBzcGVjaWZpZWQsIGFuZCB0aGlzIEJpZ051bWJlciBoYXMgYSBwb3NpdGl2ZSBleHBvbmVudFxyXG4gICAgICogdGhhdCBpcyBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4gVE9fRVhQX1BPUywgb3IgYSBuZWdhdGl2ZSBleHBvbmVudCBlcXVhbCB0byBvciBsZXNzIHRoYW5cclxuICAgICAqIFRPX0VYUF9ORUcsIHJldHVybiBleHBvbmVudGlhbCBub3RhdGlvbi5cclxuICAgICAqXHJcbiAgICAgKiBbYl0ge251bWJlcn0gSW50ZWdlciwgMiB0byBBTFBIQUJFVC5sZW5ndGggaW5jbHVzaXZlLlxyXG4gICAgICpcclxuICAgICAqICdbQmlnTnVtYmVyIEVycm9yXSBCYXNlIHtub3QgYSBwcmltaXRpdmUgbnVtYmVyfG5vdCBhbiBpbnRlZ2VyfG91dCBvZiByYW5nZX06IHtifSdcclxuICAgICAqL1xyXG4gICAgUC50b1N0cmluZyA9IGZ1bmN0aW9uIChiKSB7XHJcbiAgICAgIHZhciBzdHIsXHJcbiAgICAgICAgbiA9IHRoaXMsXHJcbiAgICAgICAgcyA9IG4ucyxcclxuICAgICAgICBlID0gbi5lO1xyXG5cclxuICAgICAgLy8gSW5maW5pdHkgb3IgTmFOP1xyXG4gICAgICBpZiAoZSA9PT0gbnVsbCkge1xyXG4gICAgICAgIGlmIChzKSB7XHJcbiAgICAgICAgICBzdHIgPSAnSW5maW5pdHknO1xyXG4gICAgICAgICAgaWYgKHMgPCAwKSBzdHIgPSAnLScgKyBzdHI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHN0ciA9ICdOYU4nO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoYiA9PSBudWxsKSB7XHJcbiAgICAgICAgICBzdHIgPSBlIDw9IFRPX0VYUF9ORUcgfHwgZSA+PSBUT19FWFBfUE9TXHJcbiAgICAgICAgICAgPyB0b0V4cG9uZW50aWFsKGNvZWZmVG9TdHJpbmcobi5jKSwgZSlcclxuICAgICAgICAgICA6IHRvRml4ZWRQb2ludChjb2VmZlRvU3RyaW5nKG4uYyksIGUsICcwJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChiID09PSAxMCkge1xyXG4gICAgICAgICAgbiA9IHJvdW5kKG5ldyBCaWdOdW1iZXIobiksIERFQ0lNQUxfUExBQ0VTICsgZSArIDEsIFJPVU5ESU5HX01PREUpO1xyXG4gICAgICAgICAgc3RyID0gdG9GaXhlZFBvaW50KGNvZWZmVG9TdHJpbmcobi5jKSwgbi5lLCAnMCcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpbnRDaGVjayhiLCAyLCBBTFBIQUJFVC5sZW5ndGgsICdCYXNlJyk7XHJcbiAgICAgICAgICBzdHIgPSBjb252ZXJ0QmFzZSh0b0ZpeGVkUG9pbnQoY29lZmZUb1N0cmluZyhuLmMpLCBlLCAnMCcpLCAxMCwgYiwgcywgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocyA8IDAgJiYgbi5jWzBdKSBzdHIgPSAnLScgKyBzdHI7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9O1xyXG5cclxuXHJcbiAgICAvKlxyXG4gICAgICogUmV0dXJuIGFzIHRvU3RyaW5nLCBidXQgZG8gbm90IGFjY2VwdCBhIGJhc2UgYXJndW1lbnQsIGFuZCBpbmNsdWRlIHRoZSBtaW51cyBzaWduIGZvclxyXG4gICAgICogbmVnYXRpdmUgemVyby5cclxuICAgICAqL1xyXG4gICAgUC52YWx1ZU9mID0gUC50b0pTT04gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZU9mKHRoaXMpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgUC5faXNCaWdOdW1iZXIgPSB0cnVlO1xyXG5cclxuICAgIGlmIChjb25maWdPYmplY3QgIT0gbnVsbCkgQmlnTnVtYmVyLnNldChjb25maWdPYmplY3QpO1xyXG5cclxuICAgIHJldHVybiBCaWdOdW1iZXI7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gUFJJVkFURSBIRUxQRVIgRlVOQ1RJT05TXHJcblxyXG4gIC8vIFRoZXNlIGZ1bmN0aW9ucyBkb24ndCBuZWVkIGFjY2VzcyB0byB2YXJpYWJsZXMsXHJcbiAgLy8gZS5nLiBERUNJTUFMX1BMQUNFUywgaW4gdGhlIHNjb3BlIG9mIHRoZSBgY2xvbmVgIGZ1bmN0aW9uIGFib3ZlLlxyXG5cclxuXHJcbiAgZnVuY3Rpb24gYml0Rmxvb3Iobikge1xyXG4gICAgdmFyIGkgPSBuIHwgMDtcclxuICAgIHJldHVybiBuID4gMCB8fCBuID09PSBpID8gaSA6IGkgLSAxO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIFJldHVybiBhIGNvZWZmaWNpZW50IGFycmF5IGFzIGEgc3RyaW5nIG9mIGJhc2UgMTAgZGlnaXRzLlxyXG4gIGZ1bmN0aW9uIGNvZWZmVG9TdHJpbmcoYSkge1xyXG4gICAgdmFyIHMsIHosXHJcbiAgICAgIGkgPSAxLFxyXG4gICAgICBqID0gYS5sZW5ndGgsXHJcbiAgICAgIHIgPSBhWzBdICsgJyc7XHJcblxyXG4gICAgZm9yICg7IGkgPCBqOykge1xyXG4gICAgICBzID0gYVtpKytdICsgJyc7XHJcbiAgICAgIHogPSBMT0dfQkFTRSAtIHMubGVuZ3RoO1xyXG4gICAgICBmb3IgKDsgei0tOyBzID0gJzAnICsgcyk7XHJcbiAgICAgIHIgKz0gcztcclxuICAgIH1cclxuXHJcbiAgICAvLyBEZXRlcm1pbmUgdHJhaWxpbmcgemVyb3MuXHJcbiAgICBmb3IgKGogPSByLmxlbmd0aDsgci5jaGFyQ29kZUF0KC0taikgPT09IDQ4Oyk7XHJcblxyXG4gICAgcmV0dXJuIHIuc2xpY2UoMCwgaiArIDEgfHwgMSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gQ29tcGFyZSB0aGUgdmFsdWUgb2YgQmlnTnVtYmVycyB4IGFuZCB5LlxyXG4gIGZ1bmN0aW9uIGNvbXBhcmUoeCwgeSkge1xyXG4gICAgdmFyIGEsIGIsXHJcbiAgICAgIHhjID0geC5jLFxyXG4gICAgICB5YyA9IHkuYyxcclxuICAgICAgaSA9IHgucyxcclxuICAgICAgaiA9IHkucyxcclxuICAgICAgayA9IHguZSxcclxuICAgICAgbCA9IHkuZTtcclxuXHJcbiAgICAvLyBFaXRoZXIgTmFOP1xyXG4gICAgaWYgKCFpIHx8ICFqKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBhID0geGMgJiYgIXhjWzBdO1xyXG4gICAgYiA9IHljICYmICF5Y1swXTtcclxuXHJcbiAgICAvLyBFaXRoZXIgemVybz9cclxuICAgIGlmIChhIHx8IGIpIHJldHVybiBhID8gYiA/IDAgOiAtaiA6IGk7XHJcblxyXG4gICAgLy8gU2lnbnMgZGlmZmVyP1xyXG4gICAgaWYgKGkgIT0gaikgcmV0dXJuIGk7XHJcblxyXG4gICAgYSA9IGkgPCAwO1xyXG4gICAgYiA9IGsgPT0gbDtcclxuXHJcbiAgICAvLyBFaXRoZXIgSW5maW5pdHk/XHJcbiAgICBpZiAoIXhjIHx8ICF5YykgcmV0dXJuIGIgPyAwIDogIXhjIF4gYSA/IDEgOiAtMTtcclxuXHJcbiAgICAvLyBDb21wYXJlIGV4cG9uZW50cy5cclxuICAgIGlmICghYikgcmV0dXJuIGsgPiBsIF4gYSA/IDEgOiAtMTtcclxuXHJcbiAgICBqID0gKGsgPSB4Yy5sZW5ndGgpIDwgKGwgPSB5Yy5sZW5ndGgpID8gayA6IGw7XHJcblxyXG4gICAgLy8gQ29tcGFyZSBkaWdpdCBieSBkaWdpdC5cclxuICAgIGZvciAoaSA9IDA7IGkgPCBqOyBpKyspIGlmICh4Y1tpXSAhPSB5Y1tpXSkgcmV0dXJuIHhjW2ldID4geWNbaV0gXiBhID8gMSA6IC0xO1xyXG5cclxuICAgIC8vIENvbXBhcmUgbGVuZ3Rocy5cclxuICAgIHJldHVybiBrID09IGwgPyAwIDogayA+IGwgXiBhID8gMSA6IC0xO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qXHJcbiAgICogQ2hlY2sgdGhhdCBuIGlzIGEgcHJpbWl0aXZlIG51bWJlciwgYW4gaW50ZWdlciwgYW5kIGluIHJhbmdlLCBvdGhlcndpc2UgdGhyb3cuXHJcbiAgICovXHJcbiAgZnVuY3Rpb24gaW50Q2hlY2sobiwgbWluLCBtYXgsIG5hbWUpIHtcclxuICAgIGlmIChuIDwgbWluIHx8IG4gPiBtYXggfHwgbiAhPT0gbWF0aGZsb29yKG4pKSB7XHJcbiAgICAgIHRocm93IEVycm9yXHJcbiAgICAgICAoYmlnbnVtYmVyRXJyb3IgKyAobmFtZSB8fCAnQXJndW1lbnQnKSArICh0eXBlb2YgbiA9PSAnbnVtYmVyJ1xyXG4gICAgICAgICA/IG4gPCBtaW4gfHwgbiA+IG1heCA/ICcgb3V0IG9mIHJhbmdlOiAnIDogJyBub3QgYW4gaW50ZWdlcjogJ1xyXG4gICAgICAgICA6ICcgbm90IGEgcHJpbWl0aXZlIG51bWJlcjogJykgKyBTdHJpbmcobikpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vIEFzc3VtZXMgZmluaXRlIG4uXHJcbiAgZnVuY3Rpb24gaXNPZGQobikge1xyXG4gICAgdmFyIGsgPSBuLmMubGVuZ3RoIC0gMTtcclxuICAgIHJldHVybiBiaXRGbG9vcihuLmUgLyBMT0dfQkFTRSkgPT0gayAmJiBuLmNba10gJSAyICE9IDA7XHJcbiAgfVxyXG5cclxuXHJcbiAgZnVuY3Rpb24gdG9FeHBvbmVudGlhbChzdHIsIGUpIHtcclxuICAgIHJldHVybiAoc3RyLmxlbmd0aCA+IDEgPyBzdHIuY2hhckF0KDApICsgJy4nICsgc3RyLnNsaWNlKDEpIDogc3RyKSArXHJcbiAgICAgKGUgPCAwID8gJ2UnIDogJ2UrJykgKyBlO1xyXG4gIH1cclxuXHJcblxyXG4gIGZ1bmN0aW9uIHRvRml4ZWRQb2ludChzdHIsIGUsIHopIHtcclxuICAgIHZhciBsZW4sIHpzO1xyXG5cclxuICAgIC8vIE5lZ2F0aXZlIGV4cG9uZW50P1xyXG4gICAgaWYgKGUgPCAwKSB7XHJcblxyXG4gICAgICAvLyBQcmVwZW5kIHplcm9zLlxyXG4gICAgICBmb3IgKHpzID0geiArICcuJzsgKytlOyB6cyArPSB6KTtcclxuICAgICAgc3RyID0genMgKyBzdHI7XHJcblxyXG4gICAgLy8gUG9zaXRpdmUgZXhwb25lbnRcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxlbiA9IHN0ci5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBBcHBlbmQgemVyb3MuXHJcbiAgICAgIGlmICgrK2UgPiBsZW4pIHtcclxuICAgICAgICBmb3IgKHpzID0geiwgZSAtPSBsZW47IC0tZTsgenMgKz0geik7XHJcbiAgICAgICAgc3RyICs9IHpzO1xyXG4gICAgICB9IGVsc2UgaWYgKGUgPCBsZW4pIHtcclxuICAgICAgICBzdHIgPSBzdHIuc2xpY2UoMCwgZSkgKyAnLicgKyBzdHIuc2xpY2UoZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vIEVYUE9SVFxyXG5cclxuXHJcbiAgQmlnTnVtYmVyID0gY2xvbmUoKTtcclxuICBCaWdOdW1iZXJbJ2RlZmF1bHQnXSA9IEJpZ051bWJlci5CaWdOdW1iZXIgPSBCaWdOdW1iZXI7XHJcblxyXG4gIC8vIEFNRC5cclxuICBpZiAodHlwZW9mIGRlZmluZSA9PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcclxuICAgIGRlZmluZShmdW5jdGlvbiAoKSB7IHJldHVybiBCaWdOdW1iZXI7IH0pO1xyXG5cclxuICAvLyBOb2RlLmpzIGFuZCBvdGhlciBlbnZpcm9ubWVudHMgdGhhdCBzdXBwb3J0IG1vZHVsZS5leHBvcnRzLlxyXG4gIH0gZWxzZSBpZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xyXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBCaWdOdW1iZXI7XHJcblxyXG4gIC8vIEJyb3dzZXIuXHJcbiAgfSBlbHNlIHtcclxuICAgIGlmICghZ2xvYmFsT2JqZWN0KSB7XHJcbiAgICAgIGdsb2JhbE9iamVjdCA9IHR5cGVvZiBzZWxmICE9ICd1bmRlZmluZWQnICYmIHNlbGYgPyBzZWxmIDogd2luZG93O1xyXG4gICAgfVxyXG5cclxuICAgIGdsb2JhbE9iamVjdC5CaWdOdW1iZXIgPSBCaWdOdW1iZXI7XHJcbiAgfVxyXG59KSh0aGlzKTtcclxuIiwiKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFV0aWxzXG4gIGZ1bmN0aW9uIGFzc2VydCAodmFsLCBtc2cpIHtcbiAgICBpZiAoIXZhbCkgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xuICB9XG5cbiAgLy8gQ291bGQgdXNlIGBpbmhlcml0c2AgbW9kdWxlLCBidXQgZG9uJ3Qgd2FudCB0byBtb3ZlIGZyb20gc2luZ2xlIGZpbGVcbiAgLy8gYXJjaGl0ZWN0dXJlIHlldC5cbiAgZnVuY3Rpb24gaW5oZXJpdHMgKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGU7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKTtcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gIH1cblxuICAvLyBCTlxuXG4gIGZ1bmN0aW9uIEJOIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChCTi5pc0JOKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgdGhpcy53b3JkcyA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgLy8gUmVkdWN0aW9uIGNvbnRleHRcbiAgICB0aGlzLnJlZCA9IG51bGw7XG5cbiAgICBpZiAobnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gJ2xlJyB8fCBiYXNlID09PSAnYmUnKSB7XG4gICAgICAgIGVuZGlhbiA9IGJhc2U7XG4gICAgICAgIGJhc2UgPSAxMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdChudW1iZXIgfHwgMCwgYmFzZSB8fCAxMCwgZW5kaWFuIHx8ICdiZScpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJOO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQk4gPSBCTjtcbiAgfVxuXG4gIEJOLkJOID0gQk47XG4gIEJOLndvcmRTaXplID0gMjY7XG5cbiAgdmFyIEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5CdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBCdWZmZXIgPSB3aW5kb3cuQnVmZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gIH1cblxuICBCTi5pc0JOID0gZnVuY3Rpb24gaXNCTiAobnVtKSB7XG4gICAgaWYgKG51bSBpbnN0YW5jZW9mIEJOKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVtICE9PSBudWxsICYmIHR5cGVvZiBudW0gPT09ICdvYmplY3QnICYmXG4gICAgICBudW0uY29uc3RydWN0b3Iud29yZFNpemUgPT09IEJOLndvcmRTaXplICYmIEFycmF5LmlzQXJyYXkobnVtLndvcmRzKTtcbiAgfTtcblxuICBCTi5tYXggPSBmdW5jdGlvbiBtYXggKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA+IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5taW4gPSBmdW5jdGlvbiBtaW4gKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA8IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXROdW1iZXIobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXRBcnJheShudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBiYXNlID0gMTY7XG4gICAgfVxuICAgIGFzc2VydChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KTtcblxuICAgIG51bWJlciA9IG51bWJlci50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICBzdGFydCsrO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0IDwgbnVtYmVyLmxlbmd0aCkge1xuICAgICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICAgIHRoaXMuX3BhcnNlSGV4KG51bWJlciwgc3RhcnQsIGVuZGlhbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wYXJzZUJhc2UobnVtYmVyLCBiYXNlLCBzdGFydCk7XG4gICAgICAgIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgICAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0TnVtYmVyID0gZnVuY3Rpb24gX2luaXROdW1iZXIgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDB4NDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFtudW1iZXIgJiAweDNmZmZmZmZdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMHgxMDAwMDAwMDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZlxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG51bWJlciA8IDB4MjAwMDAwMDAwMDAwMDApOyAvLyAyIF4gNTMgKHVuc2FmZSlcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmYsXG4gICAgICAgIDFcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDM7XG4gICAgfVxuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgLy8gUmV2ZXJzZSB0aGUgYnl0ZXNcbiAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0QXJyYXkgPSBmdW5jdGlvbiBfaW5pdEFycmF5IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIC8vIFBlcmhhcHMgYSBVaW50OEFycmF5XG4gICAgYXNzZXJ0KHR5cGVvZiBudW1iZXIubGVuZ3RoID09PSAnbnVtYmVyJyk7XG4gICAgaWYgKG51bWJlci5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFswXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKG51bWJlci5sZW5ndGggLyAzKTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIHZhciBqLCB3O1xuICAgIHZhciBvZmYgPSAwO1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxLCBqID0gMDsgaSA+PSAwOyBpIC09IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSAtIDFdIDw8IDgpIHwgKG51bWJlcltpIC0gMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgKyAxXSA8PCA4KSB8IChudW1iZXJbaSArIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUhleDRCaXRzIChzdHJpbmcsIGluZGV4KSB7XG4gICAgdmFyIGMgPSBzdHJpbmcuY2hhckNvZGVBdChpbmRleCk7XG4gICAgLy8gJzAnIC0gJzknXG4gICAgaWYgKGMgPj0gNDggJiYgYyA8PSA1Nykge1xuICAgICAgcmV0dXJuIGMgLSA0ODtcbiAgICAvLyAnQScgLSAnRidcbiAgICB9IGVsc2UgaWYgKGMgPj0gNjUgJiYgYyA8PSA3MCkge1xuICAgICAgcmV0dXJuIGMgLSA1NTtcbiAgICAvLyAnYScgLSAnZidcbiAgICB9IGVsc2UgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMDIpIHtcbiAgICAgIHJldHVybiBjIC0gODc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ0ludmFsaWQgY2hhcmFjdGVyIGluICcgKyBzdHJpbmcpO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4Qnl0ZSAoc3RyaW5nLCBsb3dlckJvdW5kLCBpbmRleCkge1xuICAgIHZhciByID0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4KTtcbiAgICBpZiAoaW5kZXggLSAxID49IGxvd2VyQm91bmQpIHtcbiAgICAgIHIgfD0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4IC0gMSkgPDwgNDtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlSGV4ID0gZnVuY3Rpb24gX3BhcnNlSGV4IChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICAvLyAyNC1iaXRzIGNodW5rc1xuICAgIHZhciBvZmYgPSAwO1xuICAgIHZhciBqID0gMDtcblxuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyBpIC09IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFyc2VMZW5ndGggPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgICBmb3IgKGkgPSBwYXJzZUxlbmd0aCAlIDIgPT09IDAgPyBzdGFydCArIDEgOiBzdGFydDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBiID0gMDtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oc3RyLmxlbmd0aCwgZW5kKTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKSAtIDQ4O1xuXG4gICAgICByICo9IG11bDtcblxuICAgICAgLy8gJ2EnXG4gICAgICBpZiAoYyA+PSA0OSkge1xuICAgICAgICBiID0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICBiID0gYyAtIDE3ICsgMHhhO1xuXG4gICAgICAvLyAnMCcgLSAnOSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGIgPSBjO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGMgPj0gMCAmJiBiIDwgbXVsLCAnSW52YWxpZCBjaGFyYWN0ZXInKTtcbiAgICAgIHIgKz0gYjtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlQmFzZSA9IGZ1bmN0aW9uIF9wYXJzZUJhc2UgKG51bWJlciwgYmFzZSwgc3RhcnQpIHtcbiAgICAvLyBJbml0aWFsaXplIGFzIHplcm9cbiAgICB0aGlzLndvcmRzID0gWzBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKGRlc3QpIHtcbiAgICBkZXN0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlc3Qud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgIH1cbiAgICBkZXN0Lmxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIGRlc3QubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIGRlc3QucmVkID0gdGhpcy5yZWQ7XG4gIH07XG5cbiAgZnVuY3Rpb24gbW92ZSAoZGVzdCwgc3JjKSB7XG4gICAgZGVzdC53b3JkcyA9IHNyYy53b3JkcztcbiAgICBkZXN0Lmxlbmd0aCA9IHNyYy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHNyYy5uZWdhdGl2ZTtcbiAgICBkZXN0LnJlZCA9IHNyYy5yZWQ7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX21vdmUgPSBmdW5jdGlvbiBfbW92ZSAoZGVzdCkge1xuICAgIG1vdmUoZGVzdCwgdGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUgKCkge1xuICAgIHZhciByID0gbmV3IEJOKG51bGwpO1xuICAgIHRoaXMuY29weShyKTtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2V4cGFuZCA9IGZ1bmN0aW9uIF9leHBhbmQgKHNpemUpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBzaXplKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gUmVtb3ZlIGxlYWRpbmcgYDBgIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5fc3RyaXAgPSBmdW5jdGlvbiBzdHJpcCAoKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoID4gMSAmJiB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fbm9ybVNpZ24gPSBmdW5jdGlvbiBfbm9ybVNpZ24gKCkge1xuICAgIC8vIC0wID0gMFxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gQ2hlY2sgU3ltYm9sLmZvciBiZWNhdXNlIG5vdCBldmVyeXdoZXJlIHdoZXJlIFN5bWJvbCBkZWZpbmVkXG4gIC8vIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TeW1ib2wjQnJvd3Nlcl9jb21wYXRpYmlsaXR5XG4gIGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgU3ltYm9sLmZvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICBCTi5wcm90b3R5cGVbU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKV0gPSBpbnNwZWN0O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gaW5zcGVjdDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLmluc3BlY3QgPSBpbnNwZWN0O1xuICB9XG5cbiAgZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH1cblxuICAvKlxuXG4gIHZhciB6ZXJvcyA9IFtdO1xuICB2YXIgZ3JvdXBTaXplcyA9IFtdO1xuICB2YXIgZ3JvdXBCYXNlcyA9IFtdO1xuXG4gIHZhciBzID0gJyc7XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBCTi53b3JkU2l6ZSkge1xuICAgIHplcm9zW2ldID0gcztcbiAgICBzICs9ICcwJztcbiAgfVxuICBncm91cFNpemVzWzBdID0gMDtcbiAgZ3JvdXBTaXplc1sxXSA9IDA7XG4gIGdyb3VwQmFzZXNbMF0gPSAwO1xuICBncm91cEJhc2VzWzFdID0gMDtcbiAgdmFyIGJhc2UgPSAyIC0gMTtcbiAgd2hpbGUgKCsrYmFzZSA8IDM2ICsgMSkge1xuICAgIHZhciBncm91cFNpemUgPSAwO1xuICAgIHZhciBncm91cEJhc2UgPSAxO1xuICAgIHdoaWxlIChncm91cEJhc2UgPCAoMSA8PCBCTi53b3JkU2l6ZSkgLyBiYXNlKSB7XG4gICAgICBncm91cEJhc2UgKj0gYmFzZTtcbiAgICAgIGdyb3VwU2l6ZSArPSAxO1xuICAgIH1cbiAgICBncm91cFNpemVzW2Jhc2VdID0gZ3JvdXBTaXplO1xuICAgIGdyb3VwQmFzZXNbYmFzZV0gPSBncm91cEJhc2U7XG4gIH1cblxuICAqL1xuXG4gIHZhciB6ZXJvcyA9IFtcbiAgICAnJyxcbiAgICAnMCcsXG4gICAgJzAwJyxcbiAgICAnMDAwJyxcbiAgICAnMDAwMCcsXG4gICAgJzAwMDAwJyxcbiAgICAnMDAwMDAwJyxcbiAgICAnMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCdcbiAgXTtcblxuICB2YXIgZ3JvdXBTaXplcyA9IFtcbiAgICAwLCAwLFxuICAgIDI1LCAxNiwgMTIsIDExLCAxMCwgOSwgOCxcbiAgICA4LCA3LCA3LCA3LCA3LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1XG4gIF07XG5cbiAgdmFyIGdyb3VwQmFzZXMgPSBbXG4gICAgMCwgMCxcbiAgICAzMzU1NDQzMiwgNDMwNDY3MjEsIDE2Nzc3MjE2LCA0ODgyODEyNSwgNjA0NjYxNzYsIDQwMzUzNjA3LCAxNjc3NzIxNixcbiAgICA0MzA0NjcyMSwgMTAwMDAwMDAsIDE5NDg3MTcxLCAzNTgzMTgwOCwgNjI3NDg1MTcsIDc1Mjk1MzYsIDExMzkwNjI1LFxuICAgIDE2Nzc3MjE2LCAyNDEzNzU2OSwgMzQwMTIyMjQsIDQ3MDQ1ODgxLCA2NDAwMDAwMCwgNDA4NDEwMSwgNTE1MzYzMixcbiAgICA2NDM2MzQzLCA3OTYyNjI0LCA5NzY1NjI1LCAxMTg4MTM3NiwgMTQzNDg5MDcsIDE3MjEwMzY4LCAyMDUxMTE0OSxcbiAgICAyNDMwMDAwMCwgMjg2MjkxNTEsIDMzNTU0NDMyLCAzOTEzNTM5MywgNDU0MzU0MjQsIDUyNTIxODc1LCA2MDQ2NjE3NlxuICBdO1xuXG4gIEJOLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nIChiYXNlLCBwYWRkaW5nKSB7XG4gICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgcGFkZGluZyA9IHBhZGRpbmcgfCAwIHx8IDE7XG5cbiAgICB2YXIgb3V0O1xuICAgIGlmIChiYXNlID09PSAxNiB8fCBiYXNlID09PSAnaGV4Jykge1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgb2ZmID0gMDtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldO1xuICAgICAgICB2YXIgd29yZCA9ICgoKHcgPDwgb2ZmKSB8IGNhcnJ5KSAmIDB4ZmZmZmZmKS50b1N0cmluZygxNik7XG4gICAgICAgIGNhcnJ5ID0gKHcgPj4+ICgyNCAtIG9mZikpICYgMHhmZmZmZmY7XG4gICAgICAgIGlmIChjYXJyeSAhPT0gMCB8fCBpICE9PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1s2IC0gd29yZC5sZW5ndGhdICsgd29yZCArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSB3b3JkICsgb3V0O1xuICAgICAgICB9XG4gICAgICAgIG9mZiArPSAyO1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICAgIG91dCA9IGNhcnJ5LnRvU3RyaW5nKDE2KSArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KSB7XG4gICAgICAvLyB2YXIgZ3JvdXBTaXplID0gTWF0aC5mbG9vcihCTi53b3JkU2l6ZSAqIE1hdGguTE4yIC8gTWF0aC5sb2coYmFzZSkpO1xuICAgICAgdmFyIGdyb3VwU2l6ZSA9IGdyb3VwU2l6ZXNbYmFzZV07XG4gICAgICAvLyB2YXIgZ3JvdXBCYXNlID0gTWF0aC5wb3coYmFzZSwgZ3JvdXBTaXplKTtcbiAgICAgIHZhciBncm91cEJhc2UgPSBncm91cEJhc2VzW2Jhc2VdO1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgYyA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGMubmVnYXRpdmUgPSAwO1xuICAgICAgd2hpbGUgKCFjLmlzWmVybygpKSB7XG4gICAgICAgIHZhciByID0gYy5tb2Rybihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNiwgMik7XG4gIH07XG5cbiAgaWYgKEJ1ZmZlcikge1xuICAgIEJOLnByb3RvdHlwZS50b0J1ZmZlciA9IGZ1bmN0aW9uIHRvQnVmZmVyIChlbmRpYW4sIGxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQnVmZmVyLCBlbmRpYW4sIGxlbmd0aCk7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gdG9BcnJheSAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIHZhciBhbGxvY2F0ZSA9IGZ1bmN0aW9uIGFsbG9jYXRlIChBcnJheVR5cGUsIHNpemUpIHtcbiAgICBpZiAoQXJyYXlUeXBlLmFsbG9jVW5zYWZlKSB7XG4gICAgICByZXR1cm4gQXJyYXlUeXBlLmFsbG9jVW5zYWZlKHNpemUpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEFycmF5VHlwZShzaXplKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHRoaXMuX3N0cmlwKCk7XG5cbiAgICB2YXIgYnl0ZUxlbmd0aCA9IHRoaXMuYnl0ZUxlbmd0aCgpO1xuICAgIHZhciByZXFMZW5ndGggPSBsZW5ndGggfHwgTWF0aC5tYXgoMSwgYnl0ZUxlbmd0aCk7XG4gICAgYXNzZXJ0KGJ5dGVMZW5ndGggPD0gcmVxTGVuZ3RoLCAnYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCcpO1xuICAgIGFzc2VydChyZXFMZW5ndGggPiAwLCAnUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwJyk7XG5cbiAgICB2YXIgcmVzID0gYWxsb2NhdGUoQXJyYXlUeXBlLCByZXFMZW5ndGgpO1xuICAgIHZhciBwb3N0Zml4ID0gZW5kaWFuID09PSAnbGUnID8gJ0xFJyA6ICdCRSc7XG4gICAgdGhpc1snX3RvQXJyYXlMaWtlJyArIHBvc3RmaXhdKHJlcywgYnl0ZUxlbmd0aCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX3RvQXJyYXlMaWtlTEUgPSBmdW5jdGlvbiBfdG9BcnJheUxpa2VMRSAocmVzLCBieXRlTGVuZ3RoKSB7XG4gICAgdmFyIHBvc2l0aW9uID0gMDtcbiAgICB2YXIgY2FycnkgPSAwO1xuXG4gICAgZm9yICh2YXIgaSA9IDAsIHNoaWZ0ID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3b3JkID0gKHRoaXMud29yZHNbaV0gPDwgc2hpZnQpIHwgY2Fycnk7XG5cbiAgICAgIHJlc1twb3NpdGlvbisrXSA9IHdvcmQgJiAweGZmO1xuICAgICAgaWYgKHBvc2l0aW9uIDwgcmVzLmxlbmd0aCkge1xuICAgICAgICByZXNbcG9zaXRpb24rK10gPSAod29yZCA+PiA4KSAmIDB4ZmY7XG4gICAgICB9XG4gICAgICBpZiAocG9zaXRpb24gPCByZXMubGVuZ3RoKSB7XG4gICAgICAgIHJlc1twb3NpdGlvbisrXSA9ICh3b3JkID4+IDE2KSAmIDB4ZmY7XG4gICAgICB9XG5cbiAgICAgIGlmIChzaGlmdCA9PT0gNikge1xuICAgICAgICBpZiAocG9zaXRpb24gPCByZXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmVzW3Bvc2l0aW9uKytdID0gKHdvcmQgPj4gMjQpICYgMHhmZjtcbiAgICAgICAgfVxuICAgICAgICBjYXJyeSA9IDA7XG4gICAgICAgIHNoaWZ0ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhcnJ5ID0gd29yZCA+Pj4gMjQ7XG4gICAgICAgIHNoaWZ0ICs9IDI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uIDwgcmVzLmxlbmd0aCkge1xuICAgICAgcmVzW3Bvc2l0aW9uKytdID0gY2Fycnk7XG5cbiAgICAgIHdoaWxlIChwb3NpdGlvbiA8IHJlcy5sZW5ndGgpIHtcbiAgICAgICAgcmVzW3Bvc2l0aW9uKytdID0gMDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl90b0FycmF5TGlrZUJFID0gZnVuY3Rpb24gX3RvQXJyYXlMaWtlQkUgKHJlcywgYnl0ZUxlbmd0aCkge1xuICAgIHZhciBwb3NpdGlvbiA9IHJlcy5sZW5ndGggLSAxO1xuICAgIHZhciBjYXJyeSA9IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMCwgc2hpZnQgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHdvcmQgPSAodGhpcy53b3Jkc1tpXSA8PCBzaGlmdCkgfCBjYXJyeTtcblxuICAgICAgcmVzW3Bvc2l0aW9uLS1dID0gd29yZCAmIDB4ZmY7XG4gICAgICBpZiAocG9zaXRpb24gPj0gMCkge1xuICAgICAgICByZXNbcG9zaXRpb24tLV0gPSAod29yZCA+PiA4KSAmIDB4ZmY7XG4gICAgICB9XG4gICAgICBpZiAocG9zaXRpb24gPj0gMCkge1xuICAgICAgICByZXNbcG9zaXRpb24tLV0gPSAod29yZCA+PiAxNikgJiAweGZmO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2hpZnQgPT09IDYpIHtcbiAgICAgICAgaWYgKHBvc2l0aW9uID49IDApIHtcbiAgICAgICAgICByZXNbcG9zaXRpb24tLV0gPSAod29yZCA+PiAyNCkgJiAweGZmO1xuICAgICAgICB9XG4gICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgICAgc2hpZnQgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3b3JkID4+PiAyNDtcbiAgICAgICAgc2hpZnQgKz0gMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gPj0gMCkge1xuICAgICAgcmVzW3Bvc2l0aW9uLS1dID0gY2Fycnk7XG5cbiAgICAgIHdoaWxlIChwb3NpdGlvbiA+PSAwKSB7XG4gICAgICAgIHJlc1twb3NpdGlvbi0tXSA9IDA7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSA+Pj4gd2JpdCkgJiAweDAxO1xuICAgIH1cblxuICAgIHJldHVybiB3O1xuICB9XG5cbiAgLy8gTnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0c1xuICBCTi5wcm90b3R5cGUuemVyb0JpdHMgPSBmdW5jdGlvbiB6ZXJvQml0cyAoKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiAwO1xuXG4gICAgdmFyIHIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGIgPSB0aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2ldKTtcbiAgICAgIHIgKz0gYjtcbiAgICAgIGlmIChiICE9PSAyNikgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ieXRlTGVuZ3RoID0gZnVuY3Rpb24gYnl0ZUxlbmd0aCAoKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpIC8gOCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvVHdvcyA9IGZ1bmN0aW9uIHRvVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWJzKCkuaW5vdG4od2lkdGgpLmlhZGRuKDEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tVHdvcyA9IGZ1bmN0aW9uIGZyb21Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLnRlc3RuKHdpZHRoIC0gMSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdG4od2lkdGgpLmlhZGRuKDEpLmluZWcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiBpc05lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmUgIT09IDA7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5lZyA9IGZ1bmN0aW9uIGluZWcgKCkge1xuICAgIGlmICghdGhpcy5pc1plcm8oKSkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdW9yID0gZnVuY3Rpb24gaXVvciAobnVtKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldIHwgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYW5kID0gZnVuY3Rpb24gaWFuZCAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVhbmQobnVtKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIGFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhbmQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVhbmQgPSBmdW5jdGlvbiB1YW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1YW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1YW5kKHRoaXMpO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXV4b3IgPSBmdW5jdGlvbiBpdXhvciAobnVtKSB7XG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhO1xuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV0gXiBiLndvcmRzW2ldO1xuICAgIH1cblxuICAgIGlmICh0aGlzICE9PSBhKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5peG9yID0gZnVuY3Rpb24gaXhvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXV4b3IobnVtKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIHhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5peG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml4b3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnV4b3IgPSBmdW5jdGlvbiB1eG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1eG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1eG9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIE5vdCBgYHRoaXNgYCB3aXRoIGBgd2lkdGhgYCBiaXR3aWR0aFxuICBCTi5wcm90b3R5cGUuaW5vdG4gPSBmdW5jdGlvbiBpbm90biAod2lkdGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyAmJiB3aWR0aCA+PSAwKTtcblxuICAgIHZhciBieXRlc05lZWRlZCA9IE1hdGguY2VpbCh3aWR0aCAvIDI2KSB8IDA7XG4gICAgdmFyIGJpdHNMZWZ0ID0gd2lkdGggJSAyNjtcblxuICAgIC8vIEV4dGVuZCB0aGUgYnVmZmVyIHdpdGggbGVhZGluZyB6ZXJvZXNcbiAgICB0aGlzLl9leHBhbmQoYnl0ZXNOZWVkZWQpO1xuXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgYnl0ZXNOZWVkZWQtLTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgY29tcGxldGUgd29yZHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzTmVlZGVkOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIHJlc2lkdWVcbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAoMHgzZmZmZmZmID4+ICgyNiAtIGJpdHNMZWZ0KSk7XG4gICAgfVxuXG4gICAgLy8gQW5kIHJlbW92ZSBsZWFkaW5nIHplcm9lc1xuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChudW0pIHtcbiAgICB2YXIgcjtcblxuICAgIC8vIG5lZ2F0aXZlICsgcG9zaXRpdmVcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG5cbiAgICAvLyBwb3NpdGl2ZSArIG5lZ2F0aXZlXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGhdID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIC8vIENvcHkgdGhlIHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgfSBlbHNlIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChudW0pIHtcbiAgICB2YXIgcmVzO1xuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDAgJiYgdGhpcy5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IHRoaXMuc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIGlmIChudW0ubmVnYXRpdmUgPT09IDAgJiYgdGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSBudW0uc3ViKHRoaXMpO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZChudW0pO1xuXG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhZGQodGhpcyk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChudW0pIHtcbiAgICAvLyB0aGlzIC0gKC1udW0pID0gdGhpcyArIG51bVxuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICB2YXIgciA9IHRoaXMuaWFkZChudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gLXRoaXMgLSBudW0gPSAtKHRoaXMgKyBudW0pXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZChudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmVcbiAgICB2YXIgY21wID0gdGhpcy5jbXAobnVtKTtcblxuICAgIC8vIE9wdGltaXphdGlvbiAtIHplcm9pZnlcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gYSA+IGJcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoY21wID4gMCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApIC0gKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIENvcHkgcmVzdCBvZiB0aGUgd29yZHNcbiAgICBpZiAoY2FycnkgPT09IDAgJiYgaSA8IGEubGVuZ3RoICYmIGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpKTtcblxuICAgIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3RyaXAoKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBzbWFsbE11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgdmFyIGxlbiA9IChzZWxmLmxlbmd0aCArIG51bS5sZW5ndGgpIHwgMDtcbiAgICBvdXQubGVuZ3RoID0gbGVuO1xuICAgIGxlbiA9IChsZW4gLSAxKSB8IDA7XG5cbiAgICAvLyBQZWVsIG9uZSBpdGVyYXRpb24gKGNvbXBpbGVyIGNhbid0IGRvIGl0LCBiZWNhdXNlIG9mIGNvZGUgY29tcGxleGl0eSlcbiAgICB2YXIgYSA9IHNlbGYud29yZHNbMF0gfCAwO1xuICAgIHZhciBiID0gbnVtLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICB2YXIgY2FycnkgPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgIG91dC53b3Jkc1swXSA9IGxvO1xuXG4gICAgZm9yICh2YXIgayA9IDE7IGsgPCBsZW47IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBjYXJyeSA+Pj4gMjY7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IChrIC0gaikgfCAwO1xuICAgICAgICBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICByID0gYSAqIGIgKyByd29yZDtcbiAgICAgICAgbmNhcnJ5ICs9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkIHwgMDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5IHwgMDtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeSB8IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0Ll9zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuX3N0cmlwKCk7XG4gIH1cblxuICBmdW5jdGlvbiBqdW1ib011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIC8vIFRlbXBvcmFyeSBkaXNhYmxlLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvYm4uanMvaXNzdWVzLzIxMVxuICAgIC8vIHZhciBmZnRtID0gbmV3IEZGVE0oKTtcbiAgICAvLyByZXR1cm4gZmZ0bS5tdWxwKHNlbGYsIG51bSwgb3V0KTtcbiAgICByZXR1cm4gYmlnTXVsVG8oc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuX3N0cmlwKCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgYHRoaXNgIGJ5IGBudW1gXG4gIEJOLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRoaXMubXVsVG8obnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGVtcGxveWluZyBGRlRcbiAgQk4ucHJvdG90eXBlLm11bGYgPSBmdW5jdGlvbiBtdWxmIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBNdWx0aXBsaWNhdGlvblxuICBCTi5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkubXVsVG8obnVtLCB0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW11bG4gPSBmdW5jdGlvbiBpbXVsbiAobnVtKSB7XG4gICAgdmFyIGlzTmVnTnVtID0gbnVtIDwgMDtcbiAgICBpZiAoaXNOZWdOdW0pIG51bSA9IC1udW07XG5cbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiBpc05lZ051bSA/IHRoaXMuaW5lZygpIDogdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubXVsbiA9IGZ1bmN0aW9uIG11bG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW11bG4obnVtKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKHRoaXMpO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKTtcbiAgfTtcblxuICAvLyBNYXRoLnBvdyhgdGhpc2AsIGBudW1gKVxuICBCTi5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChudW0pIHtcbiAgICB2YXIgdyA9IHRvQml0QXJyYXkobnVtKTtcbiAgICBpZiAody5sZW5ndGggPT09IDApIHJldHVybiBuZXcgQk4oMSk7XG5cbiAgICAvLyBTa2lwIGxlYWRpbmcgemVyb2VzXG4gICAgdmFyIHJlcyA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3Lmxlbmd0aDsgaSsrLCByZXMgPSByZXMuc3FyKCkpIHtcbiAgICAgIGlmICh3W2ldICE9PSAwKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoKytpIDwgdy5sZW5ndGgpIHtcbiAgICAgIGZvciAodmFyIHEgPSByZXMuc3FyKCk7IGkgPCB3Lmxlbmd0aDsgaSsrLCBxID0gcS5zcXIoKSkge1xuICAgICAgICBpZiAod1tpXSA9PT0gMCkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gcmVzLm11bChxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnQgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1c2hsbiA9IGZ1bmN0aW9uIGl1c2hsbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcbiAgICB2YXIgY2FycnlNYXNrID0gKDB4M2ZmZmZmZiA+Pj4gKDI2IC0gcikpIDw8ICgyNiAtIHIpO1xuICAgIHZhciBpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBuZXdDYXJyeSA9IHRoaXMud29yZHNbaV0gJiBjYXJyeU1hc2s7XG4gICAgICAgIHZhciBjID0gKCh0aGlzLndvcmRzW2ldIHwgMCkgLSBuZXdDYXJyeSkgPDwgcjtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGMgfCBjYXJyeTtcbiAgICAgICAgY2FycnkgPSBuZXdDYXJyeSA+Pj4gKDI2IC0gcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYXJyeSkge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHMgIT09IDApIHtcbiAgICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgc10gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCArPSBzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hsbiA9IGZ1bmN0aW9uIGlzaGxuIChiaXRzKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodCBpbi1wbGFjZVxuICAvLyBOT1RFOiBgaGludGAgaXMgYSBsb3dlc3QgYml0IGJlZm9yZSB0cmFpbGluZyB6ZXJvZXNcbiAgLy8gTk9URTogaWYgYGV4dGVuZGVkYCBpcyBwcmVzZW50IC0gaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBkZXN0cm95ZWQgYml0c1xuICBCTi5wcm90b3R5cGUuaXVzaHJuID0gZnVuY3Rpb24gaXVzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgaDtcbiAgICBpZiAoaGludCkge1xuICAgICAgaCA9IChoaW50IC0gKGhpbnQgJSAyNikpIC8gMjY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGggPSAwO1xuICAgIH1cblxuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gTWF0aC5taW4oKGJpdHMgLSByKSAvIDI2LCB0aGlzLmxlbmd0aCk7XG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgdmFyIG1hc2tlZFdvcmRzID0gZXh0ZW5kZWQ7XG5cbiAgICBoIC09IHM7XG4gICAgaCA9IE1hdGgubWF4KDAsIGgpO1xuXG4gICAgLy8gRXh0ZW5kZWQgbW9kZSwgY29weSBtYXNrZWQgcGFydFxuICAgIGlmIChtYXNrZWRXb3Jkcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgbWFza2VkV29yZHMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuICAgICAgbWFza2VkV29yZHMubGVuZ3RoID0gcztcbiAgICB9XG5cbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgLy8gTm8tb3AsIHdlIHNob3VsZCBub3QgbW92ZSBhbnl0aGluZyBhdCBhbGxcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gcykge1xuICAgICAgdGhpcy5sZW5ndGggLT0gcztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2kgKyBzXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiAoY2FycnkgIT09IDAgfHwgaSA+PSBoKTsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IChjYXJyeSA8PCAoMjYgLSByKSkgfCAod29yZCA+Pj4gcik7XG4gICAgICBjYXJyeSA9IHdvcmQgJiBtYXNrO1xuICAgIH1cblxuICAgIC8vIFB1c2ggY2FycmllZCBiaXRzIGFzIGEgbWFza1xuICAgIGlmIChtYXNrZWRXb3JkcyAmJiBjYXJyeSAhPT0gMCkge1xuICAgICAgbWFza2VkV29yZHMud29yZHNbbWFza2VkV29yZHMubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyXG4gIEJOLnByb3RvdHlwZS5tYXNrbiA9IGZ1bmN0aW9uIG1hc2tuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oYml0cyk7XG4gIH07XG5cbiAgLy8gQWRkIHBsYWluIG51bWJlciBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlhZGRuID0gZnVuY3Rpb24gaWFkZG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlzdWJuKC1udW0pO1xuXG4gICAgLy8gUG9zc2libGUgc2lnbiBjaGFuZ2VcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmICh0aGlzLndvcmRzWzBdIHwgMCkgPD0gbnVtKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gPSBudW0gLSAodGhpcy53b3Jkc1swXSB8IDApO1xuICAgICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pc3VibihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aG91dCBjaGVja3NcbiAgICByZXR1cm4gdGhpcy5faWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lhZGRuID0gZnVuY3Rpb24gX2lhZGRuIChudW0pIHtcbiAgICB0aGlzLndvcmRzWzBdICs9IG51bTtcblxuICAgIC8vIENhcnJ5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldID49IDB4NDAwMDAwMDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldIC09IDB4NDAwMDAwMDtcbiAgICAgIGlmIChpID09PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0rKztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSArIDEpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgcGxhaW4gbnVtYmVyIGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pc3VibiA9IGZ1bmN0aW9uIGlzdWJuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pYWRkbigtbnVtKTtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZG4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy53b3Jkc1swXSAtPSBudW07XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA8IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAtdGhpcy53b3Jkc1swXTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDYXJyeVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldIDwgMDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gKz0gMHg0MDAwMDAwO1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSAtPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLl9zdHJpcCgpO1xuXG4gICAgLy8gU3VidHJhY3Rpb24gb3ZlcmZsb3dcbiAgICBhc3NlcnQoY2FycnkgPT09IC0xKTtcbiAgICBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAtKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuXG4gICAgcmV0dXJuIHRoaXMuX3N0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl93b3JkRGl2ID0gZnVuY3Rpb24gX3dvcmREaXYgKG51bSwgbW9kZSkge1xuICAgIHZhciBzaGlmdCA9IHRoaXMubGVuZ3RoIC0gbnVtLmxlbmd0aDtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtO1xuXG4gICAgLy8gTm9ybWFsaXplXG4gICAgdmFyIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgdmFyIGJoaUJpdHMgPSB0aGlzLl9jb3VudEJpdHMoYmhpKTtcbiAgICBzaGlmdCA9IDI2IC0gYmhpQml0cztcbiAgICBpZiAoc2hpZnQgIT09IDApIHtcbiAgICAgIGIgPSBiLnVzaGxuKHNoaWZ0KTtcbiAgICAgIGEuaXVzaGxuKHNoaWZ0KTtcbiAgICAgIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBxdW90aWVudFxuICAgIHZhciBtID0gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAgICB2YXIgcTtcblxuICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgcSA9IG5ldyBCTihudWxsKTtcbiAgICAgIHEubGVuZ3RoID0gbSArIDE7XG4gICAgICBxLndvcmRzID0gbmV3IEFycmF5KHEubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcS5sZW5ndGg7IGkrKykge1xuICAgICAgICBxLndvcmRzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGlmZiA9IGEuY2xvbmUoKS5faXNobG5zdWJtdWwoYiwgMSwgbSk7XG4gICAgaWYgKGRpZmYubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIGEgPSBkaWZmO1xuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1ttXSA9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IG0gLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgdmFyIHFqID0gKGEud29yZHNbYi5sZW5ndGggKyBqXSB8IDApICogMHg0MDAwMDAwICtcbiAgICAgICAgKGEud29yZHNbYi5sZW5ndGggKyBqIC0gMV0gfCAwKTtcblxuICAgICAgLy8gTk9URTogKHFqIC8gYmhpKSBpcyAoMHgzZmZmZmZmICogMHg0MDAwMDAwICsgMHgzZmZmZmZmKSAvIDB4MjAwMDAwMCBtYXhcbiAgICAgIC8vICgweDdmZmZmZmYpXG4gICAgICBxaiA9IE1hdGgubWluKChxaiAvIGJoaSkgfCAwLCAweDNmZmZmZmYpO1xuXG4gICAgICBhLl9pc2hsbnN1Ym11bChiLCBxaiwgaik7XG4gICAgICB3aGlsZSAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBxai0tO1xuICAgICAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgYS5faXNobG5zdWJtdWwoYiwgMSwgaik7XG4gICAgICAgIGlmICghYS5pc1plcm8oKSkge1xuICAgICAgICAgIGEubmVnYXRpdmUgXj0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1tqXSA9IHFqO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocSkge1xuICAgICAgcS5fc3RyaXAoKTtcbiAgICB9XG4gICAgYS5fc3RyaXAoKTtcblxuICAgIC8vIERlbm9ybWFsaXplXG4gICAgaWYgKG1vZGUgIT09ICdkaXYnICYmIHNoaWZ0ICE9PSAwKSB7XG4gICAgICBhLml1c2hybihzaGlmdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpdjogcSB8fCBudWxsLFxuICAgICAgbW9kOiBhXG4gICAgfTtcbiAgfTtcblxuICAvLyBOT1RFOiAxKSBgbW9kZWAgY2FuIGJlIHNldCB0byBgbW9kYCB0byByZXF1ZXN0IG1vZCBvbmx5LFxuICAvLyAgICAgICB0byBgZGl2YCB0byByZXF1ZXN0IGRpdiBvbmx5LCBvciBiZSBhYnNlbnQgdG9cbiAgLy8gICAgICAgcmVxdWVzdCBib3RoIGRpdiAmIG1vZFxuICAvLyAgICAgICAyKSBgcG9zaXRpdmVgIGlzIHRydWUgaWYgdW5zaWduZWQgbW9kIGlzIHJlcXVlc3RlZFxuICBCTi5wcm90b3R5cGUuZGl2bW9kID0gZnVuY3Rpb24gZGl2bW9kIChudW0sIG1vZGUsIHBvc2l0aXZlKSB7XG4gICAgYXNzZXJ0KCFudW0uaXNaZXJvKCkpO1xuXG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IG5ldyBCTigwKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZGl2LCBtb2QsIHJlcztcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pYWRkKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IHJlcy5tb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCh0aGlzLm5lZ2F0aXZlICYgbnVtLm5lZ2F0aXZlKSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaXN1YihudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogcmVzLmRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZSBhdCB0aGlzIHBvaW50XG5cbiAgICAvLyBTdHJpcCBib3RoIG51bWJlcnMgdG8gYXBwcm94aW1hdGUgc2hpZnQgdmFsdWVcbiAgICBpZiAobnVtLmxlbmd0aCA+IHRoaXMubGVuZ3RoIHx8IHRoaXMuY21wKG51bSkgPCAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiB0aGlzXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFZlcnkgc2hvcnQgcmVkdWN0aW9uXG4gICAgaWYgKG51bS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGlmIChtb2RlID09PSAnZGl2Jykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgICAgbW9kOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlID09PSAnbW9kJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogbnVsbCxcbiAgICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZHJuKG51bS53b3Jkc1swXSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kcm4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgKHIyID09PSAxICYmIGNtcCA9PT0gMCkpIHJldHVybiBkbS5kaXY7XG5cbiAgICAvLyBSb3VuZCB1cFxuICAgIHJldHVybiBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5kaXYuaXN1Ym4oMSkgOiBkbS5kaXYuaWFkZG4oMSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm1vZHJuID0gZnVuY3Rpb24gbW9kcm4gKG51bSkge1xuICAgIHZhciBpc05lZ051bSA9IG51bSA8IDA7XG4gICAgaWYgKGlzTmVnTnVtKSBudW0gPSAtbnVtO1xuXG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzTmVnTnVtID8gLWFjYyA6IGFjYztcbiAgfTtcblxuICAvLyBXQVJOSU5HOiBERVBSRUNBVEVEXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kcm4obnVtKTtcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIHZhciBpc05lZ051bSA9IG51bSA8IDA7XG4gICAgaWYgKGlzTmVnTnVtKSBudW0gPSAtbnVtO1xuXG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICsgY2FycnkgKiAweDQwMDAwMDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKHcgLyBudW0pIHwgMDtcbiAgICAgIGNhcnJ5ID0gdyAlIG51bTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdHJpcCgpO1xuICAgIHJldHVybiBpc05lZ051bSA/IHRoaXMuaW5lZygpIDogdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLl9zdHJpcCgpO1xuXG4gICAgdmFyIHJlcztcbiAgICBpZiAodGhpcy5sZW5ndGggPiAxKSB7XG4gICAgICByZXMgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobmVnYXRpdmUpIHtcbiAgICAgICAgbnVtID0gLW51bTtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYsICdOdW1iZXIgaXMgdG9vIGJpZycpO1xuXG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbMF0gfCAwO1xuICAgICAgcmVzID0gdyA9PT0gbnVtID8gMCA6IHcgPCBudW0gPyAtMSA6IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb21wYXJlIHR3byBudW1iZXJzIGFuZCByZXR1cm46XG4gIC8vIDEgLSBpZiBgdGhpc2AgPiBgbnVtYFxuICAvLyAwIC0gaWYgYHRoaXNgID09IGBudW1gXG4gIC8vIC0xIC0gaWYgYHRoaXNgIDwgYG51bWBcbiAgQk4ucHJvdG90eXBlLmNtcCA9IGZ1bmN0aW9uIGNtcCAobnVtKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gMTtcblxuICAgIHZhciByZXMgPSB0aGlzLnVjbXAobnVtKTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gVW5zaWduZWQgY29tcGFyaXNvblxuICBCTi5wcm90b3R5cGUudWNtcCA9IGZ1bmN0aW9uIHVjbXAgKG51bSkge1xuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGhhdmUgdGhlIHNhbWUgc2lnblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiAxO1xuICAgIGlmICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHJldHVybiAtMTtcblxuICAgIHZhciByZXMgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgYSA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdmFyIGIgPSBudW0ud29yZHNbaV0gfCAwO1xuXG4gICAgICBpZiAoYSA9PT0gYikgY29udGludWU7XG4gICAgICBpZiAoYSA8IGIpIHtcbiAgICAgICAgcmVzID0gLTE7XG4gICAgICB9IGVsc2UgaWYgKGEgPiBiKSB7XG4gICAgICAgIHJlcyA9IDE7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RuID0gZnVuY3Rpb24gZ3RuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ID0gZnVuY3Rpb24gZ3QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGVuID0gZnVuY3Rpb24gZ3RlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZSA9IGZ1bmN0aW9uIGd0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRuID0gZnVuY3Rpb24gbHRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdCA9IGZ1bmN0aW9uIGx0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZW4gPSBmdW5jdGlvbiBsdGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlID0gZnVuY3Rpb24gbHRlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcW4gPSBmdW5jdGlvbiBlcW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDA7XG4gIH07XG5cbiAgLy9cbiAgLy8gQSByZWR1Y2UgY29udGV4dCwgY291bGQgYmUgdXNpbmcgbW9udGdvbWVyeSBvciBzb21ldGhpbmcgYmV0dGVyLCBkZXBlbmRpbmdcbiAgLy8gb24gdGhlIGBtYCBpdHNlbGYuXG4gIC8vXG4gIEJOLnJlZCA9IGZ1bmN0aW9uIHJlZCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBSZWQobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9SZWQgPSBmdW5jdGlvbiB0b1JlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgcmV0dXJuIGN0eC5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21SZWQgPSBmdW5jdGlvbiBmcm9tUmVkICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZm9yY2VSZWQgPSBmdW5jdGlvbiBfZm9yY2VSZWQgKGN0eCkge1xuICAgIHRoaXMucmVkID0gY3R4O1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mb3JjZVJlZCA9IGZ1bmN0aW9uIGZvcmNlUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRBZGQgPSBmdW5jdGlvbiByZWRBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElBZGQgPSBmdW5jdGlvbiByZWRJQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFN1YiA9IGZ1bmN0aW9uIHJlZFN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVN1YiA9IGZ1bmN0aW9uIHJlZElTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU2hsID0gZnVuY3Rpb24gcmVkU2hsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNobCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRNdWwgPSBmdW5jdGlvbiByZWRNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5tdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSU11bCA9IGZ1bmN0aW9uIHJlZElNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNxciA9IGZ1bmN0aW9uIHJlZFNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXIodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTcXIgPSBmdW5jdGlvbiByZWRJU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3FyKHRoaXMpO1xuICB9O1xuXG4gIC8vIFNxdWFyZSByb290IG92ZXIgcFxuICBCTi5wcm90b3R5cGUucmVkU3FydCA9IGZ1bmN0aW9uIHJlZFNxcnQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcnQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEludm0gPSBmdW5jdGlvbiByZWRJbnZtICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbnZtKHRoaXMpO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2AgJSBgcmVkIG1vZHVsb2BcbiAgQk4ucHJvdG90eXBlLnJlZE5lZyA9IGZ1bmN0aW9uIHJlZE5lZyAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5uZWcodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFBvdyA9IGZ1bmN0aW9uIHJlZFBvdyAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkICYmICFudW0ucmVkLCAncmVkUG93KG5vcm1hbE51bSknKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQucG93KHRoaXMsIG51bSk7XG4gIH07XG5cbiAgLy8gUHJpbWUgbnVtYmVycyB3aXRoIGVmZmljaWVudCByZWR1Y3Rpb25cbiAgdmFyIHByaW1lcyA9IHtcbiAgICBrMjU2OiBudWxsLFxuICAgIHAyMjQ6IG51bGwsXG4gICAgcDE5MjogbnVsbCxcbiAgICBwMjU1MTk6IG51bGxcbiAgfTtcblxuICAvLyBQc2V1ZG8tTWVyc2VubmUgcHJpbWVcbiAgZnVuY3Rpb24gTVByaW1lIChuYW1lLCBwKSB7XG4gICAgLy8gUCA9IDIgXiBOIC0gS1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wID0gbmV3IEJOKHAsIDE2KTtcbiAgICB0aGlzLm4gPSB0aGlzLnAuYml0TGVuZ3RoKCk7XG4gICAgdGhpcy5rID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKTtcblxuICAgIHRoaXMudG1wID0gdGhpcy5fdG1wKCk7XG4gIH1cblxuICBNUHJpbWUucHJvdG90eXBlLl90bXAgPSBmdW5jdGlvbiBfdG1wICgpIHtcbiAgICB2YXIgdG1wID0gbmV3IEJOKG51bGwpO1xuICAgIHRtcC53b3JkcyA9IG5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uIC8gMTMpKTtcbiAgICByZXR1cm4gdG1wO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaXJlZHVjZSA9IGZ1bmN0aW9uIGlyZWR1Y2UgKG51bSkge1xuICAgIC8vIEFzc3VtZXMgdGhhdCBgbnVtYCBpcyBsZXNzIHRoYW4gYFBeMmBcbiAgICAvLyBudW0gPSBISSAqICgyIF4gTiAtIEspICsgSEkgKiBLICsgTE8gPSBISSAqIEsgKyBMTyAobW9kIFApXG4gICAgdmFyIHIgPSBudW07XG4gICAgdmFyIHJsZW47XG5cbiAgICBkbyB7XG4gICAgICB0aGlzLnNwbGl0KHIsIHRoaXMudG1wKTtcbiAgICAgIHIgPSB0aGlzLmltdWxLKHIpO1xuICAgICAgciA9IHIuaWFkZCh0aGlzLnRtcCk7XG4gICAgICBybGVuID0gci5iaXRMZW5ndGgoKTtcbiAgICB9IHdoaWxlIChybGVuID4gdGhpcy5uKTtcblxuICAgIHZhciBjbXAgPSBybGVuIDwgdGhpcy5uID8gLTEgOiByLnVjbXAodGhpcy5wKTtcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICByLndvcmRzWzBdID0gMDtcbiAgICAgIHIubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKGNtcCA+IDApIHtcbiAgICAgIHIuaXN1Yih0aGlzLnApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoci5zdHJpcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIHIgaXMgYSBCTiB2NCBpbnN0YW5jZVxuICAgICAgICByLnN0cmlwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByIGlzIGEgQk4gdjUgaW5zdGFuY2VcbiAgICAgICAgci5fc3RyaXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcblxuICAgIG1vdmUoYSwgYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpKTtcbiAgICByZXR1cm4gYTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm0uc3ViKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5hZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlhZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLnN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlzdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNobCA9IGZ1bmN0aW9uIHNobCAoYSwgbnVtKSB7XG4gICAgdGhpcy5fdmVyaWZ5MShhKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEudXNobG4obnVtKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLmltdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEubXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bChhLCBhLmNsb25lKCkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKGEsIGEpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FydCA9IGZ1bmN0aW9uIHNxcnQgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciBtb2QzID0gdGhpcy5tLmFuZGxuKDMpO1xuICAgIGFzc2VydChtb2QzICUgMiA9PT0gMSk7XG5cbiAgICAvLyBGYXN0IGNhc2VcbiAgICBpZiAobW9kMyA9PT0gMykge1xuICAgICAgdmFyIHBvdyA9IHRoaXMubS5hZGQobmV3IEJOKDEpKS5pdXNocm4oMik7XG4gICAgICByZXR1cm4gdGhpcy5wb3coYSwgcG93KTtcbiAgICB9XG5cbiAgICAvLyBUb25lbGxpLVNoYW5rcyBhbGdvcml0aG0gKFRvdGFsbHkgdW5vcHRpbWl6ZWQgYW5kIHNsb3cpXG4gICAgLy9cbiAgICAvLyBGaW5kIFEgYW5kIFMsIHRoYXQgUSAqIDIgXiBTID0gKFAgLSAxKVxuICAgIHZhciBxID0gdGhpcy5tLnN1Ym4oMSk7XG4gICAgdmFyIHMgPSAwO1xuICAgIHdoaWxlICghcS5pc1plcm8oKSAmJiBxLmFuZGxuKDEpID09PSAwKSB7XG4gICAgICBzKys7XG4gICAgICBxLml1c2hybigxKTtcbiAgICB9XG4gICAgYXNzZXJ0KCFxLmlzWmVybygpKTtcblxuICAgIHZhciBvbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgdmFyIG5PbmUgPSBvbmUucmVkTmVnKCk7XG5cbiAgICAvLyBGaW5kIHF1YWRyYXRpYyBub24tcmVzaWR1ZVxuICAgIC8vIE5PVEU6IE1heCBpcyBzdWNoIGJlY2F1c2Ugb2YgZ2VuZXJhbGl6ZWQgUmllbWFubiBoeXBvdGhlc2lzLlxuICAgIHZhciBscG93ID0gdGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpO1xuICAgIHZhciB6ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIHogPSBuZXcgQk4oMiAqIHogKiB6KS50b1JlZCh0aGlzKTtcblxuICAgIHdoaWxlICh0aGlzLnBvdyh6LCBscG93KS5jbXAobk9uZSkgIT09IDApIHtcbiAgICAgIHoucmVkSUFkZChuT25lKTtcbiAgICB9XG5cbiAgICB2YXIgYyA9IHRoaXMucG93KHosIHEpO1xuICAgIHZhciByID0gdGhpcy5wb3coYSwgcS5hZGRuKDEpLml1c2hybigxKSk7XG4gICAgdmFyIHQgPSB0aGlzLnBvdyhhLCBxKTtcbiAgICB2YXIgbSA9IHM7XG4gICAgd2hpbGUgKHQuY21wKG9uZSkgIT09IDApIHtcbiAgICAgIHZhciB0bXAgPSB0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IHRtcC5jbXAob25lKSAhPT0gMDsgaSsrKSB7XG4gICAgICAgIHRtcCA9IHRtcC5yZWRTcXIoKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydChpIDwgbSk7XG4gICAgICB2YXIgYiA9IHRoaXMucG93KGMsIG5ldyBCTigxKS5pdXNobG4obSAtIGkgLSAxKSk7XG5cbiAgICAgIHIgPSByLnJlZE11bChiKTtcbiAgICAgIGMgPSBiLnJlZFNxcigpO1xuICAgICAgdCA9IHQucmVkTXVsKGMpO1xuICAgICAgbSA9IGk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIHZhciBpbnYgPSBhLl9pbnZtcCh0aGlzLm0pO1xuICAgIGlmIChpbnYubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGludi5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludikucmVkTmVnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KTtcbiAgICB9XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKGEsIG51bSkge1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgaWYgKG51bS5jbXBuKDEpID09PSAwKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIHdpbmRvd1NpemUgPSA0O1xuICAgIHZhciB3bmQgPSBuZXcgQXJyYXkoMSA8PCB3aW5kb3dTaXplKTtcbiAgICB3bmRbMF0gPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgd25kWzFdID0gYTtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IHduZC5sZW5ndGg7IGkrKykge1xuICAgICAgd25kW2ldID0gdGhpcy5tdWwod25kW2kgLSAxXSwgYSk7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IHduZFswXTtcbiAgICB2YXIgY3VycmVudCA9IDA7XG4gICAgdmFyIGN1cnJlbnRMZW4gPSAwO1xuICAgIHZhciBzdGFydCA9IG51bS5iaXRMZW5ndGgoKSAlIDI2O1xuICAgIGlmIChzdGFydCA9PT0gMCkge1xuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSBudW0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gbnVtLndvcmRzW2ldO1xuICAgICAgZm9yICh2YXIgaiA9IHN0YXJ0IC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgdmFyIGJpdCA9ICh3b3JkID4+IGopICYgMTtcbiAgICAgICAgaWYgKHJlcyAhPT0gd25kWzBdKSB7XG4gICAgICAgICAgcmVzID0gdGhpcy5zcXIocmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXQgPT09IDAgJiYgY3VycmVudCA9PT0gMCkge1xuICAgICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudCA8PD0gMTtcbiAgICAgICAgY3VycmVudCB8PSBiaXQ7XG4gICAgICAgIGN1cnJlbnRMZW4rKztcbiAgICAgICAgaWYgKGN1cnJlbnRMZW4gIT09IHdpbmRvd1NpemUgJiYgKGkgIT09IDAgfHwgaiAhPT0gMCkpIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHRoaXMubXVsKHJlcywgd25kW2N1cnJlbnRdKTtcbiAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgIGN1cnJlbnQgPSAwO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICB2YXIgciA9IG51bS51bW9kKHRoaXMubSk7XG5cbiAgICByZXR1cm4gciA9PT0gbnVtID8gci5jbG9uZSgpIDogcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByZXMgPSBudW0uY2xvbmUoKTtcbiAgICByZXMucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vXG4gIC8vIE1vbnRnb21lcnkgbWV0aG9kIGVuZ2luZVxuICAvL1xuXG4gIEJOLm1vbnQgPSBmdW5jdGlvbiBtb250IChudW0pIHtcbiAgICByZXR1cm4gbmV3IE1vbnQobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBNb250IChtKSB7XG4gICAgUmVkLmNhbGwodGhpcywgbSk7XG5cbiAgICB0aGlzLnNoaWZ0ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIGlmICh0aGlzLnNoaWZ0ICUgMjYgIT09IDApIHtcbiAgICAgIHRoaXMuc2hpZnQgKz0gMjYgLSAodGhpcy5zaGlmdCAlIDI2KTtcbiAgICB9XG5cbiAgICB0aGlzLnIgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpO1xuICAgIHRoaXMucjIgPSB0aGlzLmltb2QodGhpcy5yLnNxcigpKTtcbiAgICB0aGlzLnJpbnYgPSB0aGlzLnIuX2ludm1wKHRoaXMubSk7XG5cbiAgICB0aGlzLm1pbnYgPSB0aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSk7XG4gICAgdGhpcy5taW52ID0gdGhpcy5taW52LnVtb2QodGhpcy5yKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLnIuc3ViKHRoaXMubWludik7XG4gIH1cbiAgaW5oZXJpdHMoTW9udCwgUmVkKTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmltb2QobnVtLnVzaGxuKHRoaXMuc2hpZnQpKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgciA9IHRoaXMuaW1vZChudW0ubXVsKHRoaXMucmludikpO1xuICAgIHIucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHtcbiAgICAgIGEud29yZHNbMF0gPSAwO1xuICAgICAgYS5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgdmFyIHQgPSBhLmltdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG5cbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMCkuX2ZvcmNlUmVkKHRoaXMpO1xuXG4gICAgdmFyIHQgPSBhLm11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgLy8gKEFSKV4tMSAqIFJeMiA9IChBXi0xICogUl4tMSkgKiBSXjIgPSBBXi0xICogUlxuICAgIHZhciByZXMgPSB0aGlzLmltb2QoYS5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpO1xuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xufSkodHlwZW9mIG1vZHVsZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbW9kdWxlLCB0aGlzKTtcbiIsInZhciByO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHJhbmQobGVuKSB7XG4gIGlmICghcilcbiAgICByID0gbmV3IFJhbmQobnVsbCk7XG5cbiAgcmV0dXJuIHIuZ2VuZXJhdGUobGVuKTtcbn07XG5cbmZ1bmN0aW9uIFJhbmQocmFuZCkge1xuICB0aGlzLnJhbmQgPSByYW5kO1xufVxubW9kdWxlLmV4cG9ydHMuUmFuZCA9IFJhbmQ7XG5cblJhbmQucHJvdG90eXBlLmdlbmVyYXRlID0gZnVuY3Rpb24gZ2VuZXJhdGUobGVuKSB7XG4gIHJldHVybiB0aGlzLl9yYW5kKGxlbik7XG59O1xuXG4vLyBFbXVsYXRlIGNyeXB0byBBUEkgdXNpbmcgcmFuZHlcblJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICBpZiAodGhpcy5yYW5kLmdldEJ5dGVzKVxuICAgIHJldHVybiB0aGlzLnJhbmQuZ2V0Qnl0ZXMobik7XG5cbiAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KG4pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHJlcy5sZW5ndGg7IGkrKylcbiAgICByZXNbaV0gPSB0aGlzLnJhbmQuZ2V0Qnl0ZSgpO1xuICByZXR1cm4gcmVzO1xufTtcblxuaWYgKHR5cGVvZiBzZWxmID09PSAnb2JqZWN0Jykge1xuICBpZiAoc2VsZi5jcnlwdG8gJiYgc2VsZi5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgLy8gTW9kZXJuIGJyb3dzZXJzXG4gICAgUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gICAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gICAgICBzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcbiAgfSBlbHNlIGlmIChzZWxmLm1zQ3J5cHRvICYmIHNlbGYubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgLy8gSUVcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICAgIHNlbGYubXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycik7XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH07XG5cbiAgLy8gU2FmYXJpJ3MgV2ViV29ya2VycyBkbyBub3QgaGF2ZSBgY3J5cHRvYFxuICB9IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSB7XG4gICAgLy8gT2xkIGp1bmtcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQgeWV0Jyk7XG4gICAgfTtcbiAgfVxufSBlbHNlIHtcbiAgLy8gTm9kZS5qcyBvciBXZWIgd29ya2VyIHdpdGggbm8gY3J5cHRvIHN1cHBvcnRcbiAgdHJ5IHtcbiAgICB2YXIgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7XG4gICAgaWYgKHR5cGVvZiBjcnlwdG8ucmFuZG9tQnl0ZXMgIT09ICdmdW5jdGlvbicpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQnKTtcblxuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgcmV0dXJuIGNyeXB0by5yYW5kb21CeXRlcyhuKTtcbiAgICB9O1xuICB9IGNhdGNoIChlKSB7XG4gIH1cbn1cbiIsIi8vIGJhc2VkIG9uIHRoZSBhZXMgaW1wbGltZW50YXRpb24gaW4gdHJpcGxlIHNlY1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL2tleWJhc2UvdHJpcGxlc2VjXG4vLyB3aGljaCBpcyBpbiB0dXJuIGJhc2VkIG9uIHRoZSBvbmUgZnJvbSBjcnlwdG8tanNcbi8vIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxuZnVuY3Rpb24gYXNVSW50MzJBcnJheSAoYnVmKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIGJ1ZiA9IEJ1ZmZlci5mcm9tKGJ1ZilcblxuICB2YXIgbGVuID0gKGJ1Zi5sZW5ndGggLyA0KSB8IDBcbiAgdmFyIG91dCA9IG5ldyBBcnJheShsZW4pXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG91dFtpXSA9IGJ1Zi5yZWFkVUludDMyQkUoaSAqIDQpXG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIHNjcnViVmVjICh2KSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdi5sZW5ndGg7IHYrKykge1xuICAgIHZbaV0gPSAwXG4gIH1cbn1cblxuZnVuY3Rpb24gY3J5cHRCbG9jayAoTSwga2V5U2NoZWR1bGUsIFNVQl9NSVgsIFNCT1gsIG5Sb3VuZHMpIHtcbiAgdmFyIFNVQl9NSVgwID0gU1VCX01JWFswXVxuICB2YXIgU1VCX01JWDEgPSBTVUJfTUlYWzFdXG4gIHZhciBTVUJfTUlYMiA9IFNVQl9NSVhbMl1cbiAgdmFyIFNVQl9NSVgzID0gU1VCX01JWFszXVxuXG4gIHZhciBzMCA9IE1bMF0gXiBrZXlTY2hlZHVsZVswXVxuICB2YXIgczEgPSBNWzFdIF4ga2V5U2NoZWR1bGVbMV1cbiAgdmFyIHMyID0gTVsyXSBeIGtleVNjaGVkdWxlWzJdXG4gIHZhciBzMyA9IE1bM10gXiBrZXlTY2hlZHVsZVszXVxuICB2YXIgdDAsIHQxLCB0MiwgdDNcbiAgdmFyIGtzUm93ID0gNFxuXG4gIGZvciAodmFyIHJvdW5kID0gMTsgcm91bmQgPCBuUm91bmRzOyByb3VuZCsrKSB7XG4gICAgdDAgPSBTVUJfTUlYMFtzMCA+Pj4gMjRdIF4gU1VCX01JWDFbKHMxID4+PiAxNikgJiAweGZmXSBeIFNVQl9NSVgyWyhzMiA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVgzW3MzICYgMHhmZl0gXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICAgIHQxID0gU1VCX01JWDBbczEgPj4+IDI0XSBeIFNVQl9NSVgxWyhzMiA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYMlsoczMgPj4+IDgpICYgMHhmZl0gXiBTVUJfTUlYM1tzMCAmIDB4ZmZdIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgICB0MiA9IFNVQl9NSVgwW3MyID4+PiAyNF0gXiBTVUJfTUlYMVsoczMgPj4+IDE2KSAmIDB4ZmZdIF4gU1VCX01JWDJbKHMwID4+PiA4KSAmIDB4ZmZdIF4gU1VCX01JWDNbczEgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDMgPSBTVUJfTUlYMFtzMyA+Pj4gMjRdIF4gU1VCX01JWDFbKHMwID4+PiAxNikgJiAweGZmXSBeIFNVQl9NSVgyWyhzMSA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVgzW3MyICYgMHhmZl0gXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICAgIHMwID0gdDBcbiAgICBzMSA9IHQxXG4gICAgczIgPSB0MlxuICAgIHMzID0gdDNcbiAgfVxuXG4gIHQwID0gKChTQk9YW3MwID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMxID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczIgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MzICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgdDEgPSAoKFNCT1hbczEgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczIgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMyA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczAgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICB0MiA9ICgoU0JPWFtzMiA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMyA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMwID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMSAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gIHQzID0gKChTQk9YW3MzID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMwID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczEgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MyICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgdDAgPSB0MCA+Pj4gMFxuICB0MSA9IHQxID4+PiAwXG4gIHQyID0gdDIgPj4+IDBcbiAgdDMgPSB0MyA+Pj4gMFxuXG4gIHJldHVybiBbdDAsIHQxLCB0MiwgdDNdXG59XG5cbi8vIEFFUyBjb25zdGFudHNcbnZhciBSQ09OID0gWzB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzZdXG52YXIgRyA9IChmdW5jdGlvbiAoKSB7XG4gIC8vIENvbXB1dGUgZG91YmxlIHRhYmxlXG4gIHZhciBkID0gbmV3IEFycmF5KDI1NilcbiAgZm9yICh2YXIgaiA9IDA7IGogPCAyNTY7IGorKykge1xuICAgIGlmIChqIDwgMTI4KSB7XG4gICAgICBkW2pdID0gaiA8PCAxXG4gICAgfSBlbHNlIHtcbiAgICAgIGRbal0gPSAoaiA8PCAxKSBeIDB4MTFiXG4gICAgfVxuICB9XG5cbiAgdmFyIFNCT1ggPSBbXVxuICB2YXIgSU5WX1NCT1ggPSBbXVxuICB2YXIgU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdmFyIElOVl9TVUJfTUlYID0gW1tdLCBbXSwgW10sIFtdXVxuXG4gIC8vIFdhbGsgR0YoMl44KVxuICB2YXIgeCA9IDBcbiAgdmFyIHhpID0gMFxuICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgKytpKSB7XG4gICAgLy8gQ29tcHV0ZSBzYm94XG4gICAgdmFyIHN4ID0geGkgXiAoeGkgPDwgMSkgXiAoeGkgPDwgMikgXiAoeGkgPDwgMykgXiAoeGkgPDwgNClcbiAgICBzeCA9IChzeCA+Pj4gOCkgXiAoc3ggJiAweGZmKSBeIDB4NjNcbiAgICBTQk9YW3hdID0gc3hcbiAgICBJTlZfU0JPWFtzeF0gPSB4XG5cbiAgICAvLyBDb21wdXRlIG11bHRpcGxpY2F0aW9uXG4gICAgdmFyIHgyID0gZFt4XVxuICAgIHZhciB4NCA9IGRbeDJdXG4gICAgdmFyIHg4ID0gZFt4NF1cblxuICAgIC8vIENvbXB1dGUgc3ViIGJ5dGVzLCBtaXggY29sdW1ucyB0YWJsZXNcbiAgICB2YXIgdCA9IChkW3N4XSAqIDB4MTAxKSBeIChzeCAqIDB4MTAxMDEwMClcbiAgICBTVUJfTUlYWzBdW3hdID0gKHQgPDwgMjQpIHwgKHQgPj4+IDgpXG4gICAgU1VCX01JWFsxXVt4XSA9ICh0IDw8IDE2KSB8ICh0ID4+PiAxNilcbiAgICBTVUJfTUlYWzJdW3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgU1VCX01JWFszXVt4XSA9IHRcblxuICAgIC8vIENvbXB1dGUgaW52IHN1YiBieXRlcywgaW52IG1peCBjb2x1bW5zIHRhYmxlc1xuICAgIHQgPSAoeDggKiAweDEwMTAxMDEpIF4gKHg0ICogMHgxMDAwMSkgXiAoeDIgKiAweDEwMSkgXiAoeCAqIDB4MTAxMDEwMClcbiAgICBJTlZfU1VCX01JWFswXVtzeF0gPSAodCA8PCAyNCkgfCAodCA+Pj4gOClcbiAgICBJTlZfU1VCX01JWFsxXVtzeF0gPSAodCA8PCAxNikgfCAodCA+Pj4gMTYpXG4gICAgSU5WX1NVQl9NSVhbMl1bc3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgSU5WX1NVQl9NSVhbM11bc3hdID0gdFxuXG4gICAgaWYgKHggPT09IDApIHtcbiAgICAgIHggPSB4aSA9IDFcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHgyIF4gZFtkW2RbeDggXiB4Ml1dXVxuICAgICAgeGkgXj0gZFtkW3hpXV1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIFNCT1g6IFNCT1gsXG4gICAgSU5WX1NCT1g6IElOVl9TQk9YLFxuICAgIFNVQl9NSVg6IFNVQl9NSVgsXG4gICAgSU5WX1NVQl9NSVg6IElOVl9TVUJfTUlYXG4gIH1cbn0pKClcblxuZnVuY3Rpb24gQUVTIChrZXkpIHtcbiAgdGhpcy5fa2V5ID0gYXNVSW50MzJBcnJheShrZXkpXG4gIHRoaXMuX3Jlc2V0KClcbn1cblxuQUVTLmJsb2NrU2l6ZSA9IDQgKiA0XG5BRVMua2V5U2l6ZSA9IDI1NiAvIDhcbkFFUy5wcm90b3R5cGUuYmxvY2tTaXplID0gQUVTLmJsb2NrU2l6ZVxuQUVTLnByb3RvdHlwZS5rZXlTaXplID0gQUVTLmtleVNpemVcbkFFUy5wcm90b3R5cGUuX3Jlc2V0ID0gZnVuY3Rpb24gKCkge1xuICB2YXIga2V5V29yZHMgPSB0aGlzLl9rZXlcbiAgdmFyIGtleVNpemUgPSBrZXlXb3Jkcy5sZW5ndGhcbiAgdmFyIG5Sb3VuZHMgPSBrZXlTaXplICsgNlxuICB2YXIga3NSb3dzID0gKG5Sb3VuZHMgKyAxKSAqIDRcblxuICB2YXIga2V5U2NoZWR1bGUgPSBbXVxuICBmb3IgKHZhciBrID0gMDsgayA8IGtleVNpemU7IGsrKykge1xuICAgIGtleVNjaGVkdWxlW2tdID0ga2V5V29yZHNba11cbiAgfVxuXG4gIGZvciAoayA9IGtleVNpemU7IGsgPCBrc1Jvd3M7IGsrKykge1xuICAgIHZhciB0ID0ga2V5U2NoZWR1bGVbayAtIDFdXG5cbiAgICBpZiAoayAlIGtleVNpemUgPT09IDApIHtcbiAgICAgIHQgPSAodCA8PCA4KSB8ICh0ID4+PiAyNClcbiAgICAgIHQgPVxuICAgICAgICAoRy5TQk9YW3QgPj4+IDI0XSA8PCAyNCkgfFxuICAgICAgICAoRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXSA8PCAxNikgfFxuICAgICAgICAoRy5TQk9YWyh0ID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHxcbiAgICAgICAgKEcuU0JPWFt0ICYgMHhmZl0pXG5cbiAgICAgIHQgXj0gUkNPTlsoayAvIGtleVNpemUpIHwgMF0gPDwgMjRcbiAgICB9IGVsc2UgaWYgKGtleVNpemUgPiA2ICYmIGsgJSBrZXlTaXplID09PSA0KSB7XG4gICAgICB0ID1cbiAgICAgICAgKEcuU0JPWFt0ID4+PiAyNF0gPDwgMjQpIHxcbiAgICAgICAgKEcuU0JPWFsodCA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHxcbiAgICAgICAgKEcuU0JPWFsodCA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8XG4gICAgICAgIChHLlNCT1hbdCAmIDB4ZmZdKVxuICAgIH1cblxuICAgIGtleVNjaGVkdWxlW2tdID0ga2V5U2NoZWR1bGVbayAtIGtleVNpemVdIF4gdFxuICB9XG5cbiAgdmFyIGludktleVNjaGVkdWxlID0gW11cbiAgZm9yICh2YXIgaWsgPSAwOyBpayA8IGtzUm93czsgaWsrKykge1xuICAgIHZhciBrc1IgPSBrc1Jvd3MgLSBpa1xuICAgIHZhciB0dCA9IGtleVNjaGVkdWxlW2tzUiAtIChpayAlIDQgPyAwIDogNCldXG5cbiAgICBpZiAoaWsgPCA0IHx8IGtzUiA8PSA0KSB7XG4gICAgICBpbnZLZXlTY2hlZHVsZVtpa10gPSB0dFxuICAgIH0gZWxzZSB7XG4gICAgICBpbnZLZXlTY2hlZHVsZVtpa10gPVxuICAgICAgICBHLklOVl9TVUJfTUlYWzBdW0cuU0JPWFt0dCA+Pj4gMjRdXSBeXG4gICAgICAgIEcuSU5WX1NVQl9NSVhbMV1bRy5TQk9YWyh0dCA+Pj4gMTYpICYgMHhmZl1dIF5cbiAgICAgICAgRy5JTlZfU1VCX01JWFsyXVtHLlNCT1hbKHR0ID4+PiA4KSAmIDB4ZmZdXSBeXG4gICAgICAgIEcuSU5WX1NVQl9NSVhbM11bRy5TQk9YW3R0ICYgMHhmZl1dXG4gICAgfVxuICB9XG5cbiAgdGhpcy5fblJvdW5kcyA9IG5Sb3VuZHNcbiAgdGhpcy5fa2V5U2NoZWR1bGUgPSBrZXlTY2hlZHVsZVxuICB0aGlzLl9pbnZLZXlTY2hlZHVsZSA9IGludktleVNjaGVkdWxlXG59XG5cbkFFUy5wcm90b3R5cGUuZW5jcnlwdEJsb2NrUmF3ID0gZnVuY3Rpb24gKE0pIHtcbiAgTSA9IGFzVUludDMyQXJyYXkoTSlcbiAgcmV0dXJuIGNyeXB0QmxvY2soTSwgdGhpcy5fa2V5U2NoZWR1bGUsIEcuU1VCX01JWCwgRy5TQk9YLCB0aGlzLl9uUm91bmRzKVxufVxuXG5BRVMucHJvdG90eXBlLmVuY3J5cHRCbG9jayA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBvdXQgPSB0aGlzLmVuY3J5cHRCbG9ja1JhdyhNKVxuICB2YXIgYnVmID0gQnVmZmVyLmFsbG9jVW5zYWZlKDE2KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMF0sIDApXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsxXSwgNClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzJdLCA4KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDEyKVxuICByZXR1cm4gYnVmXG59XG5cbkFFUy5wcm90b3R5cGUuZGVjcnlwdEJsb2NrID0gZnVuY3Rpb24gKE0pIHtcbiAgTSA9IGFzVUludDMyQXJyYXkoTSlcblxuICAvLyBzd2FwXG4gIHZhciBtMSA9IE1bMV1cbiAgTVsxXSA9IE1bM11cbiAgTVszXSA9IG0xXG5cbiAgdmFyIG91dCA9IGNyeXB0QmxvY2soTSwgdGhpcy5faW52S2V5U2NoZWR1bGUsIEcuSU5WX1NVQl9NSVgsIEcuSU5WX1NCT1gsIHRoaXMuX25Sb3VuZHMpXG4gIHZhciBidWYgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMTYpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFswXSwgMClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzNdLCA0KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMl0sIDgpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsxXSwgMTIpXG4gIHJldHVybiBidWZcbn1cblxuQUVTLnByb3RvdHlwZS5zY3J1YiA9IGZ1bmN0aW9uICgpIHtcbiAgc2NydWJWZWModGhpcy5fa2V5U2NoZWR1bGUpXG4gIHNjcnViVmVjKHRoaXMuX2ludktleVNjaGVkdWxlKVxuICBzY3J1YlZlYyh0aGlzLl9rZXkpXG59XG5cbm1vZHVsZS5leHBvcnRzLkFFUyA9IEFFU1xuIiwidmFyIGFlcyA9IHJlcXVpcmUoJy4vYWVzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBHSEFTSCA9IHJlcXVpcmUoJy4vZ2hhc2gnKVxudmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxudmFyIGluY3IzMiA9IHJlcXVpcmUoJy4vaW5jcjMyJylcblxuZnVuY3Rpb24geG9yVGVzdCAoYSwgYikge1xuICB2YXIgb3V0ID0gMFxuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSBvdXQrK1xuXG4gIHZhciBsZW4gPSBNYXRoLm1pbihhLmxlbmd0aCwgYi5sZW5ndGgpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICBvdXQgKz0gKGFbaV0gXiBiW2ldKVxuICB9XG5cbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiBjYWxjSXYgKHNlbGYsIGl2LCBjaykge1xuICBpZiAoaXYubGVuZ3RoID09PSAxMikge1xuICAgIHNlbGYuX2ZpbklEID0gQnVmZmVyLmNvbmNhdChbaXYsIEJ1ZmZlci5mcm9tKFswLCAwLCAwLCAxXSldKVxuICAgIHJldHVybiBCdWZmZXIuY29uY2F0KFtpdiwgQnVmZmVyLmZyb20oWzAsIDAsIDAsIDJdKV0pXG4gIH1cbiAgdmFyIGdoYXNoID0gbmV3IEdIQVNIKGNrKVxuICB2YXIgbGVuID0gaXYubGVuZ3RoXG4gIHZhciB0b1BhZCA9IGxlbiAlIDE2XG4gIGdoYXNoLnVwZGF0ZShpdilcbiAgaWYgKHRvUGFkKSB7XG4gICAgdG9QYWQgPSAxNiAtIHRvUGFkXG4gICAgZ2hhc2gudXBkYXRlKEJ1ZmZlci5hbGxvYyh0b1BhZCwgMCkpXG4gIH1cbiAgZ2hhc2gudXBkYXRlKEJ1ZmZlci5hbGxvYyg4LCAwKSlcbiAgdmFyIGl2Qml0cyA9IGxlbiAqIDhcbiAgdmFyIHRhaWwgPSBCdWZmZXIuYWxsb2MoOClcbiAgdGFpbC53cml0ZVVJbnRCRShpdkJpdHMsIDAsIDgpXG4gIGdoYXNoLnVwZGF0ZSh0YWlsKVxuICBzZWxmLl9maW5JRCA9IGdoYXNoLnN0YXRlXG4gIHZhciBvdXQgPSBCdWZmZXIuZnJvbShzZWxmLl9maW5JRClcbiAgaW5jcjMyKG91dClcbiAgcmV0dXJuIG91dFxufVxuZnVuY3Rpb24gU3RyZWFtQ2lwaGVyIChtb2RlLCBrZXksIGl2LCBkZWNyeXB0KSB7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG5cbiAgdmFyIGggPSBCdWZmZXIuYWxsb2MoNCwgMClcblxuICB0aGlzLl9jaXBoZXIgPSBuZXcgYWVzLkFFUyhrZXkpXG4gIHZhciBjayA9IHRoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2soaClcbiAgdGhpcy5fZ2hhc2ggPSBuZXcgR0hBU0goY2spXG4gIGl2ID0gY2FsY0l2KHRoaXMsIGl2LCBjaylcblxuICB0aGlzLl9wcmV2ID0gQnVmZmVyLmZyb20oaXYpXG4gIHRoaXMuX2NhY2hlID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApXG4gIHRoaXMuX3NlY0NhY2hlID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApXG4gIHRoaXMuX2RlY3J5cHQgPSBkZWNyeXB0XG4gIHRoaXMuX2FsZW4gPSAwXG4gIHRoaXMuX2xlbiA9IDBcbiAgdGhpcy5fbW9kZSA9IG1vZGVcblxuICB0aGlzLl9hdXRoVGFnID0gbnVsbFxuICB0aGlzLl9jYWxsZWQgPSBmYWxzZVxufVxuXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcblxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIGlmICghdGhpcy5fY2FsbGVkICYmIHRoaXMuX2FsZW4pIHtcbiAgICB2YXIgcnVtcCA9IDE2IC0gKHRoaXMuX2FsZW4gJSAxNilcbiAgICBpZiAocnVtcCA8IDE2KSB7XG4gICAgICBydW1wID0gQnVmZmVyLmFsbG9jKHJ1bXAsIDApXG4gICAgICB0aGlzLl9naGFzaC51cGRhdGUocnVtcClcbiAgICB9XG4gIH1cblxuICB0aGlzLl9jYWxsZWQgPSB0cnVlXG4gIHZhciBvdXQgPSB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcywgY2h1bmspXG4gIGlmICh0aGlzLl9kZWNyeXB0KSB7XG4gICAgdGhpcy5fZ2hhc2gudXBkYXRlKGNodW5rKVxuICB9IGVsc2Uge1xuICAgIHRoaXMuX2doYXNoLnVwZGF0ZShvdXQpXG4gIH1cbiAgdGhpcy5fbGVuICs9IGNodW5rLmxlbmd0aFxuICByZXR1cm4gb3V0XG59XG5cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5fZGVjcnlwdCAmJiAhdGhpcy5fYXV0aFRhZykgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEnKVxuXG4gIHZhciB0YWcgPSB4b3IodGhpcy5fZ2hhc2guZmluYWwodGhpcy5fYWxlbiAqIDgsIHRoaXMuX2xlbiAqIDgpLCB0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHRoaXMuX2ZpbklEKSlcbiAgaWYgKHRoaXMuX2RlY3J5cHQgJiYgeG9yVGVzdCh0YWcsIHRoaXMuX2F1dGhUYWcpKSB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YScpXG5cbiAgdGhpcy5fYXV0aFRhZyA9IHRhZ1xuICB0aGlzLl9jaXBoZXIuc2NydWIoKVxufVxuXG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLmdldEF1dGhUYWcgPSBmdW5jdGlvbiBnZXRBdXRoVGFnICgpIHtcbiAgaWYgKHRoaXMuX2RlY3J5cHQgfHwgIUJ1ZmZlci5pc0J1ZmZlcih0aGlzLl9hdXRoVGFnKSkgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG5cbiAgcmV0dXJuIHRoaXMuX2F1dGhUYWdcbn1cblxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5zZXRBdXRoVGFnID0gZnVuY3Rpb24gc2V0QXV0aFRhZyAodGFnKSB7XG4gIGlmICghdGhpcy5fZGVjcnlwdCkgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG5cbiAgdGhpcy5fYXV0aFRhZyA9IHRhZ1xufVxuXG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLnNldEFBRCA9IGZ1bmN0aW9uIHNldEFBRCAoYnVmKSB7XG4gIGlmICh0aGlzLl9jYWxsZWQpIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBzZXQgQUFEIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcblxuICB0aGlzLl9naGFzaC51cGRhdGUoYnVmKVxuICB0aGlzLl9hbGVuICs9IGJ1Zi5sZW5ndGhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTdHJlYW1DaXBoZXJcbiIsInZhciBjaXBoZXJzID0gcmVxdWlyZSgnLi9lbmNyeXB0ZXInKVxudmFyIGRlY2lwaGVycyA9IHJlcXVpcmUoJy4vZGVjcnlwdGVyJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMvbGlzdC5qc29uJylcblxuZnVuY3Rpb24gZ2V0Q2lwaGVycyAoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhtb2Rlcylcbn1cblxuZXhwb3J0cy5jcmVhdGVDaXBoZXIgPSBleHBvcnRzLkNpcGhlciA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyXG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gZXhwb3J0cy5DaXBoZXJpdiA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBleHBvcnRzLkRlY2lwaGVyID0gZGVjaXBoZXJzLmNyZWF0ZURlY2lwaGVyXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyaXYgPSBleHBvcnRzLkRlY2lwaGVyaXYgPSBkZWNpcGhlcnMuY3JlYXRlRGVjaXBoZXJpdlxuZXhwb3J0cy5saXN0Q2lwaGVycyA9IGV4cG9ydHMuZ2V0Q2lwaGVycyA9IGdldENpcGhlcnNcbiIsInZhciBBdXRoQ2lwaGVyID0gcmVxdWlyZSgnLi9hdXRoQ2lwaGVyJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIE1PREVTID0gcmVxdWlyZSgnLi9tb2RlcycpXG52YXIgU3RyZWFtQ2lwaGVyID0gcmVxdWlyZSgnLi9zdHJlYW1DaXBoZXInKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgZWJ0ayA9IHJlcXVpcmUoJ2V2cF9ieXRlc3Rva2V5JylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcblxuZnVuY3Rpb24gRGVjaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcblxuICB0aGlzLl9jYWNoZSA9IG5ldyBTcGxpdHRlcigpXG4gIHRoaXMuX2xhc3QgPSB2b2lkIDBcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gQnVmZmVyLmZyb20oaXYpXG4gIHRoaXMuX21vZGUgPSBtb2RlXG4gIHRoaXMuX2F1dG9wYWRkaW5nID0gdHJ1ZVxufVxuXG5pbmhlcml0cyhEZWNpcGhlciwgVHJhbnNmb3JtKVxuXG5EZWNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2NhY2hlLmFkZChkYXRhKVxuICB2YXIgY2h1bmtcbiAgdmFyIHRoaW5nXG4gIHZhciBvdXQgPSBbXVxuICB3aGlsZSAoKGNodW5rID0gdGhpcy5fY2FjaGUuZ2V0KHRoaXMuX2F1dG9wYWRkaW5nKSkpIHtcbiAgICB0aGluZyA9IHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLCBjaHVuaylcbiAgICBvdXQucHVzaCh0aGluZylcbiAgfVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG5cbkRlY2lwaGVyLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBjaHVuayA9IHRoaXMuX2NhY2hlLmZsdXNoKClcbiAgaWYgKHRoaXMuX2F1dG9wYWRkaW5nKSB7XG4gICAgcmV0dXJuIHVucGFkKHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLCBjaHVuaykpXG4gIH0gZWxzZSBpZiAoY2h1bmspIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCcpXG4gIH1cbn1cblxuRGVjaXBoZXIucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nID0gZnVuY3Rpb24gKHNldFRvKSB7XG4gIHRoaXMuX2F1dG9wYWRkaW5nID0gISFzZXRUb1xuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiBTcGxpdHRlciAoKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBkYXRhXSlcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChhdXRvUGFkZGluZykge1xuICB2YXIgb3V0XG4gIGlmIChhdXRvUGFkZGluZykge1xuICAgIGlmICh0aGlzLmNhY2hlLmxlbmd0aCA+IDE2KSB7XG4gICAgICBvdXQgPSB0aGlzLmNhY2hlLnNsaWNlKDAsIDE2KVxuICAgICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGUuc2xpY2UoMTYpXG4gICAgICByZXR1cm4gb3V0XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmICh0aGlzLmNhY2hlLmxlbmd0aCA+PSAxNikge1xuICAgICAgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgICAgcmV0dXJuIG91dFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsXG59XG5cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoKSByZXR1cm4gdGhpcy5jYWNoZVxufVxuXG5mdW5jdGlvbiB1bnBhZCAobGFzdCkge1xuICB2YXIgcGFkZGVkID0gbGFzdFsxNV1cbiAgaWYgKHBhZGRlZCA8IDEgfHwgcGFkZGVkID4gMTYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VuYWJsZSB0byBkZWNyeXB0IGRhdGEnKVxuICB9XG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IHBhZGRlZCkge1xuICAgIGlmIChsYXN0WyhpICsgKDE2IC0gcGFkZGVkKSldICE9PSBwYWRkZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIGRlY3J5cHQgZGF0YScpXG4gICAgfVxuICB9XG4gIGlmIChwYWRkZWQgPT09IDE2KSByZXR1cm5cblxuICByZXR1cm4gbGFzdC5zbGljZSgwLCAxNiAtIHBhZGRlZClcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXJpdiAoc3VpdGUsIHBhc3N3b3JkLCBpdikge1xuICB2YXIgY29uZmlnID0gTU9ERVNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG5cbiAgaWYgKHR5cGVvZiBpdiA9PT0gJ3N0cmluZycpIGl2ID0gQnVmZmVyLmZyb20oaXYpXG4gIGlmIChjb25maWcubW9kZSAhPT0gJ0dDTScgJiYgaXYubGVuZ3RoICE9PSBjb25maWcuaXYpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG5cbiAgaWYgKHR5cGVvZiBwYXNzd29yZCA9PT0gJ3N0cmluZycpIHBhc3N3b3JkID0gQnVmZmVyLmZyb20ocGFzc3dvcmQpXG4gIGlmIChwYXNzd29yZC5sZW5ndGggIT09IGNvbmZpZy5rZXkgLyA4KSB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIGtleSBsZW5ndGggJyArIHBhc3N3b3JkLmxlbmd0aClcblxuICBpZiAoY29uZmlnLnR5cGUgPT09ICdzdHJlYW0nKSB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW1DaXBoZXIoY29uZmlnLm1vZHVsZSwgcGFzc3dvcmQsIGl2LCB0cnVlKVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIoY29uZmlnLm1vZHVsZSwgcGFzc3dvcmQsIGl2LCB0cnVlKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBEZWNpcGhlcihjb25maWcubW9kdWxlLCBwYXNzd29yZCwgaXYpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgdmFyIGNvbmZpZyA9IE1PREVTW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuXG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXJpdiA9IGNyZWF0ZURlY2lwaGVyaXZcbiIsInZhciBNT0RFUyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIEF1dGhDaXBoZXIgPSByZXF1aXJlKCcuL2F1dGhDaXBoZXInKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgU3RyZWFtQ2lwaGVyID0gcmVxdWlyZSgnLi9zdHJlYW1DaXBoZXInKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgZWJ0ayA9IHJlcXVpcmUoJ2V2cF9ieXRlc3Rva2V5JylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcblxuZnVuY3Rpb24gQ2lwaGVyIChtb2RlLCBrZXksIGl2KSB7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG5cbiAgdGhpcy5fY2FjaGUgPSBuZXcgU3BsaXR0ZXIoKVxuICB0aGlzLl9jaXBoZXIgPSBuZXcgYWVzLkFFUyhrZXkpXG4gIHRoaXMuX3ByZXYgPSBCdWZmZXIuZnJvbShpdilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5cbmluaGVyaXRzKENpcGhlciwgVHJhbnNmb3JtKVxuXG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9jYWNoZS5hZGQoZGF0YSlcbiAgdmFyIGNodW5rXG4gIHZhciB0aGluZ1xuICB2YXIgb3V0ID0gW11cblxuICB3aGlsZSAoKGNodW5rID0gdGhpcy5fY2FjaGUuZ2V0KCkpKSB7XG4gICAgdGhpbmcgPSB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcywgY2h1bmspXG4gICAgb3V0LnB1c2godGhpbmcpXG4gIH1cblxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG5cbnZhciBQQURESU5HID0gQnVmZmVyLmFsbG9jKDE2LCAweDEwKVxuXG5DaXBoZXIucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGNodW5rID0gdGhpcy5fY2FjaGUuZmx1c2goKVxuICBpZiAodGhpcy5fYXV0b3BhZGRpbmcpIHtcbiAgICBjaHVuayA9IHRoaXMuX21vZGUuZW5jcnlwdCh0aGlzLCBjaHVuaylcbiAgICB0aGlzLl9jaXBoZXIuc2NydWIoKVxuICAgIHJldHVybiBjaHVua1xuICB9XG5cbiAgaWYgKCFjaHVuay5lcXVhbHMoUEFERElORykpIHtcbiAgICB0aGlzLl9jaXBoZXIuc2NydWIoKVxuICAgIHRocm93IG5ldyBFcnJvcignZGF0YSBub3QgbXVsdGlwbGUgb2YgYmxvY2sgbGVuZ3RoJylcbiAgfVxufVxuXG5DaXBoZXIucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nID0gZnVuY3Rpb24gKHNldFRvKSB7XG4gIHRoaXMuX2F1dG9wYWRkaW5nID0gISFzZXRUb1xuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiBTcGxpdHRlciAoKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBkYXRhXSlcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoID4gMTUpIHtcbiAgICB2YXIgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICByZXR1cm4gb3V0XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbGVuID0gMTYgLSB0aGlzLmNhY2hlLmxlbmd0aFxuICB2YXIgcGFkQnVmZiA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW4pXG5cbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgcGFkQnVmZi53cml0ZVVJbnQ4KGxlbiwgaSlcbiAgfVxuXG4gIHJldHVybiBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBwYWRCdWZmXSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IE1PREVTW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuXG4gIGlmICh0eXBlb2YgcGFzc3dvcmQgPT09ICdzdHJpbmcnKSBwYXNzd29yZCA9IEJ1ZmZlci5mcm9tKHBhc3N3b3JkKVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBrZXkgbGVuZ3RoICcgKyBwYXNzd29yZC5sZW5ndGgpXG5cbiAgaWYgKHR5cGVvZiBpdiA9PT0gJ3N0cmluZycpIGl2ID0gQnVmZmVyLmZyb20oaXYpXG4gIGlmIChjb25maWcubW9kZSAhPT0gJ0dDTScgJiYgaXYubGVuZ3RoICE9PSBjb25maWcuaXYpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG5cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKGNvbmZpZy5tb2R1bGUsIHBhc3N3b3JkLCBpdilcbiAgfSBlbHNlIGlmIChjb25maWcudHlwZSA9PT0gJ2F1dGgnKSB7XG4gICAgcmV0dXJuIG5ldyBBdXRoQ2lwaGVyKGNvbmZpZy5tb2R1bGUsIHBhc3N3b3JkLCBpdilcbiAgfVxuXG4gIHJldHVybiBuZXcgQ2lwaGVyKGNvbmZpZy5tb2R1bGUsIHBhc3N3b3JkLCBpdilcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgdmFyIGNvbmZpZyA9IE1PREVTW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuXG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cblxuZXhwb3J0cy5jcmVhdGVDaXBoZXJpdiA9IGNyZWF0ZUNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGNyZWF0ZUNpcGhlclxuIiwidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgWkVST0VTID0gQnVmZmVyLmFsbG9jKDE2LCAwKVxuXG5mdW5jdGlvbiB0b0FycmF5IChidWYpIHtcbiAgcmV0dXJuIFtcbiAgICBidWYucmVhZFVJbnQzMkJFKDApLFxuICAgIGJ1Zi5yZWFkVUludDMyQkUoNCksXG4gICAgYnVmLnJlYWRVSW50MzJCRSg4KSxcbiAgICBidWYucmVhZFVJbnQzMkJFKDEyKVxuICBdXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheSAob3V0KSB7XG4gIHZhciBidWYgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMTYpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFswXSA+Pj4gMCwgMClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdID4+PiAwLCA0KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMl0gPj4+IDAsIDgpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFszXSA+Pj4gMCwgMTIpXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gR0hBU0ggKGtleSkge1xuICB0aGlzLmggPSBrZXlcbiAgdGhpcy5zdGF0ZSA9IEJ1ZmZlci5hbGxvYygxNiwgMClcbiAgdGhpcy5jYWNoZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxufVxuXG4vLyBmcm9tIGh0dHA6Ly9iaXR3aXNlc2hpZnRsZWZ0LmdpdGh1Yi5pby9zamNsL2RvYy9zeW1ib2xzL3NyYy9jb3JlX2djbS5qcy5odG1sXG4vLyBieSBKdWhvIFbDpGjDpC1IZXJ0dHVhXG5HSEFTSC5wcm90b3R5cGUuZ2hhc2ggPSBmdW5jdGlvbiAoYmxvY2spIHtcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgYmxvY2subGVuZ3RoKSB7XG4gICAgdGhpcy5zdGF0ZVtpXSBePSBibG9ja1tpXVxuICB9XG4gIHRoaXMuX211bHRpcGx5KClcbn1cblxuR0hBU0gucHJvdG90eXBlLl9tdWx0aXBseSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIFZpID0gdG9BcnJheSh0aGlzLmgpXG4gIHZhciBaaSA9IFswLCAwLCAwLCAwXVxuICB2YXIgaiwgeGksIGxzYlZpXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IDEyOCkge1xuICAgIHhpID0gKHRoaXMuc3RhdGVbfn4oaSAvIDgpXSAmICgxIDw8ICg3IC0gKGkgJSA4KSkpKSAhPT0gMFxuICAgIGlmICh4aSkge1xuICAgICAgLy8gWl9pKzEgPSBaX2kgXiBWX2lcbiAgICAgIFppWzBdIF49IFZpWzBdXG4gICAgICBaaVsxXSBePSBWaVsxXVxuICAgICAgWmlbMl0gXj0gVmlbMl1cbiAgICAgIFppWzNdIF49IFZpWzNdXG4gICAgfVxuXG4gICAgLy8gU3RvcmUgdGhlIHZhbHVlIG9mIExTQihWX2kpXG4gICAgbHNiVmkgPSAoVmlbM10gJiAxKSAhPT0gMFxuXG4gICAgLy8gVl9pKzEgPSBWX2kgPj4gMVxuICAgIGZvciAoaiA9IDM7IGogPiAwOyBqLS0pIHtcbiAgICAgIFZpW2pdID0gKFZpW2pdID4+PiAxKSB8ICgoVmlbaiAtIDFdICYgMSkgPDwgMzEpXG4gICAgfVxuICAgIFZpWzBdID0gVmlbMF0gPj4+IDFcblxuICAgIC8vIElmIExTQihWX2kpIGlzIDEsIFZfaSsxID0gKFZfaSA+PiAxKSBeIFJcbiAgICBpZiAobHNiVmkpIHtcbiAgICAgIFZpWzBdID0gVmlbMF0gXiAoMHhlMSA8PCAyNClcbiAgICB9XG4gIH1cbiAgdGhpcy5zdGF0ZSA9IGZyb21BcnJheShaaSlcbn1cblxuR0hBU0gucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChidWYpIHtcbiAgdGhpcy5jYWNoZSA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuY2FjaGUsIGJ1Zl0pXG4gIHZhciBjaHVua1xuICB3aGlsZSAodGhpcy5jYWNoZS5sZW5ndGggPj0gMTYpIHtcbiAgICBjaHVuayA9IHRoaXMuY2FjaGUuc2xpY2UoMCwgMTYpXG4gICAgdGhpcy5jYWNoZSA9IHRoaXMuY2FjaGUuc2xpY2UoMTYpXG4gICAgdGhpcy5naGFzaChjaHVuaylcbiAgfVxufVxuXG5HSEFTSC5wcm90b3R5cGUuZmluYWwgPSBmdW5jdGlvbiAoYWJsLCBibCkge1xuICBpZiAodGhpcy5jYWNoZS5sZW5ndGgpIHtcbiAgICB0aGlzLmdoYXNoKEJ1ZmZlci5jb25jYXQoW3RoaXMuY2FjaGUsIFpFUk9FU10sIDE2KSlcbiAgfVxuXG4gIHRoaXMuZ2hhc2goZnJvbUFycmF5KFswLCBhYmwsIDAsIGJsXSkpXG4gIHJldHVybiB0aGlzLnN0YXRlXG59XG5cbm1vZHVsZS5leHBvcnRzID0gR0hBU0hcbiIsImZ1bmN0aW9uIGluY3IzMiAoaXYpIHtcbiAgdmFyIGxlbiA9IGl2Lmxlbmd0aFxuICB2YXIgaXRlbVxuICB3aGlsZSAobGVuLS0pIHtcbiAgICBpdGVtID0gaXYucmVhZFVJbnQ4KGxlbilcbiAgICBpZiAoaXRlbSA9PT0gMjU1KSB7XG4gICAgICBpdi53cml0ZVVJbnQ4KDAsIGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbSsrXG4gICAgICBpdi53cml0ZVVJbnQ4KGl0ZW0sIGxlbilcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluY3IzMlxuIiwidmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxuXG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgdmFyIGRhdGEgPSB4b3IoYmxvY2ssIHNlbGYuX3ByZXYpXG5cbiAgc2VsZi5fcHJldiA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soZGF0YSlcbiAgcmV0dXJuIHNlbGYuX3ByZXZcbn1cblxuZXhwb3J0cy5kZWNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGJsb2NrKSB7XG4gIHZhciBwYWQgPSBzZWxmLl9wcmV2XG5cbiAgc2VsZi5fcHJldiA9IGJsb2NrXG4gIHZhciBvdXQgPSBzZWxmLl9jaXBoZXIuZGVjcnlwdEJsb2NrKGJsb2NrKVxuXG4gIHJldHVybiB4b3Iob3V0LCBwYWQpXG59XG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciB4b3IgPSByZXF1aXJlKCdidWZmZXIteG9yJylcblxuZnVuY3Rpb24gZW5jcnlwdFN0YXJ0IChzZWxmLCBkYXRhLCBkZWNyeXB0KSB7XG4gIHZhciBsZW4gPSBkYXRhLmxlbmd0aFxuICB2YXIgb3V0ID0geG9yKGRhdGEsIHNlbGYuX2NhY2hlKVxuICBzZWxmLl9jYWNoZSA9IHNlbGYuX2NhY2hlLnNsaWNlKGxlbilcbiAgc2VsZi5fcHJldiA9IEJ1ZmZlci5jb25jYXQoW3NlbGYuX3ByZXYsIGRlY3J5cHQgPyBkYXRhIDogb3V0XSlcbiAgcmV0dXJuIG91dFxufVxuXG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgZGF0YSwgZGVjcnlwdCkge1xuICB2YXIgb3V0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKDApXG4gIHZhciBsZW5cblxuICB3aGlsZSAoZGF0YS5sZW5ndGgpIHtcbiAgICBpZiAoc2VsZi5fY2FjaGUubGVuZ3RoID09PSAwKSB7XG4gICAgICBzZWxmLl9jYWNoZSA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soc2VsZi5fcHJldilcbiAgICAgIHNlbGYuX3ByZXYgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMClcbiAgICB9XG5cbiAgICBpZiAoc2VsZi5fY2FjaGUubGVuZ3RoIDw9IGRhdGEubGVuZ3RoKSB7XG4gICAgICBsZW4gPSBzZWxmLl9jYWNoZS5sZW5ndGhcbiAgICAgIG91dCA9IEJ1ZmZlci5jb25jYXQoW291dCwgZW5jcnlwdFN0YXJ0KHNlbGYsIGRhdGEuc2xpY2UoMCwgbGVuKSwgZGVjcnlwdCldKVxuICAgICAgZGF0YSA9IGRhdGEuc2xpY2UobGVuKVxuICAgIH0gZWxzZSB7XG4gICAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFtvdXQsIGVuY3J5cHRTdGFydChzZWxmLCBkYXRhLCBkZWNyeXB0KV0pXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXRcbn1cbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG5mdW5jdGlvbiBlbmNyeXB0Qnl0ZSAoc2VsZiwgYnl0ZVBhcmFtLCBkZWNyeXB0KSB7XG4gIHZhciBwYWRcbiAgdmFyIGkgPSAtMVxuICB2YXIgbGVuID0gOFxuICB2YXIgb3V0ID0gMFxuICB2YXIgYml0LCB2YWx1ZVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgcGFkID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgIGJpdCA9IChieXRlUGFyYW0gJiAoMSA8PCAoNyAtIGkpKSkgPyAweDgwIDogMFxuICAgIHZhbHVlID0gcGFkWzBdIF4gYml0XG4gICAgb3V0ICs9ICgodmFsdWUgJiAweDgwKSA+PiAoaSAlIDgpKVxuICAgIHNlbGYuX3ByZXYgPSBzaGlmdEluKHNlbGYuX3ByZXYsIGRlY3J5cHQgPyBiaXQgOiB2YWx1ZSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIHNoaWZ0SW4gKGJ1ZmZlciwgdmFsdWUpIHtcbiAgdmFyIGxlbiA9IGJ1ZmZlci5sZW5ndGhcbiAgdmFyIGkgPSAtMVxuICB2YXIgb3V0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJ1ZmZlci5sZW5ndGgpXG4gIGJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW2J1ZmZlciwgQnVmZmVyLmZyb20oW3ZhbHVlXSldKVxuXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXRbaV0gPSBidWZmZXJbaV0gPDwgMSB8IGJ1ZmZlcltpICsgMV0gPj4gKDcpXG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaywgZGVjcnlwdCkge1xuICB2YXIgbGVuID0gY2h1bmsubGVuZ3RoXG4gIHZhciBvdXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobGVuKVxuICB2YXIgaSA9IC0xXG5cbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIG91dFtpXSA9IGVuY3J5cHRCeXRlKHNlbGYsIGNodW5rW2ldLCBkZWNyeXB0KVxuICB9XG5cbiAgcmV0dXJuIG91dFxufVxuIiwidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbmZ1bmN0aW9uIGVuY3J5cHRCeXRlIChzZWxmLCBieXRlUGFyYW0sIGRlY3J5cHQpIHtcbiAgdmFyIHBhZCA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soc2VsZi5fcHJldilcbiAgdmFyIG91dCA9IHBhZFswXSBeIGJ5dGVQYXJhbVxuXG4gIHNlbGYuX3ByZXYgPSBCdWZmZXIuY29uY2F0KFtcbiAgICBzZWxmLl9wcmV2LnNsaWNlKDEpLFxuICAgIEJ1ZmZlci5mcm9tKFtkZWNyeXB0ID8gYnl0ZVBhcmFtIDogb3V0XSlcbiAgXSlcblxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaywgZGVjcnlwdCkge1xuICB2YXIgbGVuID0gY2h1bmsubGVuZ3RoXG4gIHZhciBvdXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobGVuKVxuICB2YXIgaSA9IC0xXG5cbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIG91dFtpXSA9IGVuY3J5cHRCeXRlKHNlbGYsIGNodW5rW2ldLCBkZWNyeXB0KVxuICB9XG5cbiAgcmV0dXJuIG91dFxufVxuIiwidmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgaW5jcjMyID0gcmVxdWlyZSgnLi4vaW5jcjMyJylcblxuZnVuY3Rpb24gZ2V0QmxvY2sgKHNlbGYpIHtcbiAgdmFyIG91dCA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2tSYXcoc2VsZi5fcHJldilcbiAgaW5jcjMyKHNlbGYuX3ByZXYpXG4gIHJldHVybiBvdXRcbn1cblxudmFyIGJsb2NrU2l6ZSA9IDE2XG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgY2h1bmspIHtcbiAgdmFyIGNodW5rTnVtID0gTWF0aC5jZWlsKGNodW5rLmxlbmd0aCAvIGJsb2NrU2l6ZSlcbiAgdmFyIHN0YXJ0ID0gc2VsZi5fY2FjaGUubGVuZ3RoXG4gIHNlbGYuX2NhY2hlID0gQnVmZmVyLmNvbmNhdChbXG4gICAgc2VsZi5fY2FjaGUsXG4gICAgQnVmZmVyLmFsbG9jVW5zYWZlKGNodW5rTnVtICogYmxvY2tTaXplKVxuICBdKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNodW5rTnVtOyBpKyspIHtcbiAgICB2YXIgb3V0ID0gZ2V0QmxvY2soc2VsZilcbiAgICB2YXIgb2Zmc2V0ID0gc3RhcnQgKyBpICogYmxvY2tTaXplXG4gICAgc2VsZi5fY2FjaGUud3JpdGVVSW50MzJCRShvdXRbMF0sIG9mZnNldCArIDApXG4gICAgc2VsZi5fY2FjaGUud3JpdGVVSW50MzJCRShvdXRbMV0sIG9mZnNldCArIDQpXG4gICAgc2VsZi5fY2FjaGUud3JpdGVVSW50MzJCRShvdXRbMl0sIG9mZnNldCArIDgpXG4gICAgc2VsZi5fY2FjaGUud3JpdGVVSW50MzJCRShvdXRbM10sIG9mZnNldCArIDEyKVxuICB9XG4gIHZhciBwYWQgPSBzZWxmLl9jYWNoZS5zbGljZSgwLCBjaHVuay5sZW5ndGgpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UoY2h1bmsubGVuZ3RoKVxuICByZXR1cm4geG9yKGNodW5rLCBwYWQpXG59XG4iLCJleHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soYmxvY2spXG59XG5cbmV4cG9ydHMuZGVjcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBibG9jaykge1xuICByZXR1cm4gc2VsZi5fY2lwaGVyLmRlY3J5cHRCbG9jayhibG9jaylcbn1cbiIsInZhciBtb2RlTW9kdWxlcyA9IHtcbiAgRUNCOiByZXF1aXJlKCcuL2VjYicpLFxuICBDQkM6IHJlcXVpcmUoJy4vY2JjJyksXG4gIENGQjogcmVxdWlyZSgnLi9jZmInKSxcbiAgQ0ZCODogcmVxdWlyZSgnLi9jZmI4JyksXG4gIENGQjE6IHJlcXVpcmUoJy4vY2ZiMScpLFxuICBPRkI6IHJlcXVpcmUoJy4vb2ZiJyksXG4gIENUUjogcmVxdWlyZSgnLi9jdHInKSxcbiAgR0NNOiByZXF1aXJlKCcuL2N0cicpXG59XG5cbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbGlzdC5qc29uJylcblxuZm9yICh2YXIga2V5IGluIG1vZGVzKSB7XG4gIG1vZGVzW2tleV0ubW9kdWxlID0gbW9kZU1vZHVsZXNbbW9kZXNba2V5XS5tb2RlXVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1vZGVzXG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG5cbiAgdmFyIHBhZCA9IHNlbGYuX2NhY2hlLnNsaWNlKDAsIGNodW5rLmxlbmd0aClcbiAgc2VsZi5fY2FjaGUgPSBzZWxmLl9jYWNoZS5zbGljZShjaHVuay5sZW5ndGgpXG4gIHJldHVybiB4b3IoY2h1bmssIHBhZClcbn1cbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbmZ1bmN0aW9uIFN0cmVhbUNpcGhlciAobW9kZSwga2V5LCBpdiwgZGVjcnlwdCkge1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuXG4gIHRoaXMuX2NpcGhlciA9IG5ldyBhZXMuQUVTKGtleSlcbiAgdGhpcy5fcHJldiA9IEJ1ZmZlci5mcm9tKGl2KVxuICB0aGlzLl9jYWNoZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxuICB0aGlzLl9zZWNDYWNoZSA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxuICB0aGlzLl9kZWNyeXB0ID0gZGVjcnlwdFxuICB0aGlzLl9tb2RlID0gbW9kZVxufVxuXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcblxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIHJldHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcywgY2h1bmssIHRoaXMuX2RlY3J5cHQpXG59XG5cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9jaXBoZXIuc2NydWIoKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0cmVhbUNpcGhlclxuIiwidmFyIERFUyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzJylcbnZhciBhZXMgPSByZXF1aXJlKCdicm93c2VyaWZ5LWFlcy9icm93c2VyJylcbnZhciBhZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL21vZGVzJylcbnZhciBkZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzL21vZGVzJylcbnZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxuXG5mdW5jdGlvbiBjcmVhdGVDaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICBzdWl0ZSA9IHN1aXRlLnRvTG93ZXJDYXNlKClcblxuICB2YXIga2V5TGVuLCBpdkxlblxuICBpZiAoYWVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gYWVzTW9kZXNbc3VpdGVdLmtleVxuICAgIGl2TGVuID0gYWVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gZGVzTW9kZXNbc3VpdGVdLmtleSAqIDhcbiAgICBpdkxlbiA9IGRlc01vZGVzW3N1aXRlXS5pdlxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cblxuICB2YXIga2V5cyA9IGVidGsocGFzc3dvcmQsIGZhbHNlLCBrZXlMZW4sIGl2TGVuKVxuICByZXR1cm4gY3JlYXRlQ2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEZWNpcGhlciAoc3VpdGUsIHBhc3N3b3JkKSB7XG4gIHN1aXRlID0gc3VpdGUudG9Mb3dlckNhc2UoKVxuXG4gIHZhciBrZXlMZW4sIGl2TGVuXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0ua2V5XG4gICAgaXZMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0uaXZcbiAgfSBlbHNlIGlmIChkZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBkZXNNb2Rlc1tzdWl0ZV0ua2V5ICogOFxuICAgIGl2TGVuID0gZGVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuXG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGtleUxlbiwgaXZMZW4pXG4gIHJldHVybiBjcmVhdGVEZWNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2lwaGVyaXYgKHN1aXRlLCBrZXksIGl2KSB7XG4gIHN1aXRlID0gc3VpdGUudG9Mb3dlckNhc2UoKVxuICBpZiAoYWVzTW9kZXNbc3VpdGVdKSByZXR1cm4gYWVzLmNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXksIGl2KVxuICBpZiAoZGVzTW9kZXNbc3VpdGVdKSByZXR1cm4gbmV3IERFUyh7IGtleToga2V5LCBpdjogaXYsIG1vZGU6IHN1aXRlIH0pXG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXJpdiAoc3VpdGUsIGtleSwgaXYpIHtcbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHJldHVybiBhZXMuY3JlYXRlRGVjaXBoZXJpdihzdWl0ZSwga2V5LCBpdilcbiAgaWYgKGRlc01vZGVzW3N1aXRlXSkgcmV0dXJuIG5ldyBERVMoeyBrZXk6IGtleSwgaXY6IGl2LCBtb2RlOiBzdWl0ZSwgZGVjcnlwdDogdHJ1ZSB9KVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG59XG5cbmZ1bmN0aW9uIGdldENpcGhlcnMgKCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVzTW9kZXMpLmNvbmNhdChhZXMuZ2V0Q2lwaGVycygpKVxufVxuXG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGV4cG9ydHMuQ2lwaGVyID0gY3JlYXRlQ2lwaGVyXG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gZXhwb3J0cy5DaXBoZXJpdiA9IGNyZWF0ZUNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyID0gZXhwb3J0cy5EZWNpcGhlciA9IGNyZWF0ZURlY2lwaGVyXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyaXYgPSBleHBvcnRzLkRlY2lwaGVyaXYgPSBjcmVhdGVEZWNpcGhlcml2XG5leHBvcnRzLmxpc3RDaXBoZXJzID0gZXhwb3J0cy5nZXRDaXBoZXJzID0gZ2V0Q2lwaGVyc1xuIiwidmFyIENpcGhlckJhc2UgPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG52YXIgZGVzID0gcmVxdWlyZSgnZGVzLmpzJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgbW9kZXMgPSB7XG4gICdkZXMtZWRlMy1jYmMnOiBkZXMuQ0JDLmluc3RhbnRpYXRlKGRlcy5FREUpLFxuICAnZGVzLWVkZTMnOiBkZXMuRURFLFxuICAnZGVzLWVkZS1jYmMnOiBkZXMuQ0JDLmluc3RhbnRpYXRlKGRlcy5FREUpLFxuICAnZGVzLWVkZSc6IGRlcy5FREUsXG4gICdkZXMtY2JjJzogZGVzLkNCQy5pbnN0YW50aWF0ZShkZXMuREVTKSxcbiAgJ2Rlcy1lY2InOiBkZXMuREVTXG59XG5tb2Rlcy5kZXMgPSBtb2Rlc1snZGVzLWNiYyddXG5tb2Rlcy5kZXMzID0gbW9kZXNbJ2Rlcy1lZGUzLWNiYyddXG5tb2R1bGUuZXhwb3J0cyA9IERFU1xuaW5oZXJpdHMoREVTLCBDaXBoZXJCYXNlKVxuZnVuY3Rpb24gREVTIChvcHRzKSB7XG4gIENpcGhlckJhc2UuY2FsbCh0aGlzKVxuICB2YXIgbW9kZU5hbWUgPSBvcHRzLm1vZGUudG9Mb3dlckNhc2UoKVxuICB2YXIgbW9kZSA9IG1vZGVzW21vZGVOYW1lXVxuICB2YXIgdHlwZVxuICBpZiAob3B0cy5kZWNyeXB0KSB7XG4gICAgdHlwZSA9ICdkZWNyeXB0J1xuICB9IGVsc2Uge1xuICAgIHR5cGUgPSAnZW5jcnlwdCdcbiAgfVxuICB2YXIga2V5ID0gb3B0cy5rZXlcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoa2V5KSkge1xuICAgIGtleSA9IEJ1ZmZlci5mcm9tKGtleSlcbiAgfVxuICBpZiAobW9kZU5hbWUgPT09ICdkZXMtZWRlJyB8fCBtb2RlTmFtZSA9PT0gJ2Rlcy1lZGUtY2JjJykge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwga2V5LnNsaWNlKDAsIDgpXSlcbiAgfVxuICB2YXIgaXYgPSBvcHRzLml2XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGl2KSkge1xuICAgIGl2ID0gQnVmZmVyLmZyb20oaXYpXG4gIH1cbiAgdGhpcy5fZGVzID0gbW9kZS5jcmVhdGUoe1xuICAgIGtleToga2V5LFxuICAgIGl2OiBpdixcbiAgICB0eXBlOiB0eXBlXG4gIH0pXG59XG5ERVMucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICByZXR1cm4gQnVmZmVyLmZyb20odGhpcy5fZGVzLnVwZGF0ZShkYXRhKSlcbn1cbkRFUy5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gQnVmZmVyLmZyb20odGhpcy5fZGVzLmZpbmFsKCkpXG59XG4iLCJleHBvcnRzWydkZXMtZWNiJ10gPSB7XG4gIGtleTogOCxcbiAgaXY6IDBcbn1cbmV4cG9ydHNbJ2Rlcy1jYmMnXSA9IGV4cG9ydHMuZGVzID0ge1xuICBrZXk6IDgsXG4gIGl2OiA4XG59XG5leHBvcnRzWydkZXMtZWRlMy1jYmMnXSA9IGV4cG9ydHMuZGVzMyA9IHtcbiAga2V5OiAyNCxcbiAgaXY6IDhcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUzJ10gPSB7XG4gIGtleTogMjQsXG4gIGl2OiAwXG59XG5leHBvcnRzWydkZXMtZWRlLWNiYyddID0ge1xuICBrZXk6IDE2LFxuICBpdjogOFxufVxuZXhwb3J0c1snZGVzLWVkZSddID0ge1xuICBrZXk6IDE2LFxuICBpdjogMFxufVxuIiwidmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKVxuXG5mdW5jdGlvbiBibGluZCAocHJpdikge1xuICB2YXIgciA9IGdldHIocHJpdilcbiAgdmFyIGJsaW5kZXIgPSByLnRvUmVkKEJOLm1vbnQocHJpdi5tb2R1bHVzKSkucmVkUG93KG5ldyBCTihwcml2LnB1YmxpY0V4cG9uZW50KSkuZnJvbVJlZCgpXG4gIHJldHVybiB7IGJsaW5kZXI6IGJsaW5kZXIsIHVuYmxpbmRlcjogci5pbnZtKHByaXYubW9kdWx1cykgfVxufVxuXG5mdW5jdGlvbiBnZXRyIChwcml2KSB7XG4gIHZhciBsZW4gPSBwcml2Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciByXG4gIGRvIHtcbiAgICByID0gbmV3IEJOKHJhbmRvbUJ5dGVzKGxlbikpXG4gIH0gd2hpbGUgKHIuY21wKHByaXYubW9kdWx1cykgPj0gMCB8fCAhci51bW9kKHByaXYucHJpbWUxKSB8fCAhci51bW9kKHByaXYucHJpbWUyKSlcbiAgcmV0dXJuIHJcbn1cblxuZnVuY3Rpb24gY3J0IChtc2csIHByaXYpIHtcbiAgdmFyIGJsaW5kcyA9IGJsaW5kKHByaXYpXG4gIHZhciBsZW4gPSBwcml2Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBibGluZGVkID0gbmV3IEJOKG1zZykubXVsKGJsaW5kcy5ibGluZGVyKS51bW9kKHByaXYubW9kdWx1cylcbiAgdmFyIGMxID0gYmxpbmRlZC50b1JlZChCTi5tb250KHByaXYucHJpbWUxKSlcbiAgdmFyIGMyID0gYmxpbmRlZC50b1JlZChCTi5tb250KHByaXYucHJpbWUyKSlcbiAgdmFyIHFpbnYgPSBwcml2LmNvZWZmaWNpZW50XG4gIHZhciBwID0gcHJpdi5wcmltZTFcbiAgdmFyIHEgPSBwcml2LnByaW1lMlxuICB2YXIgbTEgPSBjMS5yZWRQb3cocHJpdi5leHBvbmVudDEpLmZyb21SZWQoKVxuICB2YXIgbTIgPSBjMi5yZWRQb3cocHJpdi5leHBvbmVudDIpLmZyb21SZWQoKVxuICB2YXIgaCA9IG0xLmlzdWIobTIpLmltdWwocWludikudW1vZChwKS5pbXVsKHEpXG4gIHJldHVybiBtMi5pYWRkKGgpLmltdWwoYmxpbmRzLnVuYmxpbmRlcikudW1vZChwcml2Lm1vZHVsdXMpLnRvQXJyYXlMaWtlKEJ1ZmZlciwgJ2JlJywgbGVuKVxufVxuY3J0LmdldHIgPSBnZXRyXG5cbm1vZHVsZS5leHBvcnRzID0gY3J0XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vYnJvd3Nlci9hbGdvcml0aG1zLmpzb24nKVxuIiwidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgY3JlYXRlSGFzaCA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoJylcbnZhciBzdHJlYW0gPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0nKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIHNpZ24gPSByZXF1aXJlKCcuL3NpZ24nKVxudmFyIHZlcmlmeSA9IHJlcXVpcmUoJy4vdmVyaWZ5JylcblxudmFyIGFsZ29yaXRobXMgPSByZXF1aXJlKCcuL2FsZ29yaXRobXMuanNvbicpXG5PYmplY3Qua2V5cyhhbGdvcml0aG1zKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgYWxnb3JpdGhtc1trZXldLmlkID0gQnVmZmVyLmZyb20oYWxnb3JpdGhtc1trZXldLmlkLCAnaGV4JylcbiAgYWxnb3JpdGhtc1trZXkudG9Mb3dlckNhc2UoKV0gPSBhbGdvcml0aG1zW2tleV1cbn0pXG5cbmZ1bmN0aW9uIFNpZ24gKGFsZ29yaXRobSkge1xuICBzdHJlYW0uV3JpdGFibGUuY2FsbCh0aGlzKVxuXG4gIHZhciBkYXRhID0gYWxnb3JpdGhtc1thbGdvcml0aG1dXG4gIGlmICghZGF0YSkgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1lc3NhZ2UgZGlnZXN0JylcblxuICB0aGlzLl9oYXNoVHlwZSA9IGRhdGEuaGFzaFxuICB0aGlzLl9oYXNoID0gY3JlYXRlSGFzaChkYXRhLmhhc2gpXG4gIHRoaXMuX3RhZyA9IGRhdGEuaWRcbiAgdGhpcy5fc2lnblR5cGUgPSBkYXRhLnNpZ25cbn1cbmluaGVyaXRzKFNpZ24sIHN0cmVhbS5Xcml0YWJsZSlcblxuU2lnbi5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gX3dyaXRlIChkYXRhLCBfLCBkb25lKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG4gIGRvbmUoKVxufVxuXG5TaWduLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSBkYXRhID0gQnVmZmVyLmZyb20oZGF0YSwgZW5jKVxuXG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG4gIHJldHVybiB0aGlzXG59XG5cblNpZ24ucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduTWV0aG9kIChrZXksIGVuYykge1xuICB0aGlzLmVuZCgpXG4gIHZhciBoYXNoID0gdGhpcy5faGFzaC5kaWdlc3QoKVxuICB2YXIgc2lnID0gc2lnbihoYXNoLCBrZXksIHRoaXMuX2hhc2hUeXBlLCB0aGlzLl9zaWduVHlwZSwgdGhpcy5fdGFnKVxuXG4gIHJldHVybiBlbmMgPyBzaWcudG9TdHJpbmcoZW5jKSA6IHNpZ1xufVxuXG5mdW5jdGlvbiBWZXJpZnkgKGFsZ29yaXRobSkge1xuICBzdHJlYW0uV3JpdGFibGUuY2FsbCh0aGlzKVxuXG4gIHZhciBkYXRhID0gYWxnb3JpdGhtc1thbGdvcml0aG1dXG4gIGlmICghZGF0YSkgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1lc3NhZ2UgZGlnZXN0JylcblxuICB0aGlzLl9oYXNoID0gY3JlYXRlSGFzaChkYXRhLmhhc2gpXG4gIHRoaXMuX3RhZyA9IGRhdGEuaWRcbiAgdGhpcy5fc2lnblR5cGUgPSBkYXRhLnNpZ25cbn1cbmluaGVyaXRzKFZlcmlmeSwgc3RyZWFtLldyaXRhYmxlKVxuXG5WZXJpZnkucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIF93cml0ZSAoZGF0YSwgXywgZG9uZSkge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxuICBkb25lKClcbn1cblxuVmVyaWZ5LnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSBkYXRhID0gQnVmZmVyLmZyb20oZGF0YSwgZW5jKVxuXG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG4gIHJldHVybiB0aGlzXG59XG5cblZlcmlmeS5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5TWV0aG9kIChrZXksIHNpZywgZW5jKSB7XG4gIGlmICh0eXBlb2Ygc2lnID09PSAnc3RyaW5nJykgc2lnID0gQnVmZmVyLmZyb20oc2lnLCBlbmMpXG5cbiAgdGhpcy5lbmQoKVxuICB2YXIgaGFzaCA9IHRoaXMuX2hhc2guZGlnZXN0KClcbiAgcmV0dXJuIHZlcmlmeShzaWcsIGhhc2gsIGtleSwgdGhpcy5fc2lnblR5cGUsIHRoaXMuX3RhZylcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2lnbiAoYWxnb3JpdGhtKSB7XG4gIHJldHVybiBuZXcgU2lnbihhbGdvcml0aG0pXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVZlcmlmeSAoYWxnb3JpdGhtKSB7XG4gIHJldHVybiBuZXcgVmVyaWZ5KGFsZ29yaXRobSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFNpZ246IGNyZWF0ZVNpZ24sXG4gIFZlcmlmeTogY3JlYXRlVmVyaWZ5LFxuICBjcmVhdGVTaWduOiBjcmVhdGVTaWduLFxuICBjcmVhdGVWZXJpZnk6IGNyZWF0ZVZlcmlmeVxufVxuIiwiLy8gbXVjaCBvZiB0aGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L3NlbGYtc2lnbmVkL2Jsb2IvZ2gtcGFnZXMvbGliL3JzYS5qc1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgY3JlYXRlSG1hYyA9IHJlcXVpcmUoJ2NyZWF0ZS1obWFjJylcbnZhciBjcnQgPSByZXF1aXJlKCdicm93c2VyaWZ5LXJzYScpXG52YXIgRUMgPSByZXF1aXJlKCdlbGxpcHRpYycpLmVjXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpXG52YXIgcGFyc2VLZXlzID0gcmVxdWlyZSgncGFyc2UtYXNuMScpXG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi9jdXJ2ZXMuanNvbicpXG5cbmZ1bmN0aW9uIHNpZ24gKGhhc2gsIGtleSwgaGFzaFR5cGUsIHNpZ25UeXBlLCB0YWcpIHtcbiAgdmFyIHByaXYgPSBwYXJzZUtleXMoa2V5KVxuICBpZiAocHJpdi5jdXJ2ZSkge1xuICAgIC8vIHJzYSBrZXlzIGNhbiBiZSBpbnRlcnByZXRlZCBhcyBlY2RzYSBvbmVzIGluIG9wZW5zc2xcbiAgICBpZiAoc2lnblR5cGUgIT09ICdlY2RzYScgJiYgc2lnblR5cGUgIT09ICdlY2RzYS9yc2EnKSB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHByaXZhdGUga2V5IHR5cGUnKVxuICAgIHJldHVybiBlY1NpZ24oaGFzaCwgcHJpdilcbiAgfSBlbHNlIGlmIChwcml2LnR5cGUgPT09ICdkc2EnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZHNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgICByZXR1cm4gZHNhU2lnbihoYXNoLCBwcml2LCBoYXNoVHlwZSlcbiAgfSBlbHNlIHtcbiAgICBpZiAoc2lnblR5cGUgIT09ICdyc2EnICYmIHNpZ25UeXBlICE9PSAnZWNkc2EvcnNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgfVxuICBoYXNoID0gQnVmZmVyLmNvbmNhdChbdGFnLCBoYXNoXSlcbiAgdmFyIGxlbiA9IHByaXYubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgdmFyIHBhZCA9IFswLCAxXVxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMSA8IGxlbikgcGFkLnB1c2goMHhmZilcbiAgcGFkLnB1c2goMHgwMClcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgaGFzaC5sZW5ndGgpIHBhZC5wdXNoKGhhc2hbaV0pXG5cbiAgdmFyIG91dCA9IGNydChwYWQsIHByaXYpXG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gZWNTaWduIChoYXNoLCBwcml2KSB7XG4gIHZhciBjdXJ2ZUlkID0gY3VydmVzW3ByaXYuY3VydmUuam9pbignLicpXVxuICBpZiAoIWN1cnZlSWQpIHRocm93IG5ldyBFcnJvcigndW5rbm93biBjdXJ2ZSAnICsgcHJpdi5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBrZXkgPSBjdXJ2ZS5rZXlGcm9tUHJpdmF0ZShwcml2LnByaXZhdGVLZXkpXG4gIHZhciBvdXQgPSBrZXkuc2lnbihoYXNoKVxuXG4gIHJldHVybiBCdWZmZXIuZnJvbShvdXQudG9ERVIoKSlcbn1cblxuZnVuY3Rpb24gZHNhU2lnbiAoaGFzaCwgcHJpdiwgYWxnbykge1xuICB2YXIgeCA9IHByaXYucGFyYW1zLnByaXZfa2V5XG4gIHZhciBwID0gcHJpdi5wYXJhbXMucFxuICB2YXIgcSA9IHByaXYucGFyYW1zLnFcbiAgdmFyIGcgPSBwcml2LnBhcmFtcy5nXG4gIHZhciByID0gbmV3IEJOKDApXG4gIHZhciBrXG4gIHZhciBIID0gYml0czJpbnQoaGFzaCwgcSkubW9kKHEpXG4gIHZhciBzID0gZmFsc2VcbiAgdmFyIGt2ID0gZ2V0S2V5KHgsIHEsIGhhc2gsIGFsZ28pXG4gIHdoaWxlIChzID09PSBmYWxzZSkge1xuICAgIGsgPSBtYWtlS2V5KHEsIGt2LCBhbGdvKVxuICAgIHIgPSBtYWtlUihnLCBrLCBwLCBxKVxuICAgIHMgPSBrLmludm0ocSkuaW11bChILmFkZCh4Lm11bChyKSkpLm1vZChxKVxuICAgIGlmIChzLmNtcG4oMCkgPT09IDApIHtcbiAgICAgIHMgPSBmYWxzZVxuICAgICAgciA9IG5ldyBCTigwKVxuICAgIH1cbiAgfVxuICByZXR1cm4gdG9ERVIociwgcylcbn1cblxuZnVuY3Rpb24gdG9ERVIgKHIsIHMpIHtcbiAgciA9IHIudG9BcnJheSgpXG4gIHMgPSBzLnRvQXJyYXkoKVxuXG4gIC8vIFBhZCB2YWx1ZXNcbiAgaWYgKHJbMF0gJiAweDgwKSByID0gWzBdLmNvbmNhdChyKVxuICBpZiAoc1swXSAmIDB4ODApIHMgPSBbMF0uY29uY2F0KHMpXG5cbiAgdmFyIHRvdGFsID0gci5sZW5ndGggKyBzLmxlbmd0aCArIDRcbiAgdmFyIHJlcyA9IFsweDMwLCB0b3RhbCwgMHgwMiwgci5sZW5ndGhdXG4gIHJlcyA9IHJlcy5jb25jYXQociwgWzB4MDIsIHMubGVuZ3RoXSwgcylcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKHJlcylcbn1cblxuZnVuY3Rpb24gZ2V0S2V5ICh4LCBxLCBoYXNoLCBhbGdvKSB7XG4gIHggPSBCdWZmZXIuZnJvbSh4LnRvQXJyYXkoKSlcbiAgaWYgKHgubGVuZ3RoIDwgcS5ieXRlTGVuZ3RoKCkpIHtcbiAgICB2YXIgemVyb3MgPSBCdWZmZXIuYWxsb2MocS5ieXRlTGVuZ3RoKCkgLSB4Lmxlbmd0aClcbiAgICB4ID0gQnVmZmVyLmNvbmNhdChbemVyb3MsIHhdKVxuICB9XG4gIHZhciBobGVuID0gaGFzaC5sZW5ndGhcbiAgdmFyIGhiaXRzID0gYml0czJvY3RldHMoaGFzaCwgcSlcbiAgdmFyIHYgPSBCdWZmZXIuYWxsb2MoaGxlbilcbiAgdi5maWxsKDEpXG4gIHZhciBrID0gQnVmZmVyLmFsbG9jKGhsZW4pXG4gIGsgPSBjcmVhdGVIbWFjKGFsZ28sIGspLnVwZGF0ZSh2KS51cGRhdGUoQnVmZmVyLmZyb20oWzBdKSkudXBkYXRlKHgpLnVwZGF0ZShoYml0cykuZGlnZXN0KClcbiAgdiA9IGNyZWF0ZUhtYWMoYWxnbywgaykudXBkYXRlKHYpLmRpZ2VzdCgpXG4gIGsgPSBjcmVhdGVIbWFjKGFsZ28sIGspLnVwZGF0ZSh2KS51cGRhdGUoQnVmZmVyLmZyb20oWzFdKSkudXBkYXRlKHgpLnVwZGF0ZShoYml0cykuZGlnZXN0KClcbiAgdiA9IGNyZWF0ZUhtYWMoYWxnbywgaykudXBkYXRlKHYpLmRpZ2VzdCgpXG4gIHJldHVybiB7IGs6IGssIHY6IHYgfVxufVxuXG5mdW5jdGlvbiBiaXRzMmludCAob2JpdHMsIHEpIHtcbiAgdmFyIGJpdHMgPSBuZXcgQk4ob2JpdHMpXG4gIHZhciBzaGlmdCA9IChvYml0cy5sZW5ndGggPDwgMykgLSBxLmJpdExlbmd0aCgpXG4gIGlmIChzaGlmdCA+IDApIGJpdHMuaXNocm4oc2hpZnQpXG4gIHJldHVybiBiaXRzXG59XG5cbmZ1bmN0aW9uIGJpdHMyb2N0ZXRzIChiaXRzLCBxKSB7XG4gIGJpdHMgPSBiaXRzMmludChiaXRzLCBxKVxuICBiaXRzID0gYml0cy5tb2QocSlcbiAgdmFyIG91dCA9IEJ1ZmZlci5mcm9tKGJpdHMudG9BcnJheSgpKVxuICBpZiAob3V0Lmxlbmd0aCA8IHEuYnl0ZUxlbmd0aCgpKSB7XG4gICAgdmFyIHplcm9zID0gQnVmZmVyLmFsbG9jKHEuYnl0ZUxlbmd0aCgpIC0gb3V0Lmxlbmd0aClcbiAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFt6ZXJvcywgb3V0XSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIG1ha2VLZXkgKHEsIGt2LCBhbGdvKSB7XG4gIHZhciB0XG4gIHZhciBrXG5cbiAgZG8ge1xuICAgIHQgPSBCdWZmZXIuYWxsb2MoMClcblxuICAgIHdoaWxlICh0Lmxlbmd0aCAqIDggPCBxLmJpdExlbmd0aCgpKSB7XG4gICAgICBrdi52ID0gY3JlYXRlSG1hYyhhbGdvLCBrdi5rKS51cGRhdGUoa3YudikuZGlnZXN0KClcbiAgICAgIHQgPSBCdWZmZXIuY29uY2F0KFt0LCBrdi52XSlcbiAgICB9XG5cbiAgICBrID0gYml0czJpbnQodCwgcSlcbiAgICBrdi5rID0gY3JlYXRlSG1hYyhhbGdvLCBrdi5rKS51cGRhdGUoa3YudikudXBkYXRlKEJ1ZmZlci5mcm9tKFswXSkpLmRpZ2VzdCgpXG4gICAga3YudiA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaykudXBkYXRlKGt2LnYpLmRpZ2VzdCgpXG4gIH0gd2hpbGUgKGsuY21wKHEpICE9PSAtMSlcblxuICByZXR1cm4ga1xufVxuXG5mdW5jdGlvbiBtYWtlUiAoZywgaywgcCwgcSkge1xuICByZXR1cm4gZy50b1JlZChCTi5tb250KHApKS5yZWRQb3coaykuZnJvbVJlZCgpLm1vZChxKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNpZ25cbm1vZHVsZS5leHBvcnRzLmdldEtleSA9IGdldEtleVxubW9kdWxlLmV4cG9ydHMubWFrZUtleSA9IG1ha2VLZXlcbiIsIi8vIG11Y2ggb2YgdGhpcyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9zZWxmLXNpZ25lZC9ibG9iL2doLXBhZ2VzL2xpYi9yc2EuanNcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIEVDID0gcmVxdWlyZSgnZWxsaXB0aWMnKS5lY1xudmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKVxudmFyIGN1cnZlcyA9IHJlcXVpcmUoJy4vY3VydmVzLmpzb24nKVxuXG5mdW5jdGlvbiB2ZXJpZnkgKHNpZywgaGFzaCwga2V5LCBzaWduVHlwZSwgdGFnKSB7XG4gIHZhciBwdWIgPSBwYXJzZUtleXMoa2V5KVxuICBpZiAocHViLnR5cGUgPT09ICdlYycpIHtcbiAgICAvLyByc2Ega2V5cyBjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgZWNkc2Egb25lcyBpbiBvcGVuc3NsXG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZWNkc2EnICYmIHNpZ25UeXBlICE9PSAnZWNkc2EvcnNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwdWJsaWMga2V5IHR5cGUnKVxuICAgIHJldHVybiBlY1ZlcmlmeShzaWcsIGhhc2gsIHB1YilcbiAgfSBlbHNlIGlmIChwdWIudHlwZSA9PT0gJ2RzYScpIHtcbiAgICBpZiAoc2lnblR5cGUgIT09ICdkc2EnKSB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHB1YmxpYyBrZXkgdHlwZScpXG4gICAgcmV0dXJuIGRzYVZlcmlmeShzaWcsIGhhc2gsIHB1YilcbiAgfSBlbHNlIHtcbiAgICBpZiAoc2lnblR5cGUgIT09ICdyc2EnICYmIHNpZ25UeXBlICE9PSAnZWNkc2EvcnNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwdWJsaWMga2V5IHR5cGUnKVxuICB9XG4gIGhhc2ggPSBCdWZmZXIuY29uY2F0KFt0YWcsIGhhc2hdKVxuICB2YXIgbGVuID0gcHViLm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBwYWQgPSBbMV1cbiAgdmFyIHBhZE51bSA9IDBcbiAgd2hpbGUgKGhhc2gubGVuZ3RoICsgcGFkLmxlbmd0aCArIDIgPCBsZW4pIHtcbiAgICBwYWQucHVzaCgweGZmKVxuICAgIHBhZE51bSsrXG4gIH1cbiAgcGFkLnB1c2goMHgwMClcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgaGFzaC5sZW5ndGgpIHtcbiAgICBwYWQucHVzaChoYXNoW2ldKVxuICB9XG4gIHBhZCA9IEJ1ZmZlci5mcm9tKHBhZClcbiAgdmFyIHJlZCA9IEJOLm1vbnQocHViLm1vZHVsdXMpXG4gIHNpZyA9IG5ldyBCTihzaWcpLnRvUmVkKHJlZClcblxuICBzaWcgPSBzaWcucmVkUG93KG5ldyBCTihwdWIucHVibGljRXhwb25lbnQpKVxuICBzaWcgPSBCdWZmZXIuZnJvbShzaWcuZnJvbVJlZCgpLnRvQXJyYXkoKSlcbiAgdmFyIG91dCA9IHBhZE51bSA8IDggPyAxIDogMFxuICBsZW4gPSBNYXRoLm1pbihzaWcubGVuZ3RoLCBwYWQubGVuZ3RoKVxuICBpZiAoc2lnLmxlbmd0aCAhPT0gcGFkLmxlbmd0aCkgb3V0ID0gMVxuXG4gIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSBvdXQgfD0gc2lnW2ldIF4gcGFkW2ldXG4gIHJldHVybiBvdXQgPT09IDBcbn1cblxuZnVuY3Rpb24gZWNWZXJpZnkgKHNpZywgaGFzaCwgcHViKSB7XG4gIHZhciBjdXJ2ZUlkID0gY3VydmVzW3B1Yi5kYXRhLmFsZ29yaXRobS5jdXJ2ZS5qb2luKCcuJyldXG4gIGlmICghY3VydmVJZCkgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGN1cnZlICcgKyBwdWIuZGF0YS5hbGdvcml0aG0uY3VydmUuam9pbignLicpKVxuXG4gIHZhciBjdXJ2ZSA9IG5ldyBFQyhjdXJ2ZUlkKVxuICB2YXIgcHVia2V5ID0gcHViLmRhdGEuc3ViamVjdFByaXZhdGVLZXkuZGF0YVxuXG4gIHJldHVybiBjdXJ2ZS52ZXJpZnkoaGFzaCwgc2lnLCBwdWJrZXkpXG59XG5cbmZ1bmN0aW9uIGRzYVZlcmlmeSAoc2lnLCBoYXNoLCBwdWIpIHtcbiAgdmFyIHAgPSBwdWIuZGF0YS5wXG4gIHZhciBxID0gcHViLmRhdGEucVxuICB2YXIgZyA9IHB1Yi5kYXRhLmdcbiAgdmFyIHkgPSBwdWIuZGF0YS5wdWJfa2V5XG4gIHZhciB1bnBhY2tlZCA9IHBhcnNlS2V5cy5zaWduYXR1cmUuZGVjb2RlKHNpZywgJ2RlcicpXG4gIHZhciBzID0gdW5wYWNrZWQuc1xuICB2YXIgciA9IHVucGFja2VkLnJcbiAgY2hlY2tWYWx1ZShzLCBxKVxuICBjaGVja1ZhbHVlKHIsIHEpXG4gIHZhciBtb250cCA9IEJOLm1vbnQocClcbiAgdmFyIHcgPSBzLmludm0ocSlcbiAgdmFyIHYgPSBnLnRvUmVkKG1vbnRwKVxuICAgIC5yZWRQb3cobmV3IEJOKGhhc2gpLm11bCh3KS5tb2QocSkpXG4gICAgLmZyb21SZWQoKVxuICAgIC5tdWwoeS50b1JlZChtb250cCkucmVkUG93KHIubXVsKHcpLm1vZChxKSkuZnJvbVJlZCgpKVxuICAgIC5tb2QocClcbiAgICAubW9kKHEpXG4gIHJldHVybiB2LmNtcChyKSA9PT0gMFxufVxuXG5mdW5jdGlvbiBjaGVja1ZhbHVlIChiLCBxKSB7XG4gIGlmIChiLmNtcG4oMCkgPD0gMCkgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHNpZycpXG4gIGlmIChiLmNtcChxKSA+PSBxKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2lnJylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJpZnlcbiIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludCBjYW1lbGNhc2U6IFwib2ZmXCIgKi9cblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpO1xuXG52YXIgWnN0cmVhbSA9IHJlcXVpcmUoJ3Bha28vbGliL3psaWIvenN0cmVhbScpO1xudmFyIHpsaWJfZGVmbGF0ZSA9IHJlcXVpcmUoJ3Bha28vbGliL3psaWIvZGVmbGF0ZS5qcycpO1xudmFyIHpsaWJfaW5mbGF0ZSA9IHJlcXVpcmUoJ3Bha28vbGliL3psaWIvaW5mbGF0ZS5qcycpO1xudmFyIGNvbnN0YW50cyA9IHJlcXVpcmUoJ3Bha28vbGliL3psaWIvY29uc3RhbnRzJyk7XG5cbmZvciAodmFyIGtleSBpbiBjb25zdGFudHMpIHtcbiAgZXhwb3J0c1trZXldID0gY29uc3RhbnRzW2tleV07XG59XG5cbi8vIHpsaWIgbW9kZXNcbmV4cG9ydHMuTk9ORSA9IDA7XG5leHBvcnRzLkRFRkxBVEUgPSAxO1xuZXhwb3J0cy5JTkZMQVRFID0gMjtcbmV4cG9ydHMuR1pJUCA9IDM7XG5leHBvcnRzLkdVTlpJUCA9IDQ7XG5leHBvcnRzLkRFRkxBVEVSQVcgPSA1O1xuZXhwb3J0cy5JTkZMQVRFUkFXID0gNjtcbmV4cG9ydHMuVU5aSVAgPSA3O1xuXG52YXIgR1pJUF9IRUFERVJfSUQxID0gMHgxZjtcbnZhciBHWklQX0hFQURFUl9JRDIgPSAweDhiO1xuXG4vKipcbiAqIEVtdWxhdGUgTm9kZSdzIHpsaWIgQysrIGxheWVyIGZvciB1c2UgYnkgdGhlIEpTIGxheWVyIGluIGluZGV4LmpzXG4gKi9cbmZ1bmN0aW9uIFpsaWIobW9kZSkge1xuICBpZiAodHlwZW9mIG1vZGUgIT09ICdudW1iZXInIHx8IG1vZGUgPCBleHBvcnRzLkRFRkxBVEUgfHwgbW9kZSA+IGV4cG9ydHMuVU5aSVApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCYWQgYXJndW1lbnQnKTtcbiAgfVxuXG4gIHRoaXMuZGljdGlvbmFyeSA9IG51bGw7XG4gIHRoaXMuZXJyID0gMDtcbiAgdGhpcy5mbHVzaCA9IDA7XG4gIHRoaXMuaW5pdF9kb25lID0gZmFsc2U7XG4gIHRoaXMubGV2ZWwgPSAwO1xuICB0aGlzLm1lbUxldmVsID0gMDtcbiAgdGhpcy5tb2RlID0gbW9kZTtcbiAgdGhpcy5zdHJhdGVneSA9IDA7XG4gIHRoaXMud2luZG93Qml0cyA9IDA7XG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSBmYWxzZTtcbiAgdGhpcy5wZW5kaW5nX2Nsb3NlID0gZmFsc2U7XG4gIHRoaXMuZ3ppcF9pZF9ieXRlc19yZWFkID0gMDtcbn1cblxuWmxpYi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLndyaXRlX2luX3Byb2dyZXNzKSB7XG4gICAgdGhpcy5wZW5kaW5nX2Nsb3NlID0gdHJ1ZTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLnBlbmRpbmdfY2xvc2UgPSBmYWxzZTtcblxuICBhc3NlcnQodGhpcy5pbml0X2RvbmUsICdjbG9zZSBiZWZvcmUgaW5pdCcpO1xuICBhc3NlcnQodGhpcy5tb2RlIDw9IGV4cG9ydHMuVU5aSVApO1xuXG4gIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuREVGTEFURSB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1pJUCB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuREVGTEFURVJBVykge1xuICAgIHpsaWJfZGVmbGF0ZS5kZWZsYXRlRW5kKHRoaXMuc3RybSk7XG4gIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBleHBvcnRzLklORkxBVEUgfHwgdGhpcy5tb2RlID09PSBleHBvcnRzLkdVTlpJUCB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuSU5GTEFURVJBVyB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuVU5aSVApIHtcbiAgICB6bGliX2luZmxhdGUuaW5mbGF0ZUVuZCh0aGlzLnN0cm0pO1xuICB9XG5cbiAgdGhpcy5tb2RlID0gZXhwb3J0cy5OT05FO1xuXG4gIHRoaXMuZGljdGlvbmFyeSA9IG51bGw7XG59O1xuXG5abGliLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pIHtcbiAgcmV0dXJuIHRoaXMuX3dyaXRlKHRydWUsIGZsdXNoLCBpbnB1dCwgaW5fb2ZmLCBpbl9sZW4sIG91dCwgb3V0X29mZiwgb3V0X2xlbik7XG59O1xuXG5abGliLnByb3RvdHlwZS53cml0ZVN5bmMgPSBmdW5jdGlvbiAoZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKSB7XG4gIHJldHVybiB0aGlzLl93cml0ZShmYWxzZSwgZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKTtcbn07XG5cblpsaWIucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChhc3luYywgZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKSB7XG4gIGFzc2VydC5lcXVhbChhcmd1bWVudHMubGVuZ3RoLCA4KTtcblxuICBhc3NlcnQodGhpcy5pbml0X2RvbmUsICd3cml0ZSBiZWZvcmUgaW5pdCcpO1xuICBhc3NlcnQodGhpcy5tb2RlICE9PSBleHBvcnRzLk5PTkUsICdhbHJlYWR5IGZpbmFsaXplZCcpO1xuICBhc3NlcnQuZXF1YWwoZmFsc2UsIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MsICd3cml0ZSBhbHJlYWR5IGluIHByb2dyZXNzJyk7XG4gIGFzc2VydC5lcXVhbChmYWxzZSwgdGhpcy5wZW5kaW5nX2Nsb3NlLCAnY2xvc2UgaXMgcGVuZGluZycpO1xuXG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSB0cnVlO1xuXG4gIGFzc2VydC5lcXVhbChmYWxzZSwgZmx1c2ggPT09IHVuZGVmaW5lZCwgJ211c3QgcHJvdmlkZSBmbHVzaCB2YWx1ZScpO1xuXG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSB0cnVlO1xuXG4gIGlmIChmbHVzaCAhPT0gZXhwb3J0cy5aX05PX0ZMVVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfUEFSVElBTF9GTFVTSCAmJiBmbHVzaCAhPT0gZXhwb3J0cy5aX1NZTkNfRkxVU0ggJiYgZmx1c2ggIT09IGV4cG9ydHMuWl9GVUxMX0ZMVVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfRklOSVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfQkxPQ0spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZmx1c2ggdmFsdWUnKTtcbiAgfVxuXG4gIGlmIChpbnB1dCA9PSBudWxsKSB7XG4gICAgaW5wdXQgPSBCdWZmZXIuYWxsb2MoMCk7XG4gICAgaW5fbGVuID0gMDtcbiAgICBpbl9vZmYgPSAwO1xuICB9XG5cbiAgdGhpcy5zdHJtLmF2YWlsX2luID0gaW5fbGVuO1xuICB0aGlzLnN0cm0uaW5wdXQgPSBpbnB1dDtcbiAgdGhpcy5zdHJtLm5leHRfaW4gPSBpbl9vZmY7XG4gIHRoaXMuc3RybS5hdmFpbF9vdXQgPSBvdXRfbGVuO1xuICB0aGlzLnN0cm0ub3V0cHV0ID0gb3V0O1xuICB0aGlzLnN0cm0ubmV4dF9vdXQgPSBvdXRfb2ZmO1xuICB0aGlzLmZsdXNoID0gZmx1c2g7XG5cbiAgaWYgKCFhc3luYykge1xuICAgIC8vIHN5bmMgdmVyc2lvblxuICAgIHRoaXMuX3Byb2Nlc3MoKTtcblxuICAgIGlmICh0aGlzLl9jaGVja0Vycm9yKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9hZnRlclN5bmMoKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gYXN5bmMgdmVyc2lvblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgIHNlbGYuX3Byb2Nlc3MoKTtcbiAgICBzZWxmLl9hZnRlcigpO1xuICB9KTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cblpsaWIucHJvdG90eXBlLl9hZnRlclN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBhdmFpbF9vdXQgPSB0aGlzLnN0cm0uYXZhaWxfb3V0O1xuICB2YXIgYXZhaWxfaW4gPSB0aGlzLnN0cm0uYXZhaWxfaW47XG5cbiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IGZhbHNlO1xuXG4gIHJldHVybiBbYXZhaWxfaW4sIGF2YWlsX291dF07XG59O1xuXG5abGliLnByb3RvdHlwZS5fcHJvY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPSBudWxsO1xuXG4gIC8vIElmIHRoZSBhdmFpbF9vdXQgaXMgbGVmdCBhdCAwLCB0aGVuIGl0IG1lYW5zIHRoYXQgaXQgcmFuIG91dFxuICAvLyBvZiByb29tLiAgSWYgdGhlcmUgd2FzIGF2YWlsX291dCBsZWZ0IG92ZXIsIHRoZW4gaXQgbWVhbnNcbiAgLy8gdGhhdCBhbGwgb2YgdGhlIGlucHV0IHdhcyBjb25zdW1lZC5cbiAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICBjYXNlIGV4cG9ydHMuREVGTEFURTpcbiAgICBjYXNlIGV4cG9ydHMuR1pJUDpcbiAgICBjYXNlIGV4cG9ydHMuREVGTEFURVJBVzpcbiAgICAgIHRoaXMuZXJyID0gemxpYl9kZWZsYXRlLmRlZmxhdGUodGhpcy5zdHJtLCB0aGlzLmZsdXNoKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgZXhwb3J0cy5VTlpJUDpcbiAgICAgIGlmICh0aGlzLnN0cm0uYXZhaWxfaW4gPiAwKSB7XG4gICAgICAgIG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPSB0aGlzLnN0cm0ubmV4dF9pbjtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoICh0aGlzLmd6aXBfaWRfYnl0ZXNfcmVhZCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgaWYgKG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnN0cm0uaW5wdXRbbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZV0gPT09IEdaSVBfSEVBREVSX0lEMSkge1xuICAgICAgICAgICAgdGhpcy5nemlwX2lkX2J5dGVzX3JlYWQgPSAxO1xuICAgICAgICAgICAgbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZSsrO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zdHJtLmF2YWlsX2luID09PSAxKSB7XG4gICAgICAgICAgICAgIC8vIFRoZSBvbmx5IGF2YWlsYWJsZSBieXRlIHdhcyBhbHJlYWR5IHJlYWQuXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1vZGUgPSBleHBvcnRzLklORkxBVEU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmIChuZXh0X2V4cGVjdGVkX2hlYWRlcl9ieXRlID09PSBudWxsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5zdHJtLmlucHV0W25leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGVdID09PSBHWklQX0hFQURFUl9JRDIpIHtcbiAgICAgICAgICAgIHRoaXMuZ3ppcF9pZF9ieXRlc19yZWFkID0gMjtcbiAgICAgICAgICAgIHRoaXMubW9kZSA9IGV4cG9ydHMuR1VOWklQO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBhY3R1YWwgZGlmZmVyZW5jZSBiZXR3ZWVuIElORkxBVEUgYW5kIElORkxBVEVSQVdcbiAgICAgICAgICAgIC8vIChhZnRlciBpbml0aWFsaXphdGlvbikuXG4gICAgICAgICAgICB0aGlzLm1vZGUgPSBleHBvcnRzLklORkxBVEU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIG51bWJlciBvZiBnemlwIG1hZ2ljIG51bWJlciBieXRlcyByZWFkJyk7XG4gICAgICB9XG5cbiAgICAvLyBmYWxsdGhyb3VnaFxuICAgIGNhc2UgZXhwb3J0cy5JTkZMQVRFOlxuICAgIGNhc2UgZXhwb3J0cy5HVU5aSVA6XG4gICAgY2FzZSBleHBvcnRzLklORkxBVEVSQVc6XG4gICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlKHRoaXMuc3RybSwgdGhpcy5mbHVzaFxuXG4gICAgICAvLyBJZiBkYXRhIHdhcyBlbmNvZGVkIHdpdGggZGljdGlvbmFyeVxuICAgICAgKTtpZiAodGhpcy5lcnIgPT09IGV4cG9ydHMuWl9ORUVEX0RJQ1QgJiYgdGhpcy5kaWN0aW9uYXJ5KSB7XG4gICAgICAgIC8vIExvYWQgaXRcbiAgICAgICAgdGhpcy5lcnIgPSB6bGliX2luZmxhdGUuaW5mbGF0ZVNldERpY3Rpb25hcnkodGhpcy5zdHJtLCB0aGlzLmRpY3Rpb25hcnkpO1xuICAgICAgICBpZiAodGhpcy5lcnIgPT09IGV4cG9ydHMuWl9PSykge1xuICAgICAgICAgIC8vIEFuZCB0cnkgdG8gZGVjb2RlIGFnYWluXG4gICAgICAgICAgdGhpcy5lcnIgPSB6bGliX2luZmxhdGUuaW5mbGF0ZSh0aGlzLnN0cm0sIHRoaXMuZmx1c2gpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZXJyID09PSBleHBvcnRzLlpfREFUQV9FUlJPUikge1xuICAgICAgICAgIC8vIEJvdGggaW5mbGF0ZVNldERpY3Rpb25hcnkoKSBhbmQgaW5mbGF0ZSgpIHJldHVybiBaX0RBVEFfRVJST1IuXG4gICAgICAgICAgLy8gTWFrZSBpdCBwb3NzaWJsZSBmb3IgQWZ0ZXIoKSB0byB0ZWxsIGEgYmFkIGRpY3Rpb25hcnkgZnJvbSBiYWRcbiAgICAgICAgICAvLyBpbnB1dC5cbiAgICAgICAgICB0aGlzLmVyciA9IGV4cG9ydHMuWl9ORUVEX0RJQ1Q7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdoaWxlICh0aGlzLnN0cm0uYXZhaWxfaW4gPiAwICYmIHRoaXMubW9kZSA9PT0gZXhwb3J0cy5HVU5aSVAgJiYgdGhpcy5lcnIgPT09IGV4cG9ydHMuWl9TVFJFQU1fRU5EICYmIHRoaXMuc3RybS5uZXh0X2luWzBdICE9PSAweDAwKSB7XG4gICAgICAgIC8vIEJ5dGVzIHJlbWFpbiBpbiBpbnB1dCBidWZmZXIuIFBlcmhhcHMgdGhpcyBpcyBhbm90aGVyIGNvbXByZXNzZWRcbiAgICAgICAgLy8gbWVtYmVyIGluIHRoZSBzYW1lIGFyY2hpdmUsIG9yIGp1c3QgdHJhaWxpbmcgZ2FyYmFnZS5cbiAgICAgICAgLy8gVHJhaWxpbmcgemVybyBieXRlcyBhcmUgb2theSwgdGhvdWdoLCBzaW5jZSB0aGV5IGFyZSBmcmVxdWVudGx5XG4gICAgICAgIC8vIHVzZWQgZm9yIHBhZGRpbmcuXG5cbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlKHRoaXMuc3RybSwgdGhpcy5mbHVzaCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1vZGUgJyArIHRoaXMubW9kZSk7XG4gIH1cbn07XG5cblpsaWIucHJvdG90eXBlLl9jaGVja0Vycm9yID0gZnVuY3Rpb24gKCkge1xuICAvLyBBY2NlcHRhYmxlIGVycm9yIHN0YXRlcyBkZXBlbmQgb24gdGhlIHR5cGUgb2YgemxpYiBzdHJlYW0uXG4gIHN3aXRjaCAodGhpcy5lcnIpIHtcbiAgICBjYXNlIGV4cG9ydHMuWl9PSzpcbiAgICBjYXNlIGV4cG9ydHMuWl9CVUZfRVJST1I6XG4gICAgICBpZiAodGhpcy5zdHJtLmF2YWlsX291dCAhPT0gMCAmJiB0aGlzLmZsdXNoID09PSBleHBvcnRzLlpfRklOSVNIKSB7XG4gICAgICAgIHRoaXMuX2Vycm9yKCd1bmV4cGVjdGVkIGVuZCBvZiBmaWxlJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgZXhwb3J0cy5aX1NUUkVBTV9FTkQ6XG4gICAgICAvLyBub3JtYWwgc3RhdHVzZXMsIG5vdCBmYXRhbFxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBleHBvcnRzLlpfTkVFRF9ESUNUOlxuICAgICAgaWYgKHRoaXMuZGljdGlvbmFyeSA9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2Vycm9yKCdNaXNzaW5nIGRpY3Rpb25hcnknKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2Vycm9yKCdCYWQgZGljdGlvbmFyeScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBzb21ldGhpbmcgZWxzZS5cbiAgICAgIHRoaXMuX2Vycm9yKCdabGliIGVycm9yJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cblpsaWIucHJvdG90eXBlLl9hZnRlciA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLl9jaGVja0Vycm9yKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgYXZhaWxfb3V0ID0gdGhpcy5zdHJtLmF2YWlsX291dDtcbiAgdmFyIGF2YWlsX2luID0gdGhpcy5zdHJtLmF2YWlsX2luO1xuXG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAvLyBjYWxsIHRoZSB3cml0ZSgpIGNiXG4gIHRoaXMuY2FsbGJhY2soYXZhaWxfaW4sIGF2YWlsX291dCk7XG5cbiAgaWYgKHRoaXMucGVuZGluZ19jbG9zZSkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxufTtcblxuWmxpYi5wcm90b3R5cGUuX2Vycm9yID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgaWYgKHRoaXMuc3RybS5tc2cpIHtcbiAgICBtZXNzYWdlID0gdGhpcy5zdHJtLm1zZztcbiAgfVxuICB0aGlzLm9uZXJyb3IobWVzc2FnZSwgdGhpcy5lcnJcblxuICAvLyBubyBob3BlIG9mIHJlc2N1ZS5cbiAgKTt0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gZmFsc2U7XG4gIGlmICh0aGlzLnBlbmRpbmdfY2xvc2UpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cbn07XG5cblpsaWIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAod2luZG93Qml0cywgbGV2ZWwsIG1lbUxldmVsLCBzdHJhdGVneSwgZGljdGlvbmFyeSkge1xuICBhc3NlcnQoYXJndW1lbnRzLmxlbmd0aCA9PT0gNCB8fCBhcmd1bWVudHMubGVuZ3RoID09PSA1LCAnaW5pdCh3aW5kb3dCaXRzLCBsZXZlbCwgbWVtTGV2ZWwsIHN0cmF0ZWd5LCBbZGljdGlvbmFyeV0pJyk7XG5cbiAgYXNzZXJ0KHdpbmRvd0JpdHMgPj0gOCAmJiB3aW5kb3dCaXRzIDw9IDE1LCAnaW52YWxpZCB3aW5kb3dCaXRzJyk7XG4gIGFzc2VydChsZXZlbCA+PSAtMSAmJiBsZXZlbCA8PSA5LCAnaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCcpO1xuXG4gIGFzc2VydChtZW1MZXZlbCA+PSAxICYmIG1lbUxldmVsIDw9IDksICdpbnZhbGlkIG1lbWxldmVsJyk7XG5cbiAgYXNzZXJ0KHN0cmF0ZWd5ID09PSBleHBvcnRzLlpfRklMVEVSRUQgfHwgc3RyYXRlZ3kgPT09IGV4cG9ydHMuWl9IVUZGTUFOX09OTFkgfHwgc3RyYXRlZ3kgPT09IGV4cG9ydHMuWl9STEUgfHwgc3RyYXRlZ3kgPT09IGV4cG9ydHMuWl9GSVhFRCB8fCBzdHJhdGVneSA9PT0gZXhwb3J0cy5aX0RFRkFVTFRfU1RSQVRFR1ksICdpbnZhbGlkIHN0cmF0ZWd5Jyk7XG5cbiAgdGhpcy5faW5pdChsZXZlbCwgd2luZG93Qml0cywgbWVtTGV2ZWwsIHN0cmF0ZWd5LCBkaWN0aW9uYXJ5KTtcbiAgdGhpcy5fc2V0RGljdGlvbmFyeSgpO1xufTtcblxuWmxpYi5wcm90b3R5cGUucGFyYW1zID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ2RlZmxhdGVQYXJhbXMgTm90IHN1cHBvcnRlZCcpO1xufTtcblxuWmxpYi5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX3Jlc2V0KCk7XG4gIHRoaXMuX3NldERpY3Rpb25hcnkoKTtcbn07XG5cblpsaWIucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gKGxldmVsLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3ksIGRpY3Rpb25hcnkpIHtcbiAgdGhpcy5sZXZlbCA9IGxldmVsO1xuICB0aGlzLndpbmRvd0JpdHMgPSB3aW5kb3dCaXRzO1xuICB0aGlzLm1lbUxldmVsID0gbWVtTGV2ZWw7XG4gIHRoaXMuc3RyYXRlZ3kgPSBzdHJhdGVneTtcblxuICB0aGlzLmZsdXNoID0gZXhwb3J0cy5aX05PX0ZMVVNIO1xuXG4gIHRoaXMuZXJyID0gZXhwb3J0cy5aX09LO1xuXG4gIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1pJUCB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1VOWklQKSB7XG4gICAgdGhpcy53aW5kb3dCaXRzICs9IDE2O1xuICB9XG5cbiAgaWYgKHRoaXMubW9kZSA9PT0gZXhwb3J0cy5VTlpJUCkge1xuICAgIHRoaXMud2luZG93Qml0cyArPSAzMjtcbiAgfVxuXG4gIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuREVGTEFURVJBVyB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuSU5GTEFURVJBVykge1xuICAgIHRoaXMud2luZG93Qml0cyA9IC0xICogdGhpcy53aW5kb3dCaXRzO1xuICB9XG5cbiAgdGhpcy5zdHJtID0gbmV3IFpzdHJlYW0oKTtcblxuICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFOlxuICAgIGNhc2UgZXhwb3J0cy5HWklQOlxuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFUkFXOlxuICAgICAgdGhpcy5lcnIgPSB6bGliX2RlZmxhdGUuZGVmbGF0ZUluaXQyKHRoaXMuc3RybSwgdGhpcy5sZXZlbCwgZXhwb3J0cy5aX0RFRkxBVEVELCB0aGlzLndpbmRvd0JpdHMsIHRoaXMubWVtTGV2ZWwsIHRoaXMuc3RyYXRlZ3kpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBleHBvcnRzLklORkxBVEU6XG4gICAgY2FzZSBleHBvcnRzLkdVTlpJUDpcbiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURVJBVzpcbiAgICBjYXNlIGV4cG9ydHMuVU5aSVA6XG4gICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlSW5pdDIodGhpcy5zdHJtLCB0aGlzLndpbmRvd0JpdHMpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBtb2RlICcgKyB0aGlzLm1vZGUpO1xuICB9XG5cbiAgaWYgKHRoaXMuZXJyICE9PSBleHBvcnRzLlpfT0spIHtcbiAgICB0aGlzLl9lcnJvcignSW5pdCBlcnJvcicpO1xuICB9XG5cbiAgdGhpcy5kaWN0aW9uYXJ5ID0gZGljdGlvbmFyeTtcblxuICB0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gZmFsc2U7XG4gIHRoaXMuaW5pdF9kb25lID0gdHJ1ZTtcbn07XG5cblpsaWIucHJvdG90eXBlLl9zZXREaWN0aW9uYXJ5ID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5kaWN0aW9uYXJ5ID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLmVyciA9IGV4cG9ydHMuWl9PSztcblxuICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFOlxuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFUkFXOlxuICAgICAgdGhpcy5lcnIgPSB6bGliX2RlZmxhdGUuZGVmbGF0ZVNldERpY3Rpb25hcnkodGhpcy5zdHJtLCB0aGlzLmRpY3Rpb25hcnkpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKHRoaXMuZXJyICE9PSBleHBvcnRzLlpfT0spIHtcbiAgICB0aGlzLl9lcnJvcignRmFpbGVkIHRvIHNldCBkaWN0aW9uYXJ5Jyk7XG4gIH1cbn07XG5cblpsaWIucHJvdG90eXBlLl9yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5lcnIgPSBleHBvcnRzLlpfT0s7XG5cbiAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICBjYXNlIGV4cG9ydHMuREVGTEFURTpcbiAgICBjYXNlIGV4cG9ydHMuREVGTEFURVJBVzpcbiAgICBjYXNlIGV4cG9ydHMuR1pJUDpcbiAgICAgIHRoaXMuZXJyID0gemxpYl9kZWZsYXRlLmRlZmxhdGVSZXNldCh0aGlzLnN0cm0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBleHBvcnRzLklORkxBVEU6XG4gICAgY2FzZSBleHBvcnRzLklORkxBVEVSQVc6XG4gICAgY2FzZSBleHBvcnRzLkdVTlpJUDpcbiAgICAgIHRoaXMuZXJyID0gemxpYl9pbmZsYXRlLmluZmxhdGVSZXNldCh0aGlzLnN0cm0pO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKHRoaXMuZXJyICE9PSBleHBvcnRzLlpfT0spIHtcbiAgICB0aGlzLl9lcnJvcignRmFpbGVkIHRvIHJlc2V0IHN0cmVhbScpO1xuICB9XG59O1xuXG5leHBvcnRzLlpsaWIgPSBabGliOyIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCdzdHJlYW0nKS5UcmFuc2Zvcm07XG52YXIgYmluZGluZyA9IHJlcXVpcmUoJy4vYmluZGluZycpO1xudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jykub2s7XG52YXIga01heExlbmd0aCA9IHJlcXVpcmUoJ2J1ZmZlcicpLmtNYXhMZW5ndGg7XG52YXIga1JhbmdlRXJyb3JNZXNzYWdlID0gJ0Nhbm5vdCBjcmVhdGUgZmluYWwgQnVmZmVyLiBJdCB3b3VsZCBiZSBsYXJnZXIgJyArICd0aGFuIDB4JyArIGtNYXhMZW5ndGgudG9TdHJpbmcoMTYpICsgJyBieXRlcyc7XG5cbi8vIHpsaWIgZG9lc24ndCBwcm92aWRlIHRoZXNlLCBzbyBrbHVkZ2UgdGhlbSBpbiBmb2xsb3dpbmcgdGhlIHNhbWVcbi8vIGNvbnN0IG5hbWluZyBzY2hlbWUgemxpYiB1c2VzLlxuYmluZGluZy5aX01JTl9XSU5ET1dCSVRTID0gODtcbmJpbmRpbmcuWl9NQVhfV0lORE9XQklUUyA9IDE1O1xuYmluZGluZy5aX0RFRkFVTFRfV0lORE9XQklUUyA9IDE1O1xuXG4vLyBmZXdlciB0aGFuIDY0IGJ5dGVzIHBlciBjaHVuayBpcyBzdHVwaWQuXG4vLyB0ZWNobmljYWxseSBpdCBjb3VsZCB3b3JrIHdpdGggYXMgZmV3IGFzIDgsIGJ1dCBldmVuIDY0IGJ5dGVzXG4vLyBpcyBhYnN1cmRseSBsb3cuICBVc3VhbGx5IGEgTUIgb3IgbW9yZSBpcyBiZXN0LlxuYmluZGluZy5aX01JTl9DSFVOSyA9IDY0O1xuYmluZGluZy5aX01BWF9DSFVOSyA9IEluZmluaXR5O1xuYmluZGluZy5aX0RFRkFVTFRfQ0hVTksgPSAxNiAqIDEwMjQ7XG5cbmJpbmRpbmcuWl9NSU5fTUVNTEVWRUwgPSAxO1xuYmluZGluZy5aX01BWF9NRU1MRVZFTCA9IDk7XG5iaW5kaW5nLlpfREVGQVVMVF9NRU1MRVZFTCA9IDg7XG5cbmJpbmRpbmcuWl9NSU5fTEVWRUwgPSAtMTtcbmJpbmRpbmcuWl9NQVhfTEVWRUwgPSA5O1xuYmluZGluZy5aX0RFRkFVTFRfTEVWRUwgPSBiaW5kaW5nLlpfREVGQVVMVF9DT01QUkVTU0lPTjtcblxuLy8gZXhwb3NlIGFsbCB0aGUgemxpYiBjb25zdGFudHNcbnZhciBia2V5cyA9IE9iamVjdC5rZXlzKGJpbmRpbmcpO1xuZm9yICh2YXIgYmsgPSAwOyBiayA8IGJrZXlzLmxlbmd0aDsgYmsrKykge1xuICB2YXIgYmtleSA9IGJrZXlzW2JrXTtcbiAgaWYgKGJrZXkubWF0Y2goL15aLykpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgYmtleSwge1xuICAgICAgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IGJpbmRpbmdbYmtleV0sIHdyaXRhYmxlOiBmYWxzZVxuICAgIH0pO1xuICB9XG59XG5cbi8vIHRyYW5zbGF0aW9uIHRhYmxlIGZvciByZXR1cm4gY29kZXMuXG52YXIgY29kZXMgPSB7XG4gIFpfT0s6IGJpbmRpbmcuWl9PSyxcbiAgWl9TVFJFQU1fRU5EOiBiaW5kaW5nLlpfU1RSRUFNX0VORCxcbiAgWl9ORUVEX0RJQ1Q6IGJpbmRpbmcuWl9ORUVEX0RJQ1QsXG4gIFpfRVJSTk86IGJpbmRpbmcuWl9FUlJOTyxcbiAgWl9TVFJFQU1fRVJST1I6IGJpbmRpbmcuWl9TVFJFQU1fRVJST1IsXG4gIFpfREFUQV9FUlJPUjogYmluZGluZy5aX0RBVEFfRVJST1IsXG4gIFpfTUVNX0VSUk9SOiBiaW5kaW5nLlpfTUVNX0VSUk9SLFxuICBaX0JVRl9FUlJPUjogYmluZGluZy5aX0JVRl9FUlJPUixcbiAgWl9WRVJTSU9OX0VSUk9SOiBiaW5kaW5nLlpfVkVSU0lPTl9FUlJPUlxufTtcblxudmFyIGNrZXlzID0gT2JqZWN0LmtleXMoY29kZXMpO1xuZm9yICh2YXIgY2sgPSAwOyBjayA8IGNrZXlzLmxlbmd0aDsgY2srKykge1xuICB2YXIgY2tleSA9IGNrZXlzW2NrXTtcbiAgY29kZXNbY29kZXNbY2tleV1dID0gY2tleTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdjb2RlcycsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IE9iamVjdC5mcmVlemUoY29kZXMpLCB3cml0YWJsZTogZmFsc2Vcbn0pO1xuXG5leHBvcnRzLkRlZmxhdGUgPSBEZWZsYXRlO1xuZXhwb3J0cy5JbmZsYXRlID0gSW5mbGF0ZTtcbmV4cG9ydHMuR3ppcCA9IEd6aXA7XG5leHBvcnRzLkd1bnppcCA9IEd1bnppcDtcbmV4cG9ydHMuRGVmbGF0ZVJhdyA9IERlZmxhdGVSYXc7XG5leHBvcnRzLkluZmxhdGVSYXcgPSBJbmZsYXRlUmF3O1xuZXhwb3J0cy5VbnppcCA9IFVuemlwO1xuXG5leHBvcnRzLmNyZWF0ZURlZmxhdGUgPSBmdW5jdGlvbiAobykge1xuICByZXR1cm4gbmV3IERlZmxhdGUobyk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZUluZmxhdGUgPSBmdW5jdGlvbiAobykge1xuICByZXR1cm4gbmV3IEluZmxhdGUobyk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZURlZmxhdGVSYXcgPSBmdW5jdGlvbiAobykge1xuICByZXR1cm4gbmV3IERlZmxhdGVSYXcobyk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZUluZmxhdGVSYXcgPSBmdW5jdGlvbiAobykge1xuICByZXR1cm4gbmV3IEluZmxhdGVSYXcobyk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZUd6aXAgPSBmdW5jdGlvbiAobykge1xuICByZXR1cm4gbmV3IEd6aXAobyk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZUd1bnppcCA9IGZ1bmN0aW9uIChvKSB7XG4gIHJldHVybiBuZXcgR3VuemlwKG8pO1xufTtcblxuZXhwb3J0cy5jcmVhdGVVbnppcCA9IGZ1bmN0aW9uIChvKSB7XG4gIHJldHVybiBuZXcgVW56aXAobyk7XG59O1xuXG4vLyBDb252ZW5pZW5jZSBtZXRob2RzLlxuLy8gY29tcHJlc3MvZGVjb21wcmVzcyBhIHN0cmluZyBvciBidWZmZXIgaW4gb25lIHN0ZXAuXG5leHBvcnRzLmRlZmxhdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG4gIHJldHVybiB6bGliQnVmZmVyKG5ldyBEZWZsYXRlKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTtcbn07XG5cbmV4cG9ydHMuZGVmbGF0ZVN5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgRGVmbGF0ZShvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmV4cG9ydHMuZ3ppcCA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gb3B0cztcbiAgICBvcHRzID0ge307XG4gIH1cbiAgcmV0dXJuIHpsaWJCdWZmZXIobmV3IEd6aXAob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0cy5nemlwU3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHtcbiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBHemlwKG9wdHMpLCBidWZmZXIpO1xufTtcblxuZXhwb3J0cy5kZWZsYXRlUmF3ID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgRGVmbGF0ZVJhdyhvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7XG59O1xuXG5leHBvcnRzLmRlZmxhdGVSYXdTeW5jID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cykge1xuICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IERlZmxhdGVSYXcob3B0cyksIGJ1ZmZlcik7XG59O1xuXG5leHBvcnRzLnVuemlwID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgVW56aXAob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0cy51bnppcFN5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgVW56aXAob3B0cyksIGJ1ZmZlcik7XG59O1xuXG5leHBvcnRzLmluZmxhdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG4gIHJldHVybiB6bGliQnVmZmVyKG5ldyBJbmZsYXRlKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTtcbn07XG5cbmV4cG9ydHMuaW5mbGF0ZVN5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgSW5mbGF0ZShvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmV4cG9ydHMuZ3VuemlwID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgR3VuemlwKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTtcbn07XG5cbmV4cG9ydHMuZ3VuemlwU3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHtcbiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBHdW56aXAob3B0cyksIGJ1ZmZlcik7XG59O1xuXG5leHBvcnRzLmluZmxhdGVSYXcgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG4gIHJldHVybiB6bGliQnVmZmVyKG5ldyBJbmZsYXRlUmF3KG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTtcbn07XG5cbmV4cG9ydHMuaW5mbGF0ZVJhd1N5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgSW5mbGF0ZVJhdyhvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmZ1bmN0aW9uIHpsaWJCdWZmZXIoZW5naW5lLCBidWZmZXIsIGNhbGxiYWNrKSB7XG4gIHZhciBidWZmZXJzID0gW107XG4gIHZhciBucmVhZCA9IDA7XG5cbiAgZW5naW5lLm9uKCdlcnJvcicsIG9uRXJyb3IpO1xuICBlbmdpbmUub24oJ2VuZCcsIG9uRW5kKTtcblxuICBlbmdpbmUuZW5kKGJ1ZmZlcik7XG4gIGZsb3coKTtcblxuICBmdW5jdGlvbiBmbG93KCkge1xuICAgIHZhciBjaHVuaztcbiAgICB3aGlsZSAobnVsbCAhPT0gKGNodW5rID0gZW5naW5lLnJlYWQoKSkpIHtcbiAgICAgIGJ1ZmZlcnMucHVzaChjaHVuayk7XG4gICAgICBucmVhZCArPSBjaHVuay5sZW5ndGg7XG4gICAgfVxuICAgIGVuZ2luZS5vbmNlKCdyZWFkYWJsZScsIGZsb3cpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25FcnJvcihlcnIpIHtcbiAgICBlbmdpbmUucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uRW5kKTtcbiAgICBlbmdpbmUucmVtb3ZlTGlzdGVuZXIoJ3JlYWRhYmxlJywgZmxvdyk7XG4gICAgY2FsbGJhY2soZXJyKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRW5kKCkge1xuICAgIHZhciBidWY7XG4gICAgdmFyIGVyciA9IG51bGw7XG5cbiAgICBpZiAobnJlYWQgPj0ga01heExlbmd0aCkge1xuICAgICAgZXJyID0gbmV3IFJhbmdlRXJyb3Ioa1JhbmdlRXJyb3JNZXNzYWdlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmID0gQnVmZmVyLmNvbmNhdChidWZmZXJzLCBucmVhZCk7XG4gICAgfVxuXG4gICAgYnVmZmVycyA9IFtdO1xuICAgIGVuZ2luZS5jbG9zZSgpO1xuICAgIGNhbGxiYWNrKGVyciwgYnVmKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB6bGliQnVmZmVyU3luYyhlbmdpbmUsIGJ1ZmZlcikge1xuICBpZiAodHlwZW9mIGJ1ZmZlciA9PT0gJ3N0cmluZycpIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJ1ZmZlcik7XG5cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignTm90IGEgc3RyaW5nIG9yIGJ1ZmZlcicpO1xuXG4gIHZhciBmbHVzaEZsYWcgPSBlbmdpbmUuX2ZpbmlzaEZsdXNoRmxhZztcblxuICByZXR1cm4gZW5naW5lLl9wcm9jZXNzQ2h1bmsoYnVmZmVyLCBmbHVzaEZsYWcpO1xufVxuXG4vLyBnZW5lcmljIHpsaWJcbi8vIG1pbmltYWwgMi1ieXRlIGhlYWRlclxuZnVuY3Rpb24gRGVmbGF0ZShvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEZWZsYXRlKSkgcmV0dXJuIG5ldyBEZWZsYXRlKG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5ERUZMQVRFKTtcbn1cblxuZnVuY3Rpb24gSW5mbGF0ZShvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBJbmZsYXRlKSkgcmV0dXJuIG5ldyBJbmZsYXRlKG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5JTkZMQVRFKTtcbn1cblxuLy8gZ3ppcCAtIGJpZ2dlciBoZWFkZXIsIHNhbWUgZGVmbGF0ZSBjb21wcmVzc2lvblxuZnVuY3Rpb24gR3ppcChvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHemlwKSkgcmV0dXJuIG5ldyBHemlwKG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5HWklQKTtcbn1cblxuZnVuY3Rpb24gR3VuemlwKG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEd1bnppcCkpIHJldHVybiBuZXcgR3VuemlwKG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5HVU5aSVApO1xufVxuXG4vLyByYXcgLSBubyBoZWFkZXJcbmZ1bmN0aW9uIERlZmxhdGVSYXcob3B0cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRGVmbGF0ZVJhdykpIHJldHVybiBuZXcgRGVmbGF0ZVJhdyhvcHRzKTtcbiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuREVGTEFURVJBVyk7XG59XG5cbmZ1bmN0aW9uIEluZmxhdGVSYXcob3B0cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgSW5mbGF0ZVJhdykpIHJldHVybiBuZXcgSW5mbGF0ZVJhdyhvcHRzKTtcbiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuSU5GTEFURVJBVyk7XG59XG5cbi8vIGF1dG8tZGV0ZWN0IGhlYWRlci5cbmZ1bmN0aW9uIFVuemlwKG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFVuemlwKSkgcmV0dXJuIG5ldyBVbnppcChvcHRzKTtcbiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuVU5aSVApO1xufVxuXG5mdW5jdGlvbiBpc1ZhbGlkRmx1c2hGbGFnKGZsYWcpIHtcbiAgcmV0dXJuIGZsYWcgPT09IGJpbmRpbmcuWl9OT19GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfUEFSVElBTF9GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfU1lOQ19GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfRlVMTF9GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfRklOSVNIIHx8IGZsYWcgPT09IGJpbmRpbmcuWl9CTE9DSztcbn1cblxuLy8gdGhlIFpsaWIgY2xhc3MgdGhleSBhbGwgaW5oZXJpdCBmcm9tXG4vLyBUaGlzIHRoaW5nIG1hbmFnZXMgdGhlIHF1ZXVlIG9mIHJlcXVlc3RzLCBhbmQgcmV0dXJuc1xuLy8gdHJ1ZSBvciBmYWxzZSBpZiB0aGVyZSBpcyBhbnl0aGluZyBpbiB0aGUgcXVldWUgd2hlblxuLy8geW91IGNhbGwgdGhlIC53cml0ZSgpIG1ldGhvZC5cblxuZnVuY3Rpb24gWmxpYihvcHRzLCBtb2RlKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdGhpcy5fb3B0cyA9IG9wdHMgPSBvcHRzIHx8IHt9O1xuICB0aGlzLl9jaHVua1NpemUgPSBvcHRzLmNodW5rU2l6ZSB8fCBleHBvcnRzLlpfREVGQVVMVF9DSFVOSztcblxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRzKTtcblxuICBpZiAob3B0cy5mbHVzaCAmJiAhaXNWYWxpZEZsdXNoRmxhZyhvcHRzLmZsdXNoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmbHVzaCBmbGFnOiAnICsgb3B0cy5mbHVzaCk7XG4gIH1cbiAgaWYgKG9wdHMuZmluaXNoRmx1c2ggJiYgIWlzVmFsaWRGbHVzaEZsYWcob3B0cy5maW5pc2hGbHVzaCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZmx1c2ggZmxhZzogJyArIG9wdHMuZmluaXNoRmx1c2gpO1xuICB9XG5cbiAgdGhpcy5fZmx1c2hGbGFnID0gb3B0cy5mbHVzaCB8fCBiaW5kaW5nLlpfTk9fRkxVU0g7XG4gIHRoaXMuX2ZpbmlzaEZsdXNoRmxhZyA9IHR5cGVvZiBvcHRzLmZpbmlzaEZsdXNoICE9PSAndW5kZWZpbmVkJyA/IG9wdHMuZmluaXNoRmx1c2ggOiBiaW5kaW5nLlpfRklOSVNIO1xuXG4gIGlmIChvcHRzLmNodW5rU2l6ZSkge1xuICAgIGlmIChvcHRzLmNodW5rU2l6ZSA8IGV4cG9ydHMuWl9NSU5fQ0hVTksgfHwgb3B0cy5jaHVua1NpemUgPiBleHBvcnRzLlpfTUFYX0NIVU5LKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY2h1bmsgc2l6ZTogJyArIG9wdHMuY2h1bmtTaXplKTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy53aW5kb3dCaXRzKSB7XG4gICAgaWYgKG9wdHMud2luZG93Qml0cyA8IGV4cG9ydHMuWl9NSU5fV0lORE9XQklUUyB8fCBvcHRzLndpbmRvd0JpdHMgPiBleHBvcnRzLlpfTUFYX1dJTkRPV0JJVFMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB3aW5kb3dCaXRzOiAnICsgb3B0cy53aW5kb3dCaXRzKTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy5sZXZlbCkge1xuICAgIGlmIChvcHRzLmxldmVsIDwgZXhwb3J0cy5aX01JTl9MRVZFTCB8fCBvcHRzLmxldmVsID4gZXhwb3J0cy5aX01BWF9MRVZFTCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsOiAnICsgb3B0cy5sZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdHMubWVtTGV2ZWwpIHtcbiAgICBpZiAob3B0cy5tZW1MZXZlbCA8IGV4cG9ydHMuWl9NSU5fTUVNTEVWRUwgfHwgb3B0cy5tZW1MZXZlbCA+IGV4cG9ydHMuWl9NQVhfTUVNTEVWRUwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtZW1MZXZlbDogJyArIG9wdHMubWVtTGV2ZWwpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLnN0cmF0ZWd5KSB7XG4gICAgaWYgKG9wdHMuc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0ZJTFRFUkVEICYmIG9wdHMuc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0hVRkZNQU5fT05MWSAmJiBvcHRzLnN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9STEUgJiYgb3B0cy5zdHJhdGVneSAhPSBleHBvcnRzLlpfRklYRUQgJiYgb3B0cy5zdHJhdGVneSAhPSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0cmF0ZWd5OiAnICsgb3B0cy5zdHJhdGVneSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdHMuZGljdGlvbmFyeSkge1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKG9wdHMuZGljdGlvbmFyeSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkaWN0aW9uYXJ5OiBpdCBzaG91bGQgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtcbiAgICB9XG4gIH1cblxuICB0aGlzLl9oYW5kbGUgPSBuZXcgYmluZGluZy5abGliKG1vZGUpO1xuXG4gIHZhciBzZWxmID0gdGhpcztcbiAgdGhpcy5faGFkRXJyb3IgPSBmYWxzZTtcbiAgdGhpcy5faGFuZGxlLm9uZXJyb3IgPSBmdW5jdGlvbiAobWVzc2FnZSwgZXJybm8pIHtcbiAgICAvLyB0aGVyZSBpcyBubyB3YXkgdG8gY2xlYW5seSByZWNvdmVyLlxuICAgIC8vIGNvbnRpbnVpbmcgb25seSBvYnNjdXJlcyBwcm9ibGVtcy5cbiAgICBfY2xvc2Uoc2VsZik7XG4gICAgc2VsZi5faGFkRXJyb3IgPSB0cnVlO1xuXG4gICAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIGVycm9yLmVycm5vID0gZXJybm87XG4gICAgZXJyb3IuY29kZSA9IGV4cG9ydHMuY29kZXNbZXJybm9dO1xuICAgIHNlbGYuZW1pdCgnZXJyb3InLCBlcnJvcik7XG4gIH07XG5cbiAgdmFyIGxldmVsID0gZXhwb3J0cy5aX0RFRkFVTFRfQ09NUFJFU1NJT047XG4gIGlmICh0eXBlb2Ygb3B0cy5sZXZlbCA9PT0gJ251bWJlcicpIGxldmVsID0gb3B0cy5sZXZlbDtcblxuICB2YXIgc3RyYXRlZ3kgPSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWTtcbiAgaWYgKHR5cGVvZiBvcHRzLnN0cmF0ZWd5ID09PSAnbnVtYmVyJykgc3RyYXRlZ3kgPSBvcHRzLnN0cmF0ZWd5O1xuXG4gIHRoaXMuX2hhbmRsZS5pbml0KG9wdHMud2luZG93Qml0cyB8fCBleHBvcnRzLlpfREVGQVVMVF9XSU5ET1dCSVRTLCBsZXZlbCwgb3B0cy5tZW1MZXZlbCB8fCBleHBvcnRzLlpfREVGQVVMVF9NRU1MRVZFTCwgc3RyYXRlZ3ksIG9wdHMuZGljdGlvbmFyeSk7XG5cbiAgdGhpcy5fYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKHRoaXMuX2NodW5rU2l6ZSk7XG4gIHRoaXMuX29mZnNldCA9IDA7XG4gIHRoaXMuX2xldmVsID0gbGV2ZWw7XG4gIHRoaXMuX3N0cmF0ZWd5ID0gc3RyYXRlZ3k7XG5cbiAgdGhpcy5vbmNlKCdlbmQnLCB0aGlzLmNsb3NlKTtcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ19jbG9zZWQnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gIV90aGlzLl9oYW5kbGU7XG4gICAgfSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxudXRpbC5pbmhlcml0cyhabGliLCBUcmFuc2Zvcm0pO1xuXG5abGliLnByb3RvdHlwZS5wYXJhbXMgPSBmdW5jdGlvbiAobGV2ZWwsIHN0cmF0ZWd5LCBjYWxsYmFjaykge1xuICBpZiAobGV2ZWwgPCBleHBvcnRzLlpfTUlOX0xFVkVMIHx8IGxldmVsID4gZXhwb3J0cy5aX01BWF9MRVZFTCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsOiAnICsgbGV2ZWwpO1xuICB9XG4gIGlmIChzdHJhdGVneSAhPSBleHBvcnRzLlpfRklMVEVSRUQgJiYgc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0hVRkZNQU5fT05MWSAmJiBzdHJhdGVneSAhPSBleHBvcnRzLlpfUkxFICYmIHN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9GSVhFRCAmJiBzdHJhdGVneSAhPSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgc3RyYXRlZ3k6ICcgKyBzdHJhdGVneSk7XG4gIH1cblxuICBpZiAodGhpcy5fbGV2ZWwgIT09IGxldmVsIHx8IHRoaXMuX3N0cmF0ZWd5ICE9PSBzdHJhdGVneSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB0aGlzLmZsdXNoKGJpbmRpbmcuWl9TWU5DX0ZMVVNILCBmdW5jdGlvbiAoKSB7XG4gICAgICBhc3NlcnQoc2VsZi5faGFuZGxlLCAnemxpYiBiaW5kaW5nIGNsb3NlZCcpO1xuICAgICAgc2VsZi5faGFuZGxlLnBhcmFtcyhsZXZlbCwgc3RyYXRlZ3kpO1xuICAgICAgaWYgKCFzZWxmLl9oYWRFcnJvcikge1xuICAgICAgICBzZWxmLl9sZXZlbCA9IGxldmVsO1xuICAgICAgICBzZWxmLl9zdHJhdGVneSA9IHN0cmF0ZWd5O1xuICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhjYWxsYmFjayk7XG4gIH1cbn07XG5cblpsaWIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkge1xuICBhc3NlcnQodGhpcy5faGFuZGxlLCAnemxpYiBiaW5kaW5nIGNsb3NlZCcpO1xuICByZXR1cm4gdGhpcy5faGFuZGxlLnJlc2V0KCk7XG59O1xuXG4vLyBUaGlzIGlzIHRoZSBfZmx1c2ggZnVuY3Rpb24gY2FsbGVkIGJ5IHRoZSB0cmFuc2Zvcm0gY2xhc3MsXG4vLyBpbnRlcm5hbGx5LCB3aGVuIHRoZSBsYXN0IGNodW5rIGhhcyBiZWVuIHdyaXR0ZW4uXG5abGliLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdGhpcy5fdHJhbnNmb3JtKEJ1ZmZlci5hbGxvYygwKSwgJycsIGNhbGxiYWNrKTtcbn07XG5cblpsaWIucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24gKGtpbmQsIGNhbGxiYWNrKSB7XG4gIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gIHZhciB3cyA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHR5cGVvZiBraW5kID09PSAnZnVuY3Rpb24nIHx8IGtpbmQgPT09IHVuZGVmaW5lZCAmJiAhY2FsbGJhY2spIHtcbiAgICBjYWxsYmFjayA9IGtpbmQ7XG4gICAga2luZCA9IGJpbmRpbmcuWl9GVUxMX0ZMVVNIO1xuICB9XG5cbiAgaWYgKHdzLmVuZGVkKSB7XG4gICAgaWYgKGNhbGxiYWNrKSBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTtcbiAgfSBlbHNlIGlmICh3cy5lbmRpbmcpIHtcbiAgICBpZiAoY2FsbGJhY2spIHRoaXMub25jZSgnZW5kJywgY2FsbGJhY2spO1xuICB9IGVsc2UgaWYgKHdzLm5lZWREcmFpbikge1xuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgdGhpcy5vbmNlKCdkcmFpbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF90aGlzMi5mbHVzaChraW5kLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fZmx1c2hGbGFnID0ga2luZDtcbiAgICB0aGlzLndyaXRlKEJ1ZmZlci5hbGxvYygwKSwgJycsIGNhbGxiYWNrKTtcbiAgfVxufTtcblxuWmxpYi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgX2Nsb3NlKHRoaXMsIGNhbGxiYWNrKTtcbiAgcHJvY2Vzcy5uZXh0VGljayhlbWl0Q2xvc2VOVCwgdGhpcyk7XG59O1xuXG5mdW5jdGlvbiBfY2xvc2UoZW5naW5lLCBjYWxsYmFjaykge1xuICBpZiAoY2FsbGJhY2spIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2spO1xuXG4gIC8vIENhbGxlciBtYXkgaW52b2tlIC5jbG9zZSBhZnRlciBhIHpsaWIgZXJyb3IgKHdoaWNoIHdpbGwgbnVsbCBfaGFuZGxlKS5cbiAgaWYgKCFlbmdpbmUuX2hhbmRsZSkgcmV0dXJuO1xuXG4gIGVuZ2luZS5faGFuZGxlLmNsb3NlKCk7XG4gIGVuZ2luZS5faGFuZGxlID0gbnVsbDtcbn1cblxuZnVuY3Rpb24gZW1pdENsb3NlTlQoc2VsZikge1xuICBzZWxmLmVtaXQoJ2Nsb3NlJyk7XG59XG5cblpsaWIucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgZmx1c2hGbGFnO1xuICB2YXIgd3MgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuICB2YXIgZW5kaW5nID0gd3MuZW5kaW5nIHx8IHdzLmVuZGVkO1xuICB2YXIgbGFzdCA9IGVuZGluZyAmJiAoIWNodW5rIHx8IHdzLmxlbmd0aCA9PT0gY2h1bmsubGVuZ3RoKTtcblxuICBpZiAoY2h1bmsgIT09IG51bGwgJiYgIUJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIHJldHVybiBjYihuZXcgRXJyb3IoJ2ludmFsaWQgaW5wdXQnKSk7XG5cbiAgaWYgKCF0aGlzLl9oYW5kbGUpIHJldHVybiBjYihuZXcgRXJyb3IoJ3psaWIgYmluZGluZyBjbG9zZWQnKSk7XG5cbiAgLy8gSWYgaXQncyB0aGUgbGFzdCBjaHVuaywgb3IgYSBmaW5hbCBmbHVzaCwgd2UgdXNlIHRoZSBaX0ZJTklTSCBmbHVzaCBmbGFnXG4gIC8vIChvciB3aGF0ZXZlciBmbGFnIHdhcyBwcm92aWRlZCB1c2luZyBvcHRzLmZpbmlzaEZsdXNoKS5cbiAgLy8gSWYgaXQncyBleHBsaWNpdGx5IGZsdXNoaW5nIGF0IHNvbWUgb3RoZXIgdGltZSwgdGhlbiB3ZSB1c2VcbiAgLy8gWl9GVUxMX0ZMVVNILiBPdGhlcndpc2UsIHVzZSBaX05PX0ZMVVNIIGZvciBtYXhpbXVtIGNvbXByZXNzaW9uXG4gIC8vIGdvb2RuZXNzLlxuICBpZiAobGFzdCkgZmx1c2hGbGFnID0gdGhpcy5fZmluaXNoRmx1c2hGbGFnO2Vsc2Uge1xuICAgIGZsdXNoRmxhZyA9IHRoaXMuX2ZsdXNoRmxhZztcbiAgICAvLyBvbmNlIHdlJ3ZlIGZsdXNoZWQgdGhlIGxhc3Qgb2YgdGhlIHF1ZXVlLCBzdG9wIGZsdXNoaW5nIGFuZFxuICAgIC8vIGdvIGJhY2sgdG8gdGhlIG5vcm1hbCBiZWhhdmlvci5cbiAgICBpZiAoY2h1bmsubGVuZ3RoID49IHdzLmxlbmd0aCkge1xuICAgICAgdGhpcy5fZmx1c2hGbGFnID0gdGhpcy5fb3B0cy5mbHVzaCB8fCBiaW5kaW5nLlpfTk9fRkxVU0g7XG4gICAgfVxuICB9XG5cbiAgdGhpcy5fcHJvY2Vzc0NodW5rKGNodW5rLCBmbHVzaEZsYWcsIGNiKTtcbn07XG5cblpsaWIucHJvdG90eXBlLl9wcm9jZXNzQ2h1bmsgPSBmdW5jdGlvbiAoY2h1bmssIGZsdXNoRmxhZywgY2IpIHtcbiAgdmFyIGF2YWlsSW5CZWZvcmUgPSBjaHVuayAmJiBjaHVuay5sZW5ndGg7XG4gIHZhciBhdmFpbE91dEJlZm9yZSA9IHRoaXMuX2NodW5rU2l6ZSAtIHRoaXMuX29mZnNldDtcbiAgdmFyIGluT2ZmID0gMDtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgdmFyIGFzeW5jID0gdHlwZW9mIGNiID09PSAnZnVuY3Rpb24nO1xuXG4gIGlmICghYXN5bmMpIHtcbiAgICB2YXIgYnVmZmVycyA9IFtdO1xuICAgIHZhciBucmVhZCA9IDA7XG5cbiAgICB2YXIgZXJyb3I7XG4gICAgdGhpcy5vbignZXJyb3InLCBmdW5jdGlvbiAoZXIpIHtcbiAgICAgIGVycm9yID0gZXI7XG4gICAgfSk7XG5cbiAgICBhc3NlcnQodGhpcy5faGFuZGxlLCAnemxpYiBiaW5kaW5nIGNsb3NlZCcpO1xuICAgIGRvIHtcbiAgICAgIHZhciByZXMgPSB0aGlzLl9oYW5kbGUud3JpdGVTeW5jKGZsdXNoRmxhZywgY2h1bmssIC8vIGluXG4gICAgICBpbk9mZiwgLy8gaW5fb2ZmXG4gICAgICBhdmFpbEluQmVmb3JlLCAvLyBpbl9sZW5cbiAgICAgIHRoaXMuX2J1ZmZlciwgLy8gb3V0XG4gICAgICB0aGlzLl9vZmZzZXQsIC8vb3V0X29mZlxuICAgICAgYXZhaWxPdXRCZWZvcmUpOyAvLyBvdXRfbGVuXG4gICAgfSB3aGlsZSAoIXRoaXMuX2hhZEVycm9yICYmIGNhbGxiYWNrKHJlc1swXSwgcmVzWzFdKSk7XG5cbiAgICBpZiAodGhpcy5faGFkRXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGlmIChucmVhZCA+PSBrTWF4TGVuZ3RoKSB7XG4gICAgICBfY2xvc2UodGhpcyk7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihrUmFuZ2VFcnJvck1lc3NhZ2UpO1xuICAgIH1cblxuICAgIHZhciBidWYgPSBCdWZmZXIuY29uY2F0KGJ1ZmZlcnMsIG5yZWFkKTtcbiAgICBfY2xvc2UodGhpcyk7XG5cbiAgICByZXR1cm4gYnVmO1xuICB9XG5cbiAgYXNzZXJ0KHRoaXMuX2hhbmRsZSwgJ3psaWIgYmluZGluZyBjbG9zZWQnKTtcbiAgdmFyIHJlcSA9IHRoaXMuX2hhbmRsZS53cml0ZShmbHVzaEZsYWcsIGNodW5rLCAvLyBpblxuICBpbk9mZiwgLy8gaW5fb2ZmXG4gIGF2YWlsSW5CZWZvcmUsIC8vIGluX2xlblxuICB0aGlzLl9idWZmZXIsIC8vIG91dFxuICB0aGlzLl9vZmZzZXQsIC8vb3V0X29mZlxuICBhdmFpbE91dEJlZm9yZSk7IC8vIG91dF9sZW5cblxuICByZXEuYnVmZmVyID0gY2h1bms7XG4gIHJlcS5jYWxsYmFjayA9IGNhbGxiYWNrO1xuXG4gIGZ1bmN0aW9uIGNhbGxiYWNrKGF2YWlsSW5BZnRlciwgYXZhaWxPdXRBZnRlcikge1xuICAgIC8vIFdoZW4gdGhlIGNhbGxiYWNrIGlzIHVzZWQgaW4gYW4gYXN5bmMgd3JpdGUsIHRoZSBjYWxsYmFjaydzXG4gICAgLy8gY29udGV4dCBpcyB0aGUgYHJlcWAgb2JqZWN0IHRoYXQgd2FzIGNyZWF0ZWQuIFRoZSByZXEgb2JqZWN0XG4gICAgLy8gaXMgPT09IHRoaXMuX2hhbmRsZSwgYW5kIHRoYXQncyB3aHkgaXQncyBpbXBvcnRhbnQgdG8gbnVsbFxuICAgIC8vIG91dCB0aGUgdmFsdWVzIGFmdGVyIHRoZXkgYXJlIGRvbmUgYmVpbmcgdXNlZC4gYHRoaXMuX2hhbmRsZWBcbiAgICAvLyBjYW4gc3RheSBpbiBtZW1vcnkgbG9uZ2VyIHRoYW4gdGhlIGNhbGxiYWNrIGFuZCBidWZmZXIgYXJlIG5lZWRlZC5cbiAgICBpZiAodGhpcykge1xuICAgICAgdGhpcy5idWZmZXIgPSBudWxsO1xuICAgICAgdGhpcy5jYWxsYmFjayA9IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKHNlbGYuX2hhZEVycm9yKSByZXR1cm47XG5cbiAgICB2YXIgaGF2ZSA9IGF2YWlsT3V0QmVmb3JlIC0gYXZhaWxPdXRBZnRlcjtcbiAgICBhc3NlcnQoaGF2ZSA+PSAwLCAnaGF2ZSBzaG91bGQgbm90IGdvIGRvd24nKTtcblxuICAgIGlmIChoYXZlID4gMCkge1xuICAgICAgdmFyIG91dCA9IHNlbGYuX2J1ZmZlci5zbGljZShzZWxmLl9vZmZzZXQsIHNlbGYuX29mZnNldCArIGhhdmUpO1xuICAgICAgc2VsZi5fb2Zmc2V0ICs9IGhhdmU7XG4gICAgICAvLyBzZXJ2ZSBzb21lIG91dHB1dCB0byB0aGUgY29uc3VtZXIuXG4gICAgICBpZiAoYXN5bmMpIHtcbiAgICAgICAgc2VsZi5wdXNoKG91dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBidWZmZXJzLnB1c2gob3V0KTtcbiAgICAgICAgbnJlYWQgKz0gb3V0Lmxlbmd0aDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBleGhhdXN0ZWQgdGhlIG91dHB1dCBidWZmZXIsIG9yIHVzZWQgYWxsIHRoZSBpbnB1dCBjcmVhdGUgYSBuZXcgb25lLlxuICAgIGlmIChhdmFpbE91dEFmdGVyID09PSAwIHx8IHNlbGYuX29mZnNldCA+PSBzZWxmLl9jaHVua1NpemUpIHtcbiAgICAgIGF2YWlsT3V0QmVmb3JlID0gc2VsZi5fY2h1bmtTaXplO1xuICAgICAgc2VsZi5fb2Zmc2V0ID0gMDtcbiAgICAgIHNlbGYuX2J1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShzZWxmLl9jaHVua1NpemUpO1xuICAgIH1cblxuICAgIGlmIChhdmFpbE91dEFmdGVyID09PSAwKSB7XG4gICAgICAvLyBOb3QgYWN0dWFsbHkgZG9uZS4gIE5lZWQgdG8gcmVwcm9jZXNzLlxuICAgICAgLy8gQWxzbywgdXBkYXRlIHRoZSBhdmFpbEluQmVmb3JlIHRvIHRoZSBhdmFpbEluQWZ0ZXIgdmFsdWUsXG4gICAgICAvLyBzbyB0aGF0IGlmIHdlIGhhdmUgdG8gaGl0IGl0IGEgdGhpcmQgKGZvdXJ0aCwgZXRjLikgdGltZSxcbiAgICAgIC8vIGl0J2xsIGhhdmUgdGhlIGNvcnJlY3QgYnl0ZSBjb3VudHMuXG4gICAgICBpbk9mZiArPSBhdmFpbEluQmVmb3JlIC0gYXZhaWxJbkFmdGVyO1xuICAgICAgYXZhaWxJbkJlZm9yZSA9IGF2YWlsSW5BZnRlcjtcblxuICAgICAgaWYgKCFhc3luYykgcmV0dXJuIHRydWU7XG5cbiAgICAgIHZhciBuZXdSZXEgPSBzZWxmLl9oYW5kbGUud3JpdGUoZmx1c2hGbGFnLCBjaHVuaywgaW5PZmYsIGF2YWlsSW5CZWZvcmUsIHNlbGYuX2J1ZmZlciwgc2VsZi5fb2Zmc2V0LCBzZWxmLl9jaHVua1NpemUpO1xuICAgICAgbmV3UmVxLmNhbGxiYWNrID0gY2FsbGJhY2s7IC8vIHRoaXMgc2FtZSBmdW5jdGlvblxuICAgICAgbmV3UmVxLmJ1ZmZlciA9IGNodW5rO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghYXN5bmMpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIGZpbmlzaGVkIHdpdGggdGhlIGNodW5rLlxuICAgIGNiKCk7XG4gIH1cbn07XG5cbnV0aWwuaW5oZXJpdHMoRGVmbGF0ZSwgWmxpYik7XG51dGlsLmluaGVyaXRzKEluZmxhdGUsIFpsaWIpO1xudXRpbC5pbmhlcml0cyhHemlwLCBabGliKTtcbnV0aWwuaW5oZXJpdHMoR3VuemlwLCBabGliKTtcbnV0aWwuaW5oZXJpdHMoRGVmbGF0ZVJhdywgWmxpYik7XG51dGlsLmluaGVyaXRzKEluZmxhdGVSYXcsIFpsaWIpO1xudXRpbC5pbmhlcml0cyhVbnppcCwgWmxpYik7IiwiJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBUWVBFRF9PSyA9ICAodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnKSAmJlxuICAgICAgICAgICAgICAgICh0eXBlb2YgVWludDE2QXJyYXkgIT09ICd1bmRlZmluZWQnKSAmJlxuICAgICAgICAgICAgICAgICh0eXBlb2YgSW50MzJBcnJheSAhPT0gJ3VuZGVmaW5lZCcpO1xuXG5mdW5jdGlvbiBfaGFzKG9iaiwga2V5KSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpO1xufVxuXG5leHBvcnRzLmFzc2lnbiA9IGZ1bmN0aW9uIChvYmogLypmcm9tMSwgZnJvbTIsIGZyb20zLCAuLi4qLykge1xuICB2YXIgc291cmNlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gIHdoaWxlIChzb3VyY2VzLmxlbmd0aCkge1xuICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzLnNoaWZ0KCk7XG4gICAgaWYgKCFzb3VyY2UpIHsgY29udGludWU7IH1cblxuICAgIGlmICh0eXBlb2Ygc291cmNlICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzb3VyY2UgKyAnbXVzdCBiZSBub24tb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgcCBpbiBzb3VyY2UpIHtcbiAgICAgIGlmIChfaGFzKHNvdXJjZSwgcCkpIHtcbiAgICAgICAgb2JqW3BdID0gc291cmNlW3BdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmo7XG59O1xuXG5cbi8vIHJlZHVjZSBidWZmZXIgc2l6ZSwgYXZvaWRpbmcgbWVtIGNvcHlcbmV4cG9ydHMuc2hyaW5rQnVmID0gZnVuY3Rpb24gKGJ1Ziwgc2l6ZSkge1xuICBpZiAoYnVmLmxlbmd0aCA9PT0gc2l6ZSkgeyByZXR1cm4gYnVmOyB9XG4gIGlmIChidWYuc3ViYXJyYXkpIHsgcmV0dXJuIGJ1Zi5zdWJhcnJheSgwLCBzaXplKTsgfVxuICBidWYubGVuZ3RoID0gc2l6ZTtcbiAgcmV0dXJuIGJ1Zjtcbn07XG5cblxudmFyIGZuVHlwZWQgPSB7XG4gIGFycmF5U2V0OiBmdW5jdGlvbiAoZGVzdCwgc3JjLCBzcmNfb2ZmcywgbGVuLCBkZXN0X29mZnMpIHtcbiAgICBpZiAoc3JjLnN1YmFycmF5ICYmIGRlc3Quc3ViYXJyYXkpIHtcbiAgICAgIGRlc3Quc2V0KHNyYy5zdWJhcnJheShzcmNfb2Zmcywgc3JjX29mZnMgKyBsZW4pLCBkZXN0X29mZnMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBGYWxsYmFjayB0byBvcmRpbmFyeSBhcnJheVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGRlc3RbZGVzdF9vZmZzICsgaV0gPSBzcmNbc3JjX29mZnMgKyBpXTtcbiAgICB9XG4gIH0sXG4gIC8vIEpvaW4gYXJyYXkgb2YgY2h1bmtzIHRvIHNpbmdsZSBhcnJheS5cbiAgZmxhdHRlbkNodW5rczogZnVuY3Rpb24gKGNodW5rcykge1xuICAgIHZhciBpLCBsLCBsZW4sIHBvcywgY2h1bmssIHJlc3VsdDtcblxuICAgIC8vIGNhbGN1bGF0ZSBkYXRhIGxlbmd0aFxuICAgIGxlbiA9IDA7XG4gICAgZm9yIChpID0gMCwgbCA9IGNodW5rcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGxlbiArPSBjaHVua3NbaV0ubGVuZ3RoO1xuICAgIH1cblxuICAgIC8vIGpvaW4gY2h1bmtzXG4gICAgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBwb3MgPSAwO1xuICAgIGZvciAoaSA9IDAsIGwgPSBjaHVua3MubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjaHVuayA9IGNodW5rc1tpXTtcbiAgICAgIHJlc3VsdC5zZXQoY2h1bmssIHBvcyk7XG4gICAgICBwb3MgKz0gY2h1bmsubGVuZ3RoO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn07XG5cbnZhciBmblVudHlwZWQgPSB7XG4gIGFycmF5U2V0OiBmdW5jdGlvbiAoZGVzdCwgc3JjLCBzcmNfb2ZmcywgbGVuLCBkZXN0X29mZnMpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBkZXN0W2Rlc3Rfb2ZmcyArIGldID0gc3JjW3NyY19vZmZzICsgaV07XG4gICAgfVxuICB9LFxuICAvLyBKb2luIGFycmF5IG9mIGNodW5rcyB0byBzaW5nbGUgYXJyYXkuXG4gIGZsYXR0ZW5DaHVua3M6IGZ1bmN0aW9uIChjaHVua3MpIHtcbiAgICByZXR1cm4gW10uY29uY2F0LmFwcGx5KFtdLCBjaHVua3MpO1xuICB9XG59O1xuXG5cbi8vIEVuYWJsZS9EaXNhYmxlIHR5cGVkIGFycmF5cyB1c2UsIGZvciB0ZXN0aW5nXG4vL1xuZXhwb3J0cy5zZXRUeXBlZCA9IGZ1bmN0aW9uIChvbikge1xuICBpZiAob24pIHtcbiAgICBleHBvcnRzLkJ1ZjggID0gVWludDhBcnJheTtcbiAgICBleHBvcnRzLkJ1ZjE2ID0gVWludDE2QXJyYXk7XG4gICAgZXhwb3J0cy5CdWYzMiA9IEludDMyQXJyYXk7XG4gICAgZXhwb3J0cy5hc3NpZ24oZXhwb3J0cywgZm5UeXBlZCk7XG4gIH0gZWxzZSB7XG4gICAgZXhwb3J0cy5CdWY4ICA9IEFycmF5O1xuICAgIGV4cG9ydHMuQnVmMTYgPSBBcnJheTtcbiAgICBleHBvcnRzLkJ1ZjMyID0gQXJyYXk7XG4gICAgZXhwb3J0cy5hc3NpZ24oZXhwb3J0cywgZm5VbnR5cGVkKTtcbiAgfVxufTtcblxuZXhwb3J0cy5zZXRUeXBlZChUWVBFRF9PSyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIE5vdGU6IGFkbGVyMzIgdGFrZXMgMTIlIGZvciBsZXZlbCAwIGFuZCAyJSBmb3IgbGV2ZWwgNi5cbi8vIEl0IGlzbid0IHdvcnRoIGl0IHRvIG1ha2UgYWRkaXRpb25hbCBvcHRpbWl6YXRpb25zIGFzIGluIG9yaWdpbmFsLlxuLy8gU21hbGwgc2l6ZSBpcyBwcmVmZXJhYmxlLlxuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbmZ1bmN0aW9uIGFkbGVyMzIoYWRsZXIsIGJ1ZiwgbGVuLCBwb3MpIHtcbiAgdmFyIHMxID0gKGFkbGVyICYgMHhmZmZmKSB8MCxcbiAgICAgIHMyID0gKChhZGxlciA+Pj4gMTYpICYgMHhmZmZmKSB8MCxcbiAgICAgIG4gPSAwO1xuXG4gIHdoaWxlIChsZW4gIT09IDApIHtcbiAgICAvLyBTZXQgbGltaXQgfiB0d2ljZSBsZXNzIHRoYW4gNTU1MiwgdG8ga2VlcFxuICAgIC8vIHMyIGluIDMxLWJpdHMsIGJlY2F1c2Ugd2UgZm9yY2Ugc2lnbmVkIGludHMuXG4gICAgLy8gaW4gb3RoZXIgY2FzZSAlPSB3aWxsIGZhaWwuXG4gICAgbiA9IGxlbiA+IDIwMDAgPyAyMDAwIDogbGVuO1xuICAgIGxlbiAtPSBuO1xuXG4gICAgZG8ge1xuICAgICAgczEgPSAoczEgKyBidWZbcG9zKytdKSB8MDtcbiAgICAgIHMyID0gKHMyICsgczEpIHwwO1xuICAgIH0gd2hpbGUgKC0tbik7XG5cbiAgICBzMSAlPSA2NTUyMTtcbiAgICBzMiAlPSA2NTUyMTtcbiAgfVxuXG4gIHJldHVybiAoczEgfCAoczIgPDwgMTYpKSB8MDtcbn1cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGFkbGVyMzI7XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG5cbiAgLyogQWxsb3dlZCBmbHVzaCB2YWx1ZXM7IHNlZSBkZWZsYXRlKCkgYW5kIGluZmxhdGUoKSBiZWxvdyBmb3IgZGV0YWlscyAqL1xuICBaX05PX0ZMVVNIOiAgICAgICAgIDAsXG4gIFpfUEFSVElBTF9GTFVTSDogICAgMSxcbiAgWl9TWU5DX0ZMVVNIOiAgICAgICAyLFxuICBaX0ZVTExfRkxVU0g6ICAgICAgIDMsXG4gIFpfRklOSVNIOiAgICAgICAgICAgNCxcbiAgWl9CTE9DSzogICAgICAgICAgICA1LFxuICBaX1RSRUVTOiAgICAgICAgICAgIDYsXG5cbiAgLyogUmV0dXJuIGNvZGVzIGZvciB0aGUgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBmdW5jdGlvbnMuIE5lZ2F0aXZlIHZhbHVlc1xuICAqIGFyZSBlcnJvcnMsIHBvc2l0aXZlIHZhbHVlcyBhcmUgdXNlZCBmb3Igc3BlY2lhbCBidXQgbm9ybWFsIGV2ZW50cy5cbiAgKi9cbiAgWl9PSzogICAgICAgICAgICAgICAwLFxuICBaX1NUUkVBTV9FTkQ6ICAgICAgIDEsXG4gIFpfTkVFRF9ESUNUOiAgICAgICAgMixcbiAgWl9FUlJOTzogICAgICAgICAgIC0xLFxuICBaX1NUUkVBTV9FUlJPUjogICAgLTIsXG4gIFpfREFUQV9FUlJPUjogICAgICAtMyxcbiAgLy9aX01FTV9FUlJPUjogICAgIC00LFxuICBaX0JVRl9FUlJPUjogICAgICAgLTUsXG4gIC8vWl9WRVJTSU9OX0VSUk9SOiAtNixcblxuICAvKiBjb21wcmVzc2lvbiBsZXZlbHMgKi9cbiAgWl9OT19DT01QUkVTU0lPTjogICAgICAgICAwLFxuICBaX0JFU1RfU1BFRUQ6ICAgICAgICAgICAgIDEsXG4gIFpfQkVTVF9DT01QUkVTU0lPTjogICAgICAgOSxcbiAgWl9ERUZBVUxUX0NPTVBSRVNTSU9OOiAgIC0xLFxuXG5cbiAgWl9GSUxURVJFRDogICAgICAgICAgICAgICAxLFxuICBaX0hVRkZNQU5fT05MWTogICAgICAgICAgIDIsXG4gIFpfUkxFOiAgICAgICAgICAgICAgICAgICAgMyxcbiAgWl9GSVhFRDogICAgICAgICAgICAgICAgICA0LFxuICBaX0RFRkFVTFRfU1RSQVRFR1k6ICAgICAgIDAsXG5cbiAgLyogUG9zc2libGUgdmFsdWVzIG9mIHRoZSBkYXRhX3R5cGUgZmllbGQgKHRob3VnaCBzZWUgaW5mbGF0ZSgpKSAqL1xuICBaX0JJTkFSWTogICAgICAgICAgICAgICAgIDAsXG4gIFpfVEVYVDogICAgICAgICAgICAgICAgICAgMSxcbiAgLy9aX0FTQ0lJOiAgICAgICAgICAgICAgICAxLCAvLyA9IFpfVEVYVCAoZGVwcmVjYXRlZClcbiAgWl9VTktOT1dOOiAgICAgICAgICAgICAgICAyLFxuXG4gIC8qIFRoZSBkZWZsYXRlIGNvbXByZXNzaW9uIG1ldGhvZCAqL1xuICBaX0RFRkxBVEVEOiAgICAgICAgICAgICAgIDhcbiAgLy9aX05VTEw6ICAgICAgICAgICAgICAgICBudWxsIC8vIFVzZSAtMSBvciBudWxsIGlubGluZSwgZGVwZW5kaW5nIG9uIHZhciB0eXBlXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyBOb3RlOiB3ZSBjYW4ndCBnZXQgc2lnbmlmaWNhbnQgc3BlZWQgYm9vc3QgaGVyZS5cbi8vIFNvIHdyaXRlIGNvZGUgdG8gbWluaW1pemUgc2l6ZSAtIG5vIHByZWdlbmVyYXRlZCB0YWJsZXNcbi8vIGFuZCBhcnJheSB0b29scyBkZXBlbmRlbmNpZXMuXG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxuLy8gVXNlIG9yZGluYXJ5IGFycmF5LCBzaW5jZSB1bnR5cGVkIG1ha2VzIG5vIGJvb3N0IGhlcmVcbmZ1bmN0aW9uIG1ha2VUYWJsZSgpIHtcbiAgdmFyIGMsIHRhYmxlID0gW107XG5cbiAgZm9yICh2YXIgbiA9IDA7IG4gPCAyNTY7IG4rKykge1xuICAgIGMgPSBuO1xuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgODsgaysrKSB7XG4gICAgICBjID0gKChjICYgMSkgPyAoMHhFREI4ODMyMCBeIChjID4+PiAxKSkgOiAoYyA+Pj4gMSkpO1xuICAgIH1cbiAgICB0YWJsZVtuXSA9IGM7XG4gIH1cblxuICByZXR1cm4gdGFibGU7XG59XG5cbi8vIENyZWF0ZSB0YWJsZSBvbiBsb2FkLiBKdXN0IDI1NSBzaWduZWQgbG9uZ3MuIE5vdCBhIHByb2JsZW0uXG52YXIgY3JjVGFibGUgPSBtYWtlVGFibGUoKTtcblxuXG5mdW5jdGlvbiBjcmMzMihjcmMsIGJ1ZiwgbGVuLCBwb3MpIHtcbiAgdmFyIHQgPSBjcmNUYWJsZSxcbiAgICAgIGVuZCA9IHBvcyArIGxlbjtcblxuICBjcmMgXj0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IHBvczsgaSA8IGVuZDsgaSsrKSB7XG4gICAgY3JjID0gKGNyYyA+Pj4gOCkgXiB0WyhjcmMgXiBidWZbaV0pICYgMHhGRl07XG4gIH1cblxuICByZXR1cm4gKGNyYyBeICgtMSkpOyAvLyA+Pj4gMDtcbn1cblxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyYzMyO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbnZhciB1dGlscyAgID0gcmVxdWlyZSgnLi4vdXRpbHMvY29tbW9uJyk7XG52YXIgdHJlZXMgICA9IHJlcXVpcmUoJy4vdHJlZXMnKTtcbnZhciBhZGxlcjMyID0gcmVxdWlyZSgnLi9hZGxlcjMyJyk7XG52YXIgY3JjMzIgICA9IHJlcXVpcmUoJy4vY3JjMzInKTtcbnZhciBtc2cgICAgID0gcmVxdWlyZSgnLi9tZXNzYWdlcycpO1xuXG4vKiBQdWJsaWMgY29uc3RhbnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG4vKiBBbGxvd2VkIGZsdXNoIHZhbHVlczsgc2VlIGRlZmxhdGUoKSBhbmQgaW5mbGF0ZSgpIGJlbG93IGZvciBkZXRhaWxzICovXG52YXIgWl9OT19GTFVTSCAgICAgID0gMDtcbnZhciBaX1BBUlRJQUxfRkxVU0ggPSAxO1xuLy92YXIgWl9TWU5DX0ZMVVNIICAgID0gMjtcbnZhciBaX0ZVTExfRkxVU0ggICAgPSAzO1xudmFyIFpfRklOSVNIICAgICAgICA9IDQ7XG52YXIgWl9CTE9DSyAgICAgICAgID0gNTtcbi8vdmFyIFpfVFJFRVMgICAgICAgICA9IDY7XG5cblxuLyogUmV0dXJuIGNvZGVzIGZvciB0aGUgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBmdW5jdGlvbnMuIE5lZ2F0aXZlIHZhbHVlc1xuICogYXJlIGVycm9ycywgcG9zaXRpdmUgdmFsdWVzIGFyZSB1c2VkIGZvciBzcGVjaWFsIGJ1dCBub3JtYWwgZXZlbnRzLlxuICovXG52YXIgWl9PSyAgICAgICAgICAgID0gMDtcbnZhciBaX1NUUkVBTV9FTkQgICAgPSAxO1xuLy92YXIgWl9ORUVEX0RJQ1QgICAgID0gMjtcbi8vdmFyIFpfRVJSTk8gICAgICAgICA9IC0xO1xudmFyIFpfU1RSRUFNX0VSUk9SICA9IC0yO1xudmFyIFpfREFUQV9FUlJPUiAgICA9IC0zO1xuLy92YXIgWl9NRU1fRVJST1IgICAgID0gLTQ7XG52YXIgWl9CVUZfRVJST1IgICAgID0gLTU7XG4vL3ZhciBaX1ZFUlNJT05fRVJST1IgPSAtNjtcblxuXG4vKiBjb21wcmVzc2lvbiBsZXZlbHMgKi9cbi8vdmFyIFpfTk9fQ09NUFJFU1NJT04gICAgICA9IDA7XG4vL3ZhciBaX0JFU1RfU1BFRUQgICAgICAgICAgPSAxO1xuLy92YXIgWl9CRVNUX0NPTVBSRVNTSU9OICAgID0gOTtcbnZhciBaX0RFRkFVTFRfQ09NUFJFU1NJT04gPSAtMTtcblxuXG52YXIgWl9GSUxURVJFRCAgICAgICAgICAgID0gMTtcbnZhciBaX0hVRkZNQU5fT05MWSAgICAgICAgPSAyO1xudmFyIFpfUkxFICAgICAgICAgICAgICAgICA9IDM7XG52YXIgWl9GSVhFRCAgICAgICAgICAgICAgID0gNDtcbnZhciBaX0RFRkFVTFRfU1RSQVRFR1kgICAgPSAwO1xuXG4vKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovXG4vL3ZhciBaX0JJTkFSWSAgICAgICAgICAgICAgPSAwO1xuLy92YXIgWl9URVhUICAgICAgICAgICAgICAgID0gMTtcbi8vdmFyIFpfQVNDSUkgICAgICAgICAgICAgICA9IDE7IC8vID0gWl9URVhUXG52YXIgWl9VTktOT1dOICAgICAgICAgICAgID0gMjtcblxuXG4vKiBUaGUgZGVmbGF0ZSBjb21wcmVzc2lvbiBtZXRob2QgKi9cbnZhciBaX0RFRkxBVEVEICA9IDg7XG5cbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblxudmFyIE1BWF9NRU1fTEVWRUwgPSA5O1xuLyogTWF4aW11bSB2YWx1ZSBmb3IgbWVtTGV2ZWwgaW4gZGVmbGF0ZUluaXQyICovXG52YXIgTUFYX1dCSVRTID0gMTU7XG4vKiAzMksgTFo3NyB3aW5kb3cgKi9cbnZhciBERUZfTUVNX0xFVkVMID0gODtcblxuXG52YXIgTEVOR1RIX0NPREVTICA9IDI5O1xuLyogbnVtYmVyIG9mIGxlbmd0aCBjb2Rlcywgbm90IGNvdW50aW5nIHRoZSBzcGVjaWFsIEVORF9CTE9DSyBjb2RlICovXG52YXIgTElURVJBTFMgICAgICA9IDI1Njtcbi8qIG51bWJlciBvZiBsaXRlcmFsIGJ5dGVzIDAuLjI1NSAqL1xudmFyIExfQ09ERVMgICAgICAgPSBMSVRFUkFMUyArIDEgKyBMRU5HVEhfQ09ERVM7XG4vKiBudW1iZXIgb2YgTGl0ZXJhbCBvciBMZW5ndGggY29kZXMsIGluY2x1ZGluZyB0aGUgRU5EX0JMT0NLIGNvZGUgKi9cbnZhciBEX0NPREVTICAgICAgID0gMzA7XG4vKiBudW1iZXIgb2YgZGlzdGFuY2UgY29kZXMgKi9cbnZhciBCTF9DT0RFUyAgICAgID0gMTk7XG4vKiBudW1iZXIgb2YgY29kZXMgdXNlZCB0byB0cmFuc2ZlciB0aGUgYml0IGxlbmd0aHMgKi9cbnZhciBIRUFQX1NJWkUgICAgID0gMiAqIExfQ09ERVMgKyAxO1xuLyogbWF4aW11bSBoZWFwIHNpemUgKi9cbnZhciBNQVhfQklUUyAgPSAxNTtcbi8qIEFsbCBjb2RlcyBtdXN0IG5vdCBleGNlZWQgTUFYX0JJVFMgYml0cyAqL1xuXG52YXIgTUlOX01BVENIID0gMztcbnZhciBNQVhfTUFUQ0ggPSAyNTg7XG52YXIgTUlOX0xPT0tBSEVBRCA9IChNQVhfTUFUQ0ggKyBNSU5fTUFUQ0ggKyAxKTtcblxudmFyIFBSRVNFVF9ESUNUID0gMHgyMDtcblxudmFyIElOSVRfU1RBVEUgPSA0MjtcbnZhciBFWFRSQV9TVEFURSA9IDY5O1xudmFyIE5BTUVfU1RBVEUgPSA3MztcbnZhciBDT01NRU5UX1NUQVRFID0gOTE7XG52YXIgSENSQ19TVEFURSA9IDEwMztcbnZhciBCVVNZX1NUQVRFID0gMTEzO1xudmFyIEZJTklTSF9TVEFURSA9IDY2NjtcblxudmFyIEJTX05FRURfTU9SRSAgICAgID0gMTsgLyogYmxvY2sgbm90IGNvbXBsZXRlZCwgbmVlZCBtb3JlIGlucHV0IG9yIG1vcmUgb3V0cHV0ICovXG52YXIgQlNfQkxPQ0tfRE9ORSAgICAgPSAyOyAvKiBibG9jayBmbHVzaCBwZXJmb3JtZWQgKi9cbnZhciBCU19GSU5JU0hfU1RBUlRFRCA9IDM7IC8qIGZpbmlzaCBzdGFydGVkLCBuZWVkIG9ubHkgbW9yZSBvdXRwdXQgYXQgbmV4dCBkZWZsYXRlICovXG52YXIgQlNfRklOSVNIX0RPTkUgICAgPSA0OyAvKiBmaW5pc2ggZG9uZSwgYWNjZXB0IG5vIG1vcmUgaW5wdXQgb3Igb3V0cHV0ICovXG5cbnZhciBPU19DT0RFID0gMHgwMzsgLy8gVW5peCA6KSAuIERvbid0IGRldGVjdCwgdXNlIHRoaXMgZGVmYXVsdC5cblxuZnVuY3Rpb24gZXJyKHN0cm0sIGVycm9yQ29kZSkge1xuICBzdHJtLm1zZyA9IG1zZ1tlcnJvckNvZGVdO1xuICByZXR1cm4gZXJyb3JDb2RlO1xufVxuXG5mdW5jdGlvbiByYW5rKGYpIHtcbiAgcmV0dXJuICgoZikgPDwgMSkgLSAoKGYpID4gNCA/IDkgOiAwKTtcbn1cblxuZnVuY3Rpb24gemVybyhidWYpIHsgdmFyIGxlbiA9IGJ1Zi5sZW5ndGg7IHdoaWxlICgtLWxlbiA+PSAwKSB7IGJ1ZltsZW5dID0gMDsgfSB9XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogRmx1c2ggYXMgbXVjaCBwZW5kaW5nIG91dHB1dCBhcyBwb3NzaWJsZS4gQWxsIGRlZmxhdGUoKSBvdXRwdXQgZ29lc1xuICogdGhyb3VnaCB0aGlzIGZ1bmN0aW9uIHNvIHNvbWUgYXBwbGljYXRpb25zIG1heSB3aXNoIHRvIG1vZGlmeSBpdFxuICogdG8gYXZvaWQgYWxsb2NhdGluZyBhIGxhcmdlIHN0cm0tPm91dHB1dCBidWZmZXIgYW5kIGNvcHlpbmcgaW50byBpdC5cbiAqIChTZWUgYWxzbyByZWFkX2J1ZigpKS5cbiAqL1xuZnVuY3Rpb24gZmx1c2hfcGVuZGluZyhzdHJtKSB7XG4gIHZhciBzID0gc3RybS5zdGF0ZTtcblxuICAvL190cl9mbHVzaF9iaXRzKHMpO1xuICB2YXIgbGVuID0gcy5wZW5kaW5nO1xuICBpZiAobGVuID4gc3RybS5hdmFpbF9vdXQpIHtcbiAgICBsZW4gPSBzdHJtLmF2YWlsX291dDtcbiAgfVxuICBpZiAobGVuID09PSAwKSB7IHJldHVybjsgfVxuXG4gIHV0aWxzLmFycmF5U2V0KHN0cm0ub3V0cHV0LCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmdfb3V0LCBsZW4sIHN0cm0ubmV4dF9vdXQpO1xuICBzdHJtLm5leHRfb3V0ICs9IGxlbjtcbiAgcy5wZW5kaW5nX291dCArPSBsZW47XG4gIHN0cm0udG90YWxfb3V0ICs9IGxlbjtcbiAgc3RybS5hdmFpbF9vdXQgLT0gbGVuO1xuICBzLnBlbmRpbmcgLT0gbGVuO1xuICBpZiAocy5wZW5kaW5nID09PSAwKSB7XG4gICAgcy5wZW5kaW5nX291dCA9IDA7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBmbHVzaF9ibG9ja19vbmx5KHMsIGxhc3QpIHtcbiAgdHJlZXMuX3RyX2ZsdXNoX2Jsb2NrKHMsIChzLmJsb2NrX3N0YXJ0ID49IDAgPyBzLmJsb2NrX3N0YXJ0IDogLTEpLCBzLnN0cnN0YXJ0IC0gcy5ibG9ja19zdGFydCwgbGFzdCk7XG4gIHMuYmxvY2tfc3RhcnQgPSBzLnN0cnN0YXJ0O1xuICBmbHVzaF9wZW5kaW5nKHMuc3RybSk7XG59XG5cblxuZnVuY3Rpb24gcHV0X2J5dGUocywgYikge1xuICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9IGI7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogUHV0IGEgc2hvcnQgaW4gdGhlIHBlbmRpbmcgYnVmZmVyLiBUaGUgMTYtYml0IHZhbHVlIGlzIHB1dCBpbiBNU0Igb3JkZXIuXG4gKiBJTiBhc3NlcnRpb246IHRoZSBzdHJlYW0gc3RhdGUgaXMgY29ycmVjdCBhbmQgdGhlcmUgaXMgZW5vdWdoIHJvb20gaW5cbiAqIHBlbmRpbmdfYnVmLlxuICovXG5mdW5jdGlvbiBwdXRTaG9ydE1TQihzLCBiKSB7XG4vLyAgcHV0X2J5dGUocywgKEJ5dGUpKGIgPj4gOCkpO1xuLy8gIHB1dF9ieXRlKHMsIChCeXRlKShiICYgMHhmZikpO1xuICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9IChiID4+PiA4KSAmIDB4ZmY7XG4gIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gYiAmIDB4ZmY7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBSZWFkIGEgbmV3IGJ1ZmZlciBmcm9tIHRoZSBjdXJyZW50IGlucHV0IHN0cmVhbSwgdXBkYXRlIHRoZSBhZGxlcjMyXG4gKiBhbmQgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBBbGwgZGVmbGF0ZSgpIGlucHV0IGdvZXMgdGhyb3VnaFxuICogdGhpcyBmdW5jdGlvbiBzbyBzb21lIGFwcGxpY2F0aW9ucyBtYXkgd2lzaCB0byBtb2RpZnkgaXQgdG8gYXZvaWRcbiAqIGFsbG9jYXRpbmcgYSBsYXJnZSBzdHJtLT5pbnB1dCBidWZmZXIgYW5kIGNvcHlpbmcgZnJvbSBpdC5cbiAqIChTZWUgYWxzbyBmbHVzaF9wZW5kaW5nKCkpLlxuICovXG5mdW5jdGlvbiByZWFkX2J1ZihzdHJtLCBidWYsIHN0YXJ0LCBzaXplKSB7XG4gIHZhciBsZW4gPSBzdHJtLmF2YWlsX2luO1xuXG4gIGlmIChsZW4gPiBzaXplKSB7IGxlbiA9IHNpemU7IH1cbiAgaWYgKGxlbiA9PT0gMCkgeyByZXR1cm4gMDsgfVxuXG4gIHN0cm0uYXZhaWxfaW4gLT0gbGVuO1xuXG4gIC8vIHptZW1jcHkoYnVmLCBzdHJtLT5uZXh0X2luLCBsZW4pO1xuICB1dGlscy5hcnJheVNldChidWYsIHN0cm0uaW5wdXQsIHN0cm0ubmV4dF9pbiwgbGVuLCBzdGFydCk7XG4gIGlmIChzdHJtLnN0YXRlLndyYXAgPT09IDEpIHtcbiAgICBzdHJtLmFkbGVyID0gYWRsZXIzMihzdHJtLmFkbGVyLCBidWYsIGxlbiwgc3RhcnQpO1xuICB9XG5cbiAgZWxzZSBpZiAoc3RybS5zdGF0ZS53cmFwID09PSAyKSB7XG4gICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIGJ1ZiwgbGVuLCBzdGFydCk7XG4gIH1cblxuICBzdHJtLm5leHRfaW4gKz0gbGVuO1xuICBzdHJtLnRvdGFsX2luICs9IGxlbjtcblxuICByZXR1cm4gbGVuO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2V0IG1hdGNoX3N0YXJ0IHRvIHRoZSBsb25nZXN0IG1hdGNoIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBzdHJpbmcgYW5kXG4gKiByZXR1cm4gaXRzIGxlbmd0aC4gTWF0Y2hlcyBzaG9ydGVyIG9yIGVxdWFsIHRvIHByZXZfbGVuZ3RoIGFyZSBkaXNjYXJkZWQsXG4gKiBpbiB3aGljaCBjYXNlIHRoZSByZXN1bHQgaXMgZXF1YWwgdG8gcHJldl9sZW5ndGggYW5kIG1hdGNoX3N0YXJ0IGlzXG4gKiBnYXJiYWdlLlxuICogSU4gYXNzZXJ0aW9uczogY3VyX21hdGNoIGlzIHRoZSBoZWFkIG9mIHRoZSBoYXNoIGNoYWluIGZvciB0aGUgY3VycmVudFxuICogICBzdHJpbmcgKHN0cnN0YXJ0KSBhbmQgaXRzIGRpc3RhbmNlIGlzIDw9IE1BWF9ESVNULCBhbmQgcHJldl9sZW5ndGggPj0gMVxuICogT1VUIGFzc2VydGlvbjogdGhlIG1hdGNoIGxlbmd0aCBpcyBub3QgZ3JlYXRlciB0aGFuIHMtPmxvb2thaGVhZC5cbiAqL1xuZnVuY3Rpb24gbG9uZ2VzdF9tYXRjaChzLCBjdXJfbWF0Y2gpIHtcbiAgdmFyIGNoYWluX2xlbmd0aCA9IHMubWF4X2NoYWluX2xlbmd0aDsgICAgICAvKiBtYXggaGFzaCBjaGFpbiBsZW5ndGggKi9cbiAgdmFyIHNjYW4gPSBzLnN0cnN0YXJ0OyAvKiBjdXJyZW50IHN0cmluZyAqL1xuICB2YXIgbWF0Y2g7ICAgICAgICAgICAgICAgICAgICAgICAvKiBtYXRjaGVkIHN0cmluZyAqL1xuICB2YXIgbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBvZiBjdXJyZW50IG1hdGNoICovXG4gIHZhciBiZXN0X2xlbiA9IHMucHJldl9sZW5ndGg7ICAgICAgICAgICAgICAvKiBiZXN0IG1hdGNoIGxlbmd0aCBzbyBmYXIgKi9cbiAgdmFyIG5pY2VfbWF0Y2ggPSBzLm5pY2VfbWF0Y2g7ICAgICAgICAgICAgIC8qIHN0b3AgaWYgbWF0Y2ggbG9uZyBlbm91Z2ggKi9cbiAgdmFyIGxpbWl0ID0gKHMuc3Ryc3RhcnQgPiAocy53X3NpemUgLSBNSU5fTE9PS0FIRUFEKSkgP1xuICAgICAgcy5zdHJzdGFydCAtIChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpIDogMC8qTklMKi87XG5cbiAgdmFyIF93aW4gPSBzLndpbmRvdzsgLy8gc2hvcnRjdXRcblxuICB2YXIgd21hc2sgPSBzLndfbWFzaztcbiAgdmFyIHByZXYgID0gcy5wcmV2O1xuXG4gIC8qIFN0b3Agd2hlbiBjdXJfbWF0Y2ggYmVjb21lcyA8PSBsaW1pdC4gVG8gc2ltcGxpZnkgdGhlIGNvZGUsXG4gICAqIHdlIHByZXZlbnQgbWF0Y2hlcyB3aXRoIHRoZSBzdHJpbmcgb2Ygd2luZG93IGluZGV4IDAuXG4gICAqL1xuXG4gIHZhciBzdHJlbmQgPSBzLnN0cnN0YXJ0ICsgTUFYX01BVENIO1xuICB2YXIgc2Nhbl9lbmQxICA9IF93aW5bc2NhbiArIGJlc3RfbGVuIC0gMV07XG4gIHZhciBzY2FuX2VuZCAgID0gX3dpbltzY2FuICsgYmVzdF9sZW5dO1xuXG4gIC8qIFRoZSBjb2RlIGlzIG9wdGltaXplZCBmb3IgSEFTSF9CSVRTID49IDggYW5kIE1BWF9NQVRDSC0yIG11bHRpcGxlIG9mIDE2LlxuICAgKiBJdCBpcyBlYXN5IHRvIGdldCByaWQgb2YgdGhpcyBvcHRpbWl6YXRpb24gaWYgbmVjZXNzYXJ5LlxuICAgKi9cbiAgLy8gQXNzZXJ0KHMtPmhhc2hfYml0cyA+PSA4ICYmIE1BWF9NQVRDSCA9PSAyNTgsIFwiQ29kZSB0b28gY2xldmVyXCIpO1xuXG4gIC8qIERvIG5vdCB3YXN0ZSB0b28gbXVjaCB0aW1lIGlmIHdlIGFscmVhZHkgaGF2ZSBhIGdvb2QgbWF0Y2g6ICovXG4gIGlmIChzLnByZXZfbGVuZ3RoID49IHMuZ29vZF9tYXRjaCkge1xuICAgIGNoYWluX2xlbmd0aCA+Pj0gMjtcbiAgfVxuICAvKiBEbyBub3QgbG9vayBmb3IgbWF0Y2hlcyBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgaW5wdXQuIFRoaXMgaXMgbmVjZXNzYXJ5XG4gICAqIHRvIG1ha2UgZGVmbGF0ZSBkZXRlcm1pbmlzdGljLlxuICAgKi9cbiAgaWYgKG5pY2VfbWF0Y2ggPiBzLmxvb2thaGVhZCkgeyBuaWNlX21hdGNoID0gcy5sb29rYWhlYWQ7IH1cblxuICAvLyBBc3NlcnQoKHVsZylzLT5zdHJzdGFydCA8PSBzLT53aW5kb3dfc2l6ZS1NSU5fTE9PS0FIRUFELCBcIm5lZWQgbG9va2FoZWFkXCIpO1xuXG4gIGRvIHtcbiAgICAvLyBBc3NlcnQoY3VyX21hdGNoIDwgcy0+c3Ryc3RhcnQsIFwibm8gZnV0dXJlXCIpO1xuICAgIG1hdGNoID0gY3VyX21hdGNoO1xuXG4gICAgLyogU2tpcCB0byBuZXh0IG1hdGNoIGlmIHRoZSBtYXRjaCBsZW5ndGggY2Fubm90IGluY3JlYXNlXG4gICAgICogb3IgaWYgdGhlIG1hdGNoIGxlbmd0aCBpcyBsZXNzIHRoYW4gMi4gIE5vdGUgdGhhdCB0aGUgY2hlY2tzIGJlbG93XG4gICAgICogZm9yIGluc3VmZmljaWVudCBsb29rYWhlYWQgb25seSBvY2N1ciBvY2Nhc2lvbmFsbHkgZm9yIHBlcmZvcm1hbmNlXG4gICAgICogcmVhc29ucy4gIFRoZXJlZm9yZSB1bmluaXRpYWxpemVkIG1lbW9yeSB3aWxsIGJlIGFjY2Vzc2VkLCBhbmRcbiAgICAgKiBjb25kaXRpb25hbCBqdW1wcyB3aWxsIGJlIG1hZGUgdGhhdCBkZXBlbmQgb24gdGhvc2UgdmFsdWVzLlxuICAgICAqIEhvd2V2ZXIgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2ggaXMgbGltaXRlZCB0byB0aGUgbG9va2FoZWFkLCBzb1xuICAgICAqIHRoZSBvdXRwdXQgb2YgZGVmbGF0ZSBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLlxuICAgICAqL1xuXG4gICAgaWYgKF93aW5bbWF0Y2ggKyBiZXN0X2xlbl0gICAgICE9PSBzY2FuX2VuZCAgfHxcbiAgICAgICAgX3dpblttYXRjaCArIGJlc3RfbGVuIC0gMV0gIT09IHNjYW5fZW5kMSB8fFxuICAgICAgICBfd2luW21hdGNoXSAgICAgICAgICAgICAgICAhPT0gX3dpbltzY2FuXSB8fFxuICAgICAgICBfd2luWysrbWF0Y2hdICAgICAgICAgICAgICAhPT0gX3dpbltzY2FuICsgMV0pIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qIFRoZSBjaGVjayBhdCBiZXN0X2xlbi0xIGNhbiBiZSByZW1vdmVkIGJlY2F1c2UgaXQgd2lsbCBiZSBtYWRlXG4gICAgICogYWdhaW4gbGF0ZXIuIChUaGlzIGhldXJpc3RpYyBpcyBub3QgYWx3YXlzIGEgd2luLilcbiAgICAgKiBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNvbXBhcmUgc2NhblsyXSBhbmQgbWF0Y2hbMl0gc2luY2UgdGhleVxuICAgICAqIGFyZSBhbHdheXMgZXF1YWwgd2hlbiB0aGUgb3RoZXIgYnl0ZXMgbWF0Y2gsIGdpdmVuIHRoYXRcbiAgICAgKiB0aGUgaGFzaCBrZXlzIGFyZSBlcXVhbCBhbmQgdGhhdCBIQVNIX0JJVFMgPj0gOC5cbiAgICAgKi9cbiAgICBzY2FuICs9IDI7XG4gICAgbWF0Y2grKztcbiAgICAvLyBBc3NlcnQoKnNjYW4gPT0gKm1hdGNoLCBcIm1hdGNoWzJdP1wiKTtcblxuICAgIC8qIFdlIGNoZWNrIGZvciBpbnN1ZmZpY2llbnQgbG9va2FoZWFkIG9ubHkgZXZlcnkgOHRoIGNvbXBhcmlzb247XG4gICAgICogdGhlIDI1NnRoIGNoZWNrIHdpbGwgYmUgbWFkZSBhdCBzdHJzdGFydCsyNTguXG4gICAgICovXG4gICAgZG8ge1xuICAgICAgLypqc2hpbnQgbm9lbXB0eTpmYWxzZSovXG4gICAgfSB3aGlsZSAoX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmIF93aW5bKytzY2FuXSA9PT0gX3dpblsrK21hdGNoXSAmJlxuICAgICAgICAgICAgIF93aW5bKytzY2FuXSA9PT0gX3dpblsrK21hdGNoXSAmJiBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiZcbiAgICAgICAgICAgICBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmXG4gICAgICAgICAgICAgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmIF93aW5bKytzY2FuXSA9PT0gX3dpblsrK21hdGNoXSAmJlxuICAgICAgICAgICAgIHNjYW4gPCBzdHJlbmQpO1xuXG4gICAgLy8gQXNzZXJ0KHNjYW4gPD0gcy0+d2luZG93Kyh1bnNpZ25lZCkocy0+d2luZG93X3NpemUtMSksIFwid2lsZCBzY2FuXCIpO1xuXG4gICAgbGVuID0gTUFYX01BVENIIC0gKHN0cmVuZCAtIHNjYW4pO1xuICAgIHNjYW4gPSBzdHJlbmQgLSBNQVhfTUFUQ0g7XG5cbiAgICBpZiAobGVuID4gYmVzdF9sZW4pIHtcbiAgICAgIHMubWF0Y2hfc3RhcnQgPSBjdXJfbWF0Y2g7XG4gICAgICBiZXN0X2xlbiA9IGxlbjtcbiAgICAgIGlmIChsZW4gPj0gbmljZV9tYXRjaCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHNjYW5fZW5kMSAgPSBfd2luW3NjYW4gKyBiZXN0X2xlbiAtIDFdO1xuICAgICAgc2Nhbl9lbmQgICA9IF93aW5bc2NhbiArIGJlc3RfbGVuXTtcbiAgICB9XG4gIH0gd2hpbGUgKChjdXJfbWF0Y2ggPSBwcmV2W2N1cl9tYXRjaCAmIHdtYXNrXSkgPiBsaW1pdCAmJiAtLWNoYWluX2xlbmd0aCAhPT0gMCk7XG5cbiAgaWYgKGJlc3RfbGVuIDw9IHMubG9va2FoZWFkKSB7XG4gICAgcmV0dXJuIGJlc3RfbGVuO1xuICB9XG4gIHJldHVybiBzLmxvb2thaGVhZDtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEZpbGwgdGhlIHdpbmRvdyB3aGVuIHRoZSBsb29rYWhlYWQgYmVjb21lcyBpbnN1ZmZpY2llbnQuXG4gKiBVcGRhdGVzIHN0cnN0YXJ0IGFuZCBsb29rYWhlYWQuXG4gKlxuICogSU4gYXNzZXJ0aW9uOiBsb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEXG4gKiBPVVQgYXNzZXJ0aW9uczogc3Ryc3RhcnQgPD0gd2luZG93X3NpemUtTUlOX0xPT0tBSEVBRFxuICogICAgQXQgbGVhc3Qgb25lIGJ5dGUgaGFzIGJlZW4gcmVhZCwgb3IgYXZhaWxfaW4gPT0gMDsgcmVhZHMgYXJlXG4gKiAgICBwZXJmb3JtZWQgZm9yIGF0IGxlYXN0IHR3byBieXRlcyAocmVxdWlyZWQgZm9yIHRoZSB6aXAgdHJhbnNsYXRlX2VvbFxuICogICAgb3B0aW9uIC0tIG5vdCBzdXBwb3J0ZWQgaGVyZSkuXG4gKi9cbmZ1bmN0aW9uIGZpbGxfd2luZG93KHMpIHtcbiAgdmFyIF93X3NpemUgPSBzLndfc2l6ZTtcbiAgdmFyIHAsIG4sIG0sIG1vcmUsIHN0cjtcblxuICAvL0Fzc2VydChzLT5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFELCBcImFscmVhZHkgZW5vdWdoIGxvb2thaGVhZFwiKTtcblxuICBkbyB7XG4gICAgbW9yZSA9IHMud2luZG93X3NpemUgLSBzLmxvb2thaGVhZCAtIHMuc3Ryc3RhcnQ7XG5cbiAgICAvLyBKUyBpbnRzIGhhdmUgMzIgYml0LCBibG9jayBiZWxvdyBub3QgbmVlZGVkXG4gICAgLyogRGVhbCB3aXRoICFAIyQlIDY0SyBsaW1pdDogKi9cbiAgICAvL2lmIChzaXplb2YoaW50KSA8PSAyKSB7XG4gICAgLy8gICAgaWYgKG1vcmUgPT0gMCAmJiBzLT5zdHJzdGFydCA9PSAwICYmIHMtPmxvb2thaGVhZCA9PSAwKSB7XG4gICAgLy8gICAgICAgIG1vcmUgPSB3c2l6ZTtcbiAgICAvL1xuICAgIC8vICB9IGVsc2UgaWYgKG1vcmUgPT0gKHVuc2lnbmVkKSgtMSkpIHtcbiAgICAvLyAgICAgICAgLyogVmVyeSB1bmxpa2VseSwgYnV0IHBvc3NpYmxlIG9uIDE2IGJpdCBtYWNoaW5lIGlmXG4gICAgLy8gICAgICAgICAqIHN0cnN0YXJ0ID09IDAgJiYgbG9va2FoZWFkID09IDEgKGlucHV0IGRvbmUgYSBieXRlIGF0IHRpbWUpXG4gICAgLy8gICAgICAgICAqL1xuICAgIC8vICAgICAgICBtb3JlLS07XG4gICAgLy8gICAgfVxuICAgIC8vfVxuXG5cbiAgICAvKiBJZiB0aGUgd2luZG93IGlzIGFsbW9zdCBmdWxsIGFuZCB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgbG9va2FoZWFkLFxuICAgICAqIG1vdmUgdGhlIHVwcGVyIGhhbGYgdG8gdGhlIGxvd2VyIG9uZSB0byBtYWtlIHJvb20gaW4gdGhlIHVwcGVyIGhhbGYuXG4gICAgICovXG4gICAgaWYgKHMuc3Ryc3RhcnQgPj0gX3dfc2l6ZSArIChfd19zaXplIC0gTUlOX0xPT0tBSEVBRCkpIHtcblxuICAgICAgdXRpbHMuYXJyYXlTZXQocy53aW5kb3csIHMud2luZG93LCBfd19zaXplLCBfd19zaXplLCAwKTtcbiAgICAgIHMubWF0Y2hfc3RhcnQgLT0gX3dfc2l6ZTtcbiAgICAgIHMuc3Ryc3RhcnQgLT0gX3dfc2l6ZTtcbiAgICAgIC8qIHdlIG5vdyBoYXZlIHN0cnN0YXJ0ID49IE1BWF9ESVNUICovXG4gICAgICBzLmJsb2NrX3N0YXJ0IC09IF93X3NpemU7XG5cbiAgICAgIC8qIFNsaWRlIHRoZSBoYXNoIHRhYmxlIChjb3VsZCBiZSBhdm9pZGVkIHdpdGggMzIgYml0IHZhbHVlc1xuICAgICAgIGF0IHRoZSBleHBlbnNlIG9mIG1lbW9yeSB1c2FnZSkuIFdlIHNsaWRlIGV2ZW4gd2hlbiBsZXZlbCA9PSAwXG4gICAgICAgdG8ga2VlcCB0aGUgaGFzaCB0YWJsZSBjb25zaXN0ZW50IGlmIHdlIHN3aXRjaCBiYWNrIHRvIGxldmVsID4gMFxuICAgICAgIGxhdGVyLiAoVXNpbmcgbGV2ZWwgMCBwZXJtYW5lbnRseSBpcyBub3QgYW4gb3B0aW1hbCB1c2FnZSBvZlxuICAgICAgIHpsaWIsIHNvIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhpcyBwYXRob2xvZ2ljYWwgY2FzZS4pXG4gICAgICAgKi9cblxuICAgICAgbiA9IHMuaGFzaF9zaXplO1xuICAgICAgcCA9IG47XG4gICAgICBkbyB7XG4gICAgICAgIG0gPSBzLmhlYWRbLS1wXTtcbiAgICAgICAgcy5oZWFkW3BdID0gKG0gPj0gX3dfc2l6ZSA/IG0gLSBfd19zaXplIDogMCk7XG4gICAgICB9IHdoaWxlICgtLW4pO1xuXG4gICAgICBuID0gX3dfc2l6ZTtcbiAgICAgIHAgPSBuO1xuICAgICAgZG8ge1xuICAgICAgICBtID0gcy5wcmV2Wy0tcF07XG4gICAgICAgIHMucHJldltwXSA9IChtID49IF93X3NpemUgPyBtIC0gX3dfc2l6ZSA6IDApO1xuICAgICAgICAvKiBJZiBuIGlzIG5vdCBvbiBhbnkgaGFzaCBjaGFpbiwgcHJldltuXSBpcyBnYXJiYWdlIGJ1dFxuICAgICAgICAgKiBpdHMgdmFsdWUgd2lsbCBuZXZlciBiZSB1c2VkLlxuICAgICAgICAgKi9cbiAgICAgIH0gd2hpbGUgKC0tbik7XG5cbiAgICAgIG1vcmUgKz0gX3dfc2l6ZTtcbiAgICB9XG4gICAgaWYgKHMuc3RybS5hdmFpbF9pbiA9PT0gMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLyogSWYgdGhlcmUgd2FzIG5vIHNsaWRpbmc6XG4gICAgICogICAgc3Ryc3RhcnQgPD0gV1NJWkUrTUFYX0RJU1QtMSAmJiBsb29rYWhlYWQgPD0gTUlOX0xPT0tBSEVBRCAtIDEgJiZcbiAgICAgKiAgICBtb3JlID09IHdpbmRvd19zaXplIC0gbG9va2FoZWFkIC0gc3Ryc3RhcnRcbiAgICAgKiA9PiBtb3JlID49IHdpbmRvd19zaXplIC0gKE1JTl9MT09LQUhFQUQtMSArIFdTSVpFICsgTUFYX0RJU1QtMSlcbiAgICAgKiA9PiBtb3JlID49IHdpbmRvd19zaXplIC0gMipXU0laRSArIDJcbiAgICAgKiBJbiB0aGUgQklHX01FTSBvciBNTUFQIGNhc2UgKG5vdCB5ZXQgc3VwcG9ydGVkKSxcbiAgICAgKiAgIHdpbmRvd19zaXplID09IGlucHV0X3NpemUgKyBNSU5fTE9PS0FIRUFEICAmJlxuICAgICAqICAgc3Ryc3RhcnQgKyBzLT5sb29rYWhlYWQgPD0gaW5wdXRfc2l6ZSA9PiBtb3JlID49IE1JTl9MT09LQUhFQUQuXG4gICAgICogT3RoZXJ3aXNlLCB3aW5kb3dfc2l6ZSA9PSAyKldTSVpFIHNvIG1vcmUgPj0gMi5cbiAgICAgKiBJZiB0aGVyZSB3YXMgc2xpZGluZywgbW9yZSA+PSBXU0laRS4gU28gaW4gYWxsIGNhc2VzLCBtb3JlID49IDIuXG4gICAgICovXG4gICAgLy9Bc3NlcnQobW9yZSA+PSAyLCBcIm1vcmUgPCAyXCIpO1xuICAgIG4gPSByZWFkX2J1ZihzLnN0cm0sIHMud2luZG93LCBzLnN0cnN0YXJ0ICsgcy5sb29rYWhlYWQsIG1vcmUpO1xuICAgIHMubG9va2FoZWFkICs9IG47XG5cbiAgICAvKiBJbml0aWFsaXplIHRoZSBoYXNoIHZhbHVlIG5vdyB0aGF0IHdlIGhhdmUgc29tZSBpbnB1dDogKi9cbiAgICBpZiAocy5sb29rYWhlYWQgKyBzLmluc2VydCA+PSBNSU5fTUFUQ0gpIHtcbiAgICAgIHN0ciA9IHMuc3Ryc3RhcnQgLSBzLmluc2VydDtcbiAgICAgIHMuaW5zX2ggPSBzLndpbmRvd1tzdHJdO1xuXG4gICAgICAvKiBVUERBVEVfSEFTSChzLCBzLT5pbnNfaCwgcy0+d2luZG93W3N0ciArIDFdKTsgKi9cbiAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3N0ciArIDFdKSAmIHMuaGFzaF9tYXNrO1xuLy8jaWYgTUlOX01BVENIICE9IDNcbi8vICAgICAgICBDYWxsIHVwZGF0ZV9oYXNoKCkgTUlOX01BVENILTMgbW9yZSB0aW1lc1xuLy8jZW5kaWZcbiAgICAgIHdoaWxlIChzLmluc2VydCkge1xuICAgICAgICAvKiBVUERBVEVfSEFTSChzLCBzLT5pbnNfaCwgcy0+d2luZG93W3N0ciArIE1JTl9NQVRDSC0xXSk7ICovXG4gICAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3N0ciArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrO1xuXG4gICAgICAgIHMucHJldltzdHIgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07XG4gICAgICAgIHMuaGVhZFtzLmluc19oXSA9IHN0cjtcbiAgICAgICAgc3RyKys7XG4gICAgICAgIHMuaW5zZXJ0LS07XG4gICAgICAgIGlmIChzLmxvb2thaGVhZCArIHMuaW5zZXJ0IDwgTUlOX01BVENIKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLyogSWYgdGhlIHdob2xlIGlucHV0IGhhcyBsZXNzIHRoYW4gTUlOX01BVENIIGJ5dGVzLCBpbnNfaCBpcyBnYXJiYWdlLFxuICAgICAqIGJ1dCB0aGlzIGlzIG5vdCBpbXBvcnRhbnQgc2luY2Ugb25seSBsaXRlcmFsIGJ5dGVzIHdpbGwgYmUgZW1pdHRlZC5cbiAgICAgKi9cblxuICB9IHdoaWxlIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQgJiYgcy5zdHJtLmF2YWlsX2luICE9PSAwKTtcblxuICAvKiBJZiB0aGUgV0lOX0lOSVQgYnl0ZXMgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBkYXRhIGhhdmUgbmV2ZXIgYmVlblxuICAgKiB3cml0dGVuLCB0aGVuIHplcm8gdGhvc2UgYnl0ZXMgaW4gb3JkZXIgdG8gYXZvaWQgbWVtb3J5IGNoZWNrIHJlcG9ydHMgb2ZcbiAgICogdGhlIHVzZSBvZiB1bmluaXRpYWxpemVkIChvciB1bmluaXRpYWxpc2VkIGFzIEp1bGlhbiB3cml0ZXMpIGJ5dGVzIGJ5XG4gICAqIHRoZSBsb25nZXN0IG1hdGNoIHJvdXRpbmVzLiAgVXBkYXRlIHRoZSBoaWdoIHdhdGVyIG1hcmsgZm9yIHRoZSBuZXh0XG4gICAqIHRpbWUgdGhyb3VnaCBoZXJlLiAgV0lOX0lOSVQgaXMgc2V0IHRvIE1BWF9NQVRDSCBzaW5jZSB0aGUgbG9uZ2VzdCBtYXRjaFxuICAgKiByb3V0aW5lcyBhbGxvdyBzY2FubmluZyB0byBzdHJzdGFydCArIE1BWF9NQVRDSCwgaWdub3JpbmcgbG9va2FoZWFkLlxuICAgKi9cbi8vICBpZiAocy5oaWdoX3dhdGVyIDwgcy53aW5kb3dfc2l6ZSkge1xuLy8gICAgdmFyIGN1cnIgPSBzLnN0cnN0YXJ0ICsgcy5sb29rYWhlYWQ7XG4vLyAgICB2YXIgaW5pdCA9IDA7XG4vL1xuLy8gICAgaWYgKHMuaGlnaF93YXRlciA8IGN1cnIpIHtcbi8vICAgICAgLyogUHJldmlvdXMgaGlnaCB3YXRlciBtYXJrIGJlbG93IGN1cnJlbnQgZGF0YSAtLSB6ZXJvIFdJTl9JTklUXG4vLyAgICAgICAqIGJ5dGVzIG9yIHVwIHRvIGVuZCBvZiB3aW5kb3csIHdoaWNoZXZlciBpcyBsZXNzLlxuLy8gICAgICAgKi9cbi8vICAgICAgaW5pdCA9IHMud2luZG93X3NpemUgLSBjdXJyO1xuLy8gICAgICBpZiAoaW5pdCA+IFdJTl9JTklUKVxuLy8gICAgICAgIGluaXQgPSBXSU5fSU5JVDtcbi8vICAgICAgem1lbXplcm8ocy0+d2luZG93ICsgY3VyciwgKHVuc2lnbmVkKWluaXQpO1xuLy8gICAgICBzLT5oaWdoX3dhdGVyID0gY3VyciArIGluaXQ7XG4vLyAgICB9XG4vLyAgICBlbHNlIGlmIChzLT5oaWdoX3dhdGVyIDwgKHVsZyljdXJyICsgV0lOX0lOSVQpIHtcbi8vICAgICAgLyogSGlnaCB3YXRlciBtYXJrIGF0IG9yIGFib3ZlIGN1cnJlbnQgZGF0YSwgYnV0IGJlbG93IGN1cnJlbnQgZGF0YVxuLy8gICAgICAgKiBwbHVzIFdJTl9JTklUIC0tIHplcm8gb3V0IHRvIGN1cnJlbnQgZGF0YSBwbHVzIFdJTl9JTklULCBvciB1cFxuLy8gICAgICAgKiB0byBlbmQgb2Ygd2luZG93LCB3aGljaGV2ZXIgaXMgbGVzcy5cbi8vICAgICAgICovXG4vLyAgICAgIGluaXQgPSAodWxnKWN1cnIgKyBXSU5fSU5JVCAtIHMtPmhpZ2hfd2F0ZXI7XG4vLyAgICAgIGlmIChpbml0ID4gcy0+d2luZG93X3NpemUgLSBzLT5oaWdoX3dhdGVyKVxuLy8gICAgICAgIGluaXQgPSBzLT53aW5kb3dfc2l6ZSAtIHMtPmhpZ2hfd2F0ZXI7XG4vLyAgICAgIHptZW16ZXJvKHMtPndpbmRvdyArIHMtPmhpZ2hfd2F0ZXIsICh1bnNpZ25lZClpbml0KTtcbi8vICAgICAgcy0+aGlnaF93YXRlciArPSBpbml0O1xuLy8gICAgfVxuLy8gIH1cbi8vXG4vLyAgQXNzZXJ0KCh1bGcpcy0+c3Ryc3RhcnQgPD0gcy0+d2luZG93X3NpemUgLSBNSU5fTE9PS0FIRUFELFxuLy8gICAgXCJub3QgZW5vdWdoIHJvb20gZm9yIHNlYXJjaFwiKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb3B5IHdpdGhvdXQgY29tcHJlc3Npb24gYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBpbnB1dCBzdHJlYW0sIHJldHVyblxuICogdGhlIGN1cnJlbnQgYmxvY2sgc3RhdGUuXG4gKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGluc2VydCBuZXcgc3RyaW5ncyBpbiB0aGUgZGljdGlvbmFyeSBzaW5jZVxuICogdW5jb21wcmVzc2libGUgZGF0YSBpcyBwcm9iYWJseSBub3QgdXNlZnVsLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWRcbiAqIG9ubHkgZm9yIHRoZSBsZXZlbD0wIGNvbXByZXNzaW9uIG9wdGlvbi5cbiAqIE5PVEU6IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIG9wdGltaXplZCB0byBhdm9pZCBleHRyYSBjb3B5aW5nIGZyb21cbiAqIHdpbmRvdyB0byBwZW5kaW5nX2J1Zi5cbiAqL1xuZnVuY3Rpb24gZGVmbGF0ZV9zdG9yZWQocywgZmx1c2gpIHtcbiAgLyogU3RvcmVkIGJsb2NrcyBhcmUgbGltaXRlZCB0byAweGZmZmYgYnl0ZXMsIHBlbmRpbmdfYnVmIGlzIGxpbWl0ZWRcbiAgICogdG8gcGVuZGluZ19idWZfc2l6ZSwgYW5kIGVhY2ggc3RvcmVkIGJsb2NrIGhhcyBhIDUgYnl0ZSBoZWFkZXI6XG4gICAqL1xuICB2YXIgbWF4X2Jsb2NrX3NpemUgPSAweGZmZmY7XG5cbiAgaWYgKG1heF9ibG9ja19zaXplID4gcy5wZW5kaW5nX2J1Zl9zaXplIC0gNSkge1xuICAgIG1heF9ibG9ja19zaXplID0gcy5wZW5kaW5nX2J1Zl9zaXplIC0gNTtcbiAgfVxuXG4gIC8qIENvcHkgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIGlucHV0IHRvIG91dHB1dDogKi9cbiAgZm9yICg7Oykge1xuICAgIC8qIEZpbGwgdGhlIHdpbmRvdyBhcyBtdWNoIGFzIHBvc3NpYmxlOiAqL1xuICAgIGlmIChzLmxvb2thaGVhZCA8PSAxKSB7XG5cbiAgICAgIC8vQXNzZXJ0KHMtPnN0cnN0YXJ0IDwgcy0+d19zaXplK01BWF9ESVNUKHMpIHx8XG4gICAgICAvLyAgcy0+YmxvY2tfc3RhcnQgPj0gKGxvbmcpcy0+d19zaXplLCBcInNsaWRlIHRvbyBsYXRlXCIpO1xuLy8gICAgICBpZiAoIShzLnN0cnN0YXJ0IDwgcy53X3NpemUgKyAocy53X3NpemUgLSBNSU5fTE9PS0FIRUFEKSB8fFxuLy8gICAgICAgIHMuYmxvY2tfc3RhcnQgPj0gcy53X3NpemUpKSB7XG4vLyAgICAgICAgdGhyb3cgIG5ldyBFcnJvcihcInNsaWRlIHRvbyBsYXRlXCIpO1xuLy8gICAgICB9XG5cbiAgICAgIGZpbGxfd2luZG93KHMpO1xuICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwICYmIGZsdXNoID09PSBaX05PX0ZMVVNIKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovXG4gICAgfVxuICAgIC8vQXNzZXJ0KHMtPmJsb2NrX3N0YXJ0ID49IDBMLCBcImJsb2NrIGdvbmVcIik7XG4vLyAgICBpZiAocy5ibG9ja19zdGFydCA8IDApIHRocm93IG5ldyBFcnJvcihcImJsb2NrIGdvbmVcIik7XG5cbiAgICBzLnN0cnN0YXJ0ICs9IHMubG9va2FoZWFkO1xuICAgIHMubG9va2FoZWFkID0gMDtcblxuICAgIC8qIEVtaXQgYSBzdG9yZWQgYmxvY2sgaWYgcGVuZGluZ19idWYgd2lsbCBiZSBmdWxsOiAqL1xuICAgIHZhciBtYXhfc3RhcnQgPSBzLmJsb2NrX3N0YXJ0ICsgbWF4X2Jsb2NrX3NpemU7XG5cbiAgICBpZiAocy5zdHJzdGFydCA9PT0gMCB8fCBzLnN0cnN0YXJ0ID49IG1heF9zdGFydCkge1xuICAgICAgLyogc3Ryc3RhcnQgPT0gMCBpcyBwb3NzaWJsZSB3aGVuIHdyYXBhcm91bmQgb24gMTYtYml0IG1hY2hpbmUgKi9cbiAgICAgIHMubG9va2FoZWFkID0gcy5zdHJzdGFydCAtIG1heF9zdGFydDtcbiAgICAgIHMuc3Ryc3RhcnQgPSBtYXhfc3RhcnQ7XG4gICAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovXG4gICAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG4gICAgICAvKioqL1xuXG5cbiAgICB9XG4gICAgLyogRmx1c2ggaWYgd2UgbWF5IGhhdmUgdG8gc2xpZGUsIG90aGVyd2lzZSBibG9ja19zdGFydCBtYXkgYmVjb21lXG4gICAgICogbmVnYXRpdmUgYW5kIHRoZSBkYXRhIHdpbGwgYmUgZ29uZTpcbiAgICAgKi9cbiAgICBpZiAocy5zdHJzdGFydCAtIHMuYmxvY2tfc3RhcnQgPj0gKHMud19zaXplIC0gTUlOX0xPT0tBSEVBRCkpIHtcbiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIC8qKiovXG4gICAgfVxuICB9XG5cbiAgcy5pbnNlcnQgPSAwO1xuXG4gIGlmIChmbHVzaCA9PT0gWl9GSU5JU0gpIHtcbiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovXG4gICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEO1xuICAgIH1cbiAgICAvKioqL1xuICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTtcbiAgfVxuXG4gIGlmIChzLnN0cnN0YXJ0ID4gcy5ibG9ja19zdGFydCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICB9XG4gICAgLyoqKi9cbiAgfVxuXG4gIHJldHVybiBCU19ORUVEX01PUkU7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29tcHJlc3MgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBpbnB1dCBzdHJlYW0sIHJldHVybiB0aGUgY3VycmVudFxuICogYmxvY2sgc3RhdGUuXG4gKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHBlcmZvcm0gbGF6eSBldmFsdWF0aW9uIG9mIG1hdGNoZXMgYW5kIGluc2VydHNcbiAqIG5ldyBzdHJpbmdzIGluIHRoZSBkaWN0aW9uYXJ5IG9ubHkgZm9yIHVubWF0Y2hlZCBzdHJpbmdzIG9yIGZvciBzaG9ydFxuICogbWF0Y2hlcy4gSXQgaXMgdXNlZCBvbmx5IGZvciB0aGUgZmFzdCBjb21wcmVzc2lvbiBvcHRpb25zLlxuICovXG5mdW5jdGlvbiBkZWZsYXRlX2Zhc3QocywgZmx1c2gpIHtcbiAgdmFyIGhhc2hfaGVhZDsgICAgICAgIC8qIGhlYWQgb2YgdGhlIGhhc2ggY2hhaW4gKi9cbiAgdmFyIGJmbHVzaDsgICAgICAgICAgIC8qIHNldCBpZiBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZCAqL1xuXG4gIGZvciAoOzspIHtcbiAgICAvKiBNYWtlIHN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBlbm91Z2ggbG9va2FoZWFkLCBleGNlcHRcbiAgICAgKiBhdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCBmaWxlLiBXZSBuZWVkIE1BWF9NQVRDSCBieXRlc1xuICAgICAqIGZvciB0aGUgbmV4dCBtYXRjaCwgcGx1cyBNSU5fTUFUQ0ggYnl0ZXMgdG8gaW5zZXJ0IHRoZVxuICAgICAqIHN0cmluZyBmb2xsb3dpbmcgdGhlIG5leHQgbWF0Y2guXG4gICAgICovXG4gICAgaWYgKHMubG9va2FoZWFkIDwgTUlOX0xPT0tBSEVBRCkge1xuICAgICAgZmlsbF93aW5kb3cocyk7XG4gICAgICBpZiAocy5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEICYmIGZsdXNoID09PSBaX05PX0ZMVVNIKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG4gICAgICBpZiAocy5sb29rYWhlYWQgPT09IDApIHtcbiAgICAgICAgYnJlYWs7IC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovXG4gICAgICB9XG4gICAgfVxuXG4gICAgLyogSW5zZXJ0IHRoZSBzdHJpbmcgd2luZG93W3N0cnN0YXJ0IC4uIHN0cnN0YXJ0KzJdIGluIHRoZVxuICAgICAqIGRpY3Rpb25hcnksIGFuZCBzZXQgaGFzaF9oZWFkIHRvIHRoZSBoZWFkIG9mIHRoZSBoYXNoIGNoYWluOlxuICAgICAqL1xuICAgIGhhc2hfaGVhZCA9IDAvKk5JTCovO1xuICAgIGlmIChzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0gpIHtcbiAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovXG4gICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG4gICAgICBoYXNoX2hlYWQgPSBzLnByZXZbcy5zdHJzdGFydCAmIHMud19tYXNrXSA9IHMuaGVhZFtzLmluc19oXTtcbiAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7XG4gICAgICAvKioqL1xuICAgIH1cblxuICAgIC8qIEZpbmQgdGhlIGxvbmdlc3QgbWF0Y2gsIGRpc2NhcmRpbmcgdGhvc2UgPD0gcHJldl9sZW5ndGguXG4gICAgICogQXQgdGhpcyBwb2ludCB3ZSBoYXZlIGFsd2F5cyBtYXRjaF9sZW5ndGggPCBNSU5fTUFUQ0hcbiAgICAgKi9cbiAgICBpZiAoaGFzaF9oZWFkICE9PSAwLypOSUwqLyAmJiAoKHMuc3Ryc3RhcnQgLSBoYXNoX2hlYWQpIDw9IChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpKSkge1xuICAgICAgLyogVG8gc2ltcGxpZnkgdGhlIGNvZGUsIHdlIHByZXZlbnQgbWF0Y2hlcyB3aXRoIHRoZSBzdHJpbmdcbiAgICAgICAqIG9mIHdpbmRvdyBpbmRleCAwIChpbiBwYXJ0aWN1bGFyIHdlIGhhdmUgdG8gYXZvaWQgYSBtYXRjaFxuICAgICAgICogb2YgdGhlIHN0cmluZyB3aXRoIGl0c2VsZiBhdCB0aGUgc3RhcnQgb2YgdGhlIGlucHV0IGZpbGUpLlxuICAgICAgICovXG4gICAgICBzLm1hdGNoX2xlbmd0aCA9IGxvbmdlc3RfbWF0Y2gocywgaGFzaF9oZWFkKTtcbiAgICAgIC8qIGxvbmdlc3RfbWF0Y2goKSBzZXRzIG1hdGNoX3N0YXJ0ICovXG4gICAgfVxuICAgIGlmIChzLm1hdGNoX2xlbmd0aCA+PSBNSU5fTUFUQ0gpIHtcbiAgICAgIC8vIGNoZWNrX21hdGNoKHMsIHMuc3Ryc3RhcnQsIHMubWF0Y2hfc3RhcnQsIHMubWF0Y2hfbGVuZ3RoKTsgLy8gZm9yIGRlYnVnIG9ubHlcblxuICAgICAgLyoqKiBfdHJfdGFsbHlfZGlzdChzLCBzLnN0cnN0YXJ0IC0gcy5tYXRjaF9zdGFydCxcbiAgICAgICAgICAgICAgICAgICAgIHMubWF0Y2hfbGVuZ3RoIC0gTUlOX01BVENILCBiZmx1c2gpOyAqKiovXG4gICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgcy5zdHJzdGFydCAtIHMubWF0Y2hfc3RhcnQsIHMubWF0Y2hfbGVuZ3RoIC0gTUlOX01BVENIKTtcblxuICAgICAgcy5sb29rYWhlYWQgLT0gcy5tYXRjaF9sZW5ndGg7XG5cbiAgICAgIC8qIEluc2VydCBuZXcgc3RyaW5ncyBpbiB0aGUgaGFzaCB0YWJsZSBvbmx5IGlmIHRoZSBtYXRjaCBsZW5ndGhcbiAgICAgICAqIGlzIG5vdCB0b28gbGFyZ2UuIFRoaXMgc2F2ZXMgdGltZSBidXQgZGVncmFkZXMgY29tcHJlc3Npb24uXG4gICAgICAgKi9cbiAgICAgIGlmIChzLm1hdGNoX2xlbmd0aCA8PSBzLm1heF9sYXp5X21hdGNoLyptYXhfaW5zZXJ0X2xlbmd0aCovICYmIHMubG9va2FoZWFkID49IE1JTl9NQVRDSCkge1xuICAgICAgICBzLm1hdGNoX2xlbmd0aC0tOyAvKiBzdHJpbmcgYXQgc3Ryc3RhcnQgYWxyZWFkeSBpbiB0YWJsZSAqL1xuICAgICAgICBkbyB7XG4gICAgICAgICAgcy5zdHJzdGFydCsrO1xuICAgICAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovXG4gICAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrO1xuICAgICAgICAgIGhhc2hfaGVhZCA9IHMucHJldltzLnN0cnN0YXJ0ICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdO1xuICAgICAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7XG4gICAgICAgICAgLyoqKi9cbiAgICAgICAgICAvKiBzdHJzdGFydCBuZXZlciBleGNlZWRzIFdTSVpFLU1BWF9NQVRDSCwgc28gdGhlcmUgYXJlXG4gICAgICAgICAgICogYWx3YXlzIE1JTl9NQVRDSCBieXRlcyBhaGVhZC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgfSB3aGlsZSAoLS1zLm1hdGNoX2xlbmd0aCAhPT0gMCk7XG4gICAgICAgIHMuc3Ryc3RhcnQrKztcbiAgICAgIH0gZWxzZVxuICAgICAge1xuICAgICAgICBzLnN0cnN0YXJ0ICs9IHMubWF0Y2hfbGVuZ3RoO1xuICAgICAgICBzLm1hdGNoX2xlbmd0aCA9IDA7XG4gICAgICAgIHMuaW5zX2ggPSBzLndpbmRvd1tzLnN0cnN0YXJ0XTtcbiAgICAgICAgLyogVVBEQVRFX0hBU0gocywgcy5pbnNfaCwgcy53aW5kb3dbcy5zdHJzdGFydCsxXSk7ICovXG4gICAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3Muc3Ryc3RhcnQgKyAxXSkgJiBzLmhhc2hfbWFzaztcblxuLy8jaWYgTUlOX01BVENIICE9IDNcbi8vICAgICAgICAgICAgICAgIENhbGwgVVBEQVRFX0hBU0goKSBNSU5fTUFUQ0gtMyBtb3JlIHRpbWVzXG4vLyNlbmRpZlxuICAgICAgICAvKiBJZiBsb29rYWhlYWQgPCBNSU5fTUFUQ0gsIGluc19oIGlzIGdhcmJhZ2UsIGJ1dCBpdCBkb2VzIG5vdFxuICAgICAgICAgKiBtYXR0ZXIgc2luY2UgaXQgd2lsbCBiZSByZWNvbXB1dGVkIGF0IG5leHQgZGVmbGF0ZSBjYWxsLlxuICAgICAgICAgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLyogTm8gbWF0Y2gsIG91dHB1dCBhIGxpdGVyYWwgYnl0ZSAqL1xuICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsXCIlY1wiLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSkpO1xuICAgICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnRdLCBiZmx1c2gpOyAqKiovXG4gICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMCwgcy53aW5kb3dbcy5zdHJzdGFydF0pO1xuXG4gICAgICBzLmxvb2thaGVhZC0tO1xuICAgICAgcy5zdHJzdGFydCsrO1xuICAgIH1cbiAgICBpZiAoYmZsdXNoKSB7XG4gICAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovXG4gICAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG4gICAgICAvKioqL1xuICAgIH1cbiAgfVxuICBzLmluc2VydCA9ICgocy5zdHJzdGFydCA8IChNSU5fTUFUQ0ggLSAxKSkgPyBzLnN0cnN0YXJ0IDogTUlOX01BVENIIC0gMSk7XG4gIGlmIChmbHVzaCA9PT0gWl9GSU5JU0gpIHtcbiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovXG4gICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEO1xuICAgIH1cbiAgICAvKioqL1xuICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTtcbiAgfVxuICBpZiAocy5sYXN0X2xpdCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICB9XG4gICAgLyoqKi9cbiAgfVxuICByZXR1cm4gQlNfQkxPQ0tfRE9ORTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTYW1lIGFzIGFib3ZlLCBidXQgYWNoaWV2ZXMgYmV0dGVyIGNvbXByZXNzaW9uLiBXZSB1c2UgYSBsYXp5XG4gKiBldmFsdWF0aW9uIGZvciBtYXRjaGVzOiBhIG1hdGNoIGlzIGZpbmFsbHkgYWRvcHRlZCBvbmx5IGlmIHRoZXJlIGlzXG4gKiBubyBiZXR0ZXIgbWF0Y2ggYXQgdGhlIG5leHQgd2luZG93IHBvc2l0aW9uLlxuICovXG5mdW5jdGlvbiBkZWZsYXRlX3Nsb3cocywgZmx1c2gpIHtcbiAgdmFyIGhhc2hfaGVhZDsgICAgICAgICAgLyogaGVhZCBvZiBoYXNoIGNoYWluICovXG4gIHZhciBiZmx1c2g7ICAgICAgICAgICAgICAvKiBzZXQgaWYgY3VycmVudCBibG9jayBtdXN0IGJlIGZsdXNoZWQgKi9cblxuICB2YXIgbWF4X2luc2VydDtcblxuICAvKiBQcm9jZXNzIHRoZSBpbnB1dCBibG9jay4gKi9cbiAgZm9yICg7Oykge1xuICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGVub3VnaCBsb29rYWhlYWQsIGV4Y2VwdFxuICAgICAqIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0IGZpbGUuIFdlIG5lZWQgTUFYX01BVENIIGJ5dGVzXG4gICAgICogZm9yIHRoZSBuZXh0IG1hdGNoLCBwbHVzIE1JTl9NQVRDSCBieXRlcyB0byBpbnNlcnQgdGhlXG4gICAgICogc3RyaW5nIGZvbGxvd2luZyB0aGUgbmV4dCBtYXRjaC5cbiAgICAgKi9cbiAgICBpZiAocy5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEKSB7XG4gICAgICBmaWxsX3dpbmRvdyhzKTtcbiAgICAgIGlmIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQgJiYgZmx1c2ggPT09IFpfTk9fRkxVU0gpIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkgeyBicmVhazsgfSAvKiBmbHVzaCB0aGUgY3VycmVudCBibG9jayAqL1xuICAgIH1cblxuICAgIC8qIEluc2VydCB0aGUgc3RyaW5nIHdpbmRvd1tzdHJzdGFydCAuLiBzdHJzdGFydCsyXSBpbiB0aGVcbiAgICAgKiBkaWN0aW9uYXJ5LCBhbmQgc2V0IGhhc2hfaGVhZCB0byB0aGUgaGVhZCBvZiB0aGUgaGFzaCBjaGFpbjpcbiAgICAgKi9cbiAgICBoYXNoX2hlYWQgPSAwLypOSUwqLztcbiAgICBpZiAocy5sb29rYWhlYWQgPj0gTUlOX01BVENIKSB7XG4gICAgICAvKioqIElOU0VSVF9TVFJJTkcocywgcy5zdHJzdGFydCwgaGFzaF9oZWFkKTsgKioqL1xuICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrO1xuICAgICAgaGFzaF9oZWFkID0gcy5wcmV2W3Muc3Ryc3RhcnQgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07XG4gICAgICBzLmhlYWRbcy5pbnNfaF0gPSBzLnN0cnN0YXJ0O1xuICAgICAgLyoqKi9cbiAgICB9XG5cbiAgICAvKiBGaW5kIHRoZSBsb25nZXN0IG1hdGNoLCBkaXNjYXJkaW5nIHRob3NlIDw9IHByZXZfbGVuZ3RoLlxuICAgICAqL1xuICAgIHMucHJldl9sZW5ndGggPSBzLm1hdGNoX2xlbmd0aDtcbiAgICBzLnByZXZfbWF0Y2ggPSBzLm1hdGNoX3N0YXJ0O1xuICAgIHMubWF0Y2hfbGVuZ3RoID0gTUlOX01BVENIIC0gMTtcblxuICAgIGlmIChoYXNoX2hlYWQgIT09IDAvKk5JTCovICYmIHMucHJldl9sZW5ndGggPCBzLm1heF9sYXp5X21hdGNoICYmXG4gICAgICAgIHMuc3Ryc3RhcnQgLSBoYXNoX2hlYWQgPD0gKHMud19zaXplIC0gTUlOX0xPT0tBSEVBRCkvKk1BWF9ESVNUKHMpKi8pIHtcbiAgICAgIC8qIFRvIHNpbXBsaWZ5IHRoZSBjb2RlLCB3ZSBwcmV2ZW50IG1hdGNoZXMgd2l0aCB0aGUgc3RyaW5nXG4gICAgICAgKiBvZiB3aW5kb3cgaW5kZXggMCAoaW4gcGFydGljdWxhciB3ZSBoYXZlIHRvIGF2b2lkIGEgbWF0Y2hcbiAgICAgICAqIG9mIHRoZSBzdHJpbmcgd2l0aCBpdHNlbGYgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnB1dCBmaWxlKS5cbiAgICAgICAqL1xuICAgICAgcy5tYXRjaF9sZW5ndGggPSBsb25nZXN0X21hdGNoKHMsIGhhc2hfaGVhZCk7XG4gICAgICAvKiBsb25nZXN0X21hdGNoKCkgc2V0cyBtYXRjaF9zdGFydCAqL1xuXG4gICAgICBpZiAocy5tYXRjaF9sZW5ndGggPD0gNSAmJlxuICAgICAgICAgKHMuc3RyYXRlZ3kgPT09IFpfRklMVEVSRUQgfHwgKHMubWF0Y2hfbGVuZ3RoID09PSBNSU5fTUFUQ0ggJiYgcy5zdHJzdGFydCAtIHMubWF0Y2hfc3RhcnQgPiA0MDk2LypUT09fRkFSKi8pKSkge1xuXG4gICAgICAgIC8qIElmIHByZXZfbWF0Y2ggaXMgYWxzbyBNSU5fTUFUQ0gsIG1hdGNoX3N0YXJ0IGlzIGdhcmJhZ2VcbiAgICAgICAgICogYnV0IHdlIHdpbGwgaWdub3JlIHRoZSBjdXJyZW50IG1hdGNoIGFueXdheS5cbiAgICAgICAgICovXG4gICAgICAgIHMubWF0Y2hfbGVuZ3RoID0gTUlOX01BVENIIC0gMTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyogSWYgdGhlcmUgd2FzIGEgbWF0Y2ggYXQgdGhlIHByZXZpb3VzIHN0ZXAgYW5kIHRoZSBjdXJyZW50XG4gICAgICogbWF0Y2ggaXMgbm90IGJldHRlciwgb3V0cHV0IHRoZSBwcmV2aW91cyBtYXRjaDpcbiAgICAgKi9cbiAgICBpZiAocy5wcmV2X2xlbmd0aCA+PSBNSU5fTUFUQ0ggJiYgcy5tYXRjaF9sZW5ndGggPD0gcy5wcmV2X2xlbmd0aCkge1xuICAgICAgbWF4X2luc2VydCA9IHMuc3Ryc3RhcnQgKyBzLmxvb2thaGVhZCAtIE1JTl9NQVRDSDtcbiAgICAgIC8qIERvIG5vdCBpbnNlcnQgc3RyaW5ncyBpbiBoYXNoIHRhYmxlIGJleW9uZCB0aGlzLiAqL1xuXG4gICAgICAvL2NoZWNrX21hdGNoKHMsIHMuc3Ryc3RhcnQtMSwgcy5wcmV2X21hdGNoLCBzLnByZXZfbGVuZ3RoKTtcblxuICAgICAgLyoqKl90cl90YWxseV9kaXN0KHMsIHMuc3Ryc3RhcnQgLSAxIC0gcy5wcmV2X21hdGNoLFxuICAgICAgICAgICAgICAgICAgICAgcy5wcmV2X2xlbmd0aCAtIE1JTl9NQVRDSCwgYmZsdXNoKTsqKiovXG4gICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgcy5zdHJzdGFydCAtIDEgLSBzLnByZXZfbWF0Y2gsIHMucHJldl9sZW5ndGggLSBNSU5fTUFUQ0gpO1xuICAgICAgLyogSW5zZXJ0IGluIGhhc2ggdGFibGUgYWxsIHN0cmluZ3MgdXAgdG8gdGhlIGVuZCBvZiB0aGUgbWF0Y2guXG4gICAgICAgKiBzdHJzdGFydC0xIGFuZCBzdHJzdGFydCBhcmUgYWxyZWFkeSBpbnNlcnRlZC4gSWYgdGhlcmUgaXMgbm90XG4gICAgICAgKiBlbm91Z2ggbG9va2FoZWFkLCB0aGUgbGFzdCB0d28gc3RyaW5ncyBhcmUgbm90IGluc2VydGVkIGluXG4gICAgICAgKiB0aGUgaGFzaCB0YWJsZS5cbiAgICAgICAqL1xuICAgICAgcy5sb29rYWhlYWQgLT0gcy5wcmV2X2xlbmd0aCAtIDE7XG4gICAgICBzLnByZXZfbGVuZ3RoIC09IDI7XG4gICAgICBkbyB7XG4gICAgICAgIGlmICgrK3Muc3Ryc3RhcnQgPD0gbWF4X2luc2VydCkge1xuICAgICAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovXG4gICAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrO1xuICAgICAgICAgIGhhc2hfaGVhZCA9IHMucHJldltzLnN0cnN0YXJ0ICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdO1xuICAgICAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7XG4gICAgICAgICAgLyoqKi9cbiAgICAgICAgfVxuICAgICAgfSB3aGlsZSAoLS1zLnByZXZfbGVuZ3RoICE9PSAwKTtcbiAgICAgIHMubWF0Y2hfYXZhaWxhYmxlID0gMDtcbiAgICAgIHMubWF0Y2hfbGVuZ3RoID0gTUlOX01BVENIIC0gMTtcbiAgICAgIHMuc3Ryc3RhcnQrKztcblxuICAgICAgaWYgKGJmbHVzaCkge1xuICAgICAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovXG4gICAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICAgIH1cbiAgICAgICAgLyoqKi9cbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAocy5tYXRjaF9hdmFpbGFibGUpIHtcbiAgICAgIC8qIElmIHRoZXJlIHdhcyBubyBtYXRjaCBhdCB0aGUgcHJldmlvdXMgcG9zaXRpb24sIG91dHB1dCBhXG4gICAgICAgKiBzaW5nbGUgbGl0ZXJhbC4gSWYgdGhlcmUgd2FzIGEgbWF0Y2ggYnV0IHRoZSBjdXJyZW50IG1hdGNoXG4gICAgICAgKiBpcyBsb25nZXIsIHRydW5jYXRlIHRoZSBwcmV2aW91cyBtYXRjaCB0byBhIHNpbmdsZSBsaXRlcmFsLlxuICAgICAgICovXG4gICAgICAvL1RyYWNldnYoKHN0ZGVycixcIiVjXCIsIHMtPndpbmRvd1tzLT5zdHJzdGFydC0xXSkpO1xuICAgICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnQtMV0sIGJmbHVzaCk7ICoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0IC0gMV0pO1xuXG4gICAgICBpZiAoYmZsdXNoKSB7XG4gICAgICAgIC8qKiogRkxVU0hfQkxPQ0tfT05MWShzLCAwKSAqKiovXG4gICAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgICAvKioqL1xuICAgICAgfVxuICAgICAgcy5zdHJzdGFydCsrO1xuICAgICAgcy5sb29rYWhlYWQtLTtcbiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIFRoZXJlIGlzIG5vIHByZXZpb3VzIG1hdGNoIHRvIGNvbXBhcmUgd2l0aCwgd2FpdCBmb3JcbiAgICAgICAqIHRoZSBuZXh0IHN0ZXAgdG8gZGVjaWRlLlxuICAgICAgICovXG4gICAgICBzLm1hdGNoX2F2YWlsYWJsZSA9IDE7XG4gICAgICBzLnN0cnN0YXJ0Kys7XG4gICAgICBzLmxvb2thaGVhZC0tO1xuICAgIH1cbiAgfVxuICAvL0Fzc2VydCAoZmx1c2ggIT0gWl9OT19GTFVTSCwgXCJubyBmbHVzaD9cIik7XG4gIGlmIChzLm1hdGNoX2F2YWlsYWJsZSkge1xuICAgIC8vVHJhY2V2digoc3RkZXJyLFwiJWNcIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0LTFdKSk7XG4gICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnQtMV0sIGJmbHVzaCk7ICoqKi9cbiAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMCwgcy53aW5kb3dbcy5zdHJzdGFydCAtIDFdKTtcblxuICAgIHMubWF0Y2hfYXZhaWxhYmxlID0gMDtcbiAgfVxuICBzLmluc2VydCA9IHMuc3Ryc3RhcnQgPCBNSU5fTUFUQ0ggLSAxID8gcy5zdHJzdGFydCA6IE1JTl9NQVRDSCAtIDE7XG4gIGlmIChmbHVzaCA9PT0gWl9GSU5JU0gpIHtcbiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovXG4gICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEO1xuICAgIH1cbiAgICAvKioqL1xuICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTtcbiAgfVxuICBpZiAocy5sYXN0X2xpdCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICB9XG4gICAgLyoqKi9cbiAgfVxuXG4gIHJldHVybiBCU19CTE9DS19ET05FO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogRm9yIFpfUkxFLCBzaW1wbHkgbG9vayBmb3IgcnVucyBvZiBieXRlcywgZ2VuZXJhdGUgbWF0Y2hlcyBvbmx5IG9mIGRpc3RhbmNlXG4gKiBvbmUuICBEbyBub3QgbWFpbnRhaW4gYSBoYXNoIHRhYmxlLiAgKEl0IHdpbGwgYmUgcmVnZW5lcmF0ZWQgaWYgdGhpcyBydW4gb2ZcbiAqIGRlZmxhdGUgc3dpdGNoZXMgYXdheSBmcm9tIFpfUkxFLilcbiAqL1xuZnVuY3Rpb24gZGVmbGF0ZV9ybGUocywgZmx1c2gpIHtcbiAgdmFyIGJmbHVzaDsgICAgICAgICAgICAvKiBzZXQgaWYgY3VycmVudCBibG9jayBtdXN0IGJlIGZsdXNoZWQgKi9cbiAgdmFyIHByZXY7ICAgICAgICAgICAgICAvKiBieXRlIGF0IGRpc3RhbmNlIG9uZSB0byBtYXRjaCAqL1xuICB2YXIgc2Nhbiwgc3RyZW5kOyAgICAgIC8qIHNjYW4gZ29lcyB1cCB0byBzdHJlbmQgZm9yIGxlbmd0aCBvZiBydW4gKi9cblxuICB2YXIgX3dpbiA9IHMud2luZG93O1xuXG4gIGZvciAoOzspIHtcbiAgICAvKiBNYWtlIHN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBlbm91Z2ggbG9va2FoZWFkLCBleGNlcHRcbiAgICAgKiBhdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCBmaWxlLiBXZSBuZWVkIE1BWF9NQVRDSCBieXRlc1xuICAgICAqIGZvciB0aGUgbG9uZ2VzdCBydW4sIHBsdXMgb25lIGZvciB0aGUgdW5yb2xsZWQgbG9vcC5cbiAgICAgKi9cbiAgICBpZiAocy5sb29rYWhlYWQgPD0gTUFYX01BVENIKSB7XG4gICAgICBmaWxsX3dpbmRvdyhzKTtcbiAgICAgIGlmIChzLmxvb2thaGVhZCA8PSBNQVhfTUFUQ0ggJiYgZmx1c2ggPT09IFpfTk9fRkxVU0gpIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkgeyBicmVhazsgfSAvKiBmbHVzaCB0aGUgY3VycmVudCBibG9jayAqL1xuICAgIH1cblxuICAgIC8qIFNlZSBob3cgbWFueSB0aW1lcyB0aGUgcHJldmlvdXMgYnl0ZSByZXBlYXRzICovXG4gICAgcy5tYXRjaF9sZW5ndGggPSAwO1xuICAgIGlmIChzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0ggJiYgcy5zdHJzdGFydCA+IDApIHtcbiAgICAgIHNjYW4gPSBzLnN0cnN0YXJ0IC0gMTtcbiAgICAgIHByZXYgPSBfd2luW3NjYW5dO1xuICAgICAgaWYgKHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dKSB7XG4gICAgICAgIHN0cmVuZCA9IHMuc3Ryc3RhcnQgKyBNQVhfTUFUQ0g7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAvKmpzaGludCBub2VtcHR5OmZhbHNlKi9cbiAgICAgICAgfSB3aGlsZSAocHJldiA9PT0gX3dpblsrK3NjYW5dICYmIHByZXYgPT09IF93aW5bKytzY2FuXSAmJlxuICAgICAgICAgICAgICAgICBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmXG4gICAgICAgICAgICAgICAgIHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiZcbiAgICAgICAgICAgICAgICAgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmIHByZXYgPT09IF93aW5bKytzY2FuXSAmJlxuICAgICAgICAgICAgICAgICBzY2FuIDwgc3RyZW5kKTtcbiAgICAgICAgcy5tYXRjaF9sZW5ndGggPSBNQVhfTUFUQ0ggLSAoc3RyZW5kIC0gc2Nhbik7XG4gICAgICAgIGlmIChzLm1hdGNoX2xlbmd0aCA+IHMubG9va2FoZWFkKSB7XG4gICAgICAgICAgcy5tYXRjaF9sZW5ndGggPSBzLmxvb2thaGVhZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy9Bc3NlcnQoc2NhbiA8PSBzLT53aW5kb3crKHVJbnQpKHMtPndpbmRvd19zaXplLTEpLCBcIndpbGQgc2NhblwiKTtcbiAgICB9XG5cbiAgICAvKiBFbWl0IG1hdGNoIGlmIGhhdmUgcnVuIG9mIE1JTl9NQVRDSCBvciBsb25nZXIsIGVsc2UgZW1pdCBsaXRlcmFsICovXG4gICAgaWYgKHMubWF0Y2hfbGVuZ3RoID49IE1JTl9NQVRDSCkge1xuICAgICAgLy9jaGVja19tYXRjaChzLCBzLnN0cnN0YXJ0LCBzLnN0cnN0YXJ0IC0gMSwgcy5tYXRjaF9sZW5ndGgpO1xuXG4gICAgICAvKioqIF90cl90YWxseV9kaXN0KHMsIDEsIHMubWF0Y2hfbGVuZ3RoIC0gTUlOX01BVENILCBiZmx1c2gpOyAqKiovXG4gICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMSwgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gpO1xuXG4gICAgICBzLmxvb2thaGVhZCAtPSBzLm1hdGNoX2xlbmd0aDtcbiAgICAgIHMuc3Ryc3RhcnQgKz0gcy5tYXRjaF9sZW5ndGg7XG4gICAgICBzLm1hdGNoX2xlbmd0aCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIE5vIG1hdGNoLCBvdXRwdXQgYSBsaXRlcmFsIGJ5dGUgKi9cbiAgICAgIC8vVHJhY2V2digoc3RkZXJyLFwiJWNcIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0XSkpO1xuICAgICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnRdLCBiZmx1c2gpOyAqKiovXG4gICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMCwgcy53aW5kb3dbcy5zdHJzdGFydF0pO1xuXG4gICAgICBzLmxvb2thaGVhZC0tO1xuICAgICAgcy5zdHJzdGFydCsrO1xuICAgIH1cbiAgICBpZiAoYmZsdXNoKSB7XG4gICAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovXG4gICAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG4gICAgICAvKioqL1xuICAgIH1cbiAgfVxuICBzLmluc2VydCA9IDA7XG4gIGlmIChmbHVzaCA9PT0gWl9GSU5JU0gpIHtcbiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovXG4gICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEO1xuICAgIH1cbiAgICAvKioqL1xuICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTtcbiAgfVxuICBpZiAocy5sYXN0X2xpdCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICB9XG4gICAgLyoqKi9cbiAgfVxuICByZXR1cm4gQlNfQkxPQ0tfRE9ORTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBGb3IgWl9IVUZGTUFOX09OTFksIGRvIG5vdCBsb29rIGZvciBtYXRjaGVzLiAgRG8gbm90IG1haW50YWluIGEgaGFzaCB0YWJsZS5cbiAqIChJdCB3aWxsIGJlIHJlZ2VuZXJhdGVkIGlmIHRoaXMgcnVuIG9mIGRlZmxhdGUgc3dpdGNoZXMgYXdheSBmcm9tIEh1ZmZtYW4uKVxuICovXG5mdW5jdGlvbiBkZWZsYXRlX2h1ZmYocywgZmx1c2gpIHtcbiAgdmFyIGJmbHVzaDsgICAgICAgICAgICAgLyogc2V0IGlmIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkICovXG5cbiAgZm9yICg7Oykge1xuICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGhhdmUgYSBsaXRlcmFsIHRvIHdyaXRlLiAqL1xuICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkge1xuICAgICAgZmlsbF93aW5kb3cocyk7XG4gICAgICBpZiAocy5sb29rYWhlYWQgPT09IDApIHtcbiAgICAgICAgaWYgKGZsdXNoID09PSBaX05PX0ZMVVNIKSB7XG4gICAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgICAgfVxuICAgICAgICBicmVhazsgICAgICAvKiBmbHVzaCB0aGUgY3VycmVudCBibG9jayAqL1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qIE91dHB1dCBhIGxpdGVyYWwgYnl0ZSAqL1xuICAgIHMubWF0Y2hfbGVuZ3RoID0gMDtcbiAgICAvL1RyYWNldnYoKHN0ZGVycixcIiVjXCIsIHMtPndpbmRvd1tzLT5zdHJzdGFydF0pKTtcbiAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydF0sIGJmbHVzaCk7ICoqKi9cbiAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMCwgcy53aW5kb3dbcy5zdHJzdGFydF0pO1xuICAgIHMubG9va2FoZWFkLS07XG4gICAgcy5zdHJzdGFydCsrO1xuICAgIGlmIChiZmx1c2gpIHtcbiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIC8qKiovXG4gICAgfVxuICB9XG4gIHMuaW5zZXJ0ID0gMDtcbiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMSk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7XG4gICAgfVxuICAgIC8qKiovXG4gICAgcmV0dXJuIEJTX0ZJTklTSF9ET05FO1xuICB9XG4gIGlmIChzLmxhc3RfbGl0KSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgIH1cbiAgICAvKioqL1xuICB9XG4gIHJldHVybiBCU19CTE9DS19ET05FO1xufVxuXG4vKiBWYWx1ZXMgZm9yIG1heF9sYXp5X21hdGNoLCBnb29kX21hdGNoIGFuZCBtYXhfY2hhaW5fbGVuZ3RoLCBkZXBlbmRpbmcgb25cbiAqIHRoZSBkZXNpcmVkIHBhY2sgbGV2ZWwgKDAuLjkpLiBUaGUgdmFsdWVzIGdpdmVuIGJlbG93IGhhdmUgYmVlbiB0dW5lZCB0b1xuICogZXhjbHVkZSB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIGZvciBwYXRob2xvZ2ljYWwgZmlsZXMuIEJldHRlciB2YWx1ZXMgbWF5IGJlXG4gKiBmb3VuZCBmb3Igc3BlY2lmaWMgZmlsZXMuXG4gKi9cbmZ1bmN0aW9uIENvbmZpZyhnb29kX2xlbmd0aCwgbWF4X2xhenksIG5pY2VfbGVuZ3RoLCBtYXhfY2hhaW4sIGZ1bmMpIHtcbiAgdGhpcy5nb29kX2xlbmd0aCA9IGdvb2RfbGVuZ3RoO1xuICB0aGlzLm1heF9sYXp5ID0gbWF4X2xhenk7XG4gIHRoaXMubmljZV9sZW5ndGggPSBuaWNlX2xlbmd0aDtcbiAgdGhpcy5tYXhfY2hhaW4gPSBtYXhfY2hhaW47XG4gIHRoaXMuZnVuYyA9IGZ1bmM7XG59XG5cbnZhciBjb25maWd1cmF0aW9uX3RhYmxlO1xuXG5jb25maWd1cmF0aW9uX3RhYmxlID0gW1xuICAvKiAgICAgIGdvb2QgbGF6eSBuaWNlIGNoYWluICovXG4gIG5ldyBDb25maWcoMCwgMCwgMCwgMCwgZGVmbGF0ZV9zdG9yZWQpLCAgICAgICAgICAvKiAwIHN0b3JlIG9ubHkgKi9cbiAgbmV3IENvbmZpZyg0LCA0LCA4LCA0LCBkZWZsYXRlX2Zhc3QpLCAgICAgICAgICAgIC8qIDEgbWF4IHNwZWVkLCBubyBsYXp5IG1hdGNoZXMgKi9cbiAgbmV3IENvbmZpZyg0LCA1LCAxNiwgOCwgZGVmbGF0ZV9mYXN0KSwgICAgICAgICAgIC8qIDIgKi9cbiAgbmV3IENvbmZpZyg0LCA2LCAzMiwgMzIsIGRlZmxhdGVfZmFzdCksICAgICAgICAgIC8qIDMgKi9cblxuICBuZXcgQ29uZmlnKDQsIDQsIDE2LCAxNiwgZGVmbGF0ZV9zbG93KSwgICAgICAgICAgLyogNCBsYXp5IG1hdGNoZXMgKi9cbiAgbmV3IENvbmZpZyg4LCAxNiwgMzIsIDMyLCBkZWZsYXRlX3Nsb3cpLCAgICAgICAgIC8qIDUgKi9cbiAgbmV3IENvbmZpZyg4LCAxNiwgMTI4LCAxMjgsIGRlZmxhdGVfc2xvdyksICAgICAgIC8qIDYgKi9cbiAgbmV3IENvbmZpZyg4LCAzMiwgMTI4LCAyNTYsIGRlZmxhdGVfc2xvdyksICAgICAgIC8qIDcgKi9cbiAgbmV3IENvbmZpZygzMiwgMTI4LCAyNTgsIDEwMjQsIGRlZmxhdGVfc2xvdyksICAgIC8qIDggKi9cbiAgbmV3IENvbmZpZygzMiwgMjU4LCAyNTgsIDQwOTYsIGRlZmxhdGVfc2xvdykgICAgIC8qIDkgbWF4IGNvbXByZXNzaW9uICovXG5dO1xuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW5pdGlhbGl6ZSB0aGUgXCJsb25nZXN0IG1hdGNoXCIgcm91dGluZXMgZm9yIGEgbmV3IHpsaWIgc3RyZWFtXG4gKi9cbmZ1bmN0aW9uIGxtX2luaXQocykge1xuICBzLndpbmRvd19zaXplID0gMiAqIHMud19zaXplO1xuXG4gIC8qKiogQ0xFQVJfSEFTSChzKTsgKioqL1xuICB6ZXJvKHMuaGVhZCk7IC8vIEZpbGwgd2l0aCBOSUwgKD0gMCk7XG5cbiAgLyogU2V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyczpcbiAgICovXG4gIHMubWF4X2xhenlfbWF0Y2ggPSBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLm1heF9sYXp5O1xuICBzLmdvb2RfbWF0Y2ggPSBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLmdvb2RfbGVuZ3RoO1xuICBzLm5pY2VfbWF0Y2ggPSBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLm5pY2VfbGVuZ3RoO1xuICBzLm1heF9jaGFpbl9sZW5ndGggPSBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLm1heF9jaGFpbjtcblxuICBzLnN0cnN0YXJ0ID0gMDtcbiAgcy5ibG9ja19zdGFydCA9IDA7XG4gIHMubG9va2FoZWFkID0gMDtcbiAgcy5pbnNlcnQgPSAwO1xuICBzLm1hdGNoX2xlbmd0aCA9IHMucHJldl9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxO1xuICBzLm1hdGNoX2F2YWlsYWJsZSA9IDA7XG4gIHMuaW5zX2ggPSAwO1xufVxuXG5cbmZ1bmN0aW9uIERlZmxhdGVTdGF0ZSgpIHtcbiAgdGhpcy5zdHJtID0gbnVsbDsgICAgICAgICAgICAvKiBwb2ludGVyIGJhY2sgdG8gdGhpcyB6bGliIHN0cmVhbSAqL1xuICB0aGlzLnN0YXR1cyA9IDA7ICAgICAgICAgICAgLyogYXMgdGhlIG5hbWUgaW1wbGllcyAqL1xuICB0aGlzLnBlbmRpbmdfYnVmID0gbnVsbDsgICAgICAvKiBvdXRwdXQgc3RpbGwgcGVuZGluZyAqL1xuICB0aGlzLnBlbmRpbmdfYnVmX3NpemUgPSAwOyAgLyogc2l6ZSBvZiBwZW5kaW5nX2J1ZiAqL1xuICB0aGlzLnBlbmRpbmdfb3V0ID0gMDsgICAgICAgLyogbmV4dCBwZW5kaW5nIGJ5dGUgdG8gb3V0cHV0IHRvIHRoZSBzdHJlYW0gKi9cbiAgdGhpcy5wZW5kaW5nID0gMDsgICAgICAgICAgIC8qIG5iIG9mIGJ5dGVzIGluIHRoZSBwZW5kaW5nIGJ1ZmZlciAqL1xuICB0aGlzLndyYXAgPSAwOyAgICAgICAgICAgICAgLyogYml0IDAgdHJ1ZSBmb3IgemxpYiwgYml0IDEgdHJ1ZSBmb3IgZ3ppcCAqL1xuICB0aGlzLmd6aGVhZCA9IG51bGw7ICAgICAgICAgLyogZ3ppcCBoZWFkZXIgaW5mb3JtYXRpb24gdG8gd3JpdGUgKi9cbiAgdGhpcy5nemluZGV4ID0gMDsgICAgICAgICAgIC8qIHdoZXJlIGluIGV4dHJhLCBuYW1lLCBvciBjb21tZW50ICovXG4gIHRoaXMubWV0aG9kID0gWl9ERUZMQVRFRDsgLyogY2FuIG9ubHkgYmUgREVGTEFURUQgKi9cbiAgdGhpcy5sYXN0X2ZsdXNoID0gLTE7ICAgLyogdmFsdWUgb2YgZmx1c2ggcGFyYW0gZm9yIHByZXZpb3VzIGRlZmxhdGUgY2FsbCAqL1xuXG4gIHRoaXMud19zaXplID0gMDsgIC8qIExaNzcgd2luZG93IHNpemUgKDMySyBieSBkZWZhdWx0KSAqL1xuICB0aGlzLndfYml0cyA9IDA7ICAvKiBsb2cyKHdfc2l6ZSkgICg4Li4xNikgKi9cbiAgdGhpcy53X21hc2sgPSAwOyAgLyogd19zaXplIC0gMSAqL1xuXG4gIHRoaXMud2luZG93ID0gbnVsbDtcbiAgLyogU2xpZGluZyB3aW5kb3cuIElucHV0IGJ5dGVzIGFyZSByZWFkIGludG8gdGhlIHNlY29uZCBoYWxmIG9mIHRoZSB3aW5kb3csXG4gICAqIGFuZCBtb3ZlIHRvIHRoZSBmaXJzdCBoYWxmIGxhdGVyIHRvIGtlZXAgYSBkaWN0aW9uYXJ5IG9mIGF0IGxlYXN0IHdTaXplXG4gICAqIGJ5dGVzLiBXaXRoIHRoaXMgb3JnYW5pemF0aW9uLCBtYXRjaGVzIGFyZSBsaW1pdGVkIHRvIGEgZGlzdGFuY2Ugb2ZcbiAgICogd1NpemUtTUFYX01BVENIIGJ5dGVzLCBidXQgdGhpcyBlbnN1cmVzIHRoYXQgSU8gaXMgYWx3YXlzXG4gICAqIHBlcmZvcm1lZCB3aXRoIGEgbGVuZ3RoIG11bHRpcGxlIG9mIHRoZSBibG9jayBzaXplLlxuICAgKi9cblxuICB0aGlzLndpbmRvd19zaXplID0gMDtcbiAgLyogQWN0dWFsIHNpemUgb2Ygd2luZG93OiAyKndTaXplLCBleGNlcHQgd2hlbiB0aGUgdXNlciBpbnB1dCBidWZmZXJcbiAgICogaXMgZGlyZWN0bHkgdXNlZCBhcyBzbGlkaW5nIHdpbmRvdy5cbiAgICovXG5cbiAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgLyogTGluayB0byBvbGRlciBzdHJpbmcgd2l0aCBzYW1lIGhhc2ggaW5kZXguIFRvIGxpbWl0IHRoZSBzaXplIG9mIHRoaXNcbiAgICogYXJyYXkgdG8gNjRLLCB0aGlzIGxpbmsgaXMgbWFpbnRhaW5lZCBvbmx5IGZvciB0aGUgbGFzdCAzMksgc3RyaW5ncy5cbiAgICogQW4gaW5kZXggaW4gdGhpcyBhcnJheSBpcyB0aHVzIGEgd2luZG93IGluZGV4IG1vZHVsbyAzMksuXG4gICAqL1xuXG4gIHRoaXMuaGVhZCA9IG51bGw7ICAgLyogSGVhZHMgb2YgdGhlIGhhc2ggY2hhaW5zIG9yIE5JTC4gKi9cblxuICB0aGlzLmluc19oID0gMDsgICAgICAgLyogaGFzaCBpbmRleCBvZiBzdHJpbmcgdG8gYmUgaW5zZXJ0ZWQgKi9cbiAgdGhpcy5oYXNoX3NpemUgPSAwOyAgIC8qIG51bWJlciBvZiBlbGVtZW50cyBpbiBoYXNoIHRhYmxlICovXG4gIHRoaXMuaGFzaF9iaXRzID0gMDsgICAvKiBsb2cyKGhhc2hfc2l6ZSkgKi9cbiAgdGhpcy5oYXNoX21hc2sgPSAwOyAgIC8qIGhhc2hfc2l6ZS0xICovXG5cbiAgdGhpcy5oYXNoX3NoaWZ0ID0gMDtcbiAgLyogTnVtYmVyIG9mIGJpdHMgYnkgd2hpY2ggaW5zX2ggbXVzdCBiZSBzaGlmdGVkIGF0IGVhY2ggaW5wdXRcbiAgICogc3RlcC4gSXQgbXVzdCBiZSBzdWNoIHRoYXQgYWZ0ZXIgTUlOX01BVENIIHN0ZXBzLCB0aGUgb2xkZXN0XG4gICAqIGJ5dGUgbm8gbG9uZ2VyIHRha2VzIHBhcnQgaW4gdGhlIGhhc2gga2V5LCB0aGF0IGlzOlxuICAgKiAgIGhhc2hfc2hpZnQgKiBNSU5fTUFUQ0ggPj0gaGFzaF9iaXRzXG4gICAqL1xuXG4gIHRoaXMuYmxvY2tfc3RhcnQgPSAwO1xuICAvKiBXaW5kb3cgcG9zaXRpb24gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVudCBvdXRwdXQgYmxvY2suIEdldHNcbiAgICogbmVnYXRpdmUgd2hlbiB0aGUgd2luZG93IGlzIG1vdmVkIGJhY2t3YXJkcy5cbiAgICovXG5cbiAgdGhpcy5tYXRjaF9sZW5ndGggPSAwOyAgICAgIC8qIGxlbmd0aCBvZiBiZXN0IG1hdGNoICovXG4gIHRoaXMucHJldl9tYXRjaCA9IDA7ICAgICAgICAvKiBwcmV2aW91cyBtYXRjaCAqL1xuICB0aGlzLm1hdGNoX2F2YWlsYWJsZSA9IDA7ICAgLyogc2V0IGlmIHByZXZpb3VzIG1hdGNoIGV4aXN0cyAqL1xuICB0aGlzLnN0cnN0YXJ0ID0gMDsgICAgICAgICAgLyogc3RhcnQgb2Ygc3RyaW5nIHRvIGluc2VydCAqL1xuICB0aGlzLm1hdGNoX3N0YXJ0ID0gMDsgICAgICAgLyogc3RhcnQgb2YgbWF0Y2hpbmcgc3RyaW5nICovXG4gIHRoaXMubG9va2FoZWFkID0gMDsgICAgICAgICAvKiBudW1iZXIgb2YgdmFsaWQgYnl0ZXMgYWhlYWQgaW4gd2luZG93ICovXG5cbiAgdGhpcy5wcmV2X2xlbmd0aCA9IDA7XG4gIC8qIExlbmd0aCBvZiB0aGUgYmVzdCBtYXRjaCBhdCBwcmV2aW91cyBzdGVwLiBNYXRjaGVzIG5vdCBncmVhdGVyIHRoYW4gdGhpc1xuICAgKiBhcmUgZGlzY2FyZGVkLiBUaGlzIGlzIHVzZWQgaW4gdGhlIGxhenkgbWF0Y2ggZXZhbHVhdGlvbi5cbiAgICovXG5cbiAgdGhpcy5tYXhfY2hhaW5fbGVuZ3RoID0gMDtcbiAgLyogVG8gc3BlZWQgdXAgZGVmbGF0aW9uLCBoYXNoIGNoYWlucyBhcmUgbmV2ZXIgc2VhcmNoZWQgYmV5b25kIHRoaXNcbiAgICogbGVuZ3RoLiAgQSBoaWdoZXIgbGltaXQgaW1wcm92ZXMgY29tcHJlc3Npb24gcmF0aW8gYnV0IGRlZ3JhZGVzIHRoZVxuICAgKiBzcGVlZC5cbiAgICovXG5cbiAgdGhpcy5tYXhfbGF6eV9tYXRjaCA9IDA7XG4gIC8qIEF0dGVtcHQgdG8gZmluZCBhIGJldHRlciBtYXRjaCBvbmx5IHdoZW4gdGhlIGN1cnJlbnQgbWF0Y2ggaXMgc3RyaWN0bHlcbiAgICogc21hbGxlciB0aGFuIHRoaXMgdmFsdWUuIFRoaXMgbWVjaGFuaXNtIGlzIHVzZWQgb25seSBmb3IgY29tcHJlc3Npb25cbiAgICogbGV2ZWxzID49IDQuXG4gICAqL1xuICAvLyBUaGF0J3MgYWxpYXMgdG8gbWF4X2xhenlfbWF0Y2gsIGRvbid0IHVzZSBkaXJlY3RseVxuICAvL3RoaXMubWF4X2luc2VydF9sZW5ndGggPSAwO1xuICAvKiBJbnNlcnQgbmV3IHN0cmluZ3MgaW4gdGhlIGhhc2ggdGFibGUgb25seSBpZiB0aGUgbWF0Y2ggbGVuZ3RoIGlzIG5vdFxuICAgKiBncmVhdGVyIHRoYW4gdGhpcyBsZW5ndGguIFRoaXMgc2F2ZXMgdGltZSBidXQgZGVncmFkZXMgY29tcHJlc3Npb24uXG4gICAqIG1heF9pbnNlcnRfbGVuZ3RoIGlzIHVzZWQgb25seSBmb3IgY29tcHJlc3Npb24gbGV2ZWxzIDw9IDMuXG4gICAqL1xuXG4gIHRoaXMubGV2ZWwgPSAwOyAgICAgLyogY29tcHJlc3Npb24gbGV2ZWwgKDEuLjkpICovXG4gIHRoaXMuc3RyYXRlZ3kgPSAwOyAgLyogZmF2b3Igb3IgZm9yY2UgSHVmZm1hbiBjb2RpbmcqL1xuXG4gIHRoaXMuZ29vZF9tYXRjaCA9IDA7XG4gIC8qIFVzZSBhIGZhc3RlciBzZWFyY2ggd2hlbiB0aGUgcHJldmlvdXMgbWF0Y2ggaXMgbG9uZ2VyIHRoYW4gdGhpcyAqL1xuXG4gIHRoaXMubmljZV9tYXRjaCA9IDA7IC8qIFN0b3Agc2VhcmNoaW5nIHdoZW4gY3VycmVudCBtYXRjaCBleGNlZWRzIHRoaXMgKi9cblxuICAgICAgICAgICAgICAvKiB1c2VkIGJ5IHRyZWVzLmM6ICovXG5cbiAgLyogRGlkbid0IHVzZSBjdF9kYXRhIHR5cGVkZWYgYmVsb3cgdG8gc3VwcHJlc3MgY29tcGlsZXIgd2FybmluZyAqL1xuXG4gIC8vIHN0cnVjdCBjdF9kYXRhX3MgZHluX2x0cmVlW0hFQVBfU0laRV07ICAgLyogbGl0ZXJhbCBhbmQgbGVuZ3RoIHRyZWUgKi9cbiAgLy8gc3RydWN0IGN0X2RhdGFfcyBkeW5fZHRyZWVbMipEX0NPREVTKzFdOyAvKiBkaXN0YW5jZSB0cmVlICovXG4gIC8vIHN0cnVjdCBjdF9kYXRhX3MgYmxfdHJlZVsyKkJMX0NPREVTKzFdOyAgLyogSHVmZm1hbiB0cmVlIGZvciBiaXQgbGVuZ3RocyAqL1xuXG4gIC8vIFVzZSBmbGF0IGFycmF5IG9mIERPVUJMRSBzaXplLCB3aXRoIGludGVybGVhdmVkIGZhdGEsXG4gIC8vIGJlY2F1c2UgSlMgZG9lcyBub3Qgc3VwcG9ydCBlZmZlY3RpdmVcbiAgdGhpcy5keW5fbHRyZWUgID0gbmV3IHV0aWxzLkJ1ZjE2KEhFQVBfU0laRSAqIDIpO1xuICB0aGlzLmR5bl9kdHJlZSAgPSBuZXcgdXRpbHMuQnVmMTYoKDIgKiBEX0NPREVTICsgMSkgKiAyKTtcbiAgdGhpcy5ibF90cmVlICAgID0gbmV3IHV0aWxzLkJ1ZjE2KCgyICogQkxfQ09ERVMgKyAxKSAqIDIpO1xuICB6ZXJvKHRoaXMuZHluX2x0cmVlKTtcbiAgemVybyh0aGlzLmR5bl9kdHJlZSk7XG4gIHplcm8odGhpcy5ibF90cmVlKTtcblxuICB0aGlzLmxfZGVzYyAgID0gbnVsbDsgICAgICAgICAvKiBkZXNjLiBmb3IgbGl0ZXJhbCB0cmVlICovXG4gIHRoaXMuZF9kZXNjICAgPSBudWxsOyAgICAgICAgIC8qIGRlc2MuIGZvciBkaXN0YW5jZSB0cmVlICovXG4gIHRoaXMuYmxfZGVzYyAgPSBudWxsOyAgICAgICAgIC8qIGRlc2MuIGZvciBiaXQgbGVuZ3RoIHRyZWUgKi9cblxuICAvL3VzaCBibF9jb3VudFtNQVhfQklUUysxXTtcbiAgdGhpcy5ibF9jb3VudCA9IG5ldyB1dGlscy5CdWYxNihNQVhfQklUUyArIDEpO1xuICAvKiBudW1iZXIgb2YgY29kZXMgYXQgZWFjaCBiaXQgbGVuZ3RoIGZvciBhbiBvcHRpbWFsIHRyZWUgKi9cblxuICAvL2ludCBoZWFwWzIqTF9DT0RFUysxXTsgICAgICAvKiBoZWFwIHVzZWQgdG8gYnVpbGQgdGhlIEh1ZmZtYW4gdHJlZXMgKi9cbiAgdGhpcy5oZWFwID0gbmV3IHV0aWxzLkJ1ZjE2KDIgKiBMX0NPREVTICsgMSk7ICAvKiBoZWFwIHVzZWQgdG8gYnVpbGQgdGhlIEh1ZmZtYW4gdHJlZXMgKi9cbiAgemVybyh0aGlzLmhlYXApO1xuXG4gIHRoaXMuaGVhcF9sZW4gPSAwOyAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgaGVhcCAqL1xuICB0aGlzLmhlYXBfbWF4ID0gMDsgICAgICAgICAgICAgICAvKiBlbGVtZW50IG9mIGxhcmdlc3QgZnJlcXVlbmN5ICovXG4gIC8qIFRoZSBzb25zIG9mIGhlYXBbbl0gYXJlIGhlYXBbMipuXSBhbmQgaGVhcFsyKm4rMV0uIGhlYXBbMF0gaXMgbm90IHVzZWQuXG4gICAqIFRoZSBzYW1lIGhlYXAgYXJyYXkgaXMgdXNlZCB0byBidWlsZCBhbGwgdHJlZXMuXG4gICAqL1xuXG4gIHRoaXMuZGVwdGggPSBuZXcgdXRpbHMuQnVmMTYoMiAqIExfQ09ERVMgKyAxKTsgLy91Y2ggZGVwdGhbMipMX0NPREVTKzFdO1xuICB6ZXJvKHRoaXMuZGVwdGgpO1xuICAvKiBEZXB0aCBvZiBlYWNoIHN1YnRyZWUgdXNlZCBhcyB0aWUgYnJlYWtlciBmb3IgdHJlZXMgb2YgZXF1YWwgZnJlcXVlbmN5XG4gICAqL1xuXG4gIHRoaXMubF9idWYgPSAwOyAgICAgICAgICAvKiBidWZmZXIgaW5kZXggZm9yIGxpdGVyYWxzIG9yIGxlbmd0aHMgKi9cblxuICB0aGlzLmxpdF9idWZzaXplID0gMDtcbiAgLyogU2l6ZSBvZiBtYXRjaCBidWZmZXIgZm9yIGxpdGVyYWxzL2xlbmd0aHMuICBUaGVyZSBhcmUgNCByZWFzb25zIGZvclxuICAgKiBsaW1pdGluZyBsaXRfYnVmc2l6ZSB0byA2NEs6XG4gICAqICAgLSBmcmVxdWVuY2llcyBjYW4gYmUga2VwdCBpbiAxNiBiaXQgY291bnRlcnNcbiAgICogICAtIGlmIGNvbXByZXNzaW9uIGlzIG5vdCBzdWNjZXNzZnVsIGZvciB0aGUgZmlyc3QgYmxvY2ssIGFsbCBpbnB1dFxuICAgKiAgICAgZGF0YSBpcyBzdGlsbCBpbiB0aGUgd2luZG93IHNvIHdlIGNhbiBzdGlsbCBlbWl0IGEgc3RvcmVkIGJsb2NrIGV2ZW5cbiAgICogICAgIHdoZW4gaW5wdXQgY29tZXMgZnJvbSBzdGFuZGFyZCBpbnB1dC4gIChUaGlzIGNhbiBhbHNvIGJlIGRvbmUgZm9yXG4gICAqICAgICBhbGwgYmxvY2tzIGlmIGxpdF9idWZzaXplIGlzIG5vdCBncmVhdGVyIHRoYW4gMzJLLilcbiAgICogICAtIGlmIGNvbXByZXNzaW9uIGlzIG5vdCBzdWNjZXNzZnVsIGZvciBhIGZpbGUgc21hbGxlciB0aGFuIDY0Sywgd2UgY2FuXG4gICAqICAgICBldmVuIGVtaXQgYSBzdG9yZWQgZmlsZSBpbnN0ZWFkIG9mIGEgc3RvcmVkIGJsb2NrIChzYXZpbmcgNSBieXRlcykuXG4gICAqICAgICBUaGlzIGlzIGFwcGxpY2FibGUgb25seSBmb3IgemlwIChub3QgZ3ppcCBvciB6bGliKS5cbiAgICogICAtIGNyZWF0aW5nIG5ldyBIdWZmbWFuIHRyZWVzIGxlc3MgZnJlcXVlbnRseSBtYXkgbm90IHByb3ZpZGUgZmFzdFxuICAgKiAgICAgYWRhcHRhdGlvbiB0byBjaGFuZ2VzIGluIHRoZSBpbnB1dCBkYXRhIHN0YXRpc3RpY3MuIChUYWtlIGZvclxuICAgKiAgICAgZXhhbXBsZSBhIGJpbmFyeSBmaWxlIHdpdGggcG9vcmx5IGNvbXByZXNzaWJsZSBjb2RlIGZvbGxvd2VkIGJ5XG4gICAqICAgICBhIGhpZ2hseSBjb21wcmVzc2libGUgc3RyaW5nIHRhYmxlLikgU21hbGxlciBidWZmZXIgc2l6ZXMgZ2l2ZVxuICAgKiAgICAgZmFzdCBhZGFwdGF0aW9uIGJ1dCBoYXZlIG9mIGNvdXJzZSB0aGUgb3ZlcmhlYWQgb2YgdHJhbnNtaXR0aW5nXG4gICAqICAgICB0cmVlcyBtb3JlIGZyZXF1ZW50bHkuXG4gICAqICAgLSBJIGNhbid0IGNvdW50IGFib3ZlIDRcbiAgICovXG5cbiAgdGhpcy5sYXN0X2xpdCA9IDA7ICAgICAgLyogcnVubmluZyBpbmRleCBpbiBsX2J1ZiAqL1xuXG4gIHRoaXMuZF9idWYgPSAwO1xuICAvKiBCdWZmZXIgaW5kZXggZm9yIGRpc3RhbmNlcy4gVG8gc2ltcGxpZnkgdGhlIGNvZGUsIGRfYnVmIGFuZCBsX2J1ZiBoYXZlXG4gICAqIHRoZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cy4gVG8gdXNlIGRpZmZlcmVudCBsZW5ndGhzLCBhbiBleHRyYSBmbGFnXG4gICAqIGFycmF5IHdvdWxkIGJlIG5lY2Vzc2FyeS5cbiAgICovXG5cbiAgdGhpcy5vcHRfbGVuID0gMDsgICAgICAgLyogYml0IGxlbmd0aCBvZiBjdXJyZW50IGJsb2NrIHdpdGggb3B0aW1hbCB0cmVlcyAqL1xuICB0aGlzLnN0YXRpY19sZW4gPSAwOyAgICAvKiBiaXQgbGVuZ3RoIG9mIGN1cnJlbnQgYmxvY2sgd2l0aCBzdGF0aWMgdHJlZXMgKi9cbiAgdGhpcy5tYXRjaGVzID0gMDsgICAgICAgLyogbnVtYmVyIG9mIHN0cmluZyBtYXRjaGVzIGluIGN1cnJlbnQgYmxvY2sgKi9cbiAgdGhpcy5pbnNlcnQgPSAwOyAgICAgICAgLyogYnl0ZXMgYXQgZW5kIG9mIHdpbmRvdyBsZWZ0IHRvIGluc2VydCAqL1xuXG5cbiAgdGhpcy5iaV9idWYgPSAwO1xuICAvKiBPdXRwdXQgYnVmZmVyLiBiaXRzIGFyZSBpbnNlcnRlZCBzdGFydGluZyBhdCB0aGUgYm90dG9tIChsZWFzdFxuICAgKiBzaWduaWZpY2FudCBiaXRzKS5cbiAgICovXG4gIHRoaXMuYmlfdmFsaWQgPSAwO1xuICAvKiBOdW1iZXIgb2YgdmFsaWQgYml0cyBpbiBiaV9idWYuICBBbGwgYml0cyBhYm92ZSB0aGUgbGFzdCB2YWxpZCBiaXRcbiAgICogYXJlIGFsd2F5cyB6ZXJvLlxuICAgKi9cblxuICAvLyBVc2VkIGZvciB3aW5kb3cgbWVtb3J5IGluaXQuIFdlIHNhZmVseSBpZ25vcmUgaXQgZm9yIEpTLiBUaGF0IG1ha2VzXG4gIC8vIHNlbnNlIG9ubHkgZm9yIHBvaW50ZXJzIGFuZCBtZW1vcnkgY2hlY2sgdG9vbHMuXG4gIC8vdGhpcy5oaWdoX3dhdGVyID0gMDtcbiAgLyogSGlnaCB3YXRlciBtYXJrIG9mZnNldCBpbiB3aW5kb3cgZm9yIGluaXRpYWxpemVkIGJ5dGVzIC0tIGJ5dGVzIGFib3ZlXG4gICAqIHRoaXMgYXJlIHNldCB0byB6ZXJvIGluIG9yZGVyIHRvIGF2b2lkIG1lbW9yeSBjaGVjayB3YXJuaW5ncyB3aGVuXG4gICAqIGxvbmdlc3QgbWF0Y2ggcm91dGluZXMgYWNjZXNzIGJ5dGVzIHBhc3QgdGhlIGlucHV0LiAgVGhpcyBpcyB0aGVuXG4gICAqIHVwZGF0ZWQgdG8gdGhlIG5ldyBoaWdoIHdhdGVyIG1hcmsuXG4gICAqL1xufVxuXG5cbmZ1bmN0aW9uIGRlZmxhdGVSZXNldEtlZXAoc3RybSkge1xuICB2YXIgcztcblxuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUpIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIFpfU1RSRUFNX0VSUk9SKTtcbiAgfVxuXG4gIHN0cm0udG90YWxfaW4gPSBzdHJtLnRvdGFsX291dCA9IDA7XG4gIHN0cm0uZGF0YV90eXBlID0gWl9VTktOT1dOO1xuXG4gIHMgPSBzdHJtLnN0YXRlO1xuICBzLnBlbmRpbmcgPSAwO1xuICBzLnBlbmRpbmdfb3V0ID0gMDtcblxuICBpZiAocy53cmFwIDwgMCkge1xuICAgIHMud3JhcCA9IC1zLndyYXA7XG4gICAgLyogd2FzIG1hZGUgbmVnYXRpdmUgYnkgZGVmbGF0ZSguLi4sIFpfRklOSVNIKTsgKi9cbiAgfVxuICBzLnN0YXR1cyA9IChzLndyYXAgPyBJTklUX1NUQVRFIDogQlVTWV9TVEFURSk7XG4gIHN0cm0uYWRsZXIgPSAocy53cmFwID09PSAyKSA/XG4gICAgMCAgLy8gY3JjMzIoMCwgWl9OVUxMLCAwKVxuICA6XG4gICAgMTsgLy8gYWRsZXIzMigwLCBaX05VTEwsIDApXG4gIHMubGFzdF9mbHVzaCA9IFpfTk9fRkxVU0g7XG4gIHRyZWVzLl90cl9pbml0KHMpO1xuICByZXR1cm4gWl9PSztcbn1cblxuXG5mdW5jdGlvbiBkZWZsYXRlUmVzZXQoc3RybSkge1xuICB2YXIgcmV0ID0gZGVmbGF0ZVJlc2V0S2VlcChzdHJtKTtcbiAgaWYgKHJldCA9PT0gWl9PSykge1xuICAgIGxtX2luaXQoc3RybS5zdGF0ZSk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuXG5mdW5jdGlvbiBkZWZsYXRlU2V0SGVhZGVyKHN0cm0sIGhlYWQpIHtcbiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfVxuICBpZiAoc3RybS5zdGF0ZS53cmFwICE9PSAyKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfVxuICBzdHJtLnN0YXRlLmd6aGVhZCA9IGhlYWQ7XG4gIHJldHVybiBaX09LO1xufVxuXG5cbmZ1bmN0aW9uIGRlZmxhdGVJbml0MihzdHJtLCBsZXZlbCwgbWV0aG9kLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3kpIHtcbiAgaWYgKCFzdHJtKSB7IC8vID09PSBaX05VTExcbiAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gIH1cbiAgdmFyIHdyYXAgPSAxO1xuXG4gIGlmIChsZXZlbCA9PT0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OKSB7XG4gICAgbGV2ZWwgPSA2O1xuICB9XG5cbiAgaWYgKHdpbmRvd0JpdHMgPCAwKSB7IC8qIHN1cHByZXNzIHpsaWIgd3JhcHBlciAqL1xuICAgIHdyYXAgPSAwO1xuICAgIHdpbmRvd0JpdHMgPSAtd2luZG93Qml0cztcbiAgfVxuXG4gIGVsc2UgaWYgKHdpbmRvd0JpdHMgPiAxNSkge1xuICAgIHdyYXAgPSAyOyAgICAgICAgICAgLyogd3JpdGUgZ3ppcCB3cmFwcGVyIGluc3RlYWQgKi9cbiAgICB3aW5kb3dCaXRzIC09IDE2O1xuICB9XG5cblxuICBpZiAobWVtTGV2ZWwgPCAxIHx8IG1lbUxldmVsID4gTUFYX01FTV9MRVZFTCB8fCBtZXRob2QgIT09IFpfREVGTEFURUQgfHxcbiAgICB3aW5kb3dCaXRzIDwgOCB8fCB3aW5kb3dCaXRzID4gMTUgfHwgbGV2ZWwgPCAwIHx8IGxldmVsID4gOSB8fFxuICAgIHN0cmF0ZWd5IDwgMCB8fCBzdHJhdGVneSA+IFpfRklYRUQpIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIFpfU1RSRUFNX0VSUk9SKTtcbiAgfVxuXG5cbiAgaWYgKHdpbmRvd0JpdHMgPT09IDgpIHtcbiAgICB3aW5kb3dCaXRzID0gOTtcbiAgfVxuICAvKiB1bnRpbCAyNTYtYnl0ZSB3aW5kb3cgYnVnIGZpeGVkICovXG5cbiAgdmFyIHMgPSBuZXcgRGVmbGF0ZVN0YXRlKCk7XG5cbiAgc3RybS5zdGF0ZSA9IHM7XG4gIHMuc3RybSA9IHN0cm07XG5cbiAgcy53cmFwID0gd3JhcDtcbiAgcy5nemhlYWQgPSBudWxsO1xuICBzLndfYml0cyA9IHdpbmRvd0JpdHM7XG4gIHMud19zaXplID0gMSA8PCBzLndfYml0cztcbiAgcy53X21hc2sgPSBzLndfc2l6ZSAtIDE7XG5cbiAgcy5oYXNoX2JpdHMgPSBtZW1MZXZlbCArIDc7XG4gIHMuaGFzaF9zaXplID0gMSA8PCBzLmhhc2hfYml0cztcbiAgcy5oYXNoX21hc2sgPSBzLmhhc2hfc2l6ZSAtIDE7XG4gIHMuaGFzaF9zaGlmdCA9IH5+KChzLmhhc2hfYml0cyArIE1JTl9NQVRDSCAtIDEpIC8gTUlOX01BVENIKTtcblxuICBzLndpbmRvdyA9IG5ldyB1dGlscy5CdWY4KHMud19zaXplICogMik7XG4gIHMuaGVhZCA9IG5ldyB1dGlscy5CdWYxNihzLmhhc2hfc2l6ZSk7XG4gIHMucHJldiA9IG5ldyB1dGlscy5CdWYxNihzLndfc2l6ZSk7XG5cbiAgLy8gRG9uJ3QgbmVlZCBtZW0gaW5pdCBtYWdpYyBmb3IgSlMuXG4gIC8vcy5oaWdoX3dhdGVyID0gMDsgIC8qIG5vdGhpbmcgd3JpdHRlbiB0byBzLT53aW5kb3cgeWV0ICovXG5cbiAgcy5saXRfYnVmc2l6ZSA9IDEgPDwgKG1lbUxldmVsICsgNik7IC8qIDE2SyBlbGVtZW50cyBieSBkZWZhdWx0ICovXG5cbiAgcy5wZW5kaW5nX2J1Zl9zaXplID0gcy5saXRfYnVmc2l6ZSAqIDQ7XG5cbiAgLy9vdmVybGF5ID0gKHVzaGYgKikgWkFMTE9DKHN0cm0sIHMtPmxpdF9idWZzaXplLCBzaXplb2YodXNoKSsyKTtcbiAgLy9zLT5wZW5kaW5nX2J1ZiA9ICh1Y2hmICopIG92ZXJsYXk7XG4gIHMucGVuZGluZ19idWYgPSBuZXcgdXRpbHMuQnVmOChzLnBlbmRpbmdfYnVmX3NpemUpO1xuXG4gIC8vIEl0IGlzIG9mZnNldCBmcm9tIGBzLnBlbmRpbmdfYnVmYCAoc2l6ZSBpcyBgcy5saXRfYnVmc2l6ZSAqIDJgKVxuICAvL3MtPmRfYnVmID0gb3ZlcmxheSArIHMtPmxpdF9idWZzaXplL3NpemVvZih1c2gpO1xuICBzLmRfYnVmID0gMSAqIHMubGl0X2J1ZnNpemU7XG5cbiAgLy9zLT5sX2J1ZiA9IHMtPnBlbmRpbmdfYnVmICsgKDErc2l6ZW9mKHVzaCkpKnMtPmxpdF9idWZzaXplO1xuICBzLmxfYnVmID0gKDEgKyAyKSAqIHMubGl0X2J1ZnNpemU7XG5cbiAgcy5sZXZlbCA9IGxldmVsO1xuICBzLnN0cmF0ZWd5ID0gc3RyYXRlZ3k7XG4gIHMubWV0aG9kID0gbWV0aG9kO1xuXG4gIHJldHVybiBkZWZsYXRlUmVzZXQoc3RybSk7XG59XG5cbmZ1bmN0aW9uIGRlZmxhdGVJbml0KHN0cm0sIGxldmVsKSB7XG4gIHJldHVybiBkZWZsYXRlSW5pdDIoc3RybSwgbGV2ZWwsIFpfREVGTEFURUQsIE1BWF9XQklUUywgREVGX01FTV9MRVZFTCwgWl9ERUZBVUxUX1NUUkFURUdZKTtcbn1cblxuXG5mdW5jdGlvbiBkZWZsYXRlKHN0cm0sIGZsdXNoKSB7XG4gIHZhciBvbGRfZmx1c2gsIHM7XG4gIHZhciBiZWcsIHZhbDsgLy8gZm9yIGd6aXAgaGVhZGVyIHdyaXRlIG9ubHlcblxuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUgfHxcbiAgICBmbHVzaCA+IFpfQkxPQ0sgfHwgZmx1c2ggPCAwKSB7XG4gICAgcmV0dXJuIHN0cm0gPyBlcnIoc3RybSwgWl9TVFJFQU1fRVJST1IpIDogWl9TVFJFQU1fRVJST1I7XG4gIH1cblxuICBzID0gc3RybS5zdGF0ZTtcblxuICBpZiAoIXN0cm0ub3V0cHV0IHx8XG4gICAgICAoIXN0cm0uaW5wdXQgJiYgc3RybS5hdmFpbF9pbiAhPT0gMCkgfHxcbiAgICAgIChzLnN0YXR1cyA9PT0gRklOSVNIX1NUQVRFICYmIGZsdXNoICE9PSBaX0ZJTklTSCkpIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIChzdHJtLmF2YWlsX291dCA9PT0gMCkgPyBaX0JVRl9FUlJPUiA6IFpfU1RSRUFNX0VSUk9SKTtcbiAgfVxuXG4gIHMuc3RybSA9IHN0cm07IC8qIGp1c3QgaW4gY2FzZSAqL1xuICBvbGRfZmx1c2ggPSBzLmxhc3RfZmx1c2g7XG4gIHMubGFzdF9mbHVzaCA9IGZsdXNoO1xuXG4gIC8qIFdyaXRlIHRoZSBoZWFkZXIgKi9cbiAgaWYgKHMuc3RhdHVzID09PSBJTklUX1NUQVRFKSB7XG5cbiAgICBpZiAocy53cmFwID09PSAyKSB7IC8vIEdaSVAgaGVhZGVyXG4gICAgICBzdHJtLmFkbGVyID0gMDsgIC8vY3JjMzIoMEwsIFpfTlVMTCwgMCk7XG4gICAgICBwdXRfYnl0ZShzLCAzMSk7XG4gICAgICBwdXRfYnl0ZShzLCAxMzkpO1xuICAgICAgcHV0X2J5dGUocywgOCk7XG4gICAgICBpZiAoIXMuZ3poZWFkKSB7IC8vIHMtPmd6aGVhZCA9PSBaX05VTExcbiAgICAgICAgcHV0X2J5dGUocywgMCk7XG4gICAgICAgIHB1dF9ieXRlKHMsIDApO1xuICAgICAgICBwdXRfYnl0ZShzLCAwKTtcbiAgICAgICAgcHV0X2J5dGUocywgMCk7XG4gICAgICAgIHB1dF9ieXRlKHMsIDApO1xuICAgICAgICBwdXRfYnl0ZShzLCBzLmxldmVsID09PSA5ID8gMiA6XG4gICAgICAgICAgICAgICAgICAgIChzLnN0cmF0ZWd5ID49IFpfSFVGRk1BTl9PTkxZIHx8IHMubGV2ZWwgPCAyID9cbiAgICAgICAgICAgICAgICAgICAgIDQgOiAwKSk7XG4gICAgICAgIHB1dF9ieXRlKHMsIE9TX0NPREUpO1xuICAgICAgICBzLnN0YXR1cyA9IEJVU1lfU1RBVEU7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgcHV0X2J5dGUocywgKHMuZ3poZWFkLnRleHQgPyAxIDogMCkgK1xuICAgICAgICAgICAgICAgICAgICAocy5nemhlYWQuaGNyYyA/IDIgOiAwKSArXG4gICAgICAgICAgICAgICAgICAgICghcy5nemhlYWQuZXh0cmEgPyAwIDogNCkgK1xuICAgICAgICAgICAgICAgICAgICAoIXMuZ3poZWFkLm5hbWUgPyAwIDogOCkgK1xuICAgICAgICAgICAgICAgICAgICAoIXMuZ3poZWFkLmNvbW1lbnQgPyAwIDogMTYpXG4gICAgICAgICk7XG4gICAgICAgIHB1dF9ieXRlKHMsIHMuZ3poZWFkLnRpbWUgJiAweGZmKTtcbiAgICAgICAgcHV0X2J5dGUocywgKHMuZ3poZWFkLnRpbWUgPj4gOCkgJiAweGZmKTtcbiAgICAgICAgcHV0X2J5dGUocywgKHMuZ3poZWFkLnRpbWUgPj4gMTYpICYgMHhmZik7XG4gICAgICAgIHB1dF9ieXRlKHMsIChzLmd6aGVhZC50aW1lID4+IDI0KSAmIDB4ZmYpO1xuICAgICAgICBwdXRfYnl0ZShzLCBzLmxldmVsID09PSA5ID8gMiA6XG4gICAgICAgICAgICAgICAgICAgIChzLnN0cmF0ZWd5ID49IFpfSFVGRk1BTl9PTkxZIHx8IHMubGV2ZWwgPCAyID9cbiAgICAgICAgICAgICAgICAgICAgIDQgOiAwKSk7XG4gICAgICAgIHB1dF9ieXRlKHMsIHMuZ3poZWFkLm9zICYgMHhmZik7XG4gICAgICAgIGlmIChzLmd6aGVhZC5leHRyYSAmJiBzLmd6aGVhZC5leHRyYS5sZW5ndGgpIHtcbiAgICAgICAgICBwdXRfYnl0ZShzLCBzLmd6aGVhZC5leHRyYS5sZW5ndGggJiAweGZmKTtcbiAgICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQuZXh0cmEubGVuZ3RoID4+IDgpICYgMHhmZik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMuZ3poZWFkLmhjcmMpIHtcbiAgICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nLCAwKTtcbiAgICAgICAgfVxuICAgICAgICBzLmd6aW5kZXggPSAwO1xuICAgICAgICBzLnN0YXR1cyA9IEVYVFJBX1NUQVRFO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIC8vIERFRkxBVEUgaGVhZGVyXG4gICAge1xuICAgICAgdmFyIGhlYWRlciA9IChaX0RFRkxBVEVEICsgKChzLndfYml0cyAtIDgpIDw8IDQpKSA8PCA4O1xuICAgICAgdmFyIGxldmVsX2ZsYWdzID0gLTE7XG5cbiAgICAgIGlmIChzLnN0cmF0ZWd5ID49IFpfSFVGRk1BTl9PTkxZIHx8IHMubGV2ZWwgPCAyKSB7XG4gICAgICAgIGxldmVsX2ZsYWdzID0gMDtcbiAgICAgIH0gZWxzZSBpZiAocy5sZXZlbCA8IDYpIHtcbiAgICAgICAgbGV2ZWxfZmxhZ3MgPSAxO1xuICAgICAgfSBlbHNlIGlmIChzLmxldmVsID09PSA2KSB7XG4gICAgICAgIGxldmVsX2ZsYWdzID0gMjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsX2ZsYWdzID0gMztcbiAgICAgIH1cbiAgICAgIGhlYWRlciB8PSAobGV2ZWxfZmxhZ3MgPDwgNik7XG4gICAgICBpZiAocy5zdHJzdGFydCAhPT0gMCkgeyBoZWFkZXIgfD0gUFJFU0VUX0RJQ1Q7IH1cbiAgICAgIGhlYWRlciArPSAzMSAtIChoZWFkZXIgJSAzMSk7XG5cbiAgICAgIHMuc3RhdHVzID0gQlVTWV9TVEFURTtcbiAgICAgIHB1dFNob3J0TVNCKHMsIGhlYWRlcik7XG5cbiAgICAgIC8qIFNhdmUgdGhlIGFkbGVyMzIgb2YgdGhlIHByZXNldCBkaWN0aW9uYXJ5OiAqL1xuICAgICAgaWYgKHMuc3Ryc3RhcnQgIT09IDApIHtcbiAgICAgICAgcHV0U2hvcnRNU0Iocywgc3RybS5hZGxlciA+Pj4gMTYpO1xuICAgICAgICBwdXRTaG9ydE1TQihzLCBzdHJtLmFkbGVyICYgMHhmZmZmKTtcbiAgICAgIH1cbiAgICAgIHN0cm0uYWRsZXIgPSAxOyAvLyBhZGxlcjMyKDBMLCBaX05VTEwsIDApO1xuICAgIH1cbiAgfVxuXG4vLyNpZmRlZiBHWklQXG4gIGlmIChzLnN0YXR1cyA9PT0gRVhUUkFfU1RBVEUpIHtcbiAgICBpZiAocy5nemhlYWQuZXh0cmEvKiAhPSBaX05VTEwqLykge1xuICAgICAgYmVnID0gcy5wZW5kaW5nOyAgLyogc3RhcnQgb2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqL1xuXG4gICAgICB3aGlsZSAocy5nemluZGV4IDwgKHMuZ3poZWFkLmV4dHJhLmxlbmd0aCAmIDB4ZmZmZikpIHtcbiAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgICAgaWYgKHMuZ3poZWFkLmhjcmMgJiYgcy5wZW5kaW5nID4gYmVnKSB7XG4gICAgICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nIC0gYmVnLCBiZWcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pO1xuICAgICAgICAgIGJlZyA9IHMucGVuZGluZztcbiAgICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwdXRfYnl0ZShzLCBzLmd6aGVhZC5leHRyYVtzLmd6aW5kZXhdICYgMHhmZik7XG4gICAgICAgIHMuZ3ppbmRleCsrO1xuICAgICAgfVxuICAgICAgaWYgKHMuZ3poZWFkLmhjcmMgJiYgcy5wZW5kaW5nID4gYmVnKSB7XG4gICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7XG4gICAgICB9XG4gICAgICBpZiAocy5nemluZGV4ID09PSBzLmd6aGVhZC5leHRyYS5sZW5ndGgpIHtcbiAgICAgICAgcy5nemluZGV4ID0gMDtcbiAgICAgICAgcy5zdGF0dXMgPSBOQU1FX1NUQVRFO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHMuc3RhdHVzID0gTkFNRV9TVEFURTtcbiAgICB9XG4gIH1cbiAgaWYgKHMuc3RhdHVzID09PSBOQU1FX1NUQVRFKSB7XG4gICAgaWYgKHMuZ3poZWFkLm5hbWUvKiAhPSBaX05VTEwqLykge1xuICAgICAgYmVnID0gcy5wZW5kaW5nOyAgLyogc3RhcnQgb2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqL1xuICAgICAgLy9pbnQgdmFsO1xuXG4gICAgICBkbyB7XG4gICAgICAgIGlmIChzLnBlbmRpbmcgPT09IHMucGVuZGluZ19idWZfc2l6ZSkge1xuICAgICAgICAgIGlmIChzLmd6aGVhZC5oY3JjICYmIHMucGVuZGluZyA+IGJlZykge1xuICAgICAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTtcbiAgICAgICAgICBiZWcgPSBzLnBlbmRpbmc7XG4gICAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgICAgICB2YWwgPSAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEpTIHNwZWNpZmljOiBsaXR0bGUgbWFnaWMgdG8gYWRkIHplcm8gdGVybWluYXRvciB0byBlbmQgb2Ygc3RyaW5nXG4gICAgICAgIGlmIChzLmd6aW5kZXggPCBzLmd6aGVhZC5uYW1lLmxlbmd0aCkge1xuICAgICAgICAgIHZhbCA9IHMuZ3poZWFkLm5hbWUuY2hhckNvZGVBdChzLmd6aW5kZXgrKykgJiAweGZmO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcHV0X2J5dGUocywgdmFsKTtcbiAgICAgIH0gd2hpbGUgKHZhbCAhPT0gMCk7XG5cbiAgICAgIGlmIChzLmd6aGVhZC5oY3JjICYmIHMucGVuZGluZyA+IGJlZykge1xuICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nIC0gYmVnLCBiZWcpO1xuICAgICAgfVxuICAgICAgaWYgKHZhbCA9PT0gMCkge1xuICAgICAgICBzLmd6aW5kZXggPSAwO1xuICAgICAgICBzLnN0YXR1cyA9IENPTU1FTlRfU1RBVEU7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcy5zdGF0dXMgPSBDT01NRU5UX1NUQVRFO1xuICAgIH1cbiAgfVxuICBpZiAocy5zdGF0dXMgPT09IENPTU1FTlRfU1RBVEUpIHtcbiAgICBpZiAocy5nemhlYWQuY29tbWVudC8qICE9IFpfTlVMTCovKSB7XG4gICAgICBiZWcgPSBzLnBlbmRpbmc7ICAvKiBzdGFydCBvZiBieXRlcyB0byB1cGRhdGUgY3JjICovXG4gICAgICAvL2ludCB2YWw7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgICAgaWYgKHMuZ3poZWFkLmhjcmMgJiYgcy5wZW5kaW5nID4gYmVnKSB7XG4gICAgICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nIC0gYmVnLCBiZWcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pO1xuICAgICAgICAgIGJlZyA9IHMucGVuZGluZztcbiAgICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgICAgIHZhbCA9IDE7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gSlMgc3BlY2lmaWM6IGxpdHRsZSBtYWdpYyB0byBhZGQgemVybyB0ZXJtaW5hdG9yIHRvIGVuZCBvZiBzdHJpbmdcbiAgICAgICAgaWYgKHMuZ3ppbmRleCA8IHMuZ3poZWFkLmNvbW1lbnQubGVuZ3RoKSB7XG4gICAgICAgICAgdmFsID0gcy5nemhlYWQuY29tbWVudC5jaGFyQ29kZUF0KHMuZ3ppbmRleCsrKSAmIDB4ZmY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICBwdXRfYnl0ZShzLCB2YWwpO1xuICAgICAgfSB3aGlsZSAodmFsICE9PSAwKTtcblxuICAgICAgaWYgKHMuZ3poZWFkLmhjcmMgJiYgcy5wZW5kaW5nID4gYmVnKSB7XG4gICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7XG4gICAgICB9XG4gICAgICBpZiAodmFsID09PSAwKSB7XG4gICAgICAgIHMuc3RhdHVzID0gSENSQ19TVEFURTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBzLnN0YXR1cyA9IEhDUkNfU1RBVEU7XG4gICAgfVxuICB9XG4gIGlmIChzLnN0YXR1cyA9PT0gSENSQ19TVEFURSkge1xuICAgIGlmIChzLmd6aGVhZC5oY3JjKSB7XG4gICAgICBpZiAocy5wZW5kaW5nICsgMiA+IHMucGVuZGluZ19idWZfc2l6ZSkge1xuICAgICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pO1xuICAgICAgfVxuICAgICAgaWYgKHMucGVuZGluZyArIDIgPD0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgIHB1dF9ieXRlKHMsIHN0cm0uYWRsZXIgJiAweGZmKTtcbiAgICAgICAgcHV0X2J5dGUocywgKHN0cm0uYWRsZXIgPj4gOCkgJiAweGZmKTtcbiAgICAgICAgc3RybS5hZGxlciA9IDA7IC8vY3JjMzIoMEwsIFpfTlVMTCwgMCk7XG4gICAgICAgIHMuc3RhdHVzID0gQlVTWV9TVEFURTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBzLnN0YXR1cyA9IEJVU1lfU1RBVEU7XG4gICAgfVxuICB9XG4vLyNlbmRpZlxuXG4gIC8qIEZsdXNoIGFzIG11Y2ggcGVuZGluZyBvdXRwdXQgYXMgcG9zc2libGUgKi9cbiAgaWYgKHMucGVuZGluZyAhPT0gMCkge1xuICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gICAgaWYgKHN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAvKiBTaW5jZSBhdmFpbF9vdXQgaXMgMCwgZGVmbGF0ZSB3aWxsIGJlIGNhbGxlZCBhZ2FpbiB3aXRoXG4gICAgICAgKiBtb3JlIG91dHB1dCBzcGFjZSwgYnV0IHBvc3NpYmx5IHdpdGggYm90aCBwZW5kaW5nIGFuZFxuICAgICAgICogYXZhaWxfaW4gZXF1YWwgdG8gemVyby4gVGhlcmUgd29uJ3QgYmUgYW55dGhpbmcgdG8gZG8sXG4gICAgICAgKiBidXQgdGhpcyBpcyBub3QgYW4gZXJyb3Igc2l0dWF0aW9uIHNvIG1ha2Ugc3VyZSB3ZVxuICAgICAgICogcmV0dXJuIE9LIGluc3RlYWQgb2YgQlVGX0VSUk9SIGF0IG5leHQgY2FsbCBvZiBkZWZsYXRlOlxuICAgICAgICovXG4gICAgICBzLmxhc3RfZmx1c2ggPSAtMTtcbiAgICAgIHJldHVybiBaX09LO1xuICAgIH1cblxuICAgIC8qIE1ha2Ugc3VyZSB0aGVyZSBpcyBzb21ldGhpbmcgdG8gZG8gYW5kIGF2b2lkIGR1cGxpY2F0ZSBjb25zZWN1dGl2ZVxuICAgICAqIGZsdXNoZXMuIEZvciByZXBlYXRlZCBhbmQgdXNlbGVzcyBjYWxscyB3aXRoIFpfRklOSVNILCB3ZSBrZWVwXG4gICAgICogcmV0dXJuaW5nIFpfU1RSRUFNX0VORCBpbnN0ZWFkIG9mIFpfQlVGX0VSUk9SLlxuICAgICAqL1xuICB9IGVsc2UgaWYgKHN0cm0uYXZhaWxfaW4gPT09IDAgJiYgcmFuayhmbHVzaCkgPD0gcmFuayhvbGRfZmx1c2gpICYmXG4gICAgZmx1c2ggIT09IFpfRklOSVNIKSB7XG4gICAgcmV0dXJuIGVycihzdHJtLCBaX0JVRl9FUlJPUik7XG4gIH1cblxuICAvKiBVc2VyIG11c3Qgbm90IHByb3ZpZGUgbW9yZSBpbnB1dCBhZnRlciB0aGUgZmlyc3QgRklOSVNIOiAqL1xuICBpZiAocy5zdGF0dXMgPT09IEZJTklTSF9TVEFURSAmJiBzdHJtLmF2YWlsX2luICE9PSAwKSB7XG4gICAgcmV0dXJuIGVycihzdHJtLCBaX0JVRl9FUlJPUik7XG4gIH1cblxuICAvKiBTdGFydCBhIG5ldyBibG9jayBvciBjb250aW51ZSB0aGUgY3VycmVudCBvbmUuXG4gICAqL1xuICBpZiAoc3RybS5hdmFpbF9pbiAhPT0gMCB8fCBzLmxvb2thaGVhZCAhPT0gMCB8fFxuICAgIChmbHVzaCAhPT0gWl9OT19GTFVTSCAmJiBzLnN0YXR1cyAhPT0gRklOSVNIX1NUQVRFKSkge1xuICAgIHZhciBic3RhdGUgPSAocy5zdHJhdGVneSA9PT0gWl9IVUZGTUFOX09OTFkpID8gZGVmbGF0ZV9odWZmKHMsIGZsdXNoKSA6XG4gICAgICAocy5zdHJhdGVneSA9PT0gWl9STEUgPyBkZWZsYXRlX3JsZShzLCBmbHVzaCkgOlxuICAgICAgICBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLmZ1bmMocywgZmx1c2gpKTtcblxuICAgIGlmIChic3RhdGUgPT09IEJTX0ZJTklTSF9TVEFSVEVEIHx8IGJzdGF0ZSA9PT0gQlNfRklOSVNIX0RPTkUpIHtcbiAgICAgIHMuc3RhdHVzID0gRklOSVNIX1NUQVRFO1xuICAgIH1cbiAgICBpZiAoYnN0YXRlID09PSBCU19ORUVEX01PUkUgfHwgYnN0YXRlID09PSBCU19GSU5JU0hfU1RBUlRFRCkge1xuICAgICAgaWYgKHN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHMubGFzdF9mbHVzaCA9IC0xO1xuICAgICAgICAvKiBhdm9pZCBCVUZfRVJST1IgbmV4dCBjYWxsLCBzZWUgYWJvdmUgKi9cbiAgICAgIH1cbiAgICAgIHJldHVybiBaX09LO1xuICAgICAgLyogSWYgZmx1c2ggIT0gWl9OT19GTFVTSCAmJiBhdmFpbF9vdXQgPT0gMCwgdGhlIG5leHQgY2FsbFxuICAgICAgICogb2YgZGVmbGF0ZSBzaG91bGQgdXNlIHRoZSBzYW1lIGZsdXNoIHBhcmFtZXRlciB0byBtYWtlIHN1cmVcbiAgICAgICAqIHRoYXQgdGhlIGZsdXNoIGlzIGNvbXBsZXRlLiBTbyB3ZSBkb24ndCBoYXZlIHRvIG91dHB1dCBhblxuICAgICAgICogZW1wdHkgYmxvY2sgaGVyZSwgdGhpcyB3aWxsIGJlIGRvbmUgYXQgbmV4dCBjYWxsLiBUaGlzIGFsc29cbiAgICAgICAqIGVuc3VyZXMgdGhhdCBmb3IgYSB2ZXJ5IHNtYWxsIG91dHB1dCBidWZmZXIsIHdlIGVtaXQgYXQgbW9zdFxuICAgICAgICogb25lIGVtcHR5IGJsb2NrLlxuICAgICAgICovXG4gICAgfVxuICAgIGlmIChic3RhdGUgPT09IEJTX0JMT0NLX0RPTkUpIHtcbiAgICAgIGlmIChmbHVzaCA9PT0gWl9QQVJUSUFMX0ZMVVNIKSB7XG4gICAgICAgIHRyZWVzLl90cl9hbGlnbihzKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGZsdXNoICE9PSBaX0JMT0NLKSB7IC8qIEZVTExfRkxVU0ggb3IgU1lOQ19GTFVTSCAqL1xuXG4gICAgICAgIHRyZWVzLl90cl9zdG9yZWRfYmxvY2socywgMCwgMCwgZmFsc2UpO1xuICAgICAgICAvKiBGb3IgYSBmdWxsIGZsdXNoLCB0aGlzIGVtcHR5IGJsb2NrIHdpbGwgYmUgcmVjb2duaXplZFxuICAgICAgICAgKiBhcyBhIHNwZWNpYWwgbWFya2VyIGJ5IGluZmxhdGVfc3luYygpLlxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGZsdXNoID09PSBaX0ZVTExfRkxVU0gpIHtcbiAgICAgICAgICAvKioqIENMRUFSX0hBU0gocyk7ICoqKi8gICAgICAgICAgICAgLyogZm9yZ2V0IGhpc3RvcnkgKi9cbiAgICAgICAgICB6ZXJvKHMuaGVhZCk7IC8vIEZpbGwgd2l0aCBOSUwgKD0gMCk7XG5cbiAgICAgICAgICBpZiAocy5sb29rYWhlYWQgPT09IDApIHtcbiAgICAgICAgICAgIHMuc3Ryc3RhcnQgPSAwO1xuICAgICAgICAgICAgcy5ibG9ja19zdGFydCA9IDA7XG4gICAgICAgICAgICBzLmluc2VydCA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pO1xuICAgICAgaWYgKHN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHMubGFzdF9mbHVzaCA9IC0xOyAvKiBhdm9pZCBCVUZfRVJST1IgYXQgbmV4dCBjYWxsLCBzZWUgYWJvdmUgKi9cbiAgICAgICAgcmV0dXJuIFpfT0s7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC8vQXNzZXJ0KHN0cm0tPmF2YWlsX291dCA+IDAsIFwiYnVnMlwiKTtcbiAgLy9pZiAoc3RybS5hdmFpbF9vdXQgPD0gMCkgeyB0aHJvdyBuZXcgRXJyb3IoXCJidWcyXCIpO31cblxuICBpZiAoZmx1c2ggIT09IFpfRklOSVNIKSB7IHJldHVybiBaX09LOyB9XG4gIGlmIChzLndyYXAgPD0gMCkgeyByZXR1cm4gWl9TVFJFQU1fRU5EOyB9XG5cbiAgLyogV3JpdGUgdGhlIHRyYWlsZXIgKi9cbiAgaWYgKHMud3JhcCA9PT0gMikge1xuICAgIHB1dF9ieXRlKHMsIHN0cm0uYWRsZXIgJiAweGZmKTtcbiAgICBwdXRfYnl0ZShzLCAoc3RybS5hZGxlciA+PiA4KSAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIChzdHJtLmFkbGVyID4+IDE2KSAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIChzdHJtLmFkbGVyID4+IDI0KSAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIHN0cm0udG90YWxfaW4gJiAweGZmKTtcbiAgICBwdXRfYnl0ZShzLCAoc3RybS50b3RhbF9pbiA+PiA4KSAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIChzdHJtLnRvdGFsX2luID4+IDE2KSAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIChzdHJtLnRvdGFsX2luID4+IDI0KSAmIDB4ZmYpO1xuICB9XG4gIGVsc2VcbiAge1xuICAgIHB1dFNob3J0TVNCKHMsIHN0cm0uYWRsZXIgPj4+IDE2KTtcbiAgICBwdXRTaG9ydE1TQihzLCBzdHJtLmFkbGVyICYgMHhmZmZmKTtcbiAgfVxuXG4gIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gIC8qIElmIGF2YWlsX291dCBpcyB6ZXJvLCB0aGUgYXBwbGljYXRpb24gd2lsbCBjYWxsIGRlZmxhdGUgYWdhaW5cbiAgICogdG8gZmx1c2ggdGhlIHJlc3QuXG4gICAqL1xuICBpZiAocy53cmFwID4gMCkgeyBzLndyYXAgPSAtcy53cmFwOyB9XG4gIC8qIHdyaXRlIHRoZSB0cmFpbGVyIG9ubHkgb25jZSEgKi9cbiAgcmV0dXJuIHMucGVuZGluZyAhPT0gMCA/IFpfT0sgOiBaX1NUUkVBTV9FTkQ7XG59XG5cbmZ1bmN0aW9uIGRlZmxhdGVFbmQoc3RybSkge1xuICB2YXIgc3RhdHVzO1xuXG4gIGlmICghc3RybS8qPT0gWl9OVUxMKi8gfHwgIXN0cm0uc3RhdGUvKj09IFpfTlVMTCovKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgc3RhdHVzID0gc3RybS5zdGF0ZS5zdGF0dXM7XG4gIGlmIChzdGF0dXMgIT09IElOSVRfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IEVYVFJBX1NUQVRFICYmXG4gICAgc3RhdHVzICE9PSBOQU1FX1NUQVRFICYmXG4gICAgc3RhdHVzICE9PSBDT01NRU5UX1NUQVRFICYmXG4gICAgc3RhdHVzICE9PSBIQ1JDX1NUQVRFICYmXG4gICAgc3RhdHVzICE9PSBCVVNZX1NUQVRFICYmXG4gICAgc3RhdHVzICE9PSBGSU5JU0hfU1RBVEVcbiAgKSB7XG4gICAgcmV0dXJuIGVycihzdHJtLCBaX1NUUkVBTV9FUlJPUik7XG4gIH1cblxuICBzdHJtLnN0YXRlID0gbnVsbDtcblxuICByZXR1cm4gc3RhdHVzID09PSBCVVNZX1NUQVRFID8gZXJyKHN0cm0sIFpfREFUQV9FUlJPUikgOiBaX09LO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEluaXRpYWxpemVzIHRoZSBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5IGZyb20gdGhlIGdpdmVuIGJ5dGVcbiAqIHNlcXVlbmNlIHdpdGhvdXQgcHJvZHVjaW5nIGFueSBjb21wcmVzc2VkIG91dHB1dC5cbiAqL1xuZnVuY3Rpb24gZGVmbGF0ZVNldERpY3Rpb25hcnkoc3RybSwgZGljdGlvbmFyeSkge1xuICB2YXIgZGljdExlbmd0aCA9IGRpY3Rpb25hcnkubGVuZ3RoO1xuXG4gIHZhciBzO1xuICB2YXIgc3RyLCBuO1xuICB2YXIgd3JhcDtcbiAgdmFyIGF2YWlsO1xuICB2YXIgbmV4dDtcbiAgdmFyIGlucHV0O1xuICB2YXIgdG1wRGljdDtcblxuICBpZiAoIXN0cm0vKj09IFpfTlVMTCovIHx8ICFzdHJtLnN0YXRlLyo9PSBaX05VTEwqLykge1xuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuXG4gIHMgPSBzdHJtLnN0YXRlO1xuICB3cmFwID0gcy53cmFwO1xuXG4gIGlmICh3cmFwID09PSAyIHx8ICh3cmFwID09PSAxICYmIHMuc3RhdHVzICE9PSBJTklUX1NUQVRFKSB8fCBzLmxvb2thaGVhZCkge1xuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuXG4gIC8qIHdoZW4gdXNpbmcgemxpYiB3cmFwcGVycywgY29tcHV0ZSBBZGxlci0zMiBmb3IgcHJvdmlkZWQgZGljdGlvbmFyeSAqL1xuICBpZiAod3JhcCA9PT0gMSkge1xuICAgIC8qIGFkbGVyMzIoc3RybS0+YWRsZXIsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgpOyAqL1xuICAgIHN0cm0uYWRsZXIgPSBhZGxlcjMyKHN0cm0uYWRsZXIsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgsIDApO1xuICB9XG5cbiAgcy53cmFwID0gMDsgICAvKiBhdm9pZCBjb21wdXRpbmcgQWRsZXItMzIgaW4gcmVhZF9idWYgKi9cblxuICAvKiBpZiBkaWN0aW9uYXJ5IHdvdWxkIGZpbGwgd2luZG93LCBqdXN0IHJlcGxhY2UgdGhlIGhpc3RvcnkgKi9cbiAgaWYgKGRpY3RMZW5ndGggPj0gcy53X3NpemUpIHtcbiAgICBpZiAod3JhcCA9PT0gMCkgeyAgICAgICAgICAgIC8qIGFscmVhZHkgZW1wdHkgb3RoZXJ3aXNlICovXG4gICAgICAvKioqIENMRUFSX0hBU0gocyk7ICoqKi9cbiAgICAgIHplcm8ocy5oZWFkKTsgLy8gRmlsbCB3aXRoIE5JTCAoPSAwKTtcbiAgICAgIHMuc3Ryc3RhcnQgPSAwO1xuICAgICAgcy5ibG9ja19zdGFydCA9IDA7XG4gICAgICBzLmluc2VydCA9IDA7XG4gICAgfVxuICAgIC8qIHVzZSB0aGUgdGFpbCAqL1xuICAgIC8vIGRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5LnNsaWNlKGRpY3RMZW5ndGggLSBzLndfc2l6ZSk7XG4gICAgdG1wRGljdCA9IG5ldyB1dGlscy5CdWY4KHMud19zaXplKTtcbiAgICB1dGlscy5hcnJheVNldCh0bXBEaWN0LCBkaWN0aW9uYXJ5LCBkaWN0TGVuZ3RoIC0gcy53X3NpemUsIHMud19zaXplLCAwKTtcbiAgICBkaWN0aW9uYXJ5ID0gdG1wRGljdDtcbiAgICBkaWN0TGVuZ3RoID0gcy53X3NpemU7XG4gIH1cbiAgLyogaW5zZXJ0IGRpY3Rpb25hcnkgaW50byB3aW5kb3cgYW5kIGhhc2ggKi9cbiAgYXZhaWwgPSBzdHJtLmF2YWlsX2luO1xuICBuZXh0ID0gc3RybS5uZXh0X2luO1xuICBpbnB1dCA9IHN0cm0uaW5wdXQ7XG4gIHN0cm0uYXZhaWxfaW4gPSBkaWN0TGVuZ3RoO1xuICBzdHJtLm5leHRfaW4gPSAwO1xuICBzdHJtLmlucHV0ID0gZGljdGlvbmFyeTtcbiAgZmlsbF93aW5kb3cocyk7XG4gIHdoaWxlIChzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0gpIHtcbiAgICBzdHIgPSBzLnN0cnN0YXJ0O1xuICAgIG4gPSBzLmxvb2thaGVhZCAtIChNSU5fTUFUQ0ggLSAxKTtcbiAgICBkbyB7XG4gICAgICAvKiBVUERBVEVfSEFTSChzLCBzLT5pbnNfaCwgcy0+d2luZG93W3N0ciArIE1JTl9NQVRDSC0xXSk7ICovXG4gICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzdHIgKyBNSU5fTUFUQ0ggLSAxXSkgJiBzLmhhc2hfbWFzaztcblxuICAgICAgcy5wcmV2W3N0ciAmIHMud19tYXNrXSA9IHMuaGVhZFtzLmluc19oXTtcblxuICAgICAgcy5oZWFkW3MuaW5zX2hdID0gc3RyO1xuICAgICAgc3RyKys7XG4gICAgfSB3aGlsZSAoLS1uKTtcbiAgICBzLnN0cnN0YXJ0ID0gc3RyO1xuICAgIHMubG9va2FoZWFkID0gTUlOX01BVENIIC0gMTtcbiAgICBmaWxsX3dpbmRvdyhzKTtcbiAgfVxuICBzLnN0cnN0YXJ0ICs9IHMubG9va2FoZWFkO1xuICBzLmJsb2NrX3N0YXJ0ID0gcy5zdHJzdGFydDtcbiAgcy5pbnNlcnQgPSBzLmxvb2thaGVhZDtcbiAgcy5sb29rYWhlYWQgPSAwO1xuICBzLm1hdGNoX2xlbmd0aCA9IHMucHJldl9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxO1xuICBzLm1hdGNoX2F2YWlsYWJsZSA9IDA7XG4gIHN0cm0ubmV4dF9pbiA9IG5leHQ7XG4gIHN0cm0uaW5wdXQgPSBpbnB1dDtcbiAgc3RybS5hdmFpbF9pbiA9IGF2YWlsO1xuICBzLndyYXAgPSB3cmFwO1xuICByZXR1cm4gWl9PSztcbn1cblxuXG5leHBvcnRzLmRlZmxhdGVJbml0ID0gZGVmbGF0ZUluaXQ7XG5leHBvcnRzLmRlZmxhdGVJbml0MiA9IGRlZmxhdGVJbml0MjtcbmV4cG9ydHMuZGVmbGF0ZVJlc2V0ID0gZGVmbGF0ZVJlc2V0O1xuZXhwb3J0cy5kZWZsYXRlUmVzZXRLZWVwID0gZGVmbGF0ZVJlc2V0S2VlcDtcbmV4cG9ydHMuZGVmbGF0ZVNldEhlYWRlciA9IGRlZmxhdGVTZXRIZWFkZXI7XG5leHBvcnRzLmRlZmxhdGUgPSBkZWZsYXRlO1xuZXhwb3J0cy5kZWZsYXRlRW5kID0gZGVmbGF0ZUVuZDtcbmV4cG9ydHMuZGVmbGF0ZVNldERpY3Rpb25hcnkgPSBkZWZsYXRlU2V0RGljdGlvbmFyeTtcbmV4cG9ydHMuZGVmbGF0ZUluZm8gPSAncGFrbyBkZWZsYXRlIChmcm9tIE5vZGVjYSBwcm9qZWN0KSc7XG5cbi8qIE5vdCBpbXBsZW1lbnRlZFxuZXhwb3J0cy5kZWZsYXRlQm91bmQgPSBkZWZsYXRlQm91bmQ7XG5leHBvcnRzLmRlZmxhdGVDb3B5ID0gZGVmbGF0ZUNvcHk7XG5leHBvcnRzLmRlZmxhdGVQYXJhbXMgPSBkZWZsYXRlUGFyYW1zO1xuZXhwb3J0cy5kZWZsYXRlUGVuZGluZyA9IGRlZmxhdGVQZW5kaW5nO1xuZXhwb3J0cy5kZWZsYXRlUHJpbWUgPSBkZWZsYXRlUHJpbWU7XG5leHBvcnRzLmRlZmxhdGVUdW5lID0gZGVmbGF0ZVR1bmU7XG4qL1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbi8vIFNlZSBzdGF0ZSBkZWZzIGZyb20gaW5mbGF0ZS5qc1xudmFyIEJBRCA9IDMwOyAgICAgICAvKiBnb3QgYSBkYXRhIGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovXG52YXIgVFlQRSA9IDEyOyAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIHR5cGUgYml0cywgaW5jbHVkaW5nIGxhc3QtZmxhZyBiaXQgKi9cblxuLypcbiAgIERlY29kZSBsaXRlcmFsLCBsZW5ndGgsIGFuZCBkaXN0YW5jZSBjb2RlcyBhbmQgd3JpdGUgb3V0IHRoZSByZXN1bHRpbmdcbiAgIGxpdGVyYWwgYW5kIG1hdGNoIGJ5dGVzIHVudGlsIGVpdGhlciBub3QgZW5vdWdoIGlucHV0IG9yIG91dHB1dCBpc1xuICAgYXZhaWxhYmxlLCBhbiBlbmQtb2YtYmxvY2sgaXMgZW5jb3VudGVyZWQsIG9yIGEgZGF0YSBlcnJvciBpcyBlbmNvdW50ZXJlZC5cbiAgIFdoZW4gbGFyZ2UgZW5vdWdoIGlucHV0IGFuZCBvdXRwdXQgYnVmZmVycyBhcmUgc3VwcGxpZWQgdG8gaW5mbGF0ZSgpLCBmb3JcbiAgIGV4YW1wbGUsIGEgMTZLIGlucHV0IGJ1ZmZlciBhbmQgYSA2NEsgb3V0cHV0IGJ1ZmZlciwgbW9yZSB0aGFuIDk1JSBvZiB0aGVcbiAgIGluZmxhdGUgZXhlY3V0aW9uIHRpbWUgaXMgc3BlbnQgaW4gdGhpcyByb3V0aW5lLlxuXG4gICBFbnRyeSBhc3N1bXB0aW9uczpcblxuICAgICAgICBzdGF0ZS5tb2RlID09PSBMRU5cbiAgICAgICAgc3RybS5hdmFpbF9pbiA+PSA2XG4gICAgICAgIHN0cm0uYXZhaWxfb3V0ID49IDI1OFxuICAgICAgICBzdGFydCA+PSBzdHJtLmF2YWlsX291dFxuICAgICAgICBzdGF0ZS5iaXRzIDwgOFxuXG4gICBPbiByZXR1cm4sIHN0YXRlLm1vZGUgaXMgb25lIG9mOlxuXG4gICAgICAgIExFTiAtLSByYW4gb3V0IG9mIGVub3VnaCBvdXRwdXQgc3BhY2Ugb3IgZW5vdWdoIGF2YWlsYWJsZSBpbnB1dFxuICAgICAgICBUWVBFIC0tIHJlYWNoZWQgZW5kIG9mIGJsb2NrIGNvZGUsIGluZmxhdGUoKSB0byBpbnRlcnByZXQgbmV4dCBibG9ja1xuICAgICAgICBCQUQgLS0gZXJyb3IgaW4gYmxvY2sgZGF0YVxuXG4gICBOb3RlczpcblxuICAgIC0gVGhlIG1heGltdW0gaW5wdXQgYml0cyB1c2VkIGJ5IGEgbGVuZ3RoL2Rpc3RhbmNlIHBhaXIgaXMgMTUgYml0cyBmb3IgdGhlXG4gICAgICBsZW5ndGggY29kZSwgNSBiaXRzIGZvciB0aGUgbGVuZ3RoIGV4dHJhLCAxNSBiaXRzIGZvciB0aGUgZGlzdGFuY2UgY29kZSxcbiAgICAgIGFuZCAxMyBiaXRzIGZvciB0aGUgZGlzdGFuY2UgZXh0cmEuICBUaGlzIHRvdGFscyA0OCBiaXRzLCBvciBzaXggYnl0ZXMuXG4gICAgICBUaGVyZWZvcmUgaWYgc3RybS5hdmFpbF9pbiA+PSA2LCB0aGVuIHRoZXJlIGlzIGVub3VnaCBpbnB1dCB0byBhdm9pZFxuICAgICAgY2hlY2tpbmcgZm9yIGF2YWlsYWJsZSBpbnB1dCB3aGlsZSBkZWNvZGluZy5cblxuICAgIC0gVGhlIG1heGltdW0gYnl0ZXMgdGhhdCBhIHNpbmdsZSBsZW5ndGgvZGlzdGFuY2UgcGFpciBjYW4gb3V0cHV0IGlzIDI1OFxuICAgICAgYnl0ZXMsIHdoaWNoIGlzIHRoZSBtYXhpbXVtIGxlbmd0aCB0aGF0IGNhbiBiZSBjb2RlZC4gIGluZmxhdGVfZmFzdCgpXG4gICAgICByZXF1aXJlcyBzdHJtLmF2YWlsX291dCA+PSAyNTggZm9yIGVhY2ggbG9vcCB0byBhdm9pZCBjaGVja2luZyBmb3JcbiAgICAgIG91dHB1dCBzcGFjZS5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmZsYXRlX2Zhc3Qoc3RybSwgc3RhcnQpIHtcbiAgdmFyIHN0YXRlO1xuICB2YXIgX2luOyAgICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5pbnB1dCAqL1xuICB2YXIgbGFzdDsgICAgICAgICAgICAgICAgICAgLyogaGF2ZSBlbm91Z2ggaW5wdXQgd2hpbGUgaW4gPCBsYXN0ICovXG4gIHZhciBfb3V0OyAgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLm91dHB1dCAqL1xuICB2YXIgYmVnOyAgICAgICAgICAgICAgICAgICAgLyogaW5mbGF0ZSgpJ3MgaW5pdGlhbCBzdHJtLm91dHB1dCAqL1xuICB2YXIgZW5kOyAgICAgICAgICAgICAgICAgICAgLyogd2hpbGUgb3V0IDwgZW5kLCBlbm91Z2ggc3BhY2UgYXZhaWxhYmxlICovXG4vLyNpZmRlZiBJTkZMQVRFX1NUUklDVFxuICB2YXIgZG1heDsgICAgICAgICAgICAgICAgICAgLyogbWF4aW11bSBkaXN0YW5jZSBmcm9tIHpsaWIgaGVhZGVyICovXG4vLyNlbmRpZlxuICB2YXIgd3NpemU7ICAgICAgICAgICAgICAgICAgLyogd2luZG93IHNpemUgb3IgemVybyBpZiBub3QgdXNpbmcgd2luZG93ICovXG4gIHZhciB3aGF2ZTsgICAgICAgICAgICAgICAgICAvKiB2YWxpZCBieXRlcyBpbiB0aGUgd2luZG93ICovXG4gIHZhciB3bmV4dDsgICAgICAgICAgICAgICAgICAvKiB3aW5kb3cgd3JpdGUgaW5kZXggKi9cbiAgLy8gVXNlIGBzX3dpbmRvd2AgaW5zdGVhZCBgd2luZG93YCwgYXZvaWQgY29uZmxpY3Qgd2l0aCBpbnN0cnVtZW50YXRpb24gdG9vbHNcbiAgdmFyIHNfd2luZG93OyAgICAgICAgICAgICAgIC8qIGFsbG9jYXRlZCBzbGlkaW5nIHdpbmRvdywgaWYgd3NpemUgIT0gMCAqL1xuICB2YXIgaG9sZDsgICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5ob2xkICovXG4gIHZhciBiaXRzOyAgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLmJpdHMgKi9cbiAgdmFyIGxjb2RlOyAgICAgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0ubGVuY29kZSAqL1xuICB2YXIgZGNvZGU7ICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5kaXN0Y29kZSAqL1xuICB2YXIgbG1hc2s7ICAgICAgICAgICAgICAgICAgLyogbWFzayBmb3IgZmlyc3QgbGV2ZWwgb2YgbGVuZ3RoIGNvZGVzICovXG4gIHZhciBkbWFzazsgICAgICAgICAgICAgICAgICAvKiBtYXNrIGZvciBmaXJzdCBsZXZlbCBvZiBkaXN0YW5jZSBjb2RlcyAqL1xuICB2YXIgaGVyZTsgICAgICAgICAgICAgICAgICAgLyogcmV0cmlldmVkIHRhYmxlIGVudHJ5ICovXG4gIHZhciBvcDsgICAgICAgICAgICAgICAgICAgICAvKiBjb2RlIGJpdHMsIG9wZXJhdGlvbiwgZXh0cmEgYml0cywgb3IgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICB3aW5kb3cgcG9zaXRpb24sIHdpbmRvdyBieXRlcyB0byBjb3B5ICovXG4gIHZhciBsZW47ICAgICAgICAgICAgICAgICAgICAvKiBtYXRjaCBsZW5ndGgsIHVudXNlZCBieXRlcyAqL1xuICB2YXIgZGlzdDsgICAgICAgICAgICAgICAgICAgLyogbWF0Y2ggZGlzdGFuY2UgKi9cbiAgdmFyIGZyb207ICAgICAgICAgICAgICAgICAgIC8qIHdoZXJlIHRvIGNvcHkgbWF0Y2ggZnJvbSAqL1xuICB2YXIgZnJvbV9zb3VyY2U7XG5cblxuICB2YXIgaW5wdXQsIG91dHB1dDsgLy8gSlMgc3BlY2lmaWMsIGJlY2F1c2Ugd2UgaGF2ZSBubyBwb2ludGVyc1xuXG4gIC8qIGNvcHkgc3RhdGUgdG8gbG9jYWwgdmFyaWFibGVzICovXG4gIHN0YXRlID0gc3RybS5zdGF0ZTtcbiAgLy9oZXJlID0gc3RhdGUuaGVyZTtcbiAgX2luID0gc3RybS5uZXh0X2luO1xuICBpbnB1dCA9IHN0cm0uaW5wdXQ7XG4gIGxhc3QgPSBfaW4gKyAoc3RybS5hdmFpbF9pbiAtIDUpO1xuICBfb3V0ID0gc3RybS5uZXh0X291dDtcbiAgb3V0cHV0ID0gc3RybS5vdXRwdXQ7XG4gIGJlZyA9IF9vdXQgLSAoc3RhcnQgLSBzdHJtLmF2YWlsX291dCk7XG4gIGVuZCA9IF9vdXQgKyAoc3RybS5hdmFpbF9vdXQgLSAyNTcpO1xuLy8jaWZkZWYgSU5GTEFURV9TVFJJQ1RcbiAgZG1heCA9IHN0YXRlLmRtYXg7XG4vLyNlbmRpZlxuICB3c2l6ZSA9IHN0YXRlLndzaXplO1xuICB3aGF2ZSA9IHN0YXRlLndoYXZlO1xuICB3bmV4dCA9IHN0YXRlLnduZXh0O1xuICBzX3dpbmRvdyA9IHN0YXRlLndpbmRvdztcbiAgaG9sZCA9IHN0YXRlLmhvbGQ7XG4gIGJpdHMgPSBzdGF0ZS5iaXRzO1xuICBsY29kZSA9IHN0YXRlLmxlbmNvZGU7XG4gIGRjb2RlID0gc3RhdGUuZGlzdGNvZGU7XG4gIGxtYXNrID0gKDEgPDwgc3RhdGUubGVuYml0cykgLSAxO1xuICBkbWFzayA9ICgxIDw8IHN0YXRlLmRpc3RiaXRzKSAtIDE7XG5cblxuICAvKiBkZWNvZGUgbGl0ZXJhbHMgYW5kIGxlbmd0aC9kaXN0YW5jZXMgdW50aWwgZW5kLW9mLWJsb2NrIG9yIG5vdCBlbm91Z2hcbiAgICAgaW5wdXQgZGF0YSBvciBvdXRwdXQgc3BhY2UgKi9cblxuICB0b3A6XG4gIGRvIHtcbiAgICBpZiAoYml0cyA8IDE1KSB7XG4gICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgYml0cyArPSA4O1xuICAgICAgaG9sZCArPSBpbnB1dFtfaW4rK10gPDwgYml0cztcbiAgICAgIGJpdHMgKz0gODtcbiAgICB9XG5cbiAgICBoZXJlID0gbGNvZGVbaG9sZCAmIGxtYXNrXTtcblxuICAgIGRvbGVuOlxuICAgIGZvciAoOzspIHsgLy8gR290byBlbXVsYXRpb25cbiAgICAgIG9wID0gaGVyZSA+Pj4gMjQvKmhlcmUuYml0cyovO1xuICAgICAgaG9sZCA+Pj49IG9wO1xuICAgICAgYml0cyAtPSBvcDtcbiAgICAgIG9wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmYvKmhlcmUub3AqLztcbiAgICAgIGlmIChvcCA9PT0gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGl0ZXJhbCAqL1xuICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgaGVyZS52YWwgPj0gMHgyMCAmJiBoZXJlLnZhbCA8IDB4N2YgP1xuICAgICAgICAvLyAgICAgICAgXCJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgJyVjJ1xcblwiIDpcbiAgICAgICAgLy8gICAgICAgIFwiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsIDB4JTAyeFxcblwiLCBoZXJlLnZhbCkpO1xuICAgICAgICBvdXRwdXRbX291dCsrXSA9IGhlcmUgJiAweGZmZmYvKmhlcmUudmFsKi87XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChvcCAmIDE2KSB7ICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ3RoIGJhc2UgKi9cbiAgICAgICAgbGVuID0gaGVyZSAmIDB4ZmZmZi8qaGVyZS52YWwqLztcbiAgICAgICAgb3AgJj0gMTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGV4dHJhIGJpdHMgKi9cbiAgICAgICAgaWYgKG9wKSB7XG4gICAgICAgICAgaWYgKGJpdHMgPCBvcCkge1xuICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtfaW4rK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGVuICs9IGhvbGQgJiAoKDEgPDwgb3ApIC0gMSk7XG4gICAgICAgICAgaG9sZCA+Pj49IG9wO1xuICAgICAgICAgIGJpdHMgLT0gb3A7XG4gICAgICAgIH1cbiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBsZW5ndGggJXVcXG5cIiwgbGVuKSk7XG4gICAgICAgIGlmIChiaXRzIDwgMTUpIHtcbiAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICBoZXJlID0gZGNvZGVbaG9sZCAmIGRtYXNrXTtcblxuICAgICAgICBkb2Rpc3Q6XG4gICAgICAgIGZvciAoOzspIHsgLy8gZ290byBlbXVsYXRpb25cbiAgICAgICAgICBvcCA9IGhlcmUgPj4+IDI0LypoZXJlLmJpdHMqLztcbiAgICAgICAgICBob2xkID4+Pj0gb3A7XG4gICAgICAgICAgYml0cyAtPSBvcDtcbiAgICAgICAgICBvcCA9IChoZXJlID4+PiAxNikgJiAweGZmLypoZXJlLm9wKi87XG5cbiAgICAgICAgICBpZiAob3AgJiAxNikgeyAgICAgICAgICAgICAgICAgICAgICAvKiBkaXN0YW5jZSBiYXNlICovXG4gICAgICAgICAgICBkaXN0ID0gaGVyZSAmIDB4ZmZmZi8qaGVyZS52YWwqLztcbiAgICAgICAgICAgIG9wICY9IDE1OyAgICAgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGV4dHJhIGJpdHMgKi9cbiAgICAgICAgICAgIGlmIChiaXRzIDwgb3ApIHtcbiAgICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtfaW4rK10gPDwgYml0cztcbiAgICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgICBpZiAoYml0cyA8IG9wKSB7XG4gICAgICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtfaW4rK10gPDwgYml0cztcbiAgICAgICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpc3QgKz0gaG9sZCAmICgoMSA8PCBvcCkgLSAxKTtcbi8vI2lmZGVmIElORkxBVEVfU1RSSUNUXG4gICAgICAgICAgICBpZiAoZGlzdCA+IGRtYXgpIHtcbiAgICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2snO1xuICAgICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgICAgICBicmVhayB0b3A7XG4gICAgICAgICAgICB9XG4vLyNlbmRpZlxuICAgICAgICAgICAgaG9sZCA+Pj49IG9wO1xuICAgICAgICAgICAgYml0cyAtPSBvcDtcbiAgICAgICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCBcImluZmxhdGU6ICAgICAgICAgZGlzdGFuY2UgJXVcXG5cIiwgZGlzdCkpO1xuICAgICAgICAgICAgb3AgPSBfb3V0IC0gYmVnOyAgICAgICAgICAgICAgICAvKiBtYXggZGlzdGFuY2UgaW4gb3V0cHV0ICovXG4gICAgICAgICAgICBpZiAoZGlzdCA+IG9wKSB7ICAgICAgICAgICAgICAgIC8qIHNlZSBpZiBjb3B5IGZyb20gd2luZG93ICovXG4gICAgICAgICAgICAgIG9wID0gZGlzdCAtIG9wOyAgICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhY2sgaW4gd2luZG93ICovXG4gICAgICAgICAgICAgIGlmIChvcCA+IHdoYXZlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlLnNhbmUpIHtcbiAgICAgICAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrJztcbiAgICAgICAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICAgICAgICBicmVhayB0b3A7XG4gICAgICAgICAgICAgICAgfVxuXG4vLyAoISkgVGhpcyBibG9jayBpcyBkaXNhYmxlZCBpbiB6bGliIGRlZmF1bHRzLFxuLy8gZG9uJ3QgZW5hYmxlIGl0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eVxuLy8jaWZkZWYgSU5GTEFURV9BTExPV19JTlZBTElEX0RJU1RBTkNFX1RPT0ZBUl9BUlJSXG4vLyAgICAgICAgICAgICAgICBpZiAobGVuIDw9IG9wIC0gd2hhdmUpIHtcbi8vICAgICAgICAgICAgICAgICAgZG8ge1xuLy8gICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gMDtcbi8vICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1sZW4pO1xuLy8gICAgICAgICAgICAgICAgICBjb250aW51ZSB0b3A7XG4vLyAgICAgICAgICAgICAgICB9XG4vLyAgICAgICAgICAgICAgICBsZW4gLT0gb3AgLSB3aGF2ZTtcbi8vICAgICAgICAgICAgICAgIGRvIHtcbi8vICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSAwO1xuLy8gICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCA+IHdoYXZlKTtcbi8vICAgICAgICAgICAgICAgIGlmIChvcCA9PT0gMCkge1xuLy8gICAgICAgICAgICAgICAgICBmcm9tID0gX291dCAtIGRpc3Q7XG4vLyAgICAgICAgICAgICAgICAgIGRvIHtcbi8vICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdO1xuLy8gICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLWxlbik7XG4vLyAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHRvcDtcbi8vICAgICAgICAgICAgICAgIH1cbi8vI2VuZGlmXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZnJvbSA9IDA7IC8vIHdpbmRvdyBpbmRleFxuICAgICAgICAgICAgICBmcm9tX3NvdXJjZSA9IHNfd2luZG93O1xuICAgICAgICAgICAgICBpZiAod25leHQgPT09IDApIHsgICAgICAgICAgIC8qIHZlcnkgY29tbW9uIGNhc2UgKi9cbiAgICAgICAgICAgICAgICBmcm9tICs9IHdzaXplIC0gb3A7XG4gICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAgLyogc29tZSBmcm9tIHdpbmRvdyAqL1xuICAgICAgICAgICAgICAgICAgbGVuIC09IG9wO1xuICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IHNfd2luZG93W2Zyb20rK107XG4gICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wKTtcbiAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsgIC8qIHJlc3QgZnJvbSBvdXRwdXQgKi9cbiAgICAgICAgICAgICAgICAgIGZyb21fc291cmNlID0gb3V0cHV0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlIGlmICh3bmV4dCA8IG9wKSB7ICAgICAgLyogd3JhcCBhcm91bmQgd2luZG93ICovXG4gICAgICAgICAgICAgICAgZnJvbSArPSB3c2l6ZSArIHduZXh0IC0gb3A7XG4gICAgICAgICAgICAgICAgb3AgLT0gd25leHQ7XG4gICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAgLyogc29tZSBmcm9tIGVuZCBvZiB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDtcbiAgICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBzX3dpbmRvd1tmcm9tKytdO1xuICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7XG4gICAgICAgICAgICAgICAgICBmcm9tID0gMDtcbiAgICAgICAgICAgICAgICAgIGlmICh3bmV4dCA8IGxlbikgeyAgLyogc29tZSBmcm9tIHN0YXJ0IG9mIHdpbmRvdyAqL1xuICAgICAgICAgICAgICAgICAgICBvcCA9IHduZXh0O1xuICAgICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7XG4gICAgICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IHNfd2luZG93W2Zyb20rK107XG4gICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3ApO1xuICAgICAgICAgICAgICAgICAgICBmcm9tID0gX291dCAtIGRpc3Q7ICAgICAgLyogcmVzdCBmcm9tIG91dHB1dCAqL1xuICAgICAgICAgICAgICAgICAgICBmcm9tX3NvdXJjZSA9IG91dHB1dDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbnRpZ3VvdXMgaW4gd2luZG93ICovXG4gICAgICAgICAgICAgICAgZnJvbSArPSB3bmV4dCAtIG9wO1xuICAgICAgICAgICAgICAgIGlmIChvcCA8IGxlbikgeyAgICAgICAgIC8qIHNvbWUgZnJvbSB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDtcbiAgICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBzX3dpbmRvd1tmcm9tKytdO1xuICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7XG4gICAgICAgICAgICAgICAgICBmcm9tID0gX291dCAtIGRpc3Q7ICAvKiByZXN0IGZyb20gb3V0cHV0ICovXG4gICAgICAgICAgICAgICAgICBmcm9tX3NvdXJjZSA9IG91dHB1dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgd2hpbGUgKGxlbiA+IDIpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107XG4gICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBmcm9tX3NvdXJjZVtmcm9tKytdO1xuICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gZnJvbV9zb3VyY2VbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICBsZW4gLT0gMztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAobGVuKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBmcm9tX3NvdXJjZVtmcm9tKytdO1xuICAgICAgICAgICAgICAgIGlmIChsZW4gPiAxKSB7XG4gICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgZnJvbSA9IF9vdXQgLSBkaXN0OyAgICAgICAgICAvKiBjb3B5IGRpcmVjdCBmcm9tIG91dHB1dCAqL1xuICAgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgLyogbWluaW11bSBsZW5ndGggaXMgdGhyZWUgKi9cbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdO1xuICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107XG4gICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBvdXRwdXRbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICBsZW4gLT0gMztcbiAgICAgICAgICAgICAgfSB3aGlsZSAobGVuID4gMik7XG4gICAgICAgICAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdO1xuICAgICAgICAgICAgICAgIGlmIChsZW4gPiAxKSB7XG4gICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmICgob3AgJiA2NCkgPT09IDApIHsgICAgICAgICAgLyogMm5kIGxldmVsIGRpc3RhbmNlIGNvZGUgKi9cbiAgICAgICAgICAgIGhlcmUgPSBkY29kZVsoaGVyZSAmIDB4ZmZmZikvKmhlcmUudmFsKi8gKyAoaG9sZCAmICgoMSA8PCBvcCkgLSAxKSldO1xuICAgICAgICAgICAgY29udGludWUgZG9kaXN0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgY29kZSc7XG4gICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgICAgYnJlYWsgdG9wO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrOyAvLyBuZWVkIHRvIGVtdWxhdGUgZ290byB2aWEgXCJjb250aW51ZVwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKChvcCAmIDY0KSA9PT0gMCkgeyAgICAgICAgICAgICAgLyogMm5kIGxldmVsIGxlbmd0aCBjb2RlICovXG4gICAgICAgIGhlcmUgPSBsY29kZVsoaGVyZSAmIDB4ZmZmZikvKmhlcmUudmFsKi8gKyAoaG9sZCAmICgoMSA8PCBvcCkgLSAxKSldO1xuICAgICAgICBjb250aW51ZSBkb2xlbjtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKG9wICYgMzIpIHsgICAgICAgICAgICAgICAgICAgICAvKiBlbmQtb2YtYmxvY2sgKi9cbiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBlbmQgb2YgYmxvY2tcXG5cIikpO1xuICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRTtcbiAgICAgICAgYnJlYWsgdG9wO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSc7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgIGJyZWFrIHRvcDtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7IC8vIG5lZWQgdG8gZW11bGF0ZSBnb3RvIHZpYSBcImNvbnRpbnVlXCJcbiAgICB9XG4gIH0gd2hpbGUgKF9pbiA8IGxhc3QgJiYgX291dCA8IGVuZCk7XG5cbiAgLyogcmV0dXJuIHVudXNlZCBieXRlcyAob24gZW50cnksIGJpdHMgPCA4LCBzbyBpbiB3b24ndCBnbyB0b28gZmFyIGJhY2spICovXG4gIGxlbiA9IGJpdHMgPj4gMztcbiAgX2luIC09IGxlbjtcbiAgYml0cyAtPSBsZW4gPDwgMztcbiAgaG9sZCAmPSAoMSA8PCBiaXRzKSAtIDE7XG5cbiAgLyogdXBkYXRlIHN0YXRlIGFuZCByZXR1cm4gKi9cbiAgc3RybS5uZXh0X2luID0gX2luO1xuICBzdHJtLm5leHRfb3V0ID0gX291dDtcbiAgc3RybS5hdmFpbF9pbiA9IChfaW4gPCBsYXN0ID8gNSArIChsYXN0IC0gX2luKSA6IDUgLSAoX2luIC0gbGFzdCkpO1xuICBzdHJtLmF2YWlsX291dCA9IChfb3V0IDwgZW5kID8gMjU3ICsgKGVuZCAtIF9vdXQpIDogMjU3IC0gKF9vdXQgLSBlbmQpKTtcbiAgc3RhdGUuaG9sZCA9IGhvbGQ7XG4gIHN0YXRlLmJpdHMgPSBiaXRzO1xuICByZXR1cm47XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbnZhciB1dGlscyAgICAgICAgID0gcmVxdWlyZSgnLi4vdXRpbHMvY29tbW9uJyk7XG52YXIgYWRsZXIzMiAgICAgICA9IHJlcXVpcmUoJy4vYWRsZXIzMicpO1xudmFyIGNyYzMyICAgICAgICAgPSByZXF1aXJlKCcuL2NyYzMyJyk7XG52YXIgaW5mbGF0ZV9mYXN0ICA9IHJlcXVpcmUoJy4vaW5mZmFzdCcpO1xudmFyIGluZmxhdGVfdGFibGUgPSByZXF1aXJlKCcuL2luZnRyZWVzJyk7XG5cbnZhciBDT0RFUyA9IDA7XG52YXIgTEVOUyA9IDE7XG52YXIgRElTVFMgPSAyO1xuXG4vKiBQdWJsaWMgY29uc3RhbnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG4vKiBBbGxvd2VkIGZsdXNoIHZhbHVlczsgc2VlIGRlZmxhdGUoKSBhbmQgaW5mbGF0ZSgpIGJlbG93IGZvciBkZXRhaWxzICovXG4vL3ZhciBaX05PX0ZMVVNIICAgICAgPSAwO1xuLy92YXIgWl9QQVJUSUFMX0ZMVVNIID0gMTtcbi8vdmFyIFpfU1lOQ19GTFVTSCAgICA9IDI7XG4vL3ZhciBaX0ZVTExfRkxVU0ggICAgPSAzO1xudmFyIFpfRklOSVNIICAgICAgICA9IDQ7XG52YXIgWl9CTE9DSyAgICAgICAgID0gNTtcbnZhciBaX1RSRUVTICAgICAgICAgPSA2O1xuXG5cbi8qIFJldHVybiBjb2RlcyBmb3IgdGhlIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gZnVuY3Rpb25zLiBOZWdhdGl2ZSB2YWx1ZXNcbiAqIGFyZSBlcnJvcnMsIHBvc2l0aXZlIHZhbHVlcyBhcmUgdXNlZCBmb3Igc3BlY2lhbCBidXQgbm9ybWFsIGV2ZW50cy5cbiAqL1xudmFyIFpfT0sgICAgICAgICAgICA9IDA7XG52YXIgWl9TVFJFQU1fRU5EICAgID0gMTtcbnZhciBaX05FRURfRElDVCAgICAgPSAyO1xuLy92YXIgWl9FUlJOTyAgICAgICAgID0gLTE7XG52YXIgWl9TVFJFQU1fRVJST1IgID0gLTI7XG52YXIgWl9EQVRBX0VSUk9SICAgID0gLTM7XG52YXIgWl9NRU1fRVJST1IgICAgID0gLTQ7XG52YXIgWl9CVUZfRVJST1IgICAgID0gLTU7XG4vL3ZhciBaX1ZFUlNJT05fRVJST1IgPSAtNjtcblxuLyogVGhlIGRlZmxhdGUgY29tcHJlc3Npb24gbWV0aG9kICovXG52YXIgWl9ERUZMQVRFRCAgPSA4O1xuXG5cbi8qIFNUQVRFUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cbnZhciAgICBIRUFEID0gMTsgICAgICAgLyogaTogd2FpdGluZyBmb3IgbWFnaWMgaGVhZGVyICovXG52YXIgICAgRkxBR1MgPSAyOyAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIG1ldGhvZCBhbmQgZmxhZ3MgKGd6aXApICovXG52YXIgICAgVElNRSA9IDM7ICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIG1vZGlmaWNhdGlvbiB0aW1lIChnemlwKSAqL1xudmFyICAgIE9TID0gNDsgICAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBmbGFncyBhbmQgb3BlcmF0aW5nIHN5c3RlbSAoZ3ppcCkgKi9cbnZhciAgICBFWExFTiA9IDU7ICAgICAgLyogaTogd2FpdGluZyBmb3IgZXh0cmEgbGVuZ3RoIChnemlwKSAqL1xudmFyICAgIEVYVFJBID0gNjsgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBieXRlcyAoZ3ppcCkgKi9cbnZhciAgICBOQU1FID0gNzsgICAgICAgLyogaTogd2FpdGluZyBmb3IgZW5kIG9mIGZpbGUgbmFtZSAoZ3ppcCkgKi9cbnZhciAgICBDT01NRU5UID0gODsgICAgLyogaTogd2FpdGluZyBmb3IgZW5kIG9mIGNvbW1lbnQgKGd6aXApICovXG52YXIgICAgSENSQyA9IDk7ICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGhlYWRlciBjcmMgKGd6aXApICovXG52YXIgICAgRElDVElEID0gMTA7ICAgIC8qIGk6IHdhaXRpbmcgZm9yIGRpY3Rpb25hcnkgY2hlY2sgdmFsdWUgKi9cbnZhciAgICBESUNUID0gMTE7ICAgICAgLyogd2FpdGluZyBmb3IgaW5mbGF0ZVNldERpY3Rpb25hcnkoKSBjYWxsICovXG52YXIgICAgICAgIFRZUEUgPSAxMjsgICAgICAvKiBpOiB3YWl0aW5nIGZvciB0eXBlIGJpdHMsIGluY2x1ZGluZyBsYXN0LWZsYWcgYml0ICovXG52YXIgICAgICAgIFRZUEVETyA9IDEzOyAgICAvKiBpOiBzYW1lLCBidXQgc2tpcCBjaGVjayB0byBleGl0IGluZmxhdGUgb24gbmV3IGJsb2NrICovXG52YXIgICAgICAgIFNUT1JFRCA9IDE0OyAgICAvKiBpOiB3YWl0aW5nIGZvciBzdG9yZWQgc2l6ZSAobGVuZ3RoIGFuZCBjb21wbGVtZW50KSAqL1xudmFyICAgICAgICBDT1BZXyA9IDE1OyAgICAgLyogaS9vOiBzYW1lIGFzIENPUFkgYmVsb3csIGJ1dCBvbmx5IGZpcnN0IHRpbWUgaW4gKi9cbnZhciAgICAgICAgQ09QWSA9IDE2OyAgICAgIC8qIGkvbzogd2FpdGluZyBmb3IgaW5wdXQgb3Igb3V0cHV0IHRvIGNvcHkgc3RvcmVkIGJsb2NrICovXG52YXIgICAgICAgIFRBQkxFID0gMTc7ICAgICAvKiBpOiB3YWl0aW5nIGZvciBkeW5hbWljIGJsb2NrIHRhYmxlIGxlbmd0aHMgKi9cbnZhciAgICAgICAgTEVOTEVOUyA9IDE4OyAgIC8qIGk6IHdhaXRpbmcgZm9yIGNvZGUgbGVuZ3RoIGNvZGUgbGVuZ3RocyAqL1xudmFyICAgICAgICBDT0RFTEVOUyA9IDE5OyAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoL2xpdCBhbmQgZGlzdGFuY2UgY29kZSBsZW5ndGhzICovXG52YXIgICAgICAgICAgICBMRU5fID0gMjA7ICAgICAgLyogaTogc2FtZSBhcyBMRU4gYmVsb3csIGJ1dCBvbmx5IGZpcnN0IHRpbWUgaW4gKi9cbnZhciAgICAgICAgICAgIExFTiA9IDIxOyAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBsZW5ndGgvbGl0L2VvYiBjb2RlICovXG52YXIgICAgICAgICAgICBMRU5FWFQgPSAyMjsgICAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoIGV4dHJhIGJpdHMgKi9cbnZhciAgICAgICAgICAgIERJU1QgPSAyMzsgICAgICAvKiBpOiB3YWl0aW5nIGZvciBkaXN0YW5jZSBjb2RlICovXG52YXIgICAgICAgICAgICBESVNURVhUID0gMjQ7ICAgLyogaTogd2FpdGluZyBmb3IgZGlzdGFuY2UgZXh0cmEgYml0cyAqL1xudmFyICAgICAgICAgICAgTUFUQ0ggPSAyNTsgICAgIC8qIG86IHdhaXRpbmcgZm9yIG91dHB1dCBzcGFjZSB0byBjb3B5IHN0cmluZyAqL1xudmFyICAgICAgICAgICAgTElUID0gMjY7ICAgICAgIC8qIG86IHdhaXRpbmcgZm9yIG91dHB1dCBzcGFjZSB0byB3cml0ZSBsaXRlcmFsICovXG52YXIgICAgQ0hFQ0sgPSAyNzsgICAgIC8qIGk6IHdhaXRpbmcgZm9yIDMyLWJpdCBjaGVjayB2YWx1ZSAqL1xudmFyICAgIExFTkdUSCA9IDI4OyAgICAvKiBpOiB3YWl0aW5nIGZvciAzMi1iaXQgbGVuZ3RoIChnemlwKSAqL1xudmFyICAgIERPTkUgPSAyOTsgICAgICAvKiBmaW5pc2hlZCBjaGVjaywgZG9uZSAtLSByZW1haW4gaGVyZSB1bnRpbCByZXNldCAqL1xudmFyICAgIEJBRCA9IDMwOyAgICAgICAvKiBnb3QgYSBkYXRhIGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovXG52YXIgICAgTUVNID0gMzE7ICAgICAgIC8qIGdvdCBhbiBpbmZsYXRlKCkgbWVtb3J5IGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovXG52YXIgICAgU1lOQyA9IDMyOyAgICAgIC8qIGxvb2tpbmcgZm9yIHN5bmNocm9uaXphdGlvbiBieXRlcyB0byByZXN0YXJ0IGluZmxhdGUoKSAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cblxudmFyIEVOT1VHSF9MRU5TID0gODUyO1xudmFyIEVOT1VHSF9ESVNUUyA9IDU5Mjtcbi8vdmFyIEVOT1VHSCA9ICAoRU5PVUdIX0xFTlMrRU5PVUdIX0RJU1RTKTtcblxudmFyIE1BWF9XQklUUyA9IDE1O1xuLyogMzJLIExaNzcgd2luZG93ICovXG52YXIgREVGX1dCSVRTID0gTUFYX1dCSVRTO1xuXG5cbmZ1bmN0aW9uIHpzd2FwMzIocSkge1xuICByZXR1cm4gICgoKHEgPj4+IDI0KSAmIDB4ZmYpICtcbiAgICAgICAgICAoKHEgPj4+IDgpICYgMHhmZjAwKSArXG4gICAgICAgICAgKChxICYgMHhmZjAwKSA8PCA4KSArXG4gICAgICAgICAgKChxICYgMHhmZikgPDwgMjQpKTtcbn1cblxuXG5mdW5jdGlvbiBJbmZsYXRlU3RhdGUoKSB7XG4gIHRoaXMubW9kZSA9IDA7ICAgICAgICAgICAgIC8qIGN1cnJlbnQgaW5mbGF0ZSBtb2RlICovXG4gIHRoaXMubGFzdCA9IGZhbHNlOyAgICAgICAgICAvKiB0cnVlIGlmIHByb2Nlc3NpbmcgbGFzdCBibG9jayAqL1xuICB0aGlzLndyYXAgPSAwOyAgICAgICAgICAgICAgLyogYml0IDAgdHJ1ZSBmb3IgemxpYiwgYml0IDEgdHJ1ZSBmb3IgZ3ppcCAqL1xuICB0aGlzLmhhdmVkaWN0ID0gZmFsc2U7ICAgICAgLyogdHJ1ZSBpZiBkaWN0aW9uYXJ5IHByb3ZpZGVkICovXG4gIHRoaXMuZmxhZ3MgPSAwOyAgICAgICAgICAgICAvKiBnemlwIGhlYWRlciBtZXRob2QgYW5kIGZsYWdzICgwIGlmIHpsaWIpICovXG4gIHRoaXMuZG1heCA9IDA7ICAgICAgICAgICAgICAvKiB6bGliIGhlYWRlciBtYXggZGlzdGFuY2UgKElORkxBVEVfU1RSSUNUKSAqL1xuICB0aGlzLmNoZWNrID0gMDsgICAgICAgICAgICAgLyogcHJvdGVjdGVkIGNvcHkgb2YgY2hlY2sgdmFsdWUgKi9cbiAgdGhpcy50b3RhbCA9IDA7ICAgICAgICAgICAgIC8qIHByb3RlY3RlZCBjb3B5IG9mIG91dHB1dCBjb3VudCAqL1xuICAvLyBUT0RPOiBtYXkgYmUge31cbiAgdGhpcy5oZWFkID0gbnVsbDsgICAgICAgICAgIC8qIHdoZXJlIHRvIHNhdmUgZ3ppcCBoZWFkZXIgaW5mb3JtYXRpb24gKi9cblxuICAvKiBzbGlkaW5nIHdpbmRvdyAqL1xuICB0aGlzLndiaXRzID0gMDsgICAgICAgICAgICAgLyogbG9nIGJhc2UgMiBvZiByZXF1ZXN0ZWQgd2luZG93IHNpemUgKi9cbiAgdGhpcy53c2l6ZSA9IDA7ICAgICAgICAgICAgIC8qIHdpbmRvdyBzaXplIG9yIHplcm8gaWYgbm90IHVzaW5nIHdpbmRvdyAqL1xuICB0aGlzLndoYXZlID0gMDsgICAgICAgICAgICAgLyogdmFsaWQgYnl0ZXMgaW4gdGhlIHdpbmRvdyAqL1xuICB0aGlzLnduZXh0ID0gMDsgICAgICAgICAgICAgLyogd2luZG93IHdyaXRlIGluZGV4ICovXG4gIHRoaXMud2luZG93ID0gbnVsbDsgICAgICAgICAvKiBhbGxvY2F0ZWQgc2xpZGluZyB3aW5kb3csIGlmIG5lZWRlZCAqL1xuXG4gIC8qIGJpdCBhY2N1bXVsYXRvciAqL1xuICB0aGlzLmhvbGQgPSAwOyAgICAgICAgICAgICAgLyogaW5wdXQgYml0IGFjY3VtdWxhdG9yICovXG4gIHRoaXMuYml0cyA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgYml0cyBpbiBcImluXCIgKi9cblxuICAvKiBmb3Igc3RyaW5nIGFuZCBzdG9yZWQgYmxvY2sgY29weWluZyAqL1xuICB0aGlzLmxlbmd0aCA9IDA7ICAgICAgICAgICAgLyogbGl0ZXJhbCBvciBsZW5ndGggb2YgZGF0YSB0byBjb3B5ICovXG4gIHRoaXMub2Zmc2V0ID0gMDsgICAgICAgICAgICAvKiBkaXN0YW5jZSBiYWNrIHRvIGNvcHkgc3RyaW5nIGZyb20gKi9cblxuICAvKiBmb3IgdGFibGUgYW5kIGNvZGUgZGVjb2RpbmcgKi9cbiAgdGhpcy5leHRyYSA9IDA7ICAgICAgICAgICAgIC8qIGV4dHJhIGJpdHMgbmVlZGVkICovXG5cbiAgLyogZml4ZWQgYW5kIGR5bmFtaWMgY29kZSB0YWJsZXMgKi9cbiAgdGhpcy5sZW5jb2RlID0gbnVsbDsgICAgICAgICAgLyogc3RhcnRpbmcgdGFibGUgZm9yIGxlbmd0aC9saXRlcmFsIGNvZGVzICovXG4gIHRoaXMuZGlzdGNvZGUgPSBudWxsOyAgICAgICAgIC8qIHN0YXJ0aW5nIHRhYmxlIGZvciBkaXN0YW5jZSBjb2RlcyAqL1xuICB0aGlzLmxlbmJpdHMgPSAwOyAgICAgICAgICAgLyogaW5kZXggYml0cyBmb3IgbGVuY29kZSAqL1xuICB0aGlzLmRpc3RiaXRzID0gMDsgICAgICAgICAgLyogaW5kZXggYml0cyBmb3IgZGlzdGNvZGUgKi9cblxuICAvKiBkeW5hbWljIHRhYmxlIGJ1aWxkaW5nICovXG4gIHRoaXMubmNvZGUgPSAwOyAgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZSBsZW5ndGggY29kZSBsZW5ndGhzICovXG4gIHRoaXMubmxlbiA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgbGVuZ3RoIGNvZGUgbGVuZ3RocyAqL1xuICB0aGlzLm5kaXN0ID0gMDsgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGRpc3RhbmNlIGNvZGUgbGVuZ3RocyAqL1xuICB0aGlzLmhhdmUgPSAwOyAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNvZGUgbGVuZ3RocyBpbiBsZW5zW10gKi9cbiAgdGhpcy5uZXh0ID0gbnVsbDsgICAgICAgICAgICAgIC8qIG5leHQgYXZhaWxhYmxlIHNwYWNlIGluIGNvZGVzW10gKi9cblxuICB0aGlzLmxlbnMgPSBuZXcgdXRpbHMuQnVmMTYoMzIwKTsgLyogdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIGNvZGUgbGVuZ3RocyAqL1xuICB0aGlzLndvcmsgPSBuZXcgdXRpbHMuQnVmMTYoMjg4KTsgLyogd29yayBhcmVhIGZvciBjb2RlIHRhYmxlIGJ1aWxkaW5nICovXG5cbiAgLypcbiAgIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBwb2ludGVycyBpbiBqcywgd2UgdXNlIGxlbmNvZGUgYW5kIGRpc3Rjb2RlIGRpcmVjdGx5XG4gICBhcyBidWZmZXJzIHNvIHdlIGRvbid0IG5lZWQgY29kZXNcbiAgKi9cbiAgLy90aGlzLmNvZGVzID0gbmV3IHV0aWxzLkJ1ZjMyKEVOT1VHSCk7ICAgICAgIC8qIHNwYWNlIGZvciBjb2RlIHRhYmxlcyAqL1xuICB0aGlzLmxlbmR5biA9IG51bGw7ICAgICAgICAgICAgICAvKiBkeW5hbWljIHRhYmxlIGZvciBsZW5ndGgvbGl0ZXJhbCBjb2RlcyAoSlMgc3BlY2lmaWMpICovXG4gIHRoaXMuZGlzdGR5biA9IG51bGw7ICAgICAgICAgICAgIC8qIGR5bmFtaWMgdGFibGUgZm9yIGRpc3RhbmNlIGNvZGVzIChKUyBzcGVjaWZpYykgKi9cbiAgdGhpcy5zYW5lID0gMDsgICAgICAgICAgICAgICAgICAgLyogaWYgZmFsc2UsIGFsbG93IGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciAqL1xuICB0aGlzLmJhY2sgPSAwOyAgICAgICAgICAgICAgICAgICAvKiBiaXRzIGJhY2sgb2YgbGFzdCB1bnByb2Nlc3NlZCBsZW5ndGgvbGl0ICovXG4gIHRoaXMud2FzID0gMDsgICAgICAgICAgICAgICAgICAgIC8qIGluaXRpYWwgbGVuZ3RoIG9mIG1hdGNoICovXG59XG5cbmZ1bmN0aW9uIGluZmxhdGVSZXNldEtlZXAoc3RybSkge1xuICB2YXIgc3RhdGU7XG5cbiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfVxuICBzdGF0ZSA9IHN0cm0uc3RhdGU7XG4gIHN0cm0udG90YWxfaW4gPSBzdHJtLnRvdGFsX291dCA9IHN0YXRlLnRvdGFsID0gMDtcbiAgc3RybS5tc2cgPSAnJzsgLypaX05VTEwqL1xuICBpZiAoc3RhdGUud3JhcCkgeyAgICAgICAvKiB0byBzdXBwb3J0IGlsbC1jb25jZWl2ZWQgSmF2YSB0ZXN0IHN1aXRlICovXG4gICAgc3RybS5hZGxlciA9IHN0YXRlLndyYXAgJiAxO1xuICB9XG4gIHN0YXRlLm1vZGUgPSBIRUFEO1xuICBzdGF0ZS5sYXN0ID0gMDtcbiAgc3RhdGUuaGF2ZWRpY3QgPSAwO1xuICBzdGF0ZS5kbWF4ID0gMzI3Njg7XG4gIHN0YXRlLmhlYWQgPSBudWxsLypaX05VTEwqLztcbiAgc3RhdGUuaG9sZCA9IDA7XG4gIHN0YXRlLmJpdHMgPSAwO1xuICAvL3N0YXRlLmxlbmNvZGUgPSBzdGF0ZS5kaXN0Y29kZSA9IHN0YXRlLm5leHQgPSBzdGF0ZS5jb2RlcztcbiAgc3RhdGUubGVuY29kZSA9IHN0YXRlLmxlbmR5biA9IG5ldyB1dGlscy5CdWYzMihFTk9VR0hfTEVOUyk7XG4gIHN0YXRlLmRpc3Rjb2RlID0gc3RhdGUuZGlzdGR5biA9IG5ldyB1dGlscy5CdWYzMihFTk9VR0hfRElTVFMpO1xuXG4gIHN0YXRlLnNhbmUgPSAxO1xuICBzdGF0ZS5iYWNrID0gLTE7XG4gIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogcmVzZXRcXG5cIikpO1xuICByZXR1cm4gWl9PSztcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZVJlc2V0KHN0cm0pIHtcbiAgdmFyIHN0YXRlO1xuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuICBzdGF0ZS53c2l6ZSA9IDA7XG4gIHN0YXRlLndoYXZlID0gMDtcbiAgc3RhdGUud25leHQgPSAwO1xuICByZXR1cm4gaW5mbGF0ZVJlc2V0S2VlcChzdHJtKTtcblxufVxuXG5mdW5jdGlvbiBpbmZsYXRlUmVzZXQyKHN0cm0sIHdpbmRvd0JpdHMpIHtcbiAgdmFyIHdyYXA7XG4gIHZhciBzdGF0ZTtcblxuICAvKiBnZXQgdGhlIHN0YXRlICovXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuXG4gIC8qIGV4dHJhY3Qgd3JhcCByZXF1ZXN0IGZyb20gd2luZG93Qml0cyBwYXJhbWV0ZXIgKi9cbiAgaWYgKHdpbmRvd0JpdHMgPCAwKSB7XG4gICAgd3JhcCA9IDA7XG4gICAgd2luZG93Qml0cyA9IC13aW5kb3dCaXRzO1xuICB9XG4gIGVsc2Uge1xuICAgIHdyYXAgPSAod2luZG93Qml0cyA+PiA0KSArIDE7XG4gICAgaWYgKHdpbmRvd0JpdHMgPCA0OCkge1xuICAgICAgd2luZG93Qml0cyAmPSAxNTtcbiAgICB9XG4gIH1cblxuICAvKiBzZXQgbnVtYmVyIG9mIHdpbmRvdyBiaXRzLCBmcmVlIHdpbmRvdyBpZiBkaWZmZXJlbnQgKi9cbiAgaWYgKHdpbmRvd0JpdHMgJiYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkpIHtcbiAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gIH1cbiAgaWYgKHN0YXRlLndpbmRvdyAhPT0gbnVsbCAmJiBzdGF0ZS53Yml0cyAhPT0gd2luZG93Qml0cykge1xuICAgIHN0YXRlLndpbmRvdyA9IG51bGw7XG4gIH1cblxuICAvKiB1cGRhdGUgc3RhdGUgYW5kIHJlc2V0IHRoZSByZXN0IG9mIGl0ICovXG4gIHN0YXRlLndyYXAgPSB3cmFwO1xuICBzdGF0ZS53Yml0cyA9IHdpbmRvd0JpdHM7XG4gIHJldHVybiBpbmZsYXRlUmVzZXQoc3RybSk7XG59XG5cbmZ1bmN0aW9uIGluZmxhdGVJbml0MihzdHJtLCB3aW5kb3dCaXRzKSB7XG4gIHZhciByZXQ7XG4gIHZhciBzdGF0ZTtcblxuICBpZiAoIXN0cm0pIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIC8vc3RybS5tc2cgPSBaX05VTEw7ICAgICAgICAgICAgICAgICAvKiBpbiBjYXNlIHdlIHJldHVybiBhbiBlcnJvciAqL1xuXG4gIHN0YXRlID0gbmV3IEluZmxhdGVTdGF0ZSgpO1xuXG4gIC8vaWYgKHN0YXRlID09PSBaX05VTEwpIHJldHVybiBaX01FTV9FUlJPUjtcbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiBhbGxvY2F0ZWRcXG5cIikpO1xuICBzdHJtLnN0YXRlID0gc3RhdGU7XG4gIHN0YXRlLndpbmRvdyA9IG51bGwvKlpfTlVMTCovO1xuICByZXQgPSBpbmZsYXRlUmVzZXQyKHN0cm0sIHdpbmRvd0JpdHMpO1xuICBpZiAocmV0ICE9PSBaX09LKSB7XG4gICAgc3RybS5zdGF0ZSA9IG51bGwvKlpfTlVMTCovO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGluZmxhdGVJbml0KHN0cm0pIHtcbiAgcmV0dXJuIGluZmxhdGVJbml0MihzdHJtLCBERUZfV0JJVFMpO1xufVxuXG5cbi8qXG4gUmV0dXJuIHN0YXRlIHdpdGggbGVuZ3RoIGFuZCBkaXN0YW5jZSBkZWNvZGluZyB0YWJsZXMgYW5kIGluZGV4IHNpemVzIHNldCB0b1xuIGZpeGVkIGNvZGUgZGVjb2RpbmcuICBOb3JtYWxseSB0aGlzIHJldHVybnMgZml4ZWQgdGFibGVzIGZyb20gaW5mZml4ZWQuaC5cbiBJZiBCVUlMREZJWEVEIGlzIGRlZmluZWQsIHRoZW4gaW5zdGVhZCB0aGlzIHJvdXRpbmUgYnVpbGRzIHRoZSB0YWJsZXMgdGhlXG4gZmlyc3QgdGltZSBpdCdzIGNhbGxlZCwgYW5kIHJldHVybnMgdGhvc2UgdGFibGVzIHRoZSBmaXJzdCB0aW1lIGFuZFxuIHRoZXJlYWZ0ZXIuICBUaGlzIHJlZHVjZXMgdGhlIHNpemUgb2YgdGhlIGNvZGUgYnkgYWJvdXQgMksgYnl0ZXMsIGluXG4gZXhjaGFuZ2UgZm9yIGEgbGl0dGxlIGV4ZWN1dGlvbiB0aW1lLiAgSG93ZXZlciwgQlVJTERGSVhFRCBzaG91bGQgbm90IGJlXG4gdXNlZCBmb3IgdGhyZWFkZWQgYXBwbGljYXRpb25zLCBzaW5jZSB0aGUgcmV3cml0aW5nIG9mIHRoZSB0YWJsZXMgYW5kIHZpcmdpblxuIG1heSBub3QgYmUgdGhyZWFkLXNhZmUuXG4gKi9cbnZhciB2aXJnaW4gPSB0cnVlO1xuXG52YXIgbGVuZml4LCBkaXN0Zml4OyAvLyBXZSBoYXZlIG5vIHBvaW50ZXJzIGluIEpTLCBzbyBrZWVwIHRhYmxlcyBzZXBhcmF0ZVxuXG5mdW5jdGlvbiBmaXhlZHRhYmxlcyhzdGF0ZSkge1xuICAvKiBidWlsZCBmaXhlZCBodWZmbWFuIHRhYmxlcyBpZiBmaXJzdCBjYWxsIChtYXkgbm90IGJlIHRocmVhZCBzYWZlKSAqL1xuICBpZiAodmlyZ2luKSB7XG4gICAgdmFyIHN5bTtcblxuICAgIGxlbmZpeCA9IG5ldyB1dGlscy5CdWYzMig1MTIpO1xuICAgIGRpc3RmaXggPSBuZXcgdXRpbHMuQnVmMzIoMzIpO1xuXG4gICAgLyogbGl0ZXJhbC9sZW5ndGggdGFibGUgKi9cbiAgICBzeW0gPSAwO1xuICAgIHdoaWxlIChzeW0gPCAxNDQpIHsgc3RhdGUubGVuc1tzeW0rK10gPSA4OyB9XG4gICAgd2hpbGUgKHN5bSA8IDI1NikgeyBzdGF0ZS5sZW5zW3N5bSsrXSA9IDk7IH1cbiAgICB3aGlsZSAoc3ltIDwgMjgwKSB7IHN0YXRlLmxlbnNbc3ltKytdID0gNzsgfVxuICAgIHdoaWxlIChzeW0gPCAyODgpIHsgc3RhdGUubGVuc1tzeW0rK10gPSA4OyB9XG5cbiAgICBpbmZsYXRlX3RhYmxlKExFTlMsICBzdGF0ZS5sZW5zLCAwLCAyODgsIGxlbmZpeCwgICAwLCBzdGF0ZS53b3JrLCB7IGJpdHM6IDkgfSk7XG5cbiAgICAvKiBkaXN0YW5jZSB0YWJsZSAqL1xuICAgIHN5bSA9IDA7XG4gICAgd2hpbGUgKHN5bSA8IDMyKSB7IHN0YXRlLmxlbnNbc3ltKytdID0gNTsgfVxuXG4gICAgaW5mbGF0ZV90YWJsZShESVNUUywgc3RhdGUubGVucywgMCwgMzIsICAgZGlzdGZpeCwgMCwgc3RhdGUud29yaywgeyBiaXRzOiA1IH0pO1xuXG4gICAgLyogZG8gdGhpcyBqdXN0IG9uY2UgKi9cbiAgICB2aXJnaW4gPSBmYWxzZTtcbiAgfVxuXG4gIHN0YXRlLmxlbmNvZGUgPSBsZW5maXg7XG4gIHN0YXRlLmxlbmJpdHMgPSA5O1xuICBzdGF0ZS5kaXN0Y29kZSA9IGRpc3RmaXg7XG4gIHN0YXRlLmRpc3RiaXRzID0gNTtcbn1cblxuXG4vKlxuIFVwZGF0ZSB0aGUgd2luZG93IHdpdGggdGhlIGxhc3Qgd3NpemUgKG5vcm1hbGx5IDMySykgYnl0ZXMgd3JpdHRlbiBiZWZvcmVcbiByZXR1cm5pbmcuICBJZiB3aW5kb3cgZG9lcyBub3QgZXhpc3QgeWV0LCBjcmVhdGUgaXQuICBUaGlzIGlzIG9ubHkgY2FsbGVkXG4gd2hlbiBhIHdpbmRvdyBpcyBhbHJlYWR5IGluIHVzZSwgb3Igd2hlbiBvdXRwdXQgaGFzIGJlZW4gd3JpdHRlbiBkdXJpbmcgdGhpc1xuIGluZmxhdGUgY2FsbCwgYnV0IHRoZSBlbmQgb2YgdGhlIGRlZmxhdGUgc3RyZWFtIGhhcyBub3QgYmVlbiByZWFjaGVkIHlldC5cbiBJdCBpcyBhbHNvIGNhbGxlZCB0byBjcmVhdGUgYSB3aW5kb3cgZm9yIGRpY3Rpb25hcnkgZGF0YSB3aGVuIGEgZGljdGlvbmFyeVxuIGlzIGxvYWRlZC5cblxuIFByb3ZpZGluZyBvdXRwdXQgYnVmZmVycyBsYXJnZXIgdGhhbiAzMksgdG8gaW5mbGF0ZSgpIHNob3VsZCBwcm92aWRlIGEgc3BlZWRcbiBhZHZhbnRhZ2UsIHNpbmNlIG9ubHkgdGhlIGxhc3QgMzJLIG9mIG91dHB1dCBpcyBjb3BpZWQgdG8gdGhlIHNsaWRpbmcgd2luZG93XG4gdXBvbiByZXR1cm4gZnJvbSBpbmZsYXRlKCksIGFuZCBzaW5jZSBhbGwgZGlzdGFuY2VzIGFmdGVyIHRoZSBmaXJzdCAzMksgb2ZcbiBvdXRwdXQgd2lsbCBmYWxsIGluIHRoZSBvdXRwdXQgZGF0YSwgbWFraW5nIG1hdGNoIGNvcGllcyBzaW1wbGVyIGFuZCBmYXN0ZXIuXG4gVGhlIGFkdmFudGFnZSBtYXkgYmUgZGVwZW5kZW50IG9uIHRoZSBzaXplIG9mIHRoZSBwcm9jZXNzb3IncyBkYXRhIGNhY2hlcy5cbiAqL1xuZnVuY3Rpb24gdXBkYXRld2luZG93KHN0cm0sIHNyYywgZW5kLCBjb3B5KSB7XG4gIHZhciBkaXN0O1xuICB2YXIgc3RhdGUgPSBzdHJtLnN0YXRlO1xuXG4gIC8qIGlmIGl0IGhhc24ndCBiZWVuIGRvbmUgYWxyZWFkeSwgYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSB3aW5kb3cgKi9cbiAgaWYgKHN0YXRlLndpbmRvdyA9PT0gbnVsbCkge1xuICAgIHN0YXRlLndzaXplID0gMSA8PCBzdGF0ZS53Yml0cztcbiAgICBzdGF0ZS53bmV4dCA9IDA7XG4gICAgc3RhdGUud2hhdmUgPSAwO1xuXG4gICAgc3RhdGUud2luZG93ID0gbmV3IHV0aWxzLkJ1Zjgoc3RhdGUud3NpemUpO1xuICB9XG5cbiAgLyogY29weSBzdGF0ZS0+d3NpemUgb3IgbGVzcyBvdXRwdXQgYnl0ZXMgaW50byB0aGUgY2lyY3VsYXIgd2luZG93ICovXG4gIGlmIChjb3B5ID49IHN0YXRlLndzaXplKSB7XG4gICAgdXRpbHMuYXJyYXlTZXQoc3RhdGUud2luZG93LCBzcmMsIGVuZCAtIHN0YXRlLndzaXplLCBzdGF0ZS53c2l6ZSwgMCk7XG4gICAgc3RhdGUud25leHQgPSAwO1xuICAgIHN0YXRlLndoYXZlID0gc3RhdGUud3NpemU7XG4gIH1cbiAgZWxzZSB7XG4gICAgZGlzdCA9IHN0YXRlLndzaXplIC0gc3RhdGUud25leHQ7XG4gICAgaWYgKGRpc3QgPiBjb3B5KSB7XG4gICAgICBkaXN0ID0gY29weTtcbiAgICB9XG4gICAgLy96bWVtY3B5KHN0YXRlLT53aW5kb3cgKyBzdGF0ZS0+d25leHQsIGVuZCAtIGNvcHksIGRpc3QpO1xuICAgIHV0aWxzLmFycmF5U2V0KHN0YXRlLndpbmRvdywgc3JjLCBlbmQgLSBjb3B5LCBkaXN0LCBzdGF0ZS53bmV4dCk7XG4gICAgY29weSAtPSBkaXN0O1xuICAgIGlmIChjb3B5KSB7XG4gICAgICAvL3ptZW1jcHkoc3RhdGUtPndpbmRvdywgZW5kIC0gY29weSwgY29weSk7XG4gICAgICB1dGlscy5hcnJheVNldChzdGF0ZS53aW5kb3csIHNyYywgZW5kIC0gY29weSwgY29weSwgMCk7XG4gICAgICBzdGF0ZS53bmV4dCA9IGNvcHk7XG4gICAgICBzdGF0ZS53aGF2ZSA9IHN0YXRlLndzaXplO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHN0YXRlLnduZXh0ICs9IGRpc3Q7XG4gICAgICBpZiAoc3RhdGUud25leHQgPT09IHN0YXRlLndzaXplKSB7IHN0YXRlLnduZXh0ID0gMDsgfVxuICAgICAgaWYgKHN0YXRlLndoYXZlIDwgc3RhdGUud3NpemUpIHsgc3RhdGUud2hhdmUgKz0gZGlzdDsgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZShzdHJtLCBmbHVzaCkge1xuICB2YXIgc3RhdGU7XG4gIHZhciBpbnB1dCwgb3V0cHV0OyAgICAgICAgICAvLyBpbnB1dC9vdXRwdXQgYnVmZmVyc1xuICB2YXIgbmV4dDsgICAgICAgICAgICAgICAgICAgLyogbmV4dCBpbnB1dCBJTkRFWCAqL1xuICB2YXIgcHV0OyAgICAgICAgICAgICAgICAgICAgLyogbmV4dCBvdXRwdXQgSU5ERVggKi9cbiAgdmFyIGhhdmUsIGxlZnQ7ICAgICAgICAgICAgIC8qIGF2YWlsYWJsZSBpbnB1dCBhbmQgb3V0cHV0ICovXG4gIHZhciBob2xkOyAgICAgICAgICAgICAgICAgICAvKiBiaXQgYnVmZmVyICovXG4gIHZhciBiaXRzOyAgICAgICAgICAgICAgICAgICAvKiBiaXRzIGluIGJpdCBidWZmZXIgKi9cbiAgdmFyIF9pbiwgX291dDsgICAgICAgICAgICAgIC8qIHNhdmUgc3RhcnRpbmcgYXZhaWxhYmxlIGlucHV0IGFuZCBvdXRwdXQgKi9cbiAgdmFyIGNvcHk7ICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBzdG9yZWQgb3IgbWF0Y2ggYnl0ZXMgdG8gY29weSAqL1xuICB2YXIgZnJvbTsgICAgICAgICAgICAgICAgICAgLyogd2hlcmUgdG8gY29weSBtYXRjaCBieXRlcyBmcm9tICovXG4gIHZhciBmcm9tX3NvdXJjZTtcbiAgdmFyIGhlcmUgPSAwOyAgICAgICAgICAgICAgIC8qIGN1cnJlbnQgZGVjb2RpbmcgdGFibGUgZW50cnkgKi9cbiAgdmFyIGhlcmVfYml0cywgaGVyZV9vcCwgaGVyZV92YWw7IC8vIHBha2VkIFwiaGVyZVwiIGRlbm9ybWFsaXplZCAoSlMgc3BlY2lmaWMpXG4gIC8vdmFyIGxhc3Q7ICAgICAgICAgICAgICAgICAgIC8qIHBhcmVudCB0YWJsZSBlbnRyeSAqL1xuICB2YXIgbGFzdF9iaXRzLCBsYXN0X29wLCBsYXN0X3ZhbDsgLy8gcGFrZWQgXCJsYXN0XCIgZGVub3JtYWxpemVkIChKUyBzcGVjaWZpYylcbiAgdmFyIGxlbjsgICAgICAgICAgICAgICAgICAgIC8qIGxlbmd0aCB0byBjb3B5IGZvciByZXBlYXRzLCBiaXRzIHRvIGRyb3AgKi9cbiAgdmFyIHJldDsgICAgICAgICAgICAgICAgICAgIC8qIHJldHVybiBjb2RlICovXG4gIHZhciBoYnVmID0gbmV3IHV0aWxzLkJ1ZjgoNCk7ICAgIC8qIGJ1ZmZlciBmb3IgZ3ppcCBoZWFkZXIgY3JjIGNhbGN1bGF0aW9uICovXG4gIHZhciBvcHRzO1xuXG4gIHZhciBuOyAvLyB0ZW1wb3JhcnkgdmFyIGZvciBORUVEX0JJVFNcblxuICB2YXIgb3JkZXIgPSAvKiBwZXJtdXRhdGlvbiBvZiBjb2RlIGxlbmd0aHMgKi9cbiAgICBbIDE2LCAxNywgMTgsIDAsIDgsIDcsIDksIDYsIDEwLCA1LCAxMSwgNCwgMTIsIDMsIDEzLCAyLCAxNCwgMSwgMTUgXTtcblxuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSB8fCAhc3RybS5vdXRwdXQgfHxcbiAgICAgICghc3RybS5pbnB1dCAmJiBzdHJtLmF2YWlsX2luICE9PSAwKSkge1xuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuXG4gIHN0YXRlID0gc3RybS5zdGF0ZTtcbiAgaWYgKHN0YXRlLm1vZGUgPT09IFRZUEUpIHsgc3RhdGUubW9kZSA9IFRZUEVETzsgfSAgICAvKiBza2lwIGNoZWNrICovXG5cblxuICAvLy0tLSBMT0FEKCkgLS0tXG4gIHB1dCA9IHN0cm0ubmV4dF9vdXQ7XG4gIG91dHB1dCA9IHN0cm0ub3V0cHV0O1xuICBsZWZ0ID0gc3RybS5hdmFpbF9vdXQ7XG4gIG5leHQgPSBzdHJtLm5leHRfaW47XG4gIGlucHV0ID0gc3RybS5pbnB1dDtcbiAgaGF2ZSA9IHN0cm0uYXZhaWxfaW47XG4gIGhvbGQgPSBzdGF0ZS5ob2xkO1xuICBiaXRzID0gc3RhdGUuYml0cztcbiAgLy8tLS1cblxuICBfaW4gPSBoYXZlO1xuICBfb3V0ID0gbGVmdDtcbiAgcmV0ID0gWl9PSztcblxuICBpbmZfbGVhdmU6IC8vIGdvdG8gZW11bGF0aW9uXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKHN0YXRlLm1vZGUpIHtcbiAgICAgIGNhc2UgSEVBRDpcbiAgICAgICAgaWYgKHN0YXRlLndyYXAgPT09IDApIHtcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRURPO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDE2KTtcbiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBpZiAoKHN0YXRlLndyYXAgJiAyKSAmJiBob2xkID09PSAweDhiMWYpIHsgIC8qIGd6aXAgaGVhZGVyICovXG4gICAgICAgICAgc3RhdGUuY2hlY2sgPSAwLypjcmMzMigwTCwgWl9OVUxMLCAwKSovO1xuICAgICAgICAgIC8vPT09IENSQzIoc3RhdGUuY2hlY2ssIGhvbGQpO1xuICAgICAgICAgIGhidWZbMF0gPSBob2xkICYgMHhmZjtcbiAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjtcbiAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBoYnVmLCAyLCAwKTtcbiAgICAgICAgICAvLz09PS8vXG5cbiAgICAgICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgICAgIGhvbGQgPSAwO1xuICAgICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICBzdGF0ZS5tb2RlID0gRkxBR1M7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUuZmxhZ3MgPSAwOyAgICAgICAgICAgLyogZXhwZWN0IHpsaWIgaGVhZGVyICovXG4gICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgc3RhdGUuaGVhZC5kb25lID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEoc3RhdGUud3JhcCAmIDEpIHx8ICAgLyogY2hlY2sgaWYgemxpYiBoZWFkZXIgYWxsb3dlZCAqL1xuICAgICAgICAgICgoKGhvbGQgJiAweGZmKS8qQklUUyg4KSovIDw8IDgpICsgKGhvbGQgPj4gOCkpICUgMzEpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbmNvcnJlY3QgaGVhZGVyIGNoZWNrJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoaG9sZCAmIDB4MGYpLypCSVRTKDQpKi8gIT09IFpfREVGTEFURUQpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICd1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLy0tLSBEUk9QQklUUyg0KSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gNDtcbiAgICAgICAgYml0cyAtPSA0O1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIGxlbiA9IChob2xkICYgMHgwZikvKkJJVFMoNCkqLyArIDg7XG4gICAgICAgIGlmIChzdGF0ZS53Yml0cyA9PT0gMCkge1xuICAgICAgICAgIHN0YXRlLndiaXRzID0gbGVuO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGxlbiA+IHN0YXRlLndiaXRzKSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCB3aW5kb3cgc2l6ZSc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5kbWF4ID0gMSA8PCBsZW47XG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICB6bGliIGhlYWRlciBva1xcblwiKSk7XG4gICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9IDEvKmFkbGVyMzIoMEwsIFpfTlVMTCwgMCkqLztcbiAgICAgICAgc3RhdGUubW9kZSA9IGhvbGQgJiAweDIwMCA/IERJQ1RJRCA6IFRZUEU7XG4gICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgIGhvbGQgPSAwO1xuICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgLy89PT0vL1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRkxBR1M6XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDE2KTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5mbGFncyA9IGhvbGQ7XG4gICAgICAgIGlmICgoc3RhdGUuZmxhZ3MgJiAweGZmKSAhPT0gWl9ERUZMQVRFRCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ3Vua25vd24gY29tcHJlc3Npb24gbWV0aG9kJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4ZTAwMCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ3Vua25vd24gaGVhZGVyIGZsYWdzIHNldCc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQudGV4dCA9ICgoaG9sZCA+PiA4KSAmIDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkge1xuICAgICAgICAgIC8vPT09IENSQzIoc3RhdGUuY2hlY2ssIGhvbGQpO1xuICAgICAgICAgIGhidWZbMF0gPSBob2xkICYgMHhmZjtcbiAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjtcbiAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBoYnVmLCAyLCAwKTtcbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgIH1cbiAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLm1vZGUgPSBUSU1FO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIFRJTUU6XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDMyKTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAzMikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQudGltZSA9IGhvbGQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgLy89PT0gQ1JDNChzdGF0ZS5jaGVjaywgaG9sZClcbiAgICAgICAgICBoYnVmWzBdID0gaG9sZCAmIDB4ZmY7XG4gICAgICAgICAgaGJ1ZlsxXSA9IChob2xkID4+PiA4KSAmIDB4ZmY7XG4gICAgICAgICAgaGJ1ZlsyXSA9IChob2xkID4+PiAxNikgJiAweGZmO1xuICAgICAgICAgIGhidWZbM10gPSAoaG9sZCA+Pj4gMjQpICYgMHhmZjtcbiAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBoYnVmLCA0LCAwKTtcbiAgICAgICAgICAvLz09PVxuICAgICAgICB9XG4gICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgIGhvbGQgPSAwO1xuICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5tb2RlID0gT1M7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgT1M6XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDE2KTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQueGZsYWdzID0gKGhvbGQgJiAweGZmKTtcbiAgICAgICAgICBzdGF0ZS5oZWFkLm9zID0gKGhvbGQgPj4gOCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgLy89PT0gQ1JDMihzdGF0ZS5jaGVjaywgaG9sZCk7XG4gICAgICAgICAgaGJ1ZlswXSA9IGhvbGQgJiAweGZmO1xuICAgICAgICAgIGhidWZbMV0gPSAoaG9sZCA+Pj4gOCkgJiAweGZmO1xuICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDIsIDApO1xuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgfVxuICAgICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgICBob2xkID0gMDtcbiAgICAgICAgYml0cyA9IDA7XG4gICAgICAgIC8vPT09Ly9cbiAgICAgICAgc3RhdGUubW9kZSA9IEVYTEVOO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIEVYTEVOOlxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDA0MDApIHtcbiAgICAgICAgICAvLz09PSBORUVEQklUUygxNik7ICovXG4gICAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikge1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIHN0YXRlLmxlbmd0aCA9IGhvbGQ7XG4gICAgICAgICAgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgICAgIHN0YXRlLmhlYWQuZXh0cmFfbGVuID0gaG9sZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgICAvLz09PSBDUkMyKHN0YXRlLmNoZWNrLCBob2xkKTtcbiAgICAgICAgICAgIGhidWZbMF0gPSBob2xkICYgMHhmZjtcbiAgICAgICAgICAgIGhidWZbMV0gPSAoaG9sZCA+Pj4gOCkgJiAweGZmO1xuICAgICAgICAgICAgc3RhdGUuY2hlY2sgPSBjcmMzMihzdGF0ZS5jaGVjaywgaGJ1ZiwgMiwgMCk7XG4gICAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgICAgYml0cyA9IDA7XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhID0gbnVsbC8qWl9OVUxMKi87XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUubW9kZSA9IEVYVFJBO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIEVYVFJBOlxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDA0MDApIHtcbiAgICAgICAgICBjb3B5ID0gc3RhdGUubGVuZ3RoO1xuICAgICAgICAgIGlmIChjb3B5ID4gaGF2ZSkgeyBjb3B5ID0gaGF2ZTsgfVxuICAgICAgICAgIGlmIChjb3B5KSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgICAgICBsZW4gPSBzdGF0ZS5oZWFkLmV4dHJhX2xlbiAtIHN0YXRlLmxlbmd0aDtcbiAgICAgICAgICAgICAgaWYgKCFzdGF0ZS5oZWFkLmV4dHJhKSB7XG4gICAgICAgICAgICAgICAgLy8gVXNlIHVudHlwZWQgYXJyYXkgZm9yIG1vcmUgY29udmVuaWVudCBwcm9jZXNzaW5nIGxhdGVyXG4gICAgICAgICAgICAgICAgc3RhdGUuaGVhZC5leHRyYSA9IG5ldyBBcnJheShzdGF0ZS5oZWFkLmV4dHJhX2xlbik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdXRpbHMuYXJyYXlTZXQoXG4gICAgICAgICAgICAgICAgc3RhdGUuaGVhZC5leHRyYSxcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBuZXh0LFxuICAgICAgICAgICAgICAgIC8vIGV4dHJhIGZpZWxkIGlzIGxpbWl0ZWQgdG8gNjU1MzYgYnl0ZXNcbiAgICAgICAgICAgICAgICAvLyAtIG5vIG5lZWQgZm9yIGFkZGl0aW9uYWwgc2l6ZSBjaGVja1xuICAgICAgICAgICAgICAgIGNvcHksXG4gICAgICAgICAgICAgICAgLypsZW4gKyBjb3B5ID4gc3RhdGUuaGVhZC5leHRyYV9tYXggLSBsZW4gPyBzdGF0ZS5oZWFkLmV4dHJhX21heCA6IGNvcHksKi9cbiAgICAgICAgICAgICAgICBsZW5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgLy96bWVtY3B5KHN0YXRlLmhlYWQuZXh0cmEgKyBsZW4sIG5leHQsXG4gICAgICAgICAgICAgIC8vICAgICAgICBsZW4gKyBjb3B5ID4gc3RhdGUuaGVhZC5leHRyYV9tYXggP1xuICAgICAgICAgICAgICAvLyAgICAgICAgc3RhdGUuaGVhZC5leHRyYV9tYXggLSBsZW4gOiBjb3B5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkge1xuICAgICAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBpbnB1dCwgY29weSwgbmV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoYXZlIC09IGNvcHk7XG4gICAgICAgICAgICBuZXh0ICs9IGNvcHk7XG4gICAgICAgICAgICBzdGF0ZS5sZW5ndGggLT0gY29weTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YXRlLmxlbmd0aCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5sZW5ndGggPSAwO1xuICAgICAgICBzdGF0ZS5tb2RlID0gTkFNRTtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBOQU1FOlxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDA4MDApIHtcbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBjb3B5ID0gMDtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAvLyBUT0RPOiAyIG9yIDEgYnl0ZXM/XG4gICAgICAgICAgICBsZW4gPSBpbnB1dFtuZXh0ICsgY29weSsrXTtcbiAgICAgICAgICAgIC8qIHVzZSBjb25zdGFudCBsaW1pdCBiZWNhdXNlIGluIGpzIHdlIHNob3VsZCBub3QgcHJlYWxsb2NhdGUgbWVtb3J5ICovXG4gICAgICAgICAgICBpZiAoc3RhdGUuaGVhZCAmJiBsZW4gJiZcbiAgICAgICAgICAgICAgICAoc3RhdGUubGVuZ3RoIDwgNjU1MzYgLypzdGF0ZS5oZWFkLm5hbWVfbWF4Ki8pKSB7XG4gICAgICAgICAgICAgIHN0YXRlLmhlYWQubmFtZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGxlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSB3aGlsZSAobGVuICYmIGNvcHkgPCBoYXZlKTtcblxuICAgICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkge1xuICAgICAgICAgICAgc3RhdGUuY2hlY2sgPSBjcmMzMihzdGF0ZS5jaGVjaywgaW5wdXQsIGNvcHksIG5leHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBoYXZlIC09IGNvcHk7XG4gICAgICAgICAgbmV4dCArPSBjb3B5O1xuICAgICAgICAgIGlmIChsZW4pIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQubmFtZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUubGVuZ3RoID0gMDtcbiAgICAgICAgc3RhdGUubW9kZSA9IENPTU1FTlQ7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgQ09NTUVOVDpcbiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgxMDAwKSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgY29weSA9IDA7XG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgbGVuID0gaW5wdXRbbmV4dCArIGNvcHkrK107XG4gICAgICAgICAgICAvKiB1c2UgY29uc3RhbnQgbGltaXQgYmVjYXVzZSBpbiBqcyB3ZSBzaG91bGQgbm90IHByZWFsbG9jYXRlIG1lbW9yeSAqL1xuICAgICAgICAgICAgaWYgKHN0YXRlLmhlYWQgJiYgbGVuICYmXG4gICAgICAgICAgICAgICAgKHN0YXRlLmxlbmd0aCA8IDY1NTM2IC8qc3RhdGUuaGVhZC5jb21tX21heCovKSkge1xuICAgICAgICAgICAgICBzdGF0ZS5oZWFkLmNvbW1lbnQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShsZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gd2hpbGUgKGxlbiAmJiBjb3B5IDwgaGF2ZSk7XG4gICAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBpbnB1dCwgY29weSwgbmV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGhhdmUgLT0gY29weTtcbiAgICAgICAgICBuZXh0ICs9IGNvcHk7XG4gICAgICAgICAgaWYgKGxlbikgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgc3RhdGUuaGVhZC5jb21tZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5tb2RlID0gSENSQztcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBIQ1JDOlxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgICAvLz09PSBORUVEQklUUygxNik7ICovXG4gICAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikge1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIGlmIChob2xkICE9PSAoc3RhdGUuY2hlY2sgJiAweGZmZmYpKSB7XG4gICAgICAgICAgICBzdHJtLm1zZyA9ICdoZWFkZXIgY3JjIG1pc21hdGNoJztcbiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgICBob2xkID0gMDtcbiAgICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgICBzdGF0ZS5oZWFkLmhjcmMgPSAoKHN0YXRlLmZsYWdzID4+IDkpICYgMSk7XG4gICAgICAgICAgc3RhdGUuaGVhZC5kb25lID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSAwO1xuICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERJQ1RJRDpcbiAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpOyAqL1xuICAgICAgICB3aGlsZSAoYml0cyA8IDMyKSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9IHpzd2FwMzIoaG9sZCk7XG4gICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgIGhvbGQgPSAwO1xuICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5tb2RlID0gRElDVDtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBESUNUOlxuICAgICAgICBpZiAoc3RhdGUuaGF2ZWRpY3QgPT09IDApIHtcbiAgICAgICAgICAvLy0tLSBSRVNUT1JFKCkgLS0tXG4gICAgICAgICAgc3RybS5uZXh0X291dCA9IHB1dDtcbiAgICAgICAgICBzdHJtLmF2YWlsX291dCA9IGxlZnQ7XG4gICAgICAgICAgc3RybS5uZXh0X2luID0gbmV4dDtcbiAgICAgICAgICBzdHJtLmF2YWlsX2luID0gaGF2ZTtcbiAgICAgICAgICBzdGF0ZS5ob2xkID0gaG9sZDtcbiAgICAgICAgICBzdGF0ZS5iaXRzID0gYml0cztcbiAgICAgICAgICAvLy0tLVxuICAgICAgICAgIHJldHVybiBaX05FRURfRElDVDtcbiAgICAgICAgfVxuICAgICAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSAxLyphZGxlcjMyKDBMLCBaX05VTEwsIDApKi87XG4gICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIFRZUEU6XG4gICAgICAgIGlmIChmbHVzaCA9PT0gWl9CTE9DSyB8fCBmbHVzaCA9PT0gWl9UUkVFUykgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBUWVBFRE86XG4gICAgICAgIGlmIChzdGF0ZS5sYXN0KSB7XG4gICAgICAgICAgLy8tLS0gQllURUJJVFMoKSAtLS0vL1xuICAgICAgICAgIGhvbGQgPj4+PSBiaXRzICYgNztcbiAgICAgICAgICBiaXRzIC09IGJpdHMgJiA3O1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQ0hFQ0s7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0gTkVFREJJVFMoMyk7ICovXG4gICAgICAgIHdoaWxlIChiaXRzIDwgMykge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5sYXN0ID0gKGhvbGQgJiAweDAxKS8qQklUUygxKSovO1xuICAgICAgICAvLy0tLSBEUk9QQklUUygxKSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gMTtcbiAgICAgICAgYml0cyAtPSAxO1xuICAgICAgICAvLy0tLS8vXG5cbiAgICAgICAgc3dpdGNoICgoaG9sZCAmIDB4MDMpLypCSVRTKDIpKi8pIHtcbiAgICAgICAgICBjYXNlIDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdG9yZWQgYmxvY2sgKi9cbiAgICAgICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgIHN0b3JlZCBibG9jayVzXFxuXCIsXG4gICAgICAgICAgICAvLyAgICAgICAgc3RhdGUubGFzdCA/IFwiIChsYXN0KVwiIDogXCJcIikpO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IFNUT1JFRDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpeGVkIGJsb2NrICovXG4gICAgICAgICAgICBmaXhlZHRhYmxlcyhzdGF0ZSk7XG4gICAgICAgICAgICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgICBmaXhlZCBjb2RlcyBibG9jayVzXFxuXCIsXG4gICAgICAgICAgICAvLyAgICAgICAgc3RhdGUubGFzdCA/IFwiIChsYXN0KVwiIDogXCJcIikpO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IExFTl87ICAgICAgICAgICAgIC8qIGRlY29kZSBjb2RlcyAqL1xuICAgICAgICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7XG4gICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKDIpIC0tLS8vXG4gICAgICAgICAgICAgIGhvbGQgPj4+PSAyO1xuICAgICAgICAgICAgICBiaXRzIC09IDI7XG4gICAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICAgICAgYnJlYWsgaW5mX2xlYXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZHluYW1pYyBibG9jayAqL1xuICAgICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgZHluYW1pYyBjb2RlcyBibG9jayVzXFxuXCIsXG4gICAgICAgICAgICAvLyAgICAgICAgc3RhdGUubGFzdCA/IFwiIChsYXN0KVwiIDogXCJcIikpO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IFRBQkxFO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBibG9jayB0eXBlJztcbiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8tLS0gRFJPUEJJVFMoMikgLS0tLy9cbiAgICAgICAgaG9sZCA+Pj49IDI7XG4gICAgICAgIGJpdHMgLT0gMjtcbiAgICAgICAgLy8tLS0vL1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1RPUkVEOlxuICAgICAgICAvLy0tLSBCWVRFQklUUygpIC0tLS8vIC8qIGdvIHRvIGJ5dGUgYm91bmRhcnkgKi9cbiAgICAgICAgaG9sZCA+Pj49IGJpdHMgJiA3O1xuICAgICAgICBiaXRzIC09IGJpdHMgJiA3O1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIC8vPT09IE5FRURCSVRTKDMyKTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAzMikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBpZiAoKGhvbGQgJiAweGZmZmYpICE9PSAoKGhvbGQgPj4+IDE2KSBeIDB4ZmZmZikpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLmxlbmd0aCA9IGhvbGQgJiAweGZmZmY7XG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgc3RvcmVkIGxlbmd0aCAldVxcblwiLFxuICAgICAgICAvLyAgICAgICAgc3RhdGUubGVuZ3RoKSk7XG4gICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgIGhvbGQgPSAwO1xuICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5tb2RlID0gQ09QWV87XG4gICAgICAgIGlmIChmbHVzaCA9PT0gWl9UUkVFUykgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBDT1BZXzpcbiAgICAgICAgc3RhdGUubW9kZSA9IENPUFk7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgQ09QWTpcbiAgICAgICAgY29weSA9IHN0YXRlLmxlbmd0aDtcbiAgICAgICAgaWYgKGNvcHkpIHtcbiAgICAgICAgICBpZiAoY29weSA+IGhhdmUpIHsgY29weSA9IGhhdmU7IH1cbiAgICAgICAgICBpZiAoY29weSA+IGxlZnQpIHsgY29weSA9IGxlZnQ7IH1cbiAgICAgICAgICBpZiAoY29weSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAvLy0tLSB6bWVtY3B5KHB1dCwgbmV4dCwgY29weSk7IC0tLVxuICAgICAgICAgIHV0aWxzLmFycmF5U2V0KG91dHB1dCwgaW5wdXQsIG5leHQsIGNvcHksIHB1dCk7XG4gICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIGhhdmUgLT0gY29weTtcbiAgICAgICAgICBuZXh0ICs9IGNvcHk7XG4gICAgICAgICAgbGVmdCAtPSBjb3B5O1xuICAgICAgICAgIHB1dCArPSBjb3B5O1xuICAgICAgICAgIHN0YXRlLmxlbmd0aCAtPSBjb3B5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgc3RvcmVkIGVuZFxcblwiKSk7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVEFCTEU6XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDE0KTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNCkge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5ubGVuID0gKGhvbGQgJiAweDFmKS8qQklUUyg1KSovICsgMjU3O1xuICAgICAgICAvLy0tLSBEUk9QQklUUyg1KSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gNTtcbiAgICAgICAgYml0cyAtPSA1O1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIHN0YXRlLm5kaXN0ID0gKGhvbGQgJiAweDFmKS8qQklUUyg1KSovICsgMTtcbiAgICAgICAgLy8tLS0gRFJPUEJJVFMoNSkgLS0tLy9cbiAgICAgICAgaG9sZCA+Pj49IDU7XG4gICAgICAgIGJpdHMgLT0gNTtcbiAgICAgICAgLy8tLS0vL1xuICAgICAgICBzdGF0ZS5uY29kZSA9IChob2xkICYgMHgwZikvKkJJVFMoNCkqLyArIDQ7XG4gICAgICAgIC8vLS0tIERST1BCSVRTKDQpIC0tLS8vXG4gICAgICAgIGhvbGQgPj4+PSA0O1xuICAgICAgICBiaXRzIC09IDQ7XG4gICAgICAgIC8vLS0tLy9cbi8vI2lmbmRlZiBQS1pJUF9CVUdfV09SS0FST1VORFxuICAgICAgICBpZiAoc3RhdGUubmxlbiA+IDI4NiB8fCBzdGF0ZS5uZGlzdCA+IDMwKSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAndG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMnO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbi8vI2VuZGlmXG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgdGFibGUgc2l6ZXMgb2tcXG5cIikpO1xuICAgICAgICBzdGF0ZS5oYXZlID0gMDtcbiAgICAgICAgc3RhdGUubW9kZSA9IExFTkxFTlM7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgTEVOTEVOUzpcbiAgICAgICAgd2hpbGUgKHN0YXRlLmhhdmUgPCBzdGF0ZS5uY29kZSkge1xuICAgICAgICAgIC8vPT09IE5FRURCSVRTKDMpO1xuICAgICAgICAgIHdoaWxlIChiaXRzIDwgMykge1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIHN0YXRlLmxlbnNbb3JkZXJbc3RhdGUuaGF2ZSsrXV0gPSAoaG9sZCAmIDB4MDcpOy8vQklUUygzKTtcbiAgICAgICAgICAvLy0tLSBEUk9QQklUUygzKSAtLS0vL1xuICAgICAgICAgIGhvbGQgPj4+PSAzO1xuICAgICAgICAgIGJpdHMgLT0gMztcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHN0YXRlLmhhdmUgPCAxOSkge1xuICAgICAgICAgIHN0YXRlLmxlbnNbb3JkZXJbc3RhdGUuaGF2ZSsrXV0gPSAwO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdlIGhhdmUgc2VwYXJhdGUgdGFibGVzICYgbm8gcG9pbnRlcnMuIDIgY29tbWVudGVkIGxpbmVzIGJlbG93IG5vdCBuZWVkZWQuXG4gICAgICAgIC8vc3RhdGUubmV4dCA9IHN0YXRlLmNvZGVzO1xuICAgICAgICAvL3N0YXRlLmxlbmNvZGUgPSBzdGF0ZS5uZXh0O1xuICAgICAgICAvLyBTd2l0Y2ggdG8gdXNlIGR5bmFtaWMgdGFibGVcbiAgICAgICAgc3RhdGUubGVuY29kZSA9IHN0YXRlLmxlbmR5bjtcbiAgICAgICAgc3RhdGUubGVuYml0cyA9IDc7XG5cbiAgICAgICAgb3B0cyA9IHsgYml0czogc3RhdGUubGVuYml0cyB9O1xuICAgICAgICByZXQgPSBpbmZsYXRlX3RhYmxlKENPREVTLCBzdGF0ZS5sZW5zLCAwLCAxOSwgc3RhdGUubGVuY29kZSwgMCwgc3RhdGUud29yaywgb3B0cyk7XG4gICAgICAgIHN0YXRlLmxlbmJpdHMgPSBvcHRzLmJpdHM7XG5cbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgY29kZSBsZW5ndGhzIHNldCc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgICAgIGNvZGUgbGVuZ3RocyBva1xcblwiKSk7XG4gICAgICAgIHN0YXRlLmhhdmUgPSAwO1xuICAgICAgICBzdGF0ZS5tb2RlID0gQ09ERUxFTlM7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgQ09ERUxFTlM6XG4gICAgICAgIHdoaWxlIChzdGF0ZS5oYXZlIDwgc3RhdGUubmxlbiArIHN0YXRlLm5kaXN0KSB7XG4gICAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgaGVyZSA9IHN0YXRlLmxlbmNvZGVbaG9sZCAmICgoMSA8PCBzdGF0ZS5sZW5iaXRzKSAtIDEpXTsvKkJJVFMoc3RhdGUubGVuYml0cykqL1xuICAgICAgICAgICAgaGVyZV9iaXRzID0gaGVyZSA+Pj4gMjQ7XG4gICAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7XG4gICAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgICAgIGlmICgoaGVyZV9iaXRzKSA8PSBiaXRzKSB7IGJyZWFrOyB9XG4gICAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vXG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaGVyZV92YWwgPCAxNikge1xuICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoaGVyZS5iaXRzKSAtLS0vL1xuICAgICAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzO1xuICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgc3RhdGUubGVuc1tzdGF0ZS5oYXZlKytdID0gaGVyZV92YWw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGhlcmVfdmFsID09PSAxNikge1xuICAgICAgICAgICAgICAvLz09PSBORUVEQklUUyhoZXJlLmJpdHMgKyAyKTtcbiAgICAgICAgICAgICAgbiA9IGhlcmVfYml0cyArIDI7XG4gICAgICAgICAgICAgIHdoaWxlIChiaXRzIDwgbikge1xuICAgICAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy89PT0vL1xuICAgICAgICAgICAgICAvLy0tLSBEUk9QQklUUyhoZXJlLmJpdHMpIC0tLS8vXG4gICAgICAgICAgICAgIGhvbGQgPj4+PSBoZXJlX2JpdHM7XG4gICAgICAgICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzO1xuICAgICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgICAgIGlmIChzdGF0ZS5oYXZlID09PSAwKSB7XG4gICAgICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCc7XG4gICAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsZW4gPSBzdGF0ZS5sZW5zW3N0YXRlLmhhdmUgLSAxXTtcbiAgICAgICAgICAgICAgY29weSA9IDMgKyAoaG9sZCAmIDB4MDMpOy8vQklUUygyKTtcbiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMikgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IDI7XG4gICAgICAgICAgICAgIGJpdHMgLT0gMjtcbiAgICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaGVyZV92YWwgPT09IDE3KSB7XG4gICAgICAgICAgICAgIC8vPT09IE5FRURCSVRTKGhlcmUuYml0cyArIDMpO1xuICAgICAgICAgICAgICBuID0gaGVyZV9iaXRzICsgMztcbiAgICAgICAgICAgICAgd2hpbGUgKGJpdHMgPCBuKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7XG4gICAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICAgICAgbGVuID0gMDtcbiAgICAgICAgICAgICAgY29weSA9IDMgKyAoaG9sZCAmIDB4MDcpOy8vQklUUygzKTtcbiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMykgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IDM7XG4gICAgICAgICAgICAgIGJpdHMgLT0gMztcbiAgICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIC8vPT09IE5FRURCSVRTKGhlcmUuYml0cyArIDcpO1xuICAgICAgICAgICAgICBuID0gaGVyZV9iaXRzICsgNztcbiAgICAgICAgICAgICAgd2hpbGUgKGJpdHMgPCBuKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7XG4gICAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICAgICAgbGVuID0gMDtcbiAgICAgICAgICAgICAgY29weSA9IDExICsgKGhvbGQgJiAweDdmKTsvL0JJVFMoNyk7XG4gICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKDcpIC0tLS8vXG4gICAgICAgICAgICAgIGhvbGQgPj4+PSA3O1xuICAgICAgICAgICAgICBiaXRzIC09IDc7XG4gICAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGF0ZS5oYXZlICsgY29weSA+IHN0YXRlLm5sZW4gKyBzdGF0ZS5uZGlzdCkge1xuICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0JztcbiAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoY29weS0tKSB7XG4gICAgICAgICAgICAgIHN0YXRlLmxlbnNbc3RhdGUuaGF2ZSsrXSA9IGxlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKiBoYW5kbGUgZXJyb3IgYnJlYWtzIGluIHdoaWxlICovXG4gICAgICAgIGlmIChzdGF0ZS5tb2RlID09PSBCQUQpIHsgYnJlYWs7IH1cblxuICAgICAgICAvKiBjaGVjayBmb3IgZW5kLW9mLWJsb2NrIGNvZGUgKGJldHRlciBoYXZlIG9uZSkgKi9cbiAgICAgICAgaWYgKHN0YXRlLmxlbnNbMjU2XSA9PT0gMCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jayc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGJ1aWxkIGNvZGUgdGFibGVzIC0tIG5vdGU6IGRvIG5vdCBjaGFuZ2UgdGhlIGxlbmJpdHMgb3IgZGlzdGJpdHNcbiAgICAgICAgICAgdmFsdWVzIGhlcmUgKDkgYW5kIDYpIHdpdGhvdXQgcmVhZGluZyB0aGUgY29tbWVudHMgaW4gaW5mdHJlZXMuaFxuICAgICAgICAgICBjb25jZXJuaW5nIHRoZSBFTk9VR0ggY29uc3RhbnRzLCB3aGljaCBkZXBlbmQgb24gdGhvc2UgdmFsdWVzICovXG4gICAgICAgIHN0YXRlLmxlbmJpdHMgPSA5O1xuXG4gICAgICAgIG9wdHMgPSB7IGJpdHM6IHN0YXRlLmxlbmJpdHMgfTtcbiAgICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShMRU5TLCBzdGF0ZS5sZW5zLCAwLCBzdGF0ZS5ubGVuLCBzdGF0ZS5sZW5jb2RlLCAwLCBzdGF0ZS53b3JrLCBvcHRzKTtcbiAgICAgICAgLy8gV2UgaGF2ZSBzZXBhcmF0ZSB0YWJsZXMgJiBubyBwb2ludGVycy4gMiBjb21tZW50ZWQgbGluZXMgYmVsb3cgbm90IG5lZWRlZC5cbiAgICAgICAgLy8gc3RhdGUubmV4dF9pbmRleCA9IG9wdHMudGFibGVfaW5kZXg7XG4gICAgICAgIHN0YXRlLmxlbmJpdHMgPSBvcHRzLmJpdHM7XG4gICAgICAgIC8vIHN0YXRlLmxlbmNvZGUgPSBzdGF0ZS5uZXh0O1xuXG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQnO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5kaXN0Yml0cyA9IDY7XG4gICAgICAgIC8vc3RhdGUuZGlzdGNvZGUuY29weShzdGF0ZS5jb2Rlcyk7XG4gICAgICAgIC8vIFN3aXRjaCB0byB1c2UgZHluYW1pYyB0YWJsZVxuICAgICAgICBzdGF0ZS5kaXN0Y29kZSA9IHN0YXRlLmRpc3RkeW47XG4gICAgICAgIG9wdHMgPSB7IGJpdHM6IHN0YXRlLmRpc3RiaXRzIH07XG4gICAgICAgIHJldCA9IGluZmxhdGVfdGFibGUoRElTVFMsIHN0YXRlLmxlbnMsIHN0YXRlLm5sZW4sIHN0YXRlLm5kaXN0LCBzdGF0ZS5kaXN0Y29kZSwgMCwgc3RhdGUud29yaywgb3B0cyk7XG4gICAgICAgIC8vIFdlIGhhdmUgc2VwYXJhdGUgdGFibGVzICYgbm8gcG9pbnRlcnMuIDIgY29tbWVudGVkIGxpbmVzIGJlbG93IG5vdCBuZWVkZWQuXG4gICAgICAgIC8vIHN0YXRlLm5leHRfaW5kZXggPSBvcHRzLnRhYmxlX2luZGV4O1xuICAgICAgICBzdGF0ZS5kaXN0Yml0cyA9IG9wdHMuYml0cztcbiAgICAgICAgLy8gc3RhdGUuZGlzdGNvZGUgPSBzdGF0ZS5uZXh0O1xuXG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlcyBzZXQnO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgJ2luZmxhdGU6ICAgICAgIGNvZGVzIG9rXFxuJykpO1xuICAgICAgICBzdGF0ZS5tb2RlID0gTEVOXztcbiAgICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIExFTl86XG4gICAgICAgIHN0YXRlLm1vZGUgPSBMRU47XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgTEVOOlxuICAgICAgICBpZiAoaGF2ZSA+PSA2ICYmIGxlZnQgPj0gMjU4KSB7XG4gICAgICAgICAgLy8tLS0gUkVTVE9SRSgpIC0tLVxuICAgICAgICAgIHN0cm0ubmV4dF9vdXQgPSBwdXQ7XG4gICAgICAgICAgc3RybS5hdmFpbF9vdXQgPSBsZWZ0O1xuICAgICAgICAgIHN0cm0ubmV4dF9pbiA9IG5leHQ7XG4gICAgICAgICAgc3RybS5hdmFpbF9pbiA9IGhhdmU7XG4gICAgICAgICAgc3RhdGUuaG9sZCA9IGhvbGQ7XG4gICAgICAgICAgc3RhdGUuYml0cyA9IGJpdHM7XG4gICAgICAgICAgLy8tLS1cbiAgICAgICAgICBpbmZsYXRlX2Zhc3Qoc3RybSwgX291dCk7XG4gICAgICAgICAgLy8tLS0gTE9BRCgpIC0tLVxuICAgICAgICAgIHB1dCA9IHN0cm0ubmV4dF9vdXQ7XG4gICAgICAgICAgb3V0cHV0ID0gc3RybS5vdXRwdXQ7XG4gICAgICAgICAgbGVmdCA9IHN0cm0uYXZhaWxfb3V0O1xuICAgICAgICAgIG5leHQgPSBzdHJtLm5leHRfaW47XG4gICAgICAgICAgaW5wdXQgPSBzdHJtLmlucHV0O1xuICAgICAgICAgIGhhdmUgPSBzdHJtLmF2YWlsX2luO1xuICAgICAgICAgIGhvbGQgPSBzdGF0ZS5ob2xkO1xuICAgICAgICAgIGJpdHMgPSBzdGF0ZS5iaXRzO1xuICAgICAgICAgIC8vLS0tXG5cbiAgICAgICAgICBpZiAoc3RhdGUubW9kZSA9PT0gVFlQRSkge1xuICAgICAgICAgICAgc3RhdGUuYmFjayA9IC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5iYWNrID0gMDtcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIGhlcmUgPSBzdGF0ZS5sZW5jb2RlW2hvbGQgJiAoKDEgPDwgc3RhdGUubGVuYml0cykgLSAxKV07ICAvKkJJVFMoc3RhdGUubGVuYml0cykqL1xuICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0O1xuICAgICAgICAgIGhlcmVfb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgICBpZiAoaGVyZV9iaXRzIDw9IGJpdHMpIHsgYnJlYWs7IH1cbiAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vXG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhlcmVfb3AgJiYgKGhlcmVfb3AgJiAweGYwKSA9PT0gMCkge1xuICAgICAgICAgIGxhc3RfYml0cyA9IGhlcmVfYml0cztcbiAgICAgICAgICBsYXN0X29wID0gaGVyZV9vcDtcbiAgICAgICAgICBsYXN0X3ZhbCA9IGhlcmVfdmFsO1xuICAgICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGhlcmUgPSBzdGF0ZS5sZW5jb2RlW2xhc3RfdmFsICtcbiAgICAgICAgICAgICAgICAgICAgKChob2xkICYgKCgxIDw8IChsYXN0X2JpdHMgKyBsYXN0X29wKSkgLSAxKSkvKkJJVFMobGFzdC5iaXRzICsgbGFzdC5vcCkqLyA+PiBsYXN0X2JpdHMpXTtcbiAgICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0O1xuICAgICAgICAgICAgaGVyZV9vcCA9IChoZXJlID4+PiAxNikgJiAweGZmO1xuICAgICAgICAgICAgaGVyZV92YWwgPSBoZXJlICYgMHhmZmZmO1xuXG4gICAgICAgICAgICBpZiAoKGxhc3RfYml0cyArIGhlcmVfYml0cykgPD0gYml0cykgeyBicmVhazsgfVxuICAgICAgICAgICAgLy8tLS0gUFVMTEJZVEUoKSAtLS0vL1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8tLS0gRFJPUEJJVFMobGFzdC5iaXRzKSAtLS0vL1xuICAgICAgICAgIGhvbGQgPj4+PSBsYXN0X2JpdHM7XG4gICAgICAgICAgYml0cyAtPSBsYXN0X2JpdHM7XG4gICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIHN0YXRlLmJhY2sgKz0gbGFzdF9iaXRzO1xuICAgICAgICB9XG4gICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy9cbiAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7XG4gICAgICAgIC8vLS0tLy9cbiAgICAgICAgc3RhdGUuYmFjayArPSBoZXJlX2JpdHM7XG4gICAgICAgIHN0YXRlLmxlbmd0aCA9IGhlcmVfdmFsO1xuICAgICAgICBpZiAoaGVyZV9vcCA9PT0gMCkge1xuICAgICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCBoZXJlLnZhbCA+PSAweDIwICYmIGhlcmUudmFsIDwgMHg3ZiA/XG4gICAgICAgICAgLy8gICAgICAgIFwiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsICclYydcXG5cIiA6XG4gICAgICAgICAgLy8gICAgICAgIFwiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsIDB4JTAyeFxcblwiLCBoZXJlLnZhbCkpO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBMSVQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhlcmVfb3AgJiAzMikge1xuICAgICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCBcImluZmxhdGU6ICAgICAgICAgZW5kIG9mIGJsb2NrXFxuXCIpKTtcbiAgICAgICAgICBzdGF0ZS5iYWNrID0gLTE7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IFRZUEU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhlcmVfb3AgJiA2NCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5leHRyYSA9IGhlcmVfb3AgJiAxNTtcbiAgICAgICAgc3RhdGUubW9kZSA9IExFTkVYVDtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBMRU5FWFQ6XG4gICAgICAgIGlmIChzdGF0ZS5leHRyYSkge1xuICAgICAgICAgIC8vPT09IE5FRURCSVRTKHN0YXRlLmV4dHJhKTtcbiAgICAgICAgICBuID0gc3RhdGUuZXh0cmE7XG4gICAgICAgICAgd2hpbGUgKGJpdHMgPCBuKSB7XG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgc3RhdGUubGVuZ3RoICs9IGhvbGQgJiAoKDEgPDwgc3RhdGUuZXh0cmEpIC0gMSkvKkJJVFMoc3RhdGUuZXh0cmEpKi87XG4gICAgICAgICAgLy8tLS0gRFJPUEJJVFMoc3RhdGUuZXh0cmEpIC0tLS8vXG4gICAgICAgICAgaG9sZCA+Pj49IHN0YXRlLmV4dHJhO1xuICAgICAgICAgIGJpdHMgLT0gc3RhdGUuZXh0cmE7XG4gICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIHN0YXRlLmJhY2sgKz0gc3RhdGUuZXh0cmE7XG4gICAgICAgIH1cbiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBsZW5ndGggJXVcXG5cIiwgc3RhdGUubGVuZ3RoKSk7XG4gICAgICAgIHN0YXRlLndhcyA9IHN0YXRlLmxlbmd0aDtcbiAgICAgICAgc3RhdGUubW9kZSA9IERJU1Q7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgRElTVDpcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIGhlcmUgPSBzdGF0ZS5kaXN0Y29kZVtob2xkICYgKCgxIDw8IHN0YXRlLmRpc3RiaXRzKSAtIDEpXTsvKkJJVFMoc3RhdGUuZGlzdGJpdHMpKi9cbiAgICAgICAgICBoZXJlX2JpdHMgPSBoZXJlID4+PiAyNDtcbiAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7XG4gICAgICAgICAgaGVyZV92YWwgPSBoZXJlICYgMHhmZmZmO1xuXG4gICAgICAgICAgaWYgKChoZXJlX2JpdHMpIDw9IGJpdHMpIHsgYnJlYWs7IH1cbiAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vXG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgIH1cbiAgICAgICAgaWYgKChoZXJlX29wICYgMHhmMCkgPT09IDApIHtcbiAgICAgICAgICBsYXN0X2JpdHMgPSBoZXJlX2JpdHM7XG4gICAgICAgICAgbGFzdF9vcCA9IGhlcmVfb3A7XG4gICAgICAgICAgbGFzdF92YWwgPSBoZXJlX3ZhbDtcbiAgICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBoZXJlID0gc3RhdGUuZGlzdGNvZGVbbGFzdF92YWwgK1xuICAgICAgICAgICAgICAgICAgICAoKGhvbGQgJiAoKDEgPDwgKGxhc3RfYml0cyArIGxhc3Rfb3ApKSAtIDEpKS8qQklUUyhsYXN0LmJpdHMgKyBsYXN0Lm9wKSovID4+IGxhc3RfYml0cyldO1xuICAgICAgICAgICAgaGVyZV9iaXRzID0gaGVyZSA+Pj4gMjQ7XG4gICAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7XG4gICAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgICAgIGlmICgobGFzdF9iaXRzICsgaGVyZV9iaXRzKSA8PSBiaXRzKSB7IGJyZWFrOyB9XG4gICAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vXG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLy0tLSBEUk9QQklUUyhsYXN0LmJpdHMpIC0tLS8vXG4gICAgICAgICAgaG9sZCA+Pj49IGxhc3RfYml0cztcbiAgICAgICAgICBiaXRzIC09IGxhc3RfYml0cztcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgc3RhdGUuYmFjayArPSBsYXN0X2JpdHM7XG4gICAgICAgIH1cbiAgICAgICAgLy8tLS0gRFJPUEJJVFMoaGVyZS5iaXRzKSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzO1xuICAgICAgICBiaXRzIC09IGhlcmVfYml0cztcbiAgICAgICAgLy8tLS0vL1xuICAgICAgICBzdGF0ZS5iYWNrICs9IGhlcmVfYml0cztcbiAgICAgICAgaWYgKGhlcmVfb3AgJiA2NCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgY29kZSc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5vZmZzZXQgPSBoZXJlX3ZhbDtcbiAgICAgICAgc3RhdGUuZXh0cmEgPSAoaGVyZV9vcCkgJiAxNTtcbiAgICAgICAgc3RhdGUubW9kZSA9IERJU1RFWFQ7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgRElTVEVYVDpcbiAgICAgICAgaWYgKHN0YXRlLmV4dHJhKSB7XG4gICAgICAgICAgLy89PT0gTkVFREJJVFMoc3RhdGUuZXh0cmEpO1xuICAgICAgICAgIG4gPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgICB3aGlsZSAoYml0cyA8IG4pIHtcbiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICBzdGF0ZS5vZmZzZXQgKz0gaG9sZCAmICgoMSA8PCBzdGF0ZS5leHRyYSkgLSAxKS8qQklUUyhzdGF0ZS5leHRyYSkqLztcbiAgICAgICAgICAvLy0tLSBEUk9QQklUUyhzdGF0ZS5leHRyYSkgLS0tLy9cbiAgICAgICAgICBob2xkID4+Pj0gc3RhdGUuZXh0cmE7XG4gICAgICAgICAgYml0cyAtPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgc3RhdGUuYmFjayArPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgfVxuLy8jaWZkZWYgSU5GTEFURV9TVFJJQ1RcbiAgICAgICAgaWYgKHN0YXRlLm9mZnNldCA+IHN0YXRlLmRtYXgpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuLy8jZW5kaWZcbiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBkaXN0YW5jZSAldVxcblwiLCBzdGF0ZS5vZmZzZXQpKTtcbiAgICAgICAgc3RhdGUubW9kZSA9IE1BVENIO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIE1BVENIOlxuICAgICAgICBpZiAobGVmdCA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgY29weSA9IF9vdXQgLSBsZWZ0O1xuICAgICAgICBpZiAoc3RhdGUub2Zmc2V0ID4gY29weSkgeyAgICAgICAgIC8qIGNvcHkgZnJvbSB3aW5kb3cgKi9cbiAgICAgICAgICBjb3B5ID0gc3RhdGUub2Zmc2V0IC0gY29weTtcbiAgICAgICAgICBpZiAoY29weSA+IHN0YXRlLndoYXZlKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuc2FuZSkge1xuICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayc7XG4gICAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuLy8gKCEpIFRoaXMgYmxvY2sgaXMgZGlzYWJsZWQgaW4gemxpYiBkZWZhdWx0cyxcbi8vIGRvbid0IGVuYWJsZSBpdCBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHlcbi8vI2lmZGVmIElORkxBVEVfQUxMT1dfSU5WQUxJRF9ESVNUQU5DRV9UT09GQVJfQVJSUlxuLy8gICAgICAgICAgVHJhY2UoKHN0ZGVyciwgXCJpbmZsYXRlLmMgdG9vIGZhclxcblwiKSk7XG4vLyAgICAgICAgICBjb3B5IC09IHN0YXRlLndoYXZlO1xuLy8gICAgICAgICAgaWYgKGNvcHkgPiBzdGF0ZS5sZW5ndGgpIHsgY29weSA9IHN0YXRlLmxlbmd0aDsgfVxuLy8gICAgICAgICAgaWYgKGNvcHkgPiBsZWZ0KSB7IGNvcHkgPSBsZWZ0OyB9XG4vLyAgICAgICAgICBsZWZ0IC09IGNvcHk7XG4vLyAgICAgICAgICBzdGF0ZS5sZW5ndGggLT0gY29weTtcbi8vICAgICAgICAgIGRvIHtcbi8vICAgICAgICAgICAgb3V0cHV0W3B1dCsrXSA9IDA7XG4vLyAgICAgICAgICB9IHdoaWxlICgtLWNvcHkpO1xuLy8gICAgICAgICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgeyBzdGF0ZS5tb2RlID0gTEVOOyB9XG4vLyAgICAgICAgICBicmVhaztcbi8vI2VuZGlmXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUud25leHQpIHtcbiAgICAgICAgICAgIGNvcHkgLT0gc3RhdGUud25leHQ7XG4gICAgICAgICAgICBmcm9tID0gc3RhdGUud3NpemUgLSBjb3B5O1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZyb20gPSBzdGF0ZS53bmV4dCAtIGNvcHk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUubGVuZ3RoKSB7IGNvcHkgPSBzdGF0ZS5sZW5ndGg7IH1cbiAgICAgICAgICBmcm9tX3NvdXJjZSA9IHN0YXRlLndpbmRvdztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb3B5IGZyb20gb3V0cHV0ICovXG4gICAgICAgICAgZnJvbV9zb3VyY2UgPSBvdXRwdXQ7XG4gICAgICAgICAgZnJvbSA9IHB1dCAtIHN0YXRlLm9mZnNldDtcbiAgICAgICAgICBjb3B5ID0gc3RhdGUubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb3B5ID4gbGVmdCkgeyBjb3B5ID0gbGVmdDsgfVxuICAgICAgICBsZWZ0IC09IGNvcHk7XG4gICAgICAgIHN0YXRlLmxlbmd0aCAtPSBjb3B5O1xuICAgICAgICBkbyB7XG4gICAgICAgICAgb3V0cHV0W3B1dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107XG4gICAgICAgIH0gd2hpbGUgKC0tY29weSk7XG4gICAgICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHsgc3RhdGUubW9kZSA9IExFTjsgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTElUOlxuICAgICAgICBpZiAobGVmdCA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgb3V0cHV0W3B1dCsrXSA9IHN0YXRlLmxlbmd0aDtcbiAgICAgICAgbGVmdC0tO1xuICAgICAgICBzdGF0ZS5tb2RlID0gTEVOO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ0hFQ0s6XG4gICAgICAgIGlmIChzdGF0ZS53cmFwKSB7XG4gICAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpO1xuICAgICAgICAgIHdoaWxlIChiaXRzIDwgMzIpIHtcbiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgLy8gVXNlICd8JyBpbnN0ZWFkIG9mICcrJyB0byBtYWtlIHN1cmUgdGhhdCByZXN1bHQgaXMgc2lnbmVkXG4gICAgICAgICAgICBob2xkIHw9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIF9vdXQgLT0gbGVmdDtcbiAgICAgICAgICBzdHJtLnRvdGFsX291dCArPSBfb3V0O1xuICAgICAgICAgIHN0YXRlLnRvdGFsICs9IF9vdXQ7XG4gICAgICAgICAgaWYgKF9vdXQpIHtcbiAgICAgICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9XG4gICAgICAgICAgICAgICAgLypVUERBVEUoc3RhdGUuY2hlY2ssIHB1dCAtIF9vdXQsIF9vdXQpOyovXG4gICAgICAgICAgICAgICAgKHN0YXRlLmZsYWdzID8gY3JjMzIoc3RhdGUuY2hlY2ssIG91dHB1dCwgX291dCwgcHV0IC0gX291dCkgOiBhZGxlcjMyKHN0YXRlLmNoZWNrLCBvdXRwdXQsIF9vdXQsIHB1dCAtIF9vdXQpKTtcblxuICAgICAgICAgIH1cbiAgICAgICAgICBfb3V0ID0gbGVmdDtcbiAgICAgICAgICAvLyBOQjogY3JjMzIgc3RvcmVkIGFzIHNpZ25lZCAzMi1iaXQgaW50LCB6c3dhcDMyIHJldHVybnMgc2lnbmVkIHRvb1xuICAgICAgICAgIGlmICgoc3RhdGUuZmxhZ3MgPyBob2xkIDogenN3YXAzMihob2xkKSkgIT09IHN0YXRlLmNoZWNrKSB7XG4gICAgICAgICAgICBzdHJtLm1zZyA9ICdpbmNvcnJlY3QgZGF0YSBjaGVjayc7XG4gICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgICAgYml0cyA9IDA7XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICBjaGVjayBtYXRjaGVzIHRyYWlsZXJcXG5cIikpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLm1vZGUgPSBMRU5HVEg7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgTEVOR1RIOlxuICAgICAgICBpZiAoc3RhdGUud3JhcCAmJiBzdGF0ZS5mbGFncykge1xuICAgICAgICAgIC8vPT09IE5FRURCSVRTKDMyKTtcbiAgICAgICAgICB3aGlsZSAoYml0cyA8IDMyKSB7XG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgaWYgKGhvbGQgIT09IChzdGF0ZS50b3RhbCAmIDB4ZmZmZmZmZmYpKSB7XG4gICAgICAgICAgICBzdHJtLm1zZyA9ICdpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrJztcbiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgICBob2xkID0gMDtcbiAgICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgIGxlbmd0aCBtYXRjaGVzIHRyYWlsZXJcXG5cIikpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLm1vZGUgPSBET05FO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIERPTkU6XG4gICAgICAgIHJldCA9IFpfU1RSRUFNX0VORDtcbiAgICAgICAgYnJlYWsgaW5mX2xlYXZlO1xuICAgICAgY2FzZSBCQUQ6XG4gICAgICAgIHJldCA9IFpfREFUQV9FUlJPUjtcbiAgICAgICAgYnJlYWsgaW5mX2xlYXZlO1xuICAgICAgY2FzZSBNRU06XG4gICAgICAgIHJldHVybiBaX01FTV9FUlJPUjtcbiAgICAgIGNhc2UgU1lOQzpcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICAgIH1cbiAgfVxuXG4gIC8vIGluZl9sZWF2ZSA8LSBoZXJlIGlzIHJlYWwgcGxhY2UgZm9yIFwiZ290byBpbmZfbGVhdmVcIiwgZW11bGF0ZWQgdmlhIFwiYnJlYWsgaW5mX2xlYXZlXCJcblxuICAvKlxuICAgICBSZXR1cm4gZnJvbSBpbmZsYXRlKCksIHVwZGF0aW5nIHRoZSB0b3RhbCBjb3VudHMgYW5kIHRoZSBjaGVjayB2YWx1ZS5cbiAgICAgSWYgdGhlcmUgd2FzIG5vIHByb2dyZXNzIGR1cmluZyB0aGUgaW5mbGF0ZSgpIGNhbGwsIHJldHVybiBhIGJ1ZmZlclxuICAgICBlcnJvci4gIENhbGwgdXBkYXRld2luZG93KCkgdG8gY3JlYXRlIGFuZC9vciB1cGRhdGUgdGhlIHdpbmRvdyBzdGF0ZS5cbiAgICAgTm90ZTogYSBtZW1vcnkgZXJyb3IgZnJvbSBpbmZsYXRlKCkgaXMgbm9uLXJlY292ZXJhYmxlLlxuICAgKi9cblxuICAvLy0tLSBSRVNUT1JFKCkgLS0tXG4gIHN0cm0ubmV4dF9vdXQgPSBwdXQ7XG4gIHN0cm0uYXZhaWxfb3V0ID0gbGVmdDtcbiAgc3RybS5uZXh0X2luID0gbmV4dDtcbiAgc3RybS5hdmFpbF9pbiA9IGhhdmU7XG4gIHN0YXRlLmhvbGQgPSBob2xkO1xuICBzdGF0ZS5iaXRzID0gYml0cztcbiAgLy8tLS1cblxuICBpZiAoc3RhdGUud3NpemUgfHwgKF9vdXQgIT09IHN0cm0uYXZhaWxfb3V0ICYmIHN0YXRlLm1vZGUgPCBCQUQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoc3RhdGUubW9kZSA8IENIRUNLIHx8IGZsdXNoICE9PSBaX0ZJTklTSCkpKSB7XG4gICAgaWYgKHVwZGF0ZXdpbmRvdyhzdHJtLCBzdHJtLm91dHB1dCwgc3RybS5uZXh0X291dCwgX291dCAtIHN0cm0uYXZhaWxfb3V0KSkge1xuICAgICAgc3RhdGUubW9kZSA9IE1FTTtcbiAgICAgIHJldHVybiBaX01FTV9FUlJPUjtcbiAgICB9XG4gIH1cbiAgX2luIC09IHN0cm0uYXZhaWxfaW47XG4gIF9vdXQgLT0gc3RybS5hdmFpbF9vdXQ7XG4gIHN0cm0udG90YWxfaW4gKz0gX2luO1xuICBzdHJtLnRvdGFsX291dCArPSBfb3V0O1xuICBzdGF0ZS50b3RhbCArPSBfb3V0O1xuICBpZiAoc3RhdGUud3JhcCAmJiBfb3V0KSB7XG4gICAgc3RybS5hZGxlciA9IHN0YXRlLmNoZWNrID0gLypVUERBVEUoc3RhdGUuY2hlY2ssIHN0cm0ubmV4dF9vdXQgLSBfb3V0LCBfb3V0KTsqL1xuICAgICAgKHN0YXRlLmZsYWdzID8gY3JjMzIoc3RhdGUuY2hlY2ssIG91dHB1dCwgX291dCwgc3RybS5uZXh0X291dCAtIF9vdXQpIDogYWRsZXIzMihzdGF0ZS5jaGVjaywgb3V0cHV0LCBfb3V0LCBzdHJtLm5leHRfb3V0IC0gX291dCkpO1xuICB9XG4gIHN0cm0uZGF0YV90eXBlID0gc3RhdGUuYml0cyArIChzdGF0ZS5sYXN0ID8gNjQgOiAwKSArXG4gICAgICAgICAgICAgICAgICAgIChzdGF0ZS5tb2RlID09PSBUWVBFID8gMTI4IDogMCkgK1xuICAgICAgICAgICAgICAgICAgICAoc3RhdGUubW9kZSA9PT0gTEVOXyB8fCBzdGF0ZS5tb2RlID09PSBDT1BZXyA/IDI1NiA6IDApO1xuICBpZiAoKChfaW4gPT09IDAgJiYgX291dCA9PT0gMCkgfHwgZmx1c2ggPT09IFpfRklOSVNIKSAmJiByZXQgPT09IFpfT0spIHtcbiAgICByZXQgPSBaX0JVRl9FUlJPUjtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBpbmZsYXRlRW5kKHN0cm0pIHtcblxuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUgLyp8fCBzdHJtLT56ZnJlZSA9PSAoZnJlZV9mdW5jKTAqLykge1xuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuXG4gIHZhciBzdGF0ZSA9IHN0cm0uc3RhdGU7XG4gIGlmIChzdGF0ZS53aW5kb3cpIHtcbiAgICBzdGF0ZS53aW5kb3cgPSBudWxsO1xuICB9XG4gIHN0cm0uc3RhdGUgPSBudWxsO1xuICByZXR1cm4gWl9PSztcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZUdldEhlYWRlcihzdHJtLCBoZWFkKSB7XG4gIHZhciBzdGF0ZTtcblxuICAvKiBjaGVjayBzdGF0ZSAqL1xuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUpIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIHN0YXRlID0gc3RybS5zdGF0ZTtcbiAgaWYgKChzdGF0ZS53cmFwICYgMikgPT09IDApIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG5cbiAgLyogc2F2ZSBoZWFkZXIgc3RydWN0dXJlICovXG4gIHN0YXRlLmhlYWQgPSBoZWFkO1xuICBoZWFkLmRvbmUgPSBmYWxzZTtcbiAgcmV0dXJuIFpfT0s7XG59XG5cbmZ1bmN0aW9uIGluZmxhdGVTZXREaWN0aW9uYXJ5KHN0cm0sIGRpY3Rpb25hcnkpIHtcbiAgdmFyIGRpY3RMZW5ndGggPSBkaWN0aW9uYXJ5Lmxlbmd0aDtcblxuICB2YXIgc3RhdGU7XG4gIHZhciBkaWN0aWQ7XG4gIHZhciByZXQ7XG5cbiAgLyogY2hlY2sgc3RhdGUgKi9cbiAgaWYgKCFzdHJtIC8qID09IFpfTlVMTCAqLyB8fCAhc3RybS5zdGF0ZSAvKiA9PSBaX05VTEwgKi8pIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIHN0YXRlID0gc3RybS5zdGF0ZTtcblxuICBpZiAoc3RhdGUud3JhcCAhPT0gMCAmJiBzdGF0ZS5tb2RlICE9PSBESUNUKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgLyogY2hlY2sgZm9yIGNvcnJlY3QgZGljdGlvbmFyeSBpZGVudGlmaWVyICovXG4gIGlmIChzdGF0ZS5tb2RlID09PSBESUNUKSB7XG4gICAgZGljdGlkID0gMTsgLyogYWRsZXIzMigwLCBudWxsLCAwKSovXG4gICAgLyogZGljdGlkID0gYWRsZXIzMihkaWN0aWQsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgpOyAqL1xuICAgIGRpY3RpZCA9IGFkbGVyMzIoZGljdGlkLCBkaWN0aW9uYXJ5LCBkaWN0TGVuZ3RoLCAwKTtcbiAgICBpZiAoZGljdGlkICE9PSBzdGF0ZS5jaGVjaykge1xuICAgICAgcmV0dXJuIFpfREFUQV9FUlJPUjtcbiAgICB9XG4gIH1cbiAgLyogY29weSBkaWN0aW9uYXJ5IHRvIHdpbmRvdyB1c2luZyB1cGRhdGV3aW5kb3coKSwgd2hpY2ggd2lsbCBhbWVuZCB0aGVcbiAgIGV4aXN0aW5nIGRpY3Rpb25hcnkgaWYgYXBwcm9wcmlhdGUgKi9cbiAgcmV0ID0gdXBkYXRld2luZG93KHN0cm0sIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgsIGRpY3RMZW5ndGgpO1xuICBpZiAocmV0KSB7XG4gICAgc3RhdGUubW9kZSA9IE1FTTtcbiAgICByZXR1cm4gWl9NRU1fRVJST1I7XG4gIH1cbiAgc3RhdGUuaGF2ZWRpY3QgPSAxO1xuICAvLyBUcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgIGRpY3Rpb25hcnkgc2V0XFxuXCIpKTtcbiAgcmV0dXJuIFpfT0s7XG59XG5cbmV4cG9ydHMuaW5mbGF0ZVJlc2V0ID0gaW5mbGF0ZVJlc2V0O1xuZXhwb3J0cy5pbmZsYXRlUmVzZXQyID0gaW5mbGF0ZVJlc2V0MjtcbmV4cG9ydHMuaW5mbGF0ZVJlc2V0S2VlcCA9IGluZmxhdGVSZXNldEtlZXA7XG5leHBvcnRzLmluZmxhdGVJbml0ID0gaW5mbGF0ZUluaXQ7XG5leHBvcnRzLmluZmxhdGVJbml0MiA9IGluZmxhdGVJbml0MjtcbmV4cG9ydHMuaW5mbGF0ZSA9IGluZmxhdGU7XG5leHBvcnRzLmluZmxhdGVFbmQgPSBpbmZsYXRlRW5kO1xuZXhwb3J0cy5pbmZsYXRlR2V0SGVhZGVyID0gaW5mbGF0ZUdldEhlYWRlcjtcbmV4cG9ydHMuaW5mbGF0ZVNldERpY3Rpb25hcnkgPSBpbmZsYXRlU2V0RGljdGlvbmFyeTtcbmV4cG9ydHMuaW5mbGF0ZUluZm8gPSAncGFrbyBpbmZsYXRlIChmcm9tIE5vZGVjYSBwcm9qZWN0KSc7XG5cbi8qIE5vdCBpbXBsZW1lbnRlZFxuZXhwb3J0cy5pbmZsYXRlQ29weSA9IGluZmxhdGVDb3B5O1xuZXhwb3J0cy5pbmZsYXRlR2V0RGljdGlvbmFyeSA9IGluZmxhdGVHZXREaWN0aW9uYXJ5O1xuZXhwb3J0cy5pbmZsYXRlTWFyayA9IGluZmxhdGVNYXJrO1xuZXhwb3J0cy5pbmZsYXRlUHJpbWUgPSBpbmZsYXRlUHJpbWU7XG5leHBvcnRzLmluZmxhdGVTeW5jID0gaW5mbGF0ZVN5bmM7XG5leHBvcnRzLmluZmxhdGVTeW5jUG9pbnQgPSBpbmZsYXRlU3luY1BvaW50O1xuZXhwb3J0cy5pbmZsYXRlVW5kZXJtaW5lID0gaW5mbGF0ZVVuZGVybWluZTtcbiovXG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMvY29tbW9uJyk7XG5cbnZhciBNQVhCSVRTID0gMTU7XG52YXIgRU5PVUdIX0xFTlMgPSA4NTI7XG52YXIgRU5PVUdIX0RJU1RTID0gNTkyO1xuLy92YXIgRU5PVUdIID0gKEVOT1VHSF9MRU5TK0VOT1VHSF9ESVNUUyk7XG5cbnZhciBDT0RFUyA9IDA7XG52YXIgTEVOUyA9IDE7XG52YXIgRElTVFMgPSAyO1xuXG52YXIgbGJhc2UgPSBbIC8qIExlbmd0aCBjb2RlcyAyNTcuLjI4NSBiYXNlICovXG4gIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTMsIDE1LCAxNywgMTksIDIzLCAyNywgMzEsXG4gIDM1LCA0MywgNTEsIDU5LCA2NywgODMsIDk5LCAxMTUsIDEzMSwgMTYzLCAxOTUsIDIyNywgMjU4LCAwLCAwXG5dO1xuXG52YXIgbGV4dCA9IFsgLyogTGVuZ3RoIGNvZGVzIDI1Ny4uMjg1IGV4dHJhICovXG4gIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTcsIDE3LCAxNywgMTcsIDE4LCAxOCwgMTgsIDE4LFxuICAxOSwgMTksIDE5LCAxOSwgMjAsIDIwLCAyMCwgMjAsIDIxLCAyMSwgMjEsIDIxLCAxNiwgNzIsIDc4XG5dO1xuXG52YXIgZGJhc2UgPSBbIC8qIERpc3RhbmNlIGNvZGVzIDAuLjI5IGJhc2UgKi9cbiAgMSwgMiwgMywgNCwgNSwgNywgOSwgMTMsIDE3LCAyNSwgMzMsIDQ5LCA2NSwgOTcsIDEyOSwgMTkzLFxuICAyNTcsIDM4NSwgNTEzLCA3NjksIDEwMjUsIDE1MzcsIDIwNDksIDMwNzMsIDQwOTcsIDYxNDUsXG4gIDgxOTMsIDEyMjg5LCAxNjM4NSwgMjQ1NzcsIDAsIDBcbl07XG5cbnZhciBkZXh0ID0gWyAvKiBEaXN0YW5jZSBjb2RlcyAwLi4yOSBleHRyYSAqL1xuICAxNiwgMTYsIDE2LCAxNiwgMTcsIDE3LCAxOCwgMTgsIDE5LCAxOSwgMjAsIDIwLCAyMSwgMjEsIDIyLCAyMixcbiAgMjMsIDIzLCAyNCwgMjQsIDI1LCAyNSwgMjYsIDI2LCAyNywgMjcsXG4gIDI4LCAyOCwgMjksIDI5LCA2NCwgNjRcbl07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5mbGF0ZV90YWJsZSh0eXBlLCBsZW5zLCBsZW5zX2luZGV4LCBjb2RlcywgdGFibGUsIHRhYmxlX2luZGV4LCB3b3JrLCBvcHRzKVxue1xuICB2YXIgYml0cyA9IG9wdHMuYml0cztcbiAgICAgIC8vaGVyZSA9IG9wdHMuaGVyZTsgLyogdGFibGUgZW50cnkgZm9yIGR1cGxpY2F0aW9uICovXG5cbiAgdmFyIGxlbiA9IDA7ICAgICAgICAgICAgICAgLyogYSBjb2RlJ3MgbGVuZ3RoIGluIGJpdHMgKi9cbiAgdmFyIHN5bSA9IDA7ICAgICAgICAgICAgICAgLyogaW5kZXggb2YgY29kZSBzeW1ib2xzICovXG4gIHZhciBtaW4gPSAwLCBtYXggPSAwOyAgICAgICAgICAvKiBtaW5pbXVtIGFuZCBtYXhpbXVtIGNvZGUgbGVuZ3RocyAqL1xuICB2YXIgcm9vdCA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgaW5kZXggYml0cyBmb3Igcm9vdCB0YWJsZSAqL1xuICB2YXIgY3VyciA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgaW5kZXggYml0cyBmb3IgY3VycmVudCB0YWJsZSAqL1xuICB2YXIgZHJvcCA9IDA7ICAgICAgICAgICAgICAvKiBjb2RlIGJpdHMgdG8gZHJvcCBmb3Igc3ViLXRhYmxlICovXG4gIHZhciBsZWZ0ID0gMDsgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIHByZWZpeCBjb2RlcyBhdmFpbGFibGUgKi9cbiAgdmFyIHVzZWQgPSAwOyAgICAgICAgICAgICAgLyogY29kZSBlbnRyaWVzIGluIHRhYmxlIHVzZWQgKi9cbiAgdmFyIGh1ZmYgPSAwOyAgICAgICAgICAgICAgLyogSHVmZm1hbiBjb2RlICovXG4gIHZhciBpbmNyOyAgICAgICAgICAgICAgLyogZm9yIGluY3JlbWVudGluZyBjb2RlLCBpbmRleCAqL1xuICB2YXIgZmlsbDsgICAgICAgICAgICAgIC8qIGluZGV4IGZvciByZXBsaWNhdGluZyBlbnRyaWVzICovXG4gIHZhciBsb3c7ICAgICAgICAgICAgICAgLyogbG93IGJpdHMgZm9yIGN1cnJlbnQgcm9vdCBlbnRyeSAqL1xuICB2YXIgbWFzazsgICAgICAgICAgICAgIC8qIG1hc2sgZm9yIGxvdyByb290IGJpdHMgKi9cbiAgdmFyIG5leHQ7ICAgICAgICAgICAgIC8qIG5leHQgYXZhaWxhYmxlIHNwYWNlIGluIHRhYmxlICovXG4gIHZhciBiYXNlID0gbnVsbDsgICAgIC8qIGJhc2UgdmFsdWUgdGFibGUgdG8gdXNlICovXG4gIHZhciBiYXNlX2luZGV4ID0gMDtcbi8vICB2YXIgc2hvZXh0cmE7ICAgIC8qIGV4dHJhIGJpdHMgdGFibGUgdG8gdXNlICovXG4gIHZhciBlbmQ7ICAgICAgICAgICAgICAgICAgICAvKiB1c2UgYmFzZSBhbmQgZXh0cmEgZm9yIHN5bWJvbCA+IGVuZCAqL1xuICB2YXIgY291bnQgPSBuZXcgdXRpbHMuQnVmMTYoTUFYQklUUyArIDEpOyAvL1tNQVhCSVRTKzFdOyAgICAvKiBudW1iZXIgb2YgY29kZXMgb2YgZWFjaCBsZW5ndGggKi9cbiAgdmFyIG9mZnMgPSBuZXcgdXRpbHMuQnVmMTYoTUFYQklUUyArIDEpOyAvL1tNQVhCSVRTKzFdOyAgICAgLyogb2Zmc2V0cyBpbiB0YWJsZSBmb3IgZWFjaCBsZW5ndGggKi9cbiAgdmFyIGV4dHJhID0gbnVsbDtcbiAgdmFyIGV4dHJhX2luZGV4ID0gMDtcblxuICB2YXIgaGVyZV9iaXRzLCBoZXJlX29wLCBoZXJlX3ZhbDtcblxuICAvKlxuICAgUHJvY2VzcyBhIHNldCBvZiBjb2RlIGxlbmd0aHMgdG8gY3JlYXRlIGEgY2Fub25pY2FsIEh1ZmZtYW4gY29kZS4gIFRoZVxuICAgY29kZSBsZW5ndGhzIGFyZSBsZW5zWzAuLmNvZGVzLTFdLiAgRWFjaCBsZW5ndGggY29ycmVzcG9uZHMgdG8gdGhlXG4gICBzeW1ib2xzIDAuLmNvZGVzLTEuICBUaGUgSHVmZm1hbiBjb2RlIGlzIGdlbmVyYXRlZCBieSBmaXJzdCBzb3J0aW5nIHRoZVxuICAgc3ltYm9scyBieSBsZW5ndGggZnJvbSBzaG9ydCB0byBsb25nLCBhbmQgcmV0YWluaW5nIHRoZSBzeW1ib2wgb3JkZXJcbiAgIGZvciBjb2RlcyB3aXRoIGVxdWFsIGxlbmd0aHMuICBUaGVuIHRoZSBjb2RlIHN0YXJ0cyB3aXRoIGFsbCB6ZXJvIGJpdHNcbiAgIGZvciB0aGUgZmlyc3QgY29kZSBvZiB0aGUgc2hvcnRlc3QgbGVuZ3RoLCBhbmQgdGhlIGNvZGVzIGFyZSBpbnRlZ2VyXG4gICBpbmNyZW1lbnRzIGZvciB0aGUgc2FtZSBsZW5ndGgsIGFuZCB6ZXJvcyBhcmUgYXBwZW5kZWQgYXMgdGhlIGxlbmd0aFxuICAgaW5jcmVhc2VzLiAgRm9yIHRoZSBkZWZsYXRlIGZvcm1hdCwgdGhlc2UgYml0cyBhcmUgc3RvcmVkIGJhY2t3YXJkc1xuICAgZnJvbSB0aGVpciBtb3JlIG5hdHVyYWwgaW50ZWdlciBpbmNyZW1lbnQgb3JkZXJpbmcsIGFuZCBzbyB3aGVuIHRoZVxuICAgZGVjb2RpbmcgdGFibGVzIGFyZSBidWlsdCBpbiB0aGUgbGFyZ2UgbG9vcCBiZWxvdywgdGhlIGludGVnZXIgY29kZXNcbiAgIGFyZSBpbmNyZW1lbnRlZCBiYWNrd2FyZHMuXG5cbiAgIFRoaXMgcm91dGluZSBhc3N1bWVzLCBidXQgZG9lcyBub3QgY2hlY2ssIHRoYXQgYWxsIG9mIHRoZSBlbnRyaWVzIGluXG4gICBsZW5zW10gYXJlIGluIHRoZSByYW5nZSAwLi5NQVhCSVRTLiAgVGhlIGNhbGxlciBtdXN0IGFzc3VyZSB0aGlzLlxuICAgMS4uTUFYQklUUyBpcyBpbnRlcnByZXRlZCBhcyB0aGF0IGNvZGUgbGVuZ3RoLiAgemVybyBtZWFucyB0aGF0IHRoYXRcbiAgIHN5bWJvbCBkb2VzIG5vdCBvY2N1ciBpbiB0aGlzIGNvZGUuXG5cbiAgIFRoZSBjb2RlcyBhcmUgc29ydGVkIGJ5IGNvbXB1dGluZyBhIGNvdW50IG9mIGNvZGVzIGZvciBlYWNoIGxlbmd0aCxcbiAgIGNyZWF0aW5nIGZyb20gdGhhdCBhIHRhYmxlIG9mIHN0YXJ0aW5nIGluZGljZXMgZm9yIGVhY2ggbGVuZ3RoIGluIHRoZVxuICAgc29ydGVkIHRhYmxlLCBhbmQgdGhlbiBlbnRlcmluZyB0aGUgc3ltYm9scyBpbiBvcmRlciBpbiB0aGUgc29ydGVkXG4gICB0YWJsZS4gIFRoZSBzb3J0ZWQgdGFibGUgaXMgd29ya1tdLCB3aXRoIHRoYXQgc3BhY2UgYmVpbmcgcHJvdmlkZWQgYnlcbiAgIHRoZSBjYWxsZXIuXG5cbiAgIFRoZSBsZW5ndGggY291bnRzIGFyZSB1c2VkIGZvciBvdGhlciBwdXJwb3NlcyBhcyB3ZWxsLCBpLmUuIGZpbmRpbmdcbiAgIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGxlbmd0aCBjb2RlcywgZGV0ZXJtaW5pbmcgaWYgdGhlcmUgYXJlIGFueVxuICAgY29kZXMgYXQgYWxsLCBjaGVja2luZyBmb3IgYSB2YWxpZCBzZXQgb2YgbGVuZ3RocywgYW5kIGxvb2tpbmcgYWhlYWRcbiAgIGF0IGxlbmd0aCBjb3VudHMgdG8gZGV0ZXJtaW5lIHN1Yi10YWJsZSBzaXplcyB3aGVuIGJ1aWxkaW5nIHRoZVxuICAgZGVjb2RpbmcgdGFibGVzLlxuICAgKi9cblxuICAvKiBhY2N1bXVsYXRlIGxlbmd0aHMgZm9yIGNvZGVzIChhc3N1bWVzIGxlbnNbXSBhbGwgaW4gMC4uTUFYQklUUykgKi9cbiAgZm9yIChsZW4gPSAwOyBsZW4gPD0gTUFYQklUUzsgbGVuKyspIHtcbiAgICBjb3VudFtsZW5dID0gMDtcbiAgfVxuICBmb3IgKHN5bSA9IDA7IHN5bSA8IGNvZGVzOyBzeW0rKykge1xuICAgIGNvdW50W2xlbnNbbGVuc19pbmRleCArIHN5bV1dKys7XG4gIH1cblxuICAvKiBib3VuZCBjb2RlIGxlbmd0aHMsIGZvcmNlIHJvb3QgdG8gYmUgd2l0aGluIGNvZGUgbGVuZ3RocyAqL1xuICByb290ID0gYml0cztcbiAgZm9yIChtYXggPSBNQVhCSVRTOyBtYXggPj0gMTsgbWF4LS0pIHtcbiAgICBpZiAoY291bnRbbWF4XSAhPT0gMCkgeyBicmVhazsgfVxuICB9XG4gIGlmIChyb290ID4gbWF4KSB7XG4gICAgcm9vdCA9IG1heDtcbiAgfVxuICBpZiAobWF4ID09PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgLyogbm8gc3ltYm9scyB0byBjb2RlIGF0IGFsbCAqL1xuICAgIC8vdGFibGUub3Bbb3B0cy50YWJsZV9pbmRleF0gPSA2NDsgIC8vaGVyZS5vcCA9ICh2YXIgY2hhcik2NDsgICAgLyogaW52YWxpZCBjb2RlIG1hcmtlciAqL1xuICAgIC8vdGFibGUuYml0c1tvcHRzLnRhYmxlX2luZGV4XSA9IDE7ICAgLy9oZXJlLmJpdHMgPSAodmFyIGNoYXIpMTtcbiAgICAvL3RhYmxlLnZhbFtvcHRzLnRhYmxlX2luZGV4KytdID0gMDsgICAvL2hlcmUudmFsID0gKHZhciBzaG9ydCkwO1xuICAgIHRhYmxlW3RhYmxlX2luZGV4KytdID0gKDEgPDwgMjQpIHwgKDY0IDw8IDE2KSB8IDA7XG5cblxuICAgIC8vdGFibGUub3Bbb3B0cy50YWJsZV9pbmRleF0gPSA2NDtcbiAgICAvL3RhYmxlLmJpdHNbb3B0cy50YWJsZV9pbmRleF0gPSAxO1xuICAgIC8vdGFibGUudmFsW29wdHMudGFibGVfaW5kZXgrK10gPSAwO1xuICAgIHRhYmxlW3RhYmxlX2luZGV4KytdID0gKDEgPDwgMjQpIHwgKDY0IDw8IDE2KSB8IDA7XG5cbiAgICBvcHRzLmJpdHMgPSAxO1xuICAgIHJldHVybiAwOyAgICAgLyogbm8gc3ltYm9scywgYnV0IHdhaXQgZm9yIGRlY29kaW5nIHRvIHJlcG9ydCBlcnJvciAqL1xuICB9XG4gIGZvciAobWluID0gMTsgbWluIDwgbWF4OyBtaW4rKykge1xuICAgIGlmIChjb3VudFttaW5dICE9PSAwKSB7IGJyZWFrOyB9XG4gIH1cbiAgaWYgKHJvb3QgPCBtaW4pIHtcbiAgICByb290ID0gbWluO1xuICB9XG5cbiAgLyogY2hlY2sgZm9yIGFuIG92ZXItc3Vic2NyaWJlZCBvciBpbmNvbXBsZXRlIHNldCBvZiBsZW5ndGhzICovXG4gIGxlZnQgPSAxO1xuICBmb3IgKGxlbiA9IDE7IGxlbiA8PSBNQVhCSVRTOyBsZW4rKykge1xuICAgIGxlZnQgPDw9IDE7XG4gICAgbGVmdCAtPSBjb3VudFtsZW5dO1xuICAgIGlmIChsZWZ0IDwgMCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gICAgICAgIC8qIG92ZXItc3Vic2NyaWJlZCAqL1xuICB9XG4gIGlmIChsZWZ0ID4gMCAmJiAodHlwZSA9PT0gQ09ERVMgfHwgbWF4ICE9PSAxKSkge1xuICAgIHJldHVybiAtMTsgICAgICAgICAgICAgICAgICAgICAgLyogaW5jb21wbGV0ZSBzZXQgKi9cbiAgfVxuXG4gIC8qIGdlbmVyYXRlIG9mZnNldHMgaW50byBzeW1ib2wgdGFibGUgZm9yIGVhY2ggbGVuZ3RoIGZvciBzb3J0aW5nICovXG4gIG9mZnNbMV0gPSAwO1xuICBmb3IgKGxlbiA9IDE7IGxlbiA8IE1BWEJJVFM7IGxlbisrKSB7XG4gICAgb2Zmc1tsZW4gKyAxXSA9IG9mZnNbbGVuXSArIGNvdW50W2xlbl07XG4gIH1cblxuICAvKiBzb3J0IHN5bWJvbHMgYnkgbGVuZ3RoLCBieSBzeW1ib2wgb3JkZXIgd2l0aGluIGVhY2ggbGVuZ3RoICovXG4gIGZvciAoc3ltID0gMDsgc3ltIDwgY29kZXM7IHN5bSsrKSB7XG4gICAgaWYgKGxlbnNbbGVuc19pbmRleCArIHN5bV0gIT09IDApIHtcbiAgICAgIHdvcmtbb2Zmc1tsZW5zW2xlbnNfaW5kZXggKyBzeW1dXSsrXSA9IHN5bTtcbiAgICB9XG4gIH1cblxuICAvKlxuICAgQ3JlYXRlIGFuZCBmaWxsIGluIGRlY29kaW5nIHRhYmxlcy4gIEluIHRoaXMgbG9vcCwgdGhlIHRhYmxlIGJlaW5nXG4gICBmaWxsZWQgaXMgYXQgbmV4dCBhbmQgaGFzIGN1cnIgaW5kZXggYml0cy4gIFRoZSBjb2RlIGJlaW5nIHVzZWQgaXMgaHVmZlxuICAgd2l0aCBsZW5ndGggbGVuLiAgVGhhdCBjb2RlIGlzIGNvbnZlcnRlZCB0byBhbiBpbmRleCBieSBkcm9wcGluZyBkcm9wXG4gICBiaXRzIG9mZiBvZiB0aGUgYm90dG9tLiAgRm9yIGNvZGVzIHdoZXJlIGxlbiBpcyBsZXNzIHRoYW4gZHJvcCArIGN1cnIsXG4gICB0aG9zZSB0b3AgZHJvcCArIGN1cnIgLSBsZW4gYml0cyBhcmUgaW5jcmVtZW50ZWQgdGhyb3VnaCBhbGwgdmFsdWVzIHRvXG4gICBmaWxsIHRoZSB0YWJsZSB3aXRoIHJlcGxpY2F0ZWQgZW50cmllcy5cblxuICAgcm9vdCBpcyB0aGUgbnVtYmVyIG9mIGluZGV4IGJpdHMgZm9yIHRoZSByb290IHRhYmxlLiAgV2hlbiBsZW4gZXhjZWVkc1xuICAgcm9vdCwgc3ViLXRhYmxlcyBhcmUgY3JlYXRlZCBwb2ludGVkIHRvIGJ5IHRoZSByb290IGVudHJ5IHdpdGggYW4gaW5kZXhcbiAgIG9mIHRoZSBsb3cgcm9vdCBiaXRzIG9mIGh1ZmYuICBUaGlzIGlzIHNhdmVkIGluIGxvdyB0byBjaGVjayBmb3Igd2hlbiBhXG4gICBuZXcgc3ViLXRhYmxlIHNob3VsZCBiZSBzdGFydGVkLiAgZHJvcCBpcyB6ZXJvIHdoZW4gdGhlIHJvb3QgdGFibGUgaXNcbiAgIGJlaW5nIGZpbGxlZCwgYW5kIGRyb3AgaXMgcm9vdCB3aGVuIHN1Yi10YWJsZXMgYXJlIGJlaW5nIGZpbGxlZC5cblxuICAgV2hlbiBhIG5ldyBzdWItdGFibGUgaXMgbmVlZGVkLCBpdCBpcyBuZWNlc3NhcnkgdG8gbG9vayBhaGVhZCBpbiB0aGVcbiAgIGNvZGUgbGVuZ3RocyB0byBkZXRlcm1pbmUgd2hhdCBzaXplIHN1Yi10YWJsZSBpcyBuZWVkZWQuICBUaGUgbGVuZ3RoXG4gICBjb3VudHMgYXJlIHVzZWQgZm9yIHRoaXMsIGFuZCBzbyBjb3VudFtdIGlzIGRlY3JlbWVudGVkIGFzIGNvZGVzIGFyZVxuICAgZW50ZXJlZCBpbiB0aGUgdGFibGVzLlxuXG4gICB1c2VkIGtlZXBzIHRyYWNrIG9mIGhvdyBtYW55IHRhYmxlIGVudHJpZXMgaGF2ZSBiZWVuIGFsbG9jYXRlZCBmcm9tIHRoZVxuICAgcHJvdmlkZWQgKnRhYmxlIHNwYWNlLiAgSXQgaXMgY2hlY2tlZCBmb3IgTEVOUyBhbmQgRElTVCB0YWJsZXMgYWdhaW5zdFxuICAgdGhlIGNvbnN0YW50cyBFTk9VR0hfTEVOUyBhbmQgRU5PVUdIX0RJU1RTIHRvIGd1YXJkIGFnYWluc3QgY2hhbmdlcyBpblxuICAgdGhlIGluaXRpYWwgcm9vdCB0YWJsZSBzaXplIGNvbnN0YW50cy4gIFNlZSB0aGUgY29tbWVudHMgaW4gaW5mdHJlZXMuaFxuICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbiAgIHN5bSBpbmNyZW1lbnRzIHRocm91Z2ggYWxsIHN5bWJvbHMsIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzIHdoZW5cbiAgIGFsbCBjb2RlcyBvZiBsZW5ndGggbWF4LCBpLmUuIGFsbCBjb2RlcywgaGF2ZSBiZWVuIHByb2Nlc3NlZC4gIFRoaXNcbiAgIHJvdXRpbmUgcGVybWl0cyBpbmNvbXBsZXRlIGNvZGVzLCBzbyBhbm90aGVyIGxvb3AgYWZ0ZXIgdGhpcyBvbmUgZmlsbHNcbiAgIGluIHRoZSByZXN0IG9mIHRoZSBkZWNvZGluZyB0YWJsZXMgd2l0aCBpbnZhbGlkIGNvZGUgbWFya2Vycy5cbiAgICovXG5cbiAgLyogc2V0IHVwIGZvciBjb2RlIHR5cGUgKi9cbiAgLy8gcG9vciBtYW4gb3B0aW1pemF0aW9uIC0gdXNlIGlmLWVsc2UgaW5zdGVhZCBvZiBzd2l0Y2gsXG4gIC8vIHRvIGF2b2lkIGRlb3B0cyBpbiBvbGQgdjhcbiAgaWYgKHR5cGUgPT09IENPREVTKSB7XG4gICAgYmFzZSA9IGV4dHJhID0gd29yazsgICAgLyogZHVtbXkgdmFsdWUtLW5vdCB1c2VkICovXG4gICAgZW5kID0gMTk7XG5cbiAgfSBlbHNlIGlmICh0eXBlID09PSBMRU5TKSB7XG4gICAgYmFzZSA9IGxiYXNlO1xuICAgIGJhc2VfaW5kZXggLT0gMjU3O1xuICAgIGV4dHJhID0gbGV4dDtcbiAgICBleHRyYV9pbmRleCAtPSAyNTc7XG4gICAgZW5kID0gMjU2O1xuXG4gIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAvKiBESVNUUyAqL1xuICAgIGJhc2UgPSBkYmFzZTtcbiAgICBleHRyYSA9IGRleHQ7XG4gICAgZW5kID0gLTE7XG4gIH1cblxuICAvKiBpbml0aWFsaXplIG9wdHMgZm9yIGxvb3AgKi9cbiAgaHVmZiA9IDA7ICAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0aW5nIGNvZGUgKi9cbiAgc3ltID0gMDsgICAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0aW5nIGNvZGUgc3ltYm9sICovXG4gIGxlbiA9IG1pbjsgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBjb2RlIGxlbmd0aCAqL1xuICBuZXh0ID0gdGFibGVfaW5kZXg7ICAgICAgICAgICAgICAvKiBjdXJyZW50IHRhYmxlIHRvIGZpbGwgaW4gKi9cbiAgY3VyciA9IHJvb3Q7ICAgICAgICAgICAgICAgIC8qIGN1cnJlbnQgdGFibGUgaW5kZXggYml0cyAqL1xuICBkcm9wID0gMDsgICAgICAgICAgICAgICAgICAgLyogY3VycmVudCBiaXRzIHRvIGRyb3AgZnJvbSBjb2RlIGZvciBpbmRleCAqL1xuICBsb3cgPSAtMTsgICAgICAgICAgICAgICAgICAgLyogdHJpZ2dlciBuZXcgc3ViLXRhYmxlIHdoZW4gbGVuID4gcm9vdCAqL1xuICB1c2VkID0gMSA8PCByb290OyAgICAgICAgICAvKiB1c2Ugcm9vdCB0YWJsZSBlbnRyaWVzICovXG4gIG1hc2sgPSB1c2VkIC0gMTsgICAgICAgICAgICAvKiBtYXNrIGZvciBjb21wYXJpbmcgbG93ICovXG5cbiAgLyogY2hlY2sgYXZhaWxhYmxlIHRhYmxlIHNwYWNlICovXG4gIGlmICgodHlwZSA9PT0gTEVOUyAmJiB1c2VkID4gRU5PVUdIX0xFTlMpIHx8XG4gICAgKHR5cGUgPT09IERJU1RTICYmIHVzZWQgPiBFTk9VR0hfRElTVFMpKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvKiBwcm9jZXNzIGFsbCBjb2RlcyBhbmQgbWFrZSB0YWJsZSBlbnRyaWVzICovXG4gIGZvciAoOzspIHtcbiAgICAvKiBjcmVhdGUgdGFibGUgZW50cnkgKi9cbiAgICBoZXJlX2JpdHMgPSBsZW4gLSBkcm9wO1xuICAgIGlmICh3b3JrW3N5bV0gPCBlbmQpIHtcbiAgICAgIGhlcmVfb3AgPSAwO1xuICAgICAgaGVyZV92YWwgPSB3b3JrW3N5bV07XG4gICAgfVxuICAgIGVsc2UgaWYgKHdvcmtbc3ltXSA+IGVuZCkge1xuICAgICAgaGVyZV9vcCA9IGV4dHJhW2V4dHJhX2luZGV4ICsgd29ya1tzeW1dXTtcbiAgICAgIGhlcmVfdmFsID0gYmFzZVtiYXNlX2luZGV4ICsgd29ya1tzeW1dXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBoZXJlX29wID0gMzIgKyA2NDsgICAgICAgICAvKiBlbmQgb2YgYmxvY2sgKi9cbiAgICAgIGhlcmVfdmFsID0gMDtcbiAgICB9XG5cbiAgICAvKiByZXBsaWNhdGUgZm9yIHRob3NlIGluZGljZXMgd2l0aCBsb3cgbGVuIGJpdHMgZXF1YWwgdG8gaHVmZiAqL1xuICAgIGluY3IgPSAxIDw8IChsZW4gLSBkcm9wKTtcbiAgICBmaWxsID0gMSA8PCBjdXJyO1xuICAgIG1pbiA9IGZpbGw7ICAgICAgICAgICAgICAgICAvKiBzYXZlIG9mZnNldCB0byBuZXh0IHRhYmxlICovXG4gICAgZG8ge1xuICAgICAgZmlsbCAtPSBpbmNyO1xuICAgICAgdGFibGVbbmV4dCArIChodWZmID4+IGRyb3ApICsgZmlsbF0gPSAoaGVyZV9iaXRzIDw8IDI0KSB8IChoZXJlX29wIDw8IDE2KSB8IGhlcmVfdmFsIHwwO1xuICAgIH0gd2hpbGUgKGZpbGwgIT09IDApO1xuXG4gICAgLyogYmFja3dhcmRzIGluY3JlbWVudCB0aGUgbGVuLWJpdCBjb2RlIGh1ZmYgKi9cbiAgICBpbmNyID0gMSA8PCAobGVuIC0gMSk7XG4gICAgd2hpbGUgKGh1ZmYgJiBpbmNyKSB7XG4gICAgICBpbmNyID4+PSAxO1xuICAgIH1cbiAgICBpZiAoaW5jciAhPT0gMCkge1xuICAgICAgaHVmZiAmPSBpbmNyIC0gMTtcbiAgICAgIGh1ZmYgKz0gaW5jcjtcbiAgICB9IGVsc2Uge1xuICAgICAgaHVmZiA9IDA7XG4gICAgfVxuXG4gICAgLyogZ28gdG8gbmV4dCBzeW1ib2wsIHVwZGF0ZSBjb3VudCwgbGVuICovXG4gICAgc3ltKys7XG4gICAgaWYgKC0tY291bnRbbGVuXSA9PT0gMCkge1xuICAgICAgaWYgKGxlbiA9PT0gbWF4KSB7IGJyZWFrOyB9XG4gICAgICBsZW4gPSBsZW5zW2xlbnNfaW5kZXggKyB3b3JrW3N5bV1dO1xuICAgIH1cblxuICAgIC8qIGNyZWF0ZSBuZXcgc3ViLXRhYmxlIGlmIG5lZWRlZCAqL1xuICAgIGlmIChsZW4gPiByb290ICYmIChodWZmICYgbWFzaykgIT09IGxvdykge1xuICAgICAgLyogaWYgZmlyc3QgdGltZSwgdHJhbnNpdGlvbiB0byBzdWItdGFibGVzICovXG4gICAgICBpZiAoZHJvcCA9PT0gMCkge1xuICAgICAgICBkcm9wID0gcm9vdDtcbiAgICAgIH1cblxuICAgICAgLyogaW5jcmVtZW50IHBhc3QgbGFzdCB0YWJsZSAqL1xuICAgICAgbmV4dCArPSBtaW47ICAgICAgICAgICAgLyogaGVyZSBtaW4gaXMgMSA8PCBjdXJyICovXG5cbiAgICAgIC8qIGRldGVybWluZSBsZW5ndGggb2YgbmV4dCB0YWJsZSAqL1xuICAgICAgY3VyciA9IGxlbiAtIGRyb3A7XG4gICAgICBsZWZ0ID0gMSA8PCBjdXJyO1xuICAgICAgd2hpbGUgKGN1cnIgKyBkcm9wIDwgbWF4KSB7XG4gICAgICAgIGxlZnQgLT0gY291bnRbY3VyciArIGRyb3BdO1xuICAgICAgICBpZiAobGVmdCA8PSAwKSB7IGJyZWFrOyB9XG4gICAgICAgIGN1cnIrKztcbiAgICAgICAgbGVmdCA8PD0gMTtcbiAgICAgIH1cblxuICAgICAgLyogY2hlY2sgZm9yIGVub3VnaCBzcGFjZSAqL1xuICAgICAgdXNlZCArPSAxIDw8IGN1cnI7XG4gICAgICBpZiAoKHR5cGUgPT09IExFTlMgJiYgdXNlZCA+IEVOT1VHSF9MRU5TKSB8fFxuICAgICAgICAodHlwZSA9PT0gRElTVFMgJiYgdXNlZCA+IEVOT1VHSF9ESVNUUykpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG5cbiAgICAgIC8qIHBvaW50IGVudHJ5IGluIHJvb3QgdGFibGUgdG8gc3ViLXRhYmxlICovXG4gICAgICBsb3cgPSBodWZmICYgbWFzaztcbiAgICAgIC8qdGFibGUub3BbbG93XSA9IGN1cnI7XG4gICAgICB0YWJsZS5iaXRzW2xvd10gPSByb290O1xuICAgICAgdGFibGUudmFsW2xvd10gPSBuZXh0IC0gb3B0cy50YWJsZV9pbmRleDsqL1xuICAgICAgdGFibGVbbG93XSA9IChyb290IDw8IDI0KSB8IChjdXJyIDw8IDE2KSB8IChuZXh0IC0gdGFibGVfaW5kZXgpIHwwO1xuICAgIH1cbiAgfVxuXG4gIC8qIGZpbGwgaW4gcmVtYWluaW5nIHRhYmxlIGVudHJ5IGlmIGNvZGUgaXMgaW5jb21wbGV0ZSAoZ3VhcmFudGVlZCB0byBoYXZlXG4gICBhdCBtb3N0IG9uZSByZW1haW5pbmcgZW50cnksIHNpbmNlIGlmIHRoZSBjb2RlIGlzIGluY29tcGxldGUsIHRoZVxuICAgbWF4aW11bSBjb2RlIGxlbmd0aCB0aGF0IHdhcyBhbGxvd2VkIHRvIGdldCB0aGlzIGZhciBpcyBvbmUgYml0KSAqL1xuICBpZiAoaHVmZiAhPT0gMCkge1xuICAgIC8vdGFibGUub3BbbmV4dCArIGh1ZmZdID0gNjQ7ICAgICAgICAgICAgLyogaW52YWxpZCBjb2RlIG1hcmtlciAqL1xuICAgIC8vdGFibGUuYml0c1tuZXh0ICsgaHVmZl0gPSBsZW4gLSBkcm9wO1xuICAgIC8vdGFibGUudmFsW25leHQgKyBodWZmXSA9IDA7XG4gICAgdGFibGVbbmV4dCArIGh1ZmZdID0gKChsZW4gLSBkcm9wKSA8PCAyNCkgfCAoNjQgPDwgMTYpIHwwO1xuICB9XG5cbiAgLyogc2V0IHJldHVybiBwYXJhbWV0ZXJzICovXG4gIC8vb3B0cy50YWJsZV9pbmRleCArPSB1c2VkO1xuICBvcHRzLmJpdHMgPSByb290O1xuICByZXR1cm4gMDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIDI6ICAgICAgJ25lZWQgZGljdGlvbmFyeScsICAgICAvKiBaX05FRURfRElDVCAgICAgICAyICAqL1xuICAxOiAgICAgICdzdHJlYW0gZW5kJywgICAgICAgICAgLyogWl9TVFJFQU1fRU5EICAgICAgMSAgKi9cbiAgMDogICAgICAnJywgICAgICAgICAgICAgICAgICAgIC8qIFpfT0sgICAgICAgICAgICAgIDAgICovXG4gICctMSc6ICAgJ2ZpbGUgZXJyb3InLCAgICAgICAgICAvKiBaX0VSUk5PICAgICAgICAgKC0xKSAqL1xuICAnLTInOiAgICdzdHJlYW0gZXJyb3InLCAgICAgICAgLyogWl9TVFJFQU1fRVJST1IgICgtMikgKi9cbiAgJy0zJzogICAnZGF0YSBlcnJvcicsICAgICAgICAgIC8qIFpfREFUQV9FUlJPUiAgICAoLTMpICovXG4gICctNCc6ICAgJ2luc3VmZmljaWVudCBtZW1vcnknLCAvKiBaX01FTV9FUlJPUiAgICAgKC00KSAqL1xuICAnLTUnOiAgICdidWZmZXIgZXJyb3InLCAgICAgICAgLyogWl9CVUZfRVJST1IgICAgICgtNSkgKi9cbiAgJy02JzogICAnaW5jb21wYXRpYmxlIHZlcnNpb24nIC8qIFpfVkVSU0lPTl9FUlJPUiAoLTYpICovXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbi8qIGVzbGludC1kaXNhYmxlIHNwYWNlLXVuYXJ5LW9wcyAqL1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy9jb21tb24nKTtcblxuLyogUHVibGljIGNvbnN0YW50cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblxuLy92YXIgWl9GSUxURVJFRCAgICAgICAgICA9IDE7XG4vL3ZhciBaX0hVRkZNQU5fT05MWSAgICAgID0gMjtcbi8vdmFyIFpfUkxFICAgICAgICAgICAgICAgPSAzO1xudmFyIFpfRklYRUQgICAgICAgICAgICAgICA9IDQ7XG4vL3ZhciBaX0RFRkFVTFRfU1RSQVRFR1kgID0gMDtcblxuLyogUG9zc2libGUgdmFsdWVzIG9mIHRoZSBkYXRhX3R5cGUgZmllbGQgKHRob3VnaCBzZWUgaW5mbGF0ZSgpKSAqL1xudmFyIFpfQklOQVJZICAgICAgICAgICAgICA9IDA7XG52YXIgWl9URVhUICAgICAgICAgICAgICAgID0gMTtcbi8vdmFyIFpfQVNDSUkgICAgICAgICAgICAgPSAxOyAvLyA9IFpfVEVYVFxudmFyIFpfVU5LTk9XTiAgICAgICAgICAgICA9IDI7XG5cbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblxuZnVuY3Rpb24gemVybyhidWYpIHsgdmFyIGxlbiA9IGJ1Zi5sZW5ndGg7IHdoaWxlICgtLWxlbiA+PSAwKSB7IGJ1ZltsZW5dID0gMDsgfSB9XG5cbi8vIEZyb20genV0aWwuaFxuXG52YXIgU1RPUkVEX0JMT0NLID0gMDtcbnZhciBTVEFUSUNfVFJFRVMgPSAxO1xudmFyIERZTl9UUkVFUyAgICA9IDI7XG4vKiBUaGUgdGhyZWUga2luZHMgb2YgYmxvY2sgdHlwZSAqL1xuXG52YXIgTUlOX01BVENIICAgID0gMztcbnZhciBNQVhfTUFUQ0ggICAgPSAyNTg7XG4vKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBtYXRjaCBsZW5ndGhzICovXG5cbi8vIEZyb20gZGVmbGF0ZS5oXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEludGVybmFsIGNvbXByZXNzaW9uIHN0YXRlLlxuICovXG5cbnZhciBMRU5HVEhfQ09ERVMgID0gMjk7XG4vKiBudW1iZXIgb2YgbGVuZ3RoIGNvZGVzLCBub3QgY291bnRpbmcgdGhlIHNwZWNpYWwgRU5EX0JMT0NLIGNvZGUgKi9cblxudmFyIExJVEVSQUxTICAgICAgPSAyNTY7XG4vKiBudW1iZXIgb2YgbGl0ZXJhbCBieXRlcyAwLi4yNTUgKi9cblxudmFyIExfQ09ERVMgICAgICAgPSBMSVRFUkFMUyArIDEgKyBMRU5HVEhfQ09ERVM7XG4vKiBudW1iZXIgb2YgTGl0ZXJhbCBvciBMZW5ndGggY29kZXMsIGluY2x1ZGluZyB0aGUgRU5EX0JMT0NLIGNvZGUgKi9cblxudmFyIERfQ09ERVMgICAgICAgPSAzMDtcbi8qIG51bWJlciBvZiBkaXN0YW5jZSBjb2RlcyAqL1xuXG52YXIgQkxfQ09ERVMgICAgICA9IDE5O1xuLyogbnVtYmVyIG9mIGNvZGVzIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGJpdCBsZW5ndGhzICovXG5cbnZhciBIRUFQX1NJWkUgICAgID0gMiAqIExfQ09ERVMgKyAxO1xuLyogbWF4aW11bSBoZWFwIHNpemUgKi9cblxudmFyIE1BWF9CSVRTICAgICAgPSAxNTtcbi8qIEFsbCBjb2RlcyBtdXN0IG5vdCBleGNlZWQgTUFYX0JJVFMgYml0cyAqL1xuXG52YXIgQnVmX3NpemUgICAgICA9IDE2O1xuLyogc2l6ZSBvZiBiaXQgYnVmZmVyIGluIGJpX2J1ZiAqL1xuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29uc3RhbnRzXG4gKi9cblxudmFyIE1BWF9CTF9CSVRTID0gNztcbi8qIEJpdCBsZW5ndGggY29kZXMgbXVzdCBub3QgZXhjZWVkIE1BWF9CTF9CSVRTIGJpdHMgKi9cblxudmFyIEVORF9CTE9DSyAgID0gMjU2O1xuLyogZW5kIG9mIGJsb2NrIGxpdGVyYWwgY29kZSAqL1xuXG52YXIgUkVQXzNfNiAgICAgPSAxNjtcbi8qIHJlcGVhdCBwcmV2aW91cyBiaXQgbGVuZ3RoIDMtNiB0aW1lcyAoMiBiaXRzIG9mIHJlcGVhdCBjb3VudCkgKi9cblxudmFyIFJFUFpfM18xMCAgID0gMTc7XG4vKiByZXBlYXQgYSB6ZXJvIGxlbmd0aCAzLTEwIHRpbWVzICAoMyBiaXRzIG9mIHJlcGVhdCBjb3VudCkgKi9cblxudmFyIFJFUFpfMTFfMTM4ID0gMTg7XG4vKiByZXBlYXQgYSB6ZXJvIGxlbmd0aCAxMS0xMzggdGltZXMgICg3IGJpdHMgb2YgcmVwZWF0IGNvdW50KSAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21tYS1zcGFjaW5nLGFycmF5LWJyYWNrZXQtc3BhY2luZyAqL1xudmFyIGV4dHJhX2xiaXRzID0gICAvKiBleHRyYSBiaXRzIGZvciBlYWNoIGxlbmd0aCBjb2RlICovXG4gIFswLDAsMCwwLDAsMCwwLDAsMSwxLDEsMSwyLDIsMiwyLDMsMywzLDMsNCw0LDQsNCw1LDUsNSw1LDBdO1xuXG52YXIgZXh0cmFfZGJpdHMgPSAgIC8qIGV4dHJhIGJpdHMgZm9yIGVhY2ggZGlzdGFuY2UgY29kZSAqL1xuICBbMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxM107XG5cbnZhciBleHRyYV9ibGJpdHMgPSAgLyogZXh0cmEgYml0cyBmb3IgZWFjaCBiaXQgbGVuZ3RoIGNvZGUgKi9cbiAgWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwzLDddO1xuXG52YXIgYmxfb3JkZXIgPVxuICBbMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV07XG4vKiBlc2xpbnQtZW5hYmxlIGNvbW1hLXNwYWNpbmcsYXJyYXktYnJhY2tldC1zcGFjaW5nICovXG5cbi8qIFRoZSBsZW5ndGhzIG9mIHRoZSBiaXQgbGVuZ3RoIGNvZGVzIGFyZSBzZW50IGluIG9yZGVyIG9mIGRlY3JlYXNpbmdcbiAqIHByb2JhYmlsaXR5LCB0byBhdm9pZCB0cmFuc21pdHRpbmcgdGhlIGxlbmd0aHMgZm9yIHVudXNlZCBiaXQgbGVuZ3RoIGNvZGVzLlxuICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogTG9jYWwgZGF0YS4gVGhlc2UgYXJlIGluaXRpYWxpemVkIG9ubHkgb25jZS5cbiAqL1xuXG4vLyBXZSBwcmUtZmlsbCBhcnJheXMgd2l0aCAwIHRvIGF2b2lkIHVuaW5pdGlhbGl6ZWQgZ2Fwc1xuXG52YXIgRElTVF9DT0RFX0xFTiA9IDUxMjsgLyogc2VlIGRlZmluaXRpb24gb2YgYXJyYXkgZGlzdF9jb2RlIGJlbG93ICovXG5cbi8vICEhISEgVXNlIGZsYXQgYXJyYXkgaW5zdGVhZCBvZiBzdHJ1Y3R1cmUsIEZyZXEgPSBpKjIsIExlbiA9IGkqMisxXG52YXIgc3RhdGljX2x0cmVlICA9IG5ldyBBcnJheSgoTF9DT0RFUyArIDIpICogMik7XG56ZXJvKHN0YXRpY19sdHJlZSk7XG4vKiBUaGUgc3RhdGljIGxpdGVyYWwgdHJlZS4gU2luY2UgdGhlIGJpdCBsZW5ndGhzIGFyZSBpbXBvc2VkLCB0aGVyZSBpcyBub1xuICogbmVlZCBmb3IgdGhlIExfQ09ERVMgZXh0cmEgY29kZXMgdXNlZCBkdXJpbmcgaGVhcCBjb25zdHJ1Y3Rpb24uIEhvd2V2ZXJcbiAqIFRoZSBjb2RlcyAyODYgYW5kIDI4NyBhcmUgbmVlZGVkIHRvIGJ1aWxkIGEgY2Fub25pY2FsIHRyZWUgKHNlZSBfdHJfaW5pdFxuICogYmVsb3cpLlxuICovXG5cbnZhciBzdGF0aWNfZHRyZWUgID0gbmV3IEFycmF5KERfQ09ERVMgKiAyKTtcbnplcm8oc3RhdGljX2R0cmVlKTtcbi8qIFRoZSBzdGF0aWMgZGlzdGFuY2UgdHJlZS4gKEFjdHVhbGx5IGEgdHJpdmlhbCB0cmVlIHNpbmNlIGFsbCBjb2RlcyB1c2VcbiAqIDUgYml0cy4pXG4gKi9cblxudmFyIF9kaXN0X2NvZGUgICAgPSBuZXcgQXJyYXkoRElTVF9DT0RFX0xFTik7XG56ZXJvKF9kaXN0X2NvZGUpO1xuLyogRGlzdGFuY2UgY29kZXMuIFRoZSBmaXJzdCAyNTYgdmFsdWVzIGNvcnJlc3BvbmQgdG8gdGhlIGRpc3RhbmNlc1xuICogMyAuLiAyNTgsIHRoZSBsYXN0IDI1NiB2YWx1ZXMgY29ycmVzcG9uZCB0byB0aGUgdG9wIDggYml0cyBvZlxuICogdGhlIDE1IGJpdCBkaXN0YW5jZXMuXG4gKi9cblxudmFyIF9sZW5ndGhfY29kZSAgPSBuZXcgQXJyYXkoTUFYX01BVENIIC0gTUlOX01BVENIICsgMSk7XG56ZXJvKF9sZW5ndGhfY29kZSk7XG4vKiBsZW5ndGggY29kZSBmb3IgZWFjaCBub3JtYWxpemVkIG1hdGNoIGxlbmd0aCAoMCA9PSBNSU5fTUFUQ0gpICovXG5cbnZhciBiYXNlX2xlbmd0aCAgID0gbmV3IEFycmF5KExFTkdUSF9DT0RFUyk7XG56ZXJvKGJhc2VfbGVuZ3RoKTtcbi8qIEZpcnN0IG5vcm1hbGl6ZWQgbGVuZ3RoIGZvciBlYWNoIGNvZGUgKDAgPSBNSU5fTUFUQ0gpICovXG5cbnZhciBiYXNlX2Rpc3QgICAgID0gbmV3IEFycmF5KERfQ09ERVMpO1xuemVybyhiYXNlX2Rpc3QpO1xuLyogRmlyc3Qgbm9ybWFsaXplZCBkaXN0YW5jZSBmb3IgZWFjaCBjb2RlICgwID0gZGlzdGFuY2Ugb2YgMSkgKi9cblxuXG5mdW5jdGlvbiBTdGF0aWNUcmVlRGVzYyhzdGF0aWNfdHJlZSwgZXh0cmFfYml0cywgZXh0cmFfYmFzZSwgZWxlbXMsIG1heF9sZW5ndGgpIHtcblxuICB0aGlzLnN0YXRpY190cmVlICA9IHN0YXRpY190cmVlOyAgLyogc3RhdGljIHRyZWUgb3IgTlVMTCAqL1xuICB0aGlzLmV4dHJhX2JpdHMgICA9IGV4dHJhX2JpdHM7ICAgLyogZXh0cmEgYml0cyBmb3IgZWFjaCBjb2RlIG9yIE5VTEwgKi9cbiAgdGhpcy5leHRyYV9iYXNlICAgPSBleHRyYV9iYXNlOyAgIC8qIGJhc2UgaW5kZXggZm9yIGV4dHJhX2JpdHMgKi9cbiAgdGhpcy5lbGVtcyAgICAgICAgPSBlbGVtczsgICAgICAgIC8qIG1heCBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHRyZWUgKi9cbiAgdGhpcy5tYXhfbGVuZ3RoICAgPSBtYXhfbGVuZ3RoOyAgIC8qIG1heCBiaXQgbGVuZ3RoIGZvciB0aGUgY29kZXMgKi9cblxuICAvLyBzaG93IGlmIGBzdGF0aWNfdHJlZWAgaGFzIGRhdGEgb3IgZHVtbXkgLSBuZWVkZWQgZm9yIG1vbm9tb3JwaGljIG9iamVjdHNcbiAgdGhpcy5oYXNfc3RyZWUgICAgPSBzdGF0aWNfdHJlZSAmJiBzdGF0aWNfdHJlZS5sZW5ndGg7XG59XG5cblxudmFyIHN0YXRpY19sX2Rlc2M7XG52YXIgc3RhdGljX2RfZGVzYztcbnZhciBzdGF0aWNfYmxfZGVzYztcblxuXG5mdW5jdGlvbiBUcmVlRGVzYyhkeW5fdHJlZSwgc3RhdF9kZXNjKSB7XG4gIHRoaXMuZHluX3RyZWUgPSBkeW5fdHJlZTsgICAgIC8qIHRoZSBkeW5hbWljIHRyZWUgKi9cbiAgdGhpcy5tYXhfY29kZSA9IDA7ICAgICAgICAgICAgLyogbGFyZ2VzdCBjb2RlIHdpdGggbm9uIHplcm8gZnJlcXVlbmN5ICovXG4gIHRoaXMuc3RhdF9kZXNjID0gc3RhdF9kZXNjOyAgIC8qIHRoZSBjb3JyZXNwb25kaW5nIHN0YXRpYyB0cmVlICovXG59XG5cblxuXG5mdW5jdGlvbiBkX2NvZGUoZGlzdCkge1xuICByZXR1cm4gZGlzdCA8IDI1NiA/IF9kaXN0X2NvZGVbZGlzdF0gOiBfZGlzdF9jb2RlWzI1NiArIChkaXN0ID4+PiA3KV07XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBPdXRwdXQgYSBzaG9ydCBMU0IgZmlyc3Qgb24gdGhlIHN0cmVhbS5cbiAqIElOIGFzc2VydGlvbjogdGhlcmUgaXMgZW5vdWdoIHJvb20gaW4gcGVuZGluZ0J1Zi5cbiAqL1xuZnVuY3Rpb24gcHV0X3Nob3J0KHMsIHcpIHtcbi8vICAgIHB1dF9ieXRlKHMsICh1Y2gpKCh3KSAmIDB4ZmYpKTtcbi8vICAgIHB1dF9ieXRlKHMsICh1Y2gpKCh1c2gpKHcpID4+IDgpKTtcbiAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSAodykgJiAweGZmO1xuICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9ICh3ID4+PiA4KSAmIDB4ZmY7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZW5kIGEgdmFsdWUgb24gYSBnaXZlbiBudW1iZXIgb2YgYml0cy5cbiAqIElOIGFzc2VydGlvbjogbGVuZ3RoIDw9IDE2IGFuZCB2YWx1ZSBmaXRzIGluIGxlbmd0aCBiaXRzLlxuICovXG5mdW5jdGlvbiBzZW5kX2JpdHMocywgdmFsdWUsIGxlbmd0aCkge1xuICBpZiAocy5iaV92YWxpZCA+IChCdWZfc2l6ZSAtIGxlbmd0aCkpIHtcbiAgICBzLmJpX2J1ZiB8PSAodmFsdWUgPDwgcy5iaV92YWxpZCkgJiAweGZmZmY7XG4gICAgcHV0X3Nob3J0KHMsIHMuYmlfYnVmKTtcbiAgICBzLmJpX2J1ZiA9IHZhbHVlID4+IChCdWZfc2l6ZSAtIHMuYmlfdmFsaWQpO1xuICAgIHMuYmlfdmFsaWQgKz0gbGVuZ3RoIC0gQnVmX3NpemU7XG4gIH0gZWxzZSB7XG4gICAgcy5iaV9idWYgfD0gKHZhbHVlIDw8IHMuYmlfdmFsaWQpICYgMHhmZmZmO1xuICAgIHMuYmlfdmFsaWQgKz0gbGVuZ3RoO1xuICB9XG59XG5cblxuZnVuY3Rpb24gc2VuZF9jb2RlKHMsIGMsIHRyZWUpIHtcbiAgc2VuZF9iaXRzKHMsIHRyZWVbYyAqIDJdLyouQ29kZSovLCB0cmVlW2MgKiAyICsgMV0vKi5MZW4qLyk7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBSZXZlcnNlIHRoZSBmaXJzdCBsZW4gYml0cyBvZiBhIGNvZGUsIHVzaW5nIHN0cmFpZ2h0Zm9yd2FyZCBjb2RlIChhIGZhc3RlclxuICogbWV0aG9kIHdvdWxkIHVzZSBhIHRhYmxlKVxuICogSU4gYXNzZXJ0aW9uOiAxIDw9IGxlbiA8PSAxNVxuICovXG5mdW5jdGlvbiBiaV9yZXZlcnNlKGNvZGUsIGxlbikge1xuICB2YXIgcmVzID0gMDtcbiAgZG8ge1xuICAgIHJlcyB8PSBjb2RlICYgMTtcbiAgICBjb2RlID4+Pj0gMTtcbiAgICByZXMgPDw9IDE7XG4gIH0gd2hpbGUgKC0tbGVuID4gMCk7XG4gIHJldHVybiByZXMgPj4+IDE7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBGbHVzaCB0aGUgYml0IGJ1ZmZlciwga2VlcGluZyBhdCBtb3N0IDcgYml0cyBpbiBpdC5cbiAqL1xuZnVuY3Rpb24gYmlfZmx1c2gocykge1xuICBpZiAocy5iaV92YWxpZCA9PT0gMTYpIHtcbiAgICBwdXRfc2hvcnQocywgcy5iaV9idWYpO1xuICAgIHMuYmlfYnVmID0gMDtcbiAgICBzLmJpX3ZhbGlkID0gMDtcblxuICB9IGVsc2UgaWYgKHMuYmlfdmFsaWQgPj0gOCkge1xuICAgIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gcy5iaV9idWYgJiAweGZmO1xuICAgIHMuYmlfYnVmID4+PSA4O1xuICAgIHMuYmlfdmFsaWQgLT0gODtcbiAgfVxufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29tcHV0ZSB0aGUgb3B0aW1hbCBiaXQgbGVuZ3RocyBmb3IgYSB0cmVlIGFuZCB1cGRhdGUgdGhlIHRvdGFsIGJpdCBsZW5ndGhcbiAqIGZvciB0aGUgY3VycmVudCBibG9jay5cbiAqIElOIGFzc2VydGlvbjogdGhlIGZpZWxkcyBmcmVxIGFuZCBkYWQgYXJlIHNldCwgaGVhcFtoZWFwX21heF0gYW5kXG4gKiAgICBhYm92ZSBhcmUgdGhlIHRyZWUgbm9kZXMgc29ydGVkIGJ5IGluY3JlYXNpbmcgZnJlcXVlbmN5LlxuICogT1VUIGFzc2VydGlvbnM6IHRoZSBmaWVsZCBsZW4gaXMgc2V0IHRvIHRoZSBvcHRpbWFsIGJpdCBsZW5ndGgsIHRoZVxuICogICAgIGFycmF5IGJsX2NvdW50IGNvbnRhaW5zIHRoZSBmcmVxdWVuY2llcyBmb3IgZWFjaCBiaXQgbGVuZ3RoLlxuICogICAgIFRoZSBsZW5ndGggb3B0X2xlbiBpcyB1cGRhdGVkOyBzdGF0aWNfbGVuIGlzIGFsc28gdXBkYXRlZCBpZiBzdHJlZSBpc1xuICogICAgIG5vdCBudWxsLlxuICovXG5mdW5jdGlvbiBnZW5fYml0bGVuKHMsIGRlc2MpXG4vLyAgICBkZWZsYXRlX3N0YXRlICpzO1xuLy8gICAgdHJlZV9kZXNjICpkZXNjOyAgICAvKiB0aGUgdHJlZSBkZXNjcmlwdG9yICovXG57XG4gIHZhciB0cmVlICAgICAgICAgICAgPSBkZXNjLmR5bl90cmVlO1xuICB2YXIgbWF4X2NvZGUgICAgICAgID0gZGVzYy5tYXhfY29kZTtcbiAgdmFyIHN0cmVlICAgICAgICAgICA9IGRlc2Muc3RhdF9kZXNjLnN0YXRpY190cmVlO1xuICB2YXIgaGFzX3N0cmVlICAgICAgID0gZGVzYy5zdGF0X2Rlc2MuaGFzX3N0cmVlO1xuICB2YXIgZXh0cmEgICAgICAgICAgID0gZGVzYy5zdGF0X2Rlc2MuZXh0cmFfYml0cztcbiAgdmFyIGJhc2UgICAgICAgICAgICA9IGRlc2Muc3RhdF9kZXNjLmV4dHJhX2Jhc2U7XG4gIHZhciBtYXhfbGVuZ3RoICAgICAgPSBkZXNjLnN0YXRfZGVzYy5tYXhfbGVuZ3RoO1xuICB2YXIgaDsgICAgICAgICAgICAgIC8qIGhlYXAgaW5kZXggKi9cbiAgdmFyIG4sIG07ICAgICAgICAgICAvKiBpdGVyYXRlIG92ZXIgdGhlIHRyZWUgZWxlbWVudHMgKi9cbiAgdmFyIGJpdHM7ICAgICAgICAgICAvKiBiaXQgbGVuZ3RoICovXG4gIHZhciB4Yml0czsgICAgICAgICAgLyogZXh0cmEgYml0cyAqL1xuICB2YXIgZjsgICAgICAgICAgICAgIC8qIGZyZXF1ZW5jeSAqL1xuICB2YXIgb3ZlcmZsb3cgPSAwOyAgIC8qIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIGJpdCBsZW5ndGggdG9vIGxhcmdlICovXG5cbiAgZm9yIChiaXRzID0gMDsgYml0cyA8PSBNQVhfQklUUzsgYml0cysrKSB7XG4gICAgcy5ibF9jb3VudFtiaXRzXSA9IDA7XG4gIH1cblxuICAvKiBJbiBhIGZpcnN0IHBhc3MsIGNvbXB1dGUgdGhlIG9wdGltYWwgYml0IGxlbmd0aHMgKHdoaWNoIG1heVxuICAgKiBvdmVyZmxvdyBpbiB0aGUgY2FzZSBvZiB0aGUgYml0IGxlbmd0aCB0cmVlKS5cbiAgICovXG4gIHRyZWVbcy5oZWFwW3MuaGVhcF9tYXhdICogMiArIDFdLyouTGVuKi8gPSAwOyAvKiByb290IG9mIHRoZSBoZWFwICovXG5cbiAgZm9yIChoID0gcy5oZWFwX21heCArIDE7IGggPCBIRUFQX1NJWkU7IGgrKykge1xuICAgIG4gPSBzLmhlYXBbaF07XG4gICAgYml0cyA9IHRyZWVbdHJlZVtuICogMiArIDFdLyouRGFkKi8gKiAyICsgMV0vKi5MZW4qLyArIDE7XG4gICAgaWYgKGJpdHMgPiBtYXhfbGVuZ3RoKSB7XG4gICAgICBiaXRzID0gbWF4X2xlbmd0aDtcbiAgICAgIG92ZXJmbG93Kys7XG4gICAgfVxuICAgIHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gYml0cztcbiAgICAvKiBXZSBvdmVyd3JpdGUgdHJlZVtuXS5EYWQgd2hpY2ggaXMgbm8gbG9uZ2VyIG5lZWRlZCAqL1xuXG4gICAgaWYgKG4gPiBtYXhfY29kZSkgeyBjb250aW51ZTsgfSAvKiBub3QgYSBsZWFmIG5vZGUgKi9cblxuICAgIHMuYmxfY291bnRbYml0c10rKztcbiAgICB4Yml0cyA9IDA7XG4gICAgaWYgKG4gPj0gYmFzZSkge1xuICAgICAgeGJpdHMgPSBleHRyYVtuIC0gYmFzZV07XG4gICAgfVxuICAgIGYgPSB0cmVlW24gKiAyXS8qLkZyZXEqLztcbiAgICBzLm9wdF9sZW4gKz0gZiAqIChiaXRzICsgeGJpdHMpO1xuICAgIGlmIChoYXNfc3RyZWUpIHtcbiAgICAgIHMuc3RhdGljX2xlbiArPSBmICogKHN0cmVlW24gKiAyICsgMV0vKi5MZW4qLyArIHhiaXRzKTtcbiAgICB9XG4gIH1cbiAgaWYgKG92ZXJmbG93ID09PSAwKSB7IHJldHVybjsgfVxuXG4gIC8vIFRyYWNlKChzdGRlcnIsXCJcXG5iaXQgbGVuZ3RoIG92ZXJmbG93XFxuXCIpKTtcbiAgLyogVGhpcyBoYXBwZW5zIGZvciBleGFtcGxlIG9uIG9iajIgYW5kIHBpYyBvZiB0aGUgQ2FsZ2FyeSBjb3JwdXMgKi9cblxuICAvKiBGaW5kIHRoZSBmaXJzdCBiaXQgbGVuZ3RoIHdoaWNoIGNvdWxkIGluY3JlYXNlOiAqL1xuICBkbyB7XG4gICAgYml0cyA9IG1heF9sZW5ndGggLSAxO1xuICAgIHdoaWxlIChzLmJsX2NvdW50W2JpdHNdID09PSAwKSB7IGJpdHMtLTsgfVxuICAgIHMuYmxfY291bnRbYml0c10tLTsgICAgICAvKiBtb3ZlIG9uZSBsZWFmIGRvd24gdGhlIHRyZWUgKi9cbiAgICBzLmJsX2NvdW50W2JpdHMgKyAxXSArPSAyOyAvKiBtb3ZlIG9uZSBvdmVyZmxvdyBpdGVtIGFzIGl0cyBicm90aGVyICovXG4gICAgcy5ibF9jb3VudFttYXhfbGVuZ3RoXS0tO1xuICAgIC8qIFRoZSBicm90aGVyIG9mIHRoZSBvdmVyZmxvdyBpdGVtIGFsc28gbW92ZXMgb25lIHN0ZXAgdXAsXG4gICAgICogYnV0IHRoaXMgZG9lcyBub3QgYWZmZWN0IGJsX2NvdW50W21heF9sZW5ndGhdXG4gICAgICovXG4gICAgb3ZlcmZsb3cgLT0gMjtcbiAgfSB3aGlsZSAob3ZlcmZsb3cgPiAwKTtcblxuICAvKiBOb3cgcmVjb21wdXRlIGFsbCBiaXQgbGVuZ3Rocywgc2Nhbm5pbmcgaW4gaW5jcmVhc2luZyBmcmVxdWVuY3kuXG4gICAqIGggaXMgc3RpbGwgZXF1YWwgdG8gSEVBUF9TSVpFLiAoSXQgaXMgc2ltcGxlciB0byByZWNvbnN0cnVjdCBhbGxcbiAgICogbGVuZ3RocyBpbnN0ZWFkIG9mIGZpeGluZyBvbmx5IHRoZSB3cm9uZyBvbmVzLiBUaGlzIGlkZWEgaXMgdGFrZW5cbiAgICogZnJvbSAnYXInIHdyaXR0ZW4gYnkgSGFydWhpa28gT2t1bXVyYS4pXG4gICAqL1xuICBmb3IgKGJpdHMgPSBtYXhfbGVuZ3RoOyBiaXRzICE9PSAwOyBiaXRzLS0pIHtcbiAgICBuID0gcy5ibF9jb3VudFtiaXRzXTtcbiAgICB3aGlsZSAobiAhPT0gMCkge1xuICAgICAgbSA9IHMuaGVhcFstLWhdO1xuICAgICAgaWYgKG0gPiBtYXhfY29kZSkgeyBjb250aW51ZTsgfVxuICAgICAgaWYgKHRyZWVbbSAqIDIgKyAxXS8qLkxlbiovICE9PSBiaXRzKSB7XG4gICAgICAgIC8vIFRyYWNlKChzdGRlcnIsXCJjb2RlICVkIGJpdHMgJWQtPiVkXFxuXCIsIG0sIHRyZWVbbV0uTGVuLCBiaXRzKSk7XG4gICAgICAgIHMub3B0X2xlbiArPSAoYml0cyAtIHRyZWVbbSAqIDIgKyAxXS8qLkxlbiovKSAqIHRyZWVbbSAqIDJdLyouRnJlcSovO1xuICAgICAgICB0cmVlW20gKiAyICsgMV0vKi5MZW4qLyA9IGJpdHM7XG4gICAgICB9XG4gICAgICBuLS07XG4gICAgfVxuICB9XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBHZW5lcmF0ZSB0aGUgY29kZXMgZm9yIGEgZ2l2ZW4gdHJlZSBhbmQgYml0IGNvdW50cyAod2hpY2ggbmVlZCBub3QgYmVcbiAqIG9wdGltYWwpLlxuICogSU4gYXNzZXJ0aW9uOiB0aGUgYXJyYXkgYmxfY291bnQgY29udGFpbnMgdGhlIGJpdCBsZW5ndGggc3RhdGlzdGljcyBmb3JcbiAqIHRoZSBnaXZlbiB0cmVlIGFuZCB0aGUgZmllbGQgbGVuIGlzIHNldCBmb3IgYWxsIHRyZWUgZWxlbWVudHMuXG4gKiBPVVQgYXNzZXJ0aW9uOiB0aGUgZmllbGQgY29kZSBpcyBzZXQgZm9yIGFsbCB0cmVlIGVsZW1lbnRzIG9mIG5vblxuICogICAgIHplcm8gY29kZSBsZW5ndGguXG4gKi9cbmZ1bmN0aW9uIGdlbl9jb2Rlcyh0cmVlLCBtYXhfY29kZSwgYmxfY291bnQpXG4vLyAgICBjdF9kYXRhICp0cmVlOyAgICAgICAgICAgICAvKiB0aGUgdHJlZSB0byBkZWNvcmF0ZSAqL1xuLy8gICAgaW50IG1heF9jb2RlOyAgICAgICAgICAgICAgLyogbGFyZ2VzdCBjb2RlIHdpdGggbm9uIHplcm8gZnJlcXVlbmN5ICovXG4vLyAgICB1c2hmICpibF9jb3VudDsgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZXMgYXQgZWFjaCBiaXQgbGVuZ3RoICovXG57XG4gIHZhciBuZXh0X2NvZGUgPSBuZXcgQXJyYXkoTUFYX0JJVFMgKyAxKTsgLyogbmV4dCBjb2RlIHZhbHVlIGZvciBlYWNoIGJpdCBsZW5ndGggKi9cbiAgdmFyIGNvZGUgPSAwOyAgICAgICAgICAgICAgLyogcnVubmluZyBjb2RlIHZhbHVlICovXG4gIHZhciBiaXRzOyAgICAgICAgICAgICAgICAgIC8qIGJpdCBpbmRleCAqL1xuICB2YXIgbjsgICAgICAgICAgICAgICAgICAgICAvKiBjb2RlIGluZGV4ICovXG5cbiAgLyogVGhlIGRpc3RyaWJ1dGlvbiBjb3VudHMgYXJlIGZpcnN0IHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGNvZGUgdmFsdWVzXG4gICAqIHdpdGhvdXQgYml0IHJldmVyc2FsLlxuICAgKi9cbiAgZm9yIChiaXRzID0gMTsgYml0cyA8PSBNQVhfQklUUzsgYml0cysrKSB7XG4gICAgbmV4dF9jb2RlW2JpdHNdID0gY29kZSA9IChjb2RlICsgYmxfY291bnRbYml0cyAtIDFdKSA8PCAxO1xuICB9XG4gIC8qIENoZWNrIHRoYXQgdGhlIGJpdCBjb3VudHMgaW4gYmxfY291bnQgYXJlIGNvbnNpc3RlbnQuIFRoZSBsYXN0IGNvZGVcbiAgICogbXVzdCBiZSBhbGwgb25lcy5cbiAgICovXG4gIC8vQXNzZXJ0IChjb2RlICsgYmxfY291bnRbTUFYX0JJVFNdLTEgPT0gKDE8PE1BWF9CSVRTKS0xLFxuICAvLyAgICAgICAgXCJpbmNvbnNpc3RlbnQgYml0IGNvdW50c1wiKTtcbiAgLy9UcmFjZXYoKHN0ZGVycixcIlxcbmdlbl9jb2RlczogbWF4X2NvZGUgJWQgXCIsIG1heF9jb2RlKSk7XG5cbiAgZm9yIChuID0gMDsgIG4gPD0gbWF4X2NvZGU7IG4rKykge1xuICAgIHZhciBsZW4gPSB0cmVlW24gKiAyICsgMV0vKi5MZW4qLztcbiAgICBpZiAobGVuID09PSAwKSB7IGNvbnRpbnVlOyB9XG4gICAgLyogTm93IHJldmVyc2UgdGhlIGJpdHMgKi9cbiAgICB0cmVlW24gKiAyXS8qLkNvZGUqLyA9IGJpX3JldmVyc2UobmV4dF9jb2RlW2xlbl0rKywgbGVuKTtcblxuICAgIC8vVHJhY2Vjdih0cmVlICE9IHN0YXRpY19sdHJlZSwgKHN0ZGVycixcIlxcbm4gJTNkICVjIGwgJTJkIGMgJTR4ICgleCkgXCIsXG4gICAgLy8gICAgIG4sIChpc2dyYXBoKG4pID8gbiA6ICcgJyksIGxlbiwgdHJlZVtuXS5Db2RlLCBuZXh0X2NvZGVbbGVuXS0xKSk7XG4gIH1cbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEluaXRpYWxpemUgdGhlIHZhcmlvdXMgJ2NvbnN0YW50JyB0YWJsZXMuXG4gKi9cbmZ1bmN0aW9uIHRyX3N0YXRpY19pbml0KCkge1xuICB2YXIgbjsgICAgICAgIC8qIGl0ZXJhdGVzIG92ZXIgdHJlZSBlbGVtZW50cyAqL1xuICB2YXIgYml0czsgICAgIC8qIGJpdCBjb3VudGVyICovXG4gIHZhciBsZW5ndGg7ICAgLyogbGVuZ3RoIHZhbHVlICovXG4gIHZhciBjb2RlOyAgICAgLyogY29kZSB2YWx1ZSAqL1xuICB2YXIgZGlzdDsgICAgIC8qIGRpc3RhbmNlIGluZGV4ICovXG4gIHZhciBibF9jb3VudCA9IG5ldyBBcnJheShNQVhfQklUUyArIDEpO1xuICAvKiBudW1iZXIgb2YgY29kZXMgYXQgZWFjaCBiaXQgbGVuZ3RoIGZvciBhbiBvcHRpbWFsIHRyZWUgKi9cblxuICAvLyBkbyBjaGVjayBpbiBfdHJfaW5pdCgpXG4gIC8vaWYgKHN0YXRpY19pbml0X2RvbmUpIHJldHVybjtcblxuICAvKiBGb3Igc29tZSBlbWJlZGRlZCB0YXJnZXRzLCBnbG9iYWwgdmFyaWFibGVzIGFyZSBub3QgaW5pdGlhbGl6ZWQ6ICovXG4vKiNpZmRlZiBOT19JTklUX0dMT0JBTF9QT0lOVEVSU1xuICBzdGF0aWNfbF9kZXNjLnN0YXRpY190cmVlID0gc3RhdGljX2x0cmVlO1xuICBzdGF0aWNfbF9kZXNjLmV4dHJhX2JpdHMgPSBleHRyYV9sYml0cztcbiAgc3RhdGljX2RfZGVzYy5zdGF0aWNfdHJlZSA9IHN0YXRpY19kdHJlZTtcbiAgc3RhdGljX2RfZGVzYy5leHRyYV9iaXRzID0gZXh0cmFfZGJpdHM7XG4gIHN0YXRpY19ibF9kZXNjLmV4dHJhX2JpdHMgPSBleHRyYV9ibGJpdHM7XG4jZW5kaWYqL1xuXG4gIC8qIEluaXRpYWxpemUgdGhlIG1hcHBpbmcgbGVuZ3RoICgwLi4yNTUpIC0+IGxlbmd0aCBjb2RlICgwLi4yOCkgKi9cbiAgbGVuZ3RoID0gMDtcbiAgZm9yIChjb2RlID0gMDsgY29kZSA8IExFTkdUSF9DT0RFUyAtIDE7IGNvZGUrKykge1xuICAgIGJhc2VfbGVuZ3RoW2NvZGVdID0gbGVuZ3RoO1xuICAgIGZvciAobiA9IDA7IG4gPCAoMSA8PCBleHRyYV9sYml0c1tjb2RlXSk7IG4rKykge1xuICAgICAgX2xlbmd0aF9jb2RlW2xlbmd0aCsrXSA9IGNvZGU7XG4gICAgfVxuICB9XG4gIC8vQXNzZXJ0IChsZW5ndGggPT0gMjU2LCBcInRyX3N0YXRpY19pbml0OiBsZW5ndGggIT0gMjU2XCIpO1xuICAvKiBOb3RlIHRoYXQgdGhlIGxlbmd0aCAyNTUgKG1hdGNoIGxlbmd0aCAyNTgpIGNhbiBiZSByZXByZXNlbnRlZFxuICAgKiBpbiB0d28gZGlmZmVyZW50IHdheXM6IGNvZGUgMjg0ICsgNSBiaXRzIG9yIGNvZGUgMjg1LCBzbyB3ZVxuICAgKiBvdmVyd3JpdGUgbGVuZ3RoX2NvZGVbMjU1XSB0byB1c2UgdGhlIGJlc3QgZW5jb2Rpbmc6XG4gICAqL1xuICBfbGVuZ3RoX2NvZGVbbGVuZ3RoIC0gMV0gPSBjb2RlO1xuXG4gIC8qIEluaXRpYWxpemUgdGhlIG1hcHBpbmcgZGlzdCAoMC4uMzJLKSAtPiBkaXN0IGNvZGUgKDAuLjI5KSAqL1xuICBkaXN0ID0gMDtcbiAgZm9yIChjb2RlID0gMDsgY29kZSA8IDE2OyBjb2RlKyspIHtcbiAgICBiYXNlX2Rpc3RbY29kZV0gPSBkaXN0O1xuICAgIGZvciAobiA9IDA7IG4gPCAoMSA8PCBleHRyYV9kYml0c1tjb2RlXSk7IG4rKykge1xuICAgICAgX2Rpc3RfY29kZVtkaXN0KytdID0gY29kZTtcbiAgICB9XG4gIH1cbiAgLy9Bc3NlcnQgKGRpc3QgPT0gMjU2LCBcInRyX3N0YXRpY19pbml0OiBkaXN0ICE9IDI1NlwiKTtcbiAgZGlzdCA+Pj0gNzsgLyogZnJvbSBub3cgb24sIGFsbCBkaXN0YW5jZXMgYXJlIGRpdmlkZWQgYnkgMTI4ICovXG4gIGZvciAoOyBjb2RlIDwgRF9DT0RFUzsgY29kZSsrKSB7XG4gICAgYmFzZV9kaXN0W2NvZGVdID0gZGlzdCA8PCA3O1xuICAgIGZvciAobiA9IDA7IG4gPCAoMSA8PCAoZXh0cmFfZGJpdHNbY29kZV0gLSA3KSk7IG4rKykge1xuICAgICAgX2Rpc3RfY29kZVsyNTYgKyBkaXN0KytdID0gY29kZTtcbiAgICB9XG4gIH1cbiAgLy9Bc3NlcnQgKGRpc3QgPT0gMjU2LCBcInRyX3N0YXRpY19pbml0OiAyNTYrZGlzdCAhPSA1MTJcIik7XG5cbiAgLyogQ29uc3RydWN0IHRoZSBjb2RlcyBvZiB0aGUgc3RhdGljIGxpdGVyYWwgdHJlZSAqL1xuICBmb3IgKGJpdHMgPSAwOyBiaXRzIDw9IE1BWF9CSVRTOyBiaXRzKyspIHtcbiAgICBibF9jb3VudFtiaXRzXSA9IDA7XG4gIH1cblxuICBuID0gMDtcbiAgd2hpbGUgKG4gPD0gMTQzKSB7XG4gICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDg7XG4gICAgbisrO1xuICAgIGJsX2NvdW50WzhdKys7XG4gIH1cbiAgd2hpbGUgKG4gPD0gMjU1KSB7XG4gICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDk7XG4gICAgbisrO1xuICAgIGJsX2NvdW50WzldKys7XG4gIH1cbiAgd2hpbGUgKG4gPD0gMjc5KSB7XG4gICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDc7XG4gICAgbisrO1xuICAgIGJsX2NvdW50WzddKys7XG4gIH1cbiAgd2hpbGUgKG4gPD0gMjg3KSB7XG4gICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDg7XG4gICAgbisrO1xuICAgIGJsX2NvdW50WzhdKys7XG4gIH1cbiAgLyogQ29kZXMgMjg2IGFuZCAyODcgZG8gbm90IGV4aXN0LCBidXQgd2UgbXVzdCBpbmNsdWRlIHRoZW0gaW4gdGhlXG4gICAqIHRyZWUgY29uc3RydWN0aW9uIHRvIGdldCBhIGNhbm9uaWNhbCBIdWZmbWFuIHRyZWUgKGxvbmdlc3QgY29kZVxuICAgKiBhbGwgb25lcylcbiAgICovXG4gIGdlbl9jb2RlcyhzdGF0aWNfbHRyZWUsIExfQ09ERVMgKyAxLCBibF9jb3VudCk7XG5cbiAgLyogVGhlIHN0YXRpYyBkaXN0YW5jZSB0cmVlIGlzIHRyaXZpYWw6ICovXG4gIGZvciAobiA9IDA7IG4gPCBEX0NPREVTOyBuKyspIHtcbiAgICBzdGF0aWNfZHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gNTtcbiAgICBzdGF0aWNfZHRyZWVbbiAqIDJdLyouQ29kZSovID0gYmlfcmV2ZXJzZShuLCA1KTtcbiAgfVxuXG4gIC8vIE5vdyBkYXRhIHJlYWR5IGFuZCB3ZSBjYW4gaW5pdCBzdGF0aWMgdHJlZXNcbiAgc3RhdGljX2xfZGVzYyA9IG5ldyBTdGF0aWNUcmVlRGVzYyhzdGF0aWNfbHRyZWUsIGV4dHJhX2xiaXRzLCBMSVRFUkFMUyArIDEsIExfQ09ERVMsIE1BWF9CSVRTKTtcbiAgc3RhdGljX2RfZGVzYyA9IG5ldyBTdGF0aWNUcmVlRGVzYyhzdGF0aWNfZHRyZWUsIGV4dHJhX2RiaXRzLCAwLCAgICAgICAgICBEX0NPREVTLCBNQVhfQklUUyk7XG4gIHN0YXRpY19ibF9kZXNjID0gbmV3IFN0YXRpY1RyZWVEZXNjKG5ldyBBcnJheSgwKSwgZXh0cmFfYmxiaXRzLCAwLCAgICAgICAgIEJMX0NPREVTLCBNQVhfQkxfQklUUyk7XG5cbiAgLy9zdGF0aWNfaW5pdF9kb25lID0gdHJ1ZTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEluaXRpYWxpemUgYSBuZXcgYmxvY2suXG4gKi9cbmZ1bmN0aW9uIGluaXRfYmxvY2socykge1xuICB2YXIgbjsgLyogaXRlcmF0ZXMgb3ZlciB0cmVlIGVsZW1lbnRzICovXG5cbiAgLyogSW5pdGlhbGl6ZSB0aGUgdHJlZXMuICovXG4gIGZvciAobiA9IDA7IG4gPCBMX0NPREVTOyAgbisrKSB7IHMuZHluX2x0cmVlW24gKiAyXS8qLkZyZXEqLyA9IDA7IH1cbiAgZm9yIChuID0gMDsgbiA8IERfQ09ERVM7ICBuKyspIHsgcy5keW5fZHRyZWVbbiAqIDJdLyouRnJlcSovID0gMDsgfVxuICBmb3IgKG4gPSAwOyBuIDwgQkxfQ09ERVM7IG4rKykgeyBzLmJsX3RyZWVbbiAqIDJdLyouRnJlcSovID0gMDsgfVxuXG4gIHMuZHluX2x0cmVlW0VORF9CTE9DSyAqIDJdLyouRnJlcSovID0gMTtcbiAgcy5vcHRfbGVuID0gcy5zdGF0aWNfbGVuID0gMDtcbiAgcy5sYXN0X2xpdCA9IHMubWF0Y2hlcyA9IDA7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBGbHVzaCB0aGUgYml0IGJ1ZmZlciBhbmQgYWxpZ24gdGhlIG91dHB1dCBvbiBhIGJ5dGUgYm91bmRhcnlcbiAqL1xuZnVuY3Rpb24gYmlfd2luZHVwKHMpXG57XG4gIGlmIChzLmJpX3ZhbGlkID4gOCkge1xuICAgIHB1dF9zaG9ydChzLCBzLmJpX2J1Zik7XG4gIH0gZWxzZSBpZiAocy5iaV92YWxpZCA+IDApIHtcbiAgICAvL3B1dF9ieXRlKHMsIChCeXRlKXMtPmJpX2J1Zik7XG4gICAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSBzLmJpX2J1ZjtcbiAgfVxuICBzLmJpX2J1ZiA9IDA7XG4gIHMuYmlfdmFsaWQgPSAwO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvcHkgYSBzdG9yZWQgYmxvY2ssIHN0b3JpbmcgZmlyc3QgdGhlIGxlbmd0aCBhbmQgaXRzXG4gKiBvbmUncyBjb21wbGVtZW50IGlmIHJlcXVlc3RlZC5cbiAqL1xuZnVuY3Rpb24gY29weV9ibG9jayhzLCBidWYsIGxlbiwgaGVhZGVyKVxuLy9EZWZsYXRlU3RhdGUgKnM7XG4vL2NoYXJmICAgICpidWY7ICAgIC8qIHRoZSBpbnB1dCBkYXRhICovXG4vL3Vuc2lnbmVkIGxlbjsgICAgIC8qIGl0cyBsZW5ndGggKi9cbi8vaW50ICAgICAgaGVhZGVyOyAgLyogdHJ1ZSBpZiBibG9jayBoZWFkZXIgbXVzdCBiZSB3cml0dGVuICovXG57XG4gIGJpX3dpbmR1cChzKTsgICAgICAgIC8qIGFsaWduIG9uIGJ5dGUgYm91bmRhcnkgKi9cblxuICBpZiAoaGVhZGVyKSB7XG4gICAgcHV0X3Nob3J0KHMsIGxlbik7XG4gICAgcHV0X3Nob3J0KHMsIH5sZW4pO1xuICB9XG4vLyAgd2hpbGUgKGxlbi0tKSB7XG4vLyAgICBwdXRfYnl0ZShzLCAqYnVmKyspO1xuLy8gIH1cbiAgdXRpbHMuYXJyYXlTZXQocy5wZW5kaW5nX2J1Ziwgcy53aW5kb3csIGJ1ZiwgbGVuLCBzLnBlbmRpbmcpO1xuICBzLnBlbmRpbmcgKz0gbGVuO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvbXBhcmVzIHRvIHN1YnRyZWVzLCB1c2luZyB0aGUgdHJlZSBkZXB0aCBhcyB0aWUgYnJlYWtlciB3aGVuXG4gKiB0aGUgc3VidHJlZXMgaGF2ZSBlcXVhbCBmcmVxdWVuY3kuIFRoaXMgbWluaW1pemVzIHRoZSB3b3JzdCBjYXNlIGxlbmd0aC5cbiAqL1xuZnVuY3Rpb24gc21hbGxlcih0cmVlLCBuLCBtLCBkZXB0aCkge1xuICB2YXIgX24yID0gbiAqIDI7XG4gIHZhciBfbTIgPSBtICogMjtcbiAgcmV0dXJuICh0cmVlW19uMl0vKi5GcmVxKi8gPCB0cmVlW19tMl0vKi5GcmVxKi8gfHxcbiAgICAgICAgICh0cmVlW19uMl0vKi5GcmVxKi8gPT09IHRyZWVbX20yXS8qLkZyZXEqLyAmJiBkZXB0aFtuXSA8PSBkZXB0aFttXSkpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFJlc3RvcmUgdGhlIGhlYXAgcHJvcGVydHkgYnkgbW92aW5nIGRvd24gdGhlIHRyZWUgc3RhcnRpbmcgYXQgbm9kZSBrLFxuICogZXhjaGFuZ2luZyBhIG5vZGUgd2l0aCB0aGUgc21hbGxlc3Qgb2YgaXRzIHR3byBzb25zIGlmIG5lY2Vzc2FyeSwgc3RvcHBpbmdcbiAqIHdoZW4gdGhlIGhlYXAgcHJvcGVydHkgaXMgcmUtZXN0YWJsaXNoZWQgKGVhY2ggZmF0aGVyIHNtYWxsZXIgdGhhbiBpdHNcbiAqIHR3byBzb25zKS5cbiAqL1xuZnVuY3Rpb24gcHFkb3duaGVhcChzLCB0cmVlLCBrKVxuLy8gICAgZGVmbGF0ZV9zdGF0ZSAqcztcbi8vICAgIGN0X2RhdGEgKnRyZWU7ICAvKiB0aGUgdHJlZSB0byByZXN0b3JlICovXG4vLyAgICBpbnQgazsgICAgICAgICAgICAgICAvKiBub2RlIHRvIG1vdmUgZG93biAqL1xue1xuICB2YXIgdiA9IHMuaGVhcFtrXTtcbiAgdmFyIGogPSBrIDw8IDE7ICAvKiBsZWZ0IHNvbiBvZiBrICovXG4gIHdoaWxlIChqIDw9IHMuaGVhcF9sZW4pIHtcbiAgICAvKiBTZXQgaiB0byB0aGUgc21hbGxlc3Qgb2YgdGhlIHR3byBzb25zOiAqL1xuICAgIGlmIChqIDwgcy5oZWFwX2xlbiAmJlxuICAgICAgc21hbGxlcih0cmVlLCBzLmhlYXBbaiArIDFdLCBzLmhlYXBbal0sIHMuZGVwdGgpKSB7XG4gICAgICBqKys7XG4gICAgfVxuICAgIC8qIEV4aXQgaWYgdiBpcyBzbWFsbGVyIHRoYW4gYm90aCBzb25zICovXG4gICAgaWYgKHNtYWxsZXIodHJlZSwgdiwgcy5oZWFwW2pdLCBzLmRlcHRoKSkgeyBicmVhazsgfVxuXG4gICAgLyogRXhjaGFuZ2UgdiB3aXRoIHRoZSBzbWFsbGVzdCBzb24gKi9cbiAgICBzLmhlYXBba10gPSBzLmhlYXBbal07XG4gICAgayA9IGo7XG5cbiAgICAvKiBBbmQgY29udGludWUgZG93biB0aGUgdHJlZSwgc2V0dGluZyBqIHRvIHRoZSBsZWZ0IHNvbiBvZiBrICovXG4gICAgaiA8PD0gMTtcbiAgfVxuICBzLmhlYXBba10gPSB2O1xufVxuXG5cbi8vIGlubGluZWQgbWFudWFsbHlcbi8vIHZhciBTTUFMTEVTVCA9IDE7XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2VuZCB0aGUgYmxvY2sgZGF0YSBjb21wcmVzc2VkIHVzaW5nIHRoZSBnaXZlbiBIdWZmbWFuIHRyZWVzXG4gKi9cbmZ1bmN0aW9uIGNvbXByZXNzX2Jsb2NrKHMsIGx0cmVlLCBkdHJlZSlcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICBjb25zdCBjdF9kYXRhICpsdHJlZTsgLyogbGl0ZXJhbCB0cmVlICovXG4vLyAgICBjb25zdCBjdF9kYXRhICpkdHJlZTsgLyogZGlzdGFuY2UgdHJlZSAqL1xue1xuICB2YXIgZGlzdDsgICAgICAgICAgIC8qIGRpc3RhbmNlIG9mIG1hdGNoZWQgc3RyaW5nICovXG4gIHZhciBsYzsgICAgICAgICAgICAgLyogbWF0Y2ggbGVuZ3RoIG9yIHVubWF0Y2hlZCBjaGFyIChpZiBkaXN0ID09IDApICovXG4gIHZhciBseCA9IDA7ICAgICAgICAgLyogcnVubmluZyBpbmRleCBpbiBsX2J1ZiAqL1xuICB2YXIgY29kZTsgICAgICAgICAgIC8qIHRoZSBjb2RlIHRvIHNlbmQgKi9cbiAgdmFyIGV4dHJhOyAgICAgICAgICAvKiBudW1iZXIgb2YgZXh0cmEgYml0cyB0byBzZW5kICovXG5cbiAgaWYgKHMubGFzdF9saXQgIT09IDApIHtcbiAgICBkbyB7XG4gICAgICBkaXN0ID0gKHMucGVuZGluZ19idWZbcy5kX2J1ZiArIGx4ICogMl0gPDwgOCkgfCAocy5wZW5kaW5nX2J1ZltzLmRfYnVmICsgbHggKiAyICsgMV0pO1xuICAgICAgbGMgPSBzLnBlbmRpbmdfYnVmW3MubF9idWYgKyBseF07XG4gICAgICBseCsrO1xuXG4gICAgICBpZiAoZGlzdCA9PT0gMCkge1xuICAgICAgICBzZW5kX2NvZGUocywgbGMsIGx0cmVlKTsgLyogc2VuZCBhIGxpdGVyYWwgYnl0ZSAqL1xuICAgICAgICAvL1RyYWNlY3YoaXNncmFwaChsYyksIChzdGRlcnIsXCIgJyVjJyBcIiwgbGMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIEhlcmUsIGxjIGlzIHRoZSBtYXRjaCBsZW5ndGggLSBNSU5fTUFUQ0ggKi9cbiAgICAgICAgY29kZSA9IF9sZW5ndGhfY29kZVtsY107XG4gICAgICAgIHNlbmRfY29kZShzLCBjb2RlICsgTElURVJBTFMgKyAxLCBsdHJlZSk7IC8qIHNlbmQgdGhlIGxlbmd0aCBjb2RlICovXG4gICAgICAgIGV4dHJhID0gZXh0cmFfbGJpdHNbY29kZV07XG4gICAgICAgIGlmIChleHRyYSAhPT0gMCkge1xuICAgICAgICAgIGxjIC09IGJhc2VfbGVuZ3RoW2NvZGVdO1xuICAgICAgICAgIHNlbmRfYml0cyhzLCBsYywgZXh0cmEpOyAgICAgICAvKiBzZW5kIHRoZSBleHRyYSBsZW5ndGggYml0cyAqL1xuICAgICAgICB9XG4gICAgICAgIGRpc3QtLTsgLyogZGlzdCBpcyBub3cgdGhlIG1hdGNoIGRpc3RhbmNlIC0gMSAqL1xuICAgICAgICBjb2RlID0gZF9jb2RlKGRpc3QpO1xuICAgICAgICAvL0Fzc2VydCAoY29kZSA8IERfQ09ERVMsIFwiYmFkIGRfY29kZVwiKTtcblxuICAgICAgICBzZW5kX2NvZGUocywgY29kZSwgZHRyZWUpOyAgICAgICAvKiBzZW5kIHRoZSBkaXN0YW5jZSBjb2RlICovXG4gICAgICAgIGV4dHJhID0gZXh0cmFfZGJpdHNbY29kZV07XG4gICAgICAgIGlmIChleHRyYSAhPT0gMCkge1xuICAgICAgICAgIGRpc3QgLT0gYmFzZV9kaXN0W2NvZGVdO1xuICAgICAgICAgIHNlbmRfYml0cyhzLCBkaXN0LCBleHRyYSk7ICAgLyogc2VuZCB0aGUgZXh0cmEgZGlzdGFuY2UgYml0cyAqL1xuICAgICAgICB9XG4gICAgICB9IC8qIGxpdGVyYWwgb3IgbWF0Y2ggcGFpciA/ICovXG5cbiAgICAgIC8qIENoZWNrIHRoYXQgdGhlIG92ZXJsYXkgYmV0d2VlbiBwZW5kaW5nX2J1ZiBhbmQgZF9idWYrbF9idWYgaXMgb2s6ICovXG4gICAgICAvL0Fzc2VydCgodUludCkocy0+cGVuZGluZykgPCBzLT5saXRfYnVmc2l6ZSArIDIqbHgsXG4gICAgICAvLyAgICAgICBcInBlbmRpbmdCdWYgb3ZlcmZsb3dcIik7XG5cbiAgICB9IHdoaWxlIChseCA8IHMubGFzdF9saXQpO1xuICB9XG5cbiAgc2VuZF9jb2RlKHMsIEVORF9CTE9DSywgbHRyZWUpO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29uc3RydWN0IG9uZSBIdWZmbWFuIHRyZWUgYW5kIGFzc2lnbnMgdGhlIGNvZGUgYml0IHN0cmluZ3MgYW5kIGxlbmd0aHMuXG4gKiBVcGRhdGUgdGhlIHRvdGFsIGJpdCBsZW5ndGggZm9yIHRoZSBjdXJyZW50IGJsb2NrLlxuICogSU4gYXNzZXJ0aW9uOiB0aGUgZmllbGQgZnJlcSBpcyBzZXQgZm9yIGFsbCB0cmVlIGVsZW1lbnRzLlxuICogT1VUIGFzc2VydGlvbnM6IHRoZSBmaWVsZHMgbGVuIGFuZCBjb2RlIGFyZSBzZXQgdG8gdGhlIG9wdGltYWwgYml0IGxlbmd0aFxuICogICAgIGFuZCBjb3JyZXNwb25kaW5nIGNvZGUuIFRoZSBsZW5ndGggb3B0X2xlbiBpcyB1cGRhdGVkOyBzdGF0aWNfbGVuIGlzXG4gKiAgICAgYWxzbyB1cGRhdGVkIGlmIHN0cmVlIGlzIG5vdCBudWxsLiBUaGUgZmllbGQgbWF4X2NvZGUgaXMgc2V0LlxuICovXG5mdW5jdGlvbiBidWlsZF90cmVlKHMsIGRlc2MpXG4vLyAgICBkZWZsYXRlX3N0YXRlICpzO1xuLy8gICAgdHJlZV9kZXNjICpkZXNjOyAvKiB0aGUgdHJlZSBkZXNjcmlwdG9yICovXG57XG4gIHZhciB0cmVlICAgICA9IGRlc2MuZHluX3RyZWU7XG4gIHZhciBzdHJlZSAgICA9IGRlc2Muc3RhdF9kZXNjLnN0YXRpY190cmVlO1xuICB2YXIgaGFzX3N0cmVlID0gZGVzYy5zdGF0X2Rlc2MuaGFzX3N0cmVlO1xuICB2YXIgZWxlbXMgICAgPSBkZXNjLnN0YXRfZGVzYy5lbGVtcztcbiAgdmFyIG4sIG07ICAgICAgICAgIC8qIGl0ZXJhdGUgb3ZlciBoZWFwIGVsZW1lbnRzICovXG4gIHZhciBtYXhfY29kZSA9IC0xOyAvKiBsYXJnZXN0IGNvZGUgd2l0aCBub24gemVybyBmcmVxdWVuY3kgKi9cbiAgdmFyIG5vZGU7ICAgICAgICAgIC8qIG5ldyBub2RlIGJlaW5nIGNyZWF0ZWQgKi9cblxuICAvKiBDb25zdHJ1Y3QgdGhlIGluaXRpYWwgaGVhcCwgd2l0aCBsZWFzdCBmcmVxdWVudCBlbGVtZW50IGluXG4gICAqIGhlYXBbU01BTExFU1RdLiBUaGUgc29ucyBvZiBoZWFwW25dIGFyZSBoZWFwWzIqbl0gYW5kIGhlYXBbMipuKzFdLlxuICAgKiBoZWFwWzBdIGlzIG5vdCB1c2VkLlxuICAgKi9cbiAgcy5oZWFwX2xlbiA9IDA7XG4gIHMuaGVhcF9tYXggPSBIRUFQX1NJWkU7XG5cbiAgZm9yIChuID0gMDsgbiA8IGVsZW1zOyBuKyspIHtcbiAgICBpZiAodHJlZVtuICogMl0vKi5GcmVxKi8gIT09IDApIHtcbiAgICAgIHMuaGVhcFsrK3MuaGVhcF9sZW5dID0gbWF4X2NvZGUgPSBuO1xuICAgICAgcy5kZXB0aFtuXSA9IDA7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdHJlZVtuICogMiArIDFdLyouTGVuKi8gPSAwO1xuICAgIH1cbiAgfVxuXG4gIC8qIFRoZSBwa3ppcCBmb3JtYXQgcmVxdWlyZXMgdGhhdCBhdCBsZWFzdCBvbmUgZGlzdGFuY2UgY29kZSBleGlzdHMsXG4gICAqIGFuZCB0aGF0IGF0IGxlYXN0IG9uZSBiaXQgc2hvdWxkIGJlIHNlbnQgZXZlbiBpZiB0aGVyZSBpcyBvbmx5IG9uZVxuICAgKiBwb3NzaWJsZSBjb2RlLiBTbyB0byBhdm9pZCBzcGVjaWFsIGNoZWNrcyBsYXRlciBvbiB3ZSBmb3JjZSBhdCBsZWFzdFxuICAgKiB0d28gY29kZXMgb2Ygbm9uIHplcm8gZnJlcXVlbmN5LlxuICAgKi9cbiAgd2hpbGUgKHMuaGVhcF9sZW4gPCAyKSB7XG4gICAgbm9kZSA9IHMuaGVhcFsrK3MuaGVhcF9sZW5dID0gKG1heF9jb2RlIDwgMiA/ICsrbWF4X2NvZGUgOiAwKTtcbiAgICB0cmVlW25vZGUgKiAyXS8qLkZyZXEqLyA9IDE7XG4gICAgcy5kZXB0aFtub2RlXSA9IDA7XG4gICAgcy5vcHRfbGVuLS07XG5cbiAgICBpZiAoaGFzX3N0cmVlKSB7XG4gICAgICBzLnN0YXRpY19sZW4gLT0gc3RyZWVbbm9kZSAqIDIgKyAxXS8qLkxlbiovO1xuICAgIH1cbiAgICAvKiBub2RlIGlzIDAgb3IgMSBzbyBpdCBkb2VzIG5vdCBoYXZlIGV4dHJhIGJpdHMgKi9cbiAgfVxuICBkZXNjLm1heF9jb2RlID0gbWF4X2NvZGU7XG5cbiAgLyogVGhlIGVsZW1lbnRzIGhlYXBbaGVhcF9sZW4vMisxIC4uIGhlYXBfbGVuXSBhcmUgbGVhdmVzIG9mIHRoZSB0cmVlLFxuICAgKiBlc3RhYmxpc2ggc3ViLWhlYXBzIG9mIGluY3JlYXNpbmcgbGVuZ3RoczpcbiAgICovXG4gIGZvciAobiA9IChzLmhlYXBfbGVuID4+IDEvKmludCAvMiovKTsgbiA+PSAxOyBuLS0pIHsgcHFkb3duaGVhcChzLCB0cmVlLCBuKTsgfVxuXG4gIC8qIENvbnN0cnVjdCB0aGUgSHVmZm1hbiB0cmVlIGJ5IHJlcGVhdGVkbHkgY29tYmluaW5nIHRoZSBsZWFzdCB0d29cbiAgICogZnJlcXVlbnQgbm9kZXMuXG4gICAqL1xuICBub2RlID0gZWxlbXM7ICAgICAgICAgICAgICAvKiBuZXh0IGludGVybmFsIG5vZGUgb2YgdGhlIHRyZWUgKi9cbiAgZG8ge1xuICAgIC8vcHFyZW1vdmUocywgdHJlZSwgbik7ICAvKiBuID0gbm9kZSBvZiBsZWFzdCBmcmVxdWVuY3kgKi9cbiAgICAvKioqIHBxcmVtb3ZlICoqKi9cbiAgICBuID0gcy5oZWFwWzEvKlNNQUxMRVNUKi9dO1xuICAgIHMuaGVhcFsxLypTTUFMTEVTVCovXSA9IHMuaGVhcFtzLmhlYXBfbGVuLS1dO1xuICAgIHBxZG93bmhlYXAocywgdHJlZSwgMS8qU01BTExFU1QqLyk7XG4gICAgLyoqKi9cblxuICAgIG0gPSBzLmhlYXBbMS8qU01BTExFU1QqL107IC8qIG0gPSBub2RlIG9mIG5leHQgbGVhc3QgZnJlcXVlbmN5ICovXG5cbiAgICBzLmhlYXBbLS1zLmhlYXBfbWF4XSA9IG47IC8qIGtlZXAgdGhlIG5vZGVzIHNvcnRlZCBieSBmcmVxdWVuY3kgKi9cbiAgICBzLmhlYXBbLS1zLmhlYXBfbWF4XSA9IG07XG5cbiAgICAvKiBDcmVhdGUgYSBuZXcgbm9kZSBmYXRoZXIgb2YgbiBhbmQgbSAqL1xuICAgIHRyZWVbbm9kZSAqIDJdLyouRnJlcSovID0gdHJlZVtuICogMl0vKi5GcmVxKi8gKyB0cmVlW20gKiAyXS8qLkZyZXEqLztcbiAgICBzLmRlcHRoW25vZGVdID0gKHMuZGVwdGhbbl0gPj0gcy5kZXB0aFttXSA/IHMuZGVwdGhbbl0gOiBzLmRlcHRoW21dKSArIDE7XG4gICAgdHJlZVtuICogMiArIDFdLyouRGFkKi8gPSB0cmVlW20gKiAyICsgMV0vKi5EYWQqLyA9IG5vZGU7XG5cbiAgICAvKiBhbmQgaW5zZXJ0IHRoZSBuZXcgbm9kZSBpbiB0aGUgaGVhcCAqL1xuICAgIHMuaGVhcFsxLypTTUFMTEVTVCovXSA9IG5vZGUrKztcbiAgICBwcWRvd25oZWFwKHMsIHRyZWUsIDEvKlNNQUxMRVNUKi8pO1xuXG4gIH0gd2hpbGUgKHMuaGVhcF9sZW4gPj0gMik7XG5cbiAgcy5oZWFwWy0tcy5oZWFwX21heF0gPSBzLmhlYXBbMS8qU01BTExFU1QqL107XG5cbiAgLyogQXQgdGhpcyBwb2ludCwgdGhlIGZpZWxkcyBmcmVxIGFuZCBkYWQgYXJlIHNldC4gV2UgY2FuIG5vd1xuICAgKiBnZW5lcmF0ZSB0aGUgYml0IGxlbmd0aHMuXG4gICAqL1xuICBnZW5fYml0bGVuKHMsIGRlc2MpO1xuXG4gIC8qIFRoZSBmaWVsZCBsZW4gaXMgbm93IHNldCwgd2UgY2FuIGdlbmVyYXRlIHRoZSBiaXQgY29kZXMgKi9cbiAgZ2VuX2NvZGVzKHRyZWUsIG1heF9jb2RlLCBzLmJsX2NvdW50KTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNjYW4gYSBsaXRlcmFsIG9yIGRpc3RhbmNlIHRyZWUgdG8gZGV0ZXJtaW5lIHRoZSBmcmVxdWVuY2llcyBvZiB0aGUgY29kZXNcbiAqIGluIHRoZSBiaXQgbGVuZ3RoIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIHNjYW5fdHJlZShzLCB0cmVlLCBtYXhfY29kZSlcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICBjdF9kYXRhICp0cmVlOyAgIC8qIHRoZSB0cmVlIHRvIGJlIHNjYW5uZWQgKi9cbi8vICAgIGludCBtYXhfY29kZTsgICAgLyogYW5kIGl0cyBsYXJnZXN0IGNvZGUgb2Ygbm9uIHplcm8gZnJlcXVlbmN5ICovXG57XG4gIHZhciBuOyAgICAgICAgICAgICAgICAgICAgIC8qIGl0ZXJhdGVzIG92ZXIgYWxsIHRyZWUgZWxlbWVudHMgKi9cbiAgdmFyIHByZXZsZW4gPSAtMTsgICAgICAgICAgLyogbGFzdCBlbWl0dGVkIGxlbmd0aCAqL1xuICB2YXIgY3VybGVuOyAgICAgICAgICAgICAgICAvKiBsZW5ndGggb2YgY3VycmVudCBjb2RlICovXG5cbiAgdmFyIG5leHRsZW4gPSB0cmVlWzAgKiAyICsgMV0vKi5MZW4qLzsgLyogbGVuZ3RoIG9mIG5leHQgY29kZSAqL1xuXG4gIHZhciBjb3VudCA9IDA7ICAgICAgICAgICAgIC8qIHJlcGVhdCBjb3VudCBvZiB0aGUgY3VycmVudCBjb2RlICovXG4gIHZhciBtYXhfY291bnQgPSA3OyAgICAgICAgIC8qIG1heCByZXBlYXQgY291bnQgKi9cbiAgdmFyIG1pbl9jb3VudCA9IDQ7ICAgICAgICAgLyogbWluIHJlcGVhdCBjb3VudCAqL1xuXG4gIGlmIChuZXh0bGVuID09PSAwKSB7XG4gICAgbWF4X2NvdW50ID0gMTM4O1xuICAgIG1pbl9jb3VudCA9IDM7XG4gIH1cbiAgdHJlZVsobWF4X2NvZGUgKyAxKSAqIDIgKyAxXS8qLkxlbiovID0gMHhmZmZmOyAvKiBndWFyZCAqL1xuXG4gIGZvciAobiA9IDA7IG4gPD0gbWF4X2NvZGU7IG4rKykge1xuICAgIGN1cmxlbiA9IG5leHRsZW47XG4gICAgbmV4dGxlbiA9IHRyZWVbKG4gKyAxKSAqIDIgKyAxXS8qLkxlbiovO1xuXG4gICAgaWYgKCsrY291bnQgPCBtYXhfY291bnQgJiYgY3VybGVuID09PSBuZXh0bGVuKSB7XG4gICAgICBjb250aW51ZTtcblxuICAgIH0gZWxzZSBpZiAoY291bnQgPCBtaW5fY291bnQpIHtcbiAgICAgIHMuYmxfdHJlZVtjdXJsZW4gKiAyXS8qLkZyZXEqLyArPSBjb3VudDtcblxuICAgIH0gZWxzZSBpZiAoY3VybGVuICE9PSAwKSB7XG5cbiAgICAgIGlmIChjdXJsZW4gIT09IHByZXZsZW4pIHsgcy5ibF90cmVlW2N1cmxlbiAqIDJdLyouRnJlcSovKys7IH1cbiAgICAgIHMuYmxfdHJlZVtSRVBfM182ICogMl0vKi5GcmVxKi8rKztcblxuICAgIH0gZWxzZSBpZiAoY291bnQgPD0gMTApIHtcbiAgICAgIHMuYmxfdHJlZVtSRVBaXzNfMTAgKiAyXS8qLkZyZXEqLysrO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHMuYmxfdHJlZVtSRVBaXzExXzEzOCAqIDJdLyouRnJlcSovKys7XG4gICAgfVxuXG4gICAgY291bnQgPSAwO1xuICAgIHByZXZsZW4gPSBjdXJsZW47XG5cbiAgICBpZiAobmV4dGxlbiA9PT0gMCkge1xuICAgICAgbWF4X2NvdW50ID0gMTM4O1xuICAgICAgbWluX2NvdW50ID0gMztcblxuICAgIH0gZWxzZSBpZiAoY3VybGVuID09PSBuZXh0bGVuKSB7XG4gICAgICBtYXhfY291bnQgPSA2O1xuICAgICAgbWluX2NvdW50ID0gMztcblxuICAgIH0gZWxzZSB7XG4gICAgICBtYXhfY291bnQgPSA3O1xuICAgICAgbWluX2NvdW50ID0gNDtcbiAgICB9XG4gIH1cbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNlbmQgYSBsaXRlcmFsIG9yIGRpc3RhbmNlIHRyZWUgaW4gY29tcHJlc3NlZCBmb3JtLCB1c2luZyB0aGUgY29kZXMgaW5cbiAqIGJsX3RyZWUuXG4gKi9cbmZ1bmN0aW9uIHNlbmRfdHJlZShzLCB0cmVlLCBtYXhfY29kZSlcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICBjdF9kYXRhICp0cmVlOyAvKiB0aGUgdHJlZSB0byBiZSBzY2FubmVkICovXG4vLyAgICBpbnQgbWF4X2NvZGU7ICAgICAgIC8qIGFuZCBpdHMgbGFyZ2VzdCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXF1ZW5jeSAqL1xue1xuICB2YXIgbjsgICAgICAgICAgICAgICAgICAgICAvKiBpdGVyYXRlcyBvdmVyIGFsbCB0cmVlIGVsZW1lbnRzICovXG4gIHZhciBwcmV2bGVuID0gLTE7ICAgICAgICAgIC8qIGxhc3QgZW1pdHRlZCBsZW5ndGggKi9cbiAgdmFyIGN1cmxlbjsgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgY29kZSAqL1xuXG4gIHZhciBuZXh0bGVuID0gdHJlZVswICogMiArIDFdLyouTGVuKi87IC8qIGxlbmd0aCBvZiBuZXh0IGNvZGUgKi9cblxuICB2YXIgY291bnQgPSAwOyAgICAgICAgICAgICAvKiByZXBlYXQgY291bnQgb2YgdGhlIGN1cnJlbnQgY29kZSAqL1xuICB2YXIgbWF4X2NvdW50ID0gNzsgICAgICAgICAvKiBtYXggcmVwZWF0IGNvdW50ICovXG4gIHZhciBtaW5fY291bnQgPSA0OyAgICAgICAgIC8qIG1pbiByZXBlYXQgY291bnQgKi9cblxuICAvKiB0cmVlW21heF9jb2RlKzFdLkxlbiA9IC0xOyAqLyAgLyogZ3VhcmQgYWxyZWFkeSBzZXQgKi9cbiAgaWYgKG5leHRsZW4gPT09IDApIHtcbiAgICBtYXhfY291bnQgPSAxMzg7XG4gICAgbWluX2NvdW50ID0gMztcbiAgfVxuXG4gIGZvciAobiA9IDA7IG4gPD0gbWF4X2NvZGU7IG4rKykge1xuICAgIGN1cmxlbiA9IG5leHRsZW47XG4gICAgbmV4dGxlbiA9IHRyZWVbKG4gKyAxKSAqIDIgKyAxXS8qLkxlbiovO1xuXG4gICAgaWYgKCsrY291bnQgPCBtYXhfY291bnQgJiYgY3VybGVuID09PSBuZXh0bGVuKSB7XG4gICAgICBjb250aW51ZTtcblxuICAgIH0gZWxzZSBpZiAoY291bnQgPCBtaW5fY291bnQpIHtcbiAgICAgIGRvIHsgc2VuZF9jb2RlKHMsIGN1cmxlbiwgcy5ibF90cmVlKTsgfSB3aGlsZSAoLS1jb3VudCAhPT0gMCk7XG5cbiAgICB9IGVsc2UgaWYgKGN1cmxlbiAhPT0gMCkge1xuICAgICAgaWYgKGN1cmxlbiAhPT0gcHJldmxlbikge1xuICAgICAgICBzZW5kX2NvZGUocywgY3VybGVuLCBzLmJsX3RyZWUpO1xuICAgICAgICBjb3VudC0tO1xuICAgICAgfVxuICAgICAgLy9Bc3NlcnQoY291bnQgPj0gMyAmJiBjb3VudCA8PSA2LCBcIiAzXzY/XCIpO1xuICAgICAgc2VuZF9jb2RlKHMsIFJFUF8zXzYsIHMuYmxfdHJlZSk7XG4gICAgICBzZW5kX2JpdHMocywgY291bnQgLSAzLCAyKTtcblxuICAgIH0gZWxzZSBpZiAoY291bnQgPD0gMTApIHtcbiAgICAgIHNlbmRfY29kZShzLCBSRVBaXzNfMTAsIHMuYmxfdHJlZSk7XG4gICAgICBzZW5kX2JpdHMocywgY291bnQgLSAzLCAzKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBzZW5kX2NvZGUocywgUkVQWl8xMV8xMzgsIHMuYmxfdHJlZSk7XG4gICAgICBzZW5kX2JpdHMocywgY291bnQgLSAxMSwgNyk7XG4gICAgfVxuXG4gICAgY291bnQgPSAwO1xuICAgIHByZXZsZW4gPSBjdXJsZW47XG4gICAgaWYgKG5leHRsZW4gPT09IDApIHtcbiAgICAgIG1heF9jb3VudCA9IDEzODtcbiAgICAgIG1pbl9jb3VudCA9IDM7XG5cbiAgICB9IGVsc2UgaWYgKGN1cmxlbiA9PT0gbmV4dGxlbikge1xuICAgICAgbWF4X2NvdW50ID0gNjtcbiAgICAgIG1pbl9jb3VudCA9IDM7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgbWF4X2NvdW50ID0gNztcbiAgICAgIG1pbl9jb3VudCA9IDQ7XG4gICAgfVxuICB9XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb25zdHJ1Y3QgdGhlIEh1ZmZtYW4gdHJlZSBmb3IgdGhlIGJpdCBsZW5ndGhzIGFuZCByZXR1cm4gdGhlIGluZGV4IGluXG4gKiBibF9vcmRlciBvZiB0aGUgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgdG8gc2VuZC5cbiAqL1xuZnVuY3Rpb24gYnVpbGRfYmxfdHJlZShzKSB7XG4gIHZhciBtYXhfYmxpbmRleDsgIC8qIGluZGV4IG9mIGxhc3QgYml0IGxlbmd0aCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXEgKi9cblxuICAvKiBEZXRlcm1pbmUgdGhlIGJpdCBsZW5ndGggZnJlcXVlbmNpZXMgZm9yIGxpdGVyYWwgYW5kIGRpc3RhbmNlIHRyZWVzICovXG4gIHNjYW5fdHJlZShzLCBzLmR5bl9sdHJlZSwgcy5sX2Rlc2MubWF4X2NvZGUpO1xuICBzY2FuX3RyZWUocywgcy5keW5fZHRyZWUsIHMuZF9kZXNjLm1heF9jb2RlKTtcblxuICAvKiBCdWlsZCB0aGUgYml0IGxlbmd0aCB0cmVlOiAqL1xuICBidWlsZF90cmVlKHMsIHMuYmxfZGVzYyk7XG4gIC8qIG9wdF9sZW4gbm93IGluY2x1ZGVzIHRoZSBsZW5ndGggb2YgdGhlIHRyZWUgcmVwcmVzZW50YXRpb25zLCBleGNlcHRcbiAgICogdGhlIGxlbmd0aHMgb2YgdGhlIGJpdCBsZW5ndGhzIGNvZGVzIGFuZCB0aGUgNSs1KzQgYml0cyBmb3IgdGhlIGNvdW50cy5cbiAgICovXG5cbiAgLyogRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgYml0IGxlbmd0aCBjb2RlcyB0byBzZW5kLiBUaGUgcGt6aXAgZm9ybWF0XG4gICAqIHJlcXVpcmVzIHRoYXQgYXQgbGVhc3QgNCBiaXQgbGVuZ3RoIGNvZGVzIGJlIHNlbnQuIChhcHBub3RlLnR4dCBzYXlzXG4gICAqIDMgYnV0IHRoZSBhY3R1YWwgdmFsdWUgdXNlZCBpcyA0LilcbiAgICovXG4gIGZvciAobWF4X2JsaW5kZXggPSBCTF9DT0RFUyAtIDE7IG1heF9ibGluZGV4ID49IDM7IG1heF9ibGluZGV4LS0pIHtcbiAgICBpZiAocy5ibF90cmVlW2JsX29yZGVyW21heF9ibGluZGV4XSAqIDIgKyAxXS8qLkxlbiovICE9PSAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgLyogVXBkYXRlIG9wdF9sZW4gdG8gaW5jbHVkZSB0aGUgYml0IGxlbmd0aCB0cmVlIGFuZCBjb3VudHMgKi9cbiAgcy5vcHRfbGVuICs9IDMgKiAobWF4X2JsaW5kZXggKyAxKSArIDUgKyA1ICsgNDtcbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJcXG5keW4gdHJlZXM6IGR5biAlbGQsIHN0YXQgJWxkXCIsXG4gIC8vICAgICAgICBzLT5vcHRfbGVuLCBzLT5zdGF0aWNfbGVuKSk7XG5cbiAgcmV0dXJuIG1heF9ibGluZGV4O1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2VuZCB0aGUgaGVhZGVyIGZvciBhIGJsb2NrIHVzaW5nIGR5bmFtaWMgSHVmZm1hbiB0cmVlczogdGhlIGNvdW50cywgdGhlXG4gKiBsZW5ndGhzIG9mIHRoZSBiaXQgbGVuZ3RoIGNvZGVzLCB0aGUgbGl0ZXJhbCB0cmVlIGFuZCB0aGUgZGlzdGFuY2UgdHJlZS5cbiAqIElOIGFzc2VydGlvbjogbGNvZGVzID49IDI1NywgZGNvZGVzID49IDEsIGJsY29kZXMgPj0gNC5cbiAqL1xuZnVuY3Rpb24gc2VuZF9hbGxfdHJlZXMocywgbGNvZGVzLCBkY29kZXMsIGJsY29kZXMpXG4vLyAgICBkZWZsYXRlX3N0YXRlICpzO1xuLy8gICAgaW50IGxjb2RlcywgZGNvZGVzLCBibGNvZGVzOyAvKiBudW1iZXIgb2YgY29kZXMgZm9yIGVhY2ggdHJlZSAqL1xue1xuICB2YXIgcmFuazsgICAgICAgICAgICAgICAgICAgIC8qIGluZGV4IGluIGJsX29yZGVyICovXG5cbiAgLy9Bc3NlcnQgKGxjb2RlcyA+PSAyNTcgJiYgZGNvZGVzID49IDEgJiYgYmxjb2RlcyA+PSA0LCBcIm5vdCBlbm91Z2ggY29kZXNcIik7XG4gIC8vQXNzZXJ0IChsY29kZXMgPD0gTF9DT0RFUyAmJiBkY29kZXMgPD0gRF9DT0RFUyAmJiBibGNvZGVzIDw9IEJMX0NPREVTLFxuICAvLyAgICAgICAgXCJ0b28gbWFueSBjb2Rlc1wiKTtcbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJcXG5ibCBjb3VudHM6IFwiKSk7XG4gIHNlbmRfYml0cyhzLCBsY29kZXMgLSAyNTcsIDUpOyAvKiBub3QgKzI1NSBhcyBzdGF0ZWQgaW4gYXBwbm90ZS50eHQgKi9cbiAgc2VuZF9iaXRzKHMsIGRjb2RlcyAtIDEsICAgNSk7XG4gIHNlbmRfYml0cyhzLCBibGNvZGVzIC0gNCwgIDQpOyAvKiBub3QgLTMgYXMgc3RhdGVkIGluIGFwcG5vdGUudHh0ICovXG4gIGZvciAocmFuayA9IDA7IHJhbmsgPCBibGNvZGVzOyByYW5rKyspIHtcbiAgICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmJsIGNvZGUgJTJkIFwiLCBibF9vcmRlcltyYW5rXSkpO1xuICAgIHNlbmRfYml0cyhzLCBzLmJsX3RyZWVbYmxfb3JkZXJbcmFua10gKiAyICsgMV0vKi5MZW4qLywgMyk7XG4gIH1cbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJcXG5ibCB0cmVlOiBzZW50ICVsZFwiLCBzLT5iaXRzX3NlbnQpKTtcblxuICBzZW5kX3RyZWUocywgcy5keW5fbHRyZWUsIGxjb2RlcyAtIDEpOyAvKiBsaXRlcmFsIHRyZWUgKi9cbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJcXG5saXQgdHJlZTogc2VudCAlbGRcIiwgcy0+Yml0c19zZW50KSk7XG5cbiAgc2VuZF90cmVlKHMsIHMuZHluX2R0cmVlLCBkY29kZXMgLSAxKTsgLyogZGlzdGFuY2UgdHJlZSAqL1xuICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmRpc3QgdHJlZTogc2VudCAlbGRcIiwgcy0+Yml0c19zZW50KSk7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDaGVjayBpZiB0aGUgZGF0YSB0eXBlIGlzIFRFWFQgb3IgQklOQVJZLCB1c2luZyB0aGUgZm9sbG93aW5nIGFsZ29yaXRobTpcbiAqIC0gVEVYVCBpZiB0aGUgdHdvIGNvbmRpdGlvbnMgYmVsb3cgYXJlIHNhdGlzZmllZDpcbiAqICAgIGEpIFRoZXJlIGFyZSBubyBub24tcG9ydGFibGUgY29udHJvbCBjaGFyYWN0ZXJzIGJlbG9uZ2luZyB0byB0aGVcbiAqICAgICAgIFwiYmxhY2sgbGlzdFwiICgwLi42LCAxNC4uMjUsIDI4Li4zMSkuXG4gKiAgICBiKSBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgcHJpbnRhYmxlIGNoYXJhY3RlciBiZWxvbmdpbmcgdG8gdGhlXG4gKiAgICAgICBcIndoaXRlIGxpc3RcIiAoOSB7VEFCfSwgMTAge0xGfSwgMTMge0NSfSwgMzIuLjI1NSkuXG4gKiAtIEJJTkFSWSBvdGhlcndpc2UuXG4gKiAtIFRoZSBmb2xsb3dpbmcgcGFydGlhbGx5LXBvcnRhYmxlIGNvbnRyb2wgY2hhcmFjdGVycyBmb3JtIGFcbiAqICAgXCJncmF5IGxpc3RcIiB0aGF0IGlzIGlnbm9yZWQgaW4gdGhpcyBkZXRlY3Rpb24gYWxnb3JpdGhtOlxuICogICAoNyB7QkVMfSwgOCB7QlN9LCAxMSB7VlR9LCAxMiB7RkZ9LCAyNiB7U1VCfSwgMjcge0VTQ30pLlxuICogSU4gYXNzZXJ0aW9uOiB0aGUgZmllbGRzIEZyZXEgb2YgZHluX2x0cmVlIGFyZSBzZXQuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdF9kYXRhX3R5cGUocykge1xuICAvKiBibGFja19tYXNrIGlzIHRoZSBiaXQgbWFzayBvZiBibGFjay1saXN0ZWQgYnl0ZXNcbiAgICogc2V0IGJpdHMgMC4uNiwgMTQuLjI1LCBhbmQgMjguLjMxXG4gICAqIDB4ZjNmZmMwN2YgPSBiaW5hcnkgMTExMTAwMTExMTExMTExMTExMDAwMDAwMDExMTExMTFcbiAgICovXG4gIHZhciBibGFja19tYXNrID0gMHhmM2ZmYzA3ZjtcbiAgdmFyIG47XG5cbiAgLyogQ2hlY2sgZm9yIG5vbi10ZXh0dWFsIChcImJsYWNrLWxpc3RlZFwiKSBieXRlcy4gKi9cbiAgZm9yIChuID0gMDsgbiA8PSAzMTsgbisrLCBibGFja19tYXNrID4+Pj0gMSkge1xuICAgIGlmICgoYmxhY2tfbWFzayAmIDEpICYmIChzLmR5bl9sdHJlZVtuICogMl0vKi5GcmVxKi8gIT09IDApKSB7XG4gICAgICByZXR1cm4gWl9CSU5BUlk7XG4gICAgfVxuICB9XG5cbiAgLyogQ2hlY2sgZm9yIHRleHR1YWwgKFwid2hpdGUtbGlzdGVkXCIpIGJ5dGVzLiAqL1xuICBpZiAocy5keW5fbHRyZWVbOSAqIDJdLyouRnJlcSovICE9PSAwIHx8IHMuZHluX2x0cmVlWzEwICogMl0vKi5GcmVxKi8gIT09IDAgfHxcbiAgICAgIHMuZHluX2x0cmVlWzEzICogMl0vKi5GcmVxKi8gIT09IDApIHtcbiAgICByZXR1cm4gWl9URVhUO1xuICB9XG4gIGZvciAobiA9IDMyOyBuIDwgTElURVJBTFM7IG4rKykge1xuICAgIGlmIChzLmR5bl9sdHJlZVtuICogMl0vKi5GcmVxKi8gIT09IDApIHtcbiAgICAgIHJldHVybiBaX1RFWFQ7XG4gICAgfVxuICB9XG5cbiAgLyogVGhlcmUgYXJlIG5vIFwiYmxhY2stbGlzdGVkXCIgb3IgXCJ3aGl0ZS1saXN0ZWRcIiBieXRlczpcbiAgICogdGhpcyBzdHJlYW0gZWl0aGVyIGlzIGVtcHR5IG9yIGhhcyB0b2xlcmF0ZWQgKFwiZ3JheS1saXN0ZWRcIikgYnl0ZXMgb25seS5cbiAgICovXG4gIHJldHVybiBaX0JJTkFSWTtcbn1cblxuXG52YXIgc3RhdGljX2luaXRfZG9uZSA9IGZhbHNlO1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEluaXRpYWxpemUgdGhlIHRyZWUgZGF0YSBzdHJ1Y3R1cmVzIGZvciBhIG5ldyB6bGliIHN0cmVhbS5cbiAqL1xuZnVuY3Rpb24gX3RyX2luaXQocylcbntcblxuICBpZiAoIXN0YXRpY19pbml0X2RvbmUpIHtcbiAgICB0cl9zdGF0aWNfaW5pdCgpO1xuICAgIHN0YXRpY19pbml0X2RvbmUgPSB0cnVlO1xuICB9XG5cbiAgcy5sX2Rlc2MgID0gbmV3IFRyZWVEZXNjKHMuZHluX2x0cmVlLCBzdGF0aWNfbF9kZXNjKTtcbiAgcy5kX2Rlc2MgID0gbmV3IFRyZWVEZXNjKHMuZHluX2R0cmVlLCBzdGF0aWNfZF9kZXNjKTtcbiAgcy5ibF9kZXNjID0gbmV3IFRyZWVEZXNjKHMuYmxfdHJlZSwgc3RhdGljX2JsX2Rlc2MpO1xuXG4gIHMuYmlfYnVmID0gMDtcbiAgcy5iaV92YWxpZCA9IDA7XG5cbiAgLyogSW5pdGlhbGl6ZSB0aGUgZmlyc3QgYmxvY2sgb2YgdGhlIGZpcnN0IGZpbGU6ICovXG4gIGluaXRfYmxvY2socyk7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZW5kIGEgc3RvcmVkIGJsb2NrXG4gKi9cbmZ1bmN0aW9uIF90cl9zdG9yZWRfYmxvY2socywgYnVmLCBzdG9yZWRfbGVuLCBsYXN0KVxuLy9EZWZsYXRlU3RhdGUgKnM7XG4vL2NoYXJmICpidWY7ICAgICAgIC8qIGlucHV0IGJsb2NrICovXG4vL3VsZyBzdG9yZWRfbGVuOyAgIC8qIGxlbmd0aCBvZiBpbnB1dCBibG9jayAqL1xuLy9pbnQgbGFzdDsgICAgICAgICAvKiBvbmUgaWYgdGhpcyBpcyB0aGUgbGFzdCBibG9jayBmb3IgYSBmaWxlICovXG57XG4gIHNlbmRfYml0cyhzLCAoU1RPUkVEX0JMT0NLIDw8IDEpICsgKGxhc3QgPyAxIDogMCksIDMpOyAgICAvKiBzZW5kIGJsb2NrIHR5cGUgKi9cbiAgY29weV9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIHRydWUpOyAvKiB3aXRoIGhlYWRlciAqL1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2VuZCBvbmUgZW1wdHkgc3RhdGljIGJsb2NrIHRvIGdpdmUgZW5vdWdoIGxvb2thaGVhZCBmb3IgaW5mbGF0ZS5cbiAqIFRoaXMgdGFrZXMgMTAgYml0cywgb2Ygd2hpY2ggNyBtYXkgcmVtYWluIGluIHRoZSBiaXQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBfdHJfYWxpZ24ocykge1xuICBzZW5kX2JpdHMocywgU1RBVElDX1RSRUVTIDw8IDEsIDMpO1xuICBzZW5kX2NvZGUocywgRU5EX0JMT0NLLCBzdGF0aWNfbHRyZWUpO1xuICBiaV9mbHVzaChzKTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIERldGVybWluZSB0aGUgYmVzdCBlbmNvZGluZyBmb3IgdGhlIGN1cnJlbnQgYmxvY2s6IGR5bmFtaWMgdHJlZXMsIHN0YXRpY1xuICogdHJlZXMgb3Igc3RvcmUsIGFuZCBvdXRwdXQgdGhlIGVuY29kZWQgYmxvY2sgdG8gdGhlIHppcCBmaWxlLlxuICovXG5mdW5jdGlvbiBfdHJfZmx1c2hfYmxvY2socywgYnVmLCBzdG9yZWRfbGVuLCBsYXN0KVxuLy9EZWZsYXRlU3RhdGUgKnM7XG4vL2NoYXJmICpidWY7ICAgICAgIC8qIGlucHV0IGJsb2NrLCBvciBOVUxMIGlmIHRvbyBvbGQgKi9cbi8vdWxnIHN0b3JlZF9sZW47ICAgLyogbGVuZ3RoIG9mIGlucHV0IGJsb2NrICovXG4vL2ludCBsYXN0OyAgICAgICAgIC8qIG9uZSBpZiB0aGlzIGlzIHRoZSBsYXN0IGJsb2NrIGZvciBhIGZpbGUgKi9cbntcbiAgdmFyIG9wdF9sZW5iLCBzdGF0aWNfbGVuYjsgIC8qIG9wdF9sZW4gYW5kIHN0YXRpY19sZW4gaW4gYnl0ZXMgKi9cbiAgdmFyIG1heF9ibGluZGV4ID0gMDsgICAgICAgIC8qIGluZGV4IG9mIGxhc3QgYml0IGxlbmd0aCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXEgKi9cblxuICAvKiBCdWlsZCB0aGUgSHVmZm1hbiB0cmVlcyB1bmxlc3MgYSBzdG9yZWQgYmxvY2sgaXMgZm9yY2VkICovXG4gIGlmIChzLmxldmVsID4gMCkge1xuXG4gICAgLyogQ2hlY2sgaWYgdGhlIGZpbGUgaXMgYmluYXJ5IG9yIHRleHQgKi9cbiAgICBpZiAocy5zdHJtLmRhdGFfdHlwZSA9PT0gWl9VTktOT1dOKSB7XG4gICAgICBzLnN0cm0uZGF0YV90eXBlID0gZGV0ZWN0X2RhdGFfdHlwZShzKTtcbiAgICB9XG5cbiAgICAvKiBDb25zdHJ1Y3QgdGhlIGxpdGVyYWwgYW5kIGRpc3RhbmNlIHRyZWVzICovXG4gICAgYnVpbGRfdHJlZShzLCBzLmxfZGVzYyk7XG4gICAgLy8gVHJhY2V2KChzdGRlcnIsIFwiXFxubGl0IGRhdGE6IGR5biAlbGQsIHN0YXQgJWxkXCIsIHMtPm9wdF9sZW4sXG4gICAgLy8gICAgICAgIHMtPnN0YXRpY19sZW4pKTtcblxuICAgIGJ1aWxkX3RyZWUocywgcy5kX2Rlc2MpO1xuICAgIC8vIFRyYWNldigoc3RkZXJyLCBcIlxcbmRpc3QgZGF0YTogZHluICVsZCwgc3RhdCAlbGRcIiwgcy0+b3B0X2xlbixcbiAgICAvLyAgICAgICAgcy0+c3RhdGljX2xlbikpO1xuICAgIC8qIEF0IHRoaXMgcG9pbnQsIG9wdF9sZW4gYW5kIHN0YXRpY19sZW4gYXJlIHRoZSB0b3RhbCBiaXQgbGVuZ3RocyBvZlxuICAgICAqIHRoZSBjb21wcmVzc2VkIGJsb2NrIGRhdGEsIGV4Y2x1ZGluZyB0aGUgdHJlZSByZXByZXNlbnRhdGlvbnMuXG4gICAgICovXG5cbiAgICAvKiBCdWlsZCB0aGUgYml0IGxlbmd0aCB0cmVlIGZvciB0aGUgYWJvdmUgdHdvIHRyZWVzLCBhbmQgZ2V0IHRoZSBpbmRleFxuICAgICAqIGluIGJsX29yZGVyIG9mIHRoZSBsYXN0IGJpdCBsZW5ndGggY29kZSB0byBzZW5kLlxuICAgICAqL1xuICAgIG1heF9ibGluZGV4ID0gYnVpbGRfYmxfdHJlZShzKTtcblxuICAgIC8qIERldGVybWluZSB0aGUgYmVzdCBlbmNvZGluZy4gQ29tcHV0ZSB0aGUgYmxvY2sgbGVuZ3RocyBpbiBieXRlcy4gKi9cbiAgICBvcHRfbGVuYiA9IChzLm9wdF9sZW4gKyAzICsgNykgPj4+IDM7XG4gICAgc3RhdGljX2xlbmIgPSAocy5zdGF0aWNfbGVuICsgMyArIDcpID4+PiAzO1xuXG4gICAgLy8gVHJhY2V2KChzdGRlcnIsIFwiXFxub3B0ICVsdSglbHUpIHN0YXQgJWx1KCVsdSkgc3RvcmVkICVsdSBsaXQgJXUgXCIsXG4gICAgLy8gICAgICAgIG9wdF9sZW5iLCBzLT5vcHRfbGVuLCBzdGF0aWNfbGVuYiwgcy0+c3RhdGljX2xlbiwgc3RvcmVkX2xlbixcbiAgICAvLyAgICAgICAgcy0+bGFzdF9saXQpKTtcblxuICAgIGlmIChzdGF0aWNfbGVuYiA8PSBvcHRfbGVuYikgeyBvcHRfbGVuYiA9IHN0YXRpY19sZW5iOyB9XG5cbiAgfSBlbHNlIHtcbiAgICAvLyBBc3NlcnQoYnVmICE9IChjaGFyKikwLCBcImxvc3QgYnVmXCIpO1xuICAgIG9wdF9sZW5iID0gc3RhdGljX2xlbmIgPSBzdG9yZWRfbGVuICsgNTsgLyogZm9yY2UgYSBzdG9yZWQgYmxvY2sgKi9cbiAgfVxuXG4gIGlmICgoc3RvcmVkX2xlbiArIDQgPD0gb3B0X2xlbmIpICYmIChidWYgIT09IC0xKSkge1xuICAgIC8qIDQ6IHR3byB3b3JkcyBmb3IgdGhlIGxlbmd0aHMgKi9cblxuICAgIC8qIFRoZSB0ZXN0IGJ1ZiAhPSBOVUxMIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIExJVF9CVUZTSVpFID4gV1NJWkUuXG4gICAgICogT3RoZXJ3aXNlIHdlIGNhbid0IGhhdmUgcHJvY2Vzc2VkIG1vcmUgdGhhbiBXU0laRSBpbnB1dCBieXRlcyBzaW5jZVxuICAgICAqIHRoZSBsYXN0IGJsb2NrIGZsdXNoLCBiZWNhdXNlIGNvbXByZXNzaW9uIHdvdWxkIGhhdmUgYmVlblxuICAgICAqIHN1Y2Nlc3NmdWwuIElmIExJVF9CVUZTSVpFIDw9IFdTSVpFLCBpdCBpcyBuZXZlciB0b28gbGF0ZSB0b1xuICAgICAqIHRyYW5zZm9ybSBhIGJsb2NrIGludG8gYSBzdG9yZWQgYmxvY2suXG4gICAgICovXG4gICAgX3RyX3N0b3JlZF9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIGxhc3QpO1xuXG4gIH0gZWxzZSBpZiAocy5zdHJhdGVneSA9PT0gWl9GSVhFRCB8fCBzdGF0aWNfbGVuYiA9PT0gb3B0X2xlbmIpIHtcblxuICAgIHNlbmRfYml0cyhzLCAoU1RBVElDX1RSRUVTIDw8IDEpICsgKGxhc3QgPyAxIDogMCksIDMpO1xuICAgIGNvbXByZXNzX2Jsb2NrKHMsIHN0YXRpY19sdHJlZSwgc3RhdGljX2R0cmVlKTtcblxuICB9IGVsc2Uge1xuICAgIHNlbmRfYml0cyhzLCAoRFlOX1RSRUVTIDw8IDEpICsgKGxhc3QgPyAxIDogMCksIDMpO1xuICAgIHNlbmRfYWxsX3RyZWVzKHMsIHMubF9kZXNjLm1heF9jb2RlICsgMSwgcy5kX2Rlc2MubWF4X2NvZGUgKyAxLCBtYXhfYmxpbmRleCArIDEpO1xuICAgIGNvbXByZXNzX2Jsb2NrKHMsIHMuZHluX2x0cmVlLCBzLmR5bl9kdHJlZSk7XG4gIH1cbiAgLy8gQXNzZXJ0IChzLT5jb21wcmVzc2VkX2xlbiA9PSBzLT5iaXRzX3NlbnQsIFwiYmFkIGNvbXByZXNzZWQgc2l6ZVwiKTtcbiAgLyogVGhlIGFib3ZlIGNoZWNrIGlzIG1hZGUgbW9kIDJeMzIsIGZvciBmaWxlcyBsYXJnZXIgdGhhbiA1MTIgTUJcbiAgICogYW5kIHVMb25nIGltcGxlbWVudGVkIG9uIDMyIGJpdHMuXG4gICAqL1xuICBpbml0X2Jsb2NrKHMpO1xuXG4gIGlmIChsYXN0KSB7XG4gICAgYmlfd2luZHVwKHMpO1xuICB9XG4gIC8vIFRyYWNldigoc3RkZXJyLFwiXFxuY29tcHJsZW4gJWx1KCVsdSkgXCIsIHMtPmNvbXByZXNzZWRfbGVuPj4zLFxuICAvLyAgICAgICBzLT5jb21wcmVzc2VkX2xlbi03Kmxhc3QpKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTYXZlIHRoZSBtYXRjaCBpbmZvIGFuZCB0YWxseSB0aGUgZnJlcXVlbmN5IGNvdW50cy4gUmV0dXJuIHRydWUgaWZcbiAqIHRoZSBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZC5cbiAqL1xuZnVuY3Rpb24gX3RyX3RhbGx5KHMsIGRpc3QsIGxjKVxuLy8gICAgZGVmbGF0ZV9zdGF0ZSAqcztcbi8vICAgIHVuc2lnbmVkIGRpc3Q7ICAvKiBkaXN0YW5jZSBvZiBtYXRjaGVkIHN0cmluZyAqL1xuLy8gICAgdW5zaWduZWQgbGM7ICAgIC8qIG1hdGNoIGxlbmd0aC1NSU5fTUFUQ0ggb3IgdW5tYXRjaGVkIGNoYXIgKGlmIGRpc3Q9PTApICovXG57XG4gIC8vdmFyIG91dF9sZW5ndGgsIGluX2xlbmd0aCwgZGNvZGU7XG5cbiAgcy5wZW5kaW5nX2J1ZltzLmRfYnVmICsgcy5sYXN0X2xpdCAqIDJdICAgICA9IChkaXN0ID4+PiA4KSAmIDB4ZmY7XG4gIHMucGVuZGluZ19idWZbcy5kX2J1ZiArIHMubGFzdF9saXQgKiAyICsgMV0gPSBkaXN0ICYgMHhmZjtcblxuICBzLnBlbmRpbmdfYnVmW3MubF9idWYgKyBzLmxhc3RfbGl0XSA9IGxjICYgMHhmZjtcbiAgcy5sYXN0X2xpdCsrO1xuXG4gIGlmIChkaXN0ID09PSAwKSB7XG4gICAgLyogbGMgaXMgdGhlIHVubWF0Y2hlZCBjaGFyICovXG4gICAgcy5keW5fbHRyZWVbbGMgKiAyXS8qLkZyZXEqLysrO1xuICB9IGVsc2Uge1xuICAgIHMubWF0Y2hlcysrO1xuICAgIC8qIEhlcmUsIGxjIGlzIHRoZSBtYXRjaCBsZW5ndGggLSBNSU5fTUFUQ0ggKi9cbiAgICBkaXN0LS07ICAgICAgICAgICAgIC8qIGRpc3QgPSBtYXRjaCBkaXN0YW5jZSAtIDEgKi9cbiAgICAvL0Fzc2VydCgodXNoKWRpc3QgPCAodXNoKU1BWF9ESVNUKHMpICYmXG4gICAgLy8gICAgICAgKHVzaClsYyA8PSAodXNoKShNQVhfTUFUQ0gtTUlOX01BVENIKSAmJlxuICAgIC8vICAgICAgICh1c2gpZF9jb2RlKGRpc3QpIDwgKHVzaClEX0NPREVTLCAgXCJfdHJfdGFsbHk6IGJhZCBtYXRjaFwiKTtcblxuICAgIHMuZHluX2x0cmVlWyhfbGVuZ3RoX2NvZGVbbGNdICsgTElURVJBTFMgKyAxKSAqIDJdLyouRnJlcSovKys7XG4gICAgcy5keW5fZHRyZWVbZF9jb2RlKGRpc3QpICogMl0vKi5GcmVxKi8rKztcbiAgfVxuXG4vLyAoISkgVGhpcyBibG9jayBpcyBkaXNhYmxlZCBpbiB6bGliIGRlZmF1bHRzLFxuLy8gZG9uJ3QgZW5hYmxlIGl0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eVxuXG4vLyNpZmRlZiBUUlVOQ0FURV9CTE9DS1xuLy8gIC8qIFRyeSB0byBndWVzcyBpZiBpdCBpcyBwcm9maXRhYmxlIHRvIHN0b3AgdGhlIGN1cnJlbnQgYmxvY2sgaGVyZSAqL1xuLy8gIGlmICgocy5sYXN0X2xpdCAmIDB4MWZmZikgPT09IDAgJiYgcy5sZXZlbCA+IDIpIHtcbi8vICAgIC8qIENvbXB1dGUgYW4gdXBwZXIgYm91bmQgZm9yIHRoZSBjb21wcmVzc2VkIGxlbmd0aCAqL1xuLy8gICAgb3V0X2xlbmd0aCA9IHMubGFzdF9saXQqODtcbi8vICAgIGluX2xlbmd0aCA9IHMuc3Ryc3RhcnQgLSBzLmJsb2NrX3N0YXJ0O1xuLy9cbi8vICAgIGZvciAoZGNvZGUgPSAwOyBkY29kZSA8IERfQ09ERVM7IGRjb2RlKyspIHtcbi8vICAgICAgb3V0X2xlbmd0aCArPSBzLmR5bl9kdHJlZVtkY29kZSoyXS8qLkZyZXEqLyAqICg1ICsgZXh0cmFfZGJpdHNbZGNvZGVdKTtcbi8vICAgIH1cbi8vICAgIG91dF9sZW5ndGggPj4+PSAzO1xuLy8gICAgLy9UcmFjZXYoKHN0ZGVycixcIlxcbmxhc3RfbGl0ICV1LCBpbiAlbGQsIG91dCB+JWxkKCVsZCUlKSBcIixcbi8vICAgIC8vICAgICAgIHMtPmxhc3RfbGl0LCBpbl9sZW5ndGgsIG91dF9sZW5ndGgsXG4vLyAgICAvLyAgICAgICAxMDBMIC0gb3V0X2xlbmd0aCoxMDBML2luX2xlbmd0aCkpO1xuLy8gICAgaWYgKHMubWF0Y2hlcyA8IChzLmxhc3RfbGl0Pj4xKS8qaW50IC8yKi8gJiYgb3V0X2xlbmd0aCA8IChpbl9sZW5ndGg+PjEpLyppbnQgLzIqLykge1xuLy8gICAgICByZXR1cm4gdHJ1ZTtcbi8vICAgIH1cbi8vICB9XG4vLyNlbmRpZlxuXG4gIHJldHVybiAocy5sYXN0X2xpdCA9PT0gcy5saXRfYnVmc2l6ZSAtIDEpO1xuICAvKiBXZSBhdm9pZCBlcXVhbGl0eSB3aXRoIGxpdF9idWZzaXplIGJlY2F1c2Ugb2Ygd3JhcGFyb3VuZCBhdCA2NEtcbiAgICogb24gMTYgYml0IG1hY2hpbmVzIGFuZCBiZWNhdXNlIHN0b3JlZCBibG9ja3MgYXJlIHJlc3RyaWN0ZWQgdG9cbiAgICogNjRLLTEgYnl0ZXMuXG4gICAqL1xufVxuXG5leHBvcnRzLl90cl9pbml0ICA9IF90cl9pbml0O1xuZXhwb3J0cy5fdHJfc3RvcmVkX2Jsb2NrID0gX3RyX3N0b3JlZF9ibG9jaztcbmV4cG9ydHMuX3RyX2ZsdXNoX2Jsb2NrICA9IF90cl9mbHVzaF9ibG9jaztcbmV4cG9ydHMuX3RyX3RhbGx5ID0gX3RyX3RhbGx5O1xuZXhwb3J0cy5fdHJfYWxpZ24gPSBfdHJfYWxpZ247XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxuZnVuY3Rpb24gWlN0cmVhbSgpIHtcbiAgLyogbmV4dCBpbnB1dCBieXRlICovXG4gIHRoaXMuaW5wdXQgPSBudWxsOyAvLyBKUyBzcGVjaWZpYywgYmVjYXVzZSB3ZSBoYXZlIG5vIHBvaW50ZXJzXG4gIHRoaXMubmV4dF9pbiA9IDA7XG4gIC8qIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUgYXQgaW5wdXQgKi9cbiAgdGhpcy5hdmFpbF9pbiA9IDA7XG4gIC8qIHRvdGFsIG51bWJlciBvZiBpbnB1dCBieXRlcyByZWFkIHNvIGZhciAqL1xuICB0aGlzLnRvdGFsX2luID0gMDtcbiAgLyogbmV4dCBvdXRwdXQgYnl0ZSBzaG91bGQgYmUgcHV0IHRoZXJlICovXG4gIHRoaXMub3V0cHV0ID0gbnVsbDsgLy8gSlMgc3BlY2lmaWMsIGJlY2F1c2Ugd2UgaGF2ZSBubyBwb2ludGVyc1xuICB0aGlzLm5leHRfb3V0ID0gMDtcbiAgLyogcmVtYWluaW5nIGZyZWUgc3BhY2UgYXQgb3V0cHV0ICovXG4gIHRoaXMuYXZhaWxfb3V0ID0gMDtcbiAgLyogdG90YWwgbnVtYmVyIG9mIGJ5dGVzIG91dHB1dCBzbyBmYXIgKi9cbiAgdGhpcy50b3RhbF9vdXQgPSAwO1xuICAvKiBsYXN0IGVycm9yIG1lc3NhZ2UsIE5VTEwgaWYgbm8gZXJyb3IgKi9cbiAgdGhpcy5tc2cgPSAnJy8qWl9OVUxMKi87XG4gIC8qIG5vdCB2aXNpYmxlIGJ5IGFwcGxpY2F0aW9ucyAqL1xuICB0aGlzLnN0YXRlID0gbnVsbDtcbiAgLyogYmVzdCBndWVzcyBhYm91dCB0aGUgZGF0YSB0eXBlOiBiaW5hcnkgb3IgdGV4dCAqL1xuICB0aGlzLmRhdGFfdHlwZSA9IDIvKlpfVU5LTk9XTiovO1xuICAvKiBhZGxlcjMyIHZhbHVlIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSAqL1xuICB0aGlzLmFkbGVyID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBaU3RyZWFtO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4b3IgKGEsIGIpIHtcbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aClcbiAgdmFyIGJ1ZmZlciA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBidWZmZXJbaV0gPSBhW2ldIF4gYltpXVxuICB9XG5cbiAgcmV0dXJuIGJ1ZmZlclxufVxuIiwiLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuXG4ndXNlIHN0cmljdCdcblxuY29uc3QgYmFzZTY0ID0gcmVxdWlyZSgnYmFzZTY0LWpzJylcbmNvbnN0IGllZWU3NTQgPSByZXF1aXJlKCdpZWVlNzU0JylcbmNvbnN0IGN1c3RvbUluc3BlY3RTeW1ib2wgPVxuICAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgU3ltYm9sWydmb3InXSA9PT0gJ2Z1bmN0aW9uJykgLy8gZXNsaW50LWRpc2FibGUtbGluZSBkb3Qtbm90YXRpb25cbiAgICA/IFN5bWJvbFsnZm9yJ10oJ25vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tJykgLy8gZXNsaW50LWRpc2FibGUtbGluZSBkb3Qtbm90YXRpb25cbiAgICA6IG51bGxcblxuZXhwb3J0cy5CdWZmZXIgPSBCdWZmZXJcbmV4cG9ydHMuU2xvd0J1ZmZlciA9IFNsb3dCdWZmZXJcbmV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVMgPSA1MFxuXG5jb25zdCBLX01BWF9MRU5HVEggPSAweDdmZmZmZmZmXG5leHBvcnRzLmtNYXhMZW5ndGggPSBLX01BWF9MRU5HVEhcblxuLyoqXG4gKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOlxuICogICA9PT0gdHJ1ZSAgICBVc2UgVWludDhBcnJheSBpbXBsZW1lbnRhdGlvbiAoZmFzdGVzdClcbiAqICAgPT09IGZhbHNlICAgUHJpbnQgd2FybmluZyBhbmQgcmVjb21tZW5kIHVzaW5nIGBidWZmZXJgIHY0Lnggd2hpY2ggaGFzIGFuIE9iamVjdFxuICogICAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbiAobW9zdCBjb21wYXRpYmxlLCBldmVuIElFNilcbiAqXG4gKiBCcm93c2VycyB0aGF0IHN1cHBvcnQgdHlwZWQgYXJyYXlzIGFyZSBJRSAxMCssIEZpcmVmb3ggNCssIENocm9tZSA3KywgU2FmYXJpIDUuMSssXG4gKiBPcGVyYSAxMS42KywgaU9TIDQuMisuXG4gKlxuICogV2UgcmVwb3J0IHRoYXQgdGhlIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCB0eXBlZCBhcnJheXMgaWYgdGhlIGFyZSBub3Qgc3ViY2xhc3NhYmxlXG4gKiB1c2luZyBfX3Byb3RvX18uIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgXG4gKiAoU2VlOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02OTU0MzgpLiBJRSAxMCBsYWNrcyBzdXBwb3J0XG4gKiBmb3IgX19wcm90b19fIGFuZCBoYXMgYSBidWdneSB0eXBlZCBhcnJheSBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgPSB0eXBlZEFycmF5U3VwcG9ydCgpXG5cbmlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgY29uc29sZS5lcnJvcihcbiAgICAnVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5ICcgK1xuICAgICdgYnVmZmVyYCB2NS54LiBVc2UgYGJ1ZmZlcmAgdjQueCBpZiB5b3UgcmVxdWlyZSBvbGQgYnJvd3NlciBzdXBwb3J0LidcbiAgKVxufVxuXG5mdW5jdGlvbiB0eXBlZEFycmF5U3VwcG9ydCAoKSB7XG4gIC8vIENhbiB0eXBlZCBhcnJheSBpbnN0YW5jZXMgY2FuIGJlIGF1Z21lbnRlZD9cbiAgdHJ5IHtcbiAgICBjb25zdCBhcnIgPSBuZXcgVWludDhBcnJheSgxKVxuICAgIGNvbnN0IHByb3RvID0geyBmb286IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDQyIH0gfVxuICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihwcm90bywgVWludDhBcnJheS5wcm90b3R5cGUpXG4gICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGFyciwgcHJvdG8pXG4gICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDJcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIucHJvdG90eXBlLCAncGFyZW50Jywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0aGlzKSkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIHJldHVybiB0aGlzLmJ1ZmZlclxuICB9XG59KVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoQnVmZmVyLnByb3RvdHlwZSwgJ29mZnNldCcsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGhpcykpIHJldHVybiB1bmRlZmluZWRcbiAgICByZXR1cm4gdGhpcy5ieXRlT2Zmc2V0XG4gIH1cbn0pXG5cbmZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlciAobGVuZ3RoKSB7XG4gIGlmIChsZW5ndGggPiBLX01BWF9MRU5HVEgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIFwiJyArIGxlbmd0aCArICdcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKVxuICB9XG4gIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlXG4gIGNvbnN0IGJ1ZiA9IG5ldyBVaW50OEFycmF5KGxlbmd0aClcbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGJ1ZiwgQnVmZmVyLnByb3RvdHlwZSlcbiAgcmV0dXJuIGJ1ZlxufVxuXG4vKipcbiAqIFRoZSBCdWZmZXIgY29uc3RydWN0b3IgcmV0dXJucyBpbnN0YW5jZXMgb2YgYFVpbnQ4QXJyYXlgIHRoYXQgaGF2ZSB0aGVpclxuICogcHJvdG90eXBlIGNoYW5nZWQgdG8gYEJ1ZmZlci5wcm90b3R5cGVgLiBGdXJ0aGVybW9yZSwgYEJ1ZmZlcmAgaXMgYSBzdWJjbGFzcyBvZlxuICogYFVpbnQ4QXJyYXlgLCBzbyB0aGUgcmV0dXJuZWQgaW5zdGFuY2VzIHdpbGwgaGF2ZSBhbGwgdGhlIG5vZGUgYEJ1ZmZlcmAgbWV0aG9kc1xuICogYW5kIHRoZSBgVWludDhBcnJheWAgbWV0aG9kcy4gU3F1YXJlIGJyYWNrZXQgbm90YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgLS0gaXRcbiAqIHJldHVybnMgYSBzaW5nbGUgb2N0ZXQuXG4gKlxuICogVGhlIGBVaW50OEFycmF5YCBwcm90b3R5cGUgcmVtYWlucyB1bm1vZGlmaWVkLlxuICovXG5cbmZ1bmN0aW9uIEJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgLy8gQ29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmdPck9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICdUaGUgXCJzdHJpbmdcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgc3RyaW5nLiBSZWNlaXZlZCB0eXBlIG51bWJlcidcbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIGFsbG9jVW5zYWZlKGFyZylcbiAgfVxuICByZXR1cm4gZnJvbShhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnBvb2xTaXplID0gODE5MiAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uXG5cbmZ1bmN0aW9uIGZyb20gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZnJvbVN0cmluZyh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldClcbiAgfVxuXG4gIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheVZpZXcodmFsdWUpXG4gIH1cblxuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgJyArXG4gICAgICAnb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJyArICh0eXBlb2YgdmFsdWUpXG4gICAgKVxuICB9XG5cbiAgaWYgKGlzSW5zdGFuY2UodmFsdWUsIEFycmF5QnVmZmVyKSB8fFxuICAgICAgKHZhbHVlICYmIGlzSW5zdGFuY2UodmFsdWUuYnVmZmVyLCBBcnJheUJ1ZmZlcikpKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgIChpc0luc3RhbmNlKHZhbHVlLCBTaGFyZWRBcnJheUJ1ZmZlcikgfHxcbiAgICAgICh2YWx1ZSAmJiBpc0luc3RhbmNlKHZhbHVlLmJ1ZmZlciwgU2hhcmVkQXJyYXlCdWZmZXIpKSkpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAnVGhlIFwidmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSBudW1iZXInXG4gICAgKVxuICB9XG5cbiAgY29uc3QgdmFsdWVPZiA9IHZhbHVlLnZhbHVlT2YgJiYgdmFsdWUudmFsdWVPZigpXG4gIGlmICh2YWx1ZU9mICE9IG51bGwgJiYgdmFsdWVPZiAhPT0gdmFsdWUpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWVPZiwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgY29uc3QgYiA9IGZyb21PYmplY3QodmFsdWUpXG4gIGlmIChiKSByZXR1cm4gYlxuXG4gIGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9QcmltaXRpdmUgIT0gbnVsbCAmJlxuICAgICAgdHlwZW9mIHZhbHVlW1N5bWJvbC50b1ByaW1pdGl2ZV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWVbU3ltYm9sLnRvUHJpbWl0aXZlXSgnc3RyaW5nJyksIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgJ1RoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksICcgK1xuICAgICdvciBBcnJheS1saWtlIE9iamVjdC4gUmVjZWl2ZWQgdHlwZSAnICsgKHR5cGVvZiB2YWx1ZSlcbiAgKVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIEJ1ZmZlcihhcmcsIGVuY29kaW5nKSBidXQgdGhyb3dzIGEgVHlwZUVycm9yXG4gKiBpZiB2YWx1ZSBpcyBhIG51bWJlci5cbiAqIEJ1ZmZlci5mcm9tKHN0clssIGVuY29kaW5nXSlcbiAqIEJ1ZmZlci5mcm9tKGFycmF5KVxuICogQnVmZmVyLmZyb20oYnVmZmVyKVxuICogQnVmZmVyLmZyb20oYXJyYXlCdWZmZXJbLCBieXRlT2Zmc2V0WywgbGVuZ3RoXV0pXG4gKiovXG5CdWZmZXIuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBmcm9tKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbi8vIE5vdGU6IENoYW5nZSBwcm90b3R5cGUgKmFmdGVyKiBCdWZmZXIuZnJvbSBpcyBkZWZpbmVkIHRvIHdvcmthcm91bmQgQ2hyb21lIGJ1Zzpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL3B1bGwvMTQ4XG5PYmplY3Quc2V0UHJvdG90eXBlT2YoQnVmZmVyLnByb3RvdHlwZSwgVWludDhBcnJheS5wcm90b3R5cGUpXG5PYmplY3Quc2V0UHJvdG90eXBlT2YoQnVmZmVyLCBVaW50OEFycmF5KVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyJylcbiAgfSBlbHNlIGlmIChzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInICsgc2l6ZSArICdcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFsbG9jIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIGlmIChzaXplIDw9IDApIHtcbiAgICByZXR1cm4gY3JlYXRlQnVmZmVyKHNpemUpXG4gIH1cbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE9ubHkgcGF5IGF0dGVudGlvbiB0byBlbmNvZGluZyBpZiBpdCdzIGEgc3RyaW5nLiBUaGlzXG4gICAgLy8gcHJldmVudHMgYWNjaWRlbnRhbGx5IHNlbmRpbmcgaW4gYSBudW1iZXIgdGhhdCB3b3VsZFxuICAgIC8vIGJlIGludGVycHJldGVkIGFzIGEgc3RhcnQgb2Zmc2V0LlxuICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnXG4gICAgICA/IGNyZWF0ZUJ1ZmZlcihzaXplKS5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgICAgOiBjcmVhdGVCdWZmZXIoc2l6ZSkuZmlsbChmaWxsKVxuICB9XG4gIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pXG4gKiovXG5CdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGFsbG9jKHNpemUsIGZpbGwsIGVuY29kaW5nKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAoc2l6ZSkge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSA8IDAgPyAwIDogY2hlY2tlZChzaXplKSB8IDApXG59XG5cbi8qKlxuICogRXF1aXZhbGVudCB0byBCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqICovXG5CdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUoc2l6ZSlcbn1cbi8qKlxuICogRXF1aXZhbGVudCB0byBTbG93QnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUoc2l6ZSlcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJyB8fCBlbmNvZGluZyA9PT0gJycpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICB9XG5cbiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gIH1cblxuICBjb25zdCBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZywgZW5jb2RpbmcpIHwgMFxuICBsZXQgYnVmID0gY3JlYXRlQnVmZmVyKGxlbmd0aClcblxuICBjb25zdCBhY3R1YWwgPSBidWYud3JpdGUoc3RyaW5nLCBlbmNvZGluZylcblxuICBpZiAoYWN0dWFsICE9PSBsZW5ndGgpIHtcbiAgICAvLyBXcml0aW5nIGEgaGV4IHN0cmluZywgZm9yIGV4YW1wbGUsIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpbGxcbiAgICAvLyBjYXVzZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCBpbnZhbGlkIGNoYXJhY3RlciB0byBiZSBpZ25vcmVkLiAoZS5nLlxuICAgIC8vICdhYnh4Y2QnIHdpbGwgYmUgdHJlYXRlZCBhcyAnYWInKVxuICAgIGJ1ZiA9IGJ1Zi5zbGljZSgwLCBhY3R1YWwpXG4gIH1cblxuICByZXR1cm4gYnVmXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUxpa2UgKGFycmF5KSB7XG4gIGNvbnN0IGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICBjb25zdCBidWYgPSBjcmVhdGVCdWZmZXIobGVuZ3RoKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgYnVmW2ldID0gYXJyYXlbaV0gJiAyNTVcbiAgfVxuICByZXR1cm4gYnVmXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheVZpZXcgKGFycmF5Vmlldykge1xuICBpZiAoaXNJbnN0YW5jZShhcnJheVZpZXcsIFVpbnQ4QXJyYXkpKSB7XG4gICAgY29uc3QgY29weSA9IG5ldyBVaW50OEFycmF5KGFycmF5VmlldylcbiAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKGNvcHkuYnVmZmVyLCBjb3B5LmJ5dGVPZmZzZXQsIGNvcHkuYnl0ZUxlbmd0aClcbiAgfVxuICByZXR1cm4gZnJvbUFycmF5TGlrZShhcnJheVZpZXcpXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlciAoYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAoYnl0ZU9mZnNldCA8IDAgfHwgYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJvZmZzZXRcIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0ICsgKGxlbmd0aCB8fCAwKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcImxlbmd0aFwiIGlzIG91dHNpZGUgb2YgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBsZXQgYnVmXG4gIGlmIChieXRlT2Zmc2V0ID09PSB1bmRlZmluZWQgJiYgbGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBidWYgPSBuZXcgVWludDhBcnJheShhcnJheSlcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0KVxuICB9IGVsc2Uge1xuICAgIGJ1ZiA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZVxuICBPYmplY3Quc2V0UHJvdG90eXBlT2YoYnVmLCBCdWZmZXIucHJvdG90eXBlKVxuXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbU9iamVjdCAob2JqKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIob2JqKSkge1xuICAgIGNvbnN0IGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwXG4gICAgY29uc3QgYnVmID0gY3JlYXRlQnVmZmVyKGxlbilcblxuICAgIGlmIChidWYubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gYnVmXG4gICAgfVxuXG4gICAgb2JqLmNvcHkoYnVmLCAwLCAwLCBsZW4pXG4gICAgcmV0dXJuIGJ1ZlxuICB9XG5cbiAgaWYgKG9iai5sZW5ndGggIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2Ygb2JqLmxlbmd0aCAhPT0gJ251bWJlcicgfHwgbnVtYmVySXNOYU4ob2JqLmxlbmd0aCkpIHtcbiAgICAgIHJldHVybiBjcmVhdGVCdWZmZXIoMClcbiAgICB9XG4gICAgcmV0dXJuIGZyb21BcnJheUxpa2Uob2JqKVxuICB9XG5cbiAgaWYgKG9iai50eXBlID09PSAnQnVmZmVyJyAmJiBBcnJheS5pc0FycmF5KG9iai5kYXRhKSkge1xuICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKG9iai5kYXRhKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrZWQgKGxlbmd0aCkge1xuICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBLX01BWF9MRU5HVEhgIGhlcmUgYmVjYXVzZSB0aGF0IGZhaWxzIHdoZW5cbiAgLy8gbGVuZ3RoIGlzIE5hTiAod2hpY2ggaXMgb3RoZXJ3aXNlIGNvZXJjZWQgdG8gemVyby4pXG4gIGlmIChsZW5ndGggPj0gS19NQVhfTEVOR1RIKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemU6IDB4JyArIEtfTUFYX0xFTkdUSC50b1N0cmluZygxNikgKyAnIGJ5dGVzJylcbiAgfVxuICByZXR1cm4gbGVuZ3RoIHwgMFxufVxuXG5mdW5jdGlvbiBTbG93QnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKCtsZW5ndGggIT0gbGVuZ3RoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgbGVuZ3RoID0gMFxuICB9XG4gIHJldHVybiBCdWZmZXIuYWxsb2MoK2xlbmd0aClcbn1cblxuQnVmZmVyLmlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIgKGIpIHtcbiAgcmV0dXJuIGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlciA9PT0gdHJ1ZSAmJlxuICAgIGIgIT09IEJ1ZmZlci5wcm90b3R5cGUgLy8gc28gQnVmZmVyLmlzQnVmZmVyKEJ1ZmZlci5wcm90b3R5cGUpIHdpbGwgYmUgZmFsc2Vcbn1cblxuQnVmZmVyLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGlmIChpc0luc3RhbmNlKGEsIFVpbnQ4QXJyYXkpKSBhID0gQnVmZmVyLmZyb20oYSwgYS5vZmZzZXQsIGEuYnl0ZUxlbmd0aClcbiAgaWYgKGlzSW5zdGFuY2UoYiwgVWludDhBcnJheSkpIGIgPSBCdWZmZXIuZnJvbShiLCBiLm9mZnNldCwgYi5ieXRlTGVuZ3RoKVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihhKSB8fCAhQnVmZmVyLmlzQnVmZmVyKGIpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJidWYxXCIsIFwiYnVmMlwiIGFyZ3VtZW50cyBtdXN0IGJlIG9uZSBvZiB0eXBlIEJ1ZmZlciBvciBVaW50OEFycmF5J1xuICAgIClcbiAgfVxuXG4gIGlmIChhID09PSBiKSByZXR1cm4gMFxuXG4gIGxldCB4ID0gYS5sZW5ndGhcbiAgbGV0IHkgPSBiLmxlbmd0aFxuXG4gIGZvciAobGV0IGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgIHggPSBhW2ldXG4gICAgICB5ID0gYltpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbkJ1ZmZlci5pc0VuY29kaW5nID0gZnVuY3Rpb24gaXNFbmNvZGluZyAoZW5jb2RpbmcpIHtcbiAgc3dpdGNoIChTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOlxuICAgIGNhc2UgJ3V0ZjgnOlxuICAgIGNhc2UgJ3V0Zi04JzpcbiAgICBjYXNlICdhc2NpaSc6XG4gICAgY2FzZSAnbGF0aW4xJzpcbiAgICBjYXNlICdiaW5hcnknOlxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgY2FzZSAndWNzMic6XG4gICAgY2FzZSAndWNzLTInOlxuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgIHJldHVybiB0cnVlXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbkJ1ZmZlci5jb25jYXQgPSBmdW5jdGlvbiBjb25jYXQgKGxpc3QsIGxlbmd0aCkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKVxuICB9XG5cbiAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKVxuICB9XG5cbiAgbGV0IGlcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuZ3RoID0gMFxuICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgICBsZW5ndGggKz0gbGlzdFtpXS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICBjb25zdCBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUobGVuZ3RoKVxuICBsZXQgcG9zID0gMFxuICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgIGxldCBidWYgPSBsaXN0W2ldXG4gICAgaWYgKGlzSW5zdGFuY2UoYnVmLCBVaW50OEFycmF5KSkge1xuICAgICAgaWYgKHBvcyArIGJ1Zi5sZW5ndGggPiBidWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIGJ1ZiA9IEJ1ZmZlci5mcm9tKGJ1ZilcbiAgICAgICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChcbiAgICAgICAgICBidWZmZXIsXG4gICAgICAgICAgYnVmLFxuICAgICAgICAgIHBvc1xuICAgICAgICApXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Zi5jb3B5KGJ1ZmZlciwgcG9zKVxuICAgIH1cbiAgICBwb3MgKz0gYnVmLmxlbmd0aFxuICB9XG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHN0cmluZykpIHtcbiAgICByZXR1cm4gc3RyaW5nLmxlbmd0aFxuICB9XG4gIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcoc3RyaW5nKSB8fCBpc0luc3RhbmNlKHN0cmluZywgQXJyYXlCdWZmZXIpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5ieXRlTGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICdUaGUgXCJzdHJpbmdcIiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBvciBBcnJheUJ1ZmZlci4gJyArXG4gICAgICAnUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIHN0cmluZ1xuICAgIClcbiAgfVxuXG4gIGNvbnN0IGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgY29uc3QgbXVzdE1hdGNoID0gKGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSA9PT0gdHJ1ZSlcbiAgaWYgKCFtdXN0TWF0Y2ggJiYgbGVuID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIFVzZSBhIGZvciBsb29wIHRvIGF2b2lkIHJlY3Vyc2lvblxuICBsZXQgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiBsZW4gKiAyXG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gbGVuID4+PiAxXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB7XG4gICAgICAgICAgcmV0dXJuIG11c3RNYXRjaCA/IC0xIDogdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGggLy8gYXNzdW1lIHV0ZjhcbiAgICAgICAgfVxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuQnVmZmVyLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5cbmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgbGV0IGxvd2VyZWRDYXNlID0gZmFsc2VcblxuICAvLyBObyBuZWVkIHRvIHZlcmlmeSB0aGF0IFwidGhpcy5sZW5ndGggPD0gTUFYX1VJTlQzMlwiIHNpbmNlIGl0J3MgYSByZWFkLW9ubHlcbiAgLy8gcHJvcGVydHkgb2YgYSB0eXBlZCBhcnJheS5cblxuICAvLyBUaGlzIGJlaGF2ZXMgbmVpdGhlciBsaWtlIFN0cmluZyBub3IgVWludDhBcnJheSBpbiB0aGF0IHdlIHNldCBzdGFydC9lbmRcbiAgLy8gdG8gdGhlaXIgdXBwZXIvbG93ZXIgYm91bmRzIGlmIHRoZSB2YWx1ZSBwYXNzZWQgaXMgb3V0IG9mIHJhbmdlLlxuICAvLyB1bmRlZmluZWQgaXMgaGFuZGxlZCBzcGVjaWFsbHkgYXMgcGVyIEVDTUEtMjYyIDZ0aCBFZGl0aW9uLFxuICAvLyBTZWN0aW9uIDEzLjMuMy43IFJ1bnRpbWUgU2VtYW50aWNzOiBLZXllZEJpbmRpbmdJbml0aWFsaXphdGlvbi5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQgfHwgc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgLy8gUmV0dXJuIGVhcmx5IGlmIHN0YXJ0ID4gdGhpcy5sZW5ndGguIERvbmUgaGVyZSB0byBwcmV2ZW50IHBvdGVudGlhbCB1aW50MzJcbiAgLy8gY29lcmNpb24gZmFpbCBiZWxvdy5cbiAgaWYgKHN0YXJ0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoZW5kIDw9IDApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIEZvcmNlIGNvZXJjaW9uIHRvIHVpbnQzMi4gVGhpcyB3aWxsIGFsc28gY29lcmNlIGZhbHNleS9OYU4gdmFsdWVzIHRvIDAuXG4gIGVuZCA+Pj49IDBcbiAgc3RhcnQgPj4+PSAwXG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1dGYxNmxlU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbi8vIFRoaXMgcHJvcGVydHkgaXMgdXNlZCBieSBgQnVmZmVyLmlzQnVmZmVyYCAoYW5kIHRoZSBgaXMtYnVmZmVyYCBucG0gcGFja2FnZSlcbi8vIHRvIGRldGVjdCBhIEJ1ZmZlciBpbnN0YW5jZS4gSXQncyBub3QgcG9zc2libGUgdG8gdXNlIGBpbnN0YW5jZW9mIEJ1ZmZlcmBcbi8vIHJlbGlhYmx5IGluIGEgYnJvd3NlcmlmeSBjb250ZXh0IGJlY2F1c2UgdGhlcmUgY291bGQgYmUgbXVsdGlwbGUgZGlmZmVyZW50XG4vLyBjb3BpZXMgb2YgdGhlICdidWZmZXInIHBhY2thZ2UgaW4gdXNlLiBUaGlzIG1ldGhvZCB3b3JrcyBldmVuIGZvciBCdWZmZXJcbi8vIGluc3RhbmNlcyB0aGF0IHdlcmUgY3JlYXRlZCBmcm9tIGFub3RoZXIgY29weSBvZiB0aGUgYGJ1ZmZlcmAgcGFja2FnZS5cbi8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvaXNzdWVzLzE1NFxuQnVmZmVyLnByb3RvdHlwZS5faXNCdWZmZXIgPSB0cnVlXG5cbmZ1bmN0aW9uIHN3YXAgKGIsIG4sIG0pIHtcbiAgY29uc3QgaSA9IGJbbl1cbiAgYltuXSA9IGJbbV1cbiAgYlttXSA9IGlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMTYgPSBmdW5jdGlvbiBzd2FwMTYgKCkge1xuICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgMiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cycpXG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMikge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDEpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMzIgPSBmdW5jdGlvbiBzd2FwMzIgKCkge1xuICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgNCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpXG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDMpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDIpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwNjQgPSBmdW5jdGlvbiBzd2FwNjQgKCkge1xuICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgOCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cycpXG4gIH1cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gOCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDcpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDYpXG4gICAgc3dhcCh0aGlzLCBpICsgMiwgaSArIDUpXG4gICAgc3dhcCh0aGlzLCBpICsgMywgaSArIDQpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nICgpIHtcbiAgY29uc3QgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcgPSBCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nXG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgaWYgKHRoaXMgPT09IGIpIHJldHVybiB0cnVlXG4gIHJldHVybiBCdWZmZXIuY29tcGFyZSh0aGlzLCBiKSA9PT0gMFxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgbGV0IHN0ciA9ICcnXG4gIGNvbnN0IG1heCA9IGV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVNcbiAgc3RyID0gdGhpcy50b1N0cmluZygnaGV4JywgMCwgbWF4KS5yZXBsYWNlKC8oLnsyfSkvZywgJyQxICcpLnRyaW0oKVxuICBpZiAodGhpcy5sZW5ndGggPiBtYXgpIHN0ciArPSAnIC4uLiAnXG4gIHJldHVybiAnPEJ1ZmZlciAnICsgc3RyICsgJz4nXG59XG5pZiAoY3VzdG9tSW5zcGVjdFN5bWJvbCkge1xuICBCdWZmZXIucHJvdG90eXBlW2N1c3RvbUluc3BlY3RTeW1ib2xdID0gQnVmZmVyLnByb3RvdHlwZS5pbnNwZWN0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKHRhcmdldCwgc3RhcnQsIGVuZCwgdGhpc1N0YXJ0LCB0aGlzRW5kKSB7XG4gIGlmIChpc0luc3RhbmNlKHRhcmdldCwgVWludDhBcnJheSkpIHtcbiAgICB0YXJnZXQgPSBCdWZmZXIuZnJvbSh0YXJnZXQsIHRhcmdldC5vZmZzZXQsIHRhcmdldC5ieXRlTGVuZ3RoKVxuICB9XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHRhcmdldCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgJ1RoZSBcInRhcmdldFwiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXkuICcgK1xuICAgICAgJ1JlY2VpdmVkIHR5cGUgJyArICh0eXBlb2YgdGFyZ2V0KVxuICAgIClcbiAgfVxuXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5kID0gdGFyZ2V0ID8gdGFyZ2V0Lmxlbmd0aCA6IDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzU3RhcnQgPSAwXG4gIH1cbiAgaWYgKHRoaXNFbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNFbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKHN0YXJ0IDwgMCB8fCBlbmQgPiB0YXJnZXQubGVuZ3RoIHx8IHRoaXNTdGFydCA8IDAgfHwgdGhpc0VuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ291dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQgJiYgc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQpIHtcbiAgICByZXR1cm4gLTFcbiAgfVxuICBpZiAoc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuXG4gIHN0YXJ0ID4+Pj0gMFxuICBlbmQgPj4+PSAwXG4gIHRoaXNTdGFydCA+Pj49IDBcbiAgdGhpc0VuZCA+Pj49IDBcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0KSByZXR1cm4gMFxuXG4gIGxldCB4ID0gdGhpc0VuZCAtIHRoaXNTdGFydFxuICBsZXQgeSA9IGVuZCAtIHN0YXJ0XG4gIGNvbnN0IGxlbiA9IE1hdGgubWluKHgsIHkpXG5cbiAgY29uc3QgdGhpc0NvcHkgPSB0aGlzLnNsaWNlKHRoaXNTdGFydCwgdGhpc0VuZClcbiAgY29uc3QgdGFyZ2V0Q29weSA9IHRhcmdldC5zbGljZShzdGFydCwgZW5kKVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAodGhpc0NvcHlbaV0gIT09IHRhcmdldENvcHlbaV0pIHtcbiAgICAgIHggPSB0aGlzQ29weVtpXVxuICAgICAgeSA9IHRhcmdldENvcHlbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG4vLyBGaW5kcyBlaXRoZXIgdGhlIGZpcnN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA+PSBgYnl0ZU9mZnNldGAsXG4vLyBPUiB0aGUgbGFzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPD0gYGJ5dGVPZmZzZXRgLlxuLy9cbi8vIEFyZ3VtZW50czpcbi8vIC0gYnVmZmVyIC0gYSBCdWZmZXIgdG8gc2VhcmNoXG4vLyAtIHZhbCAtIGEgc3RyaW5nLCBCdWZmZXIsIG9yIG51bWJlclxuLy8gLSBieXRlT2Zmc2V0IC0gYW4gaW5kZXggaW50byBgYnVmZmVyYDsgd2lsbCBiZSBjbGFtcGVkIHRvIGFuIGludDMyXG4vLyAtIGVuY29kaW5nIC0gYW4gb3B0aW9uYWwgZW5jb2RpbmcsIHJlbGV2YW50IGlzIHZhbCBpcyBhIHN0cmluZ1xuLy8gLSBkaXIgLSB0cnVlIGZvciBpbmRleE9mLCBmYWxzZSBmb3IgbGFzdEluZGV4T2ZcbmZ1bmN0aW9uIGJpZGlyZWN0aW9uYWxJbmRleE9mIChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICAvLyBFbXB0eSBidWZmZXIgbWVhbnMgbm8gbWF0Y2hcbiAgaWYgKGJ1ZmZlci5sZW5ndGggPT09IDApIHJldHVybiAtMVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0XG4gIGlmICh0eXBlb2YgYnl0ZU9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IGJ5dGVPZmZzZXRcbiAgICBieXRlT2Zmc2V0ID0gMFxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPiAweDdmZmZmZmZmKSB7XG4gICAgYnl0ZU9mZnNldCA9IDB4N2ZmZmZmZmZcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgLTB4ODAwMDAwMDApIHtcbiAgICBieXRlT2Zmc2V0ID0gLTB4ODAwMDAwMDBcbiAgfVxuICBieXRlT2Zmc2V0ID0gK2J5dGVPZmZzZXQgLy8gQ29lcmNlIHRvIE51bWJlci5cbiAgaWYgKG51bWJlcklzTmFOKGJ5dGVPZmZzZXQpKSB7XG4gICAgLy8gYnl0ZU9mZnNldDogaXQgaXQncyB1bmRlZmluZWQsIG51bGwsIE5hTiwgXCJmb29cIiwgZXRjLCBzZWFyY2ggd2hvbGUgYnVmZmVyXG4gICAgYnl0ZU9mZnNldCA9IGRpciA/IDAgOiAoYnVmZmVyLmxlbmd0aCAtIDEpXG4gIH1cblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldDogbmVnYXRpdmUgb2Zmc2V0cyBzdGFydCBmcm9tIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlclxuICBpZiAoYnl0ZU9mZnNldCA8IDApIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoICsgYnl0ZU9mZnNldFxuICBpZiAoYnl0ZU9mZnNldCA+PSBidWZmZXIubGVuZ3RoKSB7XG4gICAgaWYgKGRpcikgcmV0dXJuIC0xXG4gICAgZWxzZSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCAtIDFcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgMCkge1xuICAgIGlmIChkaXIpIGJ5dGVPZmZzZXQgPSAwXG4gICAgZWxzZSByZXR1cm4gLTFcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSB2YWxcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsID0gQnVmZmVyLmZyb20odmFsLCBlbmNvZGluZylcbiAgfVxuXG4gIC8vIEZpbmFsbHksIHNlYXJjaCBlaXRoZXIgaW5kZXhPZiAoaWYgZGlyIGlzIHRydWUpIG9yIGxhc3RJbmRleE9mXG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nL2J1ZmZlciBhbHdheXMgZmFpbHNcbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIC0xXG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAweEZGIC8vIFNlYXJjaCBmb3IgYSBieXRlIHZhbHVlIFswLTI1NV1cbiAgICBpZiAodHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmIChkaXIpIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgW3ZhbF0sIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXInKVxufVxuXG5mdW5jdGlvbiBhcnJheUluZGV4T2YgKGFyciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIGxldCBpbmRleFNpemUgPSAxXG4gIGxldCBhcnJMZW5ndGggPSBhcnIubGVuZ3RoXG4gIGxldCB2YWxMZW5ndGggPSB2YWwubGVuZ3RoXG5cbiAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9IFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgIGlmIChlbmNvZGluZyA9PT0gJ3VjczInIHx8IGVuY29kaW5nID09PSAndWNzLTInIHx8XG4gICAgICAgIGVuY29kaW5nID09PSAndXRmMTZsZScgfHwgZW5jb2RpbmcgPT09ICd1dGYtMTZsZScpIHtcbiAgICAgIGlmIChhcnIubGVuZ3RoIDwgMiB8fCB2YWwubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gLTFcbiAgICAgIH1cbiAgICAgIGluZGV4U2l6ZSA9IDJcbiAgICAgIGFyckxlbmd0aCAvPSAyXG4gICAgICB2YWxMZW5ndGggLz0gMlxuICAgICAgYnl0ZU9mZnNldCAvPSAyXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZCAoYnVmLCBpKSB7XG4gICAgaWYgKGluZGV4U2l6ZSA9PT0gMSkge1xuICAgICAgcmV0dXJuIGJ1ZltpXVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYnVmLnJlYWRVSW50MTZCRShpICogaW5kZXhTaXplKVxuICAgIH1cbiAgfVxuXG4gIGxldCBpXG4gIGlmIChkaXIpIHtcbiAgICBsZXQgZm91bmRJbmRleCA9IC0xXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA8IGFyckxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocmVhZChhcnIsIGkpID09PSByZWFkKHZhbCwgZm91bmRJbmRleCA9PT0gLTEgPyAwIDogaSAtIGZvdW5kSW5kZXgpKSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ID09PSAtMSkgZm91bmRJbmRleCA9IGlcbiAgICAgICAgaWYgKGkgLSBmb3VuZEluZGV4ICsgMSA9PT0gdmFsTGVuZ3RoKSByZXR1cm4gZm91bmRJbmRleCAqIGluZGV4U2l6ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggIT09IC0xKSBpIC09IGkgLSBmb3VuZEluZGV4XG4gICAgICAgIGZvdW5kSW5kZXggPSAtMVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoYnl0ZU9mZnNldCArIHZhbExlbmd0aCA+IGFyckxlbmd0aCkgYnl0ZU9mZnNldCA9IGFyckxlbmd0aCAtIHZhbExlbmd0aFxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgZm91bmQgPSB0cnVlXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHZhbExlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChyZWFkKGFyciwgaSArIGopICE9PSByZWFkKHZhbCwgaikpIHtcbiAgICAgICAgICBmb3VuZCA9IGZhbHNlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gaVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIHRoaXMuaW5kZXhPZih2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSAhPT0gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgdHJ1ZSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5sYXN0SW5kZXhPZiA9IGZ1bmN0aW9uIGxhc3RJbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmYWxzZSlcbn1cblxuZnVuY3Rpb24gaGV4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICBvZmZzZXQgPSBOdW1iZXIob2Zmc2V0KSB8fCAwXG4gIGNvbnN0IHJlbWFpbmluZyA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcbiAgaWYgKCFsZW5ndGgpIHtcbiAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSBOdW1iZXIobGVuZ3RoKVxuICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHtcbiAgICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHN0ckxlbiA9IHN0cmluZy5sZW5ndGhcblxuICBpZiAobGVuZ3RoID4gc3RyTGVuIC8gMikge1xuICAgIGxlbmd0aCA9IHN0ckxlbiAvIDJcbiAgfVxuICBsZXQgaVxuICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpXG4gICAgaWYgKG51bWJlcklzTmFOKHBhcnNlZCkpIHJldHVybiBpXG4gICAgYnVmW29mZnNldCArIGldID0gcGFyc2VkXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gdXRmOFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmOFRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYXNjaWlXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGFzY2lpVG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pXG4gIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7XG4gICAgICBsZW5ndGggPSBsZW5ndGggPj4+IDBcbiAgICAgIGlmIChlbmNvZGluZyA9PT0gdW5kZWZpbmVkKSBlbmNvZGluZyA9ICd1dGY4J1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmNvZGluZyA9IGxlbmd0aFxuICAgICAgbGVuZ3RoID0gdW5kZWZpbmVkXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCdcbiAgICApXG4gIH1cblxuICBjb25zdCByZW1haW5pbmcgPSB0aGlzLmxlbmd0aCAtIG9mZnNldFxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgfHwgbGVuZ3RoID4gcmVtYWluaW5nKSBsZW5ndGggPSByZW1haW5pbmdcblxuICBpZiAoKHN0cmluZy5sZW5ndGggPiAwICYmIChsZW5ndGggPCAwIHx8IG9mZnNldCA8IDApKSB8fCBvZmZzZXQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIGxldCBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIC8vIFdhcm5pbmc6IG1heExlbmd0aCBub3QgdGFrZW4gaW50byBhY2NvdW50IGluIGJhc2U2NFdyaXRlXG4gICAgICAgIHJldHVybiBiYXNlNjRXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdWNzMldyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0J1ZmZlcicsXG4gICAgZGF0YTogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyIHx8IHRoaXMsIDApXG4gIH1cbn1cblxuZnVuY3Rpb24gYmFzZTY0U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBpZiAoc3RhcnQgPT09IDAgJiYgZW5kID09PSBidWYubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1ZilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmLnNsaWNlKHN0YXJ0LCBlbmQpKVxuICB9XG59XG5cbmZ1bmN0aW9uIHV0ZjhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcbiAgY29uc3QgcmVzID0gW11cblxuICBsZXQgaSA9IHN0YXJ0XG4gIHdoaWxlIChpIDwgZW5kKSB7XG4gICAgY29uc3QgZmlyc3RCeXRlID0gYnVmW2ldXG4gICAgbGV0IGNvZGVQb2ludCA9IG51bGxcbiAgICBsZXQgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKVxuICAgICAgPyA0XG4gICAgICA6IChmaXJzdEJ5dGUgPiAweERGKVxuICAgICAgICAgID8gM1xuICAgICAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4QkYpXG4gICAgICAgICAgICAgID8gMlxuICAgICAgICAgICAgICA6IDFcblxuICAgIGlmIChpICsgYnl0ZXNQZXJTZXF1ZW5jZSA8PSBlbmQpIHtcbiAgICAgIGxldCBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnRcblxuICAgICAgc3dpdGNoIChieXRlc1BlclNlcXVlbmNlKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAoZmlyc3RCeXRlIDwgMHg4MCkge1xuICAgICAgICAgICAgY29kZVBvaW50ID0gZmlyc3RCeXRlXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4MUYpIDw8IDB4NiB8IChzZWNvbmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3Rikge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGRiAmJiAodGVtcENvZGVQb2ludCA8IDB4RDgwMCB8fCB0ZW1wQ29kZVBvaW50ID4gMHhERkZGKSkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXVxuICAgICAgICAgIHRoaXJkQnl0ZSA9IGJ1ZltpICsgMl1cbiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAoZm91cnRoQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHgxMiB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHhDIHwgKHRoaXJkQnl0ZSAmIDB4M0YpIDw8IDB4NiB8IChmb3VydGhCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgICAgICAgICBjb2RlUG9pbnQgPSB0ZW1wQ29kZVBvaW50XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlUG9pbnQgPT09IG51bGwpIHtcbiAgICAgIC8vIHdlIGRpZCBub3QgZ2VuZXJhdGUgYSB2YWxpZCBjb2RlUG9pbnQgc28gaW5zZXJ0IGFcbiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGVcbiAgICAgIGNvZGVQb2ludCA9IDB4RkZGRFxuICAgICAgYnl0ZXNQZXJTZXF1ZW5jZSA9IDFcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikge1xuICAgICAgLy8gZW5jb2RlIHRvIHV0ZjE2IChzdXJyb2dhdGUgcGFpciBkYW5jZSlcbiAgICAgIGNvZGVQb2ludCAtPSAweDEwMDAwXG4gICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApXG4gICAgICBjb2RlUG9pbnQgPSAweERDMDAgfCBjb2RlUG9pbnQgJiAweDNGRlxuICAgIH1cblxuICAgIHJlcy5wdXNoKGNvZGVQb2ludClcbiAgICBpICs9IGJ5dGVzUGVyU2VxdWVuY2VcbiAgfVxuXG4gIHJldHVybiBkZWNvZGVDb2RlUG9pbnRzQXJyYXkocmVzKVxufVxuXG4vLyBCYXNlZCBvbiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjc0NzI3Mi82ODA3NDIsIHRoZSBicm93c2VyIHdpdGhcbi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy5cbi8vIFdlIGdvIDEgbWFnbml0dWRlIGxlc3MsIGZvciBzYWZldHlcbmNvbnN0IE1BWF9BUkdVTUVOVFNfTEVOR1RIID0gMHgxMDAwXG5cbmZ1bmN0aW9uIGRlY29kZUNvZGVQb2ludHNBcnJheSAoY29kZVBvaW50cykge1xuICBjb25zdCBsZW4gPSBjb2RlUG9pbnRzLmxlbmd0aFxuICBpZiAobGVuIDw9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjb2RlUG9pbnRzKSAvLyBhdm9pZCBleHRyYSBzbGljZSgpXG4gIH1cblxuICAvLyBEZWNvZGUgaW4gY2h1bmtzIHRvIGF2b2lkIFwiY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCIuXG4gIGxldCByZXMgPSAnJ1xuICBsZXQgaSA9IDBcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShcbiAgICAgIFN0cmluZyxcbiAgICAgIGNvZGVQb2ludHMuc2xpY2UoaSwgaSArPSBNQVhfQVJHVU1FTlRTX0xFTkdUSClcbiAgICApXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgbGV0IHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSAmIDB4N0YpXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBsYXRpbjFTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGxldCByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBoZXhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGNvbnN0IGxlbiA9IGJ1Zi5sZW5ndGhcblxuICBpZiAoIXN0YXJ0IHx8IHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW5cblxuICBsZXQgb3V0ID0gJydcbiAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICBvdXQgKz0gaGV4U2xpY2VMb29rdXBUYWJsZVtidWZbaV1dXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiB1dGYxNmxlU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBjb25zdCBieXRlcyA9IGJ1Zi5zbGljZShzdGFydCwgZW5kKVxuICBsZXQgcmVzID0gJydcbiAgLy8gSWYgYnl0ZXMubGVuZ3RoIGlzIG9kZCwgdGhlIGxhc3QgOCBiaXRzIG11c3QgYmUgaWdub3JlZCAoc2FtZSBhcyBub2RlLmpzKVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aCAtIDE7IGkgKz0gMikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldICsgKGJ5dGVzW2kgKyAxXSAqIDI1NikpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgY29uc3QgbGVuID0gdGhpcy5sZW5ndGhcbiAgc3RhcnQgPSB+fnN0YXJ0XG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogfn5lbmRcblxuICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgKz0gbGVuXG4gICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIH0gZWxzZSBpZiAoc3RhcnQgPiBsZW4pIHtcbiAgICBzdGFydCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgKz0gbGVuXG4gICAgaWYgKGVuZCA8IDApIGVuZCA9IDBcbiAgfSBlbHNlIGlmIChlbmQgPiBsZW4pIHtcbiAgICBlbmQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICBjb25zdCBuZXdCdWYgPSB0aGlzLnN1YmFycmF5KHN0YXJ0LCBlbmQpXG4gIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlXG4gIE9iamVjdC5zZXRQcm90b3R5cGVPZihuZXdCdWYsIEJ1ZmZlci5wcm90b3R5cGUpXG5cbiAgcmV0dXJuIG5ld0J1ZlxufVxuXG4vKlxuICogTmVlZCB0byBtYWtlIHN1cmUgdGhhdCBidWZmZXIgaXNuJ3QgdHJ5aW5nIHRvIHdyaXRlIG91dCBvZiBib3VuZHMuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrT2Zmc2V0IChvZmZzZXQsIGV4dCwgbGVuZ3RoKSB7XG4gIGlmICgob2Zmc2V0ICUgMSkgIT09IDAgfHwgb2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ29mZnNldCBpcyBub3QgdWludCcpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBsZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludExFID1cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRMRSA9IGZ1bmN0aW9uIHJlYWRVSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgbGV0IHZhbCA9IHRoaXNbb2Zmc2V0XVxuICBsZXQgbXVsID0gMVxuICBsZXQgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVaW50QkUgPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludEJFID0gZnVuY3Rpb24gcmVhZFVJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG4gIH1cblxuICBsZXQgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdXG4gIGxldCBtdWwgPSAxXG4gIHdoaWxlIChieXRlTGVuZ3RoID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludDggPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludDE2TEUgPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2TEUgPSBmdW5jdGlvbiByZWFkVUludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVaW50MTZCRSA9XG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVpbnQzMkxFID1cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAoKHRoaXNbb2Zmc2V0XSkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpKSArXG4gICAgICAodGhpc1tvZmZzZXQgKyAzXSAqIDB4MTAwMDAwMClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVWludDMyQkUgPVxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyQkUgPSBmdW5jdGlvbiByZWFkVUludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gKiAweDEwMDAwMDApICtcbiAgICAoKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgdGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkQmlnVUludDY0TEUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gcmVhZEJpZ1VJbnQ2NExFIChvZmZzZXQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIHZhbGlkYXRlTnVtYmVyKG9mZnNldCwgJ29mZnNldCcpXG4gIGNvbnN0IGZpcnN0ID0gdGhpc1tvZmZzZXRdXG4gIGNvbnN0IGxhc3QgPSB0aGlzW29mZnNldCArIDddXG4gIGlmIChmaXJzdCA9PT0gdW5kZWZpbmVkIHx8IGxhc3QgPT09IHVuZGVmaW5lZCkge1xuICAgIGJvdW5kc0Vycm9yKG9mZnNldCwgdGhpcy5sZW5ndGggLSA4KVxuICB9XG5cbiAgY29uc3QgbG8gPSBmaXJzdCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDggK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAxNiArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDI0XG5cbiAgY29uc3QgaGkgPSB0aGlzWysrb2Zmc2V0XSArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDggK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAxNiArXG4gICAgbGFzdCAqIDIgKiogMjRcblxuICByZXR1cm4gQmlnSW50KGxvKSArIChCaWdJbnQoaGkpIDw8IEJpZ0ludCgzMikpXG59KVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRCaWdVSW50NjRCRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiByZWFkQmlnVUludDY0QkUgKG9mZnNldCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgdmFsaWRhdGVOdW1iZXIob2Zmc2V0LCAnb2Zmc2V0JylcbiAgY29uc3QgZmlyc3QgPSB0aGlzW29mZnNldF1cbiAgY29uc3QgbGFzdCA9IHRoaXNbb2Zmc2V0ICsgN11cbiAgaWYgKGZpcnN0ID09PSB1bmRlZmluZWQgfHwgbGFzdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYm91bmRzRXJyb3Iob2Zmc2V0LCB0aGlzLmxlbmd0aCAtIDgpXG4gIH1cblxuICBjb25zdCBoaSA9IGZpcnN0ICogMiAqKiAyNCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDE2ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogOCArXG4gICAgdGhpc1srK29mZnNldF1cblxuICBjb25zdCBsbyA9IHRoaXNbKytvZmZzZXRdICogMiAqKiAyNCArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDE2ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogOCArXG4gICAgbGFzdFxuXG4gIHJldHVybiAoQmlnSW50KGhpKSA8PCBCaWdJbnQoMzIpKSArIEJpZ0ludChsbylcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIGxldCB2YWwgPSB0aGlzW29mZnNldF1cbiAgbGV0IG11bCA9IDFcbiAgbGV0IGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRCRSA9IGZ1bmN0aW9uIHJlYWRJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICBsZXQgaSA9IGJ5dGVMZW5ndGhcbiAgbGV0IG11bCA9IDFcbiAgbGV0IHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1pXVxuICB3aGlsZSAoaSA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50OCA9IGZ1bmN0aW9uIHJlYWRJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIGNvbnN0IHZhbCA9IHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICBjb25zdCB2YWwgPSB0aGlzW29mZnNldCArIDFdIHwgKHRoaXNbb2Zmc2V0XSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDNdIDw8IDI0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkJFID0gZnVuY3Rpb24gcmVhZEludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgMjQpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkQmlnSW50NjRMRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiByZWFkQmlnSW50NjRMRSAob2Zmc2V0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICB2YWxpZGF0ZU51bWJlcihvZmZzZXQsICdvZmZzZXQnKVxuICBjb25zdCBmaXJzdCA9IHRoaXNbb2Zmc2V0XVxuICBjb25zdCBsYXN0ID0gdGhpc1tvZmZzZXQgKyA3XVxuICBpZiAoZmlyc3QgPT09IHVuZGVmaW5lZCB8fCBsYXN0ID09PSB1bmRlZmluZWQpIHtcbiAgICBib3VuZHNFcnJvcihvZmZzZXQsIHRoaXMubGVuZ3RoIC0gOClcbiAgfVxuXG4gIGNvbnN0IHZhbCA9IHRoaXNbb2Zmc2V0ICsgNF0gK1xuICAgIHRoaXNbb2Zmc2V0ICsgNV0gKiAyICoqIDggK1xuICAgIHRoaXNbb2Zmc2V0ICsgNl0gKiAyICoqIDE2ICtcbiAgICAobGFzdCA8PCAyNCkgLy8gT3ZlcmZsb3dcblxuICByZXR1cm4gKEJpZ0ludCh2YWwpIDw8IEJpZ0ludCgzMikpICtcbiAgICBCaWdJbnQoZmlyc3QgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiA4ICtcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMTYgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAyNClcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEJpZ0ludDY0QkUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gcmVhZEJpZ0ludDY0QkUgKG9mZnNldCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgdmFsaWRhdGVOdW1iZXIob2Zmc2V0LCAnb2Zmc2V0JylcbiAgY29uc3QgZmlyc3QgPSB0aGlzW29mZnNldF1cbiAgY29uc3QgbGFzdCA9IHRoaXNbb2Zmc2V0ICsgN11cbiAgaWYgKGZpcnN0ID09PSB1bmRlZmluZWQgfHwgbGFzdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYm91bmRzRXJyb3Iob2Zmc2V0LCB0aGlzLmxlbmd0aCAtIDgpXG4gIH1cblxuICBjb25zdCB2YWwgPSAoZmlyc3QgPDwgMjQpICsgLy8gT3ZlcmZsb3dcbiAgICB0aGlzWysrb2Zmc2V0XSAqIDIgKiogMTYgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiA4ICtcbiAgICB0aGlzWysrb2Zmc2V0XVxuXG4gIHJldHVybiAoQmlnSW50KHZhbCkgPDwgQmlnSW50KDMyKSkgK1xuICAgIEJpZ0ludCh0aGlzWysrb2Zmc2V0XSAqIDIgKiogMjQgK1xuICAgIHRoaXNbKytvZmZzZXRdICogMiAqKiAxNiArXG4gICAgdGhpc1srK29mZnNldF0gKiAyICoqIDggK1xuICAgIGxhc3QpXG59KVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdExFID0gZnVuY3Rpb24gcmVhZEZsb2F0TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRCRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdEJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDUyLCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVCRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCA1MiwgOClcbn1cblxuZnVuY3Rpb24gY2hlY2tJbnQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZmZlclwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKVxuICBpZiAodmFsdWUgPiBtYXggfHwgdmFsdWUgPCBtaW4pIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVpbnRMRSA9XG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY29uc3QgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICBsZXQgbXVsID0gMVxuICBsZXQgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVWludEJFID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjb25zdCBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIGxldCBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgbGV0IG11bCA9IDFcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVaW50OCA9XG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHhmZiwgMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVpbnQxNkxFID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVaW50MTZCRSA9XG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVWludDMyTEUgPVxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVpbnQzMkJFID1cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIHdydEJpZ1VJbnQ2NExFIChidWYsIHZhbHVlLCBvZmZzZXQsIG1pbiwgbWF4KSB7XG4gIGNoZWNrSW50QkkodmFsdWUsIG1pbiwgbWF4LCBidWYsIG9mZnNldCwgNylcblxuICBsZXQgbG8gPSBOdW1iZXIodmFsdWUgJiBCaWdJbnQoMHhmZmZmZmZmZikpXG4gIGJ1ZltvZmZzZXQrK10gPSBsb1xuICBsbyA9IGxvID4+IDhcbiAgYnVmW29mZnNldCsrXSA9IGxvXG4gIGxvID0gbG8gPj4gOFxuICBidWZbb2Zmc2V0KytdID0gbG9cbiAgbG8gPSBsbyA+PiA4XG4gIGJ1ZltvZmZzZXQrK10gPSBsb1xuICBsZXQgaGkgPSBOdW1iZXIodmFsdWUgPj4gQmlnSW50KDMyKSAmIEJpZ0ludCgweGZmZmZmZmZmKSlcbiAgYnVmW29mZnNldCsrXSA9IGhpXG4gIGhpID0gaGkgPj4gOFxuICBidWZbb2Zmc2V0KytdID0gaGlcbiAgaGkgPSBoaSA+PiA4XG4gIGJ1ZltvZmZzZXQrK10gPSBoaVxuICBoaSA9IGhpID4+IDhcbiAgYnVmW29mZnNldCsrXSA9IGhpXG4gIHJldHVybiBvZmZzZXRcbn1cblxuZnVuY3Rpb24gd3J0QmlnVUludDY0QkUgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbWluLCBtYXgpIHtcbiAgY2hlY2tJbnRCSSh2YWx1ZSwgbWluLCBtYXgsIGJ1Ziwgb2Zmc2V0LCA3KVxuXG4gIGxldCBsbyA9IE51bWJlcih2YWx1ZSAmIEJpZ0ludCgweGZmZmZmZmZmKSlcbiAgYnVmW29mZnNldCArIDddID0gbG9cbiAgbG8gPSBsbyA+PiA4XG4gIGJ1ZltvZmZzZXQgKyA2XSA9IGxvXG4gIGxvID0gbG8gPj4gOFxuICBidWZbb2Zmc2V0ICsgNV0gPSBsb1xuICBsbyA9IGxvID4+IDhcbiAgYnVmW29mZnNldCArIDRdID0gbG9cbiAgbGV0IGhpID0gTnVtYmVyKHZhbHVlID4+IEJpZ0ludCgzMikgJiBCaWdJbnQoMHhmZmZmZmZmZikpXG4gIGJ1ZltvZmZzZXQgKyAzXSA9IGhpXG4gIGhpID0gaGkgPj4gOFxuICBidWZbb2Zmc2V0ICsgMl0gPSBoaVxuICBoaSA9IGhpID4+IDhcbiAgYnVmW29mZnNldCArIDFdID0gaGlcbiAgaGkgPSBoaSA+PiA4XG4gIGJ1ZltvZmZzZXRdID0gaGlcbiAgcmV0dXJuIG9mZnNldCArIDhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUJpZ1VJbnQ2NExFID0gZGVmaW5lQmlnSW50TWV0aG9kKGZ1bmN0aW9uIHdyaXRlQmlnVUludDY0TEUgKHZhbHVlLCBvZmZzZXQgPSAwKSB7XG4gIHJldHVybiB3cnRCaWdVSW50NjRMRSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBCaWdJbnQoMCksIEJpZ0ludCgnMHhmZmZmZmZmZmZmZmZmZmZmJykpXG59KVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlQmlnVUludDY0QkUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gd3JpdGVCaWdVSW50NjRCRSAodmFsdWUsIG9mZnNldCA9IDApIHtcbiAgcmV0dXJuIHdydEJpZ1VJbnQ2NEJFKHRoaXMsIHZhbHVlLCBvZmZzZXQsIEJpZ0ludCgwKSwgQmlnSW50KCcweGZmZmZmZmZmZmZmZmZmZmYnKSlcbn0pXG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY29uc3QgbGltaXQgPSBNYXRoLnBvdygyLCAoOCAqIGJ5dGVMZW5ndGgpIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgbGV0IGkgPSAwXG4gIGxldCBtdWwgPSAxXG4gIGxldCBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSAtIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY29uc3QgbGltaXQgPSBNYXRoLnBvdygyLCAoOCAqIGJ5dGVMZW5ndGgpIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgbGV0IGkgPSBieXRlTGVuZ3RoIC0gMVxuICBsZXQgbXVsID0gMVxuICBsZXQgc3ViID0gMFxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSArIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZiArIHZhbHVlICsgMVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyQkUgPSBmdW5jdGlvbiB3cml0ZUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmZmZmZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUJpZ0ludDY0TEUgPSBkZWZpbmVCaWdJbnRNZXRob2QoZnVuY3Rpb24gd3JpdGVCaWdJbnQ2NExFICh2YWx1ZSwgb2Zmc2V0ID0gMCkge1xuICByZXR1cm4gd3J0QmlnVUludDY0TEUodGhpcywgdmFsdWUsIG9mZnNldCwgLUJpZ0ludCgnMHg4MDAwMDAwMDAwMDAwMDAwJyksIEJpZ0ludCgnMHg3ZmZmZmZmZmZmZmZmZmZmJykpXG59KVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlQmlnSW50NjRCRSA9IGRlZmluZUJpZ0ludE1ldGhvZChmdW5jdGlvbiB3cml0ZUJpZ0ludDY0QkUgKHZhbHVlLCBvZmZzZXQgPSAwKSB7XG4gIHJldHVybiB3cnRCaWdVSW50NjRCRSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAtQmlnSW50KCcweDgwMDAwMDAwMDAwMDAwMDAnKSwgQmlnSW50KCcweDdmZmZmZmZmZmZmZmZmZmYnKSlcbn0pXG5cbmZ1bmN0aW9uIGNoZWNrSUVFRTc1NCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA0LCAzLjQwMjgyMzQ2NjM4NTI4ODZlKzM4LCAtMy40MDI4MjM0NjYzODUyODg2ZSszOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCAyMywgNClcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0TEUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRCRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG5mdW5jdGlvbiB3cml0ZURvdWJsZSAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgOCwgMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgsIC0xLjc5NzY5MzEzNDg2MjMxNTdFKzMwOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCA1MiwgOClcbiAgcmV0dXJuIG9mZnNldCArIDhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlQkUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG4vLyBjb3B5KHRhcmdldEJ1ZmZlciwgdGFyZ2V0U3RhcnQ9MCwgc291cmNlU3RhcnQ9MCwgc291cmNlRW5kPWJ1ZmZlci5sZW5ndGgpXG5CdWZmZXIucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5ICh0YXJnZXQsIHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHRhcmdldCkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ2FyZ3VtZW50IHNob3VsZCBiZSBhIEJ1ZmZlcicpXG4gIGlmICghc3RhcnQpIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCAmJiBlbmQgIT09IDApIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXRTdGFydCA+PSB0YXJnZXQubGVuZ3RoKSB0YXJnZXRTdGFydCA9IHRhcmdldC5sZW5ndGhcbiAgaWYgKCF0YXJnZXRTdGFydCkgdGFyZ2V0U3RhcnQgPSAwXG4gIGlmIChlbmQgPiAwICYmIGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIC8vIENvcHkgMCBieXRlczsgd2UncmUgZG9uZVxuICBpZiAoZW5kID09PSBzdGFydCkgcmV0dXJuIDBcbiAgaWYgKHRhcmdldC5sZW5ndGggPT09IDAgfHwgdGhpcy5sZW5ndGggPT09IDApIHJldHVybiAwXG5cbiAgLy8gRmF0YWwgZXJyb3IgY29uZGl0aW9uc1xuICBpZiAodGFyZ2V0U3RhcnQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3RhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMnKVxuICB9XG4gIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPj0gdGhpcy5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxuICBpZiAoZW5kIDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZUVuZCBvdXQgb2YgYm91bmRzJylcblxuICAvLyBBcmUgd2Ugb29iP1xuICBpZiAoZW5kID4gdGhpcy5sZW5ndGgpIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgPCBlbmQgLSBzdGFydCkge1xuICAgIGVuZCA9IHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCArIHN0YXJ0XG4gIH1cblxuICBjb25zdCBsZW4gPSBlbmQgLSBzdGFydFxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgdHlwZW9mIFVpbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBVc2UgYnVpbHQtaW4gd2hlbiBhdmFpbGFibGUsIG1pc3NpbmcgZnJvbSBJRTExXG4gICAgdGhpcy5jb3B5V2l0aGluKHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKVxuICB9IGVsc2Uge1xuICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGhpcy5zdWJhcnJheShzdGFydCwgZW5kKSxcbiAgICAgIHRhcmdldFN0YXJ0XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG4vLyBVc2FnZTpcbi8vICAgIGJ1ZmZlci5maWxsKG51bWJlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoYnVmZmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChzdHJpbmdbLCBvZmZzZXRbLCBlbmRdXVssIGVuY29kaW5nXSlcbkJ1ZmZlci5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIGZpbGwgKHZhbCwgc3RhcnQsIGVuZCwgZW5jb2RpbmcpIHtcbiAgLy8gSGFuZGxlIHN0cmluZyBjYXNlczpcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHR5cGVvZiBzdGFydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gc3RhcnRcbiAgICAgIHN0YXJ0ID0gMFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuZFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9XG4gICAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZycpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnICYmICFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICB9XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnN0IGNvZGUgPSB2YWwuY2hhckNvZGVBdCgwKVxuICAgICAgaWYgKChlbmNvZGluZyA9PT0gJ3V0ZjgnICYmIGNvZGUgPCAxMjgpIHx8XG4gICAgICAgICAgZW5jb2RpbmcgPT09ICdsYXRpbjEnKSB7XG4gICAgICAgIC8vIEZhc3QgcGF0aDogSWYgYHZhbGAgZml0cyBpbnRvIGEgc2luZ2xlIGJ5dGUsIHVzZSB0aGF0IG51bWVyaWMgdmFsdWUuXG4gICAgICAgIHZhbCA9IGNvZGVcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAyNTVcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnYm9vbGVhbicpIHtcbiAgICB2YWwgPSBOdW1iZXIodmFsKVxuICB9XG5cbiAgLy8gSW52YWxpZCByYW5nZXMgYXJlIG5vdCBzZXQgdG8gYSBkZWZhdWx0LCBzbyBjYW4gcmFuZ2UgY2hlY2sgZWFybHkuXG4gIGlmIChzdGFydCA8IDAgfHwgdGhpcy5sZW5ndGggPCBzdGFydCB8fCB0aGlzLmxlbmd0aCA8IGVuZCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdPdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID4+PiAwXG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5sZW5ndGggOiBlbmQgPj4+IDBcblxuICBpZiAoIXZhbCkgdmFsID0gMFxuXG4gIGxldCBpXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIHRoaXNbaV0gPSB2YWxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgYnl0ZXMgPSBCdWZmZXIuaXNCdWZmZXIodmFsKVxuICAgICAgPyB2YWxcbiAgICAgIDogQnVmZmVyLmZyb20odmFsLCBlbmNvZGluZylcbiAgICBjb25zdCBsZW4gPSBieXRlcy5sZW5ndGhcbiAgICBpZiAobGVuID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgdmFsdWUgXCInICsgdmFsICtcbiAgICAgICAgJ1wiIGlzIGludmFsaWQgZm9yIGFyZ3VtZW50IFwidmFsdWVcIicpXG4gICAgfVxuICAgIGZvciAoaSA9IDA7IGkgPCBlbmQgLSBzdGFydDsgKytpKSB7XG4gICAgICB0aGlzW2kgKyBzdGFydF0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIENVU1RPTSBFUlJPUlNcbi8vID09PT09PT09PT09PT1cblxuLy8gU2ltcGxpZmllZCB2ZXJzaW9ucyBmcm9tIE5vZGUsIGNoYW5nZWQgZm9yIEJ1ZmZlci1vbmx5IHVzYWdlXG5jb25zdCBlcnJvcnMgPSB7fVxuZnVuY3Rpb24gRSAoc3ltLCBnZXRNZXNzYWdlLCBCYXNlKSB7XG4gIGVycm9yc1tzeW1dID0gY2xhc3MgTm9kZUVycm9yIGV4dGVuZHMgQmFzZSB7XG4gICAgY29uc3RydWN0b3IgKCkge1xuICAgICAgc3VwZXIoKVxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ21lc3NhZ2UnLCB7XG4gICAgICAgIHZhbHVlOiBnZXRNZXNzYWdlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH0pXG5cbiAgICAgIC8vIEFkZCB0aGUgZXJyb3IgY29kZSB0byB0aGUgbmFtZSB0byBpbmNsdWRlIGl0IGluIHRoZSBzdGFjayB0cmFjZS5cbiAgICAgIHRoaXMubmFtZSA9IGAke3RoaXMubmFtZX0gWyR7c3ltfV1gXG4gICAgICAvLyBBY2Nlc3MgdGhlIHN0YWNrIHRvIGdlbmVyYXRlIHRoZSBlcnJvciBtZXNzYWdlIGluY2x1ZGluZyB0aGUgZXJyb3IgY29kZVxuICAgICAgLy8gZnJvbSB0aGUgbmFtZS5cbiAgICAgIHRoaXMuc3RhY2sgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcbiAgICAgIC8vIFJlc2V0IHRoZSBuYW1lIHRvIHRoZSBhY3R1YWwgbmFtZS5cbiAgICAgIGRlbGV0ZSB0aGlzLm5hbWVcbiAgICB9XG5cbiAgICBnZXQgY29kZSAoKSB7XG4gICAgICByZXR1cm4gc3ltXG4gICAgfVxuXG4gICAgc2V0IGNvZGUgKHZhbHVlKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2NvZGUnLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRvU3RyaW5nICgpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLm5hbWV9IFske3N5bX1dOiAke3RoaXMubWVzc2FnZX1gXG4gICAgfVxuICB9XG59XG5cbkUoJ0VSUl9CVUZGRVJfT1VUX09GX0JPVU5EUycsXG4gIGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiBgJHtuYW1lfSBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHNgXG4gICAgfVxuXG4gICAgcmV0dXJuICdBdHRlbXB0IHRvIGFjY2VzcyBtZW1vcnkgb3V0c2lkZSBidWZmZXIgYm91bmRzJ1xuICB9LCBSYW5nZUVycm9yKVxuRSgnRVJSX0lOVkFMSURfQVJHX1RZUEUnLFxuICBmdW5jdGlvbiAobmFtZSwgYWN0dWFsKSB7XG4gICAgcmV0dXJuIGBUaGUgXCIke25hbWV9XCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSAke3R5cGVvZiBhY3R1YWx9YFxuICB9LCBUeXBlRXJyb3IpXG5FKCdFUlJfT1VUX09GX1JBTkdFJyxcbiAgZnVuY3Rpb24gKHN0ciwgcmFuZ2UsIGlucHV0KSB7XG4gICAgbGV0IG1zZyA9IGBUaGUgdmFsdWUgb2YgXCIke3N0cn1cIiBpcyBvdXQgb2YgcmFuZ2UuYFxuICAgIGxldCByZWNlaXZlZCA9IGlucHV0XG4gICAgaWYgKE51bWJlci5pc0ludGVnZXIoaW5wdXQpICYmIE1hdGguYWJzKGlucHV0KSA+IDIgKiogMzIpIHtcbiAgICAgIHJlY2VpdmVkID0gYWRkTnVtZXJpY2FsU2VwYXJhdG9yKFN0cmluZyhpbnB1dCkpXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdiaWdpbnQnKSB7XG4gICAgICByZWNlaXZlZCA9IFN0cmluZyhpbnB1dClcbiAgICAgIGlmIChpbnB1dCA+IEJpZ0ludCgyKSAqKiBCaWdJbnQoMzIpIHx8IGlucHV0IDwgLShCaWdJbnQoMikgKiogQmlnSW50KDMyKSkpIHtcbiAgICAgICAgcmVjZWl2ZWQgPSBhZGROdW1lcmljYWxTZXBhcmF0b3IocmVjZWl2ZWQpXG4gICAgICB9XG4gICAgICByZWNlaXZlZCArPSAnbidcbiAgICB9XG4gICAgbXNnICs9IGAgSXQgbXVzdCBiZSAke3JhbmdlfS4gUmVjZWl2ZWQgJHtyZWNlaXZlZH1gXG4gICAgcmV0dXJuIG1zZ1xuICB9LCBSYW5nZUVycm9yKVxuXG5mdW5jdGlvbiBhZGROdW1lcmljYWxTZXBhcmF0b3IgKHZhbCkge1xuICBsZXQgcmVzID0gJydcbiAgbGV0IGkgPSB2YWwubGVuZ3RoXG4gIGNvbnN0IHN0YXJ0ID0gdmFsWzBdID09PSAnLScgPyAxIDogMFxuICBmb3IgKDsgaSA+PSBzdGFydCArIDQ7IGkgLT0gMykge1xuICAgIHJlcyA9IGBfJHt2YWwuc2xpY2UoaSAtIDMsIGkpfSR7cmVzfWBcbiAgfVxuICByZXR1cm4gYCR7dmFsLnNsaWNlKDAsIGkpfSR7cmVzfWBcbn1cblxuLy8gQ0hFQ0sgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT1cblxuZnVuY3Rpb24gY2hlY2tCb3VuZHMgKGJ1Ziwgb2Zmc2V0LCBieXRlTGVuZ3RoKSB7XG4gIHZhbGlkYXRlTnVtYmVyKG9mZnNldCwgJ29mZnNldCcpXG4gIGlmIChidWZbb2Zmc2V0XSA9PT0gdW5kZWZpbmVkIHx8IGJ1ZltvZmZzZXQgKyBieXRlTGVuZ3RoXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYm91bmRzRXJyb3Iob2Zmc2V0LCBidWYubGVuZ3RoIC0gKGJ5dGVMZW5ndGggKyAxKSlcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja0ludEJJICh2YWx1ZSwgbWluLCBtYXgsIGJ1Ziwgb2Zmc2V0LCBieXRlTGVuZ3RoKSB7XG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikge1xuICAgIGNvbnN0IG4gPSB0eXBlb2YgbWluID09PSAnYmlnaW50JyA/ICduJyA6ICcnXG4gICAgbGV0IHJhbmdlXG4gICAgaWYgKGJ5dGVMZW5ndGggPiAzKSB7XG4gICAgICBpZiAobWluID09PSAwIHx8IG1pbiA9PT0gQmlnSW50KDApKSB7XG4gICAgICAgIHJhbmdlID0gYD49IDAke259IGFuZCA8IDIke259ICoqICR7KGJ5dGVMZW5ndGggKyAxKSAqIDh9JHtufWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJhbmdlID0gYD49IC0oMiR7bn0gKiogJHsoYnl0ZUxlbmd0aCArIDEpICogOCAtIDF9JHtufSkgYW5kIDwgMiAqKiBgICtcbiAgICAgICAgICAgICAgICBgJHsoYnl0ZUxlbmd0aCArIDEpICogOCAtIDF9JHtufWBcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZ2UgPSBgPj0gJHttaW59JHtufSBhbmQgPD0gJHttYXh9JHtufWBcbiAgICB9XG4gICAgdGhyb3cgbmV3IGVycm9ycy5FUlJfT1VUX09GX1JBTkdFKCd2YWx1ZScsIHJhbmdlLCB2YWx1ZSlcbiAgfVxuICBjaGVja0JvdW5kcyhidWYsIG9mZnNldCwgYnl0ZUxlbmd0aClcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVOdW1iZXIgKHZhbHVlLCBuYW1lKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5FUlJfSU5WQUxJRF9BUkdfVFlQRShuYW1lLCAnbnVtYmVyJywgdmFsdWUpXG4gIH1cbn1cblxuZnVuY3Rpb24gYm91bmRzRXJyb3IgKHZhbHVlLCBsZW5ndGgsIHR5cGUpIHtcbiAgaWYgKE1hdGguZmxvb3IodmFsdWUpICE9PSB2YWx1ZSkge1xuICAgIHZhbGlkYXRlTnVtYmVyKHZhbHVlLCB0eXBlKVxuICAgIHRocm93IG5ldyBlcnJvcnMuRVJSX09VVF9PRl9SQU5HRSh0eXBlIHx8ICdvZmZzZXQnLCAnYW4gaW50ZWdlcicsIHZhbHVlKVxuICB9XG5cbiAgaWYgKGxlbmd0aCA8IDApIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkVSUl9CVUZGRVJfT1VUX09GX0JPVU5EUygpXG4gIH1cblxuICB0aHJvdyBuZXcgZXJyb3JzLkVSUl9PVVRfT0ZfUkFOR0UodHlwZSB8fCAnb2Zmc2V0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGA+PSAke3R5cGUgPyAxIDogMH0gYW5kIDw9ICR7bGVuZ3RofWAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSlcbn1cblxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PVxuXG5jb25zdCBJTlZBTElEX0JBU0U2NF9SRSA9IC9bXisvMC05QS1aYS16LV9dL2dcblxuZnVuY3Rpb24gYmFzZTY0Y2xlYW4gKHN0cikge1xuICAvLyBOb2RlIHRha2VzIGVxdWFsIHNpZ25zIGFzIGVuZCBvZiB0aGUgQmFzZTY0IGVuY29kaW5nXG4gIHN0ciA9IHN0ci5zcGxpdCgnPScpWzBdXG4gIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcXG4gYW5kIFxcdCBmcm9tIHRoZSBzdHJpbmcsIGJhc2U2NC1qcyBkb2VzIG5vdFxuICBzdHIgPSBzdHIudHJpbSgpLnJlcGxhY2UoSU5WQUxJRF9CQVNFNjRfUkUsICcnKVxuICAvLyBOb2RlIGNvbnZlcnRzIHN0cmluZ3Mgd2l0aCBsZW5ndGggPCAyIHRvICcnXG4gIGlmIChzdHIubGVuZ3RoIDwgMikgcmV0dXJuICcnXG4gIC8vIE5vZGUgYWxsb3dzIGZvciBub24tcGFkZGVkIGJhc2U2NCBzdHJpbmdzIChtaXNzaW5nIHRyYWlsaW5nID09PSksIGJhc2U2NC1qcyBkb2VzIG5vdFxuICB3aGlsZSAoc3RyLmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICBzdHIgPSBzdHIgKyAnPSdcbiAgfVxuICByZXR1cm4gc3RyXG59XG5cbmZ1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7XG4gIHVuaXRzID0gdW5pdHMgfHwgSW5maW5pdHlcbiAgbGV0IGNvZGVQb2ludFxuICBjb25zdCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoXG4gIGxldCBsZWFkU3Vycm9nYXRlID0gbnVsbFxuICBjb25zdCBieXRlcyA9IFtdXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG5cbiAgICAvLyBpcyBzdXJyb2dhdGUgY29tcG9uZW50XG4gICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHtcbiAgICAgIC8vIGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoIWxlYWRTdXJyb2dhdGUpIHtcbiAgICAgICAgLy8gbm8gbGVhZCB5ZXRcbiAgICAgICAgaWYgKGNvZGVQb2ludCA+IDB4REJGRikge1xuICAgICAgICAgIC8vIHVuZXhwZWN0ZWQgdHJhaWxcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAvLyB1bnBhaXJlZCBsZWFkXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHZhbGlkIGxlYWRcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIDIgbGVhZHMgaW4gYSByb3dcbiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHtcbiAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gdmFsaWQgc3Vycm9nYXRlIHBhaXJcbiAgICAgIGNvZGVQb2ludCA9IChsZWFkU3Vycm9nYXRlIC0gMHhEODAwIDw8IDEwIHwgY29kZVBvaW50IC0gMHhEQzAwKSArIDB4MTAwMDBcbiAgICB9IGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUpIHtcbiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgIH1cblxuICAgIGxlYWRTdXJyb2dhdGUgPSBudWxsXG5cbiAgICAvLyBlbmNvZGUgdXRmOFxuICAgIGlmIChjb2RlUG9pbnQgPCAweDgwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDEpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHg4MDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiB8IDB4QzAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDMpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgfCAweEUwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDExMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHgxMiB8IDB4RjAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29kZSBwb2ludCcpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ5dGVzXG59XG5cbmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7XG4gIGNvbnN0IGJ5dGVBcnJheSA9IFtdXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gTm9kZSdzIGNvZGUgc2VlbXMgdG8gYmUgZG9pbmcgdGhpcyBhbmQgbm90ICYgMHg3Ri4uXG4gICAgYnl0ZUFycmF5LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMgKHN0ciwgdW5pdHMpIHtcbiAgbGV0IGMsIGhpLCBsb1xuICBjb25zdCBieXRlQXJyYXkgPSBbXVxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuXG4gICAgYyA9IHN0ci5jaGFyQ29kZUF0KGkpXG4gICAgaGkgPSBjID4+IDhcbiAgICBsbyA9IGMgJSAyNTZcbiAgICBieXRlQXJyYXkucHVzaChsbylcbiAgICBieXRlQXJyYXkucHVzaChoaSlcbiAgfVxuXG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyAoc3RyKSB7XG4gIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSlcbn1cblxuZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIGxldCBpXG4gIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIGlmICgoaSArIG9mZnNldCA+PSBkc3QubGVuZ3RoKSB8fCAoaSA+PSBzcmMubGVuZ3RoKSkgYnJlYWtcbiAgICBkc3RbaSArIG9mZnNldF0gPSBzcmNbaV1cbiAgfVxuICByZXR1cm4gaVxufVxuXG4vLyBBcnJheUJ1ZmZlciBvciBVaW50OEFycmF5IG9iamVjdHMgZnJvbSBvdGhlciBjb250ZXh0cyAoaS5lLiBpZnJhbWVzKSBkbyBub3QgcGFzc1xuLy8gdGhlIGBpbnN0YW5jZW9mYCBjaGVjayBidXQgdGhleSBzaG91bGQgYmUgdHJlYXRlZCBhcyBvZiB0aGF0IHR5cGUuXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL2lzc3Vlcy8xNjZcbmZ1bmN0aW9uIGlzSW5zdGFuY2UgKG9iaiwgdHlwZSkge1xuICByZXR1cm4gb2JqIGluc3RhbmNlb2YgdHlwZSB8fFxuICAgIChvYmogIT0gbnVsbCAmJiBvYmouY29uc3RydWN0b3IgIT0gbnVsbCAmJiBvYmouY29uc3RydWN0b3IubmFtZSAhPSBudWxsICYmXG4gICAgICBvYmouY29uc3RydWN0b3IubmFtZSA9PT0gdHlwZS5uYW1lKVxufVxuZnVuY3Rpb24gbnVtYmVySXNOYU4gKG9iaikge1xuICAvLyBGb3IgSUUxMSBzdXBwb3J0XG4gIHJldHVybiBvYmogIT09IG9iaiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNlbGYtY29tcGFyZVxufVxuXG4vLyBDcmVhdGUgbG9va3VwIHRhYmxlIGZvciBgdG9TdHJpbmcoJ2hleCcpYFxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9pc3N1ZXMvMjE5XG5jb25zdCBoZXhTbGljZUxvb2t1cFRhYmxlID0gKGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYWxwaGFiZXQgPSAnMDEyMzQ1Njc4OWFiY2RlZidcbiAgY29uc3QgdGFibGUgPSBuZXcgQXJyYXkoMjU2KVxuICBmb3IgKGxldCBpID0gMDsgaSA8IDE2OyArK2kpIHtcbiAgICBjb25zdCBpMTYgPSBpICogMTZcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IDE2OyArK2opIHtcbiAgICAgIHRhYmxlW2kxNiArIGpdID0gYWxwaGFiZXRbaV0gKyBhbHBoYWJldFtqXVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGFibGVcbn0pKClcblxuLy8gUmV0dXJuIG5vdCBmdW5jdGlvbiB3aXRoIEVycm9yIGlmIEJpZ0ludCBub3Qgc3VwcG9ydGVkXG5mdW5jdGlvbiBkZWZpbmVCaWdJbnRNZXRob2QgKGZuKSB7XG4gIHJldHVybiB0eXBlb2YgQmlnSW50ID09PSAndW5kZWZpbmVkJyA/IEJ1ZmZlckJpZ0ludE5vdERlZmluZWQgOiBmblxufVxuXG5mdW5jdGlvbiBCdWZmZXJCaWdJbnROb3REZWZpbmVkICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdCaWdJbnQgbm90IHN1cHBvcnRlZCcpXG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBHZXRJbnRyaW5zaWMgPSByZXF1aXJlKCdnZXQtaW50cmluc2ljJyk7XG5cbnZhciBjYWxsQmluZCA9IHJlcXVpcmUoJy4vJyk7XG5cbnZhciAkaW5kZXhPZiA9IGNhbGxCaW5kKEdldEludHJpbnNpYygnU3RyaW5nLnByb3RvdHlwZS5pbmRleE9mJykpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNhbGxCb3VuZEludHJpbnNpYyhuYW1lLCBhbGxvd01pc3NpbmcpIHtcblx0dmFyIGludHJpbnNpYyA9IEdldEludHJpbnNpYyhuYW1lLCAhIWFsbG93TWlzc2luZyk7XG5cdGlmICh0eXBlb2YgaW50cmluc2ljID09PSAnZnVuY3Rpb24nICYmICRpbmRleE9mKG5hbWUsICcucHJvdG90eXBlLicpID4gLTEpIHtcblx0XHRyZXR1cm4gY2FsbEJpbmQoaW50cmluc2ljKTtcblx0fVxuXHRyZXR1cm4gaW50cmluc2ljO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGJpbmQgPSByZXF1aXJlKCdmdW5jdGlvbi1iaW5kJyk7XG52YXIgR2V0SW50cmluc2ljID0gcmVxdWlyZSgnZ2V0LWludHJpbnNpYycpO1xuXG52YXIgJGFwcGx5ID0gR2V0SW50cmluc2ljKCclRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5JScpO1xudmFyICRjYWxsID0gR2V0SW50cmluc2ljKCclRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwlJyk7XG52YXIgJHJlZmxlY3RBcHBseSA9IEdldEludHJpbnNpYygnJVJlZmxlY3QuYXBwbHklJywgdHJ1ZSkgfHwgYmluZC5jYWxsKCRjYWxsLCAkYXBwbHkpO1xuXG52YXIgJGdPUEQgPSBHZXRJbnRyaW5zaWMoJyVPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJScsIHRydWUpO1xudmFyICRkZWZpbmVQcm9wZXJ0eSA9IEdldEludHJpbnNpYygnJU9iamVjdC5kZWZpbmVQcm9wZXJ0eSUnLCB0cnVlKTtcbnZhciAkbWF4ID0gR2V0SW50cmluc2ljKCclTWF0aC5tYXglJyk7XG5cbmlmICgkZGVmaW5lUHJvcGVydHkpIHtcblx0dHJ5IHtcblx0XHQkZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyB2YWx1ZTogMSB9KTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdC8vIElFIDggaGFzIGEgYnJva2VuIGRlZmluZVByb3BlcnR5XG5cdFx0JGRlZmluZVByb3BlcnR5ID0gbnVsbDtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNhbGxCaW5kKG9yaWdpbmFsRnVuY3Rpb24pIHtcblx0dmFyIGZ1bmMgPSAkcmVmbGVjdEFwcGx5KGJpbmQsICRjYWxsLCBhcmd1bWVudHMpO1xuXHRpZiAoJGdPUEQgJiYgJGRlZmluZVByb3BlcnR5KSB7XG5cdFx0dmFyIGRlc2MgPSAkZ09QRChmdW5jLCAnbGVuZ3RoJyk7XG5cdFx0aWYgKGRlc2MuY29uZmlndXJhYmxlKSB7XG5cdFx0XHQvLyBvcmlnaW5hbCBsZW5ndGgsIHBsdXMgdGhlIHJlY2VpdmVyLCBtaW51cyBhbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgKGFmdGVyIHRoZSByZWNlaXZlcilcblx0XHRcdCRkZWZpbmVQcm9wZXJ0eShcblx0XHRcdFx0ZnVuYyxcblx0XHRcdFx0J2xlbmd0aCcsXG5cdFx0XHRcdHsgdmFsdWU6IDEgKyAkbWF4KDAsIG9yaWdpbmFsRnVuY3Rpb24ubGVuZ3RoIC0gKGFyZ3VtZW50cy5sZW5ndGggLSAxKSkgfVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGZ1bmM7XG59O1xuXG52YXIgYXBwbHlCaW5kID0gZnVuY3Rpb24gYXBwbHlCaW5kKCkge1xuXHRyZXR1cm4gJHJlZmxlY3RBcHBseShiaW5kLCAkYXBwbHksIGFyZ3VtZW50cyk7XG59O1xuXG5pZiAoJGRlZmluZVByb3BlcnR5KSB7XG5cdCRkZWZpbmVQcm9wZXJ0eShtb2R1bGUuZXhwb3J0cywgJ2FwcGx5JywgeyB2YWx1ZTogYXBwbHlCaW5kIH0pO1xufSBlbHNlIHtcblx0bW9kdWxlLmV4cG9ydHMuYXBwbHkgPSBhcHBseUJpbmQ7XG59XG4iLCIvKiEgRm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gcGxlYXNlIHNlZSBjYm9yLmpzLkxJQ0VOU0UudHh0ICovXG4hZnVuY3Rpb24odCxlKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJvYmplY3RcIj09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKGZ1bmN0aW9uKCl7dHJ5e3JldHVybiByZXF1aXJlKFwiYmlnbnVtYmVyLmpzXCIpfWNhdGNoKHQpe319KCkscmVxdWlyZShcInV0aWxcIikpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyxcInV0aWxcIl0sZSk6XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0cy5jYm9yPWUoZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHJlcXVpcmUoXCJiaWdudW1iZXIuanNcIil9Y2F0Y2godCl7fX0oKSxyZXF1aXJlKFwidXRpbFwiKSk6dC5jYm9yPWUodC5CaWdOdW1iZXIsdC51dGlsKX0odGhpcywoZnVuY3Rpb24odCxlKXtyZXR1cm4oKCk9Pnt2YXIgcj17NzQyOih0LGUpPT57XCJ1c2Ugc3RyaWN0XCI7ZS5ieXRlTGVuZ3RoPWZ1bmN0aW9uKHQpe3ZhciBlPXUodCkscj1lWzBdLG49ZVsxXTtyZXR1cm4gMyoocituKS80LW59LGUudG9CeXRlQXJyYXk9ZnVuY3Rpb24odCl7dmFyIGUscixvPXUodCkscz1vWzBdLGE9b1sxXSxsPW5ldyBpKGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gMyooZStyKS80LXJ9KDAscyxhKSksYz0wLGY9YT4wP3MtNDpzO2ZvcihyPTA7cjxmO3IrPTQpZT1uW3QuY2hhckNvZGVBdChyKV08PDE4fG5bdC5jaGFyQ29kZUF0KHIrMSldPDwxMnxuW3QuY2hhckNvZGVBdChyKzIpXTw8NnxuW3QuY2hhckNvZGVBdChyKzMpXSxsW2MrK109ZT4+MTYmMjU1LGxbYysrXT1lPj44JjI1NSxsW2MrK109MjU1JmU7cmV0dXJuIDI9PT1hJiYoZT1uW3QuY2hhckNvZGVBdChyKV08PDJ8blt0LmNoYXJDb2RlQXQocisxKV0+PjQsbFtjKytdPTI1NSZlKSwxPT09YSYmKGU9blt0LmNoYXJDb2RlQXQocildPDwxMHxuW3QuY2hhckNvZGVBdChyKzEpXTw8NHxuW3QuY2hhckNvZGVBdChyKzIpXT4+MixsW2MrK109ZT4+OCYyNTUsbFtjKytdPTI1NSZlKSxsfSxlLmZyb21CeXRlQXJyYXk9ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49dC5sZW5ndGgsaT1uJTMsbz1bXSxzPTE2MzgzLGE9MCx1PW4taTthPHU7YSs9cylvLnB1c2gobCh0LGEsYStzPnU/dTphK3MpKTtyZXR1cm4gMT09PWk/KGU9dFtuLTFdLG8ucHVzaChyW2U+PjJdK3JbZTw8NCY2M10rXCI9PVwiKSk6Mj09PWkmJihlPSh0W24tMl08PDgpK3Rbbi0xXSxvLnB1c2gocltlPj4xMF0rcltlPj40JjYzXStyW2U8PDImNjNdK1wiPVwiKSksby5qb2luKFwiXCIpfTtmb3IodmFyIHI9W10sbj1bXSxpPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBVaW50OEFycmF5P1VpbnQ4QXJyYXk6QXJyYXksbz1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cIixzPTAsYT1vLmxlbmd0aDtzPGE7KytzKXJbc109b1tzXSxuW28uY2hhckNvZGVBdChzKV09cztmdW5jdGlvbiB1KHQpe3ZhciBlPXQubGVuZ3RoO2lmKGUlND4wKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDRcIik7dmFyIHI9dC5pbmRleE9mKFwiPVwiKTtyZXR1cm4tMT09PXImJihyPWUpLFtyLHI9PT1lPzA6NC1yJTRdfWZ1bmN0aW9uIGwodCxlLG4pe2Zvcih2YXIgaSxvLHM9W10sYT1lO2E8bjthKz0zKWk9KHRbYV08PDE2JjE2NzExNjgwKSsodFthKzFdPDw4JjY1MjgwKSsoMjU1JnRbYSsyXSkscy5wdXNoKHJbKG89aSk+PjE4JjYzXStyW28+PjEyJjYzXStyW28+PjYmNjNdK3JbNjMmb10pO3JldHVybiBzLmpvaW4oXCJcIil9bltcIi1cIi5jaGFyQ29kZUF0KDApXT02MixuW1wiX1wiLmNoYXJDb2RlQXQoMCldPTYzfSw3NjQ6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0IG49cig3NDIpLGk9cig2NDUpLG89XCJmdW5jdGlvblwiPT10eXBlb2YgU3ltYm9sJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wuZm9yP1N5bWJvbC5mb3IoXCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbVwiKTpudWxsO2UuQnVmZmVyPXUsZS5TbG93QnVmZmVyPWZ1bmN0aW9uKHQpe3JldHVybit0IT10JiYodD0wKSx1LmFsbG9jKCt0KX0sZS5JTlNQRUNUX01BWF9CWVRFUz01MDtjb25zdCBzPTIxNDc0ODM2NDc7ZnVuY3Rpb24gYSh0KXtpZih0PnMpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBcIicrdCsnXCIgaXMgaW52YWxpZCBmb3Igb3B0aW9uIFwic2l6ZVwiJyk7Y29uc3QgZT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdS5wcm90b3R5cGUpLGV9ZnVuY3Rpb24gdSh0LGUscil7aWYoXCJudW1iZXJcIj09dHlwZW9mIHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInN0cmluZ1wiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBzdHJpbmcuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyk7cmV0dXJuIGYodCl9cmV0dXJuIGwodCxlLHIpfWZ1bmN0aW9uIGwodCxlLHIpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXJldHVybiBmdW5jdGlvbih0LGUpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlJiZcIlwiIT09ZXx8KGU9XCJ1dGY4XCIpLCF1LmlzRW5jb2RpbmcoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVua25vd24gZW5jb2Rpbmc6IFwiK2UpO2NvbnN0IHI9MHx5KHQsZSk7bGV0IG49YShyKTtjb25zdCBpPW4ud3JpdGUodCxlKTtyZXR1cm4gaSE9PXImJihuPW4uc2xpY2UoMCxpKSksbn0odCxlKTtpZihBcnJheUJ1ZmZlci5pc1ZpZXcodCkpcmV0dXJuIGZ1bmN0aW9uKHQpe2lmKEsodCxVaW50OEFycmF5KSl7Y29uc3QgZT1uZXcgVWludDhBcnJheSh0KTtyZXR1cm4gcChlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQsZS5ieXRlTGVuZ3RoKX1yZXR1cm4gaCh0KX0odCk7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgXCIrdHlwZW9mIHQpO2lmKEsodCxBcnJheUJ1ZmZlcil8fHQmJksodC5idWZmZXIsQXJyYXlCdWZmZXIpKXJldHVybiBwKHQsZSxyKTtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXImJihLKHQsU2hhcmVkQXJyYXlCdWZmZXIpfHx0JiZLKHQuYnVmZmVyLFNoYXJlZEFycmF5QnVmZmVyKSkpcmV0dXJuIHAodCxlLHIpO2lmKFwibnVtYmVyXCI9PXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgbnVtYmVyJyk7Y29uc3Qgbj10LnZhbHVlT2YmJnQudmFsdWVPZigpO2lmKG51bGwhPW4mJm4hPT10KXJldHVybiB1LmZyb20obixlLHIpO2NvbnN0IGk9ZnVuY3Rpb24odCl7aWYodS5pc0J1ZmZlcih0KSl7Y29uc3QgZT0wfGQodC5sZW5ndGgpLHI9YShlKTtyZXR1cm4gMD09PXIubGVuZ3RofHx0LmNvcHkociwwLDAsZSkscn1yZXR1cm4gdm9pZCAwIT09dC5sZW5ndGg/XCJudW1iZXJcIiE9dHlwZW9mIHQubGVuZ3RofHxYKHQubGVuZ3RoKT9hKDApOmgodCk6XCJCdWZmZXJcIj09PXQudHlwZSYmQXJyYXkuaXNBcnJheSh0LmRhdGEpP2godC5kYXRhKTp2b2lkIDB9KHQpO2lmKGkpcmV0dXJuIGk7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmbnVsbCE9U3ltYm9sLnRvUHJpbWl0aXZlJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0W1N5bWJvbC50b1ByaW1pdGl2ZV0pcmV0dXJuIHUuZnJvbSh0W1N5bWJvbC50b1ByaW1pdGl2ZV0oXCJzdHJpbmdcIiksZSxyKTt0aHJvdyBuZXcgVHlwZUVycm9yKFwiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgXCIrdHlwZW9mIHQpfWZ1bmN0aW9uIGModCl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIG51bWJlcicpO2lmKHQ8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIFwiJyt0KydcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKX1mdW5jdGlvbiBmKHQpe3JldHVybiBjKHQpLGEodDwwPzA6MHxkKHQpKX1mdW5jdGlvbiBoKHQpe2NvbnN0IGU9dC5sZW5ndGg8MD8wOjB8ZCh0Lmxlbmd0aCkscj1hKGUpO2ZvcihsZXQgbj0wO248ZTtuKz0xKXJbbl09MjU1JnRbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gcCh0LGUscil7aWYoZTwwfHx0LmJ5dGVMZW5ndGg8ZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJvZmZzZXRcIiBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHMnKTtpZih0LmJ5dGVMZW5ndGg8ZSsocnx8MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wibGVuZ3RoXCIgaXMgb3V0c2lkZSBvZiBidWZmZXIgYm91bmRzJyk7bGV0IG47cmV0dXJuIG49dm9pZCAwPT09ZSYmdm9pZCAwPT09cj9uZXcgVWludDhBcnJheSh0KTp2b2lkIDA9PT1yP25ldyBVaW50OEFycmF5KHQsZSk6bmV3IFVpbnQ4QXJyYXkodCxlLHIpLE9iamVjdC5zZXRQcm90b3R5cGVPZihuLHUucHJvdG90eXBlKSxufWZ1bmN0aW9uIGQodCl7aWYodD49cyl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkF0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gc2l6ZTogMHhcIitzLnRvU3RyaW5nKDE2KStcIiBieXRlc1wiKTtyZXR1cm4gMHx0fWZ1bmN0aW9uIHkodCxlKXtpZih1LmlzQnVmZmVyKHQpKXJldHVybiB0Lmxlbmd0aDtpZihBcnJheUJ1ZmZlci5pc1ZpZXcodCl8fEsodCxBcnJheUJ1ZmZlcikpcmV0dXJuIHQuYnl0ZUxlbmd0aDtpZihcInN0cmluZ1wiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJzdHJpbmdcIiBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBvciBBcnJheUJ1ZmZlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTtjb25zdCByPXQubGVuZ3RoLG49YXJndW1lbnRzLmxlbmd0aD4yJiYhMD09PWFyZ3VtZW50c1syXTtpZighbiYmMD09PXIpcmV0dXJuIDA7bGV0IGk9ITE7Zm9yKDs7KXN3aXRjaChlKXtjYXNlXCJhc2NpaVwiOmNhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOnJldHVybiByO2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOnJldHVybiBZKHQpLmxlbmd0aDtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4gMipyO2Nhc2VcImhleFwiOnJldHVybiByPj4+MTtjYXNlXCJiYXNlNjRcIjpyZXR1cm4gcSh0KS5sZW5ndGg7ZGVmYXVsdDppZihpKXJldHVybiBuPy0xOlkodCkubGVuZ3RoO2U9KFwiXCIrZSkudG9Mb3dlckNhc2UoKSxpPSEwfX1mdW5jdGlvbiBnKHQsZSxyKXtsZXQgbj0hMTtpZigodm9pZCAwPT09ZXx8ZTwwKSYmKGU9MCksZT50aGlzLmxlbmd0aClyZXR1cm5cIlwiO2lmKCh2b2lkIDA9PT1yfHxyPnRoaXMubGVuZ3RoKSYmKHI9dGhpcy5sZW5ndGgpLHI8PTApcmV0dXJuXCJcIjtpZigocj4+Pj0wKTw9KGU+Pj49MCkpcmV0dXJuXCJcIjtmb3IodHx8KHQ9XCJ1dGY4XCIpOzspc3dpdGNoKHQpe2Nhc2VcImhleFwiOnJldHVybiBSKHRoaXMsZSxyKTtjYXNlXCJ1dGY4XCI6Y2FzZVwidXRmLThcIjpyZXR1cm4gSSh0aGlzLGUscik7Y2FzZVwiYXNjaWlcIjpyZXR1cm4gTyh0aGlzLGUscik7Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuIHgodGhpcyxlLHIpO2Nhc2VcImJhc2U2NFwiOnJldHVybiBUKHRoaXMsZSxyKTtjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4gTih0aGlzLGUscik7ZGVmYXVsdDppZihuKXRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIit0KTt0PSh0K1wiXCIpLnRvTG93ZXJDYXNlKCksbj0hMH19ZnVuY3Rpb24gYih0LGUscil7Y29uc3Qgbj10W2VdO3RbZV09dFtyXSx0W3JdPW59ZnVuY3Rpb24gbSh0LGUscixuLGkpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm4tMTtpZihcInN0cmluZ1wiPT10eXBlb2Ygcj8obj1yLHI9MCk6cj4yMTQ3NDgzNjQ3P3I9MjE0NzQ4MzY0NzpyPC0yMTQ3NDgzNjQ4JiYocj0tMjE0NzQ4MzY0OCksWChyPStyKSYmKHI9aT8wOnQubGVuZ3RoLTEpLHI8MCYmKHI9dC5sZW5ndGgrcikscj49dC5sZW5ndGgpe2lmKGkpcmV0dXJuLTE7cj10Lmxlbmd0aC0xfWVsc2UgaWYocjwwKXtpZighaSlyZXR1cm4tMTtyPTB9aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJihlPXUuZnJvbShlLG4pKSx1LmlzQnVmZmVyKGUpKXJldHVybiAwPT09ZS5sZW5ndGg/LTE6dyh0LGUscixuLGkpO2lmKFwibnVtYmVyXCI9PXR5cGVvZiBlKXJldHVybiBlJj0yNTUsXCJmdW5jdGlvblwiPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZj9pP1VpbnQ4QXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCh0LGUscik6VWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbCh0LGUscik6dyh0LFtlXSxyLG4saSk7dGhyb3cgbmV3IFR5cGVFcnJvcihcInZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlclwiKX1mdW5jdGlvbiB3KHQsZSxyLG4saSl7bGV0IG8scz0xLGE9dC5sZW5ndGgsdT1lLmxlbmd0aDtpZih2b2lkIDAhPT1uJiYoXCJ1Y3MyXCI9PT0obj1TdHJpbmcobikudG9Mb3dlckNhc2UoKSl8fFwidWNzLTJcIj09PW58fFwidXRmMTZsZVwiPT09bnx8XCJ1dGYtMTZsZVwiPT09bikpe2lmKHQubGVuZ3RoPDJ8fGUubGVuZ3RoPDIpcmV0dXJuLTE7cz0yLGEvPTIsdS89MixyLz0yfWZ1bmN0aW9uIGwodCxlKXtyZXR1cm4gMT09PXM/dFtlXTp0LnJlYWRVSW50MTZCRShlKnMpfWlmKGkpe2xldCBuPS0xO2ZvcihvPXI7bzxhO28rKylpZihsKHQsbyk9PT1sKGUsLTE9PT1uPzA6by1uKSl7aWYoLTE9PT1uJiYobj1vKSxvLW4rMT09PXUpcmV0dXJuIG4qc31lbHNlLTEhPT1uJiYoby09by1uKSxuPS0xfWVsc2UgZm9yKHIrdT5hJiYocj1hLXUpLG89cjtvPj0wO28tLSl7bGV0IHI9ITA7Zm9yKGxldCBuPTA7bjx1O24rKylpZihsKHQsbytuKSE9PWwoZSxuKSl7cj0hMTticmVha31pZihyKXJldHVybiBvfXJldHVybi0xfWZ1bmN0aW9uIF8odCxlLHIsbil7cj1OdW1iZXIocil8fDA7Y29uc3QgaT10Lmxlbmd0aC1yO24/KG49TnVtYmVyKG4pKT5pJiYobj1pKTpuPWk7Y29uc3Qgbz1lLmxlbmd0aDtsZXQgcztmb3Iobj5vLzImJihuPW8vMikscz0wO3M8bjsrK3Mpe2NvbnN0IG49cGFyc2VJbnQoZS5zdWJzdHIoMipzLDIpLDE2KTtpZihYKG4pKXJldHVybiBzO3RbcitzXT1ufXJldHVybiBzfWZ1bmN0aW9uIEUodCxlLHIsbil7cmV0dXJuIFYoWShlLHQubGVuZ3RoLXIpLHQscixuKX1mdW5jdGlvbiB2KHQsZSxyLG4pe3JldHVybiBWKGZ1bmN0aW9uKHQpe2NvbnN0IGU9W107Zm9yKGxldCByPTA7cjx0Lmxlbmd0aDsrK3IpZS5wdXNoKDI1NSZ0LmNoYXJDb2RlQXQocikpO3JldHVybiBlfShlKSx0LHIsbil9ZnVuY3Rpb24gUyh0LGUscixuKXtyZXR1cm4gVihxKGUpLHQscixuKX1mdW5jdGlvbiBBKHQsZSxyLG4pe3JldHVybiBWKGZ1bmN0aW9uKHQsZSl7bGV0IHIsbixpO2NvbnN0IG89W107Zm9yKGxldCBzPTA7czx0Lmxlbmd0aCYmISgoZS09Mik8MCk7KytzKXI9dC5jaGFyQ29kZUF0KHMpLG49cj4+OCxpPXIlMjU2LG8ucHVzaChpKSxvLnB1c2gobik7cmV0dXJuIG99KGUsdC5sZW5ndGgtciksdCxyLG4pfWZ1bmN0aW9uIFQodCxlLHIpe3JldHVybiAwPT09ZSYmcj09PXQubGVuZ3RoP24uZnJvbUJ5dGVBcnJheSh0KTpuLmZyb21CeXRlQXJyYXkodC5zbGljZShlLHIpKX1mdW5jdGlvbiBJKHQsZSxyKXtyPU1hdGgubWluKHQubGVuZ3RoLHIpO2NvbnN0IG49W107bGV0IGk9ZTtmb3IoO2k8cjspe2NvbnN0IGU9dFtpXTtsZXQgbz1udWxsLHM9ZT4yMzk/NDplPjIyMz8zOmU+MTkxPzI6MTtpZihpK3M8PXIpe2xldCByLG4sYSx1O3N3aXRjaChzKXtjYXNlIDE6ZTwxMjgmJihvPWUpO2JyZWFrO2Nhc2UgMjpyPXRbaSsxXSwxMjg9PSgxOTImcikmJih1PSgzMSZlKTw8Nnw2MyZyLHU+MTI3JiYobz11KSk7YnJlYWs7Y2FzZSAzOnI9dFtpKzFdLG49dFtpKzJdLDEyOD09KDE5MiZyKSYmMTI4PT0oMTkyJm4pJiYodT0oMTUmZSk8PDEyfCg2MyZyKTw8Nnw2MyZuLHU+MjA0NyYmKHU8NTUyOTZ8fHU+NTczNDMpJiYobz11KSk7YnJlYWs7Y2FzZSA0OnI9dFtpKzFdLG49dFtpKzJdLGE9dFtpKzNdLDEyOD09KDE5MiZyKSYmMTI4PT0oMTkyJm4pJiYxMjg9PSgxOTImYSkmJih1PSgxNSZlKTw8MTh8KDYzJnIpPDwxMnwoNjMmbik8PDZ8NjMmYSx1PjY1NTM1JiZ1PDExMTQxMTImJihvPXUpKX19bnVsbD09PW8/KG89NjU1MzMscz0xKTpvPjY1NTM1JiYoby09NjU1MzYsbi5wdXNoKG8+Pj4xMCYxMDIzfDU1Mjk2KSxvPTU2MzIwfDEwMjMmbyksbi5wdXNoKG8pLGkrPXN9cmV0dXJuIGZ1bmN0aW9uKHQpe2NvbnN0IGU9dC5sZW5ndGg7aWYoZTw9QilyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsdCk7bGV0IHI9XCJcIixuPTA7Zm9yKDtuPGU7KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLHQuc2xpY2UobixuKz1CKSk7cmV0dXJuIHJ9KG4pfWUua01heExlbmd0aD1zLHUuVFlQRURfQVJSQVlfU1VQUE9SVD1mdW5jdGlvbigpe3RyeXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDEpLGU9e2ZvbzpmdW5jdGlvbigpe3JldHVybiA0Mn19O3JldHVybiBPYmplY3Quc2V0UHJvdG90eXBlT2YoZSxVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKHQsZSksNDI9PT10LmZvbygpfWNhdGNoKHQpe3JldHVybiExfX0oKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlR8fFwidW5kZWZpbmVkXCI9PXR5cGVvZiBjb25zb2xlfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBjb25zb2xlLmVycm9yfHxjb25zb2xlLmVycm9yKFwiVGhpcyBicm93c2VyIGxhY2tzIHR5cGVkIGFycmF5IChVaW50OEFycmF5KSBzdXBwb3J0IHdoaWNoIGlzIHJlcXVpcmVkIGJ5IGBidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQuXCIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LnByb3RvdHlwZSxcInBhcmVudFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKHUuaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnVmZmVyfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LnByb3RvdHlwZSxcIm9mZnNldFwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2lmKHUuaXNCdWZmZXIodGhpcykpcmV0dXJuIHRoaXMuYnl0ZU9mZnNldH19KSx1LnBvb2xTaXplPTgxOTIsdS5mcm9tPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbCh0LGUscil9LE9iamVjdC5zZXRQcm90b3R5cGVPZih1LnByb3RvdHlwZSxVaW50OEFycmF5LnByb3RvdHlwZSksT2JqZWN0LnNldFByb3RvdHlwZU9mKHUsVWludDhBcnJheSksdS5hbGxvYz1mdW5jdGlvbih0LGUscil7cmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gYyh0KSx0PD0wP2EodCk6dm9pZCAwIT09ZT9cInN0cmluZ1wiPT10eXBlb2Ygcj9hKHQpLmZpbGwoZSxyKTphKHQpLmZpbGwoZSk6YSh0KX0odCxlLHIpfSx1LmFsbG9jVW5zYWZlPWZ1bmN0aW9uKHQpe3JldHVybiBmKHQpfSx1LmFsbG9jVW5zYWZlU2xvdz1mdW5jdGlvbih0KXtyZXR1cm4gZih0KX0sdS5pc0J1ZmZlcj1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dCYmITA9PT10Ll9pc0J1ZmZlciYmdCE9PXUucHJvdG90eXBlfSx1LmNvbXBhcmU9ZnVuY3Rpb24odCxlKXtpZihLKHQsVWludDhBcnJheSkmJih0PXUuZnJvbSh0LHQub2Zmc2V0LHQuYnl0ZUxlbmd0aCkpLEsoZSxVaW50OEFycmF5KSYmKGU9dS5mcm9tKGUsZS5vZmZzZXQsZS5ieXRlTGVuZ3RoKSksIXUuaXNCdWZmZXIodCl8fCF1LmlzQnVmZmVyKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImJ1ZjFcIiwgXCJidWYyXCIgYXJndW1lbnRzIG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXknKTtpZih0PT09ZSlyZXR1cm4gMDtsZXQgcj10Lmxlbmd0aCxuPWUubGVuZ3RoO2ZvcihsZXQgaT0wLG89TWF0aC5taW4ocixuKTtpPG87KytpKWlmKHRbaV0hPT1lW2ldKXtyPXRbaV0sbj1lW2ldO2JyZWFrfXJldHVybiByPG4/LTE6bjxyPzE6MH0sdS5pc0VuY29kaW5nPWZ1bmN0aW9uKHQpe3N3aXRjaChTdHJpbmcodCkudG9Mb3dlckNhc2UoKSl7Y2FzZVwiaGV4XCI6Y2FzZVwidXRmOFwiOmNhc2VcInV0Zi04XCI6Y2FzZVwiYXNjaWlcIjpjYXNlXCJsYXRpbjFcIjpjYXNlXCJiaW5hcnlcIjpjYXNlXCJiYXNlNjRcIjpjYXNlXCJ1Y3MyXCI6Y2FzZVwidWNzLTJcIjpjYXNlXCJ1dGYxNmxlXCI6Y2FzZVwidXRmLTE2bGVcIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX0sdS5jb25jYXQ9ZnVuY3Rpb24odCxlKXtpZighQXJyYXkuaXNBcnJheSh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtpZigwPT09dC5sZW5ndGgpcmV0dXJuIHUuYWxsb2MoMCk7bGV0IHI7aWYodm9pZCAwPT09ZSlmb3IoZT0wLHI9MDtyPHQubGVuZ3RoOysrcillKz10W3JdLmxlbmd0aDtjb25zdCBuPXUuYWxsb2NVbnNhZmUoZSk7bGV0IGk9MDtmb3Iocj0wO3I8dC5sZW5ndGg7KytyKXtsZXQgZT10W3JdO2lmKEsoZSxVaW50OEFycmF5KSlpK2UubGVuZ3RoPm4ubGVuZ3RoPyh1LmlzQnVmZmVyKGUpfHwoZT11LmZyb20oZSkpLGUuY29weShuLGkpKTpVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChuLGUsaSk7ZWxzZXtpZighdS5pc0J1ZmZlcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKTtlLmNvcHkobixpKX1pKz1lLmxlbmd0aH1yZXR1cm4gbn0sdS5ieXRlTGVuZ3RoPXksdS5wcm90b3R5cGUuX2lzQnVmZmVyPSEwLHUucHJvdG90eXBlLnN3YXAxNj1mdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5sZW5ndGg7aWYodCUyIT0wKXRocm93IG5ldyBSYW5nZUVycm9yKFwiQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHNcIik7Zm9yKGxldCBlPTA7ZTx0O2UrPTIpYih0aGlzLGUsZSsxKTtyZXR1cm4gdGhpc30sdS5wcm90b3R5cGUuc3dhcDMyPWZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmxlbmd0aDtpZih0JTQhPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0c1wiKTtmb3IobGV0IGU9MDtlPHQ7ZSs9NCliKHRoaXMsZSxlKzMpLGIodGhpcyxlKzEsZSsyKTtyZXR1cm4gdGhpc30sdS5wcm90b3R5cGUuc3dhcDY0PWZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLmxlbmd0aDtpZih0JTghPTApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0c1wiKTtmb3IobGV0IGU9MDtlPHQ7ZSs9OCliKHRoaXMsZSxlKzcpLGIodGhpcyxlKzEsZSs2KSxiKHRoaXMsZSsyLGUrNSksYih0aGlzLGUrMyxlKzQpO3JldHVybiB0aGlzfSx1LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2NvbnN0IHQ9dGhpcy5sZW5ndGg7cmV0dXJuIDA9PT10P1wiXCI6MD09PWFyZ3VtZW50cy5sZW5ndGg/SSh0aGlzLDAsdCk6Zy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHUucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nPXUucHJvdG90eXBlLnRvU3RyaW5nLHUucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtpZighdS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlclwiKTtyZXR1cm4gdGhpcz09PXR8fDA9PT11LmNvbXBhcmUodGhpcyx0KX0sdS5wcm90b3R5cGUuaW5zcGVjdD1mdW5jdGlvbigpe2xldCB0PVwiXCI7Y29uc3Qgcj1lLklOU1BFQ1RfTUFYX0JZVEVTO3JldHVybiB0PXRoaXMudG9TdHJpbmcoXCJoZXhcIiwwLHIpLnJlcGxhY2UoLyguezJ9KS9nLFwiJDEgXCIpLnRyaW0oKSx0aGlzLmxlbmd0aD5yJiYodCs9XCIgLi4uIFwiKSxcIjxCdWZmZXIgXCIrdCtcIj5cIn0sbyYmKHUucHJvdG90eXBlW29dPXUucHJvdG90eXBlLmluc3BlY3QpLHUucHJvdG90eXBlLmNvbXBhcmU9ZnVuY3Rpb24odCxlLHIsbixpKXtpZihLKHQsVWludDhBcnJheSkmJih0PXUuZnJvbSh0LHQub2Zmc2V0LHQuYnl0ZUxlbmd0aCkpLCF1LmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcInRhcmdldFwiIGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgQnVmZmVyIG9yIFVpbnQ4QXJyYXkuIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgdCk7aWYodm9pZCAwPT09ZSYmKGU9MCksdm9pZCAwPT09ciYmKHI9dD90Lmxlbmd0aDowKSx2b2lkIDA9PT1uJiYobj0wKSx2b2lkIDA9PT1pJiYoaT10aGlzLmxlbmd0aCksZTwwfHxyPnQubGVuZ3RofHxuPDB8fGk+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJvdXQgb2YgcmFuZ2UgaW5kZXhcIik7aWYobj49aSYmZT49cilyZXR1cm4gMDtpZihuPj1pKXJldHVybi0xO2lmKGU+PXIpcmV0dXJuIDE7aWYodGhpcz09PXQpcmV0dXJuIDA7bGV0IG89KGk+Pj49MCktKG4+Pj49MCkscz0ocj4+Pj0wKS0oZT4+Pj0wKTtjb25zdCBhPU1hdGgubWluKG8scyksbD10aGlzLnNsaWNlKG4saSksYz10LnNsaWNlKGUscik7Zm9yKGxldCB0PTA7dDxhOysrdClpZihsW3RdIT09Y1t0XSl7bz1sW3RdLHM9Y1t0XTticmVha31yZXR1cm4gbzxzPy0xOnM8bz8xOjB9LHUucHJvdG90eXBlLmluY2x1ZGVzPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4tMSE9PXRoaXMuaW5kZXhPZih0LGUscil9LHUucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24odCxlLHIpe3JldHVybiBtKHRoaXMsdCxlLHIsITApfSx1LnByb3RvdHlwZS5sYXN0SW5kZXhPZj1mdW5jdGlvbih0LGUscil7cmV0dXJuIG0odGhpcyx0LGUsciwhMSl9LHUucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQsZSxyLG4pe2lmKHZvaWQgMD09PWUpbj1cInV0ZjhcIixyPXRoaXMubGVuZ3RoLGU9MDtlbHNlIGlmKHZvaWQgMD09PXImJlwic3RyaW5nXCI9PXR5cGVvZiBlKW49ZSxyPXRoaXMubGVuZ3RoLGU9MDtlbHNle2lmKCFpc0Zpbml0ZShlKSl0aHJvdyBuZXcgRXJyb3IoXCJCdWZmZXIud3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0WywgbGVuZ3RoXSkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZFwiKTtlPj4+PTAsaXNGaW5pdGUocik/KHI+Pj49MCx2b2lkIDA9PT1uJiYobj1cInV0ZjhcIikpOihuPXIscj12b2lkIDApfWNvbnN0IGk9dGhpcy5sZW5ndGgtZTtpZigodm9pZCAwPT09cnx8cj5pKSYmKHI9aSksdC5sZW5ndGg+MCYmKHI8MHx8ZTwwKXx8ZT50aGlzLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzXCIpO258fChuPVwidXRmOFwiKTtsZXQgbz0hMTtmb3IoOzspc3dpdGNoKG4pe2Nhc2VcImhleFwiOnJldHVybiBfKHRoaXMsdCxlLHIpO2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOnJldHVybiBFKHRoaXMsdCxlLHIpO2Nhc2VcImFzY2lpXCI6Y2FzZVwibGF0aW4xXCI6Y2FzZVwiYmluYXJ5XCI6cmV0dXJuIHYodGhpcyx0LGUscik7Y2FzZVwiYmFzZTY0XCI6cmV0dXJuIFModGhpcyx0LGUscik7Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6cmV0dXJuIEEodGhpcyx0LGUscik7ZGVmYXVsdDppZihvKXRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIituKTtuPShcIlwiK24pLnRvTG93ZXJDYXNlKCksbz0hMH19LHUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOlwiQnVmZmVyXCIsZGF0YTpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnJ8fHRoaXMsMCl9fTtjb25zdCBCPTQwOTY7ZnVuY3Rpb24gTyh0LGUscil7bGV0IG49XCJcIjtyPU1hdGgubWluKHQubGVuZ3RoLHIpO2ZvcihsZXQgaT1lO2k8cjsrK2kpbis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmdFtpXSk7cmV0dXJuIG59ZnVuY3Rpb24geCh0LGUscil7bGV0IG49XCJcIjtyPU1hdGgubWluKHQubGVuZ3RoLHIpO2ZvcihsZXQgaT1lO2k8cjsrK2kpbis9U3RyaW5nLmZyb21DaGFyQ29kZSh0W2ldKTtyZXR1cm4gbn1mdW5jdGlvbiBSKHQsZSxyKXtjb25zdCBuPXQubGVuZ3RoOyghZXx8ZTwwKSYmKGU9MCksKCFyfHxyPDB8fHI+bikmJihyPW4pO2xldCBpPVwiXCI7Zm9yKGxldCBuPWU7bjxyOysrbilpKz1KW3Rbbl1dO3JldHVybiBpfWZ1bmN0aW9uIE4odCxlLHIpe2NvbnN0IG49dC5zbGljZShlLHIpO2xldCBpPVwiXCI7Zm9yKGxldCB0PTA7dDxuLmxlbmd0aC0xO3QrPTIpaSs9U3RyaW5nLmZyb21DaGFyQ29kZShuW3RdKzI1NipuW3QrMV0pO3JldHVybiBpfWZ1bmN0aW9uIEwodCxlLHIpe2lmKHQlMSE9MHx8dDwwKXRocm93IG5ldyBSYW5nZUVycm9yKFwib2Zmc2V0IGlzIG5vdCB1aW50XCIpO2lmKHQrZT5yKXRocm93IG5ldyBSYW5nZUVycm9yKFwiVHJ5aW5nIHRvIGFjY2VzcyBiZXlvbmQgYnVmZmVyIGxlbmd0aFwiKX1mdW5jdGlvbiBQKHQsZSxyLG4saSxvKXtpZighdS5pc0J1ZmZlcih0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZmZlclwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtpZihlPml8fGU8byl0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IGlzIG91dCBvZiBib3VuZHMnKTtpZihyK24+dC5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbmRleCBvdXQgb2YgcmFuZ2VcIil9ZnVuY3Rpb24gTSh0LGUscixuLGkpe0coZSxuLGksdCxyLDcpO2xldCBvPU51bWJlcihlJkJpZ0ludCg0Mjk0OTY3Mjk1KSk7dFtyKytdPW8sbz4+PTgsdFtyKytdPW8sbz4+PTgsdFtyKytdPW8sbz4+PTgsdFtyKytdPW87bGV0IHM9TnVtYmVyKGU+PkJpZ0ludCgzMikmQmlnSW50KDQyOTQ5NjcyOTUpKTtyZXR1cm4gdFtyKytdPXMscz4+PTgsdFtyKytdPXMscz4+PTgsdFtyKytdPXMscz4+PTgsdFtyKytdPXMscn1mdW5jdGlvbiBVKHQsZSxyLG4saSl7RyhlLG4saSx0LHIsNyk7bGV0IG89TnVtYmVyKGUmQmlnSW50KDQyOTQ5NjcyOTUpKTt0W3IrN109byxvPj49OCx0W3IrNl09byxvPj49OCx0W3IrNV09byxvPj49OCx0W3IrNF09bztsZXQgcz1OdW1iZXIoZT4+QmlnSW50KDMyKSZCaWdJbnQoNDI5NDk2NzI5NSkpO3JldHVybiB0W3IrM109cyxzPj49OCx0W3IrMl09cyxzPj49OCx0W3IrMV09cyxzPj49OCx0W3JdPXMscis4fWZ1bmN0aW9uIGoodCxlLHIsbixpLG8pe2lmKHIrbj50Lmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkluZGV4IG91dCBvZiByYW5nZVwiKTtpZihyPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbmRleCBvdXQgb2YgcmFuZ2VcIil9ZnVuY3Rpb24gayh0LGUscixuLG8pe3JldHVybiBlPStlLHI+Pj49MCxvfHxqKHQsMCxyLDQpLGkud3JpdGUodCxlLHIsbiwyMyw0KSxyKzR9ZnVuY3Rpb24gJCh0LGUscixuLG8pe3JldHVybiBlPStlLHI+Pj49MCxvfHxqKHQsMCxyLDgpLGkud3JpdGUodCxlLHIsbiw1Miw4KSxyKzh9dS5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24odCxlKXtjb25zdCByPXRoaXMubGVuZ3RoOyh0PX5+dCk8MD8odCs9cik8MCYmKHQ9MCk6dD5yJiYodD1yKSwoZT12b2lkIDA9PT1lP3I6fn5lKTwwPyhlKz1yKTwwJiYoZT0wKTplPnImJihlPXIpLGU8dCYmKGU9dCk7Y29uc3Qgbj10aGlzLnN1YmFycmF5KHQsZSk7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihuLHUucHJvdG90eXBlKSxufSx1LnByb3RvdHlwZS5yZWFkVWludExFPXUucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24odCxlLHIpe3Q+Pj49MCxlPj4+PTAscnx8TCh0LGUsdGhpcy5sZW5ndGgpO2xldCBuPXRoaXNbdF0saT0xLG89MDtmb3IoOysrbzxlJiYoaSo9MjU2KTspbis9dGhpc1t0K29dKmk7cmV0dXJuIG59LHUucHJvdG90eXBlLnJlYWRVaW50QkU9dS5wcm90b3R5cGUucmVhZFVJbnRCRT1mdW5jdGlvbih0LGUscil7dD4+Pj0wLGU+Pj49MCxyfHxMKHQsZSx0aGlzLmxlbmd0aCk7bGV0IG49dGhpc1t0Ky0tZV0saT0xO2Zvcig7ZT4wJiYoaSo9MjU2KTspbis9dGhpc1t0Ky0tZV0qaTtyZXR1cm4gbn0sdS5wcm90b3R5cGUucmVhZFVpbnQ4PXUucHJvdG90eXBlLnJlYWRVSW50OD1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8TCh0LDEsdGhpcy5sZW5ndGgpLHRoaXNbdF19LHUucHJvdG90eXBlLnJlYWRVaW50MTZMRT11LnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCwyLHRoaXMubGVuZ3RoKSx0aGlzW3RdfHRoaXNbdCsxXTw8OH0sdS5wcm90b3R5cGUucmVhZFVpbnQxNkJFPXUucHJvdG90eXBlLnJlYWRVSW50MTZCRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8TCh0LDIsdGhpcy5sZW5ndGgpLHRoaXNbdF08PDh8dGhpc1t0KzFdfSx1LnByb3RvdHlwZS5yZWFkVWludDMyTEU9dS5wcm90b3R5cGUucmVhZFVJbnQzMkxFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsNCx0aGlzLmxlbmd0aCksKHRoaXNbdF18dGhpc1t0KzFdPDw4fHRoaXNbdCsyXTw8MTYpKzE2Nzc3MjE2KnRoaXNbdCszXX0sdS5wcm90b3R5cGUucmVhZFVpbnQzMkJFPXUucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8TCh0LDQsdGhpcy5sZW5ndGgpLDE2Nzc3MjE2KnRoaXNbdF0rKHRoaXNbdCsxXTw8MTZ8dGhpc1t0KzJdPDw4fHRoaXNbdCszXSl9LHUucHJvdG90eXBlLnJlYWRCaWdVSW50NjRMRT1aKChmdW5jdGlvbih0KXtXKHQ+Pj49MCxcIm9mZnNldFwiKTtjb25zdCBlPXRoaXNbdF0scj10aGlzW3QrN107dm9pZCAwIT09ZSYmdm9pZCAwIT09cnx8eih0LHRoaXMubGVuZ3RoLTgpO2NvbnN0IG49ZSsyNTYqdGhpc1srK3RdKzY1NTM2KnRoaXNbKyt0XSt0aGlzWysrdF0qMioqMjQsaT10aGlzWysrdF0rMjU2KnRoaXNbKyt0XSs2NTUzNip0aGlzWysrdF0rcioyKioyNDtyZXR1cm4gQmlnSW50KG4pKyhCaWdJbnQoaSk8PEJpZ0ludCgzMikpfSkpLHUucHJvdG90eXBlLnJlYWRCaWdVSW50NjRCRT1aKChmdW5jdGlvbih0KXtXKHQ+Pj49MCxcIm9mZnNldFwiKTtjb25zdCBlPXRoaXNbdF0scj10aGlzW3QrN107dm9pZCAwIT09ZSYmdm9pZCAwIT09cnx8eih0LHRoaXMubGVuZ3RoLTgpO2NvbnN0IG49ZSoyKioyNCs2NTUzNip0aGlzWysrdF0rMjU2KnRoaXNbKyt0XSt0aGlzWysrdF0saT10aGlzWysrdF0qMioqMjQrNjU1MzYqdGhpc1srK3RdKzI1Nip0aGlzWysrdF0rcjtyZXR1cm4oQmlnSW50KG4pPDxCaWdJbnQoMzIpKStCaWdJbnQoaSl9KSksdS5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKHQsZSxyKXt0Pj4+PTAsZT4+Pj0wLHJ8fEwodCxlLHRoaXMubGVuZ3RoKTtsZXQgbj10aGlzW3RdLGk9MSxvPTA7Zm9yKDsrK288ZSYmKGkqPTI1Nik7KW4rPXRoaXNbdCtvXSppO3JldHVybiBpKj0xMjgsbj49aSYmKG4tPU1hdGgucG93KDIsOCplKSksbn0sdS5wcm90b3R5cGUucmVhZEludEJFPWZ1bmN0aW9uKHQsZSxyKXt0Pj4+PTAsZT4+Pj0wLHJ8fEwodCxlLHRoaXMubGVuZ3RoKTtsZXQgbj1lLGk9MSxvPXRoaXNbdCstLW5dO2Zvcig7bj4wJiYoaSo9MjU2KTspbys9dGhpc1t0Ky0tbl0qaTtyZXR1cm4gaSo9MTI4LG8+PWkmJihvLT1NYXRoLnBvdygyLDgqZSkpLG99LHUucHJvdG90eXBlLnJlYWRJbnQ4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsMSx0aGlzLmxlbmd0aCksMTI4JnRoaXNbdF0/LTEqKDI1NS10aGlzW3RdKzEpOnRoaXNbdF19LHUucHJvdG90eXBlLnJlYWRJbnQxNkxFPWZ1bmN0aW9uKHQsZSl7dD4+Pj0wLGV8fEwodCwyLHRoaXMubGVuZ3RoKTtjb25zdCByPXRoaXNbdF18dGhpc1t0KzFdPDw4O3JldHVybiAzMjc2OCZyPzQyOTQ5MDE3NjB8cjpyfSx1LnByb3RvdHlwZS5yZWFkSW50MTZCRT1mdW5jdGlvbih0LGUpe3Q+Pj49MCxlfHxMKHQsMix0aGlzLmxlbmd0aCk7Y29uc3Qgcj10aGlzW3QrMV18dGhpc1t0XTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sdS5wcm90b3R5cGUucmVhZEludDMyTEU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD4+Pj0wLGV8fEwodCw0LHRoaXMubGVuZ3RoKSx0aGlzW3RdfHRoaXNbdCsxXTw8OHx0aGlzW3QrMl08PDE2fHRoaXNbdCszXTw8MjR9LHUucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsNCx0aGlzLmxlbmd0aCksdGhpc1t0XTw8MjR8dGhpc1t0KzFdPDwxNnx0aGlzW3QrMl08PDh8dGhpc1t0KzNdfSx1LnByb3RvdHlwZS5yZWFkQmlnSW50NjRMRT1aKChmdW5jdGlvbih0KXtXKHQ+Pj49MCxcIm9mZnNldFwiKTtjb25zdCBlPXRoaXNbdF0scj10aGlzW3QrN107dm9pZCAwIT09ZSYmdm9pZCAwIT09cnx8eih0LHRoaXMubGVuZ3RoLTgpO2NvbnN0IG49dGhpc1t0KzRdKzI1Nip0aGlzW3QrNV0rNjU1MzYqdGhpc1t0KzZdKyhyPDwyNCk7cmV0dXJuKEJpZ0ludChuKTw8QmlnSW50KDMyKSkrQmlnSW50KGUrMjU2KnRoaXNbKyt0XSs2NTUzNip0aGlzWysrdF0rdGhpc1srK3RdKjIqKjI0KX0pKSx1LnByb3RvdHlwZS5yZWFkQmlnSW50NjRCRT1aKChmdW5jdGlvbih0KXtXKHQ+Pj49MCxcIm9mZnNldFwiKTtjb25zdCBlPXRoaXNbdF0scj10aGlzW3QrN107dm9pZCAwIT09ZSYmdm9pZCAwIT09cnx8eih0LHRoaXMubGVuZ3RoLTgpO2NvbnN0IG49KGU8PDI0KSs2NTUzNip0aGlzWysrdF0rMjU2KnRoaXNbKyt0XSt0aGlzWysrdF07cmV0dXJuKEJpZ0ludChuKTw8QmlnSW50KDMyKSkrQmlnSW50KHRoaXNbKyt0XSoyKioyNCs2NTUzNip0aGlzWysrdF0rMjU2KnRoaXNbKyt0XStyKX0pKSx1LnByb3RvdHlwZS5yZWFkRmxvYXRMRT1mdW5jdGlvbih0LGUpe3JldHVybiB0Pj4+PTAsZXx8TCh0LDQsdGhpcy5sZW5ndGgpLGkucmVhZCh0aGlzLHQsITAsMjMsNCl9LHUucHJvdG90eXBlLnJlYWRGbG9hdEJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsNCx0aGlzLmxlbmd0aCksaS5yZWFkKHRoaXMsdCwhMSwyMyw0KX0sdS5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsOCx0aGlzLmxlbmd0aCksaS5yZWFkKHRoaXMsdCwhMCw1Miw4KX0sdS5wcm90b3R5cGUucmVhZERvdWJsZUJFPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ+Pj49MCxlfHxMKHQsOCx0aGlzLmxlbmd0aCksaS5yZWFkKHRoaXMsdCwhMSw1Miw4KX0sdS5wcm90b3R5cGUud3JpdGVVaW50TEU9dS5wcm90b3R5cGUud3JpdGVVSW50TEU9ZnVuY3Rpb24odCxlLHIsbil7dD0rdCxlPj4+PTAscj4+Pj0wLG58fFAodGhpcyx0LGUscixNYXRoLnBvdygyLDgqciktMSwwKTtsZXQgaT0xLG89MDtmb3IodGhpc1tlXT0yNTUmdDsrK288ciYmKGkqPTI1Nik7KXRoaXNbZStvXT10L2kmMjU1O3JldHVybiBlK3J9LHUucHJvdG90eXBlLndyaXRlVWludEJFPXUucHJvdG90eXBlLndyaXRlVUludEJFPWZ1bmN0aW9uKHQsZSxyLG4pe3Q9K3QsZT4+Pj0wLHI+Pj49MCxufHxQKHRoaXMsdCxlLHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7bGV0IGk9ci0xLG89MTtmb3IodGhpc1tlK2ldPTI1NSZ0Oy0taT49MCYmKG8qPTI1Nik7KXRoaXNbZStpXT10L28mMjU1O3JldHVybiBlK3J9LHUucHJvdG90eXBlLndyaXRlVWludDg9dS5wcm90b3R5cGUud3JpdGVVSW50OD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsMSwyNTUsMCksdGhpc1tlXT0yNTUmdCxlKzF9LHUucHJvdG90eXBlLndyaXRlVWludDE2TEU9dS5wcm90b3R5cGUud3JpdGVVSW50MTZMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsMiw2NTUzNSwwKSx0aGlzW2VdPTI1NSZ0LHRoaXNbZSsxXT10Pj4+OCxlKzJ9LHUucHJvdG90eXBlLndyaXRlVWludDE2QkU9dS5wcm90b3R5cGUud3JpdGVVSW50MTZCRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsMiw2NTUzNSwwKSx0aGlzW2VdPXQ+Pj44LHRoaXNbZSsxXT0yNTUmdCxlKzJ9LHUucHJvdG90eXBlLndyaXRlVWludDMyTEU9dS5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbZSszXT10Pj4+MjQsdGhpc1tlKzJdPXQ+Pj4xNix0aGlzW2UrMV09dD4+PjgsdGhpc1tlXT0yNTUmdCxlKzR9LHUucHJvdG90eXBlLndyaXRlVWludDMyQkU9dS5wcm90b3R5cGUud3JpdGVVSW50MzJCRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsNCw0Mjk0OTY3Mjk1LDApLHRoaXNbZV09dD4+PjI0LHRoaXNbZSsxXT10Pj4+MTYsdGhpc1tlKzJdPXQ+Pj44LHRoaXNbZSszXT0yNTUmdCxlKzR9LHUucHJvdG90eXBlLndyaXRlQmlnVUludDY0TEU9WigoZnVuY3Rpb24odCxlPTApe3JldHVybiBNKHRoaXMsdCxlLEJpZ0ludCgwKSxCaWdJbnQoXCIweGZmZmZmZmZmZmZmZmZmZmZcIikpfSkpLHUucHJvdG90eXBlLndyaXRlQmlnVUludDY0QkU9WigoZnVuY3Rpb24odCxlPTApe3JldHVybiBVKHRoaXMsdCxlLEJpZ0ludCgwKSxCaWdJbnQoXCIweGZmZmZmZmZmZmZmZmZmZmZcIikpfSkpLHUucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24odCxlLHIsbil7aWYodD0rdCxlPj4+PTAsIW4pe2NvbnN0IG49TWF0aC5wb3coMiw4KnItMSk7UCh0aGlzLHQsZSxyLG4tMSwtbil9bGV0IGk9MCxvPTEscz0wO2Zvcih0aGlzW2VdPTI1NSZ0OysraTxyJiYobyo9MjU2KTspdDwwJiYwPT09cyYmMCE9PXRoaXNbZStpLTFdJiYocz0xKSx0aGlzW2UraV09KHQvbz4+MCktcyYyNTU7cmV0dXJuIGUrcn0sdS5wcm90b3R5cGUud3JpdGVJbnRCRT1mdW5jdGlvbih0LGUscixuKXtpZih0PSt0LGU+Pj49MCwhbil7Y29uc3Qgbj1NYXRoLnBvdygyLDgqci0xKTtQKHRoaXMsdCxlLHIsbi0xLC1uKX1sZXQgaT1yLTEsbz0xLHM9MDtmb3IodGhpc1tlK2ldPTI1NSZ0Oy0taT49MCYmKG8qPTI1Nik7KXQ8MCYmMD09PXMmJjAhPT10aGlzW2UraSsxXSYmKHM9MSksdGhpc1tlK2ldPSh0L28+PjApLXMmMjU1O3JldHVybiBlK3J9LHUucHJvdG90eXBlLndyaXRlSW50OD1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsMSwxMjcsLTEyOCksdDwwJiYodD0yNTUrdCsxKSx0aGlzW2VdPTI1NSZ0LGUrMX0sdS5wcm90b3R5cGUud3JpdGVJbnQxNkxFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gdD0rdCxlPj4+PTAscnx8UCh0aGlzLHQsZSwyLDMyNzY3LC0zMjc2OCksdGhpc1tlXT0yNTUmdCx0aGlzW2UrMV09dD4+PjgsZSsyfSx1LnByb3RvdHlwZS53cml0ZUludDE2QkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxQKHRoaXMsdCxlLDIsMzI3NjcsLTMyNzY4KSx0aGlzW2VdPXQ+Pj44LHRoaXNbZSsxXT0yNTUmdCxlKzJ9LHUucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuIHQ9K3QsZT4+Pj0wLHJ8fFAodGhpcyx0LGUsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSx0aGlzW2VdPTI1NSZ0LHRoaXNbZSsxXT10Pj4+OCx0aGlzW2UrMl09dD4+PjE2LHRoaXNbZSszXT10Pj4+MjQsZSs0fSx1LnByb3RvdHlwZS53cml0ZUludDMyQkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0PSt0LGU+Pj49MCxyfHxQKHRoaXMsdCxlLDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksdDwwJiYodD00Mjk0OTY3Mjk1K3QrMSksdGhpc1tlXT10Pj4+MjQsdGhpc1tlKzFdPXQ+Pj4xNix0aGlzW2UrMl09dD4+PjgsdGhpc1tlKzNdPTI1NSZ0LGUrNH0sdS5wcm90b3R5cGUud3JpdGVCaWdJbnQ2NExFPVooKGZ1bmN0aW9uKHQsZT0wKXtyZXR1cm4gTSh0aGlzLHQsZSwtQmlnSW50KFwiMHg4MDAwMDAwMDAwMDAwMDAwXCIpLEJpZ0ludChcIjB4N2ZmZmZmZmZmZmZmZmZmZlwiKSl9KSksdS5wcm90b3R5cGUud3JpdGVCaWdJbnQ2NEJFPVooKGZ1bmN0aW9uKHQsZT0wKXtyZXR1cm4gVSh0aGlzLHQsZSwtQmlnSW50KFwiMHg4MDAwMDAwMDAwMDAwMDAwXCIpLEJpZ0ludChcIjB4N2ZmZmZmZmZmZmZmZmZmZlwiKSl9KSksdS5wcm90b3R5cGUud3JpdGVGbG9hdExFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gayh0aGlzLHQsZSwhMCxyKX0sdS5wcm90b3R5cGUud3JpdGVGbG9hdEJFPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gayh0aGlzLHQsZSwhMSxyKX0sdS5wcm90b3R5cGUud3JpdGVEb3VibGVMRT1mdW5jdGlvbih0LGUscil7cmV0dXJuICQodGhpcyx0LGUsITAscil9LHUucHJvdG90eXBlLndyaXRlRG91YmxlQkU9ZnVuY3Rpb24odCxlLHIpe3JldHVybiAkKHRoaXMsdCxlLCExLHIpfSx1LnByb3RvdHlwZS5jb3B5PWZ1bmN0aW9uKHQsZSxyLG4pe2lmKCF1LmlzQnVmZmVyKHQpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJhcmd1bWVudCBzaG91bGQgYmUgYSBCdWZmZXJcIik7aWYocnx8KHI9MCksbnx8MD09PW58fChuPXRoaXMubGVuZ3RoKSxlPj10Lmxlbmd0aCYmKGU9dC5sZW5ndGgpLGV8fChlPTApLG4+MCYmbjxyJiYobj1yKSxuPT09cilyZXR1cm4gMDtpZigwPT09dC5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZihlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJ0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzXCIpO2lmKHI8MHx8cj49dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJJbmRleCBvdXQgb2YgcmFuZ2VcIik7aWYobjwwKXRocm93IG5ldyBSYW5nZUVycm9yKFwic291cmNlRW5kIG91dCBvZiBib3VuZHNcIik7bj50aGlzLmxlbmd0aCYmKG49dGhpcy5sZW5ndGgpLHQubGVuZ3RoLWU8bi1yJiYobj10Lmxlbmd0aC1lK3IpO2NvbnN0IGk9bi1yO3JldHVybiB0aGlzPT09dCYmXCJmdW5jdGlvblwiPT10eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbj90aGlzLmNvcHlXaXRoaW4oZSxyLG4pOlVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKHQsdGhpcy5zdWJhcnJheShyLG4pLGUpLGl9LHUucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24odCxlLHIsbil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlPyhuPWUsZT0wLHI9dGhpcy5sZW5ndGgpOlwic3RyaW5nXCI9PXR5cGVvZiByJiYobj1yLHI9dGhpcy5sZW5ndGgpLHZvaWQgMCE9PW4mJlwic3RyaW5nXCIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoXCJlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nXCIpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBuJiYhdS5pc0VuY29kaW5nKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmtub3duIGVuY29kaW5nOiBcIituKTtpZigxPT09dC5sZW5ndGgpe2NvbnN0IGU9dC5jaGFyQ29kZUF0KDApOyhcInV0ZjhcIj09PW4mJmU8MTI4fHxcImxhdGluMVwiPT09bikmJih0PWUpfX1lbHNlXCJudW1iZXJcIj09dHlwZW9mIHQ/dCY9MjU1OlwiYm9vbGVhblwiPT10eXBlb2YgdCYmKHQ9TnVtYmVyKHQpKTtpZihlPDB8fHRoaXMubGVuZ3RoPGV8fHRoaXMubGVuZ3RoPHIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJPdXQgb2YgcmFuZ2UgaW5kZXhcIik7aWYocjw9ZSlyZXR1cm4gdGhpcztsZXQgaTtpZihlPj4+PTAscj12b2lkIDA9PT1yP3RoaXMubGVuZ3RoOnI+Pj4wLHR8fCh0PTApLFwibnVtYmVyXCI9PXR5cGVvZiB0KWZvcihpPWU7aTxyOysraSl0aGlzW2ldPXQ7ZWxzZXtjb25zdCBvPXUuaXNCdWZmZXIodCk/dDp1LmZyb20odCxuKSxzPW8ubGVuZ3RoO2lmKDA9PT1zKXRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSB2YWx1ZSBcIicrdCsnXCIgaXMgaW52YWxpZCBmb3IgYXJndW1lbnQgXCJ2YWx1ZVwiJyk7Zm9yKGk9MDtpPHItZTsrK2kpdGhpc1tpK2VdPW9baSVzXX1yZXR1cm4gdGhpc307Y29uc3QgRj17fTtmdW5jdGlvbiBEKHQsZSxyKXtGW3RdPWNsYXNzIGV4dGVuZHMgcntjb25zdHJ1Y3Rvcigpe3N1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXCJtZXNzYWdlXCIse3ZhbHVlOmUuYXBwbHkodGhpcyxhcmd1bWVudHMpLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLHRoaXMubmFtZT1gJHt0aGlzLm5hbWV9IFske3R9XWAsdGhpcy5zdGFjayxkZWxldGUgdGhpcy5uYW1lfWdldCBjb2RlKCl7cmV0dXJuIHR9c2V0IGNvZGUodCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsXCJjb2RlXCIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHZhbHVlOnQsd3JpdGFibGU6ITB9KX10b1N0cmluZygpe3JldHVybmAke3RoaXMubmFtZX0gWyR7dH1dOiAke3RoaXMubWVzc2FnZX1gfX19ZnVuY3Rpb24gQyh0KXtsZXQgZT1cIlwiLHI9dC5sZW5ndGg7Y29uc3Qgbj1cIi1cIj09PXRbMF0/MTowO2Zvcig7cj49bis0O3ItPTMpZT1gXyR7dC5zbGljZShyLTMscil9JHtlfWA7cmV0dXJuYCR7dC5zbGljZSgwLHIpfSR7ZX1gfWZ1bmN0aW9uIEcodCxlLHIsbixpLG8pe2lmKHQ+cnx8dDxlKXtjb25zdCBuPVwiYmlnaW50XCI9PXR5cGVvZiBlP1wiblwiOlwiXCI7bGV0IGk7dGhyb3cgaT1vPjM/MD09PWV8fGU9PT1CaWdJbnQoMCk/YD49IDAke259IGFuZCA8IDIke259ICoqICR7OCoobysxKX0ke259YDpgPj0gLSgyJHtufSAqKiAkezgqKG8rMSktMX0ke259KSBhbmQgPCAyICoqICR7OCoobysxKS0xfSR7bn1gOmA+PSAke2V9JHtufSBhbmQgPD0gJHtyfSR7bn1gLG5ldyBGLkVSUl9PVVRfT0ZfUkFOR0UoXCJ2YWx1ZVwiLGksdCl9IWZ1bmN0aW9uKHQsZSxyKXtXKGUsXCJvZmZzZXRcIiksdm9pZCAwIT09dFtlXSYmdm9pZCAwIT09dFtlK3JdfHx6KGUsdC5sZW5ndGgtKHIrMSkpfShuLGksbyl9ZnVuY3Rpb24gVyh0LGUpe2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0KXRocm93IG5ldyBGLkVSUl9JTlZBTElEX0FSR19UWVBFKGUsXCJudW1iZXJcIix0KX1mdW5jdGlvbiB6KHQsZSxyKXtpZihNYXRoLmZsb29yKHQpIT09dCl0aHJvdyBXKHQsciksbmV3IEYuRVJSX09VVF9PRl9SQU5HRShyfHxcIm9mZnNldFwiLFwiYW4gaW50ZWdlclwiLHQpO2lmKGU8MCl0aHJvdyBuZXcgRi5FUlJfQlVGRkVSX09VVF9PRl9CT1VORFM7dGhyb3cgbmV3IEYuRVJSX09VVF9PRl9SQU5HRShyfHxcIm9mZnNldFwiLGA+PSAke3I/MTowfSBhbmQgPD0gJHtlfWAsdCl9RChcIkVSUl9CVUZGRVJfT1VUX09GX0JPVU5EU1wiLChmdW5jdGlvbih0KXtyZXR1cm4gdD9gJHt0fSBpcyBvdXRzaWRlIG9mIGJ1ZmZlciBib3VuZHNgOlwiQXR0ZW1wdCB0byBhY2Nlc3MgbWVtb3J5IG91dHNpZGUgYnVmZmVyIGJvdW5kc1wifSksUmFuZ2VFcnJvciksRChcIkVSUl9JTlZBTElEX0FSR19UWVBFXCIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuYFRoZSBcIiR7dH1cIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICR7dHlwZW9mIGV9YH0pLFR5cGVFcnJvciksRChcIkVSUl9PVVRfT0ZfUkFOR0VcIiwoZnVuY3Rpb24odCxlLHIpe2xldCBuPWBUaGUgdmFsdWUgb2YgXCIke3R9XCIgaXMgb3V0IG9mIHJhbmdlLmAsaT1yO3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKHIpJiZNYXRoLmFicyhyKT4yKiozMj9pPUMoU3RyaW5nKHIpKTpcImJpZ2ludFwiPT10eXBlb2YgciYmKGk9U3RyaW5nKHIpLChyPkJpZ0ludCgyKSoqQmlnSW50KDMyKXx8cjwtKEJpZ0ludCgyKSoqQmlnSW50KDMyKSkpJiYoaT1DKGkpKSxpKz1cIm5cIiksbis9YCBJdCBtdXN0IGJlICR7ZX0uIFJlY2VpdmVkICR7aX1gLG59KSxSYW5nZUVycm9yKTtjb25zdCBIPS9bXisvMC05QS1aYS16LV9dL2c7ZnVuY3Rpb24gWSh0LGUpe2xldCByO2U9ZXx8MS8wO2NvbnN0IG49dC5sZW5ndGg7bGV0IGk9bnVsbDtjb25zdCBvPVtdO2ZvcihsZXQgcz0wO3M8bjsrK3Mpe2lmKHI9dC5jaGFyQ29kZUF0KHMpLHI+NTUyOTUmJnI8NTczNDQpe2lmKCFpKXtpZihyPjU2MzE5KXsoZS09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSk7Y29udGludWV9aWYocysxPT09bil7KGUtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWk9cjtjb250aW51ZX1pZihyPDU2MzIwKXsoZS09Myk+LTEmJm8ucHVzaCgyMzksMTkxLDE4OSksaT1yO2NvbnRpbnVlfXI9NjU1MzYrKGktNTUyOTY8PDEwfHItNTYzMjApfWVsc2UgaSYmKGUtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2lmKGk9bnVsbCxyPDEyOCl7aWYoKGUtPTEpPDApYnJlYWs7by5wdXNoKHIpfWVsc2UgaWYocjwyMDQ4KXtpZigoZS09Mik8MClicmVhaztvLnB1c2gocj4+NnwxOTIsNjMmcnwxMjgpfWVsc2UgaWYocjw2NTUzNil7aWYoKGUtPTMpPDApYnJlYWs7by5wdXNoKHI+PjEyfDIyNCxyPj42JjYzfDEyOCw2MyZyfDEyOCl9ZWxzZXtpZighKHI8MTExNDExMikpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb2RlIHBvaW50XCIpO2lmKChlLT00KTwwKWJyZWFrO28ucHVzaChyPj4xOHwyNDAscj4+MTImNjN8MTI4LHI+PjYmNjN8MTI4LDYzJnJ8MTI4KX19cmV0dXJuIG99ZnVuY3Rpb24gcSh0KXtyZXR1cm4gbi50b0J5dGVBcnJheShmdW5jdGlvbih0KXtpZigodD0odD10LnNwbGl0KFwiPVwiKVswXSkudHJpbSgpLnJlcGxhY2UoSCxcIlwiKSkubGVuZ3RoPDIpcmV0dXJuXCJcIjtmb3IoO3QubGVuZ3RoJTQhPTA7KXQrPVwiPVwiO3JldHVybiB0fSh0KSl9ZnVuY3Rpb24gVih0LGUscixuKXtsZXQgaTtmb3IoaT0wO2k8biYmIShpK3I+PWUubGVuZ3RofHxpPj10Lmxlbmd0aCk7KytpKWVbaStyXT10W2ldO3JldHVybiBpfWZ1bmN0aW9uIEsodCxlKXtyZXR1cm4gdCBpbnN0YW5jZW9mIGV8fG51bGwhPXQmJm51bGwhPXQuY29uc3RydWN0b3ImJm51bGwhPXQuY29uc3RydWN0b3IubmFtZSYmdC5jb25zdHJ1Y3Rvci5uYW1lPT09ZS5uYW1lfWZ1bmN0aW9uIFgodCl7cmV0dXJuIHQhPXR9Y29uc3QgSj1mdW5jdGlvbigpe2NvbnN0IHQ9XCIwMTIzNDU2Nzg5YWJjZGVmXCIsZT1uZXcgQXJyYXkoMjU2KTtmb3IobGV0IHI9MDtyPDE2Oysrcil7Y29uc3Qgbj0xNipyO2ZvcihsZXQgaT0wO2k8MTY7KytpKWVbbitpXT10W3JdK3RbaV19cmV0dXJuIGV9KCk7ZnVuY3Rpb24gWih0KXtyZXR1cm5cInVuZGVmaW5lZFwiPT10eXBlb2YgQmlnSW50P1E6dH1mdW5jdGlvbiBRKCl7dGhyb3cgbmV3IEVycm9yKFwiQmlnSW50IG5vdCBzdXBwb3J0ZWRcIil9fSwxNDE6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2UuQmlnTnVtYmVyPXIoNjYpLkJpZ051bWJlcixlLkNvbW1lbnRlZD1yKDIwKSxlLkRpYWdub3NlPXIoNjk0KSxlLkRlY29kZXI9cig3NzQpLGUuRW5jb2Rlcj1yKDY2NiksZS5TaW1wbGU9cigzMiksZS5UYWdnZWQ9cig3ODUpLGUuTWFwPXIoNzApLGUuVUk9ZS5Db21tZW50ZWQuY29tbWVudCxlLmZJPWUuRGVjb2Rlci5kZWNvZGVBbGwsZS5oOD1lLkRlY29kZXIuZGVjb2RlRmlyc3QsZS5jYz1lLkRlY29kZXIuZGVjb2RlQWxsU3luYyxlLiR1PWUuRGVjb2Rlci5kZWNvZGVGaXJzdFN5bmMsZS5NPWUuRGlhZ25vc2UuZGlhZ25vc2UsZS5jdj1lLkVuY29kZXIuZW5jb2RlLGUuTjI9ZS5FbmNvZGVyLmVuY29kZUNhbm9uaWNhbCxlLlRHPWUuRW5jb2Rlci5lbmNvZGVPbmUsZS5XUj1lLkVuY29kZXIuZW5jb2RlQXN5bmMsZS5KeD1lLkRlY29kZXIuZGVjb2RlRmlyc3RTeW5jLGUud3c9e2RlY29kZTplLkRlY29kZXIuZGVjb2RlRmlyc3RTeW5jLGVuY29kZTplLkVuY29kZXIuZW5jb2RlLGJ1ZmZlcjohMCxuYW1lOlwiY2JvclwifSxlLnZjPSEwfSwyMDoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7Y29uc3Qgbj1yKDgzMCksaT1yKDg3Myksbz1yKDc3NCkscz1yKDIwMikse01UOmEsTlVNQllURVM6dSxTWU1TOmx9PXIoNjYpLHtCdWZmZXI6Y309cig3NjQpO2Z1bmN0aW9uIGYodCl7cmV0dXJuIHQ+MT9cInNcIjpcIlwifWNsYXNzIGggZXh0ZW5kcyBuLlRyYW5zZm9ybXtjb25zdHJ1Y3Rvcih0PXt9KXtjb25zdHtkZXB0aDplPTEsbWF4X2RlcHRoOnI9MTAsbm9fc3VtbWFyeTpuPSExLHRhZ3M6aT17fSxiaWdpbnQ6YSxwcmVmZXJXZWI6dSxlbmNvZGluZzpsLC4uLmN9PXQ7c3VwZXIoey4uLmMscmVhZGFibGVPYmplY3RNb2RlOiExLHdyaXRhYmxlT2JqZWN0TW9kZTohMX0pLHRoaXMuZGVwdGg9ZSx0aGlzLm1heF9kZXB0aD1yLHRoaXMuYWxsPW5ldyBzLGlbMjRdfHwoaVsyNF09dGhpcy5fdGFnXzI0LmJpbmQodGhpcykpLHRoaXMucGFyc2VyPW5ldyBvKHt0YWdzOmksbWF4X2RlcHRoOnIsYmlnaW50OmEscHJlZmVyV2ViOnUsZW5jb2Rpbmc6bH0pLHRoaXMucGFyc2VyLm9uKFwidmFsdWVcIix0aGlzLl9vbl92YWx1ZS5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcInN0YXJ0XCIsdGhpcy5fb25fc3RhcnQuYmluZCh0aGlzKSksdGhpcy5wYXJzZXIub24oXCJzdGFydC1zdHJpbmdcIix0aGlzLl9vbl9zdGFydF9zdHJpbmcuYmluZCh0aGlzKSksdGhpcy5wYXJzZXIub24oXCJzdG9wXCIsdGhpcy5fb25fc3RvcC5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcIm1vcmUtYnl0ZXNcIix0aGlzLl9vbl9tb3JlLmJpbmQodGhpcykpLHRoaXMucGFyc2VyLm9uKFwiZXJyb3JcIix0aGlzLl9vbl9lcnJvci5iaW5kKHRoaXMpKSxufHx0aGlzLnBhcnNlci5vbihcImRhdGFcIix0aGlzLl9vbl9kYXRhLmJpbmQodGhpcykpLHRoaXMucGFyc2VyLmJzLm9uKFwicmVhZFwiLHRoaXMuX29uX3JlYWQuYmluZCh0aGlzKSl9X3RhZ18yNCh0KXtjb25zdCBlPW5ldyBoKHtkZXB0aDp0aGlzLmRlcHRoKzEsbm9fc3VtbWFyeTohMH0pO2Uub24oXCJkYXRhXCIsKHQ9PnRoaXMucHVzaCh0KSkpLGUub24oXCJlcnJvclwiLCh0PT50aGlzLmVtaXQoXCJlcnJvclwiLHQpKSksZS5lbmQodCl9X3RyYW5zZm9ybSh0LGUscil7dGhpcy5wYXJzZXIud3JpdGUodCxlLHIpfV9mbHVzaCh0KXtyZXR1cm4gdGhpcy5wYXJzZXIuX2ZsdXNoKHQpfXN0YXRpYyBjb21tZW50KHQsZT17fSxyPW51bGwpe2lmKG51bGw9PXQpdGhyb3cgbmV3IEVycm9yKFwiaW5wdXQgcmVxdWlyZWRcIik7KHtvcHRpb25zOmUsY2I6cn09ZnVuY3Rpb24odCxlKXtzd2l0Y2godHlwZW9mIHQpe2Nhc2VcImZ1bmN0aW9uXCI6cmV0dXJue29wdGlvbnM6e30sY2I6dH07Y2FzZVwic3RyaW5nXCI6cmV0dXJue29wdGlvbnM6e2VuY29kaW5nOnR9LGNiOmV9O2Nhc2VcIm51bWJlclwiOnJldHVybntvcHRpb25zOnttYXhfZGVwdGg6dH0sY2I6ZX07Y2FzZVwib2JqZWN0XCI6cmV0dXJue29wdGlvbnM6dHx8e30sY2I6ZX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5rbm93biBvcHRpb24gdHlwZVwiKX19KGUscikpO2NvbnN0IG49bmV3IHMse2VuY29kaW5nOm89XCJoZXhcIiwuLi5hfT1lLHU9bmV3IGgoYSk7bGV0IGw9bnVsbDtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiByPyh1Lm9uKFwiZW5kXCIsKCgpPT57cihudWxsLG4udG9TdHJpbmcoXCJ1dGY4XCIpKX0pKSx1Lm9uKFwiZXJyb3JcIixyKSk6bD1uZXcgUHJvbWlzZSgoKHQsZSk9Pnt1Lm9uKFwiZW5kXCIsKCgpPT57dChuLnRvU3RyaW5nKFwidXRmOFwiKSl9KSksdS5vbihcImVycm9yXCIsZSl9KSksdS5waXBlKG4pLGkuZ3Vlc3NFbmNvZGluZyh0LG8pLnBpcGUodSksbH1fb25fZXJyb3IodCl7dGhpcy5wdXNoKFwiRVJST1I6IFwiKSx0aGlzLnB1c2godC50b1N0cmluZygpKSx0aGlzLnB1c2goXCJcXG5cIil9X29uX3JlYWQodCl7dGhpcy5hbGwud3JpdGUodCk7Y29uc3QgZT10LnRvU3RyaW5nKFwiaGV4XCIpO3RoaXMucHVzaChuZXcgQXJyYXkodGhpcy5kZXB0aCsxKS5qb2luKFwiICBcIikpLHRoaXMucHVzaChlKTtsZXQgcj0yKih0aGlzLm1heF9kZXB0aC10aGlzLmRlcHRoKS1lLmxlbmd0aDtyZXR1cm4gcjwxJiYocj0xKSx0aGlzLnB1c2gobmV3IEFycmF5KHIrMSkuam9pbihcIiBcIikpLHRoaXMucHVzaChcIi0tIFwiKX1fb25fbW9yZSh0LGUscixuKXtsZXQgaT1cIlwiO3N3aXRjaCh0aGlzLmRlcHRoKyssdCl7Y2FzZSBhLlBPU19JTlQ6aT1cIlBvc2l0aXZlIG51bWJlcixcIjticmVhaztjYXNlIGEuTkVHX0lOVDppPVwiTmVnYXRpdmUgbnVtYmVyLFwiO2JyZWFrO2Nhc2UgYS5BUlJBWTppPVwiQXJyYXksIGxlbmd0aFwiO2JyZWFrO2Nhc2UgYS5NQVA6aT1cIk1hcCwgY291bnRcIjticmVhaztjYXNlIGEuQllURV9TVFJJTkc6aT1cIkJ5dGVzLCBsZW5ndGhcIjticmVhaztjYXNlIGEuVVRGOF9TVFJJTkc6aT1cIlN0cmluZywgbGVuZ3RoXCI7YnJlYWs7Y2FzZSBhLlNJTVBMRV9GTE9BVDppPTE9PT1lP1wiU2ltcGxlIHZhbHVlLFwiOlwiRmxvYXQsXCJ9cmV0dXJuIHRoaXMucHVzaChpK1wiIG5leHQgXCIrZStcIiBieXRlXCIrZihlKStcIlxcblwiKX1fb25fc3RhcnRfc3RyaW5nKHQsZSxyLG4pe2xldCBpPVwiXCI7c3dpdGNoKHRoaXMuZGVwdGgrKyx0KXtjYXNlIGEuQllURV9TVFJJTkc6aT1cIkJ5dGVzLCBsZW5ndGg6IFwiK2U7YnJlYWs7Y2FzZSBhLlVURjhfU1RSSU5HOmk9XCJTdHJpbmcsIGxlbmd0aDogXCIrZS50b1N0cmluZygpfXJldHVybiB0aGlzLnB1c2goaStcIlxcblwiKX1fb25fc3RhcnQodCxlLHIsbil7c3dpdGNoKHRoaXMuZGVwdGgrKyxyKXtjYXNlIGEuQVJSQVk6dGhpcy5wdXNoKGBbJHtufV0sIGApO2JyZWFrO2Nhc2UgYS5NQVA6biUyP3RoaXMucHVzaChge1ZhbDoke01hdGguZmxvb3Iobi8yKX19LCBgKTp0aGlzLnB1c2goYHtLZXk6JHtNYXRoLmZsb29yKG4vMil9fSwgYCl9c3dpdGNoKHQpe2Nhc2UgYS5UQUc6dGhpcy5wdXNoKGBUYWcgIyR7ZX1gKSwyND09PWUmJnRoaXMucHVzaChcIiBFbmNvZGVkIENCT1IgZGF0YSBpdGVtXCIpO2JyZWFrO2Nhc2UgYS5BUlJBWTplPT09bC5TVFJFQU0/dGhpcy5wdXNoKFwiQXJyYXkgKHN0cmVhbWluZylcIik6dGhpcy5wdXNoKGBBcnJheSwgJHtlfSBpdGVtJHtmKGUpfWApO2JyZWFrO2Nhc2UgYS5NQVA6ZT09PWwuU1RSRUFNP3RoaXMucHVzaChcIk1hcCAoc3RyZWFtaW5nKVwiKTp0aGlzLnB1c2goYE1hcCwgJHtlfSBwYWlyJHtmKGUpfWApO2JyZWFrO2Nhc2UgYS5CWVRFX1NUUklORzp0aGlzLnB1c2goXCJCeXRlcyAoc3RyZWFtaW5nKVwiKTticmVhaztjYXNlIGEuVVRGOF9TVFJJTkc6dGhpcy5wdXNoKFwiU3RyaW5nIChzdHJlYW1pbmcpXCIpfXJldHVybiB0aGlzLnB1c2goXCJcXG5cIil9X29uX3N0b3AodCl7cmV0dXJuIHRoaXMuZGVwdGgtLX1fb25fdmFsdWUodCxlLHIsbil7aWYodCE9PWwuQlJFQUspc3dpdGNoKGUpe2Nhc2UgYS5BUlJBWTp0aGlzLnB1c2goYFske3J9XSwgYCk7YnJlYWs7Y2FzZSBhLk1BUDpyJTI/dGhpcy5wdXNoKGB7VmFsOiR7TWF0aC5mbG9vcihyLzIpfX0sIGApOnRoaXMucHVzaChge0tleToke01hdGguZmxvb3Ioci8yKX19LCBgKX1jb25zdCBvPWkuY2JvclZhbHVlVG9TdHJpbmcodCwtMS8wKTtzd2l0Y2goXCJzdHJpbmdcIj09dHlwZW9mIHR8fGMuaXNCdWZmZXIodCk/KHQubGVuZ3RoPjAmJih0aGlzLnB1c2gobyksdGhpcy5wdXNoKFwiXFxuXCIpKSx0aGlzLmRlcHRoLS0pOih0aGlzLnB1c2gobyksdGhpcy5wdXNoKFwiXFxuXCIpKSxuKXtjYXNlIHUuT05FOmNhc2UgdS5UV086Y2FzZSB1LkZPVVI6Y2FzZSB1LkVJR0hUOnRoaXMuZGVwdGgtLX19X29uX2RhdGEoKXtyZXR1cm4gdGhpcy5wdXNoKFwiMHhcIiksdGhpcy5wdXNoKHRoaXMuYWxsLnJlYWQoKS50b1N0cmluZyhcImhleFwiKSksdGhpcy5wdXNoKFwiXFxuXCIpfX10LmV4cG9ydHM9aH0sNjY6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2xldCBuPW51bGw7dHJ5e249cig5MzcpLkJpZ051bWJlcn1jYXRjaCh0KXt9aWYoZS5CaWdOdW1iZXI9bixlLk1UPXtQT1NfSU5UOjAsTkVHX0lOVDoxLEJZVEVfU1RSSU5HOjIsVVRGOF9TVFJJTkc6MyxBUlJBWTo0LE1BUDo1LFRBRzo2LFNJTVBMRV9GTE9BVDo3fSxlLlRBRz17REFURV9TVFJJTkc6MCxEQVRFX0VQT0NIOjEsUE9TX0JJR0lOVDoyLE5FR19CSUdJTlQ6MyxERUNJTUFMX0ZSQUM6NCxCSUdGTE9BVDo1LEJBU0U2NFVSTF9FWFBFQ1RFRDoyMSxCQVNFNjRfRVhQRUNURUQ6MjIsQkFTRTE2X0VYUEVDVEVEOjIzLENCT1I6MjQsVVJJOjMyLEJBU0U2NFVSTDozMyxCQVNFNjQ6MzQsUkVHRVhQOjM1LE1JTUU6MzYsU0VUOjI1OH0sZS5OVU1CWVRFUz17WkVSTzowLE9ORToyNCxUV086MjUsRk9VUjoyNixFSUdIVDoyNyxJTkRFRklOSVRFOjMxfSxlLlNJTVBMRT17RkFMU0U6MjAsVFJVRToyMSxOVUxMOjIyLFVOREVGSU5FRDoyM30sZS5TWU1TPXtOVUxMOlN5bWJvbC5mb3IoXCJnaXRodWIuY29tL2hpbGRqai9ub2RlLWNib3IvbnVsbFwiKSxVTkRFRklORUQ6U3ltYm9sLmZvcihcImdpdGh1Yi5jb20vaGlsZGpqL25vZGUtY2Jvci91bmRlZlwiKSxQQVJFTlQ6U3ltYm9sLmZvcihcImdpdGh1Yi5jb20vaGlsZGpqL25vZGUtY2Jvci9wYXJlbnRcIiksQlJFQUs6U3ltYm9sLmZvcihcImdpdGh1Yi5jb20vaGlsZGpqL25vZGUtY2Jvci9icmVha1wiKSxTVFJFQU06U3ltYm9sLmZvcihcImdpdGh1Yi5jb20vaGlsZGpqL25vZGUtY2Jvci9zdHJlYW1cIil9LGUuU0hJRlQzMj00Mjk0OTY3Mjk2LGUuQkk9e01JTlVTX09ORTpCaWdJbnQoLTEpLE5FR19NQVg6QmlnSW50KC0xKS1CaWdJbnQoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLE1BWElOVDMyOkJpZ0ludChcIjB4ZmZmZmZmZmZcIiksTUFYSU5UNjQ6QmlnSW50KFwiMHhmZmZmZmZmZmZmZmZmZmZmXCIpLFNISUZUMzI6QmlnSW50KGUuU0hJRlQzMil9LGUuQmlnTnVtYmVyKXtjb25zdCB0PW5ldyBlLkJpZ051bWJlcigtMSk7ZS5CTj17TUlOVVNfT05FOnQsTkVHX01BWDp0Lm1pbnVzKG5ldyBlLkJpZ051bWJlcihOdW1iZXIuTUFYX1NBRkVfSU5URUdFUi50b1N0cmluZygxNiksMTYpKSxUV086bmV3IGUuQmlnTnVtYmVyKDIpLE1BWElOVDpuZXcgZS5CaWdOdW1iZXIoXCIweDIwMDAwMDAwMDAwMDAwXCIpLE1BWElOVDMyOm5ldyBlLkJpZ051bWJlcig0Mjk0OTY3Mjk1KSxNQVhJTlQ2NDpuZXcgZS5CaWdOdW1iZXIoXCIweGZmZmZmZmZmZmZmZmZmZmZcIiksU0hJRlQzMjpuZXcgZS5CaWdOdW1iZXIoZS5TSElGVDMyKX19fSw3NzQ6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0IG49cig3MSksaT1yKDc4NSksbz1yKDMyKSxzPXIoODczKSxhPXIoMjAyKSx1PXIoNjYpLHtNVDpsLE5VTUJZVEVTOmMsU1lNUzpmLEJJOmh9PXUse0J1ZmZlcjpwfT1yKDc2NCksZD1TeW1ib2woXCJjb3VudFwiKSx5PVN5bWJvbChcIm1ham9yIHR5cGVcIiksZz1TeW1ib2woXCJlcnJvclwiKSxiPVN5bWJvbChcIm5vdCBmb3VuZFwiKTtmdW5jdGlvbiBtKHQsZSxyKXtjb25zdCBuPVtdO3JldHVybiBuW2RdPXIsbltmLlBBUkVOVF09dCxuW3ldPWUsbn1mdW5jdGlvbiB3KHQsZSl7Y29uc3Qgcj1uZXcgYTtyZXR1cm4gcltkXT0tMSxyW2YuUEFSRU5UXT10LHJbeV09ZSxyfWZ1bmN0aW9uIF8odCl7cmV0dXJuIHMuYnVmZmVyVG9CaWdJbnQodCl9ZnVuY3Rpb24gRSh0KXtyZXR1cm4gaC5NSU5VU19PTkUtcy5idWZmZXJUb0JpZ0ludCh0KX1jbGFzcyB2IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IodCxlKXtzdXBlcihgVW5leHBlY3RlZCBkYXRhOiAweCR7dC50b1N0cmluZygxNil9YCksdGhpcy5uYW1lPVwiVW5leHBlY3RlZERhdGFFcnJvclwiLHRoaXMuYnl0ZT10LHRoaXMudmFsdWU9ZX19ZnVuY3Rpb24gUyh0LGUpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZVwiZnVuY3Rpb25cIjpyZXR1cm57b3B0aW9uczp7fSxjYjp0fTtjYXNlXCJzdHJpbmdcIjpyZXR1cm57b3B0aW9uczp7ZW5jb2Rpbmc6dH0sY2I6ZX07Y2FzZVwib2JqZWN0XCI6cmV0dXJue29wdGlvbnM6dHx8e30sY2I6ZX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5rbm93biBvcHRpb24gdHlwZVwiKX19Y2xhc3MgQSBleHRlbmRzIG57Y29uc3RydWN0b3IodD17fSl7Y29uc3R7dGFnczplPXt9LG1heF9kZXB0aDpyPS0xLGJpZ2ludDpuPSEwLHByZWZlcldlYjppPSExLHJlcXVpcmVkOm89ITEsZW5jb2Rpbmc6cz1cImhleFwiLGV4dGVuZGVkUmVzdWx0czp1PSExLC4uLmx9PXQ7c3VwZXIoe2RlZmF1bHRFbmNvZGluZzpzLC4uLmx9KSx0aGlzLnJ1bm5pbmc9ITAsdGhpcy5tYXhfZGVwdGg9cix0aGlzLnRhZ3M9ZSx0aGlzLnByZWZlcldlYj1pLHRoaXMuZXh0ZW5kZWRSZXN1bHRzPXUsdGhpcy5iaWdpbnQ9bix0aGlzLnJlcXVpcmVkPW8sdSYmKHRoaXMuYnMub24oXCJyZWFkXCIsdGhpcy5fb25SZWFkLmJpbmQodGhpcykpLHRoaXMudmFsdWVCeXRlcz1uZXcgYSksbiYmKG51bGw9PXRoaXMudGFnc1syXSYmKHRoaXMudGFnc1syXT1fKSxudWxsPT10aGlzLnRhZ3NbM10mJih0aGlzLnRhZ3NbM109RSkpfXN0YXRpYyBudWxsY2hlY2sodCl7c3dpdGNoKHQpe2Nhc2UgZi5OVUxMOnJldHVybiBudWxsO2Nhc2UgZi5VTkRFRklORUQ6cmV0dXJuO2Nhc2UgYjp0aHJvdyBuZXcgRXJyb3IoXCJWYWx1ZSBub3QgZm91bmRcIik7ZGVmYXVsdDpyZXR1cm4gdH19c3RhdGljIGRlY29kZUZpcnN0U3luYyh0LGU9e30pe2lmKG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcImlucHV0IHJlcXVpcmVkXCIpOyh7b3B0aW9uczplfT1TKGUpKTtjb25zdHtlbmNvZGluZzpyPVwiaGV4XCIsLi4ubn09ZSxpPW5ldyBBKG4pLG89cy5ndWVzc0VuY29kaW5nKHQsciksYT1pLl9wYXJzZSgpO2xldCB1PWEubmV4dCgpO2Zvcig7IXUuZG9uZTspe2NvbnN0IHQ9by5yZWFkKHUudmFsdWUpO2lmKG51bGw9PXR8fHQubGVuZ3RoIT09dS52YWx1ZSl0aHJvdyBuZXcgRXJyb3IoXCJJbnN1ZmZpY2llbnQgZGF0YVwiKTtpLmV4dGVuZGVkUmVzdWx0cyYmaS52YWx1ZUJ5dGVzLndyaXRlKHQpLHU9YS5uZXh0KHQpfWxldCBsPW51bGw7aWYoaS5leHRlbmRlZFJlc3VsdHMpbD11LnZhbHVlLGwudW51c2VkPW8ucmVhZCgpO2Vsc2UgaWYobD1BLm51bGxjaGVjayh1LnZhbHVlKSxvLmxlbmd0aD4wKXtjb25zdCB0PW8ucmVhZCgxKTt0aHJvdyBvLnVuc2hpZnQodCksbmV3IHYodFswXSxsKX1yZXR1cm4gbH1zdGF0aWMgZGVjb2RlQWxsU3luYyh0LGU9e30pe2lmKG51bGw9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihcImlucHV0IHJlcXVpcmVkXCIpOyh7b3B0aW9uczplfT1TKGUpKTtjb25zdHtlbmNvZGluZzpyPVwiaGV4XCIsLi4ubn09ZSxpPW5ldyBBKG4pLG89cy5ndWVzc0VuY29kaW5nKHQsciksYT1bXTtmb3IoO28ubGVuZ3RoPjA7KXtjb25zdCB0PWkuX3BhcnNlKCk7bGV0IGU9dC5uZXh0KCk7Zm9yKDshZS5kb25lOyl7Y29uc3Qgcj1vLnJlYWQoZS52YWx1ZSk7aWYobnVsbD09cnx8ci5sZW5ndGghPT1lLnZhbHVlKXRocm93IG5ldyBFcnJvcihcIkluc3VmZmljaWVudCBkYXRhXCIpO2kuZXh0ZW5kZWRSZXN1bHRzJiZpLnZhbHVlQnl0ZXMud3JpdGUociksZT10Lm5leHQocil9YS5wdXNoKEEubnVsbGNoZWNrKGUudmFsdWUpKX1yZXR1cm4gYX1zdGF0aWMgZGVjb2RlRmlyc3QodCxlPXt9LHI9bnVsbCl7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW5wdXQgcmVxdWlyZWRcIik7KHtvcHRpb25zOmUsY2I6cn09UyhlLHIpKTtjb25zdHtlbmNvZGluZzpuPVwiaGV4XCIscmVxdWlyZWQ6aT0hMSwuLi5vfT1lLGE9bmV3IEEobyk7bGV0IHU9Yjtjb25zdCBsPXMuZ3Vlc3NFbmNvZGluZyh0LG4pLGM9bmV3IFByb21pc2UoKCh0LGUpPT57YS5vbihcImRhdGFcIiwodD0+e3U9QS5udWxsY2hlY2sodCksYS5jbG9zZSgpfSkpLGEub25jZShcImVycm9yXCIsKHI9PmEuZXh0ZW5kZWRSZXN1bHRzJiZyIGluc3RhbmNlb2Ygdj8odS51bnVzZWQ9YS5icy5zbGljZSgpLHQodSkpOih1IT09YiYmKHIudmFsdWU9dSksdT1nLGEuY2xvc2UoKSxlKHIpKSkpLGEub25jZShcImVuZFwiLCgoKT0+e3N3aXRjaCh1KXtjYXNlIGI6cmV0dXJuIGk/ZShuZXcgRXJyb3IoXCJObyBDQk9SIGZvdW5kXCIpKTp0KHUpO2Nhc2UgZzpyZXR1cm47ZGVmYXVsdDpyZXR1cm4gdCh1KX19KSl9KSk7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgciYmYy50aGVuKCh0PT5yKG51bGwsdCkpLHIpLGwucGlwZShhKSxjfXN0YXRpYyBkZWNvZGVBbGwodCxlPXt9LHI9bnVsbCl7aWYobnVsbD09dCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiaW5wdXQgcmVxdWlyZWRcIik7KHtvcHRpb25zOmUsY2I6cn09UyhlLHIpKTtjb25zdHtlbmNvZGluZzpuPVwiaGV4XCIsLi4uaX09ZSxvPW5ldyBBKGkpLGE9W107by5vbihcImRhdGFcIiwodD0+YS5wdXNoKEEubnVsbGNoZWNrKHQpKSkpO2NvbnN0IHU9bmV3IFByb21pc2UoKCh0LGUpPT57by5vbihcImVycm9yXCIsZSksby5vbihcImVuZFwiLCgoKT0+dChhKSkpfSkpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHImJnUudGhlbigodD0+cih2b2lkIDAsdCkpLCh0PT5yKHQsdm9pZCAwKSkpLHMuZ3Vlc3NFbmNvZGluZyh0LG4pLnBpcGUobyksdX1jbG9zZSgpe3RoaXMucnVubmluZz0hMSx0aGlzLl9fZnJlc2g9ITB9X29uUmVhZCh0KXt0aGlzLnZhbHVlQnl0ZXMud3JpdGUodCl9Kl9wYXJzZSgpe2xldCB0PW51bGwsZT0wLHI9bnVsbDtmb3IoOzspe2lmKHRoaXMubWF4X2RlcHRoPj0wJiZlPnRoaXMubWF4X2RlcHRoKXRocm93IG5ldyBFcnJvcihcIk1heGltdW0gZGVwdGggXCIrdGhpcy5tYXhfZGVwdGgrXCIgZXhjZWVkZWRcIik7Y29uc3Rbbl09eWllbGQgMTtpZighdGhpcy5ydW5uaW5nKXRocm93IHRoaXMuYnMudW5zaGlmdChwLmZyb20oW25dKSksbmV3IHYobik7Y29uc3QgZz1uPj41LGI9MzEmbixfPW51bGwhPXQ/dFt5XTp2b2lkIDAsRT1udWxsIT10P3QubGVuZ3RoOnZvaWQgMDtzd2l0Y2goYil7Y2FzZSBjLk9ORTp0aGlzLmVtaXQoXCJtb3JlLWJ5dGVzXCIsZywxLF8sRSksW3JdPXlpZWxkIDE7YnJlYWs7Y2FzZSBjLlRXTzpjYXNlIGMuRk9VUjpjYXNlIGMuRUlHSFQ6e2NvbnN0IHQ9MTw8Yi0yNDt0aGlzLmVtaXQoXCJtb3JlLWJ5dGVzXCIsZyx0LF8sRSk7Y29uc3QgZT15aWVsZCB0O3I9Zz09PWwuU0lNUExFX0ZMT0FUP2U6cy5wYXJzZUNCT1JpbnQoYixlLHRoaXMuYmlnaW50KTticmVha31jYXNlIDI4OmNhc2UgMjk6Y2FzZSAzMDp0aHJvdyB0aGlzLnJ1bm5pbmc9ITEsbmV3IEVycm9yKFwiQWRkaXRpb25hbCBpbmZvIG5vdCBpbXBsZW1lbnRlZDogXCIrYik7Y2FzZSBjLklOREVGSU5JVEU6c3dpdGNoKGcpe2Nhc2UgbC5QT1NfSU5UOmNhc2UgbC5ORUdfSU5UOmNhc2UgbC5UQUc6dGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGluZGVmaW5pdGUgZW5jb2RpbmcgZm9yIE1UICR7Z31gKX1yPS0xO2JyZWFrO2RlZmF1bHQ6cj1ifXN3aXRjaChnKXtjYXNlIGwuUE9TX0lOVDpicmVhaztjYXNlIGwuTkVHX0lOVDppZihyPT09TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpaWYodGhpcy5iaWdpbnQpcj1oLk5FR19NQVg7ZWxzZXtpZighdS5CaWdOdW1iZXIpdGhyb3cgbmV3IEVycm9yKFwiTm8gYmlnaW50IGFuZCBubyBiaWdudW1iZXIuanNcIik7cj11LkJOLk5FR19NQVh9ZWxzZSByPXUuQmlnTnVtYmVyJiZyIGluc3RhbmNlb2YgdS5CaWdOdW1iZXI/dS5CTi5NSU5VU19PTkUubWludXMocik6XCJiaWdpbnRcIj09dHlwZW9mIHI/aC5NSU5VU19PTkUtcjotMS1yO2JyZWFrO2Nhc2UgbC5CWVRFX1NUUklORzpjYXNlIGwuVVRGOF9TVFJJTkc6c3dpdGNoKHIpe2Nhc2UgMDp0aGlzLmVtaXQoXCJzdGFydC1zdHJpbmdcIixnLHIsXyxFKSxyPWc9PT1sLlVURjhfU1RSSU5HP1wiXCI6dGhpcy5wcmVmZXJXZWI/bmV3IFVpbnQ4QXJyYXkoMCk6cC5hbGxvY1Vuc2FmZSgwKTticmVhaztjYXNlLTE6dGhpcy5lbWl0KFwic3RhcnRcIixnLGYuU1RSRUFNLF8sRSksdD13KHQsZyksZSsrO2NvbnRpbnVlO2RlZmF1bHQ6dGhpcy5lbWl0KFwic3RhcnQtc3RyaW5nXCIsZyxyLF8sRSkscj15aWVsZCByLGc9PT1sLlVURjhfU1RSSU5HP3I9cy51dGY4KHIpOnRoaXMucHJlZmVyV2ViJiYocj1uZXcgVWludDhBcnJheShyLmJ1ZmZlcixyLmJ5dGVPZmZzZXQsci5sZW5ndGgpKX1icmVhaztjYXNlIGwuQVJSQVk6Y2FzZSBsLk1BUDpzd2l0Y2gocil7Y2FzZSAwOnI9Zz09PWwuTUFQP3t9OltdO2JyZWFrO2Nhc2UtMTp0aGlzLmVtaXQoXCJzdGFydFwiLGcsZi5TVFJFQU0sXyxFKSx0PW0odCxnLC0xKSxlKys7Y29udGludWU7ZGVmYXVsdDp0aGlzLmVtaXQoXCJzdGFydFwiLGcscixfLEUpLHQ9bSh0LGcsciooZy0zKSksZSsrO2NvbnRpbnVlfWJyZWFrO2Nhc2UgbC5UQUc6dGhpcy5lbWl0KFwic3RhcnRcIixnLHIsXyxFKSx0PW0odCxnLDEpLHQucHVzaChyKSxlKys7Y29udGludWU7Y2FzZSBsLlNJTVBMRV9GTE9BVDppZihcIm51bWJlclwiPT10eXBlb2Ygcil7aWYoYj09PWMuT05FJiZyPDMyKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCB0d28tYnl0ZSBlbmNvZGluZyBvZiBzaW1wbGUgdmFsdWUgJHtyfWApO2NvbnN0IGU9bnVsbCE9dDtyPW8uZGVjb2RlKHIsZSxlJiZ0W2RdPDApfWVsc2Ugcj1zLnBhcnNlQ0JPUmZsb2F0KHIpfXRoaXMuZW1pdChcInZhbHVlXCIscixfLEUsYik7bGV0IFM9ITE7Zm9yKDtudWxsIT10Oyl7c3dpdGNoKCExKXtjYXNlIHIhPT1mLkJSRUFLOnRbZF09MTticmVhaztjYXNlIUFycmF5LmlzQXJyYXkodCk6dC5wdXNoKHIpO2JyZWFrO2Nhc2UhKHQgaW5zdGFuY2VvZiBhKTp7Y29uc3QgZT10W3ldO2lmKG51bGwhPWUmJmUhPT1nKXRocm93IHRoaXMucnVubmluZz0hMSxuZXcgRXJyb3IoXCJJbnZhbGlkIG1ham9yIHR5cGUgaW4gaW5kZWZpbml0ZSBlbmNvZGluZ1wiKTt0LndyaXRlKHIpfX1pZigwIT0tLXRbZF0pe1M9ITA7YnJlYWt9aWYoLS1lLGRlbGV0ZSB0W2RdLEFycmF5LmlzQXJyYXkodCkpc3dpdGNoKHRbeV0pe2Nhc2UgbC5BUlJBWTpyPXQ7YnJlYWs7Y2FzZSBsLk1BUDp7bGV0IGU9ITA7aWYodC5sZW5ndGglMiE9MCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG1hcCBsZW5ndGg6IFwiK3QubGVuZ3RoKTtmb3IobGV0IHI9MCxuPXQubGVuZ3RoO3I8bjtyKz0yKWlmKFwic3RyaW5nXCIhPXR5cGVvZiB0W3JdfHxcIl9fcHJvdG9fX1wiPT09dFtyXSl7ZT0hMTticmVha31pZihlKXtyPXt9O2ZvcihsZXQgZT0wLG49dC5sZW5ndGg7ZTxuO2UrPTIpclt0W2VdXT10W2UrMV19ZWxzZXtyPW5ldyBNYXA7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47ZSs9MilyLnNldCh0W2VdLHRbZSsxXSl9YnJlYWt9Y2FzZSBsLlRBRzpyPW5ldyBpKHRbMF0sdFsxXSkuY29udmVydCh0aGlzLnRhZ3MpfWVsc2UgaWYodCBpbnN0YW5jZW9mIGEpc3dpdGNoKHRbeV0pe2Nhc2UgbC5CWVRFX1NUUklORzpyPXQuc2xpY2UoKSx0aGlzLnByZWZlcldlYiYmKHI9bmV3IFVpbnQ4QXJyYXkoci5idWZmZXIsci5ieXRlT2Zmc2V0LHIubGVuZ3RoKSk7YnJlYWs7Y2FzZSBsLlVURjhfU1RSSU5HOnI9dC50b1N0cmluZyhcInV0Zi04XCIpfXRoaXMuZW1pdChcInN0b3BcIix0W3ldKTtjb25zdCBuPXQ7dD10W2YuUEFSRU5UXSxkZWxldGUgbltmLlBBUkVOVF0sZGVsZXRlIG5beV19aWYoIVMpe2lmKHRoaXMuZXh0ZW5kZWRSZXN1bHRzKXtjb25zdCB0PXRoaXMudmFsdWVCeXRlcy5zbGljZSgpLGU9e3ZhbHVlOkEubnVsbGNoZWNrKHIpLGJ5dGVzOnQsbGVuZ3RoOnQubGVuZ3RofTtyZXR1cm4gdGhpcy52YWx1ZUJ5dGVzPW5ldyBhLGV9cmV0dXJuIHJ9fX19QS5OT1RfRk9VTkQ9Yix0LmV4cG9ydHM9QX0sNjk0Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjtjb25zdCBuPXIoODMwKSxpPXIoNzc0KSxvPXIoODczKSxzPXIoMjAyKSx7TVQ6YSxTWU1TOnV9PXIoNjYpO2NsYXNzIGwgZXh0ZW5kcyBuLlRyYW5zZm9ybXtjb25zdHJ1Y3Rvcih0PXt9KXtjb25zdHtzZXBhcmF0b3I6ZT1cIlxcblwiLHN0cmVhbV9lcnJvcnM6cj0hMSx0YWdzOm4sbWF4X2RlcHRoOm8sYmlnaW50OnMscHJlZmVyV2ViOmEsZW5jb2Rpbmc6dSwuLi5sfT10O3N1cGVyKHsuLi5sLHJlYWRhYmxlT2JqZWN0TW9kZTohMSx3cml0YWJsZU9iamVjdE1vZGU6ITF9KSx0aGlzLmZsb2F0X2J5dGVzPS0xLHRoaXMuc2VwYXJhdG9yPWUsdGhpcy5zdHJlYW1fZXJyb3JzPXIsdGhpcy5wYXJzZXI9bmV3IGkoe3RhZ3M6bixtYXhfZGVwdGg6byxiaWdpbnQ6cyxwcmVmZXJXZWI6YSxlbmNvZGluZzp1fSksdGhpcy5wYXJzZXIub24oXCJtb3JlLWJ5dGVzXCIsdGhpcy5fb25fbW9yZS5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcInZhbHVlXCIsdGhpcy5fb25fdmFsdWUuYmluZCh0aGlzKSksdGhpcy5wYXJzZXIub24oXCJzdGFydFwiLHRoaXMuX29uX3N0YXJ0LmJpbmQodGhpcykpLHRoaXMucGFyc2VyLm9uKFwic3RvcFwiLHRoaXMuX29uX3N0b3AuYmluZCh0aGlzKSksdGhpcy5wYXJzZXIub24oXCJkYXRhXCIsdGhpcy5fb25fZGF0YS5iaW5kKHRoaXMpKSx0aGlzLnBhcnNlci5vbihcImVycm9yXCIsdGhpcy5fb25fZXJyb3IuYmluZCh0aGlzKSl9X3RyYW5zZm9ybSh0LGUscil7cmV0dXJuIHRoaXMucGFyc2VyLndyaXRlKHQsZSxyKX1fZmx1c2godCl7cmV0dXJuIHRoaXMucGFyc2VyLl9mbHVzaCgoZT0+dGhpcy5zdHJlYW1fZXJyb3JzPyhlJiZ0aGlzLl9vbl9lcnJvcihlKSx0KCkpOnQoZSkpKX1zdGF0aWMgZGlhZ25vc2UodCxlPXt9LHI9bnVsbCl7aWYobnVsbD09dCl0aHJvdyBuZXcgRXJyb3IoXCJpbnB1dCByZXF1aXJlZFwiKTsoe29wdGlvbnM6ZSxjYjpyfT1mdW5jdGlvbih0LGUpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZVwiZnVuY3Rpb25cIjpyZXR1cm57b3B0aW9uczp7fSxjYjp0fTtjYXNlXCJzdHJpbmdcIjpyZXR1cm57b3B0aW9uczp7ZW5jb2Rpbmc6dH0sY2I6ZX07Y2FzZVwib2JqZWN0XCI6cmV0dXJue29wdGlvbnM6dHx8e30sY2I6ZX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5rbm93biBvcHRpb24gdHlwZVwiKX19KGUscikpO2NvbnN0e2VuY29kaW5nOm49XCJoZXhcIiwuLi5pfT1lLGE9bmV3IHMsdT1uZXcgbChpKTtsZXQgYz1udWxsO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHI/KHUub24oXCJlbmRcIiwoKCk9PnIobnVsbCxhLnRvU3RyaW5nKFwidXRmOFwiKSkpKSx1Lm9uKFwiZXJyb3JcIixyKSk6Yz1uZXcgUHJvbWlzZSgoKHQsZSk9Pnt1Lm9uKFwiZW5kXCIsKCgpPT50KGEudG9TdHJpbmcoXCJ1dGY4XCIpKSkpLHUub24oXCJlcnJvclwiLGUpfSkpLHUucGlwZShhKSxvLmd1ZXNzRW5jb2RpbmcodCxuKS5waXBlKHUpLGN9X29uX2Vycm9yKHQpe3JldHVybiB0aGlzLnN0cmVhbV9lcnJvcnM/dGhpcy5wdXNoKHQudG9TdHJpbmcoKSk6dGhpcy5lbWl0KFwiZXJyb3JcIix0KX1fb25fbW9yZSh0LGUscixuKXt0PT09YS5TSU1QTEVfRkxPQVQmJih0aGlzLmZsb2F0X2J5dGVzPXsyOjEsNDoyLDg6M31bZV0pfV9mb3JlKHQsZSl7c3dpdGNoKHQpe2Nhc2UgYS5CWVRFX1NUUklORzpjYXNlIGEuVVRGOF9TVFJJTkc6Y2FzZSBhLkFSUkFZOmU+MCYmdGhpcy5wdXNoKFwiLCBcIik7YnJlYWs7Y2FzZSBhLk1BUDplPjAmJihlJTI/dGhpcy5wdXNoKFwiOiBcIik6dGhpcy5wdXNoKFwiLCBcIikpfX1fb25fdmFsdWUodCxlLHIpe2lmKHQ9PT11LkJSRUFLKXJldHVybjt0aGlzLl9mb3JlKGUscik7Y29uc3Qgbj10aGlzLmZsb2F0X2J5dGVzO3RoaXMuZmxvYXRfYnl0ZXM9LTEsdGhpcy5wdXNoKG8uY2JvclZhbHVlVG9TdHJpbmcodCxuKSl9X29uX3N0YXJ0KHQsZSxyLG4pe3N3aXRjaCh0aGlzLl9mb3JlKHIsbiksdCl7Y2FzZSBhLlRBRzp0aGlzLnB1c2goYCR7ZX0oYCk7YnJlYWs7Y2FzZSBhLkFSUkFZOnRoaXMucHVzaChcIltcIik7YnJlYWs7Y2FzZSBhLk1BUDp0aGlzLnB1c2goXCJ7XCIpO2JyZWFrO2Nhc2UgYS5CWVRFX1NUUklORzpjYXNlIGEuVVRGOF9TVFJJTkc6dGhpcy5wdXNoKFwiKFwiKX1lPT09dS5TVFJFQU0mJnRoaXMucHVzaChcIl8gXCIpfV9vbl9zdG9wKHQpe3N3aXRjaCh0KXtjYXNlIGEuVEFHOnRoaXMucHVzaChcIilcIik7YnJlYWs7Y2FzZSBhLkFSUkFZOnRoaXMucHVzaChcIl1cIik7YnJlYWs7Y2FzZSBhLk1BUDp0aGlzLnB1c2goXCJ9XCIpO2JyZWFrO2Nhc2UgYS5CWVRFX1NUUklORzpjYXNlIGEuVVRGOF9TVFJJTkc6dGhpcy5wdXNoKFwiKVwiKX19X29uX2RhdGEoKXt0aGlzLnB1c2godGhpcy5zZXBhcmF0b3IpfX10LmV4cG9ydHM9bH0sNjY2Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjtjb25zdCBuPXIoODMwKSxpPXIoMjAyKSxvPXIoODczKSxzPXIoNjYpLHtNVDphLE5VTUJZVEVTOnUsU0hJRlQzMjpsLFNJTVBMRTpjLFNZTVM6ZixUQUc6aCxCSTpwfT1zLHtCdWZmZXI6ZH09cig3NjQpLHk9YS5TSU1QTEVfRkxPQVQ8PDV8dS5UV08sZz1hLlNJTVBMRV9GTE9BVDw8NXx1LkZPVVIsYj1hLlNJTVBMRV9GTE9BVDw8NXx1LkVJR0hULG09YS5TSU1QTEVfRkxPQVQ8PDV8Yy5UUlVFLHc9YS5TSU1QTEVfRkxPQVQ8PDV8Yy5GQUxTRSxfPWEuU0lNUExFX0ZMT0FUPDw1fGMuVU5ERUZJTkVELEU9YS5TSU1QTEVfRkxPQVQ8PDV8Yy5OVUxMLHY9ZC5mcm9tKFsyNTVdKSxTPWQuZnJvbShcImY5N2UwMFwiLFwiaGV4XCIpLEE9ZC5mcm9tKFwiZjlmYzAwXCIsXCJoZXhcIiksVD1kLmZyb20oXCJmOTdjMDBcIixcImhleFwiKSxJPWQuZnJvbShcImY5ODAwMFwiLFwiaGV4XCIpO2NsYXNzIEIgZXh0ZW5kcyBuLlRyYW5zZm9ybXtjb25zdHJ1Y3Rvcih0PXt9KXtjb25zdHtjYW5vbmljYWw6ZT0hMSxlbmNvZGVVbmRlZmluZWQ6cixkaXNhbGxvd1VuZGVmaW5lZEtleXM6bj0hMSxkYXRlVHlwZTpvPVwibnVtYmVyXCIsY29sbGFwc2VCaWdJbnRlZ2VyczphPSExLGRldGVjdExvb3BzOnU9ITEsb21pdFVuZGVmaW5lZFByb3BlcnRpZXM6bD0hMSxnZW5UeXBlczpjPVtdLC4uLmZ9PXQ7aWYoc3VwZXIoey4uLmYscmVhZGFibGVPYmplY3RNb2RlOiExLHdyaXRhYmxlT2JqZWN0TW9kZTohMH0pLHRoaXMuY2Fub25pY2FsPWUsdGhpcy5lbmNvZGVVbmRlZmluZWQ9cix0aGlzLmRpc2FsbG93VW5kZWZpbmVkS2V5cz1uLHRoaXMuZGF0ZVR5cGU9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuXCJudW1iZXJcIjtzd2l0Y2godC50b0xvd2VyQ2FzZSgpKXtjYXNlXCJudW1iZXJcIjpyZXR1cm5cIm51bWJlclwiO2Nhc2VcImZsb2F0XCI6cmV0dXJuXCJmbG9hdFwiO2Nhc2VcImludFwiOnJldHVyblwiaW50XCI7Y2FzZVwic3RyaW5nXCI6cmV0dXJuXCJzdHJpbmdcIn10aHJvdyBuZXcgVHlwZUVycm9yKGBkYXRlVHlwZSBpbnZhbGlkLCBnb3QgXCIke3R9XCJgKX0obyksdGhpcy5jb2xsYXBzZUJpZ0ludGVnZXJzPSEhdGhpcy5jYW5vbmljYWx8fGEsdGhpcy5kZXRlY3RMb29wcz11LFwiYm9vbGVhblwiPT10eXBlb2YgdSl1JiYodGhpcy5kZXRlY3RMb29wcz1uZXcgV2Vha1NldCk7ZWxzZSBpZighKHUgaW5zdGFuY2VvZiBXZWFrU2V0KSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiZGV0ZWN0TG9vcHMgbXVzdCBiZSBib29sZWFuIG9yIFdlYWtTZXRcIik7aWYodGhpcy5vbWl0VW5kZWZpbmVkUHJvcGVydGllcz1sLHRoaXMuc2VtYW50aWNUeXBlcz17QXJyYXk6dGhpcy5fcHVzaEFycmF5LERhdGU6dGhpcy5fcHVzaERhdGUsQnVmZmVyOnRoaXMuX3B1c2hCdWZmZXIsW2QubmFtZV06dGhpcy5fcHVzaEJ1ZmZlcixNYXA6dGhpcy5fcHVzaE1hcCxOb0ZpbHRlcjp0aGlzLl9wdXNoTm9GaWx0ZXIsW2kubmFtZV06dGhpcy5fcHVzaE5vRmlsdGVyLFJlZ0V4cDp0aGlzLl9wdXNoUmVnZXhwLFNldDp0aGlzLl9wdXNoU2V0LEFycmF5QnVmZmVyOnRoaXMuX3B1c2hBcnJheUJ1ZmZlcixVaW50OENsYW1wZWRBcnJheTp0aGlzLl9wdXNoVHlwZWRBcnJheSxVaW50OEFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LFVpbnQxNkFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LFVpbnQzMkFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LEludDhBcnJheTp0aGlzLl9wdXNoVHlwZWRBcnJheSxJbnQxNkFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LEludDMyQXJyYXk6dGhpcy5fcHVzaFR5cGVkQXJyYXksRmxvYXQzMkFycmF5OnRoaXMuX3B1c2hUeXBlZEFycmF5LEZsb2F0NjRBcnJheTp0aGlzLl9wdXNoVHlwZWRBcnJheSxVUkw6dGhpcy5fcHVzaFVSTCxCb29sZWFuOnRoaXMuX3B1c2hCb3hlZCxOdW1iZXI6dGhpcy5fcHVzaEJveGVkLFN0cmluZzp0aGlzLl9wdXNoQm94ZWR9LHMuQmlnTnVtYmVyJiYodGhpcy5zZW1hbnRpY1R5cGVzW3MuQmlnTnVtYmVyLm5hbWVdPXRoaXMuX3B1c2hCaWdOdW1iZXIpLFwidW5kZWZpbmVkXCIhPXR5cGVvZiBCaWdVaW50NjRBcnJheSYmKHRoaXMuc2VtYW50aWNUeXBlc1tCaWdVaW50NjRBcnJheS5uYW1lXT10aGlzLl9wdXNoVHlwZWRBcnJheSksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEJpZ0ludDY0QXJyYXkmJih0aGlzLnNlbWFudGljVHlwZXNbQmlnSW50NjRBcnJheS5uYW1lXT10aGlzLl9wdXNoVHlwZWRBcnJheSksQXJyYXkuaXNBcnJheShjKSlmb3IobGV0IHQ9MCxlPWMubGVuZ3RoO3Q8ZTt0Kz0yKXRoaXMuYWRkU2VtYW50aWNUeXBlKGNbdF0sY1t0KzFdKTtlbHNlIGZvcihjb25zdFt0LGVdb2YgT2JqZWN0LmVudHJpZXMoYykpdGhpcy5hZGRTZW1hbnRpY1R5cGUodCxlKX1fdHJhbnNmb3JtKHQsZSxyKXtyZXR1cm4gcighMT09PXRoaXMucHVzaEFueSh0KT9uZXcgRXJyb3IoXCJQdXNoIEVycm9yXCIpOnZvaWQgMCl9X2ZsdXNoKHQpe3JldHVybiB0KCl9YWRkU2VtYW50aWNUeXBlKHQsZSl7Y29uc3Qgcj1cInN0cmluZ1wiPT10eXBlb2YgdD90OnQubmFtZSxuPXRoaXMuc2VtYW50aWNUeXBlc1tyXTtpZihlKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoXCJmdW4gbXVzdCBiZSBvZiB0eXBlIGZ1bmN0aW9uXCIpO3RoaXMuc2VtYW50aWNUeXBlc1tyXT1lfWVsc2UgbiYmZGVsZXRlIHRoaXMuc2VtYW50aWNUeXBlc1tyXTtyZXR1cm4gbn1fcHVzaFVJbnQ4KHQpe2NvbnN0IGU9ZC5hbGxvY1Vuc2FmZSgxKTtyZXR1cm4gZS53cml0ZVVJbnQ4KHQsMCksdGhpcy5wdXNoKGUpfV9wdXNoVUludDE2QkUodCl7Y29uc3QgZT1kLmFsbG9jVW5zYWZlKDIpO3JldHVybiBlLndyaXRlVUludDE2QkUodCwwKSx0aGlzLnB1c2goZSl9X3B1c2hVSW50MzJCRSh0KXtjb25zdCBlPWQuYWxsb2NVbnNhZmUoNCk7cmV0dXJuIGUud3JpdGVVSW50MzJCRSh0LDApLHRoaXMucHVzaChlKX1fcHVzaEZsb2F0QkUodCl7Y29uc3QgZT1kLmFsbG9jVW5zYWZlKDQpO3JldHVybiBlLndyaXRlRmxvYXRCRSh0LDApLHRoaXMucHVzaChlKX1fcHVzaERvdWJsZUJFKHQpe2NvbnN0IGU9ZC5hbGxvY1Vuc2FmZSg4KTtyZXR1cm4gZS53cml0ZURvdWJsZUJFKHQsMCksdGhpcy5wdXNoKGUpfV9wdXNoTmFOKCl7cmV0dXJuIHRoaXMucHVzaChTKX1fcHVzaEluZmluaXR5KHQpe2NvbnN0IGU9dDwwP0E6VDtyZXR1cm4gdGhpcy5wdXNoKGUpfV9wdXNoRmxvYXQodCl7aWYodGhpcy5jYW5vbmljYWwpe2NvbnN0IGU9ZC5hbGxvY1Vuc2FmZSgyKTtpZihvLndyaXRlSGFsZihlLHQpKXJldHVybiB0aGlzLl9wdXNoVUludDgoeSkmJnRoaXMucHVzaChlKX1yZXR1cm4gTWF0aC5mcm91bmQodCk9PT10P3RoaXMuX3B1c2hVSW50OChnKSYmdGhpcy5fcHVzaEZsb2F0QkUodCk6dGhpcy5fcHVzaFVJbnQ4KGIpJiZ0aGlzLl9wdXNoRG91YmxlQkUodCl9X3B1c2hJbnQodCxlLHIpe2NvbnN0IG49ZTw8NTtzd2l0Y2goITEpe2Nhc2UhKHQ8MjQpOnJldHVybiB0aGlzLl9wdXNoVUludDgobnx0KTtjYXNlISh0PD0yNTUpOnJldHVybiB0aGlzLl9wdXNoVUludDgobnx1Lk9ORSkmJnRoaXMuX3B1c2hVSW50OCh0KTtjYXNlISh0PD02NTUzNSk6cmV0dXJuIHRoaXMuX3B1c2hVSW50OChufHUuVFdPKSYmdGhpcy5fcHVzaFVJbnQxNkJFKHQpO2Nhc2UhKHQ8PTQyOTQ5NjcyOTUpOnJldHVybiB0aGlzLl9wdXNoVUludDgobnx1LkZPVVIpJiZ0aGlzLl9wdXNoVUludDMyQkUodCk7Y2FzZSEodDw9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpOnJldHVybiB0aGlzLl9wdXNoVUludDgobnx1LkVJR0hUKSYmdGhpcy5fcHVzaFVJbnQzMkJFKE1hdGguZmxvb3IodC9sKSkmJnRoaXMuX3B1c2hVSW50MzJCRSh0JWwpO2RlZmF1bHQ6cmV0dXJuIGU9PT1hLk5FR19JTlQ/dGhpcy5fcHVzaEZsb2F0KHIpOnRoaXMuX3B1c2hGbG9hdCh0KX19X3B1c2hJbnROdW0odCl7cmV0dXJuIE9iamVjdC5pcyh0LC0wKT90aGlzLnB1c2goSSk6dDwwP3RoaXMuX3B1c2hJbnQoLXQtMSxhLk5FR19JTlQsdCk6dGhpcy5fcHVzaEludCh0LGEuUE9TX0lOVCl9X3B1c2hOdW1iZXIodCl7c3dpdGNoKCExKXtjYXNlIWlzTmFOKHQpOnJldHVybiB0aGlzLl9wdXNoTmFOKCk7Y2FzZSBpc0Zpbml0ZSh0KTpyZXR1cm4gdGhpcy5fcHVzaEluZmluaXR5KHQpO2Nhc2UgTWF0aC5yb3VuZCh0KSE9PXQ6cmV0dXJuIHRoaXMuX3B1c2hJbnROdW0odCk7ZGVmYXVsdDpyZXR1cm4gdGhpcy5fcHVzaEZsb2F0KHQpfX1fcHVzaFN0cmluZyh0KXtjb25zdCBlPWQuYnl0ZUxlbmd0aCh0LFwidXRmOFwiKTtyZXR1cm4gdGhpcy5fcHVzaEludChlLGEuVVRGOF9TVFJJTkcpJiZ0aGlzLnB1c2godCxcInV0ZjhcIil9X3B1c2hCb29sZWFuKHQpe3JldHVybiB0aGlzLl9wdXNoVUludDgodD9tOncpfV9wdXNoVW5kZWZpbmVkKHQpe3N3aXRjaCh0eXBlb2YgdGhpcy5lbmNvZGVVbmRlZmluZWQpe2Nhc2VcInVuZGVmaW5lZFwiOnJldHVybiB0aGlzLl9wdXNoVUludDgoXyk7Y2FzZVwiZnVuY3Rpb25cIjpyZXR1cm4gdGhpcy5wdXNoQW55KHRoaXMuZW5jb2RlVW5kZWZpbmVkLmNhbGwodGhpcyx0KSk7Y2FzZVwib2JqZWN0XCI6e2NvbnN0IHQ9by5idWZmZXJpc2hUb0J1ZmZlcih0aGlzLmVuY29kZVVuZGVmaW5lZCk7aWYodClyZXR1cm4gdGhpcy5wdXNoKHQpfX1yZXR1cm4gdGhpcy5wdXNoQW55KHRoaXMuZW5jb2RlVW5kZWZpbmVkKX1fcHVzaE51bGwodCl7cmV0dXJuIHRoaXMuX3B1c2hVSW50OChFKX1fcHVzaEFycmF5KHQsZSxyKXtyPXtpbmRlZmluaXRlOiExLC4uLnJ9O2NvbnN0IG49ZS5sZW5ndGg7aWYoci5pbmRlZmluaXRlKXtpZighdC5fcHVzaFVJbnQ4KGEuQVJSQVk8PDV8dS5JTkRFRklOSVRFKSlyZXR1cm4hMX1lbHNlIGlmKCF0Ll9wdXNoSW50KG4sYS5BUlJBWSkpcmV0dXJuITE7Zm9yKGxldCByPTA7cjxuO3IrKylpZighdC5wdXNoQW55KGVbcl0pKXJldHVybiExO3JldHVybiEoci5pbmRlZmluaXRlJiYhdC5wdXNoKHYpKX1fcHVzaFRhZyh0KXtyZXR1cm4gdGhpcy5fcHVzaEludCh0LGEuVEFHKX1fcHVzaERhdGUodCxlKXtzd2l0Y2godC5kYXRlVHlwZSl7Y2FzZVwic3RyaW5nXCI6cmV0dXJuIHQuX3B1c2hUYWcoaC5EQVRFX1NUUklORykmJnQuX3B1c2hTdHJpbmcoZS50b0lTT1N0cmluZygpKTtjYXNlXCJpbnRcIjpjYXNlXCJpbnRlZ2VyXCI6cmV0dXJuIHQuX3B1c2hUYWcoaC5EQVRFX0VQT0NIKSYmdC5fcHVzaEludE51bShNYXRoLnJvdW5kKGUvMWUzKSk7Y2FzZVwiZmxvYXRcIjpyZXR1cm4gdC5fcHVzaFRhZyhoLkRBVEVfRVBPQ0gpJiZ0Ll9wdXNoRmxvYXQoZS8xZTMpO2Nhc2VcIm51bWJlclwiOmRlZmF1bHQ6cmV0dXJuIHQuX3B1c2hUYWcoaC5EQVRFX0VQT0NIKSYmdC5wdXNoQW55KGUvMWUzKX19X3B1c2hCdWZmZXIodCxlKXtyZXR1cm4gdC5fcHVzaEludChlLmxlbmd0aCxhLkJZVEVfU1RSSU5HKSYmdC5wdXNoKGUpfV9wdXNoTm9GaWx0ZXIodCxlKXtyZXR1cm4gdC5fcHVzaEJ1ZmZlcih0LGUuc2xpY2UoKSl9X3B1c2hSZWdleHAodCxlKXtyZXR1cm4gdC5fcHVzaFRhZyhoLlJFR0VYUCkmJnQucHVzaEFueShlLnNvdXJjZSl9X3B1c2hTZXQodCxlKXtpZighdC5fcHVzaFRhZyhoLlNFVCkpcmV0dXJuITE7aWYoIXQuX3B1c2hJbnQoZS5zaXplLGEuQVJSQVkpKXJldHVybiExO2Zvcihjb25zdCByIG9mIGUpaWYoIXQucHVzaEFueShyKSlyZXR1cm4hMTtyZXR1cm4hMH1fcHVzaFVSTCh0LGUpe3JldHVybiB0Ll9wdXNoVGFnKGguVVJJKSYmdC5wdXNoQW55KGUudG9TdHJpbmcoKSl9X3B1c2hCb3hlZCh0LGUpe3JldHVybiB0Ll9wdXNoQW55KGUudmFsdWVPZigpKX1fcHVzaEJpZ2ludCh0KXtsZXQgZT1hLlBPU19JTlQscj1oLlBPU19CSUdJTlQ7aWYodC5pc05lZ2F0aXZlKCkmJih0PXQubmVnYXRlZCgpLm1pbnVzKDEpLGU9YS5ORUdfSU5ULHI9aC5ORUdfQklHSU5UKSx0aGlzLmNvbGxhcHNlQmlnSW50ZWdlcnMmJnQubHRlKHMuQk4uTUFYSU5UNjQpKXJldHVybiB0Lmx0ZShzLkJOLk1BWElOVDMyKT90aGlzLl9wdXNoSW50KHQudG9OdW1iZXIoKSxlKTp0aGlzLl9wdXNoVUludDgoZTw8NXx1LkVJR0hUKSYmdGhpcy5fcHVzaFVJbnQzMkJFKHQuZGl2aWRlZFRvSW50ZWdlckJ5KHMuQk4uU0hJRlQzMikudG9OdW1iZXIoKSkmJnRoaXMuX3B1c2hVSW50MzJCRSh0Lm1vZChzLkJOLlNISUZUMzIpLnRvTnVtYmVyKCkpO2xldCBuPXQudG9TdHJpbmcoMTYpO24ubGVuZ3RoJTImJihuPVwiMFwiK24pO2NvbnN0IGk9ZC5mcm9tKG4sXCJoZXhcIik7cmV0dXJuIHRoaXMuX3B1c2hUYWcocikmJnRoaXMuX3B1c2hCdWZmZXIodGhpcyxpKX1fcHVzaEpTQmlnaW50KHQpe2xldCBlPWEuUE9TX0lOVCxyPWguUE9TX0JJR0lOVDtpZih0PDAmJih0PS10K3AuTUlOVVNfT05FLGU9YS5ORUdfSU5ULHI9aC5ORUdfQklHSU5UKSx0aGlzLmNvbGxhcHNlQmlnSW50ZWdlcnMmJnQ8PXAuTUFYSU5UNjQpcmV0dXJuIHQ8PTQyOTQ5NjcyOTU/dGhpcy5fcHVzaEludChOdW1iZXIodCksZSk6dGhpcy5fcHVzaFVJbnQ4KGU8PDV8dS5FSUdIVCkmJnRoaXMuX3B1c2hVSW50MzJCRShOdW1iZXIodC9wLlNISUZUMzIpKSYmdGhpcy5fcHVzaFVJbnQzMkJFKE51bWJlcih0JXAuU0hJRlQzMikpO2xldCBuPXQudG9TdHJpbmcoMTYpO24ubGVuZ3RoJTImJihuPVwiMFwiK24pO2NvbnN0IGk9ZC5mcm9tKG4sXCJoZXhcIik7cmV0dXJuIHRoaXMuX3B1c2hUYWcocikmJnRoaXMuX3B1c2hCdWZmZXIodGhpcyxpKX1fcHVzaEJpZ051bWJlcih0LGUpe2lmKGUuaXNOYU4oKSlyZXR1cm4gdC5fcHVzaE5hTigpO2lmKCFlLmlzRmluaXRlKCkpcmV0dXJuIHQuX3B1c2hJbmZpbml0eShlLmlzTmVnYXRpdmUoKT8tMS8wOjEvMCk7aWYoZS5pc0ludGVnZXIoKSlyZXR1cm4gdC5fcHVzaEJpZ2ludChlKTtpZighdC5fcHVzaFRhZyhoLkRFQ0lNQUxfRlJBQyl8fCF0Ll9wdXNoSW50KDIsYS5BUlJBWSkpcmV0dXJuITE7Y29uc3Qgcj1lLmRlY2ltYWxQbGFjZXMoKSxuPWUuc2hpZnRlZEJ5KHIpO3JldHVybiEhdC5fcHVzaEludE51bSgtcikmJihuLmFicygpLmlzTGVzc1RoYW4ocy5CTi5NQVhJTlQpP3QuX3B1c2hJbnROdW0obi50b051bWJlcigpKTp0Ll9wdXNoQmlnaW50KG4pKX1fcHVzaE1hcCh0LGUscil7cj17aW5kZWZpbml0ZTohMSwuLi5yfTtsZXQgbj1bLi4uZS5lbnRyaWVzKCldO2lmKHQub21pdFVuZGVmaW5lZFByb3BlcnRpZXMmJihuPW4uZmlsdGVyKCgoW3QsZV0pPT52b2lkIDAhPT1lKSkpLHIuaW5kZWZpbml0ZSl7aWYoIXQuX3B1c2hVSW50OChhLk1BUDw8NXx1LklOREVGSU5JVEUpKXJldHVybiExfWVsc2UgaWYoIXQuX3B1c2hJbnQobi5sZW5ndGgsYS5NQVApKXJldHVybiExO2lmKHQuY2Fub25pY2FsKXtjb25zdCBlPW5ldyBCKHtnZW5UeXBlczp0LnNlbWFudGljVHlwZXMsY2Fub25pY2FsOnQuY2Fub25pY2FsLGRldGVjdExvb3BzOiEhdC5kZXRlY3RMb29wcyxkYXRlVHlwZTp0LmRhdGVUeXBlLGRpc2FsbG93VW5kZWZpbmVkS2V5czp0LmRpc2FsbG93VW5kZWZpbmVkS2V5cyxjb2xsYXBzZUJpZ0ludGVnZXJzOnQuY29sbGFwc2VCaWdJbnRlZ2Vyc30pLHI9bmV3IGkoe2hpZ2hXYXRlck1hcms6dC5yZWFkYWJsZUhpZ2hXYXRlck1hcmt9KTtlLnBpcGUociksbi5zb3J0KCgoW3RdLFtuXSk9PntlLnB1c2hBbnkodCk7Y29uc3QgaT1yLnJlYWQoKTtlLnB1c2hBbnkobik7Y29uc3Qgbz1yLnJlYWQoKTtyZXR1cm4gaS5jb21wYXJlKG8pfSkpO2Zvcihjb25zdFtlLHJdb2Ygbil7aWYodC5kaXNhbGxvd1VuZGVmaW5lZEtleXMmJnZvaWQgMD09PWUpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBNYXAga2V5OiB1bmRlZmluZWRcIik7aWYoIXQucHVzaEFueShlKXx8IXQucHVzaEFueShyKSlyZXR1cm4hMX19ZWxzZSBmb3IoY29uc3RbZSxyXW9mIG4pe2lmKHQuZGlzYWxsb3dVbmRlZmluZWRLZXlzJiZ2b2lkIDA9PT1lKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgTWFwIGtleTogdW5kZWZpbmVkXCIpO2lmKCF0LnB1c2hBbnkoZSl8fCF0LnB1c2hBbnkocikpcmV0dXJuITF9cmV0dXJuIShyLmluZGVmaW5pdGUmJiF0LnB1c2godikpfV9wdXNoVHlwZWRBcnJheSh0LGUpe2xldCByPTY0LG49ZS5CWVRFU19QRVJfRUxFTUVOVDtjb25zdHtuYW1lOml9PWUuY29uc3RydWN0b3I7cmV0dXJuIGkuc3RhcnRzV2l0aChcIkZsb2F0XCIpPyhyfD0xNixuLz0yKTppLmluY2x1ZGVzKFwiVVwiKXx8KHJ8PTgpLChpLmluY2x1ZGVzKFwiQ2xhbXBlZFwiKXx8MSE9PW4mJiFvLmlzQmlnRW5kaWFuKCkpJiYocnw9NCkscnw9ezE6MCwyOjEsNDoyLDg6M31bbl0sISF0Ll9wdXNoVGFnKHIpJiZ0Ll9wdXNoQnVmZmVyKHQsZC5mcm9tKGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxlLmJ5dGVMZW5ndGgpKX1fcHVzaEFycmF5QnVmZmVyKHQsZSl7cmV0dXJuIHQuX3B1c2hCdWZmZXIodCxkLmZyb20oZSkpfXJlbW92ZUxvb3BEZXRlY3RvcnMoKXtyZXR1cm4hIXRoaXMuZGV0ZWN0TG9vcHMmJih0aGlzLmRldGVjdExvb3BzPW5ldyBXZWFrU2V0LCEwKX1fcHVzaE9iamVjdCh0LGUpe2lmKCF0KXJldHVybiB0aGlzLl9wdXNoTnVsbCh0KTtpZighKGU9e2luZGVmaW5pdGU6ITEsc2tpcFR5cGVzOiExLC4uLmV9KS5pbmRlZmluaXRlJiZ0aGlzLmRldGVjdExvb3BzKXtpZih0aGlzLmRldGVjdExvb3BzLmhhcyh0KSl0aHJvdyBuZXcgRXJyb3IoXCJMb29wIGRldGVjdGVkIHdoaWxlIENCT1IgZW5jb2RpbmcuXFxuQ2FsbCByZW1vdmVMb29wRGV0ZWN0b3JzIGJlZm9yZSByZXN1bWluZy5cIik7dGhpcy5kZXRlY3RMb29wcy5hZGQodCl9aWYoIWUuc2tpcFR5cGVzKXtjb25zdCBlPXQuZW5jb2RlQ0JPUjtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlKXJldHVybiBlLmNhbGwodCx0aGlzKTtjb25zdCByPXRoaXMuc2VtYW50aWNUeXBlc1t0LmNvbnN0cnVjdG9yLm5hbWVdO2lmKHIpcmV0dXJuIHIuY2FsbCh0LHRoaXMsdCl9Y29uc3Qgcj1PYmplY3Qua2V5cyh0KS5maWx0ZXIoKGU9Pntjb25zdCByPXR5cGVvZiB0W2VdO3JldHVyblwiZnVuY3Rpb25cIiE9PXImJighdGhpcy5vbWl0VW5kZWZpbmVkUHJvcGVydGllc3x8XCJ1bmRlZmluZWRcIiE9PXIpfSkpLG49e307aWYodGhpcy5jYW5vbmljYWwmJnIuc29ydCgoKHQsZSk9Pntjb25zdCByPW5bdF18fChuW3RdPUIuZW5jb2RlKHQpKSxpPW5bZV18fChuW2VdPUIuZW5jb2RlKGUpKTtyZXR1cm4gci5jb21wYXJlKGkpfSkpLGUuaW5kZWZpbml0ZSl7aWYoIXRoaXMuX3B1c2hVSW50OChhLk1BUDw8NXx1LklOREVGSU5JVEUpKXJldHVybiExfWVsc2UgaWYoIXRoaXMuX3B1c2hJbnQoci5sZW5ndGgsYS5NQVApKXJldHVybiExO2xldCBpPW51bGw7Zm9yKGxldCBlPTAsbz1yLmxlbmd0aDtlPG87ZSsrKXtjb25zdCBvPXJbZV07aWYodGhpcy5jYW5vbmljYWwmJihpPW5bb10pKXtpZighdGhpcy5wdXNoKGkpKXJldHVybiExfWVsc2UgaWYoIXRoaXMuX3B1c2hTdHJpbmcobykpcmV0dXJuITE7aWYoIXRoaXMucHVzaEFueSh0W29dKSlyZXR1cm4hMX1pZihlLmluZGVmaW5pdGUpe2lmKCF0aGlzLnB1c2godikpcmV0dXJuITF9ZWxzZSB0aGlzLmRldGVjdExvb3BzJiZ0aGlzLmRldGVjdExvb3BzLmRlbGV0ZSh0KTtyZXR1cm4hMH1wdXNoQW55KHQpe3N3aXRjaCh0eXBlb2YgdCl7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIHRoaXMuX3B1c2hOdW1iZXIodCk7Y2FzZVwiYmlnaW50XCI6cmV0dXJuIHRoaXMuX3B1c2hKU0JpZ2ludCh0KTtjYXNlXCJzdHJpbmdcIjpyZXR1cm4gdGhpcy5fcHVzaFN0cmluZyh0KTtjYXNlXCJib29sZWFuXCI6cmV0dXJuIHRoaXMuX3B1c2hCb29sZWFuKHQpO2Nhc2VcInVuZGVmaW5lZFwiOnJldHVybiB0aGlzLl9wdXNoVW5kZWZpbmVkKHQpO2Nhc2VcIm9iamVjdFwiOnJldHVybiB0aGlzLl9wdXNoT2JqZWN0KHQpO2Nhc2VcInN5bWJvbFwiOnN3aXRjaCh0KXtjYXNlIGYuTlVMTDpyZXR1cm4gdGhpcy5fcHVzaE51bGwobnVsbCk7Y2FzZSBmLlVOREVGSU5FRDpyZXR1cm4gdGhpcy5fcHVzaFVuZGVmaW5lZCh2b2lkIDApO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBzeW1ib2w6IFwiK3QudG9TdHJpbmcoKSl9ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIHR5cGU6IFwiK3R5cGVvZiB0K1wiLCBcIisodC50b1N0cmluZz90LnRvU3RyaW5nKCk6XCJcIikpfX1fcHVzaEFueSh0KXtyZXR1cm4gdGhpcy5wdXNoQW55KHQpfV9lbmNvZGVBbGwodCl7Y29uc3QgZT1uZXcgaSh7aGlnaFdhdGVyTWFyazp0aGlzLnJlYWRhYmxlSGlnaFdhdGVyTWFya30pO3RoaXMucGlwZShlKTtmb3IoY29uc3QgZSBvZiB0KXRoaXMucHVzaEFueShlKTtyZXR1cm4gdGhpcy5lbmQoKSxlLnJlYWQoKX1zdGF0aWMgZW5jb2RlSW5kZWZpbml0ZSh0LGUscj17fSl7aWYobnVsbD09ZSl7aWYobnVsbD09dGhpcyl0aHJvdyBuZXcgRXJyb3IoXCJObyBvYmplY3QgdG8gZW5jb2RlXCIpO2U9dGhpc31jb25zdHtjaHVua1NpemU6bj00MDk2fT1yO2xldCBpPSEwO2NvbnN0IHM9dHlwZW9mIGU7bGV0IGw9bnVsbDtpZihcInN0cmluZ1wiPT09cyl7aT1pJiZ0Ll9wdXNoVUludDgoYS5VVEY4X1NUUklORzw8NXx1LklOREVGSU5JVEUpO2xldCByPTA7Zm9yKDtyPGUubGVuZ3RoOyl7Y29uc3Qgbz1yK247aT1pJiZ0Ll9wdXNoU3RyaW5nKGUuc2xpY2UocixvKSkscj1vfWk9aSYmdC5wdXNoKHYpfWVsc2UgaWYobD1vLmJ1ZmZlcmlzaFRvQnVmZmVyKGUpKXtpPWkmJnQuX3B1c2hVSW50OChhLkJZVEVfU1RSSU5HPDw1fHUuSU5ERUZJTklURSk7bGV0IGU9MDtmb3IoO2U8bC5sZW5ndGg7KXtjb25zdCByPWUrbjtpPWkmJnQuX3B1c2hCdWZmZXIodCxsLnNsaWNlKGUscikpLGU9cn1pPWkmJnQucHVzaCh2KX1lbHNlIGlmKEFycmF5LmlzQXJyYXkoZSkpaT1pJiZ0Ll9wdXNoQXJyYXkodCxlLHtpbmRlZmluaXRlOiEwfSk7ZWxzZSBpZihlIGluc3RhbmNlb2YgTWFwKWk9aSYmdC5fcHVzaE1hcCh0LGUse2luZGVmaW5pdGU6ITB9KTtlbHNle2lmKFwib2JqZWN0XCIhPT1zKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW5kZWZpbml0ZSBlbmNvZGluZ1wiKTtpPWkmJnQuX3B1c2hPYmplY3QoZSx7aW5kZWZpbml0ZTohMCxza2lwVHlwZXM6ITB9KX1yZXR1cm4gaX1zdGF0aWMgZW5jb2RlKC4uLnQpe3JldHVybihuZXcgQikuX2VuY29kZUFsbCh0KX1zdGF0aWMgZW5jb2RlQ2Fub25pY2FsKC4uLnQpe3JldHVybiBuZXcgQih7Y2Fub25pY2FsOiEwfSkuX2VuY29kZUFsbCh0KX1zdGF0aWMgZW5jb2RlT25lKHQsZSl7cmV0dXJuIG5ldyBCKGUpLl9lbmNvZGVBbGwoW3RdKX1zdGF0aWMgZW5jb2RlQXN5bmModCxlKXtyZXR1cm4gbmV3IFByb21pc2UoKChyLG4pPT57Y29uc3QgaT1bXSxvPW5ldyBCKGUpO28ub24oXCJkYXRhXCIsKHQ9PmkucHVzaCh0KSkpLG8ub24oXCJlcnJvclwiLG4pLG8ub24oXCJmaW5pc2hcIiwoKCk9PnIoZC5jb25jYXQoaSkpKSksby5wdXNoQW55KHQpLG8uZW5kKCl9KSl9fXQuZXhwb3J0cz1CfSw3MDoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7Y29uc3R7QnVmZmVyOm59PXIoNzY0KSxpPXIoNjY2KSxvPXIoNzc0KSx7TVQ6c309cig2Nik7Y2xhc3MgYSBleHRlbmRzIE1hcHtjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KX1zdGF0aWMgX2VuY29kZSh0KXtyZXR1cm4gaS5lbmNvZGVDYW5vbmljYWwodCkudG9TdHJpbmcoXCJiYXNlNjRcIil9c3RhdGljIF9kZWNvZGUodCl7cmV0dXJuIG8uZGVjb2RlRmlyc3RTeW5jKHQsXCJiYXNlNjRcIil9Z2V0KHQpe3JldHVybiBzdXBlci5nZXQoYS5fZW5jb2RlKHQpKX1zZXQodCxlKXtyZXR1cm4gc3VwZXIuc2V0KGEuX2VuY29kZSh0KSxlKX1kZWxldGUodCl7cmV0dXJuIHN1cGVyLmRlbGV0ZShhLl9lbmNvZGUodCkpfWhhcyh0KXtyZXR1cm4gc3VwZXIuaGFzKGEuX2VuY29kZSh0KSl9KmtleXMoKXtmb3IoY29uc3QgdCBvZiBzdXBlci5rZXlzKCkpeWllbGQgYS5fZGVjb2RlKHQpfSplbnRyaWVzKCl7Zm9yKGNvbnN0IHQgb2Ygc3VwZXIuZW50cmllcygpKXlpZWxkW2EuX2RlY29kZSh0WzBdKSx0WzFdXX1bU3ltYm9sLml0ZXJhdG9yXSgpe3JldHVybiB0aGlzLmVudHJpZXMoKX1mb3JFYWNoKHQsZSl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBmdW5jdGlvblwiKTtmb3IoY29uc3QgZSBvZiBzdXBlci5lbnRyaWVzKCkpdC5jYWxsKHRoaXMsZVsxXSxhLl9kZWNvZGUoZVswXSksdGhpcyl9ZW5jb2RlQ0JPUih0KXtpZighdC5fcHVzaEludCh0aGlzLnNpemUscy5NQVApKXJldHVybiExO2lmKHQuY2Fub25pY2FsKXtjb25zdCBlPUFycmF5LmZyb20oc3VwZXIuZW50cmllcygpKS5tYXAoKHQ9PltuLmZyb20odFswXSxcImJhc2U2NFwiKSx0WzFdXSkpO2Uuc29ydCgoKHQsZSk9PnRbMF0uY29tcGFyZShlWzBdKSkpO2Zvcihjb25zdCByIG9mIGUpaWYoIXQucHVzaChyWzBdKXx8IXQucHVzaEFueShyWzFdKSlyZXR1cm4hMX1lbHNlIGZvcihjb25zdCBlIG9mIHN1cGVyLmVudHJpZXMoKSlpZighdC5wdXNoKG4uZnJvbShlWzBdLFwiYmFzZTY0XCIpKXx8IXQucHVzaEFueShlWzFdKSlyZXR1cm4hMTtyZXR1cm4hMH19dC5leHBvcnRzPWF9LDMyOih0LGUscik9PntcInVzZSBzdHJpY3RcIjtjb25zdHtNVDpuLFNJTVBMRTppLFNZTVM6b309cig2Nik7Y2xhc3Mgc3tjb25zdHJ1Y3Rvcih0KXtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIFNpbXBsZSB0eXBlOiBcIit0eXBlb2YgdCk7aWYodDwwfHx0PjI1NXx8KDB8dCkhPT10KXRocm93IG5ldyBFcnJvcihcInZhbHVlIG11c3QgYmUgYSBzbWFsbCBwb3NpdGl2ZSBpbnRlZ2VyOiBcIit0KTt0aGlzLnZhbHVlPXR9dG9TdHJpbmcoKXtyZXR1cm5cInNpbXBsZShcIit0aGlzLnZhbHVlK1wiKVwifWluc3BlY3QodCxlKXtyZXR1cm5cInNpbXBsZShcIit0aGlzLnZhbHVlK1wiKVwifWVuY29kZUNCT1IodCl7cmV0dXJuIHQuX3B1c2hJbnQodGhpcy52YWx1ZSxuLlNJTVBMRV9GTE9BVCl9c3RhdGljIGlzU2ltcGxlKHQpe3JldHVybiB0IGluc3RhbmNlb2Ygc31zdGF0aWMgZGVjb2RlKHQsZT0hMCxyPSExKXtzd2l0Y2godCl7Y2FzZSBpLkZBTFNFOnJldHVybiExO2Nhc2UgaS5UUlVFOnJldHVybiEwO2Nhc2UgaS5OVUxMOnJldHVybiBlP251bGw6by5OVUxMO2Nhc2UgaS5VTkRFRklORUQ6aWYoZSlyZXR1cm47cmV0dXJuIG8uVU5ERUZJTkVEO2Nhc2UtMTppZighZXx8IXIpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBCUkVBS1wiKTtyZXR1cm4gby5CUkVBSztkZWZhdWx0OnJldHVybiBuZXcgcyh0KX19fXQuZXhwb3J0cz1zfSw3ODU6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0IG49cig2NiksaT1yKDg3Myk7ZnVuY3Rpb24gbyh0LGUpe2lmKGkuaXNCdWZmZXJpc2godCkpdC50b0pTT049ZTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkpZm9yKGNvbnN0IHIgb2YgdClvKHIsZSk7ZWxzZSBpZih0JiZcIm9iamVjdFwiPT10eXBlb2YgdCYmKCEodCBpbnN0YW5jZW9mIHUpfHx0LnRhZzwyMXx8dC50YWc+MjMpKWZvcihjb25zdCByIG9mIE9iamVjdC52YWx1ZXModCkpbyhyLGUpfWNvbnN0IHM9ezY0OlVpbnQ4QXJyYXksNjU6VWludDE2QXJyYXksNjY6VWludDMyQXJyYXksNjg6VWludDhDbGFtcGVkQXJyYXksNjk6VWludDE2QXJyYXksNzA6VWludDMyQXJyYXksNzI6SW50OEFycmF5LDczOkludDE2QXJyYXksNzQ6SW50MzJBcnJheSw3NzpJbnQxNkFycmF5LDc4OkludDMyQXJyYXksODE6RmxvYXQzMkFycmF5LDgyOkZsb2F0NjRBcnJheSw4NTpGbG9hdDMyQXJyYXksODY6RmxvYXQ2NEFycmF5fTtcInVuZGVmaW5lZFwiIT10eXBlb2YgQmlnVWludDY0QXJyYXkmJihzWzY3XT1CaWdVaW50NjRBcnJheSxzWzcxXT1CaWdVaW50NjRBcnJheSksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIEJpZ0ludDY0QXJyYXkmJihzWzc1XT1CaWdJbnQ2NEFycmF5LHNbNzldPUJpZ0ludDY0QXJyYXkpO2NvbnN0IGE9U3ltYm9sKFwiSU5URVJOQUxfSlNPTlwiKTtjbGFzcyB1e2NvbnN0cnVjdG9yKHQsZSxyKXtpZih0aGlzLnRhZz10LHRoaXMudmFsdWU9ZSx0aGlzLmVycj1yLFwibnVtYmVyXCIhPXR5cGVvZiB0aGlzLnRhZyl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHRhZyB0eXBlIChcIit0eXBlb2YgdGhpcy50YWcrXCIpXCIpO2lmKHRoaXMudGFnPDB8fCgwfHRoaXMudGFnKSE9PXRoaXMudGFnKXRocm93IG5ldyBFcnJvcihcIlRhZyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcjogXCIrdGhpcy50YWcpfXRvSlNPTigpe2lmKHRoaXNbYV0pcmV0dXJuIHRoaXNbYV0oKTtjb25zdCB0PXt0YWc6dGhpcy50YWcsdmFsdWU6dGhpcy52YWx1ZX07cmV0dXJuIHRoaXMuZXJyJiYodC5lcnI9dGhpcy5lcnIpLHR9dG9TdHJpbmcoKXtyZXR1cm5gJHt0aGlzLnRhZ30oJHtKU09OLnN0cmluZ2lmeSh0aGlzLnZhbHVlKX0pYH1lbmNvZGVDQk9SKHQpe3JldHVybiB0Ll9wdXNoVGFnKHRoaXMudGFnKSx0LnB1c2hBbnkodGhpcy52YWx1ZSl9Y29udmVydCh0KXtsZXQgZT1udWxsIT10P3RbdGhpcy50YWddOnZvaWQgMDtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBlJiYoZT11W1wiX3RhZ19cIit0aGlzLnRhZ10sXCJmdW5jdGlvblwiIT10eXBlb2YgZSkpe2lmKGU9c1t0aGlzLnRhZ10sXCJmdW5jdGlvblwiIT10eXBlb2YgZSlyZXR1cm4gdGhpcztlPXRoaXMuX3RvVHlwZWRBcnJheX10cnl7cmV0dXJuIGUuY2FsbCh0aGlzLHRoaXMudmFsdWUpfWNhdGNoKHQpe3JldHVybiB0JiZ0Lm1lc3NhZ2UmJnQubWVzc2FnZS5sZW5ndGg+MD90aGlzLmVycj10Lm1lc3NhZ2U6dGhpcy5lcnI9dCx0aGlzfX1fdG9UeXBlZEFycmF5KHQpe2NvbnN0e3RhZzplfT10aGlzLHI9c1tlXTtpZighcil0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdHlwZWQgYXJyYXkgdGFnOiAke2V9YCk7Y29uc3Qgbj0yKiooKCgxNiZlKT4+NCkrKDMmZSkpO3JldHVybiEoNCZlKSE9PWkuaXNCaWdFbmRpYW4oKSYmbj4xJiZmdW5jdGlvbih0LGUscixuKXtjb25zdCBpPW5ldyBEYXRhVmlldyh0KSxbbyxzXT17MjpbaS5nZXRVaW50MTYsaS5zZXRVaW50MTZdLDQ6W2kuZ2V0VWludDMyLGkuc2V0VWludDMyXSw4OltpLmdldEJpZ1VpbnQ2NCxpLnNldEJpZ1VpbnQ2NF19W2VdLGE9cituO2ZvcihsZXQgdD1yO3Q8YTt0Kz1lKXMuY2FsbChpLHQsby5jYWxsKGksdCwhMCkpfSh0LmJ1ZmZlcixuLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpLG5ldyByKHQuYnVmZmVyLnNsaWNlKHQuYnl0ZU9mZnNldCx0LmJ5dGVPZmZzZXQrdC5ieXRlTGVuZ3RoKSl9c3RhdGljIF90YWdfMCh0KXtyZXR1cm4gbmV3IERhdGUodCl9c3RhdGljIF90YWdfMSh0KXtyZXR1cm4gbmV3IERhdGUoMWUzKnQpfXN0YXRpYyBfdGFnXzIodCl7cmV0dXJuIGkuYnVmZmVyVG9CaWdudW1iZXIodCl9c3RhdGljIF90YWdfMyh0KXtjb25zdCBlPWkuYnVmZmVyVG9CaWdudW1iZXIodCk7cmV0dXJuIG4uQk4uTUlOVVNfT05FLm1pbnVzKGUpfXN0YXRpYyBfdGFnXzQodCl7aWYoIW4uQmlnTnVtYmVyKXRocm93IG5ldyBFcnJvcihcIk5vIGJpZ251bWJlci5qc1wiKTtyZXR1cm4gbmV3IG4uQmlnTnVtYmVyKHRbMV0pLnNoaWZ0ZWRCeSh0WzBdKX1zdGF0aWMgX3RhZ181KHQpe2lmKCFuLkJpZ051bWJlcil0aHJvdyBuZXcgRXJyb3IoXCJObyBiaWdudW1iZXIuanNcIik7cmV0dXJuIG4uQk4uVFdPLnBvdyh0WzBdKS50aW1lcyh0WzFdKX1zdGF0aWMgX3RhZ18yMSh0KXtyZXR1cm4gaS5pc0J1ZmZlcmlzaCh0KT90aGlzW2FdPSgpPT5pLmJhc2U2NHVybCh0KTpvKHQsKGZ1bmN0aW9uKCl7cmV0dXJuIGkuYmFzZTY0dXJsKHRoaXMpfSkpLHRoaXN9c3RhdGljIF90YWdfMjIodCl7cmV0dXJuIGkuaXNCdWZmZXJpc2godCk/dGhpc1thXT0oKT0+aS5iYXNlNjQodCk6byh0LChmdW5jdGlvbigpe3JldHVybiBpLmJhc2U2NCh0aGlzKX0pKSx0aGlzfXN0YXRpYyBfdGFnXzIzKHQpe3JldHVybiBpLmlzQnVmZmVyaXNoKHQpP3RoaXNbYV09KCk9PnQudG9TdHJpbmcoXCJoZXhcIik6byh0LChmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKFwiaGV4XCIpfSkpLHRoaXN9c3RhdGljIF90YWdfMzIodCl7cmV0dXJuIG5ldyBVUkwodCl9c3RhdGljIF90YWdfMzModCl7aWYoIXQubWF0Y2goL15bYS16QS1aMC05Xy1dKyQvKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NHVybCBjaGFyYWN0ZXJzXCIpO2NvbnN0IGU9dC5sZW5ndGglNDtpZigxPT09ZSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NHVybCBsZW5ndGhcIik7aWYoMj09PWUpe2lmKC0xPT09XCJBUWd3XCIuaW5kZXhPZih0W3QubGVuZ3RoLTFdKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NCBwYWRkaW5nXCIpfWVsc2UgaWYoMz09PWUmJi0xPT09XCJBRUlNUVVZY2drb3N3MDQ4XCIuaW5kZXhPZih0W3QubGVuZ3RoLTFdKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NCBwYWRkaW5nXCIpO3JldHVybiB0aGlzfXN0YXRpYyBfdGFnXzM0KHQpe2NvbnN0IGU9dC5tYXRjaCgvXlthLXpBLVowLTkrL10rKD17MCwyfSkkLyk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBiYXNlNjR1cmwgY2hhcmFjdGVyc1wiKTtpZih0Lmxlbmd0aCU0IT0wKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0dXJsIGxlbmd0aFwiKTtpZihcIj1cIj09PWVbMV0pe2lmKC0xPT09XCJBUWd3XCIuaW5kZXhPZih0W3QubGVuZ3RoLTJdKSl0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhc2U2NCBwYWRkaW5nXCIpfWVsc2UgaWYoXCI9PVwiPT09ZVsxXSYmLTE9PT1cIkFFSU1RVVljZ2tvc3cwNDhcIi5pbmRleE9mKHRbdC5sZW5ndGgtM10pKXRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYmFzZTY0IHBhZGRpbmdcIik7cmV0dXJuIHRoaXN9c3RhdGljIF90YWdfMzUodCl7cmV0dXJuIG5ldyBSZWdFeHAodCl9c3RhdGljIF90YWdfMjU4KHQpe3JldHVybiBuZXcgU2V0KHQpfX11LklOVEVSTkFMX0pTT049YSx0LmV4cG9ydHM9dX0sODczOih0LGUscik9PntcInVzZSBzdHJpY3RcIjtjb25zdHtCdWZmZXI6bn09cig3NjQpLGk9cigyMDIpLG89cig4MzApLHM9cig5NjApLGE9cig2Nikse05VTUJZVEVTOnUsU0hJRlQzMjpsLEJJOmMsU1lNUzpmfT1hO2xldCBoPW51bGw7dHJ5e2g9cig2NjkpfWNhdGNoKHQpe2g9cig1OTUpfWUuaW5zcGVjdD1oLmluc3BlY3Q7Y29uc3QgcD1uZXcgcyhcInV0ZjhcIix7ZmF0YWw6ITAsaWdub3JlQk9NOiEwfSk7ZS51dGY4PXQ9PnAuZGVjb2RlKHQpLGUudXRmOC5jaGVja3NVVEY4PSEwLGUuaXNCdWZmZXJpc2g9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwib2JqZWN0XCI9PXR5cGVvZiB0JiYobi5pc0J1ZmZlcih0KXx8dCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheXx8dCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyfHx0IGluc3RhbmNlb2YgRGF0YVZpZXcpfSxlLmJ1ZmZlcmlzaFRvQnVmZmVyPWZ1bmN0aW9uKHQpe3JldHVybiBuLmlzQnVmZmVyKHQpP3Q6QXJyYXlCdWZmZXIuaXNWaWV3KHQpP24uZnJvbSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsdC5ieXRlTGVuZ3RoKTp0IGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/bi5mcm9tKHQpOm51bGx9LGUucGFyc2VDQk9SaW50PWZ1bmN0aW9uKHQsZSxyPSEwKXtzd2l0Y2godCl7Y2FzZSB1Lk9ORTpyZXR1cm4gZS5yZWFkVUludDgoMCk7Y2FzZSB1LlRXTzpyZXR1cm4gZS5yZWFkVUludDE2QkUoMCk7Y2FzZSB1LkZPVVI6cmV0dXJuIGUucmVhZFVJbnQzMkJFKDApO2Nhc2UgdS5FSUdIVDp7Y29uc3QgdD1lLnJlYWRVSW50MzJCRSgwKSxuPWUucmVhZFVJbnQzMkJFKDQpO2lmKHQ+MjA5NzE1MSl7aWYocilyZXR1cm4gQmlnSW50KHQpKmMuU0hJRlQzMitCaWdJbnQobik7aWYoIWEuQmlnTnVtYmVyKXRocm93IG5ldyBFcnJvcihcIk5vIGJpZ2ludCBhbmQgbm8gYmlnbnVtYmVyLmpzXCIpO3JldHVybiBuZXcgYS5CaWdOdW1iZXIodCkudGltZXMobCkucGx1cyhuKX1yZXR1cm4gdCpsK259ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGFkZGl0aW9uYWwgaW5mbyBmb3IgaW50OiBcIit0KX19LGUud3JpdGVIYWxmPWZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj1uLmFsbG9jVW5zYWZlKDQpO3Iud3JpdGVGbG9hdEJFKGUsMCk7Y29uc3QgaT1yLnJlYWRVSW50MzJCRSgwKTtpZigwIT0oODE5MSZpKSlyZXR1cm4hMTtsZXQgbz1pPj4xNiYzMjc2ODtjb25zdCBzPWk+PjIzJjI1NSxhPTgzODg2MDcmaTtpZihzPj0xMTMmJnM8PTE0MilvKz0ocy0xMTI8PDEwKSsoYT4+MTMpO2Vsc2V7aWYoIShzPj0xMDMmJnM8MTEzKSlyZXR1cm4hMTtpZihhJigxPDwxMjYtcyktMSlyZXR1cm4hMTtvKz1hKzgzODg2MDg+PjEyNi1zfXJldHVybiB0LndyaXRlVUludDE2QkUobyksITB9LGUucGFyc2VIYWxmPWZ1bmN0aW9uKHQpe2NvbnN0IGU9MTI4JnRbMF0/LTE6MSxyPSgxMjQmdFswXSk+PjIsbj0oMyZ0WzBdKTw8OHx0WzFdO3JldHVybiByPzMxPT09cj9lKihuP05hTjpJbmZpbml0eSk6ZSpNYXRoLnBvdygyLHItMjUpKigxMDI0K24pOjUuOTYwNDY0NDc3NTM5MDYzZS04KmUqbn0sZS5wYXJzZUNCT1JmbG9hdD1mdW5jdGlvbih0KXtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMjpyZXR1cm4gZS5wYXJzZUhhbGYodCk7Y2FzZSA0OnJldHVybiB0LnJlYWRGbG9hdEJFKDApO2Nhc2UgODpyZXR1cm4gdC5yZWFkRG91YmxlQkUoMCk7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGZsb2F0IHNpemU6IFwiK3QubGVuZ3RoKX19LGUuaGV4PWZ1bmN0aW9uKHQpe3JldHVybiBuLmZyb20odC5yZXBsYWNlKC9eMHgvLFwiXCIpLFwiaGV4XCIpfSxlLmJpbj1mdW5jdGlvbih0KXtsZXQgZT0wLHI9KHQ9dC5yZXBsYWNlKC9cXHMvZyxcIlwiKSkubGVuZ3RoJTh8fDg7Y29uc3QgaT1bXTtmb3IoO3I8PXQubGVuZ3RoOylpLnB1c2gocGFyc2VJbnQodC5zbGljZShlLHIpLDIpKSxlPXIscis9ODtyZXR1cm4gbi5mcm9tKGkpfSxlLmFycmF5RXF1YWw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dCYmbnVsbD09ZXx8bnVsbCE9dCYmbnVsbCE9ZSYmdC5sZW5ndGg9PT1lLmxlbmd0aCYmdC5ldmVyeSgoKHQscik9PnQ9PT1lW3JdKSl9LGUuYnVmZmVyVG9CaWdudW1iZXI9ZnVuY3Rpb24odCl7aWYoIWEuQmlnTnVtYmVyKXRocm93IG5ldyBFcnJvcihcIk5vIGJpZ2ludCBhbmQgbm8gYmlnbnVtYmVyLmpzXCIpO3JldHVybiBuZXcgYS5CaWdOdW1iZXIodC50b1N0cmluZyhcImhleFwiKSwxNil9LGUuYnVmZmVyVG9CaWdJbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIEJpZ0ludChcIjB4XCIrdC50b1N0cmluZyhcImhleFwiKSl9LGUuY2JvclZhbHVlVG9TdHJpbmc9ZnVuY3Rpb24odCxyPS0xKXtzd2l0Y2godHlwZW9mIHQpe2Nhc2VcInN5bWJvbFwiOntzd2l0Y2godCl7Y2FzZSBmLk5VTEw6cmV0dXJuXCJudWxsXCI7Y2FzZSBmLlVOREVGSU5FRDpyZXR1cm5cInVuZGVmaW5lZFwiO2Nhc2UgZi5CUkVBSzpyZXR1cm5cIkJSRUFLXCJ9aWYodC5kZXNjcmlwdGlvbilyZXR1cm4gdC5kZXNjcmlwdGlvbjtjb25zdCBlPXQudG9TdHJpbmcoKS5tYXRjaCgvXlN5bWJvbFxcKCguKilcXCkvKTtyZXR1cm4gZSYmZVsxXT9lWzFdOlwiU3ltYm9sXCJ9Y2FzZVwic3RyaW5nXCI6cmV0dXJuIEpTT04uc3RyaW5naWZ5KHQpO2Nhc2VcImJpZ2ludFwiOnJldHVybiB0LnRvU3RyaW5nKCk7Y2FzZVwibnVtYmVyXCI6cmV0dXJuIHI+MD9oLmluc3BlY3QodCkrXCJfXCIrcjpoLmluc3BlY3QodCl9Y29uc3Qgbj1lLmJ1ZmZlcmlzaFRvQnVmZmVyKHQpO2lmKG4pe2NvbnN0IHQ9bi50b1N0cmluZyhcImhleFwiKTtyZXR1cm4gcj09PS0xLzA/dDpgaCcke3R9J2B9cmV0dXJuIGEuQmlnTnVtYmVyJiZhLkJpZ051bWJlci5pc0JpZ051bWJlcih0KT90LnRvU3RyaW5nKCk6dCYmXCJmdW5jdGlvblwiPT10eXBlb2YgdC5pbnNwZWN0P3QuaW5zcGVjdCgpOmguaW5zcGVjdCh0KX0sZS5ndWVzc0VuY29kaW5nPWZ1bmN0aW9uKHQscil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpcmV0dXJuIG5ldyBpKHQsbnVsbCE9cj9yOlwiaGV4XCIpO2NvbnN0IG49ZS5idWZmZXJpc2hUb0J1ZmZlcih0KTtpZihuKXJldHVybiBuZXcgaShuKTtpZigocz10KWluc3RhbmNlb2Ygby5SZWFkYWJsZXx8W1wicmVhZFwiLFwib25cIixcInBpcGVcIl0uZXZlcnkoKHQ9PlwiZnVuY3Rpb25cIj09dHlwZW9mIHNbdF0pKSlyZXR1cm4gdDt2YXIgczt0aHJvdyBuZXcgRXJyb3IoXCJVbmtub3duIGlucHV0IHR5cGVcIil9O2NvbnN0IGQ9e1wiPVwiOlwiXCIsXCIrXCI6XCItXCIsXCIvXCI6XCJfXCJ9O2UuYmFzZTY0dXJsPWZ1bmN0aW9uKHQpe3JldHVybiBlLmJ1ZmZlcmlzaFRvQnVmZmVyKHQpLnRvU3RyaW5nKFwiYmFzZTY0XCIpLnJlcGxhY2UoL1s9Ky9dL2csKHQ9PmRbdF0pKX0sZS5iYXNlNjQ9ZnVuY3Rpb24odCl7cmV0dXJuIGUuYnVmZmVyaXNoVG9CdWZmZXIodCkudG9TdHJpbmcoXCJiYXNlNjRcIil9LGUuaXNCaWdFbmRpYW49ZnVuY3Rpb24oKXtjb25zdCB0PW5ldyBVaW50OEFycmF5KDQpO3JldHVybiEoKG5ldyBVaW50MzJBcnJheSh0LmJ1ZmZlcilbMF09MSkmdFswXSl9fSw5NjA6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2xldCBuPW51bGw7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgVGV4dERlY29kZXIpbj1UZXh0RGVjb2RlcjtlbHNlIGlmKFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cpbj13aW5kb3cuVGV4dERlY29kZXI7ZWxzZSBpZihcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZiluPXNlbGYuVGV4dERlY29kZXI7ZWxzZSB0cnl7Y29uc3QgdD1yKDY2OSk7XCJmdW5jdGlvblwiIT10eXBlb2YgbiYmKG49dC5UZXh0RGVjb2Rlcil9Y2F0Y2godCl7fWlmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIG4pe2NsYXNzIHR7Y29uc3RydWN0b3IodCxlKXt0aGlzLnV0ZkxhYmVsPXQsdGhpcy5vcHRpb25zPWV9ZGVjb2RlKHQpe2NvbnN0IGU9dC50b1N0cmluZyh0aGlzLnV0ZkxhYmVsKTtpZih0aGlzLm9wdGlvbnMuZmF0YWwpZm9yKGNvbnN0IHQgb2YgZSlpZig2NTUzMz09PXQuY29kZVBvaW50QXQoMCkpe2NvbnN0IHQ9bmV3IFR5cGVFcnJvcihcIltFUlJfRU5DT0RJTkdfSU5WQUxJRF9FTkNPREVEX0RBVEFdOiBUaGUgZW5jb2RlZCBkYXRhIHdhcyBub3QgdmFsaWQgZm9yIGVuY29kaW5nIFwiK3RoaXMudXRmTGFiZWwpO3Rocm93IHQuY29kZT1cIkVSUl9FTkNPRElOR19JTlZBTElEX0VOQ09ERURfREFUQVwiLHQuZXJybm89MTIsdH1yZXR1cm4gZX19bj10fXQuZXhwb3J0cz1ufSwyMDI6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0IG49cig4MzApLHtCdWZmZXI6aX09cig3NjQpLG89cig5NjApO2xldCBzPW51bGwsYT1TeW1ib2wuZm9yKFwibm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b21cIik7dHJ5e3M9cig2NjkpLGE9cy5pbnNwZWN0LmN1c3RvbX1jYXRjaCh0KXt9Y29uc3QgdT1uZXcgbyhcInV0ZjhcIix7ZmF0YWw6ITAsaWdub3JlQk9NOiEwfSk7Y2xhc3MgbCBleHRlbmRzIG4uVHJhbnNmb3Jte2NvbnN0cnVjdG9yKHQsZSxyKXtudWxsPT1yJiYocj17fSk7bGV0IG49bnVsbCxvPW51bGw7c3dpdGNoKHR5cGVvZiB0KXtjYXNlXCJvYmplY3RcIjppLmlzQnVmZmVyKHQpPyhuPXQsbnVsbCE9ZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJihyPWUpKTpyPXQ7YnJlYWs7Y2FzZVwic3RyaW5nXCI6bj10LG51bGwhPWUmJlwib2JqZWN0XCI9PXR5cGVvZiBlP3I9ZTpvPWV9bnVsbD09ciYmKHI9e30pLG51bGw9PW4mJihuPXIuaW5wdXQpLG51bGw9PW8mJihvPXIuaW5wdXRFbmNvZGluZyksZGVsZXRlIHIuaW5wdXQsZGVsZXRlIHIuaW5wdXRFbmNvZGluZztjb25zdCBzPW51bGw9PXIud2F0Y2hQaXBlfHxyLndhdGNoUGlwZTtkZWxldGUgci53YXRjaFBpcGU7Y29uc3QgYT0hIXIucmVhZEVycm9yO2RlbGV0ZSByLnJlYWRFcnJvcixzdXBlcihyKSx0aGlzLnJlYWRFcnJvcj1hLHMmJnRoaXMub24oXCJwaXBlXCIsKHQ9Pntjb25zdCBlPXQuX3JlYWRhYmxlU3RhdGUub2JqZWN0TW9kZTtpZih0aGlzLmxlbmd0aD4wJiZlIT09dGhpcy5fcmVhZGFibGVTdGF0ZS5vYmplY3RNb2RlKXRocm93IG5ldyBFcnJvcihcIkRvIG5vdCBzd2l0Y2ggb2JqZWN0TW9kZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzdHJlYW1cIik7dGhpcy5fcmVhZGFibGVTdGF0ZS5vYmplY3RNb2RlPWUsdGhpcy5fd3JpdGFibGVTdGF0ZS5vYmplY3RNb2RlPWV9KSksbnVsbCE9biYmdGhpcy5lbmQobixvKX1zdGF0aWMgaXNOb0ZpbHRlcih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHRoaXN9c3RhdGljIGNvbXBhcmUodCxlKXtpZighKHQgaW5zdGFuY2VvZiB0aGlzKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnRzIG11c3QgYmUgTm9GaWx0ZXJzXCIpO3JldHVybiB0PT09ZT8wOnQuY29tcGFyZShlKX1zdGF0aWMgY29uY2F0KHQsZSl7aWYoIUFycmF5LmlzQXJyYXkodCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcImxpc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBOb0ZpbHRlcnNcIik7aWYoMD09PXQubGVuZ3RofHwwPT09ZSlyZXR1cm4gaS5hbGxvYygwKTtudWxsPT1lJiYoZT10LnJlZHVjZSgoKHQsZSk9PntpZighKGUgaW5zdGFuY2VvZiBsKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwibGlzdCBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIE5vRmlsdGVyc1wiKTtyZXR1cm4gdCtlLmxlbmd0aH0pLDApKTtsZXQgcj0hMCxuPSEwO2NvbnN0IG89dC5tYXAoKHQ9PntpZighKHQgaW5zdGFuY2VvZiBsKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwibGlzdCBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIE5vRmlsdGVyc1wiKTtjb25zdCBlPXQuc2xpY2UoKTtyZXR1cm4gaS5pc0J1ZmZlcihlKT9uPSExOnI9ITEsZX0pKTtpZihyKXJldHVybiBpLmNvbmNhdChvLGUpO2lmKG4pcmV0dXJuW10uY29uY2F0KC4uLm8pLnNsaWNlKDAsZSk7dGhyb3cgbmV3IEVycm9yKFwiQ29uY2F0ZW5hdGluZyBtaXhlZCBvYmplY3QgYW5kIGJ5dGUgc3RyZWFtcyBub3Qgc3VwcG9ydGVkXCIpfV90cmFuc2Zvcm0odCxlLHIpe3RoaXMuX3JlYWRhYmxlU3RhdGUub2JqZWN0TW9kZXx8aS5pc0J1ZmZlcih0KXx8KHQ9aS5mcm9tKHQsZSkpLHRoaXMucHVzaCh0KSxyKCl9X2J1ZkFycmF5KCl7bGV0IHQ9dGhpcy5fcmVhZGFibGVTdGF0ZS5idWZmZXI7aWYoIUFycmF5LmlzQXJyYXkodCkpe2xldCBlPXQuaGVhZDtmb3IodD1bXTtudWxsIT1lOyl0LnB1c2goZS5kYXRhKSxlPWUubmV4dH1yZXR1cm4gdH1yZWFkKHQpe2NvbnN0IGU9c3VwZXIucmVhZCh0KTtpZihudWxsIT1lKXtpZih0aGlzLmVtaXQoXCJyZWFkXCIsZSksdGhpcy5yZWFkRXJyb3ImJmUubGVuZ3RoPHQpdGhyb3cgbmV3IEVycm9yKGBSZWFkICR7ZS5sZW5ndGh9LCB3YW50ZWQgJHt0fWApfWVsc2UgaWYodGhpcy5yZWFkRXJyb3IpdGhyb3cgbmV3IEVycm9yKGBObyBkYXRhIGF2YWlsYWJsZSwgd2FudGVkICR7dH1gKTtyZXR1cm4gZX1wcm9taXNlKHQpe2xldCBlPSExO3JldHVybiBuZXcgUHJvbWlzZSgoKHIsbik9Pnt0aGlzLm9uKFwiZmluaXNoXCIsKCgpPT57Y29uc3Qgbj10aGlzLnJlYWQoKTtudWxsPT10fHxlfHwoZT0hMCx0KG51bGwsbikpLHIobil9KSksdGhpcy5vbihcImVycm9yXCIsKHI9PntudWxsPT10fHxlfHwoZT0hMCx0KHIpKSxuKHIpfSkpfSkpfWNvbXBhcmUodCl7aWYoISh0IGluc3RhbmNlb2YgbCkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50cyBtdXN0IGJlIE5vRmlsdGVyc1wiKTtpZih0aGlzPT09dClyZXR1cm4gMDtjb25zdCBlPXRoaXMuc2xpY2UoKSxyPXQuc2xpY2UoKTtpZihpLmlzQnVmZmVyKGUpJiZpLmlzQnVmZmVyKHIpKXJldHVybiBlLmNvbXBhcmUocik7dGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGNvbXBhcmUgc3RyZWFtcyBpbiBvYmplY3QgbW9kZVwiKX1lcXVhbHModCl7cmV0dXJuIDA9PT10aGlzLmNvbXBhcmUodCl9c2xpY2UodCxlKXtpZih0aGlzLl9yZWFkYWJsZVN0YXRlLm9iamVjdE1vZGUpcmV0dXJuIHRoaXMuX2J1ZkFycmF5KCkuc2xpY2UodCxlKTtjb25zdCByPXRoaXMuX2J1ZkFycmF5KCk7c3dpdGNoKHIubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIGkuYWxsb2MoMCk7Y2FzZSAxOnJldHVybiByWzBdLnNsaWNlKHQsZSk7ZGVmYXVsdDpyZXR1cm4gaS5jb25jYXQocikuc2xpY2UodCxlKX19Z2V0KHQpe3JldHVybiB0aGlzLnNsaWNlKClbdF19dG9KU09OKCl7Y29uc3QgdD10aGlzLnNsaWNlKCk7cmV0dXJuIGkuaXNCdWZmZXIodCk/dC50b0pTT04oKTp0fXRvU3RyaW5nKHQsZSxyKXtjb25zdCBuPXRoaXMuc2xpY2UoZSxyKTtyZXR1cm4gaS5pc0J1ZmZlcihuKT90JiZcInV0ZjhcIiE9PXQ/bi50b1N0cmluZyh0LGUscik6dS5kZWNvZGUobik6SlNPTi5zdHJpbmdpZnkobil9aW5zcGVjdCh0LGUpe3JldHVybiB0aGlzW2FdKHQsZSl9W2FdKHQsZSl7Y29uc3Qgcj10aGlzLl9idWZBcnJheSgpLm1hcCgodD0+aS5pc0J1ZmZlcih0KT8obnVsbCE9ZT9lLnN0eWxpemU6dm9pZCAwKT9lLnN0eWxpemUodC50b1N0cmluZyhcImhleFwiKSxcInN0cmluZ1wiKTp0LnRvU3RyaW5nKFwiaGV4XCIpOnM/cy5pbnNwZWN0KHQsZSk6dC50b1N0cmluZygpKSkuam9pbihcIiwgXCIpO3JldHVybmAke3RoaXMuY29uc3RydWN0b3IubmFtZX0gWyR7cn1dYH1nZXQgbGVuZ3RoKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RofXdyaXRlQmlnSW50KHQpe2xldCBlPXQudG9TdHJpbmcoMTYpO2lmKHQ8MCl7Y29uc3Qgcj1CaWdJbnQoTWF0aC5mbG9vcihlLmxlbmd0aC8yKSk7ZT0odD0oQmlnSW50KDEpPDxyKkJpZ0ludCg4KSkrdCkudG9TdHJpbmcoMTYpfXJldHVybiBlLmxlbmd0aCUyJiYoZT1cIjBcIitlKSx0aGlzLnB1c2goaS5mcm9tKGUsXCJoZXhcIikpfXJlYWRVQmlnSW50KHQpe2NvbnN0IGU9dGhpcy5yZWFkKHQpO3JldHVybiBpLmlzQnVmZmVyKGUpP0JpZ0ludChcIjB4XCIrZS50b1N0cmluZyhcImhleFwiKSk6bnVsbH1yZWFkQmlnSW50KHQpe2NvbnN0IGU9dGhpcy5yZWFkKHQpO2lmKCFpLmlzQnVmZmVyKGUpKXJldHVybiBudWxsO2xldCByPUJpZ0ludChcIjB4XCIrZS50b1N0cmluZyhcImhleFwiKSk7cmV0dXJuIDEyOCZlWzBdJiYoci09QmlnSW50KDEpPDxCaWdJbnQoZS5sZW5ndGgpKkJpZ0ludCg4KSkscn19ZnVuY3Rpb24gYyh0LGUpe3JldHVybiBmdW5jdGlvbihyKXtjb25zdCBuPXRoaXMucmVhZChlKTtyZXR1cm4gaS5pc0J1ZmZlcihuKT9uW3RdLmNhbGwobiwwLCEwKTpudWxsfX1mdW5jdGlvbiBmKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe2NvbnN0IG49aS5hbGxvYyhlKTtyZXR1cm4gblt0XS5jYWxsKG4sciwwLCEwKSx0aGlzLnB1c2gobil9fU9iamVjdC5hc3NpZ24obC5wcm90b3R5cGUse3dyaXRlVUludDg6ZihcIndyaXRlVUludDhcIiwxKSx3cml0ZVVJbnQxNkxFOmYoXCJ3cml0ZVVJbnQxNkxFXCIsMiksd3JpdGVVSW50MTZCRTpmKFwid3JpdGVVSW50MTZCRVwiLDIpLHdyaXRlVUludDMyTEU6ZihcIndyaXRlVUludDMyTEVcIiw0KSx3cml0ZVVJbnQzMkJFOmYoXCJ3cml0ZVVJbnQzMkJFXCIsNCksd3JpdGVJbnQ4OmYoXCJ3cml0ZUludDhcIiwxKSx3cml0ZUludDE2TEU6ZihcIndyaXRlSW50MTZMRVwiLDIpLHdyaXRlSW50MTZCRTpmKFwid3JpdGVJbnQxNkJFXCIsMiksd3JpdGVJbnQzMkxFOmYoXCJ3cml0ZUludDMyTEVcIiw0KSx3cml0ZUludDMyQkU6ZihcIndyaXRlSW50MzJCRVwiLDQpLHdyaXRlRmxvYXRMRTpmKFwid3JpdGVGbG9hdExFXCIsNCksd3JpdGVGbG9hdEJFOmYoXCJ3cml0ZUZsb2F0QkVcIiw0KSx3cml0ZURvdWJsZUxFOmYoXCJ3cml0ZURvdWJsZUxFXCIsOCksd3JpdGVEb3VibGVCRTpmKFwid3JpdGVEb3VibGVCRVwiLDgpLHJlYWRVSW50ODpjKFwicmVhZFVJbnQ4XCIsMSkscmVhZFVJbnQxNkxFOmMoXCJyZWFkVUludDE2TEVcIiwyKSxyZWFkVUludDE2QkU6YyhcInJlYWRVSW50MTZCRVwiLDIpLHJlYWRVSW50MzJMRTpjKFwicmVhZFVJbnQzMkxFXCIsNCkscmVhZFVJbnQzMkJFOmMoXCJyZWFkVUludDMyQkVcIiw0KSxyZWFkSW50ODpjKFwicmVhZEludDhcIiwxKSxyZWFkSW50MTZMRTpjKFwicmVhZEludDE2TEVcIiwyKSxyZWFkSW50MTZCRTpjKFwicmVhZEludDE2QkVcIiwyKSxyZWFkSW50MzJMRTpjKFwicmVhZEludDMyTEVcIiw0KSxyZWFkSW50MzJCRTpjKFwicmVhZEludDMyQkVcIiw0KSxyZWFkRmxvYXRMRTpjKFwicmVhZEZsb2F0TEVcIiw0KSxyZWFkRmxvYXRCRTpjKFwicmVhZEZsb2F0QkVcIiw0KSxyZWFkRG91YmxlTEU6YyhcInJlYWREb3VibGVMRVwiLDgpLHJlYWREb3VibGVCRTpjKFwicmVhZERvdWJsZUJFXCIsOCl9KSx0LmV4cG9ydHM9bH0sNzE6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO2NvbnN0IG49cig4MzApLGk9cigyMDIpLG89bi5UcmFuc2Zvcm07dC5leHBvcnRzPWNsYXNzIGV4dGVuZHMgb3tjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl93cml0YWJsZVN0YXRlLm9iamVjdE1vZGU9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5vYmplY3RNb2RlPSEwLHRoaXMuYnM9bmV3IGksdGhpcy5fX3Jlc3RhcnQoKX1fdHJhbnNmb3JtKHQsZSxyKXtmb3IodGhpcy5icy53cml0ZSh0KTt0aGlzLmJzLmxlbmd0aD49dGhpcy5fX25lZWRlZDspe2xldCB0PW51bGw7Y29uc3QgZT1udWxsPT09dGhpcy5fX25lZWRlZD92b2lkIDA6dGhpcy5icy5yZWFkKHRoaXMuX19uZWVkZWQpO3RyeXt0PXRoaXMuX19wYXJzZXIubmV4dChlKX1jYXRjaCh0KXtyZXR1cm4gcih0KX10aGlzLl9fbmVlZGVkJiYodGhpcy5fX2ZyZXNoPSExKSx0LmRvbmU/KHRoaXMucHVzaCh0LnZhbHVlKSx0aGlzLl9fcmVzdGFydCgpKTp0aGlzLl9fbmVlZGVkPXQudmFsdWV8fDEvMH1yZXR1cm4gcigpfSpfcGFyc2UoKXt0aHJvdyBuZXcgRXJyb3IoXCJNdXN0IGJlIGltcGxlbWVudGVkIGluIHN1YmNsYXNzXCIpfV9fcmVzdGFydCgpe3RoaXMuX19uZWVkZWQ9bnVsbCx0aGlzLl9fcGFyc2VyPXRoaXMuX3BhcnNlKCksdGhpcy5fX2ZyZXNoPSEwfV9mbHVzaCh0KXt0KHRoaXMuX19mcmVzaD9udWxsOm5ldyBFcnJvcihcInVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIpKX19fSwxODc6dD0+e1widXNlIHN0cmljdFwiO3ZhciBlLHI9XCJvYmplY3RcIj09dHlwZW9mIFJlZmxlY3Q/UmVmbGVjdDpudWxsLG49ciYmXCJmdW5jdGlvblwiPT10eXBlb2Ygci5hcHBseT9yLmFwcGx5OmZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwodCxlLHIpfTtlPXImJlwiZnVuY3Rpb25cIj09dHlwZW9mIHIub3duS2V5cz9yLm93bktleXM6T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scz9mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuY29uY2F0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCkpfTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCl9O3ZhciBpPU51bWJlci5pc05hTnx8ZnVuY3Rpb24odCl7cmV0dXJuIHQhPXR9O2Z1bmN0aW9uIG8oKXtvLmluaXQuY2FsbCh0aGlzKX10LmV4cG9ydHM9byx0LmV4cG9ydHMub25jZT1mdW5jdGlvbih0LGUpe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24ocixuKXtmdW5jdGlvbiBpKHIpe3QucmVtb3ZlTGlzdGVuZXIoZSxvKSxuKHIpfWZ1bmN0aW9uIG8oKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnJlbW92ZUxpc3RlbmVyJiZ0LnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixpKSxyKFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSl9eSh0LGUsbyx7b25jZTohMH0pLFwiZXJyb3JcIiE9PWUmJmZ1bmN0aW9uKHQsZSxyKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0Lm9uJiZ5KHQsXCJlcnJvclwiLGUse29uY2U6ITB9KX0odCxpKX0pKX0sby5FdmVudEVtaXR0ZXI9byxvLnByb3RvdHlwZS5fZXZlbnRzPXZvaWQgMCxvLnByb3RvdHlwZS5fZXZlbnRzQ291bnQ9MCxvLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzPXZvaWQgMDt2YXIgcz0xMDtmdW5jdGlvbiBhKHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwibGlzdGVuZXJcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24uIFJlY2VpdmVkIHR5cGUgJyt0eXBlb2YgdCl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4gdm9pZCAwPT09dC5fbWF4TGlzdGVuZXJzP28uZGVmYXVsdE1heExpc3RlbmVyczp0Ll9tYXhMaXN0ZW5lcnN9ZnVuY3Rpb24gbCh0LGUscixuKXt2YXIgaSxvLHMsbDtpZihhKHIpLHZvaWQgMD09PShvPXQuX2V2ZW50cyk/KG89dC5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdC5fZXZlbnRzQ291bnQ9MCk6KHZvaWQgMCE9PW8ubmV3TGlzdGVuZXImJih0LmVtaXQoXCJuZXdMaXN0ZW5lclwiLGUsci5saXN0ZW5lcj9yLmxpc3RlbmVyOnIpLG89dC5fZXZlbnRzKSxzPW9bZV0pLHZvaWQgMD09PXMpcz1vW2VdPXIsKyt0Ll9ldmVudHNDb3VudDtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHM/cz1vW2VdPW4/W3Isc106W3Mscl06bj9zLnVuc2hpZnQocik6cy5wdXNoKHIpLChpPXUodCkpPjAmJnMubGVuZ3RoPmkmJiFzLndhcm5lZCl7cy53YXJuZWQ9ITA7dmFyIGM9bmV3IEVycm9yKFwiUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiBcIitzLmxlbmd0aCtcIiBcIitTdHJpbmcoZSkrXCIgbGlzdGVuZXJzIGFkZGVkLiBVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBpbmNyZWFzZSBsaW1pdFwiKTtjLm5hbWU9XCJNYXhMaXN0ZW5lcnNFeGNlZWRlZFdhcm5pbmdcIixjLmVtaXR0ZXI9dCxjLnR5cGU9ZSxjLmNvdW50PXMubGVuZ3RoLGw9Yyxjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybihsKX1yZXR1cm4gdH1mdW5jdGlvbiBjKCl7aWYoIXRoaXMuZmlyZWQpcmV0dXJuIHRoaXMudGFyZ2V0LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSx0aGlzLndyYXBGbiksdGhpcy5maXJlZD0hMCwwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQpOnRoaXMubGlzdGVuZXIuYXBwbHkodGhpcy50YXJnZXQsYXJndW1lbnRzKX1mdW5jdGlvbiBmKHQsZSxyKXt2YXIgbj17ZmlyZWQ6ITEsd3JhcEZuOnZvaWQgMCx0YXJnZXQ6dCx0eXBlOmUsbGlzdGVuZXI6cn0saT1jLmJpbmQobik7cmV0dXJuIGkubGlzdGVuZXI9cixuLndyYXBGbj1pLGl9ZnVuY3Rpb24gaCh0LGUscil7dmFyIG49dC5fZXZlbnRzO2lmKHZvaWQgMD09PW4pcmV0dXJuW107dmFyIGk9bltlXTtyZXR1cm4gdm9pZCAwPT09aT9bXTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBpP3I/W2kubGlzdGVuZXJ8fGldOltpXTpyP2Z1bmN0aW9uKHQpe2Zvcih2YXIgZT1uZXcgQXJyYXkodC5sZW5ndGgpLHI9MDtyPGUubGVuZ3RoOysrcillW3JdPXRbcl0ubGlzdGVuZXJ8fHRbcl07cmV0dXJuIGV9KGkpOmQoaSxpLmxlbmd0aCl9ZnVuY3Rpb24gcCh0KXt2YXIgZT10aGlzLl9ldmVudHM7aWYodm9pZCAwIT09ZSl7dmFyIHI9ZVt0XTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiByKXJldHVybiAxO2lmKHZvaWQgMCE9PXIpcmV0dXJuIHIubGVuZ3RofXJldHVybiAwfWZ1bmN0aW9uIGQodCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KGUpLG49MDtuPGU7KytuKXJbbl09dFtuXTtyZXR1cm4gcn1mdW5jdGlvbiB5KHQsZSxyLG4pe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQub24pbi5vbmNlP3Qub25jZShlLHIpOnQub24oZSxyKTtlbHNle2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQuYWRkRXZlbnRMaXN0ZW5lcil0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJlbWl0dGVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEV2ZW50RW1pdHRlci4gUmVjZWl2ZWQgdHlwZSAnK3R5cGVvZiB0KTt0LmFkZEV2ZW50TGlzdGVuZXIoZSwoZnVuY3Rpb24gaShvKXtuLm9uY2UmJnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLGkpLHIobyl9KSl9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLFwiZGVmYXVsdE1heExpc3RlbmVyc1wiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzfSxzZXQ6ZnVuY3Rpb24odCl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIHR8fHQ8MHx8aSh0KSl0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mIFwiZGVmYXVsdE1heExpc3RlbmVyc1wiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcrdCtcIi5cIik7cz10fX0pLG8uaW5pdD1mdW5jdGlvbigpe3ZvaWQgMCE9PXRoaXMuX2V2ZW50cyYmdGhpcy5fZXZlbnRzIT09T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHN8fCh0aGlzLl9ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSx0aGlzLl9ldmVudHNDb3VudD0wKSx0aGlzLl9tYXhMaXN0ZW5lcnM9dGhpcy5fbWF4TGlzdGVuZXJzfHx2b2lkIDB9LG8ucHJvdG90eXBlLnNldE1heExpc3RlbmVycz1mdW5jdGlvbih0KXtpZihcIm51bWJlclwiIT10eXBlb2YgdHx8dDwwfHxpKHQpKXRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJuXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyt0K1wiLlwiKTtyZXR1cm4gdGhpcy5fbWF4TGlzdGVuZXJzPXQsdGhpc30sby5wcm90b3R5cGUuZ2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIHUodGhpcyl9LG8ucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKWUucHVzaChhcmd1bWVudHNbcl0pO3ZhciBpPVwiZXJyb3JcIj09PXQsbz10aGlzLl9ldmVudHM7aWYodm9pZCAwIT09bylpPWkmJnZvaWQgMD09PW8uZXJyb3I7ZWxzZSBpZighaSlyZXR1cm4hMTtpZihpKXt2YXIgcztpZihlLmxlbmd0aD4wJiYocz1lWzBdKSxzIGluc3RhbmNlb2YgRXJyb3IpdGhyb3cgczt2YXIgYT1uZXcgRXJyb3IoXCJVbmhhbmRsZWQgZXJyb3IuXCIrKHM/XCIgKFwiK3MubWVzc2FnZStcIilcIjpcIlwiKSk7dGhyb3cgYS5jb250ZXh0PXMsYX12YXIgdT1vW3RdO2lmKHZvaWQgMD09PXUpcmV0dXJuITE7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgdSluKHUsdGhpcyxlKTtlbHNle3ZhciBsPXUubGVuZ3RoLGM9ZCh1LGwpO2ZvcihyPTA7cjxsOysrciluKGNbcl0sdGhpcyxlKX1yZXR1cm4hMH0sby5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbCh0aGlzLHQsZSwhMSl9LG8ucHJvdG90eXBlLm9uPW8ucHJvdG90eXBlLmFkZExpc3RlbmVyLG8ucHJvdG90eXBlLnByZXBlbmRMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3JldHVybiBsKHRoaXMsdCxlLCEwKX0sby5wcm90b3R5cGUub25jZT1mdW5jdGlvbih0LGUpe3JldHVybiBhKGUpLHRoaXMub24odCxmKHRoaXMsdCxlKSksdGhpc30sby5wcm90b3R5cGUucHJlcGVuZE9uY2VMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3JldHVybiBhKGUpLHRoaXMucHJlcGVuZExpc3RlbmVyKHQsZih0aGlzLHQsZSkpLHRoaXN9LG8ucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixpLG8scztpZihhKGUpLHZvaWQgMD09PShuPXRoaXMuX2V2ZW50cykpcmV0dXJuIHRoaXM7aWYodm9pZCAwPT09KHI9blt0XSkpcmV0dXJuIHRoaXM7aWYocj09PWV8fHIubGlzdGVuZXI9PT1lKTA9PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6KGRlbGV0ZSBuW3RdLG4ucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdChcInJlbW92ZUxpc3RlbmVyXCIsdCxyLmxpc3RlbmVyfHxlKSk7ZWxzZSBpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiByKXtmb3IoaT0tMSxvPXIubGVuZ3RoLTE7bz49MDtvLS0paWYocltvXT09PWV8fHJbb10ubGlzdGVuZXI9PT1lKXtzPXJbb10ubGlzdGVuZXIsaT1vO2JyZWFrfWlmKGk8MClyZXR1cm4gdGhpczswPT09aT9yLnNoaWZ0KCk6ZnVuY3Rpb24odCxlKXtmb3IoO2UrMTx0Lmxlbmd0aDtlKyspdFtlXT10W2UrMV07dC5wb3AoKX0ocixpKSwxPT09ci5sZW5ndGgmJihuW3RdPXJbMF0pLHZvaWQgMCE9PW4ucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdChcInJlbW92ZUxpc3RlbmVyXCIsdCxzfHxlKX1yZXR1cm4gdGhpc30sby5wcm90b3R5cGUub2ZmPW8ucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyLG8ucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbih0KXt2YXIgZSxyLG47aWYodm9pZCAwPT09KHI9dGhpcy5fZXZlbnRzKSlyZXR1cm4gdGhpcztpZih2b2lkIDA9PT1yLnJlbW92ZUxpc3RlbmVyKXJldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD8odGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCk6dm9pZCAwIT09clt0XSYmKDA9PS0tdGhpcy5fZXZlbnRzQ291bnQ/dGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk6ZGVsZXRlIHJbdF0pLHRoaXM7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciBpLG89T2JqZWN0LmtleXMocik7Zm9yKG49MDtuPG8ubGVuZ3RoOysrbilcInJlbW92ZUxpc3RlbmVyXCIhPT0oaT1vW25dKSYmdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoaSk7cmV0dXJuIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKFwicmVtb3ZlTGlzdGVuZXJcIiksdGhpcy5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksdGhpcy5fZXZlbnRzQ291bnQ9MCx0aGlzfWlmKFwiZnVuY3Rpb25cIj09dHlwZW9mKGU9clt0XSkpdGhpcy5yZW1vdmVMaXN0ZW5lcih0LGUpO2Vsc2UgaWYodm9pZCAwIT09ZSlmb3Iobj1lLmxlbmd0aC0xO24+PTA7bi0tKXRoaXMucmVtb3ZlTGlzdGVuZXIodCxlW25dKTtyZXR1cm4gdGhpc30sby5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3JldHVybiBoKHRoaXMsdCwhMCl9LG8ucHJvdG90eXBlLnJhd0xpc3RlbmVycz1mdW5jdGlvbih0KXtyZXR1cm4gaCh0aGlzLHQsITEpfSxvLmxpc3RlbmVyQ291bnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0Lmxpc3RlbmVyQ291bnQ/dC5saXN0ZW5lckNvdW50KGUpOnAuY2FsbCh0LGUpfSxvLnByb3RvdHlwZS5saXN0ZW5lckNvdW50PXAsby5wcm90b3R5cGUuZXZlbnROYW1lcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9ldmVudHNDb3VudD4wP2UodGhpcy5fZXZlbnRzKTpbXX19LDY0NToodCxlKT0+e2UucmVhZD1mdW5jdGlvbih0LGUscixuLGkpe3ZhciBvLHMsYT04Kmktbi0xLHU9KDE8PGEpLTEsbD11Pj4xLGM9LTcsZj1yP2ktMTowLGg9cj8tMToxLHA9dFtlK2ZdO2ZvcihmKz1oLG89cCYoMTw8LWMpLTEscD4+PS1jLGMrPWE7Yz4wO289MjU2Km8rdFtlK2ZdLGYrPWgsYy09OCk7Zm9yKHM9byYoMTw8LWMpLTEsbz4+PS1jLGMrPW47Yz4wO3M9MjU2KnMrdFtlK2ZdLGYrPWgsYy09OCk7aWYoMD09PW8pbz0xLWw7ZWxzZXtpZihvPT09dSlyZXR1cm4gcz9OYU46MS8wKihwPy0xOjEpO3MrPU1hdGgucG93KDIsbiksby09bH1yZXR1cm4ocD8tMToxKSpzKk1hdGgucG93KDIsby1uKX0sZS53cml0ZT1mdW5jdGlvbih0LGUscixuLGksbyl7dmFyIHMsYSx1LGw9OCpvLWktMSxjPSgxPDxsKS0xLGY9Yz4+MSxoPTIzPT09aT9NYXRoLnBvdygyLC0yNCktTWF0aC5wb3coMiwtNzcpOjAscD1uPzA6by0xLGQ9bj8xOi0xLHk9ZTwwfHwwPT09ZSYmMS9lPDA/MTowO2ZvcihlPU1hdGguYWJzKGUpLGlzTmFOKGUpfHxlPT09MS8wPyhhPWlzTmFOKGUpPzE6MCxzPWMpOihzPU1hdGguZmxvb3IoTWF0aC5sb2coZSkvTWF0aC5MTjIpLGUqKHU9TWF0aC5wb3coMiwtcykpPDEmJihzLS0sdSo9MiksKGUrPXMrZj49MT9oL3U6aCpNYXRoLnBvdygyLDEtZikpKnU+PTImJihzKyssdS89MikscytmPj1jPyhhPTAscz1jKTpzK2Y+PTE/KGE9KGUqdS0xKSpNYXRoLnBvdygyLGkpLHMrPWYpOihhPWUqTWF0aC5wb3coMixmLTEpKk1hdGgucG93KDIsaSkscz0wKSk7aT49ODt0W3IrcF09MjU1JmEscCs9ZCxhLz0yNTYsaS09OCk7Zm9yKHM9czw8aXxhLGwrPWk7bD4wO3RbcitwXT0yNTUmcyxwKz1kLHMvPTI1NixsLT04KTt0W3IrcC1kXXw9MTI4Knl9fSw3MTc6dD0+e1wiZnVuY3Rpb25cIj09dHlwZW9mIE9iamVjdC5jcmVhdGU/dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7ZSYmKHQuc3VwZXJfPWUsdC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSkpfTp0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZihlKXt0LnN1cGVyXz1lO3ZhciByPWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT1lLnByb3RvdHlwZSx0LnByb3RvdHlwZT1uZXcgcix0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10fX19LDU5NTpmdW5jdGlvbih0KXt0LmV4cG9ydHM9KCgpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIHQ9ezI1NToodCxlKT0+e2UubD1jbGFzc3toZXhTbGljZSh0PTAsZSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbCh0aGlzLnNsaWNlKHQsZSksKHQ9PihcIjAwXCIrdC50b1N0cmluZygxNikpLnNsaWNlKC0yKSkpLmpvaW4oXCJcIil9fX0sNDg6KHQsZSxyKT0+e2NvbnN0IG49cig3NjUpLHtpbnRlcm5hbEJpbmRpbmc6aSxBcnJheTpvLEFycmF5SXNBcnJheTpzLEFycmF5UHJvdG90eXBlRmlsdGVyOmEsQXJyYXlQcm90b3R5cGVGb3JFYWNoOnUsQXJyYXlQcm90b3R5cGVQdXNoOmwsQXJyYXlQcm90b3R5cGVQdXNoQXBwbHk6YyxBcnJheVByb3RvdHlwZVNvcnQ6ZixBcnJheVByb3RvdHlwZVVuc2hpZnQ6aCxCaWdJbnRQcm90b3R5cGVWYWx1ZU9mOnAsQm9vbGVhblByb3RvdHlwZVZhbHVlT2Y6ZCxEYXRlUHJvdG90eXBlR2V0VGltZTp5LERhdGVQcm90b3R5cGVUb0lTT1N0cmluZzpnLERhdGVQcm90b3R5cGVUb1N0cmluZzpiLEVycm9yUHJvdG90eXBlVG9TdHJpbmc6bSxGdW5jdGlvblByb3RvdHlwZUNhbGw6dyxGdW5jdGlvblByb3RvdHlwZVRvU3RyaW5nOl8sSlNPTlN0cmluZ2lmeTpFLE1hcFByb3RvdHlwZUdldFNpemU6dixNYXBQcm90b3R5cGVFbnRyaWVzOlMsTWF0aEZsb29yOkEsTWF0aE1heDpULE1hdGhNaW46SSxNYXRoUm91bmQ6QixNYXRoU3FydDpPLE51bWJlcjp4LE51bWJlcklzTmFOOlIsTnVtYmVyUGFyc2VGbG9hdDpOLE51bWJlclBhcnNlSW50OkwsTnVtYmVyUHJvdG90eXBlVmFsdWVPZjpQLE9iamVjdDpNLE9iamVjdEFzc2lnbjpVLE9iamVjdENyZWF0ZTpqLE9iamVjdERlZmluZVByb3BlcnR5OmssT2JqZWN0R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiQsT2JqZWN0R2V0T3duUHJvcGVydHlOYW1lczpGLE9iamVjdEdldE93blByb3BlcnR5U3ltYm9sczpELE9iamVjdEdldFByb3RvdHlwZU9mOkMsT2JqZWN0SXM6RyxPYmplY3RLZXlzOlcsT2JqZWN0UHJvdG90eXBlSGFzT3duUHJvcGVydHk6eixPYmplY3RQcm90b3R5cGVQcm9wZXJ0eUlzRW51bWVyYWJsZTpILE9iamVjdFNlYWw6WSxPYmplY3RTZXRQcm90b3R5cGVPZjpxLFJlZmxlY3RPd25LZXlzOlYsUmVnRXhwOkssUmVnRXhwUHJvdG90eXBlVGVzdDpYLFJlZ0V4cFByb3RvdHlwZVRvU3RyaW5nOkosU2FmZVN0cmluZ0l0ZXJhdG9yOlosU2FmZU1hcDpRLFNhZmVTZXQ6dHQsU2V0UHJvdG90eXBlR2V0U2l6ZTpldCxTZXRQcm90b3R5cGVWYWx1ZXM6cnQsU3RyaW5nOm50LFN0cmluZ1Byb3RvdHlwZUNoYXJDb2RlQXQ6aXQsU3RyaW5nUHJvdG90eXBlQ29kZVBvaW50QXQ6b3QsU3RyaW5nUHJvdG90eXBlSW5jbHVkZXM6c3QsU3RyaW5nUHJvdG90eXBlTm9ybWFsaXplOmF0LFN0cmluZ1Byb3RvdHlwZVBhZEVuZDp1dCxTdHJpbmdQcm90b3R5cGVQYWRTdGFydDpsdCxTdHJpbmdQcm90b3R5cGVSZXBlYXQ6Y3QsU3RyaW5nUHJvdG90eXBlUmVwbGFjZTpmdCxTdHJpbmdQcm90b3R5cGVTbGljZTpodCxTdHJpbmdQcm90b3R5cGVTcGxpdDpwdCxTdHJpbmdQcm90b3R5cGVUb0xvd2VyQ2FzZTpkdCxTdHJpbmdQcm90b3R5cGVUcmltOnl0LFN0cmluZ1Byb3RvdHlwZVZhbHVlT2Y6Z3QsU3ltYm9sUHJvdG90eXBlVG9TdHJpbmc6YnQsU3ltYm9sUHJvdG90eXBlVmFsdWVPZjptdCxTeW1ib2xJdGVyYXRvcjp3dCxTeW1ib2xUb1N0cmluZ1RhZzpfdCxUeXBlZEFycmF5UHJvdG90eXBlR2V0TGVuZ3RoOkV0LFR5cGVkQXJyYXlQcm90b3R5cGVHZXRTeW1ib2xUb1N0cmluZ1RhZzp2dCxVaW50OEFycmF5OlN0LHVuY3VycnlUaGlzOkF0fT1uLHtnZXRPd25Ob25JbmRleFByb3BlcnRpZXM6VHQsZ2V0UHJvbWlzZURldGFpbHM6SXQsZ2V0UHJveHlEZXRhaWxzOkJ0LGtQZW5kaW5nOk90LGtSZWplY3RlZDp4dCxwcmV2aWV3RW50cmllczpSdCxnZXRDb25zdHJ1Y3Rvck5hbWU6TnQsZ2V0RXh0ZXJuYWxWYWx1ZTpMdCxwcm9wZXJ0eUZpbHRlcjp7QUxMX1BST1BFUlRJRVM6UHQsT05MWV9FTlVNRVJBQkxFOk10fSxQcm94eTpVdH09cig4OTEpLHtjdXN0b21JbnNwZWN0U3ltYm9sOmp0LGlzRXJyb3I6a3Qsam9pbjokdCxyZW1vdmVDb2xvcnM6RnR9PXIoMzM1KSx7Y29kZXM6e0VSUl9JTlZBTElEX0FSR19UWVBFOkR0fSxpc1N0YWNrT3ZlcmZsb3dFcnJvcjpDdH09cigxMDEpLHtpc0FzeW5jRnVuY3Rpb246R3QsaXNHZW5lcmF0b3JGdW5jdGlvbjpXdCxpc0FueUFycmF5QnVmZmVyOnp0LGlzQXJyYXlCdWZmZXI6SHQsaXNBcmd1bWVudHNPYmplY3Q6WXQsaXNCb3hlZFByaW1pdGl2ZTpxdCxpc0RhdGFWaWV3OlZ0LGlzRXh0ZXJuYWw6S3QsaXNNYXA6WHQsaXNNYXBJdGVyYXRvcjpKdCxpc01vZHVsZU5hbWVzcGFjZU9iamVjdDpadCxpc05hdGl2ZUVycm9yOlF0LGlzUHJvbWlzZTp0ZSxpc1NldDplZSxpc1NldEl0ZXJhdG9yOnJlLGlzV2Vha01hcDpuZSxpc1dlYWtTZXQ6aWUsaXNSZWdFeHA6b2UsaXNEYXRlOnNlLGlzVHlwZWRBcnJheTphZSxpc1N0cmluZ09iamVjdDp1ZSxpc051bWJlck9iamVjdDpsZSxpc0Jvb2xlYW5PYmplY3Q6Y2UsaXNCaWdJbnRPYmplY3Q6ZmV9PXIoNjMpLGhlPXIoMTgzKSx7TmF0aXZlTW9kdWxlOnBlfT1yKDk5Mikse3ZhbGlkYXRlT2JqZWN0OmRlfT1yKDM1Nik7bGV0IHllO2NvbnN0IGdlPW5ldyB0dChhKEYoci5nKSwodD0+WCgvXltBLVpdW2EtekEtWjAtOV0rJC8sdCkpKSksYmU9dD0+dm9pZCAwPT09dCYmdm9pZCAwIT09dCxtZT1ZKHtzaG93SGlkZGVuOiExLGRlcHRoOjIsY29sb3JzOiExLGN1c3RvbUluc3BlY3Q6ITAsc2hvd1Byb3h5OiExLG1heEFycmF5TGVuZ3RoOjEwMCxtYXhTdHJpbmdMZW5ndGg6MWU0LGJyZWFrTGVuZ3RoOjgwLGNvbXBhY3Q6Myxzb3J0ZWQ6ITEsZ2V0dGVyczohMX0pLHdlPS9bXFx4MDAtXFx4MWZcXHgyN1xceDVjXFx4N2YtXFx4OWZdLyxfZT0vW1xceDAwLVxceDFmXFx4MjdcXHg1Y1xceDdmLVxceDlmXS9nLEVlPS9bXFx4MDAtXFx4MWZcXHg1Y1xceDdmLVxceDlmXS8sdmU9L1tcXHgwMC1cXHgxZlxceDVjXFx4N2YtXFx4OWZdL2csU2U9L15bYS16QS1aX11bYS16QS1aXzAtOV0qJC8sQWU9L14oMHxbMS05XVswLTldKikkLyxUZT0vXiAgICBhdCAoPzpbXi9cXFxcKF0rIFxcKHwpbm9kZTooLispOlxcZCs6XFxkK1xcKT8kLyxJZT0vXiAgICBhdCAoPzpbXi9cXFxcKF0rIFxcKHwpKC4rKVxcLmpzOlxcZCs6XFxkK1xcKT8kLyxCZT0vWy9cXFxcXW5vZGVfbW9kdWxlc1svXFxcXF0oLis/KSg/PVsvXFxcXF0pL2csT2U9L14oXFxzK1teKF0qPylcXHMqey8seGU9LyhcXC9cXC8uKj9cXG4pfChcXC9cXCooLnxcXG4pKj9cXCpcXC8pL2csUmU9W1wiXFxcXHgwMFwiLFwiXFxcXHgwMVwiLFwiXFxcXHgwMlwiLFwiXFxcXHgwM1wiLFwiXFxcXHgwNFwiLFwiXFxcXHgwNVwiLFwiXFxcXHgwNlwiLFwiXFxcXHgwN1wiLFwiXFxcXGJcIixcIlxcXFx0XCIsXCJcXFxcblwiLFwiXFxcXHgwQlwiLFwiXFxcXGZcIixcIlxcXFxyXCIsXCJcXFxceDBFXCIsXCJcXFxceDBGXCIsXCJcXFxceDEwXCIsXCJcXFxceDExXCIsXCJcXFxceDEyXCIsXCJcXFxceDEzXCIsXCJcXFxceDE0XCIsXCJcXFxceDE1XCIsXCJcXFxceDE2XCIsXCJcXFxceDE3XCIsXCJcXFxceDE4XCIsXCJcXFxceDE5XCIsXCJcXFxceDFBXCIsXCJcXFxceDFCXCIsXCJcXFxceDFDXCIsXCJcXFxceDFEXCIsXCJcXFxceDFFXCIsXCJcXFxceDFGXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlxcXFwnXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlxcXFxcXFxcXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlwiLFwiXCIsXCJcIixcIlxcXFx4N0ZcIixcIlxcXFx4ODBcIixcIlxcXFx4ODFcIixcIlxcXFx4ODJcIixcIlxcXFx4ODNcIixcIlxcXFx4ODRcIixcIlxcXFx4ODVcIixcIlxcXFx4ODZcIixcIlxcXFx4ODdcIixcIlxcXFx4ODhcIixcIlxcXFx4ODlcIixcIlxcXFx4OEFcIixcIlxcXFx4OEJcIixcIlxcXFx4OENcIixcIlxcXFx4OERcIixcIlxcXFx4OEVcIixcIlxcXFx4OEZcIixcIlxcXFx4OTBcIixcIlxcXFx4OTFcIixcIlxcXFx4OTJcIixcIlxcXFx4OTNcIixcIlxcXFx4OTRcIixcIlxcXFx4OTVcIixcIlxcXFx4OTZcIixcIlxcXFx4OTdcIixcIlxcXFx4OThcIixcIlxcXFx4OTlcIixcIlxcXFx4OUFcIixcIlxcXFx4OUJcIixcIlxcXFx4OUNcIixcIlxcXFx4OURcIixcIlxcXFx4OUVcIixcIlxcXFx4OUZcIl0sTmU9bmV3IEsoXCJbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86W2EtekEtWlxcXFxkXSooPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10qKSopP1xcXFx1MDAwNyl8KD86KD86XFxcXGR7MSw0fSg/OjtcXFxcZHswLDR9KSopP1tcXFxcZEEtUFItVFpjZi1udHFyeT0+PH5dKSlcIixcImdcIik7bGV0IExlO2Z1bmN0aW9uIFBlKHQsZSl7Y29uc3Qgcj17YnVkZ2V0Ont9LGluZGVudGF0aW9uTHZsOjAsc2VlbjpbXSxjdXJyZW50RGVwdGg6MCxzdHlsaXplOkNlLHNob3dIaWRkZW46bWUuc2hvd0hpZGRlbixkZXB0aDptZS5kZXB0aCxjb2xvcnM6bWUuY29sb3JzLGN1c3RvbUluc3BlY3Q6bWUuY3VzdG9tSW5zcGVjdCxzaG93UHJveHk6bWUuc2hvd1Byb3h5LG1heEFycmF5TGVuZ3RoOm1lLm1heEFycmF5TGVuZ3RoLG1heFN0cmluZ0xlbmd0aDptZS5tYXhTdHJpbmdMZW5ndGgsYnJlYWtMZW5ndGg6bWUuYnJlYWtMZW5ndGgsY29tcGFjdDptZS5jb21wYWN0LHNvcnRlZDptZS5zb3J0ZWQsZ2V0dGVyczptZS5nZXR0ZXJzfTtpZihhcmd1bWVudHMubGVuZ3RoPjEpaWYoYXJndW1lbnRzLmxlbmd0aD4yJiYodm9pZCAwIT09YXJndW1lbnRzWzJdJiYoci5kZXB0aD1hcmd1bWVudHNbMl0pLGFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdJiYoci5jb2xvcnM9YXJndW1lbnRzWzNdKSksXCJib29sZWFuXCI9PXR5cGVvZiBlKXIuc2hvd0hpZGRlbj1lO2Vsc2UgaWYoZSl7Y29uc3QgdD1XKGUpO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7KytuKXtjb25zdCBpPXRbbl07eihtZSxpKXx8XCJzdHlsaXplXCI9PT1pP3JbaV09ZVtpXTp2b2lkIDA9PT1yLnVzZXJPcHRpb25zJiYoci51c2VyT3B0aW9ucz1lKX19cmV0dXJuIHIuY29sb3JzJiYoci5zdHlsaXplPURlKSxudWxsPT09ci5tYXhBcnJheUxlbmd0aCYmKHIubWF4QXJyYXlMZW5ndGg9MS8wKSxudWxsPT09ci5tYXhTdHJpbmdMZW5ndGgmJihyLm1heFN0cmluZ0xlbmd0aD0xLzApLEtlKHIsdCwwKX1QZS5jdXN0b209anQsayhQZSxcImRlZmF1bHRPcHRpb25zXCIse2dldDooKT0+bWUsc2V0OnQ9PihkZSh0LFwib3B0aW9uc1wiKSxVKG1lLHQpKX0pO2NvbnN0IE1lPTM5LFVlPTQ5O2Z1bmN0aW9uIGplKHQsZSl7ayhQZS5jb2xvcnMsZSx7Z2V0KCl7cmV0dXJuIHRoaXNbdF19LHNldChlKXt0aGlzW3RdPWV9LGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExfSl9ZnVuY3Rpb24ga2UodCxlKXtyZXR1cm4tMT09PWU/YFwiJHt0fVwiYDotMj09PWU/YFxcYCR7dH1cXGBgOmAnJHt0fSdgfVBlLmNvbG9ycz1VKGoobnVsbCkse3Jlc2V0OlswLDBdLGJvbGQ6WzEsMjJdLGRpbTpbMiwyMl0saXRhbGljOlszLDIzXSx1bmRlcmxpbmU6WzQsMjRdLGJsaW5rOls1LDI1XSxpbnZlcnNlOls3LDI3XSxoaWRkZW46WzgsMjhdLHN0cmlrZXRocm91Z2g6WzksMjldLGRvdWJsZXVuZGVybGluZTpbMjEsMjRdLGJsYWNrOlszMCxNZV0scmVkOlszMSxNZV0sZ3JlZW46WzMyLE1lXSx5ZWxsb3c6WzMzLE1lXSxibHVlOlszNCxNZV0sbWFnZW50YTpbMzUsTWVdLGN5YW46WzM2LE1lXSx3aGl0ZTpbMzcsTWVdLGJnQmxhY2s6WzQwLFVlXSxiZ1JlZDpbNDEsVWVdLGJnR3JlZW46WzQyLFVlXSxiZ1llbGxvdzpbNDMsVWVdLGJnQmx1ZTpbNDQsVWVdLGJnTWFnZW50YTpbNDUsVWVdLGJnQ3lhbjpbNDYsVWVdLGJnV2hpdGU6WzQ3LFVlXSxmcmFtZWQ6WzUxLDU0XSxvdmVybGluZWQ6WzUzLDU1XSxncmF5Ols5MCxNZV0scmVkQnJpZ2h0Ols5MSxNZV0sZ3JlZW5CcmlnaHQ6WzkyLE1lXSx5ZWxsb3dCcmlnaHQ6WzkzLE1lXSxibHVlQnJpZ2h0Ols5NCxNZV0sbWFnZW50YUJyaWdodDpbOTUsTWVdLGN5YW5CcmlnaHQ6Wzk2LE1lXSx3aGl0ZUJyaWdodDpbOTcsTWVdLGJnR3JheTpbMTAwLFVlXSxiZ1JlZEJyaWdodDpbMTAxLFVlXSxiZ0dyZWVuQnJpZ2h0OlsxMDIsVWVdLGJnWWVsbG93QnJpZ2h0OlsxMDMsVWVdLGJnQmx1ZUJyaWdodDpbMTA0LFVlXSxiZ01hZ2VudGFCcmlnaHQ6WzEwNSxVZV0sYmdDeWFuQnJpZ2h0OlsxMDYsVWVdLGJnV2hpdGVCcmlnaHQ6WzEwNyxVZV19KSxqZShcImdyYXlcIixcImdyZXlcIiksamUoXCJncmF5XCIsXCJibGFja0JyaWdodFwiKSxqZShcImJnR3JheVwiLFwiYmdHcmV5XCIpLGplKFwiYmdHcmF5XCIsXCJiZ0JsYWNrQnJpZ2h0XCIpLGplKFwiZGltXCIsXCJmYWludFwiKSxqZShcInN0cmlrZXRocm91Z2hcIixcImNyb3NzZWRvdXRcIiksamUoXCJzdHJpa2V0aHJvdWdoXCIsXCJzdHJpa2VUaHJvdWdoXCIpLGplKFwic3RyaWtldGhyb3VnaFwiLFwiY3Jvc3NlZE91dFwiKSxqZShcImhpZGRlblwiLFwiY29uY2VhbFwiKSxqZShcImludmVyc2VcIixcInN3YXBDb2xvcnNcIiksamUoXCJpbnZlcnNlXCIsXCJzd2FwY29sb3JzXCIpLGplKFwiZG91YmxldW5kZXJsaW5lXCIsXCJkb3VibGVVbmRlcmxpbmVcIiksUGUuc3R5bGVzPVUoaihudWxsKSx7c3BlY2lhbDpcImN5YW5cIixudW1iZXI6XCJ5ZWxsb3dcIixiaWdpbnQ6XCJ5ZWxsb3dcIixib29sZWFuOlwieWVsbG93XCIsdW5kZWZpbmVkOlwiZ3JleVwiLG51bGw6XCJib2xkXCIsc3RyaW5nOlwiZ3JlZW5cIixzeW1ib2w6XCJncmVlblwiLGRhdGU6XCJtYWdlbnRhXCIscmVnZXhwOlwicmVkXCIsbW9kdWxlOlwidW5kZXJsaW5lXCJ9KTtjb25zdCAkZT10PT5SZVtpdCh0KV07ZnVuY3Rpb24gRmUodCl7bGV0IGU9d2Uscj1fZSxuPTM5O2lmKHN0KHQsXCInXCIpJiYoc3QodCwnXCInKT9zdCh0LFwiYFwiKXx8c3QodCxcIiR7XCIpfHwobj0tMik6bj0tMSwzOSE9PW4mJihlPUVlLHI9dmUpKSx0Lmxlbmd0aDw1ZTMmJiFYKGUsdCkpcmV0dXJuIGtlKHQsbik7aWYodC5sZW5ndGg+MTAwKXJldHVybiBrZSh0PWZ0KHQsciwkZSksbik7bGV0IGk9XCJcIixvPTA7Y29uc3Qgcz10Lmxlbmd0aDtmb3IobGV0IGU9MDtlPHM7ZSsrKXtjb25zdCByPWl0KHQsZSk7KHI9PT1ufHw5Mj09PXJ8fHI8MzJ8fHI+MTI2JiZyPDE2MCkmJihpKz1vPT09ZT9SZVtyXTpgJHtodCh0LG8sZSl9JHtSZVtyXX1gLG89ZSsxKX1yZXR1cm4gbyE9PXMmJihpKz1odCh0LG8pKSxrZShpLG4pfWZ1bmN0aW9uIERlKHQsZSl7Y29uc3Qgcj1QZS5zdHlsZXNbZV07aWYodm9pZCAwIT09cil7Y29uc3QgZT1QZS5jb2xvcnNbcl07aWYodm9pZCAwIT09ZSlyZXR1cm5gXHUwMDFiWyR7ZVswXX1tJHt0fVx1MDAxYlske2VbMV19bWB9cmV0dXJuIHR9ZnVuY3Rpb24gQ2UodCl7cmV0dXJuIHR9ZnVuY3Rpb24gR2UoKXtyZXR1cm5bXX1mdW5jdGlvbiBXZSh0LGUpe3RyeXtyZXR1cm4gdCBpbnN0YW5jZW9mIGV9Y2F0Y2h7cmV0dXJuITF9fWZ1bmN0aW9uIHplKHQsZSxyLG4pe2xldCBpO2NvbnN0IG89dDtmb3IoO3R8fGJlKHQpOyl7Y29uc3Qgcz0kKHQsXCJjb25zdHJ1Y3RvclwiKTtpZih2b2lkIDAhPT1zJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBzLnZhbHVlJiZcIlwiIT09cy52YWx1ZS5uYW1lJiZXZShvLHMudmFsdWUpKXJldHVybiB2b2lkIDA9PT1ufHxpPT09dCYmZ2UuaGFzKHMudmFsdWUubmFtZSl8fEhlKGUsbyxpfHxvLHIsbikscy52YWx1ZS5uYW1lO3Q9Qyh0KSx2b2lkIDA9PT1pJiYoaT10KX1pZihudWxsPT09aSlyZXR1cm4gbnVsbDtjb25zdCBzPU50KG8pO2lmKHI+ZS5kZXB0aCYmbnVsbCE9PWUuZGVwdGgpcmV0dXJuYCR7c30gPENvbXBsZXggcHJvdG90eXBlPmA7Y29uc3QgYT16ZShpLGUscisxLG4pO3JldHVybiBudWxsPT09YT9gJHtzfSA8JHtQZShpLHsuLi5lLGN1c3RvbUluc3BlY3Q6ITEsZGVwdGg6LTF9KX0+YDpgJHtzfSA8JHthfT5gfWZ1bmN0aW9uIEhlKHQsZSxyLG4saSl7bGV0IG8scyxhPTA7ZG97aWYoMCE9PWF8fGU9PT1yKXtpZihudWxsPT09KHI9QyhyKSkpcmV0dXJuO2NvbnN0IHQ9JChyLFwiY29uc3RydWN0b3JcIik7aWYodm9pZCAwIT09dCYmXCJmdW5jdGlvblwiPT10eXBlb2YgdC52YWx1ZSYmZ2UuaGFzKHQudmFsdWUubmFtZSkpcmV0dXJufTA9PT1hP3M9bmV3IHR0OnUobywodD0+cy5hZGQodCkpKSxvPVYocik7Zm9yKGNvbnN0IHUgb2Ygbyl7aWYoXCJjb25zdHJ1Y3RvclwiPT09dXx8eihlLHUpfHwwIT09YSYmcy5oYXModSkpY29udGludWU7Y29uc3Qgbz0kKHIsdSk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygby52YWx1ZSljb250aW51ZTtjb25zdCBjPWRyKHQscixuLHUsMCxvLGUpO3QuY29sb3JzP2woaSxgXHUwMDFiWzJtJHtjfVx1MDAxYlsyMm1gKTpsKGksYyl9fXdoaWxlKDMhPSsrYSl9ZnVuY3Rpb24gWWUodCxlLHIsbj1cIlwiKXtyZXR1cm4gbnVsbD09PXQ/XCJcIiE9PWUmJnIhPT1lP2BbJHtyfSR7bn06IG51bGwgcHJvdG90eXBlXSBbJHtlfV0gYDpgWyR7cn0ke259OiBudWxsIHByb3RvdHlwZV0gYDpcIlwiIT09ZSYmdCE9PWU/YCR7dH0ke259IFske2V9XSBgOmAke3R9JHtufSBgfWZ1bmN0aW9uIHFlKHQsZSl7bGV0IHI7Y29uc3Qgbj1EKHQpO2lmKGUpcj1GKHQpLDAhPT1uLmxlbmd0aCYmYyhyLG4pO2Vsc2V7dHJ5e3I9Vyh0KX1jYXRjaChlKXtoZShRdChlKSYmXCJSZWZlcmVuY2VFcnJvclwiPT09ZS5uYW1lJiZadCh0KSkscj1GKHQpfTAhPT1uLmxlbmd0aCYmYyhyLGEobiwoZT0+SCh0LGUpKSkpfXJldHVybiByfWZ1bmN0aW9uIFZlKHQsZSxyKXtsZXQgbj1cIlwiO3JldHVybiBudWxsPT09ZSYmKG49TnQodCksbj09PXImJihuPVwiT2JqZWN0XCIpKSxZZShlLHIsbil9ZnVuY3Rpb24gS2UodCxlLHIsaSl7aWYoXCJvYmplY3RcIiE9dHlwZW9mIGUmJlwiZnVuY3Rpb25cIiE9dHlwZW9mIGUmJiFiZShlKSlyZXR1cm4gUWUodC5zdHlsaXplLGUsdCk7aWYobnVsbD09PWUpcmV0dXJuIHQuc3R5bGl6ZShcIm51bGxcIixcIm51bGxcIik7Y29uc3Qgbz1lLGE9QnQoZSwhIXQuc2hvd1Byb3h5KTtpZih2b2lkIDAhPT1hKXtpZih0LnNob3dQcm94eSlyZXR1cm4gZnVuY3Rpb24odCxlLHIpe2lmKHI+dC5kZXB0aCYmbnVsbCE9PXQuZGVwdGgpcmV0dXJuIHQuc3R5bGl6ZShcIlByb3h5IFtBcnJheV1cIixcInNwZWNpYWxcIik7cis9MSx0LmluZGVudGF0aW9uTHZsKz0yO2NvbnN0IG49W0tlKHQsZVswXSxyKSxLZSh0LGVbMV0scildO3JldHVybiB0LmluZGVudGF0aW9uTHZsLT0yLGdyKHQsbixcIlwiLFtcIlByb3h5IFtcIixcIl1cIl0sMixyKX0odCxhLHIpO2U9YX1pZih0LmN1c3RvbUluc3BlY3Qpe2NvbnN0IG49ZVtqdF07aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgbiYmbiE9PVBlJiYoIWUuY29uc3RydWN0b3J8fGUuY29uc3RydWN0b3IucHJvdG90eXBlIT09ZSkpe2NvbnN0IGU9bnVsbD09PXQuZGVwdGg/bnVsbDp0LmRlcHRoLXIsaT13KG4sbyxlLGZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj17c3R5bGl6ZTp0LnN0eWxpemUsc2hvd0hpZGRlbjp0LnNob3dIaWRkZW4sZGVwdGg6dC5kZXB0aCxjb2xvcnM6dC5jb2xvcnMsY3VzdG9tSW5zcGVjdDp0LmN1c3RvbUluc3BlY3Qsc2hvd1Byb3h5OnQuc2hvd1Byb3h5LG1heEFycmF5TGVuZ3RoOnQubWF4QXJyYXlMZW5ndGgsbWF4U3RyaW5nTGVuZ3RoOnQubWF4U3RyaW5nTGVuZ3RoLGJyZWFrTGVuZ3RoOnQuYnJlYWtMZW5ndGgsY29tcGFjdDp0LmNvbXBhY3Qsc29ydGVkOnQuc29ydGVkLGdldHRlcnM6dC5nZXR0ZXJzLC4uLnQudXNlck9wdGlvbnN9O2lmKGUpe3EocixudWxsKTtmb3IoY29uc3QgdCBvZiBXKHIpKVwib2JqZWN0XCIhPXR5cGVvZiByW3RdJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiByW3RdfHxudWxsPT09clt0XXx8ZGVsZXRlIHJbdF07ci5zdHlsaXplPXEoKChlLHIpPT57bGV0IG47dHJ5e249YCR7dC5zdHlsaXplKGUscil9YH1jYXRjaHt9cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIG4/ZTpufSksbnVsbCl9cmV0dXJuIHJ9KHQsdm9pZCAwIT09YXx8IShvIGluc3RhbmNlb2YgTSkpKTtpZihpIT09bylyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgaT9LZSh0LGkscik6aS5yZXBsYWNlKC9cXG4vZyxgXFxuJHtcIiBcIi5yZXBlYXQodC5pbmRlbnRhdGlvbkx2bCl9YCl9fWlmKHQuc2Vlbi5pbmNsdWRlcyhlKSl7bGV0IHI9MTtyZXR1cm4gdm9pZCAwPT09dC5jaXJjdWxhcj8odC5jaXJjdWxhcj1uZXcgUSx0LmNpcmN1bGFyLnNldChlLHIpKToocj10LmNpcmN1bGFyLmdldChlKSx2b2lkIDA9PT1yJiYocj10LmNpcmN1bGFyLnNpemUrMSx0LmNpcmN1bGFyLnNldChlLHIpKSksdC5zdHlsaXplKGBbQ2lyY3VsYXIgKiR7cn1dYCxcInNwZWNpYWxcIil9cmV0dXJuIGZ1bmN0aW9uKHQsZSxyLGkpe2xldCBvLGE7dC5zaG93SGlkZGVuJiYocjw9dC5kZXB0aHx8bnVsbD09PXQuZGVwdGgpJiYoYT1bXSk7Y29uc3QgdT16ZShlLHQscixhKTt2b2lkIDAhPT1hJiYwPT09YS5sZW5ndGgmJihhPXZvaWQgMCk7bGV0IGw9ZVtfdF07KFwic3RyaW5nXCIhPXR5cGVvZiBsfHxcIlwiIT09bCYmKHQuc2hvd0hpZGRlbj96OkgpKGUsX3QpKSYmKGw9XCJcIik7bGV0IGMsZj1cIlwiLHc9R2UsRT0hMCxBPTA7Y29uc3QgVD10LnNob3dIaWRkZW4/UHQ6TXQ7bGV0IEksQj0wO2lmKGVbd3RdfHxudWxsPT09dSlpZihFPSExLHMoZSkpe2NvbnN0IHQ9XCJBcnJheVwiIT09dXx8XCJcIiE9PWw/WWUodSxsLFwiQXJyYXlcIixgKCR7ZS5sZW5ndGh9KWApOlwiXCI7aWYobz1UdChlLFQpLGM9W2Ake3R9W2AsXCJdXCJdLDA9PT1lLmxlbmd0aCYmMD09PW8ubGVuZ3RoJiZ2b2lkIDA9PT1hKXJldHVybmAke2NbMF19XWA7Qj0yLHc9bnJ9ZWxzZSBpZihlZShlKSl7Y29uc3Qgcj1ldChlKSxuPVllKHUsbCxcIlNldFwiLGAoJHtyfSlgKTtpZihvPXFlKGUsdC5zaG93SGlkZGVuKSx3PW51bGwhPT11P29yLmJpbmQobnVsbCxlKTpvci5iaW5kKG51bGwscnQoZSkpLDA9PT1yJiYwPT09by5sZW5ndGgmJnZvaWQgMD09PWEpcmV0dXJuYCR7bn17fWA7Yz1bYCR7bn17YCxcIn1cIl19ZWxzZSBpZihYdChlKSl7Y29uc3Qgcj12KGUpLG49WWUodSxsLFwiTWFwXCIsYCgke3J9KWApO2lmKG89cWUoZSx0LnNob3dIaWRkZW4pLHc9bnVsbCE9PXU/c3IuYmluZChudWxsLGUpOnNyLmJpbmQobnVsbCxTKGUpKSwwPT09ciYmMD09PW8ubGVuZ3RoJiZ2b2lkIDA9PT1hKXJldHVybmAke259e31gO2M9W2Ake259e2AsXCJ9XCJdfWVsc2UgaWYoYWUoZSkpe289VHQoZSxUKTtsZXQgcj1lLGk9XCJcIjtudWxsPT09dSYmKGk9dnQoZSkscj1uZXcgbltpXShlKSk7Y29uc3Qgcz1FdChlKTtpZihjPVtgJHtZZSh1LGwsaSxgKCR7c30pYCl9W2AsXCJdXCJdLDA9PT1lLmxlbmd0aCYmMD09PW8ubGVuZ3RoJiYhdC5zaG93SGlkZGVuKXJldHVybmAke2NbMF19XWA7dz1pci5iaW5kKG51bGwscixzKSxCPTJ9ZWxzZSBKdChlKT8obz1xZShlLHQuc2hvd0hpZGRlbiksYz1YZShcIk1hcFwiLGwpLHc9aHIuYmluZChudWxsLGMpKTpyZShlKT8obz1xZShlLHQuc2hvd0hpZGRlbiksYz1YZShcIlNldFwiLGwpLHc9aHIuYmluZChudWxsLGMpKTpFPSEwO2lmKEUpaWYobz1xZShlLHQuc2hvd0hpZGRlbiksYz1bXCJ7XCIsXCJ9XCJdLFwiT2JqZWN0XCI9PT11KXtpZihZdChlKT9jWzBdPVwiW0FyZ3VtZW50c10ge1wiOlwiXCIhPT1sJiYoY1swXT1gJHtZZSh1LGwsXCJPYmplY3RcIil9e2ApLDA9PT1vLmxlbmd0aCYmdm9pZCAwPT09YSlyZXR1cm5gJHtjWzBdfX1gfWVsc2UgaWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSl7aWYoZj1mdW5jdGlvbih0LGUscil7Y29uc3Qgbj1fKHQpO2lmKFwiY2xhc3NcIj09PW4uc2xpY2UoMCw1KSYmbi5lbmRzV2l0aChcIn1cIikpe2NvbnN0IGk9bi5zbGljZSg1LC0xKSxvPWkuaW5kZXhPZihcIntcIik7aWYoLTEhPT1vJiYoIWkuc2xpY2UoMCxvKS5pbmNsdWRlcyhcIihcIil8fE9lLnRlc3QoaS5yZXBsYWNlKHhlKSkpKXJldHVybiBmdW5jdGlvbih0LGUscil7bGV0IG49YGNsYXNzICR7eih0LFwibmFtZVwiKSYmdC5uYW1lfHxcIihhbm9ueW1vdXMpXCJ9YDtpZihcIkZ1bmN0aW9uXCIhPT1lJiZudWxsIT09ZSYmKG4rPWAgWyR7ZX1dYCksXCJcIiE9PXImJmUhPT1yJiYobis9YCBbJHtyfV1gKSxudWxsIT09ZSl7Y29uc3QgZT1DKHQpLm5hbWU7ZSYmKG4rPWAgZXh0ZW5kcyAke2V9YCl9ZWxzZSBuKz1cIiBleHRlbmRzIFtudWxsIHByb3RvdHlwZV1cIjtyZXR1cm5gWyR7bn1dYH0odCxlLHIpfWxldCBpPVwiRnVuY3Rpb25cIjtXdCh0KSYmKGk9YEdlbmVyYXRvciR7aX1gKSxHdCh0KSYmKGk9YEFzeW5jJHtpfWApO2xldCBvPWBbJHtpfWA7cmV0dXJuIG51bGw9PT1lJiYobys9XCIgKG51bGwgcHJvdG90eXBlKVwiKSxcIlwiPT09dC5uYW1lP28rPVwiIChhbm9ueW1vdXMpXCI6bys9YDogJHt0Lm5hbWV9YCxvKz1cIl1cIixlIT09aSYmbnVsbCE9PWUmJihvKz1gICR7ZX1gKSxcIlwiIT09ciYmZSE9PXImJihvKz1gIFske3J9XWApLG99KGUsdSxsKSwwPT09by5sZW5ndGgmJnZvaWQgMD09PWEpcmV0dXJuIHQuc3R5bGl6ZShmLFwic3BlY2lhbFwiKX1lbHNlIGlmKG9lKGUpKXtmPUoobnVsbCE9PXU/ZTpuZXcgSyhlKSk7Y29uc3Qgbj1ZZSh1LGwsXCJSZWdFeHBcIik7aWYoXCJSZWdFeHAgXCIhPT1uJiYoZj1gJHtufSR7Zn1gKSwwPT09by5sZW5ndGgmJnZvaWQgMD09PWF8fHI+dC5kZXB0aCYmbnVsbCE9PXQuZGVwdGgpcmV0dXJuIHQuc3R5bGl6ZShmLFwicmVnZXhwXCIpfWVsc2UgaWYoc2UoZSkpe2Y9Uih5KGUpKT9iKGUpOmcoZSk7Y29uc3Qgcj1ZZSh1LGwsXCJEYXRlXCIpO2lmKFwiRGF0ZSBcIiE9PXImJihmPWAke3J9JHtmfWApLDA9PT1vLmxlbmd0aCYmdm9pZCAwPT09YSlyZXR1cm4gdC5zdHlsaXplKGYsXCJkYXRlXCIpfWVsc2UgaWYoa3QoZSkpe2lmKGY9ZnVuY3Rpb24odCxlLHIsbixpKXtjb25zdCBvPW51bGwhPXQubmFtZT9udCh0Lm5hbWUpOlwiRXJyb3JcIjtsZXQgcz1vLmxlbmd0aCxhPXQuc3RhY2s/bnQodC5zdGFjayk6bSh0KTtpZighbi5zaG93SGlkZGVuJiYwIT09aS5sZW5ndGgpZm9yKGNvbnN0IGUgb2ZbXCJuYW1lXCIsXCJtZXNzYWdlXCIsXCJzdGFja1wiXSl7Y29uc3Qgcj1pLmluZGV4T2YoZSk7LTEhPT1yJiZhLmluY2x1ZGVzKHRbZV0pJiZpLnNwbGljZShyLDEpfWlmKG51bGw9PT1lfHxvLmVuZHNXaXRoKFwiRXJyb3JcIikmJmEuc3RhcnRzV2l0aChvKSYmKGEubGVuZ3RoPT09c3x8XCI6XCI9PT1hW3NdfHxcIlxcblwiPT09YVtzXSkpe2xldCB0PVwiRXJyb3JcIjtpZihudWxsPT09ZSl7Y29uc3QgZT1hLm1hdGNoKC9eKFtBLVpdW2Etel8gQS1aMC05W1xcXSgpLV0rKSg/Ojp8XFxuIHs0fWF0KS8pfHxhLm1hdGNoKC9eKFthLXpfQS1aMC05LV0qRXJyb3IpJC8pO3Q9ZSYmZVsxXXx8XCJcIixzPXQubGVuZ3RoLHQ9dHx8XCJFcnJvclwifWNvbnN0IG49WWUoZSxyLHQpLnNsaWNlKDAsLTEpO28hPT1uJiYoYT1uLmluY2x1ZGVzKG8pPzA9PT1zP2Ake259OiAke2F9YDpgJHtufSR7YS5zbGljZShzKX1gOmAke259IFske299XSR7YS5zbGljZShzKX1gKX1sZXQgdT10Lm1lc3NhZ2UmJmEuaW5kZXhPZih0Lm1lc3NhZ2UpfHwtMTstMSE9PXUmJih1Kz10Lm1lc3NhZ2UubGVuZ3RoKTtjb25zdCBsPWEuaW5kZXhPZihcIlxcbiAgICBhdFwiLHUpO2lmKC0xPT09bClhPWBbJHthfV1gO2Vsc2UgaWYobi5jb2xvcnMpe2xldCB0PWEuc2xpY2UoMCxsKTtjb25zdCBlPWEuc2xpY2UobCsxKS5zcGxpdChcIlxcblwiKTtmb3IoY29uc3QgciBvZiBlKXtjb25zdCBlPXIubWF0Y2goVGUpfHxyLm1hdGNoKEllKTtpZihudWxsIT09ZSYmcGUuZXhpc3RzKGVbMV0pKXQrPWBcXG4ke24uc3R5bGl6ZShyLFwidW5kZWZpbmVkXCIpfWA7ZWxzZXtsZXQgZTt0Kz1cIlxcblwiO2xldCBpPTA7Zm9yKDtlPUJlLmV4ZWMocik7KXQrPXIuc2xpY2UoaSxlLmluZGV4KzE0KSx0Kz1uLnN0eWxpemUoZVsxXSxcIm1vZHVsZVwiKSxpPWUuaW5kZXgrZVswXS5sZW5ndGg7dCs9MD09PWk/cjpyLnNsaWNlKGkpfX1hPXR9aWYoMCE9PW4uaW5kZW50YXRpb25Mdmwpe2NvbnN0IHQ9XCIgXCIucmVwZWF0KG4uaW5kZW50YXRpb25MdmwpO2E9YS5yZXBsYWNlKC9cXG4vZyxgXFxuJHt0fWApfXJldHVybiBhfShlLHUsbCx0LG8pLDA9PT1vLmxlbmd0aCYmdm9pZCAwPT09YSlyZXR1cm4gZn1lbHNlIGlmKHp0KGUpKXtjb25zdCByPVllKHUsbCxIdChlKT9cIkFycmF5QnVmZmVyXCI6XCJTaGFyZWRBcnJheUJ1ZmZlclwiKTtpZih2b2lkIDA9PT1pKXc9cnI7ZWxzZSBpZigwPT09by5sZW5ndGgmJnZvaWQgMD09PWEpcmV0dXJuIHIrYHsgYnl0ZUxlbmd0aDogJHtKZSh0LnN0eWxpemUsZS5ieXRlTGVuZ3RoKX0gfWA7Y1swXT1gJHtyfXtgLGgobyxcImJ5dGVMZW5ndGhcIil9ZWxzZSBpZihWdChlKSljWzBdPWAke1llKHUsbCxcIkRhdGFWaWV3XCIpfXtgLGgobyxcImJ5dGVMZW5ndGhcIixcImJ5dGVPZmZzZXRcIixcImJ1ZmZlclwiKTtlbHNlIGlmKHRlKGUpKWNbMF09YCR7WWUodSxsLFwiUHJvbWlzZVwiKX17YCx3PXByO2Vsc2UgaWYoaWUoZSkpY1swXT1gJHtZZSh1LGwsXCJXZWFrU2V0XCIpfXtgLHc9dC5zaG93SGlkZGVuP2NyOmxyO2Vsc2UgaWYobmUoZSkpY1swXT1gJHtZZSh1LGwsXCJXZWFrTWFwXCIpfXtgLHc9dC5zaG93SGlkZGVuP2ZyOmxyO2Vsc2UgaWYoWnQoZSkpY1swXT1gJHtZZSh1LGwsXCJNb2R1bGVcIil9e2Asdz10ci5iaW5kKG51bGwsbyk7ZWxzZSBpZihxdChlKSl7aWYoZj1mdW5jdGlvbih0LGUscixuLGkpe2xldCBvLHM7bGUodCk/KG89UCxzPVwiTnVtYmVyXCIpOnVlKHQpPyhvPWd0LHM9XCJTdHJpbmdcIixyLnNwbGljZSgwLHQubGVuZ3RoKSk6Y2UodCk/KG89ZCxzPVwiQm9vbGVhblwiKTpmZSh0KT8obz1wLHM9XCJCaWdJbnRcIik6KG89bXQscz1cIlN5bWJvbFwiKTtsZXQgYT1gWyR7c31gO3JldHVybiBzIT09biYmKGErPW51bGw9PT1uP1wiIChudWxsIHByb3RvdHlwZSlcIjpgICgke259KWApLGErPWA6ICR7UWUoQ2Usbyh0KSxlKX1dYCxcIlwiIT09aSYmaSE9PW4mJihhKz1gIFske2l9XWApLDAhPT1yLmxlbmd0aHx8ZS5zdHlsaXplPT09Q2U/YTplLnN0eWxpemUoYSxkdChzKSl9KGUsdCxvLHUsbCksMD09PW8ubGVuZ3RoJiZ2b2lkIDA9PT1hKXJldHVybiBmfWVsc2V7aWYoMD09PW8ubGVuZ3RoJiZ2b2lkIDA9PT1hKXtpZihLdChlKSl7Y29uc3Qgcj1MdChlKS50b1N0cmluZygxNik7cmV0dXJuIHQuc3R5bGl6ZShgW0V4dGVybmFsOiAke3J9XWAsXCJzcGVjaWFsXCIpfXJldHVybmAke1ZlKGUsdSxsKX17fWB9Y1swXT1gJHtWZShlLHUsbCl9e2B9aWYocj50LmRlcHRoJiZudWxsIT09dC5kZXB0aCl7bGV0IHI9VmUoZSx1LGwpLnNsaWNlKDAsLTEpO3JldHVybiBudWxsIT09dSYmKHI9YFske3J9XWApLHQuc3R5bGl6ZShyLFwic3BlY2lhbFwiKX1yKz0xLHQuc2Vlbi5wdXNoKGUpLHQuY3VycmVudERlcHRoPXI7Y29uc3QgTz10LmluZGVudGF0aW9uTHZsO3RyeXtmb3IoST13KHQsZSxyKSxBPTA7QTxvLmxlbmd0aDtBKyspSS5wdXNoKGRyKHQsZSxyLG9bQV0sQikpO3ZvaWQgMCE9PWEmJkkucHVzaCguLi5hKX1jYXRjaChyKXtyZXR1cm4gZnVuY3Rpb24odCxlLHIsbil7aWYoQ3QoZSkpcmV0dXJuIHQuc2Vlbi5wb3AoKSx0LmluZGVudGF0aW9uTHZsPW4sdC5zdHlsaXplKGBbJHtyfTogSW5zcGVjdGlvbiBpbnRlcnJ1cHRlZCBwcmVtYXR1cmVseS4gTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuXWAsXCJzcGVjaWFsXCIpO2hlLmZhaWwoZS5zdGFjayl9KHQscixWZShlLHUsbCkuc2xpY2UoMCwtMSksTyl9aWYodm9pZCAwIT09dC5jaXJjdWxhcil7Y29uc3Qgcj10LmNpcmN1bGFyLmdldChlKTtpZih2b2lkIDAhPT1yKXtjb25zdCBlPXQuc3R5bGl6ZShgPHJlZiAqJHtyfT5gLFwic3BlY2lhbFwiKTshMCE9PXQuY29tcGFjdD9mPVwiXCI9PT1mP2U6YCR7ZX0gJHtmfWA6Y1swXT1gJHtlfSAke2NbMF19YH19aWYodC5zZWVuLnBvcCgpLHQuc29ydGVkKXtjb25zdCBlPSEwPT09dC5zb3J0ZWQ/dm9pZCAwOnQuc29ydGVkO2lmKDA9PT1CKUk9SS5zb3J0KGUpO2Vsc2UgaWYoby5sZW5ndGg+MSl7Y29uc3QgdD1JLnNsaWNlKEkubGVuZ3RoLW8ubGVuZ3RoKS5zb3J0KGUpO0kuc3BsaWNlKEkubGVuZ3RoLW8ubGVuZ3RoLG8ubGVuZ3RoLC4uLnQpfX1jb25zdCB4PWdyKHQsSSxmLGMsQixyLGUpLE49KHQuYnVkZ2V0W3QuaW5kZW50YXRpb25MdmxdfHwwKSt4Lmxlbmd0aDtyZXR1cm4gdC5idWRnZXRbdC5pbmRlbnRhdGlvbkx2bF09TixOPjIqKjI3JiYodC5kZXB0aD0tMSkseH0odCxlLHIsaSl9ZnVuY3Rpb24gWGUodCxlKXtyZXR1cm4gZSE9PWAke3R9IEl0ZXJhdG9yYCYmKFwiXCIhPT1lJiYoZSs9XCJdIFtcIiksZSs9YCR7dH0gSXRlcmF0b3JgKSxbYFske2V9XSB7YCxcIn1cIl19ZnVuY3Rpb24gSmUodCxlKXtyZXR1cm4gdChHKGUsLTApP1wiLTBcIjpgJHtlfWAsXCJudW1iZXJcIil9ZnVuY3Rpb24gWmUodCxlKXtyZXR1cm4gdChgJHtlfW5gLFwiYmlnaW50XCIpfWZ1bmN0aW9uIFFlKHQsZSxyKXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSl7bGV0IG49XCJcIjtpZihlLmxlbmd0aD5yLm1heFN0cmluZ0xlbmd0aCl7Y29uc3QgdD1lLmxlbmd0aC1yLm1heFN0cmluZ0xlbmd0aDtlPWUuc2xpY2UoMCxyLm1heFN0cmluZ0xlbmd0aCksbj1gLi4uICR7dH0gbW9yZSBjaGFyYWN0ZXIke3Q+MT9cInNcIjpcIlwifWB9cmV0dXJuITAhPT1yLmNvbXBhY3QmJmUubGVuZ3RoPjE2JiZlLmxlbmd0aD5yLmJyZWFrTGVuZ3RoLXIuaW5kZW50YXRpb25MdmwtND9lLnNwbGl0KC9cXG4vKS5tYXAoKChlLHIsbik9PnQoRmUoZSsocj09PW4ubGVuZ3RoLTE/XCJcIjpcIlxcblwiKSksXCJzdHJpbmdcIikpKS5qb2luKGAgK1xcbiR7XCIgXCIucmVwZWF0KHIuaW5kZW50YXRpb25MdmwrMil9YCkrbjp0KEZlKGUpLFwic3RyaW5nXCIpK259cmV0dXJuXCJudW1iZXJcIj09dHlwZW9mIGU/SmUodCxlKTpcImJpZ2ludFwiPT10eXBlb2YgZT9aZSh0LGUpOlwiYm9vbGVhblwiPT10eXBlb2YgZT90KGAke2V9YCxcImJvb2xlYW5cIik6dm9pZCAwPT09ZT90KFwidW5kZWZpbmVkXCIsXCJ1bmRlZmluZWRcIik6dChidChlKSxcInN5bWJvbFwiKX1mdW5jdGlvbiB0cih0LGUscixuKXtjb25zdCBpPW5ldyBvKHQubGVuZ3RoKTtmb3IobGV0IG89MDtvPHQubGVuZ3RoO28rKyl0cnl7aVtvXT1kcihlLHIsbix0W29dLDApfWNhdGNoKHIpe2lmKCFRdChyKXx8XCJSZWZlcmVuY2VFcnJvclwiIT09ci5uYW1lKXRocm93IHI7Y29uc3Qgcz17W3Rbb11dOlwiXCJ9O2lbb109ZHIoZSxzLG4sdFtvXSwwKTtjb25zdCBhPWlbb10ubGFzdEluZGV4T2YoXCIgXCIpO2lbb109aVtvXS5zbGljZSgwLGErMSkrZS5zdHlsaXplKFwiPHVuaW5pdGlhbGl6ZWQ+XCIsXCJzcGVjaWFsXCIpfXJldHVybiB0Lmxlbmd0aD0wLGl9ZnVuY3Rpb24gZXIodCxlLHIsbixpLG8pe2NvbnN0IHM9VyhlKTtsZXQgYT1vO2Zvcig7bzxzLmxlbmd0aCYmaS5sZW5ndGg8bjtvKyspe2NvbnN0IHU9c1tvXSxsPSt1O2lmKGw+MioqMzItMilicmVhaztpZihgJHthfWAhPT11KXtpZighQWUudGVzdCh1KSlicmVhaztjb25zdCBlPWwtYSxyPWA8JHtlfSBlbXB0eSBpdGVtJHtlPjE/XCJzXCI6XCJcIn0+YDtpZihpLnB1c2godC5zdHlsaXplKHIsXCJ1bmRlZmluZWRcIikpLGE9bCxpLmxlbmd0aD09PW4pYnJlYWt9aS5wdXNoKGRyKHQsZSxyLHUsMSkpLGErK31jb25zdCB1PWUubGVuZ3RoLWE7aWYoaS5sZW5ndGghPT1uKXtpZih1PjApe2NvbnN0IGU9YDwke3V9IGVtcHR5IGl0ZW0ke3U+MT9cInNcIjpcIlwifT5gO2kucHVzaCh0LnN0eWxpemUoZSxcInVuZGVmaW5lZFwiKSl9fWVsc2UgdT4wJiZpLnB1c2goYC4uLiAke3V9IG1vcmUgaXRlbSR7dT4xP1wic1wiOlwiXCJ9YCk7cmV0dXJuIGl9ZnVuY3Rpb24gcnIodCxlKXtsZXQgbjt0cnl7bj1uZXcgU3QoZSl9Y2F0Y2h7cmV0dXJuW3Quc3R5bGl6ZShcIihkZXRhY2hlZClcIixcInNwZWNpYWxcIildfXZvaWQgMD09PXllJiYoeWU9QXQocigyNTUpLmwucHJvdG90eXBlLmhleFNsaWNlKSk7bGV0IGk9eXQoZnQoeWUobiwwLEkodC5tYXhBcnJheUxlbmd0aCxuLmxlbmd0aCkpLC8oLnsyfSkvZyxcIiQxIFwiKSk7Y29uc3Qgbz1uLmxlbmd0aC10Lm1heEFycmF5TGVuZ3RoO3JldHVybiBvPjAmJihpKz1gIC4uLiAke299IG1vcmUgYnl0ZSR7bz4xP1wic1wiOlwiXCJ9YCksW2Ake3Quc3R5bGl6ZShcIltVaW50OENvbnRlbnRzXVwiLFwic3BlY2lhbFwiKX06IDwke2l9PmBdfWZ1bmN0aW9uIG5yKHQsZSxyKXtjb25zdCBuPWUubGVuZ3RoLGk9SShUKDAsdC5tYXhBcnJheUxlbmd0aCksbiksbz1uLWkscz1bXTtmb3IobGV0IG49MDtuPGk7bisrKXtpZigheihlLG4pKXJldHVybiBlcih0LGUscixpLHMsbik7cy5wdXNoKGRyKHQsZSxyLG4sMSkpfXJldHVybiBvPjAmJnMucHVzaChgLi4uICR7b30gbW9yZSBpdGVtJHtvPjE/XCJzXCI6XCJcIn1gKSxzfWZ1bmN0aW9uIGlyKHQsZSxyLG4saSl7Y29uc3Qgcz1JKFQoMCxyLm1heEFycmF5TGVuZ3RoKSxlKSxhPXQubGVuZ3RoLXMsdT1uZXcgbyhzKSxjPXQubGVuZ3RoPjAmJlwibnVtYmVyXCI9PXR5cGVvZiB0WzBdP0plOlplO2ZvcihsZXQgZT0wO2U8czsrK2UpdVtlXT1jKHIuc3R5bGl6ZSx0W2VdKTtpZihhPjAmJih1W3NdPWAuLi4gJHthfSBtb3JlIGl0ZW0ke2E+MT9cInNcIjpcIlwifWApLHIuc2hvd0hpZGRlbil7ci5pbmRlbnRhdGlvbkx2bCs9Mjtmb3IoY29uc3QgZSBvZltcIkJZVEVTX1BFUl9FTEVNRU5UXCIsXCJsZW5ndGhcIixcImJ5dGVMZW5ndGhcIixcImJ5dGVPZmZzZXRcIixcImJ1ZmZlclwiXSl7Y29uc3Qgbj1LZShyLHRbZV0saSwhMCk7bCh1LGBbJHtlfV06ICR7bn1gKX1yLmluZGVudGF0aW9uTHZsLT0yfXJldHVybiB1fWZ1bmN0aW9uIG9yKHQsZSxyLG4pe2NvbnN0IGk9W107ZS5pbmRlbnRhdGlvbkx2bCs9Mjtmb3IoY29uc3QgciBvZiB0KWwoaSxLZShlLHIsbikpO3JldHVybiBlLmluZGVudGF0aW9uTHZsLT0yLGl9ZnVuY3Rpb24gc3IodCxlLHIsbil7Y29uc3QgaT1bXTtlLmluZGVudGF0aW9uTHZsKz0yO2Zvcihjb25zdHswOnIsMTpvfW9mIHQpaS5wdXNoKGAke0tlKGUscixuKX0gPT4gYCtLZShlLG8sbikpO3JldHVybiBlLmluZGVudGF0aW9uTHZsLT0yLGl9ZnVuY3Rpb24gYXIodCxlLHIsbil7Y29uc3QgaT1UKHQubWF4QXJyYXlMZW5ndGgsMCkscz1JKGksci5sZW5ndGgpLGE9bmV3IG8ocyk7dC5pbmRlbnRhdGlvbkx2bCs9Mjtmb3IobGV0IG49MDtuPHM7bisrKWFbbl09S2UodCxyW25dLGUpO3QuaW5kZW50YXRpb25MdmwtPTIsMCE9PW58fHQuc29ydGVkfHxmKGEpO2NvbnN0IHU9ci5sZW5ndGgtcztyZXR1cm4gdT4wJiZsKGEsYC4uLiAke3V9IG1vcmUgaXRlbSR7dT4xP1wic1wiOlwiXCJ9YCksYX1mdW5jdGlvbiB1cih0LGUscixuKXtjb25zdCBpPVQodC5tYXhBcnJheUxlbmd0aCwwKSxzPXIubGVuZ3RoLzIsYT1zLWksdT1JKGkscyk7bGV0IGw9bmV3IG8odSksYz0wO2lmKHQuaW5kZW50YXRpb25MdmwrPTIsMD09PW4pe2Zvcig7Yzx1O2MrKyl7Y29uc3Qgbj0yKmM7bFtjXT1gJHtLZSh0LHJbbl0sZSl9ID0+ICR7S2UodCxyW24rMV0sZSl9YH10LnNvcnRlZHx8KGw9bC5zb3J0KCkpfWVsc2UgZm9yKDtjPHU7YysrKXtjb25zdCBuPTIqYyxpPVtLZSh0LHJbbl0sZSksS2UodCxyW24rMV0sZSldO2xbY109Z3IodCxpLFwiXCIsW1wiW1wiLFwiXVwiXSwyLGUpfXJldHVybiB0LmluZGVudGF0aW9uTHZsLT0yLGE+MCYmbC5wdXNoKGAuLi4gJHthfSBtb3JlIGl0ZW0ke2E+MT9cInNcIjpcIlwifWApLGx9ZnVuY3Rpb24gbHIodCl7cmV0dXJuW3Quc3R5bGl6ZShcIjxpdGVtcyB1bmtub3duPlwiLFwic3BlY2lhbFwiKV19ZnVuY3Rpb24gY3IodCxlLHIpe3JldHVybiBhcih0LHIsUnQoZSksMCl9ZnVuY3Rpb24gZnIodCxlLHIpe3JldHVybiB1cih0LHIsUnQoZSksMCl9ZnVuY3Rpb24gaHIodCxlLHIsbil7Y29uc3R7MDppLDE6b309UnQociwhMCk7cmV0dXJuIG8/KHRbMF09dFswXS5yZXBsYWNlKC8gSXRlcmF0b3JdIHskLyxcIiBFbnRyaWVzXSB7XCIpLHVyKGUsbixpLDIpKTphcihlLG4saSwxKX1mdW5jdGlvbiBwcih0LGUscil7bGV0IG47Y29uc3R7MDppLDE6b309SXQoZSk7aWYoaT09PU90KW49W3Quc3R5bGl6ZShcIjxwZW5kaW5nPlwiLFwic3BlY2lhbFwiKV07ZWxzZXt0LmluZGVudGF0aW9uTHZsKz0yO2NvbnN0IGU9S2UodCxvLHIpO3QuaW5kZW50YXRpb25MdmwtPTIsbj1baT09PXh0P2Ake3Quc3R5bGl6ZShcIjxyZWplY3RlZD5cIixcInNwZWNpYWxcIil9ICR7ZX1gOmVdfXJldHVybiBufWZ1bmN0aW9uIGRyKHQsZSxyLG4saSxvLHM9ZSl7bGV0IGEsdSxsPVwiIFwiO2lmKHZvaWQgMCE9PShvPW98fCQoZSxuKXx8e3ZhbHVlOmVbbl0sZW51bWVyYWJsZTohMH0pLnZhbHVlKXtjb25zdCBlPSEwIT09dC5jb21wYWN0fHwwIT09aT8yOjM7dC5pbmRlbnRhdGlvbkx2bCs9ZSx1PUtlKHQsby52YWx1ZSxyKSwzPT09ZSYmdC5icmVha0xlbmd0aDxMZSh1LHQuY29sb3JzKSYmKGw9YFxcbiR7XCIgXCIucmVwZWF0KHQuaW5kZW50YXRpb25MdmwpfWApLHQuaW5kZW50YXRpb25MdmwtPWV9ZWxzZSBpZih2b2lkIDAhPT1vLmdldCl7Y29uc3QgZT12b2lkIDAhPT1vLnNldD9cIkdldHRlci9TZXR0ZXJcIjpcIkdldHRlclwiLG49dC5zdHlsaXplLGk9XCJzcGVjaWFsXCI7aWYodC5nZXR0ZXJzJiYoITA9PT10LmdldHRlcnN8fFwiZ2V0XCI9PT10LmdldHRlcnMmJnZvaWQgMD09PW8uc2V0fHxcInNldFwiPT09dC5nZXR0ZXJzJiZ2b2lkIDAhPT1vLnNldCkpdHJ5e2NvbnN0IGE9dyhvLmdldCxzKTtpZih0LmluZGVudGF0aW9uTHZsKz0yLG51bGw9PT1hKXU9YCR7bihgWyR7ZX06YCxpKX0gJHtuKFwibnVsbFwiLFwibnVsbFwiKX0ke24oXCJdXCIsaSl9YDtlbHNlIGlmKFwib2JqZWN0XCI9PXR5cGVvZiBhKXU9YCR7bihgWyR7ZX1dYCxpKX0gJHtLZSh0LGEscil9YDtlbHNle2NvbnN0IHI9UWUobixhLHQpO3U9YCR7bihgWyR7ZX06YCxpKX0gJHtyfSR7bihcIl1cIixpKX1gfXQuaW5kZW50YXRpb25MdmwtPTJ9Y2F0Y2godCl7Y29uc3Qgcj1gPEluc3BlY3Rpb24gdGhyZXcgKCR7dC5tZXNzYWdlfSk+YDt1PWAke24oYFske2V9OmAsaSl9ICR7cn0ke24oXCJdXCIsaSl9YH1lbHNlIHU9dC5zdHlsaXplKGBbJHtlfV1gLGkpfWVsc2UgdT12b2lkIDAhPT1vLnNldD90LnN0eWxpemUoXCJbU2V0dGVyXVwiLFwic3BlY2lhbFwiKTp0LnN0eWxpemUoXCJ1bmRlZmluZWRcIixcInVuZGVmaW5lZFwiKTtpZigxPT09aSlyZXR1cm4gdTtpZihcInN5bWJvbFwiPT10eXBlb2Ygbil7Y29uc3QgZT1mdChidChuKSxfZSwkZSk7YT1gWyR7dC5zdHlsaXplKGUsXCJzeW1ib2xcIil9XWB9ZWxzZSBhPVwiX19wcm90b19fXCI9PT1uP1wiWydfX3Byb3RvX18nXVwiOiExPT09by5lbnVtZXJhYmxlP2BbJHtmdChuLF9lLCRlKX1dYDpYKFNlLG4pP3Quc3R5bGl6ZShuLFwibmFtZVwiKTp0LnN0eWxpemUoRmUobiksXCJzdHJpbmdcIik7cmV0dXJuYCR7YX06JHtsfSR7dX1gfWZ1bmN0aW9uIHlyKHQsZSxyLG4pe2xldCBpPWUubGVuZ3RoK3I7aWYoaStlLmxlbmd0aD50LmJyZWFrTGVuZ3RoKXJldHVybiExO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKHQuY29sb3JzP2krPUZ0KGVbcl0pLmxlbmd0aDppKz1lW3JdLmxlbmd0aCxpPnQuYnJlYWtMZW5ndGgpcmV0dXJuITE7cmV0dXJuXCJcIj09PW58fCFzdChuLFwiXFxuXCIpfWZ1bmN0aW9uIGdyKHQsZSxyLG4saSxzLGEpe2lmKCEwIT09dC5jb21wYWN0KXtpZihcIm51bWJlclwiPT10eXBlb2YgdC5jb21wYWN0JiZ0LmNvbXBhY3Q+PTEpe2NvbnN0IHU9ZS5sZW5ndGg7aWYoMj09PWkmJnU+NiYmKGU9ZnVuY3Rpb24odCxlLHIpe2xldCBuPTAsaT0wLHM9MCxhPWUubGVuZ3RoO3QubWF4QXJyYXlMZW5ndGg8ZS5sZW5ndGgmJmEtLTtjb25zdCB1PW5ldyBvKGEpO2Zvcig7czxhO3MrKyl7Y29uc3Qgcj1MZShlW3NdLHQuY29sb3JzKTt1W3NdPXIsbis9cisyLGk8ciYmKGk9cil9Y29uc3QgYz1pKzI7aWYoMypjK3QuaW5kZW50YXRpb25Mdmw8dC5icmVha0xlbmd0aCYmKG4vYz41fHxpPD02KSl7Y29uc3QgaT0yLjUsbz1PKGMtbi9lLmxlbmd0aCkscz1UKGMtMy1vLDEpLGY9SShCKE8oaSpzKmEpL3MpLEEoKHQuYnJlYWtMZW5ndGgtdC5pbmRlbnRhdGlvbkx2bCkvYyksNCp0LmNvbXBhY3QsMTUpO2lmKGY8PTEpcmV0dXJuIGU7Y29uc3QgaD1bXSxwPVtdO2ZvcihsZXQgdD0wO3Q8Zjt0Kyspe2xldCByPTA7Zm9yKGxldCBuPXQ7bjxlLmxlbmd0aDtuKz1mKXVbbl0+ciYmKHI9dVtuXSk7cis9MixwW3RdPXJ9bGV0IGQ9bHQ7aWYodm9pZCAwIT09cilmb3IobGV0IHQ9MDt0PGUubGVuZ3RoO3QrKylpZihcIm51bWJlclwiIT10eXBlb2Ygclt0XSYmXCJiaWdpbnRcIiE9dHlwZW9mIHJbdF0pe2Q9dXQ7YnJlYWt9Zm9yKGxldCB0PTA7dDxhO3QrPWYpe2NvbnN0IHI9SSh0K2YsYSk7bGV0IG49XCJcIixpPXQ7Zm9yKDtpPHItMTtpKyspe2NvbnN0IHI9cFtpLXRdK2VbaV0ubGVuZ3RoLXVbaV07bis9ZChgJHtlW2ldfSwgYCxyLFwiIFwiKX1pZihkPT09bHQpe2NvbnN0IHI9cFtpLXRdK2VbaV0ubGVuZ3RoLXVbaV0tMjtuKz1sdChlW2ldLHIsXCIgXCIpfWVsc2Ugbis9ZVtpXTtsKGgsbil9dC5tYXhBcnJheUxlbmd0aDxlLmxlbmd0aCYmbChoLGVbYV0pLGU9aH1yZXR1cm4gZX0odCxlLGEpKSx0LmN1cnJlbnREZXB0aC1zPHQuY29tcGFjdCYmdT09PWUubGVuZ3RoJiZ5cih0LGUsZS5sZW5ndGgrdC5pbmRlbnRhdGlvbkx2bCtuWzBdLmxlbmd0aCtyLmxlbmd0aCsxMCxyKSlyZXR1cm5gJHtyP2Ake3J9IGA6XCJcIn0ke25bMF19ICR7JHQoZSxcIiwgXCIpfSAke25bMV19YH1jb25zdCB1PWBcXG4ke2N0KFwiIFwiLHQuaW5kZW50YXRpb25MdmwpfWA7cmV0dXJuYCR7cj9gJHtyfSBgOlwiXCJ9JHtuWzBdfSR7dX0gICR7JHQoZSxgLCR7dX0gIGApfSR7dX0ke25bMV19YH1pZih5cih0LGUsMCxyKSlyZXR1cm5gJHtuWzBdfSR7cj9gICR7cn1gOlwiXCJ9ICR7JHQoZSxcIiwgXCIpfSBgK25bMV07Y29uc3QgdT1jdChcIiBcIix0LmluZGVudGF0aW9uTHZsKSxjPVwiXCI9PT1yJiYxPT09blswXS5sZW5ndGg/XCIgXCI6YCR7cj9gICR7cn1gOlwiXCJ9XFxuJHt1fSAgYDtyZXR1cm5gJHtuWzBdfSR7Y30keyR0KGUsYCxcXG4ke3V9ICBgKX0gJHtuWzFdfWB9ZnVuY3Rpb24gYnIodCl7Y29uc3QgZT1CdCh0LCExKTtpZih2b2lkIDAhPT1lJiYodD1lKSxcImZ1bmN0aW9uXCIhPXR5cGVvZiB0LnRvU3RyaW5nKXJldHVybiEwO2lmKHoodCxcInRvU3RyaW5nXCIpKXJldHVybiExO2xldCByPXQ7ZG97cj1DKHIpfXdoaWxlKCF6KHIsXCJ0b1N0cmluZ1wiKSk7Y29uc3Qgbj0kKHIsXCJjb25zdHJ1Y3RvclwiKTtyZXR1cm4gdm9pZCAwIT09biYmXCJmdW5jdGlvblwiPT10eXBlb2Ygbi52YWx1ZSYmZ2UuaGFzKG4udmFsdWUubmFtZSl9Y29uc3QgbXI9dD0+cHQodC5tZXNzYWdlLFwiXFxuXCIsMSlbMF07bGV0IHdyO2Z1bmN0aW9uIF9yKHQpe3RyeXtyZXR1cm4gRSh0KX1jYXRjaCh0KXtpZighd3IpdHJ5e2NvbnN0IHQ9e307dC5hPXQsRSh0KX1jYXRjaCh0KXt3cj1tcih0KX1pZihcIlR5cGVFcnJvclwiPT09dC5uYW1lJiZtcih0KT09PXdyKXJldHVyblwiW0NpcmN1bGFyXVwiO3Rocm93IHR9fWZ1bmN0aW9uIEVyKHQsZSl7Y29uc3Qgcj1lWzBdO2xldCBuPTAsaT1cIlwiLG89XCJcIjtpZihcInN0cmluZ1wiPT10eXBlb2Ygcil7aWYoMT09PWUubGVuZ3RoKXJldHVybiByO2xldCBzLGE9MDtmb3IobGV0IG89MDtvPHIubGVuZ3RoLTE7bysrKWlmKDM3PT09aXQocixvKSl7Y29uc3QgdT1pdChyLCsrbyk7aWYobisxIT09ZS5sZW5ndGgpe3N3aXRjaCh1KXtjYXNlIDExNTpjb25zdCB1PWVbKytuXTtzPVwibnVtYmVyXCI9PXR5cGVvZiB1P0plKENlLHUpOlwiYmlnaW50XCI9PXR5cGVvZiB1P2Ake3V9bmA6XCJvYmplY3RcIj09dHlwZW9mIHUmJm51bGwhPT11JiZicih1KT9QZSh1LHsuLi50LGNvbXBhY3Q6Myxjb2xvcnM6ITEsZGVwdGg6MH0pOm50KHUpO2JyZWFrO2Nhc2UgMTA2OnM9X3IoZVsrK25dKTticmVhaztjYXNlIDEwMDpjb25zdCBsPWVbKytuXTtzPVwiYmlnaW50XCI9PXR5cGVvZiBsP2Ake2x9bmA6XCJzeW1ib2xcIj09dHlwZW9mIGw/XCJOYU5cIjpKZShDZSx4KGwpKTticmVhaztjYXNlIDc5OnM9UGUoZVsrK25dLHQpO2JyZWFrO2Nhc2UgMTExOnM9UGUoZVsrK25dLHsuLi50LHNob3dIaWRkZW46ITAsc2hvd1Byb3h5OiEwLGRlcHRoOjR9KTticmVhaztjYXNlIDEwNTpjb25zdCBjPWVbKytuXTtzPVwiYmlnaW50XCI9PXR5cGVvZiBjP2Ake2N9bmA6XCJzeW1ib2xcIj09dHlwZW9mIGM/XCJOYU5cIjpKZShDZSxMKGMpKTticmVhaztjYXNlIDEwMjpjb25zdCBmPWVbKytuXTtzPVwic3ltYm9sXCI9PXR5cGVvZiBmP1wiTmFOXCI6SmUoQ2UsTihmKSk7YnJlYWs7Y2FzZSA5OTpuKz0xLHM9XCJcIjticmVhaztjYXNlIDM3OmkrPWh0KHIsYSxvKSxhPW8rMTtjb250aW51ZTtkZWZhdWx0OmNvbnRpbnVlfWEhPT1vLTEmJihpKz1odChyLGEsby0xKSksaSs9cyxhPW8rMX1lbHNlIDM3PT09dSYmKGkrPWh0KHIsYSxvKSxhPW8rMSl9MCE9PWEmJihuKyssbz1cIiBcIixhPHIubGVuZ3RoJiYoaSs9aHQocixhKSkpfWZvcig7bjxlLmxlbmd0aDspe2NvbnN0IHI9ZVtuXTtpKz1vLGkrPVwic3RyaW5nXCIhPXR5cGVvZiByP1BlKHIsdCk6cixvPVwiIFwiLG4rK31yZXR1cm4gaX1pZihpKFwiY29uZmlnXCIpLmhhc0ludGwpe2NvbnN0IHQ9aShcImljdVwiKTtMZT1mdW5jdGlvbihlLHI9ITApe2xldCBuPTA7ciYmKGU9dnIoZSkpO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtjb25zdCBpPWUuY2hhckNvZGVBdChyKTtpZihpPj0xMjcpe24rPXQuZ2V0U3RyaW5nV2lkdGgoZS5zbGljZShyKS5ub3JtYWxpemUoXCJORkNcIikpO2JyZWFrfW4rPWk+PTMyPzE6MH1yZXR1cm4gbn19ZWxzZXtMZT1mdW5jdGlvbihyLG49ITApe2xldCBpPTA7biYmKHI9dnIocikpLHI9YXQocixcIk5GQ1wiKTtmb3IoY29uc3QgbiBvZiBuZXcgWihyKSl7Y29uc3Qgcj1vdChuLDApO3Qocik/aSs9MjplKHIpfHxpKyt9cmV0dXJuIGl9O2NvbnN0IHQ9dD0+dD49NDM1MiYmKHQ8PTQ0NDd8fDkwMDE9PT10fHw5MDAyPT09dHx8dD49MTE5MDQmJnQ8PTEyODcxJiYxMjM1MSE9PXR8fHQ+PTEyODgwJiZ0PD0xOTkwM3x8dD49MTk5NjgmJnQ8PTQyMTgyfHx0Pj00MzM2MCYmdDw9NDMzODh8fHQ+PTQ0MDMyJiZ0PD01NTIwM3x8dD49NjM3NDQmJnQ8PTY0MjU1fHx0Pj02NTA0MCYmdDw9NjUwNDl8fHQ+PTY1MDcyJiZ0PD02NTEzMXx8dD49NjUyODEmJnQ8PTY1Mzc2fHx0Pj02NTUwNCYmdDw9NjU1MTB8fHQ+PTExMDU5MiYmdDw9MTEwNTkzfHx0Pj0xMjc0ODgmJnQ8PTEyNzU2OXx8dD49MTI3NzQ0JiZ0PD0xMjg1OTF8fHQ+PTEzMTA3MiYmdDw9MjYyMTQxKSxlPXQ9PnQ8PTMxfHx0Pj0xMjcmJnQ8PTE1OXx8dD49NzY4JiZ0PD04Nzl8fHQ+PTgyMDMmJnQ8PTgyMDd8fHQ+PTg0MDAmJnQ8PTg0NDd8fHQ+PTY1MDI0JiZ0PD02NTAzOXx8dD49NjUwNTYmJnQ8PTY1MDcxfHx0Pj05MTc3NjAmJnQ8PTkxNzk5OX1mdW5jdGlvbiB2cih0KXtyZXR1cm4gdC5yZXBsYWNlKE5lLFwiXCIpfXQuZXhwb3J0cz17aW5zcGVjdDpQZSxmb3JtYXQ6ZnVuY3Rpb24oLi4udCl7cmV0dXJuIEVyKHZvaWQgMCx0KX0sZm9ybWF0V2l0aE9wdGlvbnM6ZnVuY3Rpb24odCwuLi5lKXtpZihcIm9iamVjdFwiIT10eXBlb2YgdHx8bnVsbD09PXQpdGhyb3cgbmV3IER0KFwiaW5zcGVjdE9wdGlvbnNcIixcIm9iamVjdFwiLHQpO3JldHVybiBFcih0LGUpfSxnZXRTdHJpbmdXaWR0aDpMZSxpbnNwZWN0RGVmYXVsdE9wdGlvbnM6bWUsc3RyaXBWVENvbnRyb2xDaGFyYWN0ZXJzOnZyLHN0eWxpemVXaXRoQ29sb3I6RGUsc3R5bGl6ZVdpdGhIVE1MKHQsZSl7Y29uc3Qgcj1QZS5zdHlsZXNbZV07cmV0dXJuIHZvaWQgMCE9PXI/YDxzcGFuIHN0eWxlPVwiY29sb3I6JHtyfTtcIj4ke3R9PC9zcGFuPmA6dH0sUHJveHk6VXR9fSwxODM6dD0+e3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoXCJBc3NlcnRpb24gZmFpbGVkXCIpfX0sOTkyOih0LGUpPT57ZS5OYXRpdmVNb2R1bGU9e2V4aXN0czp0PT4hdC5zdGFydHNXaXRoKFwiL1wiKX19LDEwMToodCxlLHIpPT57Y29uc3R7QXJyYXlJc0FycmF5Om4sQXJyYXlQcm90b3R5cGVJbmNsdWRlczppLEFycmF5UHJvdG90eXBlSW5kZXhPZjpvLEFycmF5UHJvdG90eXBlSm9pbjpzLEFycmF5UHJvdG90eXBlUG9wOmEsQXJyYXlQcm90b3R5cGVQdXNoOnUsQXJyYXlQcm90b3R5cGVTcGxpY2U6bCxFcnJvckNhcHR1cmVTdGFja1RyYWNlOmMsT2JqZWN0RGVmaW5lUHJvcGVydHk6ZixSZWZsZWN0QXBwbHk6aCxSZWdFeHBQcm90b3R5cGVUZXN0OnAsU2FmZU1hcDpkLFN0cmluZ1Byb3RvdHlwZUVuZHNXaXRoOnksU3RyaW5nUHJvdG90eXBlSW5jbHVkZXM6ZyxTdHJpbmdQcm90b3R5cGVTbGljZTpiLFN0cmluZ1Byb3RvdHlwZVRvTG93ZXJDYXNlOm19PXIoNzY1KSx3PW5ldyBkLF89e30sRT0vXihbQS1aXVthLXowLTldKikrJC8sdj1bXCJzdHJpbmdcIixcImZ1bmN0aW9uXCIsXCJudW1iZXJcIixcIm9iamVjdFwiLFwiRnVuY3Rpb25cIixcIk9iamVjdFwiLFwiYm9vbGVhblwiLFwiYmlnaW50XCIsXCJzeW1ib2xcIl07bGV0IFMsQSxUPW51bGw7ZnVuY3Rpb24gSSgpe3JldHVybiBUfHwoVD1yKDQ4KSksVH1jb25zdCBCPU8oKGZ1bmN0aW9uKHQsZSxyKXsodD14KHQpKS5uYW1lPWAke2V9IFske3J9XWAsdC5zdGFjayxkZWxldGUgdC5uYW1lfSkpO2Z1bmN0aW9uIE8odCl7Y29uc3QgZT1cIl9fbm9kZV9pbnRlcm5hbF9cIit0Lm5hbWU7cmV0dXJuIGYodCxcIm5hbWVcIix7dmFsdWU6ZX0pLHR9Y29uc3QgeD1PKChmdW5jdGlvbih0KXtyZXR1cm4gUz1FcnJvci5zdGFja1RyYWNlTGltaXQsRXJyb3Iuc3RhY2tUcmFjZUxpbWl0PTEvMCxjKHQpLEVycm9yLnN0YWNrVHJhY2VMaW1pdD1TLHR9KSk7bGV0IFIsTjt2YXIgTCxQLE0sVSxqO3QuZXhwb3J0cz17Y29kZXM6XyxoaWRlU3RhY2tGcmFtZXM6Tyxpc1N0YWNrT3ZlcmZsb3dFcnJvcjpmdW5jdGlvbih0KXtpZih2b2lkIDA9PT1OKXRyeXshZnVuY3Rpb24gdCgpe3QoKX0oKX1jYXRjaCh0KXtOPXQubWVzc2FnZSxSPXQubmFtZX1yZXR1cm4gdCYmdC5uYW1lPT09UiYmdC5tZXNzYWdlPT09Tn19LEw9XCJFUlJfSU5WQUxJRF9BUkdfVFlQRVwiLFA9KHQsZSxyKT0+e0EoXCJzdHJpbmdcIj09dHlwZW9mIHQsXCInbmFtZScgbXVzdCBiZSBhIHN0cmluZ1wiKSxuKGUpfHwoZT1bZV0pO2xldCBjPVwiVGhlIFwiO3kodCxcIiBhcmd1bWVudFwiKT9jKz1gJHt0fSBgOmMrPWBcIiR7dH1cIiAke2codCxcIi5cIik/XCJwcm9wZXJ0eVwiOlwiYXJndW1lbnRcIn0gYCxjKz1cIm11c3QgYmUgXCI7Y29uc3QgZj1bXSxoPVtdLGQ9W107Zm9yKGNvbnN0IHQgb2YgZSlBKFwic3RyaW5nXCI9PXR5cGVvZiB0LFwiQWxsIGV4cGVjdGVkIGVudHJpZXMgaGF2ZSB0byBiZSBvZiB0eXBlIHN0cmluZ1wiKSxpKHYsdCk/dShmLG0odCkpOnAoRSx0KT91KGgsdCk6KEEoXCJvYmplY3RcIiE9PXQsJ1RoZSB2YWx1ZSBcIm9iamVjdFwiIHNob3VsZCBiZSB3cml0dGVuIGFzIFwiT2JqZWN0XCInKSx1KGQsdCkpO2lmKGgubGVuZ3RoPjApe2NvbnN0IHQ9byhmLFwib2JqZWN0XCIpOy0xIT09dCYmKGwoZix0LDEpLHUoaCxcIk9iamVjdFwiKSl9aWYoZi5sZW5ndGg+MCl7aWYoZi5sZW5ndGg+Mil7Y29uc3QgdD1hKGYpO2MrPWBvbmUgb2YgdHlwZSAke3MoZixcIiwgXCIpfSwgb3IgJHt0fWB9ZWxzZSBjKz0yPT09Zi5sZW5ndGg/YG9uZSBvZiB0eXBlICR7ZlswXX0gb3IgJHtmWzFdfWA6YG9mIHR5cGUgJHtmWzBdfWA7KGgubGVuZ3RoPjB8fGQubGVuZ3RoPjApJiYoYys9XCIgb3IgXCIpfWlmKGgubGVuZ3RoPjApe2lmKGgubGVuZ3RoPjIpe2NvbnN0IHQ9YShoKTtjKz1gYW4gaW5zdGFuY2Ugb2YgJHtzKGgsXCIsIFwiKX0sIG9yICR7dH1gfWVsc2UgYys9YGFuIGluc3RhbmNlIG9mICR7aFswXX1gLDI9PT1oLmxlbmd0aCYmKGMrPWAgb3IgJHtoWzFdfWApO2QubGVuZ3RoPjAmJihjKz1cIiBvciBcIil9aWYoZC5sZW5ndGg+MClpZihkLmxlbmd0aD4yKXtjb25zdCB0PWEoZCk7Yys9YG9uZSBvZiAke3MoZCxcIiwgXCIpfSwgb3IgJHt0fWB9ZWxzZSAyPT09ZC5sZW5ndGg/Yys9YG9uZSBvZiAke2RbMF19IG9yICR7ZFsxXX1gOihtKGRbMF0pIT09ZFswXSYmKGMrPVwiYW4gXCIpLGMrPWAke2RbMF19YCk7aWYobnVsbD09ciljKz1gLiBSZWNlaXZlZCAke3J9YDtlbHNlIGlmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHImJnIubmFtZSljKz1gLiBSZWNlaXZlZCBmdW5jdGlvbiAke3IubmFtZX1gO2Vsc2UgaWYoXCJvYmplY3RcIj09dHlwZW9mIHIpci5jb25zdHJ1Y3RvciYmci5jb25zdHJ1Y3Rvci5uYW1lP2MrPWAuIFJlY2VpdmVkIGFuIGluc3RhbmNlIG9mICR7ci5jb25zdHJ1Y3Rvci5uYW1lfWA6Yys9YC4gUmVjZWl2ZWQgJHtJKCkuaW5zcGVjdChyLHtkZXB0aDotMX0pfWA7ZWxzZXtsZXQgdD1JKCkuaW5zcGVjdChyLHtjb2xvcnM6ITF9KTt0Lmxlbmd0aD4yNSYmKHQ9YCR7Yih0LDAsMjUpfS4uLmApLGMrPWAuIFJlY2VpdmVkIHR5cGUgJHt0eXBlb2Ygcn0gKCR7dH0pYH1yZXR1cm4gY30sTT1UeXBlRXJyb3Isdy5zZXQoTCxQKSxfW0xdPShVPU0saj1MLGZ1bmN0aW9uKC4uLnQpe2NvbnN0IGU9RXJyb3Iuc3RhY2tUcmFjZUxpbWl0O0Vycm9yLnN0YWNrVHJhY2VMaW1pdD0wO2NvbnN0IG49bmV3IFU7RXJyb3Iuc3RhY2tUcmFjZUxpbWl0PWU7Y29uc3QgaT1mdW5jdGlvbih0LGUsbil7Y29uc3QgaT13LmdldCh0KTtyZXR1cm4gdm9pZCAwPT09QSYmKEE9cigxODMpKSxBKFwiZnVuY3Rpb25cIj09dHlwZW9mIGkpLEEoaS5sZW5ndGg8PWUubGVuZ3RoLGBDb2RlOiAke3R9OyBUaGUgcHJvdmlkZWQgYXJndW1lbnRzIGxlbmd0aCAoJHtlLmxlbmd0aH0pIGRvZXMgbm90IG1hdGNoIHRoZSByZXF1aXJlZCBvbmVzICgke2kubGVuZ3RofSkuYCksaChpLG4sZSl9KGosdCxuKTtyZXR1cm4gZihuLFwibWVzc2FnZVwiLHt2YWx1ZTppLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZihuLFwidG9TdHJpbmdcIix7dmFsdWUoKXtyZXR1cm5gJHt0aGlzLm5hbWV9IFske2p9XTogJHt0aGlzLm1lc3NhZ2V9YH0sZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxCKG4sVS5uYW1lLGopLG4uY29kZT1qLG59KX0sMzM1OnQ9Pntjb25zdCBlPS9cXHUwMDFiXFxbXFxkXFxkP20vZzt0LmV4cG9ydHM9e2N1c3RvbUluc3BlY3RTeW1ib2w6U3ltYm9sLmZvcihcIm5vZGVqcy51dGlsLmluc3BlY3QuY3VzdG9tXCIpLGlzRXJyb3I6dD0+dCBpbnN0YW5jZW9mIEVycm9yLGpvaW46QXJyYXkucHJvdG90eXBlLmpvaW4uY2FsbC5iaW5kKEFycmF5LnByb3RvdHlwZS5qb2luKSxyZW1vdmVDb2xvcnM6dD0+U3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlLmNhbGwodCxlLFwiXCIpfX0sNjM6KHQsZSxyKT0+e2NvbnN0e2dldENvbnN0cnVjdG9yTmFtZTpufT1yKDg5MSk7ZnVuY3Rpb24gaSh0LC4uLmUpe2Zvcihjb25zdCByIG9mIGUpe2NvbnN0IGU9Z2xvYmFsVGhpc1tyXTtpZihlJiZ0IGluc3RhbmNlb2YgZSlyZXR1cm4hMH1mb3IoO3Q7KXtpZihcIm9iamVjdFwiIT10eXBlb2YgdClyZXR1cm4hMTtpZihlLmluZGV4T2Yobih0KSk+PTApcmV0dXJuITA7dD1PYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9cmV0dXJuITF9ZnVuY3Rpb24gbyh0KXtyZXR1cm4gZT0+e2lmKCFpKGUsdC5uYW1lKSlyZXR1cm4hMTt0cnl7dC5wcm90b3R5cGUudmFsdWVPZi5jYWxsKGUpfWNhdGNoe3JldHVybiExfXJldHVybiEwfX1cIm9iamVjdFwiIT10eXBlb2YgZ2xvYmFsVGhpcyYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLFwiX19tYWdpY19fXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfSxjb25maWd1cmFibGU6ITB9KSxfX21hZ2ljX18uZ2xvYmFsVGhpcz1fX21hZ2ljX18sZGVsZXRlIE9iamVjdC5wcm90b3R5cGUuX19tYWdpY19fKTtjb25zdCBzPW8oU3RyaW5nKSxhPW8oTnVtYmVyKSx1PW8oQm9vbGVhbiksbD1vKEJpZ0ludCksYz1vKFN5bWJvbCk7dC5leHBvcnRzPXtpc0FzeW5jRnVuY3Rpb246dD0+XCJmdW5jdGlvblwiPT10eXBlb2YgdCYmRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkuc3RhcnRzV2l0aChcImFzeW5jXCIpLGlzR2VuZXJhdG9yRnVuY3Rpb246dD0+XCJmdW5jdGlvblwiPT10eXBlb2YgdCYmRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkubWF0Y2goL14oYXN5bmNcXHMrKT9mdW5jdGlvbiAqXFwqLyksaXNBbnlBcnJheUJ1ZmZlcjp0PT5pKHQsXCJBcnJheUJ1ZmZlclwiLFwiU2hhcmVkQXJyYXlCdWZmZXJcIiksaXNBcnJheUJ1ZmZlcjp0PT5pKHQsXCJBcnJheUJ1ZmZlclwiKSxpc0FyZ3VtZW50c09iamVjdDp0PT4hMSxpc0JveGVkUHJpbWl0aXZlOnQ9PmEodCl8fHModCl8fHUodCl8fGwodCl8fGModCksaXNEYXRhVmlldzp0PT5pKHQsXCJEYXRhVmlld1wiKSxpc0V4dGVybmFsOnQ9Plwib2JqZWN0XCI9PXR5cGVvZiB0JiZPYmplY3QuaXNGcm96ZW4odCkmJm51bGw9PU9iamVjdC5nZXRQcm90b3R5cGVPZih0KSxpc01hcCh0KXtpZighaSh0LFwiTWFwXCIpKXJldHVybiExO3RyeXt0LmhhcygpfWNhdGNoe3JldHVybiExfXJldHVybiEwfSxpc01hcEl0ZXJhdG9yOnQ9PlwiW29iamVjdCBNYXAgSXRlcmF0b3JdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKSxpc01vZHVsZU5hbWVzcGFjZU9iamVjdDp0PT50JiZcIm9iamVjdFwiPT10eXBlb2YgdCYmXCJNb2R1bGVcIj09PXRbU3ltYm9sLnRvU3RyaW5nVGFnXSxpc05hdGl2ZUVycm9yOnQ9PnQgaW5zdGFuY2VvZiBFcnJvciYmaSh0LFwiRXJyb3JcIixcIkV2YWxFcnJvclwiLFwiUmFuZ2VFcnJvclwiLFwiUmVmZXJlbmNlRXJyb3JcIixcIlN5bnRheEVycm9yXCIsXCJUeXBlRXJyb3JcIixcIlVSSUVycm9yXCIsXCJBZ2dyZWdhdGVFcnJvclwiKSxpc1Byb21pc2U6dD0+aSh0LFwiUHJvbWlzZVwiKSxpc1NldCh0KXtpZighaSh0LFwiU2V0XCIpKXJldHVybiExO3RyeXt0LmhhcygpfWNhdGNoe3JldHVybiExfXJldHVybiEwfSxpc1NldEl0ZXJhdG9yOnQ9PlwiW29iamVjdCBTZXQgSXRlcmF0b3JdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKSxpc1dlYWtNYXA6dD0+aSh0LFwiV2Vha01hcFwiKSxpc1dlYWtTZXQ6dD0+aSh0LFwiV2Vha1NldFwiKSxpc1JlZ0V4cDp0PT5pKHQsXCJSZWdFeHBcIiksaXNEYXRlKHQpe2lmKGkodCxcIkRhdGVcIikpdHJ5e3JldHVybiBEYXRlLnByb3RvdHlwZS5nZXRUaW1lLmNhbGwodCksITB9Y2F0Y2h7fXJldHVybiExfSxpc1R5cGVkQXJyYXk6dD0+aSh0LFwiSW50OEFycmF5XCIsXCJVaW50OEFycmF5XCIsXCJVaW50OENsYW1wZWRBcnJheVwiLFwiSW50MTZBcnJheVwiLFwiVWludDE2QXJyYXlcIixcIkludDMyQXJyYXlcIixcIlVpbnQzMkFycmF5XCIsXCJGbG9hdDMyQXJyYXlcIixcIkZsb2F0NjRBcnJheVwiLFwiQmlnSW50NjRBcnJheVwiLFwiQmlnVWludDY0QXJyYXlcIiksaXNTdHJpbmdPYmplY3Q6cyxpc051bWJlck9iamVjdDphLGlzQm9vbGVhbk9iamVjdDp1LGlzQmlnSW50T2JqZWN0OmwsaXNTeW1ib2xPYmplY3Q6Y319LDM1NjoodCxlLHIpPT57Y29uc3R7aGlkZVN0YWNrRnJhbWVzOm4sY29kZXM6e0VSUl9JTlZBTElEX0FSR19UWVBFOml9fT1yKDEwMSk7ZS52YWxpZGF0ZU9iamVjdD1uKCgodCxlLHtudWxsYWJsZTpyPSExfT17fSk9PntpZighciYmbnVsbD09PXR8fEFycmF5LmlzQXJyYXkodCl8fFwib2JqZWN0XCIhPXR5cGVvZiB0KXRocm93IG5ldyBpKGUsXCJPYmplY3RcIix0KX0pKX0sNzY1OnQ9Pntjb25zdCBlPSh0LGUpPT57Y2xhc3Mgcntjb25zdHJ1Y3RvcihlKXt0aGlzLl9pdGVyYXRvcj10KGUpfW5leHQoKXtyZXR1cm4gZSh0aGlzLl9pdGVyYXRvcil9W1N5bWJvbC5pdGVyYXRvcl0oKXtyZXR1cm4gdGhpc319cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihyLnByb3RvdHlwZSxudWxsKSxPYmplY3QuZnJlZXplKHIucHJvdG90eXBlKSxPYmplY3QuZnJlZXplKHIpLHJ9O2Z1bmN0aW9uIHIodCxlKXtyZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZCh0LnByb3RvdHlwZS5fX2xvb2t1cEdldHRlcl9fKGUpKX1mdW5jdGlvbiBuKHQpe3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKHQpfWNvbnN0IGk9KHQsZSk9PntBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKFJlZmxlY3Qub3duS2V5cyh0KSwocj0+e1JlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUscil8fFJlZmxlY3QuZGVmaW5lUHJvcGVydHkoZSxyLFJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQscikpfSkpfSxvPSh0LHIpPT57aWYoU3ltYm9sLml0ZXJhdG9yIGluIHQucHJvdG90eXBlKXtjb25zdCBpPW5ldyB0O2xldCBvO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoUmVmbGVjdC5vd25LZXlzKHQucHJvdG90eXBlKSwocz0+e2lmKCFSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLnByb3RvdHlwZSxzKSl7Y29uc3QgYT1SZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LnByb3RvdHlwZSxzKTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBhLnZhbHVlJiYwPT09YS52YWx1ZS5sZW5ndGgmJlN5bWJvbC5pdGVyYXRvciBpbihGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5jYWxsKGEudmFsdWUsaSl8fHt9KSl7Y29uc3QgdD1uKGEudmFsdWUpO251bGw9PW8mJihvPW4odChpKS5uZXh0KSk7Y29uc3Qgcj1lKHQsbyk7YS52YWx1ZT1mdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzKX19UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShyLnByb3RvdHlwZSxzLGEpfX0pKX1lbHNlIGkodC5wcm90b3R5cGUsci5wcm90b3R5cGUpO3JldHVybiBpKHQsciksT2JqZWN0LnNldFByb3RvdHlwZU9mKHIucHJvdG90eXBlLG51bGwpLE9iamVjdC5mcmVlemUoci5wcm90b3R5cGUpLE9iamVjdC5mcmVlemUocikscn0scz1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSksYT1SZWZsZWN0LmdldFByb3RvdHlwZU9mKHMoXCJcIikpO3QuZXhwb3J0cz17bWFrZVNhZmU6byxpbnRlcm5hbEJpbmRpbmcodCl7aWYoXCJjb25maWdcIj09PXQpcmV0dXJue2hhc0ludGw6ITF9O3Rocm93IG5ldyBFcnJvcihgdW5rbm93biBtb2R1bGU6IFwiJHt0fVwiYCl9LEFycmF5LEFycmF5SXNBcnJheTpBcnJheS5pc0FycmF5LEFycmF5UHJvdG90eXBlRmlsdGVyOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoQXJyYXkucHJvdG90eXBlLmZpbHRlciksQXJyYXlQcm90b3R5cGVGb3JFYWNoOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoQXJyYXkucHJvdG90eXBlLmZvckVhY2gpLEFycmF5UHJvdG90eXBlSW5jbHVkZXM6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUuaW5jbHVkZXMpLEFycmF5UHJvdG90eXBlSW5kZXhPZjpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEFycmF5LnByb3RvdHlwZS5pbmRleE9mKSxBcnJheVByb3RvdHlwZUpvaW46RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUuam9pbiksQXJyYXlQcm90b3R5cGVQb3A6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUucG9wKSxBcnJheVByb3RvdHlwZVB1c2g6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUucHVzaCksQXJyYXlQcm90b3R5cGVQdXNoQXBwbHk6RnVuY3Rpb24uYXBwbHkuYmluZChBcnJheS5wcm90b3R5cGUucHVzaCksQXJyYXlQcm90b3R5cGVTb3J0OkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoQXJyYXkucHJvdG90eXBlLnNvcnQpLEFycmF5UHJvdG90eXBlU3BsaWNlOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoQXJyYXkucHJvdG90eXBlLnNsaWNlKSxBcnJheVByb3RvdHlwZVVuc2hpZnQ6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChBcnJheS5wcm90b3R5cGUudW5zaGlmdCksQmlnSW50UHJvdG90eXBlVmFsdWVPZjpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEJpZ0ludC5wcm90b3R5cGUudmFsdWVPZiksQm9vbGVhblByb3RvdHlwZVZhbHVlT2Y6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mKSxEYXRlUHJvdG90eXBlR2V0VGltZTpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKERhdGUucHJvdG90eXBlLmdldFRpbWUpLERhdGVQcm90b3R5cGVUb0lTT1N0cmluZzpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKERhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nKSxEYXRlUHJvdG90eXBlVG9TdHJpbmc6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChEYXRlLnByb3RvdHlwZS50b1N0cmluZyksRXJyb3JDYXB0dXJlU3RhY2tUcmFjZTpmdW5jdGlvbih0KXtjb25zdCBlPShuZXcgRXJyb3IpLnN0YWNrO3Quc3RhY2s9ZS5yZXBsYWNlKC8uKlxcbi4qLyxcIiQxXCIpfSxFcnJvclByb3RvdHlwZVRvU3RyaW5nOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nKSxGdW5jdGlvblByb3RvdHlwZUNhbGw6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChGdW5jdGlvbi5wcm90b3R5cGUuY2FsbCksRnVuY3Rpb25Qcm90b3R5cGVUb1N0cmluZzpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKEZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZyksSlNPTlN0cmluZ2lmeTpKU09OLnN0cmluZ2lmeSxNYXBQcm90b3R5cGVHZXRTaXplOnIoTWFwLFwic2l6ZVwiKSxNYXBQcm90b3R5cGVFbnRyaWVzOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoTWFwLnByb3RvdHlwZS5lbnRyaWVzKSxNYXRoRmxvb3I6TWF0aC5mbG9vcixNYXRoTWF4Ok1hdGgubWF4LE1hdGhNaW46TWF0aC5taW4sTWF0aFJvdW5kOk1hdGgucm91bmQsTWF0aFNxcnQ6TWF0aC5zcXJ0LE51bWJlcixOdW1iZXJJc05hTjpOdW1iZXIuaXNOYU4sTnVtYmVyUGFyc2VGbG9hdDpOdW1iZXIucGFyc2VGbG9hdCxOdW1iZXJQYXJzZUludDpOdW1iZXIucGFyc2VJbnQsTnVtYmVyUHJvdG90eXBlVmFsdWVPZjpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKE51bWJlci5wcm90b3R5cGUudmFsdWVPZiksT2JqZWN0LE9iamVjdEFzc2lnbjpPYmplY3QuYXNzaWduLE9iamVjdENyZWF0ZTpPYmplY3QuY3JlYXRlLE9iamVjdERlZmluZVByb3BlcnR5Ok9iamVjdC5kZWZpbmVQcm9wZXJ0eSxPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixPYmplY3RHZXRPd25Qcm9wZXJ0eU5hbWVzOk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzLE9iamVjdEdldE93blByb3BlcnR5U3ltYm9sczpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLE9iamVjdEdldFByb3RvdHlwZU9mOk9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3RJczpPYmplY3QuaXMsT2JqZWN0S2V5czpPYmplY3Qua2V5cyxPYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eTpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLE9iamVjdFByb3RvdHlwZVByb3BlcnR5SXNFbnVtZXJhYmxlOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZSksT2JqZWN0U2VhbDpPYmplY3Quc2VhbCxPYmplY3RTZXRQcm90b3R5cGVPZjpPYmplY3Quc2V0UHJvdG90eXBlT2YsUmVmbGVjdEFwcGx5OlJlZmxlY3QuYXBwbHksUmVmbGVjdE93bktleXM6UmVmbGVjdC5vd25LZXlzLFJlZ0V4cCxSZWdFeHBQcm90b3R5cGVUZXN0OkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoUmVnRXhwLnByb3RvdHlwZS50ZXN0KSxSZWdFeHBQcm90b3R5cGVUb1N0cmluZzpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcpLFNhZmVTdHJpbmdJdGVyYXRvcjplKHMsRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChhLm5leHQpKSxTYWZlTWFwOm8oTWFwLGNsYXNzIGV4dGVuZHMgTWFwe2NvbnN0cnVjdG9yKHQpe3N1cGVyKHQpfX0pLFNhZmVTZXQ6byhTZXQsY2xhc3MgZXh0ZW5kcyBTZXR7Y29uc3RydWN0b3IodCl7c3VwZXIodCl9fSksU2V0UHJvdG90eXBlR2V0U2l6ZTpyKFNldCxcInNpemVcIiksU2V0UHJvdG90eXBlVmFsdWVzOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU2V0LnByb3RvdHlwZS52YWx1ZXMpLFN0cmluZyxTdHJpbmdQcm90b3R5cGVDaGFyQ29kZUF0OkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS5jaGFyQ29kZUF0KSxTdHJpbmdQcm90b3R5cGVDb2RlUG9pbnRBdDpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXQpLFN0cmluZ1Byb3RvdHlwZUVuZHNXaXRoOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS5lbmRzV2l0aCksU3RyaW5nUHJvdG90eXBlSW5jbHVkZXM6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzKSxTdHJpbmdQcm90b3R5cGVOb3JtYWxpemU6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLm5vcm1hbGl6ZSksU3RyaW5nUHJvdG90eXBlUGFkRW5kOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS5wYWRFbmQpLFN0cmluZ1Byb3RvdHlwZVBhZFN0YXJ0OkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS5wYWRTdGFydCksU3RyaW5nUHJvdG90eXBlUmVwZWF0OkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS5yZXBlYXQpLFN0cmluZ1Byb3RvdHlwZVJlcGxhY2U6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLFN0cmluZ1Byb3RvdHlwZVNsaWNlOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3RyaW5nLnByb3RvdHlwZS5zbGljZSksU3RyaW5nUHJvdG90eXBlU3BsaXQ6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnNwbGl0KSxTdHJpbmdQcm90b3R5cGVUb0xvd2VyQ2FzZTpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN0cmluZy5wcm90b3R5cGUudG9Mb3dlckNhc2UpLFN0cmluZ1Byb3RvdHlwZVRyaW06RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnRyaW0pLFN0cmluZ1Byb3RvdHlwZVZhbHVlT2Y6RnVuY3Rpb24ucHJvdG90eXBlLmNhbGwuYmluZChTdHJpbmcucHJvdG90eXBlLnZhbHVlT2YpLFN5bWJvbFByb3RvdHlwZVRvU3RyaW5nOkZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsLmJpbmQoU3ltYm9sLnByb3RvdHlwZS50b1N0cmluZyksU3ltYm9sUHJvdG90eXBlVmFsdWVPZjpGdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKFN5bWJvbC5wcm90b3R5cGUudmFsdWVPZiksU3ltYm9sSXRlcmF0b3I6U3ltYm9sLml0ZXJhdG9yLFN5bWJvbEZvcjpTeW1ib2wuZm9yLFN5bWJvbFRvU3RyaW5nVGFnOlN5bWJvbC50b1N0cmluZ1RhZyxUeXBlZEFycmF5UHJvdG90eXBlR2V0TGVuZ3RoOnQ9PnQuY29uc3RydWN0b3IucHJvdG90eXBlLl9fbG9va3VwR2V0dGVyX18oXCJsZW5ndGhcIikuY2FsbCh0KSxVaW50OEFycmF5LHVuY3VycnlUaGlzOm59fSwxNjE6dD0+e2NvbnN0IGU9bmV3IFdlYWtNYXA7Y2xhc3Mgcntjb25zdHJ1Y3Rvcih0LHIpe2NvbnN0IG49bmV3IFByb3h5KHQscik7cmV0dXJuIGUuc2V0KG4sW3Qscl0pLG59c3RhdGljIGdldFByb3h5RGV0YWlscyh0LHI9ITApe2NvbnN0IG49ZS5nZXQodCk7aWYobilyZXR1cm4gcj9uOm5bMF19fXQuZXhwb3J0cz17Z2V0UHJveHlEZXRhaWxzOnIuZ2V0UHJveHlEZXRhaWxzLmJpbmQociksUHJveHk6cn19LDg5MToodCxlLHIpPT57Y29uc3Qgbj1yKDE2MSksaT1TeW1ib2woXCJrUGVuZGluZ1wiKSxvPVN5bWJvbChcImtSZWplY3RlZFwiKTt0LmV4cG9ydHM9e2dldE93bk5vbkluZGV4UHJvcGVydGllczpmdW5jdGlvbih0LGU9Mil7Y29uc3Qgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyh0KSxuPVtdO2Zvcihjb25zdFt0LGldb2YgT2JqZWN0LmVudHJpZXMocikpaWYoIS9eKDB8WzEtOV1bMC05XSopJC8udGVzdCh0KXx8cGFyc2VJbnQodCwxMCk+PTIqKjMyLTEpe2lmKDI9PT1lJiYhaS5lbnVtZXJhYmxlKWNvbnRpbnVlO24ucHVzaCh0KX1mb3IoY29uc3QgciBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpKXtjb25zdCBpPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodCxyKTsoMiE9PWV8fGkuZW51bWVyYWJsZSkmJm4ucHVzaChyKX1yZXR1cm4gbn0sZ2V0UHJvbWlzZURldGFpbHM6KCk9PltpLHZvaWQgMF0sZ2V0UHJveHlEZXRhaWxzOm4uZ2V0UHJveHlEZXRhaWxzLFByb3h5Om4uUHJveHksa1BlbmRpbmc6aSxrUmVqZWN0ZWQ6byxwcmV2aWV3RW50cmllczp0PT5bW10sITFdLGdldENvbnN0cnVjdG9yTmFtZSh0KXtpZighdHx8XCJvYmplY3RcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBvYmplY3RcIik7aWYodC5jb25zdHJ1Y3RvciYmdC5jb25zdHJ1Y3Rvci5uYW1lKXJldHVybiB0LmNvbnN0cnVjdG9yLm5hbWU7Y29uc3QgZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCkubWF0Y2goL15cXFtvYmplY3QgKFteXFxdXSspXFxdLyk7cmV0dXJuIGU/ZVsxXTpcIk9iamVjdFwifSxnZXRFeHRlcm5hbFZhbHVlOigpPT5CaWdJbnQoMCkscHJvcGVydHlGaWx0ZXI6e0FMTF9QUk9QRVJUSUVTOjAsT05MWV9FTlVNRVJBQkxFOjJ9fX19LGU9e307ZnVuY3Rpb24gcihuKXt2YXIgaT1lW25dO2lmKHZvaWQgMCE9PWkpcmV0dXJuIGkuZXhwb3J0czt2YXIgbz1lW25dPXtleHBvcnRzOnt9fTtyZXR1cm4gdFtuXShvLG8uZXhwb3J0cyxyKSxvLmV4cG9ydHN9cmV0dXJuIHIuZz1mdW5jdGlvbigpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBnbG9iYWxUaGlzKXJldHVybiBnbG9iYWxUaGlzO3RyeXtyZXR1cm4gdGhpc3x8bmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKX1jYXRjaCh0KXtpZihcIm9iamVjdFwiPT10eXBlb2Ygd2luZG93KXJldHVybiB3aW5kb3d9fSgpLHIoNDgpfSkoKX0sMTU1OnQ9Pnt2YXIgZSxyLG49dC5leHBvcnRzPXt9O2Z1bmN0aW9uIGkoKXt0aHJvdyBuZXcgRXJyb3IoXCJzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkXCIpfWZ1bmN0aW9uIG8oKXt0aHJvdyBuZXcgRXJyb3IoXCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWRcIil9ZnVuY3Rpb24gcyh0KXtpZihlPT09c2V0VGltZW91dClyZXR1cm4gc2V0VGltZW91dCh0LDApO2lmKChlPT09aXx8IWUpJiZzZXRUaW1lb3V0KXJldHVybiBlPXNldFRpbWVvdXQsc2V0VGltZW91dCh0LDApO3RyeXtyZXR1cm4gZSh0LDApfWNhdGNoKHIpe3RyeXtyZXR1cm4gZS5jYWxsKG51bGwsdCwwKX1jYXRjaChyKXtyZXR1cm4gZS5jYWxsKHRoaXMsdCwwKX19fSFmdW5jdGlvbigpe3RyeXtlPVwiZnVuY3Rpb25cIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDppfWNhdGNoKHQpe2U9aX10cnl7cj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0Om99Y2F0Y2godCl7cj1vfX0oKTt2YXIgYSx1PVtdLGw9ITEsYz0tMTtmdW5jdGlvbiBmKCl7bCYmYSYmKGw9ITEsYS5sZW5ndGg/dT1hLmNvbmNhdCh1KTpjPS0xLHUubGVuZ3RoJiZoKCkpfWZ1bmN0aW9uIGgoKXtpZighbCl7dmFyIHQ9cyhmKTtsPSEwO2Zvcih2YXIgZT11Lmxlbmd0aDtlOyl7Zm9yKGE9dSx1PVtdOysrYzxlOylhJiZhW2NdLnJ1bigpO2M9LTEsZT11Lmxlbmd0aH1hPW51bGwsbD0hMSxmdW5jdGlvbih0KXtpZihyPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQodCk7aWYoKHI9PT1vfHwhcikmJmNsZWFyVGltZW91dClyZXR1cm4gcj1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KHQpO3RyeXtyKHQpfWNhdGNoKGUpe3RyeXtyZXR1cm4gci5jYWxsKG51bGwsdCl9Y2F0Y2goZSl7cmV0dXJuIHIuY2FsbCh0aGlzLHQpfX19KHQpfX1mdW5jdGlvbiBwKHQsZSl7dGhpcy5mdW49dCx0aGlzLmFycmF5PWV9ZnVuY3Rpb24gZCgpe31uLm5leHRUaWNrPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIHI9MTtyPGFyZ3VtZW50cy5sZW5ndGg7cisrKWVbci0xXT1hcmd1bWVudHNbcl07dS5wdXNoKG5ldyBwKHQsZSkpLDEhPT11Lmxlbmd0aHx8bHx8cyhoKX0scC5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0sbi50aXRsZT1cImJyb3dzZXJcIixuLmJyb3dzZXI9ITAsbi5lbnY9e30sbi5hcmd2PVtdLG4udmVyc2lvbj1cIlwiLG4udmVyc2lvbnM9e30sbi5vbj1kLG4uYWRkTGlzdGVuZXI9ZCxuLm9uY2U9ZCxuLm9mZj1kLG4ucmVtb3ZlTGlzdGVuZXI9ZCxuLnJlbW92ZUFsbExpc3RlbmVycz1kLG4uZW1pdD1kLG4ucHJlcGVuZExpc3RlbmVyPWQsbi5wcmVwZW5kT25jZUxpc3RlbmVyPWQsbi5saXN0ZW5lcnM9ZnVuY3Rpb24odCl7cmV0dXJuW119LG4uYmluZGluZz1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoXCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZFwiKX0sbi5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm5cIi9cIn0sbi5jaGRpcj1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoXCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWRcIil9LG4udW1hc2s9ZnVuY3Rpb24oKXtyZXR1cm4gMH19LDI4MTp0PT57XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9e307ZnVuY3Rpb24gcih0LHIsbil7bnx8KG49RXJyb3IpO3ZhciBpPWZ1bmN0aW9uKHQpe3ZhciBlLG47ZnVuY3Rpb24gaShlLG4saSl7cmV0dXJuIHQuY2FsbCh0aGlzLGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2Ygcj9yOnIodCxlLG4pfShlLG4saSkpfHx0aGlzfXJldHVybiBuPXQsKGU9aSkucHJvdG90eXBlPU9iamVjdC5jcmVhdGUobi5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5fX3Byb3RvX189bixpfShuKTtpLnByb3RvdHlwZS5uYW1lPW4ubmFtZSxpLnByb3RvdHlwZS5jb2RlPXQsZVt0XT1pfWZ1bmN0aW9uIG4odCxlKXtpZihBcnJheS5pc0FycmF5KHQpKXt2YXIgcj10Lmxlbmd0aDtyZXR1cm4gdD10Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIFN0cmluZyh0KX0pKSxyPjI/XCJvbmUgb2YgXCIuY29uY2F0KGUsXCIgXCIpLmNvbmNhdCh0LnNsaWNlKDAsci0xKS5qb2luKFwiLCBcIiksXCIsIG9yIFwiKSt0W3ItMV06Mj09PXI/XCJvbmUgb2YgXCIuY29uY2F0KGUsXCIgXCIpLmNvbmNhdCh0WzBdLFwiIG9yIFwiKS5jb25jYXQodFsxXSk6XCJvZiBcIi5jb25jYXQoZSxcIiBcIikuY29uY2F0KHRbMF0pfXJldHVyblwib2YgXCIuY29uY2F0KGUsXCIgXCIpLmNvbmNhdChTdHJpbmcodCkpfXIoXCJFUlJfSU5WQUxJRF9PUFRfVkFMVUVcIiwoZnVuY3Rpb24odCxlKXtyZXR1cm4nVGhlIHZhbHVlIFwiJytlKydcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCInK3QrJ1wiJ30pLFR5cGVFcnJvcikscihcIkVSUl9JTlZBTElEX0FSR19UWVBFXCIsKGZ1bmN0aW9uKHQsZSxyKXt2YXIgaSxvLHMsYSx1O2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlJiYobz1cIm5vdCBcIixlLnN1YnN0cigwLG8ubGVuZ3RoKT09PW8pPyhpPVwibXVzdCBub3QgYmVcIixlPWUucmVwbGFjZSgvXm5vdCAvLFwiXCIpKTppPVwibXVzdCBiZVwiLGZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4odm9pZCAwPT09cnx8cj50Lmxlbmd0aCkmJihyPXQubGVuZ3RoKSx0LnN1YnN0cmluZyhyLWUubGVuZ3RoLHIpPT09ZX0odCxcIiBhcmd1bWVudFwiKSlzPVwiVGhlIFwiLmNvbmNhdCh0LFwiIFwiKS5jb25jYXQoaSxcIiBcIikuY29uY2F0KG4oZSxcInR5cGVcIikpO2Vsc2V7dmFyIGw9KFwibnVtYmVyXCIhPXR5cGVvZiB1JiYodT0wKSx1K1wiLlwiLmxlbmd0aD4oYT10KS5sZW5ndGh8fC0xPT09YS5pbmRleE9mKFwiLlwiLHUpP1wiYXJndW1lbnRcIjpcInByb3BlcnR5XCIpO3M9J1RoZSBcIicuY29uY2F0KHQsJ1wiICcpLmNvbmNhdChsLFwiIFwiKS5jb25jYXQoaSxcIiBcIikuY29uY2F0KG4oZSxcInR5cGVcIikpfXJldHVybiBzK1wiLiBSZWNlaXZlZCB0eXBlIFwiLmNvbmNhdCh0eXBlb2Ygcil9KSxUeXBlRXJyb3IpLHIoXCJFUlJfU1RSRUFNX1BVU0hfQUZURVJfRU9GXCIsXCJzdHJlYW0ucHVzaCgpIGFmdGVyIEVPRlwiKSxyKFwiRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URURcIiwoZnVuY3Rpb24odCl7cmV0dXJuXCJUaGUgXCIrdCtcIiBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkXCJ9KSkscihcIkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFXCIsXCJQcmVtYXR1cmUgY2xvc2VcIikscihcIkVSUl9TVFJFQU1fREVTVFJPWUVEXCIsKGZ1bmN0aW9uKHQpe3JldHVyblwiQ2Fubm90IGNhbGwgXCIrdCtcIiBhZnRlciBhIHN0cmVhbSB3YXMgZGVzdHJveWVkXCJ9KSkscihcIkVSUl9NVUxUSVBMRV9DQUxMQkFDS1wiLFwiQ2FsbGJhY2sgY2FsbGVkIG11bHRpcGxlIHRpbWVzXCIpLHIoXCJFUlJfU1RSRUFNX0NBTk5PVF9QSVBFXCIsXCJDYW5ub3QgcGlwZSwgbm90IHJlYWRhYmxlXCIpLHIoXCJFUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORFwiLFwid3JpdGUgYWZ0ZXIgZW5kXCIpLHIoXCJFUlJfU1RSRUFNX05VTExfVkFMVUVTXCIsXCJNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbVwiLFR5cGVFcnJvcikscihcIkVSUl9VTktOT1dOX0VOQ09ESU5HXCIsKGZ1bmN0aW9uKHQpe3JldHVyblwiVW5rbm93biBlbmNvZGluZzogXCIrdH0pLFR5cGVFcnJvcikscihcIkVSUl9TVFJFQU1fVU5TSElGVF9BRlRFUl9FTkRfRVZFTlRcIixcInN0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50XCIpLHQuZXhwb3J0cy5xPWV9LDc1MzoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigxNTUpLGk9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3ZhciBlPVtdO2Zvcih2YXIgciBpbiB0KWUucHVzaChyKTtyZXR1cm4gZX07dC5leHBvcnRzPWM7dmFyIG89cig0ODEpLHM9cigyMjkpO3IoNzE3KShjLG8pO2Zvcih2YXIgYT1pKHMucHJvdG90eXBlKSx1PTA7dTxhLmxlbmd0aDt1Kyspe3ZhciBsPWFbdV07Yy5wcm90b3R5cGVbbF18fChjLnByb3RvdHlwZVtsXT1zLnByb3RvdHlwZVtsXSl9ZnVuY3Rpb24gYyh0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBjKSlyZXR1cm4gbmV3IGModCk7by5jYWxsKHRoaXMsdCkscy5jYWxsKHRoaXMsdCksdGhpcy5hbGxvd0hhbGZPcGVuPSEwLHQmJighMT09PXQucmVhZGFibGUmJih0aGlzLnJlYWRhYmxlPSExKSwhMT09PXQud3JpdGFibGUmJih0aGlzLndyaXRhYmxlPSExKSwhMT09PXQuYWxsb3dIYWxmT3BlbiYmKHRoaXMuYWxsb3dIYWxmT3Blbj0hMSx0aGlzLm9uY2UoXCJlbmRcIixmKSkpfWZ1bmN0aW9uIGYoKXt0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkfHxuLm5leHRUaWNrKGgsdGhpcyl9ZnVuY3Rpb24gaCh0KXt0LmVuZCgpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLnByb3RvdHlwZSxcIndyaXRhYmxlSGlnaFdhdGVyTWFya1wiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGMucHJvdG90eXBlLFwid3JpdGFibGVCdWZmZXJcIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYy5wcm90b3R5cGUsXCJ3cml0YWJsZUxlbmd0aFwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYy5wcm90b3R5cGUsXCJkZXN0cm95ZWRcIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQmJnRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkfSxzZXQ6ZnVuY3Rpb24odCl7dm9pZCAwIT09dGhpcy5fcmVhZGFibGVTdGF0ZSYmdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPXQsdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9dCl9fSl9LDcyNToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dC5leHBvcnRzPWk7dmFyIG49cig2MDUpO2Z1bmN0aW9uIGkodCl7aWYoISh0aGlzIGluc3RhbmNlb2YgaSkpcmV0dXJuIG5ldyBpKHQpO24uY2FsbCh0aGlzLHQpfXIoNzE3KShpLG4pLGkucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe3IobnVsbCx0KX19LDQ4MToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG4saT1yKDE1NSk7dC5leHBvcnRzPVQsVC5SZWFkYWJsZVN0YXRlPUEscigxODcpLkV2ZW50RW1pdHRlcjt2YXIgbyxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQubGlzdGVuZXJzKGUpLmxlbmd0aH0sYT1yKDUwMyksdT1yKDc2NCkuQnVmZmVyLGw9ci5nLlVpbnQ4QXJyYXl8fGZ1bmN0aW9uKCl7fSxjPXIoNjY5KTtvPWMmJmMuZGVidWdsb2c/Yy5kZWJ1Z2xvZyhcInN0cmVhbVwiKTpmdW5jdGlvbigpe307dmFyIGYsaCxwLGQ9cigzMjcpLHk9cigxOTUpLGc9cig0NTcpLmdldEhpZ2hXYXRlck1hcmssYj1yKDI4MSkucSxtPWIuRVJSX0lOVkFMSURfQVJHX1RZUEUsdz1iLkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YsXz1iLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELEU9Yi5FUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UO3IoNzE3KShULGEpO3ZhciB2PXkuZXJyb3JPckRlc3Ryb3ksUz1bXCJlcnJvclwiLFwiY2xvc2VcIixcImRlc3Ryb3lcIixcInBhdXNlXCIsXCJyZXN1bWVcIl07ZnVuY3Rpb24gQSh0LGUsaSl7bj1ufHxyKDc1MyksdD10fHx7fSxcImJvb2xlYW5cIiE9dHlwZW9mIGkmJihpPWUgaW5zdGFuY2VvZiBuKSx0aGlzLm9iamVjdE1vZGU9ISF0Lm9iamVjdE1vZGUsaSYmKHRoaXMub2JqZWN0TW9kZT10aGlzLm9iamVjdE1vZGV8fCEhdC5yZWFkYWJsZU9iamVjdE1vZGUpLHRoaXMuaGlnaFdhdGVyTWFyaz1nKHRoaXMsdCxcInJlYWRhYmxlSGlnaFdhdGVyTWFya1wiLGkpLHRoaXMuYnVmZmVyPW5ldyBkLHRoaXMubGVuZ3RoPTAsdGhpcy5waXBlcz1udWxsLHRoaXMucGlwZXNDb3VudD0wLHRoaXMuZmxvd2luZz1udWxsLHRoaXMuZW5kZWQ9ITEsdGhpcy5lbmRFbWl0dGVkPSExLHRoaXMucmVhZGluZz0hMSx0aGlzLnN5bmM9ITAsdGhpcy5uZWVkUmVhZGFibGU9ITEsdGhpcy5lbWl0dGVkUmVhZGFibGU9ITEsdGhpcy5yZWFkYWJsZUxpc3RlbmluZz0hMSx0aGlzLnJlc3VtZVNjaGVkdWxlZD0hMSx0aGlzLnBhdXNlZD0hMCx0aGlzLmVtaXRDbG9zZT0hMSE9PXQuZW1pdENsb3NlLHRoaXMuYXV0b0Rlc3Ryb3k9ISF0LmF1dG9EZXN0cm95LHRoaXMuZGVzdHJveWVkPSExLHRoaXMuZGVmYXVsdEVuY29kaW5nPXQuZGVmYXVsdEVuY29kaW5nfHxcInV0ZjhcIix0aGlzLmF3YWl0RHJhaW49MCx0aGlzLnJlYWRpbmdNb3JlPSExLHRoaXMuZGVjb2Rlcj1udWxsLHRoaXMuZW5jb2Rpbmc9bnVsbCx0LmVuY29kaW5nJiYoZnx8KGY9cig1NTMpLnMpLHRoaXMuZGVjb2Rlcj1uZXcgZih0LmVuY29kaW5nKSx0aGlzLmVuY29kaW5nPXQuZW5jb2RpbmcpfWZ1bmN0aW9uIFQodCl7aWYobj1ufHxyKDc1MyksISh0aGlzIGluc3RhbmNlb2YgVCkpcmV0dXJuIG5ldyBUKHQpO3ZhciBlPXRoaXMgaW5zdGFuY2VvZiBuO3RoaXMuX3JlYWRhYmxlU3RhdGU9bmV3IEEodCx0aGlzLGUpLHRoaXMucmVhZGFibGU9ITAsdCYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQucmVhZCYmKHRoaXMuX3JlYWQ9dC5yZWFkKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmRlc3Ryb3kmJih0aGlzLl9kZXN0cm95PXQuZGVzdHJveSkpLGEuY2FsbCh0aGlzKX1mdW5jdGlvbiBJKHQsZSxyLG4saSl7byhcInJlYWRhYmxlQWRkQ2h1bmtcIixlKTt2YXIgcyxhPXQuX3JlYWRhYmxlU3RhdGU7aWYobnVsbD09PWUpYS5yZWFkaW5nPSExLGZ1bmN0aW9uKHQsZSl7aWYobyhcIm9uRW9mQ2h1bmtcIiksIWUuZW5kZWQpe2lmKGUuZGVjb2Rlcil7dmFyIHI9ZS5kZWNvZGVyLmVuZCgpO3ImJnIubGVuZ3RoJiYoZS5idWZmZXIucHVzaChyKSxlLmxlbmd0aCs9ZS5vYmplY3RNb2RlPzE6ci5sZW5ndGgpfWUuZW5kZWQ9ITAsZS5zeW5jP1IodCk6KGUubmVlZFJlYWRhYmxlPSExLGUuZW1pdHRlZFJlYWRhYmxlfHwoZS5lbWl0dGVkUmVhZGFibGU9ITAsTih0KSkpfX0odCxhKTtlbHNlIGlmKGl8fChzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbjtyZXR1cm4gbj1lLHUuaXNCdWZmZXIobil8fG4gaW5zdGFuY2VvZiBsfHxcInN0cmluZ1wiPT10eXBlb2YgZXx8dm9pZCAwPT09ZXx8dC5vYmplY3RNb2RlfHwocj1uZXcgbShcImNodW5rXCIsW1wic3RyaW5nXCIsXCJCdWZmZXJcIixcIlVpbnQ4QXJyYXlcIl0sZSkpLHJ9KGEsZSkpLHMpdih0LHMpO2Vsc2UgaWYoYS5vYmplY3RNb2RlfHxlJiZlLmxlbmd0aD4wKWlmKFwic3RyaW5nXCI9PXR5cGVvZiBlfHxhLm9iamVjdE1vZGV8fE9iamVjdC5nZXRQcm90b3R5cGVPZihlKT09PXUucHJvdG90eXBlfHwoZT1mdW5jdGlvbih0KXtyZXR1cm4gdS5mcm9tKHQpfShlKSksbilhLmVuZEVtaXR0ZWQ/dih0LG5ldyBFKTpCKHQsYSxlLCEwKTtlbHNlIGlmKGEuZW5kZWQpdih0LG5ldyB3KTtlbHNle2lmKGEuZGVzdHJveWVkKXJldHVybiExO2EucmVhZGluZz0hMSxhLmRlY29kZXImJiFyPyhlPWEuZGVjb2Rlci53cml0ZShlKSxhLm9iamVjdE1vZGV8fDAhPT1lLmxlbmd0aD9CKHQsYSxlLCExKTpMKHQsYSkpOkIodCxhLGUsITEpfWVsc2Ugbnx8KGEucmVhZGluZz0hMSxMKHQsYSkpO3JldHVybiFhLmVuZGVkJiYoYS5sZW5ndGg8YS5oaWdoV2F0ZXJNYXJrfHwwPT09YS5sZW5ndGgpfWZ1bmN0aW9uIEIodCxlLHIsbil7ZS5mbG93aW5nJiYwPT09ZS5sZW5ndGgmJiFlLnN5bmM/KGUuYXdhaXREcmFpbj0wLHQuZW1pdChcImRhdGFcIixyKSk6KGUubGVuZ3RoKz1lLm9iamVjdE1vZGU/MTpyLmxlbmd0aCxuP2UuYnVmZmVyLnVuc2hpZnQocik6ZS5idWZmZXIucHVzaChyKSxlLm5lZWRSZWFkYWJsZSYmUih0KSksTCh0LGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcImRlc3Ryb3llZFwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB2b2lkIDAhPT10aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZH0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuX3JlYWRhYmxlU3RhdGUmJih0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZD10KX19KSxULnByb3RvdHlwZS5kZXN0cm95PXkuZGVzdHJveSxULnByb3RvdHlwZS5fdW5kZXN0cm95PXkudW5kZXN0cm95LFQucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKHQsZSl7ZSh0KX0sVC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0LGUpe3ZhciByLG49dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm4gbi5vYmplY3RNb2RlP3I9ITA6XCJzdHJpbmdcIj09dHlwZW9mIHQmJigoZT1lfHxuLmRlZmF1bHRFbmNvZGluZykhPT1uLmVuY29kaW5nJiYodD11LmZyb20odCxlKSxlPVwiXCIpLHI9ITApLEkodGhpcyx0LGUsITEscil9LFQucHJvdG90eXBlLnVuc2hpZnQ9ZnVuY3Rpb24odCl7cmV0dXJuIEkodGhpcyx0LG51bGwsITAsITEpfSxULnByb3RvdHlwZS5pc1BhdXNlZD1mdW5jdGlvbigpe3JldHVybiExPT09dGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nfSxULnByb3RvdHlwZS5zZXRFbmNvZGluZz1mdW5jdGlvbih0KXtmfHwoZj1yKDU1Mykucyk7dmFyIGU9bmV3IGYodCk7dGhpcy5fcmVhZGFibGVTdGF0ZS5kZWNvZGVyPWUsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmNvZGluZz10aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIuZW5jb2Rpbmc7Zm9yKHZhciBuPXRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmhlYWQsaT1cIlwiO251bGwhPT1uOylpKz1lLndyaXRlKG4uZGF0YSksbj1uLm5leHQ7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmNsZWFyKCksXCJcIiE9PWkmJnRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLnB1c2goaSksdGhpcy5fcmVhZGFibGVTdGF0ZS5sZW5ndGg9aS5sZW5ndGgsdGhpc307dmFyIE89MTA3Mzc0MTgyNDtmdW5jdGlvbiB4KHQsZSl7cmV0dXJuIHQ8PTB8fDA9PT1lLmxlbmd0aCYmZS5lbmRlZD8wOmUub2JqZWN0TW9kZT8xOnQhPXQ/ZS5mbG93aW5nJiZlLmxlbmd0aD9lLmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoOmUubGVuZ3RoOih0PmUuaGlnaFdhdGVyTWFyayYmKGUuaGlnaFdhdGVyTWFyaz1mdW5jdGlvbih0KXtyZXR1cm4gdD49Tz90PU86KHQtLSx0fD10Pj4+MSx0fD10Pj4+Mix0fD10Pj4+NCx0fD10Pj4+OCx0fD10Pj4+MTYsdCsrKSx0fSh0KSksdDw9ZS5sZW5ndGg/dDplLmVuZGVkP2UubGVuZ3RoOihlLm5lZWRSZWFkYWJsZT0hMCwwKSl9ZnVuY3Rpb24gUih0KXt2YXIgZT10Ll9yZWFkYWJsZVN0YXRlO28oXCJlbWl0UmVhZGFibGVcIixlLm5lZWRSZWFkYWJsZSxlLmVtaXR0ZWRSZWFkYWJsZSksZS5uZWVkUmVhZGFibGU9ITEsZS5lbWl0dGVkUmVhZGFibGV8fChvKFwiZW1pdFJlYWRhYmxlXCIsZS5mbG93aW5nKSxlLmVtaXR0ZWRSZWFkYWJsZT0hMCxpLm5leHRUaWNrKE4sdCkpfWZ1bmN0aW9uIE4odCl7dmFyIGU9dC5fcmVhZGFibGVTdGF0ZTtvKFwiZW1pdFJlYWRhYmxlX1wiLGUuZGVzdHJveWVkLGUubGVuZ3RoLGUuZW5kZWQpLGUuZGVzdHJveWVkfHwhZS5sZW5ndGgmJiFlLmVuZGVkfHwodC5lbWl0KFwicmVhZGFibGVcIiksZS5lbWl0dGVkUmVhZGFibGU9ITEpLGUubmVlZFJlYWRhYmxlPSFlLmZsb3dpbmcmJiFlLmVuZGVkJiZlLmxlbmd0aDw9ZS5oaWdoV2F0ZXJNYXJrLGsodCl9ZnVuY3Rpb24gTCh0LGUpe2UucmVhZGluZ01vcmV8fChlLnJlYWRpbmdNb3JlPSEwLGkubmV4dFRpY2soUCx0LGUpKX1mdW5jdGlvbiBQKHQsZSl7Zm9yKDshZS5yZWFkaW5nJiYhZS5lbmRlZCYmKGUubGVuZ3RoPGUuaGlnaFdhdGVyTWFya3x8ZS5mbG93aW5nJiYwPT09ZS5sZW5ndGgpOyl7dmFyIHI9ZS5sZW5ndGg7aWYobyhcIm1heWJlUmVhZE1vcmUgcmVhZCAwXCIpLHQucmVhZCgwKSxyPT09ZS5sZW5ndGgpYnJlYWt9ZS5yZWFkaW5nTW9yZT0hMX1mdW5jdGlvbiBNKHQpe3ZhciBlPXQuX3JlYWRhYmxlU3RhdGU7ZS5yZWFkYWJsZUxpc3RlbmluZz10Lmxpc3RlbmVyQ291bnQoXCJyZWFkYWJsZVwiKT4wLGUucmVzdW1lU2NoZWR1bGVkJiYhZS5wYXVzZWQ/ZS5mbG93aW5nPSEwOnQubGlzdGVuZXJDb3VudChcImRhdGFcIik+MCYmdC5yZXN1bWUoKX1mdW5jdGlvbiBVKHQpe28oXCJyZWFkYWJsZSBuZXh0dGljayByZWFkIDBcIiksdC5yZWFkKDApfWZ1bmN0aW9uIGoodCxlKXtvKFwicmVzdW1lXCIsZS5yZWFkaW5nKSxlLnJlYWRpbmd8fHQucmVhZCgwKSxlLnJlc3VtZVNjaGVkdWxlZD0hMSx0LmVtaXQoXCJyZXN1bWVcIiksayh0KSxlLmZsb3dpbmcmJiFlLnJlYWRpbmcmJnQucmVhZCgwKX1mdW5jdGlvbiBrKHQpe3ZhciBlPXQuX3JlYWRhYmxlU3RhdGU7Zm9yKG8oXCJmbG93XCIsZS5mbG93aW5nKTtlLmZsb3dpbmcmJm51bGwhPT10LnJlYWQoKTspO31mdW5jdGlvbiAkKHQsZSl7cmV0dXJuIDA9PT1lLmxlbmd0aD9udWxsOihlLm9iamVjdE1vZGU/cj1lLmJ1ZmZlci5zaGlmdCgpOiF0fHx0Pj1lLmxlbmd0aD8ocj1lLmRlY29kZXI/ZS5idWZmZXIuam9pbihcIlwiKToxPT09ZS5idWZmZXIubGVuZ3RoP2UuYnVmZmVyLmZpcnN0KCk6ZS5idWZmZXIuY29uY2F0KGUubGVuZ3RoKSxlLmJ1ZmZlci5jbGVhcigpKTpyPWUuYnVmZmVyLmNvbnN1bWUodCxlLmRlY29kZXIpLHIpO3ZhciByfWZ1bmN0aW9uIEYodCl7dmFyIGU9dC5fcmVhZGFibGVTdGF0ZTtvKFwiZW5kUmVhZGFibGVcIixlLmVuZEVtaXR0ZWQpLGUuZW5kRW1pdHRlZHx8KGUuZW5kZWQ9ITAsaS5uZXh0VGljayhELGUsdCkpfWZ1bmN0aW9uIEQodCxlKXtpZihvKFwiZW5kUmVhZGFibGVOVFwiLHQuZW5kRW1pdHRlZCx0Lmxlbmd0aCksIXQuZW5kRW1pdHRlZCYmMD09PXQubGVuZ3RoJiYodC5lbmRFbWl0dGVkPSEwLGUucmVhZGFibGU9ITEsZS5lbWl0KFwiZW5kXCIpLHQuYXV0b0Rlc3Ryb3kpKXt2YXIgcj1lLl93cml0YWJsZVN0YXRlOyghcnx8ci5hdXRvRGVzdHJveSYmci5maW5pc2hlZCkmJmUuZGVzdHJveSgpfX1mdW5jdGlvbiBDKHQsZSl7Zm9yKHZhciByPTAsbj10Lmxlbmd0aDtyPG47cisrKWlmKHRbcl09PT1lKXJldHVybiByO3JldHVybi0xfVQucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24odCl7byhcInJlYWRcIix0KSx0PXBhcnNlSW50KHQsMTApO3ZhciBlPXRoaXMuX3JlYWRhYmxlU3RhdGUscj10O2lmKDAhPT10JiYoZS5lbWl0dGVkUmVhZGFibGU9ITEpLDA9PT10JiZlLm5lZWRSZWFkYWJsZSYmKCgwIT09ZS5oaWdoV2F0ZXJNYXJrP2UubGVuZ3RoPj1lLmhpZ2hXYXRlck1hcms6ZS5sZW5ndGg+MCl8fGUuZW5kZWQpKXJldHVybiBvKFwicmVhZDogZW1pdFJlYWRhYmxlXCIsZS5sZW5ndGgsZS5lbmRlZCksMD09PWUubGVuZ3RoJiZlLmVuZGVkP0YodGhpcyk6Uih0aGlzKSxudWxsO2lmKDA9PT0odD14KHQsZSkpJiZlLmVuZGVkKXJldHVybiAwPT09ZS5sZW5ndGgmJkYodGhpcyksbnVsbDt2YXIgbixpPWUubmVlZFJlYWRhYmxlO3JldHVybiBvKFwibmVlZCByZWFkYWJsZVwiLGkpLCgwPT09ZS5sZW5ndGh8fGUubGVuZ3RoLXQ8ZS5oaWdoV2F0ZXJNYXJrKSYmbyhcImxlbmd0aCBsZXNzIHRoYW4gd2F0ZXJtYXJrXCIsaT0hMCksZS5lbmRlZHx8ZS5yZWFkaW5nP28oXCJyZWFkaW5nIG9yIGVuZGVkXCIsaT0hMSk6aSYmKG8oXCJkbyByZWFkXCIpLGUucmVhZGluZz0hMCxlLnN5bmM9ITAsMD09PWUubGVuZ3RoJiYoZS5uZWVkUmVhZGFibGU9ITApLHRoaXMuX3JlYWQoZS5oaWdoV2F0ZXJNYXJrKSxlLnN5bmM9ITEsZS5yZWFkaW5nfHwodD14KHIsZSkpKSxudWxsPT09KG49dD4wPyQodCxlKTpudWxsKT8oZS5uZWVkUmVhZGFibGU9ZS5sZW5ndGg8PWUuaGlnaFdhdGVyTWFyayx0PTApOihlLmxlbmd0aC09dCxlLmF3YWl0RHJhaW49MCksMD09PWUubGVuZ3RoJiYoZS5lbmRlZHx8KGUubmVlZFJlYWRhYmxlPSEwKSxyIT09dCYmZS5lbmRlZCYmRih0aGlzKSksbnVsbCE9PW4mJnRoaXMuZW1pdChcImRhdGFcIixuKSxufSxULnByb3RvdHlwZS5fcmVhZD1mdW5jdGlvbih0KXt2KHRoaXMsbmV3IF8oXCJfcmVhZCgpXCIpKX0sVC5wcm90b3R5cGUucGlwZT1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMsbj10aGlzLl9yZWFkYWJsZVN0YXRlO3N3aXRjaChuLnBpcGVzQ291bnQpe2Nhc2UgMDpuLnBpcGVzPXQ7YnJlYWs7Y2FzZSAxOm4ucGlwZXM9W24ucGlwZXMsdF07YnJlYWs7ZGVmYXVsdDpuLnBpcGVzLnB1c2godCl9bi5waXBlc0NvdW50Kz0xLG8oXCJwaXBlIGNvdW50PSVkIG9wdHM9JWpcIixuLnBpcGVzQ291bnQsZSk7dmFyIGE9ZSYmITE9PT1lLmVuZHx8dD09PWkuc3Rkb3V0fHx0PT09aS5zdGRlcnI/eTp1O2Z1bmN0aW9uIHUoKXtvKFwib25lbmRcIiksdC5lbmQoKX1uLmVuZEVtaXR0ZWQ/aS5uZXh0VGljayhhKTpyLm9uY2UoXCJlbmRcIixhKSx0Lm9uKFwidW5waXBlXCIsKGZ1bmN0aW9uIGUoaSxzKXtvKFwib251bnBpcGVcIiksaT09PXImJnMmJiExPT09cy5oYXNVbnBpcGVkJiYocy5oYXNVbnBpcGVkPSEwLG8oXCJjbGVhbnVwXCIpLHQucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLHApLHQucmVtb3ZlTGlzdGVuZXIoXCJmaW5pc2hcIixkKSx0LnJlbW92ZUxpc3RlbmVyKFwiZHJhaW5cIixsKSx0LnJlbW92ZUxpc3RlbmVyKFwiZXJyb3JcIixoKSx0LnJlbW92ZUxpc3RlbmVyKFwidW5waXBlXCIsZSksci5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLHUpLHIucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIix5KSxyLnJlbW92ZUxpc3RlbmVyKFwiZGF0YVwiLGYpLGM9ITAsIW4uYXdhaXREcmFpbnx8dC5fd3JpdGFibGVTdGF0ZSYmIXQuX3dyaXRhYmxlU3RhdGUubmVlZERyYWlufHxsKCkpfSkpO3ZhciBsPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuX3JlYWRhYmxlU3RhdGU7byhcInBpcGVPbkRyYWluXCIsZS5hd2FpdERyYWluKSxlLmF3YWl0RHJhaW4mJmUuYXdhaXREcmFpbi0tLDA9PT1lLmF3YWl0RHJhaW4mJnModCxcImRhdGFcIikmJihlLmZsb3dpbmc9ITAsayh0KSl9fShyKTt0Lm9uKFwiZHJhaW5cIixsKTt2YXIgYz0hMTtmdW5jdGlvbiBmKGUpe28oXCJvbmRhdGFcIik7dmFyIGk9dC53cml0ZShlKTtvKFwiZGVzdC53cml0ZVwiLGkpLCExPT09aSYmKCgxPT09bi5waXBlc0NvdW50JiZuLnBpcGVzPT09dHx8bi5waXBlc0NvdW50PjEmJi0xIT09QyhuLnBpcGVzLHQpKSYmIWMmJihvKFwiZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlXCIsbi5hd2FpdERyYWluKSxuLmF3YWl0RHJhaW4rKyksci5wYXVzZSgpKX1mdW5jdGlvbiBoKGUpe28oXCJvbmVycm9yXCIsZSkseSgpLHQucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLGgpLDA9PT1zKHQsXCJlcnJvclwiKSYmdih0LGUpfWZ1bmN0aW9uIHAoKXt0LnJlbW92ZUxpc3RlbmVyKFwiZmluaXNoXCIsZCkseSgpfWZ1bmN0aW9uIGQoKXtvKFwib25maW5pc2hcIiksdC5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIscCkseSgpfWZ1bmN0aW9uIHkoKXtvKFwidW5waXBlXCIpLHIudW5waXBlKHQpfXJldHVybiByLm9uKFwiZGF0YVwiLGYpLGZ1bmN0aW9uKHQsZSxyKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LnByZXBlbmRMaXN0ZW5lcilyZXR1cm4gdC5wcmVwZW5kTGlzdGVuZXIoZSxyKTt0Ll9ldmVudHMmJnQuX2V2ZW50cy5lcnJvcj9BcnJheS5pc0FycmF5KHQuX2V2ZW50cy5lcnJvcik/dC5fZXZlbnRzLmVycm9yLnVuc2hpZnQocik6dC5fZXZlbnRzLmVycm9yPVtyLHQuX2V2ZW50cy5lcnJvcl06dC5vbihlLHIpfSh0LFwiZXJyb3JcIixoKSx0Lm9uY2UoXCJjbG9zZVwiLHApLHQub25jZShcImZpbmlzaFwiLGQpLHQuZW1pdChcInBpcGVcIixyKSxuLmZsb3dpbmd8fChvKFwicGlwZSByZXN1bWVcIiksci5yZXN1bWUoKSksdH0sVC5wcm90b3R5cGUudW5waXBlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX3JlYWRhYmxlU3RhdGUscj17aGFzVW5waXBlZDohMX07aWYoMD09PWUucGlwZXNDb3VudClyZXR1cm4gdGhpcztpZigxPT09ZS5waXBlc0NvdW50KXJldHVybiB0JiZ0IT09ZS5waXBlc3x8KHR8fCh0PWUucGlwZXMpLGUucGlwZXM9bnVsbCxlLnBpcGVzQ291bnQ9MCxlLmZsb3dpbmc9ITEsdCYmdC5lbWl0KFwidW5waXBlXCIsdGhpcyxyKSksdGhpcztpZighdCl7dmFyIG49ZS5waXBlcyxpPWUucGlwZXNDb3VudDtlLnBpcGVzPW51bGwsZS5waXBlc0NvdW50PTAsZS5mbG93aW5nPSExO2Zvcih2YXIgbz0wO288aTtvKyspbltvXS5lbWl0KFwidW5waXBlXCIsdGhpcyx7aGFzVW5waXBlZDohMX0pO3JldHVybiB0aGlzfXZhciBzPUMoZS5waXBlcyx0KTtyZXR1cm4tMT09PXN8fChlLnBpcGVzLnNwbGljZShzLDEpLGUucGlwZXNDb3VudC09MSwxPT09ZS5waXBlc0NvdW50JiYoZS5waXBlcz1lLnBpcGVzWzBdKSx0LmVtaXQoXCJ1bnBpcGVcIix0aGlzLHIpKSx0aGlzfSxULnByb3RvdHlwZS5vbj1mdW5jdGlvbih0LGUpe3ZhciByPWEucHJvdG90eXBlLm9uLmNhbGwodGhpcyx0LGUpLG49dGhpcy5fcmVhZGFibGVTdGF0ZTtyZXR1cm5cImRhdGFcIj09PXQ/KG4ucmVhZGFibGVMaXN0ZW5pbmc9dGhpcy5saXN0ZW5lckNvdW50KFwicmVhZGFibGVcIik+MCwhMSE9PW4uZmxvd2luZyYmdGhpcy5yZXN1bWUoKSk6XCJyZWFkYWJsZVwiPT09dCYmKG4uZW5kRW1pdHRlZHx8bi5yZWFkYWJsZUxpc3RlbmluZ3x8KG4ucmVhZGFibGVMaXN0ZW5pbmc9bi5uZWVkUmVhZGFibGU9ITAsbi5mbG93aW5nPSExLG4uZW1pdHRlZFJlYWRhYmxlPSExLG8oXCJvbiByZWFkYWJsZVwiLG4ubGVuZ3RoLG4ucmVhZGluZyksbi5sZW5ndGg/Uih0aGlzKTpuLnJlYWRpbmd8fGkubmV4dFRpY2soVSx0aGlzKSkpLHJ9LFQucHJvdG90eXBlLmFkZExpc3RlbmVyPVQucHJvdG90eXBlLm9uLFQucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7dmFyIHI9YS5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIuY2FsbCh0aGlzLHQsZSk7cmV0dXJuXCJyZWFkYWJsZVwiPT09dCYmaS5uZXh0VGljayhNLHRoaXMpLHJ9LFQucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1mdW5jdGlvbih0KXt2YXIgZT1hLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVyblwicmVhZGFibGVcIiE9PXQmJnZvaWQgMCE9PXR8fGkubmV4dFRpY2soTSx0aGlzKSxlfSxULnByb3RvdHlwZS5yZXN1bWU9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9yZWFkYWJsZVN0YXRlO3JldHVybiB0LmZsb3dpbmd8fChvKFwicmVzdW1lXCIpLHQuZmxvd2luZz0hdC5yZWFkYWJsZUxpc3RlbmluZyxmdW5jdGlvbih0LGUpe2UucmVzdW1lU2NoZWR1bGVkfHwoZS5yZXN1bWVTY2hlZHVsZWQ9ITAsaS5uZXh0VGljayhqLHQsZSkpfSh0aGlzLHQpKSx0LnBhdXNlZD0hMSx0aGlzfSxULnByb3RvdHlwZS5wYXVzZT1mdW5jdGlvbigpe3JldHVybiBvKFwiY2FsbCBwYXVzZSBmbG93aW5nPSVqXCIsdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKSwhMSE9PXRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyYmKG8oXCJwYXVzZVwiKSx0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc9ITEsdGhpcy5lbWl0KFwicGF1c2VcIikpLHRoaXMuX3JlYWRhYmxlU3RhdGUucGF1c2VkPSEwLHRoaXN9LFQucHJvdG90eXBlLndyYXA9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxyPXRoaXMuX3JlYWRhYmxlU3RhdGUsbj0hMTtmb3IodmFyIGkgaW4gdC5vbihcImVuZFwiLChmdW5jdGlvbigpe2lmKG8oXCJ3cmFwcGVkIGVuZFwiKSxyLmRlY29kZXImJiFyLmVuZGVkKXt2YXIgdD1yLmRlY29kZXIuZW5kKCk7dCYmdC5sZW5ndGgmJmUucHVzaCh0KX1lLnB1c2gobnVsbCl9KSksdC5vbihcImRhdGFcIiwoZnVuY3Rpb24oaSl7byhcIndyYXBwZWQgZGF0YVwiKSxyLmRlY29kZXImJihpPXIuZGVjb2Rlci53cml0ZShpKSksci5vYmplY3RNb2RlJiZudWxsPT1pfHwoci5vYmplY3RNb2RlfHxpJiZpLmxlbmd0aCkmJihlLnB1c2goaSl8fChuPSEwLHQucGF1c2UoKSkpfSkpLHQpdm9pZCAwPT09dGhpc1tpXSYmXCJmdW5jdGlvblwiPT10eXBlb2YgdFtpXSYmKHRoaXNbaV09ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRbZV0uYXBwbHkodCxhcmd1bWVudHMpfX0oaSkpO2Zvcih2YXIgcz0wO3M8Uy5sZW5ndGg7cysrKXQub24oU1tzXSx0aGlzLmVtaXQuYmluZCh0aGlzLFNbc10pKTtyZXR1cm4gdGhpcy5fcmVhZD1mdW5jdGlvbihlKXtvKFwid3JhcHBlZCBfcmVhZFwiLGUpLG4mJihuPSExLHQucmVzdW1lKCkpfSx0aGlzfSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJihULnByb3RvdHlwZVtTeW1ib2wuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09aCYmKGg9cig4NTApKSxoKHRoaXMpfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KFQucHJvdG90eXBlLFwicmVhZGFibGVIaWdoV2F0ZXJNYXJrXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFya319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsXCJyZWFkYWJsZUJ1ZmZlclwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlJiZ0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlcn19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsXCJyZWFkYWJsZUZsb3dpbmdcIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nfSxzZXQ6ZnVuY3Rpb24odCl7dGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZz10KX19KSxULl9mcm9tTGlzdD0kLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcInJlYWRhYmxlTGVuZ3RoXCIse2VudW1lcmFibGU6ITEsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUubGVuZ3RofX0pLFwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbCYmKFQuZnJvbT1mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1wJiYocD1yKDE2NykpLHAoVCx0LGUpfSl9LDYwNToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dC5leHBvcnRzPWM7dmFyIG49cigyODEpLnEsaT1uLkVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVELG89bi5FUlJfTVVMVElQTEVfQ0FMTEJBQ0sscz1uLkVSUl9UUkFOU0ZPUk1fQUxSRUFEWV9UUkFOU0ZPUk1JTkcsYT1uLkVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMCx1PXIoNzUzKTtmdW5jdGlvbiBsKHQsZSl7dmFyIHI9dGhpcy5fdHJhbnNmb3JtU3RhdGU7ci50cmFuc2Zvcm1pbmc9ITE7dmFyIG49ci53cml0ZWNiO2lmKG51bGw9PT1uKXJldHVybiB0aGlzLmVtaXQoXCJlcnJvclwiLG5ldyBvKTtyLndyaXRlY2h1bms9bnVsbCxyLndyaXRlY2I9bnVsbCxudWxsIT1lJiZ0aGlzLnB1c2goZSksbih0KTt2YXIgaT10aGlzLl9yZWFkYWJsZVN0YXRlO2kucmVhZGluZz0hMSwoaS5uZWVkUmVhZGFibGV8fGkubGVuZ3RoPGkuaGlnaFdhdGVyTWFyaykmJnRoaXMuX3JlYWQoaS5oaWdoV2F0ZXJNYXJrKX1mdW5jdGlvbiBjKHQpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGMpKXJldHVybiBuZXcgYyh0KTt1LmNhbGwodGhpcyx0KSx0aGlzLl90cmFuc2Zvcm1TdGF0ZT17YWZ0ZXJUcmFuc2Zvcm06bC5iaW5kKHRoaXMpLG5lZWRUcmFuc2Zvcm06ITEsdHJhbnNmb3JtaW5nOiExLHdyaXRlY2I6bnVsbCx3cml0ZWNodW5rOm51bGwsd3JpdGVlbmNvZGluZzpudWxsfSx0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZT0hMCx0aGlzLl9yZWFkYWJsZVN0YXRlLnN5bmM9ITEsdCYmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQudHJhbnNmb3JtJiYodGhpcy5fdHJhbnNmb3JtPXQudHJhbnNmb3JtKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmZsdXNoJiYodGhpcy5fZmx1c2g9dC5mbHVzaCkpLHRoaXMub24oXCJwcmVmaW5pc2hcIixmKX1mdW5jdGlvbiBmKCl7dmFyIHQ9dGhpcztcImZ1bmN0aW9uXCIhPXR5cGVvZiB0aGlzLl9mbHVzaHx8dGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ/aCh0aGlzLG51bGwsbnVsbCk6dGhpcy5fZmx1c2goKGZ1bmN0aW9uKGUscil7aCh0LGUscil9KSl9ZnVuY3Rpb24gaCh0LGUscil7aWYoZSlyZXR1cm4gdC5lbWl0KFwiZXJyb3JcIixlKTtpZihudWxsIT1yJiZ0LnB1c2gociksdC5fd3JpdGFibGVTdGF0ZS5sZW5ndGgpdGhyb3cgbmV3IGE7aWYodC5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKXRocm93IG5ldyBzO3JldHVybiB0LnB1c2gobnVsbCl9cig3MTcpKGMsdSksYy5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtPSExLHUucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLHQsZSl9LGMucHJvdG90eXBlLl90cmFuc2Zvcm09ZnVuY3Rpb24odCxlLHIpe3IobmV3IGkoXCJfdHJhbnNmb3JtKClcIikpfSxjLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXRoaXMuX3RyYW5zZm9ybVN0YXRlO2lmKG4ud3JpdGVjYj1yLG4ud3JpdGVjaHVuaz10LG4ud3JpdGVlbmNvZGluZz1lLCFuLnRyYW5zZm9ybWluZyl7dmFyIGk9dGhpcy5fcmVhZGFibGVTdGF0ZTsobi5uZWVkVHJhbnNmb3JtfHxpLm5lZWRSZWFkYWJsZXx8aS5sZW5ndGg8aS5oaWdoV2F0ZXJNYXJrKSYmdGhpcy5fcmVhZChpLmhpZ2hXYXRlck1hcmspfX0sYy5wcm90b3R5cGUuX3JlYWQ9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdHJhbnNmb3JtU3RhdGU7bnVsbD09PWUud3JpdGVjaHVua3x8ZS50cmFuc2Zvcm1pbmc/ZS5uZWVkVHJhbnNmb3JtPSEwOihlLnRyYW5zZm9ybWluZz0hMCx0aGlzLl90cmFuc2Zvcm0oZS53cml0ZWNodW5rLGUud3JpdGVlbmNvZGluZyxlLmFmdGVyVHJhbnNmb3JtKSl9LGMucHJvdG90eXBlLl9kZXN0cm95PWZ1bmN0aW9uKHQsZSl7dS5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLHQsKGZ1bmN0aW9uKHQpe2UodCl9KSl9fSwyMjk6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO3ZhciBuLGk9cigxNTUpO2Z1bmN0aW9uIG8odCl7dmFyIGU9dGhpczt0aGlzLm5leHQ9bnVsbCx0aGlzLmVudHJ5PW51bGwsdGhpcy5maW5pc2g9ZnVuY3Rpb24oKXshZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQuZW50cnk7Zm9yKHQuZW50cnk9bnVsbDtuOyl7dmFyIGk9bi5jYWxsYmFjaztlLnBlbmRpbmdjYi0tLGkodW5kZWZpbmVkKSxuPW4ubmV4dH1lLmNvcmtlZFJlcXVlc3RzRnJlZS5uZXh0PXR9KGUsdCl9fXQuZXhwb3J0cz1ULFQuV3JpdGFibGVTdGF0ZT1BO3ZhciBzLGE9e2RlcHJlY2F0ZTpyKDkyNyl9LHU9cig1MDMpLGw9cig3NjQpLkJ1ZmZlcixjPXIuZy5VaW50OEFycmF5fHxmdW5jdGlvbigpe30sZj1yKDE5NSksaD1yKDQ1NykuZ2V0SGlnaFdhdGVyTWFyayxwPXIoMjgxKS5xLGQ9cC5FUlJfSU5WQUxJRF9BUkdfVFlQRSx5PXAuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsZz1wLkVSUl9NVUxUSVBMRV9DQUxMQkFDSyxiPXAuRVJSX1NUUkVBTV9DQU5OT1RfUElQRSxtPXAuRVJSX1NUUkVBTV9ERVNUUk9ZRUQsdz1wLkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMsXz1wLkVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5ELEU9cC5FUlJfVU5LTk9XTl9FTkNPRElORyx2PWYuZXJyb3JPckRlc3Ryb3k7ZnVuY3Rpb24gUygpe31mdW5jdGlvbiBBKHQsZSxzKXtuPW58fHIoNzUzKSx0PXR8fHt9LFwiYm9vbGVhblwiIT10eXBlb2YgcyYmKHM9ZSBpbnN0YW5jZW9mIG4pLHRoaXMub2JqZWN0TW9kZT0hIXQub2JqZWN0TW9kZSxzJiYodGhpcy5vYmplY3RNb2RlPXRoaXMub2JqZWN0TW9kZXx8ISF0LndyaXRhYmxlT2JqZWN0TW9kZSksdGhpcy5oaWdoV2F0ZXJNYXJrPWgodGhpcyx0LFwid3JpdGFibGVIaWdoV2F0ZXJNYXJrXCIscyksdGhpcy5maW5hbENhbGxlZD0hMSx0aGlzLm5lZWREcmFpbj0hMSx0aGlzLmVuZGluZz0hMSx0aGlzLmVuZGVkPSExLHRoaXMuZmluaXNoZWQ9ITEsdGhpcy5kZXN0cm95ZWQ9ITE7dmFyIGE9ITE9PT10LmRlY29kZVN0cmluZ3M7dGhpcy5kZWNvZGVTdHJpbmdzPSFhLHRoaXMuZGVmYXVsdEVuY29kaW5nPXQuZGVmYXVsdEVuY29kaW5nfHxcInV0ZjhcIix0aGlzLmxlbmd0aD0wLHRoaXMud3JpdGluZz0hMSx0aGlzLmNvcmtlZD0wLHRoaXMuc3luYz0hMCx0aGlzLmJ1ZmZlclByb2Nlc3Npbmc9ITEsdGhpcy5vbndyaXRlPWZ1bmN0aW9uKHQpeyFmdW5jdGlvbih0LGUpe3ZhciByPXQuX3dyaXRhYmxlU3RhdGUsbj1yLnN5bmMsbz1yLndyaXRlY2I7aWYoXCJmdW5jdGlvblwiIT10eXBlb2Ygbyl0aHJvdyBuZXcgZztpZihmdW5jdGlvbih0KXt0LndyaXRpbmc9ITEsdC53cml0ZWNiPW51bGwsdC5sZW5ndGgtPXQud3JpdGVsZW4sdC53cml0ZWxlbj0wfShyKSxlKSFmdW5jdGlvbih0LGUscixuLG8pey0tZS5wZW5kaW5nY2Iscj8oaS5uZXh0VGljayhvLG4pLGkubmV4dFRpY2soTix0LGUpLHQuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLHYodCxuKSk6KG8obiksdC5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsdih0LG4pLE4odCxlKSl9KHQscixuLGUsbyk7ZWxzZXt2YXIgcz14KHIpfHx0LmRlc3Ryb3llZDtzfHxyLmNvcmtlZHx8ci5idWZmZXJQcm9jZXNzaW5nfHwhci5idWZmZXJlZFJlcXVlc3R8fE8odCxyKSxuP2kubmV4dFRpY2soQix0LHIscyxvKTpCKHQscixzLG8pfX0oZSx0KX0sdGhpcy53cml0ZWNiPW51bGwsdGhpcy53cml0ZWxlbj0wLHRoaXMuYnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwsdGhpcy5wZW5kaW5nY2I9MCx0aGlzLnByZWZpbmlzaGVkPSExLHRoaXMuZXJyb3JFbWl0dGVkPSExLHRoaXMuZW1pdENsb3NlPSExIT09dC5lbWl0Q2xvc2UsdGhpcy5hdXRvRGVzdHJveT0hIXQuYXV0b0Rlc3Ryb3ksdGhpcy5idWZmZXJlZFJlcXVlc3RDb3VudD0wLHRoaXMuY29ya2VkUmVxdWVzdHNGcmVlPW5ldyBvKHRoaXMpfWZ1bmN0aW9uIFQodCl7dmFyIGU9dGhpcyBpbnN0YW5jZW9mKG49bnx8cig3NTMpKTtpZighZSYmIXMuY2FsbChULHRoaXMpKXJldHVybiBuZXcgVCh0KTt0aGlzLl93cml0YWJsZVN0YXRlPW5ldyBBKHQsdGhpcyxlKSx0aGlzLndyaXRhYmxlPSEwLHQmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LndyaXRlJiYodGhpcy5fd3JpdGU9dC53cml0ZSksXCJmdW5jdGlvblwiPT10eXBlb2YgdC53cml0ZXYmJih0aGlzLl93cml0ZXY9dC53cml0ZXYpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQuZGVzdHJveSYmKHRoaXMuX2Rlc3Ryb3k9dC5kZXN0cm95KSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmZpbmFsJiYodGhpcy5fZmluYWw9dC5maW5hbCkpLHUuY2FsbCh0aGlzKX1mdW5jdGlvbiBJKHQsZSxyLG4saSxvLHMpe2Uud3JpdGVsZW49bixlLndyaXRlY2I9cyxlLndyaXRpbmc9ITAsZS5zeW5jPSEwLGUuZGVzdHJveWVkP2Uub253cml0ZShuZXcgbShcIndyaXRlXCIpKTpyP3QuX3dyaXRldihpLGUub253cml0ZSk6dC5fd3JpdGUoaSxvLGUub253cml0ZSksZS5zeW5jPSExfWZ1bmN0aW9uIEIodCxlLHIsbil7cnx8ZnVuY3Rpb24odCxlKXswPT09ZS5sZW5ndGgmJmUubmVlZERyYWluJiYoZS5uZWVkRHJhaW49ITEsdC5lbWl0KFwiZHJhaW5cIikpfSh0LGUpLGUucGVuZGluZ2NiLS0sbigpLE4odCxlKX1mdW5jdGlvbiBPKHQsZSl7ZS5idWZmZXJQcm9jZXNzaW5nPSEwO3ZhciByPWUuYnVmZmVyZWRSZXF1ZXN0O2lmKHQuX3dyaXRldiYmciYmci5uZXh0KXt2YXIgbj1lLmJ1ZmZlcmVkUmVxdWVzdENvdW50LGk9bmV3IEFycmF5KG4pLHM9ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU7cy5lbnRyeT1yO2Zvcih2YXIgYT0wLHU9ITA7cjspaVthXT1yLHIuaXNCdWZ8fCh1PSExKSxyPXIubmV4dCxhKz0xO2kuYWxsQnVmZmVycz11LEkodCxlLCEwLGUubGVuZ3RoLGksXCJcIixzLmZpbmlzaCksZS5wZW5kaW5nY2IrKyxlLmxhc3RCdWZmZXJlZFJlcXVlc3Q9bnVsbCxzLm5leHQ/KGUuY29ya2VkUmVxdWVzdHNGcmVlPXMubmV4dCxzLm5leHQ9bnVsbCk6ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU9bmV3IG8oZSksZS5idWZmZXJlZFJlcXVlc3RDb3VudD0wfWVsc2V7Zm9yKDtyOyl7dmFyIGw9ci5jaHVuayxjPXIuZW5jb2RpbmcsZj1yLmNhbGxiYWNrO2lmKEkodCxlLCExLGUub2JqZWN0TW9kZT8xOmwubGVuZ3RoLGwsYyxmKSxyPXIubmV4dCxlLmJ1ZmZlcmVkUmVxdWVzdENvdW50LS0sZS53cml0aW5nKWJyZWFrfW51bGw9PT1yJiYoZS5sYXN0QnVmZmVyZWRSZXF1ZXN0PW51bGwpfWUuYnVmZmVyZWRSZXF1ZXN0PXIsZS5idWZmZXJQcm9jZXNzaW5nPSExfWZ1bmN0aW9uIHgodCl7cmV0dXJuIHQuZW5kaW5nJiYwPT09dC5sZW5ndGgmJm51bGw9PT10LmJ1ZmZlcmVkUmVxdWVzdCYmIXQuZmluaXNoZWQmJiF0LndyaXRpbmd9ZnVuY3Rpb24gUih0LGUpe3QuX2ZpbmFsKChmdW5jdGlvbihyKXtlLnBlbmRpbmdjYi0tLHImJnYodCxyKSxlLnByZWZpbmlzaGVkPSEwLHQuZW1pdChcInByZWZpbmlzaFwiKSxOKHQsZSl9KSl9ZnVuY3Rpb24gTih0LGUpe3ZhciByPXgoZSk7aWYociYmKGZ1bmN0aW9uKHQsZSl7ZS5wcmVmaW5pc2hlZHx8ZS5maW5hbENhbGxlZHx8KFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQuX2ZpbmFsfHxlLmRlc3Ryb3llZD8oZS5wcmVmaW5pc2hlZD0hMCx0LmVtaXQoXCJwcmVmaW5pc2hcIikpOihlLnBlbmRpbmdjYisrLGUuZmluYWxDYWxsZWQ9ITAsaS5uZXh0VGljayhSLHQsZSkpKX0odCxlKSwwPT09ZS5wZW5kaW5nY2ImJihlLmZpbmlzaGVkPSEwLHQuZW1pdChcImZpbmlzaFwiKSxlLmF1dG9EZXN0cm95KSkpe3ZhciBuPXQuX3JlYWRhYmxlU3RhdGU7KCFufHxuLmF1dG9EZXN0cm95JiZuLmVuZEVtaXR0ZWQpJiZ0LmRlc3Ryb3koKX1yZXR1cm4gcn1yKDcxNykoVCx1KSxBLnByb3RvdHlwZS5nZXRCdWZmZXI9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5idWZmZXJlZFJlcXVlc3QsZT1bXTt0OyllLnB1c2godCksdD10Lm5leHQ7cmV0dXJuIGV9LGZ1bmN0aW9uKCl7dHJ5e09iamVjdC5kZWZpbmVQcm9wZXJ0eShBLnByb3RvdHlwZSxcImJ1ZmZlclwiLHtnZXQ6YS5kZXByZWNhdGUoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0QnVmZmVyKCl9KSxcIl93cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyIGluc3RlYWQuXCIsXCJERVAwMDAzXCIpfSl9Y2F0Y2godCl7fX0oKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5oYXNJbnN0YW5jZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0/KHM9RnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0sT2JqZWN0LmRlZmluZVByb3BlcnR5KFQsU3ltYm9sLmhhc0luc3RhbmNlLHt2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4hIXMuY2FsbCh0aGlzLHQpfHx0aGlzPT09VCYmdCYmdC5fd3JpdGFibGVTdGF0ZSBpbnN0YW5jZW9mIEF9fSkpOnM9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB0aGlzfSxULnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKCl7dih0aGlzLG5ldyBiKX0sVC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuLG89dGhpcy5fd3JpdGFibGVTdGF0ZSxzPSExLGE9IW8ub2JqZWN0TW9kZSYmKG49dCxsLmlzQnVmZmVyKG4pfHxuIGluc3RhbmNlb2YgYyk7cmV0dXJuIGEmJiFsLmlzQnVmZmVyKHQpJiYodD1mdW5jdGlvbih0KXtyZXR1cm4gbC5mcm9tKHQpfSh0KSksXCJmdW5jdGlvblwiPT10eXBlb2YgZSYmKHI9ZSxlPW51bGwpLGE/ZT1cImJ1ZmZlclwiOmV8fChlPW8uZGVmYXVsdEVuY29kaW5nKSxcImZ1bmN0aW9uXCIhPXR5cGVvZiByJiYocj1TKSxvLmVuZGluZz9mdW5jdGlvbih0LGUpe3ZhciByPW5ldyBfO3YodCxyKSxpLm5leHRUaWNrKGUscil9KHRoaXMscik6KGF8fGZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBvO3JldHVybiBudWxsPT09cj9vPW5ldyB3Olwic3RyaW5nXCI9PXR5cGVvZiByfHxlLm9iamVjdE1vZGV8fChvPW5ldyBkKFwiY2h1bmtcIixbXCJzdHJpbmdcIixcIkJ1ZmZlclwiXSxyKSksIW98fCh2KHQsbyksaS5uZXh0VGljayhuLG8pLCExKX0odGhpcyxvLHQscikpJiYoby5wZW5kaW5nY2IrKyxzPWZ1bmN0aW9uKHQsZSxyLG4saSxvKXtpZighcil7dmFyIHM9ZnVuY3Rpb24odCxlLHIpe3JldHVybiB0Lm9iamVjdE1vZGV8fCExPT09dC5kZWNvZGVTdHJpbmdzfHxcInN0cmluZ1wiIT10eXBlb2YgZXx8KGU9bC5mcm9tKGUscikpLGV9KGUsbixpKTtuIT09cyYmKHI9ITAsaT1cImJ1ZmZlclwiLG49cyl9dmFyIGE9ZS5vYmplY3RNb2RlPzE6bi5sZW5ndGg7ZS5sZW5ndGgrPWE7dmFyIHU9ZS5sZW5ndGg8ZS5oaWdoV2F0ZXJNYXJrO2lmKHV8fChlLm5lZWREcmFpbj0hMCksZS53cml0aW5nfHxlLmNvcmtlZCl7dmFyIGM9ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O2UubGFzdEJ1ZmZlcmVkUmVxdWVzdD17Y2h1bms6bixlbmNvZGluZzppLGlzQnVmOnIsY2FsbGJhY2s6byxuZXh0Om51bGx9LGM/Yy5uZXh0PWUubGFzdEJ1ZmZlcmVkUmVxdWVzdDplLmJ1ZmZlcmVkUmVxdWVzdD1lLmxhc3RCdWZmZXJlZFJlcXVlc3QsZS5idWZmZXJlZFJlcXVlc3RDb3VudCs9MX1lbHNlIEkodCxlLCExLGEsbixpLG8pO3JldHVybiB1fSh0aGlzLG8sYSx0LGUscikpLHN9LFQucHJvdG90eXBlLmNvcms9ZnVuY3Rpb24oKXt0aGlzLl93cml0YWJsZVN0YXRlLmNvcmtlZCsrfSxULnByb3RvdHlwZS51bmNvcms9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl93cml0YWJsZVN0YXRlO3QuY29ya2VkJiYodC5jb3JrZWQtLSx0LndyaXRpbmd8fHQuY29ya2VkfHx0LmJ1ZmZlclByb2Nlc3Npbmd8fCF0LmJ1ZmZlcmVkUmVxdWVzdHx8Tyh0aGlzLHQpKX0sVC5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nPWZ1bmN0aW9uKHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0JiYodD10LnRvTG93ZXJDYXNlKCkpLCEoW1wiaGV4XCIsXCJ1dGY4XCIsXCJ1dGYtOFwiLFwiYXNjaWlcIixcImJpbmFyeVwiLFwiYmFzZTY0XCIsXCJ1Y3MyXCIsXCJ1Y3MtMlwiLFwidXRmMTZsZVwiLFwidXRmLTE2bGVcIixcInJhd1wiXS5pbmRleE9mKCh0K1wiXCIpLnRvTG93ZXJDYXNlKCkpPi0xKSl0aHJvdyBuZXcgRSh0KTtyZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5kZWZhdWx0RW5jb2Rpbmc9dCx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsXCJ3cml0YWJsZUJ1ZmZlclwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmdldEJ1ZmZlcigpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShULnByb3RvdHlwZSxcIndyaXRhYmxlSGlnaFdhdGVyTWFya1wiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcmt9fSksVC5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKHQsZSxyKXtyKG5ldyB5KFwiX3dyaXRlKClcIikpfSxULnByb3RvdHlwZS5fd3JpdGV2PW51bGwsVC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj10aGlzLl93cml0YWJsZVN0YXRlO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/KHI9dCx0PW51bGwsZT1udWxsKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiYocj1lLGU9bnVsbCksbnVsbCE9dCYmdGhpcy53cml0ZSh0LGUpLG4uY29ya2VkJiYobi5jb3JrZWQ9MSx0aGlzLnVuY29yaygpKSxuLmVuZGluZ3x8ZnVuY3Rpb24odCxlLHIpe2UuZW5kaW5nPSEwLE4odCxlKSxyJiYoZS5maW5pc2hlZD9pLm5leHRUaWNrKHIpOnQub25jZShcImZpbmlzaFwiLHIpKSxlLmVuZGVkPSEwLHQud3JpdGFibGU9ITF9KHRoaXMsbixyKSx0aGlzfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsXCJ3cml0YWJsZUxlbmd0aFwiLHtlbnVtZXJhYmxlOiExLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoVC5wcm90b3R5cGUsXCJkZXN0cm95ZWRcIix7ZW51bWVyYWJsZTohMSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09dGhpcy5fd3JpdGFibGVTdGF0ZSYmdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWR9LHNldDpmdW5jdGlvbih0KXt0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9dCl9fSksVC5wcm90b3R5cGUuZGVzdHJveT1mLmRlc3Ryb3ksVC5wcm90b3R5cGUuX3VuZGVzdHJveT1mLnVuZGVzdHJveSxULnByb3RvdHlwZS5fZGVzdHJveT1mdW5jdGlvbih0LGUpe2UodCl9fSw4NTA6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO3ZhciBuLGk9cigxNTUpO2Z1bmN0aW9uIG8odCxlLHIpe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09cix0fXZhciBzPXIoNjEwKSxhPVN5bWJvbChcImxhc3RSZXNvbHZlXCIpLHU9U3ltYm9sKFwibGFzdFJlamVjdFwiKSxsPVN5bWJvbChcImVycm9yXCIpLGM9U3ltYm9sKFwiZW5kZWRcIiksZj1TeW1ib2woXCJsYXN0UHJvbWlzZVwiKSxoPVN5bWJvbChcImhhbmRsZVByb21pc2VcIikscD1TeW1ib2woXCJzdHJlYW1cIik7ZnVuY3Rpb24gZCh0LGUpe3JldHVybnt2YWx1ZTp0LGRvbmU6ZX19ZnVuY3Rpb24geSh0KXt2YXIgZT10W2FdO2lmKG51bGwhPT1lKXt2YXIgcj10W3BdLnJlYWQoKTtudWxsIT09ciYmKHRbZl09bnVsbCx0W2FdPW51bGwsdFt1XT1udWxsLGUoZChyLCExKSkpfX1mdW5jdGlvbiBnKHQpe2kubmV4dFRpY2soeSx0KX12YXIgYj1PYmplY3QuZ2V0UHJvdG90eXBlT2YoKGZ1bmN0aW9uKCl7fSkpLG09T2JqZWN0LnNldFByb3RvdHlwZU9mKChvKG49e2dldCBzdHJlYW0oKXtyZXR1cm4gdGhpc1twXX0sbmV4dDpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzW2xdO2lmKG51bGwhPT1lKXJldHVybiBQcm9taXNlLnJlamVjdChlKTtpZih0aGlzW2NdKXJldHVybiBQcm9taXNlLnJlc29sdmUoZCh2b2lkIDAsITApKTtpZih0aGlzW3BdLmRlc3Ryb3llZClyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKGUscil7aS5uZXh0VGljaygoZnVuY3Rpb24oKXt0W2xdP3IodFtsXSk6ZShkKHZvaWQgMCwhMCkpfSkpfSkpO3ZhciByLG49dGhpc1tmXTtpZihuKXI9bmV3IFByb21pc2UoZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24ocixuKXt0LnRoZW4oKGZ1bmN0aW9uKCl7ZVtjXT9yKGQodm9pZCAwLCEwKSk6ZVtoXShyLG4pfSksbil9fShuLHRoaXMpKTtlbHNle3ZhciBvPXRoaXNbcF0ucmVhZCgpO2lmKG51bGwhPT1vKXJldHVybiBQcm9taXNlLnJlc29sdmUoZChvLCExKSk7cj1uZXcgUHJvbWlzZSh0aGlzW2hdKX1yZXR1cm4gdGhpc1tmXT1yLHJ9fSxTeW1ib2wuYXN5bmNJdGVyYXRvciwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxvKG4sXCJyZXR1cm5cIiwoZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oZSxyKXt0W3BdLmRlc3Ryb3kobnVsbCwoZnVuY3Rpb24odCl7dD9yKHQpOmUoZCh2b2lkIDAsITApKX0pKX0pKX0pKSxuKSxiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUscj1PYmplY3QuY3JlYXRlKG0sKG8oZT17fSxwLHt2YWx1ZTp0LHdyaXRhYmxlOiEwfSksbyhlLGEse3ZhbHVlOm51bGwsd3JpdGFibGU6ITB9KSxvKGUsdSx7dmFsdWU6bnVsbCx3cml0YWJsZTohMH0pLG8oZSxsLHt2YWx1ZTpudWxsLHdyaXRhYmxlOiEwfSksbyhlLGMse3ZhbHVlOnQuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCx3cml0YWJsZTohMH0pLG8oZSxoLHt2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBuPXJbcF0ucmVhZCgpO24/KHJbZl09bnVsbCxyW2FdPW51bGwsclt1XT1udWxsLHQoZChuLCExKSkpOihyW2FdPXQsclt1XT1lKX0sd3JpdGFibGU6ITB9KSxlKSk7cmV0dXJuIHJbZl09bnVsbCxzKHQsKGZ1bmN0aW9uKHQpe2lmKHQmJlwiRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0VcIiE9PXQuY29kZSl7dmFyIGU9clt1XTtyZXR1cm4gbnVsbCE9PWUmJihyW2ZdPW51bGwsclthXT1udWxsLHJbdV09bnVsbCxlKHQpKSx2b2lkKHJbbF09dCl9dmFyIG49clthXTtudWxsIT09biYmKHJbZl09bnVsbCxyW2FdPW51bGwsclt1XT1udWxsLG4oZCh2b2lkIDAsITApKSkscltjXT0hMH0pKSx0Lm9uKFwicmVhZGFibGVcIixnLmJpbmQobnVsbCxyKSkscn19LDMyNzoodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gbih0LGUpe3ZhciByPU9iamVjdC5rZXlzKHQpO2lmKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe3ZhciBuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHModCk7ZSYmKG49bi5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkuZW51bWVyYWJsZX0pKSksci5wdXNoLmFwcGx5KHIsbil9cmV0dXJuIHJ9ZnVuY3Rpb24gaSh0LGUscil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1yLHR9ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLFwidmFsdWVcImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLmtleSxuKX19dmFyIHM9cig3NjQpLkJ1ZmZlcixhPXIoNjY5KS5pbnNwZWN0LHU9YSYmYS5jdXN0b218fFwiaW5zcGVjdFwiO3QuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpfSh0aGlzLHQpLHRoaXMuaGVhZD1udWxsLHRoaXMudGFpbD1udWxsLHRoaXMubGVuZ3RoPTB9dmFyIGUscjtyZXR1cm4gZT10LChyPVt7a2V5OlwicHVzaFwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXtkYXRhOnQsbmV4dDpudWxsfTt0aGlzLmxlbmd0aD4wP3RoaXMudGFpbC5uZXh0PWU6dGhpcy5oZWFkPWUsdGhpcy50YWlsPWUsKyt0aGlzLmxlbmd0aH19LHtrZXk6XCJ1bnNoaWZ0XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9e2RhdGE6dCxuZXh0OnRoaXMuaGVhZH07MD09PXRoaXMubGVuZ3RoJiYodGhpcy50YWlsPWUpLHRoaXMuaGVhZD1lLCsrdGhpcy5sZW5ndGh9fSx7a2V5Olwic2hpZnRcIix2YWx1ZTpmdW5jdGlvbigpe2lmKDAhPT10aGlzLmxlbmd0aCl7dmFyIHQ9dGhpcy5oZWFkLmRhdGE7cmV0dXJuIDE9PT10aGlzLmxlbmd0aD90aGlzLmhlYWQ9dGhpcy50YWlsPW51bGw6dGhpcy5oZWFkPXRoaXMuaGVhZC5uZXh0LC0tdGhpcy5sZW5ndGgsdH19fSx7a2V5OlwiY2xlYXJcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCx0aGlzLmxlbmd0aD0wfX0se2tleTpcImpvaW5cIix2YWx1ZTpmdW5jdGlvbih0KXtpZigwPT09dGhpcy5sZW5ndGgpcmV0dXJuXCJcIjtmb3IodmFyIGU9dGhpcy5oZWFkLHI9XCJcIitlLmRhdGE7ZT1lLm5leHQ7KXIrPXQrZS5kYXRhO3JldHVybiByfX0se2tleTpcImNvbmNhdFwiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKDA9PT10aGlzLmxlbmd0aClyZXR1cm4gcy5hbGxvYygwKTtmb3IodmFyIGUscixuLGk9cy5hbGxvY1Vuc2FmZSh0Pj4+MCksbz10aGlzLmhlYWQsYT0wO287KWU9by5kYXRhLHI9aSxuPWEscy5wcm90b3R5cGUuY29weS5jYWxsKGUscixuKSxhKz1vLmRhdGEubGVuZ3RoLG89by5uZXh0O3JldHVybiBpfX0se2tleTpcImNvbnN1bWVcIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByO3JldHVybiB0PHRoaXMuaGVhZC5kYXRhLmxlbmd0aD8ocj10aGlzLmhlYWQuZGF0YS5zbGljZSgwLHQpLHRoaXMuaGVhZC5kYXRhPXRoaXMuaGVhZC5kYXRhLnNsaWNlKHQpKTpyPXQ9PT10aGlzLmhlYWQuZGF0YS5sZW5ndGg/dGhpcy5zaGlmdCgpOmU/dGhpcy5fZ2V0U3RyaW5nKHQpOnRoaXMuX2dldEJ1ZmZlcih0KSxyfX0se2tleTpcImZpcnN0XCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oZWFkLmRhdGF9fSx7a2V5OlwiX2dldFN0cmluZ1wiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaGVhZCxyPTEsbj1lLmRhdGE7Zm9yKHQtPW4ubGVuZ3RoO2U9ZS5uZXh0Oyl7dmFyIGk9ZS5kYXRhLG89dD5pLmxlbmd0aD9pLmxlbmd0aDp0O2lmKG89PT1pLmxlbmd0aD9uKz1pOm4rPWkuc2xpY2UoMCx0KSwwPT0odC09bykpe289PT1pLmxlbmd0aD8oKytyLGUubmV4dD90aGlzLmhlYWQ9ZS5uZXh0OnRoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCk6KHRoaXMuaGVhZD1lLGUuZGF0YT1pLnNsaWNlKG8pKTticmVha30rK3J9cmV0dXJuIHRoaXMubGVuZ3RoLT1yLG59fSx7a2V5OlwiX2dldEJ1ZmZlclwiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXMuYWxsb2NVbnNhZmUodCkscj10aGlzLmhlYWQsbj0xO2ZvcihyLmRhdGEuY29weShlKSx0LT1yLmRhdGEubGVuZ3RoO3I9ci5uZXh0Oyl7dmFyIGk9ci5kYXRhLG89dD5pLmxlbmd0aD9pLmxlbmd0aDp0O2lmKGkuY29weShlLGUubGVuZ3RoLXQsMCxvKSwwPT0odC09bykpe289PT1pLmxlbmd0aD8oKytuLHIubmV4dD90aGlzLmhlYWQ9ci5uZXh0OnRoaXMuaGVhZD10aGlzLnRhaWw9bnVsbCk6KHRoaXMuaGVhZD1yLHIuZGF0YT1pLnNsaWNlKG8pKTticmVha30rK259cmV0dXJuIHRoaXMubGVuZ3RoLT1uLGV9fSx7a2V5OnUsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYSh0aGlzLGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciByPW51bGwhPWFyZ3VtZW50c1tlXT9hcmd1bWVudHNbZV06e307ZSUyP24oT2JqZWN0KHIpLCEwKS5mb3JFYWNoKChmdW5jdGlvbihlKXtpKHQsZSxyW2VdKX0pKTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyh0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHIpKTpuKE9iamVjdChyKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHIsZSkpfSkpfXJldHVybiB0fSh7fSxlLHtkZXB0aDowLGN1c3RvbUluc3BlY3Q6ITF9KSl9fV0pJiZvKGUucHJvdG90eXBlLHIpLHR9KCl9LDE5NToodCxlLHIpPT57XCJ1c2Ugc3RyaWN0XCI7dmFyIG49cigxNTUpO2Z1bmN0aW9uIGkodCxlKXtzKHQsZSksbyh0KX1mdW5jdGlvbiBvKHQpe3QuX3dyaXRhYmxlU3RhdGUmJiF0Ll93cml0YWJsZVN0YXRlLmVtaXRDbG9zZXx8dC5fcmVhZGFibGVTdGF0ZSYmIXQuX3JlYWRhYmxlU3RhdGUuZW1pdENsb3NlfHx0LmVtaXQoXCJjbG9zZVwiKX1mdW5jdGlvbiBzKHQsZSl7dC5lbWl0KFwiZXJyb3JcIixlKX10LmV4cG9ydHM9e2Rlc3Ryb3k6ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLGE9dGhpcy5fcmVhZGFibGVTdGF0ZSYmdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQsdT10aGlzLl93cml0YWJsZVN0YXRlJiZ0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtyZXR1cm4gYXx8dT8oZT9lKHQpOnQmJih0aGlzLl93cml0YWJsZVN0YXRlP3RoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkfHwodGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQ9ITAsbi5uZXh0VGljayhzLHRoaXMsdCkpOm4ubmV4dFRpY2socyx0aGlzLHQpKSx0aGlzKToodGhpcy5fcmVhZGFibGVTdGF0ZSYmKHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkPSEwKSx0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITApLHRoaXMuX2Rlc3Ryb3kodHx8bnVsbCwoZnVuY3Rpb24odCl7IWUmJnQ/ci5fd3JpdGFibGVTdGF0ZT9yLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD9uLm5leHRUaWNrKG8scik6KHIuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkPSEwLG4ubmV4dFRpY2soaSxyLHQpKTpuLm5leHRUaWNrKGkscix0KTplPyhuLm5leHRUaWNrKG8sciksZSh0KSk6bi5uZXh0VGljayhvLHIpfSkpLHRoaXMpfSx1bmRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9yZWFkYWJsZVN0YXRlJiYodGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkaW5nPSExLHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kZWQ9ITEsdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkPSExKSx0aGlzLl93cml0YWJsZVN0YXRlJiYodGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZz0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmZpbmFsQ2FsbGVkPSExLHRoaXMuX3dyaXRhYmxlU3RhdGUucHJlZmluaXNoZWQ9ITEsdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZD0hMSx0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZD0hMSl9LGVycm9yT3JEZXN0cm95OmZ1bmN0aW9uKHQsZSl7dmFyIHI9dC5fcmVhZGFibGVTdGF0ZSxuPXQuX3dyaXRhYmxlU3RhdGU7ciYmci5hdXRvRGVzdHJveXx8biYmbi5hdXRvRGVzdHJveT90LmRlc3Ryb3koZSk6dC5lbWl0KFwiZXJyb3JcIixlKX19fSw2MTA6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO3ZhciBuPXIoMjgxKS5xLkVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFO2Z1bmN0aW9uIGkoKXt9dC5leHBvcnRzPWZ1bmN0aW9uIHQoZSxyLG8pe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIHIpcmV0dXJuIHQoZSxudWxsLHIpO3J8fChyPXt9KSxvPWZ1bmN0aW9uKHQpe3ZhciBlPSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFlKXtlPSEwO2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09YXJndW1lbnRzW2ldO3QuYXBwbHkodGhpcyxuKX19fShvfHxpKTt2YXIgcz1yLnJlYWRhYmxlfHwhMSE9PXIucmVhZGFibGUmJmUucmVhZGFibGUsYT1yLndyaXRhYmxlfHwhMSE9PXIud3JpdGFibGUmJmUud3JpdGFibGUsdT1mdW5jdGlvbigpe2Uud3JpdGFibGV8fGMoKX0sbD1lLl93cml0YWJsZVN0YXRlJiZlLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkLGM9ZnVuY3Rpb24oKXthPSExLGw9ITAsc3x8by5jYWxsKGUpfSxmPWUuX3JlYWRhYmxlU3RhdGUmJmUuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCxoPWZ1bmN0aW9uKCl7cz0hMSxmPSEwLGF8fG8uY2FsbChlKX0scD1mdW5jdGlvbih0KXtvLmNhbGwoZSx0KX0sZD1mdW5jdGlvbigpe3ZhciB0O3JldHVybiBzJiYhZj8oZS5fcmVhZGFibGVTdGF0ZSYmZS5fcmVhZGFibGVTdGF0ZS5lbmRlZHx8KHQ9bmV3IG4pLG8uY2FsbChlLHQpKTphJiYhbD8oZS5fd3JpdGFibGVTdGF0ZSYmZS5fd3JpdGFibGVTdGF0ZS5lbmRlZHx8KHQ9bmV3IG4pLG8uY2FsbChlLHQpKTp2b2lkIDB9LHk9ZnVuY3Rpb24oKXtlLnJlcS5vbihcImZpbmlzaFwiLGMpfTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQuc2V0SGVhZGVyJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmFib3J0fShlKT8oZS5vbihcImNvbXBsZXRlXCIsYyksZS5vbihcImFib3J0XCIsZCksZS5yZXE/eSgpOmUub24oXCJyZXF1ZXN0XCIseSkpOmEmJiFlLl93cml0YWJsZVN0YXRlJiYoZS5vbihcImVuZFwiLHUpLGUub24oXCJjbG9zZVwiLHUpKSxlLm9uKFwiZW5kXCIsaCksZS5vbihcImZpbmlzaFwiLGMpLCExIT09ci5lcnJvciYmZS5vbihcImVycm9yXCIscCksZS5vbihcImNsb3NlXCIsZCksZnVuY3Rpb24oKXtlLnJlbW92ZUxpc3RlbmVyKFwiY29tcGxldGVcIixjKSxlLnJlbW92ZUxpc3RlbmVyKFwiYWJvcnRcIixkKSxlLnJlbW92ZUxpc3RlbmVyKFwicmVxdWVzdFwiLHkpLGUucmVxJiZlLnJlcS5yZW1vdmVMaXN0ZW5lcihcImZpbmlzaFwiLGMpLGUucmVtb3ZlTGlzdGVuZXIoXCJlbmRcIix1KSxlLnJlbW92ZUxpc3RlbmVyKFwiY2xvc2VcIix1KSxlLnJlbW92ZUxpc3RlbmVyKFwiZmluaXNoXCIsYyksZS5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLGgpLGUucmVtb3ZlTGlzdGVuZXIoXCJlcnJvclwiLHApLGUucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLGQpfX19LDE2Nzp0PT57dC5leHBvcnRzPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKFwiUmVhZGFibGUuZnJvbSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBicm93c2VyXCIpfX0sOTQ2Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjt2YXIgbixpPXIoMjgxKS5xLG89aS5FUlJfTUlTU0lOR19BUkdTLHM9aS5FUlJfU1RSRUFNX0RFU1RST1lFRDtmdW5jdGlvbiBhKHQpe2lmKHQpdGhyb3cgdH1mdW5jdGlvbiB1KHQsZSxpLG8pe289ZnVuY3Rpb24odCl7dmFyIGU9ITE7cmV0dXJuIGZ1bmN0aW9uKCl7ZXx8KGU9ITAsdC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9fShvKTt2YXIgYT0hMTt0Lm9uKFwiY2xvc2VcIiwoZnVuY3Rpb24oKXthPSEwfSkpLHZvaWQgMD09PW4mJihuPXIoNjEwKSksbih0LHtyZWFkYWJsZTplLHdyaXRhYmxlOml9LChmdW5jdGlvbih0KXtpZih0KXJldHVybiBvKHQpO2E9ITAsbygpfSkpO3ZhciB1PSExO3JldHVybiBmdW5jdGlvbihlKXtpZighYSYmIXUpcmV0dXJuIHU9ITAsZnVuY3Rpb24odCl7cmV0dXJuIHQuc2V0SGVhZGVyJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmFib3J0fSh0KT90LmFib3J0KCk6XCJmdW5jdGlvblwiPT10eXBlb2YgdC5kZXN0cm95P3QuZGVzdHJveSgpOnZvaWQgbyhlfHxuZXcgcyhcInBpcGVcIikpfX1mdW5jdGlvbiBsKHQpe3QoKX1mdW5jdGlvbiBjKHQsZSl7cmV0dXJuIHQucGlwZShlKX1mdW5jdGlvbiBmKHQpe3JldHVybiB0Lmxlbmd0aD9cImZ1bmN0aW9uXCIhPXR5cGVvZiB0W3QubGVuZ3RoLTFdP2E6dC5wb3AoKTphfXQuZXhwb3J0cz1mdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKWVbcl09YXJndW1lbnRzW3JdO3ZhciBuLGk9ZihlKTtpZihBcnJheS5pc0FycmF5KGVbMF0pJiYoZT1lWzBdKSxlLmxlbmd0aDwyKXRocm93IG5ldyBvKFwic3RyZWFtc1wiKTt2YXIgcz1lLm1hcCgoZnVuY3Rpb24odCxyKXt2YXIgbz1yPGUubGVuZ3RoLTE7cmV0dXJuIHUodCxvLHI+MCwoZnVuY3Rpb24odCl7bnx8KG49dCksdCYmcy5mb3JFYWNoKGwpLG98fChzLmZvckVhY2gobCksaShuKSl9KSl9KSk7cmV0dXJuIGUucmVkdWNlKGMpfX0sNDU3Oih0LGUscik9PntcInVzZSBzdHJpY3RcIjt2YXIgbj1yKDI4MSkucS5FUlJfSU5WQUxJRF9PUFRfVkFMVUU7dC5leHBvcnRzPXtnZXRIaWdoV2F0ZXJNYXJrOmZ1bmN0aW9uKHQsZSxyLGkpe3ZhciBvPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4gbnVsbCE9dC5oaWdoV2F0ZXJNYXJrP3QuaGlnaFdhdGVyTWFyazplP3Rbcl06bnVsbH0oZSxpLHIpO2lmKG51bGwhPW8pe2lmKCFpc0Zpbml0ZShvKXx8TWF0aC5mbG9vcihvKSE9PW98fG88MCl0aHJvdyBuZXcgbihpP3I6XCJoaWdoV2F0ZXJNYXJrXCIsbyk7cmV0dXJuIE1hdGguZmxvb3Iobyl9cmV0dXJuIHQub2JqZWN0TW9kZT8xNjoxNjM4NH19fSw1MDM6KHQsZSxyKT0+e3QuZXhwb3J0cz1yKDE4NykuRXZlbnRFbWl0dGVyfSw1MDk6KHQsZSxyKT0+e3ZhciBuPXIoNzY0KSxpPW4uQnVmZmVyO2Z1bmN0aW9uIG8odCxlKXtmb3IodmFyIHIgaW4gdCllW3JdPXRbcl19ZnVuY3Rpb24gcyh0LGUscil7cmV0dXJuIGkodCxlLHIpfWkuZnJvbSYmaS5hbGxvYyYmaS5hbGxvY1Vuc2FmZSYmaS5hbGxvY1Vuc2FmZVNsb3c/dC5leHBvcnRzPW46KG8obixlKSxlLkJ1ZmZlcj1zKSxzLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGkucHJvdG90eXBlKSxvKGkscykscy5mcm9tPWZ1bmN0aW9uKHQsZSxyKXtpZihcIm51bWJlclwiPT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXJcIik7cmV0dXJuIGkodCxlLHIpfSxzLmFsbG9jPWZ1bmN0aW9uKHQsZSxyKXtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwiKTt2YXIgbj1pKHQpO3JldHVybiB2b2lkIDAhPT1lP1wic3RyaW5nXCI9PXR5cGVvZiByP24uZmlsbChlLHIpOm4uZmlsbChlKTpuLmZpbGwoMCksbn0scy5hbGxvY1Vuc2FmZT1mdW5jdGlvbih0KXtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlclwiKTtyZXR1cm4gaSh0KX0scy5hbGxvY1Vuc2FmZVNsb3c9ZnVuY3Rpb24odCl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXJcIik7cmV0dXJuIG4uU2xvd0J1ZmZlcih0KX19LDgzMDoodCxlLHIpPT57dC5leHBvcnRzPWk7dmFyIG49cigxODcpLkV2ZW50RW1pdHRlcjtmdW5jdGlvbiBpKCl7bi5jYWxsKHRoaXMpfXIoNzE3KShpLG4pLGkuUmVhZGFibGU9cig0ODEpLGkuV3JpdGFibGU9cigyMjkpLGkuRHVwbGV4PXIoNzUzKSxpLlRyYW5zZm9ybT1yKDYwNSksaS5QYXNzVGhyb3VnaD1yKDcyNSksaS5maW5pc2hlZD1yKDYxMCksaS5waXBlbGluZT1yKDk0NiksaS5TdHJlYW09aSxpLnByb3RvdHlwZS5waXBlPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcztmdW5jdGlvbiBpKGUpe3Qud3JpdGFibGUmJiExPT09dC53cml0ZShlKSYmci5wYXVzZSYmci5wYXVzZSgpfWZ1bmN0aW9uIG8oKXtyLnJlYWRhYmxlJiZyLnJlc3VtZSYmci5yZXN1bWUoKX1yLm9uKFwiZGF0YVwiLGkpLHQub24oXCJkcmFpblwiLG8pLHQuX2lzU3RkaW98fGUmJiExPT09ZS5lbmR8fChyLm9uKFwiZW5kXCIsYSksci5vbihcImNsb3NlXCIsdSkpO3ZhciBzPSExO2Z1bmN0aW9uIGEoKXtzfHwocz0hMCx0LmVuZCgpKX1mdW5jdGlvbiB1KCl7c3x8KHM9ITAsXCJmdW5jdGlvblwiPT10eXBlb2YgdC5kZXN0cm95JiZ0LmRlc3Ryb3koKSl9ZnVuY3Rpb24gbCh0KXtpZihjKCksMD09PW4ubGlzdGVuZXJDb3VudCh0aGlzLFwiZXJyb3JcIikpdGhyb3cgdH1mdW5jdGlvbiBjKCl7ci5yZW1vdmVMaXN0ZW5lcihcImRhdGFcIixpKSx0LnJlbW92ZUxpc3RlbmVyKFwiZHJhaW5cIixvKSxyLnJlbW92ZUxpc3RlbmVyKFwiZW5kXCIsYSksci5yZW1vdmVMaXN0ZW5lcihcImNsb3NlXCIsdSksci5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsbCksdC5yZW1vdmVMaXN0ZW5lcihcImVycm9yXCIsbCksci5yZW1vdmVMaXN0ZW5lcihcImVuZFwiLGMpLHIucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLGMpLHQucmVtb3ZlTGlzdGVuZXIoXCJjbG9zZVwiLGMpfXJldHVybiByLm9uKFwiZXJyb3JcIixsKSx0Lm9uKFwiZXJyb3JcIixsKSxyLm9uKFwiZW5kXCIsYyksci5vbihcImNsb3NlXCIsYyksdC5vbihcImNsb3NlXCIsYyksdC5lbWl0KFwicGlwZVwiLHIpLHR9fSw1NTM6KHQsZSxyKT0+e1widXNlIHN0cmljdFwiO3ZhciBuPXIoNTA5KS5CdWZmZXIsaT1uLmlzRW5jb2Rpbmd8fGZ1bmN0aW9uKHQpe3N3aXRjaCgodD1cIlwiK3QpJiZ0LnRvTG93ZXJDYXNlKCkpe2Nhc2VcImhleFwiOmNhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOmNhc2VcImFzY2lpXCI6Y2FzZVwiYmluYXJ5XCI6Y2FzZVwiYmFzZTY0XCI6Y2FzZVwidWNzMlwiOmNhc2VcInVjcy0yXCI6Y2FzZVwidXRmMTZsZVwiOmNhc2VcInV0Zi0xNmxlXCI6Y2FzZVwicmF3XCI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19O2Z1bmN0aW9uIG8odCl7dmFyIGU7c3dpdGNoKHRoaXMuZW5jb2Rpbmc9ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuXCJ1dGY4XCI7Zm9yKHZhciBlOzspc3dpdGNoKHQpe2Nhc2VcInV0ZjhcIjpjYXNlXCJ1dGYtOFwiOnJldHVyblwidXRmOFwiO2Nhc2VcInVjczJcIjpjYXNlXCJ1Y3MtMlwiOmNhc2VcInV0ZjE2bGVcIjpjYXNlXCJ1dGYtMTZsZVwiOnJldHVyblwidXRmMTZsZVwiO2Nhc2VcImxhdGluMVwiOmNhc2VcImJpbmFyeVwiOnJldHVyblwibGF0aW4xXCI7Y2FzZVwiYmFzZTY0XCI6Y2FzZVwiYXNjaWlcIjpjYXNlXCJoZXhcIjpyZXR1cm4gdDtkZWZhdWx0OmlmKGUpcmV0dXJuO3Q9KFwiXCIrdCkudG9Mb3dlckNhc2UoKSxlPSEwfX0odCk7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGUmJihuLmlzRW5jb2Rpbmc9PT1pfHwhaSh0KSkpdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBlbmNvZGluZzogXCIrdCk7cmV0dXJuIGV8fHR9KHQpLHRoaXMuZW5jb2Rpbmcpe2Nhc2VcInV0ZjE2bGVcIjp0aGlzLnRleHQ9dSx0aGlzLmVuZD1sLGU9NDticmVhaztjYXNlXCJ1dGY4XCI6dGhpcy5maWxsTGFzdD1hLGU9NDticmVhaztjYXNlXCJiYXNlNjRcIjp0aGlzLnRleHQ9Yyx0aGlzLmVuZD1mLGU9MzticmVhaztkZWZhdWx0OnJldHVybiB0aGlzLndyaXRlPWgsdm9pZCh0aGlzLmVuZD1wKX10aGlzLmxhc3ROZWVkPTAsdGhpcy5sYXN0VG90YWw9MCx0aGlzLmxhc3RDaGFyPW4uYWxsb2NVbnNhZmUoZSl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gdDw9MTI3PzA6dD4+NT09Nj8yOnQ+PjQ9PTE0PzM6dD4+Mz09MzA/NDp0Pj42PT0yPy0xOi0yfWZ1bmN0aW9uIGEodCl7dmFyIGU9dGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCxyPWZ1bmN0aW9uKHQsZSxyKXtpZigxMjghPSgxOTImZVswXSkpcmV0dXJuIHQubGFzdE5lZWQ9MCxcIu+/vVwiO2lmKHQubGFzdE5lZWQ+MSYmZS5sZW5ndGg+MSl7aWYoMTI4IT0oMTkyJmVbMV0pKXJldHVybiB0Lmxhc3ROZWVkPTEsXCLvv71cIjtpZih0Lmxhc3ROZWVkPjImJmUubGVuZ3RoPjImJjEyOCE9KDE5MiZlWzJdKSlyZXR1cm4gdC5sYXN0TmVlZD0yLFwi77+9XCJ9fSh0aGlzLHQpO3JldHVybiB2b2lkIDAhPT1yP3I6dGhpcy5sYXN0TmVlZDw9dC5sZW5ndGg/KHQuY29weSh0aGlzLmxhc3RDaGFyLGUsMCx0aGlzLmxhc3ROZWVkKSx0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsMCx0aGlzLmxhc3RUb3RhbCkpOih0LmNvcHkodGhpcy5sYXN0Q2hhcixlLDAsdC5sZW5ndGgpLHZvaWQodGhpcy5sYXN0TmVlZC09dC5sZW5ndGgpKX1mdW5jdGlvbiB1KHQsZSl7aWYoKHQubGVuZ3RoLWUpJTI9PTApe3ZhciByPXQudG9TdHJpbmcoXCJ1dGYxNmxlXCIsZSk7aWYocil7dmFyIG49ci5jaGFyQ29kZUF0KHIubGVuZ3RoLTEpO2lmKG4+PTU1Mjk2JiZuPD01NjMxOSlyZXR1cm4gdGhpcy5sYXN0TmVlZD0yLHRoaXMubGFzdFRvdGFsPTQsdGhpcy5sYXN0Q2hhclswXT10W3QubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09dFt0Lmxlbmd0aC0xXSxyLnNsaWNlKDAsLTEpfXJldHVybiByfXJldHVybiB0aGlzLmxhc3ROZWVkPTEsdGhpcy5sYXN0VG90YWw9Mix0aGlzLmxhc3RDaGFyWzBdPXRbdC5sZW5ndGgtMV0sdC50b1N0cmluZyhcInV0ZjE2bGVcIixlLHQubGVuZ3RoLTEpfWZ1bmN0aW9uIGwodCl7dmFyIGU9dCYmdC5sZW5ndGg/dGhpcy53cml0ZSh0KTpcIlwiO2lmKHRoaXMubGFzdE5lZWQpe3ZhciByPXRoaXMubGFzdFRvdGFsLXRoaXMubGFzdE5lZWQ7cmV0dXJuIGUrdGhpcy5sYXN0Q2hhci50b1N0cmluZyhcInV0ZjE2bGVcIiwwLHIpfXJldHVybiBlfWZ1bmN0aW9uIGModCxlKXt2YXIgcj0odC5sZW5ndGgtZSklMztyZXR1cm4gMD09PXI/dC50b1N0cmluZyhcImJhc2U2NFwiLGUpOih0aGlzLmxhc3ROZWVkPTMtcix0aGlzLmxhc3RUb3RhbD0zLDE9PT1yP3RoaXMubGFzdENoYXJbMF09dFt0Lmxlbmd0aC0xXToodGhpcy5sYXN0Q2hhclswXT10W3QubGVuZ3RoLTJdLHRoaXMubGFzdENoYXJbMV09dFt0Lmxlbmd0aC0xXSksdC50b1N0cmluZyhcImJhc2U2NFwiLGUsdC5sZW5ndGgtcikpfWZ1bmN0aW9uIGYodCl7dmFyIGU9dCYmdC5sZW5ndGg/dGhpcy53cml0ZSh0KTpcIlwiO3JldHVybiB0aGlzLmxhc3ROZWVkP2UrdGhpcy5sYXN0Q2hhci50b1N0cmluZyhcImJhc2U2NFwiLDAsMy10aGlzLmxhc3ROZWVkKTplfWZ1bmN0aW9uIGgodCl7cmV0dXJuIHQudG9TdHJpbmcodGhpcy5lbmNvZGluZyl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gdCYmdC5sZW5ndGg/dGhpcy53cml0ZSh0KTpcIlwifWUucz1vLG8ucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQpe2lmKDA9PT10Lmxlbmd0aClyZXR1cm5cIlwiO3ZhciBlLHI7aWYodGhpcy5sYXN0TmVlZCl7aWYodm9pZCAwPT09KGU9dGhpcy5maWxsTGFzdCh0KSkpcmV0dXJuXCJcIjtyPXRoaXMubGFzdE5lZWQsdGhpcy5sYXN0TmVlZD0wfWVsc2Ugcj0wO3JldHVybiByPHQubGVuZ3RoP2U/ZSt0aGlzLnRleHQodCxyKTp0aGlzLnRleHQodCxyKTplfHxcIlwifSxvLnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24odCl7dmFyIGU9dCYmdC5sZW5ndGg/dGhpcy53cml0ZSh0KTpcIlwiO3JldHVybiB0aGlzLmxhc3ROZWVkP2UrXCLvv71cIjplfSxvLnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUubGVuZ3RoLTE7aWYobjxyKXJldHVybiAwO3ZhciBpPXMoZVtuXSk7cmV0dXJuIGk+PTA/KGk+MCYmKHQubGFzdE5lZWQ9aS0xKSxpKTotLW48cnx8LTI9PT1pPzA6KGk9cyhlW25dKSk+PTA/KGk+MCYmKHQubGFzdE5lZWQ9aS0yKSxpKTotLW48cnx8LTI9PT1pPzA6KGk9cyhlW25dKSk+PTA/KGk+MCYmKDI9PT1pP2k9MDp0Lmxhc3ROZWVkPWktMyksaSk6MH0odGhpcyx0LGUpO2lmKCF0aGlzLmxhc3ROZWVkKXJldHVybiB0LnRvU3RyaW5nKFwidXRmOFwiLGUpO3RoaXMubGFzdFRvdGFsPXI7dmFyIG49dC5sZW5ndGgtKHItdGhpcy5sYXN0TmVlZCk7cmV0dXJuIHQuY29weSh0aGlzLmxhc3RDaGFyLDAsbiksdC50b1N0cmluZyhcInV0ZjhcIixlLG4pfSxvLnByb3RvdHlwZS5maWxsTGFzdD1mdW5jdGlvbih0KXtpZih0aGlzLmxhc3ROZWVkPD10Lmxlbmd0aClyZXR1cm4gdC5jb3B5KHRoaXMubGFzdENoYXIsdGhpcy5sYXN0VG90YWwtdGhpcy5sYXN0TmVlZCwwLHRoaXMubGFzdE5lZWQpLHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywwLHRoaXMubGFzdFRvdGFsKTt0LmNvcHkodGhpcy5sYXN0Q2hhcix0aGlzLmxhc3RUb3RhbC10aGlzLmxhc3ROZWVkLDAsdC5sZW5ndGgpLHRoaXMubGFzdE5lZWQtPXQubGVuZ3RofX0sOTI3Oih0LGUscik9PntmdW5jdGlvbiBuKHQpe3RyeXtpZighci5nLmxvY2FsU3RvcmFnZSlyZXR1cm4hMX1jYXRjaCh0KXtyZXR1cm4hMX12YXIgZT1yLmcubG9jYWxTdG9yYWdlW3RdO3JldHVybiBudWxsIT1lJiZcInRydWVcIj09PVN0cmluZyhlKS50b0xvd2VyQ2FzZSgpfXQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKG4oXCJub0RlcHJlY2F0aW9uXCIpKXJldHVybiB0O3ZhciByPSExO3JldHVybiBmdW5jdGlvbigpe2lmKCFyKXtpZihuKFwidGhyb3dEZXByZWNhdGlvblwiKSl0aHJvdyBuZXcgRXJyb3IoZSk7bihcInRyYWNlRGVwcmVjYXRpb25cIik/Y29uc29sZS50cmFjZShlKTpjb25zb2xlLndhcm4oZSkscj0hMH1yZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX0sNjY5OnQ9PntcInVzZSBzdHJpY3RcIjt0LmV4cG9ydHM9ZX0sOTM3OmU9PntcInVzZSBzdHJpY3RcIjtpZih2b2lkIDA9PT10KXt2YXIgcj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ3VuZGVmaW5lZCdcIik7dGhyb3cgci5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLHJ9ZS5leHBvcnRzPXR9fSxuPXt9O2Z1bmN0aW9uIGkodCl7dmFyIGU9blt0XTtpZih2b2lkIDAhPT1lKXJldHVybiBlLmV4cG9ydHM7dmFyIG89blt0XT17ZXhwb3J0czp7fX07cmV0dXJuIHJbdF0uY2FsbChvLmV4cG9ydHMsbyxvLmV4cG9ydHMsaSksby5leHBvcnRzfWkuZD0odCxlKT0+e2Zvcih2YXIgciBpbiBlKWkubyhlLHIpJiYhaS5vKHQscikmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIse2VudW1lcmFibGU6ITAsZ2V0OmVbcl19KX0saS5nPWZ1bmN0aW9uKCl7aWYoXCJvYmplY3RcIj09dHlwZW9mIGdsb2JhbFRoaXMpcmV0dXJuIGdsb2JhbFRoaXM7dHJ5e3JldHVybiB0aGlzfHxuZXcgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpfWNhdGNoKHQpe2lmKFwib2JqZWN0XCI9PXR5cGVvZiB3aW5kb3cpcmV0dXJuIHdpbmRvd319KCksaS5vPSh0LGUpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKSxpLnI9dD0+e1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9O3ZhciBvPXt9O3JldHVybigoKT0+e1widXNlIHN0cmljdFwiO2kucihvKSxpLmQobyx7QmlnTnVtYmVyOigpPT50LkJpZ051bWJlcixDb21tZW50ZWQ6KCk9PnQuQ29tbWVudGVkLERlY29kZXI6KCk9PnQuRGVjb2RlcixEaWFnbm9zZTooKT0+dC5EaWFnbm9zZSxFbmNvZGVyOigpPT50LkVuY29kZXIsTWFwOigpPT50Lk1hcCxTaW1wbGU6KCk9PnQuU2ltcGxlLFRhZ2dlZDooKT0+dC5UYWdnZWQsY29tbWVudDooKT0+dC5VSSxkZWNvZGU6KCk9PnQuSngsZGVjb2RlQWxsOigpPT50LmZJLGRlY29kZUFsbFN5bmM6KCk9PnQuY2MsZGVjb2RlRmlyc3Q6KCk9PnQuaDgsZGVjb2RlRmlyc3RTeW5jOigpPT50LiR1LGRpYWdub3NlOigpPT50Lk0sZW5jb2RlOigpPT50LmN2LGVuY29kZUFzeW5jOigpPT50LldSLGVuY29kZUNhbm9uaWNhbDooKT0+dC5OMixlbmNvZGVPbmU6KCk9PnQuVEcsaGFzQmlnSW50OigpPT50LnZjLGxldmVsZGI6KCk9PnQud3d9KTt2YXIgdD1pKDE0MSl9KSgpLG99KSgpfSkpOyIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ3N0cmVhbScpLlRyYW5zZm9ybVxudmFyIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2RlcicpLlN0cmluZ0RlY29kZXJcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcblxuZnVuY3Rpb24gQ2lwaGVyQmFzZSAoaGFzaE1vZGUpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgdGhpcy5oYXNoTW9kZSA9IHR5cGVvZiBoYXNoTW9kZSA9PT0gJ3N0cmluZydcbiAgaWYgKHRoaXMuaGFzaE1vZGUpIHtcbiAgICB0aGlzW2hhc2hNb2RlXSA9IHRoaXMuX2ZpbmFsT3JEaWdlc3RcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmZpbmFsID0gdGhpcy5fZmluYWxPckRpZ2VzdFxuICB9XG4gIGlmICh0aGlzLl9maW5hbCkge1xuICAgIHRoaXMuX19maW5hbCA9IHRoaXMuX2ZpbmFsXG4gICAgdGhpcy5fZmluYWwgPSBudWxsXG4gIH1cbiAgdGhpcy5fZGVjb2RlciA9IG51bGxcbiAgdGhpcy5fZW5jb2RpbmcgPSBudWxsXG59XG5pbmhlcml0cyhDaXBoZXJCYXNlLCBUcmFuc2Zvcm0pXG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhLCBpbnB1dEVuYywgb3V0cHV0RW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICBkYXRhID0gQnVmZmVyLmZyb20oZGF0YSwgaW5wdXRFbmMpXG4gIH1cblxuICB2YXIgb3V0RGF0YSA9IHRoaXMuX3VwZGF0ZShkYXRhKVxuICBpZiAodGhpcy5oYXNoTW9kZSkgcmV0dXJuIHRoaXNcblxuICBpZiAob3V0cHV0RW5jKSB7XG4gICAgb3V0RGF0YSA9IHRoaXMuX3RvU3RyaW5nKG91dERhdGEsIG91dHB1dEVuYylcbiAgfVxuXG4gIHJldHVybiBvdXREYXRhXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nID0gZnVuY3Rpb24gKCkge31cbkNpcGhlckJhc2UucHJvdG90eXBlLmdldEF1dGhUYWcgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcigndHJ5aW5nIHRvIGdldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEF1dGhUYWcgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcigndHJ5aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEFBRCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gc2V0IGFhZCBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoZGF0YSwgXywgbmV4dCkge1xuICB2YXIgZXJyXG4gIHRyeSB7XG4gICAgaWYgKHRoaXMuaGFzaE1vZGUpIHtcbiAgICAgIHRoaXMuX3VwZGF0ZShkYXRhKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnB1c2godGhpcy5fdXBkYXRlKGRhdGEpKVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGVyciA9IGVcbiAgfSBmaW5hbGx5IHtcbiAgICBuZXh0KGVycilcbiAgfVxufVxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24gKGRvbmUpIHtcbiAgdmFyIGVyclxuICB0cnkge1xuICAgIHRoaXMucHVzaCh0aGlzLl9fZmluYWwoKSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIGVyciA9IGVcbiAgfVxuXG4gIGRvbmUoZXJyKVxufVxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX2ZpbmFsT3JEaWdlc3QgPSBmdW5jdGlvbiAob3V0cHV0RW5jKSB7XG4gIHZhciBvdXREYXRhID0gdGhpcy5fX2ZpbmFsKCkgfHwgQnVmZmVyLmFsbG9jKDApXG4gIGlmIChvdXRwdXRFbmMpIHtcbiAgICBvdXREYXRhID0gdGhpcy5fdG9TdHJpbmcob3V0RGF0YSwgb3V0cHV0RW5jLCB0cnVlKVxuICB9XG4gIHJldHVybiBvdXREYXRhXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLl90b1N0cmluZyA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jLCBmaW4pIHtcbiAgaWYgKCF0aGlzLl9kZWNvZGVyKSB7XG4gICAgdGhpcy5fZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKGVuYylcbiAgICB0aGlzLl9lbmNvZGluZyA9IGVuY1xuICB9XG5cbiAgaWYgKHRoaXMuX2VuY29kaW5nICE9PSBlbmMpIHRocm93IG5ldyBFcnJvcignY2FuXFwndCBzd2l0Y2ggZW5jb2RpbmdzJylcblxuICB2YXIgb3V0ID0gdGhpcy5fZGVjb2Rlci53cml0ZSh2YWx1ZSlcbiAgaWYgKGZpbikge1xuICAgIG91dCArPSB0aGlzLl9kZWNvZGVyLmVuZCgpXG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQ2lwaGVyQmFzZVxuIiwidmFyIGVsbGlwdGljID0gcmVxdWlyZSgnZWxsaXB0aWMnKVxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZUVDREggKGN1cnZlKSB7XG4gIHJldHVybiBuZXcgRUNESChjdXJ2ZSlcbn1cblxudmFyIGFsaWFzZXMgPSB7XG4gIHNlY3AyNTZrMToge1xuICAgIG5hbWU6ICdzZWNwMjU2azEnLFxuICAgIGJ5dGVMZW5ndGg6IDMyXG4gIH0sXG4gIHNlY3AyMjRyMToge1xuICAgIG5hbWU6ICdwMjI0JyxcbiAgICBieXRlTGVuZ3RoOiAyOFxuICB9LFxuICBwcmltZTI1NnYxOiB7XG4gICAgbmFtZTogJ3AyNTYnLFxuICAgIGJ5dGVMZW5ndGg6IDMyXG4gIH0sXG4gIHByaW1lMTkydjE6IHtcbiAgICBuYW1lOiAncDE5MicsXG4gICAgYnl0ZUxlbmd0aDogMjRcbiAgfSxcbiAgZWQyNTUxOToge1xuICAgIG5hbWU6ICdlZDI1NTE5JyxcbiAgICBieXRlTGVuZ3RoOiAzMlxuICB9LFxuICBzZWNwMzg0cjE6IHtcbiAgICBuYW1lOiAncDM4NCcsXG4gICAgYnl0ZUxlbmd0aDogNDhcbiAgfSxcbiAgc2VjcDUyMXIxOiB7XG4gICAgbmFtZTogJ3A1MjEnLFxuICAgIGJ5dGVMZW5ndGg6IDY2XG4gIH1cbn1cblxuYWxpYXNlcy5wMjI0ID0gYWxpYXNlcy5zZWNwMjI0cjFcbmFsaWFzZXMucDI1NiA9IGFsaWFzZXMuc2VjcDI1NnIxID0gYWxpYXNlcy5wcmltZTI1NnYxXG5hbGlhc2VzLnAxOTIgPSBhbGlhc2VzLnNlY3AxOTJyMSA9IGFsaWFzZXMucHJpbWUxOTJ2MVxuYWxpYXNlcy5wMzg0ID0gYWxpYXNlcy5zZWNwMzg0cjFcbmFsaWFzZXMucDUyMSA9IGFsaWFzZXMuc2VjcDUyMXIxXG5cbmZ1bmN0aW9uIEVDREggKGN1cnZlKSB7XG4gIHRoaXMuY3VydmVUeXBlID0gYWxpYXNlc1tjdXJ2ZV1cbiAgaWYgKCF0aGlzLmN1cnZlVHlwZSkge1xuICAgIHRoaXMuY3VydmVUeXBlID0ge1xuICAgICAgbmFtZTogY3VydmVcbiAgICB9XG4gIH1cbiAgdGhpcy5jdXJ2ZSA9IG5ldyBlbGxpcHRpYy5lYyh0aGlzLmN1cnZlVHlwZS5uYW1lKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5ldy1jYXBcbiAgdGhpcy5rZXlzID0gdm9pZCAwXG59XG5cbkVDREgucHJvdG90eXBlLmdlbmVyYXRlS2V5cyA9IGZ1bmN0aW9uIChlbmMsIGZvcm1hdCkge1xuICB0aGlzLmtleXMgPSB0aGlzLmN1cnZlLmdlbktleVBhaXIoKVxuICByZXR1cm4gdGhpcy5nZXRQdWJsaWNLZXkoZW5jLCBmb3JtYXQpXG59XG5cbkVDREgucHJvdG90eXBlLmNvbXB1dGVTZWNyZXQgPSBmdW5jdGlvbiAob3RoZXIsIGluZW5jLCBlbmMpIHtcbiAgaW5lbmMgPSBpbmVuYyB8fCAndXRmOCdcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIob3RoZXIpKSB7XG4gICAgb3RoZXIgPSBuZXcgQnVmZmVyKG90aGVyLCBpbmVuYylcbiAgfVxuICB2YXIgb3RoZXJQdWIgPSB0aGlzLmN1cnZlLmtleUZyb21QdWJsaWMob3RoZXIpLmdldFB1YmxpYygpXG4gIHZhciBvdXQgPSBvdGhlclB1Yi5tdWwodGhpcy5rZXlzLmdldFByaXZhdGUoKSkuZ2V0WCgpXG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZShvdXQsIGVuYywgdGhpcy5jdXJ2ZVR5cGUuYnl0ZUxlbmd0aClcbn1cblxuRUNESC5wcm90b3R5cGUuZ2V0UHVibGljS2V5ID0gZnVuY3Rpb24gKGVuYywgZm9ybWF0KSB7XG4gIHZhciBrZXkgPSB0aGlzLmtleXMuZ2V0UHVibGljKGZvcm1hdCA9PT0gJ2NvbXByZXNzZWQnLCB0cnVlKVxuICBpZiAoZm9ybWF0ID09PSAnaHlicmlkJykge1xuICAgIGlmIChrZXlba2V5Lmxlbmd0aCAtIDFdICUgMikge1xuICAgICAga2V5WzBdID0gN1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlbMF0gPSA2XG4gICAgfVxuICB9XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZShrZXksIGVuYylcbn1cblxuRUNESC5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleSA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMua2V5cy5nZXRQcml2YXRlKCksIGVuYylcbn1cblxuRUNESC5wcm90b3R5cGUuc2V0UHVibGljS2V5ID0gZnVuY3Rpb24gKHB1YiwgZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAndXRmOCdcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHViKSkge1xuICAgIHB1YiA9IG5ldyBCdWZmZXIocHViLCBlbmMpXG4gIH1cbiAgdGhpcy5rZXlzLl9pbXBvcnRQdWJsaWMocHViKVxuICByZXR1cm4gdGhpc1xufVxuXG5FQ0RILnByb3RvdHlwZS5zZXRQcml2YXRlS2V5ID0gZnVuY3Rpb24gKHByaXYsIGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ3V0ZjgnXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHByaXYpKSB7XG4gICAgcHJpdiA9IG5ldyBCdWZmZXIocHJpdiwgZW5jKVxuICB9XG5cbiAgdmFyIF9wcml2ID0gbmV3IEJOKHByaXYpXG4gIF9wcml2ID0gX3ByaXYudG9TdHJpbmcoMTYpXG4gIHRoaXMua2V5cyA9IHRoaXMuY3VydmUuZ2VuS2V5UGFpcigpXG4gIHRoaXMua2V5cy5faW1wb3J0UHJpdmF0ZShfcHJpdilcbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gZm9ybWF0UmV0dXJuVmFsdWUgKGJuLCBlbmMsIGxlbikge1xuICBpZiAoIUFycmF5LmlzQXJyYXkoYm4pKSB7XG4gICAgYm4gPSBibi50b0FycmF5KClcbiAgfVxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihibilcbiAgaWYgKGxlbiAmJiBidWYubGVuZ3RoIDwgbGVuKSB7XG4gICAgdmFyIHplcm9zID0gbmV3IEJ1ZmZlcihsZW4gLSBidWYubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICBidWYgPSBCdWZmZXIuY29uY2F0KFt6ZXJvcywgYnVmXSlcbiAgfVxuICBpZiAoIWVuYykge1xuICAgIHJldHVybiBidWZcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVmLnRvU3RyaW5nKGVuYylcbiAgfVxufVxuIiwiKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFV0aWxzXG4gIGZ1bmN0aW9uIGFzc2VydCAodmFsLCBtc2cpIHtcbiAgICBpZiAoIXZhbCkgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xuICB9XG5cbiAgLy8gQ291bGQgdXNlIGBpbmhlcml0c2AgbW9kdWxlLCBidXQgZG9uJ3Qgd2FudCB0byBtb3ZlIGZyb20gc2luZ2xlIGZpbGVcbiAgLy8gYXJjaGl0ZWN0dXJlIHlldC5cbiAgZnVuY3Rpb24gaW5oZXJpdHMgKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGU7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKTtcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gIH1cblxuICAvLyBCTlxuXG4gIGZ1bmN0aW9uIEJOIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChCTi5pc0JOKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgdGhpcy53b3JkcyA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgLy8gUmVkdWN0aW9uIGNvbnRleHRcbiAgICB0aGlzLnJlZCA9IG51bGw7XG5cbiAgICBpZiAobnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gJ2xlJyB8fCBiYXNlID09PSAnYmUnKSB7XG4gICAgICAgIGVuZGlhbiA9IGJhc2U7XG4gICAgICAgIGJhc2UgPSAxMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdChudW1iZXIgfHwgMCwgYmFzZSB8fCAxMCwgZW5kaWFuIHx8ICdiZScpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJOO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQk4gPSBCTjtcbiAgfVxuXG4gIEJOLkJOID0gQk47XG4gIEJOLndvcmRTaXplID0gMjY7XG5cbiAgdmFyIEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5CdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBCdWZmZXIgPSB3aW5kb3cuQnVmZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gIH1cblxuICBCTi5pc0JOID0gZnVuY3Rpb24gaXNCTiAobnVtKSB7XG4gICAgaWYgKG51bSBpbnN0YW5jZW9mIEJOKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVtICE9PSBudWxsICYmIHR5cGVvZiBudW0gPT09ICdvYmplY3QnICYmXG4gICAgICBudW0uY29uc3RydWN0b3Iud29yZFNpemUgPT09IEJOLndvcmRTaXplICYmIEFycmF5LmlzQXJyYXkobnVtLndvcmRzKTtcbiAgfTtcblxuICBCTi5tYXggPSBmdW5jdGlvbiBtYXggKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA+IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5taW4gPSBmdW5jdGlvbiBtaW4gKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA8IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXROdW1iZXIobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXRBcnJheShudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBiYXNlID0gMTY7XG4gICAgfVxuICAgIGFzc2VydChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KTtcblxuICAgIG51bWJlciA9IG51bWJlci50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICBzdGFydCsrO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0IDwgbnVtYmVyLmxlbmd0aCkge1xuICAgICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICAgIHRoaXMuX3BhcnNlSGV4KG51bWJlciwgc3RhcnQsIGVuZGlhbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wYXJzZUJhc2UobnVtYmVyLCBiYXNlLCBzdGFydCk7XG4gICAgICAgIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgICAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0TnVtYmVyID0gZnVuY3Rpb24gX2luaXROdW1iZXIgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDB4NDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgbnVtYmVyICYgMHgzZmZmZmZmIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPCAweDEwMDAwMDAwMDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobnVtYmVyIDwgMHgyMDAwMDAwMDAwMDAwMCk7IC8vIDIgXiA1MyAodW5zYWZlKVxuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZixcbiAgICAgICAgMVxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICAvLyBSZXZlcnNlIHRoZSBieXRlc1xuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXRBcnJheSA9IGZ1bmN0aW9uIF9pbml0QXJyYXkgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgLy8gUGVyaGFwcyBhIFVpbnQ4QXJyYXlcbiAgICBhc3NlcnQodHlwZW9mIG51bWJlci5sZW5ndGggPT09ICdudW1iZXInKTtcbiAgICBpZiAobnVtYmVyLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbChudW1iZXIubGVuZ3RoIC8gMyk7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMSwgaiA9IDA7IGkgPj0gMDsgaSAtPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgLSAxXSA8PCA4KSB8IChudW1iZXJbaSAtIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpICsgMV0gPDwgOCkgfCAobnVtYmVyW2kgKyAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUhleDRCaXRzIChzdHJpbmcsIGluZGV4KSB7XG4gICAgdmFyIGMgPSBzdHJpbmcuY2hhckNvZGVBdChpbmRleCk7XG4gICAgLy8gJ0EnIC0gJ0YnXG4gICAgaWYgKGMgPj0gNjUgJiYgYyA8PSA3MCkge1xuICAgICAgcmV0dXJuIGMgLSA1NTtcbiAgICAvLyAnYScgLSAnZidcbiAgICB9IGVsc2UgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMDIpIHtcbiAgICAgIHJldHVybiBjIC0gODc7XG4gICAgLy8gJzAnIC0gJzknXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoYyAtIDQ4KSAmIDB4ZjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUhleEJ5dGUgKHN0cmluZywgbG93ZXJCb3VuZCwgaW5kZXgpIHtcbiAgICB2YXIgciA9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCk7XG4gICAgaWYgKGluZGV4IC0gMSA+PSBsb3dlckJvdW5kKSB7XG4gICAgICByIHw9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCAtIDEpIDw8IDQ7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUhleCA9IGZ1bmN0aW9uIF9wYXJzZUhleCAobnVtYmVyLCBzdGFydCwgZW5kaWFuKSB7XG4gICAgLy8gQ3JlYXRlIHBvc3NpYmx5IGJpZ2dlciBhcnJheSB0byBlbnN1cmUgdGhhdCBpdCBmaXRzIHRoZSBudW1iZXJcbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbCgobnVtYmVyLmxlbmd0aCAtIHN0YXJ0KSAvIDYpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgLy8gMjQtYml0cyBjaHVua3NcbiAgICB2YXIgb2ZmID0gMDtcbiAgICB2YXIgaiA9IDA7XG5cbiAgICB2YXIgdztcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMTsgaSA+PSBzdGFydDsgaSAtPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhcnNlTGVuZ3RoID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgICAgZm9yIChpID0gcGFyc2VMZW5ndGggJSAyID09PSAwID8gc3RhcnQgKyAxIDogc3RhcnQ7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIHIgKz0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICByICs9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUJhc2UgPSBmdW5jdGlvbiBfcGFyc2VCYXNlIChudW1iZXIsIGJhc2UsIHN0YXJ0KSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBhcyB6ZXJvXG4gICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA+IDEgJiYgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX25vcm1TaWduID0gZnVuY3Rpb24gX25vcm1TaWduICgpIHtcbiAgICAvLyAtMCA9IDBcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH07XG5cbiAgLypcblxuICB2YXIgemVyb3MgPSBbXTtcbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXTtcbiAgdmFyIGdyb3VwQmFzZXMgPSBbXTtcblxuICB2YXIgcyA9ICcnO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgQk4ud29yZFNpemUpIHtcbiAgICB6ZXJvc1tpXSA9IHM7XG4gICAgcyArPSAnMCc7XG4gIH1cbiAgZ3JvdXBTaXplc1swXSA9IDA7XG4gIGdyb3VwU2l6ZXNbMV0gPSAwO1xuICBncm91cEJhc2VzWzBdID0gMDtcbiAgZ3JvdXBCYXNlc1sxXSA9IDA7XG4gIHZhciBiYXNlID0gMiAtIDE7XG4gIHdoaWxlICgrK2Jhc2UgPCAzNiArIDEpIHtcbiAgICB2YXIgZ3JvdXBTaXplID0gMDtcbiAgICB2YXIgZ3JvdXBCYXNlID0gMTtcbiAgICB3aGlsZSAoZ3JvdXBCYXNlIDwgKDEgPDwgQk4ud29yZFNpemUpIC8gYmFzZSkge1xuICAgICAgZ3JvdXBCYXNlICo9IGJhc2U7XG4gICAgICBncm91cFNpemUgKz0gMTtcbiAgICB9XG4gICAgZ3JvdXBTaXplc1tiYXNlXSA9IGdyb3VwU2l6ZTtcbiAgICBncm91cEJhc2VzW2Jhc2VdID0gZ3JvdXBCYXNlO1xuICB9XG5cbiAgKi9cblxuICB2YXIgemVyb3MgPSBbXG4gICAgJycsXG4gICAgJzAnLFxuICAgICcwMCcsXG4gICAgJzAwMCcsXG4gICAgJzAwMDAnLFxuICAgICcwMDAwMCcsXG4gICAgJzAwMDAwMCcsXG4gICAgJzAwMDAwMDAnLFxuICAgICcwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gIF07XG5cbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXG4gICAgMCwgMCxcbiAgICAyNSwgMTYsIDEyLCAxMSwgMTAsIDksIDgsXG4gICAgOCwgNywgNywgNywgNywgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNVxuICBdO1xuXG4gIHZhciBncm91cEJhc2VzID0gW1xuICAgIDAsIDAsXG4gICAgMzM1NTQ0MzIsIDQzMDQ2NzIxLCAxNjc3NzIxNiwgNDg4MjgxMjUsIDYwNDY2MTc2LCA0MDM1MzYwNywgMTY3NzcyMTYsXG4gICAgNDMwNDY3MjEsIDEwMDAwMDAwLCAxOTQ4NzE3MSwgMzU4MzE4MDgsIDYyNzQ4NTE3LCA3NTI5NTM2LCAxMTM5MDYyNSxcbiAgICAxNjc3NzIxNiwgMjQxMzc1NjksIDM0MDEyMjI0LCA0NzA0NTg4MSwgNjQwMDAwMDAsIDQwODQxMDEsIDUxNTM2MzIsXG4gICAgNjQzNjM0MywgNzk2MjYyNCwgOTc2NTYyNSwgMTE4ODEzNzYsIDE0MzQ4OTA3LCAxNzIxMDM2OCwgMjA1MTExNDksXG4gICAgMjQzMDAwMDAsIDI4NjI5MTUxLCAzMzU1NDQzMiwgMzkxMzUzOTMsIDQ1NDM1NDI0LCA1MjUyMTg3NSwgNjA0NjYxNzZcbiAgXTtcblxuICBCTi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYmFzZSwgcGFkZGluZykge1xuICAgIGJhc2UgPSBiYXNlIHx8IDEwO1xuICAgIHBhZGRpbmcgPSBwYWRkaW5nIHwgMCB8fCAxO1xuXG4gICAgdmFyIG91dDtcbiAgICBpZiAoYmFzZSA9PT0gMTYgfHwgYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIG9mZiA9IDA7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgICAgdmFyIHdvcmQgPSAoKCh3IDw8IG9mZikgfCBjYXJyeSkgJiAweGZmZmZmZikudG9TdHJpbmcoMTYpO1xuICAgICAgICBjYXJyeSA9ICh3ID4+PiAoMjQgLSBvZmYpKSAmIDB4ZmZmZmZmO1xuICAgICAgICBpZiAoY2FycnkgIT09IDAgfHwgaSAhPT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbNiAtIHdvcmQubGVuZ3RoXSArIHdvcmQgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gd29yZCArIG91dDtcbiAgICAgICAgfVxuICAgICAgICBvZmYgKz0gMjtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgICBvdXQgPSBjYXJyeS50b1N0cmluZygxNikgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNikge1xuICAgICAgLy8gdmFyIGdyb3VwU2l6ZSA9IE1hdGguZmxvb3IoQk4ud29yZFNpemUgKiBNYXRoLkxOMiAvIE1hdGgubG9nKGJhc2UpKTtcbiAgICAgIHZhciBncm91cFNpemUgPSBncm91cFNpemVzW2Jhc2VdO1xuICAgICAgLy8gdmFyIGdyb3VwQmFzZSA9IE1hdGgucG93KGJhc2UsIGdyb3VwU2l6ZSk7XG4gICAgICB2YXIgZ3JvdXBCYXNlID0gZ3JvdXBCYXNlc1tiYXNlXTtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIGMgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjLm5lZ2F0aXZlID0gMDtcbiAgICAgIHdoaWxlICghYy5pc1plcm8oKSkge1xuICAgICAgICB2YXIgciA9IGMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgICB2YXIgbGl0dGxlRW5kaWFuID0gZW5kaWFuID09PSAnbGUnO1xuICAgIHZhciByZXMgPSBuZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7XG5cbiAgICB2YXIgYiwgaTtcbiAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKTtcbiAgICBpZiAoIWxpdHRsZUVuZGlhbikge1xuICAgICAgLy8gQXNzdW1lIGJpZy1lbmRpYW5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXFMZW5ndGggLSBieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW3JlcUxlbmd0aCAtIGkgLSAxXSA9IGI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tpXSA9IGI7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBpIDwgcmVxTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSAmICgxIDw8IHdiaXQpKSA+Pj4gd2JpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdztcbiAgfVxuXG4gIC8vIE51bWJlciBvZiB0cmFpbGluZyB6ZXJvIGJpdHNcbiAgQk4ucHJvdG90eXBlLnplcm9CaXRzID0gZnVuY3Rpb24gemVyb0JpdHMgKCkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gMDtcblxuICAgIHZhciByID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBiID0gdGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7XG4gICAgICByICs9IGI7XG4gICAgICBpZiAoYiAhPT0gMjYpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIGJ5dGVMZW5ndGggKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKSAvIDgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1R3b3MgPSBmdW5jdGlvbiB0b1R3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVR3b3MgPSBmdW5jdGlvbiBmcm9tVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy50ZXN0bih3aWR0aCAtIDEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RuKHdpZHRoKS5pYWRkbigxKS5pbmVnKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gaXNOZWcgKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlICE9PSAwO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluZWcgPSBmdW5jdGlvbiBpbmVnICgpIHtcbiAgICBpZiAoIXRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVvciA9IGZ1bmN0aW9uIGl1b3IgKG51bSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSB8IG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXhvciA9IGZ1bmN0aW9uIGl4b3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1eG9yKG51bSk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5peG9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51eG9yID0gZnVuY3Rpb24gdXhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKTtcbiAgfTtcblxuICAvLyBOb3QgYGB0aGlzYGAgd2l0aCBgYHdpZHRoYGAgYml0d2lkdGhcbiAgQk4ucHJvdG90eXBlLmlub3RuID0gZnVuY3Rpb24gaW5vdG4gKHdpZHRoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgJiYgd2lkdGggPj0gMCk7XG5cbiAgICB2YXIgYnl0ZXNOZWVkZWQgPSBNYXRoLmNlaWwod2lkdGggLyAyNikgfCAwO1xuICAgIHZhciBiaXRzTGVmdCA9IHdpZHRoICUgMjY7XG5cbiAgICAvLyBFeHRlbmQgdGhlIGJ1ZmZlciB3aXRoIGxlYWRpbmcgemVyb2VzXG4gICAgdGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtcblxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIGJ5dGVzTmVlZGVkLS07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRlIHdvcmRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlc05lZWRlZDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRoZSByZXNpZHVlXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgKDB4M2ZmZmZmZiA+PiAoMjYgLSBiaXRzTGVmdCkpO1xuICAgIH1cblxuICAgIC8vIEFuZCByZW1vdmUgbGVhZGluZyB6ZXJvZXNcbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gc21hbGxNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIHZhciBsZW4gPSAoc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoKSB8IDA7XG4gICAgb3V0Lmxlbmd0aCA9IGxlbjtcbiAgICBsZW4gPSAobGVuIC0gMSkgfCAwO1xuXG4gICAgLy8gUGVlbCBvbmUgaXRlcmF0aW9uIChjb21waWxlciBjYW4ndCBkbyBpdCwgYmVjYXVzZSBvZiBjb2RlIGNvbXBsZXhpdHkpXG4gICAgdmFyIGEgPSBzZWxmLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgYiA9IG51bS53b3Jkc1swXSB8IDA7XG4gICAgdmFyIHIgPSBhICogYjtcblxuICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgdmFyIGNhcnJ5ID0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICBvdXQud29yZHNbMF0gPSBsbztcblxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gY2FycnkgPj4+IDI2O1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSAoayAtIGopIHwgMDtcbiAgICAgICAgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgciA9IGEgKiBiICsgcndvcmQ7XG4gICAgICAgIG5jYXJyeSArPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgICByd29yZCA9IHIgJiAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZCB8IDA7XG4gICAgICBjYXJyeSA9IG5jYXJyeSB8IDA7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2FycnkgfCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNobG4gPSBmdW5jdGlvbiBpc2hsbiAoYml0cykge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHQgaW4tcGxhY2VcbiAgLy8gTk9URTogYGhpbnRgIGlzIGEgbG93ZXN0IGJpdCBiZWZvcmUgdHJhaWxpbmcgemVyb2VzXG4gIC8vIE5PVEU6IGlmIGBleHRlbmRlZGAgaXMgcHJlc2VudCAtIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggZGVzdHJveWVkIGJpdHNcbiAgQk4ucHJvdG90eXBlLml1c2hybiA9IGZ1bmN0aW9uIGl1c2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIGg7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIGggPSAoaGludCAtIChoaW50ICUgMjYpKSAvIDI2O1xuICAgIH0gZWxzZSB7XG4gICAgICBoID0gMDtcbiAgICB9XG5cbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IE1hdGgubWluKChiaXRzIC0gcikgLyAyNiwgdGhpcy5sZW5ndGgpO1xuICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgIHZhciBtYXNrZWRXb3JkcyA9IGV4dGVuZGVkO1xuXG4gICAgaCAtPSBzO1xuICAgIGggPSBNYXRoLm1heCgwLCBoKTtcblxuICAgIC8vIEV4dGVuZGVkIG1vZGUsIGNvcHkgbWFza2VkIHBhcnRcbiAgICBpZiAobWFza2VkV29yZHMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIG1hc2tlZFdvcmRzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICAgIG1hc2tlZFdvcmRzLmxlbmd0aCA9IHM7XG4gICAgfVxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIC8vIE5vLW9wLCB3ZSBzaG91bGQgbm90IG1vdmUgYW55dGhpbmcgYXQgYWxsXG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IHMpIHtcbiAgICAgIHRoaXMubGVuZ3RoIC09IHM7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpICsgc107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDAgJiYgKGNhcnJ5ICE9PSAwIHx8IGkgPj0gaCk7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAoY2FycnkgPDwgKDI2IC0gcikpIHwgKHdvcmQgPj4+IHIpO1xuICAgICAgY2FycnkgPSB3b3JkICYgbWFzaztcbiAgICB9XG5cbiAgICAvLyBQdXNoIGNhcnJpZWQgYml0cyBhcyBhIG1hc2tcbiAgICBpZiAobWFza2VkV29yZHMgJiYgY2FycnkgIT09IDApIHtcbiAgICAgIG1hc2tlZFdvcmRzLndvcmRzW21hc2tlZFdvcmRzLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyLnN0cmlwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NCBpbnN0YW5jZVxuICAgICAgICByLnN0cmlwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByIGlzIEJOIHY1IGluc3RhbmNlXG4gICAgICAgIHIuX3N0cmlwKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0KSB7XG4gICAgaW5wdXQuaXVzaHJuKHRoaXMubiwgMCwgb3V0KTtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIHJldHVybiBudW0uaW11bCh0aGlzLmspO1xuICB9O1xuXG4gIGZ1bmN0aW9uIEsyNTYgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdrMjU2JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZicpO1xuICB9XG4gIGluaGVyaXRzKEsyNTYsIE1QcmltZSk7XG5cbiAgSzI1Ni5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dHB1dCkge1xuICAgIC8vIDI1NiA9IDkgKiAyNiArIDIyXG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZjtcblxuICAgIHZhciBvdXRMZW4gPSBNYXRoLm1pbihpbnB1dC5sZW5ndGgsIDkpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0TGVuOyBpKyspIHtcbiAgICAgIG91dHB1dC53b3Jkc1tpXSA9IGlucHV0LndvcmRzW2ldO1xuICAgIH1cbiAgICBvdXRwdXQubGVuZ3RoID0gb3V0TGVuO1xuXG4gICAgaWYgKGlucHV0Lmxlbmd0aCA8PSA5KSB7XG4gICAgICBpbnB1dC53b3Jkc1swXSA9IDA7XG4gICAgICBpbnB1dC5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNoaWZ0IGJ5IDkgbGltYnNcbiAgICB2YXIgcHJldiA9IGlucHV0LndvcmRzWzldO1xuICAgIG91dHB1dC53b3Jkc1tvdXRwdXQubGVuZ3RoKytdID0gcHJldiAmIG1hc2s7XG5cbiAgICBmb3IgKGkgPSAxMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmV4dCA9IGlucHV0LndvcmRzW2ldIHwgMDtcbiAgICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSAoKG5leHQgJiBtYXNrKSA8PCA0KSB8IChwcmV2ID4+PiAyMik7XG4gICAgICBwcmV2ID0gbmV4dDtcbiAgICB9XG4gICAgcHJldiA+Pj49IDIyO1xuICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSBwcmV2O1xuICAgIGlmIChwcmV2ID09PSAwICYmIGlucHV0Lmxlbmd0aCA+IDEwKSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gMTA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSA5O1xuICAgIH1cbiAgfTtcblxuICBLMjU2LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxMDAwMDAzZDEgPSBbIDB4NDAsIDB4M2QxIF1cbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aF0gPSAwO1xuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoICsgMV0gPSAwO1xuICAgIG51bS5sZW5ndGggKz0gMjtcblxuICAgIC8vIGJvdW5kZWQgYXQ6IDB4NDAgKiAweDNmZmZmZmYgKyAweDNkMCA9IDB4MTAwMDAwMzkwXG4gICAgdmFyIGxvID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSBudW0ud29yZHNbaV0gfCAwO1xuICAgICAgbG8gKz0gdyAqIDB4M2QxO1xuICAgICAgbnVtLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICBsbyA9IHcgKiAweDQwICsgKChsbyAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICB9XG5cbiAgICAvLyBGYXN0IGxlbmd0aCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIGZ1bmN0aW9uIFAyMjQgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMjI0JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScpO1xuICB9XG4gIGluaGVyaXRzKFAyMjQsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDE5MiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AxOTInLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDE5MiwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMjU1MTkgKCkge1xuICAgIC8vIDIgXiAyNTUgLSAxOVxuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICcyNTUxOScsXG4gICAgICAnN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCcpO1xuICB9XG4gIGluaGVyaXRzKFAyNTUxOSwgTVByaW1lKTtcblxuICBQMjU1MTkucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEzXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGhpID0gKG51bS53b3Jkc1tpXSB8IDApICogMHgxMyArIGNhcnJ5O1xuICAgICAgdmFyIGxvID0gaGkgJiAweDNmZmZmZmY7XG4gICAgICBoaSA+Pj49IDI2O1xuXG4gICAgICBudW0ud29yZHNbaV0gPSBsbztcbiAgICAgIGNhcnJ5ID0gaGk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgbnVtLndvcmRzW251bS5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICAvLyBFeHBvcnRlZCBtb3N0bHkgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHVzZSBwbGFpbiBuYW1lIGluc3RlYWRcbiAgQk4uX3ByaW1lID0gZnVuY3Rpb24gcHJpbWUgKG5hbWUpIHtcbiAgICAvLyBDYWNoZWQgdmVyc2lvbiBvZiBwcmltZVxuICAgIGlmIChwcmltZXNbbmFtZV0pIHJldHVybiBwcmltZXNbbmFtZV07XG5cbiAgICB2YXIgcHJpbWU7XG4gICAgaWYgKG5hbWUgPT09ICdrMjU2Jykge1xuICAgICAgcHJpbWUgPSBuZXcgSzI1NigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyMjQnKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjI0KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDE5MicpIHtcbiAgICAgIHByaW1lID0gbmV3IFAxOTIoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjU1MTknKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjU1MTkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByaW1lICcgKyBuYW1lKTtcbiAgICB9XG4gICAgcHJpbWVzW25hbWVdID0gcHJpbWU7XG5cbiAgICByZXR1cm4gcHJpbWU7XG4gIH07XG5cbiAgLy9cbiAgLy8gQmFzZSByZWR1Y3Rpb24gZW5naW5lXG4gIC8vXG4gIGZ1bmN0aW9uIFJlZCAobSkge1xuICAgIGlmICh0eXBlb2YgbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBwcmltZSA9IEJOLl9wcmltZShtKTtcbiAgICAgIHRoaXMubSA9IHByaW1lLnA7XG4gICAgICB0aGlzLnByaW1lID0gcHJpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChtLmd0bigxKSwgJ21vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMScpO1xuICAgICAgdGhpcy5tID0gbTtcbiAgICAgIHRoaXMucHJpbWUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTEgPSBmdW5jdGlvbiBfdmVyaWZ5MSAoYSkge1xuICAgIGFzc2VydChhLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQsICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MiA9IGZ1bmN0aW9uIF92ZXJpZnkyIChhLCBiKSB7XG4gICAgYXNzZXJ0KChhLm5lZ2F0aXZlIHwgYi5uZWdhdGl2ZSkgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCAmJiBhLnJlZCA9PT0gYi5yZWQsXG4gICAgICAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW1vZCA9IGZ1bmN0aW9uIGltb2QgKGEpIHtcbiAgICBpZiAodGhpcy5wcmltZSkgcmV0dXJuIHRoaXMucHJpbWUuaXJlZHVjZShhKS5fZm9yY2VSZWQodGhpcyk7XG4gICAgcmV0dXJuIGEudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm0uc3ViKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5hZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlhZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLnN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlzdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNobCA9IGZ1bmN0aW9uIHNobCAoYSwgbnVtKSB7XG4gICAgdGhpcy5fdmVyaWZ5MShhKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEudXNobG4obnVtKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLmltdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEubXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bChhLCBhLmNsb25lKCkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKGEsIGEpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FydCA9IGZ1bmN0aW9uIHNxcnQgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciBtb2QzID0gdGhpcy5tLmFuZGxuKDMpO1xuICAgIGFzc2VydChtb2QzICUgMiA9PT0gMSk7XG5cbiAgICAvLyBGYXN0IGNhc2VcbiAgICBpZiAobW9kMyA9PT0gMykge1xuICAgICAgdmFyIHBvdyA9IHRoaXMubS5hZGQobmV3IEJOKDEpKS5pdXNocm4oMik7XG4gICAgICByZXR1cm4gdGhpcy5wb3coYSwgcG93KTtcbiAgICB9XG5cbiAgICAvLyBUb25lbGxpLVNoYW5rcyBhbGdvcml0aG0gKFRvdGFsbHkgdW5vcHRpbWl6ZWQgYW5kIHNsb3cpXG4gICAgLy9cbiAgICAvLyBGaW5kIFEgYW5kIFMsIHRoYXQgUSAqIDIgXiBTID0gKFAgLSAxKVxuICAgIHZhciBxID0gdGhpcy5tLnN1Ym4oMSk7XG4gICAgdmFyIHMgPSAwO1xuICAgIHdoaWxlICghcS5pc1plcm8oKSAmJiBxLmFuZGxuKDEpID09PSAwKSB7XG4gICAgICBzKys7XG4gICAgICBxLml1c2hybigxKTtcbiAgICB9XG4gICAgYXNzZXJ0KCFxLmlzWmVybygpKTtcblxuICAgIHZhciBvbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgdmFyIG5PbmUgPSBvbmUucmVkTmVnKCk7XG5cbiAgICAvLyBGaW5kIHF1YWRyYXRpYyBub24tcmVzaWR1ZVxuICAgIC8vIE5PVEU6IE1heCBpcyBzdWNoIGJlY2F1c2Ugb2YgZ2VuZXJhbGl6ZWQgUmllbWFubiBoeXBvdGhlc2lzLlxuICAgIHZhciBscG93ID0gdGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpO1xuICAgIHZhciB6ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIHogPSBuZXcgQk4oMiAqIHogKiB6KS50b1JlZCh0aGlzKTtcblxuICAgIHdoaWxlICh0aGlzLnBvdyh6LCBscG93KS5jbXAobk9uZSkgIT09IDApIHtcbiAgICAgIHoucmVkSUFkZChuT25lKTtcbiAgICB9XG5cbiAgICB2YXIgYyA9IHRoaXMucG93KHosIHEpO1xuICAgIHZhciByID0gdGhpcy5wb3coYSwgcS5hZGRuKDEpLml1c2hybigxKSk7XG4gICAgdmFyIHQgPSB0aGlzLnBvdyhhLCBxKTtcbiAgICB2YXIgbSA9IHM7XG4gICAgd2hpbGUgKHQuY21wKG9uZSkgIT09IDApIHtcbiAgICAgIHZhciB0bXAgPSB0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IHRtcC5jbXAob25lKSAhPT0gMDsgaSsrKSB7XG4gICAgICAgIHRtcCA9IHRtcC5yZWRTcXIoKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydChpIDwgbSk7XG4gICAgICB2YXIgYiA9IHRoaXMucG93KGMsIG5ldyBCTigxKS5pdXNobG4obSAtIGkgLSAxKSk7XG5cbiAgICAgIHIgPSByLnJlZE11bChiKTtcbiAgICAgIGMgPSBiLnJlZFNxcigpO1xuICAgICAgdCA9IHQucmVkTXVsKGMpO1xuICAgICAgbSA9IGk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIHZhciBpbnYgPSBhLl9pbnZtcCh0aGlzLm0pO1xuICAgIGlmIChpbnYubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGludi5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludikucmVkTmVnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KTtcbiAgICB9XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKGEsIG51bSkge1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgaWYgKG51bS5jbXBuKDEpID09PSAwKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIHdpbmRvd1NpemUgPSA0O1xuICAgIHZhciB3bmQgPSBuZXcgQXJyYXkoMSA8PCB3aW5kb3dTaXplKTtcbiAgICB3bmRbMF0gPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgd25kWzFdID0gYTtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IHduZC5sZW5ndGg7IGkrKykge1xuICAgICAgd25kW2ldID0gdGhpcy5tdWwod25kW2kgLSAxXSwgYSk7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IHduZFswXTtcbiAgICB2YXIgY3VycmVudCA9IDA7XG4gICAgdmFyIGN1cnJlbnRMZW4gPSAwO1xuICAgIHZhciBzdGFydCA9IG51bS5iaXRMZW5ndGgoKSAlIDI2O1xuICAgIGlmIChzdGFydCA9PT0gMCkge1xuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSBudW0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gbnVtLndvcmRzW2ldO1xuICAgICAgZm9yICh2YXIgaiA9IHN0YXJ0IC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgdmFyIGJpdCA9ICh3b3JkID4+IGopICYgMTtcbiAgICAgICAgaWYgKHJlcyAhPT0gd25kWzBdKSB7XG4gICAgICAgICAgcmVzID0gdGhpcy5zcXIocmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXQgPT09IDAgJiYgY3VycmVudCA9PT0gMCkge1xuICAgICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudCA8PD0gMTtcbiAgICAgICAgY3VycmVudCB8PSBiaXQ7XG4gICAgICAgIGN1cnJlbnRMZW4rKztcbiAgICAgICAgaWYgKGN1cnJlbnRMZW4gIT09IHdpbmRvd1NpemUgJiYgKGkgIT09IDAgfHwgaiAhPT0gMCkpIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHRoaXMubXVsKHJlcywgd25kW2N1cnJlbnRdKTtcbiAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgIGN1cnJlbnQgPSAwO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICB2YXIgciA9IG51bS51bW9kKHRoaXMubSk7XG5cbiAgICByZXR1cm4gciA9PT0gbnVtID8gci5jbG9uZSgpIDogcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByZXMgPSBudW0uY2xvbmUoKTtcbiAgICByZXMucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vXG4gIC8vIE1vbnRnb21lcnkgbWV0aG9kIGVuZ2luZVxuICAvL1xuXG4gIEJOLm1vbnQgPSBmdW5jdGlvbiBtb250IChudW0pIHtcbiAgICByZXR1cm4gbmV3IE1vbnQobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBNb250IChtKSB7XG4gICAgUmVkLmNhbGwodGhpcywgbSk7XG5cbiAgICB0aGlzLnNoaWZ0ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIGlmICh0aGlzLnNoaWZ0ICUgMjYgIT09IDApIHtcbiAgICAgIHRoaXMuc2hpZnQgKz0gMjYgLSAodGhpcy5zaGlmdCAlIDI2KTtcbiAgICB9XG5cbiAgICB0aGlzLnIgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpO1xuICAgIHRoaXMucjIgPSB0aGlzLmltb2QodGhpcy5yLnNxcigpKTtcbiAgICB0aGlzLnJpbnYgPSB0aGlzLnIuX2ludm1wKHRoaXMubSk7XG5cbiAgICB0aGlzLm1pbnYgPSB0aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSk7XG4gICAgdGhpcy5taW52ID0gdGhpcy5taW52LnVtb2QodGhpcy5yKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLnIuc3ViKHRoaXMubWludik7XG4gIH1cbiAgaW5oZXJpdHMoTW9udCwgUmVkKTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmltb2QobnVtLnVzaGxuKHRoaXMuc2hpZnQpKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgciA9IHRoaXMuaW1vZChudW0ubXVsKHRoaXMucmludikpO1xuICAgIHIucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHtcbiAgICAgIGEud29yZHNbMF0gPSAwO1xuICAgICAgYS5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgdmFyIHQgPSBhLmltdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG5cbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMCkuX2ZvcmNlUmVkKHRoaXMpO1xuXG4gICAgdmFyIHQgPSBhLm11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgLy8gKEFSKV4tMSAqIFJeMiA9IChBXi0xICogUl4tMSkgKiBSXjIgPSBBXi0xICogUlxuICAgIHZhciByZXMgPSB0aGlzLmltb2QoYS5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpO1xuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xufSkodHlwZW9mIG1vZHVsZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbW9kdWxlLCB0aGlzKTtcbiIsIid1c2Ugc3RyaWN0J1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIE1ENSA9IHJlcXVpcmUoJ21kNS5qcycpXG52YXIgUklQRU1EMTYwID0gcmVxdWlyZSgncmlwZW1kMTYwJylcbnZhciBzaGEgPSByZXF1aXJlKCdzaGEuanMnKVxudmFyIEJhc2UgPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG5cbmZ1bmN0aW9uIEhhc2ggKGhhc2gpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2ggPSBoYXNoXG59XG5cbmluaGVyaXRzKEhhc2gsIEJhc2UpXG5cbkhhc2gucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxufVxuXG5IYXNoLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9oYXNoLmRpZ2VzdCgpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlSGFzaCAoYWxnKSB7XG4gIGFsZyA9IGFsZy50b0xvd2VyQ2FzZSgpXG4gIGlmIChhbGcgPT09ICdtZDUnKSByZXR1cm4gbmV3IE1ENSgpXG4gIGlmIChhbGcgPT09ICdybWQxNjAnIHx8IGFsZyA9PT0gJ3JpcGVtZDE2MCcpIHJldHVybiBuZXcgUklQRU1EMTYwKClcblxuICByZXR1cm4gbmV3IEhhc2goc2hhKGFsZykpXG59XG4iLCJ2YXIgTUQ1ID0gcmVxdWlyZSgnbWQ1LmpzJylcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gIHJldHVybiBuZXcgTUQ1KCkudXBkYXRlKGJ1ZmZlcikuZGlnZXN0KClcbn1cbiIsIid1c2Ugc3RyaWN0J1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIExlZ2FjeSA9IHJlcXVpcmUoJy4vbGVnYWN5JylcbnZhciBCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgbWQ1ID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gvbWQ1JylcbnZhciBSSVBFTUQxNjAgPSByZXF1aXJlKCdyaXBlbWQxNjAnKVxuXG52YXIgc2hhID0gcmVxdWlyZSgnc2hhLmpzJylcblxudmFyIFpFUk9TID0gQnVmZmVyLmFsbG9jKDEyOClcblxuZnVuY3Rpb24gSG1hYyAoYWxnLCBrZXkpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycpIHtcbiAgICBrZXkgPSBCdWZmZXIuZnJvbShrZXkpXG4gIH1cblxuICB2YXIgYmxvY2tzaXplID0gKGFsZyA9PT0gJ3NoYTUxMicgfHwgYWxnID09PSAnc2hhMzg0JykgPyAxMjggOiA2NFxuXG4gIHRoaXMuX2FsZyA9IGFsZ1xuICB0aGlzLl9rZXkgPSBrZXlcbiAgaWYgKGtleS5sZW5ndGggPiBibG9ja3NpemUpIHtcbiAgICB2YXIgaGFzaCA9IGFsZyA9PT0gJ3JtZDE2MCcgPyBuZXcgUklQRU1EMTYwKCkgOiBzaGEoYWxnKVxuICAgIGtleSA9IGhhc2gudXBkYXRlKGtleSkuZGlnZXN0KClcbiAgfSBlbHNlIGlmIChrZXkubGVuZ3RoIDwgYmxvY2tzaXplKSB7XG4gICAga2V5ID0gQnVmZmVyLmNvbmNhdChba2V5LCBaRVJPU10sIGJsb2Nrc2l6ZSlcbiAgfVxuXG4gIHZhciBpcGFkID0gdGhpcy5faXBhZCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja3NpemUpXG4gIHZhciBvcGFkID0gdGhpcy5fb3BhZCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja3NpemUpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja3NpemU7IGkrKykge1xuICAgIGlwYWRbaV0gPSBrZXlbaV0gXiAweDM2XG4gICAgb3BhZFtpXSA9IGtleVtpXSBeIDB4NUNcbiAgfVxuICB0aGlzLl9oYXNoID0gYWxnID09PSAncm1kMTYwJyA/IG5ldyBSSVBFTUQxNjAoKSA6IHNoYShhbGcpXG4gIHRoaXMuX2hhc2gudXBkYXRlKGlwYWQpXG59XG5cbmluaGVyaXRzKEhtYWMsIEJhc2UpXG5cbkhtYWMucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxufVxuXG5IbWFjLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBoID0gdGhpcy5faGFzaC5kaWdlc3QoKVxuICB2YXIgaGFzaCA9IHRoaXMuX2FsZyA9PT0gJ3JtZDE2MCcgPyBuZXcgUklQRU1EMTYwKCkgOiBzaGEodGhpcy5fYWxnKVxuICByZXR1cm4gaGFzaC51cGRhdGUodGhpcy5fb3BhZCkudXBkYXRlKGgpLmRpZ2VzdCgpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlSG1hYyAoYWxnLCBrZXkpIHtcbiAgYWxnID0gYWxnLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFsZyA9PT0gJ3JtZDE2MCcgfHwgYWxnID09PSAncmlwZW1kMTYwJykge1xuICAgIHJldHVybiBuZXcgSG1hYygncm1kMTYwJywga2V5KVxuICB9XG4gIGlmIChhbGcgPT09ICdtZDUnKSB7XG4gICAgcmV0dXJuIG5ldyBMZWdhY3kobWQ1LCBrZXkpXG4gIH1cbiAgcmV0dXJuIG5ldyBIbWFjKGFsZywga2V5KVxufVxuIiwiJ3VzZSBzdHJpY3QnXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIEJhc2UgPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG5cbnZhciBaRVJPUyA9IEJ1ZmZlci5hbGxvYygxMjgpXG52YXIgYmxvY2tzaXplID0gNjRcblxuZnVuY3Rpb24gSG1hYyAoYWxnLCBrZXkpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycpIHtcbiAgICBrZXkgPSBCdWZmZXIuZnJvbShrZXkpXG4gIH1cblxuICB0aGlzLl9hbGcgPSBhbGdcbiAgdGhpcy5fa2V5ID0ga2V5XG5cbiAgaWYgKGtleS5sZW5ndGggPiBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBhbGcoa2V5KVxuICB9IGVsc2UgaWYgKGtleS5sZW5ndGggPCBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBCdWZmZXIuY29uY2F0KFtrZXksIFpFUk9TXSwgYmxvY2tzaXplKVxuICB9XG5cbiAgdmFyIGlwYWQgPSB0aGlzLl9pcGFkID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2Nrc2l6ZSlcbiAgdmFyIG9wYWQgPSB0aGlzLl9vcGFkID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2Nrc2l6ZSlcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGJsb2Nrc2l6ZTsgaSsrKSB7XG4gICAgaXBhZFtpXSA9IGtleVtpXSBeIDB4MzZcbiAgICBvcGFkW2ldID0ga2V5W2ldIF4gMHg1Q1xuICB9XG5cbiAgdGhpcy5faGFzaCA9IFtpcGFkXVxufVxuXG5pbmhlcml0cyhIbWFjLCBCYXNlKVxuXG5IbWFjLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgdGhpcy5faGFzaC5wdXNoKGRhdGEpXG59XG5cbkhtYWMucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGggPSB0aGlzLl9hbGcoQnVmZmVyLmNvbmNhdCh0aGlzLl9oYXNoKSlcbiAgcmV0dXJuIHRoaXMuX2FsZyhCdWZmZXIuY29uY2F0KFt0aGlzLl9vcGFkLCBoXSkpXG59XG5tb2R1bGUuZXhwb3J0cyA9IEhtYWNcbiIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLnJhbmRvbUJ5dGVzID0gZXhwb3J0cy5ybmcgPSBleHBvcnRzLnBzZXVkb1JhbmRvbUJ5dGVzID0gZXhwb3J0cy5wcm5nID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKVxuZXhwb3J0cy5jcmVhdGVIYXNoID0gZXhwb3J0cy5IYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxuZXhwb3J0cy5jcmVhdGVIbWFjID0gZXhwb3J0cy5IbWFjID0gcmVxdWlyZSgnY3JlYXRlLWhtYWMnKVxuXG52YXIgYWxnb3MgPSByZXF1aXJlKCdicm93c2VyaWZ5LXNpZ24vYWxnb3MnKVxudmFyIGFsZ29LZXlzID0gT2JqZWN0LmtleXMoYWxnb3MpXG52YXIgaGFzaGVzID0gWydzaGExJywgJ3NoYTIyNCcsICdzaGEyNTYnLCAnc2hhMzg0JywgJ3NoYTUxMicsICdtZDUnLCAncm1kMTYwJ10uY29uY2F0KGFsZ29LZXlzKVxuZXhwb3J0cy5nZXRIYXNoZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBoYXNoZXNcbn1cblxudmFyIHAgPSByZXF1aXJlKCdwYmtkZjInKVxuZXhwb3J0cy5wYmtkZjIgPSBwLnBia2RmMlxuZXhwb3J0cy5wYmtkZjJTeW5jID0gcC5wYmtkZjJTeW5jXG5cbnZhciBhZXMgPSByZXF1aXJlKCdicm93c2VyaWZ5LWNpcGhlcicpXG5cbmV4cG9ydHMuQ2lwaGVyID0gYWVzLkNpcGhlclxuZXhwb3J0cy5jcmVhdGVDaXBoZXIgPSBhZXMuY3JlYXRlQ2lwaGVyXG5leHBvcnRzLkNpcGhlcml2ID0gYWVzLkNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gYWVzLmNyZWF0ZUNpcGhlcml2XG5leHBvcnRzLkRlY2lwaGVyID0gYWVzLkRlY2lwaGVyXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyID0gYWVzLmNyZWF0ZURlY2lwaGVyXG5leHBvcnRzLkRlY2lwaGVyaXYgPSBhZXMuRGVjaXBoZXJpdlxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlcml2ID0gYWVzLmNyZWF0ZURlY2lwaGVyaXZcbmV4cG9ydHMuZ2V0Q2lwaGVycyA9IGFlcy5nZXRDaXBoZXJzXG5leHBvcnRzLmxpc3RDaXBoZXJzID0gYWVzLmxpc3RDaXBoZXJzXG5cbnZhciBkaCA9IHJlcXVpcmUoJ2RpZmZpZS1oZWxsbWFuJylcblxuZXhwb3J0cy5EaWZmaWVIZWxsbWFuR3JvdXAgPSBkaC5EaWZmaWVIZWxsbWFuR3JvdXBcbmV4cG9ydHMuY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwID0gZGguY3JlYXRlRGlmZmllSGVsbG1hbkdyb3VwXG5leHBvcnRzLmdldERpZmZpZUhlbGxtYW4gPSBkaC5nZXREaWZmaWVIZWxsbWFuXG5leHBvcnRzLmNyZWF0ZURpZmZpZUhlbGxtYW4gPSBkaC5jcmVhdGVEaWZmaWVIZWxsbWFuXG5leHBvcnRzLkRpZmZpZUhlbGxtYW4gPSBkaC5EaWZmaWVIZWxsbWFuXG5cbnZhciBzaWduID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1zaWduJylcblxuZXhwb3J0cy5jcmVhdGVTaWduID0gc2lnbi5jcmVhdGVTaWduXG5leHBvcnRzLlNpZ24gPSBzaWduLlNpZ25cbmV4cG9ydHMuY3JlYXRlVmVyaWZ5ID0gc2lnbi5jcmVhdGVWZXJpZnlcbmV4cG9ydHMuVmVyaWZ5ID0gc2lnbi5WZXJpZnlcblxuZXhwb3J0cy5jcmVhdGVFQ0RIID0gcmVxdWlyZSgnY3JlYXRlLWVjZGgnKVxuXG52YXIgcHVibGljRW5jcnlwdCA9IHJlcXVpcmUoJ3B1YmxpYy1lbmNyeXB0JylcblxuZXhwb3J0cy5wdWJsaWNFbmNyeXB0ID0gcHVibGljRW5jcnlwdC5wdWJsaWNFbmNyeXB0XG5leHBvcnRzLnByaXZhdGVFbmNyeXB0ID0gcHVibGljRW5jcnlwdC5wcml2YXRlRW5jcnlwdFxuZXhwb3J0cy5wdWJsaWNEZWNyeXB0ID0gcHVibGljRW5jcnlwdC5wdWJsaWNEZWNyeXB0XG5leHBvcnRzLnByaXZhdGVEZWNyeXB0ID0gcHVibGljRW5jcnlwdC5wcml2YXRlRGVjcnlwdFxuXG4vLyB0aGUgbGVhc3QgSSBjYW4gZG8gaXMgbWFrZSBlcnJvciBtZXNzYWdlcyBmb3IgdGhlIHJlc3Qgb2YgdGhlIG5vZGUuanMvY3J5cHRvIGFwaS5cbi8vIDtbXG4vLyAgICdjcmVhdGVDcmVkZW50aWFscydcbi8vIF0uZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuLy8gICBleHBvcnRzW25hbWVdID0gZnVuY3Rpb24gKCkge1xuLy8gICAgIHRocm93IG5ldyBFcnJvcihbXG4vLyAgICAgICAnc29ycnksICcgKyBuYW1lICsgJyBpcyBub3QgaW1wbGVtZW50ZWQgeWV0Jyxcbi8vICAgICAgICd3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cycsXG4vLyAgICAgICAnaHR0cHM6Ly9naXRodWIuY29tL2NyeXB0by1icm93c2VyaWZ5L2NyeXB0by1icm93c2VyaWZ5J1xuLy8gICAgIF0uam9pbignXFxuJykpXG4vLyAgIH1cbi8vIH0pXG5cbnZhciByZiA9IHJlcXVpcmUoJ3JhbmRvbWZpbGwnKVxuXG5leHBvcnRzLnJhbmRvbUZpbGwgPSByZi5yYW5kb21GaWxsXG5leHBvcnRzLnJhbmRvbUZpbGxTeW5jID0gcmYucmFuZG9tRmlsbFN5bmNcblxuZXhwb3J0cy5jcmVhdGVDcmVkZW50aWFscyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKFtcbiAgICAnc29ycnksIGNyZWF0ZUNyZWRlbnRpYWxzIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQnLFxuICAgICd3ZSBhY2NlcHQgcHVsbCByZXF1ZXN0cycsXG4gICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9jcnlwdG8tYnJvd3NlcmlmeS9jcnlwdG8tYnJvd3NlcmlmeSdcbiAgXS5qb2luKCdcXG4nKSlcbn1cblxuZXhwb3J0cy5jb25zdGFudHMgPSB7XG4gICdESF9DSEVDS19QX05PVF9TQUZFX1BSSU1FJzogMixcbiAgJ0RIX0NIRUNLX1BfTk9UX1BSSU1FJzogMSxcbiAgJ0RIX1VOQUJMRV9UT19DSEVDS19HRU5FUkFUT1InOiA0LFxuICAnREhfTk9UX1NVSVRBQkxFX0dFTkVSQVRPUic6IDgsXG4gICdOUE5fRU5BQkxFRCc6IDEsXG4gICdBTFBOX0VOQUJMRUQnOiAxLFxuICAnUlNBX1BLQ1MxX1BBRERJTkcnOiAxLFxuICAnUlNBX1NTTFYyM19QQURESU5HJzogMixcbiAgJ1JTQV9OT19QQURESU5HJzogMyxcbiAgJ1JTQV9QS0NTMV9PQUVQX1BBRERJTkcnOiA0LFxuICAnUlNBX1g5MzFfUEFERElORyc6IDUsXG4gICdSU0FfUEtDUzFfUFNTX1BBRERJTkcnOiA2LFxuICAnUE9JTlRfQ09OVkVSU0lPTl9DT01QUkVTU0VEJzogMixcbiAgJ1BPSU5UX0NPTlZFUlNJT05fVU5DT01QUkVTU0VEJzogNCxcbiAgJ1BPSU5UX0NPTlZFUlNJT05fSFlCUklEJzogNlxufVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIga2V5cyA9IHJlcXVpcmUoJ29iamVjdC1rZXlzJyk7XG52YXIgaGFzU3ltYm9scyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIFN5bWJvbCgnZm9vJykgPT09ICdzeW1ib2wnO1xuXG52YXIgdG9TdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIGNvbmNhdCA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQ7XG52YXIgb3JpZ0RlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG52YXIgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uIChmbikge1xuXHRyZXR1cm4gdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nICYmIHRvU3RyLmNhbGwoZm4pID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xufTtcblxudmFyIGFyZVByb3BlcnR5RGVzY3JpcHRvcnNTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBvYmogPSB7fTtcblx0dHJ5IHtcblx0XHRvcmlnRGVmaW5lUHJvcGVydHkob2JqLCAneCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiBvYmogfSk7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBuby1yZXN0cmljdGVkLXN5bnRheFxuXHRcdGZvciAodmFyIF8gaW4gb2JqKSB7IC8vIGpzY3M6aWdub3JlIGRpc2FsbG93VW51c2VkVmFyaWFibGVzXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiBvYmoueCA9PT0gb2JqO1xuXHR9IGNhdGNoIChlKSB7IC8qIHRoaXMgaXMgSUUgOC4gKi9cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn07XG52YXIgc3VwcG9ydHNEZXNjcmlwdG9ycyA9IG9yaWdEZWZpbmVQcm9wZXJ0eSAmJiBhcmVQcm9wZXJ0eURlc2NyaXB0b3JzU3VwcG9ydGVkKCk7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWUsIHZhbHVlLCBwcmVkaWNhdGUpIHtcblx0aWYgKG5hbWUgaW4gb2JqZWN0ICYmICghaXNGdW5jdGlvbihwcmVkaWNhdGUpIHx8ICFwcmVkaWNhdGUoKSkpIHtcblx0XHRyZXR1cm47XG5cdH1cblx0aWYgKHN1cHBvcnRzRGVzY3JpcHRvcnMpIHtcblx0XHRvcmlnRGVmaW5lUHJvcGVydHkob2JqZWN0LCBuYW1lLCB7XG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHRlbnVtZXJhYmxlOiBmYWxzZSxcblx0XHRcdHZhbHVlOiB2YWx1ZSxcblx0XHRcdHdyaXRhYmxlOiB0cnVlXG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0b2JqZWN0W25hbWVdID0gdmFsdWU7XG5cdH1cbn07XG5cbnZhciBkZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKG9iamVjdCwgbWFwKSB7XG5cdHZhciBwcmVkaWNhdGVzID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB7fTtcblx0dmFyIHByb3BzID0ga2V5cyhtYXApO1xuXHRpZiAoaGFzU3ltYm9scykge1xuXHRcdHByb3BzID0gY29uY2F0LmNhbGwocHJvcHMsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobWFwKSk7XG5cdH1cblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkgKz0gMSkge1xuXHRcdGRlZmluZVByb3BlcnR5KG9iamVjdCwgcHJvcHNbaV0sIG1hcFtwcm9wc1tpXV0sIHByZWRpY2F0ZXNbcHJvcHNbaV1dKTtcblx0fVxufTtcblxuZGVmaW5lUHJvcGVydGllcy5zdXBwb3J0c0Rlc2NyaXB0b3JzID0gISFzdXBwb3J0c0Rlc2NyaXB0b3JzO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZVByb3BlcnRpZXM7XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMudXRpbHMgPSByZXF1aXJlKCcuL2Rlcy91dGlscycpO1xuZXhwb3J0cy5DaXBoZXIgPSByZXF1aXJlKCcuL2Rlcy9jaXBoZXInKTtcbmV4cG9ydHMuREVTID0gcmVxdWlyZSgnLi9kZXMvZGVzJyk7XG5leHBvcnRzLkNCQyA9IHJlcXVpcmUoJy4vZGVzL2NiYycpO1xuZXhwb3J0cy5FREUgPSByZXF1aXJlKCcuL2Rlcy9lZGUnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBwcm90byA9IHt9O1xuXG5mdW5jdGlvbiBDQkNTdGF0ZShpdikge1xuICBhc3NlcnQuZXF1YWwoaXYubGVuZ3RoLCA4LCAnSW52YWxpZCBJViBsZW5ndGgnKTtcblxuICB0aGlzLml2ID0gbmV3IEFycmF5KDgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXYubGVuZ3RoOyBpKyspXG4gICAgdGhpcy5pdltpXSA9IGl2W2ldO1xufVxuXG5mdW5jdGlvbiBpbnN0YW50aWF0ZShCYXNlKSB7XG4gIGZ1bmN0aW9uIENCQyhvcHRpb25zKSB7XG4gICAgQmFzZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICAgIHRoaXMuX2NiY0luaXQoKTtcbiAgfVxuICBpbmhlcml0cyhDQkMsIEJhc2UpO1xuXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMocHJvdG8pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBDQkMucHJvdG90eXBlW2tleV0gPSBwcm90b1trZXldO1xuICB9XG5cbiAgQ0JDLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBDQkMob3B0aW9ucyk7XG4gIH07XG5cbiAgcmV0dXJuIENCQztcbn1cblxuZXhwb3J0cy5pbnN0YW50aWF0ZSA9IGluc3RhbnRpYXRlO1xuXG5wcm90by5fY2JjSW5pdCA9IGZ1bmN0aW9uIF9jYmNJbml0KCkge1xuICB2YXIgc3RhdGUgPSBuZXcgQ0JDU3RhdGUodGhpcy5vcHRpb25zLml2KTtcbiAgdGhpcy5fY2JjU3RhdGUgPSBzdGF0ZTtcbn07XG5cbnByb3RvLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2NiY1N0YXRlO1xuICB2YXIgc3VwZXJQcm90byA9IHRoaXMuY29uc3RydWN0b3Iuc3VwZXJfLnByb3RvdHlwZTtcblxuICB2YXIgaXYgPSBzdGF0ZS5pdjtcbiAgaWYgKHRoaXMudHlwZSA9PT0gJ2VuY3J5cHQnKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgaXZbaV0gXj0gaW5wW2luT2ZmICsgaV07XG5cbiAgICBzdXBlclByb3RvLl91cGRhdGUuY2FsbCh0aGlzLCBpdiwgMCwgb3V0LCBvdXRPZmYpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgaXZbaV0gPSBvdXRbb3V0T2ZmICsgaV07XG4gIH0gZWxzZSB7XG4gICAgc3VwZXJQcm90by5fdXBkYXRlLmNhbGwodGhpcywgaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgb3V0W291dE9mZiArIGldIF49IGl2W2ldO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgaXZbaV0gPSBpbnBbaW5PZmYgKyBpXTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxuZnVuY3Rpb24gQ2lwaGVyKG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICB0aGlzLnR5cGUgPSB0aGlzLm9wdGlvbnMudHlwZTtcbiAgdGhpcy5ibG9ja1NpemUgPSA4O1xuICB0aGlzLl9pbml0KCk7XG5cbiAgdGhpcy5idWZmZXIgPSBuZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO1xuICB0aGlzLmJ1ZmZlck9mZiA9IDA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IENpcGhlcjtcblxuQ2lwaGVyLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIF9pbml0KCkge1xuICAvLyBNaWdodCBiZSBvdmVycmlkZWRcbn07XG5cbkNpcGhlci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKGRhdGEpIHtcbiAgaWYgKGRhdGEubGVuZ3RoID09PSAwKVxuICAgIHJldHVybiBbXTtcblxuICBpZiAodGhpcy50eXBlID09PSAnZGVjcnlwdCcpXG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZURlY3J5cHQoZGF0YSk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fdXBkYXRlRW5jcnlwdChkYXRhKTtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2J1ZmZlciA9IGZ1bmN0aW9uIF9idWZmZXIoZGF0YSwgb2ZmKSB7XG4gIC8vIEFwcGVuZCBkYXRhIHRvIGJ1ZmZlclxuICB2YXIgbWluID0gTWF0aC5taW4odGhpcy5idWZmZXIubGVuZ3RoIC0gdGhpcy5idWZmZXJPZmYsIGRhdGEubGVuZ3RoIC0gb2ZmKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaW47IGkrKylcbiAgICB0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZiArIGldID0gZGF0YVtvZmYgKyBpXTtcbiAgdGhpcy5idWZmZXJPZmYgKz0gbWluO1xuXG4gIC8vIFNoaWZ0IG5leHRcbiAgcmV0dXJuIG1pbjtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2ZsdXNoQnVmZmVyID0gZnVuY3Rpb24gX2ZsdXNoQnVmZmVyKG91dCwgb2ZmKSB7XG4gIHRoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwgMCwgb3V0LCBvZmYpO1xuICB0aGlzLmJ1ZmZlck9mZiA9IDA7XG4gIHJldHVybiB0aGlzLmJsb2NrU2l6ZTtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZUVuY3J5cHQgPSBmdW5jdGlvbiBfdXBkYXRlRW5jcnlwdChkYXRhKSB7XG4gIHZhciBpbnB1dE9mZiA9IDA7XG4gIHZhciBvdXRwdXRPZmYgPSAwO1xuXG4gIHZhciBjb3VudCA9ICgodGhpcy5idWZmZXJPZmYgKyBkYXRhLmxlbmd0aCkgLyB0aGlzLmJsb2NrU2l6ZSkgfCAwO1xuICB2YXIgb3V0ID0gbmV3IEFycmF5KGNvdW50ICogdGhpcy5ibG9ja1NpemUpO1xuXG4gIGlmICh0aGlzLmJ1ZmZlck9mZiAhPT0gMCkge1xuICAgIGlucHV0T2ZmICs9IHRoaXMuX2J1ZmZlcihkYXRhLCBpbnB1dE9mZik7XG5cbiAgICBpZiAodGhpcy5idWZmZXJPZmYgPT09IHRoaXMuYnVmZmVyLmxlbmd0aClcbiAgICAgIG91dHB1dE9mZiArPSB0aGlzLl9mbHVzaEJ1ZmZlcihvdXQsIG91dHB1dE9mZik7XG4gIH1cblxuICAvLyBXcml0ZSBibG9ja3NcbiAgdmFyIG1heCA9IGRhdGEubGVuZ3RoIC0gKChkYXRhLmxlbmd0aCAtIGlucHV0T2ZmKSAlIHRoaXMuYmxvY2tTaXplKTtcbiAgZm9yICg7IGlucHV0T2ZmIDwgbWF4OyBpbnB1dE9mZiArPSB0aGlzLmJsb2NrU2l6ZSkge1xuICAgIHRoaXMuX3VwZGF0ZShkYXRhLCBpbnB1dE9mZiwgb3V0LCBvdXRwdXRPZmYpO1xuICAgIG91dHB1dE9mZiArPSB0aGlzLmJsb2NrU2l6ZTtcbiAgfVxuXG4gIC8vIFF1ZXVlIHJlc3RcbiAgZm9yICg7IGlucHV0T2ZmIDwgZGF0YS5sZW5ndGg7IGlucHV0T2ZmKyssIHRoaXMuYnVmZmVyT2ZmKyspXG4gICAgdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmZdID0gZGF0YVtpbnB1dE9mZl07XG5cbiAgcmV0dXJuIG91dDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZURlY3J5cHQgPSBmdW5jdGlvbiBfdXBkYXRlRGVjcnlwdChkYXRhKSB7XG4gIHZhciBpbnB1dE9mZiA9IDA7XG4gIHZhciBvdXRwdXRPZmYgPSAwO1xuXG4gIHZhciBjb3VudCA9IE1hdGguY2VpbCgodGhpcy5idWZmZXJPZmYgKyBkYXRhLmxlbmd0aCkgLyB0aGlzLmJsb2NrU2l6ZSkgLSAxO1xuICB2YXIgb3V0ID0gbmV3IEFycmF5KGNvdW50ICogdGhpcy5ibG9ja1NpemUpO1xuXG4gIC8vIFRPRE8oaW5kdXRueSk6IG9wdGltaXplIGl0LCB0aGlzIGlzIGZhciBmcm9tIG9wdGltYWxcbiAgZm9yICg7IGNvdW50ID4gMDsgY291bnQtLSkge1xuICAgIGlucHV0T2ZmICs9IHRoaXMuX2J1ZmZlcihkYXRhLCBpbnB1dE9mZik7XG4gICAgb3V0cHV0T2ZmICs9IHRoaXMuX2ZsdXNoQnVmZmVyKG91dCwgb3V0cHV0T2ZmKTtcbiAgfVxuXG4gIC8vIEJ1ZmZlciByZXN0IG9mIHRoZSBpbnB1dFxuICBpbnB1dE9mZiArPSB0aGlzLl9idWZmZXIoZGF0YSwgaW5wdXRPZmYpO1xuXG4gIHJldHVybiBvdXQ7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLmZpbmFsID0gZnVuY3Rpb24gZmluYWwoYnVmZmVyKSB7XG4gIHZhciBmaXJzdDtcbiAgaWYgKGJ1ZmZlcilcbiAgICBmaXJzdCA9IHRoaXMudXBkYXRlKGJ1ZmZlcik7XG5cbiAgdmFyIGxhc3Q7XG4gIGlmICh0aGlzLnR5cGUgPT09ICdlbmNyeXB0JylcbiAgICBsYXN0ID0gdGhpcy5fZmluYWxFbmNyeXB0KCk7XG4gIGVsc2VcbiAgICBsYXN0ID0gdGhpcy5fZmluYWxEZWNyeXB0KCk7XG5cbiAgaWYgKGZpcnN0KVxuICAgIHJldHVybiBmaXJzdC5jb25jYXQobGFzdCk7XG4gIGVsc2VcbiAgICByZXR1cm4gbGFzdDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3BhZCA9IGZ1bmN0aW9uIF9wYWQoYnVmZmVyLCBvZmYpIHtcbiAgaWYgKG9mZiA9PT0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgd2hpbGUgKG9mZiA8IGJ1ZmZlci5sZW5ndGgpXG4gICAgYnVmZmVyW29mZisrXSA9IDA7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9maW5hbEVuY3J5cHQgPSBmdW5jdGlvbiBfZmluYWxFbmNyeXB0KCkge1xuICBpZiAoIXRoaXMuX3BhZCh0aGlzLmJ1ZmZlciwgdGhpcy5idWZmZXJPZmYpKVxuICAgIHJldHVybiBbXTtcblxuICB2YXIgb3V0ID0gbmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtcbiAgdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLCAwLCBvdXQsIDApO1xuICByZXR1cm4gb3V0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fdW5wYWQgPSBmdW5jdGlvbiBfdW5wYWQoYnVmZmVyKSB7XG4gIHJldHVybiBidWZmZXI7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9maW5hbERlY3J5cHQgPSBmdW5jdGlvbiBfZmluYWxEZWNyeXB0KCkge1xuICBhc3NlcnQuZXF1YWwodGhpcy5idWZmZXJPZmYsIHRoaXMuYmxvY2tTaXplLCAnTm90IGVub3VnaCBkYXRhIHRvIGRlY3J5cHQnKTtcbiAgdmFyIG91dCA9IG5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7XG4gIHRoaXMuX2ZsdXNoQnVmZmVyKG91dCwgMCk7XG5cbiAgcmV0dXJuIHRoaXMuX3VucGFkKG91dCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIENpcGhlciA9IHJlcXVpcmUoJy4vY2lwaGVyJyk7XG5cbmZ1bmN0aW9uIERFU1N0YXRlKCkge1xuICB0aGlzLnRtcCA9IG5ldyBBcnJheSgyKTtcbiAgdGhpcy5rZXlzID0gbnVsbDtcbn1cblxuZnVuY3Rpb24gREVTKG9wdGlvbnMpIHtcbiAgQ2lwaGVyLmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgdmFyIHN0YXRlID0gbmV3IERFU1N0YXRlKCk7XG4gIHRoaXMuX2Rlc1N0YXRlID0gc3RhdGU7XG5cbiAgdGhpcy5kZXJpdmVLZXlzKHN0YXRlLCBvcHRpb25zLmtleSk7XG59XG5pbmhlcml0cyhERVMsIENpcGhlcik7XG5tb2R1bGUuZXhwb3J0cyA9IERFUztcblxuREVTLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgREVTKG9wdGlvbnMpO1xufTtcblxudmFyIHNoaWZ0VGFibGUgPSBbXG4gIDEsIDEsIDIsIDIsIDIsIDIsIDIsIDIsXG4gIDEsIDIsIDIsIDIsIDIsIDIsIDIsIDFcbl07XG5cbkRFUy5wcm90b3R5cGUuZGVyaXZlS2V5cyA9IGZ1bmN0aW9uIGRlcml2ZUtleXMoc3RhdGUsIGtleSkge1xuICBzdGF0ZS5rZXlzID0gbmV3IEFycmF5KDE2ICogMik7XG5cbiAgYXNzZXJ0LmVxdWFsKGtleS5sZW5ndGgsIHRoaXMuYmxvY2tTaXplLCAnSW52YWxpZCBrZXkgbGVuZ3RoJyk7XG5cbiAgdmFyIGtMID0gdXRpbHMucmVhZFVJbnQzMkJFKGtleSwgMCk7XG4gIHZhciBrUiA9IHV0aWxzLnJlYWRVSW50MzJCRShrZXksIDQpO1xuXG4gIHV0aWxzLnBjMShrTCwga1IsIHN0YXRlLnRtcCwgMCk7XG4gIGtMID0gc3RhdGUudG1wWzBdO1xuICBrUiA9IHN0YXRlLnRtcFsxXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGF0ZS5rZXlzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIHNoaWZ0ID0gc2hpZnRUYWJsZVtpID4+PiAxXTtcbiAgICBrTCA9IHV0aWxzLnIyOHNobChrTCwgc2hpZnQpO1xuICAgIGtSID0gdXRpbHMucjI4c2hsKGtSLCBzaGlmdCk7XG4gICAgdXRpbHMucGMyKGtMLCBrUiwgc3RhdGUua2V5cywgaSk7XG4gIH1cbn07XG5cbkRFUy5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUoaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fZGVzU3RhdGU7XG5cbiAgdmFyIGwgPSB1dGlscy5yZWFkVUludDMyQkUoaW5wLCBpbk9mZik7XG4gIHZhciByID0gdXRpbHMucmVhZFVJbnQzMkJFKGlucCwgaW5PZmYgKyA0KTtcblxuICAvLyBJbml0aWFsIFBlcm11dGF0aW9uXG4gIHV0aWxzLmlwKGwsIHIsIHN0YXRlLnRtcCwgMCk7XG4gIGwgPSBzdGF0ZS50bXBbMF07XG4gIHIgPSBzdGF0ZS50bXBbMV07XG5cbiAgaWYgKHRoaXMudHlwZSA9PT0gJ2VuY3J5cHQnKVxuICAgIHRoaXMuX2VuY3J5cHQoc3RhdGUsIGwsIHIsIHN0YXRlLnRtcCwgMCk7XG4gIGVsc2VcbiAgICB0aGlzLl9kZWNyeXB0KHN0YXRlLCBsLCByLCBzdGF0ZS50bXAsIDApO1xuXG4gIGwgPSBzdGF0ZS50bXBbMF07XG4gIHIgPSBzdGF0ZS50bXBbMV07XG5cbiAgdXRpbHMud3JpdGVVSW50MzJCRShvdXQsIGwsIG91dE9mZik7XG4gIHV0aWxzLndyaXRlVUludDMyQkUob3V0LCByLCBvdXRPZmYgKyA0KTtcbn07XG5cbkRFUy5wcm90b3R5cGUuX3BhZCA9IGZ1bmN0aW9uIF9wYWQoYnVmZmVyLCBvZmYpIHtcbiAgdmFyIHZhbHVlID0gYnVmZmVyLmxlbmd0aCAtIG9mZjtcbiAgZm9yICh2YXIgaSA9IG9mZjsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkrKylcbiAgICBidWZmZXJbaV0gPSB2YWx1ZTtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkRFUy5wcm90b3R5cGUuX3VucGFkID0gZnVuY3Rpb24gX3VucGFkKGJ1ZmZlcikge1xuICB2YXIgcGFkID0gYnVmZmVyW2J1ZmZlci5sZW5ndGggLSAxXTtcbiAgZm9yICh2YXIgaSA9IGJ1ZmZlci5sZW5ndGggLSBwYWQ7IGkgPCBidWZmZXIubGVuZ3RoOyBpKyspXG4gICAgYXNzZXJ0LmVxdWFsKGJ1ZmZlcltpXSwgcGFkKTtcblxuICByZXR1cm4gYnVmZmVyLnNsaWNlKDAsIGJ1ZmZlci5sZW5ndGggLSBwYWQpO1xufTtcblxuREVTLnByb3RvdHlwZS5fZW5jcnlwdCA9IGZ1bmN0aW9uIF9lbmNyeXB0KHN0YXRlLCBsU3RhcnQsIHJTdGFydCwgb3V0LCBvZmYpIHtcbiAgdmFyIGwgPSBsU3RhcnQ7XG4gIHZhciByID0gclN0YXJ0O1xuXG4gIC8vIEFwcGx5IGYoKSB4MTYgdGltZXNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGF0ZS5rZXlzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIGtleUwgPSBzdGF0ZS5rZXlzW2ldO1xuICAgIHZhciBrZXlSID0gc3RhdGUua2V5c1tpICsgMV07XG5cbiAgICAvLyBmKHIsIGspXG4gICAgdXRpbHMuZXhwYW5kKHIsIHN0YXRlLnRtcCwgMCk7XG5cbiAgICBrZXlMIF49IHN0YXRlLnRtcFswXTtcbiAgICBrZXlSIF49IHN0YXRlLnRtcFsxXTtcbiAgICB2YXIgcyA9IHV0aWxzLnN1YnN0aXR1dGUoa2V5TCwga2V5Uik7XG4gICAgdmFyIGYgPSB1dGlscy5wZXJtdXRlKHMpO1xuXG4gICAgdmFyIHQgPSByO1xuICAgIHIgPSAobCBeIGYpID4+PiAwO1xuICAgIGwgPSB0O1xuICB9XG5cbiAgLy8gUmV2ZXJzZSBJbml0aWFsIFBlcm11dGF0aW9uXG4gIHV0aWxzLnJpcChyLCBsLCBvdXQsIG9mZik7XG59O1xuXG5ERVMucHJvdG90eXBlLl9kZWNyeXB0ID0gZnVuY3Rpb24gX2RlY3J5cHQoc3RhdGUsIGxTdGFydCwgclN0YXJ0LCBvdXQsIG9mZikge1xuICB2YXIgbCA9IHJTdGFydDtcbiAgdmFyIHIgPSBsU3RhcnQ7XG5cbiAgLy8gQXBwbHkgZigpIHgxNiB0aW1lc1xuICBmb3IgKHZhciBpID0gc3RhdGUua2V5cy5sZW5ndGggLSAyOyBpID49IDA7IGkgLT0gMikge1xuICAgIHZhciBrZXlMID0gc3RhdGUua2V5c1tpXTtcbiAgICB2YXIga2V5UiA9IHN0YXRlLmtleXNbaSArIDFdO1xuXG4gICAgLy8gZihyLCBrKVxuICAgIHV0aWxzLmV4cGFuZChsLCBzdGF0ZS50bXAsIDApO1xuXG4gICAga2V5TCBePSBzdGF0ZS50bXBbMF07XG4gICAga2V5UiBePSBzdGF0ZS50bXBbMV07XG4gICAgdmFyIHMgPSB1dGlscy5zdWJzdGl0dXRlKGtleUwsIGtleVIpO1xuICAgIHZhciBmID0gdXRpbHMucGVybXV0ZShzKTtcblxuICAgIHZhciB0ID0gbDtcbiAgICBsID0gKHIgXiBmKSA+Pj4gMDtcbiAgICByID0gdDtcbiAgfVxuXG4gIC8vIFJldmVyc2UgSW5pdGlhbCBQZXJtdXRhdGlvblxuICB1dGlscy5yaXAobCwgciwgb3V0LCBvZmYpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBDaXBoZXIgPSByZXF1aXJlKCcuL2NpcGhlcicpO1xudmFyIERFUyA9IHJlcXVpcmUoJy4vZGVzJyk7XG5cbmZ1bmN0aW9uIEVERVN0YXRlKHR5cGUsIGtleSkge1xuICBhc3NlcnQuZXF1YWwoa2V5Lmxlbmd0aCwgMjQsICdJbnZhbGlkIGtleSBsZW5ndGgnKTtcblxuICB2YXIgazEgPSBrZXkuc2xpY2UoMCwgOCk7XG4gIHZhciBrMiA9IGtleS5zbGljZSg4LCAxNik7XG4gIHZhciBrMyA9IGtleS5zbGljZSgxNiwgMjQpO1xuXG4gIGlmICh0eXBlID09PSAnZW5jcnlwdCcpIHtcbiAgICB0aGlzLmNpcGhlcnMgPSBbXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2VuY3J5cHQnLCBrZXk6IGsxIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdkZWNyeXB0Jywga2V5OiBrMiB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZW5jcnlwdCcsIGtleTogazMgfSlcbiAgICBdO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuY2lwaGVycyA9IFtcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZGVjcnlwdCcsIGtleTogazMgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2VuY3J5cHQnLCBrZXk6IGsyIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdkZWNyeXB0Jywga2V5OiBrMSB9KVxuICAgIF07XG4gIH1cbn1cblxuZnVuY3Rpb24gRURFKG9wdGlvbnMpIHtcbiAgQ2lwaGVyLmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgdmFyIHN0YXRlID0gbmV3IEVERVN0YXRlKHRoaXMudHlwZSwgdGhpcy5vcHRpb25zLmtleSk7XG4gIHRoaXMuX2VkZVN0YXRlID0gc3RhdGU7XG59XG5pbmhlcml0cyhFREUsIENpcGhlcik7XG5cbm1vZHVsZS5leHBvcnRzID0gRURFO1xuXG5FREUuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBFREUob3B0aW9ucyk7XG59O1xuXG5FREUucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2VkZVN0YXRlO1xuXG4gIHN0YXRlLmNpcGhlcnNbMF0uX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZik7XG4gIHN0YXRlLmNpcGhlcnNbMV0uX3VwZGF0ZShvdXQsIG91dE9mZiwgb3V0LCBvdXRPZmYpO1xuICBzdGF0ZS5jaXBoZXJzWzJdLl91cGRhdGUob3V0LCBvdXRPZmYsIG91dCwgb3V0T2ZmKTtcbn07XG5cbkVERS5wcm90b3R5cGUuX3BhZCA9IERFUy5wcm90b3R5cGUuX3BhZDtcbkVERS5wcm90b3R5cGUuX3VucGFkID0gREVTLnByb3RvdHlwZS5fdW5wYWQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMucmVhZFVJbnQzMkJFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkJFKGJ5dGVzLCBvZmYpIHtcbiAgdmFyIHJlcyA9ICAoYnl0ZXNbMCArIG9mZl0gPDwgMjQpIHxcbiAgICAgICAgICAgICAoYnl0ZXNbMSArIG9mZl0gPDwgMTYpIHxcbiAgICAgICAgICAgICAoYnl0ZXNbMiArIG9mZl0gPDwgOCkgfFxuICAgICAgICAgICAgIGJ5dGVzWzMgKyBvZmZdO1xuICByZXR1cm4gcmVzID4+PiAwO1xufTtcblxuZXhwb3J0cy53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRShieXRlcywgdmFsdWUsIG9mZikge1xuICBieXRlc1swICsgb2ZmXSA9IHZhbHVlID4+PiAyNDtcbiAgYnl0ZXNbMSArIG9mZl0gPSAodmFsdWUgPj4+IDE2KSAmIDB4ZmY7XG4gIGJ5dGVzWzIgKyBvZmZdID0gKHZhbHVlID4+PiA4KSAmIDB4ZmY7XG4gIGJ5dGVzWzMgKyBvZmZdID0gdmFsdWUgJiAweGZmO1xufTtcblxuZXhwb3J0cy5pcCA9IGZ1bmN0aW9uIGlwKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICBmb3IgKHZhciBpID0gNjsgaSA+PSAwOyBpIC09IDIpIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5SID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpbkwgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBpID0gNjsgaSA+PSAwOyBpIC09IDIpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSAyNTsgaiArPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5SID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IDI1OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpbkwgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxuZXhwb3J0cy5yaXAgPSBmdW5jdGlvbiByaXAoaW5MLCBpblIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDI0OyBqID49IDA7IGogLT0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluTCA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBpID0gNDsgaSA8IDg7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAyNDsgaiA+PSAwOyBqIC09IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpbkwgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxuZXhwb3J0cy5wYzEgPSBmdW5jdGlvbiBwYzEoaW5MLCBpblIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIC8vIDcsIDE1LCAyMywgMzEsIDM5LCA0NywgNTUsIDYzXG4gIC8vIDYsIDE0LCAyMiwgMzAsIDM5LCA0NywgNTUsIDYzXG4gIC8vIDUsIDEzLCAyMSwgMjksIDM5LCA0NywgNTUsIDYzXG4gIC8vIDQsIDEyLCAyMCwgMjhcbiAgZm9yICh2YXIgaSA9IDc7IGkgPj0gNTsgaS0tKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluUiA+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpbkwgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgb3V0TCA8PD0gMTtcbiAgICBvdXRMIHw9IChpblIgPj4gKGogKyBpKSkgJiAxO1xuICB9XG5cbiAgLy8gMSwgOSwgMTcsIDI1LCAzMywgNDEsIDQ5LCA1N1xuICAvLyAyLCAxMCwgMTgsIDI2LCAzNCwgNDIsIDUwLCA1OFxuICAvLyAzLCAxMSwgMTksIDI3LCAzNSwgNDMsIDUxLCA1OVxuICAvLyAzNiwgNDQsIDUyLCA2MFxuICBmb3IgKHZhciBpID0gMTsgaSA8PSAzOyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5SID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluTCA+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG4gIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICBvdXRSIDw8PSAxO1xuICAgIG91dFIgfD0gKGluTCA+PiAoaiArIGkpKSAmIDE7XG4gIH1cblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxuZXhwb3J0cy5yMjhzaGwgPSBmdW5jdGlvbiByMjhzaGwobnVtLCBzaGlmdCkge1xuICByZXR1cm4gKChudW0gPDwgc2hpZnQpICYgMHhmZmZmZmZmKSB8IChudW0gPj4+ICgyOCAtIHNoaWZ0KSk7XG59O1xuXG52YXIgcGMydGFibGUgPSBbXG4gIC8vIGluTCA9PiBvdXRMXG4gIDE0LCAxMSwgMTcsIDQsIDI3LCAyMywgMjUsIDAsXG4gIDEzLCAyMiwgNywgMTgsIDUsIDksIDE2LCAyNCxcbiAgMiwgMjAsIDEyLCAyMSwgMSwgOCwgMTUsIDI2LFxuXG4gIC8vIGluUiA9PiBvdXRSXG4gIDE1LCA0LCAyNSwgMTksIDksIDEsIDI2LCAxNixcbiAgNSwgMTEsIDIzLCA4LCAxMiwgNywgMTcsIDAsXG4gIDIyLCAzLCAxMCwgMTQsIDYsIDIwLCAyNywgMjRcbl07XG5cbmV4cG9ydHMucGMyID0gZnVuY3Rpb24gcGMyKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICB2YXIgbGVuID0gcGMydGFibGUubGVuZ3RoID4+PiAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgb3V0TCA8PD0gMTtcbiAgICBvdXRMIHw9IChpbkwgPj4+IHBjMnRhYmxlW2ldKSAmIDB4MTtcbiAgfVxuICBmb3IgKHZhciBpID0gbGVuOyBpIDwgcGMydGFibGUubGVuZ3RoOyBpKyspIHtcbiAgICBvdXRSIDw8PSAxO1xuICAgIG91dFIgfD0gKGluUiA+Pj4gcGMydGFibGVbaV0pICYgMHgxO1xuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMuZXhwYW5kID0gZnVuY3Rpb24gZXhwYW5kKHIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIG91dEwgPSAoKHIgJiAxKSA8PCA1KSB8IChyID4+PiAyNyk7XG4gIGZvciAodmFyIGkgPSAyMzsgaSA+PSAxNTsgaSAtPSA0KSB7XG4gICAgb3V0TCA8PD0gNjtcbiAgICBvdXRMIHw9IChyID4+PiBpKSAmIDB4M2Y7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDExOyBpID49IDM7IGkgLT0gNCkge1xuICAgIG91dFIgfD0gKHIgPj4+IGkpICYgMHgzZjtcbiAgICBvdXRSIDw8PSA2O1xuICB9XG4gIG91dFIgfD0gKChyICYgMHgxZikgPDwgMSkgfCAociA+Pj4gMzEpO1xuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG52YXIgc1RhYmxlID0gW1xuICAxNCwgMCwgNCwgMTUsIDEzLCA3LCAxLCA0LCAyLCAxNCwgMTUsIDIsIDExLCAxMywgOCwgMSxcbiAgMywgMTAsIDEwLCA2LCA2LCAxMiwgMTIsIDExLCA1LCA5LCA5LCA1LCAwLCAzLCA3LCA4LFxuICA0LCAxNSwgMSwgMTIsIDE0LCA4LCA4LCAyLCAxMywgNCwgNiwgOSwgMiwgMSwgMTEsIDcsXG4gIDE1LCA1LCAxMiwgMTEsIDksIDMsIDcsIDE0LCAzLCAxMCwgMTAsIDAsIDUsIDYsIDAsIDEzLFxuXG4gIDE1LCAzLCAxLCAxMywgOCwgNCwgMTQsIDcsIDYsIDE1LCAxMSwgMiwgMywgOCwgNCwgMTQsXG4gIDksIDEyLCA3LCAwLCAyLCAxLCAxMywgMTAsIDEyLCA2LCAwLCA5LCA1LCAxMSwgMTAsIDUsXG4gIDAsIDEzLCAxNCwgOCwgNywgMTAsIDExLCAxLCAxMCwgMywgNCwgMTUsIDEzLCA0LCAxLCAyLFxuICA1LCAxMSwgOCwgNiwgMTIsIDcsIDYsIDEyLCA5LCAwLCAzLCA1LCAyLCAxNCwgMTUsIDksXG5cbiAgMTAsIDEzLCAwLCA3LCA5LCAwLCAxNCwgOSwgNiwgMywgMywgNCwgMTUsIDYsIDUsIDEwLFxuICAxLCAyLCAxMywgOCwgMTIsIDUsIDcsIDE0LCAxMSwgMTIsIDQsIDExLCAyLCAxNSwgOCwgMSxcbiAgMTMsIDEsIDYsIDEwLCA0LCAxMywgOSwgMCwgOCwgNiwgMTUsIDksIDMsIDgsIDAsIDcsXG4gIDExLCA0LCAxLCAxNSwgMiwgMTQsIDEyLCAzLCA1LCAxMSwgMTAsIDUsIDE0LCAyLCA3LCAxMixcblxuICA3LCAxMywgMTMsIDgsIDE0LCAxMSwgMywgNSwgMCwgNiwgNiwgMTUsIDksIDAsIDEwLCAzLFxuICAxLCA0LCAyLCA3LCA4LCAyLCA1LCAxMiwgMTEsIDEsIDEyLCAxMCwgNCwgMTQsIDE1LCA5LFxuICAxMCwgMywgNiwgMTUsIDksIDAsIDAsIDYsIDEyLCAxMCwgMTEsIDEsIDcsIDEzLCAxMywgOCxcbiAgMTUsIDksIDEsIDQsIDMsIDUsIDE0LCAxMSwgNSwgMTIsIDIsIDcsIDgsIDIsIDQsIDE0LFxuXG4gIDIsIDE0LCAxMiwgMTEsIDQsIDIsIDEsIDEyLCA3LCA0LCAxMCwgNywgMTEsIDEzLCA2LCAxLFxuICA4LCA1LCA1LCAwLCAzLCAxNSwgMTUsIDEwLCAxMywgMywgMCwgOSwgMTQsIDgsIDksIDYsXG4gIDQsIDExLCAyLCA4LCAxLCAxMiwgMTEsIDcsIDEwLCAxLCAxMywgMTQsIDcsIDIsIDgsIDEzLFxuICAxNSwgNiwgOSwgMTUsIDEyLCAwLCA1LCA5LCA2LCAxMCwgMywgNCwgMCwgNSwgMTQsIDMsXG5cbiAgMTIsIDEwLCAxLCAxNSwgMTAsIDQsIDE1LCAyLCA5LCA3LCAyLCAxMiwgNiwgOSwgOCwgNSxcbiAgMCwgNiwgMTMsIDEsIDMsIDEzLCA0LCAxNCwgMTQsIDAsIDcsIDExLCA1LCAzLCAxMSwgOCxcbiAgOSwgNCwgMTQsIDMsIDE1LCAyLCA1LCAxMiwgMiwgOSwgOCwgNSwgMTIsIDE1LCAzLCAxMCxcbiAgNywgMTEsIDAsIDE0LCA0LCAxLCAxMCwgNywgMSwgNiwgMTMsIDAsIDExLCA4LCA2LCAxMyxcblxuICA0LCAxMywgMTEsIDAsIDIsIDExLCAxNCwgNywgMTUsIDQsIDAsIDksIDgsIDEsIDEzLCAxMCxcbiAgMywgMTQsIDEyLCAzLCA5LCA1LCA3LCAxMiwgNSwgMiwgMTAsIDE1LCA2LCA4LCAxLCA2LFxuICAxLCA2LCA0LCAxMSwgMTEsIDEzLCAxMywgOCwgMTIsIDEsIDMsIDQsIDcsIDEwLCAxNCwgNyxcbiAgMTAsIDksIDE1LCA1LCA2LCAwLCA4LCAxNSwgMCwgMTQsIDUsIDIsIDksIDMsIDIsIDEyLFxuXG4gIDEzLCAxLCAyLCAxNSwgOCwgMTMsIDQsIDgsIDYsIDEwLCAxNSwgMywgMTEsIDcsIDEsIDQsXG4gIDEwLCAxMiwgOSwgNSwgMywgNiwgMTQsIDExLCA1LCAwLCAwLCAxNCwgMTIsIDksIDcsIDIsXG4gIDcsIDIsIDExLCAxLCA0LCAxNCwgMSwgNywgOSwgNCwgMTIsIDEwLCAxNCwgOCwgMiwgMTMsXG4gIDAsIDE1LCA2LCAxMiwgMTAsIDksIDEzLCAwLCAxNSwgMywgMywgNSwgNSwgNiwgOCwgMTFcbl07XG5cbmV4cG9ydHMuc3Vic3RpdHV0ZSA9IGZ1bmN0aW9uIHN1YnN0aXR1dGUoaW5MLCBpblIpIHtcbiAgdmFyIG91dCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIGIgPSAoaW5MID4+PiAoMTggLSBpICogNikpICYgMHgzZjtcbiAgICB2YXIgc2IgPSBzVGFibGVbaSAqIDB4NDAgKyBiXTtcblxuICAgIG91dCA8PD0gNDtcbiAgICBvdXQgfD0gc2I7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgYiA9IChpblIgPj4+ICgxOCAtIGkgKiA2KSkgJiAweDNmO1xuICAgIHZhciBzYiA9IHNUYWJsZVs0ICogMHg0MCArIGkgKiAweDQwICsgYl07XG5cbiAgICBvdXQgPDw9IDQ7XG4gICAgb3V0IHw9IHNiO1xuICB9XG4gIHJldHVybiBvdXQgPj4+IDA7XG59O1xuXG52YXIgcGVybXV0ZVRhYmxlID0gW1xuICAxNiwgMjUsIDEyLCAxMSwgMywgMjAsIDQsIDE1LCAzMSwgMTcsIDksIDYsIDI3LCAxNCwgMSwgMjIsXG4gIDMwLCAyNCwgOCwgMTgsIDAsIDUsIDI5LCAyMywgMTMsIDE5LCAyLCAyNiwgMTAsIDIxLCAyOCwgN1xuXTtcblxuZXhwb3J0cy5wZXJtdXRlID0gZnVuY3Rpb24gcGVybXV0ZShudW0pIHtcbiAgdmFyIG91dCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGVybXV0ZVRhYmxlLmxlbmd0aDsgaSsrKSB7XG4gICAgb3V0IDw8PSAxO1xuICAgIG91dCB8PSAobnVtID4+PiBwZXJtdXRlVGFibGVbaV0pICYgMHgxO1xuICB9XG4gIHJldHVybiBvdXQgPj4+IDA7XG59O1xuXG5leHBvcnRzLnBhZFNwbGl0ID0gZnVuY3Rpb24gcGFkU3BsaXQobnVtLCBzaXplLCBncm91cCkge1xuICB2YXIgc3RyID0gbnVtLnRvU3RyaW5nKDIpO1xuICB3aGlsZSAoc3RyLmxlbmd0aCA8IHNpemUpXG4gICAgc3RyID0gJzAnICsgc3RyO1xuXG4gIHZhciBvdXQgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpICs9IGdyb3VwKVxuICAgIG91dC5wdXNoKHN0ci5zbGljZShpLCBpICsgZ3JvdXApKTtcbiAgcmV0dXJuIG91dC5qb2luKCcgJyk7XG59O1xuIiwidmFyIGdlbmVyYXRlUHJpbWUgPSByZXF1aXJlKCcuL2xpYi9nZW5lcmF0ZVByaW1lJylcbnZhciBwcmltZXMgPSByZXF1aXJlKCcuL2xpYi9wcmltZXMuanNvbicpXG5cbnZhciBESCA9IHJlcXVpcmUoJy4vbGliL2RoJylcblxuZnVuY3Rpb24gZ2V0RGlmZmllSGVsbG1hbiAobW9kKSB7XG4gIHZhciBwcmltZSA9IG5ldyBCdWZmZXIocHJpbWVzW21vZF0ucHJpbWUsICdoZXgnKVxuICB2YXIgZ2VuID0gbmV3IEJ1ZmZlcihwcmltZXNbbW9kXS5nZW4sICdoZXgnKVxuXG4gIHJldHVybiBuZXcgREgocHJpbWUsIGdlbilcbn1cblxudmFyIEVOQ09ESU5HUyA9IHtcbiAgJ2JpbmFyeSc6IHRydWUsICdoZXgnOiB0cnVlLCAnYmFzZTY0JzogdHJ1ZVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEaWZmaWVIZWxsbWFuIChwcmltZSwgZW5jLCBnZW5lcmF0b3IsIGdlbmMpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihlbmMpIHx8IEVOQ09ESU5HU1tlbmNdID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gY3JlYXRlRGlmZmllSGVsbG1hbihwcmltZSwgJ2JpbmFyeScsIGVuYywgZ2VuZXJhdG9yKVxuICB9XG5cbiAgZW5jID0gZW5jIHx8ICdiaW5hcnknXG4gIGdlbmMgPSBnZW5jIHx8ICdiaW5hcnknXG4gIGdlbmVyYXRvciA9IGdlbmVyYXRvciB8fCBuZXcgQnVmZmVyKFsyXSlcblxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihnZW5lcmF0b3IpKSB7XG4gICAgZ2VuZXJhdG9yID0gbmV3IEJ1ZmZlcihnZW5lcmF0b3IsIGdlbmMpXG4gIH1cblxuICBpZiAodHlwZW9mIHByaW1lID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBuZXcgREgoZ2VuZXJhdGVQcmltZShwcmltZSwgZ2VuZXJhdG9yKSwgZ2VuZXJhdG9yLCB0cnVlKVxuICB9XG5cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpbWUpKSB7XG4gICAgcHJpbWUgPSBuZXcgQnVmZmVyKHByaW1lLCBlbmMpXG4gIH1cblxuICByZXR1cm4gbmV3IERIKHByaW1lLCBnZW5lcmF0b3IsIHRydWUpXG59XG5cbmV4cG9ydHMuRGlmZmllSGVsbG1hbkdyb3VwID0gZXhwb3J0cy5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXAgPSBleHBvcnRzLmdldERpZmZpZUhlbGxtYW4gPSBnZXREaWZmaWVIZWxsbWFuXG5leHBvcnRzLmNyZWF0ZURpZmZpZUhlbGxtYW4gPSBleHBvcnRzLkRpZmZpZUhlbGxtYW4gPSBjcmVhdGVEaWZmaWVIZWxsbWFuXG4iLCJ2YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIE1pbGxlclJhYmluID0gcmVxdWlyZSgnbWlsbGVyLXJhYmluJyk7XG52YXIgbWlsbGVyUmFiaW4gPSBuZXcgTWlsbGVyUmFiaW4oKTtcbnZhciBUV0VOVFlGT1VSID0gbmV3IEJOKDI0KTtcbnZhciBFTEVWRU4gPSBuZXcgQk4oMTEpO1xudmFyIFRFTiA9IG5ldyBCTigxMCk7XG52YXIgVEhSRUUgPSBuZXcgQk4oMyk7XG52YXIgU0VWRU4gPSBuZXcgQk4oNyk7XG52YXIgcHJpbWVzID0gcmVxdWlyZSgnLi9nZW5lcmF0ZVByaW1lJyk7XG52YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpO1xubW9kdWxlLmV4cG9ydHMgPSBESDtcblxuZnVuY3Rpb24gc2V0UHVibGljS2V5KHB1YiwgZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAndXRmOCc7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHB1YikpIHtcbiAgICBwdWIgPSBuZXcgQnVmZmVyKHB1YiwgZW5jKTtcbiAgfVxuICB0aGlzLl9wdWIgPSBuZXcgQk4ocHViKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIHNldFByaXZhdGVLZXkocHJpdiwgZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAndXRmOCc7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHByaXYpKSB7XG4gICAgcHJpdiA9IG5ldyBCdWZmZXIocHJpdiwgZW5jKTtcbiAgfVxuICB0aGlzLl9wcml2ID0gbmV3IEJOKHByaXYpO1xuICByZXR1cm4gdGhpcztcbn1cblxudmFyIHByaW1lQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGNoZWNrUHJpbWUocHJpbWUsIGdlbmVyYXRvcikge1xuICB2YXIgZ2VuID0gZ2VuZXJhdG9yLnRvU3RyaW5nKCdoZXgnKTtcbiAgdmFyIGhleCA9IFtnZW4sIHByaW1lLnRvU3RyaW5nKDE2KV0uam9pbignXycpO1xuICBpZiAoaGV4IGluIHByaW1lQ2FjaGUpIHtcbiAgICByZXR1cm4gcHJpbWVDYWNoZVtoZXhdO1xuICB9XG4gIHZhciBlcnJvciA9IDA7XG5cbiAgaWYgKHByaW1lLmlzRXZlbigpIHx8XG4gICAgIXByaW1lcy5zaW1wbGVTaWV2ZSB8fFxuICAgICFwcmltZXMuZmVybWF0VGVzdChwcmltZSkgfHxcbiAgICAhbWlsbGVyUmFiaW4udGVzdChwcmltZSkpIHtcbiAgICAvL25vdCBhIHByaW1lIHNvICsxXG4gICAgZXJyb3IgKz0gMTtcblxuICAgIGlmIChnZW4gPT09ICcwMicgfHwgZ2VuID09PSAnMDUnKSB7XG4gICAgICAvLyB3ZSdkIGJlIGFibGUgdG8gY2hlY2sgdGhlIGdlbmVyYXRvclxuICAgICAgLy8gaXQgd291bGQgZmFpbCBzbyArOFxuICAgICAgZXJyb3IgKz0gODtcbiAgICB9IGVsc2Uge1xuICAgICAgLy93ZSB3b3VsZG4ndCBiZSBhYmxlIHRvIHRlc3QgdGhlIGdlbmVyYXRvclxuICAgICAgLy8gc28gKzRcbiAgICAgIGVycm9yICs9IDQ7XG4gICAgfVxuICAgIHByaW1lQ2FjaGVbaGV4XSA9IGVycm9yO1xuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuICBpZiAoIW1pbGxlclJhYmluLnRlc3QocHJpbWUuc2hybigxKSkpIHtcbiAgICAvL25vdCBhIHNhZmUgcHJpbWVcbiAgICBlcnJvciArPSAyO1xuICB9XG4gIHZhciByZW07XG4gIHN3aXRjaCAoZ2VuKSB7XG4gICAgY2FzZSAnMDInOlxuICAgICAgaWYgKHByaW1lLm1vZChUV0VOVFlGT1VSKS5jbXAoRUxFVkVOKSkge1xuICAgICAgICAvLyB1bnN1aWRhYmxlIGdlbmVyYXRvclxuICAgICAgICBlcnJvciArPSA4O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnMDUnOlxuICAgICAgcmVtID0gcHJpbWUubW9kKFRFTik7XG4gICAgICBpZiAocmVtLmNtcChUSFJFRSkgJiYgcmVtLmNtcChTRVZFTikpIHtcbiAgICAgICAgLy8gcHJpbWUgbW9kIDEwIG5lZWRzIHRvIGVxdWFsIDMgb3IgN1xuICAgICAgICBlcnJvciArPSA4O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGVycm9yICs9IDQ7XG4gIH1cbiAgcHJpbWVDYWNoZVtoZXhdID0gZXJyb3I7XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZnVuY3Rpb24gREgocHJpbWUsIGdlbmVyYXRvciwgbWFsbGVhYmxlKSB7XG4gIHRoaXMuc2V0R2VuZXJhdG9yKGdlbmVyYXRvcik7XG4gIHRoaXMuX19wcmltZSA9IG5ldyBCTihwcmltZSk7XG4gIHRoaXMuX3ByaW1lID0gQk4ubW9udCh0aGlzLl9fcHJpbWUpO1xuICB0aGlzLl9wcmltZUxlbiA9IHByaW1lLmxlbmd0aDtcbiAgdGhpcy5fcHViID0gdW5kZWZpbmVkO1xuICB0aGlzLl9wcml2ID0gdW5kZWZpbmVkO1xuICB0aGlzLl9wcmltZUNvZGUgPSB1bmRlZmluZWQ7XG4gIGlmIChtYWxsZWFibGUpIHtcbiAgICB0aGlzLnNldFB1YmxpY0tleSA9IHNldFB1YmxpY0tleTtcbiAgICB0aGlzLnNldFByaXZhdGVLZXkgPSBzZXRQcml2YXRlS2V5O1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX3ByaW1lQ29kZSA9IDg7XG4gIH1cbn1cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShESC5wcm90b3R5cGUsICd2ZXJpZnlFcnJvcicsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9wcmltZUNvZGUgIT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLl9wcmltZUNvZGUgPSBjaGVja1ByaW1lKHRoaXMuX19wcmltZSwgdGhpcy5fX2dlbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9wcmltZUNvZGU7XG4gIH1cbn0pO1xuREgucHJvdG90eXBlLmdlbmVyYXRlS2V5cyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLl9wcml2KSB7XG4gICAgdGhpcy5fcHJpdiA9IG5ldyBCTihyYW5kb21CeXRlcyh0aGlzLl9wcmltZUxlbikpO1xuICB9XG4gIHRoaXMuX3B1YiA9IHRoaXMuX2dlbi50b1JlZCh0aGlzLl9wcmltZSkucmVkUG93KHRoaXMuX3ByaXYpLmZyb21SZWQoKTtcbiAgcmV0dXJuIHRoaXMuZ2V0UHVibGljS2V5KCk7XG59O1xuXG5ESC5wcm90b3R5cGUuY29tcHV0ZVNlY3JldCA9IGZ1bmN0aW9uIChvdGhlcikge1xuICBvdGhlciA9IG5ldyBCTihvdGhlcik7XG4gIG90aGVyID0gb3RoZXIudG9SZWQodGhpcy5fcHJpbWUpO1xuICB2YXIgc2VjcmV0ID0gb3RoZXIucmVkUG93KHRoaXMuX3ByaXYpLmZyb21SZWQoKTtcbiAgdmFyIG91dCA9IG5ldyBCdWZmZXIoc2VjcmV0LnRvQXJyYXkoKSk7XG4gIHZhciBwcmltZSA9IHRoaXMuZ2V0UHJpbWUoKTtcbiAgaWYgKG91dC5sZW5ndGggPCBwcmltZS5sZW5ndGgpIHtcbiAgICB2YXIgZnJvbnQgPSBuZXcgQnVmZmVyKHByaW1lLmxlbmd0aCAtIG91dC5sZW5ndGgpO1xuICAgIGZyb250LmZpbGwoMCk7XG4gICAgb3V0ID0gQnVmZmVyLmNvbmNhdChbZnJvbnQsIG91dF0pO1xuICB9XG4gIHJldHVybiBvdXQ7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0UHVibGljS2V5ID0gZnVuY3Rpb24gZ2V0UHVibGljS2V5KGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fcHViLCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLmdldFByaXZhdGVLZXkgPSBmdW5jdGlvbiBnZXRQcml2YXRlS2V5KGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fcHJpdiwgZW5jKTtcbn07XG5cbkRILnByb3RvdHlwZS5nZXRQcmltZSA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX19wcmltZSwgZW5jKTtcbn07XG5cbkRILnByb3RvdHlwZS5nZXRHZW5lcmF0b3IgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9nZW4sIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuc2V0R2VuZXJhdG9yID0gZnVuY3Rpb24gKGdlbiwgZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAndXRmOCc7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGdlbikpIHtcbiAgICBnZW4gPSBuZXcgQnVmZmVyKGdlbiwgZW5jKTtcbiAgfVxuICB0aGlzLl9fZ2VuID0gZ2VuO1xuICB0aGlzLl9nZW4gPSBuZXcgQk4oZ2VuKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBmb3JtYXRSZXR1cm5WYWx1ZShibiwgZW5jKSB7XG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKGJuLnRvQXJyYXkoKSk7XG4gIGlmICghZW5jKSB7XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVmLnRvU3RyaW5nKGVuYyk7XG4gIH1cbn1cbiIsInZhciByYW5kb21CeXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRQcmltZTtcbmZpbmRQcmltZS5zaW1wbGVTaWV2ZSA9IHNpbXBsZVNpZXZlO1xuZmluZFByaW1lLmZlcm1hdFRlc3QgPSBmZXJtYXRUZXN0O1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBUV0VOVFlGT1VSID0gbmV3IEJOKDI0KTtcbnZhciBNaWxsZXJSYWJpbiA9IHJlcXVpcmUoJ21pbGxlci1yYWJpbicpO1xudmFyIG1pbGxlclJhYmluID0gbmV3IE1pbGxlclJhYmluKCk7XG52YXIgT05FID0gbmV3IEJOKDEpO1xudmFyIFRXTyA9IG5ldyBCTigyKTtcbnZhciBGSVZFID0gbmV3IEJOKDUpO1xudmFyIFNJWFRFRU4gPSBuZXcgQk4oMTYpO1xudmFyIEVJR0hUID0gbmV3IEJOKDgpO1xudmFyIFRFTiA9IG5ldyBCTigxMCk7XG52YXIgVEhSRUUgPSBuZXcgQk4oMyk7XG52YXIgU0VWRU4gPSBuZXcgQk4oNyk7XG52YXIgRUxFVkVOID0gbmV3IEJOKDExKTtcbnZhciBGT1VSID0gbmV3IEJOKDQpO1xudmFyIFRXRUxWRSA9IG5ldyBCTigxMik7XG52YXIgcHJpbWVzID0gbnVsbDtcblxuZnVuY3Rpb24gX2dldFByaW1lcygpIHtcbiAgaWYgKHByaW1lcyAhPT0gbnVsbClcbiAgICByZXR1cm4gcHJpbWVzO1xuXG4gIHZhciBsaW1pdCA9IDB4MTAwMDAwO1xuICB2YXIgcmVzID0gW107XG4gIHJlc1swXSA9IDI7XG4gIGZvciAodmFyIGkgPSAxLCBrID0gMzsgayA8IGxpbWl0OyBrICs9IDIpIHtcbiAgICB2YXIgc3FydCA9IE1hdGguY2VpbChNYXRoLnNxcnQoaykpO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgaSAmJiByZXNbal0gPD0gc3FydDsgaisrKVxuICAgICAgaWYgKGsgJSByZXNbal0gPT09IDApXG4gICAgICAgIGJyZWFrO1xuXG4gICAgaWYgKGkgIT09IGogJiYgcmVzW2pdIDw9IHNxcnQpXG4gICAgICBjb250aW51ZTtcblxuICAgIHJlc1tpKytdID0gaztcbiAgfVxuICBwcmltZXMgPSByZXM7XG4gIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIHNpbXBsZVNpZXZlKHApIHtcbiAgdmFyIHByaW1lcyA9IF9nZXRQcmltZXMoKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHByaW1lcy5sZW5ndGg7IGkrKylcbiAgICBpZiAocC5tb2RuKHByaW1lc1tpXSkgPT09IDApIHtcbiAgICAgIGlmIChwLmNtcG4ocHJpbWVzW2ldKSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGZlcm1hdFRlc3QocCkge1xuICB2YXIgcmVkID0gQk4ubW9udChwKTtcbiAgcmV0dXJuIFRXTy50b1JlZChyZWQpLnJlZFBvdyhwLnN1Ym4oMSkpLmZyb21SZWQoKS5jbXBuKDEpID09PSAwO1xufVxuXG5mdW5jdGlvbiBmaW5kUHJpbWUoYml0cywgZ2VuKSB7XG4gIGlmIChiaXRzIDwgMTYpIHtcbiAgICAvLyB0aGlzIGlzIHdoYXQgb3BlbnNzbCBkb2VzXG4gICAgaWYgKGdlbiA9PT0gMiB8fCBnZW4gPT09IDUpIHtcbiAgICAgIHJldHVybiBuZXcgQk4oWzB4OGMsIDB4N2JdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBCTihbMHg4YywgMHgyN10pO1xuICAgIH1cbiAgfVxuICBnZW4gPSBuZXcgQk4oZ2VuKTtcblxuICB2YXIgbnVtLCBuMjtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIG51bSA9IG5ldyBCTihyYW5kb21CeXRlcyhNYXRoLmNlaWwoYml0cyAvIDgpKSk7XG4gICAgd2hpbGUgKG51bS5iaXRMZW5ndGgoKSA+IGJpdHMpIHtcbiAgICAgIG51bS5pc2hybigxKTtcbiAgICB9XG4gICAgaWYgKG51bS5pc0V2ZW4oKSkge1xuICAgICAgbnVtLmlhZGQoT05FKTtcbiAgICB9XG4gICAgaWYgKCFudW0udGVzdG4oMSkpIHtcbiAgICAgIG51bS5pYWRkKFRXTyk7XG4gICAgfVxuICAgIGlmICghZ2VuLmNtcChUV08pKSB7XG4gICAgICB3aGlsZSAobnVtLm1vZChUV0VOVFlGT1VSKS5jbXAoRUxFVkVOKSkge1xuICAgICAgICBudW0uaWFkZChGT1VSKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFnZW4uY21wKEZJVkUpKSB7XG4gICAgICB3aGlsZSAobnVtLm1vZChURU4pLmNtcChUSFJFRSkpIHtcbiAgICAgICAgbnVtLmlhZGQoRk9VUik7XG4gICAgICB9XG4gICAgfVxuICAgIG4yID0gbnVtLnNocm4oMSk7XG4gICAgaWYgKHNpbXBsZVNpZXZlKG4yKSAmJiBzaW1wbGVTaWV2ZShudW0pICYmXG4gICAgICBmZXJtYXRUZXN0KG4yKSAmJiBmZXJtYXRUZXN0KG51bSkgJiZcbiAgICAgIG1pbGxlclJhYmluLnRlc3QobjIpICYmIG1pbGxlclJhYmluLnRlc3QobnVtKSkge1xuICAgICAgcmV0dXJuIG51bTtcbiAgICB9XG4gIH1cblxufVxuIiwiKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFV0aWxzXG4gIGZ1bmN0aW9uIGFzc2VydCAodmFsLCBtc2cpIHtcbiAgICBpZiAoIXZhbCkgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xuICB9XG5cbiAgLy8gQ291bGQgdXNlIGBpbmhlcml0c2AgbW9kdWxlLCBidXQgZG9uJ3Qgd2FudCB0byBtb3ZlIGZyb20gc2luZ2xlIGZpbGVcbiAgLy8gYXJjaGl0ZWN0dXJlIHlldC5cbiAgZnVuY3Rpb24gaW5oZXJpdHMgKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGU7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKTtcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gIH1cblxuICAvLyBCTlxuXG4gIGZ1bmN0aW9uIEJOIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChCTi5pc0JOKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgdGhpcy53b3JkcyA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgLy8gUmVkdWN0aW9uIGNvbnRleHRcbiAgICB0aGlzLnJlZCA9IG51bGw7XG5cbiAgICBpZiAobnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gJ2xlJyB8fCBiYXNlID09PSAnYmUnKSB7XG4gICAgICAgIGVuZGlhbiA9IGJhc2U7XG4gICAgICAgIGJhc2UgPSAxMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdChudW1iZXIgfHwgMCwgYmFzZSB8fCAxMCwgZW5kaWFuIHx8ICdiZScpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJOO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQk4gPSBCTjtcbiAgfVxuXG4gIEJOLkJOID0gQk47XG4gIEJOLndvcmRTaXplID0gMjY7XG5cbiAgdmFyIEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5CdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBCdWZmZXIgPSB3aW5kb3cuQnVmZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gIH1cblxuICBCTi5pc0JOID0gZnVuY3Rpb24gaXNCTiAobnVtKSB7XG4gICAgaWYgKG51bSBpbnN0YW5jZW9mIEJOKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVtICE9PSBudWxsICYmIHR5cGVvZiBudW0gPT09ICdvYmplY3QnICYmXG4gICAgICBudW0uY29uc3RydWN0b3Iud29yZFNpemUgPT09IEJOLndvcmRTaXplICYmIEFycmF5LmlzQXJyYXkobnVtLndvcmRzKTtcbiAgfTtcblxuICBCTi5tYXggPSBmdW5jdGlvbiBtYXggKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA+IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5taW4gPSBmdW5jdGlvbiBtaW4gKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA8IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXROdW1iZXIobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXRBcnJheShudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBiYXNlID0gMTY7XG4gICAgfVxuICAgIGFzc2VydChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KTtcblxuICAgIG51bWJlciA9IG51bWJlci50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICBzdGFydCsrO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0IDwgbnVtYmVyLmxlbmd0aCkge1xuICAgICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICAgIHRoaXMuX3BhcnNlSGV4KG51bWJlciwgc3RhcnQsIGVuZGlhbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wYXJzZUJhc2UobnVtYmVyLCBiYXNlLCBzdGFydCk7XG4gICAgICAgIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgICAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0TnVtYmVyID0gZnVuY3Rpb24gX2luaXROdW1iZXIgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDB4NDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgbnVtYmVyICYgMHgzZmZmZmZmIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPCAweDEwMDAwMDAwMDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobnVtYmVyIDwgMHgyMDAwMDAwMDAwMDAwMCk7IC8vIDIgXiA1MyAodW5zYWZlKVxuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZixcbiAgICAgICAgMVxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICAvLyBSZXZlcnNlIHRoZSBieXRlc1xuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXRBcnJheSA9IGZ1bmN0aW9uIF9pbml0QXJyYXkgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgLy8gUGVyaGFwcyBhIFVpbnQ4QXJyYXlcbiAgICBhc3NlcnQodHlwZW9mIG51bWJlci5sZW5ndGggPT09ICdudW1iZXInKTtcbiAgICBpZiAobnVtYmVyLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbChudW1iZXIubGVuZ3RoIC8gMyk7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMSwgaiA9IDA7IGkgPj0gMDsgaSAtPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgLSAxXSA8PCA4KSB8IChudW1iZXJbaSAtIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpICsgMV0gPDwgOCkgfCAobnVtYmVyW2kgKyAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUhleDRCaXRzIChzdHJpbmcsIGluZGV4KSB7XG4gICAgdmFyIGMgPSBzdHJpbmcuY2hhckNvZGVBdChpbmRleCk7XG4gICAgLy8gJ0EnIC0gJ0YnXG4gICAgaWYgKGMgPj0gNjUgJiYgYyA8PSA3MCkge1xuICAgICAgcmV0dXJuIGMgLSA1NTtcbiAgICAvLyAnYScgLSAnZidcbiAgICB9IGVsc2UgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMDIpIHtcbiAgICAgIHJldHVybiBjIC0gODc7XG4gICAgLy8gJzAnIC0gJzknXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoYyAtIDQ4KSAmIDB4ZjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUhleEJ5dGUgKHN0cmluZywgbG93ZXJCb3VuZCwgaW5kZXgpIHtcbiAgICB2YXIgciA9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCk7XG4gICAgaWYgKGluZGV4IC0gMSA+PSBsb3dlckJvdW5kKSB7XG4gICAgICByIHw9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCAtIDEpIDw8IDQ7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUhleCA9IGZ1bmN0aW9uIF9wYXJzZUhleCAobnVtYmVyLCBzdGFydCwgZW5kaWFuKSB7XG4gICAgLy8gQ3JlYXRlIHBvc3NpYmx5IGJpZ2dlciBhcnJheSB0byBlbnN1cmUgdGhhdCBpdCBmaXRzIHRoZSBudW1iZXJcbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbCgobnVtYmVyLmxlbmd0aCAtIHN0YXJ0KSAvIDYpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgLy8gMjQtYml0cyBjaHVua3NcbiAgICB2YXIgb2ZmID0gMDtcbiAgICB2YXIgaiA9IDA7XG5cbiAgICB2YXIgdztcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMTsgaSA+PSBzdGFydDsgaSAtPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhcnNlTGVuZ3RoID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgICAgZm9yIChpID0gcGFyc2VMZW5ndGggJSAyID09PSAwID8gc3RhcnQgKyAxIDogc3RhcnQ7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIHIgKz0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICByICs9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUJhc2UgPSBmdW5jdGlvbiBfcGFyc2VCYXNlIChudW1iZXIsIGJhc2UsIHN0YXJ0KSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBhcyB6ZXJvXG4gICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA+IDEgJiYgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX25vcm1TaWduID0gZnVuY3Rpb24gX25vcm1TaWduICgpIHtcbiAgICAvLyAtMCA9IDBcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH07XG5cbiAgLypcblxuICB2YXIgemVyb3MgPSBbXTtcbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXTtcbiAgdmFyIGdyb3VwQmFzZXMgPSBbXTtcblxuICB2YXIgcyA9ICcnO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgQk4ud29yZFNpemUpIHtcbiAgICB6ZXJvc1tpXSA9IHM7XG4gICAgcyArPSAnMCc7XG4gIH1cbiAgZ3JvdXBTaXplc1swXSA9IDA7XG4gIGdyb3VwU2l6ZXNbMV0gPSAwO1xuICBncm91cEJhc2VzWzBdID0gMDtcbiAgZ3JvdXBCYXNlc1sxXSA9IDA7XG4gIHZhciBiYXNlID0gMiAtIDE7XG4gIHdoaWxlICgrK2Jhc2UgPCAzNiArIDEpIHtcbiAgICB2YXIgZ3JvdXBTaXplID0gMDtcbiAgICB2YXIgZ3JvdXBCYXNlID0gMTtcbiAgICB3aGlsZSAoZ3JvdXBCYXNlIDwgKDEgPDwgQk4ud29yZFNpemUpIC8gYmFzZSkge1xuICAgICAgZ3JvdXBCYXNlICo9IGJhc2U7XG4gICAgICBncm91cFNpemUgKz0gMTtcbiAgICB9XG4gICAgZ3JvdXBTaXplc1tiYXNlXSA9IGdyb3VwU2l6ZTtcbiAgICBncm91cEJhc2VzW2Jhc2VdID0gZ3JvdXBCYXNlO1xuICB9XG5cbiAgKi9cblxuICB2YXIgemVyb3MgPSBbXG4gICAgJycsXG4gICAgJzAnLFxuICAgICcwMCcsXG4gICAgJzAwMCcsXG4gICAgJzAwMDAnLFxuICAgICcwMDAwMCcsXG4gICAgJzAwMDAwMCcsXG4gICAgJzAwMDAwMDAnLFxuICAgICcwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gIF07XG5cbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXG4gICAgMCwgMCxcbiAgICAyNSwgMTYsIDEyLCAxMSwgMTAsIDksIDgsXG4gICAgOCwgNywgNywgNywgNywgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNVxuICBdO1xuXG4gIHZhciBncm91cEJhc2VzID0gW1xuICAgIDAsIDAsXG4gICAgMzM1NTQ0MzIsIDQzMDQ2NzIxLCAxNjc3NzIxNiwgNDg4MjgxMjUsIDYwNDY2MTc2LCA0MDM1MzYwNywgMTY3NzcyMTYsXG4gICAgNDMwNDY3MjEsIDEwMDAwMDAwLCAxOTQ4NzE3MSwgMzU4MzE4MDgsIDYyNzQ4NTE3LCA3NTI5NTM2LCAxMTM5MDYyNSxcbiAgICAxNjc3NzIxNiwgMjQxMzc1NjksIDM0MDEyMjI0LCA0NzA0NTg4MSwgNjQwMDAwMDAsIDQwODQxMDEsIDUxNTM2MzIsXG4gICAgNjQzNjM0MywgNzk2MjYyNCwgOTc2NTYyNSwgMTE4ODEzNzYsIDE0MzQ4OTA3LCAxNzIxMDM2OCwgMjA1MTExNDksXG4gICAgMjQzMDAwMDAsIDI4NjI5MTUxLCAzMzU1NDQzMiwgMzkxMzUzOTMsIDQ1NDM1NDI0LCA1MjUyMTg3NSwgNjA0NjYxNzZcbiAgXTtcblxuICBCTi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYmFzZSwgcGFkZGluZykge1xuICAgIGJhc2UgPSBiYXNlIHx8IDEwO1xuICAgIHBhZGRpbmcgPSBwYWRkaW5nIHwgMCB8fCAxO1xuXG4gICAgdmFyIG91dDtcbiAgICBpZiAoYmFzZSA9PT0gMTYgfHwgYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIG9mZiA9IDA7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgICAgdmFyIHdvcmQgPSAoKCh3IDw8IG9mZikgfCBjYXJyeSkgJiAweGZmZmZmZikudG9TdHJpbmcoMTYpO1xuICAgICAgICBjYXJyeSA9ICh3ID4+PiAoMjQgLSBvZmYpKSAmIDB4ZmZmZmZmO1xuICAgICAgICBpZiAoY2FycnkgIT09IDAgfHwgaSAhPT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbNiAtIHdvcmQubGVuZ3RoXSArIHdvcmQgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gd29yZCArIG91dDtcbiAgICAgICAgfVxuICAgICAgICBvZmYgKz0gMjtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgICBvdXQgPSBjYXJyeS50b1N0cmluZygxNikgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNikge1xuICAgICAgLy8gdmFyIGdyb3VwU2l6ZSA9IE1hdGguZmxvb3IoQk4ud29yZFNpemUgKiBNYXRoLkxOMiAvIE1hdGgubG9nKGJhc2UpKTtcbiAgICAgIHZhciBncm91cFNpemUgPSBncm91cFNpemVzW2Jhc2VdO1xuICAgICAgLy8gdmFyIGdyb3VwQmFzZSA9IE1hdGgucG93KGJhc2UsIGdyb3VwU2l6ZSk7XG4gICAgICB2YXIgZ3JvdXBCYXNlID0gZ3JvdXBCYXNlc1tiYXNlXTtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIGMgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjLm5lZ2F0aXZlID0gMDtcbiAgICAgIHdoaWxlICghYy5pc1plcm8oKSkge1xuICAgICAgICB2YXIgciA9IGMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgICB2YXIgbGl0dGxlRW5kaWFuID0gZW5kaWFuID09PSAnbGUnO1xuICAgIHZhciByZXMgPSBuZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7XG5cbiAgICB2YXIgYiwgaTtcbiAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKTtcbiAgICBpZiAoIWxpdHRsZUVuZGlhbikge1xuICAgICAgLy8gQXNzdW1lIGJpZy1lbmRpYW5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXFMZW5ndGggLSBieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW3JlcUxlbmd0aCAtIGkgLSAxXSA9IGI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tpXSA9IGI7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBpIDwgcmVxTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSAmICgxIDw8IHdiaXQpKSA+Pj4gd2JpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdztcbiAgfVxuXG4gIC8vIE51bWJlciBvZiB0cmFpbGluZyB6ZXJvIGJpdHNcbiAgQk4ucHJvdG90eXBlLnplcm9CaXRzID0gZnVuY3Rpb24gemVyb0JpdHMgKCkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gMDtcblxuICAgIHZhciByID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBiID0gdGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7XG4gICAgICByICs9IGI7XG4gICAgICBpZiAoYiAhPT0gMjYpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIGJ5dGVMZW5ndGggKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKSAvIDgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1R3b3MgPSBmdW5jdGlvbiB0b1R3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVR3b3MgPSBmdW5jdGlvbiBmcm9tVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy50ZXN0bih3aWR0aCAtIDEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RuKHdpZHRoKS5pYWRkbigxKS5pbmVnKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gaXNOZWcgKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlICE9PSAwO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluZWcgPSBmdW5jdGlvbiBpbmVnICgpIHtcbiAgICBpZiAoIXRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVvciA9IGZ1bmN0aW9uIGl1b3IgKG51bSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSB8IG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXhvciA9IGZ1bmN0aW9uIGl4b3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1eG9yKG51bSk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5peG9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51eG9yID0gZnVuY3Rpb24gdXhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKTtcbiAgfTtcblxuICAvLyBOb3QgYGB0aGlzYGAgd2l0aCBgYHdpZHRoYGAgYml0d2lkdGhcbiAgQk4ucHJvdG90eXBlLmlub3RuID0gZnVuY3Rpb24gaW5vdG4gKHdpZHRoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgJiYgd2lkdGggPj0gMCk7XG5cbiAgICB2YXIgYnl0ZXNOZWVkZWQgPSBNYXRoLmNlaWwod2lkdGggLyAyNikgfCAwO1xuICAgIHZhciBiaXRzTGVmdCA9IHdpZHRoICUgMjY7XG5cbiAgICAvLyBFeHRlbmQgdGhlIGJ1ZmZlciB3aXRoIGxlYWRpbmcgemVyb2VzXG4gICAgdGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtcblxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIGJ5dGVzTmVlZGVkLS07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRlIHdvcmRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlc05lZWRlZDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRoZSByZXNpZHVlXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgKDB4M2ZmZmZmZiA+PiAoMjYgLSBiaXRzTGVmdCkpO1xuICAgIH1cblxuICAgIC8vIEFuZCByZW1vdmUgbGVhZGluZyB6ZXJvZXNcbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gc21hbGxNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIHZhciBsZW4gPSAoc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoKSB8IDA7XG4gICAgb3V0Lmxlbmd0aCA9IGxlbjtcbiAgICBsZW4gPSAobGVuIC0gMSkgfCAwO1xuXG4gICAgLy8gUGVlbCBvbmUgaXRlcmF0aW9uIChjb21waWxlciBjYW4ndCBkbyBpdCwgYmVjYXVzZSBvZiBjb2RlIGNvbXBsZXhpdHkpXG4gICAgdmFyIGEgPSBzZWxmLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgYiA9IG51bS53b3Jkc1swXSB8IDA7XG4gICAgdmFyIHIgPSBhICogYjtcblxuICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgdmFyIGNhcnJ5ID0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICBvdXQud29yZHNbMF0gPSBsbztcblxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gY2FycnkgPj4+IDI2O1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSAoayAtIGopIHwgMDtcbiAgICAgICAgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgciA9IGEgKiBiICsgcndvcmQ7XG4gICAgICAgIG5jYXJyeSArPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgICByd29yZCA9IHIgJiAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZCB8IDA7XG4gICAgICBjYXJyeSA9IG5jYXJyeSB8IDA7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2FycnkgfCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNobG4gPSBmdW5jdGlvbiBpc2hsbiAoYml0cykge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHQgaW4tcGxhY2VcbiAgLy8gTk9URTogYGhpbnRgIGlzIGEgbG93ZXN0IGJpdCBiZWZvcmUgdHJhaWxpbmcgemVyb2VzXG4gIC8vIE5PVEU6IGlmIGBleHRlbmRlZGAgaXMgcHJlc2VudCAtIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggZGVzdHJveWVkIGJpdHNcbiAgQk4ucHJvdG90eXBlLml1c2hybiA9IGZ1bmN0aW9uIGl1c2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIGg7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIGggPSAoaGludCAtIChoaW50ICUgMjYpKSAvIDI2O1xuICAgIH0gZWxzZSB7XG4gICAgICBoID0gMDtcbiAgICB9XG5cbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IE1hdGgubWluKChiaXRzIC0gcikgLyAyNiwgdGhpcy5sZW5ndGgpO1xuICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgIHZhciBtYXNrZWRXb3JkcyA9IGV4dGVuZGVkO1xuXG4gICAgaCAtPSBzO1xuICAgIGggPSBNYXRoLm1heCgwLCBoKTtcblxuICAgIC8vIEV4dGVuZGVkIG1vZGUsIGNvcHkgbWFza2VkIHBhcnRcbiAgICBpZiAobWFza2VkV29yZHMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIG1hc2tlZFdvcmRzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICAgIG1hc2tlZFdvcmRzLmxlbmd0aCA9IHM7XG4gICAgfVxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIC8vIE5vLW9wLCB3ZSBzaG91bGQgbm90IG1vdmUgYW55dGhpbmcgYXQgYWxsXG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IHMpIHtcbiAgICAgIHRoaXMubGVuZ3RoIC09IHM7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpICsgc107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDAgJiYgKGNhcnJ5ICE9PSAwIHx8IGkgPj0gaCk7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAoY2FycnkgPDwgKDI2IC0gcikpIHwgKHdvcmQgPj4+IHIpO1xuICAgICAgY2FycnkgPSB3b3JkICYgbWFzaztcbiAgICB9XG5cbiAgICAvLyBQdXNoIGNhcnJpZWQgYml0cyBhcyBhIG1hc2tcbiAgICBpZiAobWFza2VkV29yZHMgJiYgY2FycnkgIT09IDApIHtcbiAgICAgIG1hc2tlZFdvcmRzLndvcmRzW21hc2tlZFdvcmRzLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyLnN0cmlwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NCBpbnN0YW5jZVxuICAgICAgICByLnN0cmlwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByIGlzIEJOIHY1IGluc3RhbmNlXG4gICAgICAgIHIuX3N0cmlwKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0KSB7XG4gICAgaW5wdXQuaXVzaHJuKHRoaXMubiwgMCwgb3V0KTtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIHJldHVybiBudW0uaW11bCh0aGlzLmspO1xuICB9O1xuXG4gIGZ1bmN0aW9uIEsyNTYgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdrMjU2JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZicpO1xuICB9XG4gIGluaGVyaXRzKEsyNTYsIE1QcmltZSk7XG5cbiAgSzI1Ni5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dHB1dCkge1xuICAgIC8vIDI1NiA9IDkgKiAyNiArIDIyXG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZjtcblxuICAgIHZhciBvdXRMZW4gPSBNYXRoLm1pbihpbnB1dC5sZW5ndGgsIDkpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0TGVuOyBpKyspIHtcbiAgICAgIG91dHB1dC53b3Jkc1tpXSA9IGlucHV0LndvcmRzW2ldO1xuICAgIH1cbiAgICBvdXRwdXQubGVuZ3RoID0gb3V0TGVuO1xuXG4gICAgaWYgKGlucHV0Lmxlbmd0aCA8PSA5KSB7XG4gICAgICBpbnB1dC53b3Jkc1swXSA9IDA7XG4gICAgICBpbnB1dC5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNoaWZ0IGJ5IDkgbGltYnNcbiAgICB2YXIgcHJldiA9IGlucHV0LndvcmRzWzldO1xuICAgIG91dHB1dC53b3Jkc1tvdXRwdXQubGVuZ3RoKytdID0gcHJldiAmIG1hc2s7XG5cbiAgICBmb3IgKGkgPSAxMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmV4dCA9IGlucHV0LndvcmRzW2ldIHwgMDtcbiAgICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSAoKG5leHQgJiBtYXNrKSA8PCA0KSB8IChwcmV2ID4+PiAyMik7XG4gICAgICBwcmV2ID0gbmV4dDtcbiAgICB9XG4gICAgcHJldiA+Pj49IDIyO1xuICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSBwcmV2O1xuICAgIGlmIChwcmV2ID09PSAwICYmIGlucHV0Lmxlbmd0aCA+IDEwKSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gMTA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSA5O1xuICAgIH1cbiAgfTtcblxuICBLMjU2LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxMDAwMDAzZDEgPSBbIDB4NDAsIDB4M2QxIF1cbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aF0gPSAwO1xuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoICsgMV0gPSAwO1xuICAgIG51bS5sZW5ndGggKz0gMjtcblxuICAgIC8vIGJvdW5kZWQgYXQ6IDB4NDAgKiAweDNmZmZmZmYgKyAweDNkMCA9IDB4MTAwMDAwMzkwXG4gICAgdmFyIGxvID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSBudW0ud29yZHNbaV0gfCAwO1xuICAgICAgbG8gKz0gdyAqIDB4M2QxO1xuICAgICAgbnVtLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICBsbyA9IHcgKiAweDQwICsgKChsbyAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICB9XG5cbiAgICAvLyBGYXN0IGxlbmd0aCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIGZ1bmN0aW9uIFAyMjQgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMjI0JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScpO1xuICB9XG4gIGluaGVyaXRzKFAyMjQsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDE5MiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AxOTInLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDE5MiwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMjU1MTkgKCkge1xuICAgIC8vIDIgXiAyNTUgLSAxOVxuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICcyNTUxOScsXG4gICAgICAnN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCcpO1xuICB9XG4gIGluaGVyaXRzKFAyNTUxOSwgTVByaW1lKTtcblxuICBQMjU1MTkucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEzXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGhpID0gKG51bS53b3Jkc1tpXSB8IDApICogMHgxMyArIGNhcnJ5O1xuICAgICAgdmFyIGxvID0gaGkgJiAweDNmZmZmZmY7XG4gICAgICBoaSA+Pj49IDI2O1xuXG4gICAgICBudW0ud29yZHNbaV0gPSBsbztcbiAgICAgIGNhcnJ5ID0gaGk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgbnVtLndvcmRzW251bS5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICAvLyBFeHBvcnRlZCBtb3N0bHkgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHVzZSBwbGFpbiBuYW1lIGluc3RlYWRcbiAgQk4uX3ByaW1lID0gZnVuY3Rpb24gcHJpbWUgKG5hbWUpIHtcbiAgICAvLyBDYWNoZWQgdmVyc2lvbiBvZiBwcmltZVxuICAgIGlmIChwcmltZXNbbmFtZV0pIHJldHVybiBwcmltZXNbbmFtZV07XG5cbiAgICB2YXIgcHJpbWU7XG4gICAgaWYgKG5hbWUgPT09ICdrMjU2Jykge1xuICAgICAgcHJpbWUgPSBuZXcgSzI1NigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyMjQnKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjI0KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDE5MicpIHtcbiAgICAgIHByaW1lID0gbmV3IFAxOTIoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjU1MTknKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjU1MTkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByaW1lICcgKyBuYW1lKTtcbiAgICB9XG4gICAgcHJpbWVzW25hbWVdID0gcHJpbWU7XG5cbiAgICByZXR1cm4gcHJpbWU7XG4gIH07XG5cbiAgLy9cbiAgLy8gQmFzZSByZWR1Y3Rpb24gZW5naW5lXG4gIC8vXG4gIGZ1bmN0aW9uIFJlZCAobSkge1xuICAgIGlmICh0eXBlb2YgbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBwcmltZSA9IEJOLl9wcmltZShtKTtcbiAgICAgIHRoaXMubSA9IHByaW1lLnA7XG4gICAgICB0aGlzLnByaW1lID0gcHJpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChtLmd0bigxKSwgJ21vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMScpO1xuICAgICAgdGhpcy5tID0gbTtcbiAgICAgIHRoaXMucHJpbWUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTEgPSBmdW5jdGlvbiBfdmVyaWZ5MSAoYSkge1xuICAgIGFzc2VydChhLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQsICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MiA9IGZ1bmN0aW9uIF92ZXJpZnkyIChhLCBiKSB7XG4gICAgYXNzZXJ0KChhLm5lZ2F0aXZlIHwgYi5uZWdhdGl2ZSkgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCAmJiBhLnJlZCA9PT0gYi5yZWQsXG4gICAgICAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW1vZCA9IGZ1bmN0aW9uIGltb2QgKGEpIHtcbiAgICBpZiAodGhpcy5wcmltZSkgcmV0dXJuIHRoaXMucHJpbWUuaXJlZHVjZShhKS5fZm9yY2VSZWQodGhpcyk7XG4gICAgcmV0dXJuIGEudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm0uc3ViKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5hZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlhZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLnN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlzdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNobCA9IGZ1bmN0aW9uIHNobCAoYSwgbnVtKSB7XG4gICAgdGhpcy5fdmVyaWZ5MShhKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEudXNobG4obnVtKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLmltdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEubXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bChhLCBhLmNsb25lKCkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKGEsIGEpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FydCA9IGZ1bmN0aW9uIHNxcnQgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciBtb2QzID0gdGhpcy5tLmFuZGxuKDMpO1xuICAgIGFzc2VydChtb2QzICUgMiA9PT0gMSk7XG5cbiAgICAvLyBGYXN0IGNhc2VcbiAgICBpZiAobW9kMyA9PT0gMykge1xuICAgICAgdmFyIHBvdyA9IHRoaXMubS5hZGQobmV3IEJOKDEpKS5pdXNocm4oMik7XG4gICAgICByZXR1cm4gdGhpcy5wb3coYSwgcG93KTtcbiAgICB9XG5cbiAgICAvLyBUb25lbGxpLVNoYW5rcyBhbGdvcml0aG0gKFRvdGFsbHkgdW5vcHRpbWl6ZWQgYW5kIHNsb3cpXG4gICAgLy9cbiAgICAvLyBGaW5kIFEgYW5kIFMsIHRoYXQgUSAqIDIgXiBTID0gKFAgLSAxKVxuICAgIHZhciBxID0gdGhpcy5tLnN1Ym4oMSk7XG4gICAgdmFyIHMgPSAwO1xuICAgIHdoaWxlICghcS5pc1plcm8oKSAmJiBxLmFuZGxuKDEpID09PSAwKSB7XG4gICAgICBzKys7XG4gICAgICBxLml1c2hybigxKTtcbiAgICB9XG4gICAgYXNzZXJ0KCFxLmlzWmVybygpKTtcblxuICAgIHZhciBvbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgdmFyIG5PbmUgPSBvbmUucmVkTmVnKCk7XG5cbiAgICAvLyBGaW5kIHF1YWRyYXRpYyBub24tcmVzaWR1ZVxuICAgIC8vIE5PVEU6IE1heCBpcyBzdWNoIGJlY2F1c2Ugb2YgZ2VuZXJhbGl6ZWQgUmllbWFubiBoeXBvdGhlc2lzLlxuICAgIHZhciBscG93ID0gdGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpO1xuICAgIHZhciB6ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIHogPSBuZXcgQk4oMiAqIHogKiB6KS50b1JlZCh0aGlzKTtcblxuICAgIHdoaWxlICh0aGlzLnBvdyh6LCBscG93KS5jbXAobk9uZSkgIT09IDApIHtcbiAgICAgIHoucmVkSUFkZChuT25lKTtcbiAgICB9XG5cbiAgICB2YXIgYyA9IHRoaXMucG93KHosIHEpO1xuICAgIHZhciByID0gdGhpcy5wb3coYSwgcS5hZGRuKDEpLml1c2hybigxKSk7XG4gICAgdmFyIHQgPSB0aGlzLnBvdyhhLCBxKTtcbiAgICB2YXIgbSA9IHM7XG4gICAgd2hpbGUgKHQuY21wKG9uZSkgIT09IDApIHtcbiAgICAgIHZhciB0bXAgPSB0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IHRtcC5jbXAob25lKSAhPT0gMDsgaSsrKSB7XG4gICAgICAgIHRtcCA9IHRtcC5yZWRTcXIoKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydChpIDwgbSk7XG4gICAgICB2YXIgYiA9IHRoaXMucG93KGMsIG5ldyBCTigxKS5pdXNobG4obSAtIGkgLSAxKSk7XG5cbiAgICAgIHIgPSByLnJlZE11bChiKTtcbiAgICAgIGMgPSBiLnJlZFNxcigpO1xuICAgICAgdCA9IHQucmVkTXVsKGMpO1xuICAgICAgbSA9IGk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIHZhciBpbnYgPSBhLl9pbnZtcCh0aGlzLm0pO1xuICAgIGlmIChpbnYubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGludi5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludikucmVkTmVnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KTtcbiAgICB9XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKGEsIG51bSkge1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgaWYgKG51bS5jbXBuKDEpID09PSAwKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIHdpbmRvd1NpemUgPSA0O1xuICAgIHZhciB3bmQgPSBuZXcgQXJyYXkoMSA8PCB3aW5kb3dTaXplKTtcbiAgICB3bmRbMF0gPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgd25kWzFdID0gYTtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IHduZC5sZW5ndGg7IGkrKykge1xuICAgICAgd25kW2ldID0gdGhpcy5tdWwod25kW2kgLSAxXSwgYSk7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IHduZFswXTtcbiAgICB2YXIgY3VycmVudCA9IDA7XG4gICAgdmFyIGN1cnJlbnRMZW4gPSAwO1xuICAgIHZhciBzdGFydCA9IG51bS5iaXRMZW5ndGgoKSAlIDI2O1xuICAgIGlmIChzdGFydCA9PT0gMCkge1xuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSBudW0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gbnVtLndvcmRzW2ldO1xuICAgICAgZm9yICh2YXIgaiA9IHN0YXJ0IC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgdmFyIGJpdCA9ICh3b3JkID4+IGopICYgMTtcbiAgICAgICAgaWYgKHJlcyAhPT0gd25kWzBdKSB7XG4gICAgICAgICAgcmVzID0gdGhpcy5zcXIocmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXQgPT09IDAgJiYgY3VycmVudCA9PT0gMCkge1xuICAgICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudCA8PD0gMTtcbiAgICAgICAgY3VycmVudCB8PSBiaXQ7XG4gICAgICAgIGN1cnJlbnRMZW4rKztcbiAgICAgICAgaWYgKGN1cnJlbnRMZW4gIT09IHdpbmRvd1NpemUgJiYgKGkgIT09IDAgfHwgaiAhPT0gMCkpIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHRoaXMubXVsKHJlcywgd25kW2N1cnJlbnRdKTtcbiAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgIGN1cnJlbnQgPSAwO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICB2YXIgciA9IG51bS51bW9kKHRoaXMubSk7XG5cbiAgICByZXR1cm4gciA9PT0gbnVtID8gci5jbG9uZSgpIDogcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByZXMgPSBudW0uY2xvbmUoKTtcbiAgICByZXMucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vXG4gIC8vIE1vbnRnb21lcnkgbWV0aG9kIGVuZ2luZVxuICAvL1xuXG4gIEJOLm1vbnQgPSBmdW5jdGlvbiBtb250IChudW0pIHtcbiAgICByZXR1cm4gbmV3IE1vbnQobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBNb250IChtKSB7XG4gICAgUmVkLmNhbGwodGhpcywgbSk7XG5cbiAgICB0aGlzLnNoaWZ0ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIGlmICh0aGlzLnNoaWZ0ICUgMjYgIT09IDApIHtcbiAgICAgIHRoaXMuc2hpZnQgKz0gMjYgLSAodGhpcy5zaGlmdCAlIDI2KTtcbiAgICB9XG5cbiAgICB0aGlzLnIgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpO1xuICAgIHRoaXMucjIgPSB0aGlzLmltb2QodGhpcy5yLnNxcigpKTtcbiAgICB0aGlzLnJpbnYgPSB0aGlzLnIuX2ludm1wKHRoaXMubSk7XG5cbiAgICB0aGlzLm1pbnYgPSB0aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSk7XG4gICAgdGhpcy5taW52ID0gdGhpcy5taW52LnVtb2QodGhpcy5yKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLnIuc3ViKHRoaXMubWludik7XG4gIH1cbiAgaW5oZXJpdHMoTW9udCwgUmVkKTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmltb2QobnVtLnVzaGxuKHRoaXMuc2hpZnQpKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgciA9IHRoaXMuaW1vZChudW0ubXVsKHRoaXMucmludikpO1xuICAgIHIucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHtcbiAgICAgIGEud29yZHNbMF0gPSAwO1xuICAgICAgYS5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgdmFyIHQgPSBhLmltdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG5cbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMCkuX2ZvcmNlUmVkKHRoaXMpO1xuXG4gICAgdmFyIHQgPSBhLm11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgLy8gKEFSKV4tMSAqIFJeMiA9IChBXi0xICogUl4tMSkgKiBSXjIgPSBBXi0xICogUlxuICAgIHZhciByZXMgPSB0aGlzLmltb2QoYS5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpO1xuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xufSkodHlwZW9mIG1vZHVsZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbW9kdWxlLCB0aGlzKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGVsbGlwdGljID0gZXhwb3J0cztcblxuZWxsaXB0aWMudmVyc2lvbiA9IHJlcXVpcmUoJy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb247XG5lbGxpcHRpYy51dGlscyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvdXRpbHMnKTtcbmVsbGlwdGljLnJhbmQgPSByZXF1aXJlKCdicm9yYW5kJyk7XG5lbGxpcHRpYy5jdXJ2ZSA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvY3VydmUnKTtcbmVsbGlwdGljLmN1cnZlcyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvY3VydmVzJyk7XG5cbi8vIFByb3RvY29sc1xuZWxsaXB0aWMuZWMgPSByZXF1aXJlKCcuL2VsbGlwdGljL2VjJyk7XG5lbGxpcHRpYy5lZGRzYSA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvZWRkc2EnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgZ2V0TkFGID0gdXRpbHMuZ2V0TkFGO1xudmFyIGdldEpTRiA9IHV0aWxzLmdldEpTRjtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEJhc2VDdXJ2ZSh0eXBlLCBjb25mKSB7XG4gIHRoaXMudHlwZSA9IHR5cGU7XG4gIHRoaXMucCA9IG5ldyBCTihjb25mLnAsIDE2KTtcblxuICAvLyBVc2UgTW9udGdvbWVyeSwgd2hlbiB0aGVyZSBpcyBubyBmYXN0IHJlZHVjdGlvbiBmb3IgdGhlIHByaW1lXG4gIHRoaXMucmVkID0gY29uZi5wcmltZSA/IEJOLnJlZChjb25mLnByaW1lKSA6IEJOLm1vbnQodGhpcy5wKTtcblxuICAvLyBVc2VmdWwgZm9yIG1hbnkgY3VydmVzXG4gIHRoaXMuemVybyA9IG5ldyBCTigwKS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMub25lID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy50d28gPSBuZXcgQk4oMikudG9SZWQodGhpcy5yZWQpO1xuXG4gIC8vIEN1cnZlIGNvbmZpZ3VyYXRpb24sIG9wdGlvbmFsXG4gIHRoaXMubiA9IGNvbmYubiAmJiBuZXcgQk4oY29uZi5uLCAxNik7XG4gIHRoaXMuZyA9IGNvbmYuZyAmJiB0aGlzLnBvaW50RnJvbUpTT04oY29uZi5nLCBjb25mLmdSZWQpO1xuXG4gIC8vIFRlbXBvcmFyeSBhcnJheXNcbiAgdGhpcy5fd25hZlQxID0gbmV3IEFycmF5KDQpO1xuICB0aGlzLl93bmFmVDIgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX3duYWZUMyA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fd25hZlQ0ID0gbmV3IEFycmF5KDQpO1xuXG4gIHRoaXMuX2JpdExlbmd0aCA9IHRoaXMubiA/IHRoaXMubi5iaXRMZW5ndGgoKSA6IDA7XG5cbiAgLy8gR2VuZXJhbGl6ZWQgR3JlZyBNYXh3ZWxsJ3MgdHJpY2tcbiAgdmFyIGFkanVzdENvdW50ID0gdGhpcy5uICYmIHRoaXMucC5kaXYodGhpcy5uKTtcbiAgaWYgKCFhZGp1c3RDb3VudCB8fCBhZGp1c3RDb3VudC5jbXBuKDEwMCkgPiAwKSB7XG4gICAgdGhpcy5yZWROID0gbnVsbDtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9tYXh3ZWxsVHJpY2sgPSB0cnVlO1xuICAgIHRoaXMucmVkTiA9IHRoaXMubi50b1JlZCh0aGlzLnJlZCk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gQmFzZUN1cnZlO1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLl9maXhlZE5hZk11bCA9IGZ1bmN0aW9uIF9maXhlZE5hZk11bChwLCBrKSB7XG4gIGFzc2VydChwLnByZWNvbXB1dGVkKTtcbiAgdmFyIGRvdWJsZXMgPSBwLl9nZXREb3VibGVzKCk7XG5cbiAgdmFyIG5hZiA9IGdldE5BRihrLCAxLCB0aGlzLl9iaXRMZW5ndGgpO1xuICB2YXIgSSA9ICgxIDw8IChkb3VibGVzLnN0ZXAgKyAxKSkgLSAoZG91Ymxlcy5zdGVwICUgMiA9PT0gMCA/IDIgOiAxKTtcbiAgSSAvPSAzO1xuXG4gIC8vIFRyYW5zbGF0ZSBpbnRvIG1vcmUgd2luZG93ZWQgZm9ybVxuICB2YXIgcmVwciA9IFtdO1xuICB2YXIgajtcbiAgdmFyIG5hZlc7XG4gIGZvciAoaiA9IDA7IGogPCBuYWYubGVuZ3RoOyBqICs9IGRvdWJsZXMuc3RlcCkge1xuICAgIG5hZlcgPSAwO1xuICAgIGZvciAodmFyIGwgPSBqICsgZG91Ymxlcy5zdGVwIC0gMTsgbCA+PSBqOyBsLS0pXG4gICAgICBuYWZXID0gKG5hZlcgPDwgMSkgKyBuYWZbbF07XG4gICAgcmVwci5wdXNoKG5hZlcpO1xuICB9XG5cbiAgdmFyIGEgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgdmFyIGIgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgZm9yICh2YXIgaSA9IEk7IGkgPiAwOyBpLS0pIHtcbiAgICBmb3IgKGogPSAwOyBqIDwgcmVwci5sZW5ndGg7IGorKykge1xuICAgICAgbmFmVyA9IHJlcHJbal07XG4gICAgICBpZiAobmFmVyA9PT0gaSlcbiAgICAgICAgYiA9IGIubWl4ZWRBZGQoZG91Ymxlcy5wb2ludHNbal0pO1xuICAgICAgZWxzZSBpZiAobmFmVyA9PT0gLWkpXG4gICAgICAgIGIgPSBiLm1peGVkQWRkKGRvdWJsZXMucG9pbnRzW2pdLm5lZygpKTtcbiAgICB9XG4gICAgYSA9IGEuYWRkKGIpO1xuICB9XG4gIHJldHVybiBhLnRvUCgpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5fd25hZk11bCA9IGZ1bmN0aW9uIF93bmFmTXVsKHAsIGspIHtcbiAgdmFyIHcgPSA0O1xuXG4gIC8vIFByZWNvbXB1dGUgd2luZG93XG4gIHZhciBuYWZQb2ludHMgPSBwLl9nZXROQUZQb2ludHModyk7XG4gIHcgPSBuYWZQb2ludHMud25kO1xuICB2YXIgd25kID0gbmFmUG9pbnRzLnBvaW50cztcblxuICAvLyBHZXQgTkFGIGZvcm1cbiAgdmFyIG5hZiA9IGdldE5BRihrLCB3LCB0aGlzLl9iaXRMZW5ndGgpO1xuXG4gIC8vIEFkZCBgdGhpc2AqKE4rMSkgZm9yIGV2ZXJ5IHctTkFGIGluZGV4XG4gIHZhciBhY2MgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgZm9yICh2YXIgaSA9IG5hZi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIC8vIENvdW50IHplcm9lc1xuICAgIGZvciAodmFyIGwgPSAwOyBpID49IDAgJiYgbmFmW2ldID09PSAwOyBpLS0pXG4gICAgICBsKys7XG4gICAgaWYgKGkgPj0gMClcbiAgICAgIGwrKztcbiAgICBhY2MgPSBhY2MuZGJscChsKTtcblxuICAgIGlmIChpIDwgMClcbiAgICAgIGJyZWFrO1xuICAgIHZhciB6ID0gbmFmW2ldO1xuICAgIGFzc2VydCh6ICE9PSAwKTtcbiAgICBpZiAocC50eXBlID09PSAnYWZmaW5lJykge1xuICAgICAgLy8gSiArLSBQXG4gICAgICBpZiAoeiA+IDApXG4gICAgICAgIGFjYyA9IGFjYy5taXhlZEFkZCh3bmRbKHogLSAxKSA+PiAxXSk7XG4gICAgICBlbHNlXG4gICAgICAgIGFjYyA9IGFjYy5taXhlZEFkZCh3bmRbKC16IC0gMSkgPj4gMV0ubmVnKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBKICstIEpcbiAgICAgIGlmICh6ID4gMClcbiAgICAgICAgYWNjID0gYWNjLmFkZCh3bmRbKHogLSAxKSA+PiAxXSk7XG4gICAgICBlbHNlXG4gICAgICAgIGFjYyA9IGFjYy5hZGQod25kWygteiAtIDEpID4+IDFdLm5lZygpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHAudHlwZSA9PT0gJ2FmZmluZScgPyBhY2MudG9QKCkgOiBhY2M7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLl93bmFmTXVsQWRkID0gZnVuY3Rpb24gX3duYWZNdWxBZGQoZGVmVyxcbiAgcG9pbnRzLFxuICBjb2VmZnMsXG4gIGxlbixcbiAgamFjb2JpYW5SZXN1bHQpIHtcbiAgdmFyIHduZFdpZHRoID0gdGhpcy5fd25hZlQxO1xuICB2YXIgd25kID0gdGhpcy5fd25hZlQyO1xuICB2YXIgbmFmID0gdGhpcy5fd25hZlQzO1xuXG4gIC8vIEZpbGwgYWxsIGFycmF5c1xuICB2YXIgbWF4ID0gMDtcbiAgdmFyIGk7XG4gIHZhciBqO1xuICB2YXIgcDtcbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgcCA9IHBvaW50c1tpXTtcbiAgICB2YXIgbmFmUG9pbnRzID0gcC5fZ2V0TkFGUG9pbnRzKGRlZlcpO1xuICAgIHduZFdpZHRoW2ldID0gbmFmUG9pbnRzLnduZDtcbiAgICB3bmRbaV0gPSBuYWZQb2ludHMucG9pbnRzO1xuICB9XG5cbiAgLy8gQ29tYiBzbWFsbCB3aW5kb3cgTkFGc1xuICBmb3IgKGkgPSBsZW4gLSAxOyBpID49IDE7IGkgLT0gMikge1xuICAgIHZhciBhID0gaSAtIDE7XG4gICAgdmFyIGIgPSBpO1xuICAgIGlmICh3bmRXaWR0aFthXSAhPT0gMSB8fCB3bmRXaWR0aFtiXSAhPT0gMSkge1xuICAgICAgbmFmW2FdID0gZ2V0TkFGKGNvZWZmc1thXSwgd25kV2lkdGhbYV0sIHRoaXMuX2JpdExlbmd0aCk7XG4gICAgICBuYWZbYl0gPSBnZXROQUYoY29lZmZzW2JdLCB3bmRXaWR0aFtiXSwgdGhpcy5fYml0TGVuZ3RoKTtcbiAgICAgIG1heCA9IE1hdGgubWF4KG5hZlthXS5sZW5ndGgsIG1heCk7XG4gICAgICBtYXggPSBNYXRoLm1heChuYWZbYl0ubGVuZ3RoLCBtYXgpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIGNvbWIgPSBbXG4gICAgICBwb2ludHNbYV0sIC8qIDEgKi9cbiAgICAgIG51bGwsIC8qIDMgKi9cbiAgICAgIG51bGwsIC8qIDUgKi9cbiAgICAgIHBvaW50c1tiXSwgLyogNyAqL1xuICAgIF07XG5cbiAgICAvLyBUcnkgdG8gYXZvaWQgUHJvamVjdGl2ZSBwb2ludHMsIGlmIHBvc3NpYmxlXG4gICAgaWYgKHBvaW50c1thXS55LmNtcChwb2ludHNbYl0ueSkgPT09IDApIHtcbiAgICAgIGNvbWJbMV0gPSBwb2ludHNbYV0uYWRkKHBvaW50c1tiXSk7XG4gICAgICBjb21iWzJdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXS5uZWcoKSk7XG4gICAgfSBlbHNlIGlmIChwb2ludHNbYV0ueS5jbXAocG9pbnRzW2JdLnkucmVkTmVnKCkpID09PSAwKSB7XG4gICAgICBjb21iWzFdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXSk7XG4gICAgICBjb21iWzJdID0gcG9pbnRzW2FdLmFkZChwb2ludHNbYl0ubmVnKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21iWzFdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXSk7XG4gICAgICBjb21iWzJdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXS5uZWcoKSk7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gW1xuICAgICAgLTMsIC8qIC0xIC0xICovXG4gICAgICAtMSwgLyogLTEgMCAqL1xuICAgICAgLTUsIC8qIC0xIDEgKi9cbiAgICAgIC03LCAvKiAwIC0xICovXG4gICAgICAwLCAvKiAwIDAgKi9cbiAgICAgIDcsIC8qIDAgMSAqL1xuICAgICAgNSwgLyogMSAtMSAqL1xuICAgICAgMSwgLyogMSAwICovXG4gICAgICAzLCAgLyogMSAxICovXG4gICAgXTtcblxuICAgIHZhciBqc2YgPSBnZXRKU0YoY29lZmZzW2FdLCBjb2VmZnNbYl0pO1xuICAgIG1heCA9IE1hdGgubWF4KGpzZlswXS5sZW5ndGgsIG1heCk7XG4gICAgbmFmW2FdID0gbmV3IEFycmF5KG1heCk7XG4gICAgbmFmW2JdID0gbmV3IEFycmF5KG1heCk7XG4gICAgZm9yIChqID0gMDsgaiA8IG1heDsgaisrKSB7XG4gICAgICB2YXIgamEgPSBqc2ZbMF1bal0gfCAwO1xuICAgICAgdmFyIGpiID0ganNmWzFdW2pdIHwgMDtcblxuICAgICAgbmFmW2FdW2pdID0gaW5kZXhbKGphICsgMSkgKiAzICsgKGpiICsgMSldO1xuICAgICAgbmFmW2JdW2pdID0gMDtcbiAgICAgIHduZFthXSA9IGNvbWI7XG4gICAgfVxuICB9XG5cbiAgdmFyIGFjYyA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICB2YXIgdG1wID0gdGhpcy5fd25hZlQ0O1xuICBmb3IgKGkgPSBtYXg7IGkgPj0gMDsgaS0tKSB7XG4gICAgdmFyIGsgPSAwO1xuXG4gICAgd2hpbGUgKGkgPj0gMCkge1xuICAgICAgdmFyIHplcm8gPSB0cnVlO1xuICAgICAgZm9yIChqID0gMDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICAgIHRtcFtqXSA9IG5hZltqXVtpXSB8IDA7XG4gICAgICAgIGlmICh0bXBbal0gIT09IDApXG4gICAgICAgICAgemVybyA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKCF6ZXJvKVxuICAgICAgICBicmVhaztcbiAgICAgIGsrKztcbiAgICAgIGktLTtcbiAgICB9XG4gICAgaWYgKGkgPj0gMClcbiAgICAgIGsrKztcbiAgICBhY2MgPSBhY2MuZGJscChrKTtcbiAgICBpZiAoaSA8IDApXG4gICAgICBicmVhaztcblxuICAgIGZvciAoaiA9IDA7IGogPCBsZW47IGorKykge1xuICAgICAgdmFyIHogPSB0bXBbal07XG4gICAgICBwO1xuICAgICAgaWYgKHogPT09IDApXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgZWxzZSBpZiAoeiA+IDApXG4gICAgICAgIHAgPSB3bmRbal1bKHogLSAxKSA+PiAxXTtcbiAgICAgIGVsc2UgaWYgKHogPCAwKVxuICAgICAgICBwID0gd25kW2pdWygteiAtIDEpID4+IDFdLm5lZygpO1xuXG4gICAgICBpZiAocC50eXBlID09PSAnYWZmaW5lJylcbiAgICAgICAgYWNjID0gYWNjLm1peGVkQWRkKHApO1xuICAgICAgZWxzZVxuICAgICAgICBhY2MgPSBhY2MuYWRkKHApO1xuICAgIH1cbiAgfVxuICAvLyBaZXJvaWZ5IHJlZmVyZW5jZXNcbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgIHduZFtpXSA9IG51bGw7XG5cbiAgaWYgKGphY29iaWFuUmVzdWx0KVxuICAgIHJldHVybiBhY2M7XG4gIGVsc2VcbiAgICByZXR1cm4gYWNjLnRvUCgpO1xufTtcblxuZnVuY3Rpb24gQmFzZVBvaW50KGN1cnZlLCB0eXBlKSB7XG4gIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgdGhpcy50eXBlID0gdHlwZTtcbiAgdGhpcy5wcmVjb21wdXRlZCA9IG51bGw7XG59XG5CYXNlQ3VydmUuQmFzZVBvaW50ID0gQmFzZVBvaW50O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEoLypvdGhlciovKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gdmFsaWRhdGUoKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLnZhbGlkYXRlKHRoaXMpO1xufTtcblxuQmFzZUN1cnZlLnByb3RvdHlwZS5kZWNvZGVQb2ludCA9IGZ1bmN0aW9uIGRlY29kZVBvaW50KGJ5dGVzLCBlbmMpIHtcbiAgYnl0ZXMgPSB1dGlscy50b0FycmF5KGJ5dGVzLCBlbmMpO1xuXG4gIHZhciBsZW4gPSB0aGlzLnAuYnl0ZUxlbmd0aCgpO1xuXG4gIC8vIHVuY29tcHJlc3NlZCwgaHlicmlkLW9kZCwgaHlicmlkLWV2ZW5cbiAgaWYgKChieXRlc1swXSA9PT0gMHgwNCB8fCBieXRlc1swXSA9PT0gMHgwNiB8fCBieXRlc1swXSA9PT0gMHgwNykgJiZcbiAgICAgIGJ5dGVzLmxlbmd0aCAtIDEgPT09IDIgKiBsZW4pIHtcbiAgICBpZiAoYnl0ZXNbMF0gPT09IDB4MDYpXG4gICAgICBhc3NlcnQoYnl0ZXNbYnl0ZXMubGVuZ3RoIC0gMV0gJSAyID09PSAwKTtcbiAgICBlbHNlIGlmIChieXRlc1swXSA9PT0gMHgwNylcbiAgICAgIGFzc2VydChieXRlc1tieXRlcy5sZW5ndGggLSAxXSAlIDIgPT09IDEpO1xuXG4gICAgdmFyIHJlcyA9ICB0aGlzLnBvaW50KGJ5dGVzLnNsaWNlKDEsIDEgKyBsZW4pLFxuICAgICAgYnl0ZXMuc2xpY2UoMSArIGxlbiwgMSArIDIgKiBsZW4pKTtcblxuICAgIHJldHVybiByZXM7XG4gIH0gZWxzZSBpZiAoKGJ5dGVzWzBdID09PSAweDAyIHx8IGJ5dGVzWzBdID09PSAweDAzKSAmJlxuICAgICAgICAgICAgICBieXRlcy5sZW5ndGggLSAxID09PSBsZW4pIHtcbiAgICByZXR1cm4gdGhpcy5wb2ludEZyb21YKGJ5dGVzLnNsaWNlKDEsIDEgKyBsZW4pLCBieXRlc1swXSA9PT0gMHgwMyk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHBvaW50IGZvcm1hdCcpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGVDb21wcmVzc2VkID0gZnVuY3Rpb24gZW5jb2RlQ29tcHJlc3NlZChlbmMpIHtcbiAgcmV0dXJuIHRoaXMuZW5jb2RlKGVuYywgdHJ1ZSk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9lbmNvZGUgPSBmdW5jdGlvbiBfZW5jb2RlKGNvbXBhY3QpIHtcbiAgdmFyIGxlbiA9IHRoaXMuY3VydmUucC5ieXRlTGVuZ3RoKCk7XG4gIHZhciB4ID0gdGhpcy5nZXRYKCkudG9BcnJheSgnYmUnLCBsZW4pO1xuXG4gIGlmIChjb21wYWN0KVxuICAgIHJldHVybiBbIHRoaXMuZ2V0WSgpLmlzRXZlbigpID8gMHgwMiA6IDB4MDMgXS5jb25jYXQoeCk7XG5cbiAgcmV0dXJuIFsgMHgwNCBdLmNvbmNhdCh4LCB0aGlzLmdldFkoKS50b0FycmF5KCdiZScsIGxlbikpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZW5jLCBjb21wYWN0KSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy5fZW5jb2RlKGNvbXBhY3QpLCBlbmMpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5wcmVjb21wdXRlID0gZnVuY3Rpb24gcHJlY29tcHV0ZShwb3dlcikge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gdGhpcztcblxuICB2YXIgcHJlY29tcHV0ZWQgPSB7XG4gICAgZG91YmxlczogbnVsbCxcbiAgICBuYWY6IG51bGwsXG4gICAgYmV0YTogbnVsbCxcbiAgfTtcbiAgcHJlY29tcHV0ZWQubmFmID0gdGhpcy5fZ2V0TkFGUG9pbnRzKDgpO1xuICBwcmVjb21wdXRlZC5kb3VibGVzID0gdGhpcy5fZ2V0RG91Ymxlcyg0LCBwb3dlcik7XG4gIHByZWNvbXB1dGVkLmJldGEgPSB0aGlzLl9nZXRCZXRhKCk7XG4gIHRoaXMucHJlY29tcHV0ZWQgPSBwcmVjb21wdXRlZDtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuX2hhc0RvdWJsZXMgPSBmdW5jdGlvbiBfaGFzRG91YmxlcyhrKSB7XG4gIGlmICghdGhpcy5wcmVjb21wdXRlZClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgdmFyIGRvdWJsZXMgPSB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7XG4gIGlmICghZG91YmxlcylcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIGRvdWJsZXMucG9pbnRzLmxlbmd0aCA+PSBNYXRoLmNlaWwoKGsuYml0TGVuZ3RoKCkgKyAxKSAvIGRvdWJsZXMuc3RlcCk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9nZXREb3VibGVzID0gZnVuY3Rpb24gX2dldERvdWJsZXMoc3RlcCwgcG93ZXIpIHtcbiAgaWYgKHRoaXMucHJlY29tcHV0ZWQgJiYgdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzKVxuICAgIHJldHVybiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXM7XG5cbiAgdmFyIGRvdWJsZXMgPSBbIHRoaXMgXTtcbiAgdmFyIGFjYyA9IHRoaXM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcG93ZXI7IGkgKz0gc3RlcCkge1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc3RlcDsgaisrKVxuICAgICAgYWNjID0gYWNjLmRibCgpO1xuICAgIGRvdWJsZXMucHVzaChhY2MpO1xuICB9XG4gIHJldHVybiB7XG4gICAgc3RlcDogc3RlcCxcbiAgICBwb2ludHM6IGRvdWJsZXMsXG4gIH07XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9nZXROQUZQb2ludHMgPSBmdW5jdGlvbiBfZ2V0TkFGUG9pbnRzKHduZCkge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZCAmJiB0aGlzLnByZWNvbXB1dGVkLm5hZilcbiAgICByZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5uYWY7XG5cbiAgdmFyIHJlcyA9IFsgdGhpcyBdO1xuICB2YXIgbWF4ID0gKDEgPDwgd25kKSAtIDE7XG4gIHZhciBkYmwgPSBtYXggPT09IDEgPyBudWxsIDogdGhpcy5kYmwoKTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBtYXg7IGkrKylcbiAgICByZXNbaV0gPSByZXNbaSAtIDFdLmFkZChkYmwpO1xuICByZXR1cm4ge1xuICAgIHduZDogd25kLFxuICAgIHBvaW50czogcmVzLFxuICB9O1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5fZ2V0QmV0YSA9IGZ1bmN0aW9uIF9nZXRCZXRhKCkge1xuICByZXR1cm4gbnVsbDtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuZGJscCA9IGZ1bmN0aW9uIGRibHAoaykge1xuICB2YXIgciA9IHRoaXM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgazsgaSsrKVxuICAgIHIgPSByLmRibCgpO1xuICByZXR1cm4gcjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBCYXNlID0gcmVxdWlyZSgnLi9iYXNlJyk7XG5cbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEVkd2FyZHNDdXJ2ZShjb25mKSB7XG4gIC8vIE5PVEU6IEltcG9ydGFudCBhcyB3ZSBhcmUgY3JlYXRpbmcgcG9pbnQgaW4gQmFzZS5jYWxsKClcbiAgdGhpcy50d2lzdGVkID0gKGNvbmYuYSB8IDApICE9PSAxO1xuICB0aGlzLm1PbmVBID0gdGhpcy50d2lzdGVkICYmIChjb25mLmEgfCAwKSA9PT0gLTE7XG4gIHRoaXMuZXh0ZW5kZWQgPSB0aGlzLm1PbmVBO1xuXG4gIEJhc2UuY2FsbCh0aGlzLCAnZWR3YXJkcycsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS51bW9kKHRoaXMucmVkLm0pO1xuICB0aGlzLmEgPSB0aGlzLmEudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmMgPSBuZXcgQk4oY29uZi5jLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmMyID0gdGhpcy5jLnJlZFNxcigpO1xuICB0aGlzLmQgPSBuZXcgQk4oY29uZi5kLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmRkID0gdGhpcy5kLnJlZEFkZCh0aGlzLmQpO1xuXG4gIGFzc2VydCghdGhpcy50d2lzdGVkIHx8IHRoaXMuYy5mcm9tUmVkKCkuY21wbigxKSA9PT0gMCk7XG4gIHRoaXMub25lQyA9IChjb25mLmMgfCAwKSA9PT0gMTtcbn1cbmluaGVyaXRzKEVkd2FyZHNDdXJ2ZSwgQmFzZSk7XG5tb2R1bGUuZXhwb3J0cyA9IEVkd2FyZHNDdXJ2ZTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5fbXVsQSA9IGZ1bmN0aW9uIF9tdWxBKG51bSkge1xuICBpZiAodGhpcy5tT25lQSlcbiAgICByZXR1cm4gbnVtLnJlZE5lZygpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuYS5yZWRNdWwobnVtKTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUuX211bEMgPSBmdW5jdGlvbiBfbXVsQyhudW0pIHtcbiAgaWYgKHRoaXMub25lQylcbiAgICByZXR1cm4gbnVtO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuYy5yZWRNdWwobnVtKTtcbn07XG5cbi8vIEp1c3QgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBTaG9ydCBjdXJ2ZVxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5qcG9pbnQgPSBmdW5jdGlvbiBqcG9pbnQoeCwgeSwgeiwgdCkge1xuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5LCB6LCB0KTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tWCA9IGZ1bmN0aW9uIHBvaW50RnJvbVgoeCwgb2RkKSB7XG4gIHggPSBuZXcgQk4oeCwgMTYpO1xuICBpZiAoIXgucmVkKVxuICAgIHggPSB4LnRvUmVkKHRoaXMucmVkKTtcblxuICB2YXIgeDIgPSB4LnJlZFNxcigpO1xuICB2YXIgcmhzID0gdGhpcy5jMi5yZWRTdWIodGhpcy5hLnJlZE11bCh4MikpO1xuICB2YXIgbGhzID0gdGhpcy5vbmUucmVkU3ViKHRoaXMuYzIucmVkTXVsKHRoaXMuZCkucmVkTXVsKHgyKSk7XG5cbiAgdmFyIHkyID0gcmhzLnJlZE11bChsaHMucmVkSW52bSgpKTtcbiAgdmFyIHkgPSB5Mi5yZWRTcXJ0KCk7XG4gIGlmICh5LnJlZFNxcigpLnJlZFN1Yih5MikuY21wKHRoaXMuemVybykgIT09IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHBvaW50Jyk7XG5cbiAgdmFyIGlzT2RkID0geS5mcm9tUmVkKCkuaXNPZGQoKTtcbiAgaWYgKG9kZCAmJiAhaXNPZGQgfHwgIW9kZCAmJiBpc09kZClcbiAgICB5ID0geS5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tWSA9IGZ1bmN0aW9uIHBvaW50RnJvbVkoeSwgb2RkKSB7XG4gIHkgPSBuZXcgQk4oeSwgMTYpO1xuICBpZiAoIXkucmVkKVxuICAgIHkgPSB5LnRvUmVkKHRoaXMucmVkKTtcblxuICAvLyB4XjIgPSAoeV4yIC0gY14yKSAvIChjXjIgZCB5XjIgLSBhKVxuICB2YXIgeTIgPSB5LnJlZFNxcigpO1xuICB2YXIgbGhzID0geTIucmVkU3ViKHRoaXMuYzIpO1xuICB2YXIgcmhzID0geTIucmVkTXVsKHRoaXMuZCkucmVkTXVsKHRoaXMuYzIpLnJlZFN1Yih0aGlzLmEpO1xuICB2YXIgeDIgPSBsaHMucmVkTXVsKHJocy5yZWRJbnZtKCkpO1xuXG4gIGlmICh4Mi5jbXAodGhpcy56ZXJvKSA9PT0gMCkge1xuICAgIGlmIChvZGQpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5wb2ludCh0aGlzLnplcm8sIHkpO1xuICB9XG5cbiAgdmFyIHggPSB4Mi5yZWRTcXJ0KCk7XG4gIGlmICh4LnJlZFNxcigpLnJlZFN1Yih4MikuY21wKHRoaXMuemVybykgIT09IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHBvaW50Jyk7XG5cbiAgaWYgKHguZnJvbVJlZCgpLmlzT2RkKCkgIT09IG9kZClcbiAgICB4ID0geC5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZShwb2ludCkge1xuICBpZiAocG9pbnQuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0cnVlO1xuXG4gIC8vIEN1cnZlOiBBICogWF4yICsgWV4yID0gQ14yICogKDEgKyBEICogWF4yICogWV4yKVxuICBwb2ludC5ub3JtYWxpemUoKTtcblxuICB2YXIgeDIgPSBwb2ludC54LnJlZFNxcigpO1xuICB2YXIgeTIgPSBwb2ludC55LnJlZFNxcigpO1xuICB2YXIgbGhzID0geDIucmVkTXVsKHRoaXMuYSkucmVkQWRkKHkyKTtcbiAgdmFyIHJocyA9IHRoaXMuYzIucmVkTXVsKHRoaXMub25lLnJlZEFkZCh0aGlzLmQucmVkTXVsKHgyKS5yZWRNdWwoeTIpKSk7XG5cbiAgcmV0dXJuIGxocy5jbXAocmhzKSA9PT0gMDtcbn07XG5cbmZ1bmN0aW9uIFBvaW50KGN1cnZlLCB4LCB5LCB6LCB0KSB7XG4gIEJhc2UuQmFzZVBvaW50LmNhbGwodGhpcywgY3VydmUsICdwcm9qZWN0aXZlJyk7XG4gIGlmICh4ID09PSBudWxsICYmIHkgPT09IG51bGwgJiYgeiA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IHRoaXMuY3VydmUuemVybztcbiAgICB0aGlzLnkgPSB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnogPSB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnQgPSB0aGlzLmN1cnZlLnplcm87XG4gICAgdGhpcy56T25lID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnggPSBuZXcgQk4oeCwgMTYpO1xuICAgIHRoaXMueSA9IG5ldyBCTih5LCAxNik7XG4gICAgdGhpcy56ID0geiA/IG5ldyBCTih6LCAxNikgOiB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnQgPSB0ICYmIG5ldyBCTih0LCAxNik7XG4gICAgaWYgKCF0aGlzLngucmVkKVxuICAgICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMueS5yZWQpXG4gICAgICB0aGlzLnkgPSB0aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy56LnJlZClcbiAgICAgIHRoaXMueiA9IHRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKHRoaXMudCAmJiAhdGhpcy50LnJlZClcbiAgICAgIHRoaXMudCA9IHRoaXMudC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgdGhpcy56T25lID0gdGhpcy56ID09PSB0aGlzLmN1cnZlLm9uZTtcblxuICAgIC8vIFVzZSBleHRlbmRlZCBjb29yZGluYXRlc1xuICAgIGlmICh0aGlzLmN1cnZlLmV4dGVuZGVkICYmICF0aGlzLnQpIHtcbiAgICAgIHRoaXMudCA9IHRoaXMueC5yZWRNdWwodGhpcy55KTtcbiAgICAgIGlmICghdGhpcy56T25lKVxuICAgICAgICB0aGlzLnQgPSB0aGlzLnQucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpO1xuICAgIH1cbiAgfVxufVxuaW5oZXJpdHMoUG9pbnQsIEJhc2UuQmFzZVBvaW50KTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludEZyb21KU09OID0gZnVuY3Rpb24gcG9pbnRGcm9tSlNPTihvYmopIHtcbiAgcmV0dXJuIFBvaW50LmZyb21KU09OKHRoaXMsIG9iaik7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoeCwgeSwgeiwgdCkge1xuICByZXR1cm4gbmV3IFBvaW50KHRoaXMsIHgsIHksIHosIHQpO1xufTtcblxuUG9pbnQuZnJvbUpTT04gPSBmdW5jdGlvbiBmcm9tSlNPTihjdXJ2ZSwgb2JqKSB7XG4gIHJldHVybiBuZXcgUG9pbnQoY3VydmUsIG9ialswXSwgb2JqWzFdLCBvYmpbMl0pO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgeTogJyArIHRoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy54LmNtcG4oMCkgPT09IDAgJiZcbiAgICAodGhpcy55LmNtcCh0aGlzLnopID09PSAwIHx8XG4gICAgKHRoaXMuek9uZSAmJiB0aGlzLnkuY21wKHRoaXMuY3VydmUuYykgPT09IDApKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZXh0RGJsID0gZnVuY3Rpb24gX2V4dERibCgpIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtZXh0ZW5kZWQtMS5odG1sXG4gIC8vICAgICAjZG91YmxpbmctZGJsLTIwMDgtaHdjZFxuICAvLyA0TSArIDRTXG5cbiAgLy8gQSA9IFgxXjJcbiAgdmFyIGEgPSB0aGlzLngucmVkU3FyKCk7XG4gIC8vIEIgPSBZMV4yXG4gIHZhciBiID0gdGhpcy55LnJlZFNxcigpO1xuICAvLyBDID0gMiAqIFoxXjJcbiAgdmFyIGMgPSB0aGlzLnoucmVkU3FyKCk7XG4gIGMgPSBjLnJlZElBZGQoYyk7XG4gIC8vIEQgPSBhICogQVxuICB2YXIgZCA9IHRoaXMuY3VydmUuX211bEEoYSk7XG4gIC8vIEUgPSAoWDEgKyBZMSleMiAtIEEgLSBCXG4gIHZhciBlID0gdGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZFNxcigpLnJlZElTdWIoYSkucmVkSVN1YihiKTtcbiAgLy8gRyA9IEQgKyBCXG4gIHZhciBnID0gZC5yZWRBZGQoYik7XG4gIC8vIEYgPSBHIC0gQ1xuICB2YXIgZiA9IGcucmVkU3ViKGMpO1xuICAvLyBIID0gRCAtIEJcbiAgdmFyIGggPSBkLnJlZFN1YihiKTtcbiAgLy8gWDMgPSBFICogRlxuICB2YXIgbnggPSBlLnJlZE11bChmKTtcbiAgLy8gWTMgPSBHICogSFxuICB2YXIgbnkgPSBnLnJlZE11bChoKTtcbiAgLy8gVDMgPSBFICogSFxuICB2YXIgbnQgPSBlLnJlZE11bChoKTtcbiAgLy8gWjMgPSBGICogR1xuICB2YXIgbnogPSBmLnJlZE11bChnKTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueiwgbnQpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9wcm9qRGJsID0gZnVuY3Rpb24gX3Byb2pEYmwoKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLXByb2plY3RpdmUuaHRtbFxuICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA4LWJiamxwXG4gIC8vICAgICAjZG91YmxpbmctZGJsLTIwMDctYmxcbiAgLy8gYW5kIG90aGVyc1xuICAvLyBHZW5lcmFsbHkgM00gKyA0UyBvciAyTSArIDRTXG5cbiAgLy8gQiA9IChYMSArIFkxKV4yXG4gIHZhciBiID0gdGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZFNxcigpO1xuICAvLyBDID0gWDFeMlxuICB2YXIgYyA9IHRoaXMueC5yZWRTcXIoKTtcbiAgLy8gRCA9IFkxXjJcbiAgdmFyIGQgPSB0aGlzLnkucmVkU3FyKCk7XG5cbiAgdmFyIG54O1xuICB2YXIgbnk7XG4gIHZhciBuejtcbiAgdmFyIGU7XG4gIHZhciBoO1xuICB2YXIgajtcbiAgaWYgKHRoaXMuY3VydmUudHdpc3RlZCkge1xuICAgIC8vIEUgPSBhICogQ1xuICAgIGUgPSB0aGlzLmN1cnZlLl9tdWxBKGMpO1xuICAgIC8vIEYgPSBFICsgRFxuICAgIHZhciBmID0gZS5yZWRBZGQoZCk7XG4gICAgaWYgKHRoaXMuek9uZSkge1xuICAgICAgLy8gWDMgPSAoQiAtIEMgLSBEKSAqIChGIC0gMilcbiAgICAgIG54ID0gYi5yZWRTdWIoYykucmVkU3ViKGQpLnJlZE11bChmLnJlZFN1Yih0aGlzLmN1cnZlLnR3bykpO1xuICAgICAgLy8gWTMgPSBGICogKEUgLSBEKVxuICAgICAgbnkgPSBmLnJlZE11bChlLnJlZFN1YihkKSk7XG4gICAgICAvLyBaMyA9IEZeMiAtIDIgKiBGXG4gICAgICBueiA9IGYucmVkU3FyKCkucmVkU3ViKGYpLnJlZFN1YihmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSCA9IFoxXjJcbiAgICAgIGggPSB0aGlzLnoucmVkU3FyKCk7XG4gICAgICAvLyBKID0gRiAtIDIgKiBIXG4gICAgICBqID0gZi5yZWRTdWIoaCkucmVkSVN1YihoKTtcbiAgICAgIC8vIFgzID0gKEItQy1EKSpKXG4gICAgICBueCA9IGIucmVkU3ViKGMpLnJlZElTdWIoZCkucmVkTXVsKGopO1xuICAgICAgLy8gWTMgPSBGICogKEUgLSBEKVxuICAgICAgbnkgPSBmLnJlZE11bChlLnJlZFN1YihkKSk7XG4gICAgICAvLyBaMyA9IEYgKiBKXG4gICAgICBueiA9IGYucmVkTXVsKGopO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBFID0gQyArIERcbiAgICBlID0gYy5yZWRBZGQoZCk7XG4gICAgLy8gSCA9IChjICogWjEpXjJcbiAgICBoID0gdGhpcy5jdXJ2ZS5fbXVsQyh0aGlzLnopLnJlZFNxcigpO1xuICAgIC8vIEogPSBFIC0gMiAqIEhcbiAgICBqID0gZS5yZWRTdWIoaCkucmVkU3ViKGgpO1xuICAgIC8vIFgzID0gYyAqIChCIC0gRSkgKiBKXG4gICAgbnggPSB0aGlzLmN1cnZlLl9tdWxDKGIucmVkSVN1YihlKSkucmVkTXVsKGopO1xuICAgIC8vIFkzID0gYyAqIEUgKiAoQyAtIEQpXG4gICAgbnkgPSB0aGlzLmN1cnZlLl9tdWxDKGUpLnJlZE11bChjLnJlZElTdWIoZCkpO1xuICAgIC8vIFozID0gRSAqIEpcbiAgICBueiA9IGUucmVkTXVsKGopO1xuICB9XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIERvdWJsZSBpbiBleHRlbmRlZCBjb29yZGluYXRlc1xuICBpZiAodGhpcy5jdXJ2ZS5leHRlbmRlZClcbiAgICByZXR1cm4gdGhpcy5fZXh0RGJsKCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fcHJvakRibCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9leHRBZGQgPSBmdW5jdGlvbiBfZXh0QWRkKHApIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtZXh0ZW5kZWQtMS5odG1sXG4gIC8vICAgICAjYWRkaXRpb24tYWRkLTIwMDgtaHdjZC0zXG4gIC8vIDhNXG5cbiAgLy8gQSA9IChZMSAtIFgxKSAqIChZMiAtIFgyKVxuICB2YXIgYSA9IHRoaXMueS5yZWRTdWIodGhpcy54KS5yZWRNdWwocC55LnJlZFN1YihwLngpKTtcbiAgLy8gQiA9IChZMSArIFgxKSAqIChZMiArIFgyKVxuICB2YXIgYiA9IHRoaXMueS5yZWRBZGQodGhpcy54KS5yZWRNdWwocC55LnJlZEFkZChwLngpKTtcbiAgLy8gQyA9IFQxICogayAqIFQyXG4gIHZhciBjID0gdGhpcy50LnJlZE11bCh0aGlzLmN1cnZlLmRkKS5yZWRNdWwocC50KTtcbiAgLy8gRCA9IFoxICogMiAqIFoyXG4gIHZhciBkID0gdGhpcy56LnJlZE11bChwLnoucmVkQWRkKHAueikpO1xuICAvLyBFID0gQiAtIEFcbiAgdmFyIGUgPSBiLnJlZFN1YihhKTtcbiAgLy8gRiA9IEQgLSBDXG4gIHZhciBmID0gZC5yZWRTdWIoYyk7XG4gIC8vIEcgPSBEICsgQ1xuICB2YXIgZyA9IGQucmVkQWRkKGMpO1xuICAvLyBIID0gQiArIEFcbiAgdmFyIGggPSBiLnJlZEFkZChhKTtcbiAgLy8gWDMgPSBFICogRlxuICB2YXIgbnggPSBlLnJlZE11bChmKTtcbiAgLy8gWTMgPSBHICogSFxuICB2YXIgbnkgPSBnLnJlZE11bChoKTtcbiAgLy8gVDMgPSBFICogSFxuICB2YXIgbnQgPSBlLnJlZE11bChoKTtcbiAgLy8gWjMgPSBGICogR1xuICB2YXIgbnogPSBmLnJlZE11bChnKTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueiwgbnQpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9wcm9qQWRkID0gZnVuY3Rpb24gX3Byb2pBZGQocCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1wcm9qZWN0aXZlLmh0bWxcbiAgLy8gICAgICNhZGRpdGlvbi1hZGQtMjAwOC1iYmpscFxuICAvLyAgICAgI2FkZGl0aW9uLWFkZC0yMDA3LWJsXG4gIC8vIDEwTSArIDFTXG5cbiAgLy8gQSA9IFoxICogWjJcbiAgdmFyIGEgPSB0aGlzLnoucmVkTXVsKHAueik7XG4gIC8vIEIgPSBBXjJcbiAgdmFyIGIgPSBhLnJlZFNxcigpO1xuICAvLyBDID0gWDEgKiBYMlxuICB2YXIgYyA9IHRoaXMueC5yZWRNdWwocC54KTtcbiAgLy8gRCA9IFkxICogWTJcbiAgdmFyIGQgPSB0aGlzLnkucmVkTXVsKHAueSk7XG4gIC8vIEUgPSBkICogQyAqIERcbiAgdmFyIGUgPSB0aGlzLmN1cnZlLmQucmVkTXVsKGMpLnJlZE11bChkKTtcbiAgLy8gRiA9IEIgLSBFXG4gIHZhciBmID0gYi5yZWRTdWIoZSk7XG4gIC8vIEcgPSBCICsgRVxuICB2YXIgZyA9IGIucmVkQWRkKGUpO1xuICAvLyBYMyA9IEEgKiBGICogKChYMSArIFkxKSAqIChYMiArIFkyKSAtIEMgLSBEKVxuICB2YXIgdG1wID0gdGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZE11bChwLngucmVkQWRkKHAueSkpLnJlZElTdWIoYykucmVkSVN1YihkKTtcbiAgdmFyIG54ID0gYS5yZWRNdWwoZikucmVkTXVsKHRtcCk7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICBpZiAodGhpcy5jdXJ2ZS50d2lzdGVkKSB7XG4gICAgLy8gWTMgPSBBICogRyAqIChEIC0gYSAqIEMpXG4gICAgbnkgPSBhLnJlZE11bChnKS5yZWRNdWwoZC5yZWRTdWIodGhpcy5jdXJ2ZS5fbXVsQShjKSkpO1xuICAgIC8vIFozID0gRiAqIEdcbiAgICBueiA9IGYucmVkTXVsKGcpO1xuICB9IGVsc2Uge1xuICAgIC8vIFkzID0gQSAqIEcgKiAoRCAtIEMpXG4gICAgbnkgPSBhLnJlZE11bChnKS5yZWRNdWwoZC5yZWRTdWIoYykpO1xuICAgIC8vIFozID0gYyAqIEYgKiBHXG4gICAgbnogPSB0aGlzLmN1cnZlLl9tdWxDKGYpLnJlZE11bChnKTtcbiAgfVxuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQocCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHA7XG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICBpZiAodGhpcy5jdXJ2ZS5leHRlbmRlZClcbiAgICByZXR1cm4gdGhpcy5fZXh0QWRkKHApO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuX3Byb2pBZGQocCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGspIHtcbiAgaWYgKHRoaXMuX2hhc0RvdWJsZXMoaykpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsIGspO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWwodGhpcywgayk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsQWRkID0gZnVuY3Rpb24gbXVsQWRkKGsxLCBwLCBrMikge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLCBbIHRoaXMsIHAgXSwgWyBrMSwgazIgXSwgMiwgZmFsc2UpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmptdWxBZGQgPSBmdW5jdGlvbiBqbXVsQWRkKGsxLCBwLCBrMikge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLCBbIHRoaXMsIHAgXSwgWyBrMSwgazIgXSwgMiwgdHJ1ZSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubm9ybWFsaXplID0gZnVuY3Rpb24gbm9ybWFsaXplKCkge1xuICBpZiAodGhpcy56T25lKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIE5vcm1hbGl6ZSBjb29yZGluYXRlc1xuICB2YXIgemkgPSB0aGlzLnoucmVkSW52bSgpO1xuICB0aGlzLnggPSB0aGlzLngucmVkTXVsKHppKTtcbiAgdGhpcy55ID0gdGhpcy55LnJlZE11bCh6aSk7XG4gIGlmICh0aGlzLnQpXG4gICAgdGhpcy50ID0gdGhpcy50LnJlZE11bCh6aSk7XG4gIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICB0aGlzLnpPbmUgPSB0cnVlO1xuICByZXR1cm4gdGhpcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcoKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWROZWcoKSxcbiAgICB0aGlzLnksXG4gICAgdGhpcy56LFxuICAgIHRoaXMudCAmJiB0aGlzLnQucmVkTmVnKCkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFggPSBmdW5jdGlvbiBnZXRYKCkge1xuICB0aGlzLm5vcm1hbGl6ZSgpO1xuICByZXR1cm4gdGhpcy54LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gZ2V0WSgpIHtcbiAgdGhpcy5ub3JtYWxpemUoKTtcbiAgcmV0dXJuIHRoaXMueS5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcShvdGhlcikge1xuICByZXR1cm4gdGhpcyA9PT0gb3RoZXIgfHxcbiAgICAgICAgIHRoaXMuZ2V0WCgpLmNtcChvdGhlci5nZXRYKCkpID09PSAwICYmXG4gICAgICAgICB0aGlzLmdldFkoKS5jbXAob3RoZXIuZ2V0WSgpKSA9PT0gMDtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcVhUb1AgPSBmdW5jdGlvbiBlcVhUb1AoeCkge1xuICB2YXIgcnggPSB4LnRvUmVkKHRoaXMuY3VydmUucmVkKS5yZWRNdWwodGhpcy56KTtcbiAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgIHJldHVybiB0cnVlO1xuXG4gIHZhciB4YyA9IHguY2xvbmUoKTtcbiAgdmFyIHQgPSB0aGlzLmN1cnZlLnJlZE4ucmVkTXVsKHRoaXMueik7XG4gIGZvciAoOzspIHtcbiAgICB4Yy5pYWRkKHRoaXMuY3VydmUubik7XG4gICAgaWYgKHhjLmNtcCh0aGlzLmN1cnZlLnApID49IDApXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICByeC5yZWRJQWRkKHQpO1xuICAgIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG59O1xuXG4vLyBDb21wYXRpYmlsaXR5IHdpdGggQmFzZUN1cnZlXG5Qb2ludC5wcm90b3R5cGUudG9QID0gUG9pbnQucHJvdG90eXBlLm5vcm1hbGl6ZTtcblBvaW50LnByb3RvdHlwZS5taXhlZEFkZCA9IFBvaW50LnByb3RvdHlwZS5hZGQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjdXJ2ZSA9IGV4cG9ydHM7XG5cbmN1cnZlLmJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcbmN1cnZlLnNob3J0ID0gcmVxdWlyZSgnLi9zaG9ydCcpO1xuY3VydmUubW9udCA9IHJlcXVpcmUoJy4vbW9udCcpO1xuY3VydmUuZWR3YXJkcyA9IHJlcXVpcmUoJy4vZWR3YXJkcycpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBCYXNlID0gcmVxdWlyZSgnLi9iYXNlJyk7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG5cbmZ1bmN0aW9uIE1vbnRDdXJ2ZShjb25mKSB7XG4gIEJhc2UuY2FsbCh0aGlzLCAnbW9udCcsIGNvbmYpO1xuXG4gIHRoaXMuYSA9IG5ldyBCTihjb25mLmEsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYiA9IG5ldyBCTihjb25mLmIsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuaTQgPSBuZXcgQk4oNCkudG9SZWQodGhpcy5yZWQpLnJlZEludm0oKTtcbiAgdGhpcy50d28gPSBuZXcgQk4oMikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmEyNCA9IHRoaXMuaTQucmVkTXVsKHRoaXMuYS5yZWRBZGQodGhpcy50d28pKTtcbn1cbmluaGVyaXRzKE1vbnRDdXJ2ZSwgQmFzZSk7XG5tb2R1bGUuZXhwb3J0cyA9IE1vbnRDdXJ2ZTtcblxuTW9udEN1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKHBvaW50KSB7XG4gIHZhciB4ID0gcG9pbnQubm9ybWFsaXplKCkueDtcbiAgdmFyIHgyID0geC5yZWRTcXIoKTtcbiAgdmFyIHJocyA9IHgyLnJlZE11bCh4KS5yZWRBZGQoeDIucmVkTXVsKHRoaXMuYSkpLnJlZEFkZCh4KTtcbiAgdmFyIHkgPSByaHMucmVkU3FydCgpO1xuXG4gIHJldHVybiB5LnJlZFNxcigpLmNtcChyaHMpID09PSAwO1xufTtcblxuZnVuY3Rpb24gUG9pbnQoY3VydmUsIHgsIHopIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ3Byb2plY3RpdmUnKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeiA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueiA9IHRoaXMuY3VydmUuemVybztcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnggPSBuZXcgQk4oeCwgMTYpO1xuICAgIHRoaXMueiA9IG5ldyBCTih6LCAxNik7XG4gICAgaWYgKCF0aGlzLngucmVkKVxuICAgICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMuei5yZWQpXG4gICAgICB0aGlzLnogPSB0aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICB9XG59XG5pbmhlcml0cyhQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5Nb250Q3VydmUucHJvdG90eXBlLmRlY29kZVBvaW50ID0gZnVuY3Rpb24gZGVjb2RlUG9pbnQoYnl0ZXMsIGVuYykge1xuICByZXR1cm4gdGhpcy5wb2ludCh1dGlscy50b0FycmF5KGJ5dGVzLCBlbmMpLCAxKTtcbn07XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUucG9pbnQgPSBmdW5jdGlvbiBwb2ludCh4LCB6KSB7XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcywgeCwgeik7XG59O1xuXG5Nb250Q3VydmUucHJvdG90eXBlLnBvaW50RnJvbUpTT04gPSBmdW5jdGlvbiBwb2ludEZyb21KU09OKG9iaikge1xuICByZXR1cm4gUG9pbnQuZnJvbUpTT04odGhpcywgb2JqKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5wcmVjb21wdXRlID0gZnVuY3Rpb24gcHJlY29tcHV0ZSgpIHtcbiAgLy8gTm8tb3Bcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZW5jb2RlID0gZnVuY3Rpb24gX2VuY29kZSgpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0WCgpLnRvQXJyYXkoJ2JlJywgdGhpcy5jdXJ2ZS5wLmJ5dGVMZW5ndGgoKSk7XG59O1xuXG5Qb2ludC5mcm9tSlNPTiA9IGZ1bmN0aW9uIGZyb21KU09OKGN1cnZlLCBvYmopIHtcbiAgcmV0dXJuIG5ldyBQb2ludChjdXJ2ZSwgb2JqWzBdLCBvYmpbMV0gfHwgY3VydmUub25lKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIFBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIFBvaW50IHg6ICcgKyB0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHo6ICcgKyB0aGlzLnouZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgLy8gWFhYIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgemVybyBpcyBhbHdheXMgemVybyBpbiByZWRcbiAgcmV0dXJuIHRoaXMuei5jbXBuKDApID09PSAwO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgLy8gaHR0cDovL2h5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1tb250Z29tLXh6Lmh0bWwjZG91YmxpbmctZGJsLTE5ODctbS0zXG4gIC8vIDJNICsgMlMgKyA0QVxuXG4gIC8vIEEgPSBYMSArIFoxXG4gIHZhciBhID0gdGhpcy54LnJlZEFkZCh0aGlzLnopO1xuICAvLyBBQSA9IEFeMlxuICB2YXIgYWEgPSBhLnJlZFNxcigpO1xuICAvLyBCID0gWDEgLSBaMVxuICB2YXIgYiA9IHRoaXMueC5yZWRTdWIodGhpcy56KTtcbiAgLy8gQkIgPSBCXjJcbiAgdmFyIGJiID0gYi5yZWRTcXIoKTtcbiAgLy8gQyA9IEFBIC0gQkJcbiAgdmFyIGMgPSBhYS5yZWRTdWIoYmIpO1xuICAvLyBYMyA9IEFBICogQkJcbiAgdmFyIG54ID0gYWEucmVkTXVsKGJiKTtcbiAgLy8gWjMgPSBDICogKEJCICsgQTI0ICogQylcbiAgdmFyIG56ID0gYy5yZWRNdWwoYmIucmVkQWRkKHRoaXMuY3VydmUuYTI0LnJlZE11bChjKSkpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIG9uIE1vbnRnb21lcnkgY3VydmUnKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5kaWZmQWRkID0gZnVuY3Rpb24gZGlmZkFkZChwLCBkaWZmKSB7XG4gIC8vIGh0dHA6Ly9oeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tbW9udGdvbS14ei5odG1sI2RpZmZhZGQtZGFkZC0xOTg3LW0tM1xuICAvLyA0TSArIDJTICsgNkFcblxuICAvLyBBID0gWDIgKyBaMlxuICB2YXIgYSA9IHRoaXMueC5yZWRBZGQodGhpcy56KTtcbiAgLy8gQiA9IFgyIC0gWjJcbiAgdmFyIGIgPSB0aGlzLngucmVkU3ViKHRoaXMueik7XG4gIC8vIEMgPSBYMyArIFozXG4gIHZhciBjID0gcC54LnJlZEFkZChwLnopO1xuICAvLyBEID0gWDMgLSBaM1xuICB2YXIgZCA9IHAueC5yZWRTdWIocC56KTtcbiAgLy8gREEgPSBEICogQVxuICB2YXIgZGEgPSBkLnJlZE11bChhKTtcbiAgLy8gQ0IgPSBDICogQlxuICB2YXIgY2IgPSBjLnJlZE11bChiKTtcbiAgLy8gWDUgPSBaMSAqIChEQSArIENCKV4yXG4gIHZhciBueCA9IGRpZmYuei5yZWRNdWwoZGEucmVkQWRkKGNiKS5yZWRTcXIoKSk7XG4gIC8vIFo1ID0gWDEgKiAoREEgLSBDQileMlxuICB2YXIgbnogPSBkaWZmLngucmVkTXVsKGRhLnJlZElTdWIoY2IpLnJlZFNxcigpKTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG56KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwoaykge1xuICB2YXIgdCA9IGsuY2xvbmUoKTtcbiAgdmFyIGEgPSB0aGlzOyAvLyAoTiAvIDIpICogUSArIFFcbiAgdmFyIGIgPSB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpOyAvLyAoTiAvIDIpICogUVxuICB2YXIgYyA9IHRoaXM7IC8vIFFcblxuICBmb3IgKHZhciBiaXRzID0gW107IHQuY21wbigwKSAhPT0gMDsgdC5pdXNocm4oMSkpXG4gICAgYml0cy5wdXNoKHQuYW5kbG4oMSkpO1xuXG4gIGZvciAodmFyIGkgPSBiaXRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGJpdHNbaV0gPT09IDApIHtcbiAgICAgIC8vIE4gKiBRICsgUSA9ICgoTiAvIDIpICogUSArIFEpKSArIChOIC8gMikgKiBRXG4gICAgICBhID0gYS5kaWZmQWRkKGIsIGMpO1xuICAgICAgLy8gTiAqIFEgPSAyICogKChOIC8gMikgKiBRICsgUSkpXG4gICAgICBiID0gYi5kYmwoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTiAqIFEgPSAoKE4gLyAyKSAqIFEgKyBRKSArICgoTiAvIDIpICogUSlcbiAgICAgIGIgPSBhLmRpZmZBZGQoYiwgYyk7XG4gICAgICAvLyBOICogUSArIFEgPSAyICogKChOIC8gMikgKiBRICsgUSlcbiAgICAgIGEgPSBhLmRibCgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYjtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWxBZGQgPSBmdW5jdGlvbiBtdWxBZGQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlJyk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuanVtbEFkZCA9IGZ1bmN0aW9uIGp1bWxBZGQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlJyk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcShvdGhlcikge1xuICByZXR1cm4gdGhpcy5nZXRYKCkuY21wKG90aGVyLmdldFgoKSkgPT09IDA7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubm9ybWFsaXplID0gZnVuY3Rpb24gbm9ybWFsaXplKCkge1xuICB0aGlzLnggPSB0aGlzLngucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpO1xuICB0aGlzLnogPSB0aGlzLmN1cnZlLm9uZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uIGdldFgoKSB7XG4gIC8vIE5vcm1hbGl6ZSBjb29yZGluYXRlc1xuICB0aGlzLm5vcm1hbGl6ZSgpO1xuXG4gIHJldHVybiB0aGlzLnguZnJvbVJlZCgpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xudmFyIEJhc2UgPSByZXF1aXJlKCcuL2Jhc2UnKTtcblxudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gU2hvcnRDdXJ2ZShjb25mKSB7XG4gIEJhc2UuY2FsbCh0aGlzLCAnc2hvcnQnLCBjb25mKTtcblxuICB0aGlzLmEgPSBuZXcgQk4oY29uZi5hLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmIgPSBuZXcgQk4oY29uZi5iLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLnRpbnYgPSB0aGlzLnR3by5yZWRJbnZtKCk7XG5cbiAgdGhpcy56ZXJvQSA9IHRoaXMuYS5mcm9tUmVkKCkuY21wbigwKSA9PT0gMDtcbiAgdGhpcy50aHJlZUEgPSB0aGlzLmEuZnJvbVJlZCgpLnN1Yih0aGlzLnApLmNtcG4oLTMpID09PSAwO1xuXG4gIC8vIElmIHRoZSBjdXJ2ZSBpcyBlbmRvbW9ycGhpYywgcHJlY2FsY3VsYXRlIGJldGEgYW5kIGxhbWJkYVxuICB0aGlzLmVuZG8gPSB0aGlzLl9nZXRFbmRvbW9ycGhpc20oY29uZik7XG4gIHRoaXMuX2VuZG9XbmFmVDEgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX2VuZG9XbmFmVDIgPSBuZXcgQXJyYXkoNCk7XG59XG5pbmhlcml0cyhTaG9ydEN1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gU2hvcnRDdXJ2ZTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9tb3JwaGlzbSA9IGZ1bmN0aW9uIF9nZXRFbmRvbW9ycGhpc20oY29uZikge1xuICAvLyBObyBlZmZpY2llbnQgZW5kb21vcnBoaXNtXG4gIGlmICghdGhpcy56ZXJvQSB8fCAhdGhpcy5nIHx8ICF0aGlzLm4gfHwgdGhpcy5wLm1vZG4oMykgIT09IDEpXG4gICAgcmV0dXJuO1xuXG4gIC8vIENvbXB1dGUgYmV0YSBhbmQgbGFtYmRhLCB0aGF0IGxhbWJkYSAqIFAgPSAoYmV0YSAqIFB4OyBQeSlcbiAgdmFyIGJldGE7XG4gIHZhciBsYW1iZGE7XG4gIGlmIChjb25mLmJldGEpIHtcbiAgICBiZXRhID0gbmV3IEJOKGNvbmYuYmV0YSwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgYmV0YXMgPSB0aGlzLl9nZXRFbmRvUm9vdHModGhpcy5wKTtcbiAgICAvLyBDaG9vc2UgdGhlIHNtYWxsZXN0IGJldGFcbiAgICBiZXRhID0gYmV0YXNbMF0uY21wKGJldGFzWzFdKSA8IDAgPyBiZXRhc1swXSA6IGJldGFzWzFdO1xuICAgIGJldGEgPSBiZXRhLnRvUmVkKHRoaXMucmVkKTtcbiAgfVxuICBpZiAoY29uZi5sYW1iZGEpIHtcbiAgICBsYW1iZGEgPSBuZXcgQk4oY29uZi5sYW1iZGEsIDE2KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBDaG9vc2UgdGhlIGxhbWJkYSB0aGF0IGlzIG1hdGNoaW5nIHNlbGVjdGVkIGJldGFcbiAgICB2YXIgbGFtYmRhcyA9IHRoaXMuX2dldEVuZG9Sb290cyh0aGlzLm4pO1xuICAgIGlmICh0aGlzLmcubXVsKGxhbWJkYXNbMF0pLnguY21wKHRoaXMuZy54LnJlZE11bChiZXRhKSkgPT09IDApIHtcbiAgICAgIGxhbWJkYSA9IGxhbWJkYXNbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxhbWJkYSA9IGxhbWJkYXNbMV07XG4gICAgICBhc3NlcnQodGhpcy5nLm11bChsYW1iZGEpLnguY21wKHRoaXMuZy54LnJlZE11bChiZXRhKSkgPT09IDApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdldCBiYXNpcyB2ZWN0b3JzLCB1c2VkIGZvciBiYWxhbmNlZCBsZW5ndGgtdHdvIHJlcHJlc2VudGF0aW9uXG4gIHZhciBiYXNpcztcbiAgaWYgKGNvbmYuYmFzaXMpIHtcbiAgICBiYXNpcyA9IGNvbmYuYmFzaXMubWFwKGZ1bmN0aW9uKHZlYykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYTogbmV3IEJOKHZlYy5hLCAxNiksXG4gICAgICAgIGI6IG5ldyBCTih2ZWMuYiwgMTYpLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBiYXNpcyA9IHRoaXMuX2dldEVuZG9CYXNpcyhsYW1iZGEpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBiZXRhOiBiZXRhLFxuICAgIGxhbWJkYTogbGFtYmRhLFxuICAgIGJhc2lzOiBiYXNpcyxcbiAgfTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9nZXRFbmRvUm9vdHMgPSBmdW5jdGlvbiBfZ2V0RW5kb1Jvb3RzKG51bSkge1xuICAvLyBGaW5kIHJvb3RzIG9mIGZvciB4XjIgKyB4ICsgMSBpbiBGXG4gIC8vIFJvb3QgPSAoLTEgKy0gU3FydCgtMykpIC8gMlxuICAvL1xuICB2YXIgcmVkID0gbnVtID09PSB0aGlzLnAgPyB0aGlzLnJlZCA6IEJOLm1vbnQobnVtKTtcbiAgdmFyIHRpbnYgPSBuZXcgQk4oMikudG9SZWQocmVkKS5yZWRJbnZtKCk7XG4gIHZhciBudGludiA9IHRpbnYucmVkTmVnKCk7XG5cbiAgdmFyIHMgPSBuZXcgQk4oMykudG9SZWQocmVkKS5yZWROZWcoKS5yZWRTcXJ0KCkucmVkTXVsKHRpbnYpO1xuXG4gIHZhciBsMSA9IG50aW52LnJlZEFkZChzKS5mcm9tUmVkKCk7XG4gIHZhciBsMiA9IG50aW52LnJlZFN1YihzKS5mcm9tUmVkKCk7XG4gIHJldHVybiBbIGwxLCBsMiBdO1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9CYXNpcyA9IGZ1bmN0aW9uIF9nZXRFbmRvQmFzaXMobGFtYmRhKSB7XG4gIC8vIGFwcnhTcXJ0ID49IHNxcnQodGhpcy5uKVxuICB2YXIgYXByeFNxcnQgPSB0aGlzLm4udXNocm4oTWF0aC5mbG9vcih0aGlzLm4uYml0TGVuZ3RoKCkgLyAyKSk7XG5cbiAgLy8gMy43NFxuICAvLyBSdW4gRUdDRCwgdW50aWwgcihMICsgMSkgPCBhcHJ4U3FydFxuICB2YXIgdSA9IGxhbWJkYTtcbiAgdmFyIHYgPSB0aGlzLm4uY2xvbmUoKTtcbiAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICB2YXIgeTEgPSBuZXcgQk4oMCk7XG4gIHZhciB4MiA9IG5ldyBCTigwKTtcbiAgdmFyIHkyID0gbmV3IEJOKDEpO1xuXG4gIC8vIE5PVEU6IGFsbCB2ZWN0b3JzIGFyZSByb290cyBvZjogYSArIGIgKiBsYW1iZGEgPSAwIChtb2QgbilcbiAgdmFyIGEwO1xuICB2YXIgYjA7XG4gIC8vIEZpcnN0IHZlY3RvclxuICB2YXIgYTE7XG4gIHZhciBiMTtcbiAgLy8gU2Vjb25kIHZlY3RvclxuICB2YXIgYTI7XG4gIHZhciBiMjtcblxuICB2YXIgcHJldlI7XG4gIHZhciBpID0gMDtcbiAgdmFyIHI7XG4gIHZhciB4O1xuICB3aGlsZSAodS5jbXBuKDApICE9PSAwKSB7XG4gICAgdmFyIHEgPSB2LmRpdih1KTtcbiAgICByID0gdi5zdWIocS5tdWwodSkpO1xuICAgIHggPSB4Mi5zdWIocS5tdWwoeDEpKTtcbiAgICB2YXIgeSA9IHkyLnN1YihxLm11bCh5MSkpO1xuXG4gICAgaWYgKCFhMSAmJiByLmNtcChhcHJ4U3FydCkgPCAwKSB7XG4gICAgICBhMCA9IHByZXZSLm5lZygpO1xuICAgICAgYjAgPSB4MTtcbiAgICAgIGExID0gci5uZWcoKTtcbiAgICAgIGIxID0geDtcbiAgICB9IGVsc2UgaWYgKGExICYmICsraSA9PT0gMikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHByZXZSID0gcjtcblxuICAgIHYgPSB1O1xuICAgIHUgPSByO1xuICAgIHgyID0geDE7XG4gICAgeDEgPSB4O1xuICAgIHkyID0geTE7XG4gICAgeTEgPSB5O1xuICB9XG4gIGEyID0gci5uZWcoKTtcbiAgYjIgPSB4O1xuXG4gIHZhciBsZW4xID0gYTEuc3FyKCkuYWRkKGIxLnNxcigpKTtcbiAgdmFyIGxlbjIgPSBhMi5zcXIoKS5hZGQoYjIuc3FyKCkpO1xuICBpZiAobGVuMi5jbXAobGVuMSkgPj0gMCkge1xuICAgIGEyID0gYTA7XG4gICAgYjIgPSBiMDtcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBzaWduc1xuICBpZiAoYTEubmVnYXRpdmUpIHtcbiAgICBhMSA9IGExLm5lZygpO1xuICAgIGIxID0gYjEubmVnKCk7XG4gIH1cbiAgaWYgKGEyLm5lZ2F0aXZlKSB7XG4gICAgYTIgPSBhMi5uZWcoKTtcbiAgICBiMiA9IGIyLm5lZygpO1xuICB9XG5cbiAgcmV0dXJuIFtcbiAgICB7IGE6IGExLCBiOiBiMSB9LFxuICAgIHsgYTogYTIsIGI6IGIyIH0sXG4gIF07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZW5kb1NwbGl0ID0gZnVuY3Rpb24gX2VuZG9TcGxpdChrKSB7XG4gIHZhciBiYXNpcyA9IHRoaXMuZW5kby5iYXNpcztcbiAgdmFyIHYxID0gYmFzaXNbMF07XG4gIHZhciB2MiA9IGJhc2lzWzFdO1xuXG4gIHZhciBjMSA9IHYyLmIubXVsKGspLmRpdlJvdW5kKHRoaXMubik7XG4gIHZhciBjMiA9IHYxLmIubmVnKCkubXVsKGspLmRpdlJvdW5kKHRoaXMubik7XG5cbiAgdmFyIHAxID0gYzEubXVsKHYxLmEpO1xuICB2YXIgcDIgPSBjMi5tdWwodjIuYSk7XG4gIHZhciBxMSA9IGMxLm11bCh2MS5iKTtcbiAgdmFyIHEyID0gYzIubXVsKHYyLmIpO1xuXG4gIC8vIENhbGN1bGF0ZSBhbnN3ZXJcbiAgdmFyIGsxID0gay5zdWIocDEpLnN1YihwMik7XG4gIHZhciBrMiA9IHExLmFkZChxMikubmVnKCk7XG4gIHJldHVybiB7IGsxOiBrMSwgazI6IGsyIH07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludEZyb21YID0gZnVuY3Rpb24gcG9pbnRGcm9tWCh4LCBvZGQpIHtcbiAgeCA9IG5ldyBCTih4LCAxNik7XG4gIGlmICgheC5yZWQpXG4gICAgeCA9IHgudG9SZWQodGhpcy5yZWQpO1xuXG4gIHZhciB5MiA9IHgucmVkU3FyKCkucmVkTXVsKHgpLnJlZElBZGQoeC5yZWRNdWwodGhpcy5hKSkucmVkSUFkZCh0aGlzLmIpO1xuICB2YXIgeSA9IHkyLnJlZFNxcnQoKTtcbiAgaWYgKHkucmVkU3FyKCkucmVkU3ViKHkyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICAvLyBYWFggSXMgdGhlcmUgYW55IHdheSB0byB0ZWxsIGlmIHRoZSBudW1iZXIgaXMgb2RkIHdpdGhvdXQgY29udmVydGluZyBpdFxuICAvLyB0byBub24tcmVkIGZvcm0/XG4gIHZhciBpc09kZCA9IHkuZnJvbVJlZCgpLmlzT2RkKCk7XG4gIGlmIChvZGQgJiYgIWlzT2RkIHx8ICFvZGQgJiYgaXNPZGQpXG4gICAgeSA9IHkucmVkTmVnKCk7XG5cbiAgcmV0dXJuIHRoaXMucG9pbnQoeCwgeSk7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKHBvaW50KSB7XG4gIGlmIChwb2ludC5pbmYpXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgdmFyIHggPSBwb2ludC54O1xuICB2YXIgeSA9IHBvaW50Lnk7XG5cbiAgdmFyIGF4ID0gdGhpcy5hLnJlZE11bCh4KTtcbiAgdmFyIHJocyA9IHgucmVkU3FyKCkucmVkTXVsKHgpLnJlZElBZGQoYXgpLnJlZElBZGQodGhpcy5iKTtcbiAgcmV0dXJuIHkucmVkU3FyKCkucmVkSVN1YihyaHMpLmNtcG4oMCkgPT09IDA7XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZW5kb1duYWZNdWxBZGQgPVxuICAgIGZ1bmN0aW9uIF9lbmRvV25hZk11bEFkZChwb2ludHMsIGNvZWZmcywgamFjb2JpYW5SZXN1bHQpIHtcbiAgICAgIHZhciBucG9pbnRzID0gdGhpcy5fZW5kb1duYWZUMTtcbiAgICAgIHZhciBuY29lZmZzID0gdGhpcy5fZW5kb1duYWZUMjtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzcGxpdCA9IHRoaXMuX2VuZG9TcGxpdChjb2VmZnNbaV0pO1xuICAgICAgICB2YXIgcCA9IHBvaW50c1tpXTtcbiAgICAgICAgdmFyIGJldGEgPSBwLl9nZXRCZXRhKCk7XG5cbiAgICAgICAgaWYgKHNwbGl0LmsxLm5lZ2F0aXZlKSB7XG4gICAgICAgICAgc3BsaXQuazEuaW5lZygpO1xuICAgICAgICAgIHAgPSBwLm5lZyh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3BsaXQuazIubmVnYXRpdmUpIHtcbiAgICAgICAgICBzcGxpdC5rMi5pbmVnKCk7XG4gICAgICAgICAgYmV0YSA9IGJldGEubmVnKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbnBvaW50c1tpICogMl0gPSBwO1xuICAgICAgICBucG9pbnRzW2kgKiAyICsgMV0gPSBiZXRhO1xuICAgICAgICBuY29lZmZzW2kgKiAyXSA9IHNwbGl0LmsxO1xuICAgICAgICBuY29lZmZzW2kgKiAyICsgMV0gPSBzcGxpdC5rMjtcbiAgICAgIH1cbiAgICAgIHZhciByZXMgPSB0aGlzLl93bmFmTXVsQWRkKDEsIG5wb2ludHMsIG5jb2VmZnMsIGkgKiAyLCBqYWNvYmlhblJlc3VsdCk7XG5cbiAgICAgIC8vIENsZWFuLXVwIHJlZmVyZW5jZXMgdG8gcG9pbnRzIGFuZCBjb2VmZmljaWVudHNcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaSAqIDI7IGorKykge1xuICAgICAgICBucG9pbnRzW2pdID0gbnVsbDtcbiAgICAgICAgbmNvZWZmc1tqXSA9IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbmZ1bmN0aW9uIFBvaW50KGN1cnZlLCB4LCB5LCBpc1JlZCkge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAnYWZmaW5lJyk7XG4gIGlmICh4ID09PSBudWxsICYmIHkgPT09IG51bGwpIHtcbiAgICB0aGlzLnggPSBudWxsO1xuICAgIHRoaXMueSA9IG51bGw7XG4gICAgdGhpcy5pbmYgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy55ID0gbmV3IEJOKHksIDE2KTtcbiAgICAvLyBGb3JjZSByZWRnb21lcnkgcmVwcmVzZW50YXRpb24gd2hlbiBsb2FkaW5nIGZyb20gSlNPTlxuICAgIGlmIChpc1JlZCkge1xuICAgICAgdGhpcy54LmZvcmNlUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICAgIHRoaXMueS5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgfVxuICAgIGlmICghdGhpcy54LnJlZClcbiAgICAgIHRoaXMueCA9IHRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnkucmVkKVxuICAgICAgdGhpcy55ID0gdGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICB0aGlzLmluZiA9IGZhbHNlO1xuICB9XG59XG5pbmhlcml0cyhQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5wb2ludCA9IGZ1bmN0aW9uIHBvaW50KHgsIHksIGlzUmVkKSB7XG4gIHJldHVybiBuZXcgUG9pbnQodGhpcywgeCwgeSwgaXNSZWQpO1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tSlNPTiA9IGZ1bmN0aW9uIHBvaW50RnJvbUpTT04ob2JqLCByZWQpIHtcbiAgcmV0dXJuIFBvaW50LmZyb21KU09OKHRoaXMsIG9iaiwgcmVkKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZ2V0QmV0YSA9IGZ1bmN0aW9uIF9nZXRCZXRhKCkge1xuICBpZiAoIXRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm47XG5cbiAgdmFyIHByZSA9IHRoaXMucHJlY29tcHV0ZWQ7XG4gIGlmIChwcmUgJiYgcHJlLmJldGEpXG4gICAgcmV0dXJuIHByZS5iZXRhO1xuXG4gIHZhciBiZXRhID0gdGhpcy5jdXJ2ZS5wb2ludCh0aGlzLngucmVkTXVsKHRoaXMuY3VydmUuZW5kby5iZXRhKSwgdGhpcy55KTtcbiAgaWYgKHByZSkge1xuICAgIHZhciBjdXJ2ZSA9IHRoaXMuY3VydmU7XG4gICAgdmFyIGVuZG9NdWwgPSBmdW5jdGlvbihwKSB7XG4gICAgICByZXR1cm4gY3VydmUucG9pbnQocC54LnJlZE11bChjdXJ2ZS5lbmRvLmJldGEpLCBwLnkpO1xuICAgIH07XG4gICAgcHJlLmJldGEgPSBiZXRhO1xuICAgIGJldGEucHJlY29tcHV0ZWQgPSB7XG4gICAgICBiZXRhOiBudWxsLFxuICAgICAgbmFmOiBwcmUubmFmICYmIHtcbiAgICAgICAgd25kOiBwcmUubmFmLnduZCxcbiAgICAgICAgcG9pbnRzOiBwcmUubmFmLnBvaW50cy5tYXAoZW5kb011bCksXG4gICAgICB9LFxuICAgICAgZG91YmxlczogcHJlLmRvdWJsZXMgJiYge1xuICAgICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgICBwb2ludHM6IHByZS5kb3VibGVzLnBvaW50cy5tYXAoZW5kb011bCksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIGJldGE7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OKCkge1xuICBpZiAoIXRoaXMucHJlY29tcHV0ZWQpXG4gICAgcmV0dXJuIFsgdGhpcy54LCB0aGlzLnkgXTtcblxuICByZXR1cm4gWyB0aGlzLngsIHRoaXMueSwgdGhpcy5wcmVjb21wdXRlZCAmJiB7XG4gICAgZG91YmxlczogdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzICYmIHtcbiAgICAgIHN0ZXA6IHRoaXMucHJlY29tcHV0ZWQuZG91Ymxlcy5zdGVwLFxuICAgICAgcG9pbnRzOiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMucG9pbnRzLnNsaWNlKDEpLFxuICAgIH0sXG4gICAgbmFmOiB0aGlzLnByZWNvbXB1dGVkLm5hZiAmJiB7XG4gICAgICB3bmQ6IHRoaXMucHJlY29tcHV0ZWQubmFmLnduZCxcbiAgICAgIHBvaW50czogdGhpcy5wcmVjb21wdXRlZC5uYWYucG9pbnRzLnNsaWNlKDEpLFxuICAgIH0sXG4gIH0gXTtcbn07XG5cblBvaW50LmZyb21KU09OID0gZnVuY3Rpb24gZnJvbUpTT04oY3VydmUsIG9iaiwgcmVkKSB7XG4gIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJylcbiAgICBvYmogPSBKU09OLnBhcnNlKG9iaik7XG4gIHZhciByZXMgPSBjdXJ2ZS5wb2ludChvYmpbMF0sIG9ialsxXSwgcmVkKTtcbiAgaWYgKCFvYmpbMl0pXG4gICAgcmV0dXJuIHJlcztcblxuICBmdW5jdGlvbiBvYmoycG9pbnQob2JqKSB7XG4gICAgcmV0dXJuIGN1cnZlLnBvaW50KG9ialswXSwgb2JqWzFdLCByZWQpO1xuICB9XG5cbiAgdmFyIHByZSA9IG9ialsyXTtcbiAgcmVzLnByZWNvbXB1dGVkID0ge1xuICAgIGJldGE6IG51bGwsXG4gICAgZG91YmxlczogcHJlLmRvdWJsZXMgJiYge1xuICAgICAgc3RlcDogcHJlLmRvdWJsZXMuc3RlcCxcbiAgICAgIHBvaW50czogWyByZXMgXS5jb25jYXQocHJlLmRvdWJsZXMucG9pbnRzLm1hcChvYmoycG9pbnQpKSxcbiAgICB9LFxuICAgIG5hZjogcHJlLm5hZiAmJiB7XG4gICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgcG9pbnRzOiBbIHJlcyBdLmNvbmNhdChwcmUubmFmLnBvaW50cy5tYXAob2JqMnBvaW50KSksXG4gICAgfSxcbiAgfTtcbiAgcmV0dXJuIHJlcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIFBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIFBvaW50IHg6ICcgKyB0aGlzLnguZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHk6ICcgKyB0aGlzLnkuZnJvbVJlZCgpLnRvU3RyaW5nKDE2LCAyKSArICc+Jztcbn07XG5cblBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgcmV0dXJuIHRoaXMuaW5mO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChwKSB7XG4gIC8vIE8gKyBQID0gUFxuICBpZiAodGhpcy5pbmYpXG4gICAgcmV0dXJuIHA7XG5cbiAgLy8gUCArIE8gPSBQXG4gIGlmIChwLmluZilcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyBQICsgUCA9IDJQXG4gIGlmICh0aGlzLmVxKHApKVxuICAgIHJldHVybiB0aGlzLmRibCgpO1xuXG4gIC8vIFAgKyAoLVApID0gT1xuICBpZiAodGhpcy5uZWcoKS5lcShwKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLCBudWxsKTtcblxuICAvLyBQICsgUSA9IE9cbiAgaWYgKHRoaXMueC5jbXAocC54KSA9PT0gMClcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLCBudWxsKTtcblxuICB2YXIgYyA9IHRoaXMueS5yZWRTdWIocC55KTtcbiAgaWYgKGMuY21wbigwKSAhPT0gMClcbiAgICBjID0gYy5yZWRNdWwodGhpcy54LnJlZFN1YihwLngpLnJlZEludm0oKSk7XG4gIHZhciBueCA9IGMucmVkU3FyKCkucmVkSVN1Yih0aGlzLngpLnJlZElTdWIocC54KTtcbiAgdmFyIG55ID0gYy5yZWRNdWwodGhpcy54LnJlZFN1YihueCkpLnJlZElTdWIodGhpcy55KTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5kYmwgPSBmdW5jdGlvbiBkYmwoKSB7XG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyAyUCA9IE9cbiAgdmFyIHlzMSA9IHRoaXMueS5yZWRBZGQodGhpcy55KTtcbiAgaWYgKHlzMS5jbXBuKDApID09PSAwKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciBhID0gdGhpcy5jdXJ2ZS5hO1xuXG4gIHZhciB4MiA9IHRoaXMueC5yZWRTcXIoKTtcbiAgdmFyIGR5aW52ID0geXMxLnJlZEludm0oKTtcbiAgdmFyIGMgPSB4Mi5yZWRBZGQoeDIpLnJlZElBZGQoeDIpLnJlZElBZGQoYSkucmVkTXVsKGR5aW52KTtcblxuICB2YXIgbnggPSBjLnJlZFNxcigpLnJlZElTdWIodGhpcy54LnJlZEFkZCh0aGlzLngpKTtcbiAgdmFyIG55ID0gYy5yZWRNdWwodGhpcy54LnJlZFN1YihueCkpLnJlZElTdWIodGhpcy55KTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRYID0gZnVuY3Rpb24gZ2V0WCgpIHtcbiAgcmV0dXJuIHRoaXMueC5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WSA9IGZ1bmN0aW9uIGdldFkoKSB7XG4gIHJldHVybiB0aGlzLnkuZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrKSB7XG4gIGsgPSBuZXcgQk4oaywgMTYpO1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG4gIGVsc2UgaWYgKHRoaXMuX2hhc0RvdWJsZXMoaykpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsIGspO1xuICBlbHNlIGlmICh0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKFsgdGhpcyBdLCBbIGsgXSk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLCBrKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWxBZGQgPSBmdW5jdGlvbiBtdWxBZGQoazEsIHAyLCBrMikge1xuICB2YXIgcG9pbnRzID0gWyB0aGlzLCBwMiBdO1xuICB2YXIgY29lZmZzID0gWyBrMSwgazIgXTtcbiAgaWYgKHRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQocG9pbnRzLCBjb2VmZnMpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgcG9pbnRzLCBjb2VmZnMsIDIpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmptdWxBZGQgPSBmdW5jdGlvbiBqbXVsQWRkKGsxLCBwMiwgazIpIHtcbiAgdmFyIHBvaW50cyA9IFsgdGhpcywgcDIgXTtcbiAgdmFyIGNvZWZmcyA9IFsgazEsIGsyIF07XG4gIGlmICh0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2VuZG9XbmFmTXVsQWRkKHBvaW50cywgY29lZmZzLCB0cnVlKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsQWRkKDEsIHBvaW50cywgY29lZmZzLCAyLCB0cnVlKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxKHApIHtcbiAgcmV0dXJuIHRoaXMgPT09IHAgfHxcbiAgICAgICAgIHRoaXMuaW5mID09PSBwLmluZiAmJlxuICAgICAgICAgICAgICh0aGlzLmluZiB8fCB0aGlzLnguY21wKHAueCkgPT09IDAgJiYgdGhpcy55LmNtcChwLnkpID09PSAwKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcoX3ByZWNvbXB1dGUpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIHZhciByZXMgPSB0aGlzLmN1cnZlLnBvaW50KHRoaXMueCwgdGhpcy55LnJlZE5lZygpKTtcbiAgaWYgKF9wcmVjb21wdXRlICYmIHRoaXMucHJlY29tcHV0ZWQpIHtcbiAgICB2YXIgcHJlID0gdGhpcy5wcmVjb21wdXRlZDtcbiAgICB2YXIgbmVnYXRlID0gZnVuY3Rpb24ocCkge1xuICAgICAgcmV0dXJuIHAubmVnKCk7XG4gICAgfTtcbiAgICByZXMucHJlY29tcHV0ZWQgPSB7XG4gICAgICBuYWY6IHByZS5uYWYgJiYge1xuICAgICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgICBwb2ludHM6IHByZS5uYWYucG9pbnRzLm1hcChuZWdhdGUpLFxuICAgICAgfSxcbiAgICAgIGRvdWJsZXM6IHByZS5kb3VibGVzICYmIHtcbiAgICAgICAgc3RlcDogcHJlLmRvdWJsZXMuc3RlcCxcbiAgICAgICAgcG9pbnRzOiBwcmUuZG91Ymxlcy5wb2ludHMubWFwKG5lZ2F0ZSksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHJlcztcbn07XG5cblBvaW50LnByb3RvdHlwZS50b0ogPSBmdW5jdGlvbiB0b0ooKSB7XG4gIGlmICh0aGlzLmluZilcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobnVsbCwgbnVsbCwgbnVsbCk7XG5cbiAgdmFyIHJlcyA9IHRoaXMuY3VydmUuanBvaW50KHRoaXMueCwgdGhpcy55LCB0aGlzLmN1cnZlLm9uZSk7XG4gIHJldHVybiByZXM7XG59O1xuXG5mdW5jdGlvbiBKUG9pbnQoY3VydmUsIHgsIHksIHopIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ2phY29iaWFuJyk7XG4gIGlmICh4ID09PSBudWxsICYmIHkgPT09IG51bGwgJiYgeiA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueSA9IHRoaXMuY3VydmUub25lO1xuICAgIHRoaXMueiA9IG5ldyBCTigwKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnggPSBuZXcgQk4oeCwgMTYpO1xuICAgIHRoaXMueSA9IG5ldyBCTih5LCAxNik7XG4gICAgdGhpcy56ID0gbmV3IEJOKHosIDE2KTtcbiAgfVxuICBpZiAoIXRoaXMueC5yZWQpXG4gICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgaWYgKCF0aGlzLnkucmVkKVxuICAgIHRoaXMueSA9IHRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gIGlmICghdGhpcy56LnJlZClcbiAgICB0aGlzLnogPSB0aGlzLnoudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuXG4gIHRoaXMuek9uZSA9IHRoaXMueiA9PT0gdGhpcy5jdXJ2ZS5vbmU7XG59XG5pbmhlcml0cyhKUG9pbnQsIEJhc2UuQmFzZVBvaW50KTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuanBvaW50ID0gZnVuY3Rpb24ganBvaW50KHgsIHksIHopIHtcbiAgcmV0dXJuIG5ldyBKUG9pbnQodGhpcywgeCwgeSwgeik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLnRvUCA9IGZ1bmN0aW9uIHRvUCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG51bGwsIG51bGwpO1xuXG4gIHZhciB6aW52ID0gdGhpcy56LnJlZEludm0oKTtcbiAgdmFyIHppbnYyID0gemludi5yZWRTcXIoKTtcbiAgdmFyIGF4ID0gdGhpcy54LnJlZE11bCh6aW52Mik7XG4gIHZhciBheSA9IHRoaXMueS5yZWRNdWwoemludjIpLnJlZE11bCh6aW52KTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChheCwgYXkpO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcoKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludCh0aGlzLngsIHRoaXMueS5yZWROZWcoKSwgdGhpcy56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gcDtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDEyTSArIDRTICsgN0FcbiAgdmFyIHB6MiA9IHAuei5yZWRTcXIoKTtcbiAgdmFyIHoyID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgdTEgPSB0aGlzLngucmVkTXVsKHB6Mik7XG4gIHZhciB1MiA9IHAueC5yZWRNdWwoejIpO1xuICB2YXIgczEgPSB0aGlzLnkucmVkTXVsKHB6Mi5yZWRNdWwocC56KSk7XG4gIHZhciBzMiA9IHAueS5yZWRNdWwoejIucmVkTXVsKHRoaXMueikpO1xuXG4gIHZhciBoID0gdTEucmVkU3ViKHUyKTtcbiAgdmFyIHIgPSBzMS5yZWRTdWIoczIpO1xuICBpZiAoaC5jbXBuKDApID09PSAwKSB7XG4gICAgaWYgKHIuY21wbigwKSAhPT0gMClcbiAgICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5kYmwoKTtcbiAgfVxuXG4gIHZhciBoMiA9IGgucmVkU3FyKCk7XG4gIHZhciBoMyA9IGgyLnJlZE11bChoKTtcbiAgdmFyIHYgPSB1MS5yZWRNdWwoaDIpO1xuXG4gIHZhciBueCA9IHIucmVkU3FyKCkucmVkSUFkZChoMykucmVkSVN1Yih2KS5yZWRJU3ViKHYpO1xuICB2YXIgbnkgPSByLnJlZE11bCh2LnJlZElTdWIobngpKS5yZWRJU3ViKHMxLnJlZE11bChoMykpO1xuICB2YXIgbnogPSB0aGlzLnoucmVkTXVsKHAueikucmVkTXVsKGgpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUubWl4ZWRBZGQgPSBmdW5jdGlvbiBtaXhlZEFkZChwKSB7XG4gIC8vIE8gKyBQID0gUFxuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHAudG9KKCk7XG5cbiAgLy8gUCArIE8gPSBQXG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICAvLyA4TSArIDNTICsgN0FcbiAgdmFyIHoyID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgdTEgPSB0aGlzLng7XG4gIHZhciB1MiA9IHAueC5yZWRNdWwoejIpO1xuICB2YXIgczEgPSB0aGlzLnk7XG4gIHZhciBzMiA9IHAueS5yZWRNdWwoejIpLnJlZE11bCh0aGlzLnopO1xuXG4gIHZhciBoID0gdTEucmVkU3ViKHUyKTtcbiAgdmFyIHIgPSBzMS5yZWRTdWIoczIpO1xuICBpZiAoaC5jbXBuKDApID09PSAwKSB7XG4gICAgaWYgKHIuY21wbigwKSAhPT0gMClcbiAgICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gdGhpcy5kYmwoKTtcbiAgfVxuXG4gIHZhciBoMiA9IGgucmVkU3FyKCk7XG4gIHZhciBoMyA9IGgyLnJlZE11bChoKTtcbiAgdmFyIHYgPSB1MS5yZWRNdWwoaDIpO1xuXG4gIHZhciBueCA9IHIucmVkU3FyKCkucmVkSUFkZChoMykucmVkSVN1Yih2KS5yZWRJU3ViKHYpO1xuICB2YXIgbnkgPSByLnJlZE11bCh2LnJlZElTdWIobngpKS5yZWRJU3ViKHMxLnJlZE11bChoMykpO1xuICB2YXIgbnogPSB0aGlzLnoucmVkTXVsKGgpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZGJscCA9IGZ1bmN0aW9uIGRibHAocG93KSB7XG4gIGlmIChwb3cgPT09IDApXG4gICAgcmV0dXJuIHRoaXM7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcbiAgaWYgKCFwb3cpXG4gICAgcmV0dXJuIHRoaXMuZGJsKCk7XG5cbiAgdmFyIGk7XG4gIGlmICh0aGlzLmN1cnZlLnplcm9BIHx8IHRoaXMuY3VydmUudGhyZWVBKSB7XG4gICAgdmFyIHIgPSB0aGlzO1xuICAgIGZvciAoaSA9IDA7IGkgPCBwb3c7IGkrKylcbiAgICAgIHIgPSByLmRibCgpO1xuICAgIHJldHVybiByO1xuICB9XG5cbiAgLy8gMU0gKyAyUyArIDFBICsgTiAqICg0UyArIDVNICsgOEEpXG4gIC8vIE4gPSAxID0+IDZNICsgNlMgKyA5QVxuICB2YXIgYSA9IHRoaXMuY3VydmUuYTtcbiAgdmFyIHRpbnYgPSB0aGlzLmN1cnZlLnRpbnY7XG5cbiAgdmFyIGp4ID0gdGhpcy54O1xuICB2YXIgankgPSB0aGlzLnk7XG4gIHZhciBqeiA9IHRoaXMuejtcbiAgdmFyIGp6NCA9IGp6LnJlZFNxcigpLnJlZFNxcigpO1xuXG4gIC8vIFJldXNlIHJlc3VsdHNcbiAgdmFyIGp5ZCA9IGp5LnJlZEFkZChqeSk7XG4gIGZvciAoaSA9IDA7IGkgPCBwb3c7IGkrKykge1xuICAgIHZhciBqeDIgPSBqeC5yZWRTcXIoKTtcbiAgICB2YXIganlkMiA9IGp5ZC5yZWRTcXIoKTtcbiAgICB2YXIganlkNCA9IGp5ZDIucmVkU3FyKCk7XG4gICAgdmFyIGMgPSBqeDIucmVkQWRkKGp4MikucmVkSUFkZChqeDIpLnJlZElBZGQoYS5yZWRNdWwoano0KSk7XG5cbiAgICB2YXIgdDEgPSBqeC5yZWRNdWwoanlkMik7XG4gICAgdmFyIG54ID0gYy5yZWRTcXIoKS5yZWRJU3ViKHQxLnJlZEFkZCh0MSkpO1xuICAgIHZhciB0MiA9IHQxLnJlZElTdWIobngpO1xuICAgIHZhciBkbnkgPSBjLnJlZE11bCh0Mik7XG4gICAgZG55ID0gZG55LnJlZElBZGQoZG55KS5yZWRJU3ViKGp5ZDQpO1xuICAgIHZhciBueiA9IGp5ZC5yZWRNdWwoanopO1xuICAgIGlmIChpICsgMSA8IHBvdylcbiAgICAgIGp6NCA9IGp6NC5yZWRNdWwoanlkNCk7XG5cbiAgICBqeCA9IG54O1xuICAgIGp6ID0gbno7XG4gICAganlkID0gZG55O1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KGp4LCBqeWQucmVkTXVsKHRpbnYpLCBqeik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIGlmICh0aGlzLmN1cnZlLnplcm9BKVxuICAgIHJldHVybiB0aGlzLl96ZXJvRGJsKCk7XG4gIGVsc2UgaWYgKHRoaXMuY3VydmUudGhyZWVBKVxuICAgIHJldHVybiB0aGlzLl90aHJlZURibCgpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuX2RibCgpO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5femVyb0RibCA9IGZ1bmN0aW9uIF96ZXJvRGJsKCkge1xuICB2YXIgbng7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICAvLyBaID0gMVxuICBpZiAodGhpcy56T25lKSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0wLmh0bWxcbiAgICAvLyAgICAgI2RvdWJsaW5nLW1kYmwtMjAwNy1ibFxuICAgIC8vIDFNICsgNVMgKyAxNEFcblxuICAgIC8vIFhYID0gWDFeMlxuICAgIHZhciB4eCA9IHRoaXMueC5yZWRTcXIoKTtcbiAgICAvLyBZWSA9IFkxXjJcbiAgICB2YXIgeXkgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gWVlZWSA9IFlZXjJcbiAgICB2YXIgeXl5eSA9IHl5LnJlZFNxcigpO1xuICAgIC8vIFMgPSAyICogKChYMSArIFlZKV4yIC0gWFggLSBZWVlZKVxuICAgIHZhciBzID0gdGhpcy54LnJlZEFkZCh5eSkucmVkU3FyKCkucmVkSVN1Yih4eCkucmVkSVN1Yih5eXl5KTtcbiAgICBzID0gcy5yZWRJQWRkKHMpO1xuICAgIC8vIE0gPSAzICogWFggKyBhOyBhID0gMFxuICAgIHZhciBtID0geHgucmVkQWRkKHh4KS5yZWRJQWRkKHh4KTtcbiAgICAvLyBUID0gTSBeIDIgLSAyKlNcbiAgICB2YXIgdCA9IG0ucmVkU3FyKCkucmVkSVN1YihzKS5yZWRJU3ViKHMpO1xuXG4gICAgLy8gOCAqIFlZWVlcbiAgICB2YXIgeXl5eTggPSB5eXl5LnJlZElBZGQoeXl5eSk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuXG4gICAgLy8gWDMgPSBUXG4gICAgbnggPSB0O1xuICAgIC8vIFkzID0gTSAqIChTIC0gVCkgLSA4ICogWVlZWVxuICAgIG55ID0gbS5yZWRNdWwocy5yZWRJU3ViKHQpKS5yZWRJU3ViKHl5eXk4KTtcbiAgICAvLyBaMyA9IDIqWTFcbiAgICBueiA9IHRoaXMueS5yZWRBZGQodGhpcy55KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTAuaHRtbFxuICAgIC8vICAgICAjZG91YmxpbmctZGJsLTIwMDktbFxuICAgIC8vIDJNICsgNVMgKyAxM0FcblxuICAgIC8vIEEgPSBYMV4yXG4gICAgdmFyIGEgPSB0aGlzLngucmVkU3FyKCk7XG4gICAgLy8gQiA9IFkxXjJcbiAgICB2YXIgYiA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBDID0gQl4yXG4gICAgdmFyIGMgPSBiLnJlZFNxcigpO1xuICAgIC8vIEQgPSAyICogKChYMSArIEIpXjIgLSBBIC0gQylcbiAgICB2YXIgZCA9IHRoaXMueC5yZWRBZGQoYikucmVkU3FyKCkucmVkSVN1YihhKS5yZWRJU3ViKGMpO1xuICAgIGQgPSBkLnJlZElBZGQoZCk7XG4gICAgLy8gRSA9IDMgKiBBXG4gICAgdmFyIGUgPSBhLnJlZEFkZChhKS5yZWRJQWRkKGEpO1xuICAgIC8vIEYgPSBFXjJcbiAgICB2YXIgZiA9IGUucmVkU3FyKCk7XG5cbiAgICAvLyA4ICogQ1xuICAgIHZhciBjOCA9IGMucmVkSUFkZChjKTtcbiAgICBjOCA9IGM4LnJlZElBZGQoYzgpO1xuICAgIGM4ID0gYzgucmVkSUFkZChjOCk7XG5cbiAgICAvLyBYMyA9IEYgLSAyICogRFxuICAgIG54ID0gZi5yZWRJU3ViKGQpLnJlZElTdWIoZCk7XG4gICAgLy8gWTMgPSBFICogKEQgLSBYMykgLSA4ICogQ1xuICAgIG55ID0gZS5yZWRNdWwoZC5yZWRJU3ViKG54KSkucmVkSVN1YihjOCk7XG4gICAgLy8gWjMgPSAyICogWTEgKiBaMVxuICAgIG56ID0gdGhpcy55LnJlZE11bCh0aGlzLnopO1xuICAgIG56ID0gbnoucmVkSUFkZChueik7XG4gIH1cblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLl90aHJlZURibCA9IGZ1bmN0aW9uIF90aHJlZURibCgpIHtcbiAgdmFyIG54O1xuICB2YXIgbnk7XG4gIHZhciBuejtcbiAgLy8gWiA9IDFcbiAgaWYgKHRoaXMuek9uZSkge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMy5odG1sXG4gICAgLy8gICAgICNkb3VibGluZy1tZGJsLTIwMDctYmxcbiAgICAvLyAxTSArIDVTICsgMTVBXG5cbiAgICAvLyBYWCA9IFgxXjJcbiAgICB2YXIgeHggPSB0aGlzLngucmVkU3FyKCk7XG4gICAgLy8gWVkgPSBZMV4yXG4gICAgdmFyIHl5ID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIFlZWVkgPSBZWV4yXG4gICAgdmFyIHl5eXkgPSB5eS5yZWRTcXIoKTtcbiAgICAvLyBTID0gMiAqICgoWDEgKyBZWSleMiAtIFhYIC0gWVlZWSlcbiAgICB2YXIgcyA9IHRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7XG4gICAgcyA9IHMucmVkSUFkZChzKTtcbiAgICAvLyBNID0gMyAqIFhYICsgYVxuICAgIHZhciBtID0geHgucmVkQWRkKHh4KS5yZWRJQWRkKHh4KS5yZWRJQWRkKHRoaXMuY3VydmUuYSk7XG4gICAgLy8gVCA9IE1eMiAtIDIgKiBTXG4gICAgdmFyIHQgPSBtLnJlZFNxcigpLnJlZElTdWIocykucmVkSVN1YihzKTtcbiAgICAvLyBYMyA9IFRcbiAgICBueCA9IHQ7XG4gICAgLy8gWTMgPSBNICogKFMgLSBUKSAtIDggKiBZWVlZXG4gICAgdmFyIHl5eXk4ID0geXl5eS5yZWRJQWRkKHl5eXkpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcbiAgICBueSA9IG0ucmVkTXVsKHMucmVkSVN1Yih0KSkucmVkSVN1Yih5eXl5OCk7XG4gICAgLy8gWjMgPSAyICogWTFcbiAgICBueiA9IHRoaXMueS5yZWRBZGQodGhpcy55KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTMuaHRtbCNkb3VibGluZy1kYmwtMjAwMS1iXG4gICAgLy8gM00gKyA1U1xuXG4gICAgLy8gZGVsdGEgPSBaMV4yXG4gICAgdmFyIGRlbHRhID0gdGhpcy56LnJlZFNxcigpO1xuICAgIC8vIGdhbW1hID0gWTFeMlxuICAgIHZhciBnYW1tYSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBiZXRhID0gWDEgKiBnYW1tYVxuICAgIHZhciBiZXRhID0gdGhpcy54LnJlZE11bChnYW1tYSk7XG4gICAgLy8gYWxwaGEgPSAzICogKFgxIC0gZGVsdGEpICogKFgxICsgZGVsdGEpXG4gICAgdmFyIGFscGhhID0gdGhpcy54LnJlZFN1YihkZWx0YSkucmVkTXVsKHRoaXMueC5yZWRBZGQoZGVsdGEpKTtcbiAgICBhbHBoYSA9IGFscGhhLnJlZEFkZChhbHBoYSkucmVkSUFkZChhbHBoYSk7XG4gICAgLy8gWDMgPSBhbHBoYV4yIC0gOCAqIGJldGFcbiAgICB2YXIgYmV0YTQgPSBiZXRhLnJlZElBZGQoYmV0YSk7XG4gICAgYmV0YTQgPSBiZXRhNC5yZWRJQWRkKGJldGE0KTtcbiAgICB2YXIgYmV0YTggPSBiZXRhNC5yZWRBZGQoYmV0YTQpO1xuICAgIG54ID0gYWxwaGEucmVkU3FyKCkucmVkSVN1YihiZXRhOCk7XG4gICAgLy8gWjMgPSAoWTEgKyBaMSleMiAtIGdhbW1hIC0gZGVsdGFcbiAgICBueiA9IHRoaXMueS5yZWRBZGQodGhpcy56KS5yZWRTcXIoKS5yZWRJU3ViKGdhbW1hKS5yZWRJU3ViKGRlbHRhKTtcbiAgICAvLyBZMyA9IGFscGhhICogKDQgKiBiZXRhIC0gWDMpIC0gOCAqIGdhbW1hXjJcbiAgICB2YXIgZ2dhbW1hOCA9IGdhbW1hLnJlZFNxcigpO1xuICAgIGdnYW1tYTggPSBnZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7XG4gICAgZ2dhbW1hOCA9IGdnYW1tYTgucmVkSUFkZChnZ2FtbWE4KTtcbiAgICBnZ2FtbWE4ID0gZ2dhbW1hOC5yZWRJQWRkKGdnYW1tYTgpO1xuICAgIG55ID0gYWxwaGEucmVkTXVsKGJldGE0LnJlZElTdWIobngpKS5yZWRJU3ViKGdnYW1tYTgpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5fZGJsID0gZnVuY3Rpb24gX2RibCgpIHtcbiAgdmFyIGEgPSB0aGlzLmN1cnZlLmE7XG5cbiAgLy8gNE0gKyA2UyArIDEwQVxuICB2YXIganggPSB0aGlzLng7XG4gIHZhciBqeSA9IHRoaXMueTtcbiAgdmFyIGp6ID0gdGhpcy56O1xuICB2YXIgano0ID0ganoucmVkU3FyKCkucmVkU3FyKCk7XG5cbiAgdmFyIGp4MiA9IGp4LnJlZFNxcigpO1xuICB2YXIgankyID0gankucmVkU3FyKCk7XG5cbiAgdmFyIGMgPSBqeDIucmVkQWRkKGp4MikucmVkSUFkZChqeDIpLnJlZElBZGQoYS5yZWRNdWwoano0KSk7XG5cbiAgdmFyIGp4ZDQgPSBqeC5yZWRBZGQoangpO1xuICBqeGQ0ID0ganhkNC5yZWRJQWRkKGp4ZDQpO1xuICB2YXIgdDEgPSBqeGQ0LnJlZE11bChqeTIpO1xuICB2YXIgbnggPSBjLnJlZFNxcigpLnJlZElTdWIodDEucmVkQWRkKHQxKSk7XG4gIHZhciB0MiA9IHQxLnJlZElTdWIobngpO1xuXG4gIHZhciBqeWQ4ID0gankyLnJlZFNxcigpO1xuICBqeWQ4ID0ganlkOC5yZWRJQWRkKGp5ZDgpO1xuICBqeWQ4ID0ganlkOC5yZWRJQWRkKGp5ZDgpO1xuICBqeWQ4ID0ganlkOC5yZWRJQWRkKGp5ZDgpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0MikucmVkSVN1YihqeWQ4KTtcbiAgdmFyIG56ID0gankucmVkQWRkKGp5KS5yZWRNdWwoanopO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUudHJwbCA9IGZ1bmN0aW9uIHRycGwoKSB7XG4gIGlmICghdGhpcy5jdXJ2ZS56ZXJvQSlcbiAgICByZXR1cm4gdGhpcy5kYmwoKS5hZGQodGhpcyk7XG5cbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0wLmh0bWwjdHJpcGxpbmctdHBsLTIwMDctYmxcbiAgLy8gNU0gKyAxMFMgKyAuLi5cblxuICAvLyBYWCA9IFgxXjJcbiAgdmFyIHh4ID0gdGhpcy54LnJlZFNxcigpO1xuICAvLyBZWSA9IFkxXjJcbiAgdmFyIHl5ID0gdGhpcy55LnJlZFNxcigpO1xuICAvLyBaWiA9IFoxXjJcbiAgdmFyIHp6ID0gdGhpcy56LnJlZFNxcigpO1xuICAvLyBZWVlZID0gWVleMlxuICB2YXIgeXl5eSA9IHl5LnJlZFNxcigpO1xuICAvLyBNID0gMyAqIFhYICsgYSAqIFpaMjsgYSA9IDBcbiAgdmFyIG0gPSB4eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpO1xuICAvLyBNTSA9IE1eMlxuICB2YXIgbW0gPSBtLnJlZFNxcigpO1xuICAvLyBFID0gNiAqICgoWDEgKyBZWSleMiAtIFhYIC0gWVlZWSkgLSBNTVxuICB2YXIgZSA9IHRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7XG4gIGUgPSBlLnJlZElBZGQoZSk7XG4gIGUgPSBlLnJlZEFkZChlKS5yZWRJQWRkKGUpO1xuICBlID0gZS5yZWRJU3ViKG1tKTtcbiAgLy8gRUUgPSBFXjJcbiAgdmFyIGVlID0gZS5yZWRTcXIoKTtcbiAgLy8gVCA9IDE2KllZWVlcbiAgdmFyIHQgPSB5eXl5LnJlZElBZGQoeXl5eSk7XG4gIHQgPSB0LnJlZElBZGQodCk7XG4gIHQgPSB0LnJlZElBZGQodCk7XG4gIHQgPSB0LnJlZElBZGQodCk7XG4gIC8vIFUgPSAoTSArIEUpXjIgLSBNTSAtIEVFIC0gVFxuICB2YXIgdSA9IG0ucmVkSUFkZChlKS5yZWRTcXIoKS5yZWRJU3ViKG1tKS5yZWRJU3ViKGVlKS5yZWRJU3ViKHQpO1xuICAvLyBYMyA9IDQgKiAoWDEgKiBFRSAtIDQgKiBZWSAqIFUpXG4gIHZhciB5eXU0ID0geXkucmVkTXVsKHUpO1xuICB5eXU0ID0geXl1NC5yZWRJQWRkKHl5dTQpO1xuICB5eXU0ID0geXl1NC5yZWRJQWRkKHl5dTQpO1xuICB2YXIgbnggPSB0aGlzLngucmVkTXVsKGVlKS5yZWRJU3ViKHl5dTQpO1xuICBueCA9IG54LnJlZElBZGQobngpO1xuICBueCA9IG54LnJlZElBZGQobngpO1xuICAvLyBZMyA9IDggKiBZMSAqIChVICogKFQgLSBVKSAtIEUgKiBFRSlcbiAgdmFyIG55ID0gdGhpcy55LnJlZE11bCh1LnJlZE11bCh0LnJlZElTdWIodSkpLnJlZElTdWIoZS5yZWRNdWwoZWUpKSk7XG4gIG55ID0gbnkucmVkSUFkZChueSk7XG4gIG55ID0gbnkucmVkSUFkZChueSk7XG4gIG55ID0gbnkucmVkSUFkZChueSk7XG4gIC8vIFozID0gKFoxICsgRSleMiAtIFpaIC0gRUVcbiAgdmFyIG56ID0gdGhpcy56LnJlZEFkZChlKS5yZWRTcXIoKS5yZWRJU3ViKHp6KS5yZWRJU3ViKGVlKTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrLCBrYmFzZSkge1xuICBrID0gbmV3IEJOKGssIGtiYXNlKTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLCBrKTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcShwKSB7XG4gIGlmIChwLnR5cGUgPT09ICdhZmZpbmUnKVxuICAgIHJldHVybiB0aGlzLmVxKHAudG9KKCkpO1xuXG4gIGlmICh0aGlzID09PSBwKVxuICAgIHJldHVybiB0cnVlO1xuXG4gIC8vIHgxICogejJeMiA9PSB4MiAqIHoxXjJcbiAgdmFyIHoyID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgcHoyID0gcC56LnJlZFNxcigpO1xuICBpZiAodGhpcy54LnJlZE11bChwejIpLnJlZElTdWIocC54LnJlZE11bCh6MikpLmNtcG4oMCkgIT09IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIHkxICogejJeMyA9PSB5MiAqIHoxXjNcbiAgdmFyIHozID0gejIucmVkTXVsKHRoaXMueik7XG4gIHZhciBwejMgPSBwejIucmVkTXVsKHAueik7XG4gIHJldHVybiB0aGlzLnkucmVkTXVsKHB6MykucmVkSVN1YihwLnkucmVkTXVsKHozKSkuY21wbigwKSA9PT0gMDtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZXFYVG9QID0gZnVuY3Rpb24gZXFYVG9QKHgpIHtcbiAgdmFyIHpzID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgcnggPSB4LnRvUmVkKHRoaXMuY3VydmUucmVkKS5yZWRNdWwoenMpO1xuICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgdmFyIHhjID0geC5jbG9uZSgpO1xuICB2YXIgdCA9IHRoaXMuY3VydmUucmVkTi5yZWRNdWwoenMpO1xuICBmb3IgKDs7KSB7XG4gICAgeGMuaWFkZCh0aGlzLmN1cnZlLm4pO1xuICAgIGlmICh4Yy5jbXAodGhpcy5jdXJ2ZS5wKSA+PSAwKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgcngucmVkSUFkZCh0KTtcbiAgICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuSlBvaW50LnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiAnPEVDIEpQb2ludCBJbmZpbml0eT4nO1xuICByZXR1cm4gJzxFQyBKUG9pbnQgeDogJyArIHRoaXMueC50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB5OiAnICsgdGhpcy55LnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHo6ICcgKyB0aGlzLnoudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gaXNJbmZpbml0eSgpIHtcbiAgLy8gWFhYIFRoaXMgY29kZSBhc3N1bWVzIHRoYXQgemVybyBpcyBhbHdheXMgemVybyBpbiByZWRcbiAgcmV0dXJuIHRoaXMuei5jbXBuKDApID09PSAwO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlcyA9IGV4cG9ydHM7XG5cbnZhciBoYXNoID0gcmVxdWlyZSgnaGFzaC5qcycpO1xudmFyIGN1cnZlID0gcmVxdWlyZSgnLi9jdXJ2ZScpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBQcmVzZXRDdXJ2ZShvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLnR5cGUgPT09ICdzaG9ydCcpXG4gICAgdGhpcy5jdXJ2ZSA9IG5ldyBjdXJ2ZS5zaG9ydChvcHRpb25zKTtcbiAgZWxzZSBpZiAob3B0aW9ucy50eXBlID09PSAnZWR3YXJkcycpXG4gICAgdGhpcy5jdXJ2ZSA9IG5ldyBjdXJ2ZS5lZHdhcmRzKG9wdGlvbnMpO1xuICBlbHNlXG4gICAgdGhpcy5jdXJ2ZSA9IG5ldyBjdXJ2ZS5tb250KG9wdGlvbnMpO1xuICB0aGlzLmcgPSB0aGlzLmN1cnZlLmc7XG4gIHRoaXMubiA9IHRoaXMuY3VydmUubjtcbiAgdGhpcy5oYXNoID0gb3B0aW9ucy5oYXNoO1xuXG4gIGFzc2VydCh0aGlzLmcudmFsaWRhdGUoKSwgJ0ludmFsaWQgY3VydmUnKTtcbiAgYXNzZXJ0KHRoaXMuZy5tdWwodGhpcy5uKS5pc0luZmluaXR5KCksICdJbnZhbGlkIGN1cnZlLCBHKk4gIT0gTycpO1xufVxuY3VydmVzLlByZXNldEN1cnZlID0gUHJlc2V0Q3VydmU7XG5cbmZ1bmN0aW9uIGRlZmluZUN1cnZlKG5hbWUsIG9wdGlvbnMpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN1cnZlcywgbmFtZSwge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY3VydmUgPSBuZXcgUHJlc2V0Q3VydmUob3B0aW9ucyk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3VydmVzLCBuYW1lLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGN1cnZlLFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gY3VydmU7XG4gICAgfSxcbiAgfSk7XG59XG5cbmRlZmluZUN1cnZlKCdwMTkyJywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogJ3AxOTInLFxuICBwOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnLFxuICBhOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmMnLFxuICBiOiAnNjQyMTA1MTkgZTU5YzgwZTcgMGZhN2U5YWIgNzIyNDMwNDkgZmViOGRlZWMgYzE0NmI5YjEnLFxuICBuOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgOTlkZWY4MzYgMTQ2YmM5YjEgYjRkMjI4MzEnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnMTg4ZGE4MGUgYjAzMDkwZjYgN2NiZjIwZWIgNDNhMTg4MDAgZjRmZjBhZmQgODJmZjEwMTInLFxuICAgICcwNzE5MmI5NSBmZmM4ZGE3OCA2MzEwMTFlZCA2YjI0Y2RkNSA3M2Y5NzdhMSAxZTc5NDgxMScsXG4gIF0sXG59KTtcblxuZGVmaW5lQ3VydmUoJ3AyMjQnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiAncDIyNCcsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScsXG4gIGE6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZScsXG4gIGI6ICdiNDA1MGE4NSAwYzA0YjNhYiBmNTQxMzI1NiA1MDQ0YjBiNyBkN2JmZDhiYSAyNzBiMzk0MyAyMzU1ZmZiNCcsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmMTZhMiBlMGI4ZjAzZSAxM2RkMjk0NSA1YzVjMmEzZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICdiNzBlMGNiZCA2YmI0YmY3ZiAzMjEzOTBiOSA0YTAzYzFkMyA1NmMyMTEyMiAzNDMyODBkNiAxMTVjMWQyMScsXG4gICAgJ2JkMzc2Mzg4IGI1ZjcyM2ZiIDRjMjJkZmU2IGNkNDM3NWEwIDVhMDc0NzY0IDQ0ZDU4MTk5IDg1MDA3ZTM0JyxcbiAgXSxcbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDI1NicsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6IG51bGwsXG4gIHA6ICdmZmZmZmZmZiAwMDAwMDAwMSAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZicsXG4gIGE6ICdmZmZmZmZmZiAwMDAwMDAwMSAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICc1YWM2MzVkOCBhYTNhOTNlNyBiM2ViYmQ1NSA3Njk4ODZiYyA2NTFkMDZiMCBjYzUzYjBmNiAzYmNlM2MzZSAyN2QyNjA0YicsXG4gIG46ICdmZmZmZmZmZiAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBiY2U2ZmFhZCBhNzE3OWU4NCBmM2I5Y2FjMiBmYzYzMjU1MScsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICc2YjE3ZDFmMiBlMTJjNDI0NyBmOGJjZTZlNSA2M2E0NDBmMiA3NzAzN2Q4MSAyZGViMzNhMCBmNGExMzk0NSBkODk4YzI5NicsXG4gICAgJzRmZTM0MmUyIGZlMWE3ZjliIDhlZTdlYjRhIDdjMGY5ZTE2IDJiY2UzMzU3IDZiMzE1ZWNlIGNiYjY0MDY4IDM3YmY1MWY1JyxcbiAgXSxcbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDM4NCcsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6IG51bGwsXG4gIHA6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZmJyxcbiAgYTogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmUgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgZmZmZmZmZmMnLFxuICBiOiAnYjMzMTJmYTcgZTIzZWU3ZTQgOTg4ZTA1NmIgZTNmODJkMTkgMTgxZDljNmUgZmU4MTQxMTIgMDMxNDA4OGYgJyArXG4gICAgICc1MDEzODc1YSBjNjU2Mzk4ZCA4YTJlZDE5ZCAyYTg1YzhlZCBkM2VjMmFlZicsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBjNzYzNGQ4MSAnICtcbiAgICAgJ2Y0MzcyZGRmIDU4MWEwZGIyIDQ4YjBhNzdhIGVjZWMxOTZhIGNjYzUyOTczJyxcbiAgaGFzaDogaGFzaC5zaGEzODQsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJ2FhODdjYTIyIGJlOGIwNTM3IDhlYjFjNzFlIGYzMjBhZDc0IDZlMWQzYjYyIDhiYTc5Yjk4IDU5Zjc0MWUwIDgyNTQyYTM4ICcgK1xuICAgICc1NTAyZjI1ZCBiZjU1Mjk2YyAzYTU0NWUzOCA3Mjc2MGFiNycsXG4gICAgJzM2MTdkZTRhIDk2MjYyYzZmIDVkOWU5OGJmIDkyOTJkYzI5IGY4ZjQxZGJkIDI4OWExNDdjIGU5ZGEzMTEzIGI1ZjBiOGMwICcgK1xuICAgICcwYTYwYjFjZSAxZDdlODE5ZCA3YTQzMWQ3YyA5MGVhMGU1ZicsXG4gIF0sXG59KTtcblxuZGVmaW5lQ3VydmUoJ3A1MjEnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiBudWxsLFxuICBwOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmJyxcbiAgYTogJzAwMDAwMWZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICcwMDAwMDA1MSA5NTNlYjk2MSA4ZTFjOWExZiA5MjlhMjFhMCBiNjg1NDBlZSBhMmRhNzI1YiAnICtcbiAgICAgJzk5YjMxNWYzIGI4YjQ4OTkxIDhlZjEwOWUxIDU2MTkzOTUxIGVjN2U5MzdiIDE2NTJjMGJkICcgK1xuICAgICAnM2JiMWJmMDcgMzU3M2RmODggM2QyYzM0ZjEgZWY0NTFmZDQgNmI1MDNmMDAnLFxuICBuOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYSA1MTg2ODc4MyBiZjJmOTY2YiA3ZmNjMDE0OCAnICtcbiAgICAgJ2Y3MDlhNWQwIDNiYjVjOWI4IDg5OWM0N2FlIGJiNmZiNzFlIDkxMzg2NDA5JyxcbiAgaGFzaDogaGFzaC5zaGE1MTIsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzAwMDAwMGM2IDg1OGUwNmI3IDA0MDRlOWNkIDllM2VjYjY2IDIzOTViNDQyIDljNjQ4MTM5ICcgK1xuICAgICcwNTNmYjUyMSBmODI4YWY2MCA2YjRkM2RiYSBhMTRiNWU3NyBlZmU3NTkyOCBmZTFkYzEyNyAnICtcbiAgICAnYTJmZmE4ZGUgMzM0OGIzYzEgODU2YTQyOWIgZjk3ZTdlMzEgYzJlNWJkNjYnLFxuICAgICcwMDAwMDExOCAzOTI5NmE3OCA5YTNiYzAwNCA1YzhhNWZiNCAyYzdkMWJkOSA5OGY1NDQ0OSAnICtcbiAgICAnNTc5YjQ0NjggMTdhZmJkMTcgMjczZTY2MmMgOTdlZTcyOTkgNWVmNDI2NDAgYzU1MGI5MDEgJyArXG4gICAgJzNmYWQwNzYxIDM1M2M3MDg2IGEyNzJjMjQwIDg4YmU5NDc2IDlmZDE2NjUwJyxcbiAgXSxcbn0pO1xuXG5kZWZpbmVDdXJ2ZSgnY3VydmUyNTUxOScsIHtcbiAgdHlwZTogJ21vbnQnLFxuICBwcmltZTogJ3AyNTUxOScsXG4gIHA6ICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyxcbiAgYTogJzc2ZDA2JyxcbiAgYjogJzEnLFxuICBuOiAnMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICc5JyxcbiAgXSxcbn0pO1xuXG5kZWZpbmVDdXJ2ZSgnZWQyNTUxOScsIHtcbiAgdHlwZTogJ2Vkd2FyZHMnLFxuICBwcmltZTogJ3AyNTUxOScsXG4gIHA6ICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyxcbiAgYTogJy0xJyxcbiAgYzogJzEnLFxuICAvLyAtMTIxNjY1ICogKDEyMTY2Nl4oLTEpKSAobW9kIFApXG4gIGQ6ICc1MjAzNmNlZTJiNmZmZTczIDhjYzc0MDc5Nzc3OWU4OTggMDA3MDBhNGQ0MTQxZDhhYiA3NWViNGRjYTEzNTk3OGEzJyxcbiAgbjogJzEwMDAwMDAwMDAwMDAwMDAgMDAwMDAwMDAwMDAwMDAwMCAxNGRlZjlkZWEyZjc5Y2Q2IDU4MTI2MzFhNWNmNWQzZWQnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnMjE2OTM2ZDNjZDZlNTNmZWMwYTRlMjMxZmRkNmRjNWM2OTJjYzc2MDk1MjVhN2IyYzk1NjJkNjA4ZjI1ZDUxYScsXG5cbiAgICAvLyA0LzVcbiAgICAnNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY1OCcsXG4gIF0sXG59KTtcblxudmFyIHByZTtcbnRyeSB7XG4gIHByZSA9IHJlcXVpcmUoJy4vcHJlY29tcHV0ZWQvc2VjcDI1NmsxJyk7XG59IGNhdGNoIChlKSB7XG4gIHByZSA9IHVuZGVmaW5lZDtcbn1cblxuZGVmaW5lQ3VydmUoJ3NlY3AyNTZrMScsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6ICdrMjU2JyxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyxcbiAgYTogJzAnLFxuICBiOiAnNycsXG4gIG46ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBiYWFlZGNlNiBhZjQ4YTAzYiBiZmQyNWU4YyBkMDM2NDE0MScsXG4gIGg6ICcxJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG5cbiAgLy8gUHJlY29tcHV0ZWQgZW5kb21vcnBoaXNtXG4gIGJldGE6ICc3YWU5NmEyYjY1N2MwNzEwNmU2NDQ3OWVhYzM0MzRlOTljZjA0OTc1MTJmNTg5OTVjMTM5NmMyODcxOTUwMWVlJyxcbiAgbGFtYmRhOiAnNTM2M2FkNGNjMDVjMzBlMGE1MjYxYzAyODgxMjY0NWExMjJlMjJlYTIwODE2Njc4ZGYwMjk2N2MxYjIzYmQ3MicsXG4gIGJhc2lzOiBbXG4gICAge1xuICAgICAgYTogJzMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1JyxcbiAgICAgIGI6ICctZTQ0MzdlZDYwMTBlODgyODZmNTQ3ZmE5MGFiZmU0YzMnLFxuICAgIH0sXG4gICAge1xuICAgICAgYTogJzExNGNhNTBmN2E4ZTJmM2Y2NTdjMTEwOGQ5ZDQ0Y2ZkOCcsXG4gICAgICBiOiAnMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUnLFxuICAgIH0sXG4gIF0sXG5cbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnNzliZTY2N2VmOWRjYmJhYzU1YTA2Mjk1Y2U4NzBiMDcwMjliZmNkYjJkY2UyOGQ5NTlmMjgxNWIxNmY4MTc5OCcsXG4gICAgJzQ4M2FkYTc3MjZhM2M0NjU1ZGE0ZmJmYzBlMTEwOGE4ZmQxN2I0NDhhNjg1NTQxOTljNDdkMDhmZmIxMGQ0YjgnLFxuICAgIHByZSxcbiAgXSxcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIEhtYWNEUkJHID0gcmVxdWlyZSgnaG1hYy1kcmJnJyk7XG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGN1cnZlcyA9IHJlcXVpcmUoJy4uL2N1cnZlcycpO1xudmFyIHJhbmQgPSByZXF1aXJlKCdicm9yYW5kJyk7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG52YXIgS2V5UGFpciA9IHJlcXVpcmUoJy4va2V5Jyk7XG52YXIgU2lnbmF0dXJlID0gcmVxdWlyZSgnLi9zaWduYXR1cmUnKTtcblxuZnVuY3Rpb24gRUMob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRUMpKVxuICAgIHJldHVybiBuZXcgRUMob3B0aW9ucyk7XG5cbiAgLy8gU2hvcnRjdXQgYGVsbGlwdGljLmVjKGN1cnZlLW5hbWUpYFxuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgYXNzZXJ0KE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjdXJ2ZXMsIG9wdGlvbnMpLFxuICAgICAgJ1Vua25vd24gY3VydmUgJyArIG9wdGlvbnMpO1xuXG4gICAgb3B0aW9ucyA9IGN1cnZlc1tvcHRpb25zXTtcbiAgfVxuXG4gIC8vIFNob3J0Y3V0IGZvciBgZWxsaXB0aWMuZWMoZWxsaXB0aWMuY3VydmVzLmN1cnZlTmFtZSlgXG4gIGlmIChvcHRpb25zIGluc3RhbmNlb2YgY3VydmVzLlByZXNldEN1cnZlKVxuICAgIG9wdGlvbnMgPSB7IGN1cnZlOiBvcHRpb25zIH07XG5cbiAgdGhpcy5jdXJ2ZSA9IG9wdGlvbnMuY3VydmUuY3VydmU7XG4gIHRoaXMubiA9IHRoaXMuY3VydmUubjtcbiAgdGhpcy5uaCA9IHRoaXMubi51c2hybigxKTtcbiAgdGhpcy5nID0gdGhpcy5jdXJ2ZS5nO1xuXG4gIC8vIFBvaW50IG9uIGN1cnZlXG4gIHRoaXMuZyA9IG9wdGlvbnMuY3VydmUuZztcbiAgdGhpcy5nLnByZWNvbXB1dGUob3B0aW9ucy5jdXJ2ZS5uLmJpdExlbmd0aCgpICsgMSk7XG5cbiAgLy8gSGFzaCBmb3IgZnVuY3Rpb24gZm9yIERSQkdcbiAgdGhpcy5oYXNoID0gb3B0aW9ucy5oYXNoIHx8IG9wdGlvbnMuY3VydmUuaGFzaDtcbn1cbm1vZHVsZS5leHBvcnRzID0gRUM7XG5cbkVDLnByb3RvdHlwZS5rZXlQYWlyID0gZnVuY3Rpb24ga2V5UGFpcihvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgS2V5UGFpcih0aGlzLCBvcHRpb25zKTtcbn07XG5cbkVDLnByb3RvdHlwZS5rZXlGcm9tUHJpdmF0ZSA9IGZ1bmN0aW9uIGtleUZyb21Qcml2YXRlKHByaXYsIGVuYykge1xuICByZXR1cm4gS2V5UGFpci5mcm9tUHJpdmF0ZSh0aGlzLCBwcml2LCBlbmMpO1xufTtcblxuRUMucHJvdG90eXBlLmtleUZyb21QdWJsaWMgPSBmdW5jdGlvbiBrZXlGcm9tUHVibGljKHB1YiwgZW5jKSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21QdWJsaWModGhpcywgcHViLCBlbmMpO1xufTtcblxuRUMucHJvdG90eXBlLmdlbktleVBhaXIgPSBmdW5jdGlvbiBnZW5LZXlQYWlyKG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKVxuICAgIG9wdGlvbnMgPSB7fTtcblxuICAvLyBJbnN0YW50aWF0ZSBIbWFjX0RSQkdcbiAgdmFyIGRyYmcgPSBuZXcgSG1hY0RSQkcoe1xuICAgIGhhc2g6IHRoaXMuaGFzaCxcbiAgICBwZXJzOiBvcHRpb25zLnBlcnMsXG4gICAgcGVyc0VuYzogb3B0aW9ucy5wZXJzRW5jIHx8ICd1dGY4JyxcbiAgICBlbnRyb3B5OiBvcHRpb25zLmVudHJvcHkgfHwgcmFuZCh0aGlzLmhhc2guaG1hY1N0cmVuZ3RoKSxcbiAgICBlbnRyb3B5RW5jOiBvcHRpb25zLmVudHJvcHkgJiYgb3B0aW9ucy5lbnRyb3B5RW5jIHx8ICd1dGY4JyxcbiAgICBub25jZTogdGhpcy5uLnRvQXJyYXkoKSxcbiAgfSk7XG5cbiAgdmFyIGJ5dGVzID0gdGhpcy5uLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG5zMiA9IHRoaXMubi5zdWIobmV3IEJOKDIpKTtcbiAgZm9yICg7Oykge1xuICAgIHZhciBwcml2ID0gbmV3IEJOKGRyYmcuZ2VuZXJhdGUoYnl0ZXMpKTtcbiAgICBpZiAocHJpdi5jbXAobnMyKSA+IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHByaXYuaWFkZG4oMSk7XG4gICAgcmV0dXJuIHRoaXMua2V5RnJvbVByaXZhdGUocHJpdik7XG4gIH1cbn07XG5cbkVDLnByb3RvdHlwZS5fdHJ1bmNhdGVUb04gPSBmdW5jdGlvbiBfdHJ1bmNhdGVUb04obXNnLCB0cnVuY09ubHkpIHtcbiAgdmFyIGRlbHRhID0gbXNnLmJ5dGVMZW5ndGgoKSAqIDggLSB0aGlzLm4uYml0TGVuZ3RoKCk7XG4gIGlmIChkZWx0YSA+IDApXG4gICAgbXNnID0gbXNnLnVzaHJuKGRlbHRhKTtcbiAgaWYgKCF0cnVuY09ubHkgJiYgbXNnLmNtcCh0aGlzLm4pID49IDApXG4gICAgcmV0dXJuIG1zZy5zdWIodGhpcy5uKTtcbiAgZWxzZVxuICAgIHJldHVybiBtc2c7XG59O1xuXG5FQy5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obXNnLCBrZXksIGVuYywgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIGVuYyA9PT0gJ29iamVjdCcpIHtcbiAgICBvcHRpb25zID0gZW5jO1xuICAgIGVuYyA9IG51bGw7XG4gIH1cbiAgaWYgKCFvcHRpb25zKVxuICAgIG9wdGlvbnMgPSB7fTtcblxuICBrZXkgPSB0aGlzLmtleUZyb21Qcml2YXRlKGtleSwgZW5jKTtcbiAgbXNnID0gdGhpcy5fdHJ1bmNhdGVUb04obmV3IEJOKG1zZywgMTYpKTtcblxuICAvLyBaZXJvLWV4dGVuZCBrZXkgdG8gcHJvdmlkZSBlbm91Z2ggZW50cm9weVxuICB2YXIgYnl0ZXMgPSB0aGlzLm4uYnl0ZUxlbmd0aCgpO1xuICB2YXIgYmtleSA9IGtleS5nZXRQcml2YXRlKCkudG9BcnJheSgnYmUnLCBieXRlcyk7XG5cbiAgLy8gWmVyby1leHRlbmQgbm9uY2UgdG8gaGF2ZSB0aGUgc2FtZSBieXRlIHNpemUgYXMgTlxuICB2YXIgbm9uY2UgPSBtc2cudG9BcnJheSgnYmUnLCBieXRlcyk7XG5cbiAgLy8gSW5zdGFudGlhdGUgSG1hY19EUkJHXG4gIHZhciBkcmJnID0gbmV3IEhtYWNEUkJHKHtcbiAgICBoYXNoOiB0aGlzLmhhc2gsXG4gICAgZW50cm9weTogYmtleSxcbiAgICBub25jZTogbm9uY2UsXG4gICAgcGVyczogb3B0aW9ucy5wZXJzLFxuICAgIHBlcnNFbmM6IG9wdGlvbnMucGVyc0VuYyB8fCAndXRmOCcsXG4gIH0pO1xuXG4gIC8vIE51bWJlciBvZiBieXRlcyB0byBnZW5lcmF0ZVxuICB2YXIgbnMxID0gdGhpcy5uLnN1YihuZXcgQk4oMSkpO1xuXG4gIGZvciAodmFyIGl0ZXIgPSAwOyA7IGl0ZXIrKykge1xuICAgIHZhciBrID0gb3B0aW9ucy5rID9cbiAgICAgIG9wdGlvbnMuayhpdGVyKSA6XG4gICAgICBuZXcgQk4oZHJiZy5nZW5lcmF0ZSh0aGlzLm4uYnl0ZUxlbmd0aCgpKSk7XG4gICAgayA9IHRoaXMuX3RydW5jYXRlVG9OKGssIHRydWUpO1xuICAgIGlmIChrLmNtcG4oMSkgPD0gMCB8fCBrLmNtcChuczEpID49IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHZhciBrcCA9IHRoaXMuZy5tdWwoayk7XG4gICAgaWYgKGtwLmlzSW5maW5pdHkoKSlcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIGtwWCA9IGtwLmdldFgoKTtcbiAgICB2YXIgciA9IGtwWC51bW9kKHRoaXMubik7XG4gICAgaWYgKHIuY21wbigwKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIHMgPSBrLmludm0odGhpcy5uKS5tdWwoci5tdWwoa2V5LmdldFByaXZhdGUoKSkuaWFkZChtc2cpKTtcbiAgICBzID0gcy51bW9kKHRoaXMubik7XG4gICAgaWYgKHMuY21wbigwKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgdmFyIHJlY292ZXJ5UGFyYW0gPSAoa3AuZ2V0WSgpLmlzT2RkKCkgPyAxIDogMCkgfFxuICAgICAgICAgICAgICAgICAgICAgICAgKGtwWC5jbXAocikgIT09IDAgPyAyIDogMCk7XG5cbiAgICAvLyBVc2UgY29tcGxlbWVudCBvZiBgc2AsIGlmIGl0IGlzID4gYG4gLyAyYFxuICAgIGlmIChvcHRpb25zLmNhbm9uaWNhbCAmJiBzLmNtcCh0aGlzLm5oKSA+IDApIHtcbiAgICAgIHMgPSB0aGlzLm4uc3ViKHMpO1xuICAgICAgcmVjb3ZlcnlQYXJhbSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgU2lnbmF0dXJlKHsgcjogciwgczogcywgcmVjb3ZlcnlQYXJhbTogcmVjb3ZlcnlQYXJhbSB9KTtcbiAgfVxufTtcblxuRUMucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeShtc2csIHNpZ25hdHVyZSwga2V5LCBlbmMpIHtcbiAgbXNnID0gdGhpcy5fdHJ1bmNhdGVUb04obmV3IEJOKG1zZywgMTYpKTtcbiAga2V5ID0gdGhpcy5rZXlGcm9tUHVibGljKGtleSwgZW5jKTtcbiAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShzaWduYXR1cmUsICdoZXgnKTtcblxuICAvLyBQZXJmb3JtIHByaW1pdGl2ZSB2YWx1ZXMgdmFsaWRhdGlvblxuICB2YXIgciA9IHNpZ25hdHVyZS5yO1xuICB2YXIgcyA9IHNpZ25hdHVyZS5zO1xuICBpZiAoci5jbXBuKDEpIDwgMCB8fCByLmNtcCh0aGlzLm4pID49IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAocy5jbXBuKDEpIDwgMCB8fCBzLmNtcCh0aGlzLm4pID49IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIFZhbGlkYXRlIHNpZ25hdHVyZVxuICB2YXIgc2ludiA9IHMuaW52bSh0aGlzLm4pO1xuICB2YXIgdTEgPSBzaW52Lm11bChtc2cpLnVtb2QodGhpcy5uKTtcbiAgdmFyIHUyID0gc2ludi5tdWwocikudW1vZCh0aGlzLm4pO1xuICB2YXIgcDtcblxuICBpZiAoIXRoaXMuY3VydmUuX21heHdlbGxUcmljaykge1xuICAgIHAgPSB0aGlzLmcubXVsQWRkKHUxLCBrZXkuZ2V0UHVibGljKCksIHUyKTtcbiAgICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gcC5nZXRYKCkudW1vZCh0aGlzLm4pLmNtcChyKSA9PT0gMDtcbiAgfVxuXG4gIC8vIE5PVEU6IEdyZWcgTWF4d2VsbCdzIHRyaWNrLCBpbnNwaXJlZCBieTpcbiAgLy8gaHR0cHM6Ly9naXQuaW8vdmFkM0tcblxuICBwID0gdGhpcy5nLmptdWxBZGQodTEsIGtleS5nZXRQdWJsaWMoKSwgdTIpO1xuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIENvbXBhcmUgYHAueGAgb2YgSmFjb2JpYW4gcG9pbnQgd2l0aCBgcmAsXG4gIC8vIHRoaXMgd2lsbCBkbyBgcC54ID09IHIgKiBwLnpeMmAgaW5zdGVhZCBvZiBtdWx0aXBseWluZyBgcC54YCBieSB0aGVcbiAgLy8gaW52ZXJzZSBvZiBgcC56XjJgXG4gIHJldHVybiBwLmVxWFRvUChyKTtcbn07XG5cbkVDLnByb3RvdHlwZS5yZWNvdmVyUHViS2V5ID0gZnVuY3Rpb24obXNnLCBzaWduYXR1cmUsIGosIGVuYykge1xuICBhc3NlcnQoKDMgJiBqKSA9PT0gaiwgJ1RoZSByZWNvdmVyeSBwYXJhbSBpcyBtb3JlIHRoYW4gdHdvIGJpdHMnKTtcbiAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShzaWduYXR1cmUsIGVuYyk7XG5cbiAgdmFyIG4gPSB0aGlzLm47XG4gIHZhciBlID0gbmV3IEJOKG1zZyk7XG4gIHZhciByID0gc2lnbmF0dXJlLnI7XG4gIHZhciBzID0gc2lnbmF0dXJlLnM7XG5cbiAgLy8gQSBzZXQgTFNCIHNpZ25pZmllcyB0aGF0IHRoZSB5LWNvb3JkaW5hdGUgaXMgb2RkXG4gIHZhciBpc1lPZGQgPSBqICYgMTtcbiAgdmFyIGlzU2Vjb25kS2V5ID0gaiA+PiAxO1xuICBpZiAoci5jbXAodGhpcy5jdXJ2ZS5wLnVtb2QodGhpcy5jdXJ2ZS5uKSkgPj0gMCAmJiBpc1NlY29uZEtleSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBmaW5kIHNlbmNvbmQga2V5IGNhbmRpbmF0ZScpO1xuXG4gIC8vIDEuMS4gTGV0IHggPSByICsgam4uXG4gIGlmIChpc1NlY29uZEtleSlcbiAgICByID0gdGhpcy5jdXJ2ZS5wb2ludEZyb21YKHIuYWRkKHRoaXMuY3VydmUubiksIGlzWU9kZCk7XG4gIGVsc2VcbiAgICByID0gdGhpcy5jdXJ2ZS5wb2ludEZyb21YKHIsIGlzWU9kZCk7XG5cbiAgdmFyIHJJbnYgPSBzaWduYXR1cmUuci5pbnZtKG4pO1xuICB2YXIgczEgPSBuLnN1YihlKS5tdWwockludikudW1vZChuKTtcbiAgdmFyIHMyID0gcy5tdWwockludikudW1vZChuKTtcblxuICAvLyAxLjYuMSBDb21wdXRlIFEgPSByXi0xIChzUiAtICBlRylcbiAgLy8gICAgICAgICAgICAgICBRID0gcl4tMSAoc1IgKyAtZUcpXG4gIHJldHVybiB0aGlzLmcubXVsQWRkKHMxLCByLCBzMik7XG59O1xuXG5FQy5wcm90b3R5cGUuZ2V0S2V5UmVjb3ZlcnlQYXJhbSA9IGZ1bmN0aW9uKGUsIHNpZ25hdHVyZSwgUSwgZW5jKSB7XG4gIHNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoc2lnbmF0dXJlLCBlbmMpO1xuICBpZiAoc2lnbmF0dXJlLnJlY292ZXJ5UGFyYW0gIT09IG51bGwpXG4gICAgcmV0dXJuIHNpZ25hdHVyZS5yZWNvdmVyeVBhcmFtO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIFFwcmltZTtcbiAgICB0cnkge1xuICAgICAgUXByaW1lID0gdGhpcy5yZWNvdmVyUHViS2V5KGUsIHNpZ25hdHVyZSwgaSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKFFwcmltZS5lcShRKSlcbiAgICAgIHJldHVybiBpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgdmFsaWQgcmVjb3ZlcnkgZmFjdG9yJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEtleVBhaXIoZWMsIG9wdGlvbnMpIHtcbiAgdGhpcy5lYyA9IGVjO1xuICB0aGlzLnByaXYgPSBudWxsO1xuICB0aGlzLnB1YiA9IG51bGw7XG5cbiAgLy8gS2V5UGFpcihlYywgeyBwcml2OiAuLi4sIHB1YjogLi4uIH0pXG4gIGlmIChvcHRpb25zLnByaXYpXG4gICAgdGhpcy5faW1wb3J0UHJpdmF0ZShvcHRpb25zLnByaXYsIG9wdGlvbnMucHJpdkVuYyk7XG4gIGlmIChvcHRpb25zLnB1YilcbiAgICB0aGlzLl9pbXBvcnRQdWJsaWMob3B0aW9ucy5wdWIsIG9wdGlvbnMucHViRW5jKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gS2V5UGFpcjtcblxuS2V5UGFpci5mcm9tUHVibGljID0gZnVuY3Rpb24gZnJvbVB1YmxpYyhlYywgcHViLCBlbmMpIHtcbiAgaWYgKHB1YiBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHB1YjtcblxuICByZXR1cm4gbmV3IEtleVBhaXIoZWMsIHtcbiAgICBwdWI6IHB1YixcbiAgICBwdWJFbmM6IGVuYyxcbiAgfSk7XG59O1xuXG5LZXlQYWlyLmZyb21Qcml2YXRlID0gZnVuY3Rpb24gZnJvbVByaXZhdGUoZWMsIHByaXYsIGVuYykge1xuICBpZiAocHJpdiBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHByaXY7XG5cbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVjLCB7XG4gICAgcHJpdjogcHJpdixcbiAgICBwcml2RW5jOiBlbmMsXG4gIH0pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcbiAgdmFyIHB1YiA9IHRoaXMuZ2V0UHVibGljKCk7XG5cbiAgaWYgKHB1Yi5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHsgcmVzdWx0OiBmYWxzZSwgcmVhc29uOiAnSW52YWxpZCBwdWJsaWMga2V5JyB9O1xuICBpZiAoIXB1Yi52YWxpZGF0ZSgpKVxuICAgIHJldHVybiB7IHJlc3VsdDogZmFsc2UsIHJlYXNvbjogJ1B1YmxpYyBrZXkgaXMgbm90IGEgcG9pbnQnIH07XG4gIGlmICghcHViLm11bCh0aGlzLmVjLmN1cnZlLm4pLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4geyByZXN1bHQ6IGZhbHNlLCByZWFzb246ICdQdWJsaWMga2V5ICogTiAhPSBPJyB9O1xuXG4gIHJldHVybiB7IHJlc3VsdDogdHJ1ZSwgcmVhc29uOiBudWxsIH07XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRQdWJsaWMgPSBmdW5jdGlvbiBnZXRQdWJsaWMoY29tcGFjdCwgZW5jKSB7XG4gIC8vIGNvbXBhY3QgaXMgb3B0aW9uYWwgYXJndW1lbnRcbiAgaWYgKHR5cGVvZiBjb21wYWN0ID09PSAnc3RyaW5nJykge1xuICAgIGVuYyA9IGNvbXBhY3Q7XG4gICAgY29tcGFjdCA9IG51bGw7XG4gIH1cblxuICBpZiAoIXRoaXMucHViKVxuICAgIHRoaXMucHViID0gdGhpcy5lYy5nLm11bCh0aGlzLnByaXYpO1xuXG4gIGlmICghZW5jKVxuICAgIHJldHVybiB0aGlzLnB1YjtcblxuICByZXR1cm4gdGhpcy5wdWIuZW5jb2RlKGVuYywgY29tcGFjdCk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRQcml2YXRlID0gZnVuY3Rpb24gZ2V0UHJpdmF0ZShlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHRoaXMucHJpdi50b1N0cmluZygxNiwgMik7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5wcml2O1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuX2ltcG9ydFByaXZhdGUgPSBmdW5jdGlvbiBfaW1wb3J0UHJpdmF0ZShrZXksIGVuYykge1xuICB0aGlzLnByaXYgPSBuZXcgQk4oa2V5LCBlbmMgfHwgMTYpO1xuXG4gIC8vIEVuc3VyZSB0aGF0IHRoZSBwcml2IHdvbid0IGJlIGJpZ2dlciB0aGFuIG4sIG90aGVyd2lzZSB3ZSBtYXkgZmFpbFxuICAvLyBpbiBmaXhlZCBtdWx0aXBsaWNhdGlvbiBtZXRob2RcbiAgdGhpcy5wcml2ID0gdGhpcy5wcml2LnVtb2QodGhpcy5lYy5jdXJ2ZS5uKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLl9pbXBvcnRQdWJsaWMgPSBmdW5jdGlvbiBfaW1wb3J0UHVibGljKGtleSwgZW5jKSB7XG4gIGlmIChrZXkueCB8fCBrZXkueSkge1xuICAgIC8vIE1vbnRnb21lcnkgcG9pbnRzIG9ubHkgaGF2ZSBhbiBgeGAgY29vcmRpbmF0ZS5cbiAgICAvLyBXZWllcnN0cmFzcy9FZHdhcmRzIHBvaW50cyBvbiB0aGUgb3RoZXIgaGFuZCBoYXZlIGJvdGggYHhgIGFuZFxuICAgIC8vIGB5YCBjb29yZGluYXRlcy5cbiAgICBpZiAodGhpcy5lYy5jdXJ2ZS50eXBlID09PSAnbW9udCcpIHtcbiAgICAgIGFzc2VydChrZXkueCwgJ05lZWQgeCBjb29yZGluYXRlJyk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmVjLmN1cnZlLnR5cGUgPT09ICdzaG9ydCcgfHxcbiAgICAgICAgICAgICAgIHRoaXMuZWMuY3VydmUudHlwZSA9PT0gJ2Vkd2FyZHMnKSB7XG4gICAgICBhc3NlcnQoa2V5LnggJiYga2V5LnksICdOZWVkIGJvdGggeCBhbmQgeSBjb29yZGluYXRlJyk7XG4gICAgfVxuICAgIHRoaXMucHViID0gdGhpcy5lYy5jdXJ2ZS5wb2ludChrZXkueCwga2V5LnkpO1xuICAgIHJldHVybjtcbiAgfVxuICB0aGlzLnB1YiA9IHRoaXMuZWMuY3VydmUuZGVjb2RlUG9pbnQoa2V5LCBlbmMpO1xufTtcblxuLy8gRUNESFxuS2V5UGFpci5wcm90b3R5cGUuZGVyaXZlID0gZnVuY3Rpb24gZGVyaXZlKHB1Yikge1xuICBpZighcHViLnZhbGlkYXRlKCkpIHtcbiAgICBhc3NlcnQocHViLnZhbGlkYXRlKCksICdwdWJsaWMgcG9pbnQgbm90IHZhbGlkYXRlZCcpO1xuICB9XG4gIHJldHVybiBwdWIubXVsKHRoaXMucHJpdikuZ2V0WCgpO1xufTtcblxuLy8gRUNEU0FcbktleVBhaXIucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1zZywgZW5jLCBvcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLmVjLnNpZ24obXNnLCB0aGlzLCBlbmMsIG9wdGlvbnMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1zZywgc2lnbmF0dXJlKSB7XG4gIHJldHVybiB0aGlzLmVjLnZlcmlmeShtc2csIHNpZ25hdHVyZSwgdGhpcyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgcmV0dXJuICc8S2V5IHByaXY6ICcgKyAodGhpcy5wcml2ICYmIHRoaXMucHJpdi50b1N0cmluZygxNiwgMikpICtcbiAgICAgICAgICcgcHViOiAnICsgKHRoaXMucHViICYmIHRoaXMucHViLmluc3BlY3QoKSkgKyAnID4nO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIFNpZ25hdHVyZShvcHRpb25zLCBlbmMpIHtcbiAgaWYgKG9wdGlvbnMgaW5zdGFuY2VvZiBTaWduYXR1cmUpXG4gICAgcmV0dXJuIG9wdGlvbnM7XG5cbiAgaWYgKHRoaXMuX2ltcG9ydERFUihvcHRpb25zLCBlbmMpKVxuICAgIHJldHVybjtcblxuICBhc3NlcnQob3B0aW9ucy5yICYmIG9wdGlvbnMucywgJ1NpZ25hdHVyZSB3aXRob3V0IHIgb3IgcycpO1xuICB0aGlzLnIgPSBuZXcgQk4ob3B0aW9ucy5yLCAxNik7XG4gIHRoaXMucyA9IG5ldyBCTihvcHRpb25zLnMsIDE2KTtcbiAgaWYgKG9wdGlvbnMucmVjb3ZlcnlQYXJhbSA9PT0gdW5kZWZpbmVkKVxuICAgIHRoaXMucmVjb3ZlcnlQYXJhbSA9IG51bGw7XG4gIGVsc2VcbiAgICB0aGlzLnJlY292ZXJ5UGFyYW0gPSBvcHRpb25zLnJlY292ZXJ5UGFyYW07XG59XG5tb2R1bGUuZXhwb3J0cyA9IFNpZ25hdHVyZTtcblxuZnVuY3Rpb24gUG9zaXRpb24oKSB7XG4gIHRoaXMucGxhY2UgPSAwO1xufVxuXG5mdW5jdGlvbiBnZXRMZW5ndGgoYnVmLCBwKSB7XG4gIHZhciBpbml0aWFsID0gYnVmW3AucGxhY2UrK107XG4gIGlmICghKGluaXRpYWwgJiAweDgwKSkge1xuICAgIHJldHVybiBpbml0aWFsO1xuICB9XG4gIHZhciBvY3RldExlbiA9IGluaXRpYWwgJiAweGY7XG5cbiAgLy8gSW5kZWZpbml0ZSBsZW5ndGggb3Igb3ZlcmZsb3dcbiAgaWYgKG9jdGV0TGVuID09PSAwIHx8IG9jdGV0TGVuID4gNCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciB2YWwgPSAwO1xuICBmb3IgKHZhciBpID0gMCwgb2ZmID0gcC5wbGFjZTsgaSA8IG9jdGV0TGVuOyBpKyssIG9mZisrKSB7XG4gICAgdmFsIDw8PSA4O1xuICAgIHZhbCB8PSBidWZbb2ZmXTtcbiAgICB2YWwgPj4+PSAwO1xuICB9XG5cbiAgLy8gTGVhZGluZyB6ZXJvZXNcbiAgaWYgKHZhbCA8PSAweDdmKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcC5wbGFjZSA9IG9mZjtcbiAgcmV0dXJuIHZhbDtcbn1cblxuZnVuY3Rpb24gcm1QYWRkaW5nKGJ1Zikge1xuICB2YXIgaSA9IDA7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoIC0gMTtcbiAgd2hpbGUgKCFidWZbaV0gJiYgIShidWZbaSArIDFdICYgMHg4MCkgJiYgaSA8IGxlbikge1xuICAgIGkrKztcbiAgfVxuICBpZiAoaSA9PT0gMCkge1xuICAgIHJldHVybiBidWY7XG4gIH1cbiAgcmV0dXJuIGJ1Zi5zbGljZShpKTtcbn1cblxuU2lnbmF0dXJlLnByb3RvdHlwZS5faW1wb3J0REVSID0gZnVuY3Rpb24gX2ltcG9ydERFUihkYXRhLCBlbmMpIHtcbiAgZGF0YSA9IHV0aWxzLnRvQXJyYXkoZGF0YSwgZW5jKTtcbiAgdmFyIHAgPSBuZXcgUG9zaXRpb24oKTtcbiAgaWYgKGRhdGFbcC5wbGFjZSsrXSAhPT0gMHgzMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGVuID0gZ2V0TGVuZ3RoKGRhdGEsIHApO1xuICBpZiAobGVuID09PSBmYWxzZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoKGxlbiArIHAucGxhY2UpICE9PSBkYXRhLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoZGF0YVtwLnBsYWNlKytdICE9PSAweDAyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBybGVuID0gZ2V0TGVuZ3RoKGRhdGEsIHApO1xuICBpZiAocmxlbiA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHIgPSBkYXRhLnNsaWNlKHAucGxhY2UsIHJsZW4gKyBwLnBsYWNlKTtcbiAgcC5wbGFjZSArPSBybGVuO1xuICBpZiAoZGF0YVtwLnBsYWNlKytdICE9PSAweDAyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBzbGVuID0gZ2V0TGVuZ3RoKGRhdGEsIHApO1xuICBpZiAoc2xlbiA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGRhdGEubGVuZ3RoICE9PSBzbGVuICsgcC5wbGFjZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcyA9IGRhdGEuc2xpY2UocC5wbGFjZSwgc2xlbiArIHAucGxhY2UpO1xuICBpZiAoclswXSA9PT0gMCkge1xuICAgIGlmIChyWzFdICYgMHg4MCkge1xuICAgICAgciA9IHIuc2xpY2UoMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExlYWRpbmcgemVyb2VzXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGlmIChzWzBdID09PSAwKSB7XG4gICAgaWYgKHNbMV0gJiAweDgwKSB7XG4gICAgICBzID0gcy5zbGljZSgxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGVhZGluZyB6ZXJvZXNcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICB0aGlzLnIgPSBuZXcgQk4ocik7XG4gIHRoaXMucyA9IG5ldyBCTihzKTtcbiAgdGhpcy5yZWNvdmVyeVBhcmFtID0gbnVsbDtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdExlbmd0aChhcnIsIGxlbikge1xuICBpZiAobGVuIDwgMHg4MCkge1xuICAgIGFyci5wdXNoKGxlbik7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBvY3RldHMgPSAxICsgKE1hdGgubG9nKGxlbikgLyBNYXRoLkxOMiA+Pj4gMyk7XG4gIGFyci5wdXNoKG9jdGV0cyB8IDB4ODApO1xuICB3aGlsZSAoLS1vY3RldHMpIHtcbiAgICBhcnIucHVzaCgobGVuID4+PiAob2N0ZXRzIDw8IDMpKSAmIDB4ZmYpO1xuICB9XG4gIGFyci5wdXNoKGxlbik7XG59XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9ERVIgPSBmdW5jdGlvbiB0b0RFUihlbmMpIHtcbiAgdmFyIHIgPSB0aGlzLnIudG9BcnJheSgpO1xuICB2YXIgcyA9IHRoaXMucy50b0FycmF5KCk7XG5cbiAgLy8gUGFkIHZhbHVlc1xuICBpZiAoclswXSAmIDB4ODApXG4gICAgciA9IFsgMCBdLmNvbmNhdChyKTtcbiAgLy8gUGFkIHZhbHVlc1xuICBpZiAoc1swXSAmIDB4ODApXG4gICAgcyA9IFsgMCBdLmNvbmNhdChzKTtcblxuICByID0gcm1QYWRkaW5nKHIpO1xuICBzID0gcm1QYWRkaW5nKHMpO1xuXG4gIHdoaWxlICghc1swXSAmJiAhKHNbMV0gJiAweDgwKSkge1xuICAgIHMgPSBzLnNsaWNlKDEpO1xuICB9XG4gIHZhciBhcnIgPSBbIDB4MDIgXTtcbiAgY29uc3RydWN0TGVuZ3RoKGFyciwgci5sZW5ndGgpO1xuICBhcnIgPSBhcnIuY29uY2F0KHIpO1xuICBhcnIucHVzaCgweDAyKTtcbiAgY29uc3RydWN0TGVuZ3RoKGFyciwgcy5sZW5ndGgpO1xuICB2YXIgYmFja0hhbGYgPSBhcnIuY29uY2F0KHMpO1xuICB2YXIgcmVzID0gWyAweDMwIF07XG4gIGNvbnN0cnVjdExlbmd0aChyZXMsIGJhY2tIYWxmLmxlbmd0aCk7XG4gIHJlcyA9IHJlcy5jb25jYXQoYmFja0hhbGYpO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHJlcywgZW5jKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBoYXNoID0gcmVxdWlyZSgnaGFzaC5qcycpO1xudmFyIGN1cnZlcyA9IHJlcXVpcmUoJy4uL2N1cnZlcycpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG52YXIgS2V5UGFpciA9IHJlcXVpcmUoJy4va2V5Jyk7XG52YXIgU2lnbmF0dXJlID0gcmVxdWlyZSgnLi9zaWduYXR1cmUnKTtcblxuZnVuY3Rpb24gRUREU0EoY3VydmUpIHtcbiAgYXNzZXJ0KGN1cnZlID09PSAnZWQyNTUxOScsICdvbmx5IHRlc3RlZCB3aXRoIGVkMjU1MTkgc28gZmFyJyk7XG5cbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEVERFNBKSlcbiAgICByZXR1cm4gbmV3IEVERFNBKGN1cnZlKTtcblxuICBjdXJ2ZSA9IGN1cnZlc1tjdXJ2ZV0uY3VydmU7XG4gIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgdGhpcy5nID0gY3VydmUuZztcbiAgdGhpcy5nLnByZWNvbXB1dGUoY3VydmUubi5iaXRMZW5ndGgoKSArIDEpO1xuXG4gIHRoaXMucG9pbnRDbGFzcyA9IGN1cnZlLnBvaW50KCkuY29uc3RydWN0b3I7XG4gIHRoaXMuZW5jb2RpbmdMZW5ndGggPSBNYXRoLmNlaWwoY3VydmUubi5iaXRMZW5ndGgoKSAvIDgpO1xuICB0aGlzLmhhc2ggPSBoYXNoLnNoYTUxMjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBFRERTQTtcblxuLyoqXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfSBtZXNzYWdlIC0gbWVzc2FnZSBieXRlc1xuKiBAcGFyYW0ge0FycmF5fFN0cmluZ3xLZXlQYWlyfSBzZWNyZXQgLSBzZWNyZXQgYnl0ZXMgb3IgYSBrZXlwYWlyXG4qIEByZXR1cm5zIHtTaWduYXR1cmV9IC0gc2lnbmF0dXJlXG4qL1xuRUREU0EucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1lc3NhZ2UsIHNlY3JldCkge1xuICBtZXNzYWdlID0gcGFyc2VCeXRlcyhtZXNzYWdlKTtcbiAgdmFyIGtleSA9IHRoaXMua2V5RnJvbVNlY3JldChzZWNyZXQpO1xuICB2YXIgciA9IHRoaXMuaGFzaEludChrZXkubWVzc2FnZVByZWZpeCgpLCBtZXNzYWdlKTtcbiAgdmFyIFIgPSB0aGlzLmcubXVsKHIpO1xuICB2YXIgUmVuY29kZWQgPSB0aGlzLmVuY29kZVBvaW50KFIpO1xuICB2YXIgc18gPSB0aGlzLmhhc2hJbnQoUmVuY29kZWQsIGtleS5wdWJCeXRlcygpLCBtZXNzYWdlKVxuICAgIC5tdWwoa2V5LnByaXYoKSk7XG4gIHZhciBTID0gci5hZGQoc18pLnVtb2QodGhpcy5jdXJ2ZS5uKTtcbiAgcmV0dXJuIHRoaXMubWFrZVNpZ25hdHVyZSh7IFI6IFIsIFM6IFMsIFJlbmNvZGVkOiBSZW5jb2RlZCB9KTtcbn07XG5cbi8qKlxuKiBAcGFyYW0ge0FycmF5fSBtZXNzYWdlIC0gbWVzc2FnZSBieXRlc1xuKiBAcGFyYW0ge0FycmF5fFN0cmluZ3xTaWduYXR1cmV9IHNpZyAtIHNpZyBieXRlc1xuKiBAcGFyYW0ge0FycmF5fFN0cmluZ3xQb2ludHxLZXlQYWlyfSBwdWIgLSBwdWJsaWMga2V5XG4qIEByZXR1cm5zIHtCb29sZWFufSAtIHRydWUgaWYgcHVibGljIGtleSBtYXRjaGVzIHNpZyBvZiBtZXNzYWdlXG4qL1xuRUREU0EucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeShtZXNzYWdlLCBzaWcsIHB1Yikge1xuICBtZXNzYWdlID0gcGFyc2VCeXRlcyhtZXNzYWdlKTtcbiAgc2lnID0gdGhpcy5tYWtlU2lnbmF0dXJlKHNpZyk7XG4gIHZhciBrZXkgPSB0aGlzLmtleUZyb21QdWJsaWMocHViKTtcbiAgdmFyIGggPSB0aGlzLmhhc2hJbnQoc2lnLlJlbmNvZGVkKCksIGtleS5wdWJCeXRlcygpLCBtZXNzYWdlKTtcbiAgdmFyIFNHID0gdGhpcy5nLm11bChzaWcuUygpKTtcbiAgdmFyIFJwbHVzQWggPSBzaWcuUigpLmFkZChrZXkucHViKCkubXVsKGgpKTtcbiAgcmV0dXJuIFJwbHVzQWguZXEoU0cpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmhhc2hJbnQgPSBmdW5jdGlvbiBoYXNoSW50KCkge1xuICB2YXIgaGFzaCA9IHRoaXMuaGFzaCgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcbiAgICBoYXNoLnVwZGF0ZShhcmd1bWVudHNbaV0pO1xuICByZXR1cm4gdXRpbHMuaW50RnJvbUxFKGhhc2guZGlnZXN0KCkpLnVtb2QodGhpcy5jdXJ2ZS5uKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5rZXlGcm9tUHVibGljID0gZnVuY3Rpb24ga2V5RnJvbVB1YmxpYyhwdWIpIHtcbiAgcmV0dXJuIEtleVBhaXIuZnJvbVB1YmxpYyh0aGlzLCBwdWIpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmtleUZyb21TZWNyZXQgPSBmdW5jdGlvbiBrZXlGcm9tU2VjcmV0KHNlY3JldCkge1xuICByZXR1cm4gS2V5UGFpci5mcm9tU2VjcmV0KHRoaXMsIHNlY3JldCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUubWFrZVNpZ25hdHVyZSA9IGZ1bmN0aW9uIG1ha2VTaWduYXR1cmUoc2lnKSB7XG4gIGlmIChzaWcgaW5zdGFuY2VvZiBTaWduYXR1cmUpXG4gICAgcmV0dXJuIHNpZztcbiAgcmV0dXJuIG5ldyBTaWduYXR1cmUodGhpcywgc2lnKTtcbn07XG5cbi8qKlxuKiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1qb3NlZnNzb24tZWRkc2EtZWQyNTUxOS0wMyNzZWN0aW9uLTUuMlxuKlxuKiBFRERTQSBkZWZpbmVzIG1ldGhvZHMgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyBwb2ludHMgYW5kIGludGVnZXJzLiBUaGVzZSBhcmVcbiogaGVscGVyIGNvbnZlbmllbmNlIG1ldGhvZHMsIHRoYXQgcGFzcyBhbG9uZyB0byB1dGlsaXR5IGZ1bmN0aW9ucyBpbXBsaWVkXG4qIHBhcmFtZXRlcnMuXG4qXG4qL1xuRUREU0EucHJvdG90eXBlLmVuY29kZVBvaW50ID0gZnVuY3Rpb24gZW5jb2RlUG9pbnQocG9pbnQpIHtcbiAgdmFyIGVuYyA9IHBvaW50LmdldFkoKS50b0FycmF5KCdsZScsIHRoaXMuZW5jb2RpbmdMZW5ndGgpO1xuICBlbmNbdGhpcy5lbmNvZGluZ0xlbmd0aCAtIDFdIHw9IHBvaW50LmdldFgoKS5pc09kZCgpID8gMHg4MCA6IDA7XG4gIHJldHVybiBlbmM7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZGVjb2RlUG9pbnQgPSBmdW5jdGlvbiBkZWNvZGVQb2ludChieXRlcykge1xuICBieXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXMoYnl0ZXMpO1xuXG4gIHZhciBsYXN0SXggPSBieXRlcy5sZW5ndGggLSAxO1xuICB2YXIgbm9ybWVkID0gYnl0ZXMuc2xpY2UoMCwgbGFzdEl4KS5jb25jYXQoYnl0ZXNbbGFzdEl4XSAmIH4weDgwKTtcbiAgdmFyIHhJc09kZCA9IChieXRlc1tsYXN0SXhdICYgMHg4MCkgIT09IDA7XG5cbiAgdmFyIHkgPSB1dGlscy5pbnRGcm9tTEUobm9ybWVkKTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnRGcm9tWSh5LCB4SXNPZGQpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmVuY29kZUludCA9IGZ1bmN0aW9uIGVuY29kZUludChudW0pIHtcbiAgcmV0dXJuIG51bS50b0FycmF5KCdsZScsIHRoaXMuZW5jb2RpbmdMZW5ndGgpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmRlY29kZUludCA9IGZ1bmN0aW9uIGRlY29kZUludChieXRlcykge1xuICByZXR1cm4gdXRpbHMuaW50RnJvbUxFKGJ5dGVzKTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5pc1BvaW50ID0gZnVuY3Rpb24gaXNQb2ludCh2YWwpIHtcbiAgcmV0dXJuIHZhbCBpbnN0YW5jZW9mIHRoaXMucG9pbnRDbGFzcztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xudmFyIHBhcnNlQnl0ZXMgPSB1dGlscy5wYXJzZUJ5dGVzO1xudmFyIGNhY2hlZFByb3BlcnR5ID0gdXRpbHMuY2FjaGVkUHJvcGVydHk7XG5cbi8qKlxuKiBAcGFyYW0ge0VERFNBfSBlZGRzYSAtIGluc3RhbmNlXG4qIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgLSBwdWJsaWMvcHJpdmF0ZSBrZXkgcGFyYW1ldGVyc1xuKlxuKiBAcGFyYW0ge0FycmF5PEJ5dGU+fSBbcGFyYW1zLnNlY3JldF0gLSBzZWNyZXQgc2VlZCBieXRlc1xuKiBAcGFyYW0ge1BvaW50fSBbcGFyYW1zLnB1Yl0gLSBwdWJsaWMga2V5IHBvaW50IChha2EgYEFgIGluIGVkZHNhIHRlcm1zKVxuKiBAcGFyYW0ge0FycmF5PEJ5dGU+fSBbcGFyYW1zLnB1Yl0gLSBwdWJsaWMga2V5IHBvaW50IGVuY29kZWQgYXMgYnl0ZXNcbipcbiovXG5mdW5jdGlvbiBLZXlQYWlyKGVkZHNhLCBwYXJhbXMpIHtcbiAgdGhpcy5lZGRzYSA9IGVkZHNhO1xuICB0aGlzLl9zZWNyZXQgPSBwYXJzZUJ5dGVzKHBhcmFtcy5zZWNyZXQpO1xuICBpZiAoZWRkc2EuaXNQb2ludChwYXJhbXMucHViKSlcbiAgICB0aGlzLl9wdWIgPSBwYXJhbXMucHViO1xuICBlbHNlXG4gICAgdGhpcy5fcHViQnl0ZXMgPSBwYXJzZUJ5dGVzKHBhcmFtcy5wdWIpO1xufVxuXG5LZXlQYWlyLmZyb21QdWJsaWMgPSBmdW5jdGlvbiBmcm9tUHVibGljKGVkZHNhLCBwdWIpIHtcbiAgaWYgKHB1YiBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHB1YjtcbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVkZHNhLCB7IHB1YjogcHViIH0pO1xufTtcblxuS2V5UGFpci5mcm9tU2VjcmV0ID0gZnVuY3Rpb24gZnJvbVNlY3JldChlZGRzYSwgc2VjcmV0KSB7XG4gIGlmIChzZWNyZXQgaW5zdGFuY2VvZiBLZXlQYWlyKVxuICAgIHJldHVybiBzZWNyZXQ7XG4gIHJldHVybiBuZXcgS2V5UGFpcihlZGRzYSwgeyBzZWNyZXQ6IHNlY3JldCB9KTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLnNlY3JldCA9IGZ1bmN0aW9uIHNlY3JldCgpIHtcbiAgcmV0dXJuIHRoaXMuX3NlY3JldDtcbn07XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwdWJCeXRlcycsIGZ1bmN0aW9uIHB1YkJ5dGVzKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVQb2ludCh0aGlzLnB1YigpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHViJywgZnVuY3Rpb24gcHViKCkge1xuICBpZiAodGhpcy5fcHViQnl0ZXMpXG4gICAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlUG9pbnQodGhpcy5fcHViQnl0ZXMpO1xuICByZXR1cm4gdGhpcy5lZGRzYS5nLm11bCh0aGlzLnByaXYoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3ByaXZCeXRlcycsIGZ1bmN0aW9uIHByaXZCeXRlcygpIHtcbiAgdmFyIGVkZHNhID0gdGhpcy5lZGRzYTtcbiAgdmFyIGhhc2ggPSB0aGlzLmhhc2goKTtcbiAgdmFyIGxhc3RJeCA9IGVkZHNhLmVuY29kaW5nTGVuZ3RoIC0gMTtcblxuICB2YXIgYSA9IGhhc2guc2xpY2UoMCwgZWRkc2EuZW5jb2RpbmdMZW5ndGgpO1xuICBhWzBdICY9IDI0ODtcbiAgYVtsYXN0SXhdICY9IDEyNztcbiAgYVtsYXN0SXhdIHw9IDY0O1xuXG4gIHJldHVybiBhO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwcml2JywgZnVuY3Rpb24gcHJpdigpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMucHJpdkJ5dGVzKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdoYXNoJywgZnVuY3Rpb24gaGFzaCgpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuaGFzaCgpLnVwZGF0ZSh0aGlzLnNlY3JldCgpKS5kaWdlc3QoKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAnbWVzc2FnZVByZWZpeCcsIGZ1bmN0aW9uIG1lc3NhZ2VQcmVmaXgoKSB7XG4gIHJldHVybiB0aGlzLmhhc2goKS5zbGljZSh0aGlzLmVkZHNhLmVuY29kaW5nTGVuZ3RoKTtcbn0pO1xuXG5LZXlQYWlyLnByb3RvdHlwZS5zaWduID0gZnVuY3Rpb24gc2lnbihtZXNzYWdlKSB7XG4gIGFzc2VydCh0aGlzLl9zZWNyZXQsICdLZXlQYWlyIGNhbiBvbmx5IHZlcmlmeScpO1xuICByZXR1cm4gdGhpcy5lZGRzYS5zaWduKG1lc3NhZ2UsIHRoaXMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1lc3NhZ2UsIHNpZykge1xuICByZXR1cm4gdGhpcy5lZGRzYS52ZXJpZnkobWVzc2FnZSwgc2lnLCB0aGlzKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFNlY3JldCA9IGZ1bmN0aW9uIGdldFNlY3JldChlbmMpIHtcbiAgYXNzZXJ0KHRoaXMuX3NlY3JldCwgJ0tleVBhaXIgaXMgcHVibGljIG9ubHknKTtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLnNlY3JldCgpLCBlbmMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuZ2V0UHVibGljID0gZnVuY3Rpb24gZ2V0UHVibGljKGVuYykge1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHRoaXMucHViQnl0ZXMoKSwgZW5jKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gS2V5UGFpcjtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xudmFyIGNhY2hlZFByb3BlcnR5ID0gdXRpbHMuY2FjaGVkUHJvcGVydHk7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG5cbi8qKlxuKiBAcGFyYW0ge0VERFNBfSBlZGRzYSAtIGVkZHNhIGluc3RhbmNlXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fE9iamVjdH0gc2lnIC1cbiogQHBhcmFtIHtBcnJheTxCeXRlcz58UG9pbnR9IFtzaWcuUl0gLSBSIHBvaW50IGFzIFBvaW50IG9yIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fGJufSBbc2lnLlNdIC0gUyBzY2FsYXIgYXMgYm4gb3IgYnl0ZXNcbiogQHBhcmFtIHtBcnJheTxCeXRlcz59IFtzaWcuUmVuY29kZWRdIC0gUiBwb2ludCBlbmNvZGVkXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fSBbc2lnLlNlbmNvZGVkXSAtIFMgc2NhbGFyIGVuY29kZWRcbiovXG5mdW5jdGlvbiBTaWduYXR1cmUoZWRkc2EsIHNpZykge1xuICB0aGlzLmVkZHNhID0gZWRkc2E7XG5cbiAgaWYgKHR5cGVvZiBzaWcgIT09ICdvYmplY3QnKVxuICAgIHNpZyA9IHBhcnNlQnl0ZXMoc2lnKTtcblxuICBpZiAoQXJyYXkuaXNBcnJheShzaWcpKSB7XG4gICAgc2lnID0ge1xuICAgICAgUjogc2lnLnNsaWNlKDAsIGVkZHNhLmVuY29kaW5nTGVuZ3RoKSxcbiAgICAgIFM6IHNpZy5zbGljZShlZGRzYS5lbmNvZGluZ0xlbmd0aCksXG4gICAgfTtcbiAgfVxuXG4gIGFzc2VydChzaWcuUiAmJiBzaWcuUywgJ1NpZ25hdHVyZSB3aXRob3V0IFIgb3IgUycpO1xuXG4gIGlmIChlZGRzYS5pc1BvaW50KHNpZy5SKSlcbiAgICB0aGlzLl9SID0gc2lnLlI7XG4gIGlmIChzaWcuUyBpbnN0YW5jZW9mIEJOKVxuICAgIHRoaXMuX1MgPSBzaWcuUztcblxuICB0aGlzLl9SZW5jb2RlZCA9IEFycmF5LmlzQXJyYXkoc2lnLlIpID8gc2lnLlIgOiBzaWcuUmVuY29kZWQ7XG4gIHRoaXMuX1NlbmNvZGVkID0gQXJyYXkuaXNBcnJheShzaWcuUykgPyBzaWcuUyA6IHNpZy5TZW5jb2RlZDtcbn1cblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUycsIGZ1bmN0aW9uIFMoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZUludCh0aGlzLlNlbmNvZGVkKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1InLCBmdW5jdGlvbiBSKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5kZWNvZGVQb2ludCh0aGlzLlJlbmNvZGVkKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1JlbmNvZGVkJywgZnVuY3Rpb24gUmVuY29kZWQoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZVBvaW50KHRoaXMuUigpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShTaWduYXR1cmUsICdTZW5jb2RlZCcsIGZ1bmN0aW9uIFNlbmNvZGVkKCkge1xuICByZXR1cm4gdGhpcy5lZGRzYS5lbmNvZGVJbnQodGhpcy5TKCkpO1xufSk7XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9CeXRlcyA9IGZ1bmN0aW9uIHRvQnl0ZXMoKSB7XG4gIHJldHVybiB0aGlzLlJlbmNvZGVkKCkuY29uY2F0KHRoaXMuU2VuY29kZWQoKSk7XG59O1xuXG5TaWduYXR1cmUucHJvdG90eXBlLnRvSGV4ID0gZnVuY3Rpb24gdG9IZXgoKSB7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy50b0J5dGVzKCksICdoZXgnKS50b1VwcGVyQ2FzZSgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBTaWduYXR1cmU7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgZG91Ymxlczoge1xuICAgIHN0ZXA6IDQsXG4gICAgcG9pbnRzOiBbXG4gICAgICBbXG4gICAgICAgICdlNjBmY2U5M2I1OWU5ZWM1MzAxMWFhYmMyMWMyM2U5N2IyYTMxMzY5Yjg3YTVhZTljNDRlZTg5ZTJhNmRlYzBhJyxcbiAgICAgICAgJ2Y3ZTM1MDczOTllNTk1OTI5ZGI5OWYzNGY1NzkzNzEwMTI5Njg5MWU0NGQyM2YwYmUxZjMyY2NlNjk2MTY4MjEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgyODIyNjMyMTJjNjA5ZDllYTJhNmUzZTE3MmRlMjM4ZDhjMzljYWJkNWFjMWNhMTA2NDZlMjNmZDVmNTE1MDgnLFxuICAgICAgICAnMTFmOGE4MDk4NTU3ZGZlNDVlODI1NmU4MzBiNjBhY2U2MmQ2MTNhYzJmN2IxN2JlZDMxYjZlYWZmNmUyNmNhZicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTc1ZTE1OWY3MjhiODY1YTcyZjk5Y2M2YzZmYzg0NmRlMGI5MzgzM2ZkMjIyMmVkNzNmY2U1YjU1MWU1YjczOScsXG4gICAgICAgICdkMzUwNmUwZDllM2M3OWViYTRlZjk3YTUxZmY3MWY1ZWFjYjU5NTVhZGQyNDM0NWM2ZWZhNmZmZWU5ZmVkNjk1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNjNkOTBkNDQ3YjAwYzljOTljZWFjMDViNjI2MmVlMDUzNDQxYzdlNTU1NTJmZmU1MjZiYWQ4ZjgzZmY0NjQwJyxcbiAgICAgICAgJzRlMjczYWRmYzczMjIyMTk1M2I0NDUzOTdmMzM2MzE0NWI5YTg5MDA4MTk5ZWNiNjIwMDNjN2YzYmVlOWRlOScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGI0YjVmMTY1ZGYzYzJiZThjNjI0NGI1Yjc0NTYzODg0M2U0YTc4MWExNWJjZDFiNjlmNzlhNTVkZmZkZjgwYycsXG4gICAgICAgICc0YWFkMGE2ZjY4ZDMwOGI0YjNmYmQ3ODEzYWIwZGEwNGY5ZTMzNjU0NjE2MmVlNTZiM2VmZjBjNjVmZDRmZDM2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3MjNjYmFhNmU1ZGI5OTZkNmJmNzcxYzAwYmQ1NDhjN2I3MDBkYmZmYTZjMGU3N2JjYjYxMTU5MjUyMzJmY2RhJyxcbiAgICAgICAgJzk2ZTg2N2I1NTk1Y2M0OThhOTIxMTM3NDg4ODI0ZDZlMjY2MGEwNjUzNzc5NDk0ODAxZGMwNjlkOWViMzlmNWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VlYmZhNGQ0OTNiZWJmOThiYTVmZWVjODEyYzJkM2I1MDk0Nzk2MTIzN2E5MTk4MzlhNTMzZWNhMGU3ZGQ3ZmEnLFxuICAgICAgICAnNWQ5YThjYTM5NzBlZjBmMjY5ZWU3ZWRhZjE3ODA4OWQ5YWU0Y2RjM2E3MTFmNzEyZGRmZDRmZGFlMWRlODk5OScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTAwZjQ0ZGE2OTZlNzE2NzI3OTFkMGEwOWI3YmRlNDU5ZjEyMTVhMjliM2MwM2JmZWZkNzgzNWIzOWE0OGRiMCcsXG4gICAgICAgICdjZGQ5ZTEzMTkyYTAwYjc3MmVjOGYzMzAwYzA5MDY2NmI3ZmY0YTE4ZmY1MTk1YWMwZmJkNWNkNjJiYzY1YTA5JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMTAzMWJlMjYyYzdlZDFiMWRjOTIyN2E0YTA0YzAxN2E3N2Y4ZDQ0NjRmM2IzODUyYzhhY2RlNmU1MzRmZDJkJyxcbiAgICAgICAgJzlkNzA2MTkyODk0MDQwNWU2YmI2YTQxNzY1OTc1MzVhZjI5MmRkNDE5ZTFjZWQ3OWE0NGYxOGYyOTQ1NmEwMGQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZlZWE2Y2FlNDZkNTViNTMwYWMyODM5ZjE0M2JkN2VjNWNmOGIyNjZhNDFkNmFmNTJkNWU2ODhkOTA5NDY5NmQnLFxuICAgICAgICAnZTU3YzZiNmM5N2RjZTFiYWIwNmU0ZTEyYmYzZWNkNWM5ODFjODk1N2NjNDE0NDJkMzE1NWRlYmYxODA5MDA4OCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGE2N2E5MWQ5MTA0OWNkY2IzNjdiZTRiZTZmZmNhM2NmZWVkNjU3ZDgwODU4M2RlMzNmYTk3OGJjMWVjNmNiMScsXG4gICAgICAgICc5YmFjYWEzNTQ4MTY0MmJjNDFmNDYzZjdlYzk3ODBlNWRlYzdhZGM1MDhmNzQwYTE3ZTllYThlMjdhNjhiZTFkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1MzkwNGZhYTBiMzM0Y2RkYTZlMDAwOTM1ZWYyMjE1MWVjMDhkMGY3YmIxMTA2OWY1NzU0NWNjYzFhMzdiN2MwJyxcbiAgICAgICAgJzViYzA4N2QwYmM4MDEwNmQ4OGM5ZWNjYWMyMGQzYzFjMTM5OTk5ODFlMTQ0MzQ2OTlkY2IwOTZiMDIyNzcxYzgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhlN2JjZDBiZDM1OTgzYTc3MTljY2E3NzY0Y2E5MDY3NzliNTNhMDQzYTliOGJjYWVmZjk1OWY0M2FkODYwNDcnLFxuICAgICAgICAnMTBiNzc3MGIyYTNkYTRiMzk0MDMxMDQyMGNhOTUxNDU3OWU4OGUyZTQ3ZmQ2OGIzZWExMDA0N2U4NDYwMzcyYScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzg1ZWVkMzRjMWNkZmYyMWU2ZDA4MTg2ODliODFiZGU3MWE3ZjRmMTgzOTdlNjY5MGE4NDFlMTU5OWM0Mzg2MicsXG4gICAgICAgICcyODNiZWJjM2U4ZWEyM2Y1NjcwMWRlMTllOWViZjQ1NzZiMzA0ZWVjMjA4NmRjOGNjMDQ1OGZlNTU0MmU1NDUzJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2ZjlkOWI4MDNlY2YxOTE2MzdjNzNhNDQxM2RmYTE4MGZkZGY4NGE1OTQ3ZmJjOWM2MDZlZDg2YzNmYWMzYTcnLFxuICAgICAgICAnN2M4MGM2OGU2MDMwNTliYTY5YjhlMmEzMGU0NWM0ZDQ3ZWE0ZGQyZjVjMjgxMDAyZDg2ODkwNjAzYTg0MjE2MCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzMyMmQ0MDEyNDNjNGUyNTgyYTIxNDdjMTA0ZDZlY2JmNzc0ZDE2M2RiMGY1ZTUzMTNiN2UwZTc0MmQwZTZiZCcsXG4gICAgICAgICc1NmU3MDc5N2U5NjY0ZWY1YmZiMDE5YmM0ZGRhZjliNzI4MDVmNjNlYTI4NzNhZjYyNGYzYTJlOTZjMjhiMmEwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NTY3MmM3ZDJkZTBiN2RhMmJkMTc3MGQ4OTY2NTg2ODc0MWIzZjlhZjc2NDMzOTc3MjFkNzRkMjgxMzRhYjgzJyxcbiAgICAgICAgJzdjNDgxYjliNWI0M2IyZWI2Mzc0MDQ5YmZhNjJjMmU1ZTc3ZjE3ZmNjNTI5OGY0NGM4ZTMwOTRmNzkwMzEzYTYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzk0OGJmODA5YjE5ODhhNDZiMDZjOWYxOTE5NDEzYjEwZjkyMjZjNjBmNjY4ODMyZmZkOTU5YWY2MGM4MmEwYScsXG4gICAgICAgICc1M2E1NjI4NTZkY2I2NjQ2ZGM2Yjc0YzVkMWMzNDE4YzZkNGRmZjA4Yzk3Y2QyYmVkNGNiN2Y4OGQ4YzhlNTg5JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2MjYwY2U3ZjQ2MTgwMWMzNGYwNjdjZTBmMDI4NzNhOGYxYjBlNDRkZmM2OTc1MmFjY2VjZDgxOWYzOGZkOGU4JyxcbiAgICAgICAgJ2JjMmRhODJiNmZhNWI1NzFhN2YwOTA0OTc3NmExZWY3ZWNkMjkyMjM4MDUxYzE5OGMxYTg0ZTk1YjJiNGFlMTcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U1MDM3ZGUwYWZjMWQ4ZDQzZDgzNDg0MTRiYmY0MTAzMDQzZWM4ZjU3NWJmZGM0MzI5NTNjYzhkMjAzN2ZhMmQnLFxuICAgICAgICAnNDU3MTUzNGJhYTk0ZDNiNWY5Zjk4ZDA5ZmI5OTBiZGRiZDVmNWIwM2VjNDgxZjEwZTBlNWRjODQxZDc1NWJkYScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTA2MzcyYjBmNGEyMDdhZGY1ZWE5MDVlOGYxNzcxYjRlN2U4ZGJkMWM2YTZjNWI3MjU4NjZhMGFlNGZjZTcyNScsXG4gICAgICAgICc3YTkwODk3NGJjZTE4Y2ZlMTJhMjdiYjJhZDVhNDg4Y2Q3NDg0YTc3ODcxMDQ4NzBiMjcwMzRmOTRlZWUzMWRkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyMTNjN2E3MTVjZDVkNDUzNThkMGJiZjlkYzBjZTAyMjA0YjEwYmRkZTJhM2Y1ODU0MGFkNjkwOGQwNTU5NzU0JyxcbiAgICAgICAgJzRiNmRhZDBiNWFlNDYyNTA3MDEzYWQwNjI0NWJhMTkwYmI0ODUwZjVmMzZhN2VlZGRmZjJjMjc1MzRiNDU4ZjInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRlN2MyNzJhN2FmNGIzNGU4ZGJiOTM1MmE1NDE5YTg3ZTI4MzhjNzBhZGM2MmNkZGYwY2MzYTNiMDhmYmQ1M2MnLFxuICAgICAgICAnMTc3NDljNzY2YzlkMGIxOGUxNmZkMDlmNmRlZjY4MWI1MzBiOTYxNGJmZjdkZDMzZTBiMzk0MTgxN2RjYWFlNicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmVhNzRlM2RiZTc3OGIxYjEwZjIzOGFkNjE2ODZhYTVjNzZlM2RiMmJlNDMwNTc2MzI0MjdlMjg0MGZiMjdiNicsXG4gICAgICAgICc2ZTA1NjhkYjliMGIxMzI5N2NmNjc0ZGVjY2I2YWY5MzEyNmI1OTZiOTczZjdiNzc3MDFkM2RiN2YyM2NiOTZmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NmU2NDExM2Y2NzdjZjBlMTBhMjU3MGQ1OTk5NjhkMzE1NDRlMTc5Yjc2MDQzMjk1MmMwMmE0NDE3YmRkZTM5JyxcbiAgICAgICAgJ2M5MGRkZjhkZWU0ZTk1Y2Y1NzcwNjZkNzA2ODFmMGQzNWUyYTMzZDJiNTZkMjAzMmI0YjE3NTJkMTkwMWFjMDEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M3MzhjNTZiMDNiMmFiZTFlODI4MWJhYTc0M2Y4ZjlhOGY3Y2M2NDNkZjI2Y2JlZTNhYjE1MDI0MmJjYmI4OTEnLFxuICAgICAgICAnODkzZmI1Nzg5NTFhZDI1MzdmNzE4ZjJlYWNiZmJiYmI4MjMxNGVlZjc4ODBjZmU5MTdlNzM1ZDk2OTlhODRjMycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDg5NTYyNjU0OGI2NWI4MWUyNjRjNzYzN2M5NzI4NzdkMWQ3MmU1ZjNhOTI1MDE0MzcyZTlmNjU4OGY2YzE0YicsXG4gICAgICAgICdmZWJmYWEzOGYyYmM3ZWFlNzI4ZWM2MDgxOGMzNDBlYjAzNDI4ZDYzMmJiMDY3ZTE3OTM2M2VkNzVkN2Q5OTFmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiOGRhOTQwMzJhOTU3NTE4ZWIwZjY0MzM1NzFlODc2MWNlZmZjNzM2OTNlODRlZGQ0OTE1MGE1NjRmNjc2ZTAzJyxcbiAgICAgICAgJzI4MDRkZmE0NDgwNWExZTRkN2M5OWNjOTc2MjgwOGIwOTJjYzU4NGQ5NWZmM2I1MTE0ODhlNGU3NGVmZGY2ZTcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U4MGZlYTE0NDQxZmIzM2E3ZDhhZGFiOTQ3NWQ3ZmFiMjAxOWVmZmI1MTU2YTc5MmYxYTExNzc4ZTNjMGRmNWQnLFxuICAgICAgICAnZWVkMWRlN2Y2MzhlMDA3NzFlODk3NjhjYTNjYTk0NDcyZDE1NWU4MGFmMzIyZWE5ZmNiNDI5MWI2YWM5ZWM3OCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTMwMTY5N2JkZmNkNzA0MzEzYmE0OGU1MWQ1Njc1NDNmMmExODIwMzFlZmQ2OTE1ZGRjMDdiYmNjNGUxNjA3MCcsXG4gICAgICAgICc3MzcwZjkxY2ZiNjdlNGY1MDgxODA5ZmEyNWQ0MGY5YjE3MzVkYmY3YzBhMTFhMTMwYzBkMWEwNDFlMTc3ZWExJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5MGFkODViMzg5ZDZiOTM2NDYzZjlkMDUxMjY3OGRlMjA4Y2MzMzBiMTEzMDdmZmZhYjdhYzYzZTNmYjA0ZWQ0JyxcbiAgICAgICAgJ2U1MDdhMzYyMGEzODI2MWFmZmRjYmQ5NDI3MjIyYjgzOWFlZmFiZTE1ODI4OTRkOTkxZDRkNDhjYjZlZjE1MCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGY2OGI5ZDJmNjNiNWYzMzkyMzljMWFkOTgxZjE2MmVlODhjNTY3ODcyM2VhMzM1MWI3YjQ0NGM5ZWM0YzBkYScsXG4gICAgICAgICc2NjJhOWYyZGJhMDYzOTg2ZGUxZDkwYzJiNmJlMjE1ZGJiZWEyY2ZlOTU1MTBiZmRmMjNjYmY3OTUwMWZmZjgyJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNGYzZmIwMTc2YWY4NWQ2NWZmOTlmZjkxOThjMzYwOTFmNDhlODY1MDM2ODFlM2U2Njg2ZmQ1MDUzMjMxZTExJyxcbiAgICAgICAgJzFlNjM2MzNhZDBlZjRmMWMxNjYxYTZkMGVhMDJiNzI4NmNjN2U3NGVjOTUxZDFjOTgyMmMzODU3NmZlYjczYmMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhjMDBmYTliMThlYmYzMzFlYjk2MTUzN2E0NWE0MjY2YzcwMzRmMmYwZDRlMWQwNzE2ZmI2ZWFlMjBlYWUyOWUnLFxuICAgICAgICAnZWZhNDcyNjdmZWE1MjFhMWE5ZGMzNDNhMzczNmM5NzRjMmZhZGFmYTgxZTM2YzU0ZTdkMmE0YzY2NzAyNDE0YicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTdhMjZjZTY5ZGQ0ODI5ZjNlMTBjZWMwYTllOThlZDMxNDNkMDg0ZjMwOGI5MmMwOTk3ZmRkZmM2MGNiM2U0MScsXG4gICAgICAgICcyYTc1OGUzMDBmYTc5ODRiNDcxYjAwNmExYWFmYmIxOGQwYTZiMmMwNDIwZTgzZTIwZThhOTQyMWNmMmNmZDUxJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiNjQ1OWUwZWUzNjYyZWM4ZDIzNTQwYzIyM2JjYmRjNTcxY2JjYjk2N2Q3OTQyNGYzY2YyOWViM2RlNmI4MGVmJyxcbiAgICAgICAgJzY3Yzg3NmQwNmYzZTA2ZGUxZGFkZjE2ZTU2NjFkYjNjNGIzYWU2ZDQ4ZTM1YjJmZjMwYmYwYjYxYTcxYmE0NScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDY4YTgwYzgyODBiYjg0MDc5MzIzNGFhMTE4ZjA2MjMxZDZmMWZjNjdlNzNjNWE1ZGVkYTBmNWI0OTY5NDNlOCcsXG4gICAgICAgICdkYjhiYTlmZmY0YjU4NmQwMGM0YjFmOTE3N2IwZTI4YjViMGU3YjhmNzg0NTI5NWEyOTRjODQyNjZiMTMzMTIwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMjRhZWQ3ZGY2NWM4MDQyNTJkYzAyNzA5MDdhMzBiMDk2MTJhZWI5NzM0NDljZWE0MDk1OTgwZmMyOGQzZDVkJyxcbiAgICAgICAgJzY0OGEzNjU3NzRiNjFmMmZmMTMwYzBjMzVhZWMxZjRmMTkyMTNiMGM3ZTMzMjg0Mzk2NzIyNGFmOTZhYjdjODQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRkZjljMTQ5MTljZGU2MWY2ZDUxZGZkYmU1ZmVlNWRjZWVjNDE0M2JhOGQxY2E4ODhlOGJkMzczZmQwNTRjOTYnLFxuICAgICAgICAnMzVlYzUxMDkyZDg3MjgwNTA5NzRjMjNhMWQ4NWQ0YjVkNTA2Y2RjMjg4NDkwMTkyZWJhYzA2Y2FkMTBkNWQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzljMzkxOWE4NGE0NzQ4NzBmYWVkOGE5YzFjYzY2MDIxNTIzNDg5MDU0ZDdmMDMwOGNiZmM5OWM4YWMxZjk4Y2QnLFxuICAgICAgICAnZGRiODRmMGY0YTRkZGQ1NzU4NGYwNDRiZjI2MGU2NDE5MDUzMjZmNzZjNjRjOGU2YmU3ZTVlMDNkNGZjNTk5ZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjA1NzE3MGIxZGQxMmZkZjhkZTA1ZjI4MWQ4ZTA2YmI5MWUxNDkzYThiOTFkNGNjNWEyMTM4MjEyMGE5NTllNScsXG4gICAgICAgICc5YTFhZjBiMjZhNmE0ODA3YWRkOWEyZGFmNzFkZjI2MjQ2NTE1MmJjM2VlMjRjNjVlODk5YmU5MzIzODVhMmE4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhNTc2ZGY4ZTIzYTA4NDExNDIxNDM5YTQ1MThkYTMxODgwY2VmMGZiYTdkNGRmMTJiMWE2OTczZWVjYjk0MjY2JyxcbiAgICAgICAgJzQwYTZiZjIwZTc2NjQwYjJjOTJiOTdhZmU1OGNkODJjNDMyZTEwYTdmNTE0ZDlmM2VlOGJlMTFhZTFiMjhlYzgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc3NzhhNzhjMjhkZWMzZTMwYTA1ZmU5NjI5ZGU4YzM4YmIzMGQxZjVjZjlhM2EyMDhmNzYzODg5YmU1OGFkNzEnLFxuICAgICAgICAnMzQ2MjZkOWFiNWE1YjIyZmY3MDk4ZTEyZjJmZjU4MDA4N2IzODQxMWZmMjRhYzU2M2I1MTNmYzFmZDlmNDNhYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTI4OTU1ZWU2MzdhODQ0NjM3MjlmZDMwZTdhZmQyZWQ1Zjk2Mjc0ZTVhZDdlNWNiMDllZGE5YzA2ZDkwM2FjJyxcbiAgICAgICAgJ2MyNTYyMTAwM2QzZjQyYTgyN2I3OGExMzA5M2E5NWVlYWMzZDI2ZWZhOGE4ZDgzZmM1MTgwZTkzNWJjZDA5MWYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg1ZDBmZWYzZWM2ZGIxMDkzOTkwNjRmM2EwZTNiMjg1NTY0NWI0YTkwN2FkMzU0NTI3YWFlNzUxNjNkODI3NTEnLFxuICAgICAgICAnMWYwMzY0ODQxM2EzOGMwYmUyOWQ0OTZlNTgyY2Y1NjYzZTg3NTFlOTY4NzczMzE1ODJjMjM3YTI0ZWIxZjk2MicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmYyYjBkY2U5N2VlY2U5N2MxYzliNjA0MTc5OGI4NWRmZGZiNmQ4ODgyZGEyMDMwOGY1NDA0ODI0NTI2MDg3ZScsXG4gICAgICAgICc0OTNkMTNmZWY1MjRiYTE4OGFmNGM0ZGM1NGQwNzkzNmM3YjdlZDZmYjkwZTJjZWIyYzk1MWUwMWYwYzI5OTA3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4MjdmYmJlNGIxZTg4MGVhOWVkMmIyZTYzMDFiMjEyYjU3ZjFlZTE0OGNkNmRkMjg3ODBlNWUyY2Y4NTZlMjQxJyxcbiAgICAgICAgJ2M2MGY5YzkyM2M3MjdiMGI3MWJlZjJjNjdkMWQxMjY4N2ZmN2E2MzE4NjkwMzE2NmQ2MDViNjhiYWVjMjkzZWMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VhYTY0OWYyMWY1MWJkYmFlN2JlNGFlMzRjZTZlNTIxN2E1OGZkY2U3ZjQ3ZjlhYTdmM2I1OGZhMjEyMGUyYjMnLFxuICAgICAgICAnYmUzMjc5ZWQ1YmJiYjAzYWM2OWE4MGY4OTg3OWFhNWEwMWE2Yjk2NWYxM2Y3ZTU5ZDQ3YTUzMDViYTVhZDkzZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTRhNDJkNDNjNWNmMTY5ZDkzOTFkZjZkZWNmNDJlZTU0MWI2ZDhmMGM5YTEzNzQwMWUyMzYzMmRkYTM0ZDI0ZicsXG4gICAgICAgICc0ZDlmOTJlNzE2ZDFjNzM1MjZmYzk5Y2NmYjhhZDM0Y2U4ODZlZWRmYThkOGU0ZjEzYTdmNzEzMWRlYmE5NDE0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxZWM4MGZlZjM2MGNiZGQ5NTQxNjBmYWRhYjM1MmI2YjkyYjUzNTc2YTg4ZmVhNDk0NzE3M2I5ZDQzMDBiZjE5JyxcbiAgICAgICAgJ2FlZWZlOTM3NTZiNTM0MGQyZjNhNDk1OGE3YWJiZjVlMDE0NmU3N2Y2Mjk1YTA3YjY3MWNkYzFjYzEwN2NlZmQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE0NmE3NzhjMDQ2NzBjMmY5MWIwMGFmNDY4MGRmYThiY2UzNDkwNzE3ZDU4YmE4ODlkZGI1OTI4MzY2NjQyYmUnLFxuICAgICAgICAnYjMxOGUwZWMzMzU0MDI4YWRkNjY5ODI3ZjlkNGIyODcwYWFhOTcxZDJmN2U1ZWQxZDBiMjk3NDgzZDgzZWZkMCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmE1MGMwZjYxZDIyZTVmMDdlM2FjZWJiMWFhMDdiMTI4ZDAwMTIyMDlhMjhiOTc3NmQ3NmE4NzkzMTgwZWVmOScsXG4gICAgICAgICc2Yjg0YzY5MjIzOTdlYmE5YjcyY2QyODcyMjgxYTY4YTVlNjgzMjkzYTU3YTIxM2IzOGNkOGQ3ZDNmNGYyODExJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkYTFkNjFkMGNhNzIxYTExYjFhNWJmNmI3ZDg4ZTg0MjFhMjg4YWI1ZDViYmE1MjIwZTUzZDMyYjVmMDY3ZWMyJyxcbiAgICAgICAgJzgxNTdmNTVhN2M5OTMwNmM3OWMwNzY2MTYxYzkxZTI5NjZhNzM4OTlkMjc5YjQ4YTY1NWZiYTBmMWFkODM2ZjEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E4ZTI4MmZmMGM5NzA2OTA3MjE1ZmY5OGU4ZmQ0MTY2MTUzMTFkZTA0NDZmMWUwNjJhNzNiMDYxMGQwNjRlMTMnLFxuICAgICAgICAnN2Y5NzM1NWI4ZGI4MWMwOWFiZmI3ZjNjNWIyNTE1ODg4YjY3OWEzZTUwZGQ2YmQ2Y2VmN2M3MzExMWY0Y2MwYycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTc0YTUzYjljOWEyODU4NzJkMzllNTZlNjkxM2NhYjE1ZDU5YjFmYTUxMjUwOGMwMjJmMzgyZGU4MzE5NDk3YycsXG4gICAgICAgICdjY2M5ZGMzN2FiZmM5YzE2NTdiNDE1NWYyYzQ3ZjllNjY0NmIzYTFkOGNiOTg1NDM4M2RhMTNhYzA3OWFmYTczJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5NTkzOTY5ODE5NDM3ODVjM2QzZTU3ZWRmNTAxOGNkYmUwMzllNzMwZTQ5MThiM2Q4ODRmZGZmMDk0NzViN2JhJyxcbiAgICAgICAgJzJlN2U1NTI4ODhjMzMxZGQ4YmEwMzg2YTRiOWNkNjg0OWM2NTNmNjRjODcwOTM4NWU5YjhhYmY4NzUyNGYyZmQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QyYTYzYTUwYWU0MDFlNTZkNjQ1YTExNTNiMTA5YThmY2NhMGE0M2Q1NjFmYmEyZGJiNTEzNDBjOWQ4MmIxNTEnLFxuICAgICAgICAnZTgyZDg2ZmI2NDQzZmNiNzU2NWFlZTU4YjI5NDgyMjBhNzBmNzUwYWY0ODRjYTUyZDQxNDIxNzRkY2Y4OTQwNScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjQ1ODdlMjMzNTQ3MWViODkwZWU3ODk2ZDdjZmRjODY2YmFjYmRiZDM4MzkzMTdiMzQzNmY5YjQ1NjE3ZTA3MycsXG4gICAgICAgICdkOTlmY2RkNWJmNjkwMmUyYWU5NmRkNjQ0N2MyOTlhMTg1YjkwYTM5MTMzYWVhYjM1ODI5OWU1ZTlmYWY2NTg5JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NDgxYmRlMGU0ZTRkODg1YjNhNTQ2ZDNlNTQ5ZGUwNDJmMGFhNmNlYTI1MGU3ZmQzNThkNmM4NmRkNDVlNDU4JyxcbiAgICAgICAgJzM4ZWU3YjhjYmE1NDA0ZGQ4NGEyNWJmMzljZWNiMmNhOTAwYTc5YzQyYjI2MmU1NTZkNjRiMWI1OTc3OTA1N2UnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzEzNDY0YTU3YTc4MTAyYWE2MmI2OTc5YWU4MTdmNDYzN2ZmY2ZlZDNjNGIxY2UzMGJjZDYzMDNmNmNhZjY2NmInLFxuICAgICAgICAnNjliZTE1OTAwNDYxNDU4MGVmN2U0MzM0NTNjY2IwY2E0OGYzMDBhODFkMDk0MmUxM2Y0OTVhOTA3ZjZlY2MyNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYmM0YTlkZjViNzEzZmUyZTlhZWY0MzBiY2MxZGM5N2EwY2Q5Y2NlZGUyZjI4NTg4Y2FkYTNhMGQyZDgzZjM2NicsXG4gICAgICAgICdkM2E4MWNhNmU3ODVjMDYzODM5MzdhZGY0Yjc5OGNhYTZlOGE5ZmJmYTU0N2IxNmQ3NThkNjY2NTgxZjMzYzEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhjMjhhOTdiZjgyOThiYzBkMjNkOGM3NDk0NTJhMzJlNjk0YjY1ZTMwYTk0NzJhMzk1NGFiMzBmZTUzMjRjYWEnLFxuICAgICAgICAnNDBhMzA0NjNhMzMwNTE5MzM3OGZlZGYzMWY3Y2MwZWI3YWU3ODRmMDQ1MWNiOTQ1OWU3MWRjNzNjYmVmOTQ4MicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGVhOTY2NjEzOTUyN2E4YzFkZDk0Y2U0ZjA3MWZkMjNjOGIzNTBjNWE0YmIzMzc0OGM0YmExMTFmYWNjYWUwJyxcbiAgICAgICAgJzYyMGVmYWJiYzhlZTI3ODJlMjRlN2MwY2ZiOTVjNWQ3MzViNzgzYmU5Y2YwZjhlOTU1YWYzNGEzMGU2MmI5NDUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RkMzYyNWZhZWY1YmEwNjA3NDY2OTcxNmJiZDM3ODhkODliZGRlODE1OTU5OTY4MDkyZjc2Y2M0ZWI5YTk3ODcnLFxuICAgICAgICAnN2ExODhmYTM1MjBlMzBkNDYxZGEyNTAxMDQ1NzMxY2E5NDE0NjE5ODI4ODMzOTU5MzdmNjhkMDBjNjQ0YTU3MycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjcxMGQ3OWQ5ZWI5NjIyOTdlNGY2MjMyYjQwZThmN2ZlYjJiYzYzODE0NjE0ZDY5MmMxMmRlNzUyNDA4MjIxZScsXG4gICAgICAgICdlYTk4ZTY3MjMyZDNiMzI5NWQzYjUzNTUzMjExNWNjYWM4NjEyYzcyMTg1MTYxNzUyNmFlNDdhOWM3N2JmYzgyJyxcbiAgICAgIF0sXG4gICAgXSxcbiAgfSxcbiAgbmFmOiB7XG4gICAgd25kOiA3LFxuICAgIHBvaW50czogW1xuICAgICAgW1xuICAgICAgICAnZjkzMDhhMDE5MjU4YzMxMDQ5MzQ0Zjg1Zjg5ZDUyMjliNTMxYzg0NTgzNmY5OWIwODYwMWYxMTNiY2UwMzZmOScsXG4gICAgICAgICczODhmN2IwZjYzMmRlODE0MGZlMzM3ZTYyYTM3ZjM1NjY1MDBhOTk5MzRjMjIzMWI2Y2I5ZmQ3NTg0YjhlNjcyJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyZjhiZGU0ZDFhMDcyMDkzNTViNGE3MjUwYTVjNTEyOGU4OGI4NGJkZGM2MTlhYjdjYmE4ZDU2OWIyNDBlZmU0JyxcbiAgICAgICAgJ2Q4YWMyMjI2MzZlNWUzZDZkNGRiYTlkZGE2YzljNDI2Zjc4ODI3MWJhYjBkNjg0MGRjYTg3ZDNhYTZhYzYyZDYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVjYmRmMDY0NmU1ZGI0ZWFhMzk4ZjM2NWYyZWE3YTBlM2Q0MTliN2UwMzMwZTM5Y2U5MmJkZGVkY2FjNGY5YmMnLFxuICAgICAgICAnNmFlYmNhNDBiYTI1NTk2MGEzMTc4ZDZkODYxYTU0ZGJhODEzZDBiODEzZmRlN2I1YTUwODI2MjgwODcyNjRkYScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWNkNDg0ZTJmMGM3ZjY1MzA5YWQxNzhhOWY1NTlhYmRlMDk3OTY5NzRjNTdlNzE0YzM1ZjExMGRmYzI3Y2NiZScsXG4gICAgICAgICdjYzMzODkyMWIwYTdkOWZkNjQzODA5NzE3NjNiNjFlOWFkZDg4OGE0Mzc1ZjhlMGYwNWNjMjYyYWM2NGY5YzM3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NzRhZTdmODU4YTk0MTFlNWVmNDI0NmI3MGM2NWFhYzU2NDk5ODBiZTVjMTc4OTFiYmVjMTc4OTVkYTAwOGNiJyxcbiAgICAgICAgJ2Q5ODRhMDMyZWI2YjVlMTkwMjQzZGQ1NmQ3YjdiMzY1MzcyZGIxZTJkZmY5ZDZhODMwMWQ3NGM5Yzk1M2M2MWInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YyODc3M2MyZDk3NTI4OGJjN2QxZDIwNWMzNzQ4NjUxYjA3NWZiYzY2MTBlNThjZGRlZWRkZjhmMTk0MDVhYTgnLFxuICAgICAgICAnYWIwOTAyZThkODgwYTg5NzU4MjEyZWI2NWNkYWY0NzNhMWEwNmRhNTIxZmE5MWYyOWI1Y2I1MmRiMDNlZDgxJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNzkyNGQ0ZjdkNDNlYTk2NWE0NjVhZTMwOTVmZjQxMTMxZTU5NDZmM2M4NWY3OWU0NGFkYmNmOGUyN2UwODBlJyxcbiAgICAgICAgJzU4MWUyODcyYTg2YzcyYTY4Mzg0MmVjMjI4Y2M2ZGVmZWE0MGFmMmJkODk2ZDNhNWM1MDRkYzlmZjZhMjZiNTgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RlZmRlYTRjZGI2Nzc3NTBhNDIwZmVlODA3ZWFjZjIxZWI5ODk4YWU3OWI5NzY4NzY2ZTRmYWEwNGEyZDRhMzQnLFxuICAgICAgICAnNDIxMWFiMDY5NDYzNTE2OGU5OTdiMGVhZDJhOTNkYWVjZWQxZjRhMDRhOTVjMGY2Y2ZiMTk5ZjY5ZTU2ZWI3NycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMmI0ZWEwYTc5N2E0NDNkMjkzZWY1Y2ZmNDQ0ZjQ5NzlmMDZhY2ZlYmQ3ZTg2ZDI3NzQ3NTY1NjEzODM4NWI2YycsXG4gICAgICAgICc4NWU4OWJjMDM3OTQ1ZDkzYjM0MzA4M2I1YTFjODYxMzFhMDFmNjBjNTAyNjk3NjNiNTcwYzg1NGU1YzA5YjdhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNTJiYmY0YTRjZGQxMjU2NGY5M2ZhMzMyY2UzMzMzMDFkOWFkNDAyNzFmODEwNzE4MTM0MGFlZjI1YmU1OWQ1JyxcbiAgICAgICAgJzMyMWViNDA3NTM0OGY1MzRkNTljMTgyNTlkZGEzZTFmNGExYjNiMmU3MWIxMDM5YzY3YmQzZDhiY2Y4MTk5OGMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzJmYTIxMDRkNmIzOGQxMWIwMjMwMDEwNTU5ODc5MTI0ZTQyYWI4ZGZlZmY1ZmYyOWRjOWNkYWRkNGVjYWNjM2YnLFxuICAgICAgICAnMmRlMTA2ODI5NWRkODY1YjY0NTY5MzM1YmQ1ZGQ4MDE4MWQ3MGVjZmM4ODI2NDg0MjNiYTc2YjUzMmI3ZDY3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5MjQ4Mjc5YjA5YjRkNjhkYWIyMWE5YjA2NmVkZGE4MzI2M2MzZDg0ZTA5NTcyZTI2OWNhMGNkN2Y1NDUzNzE0JyxcbiAgICAgICAgJzczMDE2ZjdiZjIzNGFhZGU1ZDFhYTcxYmRlYTJiMWZmM2ZjMGRlMmE4ODc5MTJmZmU1NGEzMmNlOTdjYjM0MDInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhZWQ0ZjJiZTNhOGJmMjc4ZTcwMTMyZmIwYmViNzUyMmY1NzBlMTQ0YmY2MTVjMDdlOTk2ZDQ0M2RlZTg3MjknLFxuICAgICAgICAnYTY5ZGNlNGE3ZDZjOThlOGQ0YTFhY2E4N2VmOGQ3MDAzZjgzYzIzMGYzYWZhNzI2YWI0MGU1MjI5MGJlMWM1NScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzQ0ZDEyYzcwNjVkODEyZThhY2YyOGQ3Y2JiMTlmOTAxMWVjZDllOWZkZjI4MWIwZTZhM2I1ZTg3ZDIyZTdkYicsXG4gICAgICAgICcyMTE5YTQ2MGNlMzI2Y2RjNzZjNDU5MjZjOTgyZmRhYzBlMTA2ZTg2MWVkZjYxYzVhMDM5MDYzZjBlMGU2NDgyJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2YTI0NWJmNmRjNjk4NTA0Yzg5YTIwY2ZkZWQ2MDg1MzE1MmI2OTUzMzZjMjgwNjNiNjFjNjVjYmQyNjllNmI0JyxcbiAgICAgICAgJ2UwMjJjZjQyYzJiZDRhNzA4YjNmNTEyNmYxNmEyNGFkOGIzM2JhNDhkMDQyM2I2ZWZkNWU2MzQ4MTAwZDhhODInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE2OTdmZmE2ZmQ5ZGU2MjdjMDc3ZTNkMmZlNTQxMDg0Y2UxMzMwMGIwYmVjMTE0NmY5NWFlNTdmMGQwYmQ2YTUnLFxuICAgICAgICAnYjljMzk4ZjE4NjgwNmY1ZDI3NTYxNTA2ZTQ1NTc0MzNhMmNmMTUwMDllNDk4YWU3YWRlZTlkNjNkMDFiMjM5NicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjA1YmRiMDE5OTgxNzE4Yjk4NmQwZjA3ZTgzNGNiMGQ5ZGViODM2MGZmYjdmNjFkZjk4MjM0NWVmMjdhNzQ3OScsXG4gICAgICAgICcyOTcyZDJkZTRmOGQyMDY4MWE3OGQ5M2VjOTZmZTIzYzI2YmZhZTg0ZmIxNGRiNDNiMDFlMWU5MDU2YjhjNDknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYyZDE0ZGFiNDE1MGJmNDk3NDAyZmRjNDVhMjE1ZTEwZGNiMDFjMzU0OTU5YjEwY2ZlMzFjN2U5ZDg3ZmYzM2QnLFxuICAgICAgICAnODBmYzA2YmQ4Y2M1YjAxMDk4MDg4YTE5NTBlZWQwZGIwMWFhMTMyOTY3YWI0NzIyMzVmNTY0MjQ4M2IyNWVhZicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODBjNjBhZDAwNDBmMjdkYWRlNWI0YjA2YzQwOGU1NmIyYzUwZTlmNTZiOWI4YjQyNWU1NTVjMmY4NjMwOGI2ZicsXG4gICAgICAgICcxYzM4MzAzZjFjYzVjMzBmMjZlNjZiYWQ3ZmU3MmY3MGE2NWVlZDRjYmU3MDI0ZWIxYWEwMWY1NjQzMGJkNTdhJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3YTkzNzVhZDYxNjdhZDU0YWE3NGM2MzQ4Y2M1NGQzNDRjYzVkYzk0ODdkODQ3MDQ5ZDVlYWJiMGZhMDNjOGZiJyxcbiAgICAgICAgJ2QwZTNmYTllY2E4NzI2OTA5NTU5ZTBkNzkyNjkwNDZiZGM1OWVhMTBjNzBjZTJiMDJkNDk5ZWMyMjRkYzdmNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDUyOGVjZDliNjk2YjU0YzkwN2E5ZWQwNDU0NDdhNzliYjQwOGVjMzliNjhkZjUwNGJiNTFmNDU5YmMzZmZjOScsXG4gICAgICAgICdlZWNmNDEyNTMxMzZlNWY5OTk2NmYyMTg4MWZkNjU2ZWJjNDM0NTQwNWM1MjBkYmMwNjM0NjViNTIxNDA5OTMzJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0OTM3MGE0YjVmNDM0MTJlYTI1ZjUxNGU4ZWNkYWQwNTI2NjExNWU0YTdlY2IxMzg3MjMxODA4ZjhiNDU5NjMnLFxuICAgICAgICAnNzU4ZjNmNDFhZmQ2ZWQ0MjhiMzA4MWIwNTEyZmQ2MmE1NGMzZjNhZmJiNWI2NzY0YjY1MzA1MmExMjk0OWM5YScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzdmMjMwOTM2ZWU4OGNiYmQ3M2RmOTMwZDY0NzAyZWY4ODFkODExZTBlMTQ5OGUyZjFjMTNlYjFmYzM0NWQ3NCcsXG4gICAgICAgICc5NThlZjQyYTc4ODZiNjQwMGEwODI2NmU5YmExYjM3ODk2Yzk1MzMwZDk3MDc3Y2JiZThlYjNjNzY3MWM2MGQ2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMmRhYzk5MWNjNGNlNGI5ZWE0NDg4N2U1YzdjMGJjZTU4YzgwMDc0YWI5ZDRkYmFlYjI4NTMxYjc3MzlmNTMwJyxcbiAgICAgICAgJ2UwZGVkYzliM2IyZjhkYWQ0ZGExZjMyZGVjMjUzMWRmOWViNWZiZWIwNTk4ZTRmZDFhMTE3ZGJhNzAzYTNjMzcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzQ2M2IzZDlmNjYyNjIxZmIxYjRiZThmYmJlMjUyMDEyNWEyMTZjZGZjOWRhZTNkZWJjYmE0ODUwYzY5MGQ0NWInLFxuICAgICAgICAnNWVkNDMwZDc4YzI5NmMzNTQzMTE0MzA2ZGQ4NjIyZDdjNjIyZTI3Yzk3MGExZGUzMWNiMzc3YjAxYWY3MzA3ZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjE2ZjgwNDI0NGU0NmUyYTA5MjMyZDRhZmYzYjU5OTc2Yjk4ZmFjMTQzMjhhMmQxYTMyNDk2YjQ5OTk4ZjI0NycsXG4gICAgICAgICdjZWRhYmQ5YjgyMjAzZjdlMTNkMjA2ZmNkZjRlMzNkOTJhNmM1M2MyNmU1Y2NlMjZkNjU3OTk2MmM0ZTMxZGY2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjYWY3NTQyNzJkYzg0NTYzYjAzNTJiN2ExNDMxMWFmNTVkMjQ1MzE1YWNlMjdjNjUzNjllMTVmNzE1MWQ0MWQxJyxcbiAgICAgICAgJ2NiNDc0NjYwZWYzNWY1ZjJhNDFiNjQzZmE1ZTQ2MDU3NWY0ZmE5Yjc5NjIyMzJhNWMzMmY5MDgzMThhMDQ0NzYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzI2MDBjYTRiMjgyY2I5ODZmODVkMGYxNzA5OTc5ZDhiNDRhMDljMDdjYjg2ZDdjMTI0NDk3YmM4NmYwODIxMjAnLFxuICAgICAgICAnNDExOWI4ODc1M2MxNWJkNmE2OTNiMDNmY2RkYmI0NWQ1YWM2YmU3NGFiNWYwZWY0NGIwYmU5NDc1YTdlNGI0MCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzYzNWNhNzJkN2U4NDMyYzMzOGVjNTNjZDEyMjIwYmMwMWM0ODY4NWUyNGY3ZGM4YzYwMmE3NzQ2OTk4ZTQzNScsXG4gICAgICAgICc5MWI2NDk2MDk0ODlkNjEzZDFkNWU1OTBmNzhlNmQ3NGVjZmMwNjFkNTcwNDhiYWQ5ZTc2ZjMwMmM1YjljNjEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc1NGUzMjM5ZjMyNTU3MGNkYmJmNGE4N2RlZWU4YTY2YjdmMmIzMzQ3OWQ0NjhmYmMxYTUwNzQzYmY1NmNjMTgnLFxuICAgICAgICAnNjczZmI4NmU1YmRhMzBmYjNjZDBlZDMwNGVhNDlhMDIzZWUzM2QwMTk3YTY5NWQwYzVkOTgwOTNjNTM2NjgzJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlM2U2YmQxMDcxYTFlOTZhZmY1Nzg1OWM4MmQ1NzBmMDMzMDgwMDY2MWQxYzk1MmY5ZmUyNjk0NjkxZDliOWU4JyxcbiAgICAgICAgJzU5YzllMGJiYTM5NGU3NmY0MGMwYWE1ODM3OWEzY2I2YTVhMjI4Mzk5M2U5MGM0MTY3MDAyYWY0OTIwZTM3ZjUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE4NmI0ODNkMDU2YTAzMzgyNmFlNzNkODhmNzMyOTg1YzRjY2IxZjMyYmEzNWY0YjRjYzQ3ZmRjZjA0YWE2ZWInLFxuICAgICAgICAnM2I5NTJkMzJjNjdjZjc3ZTJlMTc0NDZlMjA0MTgwYWIyMWZiODA5MDg5NTEzOGI0YTRhNzk3Zjg2ZTgwODg4YicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGY5ZDcwYTZiOTg3NmNlNTQ0Yzk4NTYxZjRiZTRmNzI1NDQyZTZkMmI3MzdkOWM5MWE4MzIxNzI0Y2UwOTYzZicsXG4gICAgICAgICc1NWViMmRhZmQ4NGQ2Y2NkNWY4NjJiNzg1ZGMzOWQ0YWIxNTcyMjI3MjBlZjlkYTIxN2I4YzQ1Y2YyYmEyNDE3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1ZWRkNWNjMjNjNTFlODdhNDk3Y2E4MTVkNWRjZTBmOGFiNTI1NTRmODQ5ZWQ4OTk1ZGU2NGM1ZjM0Y2U3MTQzJyxcbiAgICAgICAgJ2VmYWU5YzhkYmMxNDEzMDY2MWU4Y2VjMDMwYzg5YWQwYzEzYzY2YzBkMTdhMjkwNWNkYzcwNmFiNzM5OWE4NjgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzI5MDc5OGMyYjY0NzY4MzBkYTEyZmUwMjI4N2U5ZTc3N2FhM2ZiYTFjMzU1YjE3YTcyMmQzNjJmODQ2MTRmYmEnLFxuICAgICAgICAnZTM4ZGE3NmRjZDQ0MDYyMTk4OGQwMGJjZjc5YWYyNWQ1YjI5YzA5NGRiMmEyMzE0NmQwMDNhZmQ0MTk0M2U3YScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWYzYzQyM2E5NWQ5ZjViMzA1NDc1NGVmYTE1MGFjMzljZDI5NTUyZmUzNjAyNTczNjJkZmRlY2VmNDA1M2I0NScsXG4gICAgICAgICdmOThhM2ZkODMxZWIyYjc0OWE5M2IwZTZmMzVjZmI0MGM4Y2Q1YWE2NjdhMTU1ODFiYzJmZWRlZDQ5OGZkOWM2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NjZkYmIyNGQxMzRlNzQ1Y2NjYWEyOGM5OWJmMjc0OTA2YmI2NmIyNmRjZjk4ZGY4ZDJmZWQ1MGQ4ODQyNDlhJyxcbiAgICAgICAgJzc0NGIxMTUyZWFjYmU1ZTM4ZGNjODg3OTgwZGEzOGI4OTc1ODRhNjVmYTA2Y2VkZDJjOTI0Zjk3Y2JhYzU5OTYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzU5ZGJmNDZmOGM5NDc1OWJhMjEyNzdjMzM3ODRmNDE2NDVmN2I0NGY2YzU5NmE1OGNlOTJlNjY2MTkxYWJlM2UnLFxuICAgICAgICAnYzUzNGFkNDQxNzVmYmMzMDBmNGVhNmNlNjQ4MzA5YTA0MmNlNzM5YTc5MTk3OThjZDg1ZTIxNmM0YTMwN2Y2ZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjEzYWRhOTUxMDNjNDUzNzMwNWU2OTFlNzRlOWE0YThkZDY0N2U3MTFhOTVlNzNjYjYyZGM2MDE4Y2ZkODdiOCcsXG4gICAgICAgICdlMTM4MTdiNDRlZTE0ZGU2NjNiZjRiYzgwODM0MWYzMjY5NDllMjFhNmE3NWMyNTcwNzc4NDE5YmRhZjU3MzNkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NzU0YjRmYTBlOGFjZWQwNmQ0MTY3YTJjNTljY2E0Y2RhMTg2OWMwNmViYWRmYjY0ODg1NTAwMTVhODg1MjJjJyxcbiAgICAgICAgJzMwZTkzZTg2NGU2NjlkODIyMjRiOTY3YzMwMjBiOGZhOGQxZTRlMzUwYjZjYmNjNTM3YTQ4YjU3ODQxMTYzYTInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzk0OGRjYWRmNTk5MGUwNDhhYTM4NzRkNDZhYmVmOWQ3MDE4NThmOTVkZTgwNDFkMmE2ODI4Yzk5ZTIyNjI1MTknLFxuICAgICAgICAnZTQ5MWE0MjUzN2Y2ZTU5N2Q1ZDI4YTMyMjRiMWJjMjVkZjkxNTRlZmJkMmVmMWQyY2JiYTJjYWU1MzQ3ZDU3ZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzk2MjQxNDQ1MGM3NmMxNjg5YzdiNDhmODIwMmVjMzdmYjIyNGNmNWFjMGJmYTE1NzAzMjhhOGEzZDdjNzdhYicsXG4gICAgICAgICcxMDBiNjEwZWM0ZmZiNDc2MGQ1YzFmYzEzM2VmNmY2YjEyNTA3YTA1MWYwNGFjNTc2MGFmYTViMjlkYjgzNDM3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNTE0MDg3ODM0OTY0YjU0YjE1YjE2MDY0NGQ5MTU0ODVhMTY5NzcyMjViODg0N2JiMGRkMDg1MTM3ZWM0N2NhJyxcbiAgICAgICAgJ2VmMGFmYmIyMDU2MjA1NDQ4ZTE2NTJjNDhlODEyN2ZjNjAzOWU3N2MxNWMyMzc4YjdlN2QxNWEwZGUyOTMzMTEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QzY2MzMGFkNmI0ODNlNGJjNzljZTJjOWRkOGJjNTQ5OTNlOTQ3ZWI4ZGY3ODdiNDQyOTQzZDNmN2I1MjdlYWYnLFxuICAgICAgICAnOGIzNzhhMjJkODI3Mjc4ZDg5YzVlOWJlOGY5NTA4YWUzYzJhZDQ2MjkwMzU4NjMwYWZiMzRkYjA0ZWVkZTBhNCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTYyNGQ4NDc4MDczMjg2MGNlMWM3OGZjYmZlZmUwOGIyYjI5ODIzZGI5MTNmNjQ5Mzk3NWJhMGZmNDg0NzYxMCcsXG4gICAgICAgICc2ODY1MWNmOWI2ZGE5MDNlMDkxNDQ0OGM2Y2Q5ZDRjYTg5Njg3OGY1MjgyYmU0YzhjYzA2ZTJhNDA0MDc4NTc1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3MzNjZTgwZGE5NTVhOGEyNjkwMmM5NTYzM2U2MmE5ODUxOTI0NzRiNWFmMjA3ZGE2ZGY3YjRmZDVmYzYxY2Q0JyxcbiAgICAgICAgJ2Y1NDM1YTJiZDJiYWRmN2Q0ODVhNGQ4YjhkYjlmY2NlM2UxZWY4ZTAyMDFlNDU3OGM1NDY3M2JjMWRjNWVhMWQnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE1ZDk0NDEyNTQ5NDUwNjRjZjFhMWMzM2JiZDNiNDlmODk2NmM1MDkyMTcxZTY5OWVmMjU4ZGZhYjgxYzA0NWMnLFxuICAgICAgICAnZDU2ZWIzMGI2OTQ2M2U3MjM0ZjUxMzdiNzNiODQxNzc0MzQ4MDBiYWNlYmZjNjg1ZmMzN2JiZTllZmU0MDcwZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTFkMGZjZjJlYzlkZTY3NWI2MTIxMzZlNWNlNzBkMjcxYzIxNDE3YzlkMmI4YWFhYWMxMzg1OTlkMDcxNzk0MCcsXG4gICAgICAgICdlZGQ3N2Y1MGJjYjVhM2NhYjJlOTA3MzczMDk2NjdmMjY0MTQ2MmE1NDA3MGYzZDUxOTIxMmQzOWMxOTdhNjI5JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMjJmYmUxNWMwYWY4Y2NjNTc4MGMwNzM1Zjg0ZGJlOWE3OTBiYWRlZTgyNDVjMDZjN2NhMzczMzFjYjM2OTgwJyxcbiAgICAgICAgJ2E4NTViYWJhZDVjZDYwYzg4YjQzMGE2OWY1M2ExYTdhMzgyODkxNTQ5NjQ3OTliZTQzZDA2ZDc3ZDMxZGEwNicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzExMDkxZGQ5ODYwZThlMjBlZTEzNDczYzExNTVmNWY2OTYzNWUzOTQ3MDRlYWE3NDAwOTQ1MjI0NmNmYTliMycsXG4gICAgICAgICc2NmRiNjU2Zjg3ZDFmMDRmZmZkMWYwNDc4OGMwNjgzMDg3MWVjNWE2NGZlZWU2ODViZDgwZjBiMTI4NmQ4Mzc0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNGMxZmQwNGQzMDFiZTg5YjMxYzA0NDJkM2U2YWMyNDg4MzkyOGI0NWE5MzQwNzgxODY3ZDQyMzJlYzJkYmRmJyxcbiAgICAgICAgJzk0MTQ2ODVlOTdiMWI1OTU0YmQ0NmY3MzAxNzQxMzZkNTdmMWNlZWI0ODc0NDNkYzUzMjE4NTdiYTczYWJlZScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjIxOWVhNWQ2YjU0NzAxYzFjMTRkZTViNTU3ZWI0MmE4ZDEzZjNhYmJjZDA4YWZmY2MyYTVlNmIwNDliOGQ2MycsXG4gICAgICAgICc0Y2I5NTk1N2U4M2Q0MGIwZjczYWY0NTQ0Y2NjZjZiMWY0YjA4ZDNjMDdiMjdmYjhkOGMyOTYyYTQwMDc2NmQxJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkN2I4NzQwZjc0YThmYmFhYjFmNjgzZGI4ZjQ1ZGUyNjU0M2E1NDkwYmNhNjI3MDg3MjM2OTEyNDY5YTBiNDQ4JyxcbiAgICAgICAgJ2ZhNzc5NjgxMjhkOWM5MmVlMTAxMGYzMzdhZDQ3MTdlZmYxNWRiNWVkM2MwNDliMzQxMWUwMzE1ZWFhNDU5M2InLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMyZDMxYzIyMmY4ZjZmMGVmODZmN2M5OGQzYTMzMzVlYWQ1YmNkMzJhYmRkOTQyODlmZTRkMzA5MWFhODI0YmYnLFxuICAgICAgICAnNWYzMDMyZjU4OTIxNTZlMzljY2QzZDc5MTViOWUxZGEyZTZkYWM5ZTZmMjZlOTYxMTE4ZDE0Yjg0NjJlMTY2MScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzQ2MWYzNzE5MTRhYjMyNjcxMDQ1YTE1NWQ5ODMxZWE4NzkzZDc3Y2Q1OTU5MmM0MzQwZjg2Y2JjMTgzNDdiNScsXG4gICAgICAgICc4ZWMwYmEyMzhiOTZiZWMwY2JkZGRjYWUwYWE0NDI1NDJlZWUxZmY1MGM5ODZlYTZiMzk4NDdiM2NjMDkyZmY2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlZTA3OWFkYjFkZjE4NjAwNzQzNTZhMjVhYTM4MjA2YTZkNzE2YjJjM2U2NzQ1M2QyODc2OThiYWQ3YjJiMmQ2JyxcbiAgICAgICAgJzhkYzI0MTJhYWZlM2JlNWM0YzVmMzdlMGVjYzVmOWY2YTQ0Njk4OWFmMDRjNGUyNWViYWFjNDc5ZWMxYzhjMWUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE2ZWM5M2U0NDdlYzgzZjA0NjdiMTgzMDJlZTYyMGY3ZTY1ZGUzMzE4NzRjOWRjNzJiZmQ4NjE2YmE5ZGE2YjUnLFxuICAgICAgICAnNWU0NjMxMTUwZTYyZmI0MGQwZThjMmE3Y2E1ODA0YTM5ZDU4MTg2YTUwZTQ5NzEzOTYyNjc3OGUyNWIwNjc0ZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWFhNWY5ODBjMjQ1ZjZmMDM4OTc4MjkwYWZhNzBiNmJkODg1NTg5N2Y5OGI2YWE0ODViOTYwNjVkNTM3YmQ5OScsXG4gICAgICAgICdmNjVmNWQzZTI5MmMyZTA4MTlhNTI4MzkxYzk5NDYyNGQ3ODQ4NjlkN2U2ZWE2N2ZiMTgwNDEwMjRlZGMwN2RjJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3OGM5NDA3NTQ0YWMxMzI2OTJlZTE5MTBhMDI0Mzk5NThhZTA0ODc3MTUxMzQyZWE5NmM0YjZiMzVhNDlmNTEnLFxuICAgICAgICAnZjNlMDMxOTE2OWViOWI4NWQ1NDA0Nzk1NTM5YTVlNjhmYTFmYmQ1ODNjMDY0ZDI0NjJiNjc1ZjE5NGEzZGRiNCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDk0ZjRiZTIxOWExYTc3MDE2ZGNkODM4NDMxYWVhMDAwMWNkYzhhZTdhNmZjNjg4NzI2NTc4ZDk3MDI4NTdhNScsXG4gICAgICAgICc0MjI0MmE5NjkyODNhNWYzMzliYTdmMDc1ZTM2YmEyYWY5MjVjZTMwZDc2N2VkNmU1NWY0YjAzMTg4MGQ1NjJjJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhNTk4YTgwMzBkYTZkODZjNmJjN2YyZjUxNDRlYTU0OWQyODIxMWVhNThmYWE3MGViZjRjMWU2NjVjMWZlOWI1JyxcbiAgICAgICAgJzIwNGI1ZDZmODQ4MjJjMzA3ZTRiNGE3MTQwNzM3YWVjMjNmYzYzYjY1YjM1Zjg2YTEwMDI2ZGJkMmQ4NjRlNmInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M0MTkxNjM2NWFiYjJiNWQwOTE5MmY1ZjJkYmVhZmVjMjA4ZjAyMGYxMjU3MGExODRkYmFkYzNlNTg1OTU5OTcnLFxuICAgICAgICAnNGYxNDM1MWQwMDg3ZWZhNDlkMjQ1YjMyODk4NDk4OWQ1Y2FmOTQ1MGYzNGJmYzBlZDE2ZTk2YjU4ZmE5OTEzJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NDFkNjA2M2E1ODZmYTQ3NWE3MjQ2MDRkYTAzYmM1YjkyYTJlMGQyZTBhMzZhY2ZlNGM3M2E1NTE0NzQyODgxJyxcbiAgICAgICAgJzczODY3ZjU5YzA2NTllODE5MDRmOWExYzc1NDM2OThlNjI1NjJkNjc0NGMxNjljZTdhMzZkZTAxYThkNjE1NCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNWU5NWJiMzk5YTY5NzFkMzc2MDI2OTQ3Zjg5YmRlMmYyODJiMzM4MTA5MjhiZTRkZWQxMTJhYzRkNzBlMjBkNScsXG4gICAgICAgICczOWYyM2YzNjY4MDkwODViZWViZmM3MTE4MTMxMzc3NWE5OWM5YWVkN2Q4YmEzOGIxNjEzODRjNzQ2MDEyODY1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNmU0NjQxYTUzOTQ4ZmQ0NzZjMzlmOGE5OWZkOTc0ZTVlYzA3NTY0YjUzMTVkOGJmOTk0NzFiY2EwZWYyZjY2JyxcbiAgICAgICAgJ2QyNDI0YjFiMWFiZTRlYjgxNjQyMjdiMDg1YzlhYTk0NTZlYTEzNDkzZmQ1NjNlMDZmZDUxY2Y1Njk0Yzc4ZmMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzMzNjU4MWVhN2JmYmJiMjkwYzE5MWEyZjUwN2E0MWNmNTY0Mzg0MjE3MGU5MTRmYWVhYjI3YzJjNTc5ZjcyNicsXG4gICAgICAgICdlYWQxMjE2ODU5NWZlMWJlOTkyNTIxMjliNmU1NmIzMzkxZjdhYjE0MTBjZDFlMGVmM2RjZGNhYmQyZmRhMjI0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4YWI4OTgxNmRhZGZkNmI2YTFmMjYzNGZjZjAwZWM4NDAzNzgxMDI1ZWQ2ODkwYzQ4NDk3NDI3MDZiZDQzZWRlJyxcbiAgICAgICAgJzZmZGNlZjA5ZjJmNmQwYTA0NGU2NTRhZWY2MjQxMzZmNTAzZDQ1OWMzZTg5ODQ1ODU4YTQ3YTkxMjljZGQyNGUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzFlMzNmMWE3NDZjOWM1Nzc4MTMzMzQ0ZDkyOTlmY2FhMjBiMDkzOGU4YWNmZjI1NDRiYjQwMjg0YjhjNWZiOTQnLFxuICAgICAgICAnNjA2NjAyNTdkZDExYjNhYTljOGVkNjE4ZDI0ZWRmZjIzMDZkMzIwZjFkMDMwMTBlMzNhN2QyMDU3ZjNiM2I2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NWI3YzFkY2IzY2VjMWI3ZWU3ZjMwZGVkNzlkZDIwYTBlZDFmNGNjMThjYmNmY2ZhNDEwMzYxZmQ4ZjA4ZjMxJyxcbiAgICAgICAgJzNkOThhOWNkZDAyNmRkNDNmMzkwNDhmMjVhODg0N2Y0ZmNhZmFkMTg5NWQ3YTYzM2M2ZmVkM2MzNWU5OTk1MTEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzI5ZGY5ZmJkOGQ5ZTQ2NTA5Mjc1ZjRiMTI1ZDZkNDVkN2ZiZTlhM2I4NzhhN2FmODcyYTI4MDA2NjFhYzVmNTEnLFxuICAgICAgICAnYjRjNGZlOTljNzc1YTYwNmUyZDg4NjIxNzkxMzlmZmRhNjFkYzg2MWMwMTllNTVjZDI4NzZlYjJhMjdkODRiJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhMGIxY2FlMDZiMGE4NDdhM2ZlYTZlNjcxYWFmOGFkZmRmZTU4Y2EyZjc2ODEwNWM4MDgyYjJlNDQ5ZmNlMjUyJyxcbiAgICAgICAgJ2FlNDM0MTAyZWRkZTA5NThlYzRiMTlkOTE3YTZhMjhlNmI3MmRhMTgzNGFmZjBlNjUwZjA0OTUwM2EyOTZjZjInLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRlOGNlYWZiOWIzZTlhMTM2ZGM3ZmY2N2U4NDAyOTViNDk5ZGZiM2IyMTMzZTRiYTExM2YyZTRjMGUxMjFlNScsXG4gICAgICAgICdjZjIxNzQxMThjOGI2ZDdhNGI0OGY2ZDUzNGNlNWM3OTQyMmMwODZhNjM0NjA1MDJiODI3Y2U2MmEzMjY2ODNjJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkMjRhNDRlMDQ3ZTE5YjZmNWFmYjgxYzdjYTJmNjkwODBhNTA3NjY4OWEwMTA5MTlmNDI3MjVjMmI3ODlhMzNiJyxcbiAgICAgICAgJzZmYjhkNTU5MWI0NjZmOGZjNjNkYjUwZjFjMGYxYzY5MDEzZjk5Njg4N2I4MjQ0ZDJjZGVjNDE3YWZlYThmYTMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VhMDE2MDZhN2E2YzljZGQyNDlmZGZjZmFjYjk5NTg0MDAxZWRkMjhhYmJhYjc3YjUxMDRlOThlOGUzYjM1ZDQnLFxuICAgICAgICAnMzIyYWY0OTA4YzczMTJiMGNmYmZlMzY5ZjdhN2IzY2RiN2Q0NDk0YmMyODIzNzAwY2ZkNjUyMTg4YTNlYTk4ZCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYWY4YWRkYmYyYjY2MWM4YTZjNjMyODY1NWViOTY2NTEyNTIwMDdkOGM1ZWEzMWJlNGFkMTk2ZGU4Y2UyMTMxZicsXG4gICAgICAgICc2NzQ5ZTY3YzAyOWI4NWY1MmEwMzRlYWZkMDk2ODM2YjI1MjA4MTg2ODBlMjZhYzhmM2RmYmNkYjcxNzQ5NzAwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlM2FlMTk3NDU2NmNhMDZjYzUxNmQ0N2UwZmIxNjVhNjc0YTNkYWJjZmNhMTVlNzIyZjBlMzQ1MGY0NTg4OScsXG4gICAgICAgICcyYWVhYmU3ZTQ1MzE1MTAxMTYyMTdmMDdiZjRkMDczMDBkZTk3ZTQ4NzRmODFmNTMzNDIwYTcyZWViMGJkNmE0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1OTFlZTM1NTMxM2Q5OTcyMWNmNjk5M2ZmZWQxZTNlMzAxOTkzZmYzZWQyNTg4MDIwNzVlYThjZWQzOTdlMjQ2JyxcbiAgICAgICAgJ2IwZWE1NThhMTEzYzMwYmVhNjBmYzQ3NzU0NjBjNzkwMWZmMGIwNTNkMjVjYTJiZGVlZTk4ZjFhNGJlNWQxOTYnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzExMzk2ZDU1ZmRhNTRjNDlmMTlhYTk3MzE4ZDhkYTYxZmE4NTg0ZTQ3YjA4NDk0NTA3N2NmMDMyNTViNTI5ODQnLFxuICAgICAgICAnOTk4Yzc0YThjZDQ1YWMwMTI4OWQ1ODMzYTdiZWI0NzQ0ZmY1MzZiMDFiMjU3YmU0YzU3NjdiZWE5M2VhNTdhNCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnM2M1ZDJhMWJhMzljNWExNzkwMDAwNzM4YzllMGM0MGI4ZGNkZmQ1NDY4NzU0YjY0MDU1NDAxNTdlMDE3YWE3YScsXG4gICAgICAgICdiMjI4NDI3OTk5NWEzNGUyZjlkNGRlNzM5NmZjMThiODBmOWI4YjlmZGQyNzBmNjY2MWY3OWNhNGM4MWJkMjU3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjYzg3MDRiOGE2MGEwZGVmYTNhOTlhNzI5OWYyZTljM2ZiYzM5NWFmYjA0YWMwNzg0MjVlZjhhMTc5M2NjMDMwJyxcbiAgICAgICAgJ2JkZDQ2MDM5ZmVlZDE3ODgxZDFlMDg2MmRiMzQ3ZjhjZjM5NWI3NGZjNGJjZGM0ZTk0MGI3NGUzYWMxZjFiMTMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M1MzNlNGY3ZWE4NTU1YWFjZDk3NzdhYzVjYWQyOWI5N2RkNGRlZmNjYzUzZWU3ZWEyMDQxMTliMjg4OWIxOTcnLFxuICAgICAgICAnNmYwYTI1NmJjNWVmZGY0MjlhMmZiNjI0MmYxYTQzYTJkOWI5MjViYjRhNGIzYTI2YmI4ZTBmNDVlYjU5NjA5NicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzE0ZjhmMmNjYjI3ZDZmMTA5ZjZkMDhkMDNjYzk2YTY5YmE4YzM0ZWVjMDdiYmNmNTY2ZDQ4ZTMzZGE2NTkzJyxcbiAgICAgICAgJ2MzNTlkNjkyM2JiMzk4ZjdmZDQ0NzNlMTZmZTFjMjg0NzViNzQwZGQwOTgwNzVlNmMwZTg2NDkxMTNkYzNhMzgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E2Y2JjMzA0NmJjNmE0NTBiYWMyNDc4OWZhMTcxMTVhNGM5NzM5ZWQ3NWY4ZjIxY2U0NDFmNzJlMGI5MGU2ZWYnLFxuICAgICAgICAnMjFhZTdmNDY4MGU4ODliYjEzMDYxOWUyYzBmOTVhMzYwY2ViNTczYzcwNjAzMTM5ODYyYWZkNjE3ZmE5YjlmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNDdkNmQ5YTAyYzQ4OTI3ZWJmYjg2YzEzNTliMWNhZjEzMGEzYzAyNjdkMTFjZTYzNDRiMzlmOTlkNDNjYzM4JyxcbiAgICAgICAgJzYwZWE3ZjYxYTM1MzUyNGQxYzk4N2Y2ZWNlYzkyZjA4NmQ1NjVhYjY4Nzg3MGNiMTI2ODlmZjFlMzFjNzQ0NDgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhNjU0NWQyMTgxZGI4ZDk4M2Y3ZGNiMzc1ZWY1ODY2ZDQ3YzY3YjFiZjMxYzhjZjg1NWVmNzQzN2I3MjY1NmEnLFxuICAgICAgICAnNDliOTY3MTVhYjY4NzhhNzllNzhmMDdjZTU2ODBjNWQ2NjczMDUxYjQ5MzViZDg5N2ZlYTgyNGI3N2RjMjA4YScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzQwNzQ3Y2M5ZDAxMmNiMWExM2I4MTQ4MzA5YzZkZTdlYzI1ZDY5NDVkNjU3MTQ2YjlkNTk5NGI4ZmViMTExMScsXG4gICAgICAgICc1Y2E1NjA3NTNiZTJhMTJmYzZkZTZjYWYyY2I0ODk1NjVkYjkzNjE1NmI5NTE0ZTFiYjVlODMwMzdlMGZhMmQ0JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ZTQyYzhlYzgyYzk5Nzk4Y2NmM2E2MTBiZTg3MGU3ODMzOGM3ZjcxMzM0OGJkMzRjODIwM2VmNDAzN2YzNTAyJyxcbiAgICAgICAgJzc1NzFkNzRlZTVlMGZiOTJhN2E4YjMzYTA3NzgzMzQxYTU0OTIxNDRjYzU0YmNjNDBhOTQ0NzM2OTM2MDY0MzcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM3NzVhYjcwODliYzZhZjgyM2FiYTJlMWFmNzBiMjM2ZDI1MWNhZGIwYzg2NzQzMjg3NTIyYTFiM2IwZGVkZWEnLFxuICAgICAgICAnYmU1MmQxMDdiY2ZhMDlkOGJjYjk3MzZhODI4Y2ZhN2ZhYzhkYjE3YmY3YTc2YTJjNDJhZDk2MTQwOTAxOGNmNycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnY2VlMzFjYmY3ZTM0ZWMzNzlkOTRmYjgxNGQzZDc3NWFkOTU0NTk1ZDEzMTRiYTg4NDY5NTllM2U4MmY3NGUyNicsXG4gICAgICAgICc4ZmQ2NGExNGMwNmI1ODljMjZiOTQ3YWUyYmNmNmJmYTAxNDllZjBiZTE0ZWQ0ZDgwZjQ0OGEwMWM0M2IxYzZkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiNGY5ZWFlYTA5YjY5MTc2MTlmNmVhNmE0ZWI1NDY0ZWZkZGI1OGZkNDViMWViZWZjZGMxYTAxZDA4YjQ3OTg2JyxcbiAgICAgICAgJzM5ZTVjOTkyNWI1YTU0YjA3NDMzYTRmMThjNjE3MjZmOGJiMTMxYzAxMmNhNTQyZWIyNGE4YWMwNzIwMDY4MmEnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q0MjYzZGZjM2QyZGY5MjNhMDE3OWE0ODk2NmQzMGNlODRlMjUxNWFmYzNkY2NjMWI3NzkwNzc5MmViY2M2MGUnLFxuICAgICAgICAnNjJkZmFmMDdhMGY3OGZlYjMwZTMwZDYyOTU4NTNjZTE4OWUxMjc3NjBhZDZjZjdmYWUxNjRlMTIyYTIwOGQ1NCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDg0NTc1MjQ4MjBmYTY1YTRmOGQzNWViNjkzMDg1N2MwMDMyYWNjMGE0YTJkZTQyMjIzM2VlZGE4OTc2MTJjNCcsXG4gICAgICAgICcyNWE3NDhhYjM2Nzk3OWQ5ODczM2MzOGExZmExYzJlN2RjNmNjMDdkYjJkNjBhOWFlN2E3NmFhYTQ5YmQwZjc3JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZmVlZWYxODgxMTAxZjJjYjExNjQ0ZjNhMmFmZGZjMjA0NWUxOTkxOTE1MjkyM2YzNjdhMTc2N2MxMWNjZWRhJyxcbiAgICAgICAgJ2VjZmI3MDU2Y2YxZGUwNDJmOTQyMGJhYjM5Njc5M2MwYzM5MGJkZTc0YjRiYmRmZjE2YTgzYWUwOWE5YTc1MTcnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzZkN2VmNmIxNzU0M2Y4MzczYzU3M2Y0NGUxZjM4OTgzNWQ4OWJjYmM2MDYyY2VkMzZjODJkZjgzYjhmYWU4NTknLFxuICAgICAgICAnY2Q0NTBlYzMzNTQzODk4NmRmZWZhMTBjNTdmZWE5YmNjNTIxYTA5NTliMmQ4MGJiZjc0YjE5MGRjYTcxMmQxMCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTc1NjA1ZDU5MTAyYTVhMjY4NDUwMGQzYjk5MWYyZTNmM2M4OGI5MzIyNTU0NzAzNWFmMjVhZjY2ZTA0NTQxZicsXG4gICAgICAgICdmNWM1NDc1NGE4ZjcxZWU1NDBiOWI0ODcyODQ3M2UzMTRmNzI5YWM1MzA4YjA2OTM4MzYwOTkwZTJiZmFkMTI1JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlYjk4NjYwZjRjNGRmYWEwNmEyYmU0NTNkNTAyMGJjOTlhMGMyZTYwYWJlMzg4NDU3ZGQ0M2ZlZmIxZWQ2MjBjJyxcbiAgICAgICAgJzZjYjlhODg3NmQ5Y2I4NTIwNjA5YWYzYWRkMjZjZDIwYTBhN2NkOGE5NDExMTMxY2U4NWY0NDEwMDA5OTIyM2UnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzEzZTg3YjAyN2Q4NTE0ZDM1OTM5ZjJlNjg5MmIxOTkyMjE1NDU5Njk0MTg4ODMzNmRjMzU2M2UzYjhkYmE5NDInLFxuICAgICAgICAnZmVmNWEzYzY4MDU5YTZkZWM1ZDYyNDExNGJmMWU5MWFhYzJiOWRhNTY4ZDZhYmViMjU3MGQ1NTY0NmI4YWRmMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWUxNjMwMjZlOWZkNmZlMDE3YzM4ZjA2YTViZTZmYzEyNTQyNGIzNzFjZTI3MDhlN2JmNDQ5MTY5MWU1NzY0YScsXG4gICAgICAgICcxYWNiMjUwZjI1NWRkNjFjNDNkOTRjY2M2NzBkMGY1OGY0OWFlM2ZhMTViOTY2MjNlNTQzMGRhMGFkNmM2MmIyJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiMjY4ZjVlZjlhZDUxZTRkNzhkZTNhNzUwYzJkYzg5YjFlNjI2ZDQzNTA1ODY3OTk5OTMyZTVkYjMzYWYzZDgwJyxcbiAgICAgICAgJzVmMzEwZDRiM2M5OWI5ZWJiMTlmNzdkNDFjMWRlZTAxOGNmMGQzNGZkNDE5MTYxNDAwM2U5NDVhMTIxNmU0MjMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ZmMDdmMzExOGE5ZGYwMzVlOWZhZDg1ZWI2YzdiZmU0MmIwMmYwMWNhOTljZWVhM2JmN2ZmZGJhOTNjNDc1MGQnLFxuICAgICAgICAnNDM4MTM2ZDYwM2U4NThhM2E1YzQ0MGMzOGVjY2JhZGRjMWQyOTQyMTE0ZTJlZGRkNDc0MGQwOThjZWQxZjBkOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGQ4Yjk4NTVjN2MwNTJhMzQxNDZmZDIwZmZiNjU4YmVhNGI5ZjY5ZTBkODI1ZWJlYzE2ZThjM2NlMmI1MjZhMScsXG4gICAgICAgICdjZGI1NTllZWRjMmQ3OWY5MjZiYWY0NGZiODRlYTRkNDRiY2Y1MGZlZTUxZDdjZWIzMGUyZTdmNDYzMDM2NzU4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1MmRiMGI1Mzg0ZGZiZjA1YmZhOWQ0NzJkN2FlMjZkZmU0Yjg1MWNlY2E5MWIxZWJhNTQyNjMxODBkYTMyYjYzJyxcbiAgICAgICAgJ2MzYjk5N2QwNTBlZTVkNDIzZWJhZjY2YTZkYjlmNTdiMzE4MGM5MDI4NzU2NzlkZTkyNGI2OWQ4NGE3YjM3NScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTYyZjk0OTBkM2Q1MWRhNjM5NWVmZDI0ZTgwOTE5Y2M3ZDBmMjljM2YzZmE0OGM2ZmZmNTQzYmVjYmQ0MzM1MicsXG4gICAgICAgICc2ZDg5YWQ3YmE0ODc2YjBiMjJjMmNhMjgwYzY4Mjg2MmYzNDJjODU5MWYxZGFmNTE3MGUwN2JmZDljY2FmYTdkJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3ZjMwZWEyNDc2YjM5OWI0OTU3NTA5Yzg4Zjc3ZDAxOTFhZmEyZmY1Y2I3YjE0ZmQ2ZDhlN2Q2NWFhYWIxMTkzJyxcbiAgICAgICAgJ2NhNWVmN2Q0YjIzMWM5NGMzYjE1Mzg5YTVmNjMxMWU5ZGFmZjdiYjY3YjEwM2U5ODgwZWY0YmZmNjM3YWNhZWMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUwOThmZjFlMWQ5ZjE0ZmI0NmEyMTBmYWRhNmM5MDNmZWYwZmI3YjRhMWRkMWQ5YWM2MGEwMzYxODAwYjdhMDAnLFxuICAgICAgICAnOTczMTE0MWQ4MWZjOGY4MDg0ZDM3YzZlNzU0MjAwNmIzZWUxYjQwZDYwZGZlNTM2MmE1YjEzMmZkMTdkZGMwJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMmI3OGM3ZGU5ZWU1MTJhNzI4OTViZTZiOWNiZWZhNmUyZjNjNGNjY2U0NDVjOTZiOWYyYzgxZTI3NzhhZDU4JyxcbiAgICAgICAgJ2VlMTg0OWY1MTNkZjcxZTMyZWZjMzg5NmVlMjgyNjBjNzNiYjgwNTQ3YWUyMjc1YmE0OTcyMzc3OTRjODc1M2MnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UyY2I3NGZkZGM4ZTlmYmNkMDc2ZWVmMmE3YzcyYjBjZTM3ZDUwZjA4MjY5ZGZjMDc0YjU4MTU1MDU0N2E0ZjcnLFxuICAgICAgICAnZDNhYTJlZDcxYzlkZDIyNDdhNjJkZjA2MjczNmViMGJhZGRlYTllMzYxMjJkMmJlODY0MWFiY2IwMDVjYzRhNCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODQzODQ0NzU2NmQ0ZDdiZWRhZGMyOTk0OTZhYjM1NzQyNjAwOWEzNWYyMzVjYjE0MWJlMGQ5OWNkMTBhZTNhOCcsXG4gICAgICAgICdjNGUxMDIwOTE2OTgwYTRkYTVkMDFhYzVlNmFkMzMwNzM0ZWYwZDc5MDY2MzFjNGYyMzkwNDI2YjJlZGQ3OTFmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0MTYyZDQ4OGI4OTQwMjAzOWI1ODRjNmZjNmMzMDg4NzA1ODdkOWM0NmY2NjBiODc4YWI2NWM4MmM3MTFkNjdlJyxcbiAgICAgICAgJzY3MTYzZTkwMzIzNjI4OWY3NzZmMjJjMjVmYjhhM2FmYzE3MzJmMmI4NGI0ZTk1ZGJkYTQ3YWU1YTA4NTI2NDknLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzNmYWQzZmE4NGNhZjBmMzRmMGY4OWJmZDJkY2Y1NGZjMTc1ZDc2N2FlYzNlNTA2ODRmM2JhNGE0YmY1ZjY4M2QnLFxuICAgICAgICAnY2QxYmM3Y2I2Y2M0MDdiYjJmMGNhNjQ3YzcxOGE3MzBjZjcxODcyZTdkMGQyYTUzZmEyMGVmY2RmZTYxODI2JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2NzRmMjYwMGEzMDA3YTAwNTY4YzFhN2NlMDVkMDgxNmMxZmI4NGJmMTM3MDc5OGYxYzY5NTMyZmFlYjFhODZiJyxcbiAgICAgICAgJzI5OWQyMWY5NDEzZjMzYjNlZGY0M2IyNTcwMDQ1ODBiNzBkYjU3ZGEwYjE4MjI1OWUwOWVlY2M2OWUwZDM4YTUnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QzMmY0ZGE1NGFkZTc0YWJiODFiODE1YWQxZmIzYjI2M2Q4MmQ2YzY5MjcxNGJjZmY4N2QyOWJkNWVlOWYwOGYnLFxuICAgICAgICAnZjk0MjllNzM4YjhlNTNiOTY4ZTk5MDE2YzA1OTcwNzc4MmUxNGY0NTM1MzU5ZDU4MmZjNDE2OTEwYjNlZWE4NycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzBlNGU2NzA0MzUzODU1NTZlNTkzNjU3MTM1ODQ1ZDM2ZmJiNjkzMWY3MmIwOGNiMWVkOTU0ZjFlM2NlM2ZmNicsXG4gICAgICAgICc0NjJmOWJjZTYxOTg5ODYzODQ5OTM1MDExM2JiYzliMTBhODc4ZDM1ZGE3MDc0MGRjNjk1YTU1OWViODhkYjdiJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiZTIwNjIwMDNjNTFjYzMwMDQ2ODI5MDQzMzBlNGRlZTdmM2RjZDEwYjAxZTU4MGJmMTk3MWIwNGQ0Y2FkMjk3JyxcbiAgICAgICAgJzYyMTg4YmM0OWQ2MWU1NDI4NTczZDQ4YTc0ZTFjNjU1YjFjNjEwOTA5MDU2ODJhMGQ1NTU4ZWQ3MmRjY2I5YmMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzkzMTQ0NDIzYWNlMzQ1MWVkMjllMGZiOWFjMmFmMjExY2I2ZTg0YTYwMWRmNTk5M2M0MTk4NTlmZmY1ZGYwNGEnLFxuICAgICAgICAnN2MxMGRmYjE2NGMzNDI1ZjVjNzFhM2Y5ZDc5OTIwMzhmMTA2NTIyNGY3MmJiOWQxZDkwMmE2ZDEzMDM3YjQ3YycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYjAxNWY4MDQ0ZjVmY2JkY2YyMWNhMjZkNmMzNGZiODE5NzgyOTIwNWM3YjdkMmE3Y2I2NjQxOGMxNTdiMTEyYycsXG4gICAgICAgICdhYjhjMWUwODZkMDRlODEzNzQ0YTY1NWIyZGY4ZDVmODNiM2NkYzZmYWEzMDg4YzFkM2FlYTE0NTRlM2ExZDVmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNWU5ZTFkYTY0OWQ5N2Q4OWU0ODY4MTE3YTQ2NWEzYTRmOGExOGRlNTdhMTQwZDM2YjNmMmFmMzQxYTIxYjUyJyxcbiAgICAgICAgJzRjYjA0NDM3ZjM5MWVkNzMxMTFhMTNjYzFkNGRkMGRiMTY5MzQ2NWMyMjQwNDgwZDg5NTVlODU5MmYyNzQ0N2EnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QzYWU0MTA0N2RkN2NhMDY1ZGJmOGVkNzdiOTkyNDM5OTgzMDA1Y2Q3MmUxNmQ2Zjk5NmE1MzE2ZDM2OTY2YmInLFxuICAgICAgICAnYmQxYWViMjFhZDIyZWJiMjJhMTBmMDMwMzQxN2M2ZDk2NGY4Y2RkN2RmMGFjYTYxNGIxMGRjMTRkMTI1YWM0NicsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDYzZTI3NjNkODg1Zjk1OGZjNjZjZGQyMjgwMGYwYTQ4NzE5N2QwYTgyZTM3N2I0OWY4MGFmODdjODk3YjA2NScsXG4gICAgICAgICdiZmVmYWNkYjBlNWQwZmQ3ZGYzYTMxMWE5NGRlMDYyYjI2YjgwYzYxZmJjOTc1MDhiNzk5OTI2NzFlZjdjYTdmJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3OTg1ZmRmZDEyN2MwNTY3YzZmNTNlYzFiYjYzZWMzMTU4ZTU5N2M0MGJmZTc0N2M4M2NkZGZjOTEwNjQxOTE3JyxcbiAgICAgICAgJzYwM2MxMmRhZjNkOTg2MmVmMmIyNWZlMWRlMjg5YWVkMjRlZDI5MWUwZWM2NzA4NzAzYTViZDU2N2YzMmVkMDMnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc0YTFhZDZiNWY3NmUzOWRiMmRkMjQ5NDEwZWFjN2Y5OWU3NGM1OWNiODNkMmQwZWQ1ZmYxNTQzZGE3NzAzZTknLFxuICAgICAgICAnY2M2MTU3ZWYxOGM5YzYzY2Q2MTkzZDgzNjMxYmJlYTAwOTNlMDk2ODk0MmU4YzMzZDU3MzdmZDc5MGUwZGIwOCcsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzA2ODJhNTA3MDMzNzVmNjAyZDQxNjY2NGJhMTliN2ZjOWJhYjQyYzcyNzQ3NDYzYTcxZDA4OTZiMjJmNmRhMycsXG4gICAgICAgICc1NTNlMDRmNmIwMThiNGZhNmM4ZjM5ZTdmMzExZDMxNzYyOTBkMGUwZjE5Y2E3M2YxNzcxNGQ5OTc3YTIyZmY4JyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5ZTIxNThmMGQ3YzBkNWYyNmMzNzkxZWZlZmE3OTU5NzY1NGU3YTJiMjQ2NGY1MmIxZWU2YzEzNDc3NjllZjU3JyxcbiAgICAgICAgJzcxMmZjZGQxYjkwNTNmMDkwMDNhMzQ4MWZhNzc2MmU5ZmZkN2M4ZWYzNWEzODUwOWUyZmJmMjYyOTAwODM3MycsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTc2ZTI2OTg5YTQzYzljZmViYTQwMjljMjAyNTM4YzI4MTcyZTU2NmUzYzRmY2U3MzIyODU3ZjNiZTMyN2Q2NicsXG4gICAgICAgICdlZDhjYzlkMDRiMjllYjg3N2QyNzBiNDg3OGRjNDNjMTlhZWZkMzFmNGVlZTA5ZWU3YjQ3ODM0YzFmYTRiMWMzJyxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NWQ0NmVmZWEzNzcxZTZlNjhhYmI4OWExM2FkNzQ3ZWNmMTg5MjM5M2RmYzRmMWI3MDA0Nzg4YzUwMzc0ZGE4JyxcbiAgICAgICAgJzk4NTIzOTBhOTk1MDc2NzlmZDBiODZmZDJiMzlhODY4ZDdlZmMyMjE1MTM0NmUxYTNjYTQ3MjY1ODZhNmJlZDgnLFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgwOWEyMGM2N2Q2NDkwMGZmYjY5OGM0YzgyNWY2ZDVmMjMxMGZiMDQ1MWM4NjkzNDViNzMxOWY2NDU2MDU3MjEnLFxuICAgICAgICAnOWU5OTQ5ODBkOTkxN2UyMmI3NmIwNjE5MjdmYTA0MTQzZDA5NmNjYzU0OTYzZTZhNWViZmE1ZjNmOGUyODZjMScsXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMWIzODkwM2E0M2Y3ZjExNGVkNDUwMGI0ZWFjNzA4M2ZkZWZlY2UxY2YyOWM2MzUyOGQ1NjM0NDZmOTcyYzE4MCcsXG4gICAgICAgICc0MDM2ZWRjOTMxYTYwYWU4ODkzNTNmNzdmZDUzZGU0YTI3MDhiMjZiNmY1ZGE3MmFkMzM5NDExOWRhZjQwOGY5JyxcbiAgICAgIF0sXG4gICAgXSxcbiAgfSxcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IGV4cG9ydHM7XG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIG1pbkFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBtaW5VdGlscyA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHMnKTtcblxudXRpbHMuYXNzZXJ0ID0gbWluQXNzZXJ0O1xudXRpbHMudG9BcnJheSA9IG1pblV0aWxzLnRvQXJyYXk7XG51dGlscy56ZXJvMiA9IG1pblV0aWxzLnplcm8yO1xudXRpbHMudG9IZXggPSBtaW5VdGlscy50b0hleDtcbnV0aWxzLmVuY29kZSA9IG1pblV0aWxzLmVuY29kZTtcblxuLy8gUmVwcmVzZW50IG51bSBpbiBhIHctTkFGIGZvcm1cbmZ1bmN0aW9uIGdldE5BRihudW0sIHcsIGJpdHMpIHtcbiAgdmFyIG5hZiA9IG5ldyBBcnJheShNYXRoLm1heChudW0uYml0TGVuZ3RoKCksIGJpdHMpICsgMSk7XG4gIG5hZi5maWxsKDApO1xuXG4gIHZhciB3cyA9IDEgPDwgKHcgKyAxKTtcbiAgdmFyIGsgPSBudW0uY2xvbmUoKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IG5hZi5sZW5ndGg7IGkrKykge1xuICAgIHZhciB6O1xuICAgIHZhciBtb2QgPSBrLmFuZGxuKHdzIC0gMSk7XG4gICAgaWYgKGsuaXNPZGQoKSkge1xuICAgICAgaWYgKG1vZCA+ICh3cyA+PiAxKSAtIDEpXG4gICAgICAgIHogPSAod3MgPj4gMSkgLSBtb2Q7XG4gICAgICBlbHNlXG4gICAgICAgIHogPSBtb2Q7XG4gICAgICBrLmlzdWJuKHopO1xuICAgIH0gZWxzZSB7XG4gICAgICB6ID0gMDtcbiAgICB9XG5cbiAgICBuYWZbaV0gPSB6O1xuICAgIGsuaXVzaHJuKDEpO1xuICB9XG5cbiAgcmV0dXJuIG5hZjtcbn1cbnV0aWxzLmdldE5BRiA9IGdldE5BRjtcblxuLy8gUmVwcmVzZW50IGsxLCBrMiBpbiBhIEpvaW50IFNwYXJzZSBGb3JtXG5mdW5jdGlvbiBnZXRKU0YoazEsIGsyKSB7XG4gIHZhciBqc2YgPSBbXG4gICAgW10sXG4gICAgW10sXG4gIF07XG5cbiAgazEgPSBrMS5jbG9uZSgpO1xuICBrMiA9IGsyLmNsb25lKCk7XG4gIHZhciBkMSA9IDA7XG4gIHZhciBkMiA9IDA7XG4gIHZhciBtODtcbiAgd2hpbGUgKGsxLmNtcG4oLWQxKSA+IDAgfHwgazIuY21wbigtZDIpID4gMCkge1xuICAgIC8vIEZpcnN0IHBoYXNlXG4gICAgdmFyIG0xNCA9IChrMS5hbmRsbigzKSArIGQxKSAmIDM7XG4gICAgdmFyIG0yNCA9IChrMi5hbmRsbigzKSArIGQyKSAmIDM7XG4gICAgaWYgKG0xNCA9PT0gMylcbiAgICAgIG0xNCA9IC0xO1xuICAgIGlmIChtMjQgPT09IDMpXG4gICAgICBtMjQgPSAtMTtcbiAgICB2YXIgdTE7XG4gICAgaWYgKChtMTQgJiAxKSA9PT0gMCkge1xuICAgICAgdTEgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBtOCA9IChrMS5hbmRsbig3KSArIGQxKSAmIDc7XG4gICAgICBpZiAoKG04ID09PSAzIHx8IG04ID09PSA1KSAmJiBtMjQgPT09IDIpXG4gICAgICAgIHUxID0gLW0xNDtcbiAgICAgIGVsc2VcbiAgICAgICAgdTEgPSBtMTQ7XG4gICAgfVxuICAgIGpzZlswXS5wdXNoKHUxKTtcblxuICAgIHZhciB1MjtcbiAgICBpZiAoKG0yNCAmIDEpID09PSAwKSB7XG4gICAgICB1MiA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG04ID0gKGsyLmFuZGxuKDcpICsgZDIpICYgNztcbiAgICAgIGlmICgobTggPT09IDMgfHwgbTggPT09IDUpICYmIG0xNCA9PT0gMilcbiAgICAgICAgdTIgPSAtbTI0O1xuICAgICAgZWxzZVxuICAgICAgICB1MiA9IG0yNDtcbiAgICB9XG4gICAganNmWzFdLnB1c2godTIpO1xuXG4gICAgLy8gU2Vjb25kIHBoYXNlXG4gICAgaWYgKDIgKiBkMSA9PT0gdTEgKyAxKVxuICAgICAgZDEgPSAxIC0gZDE7XG4gICAgaWYgKDIgKiBkMiA9PT0gdTIgKyAxKVxuICAgICAgZDIgPSAxIC0gZDI7XG4gICAgazEuaXVzaHJuKDEpO1xuICAgIGsyLml1c2hybigxKTtcbiAgfVxuXG4gIHJldHVybiBqc2Y7XG59XG51dGlscy5nZXRKU0YgPSBnZXRKU0Y7XG5cbmZ1bmN0aW9uIGNhY2hlZFByb3BlcnR5KG9iaiwgbmFtZSwgY29tcHV0ZXIpIHtcbiAgdmFyIGtleSA9ICdfJyArIG5hbWU7XG4gIG9iai5wcm90b3R5cGVbbmFtZV0gPSBmdW5jdGlvbiBjYWNoZWRQcm9wZXJ0eSgpIHtcbiAgICByZXR1cm4gdGhpc1trZXldICE9PSB1bmRlZmluZWQgPyB0aGlzW2tleV0gOlxuICAgICAgdGhpc1trZXldID0gY29tcHV0ZXIuY2FsbCh0aGlzKTtcbiAgfTtcbn1cbnV0aWxzLmNhY2hlZFByb3BlcnR5ID0gY2FjaGVkUHJvcGVydHk7XG5cbmZ1bmN0aW9uIHBhcnNlQnl0ZXMoYnl0ZXMpIHtcbiAgcmV0dXJuIHR5cGVvZiBieXRlcyA9PT0gJ3N0cmluZycgPyB1dGlscy50b0FycmF5KGJ5dGVzLCAnaGV4JykgOlxuICAgIGJ5dGVzO1xufVxudXRpbHMucGFyc2VCeXRlcyA9IHBhcnNlQnl0ZXM7XG5cbmZ1bmN0aW9uIGludEZyb21MRShieXRlcykge1xuICByZXR1cm4gbmV3IEJOKGJ5dGVzLCAnaGV4JywgJ2xlJyk7XG59XG51dGlscy5pbnRGcm9tTEUgPSBpbnRGcm9tTEU7XG5cbiIsIihmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBVdGlsc1xuICBmdW5jdGlvbiBhc3NlcnQgKHZhbCwgbXNnKSB7XG4gICAgaWYgKCF2YWwpIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbiAgfVxuXG4gIC8vIENvdWxkIHVzZSBgaW5oZXJpdHNgIG1vZHVsZSwgYnV0IGRvbid0IHdhbnQgdG8gbW92ZSBmcm9tIHNpbmdsZSBmaWxlXG4gIC8vIGFyY2hpdGVjdHVyZSB5ZXQuXG4gIGZ1bmN0aW9uIGluaGVyaXRzIChjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvcjtcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlO1xuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKCk7XG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yO1xuICB9XG5cbiAgLy8gQk5cblxuICBmdW5jdGlvbiBCTiAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAoQk4uaXNCTihudW1iZXIpKSB7XG4gICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cblxuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIHRoaXMud29yZHMgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcblxuICAgIC8vIFJlZHVjdGlvbiBjb250ZXh0XG4gICAgdGhpcy5yZWQgPSBudWxsO1xuXG4gICAgaWYgKG51bWJlciAhPT0gbnVsbCkge1xuICAgICAgaWYgKGJhc2UgPT09ICdsZScgfHwgYmFzZSA9PT0gJ2JlJykge1xuICAgICAgICBlbmRpYW4gPSBiYXNlO1xuICAgICAgICBiYXNlID0gMTA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2luaXQobnVtYmVyIHx8IDAsIGJhc2UgfHwgMTAsIGVuZGlhbiB8fCAnYmUnKTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBCTjtcbiAgfSBlbHNlIHtcbiAgICBleHBvcnRzLkJOID0gQk47XG4gIH1cblxuICBCTi5CTiA9IEJOO1xuICBCTi53b3JkU2l6ZSA9IDI2O1xuXG4gIHZhciBCdWZmZXI7XG4gIHRyeSB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuQnVmZmVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgQnVmZmVyID0gd2luZG93LkJ1ZmZlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICB9XG5cbiAgQk4uaXNCTiA9IGZ1bmN0aW9uIGlzQk4gKG51bSkge1xuICAgIGlmIChudW0gaW5zdGFuY2VvZiBCTikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bSAhPT0gbnVsbCAmJiB0eXBlb2YgbnVtID09PSAnb2JqZWN0JyAmJlxuICAgICAgbnVtLmNvbnN0cnVjdG9yLndvcmRTaXplID09PSBCTi53b3JkU2l6ZSAmJiBBcnJheS5pc0FycmF5KG51bS53b3Jkcyk7XG4gIH07XG5cbiAgQk4ubWF4ID0gZnVuY3Rpb24gbWF4IChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPiAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ubWluID0gZnVuY3Rpb24gbWluIChsZWZ0LCByaWdodCkge1xuICAgIGlmIChsZWZ0LmNtcChyaWdodCkgPCAwKSByZXR1cm4gbGVmdDtcbiAgICByZXR1cm4gcmlnaHQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdCAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0TnVtYmVyKG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG51bWJlciA9PT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbml0QXJyYXkobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAnaGV4Jykge1xuICAgICAgYmFzZSA9IDE2O1xuICAgIH1cbiAgICBhc3NlcnQoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNik7XG5cbiAgICBudW1iZXIgPSBudW1iZXIudG9TdHJpbmcoKS5yZXBsYWNlKC9cXHMrL2csICcnKTtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGlmIChudW1iZXJbMF0gPT09ICctJykge1xuICAgICAgc3RhcnQrKztcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA8IG51bWJlci5sZW5ndGgpIHtcbiAgICAgIGlmIChiYXNlID09PSAxNikge1xuICAgICAgICB0aGlzLl9wYXJzZUhleChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fcGFyc2VCYXNlKG51bWJlciwgYmFzZSwgc3RhcnQpO1xuICAgICAgICBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICAgICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdE51bWJlciA9IGZ1bmN0aW9uIF9pbml0TnVtYmVyIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIG51bWJlciA9IC1udW1iZXI7XG4gICAgfVxuICAgIGlmIChudW1iZXIgPCAweDQwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIG51bWJlciAmIDB4M2ZmZmZmZiBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMHgxMDAwMDAwMDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZlxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG51bWJlciA8IDB4MjAwMDAwMDAwMDAwMDApOyAvLyAyIF4gNTMgKHVuc2FmZSlcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmYsXG4gICAgICAgIDFcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDM7XG4gICAgfVxuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgLy8gUmV2ZXJzZSB0aGUgYnl0ZXNcbiAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0QXJyYXkgPSBmdW5jdGlvbiBfaW5pdEFycmF5IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIC8vIFBlcmhhcHMgYSBVaW50OEFycmF5XG4gICAgYXNzZXJ0KHR5cGVvZiBudW1iZXIubGVuZ3RoID09PSAnbnVtYmVyJyk7XG4gICAgaWYgKG51bWJlci5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwobnVtYmVyLmxlbmd0aCAvIDMpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGosIHc7XG4gICAgdmFyIG9mZiA9IDA7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDEsIGogPSAwOyBpID49IDA7IGkgLT0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpIC0gMV0gPDwgOCkgfCAobnVtYmVyW2kgLSAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSArIDFdIDw8IDgpIHwgKG51bWJlcltpICsgMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXg0Qml0cyAoc3RyaW5nLCBpbmRleCkge1xuICAgIHZhciBjID0gc3RyaW5nLmNoYXJDb2RlQXQoaW5kZXgpO1xuICAgIC8vICdBJyAtICdGJ1xuICAgIGlmIChjID49IDY1ICYmIGMgPD0gNzApIHtcbiAgICAgIHJldHVybiBjIC0gNTU7XG4gICAgLy8gJ2EnIC0gJ2YnXG4gICAgfSBlbHNlIGlmIChjID49IDk3ICYmIGMgPD0gMTAyKSB7XG4gICAgICByZXR1cm4gYyAtIDg3O1xuICAgIC8vICcwJyAtICc5J1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKGMgLSA0OCkgJiAweGY7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXhCeXRlIChzdHJpbmcsIGxvd2VyQm91bmQsIGluZGV4KSB7XG4gICAgdmFyIHIgPSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXgpO1xuICAgIGlmIChpbmRleCAtIDEgPj0gbG93ZXJCb3VuZCkge1xuICAgICAgciB8PSBwYXJzZUhleDRCaXRzKHN0cmluZywgaW5kZXggLSAxKSA8PCA0O1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VIZXggPSBmdW5jdGlvbiBfcGFyc2VIZXggKG51bWJlciwgc3RhcnQsIGVuZGlhbikge1xuICAgIC8vIENyZWF0ZSBwb3NzaWJseSBiaWdnZXIgYXJyYXkgdG8gZW5zdXJlIHRoYXQgaXQgZml0cyB0aGUgbnVtYmVyXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwoKG51bWJlci5sZW5ndGggLSBzdGFydCkgLyA2KTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIC8vIDI0LWJpdHMgY2h1bmtzXG4gICAgdmFyIG9mZiA9IDA7XG4gICAgdmFyIGogPSAwO1xuXG4gICAgdmFyIHc7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDE7IGkgPj0gc3RhcnQ7IGkgLT0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYXJzZUxlbmd0aCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICAgIGZvciAoaSA9IHBhcnNlTGVuZ3RoICUgMiA9PT0gMCA/IHN0YXJ0ICsgMSA6IHN0YXJ0OyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VCYXNlIChzdHIsIHN0YXJ0LCBlbmQsIG11bCkge1xuICAgIHZhciByID0gMDtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oc3RyLmxlbmd0aCwgZW5kKTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKSAtIDQ4O1xuXG4gICAgICByICo9IG11bDtcblxuICAgICAgLy8gJ2EnXG4gICAgICBpZiAoYyA+PSA0OSkge1xuICAgICAgICByICs9IGMgLSA0OSArIDB4YTtcblxuICAgICAgLy8gJ0EnXG4gICAgICB9IGVsc2UgaWYgKGMgPj0gMTcpIHtcbiAgICAgICAgciArPSBjIC0gMTcgKyAweGE7XG5cbiAgICAgIC8vICcwJyAtICc5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgciArPSBjO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VCYXNlID0gZnVuY3Rpb24gX3BhcnNlQmFzZSAobnVtYmVyLCBiYXNlLCBzdGFydCkge1xuICAgIC8vIEluaXRpYWxpemUgYXMgemVyb1xuICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICB0aGlzLmxlbmd0aCA9IDE7XG5cbiAgICAvLyBGaW5kIGxlbmd0aCBvZiBsaW1iIGluIGJhc2VcbiAgICBmb3IgKHZhciBsaW1iTGVuID0gMCwgbGltYlBvdyA9IDE7IGxpbWJQb3cgPD0gMHgzZmZmZmZmOyBsaW1iUG93ICo9IGJhc2UpIHtcbiAgICAgIGxpbWJMZW4rKztcbiAgICB9XG4gICAgbGltYkxlbi0tO1xuICAgIGxpbWJQb3cgPSAobGltYlBvdyAvIGJhc2UpIHwgMDtcblxuICAgIHZhciB0b3RhbCA9IG51bWJlci5sZW5ndGggLSBzdGFydDtcbiAgICB2YXIgbW9kID0gdG90YWwgJSBsaW1iTGVuO1xuICAgIHZhciBlbmQgPSBNYXRoLm1pbih0b3RhbCwgdG90YWwgLSBtb2QpICsgc3RhcnQ7XG5cbiAgICB2YXIgd29yZCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyBpICs9IGxpbWJMZW4pIHtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBpICsgbGltYkxlbiwgYmFzZSk7XG5cbiAgICAgIHRoaXMuaW11bG4obGltYlBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1vZCAhPT0gMCkge1xuICAgICAgdmFyIHBvdyA9IDE7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgbnVtYmVyLmxlbmd0aCwgYmFzZSk7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBtb2Q7IGkrKykge1xuICAgICAgICBwb3cgKj0gYmFzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pbXVsbihwb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKGRlc3QpIHtcbiAgICBkZXN0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRlc3Qud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgIH1cbiAgICBkZXN0Lmxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIGRlc3QubmVnYXRpdmUgPSB0aGlzLm5lZ2F0aXZlO1xuICAgIGRlc3QucmVkID0gdGhpcy5yZWQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gY2xvbmUgKCkge1xuICAgIHZhciByID0gbmV3IEJOKG51bGwpO1xuICAgIHRoaXMuY29weShyKTtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2V4cGFuZCA9IGZ1bmN0aW9uIF9leHBhbmQgKHNpemUpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBzaXplKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gUmVtb3ZlIGxlYWRpbmcgYDBgIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdHJpcCA9IGZ1bmN0aW9uIHN0cmlwICgpIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPiAxICYmIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgdGhpcy5sZW5ndGgtLTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9ub3JtU2lnbiA9IGZ1bmN0aW9uIF9ub3JtU2lnbiAoKSB7XG4gICAgLy8gLTAgPSAwXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICAgIHJldHVybiAodGhpcy5yZWQgPyAnPEJOLVI6ICcgOiAnPEJOOiAnKSArIHRoaXMudG9TdHJpbmcoMTYpICsgJz4nO1xuICB9O1xuXG4gIC8qXG5cbiAgdmFyIHplcm9zID0gW107XG4gIHZhciBncm91cFNpemVzID0gW107XG4gIHZhciBncm91cEJhc2VzID0gW107XG5cbiAgdmFyIHMgPSAnJztcbiAgdmFyIGkgPSAtMTtcbiAgd2hpbGUgKCsraSA8IEJOLndvcmRTaXplKSB7XG4gICAgemVyb3NbaV0gPSBzO1xuICAgIHMgKz0gJzAnO1xuICB9XG4gIGdyb3VwU2l6ZXNbMF0gPSAwO1xuICBncm91cFNpemVzWzFdID0gMDtcbiAgZ3JvdXBCYXNlc1swXSA9IDA7XG4gIGdyb3VwQmFzZXNbMV0gPSAwO1xuICB2YXIgYmFzZSA9IDIgLSAxO1xuICB3aGlsZSAoKytiYXNlIDwgMzYgKyAxKSB7XG4gICAgdmFyIGdyb3VwU2l6ZSA9IDA7XG4gICAgdmFyIGdyb3VwQmFzZSA9IDE7XG4gICAgd2hpbGUgKGdyb3VwQmFzZSA8ICgxIDw8IEJOLndvcmRTaXplKSAvIGJhc2UpIHtcbiAgICAgIGdyb3VwQmFzZSAqPSBiYXNlO1xuICAgICAgZ3JvdXBTaXplICs9IDE7XG4gICAgfVxuICAgIGdyb3VwU2l6ZXNbYmFzZV0gPSBncm91cFNpemU7XG4gICAgZ3JvdXBCYXNlc1tiYXNlXSA9IGdyb3VwQmFzZTtcbiAgfVxuXG4gICovXG5cbiAgdmFyIHplcm9zID0gW1xuICAgICcnLFxuICAgICcwJyxcbiAgICAnMDAnLFxuICAgICcwMDAnLFxuICAgICcwMDAwJyxcbiAgICAnMDAwMDAnLFxuICAgICcwMDAwMDAnLFxuICAgICcwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJ1xuICBdO1xuXG4gIHZhciBncm91cFNpemVzID0gW1xuICAgIDAsIDAsXG4gICAgMjUsIDE2LCAxMiwgMTEsIDEwLCA5LCA4LFxuICAgIDgsIDcsIDcsIDcsIDcsIDYsIDYsXG4gICAgNiwgNiwgNiwgNiwgNiwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDVcbiAgXTtcblxuICB2YXIgZ3JvdXBCYXNlcyA9IFtcbiAgICAwLCAwLFxuICAgIDMzNTU0NDMyLCA0MzA0NjcyMSwgMTY3NzcyMTYsIDQ4ODI4MTI1LCA2MDQ2NjE3NiwgNDAzNTM2MDcsIDE2Nzc3MjE2LFxuICAgIDQzMDQ2NzIxLCAxMDAwMDAwMCwgMTk0ODcxNzEsIDM1ODMxODA4LCA2Mjc0ODUxNywgNzUyOTUzNiwgMTEzOTA2MjUsXG4gICAgMTY3NzcyMTYsIDI0MTM3NTY5LCAzNDAxMjIyNCwgNDcwNDU4ODEsIDY0MDAwMDAwLCA0MDg0MTAxLCA1MTUzNjMyLFxuICAgIDY0MzYzNDMsIDc5NjI2MjQsIDk3NjU2MjUsIDExODgxMzc2LCAxNDM0ODkwNywgMTcyMTAzNjgsIDIwNTExMTQ5LFxuICAgIDI0MzAwMDAwLCAyODYyOTE1MSwgMzM1NTQ0MzIsIDM5MTM1MzkzLCA0NTQzNTQyNCwgNTI1MjE4NzUsIDYwNDY2MTc2XG4gIF07XG5cbiAgQk4ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKGJhc2UsIHBhZGRpbmcpIHtcbiAgICBiYXNlID0gYmFzZSB8fCAxMDtcbiAgICBwYWRkaW5nID0gcGFkZGluZyB8IDAgfHwgMTtcblxuICAgIHZhciBvdXQ7XG4gICAgaWYgKGJhc2UgPT09IDE2IHx8IGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBvZmYgPSAwO1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV07XG4gICAgICAgIHZhciB3b3JkID0gKCgodyA8PCBvZmYpIHwgY2FycnkpICYgMHhmZmZmZmYpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgY2FycnkgPSAodyA+Pj4gKDI0IC0gb2ZmKSkgJiAweGZmZmZmZjtcbiAgICAgICAgaWYgKGNhcnJ5ICE9PSAwIHx8IGkgIT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIG91dCA9IHplcm9zWzYgLSB3b3JkLmxlbmd0aF0gKyB3b3JkICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHdvcmQgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgICAgb2ZmICs9IDI7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaS0tO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgICAgb3V0ID0gY2FycnkudG9TdHJpbmcoMTYpICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpIHtcbiAgICAgIC8vIHZhciBncm91cFNpemUgPSBNYXRoLmZsb29yKEJOLndvcmRTaXplICogTWF0aC5MTjIgLyBNYXRoLmxvZyhiYXNlKSk7XG4gICAgICB2YXIgZ3JvdXBTaXplID0gZ3JvdXBTaXplc1tiYXNlXTtcbiAgICAgIC8vIHZhciBncm91cEJhc2UgPSBNYXRoLnBvdyhiYXNlLCBncm91cFNpemUpO1xuICAgICAgdmFyIGdyb3VwQmFzZSA9IGdyb3VwQmFzZXNbYmFzZV07XG4gICAgICBvdXQgPSAnJztcbiAgICAgIHZhciBjID0gdGhpcy5jbG9uZSgpO1xuICAgICAgYy5uZWdhdGl2ZSA9IDA7XG4gICAgICB3aGlsZSAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgdmFyIHIgPSBjLm1vZG4oZ3JvdXBCYXNlKS50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgYyA9IGMuaWRpdm4oZ3JvdXBCYXNlKTtcblxuICAgICAgICBpZiAoIWMuaXNaZXJvKCkpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1tncm91cFNpemUgLSByLmxlbmd0aF0gKyByICsgb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG91dCA9IHIgKyBvdXQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGFzc2VydChmYWxzZSwgJ0Jhc2Ugc2hvdWxkIGJlIGJldHdlZW4gMiBhbmQgMzYnKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9OdW1iZXIgPSBmdW5jdGlvbiB0b051bWJlciAoKSB7XG4gICAgdmFyIHJldCA9IHRoaXMud29yZHNbMF07XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAyKSB7XG4gICAgICByZXQgKz0gdGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMDtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID09PSAzICYmIHRoaXMud29yZHNbMl0gPT09IDB4MDEpIHtcbiAgICAgIC8vIE5PVEU6IGF0IHRoaXMgc3RhZ2UgaXQgaXMga25vd24gdGhhdCB0aGUgdG9wIGJpdCBpcyBzZXRcbiAgICAgIHJldCArPSAweDEwMDAwMDAwMDAwMDAwICsgKHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDApO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiAyKSB7XG4gICAgICBhc3NlcnQoZmFsc2UsICdOdW1iZXIgY2FuIG9ubHkgc2FmZWx5IHN0b3JlIHVwIHRvIDUzIGJpdHMnKTtcbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLm5lZ2F0aXZlICE9PSAwKSA/IC1yZXQgOiByZXQ7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9TdHJpbmcoMTYpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0J1ZmZlciA9IGZ1bmN0aW9uIHRvQnVmZmVyIChlbmRpYW4sIGxlbmd0aCkge1xuICAgIGFzc2VydCh0eXBlb2YgQnVmZmVyICE9PSAndW5kZWZpbmVkJyk7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQnVmZmVyLCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiB0b0FycmF5IChlbmRpYW4sIGxlbmd0aCkge1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LCBlbmRpYW4sIGxlbmd0aCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQXJyYXlMaWtlID0gZnVuY3Rpb24gdG9BcnJheUxpa2UgKEFycmF5VHlwZSwgZW5kaWFuLCBsZW5ndGgpIHtcbiAgICB2YXIgYnl0ZUxlbmd0aCA9IHRoaXMuYnl0ZUxlbmd0aCgpO1xuICAgIHZhciByZXFMZW5ndGggPSBsZW5ndGggfHwgTWF0aC5tYXgoMSwgYnl0ZUxlbmd0aCk7XG4gICAgYXNzZXJ0KGJ5dGVMZW5ndGggPD0gcmVxTGVuZ3RoLCAnYnl0ZSBhcnJheSBsb25nZXIgdGhhbiBkZXNpcmVkIGxlbmd0aCcpO1xuICAgIGFzc2VydChyZXFMZW5ndGggPiAwLCAnUmVxdWVzdGVkIGFycmF5IGxlbmd0aCA8PSAwJyk7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gICAgdmFyIGxpdHRsZUVuZGlhbiA9IGVuZGlhbiA9PT0gJ2xlJztcbiAgICB2YXIgcmVzID0gbmV3IEFycmF5VHlwZShyZXFMZW5ndGgpO1xuXG4gICAgdmFyIGIsIGk7XG4gICAgdmFyIHEgPSB0aGlzLmNsb25lKCk7XG4gICAgaWYgKCFsaXR0bGVFbmRpYW4pIHtcbiAgICAgIC8vIEFzc3VtZSBiaWctZW5kaWFuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgcmVxTGVuZ3RoIC0gYnl0ZUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tyZXFMZW5ndGggLSBpIC0gMV0gPSBiO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbaV0gPSBiO1xuICAgICAgfVxuXG4gICAgICBmb3IgKDsgaSA8IHJlcUxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBpZiAoTWF0aC5jbHozMikge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgcmV0dXJuIDMyIC0gTWF0aC5jbHozMih3KTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIEJOLnByb3RvdHlwZS5fY291bnRCaXRzID0gZnVuY3Rpb24gX2NvdW50Qml0cyAodykge1xuICAgICAgdmFyIHQgPSB3O1xuICAgICAgdmFyIHIgPSAwO1xuICAgICAgaWYgKHQgPj0gMHgxMDAwKSB7XG4gICAgICAgIHIgKz0gMTM7XG4gICAgICAgIHQgPj4+PSAxMztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4NDApIHtcbiAgICAgICAgciArPSA3O1xuICAgICAgICB0ID4+Pj0gNztcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4OCkge1xuICAgICAgICByICs9IDQ7XG4gICAgICAgIHQgPj4+PSA0O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHgwMikge1xuICAgICAgICByICs9IDI7XG4gICAgICAgIHQgPj4+PSAyO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHIgKyB0O1xuICAgIH07XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3plcm9CaXRzID0gZnVuY3Rpb24gX3plcm9CaXRzICh3KSB7XG4gICAgLy8gU2hvcnQtY3V0XG4gICAgaWYgKHcgPT09IDApIHJldHVybiAyNjtcblxuICAgIHZhciB0ID0gdztcbiAgICB2YXIgciA9IDA7XG4gICAgaWYgKCh0ICYgMHgxZmZmKSA9PT0gMCkge1xuICAgICAgciArPSAxMztcbiAgICAgIHQgPj4+PSAxMztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHg3ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNztcbiAgICAgIHQgPj4+PSA3O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweGYpID09PSAwKSB7XG4gICAgICByICs9IDQ7XG4gICAgICB0ID4+Pj0gNDtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgzKSA9PT0gMCkge1xuICAgICAgciArPSAyO1xuICAgICAgdCA+Pj49IDI7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MSkgPT09IDApIHtcbiAgICAgIHIrKztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG51bWJlciBvZiB1c2VkIGJpdHMgaW4gYSBCTlxuICBCTi5wcm90b3R5cGUuYml0TGVuZ3RoID0gZnVuY3Rpb24gYml0TGVuZ3RoICgpIHtcbiAgICB2YXIgdyA9IHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXTtcbiAgICB2YXIgaGkgPSB0aGlzLl9jb3VudEJpdHModyk7XG4gICAgcmV0dXJuICh0aGlzLmxlbmd0aCAtIDEpICogMjYgKyBoaTtcbiAgfTtcblxuICBmdW5jdGlvbiB0b0JpdEFycmF5IChudW0pIHtcbiAgICB2YXIgdyA9IG5ldyBBcnJheShudW0uYml0TGVuZ3RoKCkpO1xuXG4gICAgZm9yICh2YXIgYml0ID0gMDsgYml0IDwgdy5sZW5ndGg7IGJpdCsrKSB7XG4gICAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgICB3W2JpdF0gPSAobnVtLndvcmRzW29mZl0gJiAoMSA8PCB3Yml0KSkgPj4+IHdiaXQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHc7XG4gIH1cblxuICAvLyBOdW1iZXIgb2YgdHJhaWxpbmcgemVybyBiaXRzXG4gIEJOLnByb3RvdHlwZS56ZXJvQml0cyA9IGZ1bmN0aW9uIHplcm9CaXRzICgpIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIDA7XG5cbiAgICB2YXIgciA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgYiA9IHRoaXMuX3plcm9CaXRzKHRoaXMud29yZHNbaV0pO1xuICAgICAgciArPSBiO1xuICAgICAgaWYgKGIgIT09IDI2KSBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmJ5dGVMZW5ndGggPSBmdW5jdGlvbiBieXRlTGVuZ3RoICgpIHtcbiAgICByZXR1cm4gTWF0aC5jZWlsKHRoaXMuYml0TGVuZ3RoKCkgLyA4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9Ud29zID0gZnVuY3Rpb24gdG9Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5hYnMoKS5pbm90bih3aWR0aCkuaWFkZG4oMSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21Ud29zID0gZnVuY3Rpb24gZnJvbVR3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMudGVzdG4od2lkdGggLSAxKSkge1xuICAgICAgcmV0dXJuIHRoaXMubm90bih3aWR0aCkuaWFkZG4oMSkuaW5lZygpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc05lZyA9IGZ1bmN0aW9uIGlzTmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5uZWdhdGl2ZSAhPT0gMDtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5lZygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbmVnID0gZnVuY3Rpb24gaW5lZyAoKSB7XG4gICAgaWYgKCF0aGlzLmlzWmVybygpKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1b3IgPSBmdW5jdGlvbiBpdW9yIChudW0pIHtcbiAgICB3aGlsZSAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoKytdID0gMDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gfCBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW9yID0gZnVuY3Rpb24gaW9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdW9yKG51bSk7XG4gIH07XG5cbiAgLy8gT3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gb3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW9yID0gZnVuY3Rpb24gdW9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVvcih0aGlzKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1YW5kID0gZnVuY3Rpb24gaXVhbmQgKG51bSkge1xuICAgIC8vIGIgPSBtaW4tbGVuZ3RoKG51bSwgdGhpcylcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldICYgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYi5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYW5kID0gZnVuY3Rpb24gaWFuZCAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVhbmQobnVtKTtcbiAgfTtcblxuICAvLyBBbmQgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIGFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhbmQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVhbmQgPSBmdW5jdGlvbiB1YW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1YW5kKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1YW5kKHRoaXMpO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXV4b3IgPSBmdW5jdGlvbiBpdXhvciAobnVtKSB7XG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhO1xuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV0gXiBiLndvcmRzW2ldO1xuICAgIH1cblxuICAgIGlmICh0aGlzICE9PSBhKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLml4b3IgPSBmdW5jdGlvbiBpeG9yIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXhvcihudW0pO1xuICB9O1xuXG4gIC8vIFhvciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24geG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXhvcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXhvciA9IGZ1bmN0aW9uIHV4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXV4b3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXV4b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gTm90IGBgdGhpc2BgIHdpdGggYGB3aWR0aGBgIGJpdHdpZHRoXG4gIEJOLnByb3RvdHlwZS5pbm90biA9IGZ1bmN0aW9uIGlub3RuICh3aWR0aCkge1xuICAgIGFzc2VydCh0eXBlb2Ygd2lkdGggPT09ICdudW1iZXInICYmIHdpZHRoID49IDApO1xuXG4gICAgdmFyIGJ5dGVzTmVlZGVkID0gTWF0aC5jZWlsKHdpZHRoIC8gMjYpIHwgMDtcbiAgICB2YXIgYml0c0xlZnQgPSB3aWR0aCAlIDI2O1xuXG4gICAgLy8gRXh0ZW5kIHRoZSBidWZmZXIgd2l0aCBsZWFkaW5nIHplcm9lc1xuICAgIHRoaXMuX2V4cGFuZChieXRlc05lZWRlZCk7XG5cbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICBieXRlc05lZWRlZC0tO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBjb21wbGV0ZSB3b3Jkc1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXNOZWVkZWQ7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgcmVzaWR1ZVxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmICgweDNmZmZmZmYgPj4gKDI2IC0gYml0c0xlZnQpKTtcbiAgICB9XG5cbiAgICAvLyBBbmQgcmVtb3ZlIGxlYWRpbmcgemVyb2VzXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubm90biA9IGZ1bmN0aW9uIG5vdG4gKHdpZHRoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbm90bih3aWR0aCk7XG4gIH07XG5cbiAgLy8gU2V0IGBiaXRgIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc2V0biA9IGZ1bmN0aW9uIHNldG4gKGJpdCwgdmFsKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcblxuICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICB2YXIgd2JpdCA9IGJpdCAlIDI2O1xuXG4gICAgdGhpcy5fZXhwYW5kKG9mZiArIDEpO1xuXG4gICAgaWYgKHZhbCkge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdIHwgKDEgPDwgd2JpdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSAmIH4oMSA8PCB3Yml0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChudW0pIHtcbiAgICB2YXIgcjtcblxuICAgIC8vIG5lZ2F0aXZlICsgcG9zaXRpdmVcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG5cbiAgICAvLyBwb3NpdGl2ZSArIG5lZ2F0aXZlXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBhLmxlbmd0aDtcbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGhdID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIC8vIENvcHkgdGhlIHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgfSBlbHNlIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChudW0pIHtcbiAgICB2YXIgcmVzO1xuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDAgJiYgdGhpcy5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IHRoaXMuc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIGlmIChudW0ubmVnYXRpdmUgPT09IDAgJiYgdGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSBudW0uc3ViKHRoaXMpO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZChudW0pO1xuXG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLmlhZGQodGhpcyk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChudW0pIHtcbiAgICAvLyB0aGlzIC0gKC1udW0pID0gdGhpcyArIG51bVxuICAgIGlmIChudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICB2YXIgciA9IHRoaXMuaWFkZChudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gLXRoaXMgLSBudW0gPSAtKHRoaXMgKyBudW0pXG4gICAgfSBlbHNlIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZChudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgICB9XG5cbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmVcbiAgICB2YXIgY21wID0gdGhpcy5jbXAobnVtKTtcblxuICAgIC8vIE9wdGltaXphdGlvbiAtIHplcm9pZnlcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gYSA+IGJcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAoY21wID4gMCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApIC0gKGIud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIC8vIENvcHkgcmVzdCBvZiB0aGUgd29yZHNcbiAgICBpZiAoY2FycnkgPT09IDAgJiYgaSA8IGEubGVuZ3RoICYmIGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpKTtcblxuICAgIGlmIChhICE9PSB0aGlzKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1YihudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHNtYWxsTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICB2YXIgbGVuID0gKHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aCkgfCAwO1xuICAgIG91dC5sZW5ndGggPSBsZW47XG4gICAgbGVuID0gKGxlbiAtIDEpIHwgMDtcblxuICAgIC8vIFBlZWwgb25lIGl0ZXJhdGlvbiAoY29tcGlsZXIgY2FuJ3QgZG8gaXQsIGJlY2F1c2Ugb2YgY29kZSBjb21wbGV4aXR5KVxuICAgIHZhciBhID0gc2VsZi53b3Jkc1swXSB8IDA7XG4gICAgdmFyIGIgPSBudW0ud29yZHNbMF0gfCAwO1xuICAgIHZhciByID0gYSAqIGI7XG5cbiAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgIHZhciBjYXJyeSA9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgb3V0LndvcmRzWzBdID0gbG87XG5cbiAgICBmb3IgKHZhciBrID0gMTsgayA8IGxlbjsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGNhcnJ5ID4+PiAyNjtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gKGsgLSBqKSB8IDA7XG4gICAgICAgIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHIgPSBhICogYiArIHJ3b3JkO1xuICAgICAgICBuY2FycnkgKz0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgICAgcndvcmQgPSByICYgMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQgfCAwO1xuICAgICAgY2FycnkgPSBuY2FycnkgfCAwO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5IHwgMDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIC8vIFRPRE8oaW5kdXRueSk6IGl0IG1heSBiZSByZWFzb25hYmxlIHRvIG9taXQgaXQgZm9yIHVzZXJzIHdobyBkb24ndCBuZWVkXG4gIC8vIHRvIHdvcmsgd2l0aCAyNTYtYml0IG51bWJlcnMsIG90aGVyd2lzZSBpdCBnaXZlcyAyMCUgaW1wcm92ZW1lbnQgZm9yIDI1Ni1iaXRcbiAgLy8gbXVsdGlwbGljYXRpb24gKGxpa2UgZWxsaXB0aWMgc2VjcDI1NmsxKS5cbiAgdmFyIGNvbWIxME11bFRvID0gZnVuY3Rpb24gY29tYjEwTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGEgPSBzZWxmLndvcmRzO1xuICAgIHZhciBiID0gbnVtLndvcmRzO1xuICAgIHZhciBvID0gb3V0LndvcmRzO1xuICAgIHZhciBjID0gMDtcbiAgICB2YXIgbG87XG4gICAgdmFyIG1pZDtcbiAgICB2YXIgaGk7XG4gICAgdmFyIGEwID0gYVswXSB8IDA7XG4gICAgdmFyIGFsMCA9IGEwICYgMHgxZmZmO1xuICAgIHZhciBhaDAgPSBhMCA+Pj4gMTM7XG4gICAgdmFyIGExID0gYVsxXSB8IDA7XG4gICAgdmFyIGFsMSA9IGExICYgMHgxZmZmO1xuICAgIHZhciBhaDEgPSBhMSA+Pj4gMTM7XG4gICAgdmFyIGEyID0gYVsyXSB8IDA7XG4gICAgdmFyIGFsMiA9IGEyICYgMHgxZmZmO1xuICAgIHZhciBhaDIgPSBhMiA+Pj4gMTM7XG4gICAgdmFyIGEzID0gYVszXSB8IDA7XG4gICAgdmFyIGFsMyA9IGEzICYgMHgxZmZmO1xuICAgIHZhciBhaDMgPSBhMyA+Pj4gMTM7XG4gICAgdmFyIGE0ID0gYVs0XSB8IDA7XG4gICAgdmFyIGFsNCA9IGE0ICYgMHgxZmZmO1xuICAgIHZhciBhaDQgPSBhNCA+Pj4gMTM7XG4gICAgdmFyIGE1ID0gYVs1XSB8IDA7XG4gICAgdmFyIGFsNSA9IGE1ICYgMHgxZmZmO1xuICAgIHZhciBhaDUgPSBhNSA+Pj4gMTM7XG4gICAgdmFyIGE2ID0gYVs2XSB8IDA7XG4gICAgdmFyIGFsNiA9IGE2ICYgMHgxZmZmO1xuICAgIHZhciBhaDYgPSBhNiA+Pj4gMTM7XG4gICAgdmFyIGE3ID0gYVs3XSB8IDA7XG4gICAgdmFyIGFsNyA9IGE3ICYgMHgxZmZmO1xuICAgIHZhciBhaDcgPSBhNyA+Pj4gMTM7XG4gICAgdmFyIGE4ID0gYVs4XSB8IDA7XG4gICAgdmFyIGFsOCA9IGE4ICYgMHgxZmZmO1xuICAgIHZhciBhaDggPSBhOCA+Pj4gMTM7XG4gICAgdmFyIGE5ID0gYVs5XSB8IDA7XG4gICAgdmFyIGFsOSA9IGE5ICYgMHgxZmZmO1xuICAgIHZhciBhaDkgPSBhOSA+Pj4gMTM7XG4gICAgdmFyIGIwID0gYlswXSB8IDA7XG4gICAgdmFyIGJsMCA9IGIwICYgMHgxZmZmO1xuICAgIHZhciBiaDAgPSBiMCA+Pj4gMTM7XG4gICAgdmFyIGIxID0gYlsxXSB8IDA7XG4gICAgdmFyIGJsMSA9IGIxICYgMHgxZmZmO1xuICAgIHZhciBiaDEgPSBiMSA+Pj4gMTM7XG4gICAgdmFyIGIyID0gYlsyXSB8IDA7XG4gICAgdmFyIGJsMiA9IGIyICYgMHgxZmZmO1xuICAgIHZhciBiaDIgPSBiMiA+Pj4gMTM7XG4gICAgdmFyIGIzID0gYlszXSB8IDA7XG4gICAgdmFyIGJsMyA9IGIzICYgMHgxZmZmO1xuICAgIHZhciBiaDMgPSBiMyA+Pj4gMTM7XG4gICAgdmFyIGI0ID0gYls0XSB8IDA7XG4gICAgdmFyIGJsNCA9IGI0ICYgMHgxZmZmO1xuICAgIHZhciBiaDQgPSBiNCA+Pj4gMTM7XG4gICAgdmFyIGI1ID0gYls1XSB8IDA7XG4gICAgdmFyIGJsNSA9IGI1ICYgMHgxZmZmO1xuICAgIHZhciBiaDUgPSBiNSA+Pj4gMTM7XG4gICAgdmFyIGI2ID0gYls2XSB8IDA7XG4gICAgdmFyIGJsNiA9IGI2ICYgMHgxZmZmO1xuICAgIHZhciBiaDYgPSBiNiA+Pj4gMTM7XG4gICAgdmFyIGI3ID0gYls3XSB8IDA7XG4gICAgdmFyIGJsNyA9IGI3ICYgMHgxZmZmO1xuICAgIHZhciBiaDcgPSBiNyA+Pj4gMTM7XG4gICAgdmFyIGI4ID0gYls4XSB8IDA7XG4gICAgdmFyIGJsOCA9IGI4ICYgMHgxZmZmO1xuICAgIHZhciBiaDggPSBiOCA+Pj4gMTM7XG4gICAgdmFyIGI5ID0gYls5XSB8IDA7XG4gICAgdmFyIGJsOSA9IGI5ICYgMHgxZmZmO1xuICAgIHZhciBiaDkgPSBiOSA+Pj4gMTM7XG5cbiAgICBvdXQubmVnYXRpdmUgPSBzZWxmLm5lZ2F0aXZlIF4gbnVtLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSAxOTtcbiAgICAvKiBrID0gMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwwLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgwLCBiaDApO1xuICAgIHZhciB3MCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzAgPj4+IDI2KSkgfCAwO1xuICAgIHcwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwxLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgxLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMSkpIHwgMDtcbiAgICB2YXIgdzEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxID4+PiAyNikpIHwgMDtcbiAgICB3MSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDIsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgyKSkgfCAwO1xuICAgIHZhciB3MiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzIgPj4+IDI2KSkgfCAwO1xuICAgIHcyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwzLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgzLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgzKSkgfCAwO1xuICAgIHZhciB3MyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzMgPj4+IDI2KSkgfCAwO1xuICAgIHczICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw0LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg0LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNCkpIHwgMDtcbiAgICB2YXIgdzQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc0ID4+PiAyNikpIHwgMDtcbiAgICB3NCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDUsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg1KSkgfCAwO1xuICAgIHZhciB3NSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzUgPj4+IDI2KSkgfCAwO1xuICAgIHc1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw2LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg2LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg2KSkgfCAwO1xuICAgIHZhciB3NiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzYgPj4+IDI2KSkgfCAwO1xuICAgIHc2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNywgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw3LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg3LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNykpIHwgMDtcbiAgICB2YXIgdzcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc3ID4+PiAyNikpIHwgMDtcbiAgICB3NyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDgsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg4KSkgfCAwO1xuICAgIHZhciB3OCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzggPj4+IDI2KSkgfCAwO1xuICAgIHc4ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg5KSkgfCAwO1xuICAgIHZhciB3OSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzkgPj4+IDI2KSkgfCAwO1xuICAgIHc5ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgxKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwxKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgxKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMCA+Pj4gMjYpKSB8IDA7XG4gICAgdzEwICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgyKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwyKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgyKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzExID4+PiAyNikpIHwgMDtcbiAgICB3MTEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwzKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDMpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDMpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDMpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMiA+Pj4gMjYpKSB8IDA7XG4gICAgdzEyICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg0KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw0KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg0KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMyA+Pj4gMjYpKSB8IDA7XG4gICAgdzEzICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg1KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw1KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg1KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE0ID4+PiAyNikpIHwgMDtcbiAgICB3MTQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw2KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDYpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDYpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDYpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNSA+Pj4gMjYpKSB8IDA7XG4gICAgdzE1ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg3KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw3KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg3KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg5KSkgfCAwO1xuICAgIHZhciB3MTYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNiA+Pj4gMjYpKSB8IDA7XG4gICAgdzE2ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg4KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw4KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg4KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE3ID4+PiAyNikpIHwgMDtcbiAgICB3MTcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw5KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDkpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDkpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDkpO1xuICAgIHZhciB3MTggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxOCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE4ICY9IDB4M2ZmZmZmZjtcbiAgICBvWzBdID0gdzA7XG4gICAgb1sxXSA9IHcxO1xuICAgIG9bMl0gPSB3MjtcbiAgICBvWzNdID0gdzM7XG4gICAgb1s0XSA9IHc0O1xuICAgIG9bNV0gPSB3NTtcbiAgICBvWzZdID0gdzY7XG4gICAgb1s3XSA9IHc3O1xuICAgIG9bOF0gPSB3ODtcbiAgICBvWzldID0gdzk7XG4gICAgb1sxMF0gPSB3MTA7XG4gICAgb1sxMV0gPSB3MTE7XG4gICAgb1sxMl0gPSB3MTI7XG4gICAgb1sxM10gPSB3MTM7XG4gICAgb1sxNF0gPSB3MTQ7XG4gICAgb1sxNV0gPSB3MTU7XG4gICAgb1sxNl0gPSB3MTY7XG4gICAgb1sxN10gPSB3MTc7XG4gICAgb1sxOF0gPSB3MTg7XG4gICAgaWYgKGMgIT09IDApIHtcbiAgICAgIG9bMTldID0gYztcbiAgICAgIG91dC5sZW5ndGgrKztcbiAgICB9XG4gICAgcmV0dXJuIG91dDtcbiAgfTtcblxuICAvLyBQb2x5ZmlsbCBjb21iXG4gIGlmICghTWF0aC5pbXVsKSB7XG4gICAgY29tYjEwTXVsVG8gPSBzbWFsbE11bFRvO1xuICB9XG5cbiAgZnVuY3Rpb24gYmlnTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgb3V0Lm5lZ2F0aXZlID0gbnVtLm5lZ2F0aXZlIF4gc2VsZi5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICB2YXIgaG5jYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBvdXQubGVuZ3RoIC0gMTsgaysrKSB7XG4gICAgICAvLyBTdW0gYWxsIHdvcmRzIHdpdGggdGhlIHNhbWUgYGkgKyBqID0ga2AgYW5kIGFjY3VtdWxhdGUgYG5jYXJyeWAsXG4gICAgICAvLyBub3RlIHRoYXQgbmNhcnJ5IGNvdWxkIGJlID49IDB4M2ZmZmZmZlxuICAgICAgdmFyIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgICBobmNhcnJ5ID0gMDtcbiAgICAgIHZhciByd29yZCA9IGNhcnJ5ICYgMHgzZmZmZmZmO1xuICAgICAgdmFyIG1heEogPSBNYXRoLm1pbihrLCBudW0ubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBqID0gTWF0aC5tYXgoMCwgayAtIHNlbGYubGVuZ3RoICsgMSk7IGogPD0gbWF4SjsgaisrKSB7XG4gICAgICAgIHZhciBpID0gayAtIGo7XG4gICAgICAgIHZhciBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIHZhciBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgdmFyIHIgPSBhICogYjtcblxuICAgICAgICB2YXIgbG8gPSByICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKChyIC8gMHg0MDAwMDAwKSB8IDApKSB8IDA7XG4gICAgICAgIGxvID0gKGxvICsgcndvcmQpIHwgMDtcbiAgICAgICAgcndvcmQgPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArIChsbyA+Pj4gMjYpKSB8IDA7XG5cbiAgICAgICAgaG5jYXJyeSArPSBuY2FycnkgPj4+IDI2O1xuICAgICAgICBuY2FycnkgJj0gMHgzZmZmZmZmO1xuICAgICAgfVxuICAgICAgb3V0LndvcmRzW2tdID0gcndvcmQ7XG4gICAgICBjYXJyeSA9IG5jYXJyeTtcbiAgICAgIG5jYXJyeSA9IGhuY2Fycnk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2Fycnk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICBmdW5jdGlvbiBqdW1ib011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBmZnRtID0gbmV3IEZGVE0oKTtcbiAgICByZXR1cm4gZmZ0bS5tdWxwKHNlbGYsIG51bSwgb3V0KTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5tdWxUbyA9IGZ1bmN0aW9uIG11bFRvIChudW0sIG91dCkge1xuICAgIHZhciByZXM7XG4gICAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aDtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEwICYmIG51bS5sZW5ndGggPT09IDEwKSB7XG4gICAgICByZXMgPSBjb21iMTBNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCA2Mykge1xuICAgICAgcmVzID0gc21hbGxNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIGlmIChsZW4gPCAxMDI0KSB7XG4gICAgICByZXMgPSBiaWdNdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29vbGV5LVR1a2V5IGFsZ29yaXRobSBmb3IgRkZUXG4gIC8vIHNsaWdodGx5IHJldmlzaXRlZCB0byByZWx5IG9uIGxvb3BpbmcgaW5zdGVhZCBvZiByZWN1cnNpb25cblxuICBmdW5jdGlvbiBGRlRNICh4LCB5KSB7XG4gICAgdGhpcy54ID0geDtcbiAgICB0aGlzLnkgPSB5O1xuICB9XG5cbiAgRkZUTS5wcm90b3R5cGUubWFrZVJCVCA9IGZ1bmN0aW9uIG1ha2VSQlQgKE4pIHtcbiAgICB2YXIgdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbCA9IEJOLnByb3RvdHlwZS5fY291bnRCaXRzKE4pIC0gMTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdFtpXSA9IHRoaXMucmV2QmluKGksIGwsIE4pO1xuICAgIH1cblxuICAgIHJldHVybiB0O1xuICB9O1xuXG4gIC8vIFJldHVybnMgYmluYXJ5LXJldmVyc2VkIHJlcHJlc2VudGF0aW9uIG9mIGB4YFxuICBGRlRNLnByb3RvdHlwZS5yZXZCaW4gPSBmdW5jdGlvbiByZXZCaW4gKHgsIGwsIE4pIHtcbiAgICBpZiAoeCA9PT0gMCB8fCB4ID09PSBOIC0gMSkgcmV0dXJuIHg7XG5cbiAgICB2YXIgcmIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICByYiB8PSAoeCAmIDEpIDw8IChsIC0gaSAtIDEpO1xuICAgICAgeCA+Pj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmI7XG4gIH07XG5cbiAgLy8gUGVyZm9ybXMgXCJ0d2VlZGxpbmdcIiBwaGFzZSwgdGhlcmVmb3JlICdlbXVsYXRpbmcnXG4gIC8vIGJlaGF2aW91ciBvZiB0aGUgcmVjdXJzaXZlIGFsZ29yaXRobVxuICBGRlRNLnByb3RvdHlwZS5wZXJtdXRlID0gZnVuY3Rpb24gcGVybXV0ZSAocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTikge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBydHdzW2ldID0gcndzW3JidFtpXV07XG4gICAgICBpdHdzW2ldID0gaXdzW3JidFtpXV07XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uIHRyYW5zZm9ybSAocndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4sIHJidCkge1xuICAgIHRoaXMucGVybXV0ZShyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKTtcblxuICAgIGZvciAodmFyIHMgPSAxOyBzIDwgTjsgcyA8PD0gMSkge1xuICAgICAgdmFyIGwgPSBzIDw8IDE7XG5cbiAgICAgIHZhciBydHdkZiA9IE1hdGguY29zKDIgKiBNYXRoLlBJIC8gbCk7XG4gICAgICB2YXIgaXR3ZGYgPSBNYXRoLnNpbigyICogTWF0aC5QSSAvIGwpO1xuXG4gICAgICBmb3IgKHZhciBwID0gMDsgcCA8IE47IHAgKz0gbCkge1xuICAgICAgICB2YXIgcnR3ZGZfID0gcnR3ZGY7XG4gICAgICAgIHZhciBpdHdkZl8gPSBpdHdkZjtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHM7IGorKykge1xuICAgICAgICAgIHZhciByZSA9IHJ0d3NbcCArIGpdO1xuICAgICAgICAgIHZhciBpZSA9IGl0d3NbcCArIGpdO1xuXG4gICAgICAgICAgdmFyIHJvID0gcnR3c1twICsgaiArIHNdO1xuICAgICAgICAgIHZhciBpbyA9IGl0d3NbcCArIGogKyBzXTtcblxuICAgICAgICAgIHZhciByeCA9IHJ0d2RmXyAqIHJvIC0gaXR3ZGZfICogaW87XG5cbiAgICAgICAgICBpbyA9IHJ0d2RmXyAqIGlvICsgaXR3ZGZfICogcm87XG4gICAgICAgICAgcm8gPSByeDtcblxuICAgICAgICAgIHJ0d3NbcCArIGpdID0gcmUgKyBybztcbiAgICAgICAgICBpdHdzW3AgKyBqXSA9IGllICsgaW87XG5cbiAgICAgICAgICBydHdzW3AgKyBqICsgc10gPSByZSAtIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGogKyBzXSA9IGllIC0gaW87XG5cbiAgICAgICAgICAvKiBqc2hpbnQgbWF4ZGVwdGggOiBmYWxzZSAqL1xuICAgICAgICAgIGlmIChqICE9PSBsKSB7XG4gICAgICAgICAgICByeCA9IHJ0d2RmICogcnR3ZGZfIC0gaXR3ZGYgKiBpdHdkZl87XG5cbiAgICAgICAgICAgIGl0d2RmXyA9IHJ0d2RmICogaXR3ZGZfICsgaXR3ZGYgKiBydHdkZl87XG4gICAgICAgICAgICBydHdkZl8gPSByeDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuZ3Vlc3NMZW4xM2IgPSBmdW5jdGlvbiBndWVzc0xlbjEzYiAobiwgbSkge1xuICAgIHZhciBOID0gTWF0aC5tYXgobSwgbikgfCAxO1xuICAgIHZhciBvZGQgPSBOICYgMTtcbiAgICB2YXIgaSA9IDA7XG4gICAgZm9yIChOID0gTiAvIDIgfCAwOyBOOyBOID0gTiA+Pj4gMSkge1xuICAgICAgaSsrO1xuICAgIH1cblxuICAgIHJldHVybiAxIDw8IGkgKyAxICsgb2RkO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbmp1Z2F0ZSA9IGZ1bmN0aW9uIGNvbmp1Z2F0ZSAocndzLCBpd3MsIE4pIHtcbiAgICBpZiAoTiA8PSAxKSByZXR1cm47XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB0ID0gcndzW2ldO1xuXG4gICAgICByd3NbaV0gPSByd3NbTiAtIGkgLSAxXTtcbiAgICAgIHJ3c1tOIC0gaSAtIDFdID0gdDtcblxuICAgICAgdCA9IGl3c1tpXTtcblxuICAgICAgaXdzW2ldID0gLWl3c1tOIC0gaSAtIDFdO1xuICAgICAgaXdzW04gLSBpIC0gMV0gPSAtdDtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubm9ybWFsaXplMTNiID0gZnVuY3Rpb24gbm9ybWFsaXplMTNiICh3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdyA9IE1hdGgucm91bmQod3NbMiAqIGkgKyAxXSAvIE4pICogMHgyMDAwICtcbiAgICAgICAgTWF0aC5yb3VuZCh3c1syICogaV0gLyBOKSArXG4gICAgICAgIGNhcnJ5O1xuXG4gICAgICB3c1tpXSA9IHcgJiAweDNmZmZmZmY7XG5cbiAgICAgIGlmICh3IDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIGNhcnJ5ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNhcnJ5ID0gdyAvIDB4NDAwMDAwMCB8IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHdzO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmNvbnZlcnQxM2IgPSBmdW5jdGlvbiBjb252ZXJ0MTNiICh3cywgbGVuLCByd3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNhcnJ5ID0gY2FycnkgKyAod3NbaV0gfCAwKTtcblxuICAgICAgcndzWzIgKiBpXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICAgIHJ3c1syICogaSArIDFdID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgIH1cblxuICAgIC8vIFBhZCB3aXRoIHplcm9lc1xuICAgIGZvciAoaSA9IDIgKiBsZW47IGkgPCBOOyArK2kpIHtcbiAgICAgIHJ3c1tpXSA9IDA7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAwKTtcbiAgICBhc3NlcnQoKGNhcnJ5ICYgfjB4MWZmZikgPT09IDApO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLnN0dWIgPSBmdW5jdGlvbiBzdHViIChOKSB7XG4gICAgdmFyIHBoID0gbmV3IEFycmF5KE4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICBwaFtpXSA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBoO1xuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm11bHAgPSBmdW5jdGlvbiBtdWxwICh4LCB5LCBvdXQpIHtcbiAgICB2YXIgTiA9IDIgKiB0aGlzLmd1ZXNzTGVuMTNiKHgubGVuZ3RoLCB5Lmxlbmd0aCk7XG5cbiAgICB2YXIgcmJ0ID0gdGhpcy5tYWtlUkJUKE4pO1xuXG4gICAgdmFyIF8gPSB0aGlzLnN0dWIoTik7XG5cbiAgICB2YXIgcndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciByd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBpd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIG5yd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5yd3N0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBuaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBybXdzID0gb3V0LndvcmRzO1xuICAgIHJtd3MubGVuZ3RoID0gTjtcblxuICAgIHRoaXMuY29udmVydDEzYih4LndvcmRzLCB4Lmxlbmd0aCwgcndzLCBOKTtcbiAgICB0aGlzLmNvbnZlcnQxM2IoeS53b3JkcywgeS5sZW5ndGgsIG5yd3MsIE4pO1xuXG4gICAgdGhpcy50cmFuc2Zvcm0ocndzLCBfLCByd3N0LCBpd3N0LCBOLCByYnQpO1xuICAgIHRoaXMudHJhbnNmb3JtKG5yd3MsIF8sIG5yd3N0LCBuaXdzdCwgTiwgcmJ0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB2YXIgcnggPSByd3N0W2ldICogbnJ3c3RbaV0gLSBpd3N0W2ldICogbml3c3RbaV07XG4gICAgICBpd3N0W2ldID0gcndzdFtpXSAqIG5pd3N0W2ldICsgaXdzdFtpXSAqIG5yd3N0W2ldO1xuICAgICAgcndzdFtpXSA9IHJ4O1xuICAgIH1cblxuICAgIHRoaXMuY29uanVnYXRlKHJ3c3QsIGl3c3QsIE4pO1xuICAgIHRoaXMudHJhbnNmb3JtKHJ3c3QsIGl3c3QsIHJtd3MsIF8sIE4sIHJidCk7XG4gICAgdGhpcy5jb25qdWdhdGUocm13cywgXywgTik7XG4gICAgdGhpcy5ub3JtYWxpemUxM2Iocm13cywgTik7XG5cbiAgICBvdXQubmVnYXRpdmUgPSB4Lm5lZ2F0aXZlIF4geS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0geC5sZW5ndGggKyB5Lmxlbmd0aDtcbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgYHRoaXNgIGJ5IGBudW1gXG4gIEJOLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIHRoaXMubXVsVG8obnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGVtcGxveWluZyBGRlRcbiAgQk4ucHJvdG90eXBlLm11bGYgPSBmdW5jdGlvbiBtdWxmIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBNdWx0aXBsaWNhdGlvblxuICBCTi5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkubXVsVG8obnVtLCB0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW11bG4gPSBmdW5jdGlvbiBpbXVsbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcblxuICAgIC8vIENhcnJ5XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSAqIG51bTtcbiAgICAgIHZhciBsbyA9ICh3ICYgMHgzZmZmZmZmKSArIChjYXJyeSAmIDB4M2ZmZmZmZik7XG4gICAgICBjYXJyeSA+Pj0gMjY7XG4gICAgICBjYXJyeSArPSAodyAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgLy8gTk9URTogbG8gaXMgMjdiaXQgbWF4aW11bVxuICAgICAgY2FycnkgKz0gbG8gPj4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubXVsbiA9IGZ1bmN0aW9uIG11bG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW11bG4obnVtKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKHRoaXMpO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLmltdWwodGhpcy5jbG9uZSgpKTtcbiAgfTtcblxuICAvLyBNYXRoLnBvdyhgdGhpc2AsIGBudW1gKVxuICBCTi5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChudW0pIHtcbiAgICB2YXIgdyA9IHRvQml0QXJyYXkobnVtKTtcbiAgICBpZiAody5sZW5ndGggPT09IDApIHJldHVybiBuZXcgQk4oMSk7XG5cbiAgICAvLyBTa2lwIGxlYWRpbmcgemVyb2VzXG4gICAgdmFyIHJlcyA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3Lmxlbmd0aDsgaSsrLCByZXMgPSByZXMuc3FyKCkpIHtcbiAgICAgIGlmICh3W2ldICE9PSAwKSBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoKytpIDwgdy5sZW5ndGgpIHtcbiAgICAgIGZvciAodmFyIHEgPSByZXMuc3FyKCk7IGkgPCB3Lmxlbmd0aDsgaSsrLCBxID0gcS5zcXIoKSkge1xuICAgICAgICBpZiAod1tpXSA9PT0gMCkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gcmVzLm11bChxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnQgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1c2hsbiA9IGZ1bmN0aW9uIGl1c2hsbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcbiAgICB2YXIgY2FycnlNYXNrID0gKDB4M2ZmZmZmZiA+Pj4gKDI2IC0gcikpIDw8ICgyNiAtIHIpO1xuICAgIHZhciBpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBuZXdDYXJyeSA9IHRoaXMud29yZHNbaV0gJiBjYXJyeU1hc2s7XG4gICAgICAgIHZhciBjID0gKCh0aGlzLndvcmRzW2ldIHwgMCkgLSBuZXdDYXJyeSkgPDwgcjtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGMgfCBjYXJyeTtcbiAgICAgICAgY2FycnkgPSBuZXdDYXJyeSA+Pj4gKDI2IC0gcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChjYXJyeSkge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHMgIT09IDApIHtcbiAgICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgc10gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxlbmd0aCArPSBzO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaGxuID0gZnVuY3Rpb24gaXNobG4gKGJpdHMpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0IGluLXBsYWNlXG4gIC8vIE5PVEU6IGBoaW50YCBpcyBhIGxvd2VzdCBiaXQgYmVmb3JlIHRyYWlsaW5nIHplcm9lc1xuICAvLyBOT1RFOiBpZiBgZXh0ZW5kZWRgIGlzIHByZXNlbnQgLSBpdCB3aWxsIGJlIGZpbGxlZCB3aXRoIGRlc3Ryb3llZCBiaXRzXG4gIEJOLnByb3RvdHlwZS5pdXNocm4gPSBmdW5jdGlvbiBpdXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciBoO1xuICAgIGlmIChoaW50KSB7XG4gICAgICBoID0gKGhpbnQgLSAoaGludCAlIDI2KSkgLyAyNjtcbiAgICB9IGVsc2Uge1xuICAgICAgaCA9IDA7XG4gICAgfVxuXG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSBNYXRoLm1pbigoYml0cyAtIHIpIC8gMjYsIHRoaXMubGVuZ3RoKTtcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICB2YXIgbWFza2VkV29yZHMgPSBleHRlbmRlZDtcblxuICAgIGggLT0gcztcbiAgICBoID0gTWF0aC5tYXgoMCwgaCk7XG5cbiAgICAvLyBFeHRlbmRlZCBtb2RlLCBjb3B5IG1hc2tlZCBwYXJ0XG4gICAgaWYgKG1hc2tlZFdvcmRzKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICBtYXNrZWRXb3Jkcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG4gICAgICBtYXNrZWRXb3Jkcy5sZW5ndGggPSBzO1xuICAgIH1cblxuICAgIGlmIChzID09PSAwKSB7XG4gICAgICAvLyBOby1vcCwgd2Ugc2hvdWxkIG5vdCBtb3ZlIGFueXRoaW5nIGF0IGFsbFxuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPiBzKSB7XG4gICAgICB0aGlzLmxlbmd0aCAtPSBzO1xuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaSArIHNdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwICYmIChjYXJyeSAhPT0gMCB8fCBpID49IGgpOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKGNhcnJ5IDw8ICgyNiAtIHIpKSB8ICh3b3JkID4+PiByKTtcbiAgICAgIGNhcnJ5ID0gd29yZCAmIG1hc2s7XG4gICAgfVxuXG4gICAgLy8gUHVzaCBjYXJyaWVkIGJpdHMgYXMgYSBtYXNrXG4gICAgaWYgKG1hc2tlZFdvcmRzICYmIGNhcnJ5ICE9PSAwKSB7XG4gICAgICBtYXNrZWRXb3Jkcy53b3Jkc1ttYXNrZWRXb3Jkcy5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzaHJuID0gZnVuY3Rpb24gaXNocm4gKGJpdHMsIGhpbnQsIGV4dGVuZGVkKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hybihiaXRzLCBoaW50LCBleHRlbmRlZCk7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdFxuICBCTi5wcm90b3R5cGUuc2hsbiA9IGZ1bmN0aW9uIHNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaGxuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hsbiA9IGZ1bmN0aW9uIHVzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHRcbiAgQk4ucHJvdG90eXBlLnNocm4gPSBmdW5jdGlvbiBzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hybihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNocm4gPSBmdW5jdGlvbiB1c2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaHJuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFRlc3QgaWYgbiBiaXQgaXMgc2V0XG4gIEJOLnByb3RvdHlwZS50ZXN0biA9IGZ1bmN0aW9uIHRlc3RuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHJldHVybiBmYWxzZTtcblxuICAgIC8vIENoZWNrIGJpdCBhbmQgcmV0dXJuXG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3NdO1xuXG4gICAgcmV0dXJuICEhKHcgJiBxKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXIgKGluLXBsYWNlKVxuICBCTi5wcm90b3R5cGUuaW1hc2tuID0gZnVuY3Rpb24gaW1hc2tuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdpbWFza24gd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlIG51bWJlcnMnKTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgcysrO1xuICAgIH1cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWluKHMsIHRoaXMubGVuZ3RoKTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgbWFzayA9IDB4M2ZmZmZmZiBeICgoMHgzZmZmZmZmID4+PiByKSA8PCByKTtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGggLSAxXSAmPSBtYXNrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyXG4gIEJOLnByb3RvdHlwZS5tYXNrbiA9IGZ1bmN0aW9uIG1hc2tuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbWFza24oYml0cyk7XG4gIH07XG5cbiAgLy8gQWRkIHBsYWluIG51bWJlciBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlhZGRuID0gZnVuY3Rpb24gaWFkZG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlzdWJuKC1udW0pO1xuXG4gICAgLy8gUG9zc2libGUgc2lnbiBjaGFuZ2VcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmICh0aGlzLndvcmRzWzBdIHwgMCkgPCBudW0pIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSA9IG51bSAtICh0aGlzLndvcmRzWzBdIHwgMCk7XG4gICAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlzdWJuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCB3aXRob3V0IGNoZWNrc1xuICAgIHJldHVybiB0aGlzLl9pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faWFkZG4gPSBmdW5jdGlvbiBfaWFkZG4gKG51bSkge1xuICAgIHRoaXMud29yZHNbMF0gKz0gbnVtO1xuXG4gICAgLy8gQ2FycnlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPj0gMHg0MDAwMDAwOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gLT0gMHg0MDAwMDAwO1xuICAgICAgaWYgKGkgPT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSsrO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoLCBpICsgMSk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBwbGFpbiBudW1iZXIgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmlzdWJuID0gZnVuY3Rpb24gaXN1Ym4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG4gICAgaWYgKG51bSA8IDApIHJldHVybiB0aGlzLmlhZGRuKC1udW0pO1xuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkbihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLndvcmRzWzBdIC09IG51bTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdIDwgMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IC10aGlzLndvcmRzWzBdO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENhcnJ5XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoICYmIHRoaXMud29yZHNbaV0gPCAwOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSArPSAweDQwMDAwMDA7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdIC09IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWRkbiA9IGZ1bmN0aW9uIGFkZG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuc3VibiA9IGZ1bmN0aW9uIHN1Ym4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXN1Ym4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFicyA9IGZ1bmN0aW9uIGlhYnMgKCkge1xuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uIGFicyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWJzKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pc2hsbnN1Ym11bCA9IGZ1bmN0aW9uIF9pc2hsbnN1Ym11bCAobnVtLCBtdWwsIHNoaWZ0KSB7XG4gICAgdmFyIGxlbiA9IG51bS5sZW5ndGggKyBzaGlmdDtcbiAgICB2YXIgaTtcblxuICAgIHRoaXMuX2V4cGFuZChsZW4pO1xuXG4gICAgdmFyIHc7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICB2YXIgcmlnaHQgPSAobnVtLndvcmRzW2ldIHwgMCkgKiBtdWw7XG4gICAgICB3IC09IHJpZ2h0ICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSAodyA+PiAyNikgLSAoKHJpZ2h0IC8gMHg0MDAwMDAwKSB8IDApO1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGkgPCB0aGlzLmxlbmd0aCAtIHNoaWZ0OyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ID09PSAwKSByZXR1cm4gdGhpcy5zdHJpcCgpO1xuXG4gICAgLy8gU3VidHJhY3Rpb24gb3ZlcmZsb3dcbiAgICBhc3NlcnQoY2FycnkgPT09IC0xKTtcbiAgICBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAtKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX3dvcmREaXYgPSBmdW5jdGlvbiBfd29yZERpdiAobnVtLCBtb2RlKSB7XG4gICAgdmFyIHNoaWZ0ID0gdGhpcy5sZW5ndGggLSBudW0ubGVuZ3RoO1xuXG4gICAgdmFyIGEgPSB0aGlzLmNsb25lKCk7XG4gICAgdmFyIGIgPSBudW07XG5cbiAgICAvLyBOb3JtYWxpemVcbiAgICB2YXIgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB2YXIgYmhpQml0cyA9IHRoaXMuX2NvdW50Qml0cyhiaGkpO1xuICAgIHNoaWZ0ID0gMjYgLSBiaGlCaXRzO1xuICAgIGlmIChzaGlmdCAhPT0gMCkge1xuICAgICAgYiA9IGIudXNobG4oc2hpZnQpO1xuICAgICAgYS5pdXNobG4oc2hpZnQpO1xuICAgICAgYmhpID0gYi53b3Jkc1tiLmxlbmd0aCAtIDFdIHwgMDtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIHF1b3RpZW50XG4gICAgdmFyIG0gPSBhLmxlbmd0aCAtIGIubGVuZ3RoO1xuICAgIHZhciBxO1xuXG4gICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICBxID0gbmV3IEJOKG51bGwpO1xuICAgICAgcS5sZW5ndGggPSBtICsgMTtcbiAgICAgIHEud29yZHMgPSBuZXcgQXJyYXkocS5sZW5ndGgpO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHEud29yZHNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkaWZmID0gYS5jbG9uZSgpLl9pc2hsbnN1Ym11bChiLCAxLCBtKTtcbiAgICBpZiAoZGlmZi5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgYSA9IGRpZmY7XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW21dID0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBqID0gbSAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICB2YXIgcWogPSAoYS53b3Jkc1tiLmxlbmd0aCArIGpdIHwgMCkgKiAweDQwMDAwMDAgK1xuICAgICAgICAoYS53b3Jkc1tiLmxlbmd0aCArIGogLSAxXSB8IDApO1xuXG4gICAgICAvLyBOT1RFOiAocWogLyBiaGkpIGlzICgweDNmZmZmZmYgKiAweDQwMDAwMDAgKyAweDNmZmZmZmYpIC8gMHgyMDAwMDAwIG1heFxuICAgICAgLy8gKDB4N2ZmZmZmZilcbiAgICAgIHFqID0gTWF0aC5taW4oKHFqIC8gYmhpKSB8IDAsIDB4M2ZmZmZmZik7XG5cbiAgICAgIGEuX2lzaGxuc3VibXVsKGIsIHFqLCBqKTtcbiAgICAgIHdoaWxlIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIHFqLS07XG4gICAgICAgIGEubmVnYXRpdmUgPSAwO1xuICAgICAgICBhLl9pc2hsbnN1Ym11bChiLCAxLCBqKTtcbiAgICAgICAgaWYgKCFhLmlzWmVybygpKSB7XG4gICAgICAgICAgYS5uZWdhdGl2ZSBePSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocSkge1xuICAgICAgICBxLndvcmRzW2pdID0gcWo7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChxKSB7XG4gICAgICBxLnN0cmlwKCk7XG4gICAgfVxuICAgIGEuc3RyaXAoKTtcblxuICAgIC8vIERlbm9ybWFsaXplXG4gICAgaWYgKG1vZGUgIT09ICdkaXYnICYmIHNoaWZ0ICE9PSAwKSB7XG4gICAgICBhLml1c2hybihzaGlmdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRpdjogcSB8fCBudWxsLFxuICAgICAgbW9kOiBhXG4gICAgfTtcbiAgfTtcblxuICAvLyBOT1RFOiAxKSBgbW9kZWAgY2FuIGJlIHNldCB0byBgbW9kYCB0byByZXF1ZXN0IG1vZCBvbmx5LFxuICAvLyAgICAgICB0byBgZGl2YCB0byByZXF1ZXN0IGRpdiBvbmx5LCBvciBiZSBhYnNlbnQgdG9cbiAgLy8gICAgICAgcmVxdWVzdCBib3RoIGRpdiAmIG1vZFxuICAvLyAgICAgICAyKSBgcG9zaXRpdmVgIGlzIHRydWUgaWYgdW5zaWduZWQgbW9kIGlzIHJlcXVlc3RlZFxuICBCTi5wcm90b3R5cGUuZGl2bW9kID0gZnVuY3Rpb24gZGl2bW9kIChudW0sIG1vZGUsIHBvc2l0aXZlKSB7XG4gICAgYXNzZXJ0KCFudW0uaXNaZXJvKCkpO1xuXG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IG5ldyBCTigwKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgZGl2LCBtb2QsIHJlcztcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pYWRkKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IHJlcy5tb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCh0aGlzLm5lZ2F0aXZlICYgbnVtLm5lZ2F0aXZlKSAhPT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLm5lZygpLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaXN1YihudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogcmVzLmRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gQm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZSBhdCB0aGlzIHBvaW50XG5cbiAgICAvLyBTdHJpcCBib3RoIG51bWJlcnMgdG8gYXBwcm94aW1hdGUgc2hpZnQgdmFsdWVcbiAgICBpZiAobnVtLmxlbmd0aCA+IHRoaXMubGVuZ3RoIHx8IHRoaXMuY21wKG51bSkgPCAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiB0aGlzXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFZlcnkgc2hvcnQgcmVkdWN0aW9uXG4gICAgaWYgKG51bS5sZW5ndGggPT09IDEpIHtcbiAgICAgIGlmIChtb2RlID09PSAnZGl2Jykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgICAgbW9kOiBudWxsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlID09PSAnbW9kJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRpdjogbnVsbCxcbiAgICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl93b3JkRGl2KG51bSwgbW9kZSk7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgLyBgbnVtYFxuICBCTi5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gZGl2IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnZGl2JywgZmFsc2UpLmRpdjtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAlIGBudW1gXG4gIEJOLnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiBtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCBmYWxzZSkubW9kO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51bW9kID0gZnVuY3Rpb24gdW1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIHRydWUpLm1vZDtcbiAgfTtcblxuICAvLyBGaW5kIFJvdW5kKGB0aGlzYCAvIGBudW1gKVxuICBCTi5wcm90b3R5cGUuZGl2Um91bmQgPSBmdW5jdGlvbiBkaXZSb3VuZCAobnVtKSB7XG4gICAgdmFyIGRtID0gdGhpcy5kaXZtb2QobnVtKTtcblxuICAgIC8vIEZhc3QgY2FzZSAtIGV4YWN0IGRpdmlzaW9uXG4gICAgaWYgKGRtLm1vZC5pc1plcm8oKSkgcmV0dXJuIGRtLmRpdjtcblxuICAgIHZhciBtb2QgPSBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5tb2QuaXN1YihudW0pIDogZG0ubW9kO1xuXG4gICAgdmFyIGhhbGYgPSBudW0udXNocm4oMSk7XG4gICAgdmFyIHIyID0gbnVtLmFuZGxuKDEpO1xuICAgIHZhciBjbXAgPSBtb2QuY21wKGhhbGYpO1xuXG4gICAgLy8gUm91bmQgZG93blxuICAgIGlmIChjbXAgPCAwIHx8IHIyID09PSAxICYmIGNtcCA9PT0gMCkgcmV0dXJuIGRtLmRpdjtcblxuICAgIC8vIFJvdW5kIHVwXG4gICAgcmV0dXJuIGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLmRpdi5pc3VibigxKSA6IGRtLmRpdi5pYWRkbigxKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubW9kbiA9IGZ1bmN0aW9uIG1vZG4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcbiAgICB2YXIgcCA9ICgxIDw8IDI2KSAlIG51bTtcblxuICAgIHZhciBhY2MgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBhY2MgPSAocCAqIGFjYyArICh0aGlzLndvcmRzW2ldIHwgMCkpICUgbnVtO1xuICAgIH1cblxuICAgIHJldHVybiBhY2M7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgZGl2aXNpb24gYnkgbnVtYmVyXG4gIEJOLnByb3RvdHlwZS5pZGl2biA9IGZ1bmN0aW9uIGlkaXZuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeSAqIDB4NDAwMDAwMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAodyAvIG51bSkgfCAwO1xuICAgICAgY2FycnkgPSB3ICUgbnVtO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmRpdm4gPSBmdW5jdGlvbiBkaXZuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlkaXZuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVnY2QgPSBmdW5jdGlvbiBlZ2NkIChwKSB7XG4gICAgYXNzZXJ0KHAubmVnYXRpdmUgPT09IDApO1xuICAgIGFzc2VydCghcC5pc1plcm8oKSk7XG5cbiAgICB2YXIgeCA9IHRoaXM7XG4gICAgdmFyIHkgPSBwLmNsb25lKCk7XG5cbiAgICBpZiAoeC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgeCA9IHgudW1vZChwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHguY2xvbmUoKTtcbiAgICB9XG5cbiAgICAvLyBBICogeCArIEIgKiB5ID0geFxuICAgIHZhciBBID0gbmV3IEJOKDEpO1xuICAgIHZhciBCID0gbmV3IEJOKDApO1xuXG4gICAgLy8gQyAqIHggKyBEICogeSA9IHlcbiAgICB2YXIgQyA9IG5ldyBCTigwKTtcbiAgICB2YXIgRCA9IG5ldyBCTigxKTtcblxuICAgIHZhciBnID0gMDtcblxuICAgIHdoaWxlICh4LmlzRXZlbigpICYmIHkuaXNFdmVuKCkpIHtcbiAgICAgIHguaXVzaHJuKDEpO1xuICAgICAgeS5pdXNocm4oMSk7XG4gICAgICArK2c7XG4gICAgfVxuXG4gICAgdmFyIHlwID0geS5jbG9uZSgpO1xuICAgIHZhciB4cCA9IHguY2xvbmUoKTtcblxuICAgIHdoaWxlICgheC5pc1plcm8oKSkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGltID0gMTsgKHgud29yZHNbMF0gJiBpbSkgPT09IDAgJiYgaSA8IDI2OyArK2ksIGltIDw8PSAxKTtcbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICB4Lml1c2hybihpKTtcbiAgICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgICBpZiAoQS5pc09kZCgpIHx8IEIuaXNPZGQoKSkge1xuICAgICAgICAgICAgQS5pYWRkKHlwKTtcbiAgICAgICAgICAgIEIuaXN1Yih4cCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQS5pdXNocm4oMSk7XG4gICAgICAgICAgQi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKHkud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICB5Lml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoQy5pc09kZCgpIHx8IEQuaXNPZGQoKSkge1xuICAgICAgICAgICAgQy5pYWRkKHlwKTtcbiAgICAgICAgICAgIEQuaXN1Yih4cCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQy5pdXNocm4oMSk7XG4gICAgICAgICAgRC5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHguY21wKHkpID49IDApIHtcbiAgICAgICAgeC5pc3ViKHkpO1xuICAgICAgICBBLmlzdWIoQyk7XG4gICAgICAgIEIuaXN1YihEKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHkuaXN1Yih4KTtcbiAgICAgICAgQy5pc3ViKEEpO1xuICAgICAgICBELmlzdWIoQik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGE6IEMsXG4gICAgICBiOiBELFxuICAgICAgZ2NkOiB5Lml1c2hsbihnKVxuICAgIH07XG4gIH07XG5cbiAgLy8gVGhpcyBpcyByZWR1Y2VkIGluY2FybmF0aW9uIG9mIHRoZSBiaW5hcnkgRUVBXG4gIC8vIGFib3ZlLCBkZXNpZ25hdGVkIHRvIGludmVydCBtZW1iZXJzIG9mIHRoZVxuICAvLyBfcHJpbWVfIGZpZWxkcyBGKHApIGF0IGEgbWF4aW1hbCBzcGVlZFxuICBCTi5wcm90b3R5cGUuX2ludm1wID0gZnVuY3Rpb24gX2ludm1wIChwKSB7XG4gICAgYXNzZXJ0KHAubmVnYXRpdmUgPT09IDApO1xuICAgIGFzc2VydCghcC5pc1plcm8oKSk7XG5cbiAgICB2YXIgYSA9IHRoaXM7XG4gICAgdmFyIGIgPSBwLmNsb25lKCk7XG5cbiAgICBpZiAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgYSA9IGEudW1vZChwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IGEuY2xvbmUoKTtcbiAgICB9XG5cbiAgICB2YXIgeDEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIHgyID0gbmV3IEJOKDApO1xuXG4gICAgdmFyIGRlbHRhID0gYi5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKGEuY21wbigxKSA+IDAgJiYgYi5jbXBuKDEpID4gMCkge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGltID0gMTsgKGEud29yZHNbMF0gJiBpbSkgPT09IDAgJiYgaSA8IDI2OyArK2ksIGltIDw8PSAxKTtcbiAgICAgIGlmIChpID4gMCkge1xuICAgICAgICBhLml1c2hybihpKTtcbiAgICAgICAgd2hpbGUgKGktLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDEuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDEuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDEuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7IChiLndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgYi5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgyLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgyLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgyLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYS5jbXAoYikgPj0gMCkge1xuICAgICAgICBhLmlzdWIoYik7XG4gICAgICAgIHgxLmlzdWIoeDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYi5pc3ViKGEpO1xuICAgICAgICB4Mi5pc3ViKHgxKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmIChhLmNtcG4oMSkgPT09IDApIHtcbiAgICAgIHJlcyA9IHgxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSB4MjtcbiAgICB9XG5cbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZChwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5nY2QgPSBmdW5jdGlvbiBnY2QgKG51bSkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gbnVtLmFicygpO1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiB0aGlzLmFicygpO1xuXG4gICAgdmFyIGEgPSB0aGlzLmNsb25lKCk7XG4gICAgdmFyIGIgPSBudW0uY2xvbmUoKTtcbiAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICBiLm5lZ2F0aXZlID0gMDtcblxuICAgIC8vIFJlbW92ZSBjb21tb24gZmFjdG9yIG9mIHR3b1xuICAgIGZvciAodmFyIHNoaWZ0ID0gMDsgYS5pc0V2ZW4oKSAmJiBiLmlzRXZlbigpOyBzaGlmdCsrKSB7XG4gICAgICBhLml1c2hybigxKTtcbiAgICAgIGIuaXVzaHJuKDEpO1xuICAgIH1cblxuICAgIGRvIHtcbiAgICAgIHdoaWxlIChhLmlzRXZlbigpKSB7XG4gICAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgfVxuICAgICAgd2hpbGUgKGIuaXNFdmVuKCkpIHtcbiAgICAgICAgYi5pdXNocm4oMSk7XG4gICAgICB9XG5cbiAgICAgIHZhciByID0gYS5jbXAoYik7XG4gICAgICBpZiAociA8IDApIHtcbiAgICAgICAgLy8gU3dhcCBgYWAgYW5kIGBiYCB0byBtYWtlIGBhYCBhbHdheXMgYmlnZ2VyIHRoYW4gYGJgXG4gICAgICAgIHZhciB0ID0gYTtcbiAgICAgICAgYSA9IGI7XG4gICAgICAgIGIgPSB0O1xuICAgICAgfSBlbHNlIGlmIChyID09PSAwIHx8IGIuY21wbigxKSA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgYS5pc3ViKGIpO1xuICAgIH0gd2hpbGUgKHRydWUpO1xuXG4gICAgcmV0dXJuIGIuaXVzaGxuKHNoaWZ0KTtcbiAgfTtcblxuICAvLyBJbnZlcnQgbnVtYmVyIGluIHRoZSBmaWVsZCBGKG51bSlcbiAgQk4ucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5lZ2NkKG51bSkuYS51bW9kKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzRXZlbiA9IGZ1bmN0aW9uIGlzRXZlbiAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gaXNPZGQgKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAxO1xuICB9O1xuXG4gIC8vIEFuZCBmaXJzdCB3b3JkIGFuZCBudW1cbiAgQk4ucHJvdG90eXBlLmFuZGxuID0gZnVuY3Rpb24gYW5kbG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLndvcmRzWzBdICYgbnVtO1xuICB9O1xuXG4gIC8vIEluY3JlbWVudCBhdCB0aGUgYml0IHBvc2l0aW9uIGluLWxpbmVcbiAgQk4ucHJvdG90eXBlLmJpbmNuID0gZnVuY3Rpb24gYmluY24gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgdGhpcy5fZXhwYW5kKHMgKyAxKTtcbiAgICAgIHRoaXMud29yZHNbc10gfD0gcTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIEFkZCBiaXQgYW5kIHByb3BhZ2F0ZSwgaWYgbmVlZGVkXG4gICAgdmFyIGNhcnJ5ID0gcTtcbiAgICBmb3IgKHZhciBpID0gczsgY2FycnkgIT09IDAgJiYgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB3ICs9IGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+PiAyNjtcbiAgICAgIHcgJj0gMHgzZmZmZmZmO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHc7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzWmVybyA9IGZ1bmN0aW9uIGlzWmVybyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNtcG4gPSBmdW5jdGlvbiBjbXBuIChudW0pIHtcbiAgICB2YXIgbmVnYXRpdmUgPSBudW0gPCAwO1xuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgIW5lZ2F0aXZlKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbmVnYXRpdmUpIHJldHVybiAxO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuXG4gICAgdmFyIHJlcztcbiAgICBpZiAodGhpcy5sZW5ndGggPiAxKSB7XG4gICAgICByZXMgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobmVnYXRpdmUpIHtcbiAgICAgICAgbnVtID0gLW51bTtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYsICdOdW1iZXIgaXMgdG9vIGJpZycpO1xuXG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbMF0gfCAwO1xuICAgICAgcmVzID0gdyA9PT0gbnVtID8gMCA6IHcgPCBudW0gPyAtMSA6IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb21wYXJlIHR3byBudW1iZXJzIGFuZCByZXR1cm46XG4gIC8vIDEgLSBpZiBgdGhpc2AgPiBgbnVtYFxuICAvLyAwIC0gaWYgYHRoaXNgID09IGBudW1gXG4gIC8vIC0xIC0gaWYgYHRoaXNgIDwgYG51bWBcbiAgQk4ucHJvdG90eXBlLmNtcCA9IGZ1bmN0aW9uIGNtcCAobnVtKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSByZXR1cm4gLTE7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gMTtcblxuICAgIHZhciByZXMgPSB0aGlzLnVjbXAobnVtKTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gVW5zaWduZWQgY29tcGFyaXNvblxuICBCTi5wcm90b3R5cGUudWNtcCA9IGZ1bmN0aW9uIHVjbXAgKG51bSkge1xuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGhhdmUgdGhlIHNhbWUgc2lnblxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiAxO1xuICAgIGlmICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHJldHVybiAtMTtcblxuICAgIHZhciByZXMgPSAwO1xuICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgYSA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdmFyIGIgPSBudW0ud29yZHNbaV0gfCAwO1xuXG4gICAgICBpZiAoYSA9PT0gYikgY29udGludWU7XG4gICAgICBpZiAoYSA8IGIpIHtcbiAgICAgICAgcmVzID0gLTE7XG4gICAgICB9IGVsc2UgaWYgKGEgPiBiKSB7XG4gICAgICAgIHJlcyA9IDE7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RuID0gZnVuY3Rpb24gZ3RuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ID0gZnVuY3Rpb24gZ3QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGVuID0gZnVuY3Rpb24gZ3RlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZSA9IGZ1bmN0aW9uIGd0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRuID0gZnVuY3Rpb24gbHRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdCA9IGZ1bmN0aW9uIGx0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZW4gPSBmdW5jdGlvbiBsdGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlID0gZnVuY3Rpb24gbHRlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcW4gPSBmdW5jdGlvbiBlcW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDA7XG4gIH07XG5cbiAgLy9cbiAgLy8gQSByZWR1Y2UgY29udGV4dCwgY291bGQgYmUgdXNpbmcgbW9udGdvbWVyeSBvciBzb21ldGhpbmcgYmV0dGVyLCBkZXBlbmRpbmdcbiAgLy8gb24gdGhlIGBtYCBpdHNlbGYuXG4gIC8vXG4gIEJOLnJlZCA9IGZ1bmN0aW9uIHJlZCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBSZWQobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9SZWQgPSBmdW5jdGlvbiB0b1JlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgcmV0dXJuIGN0eC5jb252ZXJ0VG8odGhpcykuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZyb21SZWQgPSBmdW5jdGlvbiBmcm9tUmVkICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdmcm9tUmVkIHdvcmtzIG9ubHkgd2l0aCBudW1iZXJzIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmNvbnZlcnRGcm9tKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZm9yY2VSZWQgPSBmdW5jdGlvbiBfZm9yY2VSZWQgKGN0eCkge1xuICAgIHRoaXMucmVkID0gY3R4O1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mb3JjZVJlZCA9IGZ1bmN0aW9uIGZvcmNlUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRBZGQgPSBmdW5jdGlvbiByZWRBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElBZGQgPSBmdW5jdGlvbiByZWRJQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pYWRkKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFN1YiA9IGZ1bmN0aW9uIHJlZFN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVN1YiA9IGZ1bmN0aW9uIHJlZElTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzdWIodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU2hsID0gZnVuY3Rpb24gcmVkU2hsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTaGwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNobCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRNdWwgPSBmdW5jdGlvbiByZWRNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5tdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSU11bCA9IGZ1bmN0aW9uIHJlZElNdWwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE11bCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5Mih0aGlzLCBudW0pO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNxciA9IGZ1bmN0aW9uIHJlZFNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXIodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTcXIgPSBmdW5jdGlvbiByZWRJU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3FyIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3FyKHRoaXMpO1xuICB9O1xuXG4gIC8vIFNxdWFyZSByb290IG92ZXIgcFxuICBCTi5wcm90b3R5cGUucmVkU3FydCA9IGZ1bmN0aW9uIHJlZFNxcnQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxcnQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcnQodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEludm0gPSBmdW5jdGlvbiByZWRJbnZtICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJbnZtIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pbnZtKHRoaXMpO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2AgJSBgcmVkIG1vZHVsb2BcbiAgQk4ucHJvdG90eXBlLnJlZE5lZyA9IGZ1bmN0aW9uIHJlZE5lZyAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTmVnIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5uZWcodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFBvdyA9IGZ1bmN0aW9uIHJlZFBvdyAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkICYmICFudW0ucmVkLCAncmVkUG93KG5vcm1hbE51bSknKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQucG93KHRoaXMsIG51bSk7XG4gIH07XG5cbiAgLy8gUHJpbWUgbnVtYmVycyB3aXRoIGVmZmljaWVudCByZWR1Y3Rpb25cbiAgdmFyIHByaW1lcyA9IHtcbiAgICBrMjU2OiBudWxsLFxuICAgIHAyMjQ6IG51bGwsXG4gICAgcDE5MjogbnVsbCxcbiAgICBwMjU1MTk6IG51bGxcbiAgfTtcblxuICAvLyBQc2V1ZG8tTWVyc2VubmUgcHJpbWVcbiAgZnVuY3Rpb24gTVByaW1lIChuYW1lLCBwKSB7XG4gICAgLy8gUCA9IDIgXiBOIC0gS1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5wID0gbmV3IEJOKHAsIDE2KTtcbiAgICB0aGlzLm4gPSB0aGlzLnAuYml0TGVuZ3RoKCk7XG4gICAgdGhpcy5rID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLm4pLmlzdWIodGhpcy5wKTtcblxuICAgIHRoaXMudG1wID0gdGhpcy5fdG1wKCk7XG4gIH1cblxuICBNUHJpbWUucHJvdG90eXBlLl90bXAgPSBmdW5jdGlvbiBfdG1wICgpIHtcbiAgICB2YXIgdG1wID0gbmV3IEJOKG51bGwpO1xuICAgIHRtcC53b3JkcyA9IG5ldyBBcnJheShNYXRoLmNlaWwodGhpcy5uIC8gMTMpKTtcbiAgICByZXR1cm4gdG1wO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaXJlZHVjZSA9IGZ1bmN0aW9uIGlyZWR1Y2UgKG51bSkge1xuICAgIC8vIEFzc3VtZXMgdGhhdCBgbnVtYCBpcyBsZXNzIHRoYW4gYFBeMmBcbiAgICAvLyBudW0gPSBISSAqICgyIF4gTiAtIEspICsgSEkgKiBLICsgTE8gPSBISSAqIEsgKyBMTyAobW9kIFApXG4gICAgdmFyIHIgPSBudW07XG4gICAgdmFyIHJsZW47XG5cbiAgICBkbyB7XG4gICAgICB0aGlzLnNwbGl0KHIsIHRoaXMudG1wKTtcbiAgICAgIHIgPSB0aGlzLmltdWxLKHIpO1xuICAgICAgciA9IHIuaWFkZCh0aGlzLnRtcCk7XG4gICAgICBybGVuID0gci5iaXRMZW5ndGgoKTtcbiAgICB9IHdoaWxlIChybGVuID4gdGhpcy5uKTtcblxuICAgIHZhciBjbXAgPSBybGVuIDwgdGhpcy5uID8gLTEgOiByLnVjbXAodGhpcy5wKTtcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICByLndvcmRzWzBdID0gMDtcbiAgICAgIHIubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKGNtcCA+IDApIHtcbiAgICAgIHIuaXN1Yih0aGlzLnApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoci5zdHJpcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIHIgaXMgQk4gdjQgaW5zdGFuY2VcbiAgICAgICAgci5zdHJpcCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NSBpbnN0YW5jZVxuICAgICAgICByLl9zdHJpcCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dCkge1xuICAgIGlucHV0Lml1c2hybih0aGlzLm4sIDAsIG91dCk7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICByZXR1cm4gbnVtLmltdWwodGhpcy5rKTtcbiAgfTtcblxuICBmdW5jdGlvbiBLMjU2ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnazI1NicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYnKTtcbiAgfVxuICBpbmhlcml0cyhLMjU2LCBNUHJpbWUpO1xuXG4gIEsyNTYucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXRwdXQpIHtcbiAgICAvLyAyNTYgPSA5ICogMjYgKyAyMlxuICAgIHZhciBtYXNrID0gMHgzZmZmZmY7XG5cbiAgICB2YXIgb3V0TGVuID0gTWF0aC5taW4oaW5wdXQubGVuZ3RoLCA5KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG91dExlbjsgaSsrKSB7XG4gICAgICBvdXRwdXQud29yZHNbaV0gPSBpbnB1dC53b3Jkc1tpXTtcbiAgICB9XG4gICAgb3V0cHV0Lmxlbmd0aCA9IG91dExlbjtcblxuICAgIGlmIChpbnB1dC5sZW5ndGggPD0gOSkge1xuICAgICAgaW5wdXQud29yZHNbMF0gPSAwO1xuICAgICAgaW5wdXQubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBTaGlmdCBieSA5IGxpbWJzXG4gICAgdmFyIHByZXYgPSBpbnB1dC53b3Jkc1s5XTtcbiAgICBvdXRwdXQud29yZHNbb3V0cHV0Lmxlbmd0aCsrXSA9IHByZXYgJiBtYXNrO1xuXG4gICAgZm9yIChpID0gMTA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG5leHQgPSBpbnB1dC53b3Jkc1tpXSB8IDA7XG4gICAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gKChuZXh0ICYgbWFzaykgPDwgNCkgfCAocHJldiA+Pj4gMjIpO1xuICAgICAgcHJldiA9IG5leHQ7XG4gICAgfVxuICAgIHByZXYgPj4+PSAyMjtcbiAgICBpbnB1dC53b3Jkc1tpIC0gMTBdID0gcHJldjtcbiAgICBpZiAocHJldiA9PT0gMCAmJiBpbnB1dC5sZW5ndGggPiAxMCkge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDEwO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gOTtcbiAgICB9XG4gIH07XG5cbiAgSzI1Ni5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTAwMDAwM2QxID0gWyAweDQwLCAweDNkMSBdXG4gICAgbnVtLndvcmRzW251bS5sZW5ndGhdID0gMDtcbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aCArIDFdID0gMDtcbiAgICBudW0ubGVuZ3RoICs9IDI7XG5cbiAgICAvLyBib3VuZGVkIGF0OiAweDQwICogMHgzZmZmZmZmICsgMHgzZDAgPSAweDEwMDAwMDM5MFxuICAgIHZhciBsbyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3ID0gbnVtLndvcmRzW2ldIHwgMDtcbiAgICAgIGxvICs9IHcgKiAweDNkMTtcbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgbG8gPSB3ICogMHg0MCArICgobG8gLyAweDQwMDAwMDApIHwgMCk7XG4gICAgfVxuXG4gICAgLy8gRmFzdCBsZW5ndGggcmVkdWN0aW9uXG4gICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICAgIG51bS5sZW5ndGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICBmdW5jdGlvbiBQMjI0ICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDIyNCcsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgMDAwMDAwMDAgMDAwMDAwMDAgMDAwMDAwMDEnKTtcbiAgfVxuICBpbmhlcml0cyhQMjI0LCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAxOTIgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMTkyJyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmZmZiBmZmZmZmZmZicpO1xuICB9XG4gIGluaGVyaXRzKFAxOTIsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDI1NTE5ICgpIHtcbiAgICAvLyAyIF4gMjU1IC0gMTlcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAnMjU1MTknLFxuICAgICAgJzdmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZWQnKTtcbiAgfVxuICBpbmhlcml0cyhQMjU1MTksIE1QcmltZSk7XG5cbiAgUDI1NTE5LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxM1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoaSA9IChudW0ud29yZHNbaV0gfCAwKSAqIDB4MTMgKyBjYXJyeTtcbiAgICAgIHZhciBsbyA9IGhpICYgMHgzZmZmZmZmO1xuICAgICAgaGkgPj4+PSAyNjtcblxuICAgICAgbnVtLndvcmRzW2ldID0gbG87XG4gICAgICBjYXJyeSA9IGhpO1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgLy8gRXhwb3J0ZWQgbW9zdGx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB1c2UgcGxhaW4gbmFtZSBpbnN0ZWFkXG4gIEJOLl9wcmltZSA9IGZ1bmN0aW9uIHByaW1lIChuYW1lKSB7XG4gICAgLy8gQ2FjaGVkIHZlcnNpb24gb2YgcHJpbWVcbiAgICBpZiAocHJpbWVzW25hbWVdKSByZXR1cm4gcHJpbWVzW25hbWVdO1xuXG4gICAgdmFyIHByaW1lO1xuICAgIGlmIChuYW1lID09PSAnazI1NicpIHtcbiAgICAgIHByaW1lID0gbmV3IEsyNTYoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjI0Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDIyNCgpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AxOTInKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMTkyKCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDI1NTE5Jykge1xuICAgICAgcHJpbWUgPSBuZXcgUDI1NTE5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBwcmltZSAnICsgbmFtZSk7XG4gICAgfVxuICAgIHByaW1lc1tuYW1lXSA9IHByaW1lO1xuXG4gICAgcmV0dXJuIHByaW1lO1xuICB9O1xuXG4gIC8vXG4gIC8vIEJhc2UgcmVkdWN0aW9uIGVuZ2luZVxuICAvL1xuICBmdW5jdGlvbiBSZWQgKG0pIHtcbiAgICBpZiAodHlwZW9mIG0gPT09ICdzdHJpbmcnKSB7XG4gICAgICB2YXIgcHJpbWUgPSBCTi5fcHJpbWUobSk7XG4gICAgICB0aGlzLm0gPSBwcmltZS5wO1xuICAgICAgdGhpcy5wcmltZSA9IHByaW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobS5ndG4oMSksICdtb2R1bHVzIG11c3QgYmUgZ3JlYXRlciB0aGFuIDEnKTtcbiAgICAgIHRoaXMubSA9IG07XG4gICAgICB0aGlzLnByaW1lID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkxID0gZnVuY3Rpb24gX3ZlcmlmeTEgKGEpIHtcbiAgICBhc3NlcnQoYS5uZWdhdGl2ZSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkLCAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTIgPSBmdW5jdGlvbiBfdmVyaWZ5MiAoYSwgYikge1xuICAgIGFzc2VydCgoYS5uZWdhdGl2ZSB8IGIubmVnYXRpdmUpID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQgJiYgYS5yZWQgPT09IGIucmVkLFxuICAgICAgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltb2QgPSBmdW5jdGlvbiBpbW9kIChhKSB7XG4gICAgaWYgKHRoaXMucHJpbWUpIHJldHVybiB0aGlzLnByaW1lLmlyZWR1Y2UoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICAgIHJldHVybiBhLnVtb2QodGhpcy5tKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIGEuY2xvbmUoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tLnN1YihhKS5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pYWRkKGIpO1xuICAgIGlmIChyZXMuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzLmlzdWIodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5zdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5pc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zaGwgPSBmdW5jdGlvbiBzaGwgKGEsIG51bSkge1xuICAgIHRoaXMuX3ZlcmlmeTEoYSk7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLnVzaGxuKG51bSkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5pbXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLm11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLmltdWwoYSwgYS5jbG9uZSgpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxciA9IGZ1bmN0aW9uIHNxciAoYSkge1xuICAgIHJldHVybiB0aGlzLm11bChhLCBhKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNxcnQgPSBmdW5jdGlvbiBzcXJ0IChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgbW9kMyA9IHRoaXMubS5hbmRsbigzKTtcbiAgICBhc3NlcnQobW9kMyAlIDIgPT09IDEpO1xuXG4gICAgLy8gRmFzdCBjYXNlXG4gICAgaWYgKG1vZDMgPT09IDMpIHtcbiAgICAgIHZhciBwb3cgPSB0aGlzLm0uYWRkKG5ldyBCTigxKSkuaXVzaHJuKDIpO1xuICAgICAgcmV0dXJuIHRoaXMucG93KGEsIHBvdyk7XG4gICAgfVxuXG4gICAgLy8gVG9uZWxsaS1TaGFua3MgYWxnb3JpdGhtIChUb3RhbGx5IHVub3B0aW1pemVkIGFuZCBzbG93KVxuICAgIC8vXG4gICAgLy8gRmluZCBRIGFuZCBTLCB0aGF0IFEgKiAyIF4gUyA9IChQIC0gMSlcbiAgICB2YXIgcSA9IHRoaXMubS5zdWJuKDEpO1xuICAgIHZhciBzID0gMDtcbiAgICB3aGlsZSAoIXEuaXNaZXJvKCkgJiYgcS5hbmRsbigxKSA9PT0gMCkge1xuICAgICAgcysrO1xuICAgICAgcS5pdXNocm4oMSk7XG4gICAgfVxuICAgIGFzc2VydCghcS5pc1plcm8oKSk7XG5cbiAgICB2YXIgb25lID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHZhciBuT25lID0gb25lLnJlZE5lZygpO1xuXG4gICAgLy8gRmluZCBxdWFkcmF0aWMgbm9uLXJlc2lkdWVcbiAgICAvLyBOT1RFOiBNYXggaXMgc3VjaCBiZWNhdXNlIG9mIGdlbmVyYWxpemVkIFJpZW1hbm4gaHlwb3RoZXNpcy5cbiAgICB2YXIgbHBvdyA9IHRoaXMubS5zdWJuKDEpLml1c2hybigxKTtcbiAgICB2YXIgeiA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICB6ID0gbmV3IEJOKDIgKiB6ICogeikudG9SZWQodGhpcyk7XG5cbiAgICB3aGlsZSAodGhpcy5wb3coeiwgbHBvdykuY21wKG5PbmUpICE9PSAwKSB7XG4gICAgICB6LnJlZElBZGQobk9uZSk7XG4gICAgfVxuXG4gICAgdmFyIGMgPSB0aGlzLnBvdyh6LCBxKTtcbiAgICB2YXIgciA9IHRoaXMucG93KGEsIHEuYWRkbigxKS5pdXNocm4oMSkpO1xuICAgIHZhciB0ID0gdGhpcy5wb3coYSwgcSk7XG4gICAgdmFyIG0gPSBzO1xuICAgIHdoaWxlICh0LmNtcChvbmUpICE9PSAwKSB7XG4gICAgICB2YXIgdG1wID0gdDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyB0bXAuY21wKG9uZSkgIT09IDA7IGkrKykge1xuICAgICAgICB0bXAgPSB0bXAucmVkU3FyKCk7XG4gICAgICB9XG4gICAgICBhc3NlcnQoaSA8IG0pO1xuICAgICAgdmFyIGIgPSB0aGlzLnBvdyhjLCBuZXcgQk4oMSkuaXVzaGxuKG0gLSBpIC0gMSkpO1xuXG4gICAgICByID0gci5yZWRNdWwoYik7XG4gICAgICBjID0gYi5yZWRTcXIoKTtcbiAgICAgIHQgPSB0LnJlZE11bChjKTtcbiAgICAgIG0gPSBpO1xuICAgIH1cblxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICB2YXIgaW52ID0gYS5faW52bXAodGhpcy5tKTtcbiAgICBpZiAoaW52Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpbnYubmVnYXRpdmUgPSAwO1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpLnJlZE5lZygpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludik7XG4gICAgfVxuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUucG93ID0gZnVuY3Rpb24gcG93IChhLCBudW0pIHtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIGlmIChudW0uY21wbigxKSA9PT0gMCkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciB3aW5kb3dTaXplID0gNDtcbiAgICB2YXIgd25kID0gbmV3IEFycmF5KDEgPDwgd2luZG93U2l6ZSk7XG4gICAgd25kWzBdID0gbmV3IEJOKDEpLnRvUmVkKHRoaXMpO1xuICAgIHduZFsxXSA9IGE7XG4gICAgZm9yICh2YXIgaSA9IDI7IGkgPCB3bmQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHduZFtpXSA9IHRoaXMubXVsKHduZFtpIC0gMV0sIGEpO1xuICAgIH1cblxuICAgIHZhciByZXMgPSB3bmRbMF07XG4gICAgdmFyIGN1cnJlbnQgPSAwO1xuICAgIHZhciBjdXJyZW50TGVuID0gMDtcbiAgICB2YXIgc3RhcnQgPSBudW0uYml0TGVuZ3RoKCkgJSAyNjtcbiAgICBpZiAoc3RhcnQgPT09IDApIHtcbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgZm9yIChpID0gbnVtLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IG51bS53b3Jkc1tpXTtcbiAgICAgIGZvciAodmFyIGogPSBzdGFydCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICAgIHZhciBiaXQgPSAod29yZCA+PiBqKSAmIDE7XG4gICAgICAgIGlmIChyZXMgIT09IHduZFswXSkge1xuICAgICAgICAgIHJlcyA9IHRoaXMuc3FyKHJlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYml0ID09PSAwICYmIGN1cnJlbnQgPT09IDApIHtcbiAgICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGN1cnJlbnQgPDw9IDE7XG4gICAgICAgIGN1cnJlbnQgfD0gYml0O1xuICAgICAgICBjdXJyZW50TGVuKys7XG4gICAgICAgIGlmIChjdXJyZW50TGVuICE9PSB3aW5kb3dTaXplICYmIChpICE9PSAwIHx8IGogIT09IDApKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSB0aGlzLm11bChyZXMsIHduZFtjdXJyZW50XSk7XG4gICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICBjdXJyZW50ID0gMDtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gMjY7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgdmFyIHIgPSBudW0udW1vZCh0aGlzLm0pO1xuXG4gICAgcmV0dXJuIHIgPT09IG51bSA/IHIuY2xvbmUoKSA6IHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgcmVzID0gbnVtLmNsb25lKCk7XG4gICAgcmVzLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvL1xuICAvLyBNb250Z29tZXJ5IG1ldGhvZCBlbmdpbmVcbiAgLy9cblxuICBCTi5tb250ID0gZnVuY3Rpb24gbW9udCAobnVtKSB7XG4gICAgcmV0dXJuIG5ldyBNb250KG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gTW9udCAobSkge1xuICAgIFJlZC5jYWxsKHRoaXMsIG0pO1xuXG4gICAgdGhpcy5zaGlmdCA9IHRoaXMubS5iaXRMZW5ndGgoKTtcbiAgICBpZiAodGhpcy5zaGlmdCAlIDI2ICE9PSAwKSB7XG4gICAgICB0aGlzLnNoaWZ0ICs9IDI2IC0gKHRoaXMuc2hpZnQgJSAyNik7XG4gICAgfVxuXG4gICAgdGhpcy5yID0gbmV3IEJOKDEpLml1c2hsbih0aGlzLnNoaWZ0KTtcbiAgICB0aGlzLnIyID0gdGhpcy5pbW9kKHRoaXMuci5zcXIoKSk7XG4gICAgdGhpcy5yaW52ID0gdGhpcy5yLl9pbnZtcCh0aGlzLm0pO1xuXG4gICAgdGhpcy5taW52ID0gdGhpcy5yaW52Lm11bCh0aGlzLnIpLmlzdWJuKDEpLmRpdih0aGlzLm0pO1xuICAgIHRoaXMubWludiA9IHRoaXMubWludi51bW9kKHRoaXMucik7XG4gICAgdGhpcy5taW52ID0gdGhpcy5yLnN1Yih0aGlzLm1pbnYpO1xuICB9XG4gIGluaGVyaXRzKE1vbnQsIFJlZCk7XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5pbW9kKG51bS51c2hsbih0aGlzLnNoaWZ0KSk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHIgPSB0aGlzLmltb2QobnVtLm11bCh0aGlzLnJpbnYpKTtcbiAgICByLnJlZCA9IG51bGw7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW11bCA9IGZ1bmN0aW9uIGltdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSB7XG4gICAgICBhLndvcmRzWzBdID0gMDtcbiAgICAgIGEubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiBhO1xuICAgIH1cblxuICAgIHZhciB0ID0gYS5pbXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuXG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICBpZiAoYS5pc1plcm8oKSB8fCBiLmlzWmVybygpKSByZXR1cm4gbmV3IEJOKDApLl9mb3JjZVJlZCh0aGlzKTtcblxuICAgIHZhciB0ID0gYS5tdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG4gICAgaWYgKHUuY21wKHRoaXMubSkgPj0gMCkge1xuICAgICAgcmVzID0gdS5pc3ViKHRoaXMubSk7XG4gICAgfSBlbHNlIGlmICh1LmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMgPSB1LmlhZGQodGhpcy5tKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIC8vIChBUileLTEgKiBSXjIgPSAoQV4tMSAqIFJeLTEpICogUl4yID0gQV4tMSAqIFJcbiAgICB2YXIgcmVzID0gdGhpcy5pbW9kKGEuX2ludm1wKHRoaXMubSkubXVsKHRoaXMucjIpKTtcbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcbn0pKHR5cGVvZiBtb2R1bGUgPT09ICd1bmRlZmluZWQnIHx8IG1vZHVsZSwgdGhpcyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBHZXRJbnRyaW5zaWMgPSByZXF1aXJlKCdnZXQtaW50cmluc2ljJyk7XG5cbnZhciAkZ09QRCA9IEdldEludHJpbnNpYygnJU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IlJyk7XG5pZiAoJGdPUEQpIHtcblx0dHJ5IHtcblx0XHQkZ09QRChbXSwgJ2xlbmd0aCcpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0Ly8gSUUgOCBoYXMgYSBicm9rZW4gZ09QRFxuXHRcdCRnT1BEID0gbnVsbDtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9ICRnT1BEO1xuIiwiLyoqXG4gKiBDb2RlIHJlZmFjdG9yZWQgZnJvbSBNb3ppbGxhIERldmVsb3BlciBOZXR3b3JrOlxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2Fzc2lnblxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgZmlyc3RTb3VyY2UpIHtcbiAgaWYgKHRhcmdldCA9PT0gdW5kZWZpbmVkIHx8IHRhcmdldCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IGZpcnN0IGFyZ3VtZW50IHRvIG9iamVjdCcpO1xuICB9XG5cbiAgdmFyIHRvID0gT2JqZWN0KHRhcmdldCk7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG5leHRTb3VyY2UgPSBhcmd1bWVudHNbaV07XG4gICAgaWYgKG5leHRTb3VyY2UgPT09IHVuZGVmaW5lZCB8fCBuZXh0U291cmNlID09PSBudWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YXIga2V5c0FycmF5ID0gT2JqZWN0LmtleXMoT2JqZWN0KG5leHRTb3VyY2UpKTtcbiAgICBmb3IgKHZhciBuZXh0SW5kZXggPSAwLCBsZW4gPSBrZXlzQXJyYXkubGVuZ3RoOyBuZXh0SW5kZXggPCBsZW47IG5leHRJbmRleCsrKSB7XG4gICAgICB2YXIgbmV4dEtleSA9IGtleXNBcnJheVtuZXh0SW5kZXhdO1xuICAgICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG5leHRTb3VyY2UsIG5leHRLZXkpO1xuICAgICAgaWYgKGRlc2MgIT09IHVuZGVmaW5lZCAmJiBkZXNjLmVudW1lcmFibGUpIHtcbiAgICAgICAgdG9bbmV4dEtleV0gPSBuZXh0U291cmNlW25leHRLZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdG87XG59XG5cbmZ1bmN0aW9uIHBvbHlmaWxsKCkge1xuICBpZiAoIU9iamVjdC5hc3NpZ24pIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LCAnYXNzaWduJywge1xuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBhc3NpZ25cbiAgICB9KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYXNzaWduOiBhc3NpZ24sXG4gIHBvbHlmaWxsOiBwb2x5ZmlsbFxufTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSID0gdHlwZW9mIFJlZmxlY3QgPT09ICdvYmplY3QnID8gUmVmbGVjdCA6IG51bGxcbnZhciBSZWZsZWN0QXBwbHkgPSBSICYmIHR5cGVvZiBSLmFwcGx5ID09PSAnZnVuY3Rpb24nXG4gID8gUi5hcHBseVxuICA6IGZ1bmN0aW9uIFJlZmxlY3RBcHBseSh0YXJnZXQsIHJlY2VpdmVyLCBhcmdzKSB7XG4gICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKHRhcmdldCwgcmVjZWl2ZXIsIGFyZ3MpO1xuICB9XG5cbnZhciBSZWZsZWN0T3duS2V5c1xuaWYgKFIgJiYgdHlwZW9mIFIub3duS2V5cyA9PT0gJ2Z1bmN0aW9uJykge1xuICBSZWZsZWN0T3duS2V5cyA9IFIub3duS2V5c1xufSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gIFJlZmxlY3RPd25LZXlzID0gZnVuY3Rpb24gUmVmbGVjdE93bktleXModGFyZ2V0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldClcbiAgICAgIC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpKTtcbiAgfTtcbn0gZWxzZSB7XG4gIFJlZmxlY3RPd25LZXlzID0gZnVuY3Rpb24gUmVmbGVjdE93bktleXModGFyZ2V0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIFByb2Nlc3NFbWl0V2FybmluZyh3YXJuaW5nKSB7XG4gIGlmIChjb25zb2xlICYmIGNvbnNvbGUud2FybikgY29uc29sZS53YXJuKHdhcm5pbmcpO1xufVxuXG52YXIgTnVtYmVySXNOYU4gPSBOdW1iZXIuaXNOYU4gfHwgZnVuY3Rpb24gTnVtYmVySXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gRXZlbnRFbWl0dGVyKCkge1xuICBFdmVudEVtaXR0ZXIuaW5pdC5jYWxsKHRoaXMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFdmVudEVtaXR0ZXI7XG5tb2R1bGUuZXhwb3J0cy5vbmNlID0gb25jZTtcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC4xMC54XG5FdmVudEVtaXR0ZXIuRXZlbnRFbWl0dGVyID0gRXZlbnRFbWl0dGVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHMgPSB1bmRlZmluZWQ7XG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHNDb3VudCA9IDA7XG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnMgPSB1bmRlZmluZWQ7XG5cbi8vIEJ5IGRlZmF1bHQgRXZlbnRFbWl0dGVycyB3aWxsIHByaW50IGEgd2FybmluZyBpZiBtb3JlIHRoYW4gMTAgbGlzdGVuZXJzIGFyZVxuLy8gYWRkZWQgdG8gaXQuIFRoaXMgaXMgYSB1c2VmdWwgZGVmYXVsdCB3aGljaCBoZWxwcyBmaW5kaW5nIG1lbW9yeSBsZWFrcy5cbnZhciBkZWZhdWx0TWF4TGlzdGVuZXJzID0gMTA7XG5cbmZ1bmN0aW9uIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpIHtcbiAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcImxpc3RlbmVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgbGlzdGVuZXIpO1xuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShFdmVudEVtaXR0ZXIsICdkZWZhdWx0TWF4TGlzdGVuZXJzJywge1xuICBlbnVtZXJhYmxlOiB0cnVlLFxuICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBkZWZhdWx0TWF4TGlzdGVuZXJzO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uKGFyZykge1xuICAgIGlmICh0eXBlb2YgYXJnICE9PSAnbnVtYmVyJyB8fCBhcmcgPCAwIHx8IE51bWJlcklzTmFOKGFyZykpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgb2YgXCJkZWZhdWx0TWF4TGlzdGVuZXJzXCIgaXMgb3V0IG9mIHJhbmdlLiBJdCBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlci4gUmVjZWl2ZWQgJyArIGFyZyArICcuJyk7XG4gICAgfVxuICAgIGRlZmF1bHRNYXhMaXN0ZW5lcnMgPSBhcmc7XG4gIH1cbn0pO1xuXG5FdmVudEVtaXR0ZXIuaW5pdCA9IGZ1bmN0aW9uKCkge1xuXG4gIGlmICh0aGlzLl9ldmVudHMgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy5fZXZlbnRzID09PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykuX2V2ZW50cykge1xuICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICB9XG5cbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gdGhpcy5fbWF4TGlzdGVuZXJzIHx8IHVuZGVmaW5lZDtcbn07XG5cbi8vIE9idmlvdXNseSBub3QgYWxsIEVtaXR0ZXJzIHNob3VsZCBiZSBsaW1pdGVkIHRvIDEwLiBUaGlzIGZ1bmN0aW9uIGFsbG93c1xuLy8gdGhhdCB0byBiZSBpbmNyZWFzZWQuIFNldCB0byB6ZXJvIGZvciB1bmxpbWl0ZWQuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnNldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uIHNldE1heExpc3RlbmVycyhuKSB7XG4gIGlmICh0eXBlb2YgbiAhPT0gJ251bWJlcicgfHwgbiA8IDAgfHwgTnVtYmVySXNOYU4obikpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mIFwiblwiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcgKyBuICsgJy4nKTtcbiAgfVxuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSBuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIF9nZXRNYXhMaXN0ZW5lcnModGhhdCkge1xuICBpZiAodGhhdC5fbWF4TGlzdGVuZXJzID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIEV2ZW50RW1pdHRlci5kZWZhdWx0TWF4TGlzdGVuZXJzO1xuICByZXR1cm4gdGhhdC5fbWF4TGlzdGVuZXJzO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmdldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uIGdldE1heExpc3RlbmVycygpIHtcbiAgcmV0dXJuIF9nZXRNYXhMaXN0ZW5lcnModGhpcyk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbiBlbWl0KHR5cGUpIHtcbiAgdmFyIGFyZ3MgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICB2YXIgZG9FcnJvciA9ICh0eXBlID09PSAnZXJyb3InKTtcblxuICB2YXIgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICBpZiAoZXZlbnRzICE9PSB1bmRlZmluZWQpXG4gICAgZG9FcnJvciA9IChkb0Vycm9yICYmIGV2ZW50cy5lcnJvciA9PT0gdW5kZWZpbmVkKTtcbiAgZWxzZSBpZiAoIWRvRXJyb3IpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIElmIHRoZXJlIGlzIG5vICdlcnJvcicgZXZlbnQgbGlzdGVuZXIgdGhlbiB0aHJvdy5cbiAgaWYgKGRvRXJyb3IpIHtcbiAgICB2YXIgZXI7XG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMClcbiAgICAgIGVyID0gYXJnc1swXTtcbiAgICBpZiAoZXIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgLy8gTm90ZTogVGhlIGNvbW1lbnRzIG9uIHRoZSBgdGhyb3dgIGxpbmVzIGFyZSBpbnRlbnRpb25hbCwgdGhleSBzaG93XG4gICAgICAvLyB1cCBpbiBOb2RlJ3Mgb3V0cHV0IGlmIHRoaXMgcmVzdWx0cyBpbiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLlxuICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50XG4gICAgfVxuICAgIC8vIEF0IGxlYXN0IGdpdmUgc29tZSBraW5kIG9mIGNvbnRleHQgdG8gdGhlIHVzZXJcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCdVbmhhbmRsZWQgZXJyb3IuJyArIChlciA/ICcgKCcgKyBlci5tZXNzYWdlICsgJyknIDogJycpKTtcbiAgICBlcnIuY29udGV4dCA9IGVyO1xuICAgIHRocm93IGVycjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgfVxuXG4gIHZhciBoYW5kbGVyID0gZXZlbnRzW3R5cGVdO1xuXG4gIGlmIChoYW5kbGVyID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIGlmICh0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIFJlZmxlY3RBcHBseShoYW5kbGVyLCB0aGlzLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbGVuID0gaGFuZGxlci5sZW5ndGg7XG4gICAgdmFyIGxpc3RlbmVycyA9IGFycmF5Q2xvbmUoaGFuZGxlciwgbGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKVxuICAgICAgUmVmbGVjdEFwcGx5KGxpc3RlbmVyc1tpXSwgdGhpcywgYXJncyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmZ1bmN0aW9uIF9hZGRMaXN0ZW5lcih0YXJnZXQsIHR5cGUsIGxpc3RlbmVyLCBwcmVwZW5kKSB7XG4gIHZhciBtO1xuICB2YXIgZXZlbnRzO1xuICB2YXIgZXhpc3Rpbmc7XG5cbiAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG5cbiAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG4gIGlmIChldmVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICB0YXJnZXQuX2V2ZW50c0NvdW50ID0gMDtcbiAgfSBlbHNlIHtcbiAgICAvLyBUbyBhdm9pZCByZWN1cnNpb24gaW4gdGhlIGNhc2UgdGhhdCB0eXBlID09PSBcIm5ld0xpc3RlbmVyXCIhIEJlZm9yZVxuICAgIC8vIGFkZGluZyBpdCB0byB0aGUgbGlzdGVuZXJzLCBmaXJzdCBlbWl0IFwibmV3TGlzdGVuZXJcIi5cbiAgICBpZiAoZXZlbnRzLm5ld0xpc3RlbmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRhcmdldC5lbWl0KCduZXdMaXN0ZW5lcicsIHR5cGUsXG4gICAgICAgICAgICAgICAgICBsaXN0ZW5lci5saXN0ZW5lciA/IGxpc3RlbmVyLmxpc3RlbmVyIDogbGlzdGVuZXIpO1xuXG4gICAgICAvLyBSZS1hc3NpZ24gYGV2ZW50c2AgYmVjYXVzZSBhIG5ld0xpc3RlbmVyIGhhbmRsZXIgY291bGQgaGF2ZSBjYXVzZWQgdGhlXG4gICAgICAvLyB0aGlzLl9ldmVudHMgdG8gYmUgYXNzaWduZWQgdG8gYSBuZXcgb2JqZWN0XG4gICAgICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cztcbiAgICB9XG4gICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV07XG4gIH1cblxuICBpZiAoZXhpc3RpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE9wdGltaXplIHRoZSBjYXNlIG9mIG9uZSBsaXN0ZW5lci4gRG9uJ3QgbmVlZCB0aGUgZXh0cmEgYXJyYXkgb2JqZWN0LlxuICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdID0gbGlzdGVuZXI7XG4gICAgKyt0YXJnZXQuX2V2ZW50c0NvdW50O1xuICB9IGVsc2Uge1xuICAgIGlmICh0eXBlb2YgZXhpc3RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIC8vIEFkZGluZyB0aGUgc2Vjb25kIGVsZW1lbnQsIG5lZWQgdG8gY2hhbmdlIHRvIGFycmF5LlxuICAgICAgZXhpc3RpbmcgPSBldmVudHNbdHlwZV0gPVxuICAgICAgICBwcmVwZW5kID8gW2xpc3RlbmVyLCBleGlzdGluZ10gOiBbZXhpc3RpbmcsIGxpc3RlbmVyXTtcbiAgICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZ290IGFuIGFycmF5LCBqdXN0IGFwcGVuZC5cbiAgICB9IGVsc2UgaWYgKHByZXBlbmQpIHtcbiAgICAgIGV4aXN0aW5nLnVuc2hpZnQobGlzdGVuZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBleGlzdGluZy5wdXNoKGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgbGlzdGVuZXIgbGVha1xuICAgIG0gPSBfZ2V0TWF4TGlzdGVuZXJzKHRhcmdldCk7XG4gICAgaWYgKG0gPiAwICYmIGV4aXN0aW5nLmxlbmd0aCA+IG0gJiYgIWV4aXN0aW5nLndhcm5lZCkge1xuICAgICAgZXhpc3Rpbmcud2FybmVkID0gdHJ1ZTtcbiAgICAgIC8vIE5vIGVycm9yIGNvZGUgZm9yIHRoaXMgc2luY2UgaXQgaXMgYSBXYXJuaW5nXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXhcbiAgICAgIHZhciB3ID0gbmV3IEVycm9yKCdQb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5IGxlYWsgZGV0ZWN0ZWQuICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZy5sZW5ndGggKyAnICcgKyBTdHJpbmcodHlwZSkgKyAnIGxpc3RlbmVycyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FkZGVkLiBVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY3JlYXNlIGxpbWl0Jyk7XG4gICAgICB3Lm5hbWUgPSAnTWF4TGlzdGVuZXJzRXhjZWVkZWRXYXJuaW5nJztcbiAgICAgIHcuZW1pdHRlciA9IHRhcmdldDtcbiAgICAgIHcudHlwZSA9IHR5cGU7XG4gICAgICB3LmNvdW50ID0gZXhpc3RpbmcubGVuZ3RoO1xuICAgICAgUHJvY2Vzc0VtaXRXYXJuaW5nKHcpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXIgPSBmdW5jdGlvbiBhZGRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICByZXR1cm4gX2FkZExpc3RlbmVyKHRoaXMsIHR5cGUsIGxpc3RlbmVyLCBmYWxzZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5wcmVwZW5kTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHByZXBlbmRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgcmV0dXJuIF9hZGRMaXN0ZW5lcih0aGlzLCB0eXBlLCBsaXN0ZW5lciwgdHJ1ZSk7XG4gICAgfTtcblxuZnVuY3Rpb24gb25jZVdyYXBwZXIoKSB7XG4gIGlmICghdGhpcy5maXJlZCkge1xuICAgIHRoaXMudGFyZ2V0LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSwgdGhpcy53cmFwRm4pO1xuICAgIHRoaXMuZmlyZWQgPSB0cnVlO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgcmV0dXJuIHRoaXMubGlzdGVuZXIuY2FsbCh0aGlzLnRhcmdldCk7XG4gICAgcmV0dXJuIHRoaXMubGlzdGVuZXIuYXBwbHkodGhpcy50YXJnZXQsIGFyZ3VtZW50cyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gX29uY2VXcmFwKHRhcmdldCwgdHlwZSwgbGlzdGVuZXIpIHtcbiAgdmFyIHN0YXRlID0geyBmaXJlZDogZmFsc2UsIHdyYXBGbjogdW5kZWZpbmVkLCB0YXJnZXQ6IHRhcmdldCwgdHlwZTogdHlwZSwgbGlzdGVuZXI6IGxpc3RlbmVyIH07XG4gIHZhciB3cmFwcGVkID0gb25jZVdyYXBwZXIuYmluZChzdGF0ZSk7XG4gIHdyYXBwZWQubGlzdGVuZXIgPSBsaXN0ZW5lcjtcbiAgc3RhdGUud3JhcEZuID0gd3JhcHBlZDtcbiAgcmV0dXJuIHdyYXBwZWQ7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub25jZSA9IGZ1bmN0aW9uIG9uY2UodHlwZSwgbGlzdGVuZXIpIHtcbiAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG4gIHRoaXMub24odHlwZSwgX29uY2VXcmFwKHRoaXMsIHR5cGUsIGxpc3RlbmVyKSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5wcmVwZW5kT25jZUxpc3RlbmVyID1cbiAgICBmdW5jdGlvbiBwcmVwZW5kT25jZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKTtcbiAgICAgIHRoaXMucHJlcGVuZExpc3RlbmVyKHR5cGUsIF9vbmNlV3JhcCh0aGlzLCB0eXBlLCBsaXN0ZW5lcikpO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuLy8gRW1pdHMgYSAncmVtb3ZlTGlzdGVuZXInIGV2ZW50IGlmIGFuZCBvbmx5IGlmIHRoZSBsaXN0ZW5lciB3YXMgcmVtb3ZlZC5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPVxuICAgIGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7XG4gICAgICB2YXIgbGlzdCwgZXZlbnRzLCBwb3NpdGlvbiwgaSwgb3JpZ2luYWxMaXN0ZW5lcjtcblxuICAgICAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG5cbiAgICAgIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgICAgIGlmIChldmVudHMgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIGxpc3QgPSBldmVudHNbdHlwZV07XG4gICAgICBpZiAobGlzdCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgaWYgKGxpc3QgPT09IGxpc3RlbmVyIHx8IGxpc3QubGlzdGVuZXIgPT09IGxpc3RlbmVyKSB7XG4gICAgICAgIGlmICgtLXRoaXMuX2V2ZW50c0NvdW50ID09PSAwKVxuICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGRlbGV0ZSBldmVudHNbdHlwZV07XG4gICAgICAgICAgaWYgKGV2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgICAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0Lmxpc3RlbmVyIHx8IGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbGlzdCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBwb3NpdGlvbiA9IC0xO1xuXG4gICAgICAgIGZvciAoaSA9IGxpc3QubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICBpZiAobGlzdFtpXSA9PT0gbGlzdGVuZXIgfHwgbGlzdFtpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIpIHtcbiAgICAgICAgICAgIG9yaWdpbmFsTGlzdGVuZXIgPSBsaXN0W2ldLmxpc3RlbmVyO1xuICAgICAgICAgICAgcG9zaXRpb24gPSBpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uIDwgMClcbiAgICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgICBpZiAocG9zaXRpb24gPT09IDApXG4gICAgICAgICAgbGlzdC5zaGlmdCgpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBzcGxpY2VPbmUobGlzdCwgcG9zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxpc3QubGVuZ3RoID09PSAxKVxuICAgICAgICAgIGV2ZW50c1t0eXBlXSA9IGxpc3RbMF07XG5cbiAgICAgICAgaWYgKGV2ZW50cy5yZW1vdmVMaXN0ZW5lciAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBvcmlnaW5hbExpc3RlbmVyIHx8IGxpc3RlbmVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vZmYgPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9XG4gICAgZnVuY3Rpb24gcmVtb3ZlQWxsTGlzdGVuZXJzKHR5cGUpIHtcbiAgICAgIHZhciBsaXN0ZW5lcnMsIGV2ZW50cywgaTtcblxuICAgICAgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuICAgICAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgLy8gbm90IGxpc3RlbmluZyBmb3IgcmVtb3ZlTGlzdGVuZXIsIG5vIG5lZWQgdG8gZW1pdFxuICAgICAgaWYgKGV2ZW50cy5yZW1vdmVMaXN0ZW5lciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnRzW3R5cGVdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBpZiAoLS10aGlzLl9ldmVudHNDb3VudCA9PT0gMClcbiAgICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZGVsZXRlIGV2ZW50c1t0eXBlXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgLy8gZW1pdCByZW1vdmVMaXN0ZW5lciBmb3IgYWxsIGxpc3RlbmVycyBvbiBhbGwgZXZlbnRzXG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGV2ZW50cyk7XG4gICAgICAgIHZhciBrZXk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICBpZiAoa2V5ID09PSAncmVtb3ZlTGlzdGVuZXInKSBjb250aW51ZTtcbiAgICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCdyZW1vdmVMaXN0ZW5lcicpO1xuICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICB0aGlzLl9ldmVudHNDb3VudCA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICBsaXN0ZW5lcnMgPSBldmVudHNbdHlwZV07XG5cbiAgICAgIGlmICh0eXBlb2YgbGlzdGVuZXJzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzKTtcbiAgICAgIH0gZWxzZSBpZiAobGlzdGVuZXJzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gTElGTyBvcmRlclxuICAgICAgICBmb3IgKGkgPSBsaXN0ZW5lcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcblxuZnVuY3Rpb24gX2xpc3RlbmVycyh0YXJnZXQsIHR5cGUsIHVud3JhcCkge1xuICB2YXIgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG5cbiAgaWYgKGV2ZW50cyA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBbXTtcblxuICB2YXIgZXZsaXN0ZW5lciA9IGV2ZW50c1t0eXBlXTtcbiAgaWYgKGV2bGlzdGVuZXIgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gW107XG5cbiAgaWYgKHR5cGVvZiBldmxpc3RlbmVyID09PSAnZnVuY3Rpb24nKVxuICAgIHJldHVybiB1bndyYXAgPyBbZXZsaXN0ZW5lci5saXN0ZW5lciB8fCBldmxpc3RlbmVyXSA6IFtldmxpc3RlbmVyXTtcblxuICByZXR1cm4gdW53cmFwID9cbiAgICB1bndyYXBMaXN0ZW5lcnMoZXZsaXN0ZW5lcikgOiBhcnJheUNsb25lKGV2bGlzdGVuZXIsIGV2bGlzdGVuZXIubGVuZ3RoKTtcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lcnMgPSBmdW5jdGlvbiBsaXN0ZW5lcnModHlwZSkge1xuICByZXR1cm4gX2xpc3RlbmVycyh0aGlzLCB0eXBlLCB0cnVlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmF3TGlzdGVuZXJzID0gZnVuY3Rpb24gcmF3TGlzdGVuZXJzKHR5cGUpIHtcbiAgcmV0dXJuIF9saXN0ZW5lcnModGhpcywgdHlwZSwgZmFsc2UpO1xufTtcblxuRXZlbnRFbWl0dGVyLmxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbihlbWl0dGVyLCB0eXBlKSB7XG4gIGlmICh0eXBlb2YgZW1pdHRlci5saXN0ZW5lckNvdW50ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGVtaXR0ZXIubGlzdGVuZXJDb3VudCh0eXBlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbGlzdGVuZXJDb3VudC5jYWxsKGVtaXR0ZXIsIHR5cGUpO1xuICB9XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVyQ291bnQgPSBsaXN0ZW5lckNvdW50O1xuZnVuY3Rpb24gbGlzdGVuZXJDb3VudCh0eXBlKSB7XG4gIHZhciBldmVudHMgPSB0aGlzLl9ldmVudHM7XG5cbiAgaWYgKGV2ZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdmFyIGV2bGlzdGVuZXIgPSBldmVudHNbdHlwZV07XG5cbiAgICBpZiAodHlwZW9mIGV2bGlzdGVuZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH0gZWxzZSBpZiAoZXZsaXN0ZW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZXZsaXN0ZW5lci5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIDA7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZXZlbnROYW1lcyA9IGZ1bmN0aW9uIGV2ZW50TmFtZXMoKSB7XG4gIHJldHVybiB0aGlzLl9ldmVudHNDb3VudCA+IDAgPyBSZWZsZWN0T3duS2V5cyh0aGlzLl9ldmVudHMpIDogW107XG59O1xuXG5mdW5jdGlvbiBhcnJheUNsb25lKGFyciwgbikge1xuICB2YXIgY29weSA9IG5ldyBBcnJheShuKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpXG4gICAgY29weVtpXSA9IGFycltpXTtcbiAgcmV0dXJuIGNvcHk7XG59XG5cbmZ1bmN0aW9uIHNwbGljZU9uZShsaXN0LCBpbmRleCkge1xuICBmb3IgKDsgaW5kZXggKyAxIDwgbGlzdC5sZW5ndGg7IGluZGV4KyspXG4gICAgbGlzdFtpbmRleF0gPSBsaXN0W2luZGV4ICsgMV07XG4gIGxpc3QucG9wKCk7XG59XG5cbmZ1bmN0aW9uIHVud3JhcExpc3RlbmVycyhhcnIpIHtcbiAgdmFyIHJldCA9IG5ldyBBcnJheShhcnIubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXQubGVuZ3RoOyArK2kpIHtcbiAgICByZXRbaV0gPSBhcnJbaV0ubGlzdGVuZXIgfHwgYXJyW2ldO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG9uY2UoZW1pdHRlciwgbmFtZSkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIGZ1bmN0aW9uIGVycm9yTGlzdGVuZXIoZXJyKSB7XG4gICAgICBlbWl0dGVyLnJlbW92ZUxpc3RlbmVyKG5hbWUsIHJlc29sdmVyKTtcbiAgICAgIHJlamVjdChlcnIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlc29sdmVyKCkge1xuICAgICAgaWYgKHR5cGVvZiBlbWl0dGVyLnJlbW92ZUxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGVtaXR0ZXIucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgZXJyb3JMaXN0ZW5lcik7XG4gICAgICB9XG4gICAgICByZXNvbHZlKFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7XG4gICAgfTtcblxuICAgIGV2ZW50VGFyZ2V0QWdub3N0aWNBZGRMaXN0ZW5lcihlbWl0dGVyLCBuYW1lLCByZXNvbHZlciwgeyBvbmNlOiB0cnVlIH0pO1xuICAgIGlmIChuYW1lICE9PSAnZXJyb3InKSB7XG4gICAgICBhZGRFcnJvckhhbmRsZXJJZkV2ZW50RW1pdHRlcihlbWl0dGVyLCBlcnJvckxpc3RlbmVyLCB7IG9uY2U6IHRydWUgfSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkRXJyb3JIYW5kbGVySWZFdmVudEVtaXR0ZXIoZW1pdHRlciwgaGFuZGxlciwgZmxhZ3MpIHtcbiAgaWYgKHR5cGVvZiBlbWl0dGVyLm9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgZXZlbnRUYXJnZXRBZ25vc3RpY0FkZExpc3RlbmVyKGVtaXR0ZXIsICdlcnJvcicsIGhhbmRsZXIsIGZsYWdzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBldmVudFRhcmdldEFnbm9zdGljQWRkTGlzdGVuZXIoZW1pdHRlciwgbmFtZSwgbGlzdGVuZXIsIGZsYWdzKSB7XG4gIGlmICh0eXBlb2YgZW1pdHRlci5vbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmIChmbGFncy5vbmNlKSB7XG4gICAgICBlbWl0dGVyLm9uY2UobmFtZSwgbGlzdGVuZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbWl0dGVyLm9uKG5hbWUsIGxpc3RlbmVyKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIGVtaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIEV2ZW50VGFyZ2V0IGRvZXMgbm90IGhhdmUgYGVycm9yYCBldmVudCBzZW1hbnRpY3MgbGlrZSBOb2RlXG4gICAgLy8gRXZlbnRFbWl0dGVycywgd2UgZG8gbm90IGxpc3RlbiBmb3IgYGVycm9yYCBldmVudHMgaGVyZS5cbiAgICBlbWl0dGVyLmFkZEV2ZW50TGlzdGVuZXIobmFtZSwgZnVuY3Rpb24gd3JhcExpc3RlbmVyKGFyZykge1xuICAgICAgLy8gSUUgZG9lcyBub3QgaGF2ZSBidWlsdGluIGB7IG9uY2U6IHRydWUgfWAgc3VwcG9ydCBzbyB3ZVxuICAgICAgLy8gaGF2ZSB0byBkbyBpdCBtYW51YWxseS5cbiAgICAgIGlmIChmbGFncy5vbmNlKSB7XG4gICAgICAgIGVtaXR0ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihuYW1lLCB3cmFwTGlzdGVuZXIpO1xuICAgICAgfVxuICAgICAgbGlzdGVuZXIoYXJnKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJlbWl0dGVyXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEV2ZW50RW1pdHRlci4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGVtaXR0ZXIpO1xuICB9XG59XG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBNRDUgPSByZXF1aXJlKCdtZDUuanMnKVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cbmZ1bmN0aW9uIEVWUF9CeXRlc1RvS2V5IChwYXNzd29yZCwgc2FsdCwga2V5Qml0cywgaXZMZW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocGFzc3dvcmQpKSBwYXNzd29yZCA9IEJ1ZmZlci5mcm9tKHBhc3N3b3JkLCAnYmluYXJ5JylcbiAgaWYgKHNhbHQpIHtcbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihzYWx0KSkgc2FsdCA9IEJ1ZmZlci5mcm9tKHNhbHQsICdiaW5hcnknKVxuICAgIGlmIChzYWx0Lmxlbmd0aCAhPT0gOCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NhbHQgc2hvdWxkIGJlIEJ1ZmZlciB3aXRoIDggYnl0ZSBsZW5ndGgnKVxuICB9XG5cbiAgdmFyIGtleUxlbiA9IGtleUJpdHMgLyA4XG4gIHZhciBrZXkgPSBCdWZmZXIuYWxsb2Moa2V5TGVuKVxuICB2YXIgaXYgPSBCdWZmZXIuYWxsb2MoaXZMZW4gfHwgMClcbiAgdmFyIHRtcCA9IEJ1ZmZlci5hbGxvYygwKVxuXG4gIHdoaWxlIChrZXlMZW4gPiAwIHx8IGl2TGVuID4gMCkge1xuICAgIHZhciBoYXNoID0gbmV3IE1ENSgpXG4gICAgaGFzaC51cGRhdGUodG1wKVxuICAgIGhhc2gudXBkYXRlKHBhc3N3b3JkKVxuICAgIGlmIChzYWx0KSBoYXNoLnVwZGF0ZShzYWx0KVxuICAgIHRtcCA9IGhhc2guZGlnZXN0KClcblxuICAgIHZhciB1c2VkID0gMFxuXG4gICAgaWYgKGtleUxlbiA+IDApIHtcbiAgICAgIHZhciBrZXlTdGFydCA9IGtleS5sZW5ndGggLSBrZXlMZW5cbiAgICAgIHVzZWQgPSBNYXRoLm1pbihrZXlMZW4sIHRtcC5sZW5ndGgpXG4gICAgICB0bXAuY29weShrZXksIGtleVN0YXJ0LCAwLCB1c2VkKVxuICAgICAga2V5TGVuIC09IHVzZWRcbiAgICB9XG5cbiAgICBpZiAodXNlZCA8IHRtcC5sZW5ndGggJiYgaXZMZW4gPiAwKSB7XG4gICAgICB2YXIgaXZTdGFydCA9IGl2Lmxlbmd0aCAtIGl2TGVuXG4gICAgICB2YXIgbGVuZ3RoID0gTWF0aC5taW4oaXZMZW4sIHRtcC5sZW5ndGggLSB1c2VkKVxuICAgICAgdG1wLmNvcHkoaXYsIGl2U3RhcnQsIHVzZWQsIHVzZWQgKyBsZW5ndGgpXG4gICAgICBpdkxlbiAtPSBsZW5ndGhcbiAgICB9XG4gIH1cblxuICB0bXAuZmlsbCgwKVxuICByZXR1cm4geyBrZXk6IGtleSwgaXY6IGl2IH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBFVlBfQnl0ZXNUb0tleVxuIiwiXG52YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZm9yRWFjaCAob2JqLCBmbiwgY3R4KSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwoZm4pICE9PSAnW29iamVjdCBGdW5jdGlvbl0nKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2l0ZXJhdG9yIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgIH1cbiAgICB2YXIgbCA9IG9iai5sZW5ndGg7XG4gICAgaWYgKGwgPT09ICtsKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBmbi5jYWxsKGN0eCwgb2JqW2ldLCBpLCBvYmopO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZm9yICh2YXIgayBpbiBvYmopIHtcbiAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChvYmosIGspKSB7XG4gICAgICAgICAgICAgICAgZm4uY2FsbChjdHgsIG9ialtrXSwgaywgb2JqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG5cbiIsIid1c2Ugc3RyaWN0JztcblxuLyogZXNsaW50IG5vLWludmFsaWQtdGhpczogMSAqL1xuXG52YXIgRVJST1JfTUVTU0FHRSA9ICdGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlICc7XG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG52YXIgdG9TdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIGZ1bmNUeXBlID0gJ1tvYmplY3QgRnVuY3Rpb25dJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiaW5kKHRoYXQpIHtcbiAgICB2YXIgdGFyZ2V0ID0gdGhpcztcbiAgICBpZiAodHlwZW9mIHRhcmdldCAhPT0gJ2Z1bmN0aW9uJyB8fCB0b1N0ci5jYWxsKHRhcmdldCkgIT09IGZ1bmNUeXBlKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRVJST1JfTUVTU0FHRSArIHRhcmdldCk7XG4gICAgfVxuICAgIHZhciBhcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG4gICAgdmFyIGJvdW5kO1xuICAgIHZhciBiaW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgYm91bmQpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSB0YXJnZXQuYXBwbHkoXG4gICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICBhcmdzLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cykpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKE9iamVjdChyZXN1bHQpID09PSByZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0LmFwcGx5KFxuICAgICAgICAgICAgICAgIHRoYXQsXG4gICAgICAgICAgICAgICAgYXJncy5jb25jYXQoc2xpY2UuY2FsbChhcmd1bWVudHMpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgYm91bmRMZW5ndGggPSBNYXRoLm1heCgwLCB0YXJnZXQubGVuZ3RoIC0gYXJncy5sZW5ndGgpO1xuICAgIHZhciBib3VuZEFyZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJvdW5kTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYm91bmRBcmdzLnB1c2goJyQnICsgaSk7XG4gICAgfVxuXG4gICAgYm91bmQgPSBGdW5jdGlvbignYmluZGVyJywgJ3JldHVybiBmdW5jdGlvbiAoJyArIGJvdW5kQXJncy5qb2luKCcsJykgKyAnKXsgcmV0dXJuIGJpbmRlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7IH0nKShiaW5kZXIpO1xuXG4gICAgaWYgKHRhcmdldC5wcm90b3R5cGUpIHtcbiAgICAgICAgdmFyIEVtcHR5ID0gZnVuY3Rpb24gRW1wdHkoKSB7fTtcbiAgICAgICAgRW1wdHkucHJvdG90eXBlID0gdGFyZ2V0LnByb3RvdHlwZTtcbiAgICAgICAgYm91bmQucHJvdG90eXBlID0gbmV3IEVtcHR5KCk7XG4gICAgICAgIEVtcHR5LnByb3RvdHlwZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJvdW5kO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGltcGxlbWVudGF0aW9uID0gcmVxdWlyZSgnLi9pbXBsZW1lbnRhdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kIHx8IGltcGxlbWVudGF0aW9uO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdW5kZWZpbmVkO1xuXG52YXIgJFN5bnRheEVycm9yID0gU3ludGF4RXJyb3I7XG52YXIgJEZ1bmN0aW9uID0gRnVuY3Rpb247XG52YXIgJFR5cGVFcnJvciA9IFR5cGVFcnJvcjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNvbnNpc3RlbnQtcmV0dXJuXG52YXIgZ2V0RXZhbGxlZENvbnN0cnVjdG9yID0gZnVuY3Rpb24gKGV4cHJlc3Npb25TeW50YXgpIHtcblx0dHJ5IHtcblx0XHRyZXR1cm4gJEZ1bmN0aW9uKCdcInVzZSBzdHJpY3RcIjsgcmV0dXJuICgnICsgZXhwcmVzc2lvblN5bnRheCArICcpLmNvbnN0cnVjdG9yOycpKCk7XG5cdH0gY2F0Y2ggKGUpIHt9XG59O1xuXG52YXIgJGdPUEQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuaWYgKCRnT1BEKSB7XG5cdHRyeSB7XG5cdFx0JGdPUEQoe30sICcnKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdCRnT1BEID0gbnVsbDsgLy8gdGhpcyBpcyBJRSA4LCB3aGljaCBoYXMgYSBicm9rZW4gZ09QRFxuXHR9XG59XG5cbnZhciB0aHJvd1R5cGVFcnJvciA9IGZ1bmN0aW9uICgpIHtcblx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoKTtcbn07XG52YXIgVGhyb3dUeXBlRXJyb3IgPSAkZ09QRFxuXHQ/IChmdW5jdGlvbiAoKSB7XG5cdFx0dHJ5IHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnMsIG5vLWNhbGxlciwgbm8tcmVzdHJpY3RlZC1wcm9wZXJ0aWVzXG5cdFx0XHRhcmd1bWVudHMuY2FsbGVlOyAvLyBJRSA4IGRvZXMgbm90IHRocm93IGhlcmVcblx0XHRcdHJldHVybiB0aHJvd1R5cGVFcnJvcjtcblx0XHR9IGNhdGNoIChjYWxsZWVUaHJvd3MpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdC8vIElFIDggdGhyb3dzIG9uIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJndW1lbnRzLCAnJylcblx0XHRcdFx0cmV0dXJuICRnT1BEKGFyZ3VtZW50cywgJ2NhbGxlZScpLmdldDtcblx0XHRcdH0gY2F0Y2ggKGdPUER0aHJvd3MpIHtcblx0XHRcdFx0cmV0dXJuIHRocm93VHlwZUVycm9yO1xuXHRcdFx0fVxuXHRcdH1cblx0fSgpKVxuXHQ6IHRocm93VHlwZUVycm9yO1xuXG52YXIgaGFzU3ltYm9scyA9IHJlcXVpcmUoJ2hhcy1zeW1ib2xzJykoKTtcblxudmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4Ll9fcHJvdG9fXzsgfTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wcm90b1xuXG52YXIgbmVlZHNFdmFsID0ge307XG5cbnZhciBUeXBlZEFycmF5ID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogZ2V0UHJvdG8oVWludDhBcnJheSk7XG5cbnZhciBJTlRSSU5TSUNTID0ge1xuXHQnJUFnZ3JlZ2F0ZUVycm9yJSc6IHR5cGVvZiBBZ2dyZWdhdGVFcnJvciA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBBZ2dyZWdhdGVFcnJvcixcblx0JyVBcnJheSUnOiBBcnJheSxcblx0JyVBcnJheUJ1ZmZlciUnOiB0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogQXJyYXlCdWZmZXIsXG5cdCclQXJyYXlJdGVyYXRvclByb3RvdHlwZSUnOiBoYXNTeW1ib2xzID8gZ2V0UHJvdG8oW11bU3ltYm9sLml0ZXJhdG9yXSgpKSA6IHVuZGVmaW5lZCxcblx0JyVBc3luY0Zyb21TeW5jSXRlcmF0b3JQcm90b3R5cGUlJzogdW5kZWZpbmVkLFxuXHQnJUFzeW5jRnVuY3Rpb24lJzogbmVlZHNFdmFsLFxuXHQnJUFzeW5jR2VuZXJhdG9yJSc6IG5lZWRzRXZhbCxcblx0JyVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJSc6IG5lZWRzRXZhbCxcblx0JyVBc3luY0l0ZXJhdG9yUHJvdG90eXBlJSc6IG5lZWRzRXZhbCxcblx0JyVBdG9taWNzJSc6IHR5cGVvZiBBdG9taWNzID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEF0b21pY3MsXG5cdCclQmlnSW50JSc6IHR5cGVvZiBCaWdJbnQgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogQmlnSW50LFxuXHQnJUJvb2xlYW4lJzogQm9vbGVhbixcblx0JyVEYXRhVmlldyUnOiB0eXBlb2YgRGF0YVZpZXcgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRGF0YVZpZXcsXG5cdCclRGF0ZSUnOiBEYXRlLFxuXHQnJWRlY29kZVVSSSUnOiBkZWNvZGVVUkksXG5cdCclZGVjb2RlVVJJQ29tcG9uZW50JSc6IGRlY29kZVVSSUNvbXBvbmVudCxcblx0JyVlbmNvZGVVUkklJzogZW5jb2RlVVJJLFxuXHQnJWVuY29kZVVSSUNvbXBvbmVudCUnOiBlbmNvZGVVUklDb21wb25lbnQsXG5cdCclRXJyb3IlJzogRXJyb3IsXG5cdCclZXZhbCUnOiBldmFsLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWV2YWxcblx0JyVFdmFsRXJyb3IlJzogRXZhbEVycm9yLFxuXHQnJUZsb2F0MzJBcnJheSUnOiB0eXBlb2YgRmxvYXQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZsb2F0MzJBcnJheSxcblx0JyVGbG9hdDY0QXJyYXklJzogdHlwZW9mIEZsb2F0NjRBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBGbG9hdDY0QXJyYXksXG5cdCclRmluYWxpemF0aW9uUmVnaXN0cnklJzogdHlwZW9mIEZpbmFsaXphdGlvblJlZ2lzdHJ5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZpbmFsaXphdGlvblJlZ2lzdHJ5LFxuXHQnJUZ1bmN0aW9uJSc6ICRGdW5jdGlvbixcblx0JyVHZW5lcmF0b3JGdW5jdGlvbiUnOiBuZWVkc0V2YWwsXG5cdCclSW50OEFycmF5JSc6IHR5cGVvZiBJbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogSW50OEFycmF5LFxuXHQnJUludDE2QXJyYXklJzogdHlwZW9mIEludDE2QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogSW50MTZBcnJheSxcblx0JyVJbnQzMkFycmF5JSc6IHR5cGVvZiBJbnQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEludDMyQXJyYXksXG5cdCclaXNGaW5pdGUlJzogaXNGaW5pdGUsXG5cdCclaXNOYU4lJzogaXNOYU4sXG5cdCclSXRlcmF0b3JQcm90b3R5cGUlJzogaGFzU3ltYm9scyA/IGdldFByb3RvKGdldFByb3RvKFtdW1N5bWJvbC5pdGVyYXRvcl0oKSkpIDogdW5kZWZpbmVkLFxuXHQnJUpTT04lJzogdHlwZW9mIEpTT04gPT09ICdvYmplY3QnID8gSlNPTiA6IHVuZGVmaW5lZCxcblx0JyVNYXAlJzogdHlwZW9mIE1hcCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBNYXAsXG5cdCclTWFwSXRlcmF0b3JQcm90b3R5cGUlJzogdHlwZW9mIE1hcCA9PT0gJ3VuZGVmaW5lZCcgfHwgIWhhc1N5bWJvbHMgPyB1bmRlZmluZWQgOiBnZXRQcm90byhuZXcgTWFwKClbU3ltYm9sLml0ZXJhdG9yXSgpKSxcblx0JyVNYXRoJSc6IE1hdGgsXG5cdCclTnVtYmVyJSc6IE51bWJlcixcblx0JyVPYmplY3QlJzogT2JqZWN0LFxuXHQnJXBhcnNlRmxvYXQlJzogcGFyc2VGbG9hdCxcblx0JyVwYXJzZUludCUnOiBwYXJzZUludCxcblx0JyVQcm9taXNlJSc6IHR5cGVvZiBQcm9taXNlID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFByb21pc2UsXG5cdCclUHJveHklJzogdHlwZW9mIFByb3h5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFByb3h5LFxuXHQnJVJhbmdlRXJyb3IlJzogUmFuZ2VFcnJvcixcblx0JyVSZWZlcmVuY2VFcnJvciUnOiBSZWZlcmVuY2VFcnJvcixcblx0JyVSZWZsZWN0JSc6IHR5cGVvZiBSZWZsZWN0ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFJlZmxlY3QsXG5cdCclUmVnRXhwJSc6IFJlZ0V4cCxcblx0JyVTZXQlJzogdHlwZW9mIFNldCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBTZXQsXG5cdCclU2V0SXRlcmF0b3JQcm90b3R5cGUlJzogdHlwZW9mIFNldCA9PT0gJ3VuZGVmaW5lZCcgfHwgIWhhc1N5bWJvbHMgPyB1bmRlZmluZWQgOiBnZXRQcm90byhuZXcgU2V0KClbU3ltYm9sLml0ZXJhdG9yXSgpKSxcblx0JyVTaGFyZWRBcnJheUJ1ZmZlciUnOiB0eXBlb2YgU2hhcmVkQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogU2hhcmVkQXJyYXlCdWZmZXIsXG5cdCclU3RyaW5nJSc6IFN0cmluZyxcblx0JyVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUnOiBoYXNTeW1ib2xzID8gZ2V0UHJvdG8oJydbU3ltYm9sLml0ZXJhdG9yXSgpKSA6IHVuZGVmaW5lZCxcblx0JyVTeW1ib2wlJzogaGFzU3ltYm9scyA/IFN5bWJvbCA6IHVuZGVmaW5lZCxcblx0JyVTeW50YXhFcnJvciUnOiAkU3ludGF4RXJyb3IsXG5cdCclVGhyb3dUeXBlRXJyb3IlJzogVGhyb3dUeXBlRXJyb3IsXG5cdCclVHlwZWRBcnJheSUnOiBUeXBlZEFycmF5LFxuXHQnJVR5cGVFcnJvciUnOiAkVHlwZUVycm9yLFxuXHQnJVVpbnQ4QXJyYXklJzogdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDhBcnJheSxcblx0JyVVaW50OENsYW1wZWRBcnJheSUnOiB0eXBlb2YgVWludDhDbGFtcGVkQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDhDbGFtcGVkQXJyYXksXG5cdCclVWludDE2QXJyYXklJzogdHlwZW9mIFVpbnQxNkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFVpbnQxNkFycmF5LFxuXHQnJVVpbnQzMkFycmF5JSc6IHR5cGVvZiBVaW50MzJBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50MzJBcnJheSxcblx0JyVVUklFcnJvciUnOiBVUklFcnJvcixcblx0JyVXZWFrTWFwJSc6IHR5cGVvZiBXZWFrTWFwID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFdlYWtNYXAsXG5cdCclV2Vha1JlZiUnOiB0eXBlb2YgV2Vha1JlZiA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBXZWFrUmVmLFxuXHQnJVdlYWtTZXQlJzogdHlwZW9mIFdlYWtTZXQgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogV2Vha1NldFxufTtcblxudmFyIGRvRXZhbCA9IGZ1bmN0aW9uIGRvRXZhbChuYW1lKSB7XG5cdHZhciB2YWx1ZTtcblx0aWYgKG5hbWUgPT09ICclQXN5bmNGdW5jdGlvbiUnKSB7XG5cdFx0dmFsdWUgPSBnZXRFdmFsbGVkQ29uc3RydWN0b3IoJ2FzeW5jIGZ1bmN0aW9uICgpIHt9Jyk7XG5cdH0gZWxzZSBpZiAobmFtZSA9PT0gJyVHZW5lcmF0b3JGdW5jdGlvbiUnKSB7XG5cdFx0dmFsdWUgPSBnZXRFdmFsbGVkQ29uc3RydWN0b3IoJ2Z1bmN0aW9uKiAoKSB7fScpO1xuXHR9IGVsc2UgaWYgKG5hbWUgPT09ICclQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiUnKSB7XG5cdFx0dmFsdWUgPSBnZXRFdmFsbGVkQ29uc3RydWN0b3IoJ2FzeW5jIGZ1bmN0aW9uKiAoKSB7fScpO1xuXHR9IGVsc2UgaWYgKG5hbWUgPT09ICclQXN5bmNHZW5lcmF0b3IlJykge1xuXHRcdHZhciBmbiA9IGRvRXZhbCgnJUFzeW5jR2VuZXJhdG9yRnVuY3Rpb24lJyk7XG5cdFx0aWYgKGZuKSB7XG5cdFx0XHR2YWx1ZSA9IGZuLnByb3RvdHlwZTtcblx0XHR9XG5cdH0gZWxzZSBpZiAobmFtZSA9PT0gJyVBc3luY0l0ZXJhdG9yUHJvdG90eXBlJScpIHtcblx0XHR2YXIgZ2VuID0gZG9FdmFsKCclQXN5bmNHZW5lcmF0b3IlJyk7XG5cdFx0aWYgKGdlbikge1xuXHRcdFx0dmFsdWUgPSBnZXRQcm90byhnZW4ucHJvdG90eXBlKTtcblx0XHR9XG5cdH1cblxuXHRJTlRSSU5TSUNTW25hbWVdID0gdmFsdWU7XG5cblx0cmV0dXJuIHZhbHVlO1xufTtcblxudmFyIExFR0FDWV9BTElBU0VTID0ge1xuXHQnJUFycmF5QnVmZmVyUHJvdG90eXBlJSc6IFsnQXJyYXlCdWZmZXInLCAncHJvdG90eXBlJ10sXG5cdCclQXJyYXlQcm90b3R5cGUlJzogWydBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVBcnJheVByb3RvX2VudHJpZXMlJzogWydBcnJheScsICdwcm90b3R5cGUnLCAnZW50cmllcyddLFxuXHQnJUFycmF5UHJvdG9fZm9yRWFjaCUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZScsICdmb3JFYWNoJ10sXG5cdCclQXJyYXlQcm90b19rZXlzJSc6IFsnQXJyYXknLCAncHJvdG90eXBlJywgJ2tleXMnXSxcblx0JyVBcnJheVByb3RvX3ZhbHVlcyUnOiBbJ0FycmF5JywgJ3Byb3RvdHlwZScsICd2YWx1ZXMnXSxcblx0JyVBc3luY0Z1bmN0aW9uUHJvdG90eXBlJSc6IFsnQXN5bmNGdW5jdGlvbicsICdwcm90b3R5cGUnXSxcblx0JyVBc3luY0dlbmVyYXRvciUnOiBbJ0FzeW5jR2VuZXJhdG9yRnVuY3Rpb24nLCAncHJvdG90eXBlJ10sXG5cdCclQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUlJzogWydBc3luY0dlbmVyYXRvckZ1bmN0aW9uJywgJ3Byb3RvdHlwZScsICdwcm90b3R5cGUnXSxcblx0JyVCb29sZWFuUHJvdG90eXBlJSc6IFsnQm9vbGVhbicsICdwcm90b3R5cGUnXSxcblx0JyVEYXRhVmlld1Byb3RvdHlwZSUnOiBbJ0RhdGFWaWV3JywgJ3Byb3RvdHlwZSddLFxuXHQnJURhdGVQcm90b3R5cGUlJzogWydEYXRlJywgJ3Byb3RvdHlwZSddLFxuXHQnJUVycm9yUHJvdG90eXBlJSc6IFsnRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclRXZhbEVycm9yUHJvdG90eXBlJSc6IFsnRXZhbEVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJUZsb2F0MzJBcnJheVByb3RvdHlwZSUnOiBbJ0Zsb2F0MzJBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVGbG9hdDY0QXJyYXlQcm90b3R5cGUlJzogWydGbG9hdDY0QXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclRnVuY3Rpb25Qcm90b3R5cGUlJzogWydGdW5jdGlvbicsICdwcm90b3R5cGUnXSxcblx0JyVHZW5lcmF0b3IlJzogWydHZW5lcmF0b3JGdW5jdGlvbicsICdwcm90b3R5cGUnXSxcblx0JyVHZW5lcmF0b3JQcm90b3R5cGUlJzogWydHZW5lcmF0b3JGdW5jdGlvbicsICdwcm90b3R5cGUnLCAncHJvdG90eXBlJ10sXG5cdCclSW50OEFycmF5UHJvdG90eXBlJSc6IFsnSW50OEFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUludDE2QXJyYXlQcm90b3R5cGUlJzogWydJbnQxNkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUludDMyQXJyYXlQcm90b3R5cGUlJzogWydJbnQzMkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJUpTT05QYXJzZSUnOiBbJ0pTT04nLCAncGFyc2UnXSxcblx0JyVKU09OU3RyaW5naWZ5JSc6IFsnSlNPTicsICdzdHJpbmdpZnknXSxcblx0JyVNYXBQcm90b3R5cGUlJzogWydNYXAnLCAncHJvdG90eXBlJ10sXG5cdCclTnVtYmVyUHJvdG90eXBlJSc6IFsnTnVtYmVyJywgJ3Byb3RvdHlwZSddLFxuXHQnJU9iamVjdFByb3RvdHlwZSUnOiBbJ09iamVjdCcsICdwcm90b3R5cGUnXSxcblx0JyVPYmpQcm90b190b1N0cmluZyUnOiBbJ09iamVjdCcsICdwcm90b3R5cGUnLCAndG9TdHJpbmcnXSxcblx0JyVPYmpQcm90b192YWx1ZU9mJSc6IFsnT2JqZWN0JywgJ3Byb3RvdHlwZScsICd2YWx1ZU9mJ10sXG5cdCclUHJvbWlzZVByb3RvdHlwZSUnOiBbJ1Byb21pc2UnLCAncHJvdG90eXBlJ10sXG5cdCclUHJvbWlzZVByb3RvX3RoZW4lJzogWydQcm9taXNlJywgJ3Byb3RvdHlwZScsICd0aGVuJ10sXG5cdCclUHJvbWlzZV9hbGwlJzogWydQcm9taXNlJywgJ2FsbCddLFxuXHQnJVByb21pc2VfcmVqZWN0JSc6IFsnUHJvbWlzZScsICdyZWplY3QnXSxcblx0JyVQcm9taXNlX3Jlc29sdmUlJzogWydQcm9taXNlJywgJ3Jlc29sdmUnXSxcblx0JyVSYW5nZUVycm9yUHJvdG90eXBlJSc6IFsnUmFuZ2VFcnJvcicsICdwcm90b3R5cGUnXSxcblx0JyVSZWZlcmVuY2VFcnJvclByb3RvdHlwZSUnOiBbJ1JlZmVyZW5jZUVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJVJlZ0V4cFByb3RvdHlwZSUnOiBbJ1JlZ0V4cCcsICdwcm90b3R5cGUnXSxcblx0JyVTZXRQcm90b3R5cGUlJzogWydTZXQnLCAncHJvdG90eXBlJ10sXG5cdCclU2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUlJzogWydTaGFyZWRBcnJheUJ1ZmZlcicsICdwcm90b3R5cGUnXSxcblx0JyVTdHJpbmdQcm90b3R5cGUlJzogWydTdHJpbmcnLCAncHJvdG90eXBlJ10sXG5cdCclU3ltYm9sUHJvdG90eXBlJSc6IFsnU3ltYm9sJywgJ3Byb3RvdHlwZSddLFxuXHQnJVN5bnRheEVycm9yUHJvdG90eXBlJSc6IFsnU3ludGF4RXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclVHlwZWRBcnJheVByb3RvdHlwZSUnOiBbJ1R5cGVkQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVHlwZUVycm9yUHJvdG90eXBlJSc6IFsnVHlwZUVycm9yJywgJ3Byb3RvdHlwZSddLFxuXHQnJVVpbnQ4QXJyYXlQcm90b3R5cGUlJzogWydVaW50OEFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJVVpbnQ4Q2xhbXBlZEFycmF5UHJvdG90eXBlJSc6IFsnVWludDhDbGFtcGVkQXJyYXknLCAncHJvdG90eXBlJ10sXG5cdCclVWludDE2QXJyYXlQcm90b3R5cGUlJzogWydVaW50MTZBcnJheScsICdwcm90b3R5cGUnXSxcblx0JyVVaW50MzJBcnJheVByb3RvdHlwZSUnOiBbJ1VpbnQzMkFycmF5JywgJ3Byb3RvdHlwZSddLFxuXHQnJVVSSUVycm9yUHJvdG90eXBlJSc6IFsnVVJJRXJyb3InLCAncHJvdG90eXBlJ10sXG5cdCclV2Vha01hcFByb3RvdHlwZSUnOiBbJ1dlYWtNYXAnLCAncHJvdG90eXBlJ10sXG5cdCclV2Vha1NldFByb3RvdHlwZSUnOiBbJ1dlYWtTZXQnLCAncHJvdG90eXBlJ11cbn07XG5cbnZhciBiaW5kID0gcmVxdWlyZSgnZnVuY3Rpb24tYmluZCcpO1xudmFyIGhhc093biA9IHJlcXVpcmUoJ2hhcycpO1xudmFyICRjb25jYXQgPSBiaW5kLmNhbGwoRnVuY3Rpb24uY2FsbCwgQXJyYXkucHJvdG90eXBlLmNvbmNhdCk7XG52YXIgJHNwbGljZUFwcGx5ID0gYmluZC5jYWxsKEZ1bmN0aW9uLmFwcGx5LCBBcnJheS5wcm90b3R5cGUuc3BsaWNlKTtcbnZhciAkcmVwbGFjZSA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpO1xudmFyICRzdHJTbGljZSA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCBTdHJpbmcucHJvdG90eXBlLnNsaWNlKTtcblxuLyogYWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9sb2Rhc2gvbG9kYXNoL2Jsb2IvNC4xNy4xNS9kaXN0L2xvZGFzaC5qcyNMNjczNS1MNjc0NCAqL1xudmFyIHJlUHJvcE5hbWUgPSAvW14lLltcXF1dK3xcXFsoPzooLT9cXGQrKD86XFwuXFxkKyk/KXwoW1wiJ10pKCg/Oig/IVxcMilbXlxcXFxdfFxcXFwuKSo/KVxcMilcXF18KD89KD86XFwufFxcW1xcXSkoPzpcXC58XFxbXFxdfCUkKSkvZztcbnZhciByZUVzY2FwZUNoYXIgPSAvXFxcXChcXFxcKT8vZzsgLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgc3RyaW5nVG9QYXRoID0gZnVuY3Rpb24gc3RyaW5nVG9QYXRoKHN0cmluZykge1xuXHR2YXIgZmlyc3QgPSAkc3RyU2xpY2Uoc3RyaW5nLCAwLCAxKTtcblx0dmFyIGxhc3QgPSAkc3RyU2xpY2Uoc3RyaW5nLCAtMSk7XG5cdGlmIChmaXJzdCA9PT0gJyUnICYmIGxhc3QgIT09ICclJykge1xuXHRcdHRocm93IG5ldyAkU3ludGF4RXJyb3IoJ2ludmFsaWQgaW50cmluc2ljIHN5bnRheCwgZXhwZWN0ZWQgY2xvc2luZyBgJWAnKTtcblx0fSBlbHNlIGlmIChsYXN0ID09PSAnJScgJiYgZmlyc3QgIT09ICclJykge1xuXHRcdHRocm93IG5ldyAkU3ludGF4RXJyb3IoJ2ludmFsaWQgaW50cmluc2ljIHN5bnRheCwgZXhwZWN0ZWQgb3BlbmluZyBgJWAnKTtcblx0fVxuXHR2YXIgcmVzdWx0ID0gW107XG5cdCRyZXBsYWNlKHN0cmluZywgcmVQcm9wTmFtZSwgZnVuY3Rpb24gKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcblx0XHRyZXN1bHRbcmVzdWx0Lmxlbmd0aF0gPSBxdW90ZSA/ICRyZXBsYWNlKHN1YlN0cmluZywgcmVFc2NhcGVDaGFyLCAnJDEnKSA6IG51bWJlciB8fCBtYXRjaDtcblx0fSk7XG5cdHJldHVybiByZXN1bHQ7XG59O1xuLyogZW5kIGFkYXB0YXRpb24gKi9cblxudmFyIGdldEJhc2VJbnRyaW5zaWMgPSBmdW5jdGlvbiBnZXRCYXNlSW50cmluc2ljKG5hbWUsIGFsbG93TWlzc2luZykge1xuXHR2YXIgaW50cmluc2ljTmFtZSA9IG5hbWU7XG5cdHZhciBhbGlhcztcblx0aWYgKGhhc093bihMRUdBQ1lfQUxJQVNFUywgaW50cmluc2ljTmFtZSkpIHtcblx0XHRhbGlhcyA9IExFR0FDWV9BTElBU0VTW2ludHJpbnNpY05hbWVdO1xuXHRcdGludHJpbnNpY05hbWUgPSAnJScgKyBhbGlhc1swXSArICclJztcblx0fVxuXG5cdGlmIChoYXNPd24oSU5UUklOU0lDUywgaW50cmluc2ljTmFtZSkpIHtcblx0XHR2YXIgdmFsdWUgPSBJTlRSSU5TSUNTW2ludHJpbnNpY05hbWVdO1xuXHRcdGlmICh2YWx1ZSA9PT0gbmVlZHNFdmFsKSB7XG5cdFx0XHR2YWx1ZSA9IGRvRXZhbChpbnRyaW5zaWNOYW1lKTtcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgJiYgIWFsbG93TWlzc2luZykge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2ludHJpbnNpYyAnICsgbmFtZSArICcgZXhpc3RzLCBidXQgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGZpbGUgYW4gaXNzdWUhJyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGFsaWFzOiBhbGlhcyxcblx0XHRcdG5hbWU6IGludHJpbnNpY05hbWUsXG5cdFx0XHR2YWx1ZTogdmFsdWVcblx0XHR9O1xuXHR9XG5cblx0dGhyb3cgbmV3ICRTeW50YXhFcnJvcignaW50cmluc2ljICcgKyBuYW1lICsgJyBkb2VzIG5vdCBleGlzdCEnKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gR2V0SW50cmluc2ljKG5hbWUsIGFsbG93TWlzc2luZykge1xuXHRpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnIHx8IG5hbWUubGVuZ3RoID09PSAwKSB7XG5cdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2ludHJpbnNpYyBuYW1lIG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJyk7XG5cdH1cblx0aWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIHR5cGVvZiBhbGxvd01pc3NpbmcgIT09ICdib29sZWFuJykge1xuXHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdcImFsbG93TWlzc2luZ1wiIGFyZ3VtZW50IG11c3QgYmUgYSBib29sZWFuJyk7XG5cdH1cblxuXHR2YXIgcGFydHMgPSBzdHJpbmdUb1BhdGgobmFtZSk7XG5cdHZhciBpbnRyaW5zaWNCYXNlTmFtZSA9IHBhcnRzLmxlbmd0aCA+IDAgPyBwYXJ0c1swXSA6ICcnO1xuXG5cdHZhciBpbnRyaW5zaWMgPSBnZXRCYXNlSW50cmluc2ljKCclJyArIGludHJpbnNpY0Jhc2VOYW1lICsgJyUnLCBhbGxvd01pc3NpbmcpO1xuXHR2YXIgaW50cmluc2ljUmVhbE5hbWUgPSBpbnRyaW5zaWMubmFtZTtcblx0dmFyIHZhbHVlID0gaW50cmluc2ljLnZhbHVlO1xuXHR2YXIgc2tpcEZ1cnRoZXJDYWNoaW5nID0gZmFsc2U7XG5cblx0dmFyIGFsaWFzID0gaW50cmluc2ljLmFsaWFzO1xuXHRpZiAoYWxpYXMpIHtcblx0XHRpbnRyaW5zaWNCYXNlTmFtZSA9IGFsaWFzWzBdO1xuXHRcdCRzcGxpY2VBcHBseShwYXJ0cywgJGNvbmNhdChbMCwgMV0sIGFsaWFzKSk7XG5cdH1cblxuXHRmb3IgKHZhciBpID0gMSwgaXNPd24gPSB0cnVlOyBpIDwgcGFydHMubGVuZ3RoOyBpICs9IDEpIHtcblx0XHR2YXIgcGFydCA9IHBhcnRzW2ldO1xuXHRcdHZhciBmaXJzdCA9ICRzdHJTbGljZShwYXJ0LCAwLCAxKTtcblx0XHR2YXIgbGFzdCA9ICRzdHJTbGljZShwYXJ0LCAtMSk7XG5cdFx0aWYgKFxuXHRcdFx0KFxuXHRcdFx0XHQoZmlyc3QgPT09ICdcIicgfHwgZmlyc3QgPT09IFwiJ1wiIHx8IGZpcnN0ID09PSAnYCcpXG5cdFx0XHRcdHx8IChsYXN0ID09PSAnXCInIHx8IGxhc3QgPT09IFwiJ1wiIHx8IGxhc3QgPT09ICdgJylcblx0XHRcdClcblx0XHRcdCYmIGZpcnN0ICE9PSBsYXN0XG5cdFx0KSB7XG5cdFx0XHR0aHJvdyBuZXcgJFN5bnRheEVycm9yKCdwcm9wZXJ0eSBuYW1lcyB3aXRoIHF1b3RlcyBtdXN0IGhhdmUgbWF0Y2hpbmcgcXVvdGVzJyk7XG5cdFx0fVxuXHRcdGlmIChwYXJ0ID09PSAnY29uc3RydWN0b3InIHx8ICFpc093bikge1xuXHRcdFx0c2tpcEZ1cnRoZXJDYWNoaW5nID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRpbnRyaW5zaWNCYXNlTmFtZSArPSAnLicgKyBwYXJ0O1xuXHRcdGludHJpbnNpY1JlYWxOYW1lID0gJyUnICsgaW50cmluc2ljQmFzZU5hbWUgKyAnJSc7XG5cblx0XHRpZiAoaGFzT3duKElOVFJJTlNJQ1MsIGludHJpbnNpY1JlYWxOYW1lKSkge1xuXHRcdFx0dmFsdWUgPSBJTlRSSU5TSUNTW2ludHJpbnNpY1JlYWxOYW1lXTtcblx0XHR9IGVsc2UgaWYgKHZhbHVlICE9IG51bGwpIHtcblx0XHRcdGlmICghKHBhcnQgaW4gdmFsdWUpKSB7XG5cdFx0XHRcdGlmICghYWxsb3dNaXNzaW5nKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ2Jhc2UgaW50cmluc2ljIGZvciAnICsgbmFtZSArICcgZXhpc3RzLCBidXQgdGhlIHByb3BlcnR5IGlzIG5vdCBhdmFpbGFibGUuJyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHZvaWQgdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCRnT1BEICYmIChpICsgMSkgPj0gcGFydHMubGVuZ3RoKSB7XG5cdFx0XHRcdHZhciBkZXNjID0gJGdPUEQodmFsdWUsIHBhcnQpO1xuXHRcdFx0XHRpc093biA9ICEhZGVzYztcblxuXHRcdFx0XHQvLyBCeSBjb252ZW50aW9uLCB3aGVuIGEgZGF0YSBwcm9wZXJ0eSBpcyBjb252ZXJ0ZWQgdG8gYW4gYWNjZXNzb3Jcblx0XHRcdFx0Ly8gcHJvcGVydHkgdG8gZW11bGF0ZSBhIGRhdGEgcHJvcGVydHkgdGhhdCBkb2VzIG5vdCBzdWZmZXIgZnJvbVxuXHRcdFx0XHQvLyB0aGUgb3ZlcnJpZGUgbWlzdGFrZSwgdGhhdCBhY2Nlc3NvcidzIGdldHRlciBpcyBtYXJrZWQgd2l0aFxuXHRcdFx0XHQvLyBhbiBgb3JpZ2luYWxWYWx1ZWAgcHJvcGVydHkuIEhlcmUsIHdoZW4gd2UgZGV0ZWN0IHRoaXMsIHdlXG5cdFx0XHRcdC8vIHVwaG9sZCB0aGUgaWxsdXNpb24gYnkgcHJldGVuZGluZyB0byBzZWUgdGhhdCBvcmlnaW5hbCBkYXRhXG5cdFx0XHRcdC8vIHByb3BlcnR5LCBpLmUuLCByZXR1cm5pbmcgdGhlIHZhbHVlIHJhdGhlciB0aGFuIHRoZSBnZXR0ZXJcblx0XHRcdFx0Ly8gaXRzZWxmLlxuXHRcdFx0XHRpZiAoaXNPd24gJiYgJ2dldCcgaW4gZGVzYyAmJiAhKCdvcmlnaW5hbFZhbHVlJyBpbiBkZXNjLmdldCkpIHtcblx0XHRcdFx0XHR2YWx1ZSA9IGRlc2MuZ2V0O1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHZhbHVlID0gdmFsdWVbcGFydF07XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlzT3duID0gaGFzT3duKHZhbHVlLCBwYXJ0KTtcblx0XHRcdFx0dmFsdWUgPSB2YWx1ZVtwYXJ0XTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGlzT3duICYmICFza2lwRnVydGhlckNhY2hpbmcpIHtcblx0XHRcdFx0SU5UUklOU0lDU1tpbnRyaW5zaWNSZWFsTmFtZV0gPSB2YWx1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHZhbHVlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIG9yaWdTeW1ib2wgPSB0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2w7XG52YXIgaGFzU3ltYm9sU2hhbSA9IHJlcXVpcmUoJy4vc2hhbXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBoYXNOYXRpdmVTeW1ib2xzKCkge1xuXHRpZiAodHlwZW9mIG9yaWdTeW1ib2wgIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAodHlwZW9mIG9yaWdTeW1ib2woJ2ZvbycpICE9PSAnc3ltYm9sJykgeyByZXR1cm4gZmFsc2U7IH1cblx0aWYgKHR5cGVvZiBTeW1ib2woJ2JhcicpICE9PSAnc3ltYm9sJykgeyByZXR1cm4gZmFsc2U7IH1cblxuXHRyZXR1cm4gaGFzU3ltYm9sU2hhbSgpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyogZXNsaW50IGNvbXBsZXhpdHk6IFsyLCAxOF0sIG1heC1zdGF0ZW1lbnRzOiBbMiwgMzNdICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGhhc1N5bWJvbHMoKSB7XG5cdGlmICh0eXBlb2YgU3ltYm9sICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICE9PSAnZnVuY3Rpb24nKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAodHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gJ3N5bWJvbCcpIHsgcmV0dXJuIHRydWU7IH1cblxuXHR2YXIgb2JqID0ge307XG5cdHZhciBzeW0gPSBTeW1ib2woJ3Rlc3QnKTtcblx0dmFyIHN5bU9iaiA9IE9iamVjdChzeW0pO1xuXHRpZiAodHlwZW9mIHN5bSA9PT0gJ3N0cmluZycpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0aWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzeW0pICE9PSAnW29iamVjdCBTeW1ib2xdJykgeyByZXR1cm4gZmFsc2U7IH1cblx0aWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChzeW1PYmopICE9PSAnW29iamVjdCBTeW1ib2xdJykgeyByZXR1cm4gZmFsc2U7IH1cblxuXHQvLyB0ZW1wIGRpc2FibGVkIHBlciBodHRwczovL2dpdGh1Yi5jb20vbGpoYXJiL29iamVjdC5hc3NpZ24vaXNzdWVzLzE3XG5cdC8vIGlmIChzeW0gaW5zdGFuY2VvZiBTeW1ib2wpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdC8vIHRlbXAgZGlzYWJsZWQgcGVyIGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJSZWZsZWN0aW9uL2dldC1vd24tcHJvcGVydHktc3ltYm9scy9pc3N1ZXMvNFxuXHQvLyBpZiAoIShzeW1PYmogaW5zdGFuY2VvZiBTeW1ib2wpKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdC8vIGlmICh0eXBlb2YgU3ltYm9sLnByb3RvdHlwZS50b1N0cmluZyAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm4gZmFsc2U7IH1cblx0Ly8gaWYgKFN0cmluZyhzeW0pICE9PSBTeW1ib2wucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc3ltKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHR2YXIgc3ltVmFsID0gNDI7XG5cdG9ialtzeW1dID0gc3ltVmFsO1xuXHRmb3IgKHN5bSBpbiBvYmopIHsgcmV0dXJuIGZhbHNlOyB9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcmVzdHJpY3RlZC1zeW50YXgsIG5vLXVucmVhY2hhYmxlLWxvb3Bcblx0aWYgKHR5cGVvZiBPYmplY3Qua2V5cyA9PT0gJ2Z1bmN0aW9uJyAmJiBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCAhPT0gMCkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHRpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzID09PSAnZnVuY3Rpb24nICYmIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iaikubGVuZ3RoICE9PSAwKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdHZhciBzeW1zID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhvYmopO1xuXHRpZiAoc3ltcy5sZW5ndGggIT09IDEgfHwgc3ltc1swXSAhPT0gc3ltKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iaiwgc3ltKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHRpZiAodHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPT09ICdmdW5jdGlvbicpIHtcblx0XHR2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBzeW0pO1xuXHRcdGlmIChkZXNjcmlwdG9yLnZhbHVlICE9PSBzeW1WYWwgfHwgZGVzY3JpcHRvci5lbnVtZXJhYmxlICE9PSB0cnVlKSB7IHJldHVybiBmYWxzZTsgfVxuXHR9XG5cblx0cmV0dXJuIHRydWU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYmluZCA9IHJlcXVpcmUoJ2Z1bmN0aW9uLWJpbmQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiaW5kLmNhbGwoRnVuY3Rpb24uY2FsbCwgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSk7XG4iLCIndXNlIHN0cmljdCdcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbScpLlRyYW5zZm9ybVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5mdW5jdGlvbiB0aHJvd0lmTm90U3RyaW5nT3JCdWZmZXIgKHZhbCwgcHJlZml4KSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHZhbCkgJiYgdHlwZW9mIHZhbCAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHByZWZpeCArICcgbXVzdCBiZSBhIHN0cmluZyBvciBhIGJ1ZmZlcicpXG4gIH1cbn1cblxuZnVuY3Rpb24gSGFzaEJhc2UgKGJsb2NrU2l6ZSkge1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuXG4gIHRoaXMuX2Jsb2NrID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2NrU2l6ZSlcbiAgdGhpcy5fYmxvY2tTaXplID0gYmxvY2tTaXplXG4gIHRoaXMuX2Jsb2NrT2Zmc2V0ID0gMFxuICB0aGlzLl9sZW5ndGggPSBbMCwgMCwgMCwgMF1cblxuICB0aGlzLl9maW5hbGl6ZWQgPSBmYWxzZVxufVxuXG5pbmhlcml0cyhIYXNoQmFzZSwgVHJhbnNmb3JtKVxuXG5IYXNoQmFzZS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gIHZhciBlcnJvciA9IG51bGxcbiAgdHJ5IHtcbiAgICB0aGlzLnVwZGF0ZShjaHVuaywgZW5jb2RpbmcpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGVycm9yID0gZXJyXG4gIH1cblxuICBjYWxsYmFjayhlcnJvcilcbn1cblxuSGFzaEJhc2UucHJvdG90eXBlLl9mbHVzaCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB2YXIgZXJyb3IgPSBudWxsXG4gIHRyeSB7XG4gICAgdGhpcy5wdXNoKHRoaXMuZGlnZXN0KCkpXG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGVycm9yID0gZXJyXG4gIH1cblxuICBjYWxsYmFjayhlcnJvcilcbn1cblxuSGFzaEJhc2UucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhLCBlbmNvZGluZykge1xuICB0aHJvd0lmTm90U3RyaW5nT3JCdWZmZXIoZGF0YSwgJ0RhdGEnKVxuICBpZiAodGhpcy5fZmluYWxpemVkKSB0aHJvdyBuZXcgRXJyb3IoJ0RpZ2VzdCBhbHJlYWR5IGNhbGxlZCcpXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGRhdGEpKSBkYXRhID0gQnVmZmVyLmZyb20oZGF0YSwgZW5jb2RpbmcpXG5cbiAgLy8gY29uc3VtZSBkYXRhXG4gIHZhciBibG9jayA9IHRoaXMuX2Jsb2NrXG4gIHZhciBvZmZzZXQgPSAwXG4gIHdoaWxlICh0aGlzLl9ibG9ja09mZnNldCArIGRhdGEubGVuZ3RoIC0gb2Zmc2V0ID49IHRoaXMuX2Jsb2NrU2l6ZSkge1xuICAgIGZvciAodmFyIGkgPSB0aGlzLl9ibG9ja09mZnNldDsgaSA8IHRoaXMuX2Jsb2NrU2l6ZTspIGJsb2NrW2krK10gPSBkYXRhW29mZnNldCsrXVxuICAgIHRoaXMuX3VwZGF0ZSgpXG4gICAgdGhpcy5fYmxvY2tPZmZzZXQgPSAwXG4gIH1cbiAgd2hpbGUgKG9mZnNldCA8IGRhdGEubGVuZ3RoKSBibG9ja1t0aGlzLl9ibG9ja09mZnNldCsrXSA9IGRhdGFbb2Zmc2V0KytdXG5cbiAgLy8gdXBkYXRlIGxlbmd0aFxuICBmb3IgKHZhciBqID0gMCwgY2FycnkgPSBkYXRhLmxlbmd0aCAqIDg7IGNhcnJ5ID4gMDsgKytqKSB7XG4gICAgdGhpcy5fbGVuZ3RoW2pdICs9IGNhcnJ5XG4gICAgY2FycnkgPSAodGhpcy5fbGVuZ3RoW2pdIC8gMHgwMTAwMDAwMDAwKSB8IDBcbiAgICBpZiAoY2FycnkgPiAwKSB0aGlzLl9sZW5ndGhbal0gLT0gMHgwMTAwMDAwMDAwICogY2FycnlcbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbkhhc2hCYXNlLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ191cGRhdGUgaXMgbm90IGltcGxlbWVudGVkJylcbn1cblxuSGFzaEJhc2UucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIChlbmNvZGluZykge1xuICBpZiAodGhpcy5fZmluYWxpemVkKSB0aHJvdyBuZXcgRXJyb3IoJ0RpZ2VzdCBhbHJlYWR5IGNhbGxlZCcpXG4gIHRoaXMuX2ZpbmFsaXplZCA9IHRydWVcblxuICB2YXIgZGlnZXN0ID0gdGhpcy5fZGlnZXN0KClcbiAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQpIGRpZ2VzdCA9IGRpZ2VzdC50b1N0cmluZyhlbmNvZGluZylcblxuICAvLyByZXNldCBzdGF0ZVxuICB0aGlzLl9ibG9jay5maWxsKDApXG4gIHRoaXMuX2Jsb2NrT2Zmc2V0ID0gMFxuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7ICsraSkgdGhpcy5fbGVuZ3RoW2ldID0gMFxuXG4gIHJldHVybiBkaWdlc3Rcbn1cblxuSGFzaEJhc2UucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignX2RpZ2VzdCBpcyBub3QgaW1wbGVtZW50ZWQnKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2hCYXNlXG4iLCJ2YXIgaGFzaCA9IGV4cG9ydHM7XG5cbmhhc2gudXRpbHMgPSByZXF1aXJlKCcuL2hhc2gvdXRpbHMnKTtcbmhhc2guY29tbW9uID0gcmVxdWlyZSgnLi9oYXNoL2NvbW1vbicpO1xuaGFzaC5zaGEgPSByZXF1aXJlKCcuL2hhc2gvc2hhJyk7XG5oYXNoLnJpcGVtZCA9IHJlcXVpcmUoJy4vaGFzaC9yaXBlbWQnKTtcbmhhc2guaG1hYyA9IHJlcXVpcmUoJy4vaGFzaC9obWFjJyk7XG5cbi8vIFByb3h5IGhhc2ggZnVuY3Rpb25zIHRvIHRoZSBtYWluIG9iamVjdFxuaGFzaC5zaGExID0gaGFzaC5zaGEuc2hhMTtcbmhhc2guc2hhMjU2ID0gaGFzaC5zaGEuc2hhMjU2O1xuaGFzaC5zaGEyMjQgPSBoYXNoLnNoYS5zaGEyMjQ7XG5oYXNoLnNoYTM4NCA9IGhhc2guc2hhLnNoYTM4NDtcbmhhc2guc2hhNTEyID0gaGFzaC5zaGEuc2hhNTEyO1xuaGFzaC5yaXBlbWQxNjAgPSBoYXNoLnJpcGVtZC5yaXBlbWQxNjA7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbmZ1bmN0aW9uIEJsb2NrSGFzaCgpIHtcbiAgdGhpcy5wZW5kaW5nID0gbnVsbDtcbiAgdGhpcy5wZW5kaW5nVG90YWwgPSAwO1xuICB0aGlzLmJsb2NrU2l6ZSA9IHRoaXMuY29uc3RydWN0b3IuYmxvY2tTaXplO1xuICB0aGlzLm91dFNpemUgPSB0aGlzLmNvbnN0cnVjdG9yLm91dFNpemU7XG4gIHRoaXMuaG1hY1N0cmVuZ3RoID0gdGhpcy5jb25zdHJ1Y3Rvci5obWFjU3RyZW5ndGg7XG4gIHRoaXMucGFkTGVuZ3RoID0gdGhpcy5jb25zdHJ1Y3Rvci5wYWRMZW5ndGggLyA4O1xuICB0aGlzLmVuZGlhbiA9ICdiaWcnO1xuXG4gIHRoaXMuX2RlbHRhOCA9IHRoaXMuYmxvY2tTaXplIC8gODtcbiAgdGhpcy5fZGVsdGEzMiA9IHRoaXMuYmxvY2tTaXplIC8gMzI7XG59XG5leHBvcnRzLkJsb2NrSGFzaCA9IEJsb2NrSGFzaDtcblxuQmxvY2tIYXNoLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUobXNnLCBlbmMpIHtcbiAgLy8gQ29udmVydCBtZXNzYWdlIHRvIGFycmF5LCBwYWQgaXQsIGFuZCBqb2luIGludG8gMzJiaXQgYmxvY2tzXG4gIG1zZyA9IHV0aWxzLnRvQXJyYXkobXNnLCBlbmMpO1xuICBpZiAoIXRoaXMucGVuZGluZylcbiAgICB0aGlzLnBlbmRpbmcgPSBtc2c7XG4gIGVsc2VcbiAgICB0aGlzLnBlbmRpbmcgPSB0aGlzLnBlbmRpbmcuY29uY2F0KG1zZyk7XG4gIHRoaXMucGVuZGluZ1RvdGFsICs9IG1zZy5sZW5ndGg7XG5cbiAgLy8gRW5vdWdoIGRhdGEsIHRyeSB1cGRhdGluZ1xuICBpZiAodGhpcy5wZW5kaW5nLmxlbmd0aCA+PSB0aGlzLl9kZWx0YTgpIHtcbiAgICBtc2cgPSB0aGlzLnBlbmRpbmc7XG5cbiAgICAvLyBQcm9jZXNzIHBlbmRpbmcgZGF0YSBpbiBibG9ja3NcbiAgICB2YXIgciA9IG1zZy5sZW5ndGggJSB0aGlzLl9kZWx0YTg7XG4gICAgdGhpcy5wZW5kaW5nID0gbXNnLnNsaWNlKG1zZy5sZW5ndGggLSByLCBtc2cubGVuZ3RoKTtcbiAgICBpZiAodGhpcy5wZW5kaW5nLmxlbmd0aCA9PT0gMClcbiAgICAgIHRoaXMucGVuZGluZyA9IG51bGw7XG5cbiAgICBtc2cgPSB1dGlscy5qb2luMzIobXNnLCAwLCBtc2cubGVuZ3RoIC0gciwgdGhpcy5lbmRpYW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSB0aGlzLl9kZWx0YTMyKVxuICAgICAgdGhpcy5fdXBkYXRlKG1zZywgaSwgaSArIHRoaXMuX2RlbHRhMzIpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5CbG9ja0hhc2gucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgdGhpcy51cGRhdGUodGhpcy5fcGFkKCkpO1xuICBhc3NlcnQodGhpcy5wZW5kaW5nID09PSBudWxsKTtcblxuICByZXR1cm4gdGhpcy5fZGlnZXN0KGVuYyk7XG59O1xuXG5CbG9ja0hhc2gucHJvdG90eXBlLl9wYWQgPSBmdW5jdGlvbiBwYWQoKSB7XG4gIHZhciBsZW4gPSB0aGlzLnBlbmRpbmdUb3RhbDtcbiAgdmFyIGJ5dGVzID0gdGhpcy5fZGVsdGE4O1xuICB2YXIgayA9IGJ5dGVzIC0gKChsZW4gKyB0aGlzLnBhZExlbmd0aCkgJSBieXRlcyk7XG4gIHZhciByZXMgPSBuZXcgQXJyYXkoayArIHRoaXMucGFkTGVuZ3RoKTtcbiAgcmVzWzBdID0gMHg4MDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBrOyBpKyspXG4gICAgcmVzW2ldID0gMDtcblxuICAvLyBBcHBlbmQgbGVuZ3RoXG4gIGxlbiA8PD0gMztcbiAgaWYgKHRoaXMuZW5kaWFuID09PSAnYmlnJykge1xuICAgIGZvciAodmFyIHQgPSA4OyB0IDwgdGhpcy5wYWRMZW5ndGg7IHQrKylcbiAgICAgIHJlc1tpKytdID0gMDtcblxuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDI0KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAxNikgJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gOCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gbGVuICYgMHhmZjtcbiAgfSBlbHNlIHtcbiAgICByZXNbaSsrXSA9IGxlbiAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiA4KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAxNikgJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMjQpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG5cbiAgICBmb3IgKHQgPSA4OyB0IDwgdGhpcy5wYWRMZW5ndGg7IHQrKylcbiAgICAgIHJlc1tpKytdID0gMDtcbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG5mdW5jdGlvbiBIbWFjKGhhc2gsIGtleSwgZW5jKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBIbWFjKSlcbiAgICByZXR1cm4gbmV3IEhtYWMoaGFzaCwga2V5LCBlbmMpO1xuICB0aGlzLkhhc2ggPSBoYXNoO1xuICB0aGlzLmJsb2NrU2l6ZSA9IGhhc2guYmxvY2tTaXplIC8gODtcbiAgdGhpcy5vdXRTaXplID0gaGFzaC5vdXRTaXplIC8gODtcbiAgdGhpcy5pbm5lciA9IG51bGw7XG4gIHRoaXMub3V0ZXIgPSBudWxsO1xuXG4gIHRoaXMuX2luaXQodXRpbHMudG9BcnJheShrZXksIGVuYykpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBIbWFjO1xuXG5IbWFjLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQoa2V5KSB7XG4gIC8vIFNob3J0ZW4ga2V5LCBpZiBuZWVkZWRcbiAgaWYgKGtleS5sZW5ndGggPiB0aGlzLmJsb2NrU2l6ZSlcbiAgICBrZXkgPSBuZXcgdGhpcy5IYXNoKCkudXBkYXRlKGtleSkuZGlnZXN0KCk7XG4gIGFzc2VydChrZXkubGVuZ3RoIDw9IHRoaXMuYmxvY2tTaXplKTtcblxuICAvLyBBZGQgcGFkZGluZyB0byBrZXlcbiAgZm9yICh2YXIgaSA9IGtleS5sZW5ndGg7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgIGtleS5wdXNoKDApO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBrZXkubGVuZ3RoOyBpKyspXG4gICAga2V5W2ldIF49IDB4MzY7XG4gIHRoaXMuaW5uZXIgPSBuZXcgdGhpcy5IYXNoKCkudXBkYXRlKGtleSk7XG5cbiAgLy8gMHgzNiBeIDB4NWMgPSAweDZhXG4gIGZvciAoaSA9IDA7IGkgPCBrZXkubGVuZ3RoOyBpKyspXG4gICAga2V5W2ldIF49IDB4NmE7XG4gIHRoaXMub3V0ZXIgPSBuZXcgdGhpcy5IYXNoKCkudXBkYXRlKGtleSk7XG59O1xuXG5IbWFjLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUobXNnLCBlbmMpIHtcbiAgdGhpcy5pbm5lci51cGRhdGUobXNnLCBlbmMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkhtYWMucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgdGhpcy5vdXRlci51cGRhdGUodGhpcy5pbm5lci5kaWdlc3QoKSk7XG4gIHJldHVybiB0aGlzLm91dGVyLmRpZ2VzdChlbmMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xudmFyIGNvbW1vbiA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG5cbnZhciByb3RsMzIgPSB1dGlscy5yb3RsMzI7XG52YXIgc3VtMzIgPSB1dGlscy5zdW0zMjtcbnZhciBzdW0zMl8zID0gdXRpbHMuc3VtMzJfMztcbnZhciBzdW0zMl80ID0gdXRpbHMuc3VtMzJfNDtcbnZhciBCbG9ja0hhc2ggPSBjb21tb24uQmxvY2tIYXNoO1xuXG5mdW5jdGlvbiBSSVBFTUQxNjAoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSSVBFTUQxNjApKVxuICAgIHJldHVybiBuZXcgUklQRU1EMTYwKCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG5cbiAgdGhpcy5oID0gWyAweDY3NDUyMzAxLCAweGVmY2RhYjg5LCAweDk4YmFkY2ZlLCAweDEwMzI1NDc2LCAweGMzZDJlMWYwIF07XG4gIHRoaXMuZW5kaWFuID0gJ2xpdHRsZSc7XG59XG51dGlscy5pbmhlcml0cyhSSVBFTUQxNjAsIEJsb2NrSGFzaCk7XG5leHBvcnRzLnJpcGVtZDE2MCA9IFJJUEVNRDE2MDtcblxuUklQRU1EMTYwLmJsb2NrU2l6ZSA9IDUxMjtcblJJUEVNRDE2MC5vdXRTaXplID0gMTYwO1xuUklQRU1EMTYwLmhtYWNTdHJlbmd0aCA9IDE5MjtcblJJUEVNRDE2MC5wYWRMZW5ndGggPSA2NDtcblxuUklQRU1EMTYwLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKG1zZywgc3RhcnQpIHtcbiAgdmFyIEEgPSB0aGlzLmhbMF07XG4gIHZhciBCID0gdGhpcy5oWzFdO1xuICB2YXIgQyA9IHRoaXMuaFsyXTtcbiAgdmFyIEQgPSB0aGlzLmhbM107XG4gIHZhciBFID0gdGhpcy5oWzRdO1xuICB2YXIgQWggPSBBO1xuICB2YXIgQmggPSBCO1xuICB2YXIgQ2ggPSBDO1xuICB2YXIgRGggPSBEO1xuICB2YXIgRWggPSBFO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyBqKyspIHtcbiAgICB2YXIgVCA9IHN1bTMyKFxuICAgICAgcm90bDMyKFxuICAgICAgICBzdW0zMl80KEEsIGYoaiwgQiwgQywgRCksIG1zZ1tyW2pdICsgc3RhcnRdLCBLKGopKSxcbiAgICAgICAgc1tqXSksXG4gICAgICBFKTtcbiAgICBBID0gRTtcbiAgICBFID0gRDtcbiAgICBEID0gcm90bDMyKEMsIDEwKTtcbiAgICBDID0gQjtcbiAgICBCID0gVDtcbiAgICBUID0gc3VtMzIoXG4gICAgICByb3RsMzIoXG4gICAgICAgIHN1bTMyXzQoQWgsIGYoNzkgLSBqLCBCaCwgQ2gsIERoKSwgbXNnW3JoW2pdICsgc3RhcnRdLCBLaChqKSksXG4gICAgICAgIHNoW2pdKSxcbiAgICAgIEVoKTtcbiAgICBBaCA9IEVoO1xuICAgIEVoID0gRGg7XG4gICAgRGggPSByb3RsMzIoQ2gsIDEwKTtcbiAgICBDaCA9IEJoO1xuICAgIEJoID0gVDtcbiAgfVxuICBUID0gc3VtMzJfMyh0aGlzLmhbMV0sIEMsIERoKTtcbiAgdGhpcy5oWzFdID0gc3VtMzJfMyh0aGlzLmhbMl0sIEQsIEVoKTtcbiAgdGhpcy5oWzJdID0gc3VtMzJfMyh0aGlzLmhbM10sIEUsIEFoKTtcbiAgdGhpcy5oWzNdID0gc3VtMzJfMyh0aGlzLmhbNF0sIEEsIEJoKTtcbiAgdGhpcy5oWzRdID0gc3VtMzJfMyh0aGlzLmhbMF0sIEIsIENoKTtcbiAgdGhpcy5oWzBdID0gVDtcbn07XG5cblJJUEVNRDE2MC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnbGl0dGxlJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdsaXR0bGUnKTtcbn07XG5cbmZ1bmN0aW9uIGYoaiwgeCwgeSwgeikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4geCBeIHkgXiB6O1xuICBlbHNlIGlmIChqIDw9IDMxKVxuICAgIHJldHVybiAoeCAmIHkpIHwgKCh+eCkgJiB6KTtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gKHggfCAofnkpKSBeIHo7XG4gIGVsc2UgaWYgKGogPD0gNjMpXG4gICAgcmV0dXJuICh4ICYgeikgfCAoeSAmICh+eikpO1xuICBlbHNlXG4gICAgcmV0dXJuIHggXiAoeSB8ICh+eikpO1xufVxuXG5mdW5jdGlvbiBLKGopIHtcbiAgaWYgKGogPD0gMTUpXG4gICAgcmV0dXJuIDB4MDAwMDAwMDA7XG4gIGVsc2UgaWYgKGogPD0gMzEpXG4gICAgcmV0dXJuIDB4NWE4Mjc5OTk7XG4gIGVsc2UgaWYgKGogPD0gNDcpXG4gICAgcmV0dXJuIDB4NmVkOWViYTE7XG4gIGVsc2UgaWYgKGogPD0gNjMpXG4gICAgcmV0dXJuIDB4OGYxYmJjZGM7XG4gIGVsc2VcbiAgICByZXR1cm4gMHhhOTUzZmQ0ZTtcbn1cblxuZnVuY3Rpb24gS2goaikge1xuICBpZiAoaiA8PSAxNSlcbiAgICByZXR1cm4gMHg1MGEyOGJlNjtcbiAgZWxzZSBpZiAoaiA8PSAzMSlcbiAgICByZXR1cm4gMHg1YzRkZDEyNDtcbiAgZWxzZSBpZiAoaiA8PSA0NylcbiAgICByZXR1cm4gMHg2ZDcwM2VmMztcbiAgZWxzZSBpZiAoaiA8PSA2MylcbiAgICByZXR1cm4gMHg3YTZkNzZlOTtcbiAgZWxzZVxuICAgIHJldHVybiAweDAwMDAwMDAwO1xufVxuXG52YXIgciA9IFtcbiAgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSxcbiAgNywgNCwgMTMsIDEsIDEwLCA2LCAxNSwgMywgMTIsIDAsIDksIDUsIDIsIDE0LCAxMSwgOCxcbiAgMywgMTAsIDE0LCA0LCA5LCAxNSwgOCwgMSwgMiwgNywgMCwgNiwgMTMsIDExLCA1LCAxMixcbiAgMSwgOSwgMTEsIDEwLCAwLCA4LCAxMiwgNCwgMTMsIDMsIDcsIDE1LCAxNCwgNSwgNiwgMixcbiAgNCwgMCwgNSwgOSwgNywgMTIsIDIsIDEwLCAxNCwgMSwgMywgOCwgMTEsIDYsIDE1LCAxM1xuXTtcblxudmFyIHJoID0gW1xuICA1LCAxNCwgNywgMCwgOSwgMiwgMTEsIDQsIDEzLCA2LCAxNSwgOCwgMSwgMTAsIDMsIDEyLFxuICA2LCAxMSwgMywgNywgMCwgMTMsIDUsIDEwLCAxNCwgMTUsIDgsIDEyLCA0LCA5LCAxLCAyLFxuICAxNSwgNSwgMSwgMywgNywgMTQsIDYsIDksIDExLCA4LCAxMiwgMiwgMTAsIDAsIDQsIDEzLFxuICA4LCA2LCA0LCAxLCAzLCAxMSwgMTUsIDAsIDUsIDEyLCAyLCAxMywgOSwgNywgMTAsIDE0LFxuICAxMiwgMTUsIDEwLCA0LCAxLCA1LCA4LCA3LCA2LCAyLCAxMywgMTQsIDAsIDMsIDksIDExXG5dO1xuXG52YXIgcyA9IFtcbiAgMTEsIDE0LCAxNSwgMTIsIDUsIDgsIDcsIDksIDExLCAxMywgMTQsIDE1LCA2LCA3LCA5LCA4LFxuICA3LCA2LCA4LCAxMywgMTEsIDksIDcsIDE1LCA3LCAxMiwgMTUsIDksIDExLCA3LCAxMywgMTIsXG4gIDExLCAxMywgNiwgNywgMTQsIDksIDEzLCAxNSwgMTQsIDgsIDEzLCA2LCA1LCAxMiwgNywgNSxcbiAgMTEsIDEyLCAxNCwgMTUsIDE0LCAxNSwgOSwgOCwgOSwgMTQsIDUsIDYsIDgsIDYsIDUsIDEyLFxuICA5LCAxNSwgNSwgMTEsIDYsIDgsIDEzLCAxMiwgNSwgMTIsIDEzLCAxNCwgMTEsIDgsIDUsIDZcbl07XG5cbnZhciBzaCA9IFtcbiAgOCwgOSwgOSwgMTEsIDEzLCAxNSwgMTUsIDUsIDcsIDcsIDgsIDExLCAxNCwgMTQsIDEyLCA2LFxuICA5LCAxMywgMTUsIDcsIDEyLCA4LCA5LCAxMSwgNywgNywgMTIsIDcsIDYsIDE1LCAxMywgMTEsXG4gIDksIDcsIDE1LCAxMSwgOCwgNiwgNiwgMTQsIDEyLCAxMywgNSwgMTQsIDEzLCAxMywgNywgNSxcbiAgMTUsIDUsIDgsIDExLCAxNCwgMTQsIDYsIDE0LCA2LCA5LCAxMiwgOSwgMTIsIDUsIDE1LCA4LFxuICA4LCA1LCAxMiwgOSwgMTIsIDUsIDE0LCA2LCA4LCAxMywgNiwgNSwgMTUsIDEzLCAxMSwgMTFcbl07XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuc2hhMSA9IHJlcXVpcmUoJy4vc2hhLzEnKTtcbmV4cG9ydHMuc2hhMjI0ID0gcmVxdWlyZSgnLi9zaGEvMjI0Jyk7XG5leHBvcnRzLnNoYTI1NiA9IHJlcXVpcmUoJy4vc2hhLzI1NicpO1xuZXhwb3J0cy5zaGEzODQgPSByZXF1aXJlKCcuL3NoYS8zODQnKTtcbmV4cG9ydHMuc2hhNTEyID0gcmVxdWlyZSgnLi9zaGEvNTEyJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgY29tbW9uID0gcmVxdWlyZSgnLi4vY29tbW9uJyk7XG52YXIgc2hhQ29tbW9uID0gcmVxdWlyZSgnLi9jb21tb24nKTtcblxudmFyIHJvdGwzMiA9IHV0aWxzLnJvdGwzMjtcbnZhciBzdW0zMiA9IHV0aWxzLnN1bTMyO1xudmFyIHN1bTMyXzUgPSB1dGlscy5zdW0zMl81O1xudmFyIGZ0XzEgPSBzaGFDb21tb24uZnRfMTtcbnZhciBCbG9ja0hhc2ggPSBjb21tb24uQmxvY2tIYXNoO1xuXG52YXIgc2hhMV9LID0gW1xuICAweDVBODI3OTk5LCAweDZFRDlFQkExLFxuICAweDhGMUJCQ0RDLCAweENBNjJDMUQ2XG5dO1xuXG5mdW5jdGlvbiBTSEExKCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMSkpXG4gICAgcmV0dXJuIG5ldyBTSEExKCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFtcbiAgICAweDY3NDUyMzAxLCAweGVmY2RhYjg5LCAweDk4YmFkY2ZlLFxuICAgIDB4MTAzMjU0NzYsIDB4YzNkMmUxZjAgXTtcbiAgdGhpcy5XID0gbmV3IEFycmF5KDgwKTtcbn1cblxudXRpbHMuaW5oZXJpdHMoU0hBMSwgQmxvY2tIYXNoKTtcbm1vZHVsZS5leHBvcnRzID0gU0hBMTtcblxuU0hBMS5ibG9ja1NpemUgPSA1MTI7XG5TSEExLm91dFNpemUgPSAxNjA7XG5TSEExLmhtYWNTdHJlbmd0aCA9IDgwO1xuU0hBMS5wYWRMZW5ndGggPSA2NDtcblxuU0hBMS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgVyA9IHRoaXMuVztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspXG4gICAgV1tpXSA9IG1zZ1tzdGFydCArIGldO1xuXG4gIGZvcig7IGkgPCBXLmxlbmd0aDsgaSsrKVxuICAgIFdbaV0gPSByb3RsMzIoV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XSwgMSk7XG5cbiAgdmFyIGEgPSB0aGlzLmhbMF07XG4gIHZhciBiID0gdGhpcy5oWzFdO1xuICB2YXIgYyA9IHRoaXMuaFsyXTtcbiAgdmFyIGQgPSB0aGlzLmhbM107XG4gIHZhciBlID0gdGhpcy5oWzRdO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBXLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHMgPSB+fihpIC8gMjApO1xuICAgIHZhciB0ID0gc3VtMzJfNShyb3RsMzIoYSwgNSksIGZ0XzEocywgYiwgYywgZCksIGUsIFdbaV0sIHNoYTFfS1tzXSk7XG4gICAgZSA9IGQ7XG4gICAgZCA9IGM7XG4gICAgYyA9IHJvdGwzMihiLCAzMCk7XG4gICAgYiA9IGE7XG4gICAgYSA9IHQ7XG4gIH1cblxuICB0aGlzLmhbMF0gPSBzdW0zMih0aGlzLmhbMF0sIGEpO1xuICB0aGlzLmhbMV0gPSBzdW0zMih0aGlzLmhbMV0sIGIpO1xuICB0aGlzLmhbMl0gPSBzdW0zMih0aGlzLmhbMl0sIGMpO1xuICB0aGlzLmhbM10gPSBzdW0zMih0aGlzLmhbM10sIGQpO1xuICB0aGlzLmhbNF0gPSBzdW0zMih0aGlzLmhbNF0sIGUpO1xufTtcblxuU0hBMS5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdiaWcnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgU0hBMjU2ID0gcmVxdWlyZSgnLi8yNTYnKTtcblxuZnVuY3Rpb24gU0hBMjI0KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMjI0KSlcbiAgICByZXR1cm4gbmV3IFNIQTIyNCgpO1xuXG4gIFNIQTI1Ni5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbXG4gICAgMHhjMTA1OWVkOCwgMHgzNjdjZDUwNywgMHgzMDcwZGQxNywgMHhmNzBlNTkzOSxcbiAgICAweGZmYzAwYjMxLCAweDY4NTgxNTExLCAweDY0Zjk4ZmE3LCAweGJlZmE0ZmE0IF07XG59XG51dGlscy5pbmhlcml0cyhTSEEyMjQsIFNIQTI1Nik7XG5tb2R1bGUuZXhwb3J0cyA9IFNIQTIyNDtcblxuU0hBMjI0LmJsb2NrU2l6ZSA9IDUxMjtcblNIQTIyNC5vdXRTaXplID0gMjI0O1xuU0hBMjI0LmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTIyNC5wYWRMZW5ndGggPSA2NDtcblxuU0hBMjI0LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICAvLyBKdXN0IHRydW5jYXRlIG91dHB1dFxuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmguc2xpY2UoMCwgNyksICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaC5zbGljZSgwLCA3KSwgJ2JpZycpO1xufTtcblxuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGNvbW1vbiA9IHJlcXVpcmUoJy4uL2NvbW1vbicpO1xudmFyIHNoYUNvbW1vbiA9IHJlcXVpcmUoJy4vY29tbW9uJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xuXG52YXIgc3VtMzIgPSB1dGlscy5zdW0zMjtcbnZhciBzdW0zMl80ID0gdXRpbHMuc3VtMzJfNDtcbnZhciBzdW0zMl81ID0gdXRpbHMuc3VtMzJfNTtcbnZhciBjaDMyID0gc2hhQ29tbW9uLmNoMzI7XG52YXIgbWFqMzIgPSBzaGFDb21tb24ubWFqMzI7XG52YXIgczBfMjU2ID0gc2hhQ29tbW9uLnMwXzI1NjtcbnZhciBzMV8yNTYgPSBzaGFDb21tb24uczFfMjU2O1xudmFyIGcwXzI1NiA9IHNoYUNvbW1vbi5nMF8yNTY7XG52YXIgZzFfMjU2ID0gc2hhQ29tbW9uLmcxXzI1NjtcblxudmFyIEJsb2NrSGFzaCA9IGNvbW1vbi5CbG9ja0hhc2g7XG5cbnZhciBzaGEyNTZfSyA9IFtcbiAgMHg0MjhhMmY5OCwgMHg3MTM3NDQ5MSwgMHhiNWMwZmJjZiwgMHhlOWI1ZGJhNSxcbiAgMHgzOTU2YzI1YiwgMHg1OWYxMTFmMSwgMHg5MjNmODJhNCwgMHhhYjFjNWVkNSxcbiAgMHhkODA3YWE5OCwgMHgxMjgzNWIwMSwgMHgyNDMxODViZSwgMHg1NTBjN2RjMyxcbiAgMHg3MmJlNWQ3NCwgMHg4MGRlYjFmZSwgMHg5YmRjMDZhNywgMHhjMTliZjE3NCxcbiAgMHhlNDliNjljMSwgMHhlZmJlNDc4NiwgMHgwZmMxOWRjNiwgMHgyNDBjYTFjYyxcbiAgMHgyZGU5MmM2ZiwgMHg0YTc0ODRhYSwgMHg1Y2IwYTlkYywgMHg3NmY5ODhkYSxcbiAgMHg5ODNlNTE1MiwgMHhhODMxYzY2ZCwgMHhiMDAzMjdjOCwgMHhiZjU5N2ZjNyxcbiAgMHhjNmUwMGJmMywgMHhkNWE3OTE0NywgMHgwNmNhNjM1MSwgMHgxNDI5Mjk2NyxcbiAgMHgyN2I3MGE4NSwgMHgyZTFiMjEzOCwgMHg0ZDJjNmRmYywgMHg1MzM4MGQxMyxcbiAgMHg2NTBhNzM1NCwgMHg3NjZhMGFiYiwgMHg4MWMyYzkyZSwgMHg5MjcyMmM4NSxcbiAgMHhhMmJmZThhMSwgMHhhODFhNjY0YiwgMHhjMjRiOGI3MCwgMHhjNzZjNTFhMyxcbiAgMHhkMTkyZTgxOSwgMHhkNjk5MDYyNCwgMHhmNDBlMzU4NSwgMHgxMDZhYTA3MCxcbiAgMHgxOWE0YzExNiwgMHgxZTM3NmMwOCwgMHgyNzQ4Nzc0YywgMHgzNGIwYmNiNSxcbiAgMHgzOTFjMGNiMywgMHg0ZWQ4YWE0YSwgMHg1YjljY2E0ZiwgMHg2ODJlNmZmMyxcbiAgMHg3NDhmODJlZSwgMHg3OGE1NjM2ZiwgMHg4NGM4NzgxNCwgMHg4Y2M3MDIwOCxcbiAgMHg5MGJlZmZmYSwgMHhhNDUwNmNlYiwgMHhiZWY5YTNmNywgMHhjNjcxNzhmMlxuXTtcblxuZnVuY3Rpb24gU0hBMjU2KCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU0hBMjU2KSlcbiAgICByZXR1cm4gbmV3IFNIQTI1NigpO1xuXG4gIEJsb2NrSGFzaC5jYWxsKHRoaXMpO1xuICB0aGlzLmggPSBbXG4gICAgMHg2YTA5ZTY2NywgMHhiYjY3YWU4NSwgMHgzYzZlZjM3MiwgMHhhNTRmZjUzYSxcbiAgICAweDUxMGU1MjdmLCAweDliMDU2ODhjLCAweDFmODNkOWFiLCAweDViZTBjZDE5XG4gIF07XG4gIHRoaXMuayA9IHNoYTI1Nl9LO1xuICB0aGlzLlcgPSBuZXcgQXJyYXkoNjQpO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBMjU2LCBCbG9ja0hhc2gpO1xubW9kdWxlLmV4cG9ydHMgPSBTSEEyNTY7XG5cblNIQTI1Ni5ibG9ja1NpemUgPSA1MTI7XG5TSEEyNTYub3V0U2l6ZSA9IDI1NjtcblNIQTI1Ni5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEEyNTYucGFkTGVuZ3RoID0gNjQ7XG5cblNIQTI1Ni5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgVyA9IHRoaXMuVztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspXG4gICAgV1tpXSA9IG1zZ1tzdGFydCArIGldO1xuICBmb3IgKDsgaSA8IFcubGVuZ3RoOyBpKyspXG4gICAgV1tpXSA9IHN1bTMyXzQoZzFfMjU2KFdbaSAtIDJdKSwgV1tpIC0gN10sIGcwXzI1NihXW2kgLSAxNV0pLCBXW2kgLSAxNl0pO1xuXG4gIHZhciBhID0gdGhpcy5oWzBdO1xuICB2YXIgYiA9IHRoaXMuaFsxXTtcbiAgdmFyIGMgPSB0aGlzLmhbMl07XG4gIHZhciBkID0gdGhpcy5oWzNdO1xuICB2YXIgZSA9IHRoaXMuaFs0XTtcbiAgdmFyIGYgPSB0aGlzLmhbNV07XG4gIHZhciBnID0gdGhpcy5oWzZdO1xuICB2YXIgaCA9IHRoaXMuaFs3XTtcblxuICBhc3NlcnQodGhpcy5rLmxlbmd0aCA9PT0gVy5sZW5ndGgpO1xuICBmb3IgKGkgPSAwOyBpIDwgVy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBUMSA9IHN1bTMyXzUoaCwgczFfMjU2KGUpLCBjaDMyKGUsIGYsIGcpLCB0aGlzLmtbaV0sIFdbaV0pO1xuICAgIHZhciBUMiA9IHN1bTMyKHMwXzI1NihhKSwgbWFqMzIoYSwgYiwgYykpO1xuICAgIGggPSBnO1xuICAgIGcgPSBmO1xuICAgIGYgPSBlO1xuICAgIGUgPSBzdW0zMihkLCBUMSk7XG4gICAgZCA9IGM7XG4gICAgYyA9IGI7XG4gICAgYiA9IGE7XG4gICAgYSA9IHN1bTMyKFQxLCBUMik7XG4gIH1cblxuICB0aGlzLmhbMF0gPSBzdW0zMih0aGlzLmhbMF0sIGEpO1xuICB0aGlzLmhbMV0gPSBzdW0zMih0aGlzLmhbMV0sIGIpO1xuICB0aGlzLmhbMl0gPSBzdW0zMih0aGlzLmhbMl0sIGMpO1xuICB0aGlzLmhbM10gPSBzdW0zMih0aGlzLmhbM10sIGQpO1xuICB0aGlzLmhbNF0gPSBzdW0zMih0aGlzLmhbNF0sIGUpO1xuICB0aGlzLmhbNV0gPSBzdW0zMih0aGlzLmhbNV0sIGYpO1xuICB0aGlzLmhbNl0gPSBzdW0zMih0aGlzLmhbNl0sIGcpO1xuICB0aGlzLmhbN10gPSBzdW0zMih0aGlzLmhbN10sIGgpO1xufTtcblxuU0hBMjU2LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2JpZycpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMnKTtcblxudmFyIFNIQTUxMiA9IHJlcXVpcmUoJy4vNTEyJyk7XG5cbmZ1bmN0aW9uIFNIQTM4NCgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTM4NCkpXG4gICAgcmV0dXJuIG5ldyBTSEEzODQoKTtcblxuICBTSEE1MTIuY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gW1xuICAgIDB4Y2JiYjlkNWQsIDB4YzEwNTllZDgsXG4gICAgMHg2MjlhMjkyYSwgMHgzNjdjZDUwNyxcbiAgICAweDkxNTkwMTVhLCAweDMwNzBkZDE3LFxuICAgIDB4MTUyZmVjZDgsIDB4ZjcwZTU5MzksXG4gICAgMHg2NzMzMjY2NywgMHhmZmMwMGIzMSxcbiAgICAweDhlYjQ0YTg3LCAweDY4NTgxNTExLFxuICAgIDB4ZGIwYzJlMGQsIDB4NjRmOThmYTcsXG4gICAgMHg0N2I1NDgxZCwgMHhiZWZhNGZhNCBdO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBMzg0LCBTSEE1MTIpO1xubW9kdWxlLmV4cG9ydHMgPSBTSEEzODQ7XG5cblNIQTM4NC5ibG9ja1NpemUgPSAxMDI0O1xuU0hBMzg0Lm91dFNpemUgPSAzODQ7XG5TSEEzODQuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBMzg0LnBhZExlbmd0aCA9IDEyODtcblxuU0hBMzg0LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmguc2xpY2UoMCwgMTIpLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmguc2xpY2UoMCwgMTIpLCAnYmlnJyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscycpO1xudmFyIGNvbW1vbiA9IHJlcXVpcmUoJy4uL2NvbW1vbicpO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxudmFyIHJvdHI2NF9oaSA9IHV0aWxzLnJvdHI2NF9oaTtcbnZhciByb3RyNjRfbG8gPSB1dGlscy5yb3RyNjRfbG87XG52YXIgc2hyNjRfaGkgPSB1dGlscy5zaHI2NF9oaTtcbnZhciBzaHI2NF9sbyA9IHV0aWxzLnNocjY0X2xvO1xudmFyIHN1bTY0ID0gdXRpbHMuc3VtNjQ7XG52YXIgc3VtNjRfaGkgPSB1dGlscy5zdW02NF9oaTtcbnZhciBzdW02NF9sbyA9IHV0aWxzLnN1bTY0X2xvO1xudmFyIHN1bTY0XzRfaGkgPSB1dGlscy5zdW02NF80X2hpO1xudmFyIHN1bTY0XzRfbG8gPSB1dGlscy5zdW02NF80X2xvO1xudmFyIHN1bTY0XzVfaGkgPSB1dGlscy5zdW02NF81X2hpO1xudmFyIHN1bTY0XzVfbG8gPSB1dGlscy5zdW02NF81X2xvO1xuXG52YXIgQmxvY2tIYXNoID0gY29tbW9uLkJsb2NrSGFzaDtcblxudmFyIHNoYTUxMl9LID0gW1xuICAweDQyOGEyZjk4LCAweGQ3MjhhZTIyLCAweDcxMzc0NDkxLCAweDIzZWY2NWNkLFxuICAweGI1YzBmYmNmLCAweGVjNGQzYjJmLCAweGU5YjVkYmE1LCAweDgxODlkYmJjLFxuICAweDM5NTZjMjViLCAweGYzNDhiNTM4LCAweDU5ZjExMWYxLCAweGI2MDVkMDE5LFxuICAweDkyM2Y4MmE0LCAweGFmMTk0ZjliLCAweGFiMWM1ZWQ1LCAweGRhNmQ4MTE4LFxuICAweGQ4MDdhYTk4LCAweGEzMDMwMjQyLCAweDEyODM1YjAxLCAweDQ1NzA2ZmJlLFxuICAweDI0MzE4NWJlLCAweDRlZTRiMjhjLCAweDU1MGM3ZGMzLCAweGQ1ZmZiNGUyLFxuICAweDcyYmU1ZDc0LCAweGYyN2I4OTZmLCAweDgwZGViMWZlLCAweDNiMTY5NmIxLFxuICAweDliZGMwNmE3LCAweDI1YzcxMjM1LCAweGMxOWJmMTc0LCAweGNmNjkyNjk0LFxuICAweGU0OWI2OWMxLCAweDllZjE0YWQyLCAweGVmYmU0Nzg2LCAweDM4NGYyNWUzLFxuICAweDBmYzE5ZGM2LCAweDhiOGNkNWI1LCAweDI0MGNhMWNjLCAweDc3YWM5YzY1LFxuICAweDJkZTkyYzZmLCAweDU5MmIwMjc1LCAweDRhNzQ4NGFhLCAweDZlYTZlNDgzLFxuICAweDVjYjBhOWRjLCAweGJkNDFmYmQ0LCAweDc2Zjk4OGRhLCAweDgzMTE1M2I1LFxuICAweDk4M2U1MTUyLCAweGVlNjZkZmFiLCAweGE4MzFjNjZkLCAweDJkYjQzMjEwLFxuICAweGIwMDMyN2M4LCAweDk4ZmIyMTNmLCAweGJmNTk3ZmM3LCAweGJlZWYwZWU0LFxuICAweGM2ZTAwYmYzLCAweDNkYTg4ZmMyLCAweGQ1YTc5MTQ3LCAweDkzMGFhNzI1LFxuICAweDA2Y2E2MzUxLCAweGUwMDM4MjZmLCAweDE0MjkyOTY3LCAweDBhMGU2ZTcwLFxuICAweDI3YjcwYTg1LCAweDQ2ZDIyZmZjLCAweDJlMWIyMTM4LCAweDVjMjZjOTI2LFxuICAweDRkMmM2ZGZjLCAweDVhYzQyYWVkLCAweDUzMzgwZDEzLCAweDlkOTViM2RmLFxuICAweDY1MGE3MzU0LCAweDhiYWY2M2RlLCAweDc2NmEwYWJiLCAweDNjNzdiMmE4LFxuICAweDgxYzJjOTJlLCAweDQ3ZWRhZWU2LCAweDkyNzIyYzg1LCAweDE0ODIzNTNiLFxuICAweGEyYmZlOGExLCAweDRjZjEwMzY0LCAweGE4MWE2NjRiLCAweGJjNDIzMDAxLFxuICAweGMyNGI4YjcwLCAweGQwZjg5NzkxLCAweGM3NmM1MWEzLCAweDA2NTRiZTMwLFxuICAweGQxOTJlODE5LCAweGQ2ZWY1MjE4LCAweGQ2OTkwNjI0LCAweDU1NjVhOTEwLFxuICAweGY0MGUzNTg1LCAweDU3NzEyMDJhLCAweDEwNmFhMDcwLCAweDMyYmJkMWI4LFxuICAweDE5YTRjMTE2LCAweGI4ZDJkMGM4LCAweDFlMzc2YzA4LCAweDUxNDFhYjUzLFxuICAweDI3NDg3NzRjLCAweGRmOGVlYjk5LCAweDM0YjBiY2I1LCAweGUxOWI0OGE4LFxuICAweDM5MWMwY2IzLCAweGM1Yzk1YTYzLCAweDRlZDhhYTRhLCAweGUzNDE4YWNiLFxuICAweDViOWNjYTRmLCAweDc3NjNlMzczLCAweDY4MmU2ZmYzLCAweGQ2YjJiOGEzLFxuICAweDc0OGY4MmVlLCAweDVkZWZiMmZjLCAweDc4YTU2MzZmLCAweDQzMTcyZjYwLFxuICAweDg0Yzg3ODE0LCAweGExZjBhYjcyLCAweDhjYzcwMjA4LCAweDFhNjQzOWVjLFxuICAweDkwYmVmZmZhLCAweDIzNjMxZTI4LCAweGE0NTA2Y2ViLCAweGRlODJiZGU5LFxuICAweGJlZjlhM2Y3LCAweGIyYzY3OTE1LCAweGM2NzE3OGYyLCAweGUzNzI1MzJiLFxuICAweGNhMjczZWNlLCAweGVhMjY2MTljLCAweGQxODZiOGM3LCAweDIxYzBjMjA3LFxuICAweGVhZGE3ZGQ2LCAweGNkZTBlYjFlLCAweGY1N2Q0ZjdmLCAweGVlNmVkMTc4LFxuICAweDA2ZjA2N2FhLCAweDcyMTc2ZmJhLCAweDBhNjM3ZGM1LCAweGEyYzg5OGE2LFxuICAweDExM2Y5ODA0LCAweGJlZjkwZGFlLCAweDFiNzEwYjM1LCAweDEzMWM0NzFiLFxuICAweDI4ZGI3N2Y1LCAweDIzMDQ3ZDg0LCAweDMyY2FhYjdiLCAweDQwYzcyNDkzLFxuICAweDNjOWViZTBhLCAweDE1YzliZWJjLCAweDQzMWQ2N2M0LCAweDljMTAwZDRjLFxuICAweDRjYzVkNGJlLCAweGNiM2U0MmI2LCAweDU5N2YyOTljLCAweGZjNjU3ZTJhLFxuICAweDVmY2I2ZmFiLCAweDNhZDZmYWVjLCAweDZjNDQxOThjLCAweDRhNDc1ODE3XG5dO1xuXG5mdW5jdGlvbiBTSEE1MTIoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEE1MTIpKVxuICAgIHJldHVybiBuZXcgU0hBNTEyKCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFtcbiAgICAweDZhMDllNjY3LCAweGYzYmNjOTA4LFxuICAgIDB4YmI2N2FlODUsIDB4ODRjYWE3M2IsXG4gICAgMHgzYzZlZjM3MiwgMHhmZTk0ZjgyYixcbiAgICAweGE1NGZmNTNhLCAweDVmMWQzNmYxLFxuICAgIDB4NTEwZTUyN2YsIDB4YWRlNjgyZDEsXG4gICAgMHg5YjA1Njg4YywgMHgyYjNlNmMxZixcbiAgICAweDFmODNkOWFiLCAweGZiNDFiZDZiLFxuICAgIDB4NWJlMGNkMTksIDB4MTM3ZTIxNzkgXTtcbiAgdGhpcy5rID0gc2hhNTEyX0s7XG4gIHRoaXMuVyA9IG5ldyBBcnJheSgxNjApO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBNTEyLCBCbG9ja0hhc2gpO1xubW9kdWxlLmV4cG9ydHMgPSBTSEE1MTI7XG5cblNIQTUxMi5ibG9ja1NpemUgPSAxMDI0O1xuU0hBNTEyLm91dFNpemUgPSA1MTI7XG5TSEE1MTIuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBNTEyLnBhZExlbmd0aCA9IDEyODtcblxuU0hBNTEyLnByb3RvdHlwZS5fcHJlcGFyZUJsb2NrID0gZnVuY3Rpb24gX3ByZXBhcmVCbG9jayhtc2csIHN0YXJ0KSB7XG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIC8vIDMyIHggMzJiaXQgd29yZHNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSsrKVxuICAgIFdbaV0gPSBtc2dbc3RhcnQgKyBpXTtcbiAgZm9yICg7IGkgPCBXLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIGMwX2hpID0gZzFfNTEyX2hpKFdbaSAtIDRdLCBXW2kgLSAzXSk7ICAvLyBpIC0gMlxuICAgIHZhciBjMF9sbyA9IGcxXzUxMl9sbyhXW2kgLSA0XSwgV1tpIC0gM10pO1xuICAgIHZhciBjMV9oaSA9IFdbaSAtIDE0XTsgIC8vIGkgLSA3XG4gICAgdmFyIGMxX2xvID0gV1tpIC0gMTNdO1xuICAgIHZhciBjMl9oaSA9IGcwXzUxMl9oaShXW2kgLSAzMF0sIFdbaSAtIDI5XSk7ICAvLyBpIC0gMTVcbiAgICB2YXIgYzJfbG8gPSBnMF81MTJfbG8oV1tpIC0gMzBdLCBXW2kgLSAyOV0pO1xuICAgIHZhciBjM19oaSA9IFdbaSAtIDMyXTsgIC8vIGkgLSAxNlxuICAgIHZhciBjM19sbyA9IFdbaSAtIDMxXTtcblxuICAgIFdbaV0gPSBzdW02NF80X2hpKFxuICAgICAgYzBfaGksIGMwX2xvLFxuICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgYzNfaGksIGMzX2xvKTtcbiAgICBXW2kgKyAxXSA9IHN1bTY0XzRfbG8oXG4gICAgICBjMF9oaSwgYzBfbG8sXG4gICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICBjM19oaSwgYzNfbG8pO1xuICB9XG59O1xuXG5TSEE1MTIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKG1zZywgc3RhcnQpIHtcbiAgdGhpcy5fcHJlcGFyZUJsb2NrKG1zZywgc3RhcnQpO1xuXG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIHZhciBhaCA9IHRoaXMuaFswXTtcbiAgdmFyIGFsID0gdGhpcy5oWzFdO1xuICB2YXIgYmggPSB0aGlzLmhbMl07XG4gIHZhciBibCA9IHRoaXMuaFszXTtcbiAgdmFyIGNoID0gdGhpcy5oWzRdO1xuICB2YXIgY2wgPSB0aGlzLmhbNV07XG4gIHZhciBkaCA9IHRoaXMuaFs2XTtcbiAgdmFyIGRsID0gdGhpcy5oWzddO1xuICB2YXIgZWggPSB0aGlzLmhbOF07XG4gIHZhciBlbCA9IHRoaXMuaFs5XTtcbiAgdmFyIGZoID0gdGhpcy5oWzEwXTtcbiAgdmFyIGZsID0gdGhpcy5oWzExXTtcbiAgdmFyIGdoID0gdGhpcy5oWzEyXTtcbiAgdmFyIGdsID0gdGhpcy5oWzEzXTtcbiAgdmFyIGhoID0gdGhpcy5oWzE0XTtcbiAgdmFyIGhsID0gdGhpcy5oWzE1XTtcblxuICBhc3NlcnQodGhpcy5rLmxlbmd0aCA9PT0gVy5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IFcubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIgYzBfaGkgPSBoaDtcbiAgICB2YXIgYzBfbG8gPSBobDtcbiAgICB2YXIgYzFfaGkgPSBzMV81MTJfaGkoZWgsIGVsKTtcbiAgICB2YXIgYzFfbG8gPSBzMV81MTJfbG8oZWgsIGVsKTtcbiAgICB2YXIgYzJfaGkgPSBjaDY0X2hpKGVoLCBlbCwgZmgsIGZsLCBnaCwgZ2wpO1xuICAgIHZhciBjMl9sbyA9IGNoNjRfbG8oZWgsIGVsLCBmaCwgZmwsIGdoLCBnbCk7XG4gICAgdmFyIGMzX2hpID0gdGhpcy5rW2ldO1xuICAgIHZhciBjM19sbyA9IHRoaXMua1tpICsgMV07XG4gICAgdmFyIGM0X2hpID0gV1tpXTtcbiAgICB2YXIgYzRfbG8gPSBXW2kgKyAxXTtcblxuICAgIHZhciBUMV9oaSA9IHN1bTY0XzVfaGkoXG4gICAgICBjMF9oaSwgYzBfbG8sXG4gICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICBjM19oaSwgYzNfbG8sXG4gICAgICBjNF9oaSwgYzRfbG8pO1xuICAgIHZhciBUMV9sbyA9IHN1bTY0XzVfbG8oXG4gICAgICBjMF9oaSwgYzBfbG8sXG4gICAgICBjMV9oaSwgYzFfbG8sXG4gICAgICBjMl9oaSwgYzJfbG8sXG4gICAgICBjM19oaSwgYzNfbG8sXG4gICAgICBjNF9oaSwgYzRfbG8pO1xuXG4gICAgYzBfaGkgPSBzMF81MTJfaGkoYWgsIGFsKTtcbiAgICBjMF9sbyA9IHMwXzUxMl9sbyhhaCwgYWwpO1xuICAgIGMxX2hpID0gbWFqNjRfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCk7XG4gICAgYzFfbG8gPSBtYWo2NF9sbyhhaCwgYWwsIGJoLCBibCwgY2gsIGNsKTtcblxuICAgIHZhciBUMl9oaSA9IHN1bTY0X2hpKGMwX2hpLCBjMF9sbywgYzFfaGksIGMxX2xvKTtcbiAgICB2YXIgVDJfbG8gPSBzdW02NF9sbyhjMF9oaSwgYzBfbG8sIGMxX2hpLCBjMV9sbyk7XG5cbiAgICBoaCA9IGdoO1xuICAgIGhsID0gZ2w7XG5cbiAgICBnaCA9IGZoO1xuICAgIGdsID0gZmw7XG5cbiAgICBmaCA9IGVoO1xuICAgIGZsID0gZWw7XG5cbiAgICBlaCA9IHN1bTY0X2hpKGRoLCBkbCwgVDFfaGksIFQxX2xvKTtcbiAgICBlbCA9IHN1bTY0X2xvKGRsLCBkbCwgVDFfaGksIFQxX2xvKTtcblxuICAgIGRoID0gY2g7XG4gICAgZGwgPSBjbDtcblxuICAgIGNoID0gYmg7XG4gICAgY2wgPSBibDtcblxuICAgIGJoID0gYWg7XG4gICAgYmwgPSBhbDtcblxuICAgIGFoID0gc3VtNjRfaGkoVDFfaGksIFQxX2xvLCBUMl9oaSwgVDJfbG8pO1xuICAgIGFsID0gc3VtNjRfbG8oVDFfaGksIFQxX2xvLCBUMl9oaSwgVDJfbG8pO1xuICB9XG5cbiAgc3VtNjQodGhpcy5oLCAwLCBhaCwgYWwpO1xuICBzdW02NCh0aGlzLmgsIDIsIGJoLCBibCk7XG4gIHN1bTY0KHRoaXMuaCwgNCwgY2gsIGNsKTtcbiAgc3VtNjQodGhpcy5oLCA2LCBkaCwgZGwpO1xuICBzdW02NCh0aGlzLmgsIDgsIGVoLCBlbCk7XG4gIHN1bTY0KHRoaXMuaCwgMTAsIGZoLCBmbCk7XG4gIHN1bTY0KHRoaXMuaCwgMTIsIGdoLCBnbCk7XG4gIHN1bTY0KHRoaXMuaCwgMTQsIGhoLCBobCk7XG59O1xuXG5TSEE1MTIucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCAnYmlnJyk7XG59O1xuXG5mdW5jdGlvbiBjaDY0X2hpKHhoLCB4bCwgeWgsIHlsLCB6aCkge1xuICB2YXIgciA9ICh4aCAmIHloKSBeICgofnhoKSAmIHpoKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBjaDY0X2xvKHhoLCB4bCwgeWgsIHlsLCB6aCwgemwpIHtcbiAgdmFyIHIgPSAoeGwgJiB5bCkgXiAoKH54bCkgJiB6bCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gbWFqNjRfaGkoeGgsIHhsLCB5aCwgeWwsIHpoKSB7XG4gIHZhciByID0gKHhoICYgeWgpIF4gKHhoICYgemgpIF4gKHloICYgemgpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIG1hajY0X2xvKHhoLCB4bCwgeWgsIHlsLCB6aCwgemwpIHtcbiAgdmFyIHIgPSAoeGwgJiB5bCkgXiAoeGwgJiB6bCkgXiAoeWwgJiB6bCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczBfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAyOCk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDIpOyAgLy8gMzRcbiAgdmFyIGMyX2hpID0gcm90cjY0X2hpKHhsLCB4aCwgNyk7ICAvLyAzOVxuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIHMwXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMjgpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCAyKTsgIC8vIDM0XG4gIHZhciBjMl9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDcpOyAgLy8gMzlcblxuICB2YXIgciA9IGMwX2xvIF4gYzFfbG8gXiBjMl9sbztcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMV81MTJfaGkoeGgsIHhsKSB7XG4gIHZhciBjMF9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDE0KTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTgpO1xuICB2YXIgYzJfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCA5KTsgIC8vIDQxXG5cbiAgdmFyIHIgPSBjMF9oaSBeIGMxX2hpIF4gYzJfaGk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczFfNTEyX2xvKHhoLCB4bCkge1xuICB2YXIgYzBfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxNCk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDE4KTtcbiAgdmFyIGMyX2xvID0gcm90cjY0X2xvKHhsLCB4aCwgOSk7ICAvLyA0MVxuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcwXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMSk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDgpO1xuICB2YXIgYzJfaGkgPSBzaHI2NF9oaSh4aCwgeGwsIDcpO1xuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcwXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMSk7XG4gIHZhciBjMV9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDgpO1xuICB2YXIgYzJfbG8gPSBzaHI2NF9sbyh4aCwgeGwsIDcpO1xuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcxXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMTkpO1xuICB2YXIgYzFfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCAyOSk7ICAvLyA2MVxuICB2YXIgYzJfaGkgPSBzaHI2NF9oaSh4aCwgeGwsIDYpO1xuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGcxXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMTkpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCAyOSk7ICAvLyA2MVxuICB2YXIgYzJfbG8gPSBzaHI2NF9sbyh4aCwgeGwsIDYpO1xuXG4gIHZhciByID0gYzBfbG8gXiBjMV9sbyBeIGMyX2xvO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzJyk7XG52YXIgcm90cjMyID0gdXRpbHMucm90cjMyO1xuXG5mdW5jdGlvbiBmdF8xKHMsIHgsIHksIHopIHtcbiAgaWYgKHMgPT09IDApXG4gICAgcmV0dXJuIGNoMzIoeCwgeSwgeik7XG4gIGlmIChzID09PSAxIHx8IHMgPT09IDMpXG4gICAgcmV0dXJuIHAzMih4LCB5LCB6KTtcbiAgaWYgKHMgPT09IDIpXG4gICAgcmV0dXJuIG1hajMyKHgsIHksIHopO1xufVxuZXhwb3J0cy5mdF8xID0gZnRfMTtcblxuZnVuY3Rpb24gY2gzMih4LCB5LCB6KSB7XG4gIHJldHVybiAoeCAmIHkpIF4gKCh+eCkgJiB6KTtcbn1cbmV4cG9ydHMuY2gzMiA9IGNoMzI7XG5cbmZ1bmN0aW9uIG1hajMyKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgXiAoeCAmIHopIF4gKHkgJiB6KTtcbn1cbmV4cG9ydHMubWFqMzIgPSBtYWozMjtcblxuZnVuY3Rpb24gcDMyKHgsIHksIHopIHtcbiAgcmV0dXJuIHggXiB5IF4gejtcbn1cbmV4cG9ydHMucDMyID0gcDMyO1xuXG5mdW5jdGlvbiBzMF8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDIpIF4gcm90cjMyKHgsIDEzKSBeIHJvdHIzMih4LCAyMik7XG59XG5leHBvcnRzLnMwXzI1NiA9IHMwXzI1NjtcblxuZnVuY3Rpb24gczFfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCA2KSBeIHJvdHIzMih4LCAxMSkgXiByb3RyMzIoeCwgMjUpO1xufVxuZXhwb3J0cy5zMV8yNTYgPSBzMV8yNTY7XG5cbmZ1bmN0aW9uIGcwXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgNykgXiByb3RyMzIoeCwgMTgpIF4gKHggPj4+IDMpO1xufVxuZXhwb3J0cy5nMF8yNTYgPSBnMF8yNTY7XG5cbmZ1bmN0aW9uIGcxXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgMTcpIF4gcm90cjMyKHgsIDE5KSBeICh4ID4+PiAxMCk7XG59XG5leHBvcnRzLmcxXzI1NiA9IGcxXzI1NjtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmV4cG9ydHMuaW5oZXJpdHMgPSBpbmhlcml0cztcblxuZnVuY3Rpb24gaXNTdXJyb2dhdGVQYWlyKG1zZywgaSkge1xuICBpZiAoKG1zZy5jaGFyQ29kZUF0KGkpICYgMHhGQzAwKSAhPT0gMHhEODAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChpIDwgMCB8fCBpICsgMSA+PSBtc2cubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiAobXNnLmNoYXJDb2RlQXQoaSArIDEpICYgMHhGQzAwKSA9PT0gMHhEQzAwO1xufVxuXG5mdW5jdGlvbiB0b0FycmF5KG1zZywgZW5jKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KG1zZykpXG4gICAgcmV0dXJuIG1zZy5zbGljZSgpO1xuICBpZiAoIW1zZylcbiAgICByZXR1cm4gW107XG4gIHZhciByZXMgPSBbXTtcbiAgaWYgKHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKCFlbmMpIHtcbiAgICAgIC8vIEluc3BpcmVkIGJ5IHN0cmluZ1RvVXRmOEJ5dGVBcnJheSgpIGluIGNsb3N1cmUtbGlicmFyeSBieSBHb29nbGVcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1saWJyYXJ5L2Jsb2IvODU5OGQ4NzI0MmFmNTlhYWMyMzMyNzA3NDJjODk4NGUyYjJiZGJlMC9jbG9zdXJlL2dvb2cvY3J5cHQvY3J5cHQuanMjTDExNy1MMTQzXG4gICAgICAvLyBBcGFjaGUgTGljZW5zZSAyLjBcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1saWJyYXJ5L2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAgICAgIHZhciBwID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjID0gbXNnLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIGlmIChjIDwgMTI4KSB7XG4gICAgICAgICAgcmVzW3ArK10gPSBjO1xuICAgICAgICB9IGVsc2UgaWYgKGMgPCAyMDQ4KSB7XG4gICAgICAgICAgcmVzW3ArK10gPSAoYyA+PiA2KSB8IDE5MjtcbiAgICAgICAgICByZXNbcCsrXSA9IChjICYgNjMpIHwgMTI4O1xuICAgICAgICB9IGVsc2UgaWYgKGlzU3Vycm9nYXRlUGFpcihtc2csIGkpKSB7XG4gICAgICAgICAgYyA9IDB4MTAwMDAgKyAoKGMgJiAweDAzRkYpIDw8IDEwKSArIChtc2cuY2hhckNvZGVBdCgrK2kpICYgMHgwM0ZGKTtcbiAgICAgICAgICByZXNbcCsrXSA9IChjID4+IDE4KSB8IDI0MDtcbiAgICAgICAgICByZXNbcCsrXSA9ICgoYyA+PiAxMikgJiA2MykgfCAxMjg7XG4gICAgICAgICAgcmVzW3ArK10gPSAoKGMgPj4gNikgJiA2MykgfCAxMjg7XG4gICAgICAgICAgcmVzW3ArK10gPSAoYyAmIDYzKSB8IDEyODtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXNbcCsrXSA9IChjID4+IDEyKSB8IDIyNDtcbiAgICAgICAgICByZXNbcCsrXSA9ICgoYyA+PiA2KSAmIDYzKSB8IDEyODtcbiAgICAgICAgICByZXNbcCsrXSA9IChjICYgNjMpIHwgMTI4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmMgPT09ICdoZXgnKSB7XG4gICAgICBtc2cgPSBtc2cucmVwbGFjZSgvW15hLXowLTldKy9pZywgJycpO1xuICAgICAgaWYgKG1zZy5sZW5ndGggJSAyICE9PSAwKVxuICAgICAgICBtc2cgPSAnMCcgKyBtc2c7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSAyKVxuICAgICAgICByZXMucHVzaChwYXJzZUludChtc2dbaV0gKyBtc2dbaSArIDFdLCAxNikpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgICAgcmVzW2ldID0gbXNnW2ldIHwgMDtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuZXhwb3J0cy50b0FycmF5ID0gdG9BcnJheTtcblxuZnVuY3Rpb24gdG9IZXgobXNnKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspXG4gICAgcmVzICs9IHplcm8yKG1zZ1tpXS50b1N0cmluZygxNikpO1xuICByZXR1cm4gcmVzO1xufVxuZXhwb3J0cy50b0hleCA9IHRvSGV4O1xuXG5mdW5jdGlvbiBodG9ubCh3KSB7XG4gIHZhciByZXMgPSAodyA+Pj4gMjQpIHxcbiAgICAgICAgICAgICgodyA+Pj4gOCkgJiAweGZmMDApIHxcbiAgICAgICAgICAgICgodyA8PCA4KSAmIDB4ZmYwMDAwKSB8XG4gICAgICAgICAgICAoKHcgJiAweGZmKSA8PCAyNCk7XG4gIHJldHVybiByZXMgPj4+IDA7XG59XG5leHBvcnRzLmh0b25sID0gaHRvbmw7XG5cbmZ1bmN0aW9uIHRvSGV4MzIobXNnLCBlbmRpYW4pIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgIHZhciB3ID0gbXNnW2ldO1xuICAgIGlmIChlbmRpYW4gPT09ICdsaXR0bGUnKVxuICAgICAgdyA9IGh0b25sKHcpO1xuICAgIHJlcyArPSB6ZXJvOCh3LnRvU3RyaW5nKDE2KSk7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbmV4cG9ydHMudG9IZXgzMiA9IHRvSGV4MzI7XG5cbmZ1bmN0aW9uIHplcm8yKHdvcmQpIHtcbiAgaWYgKHdvcmQubGVuZ3RoID09PSAxKVxuICAgIHJldHVybiAnMCcgKyB3b3JkO1xuICBlbHNlXG4gICAgcmV0dXJuIHdvcmQ7XG59XG5leHBvcnRzLnplcm8yID0gemVybzI7XG5cbmZ1bmN0aW9uIHplcm84KHdvcmQpIHtcbiAgaWYgKHdvcmQubGVuZ3RoID09PSA3KVxuICAgIHJldHVybiAnMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gNilcbiAgICByZXR1cm4gJzAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA1KVxuICAgIHJldHVybiAnMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSA0KVxuICAgIHJldHVybiAnMDAwMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gMylcbiAgICByZXR1cm4gJzAwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAyKVxuICAgIHJldHVybiAnMDAwMDAwJyArIHdvcmQ7XG4gIGVsc2UgaWYgKHdvcmQubGVuZ3RoID09PSAxKVxuICAgIHJldHVybiAnMDAwMDAwMCcgKyB3b3JkO1xuICBlbHNlXG4gICAgcmV0dXJuIHdvcmQ7XG59XG5leHBvcnRzLnplcm84ID0gemVybzg7XG5cbmZ1bmN0aW9uIGpvaW4zMihtc2csIHN0YXJ0LCBlbmQsIGVuZGlhbikge1xuICB2YXIgbGVuID0gZW5kIC0gc3RhcnQ7XG4gIGFzc2VydChsZW4gJSA0ID09PSAwKTtcbiAgdmFyIHJlcyA9IG5ldyBBcnJheShsZW4gLyA0KTtcbiAgZm9yICh2YXIgaSA9IDAsIGsgPSBzdGFydDsgaSA8IHJlcy5sZW5ndGg7IGkrKywgayArPSA0KSB7XG4gICAgdmFyIHc7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JpZycpXG4gICAgICB3ID0gKG1zZ1trXSA8PCAyNCkgfCAobXNnW2sgKyAxXSA8PCAxNikgfCAobXNnW2sgKyAyXSA8PCA4KSB8IG1zZ1trICsgM107XG4gICAgZWxzZVxuICAgICAgdyA9IChtc2dbayArIDNdIDw8IDI0KSB8IChtc2dbayArIDJdIDw8IDE2KSB8IChtc2dbayArIDFdIDw8IDgpIHwgbXNnW2tdO1xuICAgIHJlc1tpXSA9IHcgPj4+IDA7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cbmV4cG9ydHMuam9pbjMyID0gam9pbjMyO1xuXG5mdW5jdGlvbiBzcGxpdDMyKG1zZywgZW5kaWFuKSB7XG4gIHZhciByZXMgPSBuZXcgQXJyYXkobXNnLmxlbmd0aCAqIDQpO1xuICBmb3IgKHZhciBpID0gMCwgayA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyssIGsgKz0gNCkge1xuICAgIHZhciBtID0gbXNnW2ldO1xuICAgIGlmIChlbmRpYW4gPT09ICdiaWcnKSB7XG4gICAgICByZXNba10gPSBtID4+PiAyNDtcbiAgICAgIHJlc1trICsgMV0gPSAobSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgIHJlc1trICsgMl0gPSAobSA+Pj4gOCkgJiAweGZmO1xuICAgICAgcmVzW2sgKyAzXSA9IG0gJiAweGZmO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNbayArIDNdID0gbSA+Pj4gMjQ7XG4gICAgICByZXNbayArIDJdID0gKG0gPj4+IDE2KSAmIDB4ZmY7XG4gICAgICByZXNbayArIDFdID0gKG0gPj4+IDgpICYgMHhmZjtcbiAgICAgIHJlc1trXSA9IG0gJiAweGZmO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzO1xufVxuZXhwb3J0cy5zcGxpdDMyID0gc3BsaXQzMjtcblxuZnVuY3Rpb24gcm90cjMyKHcsIGIpIHtcbiAgcmV0dXJuICh3ID4+PiBiKSB8ICh3IDw8ICgzMiAtIGIpKTtcbn1cbmV4cG9ydHMucm90cjMyID0gcm90cjMyO1xuXG5mdW5jdGlvbiByb3RsMzIodywgYikge1xuICByZXR1cm4gKHcgPDwgYikgfCAodyA+Pj4gKDMyIC0gYikpO1xufVxuZXhwb3J0cy5yb3RsMzIgPSByb3RsMzI7XG5cbmZ1bmN0aW9uIHN1bTMyKGEsIGIpIHtcbiAgcmV0dXJuIChhICsgYikgPj4+IDA7XG59XG5leHBvcnRzLnN1bTMyID0gc3VtMzI7XG5cbmZ1bmN0aW9uIHN1bTMyXzMoYSwgYiwgYykge1xuICByZXR1cm4gKGEgKyBiICsgYykgPj4+IDA7XG59XG5leHBvcnRzLnN1bTMyXzMgPSBzdW0zMl8zO1xuXG5mdW5jdGlvbiBzdW0zMl80KGEsIGIsIGMsIGQpIHtcbiAgcmV0dXJuIChhICsgYiArIGMgKyBkKSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtMzJfNCA9IHN1bTMyXzQ7XG5cbmZ1bmN0aW9uIHN1bTMyXzUoYSwgYiwgYywgZCwgZSkge1xuICByZXR1cm4gKGEgKyBiICsgYyArIGQgKyBlKSA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtMzJfNSA9IHN1bTMyXzU7XG5cbmZ1bmN0aW9uIHN1bTY0KGJ1ZiwgcG9zLCBhaCwgYWwpIHtcbiAgdmFyIGJoID0gYnVmW3Bvc107XG4gIHZhciBibCA9IGJ1Zltwb3MgKyAxXTtcblxuICB2YXIgbG8gPSAoYWwgKyBibCkgPj4+IDA7XG4gIHZhciBoaSA9IChsbyA8IGFsID8gMSA6IDApICsgYWggKyBiaDtcbiAgYnVmW3Bvc10gPSBoaSA+Pj4gMDtcbiAgYnVmW3BvcyArIDFdID0gbG87XG59XG5leHBvcnRzLnN1bTY0ID0gc3VtNjQ7XG5cbmZ1bmN0aW9uIHN1bTY0X2hpKGFoLCBhbCwgYmgsIGJsKSB7XG4gIHZhciBsbyA9IChhbCArIGJsKSA+Pj4gMDtcbiAgdmFyIGhpID0gKGxvIDwgYWwgPyAxIDogMCkgKyBhaCArIGJoO1xuICByZXR1cm4gaGkgPj4+IDA7XG59XG5leHBvcnRzLnN1bTY0X2hpID0gc3VtNjRfaGk7XG5cbmZ1bmN0aW9uIHN1bTY0X2xvKGFoLCBhbCwgYmgsIGJsKSB7XG4gIHZhciBsbyA9IGFsICsgYmw7XG4gIHJldHVybiBsbyA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtNjRfbG8gPSBzdW02NF9sbztcblxuZnVuY3Rpb24gc3VtNjRfNF9oaShhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGxvID0gYWw7XG4gIGxvID0gKGxvICsgYmwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGFsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgY2wpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGNsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZGwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGRsID8gMSA6IDA7XG5cbiAgdmFyIGhpID0gYWggKyBiaCArIGNoICsgZGggKyBjYXJyeTtcbiAgcmV0dXJuIGhpID4+PiAwO1xufVxuZXhwb3J0cy5zdW02NF80X2hpID0gc3VtNjRfNF9oaTtcblxuZnVuY3Rpb24gc3VtNjRfNF9sbyhhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwpIHtcbiAgdmFyIGxvID0gYWwgKyBibCArIGNsICsgZGw7XG4gIHJldHVybiBsbyA+Pj4gMDtcbn1cbmV4cG9ydHMuc3VtNjRfNF9sbyA9IHN1bTY0XzRfbG87XG5cbmZ1bmN0aW9uIHN1bTY0XzVfaGkoYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsLCBlaCwgZWwpIHtcbiAgdmFyIGNhcnJ5ID0gMDtcbiAgdmFyIGxvID0gYWw7XG4gIGxvID0gKGxvICsgYmwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGFsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgY2wpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGNsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZGwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGRsID8gMSA6IDA7XG4gIGxvID0gKGxvICsgZWwpID4+PiAwO1xuICBjYXJyeSArPSBsbyA8IGVsID8gMSA6IDA7XG5cbiAgdmFyIGhpID0gYWggKyBiaCArIGNoICsgZGggKyBlaCArIGNhcnJ5O1xuICByZXR1cm4gaGkgPj4+IDA7XG59XG5leHBvcnRzLnN1bTY0XzVfaGkgPSBzdW02NF81X2hpO1xuXG5mdW5jdGlvbiBzdW02NF81X2xvKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCwgZWgsIGVsKSB7XG4gIHZhciBsbyA9IGFsICsgYmwgKyBjbCArIGRsICsgZWw7XG5cbiAgcmV0dXJuIGxvID4+PiAwO1xufVxuZXhwb3J0cy5zdW02NF81X2xvID0gc3VtNjRfNV9sbztcblxuZnVuY3Rpb24gcm90cjY0X2hpKGFoLCBhbCwgbnVtKSB7XG4gIHZhciByID0gKGFsIDw8ICgzMiAtIG51bSkpIHwgKGFoID4+PiBudW0pO1xuICByZXR1cm4gciA+Pj4gMDtcbn1cbmV4cG9ydHMucm90cjY0X2hpID0gcm90cjY0X2hpO1xuXG5mdW5jdGlvbiByb3RyNjRfbG8oYWgsIGFsLCBudW0pIHtcbiAgdmFyIHIgPSAoYWggPDwgKDMyIC0gbnVtKSkgfCAoYWwgPj4+IG51bSk7XG4gIHJldHVybiByID4+PiAwO1xufVxuZXhwb3J0cy5yb3RyNjRfbG8gPSByb3RyNjRfbG87XG5cbmZ1bmN0aW9uIHNocjY0X2hpKGFoLCBhbCwgbnVtKSB7XG4gIHJldHVybiBhaCA+Pj4gbnVtO1xufVxuZXhwb3J0cy5zaHI2NF9oaSA9IHNocjY0X2hpO1xuXG5mdW5jdGlvbiBzaHI2NF9sbyhhaCwgYWwsIG51bSkge1xuICB2YXIgciA9IChhaCA8PCAoMzIgLSBudW0pKSB8IChhbCA+Pj4gbnVtKTtcbiAgcmV0dXJuIHIgPj4+IDA7XG59XG5leHBvcnRzLnNocjY0X2xvID0gc2hyNjRfbG87XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBoYXNoID0gcmVxdWlyZSgnaGFzaC5qcycpO1xudmFyIHV0aWxzID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWNyeXB0by11dGlscycpO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxuZnVuY3Rpb24gSG1hY0RSQkcob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgSG1hY0RSQkcpKVxuICAgIHJldHVybiBuZXcgSG1hY0RSQkcob3B0aW9ucyk7XG4gIHRoaXMuaGFzaCA9IG9wdGlvbnMuaGFzaDtcbiAgdGhpcy5wcmVkUmVzaXN0ID0gISFvcHRpb25zLnByZWRSZXNpc3Q7XG5cbiAgdGhpcy5vdXRMZW4gPSB0aGlzLmhhc2gub3V0U2l6ZTtcbiAgdGhpcy5taW5FbnRyb3B5ID0gb3B0aW9ucy5taW5FbnRyb3B5IHx8IHRoaXMuaGFzaC5obWFjU3RyZW5ndGg7XG5cbiAgdGhpcy5fcmVzZWVkID0gbnVsbDtcbiAgdGhpcy5yZXNlZWRJbnRlcnZhbCA9IG51bGw7XG4gIHRoaXMuSyA9IG51bGw7XG4gIHRoaXMuViA9IG51bGw7XG5cbiAgdmFyIGVudHJvcHkgPSB1dGlscy50b0FycmF5KG9wdGlvbnMuZW50cm9weSwgb3B0aW9ucy5lbnRyb3B5RW5jIHx8ICdoZXgnKTtcbiAgdmFyIG5vbmNlID0gdXRpbHMudG9BcnJheShvcHRpb25zLm5vbmNlLCBvcHRpb25zLm5vbmNlRW5jIHx8ICdoZXgnKTtcbiAgdmFyIHBlcnMgPSB1dGlscy50b0FycmF5KG9wdGlvbnMucGVycywgb3B0aW9ucy5wZXJzRW5jIHx8ICdoZXgnKTtcbiAgYXNzZXJ0KGVudHJvcHkubGVuZ3RoID49ICh0aGlzLm1pbkVudHJvcHkgLyA4KSxcbiAgICAgICAgICdOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICcgKyB0aGlzLm1pbkVudHJvcHkgKyAnIGJpdHMnKTtcbiAgdGhpcy5faW5pdChlbnRyb3B5LCBub25jZSwgcGVycyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEhtYWNEUkJHO1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0KGVudHJvcHksIG5vbmNlLCBwZXJzKSB7XG4gIHZhciBzZWVkID0gZW50cm9weS5jb25jYXQobm9uY2UpLmNvbmNhdChwZXJzKTtcblxuICB0aGlzLksgPSBuZXcgQXJyYXkodGhpcy5vdXRMZW4gLyA4KTtcbiAgdGhpcy5WID0gbmV3IEFycmF5KHRoaXMub3V0TGVuIC8gOCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5WLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpcy5LW2ldID0gMHgwMDtcbiAgICB0aGlzLlZbaV0gPSAweDAxO1xuICB9XG5cbiAgdGhpcy5fdXBkYXRlKHNlZWQpO1xuICB0aGlzLl9yZXNlZWQgPSAxO1xuICB0aGlzLnJlc2VlZEludGVydmFsID0gMHgxMDAwMDAwMDAwMDAwOyAgLy8gMl40OFxufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLl9obWFjID0gZnVuY3Rpb24gaG1hYygpIHtcbiAgcmV0dXJuIG5ldyBoYXNoLmhtYWModGhpcy5oYXNoLCB0aGlzLkspO1xufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUoc2VlZCkge1xuICB2YXIga21hYyA9IHRoaXMuX2htYWMoKVxuICAgICAgICAgICAgICAgICAudXBkYXRlKHRoaXMuVilcbiAgICAgICAgICAgICAgICAgLnVwZGF0ZShbIDB4MDAgXSk7XG4gIGlmIChzZWVkKVxuICAgIGttYWMgPSBrbWFjLnVwZGF0ZShzZWVkKTtcbiAgdGhpcy5LID0ga21hYy5kaWdlc3QoKTtcbiAgdGhpcy5WID0gdGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpO1xuICBpZiAoIXNlZWQpXG4gICAgcmV0dXJuO1xuXG4gIHRoaXMuSyA9IHRoaXMuX2htYWMoKVxuICAgICAgICAgICAgICAgLnVwZGF0ZSh0aGlzLlYpXG4gICAgICAgICAgICAgICAudXBkYXRlKFsgMHgwMSBdKVxuICAgICAgICAgICAgICAgLnVwZGF0ZShzZWVkKVxuICAgICAgICAgICAgICAgLmRpZ2VzdCgpO1xuICB0aGlzLlYgPSB0aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUucmVzZWVkID0gZnVuY3Rpb24gcmVzZWVkKGVudHJvcHksIGVudHJvcHlFbmMsIGFkZCwgYWRkRW5jKSB7XG4gIC8vIE9wdGlvbmFsIGVudHJvcHkgZW5jXG4gIGlmICh0eXBlb2YgZW50cm9weUVuYyAhPT0gJ3N0cmluZycpIHtcbiAgICBhZGRFbmMgPSBhZGQ7XG4gICAgYWRkID0gZW50cm9weUVuYztcbiAgICBlbnRyb3B5RW5jID0gbnVsbDtcbiAgfVxuXG4gIGVudHJvcHkgPSB1dGlscy50b0FycmF5KGVudHJvcHksIGVudHJvcHlFbmMpO1xuICBhZGQgPSB1dGlscy50b0FycmF5KGFkZCwgYWRkRW5jKTtcblxuICBhc3NlcnQoZW50cm9weS5sZW5ndGggPj0gKHRoaXMubWluRW50cm9weSAvIDgpLFxuICAgICAgICAgJ05vdCBlbm91Z2ggZW50cm9weS4gTWluaW11bSBpczogJyArIHRoaXMubWluRW50cm9weSArICcgYml0cycpO1xuXG4gIHRoaXMuX3VwZGF0ZShlbnRyb3B5LmNvbmNhdChhZGQgfHwgW10pKTtcbiAgdGhpcy5fcmVzZWVkID0gMTtcbn07XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5nZW5lcmF0ZSA9IGZ1bmN0aW9uIGdlbmVyYXRlKGxlbiwgZW5jLCBhZGQsIGFkZEVuYykge1xuICBpZiAodGhpcy5fcmVzZWVkID4gdGhpcy5yZXNlZWRJbnRlcnZhbClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Jlc2VlZCBpcyByZXF1aXJlZCcpO1xuXG4gIC8vIE9wdGlvbmFsIGVuY29kaW5nXG4gIGlmICh0eXBlb2YgZW5jICE9PSAnc3RyaW5nJykge1xuICAgIGFkZEVuYyA9IGFkZDtcbiAgICBhZGQgPSBlbmM7XG4gICAgZW5jID0gbnVsbDtcbiAgfVxuXG4gIC8vIE9wdGlvbmFsIGFkZGl0aW9uYWwgZGF0YVxuICBpZiAoYWRkKSB7XG4gICAgYWRkID0gdXRpbHMudG9BcnJheShhZGQsIGFkZEVuYyB8fCAnaGV4Jyk7XG4gICAgdGhpcy5fdXBkYXRlKGFkZCk7XG4gIH1cblxuICB2YXIgdGVtcCA9IFtdO1xuICB3aGlsZSAodGVtcC5sZW5ndGggPCBsZW4pIHtcbiAgICB0aGlzLlYgPSB0aGlzLl9obWFjKCkudXBkYXRlKHRoaXMuVikuZGlnZXN0KCk7XG4gICAgdGVtcCA9IHRlbXAuY29uY2F0KHRoaXMuVik7XG4gIH1cblxuICB2YXIgcmVzID0gdGVtcC5zbGljZSgwLCBsZW4pO1xuICB0aGlzLl91cGRhdGUoYWRkKTtcbiAgdGhpcy5fcmVzZWVkKys7XG4gIHJldHVybiB1dGlscy5lbmNvZGUocmVzLCBlbmMpO1xufTtcbiIsIi8qISBpZWVlNzU0LiBCU0QtMy1DbGF1c2UgTGljZW5zZS4gRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cHM6Ly9mZXJvc3Mub3JnL29wZW5zb3VyY2U+ICovXG5leHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IChuQnl0ZXMgKiA4KSAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgbkJpdHMgPSAtN1xuICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwXG4gIHZhciBkID0gaXNMRSA/IC0xIDogMVxuICB2YXIgcyA9IGJ1ZmZlcltvZmZzZXQgKyBpXVxuXG4gIGkgKz0gZFxuXG4gIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIHMgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IGVMZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IChlICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIGUgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IG1MZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IChtICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSAobkJ5dGVzICogOCkgLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIHJ0ID0gKG1MZW4gPT09IDIzID8gTWF0aC5wb3coMiwgLTI0KSAtIE1hdGgucG93KDIsIC03NykgOiAwKVxuICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpXG4gIHZhciBkID0gaXNMRSA/IDEgOiAtMVxuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkgPyAxIDogMFxuXG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpXG5cbiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICBtID0gaXNOYU4odmFsdWUpID8gMSA6IDBcbiAgICBlID0gZU1heFxuICB9IGVsc2Uge1xuICAgIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbHVlKSAvIE1hdGguTE4yKVxuICAgIGlmICh2YWx1ZSAqIChjID0gTWF0aC5wb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLVxuICAgICAgYyAqPSAyXG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKVxuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrK1xuICAgICAgYyAvPSAyXG4gICAgfVxuXG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMFxuICAgICAgZSA9IGVNYXhcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKCh2YWx1ZSAqIGMpIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IGUgKyBlQmlhc1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSAwXG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge31cblxuICBlID0gKGUgPDwgbUxlbikgfCBtXG4gIGVMZW4gKz0gbUxlblxuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGUgJiAweGZmLCBpICs9IGQsIGUgLz0gMjU2LCBlTGVuIC09IDgpIHt9XG5cbiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4XG59XG4iLCJpZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgLy8gaW1wbGVtZW50YXRpb24gZnJvbSBzdGFuZGFyZCBub2RlLmpzICd1dGlsJyBtb2R1bGVcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBpZiAoc3VwZXJDdG9yKSB7XG4gICAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgICAgY3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ3Rvci5wcm90b3R5cGUsIHtcbiAgICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgICB2YWx1ZTogY3RvcixcbiAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH07XG59IGVsc2Uge1xuICAvLyBvbGQgc2Nob29sIHNoaW0gZm9yIG9sZCBicm93c2Vyc1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGlmIChzdXBlckN0b3IpIHtcbiAgICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fVxuICAgICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZVxuICAgICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKVxuICAgICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yXG4gICAgfVxuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBoYXNUb1N0cmluZ1RhZyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIFN5bWJvbC50b1N0cmluZ1RhZyA9PT0gJ3N5bWJvbCc7XG52YXIgY2FsbEJvdW5kID0gcmVxdWlyZSgnY2FsbC1iaW5kL2NhbGxCb3VuZCcpO1xuXG52YXIgJHRvU3RyaW5nID0gY2FsbEJvdW5kKCdPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nJyk7XG5cbnZhciBpc1N0YW5kYXJkQXJndW1lbnRzID0gZnVuY3Rpb24gaXNBcmd1bWVudHModmFsdWUpIHtcblx0aWYgKGhhc1RvU3RyaW5nVGFnICYmIHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnIGluIHZhbHVlKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdHJldHVybiAkdG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBBcmd1bWVudHNdJztcbn07XG5cbnZhciBpc0xlZ2FjeUFyZ3VtZW50cyA9IGZ1bmN0aW9uIGlzQXJndW1lbnRzKHZhbHVlKSB7XG5cdGlmIChpc1N0YW5kYXJkQXJndW1lbnRzKHZhbHVlKSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJlxuXHRcdHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcblx0XHR0eXBlb2YgdmFsdWUubGVuZ3RoID09PSAnbnVtYmVyJyAmJlxuXHRcdHZhbHVlLmxlbmd0aCA+PSAwICYmXG5cdFx0JHRvU3RyaW5nKHZhbHVlKSAhPT0gJ1tvYmplY3QgQXJyYXldJyAmJlxuXHRcdCR0b1N0cmluZyh2YWx1ZS5jYWxsZWUpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xufTtcblxudmFyIHN1cHBvcnRzU3RhbmRhcmRBcmd1bWVudHMgPSAoZnVuY3Rpb24gKCkge1xuXHRyZXR1cm4gaXNTdGFuZGFyZEFyZ3VtZW50cyhhcmd1bWVudHMpO1xufSgpKTtcblxuaXNTdGFuZGFyZEFyZ3VtZW50cy5pc0xlZ2FjeUFyZ3VtZW50cyA9IGlzTGVnYWN5QXJndW1lbnRzOyAvLyBmb3IgdGVzdHNcblxubW9kdWxlLmV4cG9ydHMgPSBzdXBwb3J0c1N0YW5kYXJkQXJndW1lbnRzID8gaXNTdGFuZGFyZEFyZ3VtZW50cyA6IGlzTGVnYWN5QXJndW1lbnRzO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdG9TdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIGZuVG9TdHIgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgaXNGblJlZ2V4ID0gL15cXHMqKD86ZnVuY3Rpb24pP1xcKi87XG52YXIgaGFzVG9TdHJpbmdUYWcgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBTeW1ib2wudG9TdHJpbmdUYWcgPT09ICdzeW1ib2wnO1xudmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xudmFyIGdldEdlbmVyYXRvckZ1bmMgPSBmdW5jdGlvbiAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY29uc2lzdGVudC1yZXR1cm5cblx0aWYgKCFoYXNUb1N0cmluZ1RhZykge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHR0cnkge1xuXHRcdHJldHVybiBGdW5jdGlvbigncmV0dXJuIGZ1bmN0aW9uKigpIHt9JykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHR9XG59O1xudmFyIEdlbmVyYXRvckZ1bmN0aW9uO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzR2VuZXJhdG9yRnVuY3Rpb24oZm4pIHtcblx0aWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRpZiAoaXNGblJlZ2V4LnRlc3QoZm5Ub1N0ci5jYWxsKGZuKSkpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRpZiAoIWhhc1RvU3RyaW5nVGFnKSB7XG5cdFx0dmFyIHN0ciA9IHRvU3RyLmNhbGwoZm4pO1xuXHRcdHJldHVybiBzdHIgPT09ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSc7XG5cdH1cblx0aWYgKCFnZXRQcm90bykge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRpZiAodHlwZW9mIEdlbmVyYXRvckZ1bmN0aW9uID09PSAndW5kZWZpbmVkJykge1xuXHRcdHZhciBnZW5lcmF0b3JGdW5jID0gZ2V0R2VuZXJhdG9yRnVuYygpO1xuXHRcdEdlbmVyYXRvckZ1bmN0aW9uID0gZ2VuZXJhdG9yRnVuYyA/IGdldFByb3RvKGdlbmVyYXRvckZ1bmMpIDogZmFsc2U7XG5cdH1cblx0cmV0dXJuIGdldFByb3RvKGZuKSA9PT0gR2VuZXJhdG9yRnVuY3Rpb247XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKiBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtbnVtYmVyLmlzbmFuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNOYU4odmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjYWxsQmluZCA9IHJlcXVpcmUoJ2NhbGwtYmluZCcpO1xudmFyIGRlZmluZSA9IHJlcXVpcmUoJ2RlZmluZS1wcm9wZXJ0aWVzJyk7XG5cbnZhciBpbXBsZW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vaW1wbGVtZW50YXRpb24nKTtcbnZhciBnZXRQb2x5ZmlsbCA9IHJlcXVpcmUoJy4vcG9seWZpbGwnKTtcbnZhciBzaGltID0gcmVxdWlyZSgnLi9zaGltJyk7XG5cbnZhciBwb2x5ZmlsbCA9IGNhbGxCaW5kKGdldFBvbHlmaWxsKCksIE51bWJlcik7XG5cbi8qIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1udW1iZXIuaXNuYW4gKi9cblxuZGVmaW5lKHBvbHlmaWxsLCB7XG5cdGdldFBvbHlmaWxsOiBnZXRQb2x5ZmlsbCxcblx0aW1wbGVtZW50YXRpb246IGltcGxlbWVudGF0aW9uLFxuXHRzaGltOiBzaGltXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBwb2x5ZmlsbDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGltcGxlbWVudGF0aW9uID0gcmVxdWlyZSgnLi9pbXBsZW1lbnRhdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdldFBvbHlmaWxsKCkge1xuXHRpZiAoTnVtYmVyLmlzTmFOICYmIE51bWJlci5pc05hTihOYU4pICYmICFOdW1iZXIuaXNOYU4oJ2EnKSkge1xuXHRcdHJldHVybiBOdW1iZXIuaXNOYU47XG5cdH1cblx0cmV0dXJuIGltcGxlbWVudGF0aW9uO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGRlZmluZSA9IHJlcXVpcmUoJ2RlZmluZS1wcm9wZXJ0aWVzJyk7XG52YXIgZ2V0UG9seWZpbGwgPSByZXF1aXJlKCcuL3BvbHlmaWxsJyk7XG5cbi8qIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1udW1iZXIuaXNuYW4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzaGltTnVtYmVySXNOYU4oKSB7XG5cdHZhciBwb2x5ZmlsbCA9IGdldFBvbHlmaWxsKCk7XG5cdGRlZmluZShOdW1iZXIsIHsgaXNOYU46IHBvbHlmaWxsIH0sIHtcblx0XHRpc05hTjogZnVuY3Rpb24gdGVzdElzTmFOKCkge1xuXHRcdFx0cmV0dXJuIE51bWJlci5pc05hTiAhPT0gcG9seWZpbGw7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIHBvbHlmaWxsO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGZvckVhY2ggPSByZXF1aXJlKCdmb3JlYWNoJyk7XG52YXIgYXZhaWxhYmxlVHlwZWRBcnJheXMgPSByZXF1aXJlKCdhdmFpbGFibGUtdHlwZWQtYXJyYXlzJyk7XG52YXIgY2FsbEJvdW5kID0gcmVxdWlyZSgnY2FsbC1iaW5kL2NhbGxCb3VuZCcpO1xuXG52YXIgJHRvU3RyaW5nID0gY2FsbEJvdW5kKCdPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nJyk7XG52YXIgaGFzU3ltYm9scyA9IHJlcXVpcmUoJ2hhcy1zeW1ib2xzJykoKTtcbnZhciBoYXNUb1N0cmluZ1RhZyA9IGhhc1N5bWJvbHMgJiYgdHlwZW9mIFN5bWJvbC50b1N0cmluZ1RhZyA9PT0gJ3N5bWJvbCc7XG5cbnZhciB0eXBlZEFycmF5cyA9IGF2YWlsYWJsZVR5cGVkQXJyYXlzKCk7XG5cbnZhciAkaW5kZXhPZiA9IGNhbGxCb3VuZCgnQXJyYXkucHJvdG90eXBlLmluZGV4T2YnLCB0cnVlKSB8fCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuXHRmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSArPSAxKSB7XG5cdFx0aWYgKGFycmF5W2ldID09PSB2YWx1ZSkge1xuXHRcdFx0cmV0dXJuIGk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiAtMTtcbn07XG52YXIgJHNsaWNlID0gY2FsbEJvdW5kKCdTdHJpbmcucHJvdG90eXBlLnNsaWNlJyk7XG52YXIgdG9TdHJUYWdzID0ge307XG52YXIgZ09QRCA9IHJlcXVpcmUoJ2VzLWFic3RyYWN0L2hlbHBlcnMvZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7IC8vIHJlcXVpcmUoJ2dldHByb3RvdHlwZW9mJyk7XG5pZiAoaGFzVG9TdHJpbmdUYWcgJiYgZ09QRCAmJiBnZXRQcm90b3R5cGVPZikge1xuXHRmb3JFYWNoKHR5cGVkQXJyYXlzLCBmdW5jdGlvbiAodHlwZWRBcnJheSkge1xuXHRcdHZhciBhcnIgPSBuZXcgZ2xvYmFsW3R5cGVkQXJyYXldKCk7XG5cdFx0aWYgKCEoU3ltYm9sLnRvU3RyaW5nVGFnIGluIGFycikpIHtcblx0XHRcdHRocm93IG5ldyBFdmFsRXJyb3IoJ3RoaXMgZW5naW5lIGhhcyBzdXBwb3J0IGZvciBTeW1ib2wudG9TdHJpbmdUYWcsIGJ1dCAnICsgdHlwZWRBcnJheSArICcgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVydHkhIFBsZWFzZSByZXBvcnQgdGhpcy4nKTtcblx0XHR9XG5cdFx0dmFyIHByb3RvID0gZ2V0UHJvdG90eXBlT2YoYXJyKTtcblx0XHR2YXIgZGVzY3JpcHRvciA9IGdPUEQocHJvdG8sIFN5bWJvbC50b1N0cmluZ1RhZyk7XG5cdFx0aWYgKCFkZXNjcmlwdG9yKSB7XG5cdFx0XHR2YXIgc3VwZXJQcm90byA9IGdldFByb3RvdHlwZU9mKHByb3RvKTtcblx0XHRcdGRlc2NyaXB0b3IgPSBnT1BEKHN1cGVyUHJvdG8sIFN5bWJvbC50b1N0cmluZ1RhZyk7XG5cdFx0fVxuXHRcdHRvU3RyVGFnc1t0eXBlZEFycmF5XSA9IGRlc2NyaXB0b3IuZ2V0O1xuXHR9KTtcbn1cblxudmFyIHRyeVR5cGVkQXJyYXlzID0gZnVuY3Rpb24gdHJ5QWxsVHlwZWRBcnJheXModmFsdWUpIHtcblx0dmFyIGFueVRydWUgPSBmYWxzZTtcblx0Zm9yRWFjaCh0b1N0clRhZ3MsIGZ1bmN0aW9uIChnZXR0ZXIsIHR5cGVkQXJyYXkpIHtcblx0XHRpZiAoIWFueVRydWUpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGFueVRydWUgPSBnZXR0ZXIuY2FsbCh2YWx1ZSkgPT09IHR5cGVkQXJyYXk7XG5cdFx0XHR9IGNhdGNoIChlKSB7IC8qKi8gfVxuXHRcdH1cblx0fSk7XG5cdHJldHVybiBhbnlUcnVlO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc1R5cGVkQXJyYXkodmFsdWUpIHtcblx0aWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAoIWhhc1RvU3RyaW5nVGFnKSB7XG5cdFx0dmFyIHRhZyA9ICRzbGljZSgkdG9TdHJpbmcodmFsdWUpLCA4LCAtMSk7XG5cdFx0cmV0dXJuICRpbmRleE9mKHR5cGVkQXJyYXlzLCB0YWcpID4gLTE7XG5cdH1cblx0aWYgKCFnT1BEKSB7IHJldHVybiBmYWxzZTsgfVxuXHRyZXR1cm4gdHJ5VHlwZWRBcnJheXModmFsdWUpO1xufTtcbiIsIid1c2Ugc3RyaWN0J1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2hCYXNlID0gcmVxdWlyZSgnaGFzaC1iYXNlJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgQVJSQVkxNiA9IG5ldyBBcnJheSgxNilcblxuZnVuY3Rpb24gTUQ1ICgpIHtcbiAgSGFzaEJhc2UuY2FsbCh0aGlzLCA2NClcblxuICAvLyBzdGF0ZVxuICB0aGlzLl9hID0gMHg2NzQ1MjMwMVxuICB0aGlzLl9iID0gMHhlZmNkYWI4OVxuICB0aGlzLl9jID0gMHg5OGJhZGNmZVxuICB0aGlzLl9kID0gMHgxMDMyNTQ3NlxufVxuXG5pbmhlcml0cyhNRDUsIEhhc2hCYXNlKVxuXG5NRDUucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBNID0gQVJSQVkxNlxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIE1baV0gPSB0aGlzLl9ibG9jay5yZWFkSW50MzJMRShpICogNClcblxuICB2YXIgYSA9IHRoaXMuX2FcbiAgdmFyIGIgPSB0aGlzLl9iXG4gIHZhciBjID0gdGhpcy5fY1xuICB2YXIgZCA9IHRoaXMuX2RcblxuICBhID0gZm5GKGEsIGIsIGMsIGQsIE1bMF0sIDB4ZDc2YWE0NzgsIDcpXG4gIGQgPSBmbkYoZCwgYSwgYiwgYywgTVsxXSwgMHhlOGM3Yjc1NiwgMTIpXG4gIGMgPSBmbkYoYywgZCwgYSwgYiwgTVsyXSwgMHgyNDIwNzBkYiwgMTcpXG4gIGIgPSBmbkYoYiwgYywgZCwgYSwgTVszXSwgMHhjMWJkY2VlZSwgMjIpXG4gIGEgPSBmbkYoYSwgYiwgYywgZCwgTVs0XSwgMHhmNTdjMGZhZiwgNylcbiAgZCA9IGZuRihkLCBhLCBiLCBjLCBNWzVdLCAweDQ3ODdjNjJhLCAxMilcbiAgYyA9IGZuRihjLCBkLCBhLCBiLCBNWzZdLCAweGE4MzA0NjEzLCAxNylcbiAgYiA9IGZuRihiLCBjLCBkLCBhLCBNWzddLCAweGZkNDY5NTAxLCAyMilcbiAgYSA9IGZuRihhLCBiLCBjLCBkLCBNWzhdLCAweDY5ODA5OGQ4LCA3KVxuICBkID0gZm5GKGQsIGEsIGIsIGMsIE1bOV0sIDB4OGI0NGY3YWYsIDEyKVxuICBjID0gZm5GKGMsIGQsIGEsIGIsIE1bMTBdLCAweGZmZmY1YmIxLCAxNylcbiAgYiA9IGZuRihiLCBjLCBkLCBhLCBNWzExXSwgMHg4OTVjZDdiZSwgMjIpXG4gIGEgPSBmbkYoYSwgYiwgYywgZCwgTVsxMl0sIDB4NmI5MDExMjIsIDcpXG4gIGQgPSBmbkYoZCwgYSwgYiwgYywgTVsxM10sIDB4ZmQ5ODcxOTMsIDEyKVxuICBjID0gZm5GKGMsIGQsIGEsIGIsIE1bMTRdLCAweGE2Nzk0MzhlLCAxNylcbiAgYiA9IGZuRihiLCBjLCBkLCBhLCBNWzE1XSwgMHg0OWI0MDgyMSwgMjIpXG5cbiAgYSA9IGZuRyhhLCBiLCBjLCBkLCBNWzFdLCAweGY2MWUyNTYyLCA1KVxuICBkID0gZm5HKGQsIGEsIGIsIGMsIE1bNl0sIDB4YzA0MGIzNDAsIDkpXG4gIGMgPSBmbkcoYywgZCwgYSwgYiwgTVsxMV0sIDB4MjY1ZTVhNTEsIDE0KVxuICBiID0gZm5HKGIsIGMsIGQsIGEsIE1bMF0sIDB4ZTliNmM3YWEsIDIwKVxuICBhID0gZm5HKGEsIGIsIGMsIGQsIE1bNV0sIDB4ZDYyZjEwNWQsIDUpXG4gIGQgPSBmbkcoZCwgYSwgYiwgYywgTVsxMF0sIDB4MDI0NDE0NTMsIDkpXG4gIGMgPSBmbkcoYywgZCwgYSwgYiwgTVsxNV0sIDB4ZDhhMWU2ODEsIDE0KVxuICBiID0gZm5HKGIsIGMsIGQsIGEsIE1bNF0sIDB4ZTdkM2ZiYzgsIDIwKVxuICBhID0gZm5HKGEsIGIsIGMsIGQsIE1bOV0sIDB4MjFlMWNkZTYsIDUpXG4gIGQgPSBmbkcoZCwgYSwgYiwgYywgTVsxNF0sIDB4YzMzNzA3ZDYsIDkpXG4gIGMgPSBmbkcoYywgZCwgYSwgYiwgTVszXSwgMHhmNGQ1MGQ4NywgMTQpXG4gIGIgPSBmbkcoYiwgYywgZCwgYSwgTVs4XSwgMHg0NTVhMTRlZCwgMjApXG4gIGEgPSBmbkcoYSwgYiwgYywgZCwgTVsxM10sIDB4YTllM2U5MDUsIDUpXG4gIGQgPSBmbkcoZCwgYSwgYiwgYywgTVsyXSwgMHhmY2VmYTNmOCwgOSlcbiAgYyA9IGZuRyhjLCBkLCBhLCBiLCBNWzddLCAweDY3NmYwMmQ5LCAxNClcbiAgYiA9IGZuRyhiLCBjLCBkLCBhLCBNWzEyXSwgMHg4ZDJhNGM4YSwgMjApXG5cbiAgYSA9IGZuSChhLCBiLCBjLCBkLCBNWzVdLCAweGZmZmEzOTQyLCA0KVxuICBkID0gZm5IKGQsIGEsIGIsIGMsIE1bOF0sIDB4ODc3MWY2ODEsIDExKVxuICBjID0gZm5IKGMsIGQsIGEsIGIsIE1bMTFdLCAweDZkOWQ2MTIyLCAxNilcbiAgYiA9IGZuSChiLCBjLCBkLCBhLCBNWzE0XSwgMHhmZGU1MzgwYywgMjMpXG4gIGEgPSBmbkgoYSwgYiwgYywgZCwgTVsxXSwgMHhhNGJlZWE0NCwgNClcbiAgZCA9IGZuSChkLCBhLCBiLCBjLCBNWzRdLCAweDRiZGVjZmE5LCAxMSlcbiAgYyA9IGZuSChjLCBkLCBhLCBiLCBNWzddLCAweGY2YmI0YjYwLCAxNilcbiAgYiA9IGZuSChiLCBjLCBkLCBhLCBNWzEwXSwgMHhiZWJmYmM3MCwgMjMpXG4gIGEgPSBmbkgoYSwgYiwgYywgZCwgTVsxM10sIDB4Mjg5YjdlYzYsIDQpXG4gIGQgPSBmbkgoZCwgYSwgYiwgYywgTVswXSwgMHhlYWExMjdmYSwgMTEpXG4gIGMgPSBmbkgoYywgZCwgYSwgYiwgTVszXSwgMHhkNGVmMzA4NSwgMTYpXG4gIGIgPSBmbkgoYiwgYywgZCwgYSwgTVs2XSwgMHgwNDg4MWQwNSwgMjMpXG4gIGEgPSBmbkgoYSwgYiwgYywgZCwgTVs5XSwgMHhkOWQ0ZDAzOSwgNClcbiAgZCA9IGZuSChkLCBhLCBiLCBjLCBNWzEyXSwgMHhlNmRiOTllNSwgMTEpXG4gIGMgPSBmbkgoYywgZCwgYSwgYiwgTVsxNV0sIDB4MWZhMjdjZjgsIDE2KVxuICBiID0gZm5IKGIsIGMsIGQsIGEsIE1bMl0sIDB4YzRhYzU2NjUsIDIzKVxuXG4gIGEgPSBmbkkoYSwgYiwgYywgZCwgTVswXSwgMHhmNDI5MjI0NCwgNilcbiAgZCA9IGZuSShkLCBhLCBiLCBjLCBNWzddLCAweDQzMmFmZjk3LCAxMClcbiAgYyA9IGZuSShjLCBkLCBhLCBiLCBNWzE0XSwgMHhhYjk0MjNhNywgMTUpXG4gIGIgPSBmbkkoYiwgYywgZCwgYSwgTVs1XSwgMHhmYzkzYTAzOSwgMjEpXG4gIGEgPSBmbkkoYSwgYiwgYywgZCwgTVsxMl0sIDB4NjU1YjU5YzMsIDYpXG4gIGQgPSBmbkkoZCwgYSwgYiwgYywgTVszXSwgMHg4ZjBjY2M5MiwgMTApXG4gIGMgPSBmbkkoYywgZCwgYSwgYiwgTVsxMF0sIDB4ZmZlZmY0N2QsIDE1KVxuICBiID0gZm5JKGIsIGMsIGQsIGEsIE1bMV0sIDB4ODU4NDVkZDEsIDIxKVxuICBhID0gZm5JKGEsIGIsIGMsIGQsIE1bOF0sIDB4NmZhODdlNGYsIDYpXG4gIGQgPSBmbkkoZCwgYSwgYiwgYywgTVsxNV0sIDB4ZmUyY2U2ZTAsIDEwKVxuICBjID0gZm5JKGMsIGQsIGEsIGIsIE1bNl0sIDB4YTMwMTQzMTQsIDE1KVxuICBiID0gZm5JKGIsIGMsIGQsIGEsIE1bMTNdLCAweDRlMDgxMWExLCAyMSlcbiAgYSA9IGZuSShhLCBiLCBjLCBkLCBNWzRdLCAweGY3NTM3ZTgyLCA2KVxuICBkID0gZm5JKGQsIGEsIGIsIGMsIE1bMTFdLCAweGJkM2FmMjM1LCAxMClcbiAgYyA9IGZuSShjLCBkLCBhLCBiLCBNWzJdLCAweDJhZDdkMmJiLCAxNSlcbiAgYiA9IGZuSShiLCBjLCBkLCBhLCBNWzldLCAweGViODZkMzkxLCAyMSlcblxuICB0aGlzLl9hID0gKHRoaXMuX2EgKyBhKSB8IDBcbiAgdGhpcy5fYiA9ICh0aGlzLl9iICsgYikgfCAwXG4gIHRoaXMuX2MgPSAodGhpcy5fYyArIGMpIHwgMFxuICB0aGlzLl9kID0gKHRoaXMuX2QgKyBkKSB8IDBcbn1cblxuTUQ1LnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gKCkge1xuICAvLyBjcmVhdGUgcGFkZGluZyBhbmQgaGFuZGxlIGJsb2Nrc1xuICB0aGlzLl9ibG9ja1t0aGlzLl9ibG9ja09mZnNldCsrXSA9IDB4ODBcbiAgaWYgKHRoaXMuX2Jsb2NrT2Zmc2V0ID4gNTYpIHtcbiAgICB0aGlzLl9ibG9jay5maWxsKDAsIHRoaXMuX2Jsb2NrT2Zmc2V0LCA2NClcbiAgICB0aGlzLl91cGRhdGUoKVxuICAgIHRoaXMuX2Jsb2NrT2Zmc2V0ID0gMFxuICB9XG5cbiAgdGhpcy5fYmxvY2suZmlsbCgwLCB0aGlzLl9ibG9ja09mZnNldCwgNTYpXG4gIHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzBdLCA1NilcbiAgdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMV0sIDYwKVxuICB0aGlzLl91cGRhdGUoKVxuXG4gIC8vIHByb2R1Y2UgcmVzdWx0XG4gIHZhciBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMTYpXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fYSwgMClcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9iLCA0KVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2MsIDgpXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fZCwgMTIpXG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gcm90bCAoeCwgbikge1xuICByZXR1cm4gKHggPDwgbikgfCAoeCA+Pj4gKDMyIC0gbikpXG59XG5cbmZ1bmN0aW9uIGZuRiAoYSwgYiwgYywgZCwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoKGIgJiBjKSB8ICgofmIpICYgZCkpICsgbSArIGspIHwgMCwgcykgKyBiKSB8IDBcbn1cblxuZnVuY3Rpb24gZm5HIChhLCBiLCBjLCBkLCBtLCBrLCBzKSB7XG4gIHJldHVybiAocm90bCgoYSArICgoYiAmIGQpIHwgKGMgJiAofmQpKSkgKyBtICsgaykgfCAwLCBzKSArIGIpIHwgMFxufVxuXG5mdW5jdGlvbiBmbkggKGEsIGIsIGMsIGQsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKGIgXiBjIF4gZCkgKyBtICsgaykgfCAwLCBzKSArIGIpIHwgMFxufVxuXG5mdW5jdGlvbiBmbkkgKGEsIGIsIGMsIGQsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKChjIF4gKGIgfCAofmQpKSkpICsgbSArIGspIHwgMCwgcykgKyBiKSB8IDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBNRDVcbiIsInZhciBibiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgYnJvcmFuZCA9IHJlcXVpcmUoJ2Jyb3JhbmQnKTtcblxuZnVuY3Rpb24gTWlsbGVyUmFiaW4ocmFuZCkge1xuICB0aGlzLnJhbmQgPSByYW5kIHx8IG5ldyBicm9yYW5kLlJhbmQoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gTWlsbGVyUmFiaW47XG5cbk1pbGxlclJhYmluLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShyYW5kKSB7XG4gIHJldHVybiBuZXcgTWlsbGVyUmFiaW4ocmFuZCk7XG59O1xuXG5NaWxsZXJSYWJpbi5wcm90b3R5cGUuX3JhbmRiZWxvdyA9IGZ1bmN0aW9uIF9yYW5kYmVsb3cobikge1xuICB2YXIgbGVuID0gbi5iaXRMZW5ndGgoKTtcbiAgdmFyIG1pbl9ieXRlcyA9IE1hdGguY2VpbChsZW4gLyA4KTtcblxuICAvLyBHZW5lcmFnZSByYW5kb20gYnl0ZXMgdW50aWwgYSBudW1iZXIgbGVzcyB0aGFuIG4gaXMgZm91bmQuXG4gIC8vIFRoaXMgZW5zdXJlcyB0aGF0IDAuLm4tMSBoYXZlIGFuIGVxdWFsIHByb2JhYmlsaXR5IG9mIGJlaW5nIHNlbGVjdGVkLlxuICBkb1xuICAgIHZhciBhID0gbmV3IGJuKHRoaXMucmFuZC5nZW5lcmF0ZShtaW5fYnl0ZXMpKTtcbiAgd2hpbGUgKGEuY21wKG4pID49IDApO1xuXG4gIHJldHVybiBhO1xufTtcblxuTWlsbGVyUmFiaW4ucHJvdG90eXBlLl9yYW5kcmFuZ2UgPSBmdW5jdGlvbiBfcmFuZHJhbmdlKHN0YXJ0LCBzdG9wKSB7XG4gIC8vIEdlbmVyYXRlIGEgcmFuZG9tIG51bWJlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gc3RhcnQgYW5kIGxlc3MgdGhhbiBzdG9wLlxuICB2YXIgc2l6ZSA9IHN0b3Auc3ViKHN0YXJ0KTtcbiAgcmV0dXJuIHN0YXJ0LmFkZCh0aGlzLl9yYW5kYmVsb3coc2l6ZSkpO1xufTtcblxuTWlsbGVyUmFiaW4ucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbiB0ZXN0KG4sIGssIGNiKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgcmVkID0gYm4ubW9udChuKTtcbiAgdmFyIHJvbmUgPSBuZXcgYm4oMSkudG9SZWQocmVkKTtcblxuICBpZiAoIWspXG4gICAgayA9IE1hdGgubWF4KDEsIChsZW4gLyA0OCkgfCAwKTtcblxuICAvLyBGaW5kIGQgYW5kIHMsIChuIC0gMSkgPSAoMiBeIHMpICogZDtcbiAgdmFyIG4xID0gbi5zdWJuKDEpO1xuICBmb3IgKHZhciBzID0gMDsgIW4xLnRlc3RuKHMpOyBzKyspIHt9XG4gIHZhciBkID0gbi5zaHJuKHMpO1xuXG4gIHZhciBybjEgPSBuMS50b1JlZChyZWQpO1xuXG4gIHZhciBwcmltZSA9IHRydWU7XG4gIGZvciAoOyBrID4gMDsgay0tKSB7XG4gICAgdmFyIGEgPSB0aGlzLl9yYW5kcmFuZ2UobmV3IGJuKDIpLCBuMSk7XG4gICAgaWYgKGNiKVxuICAgICAgY2IoYSk7XG5cbiAgICB2YXIgeCA9IGEudG9SZWQocmVkKS5yZWRQb3coZCk7XG4gICAgaWYgKHguY21wKHJvbmUpID09PSAwIHx8IHguY21wKHJuMSkgPT09IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgczsgaSsrKSB7XG4gICAgICB4ID0geC5yZWRTcXIoKTtcblxuICAgICAgaWYgKHguY21wKHJvbmUpID09PSAwKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoeC5jbXAocm4xKSA9PT0gMClcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IHMpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gcHJpbWU7XG59O1xuXG5NaWxsZXJSYWJpbi5wcm90b3R5cGUuZ2V0RGl2aXNvciA9IGZ1bmN0aW9uIGdldERpdmlzb3Iobiwgaykge1xuICB2YXIgbGVuID0gbi5iaXRMZW5ndGgoKTtcbiAgdmFyIHJlZCA9IGJuLm1vbnQobik7XG4gIHZhciByb25lID0gbmV3IGJuKDEpLnRvUmVkKHJlZCk7XG5cbiAgaWYgKCFrKVxuICAgIGsgPSBNYXRoLm1heCgxLCAobGVuIC8gNDgpIHwgMCk7XG5cbiAgLy8gRmluZCBkIGFuZCBzLCAobiAtIDEpID0gKDIgXiBzKSAqIGQ7XG4gIHZhciBuMSA9IG4uc3VibigxKTtcbiAgZm9yICh2YXIgcyA9IDA7ICFuMS50ZXN0bihzKTsgcysrKSB7fVxuICB2YXIgZCA9IG4uc2hybihzKTtcblxuICB2YXIgcm4xID0gbjEudG9SZWQocmVkKTtcblxuICBmb3IgKDsgayA+IDA7IGstLSkge1xuICAgIHZhciBhID0gdGhpcy5fcmFuZHJhbmdlKG5ldyBibigyKSwgbjEpO1xuXG4gICAgdmFyIGcgPSBuLmdjZChhKTtcbiAgICBpZiAoZy5jbXBuKDEpICE9PSAwKVxuICAgICAgcmV0dXJuIGc7XG5cbiAgICB2YXIgeCA9IGEudG9SZWQocmVkKS5yZWRQb3coZCk7XG4gICAgaWYgKHguY21wKHJvbmUpID09PSAwIHx8IHguY21wKHJuMSkgPT09IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgczsgaSsrKSB7XG4gICAgICB4ID0geC5yZWRTcXIoKTtcblxuICAgICAgaWYgKHguY21wKHJvbmUpID09PSAwKVxuICAgICAgICByZXR1cm4geC5mcm9tUmVkKCkuc3VibigxKS5nY2Qobik7XG4gICAgICBpZiAoeC5jbXAocm4xKSA9PT0gMClcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IHMpIHtcbiAgICAgIHggPSB4LnJlZFNxcigpO1xuICAgICAgcmV0dXJuIHguZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKG4pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG4iLCIoZnVuY3Rpb24gKG1vZHVsZSwgZXhwb3J0cykge1xuICAndXNlIHN0cmljdCc7XG5cbiAgLy8gVXRpbHNcbiAgZnVuY3Rpb24gYXNzZXJ0ICh2YWwsIG1zZykge1xuICAgIGlmICghdmFsKSB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG4gIH1cblxuICAvLyBDb3VsZCB1c2UgYGluaGVyaXRzYCBtb2R1bGUsIGJ1dCBkb24ndCB3YW50IHRvIG1vdmUgZnJvbSBzaW5nbGUgZmlsZVxuICAvLyBhcmNoaXRlY3R1cmUgeWV0LlxuICBmdW5jdGlvbiBpbmhlcml0cyAoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3I7XG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge307XG4gICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZTtcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpO1xuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvcjtcbiAgfVxuXG4gIC8vIEJOXG5cbiAgZnVuY3Rpb24gQk4gKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKEJOLmlzQk4obnVtYmVyKSkge1xuICAgICAgcmV0dXJuIG51bWJlcjtcbiAgICB9XG5cbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB0aGlzLndvcmRzID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgICAvLyBSZWR1Y3Rpb24gY29udGV4dFxuICAgIHRoaXMucmVkID0gbnVsbDtcblxuICAgIGlmIChudW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGlmIChiYXNlID09PSAnbGUnIHx8IGJhc2UgPT09ICdiZScpIHtcbiAgICAgICAgZW5kaWFuID0gYmFzZTtcbiAgICAgICAgYmFzZSA9IDEwO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9pbml0KG51bWJlciB8fCAwLCBiYXNlIHx8IDEwLCBlbmRpYW4gfHwgJ2JlJyk7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gQk47XG4gIH0gZWxzZSB7XG4gICAgZXhwb3J0cy5CTiA9IEJOO1xuICB9XG5cbiAgQk4uQk4gPSBCTjtcbiAgQk4ud29yZFNpemUgPSAyNjtcblxuICB2YXIgQnVmZmVyO1xuICB0cnkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LkJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIEJ1ZmZlciA9IHdpbmRvdy5CdWZmZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9XG5cbiAgICBpZiAoc3RhcnQgPCBudW1iZXIubGVuZ3RoKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gMTYpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VIZXgobnVtYmVyLCBzdGFydCwgZW5kaWFuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX3BhcnNlQmFzZShudW1iZXIsIGJhc2UsIHN0YXJ0KTtcbiAgICAgICAgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXROdW1iZXIgPSBmdW5jdGlvbiBfaW5pdE51bWJlciAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAobnVtYmVyIDwgMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICBudW1iZXIgPSAtbnVtYmVyO1xuICAgIH1cbiAgICBpZiAobnVtYmVyIDwgMHg0MDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyBudW1iZXIgJiAweDNmZmZmZmYgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9IGVsc2UgaWYgKG51bWJlciA8IDB4MTAwMDAwMDAwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmZcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDI7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChudW1iZXIgPCAweDIwMDAwMDAwMDAwMDAwKTsgLy8gMiBeIDUzICh1bnNhZmUpXG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmLFxuICAgICAgICAxXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAzO1xuICAgIH1cblxuICAgIGlmIChlbmRpYW4gIT09ICdsZScpIHJldHVybjtcblxuICAgIC8vIFJldmVyc2UgdGhlIGJ5dGVzXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdEFycmF5ID0gZnVuY3Rpb24gX2luaXRBcnJheSAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICAvLyBQZXJoYXBzIGEgVWludDhBcnJheVxuICAgIGFzc2VydCh0eXBlb2YgbnVtYmVyLmxlbmd0aCA9PT0gJ251bWJlcicpO1xuICAgIGlmIChudW1iZXIubGVuZ3RoIDw9IDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIDAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKG51bWJlci5sZW5ndGggLyAzKTtcbiAgICB0aGlzLndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAwO1xuICAgIH1cblxuICAgIHZhciBqLCB3O1xuICAgIHZhciBvZmYgPSAwO1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxLCBqID0gMDsgaSA+PSAwOyBpIC09IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSAtIDFdIDw8IDgpIHwgKG51bWJlcltpIC0gMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbnVtYmVyLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgKyAxXSA8PCA4KSB8IChudW1iZXJbaSArIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4NEJpdHMgKHN0cmluZywgaW5kZXgpIHtcbiAgICB2YXIgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAvLyAnQScgLSAnRidcbiAgICBpZiAoYyA+PSA2NSAmJiBjIDw9IDcwKSB7XG4gICAgICByZXR1cm4gYyAtIDU1O1xuICAgIC8vICdhJyAtICdmJ1xuICAgIH0gZWxzZSBpZiAoYyA+PSA5NyAmJiBjIDw9IDEwMikge1xuICAgICAgcmV0dXJuIGMgLSA4NztcbiAgICAvLyAnMCcgLSAnOSdcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChjIC0gNDgpICYgMHhmO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHBhcnNlSGV4Qnl0ZSAoc3RyaW5nLCBsb3dlckJvdW5kLCBpbmRleCkge1xuICAgIHZhciByID0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4KTtcbiAgICBpZiAoaW5kZXggLSAxID49IGxvd2VyQm91bmQpIHtcbiAgICAgIHIgfD0gcGFyc2VIZXg0Qml0cyhzdHJpbmcsIGluZGV4IC0gMSkgPDwgNDtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlSGV4ID0gZnVuY3Rpb24gX3BhcnNlSGV4IChudW1iZXIsIHN0YXJ0LCBlbmRpYW4pIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICAvLyAyNC1iaXRzIGNodW5rc1xuICAgIHZhciBvZmYgPSAwO1xuICAgIHZhciBqID0gMDtcblxuICAgIHZhciB3O1xuICAgIGlmIChlbmRpYW4gPT09ICdiZScpIHtcbiAgICAgIGZvciAoaSA9IG51bWJlci5sZW5ndGggLSAxOyBpID49IHN0YXJ0OyBpIC09IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFyc2VMZW5ndGggPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgICBmb3IgKGkgPSBwYXJzZUxlbmd0aCAlIDIgPT09IDAgPyBzdGFydCArIDEgOiBzdGFydDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMikge1xuICAgICAgICB3ID0gcGFyc2VIZXhCeXRlKG51bWJlciwgc3RhcnQsIGkpIDw8IG9mZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ICYgMHgzZmZmZmZmO1xuICAgICAgICBpZiAob2ZmID49IDE4KSB7XG4gICAgICAgICAgb2ZmIC09IDE4O1xuICAgICAgICAgIGogKz0gMTtcbiAgICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgPj4+IDI2O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZiArPSA4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHBhcnNlQmFzZSAoc3RyLCBzdGFydCwgZW5kLCBtdWwpIHtcbiAgICB2YXIgciA9IDA7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKHN0ci5sZW5ndGgsIGVuZCk7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHZhciBjID0gc3RyLmNoYXJDb2RlQXQoaSkgLSA0ODtcblxuICAgICAgciAqPSBtdWw7XG5cbiAgICAgIC8vICdhJ1xuICAgICAgaWYgKGMgPj0gNDkpIHtcbiAgICAgICAgciArPSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3KSB7XG4gICAgICAgIHIgKz0gYyAtIDE3ICsgMHhhO1xuXG4gICAgICAvLyAnMCcgLSAnOSdcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHIgKz0gYztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBCTi5wcm90b3R5cGUuX3BhcnNlQmFzZSA9IGZ1bmN0aW9uIF9wYXJzZUJhc2UgKG51bWJlciwgYmFzZSwgc3RhcnQpIHtcbiAgICAvLyBJbml0aWFsaXplIGFzIHplcm9cbiAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgdGhpcy5sZW5ndGggPSAxO1xuXG4gICAgLy8gRmluZCBsZW5ndGggb2YgbGltYiBpbiBiYXNlXG4gICAgZm9yICh2YXIgbGltYkxlbiA9IDAsIGxpbWJQb3cgPSAxOyBsaW1iUG93IDw9IDB4M2ZmZmZmZjsgbGltYlBvdyAqPSBiYXNlKSB7XG4gICAgICBsaW1iTGVuKys7XG4gICAgfVxuICAgIGxpbWJMZW4tLTtcbiAgICBsaW1iUG93ID0gKGxpbWJQb3cgLyBiYXNlKSB8IDA7XG5cbiAgICB2YXIgdG90YWwgPSBudW1iZXIubGVuZ3RoIC0gc3RhcnQ7XG4gICAgdmFyIG1vZCA9IHRvdGFsICUgbGltYkxlbjtcbiAgICB2YXIgZW5kID0gTWF0aC5taW4odG90YWwsIHRvdGFsIC0gbW9kKSArIHN0YXJ0O1xuXG4gICAgdmFyIHdvcmQgPSAwO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSBsaW1iTGVuKSB7XG4gICAgICB3b3JkID0gcGFyc2VCYXNlKG51bWJlciwgaSwgaSArIGxpbWJMZW4sIGJhc2UpO1xuXG4gICAgICB0aGlzLmltdWxuKGxpbWJQb3cpO1xuICAgICAgaWYgKHRoaXMud29yZHNbMF0gKyB3b3JkIDwgMHg0MDAwMDAwKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gKz0gd29yZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2lhZGRuKHdvcmQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChtb2QgIT09IDApIHtcbiAgICAgIHZhciBwb3cgPSAxO1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIG51bWJlci5sZW5ndGgsIGJhc2UpO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbW9kOyBpKyspIHtcbiAgICAgICAgcG93ICo9IGJhc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaW11bG4ocG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5IChkZXN0KSB7XG4gICAgZGVzdC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBkZXN0LndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICB9XG4gICAgZGVzdC5sZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICBkZXN0Lm5lZ2F0aXZlID0gdGhpcy5uZWdhdGl2ZTtcbiAgICBkZXN0LnJlZCA9IHRoaXMucmVkO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uIGNsb25lICgpIHtcbiAgICB2YXIgciA9IG5ldyBCTihudWxsKTtcbiAgICB0aGlzLmNvcHkocik7XG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9leHBhbmQgPSBmdW5jdGlvbiBfZXhwYW5kIChzaXplKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgc2l6ZSkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFJlbW92ZSBsZWFkaW5nIGAwYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3RyaXAgPSBmdW5jdGlvbiBzdHJpcCAoKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoID4gMSAmJiB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgIHRoaXMubGVuZ3RoLS07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fbm9ybVNpZ24gPSBmdW5jdGlvbiBfbm9ybVNpZ24gKCkge1xuICAgIC8vIC0wID0gMFxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgICByZXR1cm4gKHRoaXMucmVkID8gJzxCTi1SOiAnIDogJzxCTjogJykgKyB0aGlzLnRvU3RyaW5nKDE2KSArICc+JztcbiAgfTtcblxuICAvKlxuXG4gIHZhciB6ZXJvcyA9IFtdO1xuICB2YXIgZ3JvdXBTaXplcyA9IFtdO1xuICB2YXIgZ3JvdXBCYXNlcyA9IFtdO1xuXG4gIHZhciBzID0gJyc7XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBCTi53b3JkU2l6ZSkge1xuICAgIHplcm9zW2ldID0gcztcbiAgICBzICs9ICcwJztcbiAgfVxuICBncm91cFNpemVzWzBdID0gMDtcbiAgZ3JvdXBTaXplc1sxXSA9IDA7XG4gIGdyb3VwQmFzZXNbMF0gPSAwO1xuICBncm91cEJhc2VzWzFdID0gMDtcbiAgdmFyIGJhc2UgPSAyIC0gMTtcbiAgd2hpbGUgKCsrYmFzZSA8IDM2ICsgMSkge1xuICAgIHZhciBncm91cFNpemUgPSAwO1xuICAgIHZhciBncm91cEJhc2UgPSAxO1xuICAgIHdoaWxlIChncm91cEJhc2UgPCAoMSA8PCBCTi53b3JkU2l6ZSkgLyBiYXNlKSB7XG4gICAgICBncm91cEJhc2UgKj0gYmFzZTtcbiAgICAgIGdyb3VwU2l6ZSArPSAxO1xuICAgIH1cbiAgICBncm91cFNpemVzW2Jhc2VdID0gZ3JvdXBTaXplO1xuICAgIGdyb3VwQmFzZXNbYmFzZV0gPSBncm91cEJhc2U7XG4gIH1cblxuICAqL1xuXG4gIHZhciB6ZXJvcyA9IFtcbiAgICAnJyxcbiAgICAnMCcsXG4gICAgJzAwJyxcbiAgICAnMDAwJyxcbiAgICAnMDAwMCcsXG4gICAgJzAwMDAwJyxcbiAgICAnMDAwMDAwJyxcbiAgICAnMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyxcbiAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCdcbiAgXTtcblxuICB2YXIgZ3JvdXBTaXplcyA9IFtcbiAgICAwLCAwLFxuICAgIDI1LCAxNiwgMTIsIDExLCAxMCwgOSwgOCxcbiAgICA4LCA3LCA3LCA3LCA3LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1XG4gIF07XG5cbiAgdmFyIGdyb3VwQmFzZXMgPSBbXG4gICAgMCwgMCxcbiAgICAzMzU1NDQzMiwgNDMwNDY3MjEsIDE2Nzc3MjE2LCA0ODgyODEyNSwgNjA0NjYxNzYsIDQwMzUzNjA3LCAxNjc3NzIxNixcbiAgICA0MzA0NjcyMSwgMTAwMDAwMDAsIDE5NDg3MTcxLCAzNTgzMTgwOCwgNjI3NDg1MTcsIDc1Mjk1MzYsIDExMzkwNjI1LFxuICAgIDE2Nzc3MjE2LCAyNDEzNzU2OSwgMzQwMTIyMjQsIDQ3MDQ1ODgxLCA2NDAwMDAwMCwgNDA4NDEwMSwgNTE1MzYzMixcbiAgICA2NDM2MzQzLCA3OTYyNjI0LCA5NzY1NjI1LCAxMTg4MTM3NiwgMTQzNDg5MDcsIDE3MjEwMzY4LCAyMDUxMTE0OSxcbiAgICAyNDMwMDAwMCwgMjg2MjkxNTEsIDMzNTU0NDMyLCAzOTEzNTM5MywgNDU0MzU0MjQsIDUyNTIxODc1LCA2MDQ2NjE3NlxuICBdO1xuXG4gIEJOLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nIChiYXNlLCBwYWRkaW5nKSB7XG4gICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgcGFkZGluZyA9IHBhZGRpbmcgfCAwIHx8IDE7XG5cbiAgICB2YXIgb3V0O1xuICAgIGlmIChiYXNlID09PSAxNiB8fCBiYXNlID09PSAnaGV4Jykge1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgb2ZmID0gMDtcbiAgICAgIHZhciBjYXJyeSA9IDA7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldO1xuICAgICAgICB2YXIgd29yZCA9ICgoKHcgPDwgb2ZmKSB8IGNhcnJ5KSAmIDB4ZmZmZmZmKS50b1N0cmluZygxNik7XG4gICAgICAgIGNhcnJ5ID0gKHcgPj4+ICgyNCAtIG9mZikpICYgMHhmZmZmZmY7XG4gICAgICAgIGlmIChjYXJyeSAhPT0gMCB8fCBpICE9PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICBvdXQgPSB6ZXJvc1s2IC0gd29yZC5sZW5ndGhdICsgd29yZCArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSB3b3JkICsgb3V0O1xuICAgICAgICB9XG4gICAgICAgIG9mZiArPSAyO1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICAgIG91dCA9IGNhcnJ5LnRvU3RyaW5nKDE2KSArIG91dDtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChvdXQubGVuZ3RoICUgcGFkZGluZyAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBvdXQgPSAnLScgKyBvdXQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGlmIChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KSB7XG4gICAgICAvLyB2YXIgZ3JvdXBTaXplID0gTWF0aC5mbG9vcihCTi53b3JkU2l6ZSAqIE1hdGguTE4yIC8gTWF0aC5sb2coYmFzZSkpO1xuICAgICAgdmFyIGdyb3VwU2l6ZSA9IGdyb3VwU2l6ZXNbYmFzZV07XG4gICAgICAvLyB2YXIgZ3JvdXBCYXNlID0gTWF0aC5wb3coYmFzZSwgZ3JvdXBTaXplKTtcbiAgICAgIHZhciBncm91cEJhc2UgPSBncm91cEJhc2VzW2Jhc2VdO1xuICAgICAgb3V0ID0gJyc7XG4gICAgICB2YXIgYyA9IHRoaXMuY2xvbmUoKTtcbiAgICAgIGMubmVnYXRpdmUgPSAwO1xuICAgICAgd2hpbGUgKCFjLmlzWmVybygpKSB7XG4gICAgICAgIHZhciByID0gYy5tb2RuKGdyb3VwQmFzZSkudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIGMgPSBjLmlkaXZuKGdyb3VwQmFzZSk7XG5cbiAgICAgICAgaWYgKCFjLmlzWmVybygpKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbZ3JvdXBTaXplIC0gci5sZW5ndGhdICsgciArIG91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvdXQgPSByICsgb3V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgICBvdXQgPSAnMCcgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBhc3NlcnQoZmFsc2UsICdCYXNlIHNob3VsZCBiZSBiZXR3ZWVuIDIgYW5kIDM2Jyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvTnVtYmVyID0gZnVuY3Rpb24gdG9OdW1iZXIgKCkge1xuICAgIHZhciByZXQgPSB0aGlzLndvcmRzWzBdO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMikge1xuICAgICAgcmV0ICs9IHRoaXMud29yZHNbMV0gKiAweDQwMDAwMDA7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA9PT0gMyAmJiB0aGlzLndvcmRzWzJdID09PSAweDAxKSB7XG4gICAgICAvLyBOT1RFOiBhdCB0aGlzIHN0YWdlIGl0IGlzIGtub3duIHRoYXQgdGhlIHRvcCBiaXQgaXMgc2V0XG4gICAgICByZXQgKz0gMHgxMDAwMDAwMDAwMDAwMCArICh0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gMikge1xuICAgICAgYXNzZXJ0KGZhbHNlLCAnTnVtYmVyIGNhbiBvbmx5IHNhZmVseSBzdG9yZSB1cCB0byA1MyBiaXRzJyk7XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgPyAtcmV0IDogcmV0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiB0b0pTT04gKCkge1xuICAgIHJldHVybiB0aGlzLnRvU3RyaW5nKDE2KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9CdWZmZXIgPSBmdW5jdGlvbiB0b0J1ZmZlciAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpO1xuICAgIHJldHVybiB0aGlzLnRvQXJyYXlMaWtlKEJ1ZmZlciwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gdG9BcnJheSAoZW5kaWFuLCBsZW5ndGgpIHtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShBcnJheSwgZW5kaWFuLCBsZW5ndGgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b0FycmF5TGlrZSA9IGZ1bmN0aW9uIHRvQXJyYXlMaWtlIChBcnJheVR5cGUsIGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgdmFyIGJ5dGVMZW5ndGggPSB0aGlzLmJ5dGVMZW5ndGgoKTtcbiAgICB2YXIgcmVxTGVuZ3RoID0gbGVuZ3RoIHx8IE1hdGgubWF4KDEsIGJ5dGVMZW5ndGgpO1xuICAgIGFzc2VydChieXRlTGVuZ3RoIDw9IHJlcUxlbmd0aCwgJ2J5dGUgYXJyYXkgbG9uZ2VyIHRoYW4gZGVzaXJlZCBsZW5ndGgnKTtcbiAgICBhc3NlcnQocmVxTGVuZ3RoID4gMCwgJ1JlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCcpO1xuXG4gICAgdGhpcy5zdHJpcCgpO1xuICAgIHZhciBsaXR0bGVFbmRpYW4gPSBlbmRpYW4gPT09ICdsZSc7XG4gICAgdmFyIHJlcyA9IG5ldyBBcnJheVR5cGUocmVxTGVuZ3RoKTtcblxuICAgIHZhciBiLCBpO1xuICAgIHZhciBxID0gdGhpcy5jbG9uZSgpO1xuICAgIGlmICghbGl0dGxlRW5kaWFuKSB7XG4gICAgICAvLyBBc3N1bWUgYmlnLWVuZGlhblxuICAgICAgZm9yIChpID0gMDsgaSA8IHJlcUxlbmd0aCAtIGJ5dGVMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyAhcS5pc1plcm8oKTsgaSsrKSB7XG4gICAgICAgIGIgPSBxLmFuZGxuKDB4ZmYpO1xuICAgICAgICBxLml1c2hybig4KTtcblxuICAgICAgICByZXNbcmVxTGVuZ3RoIC0gaSAtIDFdID0gYjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW2ldID0gYjtcbiAgICAgIH1cblxuICAgICAgZm9yICg7IGkgPCByZXFMZW5ndGg7IGkrKykge1xuICAgICAgICByZXNbaV0gPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgaWYgKE1hdGguY2x6MzIpIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHJldHVybiAzMiAtIE1hdGguY2x6MzIodyk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyA9IGZ1bmN0aW9uIF9jb3VudEJpdHMgKHcpIHtcbiAgICAgIHZhciB0ID0gdztcbiAgICAgIHZhciByID0gMDtcbiAgICAgIGlmICh0ID49IDB4MTAwMCkge1xuICAgICAgICByICs9IDEzO1xuICAgICAgICB0ID4+Pj0gMTM7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDQwKSB7XG4gICAgICAgIHIgKz0gNztcbiAgICAgICAgdCA+Pj49IDc7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDgpIHtcbiAgICAgICAgciArPSA0O1xuICAgICAgICB0ID4+Pj0gNDtcbiAgICAgIH1cbiAgICAgIGlmICh0ID49IDB4MDIpIHtcbiAgICAgICAgciArPSAyO1xuICAgICAgICB0ID4+Pj0gMjtcbiAgICAgIH1cbiAgICAgIHJldHVybiByICsgdDtcbiAgICB9O1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl96ZXJvQml0cyA9IGZ1bmN0aW9uIF96ZXJvQml0cyAodykge1xuICAgIC8vIFNob3J0LWN1dFxuICAgIGlmICh3ID09PSAwKSByZXR1cm4gMjY7XG5cbiAgICB2YXIgdCA9IHc7XG4gICAgdmFyIHIgPSAwO1xuICAgIGlmICgodCAmIDB4MWZmZikgPT09IDApIHtcbiAgICAgIHIgKz0gMTM7XG4gICAgICB0ID4+Pj0gMTM7XG4gICAgfVxuICAgIGlmICgodCAmIDB4N2YpID09PSAwKSB7XG4gICAgICByICs9IDc7XG4gICAgICB0ID4+Pj0gNztcbiAgICB9XG4gICAgaWYgKCh0ICYgMHhmKSA9PT0gMCkge1xuICAgICAgciArPSA0O1xuICAgICAgdCA+Pj49IDQ7XG4gICAgfVxuICAgIGlmICgodCAmIDB4MykgPT09IDApIHtcbiAgICAgIHIgKz0gMjtcbiAgICAgIHQgPj4+PSAyO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDEpID09PSAwKSB7XG4gICAgICByKys7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIC8vIFJldHVybiBudW1iZXIgb2YgdXNlZCBiaXRzIGluIGEgQk5cbiAgQk4ucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uIGJpdExlbmd0aCAoKSB7XG4gICAgdmFyIHcgPSB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV07XG4gICAgdmFyIGhpID0gdGhpcy5fY291bnRCaXRzKHcpO1xuICAgIHJldHVybiAodGhpcy5sZW5ndGggLSAxKSAqIDI2ICsgaGk7XG4gIH07XG5cbiAgZnVuY3Rpb24gdG9CaXRBcnJheSAobnVtKSB7XG4gICAgdmFyIHcgPSBuZXcgQXJyYXkobnVtLmJpdExlbmd0aCgpKTtcblxuICAgIGZvciAodmFyIGJpdCA9IDA7IGJpdCA8IHcubGVuZ3RoOyBiaXQrKykge1xuICAgICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgICAgd1tiaXRdID0gKG51bS53b3Jkc1tvZmZdICYgKDEgPDwgd2JpdCkpID4+PiB3Yml0O1xuICAgIH1cblxuICAgIHJldHVybiB3O1xuICB9XG5cbiAgLy8gTnVtYmVyIG9mIHRyYWlsaW5nIHplcm8gYml0c1xuICBCTi5wcm90b3R5cGUuemVyb0JpdHMgPSBmdW5jdGlvbiB6ZXJvQml0cyAoKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiAwO1xuXG4gICAgdmFyIHIgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGIgPSB0aGlzLl96ZXJvQml0cyh0aGlzLndvcmRzW2ldKTtcbiAgICAgIHIgKz0gYjtcbiAgICAgIGlmIChiICE9PSAyNikgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ieXRlTGVuZ3RoID0gZnVuY3Rpb24gYnl0ZUxlbmd0aCAoKSB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLmJpdExlbmd0aCgpIC8gOCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvVHdvcyA9IGZ1bmN0aW9uIHRvVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgcmV0dXJuIHRoaXMuYWJzKCkuaW5vdG4od2lkdGgpLmlhZGRuKDEpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tVHdvcyA9IGZ1bmN0aW9uIGZyb21Ud29zICh3aWR0aCkge1xuICAgIGlmICh0aGlzLnRlc3RuKHdpZHRoIC0gMSkpIHtcbiAgICAgIHJldHVybiB0aGlzLm5vdG4od2lkdGgpLmlhZGRuKDEpLmluZWcoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNOZWcgPSBmdW5jdGlvbiBpc05lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubmVnYXRpdmUgIT09IDA7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYFxuICBCTi5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmluZWcoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaW5lZyA9IGZ1bmN0aW9uIGluZWcgKCkge1xuICAgIGlmICghdGhpcy5pc1plcm8oKSkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSBePSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdW9yID0gZnVuY3Rpb24gaXVvciAobnVtKSB7XG4gICAgd2hpbGUgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXSA9IDA7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldIHwgbnVtLndvcmRzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlvciA9IGZ1bmN0aW9uIGlvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVvcihudW0pO1xuICB9O1xuXG4gIC8vIE9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5vciA9IGZ1bmN0aW9uIG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pb3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVvciA9IGZ1bmN0aW9uIHVvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdW9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1b3IodGhpcyk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdWFuZCA9IGZ1bmN0aW9uIGl1YW5kIChudW0pIHtcbiAgICAvLyBiID0gbWluLWxlbmd0aChudW0sIHRoaXMpXG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSAmIG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGIubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaWFuZCA9IGZ1bmN0aW9uIGlhbmQgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1YW5kKG51bSk7XG4gIH07XG5cbiAgLy8gQW5kIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hbmQgPSBmdW5jdGlvbiBhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYW5kKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51YW5kID0gZnVuY3Rpb24gdWFuZCAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdWFuZChudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdWFuZCh0aGlzKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLml1eG9yID0gZnVuY3Rpb24gaXV4b3IgKG51bSkge1xuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYTtcbiAgICB2YXIgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGIubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldIF4gYi53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICBpZiAodGhpcyAhPT0gYSkge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5peG9yID0gZnVuY3Rpb24gaXhvciAobnVtKSB7XG4gICAgYXNzZXJ0KCh0aGlzLm5lZ2F0aXZlIHwgbnVtLm5lZ2F0aXZlKSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXV4b3IobnVtKTtcbiAgfTtcblxuICAvLyBYb3IgYG51bWAgd2l0aCBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIHhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5peG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml4b3IodGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnV4b3IgPSBmdW5jdGlvbiB1eG9yIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLml1eG9yKG51bSk7XG4gICAgcmV0dXJuIG51bS5jbG9uZSgpLml1eG9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIE5vdCBgYHRoaXNgYCB3aXRoIGBgd2lkdGhgYCBiaXR3aWR0aFxuICBCTi5wcm90b3R5cGUuaW5vdG4gPSBmdW5jdGlvbiBpbm90biAod2lkdGgpIHtcbiAgICBhc3NlcnQodHlwZW9mIHdpZHRoID09PSAnbnVtYmVyJyAmJiB3aWR0aCA+PSAwKTtcblxuICAgIHZhciBieXRlc05lZWRlZCA9IE1hdGguY2VpbCh3aWR0aCAvIDI2KSB8IDA7XG4gICAgdmFyIGJpdHNMZWZ0ID0gd2lkdGggJSAyNjtcblxuICAgIC8vIEV4dGVuZCB0aGUgYnVmZmVyIHdpdGggbGVhZGluZyB6ZXJvZXNcbiAgICB0aGlzLl9leHBhbmQoYnl0ZXNOZWVkZWQpO1xuXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgYnl0ZXNOZWVkZWQtLTtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgY29tcGxldGUgd29yZHNcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzTmVlZGVkOyBpKyspIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB+dGhpcy53b3Jkc1tpXSAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIHJlc2lkdWVcbiAgICBpZiAoYml0c0xlZnQgPiAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAoMHgzZmZmZmZmID4+ICgyNiAtIGJpdHNMZWZ0KSk7XG4gICAgfVxuXG4gICAgLy8gQW5kIHJlbW92ZSBsZWFkaW5nIHplcm9lc1xuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm5vdG4gPSBmdW5jdGlvbiBub3RuICh3aWR0aCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW5vdG4od2lkdGgpO1xuICB9O1xuXG4gIC8vIFNldCBgYml0YCBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnNldG4gPSBmdW5jdGlvbiBzZXRuIChiaXQsIHZhbCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG5cbiAgICB2YXIgb2ZmID0gKGJpdCAvIDI2KSB8IDA7XG4gICAgdmFyIHdiaXQgPSBiaXQgJSAyNjtcblxuICAgIHRoaXMuX2V4cGFuZChvZmYgKyAxKTtcblxuICAgIGlmICh2YWwpIHtcbiAgICAgIHRoaXMud29yZHNbb2ZmXSA9IHRoaXMud29yZHNbb2ZmXSB8ICgxIDw8IHdiaXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gJiB+KDEgPDwgd2JpdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pYWRkID0gZnVuY3Rpb24gaWFkZCAobnVtKSB7XG4gICAgdmFyIHI7XG5cbiAgICAvLyBuZWdhdGl2ZSArIHBvc2l0aXZlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHIgPSB0aGlzLmlzdWIobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuXG4gICAgLy8gcG9zaXRpdmUgKyBuZWdhdGl2ZVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gYS5sZW5ndGggPiBiLmxlbmd0aFxuICAgIHZhciBhLCBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9IHIgPj4+IDI2O1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gYS5sZW5ndGg7XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoXSA9IGNhcnJ5O1xuICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAvLyBDb3B5IHRoZSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIH0gZWxzZSBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIEFkZCBgbnVtYCB0byBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAobnVtKSB7XG4gICAgdmFyIHJlcztcbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwICYmIHRoaXMubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXMgPSB0aGlzLnN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSBpZiAobnVtLm5lZ2F0aXZlID09PSAwICYmIHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gbnVtLnN1Yih0aGlzKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGQobnVtKTtcblxuICAgIHJldHVybiBudW0uY2xvbmUoKS5pYWRkKHRoaXMpO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IGBudW1gIGZyb20gYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3ViID0gZnVuY3Rpb24gaXN1YiAobnVtKSB7XG4gICAgLy8gdGhpcyAtICgtbnVtKSA9IHRoaXMgKyBudW1cbiAgICBpZiAobnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgdmFyIHIgPSB0aGlzLmlhZGQobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gci5fbm9ybVNpZ24oKTtcblxuICAgIC8vIC10aGlzIC0gbnVtID0gLSh0aGlzICsgbnVtKVxuICAgIH0gZWxzZSBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGQobnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXMuX25vcm1TaWduKCk7XG4gICAgfVxuXG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlXG4gICAgdmFyIGNtcCA9IHRoaXMuY21wKG51bSk7XG5cbiAgICAvLyBPcHRpbWl6YXRpb24gLSB6ZXJvaWZ5XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIGEgPiBiXG4gICAgdmFyIGEsIGI7XG4gICAgaWYgKGNtcCA+IDApIHtcbiAgICAgIGEgPSB0aGlzO1xuICAgICAgYiA9IG51bTtcbiAgICB9IGVsc2Uge1xuICAgICAgYSA9IG51bTtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSAtIChiLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gciA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgY2FycnkgIT09IDAgJiYgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHIgPSAoYS53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICAvLyBDb3B5IHJlc3Qgb2YgdGhlIHdvcmRzXG4gICAgaWYgKGNhcnJ5ID09PSAwICYmIGkgPCBhLmxlbmd0aCAmJiBhICE9PSB0aGlzKSB7XG4gICAgICBmb3IgKDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGEud29yZHNbaV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSk7XG5cbiAgICBpZiAoYSAhPT0gdGhpcykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWIobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBzbWFsbE11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgdmFyIGxlbiA9IChzZWxmLmxlbmd0aCArIG51bS5sZW5ndGgpIHwgMDtcbiAgICBvdXQubGVuZ3RoID0gbGVuO1xuICAgIGxlbiA9IChsZW4gLSAxKSB8IDA7XG5cbiAgICAvLyBQZWVsIG9uZSBpdGVyYXRpb24gKGNvbXBpbGVyIGNhbid0IGRvIGl0LCBiZWNhdXNlIG9mIGNvZGUgY29tcGxleGl0eSlcbiAgICB2YXIgYSA9IHNlbGYud29yZHNbMF0gfCAwO1xuICAgIHZhciBiID0gbnVtLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICB2YXIgY2FycnkgPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgIG91dC53b3Jkc1swXSA9IGxvO1xuXG4gICAgZm9yICh2YXIgayA9IDE7IGsgPCBsZW47IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBjYXJyeSA+Pj4gMjY7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IChrIC0gaikgfCAwO1xuICAgICAgICBhID0gc2VsZi53b3Jkc1tpXSB8IDA7XG4gICAgICAgIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICByID0gYSAqIGIgKyByd29yZDtcbiAgICAgICAgbmNhcnJ5ICs9IChyIC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkIHwgMDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5IHwgMDtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeSB8IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dC5sZW5ndGgtLTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0LnN0cmlwKCk7XG4gIH1cblxuICAvLyBUT0RPKGluZHV0bnkpOiBpdCBtYXkgYmUgcmVhc29uYWJsZSB0byBvbWl0IGl0IGZvciB1c2VycyB3aG8gZG9uJ3QgbmVlZFxuICAvLyB0byB3b3JrIHdpdGggMjU2LWJpdCBudW1iZXJzLCBvdGhlcndpc2UgaXQgZ2l2ZXMgMjAlIGltcHJvdmVtZW50IGZvciAyNTYtYml0XG4gIC8vIG11bHRpcGxpY2F0aW9uIChsaWtlIGVsbGlwdGljIHNlY3AyNTZrMSkuXG4gIHZhciBjb21iMTBNdWxUbyA9IGZ1bmN0aW9uIGNvbWIxME11bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIHZhciBhID0gc2VsZi53b3JkcztcbiAgICB2YXIgYiA9IG51bS53b3JkcztcbiAgICB2YXIgbyA9IG91dC53b3JkcztcbiAgICB2YXIgYyA9IDA7XG4gICAgdmFyIGxvO1xuICAgIHZhciBtaWQ7XG4gICAgdmFyIGhpO1xuICAgIHZhciBhMCA9IGFbMF0gfCAwO1xuICAgIHZhciBhbDAgPSBhMCAmIDB4MWZmZjtcbiAgICB2YXIgYWgwID0gYTAgPj4+IDEzO1xuICAgIHZhciBhMSA9IGFbMV0gfCAwO1xuICAgIHZhciBhbDEgPSBhMSAmIDB4MWZmZjtcbiAgICB2YXIgYWgxID0gYTEgPj4+IDEzO1xuICAgIHZhciBhMiA9IGFbMl0gfCAwO1xuICAgIHZhciBhbDIgPSBhMiAmIDB4MWZmZjtcbiAgICB2YXIgYWgyID0gYTIgPj4+IDEzO1xuICAgIHZhciBhMyA9IGFbM10gfCAwO1xuICAgIHZhciBhbDMgPSBhMyAmIDB4MWZmZjtcbiAgICB2YXIgYWgzID0gYTMgPj4+IDEzO1xuICAgIHZhciBhNCA9IGFbNF0gfCAwO1xuICAgIHZhciBhbDQgPSBhNCAmIDB4MWZmZjtcbiAgICB2YXIgYWg0ID0gYTQgPj4+IDEzO1xuICAgIHZhciBhNSA9IGFbNV0gfCAwO1xuICAgIHZhciBhbDUgPSBhNSAmIDB4MWZmZjtcbiAgICB2YXIgYWg1ID0gYTUgPj4+IDEzO1xuICAgIHZhciBhNiA9IGFbNl0gfCAwO1xuICAgIHZhciBhbDYgPSBhNiAmIDB4MWZmZjtcbiAgICB2YXIgYWg2ID0gYTYgPj4+IDEzO1xuICAgIHZhciBhNyA9IGFbN10gfCAwO1xuICAgIHZhciBhbDcgPSBhNyAmIDB4MWZmZjtcbiAgICB2YXIgYWg3ID0gYTcgPj4+IDEzO1xuICAgIHZhciBhOCA9IGFbOF0gfCAwO1xuICAgIHZhciBhbDggPSBhOCAmIDB4MWZmZjtcbiAgICB2YXIgYWg4ID0gYTggPj4+IDEzO1xuICAgIHZhciBhOSA9IGFbOV0gfCAwO1xuICAgIHZhciBhbDkgPSBhOSAmIDB4MWZmZjtcbiAgICB2YXIgYWg5ID0gYTkgPj4+IDEzO1xuICAgIHZhciBiMCA9IGJbMF0gfCAwO1xuICAgIHZhciBibDAgPSBiMCAmIDB4MWZmZjtcbiAgICB2YXIgYmgwID0gYjAgPj4+IDEzO1xuICAgIHZhciBiMSA9IGJbMV0gfCAwO1xuICAgIHZhciBibDEgPSBiMSAmIDB4MWZmZjtcbiAgICB2YXIgYmgxID0gYjEgPj4+IDEzO1xuICAgIHZhciBiMiA9IGJbMl0gfCAwO1xuICAgIHZhciBibDIgPSBiMiAmIDB4MWZmZjtcbiAgICB2YXIgYmgyID0gYjIgPj4+IDEzO1xuICAgIHZhciBiMyA9IGJbM10gfCAwO1xuICAgIHZhciBibDMgPSBiMyAmIDB4MWZmZjtcbiAgICB2YXIgYmgzID0gYjMgPj4+IDEzO1xuICAgIHZhciBiNCA9IGJbNF0gfCAwO1xuICAgIHZhciBibDQgPSBiNCAmIDB4MWZmZjtcbiAgICB2YXIgYmg0ID0gYjQgPj4+IDEzO1xuICAgIHZhciBiNSA9IGJbNV0gfCAwO1xuICAgIHZhciBibDUgPSBiNSAmIDB4MWZmZjtcbiAgICB2YXIgYmg1ID0gYjUgPj4+IDEzO1xuICAgIHZhciBiNiA9IGJbNl0gfCAwO1xuICAgIHZhciBibDYgPSBiNiAmIDB4MWZmZjtcbiAgICB2YXIgYmg2ID0gYjYgPj4+IDEzO1xuICAgIHZhciBiNyA9IGJbN10gfCAwO1xuICAgIHZhciBibDcgPSBiNyAmIDB4MWZmZjtcbiAgICB2YXIgYmg3ID0gYjcgPj4+IDEzO1xuICAgIHZhciBiOCA9IGJbOF0gfCAwO1xuICAgIHZhciBibDggPSBiOCAmIDB4MWZmZjtcbiAgICB2YXIgYmg4ID0gYjggPj4+IDEzO1xuICAgIHZhciBiOSA9IGJbOV0gfCAwO1xuICAgIHZhciBibDkgPSBiOSAmIDB4MWZmZjtcbiAgICB2YXIgYmg5ID0gYjkgPj4+IDEzO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0gc2VsZi5uZWdhdGl2ZSBeIG51bS5uZWdhdGl2ZTtcbiAgICBvdXQubGVuZ3RoID0gMTk7XG4gICAgLyogayA9IDAgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDAsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMCwgYmgwKTtcbiAgICB2YXIgdzAgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcwID4+PiAyNikpIHwgMDtcbiAgICB3MCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDEsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDEpKSB8IDA7XG4gICAgdmFyIHcxID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MSA+Pj4gMjYpKSB8IDA7XG4gICAgdzEgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwyLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDIsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDIsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMikpIHwgMDtcbiAgICB2YXIgdzIgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcyID4+PiAyNikpIHwgMDtcbiAgICB3MiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDMgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDMsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsMywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoMywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoMykpIHwgMDtcbiAgICB2YXIgdzMgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHczID4+PiAyNikpIHwgMDtcbiAgICB3MyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDQgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDQsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNCwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNCwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDQpKSB8IDA7XG4gICAgdmFyIHc0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NCA+Pj4gMjYpKSB8IDA7XG4gICAgdzQgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw1LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDUsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDUsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNSkpIHwgMDtcbiAgICB2YXIgdzUgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc1ID4+PiAyNikpIHwgMDtcbiAgICB3NSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDYgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDYsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNiwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNiwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoNikpIHwgMDtcbiAgICB2YXIgdzYgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc2ID4+PiAyNikpIHwgMDtcbiAgICB3NiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDcgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDcsIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsNywgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoNywgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDcpKSB8IDA7XG4gICAgdmFyIHc3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NyA+Pj4gMjYpKSB8IDA7XG4gICAgdzcgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw4LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDgsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDgsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOCkpIHwgMDtcbiAgICB2YXIgdzggPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc4ID4+PiAyNikpIHwgMDtcbiAgICB3OCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDkgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMCk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgwKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwwKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgwKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmgxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDEpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDEpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDIsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgyLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwxLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDEsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwwLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDAsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzkgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHc5ID4+PiAyNikpIHwgMDtcbiAgICB3OSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDEpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwyKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgyKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTAgPj4+IDI2KSkgfCAwO1xuICAgIHcxMCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDExICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDIpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTEgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxMSA+Pj4gMjYpKSB8IDA7XG4gICAgdzExICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTIgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsMyk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmgzKTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmwzKSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmgzKTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDUsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNSwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg1LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw0LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDQsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwzLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDMsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTIgPj4+IDI2KSkgfCAwO1xuICAgIHcxMiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDQpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzEzID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTMgPj4+IDI2KSkgfCAwO1xuICAgIHcxMyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDUpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNSk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDgpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTQgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNCA+Pj4gMjYpKSB8IDA7XG4gICAgdzE0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTUgKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsNik7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg2KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw2KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg2KTtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDgsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsOCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg4LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw3LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDcsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw2LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDYsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTUgPj4+IDI2KSkgfCAwO1xuICAgIHcxNSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDcpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTYgPj4+IDI2KSkgfCAwO1xuICAgIHcxNiAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDgpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw5KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg5KSkgfCAwO1xuICAgIHZhciB3MTcgPSAoKChjICsgbG8pIHwgMCkgKyAoKG1pZCAmIDB4MWZmZikgPDwgMTMpKSB8IDA7XG4gICAgYyA9ICgoKGhpICsgKG1pZCA+Pj4gMTMpKSB8IDApICsgKHcxNyA+Pj4gMjYpKSB8IDA7XG4gICAgdzE3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMTggKi9cbiAgICBsbyA9IE1hdGguaW11bChhbDksIGJsOSk7XG4gICAgbWlkID0gTWF0aC5pbXVsKGFsOSwgYmg5KTtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOSwgYmw5KSkgfCAwO1xuICAgIGhpID0gTWF0aC5pbXVsKGFoOSwgYmg5KTtcbiAgICB2YXIgdzE4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTggPj4+IDI2KSkgfCAwO1xuICAgIHcxOCAmPSAweDNmZmZmZmY7XG4gICAgb1swXSA9IHcwO1xuICAgIG9bMV0gPSB3MTtcbiAgICBvWzJdID0gdzI7XG4gICAgb1szXSA9IHczO1xuICAgIG9bNF0gPSB3NDtcbiAgICBvWzVdID0gdzU7XG4gICAgb1s2XSA9IHc2O1xuICAgIG9bN10gPSB3NztcbiAgICBvWzhdID0gdzg7XG4gICAgb1s5XSA9IHc5O1xuICAgIG9bMTBdID0gdzEwO1xuICAgIG9bMTFdID0gdzExO1xuICAgIG9bMTJdID0gdzEyO1xuICAgIG9bMTNdID0gdzEzO1xuICAgIG9bMTRdID0gdzE0O1xuICAgIG9bMTVdID0gdzE1O1xuICAgIG9bMTZdID0gdzE2O1xuICAgIG9bMTddID0gdzE3O1xuICAgIG9bMThdID0gdzE4O1xuICAgIGlmIChjICE9PSAwKSB7XG4gICAgICBvWzE5XSA9IGM7XG4gICAgICBvdXQubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH07XG5cbiAgLy8gUG9seWZpbGwgY29tYlxuICBpZiAoIU1hdGguaW11bCkge1xuICAgIGNvbWIxME11bFRvID0gc21hbGxNdWxUbztcbiAgfVxuXG4gIGZ1bmN0aW9uIGJpZ011bFRvIChzZWxmLCBudW0sIG91dCkge1xuICAgIG91dC5uZWdhdGl2ZSA9IG51bS5uZWdhdGl2ZSBeIHNlbGYubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHNlbGYubGVuZ3RoICsgbnVtLmxlbmd0aDtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgdmFyIGhuY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGsgPSAwOyBrIDwgb3V0Lmxlbmd0aCAtIDE7IGsrKykge1xuICAgICAgLy8gU3VtIGFsbCB3b3JkcyB3aXRoIHRoZSBzYW1lIGBpICsgaiA9IGtgIGFuZCBhY2N1bXVsYXRlIGBuY2FycnlgLFxuICAgICAgLy8gbm90ZSB0aGF0IG5jYXJyeSBjb3VsZCBiZSA+PSAweDNmZmZmZmZcbiAgICAgIHZhciBuY2FycnkgPSBobmNhcnJ5O1xuICAgICAgaG5jYXJyeSA9IDA7XG4gICAgICB2YXIgcndvcmQgPSBjYXJyeSAmIDB4M2ZmZmZmZjtcbiAgICAgIHZhciBtYXhKID0gTWF0aC5taW4oaywgbnVtLmxlbmd0aCAtIDEpO1xuICAgICAgZm9yICh2YXIgaiA9IE1hdGgubWF4KDAsIGsgLSBzZWxmLmxlbmd0aCArIDEpOyBqIDw9IG1heEo7IGorKykge1xuICAgICAgICB2YXIgaSA9IGsgLSBqO1xuICAgICAgICB2YXIgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICB2YXIgYiA9IG51bS53b3Jkc1tqXSB8IDA7XG4gICAgICAgIHZhciByID0gYSAqIGI7XG5cbiAgICAgICAgdmFyIGxvID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgICAgbmNhcnJ5ID0gKG5jYXJyeSArICgociAvIDB4NDAwMDAwMCkgfCAwKSkgfCAwO1xuICAgICAgICBsbyA9IChsbyArIHJ3b3JkKSB8IDA7XG4gICAgICAgIHJ3b3JkID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAobG8gPj4+IDI2KSkgfCAwO1xuXG4gICAgICAgIGhuY2FycnkgKz0gbmNhcnJ5ID4+PiAyNjtcbiAgICAgICAgbmNhcnJ5ICY9IDB4M2ZmZmZmZjtcbiAgICAgIH1cbiAgICAgIG91dC53b3Jkc1trXSA9IHJ3b3JkO1xuICAgICAgY2FycnkgPSBuY2Fycnk7XG4gICAgICBuY2FycnkgPSBobmNhcnJ5O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIG91dC53b3Jkc1trXSA9IGNhcnJ5O1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgZnVuY3Rpb24ganVtYm9NdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgZmZ0bSA9IG5ldyBGRlRNKCk7XG4gICAgcmV0dXJuIGZmdG0ubXVscChzZWxmLCBudW0sIG91dCk7XG4gIH1cblxuICBCTi5wcm90b3R5cGUubXVsVG8gPSBmdW5jdGlvbiBtdWxUbyAobnVtLCBvdXQpIHtcbiAgICB2YXIgcmVzO1xuICAgIHZhciBsZW4gPSB0aGlzLmxlbmd0aCArIG51bS5sZW5ndGg7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxMCAmJiBudW0ubGVuZ3RoID09PSAxMCkge1xuICAgICAgcmVzID0gY29tYjEwTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgNjMpIHtcbiAgICAgIHJlcyA9IHNtYWxsTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSBpZiAobGVuIDwgMTAyNCkge1xuICAgICAgcmVzID0gYmlnTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSBqdW1ib011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvb2xleS1UdWtleSBhbGdvcml0aG0gZm9yIEZGVFxuICAvLyBzbGlnaHRseSByZXZpc2l0ZWQgdG8gcmVseSBvbiBsb29waW5nIGluc3RlYWQgb2YgcmVjdXJzaW9uXG5cbiAgZnVuY3Rpb24gRkZUTSAoeCwgeSkge1xuICAgIHRoaXMueCA9IHg7XG4gICAgdGhpcy55ID0geTtcbiAgfVxuXG4gIEZGVE0ucHJvdG90eXBlLm1ha2VSQlQgPSBmdW5jdGlvbiBtYWtlUkJUIChOKSB7XG4gICAgdmFyIHQgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGwgPSBCTi5wcm90b3R5cGUuX2NvdW50Qml0cyhOKSAtIDE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHRbaV0gPSB0aGlzLnJldkJpbihpLCBsLCBOKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbiAgfTtcblxuICAvLyBSZXR1cm5zIGJpbmFyeS1yZXZlcnNlZCByZXByZXNlbnRhdGlvbiBvZiBgeGBcbiAgRkZUTS5wcm90b3R5cGUucmV2QmluID0gZnVuY3Rpb24gcmV2QmluICh4LCBsLCBOKSB7XG4gICAgaWYgKHggPT09IDAgfHwgeCA9PT0gTiAtIDEpIHJldHVybiB4O1xuXG4gICAgdmFyIHJiID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykge1xuICAgICAgcmIgfD0gKHggJiAxKSA8PCAobCAtIGkgLSAxKTtcbiAgICAgIHggPj49IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJiO1xuICB9O1xuXG4gIC8vIFBlcmZvcm1zIFwidHdlZWRsaW5nXCIgcGhhc2UsIHRoZXJlZm9yZSAnZW11bGF0aW5nJ1xuICAvLyBiZWhhdmlvdXIgb2YgdGhlIHJlY3Vyc2l2ZSBhbGdvcml0aG1cbiAgRkZUTS5wcm90b3R5cGUucGVybXV0ZSA9IGZ1bmN0aW9uIHBlcm11dGUgKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcnR3c1tpXSA9IHJ3c1tyYnRbaV1dO1xuICAgICAgaXR3c1tpXSA9IGl3c1tyYnRbaV1dO1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS50cmFuc2Zvcm0gPSBmdW5jdGlvbiB0cmFuc2Zvcm0gKHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOLCByYnQpIHtcbiAgICB0aGlzLnBlcm11dGUocmJ0LCByd3MsIGl3cywgcnR3cywgaXR3cywgTik7XG5cbiAgICBmb3IgKHZhciBzID0gMTsgcyA8IE47IHMgPDw9IDEpIHtcbiAgICAgIHZhciBsID0gcyA8PCAxO1xuXG4gICAgICB2YXIgcnR3ZGYgPSBNYXRoLmNvcygyICogTWF0aC5QSSAvIGwpO1xuICAgICAgdmFyIGl0d2RmID0gTWF0aC5zaW4oMiAqIE1hdGguUEkgLyBsKTtcblxuICAgICAgZm9yICh2YXIgcCA9IDA7IHAgPCBOOyBwICs9IGwpIHtcbiAgICAgICAgdmFyIHJ0d2RmXyA9IHJ0d2RmO1xuICAgICAgICB2YXIgaXR3ZGZfID0gaXR3ZGY7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzOyBqKyspIHtcbiAgICAgICAgICB2YXIgcmUgPSBydHdzW3AgKyBqXTtcbiAgICAgICAgICB2YXIgaWUgPSBpdHdzW3AgKyBqXTtcblxuICAgICAgICAgIHZhciBybyA9IHJ0d3NbcCArIGogKyBzXTtcbiAgICAgICAgICB2YXIgaW8gPSBpdHdzW3AgKyBqICsgc107XG5cbiAgICAgICAgICB2YXIgcnggPSBydHdkZl8gKiBybyAtIGl0d2RmXyAqIGlvO1xuXG4gICAgICAgICAgaW8gPSBydHdkZl8gKiBpbyArIGl0d2RmXyAqIHJvO1xuICAgICAgICAgIHJvID0gcng7XG5cbiAgICAgICAgICBydHdzW3AgKyBqXSA9IHJlICsgcm87XG4gICAgICAgICAgaXR3c1twICsgal0gPSBpZSArIGlvO1xuXG4gICAgICAgICAgcnR3c1twICsgaiArIHNdID0gcmUgLSBybztcbiAgICAgICAgICBpdHdzW3AgKyBqICsgc10gPSBpZSAtIGlvO1xuXG4gICAgICAgICAgLyoganNoaW50IG1heGRlcHRoIDogZmFsc2UgKi9cbiAgICAgICAgICBpZiAoaiAhPT0gbCkge1xuICAgICAgICAgICAgcnggPSBydHdkZiAqIHJ0d2RmXyAtIGl0d2RmICogaXR3ZGZfO1xuXG4gICAgICAgICAgICBpdHdkZl8gPSBydHdkZiAqIGl0d2RmXyArIGl0d2RmICogcnR3ZGZfO1xuICAgICAgICAgICAgcnR3ZGZfID0gcng7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLmd1ZXNzTGVuMTNiID0gZnVuY3Rpb24gZ3Vlc3NMZW4xM2IgKG4sIG0pIHtcbiAgICB2YXIgTiA9IE1hdGgubWF4KG0sIG4pIHwgMTtcbiAgICB2YXIgb2RkID0gTiAmIDE7XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoTiA9IE4gLyAyIHwgMDsgTjsgTiA9IE4gPj4+IDEpIHtcbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICByZXR1cm4gMSA8PCBpICsgMSArIG9kZDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb25qdWdhdGUgPSBmdW5jdGlvbiBjb25qdWdhdGUgKHJ3cywgaXdzLCBOKSB7XG4gICAgaWYgKE4gPD0gMSkgcmV0dXJuO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOIC8gMjsgaSsrKSB7XG4gICAgICB2YXIgdCA9IHJ3c1tpXTtcblxuICAgICAgcndzW2ldID0gcndzW04gLSBpIC0gMV07XG4gICAgICByd3NbTiAtIGkgLSAxXSA9IHQ7XG5cbiAgICAgIHQgPSBpd3NbaV07XG5cbiAgICAgIGl3c1tpXSA9IC1pd3NbTiAtIGkgLSAxXTtcbiAgICAgIGl3c1tOIC0gaSAtIDFdID0gLXQ7XG4gICAgfVxuICB9O1xuXG4gIEZGVE0ucHJvdG90eXBlLm5vcm1hbGl6ZTEzYiA9IGZ1bmN0aW9uIG5vcm1hbGl6ZTEzYiAod3MsIE4pIHtcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHcgPSBNYXRoLnJvdW5kKHdzWzIgKiBpICsgMV0gLyBOKSAqIDB4MjAwMCArXG4gICAgICAgIE1hdGgucm91bmQod3NbMiAqIGldIC8gTikgK1xuICAgICAgICBjYXJyeTtcblxuICAgICAgd3NbaV0gPSB3ICYgMHgzZmZmZmZmO1xuXG4gICAgICBpZiAodyA8IDB4NDAwMDAwMCkge1xuICAgICAgICBjYXJyeSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYXJyeSA9IHcgLyAweDQwMDAwMDAgfCAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB3cztcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5jb252ZXJ0MTNiID0gZnVuY3Rpb24gY29udmVydDEzYiAod3MsIGxlbiwgcndzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjYXJyeSA9IGNhcnJ5ICsgKHdzW2ldIHwgMCk7XG5cbiAgICAgIHJ3c1syICogaV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgICByd3NbMiAqIGkgKyAxXSA9IGNhcnJ5ICYgMHgxZmZmOyBjYXJyeSA9IGNhcnJ5ID4+PiAxMztcbiAgICB9XG5cbiAgICAvLyBQYWQgd2l0aCB6ZXJvZXNcbiAgICBmb3IgKGkgPSAyICogbGVuOyBpIDwgTjsgKytpKSB7XG4gICAgICByd3NbaV0gPSAwO1xuICAgIH1cblxuICAgIGFzc2VydChjYXJyeSA9PT0gMCk7XG4gICAgYXNzZXJ0KChjYXJyeSAmIH4weDFmZmYpID09PSAwKTtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5zdHViID0gZnVuY3Rpb24gc3R1YiAoTikge1xuICAgIHZhciBwaCA9IG5ldyBBcnJheShOKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgcGhbaV0gPSAwO1xuICAgIH1cblxuICAgIHJldHVybiBwaDtcbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5tdWxwID0gZnVuY3Rpb24gbXVscCAoeCwgeSwgb3V0KSB7XG4gICAgdmFyIE4gPSAyICogdGhpcy5ndWVzc0xlbjEzYih4Lmxlbmd0aCwgeS5sZW5ndGgpO1xuXG4gICAgdmFyIHJidCA9IHRoaXMubWFrZVJCVChOKTtcblxuICAgIHZhciBfID0gdGhpcy5zdHViKE4pO1xuXG4gICAgdmFyIHJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgcndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgaXdzdCA9IG5ldyBBcnJheShOKTtcblxuICAgIHZhciBucndzID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBucndzdCA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbml3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgcm13cyA9IG91dC53b3JkcztcbiAgICBybXdzLmxlbmd0aCA9IE47XG5cbiAgICB0aGlzLmNvbnZlcnQxM2IoeC53b3JkcywgeC5sZW5ndGgsIHJ3cywgTik7XG4gICAgdGhpcy5jb252ZXJ0MTNiKHkud29yZHMsIHkubGVuZ3RoLCBucndzLCBOKTtcblxuICAgIHRoaXMudHJhbnNmb3JtKHJ3cywgXywgcndzdCwgaXdzdCwgTiwgcmJ0KTtcbiAgICB0aGlzLnRyYW5zZm9ybShucndzLCBfLCBucndzdCwgbml3c3QsIE4sIHJidCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgdmFyIHJ4ID0gcndzdFtpXSAqIG5yd3N0W2ldIC0gaXdzdFtpXSAqIG5pd3N0W2ldO1xuICAgICAgaXdzdFtpXSA9IHJ3c3RbaV0gKiBuaXdzdFtpXSArIGl3c3RbaV0gKiBucndzdFtpXTtcbiAgICAgIHJ3c3RbaV0gPSByeDtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmp1Z2F0ZShyd3N0LCBpd3N0LCBOKTtcbiAgICB0aGlzLnRyYW5zZm9ybShyd3N0LCBpd3N0LCBybXdzLCBfLCBOLCByYnQpO1xuICAgIHRoaXMuY29uanVnYXRlKHJtd3MsIF8sIE4pO1xuICAgIHRoaXMubm9ybWFsaXplMTNiKHJtd3MsIE4pO1xuXG4gICAgb3V0Lm5lZ2F0aXZlID0geC5uZWdhdGl2ZSBeIHkubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IHgubGVuZ3RoICsgeS5sZW5ndGg7XG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIE11bHRpcGx5IGB0aGlzYCBieSBgbnVtYFxuICBCTi5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChudW0pIHtcbiAgICB2YXIgb3V0ID0gbmV3IEJOKG51bGwpO1xuICAgIG91dC53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCArIG51bS5sZW5ndGgpO1xuICAgIHJldHVybiB0aGlzLm11bFRvKG51bSwgb3V0KTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBlbXBsb3lpbmcgRkZUXG4gIEJOLnByb3RvdHlwZS5tdWxmID0gZnVuY3Rpb24gbXVsZiAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gSW4tcGxhY2UgTXVsdGlwbGljYXRpb25cbiAgQk4ucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLm11bFRvKG51bSwgdGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmltdWxuID0gZnVuY3Rpb24gaW11bG4gKG51bSkge1xuICAgIGFzc2VydCh0eXBlb2YgbnVtID09PSAnbnVtYmVyJyk7XG4gICAgYXNzZXJ0KG51bSA8IDB4NDAwMDAwMCk7XG5cbiAgICAvLyBDYXJyeVxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9ICh0aGlzLndvcmRzW2ldIHwgMCkgKiBudW07XG4gICAgICB2YXIgbG8gPSAodyAmIDB4M2ZmZmZmZikgKyAoY2FycnkgJiAweDNmZmZmZmYpO1xuICAgICAgY2FycnkgPj49IDI2O1xuICAgICAgY2FycnkgKz0gKHcgLyAweDQwMDAwMDApIHwgMDtcbiAgICAgIC8vIE5PVEU6IGxvIGlzIDI3Yml0IG1heGltdW1cbiAgICAgIGNhcnJ5ICs9IGxvID4+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm11bG4gPSBmdW5jdGlvbiBtdWxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltdWxuKG51bSk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKCkge1xuICAgIHJldHVybiB0aGlzLm11bCh0aGlzKTtcbiAgfTtcblxuICAvLyBgdGhpc2AgKiBgdGhpc2AgaW4tcGxhY2VcbiAgQk4ucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKHRoaXMuY2xvbmUoKSk7XG4gIH07XG5cbiAgLy8gTWF0aC5wb3coYHRoaXNgLCBgbnVtYClcbiAgQk4ucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAobnVtKSB7XG4gICAgdmFyIHcgPSB0b0JpdEFycmF5KG51bSk7XG4gICAgaWYgKHcubGVuZ3RoID09PSAwKSByZXR1cm4gbmV3IEJOKDEpO1xuXG4gICAgLy8gU2tpcCBsZWFkaW5nIHplcm9lc1xuICAgIHZhciByZXMgPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdy5sZW5ndGg7IGkrKywgcmVzID0gcmVzLnNxcigpKSB7XG4gICAgICBpZiAod1tpXSAhPT0gMCkgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKCsraSA8IHcubGVuZ3RoKSB7XG4gICAgICBmb3IgKHZhciBxID0gcmVzLnNxcigpOyBpIDwgdy5sZW5ndGg7IGkrKywgcSA9IHEuc3FyKCkpIHtcbiAgICAgICAgaWYgKHdbaV0gPT09IDApIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHJlcy5tdWwocSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0IGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXNobG4gPSBmdW5jdGlvbiBpdXNobG4gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG4gICAgdmFyIGNhcnJ5TWFzayA9ICgweDNmZmZmZmYgPj4+ICgyNiAtIHIpKSA8PCAoMjYgLSByKTtcbiAgICB2YXIgaTtcblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbmV3Q2FycnkgPSB0aGlzLndvcmRzW2ldICYgY2FycnlNYXNrO1xuICAgICAgICB2YXIgYyA9ICgodGhpcy53b3Jkc1tpXSB8IDApIC0gbmV3Q2FycnkpIDw8IHI7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjIHwgY2Fycnk7XG4gICAgICAgIGNhcnJ5ID0gbmV3Q2FycnkgPj4+ICgyNiAtIHIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2FycnkpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IGNhcnJ5O1xuICAgICAgICB0aGlzLmxlbmd0aCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzICE9PSAwKSB7XG4gICAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIHNdID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IHM7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggKz0gcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hsbiA9IGZ1bmN0aW9uIGlzaGxuIChiaXRzKSB7XG4gICAgLy8gVE9ETyhpbmR1dG55KTogaW1wbGVtZW50IG1lXG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodCBpbi1wbGFjZVxuICAvLyBOT1RFOiBgaGludGAgaXMgYSBsb3dlc3QgYml0IGJlZm9yZSB0cmFpbGluZyB6ZXJvZXNcbiAgLy8gTk9URTogaWYgYGV4dGVuZGVkYCBpcyBwcmVzZW50IC0gaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBkZXN0cm95ZWQgYml0c1xuICBCTi5wcm90b3R5cGUuaXVzaHJuID0gZnVuY3Rpb24gaXVzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgaDtcbiAgICBpZiAoaGludCkge1xuICAgICAgaCA9IChoaW50IC0gKGhpbnQgJSAyNikpIC8gMjY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGggPSAwO1xuICAgIH1cblxuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gTWF0aC5taW4oKGJpdHMgLSByKSAvIDI2LCB0aGlzLmxlbmd0aCk7XG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgdmFyIG1hc2tlZFdvcmRzID0gZXh0ZW5kZWQ7XG5cbiAgICBoIC09IHM7XG4gICAgaCA9IE1hdGgubWF4KDAsIGgpO1xuXG4gICAgLy8gRXh0ZW5kZWQgbW9kZSwgY29weSBtYXNrZWQgcGFydFxuICAgIGlmIChtYXNrZWRXb3Jkcykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgbWFza2VkV29yZHMud29yZHNbaV0gPSB0aGlzLndvcmRzW2ldO1xuICAgICAgfVxuICAgICAgbWFza2VkV29yZHMubGVuZ3RoID0gcztcbiAgICB9XG5cbiAgICBpZiAocyA9PT0gMCkge1xuICAgICAgLy8gTm8tb3AsIHdlIHNob3VsZCBub3QgbW92ZSBhbnl0aGluZyBhdCBhbGxcbiAgICB9IGVsc2UgaWYgKHRoaXMubGVuZ3RoID4gcykge1xuICAgICAgdGhpcy5sZW5ndGggLT0gcztcbiAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSB0aGlzLndvcmRzW2kgKyBzXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSB0aGlzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiAoY2FycnkgIT09IDAgfHwgaSA+PSBoKTsgaS0tKSB7XG4gICAgICB2YXIgd29yZCA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IChjYXJyeSA8PCAoMjYgLSByKSkgfCAod29yZCA+Pj4gcik7XG4gICAgICBjYXJyeSA9IHdvcmQgJiBtYXNrO1xuICAgIH1cblxuICAgIC8vIFB1c2ggY2FycmllZCBiaXRzIGFzIGEgbWFza1xuICAgIGlmIChtYXNrZWRXb3JkcyAmJiBjYXJyeSAhPT0gMCkge1xuICAgICAgbWFza2VkV29yZHMud29yZHNbbWFza2VkV29yZHMubGVuZ3RoKytdID0gY2Fycnk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gMDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc2hybiA9IGZ1bmN0aW9uIGlzaHJuIChiaXRzLCBoaW50LCBleHRlbmRlZCkge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNocm4oYml0cywgaGludCwgZXh0ZW5kZWQpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LWxlZnRcbiAgQk4ucHJvdG90eXBlLnNobG4gPSBmdW5jdGlvbiBzaGxuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc2hsbihiaXRzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudXNobG4gPSBmdW5jdGlvbiB1c2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXVzaGxuKGJpdHMpO1xuICB9O1xuXG4gIC8vIFNoaWZ0LXJpZ2h0XG4gIEJOLnByb3RvdHlwZS5zaHJuID0gZnVuY3Rpb24gc2hybiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNocm4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaHJuID0gZnVuY3Rpb24gdXNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hybihiaXRzKTtcbiAgfTtcblxuICAvLyBUZXN0IGlmIG4gYml0IGlzIHNldFxuICBCTi5wcm90b3R5cGUudGVzdG4gPSBmdW5jdGlvbiB0ZXN0biAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInICYmIGJpdCA+PSAwKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBDaGVjayBiaXQgYW5kIHJldHVyblxuICAgIHZhciB3ID0gdGhpcy53b3Jkc1tzXTtcblxuICAgIHJldHVybiAhISh3ICYgcSk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG9ubHkgbG93ZXJzIGJpdHMgb2YgbnVtYmVyIChpbi1wbGFjZSlcbiAgQk4ucHJvdG90eXBlLmltYXNrbiA9IGZ1bmN0aW9uIGltYXNrbiAoYml0cykge1xuICAgIGFzc2VydCh0eXBlb2YgYml0cyA9PT0gJ251bWJlcicgJiYgYml0cyA+PSAwKTtcbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IChiaXRzIC0gcikgLyAyNjtcblxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAnaW1hc2tuIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZSBudW1iZXJzJyk7XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHMrKztcbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1pbihzLCB0aGlzLmxlbmd0aCk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIG1hc2sgPSAweDNmZmZmZmYgXiAoKDB4M2ZmZmZmZiA+Pj4gcikgPDwgcik7XG4gICAgICB0aGlzLndvcmRzW3RoaXMubGVuZ3RoIC0gMV0gJj0gbWFzaztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlclxuICBCTi5wcm90b3R5cGUubWFza24gPSBmdW5jdGlvbiBtYXNrbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaW1hc2tuKGJpdHMpO1xuICB9O1xuXG4gIC8vIEFkZCBwbGFpbiBudW1iZXIgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pYWRkbiA9IGZ1bmN0aW9uIGlhZGRuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pc3VibigtbnVtKTtcblxuICAgIC8vIFBvc3NpYmxlIHNpZ24gY2hhbmdlXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSAmJiAodGhpcy53b3Jkc1swXSB8IDApIDwgbnVtKSB7XG4gICAgICAgIHRoaXMud29yZHNbMF0gPSBudW0gLSAodGhpcy53b3Jkc1swXSB8IDApO1xuICAgICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pc3VibihudW0pO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgd2l0aG91dCBjaGVja3NcbiAgICByZXR1cm4gdGhpcy5faWFkZG4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lhZGRuID0gZnVuY3Rpb24gX2lhZGRuIChudW0pIHtcbiAgICB0aGlzLndvcmRzWzBdICs9IG51bTtcblxuICAgIC8vIENhcnJ5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldID49IDB4NDAwMDAwMDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldIC09IDB4NDAwMDAwMDtcbiAgICAgIGlmIChpID09PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gPSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0rKztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLm1heCh0aGlzLmxlbmd0aCwgaSArIDEpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgcGxhaW4gbnVtYmVyIGBudW1gIGZyb20gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5pc3VibiA9IGZ1bmN0aW9uIGlzdWJuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuICAgIGlmIChudW0gPCAwKSByZXR1cm4gdGhpcy5pYWRkbigtbnVtKTtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaWFkZG4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy53b3Jkc1swXSAtPSBudW07XG5cbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA8IDApIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAtdGhpcy53b3Jkc1swXTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDYXJyeVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAmJiB0aGlzLndvcmRzW2ldIDwgMDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gKz0gMHg0MDAwMDAwO1xuICAgICAgICB0aGlzLndvcmRzW2kgKyAxXSAtPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmFkZG4gPSBmdW5jdGlvbiBhZGRuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnN1Ym4gPSBmdW5jdGlvbiBzdWJuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzdWJuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhYnMgPSBmdW5jdGlvbiBpYWJzICgpIHtcbiAgICB0aGlzLm5lZ2F0aXZlID0gMDtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiBhYnMgKCkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWFicygpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faXNobG5zdWJtdWwgPSBmdW5jdGlvbiBfaXNobG5zdWJtdWwgKG51bSwgbXVsLCBzaGlmdCkge1xuICAgIHZhciBsZW4gPSBudW0ubGVuZ3RoICsgc2hpZnQ7XG4gICAgdmFyIGk7XG5cbiAgICB0aGlzLl9leHBhbmQobGVuKTtcblxuICAgIHZhciB3O1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgdmFyIHJpZ2h0ID0gKG51bS53b3Jkc1tpXSB8IDApICogbXVsO1xuICAgICAgdyAtPSByaWdodCAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gKHcgPj4gMjYpIC0gKChyaWdodCAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICAgIHRoaXMud29yZHNbaSArIHNoaWZ0XSA9IHcgJiAweDNmZmZmZmY7XG4gICAgfVxuICAgIGZvciAoOyBpIDwgdGhpcy5sZW5ndGggLSBzaGlmdDsgaSsrKSB7XG4gICAgICB3ID0gKHRoaXMud29yZHNbaSArIHNoaWZ0XSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cblxuICAgIGlmIChjYXJyeSA9PT0gMCkgcmV0dXJuIHRoaXMuc3RyaXAoKTtcblxuICAgIC8vIFN1YnRyYWN0aW9uIG92ZXJmbG93XG4gICAgYXNzZXJ0KGNhcnJ5ID09PSAtMSk7XG4gICAgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3ID0gLSh0aGlzLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+PiAyNjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICB0aGlzLm5lZ2F0aXZlID0gMTtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl93b3JkRGl2ID0gZnVuY3Rpb24gX3dvcmREaXYgKG51bSwgbW9kZSkge1xuICAgIHZhciBzaGlmdCA9IHRoaXMubGVuZ3RoIC0gbnVtLmxlbmd0aDtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtO1xuXG4gICAgLy8gTm9ybWFsaXplXG4gICAgdmFyIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgdmFyIGJoaUJpdHMgPSB0aGlzLl9jb3VudEJpdHMoYmhpKTtcbiAgICBzaGlmdCA9IDI2IC0gYmhpQml0cztcbiAgICBpZiAoc2hpZnQgIT09IDApIHtcbiAgICAgIGIgPSBiLnVzaGxuKHNoaWZ0KTtcbiAgICAgIGEuaXVzaGxuKHNoaWZ0KTtcbiAgICAgIGJoaSA9IGIud29yZHNbYi5sZW5ndGggLSAxXSB8IDA7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZSBxdW90aWVudFxuICAgIHZhciBtID0gYS5sZW5ndGggLSBiLmxlbmd0aDtcbiAgICB2YXIgcTtcblxuICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgcSA9IG5ldyBCTihudWxsKTtcbiAgICAgIHEubGVuZ3RoID0gbSArIDE7XG4gICAgICBxLndvcmRzID0gbmV3IEFycmF5KHEubGVuZ3RoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcS5sZW5ndGg7IGkrKykge1xuICAgICAgICBxLndvcmRzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGlmZiA9IGEuY2xvbmUoKS5faXNobG5zdWJtdWwoYiwgMSwgbSk7XG4gICAgaWYgKGRpZmYubmVnYXRpdmUgPT09IDApIHtcbiAgICAgIGEgPSBkaWZmO1xuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1ttXSA9IDE7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IG0gLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgdmFyIHFqID0gKGEud29yZHNbYi5sZW5ndGggKyBqXSB8IDApICogMHg0MDAwMDAwICtcbiAgICAgICAgKGEud29yZHNbYi5sZW5ndGggKyBqIC0gMV0gfCAwKTtcblxuICAgICAgLy8gTk9URTogKHFqIC8gYmhpKSBpcyAoMHgzZmZmZmZmICogMHg0MDAwMDAwICsgMHgzZmZmZmZmKSAvIDB4MjAwMDAwMCBtYXhcbiAgICAgIC8vICgweDdmZmZmZmYpXG4gICAgICBxaiA9IE1hdGgubWluKChxaiAvIGJoaSkgfCAwLCAweDNmZmZmZmYpO1xuXG4gICAgICBhLl9pc2hsbnN1Ym11bChiLCBxaiwgaik7XG4gICAgICB3aGlsZSAoYS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICBxai0tO1xuICAgICAgICBhLm5lZ2F0aXZlID0gMDtcbiAgICAgICAgYS5faXNobG5zdWJtdWwoYiwgMSwgaik7XG4gICAgICAgIGlmICghYS5pc1plcm8oKSkge1xuICAgICAgICAgIGEubmVnYXRpdmUgXj0gMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHEpIHtcbiAgICAgICAgcS53b3Jkc1tqXSA9IHFqO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocSkge1xuICAgICAgcS5zdHJpcCgpO1xuICAgIH1cbiAgICBhLnN0cmlwKCk7XG5cbiAgICAvLyBEZW5vcm1hbGl6ZVxuICAgIGlmIChtb2RlICE9PSAnZGl2JyAmJiBzaGlmdCAhPT0gMCkge1xuICAgICAgYS5pdXNocm4oc2hpZnQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBkaXY6IHEgfHwgbnVsbCxcbiAgICAgIG1vZDogYVxuICAgIH07XG4gIH07XG5cbiAgLy8gTk9URTogMSkgYG1vZGVgIGNhbiBiZSBzZXQgdG8gYG1vZGAgdG8gcmVxdWVzdCBtb2Qgb25seSxcbiAgLy8gICAgICAgdG8gYGRpdmAgdG8gcmVxdWVzdCBkaXYgb25seSwgb3IgYmUgYWJzZW50IHRvXG4gIC8vICAgICAgIHJlcXVlc3QgYm90aCBkaXYgJiBtb2RcbiAgLy8gICAgICAgMikgYHBvc2l0aXZlYCBpcyB0cnVlIGlmIHVuc2lnbmVkIG1vZCBpcyByZXF1ZXN0ZWRcbiAgQk4ucHJvdG90eXBlLmRpdm1vZCA9IGZ1bmN0aW9uIGRpdm1vZCAobnVtLCBtb2RlLCBwb3NpdGl2ZSkge1xuICAgIGFzc2VydCghbnVtLmlzWmVybygpKTtcblxuICAgIGlmICh0aGlzLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IG5ldyBCTigwKSxcbiAgICAgICAgbW9kOiBuZXcgQk4oMClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdmFyIGRpdiwgbW9kLCByZXM7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDAgJiYgbnVtLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0sIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgIT09ICdkaXYnKSB7XG4gICAgICAgIG1vZCA9IHJlcy5tb2QubmVnKCk7XG4gICAgICAgIGlmIChwb3NpdGl2ZSAmJiBtb2QubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgICBtb2QuaWFkZChudW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnbW9kJykge1xuICAgICAgICBkaXYgPSByZXMuZGl2Lm5lZygpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiByZXMubW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICgodGhpcy5uZWdhdGl2ZSAmIG51bS5uZWdhdGl2ZSkgIT09IDApIHtcbiAgICAgIHJlcyA9IHRoaXMubmVnKCkuZGl2bW9kKG51bS5uZWcoKSwgbW9kZSk7XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlzdWIobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHJlcy5kaXYsXG4gICAgICAgIG1vZDogbW9kXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIEJvdGggbnVtYmVycyBhcmUgcG9zaXRpdmUgYXQgdGhpcyBwb2ludFxuXG4gICAgLy8gU3RyaXAgYm90aCBudW1iZXJzIHRvIGFwcHJveGltYXRlIHNoaWZ0IHZhbHVlXG4gICAgaWYgKG51bS5sZW5ndGggPiB0aGlzLmxlbmd0aCB8fCB0aGlzLmNtcChudW0pIDwgMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogdGhpc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBWZXJ5IHNob3J0IHJlZHVjdGlvblxuICAgIGlmIChudW0ubGVuZ3RoID09PSAxKSB7XG4gICAgICBpZiAobW9kZSA9PT0gJ2RpdicpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICAgIG1vZDogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobW9kZSA9PT0gJ21vZCcpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkaXY6IG51bGwsXG4gICAgICAgICAgbW9kOiBuZXcgQk4odGhpcy5tb2RuKG51bS53b3Jkc1swXSkpXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogdGhpcy5kaXZuKG51bS53b3Jkc1swXSksXG4gICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fd29yZERpdihudW0sIG1vZGUpO1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgIC8gYG51bWBcbiAgQk4ucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uIGRpdiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ2RpdicsIGZhbHNlKS5kaXY7XG4gIH07XG5cbiAgLy8gRmluZCBgdGhpc2AgJSBgbnVtYFxuICBCTi5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgZmFsc2UpLm1vZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudW1vZCA9IGZ1bmN0aW9uIHVtb2QgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdtb2QnLCB0cnVlKS5tb2Q7XG4gIH07XG5cbiAgLy8gRmluZCBSb3VuZChgdGhpc2AgLyBgbnVtYClcbiAgQk4ucHJvdG90eXBlLmRpdlJvdW5kID0gZnVuY3Rpb24gZGl2Um91bmQgKG51bSkge1xuICAgIHZhciBkbSA9IHRoaXMuZGl2bW9kKG51bSk7XG5cbiAgICAvLyBGYXN0IGNhc2UgLSBleGFjdCBkaXZpc2lvblxuICAgIGlmIChkbS5tb2QuaXNaZXJvKCkpIHJldHVybiBkbS5kaXY7XG5cbiAgICB2YXIgbW9kID0gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0ubW9kLmlzdWIobnVtKSA6IGRtLm1vZDtcblxuICAgIHZhciBoYWxmID0gbnVtLnVzaHJuKDEpO1xuICAgIHZhciByMiA9IG51bS5hbmRsbigxKTtcbiAgICB2YXIgY21wID0gbW9kLmNtcChoYWxmKTtcblxuICAgIC8vIFJvdW5kIGRvd25cbiAgICBpZiAoY21wIDwgMCB8fCByMiA9PT0gMSAmJiBjbXAgPT09IDApIHJldHVybiBkbS5kaXY7XG5cbiAgICAvLyBSb3VuZCB1cFxuICAgIHJldHVybiBkbS5kaXYubmVnYXRpdmUgIT09IDAgPyBkbS5kaXYuaXN1Ym4oMSkgOiBkbS5kaXYuaWFkZG4oMSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLm1vZG4gPSBmdW5jdGlvbiBtb2RuIChudW0pIHtcbiAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZik7XG4gICAgdmFyIHAgPSAoMSA8PCAyNikgJSBudW07XG5cbiAgICB2YXIgYWNjID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgYWNjID0gKHAgKiBhY2MgKyAodGhpcy53b3Jkc1tpXSB8IDApKSAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIGRpdmlzaW9uIGJ5IG51bWJlclxuICBCTi5wcm90b3R5cGUuaWRpdm4gPSBmdW5jdGlvbiBpZGl2biAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICsgY2FycnkgKiAweDQwMDAwMDA7XG4gICAgICB0aGlzLndvcmRzW2ldID0gKHcgLyBudW0pIHwgMDtcbiAgICAgIGNhcnJ5ID0gdyAlIG51bTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5kaXZuID0gZnVuY3Rpb24gZGl2biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pZGl2bihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lZ2NkID0gZnVuY3Rpb24gZWdjZCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIHggPSB0aGlzO1xuICAgIHZhciB5ID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKHgubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHggPSB4LnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHggPSB4LmNsb25lKCk7XG4gICAgfVxuXG4gICAgLy8gQSAqIHggKyBCICogeSA9IHhcbiAgICB2YXIgQSA9IG5ldyBCTigxKTtcbiAgICB2YXIgQiA9IG5ldyBCTigwKTtcblxuICAgIC8vIEMgKiB4ICsgRCAqIHkgPSB5XG4gICAgdmFyIEMgPSBuZXcgQk4oMCk7XG4gICAgdmFyIEQgPSBuZXcgQk4oMSk7XG5cbiAgICB2YXIgZyA9IDA7XG5cbiAgICB3aGlsZSAoeC5pc0V2ZW4oKSAmJiB5LmlzRXZlbigpKSB7XG4gICAgICB4Lml1c2hybigxKTtcbiAgICAgIHkuaXVzaHJuKDEpO1xuICAgICAgKytnO1xuICAgIH1cblxuICAgIHZhciB5cCA9IHkuY2xvbmUoKTtcbiAgICB2YXIgeHAgPSB4LmNsb25lKCk7XG5cbiAgICB3aGlsZSAoIXguaXNaZXJvKCkpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7ICh4LndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgeC5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEEuaXNPZGQoKSB8fCBCLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEEuaWFkZCh5cCk7XG4gICAgICAgICAgICBCLmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEEuaXVzaHJuKDEpO1xuICAgICAgICAgIEIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGogPSAwLCBqbSA9IDE7ICh5LndvcmRzWzBdICYgam0pID09PSAwICYmIGogPCAyNjsgKytqLCBqbSA8PD0gMSk7XG4gICAgICBpZiAoaiA+IDApIHtcbiAgICAgICAgeS5pdXNocm4oaik7XG4gICAgICAgIHdoaWxlIChqLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKEMuaXNPZGQoKSB8fCBELmlzT2RkKCkpIHtcbiAgICAgICAgICAgIEMuaWFkZCh5cCk7XG4gICAgICAgICAgICBELmlzdWIoeHApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIEMuaXVzaHJuKDEpO1xuICAgICAgICAgIEQuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh4LmNtcCh5KSA+PSAwKSB7XG4gICAgICAgIHguaXN1Yih5KTtcbiAgICAgICAgQS5pc3ViKEMpO1xuICAgICAgICBCLmlzdWIoRCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB5LmlzdWIoeCk7XG4gICAgICAgIEMuaXN1YihBKTtcbiAgICAgICAgRC5pc3ViKEIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhOiBDLFxuICAgICAgYjogRCxcbiAgICAgIGdjZDogeS5pdXNobG4oZylcbiAgICB9O1xuICB9O1xuXG4gIC8vIFRoaXMgaXMgcmVkdWNlZCBpbmNhcm5hdGlvbiBvZiB0aGUgYmluYXJ5IEVFQVxuICAvLyBhYm92ZSwgZGVzaWduYXRlZCB0byBpbnZlcnQgbWVtYmVycyBvZiB0aGVcbiAgLy8gX3ByaW1lXyBmaWVsZHMgRihwKSBhdCBhIG1heGltYWwgc3BlZWRcbiAgQk4ucHJvdG90eXBlLl9pbnZtcCA9IGZ1bmN0aW9uIF9pbnZtcCAocCkge1xuICAgIGFzc2VydChwLm5lZ2F0aXZlID09PSAwKTtcbiAgICBhc3NlcnQoIXAuaXNaZXJvKCkpO1xuXG4gICAgdmFyIGEgPSB0aGlzO1xuICAgIHZhciBiID0gcC5jbG9uZSgpO1xuXG4gICAgaWYgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGEgPSBhLnVtb2QocCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgdmFyIHgxID0gbmV3IEJOKDEpO1xuICAgIHZhciB4MiA9IG5ldyBCTigwKTtcblxuICAgIHZhciBkZWx0YSA9IGIuY2xvbmUoKTtcblxuICAgIHdoaWxlIChhLmNtcG4oMSkgPiAwICYmIGIuY21wbigxKSA+IDApIHtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBpbSA9IDE7IChhLndvcmRzWzBdICYgaW0pID09PSAwICYmIGkgPCAyNjsgKytpLCBpbSA8PD0gMSk7XG4gICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgYS5pdXNocm4oaSk7XG4gICAgICAgIHdoaWxlIChpLS0gPiAwKSB7XG4gICAgICAgICAgaWYgKHgxLmlzT2RkKCkpIHtcbiAgICAgICAgICAgIHgxLmlhZGQoZGVsdGEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHgxLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoYi53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIGIuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmICh4Mi5pc09kZCgpKSB7XG4gICAgICAgICAgICB4Mi5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4Mi5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGEuY21wKGIpID49IDApIHtcbiAgICAgICAgYS5pc3ViKGIpO1xuICAgICAgICB4MS5pc3ViKHgyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGIuaXN1YihhKTtcbiAgICAgICAgeDIuaXN1Yih4MSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlcztcbiAgICBpZiAoYS5jbXBuKDEpID09PSAwKSB7XG4gICAgICByZXMgPSB4MTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0geDI7XG4gICAgfVxuXG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQocCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ2NkID0gZnVuY3Rpb24gZ2NkIChudW0pIHtcbiAgICBpZiAodGhpcy5pc1plcm8oKSkgcmV0dXJuIG51bS5hYnMoKTtcbiAgICBpZiAobnVtLmlzWmVybygpKSByZXR1cm4gdGhpcy5hYnMoKTtcblxuICAgIHZhciBhID0gdGhpcy5jbG9uZSgpO1xuICAgIHZhciBiID0gbnVtLmNsb25lKCk7XG4gICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgYi5uZWdhdGl2ZSA9IDA7XG5cbiAgICAvLyBSZW1vdmUgY29tbW9uIGZhY3RvciBvZiB0d29cbiAgICBmb3IgKHZhciBzaGlmdCA9IDA7IGEuaXNFdmVuKCkgJiYgYi5pc0V2ZW4oKTsgc2hpZnQrKykge1xuICAgICAgYS5pdXNocm4oMSk7XG4gICAgICBiLml1c2hybigxKTtcbiAgICB9XG5cbiAgICBkbyB7XG4gICAgICB3aGlsZSAoYS5pc0V2ZW4oKSkge1xuICAgICAgICBhLml1c2hybigxKTtcbiAgICAgIH1cbiAgICAgIHdoaWxlIChiLmlzRXZlbigpKSB7XG4gICAgICAgIGIuaXVzaHJuKDEpO1xuICAgICAgfVxuXG4gICAgICB2YXIgciA9IGEuY21wKGIpO1xuICAgICAgaWYgKHIgPCAwKSB7XG4gICAgICAgIC8vIFN3YXAgYGFgIGFuZCBgYmAgdG8gbWFrZSBgYWAgYWx3YXlzIGJpZ2dlciB0aGFuIGBiYFxuICAgICAgICB2YXIgdCA9IGE7XG4gICAgICAgIGEgPSBiO1xuICAgICAgICBiID0gdDtcbiAgICAgIH0gZWxzZSBpZiAociA9PT0gMCB8fCBiLmNtcG4oMSkgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGEuaXN1YihiKTtcbiAgICB9IHdoaWxlICh0cnVlKTtcblxuICAgIHJldHVybiBiLml1c2hsbihzaGlmdCk7XG4gIH07XG5cbiAgLy8gSW52ZXJ0IG51bWJlciBpbiB0aGUgZmllbGQgRihudW0pXG4gIEJOLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZWdjZChudW0pLmEudW1vZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiBpc0V2ZW4gKCkge1xuICAgIHJldHVybiAodGhpcy53b3Jkc1swXSAmIDEpID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uIGlzT2RkICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMTtcbiAgfTtcblxuICAvLyBBbmQgZmlyc3Qgd29yZCBhbmQgbnVtXG4gIEJOLnByb3RvdHlwZS5hbmRsbiA9IGZ1bmN0aW9uIGFuZGxuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy53b3Jkc1swXSAmIG51bTtcbiAgfTtcblxuICAvLyBJbmNyZW1lbnQgYXQgdGhlIGJpdCBwb3NpdGlvbiBpbi1saW5lXG4gIEJOLnByb3RvdHlwZS5iaW5jbiA9IGZ1bmN0aW9uIGJpbmNuIChiaXQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicpO1xuICAgIHZhciByID0gYml0ICUgMjY7XG4gICAgdmFyIHMgPSAoYml0IC0gcikgLyAyNjtcbiAgICB2YXIgcSA9IDEgPDwgcjtcblxuICAgIC8vIEZhc3QgY2FzZTogYml0IGlzIG11Y2ggaGlnaGVyIHRoYW4gYWxsIGV4aXN0aW5nIHdvcmRzXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHRoaXMuX2V4cGFuZChzICsgMSk7XG4gICAgICB0aGlzLndvcmRzW3NdIHw9IHE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBBZGQgYml0IGFuZCBwcm9wYWdhdGUsIGlmIG5lZWRlZFxuICAgIHZhciBjYXJyeSA9IHE7XG4gICAgZm9yICh2YXIgaSA9IHM7IGNhcnJ5ICE9PSAwICYmIGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IHRoaXMud29yZHNbaV0gfCAwO1xuICAgICAgdyArPSBjYXJyeTtcbiAgICAgIGNhcnJ5ID0gdyA+Pj4gMjY7XG4gICAgICB3ICY9IDB4M2ZmZmZmZjtcbiAgICAgIHRoaXMud29yZHNbaV0gPSB3O1xuICAgIH1cbiAgICBpZiAoY2FycnkgIT09IDApIHtcbiAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiBpc1plcm8gKCkge1xuICAgIHJldHVybiB0aGlzLmxlbmd0aCA9PT0gMSAmJiB0aGlzLndvcmRzWzBdID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jbXBuID0gZnVuY3Rpb24gY21wbiAobnVtKSB7XG4gICAgdmFyIG5lZ2F0aXZlID0gbnVtIDwgMDtcblxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmICFuZWdhdGl2ZSkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG5lZ2F0aXZlKSByZXR1cm4gMTtcblxuICAgIHRoaXMuc3RyaXAoKTtcblxuICAgIHZhciByZXM7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gMSkge1xuICAgICAgcmVzID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG5lZ2F0aXZlKSB7XG4gICAgICAgIG51bSA9IC1udW07XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmLCAnTnVtYmVyIGlzIHRvbyBiaWcnKTtcblxuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzWzBdIHwgMDtcbiAgICAgIHJlcyA9IHcgPT09IG51bSA/IDAgOiB3IDwgbnVtID8gLTEgOiAxO1xuICAgIH1cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIC1yZXMgfCAwO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gQ29tcGFyZSB0d28gbnVtYmVycyBhbmQgcmV0dXJuOlxuICAvLyAxIC0gaWYgYHRoaXNgID4gYG51bWBcbiAgLy8gMCAtIGlmIGB0aGlzYCA9PSBgbnVtYFxuICAvLyAtMSAtIGlmIGB0aGlzYCA8IGBudW1gXG4gIEJOLnByb3RvdHlwZS5jbXAgPSBmdW5jdGlvbiBjbXAgKG51bSkge1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkgcmV0dXJuIC0xO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlID09PSAwICYmIG51bS5uZWdhdGl2ZSAhPT0gMCkgcmV0dXJuIDE7XG5cbiAgICB2YXIgcmVzID0gdGhpcy51Y21wKG51bSk7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIFVuc2lnbmVkIGNvbXBhcmlzb25cbiAgQk4ucHJvdG90eXBlLnVjbXAgPSBmdW5jdGlvbiB1Y21wIChudW0pIHtcbiAgICAvLyBBdCB0aGlzIHBvaW50IGJvdGggbnVtYmVycyBoYXZlIHRoZSBzYW1lIHNpZ25cbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gMTtcbiAgICBpZiAodGhpcy5sZW5ndGggPCBudW0ubGVuZ3RoKSByZXR1cm4gLTE7XG5cbiAgICB2YXIgcmVzID0gMDtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGEgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHZhciBiID0gbnVtLndvcmRzW2ldIHwgMDtcblxuICAgICAgaWYgKGEgPT09IGIpIGNvbnRpbnVlO1xuICAgICAgaWYgKGEgPCBiKSB7XG4gICAgICAgIHJlcyA9IC0xO1xuICAgICAgfSBlbHNlIGlmIChhID4gYikge1xuICAgICAgICByZXMgPSAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0biA9IGZ1bmN0aW9uIGd0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAxO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndCA9IGZ1bmN0aW9uIGd0IChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlbiA9IGZ1bmN0aW9uIGd0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndGUgPSBmdW5jdGlvbiBndGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID49IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0biA9IGZ1bmN0aW9uIGx0biAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHQgPSBmdW5jdGlvbiBsdCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IC0xO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGVuID0gZnVuY3Rpb24gbHRlbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ZSA9IGZ1bmN0aW9uIGx0ZSAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPD0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZXFuID0gZnVuY3Rpb24gZXFuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPT09IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAwO1xuICB9O1xuXG4gIC8vXG4gIC8vIEEgcmVkdWNlIGNvbnRleHQsIGNvdWxkIGJlIHVzaW5nIG1vbnRnb21lcnkgb3Igc29tZXRoaW5nIGJldHRlciwgZGVwZW5kaW5nXG4gIC8vIG9uIHRoZSBgbWAgaXRzZWxmLlxuICAvL1xuICBCTi5yZWQgPSBmdW5jdGlvbiByZWQgKG51bSkge1xuICAgIHJldHVybiBuZXcgUmVkKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvUmVkID0gZnVuY3Rpb24gdG9SZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgYXNzZXJ0KHRoaXMubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIHJldHVybiBjdHguY29udmVydFRvKHRoaXMpLl9mb3JjZVJlZChjdHgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5mcm9tUmVkID0gZnVuY3Rpb24gZnJvbVJlZCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAnZnJvbVJlZCB3b3JrcyBvbmx5IHdpdGggbnVtYmVycyBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIHJldHVybiB0aGlzLnJlZC5jb252ZXJ0RnJvbSh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2ZvcmNlUmVkID0gZnVuY3Rpb24gX2ZvcmNlUmVkIChjdHgpIHtcbiAgICB0aGlzLnJlZCA9IGN0eDtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZm9yY2VSZWQgPSBmdW5jdGlvbiBmb3JjZVJlZCAoY3R4KSB7XG4gICAgYXNzZXJ0KCF0aGlzLnJlZCwgJ0FscmVhZHkgYSBudW1iZXIgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkQWRkID0gZnVuY3Rpb24gcmVkQWRkIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJQWRkID0gZnVuY3Rpb24gcmVkSUFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSUFkZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaWFkZCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTdWIgPSBmdW5jdGlvbiByZWRTdWIgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElTdWIgPSBmdW5jdGlvbiByZWRJU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRJU3ViIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5pc3ViKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZFNobCA9IGZ1bmN0aW9uIHJlZFNobCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU2hsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zaGwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkTXVsID0gZnVuY3Rpb24gcmVkTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubXVsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZElNdWwgPSBmdW5jdGlvbiByZWRJTXVsIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRNdWwgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTIodGhpcywgbnVtKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTcXIgPSBmdW5jdGlvbiByZWRTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FyKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3FyID0gZnVuY3Rpb24gcmVkSVNxciAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVNxciB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXNxcih0aGlzKTtcbiAgfTtcblxuICAvLyBTcXVhcmUgcm9vdCBvdmVyIHBcbiAgQk4ucHJvdG90eXBlLnJlZFNxcnQgPSBmdW5jdGlvbiByZWRTcXJ0ICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXJ0IHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5zcXJ0KHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJbnZtID0gZnVuY3Rpb24gcmVkSW52bSAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSW52bSB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaW52bSh0aGlzKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gbmVnYXRpdmUgY2xvbmUgb2YgYHRoaXNgICUgYHJlZCBtb2R1bG9gXG4gIEJOLnByb3RvdHlwZS5yZWROZWcgPSBmdW5jdGlvbiByZWROZWcgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZE5lZyB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQubmVnKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRQb3cgPSBmdW5jdGlvbiByZWRQb3cgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCAmJiAhbnVtLnJlZCwgJ3JlZFBvdyhub3JtYWxOdW0pJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnBvdyh0aGlzLCBudW0pO1xuICB9O1xuXG4gIC8vIFByaW1lIG51bWJlcnMgd2l0aCBlZmZpY2llbnQgcmVkdWN0aW9uXG4gIHZhciBwcmltZXMgPSB7XG4gICAgazI1NjogbnVsbCxcbiAgICBwMjI0OiBudWxsLFxuICAgIHAxOTI6IG51bGwsXG4gICAgcDI1NTE5OiBudWxsXG4gIH07XG5cbiAgLy8gUHNldWRvLU1lcnNlbm5lIHByaW1lXG4gIGZ1bmN0aW9uIE1QcmltZSAobmFtZSwgcCkge1xuICAgIC8vIFAgPSAyIF4gTiAtIEtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMucCA9IG5ldyBCTihwLCAxNik7XG4gICAgdGhpcy5uID0gdGhpcy5wLmJpdExlbmd0aCgpO1xuICAgIHRoaXMuayA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5uKS5pc3ViKHRoaXMucCk7XG5cbiAgICB0aGlzLnRtcCA9IHRoaXMuX3RtcCgpO1xuICB9XG5cbiAgTVByaW1lLnByb3RvdHlwZS5fdG1wID0gZnVuY3Rpb24gX3RtcCAoKSB7XG4gICAgdmFyIHRtcCA9IG5ldyBCTihudWxsKTtcbiAgICB0bXAud29yZHMgPSBuZXcgQXJyYXkoTWF0aC5jZWlsKHRoaXMubiAvIDEzKSk7XG4gICAgcmV0dXJuIHRtcDtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmlyZWR1Y2UgPSBmdW5jdGlvbiBpcmVkdWNlIChudW0pIHtcbiAgICAvLyBBc3N1bWVzIHRoYXQgYG51bWAgaXMgbGVzcyB0aGFuIGBQXjJgXG4gICAgLy8gbnVtID0gSEkgKiAoMiBeIE4gLSBLKSArIEhJICogSyArIExPID0gSEkgKiBLICsgTE8gKG1vZCBQKVxuICAgIHZhciByID0gbnVtO1xuICAgIHZhciBybGVuO1xuXG4gICAgZG8ge1xuICAgICAgdGhpcy5zcGxpdChyLCB0aGlzLnRtcCk7XG4gICAgICByID0gdGhpcy5pbXVsSyhyKTtcbiAgICAgIHIgPSByLmlhZGQodGhpcy50bXApO1xuICAgICAgcmxlbiA9IHIuYml0TGVuZ3RoKCk7XG4gICAgfSB3aGlsZSAocmxlbiA+IHRoaXMubik7XG5cbiAgICB2YXIgY21wID0gcmxlbiA8IHRoaXMubiA/IC0xIDogci51Y21wKHRoaXMucCk7XG4gICAgaWYgKGNtcCA9PT0gMCkge1xuICAgICAgci53b3Jkc1swXSA9IDA7XG4gICAgICByLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgICByLmlzdWIodGhpcy5wKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHIuc3RyaXAgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAvLyByIGlzIEJOIHY0IGluc3RhbmNlXG4gICAgICAgIHIuc3RyaXAoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHIgaXMgQk4gdjUgaW5zdGFuY2VcbiAgICAgICAgci5fc3RyaXAoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBhc3NlcnQ7XG5cbmZ1bmN0aW9uIGFzc2VydCh2YWwsIG1zZykge1xuICBpZiAoIXZhbClcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG59XG5cbmFzc2VydC5lcXVhbCA9IGZ1bmN0aW9uIGFzc2VydEVxdWFsKGwsIHIsIG1zZykge1xuICBpZiAobCAhPSByKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgKCdBc3NlcnRpb24gZmFpbGVkOiAnICsgbCArICcgIT0gJyArIHIpKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IGV4cG9ydHM7XG5cbmZ1bmN0aW9uIHRvQXJyYXkobXNnLCBlbmMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobXNnKSlcbiAgICByZXR1cm4gbXNnLnNsaWNlKCk7XG4gIGlmICghbXNnKVxuICAgIHJldHVybiBbXTtcbiAgdmFyIHJlcyA9IFtdO1xuICBpZiAodHlwZW9mIG1zZyAhPT0gJ3N0cmluZycpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICAgIHJlc1tpXSA9IG1zZ1tpXSB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZiAoZW5jID09PSAnaGV4Jykge1xuICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgaWYgKG1zZy5sZW5ndGggJSAyICE9PSAwKVxuICAgICAgbXNnID0gJzAnICsgbXNnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSAyKVxuICAgICAgcmVzLnB1c2gocGFyc2VJbnQobXNnW2ldICsgbXNnW2kgKyAxXSwgMTYpKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSBtc2cuY2hhckNvZGVBdChpKTtcbiAgICAgIHZhciBoaSA9IGMgPj4gODtcbiAgICAgIHZhciBsbyA9IGMgJiAweGZmO1xuICAgICAgaWYgKGhpKVxuICAgICAgICByZXMucHVzaChoaSwgbG8pO1xuICAgICAgZWxzZVxuICAgICAgICByZXMucHVzaChsbyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0FycmF5ID0gdG9BcnJheTtcblxuZnVuY3Rpb24gemVybzIod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbnV0aWxzLnplcm8yID0gemVybzI7XG5cbmZ1bmN0aW9uIHRvSGV4KG1zZykge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgIHJlcyArPSB6ZXJvMihtc2dbaV0udG9TdHJpbmcoMTYpKTtcbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvSGV4ID0gdG9IZXg7XG5cbnV0aWxzLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShhcnIsIGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdG9IZXgoYXJyKTtcbiAgZWxzZVxuICAgIHJldHVybiBhcnI7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgbnVtYmVySXNOYU4gPSBmdW5jdGlvbiAodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXMoYSwgYikge1xuXHRpZiAoYSA9PT0gMCAmJiBiID09PSAwKSB7XG5cdFx0cmV0dXJuIDEgLyBhID09PSAxIC8gYjtcblx0fVxuXHRpZiAoYSA9PT0gYikge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdGlmIChudW1iZXJJc05hTihhKSAmJiBudW1iZXJJc05hTihiKSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn07XG5cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGRlZmluZSA9IHJlcXVpcmUoJ2RlZmluZS1wcm9wZXJ0aWVzJyk7XG52YXIgY2FsbEJpbmQgPSByZXF1aXJlKCdjYWxsLWJpbmQnKTtcblxudmFyIGltcGxlbWVudGF0aW9uID0gcmVxdWlyZSgnLi9pbXBsZW1lbnRhdGlvbicpO1xudmFyIGdldFBvbHlmaWxsID0gcmVxdWlyZSgnLi9wb2x5ZmlsbCcpO1xudmFyIHNoaW0gPSByZXF1aXJlKCcuL3NoaW0nKTtcblxudmFyIHBvbHlmaWxsID0gY2FsbEJpbmQoZ2V0UG9seWZpbGwoKSwgT2JqZWN0KTtcblxuZGVmaW5lKHBvbHlmaWxsLCB7XG5cdGdldFBvbHlmaWxsOiBnZXRQb2x5ZmlsbCxcblx0aW1wbGVtZW50YXRpb246IGltcGxlbWVudGF0aW9uLFxuXHRzaGltOiBzaGltXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBwb2x5ZmlsbDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGltcGxlbWVudGF0aW9uID0gcmVxdWlyZSgnLi9pbXBsZW1lbnRhdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdldFBvbHlmaWxsKCkge1xuXHRyZXR1cm4gdHlwZW9mIE9iamVjdC5pcyA9PT0gJ2Z1bmN0aW9uJyA/IE9iamVjdC5pcyA6IGltcGxlbWVudGF0aW9uO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGdldFBvbHlmaWxsID0gcmVxdWlyZSgnLi9wb2x5ZmlsbCcpO1xudmFyIGRlZmluZSA9IHJlcXVpcmUoJ2RlZmluZS1wcm9wZXJ0aWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gc2hpbU9iamVjdElzKCkge1xuXHR2YXIgcG9seWZpbGwgPSBnZXRQb2x5ZmlsbCgpO1xuXHRkZWZpbmUoT2JqZWN0LCB7IGlzOiBwb2x5ZmlsbCB9LCB7XG5cdFx0aXM6IGZ1bmN0aW9uIHRlc3RPYmplY3RJcygpIHtcblx0XHRcdHJldHVybiBPYmplY3QuaXMgIT09IHBvbHlmaWxsO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBwb2x5ZmlsbDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBrZXlzU2hpbTtcbmlmICghT2JqZWN0LmtleXMpIHtcblx0Ly8gbW9kaWZpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZXMtc2hpbXMvZXM1LXNoaW1cblx0dmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cdHZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cdHZhciBpc0FyZ3MgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZ2xvYmFsLXJlcXVpcmVcblx0dmFyIGlzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cdHZhciBoYXNEb250RW51bUJ1ZyA9ICFpc0VudW1lcmFibGUuY2FsbCh7IHRvU3RyaW5nOiBudWxsIH0sICd0b1N0cmluZycpO1xuXHR2YXIgaGFzUHJvdG9FbnVtQnVnID0gaXNFbnVtZXJhYmxlLmNhbGwoZnVuY3Rpb24gKCkge30sICdwcm90b3R5cGUnKTtcblx0dmFyIGRvbnRFbnVtcyA9IFtcblx0XHQndG9TdHJpbmcnLFxuXHRcdCd0b0xvY2FsZVN0cmluZycsXG5cdFx0J3ZhbHVlT2YnLFxuXHRcdCdoYXNPd25Qcm9wZXJ0eScsXG5cdFx0J2lzUHJvdG90eXBlT2YnLFxuXHRcdCdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG5cdFx0J2NvbnN0cnVjdG9yJ1xuXHRdO1xuXHR2YXIgZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGUgPSBmdW5jdGlvbiAobykge1xuXHRcdHZhciBjdG9yID0gby5jb25zdHJ1Y3Rvcjtcblx0XHRyZXR1cm4gY3RvciAmJiBjdG9yLnByb3RvdHlwZSA9PT0gbztcblx0fTtcblx0dmFyIGV4Y2x1ZGVkS2V5cyA9IHtcblx0XHQkYXBwbGljYXRpb25DYWNoZTogdHJ1ZSxcblx0XHQkY29uc29sZTogdHJ1ZSxcblx0XHQkZXh0ZXJuYWw6IHRydWUsXG5cdFx0JGZyYW1lOiB0cnVlLFxuXHRcdCRmcmFtZUVsZW1lbnQ6IHRydWUsXG5cdFx0JGZyYW1lczogdHJ1ZSxcblx0XHQkaW5uZXJIZWlnaHQ6IHRydWUsXG5cdFx0JGlubmVyV2lkdGg6IHRydWUsXG5cdFx0JG9ubW96ZnVsbHNjcmVlbmNoYW5nZTogdHJ1ZSxcblx0XHQkb25tb3pmdWxsc2NyZWVuZXJyb3I6IHRydWUsXG5cdFx0JG91dGVySGVpZ2h0OiB0cnVlLFxuXHRcdCRvdXRlcldpZHRoOiB0cnVlLFxuXHRcdCRwYWdlWE9mZnNldDogdHJ1ZSxcblx0XHQkcGFnZVlPZmZzZXQ6IHRydWUsXG5cdFx0JHBhcmVudDogdHJ1ZSxcblx0XHQkc2Nyb2xsTGVmdDogdHJ1ZSxcblx0XHQkc2Nyb2xsVG9wOiB0cnVlLFxuXHRcdCRzY3JvbGxYOiB0cnVlLFxuXHRcdCRzY3JvbGxZOiB0cnVlLFxuXHRcdCRzZWxmOiB0cnVlLFxuXHRcdCR3ZWJraXRJbmRleGVkREI6IHRydWUsXG5cdFx0JHdlYmtpdFN0b3JhZ2VJbmZvOiB0cnVlLFxuXHRcdCR3aW5kb3c6IHRydWVcblx0fTtcblx0dmFyIGhhc0F1dG9tYXRpb25FcXVhbGl0eUJ1ZyA9IChmdW5jdGlvbiAoKSB7XG5cdFx0LyogZ2xvYmFsIHdpbmRvdyAqL1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykgeyByZXR1cm4gZmFsc2U7IH1cblx0XHRmb3IgKHZhciBrIGluIHdpbmRvdykge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKCFleGNsdWRlZEtleXNbJyQnICsga10gJiYgaGFzLmNhbGwod2luZG93LCBrKSAmJiB3aW5kb3dba10gIT09IG51bGwgJiYgdHlwZW9mIHdpbmRvd1trXSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0ZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGUod2luZG93W2tdKTtcblx0XHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSgpKTtcblx0dmFyIGVxdWFsc0NvbnN0cnVjdG9yUHJvdG90eXBlSWZOb3RCdWdneSA9IGZ1bmN0aW9uIChvKSB7XG5cdFx0LyogZ2xvYmFsIHdpbmRvdyAqL1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJyB8fCAhaGFzQXV0b21hdGlvbkVxdWFsaXR5QnVnKSB7XG5cdFx0XHRyZXR1cm4gZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGUobyk7XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGUobyk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fTtcblxuXHRrZXlzU2hpbSA9IGZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG5cdFx0dmFyIGlzT2JqZWN0ID0gb2JqZWN0ICE9PSBudWxsICYmIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnO1xuXHRcdHZhciBpc0Z1bmN0aW9uID0gdG9TdHIuY2FsbChvYmplY3QpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xuXHRcdHZhciBpc0FyZ3VtZW50cyA9IGlzQXJncyhvYmplY3QpO1xuXHRcdHZhciBpc1N0cmluZyA9IGlzT2JqZWN0ICYmIHRvU3RyLmNhbGwob2JqZWN0KSA9PT0gJ1tvYmplY3QgU3RyaW5nXSc7XG5cdFx0dmFyIHRoZUtleXMgPSBbXTtcblxuXHRcdGlmICghaXNPYmplY3QgJiYgIWlzRnVuY3Rpb24gJiYgIWlzQXJndW1lbnRzKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Jyk7XG5cdFx0fVxuXG5cdFx0dmFyIHNraXBQcm90byA9IGhhc1Byb3RvRW51bUJ1ZyAmJiBpc0Z1bmN0aW9uO1xuXHRcdGlmIChpc1N0cmluZyAmJiBvYmplY3QubGVuZ3RoID4gMCAmJiAhaGFzLmNhbGwob2JqZWN0LCAwKSkge1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBvYmplY3QubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0dGhlS2V5cy5wdXNoKFN0cmluZyhpKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGlzQXJndW1lbnRzICYmIG9iamVjdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IG9iamVjdC5sZW5ndGg7ICsraikge1xuXHRcdFx0XHR0aGVLZXlzLnB1c2goU3RyaW5nKGopKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yICh2YXIgbmFtZSBpbiBvYmplY3QpIHtcblx0XHRcdFx0aWYgKCEoc2tpcFByb3RvICYmIG5hbWUgPT09ICdwcm90b3R5cGUnKSAmJiBoYXMuY2FsbChvYmplY3QsIG5hbWUpKSB7XG5cdFx0XHRcdFx0dGhlS2V5cy5wdXNoKFN0cmluZyhuYW1lKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoaGFzRG9udEVudW1CdWcpIHtcblx0XHRcdHZhciBza2lwQ29uc3RydWN0b3IgPSBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZUlmTm90QnVnZ3kob2JqZWN0KTtcblxuXHRcdFx0Zm9yICh2YXIgayA9IDA7IGsgPCBkb250RW51bXMubGVuZ3RoOyArK2spIHtcblx0XHRcdFx0aWYgKCEoc2tpcENvbnN0cnVjdG9yICYmIGRvbnRFbnVtc1trXSA9PT0gJ2NvbnN0cnVjdG9yJykgJiYgaGFzLmNhbGwob2JqZWN0LCBkb250RW51bXNba10pKSB7XG5cdFx0XHRcdFx0dGhlS2V5cy5wdXNoKGRvbnRFbnVtc1trXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRoZUtleXM7XG5cdH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGtleXNTaGltO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG52YXIgaXNBcmdzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpO1xuXG52YXIgb3JpZ0tleXMgPSBPYmplY3Qua2V5cztcbnZhciBrZXlzU2hpbSA9IG9yaWdLZXlzID8gZnVuY3Rpb24ga2V5cyhvKSB7IHJldHVybiBvcmlnS2V5cyhvKTsgfSA6IHJlcXVpcmUoJy4vaW1wbGVtZW50YXRpb24nKTtcblxudmFyIG9yaWdpbmFsS2V5cyA9IE9iamVjdC5rZXlzO1xuXG5rZXlzU2hpbS5zaGltID0gZnVuY3Rpb24gc2hpbU9iamVjdEtleXMoKSB7XG5cdGlmIChPYmplY3Qua2V5cykge1xuXHRcdHZhciBrZXlzV29ya3NXaXRoQXJndW1lbnRzID0gKGZ1bmN0aW9uICgpIHtcblx0XHRcdC8vIFNhZmFyaSA1LjAgYnVnXG5cdFx0XHR2YXIgYXJncyA9IE9iamVjdC5rZXlzKGFyZ3VtZW50cyk7XG5cdFx0XHRyZXR1cm4gYXJncyAmJiBhcmdzLmxlbmd0aCA9PT0gYXJndW1lbnRzLmxlbmd0aDtcblx0XHR9KDEsIDIpKTtcblx0XHRpZiAoIWtleXNXb3Jrc1dpdGhBcmd1bWVudHMpIHtcblx0XHRcdE9iamVjdC5rZXlzID0gZnVuY3Rpb24ga2V5cyhvYmplY3QpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBmdW5jLW5hbWUtbWF0Y2hpbmdcblx0XHRcdFx0aWYgKGlzQXJncyhvYmplY3QpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9yaWdpbmFsS2V5cyhzbGljZS5jYWxsKG9iamVjdCkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBvcmlnaW5hbEtleXMob2JqZWN0KTtcblx0XHRcdH07XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdE9iamVjdC5rZXlzID0ga2V5c1NoaW07XG5cdH1cblx0cmV0dXJuIE9iamVjdC5rZXlzIHx8IGtleXNTaGltO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzU2hpbTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHRvU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0FyZ3VtZW50cyh2YWx1ZSkge1xuXHR2YXIgc3RyID0gdG9TdHIuY2FsbCh2YWx1ZSk7XG5cdHZhciBpc0FyZ3MgPSBzdHIgPT09ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuXHRpZiAoIWlzQXJncykge1xuXHRcdGlzQXJncyA9IHN0ciAhPT0gJ1tvYmplY3QgQXJyYXldJyAmJlxuXHRcdFx0dmFsdWUgIT09IG51bGwgJiZcblx0XHRcdHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiZcblx0XHRcdHR5cGVvZiB2YWx1ZS5sZW5ndGggPT09ICdudW1iZXInICYmXG5cdFx0XHR2YWx1ZS5sZW5ndGggPj0gMCAmJlxuXHRcdFx0dG9TdHIuY2FsbCh2YWx1ZS5jYWxsZWUpID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xuXHR9XG5cdHJldHVybiBpc0FyZ3M7XG59O1xuIiwiLy8gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9zZWxmLXNpZ25lZC9ibG9iL2doLXBhZ2VzL2xpYi9hc24xLmpzXG4vLyBGZWRvciwgeW91IGFyZSBhbWF6aW5nLlxuJ3VzZSBzdHJpY3QnXG5cbnZhciBhc24xID0gcmVxdWlyZSgnYXNuMS5qcycpXG5cbmV4cG9ydHMuY2VydGlmaWNhdGUgPSByZXF1aXJlKCcuL2NlcnRpZmljYXRlJylcblxudmFyIFJTQVByaXZhdGVLZXkgPSBhc24xLmRlZmluZSgnUlNBUHJpdmF0ZUtleScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3ZlcnNpb24nKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnbW9kdWx1cycpLmludCgpLFxuICAgIHRoaXMua2V5KCdwdWJsaWNFeHBvbmVudCcpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcml2YXRlRXhwb25lbnQnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpbWUxJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaW1lMicpLmludCgpLFxuICAgIHRoaXMua2V5KCdleHBvbmVudDEnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnZXhwb25lbnQyJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2NvZWZmaWNpZW50JykuaW50KClcbiAgKVxufSlcbmV4cG9ydHMuUlNBUHJpdmF0ZUtleSA9IFJTQVByaXZhdGVLZXlcblxudmFyIFJTQVB1YmxpY0tleSA9IGFzbjEuZGVmaW5lKCdSU0FQdWJsaWNLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdtb2R1bHVzJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3B1YmxpY0V4cG9uZW50JykuaW50KClcbiAgKVxufSlcbmV4cG9ydHMuUlNBUHVibGljS2V5ID0gUlNBUHVibGljS2V5XG5cbnZhciBQdWJsaWNLZXkgPSBhc24xLmRlZmluZSgnU3ViamVjdFB1YmxpY0tleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS51c2UoQWxnb3JpdGhtSWRlbnRpZmllciksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQdWJsaWNLZXknKS5iaXRzdHIoKVxuICApXG59KVxuZXhwb3J0cy5QdWJsaWNLZXkgPSBQdWJsaWNLZXlcblxudmFyIEFsZ29yaXRobUlkZW50aWZpZXIgPSBhc24xLmRlZmluZSgnQWxnb3JpdGhtSWRlbnRpZmllcicsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLm9iamlkKCksXG4gICAgdGhpcy5rZXkoJ25vbmUnKS5udWxsXygpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ2N1cnZlJykub2JqaWQoKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdwYXJhbXMnKS5zZXEoKS5vYmooXG4gICAgICB0aGlzLmtleSgncCcpLmludCgpLFxuICAgICAgdGhpcy5rZXkoJ3EnKS5pbnQoKSxcbiAgICAgIHRoaXMua2V5KCdnJykuaW50KClcbiAgICApLm9wdGlvbmFsKClcbiAgKVxufSlcblxudmFyIFByaXZhdGVLZXlJbmZvID0gYXNuMS5kZWZpbmUoJ1ByaXZhdGVLZXlJbmZvJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS51c2UoQWxnb3JpdGhtSWRlbnRpZmllciksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQcml2YXRlS2V5Jykub2N0c3RyKClcbiAgKVxufSlcbmV4cG9ydHMuUHJpdmF0ZUtleSA9IFByaXZhdGVLZXlJbmZvXG52YXIgRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8gPSBhc24xLmRlZmluZSgnRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS5zZXEoKS5vYmooXG4gICAgICB0aGlzLmtleSgnaWQnKS5vYmppZCgpLFxuICAgICAgdGhpcy5rZXkoJ2RlY3J5cHQnKS5zZXEoKS5vYmooXG4gICAgICAgIHRoaXMua2V5KCdrZGUnKS5zZXEoKS5vYmooXG4gICAgICAgICAgdGhpcy5rZXkoJ2lkJykub2JqaWQoKSxcbiAgICAgICAgICB0aGlzLmtleSgna2RlcGFyYW1zJykuc2VxKCkub2JqKFxuICAgICAgICAgICAgdGhpcy5rZXkoJ3NhbHQnKS5vY3RzdHIoKSxcbiAgICAgICAgICAgIHRoaXMua2V5KCdpdGVycycpLmludCgpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICB0aGlzLmtleSgnY2lwaGVyJykuc2VxKCkub2JqKFxuICAgICAgICAgIHRoaXMua2V5KCdhbGdvJykub2JqaWQoKSxcbiAgICAgICAgICB0aGlzLmtleSgnaXYnKS5vY3RzdHIoKVxuICAgICAgICApXG4gICAgICApXG4gICAgKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFByaXZhdGVLZXknKS5vY3RzdHIoKVxuICApXG59KVxuXG5leHBvcnRzLkVuY3J5cHRlZFByaXZhdGVLZXkgPSBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mb1xuXG52YXIgRFNBUHJpdmF0ZUtleSA9IGFzbjEuZGVmaW5lKCdEU0FQcml2YXRlS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdwJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3EnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnZycpLmludCgpLFxuICAgIHRoaXMua2V5KCdwdWJfa2V5JykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaXZfa2V5JykuaW50KClcbiAgKVxufSlcbmV4cG9ydHMuRFNBUHJpdmF0ZUtleSA9IERTQVByaXZhdGVLZXlcblxuZXhwb3J0cy5EU0FwYXJhbSA9IGFzbjEuZGVmaW5lKCdEU0FwYXJhbScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5pbnQoKVxufSlcblxudmFyIEVDUHJpdmF0ZUtleSA9IGFzbjEuZGVmaW5lKCdFQ1ByaXZhdGVLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaXZhdGVLZXknKS5vY3RzdHIoKSxcbiAgICB0aGlzLmtleSgncGFyYW1ldGVycycpLm9wdGlvbmFsKCkuZXhwbGljaXQoMCkudXNlKEVDUGFyYW1ldGVycyksXG4gICAgdGhpcy5rZXkoJ3B1YmxpY0tleScpLm9wdGlvbmFsKCkuZXhwbGljaXQoMSkuYml0c3RyKClcbiAgKVxufSlcbmV4cG9ydHMuRUNQcml2YXRlS2V5ID0gRUNQcml2YXRlS2V5XG5cbnZhciBFQ1BhcmFtZXRlcnMgPSBhc24xLmRlZmluZSgnRUNQYXJhbWV0ZXJzJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLmNob2ljZSh7XG4gICAgbmFtZWRDdXJ2ZTogdGhpcy5vYmppZCgpXG4gIH0pXG59KVxuXG5leHBvcnRzLnNpZ25hdHVyZSA9IGFzbjEuZGVmaW5lKCdzaWduYXR1cmUnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdyJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3MnKS5pbnQoKVxuICApXG59KVxuIiwiLy8gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vUmFudGFuZW4vbm9kZS1kdGxzL2Jsb2IvMjVhN2RjODYxYmRhMzhjZmVhYzkzYTcyMzUwMGVlYTRmMGFjMmU4Ni9DZXJ0aWZpY2F0ZS5qc1xuLy8gdGhhbmtzIHRvIEBSYW50YW5lblxuXG4ndXNlIHN0cmljdCdcblxudmFyIGFzbiA9IHJlcXVpcmUoJ2FzbjEuanMnKVxuXG52YXIgVGltZSA9IGFzbi5kZWZpbmUoJ1RpbWUnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2hvaWNlKHtcbiAgICB1dGNUaW1lOiB0aGlzLnV0Y3RpbWUoKSxcbiAgICBnZW5lcmFsVGltZTogdGhpcy5nZW50aW1lKClcbiAgfSlcbn0pXG5cbnZhciBBdHRyaWJ1dGVUeXBlVmFsdWUgPSBhc24uZGVmaW5lKCdBdHRyaWJ1dGVUeXBlVmFsdWUnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd0eXBlJykub2JqaWQoKSxcbiAgICB0aGlzLmtleSgndmFsdWUnKS5hbnkoKVxuICApXG59KVxuXG52YXIgQWxnb3JpdGhtSWRlbnRpZmllciA9IGFzbi5kZWZpbmUoJ0FsZ29yaXRobUlkZW50aWZpZXInLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS5vYmppZCgpLFxuICAgIHRoaXMua2V5KCdwYXJhbWV0ZXJzJykub3B0aW9uYWwoKSxcbiAgICB0aGlzLmtleSgnY3VydmUnKS5vYmppZCgpLm9wdGlvbmFsKClcbiAgKVxufSlcblxudmFyIFN1YmplY3RQdWJsaWNLZXlJbmZvID0gYXNuLmRlZmluZSgnU3ViamVjdFB1YmxpY0tleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCdhbGdvcml0aG0nKS51c2UoQWxnb3JpdGhtSWRlbnRpZmllciksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQdWJsaWNLZXknKS5iaXRzdHIoKVxuICApXG59KVxuXG52YXIgUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSA9IGFzbi5kZWZpbmUoJ1JlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2V0b2YoQXR0cmlidXRlVHlwZVZhbHVlKVxufSlcblxudmFyIFJETlNlcXVlbmNlID0gYXNuLmRlZmluZSgnUkROU2VxdWVuY2UnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2Vxb2YoUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSlcbn0pXG5cbnZhciBOYW1lID0gYXNuLmRlZmluZSgnTmFtZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jaG9pY2Uoe1xuICAgIHJkblNlcXVlbmNlOiB0aGlzLnVzZShSRE5TZXF1ZW5jZSlcbiAgfSlcbn0pXG5cbnZhciBWYWxpZGl0eSA9IGFzbi5kZWZpbmUoJ1ZhbGlkaXR5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnbm90QmVmb3JlJykudXNlKFRpbWUpLFxuICAgIHRoaXMua2V5KCdub3RBZnRlcicpLnVzZShUaW1lKVxuICApXG59KVxuXG52YXIgRXh0ZW5zaW9uID0gYXNuLmRlZmluZSgnRXh0ZW5zaW9uJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnZXh0bklEJykub2JqaWQoKSxcbiAgICB0aGlzLmtleSgnY3JpdGljYWwnKS5ib29sKCkuZGVmKGZhbHNlKSxcbiAgICB0aGlzLmtleSgnZXh0blZhbHVlJykub2N0c3RyKClcbiAgKVxufSlcblxudmFyIFRCU0NlcnRpZmljYXRlID0gYXNuLmRlZmluZSgnVEJTQ2VydGlmaWNhdGUnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuZXhwbGljaXQoMCkuaW50KCkub3B0aW9uYWwoKSxcbiAgICB0aGlzLmtleSgnc2VyaWFsTnVtYmVyJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3NpZ25hdHVyZScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnaXNzdWVyJykudXNlKE5hbWUpLFxuICAgIHRoaXMua2V5KCd2YWxpZGl0eScpLnVzZShWYWxpZGl0eSksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3QnKS51c2UoTmFtZSksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RQdWJsaWNLZXlJbmZvJykudXNlKFN1YmplY3RQdWJsaWNLZXlJbmZvKSxcbiAgICB0aGlzLmtleSgnaXNzdWVyVW5pcXVlSUQnKS5pbXBsaWNpdCgxKS5iaXRzdHIoKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdzdWJqZWN0VW5pcXVlSUQnKS5pbXBsaWNpdCgyKS5iaXRzdHIoKS5vcHRpb25hbCgpLFxuICAgIHRoaXMua2V5KCdleHRlbnNpb25zJykuZXhwbGljaXQoMykuc2Vxb2YoRXh0ZW5zaW9uKS5vcHRpb25hbCgpXG4gIClcbn0pXG5cbnZhciBYNTA5Q2VydGlmaWNhdGUgPSBhc24uZGVmaW5lKCdYNTA5Q2VydGlmaWNhdGUnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd0YnNDZXJ0aWZpY2F0ZScpLnVzZShUQlNDZXJ0aWZpY2F0ZSksXG4gICAgdGhpcy5rZXkoJ3NpZ25hdHVyZUFsZ29yaXRobScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnc2lnbmF0dXJlVmFsdWUnKS5iaXRzdHIoKVxuICApXG59KVxuXG5tb2R1bGUuZXhwb3J0cyA9IFg1MDlDZXJ0aWZpY2F0ZVxuIiwiLy8gYWRhcHRlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hcGF0aWwvcGVtc3RyaXBcbnZhciBmaW5kUHJvYyA9IC9Qcm9jLVR5cGU6IDQsRU5DUllQVEVEW1xcblxccl0rREVLLUluZm86IEFFUy0oKD86MTI4KXwoPzoxOTIpfCg/OjI1NikpLUNCQywoWzAtOUEtSF0rKVtcXG5cXHJdKyhbMC05QS16XFxuXFxyKy89XSspW1xcblxccl0rL21cbnZhciBzdGFydFJlZ2V4ID0gL14tLS0tLUJFR0lOICgoPzouKj8gS0VZKXxDRVJUSUZJQ0FURSktLS0tLS9tXG52YXIgZnVsbFJlZ2V4ID0gL14tLS0tLUJFR0lOICgoPzouKj8gS0VZKXxDRVJUSUZJQ0FURSktLS0tLShbMC05QS16XFxuXFxyKy89XSspLS0tLS1FTkQgXFwxLS0tLS0kL21cbnZhciBldnAgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG52YXIgY2lwaGVycyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2tleSwgcGFzc3dvcmQpIHtcbiAgdmFyIGtleSA9IG9rZXkudG9TdHJpbmcoKVxuICB2YXIgbWF0Y2ggPSBrZXkubWF0Y2goZmluZFByb2MpXG4gIHZhciBkZWNyeXB0ZWRcbiAgaWYgKCFtYXRjaCkge1xuICAgIHZhciBtYXRjaDIgPSBrZXkubWF0Y2goZnVsbFJlZ2V4KVxuICAgIGRlY3J5cHRlZCA9IEJ1ZmZlci5mcm9tKG1hdGNoMlsyXS5yZXBsYWNlKC9bXFxyXFxuXS9nLCAnJyksICdiYXNlNjQnKVxuICB9IGVsc2Uge1xuICAgIHZhciBzdWl0ZSA9ICdhZXMnICsgbWF0Y2hbMV1cbiAgICB2YXIgaXYgPSBCdWZmZXIuZnJvbShtYXRjaFsyXSwgJ2hleCcpXG4gICAgdmFyIGNpcGhlclRleHQgPSBCdWZmZXIuZnJvbShtYXRjaFszXS5yZXBsYWNlKC9bXFxyXFxuXS9nLCAnJyksICdiYXNlNjQnKVxuICAgIHZhciBjaXBoZXJLZXkgPSBldnAocGFzc3dvcmQsIGl2LnNsaWNlKDAsIDgpLCBwYXJzZUludChtYXRjaFsxXSwgMTApKS5rZXlcbiAgICB2YXIgb3V0ID0gW11cbiAgICB2YXIgY2lwaGVyID0gY2lwaGVycy5jcmVhdGVEZWNpcGhlcml2KHN1aXRlLCBjaXBoZXJLZXksIGl2KVxuICAgIG91dC5wdXNoKGNpcGhlci51cGRhdGUoY2lwaGVyVGV4dCkpXG4gICAgb3V0LnB1c2goY2lwaGVyLmZpbmFsKCkpXG4gICAgZGVjcnlwdGVkID0gQnVmZmVyLmNvbmNhdChvdXQpXG4gIH1cbiAgdmFyIHRhZyA9IGtleS5tYXRjaChzdGFydFJlZ2V4KVsxXVxuICByZXR1cm4ge1xuICAgIHRhZzogdGFnLFxuICAgIGRhdGE6IGRlY3J5cHRlZFxuICB9XG59XG4iLCJ2YXIgYXNuMSA9IHJlcXVpcmUoJy4vYXNuMScpXG52YXIgYWVzaWQgPSByZXF1aXJlKCcuL2Flc2lkLmpzb24nKVxudmFyIGZpeFByb2MgPSByZXF1aXJlKCcuL2ZpeFByb2MnKVxudmFyIGNpcGhlcnMgPSByZXF1aXJlKCdicm93c2VyaWZ5LWFlcycpXG52YXIgY29tcGF0ID0gcmVxdWlyZSgncGJrZGYyJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZUtleXNcblxuZnVuY3Rpb24gcGFyc2VLZXlzIChidWZmZXIpIHtcbiAgdmFyIHBhc3N3b3JkXG4gIGlmICh0eXBlb2YgYnVmZmVyID09PSAnb2JqZWN0JyAmJiAhQnVmZmVyLmlzQnVmZmVyKGJ1ZmZlcikpIHtcbiAgICBwYXNzd29yZCA9IGJ1ZmZlci5wYXNzcGhyYXNlXG4gICAgYnVmZmVyID0gYnVmZmVyLmtleVxuICB9XG4gIGlmICh0eXBlb2YgYnVmZmVyID09PSAnc3RyaW5nJykge1xuICAgIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJ1ZmZlcilcbiAgfVxuXG4gIHZhciBzdHJpcHBlZCA9IGZpeFByb2MoYnVmZmVyLCBwYXNzd29yZClcblxuICB2YXIgdHlwZSA9IHN0cmlwcGVkLnRhZ1xuICB2YXIgZGF0YSA9IHN0cmlwcGVkLmRhdGFcbiAgdmFyIHN1YnR5cGUsIG5kYXRhXG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgJ0NFUlRJRklDQVRFJzpcbiAgICAgIG5kYXRhID0gYXNuMS5jZXJ0aWZpY2F0ZS5kZWNvZGUoZGF0YSwgJ2RlcicpLnRic0NlcnRpZmljYXRlLnN1YmplY3RQdWJsaWNLZXlJbmZvXG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgY2FzZSAnUFVCTElDIEtFWSc6XG4gICAgICBpZiAoIW5kYXRhKSB7XG4gICAgICAgIG5kYXRhID0gYXNuMS5QdWJsaWNLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgfVxuICAgICAgc3VidHlwZSA9IG5kYXRhLmFsZ29yaXRobS5hbGdvcml0aG0uam9pbignLicpXG4gICAgICBzd2l0Y2ggKHN1YnR5cGUpIHtcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEnOlxuICAgICAgICAgIHJldHVybiBhc24xLlJTQVB1YmxpY0tleS5kZWNvZGUobmRhdGEuc3ViamVjdFB1YmxpY0tleS5kYXRhLCAnZGVyJylcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0NS4yLjEnOlxuICAgICAgICAgIG5kYXRhLnN1YmplY3RQcml2YXRlS2V5ID0gbmRhdGEuc3ViamVjdFB1YmxpY0tleVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnZWMnLFxuICAgICAgICAgICAgZGF0YTogbmRhdGFcbiAgICAgICAgICB9XG4gICAgICAgIGNhc2UgJzEuMi44NDAuMTAwNDAuNC4xJzpcbiAgICAgICAgICBuZGF0YS5hbGdvcml0aG0ucGFyYW1zLnB1Yl9rZXkgPSBhc24xLkRTQXBhcmFtLmRlY29kZShuZGF0YS5zdWJqZWN0UHVibGljS2V5LmRhdGEsICdkZXInKVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnZHNhJyxcbiAgICAgICAgICAgIGRhdGE6IG5kYXRhLmFsZ29yaXRobS5wYXJhbXNcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgaWQgJyArIHN1YnR5cGUpXG4gICAgICB9XG4gICAgICAvLyB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IHR5cGUgJyArIHR5cGUpXG4gICAgY2FzZSAnRU5DUllQVEVEIFBSSVZBVEUgS0VZJzpcbiAgICAgIGRhdGEgPSBhc24xLkVuY3J5cHRlZFByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgZGF0YSA9IGRlY3J5cHQoZGF0YSwgcGFzc3dvcmQpXG4gICAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgY2FzZSAnUFJJVkFURSBLRVknOlxuICAgICAgbmRhdGEgPSBhc24xLlByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgc3VidHlwZSA9IG5kYXRhLmFsZ29yaXRobS5hbGdvcml0aG0uam9pbignLicpXG4gICAgICBzd2l0Y2ggKHN1YnR5cGUpIHtcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEnOlxuICAgICAgICAgIHJldHVybiBhc24xLlJTQVByaXZhdGVLZXkuZGVjb2RlKG5kYXRhLnN1YmplY3RQcml2YXRlS2V5LCAnZGVyJylcbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0NS4yLjEnOlxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjdXJ2ZTogbmRhdGEuYWxnb3JpdGhtLmN1cnZlLFxuICAgICAgICAgICAgcHJpdmF0ZUtleTogYXNuMS5FQ1ByaXZhdGVLZXkuZGVjb2RlKG5kYXRhLnN1YmplY3RQcml2YXRlS2V5LCAnZGVyJykucHJpdmF0ZUtleVxuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0MC40LjEnOlxuICAgICAgICAgIG5kYXRhLmFsZ29yaXRobS5wYXJhbXMucHJpdl9rZXkgPSBhc24xLkRTQXBhcmFtLmRlY29kZShuZGF0YS5zdWJqZWN0UHJpdmF0ZUtleSwgJ2RlcicpXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdkc2EnLFxuICAgICAgICAgICAgcGFyYW1zOiBuZGF0YS5hbGdvcml0aG0ucGFyYW1zXG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IGlkICcgKyBzdWJ0eXBlKVxuICAgICAgfVxuICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSB0eXBlICcgKyB0eXBlKVxuICAgIGNhc2UgJ1JTQSBQVUJMSUMgS0VZJzpcbiAgICAgIHJldHVybiBhc24xLlJTQVB1YmxpY0tleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgY2FzZSAnUlNBIFBSSVZBVEUgS0VZJzpcbiAgICAgIHJldHVybiBhc24xLlJTQVByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgIGNhc2UgJ0RTQSBQUklWQVRFIEtFWSc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiAnZHNhJyxcbiAgICAgICAgcGFyYW1zOiBhc24xLkRTQVByaXZhdGVLZXkuZGVjb2RlKGRhdGEsICdkZXInKVxuICAgICAgfVxuICAgIGNhc2UgJ0VDIFBSSVZBVEUgS0VZJzpcbiAgICAgIGRhdGEgPSBhc24xLkVDUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICByZXR1cm4ge1xuICAgICAgICBjdXJ2ZTogZGF0YS5wYXJhbWV0ZXJzLnZhbHVlLFxuICAgICAgICBwcml2YXRlS2V5OiBkYXRhLnByaXZhdGVLZXlcbiAgICAgIH1cbiAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IHR5cGUgJyArIHR5cGUpXG4gIH1cbn1cbnBhcnNlS2V5cy5zaWduYXR1cmUgPSBhc24xLnNpZ25hdHVyZVxuZnVuY3Rpb24gZGVjcnlwdCAoZGF0YSwgcGFzc3dvcmQpIHtcbiAgdmFyIHNhbHQgPSBkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuc2FsdFxuICB2YXIgaXRlcnMgPSBwYXJzZUludChkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmtkZS5rZGVwYXJhbXMuaXRlcnMudG9TdHJpbmcoKSwgMTApXG4gIHZhciBhbGdvID0gYWVzaWRbZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuYWxnby5qb2luKCcuJyldXG4gIHZhciBpdiA9IGRhdGEuYWxnb3JpdGhtLmRlY3J5cHQuY2lwaGVyLml2XG4gIHZhciBjaXBoZXJUZXh0ID0gZGF0YS5zdWJqZWN0UHJpdmF0ZUtleVxuICB2YXIga2V5bGVuID0gcGFyc2VJbnQoYWxnby5zcGxpdCgnLScpWzFdLCAxMCkgLyA4XG4gIHZhciBrZXkgPSBjb21wYXQucGJrZGYyU3luYyhwYXNzd29yZCwgc2FsdCwgaXRlcnMsIGtleWxlbiwgJ3NoYTEnKVxuICB2YXIgY2lwaGVyID0gY2lwaGVycy5jcmVhdGVEZWNpcGhlcml2KGFsZ28sIGtleSwgaXYpXG4gIHZhciBvdXQgPSBbXVxuICBvdXQucHVzaChjaXBoZXIudXBkYXRlKGNpcGhlclRleHQpKVxuICBvdXQucHVzaChjaXBoZXIuZmluYWwoKSlcbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQob3V0KVxufVxuIiwiZXhwb3J0cy5wYmtkZjIgPSByZXF1aXJlKCcuL2xpYi9hc3luYycpXG5leHBvcnRzLnBia2RmMlN5bmMgPSByZXF1aXJlKCcuL2xpYi9zeW5jJylcbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgY2hlY2tQYXJhbWV0ZXJzID0gcmVxdWlyZSgnLi9wcmVjb25kaXRpb24nKVxudmFyIGRlZmF1bHRFbmNvZGluZyA9IHJlcXVpcmUoJy4vZGVmYXVsdC1lbmNvZGluZycpXG52YXIgc3luYyA9IHJlcXVpcmUoJy4vc3luYycpXG52YXIgdG9CdWZmZXIgPSByZXF1aXJlKCcuL3RvLWJ1ZmZlcicpXG5cbnZhciBaRVJPX0JVRlxudmFyIHN1YnRsZSA9IGdsb2JhbC5jcnlwdG8gJiYgZ2xvYmFsLmNyeXB0by5zdWJ0bGVcbnZhciB0b0Jyb3dzZXIgPSB7XG4gIHNoYTogJ1NIQS0xJyxcbiAgJ3NoYS0xJzogJ1NIQS0xJyxcbiAgc2hhMTogJ1NIQS0xJyxcbiAgc2hhMjU2OiAnU0hBLTI1NicsXG4gICdzaGEtMjU2JzogJ1NIQS0yNTYnLFxuICBzaGEzODQ6ICdTSEEtMzg0JyxcbiAgJ3NoYS0zODQnOiAnU0hBLTM4NCcsXG4gICdzaGEtNTEyJzogJ1NIQS01MTInLFxuICBzaGE1MTI6ICdTSEEtNTEyJ1xufVxudmFyIGNoZWNrcyA9IFtdXG5mdW5jdGlvbiBjaGVja05hdGl2ZSAoYWxnbykge1xuICBpZiAoZ2xvYmFsLnByb2Nlc3MgJiYgIWdsb2JhbC5wcm9jZXNzLmJyb3dzZXIpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGZhbHNlKVxuICB9XG4gIGlmICghc3VidGxlIHx8ICFzdWJ0bGUuaW1wb3J0S2V5IHx8ICFzdWJ0bGUuZGVyaXZlQml0cykge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZmFsc2UpXG4gIH1cbiAgaWYgKGNoZWNrc1thbGdvXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGNoZWNrc1thbGdvXVxuICB9XG4gIFpFUk9fQlVGID0gWkVST19CVUYgfHwgQnVmZmVyLmFsbG9jKDgpXG4gIHZhciBwcm9tID0gYnJvd3NlclBia2RmMihaRVJPX0JVRiwgWkVST19CVUYsIDEwLCAxMjgsIGFsZ28pXG4gICAgLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9KVxuICBjaGVja3NbYWxnb10gPSBwcm9tXG4gIHJldHVybiBwcm9tXG59XG52YXIgbmV4dFRpY2tcbmZ1bmN0aW9uIGdldE5leHRUaWNrICgpIHtcbiAgaWYgKG5leHRUaWNrKSB7XG4gICAgcmV0dXJuIG5leHRUaWNrXG4gIH1cbiAgaWYgKGdsb2JhbC5wcm9jZXNzICYmIGdsb2JhbC5wcm9jZXNzLm5leHRUaWNrKSB7XG4gICAgbmV4dFRpY2sgPSBnbG9iYWwucHJvY2Vzcy5uZXh0VGlja1xuICB9IGVsc2UgaWYgKGdsb2JhbC5xdWV1ZU1pY3JvdGFzaykge1xuICAgIG5leHRUaWNrID0gZ2xvYmFsLnF1ZXVlTWljcm90YXNrXG4gIH0gZWxzZSBpZiAoZ2xvYmFsLnNldEltbWVkaWF0ZSkge1xuICAgIG5leHRUaWNrID0gZ2xvYmFsLnNldEltbWVkaWF0ZVxuICB9IGVsc2Uge1xuICAgIG5leHRUaWNrID0gZ2xvYmFsLnNldFRpbWVvdXRcbiAgfVxuICByZXR1cm4gbmV4dFRpY2tcbn1cbmZ1bmN0aW9uIGJyb3dzZXJQYmtkZjIgKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBsZW5ndGgsIGFsZ28pIHtcbiAgcmV0dXJuIHN1YnRsZS5pbXBvcnRLZXkoXG4gICAgJ3JhdycsIHBhc3N3b3JkLCB7IG5hbWU6ICdQQktERjInIH0sIGZhbHNlLCBbJ2Rlcml2ZUJpdHMnXVxuICApLnRoZW4oZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBzdWJ0bGUuZGVyaXZlQml0cyh7XG4gICAgICBuYW1lOiAnUEJLREYyJyxcbiAgICAgIHNhbHQ6IHNhbHQsXG4gICAgICBpdGVyYXRpb25zOiBpdGVyYXRpb25zLFxuICAgICAgaGFzaDoge1xuICAgICAgICBuYW1lOiBhbGdvXG4gICAgICB9XG4gICAgfSwga2V5LCBsZW5ndGggPDwgMylcbiAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHJlcylcbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZVByb21pc2UgKHByb21pc2UsIGNhbGxiYWNrKSB7XG4gIHByb21pc2UudGhlbihmdW5jdGlvbiAob3V0KSB7XG4gICAgZ2V0TmV4dFRpY2soKShmdW5jdGlvbiAoKSB7XG4gICAgICBjYWxsYmFjayhudWxsLCBvdXQpXG4gICAgfSlcbiAgfSwgZnVuY3Rpb24gKGUpIHtcbiAgICBnZXROZXh0VGljaygpKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNhbGxiYWNrKGUpXG4gICAgfSlcbiAgfSlcbn1cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdCwgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBkaWdlc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IGRpZ2VzdFxuICAgIGRpZ2VzdCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgZGlnZXN0ID0gZGlnZXN0IHx8ICdzaGExJ1xuICB2YXIgYWxnbyA9IHRvQnJvd3NlcltkaWdlc3QudG9Mb3dlckNhc2UoKV1cblxuICBpZiAoIWFsZ28gfHwgdHlwZW9mIGdsb2JhbC5Qcm9taXNlICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgZ2V0TmV4dFRpY2soKShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgb3V0XG4gICAgICB0cnkge1xuICAgICAgICBvdXQgPSBzeW5jKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdClcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGUpXG4gICAgICB9XG4gICAgICBjYWxsYmFjayhudWxsLCBvdXQpXG4gICAgfSlcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNoZWNrUGFyYW1ldGVycyhpdGVyYXRpb25zLCBrZXlsZW4pXG4gIHBhc3N3b3JkID0gdG9CdWZmZXIocGFzc3dvcmQsIGRlZmF1bHRFbmNvZGluZywgJ1Bhc3N3b3JkJylcbiAgc2FsdCA9IHRvQnVmZmVyKHNhbHQsIGRlZmF1bHRFbmNvZGluZywgJ1NhbHQnKVxuICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBuZXcgRXJyb3IoJ05vIGNhbGxiYWNrIHByb3ZpZGVkIHRvIHBia2RmMicpXG5cbiAgcmVzb2x2ZVByb21pc2UoY2hlY2tOYXRpdmUoYWxnbykudGhlbihmdW5jdGlvbiAocmVzcCkge1xuICAgIGlmIChyZXNwKSByZXR1cm4gYnJvd3NlclBia2RmMihwYXNzd29yZCwgc2FsdCwgaXRlcmF0aW9ucywga2V5bGVuLCBhbGdvKVxuXG4gICAgcmV0dXJuIHN5bmMocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0KVxuICB9KSwgY2FsbGJhY2spXG59XG4iLCJ2YXIgZGVmYXVsdEVuY29kaW5nXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuaWYgKGdsb2JhbC5wcm9jZXNzICYmIGdsb2JhbC5wcm9jZXNzLmJyb3dzZXIpIHtcbiAgZGVmYXVsdEVuY29kaW5nID0gJ3V0Zi04J1xufSBlbHNlIGlmIChnbG9iYWwucHJvY2VzcyAmJiBnbG9iYWwucHJvY2Vzcy52ZXJzaW9uKSB7XG4gIHZhciBwVmVyc2lvbk1ham9yID0gcGFyc2VJbnQocHJvY2Vzcy52ZXJzaW9uLnNwbGl0KCcuJylbMF0uc2xpY2UoMSksIDEwKVxuXG4gIGRlZmF1bHRFbmNvZGluZyA9IHBWZXJzaW9uTWFqb3IgPj0gNiA/ICd1dGYtOCcgOiAnYmluYXJ5J1xufSBlbHNlIHtcbiAgZGVmYXVsdEVuY29kaW5nID0gJ3V0Zi04J1xufVxubW9kdWxlLmV4cG9ydHMgPSBkZWZhdWx0RW5jb2RpbmdcbiIsInZhciBNQVhfQUxMT0MgPSBNYXRoLnBvdygyLCAzMCkgLSAxIC8vIGRlZmF1bHQgaW4gaW9qc1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRpb25zLCBrZXlsZW4pIHtcbiAgaWYgKHR5cGVvZiBpdGVyYXRpb25zICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0l0ZXJhdGlvbnMgbm90IGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmIChpdGVyYXRpb25zIDwgMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JhZCBpdGVyYXRpb25zJylcbiAgfVxuXG4gIGlmICh0eXBlb2Yga2V5bGVuICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0tleSBsZW5ndGggbm90IGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmIChrZXlsZW4gPCAwIHx8IGtleWxlbiA+IE1BWF9BTExPQyB8fCBrZXlsZW4gIT09IGtleWxlbikgeyAvKiBlc2xpbnQgbm8tc2VsZi1jb21wYXJlOiAwICovXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQmFkIGtleSBsZW5ndGgnKVxuICB9XG59XG4iLCJ2YXIgbWQ1ID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gvbWQ1JylcbnZhciBSSVBFTUQxNjAgPSByZXF1aXJlKCdyaXBlbWQxNjAnKVxudmFyIHNoYSA9IHJlcXVpcmUoJ3NoYS5qcycpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIGNoZWNrUGFyYW1ldGVycyA9IHJlcXVpcmUoJy4vcHJlY29uZGl0aW9uJylcbnZhciBkZWZhdWx0RW5jb2RpbmcgPSByZXF1aXJlKCcuL2RlZmF1bHQtZW5jb2RpbmcnKVxudmFyIHRvQnVmZmVyID0gcmVxdWlyZSgnLi90by1idWZmZXInKVxuXG52YXIgWkVST1MgPSBCdWZmZXIuYWxsb2MoMTI4KVxudmFyIHNpemVzID0ge1xuICBtZDU6IDE2LFxuICBzaGExOiAyMCxcbiAgc2hhMjI0OiAyOCxcbiAgc2hhMjU2OiAzMixcbiAgc2hhMzg0OiA0OCxcbiAgc2hhNTEyOiA2NCxcbiAgcm1kMTYwOiAyMCxcbiAgcmlwZW1kMTYwOiAyMFxufVxuXG5mdW5jdGlvbiBIbWFjIChhbGcsIGtleSwgc2FsdExlbikge1xuICB2YXIgaGFzaCA9IGdldERpZ2VzdChhbGcpXG4gIHZhciBibG9ja3NpemUgPSAoYWxnID09PSAnc2hhNTEyJyB8fCBhbGcgPT09ICdzaGEzODQnKSA/IDEyOCA6IDY0XG5cbiAgaWYgKGtleS5sZW5ndGggPiBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBoYXNoKGtleSlcbiAgfSBlbHNlIGlmIChrZXkubGVuZ3RoIDwgYmxvY2tzaXplKSB7XG4gICAga2V5ID0gQnVmZmVyLmNvbmNhdChba2V5LCBaRVJPU10sIGJsb2Nrc2l6ZSlcbiAgfVxuXG4gIHZhciBpcGFkID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2Nrc2l6ZSArIHNpemVzW2FsZ10pXG4gIHZhciBvcGFkID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2Nrc2l6ZSArIHNpemVzW2FsZ10pXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tzaXplOyBpKyspIHtcbiAgICBpcGFkW2ldID0ga2V5W2ldIF4gMHgzNlxuICAgIG9wYWRbaV0gPSBrZXlbaV0gXiAweDVDXG4gIH1cblxuICB2YXIgaXBhZDEgPSBCdWZmZXIuYWxsb2NVbnNhZmUoYmxvY2tzaXplICsgc2FsdExlbiArIDQpXG4gIGlwYWQuY29weShpcGFkMSwgMCwgMCwgYmxvY2tzaXplKVxuICB0aGlzLmlwYWQxID0gaXBhZDFcbiAgdGhpcy5pcGFkMiA9IGlwYWRcbiAgdGhpcy5vcGFkID0gb3BhZFxuICB0aGlzLmFsZyA9IGFsZ1xuICB0aGlzLmJsb2Nrc2l6ZSA9IGJsb2Nrc2l6ZVxuICB0aGlzLmhhc2ggPSBoYXNoXG4gIHRoaXMuc2l6ZSA9IHNpemVzW2FsZ11cbn1cblxuSG1hYy5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKGRhdGEsIGlwYWQpIHtcbiAgZGF0YS5jb3B5KGlwYWQsIHRoaXMuYmxvY2tzaXplKVxuICB2YXIgaCA9IHRoaXMuaGFzaChpcGFkKVxuICBoLmNvcHkodGhpcy5vcGFkLCB0aGlzLmJsb2Nrc2l6ZSlcbiAgcmV0dXJuIHRoaXMuaGFzaCh0aGlzLm9wYWQpXG59XG5cbmZ1bmN0aW9uIGdldERpZ2VzdCAoYWxnKSB7XG4gIGZ1bmN0aW9uIHNoYUZ1bmMgKGRhdGEpIHtcbiAgICByZXR1cm4gc2hhKGFsZykudXBkYXRlKGRhdGEpLmRpZ2VzdCgpXG4gIH1cbiAgZnVuY3Rpb24gcm1kMTYwRnVuYyAoZGF0YSkge1xuICAgIHJldHVybiBuZXcgUklQRU1EMTYwKCkudXBkYXRlKGRhdGEpLmRpZ2VzdCgpXG4gIH1cblxuICBpZiAoYWxnID09PSAncm1kMTYwJyB8fCBhbGcgPT09ICdyaXBlbWQxNjAnKSByZXR1cm4gcm1kMTYwRnVuY1xuICBpZiAoYWxnID09PSAnbWQ1JykgcmV0dXJuIG1kNVxuICByZXR1cm4gc2hhRnVuY1xufVxuXG5mdW5jdGlvbiBwYmtkZjIgKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdCkge1xuICBjaGVja1BhcmFtZXRlcnMoaXRlcmF0aW9ucywga2V5bGVuKVxuICBwYXNzd29yZCA9IHRvQnVmZmVyKHBhc3N3b3JkLCBkZWZhdWx0RW5jb2RpbmcsICdQYXNzd29yZCcpXG4gIHNhbHQgPSB0b0J1ZmZlcihzYWx0LCBkZWZhdWx0RW5jb2RpbmcsICdTYWx0JylcblxuICBkaWdlc3QgPSBkaWdlc3QgfHwgJ3NoYTEnXG5cbiAgdmFyIGhtYWMgPSBuZXcgSG1hYyhkaWdlc3QsIHBhc3N3b3JkLCBzYWx0Lmxlbmd0aClcblxuICB2YXIgREsgPSBCdWZmZXIuYWxsb2NVbnNhZmUoa2V5bGVuKVxuICB2YXIgYmxvY2sxID0gQnVmZmVyLmFsbG9jVW5zYWZlKHNhbHQubGVuZ3RoICsgNClcbiAgc2FsdC5jb3B5KGJsb2NrMSwgMCwgMCwgc2FsdC5sZW5ndGgpXG5cbiAgdmFyIGRlc3RQb3MgPSAwXG4gIHZhciBoTGVuID0gc2l6ZXNbZGlnZXN0XVxuICB2YXIgbCA9IE1hdGguY2VpbChrZXlsZW4gLyBoTGVuKVxuXG4gIGZvciAodmFyIGkgPSAxOyBpIDw9IGw7IGkrKykge1xuICAgIGJsb2NrMS53cml0ZVVJbnQzMkJFKGksIHNhbHQubGVuZ3RoKVxuXG4gICAgdmFyIFQgPSBobWFjLnJ1bihibG9jazEsIGhtYWMuaXBhZDEpXG4gICAgdmFyIFUgPSBUXG5cbiAgICBmb3IgKHZhciBqID0gMTsgaiA8IGl0ZXJhdGlvbnM7IGorKykge1xuICAgICAgVSA9IGhtYWMucnVuKFUsIGhtYWMuaXBhZDIpXG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IGhMZW47IGsrKykgVFtrXSBePSBVW2tdXG4gICAgfVxuXG4gICAgVC5jb3B5KERLLCBkZXN0UG9zKVxuICAgIGRlc3RQb3MgKz0gaExlblxuICB9XG5cbiAgcmV0dXJuIERLXG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGJrZGYyXG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhpbmcsIGVuY29kaW5nLCBuYW1lKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodGhpbmcpKSB7XG4gICAgcmV0dXJuIHRoaW5nXG4gIH0gZWxzZSBpZiAodHlwZW9mIHRoaW5nID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh0aGluZywgZW5jb2RpbmcpXG4gIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaW5nKSkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh0aGluZy5idWZmZXIpXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihuYW1lICsgJyBtdXN0IGJlIGEgc3RyaW5nLCBhIEJ1ZmZlciwgYSB0eXBlZCBhcnJheSBvciBhIERhdGFWaWV3JylcbiAgfVxufVxuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsImV4cG9ydHMucHVibGljRW5jcnlwdCA9IHJlcXVpcmUoJy4vcHVibGljRW5jcnlwdCcpXG5leHBvcnRzLnByaXZhdGVEZWNyeXB0ID0gcmVxdWlyZSgnLi9wcml2YXRlRGVjcnlwdCcpXG5cbmV4cG9ydHMucHJpdmF0ZUVuY3J5cHQgPSBmdW5jdGlvbiBwcml2YXRlRW5jcnlwdCAoa2V5LCBidWYpIHtcbiAgcmV0dXJuIGV4cG9ydHMucHVibGljRW5jcnlwdChrZXksIGJ1ZiwgdHJ1ZSlcbn1cblxuZXhwb3J0cy5wdWJsaWNEZWNyeXB0ID0gZnVuY3Rpb24gcHVibGljRGVjcnlwdCAoa2V5LCBidWYpIHtcbiAgcmV0dXJuIGV4cG9ydHMucHJpdmF0ZURlY3J5cHQoa2V5LCBidWYsIHRydWUpXG59XG4iLCJ2YXIgY3JlYXRlSGFzaCA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzZWVkLCBsZW4pIHtcbiAgdmFyIHQgPSBCdWZmZXIuYWxsb2MoMClcbiAgdmFyIGkgPSAwXG4gIHZhciBjXG4gIHdoaWxlICh0Lmxlbmd0aCA8IGxlbikge1xuICAgIGMgPSBpMm9wcyhpKyspXG4gICAgdCA9IEJ1ZmZlci5jb25jYXQoW3QsIGNyZWF0ZUhhc2goJ3NoYTEnKS51cGRhdGUoc2VlZCkudXBkYXRlKGMpLmRpZ2VzdCgpXSlcbiAgfVxuICByZXR1cm4gdC5zbGljZSgwLCBsZW4pXG59XG5cbmZ1bmN0aW9uIGkyb3BzIChjKSB7XG4gIHZhciBvdXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoNClcbiAgb3V0LndyaXRlVUludDMyQkUoYywgMClcbiAgcmV0dXJuIG91dFxufVxuIiwiKGZ1bmN0aW9uIChtb2R1bGUsIGV4cG9ydHMpIHtcbiAgJ3VzZSBzdHJpY3QnO1xuXG4gIC8vIFV0aWxzXG4gIGZ1bmN0aW9uIGFzc2VydCAodmFsLCBtc2cpIHtcbiAgICBpZiAoIXZhbCkgdGhyb3cgbmV3IEVycm9yKG1zZyB8fCAnQXNzZXJ0aW9uIGZhaWxlZCcpO1xuICB9XG5cbiAgLy8gQ291bGQgdXNlIGBpbmhlcml0c2AgbW9kdWxlLCBidXQgZG9uJ3Qgd2FudCB0byBtb3ZlIGZyb20gc2luZ2xlIGZpbGVcbiAgLy8gYXJjaGl0ZWN0dXJlIHlldC5cbiAgZnVuY3Rpb24gaW5oZXJpdHMgKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yO1xuICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9O1xuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGU7XG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKTtcbiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3I7XG4gIH1cblxuICAvLyBCTlxuXG4gIGZ1bmN0aW9uIEJOIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChCTi5pc0JOKG51bWJlcikpIHtcbiAgICAgIHJldHVybiBudW1iZXI7XG4gICAgfVxuXG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgdGhpcy53b3JkcyA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuXG4gICAgLy8gUmVkdWN0aW9uIGNvbnRleHRcbiAgICB0aGlzLnJlZCA9IG51bGw7XG5cbiAgICBpZiAobnVtYmVyICE9PSBudWxsKSB7XG4gICAgICBpZiAoYmFzZSA9PT0gJ2xlJyB8fCBiYXNlID09PSAnYmUnKSB7XG4gICAgICAgIGVuZGlhbiA9IGJhc2U7XG4gICAgICAgIGJhc2UgPSAxMDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faW5pdChudW1iZXIgfHwgMCwgYmFzZSB8fCAxMCwgZW5kaWFuIHx8ICdiZScpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IEJOO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQk4gPSBCTjtcbiAgfVxuXG4gIEJOLkJOID0gQk47XG4gIEJOLndvcmRTaXplID0gMjY7XG5cbiAgdmFyIEJ1ZmZlcjtcbiAgdHJ5IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdy5CdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBCdWZmZXIgPSB3aW5kb3cuQnVmZmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gIH1cblxuICBCTi5pc0JOID0gZnVuY3Rpb24gaXNCTiAobnVtKSB7XG4gICAgaWYgKG51bSBpbnN0YW5jZW9mIEJOKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVtICE9PSBudWxsICYmIHR5cGVvZiBudW0gPT09ICdvYmplY3QnICYmXG4gICAgICBudW0uY29uc3RydWN0b3Iud29yZFNpemUgPT09IEJOLndvcmRTaXplICYmIEFycmF5LmlzQXJyYXkobnVtLndvcmRzKTtcbiAgfTtcblxuICBCTi5tYXggPSBmdW5jdGlvbiBtYXggKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA+IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5taW4gPSBmdW5jdGlvbiBtaW4gKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKGxlZnQuY21wKHJpZ2h0KSA8IDApIHJldHVybiBsZWZ0O1xuICAgIHJldHVybiByaWdodDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXROdW1iZXIobnVtYmVyLCBiYXNlLCBlbmRpYW4pO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgbnVtYmVyID09PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuIHRoaXMuX2luaXRBcnJheShudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09ICdoZXgnKSB7XG4gICAgICBiYXNlID0gMTY7XG4gICAgfVxuICAgIGFzc2VydChiYXNlID09PSAoYmFzZSB8IDApICYmIGJhc2UgPj0gMiAmJiBiYXNlIDw9IDM2KTtcblxuICAgIG51bWJlciA9IG51bWJlci50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJycpO1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgaWYgKG51bWJlclswXSA9PT0gJy0nKSB7XG4gICAgICBzdGFydCsrO1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0IDwgbnVtYmVyLmxlbmd0aCkge1xuICAgICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICAgIHRoaXMuX3BhcnNlSGV4KG51bWJlciwgc3RhcnQsIGVuZGlhbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9wYXJzZUJhc2UobnVtYmVyLCBiYXNlLCBzdGFydCk7XG4gICAgICAgIGlmIChlbmRpYW4gPT09ICdsZScpIHtcbiAgICAgICAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0TnVtYmVyID0gZnVuY3Rpb24gX2luaXROdW1iZXIgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgbnVtYmVyID0gLW51bWJlcjtcbiAgICB9XG4gICAgaWYgKG51bWJlciA8IDB4NDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgbnVtYmVyICYgMHgzZmZmZmZmIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfSBlbHNlIGlmIChudW1iZXIgPCAweDEwMDAwMDAwMDAwMDAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gW1xuICAgICAgICBudW1iZXIgJiAweDNmZmZmZmYsXG4gICAgICAgIChudW1iZXIgLyAweDQwMDAwMDApICYgMHgzZmZmZmZmXG4gICAgICBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAyO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NlcnQobnVtYmVyIDwgMHgyMDAwMDAwMDAwMDAwMCk7IC8vIDIgXiA1MyAodW5zYWZlKVxuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZixcbiAgICAgICAgMVxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMztcbiAgICB9XG5cbiAgICBpZiAoZW5kaWFuICE9PSAnbGUnKSByZXR1cm47XG5cbiAgICAvLyBSZXZlcnNlIHRoZSBieXRlc1xuICAgIHRoaXMuX2luaXRBcnJheSh0aGlzLnRvQXJyYXkoKSwgYmFzZSwgZW5kaWFuKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2luaXRBcnJheSA9IGZ1bmN0aW9uIF9pbml0QXJyYXkgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgLy8gUGVyaGFwcyBhIFVpbnQ4QXJyYXlcbiAgICBhc3NlcnQodHlwZW9mIG51bWJlci5sZW5ndGggPT09ICdudW1iZXInKTtcbiAgICBpZiAobnVtYmVyLmxlbmd0aCA8PSAwKSB7XG4gICAgICB0aGlzLndvcmRzID0gWyAwIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbChudW1iZXIubGVuZ3RoIC8gMyk7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMSwgaiA9IDA7IGkgPj0gMDsgaSAtPSAzKSB7XG4gICAgICAgIHcgPSBudW1iZXJbaV0gfCAobnVtYmVyW2kgLSAxXSA8PCA4KSB8IChudW1iZXJbaSAtIDJdIDw8IDE2KTtcbiAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgICB0aGlzLndvcmRzW2ogKyAxXSA9ICh3ID4+PiAoMjYgLSBvZmYpKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgb2ZmICs9IDI0O1xuICAgICAgICBpZiAob2ZmID49IDI2KSB7XG4gICAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICAgIGorKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZW5kaWFuID09PSAnbGUnKSB7XG4gICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IG51bWJlci5sZW5ndGg7IGkgKz0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpICsgMV0gPDwgOCkgfCAobnVtYmVyW2kgKyAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUhleDRCaXRzIChzdHJpbmcsIGluZGV4KSB7XG4gICAgdmFyIGMgPSBzdHJpbmcuY2hhckNvZGVBdChpbmRleCk7XG4gICAgLy8gJ0EnIC0gJ0YnXG4gICAgaWYgKGMgPj0gNjUgJiYgYyA8PSA3MCkge1xuICAgICAgcmV0dXJuIGMgLSA1NTtcbiAgICAvLyAnYScgLSAnZidcbiAgICB9IGVsc2UgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMDIpIHtcbiAgICAgIHJldHVybiBjIC0gODc7XG4gICAgLy8gJzAnIC0gJzknXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoYyAtIDQ4KSAmIDB4ZjtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBwYXJzZUhleEJ5dGUgKHN0cmluZywgbG93ZXJCb3VuZCwgaW5kZXgpIHtcbiAgICB2YXIgciA9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCk7XG4gICAgaWYgKGluZGV4IC0gMSA+PSBsb3dlckJvdW5kKSB7XG4gICAgICByIHw9IHBhcnNlSGV4NEJpdHMoc3RyaW5nLCBpbmRleCAtIDEpIDw8IDQ7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUhleCA9IGZ1bmN0aW9uIF9wYXJzZUhleCAobnVtYmVyLCBzdGFydCwgZW5kaWFuKSB7XG4gICAgLy8gQ3JlYXRlIHBvc3NpYmx5IGJpZ2dlciBhcnJheSB0byBlbnN1cmUgdGhhdCBpdCBmaXRzIHRoZSBudW1iZXJcbiAgICB0aGlzLmxlbmd0aCA9IE1hdGguY2VpbCgobnVtYmVyLmxlbmd0aCAtIHN0YXJ0KSAvIDYpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgLy8gMjQtYml0cyBjaHVua3NcbiAgICB2YXIgb2ZmID0gMDtcbiAgICB2YXIgaiA9IDA7XG5cbiAgICB2YXIgdztcbiAgICBpZiAoZW5kaWFuID09PSAnYmUnKSB7XG4gICAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gMTsgaSA+PSBzdGFydDsgaSAtPSAyKSB7XG4gICAgICAgIHcgPSBwYXJzZUhleEJ5dGUobnVtYmVyLCBzdGFydCwgaSkgPDwgb2ZmO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9IHcgJiAweDNmZmZmZmY7XG4gICAgICAgIGlmIChvZmYgPj0gMTgpIHtcbiAgICAgICAgICBvZmYgLT0gMTg7XG4gICAgICAgICAgaiArPSAxO1xuICAgICAgICAgIHRoaXMud29yZHNbal0gfD0gdyA+Pj4gMjY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2ZmICs9IDg7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhcnNlTGVuZ3RoID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgICAgZm9yIChpID0gcGFyc2VMZW5ndGggJSAyID09PSAwID8gc3RhcnQgKyAxIDogc3RhcnQ7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgdyA9IHBhcnNlSGV4Qnl0ZShudW1iZXIsIHN0YXJ0LCBpKSA8PCBvZmY7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gdyAmIDB4M2ZmZmZmZjtcbiAgICAgICAgaWYgKG9mZiA+PSAxOCkge1xuICAgICAgICAgIG9mZiAtPSAxODtcbiAgICAgICAgICBqICs9IDE7XG4gICAgICAgICAgdGhpcy53b3Jkc1tqXSB8PSB3ID4+PiAyNjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvZmYgKz0gODtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIHIgKz0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICByICs9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUJhc2UgPSBmdW5jdGlvbiBfcGFyc2VCYXNlIChudW1iZXIsIGJhc2UsIHN0YXJ0KSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBhcyB6ZXJvXG4gICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA+IDEgJiYgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX25vcm1TaWduID0gZnVuY3Rpb24gX25vcm1TaWduICgpIHtcbiAgICAvLyAtMCA9IDBcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH07XG5cbiAgLypcblxuICB2YXIgemVyb3MgPSBbXTtcbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXTtcbiAgdmFyIGdyb3VwQmFzZXMgPSBbXTtcblxuICB2YXIgcyA9ICcnO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgQk4ud29yZFNpemUpIHtcbiAgICB6ZXJvc1tpXSA9IHM7XG4gICAgcyArPSAnMCc7XG4gIH1cbiAgZ3JvdXBTaXplc1swXSA9IDA7XG4gIGdyb3VwU2l6ZXNbMV0gPSAwO1xuICBncm91cEJhc2VzWzBdID0gMDtcbiAgZ3JvdXBCYXNlc1sxXSA9IDA7XG4gIHZhciBiYXNlID0gMiAtIDE7XG4gIHdoaWxlICgrK2Jhc2UgPCAzNiArIDEpIHtcbiAgICB2YXIgZ3JvdXBTaXplID0gMDtcbiAgICB2YXIgZ3JvdXBCYXNlID0gMTtcbiAgICB3aGlsZSAoZ3JvdXBCYXNlIDwgKDEgPDwgQk4ud29yZFNpemUpIC8gYmFzZSkge1xuICAgICAgZ3JvdXBCYXNlICo9IGJhc2U7XG4gICAgICBncm91cFNpemUgKz0gMTtcbiAgICB9XG4gICAgZ3JvdXBTaXplc1tiYXNlXSA9IGdyb3VwU2l6ZTtcbiAgICBncm91cEJhc2VzW2Jhc2VdID0gZ3JvdXBCYXNlO1xuICB9XG5cbiAgKi9cblxuICB2YXIgemVyb3MgPSBbXG4gICAgJycsXG4gICAgJzAnLFxuICAgICcwMCcsXG4gICAgJzAwMCcsXG4gICAgJzAwMDAnLFxuICAgICcwMDAwMCcsXG4gICAgJzAwMDAwMCcsXG4gICAgJzAwMDAwMDAnLFxuICAgICcwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gIF07XG5cbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXG4gICAgMCwgMCxcbiAgICAyNSwgMTYsIDEyLCAxMSwgMTAsIDksIDgsXG4gICAgOCwgNywgNywgNywgNywgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNVxuICBdO1xuXG4gIHZhciBncm91cEJhc2VzID0gW1xuICAgIDAsIDAsXG4gICAgMzM1NTQ0MzIsIDQzMDQ2NzIxLCAxNjc3NzIxNiwgNDg4MjgxMjUsIDYwNDY2MTc2LCA0MDM1MzYwNywgMTY3NzcyMTYsXG4gICAgNDMwNDY3MjEsIDEwMDAwMDAwLCAxOTQ4NzE3MSwgMzU4MzE4MDgsIDYyNzQ4NTE3LCA3NTI5NTM2LCAxMTM5MDYyNSxcbiAgICAxNjc3NzIxNiwgMjQxMzc1NjksIDM0MDEyMjI0LCA0NzA0NTg4MSwgNjQwMDAwMDAsIDQwODQxMDEsIDUxNTM2MzIsXG4gICAgNjQzNjM0MywgNzk2MjYyNCwgOTc2NTYyNSwgMTE4ODEzNzYsIDE0MzQ4OTA3LCAxNzIxMDM2OCwgMjA1MTExNDksXG4gICAgMjQzMDAwMDAsIDI4NjI5MTUxLCAzMzU1NDQzMiwgMzkxMzUzOTMsIDQ1NDM1NDI0LCA1MjUyMTg3NSwgNjA0NjYxNzZcbiAgXTtcblxuICBCTi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYmFzZSwgcGFkZGluZykge1xuICAgIGJhc2UgPSBiYXNlIHx8IDEwO1xuICAgIHBhZGRpbmcgPSBwYWRkaW5nIHwgMCB8fCAxO1xuXG4gICAgdmFyIG91dDtcbiAgICBpZiAoYmFzZSA9PT0gMTYgfHwgYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIG9mZiA9IDA7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgICAgdmFyIHdvcmQgPSAoKCh3IDw8IG9mZikgfCBjYXJyeSkgJiAweGZmZmZmZikudG9TdHJpbmcoMTYpO1xuICAgICAgICBjYXJyeSA9ICh3ID4+PiAoMjQgLSBvZmYpKSAmIDB4ZmZmZmZmO1xuICAgICAgICBpZiAoY2FycnkgIT09IDAgfHwgaSAhPT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbNiAtIHdvcmQubGVuZ3RoXSArIHdvcmQgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gd29yZCArIG91dDtcbiAgICAgICAgfVxuICAgICAgICBvZmYgKz0gMjtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgICBvdXQgPSBjYXJyeS50b1N0cmluZygxNikgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNikge1xuICAgICAgLy8gdmFyIGdyb3VwU2l6ZSA9IE1hdGguZmxvb3IoQk4ud29yZFNpemUgKiBNYXRoLkxOMiAvIE1hdGgubG9nKGJhc2UpKTtcbiAgICAgIHZhciBncm91cFNpemUgPSBncm91cFNpemVzW2Jhc2VdO1xuICAgICAgLy8gdmFyIGdyb3VwQmFzZSA9IE1hdGgucG93KGJhc2UsIGdyb3VwU2l6ZSk7XG4gICAgICB2YXIgZ3JvdXBCYXNlID0gZ3JvdXBCYXNlc1tiYXNlXTtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIGMgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjLm5lZ2F0aXZlID0gMDtcbiAgICAgIHdoaWxlICghYy5pc1plcm8oKSkge1xuICAgICAgICB2YXIgciA9IGMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgICB2YXIgbGl0dGxlRW5kaWFuID0gZW5kaWFuID09PSAnbGUnO1xuICAgIHZhciByZXMgPSBuZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7XG5cbiAgICB2YXIgYiwgaTtcbiAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKTtcbiAgICBpZiAoIWxpdHRsZUVuZGlhbikge1xuICAgICAgLy8gQXNzdW1lIGJpZy1lbmRpYW5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXFMZW5ndGggLSBieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW3JlcUxlbmd0aCAtIGkgLSAxXSA9IGI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tpXSA9IGI7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBpIDwgcmVxTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSAmICgxIDw8IHdiaXQpKSA+Pj4gd2JpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdztcbiAgfVxuXG4gIC8vIE51bWJlciBvZiB0cmFpbGluZyB6ZXJvIGJpdHNcbiAgQk4ucHJvdG90eXBlLnplcm9CaXRzID0gZnVuY3Rpb24gemVyb0JpdHMgKCkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gMDtcblxuICAgIHZhciByID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBiID0gdGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7XG4gICAgICByICs9IGI7XG4gICAgICBpZiAoYiAhPT0gMjYpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIGJ5dGVMZW5ndGggKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKSAvIDgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1R3b3MgPSBmdW5jdGlvbiB0b1R3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVR3b3MgPSBmdW5jdGlvbiBmcm9tVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy50ZXN0bih3aWR0aCAtIDEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RuKHdpZHRoKS5pYWRkbigxKS5pbmVnKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gaXNOZWcgKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlICE9PSAwO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluZWcgPSBmdW5jdGlvbiBpbmVnICgpIHtcbiAgICBpZiAoIXRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVvciA9IGZ1bmN0aW9uIGl1b3IgKG51bSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSB8IG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXhvciA9IGZ1bmN0aW9uIGl4b3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1eG9yKG51bSk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5peG9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51eG9yID0gZnVuY3Rpb24gdXhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKTtcbiAgfTtcblxuICAvLyBOb3QgYGB0aGlzYGAgd2l0aCBgYHdpZHRoYGAgYml0d2lkdGhcbiAgQk4ucHJvdG90eXBlLmlub3RuID0gZnVuY3Rpb24gaW5vdG4gKHdpZHRoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgJiYgd2lkdGggPj0gMCk7XG5cbiAgICB2YXIgYnl0ZXNOZWVkZWQgPSBNYXRoLmNlaWwod2lkdGggLyAyNikgfCAwO1xuICAgIHZhciBiaXRzTGVmdCA9IHdpZHRoICUgMjY7XG5cbiAgICAvLyBFeHRlbmQgdGhlIGJ1ZmZlciB3aXRoIGxlYWRpbmcgemVyb2VzXG4gICAgdGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtcblxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIGJ5dGVzTmVlZGVkLS07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRlIHdvcmRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlc05lZWRlZDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRoZSByZXNpZHVlXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgKDB4M2ZmZmZmZiA+PiAoMjYgLSBiaXRzTGVmdCkpO1xuICAgIH1cblxuICAgIC8vIEFuZCByZW1vdmUgbGVhZGluZyB6ZXJvZXNcbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gc21hbGxNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIHZhciBsZW4gPSAoc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoKSB8IDA7XG4gICAgb3V0Lmxlbmd0aCA9IGxlbjtcbiAgICBsZW4gPSAobGVuIC0gMSkgfCAwO1xuXG4gICAgLy8gUGVlbCBvbmUgaXRlcmF0aW9uIChjb21waWxlciBjYW4ndCBkbyBpdCwgYmVjYXVzZSBvZiBjb2RlIGNvbXBsZXhpdHkpXG4gICAgdmFyIGEgPSBzZWxmLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgYiA9IG51bS53b3Jkc1swXSB8IDA7XG4gICAgdmFyIHIgPSBhICogYjtcblxuICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgdmFyIGNhcnJ5ID0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICBvdXQud29yZHNbMF0gPSBsbztcblxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gY2FycnkgPj4+IDI2O1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSAoayAtIGopIHwgMDtcbiAgICAgICAgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgciA9IGEgKiBiICsgcndvcmQ7XG4gICAgICAgIG5jYXJyeSArPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgICByd29yZCA9IHIgJiAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZCB8IDA7XG4gICAgICBjYXJyeSA9IG5jYXJyeSB8IDA7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2FycnkgfCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNobG4gPSBmdW5jdGlvbiBpc2hsbiAoYml0cykge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHQgaW4tcGxhY2VcbiAgLy8gTk9URTogYGhpbnRgIGlzIGEgbG93ZXN0IGJpdCBiZWZvcmUgdHJhaWxpbmcgemVyb2VzXG4gIC8vIE5PVEU6IGlmIGBleHRlbmRlZGAgaXMgcHJlc2VudCAtIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggZGVzdHJveWVkIGJpdHNcbiAgQk4ucHJvdG90eXBlLml1c2hybiA9IGZ1bmN0aW9uIGl1c2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIGg7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIGggPSAoaGludCAtIChoaW50ICUgMjYpKSAvIDI2O1xuICAgIH0gZWxzZSB7XG4gICAgICBoID0gMDtcbiAgICB9XG5cbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IE1hdGgubWluKChiaXRzIC0gcikgLyAyNiwgdGhpcy5sZW5ndGgpO1xuICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgIHZhciBtYXNrZWRXb3JkcyA9IGV4dGVuZGVkO1xuXG4gICAgaCAtPSBzO1xuICAgIGggPSBNYXRoLm1heCgwLCBoKTtcblxuICAgIC8vIEV4dGVuZGVkIG1vZGUsIGNvcHkgbWFza2VkIHBhcnRcbiAgICBpZiAobWFza2VkV29yZHMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIG1hc2tlZFdvcmRzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICAgIG1hc2tlZFdvcmRzLmxlbmd0aCA9IHM7XG4gICAgfVxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIC8vIE5vLW9wLCB3ZSBzaG91bGQgbm90IG1vdmUgYW55dGhpbmcgYXQgYWxsXG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IHMpIHtcbiAgICAgIHRoaXMubGVuZ3RoIC09IHM7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpICsgc107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDAgJiYgKGNhcnJ5ICE9PSAwIHx8IGkgPj0gaCk7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAoY2FycnkgPDwgKDI2IC0gcikpIHwgKHdvcmQgPj4+IHIpO1xuICAgICAgY2FycnkgPSB3b3JkICYgbWFzaztcbiAgICB9XG5cbiAgICAvLyBQdXNoIGNhcnJpZWQgYml0cyBhcyBhIG1hc2tcbiAgICBpZiAobWFza2VkV29yZHMgJiYgY2FycnkgIT09IDApIHtcbiAgICAgIG1hc2tlZFdvcmRzLndvcmRzW21hc2tlZFdvcmRzLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChyLnN0cmlwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gciBpcyBCTiB2NCBpbnN0YW5jZVxuICAgICAgICByLnN0cmlwKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyByIGlzIEJOIHY1IGluc3RhbmNlXG4gICAgICAgIHIuX3N0cmlwKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0KSB7XG4gICAgaW5wdXQuaXVzaHJuKHRoaXMubiwgMCwgb3V0KTtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIHJldHVybiBudW0uaW11bCh0aGlzLmspO1xuICB9O1xuXG4gIGZ1bmN0aW9uIEsyNTYgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdrMjU2JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZSBmZmZmZmMyZicpO1xuICB9XG4gIGluaGVyaXRzKEsyNTYsIE1QcmltZSk7XG5cbiAgSzI1Ni5wcm90b3R5cGUuc3BsaXQgPSBmdW5jdGlvbiBzcGxpdCAoaW5wdXQsIG91dHB1dCkge1xuICAgIC8vIDI1NiA9IDkgKiAyNiArIDIyXG4gICAgdmFyIG1hc2sgPSAweDNmZmZmZjtcblxuICAgIHZhciBvdXRMZW4gPSBNYXRoLm1pbihpbnB1dC5sZW5ndGgsIDkpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3V0TGVuOyBpKyspIHtcbiAgICAgIG91dHB1dC53b3Jkc1tpXSA9IGlucHV0LndvcmRzW2ldO1xuICAgIH1cbiAgICBvdXRwdXQubGVuZ3RoID0gb3V0TGVuO1xuXG4gICAgaWYgKGlucHV0Lmxlbmd0aCA8PSA5KSB7XG4gICAgICBpbnB1dC53b3Jkc1swXSA9IDA7XG4gICAgICBpbnB1dC5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNoaWZ0IGJ5IDkgbGltYnNcbiAgICB2YXIgcHJldiA9IGlucHV0LndvcmRzWzldO1xuICAgIG91dHB1dC53b3Jkc1tvdXRwdXQubGVuZ3RoKytdID0gcHJldiAmIG1hc2s7XG5cbiAgICBmb3IgKGkgPSAxMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgbmV4dCA9IGlucHV0LndvcmRzW2ldIHwgMDtcbiAgICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSAoKG5leHQgJiBtYXNrKSA8PCA0KSB8IChwcmV2ID4+PiAyMik7XG4gICAgICBwcmV2ID0gbmV4dDtcbiAgICB9XG4gICAgcHJldiA+Pj49IDIyO1xuICAgIGlucHV0LndvcmRzW2kgLSAxMF0gPSBwcmV2O1xuICAgIGlmIChwcmV2ID09PSAwICYmIGlucHV0Lmxlbmd0aCA+IDEwKSB7XG4gICAgICBpbnB1dC5sZW5ndGggLT0gMTA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSA5O1xuICAgIH1cbiAgfTtcblxuICBLMjU2LnByb3RvdHlwZS5pbXVsSyA9IGZ1bmN0aW9uIGltdWxLIChudW0pIHtcbiAgICAvLyBLID0gMHgxMDAwMDAzZDEgPSBbIDB4NDAsIDB4M2QxIF1cbiAgICBudW0ud29yZHNbbnVtLmxlbmd0aF0gPSAwO1xuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoICsgMV0gPSAwO1xuICAgIG51bS5sZW5ndGggKz0gMjtcblxuICAgIC8vIGJvdW5kZWQgYXQ6IDB4NDAgKiAweDNmZmZmZmYgKyAweDNkMCA9IDB4MTAwMDAwMzkwXG4gICAgdmFyIGxvID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSBudW0ud29yZHNbaV0gfCAwO1xuICAgICAgbG8gKz0gdyAqIDB4M2QxO1xuICAgICAgbnVtLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgICBsbyA9IHcgKiAweDQwICsgKChsbyAvIDB4NDAwMDAwMCkgfCAwKTtcbiAgICB9XG5cbiAgICAvLyBGYXN0IGxlbmd0aCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgaWYgKG51bS53b3Jkc1tudW0ubGVuZ3RoIC0gMV0gPT09IDApIHtcbiAgICAgICAgbnVtLmxlbmd0aC0tO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIGZ1bmN0aW9uIFAyMjQgKCkge1xuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICdwMjI0JyxcbiAgICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMScpO1xuICB9XG4gIGluaGVyaXRzKFAyMjQsIE1QcmltZSk7XG5cbiAgZnVuY3Rpb24gUDE5MiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AxOTInLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDE5MiwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMjU1MTkgKCkge1xuICAgIC8vIDIgXiAyNTUgLSAxOVxuICAgIE1QcmltZS5jYWxsKFxuICAgICAgdGhpcyxcbiAgICAgICcyNTUxOScsXG4gICAgICAnN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCcpO1xuICB9XG4gIGluaGVyaXRzKFAyNTUxOSwgTVByaW1lKTtcblxuICBQMjU1MTkucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEzXG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGhpID0gKG51bS53b3Jkc1tpXSB8IDApICogMHgxMyArIGNhcnJ5O1xuICAgICAgdmFyIGxvID0gaGkgJiAweDNmZmZmZmY7XG4gICAgICBoaSA+Pj49IDI2O1xuXG4gICAgICBudW0ud29yZHNbaV0gPSBsbztcbiAgICAgIGNhcnJ5ID0gaGk7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgbnVtLndvcmRzW251bS5sZW5ndGgrK10gPSBjYXJyeTtcbiAgICB9XG4gICAgcmV0dXJuIG51bTtcbiAgfTtcblxuICAvLyBFeHBvcnRlZCBtb3N0bHkgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHVzZSBwbGFpbiBuYW1lIGluc3RlYWRcbiAgQk4uX3ByaW1lID0gZnVuY3Rpb24gcHJpbWUgKG5hbWUpIHtcbiAgICAvLyBDYWNoZWQgdmVyc2lvbiBvZiBwcmltZVxuICAgIGlmIChwcmltZXNbbmFtZV0pIHJldHVybiBwcmltZXNbbmFtZV07XG5cbiAgICB2YXIgcHJpbWU7XG4gICAgaWYgKG5hbWUgPT09ICdrMjU2Jykge1xuICAgICAgcHJpbWUgPSBuZXcgSzI1NigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyMjQnKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjI0KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDE5MicpIHtcbiAgICAgIHByaW1lID0gbmV3IFAxOTIoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMjU1MTknKSB7XG4gICAgICBwcmltZSA9IG5ldyBQMjU1MTkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHByaW1lICcgKyBuYW1lKTtcbiAgICB9XG4gICAgcHJpbWVzW25hbWVdID0gcHJpbWU7XG5cbiAgICByZXR1cm4gcHJpbWU7XG4gIH07XG5cbiAgLy9cbiAgLy8gQmFzZSByZWR1Y3Rpb24gZW5naW5lXG4gIC8vXG4gIGZ1bmN0aW9uIFJlZCAobSkge1xuICAgIGlmICh0eXBlb2YgbSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBwcmltZSA9IEJOLl9wcmltZShtKTtcbiAgICAgIHRoaXMubSA9IHByaW1lLnA7XG4gICAgICB0aGlzLnByaW1lID0gcHJpbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2VydChtLmd0bigxKSwgJ21vZHVsdXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMScpO1xuICAgICAgdGhpcy5tID0gbTtcbiAgICAgIHRoaXMucHJpbWUgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIFJlZC5wcm90b3R5cGUuX3ZlcmlmeTEgPSBmdW5jdGlvbiBfdmVyaWZ5MSAoYSkge1xuICAgIGFzc2VydChhLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICBhc3NlcnQoYS5yZWQsICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MiA9IGZ1bmN0aW9uIF92ZXJpZnkyIChhLCBiKSB7XG4gICAgYXNzZXJ0KChhLm5lZ2F0aXZlIHwgYi5uZWdhdGl2ZSkgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCAmJiBhLnJlZCA9PT0gYi5yZWQsXG4gICAgICAncmVkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaW1vZCA9IGZ1bmN0aW9uIGltb2QgKGEpIHtcbiAgICBpZiAodGhpcy5wcmltZSkgcmV0dXJuIHRoaXMucHJpbWUuaXJlZHVjZShhKS5fZm9yY2VSZWQodGhpcyk7XG4gICAgcmV0dXJuIGEudW1vZCh0aGlzLm0pLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSB7XG4gICAgICByZXR1cm4gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm0uc3ViKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG5cbiAgICB2YXIgcmVzID0gYS5hZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlhZGQgPSBmdW5jdGlvbiBpYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlhZGQoYik7XG4gICAgaWYgKHJlcy5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMuaXN1Yih0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3ViID0gZnVuY3Rpb24gc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLnN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLl9mb3JjZVJlZCh0aGlzKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzdWIgPSBmdW5jdGlvbiBpc3ViIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmlzdWIoYik7XG4gICAgaWYgKHJlcy5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzLmlhZGQodGhpcy5tKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnNobCA9IGZ1bmN0aW9uIHNobCAoYSwgbnVtKSB7XG4gICAgdGhpcy5fdmVyaWZ5MShhKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEudXNobG4obnVtKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIHRoaXMuX3ZlcmlmeTIoYSwgYik7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChhLmltdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEubXVsKGIpKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmlzcXIgPSBmdW5jdGlvbiBpc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bChhLCBhLmNsb25lKCkpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyIChhKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsKGEsIGEpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc3FydCA9IGZ1bmN0aW9uIHNxcnQgKGEpIHtcbiAgICBpZiAoYS5pc1plcm8oKSkgcmV0dXJuIGEuY2xvbmUoKTtcblxuICAgIHZhciBtb2QzID0gdGhpcy5tLmFuZGxuKDMpO1xuICAgIGFzc2VydChtb2QzICUgMiA9PT0gMSk7XG5cbiAgICAvLyBGYXN0IGNhc2VcbiAgICBpZiAobW9kMyA9PT0gMykge1xuICAgICAgdmFyIHBvdyA9IHRoaXMubS5hZGQobmV3IEJOKDEpKS5pdXNocm4oMik7XG4gICAgICByZXR1cm4gdGhpcy5wb3coYSwgcG93KTtcbiAgICB9XG5cbiAgICAvLyBUb25lbGxpLVNoYW5rcyBhbGdvcml0aG0gKFRvdGFsbHkgdW5vcHRpbWl6ZWQgYW5kIHNsb3cpXG4gICAgLy9cbiAgICAvLyBGaW5kIFEgYW5kIFMsIHRoYXQgUSAqIDIgXiBTID0gKFAgLSAxKVxuICAgIHZhciBxID0gdGhpcy5tLnN1Ym4oMSk7XG4gICAgdmFyIHMgPSAwO1xuICAgIHdoaWxlICghcS5pc1plcm8oKSAmJiBxLmFuZGxuKDEpID09PSAwKSB7XG4gICAgICBzKys7XG4gICAgICBxLml1c2hybigxKTtcbiAgICB9XG4gICAgYXNzZXJ0KCFxLmlzWmVybygpKTtcblxuICAgIHZhciBvbmUgPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgdmFyIG5PbmUgPSBvbmUucmVkTmVnKCk7XG5cbiAgICAvLyBGaW5kIHF1YWRyYXRpYyBub24tcmVzaWR1ZVxuICAgIC8vIE5PVEU6IE1heCBpcyBzdWNoIGJlY2F1c2Ugb2YgZ2VuZXJhbGl6ZWQgUmllbWFubiBoeXBvdGhlc2lzLlxuICAgIHZhciBscG93ID0gdGhpcy5tLnN1Ym4oMSkuaXVzaHJuKDEpO1xuICAgIHZhciB6ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIHogPSBuZXcgQk4oMiAqIHogKiB6KS50b1JlZCh0aGlzKTtcblxuICAgIHdoaWxlICh0aGlzLnBvdyh6LCBscG93KS5jbXAobk9uZSkgIT09IDApIHtcbiAgICAgIHoucmVkSUFkZChuT25lKTtcbiAgICB9XG5cbiAgICB2YXIgYyA9IHRoaXMucG93KHosIHEpO1xuICAgIHZhciByID0gdGhpcy5wb3coYSwgcS5hZGRuKDEpLml1c2hybigxKSk7XG4gICAgdmFyIHQgPSB0aGlzLnBvdyhhLCBxKTtcbiAgICB2YXIgbSA9IHM7XG4gICAgd2hpbGUgKHQuY21wKG9uZSkgIT09IDApIHtcbiAgICAgIHZhciB0bXAgPSB0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IHRtcC5jbXAob25lKSAhPT0gMDsgaSsrKSB7XG4gICAgICAgIHRtcCA9IHRtcC5yZWRTcXIoKTtcbiAgICAgIH1cbiAgICAgIGFzc2VydChpIDwgbSk7XG4gICAgICB2YXIgYiA9IHRoaXMucG93KGMsIG5ldyBCTigxKS5pdXNobG4obSAtIGkgLSAxKSk7XG5cbiAgICAgIHIgPSByLnJlZE11bChiKTtcbiAgICAgIGMgPSBiLnJlZFNxcigpO1xuICAgICAgdCA9IHQucmVkTXVsKGMpO1xuICAgICAgbSA9IGk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHI7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbnZtID0gZnVuY3Rpb24gaW52bSAoYSkge1xuICAgIHZhciBpbnYgPSBhLl9pbnZtcCh0aGlzLm0pO1xuICAgIGlmIChpbnYubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIGludi5uZWdhdGl2ZSA9IDA7XG4gICAgICByZXR1cm4gdGhpcy5pbW9kKGludikucmVkTmVnKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KTtcbiAgICB9XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKGEsIG51bSkge1xuICAgIGlmIChudW0uaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgaWYgKG51bS5jbXBuKDEpID09PSAwKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIHdpbmRvd1NpemUgPSA0O1xuICAgIHZhciB3bmQgPSBuZXcgQXJyYXkoMSA8PCB3aW5kb3dTaXplKTtcbiAgICB3bmRbMF0gPSBuZXcgQk4oMSkudG9SZWQodGhpcyk7XG4gICAgd25kWzFdID0gYTtcbiAgICBmb3IgKHZhciBpID0gMjsgaSA8IHduZC5sZW5ndGg7IGkrKykge1xuICAgICAgd25kW2ldID0gdGhpcy5tdWwod25kW2kgLSAxXSwgYSk7XG4gICAgfVxuXG4gICAgdmFyIHJlcyA9IHduZFswXTtcbiAgICB2YXIgY3VycmVudCA9IDA7XG4gICAgdmFyIGN1cnJlbnRMZW4gPSAwO1xuICAgIHZhciBzdGFydCA9IG51bS5iaXRMZW5ndGgoKSAlIDI2O1xuICAgIGlmIChzdGFydCA9PT0gMCkge1xuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSBudW0ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3b3JkID0gbnVtLndvcmRzW2ldO1xuICAgICAgZm9yICh2YXIgaiA9IHN0YXJ0IC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgdmFyIGJpdCA9ICh3b3JkID4+IGopICYgMTtcbiAgICAgICAgaWYgKHJlcyAhPT0gd25kWzBdKSB7XG4gICAgICAgICAgcmVzID0gdGhpcy5zcXIocmVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXQgPT09IDAgJiYgY3VycmVudCA9PT0gMCkge1xuICAgICAgICAgIGN1cnJlbnRMZW4gPSAwO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudCA8PD0gMTtcbiAgICAgICAgY3VycmVudCB8PSBiaXQ7XG4gICAgICAgIGN1cnJlbnRMZW4rKztcbiAgICAgICAgaWYgKGN1cnJlbnRMZW4gIT09IHdpbmRvd1NpemUgJiYgKGkgIT09IDAgfHwgaiAhPT0gMCkpIGNvbnRpbnVlO1xuXG4gICAgICAgIHJlcyA9IHRoaXMubXVsKHJlcywgd25kW2N1cnJlbnRdKTtcbiAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgIGN1cnJlbnQgPSAwO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSAyNjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydFRvID0gZnVuY3Rpb24gY29udmVydFRvIChudW0pIHtcbiAgICB2YXIgciA9IG51bS51bW9kKHRoaXMubSk7XG5cbiAgICByZXR1cm4gciA9PT0gbnVtID8gci5jbG9uZSgpIDogcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByZXMgPSBudW0uY2xvbmUoKTtcbiAgICByZXMucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vXG4gIC8vIE1vbnRnb21lcnkgbWV0aG9kIGVuZ2luZVxuICAvL1xuXG4gIEJOLm1vbnQgPSBmdW5jdGlvbiBtb250IChudW0pIHtcbiAgICByZXR1cm4gbmV3IE1vbnQobnVtKTtcbiAgfTtcblxuICBmdW5jdGlvbiBNb250IChtKSB7XG4gICAgUmVkLmNhbGwodGhpcywgbSk7XG5cbiAgICB0aGlzLnNoaWZ0ID0gdGhpcy5tLmJpdExlbmd0aCgpO1xuICAgIGlmICh0aGlzLnNoaWZ0ICUgMjYgIT09IDApIHtcbiAgICAgIHRoaXMuc2hpZnQgKz0gMjYgLSAodGhpcy5zaGlmdCAlIDI2KTtcbiAgICB9XG5cbiAgICB0aGlzLnIgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMuc2hpZnQpO1xuICAgIHRoaXMucjIgPSB0aGlzLmltb2QodGhpcy5yLnNxcigpKTtcbiAgICB0aGlzLnJpbnYgPSB0aGlzLnIuX2ludm1wKHRoaXMubSk7XG5cbiAgICB0aGlzLm1pbnYgPSB0aGlzLnJpbnYubXVsKHRoaXMucikuaXN1Ym4oMSkuZGl2KHRoaXMubSk7XG4gICAgdGhpcy5taW52ID0gdGhpcy5taW52LnVtb2QodGhpcy5yKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLnIuc3ViKHRoaXMubWludik7XG4gIH1cbiAgaW5oZXJpdHMoTW9udCwgUmVkKTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmltb2QobnVtLnVzaGxuKHRoaXMuc2hpZnQpKTtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5jb252ZXJ0RnJvbSA9IGZ1bmN0aW9uIGNvbnZlcnRGcm9tIChudW0pIHtcbiAgICB2YXIgciA9IHRoaXMuaW1vZChudW0ubXVsKHRoaXMucmludikpO1xuICAgIHIucmVkID0gbnVsbDtcbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNb250LnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHtcbiAgICAgIGEud29yZHNbMF0gPSAwO1xuICAgICAgYS5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIGE7XG4gICAgfVxuXG4gICAgdmFyIHQgPSBhLmltdWwoYik7XG4gICAgdmFyIGMgPSB0Lm1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm1pbnYpLmltYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5tKTtcbiAgICB2YXIgdSA9IHQuaXN1YihjKS5pdXNocm4odGhpcy5zaGlmdCk7XG4gICAgdmFyIHJlcyA9IHU7XG5cbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAoYSwgYikge1xuICAgIGlmIChhLmlzWmVybygpIHx8IGIuaXNaZXJvKCkpIHJldHVybiBuZXcgQk4oMCkuX2ZvcmNlUmVkKHRoaXMpO1xuXG4gICAgdmFyIHQgPSBhLm11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcbiAgICBpZiAodS5jbXAodGhpcy5tKSA+PSAwKSB7XG4gICAgICByZXMgPSB1LmlzdWIodGhpcy5tKTtcbiAgICB9IGVsc2UgaWYgKHUuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcyA9IHUuaWFkZCh0aGlzLm0pO1xuICAgIH1cblxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgLy8gKEFSKV4tMSAqIFJeMiA9IChBXi0xICogUl4tMSkgKiBSXjIgPSBBXi0xICogUlxuICAgIHZhciByZXMgPSB0aGlzLmltb2QoYS5faW52bXAodGhpcy5tKS5tdWwodGhpcy5yMikpO1xuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xufSkodHlwZW9mIG1vZHVsZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbW9kdWxlLCB0aGlzKTtcbiIsInZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJylcbnZhciBtZ2YgPSByZXF1aXJlKCcuL21nZicpXG52YXIgeG9yID0gcmVxdWlyZSgnLi94b3InKVxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIGNydCA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktcnNhJylcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gnKVxudmFyIHdpdGhQdWJsaWMgPSByZXF1aXJlKCcuL3dpdGhQdWJsaWMnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcHJpdmF0ZURlY3J5cHQgKHByaXZhdGVLZXksIGVuYywgcmV2ZXJzZSkge1xuICB2YXIgcGFkZGluZ1xuICBpZiAocHJpdmF0ZUtleS5wYWRkaW5nKSB7XG4gICAgcGFkZGluZyA9IHByaXZhdGVLZXkucGFkZGluZ1xuICB9IGVsc2UgaWYgKHJldmVyc2UpIHtcbiAgICBwYWRkaW5nID0gMVxuICB9IGVsc2Uge1xuICAgIHBhZGRpbmcgPSA0XG4gIH1cblxuICB2YXIga2V5ID0gcGFyc2VLZXlzKHByaXZhdGVLZXkpXG4gIHZhciBrID0ga2V5Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIGlmIChlbmMubGVuZ3RoID4gayB8fCBuZXcgQk4oZW5jKS5jbXAoa2V5Lm1vZHVsdXMpID49IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKVxuICB9XG4gIHZhciBtc2dcbiAgaWYgKHJldmVyc2UpIHtcbiAgICBtc2cgPSB3aXRoUHVibGljKG5ldyBCTihlbmMpLCBrZXkpXG4gIH0gZWxzZSB7XG4gICAgbXNnID0gY3J0KGVuYywga2V5KVxuICB9XG4gIHZhciB6QnVmZmVyID0gQnVmZmVyLmFsbG9jKGsgLSBtc2cubGVuZ3RoKVxuICBtc2cgPSBCdWZmZXIuY29uY2F0KFt6QnVmZmVyLCBtc2ddLCBrKVxuICBpZiAocGFkZGluZyA9PT0gNCkge1xuICAgIHJldHVybiBvYWVwKGtleSwgbXNnKVxuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDEpIHtcbiAgICByZXR1cm4gcGtjczEoa2V5LCBtc2csIHJldmVyc2UpXG4gIH0gZWxzZSBpZiAocGFkZGluZyA9PT0gMykge1xuICAgIHJldHVybiBtc2dcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gcGFkZGluZycpXG4gIH1cbn1cblxuZnVuY3Rpb24gb2FlcCAoa2V5LCBtc2cpIHtcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKClcbiAgdmFyIGlIYXNoID0gY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShCdWZmZXIuYWxsb2MoMCkpLmRpZ2VzdCgpXG4gIHZhciBoTGVuID0gaUhhc2gubGVuZ3RoXG4gIGlmIChtc2dbMF0gIT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKVxuICB9XG4gIHZhciBtYXNrZWRTZWVkID0gbXNnLnNsaWNlKDEsIGhMZW4gKyAxKVxuICB2YXIgbWFza2VkRGIgPSBtc2cuc2xpY2UoaExlbiArIDEpXG4gIHZhciBzZWVkID0geG9yKG1hc2tlZFNlZWQsIG1nZihtYXNrZWREYiwgaExlbikpXG4gIHZhciBkYiA9IHhvcihtYXNrZWREYiwgbWdmKHNlZWQsIGsgLSBoTGVuIC0gMSkpXG4gIGlmIChjb21wYXJlKGlIYXNoLCBkYi5zbGljZSgwLCBoTGVuKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKVxuICB9XG4gIHZhciBpID0gaExlblxuICB3aGlsZSAoZGJbaV0gPT09IDApIHtcbiAgICBpKytcbiAgfVxuICBpZiAoZGJbaSsrXSAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpXG4gIH1cbiAgcmV0dXJuIGRiLnNsaWNlKGkpXG59XG5cbmZ1bmN0aW9uIHBrY3MxIChrZXksIG1zZywgcmV2ZXJzZSkge1xuICB2YXIgcDEgPSBtc2cuc2xpY2UoMCwgMilcbiAgdmFyIGkgPSAyXG4gIHZhciBzdGF0dXMgPSAwXG4gIHdoaWxlIChtc2dbaSsrXSAhPT0gMCkge1xuICAgIGlmIChpID49IG1zZy5sZW5ndGgpIHtcbiAgICAgIHN0YXR1cysrXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuICB2YXIgcHMgPSBtc2cuc2xpY2UoMiwgaSAtIDEpXG5cbiAgaWYgKChwMS50b1N0cmluZygnaGV4JykgIT09ICcwMDAyJyAmJiAhcmV2ZXJzZSkgfHwgKHAxLnRvU3RyaW5nKCdoZXgnKSAhPT0gJzAwMDEnICYmIHJldmVyc2UpKSB7XG4gICAgc3RhdHVzKytcbiAgfVxuICBpZiAocHMubGVuZ3RoIDwgOCkge1xuICAgIHN0YXR1cysrXG4gIH1cbiAgaWYgKHN0YXR1cykge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpXG4gIH1cbiAgcmV0dXJuIG1zZy5zbGljZShpKVxufVxuZnVuY3Rpb24gY29tcGFyZSAoYSwgYikge1xuICBhID0gQnVmZmVyLmZyb20oYSlcbiAgYiA9IEJ1ZmZlci5mcm9tKGIpXG4gIHZhciBkaWYgPSAwXG4gIHZhciBsZW4gPSBhLmxlbmd0aFxuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgZGlmKytcbiAgICBsZW4gPSBNYXRoLm1pbihhLmxlbmd0aCwgYi5sZW5ndGgpXG4gIH1cbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgZGlmICs9IChhW2ldIF4gYltpXSlcbiAgfVxuICByZXR1cm4gZGlmXG59XG4iLCJ2YXIgcGFyc2VLZXlzID0gcmVxdWlyZSgncGFyc2UtYXNuMScpXG52YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpXG52YXIgY3JlYXRlSGFzaCA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoJylcbnZhciBtZ2YgPSByZXF1aXJlKCcuL21nZicpXG52YXIgeG9yID0gcmVxdWlyZSgnLi94b3InKVxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIHdpdGhQdWJsaWMgPSByZXF1aXJlKCcuL3dpdGhQdWJsaWMnKVxudmFyIGNydCA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktcnNhJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHB1YmxpY0VuY3J5cHQgKHB1YmxpY0tleSwgbXNnLCByZXZlcnNlKSB7XG4gIHZhciBwYWRkaW5nXG4gIGlmIChwdWJsaWNLZXkucGFkZGluZykge1xuICAgIHBhZGRpbmcgPSBwdWJsaWNLZXkucGFkZGluZ1xuICB9IGVsc2UgaWYgKHJldmVyc2UpIHtcbiAgICBwYWRkaW5nID0gMVxuICB9IGVsc2Uge1xuICAgIHBhZGRpbmcgPSA0XG4gIH1cbiAgdmFyIGtleSA9IHBhcnNlS2V5cyhwdWJsaWNLZXkpXG4gIHZhciBwYWRkZWRNc2dcbiAgaWYgKHBhZGRpbmcgPT09IDQpIHtcbiAgICBwYWRkZWRNc2cgPSBvYWVwKGtleSwgbXNnKVxuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDEpIHtcbiAgICBwYWRkZWRNc2cgPSBwa2NzMShrZXksIG1zZywgcmV2ZXJzZSlcbiAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAzKSB7XG4gICAgcGFkZGVkTXNnID0gbmV3IEJOKG1zZylcbiAgICBpZiAocGFkZGVkTXNnLmNtcChrZXkubW9kdWx1cykgPj0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIHRvbyBsb25nIGZvciBtb2R1bHVzJylcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIHBhZGRpbmcnKVxuICB9XG4gIGlmIChyZXZlcnNlKSB7XG4gICAgcmV0dXJuIGNydChwYWRkZWRNc2csIGtleSlcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gd2l0aFB1YmxpYyhwYWRkZWRNc2csIGtleSlcbiAgfVxufVxuXG5mdW5jdGlvbiBvYWVwIChrZXksIG1zZykge1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKVxuICB2YXIgbUxlbiA9IG1zZy5sZW5ndGhcbiAgdmFyIGlIYXNoID0gY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShCdWZmZXIuYWxsb2MoMCkpLmRpZ2VzdCgpXG4gIHZhciBoTGVuID0gaUhhc2gubGVuZ3RoXG4gIHZhciBoTGVuMiA9IDIgKiBoTGVuXG4gIGlmIChtTGVuID4gayAtIGhMZW4yIC0gMikge1xuICAgIHRocm93IG5ldyBFcnJvcignbWVzc2FnZSB0b28gbG9uZycpXG4gIH1cbiAgdmFyIHBzID0gQnVmZmVyLmFsbG9jKGsgLSBtTGVuIC0gaExlbjIgLSAyKVxuICB2YXIgZGJsZW4gPSBrIC0gaExlbiAtIDFcbiAgdmFyIHNlZWQgPSByYW5kb21CeXRlcyhoTGVuKVxuICB2YXIgbWFza2VkRGIgPSB4b3IoQnVmZmVyLmNvbmNhdChbaUhhc2gsIHBzLCBCdWZmZXIuYWxsb2MoMSwgMSksIG1zZ10sIGRibGVuKSwgbWdmKHNlZWQsIGRibGVuKSlcbiAgdmFyIG1hc2tlZFNlZWQgPSB4b3Ioc2VlZCwgbWdmKG1hc2tlZERiLCBoTGVuKSlcbiAgcmV0dXJuIG5ldyBCTihCdWZmZXIuY29uY2F0KFtCdWZmZXIuYWxsb2MoMSksIG1hc2tlZFNlZWQsIG1hc2tlZERiXSwgaykpXG59XG5mdW5jdGlvbiBwa2NzMSAoa2V5LCBtc2csIHJldmVyc2UpIHtcbiAgdmFyIG1MZW4gPSBtc2cubGVuZ3RoXG4gIHZhciBrID0ga2V5Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIGlmIChtTGVuID4gayAtIDExKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXNzYWdlIHRvbyBsb25nJylcbiAgfVxuICB2YXIgcHNcbiAgaWYgKHJldmVyc2UpIHtcbiAgICBwcyA9IEJ1ZmZlci5hbGxvYyhrIC0gbUxlbiAtIDMsIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgcHMgPSBub25aZXJvKGsgLSBtTGVuIC0gMylcbiAgfVxuICByZXR1cm4gbmV3IEJOKEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5mcm9tKFswLCByZXZlcnNlID8gMSA6IDJdKSwgcHMsIEJ1ZmZlci5hbGxvYygxKSwgbXNnXSwgaykpXG59XG5mdW5jdGlvbiBub25aZXJvIChsZW4pIHtcbiAgdmFyIG91dCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW4pXG4gIHZhciBpID0gMFxuICB2YXIgY2FjaGUgPSByYW5kb21CeXRlcyhsZW4gKiAyKVxuICB2YXIgY3VyID0gMFxuICB2YXIgbnVtXG4gIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgaWYgKGN1ciA9PT0gY2FjaGUubGVuZ3RoKSB7XG4gICAgICBjYWNoZSA9IHJhbmRvbUJ5dGVzKGxlbiAqIDIpXG4gICAgICBjdXIgPSAwXG4gICAgfVxuICAgIG51bSA9IGNhY2hlW2N1cisrXVxuICAgIGlmIChudW0pIHtcbiAgICAgIG91dFtpKytdID0gbnVtXG4gICAgfVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsInZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG5mdW5jdGlvbiB3aXRoUHVibGljIChwYWRkZWRNc2csIGtleSkge1xuICByZXR1cm4gQnVmZmVyLmZyb20ocGFkZGVkTXNnXG4gICAgLnRvUmVkKEJOLm1vbnQoa2V5Lm1vZHVsdXMpKVxuICAgIC5yZWRQb3cobmV3IEJOKGtleS5wdWJsaWNFeHBvbmVudCkpXG4gICAgLmZyb21SZWQoKVxuICAgIC50b0FycmF5KCkpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gd2l0aFB1YmxpY1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiB4b3IgKGEsIGIpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIGFbaV0gXj0gYltpXVxuICB9XG4gIHJldHVybiBhXG59XG4iLCIndXNlIHN0cmljdCdcblxuLy8gbGltaXQgb2YgQ3J5cHRvLmdldFJhbmRvbVZhbHVlcygpXG4vLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQ3J5cHRvL2dldFJhbmRvbVZhbHVlc1xudmFyIE1BWF9CWVRFUyA9IDY1NTM2XG5cbi8vIE5vZGUgc3VwcG9ydHMgcmVxdWVzdGluZyB1cCB0byB0aGlzIG51bWJlciBvZiBieXRlc1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL2Jsb2IvbWFzdGVyL2xpYi9pbnRlcm5hbC9jcnlwdG8vcmFuZG9tLmpzI0w0OFxudmFyIE1BWF9VSU5UMzIgPSA0Mjk0OTY3Mjk1XG5cbmZ1bmN0aW9uIG9sZEJyb3dzZXIgKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ1NlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXIuXFxuVXNlIENocm9tZSwgRmlyZWZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMScpXG59XG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIGNyeXB0byA9IGdsb2JhbC5jcnlwdG8gfHwgZ2xvYmFsLm1zQ3J5cHRvXG5cbmlmIChjcnlwdG8gJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJhbmRvbUJ5dGVzXG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IG9sZEJyb3dzZXJcbn1cblxuZnVuY3Rpb24gcmFuZG9tQnl0ZXMgKHNpemUsIGNiKSB7XG4gIC8vIHBoYW50b21qcyBuZWVkcyB0byB0aHJvd1xuICBpZiAoc2l6ZSA+IE1BWF9VSU5UMzIpIHRocm93IG5ldyBSYW5nZUVycm9yKCdyZXF1ZXN0ZWQgdG9vIG1hbnkgcmFuZG9tIGJ5dGVzJylcblxuICB2YXIgYnl0ZXMgPSBCdWZmZXIuYWxsb2NVbnNhZmUoc2l6ZSlcblxuICBpZiAoc2l6ZSA+IDApIHsgIC8vIGdldFJhbmRvbVZhbHVlcyBmYWlscyBvbiBJRSBpZiBzaXplID09IDBcbiAgICBpZiAoc2l6ZSA+IE1BWF9CWVRFUykgeyAvLyB0aGlzIGlzIHRoZSBtYXggYnl0ZXMgY3J5cHRvLmdldFJhbmRvbVZhbHVlc1xuICAgICAgLy8gY2FuIGRvIGF0IG9uY2Ugc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS93aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlc1xuICAgICAgZm9yICh2YXIgZ2VuZXJhdGVkID0gMDsgZ2VuZXJhdGVkIDwgc2l6ZTsgZ2VuZXJhdGVkICs9IE1BWF9CWVRFUykge1xuICAgICAgICAvLyBidWZmZXIuc2xpY2UgYXV0b21hdGljYWxseSBjaGVja3MgaWYgdGhlIGVuZCBpcyBwYXN0IHRoZSBlbmQgb2ZcbiAgICAgICAgLy8gdGhlIGJ1ZmZlciBzbyB3ZSBkb24ndCBoYXZlIHRvIGhlcmVcbiAgICAgICAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhieXRlcy5zbGljZShnZW5lcmF0ZWQsIGdlbmVyYXRlZCArIE1BWF9CWVRFUykpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYnl0ZXMpXG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNiKG51bGwsIGJ5dGVzKVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5mdW5jdGlvbiBvbGRCcm93c2VyICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdzZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyXFxudXNlIGNocm9tZSwgRmlyZUZveCBvciBJbnRlcm5ldCBFeHBsb3JlciAxMScpXG59XG52YXIgc2FmZUJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJylcbnZhciByYW5kb21ieXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJylcbnZhciBCdWZmZXIgPSBzYWZlQnVmZmVyLkJ1ZmZlclxudmFyIGtCdWZmZXJNYXhMZW5ndGggPSBzYWZlQnVmZmVyLmtNYXhMZW5ndGhcbnZhciBjcnlwdG8gPSBnbG9iYWwuY3J5cHRvIHx8IGdsb2JhbC5tc0NyeXB0b1xudmFyIGtNYXhVaW50MzIgPSBNYXRoLnBvdygyLCAzMikgLSAxXG5mdW5jdGlvbiBhc3NlcnRPZmZzZXQgKG9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2Ygb2Zmc2V0ICE9PSAnbnVtYmVyJyB8fCBvZmZzZXQgIT09IG9mZnNldCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29mZnNldCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmIChvZmZzZXQgPiBrTWF4VWludDMyIHx8IG9mZnNldCA8IDApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvZmZzZXQgbXVzdCBiZSBhIHVpbnQzMicpXG4gIH1cblxuICBpZiAob2Zmc2V0ID4ga0J1ZmZlck1heExlbmd0aCB8fCBvZmZzZXQgPiBsZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb2Zmc2V0IG91dCBvZiByYW5nZScpXG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0U2l6ZSAoc2l6ZSwgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJyB8fCBzaXplICE9PSBzaXplKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2l6ZSBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmIChzaXplID4ga01heFVpbnQzMiB8fCBzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NpemUgbXVzdCBiZSBhIHVpbnQzMicpXG4gIH1cblxuICBpZiAoc2l6ZSArIG9mZnNldCA+IGxlbmd0aCB8fCBzaXplID4ga0J1ZmZlck1heExlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdidWZmZXIgdG9vIHNtYWxsJylcbiAgfVxufVxuaWYgKChjcnlwdG8gJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcykgfHwgIXByb2Nlc3MuYnJvd3Nlcikge1xuICBleHBvcnRzLnJhbmRvbUZpbGwgPSByYW5kb21GaWxsXG4gIGV4cG9ydHMucmFuZG9tRmlsbFN5bmMgPSByYW5kb21GaWxsU3luY1xufSBlbHNlIHtcbiAgZXhwb3J0cy5yYW5kb21GaWxsID0gb2xkQnJvd3NlclxuICBleHBvcnRzLnJhbmRvbUZpbGxTeW5jID0gb2xkQnJvd3NlclxufVxuZnVuY3Rpb24gcmFuZG9tRmlsbCAoYnVmLCBvZmZzZXQsIHNpemUsIGNiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikgJiYgIShidWYgaW5zdGFuY2VvZiBnbG9iYWwuVWludDhBcnJheSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZlwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgb3IgVWludDhBcnJheScpXG4gIH1cblxuICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gb2Zmc2V0XG4gICAgb2Zmc2V0ID0gMFxuICAgIHNpemUgPSBidWYubGVuZ3RoXG4gIH0gZWxzZSBpZiAodHlwZW9mIHNpemUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IHNpemVcbiAgICBzaXplID0gYnVmLmxlbmd0aCAtIG9mZnNldFxuICB9IGVsc2UgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiY2JcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKVxuICB9XG4gIGFzc2VydE9mZnNldChvZmZzZXQsIGJ1Zi5sZW5ndGgpXG4gIGFzc2VydFNpemUoc2l6ZSwgb2Zmc2V0LCBidWYubGVuZ3RoKVxuICByZXR1cm4gYWN0dWFsRmlsbChidWYsIG9mZnNldCwgc2l6ZSwgY2IpXG59XG5cbmZ1bmN0aW9uIGFjdHVhbEZpbGwgKGJ1Ziwgb2Zmc2V0LCBzaXplLCBjYikge1xuICBpZiAocHJvY2Vzcy5icm93c2VyKSB7XG4gICAgdmFyIG91ckJ1ZiA9IGJ1Zi5idWZmZXJcbiAgICB2YXIgdWludCA9IG5ldyBVaW50OEFycmF5KG91ckJ1Ziwgb2Zmc2V0LCBzaXplKVxuICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXModWludClcbiAgICBpZiAoY2IpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBjYihudWxsLCBidWYpXG4gICAgICB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHJldHVybiBidWZcbiAgfVxuICBpZiAoY2IpIHtcbiAgICByYW5kb21ieXRlcyhzaXplLCBmdW5jdGlvbiAoZXJyLCBieXRlcykge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gY2IoZXJyKVxuICAgICAgfVxuICAgICAgYnl0ZXMuY29weShidWYsIG9mZnNldClcbiAgICAgIGNiKG51bGwsIGJ1ZilcbiAgICB9KVxuICAgIHJldHVyblxuICB9XG4gIHZhciBieXRlcyA9IHJhbmRvbWJ5dGVzKHNpemUpXG4gIGJ5dGVzLmNvcHkoYnVmLCBvZmZzZXQpXG4gIHJldHVybiBidWZcbn1cbmZ1bmN0aW9uIHJhbmRvbUZpbGxTeW5jIChidWYsIG9mZnNldCwgc2l6ZSkge1xuICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBvZmZzZXQgPSAwXG4gIH1cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSAmJiAhKGJ1ZiBpbnN0YW5jZW9mIGdsb2JhbC5VaW50OEFycmF5KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBvciBVaW50OEFycmF5JylcbiAgfVxuXG4gIGFzc2VydE9mZnNldChvZmZzZXQsIGJ1Zi5sZW5ndGgpXG5cbiAgaWYgKHNpemUgPT09IHVuZGVmaW5lZCkgc2l6ZSA9IGJ1Zi5sZW5ndGggLSBvZmZzZXRcblxuICBhc3NlcnRTaXplKHNpemUsIG9mZnNldCwgYnVmLmxlbmd0aClcblxuICByZXR1cm4gYWN0dWFsRmlsbChidWYsIG9mZnNldCwgc2l6ZSlcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzLnByb3RvdHlwZSk7IHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzOyBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBjb2RlcyA9IHt9O1xuXG5mdW5jdGlvbiBjcmVhdGVFcnJvclR5cGUoY29kZSwgbWVzc2FnZSwgQmFzZSkge1xuICBpZiAoIUJhc2UpIHtcbiAgICBCYXNlID0gRXJyb3I7XG4gIH1cblxuICBmdW5jdGlvbiBnZXRNZXNzYWdlKGFyZzEsIGFyZzIsIGFyZzMpIHtcbiAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG1lc3NhZ2UoYXJnMSwgYXJnMiwgYXJnMyk7XG4gICAgfVxuICB9XG5cbiAgdmFyIE5vZGVFcnJvciA9XG4gIC8qI19fUFVSRV9fKi9cbiAgZnVuY3Rpb24gKF9CYXNlKSB7XG4gICAgX2luaGVyaXRzTG9vc2UoTm9kZUVycm9yLCBfQmFzZSk7XG5cbiAgICBmdW5jdGlvbiBOb2RlRXJyb3IoYXJnMSwgYXJnMiwgYXJnMykge1xuICAgICAgcmV0dXJuIF9CYXNlLmNhbGwodGhpcywgZ2V0TWVzc2FnZShhcmcxLCBhcmcyLCBhcmczKSkgfHwgdGhpcztcbiAgICB9XG5cbiAgICByZXR1cm4gTm9kZUVycm9yO1xuICB9KEJhc2UpO1xuXG4gIE5vZGVFcnJvci5wcm90b3R5cGUubmFtZSA9IEJhc2UubmFtZTtcbiAgTm9kZUVycm9yLnByb3RvdHlwZS5jb2RlID0gY29kZTtcbiAgY29kZXNbY29kZV0gPSBOb2RlRXJyb3I7XG59IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL3YxMC44LjAvbGliL2ludGVybmFsL2Vycm9ycy5qc1xuXG5cbmZ1bmN0aW9uIG9uZU9mKGV4cGVjdGVkLCB0aGluZykge1xuICBpZiAoQXJyYXkuaXNBcnJheShleHBlY3RlZCkpIHtcbiAgICB2YXIgbGVuID0gZXhwZWN0ZWQubGVuZ3RoO1xuICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQubWFwKGZ1bmN0aW9uIChpKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKGkpO1xuICAgIH0pO1xuXG4gICAgaWYgKGxlbiA+IDIpIHtcbiAgICAgIHJldHVybiBcIm9uZSBvZiBcIi5jb25jYXQodGhpbmcsIFwiIFwiKS5jb25jYXQoZXhwZWN0ZWQuc2xpY2UoMCwgbGVuIC0gMSkuam9pbignLCAnKSwgXCIsIG9yIFwiKSArIGV4cGVjdGVkW2xlbiAtIDFdO1xuICAgIH0gZWxzZSBpZiAobGVuID09PSAyKSB7XG4gICAgICByZXR1cm4gXCJvbmUgb2YgXCIuY29uY2F0KHRoaW5nLCBcIiBcIikuY29uY2F0KGV4cGVjdGVkWzBdLCBcIiBvciBcIikuY29uY2F0KGV4cGVjdGVkWzFdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwib2YgXCIuY29uY2F0KHRoaW5nLCBcIiBcIikuY29uY2F0KGV4cGVjdGVkWzBdKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFwib2YgXCIuY29uY2F0KHRoaW5nLCBcIiBcIikuY29uY2F0KFN0cmluZyhleHBlY3RlZCkpO1xuICB9XG59IC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL1N0cmluZy9zdGFydHNXaXRoXG5cblxuZnVuY3Rpb24gc3RhcnRzV2l0aChzdHIsIHNlYXJjaCwgcG9zKSB7XG4gIHJldHVybiBzdHIuc3Vic3RyKCFwb3MgfHwgcG9zIDwgMCA/IDAgOiArcG9zLCBzZWFyY2gubGVuZ3RoKSA9PT0gc2VhcmNoO1xufSAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9TdHJpbmcvZW5kc1dpdGhcblxuXG5mdW5jdGlvbiBlbmRzV2l0aChzdHIsIHNlYXJjaCwgdGhpc19sZW4pIHtcbiAgaWYgKHRoaXNfbGVuID09PSB1bmRlZmluZWQgfHwgdGhpc19sZW4gPiBzdHIubGVuZ3RoKSB7XG4gICAgdGhpc19sZW4gPSBzdHIubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIHN0ci5zdWJzdHJpbmcodGhpc19sZW4gLSBzZWFyY2gubGVuZ3RoLCB0aGlzX2xlbikgPT09IHNlYXJjaDtcbn0gLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvU3RyaW5nL2luY2x1ZGVzXG5cblxuZnVuY3Rpb24gaW5jbHVkZXMoc3RyLCBzZWFyY2gsIHN0YXJ0KSB7XG4gIGlmICh0eXBlb2Ygc3RhcnQgIT09ICdudW1iZXInKSB7XG4gICAgc3RhcnQgPSAwO1xuICB9XG5cbiAgaWYgKHN0YXJ0ICsgc2VhcmNoLmxlbmd0aCA+IHN0ci5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0ci5pbmRleE9mKHNlYXJjaCwgc3RhcnQpICE9PSAtMTtcbiAgfVxufVxuXG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9JTlZBTElEX09QVF9WQUxVRScsIGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuICByZXR1cm4gJ1RoZSB2YWx1ZSBcIicgKyB2YWx1ZSArICdcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCInICsgbmFtZSArICdcIic7XG59LCBUeXBlRXJyb3IpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfSU5WQUxJRF9BUkdfVFlQRScsIGZ1bmN0aW9uIChuYW1lLCBleHBlY3RlZCwgYWN0dWFsKSB7XG4gIC8vIGRldGVybWluZXI6ICdtdXN0IGJlJyBvciAnbXVzdCBub3QgYmUnXG4gIHZhciBkZXRlcm1pbmVyO1xuXG4gIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT09ICdzdHJpbmcnICYmIHN0YXJ0c1dpdGgoZXhwZWN0ZWQsICdub3QgJykpIHtcbiAgICBkZXRlcm1pbmVyID0gJ211c3Qgbm90IGJlJztcbiAgICBleHBlY3RlZCA9IGV4cGVjdGVkLnJlcGxhY2UoL15ub3QgLywgJycpO1xuICB9IGVsc2Uge1xuICAgIGRldGVybWluZXIgPSAnbXVzdCBiZSc7XG4gIH1cblxuICB2YXIgbXNnO1xuXG4gIGlmIChlbmRzV2l0aChuYW1lLCAnIGFyZ3VtZW50JykpIHtcbiAgICAvLyBGb3IgY2FzZXMgbGlrZSAnZmlyc3QgYXJndW1lbnQnXG4gICAgbXNnID0gXCJUaGUgXCIuY29uY2F0KG5hbWUsIFwiIFwiKS5jb25jYXQoZGV0ZXJtaW5lciwgXCIgXCIpLmNvbmNhdChvbmVPZihleHBlY3RlZCwgJ3R5cGUnKSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHR5cGUgPSBpbmNsdWRlcyhuYW1lLCAnLicpID8gJ3Byb3BlcnR5JyA6ICdhcmd1bWVudCc7XG4gICAgbXNnID0gXCJUaGUgXFxcIlwiLmNvbmNhdChuYW1lLCBcIlxcXCIgXCIpLmNvbmNhdCh0eXBlLCBcIiBcIikuY29uY2F0KGRldGVybWluZXIsIFwiIFwiKS5jb25jYXQob25lT2YoZXhwZWN0ZWQsICd0eXBlJykpO1xuICB9XG5cbiAgbXNnICs9IFwiLiBSZWNlaXZlZCB0eXBlIFwiLmNvbmNhdCh0eXBlb2YgYWN0dWFsKTtcbiAgcmV0dXJuIG1zZztcbn0sIFR5cGVFcnJvcik7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YnLCAnc3RyZWFtLnB1c2goKSBhZnRlciBFT0YnKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQnLCBmdW5jdGlvbiAobmFtZSkge1xuICByZXR1cm4gJ1RoZSAnICsgbmFtZSArICcgbWV0aG9kIGlzIG5vdCBpbXBsZW1lbnRlZCc7XG59KTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UnLCAnUHJlbWF0dXJlIGNsb3NlJyk7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9TVFJFQU1fREVTVFJPWUVEJywgZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuICdDYW5ub3QgY2FsbCAnICsgbmFtZSArICcgYWZ0ZXIgYSBzdHJlYW0gd2FzIGRlc3Ryb3llZCc7XG59KTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX01VTFRJUExFX0NBTExCQUNLJywgJ0NhbGxiYWNrIGNhbGxlZCBtdWx0aXBsZSB0aW1lcycpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfU1RSRUFNX0NBTk5PVF9QSVBFJywgJ0Nhbm5vdCBwaXBlLCBub3QgcmVhZGFibGUnKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQnLCAnd3JpdGUgYWZ0ZXIgZW5kJyk7XG5jcmVhdGVFcnJvclR5cGUoJ0VSUl9TVFJFQU1fTlVMTF9WQUxVRVMnLCAnTWF5IG5vdCB3cml0ZSBudWxsIHZhbHVlcyB0byBzdHJlYW0nLCBUeXBlRXJyb3IpO1xuY3JlYXRlRXJyb3JUeXBlKCdFUlJfVU5LTk9XTl9FTkNPRElORycsIGZ1bmN0aW9uIChhcmcpIHtcbiAgcmV0dXJuICdVbmtub3duIGVuY29kaW5nOiAnICsgYXJnO1xufSwgVHlwZUVycm9yKTtcbmNyZWF0ZUVycm9yVHlwZSgnRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVCcsICdzdHJlYW0udW5zaGlmdCgpIGFmdGVyIGVuZCBldmVudCcpO1xubW9kdWxlLmV4cG9ydHMuY29kZXMgPSBjb2RlcztcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuLy8gYSBkdXBsZXggc3RyZWFtIGlzIGp1c3QgYSBzdHJlYW0gdGhhdCBpcyBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZS5cbi8vIFNpbmNlIEpTIGRvZXNuJ3QgaGF2ZSBtdWx0aXBsZSBwcm90b3R5cGFsIGluaGVyaXRhbmNlLCB0aGlzIGNsYXNzXG4vLyBwcm90b3R5cGFsbHkgaW5oZXJpdHMgZnJvbSBSZWFkYWJsZSwgYW5kIHRoZW4gcGFyYXNpdGljYWxseSBmcm9tXG4vLyBXcml0YWJsZS5cbid1c2Ugc3RyaWN0Jztcbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBvYmplY3RLZXlzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24gKG9iaikge1xuICB2YXIga2V5cyA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBrZXlzLnB1c2goa2V5KTtcbiAgfVxuXG4gIHJldHVybiBrZXlzO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5cbm1vZHVsZS5leHBvcnRzID0gRHVwbGV4O1xuXG52YXIgUmVhZGFibGUgPSByZXF1aXJlKCcuL19zdHJlYW1fcmVhZGFibGUnKTtcblxudmFyIFdyaXRhYmxlID0gcmVxdWlyZSgnLi9fc3RyZWFtX3dyaXRhYmxlJyk7XG5cbnJlcXVpcmUoJ2luaGVyaXRzJykoRHVwbGV4LCBSZWFkYWJsZSk7XG5cbntcbiAgLy8gQWxsb3cgdGhlIGtleXMgYXJyYXkgdG8gYmUgR0MnZWQuXG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhXcml0YWJsZS5wcm90b3R5cGUpO1xuXG4gIGZvciAodmFyIHYgPSAwOyB2IDwga2V5cy5sZW5ndGg7IHYrKykge1xuICAgIHZhciBtZXRob2QgPSBrZXlzW3ZdO1xuICAgIGlmICghRHVwbGV4LnByb3RvdHlwZVttZXRob2RdKSBEdXBsZXgucHJvdG90eXBlW21ldGhvZF0gPSBXcml0YWJsZS5wcm90b3R5cGVbbWV0aG9kXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBEdXBsZXgob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRHVwbGV4KSkgcmV0dXJuIG5ldyBEdXBsZXgob3B0aW9ucyk7XG4gIFJlYWRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gIFdyaXRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7XG4gIHRoaXMuYWxsb3dIYWxmT3BlbiA9IHRydWU7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5yZWFkYWJsZSA9PT0gZmFsc2UpIHRoaXMucmVhZGFibGUgPSBmYWxzZTtcbiAgICBpZiAob3B0aW9ucy53cml0YWJsZSA9PT0gZmFsc2UpIHRoaXMud3JpdGFibGUgPSBmYWxzZTtcblxuICAgIGlmIChvcHRpb25zLmFsbG93SGFsZk9wZW4gPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmFsbG93SGFsZk9wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMub25jZSgnZW5kJywgb25lbmQpO1xuICAgIH1cbiAgfVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRHVwbGV4LnByb3RvdHlwZSwgJ3dyaXRhYmxlSGlnaFdhdGVyTWFyaycsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRHVwbGV4LnByb3RvdHlwZSwgJ3dyaXRhYmxlQnVmZmVyJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZSAmJiB0aGlzLl93cml0YWJsZVN0YXRlLmdldEJ1ZmZlcigpO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLCAnd3JpdGFibGVMZW5ndGgnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aDtcbiAgfVxufSk7IC8vIHRoZSBuby1oYWxmLW9wZW4gZW5mb3JjZXJcblxuZnVuY3Rpb24gb25lbmQoKSB7XG4gIC8vIElmIHRoZSB3cml0YWJsZSBzaWRlIGVuZGVkLCB0aGVuIHdlJ3JlIG9rLlxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZCkgcmV0dXJuOyAvLyBubyBtb3JlIGRhdGEgY2FuIGJlIHdyaXR0ZW4uXG4gIC8vIEJ1dCBhbGxvdyBtb3JlIHdyaXRlcyB0byBoYXBwZW4gaW4gdGhpcyB0aWNrLlxuXG4gIHByb2Nlc3MubmV4dFRpY2sob25FbmROVCwgdGhpcyk7XG59XG5cbmZ1bmN0aW9uIG9uRW5kTlQoc2VsZikge1xuICBzZWxmLmVuZCgpO1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRHVwbGV4LnByb3RvdHlwZSwgJ2Rlc3Ryb3llZCcsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtXG4gICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG5cblxuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG4vLyBhIHBhc3N0aHJvdWdoIHN0cmVhbS5cbi8vIGJhc2ljYWxseSBqdXN0IHRoZSBtb3N0IG1pbmltYWwgc29ydCBvZiBUcmFuc2Zvcm0gc3RyZWFtLlxuLy8gRXZlcnkgd3JpdHRlbiBjaHVuayBnZXRzIG91dHB1dCBhcy1pcy5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBQYXNzVGhyb3VnaDtcblxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vX3N0cmVhbV90cmFuc2Zvcm0nKTtcblxucmVxdWlyZSgnaW5oZXJpdHMnKShQYXNzVGhyb3VnaCwgVHJhbnNmb3JtKTtcblxuZnVuY3Rpb24gUGFzc1Rocm91Z2gob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUGFzc1Rocm91Z2gpKSByZXR1cm4gbmV3IFBhc3NUaHJvdWdoKG9wdGlvbnMpO1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcbn1cblxuUGFzc1Rocm91Z2gucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihudWxsLCBjaHVuayk7XG59OyIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWRhYmxlO1xuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIER1cGxleDtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5SZWFkYWJsZS5SZWFkYWJsZVN0YXRlID0gUmVhZGFibGVTdGF0ZTtcbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcblxudmFyIEVFbGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uIEVFbGlzdGVuZXJDb3VudChlbWl0dGVyLCB0eXBlKSB7XG4gIHJldHVybiBlbWl0dGVyLmxpc3RlbmVycyh0eXBlKS5sZW5ndGg7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG5cblxudmFyIFN0cmVhbSA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9zdHJlYW0nKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbnZhciBPdXJVaW50OEFycmF5ID0gZ2xvYmFsLlVpbnQ4QXJyYXkgfHwgZnVuY3Rpb24gKCkge307XG5cbmZ1bmN0aW9uIF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTtcbn1cblxuZnVuY3Rpb24gX2lzVWludDhBcnJheShvYmopIHtcbiAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihvYmopIHx8IG9iaiBpbnN0YW5jZW9mIE91clVpbnQ4QXJyYXk7XG59XG4vKjxyZXBsYWNlbWVudD4qL1xuXG5cbnZhciBkZWJ1Z1V0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbnZhciBkZWJ1ZztcblxuaWYgKGRlYnVnVXRpbCAmJiBkZWJ1Z1V0aWwuZGVidWdsb2cpIHtcbiAgZGVidWcgPSBkZWJ1Z1V0aWwuZGVidWdsb2coJ3N0cmVhbScpO1xufSBlbHNlIHtcbiAgZGVidWcgPSBmdW5jdGlvbiBkZWJ1ZygpIHt9O1xufVxuLyo8L3JlcGxhY2VtZW50PiovXG5cblxudmFyIEJ1ZmZlckxpc3QgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvYnVmZmVyX2xpc3QnKTtcblxudmFyIGRlc3Ryb3lJbXBsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3knKTtcblxudmFyIF9yZXF1aXJlID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0YXRlJyksXG4gICAgZ2V0SGlnaFdhdGVyTWFyayA9IF9yZXF1aXJlLmdldEhpZ2hXYXRlck1hcms7XG5cbnZhciBfcmVxdWlyZSRjb2RlcyA9IHJlcXVpcmUoJy4uL2Vycm9ycycpLmNvZGVzLFxuICAgIEVSUl9JTlZBTElEX0FSR19UWVBFID0gX3JlcXVpcmUkY29kZXMuRVJSX0lOVkFMSURfQVJHX1RZUEUsXG4gICAgRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRiA9IF9yZXF1aXJlJGNvZGVzLkVSUl9TVFJFQU1fUFVTSF9BRlRFUl9FT0YsXG4gICAgRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCxcbiAgICBFUlJfU1RSRUFNX1VOU0hJRlRfQUZURVJfRU5EX0VWRU5UID0gX3JlcXVpcmUkY29kZXMuRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVDsgLy8gTGF6eSBsb2FkZWQgdG8gaW1wcm92ZSB0aGUgc3RhcnR1cCBwZXJmb3JtYW5jZS5cblxuXG52YXIgU3RyaW5nRGVjb2RlcjtcbnZhciBjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3I7XG52YXIgZnJvbTtcblxucmVxdWlyZSgnaW5oZXJpdHMnKShSZWFkYWJsZSwgU3RyZWFtKTtcblxudmFyIGVycm9yT3JEZXN0cm95ID0gZGVzdHJveUltcGwuZXJyb3JPckRlc3Ryb3k7XG52YXIga1Byb3h5RXZlbnRzID0gWydlcnJvcicsICdjbG9zZScsICdkZXN0cm95JywgJ3BhdXNlJywgJ3Jlc3VtZSddO1xuXG5mdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIoZW1pdHRlciwgZXZlbnQsIGZuKSB7XG4gIC8vIFNhZGx5IHRoaXMgaXMgbm90IGNhY2hlYWJsZSBhcyBzb21lIGxpYnJhcmllcyBidW5kbGUgdGhlaXIgb3duXG4gIC8vIGV2ZW50IGVtaXR0ZXIgaW1wbGVtZW50YXRpb24gd2l0aCB0aGVtLlxuICBpZiAodHlwZW9mIGVtaXR0ZXIucHJlcGVuZExpc3RlbmVyID09PSAnZnVuY3Rpb24nKSByZXR1cm4gZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIoZXZlbnQsIGZuKTsgLy8gVGhpcyBpcyBhIGhhY2sgdG8gbWFrZSBzdXJlIHRoYXQgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIGFueVxuICAvLyB1c2VybGFuZCBvbmVzLiAgTkVWRVIgRE8gVEhJUy4gVGhpcyBpcyBoZXJlIG9ubHkgYmVjYXVzZSB0aGlzIGNvZGUgbmVlZHNcbiAgLy8gdG8gY29udGludWUgdG8gd29yayB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIE5vZGUuanMgdGhhdCBkbyBub3QgaW5jbHVkZVxuICAvLyB0aGUgcHJlcGVuZExpc3RlbmVyKCkgbWV0aG9kLiBUaGUgZ29hbCBpcyB0byBldmVudHVhbGx5IHJlbW92ZSB0aGlzIGhhY2suXG5cbiAgaWYgKCFlbWl0dGVyLl9ldmVudHMgfHwgIWVtaXR0ZXIuX2V2ZW50c1tldmVudF0pIGVtaXR0ZXIub24oZXZlbnQsIGZuKTtlbHNlIGlmIChBcnJheS5pc0FycmF5KGVtaXR0ZXIuX2V2ZW50c1tldmVudF0pKSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdLnVuc2hpZnQoZm4pO2Vsc2UgZW1pdHRlci5fZXZlbnRzW2V2ZW50XSA9IFtmbiwgZW1pdHRlci5fZXZlbnRzW2V2ZW50XV07XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtLCBpc0R1cGxleCkge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsgLy8gRHVwbGV4IHN0cmVhbXMgYXJlIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLCBidXQgc2hhcmVcbiAgLy8gdGhlIHNhbWUgb3B0aW9ucyBvYmplY3QuXG4gIC8vIEhvd2V2ZXIsIHNvbWUgY2FzZXMgcmVxdWlyZSBzZXR0aW5nIG9wdGlvbnMgdG8gZGlmZmVyZW50XG4gIC8vIHZhbHVlcyBmb3IgdGhlIHJlYWRhYmxlIGFuZCB0aGUgd3JpdGFibGUgc2lkZXMgb2YgdGhlIGR1cGxleCBzdHJlYW0uXG4gIC8vIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHByb3ZpZGVkIHNlcGFyYXRlbHkgYXMgcmVhZGFibGVYWFggYW5kIHdyaXRhYmxlWFhYLlxuXG4gIGlmICh0eXBlb2YgaXNEdXBsZXggIT09ICdib29sZWFuJykgaXNEdXBsZXggPSBzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXg7IC8vIG9iamVjdCBzdHJlYW0gZmxhZy4gVXNlZCB0byBtYWtlIHJlYWQobikgaWdub3JlIG4gYW5kIHRvXG4gIC8vIG1ha2UgYWxsIHRoZSBidWZmZXIgbWVyZ2luZyBhbmQgbGVuZ3RoIGNoZWNrcyBnbyBhd2F5XG5cbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG4gIGlmIChpc0R1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy5yZWFkYWJsZU9iamVjdE1vZGU7IC8vIHRoZSBwb2ludCBhdCB3aGljaCBpdCBzdG9wcyBjYWxsaW5nIF9yZWFkKCkgdG8gZmlsbCB0aGUgYnVmZmVyXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgXCJkb24ndCBjYWxsIF9yZWFkIHByZWVtcHRpdmVseSBldmVyXCJcblxuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBnZXRIaWdoV2F0ZXJNYXJrKHRoaXMsIG9wdGlvbnMsICdyZWFkYWJsZUhpZ2hXYXRlck1hcmsnLCBpc0R1cGxleCk7IC8vIEEgbGlua2VkIGxpc3QgaXMgdXNlZCB0byBzdG9yZSBkYXRhIGNodW5rcyBpbnN0ZWFkIG9mIGFuIGFycmF5IGJlY2F1c2UgdGhlXG4gIC8vIGxpbmtlZCBsaXN0IGNhbiByZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgYmVnaW5uaW5nIGZhc3RlciB0aGFuXG4gIC8vIGFycmF5LnNoaWZ0KClcblxuICB0aGlzLmJ1ZmZlciA9IG5ldyBCdWZmZXJMaXN0KCk7XG4gIHRoaXMubGVuZ3RoID0gMDtcbiAgdGhpcy5waXBlcyA9IG51bGw7XG4gIHRoaXMucGlwZXNDb3VudCA9IDA7XG4gIHRoaXMuZmxvd2luZyA9IG51bGw7XG4gIHRoaXMuZW5kZWQgPSBmYWxzZTtcbiAgdGhpcy5lbmRFbWl0dGVkID0gZmFsc2U7XG4gIHRoaXMucmVhZGluZyA9IGZhbHNlOyAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBldmVudCAncmVhZGFibGUnLydkYXRhJyBpcyBlbWl0dGVkXG4gIC8vIGltbWVkaWF0ZWx5LCBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlXG4gIC8vIGFueSBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCByZWFkIGNhbGwuXG5cbiAgdGhpcy5zeW5jID0gdHJ1ZTsgLy8gd2hlbmV2ZXIgd2UgcmV0dXJuIG51bGwsIHRoZW4gd2Ugc2V0IGEgZmxhZyB0byBzYXlcbiAgLy8gdGhhdCB3ZSdyZSBhd2FpdGluZyBhICdyZWFkYWJsZScgZXZlbnQgZW1pc3Npb24uXG5cbiAgdGhpcy5uZWVkUmVhZGFibGUgPSBmYWxzZTtcbiAgdGhpcy5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcbiAgdGhpcy5yZWFkYWJsZUxpc3RlbmluZyA9IGZhbHNlO1xuICB0aGlzLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlO1xuICB0aGlzLnBhdXNlZCA9IHRydWU7IC8vIFNob3VsZCBjbG9zZSBiZSBlbWl0dGVkIG9uIGRlc3Ryb3kuIERlZmF1bHRzIHRvIHRydWUuXG5cbiAgdGhpcy5lbWl0Q2xvc2UgPSBvcHRpb25zLmVtaXRDbG9zZSAhPT0gZmFsc2U7IC8vIFNob3VsZCAuZGVzdHJveSgpIGJlIGNhbGxlZCBhZnRlciAnZW5kJyAoYW5kIHBvdGVudGlhbGx5ICdmaW5pc2gnKVxuXG4gIHRoaXMuYXV0b0Rlc3Ryb3kgPSAhIW9wdGlvbnMuYXV0b0Rlc3Ryb3k7IC8vIGhhcyBpdCBiZWVuIGRlc3Ryb3llZFxuXG4gIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7IC8vIENyeXB0byBpcyBraW5kIG9mIG9sZCBhbmQgY3J1c3R5LiAgSGlzdG9yaWNhbGx5LCBpdHMgZGVmYXVsdCBzdHJpbmdcbiAgLy8gZW5jb2RpbmcgaXMgJ2JpbmFyeScgc28gd2UgaGF2ZSB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlLlxuICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guXG5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7IC8vIHRoZSBudW1iZXIgb2Ygd3JpdGVycyB0aGF0IGFyZSBhd2FpdGluZyBhIGRyYWluIGV2ZW50IGluIC5waXBlKClzXG5cbiAgdGhpcy5hd2FpdERyYWluID0gMDsgLy8gaWYgdHJ1ZSwgYSBtYXliZVJlYWRNb3JlIGhhcyBiZWVuIHNjaGVkdWxlZFxuXG4gIHRoaXMucmVhZGluZ01vcmUgPSBmYWxzZTtcbiAgdGhpcy5kZWNvZGVyID0gbnVsbDtcbiAgdGhpcy5lbmNvZGluZyA9IG51bGw7XG5cbiAgaWYgKG9wdGlvbnMuZW5jb2RpbmcpIHtcbiAgICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICAgIHRoaXMuZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKG9wdGlvbnMuZW5jb2RpbmcpO1xuICAgIHRoaXMuZW5jb2RpbmcgPSBvcHRpb25zLmVuY29kaW5nO1xuICB9XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlKG9wdGlvbnMpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlYWRhYmxlKSkgcmV0dXJuIG5ldyBSZWFkYWJsZShvcHRpb25zKTsgLy8gQ2hlY2tpbmcgZm9yIGEgU3RyZWFtLkR1cGxleCBpbnN0YW5jZSBpcyBmYXN0ZXIgaGVyZSBpbnN0ZWFkIG9mIGluc2lkZVxuICAvLyB0aGUgUmVhZGFibGVTdGF0ZSBjb25zdHJ1Y3RvciwgYXQgbGVhc3Qgd2l0aCBWOCA2LjVcblxuICB2YXIgaXNEdXBsZXggPSB0aGlzIGluc3RhbmNlb2YgRHVwbGV4O1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlID0gbmV3IFJlYWRhYmxlU3RhdGUob3B0aW9ucywgdGhpcywgaXNEdXBsZXgpOyAvLyBsZWdhY3lcblxuICB0aGlzLnJlYWRhYmxlID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5yZWFkID09PSAnZnVuY3Rpb24nKSB0aGlzLl9yZWFkID0gb3B0aW9ucy5yZWFkO1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95O1xuICB9XG5cbiAgU3RyZWFtLmNhbGwodGhpcyk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtXG4gICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgIGlmICghdGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseVxuICAgIC8vIG1hbmFnaW5nIGRlc3Ryb3llZFxuXG5cbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTtcblJlYWRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTtcblJlYWRhYmxlLnByb3RvdHlwZS5fdW5kZXN0cm95ID0gZGVzdHJveUltcGwudW5kZXN0cm95O1xuXG5SZWFkYWJsZS5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICBjYihlcnIpO1xufTsgLy8gTWFudWFsbHkgc2hvdmUgc29tZXRoaW5nIGludG8gdGhlIHJlYWQoKSBidWZmZXIuXG4vLyBUaGlzIHJldHVybnMgdHJ1ZSBpZiB0aGUgaGlnaFdhdGVyTWFyayBoYXMgbm90IGJlZW4gaGl0IHlldCxcbi8vIHNpbWlsYXIgdG8gaG93IFdyaXRhYmxlLndyaXRlKCkgcmV0dXJucyB0cnVlIGlmIHlvdSBzaG91bGRcbi8vIHdyaXRlKCkgc29tZSBtb3JlLlxuXG5cblJlYWRhYmxlLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgc2tpcENodW5rQ2hlY2s7XG5cbiAgaWYgKCFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgc3RhdGUuZGVmYXVsdEVuY29kaW5nO1xuXG4gICAgICBpZiAoZW5jb2RpbmcgIT09IHN0YXRlLmVuY29kaW5nKSB7XG4gICAgICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgICAgICAgZW5jb2RpbmcgPSAnJztcbiAgICAgIH1cblxuICAgICAgc2tpcENodW5rQ2hlY2sgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBza2lwQ2h1bmtDaGVjayA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBjaHVuaywgZW5jb2RpbmcsIGZhbHNlLCBza2lwQ2h1bmtDaGVjayk7XG59OyAvLyBVbnNoaWZ0IHNob3VsZCAqYWx3YXlzKiBiZSBzb21ldGhpbmcgZGlyZWN0bHkgb3V0IG9mIHJlYWQoKVxuXG5cblJlYWRhYmxlLnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBudWxsLCB0cnVlLCBmYWxzZSk7XG59O1xuXG5mdW5jdGlvbiByZWFkYWJsZUFkZENodW5rKHN0cmVhbSwgY2h1bmssIGVuY29kaW5nLCBhZGRUb0Zyb250LCBza2lwQ2h1bmtDaGVjaykge1xuICBkZWJ1ZygncmVhZGFibGVBZGRDaHVuaycsIGNodW5rKTtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuXG4gIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciBlcjtcbiAgICBpZiAoIXNraXBDaHVua0NoZWNrKSBlciA9IGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspO1xuXG4gICAgaWYgKGVyKSB7XG4gICAgICBlcnJvck9yRGVzdHJveShzdHJlYW0sIGVyKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLm9iamVjdE1vZGUgfHwgY2h1bmsgJiYgY2h1bmsubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgIXN0YXRlLm9iamVjdE1vZGUgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGNodW5rKSAhPT0gQnVmZmVyLnByb3RvdHlwZSkge1xuICAgICAgICBjaHVuayA9IF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspO1xuICAgICAgfVxuXG4gICAgICBpZiAoYWRkVG9Gcm9udCkge1xuICAgICAgICBpZiAoc3RhdGUuZW5kRW1pdHRlZCkgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBuZXcgRVJSX1NUUkVBTV9VTlNISUZUX0FGVEVSX0VORF9FVkVOVCgpKTtlbHNlIGFkZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCB0cnVlKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUuZW5kZWQpIHtcbiAgICAgICAgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBuZXcgRVJSX1NUUkVBTV9QVVNIX0FGVEVSX0VPRigpKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUuZGVzdHJveWVkKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcblxuICAgICAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhZW5jb2RpbmcpIHtcbiAgICAgICAgICBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspO1xuICAgICAgICAgIGlmIChzdGF0ZS5vYmplY3RNb2RlIHx8IGNodW5rLmxlbmd0aCAhPT0gMCkgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKTtlbHNlIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIWFkZFRvRnJvbnQpIHtcbiAgICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICAgIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSk7XG4gICAgfVxuICB9IC8vIFdlIGNhbiBwdXNoIG1vcmUgZGF0YSBpZiB3ZSBhcmUgYmVsb3cgdGhlIGhpZ2hXYXRlck1hcmsuXG4gIC8vIEFsc28sIGlmIHdlIGhhdmUgbm8gZGF0YSB5ZXQsIHdlIGNhbiBzdGFuZCBzb21lIG1vcmUgYnl0ZXMuXG4gIC8vIFRoaXMgaXMgdG8gd29yayBhcm91bmQgY2FzZXMgd2hlcmUgaHdtPTAsIHN1Y2ggYXMgdGhlIHJlcGwuXG5cblxuICByZXR1cm4gIXN0YXRlLmVuZGVkICYmIChzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCk7XG59XG5cbmZ1bmN0aW9uIGFkZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBhZGRUb0Zyb250KSB7XG4gIGlmIChzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCAmJiAhc3RhdGUuc3luYykge1xuICAgIHN0YXRlLmF3YWl0RHJhaW4gPSAwO1xuICAgIHN0cmVhbS5lbWl0KCdkYXRhJywgY2h1bmspO1xuICB9IGVsc2Uge1xuICAgIC8vIHVwZGF0ZSB0aGUgYnVmZmVyIGluZm8uXG4gICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgIGlmIChhZGRUb0Zyb250KSBzdGF0ZS5idWZmZXIudW5zaGlmdChjaHVuayk7ZWxzZSBzdGF0ZS5idWZmZXIucHVzaChjaHVuayk7XG4gICAgaWYgKHN0YXRlLm5lZWRSZWFkYWJsZSkgZW1pdFJlYWRhYmxlKHN0cmVhbSk7XG4gIH1cblxuICBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpO1xufVxuXG5mdW5jdGlvbiBjaHVua0ludmFsaWQoc3RhdGUsIGNodW5rKSB7XG4gIHZhciBlcjtcblxuICBpZiAoIV9pc1VpbnQ4QXJyYXkoY2h1bmspICYmIHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdjaHVuaycsIFsnc3RyaW5nJywgJ0J1ZmZlcicsICdVaW50OEFycmF5J10sIGNodW5rKTtcbiAgfVxuXG4gIHJldHVybiBlcjtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLmlzUGF1c2VkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID09PSBmYWxzZTtcbn07IC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuXG5cblJlYWRhYmxlLnByb3RvdHlwZS5zZXRFbmNvZGluZyA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgaWYgKCFTdHJpbmdEZWNvZGVyKSBTdHJpbmdEZWNvZGVyID0gcmVxdWlyZSgnc3RyaW5nX2RlY29kZXIvJykuU3RyaW5nRGVjb2RlcjtcbiAgdmFyIGRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihlbmMpO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIgPSBkZWNvZGVyOyAvLyBJZiBzZXRFbmNvZGluZyhudWxsKSwgZGVjb2Rlci5lbmNvZGluZyBlcXVhbHMgdXRmOFxuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2RpbmcgPSB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIuZW5jb2Rpbmc7IC8vIEl0ZXJhdGUgb3ZlciBjdXJyZW50IGJ1ZmZlciB0byBjb252ZXJ0IGFscmVhZHkgc3RvcmVkIEJ1ZmZlcnM6XG5cbiAgdmFyIHAgPSB0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5oZWFkO1xuICB2YXIgY29udGVudCA9ICcnO1xuXG4gIHdoaWxlIChwICE9PSBudWxsKSB7XG4gICAgY29udGVudCArPSBkZWNvZGVyLndyaXRlKHAuZGF0YSk7XG4gICAgcCA9IHAubmV4dDtcbiAgfVxuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyLmNsZWFyKCk7XG5cbiAgaWYgKGNvbnRlbnQgIT09ICcnKSB0aGlzLl9yZWFkYWJsZVN0YXRlLmJ1ZmZlci5wdXNoKGNvbnRlbnQpO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmxlbmd0aCA9IGNvbnRlbnQubGVuZ3RoO1xuICByZXR1cm4gdGhpcztcbn07IC8vIERvbid0IHJhaXNlIHRoZSBod20gPiAxR0JcblxuXG52YXIgTUFYX0hXTSA9IDB4NDAwMDAwMDA7XG5cbmZ1bmN0aW9uIGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pIHtcbiAgaWYgKG4gPj0gTUFYX0hXTSkge1xuICAgIC8vIFRPRE8ocm9uYWcpOiBUaHJvdyBFUlJfVkFMVUVfT1VUX09GX1JBTkdFLlxuICAgIG4gPSBNQVhfSFdNO1xuICB9IGVsc2Uge1xuICAgIC8vIEdldCB0aGUgbmV4dCBoaWdoZXN0IHBvd2VyIG9mIDIgdG8gcHJldmVudCBpbmNyZWFzaW5nIGh3bSBleGNlc3NpdmVseSBpblxuICAgIC8vIHRpbnkgYW1vdW50c1xuICAgIG4tLTtcbiAgICBuIHw9IG4gPj4+IDE7XG4gICAgbiB8PSBuID4+PiAyO1xuICAgIG4gfD0gbiA+Pj4gNDtcbiAgICBuIHw9IG4gPj4+IDg7XG4gICAgbiB8PSBuID4+PiAxNjtcbiAgICBuKys7XG4gIH1cblxuICByZXR1cm4gbjtcbn0gLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5cblxuZnVuY3Rpb24gaG93TXVjaFRvUmVhZChuLCBzdGF0ZSkge1xuICBpZiAobiA8PSAwIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkgcmV0dXJuIDA7XG4gIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXR1cm4gMTtcblxuICBpZiAobiAhPT0gbikge1xuICAgIC8vIE9ubHkgZmxvdyBvbmUgYnVmZmVyIGF0IGEgdGltZVxuICAgIGlmIChzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmxlbmd0aCkgcmV0dXJuIHN0YXRlLmJ1ZmZlci5oZWFkLmRhdGEubGVuZ3RoO2Vsc2UgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbiAgfSAvLyBJZiB3ZSdyZSBhc2tpbmcgZm9yIG1vcmUgdGhhbiB0aGUgY3VycmVudCBod20sIHRoZW4gcmFpc2UgdGhlIGh3bS5cblxuXG4gIGlmIChuID4gc3RhdGUuaGlnaFdhdGVyTWFyaykgc3RhdGUuaGlnaFdhdGVyTWFyayA9IGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pO1xuICBpZiAobiA8PSBzdGF0ZS5sZW5ndGgpIHJldHVybiBuOyAvLyBEb24ndCBoYXZlIGVub3VnaFxuXG4gIGlmICghc3RhdGUuZW5kZWQpIHtcbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbn0gLy8geW91IGNhbiBvdmVycmlkZSBlaXRoZXIgdGhpcyBtZXRob2QsIG9yIHRoZSBhc3luYyBfcmVhZChuKSBiZWxvdy5cblxuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIGRlYnVnKCdyZWFkJywgbik7XG4gIG4gPSBwYXJzZUludChuLCAxMCk7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBuT3JpZyA9IG47XG4gIGlmIChuICE9PSAwKSBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTsgLy8gaWYgd2UncmUgZG9pbmcgcmVhZCgwKSB0byB0cmlnZ2VyIGEgcmVhZGFibGUgZXZlbnQsIGJ1dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYSBidW5jaCBvZiBkYXRhIGluIHRoZSBidWZmZXIsIHRoZW4ganVzdCB0cmlnZ2VyXG4gIC8vIHRoZSAncmVhZGFibGUnIGV2ZW50IGFuZCBtb3ZlIG9uLlxuXG4gIGlmIChuID09PSAwICYmIHN0YXRlLm5lZWRSZWFkYWJsZSAmJiAoKHN0YXRlLmhpZ2hXYXRlck1hcmsgIT09IDAgPyBzdGF0ZS5sZW5ndGggPj0gc3RhdGUuaGlnaFdhdGVyTWFyayA6IHN0YXRlLmxlbmd0aCA+IDApIHx8IHN0YXRlLmVuZGVkKSkge1xuICAgIGRlYnVnKCdyZWFkOiBlbWl0UmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLmVuZGVkKTtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtlbHNlIGVtaXRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG4gPSBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKTsgLy8gaWYgd2UndmUgZW5kZWQsIGFuZCB3ZSdyZSBub3cgY2xlYXIsIHRoZW4gZmluaXNoIGl0IHVwLlxuXG4gIGlmIChuID09PSAwICYmIHN0YXRlLmVuZGVkKSB7XG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgZW5kUmVhZGFibGUodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH0gLy8gQWxsIHRoZSBhY3R1YWwgY2h1bmsgZ2VuZXJhdGlvbiBsb2dpYyBuZWVkcyB0byBiZVxuICAvLyAqYmVsb3cqIHRoZSBjYWxsIHRvIF9yZWFkLiAgVGhlIHJlYXNvbiBpcyB0aGF0IGluIGNlcnRhaW5cbiAgLy8gc3ludGhldGljIHN0cmVhbSBjYXNlcywgc3VjaCBhcyBwYXNzdGhyb3VnaCBzdHJlYW1zLCBfcmVhZFxuICAvLyBtYXkgYmUgYSBjb21wbGV0ZWx5IHN5bmNocm9ub3VzIG9wZXJhdGlvbiB3aGljaCBtYXkgY2hhbmdlXG4gIC8vIHRoZSBzdGF0ZSBvZiB0aGUgcmVhZCBidWZmZXIsIHByb3ZpZGluZyBlbm91Z2ggZGF0YSB3aGVuXG4gIC8vIGJlZm9yZSB0aGVyZSB3YXMgKm5vdCogZW5vdWdoLlxuICAvL1xuICAvLyBTbywgdGhlIHN0ZXBzIGFyZTpcbiAgLy8gMS4gRmlndXJlIG91dCB3aGF0IHRoZSBzdGF0ZSBvZiB0aGluZ3Mgd2lsbCBiZSBhZnRlciB3ZSBkb1xuICAvLyBhIHJlYWQgZnJvbSB0aGUgYnVmZmVyLlxuICAvL1xuICAvLyAyLiBJZiB0aGF0IHJlc3VsdGluZyBzdGF0ZSB3aWxsIHRyaWdnZXIgYSBfcmVhZCwgdGhlbiBjYWxsIF9yZWFkLlxuICAvLyBOb3RlIHRoYXQgdGhpcyBtYXkgYmUgYXN5bmNocm9ub3VzLCBvciBzeW5jaHJvbm91cy4gIFllcywgaXQgaXNcbiAgLy8gZGVlcGx5IHVnbHkgdG8gd3JpdGUgQVBJcyB0aGlzIHdheSwgYnV0IHRoYXQgc3RpbGwgZG9lc24ndCBtZWFuXG4gIC8vIHRoYXQgdGhlIFJlYWRhYmxlIGNsYXNzIHNob3VsZCBiZWhhdmUgaW1wcm9wZXJseSwgYXMgc3RyZWFtcyBhcmVcbiAgLy8gZGVzaWduZWQgdG8gYmUgc3luYy9hc3luYyBhZ25vc3RpYy5cbiAgLy8gVGFrZSBub3RlIGlmIHRoZSBfcmVhZCBjYWxsIGlzIHN5bmMgb3IgYXN5bmMgKGllLCBpZiB0aGUgcmVhZCBjYWxsXG4gIC8vIGhhcyByZXR1cm5lZCB5ZXQpLCBzbyB0aGF0IHdlIGtub3cgd2hldGhlciBvciBub3QgaXQncyBzYWZlIHRvIGVtaXRcbiAgLy8gJ3JlYWRhYmxlJyBldGMuXG4gIC8vXG4gIC8vIDMuIEFjdHVhbGx5IHB1bGwgdGhlIHJlcXVlc3RlZCBjaHVua3Mgb3V0IG9mIHRoZSBidWZmZXIgYW5kIHJldHVybi5cbiAgLy8gaWYgd2UgbmVlZCBhIHJlYWRhYmxlIGV2ZW50LCB0aGVuIHdlIG5lZWQgdG8gZG8gc29tZSByZWFkaW5nLlxuXG5cbiAgdmFyIGRvUmVhZCA9IHN0YXRlLm5lZWRSZWFkYWJsZTtcbiAgZGVidWcoJ25lZWQgcmVhZGFibGUnLCBkb1JlYWQpOyAvLyBpZiB3ZSBjdXJyZW50bHkgaGF2ZSBsZXNzIHRoYW4gdGhlIGhpZ2hXYXRlck1hcmssIHRoZW4gYWxzbyByZWFkIHNvbWVcblxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwIHx8IHN0YXRlLmxlbmd0aCAtIG4gPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgZG9SZWFkID0gdHJ1ZTtcbiAgICBkZWJ1ZygnbGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsnLCBkb1JlYWQpO1xuICB9IC8vIGhvd2V2ZXIsIGlmIHdlJ3ZlIGVuZGVkLCB0aGVuIHRoZXJlJ3Mgbm8gcG9pbnQsIGFuZCBpZiB3ZSdyZSBhbHJlYWR5XG4gIC8vIHJlYWRpbmcsIHRoZW4gaXQncyB1bm5lY2Vzc2FyeS5cblxuXG4gIGlmIChzdGF0ZS5lbmRlZCB8fCBzdGF0ZS5yZWFkaW5nKSB7XG4gICAgZG9SZWFkID0gZmFsc2U7XG4gICAgZGVidWcoJ3JlYWRpbmcgb3IgZW5kZWQnLCBkb1JlYWQpO1xuICB9IGVsc2UgaWYgKGRvUmVhZCkge1xuICAgIGRlYnVnKCdkbyByZWFkJyk7XG4gICAgc3RhdGUucmVhZGluZyA9IHRydWU7XG4gICAgc3RhdGUuc3luYyA9IHRydWU7IC8vIGlmIHRoZSBsZW5ndGggaXMgY3VycmVudGx5IHplcm8sIHRoZW4gd2UgKm5lZWQqIGEgcmVhZGFibGUgZXZlbnQuXG5cbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlOyAvLyBjYWxsIGludGVybmFsIHJlYWQgbWV0aG9kXG5cbiAgICB0aGlzLl9yZWFkKHN0YXRlLmhpZ2hXYXRlck1hcmspO1xuXG4gICAgc3RhdGUuc3luYyA9IGZhbHNlOyAvLyBJZiBfcmVhZCBwdXNoZWQgZGF0YSBzeW5jaHJvbm91c2x5LCB0aGVuIGByZWFkaW5nYCB3aWxsIGJlIGZhbHNlLFxuICAgIC8vIGFuZCB3ZSBuZWVkIHRvIHJlLWV2YWx1YXRlIGhvdyBtdWNoIGRhdGEgd2UgY2FuIHJldHVybiB0byB0aGUgdXNlci5cblxuICAgIGlmICghc3RhdGUucmVhZGluZykgbiA9IGhvd011Y2hUb1JlYWQobk9yaWcsIHN0YXRlKTtcbiAgfVxuXG4gIHZhciByZXQ7XG4gIGlmIChuID4gMCkgcmV0ID0gZnJvbUxpc3Qobiwgc3RhdGUpO2Vsc2UgcmV0ID0gbnVsbDtcblxuICBpZiAocmV0ID09PSBudWxsKSB7XG4gICAgc3RhdGUubmVlZFJlYWRhYmxlID0gc3RhdGUubGVuZ3RoIDw9IHN0YXRlLmhpZ2hXYXRlck1hcms7XG4gICAgbiA9IDA7XG4gIH0gZWxzZSB7XG4gICAgc3RhdGUubGVuZ3RoIC09IG47XG4gICAgc3RhdGUuYXdhaXREcmFpbiA9IDA7XG4gIH1cblxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgLy8gSWYgd2UgaGF2ZSBub3RoaW5nIGluIHRoZSBidWZmZXIsIHRoZW4gd2Ugd2FudCB0byBrbm93XG4gICAgLy8gYXMgc29vbiBhcyB3ZSAqZG8qIGdldCBzb21ldGhpbmcgaW50byB0aGUgYnVmZmVyLlxuICAgIGlmICghc3RhdGUuZW5kZWQpIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7IC8vIElmIHdlIHRyaWVkIHRvIHJlYWQoKSBwYXN0IHRoZSBFT0YsIHRoZW4gZW1pdCBlbmQgb24gdGhlIG5leHQgdGljay5cblxuICAgIGlmIChuT3JpZyAhPT0gbiAmJiBzdGF0ZS5lbmRlZCkgZW5kUmVhZGFibGUodGhpcyk7XG4gIH1cblxuICBpZiAocmV0ICE9PSBudWxsKSB0aGlzLmVtaXQoJ2RhdGEnLCByZXQpO1xuICByZXR1cm4gcmV0O1xufTtcblxuZnVuY3Rpb24gb25Fb2ZDaHVuayhzdHJlYW0sIHN0YXRlKSB7XG4gIGRlYnVnKCdvbkVvZkNodW5rJyk7XG4gIGlmIChzdGF0ZS5lbmRlZCkgcmV0dXJuO1xuXG4gIGlmIChzdGF0ZS5kZWNvZGVyKSB7XG4gICAgdmFyIGNodW5rID0gc3RhdGUuZGVjb2Rlci5lbmQoKTtcblxuICAgIGlmIChjaHVuayAmJiBjaHVuay5sZW5ndGgpIHtcbiAgICAgIHN0YXRlLmJ1ZmZlci5wdXNoKGNodW5rKTtcbiAgICAgIHN0YXRlLmxlbmd0aCArPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgICB9XG4gIH1cblxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG5cbiAgaWYgKHN0YXRlLnN5bmMpIHtcbiAgICAvLyBpZiB3ZSBhcmUgc3luYywgd2FpdCB1bnRpbCBuZXh0IHRpY2sgdG8gZW1pdCB0aGUgZGF0YS5cbiAgICAvLyBPdGhlcndpc2Ugd2UgcmlzayBlbWl0dGluZyBkYXRhIGluIHRoZSBmbG93KClcbiAgICAvLyB0aGUgcmVhZGFibGUgY29kZSB0cmlnZ2VycyBkdXJpbmcgYSByZWFkKCkgY2FsbFxuICAgIGVtaXRSZWFkYWJsZShzdHJlYW0pO1xuICB9IGVsc2Uge1xuICAgIC8vIGVtaXQgJ3JlYWRhYmxlJyBub3cgdG8gbWFrZSBzdXJlIGl0IGdldHMgcGlja2VkIHVwLlxuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuXG4gICAgaWYgKCFzdGF0ZS5lbWl0dGVkUmVhZGFibGUpIHtcbiAgICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgICBlbWl0UmVhZGFibGVfKHN0cmVhbSk7XG4gICAgfVxuICB9XG59IC8vIERvbid0IGVtaXQgcmVhZGFibGUgcmlnaHQgYXdheSBpbiBzeW5jIG1vZGUsIGJlY2F1c2UgdGhpcyBjYW4gdHJpZ2dlclxuLy8gYW5vdGhlciByZWFkKCkgY2FsbCA9PiBzdGFjayBvdmVyZmxvdy4gIFRoaXMgd2F5LCBpdCBtaWdodCB0cmlnZ2VyXG4vLyBhIG5leHRUaWNrIHJlY3Vyc2lvbiB3YXJuaW5nLCBidXQgdGhhdCdzIG5vdCBzbyBiYWQuXG5cblxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGRlYnVnKCdlbWl0UmVhZGFibGUnLCBzdGF0ZS5uZWVkUmVhZGFibGUsIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSk7XG4gIHN0YXRlLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuXG4gIGlmICghc3RhdGUuZW1pdHRlZFJlYWRhYmxlKSB7XG4gICAgZGVidWcoJ2VtaXRSZWFkYWJsZScsIHN0YXRlLmZsb3dpbmcpO1xuICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0UmVhZGFibGVfLCBzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVtaXRSZWFkYWJsZV8oc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgZGVidWcoJ2VtaXRSZWFkYWJsZV8nLCBzdGF0ZS5kZXN0cm95ZWQsIHN0YXRlLmxlbmd0aCwgc3RhdGUuZW5kZWQpO1xuXG4gIGlmICghc3RhdGUuZGVzdHJveWVkICYmIChzdGF0ZS5sZW5ndGggfHwgc3RhdGUuZW5kZWQpKSB7XG4gICAgc3RyZWFtLmVtaXQoJ3JlYWRhYmxlJyk7XG4gICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gIH0gLy8gVGhlIHN0cmVhbSBuZWVkcyBhbm90aGVyIHJlYWRhYmxlIGV2ZW50IGlmXG4gIC8vIDEuIEl0IGlzIG5vdCBmbG93aW5nLCBhcyB0aGUgZmxvdyBtZWNoYW5pc20gd2lsbCB0YWtlXG4gIC8vICAgIGNhcmUgb2YgaXQuXG4gIC8vIDIuIEl0IGlzIG5vdCBlbmRlZC5cbiAgLy8gMy4gSXQgaXMgYmVsb3cgdGhlIGhpZ2hXYXRlck1hcmssIHNvIHdlIGNhbiBzY2hlZHVsZVxuICAvLyAgICBhbm90aGVyIHJlYWRhYmxlIGxhdGVyLlxuXG5cbiAgc3RhdGUubmVlZFJlYWRhYmxlID0gIXN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLmVuZGVkICYmIHN0YXRlLmxlbmd0aCA8PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICBmbG93KHN0cmVhbSk7XG59IC8vIGF0IHRoaXMgcG9pbnQsIHRoZSB1c2VyIGhhcyBwcmVzdW1hYmx5IHNlZW4gdGhlICdyZWFkYWJsZScgZXZlbnQsXG4vLyBhbmQgY2FsbGVkIHJlYWQoKSB0byBjb25zdW1lIHNvbWUgZGF0YS4gIHRoYXQgbWF5IGhhdmUgdHJpZ2dlcmVkXG4vLyBpbiB0dXJuIGFub3RoZXIgX3JlYWQobikgY2FsbCwgaW4gd2hpY2ggY2FzZSByZWFkaW5nID0gdHJ1ZSBpZlxuLy8gaXQncyBpbiBwcm9ncmVzcy5cbi8vIEhvd2V2ZXIsIGlmIHdlJ3JlIG5vdCBlbmRlZCwgb3IgcmVhZGluZywgYW5kIHRoZSBsZW5ndGggPCBod20sXG4vLyB0aGVuIGdvIGFoZWFkIGFuZCB0cnkgdG8gcmVhZCBzb21lIG1vcmUgcHJlZW1wdGl2ZWx5LlxuXG5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlYWRpbmdNb3JlKSB7XG4gICAgc3RhdGUucmVhZGluZ01vcmUgPSB0cnVlO1xuICAgIHByb2Nlc3MubmV4dFRpY2sobWF5YmVSZWFkTW9yZV8sIHN0cmVhbSwgc3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgLy8gQXR0ZW1wdCB0byByZWFkIG1vcmUgZGF0YSBpZiB3ZSBzaG91bGQuXG4gIC8vXG4gIC8vIFRoZSBjb25kaXRpb25zIGZvciByZWFkaW5nIG1vcmUgZGF0YSBhcmUgKG9uZSBvZik6XG4gIC8vIC0gTm90IGVub3VnaCBkYXRhIGJ1ZmZlcmVkIChzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKS4gVGhlIGxvb3BcbiAgLy8gICBpcyByZXNwb25zaWJsZSBmb3IgZmlsbGluZyB0aGUgYnVmZmVyIHdpdGggZW5vdWdoIGRhdGEgaWYgc3VjaCBkYXRhXG4gIC8vICAgaXMgYXZhaWxhYmxlLiBJZiBoaWdoV2F0ZXJNYXJrIGlzIDAgYW5kIHdlIGFyZSBub3QgaW4gdGhlIGZsb3dpbmcgbW9kZVxuICAvLyAgIHdlIHNob3VsZCBfbm90XyBhdHRlbXB0IHRvIGJ1ZmZlciBhbnkgZXh0cmEgZGF0YS4gV2UnbGwgZ2V0IG1vcmUgZGF0YVxuICAvLyAgIHdoZW4gdGhlIHN0cmVhbSBjb25zdW1lciBjYWxscyByZWFkKCkgaW5zdGVhZC5cbiAgLy8gLSBObyBkYXRhIGluIHRoZSBidWZmZXIsIGFuZCB0aGUgc3RyZWFtIGlzIGluIGZsb3dpbmcgbW9kZS4gSW4gdGhpcyBtb2RlXG4gIC8vICAgdGhlIGxvb3AgYmVsb3cgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHJlYWQoKSBpcyBjYWxsZWQuIEZhaWxpbmcgdG9cbiAgLy8gICBjYWxsIHJlYWQgaGVyZSB3b3VsZCBhYm9ydCB0aGUgZmxvdyBhbmQgdGhlcmUncyBubyBvdGhlciBtZWNoYW5pc20gZm9yXG4gIC8vICAgY29udGludWluZyB0aGUgZmxvdyBpZiB0aGUgc3RyZWFtIGNvbnN1bWVyIGhhcyBqdXN0IHN1YnNjcmliZWQgdG8gdGhlXG4gIC8vICAgJ2RhdGEnIGV2ZW50LlxuICAvL1xuICAvLyBJbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUgY29uZGl0aW9ucyB0byBrZWVwIHJlYWRpbmcgZGF0YSwgdGhlIGZvbGxvd2luZ1xuICAvLyBjb25kaXRpb25zIHByZXZlbnQgdGhlIGRhdGEgZnJvbSBiZWluZyByZWFkOlxuICAvLyAtIFRoZSBzdHJlYW0gaGFzIGVuZGVkIChzdGF0ZS5lbmRlZCkuXG4gIC8vIC0gVGhlcmUgaXMgYWxyZWFkeSBhIHBlbmRpbmcgJ3JlYWQnIG9wZXJhdGlvbiAoc3RhdGUucmVhZGluZykuIFRoaXMgaXMgYVxuICAvLyAgIGNhc2Ugd2hlcmUgdGhlIHRoZSBzdHJlYW0gaGFzIGNhbGxlZCB0aGUgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBfcmVhZCgpXG4gIC8vICAgbWV0aG9kLCBidXQgdGhleSBhcmUgcHJvY2Vzc2luZyB0aGUgY2FsbCBhc3luY2hyb25vdXNseSBhbmQgaGF2ZSBfbm90X1xuICAvLyAgIGNhbGxlZCBwdXNoKCkgd2l0aCBuZXcgZGF0YS4gSW4gdGhpcyBjYXNlIHdlIHNraXAgcGVyZm9ybWluZyBtb3JlXG4gIC8vICAgcmVhZCgpcy4gVGhlIGV4ZWN1dGlvbiBlbmRzIGluIHRoaXMgbWV0aG9kIGFnYWluIGFmdGVyIHRoZSBfcmVhZCgpIGVuZHNcbiAgLy8gICB1cCBjYWxsaW5nIHB1c2goKSB3aXRoIG1vcmUgZGF0YS5cbiAgd2hpbGUgKCFzdGF0ZS5yZWFkaW5nICYmICFzdGF0ZS5lbmRlZCAmJiAoc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyayB8fCBzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCkpIHtcbiAgICB2YXIgbGVuID0gc3RhdGUubGVuZ3RoO1xuICAgIGRlYnVnKCdtYXliZVJlYWRNb3JlIHJlYWQgMCcpO1xuICAgIHN0cmVhbS5yZWFkKDApO1xuICAgIGlmIChsZW4gPT09IHN0YXRlLmxlbmd0aCkgLy8gZGlkbid0IGdldCBhbnkgZGF0YSwgc3RvcCBzcGlubmluZy5cbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgc3RhdGUucmVhZGluZ01vcmUgPSBmYWxzZTtcbn0gLy8gYWJzdHJhY3QgbWV0aG9kLiAgdG8gYmUgb3ZlcnJpZGRlbiBpbiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gY2FsbCBjYihlciwgZGF0YSkgd2hlcmUgZGF0YSBpcyA8PSBuIGluIGxlbmd0aC5cbi8vIGZvciB2aXJ0dWFsIChub24tc3RyaW5nLCBub24tYnVmZmVyKSBzdHJlYW1zLCBcImxlbmd0aFwiIGlzIHNvbWV3aGF0XG4vLyBhcmJpdHJhcnksIGFuZCBwZXJoYXBzIG5vdCB2ZXJ5IG1lYW5pbmdmdWwuXG5cblxuUmVhZGFibGUucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgZXJyb3JPckRlc3Ryb3kodGhpcywgbmV3IEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEKCdfcmVhZCgpJykpO1xufTtcblxuUmVhZGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoZGVzdCwgcGlwZU9wdHMpIHtcbiAgdmFyIHNyYyA9IHRoaXM7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG5cbiAgc3dpdGNoIChzdGF0ZS5waXBlc0NvdW50KSB7XG4gICAgY2FzZSAwOlxuICAgICAgc3RhdGUucGlwZXMgPSBkZXN0O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIDE6XG4gICAgICBzdGF0ZS5waXBlcyA9IFtzdGF0ZS5waXBlcywgZGVzdF07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0ZS5waXBlcy5wdXNoKGRlc3QpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBzdGF0ZS5waXBlc0NvdW50ICs9IDE7XG4gIGRlYnVnKCdwaXBlIGNvdW50PSVkIG9wdHM9JWonLCBzdGF0ZS5waXBlc0NvdW50LCBwaXBlT3B0cyk7XG4gIHZhciBkb0VuZCA9ICghcGlwZU9wdHMgfHwgcGlwZU9wdHMuZW5kICE9PSBmYWxzZSkgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRvdXQgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRlcnI7XG4gIHZhciBlbmRGbiA9IGRvRW5kID8gb25lbmQgOiB1bnBpcGU7XG4gIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBwcm9jZXNzLm5leHRUaWNrKGVuZEZuKTtlbHNlIHNyYy5vbmNlKCdlbmQnLCBlbmRGbik7XG4gIGRlc3Qub24oJ3VucGlwZScsIG9udW5waXBlKTtcblxuICBmdW5jdGlvbiBvbnVucGlwZShyZWFkYWJsZSwgdW5waXBlSW5mbykge1xuICAgIGRlYnVnKCdvbnVucGlwZScpO1xuXG4gICAgaWYgKHJlYWRhYmxlID09PSBzcmMpIHtcbiAgICAgIGlmICh1bnBpcGVJbmZvICYmIHVucGlwZUluZm8uaGFzVW5waXBlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgdW5waXBlSW5mby5oYXNVbnBpcGVkID0gdHJ1ZTtcbiAgICAgICAgY2xlYW51cCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uZW5kKCkge1xuICAgIGRlYnVnKCdvbmVuZCcpO1xuICAgIGRlc3QuZW5kKCk7XG4gIH0gLy8gd2hlbiB0aGUgZGVzdCBkcmFpbnMsIGl0IHJlZHVjZXMgdGhlIGF3YWl0RHJhaW4gY291bnRlclxuICAvLyBvbiB0aGUgc291cmNlLiAgVGhpcyB3b3VsZCBiZSBtb3JlIGVsZWdhbnQgd2l0aCBhIC5vbmNlKClcbiAgLy8gaGFuZGxlciBpbiBmbG93KCksIGJ1dCBhZGRpbmcgYW5kIHJlbW92aW5nIHJlcGVhdGVkbHkgaXNcbiAgLy8gdG9vIHNsb3cuXG5cblxuICB2YXIgb25kcmFpbiA9IHBpcGVPbkRyYWluKHNyYyk7XG4gIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbik7XG4gIHZhciBjbGVhbmVkVXAgPSBmYWxzZTtcblxuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIGRlYnVnKCdjbGVhbnVwJyk7IC8vIGNsZWFudXAgZXZlbnQgaGFuZGxlcnMgb25jZSB0aGUgcGlwZSBpcyBicm9rZW5cblxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCd1bnBpcGUnLCBvbnVucGlwZSk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCB1bnBpcGUpO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZGF0YScsIG9uZGF0YSk7XG4gICAgY2xlYW5lZFVwID0gdHJ1ZTsgLy8gaWYgdGhlIHJlYWRlciBpcyB3YWl0aW5nIGZvciBhIGRyYWluIGV2ZW50IGZyb20gdGhpc1xuICAgIC8vIHNwZWNpZmljIHdyaXRlciwgdGhlbiBpdCB3b3VsZCBjYXVzZSBpdCB0byBuZXZlciBzdGFydFxuICAgIC8vIGZsb3dpbmcgYWdhaW4uXG4gICAgLy8gU28sIGlmIHRoaXMgaXMgYXdhaXRpbmcgYSBkcmFpbiwgdGhlbiB3ZSBqdXN0IGNhbGwgaXQgbm93LlxuICAgIC8vIElmIHdlIGRvbid0IGtub3csIHRoZW4gYXNzdW1lIHRoYXQgd2UgYXJlIHdhaXRpbmcgZm9yIG9uZS5cblxuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluICYmICghZGVzdC5fd3JpdGFibGVTdGF0ZSB8fCBkZXN0Ll93cml0YWJsZVN0YXRlLm5lZWREcmFpbikpIG9uZHJhaW4oKTtcbiAgfVxuXG4gIHNyYy5vbignZGF0YScsIG9uZGF0YSk7XG5cbiAgZnVuY3Rpb24gb25kYXRhKGNodW5rKSB7XG4gICAgZGVidWcoJ29uZGF0YScpO1xuICAgIHZhciByZXQgPSBkZXN0LndyaXRlKGNodW5rKTtcbiAgICBkZWJ1ZygnZGVzdC53cml0ZScsIHJldCk7XG5cbiAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuICAgICAgLy8gSWYgdGhlIHVzZXIgdW5waXBlZCBkdXJpbmcgYGRlc3Qud3JpdGUoKWAsIGl0IGlzIHBvc3NpYmxlXG4gICAgICAvLyB0byBnZXQgc3R1Y2sgaW4gYSBwZXJtYW5lbnRseSBwYXVzZWQgc3RhdGUgaWYgdGhhdCB3cml0ZVxuICAgICAgLy8gYWxzbyByZXR1cm5lZCBmYWxzZS5cbiAgICAgIC8vID0+IENoZWNrIHdoZXRoZXIgYGRlc3RgIGlzIHN0aWxsIGEgcGlwaW5nIGRlc3RpbmF0aW9uLlxuICAgICAgaWYgKChzdGF0ZS5waXBlc0NvdW50ID09PSAxICYmIHN0YXRlLnBpcGVzID09PSBkZXN0IHx8IHN0YXRlLnBpcGVzQ291bnQgPiAxICYmIGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpICE9PSAtMSkgJiYgIWNsZWFuZWRVcCkge1xuICAgICAgICBkZWJ1ZygnZmFsc2Ugd3JpdGUgcmVzcG9uc2UsIHBhdXNlJywgc3RhdGUuYXdhaXREcmFpbik7XG4gICAgICAgIHN0YXRlLmF3YWl0RHJhaW4rKztcbiAgICAgIH1cblxuICAgICAgc3JjLnBhdXNlKCk7XG4gICAgfVxuICB9IC8vIGlmIHRoZSBkZXN0IGhhcyBhbiBlcnJvciwgdGhlbiBzdG9wIHBpcGluZyBpbnRvIGl0LlxuICAvLyBob3dldmVyLCBkb24ndCBzdXBwcmVzcyB0aGUgdGhyb3dpbmcgYmVoYXZpb3IgZm9yIHRoaXMuXG5cblxuICBmdW5jdGlvbiBvbmVycm9yKGVyKSB7XG4gICAgZGVidWcoJ29uZXJyb3InLCBlcik7XG4gICAgdW5waXBlKCk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBpZiAoRUVsaXN0ZW5lckNvdW50KGRlc3QsICdlcnJvcicpID09PSAwKSBlcnJvck9yRGVzdHJveShkZXN0LCBlcik7XG4gIH0gLy8gTWFrZSBzdXJlIG91ciBlcnJvciBoYW5kbGVyIGlzIGF0dGFjaGVkIGJlZm9yZSB1c2VybGFuZCBvbmVzLlxuXG5cbiAgcHJlcGVuZExpc3RlbmVyKGRlc3QsICdlcnJvcicsIG9uZXJyb3IpOyAvLyBCb3RoIGNsb3NlIGFuZCBmaW5pc2ggc2hvdWxkIHRyaWdnZXIgdW5waXBlLCBidXQgb25seSBvbmNlLlxuXG4gIGZ1bmN0aW9uIG9uY2xvc2UoKSB7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIHVucGlwZSgpO1xuICB9XG5cbiAgZGVzdC5vbmNlKCdjbG9zZScsIG9uY2xvc2UpO1xuXG4gIGZ1bmN0aW9uIG9uZmluaXNoKCkge1xuICAgIGRlYnVnKCdvbmZpbmlzaCcpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gICAgdW5waXBlKCk7XG4gIH1cblxuICBkZXN0Lm9uY2UoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcblxuICBmdW5jdGlvbiB1bnBpcGUoKSB7XG4gICAgZGVidWcoJ3VucGlwZScpO1xuICAgIHNyYy51bnBpcGUoZGVzdCk7XG4gIH0gLy8gdGVsbCB0aGUgZGVzdCB0aGF0IGl0J3MgYmVpbmcgcGlwZWQgdG9cblxuXG4gIGRlc3QuZW1pdCgncGlwZScsIHNyYyk7IC8vIHN0YXJ0IHRoZSBmbG93IGlmIGl0IGhhc24ndCBiZWVuIHN0YXJ0ZWQgYWxyZWFkeS5cblxuICBpZiAoIXN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncGlwZSByZXN1bWUnKTtcbiAgICBzcmMucmVzdW1lKCk7XG4gIH1cblxuICByZXR1cm4gZGVzdDtcbn07XG5cbmZ1bmN0aW9uIHBpcGVPbkRyYWluKHNyYykge1xuICByZXR1cm4gZnVuY3Rpb24gcGlwZU9uRHJhaW5GdW5jdGlvblJlc3VsdCgpIHtcbiAgICB2YXIgc3RhdGUgPSBzcmMuX3JlYWRhYmxlU3RhdGU7XG4gICAgZGVidWcoJ3BpcGVPbkRyYWluJywgc3RhdGUuYXdhaXREcmFpbik7XG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4pIHN0YXRlLmF3YWl0RHJhaW4tLTtcblxuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluID09PSAwICYmIEVFbGlzdGVuZXJDb3VudChzcmMsICdkYXRhJykpIHtcbiAgICAgIHN0YXRlLmZsb3dpbmcgPSB0cnVlO1xuICAgICAgZmxvdyhzcmMpO1xuICAgIH1cbiAgfTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLnVucGlwZSA9IGZ1bmN0aW9uIChkZXN0KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciB1bnBpcGVJbmZvID0ge1xuICAgIGhhc1VucGlwZWQ6IGZhbHNlXG4gIH07IC8vIGlmIHdlJ3JlIG5vdCBwaXBpbmcgYW55d2hlcmUsIHRoZW4gZG8gbm90aGluZy5cblxuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMCkgcmV0dXJuIHRoaXM7IC8vIGp1c3Qgb25lIGRlc3RpbmF0aW9uLiAgbW9zdCBjb21tb24gY2FzZS5cblxuICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMSkge1xuICAgIC8vIHBhc3NlZCBpbiBvbmUsIGJ1dCBpdCdzIG5vdCB0aGUgcmlnaHQgb25lLlxuICAgIGlmIChkZXN0ICYmIGRlc3QgIT09IHN0YXRlLnBpcGVzKSByZXR1cm4gdGhpcztcbiAgICBpZiAoIWRlc3QpIGRlc3QgPSBzdGF0ZS5waXBlczsgLy8gZ290IGEgbWF0Y2guXG5cbiAgICBzdGF0ZS5waXBlcyA9IG51bGw7XG4gICAgc3RhdGUucGlwZXNDb3VudCA9IDA7XG4gICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlO1xuICAgIGlmIChkZXN0KSBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pO1xuICAgIHJldHVybiB0aGlzO1xuICB9IC8vIHNsb3cgY2FzZS4gbXVsdGlwbGUgcGlwZSBkZXN0aW5hdGlvbnMuXG5cblxuICBpZiAoIWRlc3QpIHtcbiAgICAvLyByZW1vdmUgYWxsLlxuICAgIHZhciBkZXN0cyA9IHN0YXRlLnBpcGVzO1xuICAgIHZhciBsZW4gPSBzdGF0ZS5waXBlc0NvdW50O1xuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBkZXN0c1tpXS5lbWl0KCd1bnBpcGUnLCB0aGlzLCB7XG4gICAgICAgIGhhc1VucGlwZWQ6IGZhbHNlXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfSAvLyB0cnkgdG8gZmluZCB0aGUgcmlnaHQgb25lLlxuXG5cbiAgdmFyIGluZGV4ID0gaW5kZXhPZihzdGF0ZS5waXBlcywgZGVzdCk7XG4gIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiB0aGlzO1xuICBzdGF0ZS5waXBlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICBzdGF0ZS5waXBlc0NvdW50IC09IDE7XG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSBzdGF0ZS5waXBlcyA9IHN0YXRlLnBpcGVzWzBdO1xuICBkZXN0LmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pO1xuICByZXR1cm4gdGhpcztcbn07IC8vIHNldCB1cCBkYXRhIGV2ZW50cyBpZiB0aGV5IGFyZSBhc2tlZCBmb3Jcbi8vIEVuc3VyZSByZWFkYWJsZSBsaXN0ZW5lcnMgZXZlbnR1YWxseSBnZXQgc29tZXRoaW5nXG5cblxuUmVhZGFibGUucHJvdG90eXBlLm9uID0gZnVuY3Rpb24gKGV2LCBmbikge1xuICB2YXIgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsIGV2LCBmbik7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG5cbiAgaWYgKGV2ID09PSAnZGF0YScpIHtcbiAgICAvLyB1cGRhdGUgcmVhZGFibGVMaXN0ZW5pbmcgc28gdGhhdCByZXN1bWUoKSBtYXkgYmUgYSBuby1vcFxuICAgIC8vIGEgZmV3IGxpbmVzIGRvd24uIFRoaXMgaXMgbmVlZGVkIHRvIHN1cHBvcnQgb25jZSgncmVhZGFibGUnKS5cbiAgICBzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZyA9IHRoaXMubGlzdGVuZXJDb3VudCgncmVhZGFibGUnKSA+IDA7IC8vIFRyeSBzdGFydCBmbG93aW5nIG9uIG5leHQgdGljayBpZiBzdHJlYW0gaXNuJ3QgZXhwbGljaXRseSBwYXVzZWRcblxuICAgIGlmIChzdGF0ZS5mbG93aW5nICE9PSBmYWxzZSkgdGhpcy5yZXN1bWUoKTtcbiAgfSBlbHNlIGlmIChldiA9PT0gJ3JlYWRhYmxlJykge1xuICAgIGlmICghc3RhdGUuZW5kRW1pdHRlZCAmJiAhc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcpIHtcbiAgICAgIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcbiAgICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IGZhbHNlO1xuICAgICAgZGVidWcoJ29uIHJlYWRhYmxlJywgc3RhdGUubGVuZ3RoLCBzdGF0ZS5yZWFkaW5nKTtcblxuICAgICAgaWYgKHN0YXRlLmxlbmd0aCkge1xuICAgICAgICBlbWl0UmVhZGFibGUodGhpcyk7XG4gICAgICB9IGVsc2UgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soblJlYWRpbmdOZXh0VGljaywgdGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cblJlYWRhYmxlLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IFJlYWRhYmxlLnByb3RvdHlwZS5vbjtcblxuUmVhZGFibGUucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID0gZnVuY3Rpb24gKGV2LCBmbikge1xuICB2YXIgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lci5jYWxsKHRoaXMsIGV2LCBmbik7XG5cbiAgaWYgKGV2ID09PSAncmVhZGFibGUnKSB7XG4gICAgLy8gV2UgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBzb21lb25lIHN0aWxsIGxpc3RlbmluZyB0b1xuICAgIC8vIHJlYWRhYmxlIGFuZCByZXNldCB0aGUgc3RhdGUuIEhvd2V2ZXIgdGhpcyBuZWVkcyB0byBoYXBwZW5cbiAgICAvLyBhZnRlciByZWFkYWJsZSBoYXMgYmVlbiBlbWl0dGVkIGJ1dCBiZWZvcmUgSS9PIChuZXh0VGljaykgdG9cbiAgICAvLyBzdXBwb3J0IG9uY2UoJ3JlYWRhYmxlJywgZm4pIGN5Y2xlcy4gVGhpcyBtZWFucyB0aGF0IGNhbGxpbmdcbiAgICAvLyByZXN1bWUgd2l0aGluIHRoZSBzYW1lIHRpY2sgd2lsbCBoYXZlIG5vXG4gICAgLy8gZWZmZWN0LlxuICAgIHByb2Nlc3MubmV4dFRpY2sodXBkYXRlUmVhZGFibGVMaXN0ZW5pbmcsIHRoaXMpO1xuICB9XG5cbiAgcmV0dXJuIHJlcztcbn07XG5cblJlYWRhYmxlLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBmdW5jdGlvbiAoZXYpIHtcbiAgdmFyIHJlcyA9IFN0cmVhbS5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cbiAgaWYgKGV2ID09PSAncmVhZGFibGUnIHx8IGV2ID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIHNvbWVvbmUgc3RpbGwgbGlzdGVuaW5nIHRvXG4gICAgLy8gcmVhZGFibGUgYW5kIHJlc2V0IHRoZSBzdGF0ZS4gSG93ZXZlciB0aGlzIG5lZWRzIHRvIGhhcHBlblxuICAgIC8vIGFmdGVyIHJlYWRhYmxlIGhhcyBiZWVuIGVtaXR0ZWQgYnV0IGJlZm9yZSBJL08gKG5leHRUaWNrKSB0b1xuICAgIC8vIHN1cHBvcnQgb25jZSgncmVhZGFibGUnLCBmbikgY3ljbGVzLiBUaGlzIG1lYW5zIHRoYXQgY2FsbGluZ1xuICAgIC8vIHJlc3VtZSB3aXRoaW4gdGhlIHNhbWUgdGljayB3aWxsIGhhdmUgbm9cbiAgICAvLyBlZmZlY3QuXG4gICAgcHJvY2Vzcy5uZXh0VGljayh1cGRhdGVSZWFkYWJsZUxpc3RlbmluZywgdGhpcyk7XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblxuZnVuY3Rpb24gdXBkYXRlUmVhZGFibGVMaXN0ZW5pbmcoc2VsZikge1xuICB2YXIgc3RhdGUgPSBzZWxmLl9yZWFkYWJsZVN0YXRlO1xuICBzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZyA9IHNlbGYubGlzdGVuZXJDb3VudCgncmVhZGFibGUnKSA+IDA7XG5cbiAgaWYgKHN0YXRlLnJlc3VtZVNjaGVkdWxlZCAmJiAhc3RhdGUucGF1c2VkKSB7XG4gICAgLy8gZmxvd2luZyBuZWVkcyB0byBiZSBzZXQgdG8gdHJ1ZSBub3csIG90aGVyd2lzZVxuICAgIC8vIHRoZSB1cGNvbWluZyByZXN1bWUgd2lsbCBub3QgZmxvdy5cbiAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTsgLy8gY3J1ZGUgd2F5IHRvIGNoZWNrIGlmIHdlIHNob3VsZCByZXN1bWVcbiAgfSBlbHNlIGlmIChzZWxmLmxpc3RlbmVyQ291bnQoJ2RhdGEnKSA+IDApIHtcbiAgICBzZWxmLnJlc3VtZSgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG5SZWFkaW5nTmV4dFRpY2soc2VsZikge1xuICBkZWJ1ZygncmVhZGFibGUgbmV4dHRpY2sgcmVhZCAwJyk7XG4gIHNlbGYucmVhZCgwKTtcbn0gLy8gcGF1c2UoKSBhbmQgcmVzdW1lKCkgYXJlIHJlbW5hbnRzIG9mIHRoZSBsZWdhY3kgcmVhZGFibGUgc3RyZWFtIEFQSVxuLy8gSWYgdGhlIHVzZXIgdXNlcyB0aGVtLCB0aGVuIHN3aXRjaCBpbnRvIG9sZCBtb2RlLlxuXG5cblJlYWRhYmxlLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG5cbiAgaWYgKCFzdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3Jlc3VtZScpOyAvLyB3ZSBmbG93IG9ubHkgaWYgdGhlcmUgaXMgbm8gb25lIGxpc3RlbmluZ1xuICAgIC8vIGZvciByZWFkYWJsZSwgYnV0IHdlIHN0aWxsIGhhdmUgdG8gY2FsbFxuICAgIC8vIHJlc3VtZSgpXG5cbiAgICBzdGF0ZS5mbG93aW5nID0gIXN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nO1xuICAgIHJlc3VtZSh0aGlzLCBzdGF0ZSk7XG4gIH1cblxuICBzdGF0ZS5wYXVzZWQgPSBmYWxzZTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiByZXN1bWUoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlc3VtZVNjaGVkdWxlZCkge1xuICAgIHN0YXRlLnJlc3VtZVNjaGVkdWxlZCA9IHRydWU7XG4gICAgcHJvY2Vzcy5uZXh0VGljayhyZXN1bWVfLCBzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXN1bWVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgZGVidWcoJ3Jlc3VtZScsIHN0YXRlLnJlYWRpbmcpO1xuXG4gIGlmICghc3RhdGUucmVhZGluZykge1xuICAgIHN0cmVhbS5yZWFkKDApO1xuICB9XG5cbiAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gZmFsc2U7XG4gIHN0cmVhbS5lbWl0KCdyZXN1bWUnKTtcbiAgZmxvdyhzdHJlYW0pO1xuICBpZiAoc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUucmVhZGluZykgc3RyZWFtLnJlYWQoMCk7XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgZGVidWcoJ2NhbGwgcGF1c2UgZmxvd2luZz0laicsIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyk7XG5cbiAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyAhPT0gZmFsc2UpIHtcbiAgICBkZWJ1ZygncGF1c2UnKTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmVtaXQoJ3BhdXNlJyk7XG4gIH1cblxuICB0aGlzLl9yZWFkYWJsZVN0YXRlLnBhdXNlZCA9IHRydWU7XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZmxvdyhzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBkZWJ1ZygnZmxvdycsIHN0YXRlLmZsb3dpbmcpO1xuXG4gIHdoaWxlIChzdGF0ZS5mbG93aW5nICYmIHN0cmVhbS5yZWFkKCkgIT09IG51bGwpIHtcbiAgICA7XG4gIH1cbn0gLy8gd3JhcCBhbiBvbGQtc3R5bGUgc3RyZWFtIGFzIHRoZSBhc3luYyBkYXRhIHNvdXJjZS5cbi8vIFRoaXMgaXMgKm5vdCogcGFydCBvZiB0aGUgcmVhZGFibGUgc3RyZWFtIGludGVyZmFjZS5cbi8vIEl0IGlzIGFuIHVnbHkgdW5mb3J0dW5hdGUgbWVzcyBvZiBoaXN0b3J5LlxuXG5cblJlYWRhYmxlLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24gKHN0cmVhbSkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBwYXVzZWQgPSBmYWxzZTtcbiAgc3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZW5kJyk7XG5cbiAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhc3RhdGUuZW5kZWQpIHtcbiAgICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgICBpZiAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoKSBfdGhpcy5wdXNoKGNodW5rKTtcbiAgICB9XG5cbiAgICBfdGhpcy5wdXNoKG51bGwpO1xuICB9KTtcbiAgc3RyZWFtLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZGF0YScpO1xuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSBjaHVuayA9IHN0YXRlLmRlY29kZXIud3JpdGUoY2h1bmspOyAvLyBkb24ndCBza2lwIG92ZXIgZmFsc3kgdmFsdWVzIGluIG9iamVjdE1vZGVcblxuICAgIGlmIChzdGF0ZS5vYmplY3RNb2RlICYmIChjaHVuayA9PT0gbnVsbCB8fCBjaHVuayA9PT0gdW5kZWZpbmVkKSkgcmV0dXJuO2Vsc2UgaWYgKCFzdGF0ZS5vYmplY3RNb2RlICYmICghY2h1bmsgfHwgIWNodW5rLmxlbmd0aCkpIHJldHVybjtcblxuICAgIHZhciByZXQgPSBfdGhpcy5wdXNoKGNodW5rKTtcblxuICAgIGlmICghcmV0KSB7XG4gICAgICBwYXVzZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLnBhdXNlKCk7XG4gICAgfVxuICB9KTsgLy8gcHJveHkgYWxsIHRoZSBvdGhlciBtZXRob2RzLlxuICAvLyBpbXBvcnRhbnQgd2hlbiB3cmFwcGluZyBmaWx0ZXJzIGFuZCBkdXBsZXhlcy5cblxuICBmb3IgKHZhciBpIGluIHN0cmVhbSkge1xuICAgIGlmICh0aGlzW2ldID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIHN0cmVhbVtpXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpc1tpXSA9IGZ1bmN0aW9uIG1ldGhvZFdyYXAobWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiBtZXRob2RXcmFwUmV0dXJuRnVuY3Rpb24oKSB7XG4gICAgICAgICAgcmV0dXJuIHN0cmVhbVttZXRob2RdLmFwcGx5KHN0cmVhbSwgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICAgIH0oaSk7XG4gICAgfVxuICB9IC8vIHByb3h5IGNlcnRhaW4gaW1wb3J0YW50IGV2ZW50cy5cblxuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwga1Byb3h5RXZlbnRzLmxlbmd0aDsgbisrKSB7XG4gICAgc3RyZWFtLm9uKGtQcm94eUV2ZW50c1tuXSwgdGhpcy5lbWl0LmJpbmQodGhpcywga1Byb3h5RXZlbnRzW25dKSk7XG4gIH0gLy8gd2hlbiB3ZSB0cnkgdG8gY29uc3VtZSBzb21lIG1vcmUgYnl0ZXMsIHNpbXBseSB1bnBhdXNlIHRoZVxuICAvLyB1bmRlcmx5aW5nIHN0cmVhbS5cblxuXG4gIHRoaXMuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICAgIGRlYnVnKCd3cmFwcGVkIF9yZWFkJywgbik7XG5cbiAgICBpZiAocGF1c2VkKSB7XG4gICAgICBwYXVzZWQgPSBmYWxzZTtcbiAgICAgIHN0cmVhbS5yZXN1bWUoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5pZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJykge1xuICBSZWFkYWJsZS5wcm90b3R5cGVbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3IgPT09IHVuZGVmaW5lZCkge1xuICAgICAgY3JlYXRlUmVhZGFibGVTdHJlYW1Bc3luY0l0ZXJhdG9yID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2FzeW5jX2l0ZXJhdG9yJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNyZWF0ZVJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvcih0aGlzKTtcbiAgfTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ3JlYWRhYmxlSGlnaFdhdGVyTWFyaycsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgfVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhZGFibGUucHJvdG90eXBlLCAncmVhZGFibGVCdWZmZXInLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlICYmIHRoaXMuX3JlYWRhYmxlU3RhdGUuYnVmZmVyO1xuICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFkYWJsZS5wcm90b3R5cGUsICdyZWFkYWJsZUZsb3dpbmcnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmc7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gc2V0KHN0YXRlKSB7XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUpIHtcbiAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9IHN0YXRlO1xuICAgIH1cbiAgfVxufSk7IC8vIGV4cG9zZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seS5cblxuUmVhZGFibGUuX2Zyb21MaXN0ID0gZnJvbUxpc3Q7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhZGFibGUucHJvdG90eXBlLCAncmVhZGFibGVMZW5ndGgnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVN0YXRlLmxlbmd0aDtcbiAgfVxufSk7IC8vIFBsdWNrIG9mZiBuIGJ5dGVzIGZyb20gYW4gYXJyYXkgb2YgYnVmZmVycy5cbi8vIExlbmd0aCBpcyB0aGUgY29tYmluZWQgbGVuZ3RocyBvZiBhbGwgdGhlIGJ1ZmZlcnMgaW4gdGhlIGxpc3QuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cblxuZnVuY3Rpb24gZnJvbUxpc3Qobiwgc3RhdGUpIHtcbiAgLy8gbm90aGluZyBidWZmZXJlZFxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgdmFyIHJldDtcbiAgaWYgKHN0YXRlLm9iamVjdE1vZGUpIHJldCA9IHN0YXRlLmJ1ZmZlci5zaGlmdCgpO2Vsc2UgaWYgKCFuIHx8IG4gPj0gc3RhdGUubGVuZ3RoKSB7XG4gICAgLy8gcmVhZCBpdCBhbGwsIHRydW5jYXRlIHRoZSBsaXN0XG4gICAgaWYgKHN0YXRlLmRlY29kZXIpIHJldCA9IHN0YXRlLmJ1ZmZlci5qb2luKCcnKTtlbHNlIGlmIChzdGF0ZS5idWZmZXIubGVuZ3RoID09PSAxKSByZXQgPSBzdGF0ZS5idWZmZXIuZmlyc3QoKTtlbHNlIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25jYXQoc3RhdGUubGVuZ3RoKTtcbiAgICBzdGF0ZS5idWZmZXIuY2xlYXIoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyByZWFkIHBhcnQgb2YgbGlzdFxuICAgIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25zdW1lKG4sIHN0YXRlLmRlY29kZXIpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGRlYnVnKCdlbmRSZWFkYWJsZScsIHN0YXRlLmVuZEVtaXR0ZWQpO1xuXG4gIGlmICghc3RhdGUuZW5kRW1pdHRlZCkge1xuICAgIHN0YXRlLmVuZGVkID0gdHJ1ZTtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGVuZFJlYWRhYmxlTlQsIHN0YXRlLCBzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlTlQoc3RhdGUsIHN0cmVhbSkge1xuICBkZWJ1ZygnZW5kUmVhZGFibGVOVCcsIHN0YXRlLmVuZEVtaXR0ZWQsIHN0YXRlLmxlbmd0aCk7IC8vIENoZWNrIHRoYXQgd2UgZGlkbid0IGdldCBvbmUgbGFzdCB1bnNoaWZ0LlxuXG4gIGlmICghc3RhdGUuZW5kRW1pdHRlZCAmJiBzdGF0ZS5sZW5ndGggPT09IDApIHtcbiAgICBzdGF0ZS5lbmRFbWl0dGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0ucmVhZGFibGUgPSBmYWxzZTtcbiAgICBzdHJlYW0uZW1pdCgnZW5kJyk7XG5cbiAgICBpZiAoc3RhdGUuYXV0b0Rlc3Ryb3kpIHtcbiAgICAgIC8vIEluIGNhc2Ugb2YgZHVwbGV4IHN0cmVhbXMgd2UgbmVlZCBhIHdheSB0byBkZXRlY3RcbiAgICAgIC8vIGlmIHRoZSB3cml0YWJsZSBzaWRlIGlzIHJlYWR5IGZvciBhdXRvRGVzdHJveSBhcyB3ZWxsXG4gICAgICB2YXIgd1N0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlO1xuXG4gICAgICBpZiAoIXdTdGF0ZSB8fCB3U3RhdGUuYXV0b0Rlc3Ryb3kgJiYgd1N0YXRlLmZpbmlzaGVkKSB7XG4gICAgICAgIHN0cmVhbS5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nKSB7XG4gIFJlYWRhYmxlLmZyb20gPSBmdW5jdGlvbiAoaXRlcmFibGUsIG9wdHMpIHtcbiAgICBpZiAoZnJvbSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBmcm9tID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Zyb20nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJvbShSZWFkYWJsZSwgaXRlcmFibGUsIG9wdHMpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBpbmRleE9mKHhzLCB4KSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKHhzW2ldID09PSB4KSByZXR1cm4gaTtcbiAgfVxuXG4gIHJldHVybiAtMTtcbn0iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbi8vIGEgdHJhbnNmb3JtIHN0cmVhbSBpcyBhIHJlYWRhYmxlL3dyaXRhYmxlIHN0cmVhbSB3aGVyZSB5b3UgZG9cbi8vIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhLiAgU29tZXRpbWVzIGl0J3MgY2FsbGVkIGEgXCJmaWx0ZXJcIixcbi8vIGJ1dCB0aGF0J3Mgbm90IGEgZ3JlYXQgbmFtZSBmb3IgaXQsIHNpbmNlIHRoYXQgaW1wbGllcyBhIHRoaW5nIHdoZXJlXG4vLyBzb21lIGJpdHMgcGFzcyB0aHJvdWdoLCBhbmQgb3RoZXJzIGFyZSBzaW1wbHkgaWdub3JlZC4gIChUaGF0IHdvdWxkXG4vLyBiZSBhIHZhbGlkIGV4YW1wbGUgb2YgYSB0cmFuc2Zvcm0sIG9mIGNvdXJzZS4pXG4vL1xuLy8gV2hpbGUgdGhlIG91dHB1dCBpcyBjYXVzYWxseSByZWxhdGVkIHRvIHRoZSBpbnB1dCwgaXQncyBub3QgYVxuLy8gbmVjZXNzYXJpbHkgc3ltbWV0cmljIG9yIHN5bmNocm9ub3VzIHRyYW5zZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsXG4vLyBhIHpsaWIgc3RyZWFtIG1pZ2h0IHRha2UgbXVsdGlwbGUgcGxhaW4tdGV4dCB3cml0ZXMoKSwgYW5kIHRoZW5cbi8vIGVtaXQgYSBzaW5nbGUgY29tcHJlc3NlZCBjaHVuayBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZS5cbi8vXG4vLyBIZXJlJ3MgaG93IHRoaXMgd29ya3M6XG4vL1xuLy8gVGhlIFRyYW5zZm9ybSBzdHJlYW0gaGFzIGFsbCB0aGUgYXNwZWN0cyBvZiB0aGUgcmVhZGFibGUgYW5kIHdyaXRhYmxlXG4vLyBzdHJlYW0gY2xhc3Nlcy4gIFdoZW4geW91IHdyaXRlKGNodW5rKSwgdGhhdCBjYWxscyBfd3JpdGUoY2h1bmssY2IpXG4vLyBpbnRlcm5hbGx5LCBhbmQgcmV0dXJucyBmYWxzZSBpZiB0aGVyZSdzIGEgbG90IG9mIHBlbmRpbmcgd3JpdGVzXG4vLyBidWZmZXJlZCB1cC4gIFdoZW4geW91IGNhbGwgcmVhZCgpLCB0aGF0IGNhbGxzIF9yZWFkKG4pIHVudGlsXG4vLyB0aGVyZSdzIGVub3VnaCBwZW5kaW5nIHJlYWRhYmxlIGRhdGEgYnVmZmVyZWQgdXAuXG4vL1xuLy8gSW4gYSB0cmFuc2Zvcm0gc3RyZWFtLCB0aGUgd3JpdHRlbiBkYXRhIGlzIHBsYWNlZCBpbiBhIGJ1ZmZlci4gIFdoZW5cbi8vIF9yZWFkKG4pIGlzIGNhbGxlZCwgaXQgdHJhbnNmb3JtcyB0aGUgcXVldWVkIHVwIGRhdGEsIGNhbGxpbmcgdGhlXG4vLyBidWZmZXJlZCBfd3JpdGUgY2IncyBhcyBpdCBjb25zdW1lcyBjaHVua3MuICBJZiBjb25zdW1pbmcgYSBzaW5nbGVcbi8vIHdyaXR0ZW4gY2h1bmsgd291bGQgcmVzdWx0IGluIG11bHRpcGxlIG91dHB1dCBjaHVua3MsIHRoZW4gdGhlIGZpcnN0XG4vLyBvdXRwdXR0ZWQgYml0IGNhbGxzIHRoZSByZWFkY2IsIGFuZCBzdWJzZXF1ZW50IGNodW5rcyBqdXN0IGdvIGludG9cbi8vIHRoZSByZWFkIGJ1ZmZlciwgYW5kIHdpbGwgY2F1c2UgaXQgdG8gZW1pdCAncmVhZGFibGUnIGlmIG5lY2Vzc2FyeS5cbi8vXG4vLyBUaGlzIHdheSwgYmFjay1wcmVzc3VyZSBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSByZWFkaW5nIHNpZGUsXG4vLyBzaW5jZSBfcmVhZCBoYXMgdG8gYmUgY2FsbGVkIHRvIHN0YXJ0IHByb2Nlc3NpbmcgYSBuZXcgY2h1bmsuICBIb3dldmVyLFxuLy8gYSBwYXRob2xvZ2ljYWwgaW5mbGF0ZSB0eXBlIG9mIHRyYW5zZm9ybSBjYW4gY2F1c2UgZXhjZXNzaXZlIGJ1ZmZlcmluZ1xuLy8gaGVyZS4gIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3RyZWFtIHdoZXJlIGV2ZXJ5IGJ5dGUgb2YgaW5wdXQgaXNcbi8vIGludGVycHJldGVkIGFzIGFuIGludGVnZXIgZnJvbSAwLTI1NSwgYW5kIHRoZW4gcmVzdWx0cyBpbiB0aGF0IG1hbnlcbi8vIGJ5dGVzIG9mIG91dHB1dC4gIFdyaXRpbmcgdGhlIDQgYnl0ZXMge2ZmLGZmLGZmLGZmfSB3b3VsZCByZXN1bHQgaW5cbi8vIDFrYiBvZiBkYXRhIGJlaW5nIG91dHB1dC4gIEluIHRoaXMgY2FzZSwgeW91IGNvdWxkIHdyaXRlIGEgdmVyeSBzbWFsbFxuLy8gYW1vdW50IG9mIGlucHV0LCBhbmQgZW5kIHVwIHdpdGggYSB2ZXJ5IGxhcmdlIGFtb3VudCBvZiBvdXRwdXQuICBJblxuLy8gc3VjaCBhIHBhdGhvbG9naWNhbCBpbmZsYXRpbmcgbWVjaGFuaXNtLCB0aGVyZSdkIGJlIG5vIHdheSB0byB0ZWxsXG4vLyB0aGUgc3lzdGVtIHRvIHN0b3AgZG9pbmcgdGhlIHRyYW5zZm9ybS4gIEEgc2luZ2xlIDRNQiB3cml0ZSBjb3VsZFxuLy8gY2F1c2UgdGhlIHN5c3RlbSB0byBydW4gb3V0IG9mIG1lbW9yeS5cbi8vXG4vLyBIb3dldmVyLCBldmVuIGluIHN1Y2ggYSBwYXRob2xvZ2ljYWwgY2FzZSwgb25seSBhIHNpbmdsZSB3cml0dGVuIGNodW5rXG4vLyB3b3VsZCBiZSBjb25zdW1lZCwgYW5kIHRoZW4gdGhlIHJlc3Qgd291bGQgd2FpdCAodW4tdHJhbnNmb3JtZWQpIHVudGlsXG4vLyB0aGUgcmVzdWx0cyBvZiB0aGUgcHJldmlvdXMgdHJhbnNmb3JtZWQgY2h1bmsgd2VyZSBjb25zdW1lZC5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBUcmFuc2Zvcm07XG5cbnZhciBfcmVxdWlyZSRjb2RlcyA9IHJlcXVpcmUoJy4uL2Vycm9ycycpLmNvZGVzLFxuICAgIEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEID0gX3JlcXVpcmUkY29kZXMuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsXG4gICAgRVJSX01VTFRJUExFX0NBTExCQUNLID0gX3JlcXVpcmUkY29kZXMuRVJSX01VTFRJUExFX0NBTExCQUNLLFxuICAgIEVSUl9UUkFOU0ZPUk1fQUxSRUFEWV9UUkFOU0ZPUk1JTkcgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfVFJBTlNGT1JNX0FMUkVBRFlfVFJBTlNGT1JNSU5HLFxuICAgIEVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMCA9IF9yZXF1aXJlJGNvZGVzLkVSUl9UUkFOU0ZPUk1fV0lUSF9MRU5HVEhfMDtcblxudmFyIER1cGxleCA9IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxucmVxdWlyZSgnaW5oZXJpdHMnKShUcmFuc2Zvcm0sIER1cGxleCk7XG5cbmZ1bmN0aW9uIGFmdGVyVHJhbnNmb3JtKGVyLCBkYXRhKSB7XG4gIHZhciB0cyA9IHRoaXMuX3RyYW5zZm9ybVN0YXRlO1xuICB0cy50cmFuc2Zvcm1pbmcgPSBmYWxzZTtcbiAgdmFyIGNiID0gdHMud3JpdGVjYjtcblxuICBpZiAoY2IgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFUlJfTVVMVElQTEVfQ0FMTEJBQ0soKSk7XG4gIH1cblxuICB0cy53cml0ZWNodW5rID0gbnVsbDtcbiAgdHMud3JpdGVjYiA9IG51bGw7XG4gIGlmIChkYXRhICE9IG51bGwpIC8vIHNpbmdsZSBlcXVhbHMgY2hlY2sgZm9yIGJvdGggYG51bGxgIGFuZCBgdW5kZWZpbmVkYFxuICAgIHRoaXMucHVzaChkYXRhKTtcbiAgY2IoZXIpO1xuICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICBycy5yZWFkaW5nID0gZmFsc2U7XG5cbiAgaWYgKHJzLm5lZWRSZWFkYWJsZSB8fCBycy5sZW5ndGggPCBycy5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgdGhpcy5fcmVhZChycy5oaWdoV2F0ZXJNYXJrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBUcmFuc2Zvcm0ob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVHJhbnNmb3JtKSkgcmV0dXJuIG5ldyBUcmFuc2Zvcm0ob3B0aW9ucyk7XG4gIER1cGxleC5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZSA9IHtcbiAgICBhZnRlclRyYW5zZm9ybTogYWZ0ZXJUcmFuc2Zvcm0uYmluZCh0aGlzKSxcbiAgICBuZWVkVHJhbnNmb3JtOiBmYWxzZSxcbiAgICB0cmFuc2Zvcm1pbmc6IGZhbHNlLFxuICAgIHdyaXRlY2I6IG51bGwsXG4gICAgd3JpdGVjaHVuazogbnVsbCxcbiAgICB3cml0ZWVuY29kaW5nOiBudWxsXG4gIH07IC8vIHN0YXJ0IG91dCBhc2tpbmcgZm9yIGEgcmVhZGFibGUgZXZlbnQgb25jZSBkYXRhIGlzIHRyYW5zZm9ybWVkLlxuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTsgLy8gd2UgaGF2ZSBpbXBsZW1lbnRlZCB0aGUgX3JlYWQgbWV0aG9kLCBhbmQgZG9uZSB0aGUgb3RoZXIgdGhpbmdzXG4gIC8vIHRoYXQgUmVhZGFibGUgd2FudHMgYmVmb3JlIHRoZSBmaXJzdCBfcmVhZCBjYWxsLCBzbyB1bnNldCB0aGVcbiAgLy8gc3luYyBndWFyZCBmbGFnLlxuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYyA9IGZhbHNlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fdHJhbnNmb3JtID0gb3B0aW9ucy50cmFuc2Zvcm07XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZsdXNoID09PSAnZnVuY3Rpb24nKSB0aGlzLl9mbHVzaCA9IG9wdGlvbnMuZmx1c2g7XG4gIH0gLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBmaW5pc2hlcywgdGhlbiBmbHVzaCBvdXQgYW55dGhpbmcgcmVtYWluaW5nLlxuXG5cbiAgdGhpcy5vbigncHJlZmluaXNoJywgcHJlZmluaXNoKTtcbn1cblxuZnVuY3Rpb24gcHJlZmluaXNoKCkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIGlmICh0eXBlb2YgdGhpcy5fZmx1c2ggPT09ICdmdW5jdGlvbicgJiYgIXRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkKSB7XG4gICAgdGhpcy5fZmx1c2goZnVuY3Rpb24gKGVyLCBkYXRhKSB7XG4gICAgICBkb25lKF90aGlzLCBlciwgZGF0YSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgZG9uZSh0aGlzLCBudWxsLCBudWxsKTtcbiAgfVxufVxuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nKSB7XG4gIHRoaXMuX3RyYW5zZm9ybVN0YXRlLm5lZWRUcmFuc2Zvcm0gPSBmYWxzZTtcbiAgcmV0dXJuIER1cGxleC5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsIGNodW5rLCBlbmNvZGluZyk7XG59OyAvLyBUaGlzIGlzIHRoZSBwYXJ0IHdoZXJlIHlvdSBkbyBzdHVmZiFcbi8vIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gaW4gaW1wbGVtZW50YXRpb24gY2xhc3Nlcy5cbi8vICdjaHVuaycgaXMgYW4gaW5wdXQgY2h1bmsuXG4vL1xuLy8gQ2FsbCBgcHVzaChuZXdDaHVuaylgIHRvIHBhc3MgYWxvbmcgdHJhbnNmb3JtZWQgb3V0cHV0XG4vLyB0byB0aGUgcmVhZGFibGUgc2lkZS4gIFlvdSBtYXkgY2FsbCAncHVzaCcgemVybyBvciBtb3JlIHRpbWVzLlxuLy9cbi8vIENhbGwgYGNiKGVycilgIHdoZW4geW91IGFyZSBkb25lIHdpdGggdGhpcyBjaHVuay4gIElmIHlvdSBwYXNzXG4vLyBhbiBlcnJvciwgdGhlbiB0aGF0J2xsIHB1dCB0aGUgaHVydCBvbiB0aGUgd2hvbGUgb3BlcmF0aW9uLiAgSWYgeW91XG4vLyBuZXZlciBjYWxsIGNiKCksIHRoZW4geW91J2xsIG5ldmVyIGdldCBhbm90aGVyIGNodW5rLlxuXG5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIGNiKG5ldyBFUlJfTUVUSE9EX05PVF9JTVBMRU1FTlRFRCgnX3RyYW5zZm9ybSgpJykpO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMud3JpdGVjYiA9IGNiO1xuICB0cy53cml0ZWNodW5rID0gY2h1bms7XG4gIHRzLndyaXRlZW5jb2RpbmcgPSBlbmNvZGluZztcblxuICBpZiAoIXRzLnRyYW5zZm9ybWluZykge1xuICAgIHZhciBycyA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gICAgaWYgKHRzLm5lZWRUcmFuc2Zvcm0gfHwgcnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7XG4gIH1cbn07IC8vIERvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIGFyZ3MgYXJlIGhlcmUuXG4vLyBfdHJhbnNmb3JtIGRvZXMgYWxsIHRoZSB3b3JrLlxuLy8gVGhhdCB3ZSBnb3QgaGVyZSBtZWFucyB0aGF0IHRoZSByZWFkYWJsZSBzaWRlIHdhbnRzIG1vcmUgZGF0YS5cblxuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG5cbiAgaWYgKHRzLndyaXRlY2h1bmsgIT09IG51bGwgJiYgIXRzLnRyYW5zZm9ybWluZykge1xuICAgIHRzLnRyYW5zZm9ybWluZyA9IHRydWU7XG5cbiAgICB0aGlzLl90cmFuc2Zvcm0odHMud3JpdGVjaHVuaywgdHMud3JpdGVlbmNvZGluZywgdHMuYWZ0ZXJUcmFuc2Zvcm0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG1hcmsgdGhhdCB3ZSBuZWVkIGEgdHJhbnNmb3JtLCBzbyB0aGF0IGFueSBkYXRhIHRoYXQgY29tZXMgaW5cbiAgICAvLyB3aWxsIGdldCBwcm9jZXNzZWQsIG5vdyB0aGF0IHdlJ3ZlIGFza2VkIGZvciBpdC5cbiAgICB0cy5uZWVkVHJhbnNmb3JtID0gdHJ1ZTtcbiAgfVxufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIER1cGxleC5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLCBlcnIsIGZ1bmN0aW9uIChlcnIyKSB7XG4gICAgY2IoZXJyMik7XG4gIH0pO1xufTtcblxuZnVuY3Rpb24gZG9uZShzdHJlYW0sIGVyLCBkYXRhKSB7XG4gIGlmIChlcikgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgaWYgKGRhdGEgIT0gbnVsbCkgLy8gc2luZ2xlIGVxdWFscyBjaGVjayBmb3IgYm90aCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgXG4gICAgc3RyZWFtLnB1c2goZGF0YSk7IC8vIFRPRE8oQnJpZGdlQVIpOiBXcml0ZSBhIHRlc3QgZm9yIHRoZXNlIHR3byBlcnJvciBjYXNlc1xuICAvLyBpZiB0aGVyZSdzIG5vdGhpbmcgaW4gdGhlIHdyaXRlIGJ1ZmZlciwgdGhlbiB0aGF0IG1lYW5zXG4gIC8vIHRoYXQgbm90aGluZyBtb3JlIHdpbGwgZXZlciBiZSBwcm92aWRlZFxuXG4gIGlmIChzdHJlYW0uX3dyaXRhYmxlU3RhdGUubGVuZ3RoKSB0aHJvdyBuZXcgRVJSX1RSQU5TRk9STV9XSVRIX0xFTkdUSF8wKCk7XG4gIGlmIChzdHJlYW0uX3RyYW5zZm9ybVN0YXRlLnRyYW5zZm9ybWluZykgdGhyb3cgbmV3IEVSUl9UUkFOU0ZPUk1fQUxSRUFEWV9UUkFOU0ZPUk1JTkcoKTtcbiAgcmV0dXJuIHN0cmVhbS5wdXNoKG51bGwpO1xufSIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuLy8gQSBiaXQgc2ltcGxlciB0aGFuIHJlYWRhYmxlIHN0cmVhbXMuXG4vLyBJbXBsZW1lbnQgYW4gYXN5bmMgLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIGNiKSwgYW5kIGl0J2xsIGhhbmRsZSBhbGxcbi8vIHRoZSBkcmFpbiBldmVudCBlbWlzc2lvbiBhbmQgYnVmZmVyaW5nLlxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdyaXRhYmxlO1xuLyogPHJlcGxhY2VtZW50PiAqL1xuXG5mdW5jdGlvbiBXcml0ZVJlcShjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRoaXMuY2h1bmsgPSBjaHVuaztcbiAgdGhpcy5lbmNvZGluZyA9IGVuY29kaW5nO1xuICB0aGlzLmNhbGxiYWNrID0gY2I7XG4gIHRoaXMubmV4dCA9IG51bGw7XG59IC8vIEl0IHNlZW1zIGEgbGlua2VkIGxpc3QgYnV0IGl0IGlzIG5vdFxuLy8gdGhlcmUgd2lsbCBiZSBvbmx5IDIgb2YgdGhlc2UgZm9yIGVhY2ggc3RyZWFtXG5cblxuZnVuY3Rpb24gQ29ya2VkUmVxdWVzdChzdGF0ZSkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHRoaXMubmV4dCA9IG51bGw7XG4gIHRoaXMuZW50cnkgPSBudWxsO1xuXG4gIHRoaXMuZmluaXNoID0gZnVuY3Rpb24gKCkge1xuICAgIG9uQ29ya2VkRmluaXNoKF90aGlzLCBzdGF0ZSk7XG4gIH07XG59XG4vKiA8L3JlcGxhY2VtZW50PiAqL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG5cbnZhciBEdXBsZXg7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuV3JpdGFibGUuV3JpdGFibGVTdGF0ZSA9IFdyaXRhYmxlU3RhdGU7XG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgaW50ZXJuYWxVdGlsID0ge1xuICBkZXByZWNhdGU6IHJlcXVpcmUoJ3V0aWwtZGVwcmVjYXRlJylcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIFN0cmVhbSA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9zdHJlYW0nKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbnZhciBPdXJVaW50OEFycmF5ID0gZ2xvYmFsLlVpbnQ4QXJyYXkgfHwgZnVuY3Rpb24gKCkge307XG5cbmZ1bmN0aW9uIF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTtcbn1cblxuZnVuY3Rpb24gX2lzVWludDhBcnJheShvYmopIHtcbiAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihvYmopIHx8IG9iaiBpbnN0YW5jZW9mIE91clVpbnQ4QXJyYXk7XG59XG5cbnZhciBkZXN0cm95SW1wbCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95Jyk7XG5cbnZhciBfcmVxdWlyZSA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9zdGF0ZScpLFxuICAgIGdldEhpZ2hXYXRlck1hcmsgPSBfcmVxdWlyZS5nZXRIaWdoV2F0ZXJNYXJrO1xuXG52YXIgX3JlcXVpcmUkY29kZXMgPSByZXF1aXJlKCcuLi9lcnJvcnMnKS5jb2RlcyxcbiAgICBFUlJfSU5WQUxJRF9BUkdfVFlQRSA9IF9yZXF1aXJlJGNvZGVzLkVSUl9JTlZBTElEX0FSR19UWVBFLFxuICAgIEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEID0gX3JlcXVpcmUkY29kZXMuRVJSX01FVEhPRF9OT1RfSU1QTEVNRU5URUQsXG4gICAgRVJSX01VTFRJUExFX0NBTExCQUNLID0gX3JlcXVpcmUkY29kZXMuRVJSX01VTFRJUExFX0NBTExCQUNLLFxuICAgIEVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfU1RSRUFNX0NBTk5PVF9QSVBFLFxuICAgIEVSUl9TVFJFQU1fREVTVFJPWUVEID0gX3JlcXVpcmUkY29kZXMuRVJSX1NUUkVBTV9ERVNUUk9ZRUQsXG4gICAgRVJSX1NUUkVBTV9OVUxMX1ZBTFVFUyA9IF9yZXF1aXJlJGNvZGVzLkVSUl9TVFJFQU1fTlVMTF9WQUxVRVMsXG4gICAgRVJSX1NUUkVBTV9XUklURV9BRlRFUl9FTkQgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfU1RSRUFNX1dSSVRFX0FGVEVSX0VORCxcbiAgICBFUlJfVU5LTk9XTl9FTkNPRElORyA9IF9yZXF1aXJlJGNvZGVzLkVSUl9VTktOT1dOX0VOQ09ESU5HO1xuXG52YXIgZXJyb3JPckRlc3Ryb3kgPSBkZXN0cm95SW1wbC5lcnJvck9yRGVzdHJveTtcblxucmVxdWlyZSgnaW5oZXJpdHMnKShXcml0YWJsZSwgU3RyZWFtKTtcblxuZnVuY3Rpb24gbm9wKCkge31cblxuZnVuY3Rpb24gV3JpdGFibGVTdGF0ZShvcHRpb25zLCBzdHJlYW0sIGlzRHVwbGV4KSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OyAvLyBEdXBsZXggc3RyZWFtcyBhcmUgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUsIGJ1dCBzaGFyZVxuICAvLyB0aGUgc2FtZSBvcHRpb25zIG9iamVjdC5cbiAgLy8gSG93ZXZlciwgc29tZSBjYXNlcyByZXF1aXJlIHNldHRpbmcgb3B0aW9ucyB0byBkaWZmZXJlbnRcbiAgLy8gdmFsdWVzIGZvciB0aGUgcmVhZGFibGUgYW5kIHRoZSB3cml0YWJsZSBzaWRlcyBvZiB0aGUgZHVwbGV4IHN0cmVhbSxcbiAgLy8gZS5nLiBvcHRpb25zLnJlYWRhYmxlT2JqZWN0TW9kZSB2cy4gb3B0aW9ucy53cml0YWJsZU9iamVjdE1vZGUsIGV0Yy5cblxuICBpZiAodHlwZW9mIGlzRHVwbGV4ICE9PSAnYm9vbGVhbicpIGlzRHVwbGV4ID0gc3RyZWFtIGluc3RhbmNlb2YgRHVwbGV4OyAvLyBvYmplY3Qgc3RyZWFtIGZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhpcyBzdHJlYW1cbiAgLy8gY29udGFpbnMgYnVmZmVycyBvciBvYmplY3RzLlxuXG4gIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlO1xuICBpZiAoaXNEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMud3JpdGFibGVPYmplY3RNb2RlOyAvLyB0aGUgcG9pbnQgYXQgd2hpY2ggd3JpdGUoKSBzdGFydHMgcmV0dXJuaW5nIGZhbHNlXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgdGhhdCB3ZSBhbHdheXMgcmV0dXJuIGZhbHNlIGlmXG4gIC8vIHRoZSBlbnRpcmUgYnVmZmVyIGlzIG5vdCBmbHVzaGVkIGltbWVkaWF0ZWx5IG9uIHdyaXRlKClcblxuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBnZXRIaWdoV2F0ZXJNYXJrKHRoaXMsIG9wdGlvbnMsICd3cml0YWJsZUhpZ2hXYXRlck1hcmsnLCBpc0R1cGxleCk7IC8vIGlmIF9maW5hbCBoYXMgYmVlbiBjYWxsZWRcblxuICB0aGlzLmZpbmFsQ2FsbGVkID0gZmFsc2U7IC8vIGRyYWluIGV2ZW50IGZsYWcuXG5cbiAgdGhpcy5uZWVkRHJhaW4gPSBmYWxzZTsgLy8gYXQgdGhlIHN0YXJ0IG9mIGNhbGxpbmcgZW5kKClcblxuICB0aGlzLmVuZGluZyA9IGZhbHNlOyAvLyB3aGVuIGVuZCgpIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHJldHVybmVkXG5cbiAgdGhpcy5lbmRlZCA9IGZhbHNlOyAvLyB3aGVuICdmaW5pc2gnIGlzIGVtaXR0ZWRcblxuICB0aGlzLmZpbmlzaGVkID0gZmFsc2U7IC8vIGhhcyBpdCBiZWVuIGRlc3Ryb3llZFxuXG4gIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7IC8vIHNob3VsZCB3ZSBkZWNvZGUgc3RyaW5ncyBpbnRvIGJ1ZmZlcnMgYmVmb3JlIHBhc3NpbmcgdG8gX3dyaXRlP1xuICAvLyB0aGlzIGlzIGhlcmUgc28gdGhhdCBzb21lIG5vZGUtY29yZSBzdHJlYW1zIGNhbiBvcHRpbWl6ZSBzdHJpbmdcbiAgLy8gaGFuZGxpbmcgYXQgYSBsb3dlciBsZXZlbC5cblxuICB2YXIgbm9EZWNvZGUgPSBvcHRpb25zLmRlY29kZVN0cmluZ3MgPT09IGZhbHNlO1xuICB0aGlzLmRlY29kZVN0cmluZ3MgPSAhbm9EZWNvZGU7IC8vIENyeXB0byBpcyBraW5kIG9mIG9sZCBhbmQgY3J1c3R5LiAgSGlzdG9yaWNhbGx5LCBpdHMgZGVmYXVsdCBzdHJpbmdcbiAgLy8gZW5jb2RpbmcgaXMgJ2JpbmFyeScgc28gd2UgaGF2ZSB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlLlxuICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guXG5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7IC8vIG5vdCBhbiBhY3R1YWwgYnVmZmVyIHdlIGtlZXAgdHJhY2sgb2YsIGJ1dCBhIG1lYXN1cmVtZW50XG4gIC8vIG9mIGhvdyBtdWNoIHdlJ3JlIHdhaXRpbmcgdG8gZ2V0IHB1c2hlZCB0byBzb21lIHVuZGVybHlpbmdcbiAgLy8gc29ja2V0IG9yIGZpbGUuXG5cbiAgdGhpcy5sZW5ndGggPSAwOyAvLyBhIGZsYWcgdG8gc2VlIHdoZW4gd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIHdyaXRlLlxuXG4gIHRoaXMud3JpdGluZyA9IGZhbHNlOyAvLyB3aGVuIHRydWUgYWxsIHdyaXRlcyB3aWxsIGJlIGJ1ZmZlcmVkIHVudGlsIC51bmNvcmsoKSBjYWxsXG5cbiAgdGhpcy5jb3JrZWQgPSAwOyAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBvbndyaXRlIGNiIGlzIGNhbGxlZCBpbW1lZGlhdGVseSxcbiAgLy8gb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZSBhbnlcbiAgLy8gYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGUgY2FsbC5cblxuICB0aGlzLnN5bmMgPSB0cnVlOyAvLyBhIGZsYWcgdG8ga25vdyBpZiB3ZSdyZSBwcm9jZXNzaW5nIHByZXZpb3VzbHkgYnVmZmVyZWQgaXRlbXMsIHdoaWNoXG4gIC8vIG1heSBjYWxsIHRoZSBfd3JpdGUoKSBjYWxsYmFjayBpbiB0aGUgc2FtZSB0aWNrLCBzbyB0aGF0IHdlIGRvbid0XG4gIC8vIGVuZCB1cCBpbiBhbiBvdmVybGFwcGVkIG9ud3JpdGUgc2l0dWF0aW9uLlxuXG4gIHRoaXMuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlOyAvLyB0aGUgY2FsbGJhY2sgdGhhdCdzIHBhc3NlZCB0byBfd3JpdGUoY2h1bmssY2IpXG5cbiAgdGhpcy5vbndyaXRlID0gZnVuY3Rpb24gKGVyKSB7XG4gICAgb253cml0ZShzdHJlYW0sIGVyKTtcbiAgfTsgLy8gdGhlIGNhbGxiYWNrIHRoYXQgdGhlIHVzZXIgc3VwcGxpZXMgdG8gd3JpdGUoY2h1bmssZW5jb2RpbmcsY2IpXG5cblxuICB0aGlzLndyaXRlY2IgPSBudWxsOyAvLyB0aGUgYW1vdW50IHRoYXQgaXMgYmVpbmcgd3JpdHRlbiB3aGVuIF93cml0ZSBpcyBjYWxsZWQuXG5cbiAgdGhpcy53cml0ZWxlbiA9IDA7XG4gIHRoaXMuYnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgdGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDsgLy8gbnVtYmVyIG9mIHBlbmRpbmcgdXNlci1zdXBwbGllZCB3cml0ZSBjYWxsYmFja3NcbiAgLy8gdGhpcyBtdXN0IGJlIDAgYmVmb3JlICdmaW5pc2gnIGNhbiBiZSBlbWl0dGVkXG5cbiAgdGhpcy5wZW5kaW5nY2IgPSAwOyAvLyBlbWl0IHByZWZpbmlzaCBpZiB0aGUgb25seSB0aGluZyB3ZSdyZSB3YWl0aW5nIGZvciBpcyBfd3JpdGUgY2JzXG4gIC8vIFRoaXMgaXMgcmVsZXZhbnQgZm9yIHN5bmNocm9ub3VzIFRyYW5zZm9ybSBzdHJlYW1zXG5cbiAgdGhpcy5wcmVmaW5pc2hlZCA9IGZhbHNlOyAvLyBUcnVlIGlmIHRoZSBlcnJvciB3YXMgYWxyZWFkeSBlbWl0dGVkIGFuZCBzaG91bGQgbm90IGJlIHRocm93biBhZ2FpblxuXG4gIHRoaXMuZXJyb3JFbWl0dGVkID0gZmFsc2U7IC8vIFNob3VsZCBjbG9zZSBiZSBlbWl0dGVkIG9uIGRlc3Ryb3kuIERlZmF1bHRzIHRvIHRydWUuXG5cbiAgdGhpcy5lbWl0Q2xvc2UgPSBvcHRpb25zLmVtaXRDbG9zZSAhPT0gZmFsc2U7IC8vIFNob3VsZCAuZGVzdHJveSgpIGJlIGNhbGxlZCBhZnRlciAnZmluaXNoJyAoYW5kIHBvdGVudGlhbGx5ICdlbmQnKVxuXG4gIHRoaXMuYXV0b0Rlc3Ryb3kgPSAhIW9wdGlvbnMuYXV0b0Rlc3Ryb3k7IC8vIGNvdW50IGJ1ZmZlcmVkIHJlcXVlc3RzXG5cbiAgdGhpcy5idWZmZXJlZFJlcXVlc3RDb3VudCA9IDA7IC8vIGFsbG9jYXRlIHRoZSBmaXJzdCBDb3JrZWRSZXF1ZXN0LCB0aGVyZSBpcyBhbHdheXNcbiAgLy8gb25lIGFsbG9jYXRlZCBhbmQgZnJlZSB0byB1c2UsIGFuZCB3ZSBtYWludGFpbiBhdCBtb3N0IHR3b1xuXG4gIHRoaXMuY29ya2VkUmVxdWVzdHNGcmVlID0gbmV3IENvcmtlZFJlcXVlc3QodGhpcyk7XG59XG5cbldyaXRhYmxlU3RhdGUucHJvdG90eXBlLmdldEJ1ZmZlciA9IGZ1bmN0aW9uIGdldEJ1ZmZlcigpIHtcbiAgdmFyIGN1cnJlbnQgPSB0aGlzLmJ1ZmZlcmVkUmVxdWVzdDtcbiAgdmFyIG91dCA9IFtdO1xuXG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgb3V0LnB1c2goY3VycmVudCk7XG4gICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59O1xuXG4oZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZVN0YXRlLnByb3RvdHlwZSwgJ2J1ZmZlcicsIHtcbiAgICAgIGdldDogaW50ZXJuYWxVdGlsLmRlcHJlY2F0ZShmdW5jdGlvbiB3cml0YWJsZVN0YXRlQnVmZmVyR2V0dGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCdWZmZXIoKTtcbiAgICAgIH0sICdfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMgZGVwcmVjYXRlZC4gVXNlIF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciAnICsgJ2luc3RlYWQuJywgJ0RFUDAwMDMnKVxuICAgIH0pO1xuICB9IGNhdGNoIChfKSB7fVxufSkoKTsgLy8gVGVzdCBfd3JpdGFibGVTdGF0ZSBmb3IgaW5oZXJpdGFuY2UgdG8gYWNjb3VudCBmb3IgRHVwbGV4IHN0cmVhbXMsXG4vLyB3aG9zZSBwcm90b3R5cGUgY2hhaW4gb25seSBwb2ludHMgdG8gUmVhZGFibGUuXG5cblxudmFyIHJlYWxIYXNJbnN0YW5jZTtcblxuaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmhhc0luc3RhbmNlICYmIHR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSA9PT0gJ2Z1bmN0aW9uJykge1xuICByZWFsSGFzSW5zdGFuY2UgPSBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXTtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLCBTeW1ib2wuaGFzSW5zdGFuY2UsIHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUob2JqZWN0KSB7XG4gICAgICBpZiAocmVhbEhhc0luc3RhbmNlLmNhbGwodGhpcywgb2JqZWN0KSkgcmV0dXJuIHRydWU7XG4gICAgICBpZiAodGhpcyAhPT0gV3JpdGFibGUpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiBvYmplY3QgJiYgb2JqZWN0Ll93cml0YWJsZVN0YXRlIGluc3RhbmNlb2YgV3JpdGFibGVTdGF0ZTtcbiAgICB9XG4gIH0pO1xufSBlbHNlIHtcbiAgcmVhbEhhc0luc3RhbmNlID0gZnVuY3Rpb24gcmVhbEhhc0luc3RhbmNlKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiB0aGlzO1xuICB9O1xufVxuXG5mdW5jdGlvbiBXcml0YWJsZShvcHRpb25zKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7IC8vIFdyaXRhYmxlIGN0b3IgaXMgYXBwbGllZCB0byBEdXBsZXhlcywgdG9vLlxuICAvLyBgcmVhbEhhc0luc3RhbmNlYCBpcyBuZWNlc3NhcnkgYmVjYXVzZSB1c2luZyBwbGFpbiBgaW5zdGFuY2VvZmBcbiAgLy8gd291bGQgcmV0dXJuIGZhbHNlLCBhcyBubyBgX3dyaXRhYmxlU3RhdGVgIHByb3BlcnR5IGlzIGF0dGFjaGVkLlxuICAvLyBUcnlpbmcgdG8gdXNlIHRoZSBjdXN0b20gYGluc3RhbmNlb2ZgIGZvciBXcml0YWJsZSBoZXJlIHdpbGwgYWxzbyBicmVhayB0aGVcbiAgLy8gTm9kZS5qcyBMYXp5VHJhbnNmb3JtIGltcGxlbWVudGF0aW9uLCB3aGljaCBoYXMgYSBub24tdHJpdmlhbCBnZXR0ZXIgZm9yXG4gIC8vIGBfd3JpdGFibGVTdGF0ZWAgdGhhdCB3b3VsZCBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgLy8gQ2hlY2tpbmcgZm9yIGEgU3RyZWFtLkR1cGxleCBpbnN0YW5jZSBpcyBmYXN0ZXIgaGVyZSBpbnN0ZWFkIG9mIGluc2lkZVxuICAvLyB0aGUgV3JpdGFibGVTdGF0ZSBjb25zdHJ1Y3RvciwgYXQgbGVhc3Qgd2l0aCBWOCA2LjVcblxuICB2YXIgaXNEdXBsZXggPSB0aGlzIGluc3RhbmNlb2YgRHVwbGV4O1xuICBpZiAoIWlzRHVwbGV4ICYmICFyZWFsSGFzSW5zdGFuY2UuY2FsbChXcml0YWJsZSwgdGhpcykpIHJldHVybiBuZXcgV3JpdGFibGUob3B0aW9ucyk7XG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUgPSBuZXcgV3JpdGFibGVTdGF0ZShvcHRpb25zLCB0aGlzLCBpc0R1cGxleCk7IC8vIGxlZ2FjeS5cblxuICB0aGlzLndyaXRhYmxlID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fd3JpdGUgPSBvcHRpb25zLndyaXRlO1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZXYgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRldiA9IG9wdGlvbnMud3JpdGV2O1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95O1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5maW5hbCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmluYWwgPSBvcHRpb25zLmZpbmFsO1xuICB9XG5cbiAgU3RyZWFtLmNhbGwodGhpcyk7XG59IC8vIE90aGVyd2lzZSBwZW9wbGUgY2FuIHBpcGUgV3JpdGFibGUgc3RyZWFtcywgd2hpY2ggaXMganVzdCB3cm9uZy5cblxuXG5Xcml0YWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgZXJyb3JPckRlc3Ryb3kodGhpcywgbmV3IEVSUl9TVFJFQU1fQ0FOTk9UX1BJUEUoKSk7XG59O1xuXG5mdW5jdGlvbiB3cml0ZUFmdGVyRW5kKHN0cmVhbSwgY2IpIHtcbiAgdmFyIGVyID0gbmV3IEVSUl9TVFJFQU1fV1JJVEVfQUZURVJfRU5EKCk7IC8vIFRPRE86IGRlZmVyIGVycm9yIGV2ZW50cyBjb25zaXN0ZW50bHkgZXZlcnl3aGVyZSwgbm90IGp1c3QgdGhlIGNiXG5cbiAgZXJyb3JPckRlc3Ryb3koc3RyZWFtLCBlcik7XG4gIHByb2Nlc3MubmV4dFRpY2soY2IsIGVyKTtcbn0gLy8gQ2hlY2tzIHRoYXQgYSB1c2VyLXN1cHBsaWVkIGNodW5rIGlzIHZhbGlkLCBlc3BlY2lhbGx5IGZvciB0aGUgcGFydGljdWxhclxuLy8gbW9kZSB0aGUgc3RyZWFtIGlzIGluLiBDdXJyZW50bHkgdGhpcyBtZWFucyB0aGF0IGBudWxsYCBpcyBuZXZlciBhY2NlcHRlZFxuLy8gYW5kIHVuZGVmaW5lZC9ub24tc3RyaW5nIHZhbHVlcyBhcmUgb25seSBhbGxvd2VkIGluIG9iamVjdCBtb2RlLlxuXG5cbmZ1bmN0aW9uIHZhbGlkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGNiKSB7XG4gIHZhciBlcjtcblxuICBpZiAoY2h1bmsgPT09IG51bGwpIHtcbiAgICBlciA9IG5ldyBFUlJfU1RSRUFNX05VTExfVkFMVUVTKCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IEVSUl9JTlZBTElEX0FSR19UWVBFKCdjaHVuaycsIFsnc3RyaW5nJywgJ0J1ZmZlciddLCBjaHVuayk7XG4gIH1cblxuICBpZiAoZXIpIHtcbiAgICBlcnJvck9yRGVzdHJveShzdHJlYW0sIGVyKTtcbiAgICBwcm9jZXNzLm5leHRUaWNrKGNiLCBlcik7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbldyaXRhYmxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG4gIHZhciByZXQgPSBmYWxzZTtcblxuICB2YXIgaXNCdWYgPSAhc3RhdGUub2JqZWN0TW9kZSAmJiBfaXNVaW50OEFycmF5KGNodW5rKTtcblxuICBpZiAoaXNCdWYgJiYgIUJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIHtcbiAgICBjaHVuayA9IF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gZW5jb2Rpbmc7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9XG5cbiAgaWYgKGlzQnVmKSBlbmNvZGluZyA9ICdidWZmZXInO2Vsc2UgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG4gIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIGNiID0gbm9wO1xuICBpZiAoc3RhdGUuZW5kaW5nKSB3cml0ZUFmdGVyRW5kKHRoaXMsIGNiKTtlbHNlIGlmIChpc0J1ZiB8fCB2YWxpZENodW5rKHRoaXMsIHN0YXRlLCBjaHVuaywgY2IpKSB7XG4gICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgcmV0ID0gd3JpdGVPckJ1ZmZlcih0aGlzLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICB9XG4gIHJldHVybiByZXQ7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuY29yayA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fd3JpdGFibGVTdGF0ZS5jb3JrZWQrKztcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS51bmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHN0YXRlLmNvcmtlZCkge1xuICAgIHN0YXRlLmNvcmtlZC0tO1xuICAgIGlmICghc3RhdGUud3JpdGluZyAmJiAhc3RhdGUuY29ya2VkICYmICFzdGF0ZS5idWZmZXJQcm9jZXNzaW5nICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCkgY2xlYXJCdWZmZXIodGhpcywgc3RhdGUpO1xuICB9XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nID0gZnVuY3Rpb24gc2V0RGVmYXVsdEVuY29kaW5nKGVuY29kaW5nKSB7XG4gIC8vIG5vZGU6OlBhcnNlRW5jb2RpbmcoKSByZXF1aXJlcyBsb3dlciBjYXNlLlxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykgZW5jb2RpbmcgPSBlbmNvZGluZy50b0xvd2VyQ2FzZSgpO1xuICBpZiAoIShbJ2hleCcsICd1dGY4JywgJ3V0Zi04JywgJ2FzY2lpJywgJ2JpbmFyeScsICdiYXNlNjQnLCAndWNzMicsICd1Y3MtMicsICd1dGYxNmxlJywgJ3V0Zi0xNmxlJywgJ3JhdyddLmluZGV4T2YoKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKCkpID4gLTEpKSB0aHJvdyBuZXcgRVJSX1VOS05PV05fRU5DT0RJTkcoZW5jb2RpbmcpO1xuICB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZyA9IGVuY29kaW5nO1xuICByZXR1cm4gdGhpcztcbn07XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICd3cml0YWJsZUJ1ZmZlcicsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIoKTtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIGRlY29kZUNodW5rKHN0YXRlLCBjaHVuaywgZW5jb2RpbmcpIHtcbiAgaWYgKCFzdGF0ZS5vYmplY3RNb2RlICYmIHN0YXRlLmRlY29kZVN0cmluZ3MgIT09IGZhbHNlICYmIHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICBjaHVuayA9IEJ1ZmZlci5mcm9tKGNodW5rLCBlbmNvZGluZyk7XG4gIH1cblxuICByZXR1cm4gY2h1bms7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICd3cml0YWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pOyAvLyBpZiB3ZSdyZSBhbHJlYWR5IHdyaXRpbmcgc29tZXRoaW5nLCB0aGVuIGp1c3QgcHV0IHRoaXNcbi8vIGluIHRoZSBxdWV1ZSwgYW5kIHdhaXQgb3VyIHR1cm4uICBPdGhlcndpc2UsIGNhbGwgX3dyaXRlXG4vLyBJZiB3ZSByZXR1cm4gZmFsc2UsIHRoZW4gd2UgbmVlZCBhIGRyYWluIGV2ZW50LCBzbyBzZXQgdGhhdCBmbGFnLlxuXG5mdW5jdGlvbiB3cml0ZU9yQnVmZmVyKHN0cmVhbSwgc3RhdGUsIGlzQnVmLCBjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIGlmICghaXNCdWYpIHtcbiAgICB2YXIgbmV3Q2h1bmsgPSBkZWNvZGVDaHVuayhzdGF0ZSwgY2h1bmssIGVuY29kaW5nKTtcblxuICAgIGlmIChjaHVuayAhPT0gbmV3Q2h1bmspIHtcbiAgICAgIGlzQnVmID0gdHJ1ZTtcbiAgICAgIGVuY29kaW5nID0gJ2J1ZmZlcic7XG4gICAgICBjaHVuayA9IG5ld0NodW5rO1xuICAgIH1cbiAgfVxuXG4gIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgc3RhdGUubGVuZ3RoICs9IGxlbjtcbiAgdmFyIHJldCA9IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcms7IC8vIHdlIG11c3QgZW5zdXJlIHRoYXQgcHJldmlvdXMgbmVlZERyYWluIHdpbGwgbm90IGJlIHJlc2V0IHRvIGZhbHNlLlxuXG4gIGlmICghcmV0KSBzdGF0ZS5uZWVkRHJhaW4gPSB0cnVlO1xuXG4gIGlmIChzdGF0ZS53cml0aW5nIHx8IHN0YXRlLmNvcmtlZCkge1xuICAgIHZhciBsYXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0ge1xuICAgICAgY2h1bms6IGNodW5rLFxuICAgICAgZW5jb2Rpbmc6IGVuY29kaW5nLFxuICAgICAgaXNCdWY6IGlzQnVmLFxuICAgICAgY2FsbGJhY2s6IGNiLFxuICAgICAgbmV4dDogbnVsbFxuICAgIH07XG5cbiAgICBpZiAobGFzdCkge1xuICAgICAgbGFzdC5uZXh0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9XG5cbiAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudCArPSAxO1xuICB9IGVsc2Uge1xuICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmFsc2UsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHdyaXRldiwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHN0YXRlLndyaXRlbGVuID0gbGVuO1xuICBzdGF0ZS53cml0ZWNiID0gY2I7XG4gIHN0YXRlLndyaXRpbmcgPSB0cnVlO1xuICBzdGF0ZS5zeW5jID0gdHJ1ZTtcbiAgaWYgKHN0YXRlLmRlc3Ryb3llZCkgc3RhdGUub253cml0ZShuZXcgRVJSX1NUUkVBTV9ERVNUUk9ZRUQoJ3dyaXRlJykpO2Vsc2UgaWYgKHdyaXRldikgc3RyZWFtLl93cml0ZXYoY2h1bmssIHN0YXRlLm9ud3JpdGUpO2Vsc2Ugc3RyZWFtLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIHN0YXRlLm9ud3JpdGUpO1xuICBzdGF0ZS5zeW5jID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpIHtcbiAgLS1zdGF0ZS5wZW5kaW5nY2I7XG5cbiAgaWYgKHN5bmMpIHtcbiAgICAvLyBkZWZlciB0aGUgY2FsbGJhY2sgaWYgd2UgYXJlIGJlaW5nIGNhbGxlZCBzeW5jaHJvbm91c2x5XG4gICAgLy8gdG8gYXZvaWQgcGlsaW5nIHVwIHRoaW5ncyBvbiB0aGUgc3RhY2tcbiAgICBwcm9jZXNzLm5leHRUaWNrKGNiLCBlcik7IC8vIHRoaXMgY2FuIGVtaXQgZmluaXNoLCBhbmQgaXQgd2lsbCBhbHdheXMgaGFwcGVuXG4gICAgLy8gYWZ0ZXIgZXJyb3JcblxuICAgIHByb2Nlc3MubmV4dFRpY2soZmluaXNoTWF5YmUsIHN0cmVhbSwgc3RhdGUpO1xuICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXIpO1xuICB9IGVsc2Uge1xuICAgIC8vIHRoZSBjYWxsZXIgZXhwZWN0IHRoaXMgdG8gaGFwcGVuIGJlZm9yZSBpZlxuICAgIC8vIGl0IGlzIGFzeW5jXG4gICAgY2IoZXIpO1xuICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgIGVycm9yT3JEZXN0cm95KHN0cmVhbSwgZXIpOyAvLyB0aGlzIGNhbiBlbWl0IGZpbmlzaCwgYnV0IGZpbmlzaCBtdXN0XG4gICAgLy8gYWx3YXlzIGZvbGxvdyBlcnJvclxuXG4gICAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKSB7XG4gIHN0YXRlLndyaXRpbmcgPSBmYWxzZTtcbiAgc3RhdGUud3JpdGVjYiA9IG51bGw7XG4gIHN0YXRlLmxlbmd0aCAtPSBzdGF0ZS53cml0ZWxlbjtcbiAgc3RhdGUud3JpdGVsZW4gPSAwO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlKHN0cmVhbSwgZXIpIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlO1xuICB2YXIgc3luYyA9IHN0YXRlLnN5bmM7XG4gIHZhciBjYiA9IHN0YXRlLndyaXRlY2I7XG4gIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIHRocm93IG5ldyBFUlJfTVVMVElQTEVfQ0FMTEJBQ0soKTtcbiAgb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKTtcbiAgaWYgKGVyKSBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgc3luYywgZXIsIGNiKTtlbHNlIHtcbiAgICAvLyBDaGVjayBpZiB3ZSdyZSBhY3R1YWxseSByZWFkeSB0byBmaW5pc2gsIGJ1dCBkb24ndCBlbWl0IHlldFxuICAgIHZhciBmaW5pc2hlZCA9IG5lZWRGaW5pc2goc3RhdGUpIHx8IHN0cmVhbS5kZXN0cm95ZWQ7XG5cbiAgICBpZiAoIWZpbmlzaGVkICYmICFzdGF0ZS5jb3JrZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSB7XG4gICAgICBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKTtcbiAgICB9XG5cbiAgICBpZiAoc3luYykge1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhhZnRlcldyaXRlLCBzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKSB7XG4gIGlmICghZmluaXNoZWQpIG9ud3JpdGVEcmFpbihzdHJlYW0sIHN0YXRlKTtcbiAgc3RhdGUucGVuZGluZ2NiLS07XG4gIGNiKCk7XG4gIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xufSAvLyBNdXN0IGZvcmNlIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBvbiBuZXh0VGljaywgc28gdGhhdCB3ZSBkb24ndFxuLy8gZW1pdCAnZHJhaW4nIGJlZm9yZSB0aGUgd3JpdGUoKSBjb25zdW1lciBnZXRzIHRoZSAnZmFsc2UnIHJldHVyblxuLy8gdmFsdWUsIGFuZCBoYXMgYSBjaGFuY2UgdG8gYXR0YWNoIGEgJ2RyYWluJyBsaXN0ZW5lci5cblxuXG5mdW5jdGlvbiBvbndyaXRlRHJhaW4oc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLm5lZWREcmFpbikge1xuICAgIHN0YXRlLm5lZWREcmFpbiA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdkcmFpbicpO1xuICB9XG59IC8vIGlmIHRoZXJlJ3Mgc29tZXRoaW5nIGluIHRoZSBidWZmZXIgd2FpdGluZywgdGhlbiBwcm9jZXNzIGl0XG5cblxuZnVuY3Rpb24gY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSkge1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gdHJ1ZTtcbiAgdmFyIGVudHJ5ID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0O1xuXG4gIGlmIChzdHJlYW0uX3dyaXRldiAmJiBlbnRyeSAmJiBlbnRyeS5uZXh0KSB7XG4gICAgLy8gRmFzdCBjYXNlLCB3cml0ZSBldmVyeXRoaW5nIHVzaW5nIF93cml0ZXYoKVxuICAgIHZhciBsID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQ7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShsKTtcbiAgICB2YXIgaG9sZGVyID0gc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlO1xuICAgIGhvbGRlci5lbnRyeSA9IGVudHJ5O1xuICAgIHZhciBjb3VudCA9IDA7XG4gICAgdmFyIGFsbEJ1ZmZlcnMgPSB0cnVlO1xuXG4gICAgd2hpbGUgKGVudHJ5KSB7XG4gICAgICBidWZmZXJbY291bnRdID0gZW50cnk7XG4gICAgICBpZiAoIWVudHJ5LmlzQnVmKSBhbGxCdWZmZXJzID0gZmFsc2U7XG4gICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gICAgICBjb3VudCArPSAxO1xuICAgIH1cblxuICAgIGJ1ZmZlci5hbGxCdWZmZXJzID0gYWxsQnVmZmVycztcbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHRydWUsIHN0YXRlLmxlbmd0aCwgYnVmZmVyLCAnJywgaG9sZGVyLmZpbmlzaCk7IC8vIGRvV3JpdGUgaXMgYWxtb3N0IGFsd2F5cyBhc3luYywgZGVmZXIgdGhlc2UgdG8gc2F2ZSBhIGJpdCBvZiB0aW1lXG4gICAgLy8gYXMgdGhlIGhvdCBwYXRoIGVuZHMgd2l0aCBkb1dyaXRlXG5cbiAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcblxuICAgIGlmIChob2xkZXIubmV4dCkge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gaG9sZGVyLm5leHQ7XG4gICAgICBob2xkZXIubmV4dCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHN0YXRlKTtcbiAgICB9XG5cbiAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgLy8gU2xvdyBjYXNlLCB3cml0ZSBjaHVua3Mgb25lLWJ5LW9uZVxuICAgIHdoaWxlIChlbnRyeSkge1xuICAgICAgdmFyIGNodW5rID0gZW50cnkuY2h1bms7XG4gICAgICB2YXIgZW5jb2RpbmcgPSBlbnRyeS5lbmNvZGluZztcbiAgICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgICAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50LS07IC8vIGlmIHdlIGRpZG4ndCBjYWxsIHRoZSBvbndyaXRlIGltbWVkaWF0ZWx5LCB0aGVuXG4gICAgICAvLyBpdCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gd2FpdCB1bnRpbCBpdCBkb2VzLlxuICAgICAgLy8gYWxzbywgdGhhdCBtZWFucyB0aGF0IHRoZSBjaHVuayBhbmQgY2IgYXJlIGN1cnJlbnRseVxuICAgICAgLy8gYmVpbmcgcHJvY2Vzc2VkLCBzbyBtb3ZlIHRoZSBidWZmZXIgY291bnRlciBwYXN0IHRoZW0uXG5cbiAgICAgIGlmIChzdGF0ZS53cml0aW5nKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbnRyeSA9PT0gbnVsbCkgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gIH1cblxuICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBlbnRyeTtcbiAgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlO1xufVxuXG5Xcml0YWJsZS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobmV3IEVSUl9NRVRIT0RfTk9UX0lNUExFTUVOVEVEKCdfd3JpdGUoKScpKTtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGV2ID0gbnVsbDtcblxuV3JpdGFibGUucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gY2h1bms7XG4gICAgY2h1bmsgPSBudWxsO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjaHVuayAhPT0gbnVsbCAmJiBjaHVuayAhPT0gdW5kZWZpbmVkKSB0aGlzLndyaXRlKGNodW5rLCBlbmNvZGluZyk7IC8vIC5lbmQoKSBmdWxseSB1bmNvcmtzXG5cbiAgaWYgKHN0YXRlLmNvcmtlZCkge1xuICAgIHN0YXRlLmNvcmtlZCA9IDE7XG4gICAgdGhpcy51bmNvcmsoKTtcbiAgfSAvLyBpZ25vcmUgdW5uZWNlc3NhcnkgZW5kKCkgY2FsbHMuXG5cblxuICBpZiAoIXN0YXRlLmVuZGluZykgZW5kV3JpdGFibGUodGhpcywgc3RhdGUsIGNiKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGVMZW5ndGgnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmxlbmd0aDtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIG5lZWRGaW5pc2goc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlLmVuZGluZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID09PSBudWxsICYmICFzdGF0ZS5maW5pc2hlZCAmJiAhc3RhdGUud3JpdGluZztcbn1cblxuZnVuY3Rpb24gY2FsbEZpbmFsKHN0cmVhbSwgc3RhdGUpIHtcbiAgc3RyZWFtLl9maW5hbChmdW5jdGlvbiAoZXJyKSB7XG4gICAgc3RhdGUucGVuZGluZ2NiLS07XG5cbiAgICBpZiAoZXJyKSB7XG4gICAgICBlcnJvck9yRGVzdHJveShzdHJlYW0sIGVycik7XG4gICAgfVxuXG4gICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5lbWl0KCdwcmVmaW5pc2gnKTtcbiAgICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucHJlZmluaXNoZWQgJiYgIXN0YXRlLmZpbmFsQ2FsbGVkKSB7XG4gICAgaWYgKHR5cGVvZiBzdHJlYW0uX2ZpbmFsID09PSAnZnVuY3Rpb24nICYmICFzdGF0ZS5kZXN0cm95ZWQpIHtcbiAgICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgICAgc3RhdGUuZmluYWxDYWxsZWQgPSB0cnVlO1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhjYWxsRmluYWwsIHN0cmVhbSwgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5wcmVmaW5pc2hlZCA9IHRydWU7XG4gICAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpIHtcbiAgdmFyIG5lZWQgPSBuZWVkRmluaXNoKHN0YXRlKTtcblxuICBpZiAobmVlZCkge1xuICAgIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKTtcblxuICAgIGlmIChzdGF0ZS5wZW5kaW5nY2IgPT09IDApIHtcbiAgICAgIHN0YXRlLmZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5lbWl0KCdmaW5pc2gnKTtcblxuICAgICAgaWYgKHN0YXRlLmF1dG9EZXN0cm95KSB7XG4gICAgICAgIC8vIEluIGNhc2Ugb2YgZHVwbGV4IHN0cmVhbXMgd2UgbmVlZCBhIHdheSB0byBkZXRlY3RcbiAgICAgICAgLy8gaWYgdGhlIHJlYWRhYmxlIHNpZGUgaXMgcmVhZHkgZm9yIGF1dG9EZXN0cm95IGFzIHdlbGxcbiAgICAgICAgdmFyIHJTdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcblxuICAgICAgICBpZiAoIXJTdGF0ZSB8fCByU3RhdGUuYXV0b0Rlc3Ryb3kgJiYgclN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICAgICAgICBzdHJlYW0uZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5lZWQ7XG59XG5cbmZ1bmN0aW9uIGVuZFdyaXRhYmxlKHN0cmVhbSwgc3RhdGUsIGNiKSB7XG4gIHN0YXRlLmVuZGluZyA9IHRydWU7XG4gIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuXG4gIGlmIChjYikge1xuICAgIGlmIChzdGF0ZS5maW5pc2hlZCkgcHJvY2Vzcy5uZXh0VGljayhjYik7ZWxzZSBzdHJlYW0ub25jZSgnZmluaXNoJywgY2IpO1xuICB9XG5cbiAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICBzdHJlYW0ud3JpdGFibGUgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gb25Db3JrZWRGaW5pc2goY29ya1JlcSwgc3RhdGUsIGVycikge1xuICB2YXIgZW50cnkgPSBjb3JrUmVxLmVudHJ5O1xuICBjb3JrUmVxLmVudHJ5ID0gbnVsbDtcblxuICB3aGlsZSAoZW50cnkpIHtcbiAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjaztcbiAgICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgICBjYihlcnIpO1xuICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgfSAvLyByZXVzZSB0aGUgZnJlZSBjb3JrUmVxLlxuXG5cbiAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQgPSBjb3JrUmVxO1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLCAnZGVzdHJveWVkJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbVxuICAgIC8vIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcbiAgICBpZiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRoZSB1c2VyIGlzIGV4cGxpY2l0bHlcbiAgICAvLyBtYW5hZ2luZyBkZXN0cm95ZWRcblxuXG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7XG5Xcml0YWJsZS5wcm90b3R5cGUuZGVzdHJveSA9IGRlc3Ryb3lJbXBsLmRlc3Ryb3k7XG5Xcml0YWJsZS5wcm90b3R5cGUuX3VuZGVzdHJveSA9IGRlc3Ryb3lJbXBsLnVuZGVzdHJveTtcblxuV3JpdGFibGUucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgY2IoZXJyKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgX09iamVjdCRzZXRQcm90b3R5cGVPO1xuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG52YXIgZmluaXNoZWQgPSByZXF1aXJlKCcuL2VuZC1vZi1zdHJlYW0nKTtcblxudmFyIGtMYXN0UmVzb2x2ZSA9IFN5bWJvbCgnbGFzdFJlc29sdmUnKTtcbnZhciBrTGFzdFJlamVjdCA9IFN5bWJvbCgnbGFzdFJlamVjdCcpO1xudmFyIGtFcnJvciA9IFN5bWJvbCgnZXJyb3InKTtcbnZhciBrRW5kZWQgPSBTeW1ib2woJ2VuZGVkJyk7XG52YXIga0xhc3RQcm9taXNlID0gU3ltYm9sKCdsYXN0UHJvbWlzZScpO1xudmFyIGtIYW5kbGVQcm9taXNlID0gU3ltYm9sKCdoYW5kbGVQcm9taXNlJyk7XG52YXIga1N0cmVhbSA9IFN5bWJvbCgnc3RyZWFtJyk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUl0ZXJSZXN1bHQodmFsdWUsIGRvbmUpIHtcbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgZG9uZTogZG9uZVxuICB9O1xufVxuXG5mdW5jdGlvbiByZWFkQW5kUmVzb2x2ZShpdGVyKSB7XG4gIHZhciByZXNvbHZlID0gaXRlcltrTGFzdFJlc29sdmVdO1xuXG4gIGlmIChyZXNvbHZlICE9PSBudWxsKSB7XG4gICAgdmFyIGRhdGEgPSBpdGVyW2tTdHJlYW1dLnJlYWQoKTsgLy8gd2UgZGVmZXIgaWYgZGF0YSBpcyBudWxsXG4gICAgLy8gd2UgY2FuIGJlIGV4cGVjdGluZyBlaXRoZXIgJ2VuZCcgb3JcbiAgICAvLyAnZXJyb3InXG5cbiAgICBpZiAoZGF0YSAhPT0gbnVsbCkge1xuICAgICAgaXRlcltrTGFzdFByb21pc2VdID0gbnVsbDtcbiAgICAgIGl0ZXJba0xhc3RSZXNvbHZlXSA9IG51bGw7XG4gICAgICBpdGVyW2tMYXN0UmVqZWN0XSA9IG51bGw7XG4gICAgICByZXNvbHZlKGNyZWF0ZUl0ZXJSZXN1bHQoZGF0YSwgZmFsc2UpKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gb25SZWFkYWJsZShpdGVyKSB7XG4gIC8vIHdlIHdhaXQgZm9yIHRoZSBuZXh0IHRpY2ssIGJlY2F1c2UgaXQgbWlnaHRcbiAgLy8gZW1pdCBhbiBlcnJvciB3aXRoIHByb2Nlc3MubmV4dFRpY2tcbiAgcHJvY2Vzcy5uZXh0VGljayhyZWFkQW5kUmVzb2x2ZSwgaXRlcik7XG59XG5cbmZ1bmN0aW9uIHdyYXBGb3JOZXh0KGxhc3RQcm9taXNlLCBpdGVyKSB7XG4gIHJldHVybiBmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgbGFzdFByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoaXRlcltrRW5kZWRdKSB7XG4gICAgICAgIHJlc29sdmUoY3JlYXRlSXRlclJlc3VsdCh1bmRlZmluZWQsIHRydWUpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpdGVyW2tIYW5kbGVQcm9taXNlXShyZXNvbHZlLCByZWplY3QpO1xuICAgIH0sIHJlamVjdCk7XG4gIH07XG59XG5cbnZhciBBc3luY0l0ZXJhdG9yUHJvdG90eXBlID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGZ1bmN0aW9uICgpIHt9KTtcbnZhciBSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3JQcm90b3R5cGUgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YoKF9PYmplY3Qkc2V0UHJvdG90eXBlTyA9IHtcbiAgZ2V0IHN0cmVhbSgpIHtcbiAgICByZXR1cm4gdGhpc1trU3RyZWFtXTtcbiAgfSxcblxuICBuZXh0OiBmdW5jdGlvbiBuZXh0KCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAvLyBpZiB3ZSBoYXZlIGRldGVjdGVkIGFuIGVycm9yIGluIHRoZSBtZWFud2hpbGVcbiAgICAvLyByZWplY3Qgc3RyYWlnaHQgYXdheVxuICAgIHZhciBlcnJvciA9IHRoaXNba0Vycm9yXTtcblxuICAgIGlmIChlcnJvciAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICB9XG5cbiAgICBpZiAodGhpc1trRW5kZWRdKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNyZWF0ZUl0ZXJSZXN1bHQodW5kZWZpbmVkLCB0cnVlKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXNba1N0cmVhbV0uZGVzdHJveWVkKSB7XG4gICAgICAvLyBXZSBuZWVkIHRvIGRlZmVyIHZpYSBuZXh0VGljayBiZWNhdXNlIGlmIC5kZXN0cm95KGVycikgaXNcbiAgICAgIC8vIGNhbGxlZCwgdGhlIGVycm9yIHdpbGwgYmUgZW1pdHRlZCB2aWEgbmV4dFRpY2ssIGFuZFxuICAgICAgLy8gd2UgY2Fubm90IGd1YXJhbnRlZSB0aGF0IHRoZXJlIGlzIG5vIGVycm9yIGxpbmdlcmluZyBhcm91bmRcbiAgICAgIC8vIHdhaXRpbmcgdG8gYmUgZW1pdHRlZC5cbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmIChfdGhpc1trRXJyb3JdKSB7XG4gICAgICAgICAgICByZWplY3QoX3RoaXNba0Vycm9yXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc29sdmUoY3JlYXRlSXRlclJlc3VsdCh1bmRlZmluZWQsIHRydWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSAvLyBpZiB3ZSBoYXZlIG11bHRpcGxlIG5leHQoKSBjYWxsc1xuICAgIC8vIHdlIHdpbGwgd2FpdCBmb3IgdGhlIHByZXZpb3VzIFByb21pc2UgdG8gZmluaXNoXG4gICAgLy8gdGhpcyBsb2dpYyBpcyBvcHRpbWl6ZWQgdG8gc3VwcG9ydCBmb3IgYXdhaXQgbG9vcHMsXG4gICAgLy8gd2hlcmUgbmV4dCgpIGlzIG9ubHkgY2FsbGVkIG9uY2UgYXQgYSB0aW1lXG5cblxuICAgIHZhciBsYXN0UHJvbWlzZSA9IHRoaXNba0xhc3RQcm9taXNlXTtcbiAgICB2YXIgcHJvbWlzZTtcblxuICAgIGlmIChsYXN0UHJvbWlzZSkge1xuICAgICAgcHJvbWlzZSA9IG5ldyBQcm9taXNlKHdyYXBGb3JOZXh0KGxhc3RQcm9taXNlLCB0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGZhc3QgcGF0aCBuZWVkZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSB0aGlzLnB1c2goKVxuICAgICAgLy8gd2l0aG91dCB0cmlnZ2VyaW5nIHRoZSBuZXh0KCkgcXVldWVcbiAgICAgIHZhciBkYXRhID0gdGhpc1trU3RyZWFtXS5yZWFkKCk7XG5cbiAgICAgIGlmIChkYXRhICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoY3JlYXRlSXRlclJlc3VsdChkYXRhLCBmYWxzZSkpO1xuICAgICAgfVxuXG4gICAgICBwcm9taXNlID0gbmV3IFByb21pc2UodGhpc1trSGFuZGxlUHJvbWlzZV0pO1xuICAgIH1cblxuICAgIHRoaXNba0xhc3RQcm9taXNlXSA9IHByb21pc2U7XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cbn0sIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JHNldFByb3RvdHlwZU8sIFN5bWJvbC5hc3luY0l0ZXJhdG9yLCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzO1xufSksIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JHNldFByb3RvdHlwZU8sIFwicmV0dXJuXCIsIGZ1bmN0aW9uIF9yZXR1cm4oKSB7XG4gIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gIC8vIGRlc3Ryb3koZXJyLCBjYikgaXMgYSBwcml2YXRlIEFQSVxuICAvLyB3ZSBjYW4gZ3VhcmFudGVlIHdlIGhhdmUgdGhhdCBoZXJlLCBiZWNhdXNlIHdlIGNvbnRyb2wgdGhlXG4gIC8vIFJlYWRhYmxlIGNsYXNzIHRoaXMgaXMgYXR0YWNoZWQgdG9cbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBfdGhpczJba1N0cmVhbV0uZGVzdHJveShudWxsLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJlc29sdmUoY3JlYXRlSXRlclJlc3VsdCh1bmRlZmluZWQsIHRydWUpKTtcbiAgICB9KTtcbiAgfSk7XG59KSwgX09iamVjdCRzZXRQcm90b3R5cGVPKSwgQXN5bmNJdGVyYXRvclByb3RvdHlwZSk7XG5cbnZhciBjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3IgPSBmdW5jdGlvbiBjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3Ioc3RyZWFtKSB7XG4gIHZhciBfT2JqZWN0JGNyZWF0ZTtcblxuICB2YXIgaXRlcmF0b3IgPSBPYmplY3QuY3JlYXRlKFJlYWRhYmxlU3RyZWFtQXN5bmNJdGVyYXRvclByb3RvdHlwZSwgKF9PYmplY3QkY3JlYXRlID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JGNyZWF0ZSwga1N0cmVhbSwge1xuICAgIHZhbHVlOiBzdHJlYW0sXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSksIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JGNyZWF0ZSwga0xhc3RSZXNvbHZlLCB7XG4gICAgdmFsdWU6IG51bGwsXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSksIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JGNyZWF0ZSwga0xhc3RSZWplY3QsIHtcbiAgICB2YWx1ZTogbnVsbCxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3QkY3JlYXRlLCBrRXJyb3IsIHtcbiAgICB2YWx1ZTogbnVsbCxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KSwgX2RlZmluZVByb3BlcnR5KF9PYmplY3QkY3JlYXRlLCBrRW5kZWQsIHtcbiAgICB2YWx1ZTogc3RyZWFtLl9yZWFkYWJsZVN0YXRlLmVuZEVtaXR0ZWQsXG4gICAgd3JpdGFibGU6IHRydWVcbiAgfSksIF9kZWZpbmVQcm9wZXJ0eShfT2JqZWN0JGNyZWF0ZSwga0hhbmRsZVByb21pc2UsIHtcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgZGF0YSA9IGl0ZXJhdG9yW2tTdHJlYW1dLnJlYWQoKTtcblxuICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgaXRlcmF0b3Jba0xhc3RQcm9taXNlXSA9IG51bGw7XG4gICAgICAgIGl0ZXJhdG9yW2tMYXN0UmVzb2x2ZV0gPSBudWxsO1xuICAgICAgICBpdGVyYXRvcltrTGFzdFJlamVjdF0gPSBudWxsO1xuICAgICAgICByZXNvbHZlKGNyZWF0ZUl0ZXJSZXN1bHQoZGF0YSwgZmFsc2UpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZXJhdG9yW2tMYXN0UmVzb2x2ZV0gPSByZXNvbHZlO1xuICAgICAgICBpdGVyYXRvcltrTGFzdFJlamVjdF0gPSByZWplY3Q7XG4gICAgICB9XG4gICAgfSxcbiAgICB3cml0YWJsZTogdHJ1ZVxuICB9KSwgX09iamVjdCRjcmVhdGUpKTtcbiAgaXRlcmF0b3Jba0xhc3RQcm9taXNlXSA9IG51bGw7XG4gIGZpbmlzaGVkKHN0cmVhbSwgZnVuY3Rpb24gKGVycikge1xuICAgIGlmIChlcnIgJiYgZXJyLmNvZGUgIT09ICdFUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRScpIHtcbiAgICAgIHZhciByZWplY3QgPSBpdGVyYXRvcltrTGFzdFJlamVjdF07IC8vIHJlamVjdCBpZiB3ZSBhcmUgd2FpdGluZyBmb3IgZGF0YSBpbiB0aGUgUHJvbWlzZVxuICAgICAgLy8gcmV0dXJuZWQgYnkgbmV4dCgpIGFuZCBzdG9yZSB0aGUgZXJyb3JcblxuICAgICAgaWYgKHJlamVjdCAhPT0gbnVsbCkge1xuICAgICAgICBpdGVyYXRvcltrTGFzdFByb21pc2VdID0gbnVsbDtcbiAgICAgICAgaXRlcmF0b3Jba0xhc3RSZXNvbHZlXSA9IG51bGw7XG4gICAgICAgIGl0ZXJhdG9yW2tMYXN0UmVqZWN0XSA9IG51bGw7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfVxuXG4gICAgICBpdGVyYXRvcltrRXJyb3JdID0gZXJyO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciByZXNvbHZlID0gaXRlcmF0b3Jba0xhc3RSZXNvbHZlXTtcblxuICAgIGlmIChyZXNvbHZlICE9PSBudWxsKSB7XG4gICAgICBpdGVyYXRvcltrTGFzdFByb21pc2VdID0gbnVsbDtcbiAgICAgIGl0ZXJhdG9yW2tMYXN0UmVzb2x2ZV0gPSBudWxsO1xuICAgICAgaXRlcmF0b3Jba0xhc3RSZWplY3RdID0gbnVsbDtcbiAgICAgIHJlc29sdmUoY3JlYXRlSXRlclJlc3VsdCh1bmRlZmluZWQsIHRydWUpKTtcbiAgICB9XG5cbiAgICBpdGVyYXRvcltrRW5kZWRdID0gdHJ1ZTtcbiAgfSk7XG4gIHN0cmVhbS5vbigncmVhZGFibGUnLCBvblJlYWRhYmxlLmJpbmQobnVsbCwgaXRlcmF0b3IpKTtcbiAgcmV0dXJuIGl0ZXJhdG9yO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVSZWFkYWJsZVN0cmVhbUFzeW5jSXRlcmF0b3I7IiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBvd25LZXlzKG9iamVjdCwgZW51bWVyYWJsZU9ubHkpIHsgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmplY3QpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTsgaWYgKGVudW1lcmFibGVPbmx5KSBzeW1ib2xzID0gc3ltYm9scy5maWx0ZXIoZnVuY3Rpb24gKHN5bSkgeyByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QsIHN5bSkuZW51bWVyYWJsZTsgfSk7IGtleXMucHVzaC5hcHBseShrZXlzLCBzeW1ib2xzKTsgfSByZXR1cm4ga2V5czsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0U3ByZWFkKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldICE9IG51bGwgPyBhcmd1bWVudHNbaV0gOiB7fTsgaWYgKGkgJSAyKSB7IG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgeyBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTsgfSk7IH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHsgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhzb3VyY2UpKTsgfSBlbHNlIHsgb3duS2V5cyhPYmplY3Qoc291cmNlKSkuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihzb3VyY2UsIGtleSkpOyB9KTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpba2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG52YXIgX3JlcXVpcmUgPSByZXF1aXJlKCdidWZmZXInKSxcbiAgICBCdWZmZXIgPSBfcmVxdWlyZS5CdWZmZXI7XG5cbnZhciBfcmVxdWlyZTIgPSByZXF1aXJlKCd1dGlsJyksXG4gICAgaW5zcGVjdCA9IF9yZXF1aXJlMi5pbnNwZWN0O1xuXG52YXIgY3VzdG9tID0gaW5zcGVjdCAmJiBpbnNwZWN0LmN1c3RvbSB8fCAnaW5zcGVjdCc7XG5cbmZ1bmN0aW9uIGNvcHlCdWZmZXIoc3JjLCB0YXJnZXQsIG9mZnNldCkge1xuICBCdWZmZXIucHJvdG90eXBlLmNvcHkuY2FsbChzcmMsIHRhcmdldCwgb2Zmc2V0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPVxuLyojX19QVVJFX18qL1xuZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBCdWZmZXJMaXN0KCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCdWZmZXJMaXN0KTtcblxuICAgIHRoaXMuaGVhZCA9IG51bGw7XG4gICAgdGhpcy50YWlsID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQnVmZmVyTGlzdCwgW3tcbiAgICBrZXk6IFwicHVzaFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBwdXNoKHYpIHtcbiAgICAgIHZhciBlbnRyeSA9IHtcbiAgICAgICAgZGF0YTogdixcbiAgICAgICAgbmV4dDogbnVsbFxuICAgICAgfTtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA+IDApIHRoaXMudGFpbC5uZXh0ID0gZW50cnk7ZWxzZSB0aGlzLmhlYWQgPSBlbnRyeTtcbiAgICAgIHRoaXMudGFpbCA9IGVudHJ5O1xuICAgICAgKyt0aGlzLmxlbmd0aDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwidW5zaGlmdFwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB1bnNoaWZ0KHYpIHtcbiAgICAgIHZhciBlbnRyeSA9IHtcbiAgICAgICAgZGF0YTogdixcbiAgICAgICAgbmV4dDogdGhpcy5oZWFkXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB0aGlzLnRhaWwgPSBlbnRyeTtcbiAgICAgIHRoaXMuaGVhZCA9IGVudHJ5O1xuICAgICAgKyt0aGlzLmxlbmd0aDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic2hpZnRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2hpZnQoKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICAgIHZhciByZXQgPSB0aGlzLmhlYWQuZGF0YTtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMSkgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtlbHNlIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0O1xuICAgICAgLS10aGlzLmxlbmd0aDtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImNsZWFyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtcbiAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiam9pblwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBqb2luKHMpIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICAgICAgdmFyIHAgPSB0aGlzLmhlYWQ7XG4gICAgICB2YXIgcmV0ID0gJycgKyBwLmRhdGE7XG5cbiAgICAgIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgICAgIHJldCArPSBzICsgcC5kYXRhO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJjb25jYXRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gY29uY2F0KG4pIHtcbiAgICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKTtcbiAgICAgIHZhciByZXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobiA+Pj4gMCk7XG4gICAgICB2YXIgcCA9IHRoaXMuaGVhZDtcbiAgICAgIHZhciBpID0gMDtcblxuICAgICAgd2hpbGUgKHApIHtcbiAgICAgICAgY29weUJ1ZmZlcihwLmRhdGEsIHJldCwgaSk7XG4gICAgICAgIGkgKz0gcC5kYXRhLmxlbmd0aDtcbiAgICAgICAgcCA9IHAubmV4dDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJldDtcbiAgICB9IC8vIENvbnN1bWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyBvciBjaGFyYWN0ZXJzIGZyb20gdGhlIGJ1ZmZlcmVkIGRhdGEuXG5cbiAgfSwge1xuICAgIGtleTogXCJjb25zdW1lXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbnN1bWUobiwgaGFzU3RyaW5ncykge1xuICAgICAgdmFyIHJldDtcblxuICAgICAgaWYgKG4gPCB0aGlzLmhlYWQuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgLy8gYHNsaWNlYCBpcyB0aGUgc2FtZSBmb3IgYnVmZmVycyBhbmQgc3RyaW5ncy5cbiAgICAgICAgcmV0ID0gdGhpcy5oZWFkLmRhdGEuc2xpY2UoMCwgbik7XG4gICAgICAgIHRoaXMuaGVhZC5kYXRhID0gdGhpcy5oZWFkLmRhdGEuc2xpY2Uobik7XG4gICAgICB9IGVsc2UgaWYgKG4gPT09IHRoaXMuaGVhZC5kYXRhLmxlbmd0aCkge1xuICAgICAgICAvLyBGaXJzdCBjaHVuayBpcyBhIHBlcmZlY3QgbWF0Y2guXG4gICAgICAgIHJldCA9IHRoaXMuc2hpZnQoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlc3VsdCBzcGFucyBtb3JlIHRoYW4gb25lIGJ1ZmZlci5cbiAgICAgICAgcmV0ID0gaGFzU3RyaW5ncyA/IHRoaXMuX2dldFN0cmluZyhuKSA6IHRoaXMuX2dldEJ1ZmZlcihuKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwiZmlyc3RcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZmlyc3QoKSB7XG4gICAgICByZXR1cm4gdGhpcy5oZWFkLmRhdGE7XG4gICAgfSAvLyBDb25zdW1lcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgY2hhcmFjdGVycyBmcm9tIHRoZSBidWZmZXJlZCBkYXRhLlxuXG4gIH0sIHtcbiAgICBrZXk6IFwiX2dldFN0cmluZ1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZ2V0U3RyaW5nKG4pIHtcbiAgICAgIHZhciBwID0gdGhpcy5oZWFkO1xuICAgICAgdmFyIGMgPSAxO1xuICAgICAgdmFyIHJldCA9IHAuZGF0YTtcbiAgICAgIG4gLT0gcmV0Lmxlbmd0aDtcblxuICAgICAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICAgICAgdmFyIHN0ciA9IHAuZGF0YTtcbiAgICAgICAgdmFyIG5iID0gbiA+IHN0ci5sZW5ndGggPyBzdHIubGVuZ3RoIDogbjtcbiAgICAgICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSByZXQgKz0gc3RyO2Vsc2UgcmV0ICs9IHN0ci5zbGljZSgwLCBuKTtcbiAgICAgICAgbiAtPSBuYjtcblxuICAgICAgICBpZiAobiA9PT0gMCkge1xuICAgICAgICAgIGlmIChuYiA9PT0gc3RyLmxlbmd0aCkge1xuICAgICAgICAgICAgKytjO1xuICAgICAgICAgICAgaWYgKHAubmV4dCkgdGhpcy5oZWFkID0gcC5uZXh0O2Vsc2UgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oZWFkID0gcDtcbiAgICAgICAgICAgIHAuZGF0YSA9IHN0ci5zbGljZShuYik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICArK2M7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoIC09IGM7XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH0gLy8gQ29uc3VtZXMgYSBzcGVjaWZpZWQgYW1vdW50IG9mIGJ5dGVzIGZyb20gdGhlIGJ1ZmZlcmVkIGRhdGEuXG5cbiAgfSwge1xuICAgIGtleTogXCJfZ2V0QnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRCdWZmZXIobikge1xuICAgICAgdmFyIHJldCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuKTtcbiAgICAgIHZhciBwID0gdGhpcy5oZWFkO1xuICAgICAgdmFyIGMgPSAxO1xuICAgICAgcC5kYXRhLmNvcHkocmV0KTtcbiAgICAgIG4gLT0gcC5kYXRhLmxlbmd0aDtcblxuICAgICAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICAgICAgdmFyIGJ1ZiA9IHAuZGF0YTtcbiAgICAgICAgdmFyIG5iID0gbiA+IGJ1Zi5sZW5ndGggPyBidWYubGVuZ3RoIDogbjtcbiAgICAgICAgYnVmLmNvcHkocmV0LCByZXQubGVuZ3RoIC0gbiwgMCwgbmIpO1xuICAgICAgICBuIC09IG5iO1xuXG4gICAgICAgIGlmIChuID09PSAwKSB7XG4gICAgICAgICAgaWYgKG5iID09PSBidWYubGVuZ3RoKSB7XG4gICAgICAgICAgICArK2M7XG4gICAgICAgICAgICBpZiAocC5uZXh0KSB0aGlzLmhlYWQgPSBwLm5leHQ7ZWxzZSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhlYWQgPSBwO1xuICAgICAgICAgICAgcC5kYXRhID0gYnVmLnNsaWNlKG5iKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgICsrYztcbiAgICAgIH1cblxuICAgICAgdGhpcy5sZW5ndGggLT0gYztcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSAvLyBNYWtlIHN1cmUgdGhlIGxpbmtlZCBsaXN0IG9ubHkgc2hvd3MgdGhlIG1pbmltYWwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uLlxuXG4gIH0sIHtcbiAgICBrZXk6IGN1c3RvbSxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdmFsdWUoXywgb3B0aW9ucykge1xuICAgICAgcmV0dXJuIGluc3BlY3QodGhpcywgX29iamVjdFNwcmVhZCh7fSwgb3B0aW9ucywge1xuICAgICAgICAvLyBPbmx5IGluc3BlY3Qgb25lIGxldmVsLlxuICAgICAgICBkZXB0aDogMCxcbiAgICAgICAgLy8gSXQgc2hvdWxkIG5vdCByZWN1cnNlLlxuICAgICAgICBjdXN0b21JbnNwZWN0OiBmYWxzZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBCdWZmZXJMaXN0O1xufSgpOyIsIid1c2Ugc3RyaWN0JzsgLy8gdW5kb2N1bWVudGVkIGNiKCkgQVBJLCBuZWVkZWQgZm9yIGNvcmUsIG5vdCBmb3IgcHVibGljIEFQSVxuXG5mdW5jdGlvbiBkZXN0cm95KGVyciwgY2IpIHtcbiAgdmFyIF90aGlzID0gdGhpcztcblxuICB2YXIgcmVhZGFibGVEZXN0cm95ZWQgPSB0aGlzLl9yZWFkYWJsZVN0YXRlICYmIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB2YXIgd3JpdGFibGVEZXN0cm95ZWQgPSB0aGlzLl93cml0YWJsZVN0YXRlICYmIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO1xuXG4gIGlmIChyZWFkYWJsZURlc3Ryb3llZCB8fCB3cml0YWJsZURlc3Ryb3llZCkge1xuICAgIGlmIChjYikge1xuICAgICAgY2IoZXJyKTtcbiAgICB9IGVsc2UgaWYgKGVycikge1xuICAgICAgaWYgKCF0aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yTlQsIHRoaXMsIGVycik7XG4gICAgICB9IGVsc2UgaWYgKCF0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCkge1xuICAgICAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdEVycm9yTlQsIHRoaXMsIGVycik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH0gLy8gd2Ugc2V0IGRlc3Ryb3llZCB0byB0cnVlIGJlZm9yZSBmaXJpbmcgZXJyb3IgY2FsbGJhY2tzIGluIG9yZGVyXG4gIC8vIHRvIG1ha2UgaXQgcmUtZW50cmFuY2Ugc2FmZSBpbiBjYXNlIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2l0aGluIGNhbGxiYWNrc1xuXG5cbiAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUpIHtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHRydWU7XG4gIH0gLy8gaWYgdGhpcyBpcyBhIGR1cGxleCBzdHJlYW0gbWFyayB0aGUgd3JpdGFibGUgcGFydCBhcyBkZXN0cm95ZWQgYXMgd2VsbFxuXG5cbiAgaWYgKHRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHRydWU7XG4gIH1cblxuICB0aGlzLl9kZXN0cm95KGVyciB8fCBudWxsLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKCFjYiAmJiBlcnIpIHtcbiAgICAgIGlmICghX3RoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0RXJyb3JBbmRDbG9zZU5ULCBfdGhpcywgZXJyKTtcbiAgICAgIH0gZWxzZSBpZiAoIV90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCkge1xuICAgICAgICBfdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGVtaXRFcnJvckFuZENsb3NlTlQsIF90aGlzLCBlcnIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhlbWl0Q2xvc2VOVCwgX3RoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2IpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTlQsIF90aGlzKTtcbiAgICAgIGNiKGVycik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTlQsIF90aGlzKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiBlbWl0RXJyb3JBbmRDbG9zZU5UKHNlbGYsIGVycikge1xuICBlbWl0RXJyb3JOVChzZWxmLCBlcnIpO1xuICBlbWl0Q2xvc2VOVChzZWxmKTtcbn1cblxuZnVuY3Rpb24gZW1pdENsb3NlTlQoc2VsZikge1xuICBpZiAoc2VsZi5fd3JpdGFibGVTdGF0ZSAmJiAhc2VsZi5fd3JpdGFibGVTdGF0ZS5lbWl0Q2xvc2UpIHJldHVybjtcbiAgaWYgKHNlbGYuX3JlYWRhYmxlU3RhdGUgJiYgIXNlbGYuX3JlYWRhYmxlU3RhdGUuZW1pdENsb3NlKSByZXR1cm47XG4gIHNlbGYuZW1pdCgnY2xvc2UnKTtcbn1cblxuZnVuY3Rpb24gdW5kZXN0cm95KCkge1xuICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5yZWFkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZmluYWxDYWxsZWQgPSBmYWxzZTtcbiAgICB0aGlzLl93cml0YWJsZVN0YXRlLnByZWZpbmlzaGVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1pdEVycm9yTlQoc2VsZiwgZXJyKSB7XG4gIHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpO1xufVxuXG5mdW5jdGlvbiBlcnJvck9yRGVzdHJveShzdHJlYW0sIGVycikge1xuICAvLyBXZSBoYXZlIHRlc3RzIHRoYXQgcmVseSBvbiBlcnJvcnMgYmVpbmcgZW1pdHRlZFxuICAvLyBpbiB0aGUgc2FtZSB0aWNrLCBzbyBjaGFuZ2luZyB0aGlzIGlzIHNlbXZlciBtYWpvci5cbiAgLy8gRm9yIG5vdyB3aGVuIHlvdSBvcHQtaW4gdG8gYXV0b0Rlc3Ryb3kgd2UgYWxsb3dcbiAgLy8gdGhlIGVycm9yIHRvIGJlIGVtaXR0ZWQgbmV4dFRpY2suIEluIGEgZnV0dXJlXG4gIC8vIHNlbXZlciBtYWpvciB1cGRhdGUgd2Ugc2hvdWxkIGNoYW5nZSB0aGUgZGVmYXVsdCB0byB0aGlzLlxuICB2YXIgclN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgd1N0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlO1xuICBpZiAoclN0YXRlICYmIHJTdGF0ZS5hdXRvRGVzdHJveSB8fCB3U3RhdGUgJiYgd1N0YXRlLmF1dG9EZXN0cm95KSBzdHJlYW0uZGVzdHJveShlcnIpO2Vsc2Ugc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGRlc3Ryb3k6IGRlc3Ryb3ksXG4gIHVuZGVzdHJveTogdW5kZXN0cm95LFxuICBlcnJvck9yRGVzdHJveTogZXJyb3JPckRlc3Ryb3lcbn07IiwiLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC9lbmQtb2Ytc3RyZWFtIHdpdGhcbi8vIHBlcm1pc3Npb24gZnJvbSB0aGUgYXV0aG9yLCBNYXRoaWFzIEJ1dXMgKEBtYWZpbnRvc2gpLlxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UgPSByZXF1aXJlKCcuLi8uLi8uLi9lcnJvcnMnKS5jb2Rlcy5FUlJfU1RSRUFNX1BSRU1BVFVSRV9DTE9TRTtcblxuZnVuY3Rpb24gb25jZShjYWxsYmFjaykge1xuICB2YXIgY2FsbGVkID0gZmFsc2U7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGNhbGxlZCkgcmV0dXJuO1xuICAgIGNhbGxlZCA9IHRydWU7XG5cbiAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgY2FsbGJhY2suYXBwbHkodGhpcywgYXJncyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5mdW5jdGlvbiBpc1JlcXVlc3Qoc3RyZWFtKSB7XG4gIHJldHVybiBzdHJlYW0uc2V0SGVhZGVyICYmIHR5cGVvZiBzdHJlYW0uYWJvcnQgPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGVvcyhzdHJlYW0sIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGVvcyhzdHJlYW0sIG51bGwsIG9wdHMpO1xuICBpZiAoIW9wdHMpIG9wdHMgPSB7fTtcbiAgY2FsbGJhY2sgPSBvbmNlKGNhbGxiYWNrIHx8IG5vb3ApO1xuICB2YXIgcmVhZGFibGUgPSBvcHRzLnJlYWRhYmxlIHx8IG9wdHMucmVhZGFibGUgIT09IGZhbHNlICYmIHN0cmVhbS5yZWFkYWJsZTtcbiAgdmFyIHdyaXRhYmxlID0gb3B0cy53cml0YWJsZSB8fCBvcHRzLndyaXRhYmxlICE9PSBmYWxzZSAmJiBzdHJlYW0ud3JpdGFibGU7XG5cbiAgdmFyIG9ubGVnYWN5ZmluaXNoID0gZnVuY3Rpb24gb25sZWdhY3lmaW5pc2goKSB7XG4gICAgaWYgKCFzdHJlYW0ud3JpdGFibGUpIG9uZmluaXNoKCk7XG4gIH07XG5cbiAgdmFyIHdyaXRhYmxlRW5kZWQgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGUgJiYgc3RyZWFtLl93cml0YWJsZVN0YXRlLmZpbmlzaGVkO1xuXG4gIHZhciBvbmZpbmlzaCA9IGZ1bmN0aW9uIG9uZmluaXNoKCkge1xuICAgIHdyaXRhYmxlID0gZmFsc2U7XG4gICAgd3JpdGFibGVFbmRlZCA9IHRydWU7XG4gICAgaWYgKCFyZWFkYWJsZSkgY2FsbGJhY2suY2FsbChzdHJlYW0pO1xuICB9O1xuXG4gIHZhciByZWFkYWJsZUVuZGVkID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlICYmIHN0cmVhbS5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkO1xuXG4gIHZhciBvbmVuZCA9IGZ1bmN0aW9uIG9uZW5kKCkge1xuICAgIHJlYWRhYmxlID0gZmFsc2U7XG4gICAgcmVhZGFibGVFbmRlZCA9IHRydWU7XG4gICAgaWYgKCF3cml0YWJsZSkgY2FsbGJhY2suY2FsbChzdHJlYW0pO1xuICB9O1xuXG4gIHZhciBvbmVycm9yID0gZnVuY3Rpb24gb25lcnJvcihlcnIpIHtcbiAgICBjYWxsYmFjay5jYWxsKHN0cmVhbSwgZXJyKTtcbiAgfTtcblxuICB2YXIgb25jbG9zZSA9IGZ1bmN0aW9uIG9uY2xvc2UoKSB7XG4gICAgdmFyIGVycjtcblxuICAgIGlmIChyZWFkYWJsZSAmJiAhcmVhZGFibGVFbmRlZCkge1xuICAgICAgaWYgKCFzdHJlYW0uX3JlYWRhYmxlU3RhdGUgfHwgIXN0cmVhbS5fcmVhZGFibGVTdGF0ZS5lbmRlZCkgZXJyID0gbmV3IEVSUl9TVFJFQU1fUFJFTUFUVVJFX0NMT1NFKCk7XG4gICAgICByZXR1cm4gY2FsbGJhY2suY2FsbChzdHJlYW0sIGVycik7XG4gICAgfVxuXG4gICAgaWYgKHdyaXRhYmxlICYmICF3cml0YWJsZUVuZGVkKSB7XG4gICAgICBpZiAoIXN0cmVhbS5fd3JpdGFibGVTdGF0ZSB8fCAhc3RyZWFtLl93cml0YWJsZVN0YXRlLmVuZGVkKSBlcnIgPSBuZXcgRVJSX1NUUkVBTV9QUkVNQVRVUkVfQ0xPU0UoKTtcbiAgICAgIHJldHVybiBjYWxsYmFjay5jYWxsKHN0cmVhbSwgZXJyKTtcbiAgICB9XG4gIH07XG5cbiAgdmFyIG9ucmVxdWVzdCA9IGZ1bmN0aW9uIG9ucmVxdWVzdCgpIHtcbiAgICBzdHJlYW0ucmVxLm9uKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gIH07XG5cbiAgaWYgKGlzUmVxdWVzdChzdHJlYW0pKSB7XG4gICAgc3RyZWFtLm9uKCdjb21wbGV0ZScsIG9uZmluaXNoKTtcbiAgICBzdHJlYW0ub24oJ2Fib3J0Jywgb25jbG9zZSk7XG4gICAgaWYgKHN0cmVhbS5yZXEpIG9ucmVxdWVzdCgpO2Vsc2Ugc3RyZWFtLm9uKCdyZXF1ZXN0Jywgb25yZXF1ZXN0KTtcbiAgfSBlbHNlIGlmICh3cml0YWJsZSAmJiAhc3RyZWFtLl93cml0YWJsZVN0YXRlKSB7XG4gICAgLy8gbGVnYWN5IHN0cmVhbXNcbiAgICBzdHJlYW0ub24oJ2VuZCcsIG9ubGVnYWN5ZmluaXNoKTtcbiAgICBzdHJlYW0ub24oJ2Nsb3NlJywgb25sZWdhY3lmaW5pc2gpO1xuICB9XG5cbiAgc3RyZWFtLm9uKCdlbmQnLCBvbmVuZCk7XG4gIHN0cmVhbS5vbignZmluaXNoJywgb25maW5pc2gpO1xuICBpZiAob3B0cy5lcnJvciAhPT0gZmFsc2UpIHN0cmVhbS5vbignZXJyb3InLCBvbmVycm9yKTtcbiAgc3RyZWFtLm9uKCdjbG9zZScsIG9uY2xvc2UpO1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignY29tcGxldGUnLCBvbmZpbmlzaCk7XG4gICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdhYm9ydCcsIG9uY2xvc2UpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcigncmVxdWVzdCcsIG9ucmVxdWVzdCk7XG4gICAgaWYgKHN0cmVhbS5yZXEpIHN0cmVhbS5yZXEucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9ubGVnYWN5ZmluaXNoKTtcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25sZWdhY3lmaW5pc2gpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpO1xuICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBzdHJlYW0ucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZW9zOyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ1JlYWRhYmxlLmZyb20gaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgYnJvd3NlcicpXG59O1xuIiwiLy8gUG9ydGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC9wdW1wIHdpdGhcbi8vIHBlcm1pc3Npb24gZnJvbSB0aGUgYXV0aG9yLCBNYXRoaWFzIEJ1dXMgKEBtYWZpbnRvc2gpLlxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW9zO1xuXG5mdW5jdGlvbiBvbmNlKGNhbGxiYWNrKSB7XG4gIHZhciBjYWxsZWQgPSBmYWxzZTtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoY2FsbGVkKSByZXR1cm47XG4gICAgY2FsbGVkID0gdHJ1ZTtcbiAgICBjYWxsYmFjay5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbnZhciBfcmVxdWlyZSRjb2RlcyA9IHJlcXVpcmUoJy4uLy4uLy4uL2Vycm9ycycpLmNvZGVzLFxuICAgIEVSUl9NSVNTSU5HX0FSR1MgPSBfcmVxdWlyZSRjb2Rlcy5FUlJfTUlTU0lOR19BUkdTLFxuICAgIEVSUl9TVFJFQU1fREVTVFJPWUVEID0gX3JlcXVpcmUkY29kZXMuRVJSX1NUUkVBTV9ERVNUUk9ZRUQ7XG5cbmZ1bmN0aW9uIG5vb3AoZXJyKSB7XG4gIC8vIFJldGhyb3cgdGhlIGVycm9yIGlmIGl0IGV4aXN0cyB0byBhdm9pZCBzd2FsbG93aW5nIGl0XG4gIGlmIChlcnIpIHRocm93IGVycjtcbn1cblxuZnVuY3Rpb24gaXNSZXF1ZXN0KHN0cmVhbSkge1xuICByZXR1cm4gc3RyZWFtLnNldEhlYWRlciAmJiB0eXBlb2Ygc3RyZWFtLmFib3J0ID09PSAnZnVuY3Rpb24nO1xufVxuXG5mdW5jdGlvbiBkZXN0cm95ZXIoc3RyZWFtLCByZWFkaW5nLCB3cml0aW5nLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayA9IG9uY2UoY2FsbGJhY2spO1xuICB2YXIgY2xvc2VkID0gZmFsc2U7XG4gIHN0cmVhbS5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgY2xvc2VkID0gdHJ1ZTtcbiAgfSk7XG4gIGlmIChlb3MgPT09IHVuZGVmaW5lZCkgZW9zID0gcmVxdWlyZSgnLi9lbmQtb2Ytc3RyZWFtJyk7XG4gIGVvcyhzdHJlYW0sIHtcbiAgICByZWFkYWJsZTogcmVhZGluZyxcbiAgICB3cml0YWJsZTogd3JpdGluZ1xuICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgY2xvc2VkID0gdHJ1ZTtcbiAgICBjYWxsYmFjaygpO1xuICB9KTtcbiAgdmFyIGRlc3Ryb3llZCA9IGZhbHNlO1xuICByZXR1cm4gZnVuY3Rpb24gKGVycikge1xuICAgIGlmIChjbG9zZWQpIHJldHVybjtcbiAgICBpZiAoZGVzdHJveWVkKSByZXR1cm47XG4gICAgZGVzdHJveWVkID0gdHJ1ZTsgLy8gcmVxdWVzdC5kZXN0cm95IGp1c3QgZG8gLmVuZCAtIC5hYm9ydCBpcyB3aGF0IHdlIHdhbnRcblxuICAgIGlmIChpc1JlcXVlc3Qoc3RyZWFtKSkgcmV0dXJuIHN0cmVhbS5hYm9ydCgpO1xuICAgIGlmICh0eXBlb2Ygc3RyZWFtLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHJldHVybiBzdHJlYW0uZGVzdHJveSgpO1xuICAgIGNhbGxiYWNrKGVyciB8fCBuZXcgRVJSX1NUUkVBTV9ERVNUUk9ZRUQoJ3BpcGUnKSk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNhbGwoZm4pIHtcbiAgZm4oKTtcbn1cblxuZnVuY3Rpb24gcGlwZShmcm9tLCB0bykge1xuICByZXR1cm4gZnJvbS5waXBlKHRvKTtcbn1cblxuZnVuY3Rpb24gcG9wQ2FsbGJhY2soc3RyZWFtcykge1xuICBpZiAoIXN0cmVhbXMubGVuZ3RoKSByZXR1cm4gbm9vcDtcbiAgaWYgKHR5cGVvZiBzdHJlYW1zW3N0cmVhbXMubGVuZ3RoIC0gMV0gIT09ICdmdW5jdGlvbicpIHJldHVybiBub29wO1xuICByZXR1cm4gc3RyZWFtcy5wb3AoKTtcbn1cblxuZnVuY3Rpb24gcGlwZWxpbmUoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBzdHJlYW1zID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIHN0cmVhbXNbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICB2YXIgY2FsbGJhY2sgPSBwb3BDYWxsYmFjayhzdHJlYW1zKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc3RyZWFtc1swXSkpIHN0cmVhbXMgPSBzdHJlYW1zWzBdO1xuXG4gIGlmIChzdHJlYW1zLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgRVJSX01JU1NJTkdfQVJHUygnc3RyZWFtcycpO1xuICB9XG5cbiAgdmFyIGVycm9yO1xuICB2YXIgZGVzdHJveXMgPSBzdHJlYW1zLm1hcChmdW5jdGlvbiAoc3RyZWFtLCBpKSB7XG4gICAgdmFyIHJlYWRpbmcgPSBpIDwgc3RyZWFtcy5sZW5ndGggLSAxO1xuICAgIHZhciB3cml0aW5nID0gaSA+IDA7XG4gICAgcmV0dXJuIGRlc3Ryb3llcihzdHJlYW0sIHJlYWRpbmcsIHdyaXRpbmcsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmICghZXJyb3IpIGVycm9yID0gZXJyO1xuICAgICAgaWYgKGVycikgZGVzdHJveXMuZm9yRWFjaChjYWxsKTtcbiAgICAgIGlmIChyZWFkaW5nKSByZXR1cm47XG4gICAgICBkZXN0cm95cy5mb3JFYWNoKGNhbGwpO1xuICAgICAgY2FsbGJhY2soZXJyb3IpO1xuICAgIH0pO1xuICB9KTtcbiAgcmV0dXJuIHN0cmVhbXMucmVkdWNlKHBpcGUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHBpcGVsaW5lOyIsIid1c2Ugc3RyaWN0JztcblxudmFyIEVSUl9JTlZBTElEX09QVF9WQUxVRSA9IHJlcXVpcmUoJy4uLy4uLy4uL2Vycm9ycycpLmNvZGVzLkVSUl9JTlZBTElEX09QVF9WQUxVRTtcblxuZnVuY3Rpb24gaGlnaFdhdGVyTWFya0Zyb20ob3B0aW9ucywgaXNEdXBsZXgsIGR1cGxleEtleSkge1xuICByZXR1cm4gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrICE9IG51bGwgPyBvcHRpb25zLmhpZ2hXYXRlck1hcmsgOiBpc0R1cGxleCA/IG9wdGlvbnNbZHVwbGV4S2V5XSA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldEhpZ2hXYXRlck1hcmsoc3RhdGUsIG9wdGlvbnMsIGR1cGxleEtleSwgaXNEdXBsZXgpIHtcbiAgdmFyIGh3bSA9IGhpZ2hXYXRlck1hcmtGcm9tKG9wdGlvbnMsIGlzRHVwbGV4LCBkdXBsZXhLZXkpO1xuXG4gIGlmIChod20gIT0gbnVsbCkge1xuICAgIGlmICghKGlzRmluaXRlKGh3bSkgJiYgTWF0aC5mbG9vcihod20pID09PSBod20pIHx8IGh3bSA8IDApIHtcbiAgICAgIHZhciBuYW1lID0gaXNEdXBsZXggPyBkdXBsZXhLZXkgOiAnaGlnaFdhdGVyTWFyayc7XG4gICAgICB0aHJvdyBuZXcgRVJSX0lOVkFMSURfT1BUX1ZBTFVFKG5hbWUsIGh3bSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIE1hdGguZmxvb3IoaHdtKTtcbiAgfSAvLyBEZWZhdWx0IHZhbHVlXG5cblxuICByZXR1cm4gc3RhdGUub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZ2V0SGlnaFdhdGVyTWFyazogZ2V0SGlnaFdhdGVyTWFya1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbiIsImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fcmVhZGFibGUuanMnKTtcbmV4cG9ydHMuU3RyZWFtID0gZXhwb3J0cztcbmV4cG9ydHMuUmVhZGFibGUgPSBleHBvcnRzO1xuZXhwb3J0cy5Xcml0YWJsZSA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fd3JpdGFibGUuanMnKTtcbmV4cG9ydHMuRHVwbGV4ID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9kdXBsZXguanMnKTtcbmV4cG9ydHMuVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMnKTtcbmV4cG9ydHMuUGFzc1Rocm91Z2ggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3Bhc3N0aHJvdWdoLmpzJyk7XG5leHBvcnRzLmZpbmlzaGVkID0gcmVxdWlyZSgnLi9saWIvaW50ZXJuYWwvc3RyZWFtcy9lbmQtb2Ytc3RyZWFtLmpzJyk7XG5leHBvcnRzLnBpcGVsaW5lID0gcmVxdWlyZSgnLi9saWIvaW50ZXJuYWwvc3RyZWFtcy9waXBlbGluZS5qcycpO1xuIiwiJ3VzZSBzdHJpY3QnXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaEJhc2UgPSByZXF1aXJlKCdoYXNoLWJhc2UnKVxuXG52YXIgQVJSQVkxNiA9IG5ldyBBcnJheSgxNilcblxudmFyIHpsID0gW1xuICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LFxuICA3LCA0LCAxMywgMSwgMTAsIDYsIDE1LCAzLCAxMiwgMCwgOSwgNSwgMiwgMTQsIDExLCA4LFxuICAzLCAxMCwgMTQsIDQsIDksIDE1LCA4LCAxLCAyLCA3LCAwLCA2LCAxMywgMTEsIDUsIDEyLFxuICAxLCA5LCAxMSwgMTAsIDAsIDgsIDEyLCA0LCAxMywgMywgNywgMTUsIDE0LCA1LCA2LCAyLFxuICA0LCAwLCA1LCA5LCA3LCAxMiwgMiwgMTAsIDE0LCAxLCAzLCA4LCAxMSwgNiwgMTUsIDEzXG5dXG5cbnZhciB6ciA9IFtcbiAgNSwgMTQsIDcsIDAsIDksIDIsIDExLCA0LCAxMywgNiwgMTUsIDgsIDEsIDEwLCAzLCAxMixcbiAgNiwgMTEsIDMsIDcsIDAsIDEzLCA1LCAxMCwgMTQsIDE1LCA4LCAxMiwgNCwgOSwgMSwgMixcbiAgMTUsIDUsIDEsIDMsIDcsIDE0LCA2LCA5LCAxMSwgOCwgMTIsIDIsIDEwLCAwLCA0LCAxMyxcbiAgOCwgNiwgNCwgMSwgMywgMTEsIDE1LCAwLCA1LCAxMiwgMiwgMTMsIDksIDcsIDEwLCAxNCxcbiAgMTIsIDE1LCAxMCwgNCwgMSwgNSwgOCwgNywgNiwgMiwgMTMsIDE0LCAwLCAzLCA5LCAxMVxuXVxuXG52YXIgc2wgPSBbXG4gIDExLCAxNCwgMTUsIDEyLCA1LCA4LCA3LCA5LCAxMSwgMTMsIDE0LCAxNSwgNiwgNywgOSwgOCxcbiAgNywgNiwgOCwgMTMsIDExLCA5LCA3LCAxNSwgNywgMTIsIDE1LCA5LCAxMSwgNywgMTMsIDEyLFxuICAxMSwgMTMsIDYsIDcsIDE0LCA5LCAxMywgMTUsIDE0LCA4LCAxMywgNiwgNSwgMTIsIDcsIDUsXG4gIDExLCAxMiwgMTQsIDE1LCAxNCwgMTUsIDksIDgsIDksIDE0LCA1LCA2LCA4LCA2LCA1LCAxMixcbiAgOSwgMTUsIDUsIDExLCA2LCA4LCAxMywgMTIsIDUsIDEyLCAxMywgMTQsIDExLCA4LCA1LCA2XG5dXG5cbnZhciBzciA9IFtcbiAgOCwgOSwgOSwgMTEsIDEzLCAxNSwgMTUsIDUsIDcsIDcsIDgsIDExLCAxNCwgMTQsIDEyLCA2LFxuICA5LCAxMywgMTUsIDcsIDEyLCA4LCA5LCAxMSwgNywgNywgMTIsIDcsIDYsIDE1LCAxMywgMTEsXG4gIDksIDcsIDE1LCAxMSwgOCwgNiwgNiwgMTQsIDEyLCAxMywgNSwgMTQsIDEzLCAxMywgNywgNSxcbiAgMTUsIDUsIDgsIDExLCAxNCwgMTQsIDYsIDE0LCA2LCA5LCAxMiwgOSwgMTIsIDUsIDE1LCA4LFxuICA4LCA1LCAxMiwgOSwgMTIsIDUsIDE0LCA2LCA4LCAxMywgNiwgNSwgMTUsIDEzLCAxMSwgMTFcbl1cblxudmFyIGhsID0gWzB4MDAwMDAwMDAsIDB4NWE4Mjc5OTksIDB4NmVkOWViYTEsIDB4OGYxYmJjZGMsIDB4YTk1M2ZkNGVdXG52YXIgaHIgPSBbMHg1MGEyOGJlNiwgMHg1YzRkZDEyNCwgMHg2ZDcwM2VmMywgMHg3YTZkNzZlOSwgMHgwMDAwMDAwMF1cblxuZnVuY3Rpb24gUklQRU1EMTYwICgpIHtcbiAgSGFzaEJhc2UuY2FsbCh0aGlzLCA2NClcblxuICAvLyBzdGF0ZVxuICB0aGlzLl9hID0gMHg2NzQ1MjMwMVxuICB0aGlzLl9iID0gMHhlZmNkYWI4OVxuICB0aGlzLl9jID0gMHg5OGJhZGNmZVxuICB0aGlzLl9kID0gMHgxMDMyNTQ3NlxuICB0aGlzLl9lID0gMHhjM2QyZTFmMFxufVxuXG5pbmhlcml0cyhSSVBFTUQxNjAsIEhhc2hCYXNlKVxuXG5SSVBFTUQxNjAucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB3b3JkcyA9IEFSUkFZMTZcbiAgZm9yICh2YXIgaiA9IDA7IGogPCAxNjsgKytqKSB3b3Jkc1tqXSA9IHRoaXMuX2Jsb2NrLnJlYWRJbnQzMkxFKGogKiA0KVxuXG4gIHZhciBhbCA9IHRoaXMuX2EgfCAwXG4gIHZhciBibCA9IHRoaXMuX2IgfCAwXG4gIHZhciBjbCA9IHRoaXMuX2MgfCAwXG4gIHZhciBkbCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlbCA9IHRoaXMuX2UgfCAwXG5cbiAgdmFyIGFyID0gdGhpcy5fYSB8IDBcbiAgdmFyIGJyID0gdGhpcy5fYiB8IDBcbiAgdmFyIGNyID0gdGhpcy5fYyB8IDBcbiAgdmFyIGRyID0gdGhpcy5fZCB8IDBcbiAgdmFyIGVyID0gdGhpcy5fZSB8IDBcblxuICAvLyBjb21wdXRhdGlvblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDgwOyBpICs9IDEpIHtcbiAgICB2YXIgdGxcbiAgICB2YXIgdHJcbiAgICBpZiAoaSA8IDE2KSB7XG4gICAgICB0bCA9IGZuMShhbCwgYmwsIGNsLCBkbCwgZWwsIHdvcmRzW3psW2ldXSwgaGxbMF0sIHNsW2ldKVxuICAgICAgdHIgPSBmbjUoYXIsIGJyLCBjciwgZHIsIGVyLCB3b3Jkc1t6cltpXV0sIGhyWzBdLCBzcltpXSlcbiAgICB9IGVsc2UgaWYgKGkgPCAzMikge1xuICAgICAgdGwgPSBmbjIoYWwsIGJsLCBjbCwgZGwsIGVsLCB3b3Jkc1t6bFtpXV0sIGhsWzFdLCBzbFtpXSlcbiAgICAgIHRyID0gZm40KGFyLCBiciwgY3IsIGRyLCBlciwgd29yZHNbenJbaV1dLCBoclsxXSwgc3JbaV0pXG4gICAgfSBlbHNlIGlmIChpIDwgNDgpIHtcbiAgICAgIHRsID0gZm4zKGFsLCBibCwgY2wsIGRsLCBlbCwgd29yZHNbemxbaV1dLCBobFsyXSwgc2xbaV0pXG4gICAgICB0ciA9IGZuMyhhciwgYnIsIGNyLCBkciwgZXIsIHdvcmRzW3pyW2ldXSwgaHJbMl0sIHNyW2ldKVxuICAgIH0gZWxzZSBpZiAoaSA8IDY0KSB7XG4gICAgICB0bCA9IGZuNChhbCwgYmwsIGNsLCBkbCwgZWwsIHdvcmRzW3psW2ldXSwgaGxbM10sIHNsW2ldKVxuICAgICAgdHIgPSBmbjIoYXIsIGJyLCBjciwgZHIsIGVyLCB3b3Jkc1t6cltpXV0sIGhyWzNdLCBzcltpXSlcbiAgICB9IGVsc2UgeyAvLyBpZiAoaTw4MCkge1xuICAgICAgdGwgPSBmbjUoYWwsIGJsLCBjbCwgZGwsIGVsLCB3b3Jkc1t6bFtpXV0sIGhsWzRdLCBzbFtpXSlcbiAgICAgIHRyID0gZm4xKGFyLCBiciwgY3IsIGRyLCBlciwgd29yZHNbenJbaV1dLCBocls0XSwgc3JbaV0pXG4gICAgfVxuXG4gICAgYWwgPSBlbFxuICAgIGVsID0gZGxcbiAgICBkbCA9IHJvdGwoY2wsIDEwKVxuICAgIGNsID0gYmxcbiAgICBibCA9IHRsXG5cbiAgICBhciA9IGVyXG4gICAgZXIgPSBkclxuICAgIGRyID0gcm90bChjciwgMTApXG4gICAgY3IgPSBiclxuICAgIGJyID0gdHJcbiAgfVxuXG4gIC8vIHVwZGF0ZSBzdGF0ZVxuICB2YXIgdCA9ICh0aGlzLl9iICsgY2wgKyBkcikgfCAwXG4gIHRoaXMuX2IgPSAodGhpcy5fYyArIGRsICsgZXIpIHwgMFxuICB0aGlzLl9jID0gKHRoaXMuX2QgKyBlbCArIGFyKSB8IDBcbiAgdGhpcy5fZCA9ICh0aGlzLl9lICsgYWwgKyBicikgfCAwXG4gIHRoaXMuX2UgPSAodGhpcy5fYSArIGJsICsgY3IpIHwgMFxuICB0aGlzLl9hID0gdFxufVxuXG5SSVBFTUQxNjAucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIGNyZWF0ZSBwYWRkaW5nIGFuZCBoYW5kbGUgYmxvY2tzXG4gIHRoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdID0gMHg4MFxuICBpZiAodGhpcy5fYmxvY2tPZmZzZXQgPiA1Nikge1xuICAgIHRoaXMuX2Jsb2NrLmZpbGwoMCwgdGhpcy5fYmxvY2tPZmZzZXQsIDY0KVxuICAgIHRoaXMuX3VwZGF0ZSgpXG4gICAgdGhpcy5fYmxvY2tPZmZzZXQgPSAwXG4gIH1cblxuICB0aGlzLl9ibG9jay5maWxsKDAsIHRoaXMuX2Jsb2NrT2Zmc2V0LCA1NilcbiAgdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMF0sIDU2KVxuICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFsxXSwgNjApXG4gIHRoaXMuX3VwZGF0ZSgpXG5cbiAgLy8gcHJvZHVjZSByZXN1bHRcbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyA/IEJ1ZmZlci5hbGxvYygyMCkgOiBuZXcgQnVmZmVyKDIwKVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2EsIDApXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fYiwgNClcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9jLCA4KVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2QsIDEyKVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2UsIDE2KVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIHJvdGwgKHgsIG4pIHtcbiAgcmV0dXJuICh4IDw8IG4pIHwgKHggPj4+ICgzMiAtIG4pKVxufVxuXG5mdW5jdGlvbiBmbjEgKGEsIGIsIGMsIGQsIGUsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKGIgXiBjIF4gZCkgKyBtICsgaykgfCAwLCBzKSArIGUpIHwgMFxufVxuXG5mdW5jdGlvbiBmbjIgKGEsIGIsIGMsIGQsIGUsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKChiICYgYykgfCAoKH5iKSAmIGQpKSArIG0gKyBrKSB8IDAsIHMpICsgZSkgfCAwXG59XG5cbmZ1bmN0aW9uIGZuMyAoYSwgYiwgYywgZCwgZSwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoKGIgfCAofmMpKSBeIGQpICsgbSArIGspIHwgMCwgcykgKyBlKSB8IDBcbn1cblxuZnVuY3Rpb24gZm40IChhLCBiLCBjLCBkLCBlLCBtLCBrLCBzKSB7XG4gIHJldHVybiAocm90bCgoYSArICgoYiAmIGQpIHwgKGMgJiAofmQpKSkgKyBtICsgaykgfCAwLCBzKSArIGUpIHwgMFxufVxuXG5mdW5jdGlvbiBmbjUgKGEsIGIsIGMsIGQsIGUsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKGIgXiAoYyB8ICh+ZCkpKSArIG0gKyBrKSB8IDAsIHMpICsgZSkgfCAwXG59XG5cbm1vZHVsZS5leHBvcnRzID0gUklQRU1EMTYwXG4iLCIvKiEgc2FmZS1idWZmZXIuIE1JVCBMaWNlbnNlLiBGZXJvc3MgQWJvdWtoYWRpamVoIDxodHRwczovL2Zlcm9zcy5vcmcvb3BlbnNvdXJjZT4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vZGUvbm8tZGVwcmVjYXRlZC1hcGkgKi9cbnZhciBidWZmZXIgPSByZXF1aXJlKCdidWZmZXInKVxudmFyIEJ1ZmZlciA9IGJ1ZmZlci5CdWZmZXJcblxuLy8gYWx0ZXJuYXRpdmUgdG8gdXNpbmcgT2JqZWN0LmtleXMgZm9yIG9sZCBicm93c2Vyc1xuZnVuY3Rpb24gY29weVByb3BzIChzcmMsIGRzdCkge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgZHN0W2tleV0gPSBzcmNba2V5XVxuICB9XG59XG5pZiAoQnVmZmVyLmZyb20gJiYgQnVmZmVyLmFsbG9jICYmIEJ1ZmZlci5hbGxvY1Vuc2FmZSAmJiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KSB7XG4gIG1vZHVsZS5leHBvcnRzID0gYnVmZmVyXG59IGVsc2Uge1xuICAvLyBDb3B5IHByb3BlcnRpZXMgZnJvbSByZXF1aXJlKCdidWZmZXInKVxuICBjb3B5UHJvcHMoYnVmZmVyLCBleHBvcnRzKVxuICBleHBvcnRzLkJ1ZmZlciA9IFNhZmVCdWZmZXJcbn1cblxuZnVuY3Rpb24gU2FmZUJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuU2FmZUJ1ZmZlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEJ1ZmZlci5wcm90b3R5cGUpXG5cbi8vIENvcHkgc3RhdGljIG1ldGhvZHMgZnJvbSBCdWZmZXJcbmNvcHlQcm9wcyhCdWZmZXIsIFNhZmVCdWZmZXIpXG5cblNhZmVCdWZmZXIuZnJvbSA9IGZ1bmN0aW9uIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuU2FmZUJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgdmFyIGJ1ZiA9IEJ1ZmZlcihzaXplKVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgIH0gZWxzZSB7XG4gICAgICBidWYuZmlsbChmaWxsKVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBidWYuZmlsbCgwKVxuICB9XG4gIHJldHVybiBidWZcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKHNpemUpXG59XG5cblNhZmVCdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBidWZmZXIuU2xvd0J1ZmZlcihzaXplKVxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgbm9kZS9uby1kZXByZWNhdGVkLWFwaSAqL1xuXG4ndXNlIHN0cmljdCdcblxudmFyIGJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpXG52YXIgQnVmZmVyID0gYnVmZmVyLkJ1ZmZlclxuXG52YXIgc2FmZXIgPSB7fVxuXG52YXIga2V5XG5cbmZvciAoa2V5IGluIGJ1ZmZlcikge1xuICBpZiAoIWJ1ZmZlci5oYXNPd25Qcm9wZXJ0eShrZXkpKSBjb250aW51ZVxuICBpZiAoa2V5ID09PSAnU2xvd0J1ZmZlcicgfHwga2V5ID09PSAnQnVmZmVyJykgY29udGludWVcbiAgc2FmZXJba2V5XSA9IGJ1ZmZlcltrZXldXG59XG5cbnZhciBTYWZlciA9IHNhZmVyLkJ1ZmZlciA9IHt9XG5mb3IgKGtleSBpbiBCdWZmZXIpIHtcbiAgaWYgKCFCdWZmZXIuaGFzT3duUHJvcGVydHkoa2V5KSkgY29udGludWVcbiAgaWYgKGtleSA9PT0gJ2FsbG9jVW5zYWZlJyB8fCBrZXkgPT09ICdhbGxvY1Vuc2FmZVNsb3cnKSBjb250aW51ZVxuICBTYWZlcltrZXldID0gQnVmZmVyW2tleV1cbn1cblxuc2FmZXIuQnVmZmVyLnByb3RvdHlwZSA9IEJ1ZmZlci5wcm90b3R5cGVcblxuaWYgKCFTYWZlci5mcm9tIHx8IFNhZmVyLmZyb20gPT09IFVpbnQ4QXJyYXkuZnJvbSkge1xuICBTYWZlci5mcm9tID0gZnVuY3Rpb24gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwidmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIHZhbHVlKVxuICAgIH1cbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlLmxlbmd0aCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiB0eXBlIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIEFycmF5LWxpa2UgT2JqZWN0LiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgdmFsdWUpXG4gICAgfVxuICAgIHJldHVybiBCdWZmZXIodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbiAgfVxufVxuXG5pZiAoIVNhZmVyLmFsbG9jKSB7XG4gIFNhZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gICAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwic2l6ZVwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBudW1iZXIuIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiBzaXplKVxuICAgIH1cbiAgICBpZiAoc2l6ZSA8IDAgfHwgc2l6ZSA+PSAyICogKDEgPDwgMzApKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIFwiJyArIHNpemUgKyAnXCIgaXMgaW52YWxpZCBmb3Igb3B0aW9uIFwic2l6ZVwiJylcbiAgICB9XG4gICAgdmFyIGJ1ZiA9IEJ1ZmZlcihzaXplKVxuICAgIGlmICghZmlsbCB8fCBmaWxsLmxlbmd0aCA9PT0gMCkge1xuICAgICAgYnVmLmZpbGwoMClcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgIH0gZWxzZSB7XG4gICAgICBidWYuZmlsbChmaWxsKVxuICAgIH1cbiAgICByZXR1cm4gYnVmXG4gIH1cbn1cblxuaWYgKCFzYWZlci5rU3RyaW5nTWF4TGVuZ3RoKSB7XG4gIHRyeSB7XG4gICAgc2FmZXIua1N0cmluZ01heExlbmd0aCA9IHByb2Nlc3MuYmluZGluZygnYnVmZmVyJykua1N0cmluZ01heExlbmd0aFxuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gd2UgY2FuJ3QgZGV0ZXJtaW5lIGtTdHJpbmdNYXhMZW5ndGggaW4gZW52aXJvbm1lbnRzIHdoZXJlIHByb2Nlc3MuYmluZGluZ1xuICAgIC8vIGlzIHVuc3VwcG9ydGVkLCBzbyBsZXQncyBub3Qgc2V0IGl0XG4gIH1cbn1cblxuaWYgKCFzYWZlci5jb25zdGFudHMpIHtcbiAgc2FmZXIuY29uc3RhbnRzID0ge1xuICAgIE1BWF9MRU5HVEg6IHNhZmVyLmtNYXhMZW5ndGhcbiAgfVxuICBpZiAoc2FmZXIua1N0cmluZ01heExlbmd0aCkge1xuICAgIHNhZmVyLmNvbnN0YW50cy5NQVhfU1RSSU5HX0xFTkdUSCA9IHNhZmVyLmtTdHJpbmdNYXhMZW5ndGhcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNhZmVyXG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxuLy8gcHJvdG90eXBlIGNsYXNzIGZvciBoYXNoIGZ1bmN0aW9uc1xuZnVuY3Rpb24gSGFzaCAoYmxvY2tTaXplLCBmaW5hbFNpemUpIHtcbiAgdGhpcy5fYmxvY2sgPSBCdWZmZXIuYWxsb2MoYmxvY2tTaXplKVxuICB0aGlzLl9maW5hbFNpemUgPSBmaW5hbFNpemVcbiAgdGhpcy5fYmxvY2tTaXplID0gYmxvY2tTaXplXG4gIHRoaXMuX2xlbiA9IDBcbn1cblxuSGFzaC5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jID0gZW5jIHx8ICd1dGY4J1xuICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBlbmMpXG4gIH1cblxuICB2YXIgYmxvY2sgPSB0aGlzLl9ibG9ja1xuICB2YXIgYmxvY2tTaXplID0gdGhpcy5fYmxvY2tTaXplXG4gIHZhciBsZW5ndGggPSBkYXRhLmxlbmd0aFxuICB2YXIgYWNjdW0gPSB0aGlzLl9sZW5cblxuICBmb3IgKHZhciBvZmZzZXQgPSAwOyBvZmZzZXQgPCBsZW5ndGg7KSB7XG4gICAgdmFyIGFzc2lnbmVkID0gYWNjdW0gJSBibG9ja1NpemVcbiAgICB2YXIgcmVtYWluZGVyID0gTWF0aC5taW4obGVuZ3RoIC0gb2Zmc2V0LCBibG9ja1NpemUgLSBhc3NpZ25lZClcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVtYWluZGVyOyBpKyspIHtcbiAgICAgIGJsb2NrW2Fzc2lnbmVkICsgaV0gPSBkYXRhW29mZnNldCArIGldXG4gICAgfVxuXG4gICAgYWNjdW0gKz0gcmVtYWluZGVyXG4gICAgb2Zmc2V0ICs9IHJlbWFpbmRlclxuXG4gICAgaWYgKChhY2N1bSAlIGJsb2NrU2l6ZSkgPT09IDApIHtcbiAgICAgIHRoaXMuX3VwZGF0ZShibG9jaylcbiAgICB9XG4gIH1cblxuICB0aGlzLl9sZW4gKz0gbGVuZ3RoXG4gIHJldHVybiB0aGlzXG59XG5cbkhhc2gucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgdmFyIHJlbSA9IHRoaXMuX2xlbiAlIHRoaXMuX2Jsb2NrU2l6ZVxuXG4gIHRoaXMuX2Jsb2NrW3JlbV0gPSAweDgwXG5cbiAgLy8gemVybyAocmVtICsgMSkgdHJhaWxpbmcgYml0cywgd2hlcmUgKHJlbSArIDEpIGlzIHRoZSBzbWFsbGVzdFxuICAvLyBub24tbmVnYXRpdmUgc29sdXRpb24gdG8gdGhlIGVxdWF0aW9uIChsZW5ndGggKyAxICsgKHJlbSArIDEpKSA9PT0gZmluYWxTaXplIG1vZCBibG9ja1NpemVcbiAgdGhpcy5fYmxvY2suZmlsbCgwLCByZW0gKyAxKVxuXG4gIGlmIChyZW0gPj0gdGhpcy5fZmluYWxTaXplKSB7XG4gICAgdGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKVxuICAgIHRoaXMuX2Jsb2NrLmZpbGwoMClcbiAgfVxuXG4gIHZhciBiaXRzID0gdGhpcy5fbGVuICogOFxuXG4gIC8vIHVpbnQzMlxuICBpZiAoYml0cyA8PSAweGZmZmZmZmZmKSB7XG4gICAgdGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRShiaXRzLCB0aGlzLl9ibG9ja1NpemUgLSA0KVxuXG4gIC8vIHVpbnQ2NFxuICB9IGVsc2Uge1xuICAgIHZhciBsb3dCaXRzID0gKGJpdHMgJiAweGZmZmZmZmZmKSA+Pj4gMFxuICAgIHZhciBoaWdoQml0cyA9IChiaXRzIC0gbG93Qml0cykgLyAweDEwMDAwMDAwMFxuXG4gICAgdGhpcy5fYmxvY2sud3JpdGVVSW50MzJCRShoaWdoQml0cywgdGhpcy5fYmxvY2tTaXplIC0gOClcbiAgICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKGxvd0JpdHMsIHRoaXMuX2Jsb2NrU2l6ZSAtIDQpXG4gIH1cblxuICB0aGlzLl91cGRhdGUodGhpcy5fYmxvY2spXG4gIHZhciBoYXNoID0gdGhpcy5faGFzaCgpXG5cbiAgcmV0dXJuIGVuYyA/IGhhc2gudG9TdHJpbmcoZW5jKSA6IGhhc2hcbn1cblxuSGFzaC5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdfdXBkYXRlIG11c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3MnKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2hcbiIsInZhciBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBTSEEgKGFsZ29yaXRobSkge1xuICBhbGdvcml0aG0gPSBhbGdvcml0aG0udG9Mb3dlckNhc2UoKVxuXG4gIHZhciBBbGdvcml0aG0gPSBleHBvcnRzW2FsZ29yaXRobV1cbiAgaWYgKCFBbGdvcml0aG0pIHRocm93IG5ldyBFcnJvcihhbGdvcml0aG0gKyAnIGlzIG5vdCBzdXBwb3J0ZWQgKHdlIGFjY2VwdCBwdWxsIHJlcXVlc3RzKScpXG5cbiAgcmV0dXJuIG5ldyBBbGdvcml0aG0oKVxufVxuXG5leHBvcnRzLnNoYSA9IHJlcXVpcmUoJy4vc2hhJylcbmV4cG9ydHMuc2hhMSA9IHJlcXVpcmUoJy4vc2hhMScpXG5leHBvcnRzLnNoYTIyNCA9IHJlcXVpcmUoJy4vc2hhMjI0JylcbmV4cG9ydHMuc2hhMjU2ID0gcmVxdWlyZSgnLi9zaGEyNTYnKVxuZXhwb3J0cy5zaGEzODQgPSByZXF1aXJlKCcuL3NoYTM4NCcpXG5leHBvcnRzLnNoYTUxMiA9IHJlcXVpcmUoJy4vc2hhNTEyJylcbiIsIi8qXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTAsIGFzIGRlZmluZWRcbiAqIGluIEZJUFMgUFVCIDE4MC0xXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGRlcml2ZWQgZnJvbSBzaGExLmpzIG9mIHRoZSBzYW1lIHJlcG9zaXRvcnkuXG4gKiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFNIQS0wIGFuZCBTSEEtMSBpcyBqdXN0IGEgYml0d2lzZSByb3RhdGUgbGVmdFxuICogb3BlcmF0aW9uIHdhcyBhZGRlZC5cbiAqL1xuXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIEsgPSBbXG4gIDB4NWE4Mjc5OTksIDB4NmVkOWViYTEsIDB4OGYxYmJjZGMgfCAwLCAweGNhNjJjMWQ2IHwgMFxuXVxuXG52YXIgVyA9IG5ldyBBcnJheSg4MClcblxuZnVuY3Rpb24gU2hhICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgNjQsIDU2KVxufVxuXG5pbmhlcml0cyhTaGEsIEhhc2gpXG5cblNoYS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYSA9IDB4Njc0NTIzMDFcbiAgdGhpcy5fYiA9IDB4ZWZjZGFiODlcbiAgdGhpcy5fYyA9IDB4OThiYWRjZmVcbiAgdGhpcy5fZCA9IDB4MTAzMjU0NzZcbiAgdGhpcy5fZSA9IDB4YzNkMmUxZjBcblxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiByb3RsNSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDUpIHwgKG51bSA+Pj4gMjcpXG59XG5cbmZ1bmN0aW9uIHJvdGwzMCAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDMwKSB8IChudW0gPj4+IDIpXG59XG5cbmZ1bmN0aW9uIGZ0IChzLCBiLCBjLCBkKSB7XG4gIGlmIChzID09PSAwKSByZXR1cm4gKGIgJiBjKSB8ICgofmIpICYgZClcbiAgaWYgKHMgPT09IDIpIHJldHVybiAoYiAmIGMpIHwgKGIgJiBkKSB8IChjICYgZClcbiAgcmV0dXJuIGIgXiBjIF4gZFxufVxuXG5TaGEucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYSA9IHRoaXMuX2EgfCAwXG4gIHZhciBiID0gdGhpcy5fYiB8IDBcbiAgdmFyIGMgPSB0aGlzLl9jIHwgMFxuICB2YXIgZCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlID0gdGhpcy5fZSB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICBmb3IgKDsgaSA8IDgwOyArK2kpIFdbaV0gPSBXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4MDsgKytqKSB7XG4gICAgdmFyIHMgPSB+fihqIC8gMjApXG4gICAgdmFyIHQgPSAocm90bDUoYSkgKyBmdChzLCBiLCBjLCBkKSArIGUgKyBXW2pdICsgS1tzXSkgfCAwXG5cbiAgICBlID0gZFxuICAgIGQgPSBjXG4gICAgYyA9IHJvdGwzMChiKVxuICAgIGIgPSBhXG4gICAgYSA9IHRcbiAgfVxuXG4gIHRoaXMuX2EgPSAoYSArIHRoaXMuX2EpIHwgMFxuICB0aGlzLl9iID0gKGIgKyB0aGlzLl9iKSB8IDBcbiAgdGhpcy5fYyA9IChjICsgdGhpcy5fYykgfCAwXG4gIHRoaXMuX2QgPSAoZCArIHRoaXMuX2QpIHwgMFxuICB0aGlzLl9lID0gKGUgKyB0aGlzLl9lKSB8IDBcbn1cblxuU2hhLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBCdWZmZXIuYWxsb2NVbnNhZmUoMjApXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSB8IDAsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IgfCAwLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jIHwgMCwgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCB8IDAsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lIHwgMCwgMTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGFcbiIsIi8qXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTEsIGFzIGRlZmluZWRcbiAqIGluIEZJUFMgUFVCIDE4MC0xXG4gKiBWZXJzaW9uIDIuMWEgQ29weXJpZ2h0IFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDIuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2VcbiAqIFNlZSBodHRwOi8vcGFqaG9tZS5vcmcudWsvY3J5cHQvbWQ1IGZvciBkZXRhaWxzLlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgSyA9IFtcbiAgMHg1YTgyNzk5OSwgMHg2ZWQ5ZWJhMSwgMHg4ZjFiYmNkYyB8IDAsIDB4Y2E2MmMxZDYgfCAwXG5dXG5cbnZhciBXID0gbmV3IEFycmF5KDgwKVxuXG5mdW5jdGlvbiBTaGExICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgNjQsIDU2KVxufVxuXG5pbmhlcml0cyhTaGExLCBIYXNoKVxuXG5TaGExLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2NzQ1MjMwMVxuICB0aGlzLl9iID0gMHhlZmNkYWI4OVxuICB0aGlzLl9jID0gMHg5OGJhZGNmZVxuICB0aGlzLl9kID0gMHgxMDMyNTQ3NlxuICB0aGlzLl9lID0gMHhjM2QyZTFmMFxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIHJvdGwxIChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgMSkgfCAobnVtID4+PiAzMSlcbn1cblxuZnVuY3Rpb24gcm90bDUgKG51bSkge1xuICByZXR1cm4gKG51bSA8PCA1KSB8IChudW0gPj4+IDI3KVxufVxuXG5mdW5jdGlvbiByb3RsMzAgKG51bSkge1xuICByZXR1cm4gKG51bSA8PCAzMCkgfCAobnVtID4+PiAyKVxufVxuXG5mdW5jdGlvbiBmdCAocywgYiwgYywgZCkge1xuICBpZiAocyA9PT0gMCkgcmV0dXJuIChiICYgYykgfCAoKH5iKSAmIGQpXG4gIGlmIChzID09PSAyKSByZXR1cm4gKGIgJiBjKSB8IChiICYgZCkgfCAoYyAmIGQpXG4gIHJldHVybiBiIF4gYyBeIGRcbn1cblxuU2hhMS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBXID0gdGhpcy5fd1xuXG4gIHZhciBhID0gdGhpcy5fYSB8IDBcbiAgdmFyIGIgPSB0aGlzLl9iIHwgMFxuICB2YXIgYyA9IHRoaXMuX2MgfCAwXG4gIHZhciBkID0gdGhpcy5fZCB8IDBcbiAgdmFyIGUgPSB0aGlzLl9lIHwgMFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgV1tpXSA9IE0ucmVhZEludDMyQkUoaSAqIDQpXG4gIGZvciAoOyBpIDwgODA7ICsraSkgV1tpXSA9IHJvdGwxKFdbaSAtIDNdIF4gV1tpIC0gOF0gXiBXW2kgLSAxNF0gXiBXW2kgLSAxNl0pXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4MDsgKytqKSB7XG4gICAgdmFyIHMgPSB+fihqIC8gMjApXG4gICAgdmFyIHQgPSAocm90bDUoYSkgKyBmdChzLCBiLCBjLCBkKSArIGUgKyBXW2pdICsgS1tzXSkgfCAwXG5cbiAgICBlID0gZFxuICAgIGQgPSBjXG4gICAgYyA9IHJvdGwzMChiKVxuICAgIGIgPSBhXG4gICAgYSA9IHRcbiAgfVxuXG4gIHRoaXMuX2EgPSAoYSArIHRoaXMuX2EpIHwgMFxuICB0aGlzLl9iID0gKGIgKyB0aGlzLl9iKSB8IDBcbiAgdGhpcy5fYyA9IChjICsgdGhpcy5fYykgfCAwXG4gIHRoaXMuX2QgPSAoZCArIHRoaXMuX2QpIHwgMFxuICB0aGlzLl9lID0gKGUgKyB0aGlzLl9lKSB8IDBcbn1cblxuU2hhMS5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gQnVmZmVyLmFsbG9jVW5zYWZlKDIwKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EgfCAwLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iIHwgMCwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYyB8IDAsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QgfCAwLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSB8IDAsIDE2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMVxuIiwiLyoqXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTI1NiwgYXMgZGVmaW5lZFxuICogaW4gRklQUyAxODAtMlxuICogVmVyc2lvbiAyLjItYmV0YSBDb3B5cmlnaHQgQW5nZWwgTWFyaW4sIFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDkuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBTaGEyNTYgPSByZXF1aXJlKCcuL3NoYTI1NicpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIFcgPSBuZXcgQXJyYXkoNjQpXG5cbmZ1bmN0aW9uIFNoYTIyNCAoKSB7XG4gIHRoaXMuaW5pdCgpXG5cbiAgdGhpcy5fdyA9IFcgLy8gbmV3IEFycmF5KDY0KVxuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTIyNCwgU2hhMjU2KVxuXG5TaGEyMjQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweGMxMDU5ZWQ4XG4gIHRoaXMuX2IgPSAweDM2N2NkNTA3XG4gIHRoaXMuX2MgPSAweDMwNzBkZDE3XG4gIHRoaXMuX2QgPSAweGY3MGU1OTM5XG4gIHRoaXMuX2UgPSAweGZmYzAwYjMxXG4gIHRoaXMuX2YgPSAweDY4NTgxNTExXG4gIHRoaXMuX2cgPSAweDY0Zjk4ZmE3XG4gIHRoaXMuX2ggPSAweGJlZmE0ZmE0XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuU2hhMjI0LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBCdWZmZXIuYWxsb2NVbnNhZmUoMjgpXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSwgMClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYiwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYywgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCwgMTIpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2UsIDE2KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9mLCAyMClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZywgMjQpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGEyMjRcbiIsIi8qKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgSGFzaCBBbGdvcml0aG0sIFNIQS0yNTYsIGFzIGRlZmluZWRcbiAqIGluIEZJUFMgMTgwLTJcbiAqIFZlcnNpb24gMi4yLWJldGEgQ29weXJpZ2h0IEFuZ2VsIE1hcmluLCBQYXVsIEpvaG5zdG9uIDIwMDAgLSAyMDA5LlxuICogT3RoZXIgY29udHJpYnV0b3JzOiBHcmVnIEhvbHQsIEFuZHJldyBLZXBlcnQsIFlkbmFyLCBMb3N0aW5ldFxuICpcbiAqL1xuXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIEsgPSBbXG4gIDB4NDI4QTJGOTgsIDB4NzEzNzQ0OTEsIDB4QjVDMEZCQ0YsIDB4RTlCNURCQTUsXG4gIDB4Mzk1NkMyNUIsIDB4NTlGMTExRjEsIDB4OTIzRjgyQTQsIDB4QUIxQzVFRDUsXG4gIDB4RDgwN0FBOTgsIDB4MTI4MzVCMDEsIDB4MjQzMTg1QkUsIDB4NTUwQzdEQzMsXG4gIDB4NzJCRTVENzQsIDB4ODBERUIxRkUsIDB4OUJEQzA2QTcsIDB4QzE5QkYxNzQsXG4gIDB4RTQ5QjY5QzEsIDB4RUZCRTQ3ODYsIDB4MEZDMTlEQzYsIDB4MjQwQ0ExQ0MsXG4gIDB4MkRFOTJDNkYsIDB4NEE3NDg0QUEsIDB4NUNCMEE5REMsIDB4NzZGOTg4REEsXG4gIDB4OTgzRTUxNTIsIDB4QTgzMUM2NkQsIDB4QjAwMzI3QzgsIDB4QkY1OTdGQzcsXG4gIDB4QzZFMDBCRjMsIDB4RDVBNzkxNDcsIDB4MDZDQTYzNTEsIDB4MTQyOTI5NjcsXG4gIDB4MjdCNzBBODUsIDB4MkUxQjIxMzgsIDB4NEQyQzZERkMsIDB4NTMzODBEMTMsXG4gIDB4NjUwQTczNTQsIDB4NzY2QTBBQkIsIDB4ODFDMkM5MkUsIDB4OTI3MjJDODUsXG4gIDB4QTJCRkU4QTEsIDB4QTgxQTY2NEIsIDB4QzI0QjhCNzAsIDB4Qzc2QzUxQTMsXG4gIDB4RDE5MkU4MTksIDB4RDY5OTA2MjQsIDB4RjQwRTM1ODUsIDB4MTA2QUEwNzAsXG4gIDB4MTlBNEMxMTYsIDB4MUUzNzZDMDgsIDB4Mjc0ODc3NEMsIDB4MzRCMEJDQjUsXG4gIDB4MzkxQzBDQjMsIDB4NEVEOEFBNEEsIDB4NUI5Q0NBNEYsIDB4NjgyRTZGRjMsXG4gIDB4NzQ4RjgyRUUsIDB4NzhBNTYzNkYsIDB4ODRDODc4MTQsIDB4OENDNzAyMDgsXG4gIDB4OTBCRUZGRkEsIDB4QTQ1MDZDRUIsIDB4QkVGOUEzRjcsIDB4QzY3MTc4RjJcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoNjQpXG5cbmZ1bmN0aW9uIFNoYTI1NiAoKSB7XG4gIHRoaXMuaW5pdCgpXG5cbiAgdGhpcy5fdyA9IFcgLy8gbmV3IEFycmF5KDY0KVxuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTI1NiwgSGFzaClcblxuU2hhMjU2LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2YTA5ZTY2N1xuICB0aGlzLl9iID0gMHhiYjY3YWU4NVxuICB0aGlzLl9jID0gMHgzYzZlZjM3MlxuICB0aGlzLl9kID0gMHhhNTRmZjUzYVxuICB0aGlzLl9lID0gMHg1MTBlNTI3ZlxuICB0aGlzLl9mID0gMHg5YjA1Njg4Y1xuICB0aGlzLl9nID0gMHgxZjgzZDlhYlxuICB0aGlzLl9oID0gMHg1YmUwY2QxOVxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIGNoICh4LCB5LCB6KSB7XG4gIHJldHVybiB6IF4gKHggJiAoeSBeIHopKVxufVxuXG5mdW5jdGlvbiBtYWogKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgfCAoeiAmICh4IHwgeSkpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDIgfCB4IDw8IDMwKSBeICh4ID4+PiAxMyB8IHggPDwgMTkpIF4gKHggPj4+IDIyIHwgeCA8PCAxMClcbn1cblxuZnVuY3Rpb24gc2lnbWExICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gNiB8IHggPDwgMjYpIF4gKHggPj4+IDExIHwgeCA8PCAyMSkgXiAoeCA+Pj4gMjUgfCB4IDw8IDcpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDcgfCB4IDw8IDI1KSBeICh4ID4+PiAxOCB8IHggPDwgMTQpIF4gKHggPj4+IDMpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMSAoeCkge1xuICByZXR1cm4gKHggPj4+IDE3IHwgeCA8PCAxNSkgXiAoeCA+Pj4gMTkgfCB4IDw8IDEzKSBeICh4ID4+PiAxMClcbn1cblxuU2hhMjU2LnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG4gIHZhciBmID0gdGhpcy5fZiB8IDBcbiAgdmFyIGcgPSB0aGlzLl9nIHwgMFxuICB2YXIgaCA9IHRoaXMuX2ggfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA2NDsgKytpKSBXW2ldID0gKGdhbW1hMShXW2kgLSAyXSkgKyBXW2kgLSA3XSArIGdhbW1hMChXW2kgLSAxNV0pICsgV1tpIC0gMTZdKSB8IDBcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDY0OyArK2opIHtcbiAgICB2YXIgVDEgPSAoaCArIHNpZ21hMShlKSArIGNoKGUsIGYsIGcpICsgS1tqXSArIFdbal0pIHwgMFxuICAgIHZhciBUMiA9IChzaWdtYTAoYSkgKyBtYWooYSwgYiwgYykpIHwgMFxuXG4gICAgaCA9IGdcbiAgICBnID0gZlxuICAgIGYgPSBlXG4gICAgZSA9IChkICsgVDEpIHwgMFxuICAgIGQgPSBjXG4gICAgYyA9IGJcbiAgICBiID0gYVxuICAgIGEgPSAoVDEgKyBUMikgfCAwXG4gIH1cblxuICB0aGlzLl9hID0gKGEgKyB0aGlzLl9hKSB8IDBcbiAgdGhpcy5fYiA9IChiICsgdGhpcy5fYikgfCAwXG4gIHRoaXMuX2MgPSAoYyArIHRoaXMuX2MpIHwgMFxuICB0aGlzLl9kID0gKGQgKyB0aGlzLl9kKSB8IDBcbiAgdGhpcy5fZSA9IChlICsgdGhpcy5fZSkgfCAwXG4gIHRoaXMuX2YgPSAoZiArIHRoaXMuX2YpIHwgMFxuICB0aGlzLl9nID0gKGcgKyB0aGlzLl9nKSB8IDBcbiAgdGhpcy5faCA9IChoICsgdGhpcy5faCkgfCAwXG59XG5cblNoYTI1Ni5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gQnVmZmVyLmFsbG9jVW5zYWZlKDMyKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IsIDQpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2MsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lLCAxNilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZiwgMjApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2csIDI0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9oLCAyOClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTI1NlxuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIFNIQTUxMiA9IHJlcXVpcmUoJy4vc2hhNTEyJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgVyA9IG5ldyBBcnJheSgxNjApXG5cbmZ1bmN0aW9uIFNoYTM4NCAoKSB7XG4gIHRoaXMuaW5pdCgpXG4gIHRoaXMuX3cgPSBXXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDEyOCwgMTEyKVxufVxuXG5pbmhlcml0cyhTaGEzODQsIFNIQTUxMilcblxuU2hhMzg0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9haCA9IDB4Y2JiYjlkNWRcbiAgdGhpcy5fYmggPSAweDYyOWEyOTJhXG4gIHRoaXMuX2NoID0gMHg5MTU5MDE1YVxuICB0aGlzLl9kaCA9IDB4MTUyZmVjZDhcbiAgdGhpcy5fZWggPSAweDY3MzMyNjY3XG4gIHRoaXMuX2ZoID0gMHg4ZWI0NGE4N1xuICB0aGlzLl9naCA9IDB4ZGIwYzJlMGRcbiAgdGhpcy5faGggPSAweDQ3YjU0ODFkXG5cbiAgdGhpcy5fYWwgPSAweGMxMDU5ZWQ4XG4gIHRoaXMuX2JsID0gMHgzNjdjZDUwN1xuICB0aGlzLl9jbCA9IDB4MzA3MGRkMTdcbiAgdGhpcy5fZGwgPSAweGY3MGU1OTM5XG4gIHRoaXMuX2VsID0gMHhmZmMwMGIzMVxuICB0aGlzLl9mbCA9IDB4Njg1ODE1MTFcbiAgdGhpcy5fZ2wgPSAweDY0Zjk4ZmE3XG4gIHRoaXMuX2hsID0gMHhiZWZhNGZhNFxuXG4gIHJldHVybiB0aGlzXG59XG5cblNoYTM4NC5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gQnVmZmVyLmFsbG9jVW5zYWZlKDQ4KVxuXG4gIGZ1bmN0aW9uIHdyaXRlSW50NjRCRSAoaCwgbCwgb2Zmc2V0KSB7XG4gICAgSC53cml0ZUludDMyQkUoaCwgb2Zmc2V0KVxuICAgIEgud3JpdGVJbnQzMkJFKGwsIG9mZnNldCArIDQpXG4gIH1cblxuICB3cml0ZUludDY0QkUodGhpcy5fYWgsIHRoaXMuX2FsLCAwKVxuICB3cml0ZUludDY0QkUodGhpcy5fYmgsIHRoaXMuX2JsLCA4KVxuICB3cml0ZUludDY0QkUodGhpcy5fY2gsIHRoaXMuX2NsLCAxNilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2RoLCB0aGlzLl9kbCwgMjQpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9laCwgdGhpcy5fZWwsIDMyKVxuICB3cml0ZUludDY0QkUodGhpcy5fZmgsIHRoaXMuX2ZsLCA0MClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTM4NFxuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBLID0gW1xuICAweDQyOGEyZjk4LCAweGQ3MjhhZTIyLCAweDcxMzc0NDkxLCAweDIzZWY2NWNkLFxuICAweGI1YzBmYmNmLCAweGVjNGQzYjJmLCAweGU5YjVkYmE1LCAweDgxODlkYmJjLFxuICAweDM5NTZjMjViLCAweGYzNDhiNTM4LCAweDU5ZjExMWYxLCAweGI2MDVkMDE5LFxuICAweDkyM2Y4MmE0LCAweGFmMTk0ZjliLCAweGFiMWM1ZWQ1LCAweGRhNmQ4MTE4LFxuICAweGQ4MDdhYTk4LCAweGEzMDMwMjQyLCAweDEyODM1YjAxLCAweDQ1NzA2ZmJlLFxuICAweDI0MzE4NWJlLCAweDRlZTRiMjhjLCAweDU1MGM3ZGMzLCAweGQ1ZmZiNGUyLFxuICAweDcyYmU1ZDc0LCAweGYyN2I4OTZmLCAweDgwZGViMWZlLCAweDNiMTY5NmIxLFxuICAweDliZGMwNmE3LCAweDI1YzcxMjM1LCAweGMxOWJmMTc0LCAweGNmNjkyNjk0LFxuICAweGU0OWI2OWMxLCAweDllZjE0YWQyLCAweGVmYmU0Nzg2LCAweDM4NGYyNWUzLFxuICAweDBmYzE5ZGM2LCAweDhiOGNkNWI1LCAweDI0MGNhMWNjLCAweDc3YWM5YzY1LFxuICAweDJkZTkyYzZmLCAweDU5MmIwMjc1LCAweDRhNzQ4NGFhLCAweDZlYTZlNDgzLFxuICAweDVjYjBhOWRjLCAweGJkNDFmYmQ0LCAweDc2Zjk4OGRhLCAweDgzMTE1M2I1LFxuICAweDk4M2U1MTUyLCAweGVlNjZkZmFiLCAweGE4MzFjNjZkLCAweDJkYjQzMjEwLFxuICAweGIwMDMyN2M4LCAweDk4ZmIyMTNmLCAweGJmNTk3ZmM3LCAweGJlZWYwZWU0LFxuICAweGM2ZTAwYmYzLCAweDNkYTg4ZmMyLCAweGQ1YTc5MTQ3LCAweDkzMGFhNzI1LFxuICAweDA2Y2E2MzUxLCAweGUwMDM4MjZmLCAweDE0MjkyOTY3LCAweDBhMGU2ZTcwLFxuICAweDI3YjcwYTg1LCAweDQ2ZDIyZmZjLCAweDJlMWIyMTM4LCAweDVjMjZjOTI2LFxuICAweDRkMmM2ZGZjLCAweDVhYzQyYWVkLCAweDUzMzgwZDEzLCAweDlkOTViM2RmLFxuICAweDY1MGE3MzU0LCAweDhiYWY2M2RlLCAweDc2NmEwYWJiLCAweDNjNzdiMmE4LFxuICAweDgxYzJjOTJlLCAweDQ3ZWRhZWU2LCAweDkyNzIyYzg1LCAweDE0ODIzNTNiLFxuICAweGEyYmZlOGExLCAweDRjZjEwMzY0LCAweGE4MWE2NjRiLCAweGJjNDIzMDAxLFxuICAweGMyNGI4YjcwLCAweGQwZjg5NzkxLCAweGM3NmM1MWEzLCAweDA2NTRiZTMwLFxuICAweGQxOTJlODE5LCAweGQ2ZWY1MjE4LCAweGQ2OTkwNjI0LCAweDU1NjVhOTEwLFxuICAweGY0MGUzNTg1LCAweDU3NzEyMDJhLCAweDEwNmFhMDcwLCAweDMyYmJkMWI4LFxuICAweDE5YTRjMTE2LCAweGI4ZDJkMGM4LCAweDFlMzc2YzA4LCAweDUxNDFhYjUzLFxuICAweDI3NDg3NzRjLCAweGRmOGVlYjk5LCAweDM0YjBiY2I1LCAweGUxOWI0OGE4LFxuICAweDM5MWMwY2IzLCAweGM1Yzk1YTYzLCAweDRlZDhhYTRhLCAweGUzNDE4YWNiLFxuICAweDViOWNjYTRmLCAweDc3NjNlMzczLCAweDY4MmU2ZmYzLCAweGQ2YjJiOGEzLFxuICAweDc0OGY4MmVlLCAweDVkZWZiMmZjLCAweDc4YTU2MzZmLCAweDQzMTcyZjYwLFxuICAweDg0Yzg3ODE0LCAweGExZjBhYjcyLCAweDhjYzcwMjA4LCAweDFhNjQzOWVjLFxuICAweDkwYmVmZmZhLCAweDIzNjMxZTI4LCAweGE0NTA2Y2ViLCAweGRlODJiZGU5LFxuICAweGJlZjlhM2Y3LCAweGIyYzY3OTE1LCAweGM2NzE3OGYyLCAweGUzNzI1MzJiLFxuICAweGNhMjczZWNlLCAweGVhMjY2MTljLCAweGQxODZiOGM3LCAweDIxYzBjMjA3LFxuICAweGVhZGE3ZGQ2LCAweGNkZTBlYjFlLCAweGY1N2Q0ZjdmLCAweGVlNmVkMTc4LFxuICAweDA2ZjA2N2FhLCAweDcyMTc2ZmJhLCAweDBhNjM3ZGM1LCAweGEyYzg5OGE2LFxuICAweDExM2Y5ODA0LCAweGJlZjkwZGFlLCAweDFiNzEwYjM1LCAweDEzMWM0NzFiLFxuICAweDI4ZGI3N2Y1LCAweDIzMDQ3ZDg0LCAweDMyY2FhYjdiLCAweDQwYzcyNDkzLFxuICAweDNjOWViZTBhLCAweDE1YzliZWJjLCAweDQzMWQ2N2M0LCAweDljMTAwZDRjLFxuICAweDRjYzVkNGJlLCAweGNiM2U0MmI2LCAweDU5N2YyOTljLCAweGZjNjU3ZTJhLFxuICAweDVmY2I2ZmFiLCAweDNhZDZmYWVjLCAweDZjNDQxOThjLCAweDRhNDc1ODE3XG5dXG5cbnZhciBXID0gbmV3IEFycmF5KDE2MClcblxuZnVuY3Rpb24gU2hhNTEyICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgMTI4LCAxMTIpXG59XG5cbmluaGVyaXRzKFNoYTUxMiwgSGFzaClcblxuU2hhNTEyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9haCA9IDB4NmEwOWU2NjdcbiAgdGhpcy5fYmggPSAweGJiNjdhZTg1XG4gIHRoaXMuX2NoID0gMHgzYzZlZjM3MlxuICB0aGlzLl9kaCA9IDB4YTU0ZmY1M2FcbiAgdGhpcy5fZWggPSAweDUxMGU1MjdmXG4gIHRoaXMuX2ZoID0gMHg5YjA1Njg4Y1xuICB0aGlzLl9naCA9IDB4MWY4M2Q5YWJcbiAgdGhpcy5faGggPSAweDViZTBjZDE5XG5cbiAgdGhpcy5fYWwgPSAweGYzYmNjOTA4XG4gIHRoaXMuX2JsID0gMHg4NGNhYTczYlxuICB0aGlzLl9jbCA9IDB4ZmU5NGY4MmJcbiAgdGhpcy5fZGwgPSAweDVmMWQzNmYxXG4gIHRoaXMuX2VsID0gMHhhZGU2ODJkMVxuICB0aGlzLl9mbCA9IDB4MmIzZTZjMWZcbiAgdGhpcy5fZ2wgPSAweGZiNDFiZDZiXG4gIHRoaXMuX2hsID0gMHgxMzdlMjE3OVxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIENoICh4LCB5LCB6KSB7XG4gIHJldHVybiB6IF4gKHggJiAoeSBeIHopKVxufVxuXG5mdW5jdGlvbiBtYWogKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgfCAoeiAmICh4IHwgeSkpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAyOCB8IHhsIDw8IDQpIF4gKHhsID4+PiAyIHwgeCA8PCAzMCkgXiAoeGwgPj4+IDcgfCB4IDw8IDI1KVxufVxuXG5mdW5jdGlvbiBzaWdtYTEgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMTQgfCB4bCA8PCAxOCkgXiAoeCA+Pj4gMTggfCB4bCA8PCAxNCkgXiAoeGwgPj4+IDkgfCB4IDw8IDIzKVxufVxuXG5mdW5jdGlvbiBHYW1tYTAgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMSB8IHhsIDw8IDMxKSBeICh4ID4+PiA4IHwgeGwgPDwgMjQpIF4gKHggPj4+IDcpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMGwgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMSB8IHhsIDw8IDMxKSBeICh4ID4+PiA4IHwgeGwgPDwgMjQpIF4gKHggPj4+IDcgfCB4bCA8PCAyNSlcbn1cblxuZnVuY3Rpb24gR2FtbWExICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDE5IHwgeGwgPDwgMTMpIF4gKHhsID4+PiAyOSB8IHggPDwgMykgXiAoeCA+Pj4gNilcbn1cblxuZnVuY3Rpb24gR2FtbWExbCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxOSB8IHhsIDw8IDEzKSBeICh4bCA+Pj4gMjkgfCB4IDw8IDMpIF4gKHggPj4+IDYgfCB4bCA8PCAyNilcbn1cblxuZnVuY3Rpb24gZ2V0Q2FycnkgKGEsIGIpIHtcbiAgcmV0dXJuIChhID4+PiAwKSA8IChiID4+PiAwKSA/IDEgOiAwXG59XG5cblNoYTUxMi5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBXID0gdGhpcy5fd1xuXG4gIHZhciBhaCA9IHRoaXMuX2FoIHwgMFxuICB2YXIgYmggPSB0aGlzLl9iaCB8IDBcbiAgdmFyIGNoID0gdGhpcy5fY2ggfCAwXG4gIHZhciBkaCA9IHRoaXMuX2RoIHwgMFxuICB2YXIgZWggPSB0aGlzLl9laCB8IDBcbiAgdmFyIGZoID0gdGhpcy5fZmggfCAwXG4gIHZhciBnaCA9IHRoaXMuX2doIHwgMFxuICB2YXIgaGggPSB0aGlzLl9oaCB8IDBcblxuICB2YXIgYWwgPSB0aGlzLl9hbCB8IDBcbiAgdmFyIGJsID0gdGhpcy5fYmwgfCAwXG4gIHZhciBjbCA9IHRoaXMuX2NsIHwgMFxuICB2YXIgZGwgPSB0aGlzLl9kbCB8IDBcbiAgdmFyIGVsID0gdGhpcy5fZWwgfCAwXG4gIHZhciBmbCA9IHRoaXMuX2ZsIHwgMFxuICB2YXIgZ2wgPSB0aGlzLl9nbCB8IDBcbiAgdmFyIGhsID0gdGhpcy5faGwgfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSArPSAyKSB7XG4gICAgV1tpXSA9IE0ucmVhZEludDMyQkUoaSAqIDQpXG4gICAgV1tpICsgMV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0ICsgNClcbiAgfVxuICBmb3IgKDsgaSA8IDE2MDsgaSArPSAyKSB7XG4gICAgdmFyIHhoID0gV1tpIC0gMTUgKiAyXVxuICAgIHZhciB4bCA9IFdbaSAtIDE1ICogMiArIDFdXG4gICAgdmFyIGdhbW1hMCA9IEdhbW1hMCh4aCwgeGwpXG4gICAgdmFyIGdhbW1hMGwgPSBHYW1tYTBsKHhsLCB4aClcblxuICAgIHhoID0gV1tpIC0gMiAqIDJdXG4gICAgeGwgPSBXW2kgLSAyICogMiArIDFdXG4gICAgdmFyIGdhbW1hMSA9IEdhbW1hMSh4aCwgeGwpXG4gICAgdmFyIGdhbW1hMWwgPSBHYW1tYTFsKHhsLCB4aClcblxuICAgIC8vIFdbaV0gPSBnYW1tYTAgKyBXW2kgLSA3XSArIGdhbW1hMSArIFdbaSAtIDE2XVxuICAgIHZhciBXaTdoID0gV1tpIC0gNyAqIDJdXG4gICAgdmFyIFdpN2wgPSBXW2kgLSA3ICogMiArIDFdXG5cbiAgICB2YXIgV2kxNmggPSBXW2kgLSAxNiAqIDJdXG4gICAgdmFyIFdpMTZsID0gV1tpIC0gMTYgKiAyICsgMV1cblxuICAgIHZhciBXaWwgPSAoZ2FtbWEwbCArIFdpN2wpIHwgMFxuICAgIHZhciBXaWggPSAoZ2FtbWEwICsgV2k3aCArIGdldENhcnJ5KFdpbCwgZ2FtbWEwbCkpIHwgMFxuICAgIFdpbCA9IChXaWwgKyBnYW1tYTFsKSB8IDBcbiAgICBXaWggPSAoV2loICsgZ2FtbWExICsgZ2V0Q2FycnkoV2lsLCBnYW1tYTFsKSkgfCAwXG4gICAgV2lsID0gKFdpbCArIFdpMTZsKSB8IDBcbiAgICBXaWggPSAoV2loICsgV2kxNmggKyBnZXRDYXJyeShXaWwsIFdpMTZsKSkgfCAwXG5cbiAgICBXW2ldID0gV2loXG4gICAgV1tpICsgMV0gPSBXaWxcbiAgfVxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgMTYwOyBqICs9IDIpIHtcbiAgICBXaWggPSBXW2pdXG4gICAgV2lsID0gV1tqICsgMV1cblxuICAgIHZhciBtYWpoID0gbWFqKGFoLCBiaCwgY2gpXG4gICAgdmFyIG1hamwgPSBtYWooYWwsIGJsLCBjbClcblxuICAgIHZhciBzaWdtYTBoID0gc2lnbWEwKGFoLCBhbClcbiAgICB2YXIgc2lnbWEwbCA9IHNpZ21hMChhbCwgYWgpXG4gICAgdmFyIHNpZ21hMWggPSBzaWdtYTEoZWgsIGVsKVxuICAgIHZhciBzaWdtYTFsID0gc2lnbWExKGVsLCBlaClcblxuICAgIC8vIHQxID0gaCArIHNpZ21hMSArIGNoICsgS1tqXSArIFdbal1cbiAgICB2YXIgS2loID0gS1tqXVxuICAgIHZhciBLaWwgPSBLW2ogKyAxXVxuXG4gICAgdmFyIGNoaCA9IENoKGVoLCBmaCwgZ2gpXG4gICAgdmFyIGNobCA9IENoKGVsLCBmbCwgZ2wpXG5cbiAgICB2YXIgdDFsID0gKGhsICsgc2lnbWExbCkgfCAwXG4gICAgdmFyIHQxaCA9IChoaCArIHNpZ21hMWggKyBnZXRDYXJyeSh0MWwsIGhsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIGNobCkgfCAwXG4gICAgdDFoID0gKHQxaCArIGNoaCArIGdldENhcnJ5KHQxbCwgY2hsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIEtpbCkgfCAwXG4gICAgdDFoID0gKHQxaCArIEtpaCArIGdldENhcnJ5KHQxbCwgS2lsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIFdpbCkgfCAwXG4gICAgdDFoID0gKHQxaCArIFdpaCArIGdldENhcnJ5KHQxbCwgV2lsKSkgfCAwXG5cbiAgICAvLyB0MiA9IHNpZ21hMCArIG1halxuICAgIHZhciB0MmwgPSAoc2lnbWEwbCArIG1hamwpIHwgMFxuICAgIHZhciB0MmggPSAoc2lnbWEwaCArIG1hamggKyBnZXRDYXJyeSh0MmwsIHNpZ21hMGwpKSB8IDBcblxuICAgIGhoID0gZ2hcbiAgICBobCA9IGdsXG4gICAgZ2ggPSBmaFxuICAgIGdsID0gZmxcbiAgICBmaCA9IGVoXG4gICAgZmwgPSBlbFxuICAgIGVsID0gKGRsICsgdDFsKSB8IDBcbiAgICBlaCA9IChkaCArIHQxaCArIGdldENhcnJ5KGVsLCBkbCkpIHwgMFxuICAgIGRoID0gY2hcbiAgICBkbCA9IGNsXG4gICAgY2ggPSBiaFxuICAgIGNsID0gYmxcbiAgICBiaCA9IGFoXG4gICAgYmwgPSBhbFxuICAgIGFsID0gKHQxbCArIHQybCkgfCAwXG4gICAgYWggPSAodDFoICsgdDJoICsgZ2V0Q2FycnkoYWwsIHQxbCkpIHwgMFxuICB9XG5cbiAgdGhpcy5fYWwgPSAodGhpcy5fYWwgKyBhbCkgfCAwXG4gIHRoaXMuX2JsID0gKHRoaXMuX2JsICsgYmwpIHwgMFxuICB0aGlzLl9jbCA9ICh0aGlzLl9jbCArIGNsKSB8IDBcbiAgdGhpcy5fZGwgPSAodGhpcy5fZGwgKyBkbCkgfCAwXG4gIHRoaXMuX2VsID0gKHRoaXMuX2VsICsgZWwpIHwgMFxuICB0aGlzLl9mbCA9ICh0aGlzLl9mbCArIGZsKSB8IDBcbiAgdGhpcy5fZ2wgPSAodGhpcy5fZ2wgKyBnbCkgfCAwXG4gIHRoaXMuX2hsID0gKHRoaXMuX2hsICsgaGwpIHwgMFxuXG4gIHRoaXMuX2FoID0gKHRoaXMuX2FoICsgYWggKyBnZXRDYXJyeSh0aGlzLl9hbCwgYWwpKSB8IDBcbiAgdGhpcy5fYmggPSAodGhpcy5fYmggKyBiaCArIGdldENhcnJ5KHRoaXMuX2JsLCBibCkpIHwgMFxuICB0aGlzLl9jaCA9ICh0aGlzLl9jaCArIGNoICsgZ2V0Q2FycnkodGhpcy5fY2wsIGNsKSkgfCAwXG4gIHRoaXMuX2RoID0gKHRoaXMuX2RoICsgZGggKyBnZXRDYXJyeSh0aGlzLl9kbCwgZGwpKSB8IDBcbiAgdGhpcy5fZWggPSAodGhpcy5fZWggKyBlaCArIGdldENhcnJ5KHRoaXMuX2VsLCBlbCkpIHwgMFxuICB0aGlzLl9maCA9ICh0aGlzLl9maCArIGZoICsgZ2V0Q2FycnkodGhpcy5fZmwsIGZsKSkgfCAwXG4gIHRoaXMuX2doID0gKHRoaXMuX2doICsgZ2ggKyBnZXRDYXJyeSh0aGlzLl9nbCwgZ2wpKSB8IDBcbiAgdGhpcy5faGggPSAodGhpcy5faGggKyBoaCArIGdldENhcnJ5KHRoaXMuX2hsLCBobCkpIHwgMFxufVxuXG5TaGE1MTIucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSg2NClcblxuICBmdW5jdGlvbiB3cml0ZUludDY0QkUgKGgsIGwsIG9mZnNldCkge1xuICAgIEgud3JpdGVJbnQzMkJFKGgsIG9mZnNldClcbiAgICBILndyaXRlSW50MzJCRShsLCBvZmZzZXQgKyA0KVxuICB9XG5cbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2FoLCB0aGlzLl9hbCwgMClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2JoLCB0aGlzLl9ibCwgOClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2NoLCB0aGlzLl9jbCwgMTYpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9kaCwgdGhpcy5fZGwsIDI0KVxuICB3cml0ZUludDY0QkUodGhpcy5fZWgsIHRoaXMuX2VsLCAzMilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2ZoLCB0aGlzLl9mbCwgNDApXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9naCwgdGhpcy5fZ2wsIDQ4KVxuICB3cml0ZUludDY0QkUodGhpcy5faGgsIHRoaXMuX2hsLCA1NilcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTUxMlxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtO1xuXG52YXIgRUUgPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5pbmhlcml0cyhTdHJlYW0sIEVFKTtcblN0cmVhbS5SZWFkYWJsZSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcycpO1xuU3RyZWFtLldyaXRhYmxlID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzJyk7XG5TdHJlYW0uRHVwbGV4ID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX2R1cGxleC5qcycpO1xuU3RyZWFtLlRyYW5zZm9ybSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV90cmFuc2Zvcm0uanMnKTtcblN0cmVhbS5QYXNzVGhyb3VnaCA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcycpO1xuU3RyZWFtLmZpbmlzaGVkID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2VuZC1vZi1zdHJlYW0uanMnKVxuU3RyZWFtLnBpcGVsaW5lID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3BpcGVsaW5lLmpzJylcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC40LnhcblN0cmVhbS5TdHJlYW0gPSBTdHJlYW07XG5cblxuXG4vLyBvbGQtc3R5bGUgc3RyZWFtcy4gIE5vdGUgdGhhdCB0aGUgcGlwZSBtZXRob2QgKHRoZSBvbmx5IHJlbGV2YW50XG4vLyBwYXJ0IG9mIHRoaXMgY2xhc3MpIGlzIG92ZXJyaWRkZW4gaW4gdGhlIFJlYWRhYmxlIGNsYXNzLlxuXG5mdW5jdGlvbiBTdHJlYW0oKSB7XG4gIEVFLmNhbGwodGhpcyk7XG59XG5cblN0cmVhbS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uKGRlc3QsIG9wdGlvbnMpIHtcbiAgdmFyIHNvdXJjZSA9IHRoaXM7XG5cbiAgZnVuY3Rpb24gb25kYXRhKGNodW5rKSB7XG4gICAgaWYgKGRlc3Qud3JpdGFibGUpIHtcbiAgICAgIGlmIChmYWxzZSA9PT0gZGVzdC53cml0ZShjaHVuaykgJiYgc291cmNlLnBhdXNlKSB7XG4gICAgICAgIHNvdXJjZS5wYXVzZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNvdXJjZS5vbignZGF0YScsIG9uZGF0YSk7XG5cbiAgZnVuY3Rpb24gb25kcmFpbigpIHtcbiAgICBpZiAoc291cmNlLnJlYWRhYmxlICYmIHNvdXJjZS5yZXN1bWUpIHtcbiAgICAgIHNvdXJjZS5yZXN1bWUoKTtcbiAgICB9XG4gIH1cblxuICBkZXN0Lm9uKCdkcmFpbicsIG9uZHJhaW4pO1xuXG4gIC8vIElmIHRoZSAnZW5kJyBvcHRpb24gaXMgbm90IHN1cHBsaWVkLCBkZXN0LmVuZCgpIHdpbGwgYmUgY2FsbGVkIHdoZW5cbiAgLy8gc291cmNlIGdldHMgdGhlICdlbmQnIG9yICdjbG9zZScgZXZlbnRzLiAgT25seSBkZXN0LmVuZCgpIG9uY2UuXG4gIGlmICghZGVzdC5faXNTdGRpbyAmJiAoIW9wdGlvbnMgfHwgb3B0aW9ucy5lbmQgIT09IGZhbHNlKSkge1xuICAgIHNvdXJjZS5vbignZW5kJywgb25lbmQpO1xuICAgIHNvdXJjZS5vbignY2xvc2UnLCBvbmNsb3NlKTtcbiAgfVxuXG4gIHZhciBkaWRPbkVuZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBvbmVuZCgpIHtcbiAgICBpZiAoZGlkT25FbmQpIHJldHVybjtcbiAgICBkaWRPbkVuZCA9IHRydWU7XG5cbiAgICBkZXN0LmVuZCgpO1xuICB9XG5cblxuICBmdW5jdGlvbiBvbmNsb3NlKCkge1xuICAgIGlmIChkaWRPbkVuZCkgcmV0dXJuO1xuICAgIGRpZE9uRW5kID0gdHJ1ZTtcblxuICAgIGlmICh0eXBlb2YgZGVzdC5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSBkZXN0LmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIGRvbid0IGxlYXZlIGRhbmdsaW5nIHBpcGVzIHdoZW4gdGhlcmUgYXJlIGVycm9ycy5cbiAgZnVuY3Rpb24gb25lcnJvcihlcikge1xuICAgIGNsZWFudXAoKTtcbiAgICBpZiAoRUUubGlzdGVuZXJDb3VudCh0aGlzLCAnZXJyb3InKSA9PT0gMCkge1xuICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCBzdHJlYW0gZXJyb3IgaW4gcGlwZS5cbiAgICB9XG4gIH1cblxuICBzb3VyY2Uub24oJ2Vycm9yJywgb25lcnJvcik7XG4gIGRlc3Qub24oJ2Vycm9yJywgb25lcnJvcik7XG5cbiAgLy8gcmVtb3ZlIGFsbCB0aGUgZXZlbnQgbGlzdGVuZXJzIHRoYXQgd2VyZSBhZGRlZC5cbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcblxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgY2xlYW51cCk7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIGNsZWFudXApO1xuXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBjbGVhbnVwKTtcbiAgfVxuXG4gIHNvdXJjZS5vbignZW5kJywgY2xlYW51cCk7XG4gIHNvdXJjZS5vbignY2xvc2UnLCBjbGVhbnVwKTtcblxuICBkZXN0Lm9uKCdjbG9zZScsIGNsZWFudXApO1xuXG4gIGRlc3QuZW1pdCgncGlwZScsIHNvdXJjZSk7XG5cbiAgLy8gQWxsb3cgZm9yIHVuaXgtbGlrZSB1c2FnZTogQS5waXBlKEIpLnBpcGUoQylcbiAgcmV0dXJuIGRlc3Q7XG59O1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBpc0VuY29kaW5nID0gQnVmZmVyLmlzRW5jb2RpbmcgfHwgZnVuY3Rpb24gKGVuY29kaW5nKSB7XG4gIGVuY29kaW5nID0gJycgKyBlbmNvZGluZztcbiAgc3dpdGNoIChlbmNvZGluZyAmJiBlbmNvZGluZy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpjYXNlICd1dGY4JzpjYXNlICd1dGYtOCc6Y2FzZSAnYXNjaWknOmNhc2UgJ2JpbmFyeSc6Y2FzZSAnYmFzZTY0JzpjYXNlICd1Y3MyJzpjYXNlICd1Y3MtMic6Y2FzZSAndXRmMTZsZSc6Y2FzZSAndXRmLTE2bGUnOmNhc2UgJ3Jhdyc6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5mdW5jdGlvbiBfbm9ybWFsaXplRW5jb2RpbmcoZW5jKSB7XG4gIGlmICghZW5jKSByZXR1cm4gJ3V0ZjgnO1xuICB2YXIgcmV0cmllZDtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuYykge1xuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiAndXRmOCc7XG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gJ3V0ZjE2bGUnO1xuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiAnbGF0aW4xJztcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gZW5jO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHJldHJpZWQpIHJldHVybjsgLy8gdW5kZWZpbmVkXG4gICAgICAgIGVuYyA9ICgnJyArIGVuYykudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0cmllZCA9IHRydWU7XG4gICAgfVxuICB9XG59O1xuXG4vLyBEbyBub3QgY2FjaGUgYEJ1ZmZlci5pc0VuY29kaW5nYCB3aGVuIGNoZWNraW5nIGVuY29kaW5nIG5hbWVzIGFzIHNvbWVcbi8vIG1vZHVsZXMgbW9ua2V5LXBhdGNoIGl0IHRvIHN1cHBvcnQgYWRkaXRpb25hbCBlbmNvZGluZ3NcbmZ1bmN0aW9uIG5vcm1hbGl6ZUVuY29kaW5nKGVuYykge1xuICB2YXIgbmVuYyA9IF9ub3JtYWxpemVFbmNvZGluZyhlbmMpO1xuICBpZiAodHlwZW9mIG5lbmMgIT09ICdzdHJpbmcnICYmIChCdWZmZXIuaXNFbmNvZGluZyA9PT0gaXNFbmNvZGluZyB8fCAhaXNFbmNvZGluZyhlbmMpKSkgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jKTtcbiAgcmV0dXJuIG5lbmMgfHwgZW5jO1xufVxuXG4vLyBTdHJpbmdEZWNvZGVyIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgZWZmaWNpZW50bHkgc3BsaXR0aW5nIGEgc2VyaWVzIG9mXG4vLyBidWZmZXJzIGludG8gYSBzZXJpZXMgb2YgSlMgc3RyaW5ncyB3aXRob3V0IGJyZWFraW5nIGFwYXJ0IG11bHRpLWJ5dGVcbi8vIGNoYXJhY3RlcnMuXG5leHBvcnRzLlN0cmluZ0RlY29kZXIgPSBTdHJpbmdEZWNvZGVyO1xuZnVuY3Rpb24gU3RyaW5nRGVjb2RlcihlbmNvZGluZykge1xuICB0aGlzLmVuY29kaW5nID0gbm9ybWFsaXplRW5jb2RpbmcoZW5jb2RpbmcpO1xuICB2YXIgbmI7XG4gIHN3aXRjaCAodGhpcy5lbmNvZGluZykge1xuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgdGhpcy50ZXh0ID0gdXRmMTZUZXh0O1xuICAgICAgdGhpcy5lbmQgPSB1dGYxNkVuZDtcbiAgICAgIG5iID0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgdGhpcy5maWxsTGFzdCA9IHV0ZjhGaWxsTGFzdDtcbiAgICAgIG5iID0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICB0aGlzLnRleHQgPSBiYXNlNjRUZXh0O1xuICAgICAgdGhpcy5lbmQgPSBiYXNlNjRFbmQ7XG4gICAgICBuYiA9IDM7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhpcy53cml0ZSA9IHNpbXBsZVdyaXRlO1xuICAgICAgdGhpcy5lbmQgPSBzaW1wbGVFbmQ7XG4gICAgICByZXR1cm47XG4gIH1cbiAgdGhpcy5sYXN0TmVlZCA9IDA7XG4gIHRoaXMubGFzdFRvdGFsID0gMDtcbiAgdGhpcy5sYXN0Q2hhciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuYik7XG59XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGJ1Zikge1xuICBpZiAoYnVmLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICB2YXIgcjtcbiAgdmFyIGk7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSB7XG4gICAgciA9IHRoaXMuZmlsbExhc3QoYnVmKTtcbiAgICBpZiAociA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJyc7XG4gICAgaSA9IHRoaXMubGFzdE5lZWQ7XG4gICAgdGhpcy5sYXN0TmVlZCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgaSA9IDA7XG4gIH1cbiAgaWYgKGkgPCBidWYubGVuZ3RoKSByZXR1cm4gciA/IHIgKyB0aGlzLnRleHQoYnVmLCBpKSA6IHRoaXMudGV4dChidWYsIGkpO1xuICByZXR1cm4gciB8fCAnJztcbn07XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmVuZCA9IHV0ZjhFbmQ7XG5cbi8vIFJldHVybnMgb25seSBjb21wbGV0ZSBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS50ZXh0ID0gdXRmOFRleHQ7XG5cbi8vIEF0dGVtcHRzIHRvIGNvbXBsZXRlIGEgcGFydGlhbCBub24tVVRGLTggY2hhcmFjdGVyIHVzaW5nIGJ5dGVzIGZyb20gYSBCdWZmZXJcblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmZpbGxMYXN0ID0gZnVuY3Rpb24gKGJ1Zikge1xuICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7XG4gICAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkLCAwLCB0aGlzLmxhc3ROZWVkKTtcbiAgICByZXR1cm4gdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLCAwLCB0aGlzLmxhc3RUb3RhbCk7XG4gIH1cbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkLCAwLCBidWYubGVuZ3RoKTtcbiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoO1xufTtcblxuLy8gQ2hlY2tzIHRoZSB0eXBlIG9mIGEgVVRGLTggYnl0ZSwgd2hldGhlciBpdCdzIEFTQ0lJLCBhIGxlYWRpbmcgYnl0ZSwgb3IgYVxuLy8gY29udGludWF0aW9uIGJ5dGUuIElmIGFuIGludmFsaWQgYnl0ZSBpcyBkZXRlY3RlZCwgLTIgaXMgcmV0dXJuZWQuXG5mdW5jdGlvbiB1dGY4Q2hlY2tCeXRlKGJ5dGUpIHtcbiAgaWYgKGJ5dGUgPD0gMHg3RikgcmV0dXJuIDA7ZWxzZSBpZiAoYnl0ZSA+PiA1ID09PSAweDA2KSByZXR1cm4gMjtlbHNlIGlmIChieXRlID4+IDQgPT09IDB4MEUpIHJldHVybiAzO2Vsc2UgaWYgKGJ5dGUgPj4gMyA9PT0gMHgxRSkgcmV0dXJuIDQ7XG4gIHJldHVybiBieXRlID4+IDYgPT09IDB4MDIgPyAtMSA6IC0yO1xufVxuXG4vLyBDaGVja3MgYXQgbW9zdCAzIGJ5dGVzIGF0IHRoZSBlbmQgb2YgYSBCdWZmZXIgaW4gb3JkZXIgdG8gZGV0ZWN0IGFuXG4vLyBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyLiBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzICgyLCAzLCBvciA0KVxuLy8gbmVlZGVkIHRvIGNvbXBsZXRlIHRoZSBVVEYtOCBjaGFyYWN0ZXIgKGlmIGFwcGxpY2FibGUpIGFyZSByZXR1cm5lZC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0luY29tcGxldGUoc2VsZiwgYnVmLCBpKSB7XG4gIHZhciBqID0gYnVmLmxlbmd0aCAtIDE7XG4gIGlmIChqIDwgaSkgcmV0dXJuIDA7XG4gIHZhciBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSBzZWxmLmxhc3ROZWVkID0gbmIgLSAxO1xuICAgIHJldHVybiBuYjtcbiAgfVxuICBpZiAoLS1qIDwgaSB8fCBuYiA9PT0gLTIpIHJldHVybiAwO1xuICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSBzZWxmLmxhc3ROZWVkID0gbmIgLSAyO1xuICAgIHJldHVybiBuYjtcbiAgfVxuICBpZiAoLS1qIDwgaSB8fCBuYiA9PT0gLTIpIHJldHVybiAwO1xuICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSB7XG4gICAgICBpZiAobmIgPT09IDIpIG5iID0gMDtlbHNlIHNlbGYubGFzdE5lZWQgPSBuYiAtIDM7XG4gICAgfVxuICAgIHJldHVybiBuYjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy8gVmFsaWRhdGVzIGFzIG1hbnkgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyIGFzXG4vLyBuZWVkZWQgb3IgYXJlIGF2YWlsYWJsZS4gSWYgd2Ugc2VlIGEgbm9uLWNvbnRpbnVhdGlvbiBieXRlIHdoZXJlIHdlIGV4cGVjdFxuLy8gb25lLCB3ZSBcInJlcGxhY2VcIiB0aGUgdmFsaWRhdGVkIGNvbnRpbnVhdGlvbiBieXRlcyB3ZSd2ZSBzZWVuIHNvIGZhciB3aXRoXG4vLyBhIHNpbmdsZSBVVEYtOCByZXBsYWNlbWVudCBjaGFyYWN0ZXIgKCdcXHVmZmZkJyksIHRvIG1hdGNoIHY4J3MgVVRGLTggZGVjb2Rpbmdcbi8vIGJlaGF2aW9yLiBUaGUgY29udGludWF0aW9uIGJ5dGUgY2hlY2sgaXMgaW5jbHVkZWQgdGhyZWUgdGltZXMgaW4gdGhlIGNhc2Vcbi8vIHdoZXJlIGFsbCBvZiB0aGUgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIGNoYXJhY3RlciBleGlzdCBpbiB0aGUgc2FtZSBidWZmZXIuXG4vLyBJdCBpcyBhbHNvIGRvbmUgdGhpcyB3YXkgYXMgYSBzbGlnaHQgcGVyZm9ybWFuY2UgaW5jcmVhc2UgaW5zdGVhZCBvZiB1c2luZyBhXG4vLyBsb29wLlxuZnVuY3Rpb24gdXRmOENoZWNrRXh0cmFCeXRlcyhzZWxmLCBidWYsIHApIHtcbiAgaWYgKChidWZbMF0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgIHNlbGYubGFzdE5lZWQgPSAwO1xuICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gIH1cbiAgaWYgKHNlbGYubGFzdE5lZWQgPiAxICYmIGJ1Zi5sZW5ndGggPiAxKSB7XG4gICAgaWYgKChidWZbMV0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgICAgc2VsZi5sYXN0TmVlZCA9IDE7XG4gICAgICByZXR1cm4gJ1xcdWZmZmQnO1xuICAgIH1cbiAgICBpZiAoc2VsZi5sYXN0TmVlZCA+IDIgJiYgYnVmLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmICgoYnVmWzJdICYgMHhDMCkgIT09IDB4ODApIHtcbiAgICAgICAgc2VsZi5sYXN0TmVlZCA9IDI7XG4gICAgICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dGVtcHRzIHRvIGNvbXBsZXRlIGEgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlci5cbmZ1bmN0aW9uIHV0ZjhGaWxsTGFzdChidWYpIHtcbiAgdmFyIHAgPSB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQ7XG4gIHZhciByID0gdXRmOENoZWNrRXh0cmFCeXRlcyh0aGlzLCBidWYsIHApO1xuICBpZiAociAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcjtcbiAgaWYgKHRoaXMubGFzdE5lZWQgPD0gYnVmLmxlbmd0aCkge1xuICAgIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHAsIDAsIHRoaXMubGFzdE5lZWQpO1xuICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTtcbiAgfVxuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCBwLCAwLCBidWYubGVuZ3RoKTtcbiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoO1xufVxuXG4vLyBSZXR1cm5zIGFsbCBjb21wbGV0ZSBVVEYtOCBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyLiBJZiB0aGUgQnVmZmVyIGVuZGVkIG9uIGFcbi8vIHBhcnRpYWwgY2hhcmFjdGVyLCB0aGUgY2hhcmFjdGVyJ3MgYnl0ZXMgYXJlIGJ1ZmZlcmVkIHVudGlsIHRoZSByZXF1aXJlZFxuLy8gbnVtYmVyIG9mIGJ5dGVzIGFyZSBhdmFpbGFibGUuXG5mdW5jdGlvbiB1dGY4VGV4dChidWYsIGkpIHtcbiAgdmFyIHRvdGFsID0gdXRmOENoZWNrSW5jb21wbGV0ZSh0aGlzLCBidWYsIGkpO1xuICBpZiAoIXRoaXMubGFzdE5lZWQpIHJldHVybiBidWYudG9TdHJpbmcoJ3V0ZjgnLCBpKTtcbiAgdGhpcy5sYXN0VG90YWwgPSB0b3RhbDtcbiAgdmFyIGVuZCA9IGJ1Zi5sZW5ndGggLSAodG90YWwgLSB0aGlzLmxhc3ROZWVkKTtcbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgMCwgZW5kKTtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmOCcsIGksIGVuZCk7XG59XG5cbi8vIEZvciBVVEYtOCwgYSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgaXMgYWRkZWQgd2hlbiBlbmRpbmcgb24gYSBwYXJ0aWFsXG4vLyBjaGFyYWN0ZXIuXG5mdW5jdGlvbiB1dGY4RW5kKGJ1Zikge1xuICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSByZXR1cm4gciArICdcXHVmZmZkJztcbiAgcmV0dXJuIHI7XG59XG5cbi8vIFVURi0xNkxFIHR5cGljYWxseSBuZWVkcyB0d28gYnl0ZXMgcGVyIGNoYXJhY3RlciwgYnV0IGV2ZW4gaWYgd2UgaGF2ZSBhbiBldmVuXG4vLyBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlLCB3ZSBuZWVkIHRvIGNoZWNrIGlmIHdlIGVuZCBvbiBhIGxlYWRpbmcvaGlnaFxuLy8gc3Vycm9nYXRlLiBJbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIG5leHQgdHdvIGJ5dGVzIGluIG9yZGVyIHRvXG4vLyBkZWNvZGUgdGhlIGxhc3QgY2hhcmFjdGVyIHByb3Blcmx5LlxuZnVuY3Rpb24gdXRmMTZUZXh0KGJ1ZiwgaSkge1xuICBpZiAoKGJ1Zi5sZW5ndGggLSBpKSAlIDIgPT09IDApIHtcbiAgICB2YXIgciA9IGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGkpO1xuICAgIGlmIChyKSB7XG4gICAgICB2YXIgYyA9IHIuY2hhckNvZGVBdChyLmxlbmd0aCAtIDEpO1xuICAgICAgaWYgKGMgPj0gMHhEODAwICYmIGMgPD0gMHhEQkZGKSB7XG4gICAgICAgIHRoaXMubGFzdE5lZWQgPSAyO1xuICAgICAgICB0aGlzLmxhc3RUb3RhbCA9IDQ7XG4gICAgICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDJdO1xuICAgICAgICB0aGlzLmxhc3RDaGFyWzFdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgICAgICAgcmV0dXJuIHIuc2xpY2UoMCwgLTEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuICB0aGlzLmxhc3ROZWVkID0gMTtcbiAgdGhpcy5sYXN0VG90YWwgPSAyO1xuICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGksIGJ1Zi5sZW5ndGggLSAxKTtcbn1cblxuLy8gRm9yIFVURi0xNkxFIHdlIGRvIG5vdCBleHBsaWNpdGx5IGFwcGVuZCBzcGVjaWFsIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgaWYgd2Vcbi8vIGVuZCBvbiBhIHBhcnRpYWwgY2hhcmFjdGVyLCB3ZSBzaW1wbHkgbGV0IHY4IGhhbmRsZSB0aGF0LlxuZnVuY3Rpb24gdXRmMTZFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHtcbiAgICB2YXIgZW5kID0gdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkO1xuICAgIHJldHVybiByICsgdGhpcy5sYXN0Q2hhci50b1N0cmluZygndXRmMTZsZScsIDAsIGVuZCk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFRleHQoYnVmLCBpKSB7XG4gIHZhciBuID0gKGJ1Zi5sZW5ndGggLSBpKSAlIDM7XG4gIGlmIChuID09PSAwKSByZXR1cm4gYnVmLnRvU3RyaW5nKCdiYXNlNjQnLCBpKTtcbiAgdGhpcy5sYXN0TmVlZCA9IDMgLSBuO1xuICB0aGlzLmxhc3RUb3RhbCA9IDM7XG4gIGlmIChuID09PSAxKSB7XG4gICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMl07XG4gICAgdGhpcy5sYXN0Q2hhclsxXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIH1cbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygnYmFzZTY0JywgaSwgYnVmLmxlbmd0aCAtIG4pO1xufVxuXG5mdW5jdGlvbiBiYXNlNjRFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHJldHVybiByICsgdGhpcy5sYXN0Q2hhci50b1N0cmluZygnYmFzZTY0JywgMCwgMyAtIHRoaXMubGFzdE5lZWQpO1xuICByZXR1cm4gcjtcbn1cblxuLy8gUGFzcyBieXRlcyBvbiB0aHJvdWdoIGZvciBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MgKGUuZy4gYXNjaWksIGxhdGluMSwgaGV4KVxuZnVuY3Rpb24gc2ltcGxlV3JpdGUoYnVmKSB7XG4gIHJldHVybiBidWYudG9TdHJpbmcodGhpcy5lbmNvZGluZyk7XG59XG5cbmZ1bmN0aW9uIHNpbXBsZUVuZChidWYpIHtcbiAgcmV0dXJuIGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG59IiwiLypcclxuICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlIGNvbnRyaWJ1dG9yXHJcbiAqIGxpY2Vuc2UgYWdyZWVtZW50czsgYW5kIHRvIFlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBcIlxyXG4gKi9cclxuLyogV3JpdHRlbiBieSBTY29wZXZpc2lvIEFHIDIwMjEgKi9cclxuXHJcbi8qIFRoZSBsaXN0IG9mIGNlcnRpY2F0ZXMgdGhhdCBhcmUgdHJ1c3R3b3J0aHkgZm9yIHZhbGlkYXRpb24uXHJcbiAqIFxyXG4gKiBUaGUgbGlzdCBpcyBhY2Nlc3NlZCB2aWEgdGhpcyBzaW5nbGV0b24gY2xhc3MgYW5kIG9yaWdpbmF0ZXNcclxuICogZnJvbSBcclxuICogIGh0dHBzOi8vZGUuZHNjZy51YmlyY2guY29tL3RydXN0TGlzdC9EU0MvXHJcbiAqL1xyXG5cclxuaW1wb3J0IGRhdGEgZnJvbSAnLi9jZXJ0cy5qc29uJ1xyXG5cclxuXHJcbi8qIENlcnRpZmljYXRlIGluZm9ybWF0aW9uLiBUaGlzIGluZm9ybWF0aW5vIGlkZW50aWZpZXMgdGhlIGNlcnRpZmljYXRlXHJcbiAqIHRoYXQgaGFzIHZhbGlkYXRlZCB0aGUgZ2l2ZW4gUVItQ29kZS4gVGhlIGNlcnRpZmljYXRlIGlzIGEgWDUwOSBcclxuICogc3RhbmRhcmQgY2VydGlmaWNhdGUsIGhvd2V2ZXIgdGhpcyBkYXRhc3RydWN0dXJlIHByb3ZpZGVzIGNvbnZlbmllbnQgZmllbGRzLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDZXJ0SW5mbyB7XHJcbiAgICBzdWJqZWN0OiBzdHJpbmc7ICAgICAgIC8vIHN1YmplY3Qgb2YgdGhlIGNlcnRpZmljYXRlXHJcbiAgICBpc3N1ZXI6IHN0cmluZzsgICAgICAgIC8vIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB0aGUgaXNzdWVyIG9mIHRoZSBjZXJ0aWZpY3RlXHJcbiAgICBub3RiZWZvcmU6IG51bWJlcjsgICAgIC8vIGRhdGUgYmVmb3JlIHdoaWNoIHRoZSBjZXJ0aWZpY2F0ZSBzaG91bGQgYmUgY29uc2lkZXJlZCBpbnZhbGlkXHJcbiAgICBub3RhZnRlcjogbnVtYmVyOyAgICAgIC8vIGRhdGUgYWZ0ZXIgd2hpY2ggdGhlIGNlcnRpZmljYXRlIHNob3VsZCBiZSBjb25zaWRlcmVkIGludmFsaWRcclxuICAgIHB1YmtleTogc3RyaW5nOyAgICAgICAgLy8gdGhlIHB1YmxpY2tleSBvZiB0aGUgY2VydGlmaWNhdGUgaW4gYSB3YXkgdGhhdCB0aGUgYnJvd3Nlci1jcnlwdG8gYXBpIGNhbiBwcm9jZXNzIGl0XHJcbiAgICByYXdYNTA5ZGF0YTogc3RyaW5nOyAgIC8vIHRoZSBYNTA5IGNlcnRpZmljYXRlIGluIGJpbmFyeSBERVIgZm9ybWF0LCBlbmNvZGVkIGFzIGJhc2U2NFxyXG4gICAgLy8gdGhlIHJhd1g1MDkgc3RyaW5nIGNvbnRhaW5zIGFsbCB0aGUgb3RoZXIgZmllbGRzLCBidXQgbmVlZHMgdG8gYmUgZGVjb2RlZCB0byBhY2Nlc3MgdGhhdCBpbmZvcm1hdGlvblxyXG4gICAgLy8gb25lIHdheSB0byBkbyB0aGF0IGlzIHVzaW5nICBvcGVuc3NsIC1pbmZvcm0gREVSIC10ZXh0IFxyXG59XHJcblxyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBUcnVzdGxpc3Qge1xyXG4gICAgc3RhdGljIGluc3RhbmNlID0gbmV3IFRydXN0bGlzdCgpXHJcblxyXG4gICAgcHJpdmF0ZSBpbml0aWFsaXplZCA9IGZhbHNlXHJcbiAgICBwcml2YXRlIGNlcnRJbmZvczogQ2VydEluZm9bXSA9IFtdXHJcblxyXG4gICAgYXN5bmMgZ2V0Q2VydEluZm9zKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xyXG4gICAgICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZVxyXG4gICAgICAgICAgICBjb25zdCBjZXJ0cyA9IGRhdGEuY2VydHMgYXMgQ2VydEluZm9bXVxyXG4gICAgICAgICAgICB0aGlzLmNlcnRJbmZvcy5wdXNoKC4uLmNlcnRzKVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jZXJ0SW5mb3NcclxuICAgIH1cclxuXHJcblxyXG59XHJcblxyXG4iLCIvKlxyXG4gKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUgY29udHJpYnV0b3JcclxuICogbGljZW5zZSBhZ3JlZW1lbnRzOyBhbmQgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAuIFwiXHJcbiAqL1xyXG4vKiBXcml0dGVuIGJ5IFNjb3BldmlzaW8gQUcgMjAyMSAqL1xyXG5cclxuLyogcGFyc2UgdGhlIGNvbnRlbnRzIG9mIGEgY2Jvci9jd3QvemxpYi9iYXNlNDUgZGdjIFxyXG4gKiB0aGlzIGZpbGUgY29udGFpbnMgZXZlcnl0aGluZyBuZWVkZWQgaW50ZXJuYWxseSBmb3IgdmFsaWRhdGlvblxyXG4gKi9cclxuXHJcbmltcG9ydCAqIGFzIGNib3IgZnJvbSAnY2Jvci13ZWInXHJcbmltcG9ydCBiYXNlNDUgZnJvbSAnYmFzZTQ1J1xyXG5pbXBvcnQgemxpYiBmcm9tICd6bGliJ1xyXG5pbXBvcnQgeyBCdWZmZXJ9IGZyb20gJ2J1ZmZlcidcclxuXHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIENvc2UxIHtcclxuXHJcbiAgICBwcm90ZWN0ZWRfOiBCdWZmZXJcclxuICAgIHVucHJvdGVjdGVkOiBNYXA8YW55LCBhbnk+XHJcbiAgICBwYXlsb2FkOiBCdWZmZXJcclxuICAgIHNpZ25hdHVyZXM6IEJ1ZmZlclxyXG5cclxuICAgIHN0YXRpYyBhc3luYyBkZWNvZGVDYm9yQXN5bmMoZGF0YTogQnVmZmVyKTogUHJvbWlzZTxudWxsfGFueT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIGNib3IuZGVjb2RlRmlyc3QoZGF0YSwgZnVuY3Rpb24gKGVycm9yOiBhbnksIG9iajogYW55KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QoXCJmYWlsZWQgY2JvcjogXCIgKyBlcnJvcilcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShvYmopXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgYXN5bmMgdmFsdWVPZihlbmNvZGVkRGF0YTogc3RyaW5nKTogUHJvbWlzZTxDb3NlMSB8IG51bGw+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZW5jb2RlZERhdGEuaW5kZXhPZihcIkhDMTpcIikgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgZW5jb2RlZERhdGEgPSBlbmNvZGVkRGF0YS5zdWJzdHJpbmcoNClcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29uc3QgZGVjb2RlZERhdGEgPSBiYXNlNDUuZGVjb2RlKGVuY29kZWREYXRhKVxyXG4gICAgICAgICAgICB6bGliLmluZmxhdGUoZGVjb2RlZERhdGEsIGZ1bmN0aW9uIChlcnJvcjogYW55LCBidWY6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KFwiZmFpbGVkIGNvc2UxOiBcIiArIGVycm9yKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2Jvci5kZWNvZGVGaXJzdChidWYsIGZ1bmN0aW9uIChlcnJvcjogYW55LCBvYmo6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXCJmYWlsZWQgY29zZTE6IFwiICsgZXJyb3IpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gb2JqXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvdGVjdGVkXyA9IHQudmFsdWVbMF1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnByb3RlY3RlZCA9IHQudmFsdWVbMV1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gdC52YWx1ZVsyXVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZXMgPSB0LnZhbHVlWzNdXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29zZTEgPSBuZXcgQ29zZTEocHJvdGVjdGVkXywgdW5wcm90ZWN0ZWQsIHBheWxvYWQsIHNpZ25hdHVyZXMpXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShjb3NlMSlcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWRfOiBCdWZmZXIsIHVucHJvdGVjdGVkOiBNYXA8YW55LCBhbnk+LCBwYXlsb2FkOiBCdWZmZXIsIHNpZ25hdHVyZXM6IEJ1ZmZlcikge1xyXG4gICAgICAgIHRoaXMucHJvdGVjdGVkXyA9IHByb3RlY3RlZF9cclxuICAgICAgICB0aGlzLnVucHJvdGVjdGVkID0gdW5wcm90ZWN0ZWRcclxuICAgICAgICB0aGlzLnBheWxvYWQgPSBwYXlsb2FkXHJcbiAgICAgICAgdGhpcy5zaWduYXR1cmVzID0gc2lnbmF0dXJlc1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBtYWtlRGF0YUZvclZlcmlmaWNhdGlvbigpIHtcclxuICAgICAgICAvLyB0aGlzIGFwcHJvYWNoIHNob3VsZCB3b3JrIGJ1dCBkb2Vzbid0XHJcbiAgICAgICAgLypcclxuICAgICAgICBjb25zdCByYXcgPSBjYm9yLmVuY29kZShcclxuICAgICAgICAgICAgW1xyXG4gICAgICAgICAgICAgICAgXCJTaWduYXR1cmUxXCIsIFxyXG4gICAgICAgICAgICAgICAgY29zZTEucHJvdGVjdGVkXywgXHJcbiAgICAgICAgICAgICAgICAvL1VpbnQ4QXJyYXkuZnJvbShbXSksIFxyXG4gICAgICAgICAgICAgICAgNjQsXHJcbiAgICAgICAgICAgICAgICA2NCxcclxuICAgICAgICAgICAgICAgIGNvc2UxLnBheWxvYWQsXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICApIGFzIFVpbnQ4QXJyYXlcclxuICAgICAgICAqL1xyXG5cclxuICAgICAgICAvLyBzaW5jZSB0aGUgYWJvdmUgZG9lc24ndCB3b3JrLCB3ZSBkbyB0aGUgY2JvciBzZW1pLW1hbnVhbGx5XHJcbiAgICAgICAgLy8gd2UgbWFrZSAyIGNodW5rcywgaW5zZXJ0IGEgNjQgKGVtcHR5IHRhZykgYW5kIHRoZW4gYXNzaWduIDB4ODRcclxuICAgICAgICAvLyB0byBtYXJrIHRoZSBzdHJ1Y3R1cmUgYXMgYSA0IGVudHJ5IGNib3JcclxuICAgICAgICBjb25zdCByYXcxID0gY2Jvci5lbmNvZGUoXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgIFwiU2lnbmF0dXJlMVwiLCBcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvdGVjdGVkXywgXHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICApIGFzIFVpbnQ4QXJyYXlcclxuICAgICAgICBjb25zdCByYXcyID0gY2Jvci5lbmNvZGUoXHJcbiAgICAgICAgICAgIFtcclxuICAgICAgICAgICAgICAgIHRoaXMucGF5bG9hZCxcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICkgYXMgVWludDhBcnJheVxyXG4gICAgICAgIGNvbnN0IHJhdyA9IG5ldyBVaW50OEFycmF5KHJhdzEubGVuZ3RoICsgcmF3Mi5sZW5ndGgpXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSByYXcxLmxlbmd0aDsgaSA8IG47IGkrKykgcmF3W2ldID0gcmF3MVtpXVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gcmF3Mi5sZW5ndGg7IGkgPCBuOyBpKyspIHJhd1tyYXcxLmxlbmd0aCArIGldID0gcmF3MltpXVxyXG4gICAgICAgIHJhd1tyYXcxLmxlbmd0aF0gPSA2NCAvLyBlbXB0eSBzbG90XHJcbiAgICAgICAgcmF3WzBdID0gMHg4NCAvLyBhcnJheSBvZiBsZW5ndGggNFxyXG4gICAgICAgIHJldHVybiByYXdcclxuICAgIH1cclxuXHJcbiAgICAvLyBzbWFsbCBhc24xIHV0aWxpdHlcclxuICAgIGVuY29kZWRVbnNpZ25lZEludGVnZXIoaTogVWludDhBcnJheSkgIHtcclxuICAgICAgICBsZXQgcGFkID0gMFxyXG4gICAgICAgIGxldCBvZmZzZXQgPSAwO1xyXG4gICAgICAgIHdoaWxlIChvZmZzZXQgPCBpLmxlbmd0aCAmJiBpW29mZnNldF0gPT0gMCkge1xyXG4gICAgICAgICAgICBvZmZzZXQrK1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob2Zmc2V0ID09IGkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShbIDB4MDIsIDB4MDEsIDB4MDAgXSlcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChpW29mZnNldF0gJiAweDgwKSAhPSAwKSB7XHJcbiAgICAgICAgICAgIHBhZCsrXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IGkubGVuZ3RoIC0gb2Zmc2V0XHJcbiAgICAgICAgY29uc3QgZGVyID0gbmV3IFVpbnQ4QXJyYXkoMiArIGxlbmd0aCArIHBhZClcclxuICAgICAgICBkZXJbMF0gPSAweDAyXHJcbiAgICAgICAgZGVyWzFdID0gbGVuZ3RoICsgcGFkXHJcbiAgICAgICAgZm9yIChsZXQgcHRyID0gMDsgcHRyIDwgbGVuZ3RoOyArK3B0cikge1xyXG4gICAgICAgICAgICBkZXJbMiArIHBhZCArIHB0cl0gPSBpW29mZnNldCArIHB0cl1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGRlclxyXG4gICAgfVxyXG5cclxuICAgIC8vIHNtYWxsIGFzbjEgdXRpbGl0eSAoQWdhaW4pXHJcbiAgICBjb21wdXRlTGVuZ3RoKHg6IG51bWJlcikgIHtcclxuICAgICAgICBpZiAoeCA8PSAxMjcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KFsgeCBdKVxyXG4gICAgICAgIH0gZWxzZSBpZiAoeCA8IDI1Nikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzB4ODEsIHhdKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aHJvdyBcInRvbyBsb25nXCJcclxuICAgIH1cclxuXHJcbiAgICAvLyBhcnJheWNvcHlcclxuICAgIHN0YXRpYyBzZXQoc3JjOiBVaW50OEFycmF5LCBzcmNwb3M6IG51bWJlciwgZGVzdDogVWludDhBcnJheSwgZGVzdHBvczogbnVtYmVyLCBuOiBudW1iZXIpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBkZXN0W2Rlc3Rwb3MgKyBpXSA9IHNyY1tzcmNwb3MgKyBpXVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBlbmNvZGUgdGhlIGNvc2UxIHNpZ25hdHVyZSBpbnRvIGFzbjEgci9zIHR5cGUgb2YgZm9ybWF0IChpbiBhc24xKVxyXG4gICAgZW5jb2RlU2lnbmF0dXJlKHJhdzogVWludDhBcnJheSkge1xyXG4gICAgICAgIGNvbnN0IHIgPSBuZXcgVWludDhBcnJheShyYXcubGVuZ3RoIC8gMilcclxuICAgICAgICBjb25zdCBzID0gbmV3IFVpbnQ4QXJyYXkocmF3Lmxlbmd0aCAvIDIpXHJcbiAgICAgICAgQ29zZTEuc2V0KHJhdywgMCwgciwgMCwgci5sZW5ndGgpXHJcbiAgICAgICAgQ29zZTEuc2V0KHJhdywgcy5sZW5ndGgsIHMsIDAsIHMubGVuZ3RoKVxyXG4gICAgICAgIGNvbnN0IHJlID0gdGhpcy5lbmNvZGVkVW5zaWduZWRJbnRlZ2VyKHIpXHJcbiAgICAgICAgY29uc3Qgc2UgPSB0aGlzLmVuY29kZWRVbnNpZ25lZEludGVnZXIocylcclxuICAgICAgICBjb25zdCBsZW4gPSB0aGlzLmNvbXB1dGVMZW5ndGgocmUubGVuZ3RoICsgc2UubGVuZ3RoKVxyXG4gICAgICAgIGNvbnN0IHNpZyA9IG5ldyBVaW50OEFycmF5KDEgKyBsZW4ubGVuZ3RoICsgcmUubGVuZ3RoICsgc2UubGVuZ3RoKVxyXG4gICAgICAgIHNpZ1swXSA9IDB4MzBcclxuICAgICAgICBDb3NlMS5zZXQobGVuLCAwLCBzaWcsIDEsIGxlbi5sZW5ndGgpXHJcbiAgICAgICAgQ29zZTEuc2V0KHJlLCAwLCBzaWcsIDEgKyBsZW4ubGVuZ3RoLCByZS5sZW5ndGgpXHJcbiAgICAgICAgQ29zZTEuc2V0KHNlLCAwLCBzaWcsIDEgKyBsZW4ubGVuZ3RoICsgcmUubGVuZ3RoLCBzZS5sZW5ndGgpXHJcbiAgICAgICAgcmV0dXJuIHNpZ1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBcclxuXHJcbn1cclxuXHJcbmNvbnNvbGUubG9nKFwiY29zZTEudHNcIilcclxuIiwiLypcclxuICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlIGNvbnRyaWJ1dG9yXHJcbiAqIGxpY2Vuc2UgYWdyZWVtZW50czsgYW5kIHRvIFlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wLiBcIlxyXG4gKi9cclxuLyogV3JpdHRlbiBieSBTY29wZXZpc2lvIEFHIDIwMjEgKi9cclxuXHJcbi8qIFxyXG4gKiBwYXJzZSB0aGUgY29udGVudHMgb2YgYSBjYm9yL2N3dC96bGliL2Jhc2U0NSBkZ2NcclxuICpcclxuICogU3BlY3MgY2FuIGJlIGZvdW5kIGF0OlxyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZWhuLWRjYy1kZXZlbG9wbWVudC9oY2VydC1zcGVjL2Jsb2IvbWFpbi9oY2VydF9zcGVjLm1kXHJcbiAqL1xyXG5cclxuaW1wb3J0ICogYXMgY2JvciBmcm9tICdjYm9yLXdlYidcclxuaW1wb3J0IGJhc2U0NSBmcm9tICdiYXNlNDUnXHJcbmltcG9ydCB6bGliIGZyb20gJ3psaWInXHJcbmltcG9ydCB7IENlcnRJbmZvLCBUcnVzdGxpc3QgfSBmcm9tICcuL3RydXN0bGlzdCdcclxuaW1wb3J0IHsgQ29zZTEgfSBmcm9tICcuL2Nvc2UxJ1xyXG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInXHJcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvLWJyb3dzZXJpZnknXHJcblxyXG5cclxuY29uc3QgQ2xhaW1LZXlIY2VydCA9IC0yNjBcclxuY29uc3QgQ2xhaW1LZXlFdURnY1YxID0gMVxyXG5cclxuLypcclxuICogZXVkZ2MgcmVjb3JkXHJcbiAqXHJcbiAqIGNvbnRhaW5zIGFuIGFycmF5IG9mIHZhY2NpbmF0aW9uc1xyXG4gKiBhbmQgdXNlciBpbmZvcm1hdGlvblxyXG4gKiBcclxuICogaG93ZXZlciBpZiB0aGlzIGlzIHRvIGJlIHRyYW5zcG9ydGVkIGluc2lkZSBhIHFyY29kZSwgbW9zdFxyXG4gKiBsaWtlbHkgdGhlcmUgd2lsbCBiZSBvbmx5IG9uZSB2YWNjaW5hdGlvblxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBFdURnY0NlcnQge1xyXG4gICAgXCJ2XCI6IEV1RGdjVmFjY2luY2F0aW9uW107ICAgIC8vIGFuIGFycmF5IG9mIHZhY2NpbmF0aW9ucywgcHJvYmFibHkganVzdCAxIHJpZ2h0IG5vd1xyXG4gICAgXCJkb2JcIjogc3RyaW5nOyAgICAgICAgICAgICAgIC8vIGRhdGUgb2YgYmlydGggXCIxOTcwLTAxLTMxXCIsXHJcbiAgICBcIm5hbVwiOiB7XHJcbiAgICAgICAgXCJmblwiOiBzdHJpbmc7ICAgICAgICAgICAgLy8gZmFtaWxpeSBuYW1lXHJcbiAgICAgICAgXCJnblwiOiBzdHJpbmc7ICAgICAgICAgICAgLy8gZmlyc3RuYW1lXHJcbiAgICAgICAgXCJmbnRcIjogc3RyaW5nOyAgICAgICAgICAgLy8gZm4gaW4gY2FwcyBhbmQgd2l0aG91dCBVbWxhdXRzIFxyXG4gICAgICAgIFwiZ250XCI6IHN0cmluZzsgICAgICAgICAgIC8vIGduIGluIGNhcHMgYW5kIHdpdGhvdXQgVW1sYXV0c1xyXG4gICAgfTtcclxuICAgIFwidmVyXCI6IHN0cmluZzsgIC8vIFwiMS4wLjBcIiA/XHJcbn1cclxuXHJcbi8qXHJcbiAqIGV1ZGdjIHZhY2NpbmF0aW9uIHJlY29yZFxyXG4gKlxyXG4gKiBmdWxsIGltbXVuaXphdGlvbiBpcyBnaXZlbiB3aGVuIHsgZG4gPT0gc2QgfVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBFdURnY1ZhY2NpbmNhdGlvbiB7XHJcbiAgICBcImNpXCI6IHN0cmluZzsgIC8vIFwiVVJOOlVWQ0k6MDFERS8uLi4uLlwiICBVbmlxdWUgQ2VydGlmaWNhdGUgSWRlbnRpZmllcjogVVZDSVxyXG4gICAgXCJjb1wiOiBzdHJpbmc7ICAvLyBcIkRFXCIsIHZhY2NpbmF0aW9uIG51bWJlclxyXG4gICAgXCJkblwiOiBudW1iZXI7ICAvLyAxLCAyIC4uLiBudW1iZXIgb2YgZG9zZVxyXG4gICAgXCJkdFwiOiBzdHJpbmc7ICAvLyBcIjIwMjEtMDItMjhcIiwgZGF0ZSBvZiB2YWNjaW5hdGlvblxyXG4gICAgXCJpc1wiOiBzdHJpbmc7ICAvLyBlZyBcIlJvYmVydCBLb2NoLUluc3RpdHV0XCIsIGlzc3VlclxyXG4gICAgXCJtYVwiOiBzdHJpbmc7ICAvLyBNYXJrZXRpbmcgQXV0aG9yaXphdGlvbiBIb2xkZXIgLSBpZiBubyBNQUggcHJlc2VudCwgdGhlbiBtYW51ZmFjdHVyZXJcclxuICAgIFwibXBcIjogc3RyaW5nOyAgLy8gVmFjY2luZSBtZWRpY2luYWwgcHJvZHVjdFxyXG4gICAgXCJzZFwiOiBudW1iZXI7ICAvLyBUb3RhbCBTZXJpZXMgb2YgRG9zZXNcclxuICAgIFwidGdcIjogc3RyaW5nOyAgLy8gRGlzZWFzZSBvciBhZ2VudCB0YXJnZXRlZFxyXG4gICAgXCJ2cFwiOiBzdHJpbmc7ICAvLyBWYWNjaW5lIG9yIHByb3BoeWxheGlzXHJcbn1cclxuXHJcblxyXG4vKlxyXG4gKiBPYmplY3QgdGhhdCBjb250YWlucyB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgdG8gdGhlIHZhbGlkYXRlIG1ldGhvZC5cclxuICpcclxuICogWW91IGNhbiBwYXNzIGluIGEgZmlsdGVyIG9uIHdoYXQgY2VydGlmaWNhdGVzIHRvIHVzZVxyXG4gKiBvciBhbiBleHBsaWNpdCBsaXN0IG9mIGNlcnRpZmljYXRlcy4gU2VlIGJlbG93IGZvciBhdmFpbGFibGUgb3B0aW9ucy5cclxuICpcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbk9wdGlvbnMge1xyXG5cclxuICAgIC8qIGNlcnRGaWx0ZXI6IGlzIGFuIG9wdGlvbmFsIGZpbHRlciBwcmVkaWNhdGUgZnVuY3Rpb24uIEl0IGlzIHBhc3NlZCBlYWNoIFxyXG4gICAgICogY2VydEluZm8gYW5kIHNob3VsZCByZXR1cm4gZmFsc2UgZm9yIGNlcnRpZmljYXRlcyB0aGF0IHNob3VsZCBiZSBza2lwcGVkXHJcbiAgICAgKiBkdXJpbmcgdmFsaWRhdGlvbi4gSWYgdGhlIGNlcnRGaWx0ZXIgaXMgdW5kZWZpbmVkIG9yIG51bGwsIHRoZW4gYWxsIFxyXG4gICAgICogY2VydHMgd2lsbCBiZSB1c2VkIGZvciB2YWxpZGF0aW9uLlxyXG4gICAgICovXHJcbiAgICBjZXJ0RmlsdGVyPzogKGNlcnRJbmZvOiBDZXJ0SW5mbykgPT4gYm9vbGVhbjtcclxuXHJcbiAgICAvKiBleHBsaWNpdENlcnRzOiBhbiBvcHRpb25hbCBhcnJheSBvZiBjZXJ0aWZpY2F0ZXMgdG8gdXNlIGZvciBcclxuICAgICAqIHZhbGlkYXRpb24uIHRoaXMgYWxsb3dzIHRvIHBhc3MgaW4gbW9yZSByZWNlbnQgY2VydGlmaWNhdGVzIG9yIG90aGVyXHJcbiAgICAgKiBjZXJ0aWZpY2F0ZXMuIFxyXG4gICAgICogXHJcbiAgICAgKiBQbGVhc2Ugbm90ZSB0aGF0IG9uZSBjYW4gb2J0YWluIHdyb25nIGFuZCBpbnZhbGlkKCEpXHJcbiAgICAgKiByZXN1bHRzIGJ5IGRvaW5nIHNvLiBUaGUgcmVzcG9uc2liaWxpdHkgdG8gb25seSBpbmRpY2F0ZSByZWFsbHlcclxuICAgICAqIHZhbGlkIGNlcnRpZmljYXRlcyBhcyB2YWxpZCBpbiB5b3VyIHByb2R1Y3QgaXMgdXAgdG8geW91LiBcclxuICAgICAqIFRoaXMgaXMgYWxzbyBwb3RlbnRpYWxseSB1c2VmdWxsIGZvciBkZWJ1Z2dpbmcuXHJcbiAgICAgKi9cclxuICAgIGV4cGxpY2l0Q2VydHM/OiBDZXJ0SW5mb1tdO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIEV1RGdjIHtcclxuICAgICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXJzZXMgdGhlIGRhdGEgb2YgYSBkaWdpdGFsIHZhY2NpbmF0aW9uIHFyY29kZSBhbmQgcmV0dXJucyBhIHByb21pc2UgXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBlbmNvZGVkRGF0YSB0aGUgZGF0YSBpbnNpZGUgdGhlIHFyLWNvZGUuXHJcbiAgICAgKiBAcmV0dXJucyBhIGphdmFzY3JpcCBzdHJ1Y3R1cmUgd2l0aCB0aGUgY29udGVudHMgXHJcbiAgICAgKi9cclxuICAgIHN0YXRpYyBhc3luYyBwYXJzZShlbmNvZGVkRGF0YTogc3RyaW5nKTogUHJvbWlzZTxFdURnY0NlcnQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZW5jb2RlZERhdGEuaW5kZXhPZihcIkhDMTpcIikgPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgZW5jb2RlZERhdGEgPSBlbmNvZGVkRGF0YS5zdWJzdHJpbmcoNCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZGVjb2RlZERhdGEgPSBiYXNlNDUuZGVjb2RlKGVuY29kZWREYXRhKTtcclxuICAgICAgICAgICAgemxpYi5pbmZsYXRlKGRlY29kZWREYXRhLCBmdW5jdGlvbiAoZXJyb3I6IGFueSwgYnVmOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coYnVmLnRvU3RyaW5nKFwiaGV4XCIpKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNib3JXZWIgPSBjYm9yXHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNib3JXZWIuZGVjb2RlRmlyc3QoYnVmLCBmdW5jdGlvbiAoZXJyb3I6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyb3IpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0ID0gb2JqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN3dCA9IHQudG9KU09OKCkudmFsdWVbMl1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2Jvci5kZWNvZGVGaXJzdChjd3QsIGZ1bmN0aW9uIChlcnJvcjogYW55LCBvYmo6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdDIgPSBvYmpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhjZXJ0UmF3ID0gdDIuZ2V0KENsYWltS2V5SGNlcnQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBldWRnYyA9IGhjZXJ0UmF3LmdldChDbGFpbUtleUV1RGdjVjEpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShldWRnYywgbnVsbCwgNCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGV1ZGdjKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTsgIFxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICAqIC4uLiBwZXJmb3JtIHRoZSB2YWxpZGF0aW9uXHJcbiAgICAgKlxyXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgdGhlIGNlcnQgaXMgaW52YWxpZC5cclxuICAgICAqIHRoaXMgY2FuIGJlIHRoZSBjYXNlIGlmIFxyXG4gICAgICogXHJcbiAgICAgKiAxLiB0aGUgY2VydCBmYWxzZWx5IGNsYWltcyB0byBiZSBzaWduZWQgYnkgb25lIG9mIHRoZSBzaWduYXR1cmVzIGluIHRoZSBcclxuICAgICAqICAgIHRydXN0bGlzdCBcclxuICAgICAqIDIuIG9yIGlmIHRoZSBjZXJ0IGlzIG5vdCBzaWduZWQgY29ycmVjdGx5IGF0IGFsbFxyXG4gICAgICogMy4gb3IgaWYgdGhlIGNlcnQgaXMgc2lnbmVkIGNvcnJlY3RseSBieSBzb21lIHVua25vd24gc2lnbmF0dXJlIFxyXG4gICAgICogXHJcbiAgICAgKiBhbGwgdGhyZWUgY2FzZXMgcmVzdWx0IGluIGFuIGludmFsaWQgY2VydGlmaWNhdGVcclxuICAgICAqIFxyXG4gICAgICogdGhlIHNlY29uZCBvcHRpb25hbCBhcmd1bWVudCBjb250cm9sbHMgc2V2ZXJhbCBhc3BlY3RzIG9mIGhvdyB0aGUgXHJcbiAgICAgKiB2YWxpZGF0aW9uIG1ldGhvZCBzaG91bGQgd29yay5cclxuICAgICAqICBcclxuICAgICAqIENlcnRpZmljYXRlcyB0aGF0IGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoZSBjbGllbnQtc2lkZSBicm93c2VyIGNyeXB0byBhcmUgYWxzbyBza2lwcGVkXHJcbiAgICAgKiBhbmQgYSB3YXJuaW5nIG1lc3NhZ2UgaXMgcHJpbnRlZCBvbiB0aGUgY29uc29sZS4gXHJcbiAgICAgKiBcclxuICAgICAqL1xyXG4gICAgc3RhdGljIGFzeW5jIHZhbGlkYXRlKGVuY29kZWREYXRhOiBzdHJpbmcsIG9wdGlvbnM/OiBWYWxpZGF0aW9uT3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IGNvc2UxID0gYXdhaXQgQ29zZTEudmFsdWVPZihlbmNvZGVkRGF0YSlcclxuICAgICAgICBpZiAoIWNvc2UxKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJhdyA9IGNvc2UxLm1ha2VEYXRhRm9yVmVyaWZpY2F0aW9uKClcclxuICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBCdWZmZXIuZnJvbShjb3NlMS5lbmNvZGVTaWduYXR1cmUoY29zZTEuc2lnbmF0dXJlcykpLnRvU3RyaW5nKFwiaGV4XCIpXHJcbiAgICAgICAgdmFyIGNlcnRJbmZvcyA9IGF3YWl0IFRydXN0bGlzdC5pbnN0YW5jZS5nZXRDZXJ0SW5mb3MoKVxyXG4gICAgICAgIGlmIChvcHRpb25zPy5leHBsaWNpdENlcnRzKSB7XHJcbiAgICAgICAgICAgIGNlcnRJbmZvcyA9IFsuLi5vcHRpb25zPy5leHBsaWNpdENlcnRzXVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBmaWx0ZXIgY2VydHNcclxuICAgICAgICBpZiAob3B0aW9ucz8uY2VydEZpbHRlcikge1xyXG4gICAgICAgICAgICBjb25zdCBvbGRDb3VudCA9IGNlcnRJbmZvcy5sZW5ndGhcclxuICAgICAgICAgICAgY2VydEluZm9zID0gY2VydEluZm9zLmZpbHRlcihvcHRpb25zPy5jZXJ0RmlsdGVyKVxyXG4gICAgICAgICAgICBpZiAoY2VydEluZm9zLmxlbmd0aCAhPSBvbGRDb3VudCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKFwiI1wiICsgKG9sZENvdW50IC0gY2VydEluZm9zLmxlbmd0aCkgKyBcIiBvZiBcIiArIG9sZENvdW50ICsgXCIgY2VydGlmY2F0ZXMgcmVtb3ZlZCBieSBmaWx0ZXJcIilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbiA9IGNlcnRJbmZvcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgY2VydEluZm8gPSBjZXJ0SW5mb3NbaV1cclxuICAgICAgICAgICAgLy8gaWYgd2UgcnVuIGludG8gYW4gZXhjZXB0aW9uIG9uIG9uZSBjZXJ0aW5mbywgY29udGludWUgd2l0aCB0aGUgb3RoZXJzXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2ZXJpZnkgPSBjcnlwdG8uY3JlYXRlVmVyaWZ5KFwic2hhMjU2XCIpXHJcbiAgICAgICAgICAgICAgICB2ZXJpZnkudXBkYXRlKHJhdylcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZlcmlmaWNhdGlvbiA9IHZlcmlmeS52ZXJpZnkoY2VydEluZm8ucHVia2V5LCBzaWduYXR1cmUsIFwiaGV4XCIpXHJcbiAgICAgICAgICAgICAgICBpZiAodmVyaWZpY2F0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgZm9yIGRhdGUgKHZhbGlkaXR5IGRhdGVzIG9mIHg1MDkgY2VydGlmaWNhdGUpXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKClcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aW1lVmFsaWQgPSBub3cgPj0gY2VydEluZm8ubm90YmVmb3JlICYmIG5vdyA8PSBjZXJ0SW5mby5ub3RhZnRlclxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aW1lVmFsaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNlcnRJbmZvXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXCJ1bmFibGUgdG8gaGFuZGxlIGNlcnQgXCIgKyAoaSArIDEpICsgXCIgb2YgXCIgKyBuICsgXCI6IFwiICsgY2VydEluZm8uc3ViamVjdCArIFwiOiBcIiArIGUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhyb3cgXCJOb3QgbWF0Y2hpbmcgY2VydGlmaWNhdGUgZm91bmRcIlxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IGNvbnN0IEV1RGdjX3BhcnNlID0gRXVEZ2MucGFyc2U7XHJcbmV4cG9ydCBjb25zdCBFdURnY192YWxpZGF0ZSA9IEV1RGdjLnZhbGlkYXRlO1xyXG5cclxuLy8gZGVmaW5lIGEgXCJnbG9iYWxcIiBtZXRob2QgaW4gdGhlIGJyb3dzZXJzIHdpbmRvdyBvYmplY3QgaWZmIHJ1bm5pbmdcclxuLy8gaW4gYSBicm93c2VyIGVudmlyb25tZW50XHJcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAod2luZG93IGFzIGFueSkuRXVEZ2NfcGFyc2UgPSBFdURnYy5wYXJzZTtcclxuICAgICh3aW5kb3cgYXMgYW55KS5FdURnY192YWxpZGF0ZSA9IEV1RGdjLnZhbGlkYXRlO1xyXG59XHJcblxyXG5jb25zb2xlLmxvZyhcImV1ZGdjLnRzXCIpXHJcbiIsIi8qXHJcbiAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZSBjb250cmlidXRvclxyXG4gKiBsaWNlbnNlIGFncmVlbWVudHM7IGFuZCB0byBZb3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMC4gXCJcclxuICovXHJcbi8qXHJcbiAqIFdyaXR0ZW4gYnkgU2NvcGV2aXNpbyBBRyAyMDIxXHJcbiAqL1xyXG5pbXBvcnQgXCIuL2V1ZGdjXCJcclxuaW1wb3J0IFwiLi9jb3NlMVwiXHJcblxyXG5jb25zb2xlLmxvZyhcIkVVREdDIGJ5IFNjb3BldmlzaW8gQUdcIikiLCJcbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBkZXByZWNhdGU7XG5cbi8qKlxuICogTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbiAqIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS5ub0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50aHJvd0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIHRocm93IGFuIEVycm9yIHdoZW4gaW52b2tlZC5cbiAqXG4gKiBJZiBgbG9jYWxTdG9yYWdlLnRyYWNlRGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gZGVwcmVjYXRlZCBmdW5jdGlvbnNcbiAqIHdpbGwgaW52b2tlIGBjb25zb2xlLnRyYWNlKClgIGluc3RlYWQgb2YgYGNvbnNvbGUuZXJyb3IoKWAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSB0aGUgZnVuY3Rpb24gdG8gZGVwcmVjYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gbXNnIC0gdGhlIHN0cmluZyB0byBwcmludCB0byB0aGUgY29uc29sZSB3aGVuIGBmbmAgaXMgaW52b2tlZFxuICogQHJldHVybnMge0Z1bmN0aW9ufSBhIG5ldyBcImRlcHJlY2F0ZWRcIiB2ZXJzaW9uIG9mIGBmbmBcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVwcmVjYXRlIChmbiwgbXNnKSB7XG4gIGlmIChjb25maWcoJ25vRGVwcmVjYXRpb24nKSkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgaWYgKGNvbmZpZygndGhyb3dEZXByZWNhdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChjb25maWcoJ3RyYWNlRGVwcmVjYXRpb24nKSkge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgIH1cbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGBsb2NhbFN0b3JhZ2VgIGZvciBib29sZWFuIHZhbHVlcyBmb3IgdGhlIGdpdmVuIGBuYW1lYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb25maWcgKG5hbWUpIHtcbiAgLy8gYWNjZXNzaW5nIGdsb2JhbC5sb2NhbFN0b3JhZ2UgY2FuIHRyaWdnZXIgYSBET01FeGNlcHRpb24gaW4gc2FuZGJveGVkIGlmcmFtZXNcbiAgdHJ5IHtcbiAgICBpZiAoIWdsb2JhbC5sb2NhbFN0b3JhZ2UpIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdmFsID0gZ2xvYmFsLmxvY2FsU3RvcmFnZVtuYW1lXTtcbiAgaWYgKG51bGwgPT0gdmFsKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBTdHJpbmcodmFsKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQnVmZmVyKGFyZykge1xuICByZXR1cm4gYXJnICYmIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnXG4gICAgJiYgdHlwZW9mIGFyZy5jb3B5ID09PSAnZnVuY3Rpb24nXG4gICAgJiYgdHlwZW9mIGFyZy5maWxsID09PSAnZnVuY3Rpb24nXG4gICAgJiYgdHlwZW9mIGFyZy5yZWFkVUludDggPT09ICdmdW5jdGlvbic7XG59IiwiLy8gQ3VycmVudGx5IGluIHN5bmMgd2l0aCBOb2RlLmpzIGxpYi9pbnRlcm5hbC91dGlsL3R5cGVzLmpzXG4vLyBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUvY29tbWl0LzExMmNjN2MyNzU1MTI1NGFhMmIxNzA5OGZiNzc0ODY3ZjA1ZWQwZDlcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaXNBcmd1bWVudHNPYmplY3QgPSByZXF1aXJlKCdpcy1hcmd1bWVudHMnKTtcbnZhciBpc0dlbmVyYXRvckZ1bmN0aW9uID0gcmVxdWlyZSgnaXMtZ2VuZXJhdG9yLWZ1bmN0aW9uJyk7XG52YXIgd2hpY2hUeXBlZEFycmF5ID0gcmVxdWlyZSgnd2hpY2gtdHlwZWQtYXJyYXknKTtcbnZhciBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCdpcy10eXBlZC1hcnJheScpO1xuXG5mdW5jdGlvbiB1bmN1cnJ5VGhpcyhmKSB7XG4gIHJldHVybiBmLmNhbGwuYmluZChmKTtcbn1cblxudmFyIEJpZ0ludFN1cHBvcnRlZCA9IHR5cGVvZiBCaWdJbnQgIT09ICd1bmRlZmluZWQnO1xudmFyIFN5bWJvbFN1cHBvcnRlZCA9IHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnO1xuXG52YXIgT2JqZWN0VG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyhPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nKTtcblxudmFyIG51bWJlclZhbHVlID0gdW5jdXJyeVRoaXMoTnVtYmVyLnByb3RvdHlwZS52YWx1ZU9mKTtcbnZhciBzdHJpbmdWYWx1ZSA9IHVuY3VycnlUaGlzKFN0cmluZy5wcm90b3R5cGUudmFsdWVPZik7XG52YXIgYm9vbGVhblZhbHVlID0gdW5jdXJyeVRoaXMoQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZik7XG5cbmlmIChCaWdJbnRTdXBwb3J0ZWQpIHtcbiAgdmFyIGJpZ0ludFZhbHVlID0gdW5jdXJyeVRoaXMoQmlnSW50LnByb3RvdHlwZS52YWx1ZU9mKTtcbn1cblxuaWYgKFN5bWJvbFN1cHBvcnRlZCkge1xuICB2YXIgc3ltYm9sVmFsdWUgPSB1bmN1cnJ5VGhpcyhTeW1ib2wucHJvdG90eXBlLnZhbHVlT2YpO1xufVxuXG5mdW5jdGlvbiBjaGVja0JveGVkUHJpbWl0aXZlKHZhbHVlLCBwcm90b3R5cGVWYWx1ZU9mKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgcHJvdG90eXBlVmFsdWVPZih2YWx1ZSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2goZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnRzLmlzQXJndW1lbnRzT2JqZWN0ID0gaXNBcmd1bWVudHNPYmplY3Q7XG5leHBvcnRzLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBpc0dlbmVyYXRvckZ1bmN0aW9uO1xuZXhwb3J0cy5pc1R5cGVkQXJyYXkgPSBpc1R5cGVkQXJyYXk7XG5cbi8vIFRha2VuIGZyb20gaGVyZSBhbmQgbW9kaWZpZWQgZm9yIGJldHRlciBicm93c2VyIHN1cHBvcnRcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvcC1pcy1wcm9taXNlL2Jsb2IvY2RhMzVhNTEzYmRhMDNmOTc3YWQ1Y2RlM2EwNzlkMjM3ZTgyZDdlZi9pbmRleC5qc1xuZnVuY3Rpb24gaXNQcm9taXNlKGlucHV0KSB7XG5cdHJldHVybiAoXG5cdFx0KFxuXHRcdFx0dHlwZW9mIFByb21pc2UgIT09ICd1bmRlZmluZWQnICYmXG5cdFx0XHRpbnB1dCBpbnN0YW5jZW9mIFByb21pc2Vcblx0XHQpIHx8XG5cdFx0KFxuXHRcdFx0aW5wdXQgIT09IG51bGwgJiZcblx0XHRcdHR5cGVvZiBpbnB1dCA9PT0gJ29iamVjdCcgJiZcblx0XHRcdHR5cGVvZiBpbnB1dC50aGVuID09PSAnZnVuY3Rpb24nICYmXG5cdFx0XHR0eXBlb2YgaW5wdXQuY2F0Y2ggPT09ICdmdW5jdGlvbidcblx0XHQpXG5cdCk7XG59XG5leHBvcnRzLmlzUHJvbWlzZSA9IGlzUHJvbWlzZTtcblxuZnVuY3Rpb24gaXNBcnJheUJ1ZmZlclZpZXcodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgQXJyYXlCdWZmZXIuaXNWaWV3KSB7XG4gICAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIGlzVHlwZWRBcnJheSh2YWx1ZSkgfHxcbiAgICBpc0RhdGFWaWV3KHZhbHVlKVxuICApO1xufVxuZXhwb3J0cy5pc0FycmF5QnVmZmVyVmlldyA9IGlzQXJyYXlCdWZmZXJWaWV3O1xuXG5cbmZ1bmN0aW9uIGlzVWludDhBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ1VpbnQ4QXJyYXknO1xufVxuZXhwb3J0cy5pc1VpbnQ4QXJyYXkgPSBpc1VpbnQ4QXJyYXk7XG5cbmZ1bmN0aW9uIGlzVWludDhDbGFtcGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkgPT09ICdVaW50OENsYW1wZWRBcnJheSc7XG59XG5leHBvcnRzLmlzVWludDhDbGFtcGVkQXJyYXkgPSBpc1VpbnQ4Q2xhbXBlZEFycmF5O1xuXG5mdW5jdGlvbiBpc1VpbnQxNkFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnVWludDE2QXJyYXknO1xufVxuZXhwb3J0cy5pc1VpbnQxNkFycmF5ID0gaXNVaW50MTZBcnJheTtcblxuZnVuY3Rpb24gaXNVaW50MzJBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ1VpbnQzMkFycmF5Jztcbn1cbmV4cG9ydHMuaXNVaW50MzJBcnJheSA9IGlzVWludDMyQXJyYXk7XG5cbmZ1bmN0aW9uIGlzSW50OEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnSW50OEFycmF5Jztcbn1cbmV4cG9ydHMuaXNJbnQ4QXJyYXkgPSBpc0ludDhBcnJheTtcblxuZnVuY3Rpb24gaXNJbnQxNkFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnSW50MTZBcnJheSc7XG59XG5leHBvcnRzLmlzSW50MTZBcnJheSA9IGlzSW50MTZBcnJheTtcblxuZnVuY3Rpb24gaXNJbnQzMkFycmF5KHZhbHVlKSB7XG4gIHJldHVybiB3aGljaFR5cGVkQXJyYXkodmFsdWUpID09PSAnSW50MzJBcnJheSc7XG59XG5leHBvcnRzLmlzSW50MzJBcnJheSA9IGlzSW50MzJBcnJheTtcblxuZnVuY3Rpb24gaXNGbG9hdDMyQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkgPT09ICdGbG9hdDMyQXJyYXknO1xufVxuZXhwb3J0cy5pc0Zsb2F0MzJBcnJheSA9IGlzRmxvYXQzMkFycmF5O1xuXG5mdW5jdGlvbiBpc0Zsb2F0NjRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ0Zsb2F0NjRBcnJheSc7XG59XG5leHBvcnRzLmlzRmxvYXQ2NEFycmF5ID0gaXNGbG9hdDY0QXJyYXk7XG5cbmZ1bmN0aW9uIGlzQmlnSW50NjRBcnJheSh2YWx1ZSkge1xuICByZXR1cm4gd2hpY2hUeXBlZEFycmF5KHZhbHVlKSA9PT0gJ0JpZ0ludDY0QXJyYXknO1xufVxuZXhwb3J0cy5pc0JpZ0ludDY0QXJyYXkgPSBpc0JpZ0ludDY0QXJyYXk7XG5cbmZ1bmN0aW9uIGlzQmlnVWludDY0QXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkgPT09ICdCaWdVaW50NjRBcnJheSc7XG59XG5leHBvcnRzLmlzQmlnVWludDY0QXJyYXkgPSBpc0JpZ1VpbnQ2NEFycmF5O1xuXG5mdW5jdGlvbiBpc01hcFRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IE1hcF0nO1xufVxuaXNNYXBUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgTWFwICE9PSAndW5kZWZpbmVkJyAmJlxuICBpc01hcFRvU3RyaW5nKG5ldyBNYXAoKSlcbik7XG5cbmZ1bmN0aW9uIGlzTWFwKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgTWFwID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBpc01hcFRvU3RyaW5nLndvcmtpbmdcbiAgICA/IGlzTWFwVG9TdHJpbmcodmFsdWUpXG4gICAgOiB2YWx1ZSBpbnN0YW5jZW9mIE1hcDtcbn1cbmV4cG9ydHMuaXNNYXAgPSBpc01hcDtcblxuZnVuY3Rpb24gaXNTZXRUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBTZXRdJztcbn1cbmlzU2V0VG9TdHJpbmcud29ya2luZyA9IChcbiAgdHlwZW9mIFNldCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgaXNTZXRUb1N0cmluZyhuZXcgU2V0KCkpXG4pO1xuZnVuY3Rpb24gaXNTZXQodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBTZXQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzU2V0VG9TdHJpbmcud29ya2luZ1xuICAgID8gaXNTZXRUb1N0cmluZyh2YWx1ZSlcbiAgICA6IHZhbHVlIGluc3RhbmNlb2YgU2V0O1xufVxuZXhwb3J0cy5pc1NldCA9IGlzU2V0O1xuXG5mdW5jdGlvbiBpc1dlYWtNYXBUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBXZWFrTWFwXSc7XG59XG5pc1dlYWtNYXBUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgV2Vha01hcCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgaXNXZWFrTWFwVG9TdHJpbmcobmV3IFdlYWtNYXAoKSlcbik7XG5mdW5jdGlvbiBpc1dlYWtNYXAodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiBXZWFrTWFwID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBpc1dlYWtNYXBUb1N0cmluZy53b3JraW5nXG4gICAgPyBpc1dlYWtNYXBUb1N0cmluZyh2YWx1ZSlcbiAgICA6IHZhbHVlIGluc3RhbmNlb2YgV2Vha01hcDtcbn1cbmV4cG9ydHMuaXNXZWFrTWFwID0gaXNXZWFrTWFwO1xuXG5mdW5jdGlvbiBpc1dlYWtTZXRUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBXZWFrU2V0XSc7XG59XG5pc1dlYWtTZXRUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgV2Vha1NldCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgaXNXZWFrU2V0VG9TdHJpbmcobmV3IFdlYWtTZXQoKSlcbik7XG5mdW5jdGlvbiBpc1dlYWtTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzV2Vha1NldFRvU3RyaW5nKHZhbHVlKTtcbn1cbmV4cG9ydHMuaXNXZWFrU2V0ID0gaXNXZWFrU2V0O1xuXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyVG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdFRvU3RyaW5nKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJztcbn1cbmlzQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nID0gKFxuICB0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmXG4gIGlzQXJyYXlCdWZmZXJUb1N0cmluZyhuZXcgQXJyYXlCdWZmZXIoKSlcbik7XG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nXG4gICAgPyBpc0FycmF5QnVmZmVyVG9TdHJpbmcodmFsdWUpXG4gICAgOiB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyO1xufVxuZXhwb3J0cy5pc0FycmF5QnVmZmVyID0gaXNBcnJheUJ1ZmZlcjtcblxuZnVuY3Rpb24gaXNEYXRhVmlld1RvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IERhdGFWaWV3XSc7XG59XG5pc0RhdGFWaWV3VG9TdHJpbmcud29ya2luZyA9IChcbiAgdHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJlxuICB0eXBlb2YgRGF0YVZpZXcgIT09ICd1bmRlZmluZWQnICYmXG4gIGlzRGF0YVZpZXdUb1N0cmluZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpLCAwLCAxKSlcbik7XG5mdW5jdGlvbiBpc0RhdGFWaWV3KHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgRGF0YVZpZXcgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGlzRGF0YVZpZXdUb1N0cmluZy53b3JraW5nXG4gICAgPyBpc0RhdGFWaWV3VG9TdHJpbmcodmFsdWUpXG4gICAgOiB2YWx1ZSBpbnN0YW5jZW9mIERhdGFWaWV3O1xufVxuZXhwb3J0cy5pc0RhdGFWaWV3ID0gaXNEYXRhVmlldztcblxuLy8gU3RvcmUgYSBjb3B5IG9mIFNoYXJlZEFycmF5QnVmZmVyIGluIGNhc2UgaXQncyBkZWxldGVkIGVsc2V3aGVyZVxudmFyIFNoYXJlZEFycmF5QnVmZmVyQ29weSA9IHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgPyBTaGFyZWRBcnJheUJ1ZmZlciA6IHVuZGVmaW5lZDtcbmZ1bmN0aW9uIGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBTaGFyZWRBcnJheUJ1ZmZlcl0nO1xufVxuZnVuY3Rpb24gaXNTaGFyZWRBcnJheUJ1ZmZlcih2YWx1ZSkge1xuICBpZiAodHlwZW9mIFNoYXJlZEFycmF5QnVmZmVyQ29weSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nID09PSAndW5kZWZpbmVkJykge1xuICAgIGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZy53b3JraW5nID0gaXNTaGFyZWRBcnJheUJ1ZmZlclRvU3RyaW5nKG5ldyBTaGFyZWRBcnJheUJ1ZmZlckNvcHkoKSk7XG4gIH1cblxuICByZXR1cm4gaXNTaGFyZWRBcnJheUJ1ZmZlclRvU3RyaW5nLndvcmtpbmdcbiAgICA/IGlzU2hhcmVkQXJyYXlCdWZmZXJUb1N0cmluZyh2YWx1ZSlcbiAgICA6IHZhbHVlIGluc3RhbmNlb2YgU2hhcmVkQXJyYXlCdWZmZXJDb3B5O1xufVxuZXhwb3J0cy5pc1NoYXJlZEFycmF5QnVmZmVyID0gaXNTaGFyZWRBcnJheUJ1ZmZlcjtcblxuZnVuY3Rpb24gaXNBc3luY0Z1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IEFzeW5jRnVuY3Rpb25dJztcbn1cbmV4cG9ydHMuaXNBc3luY0Z1bmN0aW9uID0gaXNBc3luY0Z1bmN0aW9uO1xuXG5mdW5jdGlvbiBpc01hcEl0ZXJhdG9yKHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IE1hcCBJdGVyYXRvcl0nO1xufVxuZXhwb3J0cy5pc01hcEl0ZXJhdG9yID0gaXNNYXBJdGVyYXRvcjtcblxuZnVuY3Rpb24gaXNTZXRJdGVyYXRvcih2YWx1ZSkge1xuICByZXR1cm4gT2JqZWN0VG9TdHJpbmcodmFsdWUpID09PSAnW29iamVjdCBTZXQgSXRlcmF0b3JdJztcbn1cbmV4cG9ydHMuaXNTZXRJdGVyYXRvciA9IGlzU2V0SXRlcmF0b3I7XG5cbmZ1bmN0aW9uIGlzR2VuZXJhdG9yT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBPYmplY3RUb1N0cmluZyh2YWx1ZSkgPT09ICdbb2JqZWN0IEdlbmVyYXRvcl0nO1xufVxuZXhwb3J0cy5pc0dlbmVyYXRvck9iamVjdCA9IGlzR2VuZXJhdG9yT2JqZWN0O1xuXG5mdW5jdGlvbiBpc1dlYkFzc2VtYmx5Q29tcGlsZWRNb2R1bGUodmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdFRvU3RyaW5nKHZhbHVlKSA9PT0gJ1tvYmplY3QgV2ViQXNzZW1ibHkuTW9kdWxlXSc7XG59XG5leHBvcnRzLmlzV2ViQXNzZW1ibHlDb21waWxlZE1vZHVsZSA9IGlzV2ViQXNzZW1ibHlDb21waWxlZE1vZHVsZTtcblxuZnVuY3Rpb24gaXNOdW1iZXJPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGNoZWNrQm94ZWRQcmltaXRpdmUodmFsdWUsIG51bWJlclZhbHVlKTtcbn1cbmV4cG9ydHMuaXNOdW1iZXJPYmplY3QgPSBpc051bWJlck9iamVjdDtcblxuZnVuY3Rpb24gaXNTdHJpbmdPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIGNoZWNrQm94ZWRQcmltaXRpdmUodmFsdWUsIHN0cmluZ1ZhbHVlKTtcbn1cbmV4cG9ydHMuaXNTdHJpbmdPYmplY3QgPSBpc1N0cmluZ09iamVjdDtcblxuZnVuY3Rpb24gaXNCb29sZWFuT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBjaGVja0JveGVkUHJpbWl0aXZlKHZhbHVlLCBib29sZWFuVmFsdWUpO1xufVxuZXhwb3J0cy5pc0Jvb2xlYW5PYmplY3QgPSBpc0Jvb2xlYW5PYmplY3Q7XG5cbmZ1bmN0aW9uIGlzQmlnSW50T2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBCaWdJbnRTdXBwb3J0ZWQgJiYgY2hlY2tCb3hlZFByaW1pdGl2ZSh2YWx1ZSwgYmlnSW50VmFsdWUpO1xufVxuZXhwb3J0cy5pc0JpZ0ludE9iamVjdCA9IGlzQmlnSW50T2JqZWN0O1xuXG5mdW5jdGlvbiBpc1N5bWJvbE9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gU3ltYm9sU3VwcG9ydGVkICYmIGNoZWNrQm94ZWRQcmltaXRpdmUodmFsdWUsIHN5bWJvbFZhbHVlKTtcbn1cbmV4cG9ydHMuaXNTeW1ib2xPYmplY3QgPSBpc1N5bWJvbE9iamVjdDtcblxuZnVuY3Rpb24gaXNCb3hlZFByaW1pdGl2ZSh2YWx1ZSkge1xuICByZXR1cm4gKFxuICAgIGlzTnVtYmVyT2JqZWN0KHZhbHVlKSB8fFxuICAgIGlzU3RyaW5nT2JqZWN0KHZhbHVlKSB8fFxuICAgIGlzQm9vbGVhbk9iamVjdCh2YWx1ZSkgfHxcbiAgICBpc0JpZ0ludE9iamVjdCh2YWx1ZSkgfHxcbiAgICBpc1N5bWJvbE9iamVjdCh2YWx1ZSlcbiAgKTtcbn1cbmV4cG9ydHMuaXNCb3hlZFByaW1pdGl2ZSA9IGlzQm94ZWRQcmltaXRpdmU7XG5cbmZ1bmN0aW9uIGlzQW55QXJyYXlCdWZmZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyAmJiAoXG4gICAgaXNBcnJheUJ1ZmZlcih2YWx1ZSkgfHxcbiAgICBpc1NoYXJlZEFycmF5QnVmZmVyKHZhbHVlKVxuICApO1xufVxuZXhwb3J0cy5pc0FueUFycmF5QnVmZmVyID0gaXNBbnlBcnJheUJ1ZmZlcjtcblxuWydpc1Byb3h5JywgJ2lzRXh0ZXJuYWwnLCAnaXNNb2R1bGVOYW1lc3BhY2VPYmplY3QnXS5mb3JFYWNoKGZ1bmN0aW9uKG1ldGhvZCkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbWV0aG9kLCB7XG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgdmFsdWU6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1ldGhvZCArICcgaXMgbm90IHN1cHBvcnRlZCBpbiB1c2VybGFuZCcpO1xuICAgIH1cbiAgfSk7XG59KTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIHx8XG4gIGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqKSB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgIHZhciBkZXNjcmlwdG9ycyA9IHt9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzY3JpcHRvcnNba2V5c1tpXV0gPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwga2V5c1tpXSk7XG4gICAgfVxuICAgIHJldHVybiBkZXNjcmlwdG9ycztcbiAgfTtcblxudmFyIGZvcm1hdFJlZ0V4cCA9IC8lW3NkaiVdL2c7XG5leHBvcnRzLmZvcm1hdCA9IGZ1bmN0aW9uKGYpIHtcbiAgaWYgKCFpc1N0cmluZyhmKSkge1xuICAgIHZhciBvYmplY3RzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIG9iamVjdHMucHVzaChpbnNwZWN0KGFyZ3VtZW50c1tpXSkpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0cy5qb2luKCcgJyk7XG4gIH1cblxuICB2YXIgaSA9IDE7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBzdHIgPSBTdHJpbmcoZikucmVwbGFjZShmb3JtYXRSZWdFeHAsIGZ1bmN0aW9uKHgpIHtcbiAgICBpZiAoeCA9PT0gJyUlJykgcmV0dXJuICclJztcbiAgICBpZiAoaSA+PSBsZW4pIHJldHVybiB4O1xuICAgIHN3aXRjaCAoeCkge1xuICAgICAgY2FzZSAnJXMnOiByZXR1cm4gU3RyaW5nKGFyZ3NbaSsrXSk7XG4gICAgICBjYXNlICclZCc6IHJldHVybiBOdW1iZXIoYXJnc1tpKytdKTtcbiAgICAgIGNhc2UgJyVqJzpcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJnc1tpKytdKTtcbiAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgfSk7XG4gIGZvciAodmFyIHggPSBhcmdzW2ldOyBpIDwgbGVuOyB4ID0gYXJnc1srK2ldKSB7XG4gICAgaWYgKGlzTnVsbCh4KSB8fCAhaXNPYmplY3QoeCkpIHtcbiAgICAgIHN0ciArPSAnICcgKyB4O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgKz0gJyAnICsgaW5zcGVjdCh4KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn07XG5cblxuLy8gTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbi8vIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4vLyBJZiAtLW5vLWRlcHJlY2F0aW9uIGlzIHNldCwgdGhlbiBpdCBpcyBhIG5vLW9wLlxuZXhwb3J0cy5kZXByZWNhdGUgPSBmdW5jdGlvbihmbiwgbXNnKSB7XG4gIGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5ub0RlcHJlY2F0aW9uID09PSB0cnVlKSB7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgLy8gQWxsb3cgZm9yIGRlcHJlY2F0aW5nIHRoaW5ncyBpbiB0aGUgcHJvY2VzcyBvZiBzdGFydGluZyB1cC5cbiAgaWYgKHR5cGVvZiBwcm9jZXNzID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBleHBvcnRzLmRlcHJlY2F0ZShmbiwgbXNnKS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH07XG4gIH1cblxuICB2YXIgd2FybmVkID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGRlcHJlY2F0ZWQoKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIGlmIChwcm9jZXNzLnRocm93RGVwcmVjYXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICB9IGVsc2UgaWYgKHByb2Nlc3MudHJhY2VEZXByZWNhdGlvbikge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7XG4gICAgICB9XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIHJldHVybiBkZXByZWNhdGVkO1xufTtcblxuXG52YXIgZGVidWdzID0ge307XG52YXIgZGVidWdFbnZSZWdleCA9IC9eJC87XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0RFQlVHKSB7XG4gIHZhciBkZWJ1Z0VudiA9IHByb2Nlc3MuZW52Lk5PREVfREVCVUc7XG4gIGRlYnVnRW52ID0gZGVidWdFbnYucmVwbGFjZSgvW3xcXFxce30oKVtcXF1eJCs/Ll0vZywgJ1xcXFwkJicpXG4gICAgLnJlcGxhY2UoL1xcKi9nLCAnLionKVxuICAgIC5yZXBsYWNlKC8sL2csICckfF4nKVxuICAgIC50b1VwcGVyQ2FzZSgpO1xuICBkZWJ1Z0VudlJlZ2V4ID0gbmV3IFJlZ0V4cCgnXicgKyBkZWJ1Z0VudiArICckJywgJ2knKTtcbn1cbmV4cG9ydHMuZGVidWdsb2cgPSBmdW5jdGlvbihzZXQpIHtcbiAgc2V0ID0gc2V0LnRvVXBwZXJDYXNlKCk7XG4gIGlmICghZGVidWdzW3NldF0pIHtcbiAgICBpZiAoZGVidWdFbnZSZWdleC50ZXN0KHNldCkpIHtcbiAgICAgIHZhciBwaWQgPSBwcm9jZXNzLnBpZDtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBtc2cgPSBleHBvcnRzLmZvcm1hdC5hcHBseShleHBvcnRzLCBhcmd1bWVudHMpO1xuICAgICAgICBjb25zb2xlLmVycm9yKCclcyAlZDogJXMnLCBzZXQsIHBpZCwgbXNnKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7fTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRlYnVnc1tzZXRdO1xufTtcblxuXG4vKipcbiAqIEVjaG9zIHRoZSB2YWx1ZSBvZiBhIHZhbHVlLiBUcnlzIHRvIHByaW50IHRoZSB2YWx1ZSBvdXRcbiAqIGluIHRoZSBiZXN0IHdheSBwb3NzaWJsZSBnaXZlbiB0aGUgZGlmZmVyZW50IHR5cGVzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byBwcmludCBvdXQuXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBPcHRpb25hbCBvcHRpb25zIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgb3V0cHV0LlxuICovXG4vKiBsZWdhY3k6IG9iaiwgc2hvd0hpZGRlbiwgZGVwdGgsIGNvbG9ycyovXG5mdW5jdGlvbiBpbnNwZWN0KG9iaiwgb3B0cykge1xuICAvLyBkZWZhdWx0IG9wdGlvbnNcbiAgdmFyIGN0eCA9IHtcbiAgICBzZWVuOiBbXSxcbiAgICBzdHlsaXplOiBzdHlsaXplTm9Db2xvclxuICB9O1xuICAvLyBsZWdhY3kuLi5cbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gMykgY3R4LmRlcHRoID0gYXJndW1lbnRzWzJdO1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+PSA0KSBjdHguY29sb3JzID0gYXJndW1lbnRzWzNdO1xuICBpZiAoaXNCb29sZWFuKG9wdHMpKSB7XG4gICAgLy8gbGVnYWN5Li4uXG4gICAgY3R4LnNob3dIaWRkZW4gPSBvcHRzO1xuICB9IGVsc2UgaWYgKG9wdHMpIHtcbiAgICAvLyBnb3QgYW4gXCJvcHRpb25zXCIgb2JqZWN0XG4gICAgZXhwb3J0cy5fZXh0ZW5kKGN0eCwgb3B0cyk7XG4gIH1cbiAgLy8gc2V0IGRlZmF1bHQgb3B0aW9uc1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LnNob3dIaWRkZW4pKSBjdHguc2hvd0hpZGRlbiA9IGZhbHNlO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmRlcHRoKSkgY3R4LmRlcHRoID0gMjtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jb2xvcnMpKSBjdHguY29sb3JzID0gZmFsc2U7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguY3VzdG9tSW5zcGVjdCkpIGN0eC5jdXN0b21JbnNwZWN0ID0gdHJ1ZTtcbiAgaWYgKGN0eC5jb2xvcnMpIGN0eC5zdHlsaXplID0gc3R5bGl6ZVdpdGhDb2xvcjtcbiAgcmV0dXJuIGZvcm1hdFZhbHVlKGN0eCwgb2JqLCBjdHguZGVwdGgpO1xufVxuZXhwb3J0cy5pbnNwZWN0ID0gaW5zcGVjdDtcblxuXG4vLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0FOU0lfZXNjYXBlX2NvZGUjZ3JhcGhpY3Ncbmluc3BlY3QuY29sb3JzID0ge1xuICAnYm9sZCcgOiBbMSwgMjJdLFxuICAnaXRhbGljJyA6IFszLCAyM10sXG4gICd1bmRlcmxpbmUnIDogWzQsIDI0XSxcbiAgJ2ludmVyc2UnIDogWzcsIDI3XSxcbiAgJ3doaXRlJyA6IFszNywgMzldLFxuICAnZ3JleScgOiBbOTAsIDM5XSxcbiAgJ2JsYWNrJyA6IFszMCwgMzldLFxuICAnYmx1ZScgOiBbMzQsIDM5XSxcbiAgJ2N5YW4nIDogWzM2LCAzOV0sXG4gICdncmVlbicgOiBbMzIsIDM5XSxcbiAgJ21hZ2VudGEnIDogWzM1LCAzOV0sXG4gICdyZWQnIDogWzMxLCAzOV0sXG4gICd5ZWxsb3cnIDogWzMzLCAzOV1cbn07XG5cbi8vIERvbid0IHVzZSAnYmx1ZScgbm90IHZpc2libGUgb24gY21kLmV4ZVxuaW5zcGVjdC5zdHlsZXMgPSB7XG4gICdzcGVjaWFsJzogJ2N5YW4nLFxuICAnbnVtYmVyJzogJ3llbGxvdycsXG4gICdib29sZWFuJzogJ3llbGxvdycsXG4gICd1bmRlZmluZWQnOiAnZ3JleScsXG4gICdudWxsJzogJ2JvbGQnLFxuICAnc3RyaW5nJzogJ2dyZWVuJyxcbiAgJ2RhdGUnOiAnbWFnZW50YScsXG4gIC8vIFwibmFtZVwiOiBpbnRlbnRpb25hbGx5IG5vdCBzdHlsaW5nXG4gICdyZWdleHAnOiAncmVkJ1xufTtcblxuXG5mdW5jdGlvbiBzdHlsaXplV2l0aENvbG9yKHN0ciwgc3R5bGVUeXBlKSB7XG4gIHZhciBzdHlsZSA9IGluc3BlY3Quc3R5bGVzW3N0eWxlVHlwZV07XG5cbiAgaWYgKHN0eWxlKSB7XG4gICAgcmV0dXJuICdcXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMF0gKyAnbScgKyBzdHIgK1xuICAgICAgICAgICAnXFx1MDAxYlsnICsgaW5zcGVjdC5jb2xvcnNbc3R5bGVdWzFdICsgJ20nO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdHI7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBzdHlsaXplTm9Db2xvcihzdHIsIHN0eWxlVHlwZSkge1xuICByZXR1cm4gc3RyO1xufVxuXG5cbmZ1bmN0aW9uIGFycmF5VG9IYXNoKGFycmF5KSB7XG4gIHZhciBoYXNoID0ge307XG5cbiAgYXJyYXkuZm9yRWFjaChmdW5jdGlvbih2YWwsIGlkeCkge1xuICAgIGhhc2hbdmFsXSA9IHRydWU7XG4gIH0pO1xuXG4gIHJldHVybiBoYXNoO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdFZhbHVlKGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcykge1xuICAvLyBQcm92aWRlIGEgaG9vayBmb3IgdXNlci1zcGVjaWZpZWQgaW5zcGVjdCBmdW5jdGlvbnMuXG4gIC8vIENoZWNrIHRoYXQgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYW4gaW5zcGVjdCBmdW5jdGlvbiBvbiBpdFxuICBpZiAoY3R4LmN1c3RvbUluc3BlY3QgJiZcbiAgICAgIHZhbHVlICYmXG4gICAgICBpc0Z1bmN0aW9uKHZhbHVlLmluc3BlY3QpICYmXG4gICAgICAvLyBGaWx0ZXIgb3V0IHRoZSB1dGlsIG1vZHVsZSwgaXQncyBpbnNwZWN0IGZ1bmN0aW9uIGlzIHNwZWNpYWxcbiAgICAgIHZhbHVlLmluc3BlY3QgIT09IGV4cG9ydHMuaW5zcGVjdCAmJlxuICAgICAgLy8gQWxzbyBmaWx0ZXIgb3V0IGFueSBwcm90b3R5cGUgb2JqZWN0cyB1c2luZyB0aGUgY2lyY3VsYXIgY2hlY2suXG4gICAgICAhKHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gdmFsdWUpKSB7XG4gICAgdmFyIHJldCA9IHZhbHVlLmluc3BlY3QocmVjdXJzZVRpbWVzLCBjdHgpO1xuICAgIGlmICghaXNTdHJpbmcocmV0KSkge1xuICAgICAgcmV0ID0gZm9ybWF0VmFsdWUoY3R4LCByZXQsIHJlY3Vyc2VUaW1lcyk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvLyBQcmltaXRpdmUgdHlwZXMgY2Fubm90IGhhdmUgcHJvcGVydGllc1xuICB2YXIgcHJpbWl0aXZlID0gZm9ybWF0UHJpbWl0aXZlKGN0eCwgdmFsdWUpO1xuICBpZiAocHJpbWl0aXZlKSB7XG4gICAgcmV0dXJuIHByaW1pdGl2ZTtcbiAgfVxuXG4gIC8vIExvb2sgdXAgdGhlIGtleXMgb2YgdGhlIG9iamVjdC5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyh2YWx1ZSk7XG4gIHZhciB2aXNpYmxlS2V5cyA9IGFycmF5VG9IYXNoKGtleXMpO1xuXG4gIGlmIChjdHguc2hvd0hpZGRlbikge1xuICAgIGtleXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh2YWx1ZSk7XG4gIH1cblxuICAvLyBJRSBkb2Vzbid0IG1ha2UgZXJyb3IgZmllbGRzIG5vbi1lbnVtZXJhYmxlXG4gIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9kd3c1MnNidCh2PXZzLjk0KS5hc3B4XG4gIGlmIChpc0Vycm9yKHZhbHVlKVxuICAgICAgJiYgKGtleXMuaW5kZXhPZignbWVzc2FnZScpID49IDAgfHwga2V5cy5pbmRleE9mKCdkZXNjcmlwdGlvbicpID49IDApKSB7XG4gICAgcmV0dXJuIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgfVxuXG4gIC8vIFNvbWUgdHlwZSBvZiBvYmplY3Qgd2l0aG91dCBwcm9wZXJ0aWVzIGNhbiBiZSBzaG9ydGN1dHRlZC5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgICB2YXIgbmFtZSA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKCdbRnVuY3Rpb24nICsgbmFtZSArICddJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTtcbiAgICB9XG4gICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ2RhdGUnKTtcbiAgICB9XG4gICAgaWYgKGlzRXJyb3IodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNlID0gJycsIGFycmF5ID0gZmFsc2UsIGJyYWNlcyA9IFsneycsICd9J107XG5cbiAgLy8gTWFrZSBBcnJheSBzYXkgdGhhdCB0aGV5IGFyZSBBcnJheVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBhcnJheSA9IHRydWU7XG4gICAgYnJhY2VzID0gWydbJywgJ10nXTtcbiAgfVxuXG4gIC8vIE1ha2UgZnVuY3Rpb25zIHNheSB0aGF0IHRoZXkgYXJlIGZ1bmN0aW9uc1xuICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICB2YXIgbiA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnO1xuICAgIGJhc2UgPSAnIFtGdW5jdGlvbicgKyBuICsgJ10nO1xuICB9XG5cbiAgLy8gTWFrZSBSZWdFeHBzIHNheSB0aGF0IHRoZXkgYXJlIFJlZ0V4cHNcbiAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBkYXRlcyB3aXRoIHByb3BlcnRpZXMgZmlyc3Qgc2F5IHRoZSBkYXRlXG4gIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIERhdGUucHJvdG90eXBlLnRvVVRDU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBlcnJvciB3aXRoIG1lc3NhZ2UgZmlyc3Qgc2F5IHRoZSBlcnJvclxuICBpZiAoaXNFcnJvcih2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgZm9ybWF0RXJyb3IodmFsdWUpO1xuICB9XG5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwICYmICghYXJyYXkgfHwgdmFsdWUubGVuZ3RoID09IDApKSB7XG4gICAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyBicmFjZXNbMV07XG4gIH1cblxuICBpZiAocmVjdXJzZVRpbWVzIDwgMCkge1xuICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAncmVnZXhwJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW09iamVjdF0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuXG4gIGN0eC5zZWVuLnB1c2godmFsdWUpO1xuXG4gIHZhciBvdXRwdXQ7XG4gIGlmIChhcnJheSkge1xuICAgIG91dHB1dCA9IGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpO1xuICB9IGVsc2Uge1xuICAgIG91dHB1dCA9IGtleXMubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpO1xuICAgIH0pO1xuICB9XG5cbiAgY3R4LnNlZW4ucG9wKCk7XG5cbiAgcmV0dXJuIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSkge1xuICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgndW5kZWZpbmVkJywgJ3VuZGVmaW5lZCcpO1xuICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgdmFyIHNpbXBsZSA9ICdcXCcnICsgSlNPTi5zdHJpbmdpZnkodmFsdWUpLnJlcGxhY2UoL15cInxcIiQvZywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFwiL2csICdcIicpICsgJ1xcJyc7XG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKHNpbXBsZSwgJ3N0cmluZycpO1xuICB9XG4gIGlmIChpc051bWJlcih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdudW1iZXInKTtcbiAgaWYgKGlzQm9vbGVhbih2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdib29sZWFuJyk7XG4gIC8vIEZvciBzb21lIHJlYXNvbiB0eXBlb2YgbnVsbCBpcyBcIm9iamVjdFwiLCBzbyBzcGVjaWFsIGNhc2UgaGVyZS5cbiAgaWYgKGlzTnVsbCh2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCdudWxsJywgJ251bGwnKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRFcnJvcih2YWx1ZSkge1xuICByZXR1cm4gJ1snICsgRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpICsgJ10nO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eSh2YWx1ZSwgU3RyaW5nKGkpKSkge1xuICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cyxcbiAgICAgICAgICBTdHJpbmcoaSksIHRydWUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0cHV0LnB1c2goJycpO1xuICAgIH1cbiAgfVxuICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgaWYgKCFrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLFxuICAgICAgICAgIGtleSwgdHJ1ZSkpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBvdXRwdXQ7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5LCBhcnJheSkge1xuICB2YXIgbmFtZSwgc3RyLCBkZXNjO1xuICBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih2YWx1ZSwga2V5KSB8fCB7IHZhbHVlOiB2YWx1ZVtrZXldIH07XG4gIGlmIChkZXNjLmdldCkge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tHZXR0ZXIvU2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChkZXNjLnNldCkge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tTZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cbiAgaWYgKCFoYXNPd25Qcm9wZXJ0eSh2aXNpYmxlS2V5cywga2V5KSkge1xuICAgIG5hbWUgPSAnWycgKyBrZXkgKyAnXSc7XG4gIH1cbiAgaWYgKCFzdHIpIHtcbiAgICBpZiAoY3R4LnNlZW4uaW5kZXhPZihkZXNjLnZhbHVlKSA8IDApIHtcbiAgICAgIGlmIChpc051bGwocmVjdXJzZVRpbWVzKSkge1xuICAgICAgICBzdHIgPSBmb3JtYXRWYWx1ZShjdHgsIGRlc2MudmFsdWUsIG51bGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBkZXNjLnZhbHVlLCByZWN1cnNlVGltZXMgLSAxKTtcbiAgICAgIH1cbiAgICAgIGlmIChzdHIuaW5kZXhPZignXFxuJykgPiAtMSkge1xuICAgICAgICBpZiAoYXJyYXkpIHtcbiAgICAgICAgICBzdHIgPSBzdHIuc3BsaXQoJ1xcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gJyAgJyArIGxpbmU7XG4gICAgICAgICAgfSkuam9pbignXFxuJykuc3Vic3RyKDIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN0ciA9ICdcXG4nICsgc3RyLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuICcgICAnICsgbGluZTtcbiAgICAgICAgICB9KS5qb2luKCdcXG4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0NpcmN1bGFyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG4gIGlmIChpc1VuZGVmaW5lZChuYW1lKSkge1xuICAgIGlmIChhcnJheSAmJiBrZXkubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgICBuYW1lID0gSlNPTi5zdHJpbmdpZnkoJycgKyBrZXkpO1xuICAgIGlmIChuYW1lLm1hdGNoKC9eXCIoW2EtekEtWl9dW2EtekEtWl8wLTldKilcIiQvKSkge1xuICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyKDEsIG5hbWUubGVuZ3RoIC0gMik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ25hbWUnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvJy9nLCBcIlxcXFwnXCIpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJylcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyheXCJ8XCIkKS9nLCBcIidcIik7XG4gICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ3N0cmluZycpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuYW1lICsgJzogJyArIHN0cjtcbn1cblxuXG5mdW5jdGlvbiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQsIGJhc2UsIGJyYWNlcykge1xuICB2YXIgbnVtTGluZXNFc3QgPSAwO1xuICB2YXIgbGVuZ3RoID0gb3V0cHV0LnJlZHVjZShmdW5jdGlvbihwcmV2LCBjdXIpIHtcbiAgICBudW1MaW5lc0VzdCsrO1xuICAgIGlmIChjdXIuaW5kZXhPZignXFxuJykgPj0gMCkgbnVtTGluZXNFc3QrKztcbiAgICByZXR1cm4gcHJldiArIGN1ci5yZXBsYWNlKC9cXHUwMDFiXFxbXFxkXFxkP20vZywgJycpLmxlbmd0aCArIDE7XG4gIH0sIDApO1xuXG4gIGlmIChsZW5ndGggPiA2MCkge1xuICAgIHJldHVybiBicmFjZXNbMF0gK1xuICAgICAgICAgICAoYmFzZSA9PT0gJycgPyAnJyA6IGJhc2UgKyAnXFxuICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgb3V0cHV0LmpvaW4oJyxcXG4gICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgYnJhY2VzWzFdO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyAnICcgKyBvdXRwdXQuam9pbignLCAnKSArICcgJyArIGJyYWNlc1sxXTtcbn1cblxuXG4vLyBOT1RFOiBUaGVzZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBgaW5zdGFuY2VvZmBcbi8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3aXRoIGBPYmplY3QuY3JlYXRlKClgLlxuZXhwb3J0cy50eXBlcyA9IHJlcXVpcmUoJy4vc3VwcG9ydC90eXBlcycpO1xuXG5mdW5jdGlvbiBpc0FycmF5KGFyKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGFyKTtcbn1cbmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJztcbn1cbmV4cG9ydHMuaXNCb29sZWFuID0gaXNCb29sZWFuO1xuXG5mdW5jdGlvbiBpc051bGwoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbCA9IGlzTnVsbDtcblxuZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydHMuaXNOdW1iZXIgPSBpc051bWJlcjtcblxuZnVuY3Rpb24gaXNTdHJpbmcoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3RyaW5nJztcbn1cbmV4cG9ydHMuaXNTdHJpbmcgPSBpc1N0cmluZztcblxuZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cbmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDtcblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbmV4cG9ydHMuaXNVbmRlZmluZWQgPSBpc1VuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNSZWdFeHAocmUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHJlKSAmJiBvYmplY3RUb1N0cmluZyhyZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuZXhwb3J0cy5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuZXhwb3J0cy50eXBlcy5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuXG5mdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNPYmplY3QgPSBpc09iamVjdDtcblxuZnVuY3Rpb24gaXNEYXRlKGQpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGQpICYmIG9iamVjdFRvU3RyaW5nKGQpID09PSAnW29iamVjdCBEYXRlXSc7XG59XG5leHBvcnRzLmlzRGF0ZSA9IGlzRGF0ZTtcbmV4cG9ydHMudHlwZXMuaXNEYXRlID0gaXNEYXRlO1xuXG5mdW5jdGlvbiBpc0Vycm9yKGUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGUpICYmXG4gICAgICAob2JqZWN0VG9TdHJpbmcoZSkgPT09ICdbb2JqZWN0IEVycm9yXScgfHwgZSBpbnN0YW5jZW9mIEVycm9yKTtcbn1cbmV4cG9ydHMuaXNFcnJvciA9IGlzRXJyb3I7XG5leHBvcnRzLnR5cGVzLmlzTmF0aXZlRXJyb3IgPSBpc0Vycm9yO1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuZXhwb3J0cy5pc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlO1xuXG5leHBvcnRzLmlzQnVmZmVyID0gcmVxdWlyZSgnLi9zdXBwb3J0L2lzQnVmZmVyJyk7XG5cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTtcbn1cblxuXG5mdW5jdGlvbiBwYWQobikge1xuICByZXR1cm4gbiA8IDEwID8gJzAnICsgbi50b1N0cmluZygxMCkgOiBuLnRvU3RyaW5nKDEwKTtcbn1cblxuXG52YXIgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsXG4gICAgICAgICAgICAgICdPY3QnLCAnTm92JywgJ0RlYyddO1xuXG4vLyAyNiBGZWIgMTY6MTk6MzRcbmZ1bmN0aW9uIHRpbWVzdGFtcCgpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSgpO1xuICB2YXIgdGltZSA9IFtwYWQoZC5nZXRIb3VycygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0TWludXRlcygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0U2Vjb25kcygpKV0uam9pbignOicpO1xuICByZXR1cm4gW2QuZ2V0RGF0ZSgpLCBtb250aHNbZC5nZXRNb250aCgpXSwgdGltZV0uam9pbignICcpO1xufVxuXG5cbi8vIGxvZyBpcyBqdXN0IGEgdGhpbiB3cmFwcGVyIHRvIGNvbnNvbGUubG9nIHRoYXQgcHJlcGVuZHMgYSB0aW1lc3RhbXBcbmV4cG9ydHMubG9nID0gZnVuY3Rpb24oKSB7XG4gIGNvbnNvbGUubG9nKCclcyAtICVzJywgdGltZXN0YW1wKCksIGV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsIGFyZ3VtZW50cykpO1xufTtcblxuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlci5cbiAqXG4gKiBUaGUgRnVuY3Rpb24ucHJvdG90eXBlLmluaGVyaXRzIGZyb20gbGFuZy5qcyByZXdyaXR0ZW4gYXMgYSBzdGFuZGFsb25lXG4gKiBmdW5jdGlvbiAobm90IG9uIEZ1bmN0aW9uLnByb3RvdHlwZSkuIE5PVEU6IElmIHRoaXMgZmlsZSBpcyB0byBiZSBsb2FkZWRcbiAqIGR1cmluZyBib290c3RyYXBwaW5nIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcmV3cml0dGVuIHVzaW5nIHNvbWUgbmF0aXZlXG4gKiBmdW5jdGlvbnMgYXMgcHJvdG90eXBlIHNldHVwIHVzaW5nIG5vcm1hbCBKYXZhU2NyaXB0IGRvZXMgbm90IHdvcmsgYXNcbiAqIGV4cGVjdGVkIGR1cmluZyBib290c3RyYXBwaW5nIChzZWUgbWlycm9yLmpzIGluIHIxMTQ5MDMpLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gd2hpY2ggbmVlZHMgdG8gaW5oZXJpdCB0aGVcbiAqICAgICBwcm90b3R5cGUuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gdG8gaW5oZXJpdCBwcm90b3R5cGUgZnJvbS5cbiAqL1xuZXhwb3J0cy5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmV4cG9ydHMuX2V4dGVuZCA9IGZ1bmN0aW9uKG9yaWdpbiwgYWRkKSB7XG4gIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIGFkZCBpc24ndCBhbiBvYmplY3RcbiAgaWYgKCFhZGQgfHwgIWlzT2JqZWN0KGFkZCkpIHJldHVybiBvcmlnaW47XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhZGQpO1xuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgb3JpZ2luW2tleXNbaV1dID0gYWRkW2tleXNbaV1dO1xuICB9XG4gIHJldHVybiBvcmlnaW47XG59O1xuXG5mdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxuXG52YXIga0N1c3RvbVByb21pc2lmaWVkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgPyBTeW1ib2woJ3V0aWwucHJvbWlzaWZ5LmN1c3RvbScpIDogdW5kZWZpbmVkO1xuXG5leHBvcnRzLnByb21pc2lmeSA9IGZ1bmN0aW9uIHByb21pc2lmeShvcmlnaW5hbCkge1xuICBpZiAodHlwZW9mIG9yaWdpbmFsICE9PSAnZnVuY3Rpb24nKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBcIm9yaWdpbmFsXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIEZ1bmN0aW9uJyk7XG5cbiAgaWYgKGtDdXN0b21Qcm9taXNpZmllZFN5bWJvbCAmJiBvcmlnaW5hbFtrQ3VzdG9tUHJvbWlzaWZpZWRTeW1ib2xdKSB7XG4gICAgdmFyIGZuID0gb3JpZ2luYWxba0N1c3RvbVByb21pc2lmaWVkU3ltYm9sXTtcbiAgICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJ1dGlsLnByb21pc2lmeS5jdXN0b21cIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGZuLCBrQ3VzdG9tUHJvbWlzaWZpZWRTeW1ib2wsIHtcbiAgICAgIHZhbHVlOiBmbiwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgZnVuY3Rpb24gZm4oKSB7XG4gICAgdmFyIHByb21pc2VSZXNvbHZlLCBwcm9taXNlUmVqZWN0O1xuICAgIHZhciBwcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgcHJvbWlzZVJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgcHJvbWlzZVJlamVjdCA9IHJlamVjdDtcbiAgICB9KTtcblxuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cbiAgICBhcmdzLnB1c2goZnVuY3Rpb24gKGVyciwgdmFsdWUpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcHJvbWlzZVJlamVjdChlcnIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvbWlzZVJlc29sdmUodmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdHJ5IHtcbiAgICAgIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcHJvbWlzZVJlamVjdChlcnIpO1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGZuLCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yob3JpZ2luYWwpKTtcblxuICBpZiAoa0N1c3RvbVByb21pc2lmaWVkU3ltYm9sKSBPYmplY3QuZGVmaW5lUHJvcGVydHkoZm4sIGtDdXN0b21Qcm9taXNpZmllZFN5bWJvbCwge1xuICAgIHZhbHVlOiBmbiwgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiBmYWxzZSwgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoXG4gICAgZm4sXG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhvcmlnaW5hbClcbiAgKTtcbn1cblxuZXhwb3J0cy5wcm9taXNpZnkuY3VzdG9tID0ga0N1c3RvbVByb21pc2lmaWVkU3ltYm9sXG5cbmZ1bmN0aW9uIGNhbGxiYWNraWZ5T25SZWplY3RlZChyZWFzb24sIGNiKSB7XG4gIC8vIGAhcmVhc29uYCBndWFyZCBpbnNwaXJlZCBieSBibHVlYmlyZCAoUmVmOiBodHRwczovL2dvby5nbC90NUlTNk0pLlxuICAvLyBCZWNhdXNlIGBudWxsYCBpcyBhIHNwZWNpYWwgZXJyb3IgdmFsdWUgaW4gY2FsbGJhY2tzIHdoaWNoIG1lYW5zIFwibm8gZXJyb3JcbiAgLy8gb2NjdXJyZWRcIiwgd2UgZXJyb3Itd3JhcCBzbyB0aGUgY2FsbGJhY2sgY29uc3VtZXIgY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW5cbiAgLy8gXCJ0aGUgcHJvbWlzZSByZWplY3RlZCB3aXRoIG51bGxcIiBvciBcInRoZSBwcm9taXNlIGZ1bGZpbGxlZCB3aXRoIHVuZGVmaW5lZFwiLlxuICBpZiAoIXJlYXNvbikge1xuICAgIHZhciBuZXdSZWFzb24gPSBuZXcgRXJyb3IoJ1Byb21pc2Ugd2FzIHJlamVjdGVkIHdpdGggYSBmYWxzeSB2YWx1ZScpO1xuICAgIG5ld1JlYXNvbi5yZWFzb24gPSByZWFzb247XG4gICAgcmVhc29uID0gbmV3UmVhc29uO1xuICB9XG4gIHJldHVybiBjYihyZWFzb24pO1xufVxuXG5mdW5jdGlvbiBjYWxsYmFja2lmeShvcmlnaW5hbCkge1xuICBpZiAodHlwZW9mIG9yaWdpbmFsICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIFwib3JpZ2luYWxcIiBhcmd1bWVudCBtdXN0IGJlIG9mIHR5cGUgRnVuY3Rpb24nKTtcbiAgfVxuXG4gIC8vIFdlIERPIE5PVCByZXR1cm4gdGhlIHByb21pc2UgYXMgaXQgZ2l2ZXMgdGhlIHVzZXIgYSBmYWxzZSBzZW5zZSB0aGF0XG4gIC8vIHRoZSBwcm9taXNlIGlzIGFjdHVhbGx5IHNvbWVob3cgcmVsYXRlZCB0byB0aGUgY2FsbGJhY2sncyBleGVjdXRpb25cbiAgLy8gYW5kIHRoYXQgdGhlIGNhbGxiYWNrIHRocm93aW5nIHdpbGwgcmVqZWN0IHRoZSBwcm9taXNlLlxuICBmdW5jdGlvbiBjYWxsYmFja2lmaWVkKCkge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbaV0pO1xuICAgIH1cblxuICAgIHZhciBtYXliZUNiID0gYXJncy5wb3AoKTtcbiAgICBpZiAodHlwZW9mIG1heWJlQ2IgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1RoZSBsYXN0IGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbicpO1xuICAgIH1cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGNiID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gbWF5YmVDYi5hcHBseShzZWxmLCBhcmd1bWVudHMpO1xuICAgIH07XG4gICAgLy8gSW4gdHJ1ZSBub2RlIHN0eWxlIHdlIHByb2Nlc3MgdGhlIGNhbGxiYWNrIG9uIGBuZXh0VGlja2Agd2l0aCBhbGwgdGhlXG4gICAgLy8gaW1wbGljYXRpb25zIChzdGFjaywgYHVuY2F1Z2h0RXhjZXB0aW9uYCwgYGFzeW5jX2hvb2tzYClcbiAgICBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmdzKVxuICAgICAgLnRoZW4oZnVuY3Rpb24ocmV0KSB7IHByb2Nlc3MubmV4dFRpY2soY2IuYmluZChudWxsLCBudWxsLCByZXQpKSB9LFxuICAgICAgICAgICAgZnVuY3Rpb24ocmVqKSB7IHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2tpZnlPblJlamVjdGVkLmJpbmQobnVsbCwgcmVqLCBjYikpIH0pO1xuICB9XG5cbiAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGNhbGxiYWNraWZpZWQsIE9iamVjdC5nZXRQcm90b3R5cGVPZihvcmlnaW5hbCkpO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjYWxsYmFja2lmaWVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG9yaWdpbmFsKSk7XG4gIHJldHVybiBjYWxsYmFja2lmaWVkO1xufVxuZXhwb3J0cy5jYWxsYmFja2lmeSA9IGNhbGxiYWNraWZ5O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZm9yRWFjaCA9IHJlcXVpcmUoJ2ZvcmVhY2gnKTtcbnZhciBhdmFpbGFibGVUeXBlZEFycmF5cyA9IHJlcXVpcmUoJ2F2YWlsYWJsZS10eXBlZC1hcnJheXMnKTtcbnZhciBjYWxsQm91bmQgPSByZXF1aXJlKCdjYWxsLWJpbmQvY2FsbEJvdW5kJyk7XG5cbnZhciAkdG9TdHJpbmcgPSBjYWxsQm91bmQoJ09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcnKTtcbnZhciBoYXNTeW1ib2xzID0gcmVxdWlyZSgnaGFzLXN5bWJvbHMnKSgpO1xudmFyIGhhc1RvU3RyaW5nVGFnID0gaGFzU3ltYm9scyAmJiB0eXBlb2YgU3ltYm9sLnRvU3RyaW5nVGFnID09PSAnc3ltYm9sJztcblxudmFyIHR5cGVkQXJyYXlzID0gYXZhaWxhYmxlVHlwZWRBcnJheXMoKTtcblxudmFyICRzbGljZSA9IGNhbGxCb3VuZCgnU3RyaW5nLnByb3RvdHlwZS5zbGljZScpO1xudmFyIHRvU3RyVGFncyA9IHt9O1xudmFyIGdPUEQgPSByZXF1aXJlKCdlcy1hYnN0cmFjdC9oZWxwZXJzL2dldE93blByb3BlcnR5RGVzY3JpcHRvcicpO1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlwZU9mOyAvLyByZXF1aXJlKCdnZXRwcm90b3R5cGVvZicpO1xuaWYgKGhhc1RvU3RyaW5nVGFnICYmIGdPUEQgJiYgZ2V0UHJvdG90eXBlT2YpIHtcblx0Zm9yRWFjaCh0eXBlZEFycmF5cywgZnVuY3Rpb24gKHR5cGVkQXJyYXkpIHtcblx0XHRpZiAodHlwZW9mIGdsb2JhbFt0eXBlZEFycmF5XSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0dmFyIGFyciA9IG5ldyBnbG9iYWxbdHlwZWRBcnJheV0oKTtcblx0XHRcdGlmICghKFN5bWJvbC50b1N0cmluZ1RhZyBpbiBhcnIpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFdmFsRXJyb3IoJ3RoaXMgZW5naW5lIGhhcyBzdXBwb3J0IGZvciBTeW1ib2wudG9TdHJpbmdUYWcsIGJ1dCAnICsgdHlwZWRBcnJheSArICcgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVydHkhIFBsZWFzZSByZXBvcnQgdGhpcy4nKTtcblx0XHRcdH1cblx0XHRcdHZhciBwcm90byA9IGdldFByb3RvdHlwZU9mKGFycik7XG5cdFx0XHR2YXIgZGVzY3JpcHRvciA9IGdPUEQocHJvdG8sIFN5bWJvbC50b1N0cmluZ1RhZyk7XG5cdFx0XHRpZiAoIWRlc2NyaXB0b3IpIHtcblx0XHRcdFx0dmFyIHN1cGVyUHJvdG8gPSBnZXRQcm90b3R5cGVPZihwcm90byk7XG5cdFx0XHRcdGRlc2NyaXB0b3IgPSBnT1BEKHN1cGVyUHJvdG8sIFN5bWJvbC50b1N0cmluZ1RhZyk7XG5cdFx0XHR9XG5cdFx0XHR0b1N0clRhZ3NbdHlwZWRBcnJheV0gPSBkZXNjcmlwdG9yLmdldDtcblx0XHR9XG5cdH0pO1xufVxuXG52YXIgdHJ5VHlwZWRBcnJheXMgPSBmdW5jdGlvbiB0cnlBbGxUeXBlZEFycmF5cyh2YWx1ZSkge1xuXHR2YXIgZm91bmROYW1lID0gZmFsc2U7XG5cdGZvckVhY2godG9TdHJUYWdzLCBmdW5jdGlvbiAoZ2V0dGVyLCB0eXBlZEFycmF5KSB7XG5cdFx0aWYgKCFmb3VuZE5hbWUpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHZhciBuYW1lID0gZ2V0dGVyLmNhbGwodmFsdWUpO1xuXHRcdFx0XHRpZiAobmFtZSA9PT0gdHlwZWRBcnJheSkge1xuXHRcdFx0XHRcdGZvdW5kTmFtZSA9IG5hbWU7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGUpIHt9XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIGZvdW5kTmFtZTtcbn07XG5cbnZhciBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCdpcy10eXBlZC1hcnJheScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHdoaWNoVHlwZWRBcnJheSh2YWx1ZSkge1xuXHRpZiAoIWlzVHlwZWRBcnJheSh2YWx1ZSkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICghaGFzVG9TdHJpbmdUYWcpIHsgcmV0dXJuICRzbGljZSgkdG9TdHJpbmcodmFsdWUpLCA4LCAtMSk7IH1cblx0cmV0dXJuIHRyeVR5cGVkQXJyYXlzKHZhbHVlKTtcbn07XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIl9fd2VicGFja19yZXF1aXJlX18ubm1kID0gKG1vZHVsZSkgPT4ge1xuXHRtb2R1bGUucGF0aHMgPSBbXTtcblx0aWYgKCFtb2R1bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xuXHRyZXR1cm4gbW9kdWxlO1xufTsiLCIvLyBzdGFydHVwXG4vLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8vIFRoaXMgZW50cnkgbW9kdWxlIGRvZXNuJ3QgdGVsbCBhYm91dCBpdCdzIHRvcC1sZXZlbCBkZWNsYXJhdGlvbnMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg2NzcpO1xuIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 41b7a2c..ff33bae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "@types/webpack-env": "^1.16.1", "axios": "^0.24.0", "buffer": "^6.0.3", + "copyfiles": "^2.4.1", "install": "^0.13.0", "ts-loader": "^9.2.3", "typescript": "^4.3.5", @@ -1527,6 +1528,151 @@ "node": ">=0.10.0" } }, + "node_modules/copyfiles": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", + "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", + "dev": true, + "dependencies": { + "glob": "^7.0.5", + "minimatch": "^3.0.3", + "mkdirp": "^1.0.4", + "noms": "0.0.0", + "through2": "^2.0.1", + "untildify": "^4.0.0", + "yargs": "^16.1.0" + }, + "bin": { + "copyfiles": "copyfiles", + "copyup": "copyfiles" + } + }, + "node_modules/copyfiles/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/copyfiles/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/copyfiles/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/copyfiles/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/copyfiles/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/copyfiles/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/copyfiles/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/copyfiles/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/copyfiles/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/copyfiles/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/copyfiles/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -4100,6 +4246,40 @@ "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", "dev": true }, + "node_modules/noms": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", + "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "~1.0.31" + } + }, + "node_modules/noms/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "node_modules/noms/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/noms/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -5850,6 +6030,46 @@ "node": ">= 8" } }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -6053,6 +6273,15 @@ "node": ">=0.10.0" } }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", @@ -6728,6 +6957,15 @@ "async-limiter": "~1.0.0" } }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, "node_modules/y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", @@ -8083,6 +8321,116 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, + "copyfiles": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", + "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", + "dev": true, + "requires": { + "glob": "^7.0.5", + "minimatch": "^3.0.3", + "mkdirp": "^1.0.4", + "noms": "0.0.0", + "through2": "^2.0.1", + "untildify": "^4.0.0", + "yargs": "^16.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -10135,6 +10483,42 @@ "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", "dev": true }, + "noms": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", + "integrity": "sha1-2o69nzr51nYJGbJ9nNyAkqczKFk=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "~1.0.31" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -11547,6 +11931,48 @@ "terser": "^5.7.0" } }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -11703,6 +12129,12 @@ } } }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, "upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", @@ -12213,6 +12645,12 @@ "async-limiter": "~1.0.0" } }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, "y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", diff --git a/package.json b/package.json index b749660..8755ef4 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,8 @@ "fetch": "node tool/FetchCerts.js", "watch": "npx webpack serve --mode=development", "serve": "npx webpack serve --mode=development", - "build": "npx webpack --mode=production && cp dist/eudgc.js docs", - "prepublishOnly": "npx webpack --mode=production && cp dist/eudgc.js docs", + "build": "npx webpack --mode=production && copyfiles dist/eudgc.js docs/ -f", + "prepublishOnly": "npx webpack --mode=production && copyfiles dist/eudgc.js docs/ -f", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [ @@ -39,6 +39,7 @@ "@types/webpack-env": "^1.16.1", "axios": "^0.24.0", "buffer": "^6.0.3", + "copyfiles": "^2.4.1", "install": "^0.13.0", "ts-loader": "^9.2.3", "typescript": "^4.3.5",